logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git
commit: f4c0a01f097ec9d6d61dff3abfcda616b23e01e6
parent 197647a04e66c1af3ae691a4507612fdbee9c48c
Author: Lain Soykaf <lain@lain.com>
Date:   Mon, 27 May 2024 20:03:14 +0400

Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into image-description-summary

Diffstat:

A.dialyzer_ignore.exs6++++++
M.gitignore5+++--
M.gitlab-ci.yml449++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
A.gitlab/merge_request_templates/Default.md10++++++++++
M.gitlab/merge_request_templates/Release.md2+-
A.rgignore1+
MCHANGELOG.md105+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
MDockerfile16+++++++++-------
MREADME.md3++-
Abenchmarks/mix/tasks/pleroma/benchmark.ex125+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Achangelog.d/2.6.0-mergeback.skip0
Achangelog.d/2.6.1-mergeback.skip0
Achangelog.d/3900.change1+
Achangelog.d/3987.fix1+
Achangelog.d/account-rendering-auth-check.fix1+
Achangelog.d/add-ipfs-upload.add1+
Achangelog.d/add-nsfw-mrf.add1+
Achangelog.d/add-outbox.fix1+
Achangelog.d/anonymous-exception-else.fix1+
Achangelog.d/api-docs-2.skip0
Achangelog.d/api-docs.skip0
Achangelog.d/atom-leak.skip0
Achangelog.d/authorize-interaction.add2++
Achangelog.d/backups-follows.add2++
Achangelog.d/bad_inbox_request.change1+
Achangelog.d/bandit.change1+
Achangelog.d/bare_uri_test.skip0
Achangelog.d/benchee.skip0
Achangelog.d/blurhash.change1+
Achangelog.d/bookmark-folders.add2++
Achangelog.d/bookmark-folders.skip0
Achangelog.d/bugfix-ccworks.fix2++
Achangelog.d/build-release-with-local-libvips.skip0
Achangelog.d/bump-elixir.change1+
Achangelog.d/card-endpoint.remove1+
Achangelog.d/card-image-description.add2++
Achangelog.d/chat-attachment-empty-array.fix1+
Achangelog.d/config-stat-symlink.fix1+
Achangelog.d/content-length.fix1+
Achangelog.d/deprecations.skip1+
Achangelog.d/deprecations2.skip0
Achangelog.d/deps-bump-2024-01-25.skip0
Achangelog.d/description-meilisearch-type.skip0
Achangelog.d/dialyzer.skip0
Achangelog.d/dialyzer2.skip0
Achangelog.d/dialyzer3.skip0
Achangelog.d/dialyzer4.skip0
Achangelog.d/digest_emails.fix1+
Achangelog.d/doc-fix.skip0
Achangelog.d/docs-max-elixir-erlang.change1+
Achangelog.d/emoji-download-paginate.fix2++
Achangelog.d/emoji-use-v1.fix2++
Achangelog.d/exile-bsds.skip0
Achangelog.d/exile-freebsd.skip0
Achangelog.d/exile-macos.skip0
Achangelog.d/exile.skip0
Achangelog.d/familiar-followers.add2++
Achangelog.d/favicon.add1+
Achangelog.d/federation_status-access.change1+
Achangelog.d/federator-modules.remove1+
Achangelog.d/federator.skip0
Achangelog.d/fep-2c59.add2++
Achangelog.d/ffmpeg-limiter.add1+
Achangelog.d/finch_redirects.fix1+
Achangelog.d/fix-bookmark-folder-tests.skip0
Achangelog.d/fix-dockerfile.skip0
Achangelog.d/fix-duplicate-inbox-deliveries.fix0
Achangelog.d/fix-otp-comparison.skip0
Achangelog.d/fix-tests.skip0
Achangelog.d/fix-webfinger-spoofing.security1+
Achangelog.d/force-mention-mrf.add2++
Achangelog.d/framegrabs.fix1+
Achangelog.d/frontend-management.add1+
Achangelog.d/generate-unset-user-keys-migration.skip0
Achangelog.d/group-actor.add1+
Achangelog.d/gun-logs.skip0
Achangelog.d/gun_pool.fix1+
Achangelog.d/gun_pool2.fix1+
Achangelog.d/gun_pool3.skip0
Achangelog.d/handle_object_fetch_failures.change1+
Achangelog.d/healthcheck-disabled-error.fix1+
Achangelog.d/instance-contact-account.add2++
Achangelog.d/instance-defdelegates.skip0
Achangelog.d/instance-rules.add2++
Achangelog.d/instance-v2.add2++
Achangelog.d/instance-v2.skip0
Achangelog.d/issue-3241.fix1+
Achangelog.d/last_status_at.change2++
Achangelog.d/link-verification.add2++
Achangelog.d/loading-order-test-fix.skip0
Achangelog.d/local-webfinger.fix2++
Achangelog.d/mark-read.fix1+
Achangelog.d/mastodon_api_v2.add1+
Achangelog.d/mastodon_directory.fix1+
Achangelog.d/meilisearch.add1+
Achangelog.d/memleak.fix1+
Achangelog.d/mergeback-2.6.2.skip0
Achangelog.d/migration-fix.skip1+
Achangelog.d/missing-mrfs.add1+
Achangelog.d/mrf-regex-error.fix1+
Achangelog.d/mrf-steal-emoji-extname.fix1+
Achangelog.d/mrf_hashtags.fix1+
Achangelog.d/nil-content-map.fix1+
Achangelog.d/no-async-with-clear-config.skip0
Achangelog.d/notifications-index.fix1+
Achangelog.d/notifications.fix2++
Achangelog.d/oauth-nickname.skip2++
Achangelog.d/opengraph-rich-media-proxy.add1+
Achangelog.d/optimistic-inbox.change1+
Achangelog.d/otp26.add1+
Achangelog.d/postgres-jit.change1+
Achangelog.d/prioritize-direct-recipients.add1+
Achangelog.d/promex.change1+
Achangelog.d/public-polls.add2++
Achangelog.d/publisher_discard.change1+
Achangelog.d/publisher_log.change1+
Achangelog.d/qtfaststart.fix1+
Achangelog.d/quotes-count.skip0
Achangelog.d/reachability.change1+
Achangelog.d/realpath-over-readlink.fix1+
Achangelog.d/receiverworker-error-handling.fix2++
Achangelog.d/remote-fetcher-error.skip0
Achangelog.d/reply-to-deleted.change1+
Achangelog.d/rich_media.fix1+
Achangelog.d/rich_media_refactor.change1+
Achangelog.d/rich_media_tests.skip0
Achangelog.d/richmediattl.fix1+
Achangelog.d/scrobble-url.add1+
Achangelog.d/scrubbers-html4-GtS.add1+
Achangelog.d/search-healthcheck.add1+
Achangelog.d/show-reposter-replies.add2++
Achangelog.d/status-notification-type.add2++
Achangelog.d/system-cflags.fix1+
Achangelog.d/tesla.deps1+
Achangelog.d/test-improvements.skip0
Achangelog.d/testsecrets.skip0
Achangelog.d/transient-validators-defaults.change1+
Achangelog.d/typo.skip0
Achangelog.d/vips.change1+
Achangelog.d/web_push.fix1+
Achangelog.d/web_push_filtered.fix1+
Achangelog.d/webfinger-validation.fix2++
Achangelog.d/websocket-refactor.change1+
Dci/Dockerfile8--------
Dci/build_and_push.sh1-
Aci/elixir-1.12/Dockerfile8++++++++
Aci/elixir-1.12/build_and_push.sh1+
Aci/elixir-1.13/Dockerfile8++++++++
Aci/elixir-1.13/build_and_push.sh1+
Aci/elixir-1.15-otp25/Dockerfile8++++++++
Aci/elixir-1.15-otp25/build_and_push.sh1+
Aci/postgres-with-rum-13/Dockerfile3+++
Aci/postgres-with-rum-13/build_and_push.sh1+
Mconfig/benchmark.exs6+++++-
Mconfig/config.exs125+++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
Mconfig/description.exs156++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
Mconfig/dev.exs3+--
Mconfig/test.exs47++++++++++++++++++++++++++++++++++++++++++++---
Mdocs/administration/CLI_tasks/config.md4++--
Mdocs/administration/backup.md2+-
Adocs/administration/frontends-management.md71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Adocs/assets/admin_dash_location.png0
Adocs/assets/frontends_tab.png0
Adocs/assets/old_adminfe_link.png0
Adocs/assets/primary_frontend_section.png0
Adocs/assets/way_to_install_frontends.png0
Mdocs/clients.md15++++++++-------
Mdocs/configuration/cheatsheet.md59++++++++++++++++++++++++++++++++++++++++-------------------
Mdocs/configuration/custom_emoji.md2+-
Mdocs/configuration/hardening.md14++++++++++++++
Mdocs/configuration/i2p.md2+-
Mdocs/configuration/onion_federation.md2+-
Mdocs/configuration/optimizing_beam.md2+-
Mdocs/configuration/postgresql.md2+-
Adocs/configuration/search.md123+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdocs/development/API/admin_api.md62+++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Mdocs/development/API/differences_in_mastoapi_responses.md137+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Mdocs/development/API/pleroma_api.md80+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Mdocs/development/ap_extensions.md6+++---
Mdocs/development/setting_up_pleroma_dev.md4++--
Mdocs/installation/alpine_linux_en.md3+++
Mdocs/installation/arch_linux_en.md5+++++
Mdocs/installation/debian_based_en.md7++++++-
Mdocs/installation/debian_based_jp.md11+++++++----
Mdocs/installation/freebsd_en.md7++++++-
Mdocs/installation/generic_dependencies.include8++++----
Mdocs/installation/gentoo_en.md14++++++++++----
Adocs/installation/gentoo_otp_en.md207+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdocs/installation/migrating_from_source_otp_en.md8++++----
Mdocs/installation/netbsd_en.md4++++
Mdocs/installation/openbsd_en.md8++++++--
Mdocs/installation/openbsd_fi.md2++
Mdocs/installation/optional/media_graphics_packages.md20++++++++++++--------
Mdocs/installation/otp_en.md33+++++++++++++++++++--------------
Mdocs/installation/otp_vs_from_source.include9+++++++--
Mdocs/installation/otp_vs_from_source_source.include2+-
Minstallation/init.d/pleroma1+
Ainstallation/nsfw-api.service15+++++++++++++++
Ainstallation/pleroma-mediaproxy.nginx97+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Minstallation/pleroma-mongooseim.cfg6+++---
Dlib/mix/tasks/pleroma/benchmark.ex113-------------------------------------------------------------------------------
Mlib/mix/tasks/pleroma/database.ex2+-
Mlib/mix/tasks/pleroma/digest.ex2+-
Mlib/mix/tasks/pleroma/ecto/rollback.ex2+-
Mlib/mix/tasks/pleroma/emoji.ex2+-
Mlib/mix/tasks/pleroma/instance.ex17+++++++++++------
Alib/mix/tasks/pleroma/search/meilisearch.ex145+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dlib/phoenix/transports/web_socket/raw.ex94-------------------------------------------------------------------------------
Mlib/pleroma/activity.ex2+-
Mlib/pleroma/activity/html.ex2+-
Mlib/pleroma/activity/queries.ex2+-
Dlib/pleroma/activity/search.ex162-------------------------------------------------------------------------------
Mlib/pleroma/announcement.ex16+++++++++-------
Mlib/pleroma/application.ex162++++++++++++++++++++++++++++++++-----------------------------------------------
Mlib/pleroma/application_requirements.ex35++++++++++++++++++++++++++++-------
Dlib/pleroma/bbs/authenticator.ex20--------------------
Dlib/pleroma/bbs/handler.ex246-------------------------------------------------------------------------------
Mlib/pleroma/bookmark.ex41+++++++++++++++++++++++++++++++----------
Alib/pleroma/bookmark_folder.ex115+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/caching.ex3+++
Mlib/pleroma/captcha/kocaptcha.ex2+-
Mlib/pleroma/chat.ex12++++++------
Mlib/pleroma/config/deprecation_warnings.ex36++++++++++++++++++------------------
Mlib/pleroma/config/getting.ex7+++++++
Mlib/pleroma/config/oban.ex2+-
Mlib/pleroma/config/release_runtime_provider.ex14++++++++++++++
Mlib/pleroma/config/transfer_task.ex9++++-----
Mlib/pleroma/config_db.ex6+++---
Mlib/pleroma/constants.ex40+++++++++++++++++++++++++++++++++++++++-
Mlib/pleroma/conversation.ex2+-
Mlib/pleroma/data_migration.ex2++
Mlib/pleroma/docs/generator.ex4+++-
Mlib/pleroma/docs/json.ex2+-
Mlib/pleroma/ecto_enums.ex8++++++++
Alib/pleroma/ecto_type/activity_pub/object_validators/bare_uri.ex25+++++++++++++++++++++++++
Mlib/pleroma/emoji.ex63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
Mlib/pleroma/emoji/loader.ex6++----
Mlib/pleroma/emoji/pack.ex15+++++++++++----
Mlib/pleroma/filter.ex3---
Mlib/pleroma/following_relationship.ex10+++++-----
Mlib/pleroma/formatter.ex2+-
Mlib/pleroma/gopher/server.ex2+-
Mlib/pleroma/gun/conn.ex6+++---
Mlib/pleroma/gun/connection_pool/reclaimer.ex2+-
Mlib/pleroma/gun/connection_pool/worker_supervisor.ex6++++--
Mlib/pleroma/helpers/media_helper.ex173+++++++++++++++++++++++--------------------------------------------------------
Mlib/pleroma/helpers/qt_fast_start.ex37++++++++++++++++++++++++-------------
Mlib/pleroma/html.ex21++++-----------------
Mlib/pleroma/http.ex4++++
Mlib/pleroma/http/adapter_helper.ex12++++++------
Mlib/pleroma/http/request_builder.ex4++--
Mlib/pleroma/http/web_push.ex6+++++-
Mlib/pleroma/instances.ex11+++++------
Mlib/pleroma/instances/instance.ex114++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
Mlib/pleroma/maintenance.ex2+-
Mlib/pleroma/maps.ex15++++++++++++++-
Mlib/pleroma/mfa.ex2+-
Mlib/pleroma/mfa/totp.ex3++-
Mlib/pleroma/migrators/hashtags_table_migrator.ex2+-
Mlib/pleroma/migrators/support/base_migrator.ex11++++++-----
Mlib/pleroma/moderation_log.ex5+++--
Mlib/pleroma/notification.ex102++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
Mlib/pleroma/object.ex85++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Mlib/pleroma/object/fetcher.ex149++++++++++++++++++++++++-------------------------------------------------------
Mlib/pleroma/object/updater.ex56+++++++++++++++++++++++++++++++++++++++++++++++++++++---
Mlib/pleroma/pagination.ex9+++++----
Mlib/pleroma/password/pbkdf2.ex2+-
Alib/pleroma/prom_ex.ex49+++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/release_tasks.ex6------
Mlib/pleroma/repo.ex2--
Mlib/pleroma/report_note.ex8++++----
Mlib/pleroma/reverse_proxy.ex20+++++++-------------
Alib/pleroma/rule.ex68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/scheduled_activity.ex15++++++++++-----
Alib/pleroma/search.ex21+++++++++++++++++++++
Alib/pleroma/search/database_search.ex168+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alib/pleroma/search/healthcheck.ex86+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alib/pleroma/search/meilisearch.ex192+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alib/pleroma/search/search_backend.ex32++++++++++++++++++++++++++++++++
Mlib/pleroma/signature.ex2+-
Mlib/pleroma/telemetry/logger.ex6+++---
Mlib/pleroma/upload.ex31++++++++++++++++++++-----------
Mlib/pleroma/upload/filter.ex6+++---
Mlib/pleroma/upload/filter/analyze_metadata.ex44+++++++++++++++++++++++++++++++++-----------
Mlib/pleroma/upload/filter/exiftool/read_description.ex2--
Alib/pleroma/upload/filter/only_media.ex20++++++++++++++++++++
Alib/pleroma/uploaders/ipfs.ex77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/uploaders/s3.ex15++++++++++-----
Mlib/pleroma/uploaders/uploader.ex11++---------
Mlib/pleroma/user.ex155+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------
Mlib/pleroma/user/backup.ex237++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
Mlib/pleroma/user/query.ex4++--
Mlib/pleroma/user_invite_token.ex2+-
Mlib/pleroma/user_relationship.ex2++
Mlib/pleroma/web.ex2+-
Mlib/pleroma/web/activity_pub/activity_pub.ex123+++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Mlib/pleroma/web/activity_pub/activity_pub_controller.ex18+++++++++++-------
Mlib/pleroma/web/activity_pub/builder.ex97++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Mlib/pleroma/web/activity_pub/mrf.ex19++++++++++++++++---
Mlib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex2--
Alib/pleroma/web/activity_pub/mrf/emoji_policy.ex281+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/activity_pub/mrf/follow_bot_policy.ex2+-
Alib/pleroma/web/activity_pub/mrf/force_mention.ex59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/activity_pub/mrf/force_mentions_in_content.ex10++++++----
Mlib/pleroma/web/activity_pub/mrf/hashtag_policy.ex4++--
Alib/pleroma/web/activity_pub/mrf/inline_quote_policy.ex77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/activity_pub/mrf/keyword_policy.ex21+++++----------------
Mlib/pleroma/web/activity_pub/mrf/no_empty_policy.ex16++++++++--------
Alib/pleroma/web/activity_pub/mrf/nsfw_api_policy.ex265+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/activity_pub/mrf/policy.ex4++--
Alib/pleroma/web/activity_pub/mrf/quote_to_link_tag_policy.ex49+++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/activity_pub/mrf/steal_emoji_policy.ex10+++++++---
Alib/pleroma/web/activity_pub/mrf/utils.ex15+++++++++++++++
Mlib/pleroma/web/activity_pub/object_validator.ex18+++++++++++-------
Mlib/pleroma/web/activity_pub/object_validators/add_remove_validator.ex3++-
Mlib/pleroma/web/activity_pub/object_validators/announce_validator.ex2+-
Mlib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex1+
Mlib/pleroma/web/activity_pub/object_validators/attachment_validator.ex4++--
Alib/pleroma/web/activity_pub/object_validators/audio_image_video_validator.ex126+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dlib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex120-------------------------------------------------------------------------------
Mlib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex5+++++
Mlib/pleroma/web/activity_pub/object_validators/common_fields.ex6++++--
Mlib/pleroma/web/activity_pub/object_validators/common_fixes.ex49+++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/activity_pub/object_validators/emoji_react_validator.ex51++++++++++++++++++++++++++++++++++++++++-----------
Mlib/pleroma/web/activity_pub/object_validators/question_options_validator.ex4++--
Mlib/pleroma/web/activity_pub/object_validators/question_validator.ex2++
Mlib/pleroma/web/activity_pub/object_validators/tag_validator.ex20+++++++++++++++++++-
Mlib/pleroma/web/activity_pub/pipeline.ex2+-
Mlib/pleroma/web/activity_pub/publisher.ex204++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------
Mlib/pleroma/web/activity_pub/relay.ex2+-
Mlib/pleroma/web/activity_pub/side_effects.ex110+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Mlib/pleroma/web/activity_pub/side_effects/handling.ex2+-
Mlib/pleroma/web/activity_pub/transmogrifier.ex85++++++++++++++++++++++++++++++++++---------------------------------------------
Mlib/pleroma/web/activity_pub/utils.ex130++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
Mlib/pleroma/web/activity_pub/views/user_view.ex13++++++++++---
Mlib/pleroma/web/activity_pub/visibility.ex50+++++++++++++++++++++++++-------------------------
Mlib/pleroma/web/admin_api/controllers/config_controller.ex6+++---
Mlib/pleroma/web/admin_api/controllers/frontend_controller.ex25++++++++++++++++++++++---
Mlib/pleroma/web/admin_api/controllers/instance_document_controller.ex13+++++++++----
Mlib/pleroma/web/admin_api/controllers/invite_controller.ex14++++++++++----
Mlib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex15+++++++++++----
Mlib/pleroma/web/admin_api/controllers/relay_controller.ex18+++++++++++++++---
Mlib/pleroma/web/admin_api/controllers/report_controller.ex42+++++++++++++++++++++++++++++++-----------
Alib/pleroma/web/admin_api/controllers/rule_controller.ex62++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/admin_api/controllers/user_controller.ex107++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
Mlib/pleroma/web/admin_api/views/frontend_view.ex3++-
Mlib/pleroma/web/admin_api/views/report_view.ex17++++++++++++++++-
Alib/pleroma/web/admin_api/views/rule_view.ex22++++++++++++++++++++++
Mlib/pleroma/web/api_spec.ex22++++++++++++++++------
Mlib/pleroma/web/api_spec/cast_and_validate.ex14++++++++------
Mlib/pleroma/web/api_spec/helpers.ex2+-
Mlib/pleroma/web/api_spec/operations/account_operation.ex64++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
Mlib/pleroma/web/api_spec/operations/admin/frontend_operation.ex9+++++----
Mlib/pleroma/web/api_spec/operations/admin/o_auth_app_operation.ex8++++----
Mlib/pleroma/web/api_spec/operations/admin/report_operation.ex29+++++++++++++++++++++++------
Alib/pleroma/web/api_spec/operations/admin/rule_operation.ex115+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/api_spec/operations/chat_operation.ex14++++++++++++--
Mlib/pleroma/web/api_spec/operations/directory_operation.ex2+-
Mlib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex6+++---
Mlib/pleroma/web/api_spec/operations/instance_operation.ex229++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Mlib/pleroma/web/api_spec/operations/notification_operation.ex6++++--
Mlib/pleroma/web/api_spec/operations/pleroma_account_operation.ex2+-
Mlib/pleroma/web/api_spec/operations/pleroma_backup_operation.ex12++++++++++--
Alib/pleroma/web/api_spec/operations/pleroma_bookmark_folder_operation.ex125+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/api_spec/operations/pleroma_notification_operation.ex8+-------
Mlib/pleroma/web/api_spec/operations/pleroma_scrobble_operation.ex10++++++++--
Alib/pleroma/web/api_spec/operations/pleroma_status_operation.ex45+++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/api_spec/operations/poll_operation.ex2+-
Mlib/pleroma/web/api_spec/operations/report_operation.ex9++++++++-
Mlib/pleroma/web/api_spec/operations/scheduled_activity_operation.ex2+-
Mlib/pleroma/web/api_spec/operations/search_operation.ex4++--
Mlib/pleroma/web/api_spec/operations/status_operation.ex37+++++++++++++++++++++++++++++++------
Alib/pleroma/web/api_spec/operations/streaming_operation.ex464+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/api_spec/operations/timeline_operation.ex7++++++-
Mlib/pleroma/web/api_spec/operations/twitter_util_operation.ex10+++++-----
Mlib/pleroma/web/api_spec/schemas/attachment.ex2+-
Alib/pleroma/web/api_spec/schemas/bookmark_folder.ex26++++++++++++++++++++++++++
Mlib/pleroma/web/api_spec/schemas/poll.ex14+++++++++++++-
Mlib/pleroma/web/api_spec/schemas/status.ex31++++++++++++++++++++++++++++++-
Alib/pleroma/web/api_spec/scopes/compiler.ex82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alib/pleroma/web/api_spec/scopes/translator.ex10++++++++++
Mlib/pleroma/web/auth/authenticator.ex2+-
Mlib/pleroma/web/common_api.ex40++++++++++++++++++++++++++++++++--------
Mlib/pleroma/web/common_api/activity_draft.ex73++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
Mlib/pleroma/web/common_api/utils.ex53+++++++++++++++++++++++++++++++++--------------------
Mlib/pleroma/web/controller_helper.ex18++++++++++--------
Mlib/pleroma/web/embed_controller.ex4+---
Mlib/pleroma/web/endpoint.ex105++++++++++++++++++++++++++++++++++++-------------------------------------------
Mlib/pleroma/web/fallback/redirect_controller.ex27+++++++++++++++++++++------
Mlib/pleroma/web/federator.ex32+++++++++++++++-----------------
Dlib/pleroma/web/federator/publisher.ex109-------------------------------------------------------------------------------
Mlib/pleroma/web/feed/feed_view.ex14+++++++-------
Mlib/pleroma/web/gettext.ex4++--
Mlib/pleroma/web/mastodon_api/controllers/account_controller.ex124++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
Mlib/pleroma/web/mastodon_api/controllers/directory_controller.ex2+-
Mlib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex18+++++++++++++-----
Mlib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex4++--
Mlib/pleroma/web/mastodon_api/controllers/instance_controller.ex12+++++++++++-
Mlib/pleroma/web/mastodon_api/controllers/list_controller.ex52+++++++++++++++++++++++++++++++++++++++-------------
Mlib/pleroma/web/mastodon_api/controllers/media_controller.ex26+++++++++++++++++++++-----
Mlib/pleroma/web/mastodon_api/controllers/notification_controller.ex64++++++++++++++++++++++++++++++++++++++++------------------------
Mlib/pleroma/web/mastodon_api/controllers/poll_controller.ex12+++++++++---
Mlib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex17+++++++++++++----
Mlib/pleroma/web/mastodon_api/controllers/search_controller.ex20++++++++++++++------
Mlib/pleroma/web/mastodon_api/controllers/status_controller.ex192++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
Mlib/pleroma/web/mastodon_api/views/account_view.ex43++++++++++++++++++++++++++++++++++++++-----
Mlib/pleroma/web/mastodon_api/views/instance_view.ex176++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
Mlib/pleroma/web/mastodon_api/views/notification_view.ex8+++++++-
Mlib/pleroma/web/mastodon_api/views/poll_view.ex5++++-
Mlib/pleroma/web/mastodon_api/views/status_view.ex164+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
Mlib/pleroma/web/mastodon_api/websocket_handler.ex249++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
Mlib/pleroma/web/media_proxy/media_proxy_controller.ex9++++++++-
Mlib/pleroma/web/metadata/providers/rel_me.ex14+++++++++++---
Mlib/pleroma/web/metadata/providers/twitter_card.ex13+++++++++++--
Mlib/pleroma/web/metadata/utils.ex5+++--
Alib/pleroma/web/multipart.ex22++++++++++++++++++++++
Mlib/pleroma/web/nodeinfo/nodeinfo.ex2+-
Mlib/pleroma/web/o_auth/authorization.ex8++++----
Mlib/pleroma/web/o_auth/o_auth_controller.ex9++-------
Mlib/pleroma/web/o_auth/token.ex9+++++----
Mlib/pleroma/web/o_auth/token/query.ex4++--
Mlib/pleroma/web/o_status/o_status_controller.ex9++++-----
Alib/pleroma/web/pleroma_api/controllers/bookmark_folder_controller.ex68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/pleroma_api/controllers/chat_controller.ex69++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
Mlib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex24++++++++++++++++++++----
Mlib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex29++++++++++++++++++++---------
Mlib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex24++++++++++++++++--------
Mlib/pleroma/web/pleroma_api/controllers/mascot_controller.ex13++++++++++---
Mlib/pleroma/web/pleroma_api/controllers/notification_controller.ex36+++++++++++++++++++++++++-----------
Alib/pleroma/web/pleroma_api/controllers/status_controller.ex66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/pleroma_api/controllers/user_import_controller.ex41+++++++++++++++++++++++++++++++----------
Mlib/pleroma/web/pleroma_api/views/backup_view.ex10++++++++++
Alib/pleroma/web/pleroma_api/views/bookmark_folder_view.ex42++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/pleroma_api/views/chat/message_reference_view.ex13++++++++-----
Mlib/pleroma/web/pleroma_api/views/emoji_reaction_view.ex17+++++++++++++++--
Mlib/pleroma/web/pleroma_api/views/scrobble_view.ex1+
Mlib/pleroma/web/plugs/authentication_plug.ex8--------
Mlib/pleroma/web/plugs/cache.ex2+-
Mlib/pleroma/web/plugs/http_security_plug.ex20++++++++++++++------
Mlib/pleroma/web/plugs/http_signature_plug.ex2+-
Mlib/pleroma/web/plugs/o_auth_plug.ex4++--
Mlib/pleroma/web/plugs/rate_limiter.ex2+-
Mlib/pleroma/web/plugs/rate_limiter/supervisor.ex2+-
Mlib/pleroma/web/plugs/remote_ip.ex2+-
Mlib/pleroma/web/plugs/uploaded_media.ex6+++---
Mlib/pleroma/web/preload.ex4++--
Mlib/pleroma/web/push.ex2+-
Mlib/pleroma/web/push/impl.ex3++-
Alib/pleroma/web/rich_media/backfill.ex101+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Alib/pleroma/web/rich_media/card.ex157+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mlib/pleroma/web/rich_media/helpers.ex89+++++++++++--------------------------------------------------------------------
Mlib/pleroma/web/rich_media/parser.ex169++++++++++++++++++++++++-------------------------------------------------------
Mlib/pleroma/web/rich_media/parser/ttl.ex15++++++++++++++-
Mlib/pleroma/web/rich_media/parser/ttl/aws_signed_url.ex15++++++++-------
Alib/pleroma/web/rich_media/parser/ttl/opengraph.ex20++++++++++++++++++++
Mlib/pleroma/web/rich_media/parsers/o_embed.ex4++--
Mlib/pleroma/web/router.ex41+++++++++++++++++++++++++++++++----------
Mlib/pleroma/web/static_fe/static_fe_controller.ex13++++++++++---
Mlib/pleroma/web/streamer.ex116++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
Mlib/pleroma/web/templates/feed/feed/_activity.atom.eex4++--
Mlib/pleroma/web/templates/feed/feed/_activity.rss.eex2+-
Mlib/pleroma/web/templates/feed/feed/_tag_activity.atom.eex4++--
Mlib/pleroma/web/templates/feed/feed/_tag_activity.xml.eex2+-
Mlib/pleroma/web/templates/o_auth/mfa/recovery.html.eex8++++----
Mlib/pleroma/web/templates/o_auth/mfa/totp.html.eex8++++----
Mlib/pleroma/web/templates/o_auth/o_auth/_scopes.html.eex2+-
Mlib/pleroma/web/templates/o_auth/o_auth/register.html.eex8++++----
Mlib/pleroma/web/templates/o_auth/o_auth/show.html.eex10+++++-----
Mlib/pleroma/web/twitter_api/controllers/password_controller.ex2+-
Mlib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex11+++++++++--
Mlib/pleroma/web/twitter_api/controllers/util_controller.ex59+++++++++++++++++++++++++++++++++++++++++++++--------------
Mlib/pleroma/web/views/streamer_view.ex61+++++++++++++++++++++++++++++++++++++++++++++++++++++--------
Mlib/pleroma/web/web_finger.ex48+++++++++++++++++++++++++++++++++++++++---------
Mlib/pleroma/web/web_finger/web_finger_controller.ex2+-
Mlib/pleroma/web/xml.ex5++++-
Mlib/pleroma/workers/background_worker.ex9+++++++--
Mlib/pleroma/workers/backup_worker.ex2+-
Mlib/pleroma/workers/cron/digest_emails_worker.ex2+-
Mlib/pleroma/workers/cron/new_users_digest_worker.ex2+-
Mlib/pleroma/workers/publisher_worker.ex4++--
Mlib/pleroma/workers/receiver_worker.ex42+++++++++++++++++++++++++++++++++++++++---
Mlib/pleroma/workers/remote_fetcher_worker.ex20+++++++++++++++++++-
Alib/pleroma/workers/rich_media_expiration_worker.ex15+++++++++++++++
Alib/pleroma/workers/search_indexing_worker.ex23+++++++++++++++++++++++
Dlib/pleroma/workers/transmogrifier_worker.ex18------------------
Mmix.exs82++++++++++++++++++++++++++++++++++++-------------------------------------------
Mmix.lock166+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Mpriv/gettext/config_descriptions.pot2052++++++++++++++++++++++++++++++++++++++-----------------------------------------
Mpriv/gettext/default.pot68++++++++++++++++++++++++++++++++++----------------------------------
Apriv/gettext/en/LC_MESSAGES/oauth_scopes.po264+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpriv/gettext/en_test/LC_MESSAGES/default.po1-
Mpriv/gettext/en_test/LC_MESSAGES/errors.po1-
Mpriv/gettext/en_test/LC_MESSAGES/posix_errors.po1-
Mpriv/gettext/en_test/LC_MESSAGES/static_pages.po4----
Mpriv/gettext/errors.pot166++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mpriv/gettext/ja/LC_MESSAGES/errors.po90++++++++++++++++++++++++++++++++++++++++----------------------------------------
Apriv/gettext/oauth_scopes.pot221+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpriv/gettext/ru/LC_MESSAGES/errors.po1-
Mpriv/gettext/static_pages.pot182++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mpriv/gettext/zh_Hans/LC_MESSAGES/static_pages.po4----
Mpriv/repo/migrations/20180516144508_add_trigram_extension.exs6+++---
Mpriv/repo/migrations/20190710125158_add_following_address_from_source_data.exs2+-
Mpriv/repo/migrations/20191118084500_data_migration_populate_user_relationships.exs2+-
Mpriv/repo/migrations/20200811143147_ap_id_not_null.exs2+-
Apriv/repo/migrations/20220203224011_create_rules.exs12++++++++++++
Apriv/repo/migrations/20220319000000_add_status_to_notifications_enum.exs51+++++++++++++++++++++++++++++++++++++++++++++++++++
Apriv/repo/migrations/20220527134341_add_quote_url_index_to_objects.exs17+++++++++++++++++
Mpriv/repo/migrations/20220905011454_generate_unset_user_keys.exs10+++++++++-
Apriv/repo/migrations/20221216052127_add_state_to_backups.exs21+++++++++++++++++++++
Apriv/repo/migrations/20230306112859_instances_add_metadata.exs14++++++++++++++
Apriv/repo/migrations/20230422154018_drop_unused_indexes.exs73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apriv/repo/migrations/20230504173400_remove_user_ap_enabled.exs13+++++++++++++
Apriv/repo/migrations/20231107200724_consolidate_email_queues.exs9+++++++++
Apriv/repo/migrations/20240207035927_create_rich_media_card.exs14++++++++++++++
Apriv/repo/migrations/20240223165000_create_bookmark_folders.exs27+++++++++++++++++++++++++++
Apriv/repo/migrations/20240406000000_add_hint_to_rules.exs13+++++++++++++
Mpriv/scrubbers/default.ex106++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
Apriv/scrubbers/search_indexing.ex24++++++++++++++++++++++++
Mpriv/static/index.html4++--
Mpriv/static/schemas/litepub-0.1.jsonld8+++++++-
Dpriv/static/static/css/5948.06d2a0d84620cba6a4fb.css3---
Dpriv/static/static/css/5948.06d2a0d84620cba6a4fb.css.map2--
Apriv/static/static/css/7586.0d43f70bc6240422f179.css3+++
Apriv/static/static/css/7586.0d43f70bc6240422f179.css.map2++
Apriv/static/static/css/7962.76663e78ad5ea0bb0b90.css12++++++++++++
Apriv/static/static/css/7962.76663e78ad5ea0bb0b90.css.map2++
Apriv/static/static/css/8859.d26a3b0841a7beb8fd4a.css3+++
Apriv/static/static/css/8859.d26a3b0841a7beb8fd4a.css.map2++
Dpriv/static/static/css/9114.8def3b2b7fe70b3b3712.css12------------
Dpriv/static/static/css/9114.8def3b2b7fe70b3b3712.css.map2--
Dpriv/static/static/css/app.48e52505beba5b9ab69b.css3---
Dpriv/static/static/css/app.48e52505beba5b9ab69b.css.map2--
Apriv/static/static/css/app.a7f63ee9107a77599942.css3+++
Apriv/static/static/css/app.a7f63ee9107a77599942.css.map2++
Dpriv/static/static/js/159.3a9274574f1e33801c4a.js3---
Dpriv/static/static/js/159.3a9274574f1e33801c4a.js.map2--
Apriv/static/static/js/159.903e90c9de8ef6c67077.js3+++
Apriv/static/static/js/159.903e90c9de8ef6c67077.js.map2++
Dpriv/static/static/js/2724.e4840c73281069ba54ab.js4----
Dpriv/static/static/js/2724.e4840c73281069ba54ab.js.map2--
Apriv/static/static/js/3733.7060d1e6bca813125a0c.js4++++
Rpriv/static/static/js/2724.e4840c73281069ba54ab.js.LICENSE.txt -> priv/static/static/js/3733.7060d1e6bca813125a0c.js.LICENSE.txt0
Apriv/static/static/js/3733.7060d1e6bca813125a0c.js.map2++
Apriv/static/static/js/48.b5ecdbc517423af07ca4.js4++++
Apriv/static/static/js/48.b5ecdbc517423af07ca4.js.LICENSE.txt11+++++++++++
Apriv/static/static/js/48.b5ecdbc517423af07ca4.js.map2++
Dpriv/static/static/js/48.d7e479b200a6c89c4958.js4----
Dpriv/static/static/js/48.d7e479b200a6c89c4958.js.LICENSE.txt11-----------
Dpriv/static/static/js/48.d7e479b200a6c89c4958.js.map2--
Dpriv/static/static/js/5948.2b7b4e97487f2539eb44.js3---
Dpriv/static/static/js/5948.2b7b4e97487f2539eb44.js.map2--
Apriv/static/static/js/6464.eb9c90a1c948cde554e9.js3+++
Apriv/static/static/js/6464.eb9c90a1c948cde554e9.js.map2++
Dpriv/static/static/js/6464.fea96fa80a7373e4e5f8.js3---
Dpriv/static/static/js/6464.fea96fa80a7373e4e5f8.js.map2--
Apriv/static/static/js/7586.628f729b9c8b2e6f4e1f.js3+++
Apriv/static/static/js/7586.628f729b9c8b2e6f4e1f.js.map2++
Apriv/static/static/js/7962.e25d40b042f8ee7389c3.js3+++
Apriv/static/static/js/7962.e25d40b042f8ee7389c3.js.map2++
Apriv/static/static/js/8859.c76b0a0c3a4b5acbef11.js3+++
Apriv/static/static/js/8859.c76b0a0c3a4b5acbef11.js.map2++
Apriv/static/static/js/9060.24271e167e0471a1a732.js3+++
Apriv/static/static/js/9060.24271e167e0471a1a732.js.map2++
Dpriv/static/static/js/9114.e761a1c6846fea99aaf1.js3---
Dpriv/static/static/js/9114.e761a1c6846fea99aaf1.js.map2--
Dpriv/static/static/js/app.8d2126d35dba9482db51.js3---
Dpriv/static/static/js/app.8d2126d35dba9482db51.js.map2--
Apriv/static/static/js/app.d42ab31e1d50a3265a82.js3+++
Apriv/static/static/js/app.d42ab31e1d50a3265a82.js.map2++
Apriv/static/static/js/i18n/ar-json.4916f840147303aa65fe.js3+++
Apriv/static/static/js/i18n/ar-json.4916f840147303aa65fe.js.map2++
Dpriv/static/static/js/i18n/ar-json.d09609af3224232857d6.js3---
Dpriv/static/static/js/i18n/ar-json.d09609af3224232857d6.js.map2--
Apriv/static/static/js/i18n/eo-json.6c62eef99e850912498b.js3+++
Apriv/static/static/js/i18n/eo-json.6c62eef99e850912498b.js.map2++
Dpriv/static/static/js/i18n/eo-json.d81690d5be30b23e516b.js3---
Dpriv/static/static/js/i18n/eo-json.d81690d5be30b23e516b.js.map2--
Dpriv/static/static/js/i18n/id-json.3e42564ce7a3a847ecb0.js3---
Dpriv/static/static/js/i18n/id-json.3e42564ce7a3a847ecb0.js.map2--
Apriv/static/static/js/i18n/id-json.e5c9ee768155f88128b9.js3+++
Apriv/static/static/js/i18n/id-json.e5c9ee768155f88128b9.js.map2++
Dpriv/static/static/js/i18n/ko-json.4bd28b26a7390a09afc2.js3---
Dpriv/static/static/js/i18n/ko-json.4bd28b26a7390a09afc2.js.map2--
Apriv/static/static/js/i18n/ko-json.9029d09084bb22d8b705.js3+++
Apriv/static/static/js/i18n/ko-json.9029d09084bb22d8b705.js.map2++
Apriv/static/static/js/i18n/nan-TW-json.7f2789d8a461e86d1734.js3+++
Apriv/static/static/js/i18n/nan-TW-json.7f2789d8a461e86d1734.js.map2++
Dpriv/static/static/js/i18n/zh-json.63e4c9fe0197374a5dac.js3---
Dpriv/static/static/js/i18n/zh-json.63e4c9fe0197374a5dac.js.map2--
Apriv/static/static/js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js3+++
Apriv/static/static/js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js.map2++
Dpriv/static/static/js/i18n/zh_Hant-json.bfa569654a5cd74767ce.js3---
Dpriv/static/static/js/i18n/zh_Hant-json.bfa569654a5cd74767ce.js.map2--
Apriv/static/static/js/i18n/zh_Hant-json.f7e1d0f4b873c60d6396.js3+++
Apriv/static/static/js/i18n/zh_Hant-json.f7e1d0f4b873c60d6396.js.map2++
Mpriv/static/sw-pleroma.js4++--
Mpriv/static/sw-pleroma.js.map4++--
Mrel/files/bin/pleroma_ctl2+-
Mrel/files/installation/init.d/pleroma1+
Atest/fixtures/ccworld-ap-bridge_note.json1+
Atest/fixtures/custom-emoji-reaction.json28++++++++++++++++++++++++++++
Atest/fixtures/fep-e232.json31+++++++++++++++++++++++++++++++
Atest/fixtures/hubzilla-actor.json2++
Atest/fixtures/hubzilla-create-image.json2++
Atest/fixtures/mastodon-nodeinfo20.json2++
Atest/fixtures/mastodon-well-known-nodeinfo.json2++
Atest/fixtures/minds-invalid-mention-post.json2++
Atest/fixtures/minds-pleroma-mentioned-post.json2++
Atest/fixtures/png_with_transparency.png0
Atest/fixtures/quote_post/fedibird_quote_mismatched.json54++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atest/fixtures/quote_post/fedibird_quote_post.json52++++++++++++++++++++++++++++++++++++++++++++++++++++
Atest/fixtures/quote_post/fedibird_quote_uri.json54++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atest/fixtures/quote_post/fep-e232-tag-example.json17+++++++++++++++++
Atest/fixtures/quote_post/misskey_quote_post.json46++++++++++++++++++++++++++++++++++++++++++++++
Atest/fixtures/rich_media/google.html12++++++++++++
Mtest/fixtures/rich_media/oembed.html2+-
Atest/fixtures/rich_media/reddit.html393+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atest/fixtures/rich_media/yahoo.html12++++++++++++
Atest/fixtures/tesla_mock/aimu@misskey.io.json64++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atest/fixtures/tesla_mock/gleasonator.com_host_meta5+++++
Atest/fixtures/tesla_mock/misskey.io_8vs6wxufd0.json44++++++++++++++++++++++++++++++++++++++++++++
Atest/fixtures/tesla_mock/smithereen_non_anonymous_poll.json2++
Atest/fixtures/tesla_mock/smithereen_user.json2++
Atest/fixtures/tesla_mock/webfinger_spoof.json28++++++++++++++++++++++++++++
Atest/fixtures/webfinger/graf-imposter-webfinger.json41+++++++++++++++++++++++++++++++++++++++++
Atest/fixtures/wildebeest-nodeinfo21.json2++
Atest/fixtures/wildebeest-well-known-nodeinfo.json2++
Atest/fixtures/xml_billion_laughs.xml15+++++++++++++++
Atest/fixtures/xml_external_entities.xml3+++
Mtest/mix/pleroma_test.exs2+-
Mtest/mix/tasks/pleroma/config_test.exs5++---
Mtest/mix/tasks/pleroma/digest_test.exs5+++++
Mtest/mix/tasks/pleroma/ecto/migrate_test.exs2+-
Mtest/mix/tasks/pleroma/ecto/rollback_test.exs4++--
Mtest/mix/tasks/pleroma/robots_txt_test.exs2+-
Mtest/mix/tasks/pleroma/user_test.exs5+++++
Mtest/pleroma/activity/ir/topics_test.exs2+-
Dtest/pleroma/activity/search_test.exs62--------------------------------------------------------------
Mtest/pleroma/activity_test.exs2+-
Dtest/pleroma/bbs/handler_test.exs89-------------------------------------------------------------------------------
Atest/pleroma/bookmark_folder_test.exs60++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/bookmark_test.exs17++++++++++++++++-
Mtest/pleroma/config/deprecation_warnings_test.exs11+++++------
Mtest/pleroma/config/release_runtime_provider_test.exs9++++++++-
Mtest/pleroma/config_db_test.exs8++++----
Mtest/pleroma/conversation/participation_test.exs2+-
Mtest/pleroma/conversation_test.exs5+++++
Atest/pleroma/ecto_type/activity_pub/object_validators/bare_uri_test.exs25+++++++++++++++++++++++++
Mtest/pleroma/emoji/loader_test.exs2+-
Mtest/pleroma/emoji/pack_test.exs4++++
Mtest/pleroma/emoji_test.exs26+++++++++++++-------------
Mtest/pleroma/formatter_test.exs4++--
Mtest/pleroma/healthcheck_test.exs8+++++---
Mtest/pleroma/html_test.exs12++++++------
Mtest/pleroma/http/adapter_helper/gun_test.exs4++--
Mtest/pleroma/http/adapter_helper/hackney_test.exs2+-
Atest/pleroma/http/web_push_test.exs45+++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/instances/instance_test.exs68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
Mtest/pleroma/integration/mastodon_websocket_test.exs355++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Atest/pleroma/maps_test.exs22++++++++++++++++++++++
Mtest/pleroma/mfa/totp_test.exs6+++++-
Mtest/pleroma/notification_test.exs242++++++++++++++-----------------------------------------------------------------
Mtest/pleroma/object/fetcher_test.exs91+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
Mtest/pleroma/object_test.exs41+++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/otp_version_test.exs2+-
Mtest/pleroma/repo/migrations/autolinker_to_linkify_test.exs6+++---
Mtest/pleroma/repo/migrations/fix_malformed_formatter_config_test.exs4++--
Mtest/pleroma/reverse_proxy_test.exs2+-
Atest/pleroma/rule_test.exs57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/scheduled_activity_test.exs32+++++++++++++++++++++++++-------
Atest/pleroma/search/database_search_test.exs47+++++++++++++++++++++++++++++++++++++++++++++++
Atest/pleroma/search/healthcheck_test.exs49+++++++++++++++++++++++++++++++++++++++++++++++++
Atest/pleroma/search/meilisearch_test.exs160+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/signature_test.exs7++-----
Mtest/pleroma/upload/filter/analyze_metadata_test.exs14++++++++++++++
Mtest/pleroma/upload/filter/exiftool/read_description_test.exs2+-
Atest/pleroma/upload/filter/only_media_test.exs32++++++++++++++++++++++++++++++++
Mtest/pleroma/upload_test.exs11+++++++++++
Atest/pleroma/uploaders/ipfs_test.exs158+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/uploaders/s3_test.exs89+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
Atest/pleroma/user/backup_async_test.exs51+++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/user/backup_test.exs121+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
Mtest/pleroma/user_test.exs227++++++++++++++++++++++++++++++++++++-------------------------------------------
Mtest/pleroma/web/activity_pub/activity_pub_controller_test.exs33+++++++++++++++++++++++++++------
Mtest/pleroma/web/activity_pub/activity_pub_test.exs46++++++++++++++++++++++++++++++++++++++++++++--
Mtest/pleroma/web/activity_pub/builder_test.exs29+++++++++++++++++++++++++++++
Atest/pleroma/web/activity_pub/mrf/emoji_policy_test.exs425+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/activity_pub/mrf/ensure_re_prepended_test.exs2+-
Mtest/pleroma/web/activity_pub/mrf/follow_bot_policy_test.exs2+-
Atest/pleroma/web/activity_pub/mrf/force_mention_test.exs73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/activity_pub/mrf/force_mentions_in_content_test.exs51+++++++++++++++++++++++++++++++++++++++++++++++++++
Atest/pleroma/web/activity_pub/mrf/inline_quote_policy_test.exs112+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/activity_pub/mrf/media_proxy_warming_policy_test.exs9+++++++++
Atest/pleroma/web/activity_pub/mrf/nsfw_api_policy_test.exs267+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atest/pleroma/web/activity_pub/mrf/quote_to_link_tag_policy_test.exs73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/activity_pub/mrf/steal_emoji_policy_test.exs53+++++++++++++++++++++++++++++++++++++++++++++++++++++
Atest/pleroma/web/activity_pub/mrf/utils_test.exs19+++++++++++++++++++
Mtest/pleroma/web/activity_pub/mrf_test.exs15+++++++++++++--
Mtest/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs60++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/activity_pub/object_validators/attachment_validator_test.exs7++++++-
Mtest/pleroma/web/activity_pub/object_validators/chat_validation_test.exs26++++++++++++++++++++++++++
Mtest/pleroma/web/activity_pub/object_validators/emoji_react_handling_test.exs60+++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Mtest/pleroma/web/activity_pub/publisher_test.exs105+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
Mtest/pleroma/web/activity_pub/side_effects_test.exs116+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------
Mtest/pleroma/web/activity_pub/transmogrifier/emoji_react_handling_test.exs53+++++++++++++++++++++++++++++++++++++++++++++++++++--
Atest/pleroma/web/activity_pub/transmogrifier/image_handling_test.exs50++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs15++++++++++++++-
Mtest/pleroma/web/activity_pub/transmogrifier/undo_handling_test.exs2+-
Mtest/pleroma/web/activity_pub/transmogrifier_test.exs106++++++++++++++++++++++++++++++++++---------------------------------------------
Mtest/pleroma/web/activity_pub/utils_test.exs64+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Mtest/pleroma/web/activity_pub/views/user_view_test.exs16++++++++++++++++
Mtest/pleroma/web/activity_pub/visibility_test.exs50+++++++++++++++++++++++++-------------------------
Mtest/pleroma/web/admin_api/controllers/admin_api_controller_test.exs4++++
Mtest/pleroma/web/admin_api/controllers/config_controller_test.exs12++++--------
Mtest/pleroma/web/admin_api/controllers/frontend_controller_test.exs1+
Mtest/pleroma/web/admin_api/controllers/media_proxy_cache_controller_test.exs10+++++++++-
Mtest/pleroma/web/admin_api/controllers/o_auth_app_controller_test.exs2+-
Mtest/pleroma/web/admin_api/controllers/report_controller_test.exs50++++++++++++++++++++++++++++++++++++++++++++++++++
Atest/pleroma/web/admin_api/controllers/rule_controller_test.exs82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/admin_api/controllers/user_controller_test.exs5+++++
Mtest/pleroma/web/admin_api/views/report_view_test.exs25+++++++++++++++++++++++--
Atest/pleroma/web/api_spec/scopes/compiler_test.exs56++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atest/pleroma/web/common_api/activity_draft_test.exs33+++++++++++++++++++++++++++++++++
Mtest/pleroma/web/common_api/utils_test.exs52++++++++++++++++++++++++++++++++++++----------------
Mtest/pleroma/web/common_api_test.exs226+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
Dtest/pleroma/web/endpoint/metrics_exporter_test.exs69---------------------------------------------------------------------
Mtest/pleroma/web/fallback_test.exs41++++++++++++++++++-----------------------
Mtest/pleroma/web/federator_test.exs46+++++++++++++++++++++++++++++++++++++++++-----
Mtest/pleroma/web/feed/user_controller_test.exs44+++++++++++++++++++++++++++++++++++++++++---
Mtest/pleroma/web/mastodon_api/controllers/account_controller_test.exs93++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Mtest/pleroma/web/mastodon_api/controllers/directory_controller_test.exs2+-
Mtest/pleroma/web/mastodon_api/controllers/instance_controller_test.exs48+++++++++++++++++++++++++++++++++++++++++++++++-
Mtest/pleroma/web/mastodon_api/controllers/media_controller_test.exs11+++++++++++
Mtest/pleroma/web/mastodon_api/controllers/notification_controller_test.exs5+++++
Mtest/pleroma/web/mastodon_api/controllers/report_controller_test.exs39+++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/mastodon_api/controllers/scheduled_activity_controller_test.exs18+++++++++++++-----
Mtest/pleroma/web/mastodon_api/controllers/search_controller_test.exs37++++++++++++++++++-------------------
Mtest/pleroma/web/mastodon_api/controllers/status_controller_test.exs586+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
Mtest/pleroma/web/mastodon_api/controllers/subscription_controller_test.exs15+++++++++------
Mtest/pleroma/web/mastodon_api/controllers/timeline_controller_test.exs12++++++------
Mtest/pleroma/web/mastodon_api/mastodon_api_test.exs5+++++
Mtest/pleroma/web/mastodon_api/update_credentials_test.exs93++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
Mtest/pleroma/web/mastodon_api/views/account_view_test.exs14++++++++++----
Mtest/pleroma/web/mastodon_api/views/notification_view_test.exs74+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Mtest/pleroma/web/mastodon_api/views/poll_view_test.exs10+++++++++-
Mtest/pleroma/web/mastodon_api/views/scheduled_activity_view_test.exs9++++++++-
Mtest/pleroma/web/mastodon_api/views/status_view_test.exs270++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
Mtest/pleroma/web/media_proxy/media_proxy_controller_test.exs42+++++++++++++++++++++++++++++++++---------
Mtest/pleroma/web/media_proxy_test.exs17++++++++++++++++-
Mtest/pleroma/web/metadata/providers/open_graph_test.exs10++++++++++
Mtest/pleroma/web/metadata/providers/rel_me_test.exs17+++++++++++++++--
Mtest/pleroma/web/metadata/providers/twitter_card_test.exs3++-
Mtest/pleroma/web/metadata/utils_test.exs2+-
Mtest/pleroma/web/o_auth/mfa_controller_test.exs2+-
Mtest/pleroma/web/o_auth/o_auth_controller_test.exs6+++---
Mtest/pleroma/web/o_auth/token/utils_test.exs4++--
Mtest/pleroma/web/o_status/o_status_controller_test.exs2+-
Mtest/pleroma/web/pleroma_api/controllers/backup_controller_test.exs5+++++
Atest/pleroma/web/pleroma_api/controllers/bookmark_folder_controller_test.exs161+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/pleroma_api/controllers/chat_controller_test.exs55++++++++++++++++++++++++++++++++++++++++++++-----------
Mtest/pleroma/web/pleroma_api/controllers/emoji_pack_controller_test.exs16+++++++++-------
Mtest/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs196++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Mtest/pleroma/web/pleroma_api/controllers/instances_controller_test.exs4+++-
Mtest/pleroma/web/pleroma_api/controllers/mascot_controller_test.exs9+++++++++
Mtest/pleroma/web/pleroma_api/controllers/notification_controller_test.exs27++++++++++++++-------------
Mtest/pleroma/web/pleroma_api/controllers/scrobble_controller_test.exs12++++++++----
Atest/pleroma/web/pleroma_api/controllers/status_controller_test.exs54++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/pleroma_api/views/backup_view_test.exs50++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/pleroma_api/views/chat_message_reference_view_test.exs28++++++++++++++++++++--------
Mtest/pleroma/web/plugs/authentication_plug_test.exs30------------------------------
Mtest/pleroma/web/plugs/ensure_privileged_plug_test.exs2+-
Mtest/pleroma/web/plugs/frontend_static_plug_test.exs8++++++++
Mtest/pleroma/web/plugs/uploaded_media_plug_test.exs19+++++++++++++++++--
Mtest/pleroma/web/push/impl_test.exs5+++++
Atest/pleroma/web/rich_media/card_test.exs71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dtest/pleroma/web/rich_media/helpers_test.exs84-------------------------------------------------------------------------------
Mtest/pleroma/web/rich_media/parser/ttl/aws_signed_url_test.exs56++++++++++++++++++++++++++++++++++++++++----------------
Atest/pleroma/web/rich_media/parser/ttl/opengraph_test.exs41+++++++++++++++++++++++++++++++++++++++++
Mtest/pleroma/web/rich_media/parser_test.exs132++++++++++++++++++++++++++-----------------------------------------------------
Mtest/pleroma/web/streamer_test.exs149+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------
Mtest/pleroma/web/twitter_api/remote_follow_controller_test.exs45++++++++++++++++++++++++++++++++++++++++++---
Mtest/pleroma/web/twitter_api/util_controller_test.exs2+-
Mtest/pleroma/web/web_finger/web_finger_controller_test.exs25++++++++++---------------
Mtest/pleroma/web/web_finger_test.exs77++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------
Atest/pleroma/web/xml_test.exs15+++++++++++++++
Mtest/pleroma/workers/cron/digest_emails_worker_test.exs5+++++
Mtest/pleroma/workers/cron/new_users_digest_worker_test.exs5+++++
Mtest/pleroma/workers/purge_expired_token_test.exs2+-
Mtest/pleroma/workers/receiver_worker_test.exs31+++++++++++++++++++++++++++++--
Atest/pleroma/workers/remote_fetcher_worker_test.exs69+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtest/support/cachex_proxy.ex6++++++
Mtest/support/cluster.ex15++++++++++++++-
Mtest/support/data_case.ex1+
Mtest/support/factory.ex3+--
Mtest/support/helpers.ex35++++++++++++++++++++++++++++++++++-
Mtest/support/http_request_mock.ex226+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Mtest/support/mocks.ex6++++++
Mtest/support/null_cache.ex6++++++
Mtest/test_helper.exs24++++++++++++++++++++++--
Atools/check-changelog18++++++++++++++++++
Atools/collect-changelog27+++++++++++++++++++++++++++
Duploads/.gitignore3---
802 files changed, 19836 insertions(+), 6463 deletions(-)

diff --git a/.dialyzer_ignore.exs b/.dialyzer_ignore.exs @@ -0,0 +1,6 @@ +[ +{"lib/cachex.ex", "Unknown type: Spec.cache/0."}, +{"lib/pleroma/web/plugs/rate_limiter.ex", "The pattern can never match the type {:commit, _} | {:ignore, _}."}, +{"lib/pleroma/web/plugs/rate_limiter.ex", "Function get_scale/2 will never be called."}, +{"lib/pleroma/web/plugs/rate_limiter.ex", "Function initialize_buckets!/1 will never be called."} +] diff --git a/.gitignore b/.gitignore @@ -57,5 +57,6 @@ pleroma.iml .tool-versions # Editor temp files -/*~ -/*# +*~ +*# +*.swp diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml @@ -1,13 +1,22 @@ -image: git.pleroma.social:5050/pleroma/pleroma/ci-base +image: git.pleroma.social:5050/pleroma/pleroma/ci-base:elixir-1.13.4-otp-24 variables: &global_variables + # Only used for the release + ELIXIR_VER: 1.13.4 POSTGRES_DB: pleroma_test POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres DB_HOST: postgres - DB_PORT: 5432 + DB_PORT: "5432" MIX_ENV: test +workflow: + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS + when: never + - if: $CI_COMMIT_BRANCH + cache: &global_cache_policy key: files: @@ -18,11 +27,14 @@ cache: &global_cache_policy stages: - build + - lint - test + - check-changelog - benchmark - deploy - release - docker + - docker-combine before_script: - echo $MIX_ENV @@ -32,24 +44,61 @@ before_script: after_script: - rm -rf _build/*/lib/pleroma -build: +check-changelog: + stage: check-changelog + image: alpine + rules: + - if: $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH == 'pleroma/pleroma' && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'weblate-extract' + when: never + - if: $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH == 'pleroma/pleroma' && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == 'weblate' + when: never + - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" + before_script: '' + after_script: '' + cache: {} + script: + - apk add git + - sh ./tools/check-changelog + +.build_changes_policy: + rules: + - changes: + - ".gitlab-ci.yml" + - "**/*.ex" + - "**/*.exs" + - "mix.lock" + +.using-ci-base: + tags: + - amd64 + +build-1.13.4: + extends: + - .build_changes_policy + - .using-ci-base stage: build - only: - changes: &build_changes_policy - - ".gitlab-ci.yml" - - "**/*.ex" - - "**/*.exs" - - "mix.lock" + script: + - mix compile --force + +build-1.15.7-otp-25: + extends: + - .build_changes_policy + - .using-ci-base + stage: build + image: git.pleroma.social:5050/pleroma/pleroma/ci-base:elixir-1.15-otp25 + allow_failure: true script: - mix compile --force spec-build: - stage: test - only: - changes: - - ".gitlab-ci.yml" - - "lib/pleroma/web/api_spec/**/*.ex" - - "lib/pleroma/web/api_spec.ex" + extends: + - .using-ci-base + stage: build + rules: + - changes: + - ".gitlab-ci.yml" + - "lib/pleroma/web/api_spec/**/*.ex" + - "lib/pleroma/web/api_spec.ex" artifacts: paths: - spec.json @@ -57,12 +106,14 @@ spec-build: - mix pleroma.openapi_spec spec.json benchmark: + extends: + - .using-ci-base stage: benchmark when: manual variables: MIX_ENV: benchmark services: - - name: postgres:9.6-alpine + - name: postgres:11.22-alpine alias: postgres command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] script: @@ -70,19 +121,19 @@ benchmark: - mix ecto.migrate - mix pleroma.load_testing -unit-testing: +unit-testing-1.12.3: + extends: + - .build_changes_policy + - .using-ci-base stage: test - only: - changes: *build_changes_policy cache: &testing_cache_policy <<: *global_cache_policy policy: pull - - services: + services: &testing_services - name: postgres:13-alpine alias: postgres command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - script: + script: &testing_script - mix ecto.create - mix ecto.migrate - mix test --cover --preload-modules @@ -93,64 +144,35 @@ unit-testing: coverage_format: cobertura path: coverage.xml -unit-testing-erratic: +unit-testing-1.15.7-otp-25: + extends: + - .build_changes_policy + - .using-ci-base stage: test - retry: 2 + image: git.pleroma.social:5050/pleroma/pleroma/ci-base:elixir-1.15-otp25 allow_failure: true - only: - changes: *build_changes_policy - cache: &testing_cache_policy - <<: *global_cache_policy - policy: pull - - services: - - name: postgres:13-alpine - alias: postgres - command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - script: - - mix ecto.create - - mix ecto.migrate - - mix test --only=erratic + cache: *testing_cache_policy + services: *testing_services + script: *testing_script -# Removed to fix CI issue. In this early state it wasn't adding much value anyway. -# TODO Fix and reinstate federated testing -# federated-testing: -# stage: test -# cache: *testing_cache_policy -# services: -# - name: minibikini/postgres-with-rum:12 -# alias: postgres -# command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] -# script: -# - mix deps.get -# - mix ecto.create -# - mix ecto.migrate -# - epmd -daemon -# - mix test --trace --only federated - -unit-testing-rum: +unit-testing-1.12-erratic: + extends: + - .build_changes_policy + - .using-ci-base stage: test - only: - changes: *build_changes_policy + retry: 2 + allow_failure: true cache: *testing_cache_policy - services: - - name: minibikini/postgres-with-rum:12 - alias: postgres - command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - variables: - <<: *global_variables - RUM_ENABLED: "true" + services: *testing_services script: - mix ecto.create - mix ecto.migrate - - "mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/" - - mix test --preload-modules + - mix test --only=erratic -lint: - image: &current_elixir elixir:1.12-alpine - stage: test - only: - changes: *build_changes_policy +formatting-1.13: + extends: .build_changes_policy + image: &formatting_elixir elixir:1.13-alpine + stage: lint cache: *testing_cache_policy before_script: &current_bfr_script - apk update @@ -161,24 +183,37 @@ lint: script: - mix format --check-formatted +cycles-1.13: + extends: .build_changes_policy + image: *formatting_elixir + stage: lint + cache: {} + before_script: *current_bfr_script + script: + - mix compile + - mix xref graph --format cycles --label compile | awk '{print $0} END{exit ($0 != "No cycles found")}' + analysis: - stage: test - only: - changes: *build_changes_policy + extends: + - .build_changes_policy + - .using-ci-base + stage: lint cache: *testing_cache_policy script: - mix credo --strict --only=warnings,todo,fixme,consistency,readability -cycles: - image: *current_elixir - stage: test - only: - changes: *build_changes_policy - cache: {} - before_script: *current_bfr_script +dialyzer: + extends: + - .build_changes_policy + - .using-ci-base + stage: lint + allow_failure: true + when: manual + cache: *testing_cache_policy + tags: + - feld script: - - mix compile - - mix xref graph --format cycles --label compile | awk '{print $0} END{exit ($0 != "No cycles found")}' + - mix dialyzer docs-deploy: stage: deploy @@ -190,7 +225,7 @@ docs-deploy: before_script: - apk add curl script: - - curl -X POST -F"token=$DOCS_PIPELINE_TRIGGER" -F'ref=master' -F"variables[BRANCH]=$CI_COMMIT_REF_NAME" https://git.pleroma.social/api/v4/projects/673/trigger/pipeline + - curl --fail-with-body -X POST -F"token=$CI_JOB_TOKEN" -F'ref=master' -F"variables[BRANCH]=$CI_COMMIT_REF_NAME" https://git.pleroma.social/api/v4/projects/673/trigger/pipeline review_app: image: alpine:3.9 stage: deploy @@ -231,7 +266,7 @@ spec-deploy: before_script: - apk add curl script: - - curl -X POST -F"token=$API_DOCS_PIPELINE_TRIGGER" -F'ref=master' -F"variables[BRANCH]=$CI_COMMIT_REF_NAME" -F"variables[JOB_REF]=$CI_JOB_ID" https://git.pleroma.social/api/v4/projects/1130/trigger/pipeline + - curl --fail-with-body -X POST -F"token=$CI_JOB_TOKEN" -F'ref=master' -F"variables[BRANCH]=$CI_COMMIT_REF_NAME" -F"variables[JOB_REF]=$CI_JOB_ID" https://git.pleroma.social/api/v4/projects/1130/trigger/pipeline stop_review_app: @@ -254,7 +289,7 @@ stop_review_app: amd64: stage: release - image: elixir:1.11.4 + image: elixir:$ELIXIR_VER only: &release-only - stable@pleroma/pleroma - develop@pleroma/pleroma @@ -278,8 +313,9 @@ amd64: - deps variables: &release-variables MIX_ENV: prod + VIX_COMPILATION_MODE: PLATFORM_PROVIDED_LIBVIPS before_script: &before-release - - apt-get update && apt-get install -y cmake libmagic-dev + - apt-get update && apt-get install -y cmake libmagic-dev libvips-dev erlang-dev - echo "import Config" > config/prod.secret.exs - mix local.hex --force - mix local.rebar --force @@ -294,13 +330,13 @@ amd64-musl: stage: release artifacts: *release-artifacts only: *release-only - image: elixir:1.11.4-alpine + image: elixir:$ELIXIR_VER-alpine tags: - amd64 cache: *release-cache variables: *release-variables before_script: &before-release-musl - - apk add git build-base cmake file-dev openssl + - apk add git build-base cmake file-dev openssl vips-dev - echo "import Config" > config/prod.secret.exs - mix local.hex --force - mix local.rebar --force @@ -312,7 +348,7 @@ arm: only: *release-only tags: - arm32-specified - image: arm32v7/elixir:1.11.4 + image: arm32v7/elixir:$ELIXIR_VER cache: *release-cache variables: *release-variables before_script: *before-release @@ -324,7 +360,7 @@ arm-musl: only: *release-only tags: - arm32-specified - image: arm32v7/elixir:1.11.4-alpine + image: arm32v7/elixir:$ELIXIR_VER-alpine cache: *release-cache variables: *release-variables before_script: *before-release-musl @@ -336,7 +372,7 @@ arm64: only: *release-only tags: - arm - image: arm64v8/elixir:1.11.4 + image: arm64v8/elixir:$ELIXIR_VER cache: *release-cache variables: *release-variables before_script: *before-release @@ -348,110 +384,173 @@ arm64-musl: only: *release-only tags: - arm - image: arm64v8/elixir:1.11.4-alpine + image: arm64v8/elixir:$ELIXIR_VER-alpine cache: *release-cache variables: *release-variables before_script: *before-release-musl script: *release -docker: +.kaniko: stage: docker - image: docker:latest + image: + name: gcr.io/kaniko-project/executor:debug + entrypoint: [""] cache: {} dependencies: [] - variables: &docker-variables - DOCKER_DRIVER: overlay2 - DOCKER_HOST: unix:///var/run/docker.sock - IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA - IMAGE_TAG_SLUG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG - IMAGE_TAG_LATEST: $CI_REGISTRY_IMAGE:latest - IMAGE_TAG_LATEST_STABLE: $CI_REGISTRY_IMAGE:latest-stable - DOCKER_BUILDX_URL: https://github.com/docker/buildx/releases/download/v0.6.3/buildx-v0.6.3.linux-amd64 - DOCKER_BUILDX_HASH: 980e6b9655f971991fbbb5fd6cd19f1672386195 - before_script: &before-docker - - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - docker pull $IMAGE_TAG_SLUG || true + before_script: &before-kaniko - export CI_JOB_TIMESTAMP=$(date --utc -Iseconds) - export CI_VCS_REF=$CI_COMMIT_SHORT_SHA - allow_failure: true - script: - - mkdir -p /root/.docker/cli-plugins - - wget "${DOCKER_BUILDX_URL}" -O ~/.docker/cli-plugins/docker-buildx - - echo "${DOCKER_BUILDX_HASH} /root/.docker/cli-plugins/docker-buildx" | sha1sum -c - - chmod +x ~/.docker/cli-plugins/docker-buildx - - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - docker buildx create --name mbuilder --driver docker-container --use - - docker buildx inspect --bootstrap - - docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64/v8 --push --cache-from $IMAGE_TAG_SLUG --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP -t $IMAGE_TAG -t $IMAGE_TAG_SLUG -t $IMAGE_TAG_LATEST . - tags: - - dind + - export IMAGE_TAG=$CI_REGISTRY_IMAGE/$BUILD_ARCH_IMG_SUFFIX:$CI_COMMIT_SHORT_SHA + - export IMAGE_TAG_SLUG=$CI_REGISTRY_IMAGE/$BUILD_ARCH_IMG_SUFFIX:$CI_COMMIT_REF_SLUG + - export IMAGE_TAG_LATEST=$CI_REGISTRY_IMAGE/$BUILD_ARCH_IMG_SUFFIX:latest + - export IMAGE_TAG_LATEST_STABLE=$CI_REGISTRY_IMAGE/$BUILD_ARCH_IMG_SUFFIX:latest-stable + - mkdir -p /kaniko/.docker + - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json + +.kaniko-latest: + extends: .kaniko only: - develop@pleroma/pleroma - -docker-stable: - stage: docker - image: docker:latest - cache: {} - dependencies: [] - variables: *docker-variables - before_script: *before-docker - allow_failure: true script: - - mkdir -p /root/.docker/cli-plugins - - wget "${DOCKER_BUILDX_URL}" -O ~/.docker/cli-plugins/docker-buildx - - echo "${DOCKER_BUILDX_HASH} /root/.docker/cli-plugins/docker-buildx" | sha1sum -c - - chmod +x ~/.docker/cli-plugins/docker-buildx - - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - docker buildx create --name mbuilder --driver docker-container --use - - docker buildx inspect --bootstrap - - docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64/v8 --push --cache-from $IMAGE_TAG_SLUG --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP -t $IMAGE_TAG -t $IMAGE_TAG_SLUG -t $IMAGE_TAG_LATEST_STABLE . - tags: - - dind + - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --custom-platform=$BUILD_ARCH --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP --build-arg ELIXIR_IMG=$ELIXIR_IMG --destination $IMAGE_TAG --destination $IMAGE_TAG_SLUG --destination $IMAGE_TAG_LATEST + +.kaniko-stable: + extends: .kaniko only: - stable@pleroma/pleroma + script: + - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --custom-platform=$BUILD_ARCH --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP --build-arg ELIXIR_IMG=$ELIXIR_IMG --destination $IMAGE_TAG --destination $IMAGE_TAG_SLUG --destination $IMAGE_TAG_LATEST_STABLE -docker-release: - stage: docker - image: docker:latest - cache: {} - dependencies: [] - variables: *docker-variables - before_script: *before-docker - allow_failure: true +.kaniko-release: + extends: .kaniko + only: + - /^release/.*$/@pleroma/pleroma script: + - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --custom-platform=$BUILD_ARCH --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP --build-arg ELIXIR_IMG=$ELIXIR_IMG --destination $IMAGE_TAG --destination $IMAGE_TAG_SLUG + +.kaniko-adhoc: + extends: .kaniko + only: + - /^build-docker/.*$/@pleroma/pleroma script: - - mkdir -p /root/.docker/cli-plugins - - wget "${DOCKER_BUILDX_URL}" -O ~/.docker/cli-plugins/docker-buildx - - echo "${DOCKER_BUILDX_HASH} /root/.docker/cli-plugins/docker-buildx" | sha1sum -c - - chmod +x ~/.docker/cli-plugins/docker-buildx - - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - docker buildx create --name mbuilder --driver docker-container --use - - docker buildx inspect --bootstrap - - docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64/v8 --push --cache-from $IMAGE_TAG_SLUG --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP -t $IMAGE_TAG -t $IMAGE_TAG_SLUG . + - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --custom-platform=$BUILD_ARCH --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP --build-arg ELIXIR_IMG=$ELIXIR_IMG --destination $IMAGE_TAG --destination $IMAGE_TAG_SLUG + +.kaniko:linux/amd64: + variables: + BUILD_ARCH: linux/amd64 + BUILD_ARCH_IMG_SUFFIX: linux-amd64 + ELIXIR_IMG: hexpm/elixir tags: - - dind - only: - - /^release/.*$/@pleroma/pleroma + - amd64 -docker-adhoc: - stage: docker - image: docker:latest +.kaniko:linux/arm64: + variables: + BUILD_ARCH: linux/arm64/v8 + BUILD_ARCH_IMG_SUFFIX: linux-arm64-v8 + ELIXIR_IMG: hexpm/elixir + tags: + - arm + +.kaniko:linux/arm: + variables: + BUILD_ARCH: linux/arm/v7 + BUILD_ARCH_IMG_SUFFIX: linux-arm-v7 + ELIXIR_IMG: git.pleroma.social:5050/pleroma/ci-image/elixir-linux-arm-v7 + tags: + - arm32-specified + +kaniko-latest:linux/amd64: + extends: + - .kaniko-latest + - .kaniko:linux/amd64 + +kaniko-latest:linux/arm64: + extends: + - .kaniko-latest + - .kaniko:linux/arm64 + +kaniko-latest:linux/arm: + extends: + - .kaniko-latest + - .kaniko:linux/arm + +kaniko-stable:linux/amd64: + extends: + - .kaniko-stable + - .kaniko:linux/amd64 + +kaniko-stable:linux/arm64: + extends: + - .kaniko-stable + - .kaniko:linux/arm64 + +kaniko-stable:linux/arm: + extends: + - .kaniko-stable + - .kaniko:linux/arm + +kaniko-release:linux/amd64: + extends: + - .kaniko-release + - .kaniko:linux/amd64 + +kaniko-release:linux/arm64: + extends: + - .kaniko-release + - .kaniko:linux/arm64 + +kaniko-release:linux/arm: + extends: + - .kaniko-release + - .kaniko:linux/arm + +.docker-combine: + stage: docker-combine + image: docker:cli cache: {} - dependencies: [] - variables: *docker-variables - before_script: *before-docker - allow_failure: true + before_script: + - 'BUILD_ARCHES="linux-amd64 linux-arm64-v8 linux-arm-v7"' + - export IMAGE_TAG=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA + - export IMAGE_TAG_SLUG=$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG + - export IMAGE_TAG_LATEST=$CI_REGISTRY_IMAGE:latest + - export IMAGE_TAG_LATEST_STABLE=$CI_REGISTRY_IMAGE:latest-stable + - 'IMAGES=; for arch in $BUILD_ARCHES; do IMAGES="$IMAGES $CI_REGISTRY_IMAGE/$arch:$CI_COMMIT_SHORT_SHA"; done' + - 'IMAGES_SLUG=; for arch in $BUILD_ARCHES; do IMAGES_SLUG="$IMAGES_SLUG $CI_REGISTRY_IMAGE/$arch:$CI_COMMIT_REF_SLUG"; done' + - 'IMAGES_LATEST=; for arch in $BUILD_ARCHES; do IMAGES_LATEST="$IMAGES_LATEST $CI_REGISTRY_IMAGE/$arch:latest"; done' + - 'IMAGES_LATEST_STABLE=; for arch in $BUILD_ARCHES; do IMAGES_LATEST_STABLE="$IMAGES_LATEST_STABLE $CI_REGISTRY_IMAGE/$arch:latest"; done' + - mkdir -p ~/.docker + - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > ~/.docker/config.json + +docker-combine:latest: + extends: .docker-combine + only: + - develop@pleroma/pleroma script: + - 'docker manifest create $IMAGE_TAG $IMAGES' + - 'docker manifest push $IMAGE_TAG' + - 'docker manifest create $IMAGE_TAG_SLUG $IMAGES_SLUG' + - 'docker manifest push $IMAGE_TAG_SLUG' + - 'docker manifest create $IMAGE_TAG_LATEST $IMAGES_LATEST' + - 'docker manifest push $IMAGE_TAG_LATEST' + +docker-combine:stable: + extends: .docker-combine + only: + - stable@pleroma/pleroma script: - - mkdir -p /root/.docker/cli-plugins - - wget "${DOCKER_BUILDX_URL}" -O ~/.docker/cli-plugins/docker-buildx - - echo "${DOCKER_BUILDX_HASH} /root/.docker/cli-plugins/docker-buildx" | sha1sum -c - - chmod +x ~/.docker/cli-plugins/docker-buildx - - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - docker buildx create --name mbuilder --driver docker-container --use - - docker buildx inspect --bootstrap - - docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64/v8 --push --cache-from $IMAGE_TAG_SLUG --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP -t $IMAGE_TAG -t $IMAGE_TAG_SLUG . - tags: - - dind + - 'docker manifest create $IMAGE_TAG $IMAGES' + - 'docker manifest push $IMAGE_TAG' + - 'docker manifest create $IMAGE_TAG_SLUG $IMAGES_SLUG' + - 'docker manifest push $IMAGE_TAG_SLUG' + - 'docker manifest create $IMAGE_TAG_LATEST_STABLE $IMAGES_LATEST_STABLE' + - 'docker manifest push $IMAGE_TAG_LATEST_STABLE' + +docker-combine:release: + extends: .docker-combine only: - - /^build-docker/.*$/@pleroma/pleroma + - /^release/.*$/@pleroma/pleroma + script: + - 'docker manifest create $IMAGE_TAG $IMAGES' + - 'docker manifest push $IMAGE_TAG' + - 'docker manifest create $IMAGE_TAG_SLUG $IMAGES_SLUG' + - 'docker manifest push $IMAGE_TAG_SLUG' diff --git a/.gitlab/merge_request_templates/Default.md b/.gitlab/merge_request_templates/Default.md @@ -0,0 +1,10 @@ +### Checklist +- [ ] Adding a changelog: In the `changelog.d` directory, create a file named `<code>.<type>`. + + `<code>` can be anything, but we recommend using a more or less unique identifier to avoid collisions, such as the branch name. + + `<type>` can be `add`, `change`, `remove`, `fix`, `security` or `skip`. `skip` is only used if there is no user-visible change in the MR (for example, only editing comments in the code). Otherwise, choose a type that corresponds to your change. + + In the file, write the changelog entry. For example, if an MR adds group functionality, we can create a file named `group.add` and write `Add group functionality` in it. + + If one changelog entry is not enough, you may add more. But that might mean you can split it into two MRs. Only use more than one changelog entry if you really need to (for example, when one change in the code fix two different bugs, or when refactoring). diff --git a/.gitlab/merge_request_templates/Release.md b/.gitlab/merge_request_templates/Release.md @@ -1,6 +1,6 @@ ### Release checklist * [ ] Bump version in `mix.exs` -* [ ] Compile a changelog +* [ ] Compile a changelog with the `tools/collect-changelog` script * [ ] Create an MR with an announcement to pleroma.social #### post-merge * [ ] Tag the release on the merge commit diff --git a/.rgignore b/.rgignore @@ -0,0 +1 @@ +priv/static diff --git a/CHANGELOG.md b/CHANGELOG.md @@ -4,17 +4,112 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## Unreleased +## 2.6.2 +### Security +- MRF StealEmojiPolicy: Sanitize shortcodes (thanks to Hazel K for the report + +## 2.6.1 ### Changed +- - Document maximum supported version of Erlang & Elixir ### Added +- [docs] add frontends management documentation ### Fixed +- TwitterAPI: Return proper error when healthcheck is disabled +- Fix eblurhash and elixir-captcha not using system cflags + +## 2.6.0 +### Security +- Preload: Make generated JSON html-safe. It already was html safe because it only consists of config data that is base64 encoded, but this will keep it safe it that ever changes. +- CommonAPI: Prevent users from accessing media of other users by creating a status with reused attachment ID +- Disable XML entity resolution completely to fix a dos vulnerability +### Added +- Support for Image activities, namely from Hubzilla +- Add OAuth scope descriptions +- Allow lang attribute in status text +- OnlyMedia Upload Filter +- Implement MRF policy to reject or delist according to emojis +- (hardening) Add no_new_privs=yes to OpenRC service files +- Implement quotes +- Add unified streaming endpoint + +### Fixed - rel="me" was missing its cache +- MediaProxy responses now return a sandbox CSP header +- Filter context activities using Visibility.visible_for_user? +- UploadedMedia: Add missing disposition_type to Content-Disposition +- fix not being able to fetch flash file from remote instance +- Fix abnormal behaviour when refetching a poll +- Allow non-HTTP(s) URIs in "url" fields for compatibility with "FEP-fffd: Proxy Objects" +- Fix opengraph and twitter card meta tags +- ForceMentionsInContent: fix double mentions for Mastodon/Misskey posts +- OEmbed HTML tags are now filtered +- Restrict attachments to only uploaded files only +- Fix error 404 when deleting status of a banned user +- Fix config ownership in dockerfile to pass restriction test +- Fix user fetch completely broken if featured collection is not in a supported form +- Correctly handle the situation when a poll has both "anyOf" and "oneOf" but one of them being empty +- Fix handling report from a deactivated user +- Prevent using the .json format to bypass authorized fetch mode +- Fix mentioning punycode domains when using Markdown +- Show more informative errors when profile exceeds char limits + +### Removed +- BREAKING: Support for passwords generated with `crypt(3)` (Gnu Social migration artifact) +- remove BBS/SSH feature, replaced by an external bridge. +- Remove a few unused indexes. +- Cleanup OStatus-era user upgrades and ap_enabled indicator +- Deprecate Pleroma's audio scrobbling + +## 2.5.4 + +## Security +- Fix XML External Entity (XXE) loading vulnerability allowing to fetch arbitrary files from the server's filesystem + +## 2.5.3 + +### Security +- Emoji pack loader sanitizes pack names +- Reduced permissions of config files and directories, distros requiring greater permissions like group-read need to pre-create the directories + +## 2.5.5 + +## Security +- Prevent users from accessing media of other users by creating a status with reused attachment ID + +## 2.5.4 + +## Security +- Fix XML External Entity (XXE) loading vulnerability allowing to fetch arbitrary files from the server's filesystem + +## 2.5.3 + +### Security +- Emoji pack loader sanitizes pack names +- Reduced permissions of config files and directories, distros requiring greater permissions like group-read need to pre-create the directories + +## 2.5.2 + +### Security +- `/proxy` endpoint now sets a Content-Security-Policy (sandbox) +- WebSocket endpoint now respects unauthenticated restrictions for streams of public posts +- OEmbed HTML tags are now filtered + +### Changed +- docs: Be more explicit about the level of compatibility of OTP releases +- Set default background worker timeout to 15 minutes + +### Fixed +- Atom/RSS formatting (HTML truncation, published, missing summary) +- Remove `static_fe` pipeline for `/users/:nickname/feed` +- Stop oban from retrying if validating errors occur when processing incoming data +- Make sure object refetching as used by already received polls follows MRF rules ### Removed +- BREAKING: Support for passwords generated with `crypt(3)` (Gnu Social migration artifact) ## 2.5.1 @@ -28,7 +123,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix `block_from_stranger` setting - Fix rel="me" - Docker images will now run properly -- Fix inproper content being cached in report content +- Fix improper content being cached in report content - Notification filter on object content will not operate on the ones that inherently have no content - ZWNJ and double dots in links are parsed properly for Plain-text posts - OTP releases will work on systems with a newer libcrypt @@ -694,7 +789,7 @@ switched to a new configuration mechanism, however it was not officially removed - Rate limiter crashes when there is no explicitly specified ip in the config - 500 errors when no `Accept` header is present if Static-FE is enabled - Instance panel not being updated immediately due to wrong `Cache-Control` headers -- Statuses posted with BBCode/Markdown having unncessary newlines in Pleroma-FE +- Statuses posted with BBCode/Markdown having unnecessary newlines in Pleroma-FE - OTP: Fix some settings not being migrated to in-database config properly - No `Cache-Control` headers on attachment/media proxy requests - Character limit enforcement being off by 1 @@ -1014,10 +1109,10 @@ curl -Lo ./bin/pleroma_ctl 'https://git.pleroma.social/pleroma/pleroma/raw/devel - Reverse Proxy limiting `max_body_length` was incorrectly defined and only checked `Content-Length` headers which may not be sufficient in some circumstances ### Added -- Expiring/ephemeral activites. All activities can have expires_at value set, which controls when they should be deleted automatically. +- Expiring/ephemeral activities. All activities can have expires_at value set, which controls when they should be deleted automatically. - Mastodon API: in post_status, the expires_in parameter lets you set the number of seconds until an activity expires. It must be at least one hour. - Mastodon API: all status JSON responses contain a `pleroma.expires_at` item which states when an activity will expire. The value is only shown to the user who created the activity. To everyone else it's empty. -- Configuration: `ActivityExpiration.enabled` controls whether expired activites will get deleted at the appropriate time. Enabled by default. +- Configuration: `ActivityExpiration.enabled` controls whether expired activities will get deleted at the appropriate time. Enabled by default. - Conversations: Add Pleroma-specific conversation endpoints and status posting extensions. Run the `bump_all_conversations` task again to create the necessary data. - MRF: Support for priming the mediaproxy cache (`Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy`) - MRF: Support for excluding specific domains from Transparency. diff --git a/Dockerfile b/Dockerfile @@ -1,14 +1,16 @@ -ARG ELIXIR_VER=1.11.4 -ARG ERLANG_VER=24.2.1 -ARG ALPINE_VER=3.17.0 +ARG ELIXIR_IMG=hexpm/elixir +ARG ELIXIR_VER=1.13.4 +ARG ERLANG_VER=24.3.4.15 +ARG ALPINE_VER=3.17.5 -FROM hexpm/elixir:${ELIXIR_VER}-erlang-${ERLANG_VER}-alpine-${ALPINE_VER} as build +FROM ${ELIXIR_IMG}:${ELIXIR_VER}-erlang-${ERLANG_VER}-alpine-${ALPINE_VER} as build COPY . . ENV MIX_ENV=prod +ENV VIX_COMPILATION_MODE=PLATFORM_PROVIDED_LIBVIPS -RUN apk add git gcc g++ musl-dev make cmake file-dev &&\ +RUN apk add git gcc g++ musl-dev make cmake file-dev vips-dev &&\ echo "import Config" > config/prod.secret.exs &&\ mix local.hex --force &&\ mix local.rebar --force &&\ @@ -36,7 +38,7 @@ ARG HOME=/opt/pleroma ARG DATA=/var/lib/pleroma RUN apk update &&\ - apk add exiftool ffmpeg imagemagick libmagic ncurses postgresql-client &&\ + apk add exiftool ffmpeg vips libmagic ncurses postgresql-client &&\ adduser --system --shell /bin/false --home ${HOME} pleroma &&\ mkdir -p ${DATA}/uploads &&\ mkdir -p ${DATA}/static &&\ @@ -48,7 +50,7 @@ USER pleroma COPY --from=build --chown=pleroma:0 /release ${HOME} -COPY ./config/docker.exs /etc/pleroma/config.exs +COPY --chown=pleroma --chmod=640 ./config/docker.exs /etc/pleroma/config.exs COPY ./docker-entrypoint.sh ${HOME} EXPOSE 4000 diff --git a/README.md b/README.md @@ -30,7 +30,8 @@ If your platform is not supported, or you just want to be able to edit the sourc - [OpenBSD (fi)](https://docs-develop.pleroma.social/backend/installation/openbsd_fi/) ### OS/Distro packages -Currently Pleroma is packaged for [YunoHost](https://yunohost.org) and [NixOS](https://nixos.org). If you want to package Pleroma for any OS/Distros, we can guide you through the process on our [community channels](#community-channels). If you want to change default options in your Pleroma package, please **discuss it with us first**. +Currently Pleroma is packaged for [YunoHost](https://yunohost.org), [NixOS](https://nixos.org), [Gentoo through GURU](https://gentoo.org/) and [Archlinux through AUR](https://aur.archlinux.org/packages/pleroma). You may find more at <https://repology.org/project/pleroma/versions>. +If you want to package Pleroma for any OS/Distros, we can guide you through the process on our [community channels](#community-channels). If you want to change default options in your Pleroma package, please **discuss it with us first**. ### Docker While we don’t provide docker files, other people have written very good ones. Take a look at <https://github.com/angristan/docker-pleroma> or <https://glitch.sh/sn0w/pleroma-docker>. diff --git a/benchmarks/mix/tasks/pleroma/benchmark.ex b/benchmarks/mix/tasks/pleroma/benchmark.ex @@ -0,0 +1,125 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mix.Tasks.Pleroma.Benchmark do + @shortdoc "Benchmarks" + @moduledoc """ + Benchmark tasks available: + + adapters + render_timeline + search + tag + + MIX_ENV=benchmark mix pleroma.benchmark adapters + """ + + use Mix.Task + import Mix.Pleroma + + def run(["search"]) do + start_pleroma() + + Benchee.run(%{ + "search" => fn -> + Pleroma.Activity.search(nil, "cofe") + end + }) + end + + def run(["tag"]) do + start_pleroma() + + Benchee.run(%{ + "tag" => fn -> + %{"type" => "Create", "tag" => "cofe"} + |> Pleroma.Web.ActivityPub.ActivityPub.fetch_public_activities() + end + }) + end + + def run(["render_timeline", nickname | _] = args) do + start_pleroma() + user = Pleroma.User.get_by_nickname(nickname) + + activities = + %{} + |> Map.put("type", ["Create", "Announce"]) + |> Map.put("blocking_user", user) + |> Map.put("muting_user", user) + |> Map.put("user", user) + |> Map.put("limit", 4096) + |> Pleroma.Web.ActivityPub.ActivityPub.fetch_public_activities() + |> Enum.reverse() + + inputs = %{ + "1 activity" => Enum.take_random(activities, 1), + "10 activities" => Enum.take_random(activities, 10), + "20 activities" => Enum.take_random(activities, 20), + "40 activities" => Enum.take_random(activities, 40), + "80 activities" => Enum.take_random(activities, 80) + } + + inputs = + if Enum.at(args, 2) == "extended" do + Map.merge(inputs, %{ + "200 activities" => Enum.take_random(activities, 200), + "500 activities" => Enum.take_random(activities, 500), + "2000 activities" => Enum.take_random(activities, 2000), + "4096 activities" => Enum.take_random(activities, 4096) + }) + else + inputs + end + + Benchee.run( + %{ + "Standard rendering" => fn activities -> + Pleroma.Web.MastodonAPI.StatusView.render("index.json", %{ + activities: activities, + for: user, + as: :activity + }) + end + }, + inputs: inputs + ) + end + + def run(["adapters"]) do + start_pleroma() + + :ok = + Pleroma.Gun.Conn.open( + "https://httpbin.org/stream-bytes/1500", + :gun_connections + ) + + Process.sleep(1_500) + + Benchee.run( + %{ + "Without conn and without pool" => fn -> + {:ok, %Tesla.Env{}} = + Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], + pool: :no_pool, + receive_conn: false + ) + end, + "Without conn and with pool" => fn -> + {:ok, %Tesla.Env{}} = + Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], receive_conn: false) + end, + "With reused conn and without pool" => fn -> + {:ok, %Tesla.Env{}} = + Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], pool: :no_pool) + end, + "With reused conn and with pool" => fn -> + {:ok, %Tesla.Env{}} = Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500") + end + }, + parallel: 10 + ) + end +end diff --git a/changelog.d/2.6.0-mergeback.skip b/changelog.d/2.6.0-mergeback.skip diff --git a/changelog.d/2.6.1-mergeback.skip b/changelog.d/2.6.1-mergeback.skip diff --git a/changelog.d/3900.change b/changelog.d/3900.change @@ -0,0 +1 @@ +Update to Phoenix 1.7 diff --git a/changelog.d/3987.fix b/changelog.d/3987.fix @@ -0,0 +1 @@ +Remove checking ImageMagick's commands for Pleroma.Upload.Filter.AnalyzeMetadata diff --git a/changelog.d/account-rendering-auth-check.fix b/changelog.d/account-rendering-auth-check.fix @@ -0,0 +1 @@ +Fix authentication check on account rendering when bio is defined diff --git a/changelog.d/add-ipfs-upload.add b/changelog.d/add-ipfs-upload.add @@ -0,0 +1 @@ +Uploader: Add support for uploading attachments using IPFS diff --git a/changelog.d/add-nsfw-mrf.add b/changelog.d/add-nsfw-mrf.add @@ -0,0 +1 @@ +Add NSFW-detecting MRF diff --git a/changelog.d/add-outbox.fix b/changelog.d/add-outbox.fix @@ -0,0 +1 @@ +ap userview: add outbox field. diff --git a/changelog.d/anonymous-exception-else.fix b/changelog.d/anonymous-exception-else.fix @@ -0,0 +1 @@ +Fix #strip_report_status_data diff --git a/changelog.d/api-docs-2.skip b/changelog.d/api-docs-2.skip diff --git a/changelog.d/api-docs.skip b/changelog.d/api-docs.skip diff --git a/changelog.d/atom-leak.skip b/changelog.d/atom-leak.skip diff --git a/changelog.d/authorize-interaction.add b/changelog.d/authorize-interaction.add @@ -0,0 +1 @@ +Support /authorize-interaction route used by Mastodon +\ No newline at end of file diff --git a/changelog.d/backups-follows.add b/changelog.d/backups-follows.add @@ -0,0 +1 @@ +Include following/followers in backups +\ No newline at end of file diff --git a/changelog.d/bad_inbox_request.change b/changelog.d/bad_inbox_request.change @@ -0,0 +1 @@ +Invalid activities delivered to the inbox will be rejected with a 400 Bad Request diff --git a/changelog.d/bandit.change b/changelog.d/bandit.change @@ -0,0 +1 @@ +Support Bandit as an alternative to Cowboy for the HTTP server. diff --git a/changelog.d/bare_uri_test.skip b/changelog.d/bare_uri_test.skip diff --git a/changelog.d/benchee.skip b/changelog.d/benchee.skip diff --git a/changelog.d/blurhash.change b/changelog.d/blurhash.change @@ -0,0 +1 @@ +Replace eblurhash with rinpatch_blurhash. This also removes a dependency on ImageMagick. diff --git a/changelog.d/bookmark-folders.add b/changelog.d/bookmark-folders.add @@ -0,0 +1 @@ +Allow to group bookmarks in folders +\ No newline at end of file diff --git a/changelog.d/bookmark-folders.skip b/changelog.d/bookmark-folders.skip diff --git a/changelog.d/bugfix-ccworks.fix b/changelog.d/bugfix-ccworks.fix @@ -0,0 +1 @@ +Fix federation with Convergence AP Bridge +\ No newline at end of file diff --git a/changelog.d/build-release-with-local-libvips.skip b/changelog.d/build-release-with-local-libvips.skip diff --git a/changelog.d/bump-elixir.change b/changelog.d/bump-elixir.change @@ -0,0 +1 @@ +Elixir 1.13 is the minimum required version. diff --git a/changelog.d/card-endpoint.remove b/changelog.d/card-endpoint.remove @@ -0,0 +1 @@ +Mastodon API: Remove deprecated GET /api/v1/statuses/:id/card endpoint https://github.com/mastodon/mastodon/pull/11213 diff --git a/changelog.d/card-image-description.add b/changelog.d/card-image-description.add @@ -0,0 +1 @@ +Include image description in status media cards +\ No newline at end of file diff --git a/changelog.d/chat-attachment-empty-array.fix b/changelog.d/chat-attachment-empty-array.fix @@ -0,0 +1 @@ +ChatMessage: Tolerate attachment field set to an empty array diff --git a/changelog.d/config-stat-symlink.fix b/changelog.d/config-stat-symlink.fix @@ -0,0 +1 @@ +- Config: Check the permissions of the linked file instead of the symlink diff --git a/changelog.d/content-length.fix b/changelog.d/content-length.fix @@ -0,0 +1 @@ +MediaProxy was setting the content-length header which is not permitted by RFC9112§6.2 when we are chunking the reply as it conflicts with the existence of the transfer-encoding header. diff --git a/changelog.d/deprecations.skip b/changelog.d/deprecations.skip @@ -0,0 +1 @@ + diff --git a/changelog.d/deprecations2.skip b/changelog.d/deprecations2.skip diff --git a/changelog.d/deps-bump-2024-01-25.skip b/changelog.d/deps-bump-2024-01-25.skip diff --git a/changelog.d/description-meilisearch-type.skip b/changelog.d/description-meilisearch-type.skip diff --git a/changelog.d/dialyzer.skip b/changelog.d/dialyzer.skip diff --git a/changelog.d/dialyzer2.skip b/changelog.d/dialyzer2.skip diff --git a/changelog.d/dialyzer3.skip b/changelog.d/dialyzer3.skip diff --git a/changelog.d/dialyzer4.skip b/changelog.d/dialyzer4.skip diff --git a/changelog.d/digest_emails.fix b/changelog.d/digest_emails.fix @@ -0,0 +1 @@ +Fix the processing of email digest jobs. diff --git a/changelog.d/doc-fix.skip b/changelog.d/doc-fix.skip diff --git a/changelog.d/docs-max-elixir-erlang.change b/changelog.d/docs-max-elixir-erlang.change @@ -0,0 +1 @@ +- Document maximum supported version of Erlang & Elixir diff --git a/changelog.d/emoji-download-paginate.fix b/changelog.d/emoji-download-paginate.fix @@ -0,0 +1 @@ +When downloading remote emojis packs, account for pagination +\ No newline at end of file diff --git a/changelog.d/emoji-use-v1.fix b/changelog.d/emoji-use-v1.fix @@ -0,0 +1 @@ +Make remote emoji packs API use specifically the V1 URL. Akkoma does not understand it without V1, and it works either way with normal pleroma, so no reason to not do this +\ No newline at end of file diff --git a/changelog.d/exile-bsds.skip b/changelog.d/exile-bsds.skip diff --git a/changelog.d/exile-freebsd.skip b/changelog.d/exile-freebsd.skip diff --git a/changelog.d/exile-macos.skip b/changelog.d/exile-macos.skip diff --git a/changelog.d/exile.skip b/changelog.d/exile.skip diff --git a/changelog.d/familiar-followers.add b/changelog.d/familiar-followers.add @@ -0,0 +1 @@ +Implement `/api/v1/accounts/familiar_followers` +\ No newline at end of file diff --git a/changelog.d/favicon.add b/changelog.d/favicon.add @@ -0,0 +1 @@ +Add support for configuring favicon, embed favicon and PWA manifest in server-generated meta diff --git a/changelog.d/federation_status-access.change b/changelog.d/federation_status-access.change @@ -0,0 +1 @@ +- Make `/api/v1/pleroma/federation_status` publicly available diff --git a/changelog.d/federator-modules.remove b/changelog.d/federator-modules.remove @@ -0,0 +1 @@ +Removed support for multiple federator modules as we only support ActivityPub diff --git a/changelog.d/federator.skip b/changelog.d/federator.skip diff --git a/changelog.d/fep-2c59.add b/changelog.d/fep-2c59.add @@ -0,0 +1 @@ +Implement FEP-2c59, add "webfinger" to user actor +\ No newline at end of file diff --git a/changelog.d/ffmpeg-limiter.add b/changelog.d/ffmpeg-limiter.add @@ -0,0 +1 @@ +Framegrabs with ffmpeg will execute with a 5 second timeout and cache the URLs of failures with a TTL of 15 minutes to prevent excessive retries. diff --git a/changelog.d/finch_redirects.fix b/changelog.d/finch_redirects.fix @@ -0,0 +1 @@ +Following HTTP Redirects when the HTTP Adapter is Finch diff --git a/changelog.d/fix-bookmark-folder-tests.skip b/changelog.d/fix-bookmark-folder-tests.skip diff --git a/changelog.d/fix-dockerfile.skip b/changelog.d/fix-dockerfile.skip diff --git a/changelog.d/fix-duplicate-inbox-deliveries.fix b/changelog.d/fix-duplicate-inbox-deliveries.fix diff --git a/changelog.d/fix-otp-comparison.skip b/changelog.d/fix-otp-comparison.skip diff --git a/changelog.d/fix-tests.skip b/changelog.d/fix-tests.skip diff --git a/changelog.d/fix-webfinger-spoofing.security b/changelog.d/fix-webfinger-spoofing.security @@ -0,0 +1 @@ +Fix webfinger spoofing. diff --git a/changelog.d/force-mention-mrf.add b/changelog.d/force-mention-mrf.add @@ -0,0 +1 @@ +Add ForceMention MRF +\ No newline at end of file diff --git a/changelog.d/framegrabs.fix b/changelog.d/framegrabs.fix @@ -0,0 +1 @@ +Video framegrabs were not working correctly after the change to use Exile to execute ffmpeg diff --git a/changelog.d/frontend-management.add b/changelog.d/frontend-management.add @@ -0,0 +1 @@ +[docs] add frontends management documentation diff --git a/changelog.d/generate-unset-user-keys-migration.skip b/changelog.d/generate-unset-user-keys-migration.skip diff --git a/changelog.d/group-actor.add b/changelog.d/group-actor.add @@ -0,0 +1 @@ +Implement group actors diff --git a/changelog.d/gun-logs.skip b/changelog.d/gun-logs.skip diff --git a/changelog.d/gun_pool.fix b/changelog.d/gun_pool.fix @@ -0,0 +1 @@ +Fix logic error in Gun connection pooling which prevented retries even when the worker was launched with retry = true diff --git a/changelog.d/gun_pool2.fix b/changelog.d/gun_pool2.fix @@ -0,0 +1 @@ +Connection pool errors when publishing an activity is a soft-error that will be retried shortly. diff --git a/changelog.d/gun_pool3.skip b/changelog.d/gun_pool3.skip diff --git a/changelog.d/handle_object_fetch_failures.change b/changelog.d/handle_object_fetch_failures.change @@ -0,0 +1 @@ +Remote object fetch failures will prevent the object fetch job from retrying if the object request returns 401, 403, 404, 410, or exceeds the maximum thread depth. diff --git a/changelog.d/healthcheck-disabled-error.fix b/changelog.d/healthcheck-disabled-error.fix @@ -0,0 +1 @@ +TwitterAPI: Return proper error when healthcheck is disabled diff --git a/changelog.d/instance-contact-account.add b/changelog.d/instance-contact-account.add @@ -0,0 +1 @@ +Add contact account to InstanceView +\ No newline at end of file diff --git a/changelog.d/instance-defdelegates.skip b/changelog.d/instance-defdelegates.skip diff --git a/changelog.d/instance-rules.add b/changelog.d/instance-rules.add @@ -0,0 +1 @@ +Add instance rules +\ No newline at end of file diff --git a/changelog.d/instance-v2.add b/changelog.d/instance-v2.add @@ -0,0 +1 @@ +Implement /api/v2/instance route +\ No newline at end of file diff --git a/changelog.d/instance-v2.skip b/changelog.d/instance-v2.skip diff --git a/changelog.d/issue-3241.fix b/changelog.d/issue-3241.fix @@ -0,0 +1 @@ +Handle cases when users.inbox is nil. diff --git a/changelog.d/last_status_at.change b/changelog.d/last_status_at.change @@ -0,0 +1 @@ +- Change AccountView `last_status_at` from a datetime to a date (as done in Mastodon 3.1.0) +\ No newline at end of file diff --git a/changelog.d/link-verification.add b/changelog.d/link-verification.add @@ -0,0 +1 @@ +Verify profile link ownership with rel="me" +\ No newline at end of file diff --git a/changelog.d/loading-order-test-fix.skip b/changelog.d/loading-order-test-fix.skip diff --git a/changelog.d/local-webfinger.fix b/changelog.d/local-webfinger.fix @@ -0,0 +1 @@ +Use correct domain for fqn and InstanceView +\ No newline at end of file diff --git a/changelog.d/mark-read.fix b/changelog.d/mark-read.fix @@ -0,0 +1 @@ +The query for marking notifications as read has been simplified diff --git a/changelog.d/mastodon_api_v2.add b/changelog.d/mastodon_api_v2.add @@ -0,0 +1 @@ +Add new parameters to /api/v2/instance: configuration[accounts][max_pinned_statuses] and configuration[statuses][characters_reserved_per_url] diff --git a/changelog.d/mastodon_directory.fix b/changelog.d/mastodon_directory.fix @@ -0,0 +1 @@ +Mastodon API /api/v1/directory: Fix listing directory contents when not authenticated diff --git a/changelog.d/meilisearch.add b/changelog.d/meilisearch.add @@ -0,0 +1 @@ +Add meilisearch, make search engines pluggable diff --git a/changelog.d/memleak.fix b/changelog.d/memleak.fix @@ -0,0 +1 @@ +Fix a memory leak caused by Websocket connections that would not enter a state where a full garbage collection run could be triggered. diff --git a/changelog.d/mergeback-2.6.2.skip b/changelog.d/mergeback-2.6.2.skip diff --git a/changelog.d/migration-fix.skip b/changelog.d/migration-fix.skip @@ -0,0 +1 @@ + diff --git a/changelog.d/missing-mrfs.add b/changelog.d/missing-mrfs.add @@ -0,0 +1 @@ +Startup detection for configured MRF modules that are missing or incorrectly defined diff --git a/changelog.d/mrf-regex-error.fix b/changelog.d/mrf-regex-error.fix @@ -0,0 +1 @@ +MRF: Log sensible error for subdomains_regex diff --git a/changelog.d/mrf-steal-emoji-extname.fix b/changelog.d/mrf-steal-emoji-extname.fix @@ -0,0 +1 @@ +MRF.StealEmojiPolicy: Properly add fallback extension to filenames missing one diff --git a/changelog.d/mrf_hashtags.fix b/changelog.d/mrf_hashtags.fix @@ -0,0 +1 @@ +Federated timeline removal of hashtags via MRF HashtagPolicy diff --git a/changelog.d/nil-content-map.fix b/changelog.d/nil-content-map.fix @@ -0,0 +1 @@ +Support objects with a null contentMap (firefish) diff --git a/changelog.d/no-async-with-clear-config.skip b/changelog.d/no-async-with-clear-config.skip diff --git a/changelog.d/notifications-index.fix b/changelog.d/notifications-index.fix @@ -0,0 +1 @@ +Fix notifications query which was not using the index properly diff --git a/changelog.d/notifications.fix b/changelog.d/notifications.fix @@ -0,0 +1 @@ +Notifications: improve performance by filtering on users table instead of activities table +\ No newline at end of file diff --git a/changelog.d/oauth-nickname.skip b/changelog.d/oauth-nickname.skip @@ -0,0 +1 @@ +Use User.full_nickname/1 in oauth html template +\ No newline at end of file diff --git a/changelog.d/opengraph-rich-media-proxy.add b/changelog.d/opengraph-rich-media-proxy.add @@ -0,0 +1 @@ +Add media proxy to opengraph rich media cards diff --git a/changelog.d/optimistic-inbox.change b/changelog.d/optimistic-inbox.change @@ -0,0 +1 @@ +Optimistic Inbox reduces the processing overhead of incoming activities without instantly verifiable signatures. diff --git a/changelog.d/otp26.add b/changelog.d/otp26.add @@ -0,0 +1 @@ +Support for Erlang OTP 26 diff --git a/changelog.d/postgres-jit.change b/changelog.d/postgres-jit.change @@ -0,0 +1 @@ +Disable jit by default for PostgreSQL diff --git a/changelog.d/prioritize-direct-recipients.add b/changelog.d/prioritize-direct-recipients.add @@ -0,0 +1 @@ +- Prioritize mentioned recipients (i.e., those that are not just followers) when federating. diff --git a/changelog.d/promex.change b/changelog.d/promex.change @@ -0,0 +1 @@ +Change the prometheus library to PromEx. diff --git a/changelog.d/public-polls.add b/changelog.d/public-polls.add @@ -0,0 +1 @@ +Expose nonAnonymous field from Smithereen polls +\ No newline at end of file diff --git a/changelog.d/publisher_discard.change b/changelog.d/publisher_discard.change @@ -0,0 +1 @@ +Activity publishing failures will prevent the job from retrying if the publishing request returns a 403 or 410 diff --git a/changelog.d/publisher_log.change b/changelog.d/publisher_log.change @@ -0,0 +1 @@ +Publisher errors will now emit logs indicating the inbox that was not available for delivery. diff --git a/changelog.d/qtfaststart.fix b/changelog.d/qtfaststart.fix @@ -0,0 +1 @@ +MediaProxy Preview failures prevented when encountering certain video files diff --git a/changelog.d/quotes-count.skip b/changelog.d/quotes-count.skip diff --git a/changelog.d/reachability.change b/changelog.d/reachability.change @@ -0,0 +1 @@ +Reduce the reachability timestamp update to a single upsert query diff --git a/changelog.d/realpath-over-readlink.fix b/changelog.d/realpath-over-readlink.fix @@ -0,0 +1 @@ +pleroma_ctl: Use realpath(1) instead of readlink(1) diff --git a/changelog.d/receiverworker-error-handling.fix b/changelog.d/receiverworker-error-handling.fix @@ -0,0 +1 @@ +ReceiverWorker: Make sure non-{:ok, _} is returned as {:error, …} +\ No newline at end of file diff --git a/changelog.d/remote-fetcher-error.skip b/changelog.d/remote-fetcher-error.skip diff --git a/changelog.d/reply-to-deleted.change b/changelog.d/reply-to-deleted.change @@ -0,0 +1 @@ +A 422 error is returned when attempting to reply to a deleted status diff --git a/changelog.d/rich_media.fix b/changelog.d/rich_media.fix @@ -0,0 +1 @@ +Rich Media Preview cache eviction when the activity is updated. diff --git a/changelog.d/rich_media_refactor.change b/changelog.d/rich_media_refactor.change @@ -0,0 +1 @@ +Refactored Rich Media to cache the content in the database. Fetching operations that could block status rendering have been eliminated. diff --git a/changelog.d/rich_media_tests.skip b/changelog.d/rich_media_tests.skip diff --git a/changelog.d/richmediattl.fix b/changelog.d/richmediattl.fix @@ -0,0 +1 @@ +Parsing of RichMedia TTLs for Amazon URLs when query parameters are nil diff --git a/changelog.d/scrobble-url.add b/changelog.d/scrobble-url.add @@ -0,0 +1 @@ +Adds the capability to add a URL to a scrobble (optional field) diff --git a/changelog.d/scrubbers-html4-GtS.add b/changelog.d/scrubbers-html4-GtS.add @@ -0,0 +1 @@ +- scrubbers/default: Add more formatting elements from HTML4 / GoToSocial (acronym, bdo, big, cite, dfn, ins, kbd, q, samp, s, tt, var, wbr) diff --git a/changelog.d/search-healthcheck.add b/changelog.d/search-healthcheck.add @@ -0,0 +1 @@ +Monitoring of search backend health to control the processing of jobs in the search indexing Oban queue diff --git a/changelog.d/show-reposter-replies.add b/changelog.d/show-reposter-replies.add @@ -0,0 +1 @@ +Display reposted replies with exclude_replies: true +\ No newline at end of file diff --git a/changelog.d/status-notification-type.add b/changelog.d/status-notification-type.add @@ -0,0 +1 @@ +Add "status" notification type +\ No newline at end of file diff --git a/changelog.d/system-cflags.fix b/changelog.d/system-cflags.fix @@ -0,0 +1 @@ +- Fix eblurhash and elixir-captcha not using system cflags diff --git a/changelog.d/tesla.deps b/changelog.d/tesla.deps @@ -0,0 +1 @@ +Update Tesla HTTP client middleware to 1.8.0 diff --git a/changelog.d/test-improvements.skip b/changelog.d/test-improvements.skip diff --git a/changelog.d/testsecrets.skip b/changelog.d/testsecrets.skip diff --git a/changelog.d/transient-validators-defaults.change b/changelog.d/transient-validators-defaults.change @@ -0,0 +1 @@ +Set default values on validators for transient objects (attachment, poll options) diff --git a/changelog.d/typo.skip b/changelog.d/typo.skip diff --git a/changelog.d/vips.change b/changelog.d/vips.change @@ -0,0 +1 @@ +Change mediaproxy previews to use vips to generate thumbnails instead of ImageMagick diff --git a/changelog.d/web_push.fix b/changelog.d/web_push.fix @@ -0,0 +1 @@ +Fix web push notifications not successfully delivering diff --git a/changelog.d/web_push_filtered.fix b/changelog.d/web_push_filtered.fix @@ -0,0 +1 @@ +Web Push notifications are no longer generated for muted/blocked threads and users. diff --git a/changelog.d/webfinger-validation.fix b/changelog.d/webfinger-validation.fix @@ -0,0 +1 @@ +Fix validate_webfinger when running a different domain for Webfinger +\ No newline at end of file diff --git a/changelog.d/websocket-refactor.change b/changelog.d/websocket-refactor.change @@ -0,0 +1 @@ +Refactor the Mastodon /api/v1/streaming websocket handler to use Phoenix.Socket.Transport diff --git a/ci/Dockerfile b/ci/Dockerfile @@ -1,8 +0,0 @@ -FROM elixir:1.11.4 - -# Single RUN statement, otherwise intermediate images are created -# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run -RUN apt-get update &&\ - apt-get install -y libmagic-dev cmake libimage-exiftool-perl ffmpeg &&\ - mix local.hex --force &&\ - mix local.rebar --force diff --git a/ci/build_and_push.sh b/ci/build_and_push.sh @@ -1 +0,0 @@ -docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t git.pleroma.social:5050/pleroma/pleroma/ci-base:latest --push . diff --git a/ci/elixir-1.12/Dockerfile b/ci/elixir-1.12/Dockerfile @@ -0,0 +1,8 @@ +FROM elixir:1.12.3 + +# Single RUN statement, otherwise intermediate images are created +# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run +RUN apt-get update &&\ + apt-get install -y libmagic-dev cmake libimage-exiftool-perl ffmpeg &&\ + mix local.hex --force &&\ + mix local.rebar --force diff --git a/ci/elixir-1.12/build_and_push.sh b/ci/elixir-1.12/build_and_push.sh @@ -0,0 +1 @@ +docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t git.pleroma.social:5050/pleroma/pleroma/ci-base:elixir-1.12 --push . diff --git a/ci/elixir-1.13/Dockerfile b/ci/elixir-1.13/Dockerfile @@ -0,0 +1,8 @@ +FROM elixir:1.13.4-otp-24 + +# Single RUN statement, otherwise intermediate images are created +# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run +RUN apt-get update &&\ + apt-get install -y libmagic-dev cmake libimage-exiftool-perl ffmpeg &&\ + mix local.hex --force &&\ + mix local.rebar --force diff --git a/ci/elixir-1.13/build_and_push.sh b/ci/elixir-1.13/build_and_push.sh @@ -0,0 +1 @@ +docker buildx build --platform linux/amd64,linux/arm64 -t git.pleroma.social:5050/pleroma/pleroma/ci-base:elixir-1.13.4-otp-24 --push . diff --git a/ci/elixir-1.15-otp25/Dockerfile b/ci/elixir-1.15-otp25/Dockerfile @@ -0,0 +1,8 @@ +FROM elixir:1.15.7-otp-25 + +# Single RUN statement, otherwise intermediate images are created +# https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run +RUN apt-get update &&\ + apt-get install -y libmagic-dev cmake libimage-exiftool-perl ffmpeg &&\ + mix local.hex --force &&\ + mix local.rebar --force diff --git a/ci/elixir-1.15-otp25/build_and_push.sh b/ci/elixir-1.15-otp25/build_and_push.sh @@ -0,0 +1 @@ +docker buildx build --platform linux/amd64,linux/arm64 -t git.pleroma.social:5050/pleroma/pleroma/ci-base:elixir-1.15-otp25 --push . diff --git a/ci/postgres-with-rum-13/Dockerfile b/ci/postgres-with-rum-13/Dockerfile @@ -0,0 +1,3 @@ +FROM postgres:13-bullseye + +RUN apt-get update && apt-get install -y postgresql-13-rum/bullseye-pgdg diff --git a/ci/postgres-with-rum-13/build_and_push.sh b/ci/postgres-with-rum-13/build_and_push.sh @@ -0,0 +1 @@ +docker buildx build --platform linux/amd64,linux/arm64 -t git.pleroma.social:5050/pleroma/pleroma/postgres-with-rum-13:latest --push . diff --git a/config/benchmark.exs b/config/benchmark.exs @@ -14,7 +14,7 @@ config :pleroma, Pleroma.Captcha, method: Pleroma.Captcha.Mock # Print only warnings and errors during test -config :logger, level: :warn +config :logger, level: :warning config :pleroma, :auth, oauth_consumer_strategies: [] @@ -79,6 +79,10 @@ IO.puts("RUM enabled: #{rum_enabled}") config :pleroma, Pleroma.ReverseProxy.Client, Pleroma.ReverseProxy.ClientMock +config :pleroma, Pleroma.Application, + background_migrators: false, + streamer_registry: false + if File.exists?("./config/benchmark.secret.exs") do import_config "benchmark.secret.exs" else diff --git a/config/config.exs b/config/config.exs @@ -82,6 +82,10 @@ config :ex_aws, :s3, # region: "us-east-1", # may be required for Amazon AWS scheme: "https://" +config :pleroma, Pleroma.Uploaders.IPFS, + post_gateway_url: nil, + get_gateway_url: nil + config :pleroma, :emoji, shortcode_globs: ["/emoji/custom/**/*.png"], pack_extensions: [".png", ".gif"], @@ -110,32 +114,11 @@ config :pleroma, :uri_schemes, "xmpp" ] -websocket_config = [ - path: "/websocket", - serializer: [ - {Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"}, - {Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"} - ], - timeout: 60_000, - transport_log: false, - compress: false -] - # Configures the endpoint config :pleroma, Pleroma.Web.Endpoint, url: [host: "localhost"], http: [ - ip: {127, 0, 0, 1}, - dispatch: [ - {:_, - [ - {"/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, []}, - {"/websocket", Phoenix.Endpoint.CowboyWebSocket, - {Phoenix.Transports.WebSocket, - {Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, websocket_config}}}, - {:_, Phoenix.Endpoint.Cowboy2Handler, {Pleroma.Web.Endpoint, []}} - ]} - ] + ip: {127, 0, 0, 1} ], protocol: "https", secret_key_base: "aK4Abxf29xU9TTDKre9coZPUgevcVCFQJe/5xP/7Lt4BEif6idBIbjupVbOrbKxl", @@ -185,6 +168,7 @@ config :pleroma, :instance, short_description: "", background_image: "/images/city.jpg", instance_thumbnail: "/instance/thumbnail.jpeg", + favicon: "/favicon.png", limit: 5_000, description_limit: 5_000, remote_limit: 100_000, @@ -205,9 +189,6 @@ config :pleroma, :instance, federating: true, federation_incoming_replies_max_depth: 100, federation_reachability_timeout_days: 7, - federation_publisher_modules: [ - Pleroma.Web.ActivityPub.Publisher - ], allow_relay: true, public: true, quarantined_instances: [], @@ -360,6 +341,8 @@ config :pleroma, :manifest, icons: [ %{ src: "/static/logo.svg", + sizes: "144x144", + purpose: "any", type: "image/svg+xml" } ], @@ -408,6 +391,12 @@ config :pleroma, :mrf_keyword, federated_timeline_removal: [], replace: [] +config :pleroma, :mrf_emoji, + remove_url: [], + remove_shortcode: [], + federated_timeline_removal_url: [], + federated_timeline_removal_shortcode: [] + config :pleroma, :mrf_hashtag, sensitive: ["nsfw"], reject: [], @@ -426,8 +415,21 @@ config :pleroma, :mrf_object_age, threshold: 604_800, actions: [:delist, :strip_followers] +config :pleroma, :mrf_nsfw_api, + url: "http://127.0.0.1:5000/", + threshold: 0.7, + mark_sensitive: true, + unlist: false, + reject: false + config :pleroma, :mrf_follow_bot, follower_nickname: nil +config :pleroma, :mrf_inline_quote, template: "<bdi>RT:</bdi> {url}" + +config :pleroma, :mrf_force_mention, + mention_parent: true, + mention_quoted: true + config :pleroma, :rich_media, enabled: true, ignore_hosts: [], @@ -437,7 +439,11 @@ config :pleroma, :rich_media, Pleroma.Web.RichMedia.Parsers.OEmbed ], failure_backoff: 60_000, - ttl_setters: [Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl] + ttl_setters: [ + Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl, + Pleroma.Web.RichMedia.Parser.TTL.Opengraph + ], + max_body: 5_000_000 config :pleroma, :media_proxy, enabled: false, @@ -583,7 +589,9 @@ config :pleroma, Oban, remote_fetcher: 2, attachments_cleanup: 1, new_users_digest: 1, - mute_expire: 5 + mute_expire: 5, + search_indexing: [limit: 10, paused: true], + rich_media_expiration: 2 ], plugins: [Oban.Plugins.Pruner], crontab: [ @@ -594,7 +602,8 @@ config :pleroma, Oban, config :pleroma, :workers, retries: [ federator_incoming: 5, - federator_outgoing: 5 + federator_outgoing: 5, + search_indexing: 2 ] config :pleroma, Pleroma.Formatter, @@ -617,9 +626,6 @@ config :pleroma, :ldap, base: System.get_env("LDAP_BASE") || "dc=example,dc=com", uid: System.get_env("LDAP_UID") || "cn" -config :esshd, - enabled: false - oauth_consumer_strategies = System.get_env("OAUTH_CONSUMER_STRATEGIES") |> to_string() @@ -655,12 +661,26 @@ config :pleroma, Pleroma.Emails.UserEmail, config :pleroma, Pleroma.Emails.NewUsersDigestEmail, enabled: false -config :prometheus, Pleroma.Web.Endpoint.MetricsExporter, - enabled: false, - auth: false, - ip_whitelist: [], - path: "/api/pleroma/app_metrics", - format: :text +config :pleroma, Pleroma.PromEx, + disabled: false, + manual_metrics_start_delay: :no_delay, + drop_metrics_groups: [], + grafana: [ + host: System.get_env("GRAFANA_HOST", "http://localhost:3000"), + auth_token: System.get_env("GRAFANA_TOKEN"), + upload_dashboards_on_start: false, + folder_name: "BEAM", + annotate_app_lifecycle: true + ], + metrics_server: [ + port: 4021, + path: "/metrics", + protocol: :http, + pool_size: 5, + cowboy_opts: [], + auth_strategy: :none + ], + datasource: "Prometheus" config :pleroma, Pleroma.ScheduledActivity, daily_user_limit: 25, @@ -795,7 +815,7 @@ config :pleroma, :modules, runtime_dir: "instance/modules" config :pleroma, configurable_from_database: false config :pleroma, Pleroma.Repo, - parameters: [gin_fuzzy_search_limit: "500"], + parameters: [gin_fuzzy_search_limit: "500", jit: "off"], prepare: :unnamed config :pleroma, :connections_pool, @@ -855,7 +875,11 @@ config :pleroma, :restrict_unauthenticated, config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: false config :pleroma, :mrf, - policies: [Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy, Pleroma.Web.ActivityPub.MRF.TagPolicy], + policies: [ + Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy, + Pleroma.Web.ActivityPub.MRF.TagPolicy, + Pleroma.Web.ActivityPub.MRF.InlineQuotePolicy + ], transparency: true, transparency_exclusions: [] @@ -874,15 +898,34 @@ config :pleroma, Pleroma.Web.Auth.Authenticator, Pleroma.Web.Auth.PleromaAuthent config :pleroma, Pleroma.User.Backup, purge_after_days: 30, limit_days: 7, - dir: nil + dir: nil, + process_wait_time: 30_000, + process_chunk_size: 100 config :pleroma, ConcurrentLimiter, [ {Pleroma.Web.RichMedia.Helpers, [max_running: 5, max_waiting: 5]}, - {Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy, [max_running: 5, max_waiting: 5]} + {Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy, [max_running: 5, max_waiting: 5]}, + {Pleroma.Search, [max_running: 30, max_waiting: 50]} ] config :pleroma, Pleroma.Web.WebFinger, domain: nil, update_nickname_on_user_fetch: true +config :pleroma, Pleroma.Search, module: Pleroma.Search.DatabaseSearch + +config :pleroma, Pleroma.Search.Meilisearch, + url: "http://127.0.0.1:7700/", + private_key: nil, + initial_indexing_chunk_size: 100_000 + +config :pleroma, Pleroma.Application, + background_migrators: true, + internal_fetch: true, + load_custom_modules: true, + max_restarts: 3, + streamer_registry: true + +config :pleroma, Pleroma.Uploaders.Uploader, timeout: 30_000 + # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. import_config "#{Mix.env()}.exs" diff --git a/config/description.exs b/config/description.exs @@ -138,6 +138,31 @@ config :pleroma, :config_description, [ }, %{ group: :pleroma, + key: Pleroma.Uploaders.IPFS, + type: :group, + description: "IPFS uploader-related settings", + children: [ + %{ + key: :get_gateway_url, + type: :string, + description: "GET Gateway URL", + suggestions: [ + "https://ipfs.mydomain.com/{CID}", + "https://{CID}.ipfs.mydomain.com/" + ] + }, + %{ + key: :post_gateway_url, + type: :string, + description: "POST Gateway URL", + suggestions: [ + "http://localhost:5001/" + ] + } + ] + }, + %{ + group: :pleroma, key: Pleroma.Uploaders.S3, type: :group, description: "S3 uploader-related settings", @@ -567,6 +592,20 @@ config :pleroma, :config_description, [ ] }, %{ + key: :status_page, + type: :string, + description: "A page where people can see the status of the server during an outage", + suggestions: [ + "https://status.pleroma.example.org" + ] + }, + %{ + key: :contact_username, + type: :string, + description: "Instance owner username", + suggestions: ["admin"] + }, + %{ key: :limit, type: :integer, description: "Posts character limit (CW/Subject included in the counter)", @@ -988,6 +1027,12 @@ config :pleroma, :config_description, [ suggestions: ["/instance/thumbnail.jpeg"] }, %{ + key: :favicon, + type: {:string, :image}, + description: "Favicon of the instance", + suggestions: ["/favicon.png"] + }, + %{ key: :show_reactions, type: :boolean, description: "Let favourites and emoji reactions be viewed through the API." @@ -1181,7 +1226,7 @@ config :pleroma, :config_description, [ type: [:atom, :tuple, :module], description: "Where logs will be sent, :console - send logs to stdout, { ExSyslogger, :ex_syslogger } - to syslog, Quack.Logger - to Slack.", - suggestions: [:console, {ExSyslogger, :ex_syslogger}, Quack.Logger] + suggestions: [:console, {ExSyslogger, :ex_syslogger}] } ] }, @@ -1196,7 +1241,7 @@ config :pleroma, :config_description, [ key: :level, type: {:dropdown, :atom}, description: "Log level", - suggestions: [:debug, :info, :warn, :error] + suggestions: [:debug, :info, :warning, :error] }, %{ key: :ident, @@ -1229,7 +1274,7 @@ config :pleroma, :config_description, [ key: :level, type: {:dropdown, :atom}, description: "Log level", - suggestions: [:debug, :info, :warn, :error] + suggestions: [:debug, :info, :warning, :error] }, %{ key: :format, @@ -1438,7 +1483,7 @@ config :pleroma, :config_description, [ label: "Subject line behavior", type: :string, description: "Allows changing the default behaviour of subject lines in replies. - `email`: copy and preprend re:, as in email, + `email`: copy and prepend re:, as in email, `masto`: copy verbatim, as in Mastodon, `noop`: don't copy the subject.", suggestions: ["email", "masto", "noop"] @@ -1931,7 +1976,7 @@ config :pleroma, :config_description, [ key: :log, type: {:dropdown, :atom}, description: "Logs verbose mode", - suggestions: [false, :error, :warn, :info, :debug] + suggestions: [false, :error, :warning, :info, :debug] }, %{ key: :queues, @@ -2629,45 +2674,6 @@ config :pleroma, :config_description, [ ] }, %{ - group: :esshd, - label: "ESSHD", - type: :group, - description: - "Before enabling this you must add :esshd to mix.exs as one of the extra_applications " <> - "and generate host keys in your priv dir with ssh-keygen -m PEM -N \"\" -b 2048 -t rsa -f ssh_host_rsa_key", - children: [ - %{ - key: :enabled, - type: :boolean, - description: "Enables SSH" - }, - %{ - key: :priv_dir, - type: :string, - description: "Dir with SSH keys", - suggestions: ["/some/path/ssh_keys"] - }, - %{ - key: :handler, - type: :string, - description: "Handler module", - suggestions: ["Pleroma.BBS.Handler"] - }, - %{ - key: :port, - type: :integer, - description: "Port to connect", - suggestions: [10_022] - }, - %{ - key: :password_authenticator, - type: :string, - description: "Authenticator module", - suggestions: ["Pleroma.BBS.Authenticator"] - } - ] - }, - %{ group: :mime, label: "Mime Types", type: :group, @@ -3129,7 +3135,7 @@ config :pleroma, :config_description, [ key: :max_waiting, type: :integer, description: - "Maximum number of requests waiting for other requests to finish. After this number is reached, the pool will start returning errrors when a new request is made", + "Maximum number of requests waiting for other requests to finish. After this number is reached, the pool will start returning errors when a new request is made", suggestions: [10] }, %{ @@ -3395,7 +3401,7 @@ config :pleroma, :config_description, [ %{ key: :purge_after_days, type: :integer, - description: "Remove backup achives after N days", + description: "Remove backup archives after N days", suggestions: [30] }, %{ @@ -3403,6 +3409,21 @@ config :pleroma, :config_description, [ type: :integer, description: "Limit user to export not more often than once per N days", suggestions: [7] + }, + %{ + key: :process_wait_time, + type: :integer, + label: "Process Wait Time", + description: + "The amount of time to wait for backup to report progress, in milliseconds. If no progress is received from the backup job for that much time, terminate it and deem it failed.", + suggestions: [30_000] + }, + %{ + key: :process_chunk_size, + type: :integer, + label: "Process Chunk Size", + description: "The number of activities to fetch in the backup job for each chunk.", + suggestions: [100] } ] }, @@ -3490,5 +3511,48 @@ config :pleroma, :config_description, [ ] } ] + }, + %{ + group: :pleroma, + key: Pleroma.Search, + type: :group, + description: "General search settings.", + children: [ + %{ + key: :module, + type: :keyword, + description: "Selected search module.", + suggestion: [Pleroma.Search.DatabaseSearch, Pleroma.Search.Meilisearch] + } + ] + }, + %{ + group: :pleroma, + key: Pleroma.Search.Meilisearch, + type: :group, + description: "Meilisearch settings.", + children: [ + %{ + key: :url, + type: :string, + description: "Meilisearch URL.", + suggestion: ["http://127.0.0.1:7700/"] + }, + %{ + key: :private_key, + type: :string, + description: + "Private key for meilisearch authentication, or `nil` to disable private key authentication.", + suggestion: [nil] + }, + %{ + key: :initial_indexing_chunk_size, + type: :integer, + description: + "Amount of posts in a batch when running the initial indexing operation. Should probably not be more than 100000" <> + " since there's a limit on maximum insert size", + suggestion: [100_000] + } + ] } ] diff --git a/config/dev.exs b/config/dev.exs @@ -8,8 +8,7 @@ import Config # with brunch.io to recompile .js and .css sources. config :pleroma, Pleroma.Web.Endpoint, http: [ - port: 4000, - protocol_options: [max_request_line_length: 8192, max_header_value_length: 8192] + port: 4000 ], protocol: "http", debug_errors: true, diff --git a/config/test.exs b/config/test.exs @@ -16,7 +16,7 @@ config :pleroma, Pleroma.Captcha, # Print only warnings and errors during test config :logger, :console, - level: :warn, + level: :warning, format: "\n[$level] $message\n" config :pleroma, :auth, oauth_consumer_strategies: [] @@ -49,7 +49,7 @@ config :pleroma, Pleroma.Repo, hostname: System.get_env("DB_HOST") || "localhost", port: System.get_env("DB_PORT") || "5432", pool: Ecto.Adapters.SQL.Sandbox, - pool_size: 50 + pool_size: System.schedulers_online() * 2 config :pleroma, :dangerzone, override_repo_pool_size: true @@ -61,7 +61,8 @@ config :tesla, adapter: Tesla.Mock config :pleroma, :rich_media, enabled: false, ignore_hosts: [], - ignore_tld: ["local", "localdomain", "lan"] + ignore_tld: ["local", "localdomain", "lan"], + max_body: 2_000_000 config :pleroma, :instance, multi_factor_authentication: [ @@ -133,10 +134,50 @@ config :pleroma, :side_effects, ap_streamer: Pleroma.Web.ActivityPub.ActivityPubMock, logger: Pleroma.LoggerMock +config :pleroma, Pleroma.Search, module: Pleroma.Search.DatabaseSearch + +config :pleroma, Pleroma.Search.Meilisearch, url: "http://127.0.0.1:7700/", private_key: nil + # Reduce recompilation time # https://dashbit.co/blog/speeding-up-re-compilation-of-elixir-projects config :phoenix, :plug_init_mode, :runtime +config :pleroma, :config_impl, Pleroma.UnstubbedConfigMock + +config :pleroma, Pleroma.PromEx, disabled: true + +# Mox definitions. Only read during compile time. +config :pleroma, Pleroma.User.Backup, config_impl: Pleroma.UnstubbedConfigMock +config :pleroma, Pleroma.Uploaders.S3, ex_aws_impl: Pleroma.Uploaders.S3.ExAwsMock +config :pleroma, Pleroma.Uploaders.S3, config_impl: Pleroma.UnstubbedConfigMock +config :pleroma, Pleroma.Upload, config_impl: Pleroma.UnstubbedConfigMock +config :pleroma, Pleroma.ScheduledActivity, config_impl: Pleroma.UnstubbedConfigMock +config :pleroma, Pleroma.Web.RichMedia.Helpers, config_impl: Pleroma.StaticStubbedConfigMock +config :pleroma, Pleroma.Uploaders.IPFS, config_impl: Pleroma.UnstubbedConfigMock + +peer_module = + if String.to_integer(System.otp_release()) >= 25 do + :peer + else + :slave + end + +config :pleroma, Pleroma.Cluster, peer_module: peer_module + +config :pleroma, Pleroma.Application, + background_migrators: false, + internal_fetch: false, + load_custom_modules: false, + max_restarts: 100, + streamer_registry: false, + test_http_pools: true + +config :pleroma, Pleroma.Uploaders.Uploader, timeout: 1_000 + +config :pleroma, Pleroma.Emoji.Loader, test_emoji: true + +config :pleroma, Pleroma.Web.RichMedia.Backfill, provider: Pleroma.Web.RichMedia.Backfill + if File.exists?("./config/test.secret.exs") do import_config "test.secret.exs" else diff --git a/docs/administration/CLI_tasks/config.md b/docs/administration/CLI_tasks/config.md @@ -1,4 +1,4 @@ -# Transfering the config to/from the database +# Transferring the config to/from the database {! backend/administration/CLI_tasks/general_cli_task_info.include !} @@ -34,7 +34,7 @@ Options: -- `<path>` - where to save migrated config. E.g. `--path=/tmp`. If file saved into non standart folder, you must manually copy file into directory where Pleroma can read it. For OTP install path will be `PLEROMA_CONFIG_PATH` or `/etc/pleroma`. For installation from source - `config` directory in the pleroma folder. +- `<path>` - where to save migrated config. E.g. `--path=/tmp`. If file saved into non-standard folder, you must manually copy file into directory where Pleroma can read it. For OTP install path will be `PLEROMA_CONFIG_PATH` or `/etc/pleroma`. For installation from source - `config` directory in the pleroma folder. - `<env>` - environment, for which is migrated config. By default is `prod`. - To delete transferred settings from database optional flag `-d` can be used diff --git a/docs/administration/backup.md b/docs/administration/backup.md @@ -31,7 +31,7 @@ 1. Optionally you can remove the users of your instance. This will trigger delete requests for their accounts and posts. Note that this is 'best effort' and doesn't mean that all traces of your instance will be gone from the fediverse. * You can do this from the admin-FE where you can select all local users and delete the accounts using the *Moderate multiple users* dropdown. - * You can also list local users and delete them individualy using the CLI tasks for [Managing users](./CLI_tasks/user.md). + * You can also list local users and delete them individually using the CLI tasks for [Managing users](./CLI_tasks/user.md). 2. Stop the Pleroma service `systemctl stop pleroma` 3. Disable pleroma from systemd `systemctl disable pleroma` 4. Remove the files and folders you created during installation (see installation guide). This includes the pleroma, nginx and systemd files and folders. diff --git a/docs/administration/frontends-management.md b/docs/administration/frontends-management.md @@ -0,0 +1,71 @@ +# Managing installed frontends + +Pleroma lets you install multiple frontends including multiple versions of same frontend. Right now it's only possible to switch which frontend is the default, but in the future it would be possible for user to select which frontend they prefer to use. + +As of 2.6.0 there are two ways of managing frontends - through PleromaFE's Admin Dashboard (preferred, easier method) or through AdminFE (clunky but also works on versions older than 2.6.0). + +!!! note + Managing frontends through UI requires [in-database configuration](../configuration/howto_database_config.md) to be enabled (default on newer instances but might be off on older ones). + +## How it works + +When installing frontends, it creates a folder in [static directory](../configuration/static_dir.md) that follows this pattern: `/frontends/${front-end name}/${front-end version}/`, puts contents of the built frontend in there. Then when accessing the server backend checks what front-end name and version are set to be default and serves index.html and assets from appropriate path. + +!!! warning + + If you've been putting your frontend build directly into static dir as an antiquated way of serving custom frontend, this system will not work and will still serve the custom index.html you put in there. You can still serve custom frontend builds if you put your build into `/frontends/$name/$version` instead and set the "default frontend" fields appropriately. + +Currently, there is no backup system, i.e. when installing `master` version it _will_ overwrite installed `master` version, for now if you want to keep previous version you should back it up manually, i.e. running `cp -r ./frontends/pleroma-fe/master ./frontends/pleroma-fe/master_old` in your static dir. + +## Managing front-ends through Admin Dashboard + +Open up Admin Dashboard (gauge icon in top bar, same as where link to AdminFE was),__ +![location of Admin Dashboard icon](../assets/admin_dash_location.png) +switch to "Front-ends" tab. +![screenshot of Front-ends tab](../assets/frontends_tab.png) +This page is designed to be self-explanatory and easy to use, while avoiding issues and pitfalls of AdminFE, but it's also early in development, everything is subject to change. + +!!! warning + This goes without saying, but if you set default frontend to anything except >2.6.0 version of PleromaFE you'll lose the access to Admin Dashboard and will have to use AdminFE to get it back. See below on how to use AdminFE. + +### Limitations + +Currently the list of available for install frontends is essentially hard-coded in backend's configuration, each providing only one version, with exception for PleromaFE which overrides 'pleroma-fe' to also include `develop` version. There is no way to manually install build with a URL (coming soon) nor add more available frontends to the repository (it's broken). + +There is also no way to tell if there is an update available or not, for now you should watch for [announcements](https://pleroma.social/announcements/) of new PleromaFE stable releases to see if there is new stable version. For `develop` version it's up to you whether you want to follow the development process or just reinstall it periodically hoping for new stuff. + +## Using AdminFE to manage frontends + +Access AdminFE either directly by going to `/pleroma/admin` of your instance or by opening Admin Dashboard and clicking the link at the bottom of the window +![link to open old AdminFE](../assets/old_adminfe_link.png) + + +Go to Settings -> Frontend. + +### Installing front-ends + +At the very top of the page there's a list of available frontends and button to install custom front-end + +!!! tip + Remember to click "Submit" in bottom right corner to save your changes! + +!!! bug + **Available Frontends** section lets you _install_ frontends but **NOT** update/reinstall them. It's only useful for installing a frontend once. + +Due to aforementioned bug, preferred way of installing frontends in AdminFE is by clicking the "Install another frontend" +![screenshot of admin-fe with instructions on how to install a frontend](../assets/way_to_install_frontends.png) +and filling in the fields. Unfortunately AdminFE does not provide the raw data necessary for you to fill those fields, so your best bet is to see what backend returns in browser's devtools or refer to the [source code](https://git.pleroma.social/pleroma/pleroma/-/blob/develop/config/config.exs?ref_type=heads#L742-791). For the most part, only **Name**, **Ref** (i.e. version) and **Build URL** fields are required, although some frontends might also require **Build Directory** to work. + +For pleroma-fe you can use either `master` or `develop` refs, or potentially any ref in GitLab that has artifacts for `build` job, but that's outside scope of this document. + +### Selecting default frontend + +Scroll page waaaaay down, search for "Frontends" section, subtitled "Installed frontends management", change the name and reference of the "Primary" frontend. +![screenshot of admin-fe with instructions on how to install a frontend](../assets/primary_frontend_section.png) + + +!!! danger + If you change "Admin" frontend name/reference you risk losing access to AdminFE as well. + +!!! warning + Don't put anything into the "Available" section as it will break the list of available frontends completely, including the "add another frontend" button. If you accidentally put something in there, click the trashbin icon next to "Available" to reset it and restore the frontends list. diff --git a/docs/assets/admin_dash_location.png b/docs/assets/admin_dash_location.png Binary files differ. diff --git a/docs/assets/frontends_tab.png b/docs/assets/frontends_tab.png Binary files differ. diff --git a/docs/assets/old_adminfe_link.png b/docs/assets/old_adminfe_link.png Binary files differ. diff --git a/docs/assets/primary_frontend_section.png b/docs/assets/primary_frontend_section.png Binary files differ. diff --git a/docs/assets/way_to_install_frontends.png b/docs/assets/way_to_install_frontends.png Binary files differ. diff --git a/docs/clients.md b/docs/clients.md @@ -3,12 +3,6 @@ Note: Additional clients may be working but theses are officially supporting Ple Feel free to contact us to be added to this list! ## Desktop -### Roma for Desktop -- Homepage: <https://www.pleroma.com/#desktopApp> -- Source Code: <https://github.com/roma-apps/roma-desktop> -- Platforms: Windows, Mac, Linux -- Features: MastoAPI, Streaming Ready - ### Social - Source Code: <https://gitlab.gnome.org/World/Social> - Contact: [@brainblasted@social.libre.fi](https://social.libre.fi/users/brainblasted) @@ -19,7 +13,14 @@ Feel free to contact us to be added to this list! ### Whalebird - Homepage: <https://whalebird.social/> - Source Code: <https://github.com/h3poteto/whalebird-desktop> -- Contact: [@h3poteto@pleroma.io](https://pleroma.io/users/h3poteto) +- Contact: [@whalebird@pleroma.io](https://pleroma.io/users/whalebird) +- Platforms: Windows, Mac, Linux +- Features: MastoAPI, Streaming Ready + +### Fedistar +- Homepage: <https://fedistar.net> +- Source Code: <https://github.com/h3poteto/fedistar> +- Contact: [@fedistar@pleroma.io](https://pleroma.io/users/fedistar) - Platforms: Windows, Mac, Linux - Features: MastoAPI, Streaming Ready diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md @@ -154,12 +154,15 @@ To add configuration to your config file, you can copy it from the base config. * `Pleroma.Web.ActivityPub.MRF.MentionPolicy`: Drops posts mentioning configurable users. (See [`:mrf_mention`](#mrf_mention)). * `Pleroma.Web.ActivityPub.MRF.VocabularyPolicy`: Restricts activities to a configured set of vocabulary. (See [`:mrf_vocabulary`](#mrf_vocabulary)). * `Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy`: Rejects or delists posts based on their age when received. (See [`:mrf_object_age`](#mrf_object_age)). - * `Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy`: Sets a default expiration on all posts made by users of the local instance. Requires `Pleroma.Workers.PurgeExpiredActivity` to be enabled for processing the scheduled delections. + * `Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy`: Sets a default expiration on all posts made by users of the local instance. Requires `Pleroma.Workers.PurgeExpiredActivity` to be enabled for processing the scheduled deletions. * `Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy`: Makes all bot posts to disappear from public timelines. * `Pleroma.Web.ActivityPub.MRF.FollowBotPolicy`: Automatically follows newly discovered users from the specified bot account. Local accounts, locked accounts, and users with "#nobot" in their bio are respected and excluded from being followed. * `Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy`: Drops follow requests from followbots. Users can still allow bots to follow them by first following the bot. * `Pleroma.Web.ActivityPub.MRF.KeywordPolicy`: Rejects or removes from the federated timeline or replaces keywords. (See [`:mrf_keyword`](#mrf_keyword)). * `Pleroma.Web.ActivityPub.MRF.ForceMentionsInContent`: Forces every mentioned user to be reflected in the post content. + * `Pleroma.Web.ActivityPub.MRF.InlineQuotePolicy`: Forces quote post URLs to be reflected in the message content inline. + * `Pleroma.Web.ActivityPub.MRF.QuoteToLinkTagPolicy`: Force a Link tag for posts quoting another post. (may break outgoing federation of quote posts with older Pleroma versions). + * `Pleroma.Web.ActivityPub.MRF.ForceMention`: Forces posts to include a mention of the author of parent post or the author of quoted post. * `transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo). * `transparency_exclusions`: Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value. @@ -261,6 +264,18 @@ Notes: * `follower_nickname`: The name of the bot account to use for following newly discovered users. Using `followbot` or similar is strongly suggested. +#### :mrf_emoji +* `remove_url`: A list of patterns which result in emoji whose URL matches being removed from the message. This will apply to statuses, emoji reactions, and user profiles. Each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html). +* `remove_shortcode`: A list of patterns which result in emoji whose shortcode matches being removed from the message. This will apply to statuses, emoji reactions, and user profiles. Each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html). +* `federated_timeline_removal_url`: A list of patterns which result in message with emojis whose URLs match being removed from federated timelines (a.k.a unlisted). This will apply only to statuses. Each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html). +* `federated_timeline_removal_shortcode`: A list of patterns which result in message with emojis whose shortcodes match being removed from federated timelines (a.k.a unlisted). This will apply only to statuses. Each pattern can be a string or a [regular expression](https://hexdocs.pm/elixir/Regex.html). + +#### :mrf_inline_quote +* `template`: The template to append to the post. `{url}` will be replaced with the actual link to the quoted post. Default: `<bdi>RT:</bdi> {url}` + +#### :mrf_force_mention +* `mention_parent`: Whether to append mention of parent post author +* `mention_quoted`: Whether to append mention of parent quoted author ### :activitypub * `unfollow_blocked`: Whether blocks result in people getting unfollowed @@ -496,7 +511,7 @@ config :pleroma, :rate_limit, Means that: 1. In 60 seconds, 15 authentication attempts can be performed from the same IP address. -2. In 1 second, 10 search requests can be performed from the same IP adress by unauthenticated users, while authenticated users can perform 30 search requests per second. +2. In 1 second, 10 search requests can be performed from the same IP address by unauthenticated users, while authenticated users can perform 30 search requests per second. Supported rate limiters: @@ -646,6 +661,19 @@ config :ex_aws, :s3, host: "s3.eu-central-1.amazonaws.com" ``` +#### Pleroma.Uploaders.IPFS + +* `post_gateway_url`: URL with port of POST Gateway (unauthenticated) +* `get_gateway_url`: URL of public GET Gateway + +Example: + +```elixir +config :pleroma, Pleroma.Uploaders.IPFS, + post_gateway_url: "http://localhost:5001", + get_gateway_url: "http://{CID}.ipfs.mydomain.com" +``` + ### Upload filters #### Pleroma.Upload.Filter.AnonymizeFilename @@ -671,6 +699,12 @@ This filter reads the ImageDescription and iptc:Caption-Abstract fields with Exi No specific configuration. +#### Pleroma.Upload.Filter.OnlyMedia + +This filter rejects uploads that are not identified with Content-Type matching audio/\*, image/\*, or video/\* + +No specific configuration. + #### Pleroma.Upload.Filter.Mogrify * `args`: List of actions for the `mogrify` command like `"strip"` or `["strip", "auto-orient", {"implode", "1"}]`. @@ -873,21 +907,8 @@ This will probably take a long time. ### BBS / SSH access -To enable simple command line interface accessible over ssh, add a setting like this to your configuration file: - -```exs -app_dir = File.cwd! -priv_dir = Path.join([app_dir, "priv/ssh_keys"]) - -config :esshd, - enabled: true, - priv_dir: priv_dir, - handler: "Pleroma.BBS.Handler", - port: 10_022, - password_authenticator: "Pleroma.BBS.Authenticator" -``` - -Feel free to adjust the priv_dir and port number. Then you will have to create the key for the keys (in the example `priv/ssh_keys`) and create the host keys with `ssh-keygen -m PEM -N "" -b 2048 -t rsa -f ssh_host_rsa_key`. After restarting, you should be able to connect to your Pleroma instance with `ssh username@server -p $PORT` +This feature has been removed from Pleroma core. +However, a client has been made and is available at https://git.pleroma.social/Duponin/sshocial. ### :gopher * `enabled`: Enables the gopher interface @@ -1078,7 +1099,7 @@ config :pleroma, Pleroma.Formatter, ## :configurable_from_database -Boolean, enables/disables in-database configuration. Read [Transfering the config to/from the database](../administration/CLI_tasks/config.md) for more information. +Boolean, enables/disables in-database configuration. Read [Transferring the config to/from the database](../administration/CLI_tasks/config.md) for more information. ## :database_config_whitelist @@ -1139,7 +1160,7 @@ Control favicons for instances. !!! note Requires enabled email -* `:purge_after_days` an integer, remove backup achives after N days. +* `:purge_after_days` an integer, remove backup achieves after N days. * `:limit_days` an integer, limit user to export not more often than once per N days. * `:dir` a string with a path to backup temporary directory or `nil` to let Pleroma choose temporary directory in the following order: 1. the directory named by the TMPDIR environment variable diff --git a/docs/configuration/custom_emoji.md b/docs/configuration/custom_emoji.md @@ -29,7 +29,7 @@ foo, /emoji/custom/foo.png The files should be PNG (APNG is okay with `.png` for `image/png` Content-type) and under 50kb for compatibility with mastodon. -Default file extentions and locations for emojis are set in `config.exs`. To use different locations or file-extentions, add the `shortcode_globs` to your secrets file (`prod.secret.exs` or `dev.secret.exs`) and edit it. Note that not all fediverse-software will show emojis with other file extentions: +Default file extensions and locations for emojis are set in `config.exs`. To use different locations or file-extensions, add the `shortcode_globs` to your secrets file (`prod.secret.exs` or `dev.secret.exs`) and edit it. Note that not all fediverse-software will show emojis with other file extensions: ```elixir config :pleroma, :emoji, shortcode_globs: ["/emoji/custom/**/*.png", "/emoji/custom/**/*.gif"] ``` diff --git a/docs/configuration/hardening.md b/docs/configuration/hardening.md @@ -62,6 +62,20 @@ An additional “Expect-CT” header will be sent with the configured `ct_max_ag If you click on a link, your browser’s request to the other site will include from where it is coming from. The “Referrer policy” header tells the browser how and if it should send this information. (see [Referrer policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy)) +### Uploaded media and media proxy + +It is STRONGLY RECOMMENDED to serve both the locally-uploaded media and the media proxy from another domain than the domain that Pleroma runs on, if applicable. + +```elixir +config :pleroma, :media_proxy, + base_url: "https://some.other.domain" + +config :pleroma, Pleroma.Upload, + base_url: "https://some.other.domain/media" +``` + +See `installation/pleroma-mediaproxy.nginx` for examples on how to configure your media proxy. + ## systemd A systemd unit example is provided at `installation/pleroma.service`. diff --git a/docs/configuration/i2p.md b/docs/configuration/i2p.md @@ -1,4 +1,4 @@ -# I2P Federation and Accessability +# I2P Federation and Accessibility This guide is going to focus on the Pleroma federation aspect. The actual installation is neatly explained in the official documentation, and more likely to remain up-to-date. It might be added to this guide if there will be a need for that. diff --git a/docs/configuration/onion_federation.md b/docs/configuration/onion_federation.md @@ -29,7 +29,7 @@ HiddenServiceDir /var/lib/tor/pleroma_hidden_service/ HiddenServicePort 80 127.0.0.1:8099 HiddenServiceVersion 3 # Remove if Tor version is below 0.3 ( tor --version ) ``` -Restart Tor to generate an adress: +Restart Tor to generate an address: ``` systemctl restart tor@default.service ``` diff --git a/docs/configuration/optimizing_beam.md b/docs/configuration/optimizing_beam.md @@ -1,6 +1,6 @@ # Optimizing the BEAM -Pleroma is built upon the Erlang/OTP VM known as BEAM. The BEAM VM is highly optimized for latency, but this has drawbacks in environments without dedicated hardware. One of the tricks used by the BEAM VM is [busy waiting](https://en.wikipedia.org/wiki/Busy_waiting). This allows the application to pretend to be busy working so the OS kernel does not pause the application process and switch to another process waiting for the CPU to execute its workload. It does this by spinning for a period of time which inflates the apparent CPU usage of the application so it is immediately ready to execute another task. This can be observed with utilities like **top(1)** which will show consistently high CPU usage for the process. Switching between procesess is a rather expensive operation and also clears CPU caches further affecting latency and performance. The goal of busy waiting is to avoid this penalty. +Pleroma is built upon the Erlang/OTP VM known as BEAM. The BEAM VM is highly optimized for latency, but this has drawbacks in environments without dedicated hardware. One of the tricks used by the BEAM VM is [busy waiting](https://en.wikipedia.org/wiki/Busy_waiting). This allows the application to pretend to be busy working so the OS kernel does not pause the application process and switch to another process waiting for the CPU to execute its workload. It does this by spinning for a period of time which inflates the apparent CPU usage of the application so it is immediately ready to execute another task. This can be observed with utilities like **top(1)** which will show consistently high CPU usage for the process. Switching between processes is a rather expensive operation and also clears CPU caches further affecting latency and performance. The goal of busy waiting is to avoid this penalty. This strategy is very successful in making a performant and responsive application, but is not desirable on Virtual Machines or hardware with few CPU cores. Pleroma instances are often deployed on the same server as the required PostgreSQL database which can lead to situations where the Pleroma application is holding the CPU in a busy-wait loop and as a result the database cannot process requests in a timely manner. The fewer CPUs available, the more this problem is exacerbated. The latency is further amplified by the OS being installed on a Virtual Machine as the Hypervisor uses CPU time-slicing to pause the entire OS and switch between other tasks. diff --git a/docs/configuration/postgresql.md b/docs/configuration/postgresql.md @@ -22,7 +22,7 @@ config :pleroma, Pleroma.Repo, ] ``` -A more detailed explaination of the issue can be found at <https://blog.soykaf.com/post/postgresql-elixir-troubles/>. +A more detailed explanation of the issue can be found at <https://blog.soykaf.com/post/postgresql-elixir-troubles/>. ## Example configurations diff --git a/docs/configuration/search.md b/docs/configuration/search.md @@ -0,0 +1,123 @@ +# Configuring search + +{! backend/administration/CLI_tasks/general_cli_task_info.include !} + +## Built-in search + +To use built-in search that has no external dependencies, set the search module to `Pleroma.Activity`: + +> config :pleroma, Pleroma.Search, module: Pleroma.Search.DatabaseSearch + +While it has no external dependencies, it has problems with performance and relevancy. + +## Meilisearch + +Note that it's quite a bit more memory hungry than PostgreSQL (around 4-5G for ~1.2 million +posts while idle and up to 7G while indexing initially). The disk usage for this additional index is also +around 4 gigabytes. Like [RUM](./cheatsheet.md#rum-indexing-for-full-text-search) indexes, it offers considerably +higher performance and ordering by timestamp in a reasonable amount of time. +Additionally, the search results seem to be more accurate. + +Due to high memory usage, it may be best to set it up on a different machine, if running pleroma on a low-resource +computer, and use private key authentication to secure the remote search instance. + +To use [meilisearch](https://www.meilisearch.com/), set the search module to `Pleroma.Search.Meilisearch`: + +> config :pleroma, Pleroma.Search, module: Pleroma.Search.Meilisearch + +You then need to set the address of the meilisearch instance, and optionally the private key for authentication. You might +also want to change the `initial_indexing_chunk_size` to be smaller if you're server is not very powerful, but not higher than `100_000`, +because meilisearch will refuse to process it if it's too big. However, in general you want this to be as big as possible, because meilisearch +indexes faster when it can process many posts in a single batch. + +> config :pleroma, Pleroma.Search.Meilisearch, +> url: "http://127.0.0.1:7700/", +> private_key: "private key", +> initial_indexing_chunk_size: 100_000 + +Information about setting up meilisearch can be found in the +[official documentation](https://docs.meilisearch.com/learn/getting_started/installation.html). +You probably want to start it with `MEILI_NO_ANALYTICS=true` environment variable to disable analytics. +At least version 0.25.0 is required, but you are strongly advised to use at least 0.26.0, as it introduces +the `--enable-auto-batching` option which drastically improves performance. Without this option, the search +is hardly usable on a somewhat big instance. + +### Private key authentication (optional) + +To set the private key, use the `MEILI_MASTER_KEY` environment variable when starting. After setting the _master key_, +you have to get the _private key_, which is actually used for authentication. + +=== "OTP" + ```sh + ./bin/pleroma_ctl search.meilisearch show-keys <your master key here> + ``` + +=== "From Source" + ```sh + mix pleroma.search.meilisearch show-keys <your master key here> + ``` + +You will see a "Default Admin API Key", this is the key you actually put into your configuration file. + +### Initial indexing + +After setting up the configuration, you'll want to index all of your already existing posts. Only public posts are indexed. You'll only +have to do it one time, but it might take a while, depending on the amount of posts your instance has seen. This is also a fairly RAM +consuming process for `meilisearch`, and it will take a lot of RAM when running if you have a lot of posts (seems to be around 5G for ~1.2 +million posts while idle and up to 7G while indexing initially, but your experience may be different). + +The sequence of actions is as follows: + +1. First, change the configuration to use `Pleroma.Search.Meilisearch` as the search backend +2. Restart your instance, at this point it can be used while the search indexing is running, though search won't return anything +3. Start the initial indexing process (as described below with `index`), + and wait until the task says it sent everything from the database to index +4. Wait until everything is actually indexed (by checking with `stats` as described below), + at this point you don't have to do anything, just wait a while. + +To start the initial indexing, run the `index` command: + +=== "OTP" + ```sh + ./bin/pleroma_ctl search.meilisearch index + ``` + +=== "From Source" + ```sh + mix pleroma.search.meilisearch index + ``` + +This will show you the total amount of posts to index, and then show you the amount of posts indexed currently, until the numbers eventually +become the same. The posts are indexed in big batches and meilisearch will take some time to actually index them, even after you have +inserted all the posts into it. Depending on the amount of posts, this may be as long as several hours. To get information about the status +of indexing and how many posts have actually been indexed, use the `stats` command: + +=== "OTP" + ```sh + ./bin/pleroma_ctl search.meilisearch stats + ``` + +=== "From Source" + ```sh + mix pleroma.search.meilisearch stats + ``` + +### Clearing the index + +In case you need to clear the index (for example, to re-index from scratch, if that needs to happen for some reason), you can +use the `clear` command: + +=== "OTP" + ```sh + ./bin/pleroma_ctl search.meilisearch clear + ``` + +=== "From Source" + ```sh + mix pleroma.search.meilisearch clear + ``` + +This will clear **all** the posts from the search index. Note, that deleted posts are also removed from index by the instance itself, so +there is no need to actually clear the whole index, unless you want **all** of it gone. That said, the index does not hold any information +that cannot be re-created from the database, it should also generally be a lot smaller than the size of your database. Still, the size +depends on the amount of text in posts. diff --git a/docs/development/API/admin_api.md b/docs/development/API/admin_api.md @@ -303,7 +303,7 @@ Removes the user(s) from follower recommendations. ## `GET /api/v1/pleroma/admin/users/:nickname_or_id` -### Retrive the details of a user +### Retrieve the details of a user - Params: - `nickname` or `id` @@ -313,7 +313,7 @@ Removes the user(s) from follower recommendations. ## `GET /api/v1/pleroma/admin/users/:nickname_or_id/statuses` -### Retrive user's latest statuses +### Retrieve user's latest statuses - Params: - `nickname` or `id` @@ -337,7 +337,7 @@ Removes the user(s) from follower recommendations. ## `GET /api/v1/pleroma/admin/instances/:instance/statuses` -### Retrive instance's latest statuses +### Retrieve instance's latest statuses - Params: - `instance`: instance name @@ -377,7 +377,7 @@ It may take some time. ## `GET /api/v1/pleroma/admin/statuses` -### Retrives all latest statuses +### Retrieves all latest statuses - Params: - *optional* `page_size`: number of statuses to return (default is `20`) @@ -541,7 +541,7 @@ Response: ## `PATCH /api/v1/pleroma/admin/users/force_password_reset` -### Force passord reset for a user with a given nickname +### Force password reset for a user with a given nickname - Params: - `nicknames` @@ -1585,6 +1585,7 @@ Returns the content of the document "build_url": "https://git.pleroma.social/pleroma/fedi-fe/-/jobs/artifacts/${ref}/download?job=build", "git": "https://git.pleroma.social/pleroma/fedi-fe", "installed": true, + "installed_refs": ["master"], "name": "fedi-fe", "ref": "master" }, @@ -1592,6 +1593,7 @@ Returns the content of the document "build_url": "https://git.pleroma.social/lambadalambda/kenoma/-/jobs/artifacts/${ref}/download?job=build", "git": "https://git.pleroma.social/lambadalambda/kenoma", "installed": false, + "installed_refs": [], "name": "kenoma", "ref": "master" } @@ -1749,3 +1751,53 @@ Note that this differs from the Mastodon API variant: Mastodon API only returns ```json {} ``` + + +## `GET /api/v1/pleroma/admin/rules` + +### List rules + +- Response: JSON, list of rules + +```json +[ + { + "id": "1", + "priority": 1, + "text": "There are no rules", + "hint": null + } +] +``` + +## `POST /api/v1/pleroma/admin/rules` + +### Create a rule + +- Params: + - `text`: string, required, rule content + - `hint`: string, optional, rule description + - `priority`: integer, optional, rule ordering priority + +- Response: JSON, a single rule + +## `PATCH /api/v1/pleroma/admin/rules/:id` + +### Update a rule + +- Params: + - `text`: string, optional, rule content + - `hint`: string, optional, rule description + - `priority`: integer, optional, rule ordering priority + +- Response: JSON, a single rule + +## `DELETE /api/v1/pleroma/admin/rules/:id` + +### Delete a rule + +- Response: JSON, empty object + +```json +{} +``` diff --git a/docs/development/API/differences_in_mastoapi_responses.md b/docs/development/API/differences_in_mastoapi_responses.md @@ -1,6 +1,6 @@ # Differences in Mastodon API responses from vanilla Mastodon -A Pleroma instance can be identified by "<Mastodon version> (compatible; Pleroma <version>)" present in `version` field in response from `/api/v1/instance` +A Pleroma instance can be identified by "<Mastodon version> (compatible; Pleroma <version>)" present in `version` field in response from `/api/v1/instance` and `/api/v2/instance` ## Flake IDs @@ -39,6 +39,9 @@ Has these additional fields under the `pleroma` object: - `emoji_reactions`: A list with emoji / reaction maps. The format is `{name: "☕", count: 1, me: true}`. Contains no information about the reacting users, for that use the `/statuses/:id/reactions` endpoint. - `parent_visible`: If the parent of this post is visible to the user or not. - `pinned_at`: a datetime (iso8601) when status was pinned, `null` otherwise. +- `quotes_count`: the count of status quotes. +- `non_anonymous`: true if the source post specifies the poll results are not anonymous. Currently only implemented by Smithereen. +- `bookmark_folder`: the ID of the folder bookmark is stored within (if any). The `GET /api/v1/statuses/:id/source` endpoint additionally has the following attributes: @@ -64,6 +67,12 @@ Some apps operate under the assumption that no more than 4 attachments can be re Pleroma does not process remote images and therefore cannot include fields such as `meta` and `blurhash`. It does not support focal points or aspect ratios. The frontend is expected to handle it. +## Bookmarks + +The `GET /api/v1/bookmarks` endpoint accepts optional parameter `folder_id` for bookmark folder ID. + +The `POST /api/v1/statuses/:id/bookmark` endpoint accepts optional parameter `folder_id` for bookmark folder ID. + ## Accounts The `id` parameter can also be the `nickname` of the user. This only works in these endpoints, not the deeper nested ones for following etc. @@ -304,19 +313,27 @@ Has these additional parameters (which are the same as in Pleroma-API): `GET /api/v1/instance` has additional fields - `max_toot_chars`: The maximum characters per post +- `max_media_attachments`: Maximum number of post media attachments - `chat_limit`: The maximum characters per chat message - `description_limit`: The maximum characters per image description - `poll_limits`: The limits of polls +- `shout_limit`: The maximum characters per Shoutbox message - `upload_limit`: The maximum upload file size - `avatar_upload_limit`: The same for avatars - `background_upload_limit`: The same for backgrounds - `banner_upload_limit`: The same for banners - `background_image`: A background image that frontends can use +- `pleroma.metadata.account_activation_required`: Whether users are required to confirm their emails before signing in +- `pleroma.metadata.birthday_required`: Whether users are required to provide their birth day when signing in +- `pleroma.metadata.birthday_min_age`: The minimum user age (in days) - `pleroma.metadata.features`: A list of supported features - `pleroma.metadata.federation`: The federation restrictions of this instance - `pleroma.metadata.fields_limits`: A list of values detailing the length and count limitation for various instance-configurable fields. - `pleroma.metadata.post_formats`: A list of the allowed post format types -- `vapid_public_key`: The public key needed for push messages +- `pleroma.stats.mau`: Monthly active user count +- `pleroma.vapid_public_key`: The public key needed for push messages + +In, `GET /api/v2/instance` Pleroma-specific fields are all moved into `pleroma` object. `max_toot_chars`, `poll_limits` and `upload_limit` are replaced with their MastoAPI counterparts. ## Push Subscription @@ -357,6 +374,122 @@ The message payload consist of: - `follower_count`: follower count - `following_count`: following count +### Authenticating via `sec-websocket-protocol` header + +Pleroma allows to authenticate via the `sec-websocket-protocol` header, for example, if your access token is `your-access-token`, you can authenticate using the following: + +``` +sec-websocket-protocol: your-access-token +``` + +### Authenticating after connection via `pleroma:authenticate` event + +Pleroma allows to authenticate after connection is established, via the `pleroma:authenticate` event. For example, if your access token is `your-access-token`, you can send the following after the connection is established: + +``` +{"type": "pleroma:authenticate", "token": "your-access-token"} +``` + +### Response to client-sent events + +Pleroma will respond to client-sent events that it recognizes. Supported event types are: + +- `subscribe` +- `unsubscribe` +- `pleroma:authenticate` + +The reply will be in the following format: + +``` +{ + "event": "pleroma:respond", + "payload": "{\"type\": \"<type of the client-sent event>\", \"result\": \"<result of the action>\", \"error\": \"<error code>\"}" +} +``` + +Result of the action can be either `success`, `ignored` or `error`. If it is `error`, the `error` property will contain the error code. Otherwise, the `error` property will not be present. Below are some examples: + +``` +{ + "event": "pleroma:respond", + "payload": "{\"type\": \"pleroma:authenticate\", \"result\": \"success\"}" +} + +{ + "event": "pleroma:respond", + "payload": "{\"type\": \"subscribe\", \"result\": \"ignored\"}" +} + +{ + "event": "pleroma:respond", + "payload": "{\"type\": \"unsubscribe\", \"result\": \"error\", \"error\": \"bad_topic\"}" +} +``` + +If the sent event is not of a type that Pleroma supports, it will not reply. + +### The `stream` attribute of a server-sent event + +Technically, this is in Mastodon, but its documentation does nothing to specify its format. + +This attribute appears on every event type except `pleroma:respond` and `delete`. It helps clients determine where they should display the new statuses. + +The value of the attribute is an array containing one or two elements. The first element is the type of the stream. The second is the identifier related to that specific stream, if applicable. + +For the following stream types, there is a second element in the array: + +- `list`: The second element is the id of the list, as a string. +- `hashtag`: The second element is the name of the hashtag. +- `public:remote:media` and `public:remote`: The second element is the domain of the corresponding instance. + +For all other stream types, there is no second element. + +Some examples of valid `stream` values: + +- `["list", "1"]`: List of id 1. +- `["hashtag", "mew"]`: The hashtag #mew. +- `["user:notifications"]`: Notifications for the current user. +- `["user"]`: Home timeline. +- `["public:remote", "mew.moe"]`: Public posts from the instance mew.moe . + +### The unified streaming endpoint + +If you do not specify a stream to connect to when requesting `/api/v1/streaming`, you will enter a connection that subscribes to no streams. After the connection is established, you can authenticate and then subscribe to different streams. + +### List of supported streams + +Below is a list of supported streams by Pleroma. To make a single-stream WebSocket connection, append the string specified in "Query style" to the streaming endpoint url. +To subscribe to a stream after the connection is established, merge the JSON object specified in "Subscribe style" with `{"type": "subscribe"}`. To unsubscribe, merge it with `{"type": "unsubscribe"}`. + +For example, to receive updates on the list 1, you can connect to `/api/v1/streaming/?stream=list&list=1`, or send + +``` +{"type": "subscribe", "stream": "list", "list": "1"} +``` + +upon establishing the websocket connection. + +To unsubscribe to list 1, send + +``` +{"type": "unsubscribe", "stream": "list", "list": "1"} +``` + +Note that if you specify a stream that requires a logged-in user in the query string (for example, `user` or `list`), you have to specify the access token when you are trying to establish the connection, i.e. in the query string or via the `sec-websocket-protocol` header. + +- `list` + - Query style: `?stream=list&list=<id>` + - Subscribe style: `{"stream": "list", "list": "<id>"}` +- `public`, `public:local`, `public:media`, `public:local:media`, `user`, `user:pleroma_chat`, `user:notifications`, `direct` + - Query style: `?stream=<stream name>` + - Subscribe style: `{"stream": "<stream name>"}` +- `hashtag` + - Query style: `?stream=hashtag&tag=<name>` + - Subscribe style: `{"stream": "hashtag", "tag": "<name>"}` +- `public:remote`, `public:remote:media` + - Query style: `?stream=<stream name>&instance=<instance domain>` + - Subscribe style: `{"stream": "<stream name>", "instance": "<instance domain>"}` + ## User muting and thread muting Both user muting and thread muting can be done for only a certain time by adding an `expires_in` parameter to the API calls and giving the expiration time in seconds. diff --git a/docs/development/API/pleroma_api.md b/docs/development/API/pleroma_api.md @@ -129,7 +129,7 @@ The `/api/v1/pleroma/*` path is backwards compatible with `/api/pleroma/*` (`/ap * method: `GET` * Authentication: required * OAuth scope: `write:security` -* Response: JSON. Returns `{"codes": codes}`when successful, otherwise HTTP 422 `{"error": "[error message]"}` +* Response: JSON. Returns `{"codes": codes}` when successful, otherwise HTTP 422 `{"error": "[error message]"}` ## `/api/v1/pleroma/admin/` See [Admin-API](admin_api.md) @@ -251,6 +251,15 @@ See [Admin-API](admin_api.md) ] ``` + +## `/api/v1/pleroma/accounts/:id/endorsements` +### Returns users endorsed by a user +* Method `GET` +* Authentication: not required +* Params: + * `id`: the id of the account for whom to return results +* Response: JSON, returns a list of Mastodon Account entities + ## `/api/v1/pleroma/accounts/update_*` ### Set and clear account avatar, banner, and background @@ -266,6 +275,58 @@ See [Admin-API](admin_api.md) * Authentication: not required * Response: 204 No Content +## `/api/v1/pleroma/statuses/:id/quotes` +### Gets quotes for a given status +* Method `GET` +* Authentication: not required +* Params: + * `id`: the id of the status +* Response: JSON, returns a list of Mastodon Status entities + +## `GET /api/v1/pleroma/bookmark_folders` +### Gets user bookmark folders +* Authentication: required + +* Response: JSON. Returns a list of bookmark folders. +* Example response: +```json +[ + { + "id": "9umDrYheeY451cQnEe", + "name": "Read later", + "emoji": "🕓", + "emoji_url": null + } +] +``` + +## `POST /api/v1/pleroma/bookmark_folders` +### Creates a bookmark folder +* Authentication: required + +* Params: + * `name`: folder name + * `emoji`: folder emoji (optional) +* Response: JSON. Returns a single bookmark folder. + +## `PATCH /api/v1/pleroma/bookmark_folders/:id` +### Updates a bookmark folder +* Authentication: required + +* Params: + * `id`: folder id + * `name`: folder name (optional) + * `emoji`: folder emoji (optional) +* Response: JSON. Returns a single bookmark folder. + +## `DELETE /api/v1/pleroma/bookmark_folders/:id` +### Deletes a bookmark folder +* Authentication: required + +* Params: + * `id`: folder id +* Response: JSON. Returns a single bookmark folder. + ## `/api/v1/pleroma/mascot` ### Gets user mascot image * Method `GET` @@ -372,6 +433,15 @@ See [Admin-API](admin_api.md) * `alias`: the nickname of the alias to delete, e.g. `foo@example.org`. * Response: JSON. Returns `{"status": "success"}` if the change was successful, `{"error": "[error message]"}` otherwise +## `/api/v1/pleroma/remote_interaction` +## Interact with profile or status from remote account +* Metod `POST` +* Authentication: not required +* Params: + * `ap_id`: Profile or status ActivityPub ID + * `profile`: Remote profile webfinger +* Response: JSON. Returns `{"url": "[redirect url]"}` on success, `{"error": "[error message]"}` otherwise + # Pleroma Conversations Pleroma Conversations have the same general structure that Mastodon Conversations have. The behavior differs in the following ways when using these endpoints: @@ -382,7 +452,7 @@ Pleroma Conversations have the same general structure that Mastodon Conversation Conversations have the additional field `recipients` under the `pleroma` key. This holds a list of all the accounts that will receive a message in this conversation. -The status posting endpoint takes an additional parameter, `in_reply_to_conversation_id`, which, when set, will set the visiblity to direct and address only the people who are the recipients of that Conversation. +The status posting endpoint takes an additional parameter, `in_reply_to_conversation_id`, which, when set, will set the visibility to direct and address only the people who are the recipients of that Conversation. ⚠ Conversation IDs can be found in direct messages with the `pleroma.direct_conversation_id` key, do not confuse it with `pleroma.conversation_id`. @@ -577,6 +647,9 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa 404 if the pack does not exist ## `GET /api/v1/pleroma/accounts/:id/scrobbles` + +Audio scrobbling in Pleroma is **deprecated**. + ### Requests a list of current and recent Listen activities for an account * Method `GET` * Authentication: not required @@ -598,6 +671,9 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa ``` ## `POST /api/v1/pleroma/scrobble` + +Audio scrobbling in Pleroma is **deprecated**. + ### Creates a new Listen activity for an account * Method `POST` * Authentication: required diff --git a/docs/development/ap_extensions.md b/docs/development/ap_extensions.md @@ -20,16 +20,16 @@ Content-Type: multipart/form-data Parameters: - (required) `file`: The file being uploaded -- (optionnal) `description`: A plain-text description of the media, for accessibility purposes. +- (optional) `description`: A plain-text description of the media, for accessibility purposes. Response: HTTP 201 Created with the object into the body, no `Location` header provided as it doesn't have an `id` -The object given in the reponse should then be inserted into an Object's `attachment` field. +The object given in the response should then be inserted into an Object's `attachment` field. ## ChatMessages `ChatMessage`s are the messages sent in 1-on-1 chats. They are similar to -`Note`s, but the addresing is done by having a single AP actor in the `to` +`Note`s, but the addressing is done by having a single AP actor in the `to` field. Addressing multiple actors is not allowed. These messages are always private, there is no public version of them. They are created with a `Create` activity. diff --git a/docs/development/setting_up_pleroma_dev.md b/docs/development/setting_up_pleroma_dev.md @@ -15,7 +15,7 @@ Pleroma requires some adjustments from the defaults for running the instance loc 2. Change the dev.secret.exs * Change the scheme in `config :pleroma, Pleroma.Web.Endpoint` to http (see examples below) * If you want to change other settings, you can do that too -3. You can now start the server `mix phx.server`. Once it's build and started, you can access the instance on `http://<host>:<port>` (e.g.http://localhost:4000 ) and should be able to do everything locally you normaly can. +3. You can now start the server `mix phx.server`. Once it's build and started, you can access the instance on `http://<host>:<port>` (e.g.http://localhost:4000 ) and should be able to do everything locally you normally can. Example config to change the scheme to http. Change the port if you want to run on another port. ```elixir @@ -38,7 +38,7 @@ config :logger, :console, ## Testing -1. Create a `test.secret.exs` file with the content as shown below +1. Create a `config/test.secret.exs` file with the content as shown below 2. Create the database user and test database. 1. You can use the `config/setup_db.psql` as a template. Copy the file if you want and change the database name, user and password to the values for the test-database (e.g. 'pleroma_local_test' for database and user). Then run this file like you did during installation. 2. The tests will try to create the Database, so we'll have to allow our test-database user to create databases, `sudo -Hu postgres psql -c "ALTER USER pleroma_local_test WITH CREATEDB;"` diff --git a/docs/installation/alpine_linux_en.md b/docs/installation/alpine_linux_en.md @@ -183,6 +183,9 @@ server { ... } ``` +* (Strongly recommended) serve media on another domain + +Refer to the [Hardening your instance](../configuration/hardening.md) document on how to serve media on another domain. We STRONGLY RECOMMEND you to do this to minimize attack vectors. * Enable and start nginx: diff --git a/docs/installation/arch_linux_en.md b/docs/installation/arch_linux_en.md @@ -173,6 +173,11 @@ sudo ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/ple ``` * Before starting nginx edit the configuration and change it to your needs (e.g. change servername, change cert paths) + +* (Strongly recommended) serve media on another domain + +Refer to the [Hardening your instance](../configuration/hardening.md) document on how to serve media on another domain. We STRONGLY RECOMMEND you to do this to minimize attack vectors. + * Enable and start nginx: ```shell diff --git a/docs/installation/debian_based_en.md b/docs/installation/debian_based_en.md @@ -4,7 +4,7 @@ ## Installation -This guide will assume you are on Debian 11 (“bullseye”) or later. This guide should also work with Ubuntu 18.04 (“Bionic Beaver”) and later. It also assumes that you have administrative rights, either as root or a user with [sudo permissions](https://www.digitalocean.com/community/tutorials/how-to-add-delete-and-grant-sudo-privileges-to-users-on-a-debian-vps). If you want to run this guide with root, ignore the `sudo` at the beginning of the lines, unless it calls a user like `sudo -Hu pleroma`; in this case, use `su <username> -s $SHELL -c 'command'` instead. +This guide will assume you are on Debian 12 (“bookworm”) or later. This guide should also work with Ubuntu 22.04 (“jammy”) and later. It also assumes that you have administrative rights, either as root or a user with [sudo permissions](https://www.digitalocean.com/community/tutorials/how-to-add-delete-and-grant-sudo-privileges-to-users-on-a-debian-vps). If you want to run this guide with root, ignore the `sudo` at the beginning of the lines, unless it calls a user like `sudo -Hu pleroma`; in this case, use `su <username> -s $SHELL -c 'command'` instead. {! backend/installation/generic_dependencies.include !} @@ -136,6 +136,11 @@ sudo ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/ple ``` * Before starting nginx edit the configuration and change it to your needs (e.g. change servername, change cert paths) + +* (Strongly recommended) serve media on another domain + +Refer to the [Hardening your instance](../configuration/hardening.md) document on how to serve media on another domain. We STRONGLY RECOMMEND you to do this to minimize attack vectors. + * Enable and start nginx: ```shell diff --git a/docs/installation/debian_based_jp.md b/docs/installation/debian_based_jp.md @@ -1,17 +1,20 @@ # Pleromaの入れ方 + +Note: This article is potentially outdated because at this time we may not have people who can speak this language well enough to update it. To see the up-to-date version, which may have significant differences or important caveats of the installation process, look up the English version. + ## 日本語訳について この記事は [Installing on Debian based distributions](Installing on Debian based distributions) の日本語訳です。何かがおかしいと思ったら、原文を見てください。 ## インストール -このガイドはDebian Stretchを利用することを想定しています。Ubuntu 16.04や18.04でもおそらく動作します。また、ユーザはrootもしくはsudoにより管理者権限を持っていることを前提とします。もし、以下の操作をrootユーザで行う場合は、 `sudo` を無視してください。ただし、`sudo -Hu pleroma` のようにユーザを指定している場合には `su <username> -s $SHELL -c 'command'` を代わりに使ってください。 +このガイドはDebian Bookwormを利用することを想定しています。Ubuntu 22.04でもおそらく動作します。また、ユーザはrootもしくはsudoにより管理者権限を持っていることを前提とします。もし、以下の操作をrootユーザで行う場合は、 `sudo` を無視してください。ただし、`sudo -Hu pleroma` のようにユーザを指定している場合には `su <username> -s $SHELL -c 'command'` を代わりに使ってください。 ### 必要なソフトウェア -- PostgreSQL 9.6以上 (Ubuntu16.04では9.5しか提供されていないので,[](https://www.postgresql.org/download/linux/ubuntu/)こちらから新しいバージョンを入手してください) -- `postgresql-contrib` 9.6以上 (同上) -- Elixir 1.8 以上 ([Debianのリポジトリからインストールしないこと!!! ここからインストールすること!](https://elixir-lang.org/install.html#unix-and-unix-like)。または [asdf](https://github.com/asdf-vm/asdf) をpleromaユーザーでインストールしてください) +- PostgreSQL 11.0以上 (Ubuntu16.04では9.5しか提供されていないので,[](https://www.postgresql.org/download/linux/ubuntu/)こちらから新しいバージョンを入手してください) +- `postgresql-contrib` 11.0以上 (同上) +- Elixir 1.13 以上 ([Debianのリポジトリからインストールしないこと!!! ここからインストールすること!](https://elixir-lang.org/install.html#unix-and-unix-like)。または [asdf](https://github.com/asdf-vm/asdf) をpleromaユーザーでインストールしてください) - `erlang-dev` - `erlang-nox` - `git` diff --git a/docs/installation/freebsd_en.md b/docs/installation/freebsd_en.md @@ -9,7 +9,7 @@ This document was written for FreeBSD 12.1, but should be work on future release This assumes the target system has `pkg(8)`. ``` -# pkg install elixir postgresql12-server postgresql12-client postgresql12-contrib git-lite sudo nginx gmake acme.sh cmake +# pkg install elixir postgresql12-server postgresql12-client postgresql12-contrib git-lite sudo nginx gmake acme.sh cmake vips ``` Copy the rc.d scripts to the right directory: @@ -41,6 +41,7 @@ Create a user for Pleroma: ``` # pw add user pleroma -m # echo 'export LC_ALL="en_US.UTF-8"' >> /home/pleroma/.profile +# echo 'export VIX_COMPILATION_MODE=PLATFORM_PROVIDED_LIBVIPS' >> /home/pleroma/.profile # su -l pleroma ``` @@ -173,6 +174,10 @@ Edit the defaults of `/usr/local/etc/nginx/sites-available/pleroma.nginx`: * Change `ssl_certificate_key` to `/var/db/acme/certs/example.tld/example.tld.key`. * Change all references of `example.tld` to your instance's domain name. +#### (Strongly recommended) serve media on another domain + +Refer to the [Hardening your instance](../configuration/hardening.md) document on how to serve media on another domain. We STRONGLY RECOMMEND you to do this to minimize attack vectors. + ## Creating a startup script for Pleroma Pleroma will need to compile when it initially starts, which typically takes a longer diff --git a/docs/installation/generic_dependencies.include b/docs/installation/generic_dependencies.include @@ -1,11 +1,11 @@ ## Required dependencies -* PostgreSQL 9.6+ -* Elixir 1.10+ -* Erlang OTP 22.2+ +* PostgreSQL >=11.0 +* Elixir >=1.13.0 <1.15 +* Erlang OTP >=22.2.0 (supported: <27) * git * file / libmagic -* gcc (clang might also work) +* gcc or clang * GNU make * CMake diff --git a/docs/installation/gentoo_en.md b/docs/installation/gentoo_en.md @@ -1,6 +1,8 @@ -# Installing on Gentoo GNU/Linux +# Manual install on Gentoo GNU/Linux -{! backend/installation/otp_vs_from_source_source.include !} +{! backend/installation/otp_vs_from_source.include !} + +This guide covers a manual from-source installation. To use the gentoo package, please check the [packaged installation guide for gentoo](./gentoo_otp_en.md). ## Installation @@ -57,7 +59,7 @@ Gentoo quite pointedly does not come with a cron daemon installed, and as such i If you would not like to install the optional packages, remove them from this line. -If you're running this from a low-powered virtual machine, it should work though it will take some time. There were no issues on a VPS with a single core and 1GB of RAM; if you are using an even more limited device and run into issues, you can try creating a swapfile or use a more powerful machine running Gentoo to [cross build](https://wiki.gentoo.org/wiki/Cross_build_environment). If you have a wait ahead of you, now would be a good time to take a break, strech a bit, refresh your beverage of choice and/or get a snack, and reply to Arch users' posts with "I use Gentoo btw" as we do. +If you're running this from a low-powered virtual machine, it should work though it will take some time. There were no issues on a VPS with a single core and 1GB of RAM; if you are using an even more limited device and run into issues, you can try creating a swapfile or use a more powerful machine running Gentoo to [cross build](https://wiki.gentoo.org/wiki/Cross_build_environment). If you have a wait ahead of you, now would be a good time to take a break, stretch a bit, refresh your beverage of choice and/or get a snack, and reply to Arch users' posts with "I use Gentoo btw" as we do. ### Install PostgreSQL @@ -102,7 +104,7 @@ Not only does this make it much easier to deploy changes you make, as you can co * Add a new system user for the Pleroma service and set up default directories: -Remove `,wheel` if you do not want this user to be able to use `sudo`, however note that being able to `sudo` as the `pleroma` user will make finishing the insallation and common maintenence tasks somewhat easier: +Remove `,wheel` if you do not want this user to be able to use `sudo`, however note that being able to `sudo` as the `pleroma` user will make finishing the installation and common maintenance tasks somewhat easier: ```shell # useradd -m -G users,wheel -s /bin/bash pleroma @@ -227,6 +229,10 @@ Replace all instances of `example.tld` with your instance's public URL. If for w Pay special attention to the line that begins with `ssl_ecdh_curve`. It is stongly advised to comment that line out so that OpenSSL will use its full capabilities, and it is also possible you are running OpenSSL 1.0.2 necessitating that you do this. +* (Strongly recommended) serve media on another domain + +Refer to the [Hardening your instance](../configuration/hardening.md) document on how to serve media on another domain. We STRONGLY RECOMMEND you to do this to minimize attack vectors. + * Enable and start nginx: ```shell diff --git a/docs/installation/gentoo_otp_en.md b/docs/installation/gentoo_otp_en.md @@ -0,0 +1,207 @@ +# Packaged install on Gentoo Linux + +{! backend/installation/otp_vs_from_source.include !} + +This guide covers installation via Gentoo provided packaging. A [manual installation guide for gentoo](./gentoo_en.md) is also available. + +## Installation + +This guide will assume that you have administrative rights, either as root or a user with [sudo permissions](https://wiki.gentoo.org/wiki/Sudo). Lines that begin with `#` indicate that they should be run as the superuser. Lines using `$` should be run as the indicated user, e.g. `pleroma$` should be run as the `pleroma` user. + +{! backend/installation/generic_dependencies.include !} + +### Installing a cron daemon + +Gentoo quite pointedly does not come with a cron daemon installed, and as such it is recommended you install one to automate certbot renewals and to allow other system administration tasks to be run automatically. Gentoo has [a whole wide world of cron options](https://wiki.gentoo.org/wiki/Cron) but if you just want A Cron That Works, `emerge --ask virtual/cron` will install the default cron implementation (probably cronie) which will work just fine. For the purpouses of this guide, we will be doing just that. + +### Required ebuilds + +* `www-apps/pleroma` + +#### Optional ebuilds used in this guide + +* `www-servers/nginx` (preferred, example configs for other reverse proxies can be found in the repo) +* `app-crypt/certbot` (or any other ACME client for Let’s Encrypt certificates) +* `app-crypt/certbot-nginx` (nginx certbot plugin that allows use of the all-powerful `--nginx` flag on certbot) +* `media-gfx/imagemagick` +* `media-video/ffmpeg` +* `media-libs/exiftool` + +### Prepare the system + +* If you haven't yet done so, add the [Gentoo User Repository (GURU)](https://wiki.gentoo.org/wiki/Project:GURU), where the `www-apps/pleroma` ebuild currently lives at: +```shell + # eselect repository enable guru +``` + +* Ensure that you have the latest copy of the Gentoo and GURU ebuilds if you have not synced them yet: + +```shell + # emaint sync -a +``` + + +* Emerge all required the required and suggested software in one go: + +```shell + # emerge --ask www-apps/pleroma www-servers/nginx app-crypt/certbot app-crypt/certbot-nginx +``` + +If you would not like to install the optional packages, remove them from this line. + +If you're running this from a low-powered virtual machine, it should work though it will take some time. There were no issues on a VPS with a single core and 1GB of RAM; if you are using an even more limited device and run into issues, you can try creating a swapfile or use a more powerful machine running Gentoo to [cross build](https://wiki.gentoo.org/wiki/Cross_build_environment). If you have a wait ahead of you, now would be a good time to take a break, stretch a bit, refresh your beverage of choice and/or get a snack, and reply to Arch users' posts with "I use Gentoo btw" as we do. + +### Setup PostgreSQL + +[Gentoo Wiki article](https://wiki.gentoo.org/wiki/PostgreSQL) as well as [PostgreSQL QuickStart](https://wiki.gentoo.org/wiki/PostgreSQL/QuickStart) might be worth a quick glance, as the way Gentoo handles postgres is slightly unusual, with built in capability to have two different databases running for testing and live or whatever other purpouse. While it is still straightforward to install, it does mean that the version numbers used in this guide might change for future updates, so keep an eye out for the output you get from `emerge` to ensure you are using the correct ones. + +* Initialize the database cluster + +The output from emerging postgresql should give you a command for initializing the postgres database. The default slot should be indicated in this command, ensure that it matches the command below. + +```shell + # emerge --config dev-db/postgresql:11 +``` + +### Install media / graphics packages (optional) + +See [Optional software packages needed for specific functionality](optional/media_graphics_packages.md) for details. + +```shell +# emerge --ask media-video/ffmpeg media-gfx/imagemagick media-libs/exiftool +``` + +### Setup PleromaBE + +* Generate the configuration: + +```shell + # pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql" +``` + +* Create the PostgreSQL database + +```shell + # sudo -u postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql" +``` + +* Now run the database migration: + +```shell + # pleroma_ctl migrate +``` + +* Optional: If you have installed RUM indexes (`dev-db/rum`) you also need to run: +``` + # sudo -Hu pleroma "pleroma_ctl migrate --migrations-path priv/repo/optional_migrations/rum_indexing/" +``` + +* Now you can start Pleroma already and add it in the default runlevel + +```shell + # rc-service pleroma start + # rc-update add pleroma default +``` + +It probably won't work over the public internet quite yet, however, as we still need to set up a web server to proxy to the pleroma application, as well as configure SSL. + +### Finalize installation + +Assuming you want to open your newly installed federated social network to, well, the federation, you should run nginx or some other webserver/proxy in front of Pleroma. It is also a good idea to set up Pleroma to run as a system service. + +#### Nginx + +* Install nginx, if not already done: + +```shell + # emerge --ask www-servers/nginx +``` + +* Create directories for available and enabled sites: + +```shell + # mkdir -p /etc/nginx/sites-{available,enabled} +``` + +* Append the following line at the end of the `http` block in `/etc/nginx/nginx.conf`: + +```Nginx +include sites-enabled/*; +``` + +* Setup your SSL cert, using your method of choice or certbot. If using certbot, install it if you haven't already: + +```shell + # emerge --ask app-crypt/certbot app-crypt/certbot-nginx +``` + +and then set it up: + +```shell + # mkdir -p /var/lib/letsencrypt/ + # certbot certonly --email <your@emailaddress> -d <yourdomain> --standalone +``` + +If that doesn't work the first time, add `--dry-run` to further attempts to avoid being ratelimited as you identify the issue, and do not remove it until the dry run succeeds. If that doesn’t work, make sure, that nginx is not already running. If it still doesn’t work, try setting up nginx first (change ssl “on” to “off” and try again). Often the answer to issues with certbot is to use the `--nginx` flag once you have nginx up and running. + +If you are using any additional subdomains, such as for a media proxy, you can re-run the same command with the subdomain in question. When it comes time to renew later, you will not need to run multiple times for each domain, one renew will handle it. + +--- + +* Copy the example nginx configuration and activate it: + +```shell + # cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/ + # ln -s /etc/nginx/sites-available/pleroma.nginx /etc/nginx/sites-enabled/pleroma.nginx +``` + +* Take some time to ensure that your nginx config is correct + +Replace all instances of `example.tld` with your instance's public URL. If for whatever reason you made changes to the port that your pleroma app runs on, be sure that is reflected in your configuration. + +Pay special attention to the line that begins with `ssl_ecdh_curve`. It is stongly advised to comment that line out so that OpenSSL will use its full capabilities, and it is also possible you are running OpenSSL 1.0.2 necessitating that you do this. + +* Enable and start nginx: + +```shell + # rc-update add nginx default + # /etc/init.d/nginx start +``` + +If you are using certbot, it is HIGHLY recommend you set up a cron job that renews your certificate, and that you install the suggested `certbot-nginx` plugin. If you don't do these things, you only have yourself to blame when your instance breaks suddenly because you forgot about it. + +First, ensure that the command you will be installing into your crontab works. + +```shell + # /usr/bin/certbot renew --nginx +``` + +Assuming not much time has passed since you got certbot working a few steps ago, you should get a message for all domains you installed certificates for saying `Cert not yet due for renewal`. + +Now, run crontab as a superuser with `crontab -e` or `sudo crontab -e` as appropriate, and add the following line to your cron: + +```cron +0 0 1 * * /usr/bin/certbot renew --nginx +``` + +This will run certbot on the first of the month at midnight. If you'd rather run more frequently, it's not a bad idea, feel free to go for it. + +#### Other webserver/proxies + +If you would like to use other webservers or proxies, there are example configurations for some popular alternatives in `/opt/pleroma/installation/`. You can, of course, check out [the Gentoo wiki](https://wiki.gentoo.org) for more information on installing and configuring said alternatives. + +#### Create your first user + +If your instance is up and running, you can create your first user with administrative rights with the following task: + +```shell +pleroma$ pleroma_ctl user new <username> <your@emailaddress> --admin +``` + +#### Further reading + +{! backend/installation/further_reading.include !} + +## Questions + +Questions about the installation or didn’t it work as it should be, ask in [#pleroma:libera.chat](https://matrix.to/#/#pleroma:libera.chat) via Matrix or **#pleroma** on **libera.chat** via IRC. diff --git a/docs/installation/migrating_from_source_otp_en.md b/docs/installation/migrating_from_source_otp_en.md @@ -86,26 +86,26 @@ export FLAVOUR="amd64-musl" # Clone the release build into a temporary directory and unpack it # Replace `stable` with `unstable` if you want to run the unstable branch -su pleroma -s $SHELL -lc " +sudo -Hu pleroma " curl 'https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=$FLAVOUR' -o /tmp/pleroma.zip unzip /tmp/pleroma.zip -d /tmp/ " # Move the release to the home directory and delete temporary files -su pleroma -s $SHELL -lc " +sudo -Hu pleroma " mv /tmp/release/* ~pleroma/ rmdir /tmp/release rm /tmp/pleroma.zip " # Start the instance to verify that everything is working as expected -su pleroma -s $SHELL -lc "./bin/pleroma daemon" +sudo -Hu pleroma "./bin/pleroma daemon" # Wait for about 20 seconds and query the instance endpoint, if it shows your uri, name and email correctly, you are configured correctly sleep 20 && curl http://localhost:4000/api/v1/instance # Stop the instance -su pleroma -s $SHELL -lc "./bin/pleroma stop" +sudo -Hu pleroma "./bin/pleroma stop" ``` ## Setting up a system service diff --git a/docs/installation/netbsd_en.md b/docs/installation/netbsd_en.md @@ -123,6 +123,10 @@ Edit the defaults: * Change `ssl_certificate_key` to `/etc/nginx/tls/key`. * Change `example.tld` to your instance's domain name. +### (Strongly recommended) serve media on another domain + +Refer to the [Hardening your instance](../configuration/hardening.md) document on how to serve media on another domain. We STRONGLY RECOMMEND you to do this to minimize attack vectors. + ## Configuring acme.sh We'll be using acme.sh in Stateless Mode for TLS certificate renewal. diff --git a/docs/installation/openbsd_en.md b/docs/installation/openbsd_en.md @@ -62,7 +62,7 @@ rcctl start postgresql To check that it started properly and didn't fail right after starting, you can run `ps aux | grep postgres`, there should be multiple lines of output. #### httpd -httpd will have three fuctions: +httpd will have three functions: * redirect requests trying to reach the instance over http to the https URL * serve a robots.txt file @@ -195,6 +195,10 @@ rcctl enable relayd rcctl start relayd ``` +##### (Strongly recommended) serve media on another domain + +Refer to the [Hardening your instance](../configuration/hardening.md) document on how to serve media on another domain. We STRONGLY RECOMMEND you to do this to minimize attack vectors. + #### pf Enabling and configuring pf is highly recommended. In /etc/pf.conf, insert the following configuration: @@ -221,7 +225,7 @@ pass in quick on $if inet6 proto icmp6 to ($if) icmp6-type { echoreq unreach par pass in quick on $if proto tcp to ($if) port { http https } # relayd/httpd pass in quick on $if proto tcp from $authorized_ssh_clients to ($if) port ssh ``` -Replace *<network interface\>* by your server's network interface name (which you can get with ifconfig). Consider replacing the content of the authorized\_ssh\_clients macro by, for exemple, your home IP address, to avoid SSH connection attempts from bots. +Replace *<network interface\>* by your server's network interface name (which you can get with ifconfig). Consider replacing the content of the authorized\_ssh\_clients macro by, for example, your home IP address, to avoid SSH connection attempts from bots. Check pf's configuration by running `pfctl -nf /etc/pf.conf`, load it with `pfctl -f /etc/pf.conf` and enable pf at boot with `rcctl enable pf`. diff --git a/docs/installation/openbsd_fi.md b/docs/installation/openbsd_fi.md @@ -1,5 +1,7 @@ # Pleroman asennus OpenBSD:llä +Note: This article is potentially outdated because at this time we may not have people who can speak this language well enough to update it. To see the up-to-date version, which may have significant differences or important caveats of the installation process, look up the English version. + Tarvitset: * Oman domainin * OpenBSD 6.3 -serverin diff --git a/docs/installation/optional/media_graphics_packages.md b/docs/installation/optional/media_graphics_packages.md @@ -1,9 +1,10 @@ # Optional software packages needed for specific functionality For specific Pleroma functionality (which is disabled by default) some or all of the below packages are required: - * `ImageMagic` - * `ffmpeg` - * `exiftool` + +* `ImageMagic` +* `ffmpeg` +* `exiftool` Please refer to documentation in `docs/installation` on how to install them on specific OS. @@ -14,20 +15,23 @@ Note: the packages are not required with the current default settings of Pleroma `ImageMagick` is a set of tools to create, edit, compose, or convert bitmap images. It is required for the following Pleroma features: - * `Pleroma.Upload.Filters.Mogrify`, `Pleroma.Upload.Filters.Mogrifun` upload filters (related config: `Plaroma.Upload/filters` in `config/config.exs`) - * Media preview proxy for still images (related config: `media_preview_proxy/enabled` in `config/config.exs`) + +* `Pleroma.Upload.Filters.Mogrify`, `Pleroma.Upload.Filters.Mogrifun` upload filters (related config: `Plaroma.Upload/filters` in `config/config.exs`) +* Media preview proxy for still images (related config: `media_preview_proxy/enabled` in `config/config.exs`) ## `ffmpeg` `ffmpeg` is software to record, convert and stream audio and video. It is required for the following Pleroma features: - * Media preview proxy for videos (related config: `media_preview_proxy/enabled` in `config/config.exs`) + +* Media preview proxy for videos (related config: `media_preview_proxy/enabled` in `config/config.exs`) ## `exiftool` `exiftool` is media files metadata reader/writer. It is required for the following Pleroma features: - * `Pleroma.Upload.Filters.Exiftool.StripLocation` upload filter (related config: `Plaroma.Upload/filters` in `config/config.exs`) - * `Pleroma.Upload.Filters.Exiftool.ReadDescription` upload filter (related config: `Plaroma.Upload/filters` in `config/config.exs`) + +* `Pleroma.Upload.Filters.Exiftool.StripLocation` upload filter (related config: `Plaroma.Upload/filters` in `config/config.exs`) +* `Pleroma.Upload.Filters.Exiftool.ReadDescription` upload filter (related config: `Plaroma.Upload/filters` in `config/config.exs`) diff --git a/docs/installation/otp_en.md b/docs/installation/otp_en.md @@ -2,15 +2,16 @@ {! backend/installation/otp_vs_from_source.include !} -This guide covers a installation using an OTP release. To install Pleroma from source, please check out the corresponding guide for your distro. +This guide covers a installation using OTP releases as built by the Pleroma project, it is meant as a fallback to distribution packages/recipes which are the preferred installation method. +To install Pleroma from source, please check out the corresponding guide for your distro. ## Pre-requisites -* A machine running Linux with GNU (e.g. Debian, Ubuntu) or musl (e.g. Alpine) libc and `x86_64`, `aarch64` or `armv7l` CPU, you have root access to. If you are not sure if it's compatible see [Detecting flavour section](#detecting-flavour) below +* A machine you have root access to running Debian GNU/Linux or compatible (eg. Ubuntu), or Alpine on `x86_64`, `aarch64` or `armv7l` CPU. If you are not sure what you are running see [Detecting flavour section](#detecting-flavour) below * A (sub)domain pointed to the machine -You will be running commands as root. If you aren't root already, please elevate your privileges by executing `sudo su`/`su`. +You will be running commands as root. If you aren't root already, please elevate your privileges by executing `sudo -i`/`su`. -While in theory OTP releases are possbile to install on any compatible machine, for the sake of simplicity this guide focuses only on Debian/Ubuntu and Alpine. +Similarly to other binaries, OTP releases tend to be only compatible with the distro they are built on, as such this guide focuses only on Debian/Ubuntu and Alpine. ### Detecting flavour @@ -19,7 +20,7 @@ Paste the following into the shell: arch="$(uname -m)";if [ "$arch" = "x86_64" ];then arch="amd64";elif [ "$arch" = "armv7l" ];then arch="arm";elif [ "$arch" = "aarch64" ];then arch="arm64";else echo "Unsupported arch: $arch">&2;fi;if getconf GNU_LIBC_VERSION>/dev/null;then libc_postfix="";elif [ "$(ldd 2>&1|head -c 9)" = "musl libc" ];then libc_postfix="-musl";elif [ "$(find /lib/libc.musl*|wc -l)" ];then libc_postfix="-musl";else echo "Unsupported libc">&2;fi;echo "$arch$libc_postfix" ``` -If your platform is supported the output will contain the flavour string, you will need it later. If not, this just means that we don't build releases for your platform, you can still try installing from source. +This should give your flavour string. If not this just means that we don't build releases for your platform, you can still try installing from source. ### Installing the required packages @@ -114,13 +115,13 @@ adduser --system --shell /bin/false --home /opt/pleroma pleroma export FLAVOUR="amd64-musl" # Clone the release build into a temporary directory and unpack it -su pleroma -s $SHELL -lc " +sudo -Hu pleroma " curl 'https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=$FLAVOUR' -o /tmp/pleroma.zip unzip /tmp/pleroma.zip -d /tmp/ " # Move the release to the home directory and delete temporary files -su pleroma -s $SHELL -lc " +sudo -Hu pleroma " mv /tmp/release/* /opt/pleroma rmdir /tmp/release rm /tmp/pleroma.zip @@ -141,25 +142,25 @@ mkdir -p /etc/pleroma chown -R pleroma /etc/pleroma # Run the config generator -su pleroma -s $SHELL -lc "./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql" +sudo -Hu pleroma "./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql" # Create the postgres database -su postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql" +sudo -u postgres -s $SHELL -lc "psql -f /tmp/setup_db.psql" # Create the database schema -su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate" +sudo -Hu pleroma "./bin/pleroma_ctl migrate" # If you have installed RUM indexes uncommend and run -# su pleroma -s $SHELL -lc "./bin/pleroma_ctl migrate --migrations-path priv/repo/optional_migrations/rum_indexing/" +# sudo -Hu pleroma "./bin/pleroma_ctl migrate --migrations-path priv/repo/optional_migrations/rum_indexing/" # Start the instance to verify that everything is working as expected -su pleroma -s $SHELL -lc "./bin/pleroma daemon" +sudo -Hu pleroma "./bin/pleroma daemon" # Wait for about 20 seconds and query the instance endpoint, if it shows your uri, name and email correctly, you are configured correctly sleep 20 && curl http://localhost:4000/api/v1/instance # Stop the instance -su pleroma -s $SHELL -lc "./bin/pleroma stop" +sudo -Hu pleroma "./bin/pleroma stop" ``` ### Setting up nginx and getting Let's Encrypt SSL certificaties @@ -197,6 +198,10 @@ $EDITOR path-to-nginx-config # Verify that the config is valid nginx -t ``` +#### (Strongly recommended) serve media on another domain + +Refer to the [Hardening your instance](../configuration/hardening.md) document on how to serve media on another domain. We STRONGLY RECOMMEND you to do this to minimize attack vectors. + #### Start nginx === "Alpine" @@ -233,7 +238,7 @@ At this point if you open your (sub)domain in a browser you should see a 502 err systemctl enable pleroma ``` -If everything worked, you should see Pleroma-FE when visiting your domain. If that didn't happen, try reviewing the installation steps, starting Pleroma in the foreground and seeing if there are any errrors. +If everything worked, you should see Pleroma-FE when visiting your domain. If that didn't happen, try reviewing the installation steps, starting Pleroma in the foreground and seeing if there are any errors. Questions about the installation or didn’t it work as it should be, ask in [#pleroma:libera.chat](https://matrix.to/#/#pleroma:libera.chat) via Matrix or **#pleroma** on **libera.chat** via IRC, you can also [file an issue on our Gitlab](https://git.pleroma.social/pleroma/pleroma-support/issues/new). diff --git a/docs/installation/otp_vs_from_source.include b/docs/installation/otp_vs_from_source.include @@ -1,3 +1,8 @@ -## OTP releases vs from-source installations +## Packaged (OTP) installation vs Manual (from-source) installations -There are two ways to install Pleroma. You can use OTP releases or do a from-source installation. OTP releases are as close as you can get to binary releases with Erlang/Elixir. The release is self-contained, and provides everything needed to boot it, it is easily administered via the provided shell script to open up a remote console, start/stop/restart the release, start in the background, send remote commands, and more. With from source installations you install Pleroma from source, meaning you have to install certain dependencies like Erlang+Elixir and compile Pleroma yourself. +There is multiple ways to install Pleroma. +<dl> +<dt>Distro-provided packages</dt><dd>This is the recommended method, where you can get the strongest compatibility guarantees and the best dependency-management</dd> +<dt>Pleroma-provided OTP binaries</dt><dd>Intended as fallback for Alpine/Debian-compatible systems lacking a proper Pleroma package, they are heavier than proper distro packages as they also contain Erlang/Elixir and can break after system updates</dd> +<dt>Manual from-source installation</dt><dd>Needs build-dependencies to be installed and manual updates+rebuilds. Allows for easier source-customisations.</dd> +</dl> diff --git a/docs/installation/otp_vs_from_source_source.include b/docs/installation/otp_vs_from_source_source.include @@ -1,3 +1,3 @@ {! backend/installation/otp_vs_from_source.include !} -This guide covers a from-source installation. To install using OTP releases, please check out [the OTP guide](./otp_en.md). +This guide covers a manual from-source installation. To install using OTP releases, please check for the presence of a distro package, failing that you can use [Pleroma-provided OTP binaries](./otp_en.md). diff --git a/installation/init.d/pleroma b/installation/init.d/pleroma @@ -8,6 +8,7 @@ pidfile="/var/run/pleroma.pid" directory=/opt/pleroma healthcheck_delay=60 healthcheck_timer=30 +no_new_privs="yes" : ${pleroma_port:-4000} diff --git a/installation/nsfw-api.service b/installation/nsfw-api.service @@ -0,0 +1,15 @@ +[Unit] +Description=NSFW API +After=docker.service +Requires=docker.service + +[Service] +TimeoutStartSec=0 +Restart=always +ExecStartPre=-/usr/bin/docker stop %n +ExecStartPre=-/usr/bin/docker rm %n +ExecStartPre=/usr/bin/docker pull eugencepoi/nsfw_api:latest +ExecStart=/usr/bin/docker run --rm -p 127.0.0.1:5000:5000/tcp --env PORT=5000 --name %n eugencepoi/nsfw_api:latest + +[Install] +WantedBy=multi-user.target diff --git a/installation/pleroma-mediaproxy.nginx b/installation/pleroma-mediaproxy.nginx @@ -0,0 +1,97 @@ +# This file is for those who want to serve uploaded media and media proxy over +# another domain. This is STRONGLY RECOMMENDED. +# This is meant to be used ALONG WITH `pleroma.nginx`. + +# If this is a new instance, replace the `location ~ ^/(media|proxy)` section in +# `pleroma.nginx` with the following to completely disable access to media from the main domain: +# location ~ ^/(media|proxy) { +# return 404; +# } +# +# If you are configuring an existing instance to use another domain +# for media, you will want to keep redirecting all existing local media to the new domain +# so already-uploaded media will not break. +# Replace the `location ~ ^/(media|proxy)` section in `pleroma.nginx` with the following: +# +# location /media { +# return 301 https://some.other.domain$request_uri; +# } +# +# location /proxy { +# return 404; +# } + +server { + server_name some.other.domain; + + listen 80; + listen [::]:80; + + # Uncomment this if you need to use the 'webroot' method with certbot. Make sure + # that the directory exists and that it is accessible by the webserver. If you followed + # the guide, you already ran 'mkdir -p /var/lib/letsencrypt' to create the folder. + # You may need to load this file with the ssl server block commented out, run certbot + # to get the certificate, and then uncomment it. + # + # location ~ /\.well-known/acme-challenge { + # root /var/lib/letsencrypt/; + # } + location / { + return 301 https://$server_name$request_uri; + } +} + +server { + server_name some.other.domain; + + listen 443 ssl http2; + listen [::]:443 ssl http2; + ssl_session_timeout 1d; + ssl_session_cache shared:MozSSL:10m; # about 40000 sessions + ssl_session_tickets off; + + ssl_trusted_certificate /etc/letsencrypt/live/some.other.domain/chain.pem; + ssl_certificate /etc/letsencrypt/live/some.other.domain/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/some.other.domain/privkey.pem; + + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; + ssl_prefer_server_ciphers off; + # In case of an old server with an OpenSSL version of 1.0.2 or below, + # leave only prime256v1 or comment out the following line. + ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; + ssl_stapling on; + ssl_stapling_verify on; + + gzip_vary on; + gzip_proxied any; + gzip_comp_level 6; + gzip_buffers 16 8k; + gzip_http_version 1.1; + gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/activity+json application/atom+xml; + + # the nginx default is 1m, not enough for large media uploads + client_max_body_size 16m; + ignore_invalid_headers off; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + location / { return 404; } + + location ~ ^/(media|proxy) { + proxy_cache pleroma_media_cache; + slice 1m; + proxy_cache_key $host$uri$is_args$args$slice_range; + proxy_set_header Range $slice_range; + proxy_cache_valid 200 206 301 304 1h; + proxy_cache_lock on; + proxy_ignore_client_abort on; + proxy_buffering on; + chunked_transfer_encoding on; + proxy_pass http://phoenix; + } +} diff --git a/installation/pleroma-mongooseim.cfg b/installation/pleroma-mongooseim.cfg @@ -204,7 +204,7 @@ ]} ]}, - %% Following HTTP API is deprected, the new one abouve should be used instead + %% Following HTTP API is deprecated, the new one above should be used instead { {5288, "127.0.0.1"} , ejabberd_cowboy, [ {num_acceptors, 10}, @@ -824,7 +824,7 @@ %% Enable archivization for private messages (default) % {pm, [ - %% Top-level options can be overriden here if needed, for example: + %% Top-level options can be overridden here if needed, for example: % {async_writer, false} % ]}, @@ -834,7 +834,7 @@ %% % {muc, [ % {host, "muc.@HOST@"} - %% As with pm, top-level options can be overriden for MUC archive + %% As with pm, top-level options can be overridden for MUC archive % ]}, % %% Do not use a <stanza-id/> element (by default stanzaid is used) diff --git a/lib/mix/tasks/pleroma/benchmark.ex b/lib/mix/tasks/pleroma/benchmark.ex @@ -1,113 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Mix.Tasks.Pleroma.Benchmark do - import Mix.Pleroma - use Mix.Task - - def run(["search"]) do - start_pleroma() - - Benchee.run(%{ - "search" => fn -> - Pleroma.Activity.search(nil, "cofe") - end - }) - end - - def run(["tag"]) do - start_pleroma() - - Benchee.run(%{ - "tag" => fn -> - %{"type" => "Create", "tag" => "cofe"} - |> Pleroma.Web.ActivityPub.ActivityPub.fetch_public_activities() - end - }) - end - - def run(["render_timeline", nickname | _] = args) do - start_pleroma() - user = Pleroma.User.get_by_nickname(nickname) - - activities = - %{} - |> Map.put("type", ["Create", "Announce"]) - |> Map.put("blocking_user", user) - |> Map.put("muting_user", user) - |> Map.put("user", user) - |> Map.put("limit", 4096) - |> Pleroma.Web.ActivityPub.ActivityPub.fetch_public_activities() - |> Enum.reverse() - - inputs = %{ - "1 activity" => Enum.take_random(activities, 1), - "10 activities" => Enum.take_random(activities, 10), - "20 activities" => Enum.take_random(activities, 20), - "40 activities" => Enum.take_random(activities, 40), - "80 activities" => Enum.take_random(activities, 80) - } - - inputs = - if Enum.at(args, 2) == "extended" do - Map.merge(inputs, %{ - "200 activities" => Enum.take_random(activities, 200), - "500 activities" => Enum.take_random(activities, 500), - "2000 activities" => Enum.take_random(activities, 2000), - "4096 activities" => Enum.take_random(activities, 4096) - }) - else - inputs - end - - Benchee.run( - %{ - "Standart rendering" => fn activities -> - Pleroma.Web.MastodonAPI.StatusView.render("index.json", %{ - activities: activities, - for: user, - as: :activity - }) - end - }, - inputs: inputs - ) - end - - def run(["adapters"]) do - start_pleroma() - - :ok = - Pleroma.Gun.Conn.open( - "https://httpbin.org/stream-bytes/1500", - :gun_connections - ) - - Process.sleep(1_500) - - Benchee.run( - %{ - "Without conn and without pool" => fn -> - {:ok, %Tesla.Env{}} = - Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], - pool: :no_pool, - receive_conn: false - ) - end, - "Without conn and with pool" => fn -> - {:ok, %Tesla.Env{}} = - Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], receive_conn: false) - end, - "With reused conn and without pool" => fn -> - {:ok, %Tesla.Env{}} = - Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], pool: :no_pool) - end, - "With reused conn and with pool" => fn -> - {:ok, %Tesla.Env{}} = Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500") - end - }, - parallel: 10 - ) - end -end diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex @@ -193,7 +193,7 @@ defmodule Mix.Tasks.Pleroma.Database do "ALTER DATABASE #{db} SET default_text_search_config = '#{tsconfig}';" ) - # non-exist config will not raise excpetion but only give >0 messages + # non-exist config will not raise exception but only give >0 messages if length(msg) > 0 do shell_info("Error: #{inspect(msg, pretty: true)}") else diff --git a/lib/mix/tasks/pleroma/digest.ex b/lib/mix/tasks/pleroma/digest.ex @@ -30,7 +30,7 @@ defmodule Mix.Tasks.Pleroma.Digest do shell_info("Digest email have been sent to #{nickname} (#{user.email})") else _ -> - shell_info("Cound't find any mentions for #{nickname} since #{last_digest_emailed_at}") + shell_info("Couldn't find any mentions for #{nickname} since #{last_digest_emailed_at}") end end end diff --git a/lib/mix/tasks/pleroma/ecto/rollback.ex b/lib/mix/tasks/pleroma/ecto/rollback.ex @@ -61,7 +61,7 @@ defmodule Mix.Tasks.Pleroma.Ecto.Rollback do Logger.configure(level: :info) if opts[:env] == "test" do - Logger.info("Rollback succesfully") + Logger.info("Rollback successfully") else {:ok, _, _} = Ecto.Migrator.with_repo(Pleroma.Repo, &Ecto.Migrator.run(&1, path, :down, opts)) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex @@ -111,7 +111,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do {:ok, _} = :zip.unzip(binary_archive, - cwd: pack_path, + cwd: String.to_charlist(pack_path), file_list: files_to_unzip ) diff --git a/lib/mix/tasks/pleroma/instance.ex b/lib/mix/tasks/pleroma/instance.ex @@ -266,12 +266,20 @@ defmodule Mix.Tasks.Pleroma.Instance do config_dir = Path.dirname(config_path) psql_dir = Path.dirname(psql_path) + # Note: Distros requiring group read (0o750) on those directories should + # pre-create the directories. [config_dir, psql_dir, static_dir, uploads_dir] |> Enum.reject(&File.exists?/1) - |> Enum.map(&File.mkdir_p!/1) + |> Enum.each(fn dir -> + File.mkdir_p!(dir) + File.chmod!(dir, 0o700) + end) shell_info("Writing config to #{config_path}.") + # Sadly no fchmod(2) equivalent in Elixir… + File.touch!(config_path) + File.chmod!(config_path, 0o640) File.write(config_path, result_config) shell_info("Writing the postgres script to #{psql_path}.") File.write(psql_path, result_psql) @@ -284,14 +292,13 @@ defmodule Mix.Tasks.Pleroma.Instance do if db_configurable? do shell_info( - " Please transfer your config to the database after running database migrations. Refer to \"Transfering the config to/from the database\" section of the docs for more information." + " Please transfer your config to the database after running database migrations. Refer to \"Transferring the config to/from the database\" section of the docs for more information." ) end else shell_error( "The task would have overwritten the following files:\n" <> - (Enum.map(will_overwrite, &"- #{&1}\n") |> Enum.join("")) <> - "Rerun with `--force` to overwrite them." + Enum.map_join(will_overwrite, &"- #{&1}\n") <> "Rerun with `--force` to overwrite them." ) end end @@ -345,6 +352,4 @@ defmodule Mix.Tasks.Pleroma.Instance do enabled_filters end - - defp upload_filters(_), do: [] end diff --git a/lib/mix/tasks/pleroma/search/meilisearch.ex b/lib/mix/tasks/pleroma/search/meilisearch.ex @@ -0,0 +1,145 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Mix.Tasks.Pleroma.Search.Meilisearch do + require Pleroma.Constants + + import Mix.Pleroma + import Ecto.Query + + import Pleroma.Search.Meilisearch, + only: [meili_post: 2, meili_put: 2, meili_get: 1, meili_delete: 1] + + def run(["index"]) do + start_pleroma() + Pleroma.HTML.compile_scrubbers() + + meili_version = + ( + {:ok, result} = meili_get("/version") + + result["pkgVersion"] + ) + + # The ranking rule syntax was changed but nothing about that is mentioned in the changelog + if not Version.match?(meili_version, ">= 0.25.0") do + raise "Meilisearch <0.24.0 not supported" + end + + {:ok, _} = + meili_post( + "/indexes/objects/settings/ranking-rules", + [ + "published:desc", + "words", + "exactness", + "proximity", + "typo", + "attribute", + "sort" + ] + ) + + {:ok, _} = + meili_post( + "/indexes/objects/settings/searchable-attributes", + [ + "content" + ] + ) + + IO.puts("Created indices. Starting to insert posts.") + + chunk_size = Pleroma.Config.get([Pleroma.Search.Meilisearch, :initial_indexing_chunk_size]) + + Pleroma.Repo.transaction( + fn -> + query = + from(Pleroma.Object, + # Only index public and unlisted posts which are notes and have some text + where: + fragment("data->>'type' = 'Note'") and + (fragment("data->'to' \\? ?", ^Pleroma.Constants.as_public()) or + fragment("data->'cc' \\? ?", ^Pleroma.Constants.as_public())), + order_by: [desc: fragment("data->'published'")] + ) + + count = query |> Pleroma.Repo.aggregate(:count, :data) + IO.puts("Entries to index: #{count}") + + Pleroma.Repo.stream( + query, + timeout: :infinity + ) + |> Stream.map(&Pleroma.Search.Meilisearch.object_to_search_data/1) + |> Stream.filter(fn o -> not is_nil(o) end) + |> Stream.chunk_every(chunk_size) + |> Stream.transform(0, fn objects, acc -> + new_acc = acc + Enum.count(objects) + + # Reset to the beginning of the line and rewrite it + IO.write("\r") + IO.write("Indexed #{new_acc} entries") + + {[objects], new_acc} + end) + |> Stream.each(fn objects -> + result = + meili_put( + "/indexes/objects/documents", + objects + ) + + with {:ok, res} <- result do + if not Map.has_key?(res, "uid") do + IO.puts("\nFailed to index: #{inspect(result)}") + end + else + e -> IO.puts("\nFailed to index due to network error: #{inspect(e)}") + end + end) + |> Stream.run() + end, + timeout: :infinity + ) + + IO.write("\n") + end + + def run(["clear"]) do + start_pleroma() + + meili_delete("/indexes/objects/documents") + end + + def run(["show-keys", master_key]) do + start_pleroma() + + endpoint = Pleroma.Config.get([Pleroma.Search.Meilisearch, :url]) + + {:ok, result} = + Pleroma.HTTP.get( + Path.join(endpoint, "/keys"), + [{"Authorization", "Bearer #{master_key}"}] + ) + + decoded = Jason.decode!(result.body) + + if decoded["results"] do + Enum.each(decoded["results"], fn %{"description" => desc, "key" => key} -> + IO.puts("#{desc}: #{key}") + end) + else + IO.puts("Error fetching the keys, check the master key is correct: #{inspect(decoded)}") + end + end + + def run(["stats"]) do + start_pleroma() + + {:ok, result} = meili_get("/indexes/objects/stats") + IO.puts("Number of entries: #{result["numberOfDocuments"]}") + IO.puts("Indexing? #{result["isIndexing"]}") + end +end diff --git a/lib/phoenix/transports/web_socket/raw.ex b/lib/phoenix/transports/web_socket/raw.ex @@ -1,94 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Phoenix.Transports.WebSocket.Raw do - import Plug.Conn, - only: [ - fetch_query_params: 1, - send_resp: 3 - ] - - alias Phoenix.Socket.Transport - - def default_config do - [ - timeout: 60_000, - transport_log: false, - cowboy: Phoenix.Endpoint.CowboyWebSocket - ] - end - - def init(%Plug.Conn{method: "GET"} = conn, {endpoint, handler, transport}) do - {_, opts} = handler.__transport__(transport) - - conn = - conn - |> fetch_query_params - |> Transport.transport_log(opts[:transport_log]) - |> Transport.force_ssl(handler, endpoint, opts) - |> Transport.check_origin(handler, endpoint, opts) - - case conn do - %{halted: false} = conn -> - case handler.connect(%{ - endpoint: endpoint, - transport: transport, - options: [serializer: nil], - params: conn.params - }) do - {:ok, socket} -> - {:ok, conn, {__MODULE__, {socket, opts}}} - - :error -> - send_resp(conn, :forbidden, "") - {:error, conn} - end - - _ -> - {:error, conn} - end - end - - def init(conn, _) do - send_resp(conn, :bad_request, "") - {:error, conn} - end - - def ws_init({socket, config}) do - Process.flag(:trap_exit, true) - {:ok, %{socket: socket}, config[:timeout]} - end - - def ws_handle(op, data, state) do - state.socket.handler - |> apply(:handle, [op, data, state]) - |> case do - {op, data} -> - {:reply, {op, data}, state} - - {op, data, state} -> - {:reply, {op, data}, state} - - %{} = state -> - {:ok, state} - - _ -> - {:ok, state} - end - end - - def ws_info({_, _} = tuple, state) do - {:reply, tuple, state} - end - - def ws_info(_tuple, state), do: {:ok, state} - - def ws_close(state) do - ws_handle(:closed, :normal, state) - end - - def ws_terminate(reason, state) do - ws_handle(:closed, reason, state) - end -end diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex @@ -368,7 +368,7 @@ defmodule Pleroma.Activity do ) end - defdelegate search(user, query, options \\ []), to: Pleroma.Activity.Search + defdelegate search(user, query, options \\ []), to: Pleroma.Search.DatabaseSearch def direct_conversation_id(activity, for_user) do alias Pleroma.Conversation.Participation diff --git a/lib/pleroma/activity/html.ex b/lib/pleroma/activity/html.ex @@ -28,7 +28,7 @@ defmodule Pleroma.Activity.HTML do end end - defp add_cache_key_for(activity_id, additional_key) do + def add_cache_key_for(activity_id, additional_key) do current = get_cache_keys_for(activity_id) unless additional_key in current do diff --git a/lib/pleroma/activity/queries.ex b/lib/pleroma/activity/queries.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Activity.Queries do import Ecto.Query, only: [from: 2, where: 3] - @type query :: Ecto.Queryable.t() | Activity.t() + @type query :: Ecto.Queryable.t() | Pleroma.Activity.t() alias Pleroma.Activity alias Pleroma.User diff --git a/lib/pleroma/activity/search.ex b/lib/pleroma/activity/search.ex @@ -1,162 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Activity.Search do - alias Pleroma.Activity - alias Pleroma.Object.Fetcher - alias Pleroma.Pagination - alias Pleroma.User - alias Pleroma.Web.ActivityPub.Visibility - - require Pleroma.Constants - - import Ecto.Query - - def search(user, search_query, options \\ []) do - index_type = if Pleroma.Config.get([:database, :rum_enabled]), do: :rum, else: :gin - limit = Enum.min([Keyword.get(options, :limit), 40]) - offset = Keyword.get(options, :offset, 0) - author = Keyword.get(options, :author) - - search_function = - if :persistent_term.get({Pleroma.Repo, :postgres_version}) >= 11 do - :websearch - else - :plain - end - - try do - Activity - |> Activity.with_preloaded_object() - |> Activity.restrict_deactivated_users() - |> restrict_public(user) - |> query_with(index_type, search_query, search_function) - |> maybe_restrict_local(user) - |> maybe_restrict_author(author) - |> maybe_restrict_blocked(user) - |> Pagination.fetch_paginated( - %{"offset" => offset, "limit" => limit, "skip_order" => index_type == :rum}, - :offset - ) - |> maybe_fetch(user, search_query) - rescue - _ -> maybe_fetch([], user, search_query) - end - end - - def maybe_restrict_author(query, %User{} = author) do - Activity.Queries.by_author(query, author) - end - - def maybe_restrict_author(query, _), do: query - - def maybe_restrict_blocked(query, %User{} = user) do - Activity.Queries.exclude_authors(query, User.blocked_users_ap_ids(user)) - end - - def maybe_restrict_blocked(query, _), do: query - - defp restrict_public(q, user) when not is_nil(user) do - intended_recipients = [ - Pleroma.Constants.as_public(), - Pleroma.Web.ActivityPub.Utils.as_local_public() - ] - - from([a, o] in q, - where: fragment("?->>'type' = 'Create'", a.data), - where: fragment("? && ?", ^intended_recipients, a.recipients) - ) - end - - defp restrict_public(q, _user) do - from([a, o] in q, - where: fragment("?->>'type' = 'Create'", a.data), - where: ^Pleroma.Constants.as_public() in a.recipients - ) - end - - defp query_with(q, :gin, search_query, :plain) do - %{rows: [[tsc]]} = - Ecto.Adapters.SQL.query!( - Pleroma.Repo, - "select current_setting('default_text_search_config')::regconfig::oid;" - ) - - from([a, o] in q, - where: - fragment( - "to_tsvector(?::oid::regconfig, ?->>'content') @@ plainto_tsquery(?)", - ^tsc, - o.data, - ^search_query - ) - ) - end - - defp query_with(q, :gin, search_query, :websearch) do - %{rows: [[tsc]]} = - Ecto.Adapters.SQL.query!( - Pleroma.Repo, - "select current_setting('default_text_search_config')::regconfig::oid;" - ) - - from([a, o] in q, - where: - fragment( - "to_tsvector(?::oid::regconfig, ?->>'content') @@ websearch_to_tsquery(?)", - ^tsc, - o.data, - ^search_query - ) - ) - end - - defp query_with(q, :rum, search_query, :plain) do - from([a, o] in q, - where: - fragment( - "? @@ plainto_tsquery(?)", - o.fts_content, - ^search_query - ), - order_by: [fragment("? <=> now()::date", o.inserted_at)] - ) - end - - defp query_with(q, :rum, search_query, :websearch) do - from([a, o] in q, - where: - fragment( - "? @@ websearch_to_tsquery(?)", - o.fts_content, - ^search_query - ), - order_by: [fragment("? <=> now()::date", o.inserted_at)] - ) - end - - defp maybe_restrict_local(q, user) do - limit = Pleroma.Config.get([:instance, :limit_to_local_content], :unauthenticated) - - case {limit, user} do - {:all, _} -> restrict_local(q) - {:unauthenticated, %User{}} -> q - {:unauthenticated, _} -> restrict_local(q) - {false, _} -> q - end - end - - defp restrict_local(q), do: where(q, local: true) - - defp maybe_fetch(activities, user, search_query) do - with true <- Regex.match?(~r/https?:/, search_query), - {:ok, object} <- Fetcher.fetch_object_from_id(search_query), - %Activity{} = activity <- Activity.get_create_by_object_ap_id(object.data["id"]), - true <- Visibility.visible_for_user?(activity, user) do - [activity | activities] - else - _ -> activities - end - end -end diff --git a/lib/pleroma/announcement.ex b/lib/pleroma/announcement.ex @@ -23,19 +23,21 @@ defmodule Pleroma.Announcement do timestamps(type: :utc_datetime) end - def change(struct, params \\ %{}) do - struct - |> cast(validate_params(struct, params), [:data, :starts_at, :ends_at, :rendered]) + @doc "Generates changeset for %Pleroma.Announcement{}" + @spec changeset(%__MODULE__{}, map()) :: %Ecto.Changeset{} + def changeset(announcement \\ %__MODULE__{}, params \\ %{data: %{}}) do + announcement + |> cast(validate_params(announcement, params), [:data, :starts_at, :ends_at, :rendered]) |> validate_required([:data]) end - defp validate_params(struct, params) do + defp validate_params(announcement, params) do base_data = %{ "content" => "", "all_day" => false } - |> Map.merge((struct && struct.data) || %{}) + |> Map.merge((announcement && announcement.data) || %{}) merged_data = Map.merge(base_data, params.data) @@ -61,13 +63,13 @@ defmodule Pleroma.Announcement do end def add(params) do - changeset = change(%__MODULE__{}, params) + changeset = changeset(%__MODULE__{}, params) Repo.insert(changeset) end def update(announcement, params) do - changeset = change(announcement, params) + changeset = changeset(announcement, params) Repo.update(changeset) end diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex @@ -14,7 +14,6 @@ defmodule Pleroma.Application do @name Mix.Project.config()[:name] @version Mix.Project.config()[:version] @repository Mix.Project.config()[:source_url] - @mix_env Mix.env() def name, do: @name def version, do: @version @@ -54,7 +53,6 @@ defmodule Pleroma.Application do Config.DeprecationWarnings.warn() Pleroma.Web.Plugs.HTTPSecurityPlug.warn_if_disabled() Pleroma.ApplicationRequirements.verify!() - setup_instrumenters() load_custom_modules() Pleroma.Docs.JSON.compile() limiters_setup() @@ -91,6 +89,7 @@ defmodule Pleroma.Application do # Define workers and child supervisors to be supervised children = [ + Pleroma.PromEx, Pleroma.Repo, Config.TransferTask, Pleroma.Emoji, @@ -98,7 +97,7 @@ defmodule Pleroma.Application do {Task.Supervisor, name: Pleroma.TaskSupervisor} ] ++ cachex_children() ++ - http_children(adapter, @mix_env) ++ + http_children(adapter) ++ [ Pleroma.Stats, Pleroma.JobQueueMonitor, @@ -106,46 +105,22 @@ defmodule Pleroma.Application do {Oban, Config.get(Oban)}, Pleroma.Web.Endpoint ] ++ - task_children(@mix_env) ++ - dont_run_in_test(@mix_env) ++ + task_children() ++ + streamer_registry() ++ + background_migrators() ++ shout_child(shout_enabled?()) ++ - [Pleroma.Gopher.Server] + [Pleroma.Gopher.Server] ++ + [Pleroma.Search.Healthcheck] # See http://elixir-lang.org/docs/stable/elixir/Supervisor.html # for other strategies and supported options # If we have a lot of caches, default max_restarts can cause test # resets to fail. # Go for the default 3 unless we're in test - max_restarts = - if @mix_env == :test do - 100 - else - 3 - end + max_restarts = Application.get_env(:pleroma, __MODULE__)[:max_restarts] opts = [strategy: :one_for_one, name: Pleroma.Supervisor, max_restarts: max_restarts] - result = Supervisor.start_link(children, opts) - - set_postgres_server_version() - - result - end - - defp set_postgres_server_version do - version = - with %{rows: [[version]]} <- Ecto.Adapters.SQL.query!(Pleroma.Repo, "show server_version"), - {num, _} <- Float.parse(version) do - num - else - e -> - Logger.warn( - "Could not get the postgres version: #{inspect(e)}.\nSetting the default value of 9.6" - ) - - 9.6 - end - - :persistent_term.put({Pleroma.Repo, :postgres_version}, version) + Supervisor.start_link(children, opts) end def load_custom_modules do @@ -159,7 +134,7 @@ defmodule Pleroma.Application do raise "Invalid custom modules" {:ok, modules, _warnings} -> - if @mix_env != :test do + if Application.get_env(:pleroma, __MODULE__)[:load_custom_modules] do Enum.each(modules, fn mod -> Logger.info("Custom module loaded: #{inspect(mod)}") end) @@ -170,29 +145,6 @@ defmodule Pleroma.Application do end end - defp setup_instrumenters do - require Prometheus.Registry - - if Application.get_env(:prometheus, Pleroma.Repo.Instrumenter) do - :ok = - :telemetry.attach( - "prometheus-ecto", - [:pleroma, :repo, :query], - &Pleroma.Repo.Instrumenter.handle_event/4, - %{} - ) - - Pleroma.Repo.Instrumenter.setup() - end - - Pleroma.Web.Endpoint.MetricsExporter.setup() - Pleroma.Web.Endpoint.PipelineInstrumenter.setup() - - # Note: disabled until prometheus-phx is integrated into prometheus-phoenix: - # Pleroma.Web.Endpoint.Instrumenter.setup() - PrometheusPhx.setup() - end - defp cachex_children do [ build_cachex("used_captcha", ttl_interval: seconds_valid_interval()), @@ -205,12 +157,14 @@ defmodule Pleroma.Application do build_cachex("web_resp", limit: 2500), build_cachex("emoji_packs", expiration: emoji_packs_expiration(), limit: 10), build_cachex("failed_proxy_url", limit: 2500), + build_cachex("failed_media_helper_url", default_ttl: :timer.minutes(15), limit: 2_500), build_cachex("banned_urls", default_ttl: :timer.hours(24 * 30), limit: 5_000), build_cachex("chat_message_id_idempotency_key", expiration: chat_message_id_idempotency_key_expiration(), limit: 500_000 ), - build_cachex("rel_me", limit: 2500) + build_cachex("rel_me", limit: 2500), + build_cachex("host_meta", default_ttl: :timer.minutes(120), limit: 5000) ] end @@ -236,24 +190,30 @@ defmodule Pleroma.Application do defp shout_enabled?, do: Config.get([:shout, :enabled]) - defp dont_run_in_test(env) when env in [:test, :benchmark], do: [] - - defp dont_run_in_test(_) do - [ - {Registry, - [ - name: Pleroma.Web.Streamer.registry(), - keys: :duplicate, - partitions: System.schedulers_online() - ]} - ] ++ background_migrators() + defp streamer_registry do + if Application.get_env(:pleroma, __MODULE__)[:streamer_registry] do + [ + {Registry, + [ + name: Pleroma.Web.Streamer.registry(), + keys: :duplicate, + partitions: System.schedulers_online() + ]} + ] + else + [] + end end defp background_migrators do - [ - Pleroma.Migrators.HashtagsTableMigrator, - Pleroma.Migrators.ContextObjectsDeletionMigrator - ] + if Application.get_env(:pleroma, __MODULE__)[:background_migrators] do + [ + Pleroma.Migrators.HashtagsTableMigrator, + Pleroma.Migrators.ContextObjectsDeletionMigrator + ] + else + [] + end end defp shout_child(true) do @@ -265,37 +225,43 @@ defmodule Pleroma.Application do defp shout_child(_), do: [] - defp task_children(:test) do - [ + defp task_children do + children = [ %{ id: :web_push_init, start: {Task, :start_link, [&Pleroma.Web.Push.init/0]}, restart: :temporary } ] - end - defp task_children(_) do - [ - %{ - id: :web_push_init, - start: {Task, :start_link, [&Pleroma.Web.Push.init/0]}, - restart: :temporary - }, - %{ - id: :internal_fetch_init, - start: {Task, :start_link, [&Pleroma.Web.ActivityPub.InternalFetchActor.init/0]}, - restart: :temporary - } - ] + if Application.get_env(:pleroma, __MODULE__)[:internal_fetch] do + children ++ + [ + %{ + id: :internal_fetch_init, + start: {Task, :start_link, [&Pleroma.Web.ActivityPub.InternalFetchActor.init/0]}, + restart: :temporary + } + ] + else + children + end end # start hackney and gun pools in tests - defp http_children(_, :test) do - http_children(Tesla.Adapter.Hackney, nil) ++ http_children(Tesla.Adapter.Gun, nil) + defp http_children(adapter) do + if Application.get_env(:pleroma, __MODULE__)[:test_http_pools] do + http_children_hackney() ++ http_children_gun() + else + cond do + match?(Tesla.Adapter.Hackney, adapter) -> http_children_hackney() + match?(Tesla.Adapter.Gun, adapter) -> http_children_gun() + true -> [] + end + end end - defp http_children(Tesla.Adapter.Hackney, _) do + defp http_children_hackney do pools = [:federation, :media] pools = @@ -311,18 +277,20 @@ defmodule Pleroma.Application do end end - defp http_children(Tesla.Adapter.Gun, _) do + defp http_children_gun do Pleroma.Gun.ConnectionPool.children() ++ [{Task, &Pleroma.HTTP.AdapterHelper.Gun.limiter_setup/0}] end - defp http_children(_, _), do: [] - @spec limiters_setup() :: :ok def limiters_setup do config = Config.get(ConcurrentLimiter, []) - [Pleroma.Web.RichMedia.Helpers, Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy] + [ + Pleroma.Web.RichMedia.Helpers, + Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy, + Pleroma.Search + ] |> Enum.each(fn module -> mod_config = Keyword.get(config, module, []) diff --git a/lib/pleroma/application_requirements.ex b/lib/pleroma/application_requirements.ex @@ -7,7 +7,10 @@ defmodule Pleroma.ApplicationRequirements do The module represents the collection of validations to runs before start server. """ - defmodule VerifyError, do: defexception([:message]) + defmodule VerifyError do + defexception([:message]) + @type t :: %__MODULE__{} + end alias Pleroma.Config alias Pleroma.Helpers.MediaHelper @@ -25,6 +28,7 @@ defmodule Pleroma.ApplicationRequirements do |> check_welcome_message_config!() |> check_rum!() |> check_repo_pool_size!() + |> check_mrfs() |> handle_result() end @@ -34,7 +38,7 @@ defmodule Pleroma.ApplicationRequirements do defp check_welcome_message_config!(:ok) do if Pleroma.Config.get([:welcome, :email, :enabled], false) and not Pleroma.Emails.Mailer.enabled?() do - Logger.warn(""" + Logger.warning(""" To send welcome emails, you need to enable the mailer. Welcome emails will NOT be sent with the current config. @@ -53,7 +57,7 @@ defmodule Pleroma.ApplicationRequirements do def check_confirmation_accounts!(:ok) do if Pleroma.Config.get([:instance, :account_activation_required]) && not Pleroma.Emails.Mailer.enabled?() do - Logger.warn(""" + Logger.warning(""" Account activation is required, but the mailer is disabled. Users will NOT be able to confirm their accounts with this config. Either disable account activation or enable the mailer. @@ -168,8 +172,6 @@ defmodule Pleroma.ApplicationRequirements do check_filter(Pleroma.Upload.Filter.Exiftool.ReadDescription, "exiftool"), check_filter(Pleroma.Upload.Filter.Mogrify, "mogrify"), check_filter(Pleroma.Upload.Filter.Mogrifun, "mogrify"), - check_filter(Pleroma.Upload.Filter.AnalyzeMetadata, "mogrify"), - check_filter(Pleroma.Upload.Filter.AnalyzeMetadata, "convert"), check_filter(Pleroma.Upload.Filter.AnalyzeMetadata, "ffprobe") ] @@ -195,8 +197,6 @@ defmodule Pleroma.ApplicationRequirements do end end - defp check_system_commands!(result), do: result - defp check_repo_pool_size!(:ok) do if Pleroma.Config.get([Pleroma.Repo, :pool_size], 10) != 10 and not Pleroma.Config.get([:dangerzone, :override_repo_pool_size], false) do @@ -235,4 +235,25 @@ defmodule Pleroma.ApplicationRequirements do true end end + + defp check_mrfs(:ok) do + mrfs = Config.get!([:mrf, :policies]) + + missing_mrfs = + Enum.reduce(mrfs, [], fn x, acc -> + if Code.ensure_compiled(x) do + acc + else + acc ++ [x] + end + end) + + if Enum.empty?(missing_mrfs) do + :ok + else + {:error, "The following MRF modules are configured but missing: #{inspect(missing_mrfs)}"} + end + end + + defp check_mrfs(result), do: result end diff --git a/lib/pleroma/bbs/authenticator.ex b/lib/pleroma/bbs/authenticator.ex @@ -1,20 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.BBS.Authenticator do - use Sshd.PasswordAuthenticator - alias Pleroma.User - alias Pleroma.Web.Plugs.AuthenticationPlug - - def authenticate(username, password) do - username = to_string(username) - password = to_string(password) - - with %User{} = user <- User.get_by_nickname(username) do - AuthenticationPlug.checkpw(password, user.password_hash) - else - _e -> false - end - end -end diff --git a/lib/pleroma/bbs/handler.ex b/lib/pleroma/bbs/handler.ex @@ -1,246 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.BBS.Handler do - use Sshd.ShellHandler - alias Pleroma.Activity - alias Pleroma.HTML - alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Web.CommonAPI - - def on_shell(username, _pubkey, _ip, _port) do - :ok = IO.puts("Welcome to #{Pleroma.Config.get([:instance, :name])}!") - user = Pleroma.User.get_cached_by_nickname(to_string(username)) - Logger.debug("#{inspect(user)}") - loop(run_state(user: user)) - end - - def on_connect(username, ip, port, method) do - Logger.debug(fn -> - """ - Incoming SSH shell #{inspect(self())} requested for #{username} from #{inspect(ip)}:#{inspect(port)} using #{inspect(method)} - """ - end) - end - - def on_disconnect(username, ip, port) do - Logger.debug(fn -> - "Disconnecting SSH shell for #{username} from #{inspect(ip)}:#{inspect(port)}" - end) - end - - defp loop(state) do - self_pid = self() - counter = state.counter - prefix = state.prefix - user = state.user - - input = spawn(fn -> io_get(self_pid, prefix, counter, user.nickname) end) - wait_input(state, input) - end - - def puts_activity(activity) do - status = Pleroma.Web.MastodonAPI.StatusView.render("show.json", %{activity: activity}) - - IO.puts("-- #{status.id} by #{status.account.display_name} (#{status.account.acct})") - - status.content - |> String.split("<br/>") - |> Enum.map(&HTML.strip_tags/1) - |> Enum.map(&HtmlEntities.decode/1) - |> Enum.map(&IO.puts/1) - end - - def puts_notification(activity, user) do - notification = - Pleroma.Web.MastodonAPI.NotificationView.render("show.json", %{ - notification: activity, - for: user - }) - - IO.puts( - "== (#{notification.type}) #{notification.status.id} by #{notification.account.display_name} (#{notification.account.acct})" - ) - - notification.status.content - |> String.split("<br/>") - |> Enum.map(&HTML.strip_tags/1) - |> Enum.map(&HtmlEntities.decode/1) - |> (fn x -> - case x do - [content] -> - "> " <> content - - [head | _tail] -> - # "> " <> hd <> "..." - head - |> String.slice(1, 80) - |> (fn x -> "> " <> x <> "..." end).() - end - end).() - |> IO.puts() - - IO.puts("") - end - - def handle_command(state, "help") do - IO.puts("Available commands:") - IO.puts("help - This help") - IO.puts("home - Show the home timeline") - IO.puts("p <text> - Post the given text") - IO.puts("r <id> <text> - Reply to the post with the given id") - IO.puts("t <id> - Show a thread from the given id") - IO.puts("n - Show notifications") - IO.puts("n read - Mark all notifactions as read") - IO.puts("f <id> - Favourites the post with the given id") - IO.puts("R <id> - Repeat the post with the given id") - IO.puts("quit - Quit") - - state - end - - def handle_command(%{user: user} = state, "r " <> text) do - text = String.trim(text) - [activity_id, rest] = String.split(text, " ", parts: 2) - - with %Activity{} <- Activity.get_by_id(activity_id), - {:ok, _activity} <- - CommonAPI.post(user, %{status: rest, in_reply_to_status_id: activity_id}) do - IO.puts("Replied!") - else - _e -> IO.puts("Could not reply...") - end - - state - end - - def handle_command(%{user: user} = state, "t " <> activity_id) do - with %Activity{} = activity <- Activity.get_by_id(activity_id) do - activities = - ActivityPub.fetch_activities_for_context(activity.data["context"], %{ - blocking_user: user, - user: user, - exclude_id: activity.id - }) - - case activities do - [] -> - activity_id - |> Activity.get_by_id() - |> puts_activity() - - _ -> - activities - |> Enum.reverse() - |> Enum.each(&puts_activity/1) - end - else - _e -> IO.puts("Could not show this thread...") - end - - state - end - - def handle_command(%{user: user} = state, "n read") do - Pleroma.Notification.clear(user) - IO.puts("All notifications were marked as read") - - state - end - - def handle_command(%{user: user} = state, "n") do - user - |> Pleroma.Web.MastodonAPI.MastodonAPI.get_notifications(%{}) - |> Enum.each(&puts_notification(&1, user)) - - state - end - - def handle_command(%{user: user} = state, "p " <> text) do - text = String.trim(text) - - with {:ok, activity} <- CommonAPI.post(user, %{status: text}) do - IO.puts("Posted! ID: #{activity.id}") - else - _e -> IO.puts("Could not post...") - end - - state - end - - def handle_command(%{user: user} = state, "f " <> id) do - id = String.trim(id) - - with %Activity{} = activity <- Activity.get_by_id(id), - {:ok, _activity} <- CommonAPI.favorite(user, activity) do - IO.puts("Favourited!") - else - _e -> IO.puts("Could not Favourite...") - end - - state - end - - def handle_command(state, "home") do - user = state.user - - params = - %{} - |> Map.put(:type, ["Create"]) - |> Map.put(:blocking_user, user) - |> Map.put(:muting_user, user) - |> Map.put(:user, user) - - activities = - [user.ap_id | Pleroma.User.following(user)] - |> ActivityPub.fetch_activities(params) - - Enum.each(activities, fn activity -> - puts_activity(activity) - end) - - state - end - - def handle_command(state, command) do - IO.puts("Unknown command '#{command}'") - state - end - - defp wait_input(state, input) do - receive do - {:input, ^input, "quit\n"} -> - IO.puts("Exiting...") - - {:input, ^input, code} when is_binary(code) -> - code = String.trim(code) - - state = handle_command(state, code) - - loop(%{state | counter: state.counter + 1}) - - {:input, ^input, {:error, :interrupted}} -> - IO.puts("Caught Ctrl+C...") - loop(%{state | counter: state.counter + 1}) - - {:input, ^input, msg} -> - :ok = Logger.warn("received unknown message: #{inspect(msg)}") - loop(%{state | counter: state.counter + 1}) - end - end - - defp run_state(opts) do - %{prefix: "pleroma", counter: 1, user: opts[:user]} - end - - defp io_get(pid, prefix, counter, username) do - prompt = prompt(prefix, counter, username) - send(pid, {:input, self(), IO.gets(:stdio, prompt)}) - end - - defp prompt(prefix, counter, username) do - prompt = "#{username}@#{prefix}:#{counter}>" - prompt <> " " - end -end diff --git a/lib/pleroma/bookmark.ex b/lib/pleroma/bookmark.ex @@ -10,6 +10,7 @@ defmodule Pleroma.Bookmark do alias Pleroma.Activity alias Pleroma.Bookmark + alias Pleroma.BookmarkFolder alias Pleroma.Repo alias Pleroma.User @@ -18,33 +19,46 @@ defmodule Pleroma.Bookmark do schema "bookmarks" do belongs_to(:user, User, type: FlakeId.Ecto.CompatType) belongs_to(:activity, Activity, type: FlakeId.Ecto.CompatType) + belongs_to(:folder, BookmarkFolder, type: FlakeId.Ecto.CompatType) timestamps() end - @spec create(FlakeId.Ecto.CompatType.t(), FlakeId.Ecto.CompatType.t()) :: - {:ok, Bookmark.t()} | {:error, Changeset.t()} - def create(user_id, activity_id) do + @spec create(Ecto.UUID.t(), Ecto.UUID.t()) :: + {:ok, Bookmark.t()} | {:error, Ecto.Changeset.t()} + def create(user_id, activity_id, folder_id \\ nil) do attrs = %{ user_id: user_id, - activity_id: activity_id + activity_id: activity_id, + folder_id: folder_id } %Bookmark{} - |> cast(attrs, [:user_id, :activity_id]) + |> cast(attrs, [:user_id, :activity_id, :folder_id]) |> validate_required([:user_id, :activity_id]) |> unique_constraint(:activity_id, name: :bookmarks_user_id_activity_id_index) - |> Repo.insert() + |> Repo.insert( + on_conflict: [set: [folder_id: folder_id]], + conflict_target: [:user_id, :activity_id] + ) end - @spec for_user_query(FlakeId.Ecto.CompatType.t()) :: Ecto.Query.t() - def for_user_query(user_id) do + @spec for_user_query(Ecto.UUID.t()) :: Ecto.Query.t() + def for_user_query(user_id, folder_id \\ nil) do Bookmark |> where(user_id: ^user_id) + |> maybe_filter_by_folder(folder_id) |> join(:inner, [b], activity in assoc(b, :activity)) |> preload([b, a], activity: a) end + defp maybe_filter_by_folder(query, nil), do: query + + defp maybe_filter_by_folder(query, folder_id) do + query + |> where(folder_id: ^folder_id) + end + def get(user_id, activity_id) do Bookmark |> where(user_id: ^user_id) @@ -52,8 +66,8 @@ defmodule Pleroma.Bookmark do |> Repo.one() end - @spec destroy(FlakeId.Ecto.CompatType.t(), FlakeId.Ecto.CompatType.t()) :: - {:ok, Bookmark.t()} | {:error, Changeset.t()} + @spec destroy(Ecto.UUID.t(), Ecto.UUID.t()) :: + {:ok, Bookmark.t()} | {:error, Ecto.Changeset.t()} def destroy(user_id, activity_id) do from(b in Bookmark, where: b.user_id == ^user_id, @@ -62,4 +76,11 @@ defmodule Pleroma.Bookmark do |> Repo.one() |> Repo.delete() end + + def set_folder(bookmark, folder_id) do + bookmark + |> cast(%{folder_id: folder_id}, [:folder_id]) + |> validate_required([:folder_id]) + |> Repo.update() + end end diff --git a/lib/pleroma/bookmark_folder.ex b/lib/pleroma/bookmark_folder.ex @@ -0,0 +1,115 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.BookmarkFolder do + use Ecto.Schema + + import Ecto.Changeset + import Ecto.Query + + alias Pleroma.BookmarkFolder + alias Pleroma.Emoji + alias Pleroma.Repo + alias Pleroma.User + + @type t :: %__MODULE__{} + @primary_key {:id, FlakeId.Ecto.CompatType, autogenerate: true} + + schema "bookmark_folders" do + field(:name, :string) + field(:emoji, :string) + + belongs_to(:user, User, type: FlakeId.Ecto.CompatType) + + timestamps() + end + + def get_by_id(id), do: Repo.get_by(BookmarkFolder, id: id) + + def create(user_id, name, emoji \\ nil) do + %BookmarkFolder{} + |> cast( + %{ + user_id: user_id, + name: name, + emoji: emoji + }, + [:user_id, :name, :emoji] + ) + |> validate_required([:user_id, :name]) + |> fix_emoji() + |> validate_emoji() + |> unique_constraint([:user_id, :name]) + |> Repo.insert() + end + + def update(folder_id, name, emoji \\ nil) do + get_by_id(folder_id) + |> cast( + %{ + name: name, + emoji: emoji + }, + [:name, :emoji] + ) + |> fix_emoji() + |> validate_emoji() + |> unique_constraint([:user_id, :name]) + |> Repo.update() + end + + defp fix_emoji(changeset) do + with {:emoji_field, emoji} when is_binary(emoji) <- + {:emoji_field, get_field(changeset, :emoji)}, + {:fixed_emoji, emoji} <- + {:fixed_emoji, + emoji + |> Pleroma.Emoji.fully_qualify_emoji() + |> Pleroma.Emoji.maybe_quote()} do + put_change(changeset, :emoji, emoji) + else + {:emoji_field, _} -> changeset + end + end + + defp validate_emoji(changeset) do + validate_change(changeset, :emoji, fn + :emoji, nil -> + [] + + :emoji, emoji -> + if Emoji.unicode?(emoji) or valid_local_custom_emoji?(emoji) do + [] + else + [emoji: "Invalid emoji"] + end + end) + end + + defp valid_local_custom_emoji?(emoji) do + with %{file: _path} <- Emoji.get(emoji) do + true + else + _ -> false + end + end + + def delete(folder_id) do + BookmarkFolder + |> Repo.get_by(id: folder_id) + |> Repo.delete() + end + + def for_user(user_id) do + BookmarkFolder + |> where(user_id: ^user_id) + |> Repo.all() + end + + def belongs_to_user?(folder_id, user_id) do + BookmarkFolder + |> where(id: ^folder_id, user_id: ^user_id) + |> Repo.exists?() + end +end diff --git a/lib/pleroma/caching.ex b/lib/pleroma/caching.ex @@ -8,10 +8,13 @@ defmodule Pleroma.Caching do @callback put(Cachex.cache(), any(), any(), Keyword.t()) :: {Cachex.status(), boolean()} @callback put(Cachex.cache(), any(), any()) :: {Cachex.status(), boolean()} @callback fetch!(Cachex.cache(), any(), function() | nil) :: any() + @callback fetch(Cachex.cache(), any(), function() | nil) :: + {atom(), any()} | {atom(), any(), any()} # @callback del(Cachex.cache(), any(), Keyword.t()) :: {Cachex.status(), boolean()} @callback del(Cachex.cache(), any()) :: {Cachex.status(), boolean()} @callback stream!(Cachex.cache(), any()) :: Enumerable.t() @callback expire_at(Cachex.cache(), binary(), number()) :: {Cachex.status(), boolean()} + @callback expire(Cachex.cache(), binary(), number()) :: {Cachex.status(), boolean()} @callback exists?(Cachex.cache(), any()) :: {Cachex.status(), boolean()} @callback execute!(Cachex.cache(), function()) :: any() @callback get_and_update(Cachex.cache(), any(), function()) :: diff --git a/lib/pleroma/captcha/kocaptcha.ex b/lib/pleroma/captcha/kocaptcha.ex @@ -29,7 +29,7 @@ defmodule Pleroma.Captcha.Kocaptcha do @impl Service def validate(_token, captcha, answer_data) do - # Here the token is unsed, because the unencrypted captcha answer is just passed to method + # Here the token is unused, because the unencrypted captcha answer is just passed to method if not is_nil(captcha) and :crypto.hash(:md5, captcha) |> Base.encode16() == String.upcase(answer_data), do: :ok, diff --git a/lib/pleroma/chat.ex b/lib/pleroma/chat.ex @@ -42,7 +42,7 @@ defmodule Pleroma.Chat do |> unique_constraint(:user_id, name: :chats_user_id_recipient_index) end - @spec get_by_user_and_id(User.t(), FlakeId.Ecto.CompatType.t()) :: + @spec get_by_user_and_id(User.t(), Ecto.UUID.t()) :: {:ok, t()} | {:error, :not_found} def get_by_user_and_id(%User{id: user_id}, id) do from(c in __MODULE__, @@ -52,17 +52,17 @@ defmodule Pleroma.Chat do |> Repo.find_resource() end - @spec get_by_id(FlakeId.Ecto.CompatType.t()) :: t() | nil + @spec get_by_id(Ecto.UUID.t()) :: t() | nil def get_by_id(id) do Repo.get(__MODULE__, id) end - @spec get(FlakeId.Ecto.CompatType.t(), String.t()) :: t() | nil + @spec get(Ecto.UUID.t(), String.t()) :: t() | nil def get(user_id, recipient) do Repo.get_by(__MODULE__, user_id: user_id, recipient: recipient) end - @spec get_or_create(FlakeId.Ecto.CompatType.t(), String.t()) :: + @spec get_or_create(Ecto.UUID.t(), String.t()) :: {:ok, t()} | {:error, Ecto.Changeset.t()} def get_or_create(user_id, recipient) do %__MODULE__{} @@ -75,7 +75,7 @@ defmodule Pleroma.Chat do ) end - @spec bump_or_create(FlakeId.Ecto.CompatType.t(), String.t()) :: + @spec bump_or_create(Ecto.UUID.t(), String.t()) :: {:ok, t()} | {:error, Ecto.Changeset.t()} def bump_or_create(user_id, recipient) do %__MODULE__{} @@ -87,7 +87,7 @@ defmodule Pleroma.Chat do ) end - @spec for_user_query(FlakeId.Ecto.CompatType.t()) :: Ecto.Query.t() + @spec for_user_query(Ecto.UUID.t()) :: Ecto.Query.t() def for_user_query(user_id) do from(c in Chat, where: c.user_id == ^user_id, diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex @@ -24,7 +24,7 @@ defmodule Pleroma.Config.DeprecationWarnings do filters = Config.get([Pleroma.Upload]) |> Keyword.get(:filters, []) if Pleroma.Upload.Filter.Exiftool in filters do - Logger.warn(""" + Logger.warning(""" !!!DEPRECATION WARNING!!! Your config is using Exiftool as a filter instead of Exiftool.StripLocation. This should work for now, but you are advised to change to the new configuration to prevent possible issues later: @@ -63,7 +63,7 @@ defmodule Pleroma.Config.DeprecationWarnings do |> Enum.any?(fn {_, v} -> Enum.any?(v, &is_binary/1) end) if has_strings do - Logger.warn(""" + Logger.warning(""" !!!DEPRECATION WARNING!!! Your config is using strings in the SimplePolicy configuration instead of tuples. They should work for now, but you are advised to change to the new configuration to prevent possible issues later: @@ -121,7 +121,7 @@ defmodule Pleroma.Config.DeprecationWarnings do has_strings = Config.get([:instance, :quarantined_instances]) |> Enum.any?(&is_binary/1) if has_strings do - Logger.warn(""" + Logger.warning(""" !!!DEPRECATION WARNING!!! Your config is using strings in the quarantined_instances configuration instead of tuples. They should work for now, but you are advised to change to the new configuration to prevent possible issues later: @@ -158,7 +158,7 @@ defmodule Pleroma.Config.DeprecationWarnings do has_strings = Config.get([:mrf, :transparency_exclusions]) |> Enum.any?(&is_binary/1) if has_strings do - Logger.warn(""" + Logger.warning(""" !!!DEPRECATION WARNING!!! Your config is using strings in the transparency_exclusions configuration instead of tuples. They should work for now, but you are advised to change to the new configuration to prevent possible issues later: @@ -172,7 +172,7 @@ defmodule Pleroma.Config.DeprecationWarnings do ``` config :pleroma, :mrf, - transparency_exclusions: [{"instance.tld", "Reason to exlude transparency"}] + transparency_exclusions: [{"instance.tld", "Reason to exclude transparency"}] ``` """) @@ -193,7 +193,7 @@ defmodule Pleroma.Config.DeprecationWarnings do def check_hellthread_threshold do if Config.get([:mrf_hellthread, :threshold]) do - Logger.warn(""" + Logger.warning(""" !!!DEPRECATION WARNING!!! You are using the old configuration mechanism for the hellthread filter. Please check config.md. """) @@ -213,7 +213,7 @@ defmodule Pleroma.Config.DeprecationWarnings do check_gun_pool_options(), check_activity_expiration_config(), check_remote_ip_plug_name(), - check_uploders_s3_public_endpoint(), + check_uploaders_s3_public_endpoint(), check_old_chat_shoutbox(), check_quarantined_instances_tuples(), check_transparency_exclusions_tuples(), @@ -256,7 +256,7 @@ defmodule Pleroma.Config.DeprecationWarnings do move_namespace_and_warn(@mrf_config_map, warning_preface) end - @spec move_namespace_and_warn([config_map()], String.t()) :: :ok | nil + @spec move_namespace_and_warn([config_map()], String.t()) :: :ok | :error def move_namespace_and_warn(config_map, warning_preface) do warning = Enum.reduce(config_map, "", fn @@ -274,17 +274,17 @@ defmodule Pleroma.Config.DeprecationWarnings do if warning == "" do :ok else - Logger.warn(warning_preface <> warning) + Logger.warning(warning_preface <> warning) :error end end - @spec check_media_proxy_whitelist_config() :: :ok | nil + @spec check_media_proxy_whitelist_config() :: :ok | :error def check_media_proxy_whitelist_config do whitelist = Config.get([:media_proxy, :whitelist]) if Enum.any?(whitelist, &(not String.starts_with?(&1, "http"))) do - Logger.warn(""" + Logger.warning(""" !!!DEPRECATION WARNING!!! Your config is using old format (only domain) for MediaProxy whitelist option. Setting should work for now, but you are advised to change format to scheme with port to prevent possible issues later. """) @@ -299,7 +299,7 @@ defmodule Pleroma.Config.DeprecationWarnings do pool_config = Config.get(:connections_pool) if timeout = pool_config[:await_up_timeout] do - Logger.warn(""" + Logger.warning(""" !!!DEPRECATION WARNING!!! Your config is using old setting `config :pleroma, :connections_pool, await_up_timeout`. Please change to `config :pleroma, :connections_pool, connect_timeout` to ensure compatibility with future releases. """) @@ -331,7 +331,7 @@ defmodule Pleroma.Config.DeprecationWarnings do "\n* `:timeout` options in #{pool_name} pool is now `:recv_timeout`" end) - Logger.warn(Enum.join([warning_preface | pool_warnings])) + Logger.warning(Enum.join([warning_preface | pool_warnings])) Config.put(:pools, updated_config) :error @@ -340,7 +340,7 @@ defmodule Pleroma.Config.DeprecationWarnings do end end - @spec check_activity_expiration_config() :: :ok | nil + @spec check_activity_expiration_config() :: :ok | :error def check_activity_expiration_config do warning_preface = """ !!!DEPRECATION WARNING!!! @@ -356,7 +356,7 @@ defmodule Pleroma.Config.DeprecationWarnings do ) end - @spec check_remote_ip_plug_name() :: :ok | nil + @spec check_remote_ip_plug_name() :: :ok | :error def check_remote_ip_plug_name do warning_preface = """ !!!DEPRECATION WARNING!!! @@ -372,8 +372,8 @@ defmodule Pleroma.Config.DeprecationWarnings do ) end - @spec check_uploders_s3_public_endpoint() :: :ok | nil - def check_uploders_s3_public_endpoint do + @spec check_uploaders_s3_public_endpoint() :: :ok | :error + def check_uploaders_s3_public_endpoint do s3_config = Pleroma.Config.get([Pleroma.Uploaders.S3]) use_old_config = Keyword.has_key?(s3_config, :public_endpoint) @@ -393,7 +393,7 @@ defmodule Pleroma.Config.DeprecationWarnings do end end - @spec check_old_chat_shoutbox() :: :ok | nil + @spec check_old_chat_shoutbox() :: :ok | :error def check_old_chat_shoutbox do instance_config = Pleroma.Config.get([:instance]) chat_config = Pleroma.Config.get([:chat]) || [] diff --git a/lib/pleroma/config/getting.ex b/lib/pleroma/config/getting.ex @@ -5,4 +5,11 @@ defmodule Pleroma.Config.Getting do @callback get(any()) :: any() @callback get(any(), any()) :: any() + + def get(key), do: get(key, nil) + def get(key, default), do: impl().get(key, default) + + def impl do + Application.get_env(:pleroma, :config_impl, Pleroma.Config) + end end diff --git a/lib/pleroma/config/oban.ex b/lib/pleroma/config/oban.ex @@ -23,7 +23,7 @@ defmodule Pleroma.Config.Oban do You are using old workers in Oban crontab settings, which were removed. Please, remove setting from crontab in your config file (prod.secret.exs): #{inspect(setting)} """ - |> Logger.warn() + |> Logger.warning() List.delete(acc, setting) else diff --git a/lib/pleroma/config/release_runtime_provider.ex b/lib/pleroma/config/release_runtime_provider.ex @@ -20,6 +20,20 @@ defmodule Pleroma.Config.ReleaseRuntimeProvider do with_runtime_config = if File.exists?(config_path) do + # <https://git.pleroma.social/pleroma/pleroma/-/issues/3135> + %File.Stat{mode: mode} = File.stat!(config_path) + + if Bitwise.band(mode, 0o007) > 0 do + raise "Configuration at #{config_path} has world-permissions, execute the following: chmod o= #{config_path}" + end + + if Bitwise.band(mode, 0o020) > 0 do + raise "Configuration at #{config_path} has group-wise write permissions, execute the following: chmod g-w #{config_path}" + end + + # Note: Elixir doesn't provides a getuid(2) + # so cannot forbid group-read only when config is owned by us + runtime_config = Config.Reader.read!(config_path) with_defaults diff --git a/lib/pleroma/config/transfer_task.ex b/lib/pleroma/config/transfer_task.ex @@ -55,8 +55,7 @@ defmodule Pleroma.Config.TransferTask do started_applications = Application.started_applications() - # TODO: some problem with prometheus after restart! - reject = [nil, :prometheus, :postgrex] + reject = [nil, :postgrex] reject = if restart_pleroma? do @@ -145,7 +144,7 @@ defmodule Pleroma.Config.TransferTask do error_msg = "updating env causes error, group: #{inspect(group)}, key: #{inspect(key)}, value: #{inspect(value)} error: #{inspect(error)}" - Logger.warn(error_msg) + Logger.warning(error_msg) nil end @@ -179,12 +178,12 @@ defmodule Pleroma.Config.TransferTask do :ok = Application.start(app) else nil -> - Logger.warn("#{app} is not started.") + Logger.warning("#{app} is not started.") error -> error |> inspect() - |> Logger.warn() + |> Logger.warning() end end diff --git a/lib/pleroma/config_db.ex b/lib/pleroma/config_db.ex @@ -54,7 +54,7 @@ defmodule Pleroma.ConfigDB do @spec get_by_params(map()) :: ConfigDB.t() | nil def get_by_params(%{group: _, key: _} = params), do: Repo.get_by(ConfigDB, params) - @spec changeset(ConfigDB.t(), map()) :: Changeset.t() + @spec changeset(ConfigDB.t(), map()) :: Ecto.Changeset.t() def changeset(config, params \\ %{}) do config |> cast(params, [:key, :group, :value]) @@ -138,7 +138,7 @@ defmodule Pleroma.ConfigDB do end end - @spec update_or_create(map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()} + @spec update_or_create(map()) :: {:ok, ConfigDB.t()} | {:error, Ecto.Changeset.t()} def update_or_create(params) do params = Map.put(params, :value, to_elixir_types(params[:value])) search_opts = Map.take(params, [:group, :key]) @@ -175,7 +175,7 @@ defmodule Pleroma.ConfigDB do end) end - @spec delete(ConfigDB.t() | map()) :: {:ok, ConfigDB.t()} | {:error, Changeset.t()} + @spec delete(ConfigDB.t() | map()) :: {:ok, ConfigDB.t()} | {:error, Ecto.Changeset.t()} def delete(%ConfigDB{} = config), do: Repo.delete(config) def delete(params) do diff --git a/lib/pleroma/constants.ex b/lib/pleroma/constants.ex @@ -19,7 +19,8 @@ defmodule Pleroma.Constants do "context_id", "deleted_activity_id", "pleroma_internal", - "generator" + "generator", + "rules" ] ) @@ -42,6 +43,18 @@ defmodule Pleroma.Constants do ] ) + const(status_object_types, + do: [ + "Note", + "Question", + "Audio", + "Video", + "Event", + "Article", + "Page" + ] + ) + const(updatable_object_types, do: [ "Note", @@ -64,9 +77,34 @@ defmodule Pleroma.Constants do ] ) + const(allowed_user_actor_types, + do: [ + "Person", + "Service", + "Group" + ] + ) + # basic regex, just there to weed out potential mistakes # https://datatracker.ietf.org/doc/html/rfc2045#section-5.1 const(mime_regex, do: ~r/^[^[:cntrl:] ()<>@,;:\\"\/\[\]?=]+\/[^[:cntrl:] ()<>@,;:\\"\/\[\]?=]+(; .*)?$/ ) + + const(upload_object_types, do: ["Document", "Image"]) + + const(activity_json_canonical_mime_type, + do: "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"" + ) + + const(activity_json_mime_types, + do: [ + "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"", + "application/activity+json" + ] + ) + + const(public_streams, + do: ["public", "public:local", "public:media", "public:local:media"] + ) end diff --git a/lib/pleroma/conversation.ex b/lib/pleroma/conversation.ex @@ -57,7 +57,7 @@ defmodule Pleroma.Conversation do 3. Bump all relevant participations to 'unread' """ def create_or_bump_for(activity, opts \\ []) do - with true <- Pleroma.Web.ActivityPub.Visibility.is_direct?(activity), + with true <- Pleroma.Web.ActivityPub.Visibility.direct?(activity), "Create" <- activity.data["type"], %Object{} = object <- Object.normalize(activity, fetch: false), true <- object.data["type"] in ["Note", "Question"], diff --git a/lib/pleroma/data_migration.ex b/lib/pleroma/data_migration.ex @@ -12,6 +12,8 @@ defmodule Pleroma.DataMigration do import Ecto.Changeset import Ecto.Query + @type t :: %__MODULE__{} + schema "data_migrations" do field(:name, :string) field(:state, State, default: :pending) diff --git a/lib/pleroma/docs/generator.ex b/lib/pleroma/docs/generator.ex @@ -15,8 +15,10 @@ defmodule Pleroma.Docs.Generator do :code.all_loaded() |> Enum.filter(fn {module, _} -> # This shouldn't be needed as all modules are expected to have module_info/1, - # but in test enviroments some transient modules `:elixir_compiler_XX` + # but in test environments some transient modules `:elixir_compiler_XX` # are loaded for some reason (where XX is a random integer). + Code.ensure_loaded(module) + if function_exported?(module, :module_info, 1) do module.module_info(:attributes) |> Keyword.get_values(:behaviour) diff --git a/lib/pleroma/docs/json.ex b/lib/pleroma/docs/json.ex @@ -18,7 +18,7 @@ defmodule Pleroma.Docs.JSON do :persistent_term.put(@term, Pleroma.Docs.Generator.convert_to_strings(descriptions)) end - @spec compiled_descriptions :: Map.t() + @spec compiled_descriptions :: map() def compiled_descriptions do :persistent_term.get(@term) end diff --git a/lib/pleroma/ecto_enums.ex b/lib/pleroma/ecto_enums.ex @@ -27,3 +27,11 @@ defenum(Pleroma.DataMigration.State, failed: 4, manual: 5 ) + +defenum(Pleroma.User.Backup.State, + pending: 1, + running: 2, + complete: 3, + failed: 4, + invalid: 5 +) diff --git a/lib/pleroma/ecto_type/activity_pub/object_validators/bare_uri.ex b/lib/pleroma/ecto_type/activity_pub/object_validators/bare_uri.ex @@ -0,0 +1,25 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.BareUri do + use Ecto.Type + + def type, do: :string + + def cast(uri) when is_binary(uri) do + parsed = URI.parse(uri) + + if is_nil(parsed.scheme) do + :error + else + {:ok, uri} + end + end + + def cast(_), do: :error + + def dump(data), do: {:ok, data} + + def load(data), do: {:ok, data} +end diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex @@ -24,6 +24,8 @@ defmodule Pleroma.Emoji do defstruct [:code, :file, :tags, :safe_code, :safe_file] + @type t :: %__MODULE__{} + @doc "Build emoji struct" def build({code, file, tags}) do %__MODULE__{ @@ -49,10 +51,12 @@ defmodule Pleroma.Emoji do end @doc "Returns the path of the emoji `name`." - @spec get(String.t()) :: String.t() | nil + @spec get(String.t()) :: Pleroma.Emoji.t() | nil def get(name) do + name = maybe_strip_name(name) + case :ets.lookup(@ets, name) do - [{_, path}] -> path + [{_, emoji}] -> emoji _ -> nil end end @@ -134,10 +138,61 @@ defmodule Pleroma.Emoji do emojis = emojis ++ regional_indicators for emoji <- emojis do - def is_unicode_emoji?(unquote(emoji)), do: true + def unicode?(unquote(emoji)), do: true + end + + def unicode?(_), do: false + + @emoji_regex ~r/:[A-Za-z0-9_-]+(@.+)?:/ + + def custom?(s) when is_binary(s), do: Regex.match?(@emoji_regex, s) + + def custom?(_), do: false + + def maybe_strip_name(name) when is_binary(name), do: String.trim(name, ":") + + def maybe_strip_name(name), do: name + + def maybe_quote(name) when is_binary(name) do + if unicode?(name) do + name + else + if String.starts_with?(name, ":") do + name + else + ":#{name}:" + end + end end - def is_unicode_emoji?(_), do: false + def maybe_quote(name), do: name + + def emoji_url(%{"type" => "EmojiReact", "content" => _, "tag" => []}), do: nil + + def emoji_url(%{"type" => "EmojiReact", "content" => emoji, "tag" => tags}) do + emoji = maybe_strip_name(emoji) + + tag = + tags + |> Enum.find(fn tag -> + tag["type"] == "Emoji" && !is_nil(tag["name"]) && tag["name"] == emoji + end) + + if is_nil(tag) do + nil + else + tag + |> Map.get("icon") + |> Map.get("url") + end + end + + def emoji_url(_), do: nil + + def emoji_name_with_instance(name, url) do + url = url |> URI.parse() |> Map.get(:host) + "#{name}@#{url}" + end emoji_qualification_map = emojis diff --git a/lib/pleroma/emoji/loader.ex b/lib/pleroma/emoji/loader.ex @@ -15,8 +15,6 @@ defmodule Pleroma.Emoji.Loader do require Logger - @mix_env Mix.env() - @type pattern :: Regex.t() | module() | String.t() @type patterns :: pattern() | [pattern()] @type group_patterns :: keyword(patterns()) @@ -59,7 +57,7 @@ defmodule Pleroma.Emoji.Loader do Logger.info("Found emoji packs: #{Enum.join(packs, ", ")}") if not Enum.empty?(files) do - Logger.warn( + Logger.warning( "Found files in the emoji folder. These will be ignored, please move them to a subdirectory\nFound files: #{Enum.join(files, ", ")}" ) end @@ -79,7 +77,7 @@ defmodule Pleroma.Emoji.Loader do # for testing emoji.txt entries we do not want exposed in normal operation test_emoji = - if @mix_env == :test do + if Application.get_env(:pleroma, __MODULE__)[:test_emoji] do load_from_file("test/config/emoji.txt", emoji_groups) else [] diff --git a/lib/pleroma/emoji/pack.ex b/lib/pleroma/emoji/pack.ex @@ -100,7 +100,7 @@ defmodule Pleroma.Emoji.Pack do {:ok, _emoji_files} = :zip.unzip( to_charlist(file.path), - [{:file_list, Enum.map(emojies, & &1[:path])}, {:cwd, tmp_dir}] + [{:file_list, Enum.map(emojies, & &1[:path])}, {:cwd, String.to_charlist(tmp_dir)}] ) {_, updated_pack} = @@ -209,7 +209,9 @@ defmodule Pleroma.Emoji.Pack do with :ok <- validate_shareable_packs_available(uri) do uri - |> URI.merge("/api/pleroma/emoji/packs?page=#{opts[:page]}&page_size=#{opts[:page_size]}") + |> URI.merge( + "/api/v1/pleroma/emoji/packs?page=#{opts[:page]}&page_size=#{opts[:page_size]}" + ) |> http_get() end end @@ -249,8 +251,12 @@ defmodule Pleroma.Emoji.Pack do uri = url |> String.trim() |> URI.parse() with :ok <- validate_shareable_packs_available(uri), + {:ok, %{"files_count" => files_count}} <- + uri |> URI.merge("/api/v1/pleroma/emoji/pack?name=#{name}&page_size=0") |> http_get(), {:ok, remote_pack} <- - uri |> URI.merge("/api/pleroma/emoji/pack?name=#{name}") |> http_get(), + uri + |> URI.merge("/api/v1/pleroma/emoji/pack?name=#{name}&page_size=#{files_count}") + |> http_get(), {:ok, %{sha: sha, url: url} = pack_info} <- fetch_pack_info(remote_pack, uri, name), {:ok, archive} <- download_archive(url, sha), pack <- copy_as(remote_pack, as || name), @@ -285,6 +291,7 @@ defmodule Pleroma.Emoji.Pack do @spec load_pack(String.t()) :: {:ok, t()} | {:error, :file.posix()} def load_pack(name) do + name = Path.basename(name) pack_file = Path.join([emoji_path(), name, "pack.json"]) with {:ok, _} <- File.stat(pack_file), @@ -591,7 +598,7 @@ defmodule Pleroma.Emoji.Pack do {:ok, %{ sha: sha, - url: URI.merge(uri, "/api/pleroma/emoji/packs/archive?name=#{name}") |> to_string() + url: URI.merge(uri, "/api/v1/pleroma/emoji/packs/archive?name=#{name}") |> to_string() }} %{"fallback-src" => src, "fallback-src-sha256" => sha} when is_binary(src) -> diff --git a/lib/pleroma/filter.ex b/lib/pleroma/filter.ex @@ -216,9 +216,6 @@ defmodule Pleroma.Filter do :re -> ~r/\b#{phrases}\b/i - - _ -> - nil end end diff --git a/lib/pleroma/following_relationship.ex b/lib/pleroma/following_relationship.ex @@ -241,13 +241,13 @@ defmodule Pleroma.FollowingRelationship do end @doc """ - For a query with joined activity, - keeps rows where activity's actor is followed by user -or- is NOT domain-blocked by user. + For a query with joined activity's actor, + keeps rows where actor is followed by user -or- is NOT domain-blocked by user. """ def keep_following_or_not_domain_blocked(query, user) do where( query, - [_, activity], + [_, user_actor: user_actor], fragment( # "(actor's domain NOT in domain_blocks) OR (actor IS in followed AP IDs)" """ @@ -255,9 +255,9 @@ defmodule Pleroma.FollowingRelationship do ? = ANY(SELECT ap_id FROM users AS u INNER JOIN following_relationships AS fr ON u.id = fr.following_id WHERE fr.follower_id = ? AND fr.state = ?) """, - activity.actor, + user_actor.ap_id, ^user.domain_blocks, - activity.actor, + user_actor.ap_id, ^User.binary_id(user.id), ^accept_state_code() ) diff --git a/lib/pleroma/formatter.ex b/lib/pleroma/formatter.ex @@ -124,7 +124,7 @@ defmodule Pleroma.Formatter do end def markdown_to_html(text) do - Earmark.as_html!(text, %Earmark.Options{compact_output: true}) + Earmark.as_html!(text, %Earmark.Options{compact_output: true, smartypants: false}) end def html_escape({text, mentions, hashtags}, type) do diff --git a/lib/pleroma/gopher/server.ex b/lib/pleroma/gopher/server.ex @@ -114,7 +114,7 @@ defmodule Pleroma.Gopher.Server.ProtocolHandler do def response("/notices/" <> id) do with %Activity{} = activity <- Activity.get_by_id(id), - true <- Visibility.is_public?(activity) do + true <- Visibility.public?(activity) do activities = ActivityPub.fetch_activities_for_context(activity.data["context"]) |> render_activities diff --git a/lib/pleroma/gun/conn.ex b/lib/pleroma/gun/conn.ex @@ -56,7 +56,7 @@ defmodule Pleroma.Gun.Conn do {:ok, conn, protocol} else error -> - Logger.warn( + Logger.warning( "Opening proxied connection to #{compose_uri_log(uri)} failed with error #{inspect(error)}" ) @@ -90,7 +90,7 @@ defmodule Pleroma.Gun.Conn do {:ok, conn, protocol} else error -> - Logger.warn( + Logger.warning( "Opening socks proxied connection to #{compose_uri_log(uri)} failed with error #{inspect(error)}" ) @@ -106,7 +106,7 @@ defmodule Pleroma.Gun.Conn do {:ok, conn, protocol} else error -> - Logger.warn( + Logger.warning( "Opening connection to #{compose_uri_log(uri)} failed with error #{inspect(error)}" ) diff --git a/lib/pleroma/gun/connection_pool/reclaimer.ex b/lib/pleroma/gun/connection_pool/reclaimer.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Gun.ConnectionPool.Reclaimer do def start_monitor do pid = - case :gen_server.start(__MODULE__, [], name: {:via, Registry, {registry(), "reclaimer"}}) do + case GenServer.start_link(__MODULE__, [], name: {:via, Registry, {registry(), "reclaimer"}}) do {:ok, pid} -> pid diff --git a/lib/pleroma/gun/connection_pool/worker_supervisor.ex b/lib/pleroma/gun/connection_pool/worker_supervisor.ex @@ -18,10 +18,12 @@ defmodule Pleroma.Gun.ConnectionPool.WorkerSupervisor do ) end - def start_worker(opts, retry \\ false) do + def start_worker(opts, last_attempt \\ false) do case DynamicSupervisor.start_child(__MODULE__, {Pleroma.Gun.ConnectionPool.Worker, opts}) do {:error, :max_children} -> - if retry or free_pool() == :error do + funs = [fn -> last_attempt end, fn -> match?(:error, free_pool()) end] + + if Enum.any?(funs, fn fun -> fun.() end) do :telemetry.execute([:pleroma, :connection_pool, :provision_failure], %{opts: opts}) {:error, :pool_full} else diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex @@ -8,11 +8,14 @@ defmodule Pleroma.Helpers.MediaHelper do """ alias Pleroma.HTTP + alias Vix.Vips.Operation require Logger + @cachex Pleroma.Config.get([:cachex, :provider], Cachex) + def missing_dependencies do - Enum.reduce([imagemagick: "convert", ffmpeg: "ffmpeg"], [], fn {sym, executable}, acc -> + Enum.reduce([ffmpeg: "ffmpeg"], [], fn {sym, executable}, acc -> if Pleroma.Utils.command_available?(executable) do acc else @@ -22,141 +25,63 @@ defmodule Pleroma.Helpers.MediaHelper do end def image_resize(url, options) do - with executable when is_binary(executable) <- System.find_executable("convert"), - {:ok, args} <- prepare_image_resize_args(options), - {:ok, env} <- HTTP.get(url, [], pool: :media), - {:ok, fifo_path} <- mkfifo() do - args = List.flatten([fifo_path, args]) - run_fifo(fifo_path, env, executable, args) + with {:ok, env} <- HTTP.get(url, [], pool: :media), + {:ok, resized} <- + Operation.thumbnail_buffer(env.body, options.max_width, + height: options.max_height, + size: :VIPS_SIZE_DOWN + ) do + if options[:format] == "png" do + Operation.pngsave_buffer(resized, Q: options[:quality]) + else + Operation.jpegsave_buffer(resized, Q: options[:quality], interlace: true) + end else - nil -> {:error, {:convert, :command_not_found}} {:error, _} = error -> error end end - defp prepare_image_resize_args( - %{max_width: max_width, max_height: max_height, format: "png"} = options - ) do - quality = options[:quality] || 85 - resize = Enum.join([max_width, "x", max_height, ">"]) - - args = [ - "-resize", - resize, - "-quality", - to_string(quality), - "png:-" - ] - - {:ok, args} - end - - defp prepare_image_resize_args(%{max_width: max_width, max_height: max_height} = options) do - quality = options[:quality] || 85 - resize = Enum.join([max_width, "x", max_height, ">"]) - - args = [ - "-interlace", - "Plane", - "-resize", - resize, - "-quality", - to_string(quality), - "jpg:-" - ] - - {:ok, args} - end - - defp prepare_image_resize_args(_), do: {:error, :missing_options} - # Note: video thumbnail is intentionally not resized (always has original dimensions) + @spec video_framegrab(String.t()) :: {:ok, binary()} | {:error, any()} def video_framegrab(url) do with executable when is_binary(executable) <- System.find_executable("ffmpeg"), + false <- @cachex.exists?(:failed_media_helper_cache, url), {:ok, env} <- HTTP.get(url, [], pool: :media), - {:ok, fifo_path} <- mkfifo(), - args = [ - "-y", - "-i", - fifo_path, - "-vframes", - "1", - "-f", - "mjpeg", - "-loglevel", - "error", - "-" - ] do - run_fifo(fifo_path, env, executable, args) + {:ok, pid} <- StringIO.open(env.body) do + body_stream = IO.binstream(pid, 1) + + task = + Task.async(fn -> + Exile.stream!( + [ + executable, + "-i", + "pipe:0", + "-vframes", + "1", + "-f", + "mjpeg", + "pipe:1" + ], + input: body_stream, + ignore_epipe: true, + stderr: :disable + ) + |> Enum.into(<<>>) + end) + + case Task.yield(task, 5_000) do + nil -> + Task.shutdown(task) + @cachex.put(:failed_media_helper_cache, url, nil) + {:error, {:ffmpeg, :timeout}} + + result -> + {:ok, result} + end else nil -> {:error, {:ffmpeg, :command_not_found}} {:error, _} = error -> error end end - - defp run_fifo(fifo_path, env, executable, args) do - pid = - Port.open({:spawn_executable, executable}, [ - :use_stdio, - :stream, - :exit_status, - :binary, - args: args - ]) - - fifo = Port.open(to_charlist(fifo_path), [:eof, :binary, :stream, :out]) - fix = Pleroma.Helpers.QtFastStart.fix(env.body) - true = Port.command(fifo, fix) - :erlang.port_close(fifo) - loop_recv(pid) - after - File.rm(fifo_path) - end - - defp mkfifo do - path = Path.join(System.tmp_dir!(), "pleroma-media-preview-pipe-#{Ecto.UUID.generate()}") - - case System.cmd("mkfifo", [path]) do - {_, 0} -> - spawn(fifo_guard(path)) - {:ok, path} - - {_, err} -> - {:error, {:fifo_failed, err}} - end - end - - defp fifo_guard(path) do - pid = self() - - fn -> - ref = Process.monitor(pid) - - receive do - {:DOWN, ^ref, :process, ^pid, _} -> - File.rm(path) - end - end - end - - defp loop_recv(pid) do - loop_recv(pid, <<>>) - end - - defp loop_recv(pid, acc) do - receive do - {^pid, {:data, data}} -> - loop_recv(pid, acc <> data) - - {^pid, {:exit_status, 0}} -> - {:ok, acc} - - {^pid, {:exit_status, status}} -> - {:error, status} - after - 5000 -> - :erlang.port_close(pid) - {:error, :timeout} - end - end end diff --git a/lib/pleroma/helpers/qt_fast_start.ex b/lib/pleroma/helpers/qt_fast_start.ex @@ -40,16 +40,21 @@ defmodule Pleroma.Helpers.QtFastStart do got_mdat, acc ) do - full_size = (size - 8) * 8 - <<data::bits-size(full_size), rest::bits>> = rest - - acc = [ - {fourcc, pos, pos + size, size, - <<size::integer-big-size(32), fourcc::bits-size(32), data::bits>>} - | acc - ] - - fix(rest, pos + size, got_moov || fourcc == "moov", got_mdat || fourcc == "mdat", acc) + try do + full_size = (size - 8) * 8 + <<data::bits-size(full_size), rest::bits>> = rest + + acc = [ + {fourcc, pos, pos + size, size, + <<size::integer-big-size(32), fourcc::bits-size(32), data::bits>>} + | acc + ] + + fix(rest, pos + size, got_moov || fourcc == "moov", got_mdat || fourcc == "mdat", acc) + rescue + _ -> + :abort + end end defp fix(<<>>, _pos, _, _, acc) do @@ -121,9 +126,15 @@ defmodule Pleroma.Helpers.QtFastStart do <<pos::integer-big-size(unquote(size)), rest::bits>>, acc ) do - rewrite_entries(unquote(size), offset, rest, [ - acc | <<pos + offset::integer-big-size(unquote(size))>> - ]) + rewrite_entries( + unquote(size), + offset, + rest, + acc ++ + [ + <<pos + offset::integer-big-size(unquote(size))>> + ] + ) end end diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex @@ -6,8 +6,6 @@ defmodule Pleroma.HTML do # Scrubbers are compiled on boot so they can be configured in OTP releases # @on_load :compile_scrubbers - @cachex Pleroma.Config.get([:cachex, :provider], Cachex) - def compile_scrubbers do dir = Path.join(:code.priv_dir(:pleroma), "scrubbers") @@ -67,22 +65,9 @@ defmodule Pleroma.HTML do end end - def extract_first_external_url_from_object(%{data: %{"content" => content}} = object) + @spec extract_first_external_url_from_object(Pleroma.Object.t()) :: String.t() | nil + def extract_first_external_url_from_object(%{data: %{"content" => content}}) when is_binary(content) do - unless object.data["fake"] do - key = "URL|#{object.id}" - - @cachex.fetch!(:scrubber_cache, key, fn _key -> - {:commit, {:ok, extract_first_external_url(content)}} - end) - else - {:ok, extract_first_external_url(content)} - end - end - - def extract_first_external_url_from_object(_), do: {:error, :no_content} - - def extract_first_external_url(content) do content |> Floki.parse_fragment!() |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])") @@ -90,4 +75,6 @@ defmodule Pleroma.HTML do |> Floki.attribute("href") |> Enum.at(0) end + + def extract_first_external_url_from_object(_), do: nil end diff --git a/lib/pleroma/http.ex b/lib/pleroma/http.ex @@ -106,6 +106,10 @@ defmodule Pleroma.HTTP do [Tesla.Middleware.FollowRedirects, Pleroma.Tesla.Middleware.ConnectionPool] end + defp adapter_middlewares({Tesla.Adapter.Finch, _}) do + [Tesla.Middleware.FollowRedirects] + end + defp adapter_middlewares(_) do if Pleroma.Config.get(:env) == :test do # Emulate redirects in test env, which are handled by adapters in other environments diff --git a/lib/pleroma/http/adapter_helper.ex b/lib/pleroma/http/adapter_helper.ex @@ -15,8 +15,8 @@ defmodule Pleroma.HTTP.AdapterHelper do require Logger @type proxy :: - {Connection.host(), pos_integer()} - | {Connection.proxy_type(), Connection.host(), pos_integer()} + {host(), pos_integer()} + | {proxy_type(), host(), pos_integer()} @callback options(keyword(), URI.t()) :: keyword() @@ -70,15 +70,15 @@ defmodule Pleroma.HTTP.AdapterHelper do {:ok, parse_host(host), port} else {_, _} -> - Logger.warn("Parsing port failed #{inspect(proxy)}") + Logger.warning("Parsing port failed #{inspect(proxy)}") {:error, :invalid_proxy_port} :error -> - Logger.warn("Parsing port failed #{inspect(proxy)}") + Logger.warning("Parsing port failed #{inspect(proxy)}") {:error, :invalid_proxy_port} _ -> - Logger.warn("Parsing proxy failed #{inspect(proxy)}") + Logger.warning("Parsing proxy failed #{inspect(proxy)}") {:error, :invalid_proxy} end end @@ -88,7 +88,7 @@ defmodule Pleroma.HTTP.AdapterHelper do {:ok, type, parse_host(host), port} else _ -> - Logger.warn("Parsing proxy failed #{inspect(proxy)}") + Logger.warning("Parsing proxy failed #{inspect(proxy)}") {:error, :invalid_proxy} end end diff --git a/lib/pleroma/http/request_builder.ex b/lib/pleroma/http/request_builder.ex @@ -54,12 +54,12 @@ defmodule Pleroma.HTTP.RequestBuilder do @doc """ Add optional parameters to the request """ - @spec add_param(Request.t(), atom(), atom(), any()) :: Request.t() + @spec add_param(Request.t(), atom(), atom() | String.t(), any()) :: Request.t() def add_param(request, :query, :query, values), do: %{request | query: values} def add_param(request, :body, :body, value), do: %{request | body: value} - def add_param(request, :body, key, value) do + def add_param(request, :body, key, value) when is_binary(key) do request |> Map.put(:body, Multipart.new()) |> Map.update!( diff --git a/lib/pleroma/http/web_push.ex b/lib/pleroma/http/web_push.ex @@ -6,7 +6,11 @@ defmodule Pleroma.HTTP.WebPush do @moduledoc false def post(url, payload, headers, options \\ []) do - list_headers = Map.to_list(headers) + list_headers = + headers + |> Map.to_list() + |> Kernel.++([{"content-type", "octet-stream"}]) + Pleroma.HTTP.post(url, payload, list_headers, options) end end diff --git a/lib/pleroma/instances.ex b/lib/pleroma/instances.ex @@ -7,16 +7,15 @@ defmodule Pleroma.Instances do alias Pleroma.Instances.Instance - def filter_reachable(urls_or_hosts), do: Instance.filter_reachable(urls_or_hosts) + defdelegate filter_reachable(urls_or_hosts), to: Instance - def reachable?(url_or_host), do: Instance.reachable?(url_or_host) + defdelegate reachable?(url_or_host), to: Instance - def set_reachable(url_or_host), do: Instance.set_reachable(url_or_host) + defdelegate set_reachable(url_or_host), to: Instance - def set_unreachable(url_or_host, unreachable_since \\ nil), - do: Instance.set_unreachable(url_or_host, unreachable_since) + defdelegate set_unreachable(url_or_host, unreachable_since \\ nil), to: Instance - def get_consistently_unreachable, do: Instance.get_consistently_unreachable() + defdelegate get_consistently_unreachable, to: Instance def set_consistently_unreachable(url_or_host), do: set_unreachable(url_or_host, reachability_datetime_threshold()) diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Instances.Instance do alias Pleroma.Instances alias Pleroma.Instances.Instance + alias Pleroma.Maps alias Pleroma.Repo alias Pleroma.User alias Pleroma.Workers.BackgroundWorker @@ -24,6 +25,14 @@ defmodule Pleroma.Instances.Instance do field(:favicon, :string) field(:favicon_updated_at, :naive_datetime) + embeds_one :metadata, Pleroma.Instances.Metadata, primary_key: false do + field(:software_name, :string) + field(:software_version, :string) + field(:software_repository, :string) + end + + field(:metadata_updated_at, :utc_datetime) + timestamps() end @@ -31,11 +40,17 @@ defmodule Pleroma.Instances.Instance do def changeset(struct, params \\ %{}) do struct - |> cast(params, [:host, :unreachable_since, :favicon, :favicon_updated_at]) + |> cast(params, __schema__(:fields) -- [:metadata]) + |> cast_embed(:metadata, with: &metadata_changeset/2) |> validate_required([:host]) |> unique_constraint(:host) end + def metadata_changeset(struct, params \\ %{}) do + struct + |> cast(params, [:software_name, :software_version, :software_repository]) + end + def filter_reachable([]), do: %{} def filter_reachable(urls_or_hosts) when is_list(urls_or_hosts) do @@ -82,13 +97,9 @@ defmodule Pleroma.Instances.Instance do def reachable?(url_or_host) when is_binary(url_or_host), do: true def set_reachable(url_or_host) when is_binary(url_or_host) do - with host <- host(url_or_host), - %Instance{} = existing_record <- Repo.get_by(Instance, %{host: host}) do - {:ok, _instance} = - existing_record - |> changeset(%{unreachable_since: nil}) - |> Repo.update() - end + %Instance{host: host(url_or_host)} + |> changeset(%{unreachable_since: nil}) + |> Repo.insert(on_conflict: {:replace, [:unreachable_since]}, conflict_target: :host) end def set_reachable(_), do: {:error, nil} @@ -162,7 +173,7 @@ defmodule Pleroma.Instances.Instance do end rescue e -> - Logger.warn("Instance.get_or_update_favicon(\"#{host}\") error: #{inspect(e)}") + Logger.warning("Instance.get_or_update_favicon(\"#{host}\") error: #{inspect(e)}") nil end @@ -190,7 +201,7 @@ defmodule Pleroma.Instances.Instance do end rescue e -> - Logger.warn( + Logger.warning( "Instance.scrape_favicon(\"#{to_string(instance_uri)}\") error: #{inspect(e)}" ) @@ -198,6 +209,89 @@ defmodule Pleroma.Instances.Instance do end end + def get_or_update_metadata(%URI{host: host} = instance_uri) do + existing_record = Repo.get_by(Instance, %{host: host}) + now = NaiveDateTime.utc_now() + + if existing_record && existing_record.metadata_updated_at && + NaiveDateTime.diff(now, existing_record.metadata_updated_at) < 86_400 do + existing_record.metadata + else + metadata = scrape_metadata(instance_uri) + + if existing_record do + existing_record + |> changeset(%{metadata: metadata, metadata_updated_at: now}) + |> Repo.update() + else + %Instance{} + |> changeset(%{host: host, metadata: metadata, metadata_updated_at: now}) + |> Repo.insert() + end + + metadata + end + end + + defp get_nodeinfo_uri(well_known) do + links = Map.get(well_known, "links", []) + + nodeinfo21 = + Enum.find(links, &(&1["rel"] == "http://nodeinfo.diaspora.software/ns/schema/2.1"))["href"] + + nodeinfo20 = + Enum.find(links, &(&1["rel"] == "http://nodeinfo.diaspora.software/ns/schema/2.0"))["href"] + + cond do + is_binary(nodeinfo21) -> {:ok, nodeinfo21} + is_binary(nodeinfo20) -> {:ok, nodeinfo20} + true -> {:error, :no_links} + end + end + + defp scrape_metadata(%URI{} = instance_uri) do + try do + with {_, true} <- {:reachable, reachable?(instance_uri.host)}, + {:ok, %Tesla.Env{body: well_known_body}} <- + instance_uri + |> URI.merge("/.well-known/nodeinfo") + |> to_string() + |> Pleroma.HTTP.get([{"accept", "application/json"}]), + {:ok, well_known_json} <- Jason.decode(well_known_body), + {:ok, nodeinfo_uri} <- get_nodeinfo_uri(well_known_json), + {:ok, %Tesla.Env{body: nodeinfo_body}} <- + Pleroma.HTTP.get(nodeinfo_uri, [{"accept", "application/json"}]), + {:ok, nodeinfo} <- Jason.decode(nodeinfo_body) do + # Can extract more metadata from NodeInfo but need to be careful about it's size, + # can't just dump the entire thing + software = Map.get(nodeinfo, "software", %{}) + + %{ + software_name: software["name"], + software_version: software["version"] + } + |> Maps.put_if_present(:software_repository, software["repository"]) + else + {:reachable, false} -> + Logger.debug( + "Instance.scrape_metadata(\"#{to_string(instance_uri)}\") ignored unreachable host" + ) + + nil + + _ -> + nil + end + rescue + e -> + Logger.warning( + "Instance.scrape_metadata(\"#{to_string(instance_uri)}\") error: #{inspect(e)}" + ) + + nil + end + end + @doc """ Deletes all users from an instance in a background task, thus also deleting all of those users' activities and notifications. diff --git a/lib/pleroma/maintenance.ex b/lib/pleroma/maintenance.ex @@ -20,7 +20,7 @@ defmodule Pleroma.Maintenance do "full" -> Logger.info("Running VACUUM FULL.") - Logger.warn( + Logger.warning( "Re-packing your entire database may take a while and will consume extra disk space during the process." ) diff --git a/lib/pleroma/maps.ex b/lib/pleroma/maps.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Maps do @@ -18,4 +18,17 @@ defmodule Pleroma.Maps do rescue _ -> data end + + def filter_empty_values(data) do + # TODO: Change to Map.filter in Elixir 1.13+ + data + |> Enum.filter(fn + {_k, nil} -> false + {_k, ""} -> false + {_k, []} -> false + {_k, %{} = v} -> Map.keys(v) != [] + {_k, _v} -> true + end) + |> Map.new() + end end diff --git a/lib/pleroma/mfa.ex b/lib/pleroma/mfa.ex @@ -77,7 +77,7 @@ defmodule Pleroma.MFA do {:ok, codes} else {:error, msg} -> - %{error: msg} + {:error, msg} end end diff --git a/lib/pleroma/mfa/totp.ex b/lib/pleroma/mfa/totp.ex @@ -14,6 +14,7 @@ defmodule Pleroma.MFA.TOTP do @doc """ https://github.com/google/google-authenticator/wiki/Key-Uri-Format """ + @spec provisioning_uri(String.t(), String.t(), list()) :: String.t() def provisioning_uri(secret, label, opts \\ []) do query = %{ @@ -27,7 +28,7 @@ defmodule Pleroma.MFA.TOTP do |> URI.encode_query() %URI{scheme: "otpauth", host: "totp", path: "/" <> label, query: query} - |> URI.to_string() + |> to_string() end defp default_period, do: Config.get(@config_ns ++ [:period]) diff --git a/lib/pleroma/migrators/hashtags_table_migrator.ex b/lib/pleroma/migrators/hashtags_table_migrator.ex @@ -100,7 +100,7 @@ defmodule Pleroma.Migrators.HashtagsTableMigrator do |> where([_o, hashtags_objects], is_nil(hashtags_objects.object_id)) end - @spec transfer_object_hashtags(Map.t()) :: {:noop | :ok | :error, integer()} + @spec transfer_object_hashtags(map()) :: {:noop | :ok | :error, integer()} defp transfer_object_hashtags(object) do embedded_tags = if Map.has_key?(object, :tag), do: object.tag, else: object.data["tag"] hashtags = Object.object_data_hashtags(%{"tag" => embedded_tags}) diff --git a/lib/pleroma/migrators/support/base_migrator.ex b/lib/pleroma/migrators/support/base_migrator.ex @@ -73,7 +73,7 @@ defmodule Pleroma.Migrators.Support.BaseMigrator do data_migration.state == :manual or data_migration.name in manual_migrations -> message = "Data migration is in manual execution or manual fix mode." update_status(:manual, message) - Logger.warn("#{__MODULE__}: #{message}") + Logger.warning("#{__MODULE__}: #{message}") data_migration.state == :complete -> on_complete(data_migration) @@ -109,7 +109,7 @@ defmodule Pleroma.Migrators.Support.BaseMigrator do Putting data migration to manual fix mode. Try running `#{__MODULE__}.retry_failed/0`. """ - Logger.warn("#{__MODULE__}: #{message}") + Logger.warning("#{__MODULE__}: #{message}") update_status(:manual, message) on_complete(data_migration()) @@ -125,7 +125,7 @@ defmodule Pleroma.Migrators.Support.BaseMigrator do defp on_complete(data_migration) do if data_migration.feature_lock || feature_state() == :disabled do - Logger.warn( + Logger.warning( "#{__MODULE__}: migration complete but feature is locked; consider enabling." ) @@ -188,10 +188,11 @@ defmodule Pleroma.Migrators.Support.BaseMigrator do end defp fault_rate do - with failures_count when is_integer(failures_count) <- failures_count() do + with failures_count when is_integer(failures_count) <- failures_count(), + true <- failures_count > 0 do failures_count / Enum.max([get_stat(:affected_count, 0), 1]) else - _ -> :error + _ -> 0 end end diff --git a/lib/pleroma/moderation_log.ex b/lib/pleroma/moderation_log.ex @@ -121,7 +121,7 @@ defmodule Pleroma.ModerationLog do defp prepare_log_data(attrs), do: attrs - @spec insert_log(log_params()) :: {:ok, ModerationLog} | {:error, any} + @spec insert_log(log_params()) :: {:ok, ModerationLog.t()} | {:error, any} def insert_log(%{actor: %User{}, subject: subjects, permission: permission} = attrs) do data = attrs @@ -248,7 +248,8 @@ defmodule Pleroma.ModerationLog do |> insert_log_entry_with_message() end - @spec insert_log_entry_with_message(ModerationLog) :: {:ok, ModerationLog} | {:error, any} + @spec insert_log_entry_with_message(ModerationLog.t()) :: + {:ok, ModerationLog.t()} | {:error, any} defp insert_log_entry_with_message(entry) do entry.data["message"] |> put_in(get_log_entry_message(entry)) diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex @@ -73,6 +73,7 @@ defmodule Pleroma.Notification do pleroma:report reblog poll + status } def changeset(%Notification{} = notification, attrs) do @@ -88,7 +89,7 @@ defmodule Pleroma.Notification do where: q.seen == true, select: type(q.id, :string), limit: 1, - order_by: [desc: :id] + order_by: fragment("? desc nulls last", q.id) ) end @@ -137,7 +138,7 @@ defmodule Pleroma.Notification do blocked_ap_ids = opts[:blocked_users_ap_ids] || User.blocked_users_ap_ids(user) query - |> where([n, a], a.actor not in ^blocked_ap_ids) + |> where([..., user_actor: user_actor], user_actor.ap_id not in ^blocked_ap_ids) |> FollowingRelationship.keep_following_or_not_domain_blocked(user) end @@ -148,7 +149,7 @@ defmodule Pleroma.Notification do blocker_ap_ids = User.incoming_relationships_ungrouped_ap_ids(user, [:block]) query - |> where([n, a], a.actor not in ^blocker_ap_ids) + |> where([..., user_actor: user_actor], user_actor.ap_id not in ^blocker_ap_ids) end end @@ -161,7 +162,7 @@ defmodule Pleroma.Notification do opts[:notification_muted_users_ap_ids] || User.notification_muted_users_ap_ids(user) query - |> where([n, a], a.actor not in ^notification_muted_ap_ids) + |> where([..., user_actor: user_actor], user_actor.ap_id not in ^notification_muted_ap_ids) |> join(:left, [n, a], tm in ThreadMute, on: tm.user_id == ^user.id and tm.context == fragment("?->>'context'", a.data), as: :thread_mute @@ -280,15 +281,10 @@ defmodule Pleroma.Notification do select: n.id ) - {:ok, %{ids: {_, notification_ids}}} = - Multi.new() - |> Multi.update_all(:ids, query, set: [seen: true, updated_at: NaiveDateTime.utc_now()]) - |> Marker.multi_set_last_read_id(user, "notifications") - |> Repo.transaction() - - for_user_query(user) - |> where([n], n.id in ^notification_ids) - |> Repo.all() + Multi.new() + |> Multi.update_all(:ids, query, set: [seen: true, updated_at: NaiveDateTime.utc_now()]) + |> Marker.multi_set_last_read_id(user, "notifications") + |> Repo.transaction() end @spec read_one(User.t(), String.t()) :: @@ -299,10 +295,6 @@ defmodule Pleroma.Notification do |> Multi.update(:update, changeset(notification, %{seen: true})) |> Marker.multi_set_last_read_id(user, "notifications") |> Repo.transaction() - |> case do - {:ok, %{update: notification}} -> {:ok, notification} - {:error, :update, changeset, _} -> {:error, changeset} - end end end @@ -361,37 +353,38 @@ defmodule Pleroma.Notification do end end - @spec create_notifications(Activity.t(), keyword()) :: {:ok, [Notification.t()] | []} - def create_notifications(activity, options \\ []) + @spec create_notifications(Activity.t()) :: {:ok, [Notification.t()] | []} + def create_notifications(activity) - def create_notifications(%Activity{data: %{"to" => _, "type" => "Create"}} = activity, options) do + def create_notifications(%Activity{data: %{"to" => _, "type" => "Create"}} = activity) do object = Object.normalize(activity, fetch: false) if object && object.data["type"] == "Answer" do {:ok, []} else - do_create_notifications(activity, options) + do_create_notifications(activity) end end - def create_notifications(%Activity{data: %{"type" => type}} = activity, options) + def create_notifications(%Activity{data: %{"type" => type}} = activity) when type in ["Follow", "Like", "Announce", "Move", "EmojiReact", "Flag", "Update"] do - do_create_notifications(activity, options) + do_create_notifications(activity) end - def create_notifications(_, _), do: {:ok, []} + def create_notifications(_), do: {:ok, []} - defp do_create_notifications(%Activity{} = activity, options) do - do_send = Keyword.get(options, :do_send, true) + defp do_create_notifications(%Activity{} = activity) do + enabled_receivers = get_notified_from_activity(activity) - {enabled_receivers, disabled_receivers} = get_notified_from_activity(activity) - potential_receivers = enabled_receivers ++ disabled_receivers + enabled_subscribers = get_notified_subscribers_from_activity(activity) notifications = - Enum.map(potential_receivers, fn user -> - do_send = do_send && user in enabled_receivers - create_notification(activity, user, do_send: do_send) - end) + (Enum.map(enabled_receivers, fn user -> + create_notification(activity, user) + end) ++ + Enum.map(enabled_subscribers -- enabled_receivers, fn user -> + create_notification(activity, user, type: "status") + end)) |> Enum.reject(&is_nil/1) {:ok, notifications} @@ -450,7 +443,6 @@ defmodule Pleroma.Notification do # TODO move to sql, too. def create_notification(%Activity{} = activity, %User{} = user, opts \\ []) do - do_send = Keyword.get(opts, :do_send, true) type = Keyword.get(opts, :type, type_from_activity(activity)) unless skip?(activity, user, opts) do @@ -465,11 +457,6 @@ defmodule Pleroma.Notification do |> Marker.multi_set_last_read_id(user, "notifications") |> Repo.transaction() - if do_send do - Streamer.stream(["user", "user:notification"], notification) - Push.send(notification) - end - notification end end @@ -527,13 +514,28 @@ defmodule Pleroma.Notification do |> exclude_relationship_restricted_ap_ids(activity) |> exclude_thread_muter_ap_ids(activity) - notification_enabled_users = - Enum.filter(potential_receivers, fn u -> u.ap_id in notification_enabled_ap_ids end) + Enum.filter(potential_receivers, fn u -> u.ap_id in notification_enabled_ap_ids end) + end + + def get_notified_from_activity(_, _local_only), do: [] + + def get_notified_subscribers_from_activity(activity, local_only \\ true) - {notification_enabled_users, potential_receivers -- notification_enabled_users} + def get_notified_subscribers_from_activity( + %Activity{data: %{"type" => "Create"}} = activity, + local_only + ) do + notification_enabled_ap_ids = + [] + |> Utils.maybe_notify_subscribers(activity) + + potential_receivers = + User.get_users_from_set(notification_enabled_ap_ids, local_only: local_only) + + Enum.filter(potential_receivers, fn u -> u.ap_id in notification_enabled_ap_ids end) end - def get_notified_from_activity(_, _local_only), do: {[], []} + def get_notified_subscribers_from_activity(_, _), do: [] # For some activities, only notify the author of the object def get_potential_receiver_ap_ids(%{data: %{"type" => type, "object" => object_id}}) @@ -576,7 +578,6 @@ defmodule Pleroma.Notification do [] |> Utils.maybe_notify_to_recipients(activity) |> Utils.maybe_notify_mentioned_recipients(activity) - |> Utils.maybe_notify_subscribers(activity) |> Utils.maybe_notify_followers(activity) |> Enum.uniq() end @@ -643,6 +644,7 @@ defmodule Pleroma.Notification do def skip?(%Activity{} = activity, %User{} = user, opts) do [ :self, + :internal, :invisible, :block_from_strangers, :recently_followed, @@ -662,6 +664,12 @@ defmodule Pleroma.Notification do end end + def skip?(:internal, %Activity{} = activity, _user, _opts) do + actor = activity.data["actor"] + user = User.get_cached_by_ap_id(actor) + User.internal?(user) + end + def skip?(:invisible, %Activity{} = activity, _user, _opts) do actor = activity.data["actor"] user = User.get_cached_by_ap_id(actor) @@ -748,4 +756,12 @@ defmodule Pleroma.Notification do ) |> Repo.update_all(set: [seen: true]) end + + @spec send(list(Notification.t())) :: :ok + def send(notifications) do + Enum.each(notifications, fn notification -> + Streamer.stream(["user", "user:notification"], notification) + Push.send(notification) + end) + end end diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex @@ -177,7 +177,10 @@ defmodule Pleroma.Object do ap_id Keyword.get(options, :fetch) -> - Fetcher.fetch_object_from_id!(ap_id, options) + case Fetcher.fetch_object_from_id(ap_id, options) do + {:ok, object} -> object + _ -> nil + end true -> get_cached_by_ap_id(ap_id) @@ -239,17 +242,17 @@ defmodule Pleroma.Object do {:ok, _} <- invalid_object_cache(object) do cleanup_attachments( Config.get([:instance, :cleanup_attachments]), - %{"object" => object} + object ) {:ok, object, deleted_activity} end end - @spec cleanup_attachments(boolean(), %{required(:object) => map()}) :: + @spec cleanup_attachments(boolean(), Object.t()) :: {:ok, Oban.Job.t() | nil} - def cleanup_attachments(true, %{"object" => _} = params) do - AttachmentsCleanupWorker.enqueue("cleanup_attachments", params) + def cleanup_attachments(true, %Object{} = object) do + AttachmentsCleanupWorker.enqueue("cleanup_attachments", %{"object" => object}) end def cleanup_attachments(_, _), do: {:ok, nil} @@ -328,6 +331,52 @@ defmodule Pleroma.Object do end end + def increase_quotes_count(ap_id) do + Object + |> where([o], fragment("?->>'id' = ?::text", o.data, ^to_string(ap_id))) + |> update([o], + set: [ + data: + fragment( + """ + safe_jsonb_set(?, '{quotesCount}', + (coalesce((?->>'quotesCount')::int, 0) + 1)::varchar::jsonb, true) + """, + o.data, + o.data + ) + ] + ) + |> Repo.update_all([]) + |> case do + {1, [object]} -> set_cache(object) + _ -> {:error, "Not found"} + end + end + + def decrease_quotes_count(ap_id) do + Object + |> where([o], fragment("?->>'id' = ?::text", o.data, ^to_string(ap_id))) + |> update([o], + set: [ + data: + fragment( + """ + safe_jsonb_set(?, '{quotesCount}', + (greatest(0, (?->>'quotesCount')::int - 1))::varchar::jsonb, true) + """, + o.data, + o.data + ) + ] + ) + |> Repo.update_all([]) + |> case do + {1, [object]} -> set_cache(object) + _ -> {:error, "Not found"} + end + end + def increase_vote_count(ap_id, name, actor) do with %Object{} = object <- Object.normalize(ap_id, fetch: false), "Question" <- object.data["type"] do @@ -425,4 +474,30 @@ defmodule Pleroma.Object do end def object_data_hashtags(_), do: [] + + def get_emoji_reactions(object) do + reactions = object.data["reactions"] + + if is_list(reactions) or is_map(reactions) do + reactions + |> Enum.map(fn + [_emoji, users, _maybe_url] = item when is_list(users) -> + item + + [emoji, users] when is_list(users) -> + [emoji, users, nil] + + # This case is here to process the Map situation, which will happen + # only with the legacy two-value format. + {emoji, users} when is_list(users) -> + [emoji, users, nil] + + _ -> + nil + end) + |> Enum.reject(&is_nil/1) + else + [] + end + end end diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex @@ -8,77 +8,30 @@ defmodule Pleroma.Object.Fetcher do alias Pleroma.Maps alias Pleroma.Object alias Pleroma.Object.Containment - alias Pleroma.Repo alias Pleroma.Signature alias Pleroma.Web.ActivityPub.InternalFetchActor + alias Pleroma.Web.ActivityPub.MRF alias Pleroma.Web.ActivityPub.ObjectValidator + alias Pleroma.Web.ActivityPub.Pipeline alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.Federator require Logger require Pleroma.Constants - defp touch_changeset(changeset) do - updated_at = - NaiveDateTime.utc_now() - |> NaiveDateTime.truncate(:second) - - Ecto.Changeset.put_change(changeset, :updated_at, updated_at) - end - - defp maybe_reinject_internal_fields(%{data: %{} = old_data}, new_data) do - has_history? = fn - %{"formerRepresentations" => %{"orderedItems" => list}} when is_list(list) -> true - _ -> false - end - - internal_fields = Map.take(old_data, Pleroma.Constants.object_internal_fields()) - - remote_history_exists? = has_history?.(new_data) - - # If the remote history exists, we treat that as the only source of truth. - new_data = - if has_history?.(old_data) and not remote_history_exists? do - Map.put(new_data, "formerRepresentations", old_data["formerRepresentations"]) - else - new_data - end - - # If the remote does not have history information, we need to manage it ourselves - new_data = - if not remote_history_exists? do - changed? = - Pleroma.Constants.status_updatable_fields() - |> Enum.any?(fn field -> Map.get(old_data, field) != Map.get(new_data, field) end) - - %{updated_object: updated_object} = - new_data - |> Object.Updater.maybe_update_history(old_data, - updated: changed?, - use_history_in_new_object?: false - ) - - updated_object - else - new_data - end - - Map.merge(new_data, internal_fields) - end - - defp maybe_reinject_internal_fields(_, new_data), do: new_data - @spec reinject_object(struct(), map()) :: {:ok, Object.t()} | {:error, any()} - defp reinject_object(%Object{data: %{"type" => "Question"}} = object, new_data) do + defp reinject_object(%Object{data: %{}} = object, new_data) do Logger.debug("Reinjecting object #{new_data["id"]}") - with data <- maybe_reinject_internal_fields(object, new_data), - {:ok, data, _} <- ObjectValidator.validate(data, %{}), - changeset <- Object.change(object, %{data: data}), - changeset <- touch_changeset(changeset), - {:ok, object} <- Repo.insert_or_update(changeset), - {:ok, object} <- Object.set_cache(object) do - {:ok, object} + with {:ok, new_data, _} <- ObjectValidator.validate(new_data, %{}), + {:ok, new_data} <- MRF.filter(new_data), + {:ok, new_object, _} <- + Object.Updater.do_update_and_invalidate_cache( + object, + new_data, + _touch_changeset? = true + ) do + {:ok, new_object} else e -> Logger.error("Error while processing object: #{inspect(e)}") @@ -86,20 +39,11 @@ defmodule Pleroma.Object.Fetcher do end end - defp reinject_object(%Object{} = object, new_data) do - Logger.debug("Reinjecting object #{new_data["id"]}") - - with new_data <- Transmogrifier.fix_object(new_data), - data <- maybe_reinject_internal_fields(object, new_data), - changeset <- Object.change(object, %{data: data}), - changeset <- touch_changeset(changeset), - {:ok, object} <- Repo.insert_or_update(changeset), - {:ok, object} <- Object.set_cache(object) do + defp reinject_object(_, new_data) do + with {:ok, object, _} <- Pipeline.common_pipeline(new_data, local: false) do {:ok, object} else - e -> - Logger.error("Error while processing object: #{inspect(e)}") - {:error, e} + e -> e end end @@ -128,20 +72,25 @@ defmodule Pleroma.Object.Fetcher do {:object, data, Object.normalize(activity, fetch: false)} do {:ok, object} else - {:allowed_depth, false} -> - {:error, "Max thread distance exceeded."} + {:allowed_depth, false} = e -> + log_fetch_error(id, e) + {:error, :allowed_depth} - {:containment, _} -> - {:error, "Object containment failed."} + {:containment, reason} = e -> + log_fetch_error(id, e) + {:error, reason} - {:transmogrifier, {:error, {:reject, e}}} -> - {:reject, e} + {:transmogrifier, {:error, {:reject, reason}}} = e -> + log_fetch_error(id, e) + {:reject, reason} - {:transmogrifier, {:reject, e}} -> - {:reject, e} + {:transmogrifier, {:reject, reason}} = e -> + log_fetch_error(id, e) + {:reject, reason} - {:transmogrifier, _} = e -> - {:error, e} + {:transmogrifier, reason} = e -> + log_fetch_error(id, e) + {:error, reason} {:object, data, nil} -> reinject_object(%Object{}, data) @@ -152,14 +101,21 @@ defmodule Pleroma.Object.Fetcher do {:fetch_object, %Object{} = object} -> {:ok, object} - {:fetch, {:error, error}} -> - {:error, error} + {:fetch, {:error, reason}} = e -> + log_fetch_error(id, e) + {:error, reason} e -> - e + log_fetch_error(id, e) + {:error, e} end end + defp log_fetch_error(id, error) do + Logger.metadata(object: id) + Logger.error("Object rejected while fetching #{id} #{inspect(error)}") + end + defp prepare_activity_params(data) do %{ "type" => "Create", @@ -173,26 +129,6 @@ defmodule Pleroma.Object.Fetcher do |> Maps.put_if_present("bcc", data["bcc"]) end - def fetch_object_from_id!(id, options \\ []) do - with {:ok, object} <- fetch_object_from_id(id, options) do - object - else - {:error, %Tesla.Mock.Error{}} -> - nil - - {:error, "Object has been deleted"} -> - nil - - {:reject, reason} -> - Logger.info("Rejected #{id} while fetching: #{inspect(reason)}") - nil - - e -> - Logger.error("Error while fetching #{id}: #{inspect(e)}") - nil - end - end - defp make_signature(id, date) do uri = URI.parse(id) @@ -283,8 +219,11 @@ defmodule Pleroma.Object.Fetcher do {:error, {:content_type, nil}} end + {:ok, %{status: code}} when code in [401, 403] -> + {:error, :forbidden} + {:ok, %{status: code}} when code in [404, 410] -> - {:error, "Object has been deleted"} + {:error, :not_found} {:error, e} -> {:error, e} diff --git a/lib/pleroma/object/updater.ex b/lib/pleroma/object/updater.ex @@ -5,6 +5,9 @@ defmodule Pleroma.Object.Updater do require Pleroma.Constants + alias Pleroma.Object + alias Pleroma.Repo + def update_content_fields(orig_object_data, updated_object) do Pleroma.Constants.status_updatable_fields() |> Enum.reduce( @@ -97,12 +100,14 @@ defmodule Pleroma.Object.Updater do end defp maybe_update_poll(to_be_updated, updated_object) do - choice_key = fn data -> - if Map.has_key?(data, "anyOf"), do: "anyOf", else: "oneOf" + choice_key = fn + %{"anyOf" => [_ | _]} -> "anyOf" + %{"oneOf" => [_ | _]} -> "oneOf" + _ -> nil end with true <- to_be_updated["type"] == "Question", - key <- choice_key.(updated_object), + key when not is_nil(key) <- choice_key.(updated_object), true <- key == choice_key.(to_be_updated), orig_choices <- to_be_updated[key] |> Enum.map(&Map.drop(&1, ["replies"])), new_choices <- updated_object[key] |> Enum.map(&Map.drop(&1, ["replies"])), @@ -237,4 +242,49 @@ defmodule Pleroma.Object.Updater do {:history_items, e} -> e end end + + defp maybe_touch_changeset(changeset, true) do + updated_at = + NaiveDateTime.utc_now() + |> NaiveDateTime.truncate(:second) + + Ecto.Changeset.put_change(changeset, :updated_at, updated_at) + end + + defp maybe_touch_changeset(changeset, _), do: changeset + + def do_update_and_invalidate_cache(orig_object, updated_object, touch_changeset? \\ false) do + orig_object_ap_id = updated_object["id"] + orig_object_data = orig_object.data + + %{ + updated_data: updated_object_data, + updated: updated, + used_history_in_new_object?: used_history_in_new_object? + } = make_new_object_data_from_update_object(orig_object_data, updated_object) + + changeset = + orig_object + |> Repo.preload(:hashtags) + |> Object.change(%{data: updated_object_data}) + |> maybe_touch_changeset(touch_changeset?) + + with {:ok, new_object} <- Repo.update(changeset), + {:ok, _} <- Object.invalid_object_cache(new_object), + {:ok, _} <- Object.set_cache(new_object), + # The metadata/utils.ex uses the object id for the cache. + {:ok, _} <- Pleroma.Activity.HTML.invalidate_cache_for(new_object.id) do + if used_history_in_new_object? do + with create_activity when not is_nil(create_activity) <- + Pleroma.Activity.get_create_by_object_ap_id(orig_object_ap_id), + {:ok, _} <- Pleroma.Activity.HTML.invalidate_cache_for(create_activity.id) do + nil + else + _ -> nil + end + end + + {:ok, new_object, updated} + end + end end diff --git a/lib/pleroma/pagination.ex b/lib/pleroma/pagination.ex @@ -61,15 +61,16 @@ defmodule Pleroma.Pagination do |> Repo.all() end - @spec paginate(Ecto.Query.t(), map(), type(), atom() | nil) :: [Ecto.Schema.t()] - def paginate(query, options, method \\ :keyset, table_binding \\ nil) - - def paginate(list, options, _method, _table_binding) when is_list(list) do + @spec paginate_list(list(), keyword()) :: list() + def paginate_list(list, options) do offset = options[:offset] || 0 limit = options[:limit] || 0 Enum.slice(list, offset, limit) end + @spec paginate(Ecto.Query.t(), map(), type(), atom() | nil) :: [Ecto.Schema.t()] + def paginate(query, options, method \\ :keyset, table_binding \\ nil) + def paginate(query, options, :keyset, table_binding) do query |> restrict(:min_id, options, table_binding) diff --git a/lib/pleroma/password/pbkdf2.ex b/lib/pleroma/password/pbkdf2.ex @@ -28,7 +28,7 @@ defmodule Pleroma.Password.Pbkdf2 do iterations = String.to_integer(iterations) - digest = String.to_atom(digest) + digest = String.to_existing_atom(digest) binary_hash = KeyGenerator.generate(password, salt, digest: digest, iterations: iterations, length: 64) diff --git a/lib/pleroma/prom_ex.ex b/lib/pleroma/prom_ex.ex @@ -0,0 +1,49 @@ +defmodule Pleroma.PromEx do + use PromEx, otp_app: :pleroma + + alias PromEx.Plugins + + @impl true + def plugins do + [ + # PromEx built in plugins + Plugins.Application, + Plugins.Beam, + {Plugins.Phoenix, router: Pleroma.Web.Router, endpoint: Pleroma.Web.Endpoint}, + Plugins.Ecto, + Plugins.Oban + # Plugins.PhoenixLiveView, + # Plugins.Absinthe, + # Plugins.Broadway, + + # Add your own PromEx metrics plugins + # Pleroma.Users.PromExPlugin + ] + end + + @impl true + def dashboard_assigns do + [ + datasource_id: Pleroma.Config.get([Pleroma.PromEx, :datasource]), + default_selected_interval: "30s" + ] + end + + @impl true + def dashboards do + [ + # PromEx built in Grafana dashboards + {:prom_ex, "application.json"}, + {:prom_ex, "beam.json"}, + {:prom_ex, "phoenix.json"}, + {:prom_ex, "ecto.json"}, + {:prom_ex, "oban.json"} + # {:prom_ex, "phoenix_live_view.json"}, + # {:prom_ex, "absinthe.json"}, + # {:prom_ex, "broadway.json"}, + + # Add your dashboard definitions here with the format: {:otp_app, "path_in_priv"} + # {:pleroma, "/grafana_dashboards/user_metrics.json"} + ] + end +end diff --git a/lib/pleroma/release_tasks.ex b/lib/pleroma/release_tasks.ex @@ -55,12 +55,6 @@ defmodule Pleroma.ReleaseTasks do {:error, term} when is_binary(term) -> IO.puts(:stderr, "The database for #{inspect(@repo)} couldn't be created: #{term}") - - {:error, term} -> - IO.puts( - :stderr, - "The database for #{inspect(@repo)} couldn't be created: #{inspect(term)}" - ) end end end diff --git a/lib/pleroma/repo.ex b/lib/pleroma/repo.ex @@ -11,8 +11,6 @@ defmodule Pleroma.Repo do import Ecto.Query require Logger - defmodule Instrumenter, do: use(Prometheus.EctoInstrumenter) - @doc """ Dynamically loads the repository url from the DATABASE_URL environment variable. diff --git a/lib/pleroma/report_note.ex b/lib/pleroma/report_note.ex @@ -23,8 +23,8 @@ defmodule Pleroma.ReportNote do timestamps() end - @spec create(FlakeId.Ecto.CompatType.t(), FlakeId.Ecto.CompatType.t(), String.t()) :: - {:ok, ReportNote.t()} | {:error, Changeset.t()} + @spec create(Ecto.UUID.t(), Ecto.UUID.t(), String.t()) :: + {:ok, ReportNote.t()} | {:error, Ecto.Changeset.t()} def create(user_id, activity_id, content) do attrs = %{ user_id: user_id, @@ -38,8 +38,8 @@ defmodule Pleroma.ReportNote do |> Repo.insert() end - @spec destroy(FlakeId.Ecto.CompatType.t()) :: - {:ok, ReportNote.t()} | {:error, Changeset.t()} + @spec destroy(Ecto.UUID.t()) :: + {:ok, ReportNote.t()} | {:error, Ecto.Changeset.t()} def destroy(id) do from(r in ReportNote, where: r.id == ^id) |> Repo.one() diff --git a/lib/pleroma/reverse_proxy.ex b/lib/pleroma/reverse_proxy.ex @@ -8,7 +8,7 @@ defmodule Pleroma.ReverseProxy do ~w(if-unmodified-since if-none-match) ++ @range_headers @resp_cache_headers ~w(etag date last-modified) @keep_resp_headers @resp_cache_headers ++ - ~w(content-length content-type content-disposition content-encoding) ++ + ~w(content-type content-disposition content-encoding) ++ ~w(content-range accept-ranges vary) @default_cache_control_header "public, max-age=1209600" @valid_resp_codes [200, 206, 304] @@ -81,16 +81,16 @@ defmodule Pleroma.ReverseProxy do import Plug.Conn @type option() :: - {:max_read_duration, :timer.time() | :infinity} + {:max_read_duration, non_neg_integer() | :infinity} | {:max_body_length, non_neg_integer() | :infinity} - | {:failed_request_ttl, :timer.time() | :infinity} - | {:http, []} + | {:failed_request_ttl, non_neg_integer() | :infinity} + | {:http, keyword()} | {:req_headers, [{String.t(), String.t()}]} | {:resp_headers, [{String.t(), String.t()}]} - | {:inline_content_types, boolean() | [String.t()]} + | {:inline_content_types, boolean() | list(String.t())} | {:redirect_on_failure, boolean()} - @spec call(Plug.Conn.t(), url :: String.t(), [option()]) :: Plug.Conn.t() + @spec call(Plug.Conn.t(), String.t(), list(option())) :: Plug.Conn.t() def call(_conn, _url, _opts \\ []) def call(conn = %{method: method}, url, opts) when method in @methods do @@ -192,7 +192,7 @@ defmodule Pleroma.ReverseProxy do halt(conn) {:error, error, conn} -> - Logger.warn( + Logger.warning( "#{__MODULE__} request to #{url} failed while reading/chunking: #{inspect(error)}" ) @@ -388,8 +388,6 @@ defmodule Pleroma.ReverseProxy do defp body_size_constraint(_, _), do: :ok - defp check_read_duration(nil = _duration, max), do: check_read_duration(@max_read_duration, max) - defp check_read_duration(duration, max) when is_integer(duration) and is_integer(max) and max > 0 do if duration > max do @@ -407,10 +405,6 @@ defmodule Pleroma.ReverseProxy do {:ok, previous_duration + duration} end - defp increase_read_duration(_) do - {:ok, :no_duration_limit, :no_duration_limit} - end - defp client, do: Pleroma.ReverseProxy.Client.Wrapper defp track_failed_url(url, error, opts) do diff --git a/lib/pleroma/rule.ex b/lib/pleroma/rule.ex @@ -0,0 +1,68 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Rule do + use Ecto.Schema + + import Ecto.Changeset + import Ecto.Query + + alias Pleroma.Repo + alias Pleroma.Rule + + schema "rules" do + field(:priority, :integer, default: 0) + field(:text, :string) + field(:hint, :string) + + timestamps() + end + + def changeset(%Rule{} = rule, params \\ %{}) do + rule + |> cast(params, [:priority, :text, :hint]) + |> validate_required([:text]) + end + + def query do + Rule + |> order_by(asc: :priority) + |> order_by(asc: :id) + end + + def get(ids) when is_list(ids) do + from(r in __MODULE__, where: r.id in ^ids) + |> Repo.all() + end + + def get(id), do: Repo.get(__MODULE__, id) + + def exists?(id) do + from(r in __MODULE__, where: r.id == ^id) + |> Repo.exists?() + end + + def create(params) do + {:ok, rule} = + %Rule{} + |> changeset(params) + |> Repo.insert() + + rule + end + + def update(params, id) do + {:ok, rule} = + get(id) + |> changeset(params) + |> Repo.update() + + rule + end + + def delete(id) do + get(id) + |> Repo.delete() + end +end diff --git a/lib/pleroma/scheduled_activity.ex b/lib/pleroma/scheduled_activity.ex @@ -6,7 +6,6 @@ defmodule Pleroma.ScheduledActivity do use Ecto.Schema alias Ecto.Multi - alias Pleroma.Config alias Pleroma.Repo alias Pleroma.ScheduledActivity alias Pleroma.User @@ -20,6 +19,8 @@ defmodule Pleroma.ScheduledActivity do @min_offset :timer.minutes(5) + @config_impl Application.compile_env(:pleroma, [__MODULE__, :config_impl], Pleroma.Config) + schema "scheduled_activities" do belongs_to(:user, User, type: FlakeId.Ecto.CompatType) field(:scheduled_at, :naive_datetime) @@ -40,7 +41,11 @@ defmodule Pleroma.ScheduledActivity do %{changes: %{params: %{"media_ids" => media_ids} = params}} = changeset ) when is_list(media_ids) do - media_attachments = Utils.attachments_from_ids(%{media_ids: media_ids}) + media_attachments = + Utils.attachments_from_ids( + %{media_ids: media_ids}, + User.get_cached_by_id(changeset.data.user_id) + ) params = params @@ -83,7 +88,7 @@ defmodule Pleroma.ScheduledActivity do |> where([sa], type(sa.scheduled_at, :date) == type(^scheduled_at, :date)) |> select([sa], count(sa.id)) |> Repo.one() - |> Kernel.>=(Config.get([ScheduledActivity, :daily_user_limit])) + |> Kernel.>=(@config_impl.get([ScheduledActivity, :daily_user_limit])) end def exceeds_total_user_limit?(user_id) do @@ -91,7 +96,7 @@ defmodule Pleroma.ScheduledActivity do |> where(user_id: ^user_id) |> select([sa], count(sa.id)) |> Repo.one() - |> Kernel.>=(Config.get([ScheduledActivity, :total_user_limit])) + |> Kernel.>=(@config_impl.get([ScheduledActivity, :total_user_limit])) end def far_enough?(scheduled_at) when is_binary(scheduled_at) do @@ -119,7 +124,7 @@ defmodule Pleroma.ScheduledActivity do def create(%User{} = user, attrs) do Multi.new() |> Multi.insert(:scheduled_activity, new(user, attrs)) - |> maybe_add_jobs(Config.get([ScheduledActivity, :enabled])) + |> maybe_add_jobs(@config_impl.get([ScheduledActivity, :enabled])) |> Repo.transaction() |> transaction_response end diff --git a/lib/pleroma/search.ex b/lib/pleroma/search.ex @@ -0,0 +1,21 @@ +defmodule Pleroma.Search do + alias Pleroma.Workers.SearchIndexingWorker + + def add_to_index(%Pleroma.Activity{id: activity_id}) do + SearchIndexingWorker.enqueue("add_to_index", %{"activity" => activity_id}) + end + + def remove_from_index(%Pleroma.Object{id: object_id}) do + SearchIndexingWorker.enqueue("remove_from_index", %{"object" => object_id}) + end + + def search(query, options) do + search_module = Pleroma.Config.get([Pleroma.Search, :module]) + search_module.search(options[:for_user], query, options) + end + + def healthcheck_endpoints do + search_module = Pleroma.Config.get([Pleroma.Search, :module]) + search_module.healthcheck_endpoints + end +end diff --git a/lib/pleroma/search/database_search.ex b/lib/pleroma/search/database_search.ex @@ -0,0 +1,168 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Search.DatabaseSearch do + alias Pleroma.Activity + alias Pleroma.Config + alias Pleroma.Object.Fetcher + alias Pleroma.Pagination + alias Pleroma.User + alias Pleroma.Web.ActivityPub.Visibility + + require Pleroma.Constants + + import Ecto.Query + + @behaviour Pleroma.Search.SearchBackend + + @impl true + def search(user, search_query, options \\ []) do + index_type = if Config.get([:database, :rum_enabled]), do: :rum, else: :gin + limit = Enum.min([Keyword.get(options, :limit), 40]) + offset = Keyword.get(options, :offset, 0) + author = Keyword.get(options, :author) + + try do + Activity + |> Activity.with_preloaded_object() + |> Activity.restrict_deactivated_users() + |> restrict_public(user) + |> query_with(index_type, search_query, :websearch) + |> maybe_restrict_local(user) + |> maybe_restrict_author(author) + |> maybe_restrict_blocked(user) + |> Pagination.fetch_paginated( + %{"offset" => offset, "limit" => limit, "skip_order" => index_type == :rum}, + :offset + ) + |> maybe_fetch(user, search_query) + rescue + _ -> maybe_fetch([], user, search_query) + end + end + + @impl true + def add_to_index(_activity), do: :ok + + @impl true + def remove_from_index(_object), do: :ok + + @impl true + def healthcheck_endpoints, do: nil + + def maybe_restrict_author(query, %User{} = author) do + Activity.Queries.by_author(query, author) + end + + def maybe_restrict_author(query, _), do: query + + def maybe_restrict_blocked(query, %User{} = user) do + Activity.Queries.exclude_authors(query, User.blocked_users_ap_ids(user)) + end + + def maybe_restrict_blocked(query, _), do: query + + defp restrict_public(q, user) when not is_nil(user) do + intended_recipients = [ + Pleroma.Constants.as_public(), + Pleroma.Web.ActivityPub.Utils.as_local_public() + ] + + from([a, o] in q, + where: fragment("?->>'type' = 'Create'", a.data), + where: fragment("? && ?", ^intended_recipients, a.recipients) + ) + end + + defp restrict_public(q, _user) do + from([a, o] in q, + where: fragment("?->>'type' = 'Create'", a.data), + where: ^Pleroma.Constants.as_public() in a.recipients + ) + end + + defp query_with(q, :gin, search_query, :plain) do + %{rows: [[tsc]]} = + Ecto.Adapters.SQL.query!( + Pleroma.Repo, + "select current_setting('default_text_search_config')::regconfig::oid;" + ) + + from([a, o] in q, + where: + fragment( + "to_tsvector(?::oid::regconfig, ?->>'content') @@ plainto_tsquery(?)", + ^tsc, + o.data, + ^search_query + ) + ) + end + + defp query_with(q, :gin, search_query, :websearch) do + %{rows: [[tsc]]} = + Ecto.Adapters.SQL.query!( + Pleroma.Repo, + "select current_setting('default_text_search_config')::regconfig::oid;" + ) + + from([a, o] in q, + where: + fragment( + "to_tsvector(?::oid::regconfig, ?->>'content') @@ websearch_to_tsquery(?)", + ^tsc, + o.data, + ^search_query + ) + ) + end + + defp query_with(q, :rum, search_query, :plain) do + from([a, o] in q, + where: + fragment( + "? @@ plainto_tsquery(?)", + o.fts_content, + ^search_query + ), + order_by: [fragment("? <=> now()::date", o.inserted_at)] + ) + end + + defp query_with(q, :rum, search_query, :websearch) do + from([a, o] in q, + where: + fragment( + "? @@ websearch_to_tsquery(?)", + o.fts_content, + ^search_query + ), + order_by: [fragment("? <=> now()::date", o.inserted_at)] + ) + end + + def maybe_restrict_local(q, user) do + limit = Config.get([:instance, :limit_to_local_content], :unauthenticated) + + case {limit, user} do + {:all, _} -> restrict_local(q) + {:unauthenticated, %User{}} -> q + {:unauthenticated, _} -> restrict_local(q) + {false, _} -> q + end + end + + defp restrict_local(q), do: where(q, local: true) + + def maybe_fetch(activities, user, search_query) do + with true <- Regex.match?(~r/https?:/, search_query), + {:ok, object} <- Fetcher.fetch_object_from_id(search_query), + %Activity{} = activity <- Activity.get_create_by_object_ap_id(object.data["id"]), + true <- Visibility.visible_for_user?(activity, user) do + [activity | activities] + else + _ -> activities + end + end +end diff --git a/lib/pleroma/search/healthcheck.ex b/lib/pleroma/search/healthcheck.ex @@ -0,0 +1,86 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +defmodule Pleroma.Search.Healthcheck do + @doc """ + Monitors health of search backend to control processing of events based on health and availability. + """ + use GenServer + require Logger + + @queue :search_indexing + @tick :timer.seconds(5) + @timeout :timer.seconds(2) + + def start_link(_) do + GenServer.start_link(__MODULE__, [], name: __MODULE__) + end + + @impl true + def init(_) do + state = %{healthy: false} + {:ok, state, {:continue, :start}} + end + + @impl true + def handle_continue(:start, state) do + tick() + {:noreply, state} + end + + @impl true + def handle_info(:check, state) do + urls = Pleroma.Search.healthcheck_endpoints() + + new_state = + if check(urls) do + Oban.resume_queue(queue: @queue) + Map.put(state, :healthy, true) + else + Oban.pause_queue(queue: @queue) + Map.put(state, :healthy, false) + end + + maybe_log_state_change(state, new_state) + + tick() + {:noreply, new_state} + end + + @impl true + def handle_call(:state, _from, state) do + {:reply, state, state, :hibernate} + end + + def state, do: GenServer.call(__MODULE__, :state) + + def check([]), do: true + + def check(urls) when is_list(urls) do + Enum.all?( + urls, + fn url -> + case Pleroma.HTTP.get(url, [], recv_timeout: @timeout) do + {:ok, %{status: 200}} -> true + _ -> false + end + end + ) + end + + def check(_), do: true + + defp tick do + Process.send_after(self(), :check, @tick) + end + + defp maybe_log_state_change(%{healthy: true}, %{healthy: false}) do + Logger.error("Pausing Oban queue #{@queue} due to search backend healthcheck failure") + end + + defp maybe_log_state_change(%{healthy: false}, %{healthy: true}) do + Logger.info("Resuming Oban queue #{@queue} due to search backend healthcheck pass") + end + + defp maybe_log_state_change(_, _), do: :ok +end diff --git a/lib/pleroma/search/meilisearch.ex b/lib/pleroma/search/meilisearch.ex @@ -0,0 +1,192 @@ +defmodule Pleroma.Search.Meilisearch do + require Logger + require Pleroma.Constants + + alias Pleroma.Activity + alias Pleroma.Config.Getting, as: Config + + import Pleroma.Search.DatabaseSearch + import Ecto.Query + + @behaviour Pleroma.Search.SearchBackend + + defp meili_headers do + private_key = Config.get([Pleroma.Search.Meilisearch, :private_key]) + + [{"Content-Type", "application/json"}] ++ + if is_nil(private_key), do: [], else: [{"Authorization", "Bearer #{private_key}"}] + end + + def meili_get(path) do + endpoint = Config.get([Pleroma.Search.Meilisearch, :url]) + + result = + Pleroma.HTTP.get( + Path.join(endpoint, path), + meili_headers() + ) + + with {:ok, res} <- result do + {:ok, Jason.decode!(res.body)} + end + end + + def meili_post(path, params) do + endpoint = Config.get([Pleroma.Search.Meilisearch, :url]) + + result = + Pleroma.HTTP.post( + Path.join(endpoint, path), + Jason.encode!(params), + meili_headers() + ) + + with {:ok, res} <- result do + {:ok, Jason.decode!(res.body)} + end + end + + def meili_put(path, params) do + endpoint = Config.get([Pleroma.Search.Meilisearch, :url]) + + result = + Pleroma.HTTP.request( + :put, + Path.join(endpoint, path), + Jason.encode!(params), + meili_headers(), + [] + ) + + with {:ok, res} <- result do + {:ok, Jason.decode!(res.body)} + end + end + + def meili_delete(path) do + endpoint = Config.get([Pleroma.Search.Meilisearch, :url]) + + with {:ok, _} <- + Pleroma.HTTP.request( + :delete, + Path.join(endpoint, path), + "", + meili_headers(), + [] + ) do + :ok + else + _ -> {:error, "Could not remove from index"} + end + end + + @impl true + def search(user, query, options \\ []) do + limit = Enum.min([Keyword.get(options, :limit), 40]) + offset = Keyword.get(options, :offset, 0) + author = Keyword.get(options, :author) + + res = + meili_post( + "/indexes/objects/search", + %{q: query, offset: offset, limit: limit} + ) + + with {:ok, result} <- res do + hits = result["hits"] |> Enum.map(& &1["ap"]) + + try do + hits + |> Activity.create_by_object_ap_id() + |> Activity.with_preloaded_object() + |> Activity.restrict_deactivated_users() + |> maybe_restrict_local(user) + |> maybe_restrict_author(author) + |> maybe_restrict_blocked(user) + |> maybe_fetch(user, query) + |> order_by([object: obj], desc: obj.data["published"]) + |> Pleroma.Repo.all() + rescue + _ -> maybe_fetch([], user, query) + end + end + end + + def object_to_search_data(object) do + # Only index public or unlisted Notes + if not is_nil(object) and object.data["type"] == "Note" and + not is_nil(object.data["content"]) and + (Pleroma.Constants.as_public() in object.data["to"] or + Pleroma.Constants.as_public() in object.data["cc"]) and + object.data["content"] not in ["", "."] do + data = object.data + + content_str = + case data["content"] do + [nil | rest] -> to_string(rest) + str -> str + end + + content = + with {:ok, scrubbed} <- + FastSanitize.Sanitizer.scrub(content_str, Pleroma.HTML.Scrubber.SearchIndexing), + trimmed <- String.trim(scrubbed) do + trimmed + end + + # Make sure we have a non-empty string + if content != "" do + {:ok, published, _} = DateTime.from_iso8601(data["published"]) + + %{ + id: object.id, + content: content, + ap: data["id"], + published: published |> DateTime.to_unix() + } + end + end + end + + @impl true + def add_to_index(activity) do + maybe_search_data = object_to_search_data(activity.object) + + if activity.data["type"] == "Create" and maybe_search_data do + result = + meili_put( + "/indexes/objects/documents", + [maybe_search_data] + ) + + with {:ok, %{"status" => "enqueued"}} <- result do + # Added successfully + :ok + else + _ -> + # There was an error, report it + Logger.error("Failed to add activity #{activity.id} to index: #{inspect(result)}") + {:error, result} + end + else + # The post isn't something we can search, that's ok + :ok + end + end + + @impl true + def remove_from_index(object) do + meili_delete("/indexes/objects/documents/#{object.id}") + end + + @impl true + def healthcheck_endpoints do + endpoint = + Config.get([Pleroma.Search.Meilisearch, :url]) + |> URI.parse() + |> Map.put(:path, "/health") + |> URI.to_string() + + [endpoint] + end +end diff --git a/lib/pleroma/search/search_backend.ex b/lib/pleroma/search/search_backend.ex @@ -0,0 +1,32 @@ +defmodule Pleroma.Search.SearchBackend do + @doc """ + Search statuses with a query, restricting to only those the user should have access to. + """ + @callback search(user :: Pleroma.User.t(), query :: String.t(), options :: [any()]) :: [ + Pleroma.Activity.t() + ] + + @doc """ + Add the object associated with the activity to the search index. + + The whole activity is passed, to allow filtering on things such as scope. + """ + @callback add_to_index(activity :: Pleroma.Activity.t()) :: :ok | {:error, any()} + + @doc """ + Remove the object from the index. + + Just the object, as opposed to the whole activity, is passed, since the object + is what contains the actual content and there is no need for filtering when removing + from index. + """ + @callback remove_from_index(object :: Pleroma.Object.t()) :: :ok | {:error, any()} + + @doc """ + Healthcheck endpoints of search backend infrastructure to monitor for controlling + processing of jobs in the Oban queue. + + It is expected a 200 response is healthy and other responses are unhealthy. + """ + @callback healthcheck_endpoints :: list() | nil +end diff --git a/lib/pleroma/signature.ex b/lib/pleroma/signature.ex @@ -27,7 +27,7 @@ defmodule Pleroma.Signature do _ -> case Pleroma.Web.WebFinger.finger(maybe_ap_id) do - %{"ap_id" => ap_id} -> {:ok, ap_id} + {:ok, %{"ap_id" => ap_id}} -> {:ok, ap_id} _ -> {:error, maybe_ap_id} end end diff --git a/lib/pleroma/telemetry/logger.ex b/lib/pleroma/telemetry/logger.ex @@ -59,7 +59,7 @@ defmodule Pleroma.Telemetry.Logger do _, _ ) do - Logger.error(fn -> + Logger.debug(fn -> "Connection pool had to refuse opening a connection to #{key} due to connection limit exhaustion" end) end @@ -70,7 +70,7 @@ defmodule Pleroma.Telemetry.Logger do %{key: key}, _ ) do - Logger.warn(fn -> + Logger.warning(fn -> "Pool worker for #{key}: Client #{inspect(client_pid)} died before releasing the connection with #{inspect(reason)}" end) end @@ -81,7 +81,7 @@ defmodule Pleroma.Telemetry.Logger do %{key: key, protocol: :http}, _ ) do - Logger.info(fn -> + Logger.debug(fn -> "Pool worker for #{key}: #{length(clients)} clients are using an HTTP1 connection at the same time, head-of-line blocking might occur." end) end diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex @@ -34,7 +34,6 @@ defmodule Pleroma.Upload do """ alias Ecto.UUID - alias Pleroma.Config alias Pleroma.Maps alias Pleroma.Web.ActivityPub.Utils require Logger @@ -52,6 +51,7 @@ defmodule Pleroma.Upload do | {:size_limit, nil | non_neg_integer()} | {:uploader, module()} | {:filters, [module()]} + | {:actor, String.t()} @type t :: %__MODULE__{ id: String.t(), @@ -76,6 +76,8 @@ defmodule Pleroma.Upload do :path ] + @config_impl Application.compile_env(:pleroma, [__MODULE__, :config_impl], Pleroma.Config) + defp get_description(upload) do case {upload.description, Pleroma.Config.get([Pleroma.Upload, :default_description])} do {description, _} when is_binary(description) -> description @@ -85,7 +87,7 @@ defmodule Pleroma.Upload do end end - @spec store(source, options :: [option()]) :: {:ok, Map.t()} | {:error, any()} + @spec store(source, options :: [option()]) :: {:ok, map()} | {:error, any()} @doc "Store a file. If using a `Plug.Upload{}` as the source, be sure to use `Majic.Plug` to ensure its content_type and filename is correct." def store(upload, opts \\ []) do opts = get_opts(opts) @@ -174,7 +176,7 @@ defmodule Pleroma.Upload do defp prepare_upload(%{img: "data:image/" <> image_data}, opts) do parsed = Regex.named_captures(~r/(?<filetype>jpeg|png|gif);base64,(?<data>.*)/, image_data) data = Base.decode64!(parsed["data"], ignore: :whitespace) - hash = Base.encode16(:crypto.hash(:sha256, data), lower: true) + hash = Base.encode16(:crypto.hash(:sha256, data), case: :upper) with :ok <- check_binary_size(data, opts.size_limit), tmp_path <- tempfile_for_image(data), @@ -237,25 +239,29 @@ defmodule Pleroma.Upload do "" end - [base_url, path] - |> Path.join() + if String.contains?(base_url, Pleroma.Uploaders.IPFS.placeholder()) do + String.replace(base_url, Pleroma.Uploaders.IPFS.placeholder(), path) + else + [base_url, path] + |> Path.join() + end end defp url_from_spec(_upload, _base_url, {:url, url}), do: url def base_url do - uploader = Config.get([Pleroma.Upload, :uploader]) - upload_base_url = Config.get([Pleroma.Upload, :base_url]) - public_endpoint = Config.get([uploader, :public_endpoint]) + uploader = @config_impl.get([Pleroma.Upload, :uploader]) + upload_base_url = @config_impl.get([Pleroma.Upload, :base_url]) + public_endpoint = @config_impl.get([uploader, :public_endpoint]) case uploader do Pleroma.Uploaders.Local -> upload_base_url || Pleroma.Web.Endpoint.url() <> "/media/" Pleroma.Uploaders.S3 -> - bucket = Config.get([Pleroma.Uploaders.S3, :bucket]) - truncated_namespace = Config.get([Pleroma.Uploaders.S3, :truncated_namespace]) - namespace = Config.get([Pleroma.Uploaders.S3, :bucket_namespace]) + bucket = @config_impl.get([Pleroma.Uploaders.S3, :bucket]) + truncated_namespace = @config_impl.get([Pleroma.Uploaders.S3, :truncated_namespace]) + namespace = @config_impl.get([Pleroma.Uploaders.S3, :bucket_namespace]) bucket_with_namespace = cond do @@ -275,6 +281,9 @@ defmodule Pleroma.Upload do Path.join([upload_base_url, bucket_with_namespace]) end + Pleroma.Uploaders.IPFS -> + @config_impl.get([Pleroma.Uploaders.IPFS, :get_gateway_url]) + _ -> public_endpoint || upload_base_url || Pleroma.Web.Endpoint.url() <> "/media/" end diff --git a/lib/pleroma/upload/filter.ex b/lib/pleroma/upload/filter.ex @@ -38,9 +38,9 @@ defmodule Pleroma.Upload.Filter do {:ok, :noop} -> filter(rest, upload) - error -> - Logger.error("#{__MODULE__}: Filter #{filter} failed: #{inspect(error)}") - error + {:error, e} -> + Logger.error("#{__MODULE__}: Filter #{filter} failed: #{inspect(e)}") + {:error, e} end end end diff --git a/lib/pleroma/upload/filter/analyze_metadata.ex b/lib/pleroma/upload/filter/analyze_metadata.ex @@ -8,27 +8,28 @@ defmodule Pleroma.Upload.Filter.AnalyzeMetadata do """ require Logger + alias Vix.Vips.Image + alias Vix.Vips.Operation + @behaviour Pleroma.Upload.Filter @spec filter(Pleroma.Upload.t()) :: {:ok, :filtered, Pleroma.Upload.t()} | {:ok, :noop} | {:error, String.t()} def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _} = upload) do try do - image = - file - |> Mogrify.open() - |> Mogrify.verbose() + {:ok, image} = Image.new_from_file(file) + {width, height} = {Image.width(image), Image.height(image)} upload = upload - |> Map.put(:width, image.width) - |> Map.put(:height, image.height) - |> Map.put(:blurhash, get_blurhash(file)) + |> Map.put(:width, width) + |> Map.put(:height, height) + |> Map.put(:blurhash, get_blurhash(image)) {:ok, :filtered, upload} rescue e in ErlangError -> - Logger.warn("#{__MODULE__}: #{inspect(e)}") + Logger.warning("#{__MODULE__}: #{inspect(e)}") {:ok, :noop} end end @@ -45,7 +46,7 @@ defmodule Pleroma.Upload.Filter.AnalyzeMetadata do {:ok, :filtered, upload} rescue e in ErlangError -> - Logger.warn("#{__MODULE__}: #{inspect(e)}") + Logger.warning("#{__MODULE__}: #{inspect(e)}") {:ok, :noop} end end @@ -53,7 +54,7 @@ defmodule Pleroma.Upload.Filter.AnalyzeMetadata do def filter(_), do: {:ok, :noop} defp get_blurhash(file) do - with {:ok, blurhash} <- :eblurhash.magick(file) do + with {:ok, blurhash} <- vips_blurhash(file) do blurhash else _ -> nil @@ -77,7 +78,28 @@ defmodule Pleroma.Upload.Filter.AnalyzeMetadata do %{width: width, height: height} else nil -> {:error, {:ffprobe, :command_not_found}} - {:error, _} = error -> error + error -> {:error, error} + end + end + + defp vips_blurhash(%Vix.Vips.Image{} = image) do + with {:ok, resized_image} <- Operation.thumbnail_image(image, 100), + {height, width} <- {Image.height(resized_image), Image.width(resized_image)}, + max <- max(height, width), + {x, y} <- {max(round(width * 5 / max), 1), max(round(height * 5 / max), 1)} do + {:ok, rgb} = + if Image.has_alpha?(resized_image) do + # remove alpha channel + resized_image + |> Operation.extract_band!(0, n: 3) + |> Image.write_to_binary() + else + Image.write_to_binary(resized_image) + end + + Blurhash.encode(rgb, width, height, x, y) + else + _ -> nil end end end diff --git a/lib/pleroma/upload/filter/exiftool/read_description.ex b/lib/pleroma/upload/filter/exiftool/read_description.ex @@ -10,8 +10,6 @@ defmodule Pleroma.Upload.Filter.Exiftool.ReadDescription do """ @behaviour Pleroma.Upload.Filter - @spec filter(Pleroma.Upload.t()) :: {:ok, any()} | {:error, String.t()} - def filter(%Pleroma.Upload{description: description}) when is_binary(description), do: {:ok, :noop} diff --git a/lib/pleroma/upload/filter/only_media.ex b/lib/pleroma/upload/filter/only_media.ex @@ -0,0 +1,20 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Upload.Filter.OnlyMedia do + @behaviour Pleroma.Upload.Filter + alias Pleroma.Upload + + def filter(%Upload{content_type: content_type}) do + [type, _subtype] = String.split(content_type, "/") + + if type in ["image", "video", "audio"] do + {:ok, :noop} + else + {:error, "Disallowed content-type: #{content_type}"} + end + end + + def filter(_), do: {:ok, :noop} +end diff --git a/lib/pleroma/uploaders/ipfs.ex b/lib/pleroma/uploaders/ipfs.ex @@ -0,0 +1,77 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Uploaders.IPFS do + @behaviour Pleroma.Uploaders.Uploader + require Logger + + alias Tesla.Multipart + + @config_impl Application.compile_env(:pleroma, [__MODULE__, :config_impl], Pleroma.Config) + + defp get_final_url(method) do + config = @config_impl.get([__MODULE__]) + post_base_url = Keyword.get(config, :post_gateway_url) + + Path.join([post_base_url, method]) + end + + def put_file_endpoint do + get_final_url("/api/v0/add") + end + + def delete_file_endpoint do + get_final_url("/api/v0/files/rm") + end + + @placeholder "{CID}" + def placeholder, do: @placeholder + + @impl true + def get_file(file) do + b_url = Pleroma.Upload.base_url() + + if String.contains?(b_url, @placeholder) do + {:ok, {:url, String.replace(b_url, @placeholder, URI.decode(file))}} + else + {:error, "IPFS Get URL doesn't contain 'cid' placeholder"} + end + end + + @impl true + def put_file(%Pleroma.Upload{} = upload) do + mp = + Multipart.new() + |> Multipart.add_content_type_param("charset=utf-8") + |> Multipart.add_file(upload.tempfile) + + case Pleroma.HTTP.post(put_file_endpoint(), mp, [], params: ["cid-version": "1"]) do + {:ok, ret} -> + case Jason.decode(ret.body) do + {:ok, ret} -> + if Map.has_key?(ret, "Hash") do + {:ok, {:file, ret["Hash"]}} + else + {:error, "JSON doesn't contain Hash key"} + end + + error -> + Logger.error("#{__MODULE__}: #{inspect(error)}") + {:error, "JSON decode failed"} + end + + error -> + Logger.error("#{__MODULE__}: #{inspect(error)}") + {:error, "IPFS Gateway upload failed"} + end + end + + @impl true + def delete_file(file) do + case Pleroma.HTTP.post(delete_file_endpoint(), "", [], params: [arg: file]) do + {:ok, %{status: 204}} -> :ok + error -> {:error, inspect(error)} + end + end +end diff --git a/lib/pleroma/uploaders/s3.ex b/lib/pleroma/uploaders/s3.ex @@ -6,7 +6,8 @@ defmodule Pleroma.Uploaders.S3 do @behaviour Pleroma.Uploaders.Uploader require Logger - alias Pleroma.Config + @ex_aws_impl Application.compile_env(:pleroma, [__MODULE__, :ex_aws_impl], ExAws) + @config_impl Application.compile_env(:pleroma, [__MODULE__, :config_impl], Pleroma.Config) # The file name is re-encoded with S3's constraints here to comply with previous # links with less strict filenames @@ -22,7 +23,7 @@ defmodule Pleroma.Uploaders.S3 do @impl true def put_file(%Pleroma.Upload{} = upload) do - config = Config.get([__MODULE__]) + config = @config_impl.get([__MODULE__]) bucket = Keyword.get(config, :bucket) streaming = Keyword.get(config, :streaming_enabled) @@ -56,7 +57,7 @@ defmodule Pleroma.Uploaders.S3 do ]) end - case ExAws.request(op) do + case @ex_aws_impl.request(op) do {:ok, _} -> {:ok, {:file, s3_name}} @@ -69,9 +70,9 @@ defmodule Pleroma.Uploaders.S3 do @impl true def delete_file(file) do [__MODULE__, :bucket] - |> Config.get() + |> @config_impl.get() |> ExAws.S3.delete_object(file) - |> ExAws.request() + |> @ex_aws_impl.request() |> case do {:ok, %{status_code: 204}} -> :ok error -> {:error, inspect(error)} @@ -83,3 +84,7 @@ defmodule Pleroma.Uploaders.S3 do String.replace(name, @regex, "-") end end + +defmodule Pleroma.Uploaders.S3.ExAwsAPI do + @callback request(op :: ExAws.Operation.t()) :: {:ok, ExAws.Operation.t()} | {:error, term()} +end diff --git a/lib/pleroma/uploaders/uploader.ex b/lib/pleroma/uploaders/uploader.ex @@ -5,8 +5,6 @@ defmodule Pleroma.Uploaders.Uploader do import Pleroma.Web.Gettext - @mix_env Mix.env() - @moduledoc """ Defines the contract to put and get an uploaded file to any backend. """ @@ -40,7 +38,7 @@ defmodule Pleroma.Uploaders.Uploader do @callback delete_file(file :: String.t()) :: :ok | {:error, String.t()} - @callback http_callback(Plug.Conn.t(), Map.t()) :: + @callback http_callback(Plug.Conn.t(), map()) :: {:ok, Plug.Conn.t()} | {:ok, Plug.Conn.t(), file_spec()} | {:error, Plug.Conn.t(), String.t()} @@ -75,10 +73,5 @@ defmodule Pleroma.Uploaders.Uploader do end end - defp callback_timeout do - case @mix_env do - :test -> 1_000 - _ -> 30_000 - end - end + defp callback_timeout, do: Application.get_env(:pleroma, __MODULE__)[:timeout] end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex @@ -8,6 +8,7 @@ defmodule Pleroma.User do import Ecto.Changeset import Ecto.Query import Ecto, only: [assoc: 2] + import Pleroma.Web.Utils.Guards, only: [not_empty_string: 1] alias Ecto.Multi alias Pleroma.Activity @@ -39,6 +40,7 @@ defmodule Pleroma.User do alias Pleroma.Workers.BackgroundWorker require Logger + require Pleroma.Constants @type t :: %__MODULE__{} @type account_status :: @@ -124,7 +126,6 @@ defmodule Pleroma.User do field(:domain_blocks, {:array, :string}, default: []) field(:is_active, :boolean, default: true) field(:no_rich_text, :boolean, default: false) - field(:ap_enabled, :boolean, default: false) field(:is_moderator, :boolean, default: false) field(:is_admin, :boolean, default: false) field(:show_role, :boolean, default: true) @@ -488,7 +489,6 @@ defmodule Pleroma.User do :nickname, :public_key, :avatar, - :ap_enabled, :banner, :is_locked, :last_refreshed_at, @@ -581,7 +581,7 @@ defmodule Pleroma.User do |> validate_format(:nickname, local_nickname_regex()) |> validate_length(:bio, max: bio_limit) |> validate_length(:name, min: 1, max: name_limit) - |> validate_inclusion(:actor_type, ["Person", "Service"]) + |> validate_inclusion(:actor_type, Pleroma.Constants.allowed_user_actor_types()) |> put_fields() |> put_emoji() |> put_change_if_present(:bio, &{:ok, parse_bio(&1, struct)}) @@ -597,9 +597,23 @@ defmodule Pleroma.User do defp put_fields(changeset) do if raw_fields = get_change(changeset, :raw_fields) do + old_fields = changeset.data.raw_fields + raw_fields = raw_fields |> Enum.filter(fn %{"name" => n} -> n != "" end) + |> Enum.map(fn field -> + previous = + old_fields + |> Enum.find(fn %{"value" => value} -> field["value"] == value end) + + if previous && Map.has_key?(previous, "verified_at") do + field + |> Map.put("verified_at", previous["verified_at"]) + else + field + end + end) fields = raw_fields @@ -673,7 +687,7 @@ defmodule Pleroma.User do |> validate_inclusion(:actor_type, ["Person", "Service"]) end - @spec update_as_admin(User.t(), map()) :: {:ok, User.t()} | {:error, Changeset.t()} + @spec update_as_admin(User.t(), map()) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()} def update_as_admin(user, params) do params = Map.put(params, "password_confirmation", params["password"]) changeset = update_as_admin_changeset(user, params) @@ -694,7 +708,7 @@ defmodule Pleroma.User do |> put_change(:password_reset_pending, false) end - @spec reset_password(User.t(), map()) :: {:ok, User.t()} | {:error, Changeset.t()} + @spec reset_password(User.t(), map()) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()} def reset_password(%User{} = user, params) do reset_password(user, user, params) end @@ -1012,7 +1026,7 @@ defmodule Pleroma.User do def maybe_send_confirmation_email(_), do: {:ok, :noop} - @spec send_confirmation_email(Uset.t()) :: User.t() + @spec send_confirmation_email(User.t()) :: User.t() def send_confirmation_email(%User{} = user) do user |> Pleroma.Emails.UserEmail.account_confirmation_email() @@ -1049,7 +1063,8 @@ defmodule Pleroma.User do def needs_update?(_), do: true - @spec maybe_direct_follow(User.t(), User.t()) :: {:ok, User.t()} | {:error, String.t()} + @spec maybe_direct_follow(User.t(), User.t()) :: + {:ok, User.t(), User.t()} | {:error, String.t()} # "Locked" (self-locked) users demand explicit authorization of follow requests def maybe_direct_follow(%User{} = follower, %User{local: true, is_locked: true} = followed) do @@ -1061,11 +1076,7 @@ defmodule Pleroma.User do end def maybe_direct_follow(%User{} = follower, %User{} = followed) do - if not ap_enabled?(followed) do - follow(follower, followed) - else - {:ok, follower, followed} - end + {:ok, follower, followed} end @doc "A mass follow for local users. Respects blocks in both directions but does not create activities." @@ -1204,6 +1215,10 @@ defmodule Pleroma.User do def update_and_set_cache(changeset) do with {:ok, user} <- Repo.update(changeset, stale_error_field: :id) do + if get_change(changeset, :raw_fields) do + BackgroundWorker.enqueue("verify_fields_links", %{"user_id" => user.id}) + end + set_cache(user) end end @@ -1389,6 +1404,40 @@ defmodule Pleroma.User do |> Repo.all() end + @spec get_familiar_followers_query(User.t(), User.t(), pos_integer() | nil) :: Ecto.Query.t() + def get_familiar_followers_query(%User{} = user, %User{} = current_user, nil) do + friends = + get_friends_query(current_user) + |> where([u], not u.hide_follows) + |> select([u], u.id) + + User.Query.build(%{is_active: true}) + |> where([u], u.id not in ^[user.id, current_user.id]) + |> join(:inner, [u], r in FollowingRelationship, + as: :followers_relationships, + on: r.following_id == ^user.id and r.follower_id == u.id + ) + |> where([followers_relationships: r], r.state == ^:follow_accept) + |> where([followers_relationships: r], r.follower_id in subquery(friends)) + end + + def get_familiar_followers_query(%User{} = user, %User{} = current_user, page) do + user + |> get_familiar_followers_query(current_user, nil) + |> User.Query.paginate(page, 20) + end + + @spec get_familiar_followers_query(User.t(), User.t()) :: Ecto.Query.t() + def get_familiar_followers_query(%User{} = user, %User{} = current_user), + do: get_familiar_followers_query(user, current_user, nil) + + @spec get_familiar_followers(User.t(), User.t(), pos_integer() | nil) :: {:ok, list(User.t())} + def get_familiar_followers(%User{} = user, %User{} = current_user, page \\ nil) do + user + |> get_familiar_followers_query(current_user, page) + |> Repo.all() + end + def increase_note_count(%User{} = user) do User |> where(id: ^user.id) @@ -1566,7 +1615,7 @@ defmodule Pleroma.User do unmute(muter, mutee) else {who, result} = error -> - Logger.warn( + Logger.warning( "User.unmute/2 failed. #{who}: #{result}, muter_id: #{muter_id}, mutee_id: #{mutee_id}" ) @@ -1788,14 +1837,17 @@ defmodule Pleroma.User do BackgroundWorker.enqueue("user_activation", %{"user_id" => user.id, "status" => status}) end - @spec set_activation([User.t()], boolean()) :: {:ok, User.t()} | {:error, Changeset.t()} + @spec set_activation([User.t()], boolean()) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()} def set_activation(users, status) when is_list(users) do Repo.transaction(fn -> - for user <- users, do: set_activation(user, status) + for user <- users do + {:ok, user} = set_activation(user, status) + user + end end) end - @spec set_activation(User.t(), boolean()) :: {:ok, User.t()} | {:error, Changeset.t()} + @spec set_activation(User.t(), boolean()) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()} def set_activation(%User{} = user, status) do with {:ok, user} <- set_activation_status(user, status) do user @@ -1873,7 +1925,7 @@ defmodule Pleroma.User do |> update_and_set_cache() end - @spec purge_user_changeset(User.t()) :: Changeset.t() + @spec purge_user_changeset(User.t()) :: Ecto.Changeset.t() def purge_user_changeset(user) do # "Right to be forgotten" # https://gdpr.eu/right-to-be-forgotten/ @@ -1898,7 +1950,6 @@ defmodule Pleroma.User do confirmation_token: nil, domain_blocks: [], is_active: false, - ap_enabled: false, is_moderator: false, is_admin: false, mascot: nil, @@ -1977,8 +2028,45 @@ defmodule Pleroma.User do maybe_delete_from_db(user) end + def perform(:verify_fields_links, user) do + profile_urls = [user.ap_id] + + fields = + user.raw_fields + |> Enum.map(&verify_field_link(&1, profile_urls)) + + changeset = + user + |> update_changeset(%{raw_fields: fields}) + + with {:ok, user} <- Repo.update(changeset, stale_error_field: :id) do + set_cache(user) + end + end + def perform(:set_activation_async, user, status), do: set_activation(user, status) + defp verify_field_link(field, profile_urls) do + verified_at = + with %{"value" => value} <- field, + {:verified_at, nil} <- {:verified_at, Map.get(field, "verified_at")}, + %{scheme: scheme, userinfo: nil, host: host} + when not_empty_string(host) and scheme in ["http", "https"] <- + URI.parse(value), + {:not_idn, true} <- {:not_idn, to_string(:idna.encode(host)) == host}, + "me" <- Pleroma.Web.RelMe.maybe_put_rel_me(value, profile_urls) do + CommonUtils.to_masto_date(NaiveDateTime.utc_now()) + else + {:verified_at, value} when not_empty_string(value) -> + value + + _ -> + nil + end + + Map.put(field, "verified_at", verified_at) + end + @spec external_users_query() :: Ecto.Query.t() def external_users_query do User.Query.build(%{ @@ -2143,7 +2231,7 @@ defmodule Pleroma.User do def public_key(_), do: {:error, "key not found"} def get_public_key_for_ap_id(ap_id) do - with {:ok, %User{} = user} <- get_or_fetch_by_ap_id(ap_id), + with %User{} = user <- get_cached_by_ap_id(ap_id), {:ok, public_key} <- public_key(user) do {:ok, public_key} else @@ -2151,10 +2239,6 @@ defmodule Pleroma.User do end end - def ap_enabled?(%User{local: true}), do: true - def ap_enabled?(%User{ap_enabled: ap_enabled}), do: ap_enabled - def ap_enabled?(_), do: false - @doc "Gets or fetch a user by uri or nickname." @spec get_or_fetch(String.t()) :: {:ok, User.t()} | {:error, String.t()} def get_or_fetch("http://" <> _host = uri), do: get_or_fetch_by_ap_id(uri) @@ -2263,7 +2347,7 @@ defmodule Pleroma.User do if String.contains?(user.nickname, "@") do user.nickname else - %{host: host} = URI.parse(user.ap_id) + host = Pleroma.Web.WebFinger.host() user.nickname <> "@" <> host end end @@ -2369,7 +2453,7 @@ defmodule Pleroma.User do updated_user end - @spec set_confirmation(User.t(), boolean()) :: {:ok, User.t()} | {:error, Changeset.t()} + @spec set_confirmation(User.t(), boolean()) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()} def set_confirmation(%User{} = user, bool) do user |> confirmation_changeset(set_confirmation: bool) @@ -2413,9 +2497,9 @@ defmodule Pleroma.User do defp put_password_hash(changeset), do: changeset - def is_internal_user?(%User{nickname: nil}), do: true - def is_internal_user?(%User{local: true, nickname: "internal." <> _}), do: true - def is_internal_user?(_), do: false + def internal?(%User{nickname: nil}), do: true + def internal?(%User{local: true, nickname: "internal." <> _}), do: true + def internal?(_), do: false # A hack because user delete activities have a fake id for whatever reason # TODO: Get rid of this @@ -2547,7 +2631,7 @@ defmodule Pleroma.User do |> update_and_set_cache() end - @spec confirmation_changeset(User.t(), keyword()) :: Changeset.t() + @spec confirmation_changeset(User.t(), keyword()) :: Ecto.Changeset.t() def confirmation_changeset(user, set_confirmation: confirmed?) do params = if confirmed? do @@ -2565,9 +2649,9 @@ defmodule Pleroma.User do cast(user, params, [:is_confirmed, :confirmation_token]) end - @spec approval_changeset(User.t(), keyword()) :: Changeset.t() - def approval_changeset(user, set_approval: approved?) do - cast(user, %{is_approved: approved?}, [:is_approved]) + @spec approval_changeset(Ecto.Changeset.t(), keyword()) :: Ecto.Changeset.t() + def approval_changeset(changeset, set_approval: approved?) do + cast(changeset, %{is_approved: approved?}, [:is_approved]) end @spec add_pinned_object_id(User.t(), String.t()) :: {:ok, User.t()} | {:error, term()} @@ -2670,10 +2754,11 @@ defmodule Pleroma.User do # - display name def sanitize_html(%User{} = user, filter) do fields = - Enum.map(user.fields, fn %{"name" => name, "value" => value} -> + Enum.map(user.fields, fn %{"name" => name, "value" => value} = fields -> %{ "name" => name, - "value" => HTML.filter_tags(value, Pleroma.HTML.Scrubber.LinksOnly) + "value" => HTML.filter_tags(value, Pleroma.HTML.Scrubber.LinksOnly), + "verified_at" => Map.get(fields, "verified_at") } end) @@ -2692,6 +2777,8 @@ defmodule Pleroma.User do |> update_and_set_cache() end + def update_last_active_at(user), do: user + def active_user_count(days \\ 30) do active_after = Timex.shift(NaiveDateTime.utc_now(), days: -days) diff --git a/lib/pleroma/user/backup.ex b/lib/pleroma/user/backup.ex @@ -9,28 +9,36 @@ defmodule Pleroma.User.Backup do import Ecto.Query import Pleroma.Web.Gettext + require Logger require Pleroma.Constants alias Pleroma.Activity alias Pleroma.Bookmark alias Pleroma.Repo alias Pleroma.User + alias Pleroma.User.Backup.State alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.ActivityPub.UserView alias Pleroma.Workers.BackupWorker + @type t :: %__MODULE__{} + schema "backups" do field(:content_type, :string) field(:file_name, :string) field(:file_size, :integer, default: 0) field(:processed, :boolean, default: false) + field(:state, State, default: :invalid) + field(:processed_number, :integer, default: 0) belongs_to(:user, User, type: FlakeId.Ecto.CompatType) timestamps() end + @config_impl Application.compile_env(:pleroma, [__MODULE__, :config_impl], Pleroma.Config) + def create(user, admin_id \\ nil) do with :ok <- validate_limit(user, admin_id), {:ok, backup} <- user |> new() |> Repo.insert() do @@ -46,7 +54,8 @@ defmodule Pleroma.User.Backup do %__MODULE__{ user_id: user.id, content_type: "application/zip", - file_name: name + file_name: name, + state: :pending } end @@ -109,30 +118,109 @@ defmodule Pleroma.User.Backup do def get(id), do: Repo.get(__MODULE__, id) - def process(%__MODULE__{} = backup) do - with {:ok, zip_file} <- export(backup), - {:ok, %{size: size}} <- File.stat(zip_file), - {:ok, _upload} <- upload(backup, zip_file) do - backup - |> cast(%{file_size: size, processed: true}, [:file_size, :processed]) - |> Repo.update() + defp set_state(backup, state, processed_number \\ nil) do + struct = + %{state: state} + |> Pleroma.Maps.put_if_present(:processed_number, processed_number) + + backup + |> cast(struct, [:state, :processed_number]) + |> Repo.update() + end + + def process( + %__MODULE__{} = backup, + processor_module \\ __MODULE__.Processor + ) do + set_state(backup, :running, 0) + + current_pid = self() + + task = + Task.Supervisor.async_nolink( + Pleroma.TaskSupervisor, + processor_module, + :do_process, + [backup, current_pid] + ) + + wait_backup(backup, backup.processed_number, task) + end + + defp wait_backup(backup, current_processed, task) do + wait_time = @config_impl.get([__MODULE__, :process_wait_time]) + + receive do + {:progress, new_processed} -> + total_processed = current_processed + new_processed + + set_state(backup, :running, total_processed) + wait_backup(backup, total_processed, task) + + {:DOWN, _ref, _proc, _pid, reason} -> + backup = get(backup.id) + + if reason != :normal do + Logger.error("Backup #{backup.id} process ended abnormally: #{inspect(reason)}") + + {:ok, backup} = set_state(backup, :failed) + + cleanup(backup) + + {:error, + %{ + backup: backup, + reason: :exit, + details: reason + }} + else + {:ok, backup} + end + after + wait_time -> + Logger.error( + "Backup #{backup.id} timed out after no response for #{wait_time}ms, terminating" + ) + + Task.Supervisor.terminate_child(Pleroma.TaskSupervisor, task.pid) + + {:ok, backup} = set_state(backup, :failed) + + cleanup(backup) + + {:error, + %{ + backup: backup, + reason: :timeout + }} end end - @files ['actor.json', 'outbox.json', 'likes.json', 'bookmarks.json'] - def export(%__MODULE__{} = backup) do + @files [ + 'actor.json', + 'outbox.json', + 'likes.json', + 'bookmarks.json', + 'followers.json', + 'following.json' + ] + @spec export(Pleroma.User.Backup.t(), pid()) :: {:ok, String.t()} | :error + def export(%__MODULE__{} = backup, caller_pid) do backup = Repo.preload(backup, :user) - name = String.trim_trailing(backup.file_name, ".zip") - dir = dir(name) + dir = backup_tempdir(backup) with :ok <- File.mkdir(dir), - :ok <- actor(dir, backup.user), - :ok <- statuses(dir, backup.user), - :ok <- likes(dir, backup.user), - :ok <- bookmarks(dir, backup.user), - {:ok, zip_path} <- :zip.create(String.to_charlist(dir <> ".zip"), @files, cwd: dir), + :ok <- actor(dir, backup.user, caller_pid), + :ok <- statuses(dir, backup.user, caller_pid), + :ok <- likes(dir, backup.user, caller_pid), + :ok <- bookmarks(dir, backup.user, caller_pid), + :ok <- followers(dir, backup.user, caller_pid), + :ok <- following(dir, backup.user, caller_pid), + {:ok, zip_path} <- :zip.create(backup.file_name, @files, cwd: dir), {:ok, _} <- File.rm_rf(dir) do - {:ok, to_string(zip_path)} + {:ok, zip_path} + else + _ -> :error end end @@ -157,11 +245,12 @@ defmodule Pleroma.User.Backup do end end - defp actor(dir, user) do + defp actor(dir, user, caller_pid) do with {:ok, json} <- UserView.render("user.json", %{user: user}) |> Map.merge(%{"likes" => "likes.json", "bookmarks" => "bookmarks.json"}) |> Jason.encode() do + send(caller_pid, {:progress, 1}) File.write(Path.join(dir, "actor.json"), json) end end @@ -180,47 +269,80 @@ defmodule Pleroma.User.Backup do ) end - defp write(query, dir, name, fun) do + defp should_report?(num, chunk_size), do: rem(num, chunk_size) == 0 + + defp backup_tempdir(backup) do + name = String.trim_trailing(backup.file_name, ".zip") + dir(name) + end + + defp cleanup(backup) do + dir = backup_tempdir(backup) + File.rm_rf(dir) + end + + defp write(query, dir, name, fun, caller_pid) do path = Path.join(dir, "#{name}.json") + chunk_size = Pleroma.Config.get([__MODULE__, :process_chunk_size]) + with {:ok, file} <- File.open(path, [:write, :utf8]), :ok <- write_header(file, name) do total = query - |> Pleroma.Repo.chunk_stream(100) + |> Pleroma.Repo.chunk_stream(chunk_size, _returns_as = :one, timeout: :infinity) |> Enum.reduce(0, fn i, acc -> - with {:ok, data} <- fun.(i), + with {:ok, data} <- + (try do + fun.(i) + rescue + e -> {:error, e} + end), {:ok, str} <- Jason.encode(data), :ok <- IO.write(file, str <> ",\n") do + if should_report?(acc + 1, chunk_size) do + send(caller_pid, {:progress, chunk_size}) + end + acc + 1 else - _ -> acc + {:error, e} -> + Logger.warning( + "Error processing backup item: #{inspect(e)}\n The item is: #{inspect(i)}" + ) + + acc + + _ -> + acc end end) + send(caller_pid, {:progress, rem(total, chunk_size)}) + with :ok <- :file.pwrite(file, {:eof, -2}, "\n],\n \"totalItems\": #{total}}") do File.close(file) end end end - defp bookmarks(dir, %{id: user_id} = _user) do + defp bookmarks(dir, %{id: user_id} = _user, caller_pid) do Bookmark |> where(user_id: ^user_id) |> join(:inner, [b], activity in assoc(b, :activity)) |> select([b, a], %{id: b.id, object: fragment("(?)->>'object'", a.data)}) - |> write(dir, "bookmarks", fn a -> {:ok, a.object} end) + |> write(dir, "bookmarks", fn a -> {:ok, a.object} end, caller_pid) end - defp likes(dir, user) do + defp likes(dir, user, caller_pid) do user.ap_id |> Activity.Queries.by_actor() |> Activity.Queries.by_type("Like") |> select([like], %{id: like.id, object: fragment("(?)->>'object'", like.data)}) - |> write(dir, "likes", fn a -> {:ok, a.object} end) + |> write(dir, "likes", fn a -> {:ok, a.object} end, caller_pid) end - defp statuses(dir, user) do + defp statuses(dir, user, caller_pid) do opts = %{} |> Map.put(:type, ["Create", "Announce"]) @@ -233,10 +355,59 @@ defmodule Pleroma.User.Backup do ] |> Enum.concat() |> ActivityPub.fetch_activities_query(opts) - |> write(dir, "outbox", fn a -> - with {:ok, activity} <- Transmogrifier.prepare_outgoing(a.data) do - {:ok, Map.delete(activity, "@context")} - end - end) + |> write( + dir, + "outbox", + fn a -> + with {:ok, activity} <- Transmogrifier.prepare_outgoing(a.data) do + {:ok, Map.delete(activity, "@context")} + end + end, + caller_pid + ) + end + + defp followers(dir, user, caller_pid) do + User.get_followers_query(user) + |> write(dir, "followers", fn a -> {:ok, a.ap_id} end, caller_pid) + end + + defp following(dir, user, caller_pid) do + User.get_friends_query(user) + |> write(dir, "following", fn a -> {:ok, a.ap_id} end, caller_pid) + end +end + +defmodule Pleroma.User.Backup.ProcessorAPI do + @callback do_process(%Pleroma.User.Backup{}, pid()) :: + {:ok, %Pleroma.User.Backup{}} | {:error, any()} +end + +defmodule Pleroma.User.Backup.Processor do + @behaviour Pleroma.User.Backup.ProcessorAPI + + alias Pleroma.Repo + alias Pleroma.User.Backup + + import Ecto.Changeset + + @impl true + def do_process(backup, current_pid) do + with {:ok, zip_file} <- Backup.export(backup, current_pid), + {:ok, %{size: size}} <- File.stat(zip_file), + {:ok, _upload} <- Backup.upload(backup, zip_file) do + backup + |> cast( + %{ + file_size: size, + processed: true, + state: :complete + }, + [:file_size, :processed, :state] + ) + |> Repo.update() + else + e -> {:error, e} + end end end diff --git a/lib/pleroma/user/query.ex b/lib/pleroma/user/query.ex @@ -22,7 +22,7 @@ defmodule Pleroma.User.Query do - pass non empty string - e.g. Pleroma.User.Query.build(%{email: "email@example.com"}) - *contains criteria* - - add field to @containns_criteria list + - add field to @contains_criteria list - pass values list - e.g. Pleroma.User.Query.build(%{ap_id: ["http://ap_id1", "http://ap_id2"]}) """ @@ -71,7 +71,7 @@ defmodule Pleroma.User.Query do @equal_criteria [:email] @contains_criteria [:ap_id, :nickname] - @spec build(Query.t(), criteria()) :: Query.t() + @spec build(Ecto.Query.t(), criteria()) :: Ecto.Query.t() def build(query \\ base_query(), criteria) do prepare_query(query, criteria) end diff --git a/lib/pleroma/user_invite_token.ex b/lib/pleroma/user_invite_token.ex @@ -64,7 +64,7 @@ defmodule Pleroma.UserInviteToken do end @spec update_invite(UserInviteToken.t(), map()) :: - {:ok, UserInviteToken.t()} | {:error, Changeset.t()} + {:ok, UserInviteToken.t()} | {:error, Ecto.Changeset.t()} def update_invite(invite, changes) do change(invite, changes) |> Repo.update() end diff --git a/lib/pleroma/user_relationship.ex b/lib/pleroma/user_relationship.ex @@ -14,6 +14,8 @@ defmodule Pleroma.UserRelationship do alias Pleroma.User alias Pleroma.UserRelationship + @type t :: %__MODULE__{} + schema "user_relationships" do belongs_to(:source, User, type: FlakeId.Ecto.CompatType) belongs_to(:target, User, type: FlakeId.Ecto.CompatType) diff --git a/lib/pleroma/web.ex b/lib/pleroma/web.ex @@ -136,7 +136,7 @@ defmodule Pleroma.Web do namespace: Pleroma.Web # Import convenience functions from controllers - import Phoenix.Controller, only: [get_csrf_token: 0, get_flash: 2, view_module: 1] + import Phoenix.Controller, only: [get_csrf_token: 0, view_module: 1] import Pleroma.Web.ErrorHelpers import Pleroma.Web.Gettext diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -74,29 +74,40 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do defp check_remote_limit(_), do: true def increase_note_count_if_public(actor, object) do - if is_public?(object), do: User.increase_note_count(actor), else: {:ok, actor} + if public?(object), do: User.increase_note_count(actor), else: {:ok, actor} end def decrease_note_count_if_public(actor, object) do - if is_public?(object), do: User.decrease_note_count(actor), else: {:ok, actor} + if public?(object), do: User.decrease_note_count(actor), else: {:ok, actor} end def update_last_status_at_if_public(actor, object) do - if is_public?(object), do: User.update_last_status_at(actor), else: {:ok, actor} + if public?(object), do: User.update_last_status_at(actor), else: {:ok, actor} end defp increase_replies_count_if_reply(%{ "object" => %{"inReplyTo" => reply_ap_id} = object, "type" => "Create" }) do - if is_public?(object) do + if public?(object) do Object.increase_replies_count(reply_ap_id) end end defp increase_replies_count_if_reply(_create_data), do: :noop - @object_types ~w[ChatMessage Question Answer Audio Video Event Article Note Page] + defp increase_quotes_count_if_quote(%{ + "object" => %{"quoteUrl" => quote_ap_id} = object, + "type" => "Create" + }) do + if public?(object) do + Object.increase_quotes_count(quote_ap_id) + end + end + + defp increase_quotes_count_if_quote(_create_data), do: :noop + + @object_types ~w[ChatMessage Question Answer Audio Video Image Event Article Note Page] @impl true def persist(%{"type" => type} = object, meta) when type in @object_types do with {:ok, object} <- Object.create(object) do @@ -136,9 +147,10 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do # Splice in the child object if we have one. activity = Maps.put_if_present(activity, :object, object) - ConcurrentLimiter.limit(Pleroma.Web.RichMedia.Helpers, fn -> - Task.start(fn -> Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) end) - end) + Pleroma.Web.RichMedia.Card.get_by_activity(activity) + + # Add local posts to search index + if local, do: Pleroma.Search.add_to_index(activity) {:ok, activity} else @@ -163,7 +175,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do id: "pleroma:fakeid" } - Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) + Pleroma.Web.RichMedia.Card.get_by_activity(activity) {:ok, activity} {:remote_limit_pass, _} -> @@ -188,7 +200,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end def notify_and_stream(activity) do - Notification.create_notifications(activity) + {:ok, notifications} = Notification.create_notifications(activity) + Notification.send(notifications) original_activity = case activity do @@ -299,11 +312,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do with {:ok, activity} <- insert(create_data, local, fake), {:fake, false, activity} <- {:fake, fake, activity}, _ <- increase_replies_count_if_reply(create_data), + _ <- increase_quotes_count_if_quote(create_data), {:quick_insert, false, activity} <- {:quick_insert, quick_insert?, activity}, {:ok, _actor} <- increase_note_count_if_public(actor, activity), {:ok, _actor} <- update_last_status_at_if_public(actor, activity), _ <- notify_and_stream(activity), :ok <- maybe_schedule_poll_notifications(activity), + :ok <- maybe_handle_group_posts(activity), :ok <- maybe_federate(activity) do {:ok, activity} else @@ -455,6 +470,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do |> maybe_preload_objects(opts) |> maybe_preload_bookmarks(opts) |> maybe_set_thread_muted_field(opts) + |> restrict_unauthenticated(opts[:user]) |> restrict_blocked(opts) |> restrict_blockers_visibility(opts) |> restrict_recipients(recipients, opts[:user]) @@ -482,7 +498,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end @spec fetch_latest_direct_activity_id_for_context(String.t(), keyword() | map()) :: - FlakeId.Ecto.CompatType.t() | nil + Ecto.UUID.t() | nil def fetch_latest_direct_activity_id_for_context(context, opts \\ %{}) do context |> fetch_activities_for_context_query(Map.merge(%{skip_preload: true}, opts)) @@ -963,8 +979,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do defp restrict_replies(query, %{exclude_replies: true}) do from( - [_activity, object] in query, - where: fragment("?->>'inReplyTo' is null", object.data) + [activity, object] in query, + where: + fragment("?->>'inReplyTo' is null or ?->>'type' = 'Announce'", object.data, activity.data) ) end @@ -1215,6 +1232,44 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do defp restrict_filtered(query, _), do: query + defp restrict_unauthenticated(query, nil) do + local = Config.restrict_unauthenticated_access?(:activities, :local) + remote = Config.restrict_unauthenticated_access?(:activities, :remote) + + cond do + local and remote -> + from(activity in query, where: false) + + local -> + from(activity in query, where: activity.local == false) + + remote -> + from(activity in query, where: activity.local == true) + + true -> + query + end + end + + defp restrict_unauthenticated(query, _), do: query + + defp restrict_quote_url(query, %{quote_url: quote_url}) do + from([_activity, object] in query, + where: fragment("(?)->'quoteUrl' = ?", object.data, ^quote_url) + ) + end + + defp restrict_quote_url(query, _), do: query + + defp restrict_rule(query, %{rule_id: rule_id}) do + from( + activity in query, + where: fragment("(?)->'rules' \\? (?)", activity.data, ^rule_id) + ) + end + + defp restrict_rule(query, _), do: query + defp exclude_poll_votes(query, %{include_poll_votes: true}), do: query defp exclude_poll_votes(query, _) do @@ -1377,6 +1432,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do |> restrict_instance(opts) |> restrict_announce_object_actor(opts) |> restrict_filtered(opts) + |> restrict_rule(opts) + |> restrict_quote_url(opts) |> maybe_restrict_deactivated_users(opts) |> exclude_poll_votes(opts) |> exclude_chat_messages(opts) @@ -1547,7 +1604,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do %{ ap_id: data["id"], uri: get_actor_url(data["url"]), - ap_enabled: true, banner: normalize_image(data["image"]), fields: fields, emoji: emojis, @@ -1652,9 +1708,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do Fetcher.fetch_and_contain_remote_object_from_id(first) do {:ok, false} else - {:error, {:ok, %{status: code}}} when code in [401, 403] -> {:ok, true} - {:error, _} = e -> e - e -> {:error, e} + {:error, _} -> {:ok, true} end end @@ -1668,7 +1722,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end end - def fetch_and_prepare_user_from_ap_id(ap_id, additional \\ []) do + defp fetch_and_prepare_user_from_ap_id(ap_id, additional) do with {:ok, data} <- Fetcher.fetch_and_contain_remote_object_from_id(ap_id), {:ok, data} <- user_data_from_user_object(data, additional) do {:ok, maybe_update_follow_information(data)} @@ -1721,6 +1775,11 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end) end + def pin_data_from_featured_collection(obj) do + Logger.error("Could not parse featured collection #{inspect(obj)}") + %{} + end + def fetch_and_prepare_featured_from_ap_id(nil) do {:ok, %{}} end @@ -1751,24 +1810,20 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do def make_user_from_ap_id(ap_id, additional \\ []) do user = User.get_cached_by_ap_id(ap_id) - if user && !User.ap_enabled?(user) do - Transmogrifier.upgrade_user_from_ap_id(ap_id) - else - with {:ok, data} <- fetch_and_prepare_user_from_ap_id(ap_id, additional) do - {:ok, _pid} = Task.start(fn -> pinned_fetch_task(data) end) + with {:ok, data} <- fetch_and_prepare_user_from_ap_id(ap_id, additional) do + {:ok, _pid} = Task.start(fn -> pinned_fetch_task(data) end) - if user do - user - |> User.remote_user_changeset(data) - |> User.update_and_set_cache() - else - maybe_handle_clashing_nickname(data) + if user do + user + |> User.remote_user_changeset(data) + |> User.update_and_set_cache() + else + maybe_handle_clashing_nickname(data) - data - |> User.remote_user_changeset() - |> Repo.insert() - |> User.set_cache() - end + data + |> User.remote_user_changeset() + |> Repo.insert() + |> User.set_cache() end end end diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -273,12 +273,17 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do end def inbox(%{assigns: %{valid_signature: true}} = conn, %{"nickname" => nickname} = params) do - with %User{} = recipient <- User.get_cached_by_nickname(nickname), - {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(params["actor"]), + with %User{is_active: true} = recipient <- User.get_cached_by_nickname(nickname), + {:ok, %User{is_active: true} = actor} <- User.get_or_fetch_by_ap_id(params["actor"]), true <- Utils.recipient_in_message(recipient, actor, params), params <- Utils.maybe_splice_recipient(recipient.ap_id, params) do Federator.incoming_ap_doc(params) json(conn, "ok") + else + _ -> + conn + |> put_status(:bad_request) + |> json("Invalid request.") end end @@ -287,10 +292,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do json(conn, "ok") end - def inbox(%{assigns: %{valid_signature: false}} = conn, _params) do - conn - |> put_status(:bad_request) - |> json("Invalid HTTP Signature") + def inbox(%{assigns: %{valid_signature: false}, req_headers: req_headers} = conn, params) do + Federator.incoming_ap_doc(%{req_headers: req_headers, params: params}) + json(conn, "ok") end # POST /relay/inbox -or- POST /internal/fetch/inbox @@ -476,7 +480,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do |> json(message) e -> - Logger.warn(fn -> "AP C2S: #{inspect(e)}" end) + Logger.warning(fn -> "AP C2S: #{inspect(e)}" end) conn |> put_status(:bad_request) diff --git a/lib/pleroma/web/activity_pub/builder.ex b/lib/pleroma/web/activity_pub/builder.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.ActivityPub.Builder do This module encodes our addressing policies and general shape of our objects. """ + alias Pleroma.Activity alias Pleroma.Emoji alias Pleroma.Object alias Pleroma.User @@ -16,6 +17,7 @@ defmodule Pleroma.Web.ActivityPub.Builder do alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.ActivityPub.Visibility alias Pleroma.Web.CommonAPI.ActivityDraft + alias Pleroma.Web.Endpoint require Pleroma.Constants @@ -54,13 +56,87 @@ defmodule Pleroma.Web.ActivityPub.Builder do {:ok, data, []} end + defp unicode_emoji_react(_object, data, emoji) do + data + |> Map.put("content", emoji) + |> Map.put("type", "EmojiReact") + end + + defp add_emoji_content(data, emoji, url) do + tag = [ + %{ + "id" => url, + "type" => "Emoji", + "name" => Emoji.maybe_quote(emoji), + "icon" => %{ + "type" => "Image", + "url" => url + } + } + ] + + data + |> Map.put("content", Emoji.maybe_quote(emoji)) + |> Map.put("type", "EmojiReact") + |> Map.put("tag", tag) + end + + defp remote_custom_emoji_react( + %{data: %{"reactions" => existing_reactions}}, + data, + emoji + ) do + [emoji_code, instance] = String.split(Emoji.maybe_strip_name(emoji), "@") + + matching_reaction = + Enum.find( + existing_reactions, + fn [name, _, url] -> + if url != nil do + url = URI.parse(url) + url.host == instance && name == emoji_code + end + end + ) + + if matching_reaction do + [name, _, url] = matching_reaction + add_emoji_content(data, name, url) + else + {:error, "Could not react"} + end + end + + defp remote_custom_emoji_react(_object, _data, _emoji) do + {:error, "Could not react"} + end + + defp local_custom_emoji_react(data, emoji) do + with %{file: path} = emojo <- Emoji.get(emoji) do + url = "#{Endpoint.url()}#{path}" + add_emoji_content(data, emojo.code, url) + else + _ -> {:error, "Emoji does not exist"} + end + end + + defp custom_emoji_react(object, data, emoji) do + if String.contains?(emoji, "@") do + remote_custom_emoji_react(object, data, emoji) + else + local_custom_emoji_react(data, emoji) + end + end + @spec emoji_react(User.t(), Object.t(), String.t()) :: {:ok, map(), keyword()} def emoji_react(actor, object, emoji) do with {:ok, data, meta} <- object_action(actor, object) do data = - data - |> Map.put("content", emoji) - |> Map.put("type", "EmojiReact") + if Emoji.unicode?(emoji) do + unicode_emoji_react(object, data, emoji) + else + custom_emoji_react(object, data, emoji) + end {:ok, data, meta} end @@ -142,6 +218,7 @@ defmodule Pleroma.Web.ActivityPub.Builder do "tag" => Keyword.values(draft.tags) |> Enum.uniq() } |> add_in_reply_to(draft.in_reply_to) + |> add_quote(draft.quote_post) |> Map.merge(draft.extra) {:ok, data, []} @@ -157,6 +234,16 @@ defmodule Pleroma.Web.ActivityPub.Builder do end end + defp add_quote(object, nil), do: object + + defp add_quote(object, quote_post) do + with %Object{} = quote_object <- Object.normalize(quote_post, fetch: false) do + Map.put(object, "quoteUrl", quote_object.data["id"]) + else + _ -> object + end + end + def chat_message(actor, recipient, content, opts \\ []) do basic = %{ "id" => Utils.generate_object_id(), @@ -261,7 +348,7 @@ defmodule Pleroma.Web.ActivityPub.Builder do actor.ap_id == Relay.ap_id() -> [actor.follower_address] - public? and Visibility.is_local_public?(object) -> + public? and Visibility.local_public?(object) -> [actor.follower_address, object.data["actor"], Utils.as_local_public()] public? -> @@ -289,7 +376,7 @@ defmodule Pleroma.Web.ActivityPub.Builder do # Address the actor of the object, and our actor's follower collection if the post is public. to = - if Visibility.is_public?(object) do + if Visibility.public?(object) do [actor.follower_address, object.data["actor"]] else [object.data["actor"]] diff --git a/lib/pleroma/web/activity_pub/mrf.ex b/lib/pleroma/web/activity_pub/mrf.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.MRF do @@ -54,6 +54,8 @@ defmodule Pleroma.Web.ActivityPub.MRF do @required_description_keys [:key, :related_policy] def filter_one(policy, message) do + Code.ensure_loaded(policy) + should_plug_history? = if function_exported?(policy, :history_awareness, 0) do policy.history_awareness() @@ -137,7 +139,16 @@ defmodule Pleroma.Web.ActivityPub.MRF do @spec subdomains_regex([String.t()]) :: [Regex.t()] def subdomains_regex(domains) when is_list(domains) do - for domain <- domains, do: ~r(^#{String.replace(domain, "*.", "(.*\\.)*")}$)i + for domain <- domains do + try do + target = String.replace(domain, "*.", "(.*\\.)*") + ~r<^#{target}$>i + rescue + e -> + Logger.error("MRF: Invalid subdomain Regex: #{domain}") + reraise e, __STACKTRACE__ + end + end end @spec subdomain_match?([Regex.t()], String.t()) :: boolean() @@ -188,6 +199,8 @@ defmodule Pleroma.Web.ActivityPub.MRF do def config_descriptions(policies) do Enum.reduce(policies, @mrf_config_descriptions, fn policy, acc -> + Code.ensure_loaded(policy) + if function_exported?(policy, :config_description, 0) do description = @default_description @@ -199,7 +212,7 @@ defmodule Pleroma.Web.ActivityPub.MRF do if Enum.all?(@required_description_keys, &Map.has_key?(description, &1)) do [description | acc] else - Logger.warn( + Logger.warning( "#{policy} config description doesn't have one or all required keys #{inspect(@required_description_keys)}" ) diff --git a/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex b/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex @@ -56,8 +56,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy do nick_score + name_score + actor_type_score end - defp determine_if_followbot(_), do: 0.0 - defp bot_allowed?(%{"object" => target}, bot_actor) do %User{} = user = normalize_by_ap_id(target) diff --git a/lib/pleroma/web/activity_pub/mrf/emoji_policy.ex b/lib/pleroma/web/activity_pub/mrf/emoji_policy.ex @@ -0,0 +1,281 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.EmojiPolicy do + require Pleroma.Constants + + alias Pleroma.Object.Updater + alias Pleroma.Web.ActivityPub.MRF.Utils + + @moduledoc "Reject or force-unlisted emojis with certain URLs or names" + + @behaviour Pleroma.Web.ActivityPub.MRF.Policy + + defp config_remove_url do + Pleroma.Config.get([:mrf_emoji, :remove_url], []) + end + + defp config_remove_shortcode do + Pleroma.Config.get([:mrf_emoji, :remove_shortcode], []) + end + + defp config_unlist_url do + Pleroma.Config.get([:mrf_emoji, :federated_timeline_removal_url], []) + end + + defp config_unlist_shortcode do + Pleroma.Config.get([:mrf_emoji, :federated_timeline_removal_shortcode], []) + end + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def history_awareness, do: :manual + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def filter(%{"type" => type, "object" => %{"type" => objtype} = object} = message) + when type in ["Create", "Update"] and objtype in Pleroma.Constants.status_object_types() do + with {:ok, object} <- + Updater.do_with_history(object, fn object -> + {:ok, process_remove(object, :url, config_remove_url())} + end), + {:ok, object} <- + Updater.do_with_history(object, fn object -> + {:ok, process_remove(object, :shortcode, config_remove_shortcode())} + end), + activity <- Map.put(message, "object", object), + activity <- maybe_delist(activity) do + {:ok, activity} + end + end + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def filter(%{"type" => type} = object) when type in Pleroma.Constants.actor_types() do + with object <- process_remove(object, :url, config_remove_url()), + object <- process_remove(object, :shortcode, config_remove_shortcode()) do + {:ok, object} + end + end + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def filter(%{"type" => "EmojiReact"} = object) do + with {:ok, _} <- + matched_emoji_checker(config_remove_url(), config_remove_shortcode()).(object) do + {:ok, object} + else + _ -> + {:reject, "[EmojiPolicy] Rejected for having disallowed emoji"} + end + end + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def filter(message) do + {:ok, message} + end + + defp match_string?(string, pattern) when is_binary(pattern) do + string == pattern + end + + defp match_string?(string, %Regex{} = pattern) do + String.match?(string, pattern) + end + + defp match_any?(string, patterns) do + Enum.any?(patterns, &match_string?(string, &1)) + end + + defp url_from_tag(%{"icon" => %{"url" => url}}), do: url + defp url_from_tag(_), do: nil + + defp url_from_emoji({_name, url}), do: url + + defp shortcode_from_tag(%{"name" => name}) when is_binary(name), do: String.trim(name, ":") + defp shortcode_from_tag(_), do: nil + + defp shortcode_from_emoji({name, _url}), do: name + + defp process_remove(object, :url, patterns) do + process_remove_impl(object, &url_from_tag/1, &url_from_emoji/1, patterns) + end + + defp process_remove(object, :shortcode, patterns) do + process_remove_impl(object, &shortcode_from_tag/1, &shortcode_from_emoji/1, patterns) + end + + defp process_remove_impl(object, extract_from_tag, extract_from_emoji, patterns) do + object = + if object["tag"] do + Map.put( + object, + "tag", + Enum.filter( + object["tag"], + fn + %{"type" => "Emoji"} = tag -> + str = extract_from_tag.(tag) + + if is_binary(str) do + not match_any?(str, patterns) + else + true + end + + _ -> + true + end + ) + ) + else + object + end + + object = + if object["emoji"] do + Map.put( + object, + "emoji", + object["emoji"] + |> Enum.reduce(%{}, fn {name, url} = emoji, acc -> + if not match_any?(extract_from_emoji.(emoji), patterns) do + Map.put(acc, name, url) + else + acc + end + end) + ) + else + object + end + + object + end + + defp matched_emoji_checker(urls, shortcodes) do + fn object -> + if any_emoji_match?(object, &url_from_tag/1, &url_from_emoji/1, urls) or + any_emoji_match?( + object, + &shortcode_from_tag/1, + &shortcode_from_emoji/1, + shortcodes + ) do + {:matched, nil} + else + {:ok, %{}} + end + end + end + + defp maybe_delist(%{"object" => object, "to" => to, "type" => "Create"} = activity) do + check = matched_emoji_checker(config_unlist_url(), config_unlist_shortcode()) + + should_delist? = fn object -> + with {:ok, _} <- Pleroma.Object.Updater.do_with_history(object, check) do + false + else + _ -> true + end + end + + if Pleroma.Constants.as_public() in to and should_delist?.(object) do + to = List.delete(to, Pleroma.Constants.as_public()) + cc = [Pleroma.Constants.as_public() | activity["cc"] || []] + + activity + |> Map.put("to", to) + |> Map.put("cc", cc) + else + activity + end + end + + defp maybe_delist(activity), do: activity + + defp any_emoji_match?(object, extract_from_tag, extract_from_emoji, patterns) do + Kernel.||( + Enum.any?( + object["tag"] || [], + fn + %{"type" => "Emoji"} = tag -> + str = extract_from_tag.(tag) + + if is_binary(str) do + match_any?(str, patterns) + else + false + end + + _ -> + false + end + ), + (object["emoji"] || []) + |> Enum.any?(fn emoji -> match_any?(extract_from_emoji.(emoji), patterns) end) + ) + end + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def describe do + mrf_emoji = + Pleroma.Config.get(:mrf_emoji, []) + |> Enum.map(fn {key, value} -> + {key, Enum.map(value, &Utils.describe_regex_or_string/1)} + end) + |> Enum.into(%{}) + + {:ok, %{mrf_emoji: mrf_emoji}} + end + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def config_description do + %{ + key: :mrf_emoji, + related_policy: "Pleroma.Web.ActivityPub.MRF.EmojiPolicy", + label: "MRF Emoji", + description: + "Reject or force-unlisted emojis whose URLs or names match a keyword or [Regex](https://hexdocs.pm/elixir/Regex.html).", + children: [ + %{ + key: :remove_url, + type: {:list, :string}, + description: """ + A list of patterns which result in emoji whose URL matches being removed from the message. This will apply to statuses, emoji reactions, and user profiles. + + Each pattern can be a string or [Regex](https://hexdocs.pm/elixir/Regex.html) in the format of `~r/PATTERN/`. + """, + suggestions: ["https://example.org/foo.png", ~r/example.org\/foo/iu] + }, + %{ + key: :remove_shortcode, + type: {:list, :string}, + description: """ + A list of patterns which result in emoji whose shortcode matches being removed from the message. This will apply to statuses, emoji reactions, and user profiles. + + Each pattern can be a string or [Regex](https://hexdocs.pm/elixir/Regex.html) in the format of `~r/PATTERN/`. + """, + suggestions: ["foo", ~r/foo/iu] + }, + %{ + key: :federated_timeline_removal_url, + type: {:list, :string}, + description: """ + A list of patterns which result in message with emojis whose URLs match being removed from federated timelines (a.k.a unlisted). This will apply only to statuses. + + Each pattern can be a string or [Regex](https://hexdocs.pm/elixir/Regex.html) in the format of `~r/PATTERN/`. + """, + suggestions: ["https://example.org/foo.png", ~r/example.org\/foo/iu] + }, + %{ + key: :federated_timeline_removal_shortcode, + type: {:list, :string}, + description: """ + A list of patterns which result in message with emojis whose shortcodes match being removed from federated timelines (a.k.a unlisted). This will apply only to statuses. + + Each pattern can be a string or [Regex](https://hexdocs.pm/elixir/Regex.html) in the format of `~r/PATTERN/`. + """, + suggestions: ["foo", ~r/foo/iu] + } + ] + } + end +end diff --git a/lib/pleroma/web/activity_pub/mrf/follow_bot_policy.ex b/lib/pleroma/web/activity_pub/mrf/follow_bot_policy.ex @@ -19,7 +19,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.FollowBotPolicy do try_follow(follower, message) else nil -> - Logger.warn( + Logger.warning( "#{__MODULE__} skipped because of missing `:mrf_follow_bot, :follower_nickname` configuration, the :follower_nickname account does not exist, or the account is not correctly configured as a bot." ) diff --git a/lib/pleroma/web/activity_pub/mrf/force_mention.ex b/lib/pleroma/web/activity_pub/mrf/force_mention.ex @@ -0,0 +1,59 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.ForceMention do + require Pleroma.Constants + + alias Pleroma.Config + alias Pleroma.Object + alias Pleroma.User + + @behaviour Pleroma.Web.ActivityPub.MRF.Policy + + defp get_author(url) do + with %Object{data: %{"actor" => actor}} <- Object.normalize(url, fetch: false), + %User{ap_id: ap_id, nickname: nickname} <- User.get_cached_by_ap_id(actor) do + %{"type" => "Mention", "href" => ap_id, "name" => "@#{nickname}"} + else + _ -> nil + end + end + + defp prepend_author(tags, _, false), do: tags + + defp prepend_author(tags, nil, _), do: tags + + defp prepend_author(tags, url, _) do + actor = get_author(url) + + if not is_nil(actor) do + [actor | tags] + else + tags + end + end + + @impl true + def filter(%{"type" => "Create", "object" => %{"tag" => tag} = object} = activity) do + tag = + tag + |> prepend_author( + object["inReplyTo"], + Config.get([:mrf_force_mention, :mention_parent, true]) + ) + |> prepend_author( + object["quoteUrl"], + Config.get([:mrf_force_mention, :mention_quoted, true]) + ) + |> Enum.uniq() + + {:ok, put_in(activity["object"]["tag"], tag)} + end + + @impl true + def filter(object), do: {:ok, object} + + @impl true + def describe, do: {:ok, %{}} +end diff --git a/lib/pleroma/web/activity_pub/mrf/force_mentions_in_content.ex b/lib/pleroma/web/activity_pub/mrf/force_mentions_in_content.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.MRF.ForceMentionsInContent do @@ -95,11 +95,13 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceMentionsInContent do |> Enum.reject(&is_nil/1) |> sort_replied_user(replied_to_user) - explicitly_mentioned_uris = extract_mention_uris_from_content(content) + explicitly_mentioned_uris = + extract_mention_uris_from_content(content) + |> MapSet.new() added_mentions = - Enum.reduce(mention_users, "", fn %User{ap_id: uri} = user, acc -> - unless uri in explicitly_mentioned_uris do + Enum.reduce(mention_users, "", fn %User{ap_id: ap_id, uri: uri} = user, acc -> + if MapSet.disjoint?(MapSet.new([ap_id, uri]), explicitly_mentioned_uris) do acc <> Formatter.mention_from_user(user, %{mentions_format: :compact}) <> " " else acc diff --git a/lib/pleroma/web/activity_pub/mrf/hashtag_policy.ex b/lib/pleroma/web/activity_pub/mrf/hashtag_policy.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.HashtagPolicy do alias Pleroma.Object @moduledoc """ - Reject, TWKN-remove or Set-Sensitive messsages with specific hashtags (without the leading #) + Reject, TWKN-remove or Set-Sensitive messages with specific hashtags (without the leading #) Note: This MRF Policy is always enabled, if you want to disable it you have to set empty lists. """ @@ -84,7 +84,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.HashtagPolicy do if hashtags != [] do with {:ok, message} <- check_reject(message, hashtags), {:ok, message} <- - (if "type" == "Create" do + (if type == "Create" do check_ftl_removal(message, hashtags) else {:ok, message} diff --git a/lib/pleroma/web/activity_pub/mrf/inline_quote_policy.ex b/lib/pleroma/web/activity_pub/mrf/inline_quote_policy.ex @@ -0,0 +1,77 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.InlineQuotePolicy do + @moduledoc "Force a quote line into the message content." + @behaviour Pleroma.Web.ActivityPub.MRF.Policy + + defp build_inline_quote(template, url) do + quote_line = String.replace(template, "{url}", "<a href=\"#{url}\">#{url}</a>") + + "<span class=\"quote-inline\"><br/><br/>#{quote_line}</span>" + end + + defp has_inline_quote?(content, quote_url) do + cond do + # Does the quote URL exist in the content? + content =~ quote_url -> true + # Does the content already have a .quote-inline span? + content =~ "<span class=\"quote-inline\">" -> true + # No inline quote found + true -> false + end + end + + defp filter_object(%{"quoteUrl" => quote_url} = object) do + content = object["content"] || "" + + if has_inline_quote?(content, quote_url) do + object + else + template = Pleroma.Config.get([:mrf_inline_quote, :template]) + + content = + if String.ends_with?(content, "</p>"), + do: + String.trim_trailing(content, "</p>") <> + build_inline_quote(template, quote_url) <> "</p>", + else: content <> build_inline_quote(template, quote_url) + + Map.put(object, "content", content) + end + end + + @impl true + def filter(%{"object" => %{"quoteUrl" => _} = object} = activity) do + {:ok, Map.put(activity, "object", filter_object(object))} + end + + @impl true + def filter(object), do: {:ok, object} + + @impl true + def describe, do: {:ok, %{}} + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def history_awareness, do: :auto + + @impl true + def config_description do + %{ + key: :mrf_inline_quote, + related_policy: "Pleroma.Web.ActivityPub.MRF.InlineQuotePolicy", + label: "MRF Inline Quote Policy", + description: "Force quote url to appear in post content.", + children: [ + %{ + key: :template, + type: :string, + description: + "The template to append to the post. `{url}` will be replaced with the actual link to the quoted post.", + suggestions: ["<bdi>RT:</bdi> {url}"] + } + ] + } + end +end diff --git a/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex b/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex @@ -5,18 +5,17 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicy do require Pleroma.Constants + alias Pleroma.Web.ActivityPub.MRF.Utils + @moduledoc "Reject or Word-Replace messages with a keyword or regex" @behaviour Pleroma.Web.ActivityPub.MRF.Policy - defp string_matches?(string, _) when not is_binary(string) do - false - end defp string_matches?(string, pattern) when is_binary(pattern) do String.contains?(string, pattern) end - defp string_matches?(string, pattern) do + defp string_matches?(string, %Regex{} = pattern) do String.match?(string, pattern) end @@ -128,7 +127,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicy do @impl true def describe do - # This horror is needed to convert regex sigils to strings mrf_keyword = Pleroma.Config.get(:mrf_keyword, []) |> Enum.map(fn {key, value} -> @@ -136,21 +134,12 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicy do Enum.map(value, fn {pattern, replacement} -> %{ - "pattern" => - if not is_binary(pattern) do - inspect(pattern) - else - pattern - end, + "pattern" => Utils.describe_regex_or_string(pattern), "replacement" => replacement } pattern -> - if not is_binary(pattern) do - inspect(pattern) - else - pattern - end + Utils.describe_regex_or_string(pattern) end)} end) |> Enum.into(%{}) diff --git a/lib/pleroma/web/activity_pub/mrf/no_empty_policy.ex b/lib/pleroma/web/activity_pub/mrf/no_empty_policy.ex @@ -10,9 +10,9 @@ defmodule Pleroma.Web.ActivityPub.MRF.NoEmptyPolicy do @impl true def filter(%{"actor" => actor} = object) do - with true <- is_local?(actor), - true <- is_eligible_type?(object), - true <- is_note?(object), + with true <- local?(actor), + true <- eligible_type?(object), + true <- note?(object), false <- has_attachment?(object), true <- only_mentions?(object) do {:reject, "[NoEmptyPolicy]"} @@ -24,7 +24,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.NoEmptyPolicy do def filter(object), do: {:ok, object} - defp is_local?(actor) do + defp local?(actor) do if actor |> String.starts_with?("#{Endpoint.url()}") do true else @@ -59,11 +59,11 @@ defmodule Pleroma.Web.ActivityPub.MRF.NoEmptyPolicy do defp only_mentions?(_), do: false - defp is_note?(%{"object" => %{"type" => "Note"}}), do: true - defp is_note?(_), do: false + defp note?(%{"object" => %{"type" => "Note"}}), do: true + defp note?(_), do: false - defp is_eligible_type?(%{"type" => type}) when type in ["Create", "Update"], do: true - defp is_eligible_type?(_), do: false + defp eligible_type?(%{"type" => type}) when type in ["Create", "Update"], do: true + defp eligible_type?(_), do: false @impl true def describe, do: {:ok, %{}} diff --git a/lib/pleroma/web/activity_pub/mrf/nsfw_api_policy.ex b/lib/pleroma/web/activity_pub/mrf/nsfw_api_policy.ex @@ -0,0 +1,265 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.NsfwApiPolicy do + @moduledoc """ + Hide, delete, or mark sensitive NSFW content with artificial intelligence. + + Requires a NSFW API server, configured like so: + + config :pleroma, Pleroma.Web.ActivityPub.MRF.NsfwMRF, + url: "http://127.0.0.1:5000/", + threshold: 0.7, + mark_sensitive: true, + unlist: false, + reject: false + + The NSFW API server must implement an HTTP endpoint like this: + + curl http://localhost:5000/?url=https://fedi.com/images/001.jpg + + Returning a response like this: + + {"score", 0.314} + + Where a score is 0-1, with `1` being definitely NSFW. + + A good API server is here: https://github.com/EugenCepoi/nsfw_api + You can run it with Docker with a one-liner: + + docker run -it -p 127.0.0.1:5000:5000/tcp --env PORT=5000 eugencepoi/nsfw_api:latest + + Options: + + - `url`: Base URL of the API server. Default: "http://127.0.0.1:5000/" + - `threshold`: Lowest score to take action on. Default: `0.7` + - `mark_sensitive`: Mark sensitive all detected NSFW content? Default: `true` + - `unlist`: Unlist all detected NSFW content? Default: `false` + - `reject`: Reject all detected NSFW content (takes precedence)? Default: `false` + """ + alias Pleroma.Config + alias Pleroma.Constants + alias Pleroma.HTTP + alias Pleroma.User + + require Logger + require Pleroma.Constants + + @behaviour Pleroma.Web.ActivityPub.MRF.Policy + @policy :mrf_nsfw_api + + def build_request_url(url) do + Config.get([@policy, :url]) + |> URI.parse() + |> fix_path() + |> Map.put(:query, "url=#{url}") + |> URI.to_string() + end + + def parse_url(url) do + request = build_request_url(url) + + with {:ok, %Tesla.Env{body: body}} <- HTTP.get(request) do + Jason.decode(body) + else + error -> + Logger.warn(""" + [NsfwApiPolicy]: The API server failed. Skipping. + #{inspect(error)} + """) + + error + end + end + + def check_url_nsfw(url) when is_binary(url) do + threshold = Config.get([@policy, :threshold]) + + case parse_url(url) do + {:ok, %{"score" => score}} when score >= threshold -> + {:nsfw, %{url: url, score: score, threshold: threshold}} + + {:ok, %{"score" => score}} -> + {:sfw, %{url: url, score: score, threshold: threshold}} + + _ -> + {:sfw, %{url: url, score: nil, threshold: threshold}} + end + end + + def check_url_nsfw(%{"href" => url}) when is_binary(url) do + check_url_nsfw(url) + end + + def check_url_nsfw(url) do + threshold = Config.get([@policy, :threshold]) + {:sfw, %{url: url, score: nil, threshold: threshold}} + end + + def check_attachment_nsfw(%{"url" => urls} = attachment) when is_list(urls) do + if Enum.all?(urls, &match?({:sfw, _}, check_url_nsfw(&1))) do + {:sfw, attachment} + else + {:nsfw, attachment} + end + end + + def check_attachment_nsfw(%{"url" => url} = attachment) when is_binary(url) do + case check_url_nsfw(url) do + {:sfw, _} -> {:sfw, attachment} + {:nsfw, _} -> {:nsfw, attachment} + end + end + + def check_attachment_nsfw(attachment), do: {:sfw, attachment} + + def check_object_nsfw(%{"attachment" => attachments} = object) when is_list(attachments) do + if Enum.all?(attachments, &match?({:sfw, _}, check_attachment_nsfw(&1))) do + {:sfw, object} + else + {:nsfw, object} + end + end + + def check_object_nsfw(%{"object" => %{} = child_object} = object) do + case check_object_nsfw(child_object) do + {:sfw, _} -> {:sfw, object} + {:nsfw, _} -> {:nsfw, object} + end + end + + def check_object_nsfw(object), do: {:sfw, object} + + @impl true + def filter(object) do + with {:sfw, object} <- check_object_nsfw(object) do + {:ok, object} + else + {:nsfw, _data} -> handle_nsfw(object) + _ -> {:reject, "NSFW: Attachment rejected"} + end + end + + defp handle_nsfw(object) do + if Config.get([@policy, :reject]) do + {:reject, object} + else + {:ok, + object + |> maybe_unlist() + |> maybe_mark_sensitive()} + end + end + + defp maybe_unlist(object) do + if Config.get([@policy, :unlist]) do + unlist(object) + else + object + end + end + + defp maybe_mark_sensitive(object) do + if Config.get([@policy, :mark_sensitive]) do + mark_sensitive(object) + else + object + end + end + + def unlist(%{"to" => to, "cc" => cc, "actor" => actor} = object) do + with %User{} = user <- User.get_cached_by_ap_id(actor) do + to = + [user.follower_address | to] + |> List.delete(Constants.as_public()) + |> Enum.uniq() + + cc = + [Constants.as_public() | cc] + |> List.delete(user.follower_address) + |> Enum.uniq() + + object + |> Map.put("to", to) + |> Map.put("cc", cc) + else + _ -> raise "[NsfwApiPolicy]: Could not find user #{actor}" + end + end + + def mark_sensitive(%{"object" => child_object} = object) when is_map(child_object) do + Map.put(object, "object", mark_sensitive(child_object)) + end + + def mark_sensitive(object) when is_map(object) do + tags = (object["tag"] || []) ++ ["nsfw"] + + object + |> Map.put("tag", tags) + |> Map.put("sensitive", true) + end + + # Hackney needs a trailing slash + defp fix_path(%URI{path: path} = uri) when is_binary(path) do + path = String.trim_trailing(path, "/") <> "/" + Map.put(uri, :path, path) + end + + defp fix_path(%URI{path: nil} = uri), do: Map.put(uri, :path, "/") + + @impl true + def describe do + options = %{ + threshold: Config.get([@policy, :threshold]), + mark_sensitive: Config.get([@policy, :mark_sensitive]), + unlist: Config.get([@policy, :unlist]), + reject: Config.get([@policy, :reject]) + } + + {:ok, %{@policy => options}} + end + + @impl true + def config_description do + %{ + key: @policy, + related_policy: to_string(__MODULE__), + label: "NSFW API Policy", + description: + "Hide, delete, or mark sensitive NSFW content with artificial intelligence. Requires running an external API server.", + children: [ + %{ + key: :url, + type: :string, + description: "Base URL of the API server.", + suggestions: ["http://127.0.0.1:5000/"] + }, + %{ + key: :threshold, + type: :float, + description: "Lowest score to take action on. Between 0 and 1.", + suggestions: [0.7] + }, + %{ + key: :mark_sensitive, + type: :boolean, + description: "Mark sensitive all detected NSFW content?", + suggestions: [true] + }, + %{ + key: :unlist, + type: :boolean, + description: "Unlist sensitive all detected NSFW content?", + suggestions: [false] + }, + %{ + key: :reject, + type: :boolean, + description: "Reject sensitive all detected NSFW content (takes precedence)?", + suggestions: [false] + } + ] + } + end +end diff --git a/lib/pleroma/web/activity_pub/mrf/policy.ex b/lib/pleroma/web/activity_pub/mrf/policy.ex @@ -3,8 +3,8 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.MRF.Policy do - @callback filter(Map.t()) :: {:ok | :reject, Map.t()} - @callback describe() :: {:ok | :error, Map.t()} + @callback filter(map()) :: {:ok | :reject, map()} + @callback describe() :: {:ok | :error, map()} @callback config_description() :: %{ optional(:children) => [map()], key: atom(), diff --git a/lib/pleroma/web/activity_pub/mrf/quote_to_link_tag_policy.ex b/lib/pleroma/web/activity_pub/mrf/quote_to_link_tag_policy.ex @@ -0,0 +1,49 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.QuoteToLinkTagPolicy do + @moduledoc "Force a Link tag for posts quoting another post. (may break outgoing federation of quote posts with older Pleroma versions)" + @behaviour Pleroma.Web.ActivityPub.MRF.Policy + + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes + + require Pleroma.Constants + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def filter(%{"object" => %{"quoteUrl" => _} = object} = activity) do + {:ok, Map.put(activity, "object", filter_object(object))} + end + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def filter(object), do: {:ok, object} + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def describe, do: {:ok, %{}} + + @impl Pleroma.Web.ActivityPub.MRF.Policy + def history_awareness, do: :auto + + defp filter_object(%{"quoteUrl" => quote_url} = object) do + tags = object["tag"] || [] + + if Enum.any?(tags, fn tag -> + CommonFixes.object_link_tag?(tag) and tag["href"] == quote_url + end) do + object + else + object + |> Map.put( + "tag", + tags ++ + [ + %{ + "type" => "Link", + "mediaType" => Pleroma.Constants.activity_json_canonical_mime_type(), + "href" => quote_url + } + ] + ) + end + end +end diff --git a/lib/pleroma/web/activity_pub/mrf/steal_emoji_policy.ex b/lib/pleroma/web/activity_pub/mrf/steal_emoji_policy.ex @@ -34,14 +34,17 @@ defmodule Pleroma.Web.ActivityPub.MRF.StealEmojiPolicy do |> Path.basename() |> Path.extname() - file_path = Path.join(emoji_dir_path, shortcode <> (extension || ".png")) + extension = if extension == "", do: ".png", else: extension + + shortcode = Path.basename(shortcode) + file_path = Path.join(emoji_dir_path, shortcode <> extension) case File.write(file_path, response.body) do :ok -> shortcode e -> - Logger.warn("MRF.StealEmojiPolicy: Failed to write to #{file_path}: #{inspect(e)}") + Logger.warning("MRF.StealEmojiPolicy: Failed to write to #{file_path}: #{inspect(e)}") nil end else @@ -53,7 +56,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.StealEmojiPolicy do end else e -> - Logger.warn("MRF.StealEmojiPolicy: Failed to fetch #{url}: #{inspect(e)}") + Logger.warning("MRF.StealEmojiPolicy: Failed to fetch #{url}: #{inspect(e)}") nil end end @@ -76,6 +79,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.StealEmojiPolicy do new_emojis = foreign_emojis |> Enum.reject(fn {shortcode, _url} -> shortcode in installed_emoji end) + |> Enum.reject(fn {shortcode, _url} -> String.contains?(shortcode, ["/", "\\"]) end) |> Enum.filter(fn {shortcode, _url} -> reject_emoji? = [:mrf_steal_emoji, :rejected_shortcodes] diff --git a/lib/pleroma/web/activity_pub/mrf/utils.ex b/lib/pleroma/web/activity_pub/mrf/utils.ex @@ -0,0 +1,15 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.Utils do + @spec describe_regex_or_string(String.t() | Regex.t()) :: String.t() + def describe_regex_or_string(pattern) do + # This horror is needed to convert regex sigils to strings + if not is_binary(pattern) do + inspect(pattern) + else + pattern + end + end +end diff --git a/lib/pleroma/web/activity_pub/object_validator.ex b/lib/pleroma/web/activity_pub/object_validator.ex @@ -21,7 +21,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do alias Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator alias Pleroma.Web.ActivityPub.ObjectValidators.AnswerValidator alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator - alias Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.AudioImageVideoValidator alias Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator alias Pleroma.Web.ActivityPub.ObjectValidators.ChatMessageValidator alias Pleroma.Web.ActivityPub.ObjectValidators.CreateChatMessageValidator @@ -102,7 +102,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do %{"type" => "Create", "object" => %{"type" => objtype} = object} = create_activity, meta ) - when objtype in ~w[Question Answer Audio Video Event Article Note Page] do + when objtype in ~w[Question Answer Audio Video Image Event Article Note Page] do with {:ok, object_data} <- cast_and_apply_and_stringify_with_history(object), meta = Keyword.put(meta, :object_data, object_data), {:ok, create_activity} <- @@ -115,13 +115,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do end def validate(%{"type" => type} = object, meta) - when type in ~w[Event Question Audio Video Article Note Page] do + when type in ~w[Event Question Audio Video Image Article Note Page] do validator = case type do "Event" -> EventValidator "Question" -> QuestionValidator - "Audio" -> AudioVideoValidator - "Video" -> AudioVideoValidator + "Audio" -> AudioImageVideoValidator + "Video" -> AudioImageVideoValidator + "Image" -> AudioImageVideoValidator "Article" -> ArticleNotePageValidator "Note" -> ArticleNotePageValidator "Page" -> ArticleNotePageValidator @@ -172,6 +173,9 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do {:object_validation, e} -> e + + {:error, %Ecto.Changeset{} = e} -> + {:error, e} end end @@ -233,8 +237,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do AnswerValidator.cast_and_apply(object) end - def cast_and_apply(%{"type" => type} = object) when type in ~w[Audio Video] do - AudioVideoValidator.cast_and_apply(object) + def cast_and_apply(%{"type" => type} = object) when type in ~w[Audio Image Video] do + AudioImageVideoValidator.cast_and_apply(object) end def cast_and_apply(%{"type" => "Event"} = object) do diff --git a/lib/pleroma/web/activity_pub/object_validators/add_remove_validator.ex b/lib/pleroma/web/activity_pub/object_validators/add_remove_validator.ex @@ -73,6 +73,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AddRemoveValidator do end defp maybe_refetch_user(%User{ap_id: ap_id}) do - Pleroma.Web.ActivityPub.Transmogrifier.upgrade_user_from_ap_id(ap_id) + # Maybe it could use User.get_or_fetch_by_ap_id to avoid refreshing too often + User.fetch_by_ap_id(ap_id) end end diff --git a/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex b/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex @@ -82,7 +82,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator do object when is_binary(object) <- get_field(cng, :object), %User{} = actor <- User.get_cached_by_ap_id(actor), %Object{} = object <- Object.get_cached_by_ap_id(object), - false <- Visibility.is_public?(object) do + false <- Visibility.public?(object) do same_actor = object.data["actor"] == actor.ap_id recipients = get_field(cng, :to) ++ get_field(cng, :cc) local_public = Utils.as_local_public() diff --git a/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex b/lib/pleroma/web/activity_pub/object_validators/article_note_page_validator.ex @@ -84,6 +84,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidator do |> fix_tag() |> fix_replies() |> fix_attachments() + |> CommonFixes.fix_quote_url() |> Transmogrifier.fix_emoji() |> Transmogrifier.fix_content_map() end diff --git a/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex b/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex @@ -12,14 +12,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator do @primary_key false embedded_schema do field(:id, :string) - field(:type, :string) + field(:type, :string, default: "Link") field(:mediaType, ObjectValidators.MIME, default: "application/octet-stream") field(:name, :string) field(:summary, :string) field(:blurhash, :string) embeds_many :url, UrlObjectValidator, primary_key: false do - field(:type, :string) + field(:type, :string, default: "Link") field(:href, ObjectValidators.Uri) field(:mediaType, ObjectValidators.MIME, default: "application/octet-stream") field(:width, :integer) diff --git a/lib/pleroma/web/activity_pub/object_validators/audio_image_video_validator.ex b/lib/pleroma/web/activity_pub/object_validators/audio_image_video_validator.ex @@ -0,0 +1,126 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioImageVideoValidator do + use Ecto.Schema + + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations + alias Pleroma.Web.ActivityPub.Transmogrifier + + import Ecto.Changeset + + @primary_key false + @derive Jason.Encoder + + embedded_schema do + quote do + unquote do + import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields + message_fields() + object_fields() + status_object_fields() + end + end + end + + def cast_and_apply(data) do + data + |> cast_data + |> apply_action(:insert) + end + + def cast_and_validate(data) do + data + |> cast_data() + |> validate_data() + end + + def cast_data(data) do + %__MODULE__{} + |> changeset(data) + end + + defp find_attachment(url) do + mpeg_url = + Enum.find(url, fn + %{"mediaType" => mime_type, "tag" => tags} when is_list(tags) -> + mime_type == "application/x-mpegURL" + + _ -> + false + end) + + url + |> Enum.concat(mpeg_url["tag"] || []) + |> Enum.find(fn + %{"mediaType" => mime_type} -> + String.starts_with?(mime_type, ["video/", "audio/", "image/"]) + + %{"mimeType" => mime_type} -> + String.starts_with?(mime_type, ["video/", "audio/", "image/"]) + + _ -> + false + end) + end + + defp fix_url(%{"url" => url} = data) when is_list(url) do + attachment = find_attachment(url) + + link_element = + Enum.find(url, fn + %{"mediaType" => "text/html"} -> true + %{"mimeType" => "text/html"} -> true + _ -> false + end) + + data + |> Map.put("attachment", [attachment]) + |> Map.put("url", link_element["href"]) + end + + defp fix_url(data), do: data + + defp fix_content(%{"mediaType" => "text/markdown", "content" => content} = data) + when is_binary(content) do + content = + content + |> Pleroma.Formatter.markdown_to_html() + |> Pleroma.HTML.filter_tags() + + Map.put(data, "content", content) + end + + defp fix_content(data), do: data + + defp fix(data) do + data + |> CommonFixes.fix_actor() + |> CommonFixes.fix_object_defaults() + |> CommonFixes.fix_quote_url() + |> Transmogrifier.fix_emoji() + |> fix_url() + |> fix_content() + end + + def changeset(struct, data) do + data = fix(data) + + struct + |> cast(data, __schema__(:fields) -- [:attachment, :tag]) + |> cast_embed(:attachment, required: true) + |> cast_embed(:tag) + end + + defp validate_data(data_cng) do + data_cng + |> validate_inclusion(:type, ~w[Audio Image Video]) + |> validate_required([:id, :actor, :attributedTo, :type, :context]) + |> CommonValidations.validate_any_presence([:cc, :to]) + |> CommonValidations.validate_fields_match([:actor, :attributedTo]) + |> CommonValidations.validate_actor_presence() + |> CommonValidations.validate_host_match() + end +end diff --git a/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex b/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex @@ -1,120 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator do - use Ecto.Schema - - alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes - alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations - alias Pleroma.Web.ActivityPub.Transmogrifier - - import Ecto.Changeset - - @primary_key false - @derive Jason.Encoder - - embedded_schema do - quote do - unquote do - import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields - message_fields() - object_fields() - status_object_fields() - end - end - end - - def cast_and_apply(data) do - data - |> cast_data - |> apply_action(:insert) - end - - def cast_and_validate(data) do - data - |> cast_data() - |> validate_data() - end - - def cast_data(data) do - %__MODULE__{} - |> changeset(data) - end - - defp find_attachment(url) do - mpeg_url = - Enum.find(url, fn - %{"mediaType" => mime_type, "tag" => tags} when is_list(tags) -> - mime_type == "application/x-mpegURL" - - _ -> - false - end) - - url - |> Enum.concat(mpeg_url["tag"] || []) - |> Enum.find(fn - %{"mediaType" => mime_type} -> String.starts_with?(mime_type, ["video/", "audio/"]) - %{"mimeType" => mime_type} -> String.starts_with?(mime_type, ["video/", "audio/"]) - _ -> false - end) - end - - defp fix_url(%{"url" => url} = data) when is_list(url) do - attachment = find_attachment(url) - - link_element = - Enum.find(url, fn - %{"mediaType" => "text/html"} -> true - %{"mimeType" => "text/html"} -> true - _ -> false - end) - - data - |> Map.put("attachment", [attachment]) - |> Map.put("url", link_element["href"]) - end - - defp fix_url(data), do: data - - defp fix_content(%{"mediaType" => "text/markdown", "content" => content} = data) - when is_binary(content) do - content = - content - |> Pleroma.Formatter.markdown_to_html() - |> Pleroma.HTML.filter_tags() - - Map.put(data, "content", content) - end - - defp fix_content(data), do: data - - defp fix(data) do - data - |> CommonFixes.fix_actor() - |> CommonFixes.fix_object_defaults() - |> Transmogrifier.fix_emoji() - |> fix_url() - |> fix_content() - end - - def changeset(struct, data) do - data = fix(data) - - struct - |> cast(data, __schema__(:fields) -- [:attachment, :tag]) - |> cast_embed(:attachment, required: true) - |> cast_embed(:tag) - end - - defp validate_data(data_cng) do - data_cng - |> validate_inclusion(:type, ["Audio", "Video"]) - |> validate_required([:id, :actor, :attributedTo, :type, :context]) - |> CommonValidations.validate_any_presence([:cc, :to]) - |> CommonValidations.validate_fields_match([:actor, :attributedTo]) - |> CommonValidations.validate_actor_presence() - |> CommonValidations.validate_host_match() - end -end diff --git a/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex b/lib/pleroma/web/activity_pub/object_validators/chat_message_validator.ex @@ -57,6 +57,11 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ChatMessageValidator do |> Map.put("attachment", attachment) end + def fix_attachment(%{"attachment" => attachment} = data) when attachment == [] do + data + |> Map.drop(["attachment"]) + end + def fix_attachment(data), do: data def changeset(struct, data) do diff --git a/lib/pleroma/web/activity_pub/object_validators/common_fields.ex b/lib/pleroma/web/activity_pub/object_validators/common_fields.ex @@ -27,7 +27,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFields do end end - # All objects except Answer and CHatMessage + # All objects except Answer and ChatMessage defmacro object_fields do quote bind_quoted: binding() do field(:content, :string) @@ -57,8 +57,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFields do field(:replies_count, :integer, default: 0) field(:like_count, :integer, default: 0) field(:announcement_count, :integer, default: 0) + field(:quotes_count, :integer, default: 0) field(:inReplyTo, ObjectValidators.ObjectID) - field(:url, ObjectValidators.Uri) + field(:quoteUrl, ObjectValidators.ObjectID) + field(:url, ObjectValidators.BareUri) field(:likes, {:array, ObjectValidators.ObjectID}, default: []) field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) diff --git a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex @@ -4,12 +4,15 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do alias Pleroma.EctoType.ActivityPub.ObjectValidators + alias Pleroma.Maps alias Pleroma.Object alias Pleroma.Object.Containment alias Pleroma.User alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.ActivityPub.Utils + require Pleroma.Constants + def cast_and_filter_recipients(message, field, follower_collection, field_fallback \\ []) do {:ok, data} = ObjectValidators.Recipients.cast(message[field] || field_fallback) @@ -22,6 +25,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do end def fix_object_defaults(data) do + data = Maps.filter_empty_values(data) + context = Utils.maybe_create_context( data["context"] || data["conversation"] || data["inReplyTo"] || data["id"] @@ -76,4 +81,48 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do Map.put(data, "to", to) end + + def fix_quote_url(%{"quoteUrl" => _quote_url} = data), do: data + + # Fedibird + # https://github.com/fedibird/mastodon/commit/dbd7ae6cf58a92ec67c512296b4daaea0d01e6ac + def fix_quote_url(%{"quoteUri" => quote_url} = data) do + Map.put(data, "quoteUrl", quote_url) + end + + # Old Fedibird (bug) + # https://github.com/fedibird/mastodon/issues/9 + def fix_quote_url(%{"quoteURL" => quote_url} = data) do + Map.put(data, "quoteUrl", quote_url) + end + + # Misskey fallback + def fix_quote_url(%{"_misskey_quote" => quote_url} = data) do + Map.put(data, "quoteUrl", quote_url) + end + + def fix_quote_url(%{"tag" => [_ | _] = tags} = data) do + tag = Enum.find(tags, &object_link_tag?/1) + + if not is_nil(tag) do + data + |> Map.put("quoteUrl", tag["href"]) + else + data + end + end + + def fix_quote_url(data), do: data + + # https://codeberg.org/fediverse/fep/src/branch/main/fep/e232/fep-e232.md + def object_link_tag?(%{ + "type" => "Link", + "mediaType" => media_type, + "href" => href + }) + when media_type in Pleroma.Constants.activity_json_mime_types() and is_binary(href) do + true + end + + def object_link_tag?(_), do: false end diff --git a/lib/pleroma/web/activity_pub/object_validators/emoji_react_validator.ex b/lib/pleroma/web/activity_pub/object_validators/emoji_react_validator.ex @@ -5,8 +5,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do use Ecto.Schema + alias Pleroma.Emoji alias Pleroma.Object alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes + alias Pleroma.Web.ActivityPub.ObjectValidators.TagValidator import Ecto.Changeset import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations @@ -19,6 +21,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do import Elixir.Pleroma.Web.ActivityPub.ObjectValidators.CommonFields message_fields() activity_fields() + embeds_many(:tag, TagValidator) end end @@ -43,7 +46,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do def changeset(struct, data) do struct - |> cast(data, __schema__(:fields)) + |> cast(data, __schema__(:fields) -- [:tag]) + |> cast_embed(:tag) end defp fix(data) do @@ -53,12 +57,16 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do |> CommonFixes.fix_actor() |> CommonFixes.fix_activity_addressing() - with %Object{} = object <- Object.normalize(data["object"]) do - data - |> CommonFixes.fix_activity_context(object) - |> CommonFixes.fix_object_action_recipients(object) - else - _ -> data + data = Map.put_new(data, "tag", []) + + case Object.normalize(data["object"]) do + %Object{} = object -> + data + |> CommonFixes.fix_activity_context(object) + |> CommonFixes.fix_object_action_recipients(object) + + _ -> + data end end @@ -66,10 +74,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do new_emoji = Pleroma.Emoji.fully_qualify_emoji(emoji) cond do - Pleroma.Emoji.is_unicode_emoji?(emoji) -> + Pleroma.Emoji.unicode?(emoji) -> data - Pleroma.Emoji.is_unicode_emoji?(new_emoji) -> + Pleroma.Emoji.unicode?(new_emoji) -> data |> Map.put("content", new_emoji) true -> @@ -82,11 +90,31 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do defp validate_emoji(cng) do content = get_field(cng, :content) - if Pleroma.Emoji.is_unicode_emoji?(content) do + if Emoji.unicode?(content) || Emoji.custom?(content) do cng else cng - |> add_error(:content, "must be a single character emoji") + |> add_error(:content, "is not a valid emoji") + end + end + + defp maybe_validate_tag_presence(cng) do + content = get_field(cng, :content) + + if Emoji.unicode?(content) do + cng + else + tag = get_field(cng, :tag) + emoji_name = Emoji.maybe_strip_name(content) + + case tag do + [%{name: ^emoji_name, type: "Emoji", icon: %{url: _}}] -> + cng + + _ -> + cng + |> add_error(:tag, "does not contain an Emoji tag") + end end end @@ -97,5 +125,6 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do |> validate_actor_presence() |> validate_object_presence() |> validate_emoji() + |> maybe_validate_tag_presence() end end diff --git a/lib/pleroma/web/activity_pub/object_validators/question_options_validator.ex b/lib/pleroma/web/activity_pub/object_validators/question_options_validator.ex @@ -14,10 +14,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionOptionsValidator do embeds_one :replies, Replies, primary_key: false do field(:totalItems, :integer) - field(:type, :string) + field(:type, :string, default: "Collection") end - field(:type, :string) + field(:type, :string, default: "Note") end def changeset(struct, data) do diff --git a/lib/pleroma/web/activity_pub/object_validators/question_validator.ex b/lib/pleroma/web/activity_pub/object_validators/question_validator.ex @@ -29,6 +29,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do field(:closed, ObjectValidators.DateTime) field(:voters, {:array, ObjectValidators.ObjectID}, default: []) + field(:nonAnonymous, :boolean) embeds_many(:anyOf, QuestionOptionsValidator) embeds_many(:oneOf, QuestionOptionsValidator) end @@ -62,6 +63,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do data |> CommonFixes.fix_actor() |> CommonFixes.fix_object_defaults() + |> CommonFixes.fix_quote_url() |> Transmogrifier.fix_emoji() |> fix_closed() end diff --git a/lib/pleroma/web/activity_pub/object_validators/tag_validator.ex b/lib/pleroma/web/activity_pub/object_validators/tag_validator.ex @@ -9,15 +9,20 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.TagValidator do import Ecto.Changeset + require Pleroma.Constants + @primary_key false embedded_schema do # Common field(:type, :string) field(:name, :string) - # Mention, Hashtag + # Mention, Hashtag, Link field(:href, ObjectValidators.Uri) + # Link + field(:mediaType, :string) + # Emoji embeds_one :icon, IconObjectValidator, primary_key: false do field(:type, :string) @@ -68,6 +73,19 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.TagValidator do |> validate_required([:type, :name, :icon]) end + def changeset(struct, %{"type" => "Link"} = data) do + struct + |> cast(data, [:type, :name, :mediaType, :href]) + |> validate_inclusion(:mediaType, Pleroma.Constants.activity_json_mime_types()) + |> validate_required([:type, :href, :mediaType]) + end + + def changeset(struct, %{"type" => _} = data) do + struct + |> cast(data, []) + |> Map.put(:action, :ignore) + end + def icon_changeset(struct, data) do struct |> cast(data, [:type, :url]) diff --git a/lib/pleroma/web/activity_pub/pipeline.ex b/lib/pleroma/web/activity_pub/pipeline.ex @@ -62,7 +62,7 @@ defmodule Pleroma.Web.ActivityPub.Pipeline do with {:ok, local} <- Keyword.fetch(meta, :local) do do_not_federate = meta[:do_not_federate] || !config().get([:instance, :federating]) - if !do_not_federate and local and not Visibility.is_local_public?(activity) do + if !do_not_federate and local and not Visibility.local_public?(activity) do activity = if object = Keyword.get(meta, :object_data) do %{activity | data: Map.put(activity.data, "object", object)} diff --git a/lib/pleroma/web/activity_pub/publisher.ex b/lib/pleroma/web/activity_pub/publisher.ex @@ -13,13 +13,12 @@ defmodule Pleroma.Web.ActivityPub.Publisher do alias Pleroma.User alias Pleroma.Web.ActivityPub.Relay alias Pleroma.Web.ActivityPub.Transmogrifier + alias Pleroma.Workers.PublisherWorker require Pleroma.Constants import Pleroma.Web.ActivityPub.Visibility - @behaviour Pleroma.Web.Federator.Publisher - require Logger @moduledoc """ @@ -27,9 +26,47 @@ defmodule Pleroma.Web.ActivityPub.Publisher do """ @doc """ + Enqueue publishing a single activity. + """ + @spec enqueue_one(map(), Keyword.t()) :: {:ok, %Oban.Job{}} + def enqueue_one(%{} = params, worker_args \\ []) do + PublisherWorker.enqueue( + "publish_one", + %{"params" => params}, + worker_args + ) + end + + @doc """ + Gathers a set of remote users given an IR envelope. + """ + def remote_users(%User{id: user_id}, %{data: %{"to" => to} = data}) do + cc = Map.get(data, "cc", []) + + bcc = + data + |> Map.get("bcc", []) + |> Enum.reduce([], fn ap_id, bcc -> + case Pleroma.List.get_by_ap_id(ap_id) do + %Pleroma.List{user_id: ^user_id} = list -> + {:ok, following} = Pleroma.List.get_following(list) + bcc ++ Enum.map(following, & &1.ap_id) + + _ -> + bcc + end + end) + + [to, cc, bcc] + |> Enum.concat() + |> Enum.map(&User.get_cached_by_ap_id/1) + |> Enum.filter(fn user -> user && !user.local end) + end + + @doc """ Determine if an activity can be represented by running it through Transmogrifier. """ - def is_representable?(%Activity{} = activity) do + def representable?(%Activity{} = activity) do with {:ok, _data} <- Transmogrifier.prepare_outgoing(activity.data) do true else @@ -80,9 +117,27 @@ defmodule Pleroma.Web.ActivityPub.Publisher do result else - {_post_result, response} -> + {_post_result, %{status: code} = response} = e -> + unless params[:unreachable_since], do: Instances.set_unreachable(inbox) + Logger.metadata(activity: id, inbox: inbox, status: code) + Logger.error("Publisher failed to inbox #{inbox} with status #{code}") + + case response do + %{status: 403} -> {:discard, :forbidden} + %{status: 404} -> {:discard, :not_found} + %{status: 410} -> {:discard, :not_found} + _ -> {:error, e} + end + + {:error, :pool_full} -> + Logger.debug("Publisher snoozing worker job due to full connection pool") + {:snooze, 30} + + e -> unless params[:unreachable_since], do: Instances.set_unreachable(inbox) - {:error, response} + Logger.metadata(activity: id, inbox: inbox) + Logger.error("Publisher failed to inbox #{inbox} #{inspect(e)}") + {:error, e} end end @@ -103,22 +158,21 @@ defmodule Pleroma.Web.ActivityPub.Publisher do end end - defp should_federate?(inbox, public) do - if public do - true - else - %{host: host} = URI.parse(inbox) + def should_federate?(nil, _), do: false + def should_federate?(_, true), do: true - quarantined_instances = - Config.get([:instance, :quarantined_instances], []) - |> Pleroma.Web.ActivityPub.MRF.instance_list_from_tuples() - |> Pleroma.Web.ActivityPub.MRF.subdomains_regex() + def should_federate?(inbox, _) do + %{host: host} = URI.parse(inbox) - !Pleroma.Web.ActivityPub.MRF.subdomain_match?(quarantined_instances, host) - end + quarantined_instances = + Config.get([:instance, :quarantined_instances], []) + |> Pleroma.Web.ActivityPub.MRF.instance_list_from_tuples() + |> Pleroma.Web.ActivityPub.MRF.subdomains_regex() + + !Pleroma.Web.ActivityPub.MRF.subdomain_match?(quarantined_instances, host) end - @spec recipients(User.t(), Activity.t()) :: list(User.t()) | [] + @spec recipients(User.t(), Activity.t()) :: [[User.t()]] defp recipients(actor, activity) do followers = if actor.follower_address in activity.recipients do @@ -138,7 +192,10 @@ defmodule Pleroma.Web.ActivityPub.Publisher do [] end - Pleroma.Web.Federator.Publisher.remote_users(actor, activity) ++ followers ++ fetchers + mentioned = remote_users(actor, activity) + non_mentioned = (followers ++ fetchers) -- mentioned + + [mentioned, non_mentioned] end defp get_cc_ap_ids(ap_id, recipients) do @@ -192,45 +249,52 @@ defmodule Pleroma.Web.ActivityPub.Publisher do def publish(%User{} = actor, %{data: %{"bcc" => bcc}} = activity) when is_list(bcc) and bcc != [] do - public = is_public?(activity) + public = public?(activity) {:ok, data} = Transmogrifier.prepare_outgoing(activity.data) - recipients = recipients(actor, activity) + [priority_recipients, recipients] = recipients(actor, activity) inboxes = - recipients - |> Enum.filter(&User.ap_enabled?/1) - |> Enum.map(fn actor -> actor.inbox end) - |> Enum.filter(fn inbox -> should_federate?(inbox, public) end) - |> Instances.filter_reachable() + [priority_recipients, recipients] + |> Enum.map(fn recipients -> + recipients + |> Enum.map(fn %User{} = user -> + determine_inbox(activity, user) + end) + |> Enum.uniq() + |> Enum.filter(fn inbox -> should_federate?(inbox, public) end) + |> Instances.filter_reachable() + end) Repo.checkout(fn -> - Enum.each(inboxes, fn {inbox, unreachable_since} -> - %User{ap_id: ap_id} = Enum.find(recipients, fn actor -> actor.inbox == inbox end) - - # Get all the recipients on the same host and add them to cc. Otherwise, a remote - # instance would only accept a first message for the first recipient and ignore the rest. - cc = get_cc_ap_ids(ap_id, recipients) - - json = - data - |> Map.put("cc", cc) - |> Jason.encode!() - - Pleroma.Web.Federator.Publisher.enqueue_one(__MODULE__, %{ - inbox: inbox, - json: json, - actor_id: actor.id, - id: activity.data["id"], - unreachable_since: unreachable_since - }) + Enum.each(inboxes, fn inboxes -> + Enum.each(inboxes, fn {inbox, unreachable_since} -> + %User{ap_id: ap_id} = Enum.find(recipients, fn actor -> actor.inbox == inbox end) + + # Get all the recipients on the same host and add them to cc. Otherwise, a remote + # instance would only accept a first message for the first recipient and ignore the rest. + cc = get_cc_ap_ids(ap_id, recipients) + + json = + data + |> Map.put("cc", cc) + |> Jason.encode!() + + __MODULE__.enqueue_one(%{ + inbox: inbox, + json: json, + actor_id: actor.id, + id: activity.data["id"], + unreachable_since: unreachable_since + }) + end) end) end) end # Publishes an activity to all relevant peers. def publish(%User{} = actor, %Activity{} = activity) do - public = is_public?(activity) + public = public?(activity) if public && Config.get([:instance, :allow_relay]) do Logger.debug(fn -> "Relaying #{activity.data["id"]} out" end) @@ -240,26 +304,38 @@ defmodule Pleroma.Web.ActivityPub.Publisher do {:ok, data} = Transmogrifier.prepare_outgoing(activity.data) json = Jason.encode!(data) - recipients(actor, activity) - |> Enum.filter(fn user -> User.ap_enabled?(user) end) - |> Enum.map(fn %User{} = user -> - determine_inbox(activity, user) - end) - |> Enum.uniq() - |> Enum.filter(fn inbox -> should_federate?(inbox, public) end) - |> Instances.filter_reachable() - |> Enum.each(fn {inbox, unreachable_since} -> - Pleroma.Web.Federator.Publisher.enqueue_one( - __MODULE__, - %{ - inbox: inbox, - json: json, - actor_id: actor.id, - id: activity.data["id"], - unreachable_since: unreachable_since - } - ) + [priority_inboxes, inboxes] = + recipients(actor, activity) + |> Enum.map(fn recipients -> + recipients + |> Enum.map(fn %User{} = user -> + determine_inbox(activity, user) + end) + |> Enum.uniq() + |> Enum.filter(fn inbox -> should_federate?(inbox, public) end) + end) + + inboxes = inboxes -- priority_inboxes + + [{priority_inboxes, 0}, {inboxes, 1}] + |> Enum.each(fn {inboxes, priority} -> + inboxes + |> Instances.filter_reachable() + |> Enum.each(fn {inbox, unreachable_since} -> + __MODULE__.enqueue_one( + %{ + inbox: inbox, + json: json, + actor_id: actor.id, + id: activity.data["id"], + unreachable_since: unreachable_since + }, + priority: priority + ) + end) end) + + :ok end def gather_webfinger_links(%User{} = user) do diff --git a/lib/pleroma/web/activity_pub/relay.ex b/lib/pleroma/web/activity_pub/relay.ex @@ -58,7 +58,7 @@ defmodule Pleroma.Web.ActivityPub.Relay do @spec publish(any()) :: {:ok, Activity.t()} | {:error, any()} def publish(%Activity{data: %{"type" => "Create"}} = activity) do with %User{} = user <- get_actor(), - true <- Visibility.is_public?(activity) do + true <- Visibility.public?(activity) do CommonAPI.repeat(activity.id, user) else error -> format_error(error) diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex @@ -21,7 +21,6 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do alias Pleroma.Web.ActivityPub.Builder alias Pleroma.Web.ActivityPub.Pipeline alias Pleroma.Web.ActivityPub.Utils - alias Pleroma.Web.Push alias Pleroma.Web.Streamer alias Pleroma.Workers.PollWorker @@ -125,7 +124,7 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do nil end - {:ok, notifications} = Notification.create_notifications(object, do_send: false) + {:ok, notifications} = Notification.create_notifications(object) meta = meta @@ -184,7 +183,11 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do liked_object = Object.get_by_ap_id(object.data["object"]) Utils.add_like_to_object(object, liked_object) - Notification.create_notifications(object) + {:ok, notifications} = Notification.create_notifications(object) + + meta = + meta + |> add_notifications(notifications) {:ok, object, meta} end @@ -197,11 +200,12 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do # - Increase replies count # - Set up ActivityExpiration # - Set up notifications + # - Index incoming posts for search (if needed) @impl true def handle(%{data: %{"type" => "Create"}} = activity, meta) do with {:ok, object, meta} <- handle_object_creation(meta[:object_data], activity, meta), %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do - {:ok, notifications} = Notification.create_notifications(activity, do_send: false) + {:ok, notifications} = Notification.create_notifications(activity) {:ok, _user} = ActivityPub.increase_note_count_if_public(user, object) {:ok, _user} = ActivityPub.update_last_status_at_if_public(user, object) @@ -209,6 +213,10 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do Object.increase_replies_count(in_reply_to) end + if quote_url = object.data["quoteUrl"] do + Object.increase_quotes_count(quote_url) + end + reply_depth = (meta[:depth] || 0) + 1 # FIXME: Force inReplyTo to replies @@ -222,9 +230,11 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do end end - ConcurrentLimiter.limit(Pleroma.Web.RichMedia.Helpers, fn -> - Task.start(fn -> Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) end) - end) + Pleroma.Web.RichMedia.Card.get_by_activity(activity) + + Pleroma.Search.add_to_index(Map.put(activity, :object, object)) + + Utils.maybe_handle_group_posts(activity) meta = meta @@ -249,11 +259,13 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do Utils.add_announce_to_object(object, announced_object) - if !User.is_internal_user?(user) do - Notification.create_notifications(object) + {:ok, notifications} = Notification.create_notifications(object) - ap_streamer().stream_out(object) - end + if !User.internal?(user), do: ap_streamer().stream_out(object) + + meta = + meta + |> add_notifications(notifications) {:ok, object, meta} end @@ -274,7 +286,11 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do reacted_object = Object.get_by_ap_id(object.data["object"]) Utils.add_emoji_reaction_to_object(object, reacted_object) - Notification.create_notifications(object) + {:ok, notifications} = Notification.create_notifications(object) + + meta = + meta + |> add_notifications(notifications) {:ok, object, meta} end @@ -285,6 +301,7 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do # - Reduce the user note count # - Reduce the reply count # - Stream out the activity + # - Removes posts from search index (if needed) @impl true def handle(%{data: %{"type" => "Delete", "object" => deleted_object}} = object, meta) do deleted_object = @@ -294,9 +311,9 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do result = case deleted_object do %Object{} -> - with {:ok, deleted_object, _activity} <- Object.delete(deleted_object), + with {_, {:ok, deleted_object, _activity}} <- {:object, Object.delete(deleted_object)}, {_, actor} when is_binary(actor) <- {:actor, deleted_object.data["actor"]}, - %User{} = user <- User.get_cached_by_ap_id(actor) do + {_, %User{} = user} <- {:user, User.get_cached_by_ap_id(actor)} do User.remove_pinned_object_id(user, deleted_object.data["id"]) {:ok, user} = ActivityPub.decrease_note_count_if_public(user, deleted_object) @@ -305,6 +322,10 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do Object.decrease_replies_count(in_reply_to) end + if quote_url = deleted_object.data["quoteUrl"] do + Object.decrease_quotes_count(quote_url) + end + MessageReference.delete_for_object(deleted_object) ap_streamer().stream_out(object) @@ -314,6 +335,17 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do {:actor, _} -> @logger.error("The object doesn't have an actor: #{inspect(deleted_object)}") :no_object_actor + + {:user, _} -> + @logger.error( + "The object's actor could not be resolved to a user: #{inspect(deleted_object)}" + ) + + :no_object_user + + {:object, _} -> + @logger.error("The object could not be deleted: #{inspect(deleted_object)}") + {:error, object} end %User{} -> @@ -323,6 +355,11 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do end if result == :ok do + # Only remove from index when deleting actual objects, not users or anything else + with %Pleroma.Object{} <- deleted_object do + Pleroma.Search.remove_from_index(deleted_object) + end + {:ok, object, meta} else {:error, result} @@ -428,37 +465,13 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do end if orig_object_data["type"] in Pleroma.Constants.updatable_object_types() do - %{ - updated_data: updated_object_data, - updated: updated, - used_history_in_new_object?: used_history_in_new_object? - } = Object.Updater.make_new_object_data_from_update_object(orig_object_data, updated_object) - - changeset = - orig_object - |> Repo.preload(:hashtags) - |> Object.change(%{data: updated_object_data}) - - with {:ok, new_object} <- Repo.update(changeset), - {:ok, _} <- Object.invalid_object_cache(new_object), - {:ok, _} <- Object.set_cache(new_object), - # The metadata/utils.ex uses the object id for the cache. - {:ok, _} <- Pleroma.Activity.HTML.invalidate_cache_for(new_object.id) do - if used_history_in_new_object? do - with create_activity when not is_nil(create_activity) <- - Pleroma.Activity.get_create_by_object_ap_id(orig_object_ap_id), - {:ok, _} <- Pleroma.Activity.HTML.invalidate_cache_for(create_activity.id) do - nil - else - _ -> nil - end - end + {:ok, _, updated} = + Object.Updater.do_update_and_invalidate_cache(orig_object, updated_object) - if updated do - object - |> Activity.normalize() - |> ActivityPub.notify_and_stream() - end + if updated do + object + |> Activity.normalize() + |> ActivityPub.notify_and_stream() end end @@ -520,7 +533,7 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do end def handle_object_creation(%{"type" => objtype} = object, _activity, meta) - when objtype in ~w[Audio Video Event Article Note Page] do + when objtype in ~w[Audio Video Image Event Article Note Page] do with {:ok, object, meta} <- Pipeline.common_pipeline(object, meta) do {:ok, object, meta} end @@ -574,17 +587,14 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do def handle_undoing(object), do: {:error, ["don't know how to handle", object]} - @spec delete_object(Object.t()) :: :ok | {:error, Ecto.Changeset.t()} + @spec delete_object(Activity.t()) :: :ok | {:error, Ecto.Changeset.t()} defp delete_object(object) do with {:ok, _} <- Repo.delete(object), do: :ok end defp send_notifications(meta) do Keyword.get(meta, :notifications, []) - |> Enum.each(fn notification -> - Streamer.stream(["user", "user:notification"], notification) - Push.send(notification) - end) + |> Notification.send() meta end diff --git a/lib/pleroma/web/activity_pub/side_effects/handling.ex b/lib/pleroma/web/activity_pub/side_effects/handling.ex @@ -4,5 +4,5 @@ defmodule Pleroma.Web.ActivityPub.SideEffects.Handling do @callback handle(map(), keyword()) :: {:ok, map(), keyword()} | {:error, any()} - @callback handle_after_transaction(map()) :: map() + @callback handle_after_transaction(keyword()) :: keyword() end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -20,11 +20,9 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.ActivityPub.Visibility alias Pleroma.Web.Federator - alias Pleroma.Workers.TransmogrifierWorker import Ecto.Query - require Logger require Pleroma.Constants @doc """ @@ -156,8 +154,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do |> Map.put("context", replied_object.data["context"] || object["conversation"]) |> Map.drop(["conversation", "inReplyToAtomUri"]) else - e -> - Logger.warn("Couldn't fetch #{inspect(in_reply_to_id)}, error: #{inspect(e)}") + _ -> object end else @@ -167,6 +164,26 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do def fix_in_reply_to(object, _options), do: object + def fix_quote_url_and_maybe_fetch(object, options \\ []) do + quote_url = + case Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes.fix_quote_url(object) do + %{"quoteUrl" => quote_url} -> quote_url + _ -> nil + end + + with {:quoting?, true} <- {:quoting?, not is_nil(quote_url)}, + {:ok, quoted_object} <- get_obj_helper(quote_url, options), + %Activity{} <- Activity.get_create_by_object_ap_id(quoted_object.data["id"]) do + Map.put(object, "quoteUrl", quoted_object.data["id"]) + else + {:quoting?, _} -> + object + + _ -> + object + end + end + defp prepare_in_reply_to(in_reply_to) do cond do is_bitstring(in_reply_to) -> @@ -447,7 +464,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do %{"type" => "Create", "object" => %{"type" => objtype, "id" => obj_id}} = data, options ) - when objtype in ~w{Question Answer ChatMessage Audio Video Event Article Note Page} do + when objtype in ~w{Question Answer ChatMessage Audio Video Event Article Note Page Image} do fetch_options = Keyword.put(options, :depth, (options[:depth] || 0) + 1) object = @@ -455,6 +472,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do |> strip_internal_fields() |> fix_type(fetch_options) |> fix_in_reply_to(fetch_options) + |> fix_quote_url_and_maybe_fetch(fetch_options) data = Map.put(data, "object", object) options = Keyword.put(options, :local, false) @@ -630,6 +648,16 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do def set_reply_to_uri(obj), do: obj @doc """ + Fedibird compatibility + https://github.com/fedibird/mastodon/commit/dbd7ae6cf58a92ec67c512296b4daaea0d01e6ac + """ + def set_quote_url(%{"quoteUrl" => quote_url} = object) when is_binary(quote_url) do + Map.put(object, "quoteUri", quote_url) + end + + def set_quote_url(obj), do: obj + + @doc """ Serialized Mastodon-compatible `replies` collection containing _self-replies_. Based on Mastodon's ActivityPub::NoteSerializer#replies. """ @@ -683,6 +711,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do |> prepare_attachments |> set_conversation |> set_reply_to_uri + |> set_quote_url |> set_replies |> strip_internal_fields |> strip_internal_tags @@ -750,7 +779,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do |> Object.normalize(fetch: false) data = - if Visibility.is_private?(object) && object.data["actor"] == ap_id do + if Visibility.private?(object) && object.data["actor"] == ap_id do data |> Map.put("object", object |> Map.get(:data) |> prepare_object) else data |> maybe_fix_object_url @@ -820,8 +849,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do relative_object do Map.put(data, "object", external_url) else - {:fetch, e} -> - Logger.error("Couldn't fetch #{object} #{inspect(e)}") + {:fetch, _} -> data _ -> @@ -946,47 +974,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do defp strip_internal_tags(object), do: object - def perform(:user_upgrade, user) do - # we pass a fake user so that the followers collection is stripped away - old_follower_address = User.ap_followers(%User{nickname: user.nickname}) - - from( - a in Activity, - where: ^old_follower_address in a.recipients, - update: [ - set: [ - recipients: - fragment( - "array_replace(?,?,?)", - a.recipients, - ^old_follower_address, - ^user.follower_address - ) - ] - ] - ) - |> Repo.update_all([]) - end - - def upgrade_user_from_ap_id(ap_id) do - with %User{local: false} = user <- User.get_cached_by_ap_id(ap_id), - {:ok, data} <- ActivityPub.fetch_and_prepare_user_from_ap_id(ap_id), - {:ok, user} <- update_user(user, data) do - {:ok, _pid} = Task.start(fn -> ActivityPub.pinned_fetch_task(user) end) - TransmogrifierWorker.enqueue("user_upgrade", %{"user_id" => user.id}) - {:ok, user} - else - %User{} = user -> {:ok, user} - e -> e - end - end - - defp update_user(user, data) do - user - |> User.remote_user_changeset(data) - |> User.update_and_set_cache() - end - def maybe_fix_user_url(%{"url" => url} = data) when is_map(url) do Map.put(data, "url", url["href"]) end diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do alias Ecto.UUID alias Pleroma.Activity alias Pleroma.Config + alias Pleroma.EctoType.ActivityPub.ObjectValidators.ObjectID alias Pleroma.Maps alias Pleroma.Notification alias Pleroma.Object @@ -31,7 +32,8 @@ defmodule Pleroma.Web.ActivityPub.Utils do "Page", "Question", "Answer", - "Audio" + "Audio", + "Image" ] @strip_status_report_states ~w(closed resolved) @supported_report_states ~w(open closed resolved) @@ -165,7 +167,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do with true <- Config.get!([:instance, :federating]), true <- type != "Block" || outgoing_blocks, - false <- Visibility.is_local_public?(activity) do + false <- Visibility.local_public?(activity) do Pleroma.Web.Federator.publish(activity) end @@ -275,7 +277,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do object_actor = User.get_cached_by_ap_id(object_actor_id) to = - if Visibility.is_public?(object) do + if Visibility.public?(object) do [actor.follower_address, object.data["actor"]] else [object.data["actor"]] @@ -325,21 +327,29 @@ defmodule Pleroma.Web.ActivityPub.Utils do {:ok, Object.t()} | {:error, Ecto.Changeset.t()} def add_emoji_reaction_to_object( - %Activity{data: %{"content" => emoji, "actor" => actor}}, + %Activity{data: %{"content" => emoji, "actor" => actor}} = activity, object ) do reactions = get_cached_emoji_reactions(object) + emoji = Pleroma.Emoji.maybe_strip_name(emoji) + url = maybe_emoji_url(emoji, activity) new_reactions = - case Enum.find_index(reactions, fn [candidate, _] -> emoji == candidate end) do + case Enum.find_index(reactions, fn [candidate, _, candidate_url] -> + if is_nil(candidate_url) do + emoji == candidate + else + url == candidate_url + end + end) do nil -> - reactions ++ [[emoji, [actor]]] + reactions ++ [[emoji, [actor], url]] index -> List.update_at( reactions, index, - fn [emoji, users] -> [emoji, Enum.uniq([actor | users])] end + fn [emoji, users, url] -> [emoji, Enum.uniq([actor | users]), url] end ) end @@ -348,18 +358,40 @@ defmodule Pleroma.Web.ActivityPub.Utils do update_element_in_object("reaction", new_reactions, object, count) end + defp maybe_emoji_url( + name, + %Activity{ + data: %{ + "tag" => [ + %{"type" => "Emoji", "name" => name, "icon" => %{"url" => url}} + ] + } + } + ), + do: url + + defp maybe_emoji_url(_, _), do: nil + def emoji_count(reactions_list) do - Enum.reduce(reactions_list, 0, fn [_, users], acc -> acc + length(users) end) + Enum.reduce(reactions_list, 0, fn [_, users, _], acc -> acc + length(users) end) end def remove_emoji_reaction_from_object( - %Activity{data: %{"content" => emoji, "actor" => actor}}, + %Activity{data: %{"content" => emoji, "actor" => actor}} = activity, object ) do + emoji = Pleroma.Emoji.maybe_strip_name(emoji) reactions = get_cached_emoji_reactions(object) + url = maybe_emoji_url(emoji, activity) new_reactions = - case Enum.find_index(reactions, fn [candidate, _] -> emoji == candidate end) do + case Enum.find_index(reactions, fn [candidate, _, candidate_url] -> + if is_nil(candidate_url) do + emoji == candidate + else + url == candidate_url + end + end) do nil -> reactions @@ -367,9 +399,9 @@ defmodule Pleroma.Web.ActivityPub.Utils do List.update_at( reactions, index, - fn [emoji, users] -> [emoji, List.delete(users, actor)] end + fn [emoji, users, url] -> [emoji, List.delete(users, actor), url] end ) - |> Enum.reject(fn [_, users] -> Enum.empty?(users) end) + |> Enum.reject(fn [_, users, _] -> Enum.empty?(users) end) end count = emoji_count(new_reactions) @@ -377,11 +409,7 @@ defmodule Pleroma.Web.ActivityPub.Utils do end def get_cached_emoji_reactions(object) do - if is_list(object.data["reactions"]) do - object.data["reactions"] - else - [] - end + Object.get_emoji_reactions(object) end @spec add_like_to_object(Activity.t(), Object.t()) :: @@ -489,17 +517,37 @@ defmodule Pleroma.Web.ActivityPub.Utils do def get_latest_reaction(internal_activity_id, %{ap_id: ap_id}, emoji) do %{data: %{"object" => object_ap_id}} = Activity.get_by_id(internal_activity_id) + emoji = Pleroma.Emoji.maybe_quote(emoji) "EmojiReact" |> Activity.Queries.by_type() |> where(actor: ^ap_id) - |> where([activity], fragment("?->>'content' = ?", activity.data, ^emoji)) + |> custom_emoji_discriminator(emoji) |> Activity.Queries.by_object_id(object_ap_id) |> order_by([activity], fragment("? desc nulls last", activity.id)) |> limit(1) |> Repo.one() end + defp custom_emoji_discriminator(query, emoji) do + if String.contains?(emoji, "@") do + stripped = Pleroma.Emoji.maybe_strip_name(emoji) + [name, domain] = String.split(stripped, "@") + domain_pattern = "%/" <> domain <> "/%" + emoji_pattern = Pleroma.Emoji.maybe_quote(name) + + query + |> where([activity], fragment("?->>'content' = ? + AND EXISTS ( + SELECT FROM jsonb_array_elements(?->'tag') elem + WHERE elem->>'id' ILIKE ? + )", activity.data, ^emoji_pattern, activity.data, ^domain_pattern)) + else + query + |> where([activity], fragment("?->>'content' = ?", activity.data, ^emoji)) + end + end + #### Announce-related helpers @doc """ @@ -673,14 +721,18 @@ defmodule Pleroma.Web.ActivityPub.Utils do #### Flag-related helpers @spec make_flag_data(map(), map()) :: map() - def make_flag_data(%{actor: actor, context: context, content: content} = params, additional) do + def make_flag_data( + %{actor: actor, context: context, content: content} = params, + additional + ) do %{ "type" => "Flag", "actor" => actor.ap_id, "content" => content, "object" => build_flag_object(params), "context" => context, - "state" => "open" + "state" => "open", + "rules" => Map.get(params, :rules, nil) } |> Map.merge(additional) end @@ -728,10 +780,9 @@ defmodule Pleroma.Web.ActivityPub.Utils do build_flag_object(object) nil -> - if %Object{} = object = Object.get_by_ap_id(id) do - build_flag_object(object) - else - %{"id" => id, "deleted" => true} + case Object.get_by_ap_id(id) do + %Object{} = object -> build_flag_object(object) + _ -> %{"id" => id, "deleted" => true} end end end @@ -805,9 +856,11 @@ defmodule Pleroma.Web.ActivityPub.Utils do [actor | reported_activities] = activity.data["object"] stripped_activities = - Enum.map(reported_activities, fn - act when is_map(act) -> act["id"] - act when is_binary(act) -> act + Enum.reduce(reported_activities, [], fn act, acc -> + case ObjectID.cast(act) do + {:ok, act} -> [act | acc] + _ -> acc + end end) new_data = put_in(activity.data, ["object"], [actor | stripped_activities]) @@ -885,4 +938,27 @@ defmodule Pleroma.Web.ActivityPub.Utils do |> where([a, object: o], fragment("(?)->>'type' = 'Answer'", o.data)) |> Repo.all() end + + def maybe_handle_group_posts(activity) do + poster = User.get_cached_by_ap_id(activity.actor) + + mentions = + activity.data["to"] + |> Enum.filter(&(&1 != activity.actor)) + + mentioned_local_groups = + User.get_all_by_ap_id(mentions) + |> Enum.filter(fn user -> + user.actor_type == "Group" and + user.local and + not User.blocks?(user, poster) + end) + + mentioned_local_groups + |> Enum.each(fn group -> + Pleroma.Web.CommonAPI.repeat(activity.id, group) + end) + + :ok + end end diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex @@ -46,6 +46,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do "following" => "#{user.ap_id}/following", "followers" => "#{user.ap_id}/followers", "inbox" => "#{user.ap_id}/inbox", + "outbox" => "#{user.ap_id}/outbox", "name" => "Pleroma", "summary" => "An internal service actor for this Pleroma instance. No user-serviceable parts inside.", @@ -66,8 +67,13 @@ defmodule Pleroma.Web.ActivityPub.UserView do def render("user.json", %{user: %User{nickname: nil} = user}), do: render("service.json", %{user: user}) - def render("user.json", %{user: %User{nickname: "internal." <> _} = user}), - do: render("service.json", %{user: user}) |> Map.put("preferredUsername", user.nickname) + def render("user.json", %{user: %User{nickname: "internal." <> _} = user}) do + render("service.json", %{user: user}) + |> Map.merge(%{ + "preferredUsername" => user.nickname, + "webfinger" => "acct:#{User.full_nickname(user)}" + }) + end def render("user.json", %{user: user}) do {:ok, _, public_key} = Keys.keys_from_pem(user.keys) @@ -120,7 +126,8 @@ defmodule Pleroma.Web.ActivityPub.UserView do "discoverable" => user.is_discoverable, "capabilities" => capabilities, "alsoKnownAs" => user.also_known_as, - "vcard:bday" => birthday + "vcard:bday" => birthday, + "webfinger" => "acct:#{User.full_nickname(user)}" } |> Map.merge(maybe_make_image(&User.avatar_url/2, "icon", user)) |> Map.merge(maybe_make_image(&User.banner_url/2, "image", user)) diff --git a/lib/pleroma/web/activity_pub/visibility.ex b/lib/pleroma/web/activity_pub/visibility.ex @@ -11,28 +11,28 @@ defmodule Pleroma.Web.ActivityPub.Visibility do require Pleroma.Constants - @spec is_public?(Object.t() | Activity.t() | map()) :: boolean() - def is_public?(%Object{data: %{"type" => "Tombstone"}}), do: false - def is_public?(%Object{data: data}), do: is_public?(data) - def is_public?(%Activity{data: %{"type" => "Move"}}), do: true - def is_public?(%Activity{data: data}), do: is_public?(data) - def is_public?(%{"directMessage" => true}), do: false - - def is_public?(data) do + @spec public?(Object.t() | Activity.t() | map()) :: boolean() + def public?(%Object{data: %{"type" => "Tombstone"}}), do: false + def public?(%Object{data: data}), do: public?(data) + def public?(%Activity{data: %{"type" => "Move"}}), do: true + def public?(%Activity{data: data}), do: public?(data) + def public?(%{"directMessage" => true}), do: false + + def public?(data) do Utils.label_in_message?(Pleroma.Constants.as_public(), data) or Utils.label_in_message?(Utils.as_local_public(), data) end - def is_local_public?(%Object{data: data}), do: is_local_public?(data) - def is_local_public?(%Activity{data: data}), do: is_local_public?(data) + def local_public?(%Object{data: data}), do: local_public?(data) + def local_public?(%Activity{data: data}), do: local_public?(data) - def is_local_public?(data) do + def local_public?(data) do Utils.label_in_message?(Utils.as_local_public(), data) and not Utils.label_in_message?(Pleroma.Constants.as_public(), data) end - def is_private?(activity) do - with false <- is_public?(activity), + def private?(activity) do + with false <- public?(activity), %User{follower_address: follower_address} <- User.get_cached_by_ap_id(activity.data["actor"]) do follower_address in activity.data["to"] @@ -41,20 +41,20 @@ defmodule Pleroma.Web.ActivityPub.Visibility do end end - def is_announceable?(activity, user, public \\ true) do - is_public?(activity) || - (!public && is_private?(activity) && activity.data["actor"] == user.ap_id) + def announceable?(activity, user, public \\ true) do + public?(activity) || + (!public && private?(activity) && activity.data["actor"] == user.ap_id) end - def is_direct?(%Activity{data: %{"directMessage" => true}}), do: true - def is_direct?(%Object{data: %{"directMessage" => true}}), do: true + def direct?(%Activity{data: %{"directMessage" => true}}), do: true + def direct?(%Object{data: %{"directMessage" => true}}), do: true - def is_direct?(activity) do - !is_public?(activity) && !is_private?(activity) + def direct?(activity) do + !public?(activity) && !private?(activity) end - def is_list?(%{data: %{"listMessage" => _}}), do: true - def is_list?(_), do: false + def list?(%{data: %{"listMessage" => _}}), do: true + def list?(_), do: false @spec visible_for_user?(Object.t() | Activity.t() | nil, User.t() | nil) :: boolean() def visible_for_user?(%Object{data: %{"type" => "Tombstone"}}, _), do: false @@ -77,7 +77,7 @@ defmodule Pleroma.Web.ActivityPub.Visibility do when module in [Activity, Object] do if restrict_unauthenticated_access?(message), do: false, - else: is_public?(message) and not is_local_public?(message) + else: public?(message) and not local_public?(message) end def visible_for_user?(%{__struct__: module} = message, user) @@ -86,8 +86,8 @@ defmodule Pleroma.Web.ActivityPub.Visibility do y = [message.data["actor"]] ++ message.data["to"] ++ (message.data["cc"] || []) user_is_local = user.local - federatable = not is_local_public?(message) - (is_public?(message) || Enum.any?(x, &(&1 in y))) and (user_is_local || federatable) + federatable = not local_public?(message) + (public?(message) || Enum.any?(x, &(&1 in y))) and (user_is_local || federatable) end def entire_thread_visible_for_user?(%Activity{} = activity, %User{} = user) do diff --git a/lib/pleroma/web/admin_api/controllers/config_controller.ex b/lib/pleroma/web/admin_api/controllers/config_controller.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigController do alias Pleroma.ConfigDB alias Pleroma.Web.Plugs.OAuthScopesPlug - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug(OAuthScopesPlug, %{scopes: ["admin:write"]} when action == :update) plug( @@ -76,7 +76,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigController do json(conn, translate_descriptions(descriptions)) end - def show(conn, %{only_db: true}) do + def show(%{private: %{open_api_spex: %{params: %{only_db: true}}}} = conn, _) do with :ok <- configurable_from_database() do configs = Pleroma.Repo.all(ConfigDB) @@ -128,7 +128,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigController do end end - def update(%{body_params: %{configs: configs}} = conn, _) do + def update(%{private: %{open_api_spex: %{body_params: %{configs: configs}}}} = conn, _) do with :ok <- configurable_from_database() do results = configs diff --git a/lib/pleroma/web/admin_api/controllers/frontend_controller.ex b/lib/pleroma/web/admin_api/controllers/frontend_controller.ex @@ -18,13 +18,24 @@ defmodule Pleroma.Web.AdminAPI.FrontendController do def index(conn, _params) do installed = installed() + # FIrst get frontends from config, + # then add frontends that are installed but not in the config frontends = - [:frontends, :available] - |> Config.get([]) + Config.get([:frontends, :available], []) |> Enum.map(fn {name, desc} -> - Map.put(desc, "installed", name in installed) + desc + |> Map.put("installed", name in installed) + |> Map.put("installed_refs", installed_refs(name)) end) + frontends = + frontends ++ + (installed + |> Enum.filter(fn n -> not Enum.any?(frontends, fn f -> f["name"] == n end) end) + |> Enum.map(fn name -> + %{"name" => name, "installed" => true, "installed_refs" => installed_refs(name)} + end)) + render(conn, "index.json", frontends: frontends) end @@ -43,4 +54,12 @@ defmodule Pleroma.Web.AdminAPI.FrontendController do [] end end + + def installed_refs(name) do + if name in installed() do + File.ls!(Path.join(Pleroma.Frontend.dir(), name)) + else + [] + end + end end diff --git a/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex b/lib/pleroma/web/admin_api/controllers/instance_document_controller.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.AdminAPI.InstanceDocumentController do alias Pleroma.Web.Plugs.InstanceStatic alias Pleroma.Web.Plugs.OAuthScopesPlug - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) action_fallback(Pleroma.Web.AdminAPI.FallbackController) @@ -18,7 +18,7 @@ defmodule Pleroma.Web.AdminAPI.InstanceDocumentController do plug(OAuthScopesPlug, %{scopes: ["admin:read"]} when action == :show) plug(OAuthScopesPlug, %{scopes: ["admin:write"]} when action in [:update, :delete]) - def show(conn, %{name: document_name}) do + def show(%{private: %{open_api_spex: %{params: %{name: document_name}}}} = conn, _) do with {:ok, url} <- InstanceDocument.get(document_name), {:ok, content} <- File.read(InstanceStatic.file_path(url)) do conn @@ -27,13 +27,18 @@ defmodule Pleroma.Web.AdminAPI.InstanceDocumentController do end end - def update(%{body_params: %{file: file}} = conn, %{name: document_name}) do + def update( + %{ + private: %{open_api_spex: %{body_params: %{file: file}, params: %{name: document_name}}} + } = conn, + _ + ) do with {:ok, url} <- InstanceDocument.put(document_name, file.path) do json(conn, %{"url" => url}) end end - def delete(conn, %{name: document_name}) do + def delete(%{private: %{open_api_spex: %{params: %{name: document_name}}}} = conn, _) do with :ok <- InstanceDocument.delete(document_name) do json(conn, %{}) end diff --git a/lib/pleroma/web/admin_api/controllers/invite_controller.ex b/lib/pleroma/web/admin_api/controllers/invite_controller.ex @@ -13,7 +13,7 @@ defmodule Pleroma.Web.AdminAPI.InviteController do require Logger - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug(OAuthScopesPlug, %{scopes: ["admin:read:invites"]} when action == :index) plug( @@ -33,14 +33,14 @@ defmodule Pleroma.Web.AdminAPI.InviteController do end @doc "Create an account registration invite token" - def create(%{body_params: params} = conn, _) do + def create(%{private: %{open_api_spex: %{body_params: params}}} = conn, _) do {:ok, invite} = UserInviteToken.create_invite(params) render(conn, "show.json", invite: invite) end @doc "Revokes invite by token" - def revoke(%{body_params: %{token: token}} = conn, _) do + def revoke(%{private: %{open_api_spex: %{body_params: %{token: token}}}} = conn, _) do with {:ok, invite} <- UserInviteToken.find_by_token(token), {:ok, updated_invite} = UserInviteToken.update_invite(invite, %{used: true}) do render(conn, "show.json", invite: updated_invite) @@ -51,7 +51,13 @@ defmodule Pleroma.Web.AdminAPI.InviteController do end @doc "Sends registration invite via email" - def email(%{assigns: %{user: user}, body_params: %{email: email} = params} = conn, _) do + def email( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{body_params: %{email: email} = params}} + } = conn, + _ + ) do with {_, false} <- {:registrations_open, Config.get([:instance, :registrations_open])}, {_, true} <- {:invites_enabled, Config.get([:instance, :invites_enabled])}, {:ok, invite_token} <- UserInviteToken.create_invite(), diff --git a/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex b/lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex @@ -11,7 +11,7 @@ defmodule Pleroma.Web.AdminAPI.MediaProxyCacheController do @cachex Pleroma.Config.get([:cachex, :provider], Cachex) - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug( OAuthScopesPlug, @@ -27,7 +27,7 @@ defmodule Pleroma.Web.AdminAPI.MediaProxyCacheController do defdelegate open_api_operation(action), to: Spec.MediaProxyCacheOperation - def index(%{assigns: %{user: _}} = conn, params) do + def index(%{assigns: %{user: _}, private: %{open_api_spex: %{params: params}}} = conn, _) do entries = fetch_entries(params) urls = paginate_entries(entries, params.page, params.page_size) @@ -59,12 +59,19 @@ defmodule Pleroma.Web.AdminAPI.MediaProxyCacheController do Enum.slice(entries, offset, page_size) end - def delete(%{assigns: %{user: _}, body_params: %{urls: urls}} = conn, _) do + def delete( + %{assigns: %{user: _}, private: %{open_api_spex: %{body_params: %{urls: urls}}}} = conn, + _ + ) do MediaProxy.remove_from_banned_urls(urls) json(conn, %{}) end - def purge(%{assigns: %{user: _}, body_params: %{urls: urls, ban: ban}} = conn, _) do + def purge( + %{assigns: %{user: _}, private: %{open_api_spex: %{body_params: %{urls: urls, ban: ban}}}} = + conn, + _ + ) do MediaProxy.Invalidation.purge(urls) if ban do diff --git a/lib/pleroma/web/admin_api/controllers/relay_controller.ex b/lib/pleroma/web/admin_api/controllers/relay_controller.ex @@ -11,7 +11,7 @@ defmodule Pleroma.Web.AdminAPI.RelayController do require Logger - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug( OAuthScopesPlug, @@ -31,7 +31,13 @@ defmodule Pleroma.Web.AdminAPI.RelayController do end end - def follow(%{assigns: %{user: admin}, body_params: %{relay_url: target}} = conn, _) do + def follow( + %{ + assigns: %{user: admin}, + private: %{open_api_spex: %{body_params: %{relay_url: target}}} + } = conn, + _ + ) do with {:ok, _message} <- Relay.follow(target) do ModerationLog.insert_log(%{action: "relay_follow", actor: admin, target: target}) @@ -44,7 +50,13 @@ defmodule Pleroma.Web.AdminAPI.RelayController do end end - def unfollow(%{assigns: %{user: admin}, body_params: %{relay_url: target} = params} = conn, _) do + def unfollow( + %{ + assigns: %{user: admin}, + private: %{open_api_spex: %{body_params: %{relay_url: target} = params}} + } = conn, + _ + ) do with {:ok, _message} <- Relay.unfollow(target, %{force: params[:force]}) do ModerationLog.insert_log(%{action: "relay_unfollow", actor: admin, target: target}) diff --git a/lib/pleroma/web/admin_api/controllers/report_controller.ex b/lib/pleroma/web/admin_api/controllers/report_controller.ex @@ -18,7 +18,7 @@ defmodule Pleroma.Web.AdminAPI.ReportController do require Logger - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug(OAuthScopesPlug, %{scopes: ["admin:read:reports"]} when action in [:index, :show]) plug( @@ -31,13 +31,13 @@ defmodule Pleroma.Web.AdminAPI.ReportController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.ReportOperation - def index(conn, params) do + def index(%{private: %{open_api_spex: %{params: params}}} = conn, _) do reports = Utils.get_reports(params, params.page, params.page_size) render(conn, "index.json", reports: reports) end - def show(conn, %{id: id}) do + def show(%{private: %{open_api_spex: %{params: %{id: id}}}} = conn, _) do with %Activity{} = report <- Activity.get_report(id) do render(conn, "show.json", Report.extract_report_info(report)) else @@ -45,7 +45,13 @@ defmodule Pleroma.Web.AdminAPI.ReportController do end end - def update(%{assigns: %{user: admin}, body_params: %{reports: reports}} = conn, _) do + def update( + %{ + assigns: %{user: admin}, + private: %{open_api_spex: %{body_params: %{reports: reports}}} + } = conn, + _ + ) do result = Enum.map(reports, fn report -> case CommonAPI.update_report_state(report.id, report.state) do @@ -73,9 +79,13 @@ defmodule Pleroma.Web.AdminAPI.ReportController do end end - def notes_create(%{assigns: %{user: user}, body_params: %{content: content}} = conn, %{ - id: report_id - }) do + def notes_create( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{body_params: %{content: content}, params: %{id: report_id}}} + } = conn, + _ + ) do with {:ok, _} <- ReportNote.create(user.id, report_id, content), report <- Activity.get_by_id_with_user_actor(report_id) do ModerationLog.insert_log(%{ @@ -92,10 +102,20 @@ defmodule Pleroma.Web.AdminAPI.ReportController do end end - def notes_delete(%{assigns: %{user: user}} = conn, %{ - id: note_id, - report_id: report_id - }) do + def notes_delete( + %{ + assigns: %{user: user}, + private: %{ + open_api_spex: %{ + params: %{ + id: note_id, + report_id: report_id + } + } + } + } = conn, + _ + ) do with {:ok, note} <- ReportNote.destroy(note_id), report <- Activity.get_by_id_with_user_actor(report_id) do ModerationLog.insert_log(%{ diff --git a/lib/pleroma/web/admin_api/controllers/rule_controller.ex b/lib/pleroma/web/admin_api/controllers/rule_controller.ex @@ -0,0 +1,62 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.RuleController do + use Pleroma.Web, :controller + + alias Pleroma.Repo + alias Pleroma.Rule + alias Pleroma.Web.Plugs.OAuthScopesPlug + + import Pleroma.Web.ControllerHelper, + only: [ + json_response: 3 + ] + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + + plug( + OAuthScopesPlug, + %{scopes: ["admin:write"]} + when action in [:create, :update, :delete] + ) + + plug(OAuthScopesPlug, %{scopes: ["admin:read"]} when action == :index) + + action_fallback(AdminAPI.FallbackController) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.RuleOperation + + def index(conn, _) do + rules = + Rule.query() + |> Repo.all() + + render(conn, "index.json", rules: rules) + end + + def create(%{body_params: params} = conn, _) do + rule = + params + |> Rule.create() + + render(conn, "show.json", rule: rule) + end + + def update(%{body_params: params} = conn, %{id: id}) do + rule = + params + |> Rule.update(id) + + render(conn, "show.json", rule: rule) + end + + def delete(conn, %{id: id}) do + with {:ok, _} <- Rule.delete(id) do + json(conn, %{}) + else + _ -> json_response(conn, :bad_request, "") + end + end +end diff --git a/lib/pleroma/web/admin_api/controllers/user_controller.ex b/lib/pleroma/web/admin_api/controllers/user_controller.ex @@ -18,7 +18,7 @@ defmodule Pleroma.Web.AdminAPI.UserController do @users_page_size 50 - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug( OAuthScopesPlug, @@ -51,13 +51,22 @@ defmodule Pleroma.Web.AdminAPI.UserController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.UserOperation - def delete(conn, %{nickname: nickname}) do + def delete(%{private: %{open_api_spex: %{params: %{nickname: nickname}}}} = conn, _) do conn - |> Map.put(:body_params, %{nicknames: [nickname]}) - |> delete(%{}) + |> do_deletes([nickname]) end - def delete(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do + def delete( + %{ + private: %{open_api_spex: %{body_params: %{nicknames: nicknames}}} + } = conn, + _ + ) do + conn + |> do_deletes(nicknames) + end + + defp do_deletes(%{assigns: %{user: admin}} = conn, nicknames) when is_list(nicknames) do users = Enum.map(nicknames, &User.get_cached_by_nickname/1) Enum.each(users, fn user -> @@ -77,9 +86,13 @@ defmodule Pleroma.Web.AdminAPI.UserController do def follow( %{ assigns: %{user: admin}, - body_params: %{ - follower: follower_nick, - followed: followed_nick + private: %{ + open_api_spex: %{ + body_params: %{ + follower: follower_nick, + followed: followed_nick + } + } } } = conn, _ @@ -102,9 +115,13 @@ defmodule Pleroma.Web.AdminAPI.UserController do def unfollow( %{ assigns: %{user: admin}, - body_params: %{ - follower: follower_nick, - followed: followed_nick + private: %{ + open_api_spex: %{ + body_params: %{ + follower: follower_nick, + followed: followed_nick + } + } } } = conn, _ @@ -124,7 +141,13 @@ defmodule Pleroma.Web.AdminAPI.UserController do json(conn, "ok") end - def create(%{assigns: %{user: admin}, body_params: %{users: users}} = conn, _) do + def create( + %{ + assigns: %{user: admin}, + private: %{open_api_spex: %{body_params: %{users: users}}} + } = conn, + _ + ) do changesets = users |> Enum.map(fn %{nickname: nickname, email: email, password: password} -> @@ -178,7 +201,13 @@ defmodule Pleroma.Web.AdminAPI.UserController do end end - def show(%{assigns: %{user: admin}} = conn, %{nickname: nickname}) do + def show( + %{ + assigns: %{user: admin}, + private: %{open_api_spex: %{params: %{nickname: nickname}}} + } = conn, + _ + ) do with %User{} = user <- User.get_cached_by_nickname_or_id(nickname, for: admin) do render(conn, "show.json", %{user: user}) else @@ -186,7 +215,11 @@ defmodule Pleroma.Web.AdminAPI.UserController do end end - def toggle_activation(%{assigns: %{user: admin}} = conn, %{nickname: nickname}) do + def toggle_activation( + %{assigns: %{user: admin}, private: %{open_api_spex: %{params: %{nickname: nickname}}}} = + conn, + _ + ) do user = User.get_cached_by_nickname(nickname) {:ok, updated_user} = User.set_activation(user, !user.is_active) @@ -202,7 +235,13 @@ defmodule Pleroma.Web.AdminAPI.UserController do render(conn, "show.json", user: updated_user) end - def activate(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do + def activate( + %{ + assigns: %{user: admin}, + private: %{open_api_spex: %{body_params: %{nicknames: nicknames}}} + } = conn, + _ + ) do users = Enum.map(nicknames, &User.get_cached_by_nickname/1) {:ok, updated_users} = User.set_activation(users, true) @@ -212,10 +251,16 @@ defmodule Pleroma.Web.AdminAPI.UserController do action: "activate" }) - render(conn, "index.json", users: Keyword.values(updated_users)) + render(conn, "index.json", users: updated_users) end - def deactivate(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do + def deactivate( + %{ + assigns: %{user: admin}, + private: %{open_api_spex: %{body_params: %{nicknames: nicknames}}} + } = conn, + _ + ) do users = Enum.map(nicknames, &User.get_cached_by_nickname/1) {:ok, updated_users} = User.set_activation(users, false) @@ -225,10 +270,16 @@ defmodule Pleroma.Web.AdminAPI.UserController do action: "deactivate" }) - render(conn, "index.json", users: Keyword.values(updated_users)) + render(conn, "index.json", users: updated_users) end - def approve(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do + def approve( + %{ + assigns: %{user: admin}, + private: %{open_api_spex: %{body_params: %{nicknames: nicknames}}} + } = conn, + _ + ) do users = Enum.map(nicknames, &User.get_cached_by_nickname/1) {:ok, updated_users} = User.approve(users) @@ -241,7 +292,13 @@ defmodule Pleroma.Web.AdminAPI.UserController do render(conn, "index.json", users: updated_users) end - def suggest(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do + def suggest( + %{ + assigns: %{user: admin}, + private: %{open_api_spex: %{body_params: %{nicknames: nicknames}}} + } = conn, + _ + ) do users = Enum.map(nicknames, &User.get_cached_by_nickname/1) {:ok, updated_users} = User.set_suggestion(users, true) @@ -254,7 +311,13 @@ defmodule Pleroma.Web.AdminAPI.UserController do render(conn, "index.json", users: updated_users) end - def unsuggest(%{assigns: %{user: admin}, body_params: %{nicknames: nicknames}} = conn, _) do + def unsuggest( + %{ + assigns: %{user: admin}, + private: %{open_api_spex: %{body_params: %{nicknames: nicknames}}} + } = conn, + _ + ) do users = Enum.map(nicknames, &User.get_cached_by_nickname/1) {:ok, updated_users} = User.set_suggestion(users, false) @@ -267,7 +330,7 @@ defmodule Pleroma.Web.AdminAPI.UserController do render(conn, "index.json", users: updated_users) end - def index(conn, params) do + def index(%{private: %{open_api_spex: %{params: params}}} = conn, _) do {page, page_size} = page_params(params) filters = maybe_parse_filters(params[:filters]) diff --git a/lib/pleroma/web/admin_api/views/frontend_view.ex b/lib/pleroma/web/admin_api/views/frontend_view.ex @@ -15,7 +15,8 @@ defmodule Pleroma.Web.AdminAPI.FrontendView do git: frontend["git"], build_url: frontend["build_url"], ref: frontend["ref"], - installed: frontend["installed"] + installed: frontend["installed"], + installed_refs: frontend["installed_refs"] } end end diff --git a/lib/pleroma/web/admin_api/views/report_view.ex b/lib/pleroma/web/admin_api/views/report_view.ex @@ -6,9 +6,11 @@ defmodule Pleroma.Web.AdminAPI.ReportView do use Pleroma.Web, :view alias Pleroma.HTML + alias Pleroma.Rule alias Pleroma.User alias Pleroma.Web.AdminAPI alias Pleroma.Web.AdminAPI.Report + alias Pleroma.Web.AdminAPI.RuleView alias Pleroma.Web.CommonAPI.Utils alias Pleroma.Web.MastodonAPI.StatusView @@ -46,7 +48,8 @@ defmodule Pleroma.Web.AdminAPI.ReportView do as: :activity }), state: report.data["state"], - notes: render(__MODULE__, "index_notes.json", %{notes: report.report_notes}) + notes: render(__MODULE__, "index_notes.json", %{notes: report.report_notes}), + rules: rules(Map.get(report.data, "rules", nil)) } end @@ -71,4 +74,16 @@ defmodule Pleroma.Web.AdminAPI.ReportView do created_at: Utils.to_masto_date(inserted_at) } end + + defp rules(nil) do + [] + end + + defp rules(rule_ids) do + rules = + rule_ids + |> Rule.get() + + render(RuleView, "index.json", rules: rules) + end end diff --git a/lib/pleroma/web/admin_api/views/rule_view.ex b/lib/pleroma/web/admin_api/views/rule_view.ex @@ -0,0 +1,22 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.RuleView do + use Pleroma.Web, :view + + require Pleroma.Constants + + def render("index.json", %{rules: rules} = _opts) do + render_many(rules, __MODULE__, "show.json") + end + + def render("show.json", %{rule: rule} = _opts) do + %{ + id: to_string(rule.id), + priority: rule.priority, + text: rule.text, + hint: rule.hint + } + end +end diff --git a/lib/pleroma/web/api_spec.ex b/lib/pleroma/web/api_spec.ex @@ -10,6 +10,14 @@ defmodule Pleroma.Web.ApiSpec do @behaviour OpenApi + defp streaming_paths do + %{ + "/api/v1/streaming" => %OpenApiSpex.PathItem{ + get: Pleroma.Web.ApiSpec.StreamingOperation.streaming_operation() + } + } + end + @impl OpenApi def spec(opts \\ []) do %OpenApi{ @@ -35,7 +43,7 @@ defmodule Pleroma.Web.ApiSpec do - [Mastodon API documentation](https://docs.joinmastodon.org/client/intro/) - [Differences in Mastodon API responses from vanilla Mastodon](https://docs-develop.pleroma.social/backend/development/API/differences_in_mastoapi_responses/) - Please report such occurences on our [issue tracker](https://git.pleroma.social/pleroma/pleroma/-/issues). Feel free to submit API questions or proposals there too! + Please report such occurrences on our [issue tracker](https://git.pleroma.social/pleroma/pleroma/-/issues). Feel free to submit API questions or proposals there too! """, # Strip environment from the version version: Application.spec(:pleroma, :vsn) |> to_string() |> String.replace(~r/\+.*$/, ""), @@ -45,7 +53,7 @@ defmodule Pleroma.Web.ApiSpec do } }, # populate the paths from a phoenix router - paths: OpenApiSpex.Paths.from_router(Router), + paths: Map.merge(streaming_paths(), OpenApiSpex.Paths.from_router(Router)), components: %OpenApiSpex.Components{ parameters: %{ "accountIdOrNickname" => @@ -86,14 +94,15 @@ defmodule Pleroma.Web.ApiSpec do "tags" => [ "Chat administration", "Emoji pack administration", - "Frontend managment", + "Frontend management", "Instance configuration", "Instance documents", + "Instance rule managment", "Invites", "MediaProxy cache", - "OAuth application managment", + "OAuth application management", "Relays", - "Report managment", + "Report management", "Status administration", "User administration", "Announcement management" @@ -129,7 +138,8 @@ defmodule Pleroma.Web.ApiSpec do "Scheduled statuses", "Search", "Status actions", - "Media attachments" + "Media attachments", + "Bookmark folders" ] }, %{ diff --git a/lib/pleroma/web/api_spec/cast_and_validate.ex b/lib/pleroma/web/api_spec/cast_and_validate.ex @@ -27,10 +27,12 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do @impl Plug - def call(conn, %{operation_id: operation_id, render_error: render_error}) do + def call(conn, %{operation_id: operation_id, render_error: render_error} = opts) do {spec, operation_lookup} = PutApiSpec.get_spec_and_operation_lookup(conn) operation = operation_lookup[operation_id] + cast_opts = opts |> Map.take([:replace_params]) |> Map.to_list() + content_type = case Conn.get_req_header(conn, "content-type") do [header_value | _] -> @@ -44,7 +46,7 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do conn = Conn.put_private(conn, :operation_id, operation_id) - case cast_and_validate(spec, operation, conn, content_type, strict?()) do + case cast_and_validate(spec, operation, conn, content_type, strict?(), cast_opts) do {:ok, conn} -> conn @@ -94,11 +96,11 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do def call(conn, opts), do: OpenApiSpex.Plug.CastAndValidate.call(conn, opts) - defp cast_and_validate(spec, operation, conn, content_type, true = _strict) do - OpenApiSpex.cast_and_validate(spec, operation, conn, content_type) + defp cast_and_validate(spec, operation, conn, content_type, true = _strict, cast_opts) do + OpenApiSpex.cast_and_validate(spec, operation, conn, content_type, cast_opts) end - defp cast_and_validate(spec, operation, conn, content_type, false = _strict) do + defp cast_and_validate(spec, operation, conn, content_type, false = _strict, cast_opts) do case OpenApiSpex.cast_and_validate(spec, operation, conn, content_type) do {:ok, conn} -> {:ok, conn} @@ -123,7 +125,7 @@ defmodule Pleroma.Web.ApiSpec.CastAndValidate do end) conn = %Conn{conn | query_params: query_params} - OpenApiSpex.cast_and_validate(spec, operation, conn, content_type) + OpenApiSpex.cast_and_validate(spec, operation, conn, content_type, cast_opts) end end diff --git a/lib/pleroma/web/api_spec/helpers.ex b/lib/pleroma/web/api_spec/helpers.ex @@ -62,7 +62,7 @@ defmodule Pleroma.Web.ApiSpec.Helpers do Operation.parameter( :with_relationships, :query, - BooleanLike, + BooleanLike.schema(), "Embed relationships into accounts. **If this parameter is not set account's `pleroma.relationship` is going to be `null`.**" ) end diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -11,6 +11,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do alias Pleroma.Web.ApiSpec.Schemas.ActorType alias Pleroma.Web.ApiSpec.Schemas.ApiError alias Pleroma.Web.ApiSpec.Schemas.BooleanLike + alias Pleroma.Web.ApiSpec.Schemas.FlakeID alias Pleroma.Web.ApiSpec.Schemas.List alias Pleroma.Web.ApiSpec.Schemas.Status alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope @@ -122,22 +123,27 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do parameters: [ %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}, - Operation.parameter(:pinned, :query, BooleanLike, "Include only pinned statuses"), + Operation.parameter( + :pinned, + :query, + BooleanLike.schema(), + "Include only pinned statuses" + ), Operation.parameter(:tagged, :query, :string, "With tag"), Operation.parameter( :only_media, :query, - BooleanLike, + BooleanLike.schema(), "Include only statuses with media attached" ), Operation.parameter( :with_muted, :query, - BooleanLike, + BooleanLike.schema(), "Include statuses from muted accounts." ), - Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblogs"), - Operation.parameter(:exclude_replies, :query, BooleanLike, "Exclude replies"), + Operation.parameter(:exclude_reblogs, :query, BooleanLike.schema(), "Exclude reblogs"), + Operation.parameter(:exclude_replies, :query, BooleanLike.schema(), "Exclude replies"), Operation.parameter( :exclude_visibilities, :query, @@ -147,7 +153,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do Operation.parameter( :with_muted, :query, - BooleanLike, + BooleanLike.schema(), "Include reactions from muted accounts." ) ] ++ pagination_params(), @@ -347,7 +353,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do summary: "Endorse", operationId: "AccountController.endorse", security: [%{"oAuth" => ["follow", "write:accounts"]}], - description: "Addds the given account to endorsed accounts list.", + description: "Adds the given account to endorsed accounts list.", parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}], responses: %{ 200 => Operation.response("Relationship", "application/json", AccountRelationship), @@ -452,7 +458,7 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do operationId: "AccountController.blocks", description: "View your blocks. See also accounts/:id/{block,unblock}", security: [%{"oAuth" => ["read:blocks"]}], - parameters: pagination_params(), + parameters: [with_relationships_param() | pagination_params()], responses: %{ 200 => Operation.response("Accounts", "application/json", array_of_accounts()) } @@ -508,6 +514,48 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do } end + def familiar_followers_operation do + %Operation{ + tags: ["Retrieve account information"], + summary: "Followers that you follow", + operationId: "AccountController.familiar_followers", + description: + "Obtain a list of all accounts that follow a given account, filtered for accounts you follow.", + security: [%{"oAuth" => ["read:follows"]}], + parameters: [ + Operation.parameter( + :id, + :query, + %Schema{ + oneOf: [%Schema{type: :array, items: %Schema{type: :string}}, %Schema{type: :string}] + }, + "Account IDs", + example: "123" + ) + ], + responses: %{ + 200 => + Operation.response("Accounts", "application/json", %Schema{ + title: "ArrayOfAccounts", + type: :array, + items: %Schema{ + title: "Account", + type: :object, + properties: %{ + id: FlakeID, + accounts: %Schema{ + title: "ArrayOfAccounts", + type: :array, + items: Account, + example: [Account.schema().example] + } + } + } + }) + } + } + end + defp create_request do %Schema{ title: "AccountCreateRequest", diff --git a/lib/pleroma/web/api_spec/operations/admin/frontend_operation.ex b/lib/pleroma/web/api_spec/operations/admin/frontend_operation.ex @@ -16,7 +16,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.FrontendOperation do def index_operation do %Operation{ - tags: ["Frontend managment"], + tags: ["Frontend management"], summary: "Retrieve a list of available frontends", operationId: "AdminAPI.FrontendController.index", security: [%{"oAuth" => ["admin:read"]}], @@ -29,7 +29,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.FrontendOperation do def install_operation do %Operation{ - tags: ["Frontend managment"], + tags: ["Frontend management"], summary: "Install a frontend", operationId: "AdminAPI.FrontendController.install", security: [%{"oAuth" => ["admin:read"]}], @@ -51,8 +51,9 @@ defmodule Pleroma.Web.ApiSpec.Admin.FrontendOperation do name: %Schema{type: :string}, git: %Schema{type: :string, format: :uri, nullable: true}, build_url: %Schema{type: :string, format: :uri, nullable: true}, - ref: %Schema{type: :string}, - installed: %Schema{type: :boolean} + ref: %Schema{type: :string, nullable: true}, + installed: %Schema{type: :boolean}, + installed_refs: %Schema{type: :array, items: %Schema{type: :string}} } } } diff --git a/lib/pleroma/web/api_spec/operations/admin/o_auth_app_operation.ex b/lib/pleroma/web/api_spec/operations/admin/o_auth_app_operation.ex @@ -17,7 +17,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.OAuthAppOperation do def index_operation do %Operation{ summary: "Retrieve a list of OAuth applications", - tags: ["OAuth application managment"], + tags: ["OAuth application management"], operationId: "AdminAPI.OAuthAppController.index", security: [%{"oAuth" => ["admin:write"]}], parameters: [ @@ -69,7 +69,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.OAuthAppOperation do def create_operation do %Operation{ - tags: ["OAuth application managment"], + tags: ["OAuth application management"], summary: "Create an OAuth application", operationId: "AdminAPI.OAuthAppController.create", requestBody: request_body("Parameters", create_request()), @@ -84,7 +84,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.OAuthAppOperation do def update_operation do %Operation{ - tags: ["OAuth application managment"], + tags: ["OAuth application management"], summary: "Update OAuth application", operationId: "AdminAPI.OAuthAppController.update", parameters: [id_param() | admin_api_params()], @@ -102,7 +102,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.OAuthAppOperation do def delete_operation do %Operation{ - tags: ["OAuth application managment"], + tags: ["OAuth application management"], summary: "Delete OAuth application", operationId: "AdminAPI.OAuthAppController.delete", parameters: [id_param() | admin_api_params()], diff --git a/lib/pleroma/web/api_spec/operations/admin/report_operation.ex b/lib/pleroma/web/api_spec/operations/admin/report_operation.ex @@ -19,7 +19,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do def index_operation do %Operation{ - tags: ["Report managment"], + tags: ["Report management"], summary: "Retrieve a list of reports", operationId: "AdminAPI.ReportController.index", security: [%{"oAuth" => ["admin:read:reports"]}], @@ -31,6 +31,12 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do "Filter by report state" ), Operation.parameter( + :rule_id, + :query, + %Schema{type: :string}, + "Filter by selected rule id" + ), + Operation.parameter( :limit, :query, %Schema{type: :integer}, @@ -69,7 +75,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do def show_operation do %Operation{ - tags: ["Report managment"], + tags: ["Report management"], summary: "Retrieve a report", operationId: "AdminAPI.ReportController.show", parameters: [id_param() | admin_api_params()], @@ -83,7 +89,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do def update_operation do %Operation{ - tags: ["Report managment"], + tags: ["Report management"], summary: "Change state of specified reports", operationId: "AdminAPI.ReportController.update", security: [%{"oAuth" => ["admin:write:reports"]}], @@ -99,7 +105,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do def notes_create_operation do %Operation{ - tags: ["Report managment"], + tags: ["Report management"], summary: "Add a note to the report", operationId: "AdminAPI.ReportController.notes_create", parameters: [id_param() | admin_api_params()], @@ -120,7 +126,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do def notes_delete_operation do %Operation{ - tags: ["Report managment"], + tags: ["Report management"], summary: "Delete note attached to the report", operationId: "AdminAPI.ReportController.notes_delete", parameters: [ @@ -141,7 +147,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do end def id_param do - Operation.parameter(:id, :path, FlakeID, "Report ID", + Operation.parameter(:id, :path, FlakeID.schema(), "Report ID", example: "9umDrYheeY451cQnEe", required: true ) @@ -169,6 +175,17 @@ defmodule Pleroma.Web.ApiSpec.Admin.ReportOperation do inserted_at: %Schema{type: :string, format: :"date-time"} } } + }, + rules: %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + id: %Schema{type: :string}, + text: %Schema{type: :string}, + hint: %Schema{type: :string, nullable: true} + } + } } } } diff --git a/lib/pleroma/web/api_spec/operations/admin/rule_operation.ex b/lib/pleroma/web/api_spec/operations/admin/rule_operation.ex @@ -0,0 +1,115 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.ApiError + + import Pleroma.Web.ApiSpec.Helpers + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def index_operation do + %Operation{ + tags: ["Instance rule managment"], + summary: "Retrieve list of instance rules", + operationId: "AdminAPI.RuleController.index", + security: [%{"oAuth" => ["admin:read"]}], + responses: %{ + 200 => + Operation.response("Response", "application/json", %Schema{ + type: :array, + items: rule() + }), + 403 => Operation.response("Forbidden", "application/json", ApiError) + } + } + end + + def create_operation do + %Operation{ + tags: ["Instance rule managment"], + summary: "Create new rule", + operationId: "AdminAPI.RuleController.create", + security: [%{"oAuth" => ["admin:write"]}], + parameters: admin_api_params(), + requestBody: request_body("Parameters", create_request(), required: true), + responses: %{ + 200 => Operation.response("Response", "application/json", rule()), + 400 => Operation.response("Bad Request", "application/json", ApiError), + 403 => Operation.response("Forbidden", "application/json", ApiError) + } + } + end + + def update_operation do + %Operation{ + tags: ["Instance rule managment"], + summary: "Modify existing rule", + operationId: "AdminAPI.RuleController.update", + security: [%{"oAuth" => ["admin:write"]}], + parameters: [Operation.parameter(:id, :path, :string, "Rule ID")], + requestBody: request_body("Parameters", update_request(), required: true), + responses: %{ + 200 => Operation.response("Response", "application/json", rule()), + 400 => Operation.response("Bad Request", "application/json", ApiError), + 403 => Operation.response("Forbidden", "application/json", ApiError) + } + } + end + + def delete_operation do + %Operation{ + tags: ["Instance rule managment"], + summary: "Delete rule", + operationId: "AdminAPI.RuleController.delete", + parameters: [Operation.parameter(:id, :path, :string, "Rule ID")], + security: [%{"oAuth" => ["admin:write"]}], + responses: %{ + 200 => empty_object_response(), + 404 => Operation.response("Not Found", "application/json", ApiError), + 403 => Operation.response("Forbidden", "application/json", ApiError) + } + } + end + + defp create_request do + %Schema{ + type: :object, + required: [:text], + properties: %{ + priority: %Schema{type: :integer}, + text: %Schema{type: :string}, + hint: %Schema{type: :string} + } + } + end + + defp update_request do + %Schema{ + type: :object, + properties: %{ + priority: %Schema{type: :integer}, + text: %Schema{type: :string}, + hint: %Schema{type: :string} + } + } + end + + defp rule do + %Schema{ + type: :object, + properties: %{ + id: %Schema{type: :string}, + priority: %Schema{type: :integer}, + text: %Schema{type: :string}, + hint: %Schema{type: :string, nullable: true} + } + } + end +end diff --git a/lib/pleroma/web/api_spec/operations/chat_operation.ex b/lib/pleroma/web/api_spec/operations/chat_operation.ex @@ -137,7 +137,12 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do "Deprecated due to no support for pagination. Using [/api/v2/pleroma/chats](#operation/ChatController.index2) instead is recommended.", operationId: "ChatController.index", parameters: [ - Operation.parameter(:with_muted, :query, BooleanLike, "Include chats from muted users") + Operation.parameter( + :with_muted, + :query, + BooleanLike.schema(), + "Include chats from muted users" + ) ], responses: %{ 200 => Operation.response("The chats of the user", "application/json", chats_response()) @@ -156,7 +161,12 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do summary: "Retrieve list of chats", operationId: "ChatController.index2", parameters: [ - Operation.parameter(:with_muted, :query, BooleanLike, "Include chats from muted users") + Operation.parameter( + :with_muted, + :query, + BooleanLike.schema(), + "Include chats from muted users" + ) | pagination_params() ], responses: %{ diff --git a/lib/pleroma/web/api_spec/operations/directory_operation.ex b/lib/pleroma/web/api_spec/operations/directory_operation.ex @@ -29,7 +29,7 @@ defmodule Pleroma.Web.ApiSpec.DirectoryOperation do "Order by recent activity or account creation", required: nil ), - Operation.parameter(:local, :query, BooleanLike, "Include local users only") + Operation.parameter(:local, :query, BooleanLike.schema(), "Include local users only") ] ++ pagination_params(), responses: %{ 200 => diff --git a/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex b/lib/pleroma/web/api_spec/operations/emoji_reaction_operation.ex @@ -21,7 +21,7 @@ defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do summary: "Get an object of emoji to account mappings with accounts that reacted to the post", parameters: [ - Operation.parameter(:id, :path, FlakeID, "Status ID", required: true), + Operation.parameter(:id, :path, FlakeID.schema(), "Status ID", required: true), Operation.parameter(:emoji, :path, :string, "Filter by a single unicode emoji", required: nil ), @@ -45,7 +45,7 @@ defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do tags: ["Emoji reactions"], summary: "React to a post with a unicode emoji", parameters: [ - Operation.parameter(:id, :path, FlakeID, "Status ID", required: true), + Operation.parameter(:id, :path, FlakeID.schema(), "Status ID", required: true), Operation.parameter(:emoji, :path, :string, "A single character unicode emoji", required: true ) @@ -64,7 +64,7 @@ defmodule Pleroma.Web.ApiSpec.EmojiReactionOperation do tags: ["Emoji reactions"], summary: "Remove a reaction to a post with a unicode emoji", parameters: [ - Operation.parameter(:id, :path, FlakeID, "Status ID", required: true), + Operation.parameter(:id, :path, FlakeID.schema(), "Status ID", required: true), Operation.parameter(:emoji, :path, :string, "A single character unicode emoji", required: true ) diff --git a/lib/pleroma/web/api_spec/operations/instance_operation.ex b/lib/pleroma/web/api_spec/operations/instance_operation.ex @@ -23,6 +23,18 @@ defmodule Pleroma.Web.ApiSpec.InstanceOperation do } end + def show2_operation do + %Operation{ + tags: ["Instance misc"], + summary: "Retrieve instance information", + description: "Information about the server", + operationId: "InstanceController.show2", + responses: %{ + 200 => Operation.response("Instance", "application/json", instance2()) + } + } + end + def peers_operation do %Operation{ tags: ["Instance misc"], @@ -34,10 +46,30 @@ defmodule Pleroma.Web.ApiSpec.InstanceOperation do } end + def rules_operation do + %Operation{ + tags: ["Instance misc"], + summary: "Retrieve list of instance rules", + operationId: "InstanceController.rules", + responses: %{ + 200 => Operation.response("Array of domains", "application/json", array_of_rules()) + } + } + end + defp instance do %Schema{ type: :object, properties: %{ + accounts: %Schema{ + type: :object, + properties: %{ + max_featured_tags: %Schema{ + type: :integer, + description: "The maximum number of featured tags allowed for each account." + } + } + }, uri: %Schema{type: :string, description: "The domain name of the instance"}, title: %Schema{type: :string, description: "The title of the website"}, description: %Schema{ @@ -89,7 +121,7 @@ defmodule Pleroma.Web.ApiSpec.InstanceOperation do languages: %Schema{ type: :array, items: %Schema{type: :string}, - description: "Primary langauges of the website and its staff" + description: "Primary languages of the website and its staff" }, registrations: %Schema{type: :boolean, description: "Whether registrations are enabled"}, # Extra (not present in Mastodon): @@ -160,7 +192,186 @@ defmodule Pleroma.Web.ApiSpec.InstanceOperation do "urls" => %{ "streaming_api" => "wss://lain.com" }, - "version" => "2.7.2 (compatible; Pleroma 2.0.50-536-g25eec6d7-develop)" + "version" => "2.7.2 (compatible; Pleroma 2.0.50-536-g25eec6d7-develop)", + "rules" => array_of_rules() + } + } + end + + defp instance2 do + %Schema{ + type: :object, + properties: %{ + domain: %Schema{type: :string, description: "The domain name of the instance"}, + title: %Schema{type: :string, description: "The title of the website"}, + version: %Schema{ + type: :string, + description: "The version of Pleroma installed on the instance" + }, + source_url: %Schema{ + type: :string, + description: "The version of Pleroma installed on the instance" + }, + description: %Schema{ + type: :string, + description: "Admin-defined description of the Pleroma site" + }, + usage: %Schema{ + type: :object, + description: "Instance usage statistics", + properties: %{ + users: %Schema{ + type: :object, + description: "User count statistics", + properties: %{ + active_month: %Schema{ + type: :integer, + description: "Monthly active users" + } + } + } + } + }, + email: %Schema{ + type: :string, + description: "An email that may be contacted for any inquiries", + format: :email + }, + urls: %Schema{ + type: :object, + description: "URLs of interest for clients apps", + properties: %{} + }, + stats: %Schema{ + type: :object, + description: "Statistics about how much information the instance contains", + properties: %{ + user_count: %Schema{ + type: :integer, + description: "Users registered on this instance" + }, + status_count: %Schema{ + type: :integer, + description: "Statuses authored by users on instance" + }, + domain_count: %Schema{ + type: :integer, + description: "Domains federated with this instance" + } + } + }, + thumbnail: %Schema{ + type: :object, + properties: %{ + url: %Schema{ + type: :string, + description: "Banner image for the website", + nullable: true + } + } + }, + languages: %Schema{ + type: :array, + items: %Schema{type: :string}, + description: "Primary languages of the website and its staff" + }, + registrations: %Schema{ + type: :object, + description: "Registrations-related configuration", + properties: %{ + enabled: %Schema{ + type: :boolean, + description: "Whether registrations are enabled" + }, + approval_required: %Schema{ + type: :boolean, + description: "Whether users need to be manually approved by admin" + } + } + }, + configuration: %Schema{ + type: :object, + description: "Instance configuration", + properties: %{ + accounts: %Schema{ + type: :object, + properties: %{ + max_featured_tags: %Schema{ + type: :integer, + description: "The maximum number of featured tags allowed for each account." + }, + max_pinned_statuses: %Schema{ + type: :integer, + description: "The maximum number of pinned statuses for each account." + } + } + }, + urls: %Schema{ + type: :object, + properties: %{ + streaming: %Schema{ + type: :string, + description: "Websockets address for push streaming" + } + } + }, + statuses: %Schema{ + type: :object, + description: "A map with poll limits for local statuses", + properties: %{ + characters_reserved_per_url: %Schema{ + type: :integer, + description: + "Each URL in a status will be assumed to be exactly this many characters." + }, + max_characters: %Schema{ + type: :integer, + description: "Posts character limit (CW/Subject included in the counter)" + }, + max_media_attachments: %Schema{ + type: :integer, + description: "Media attachment limit" + } + } + }, + media_attachments: %Schema{ + type: :object, + description: "A map with poll limits for media attachments", + properties: %{ + image_size_limit: %Schema{ + type: :integer, + description: "File size limit of uploaded images" + }, + video_size_limit: %Schema{ + type: :integer, + description: "File size limit of uploaded videos" + } + } + }, + polls: %Schema{ + type: :object, + description: "A map with poll limits for local polls", + properties: %{ + max_options: %Schema{ + type: :integer, + description: "Maximum number of options." + }, + max_characters_per_option: %Schema{ + type: :integer, + description: "Maximum number of characters per option." + }, + min_expiration: %Schema{ + type: :integer, + description: "Minimum expiration time (in seconds)." + }, + max_expiration: %Schema{ + type: :integer, + description: "Maximum expiration time (in seconds)." + } + } + } + } + } } } end @@ -172,4 +383,18 @@ defmodule Pleroma.Web.ApiSpec.InstanceOperation do example: ["pleroma.site", "lain.com", "bikeshed.party"] } end + + defp array_of_rules do + %Schema{ + type: :array, + items: %Schema{ + type: :object, + properties: %{ + id: %Schema{type: :string}, + text: %Schema{type: :string}, + hint: %Schema{type: :string} + } + } + } + end end diff --git a/lib/pleroma/web/api_spec/operations/notification_operation.ex b/lib/pleroma/web/api_spec/operations/notification_operation.ex @@ -62,7 +62,7 @@ defmodule Pleroma.Web.ApiSpec.NotificationOperation do Operation.parameter( :with_muted, :query, - BooleanLike, + BooleanLike.schema(), "Include the notifications from muted users" ) ] ++ pagination_params(), @@ -202,7 +202,8 @@ defmodule Pleroma.Web.ApiSpec.NotificationOperation do "pleroma:report", "move", "follow_request", - "poll" + "poll", + "status" ], description: """ The type of event that resulted in the notification. @@ -216,6 +217,7 @@ defmodule Pleroma.Web.ApiSpec.NotificationOperation do - `pleroma:emoji_reaction` - Someone reacted with emoji to your status - `pleroma:chat_mention` - Someone mentioned you in a chat message - `pleroma:report` - Someone was reported + - `status` - Someone you are subscribed to created a status """ } end diff --git a/lib/pleroma/web/api_spec/operations/pleroma_account_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_account_operation.ex @@ -142,7 +142,7 @@ defmodule Pleroma.Web.ApiSpec.PleromaAccountOperation do end defp id_param do - Operation.parameter(:id, :path, FlakeID, "Account ID", + Operation.parameter(:id, :path, FlakeID.schema(), "Account ID", example: "9umDrYheeY451cQnEe", required: true ) diff --git a/lib/pleroma/web/api_spec/operations/pleroma_backup_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_backup_operation.ex @@ -64,7 +64,13 @@ defmodule Pleroma.Web.ApiSpec.PleromaBackupOperation do content_type: %Schema{type: :string}, file_name: %Schema{type: :string}, file_size: %Schema{type: :integer}, - processed: %Schema{type: :boolean} + processed: %Schema{type: :boolean, description: "whether this backup has succeeded"}, + state: %Schema{ + type: :string, + description: "the state of the backup", + enum: ["pending", "running", "complete", "failed"] + }, + processed_number: %Schema{type: :integer, description: "the number of records processed"} }, example: %{ "content_type" => "application/zip", @@ -72,7 +78,9 @@ defmodule Pleroma.Web.ApiSpec.PleromaBackupOperation do "https://cofe.fe:4000/media/backups/archive-foobar-20200908T164207-Yr7vuT5Wycv-sN3kSN2iJ0k-9pMo60j9qmvRCdDqIew.zip", "file_size" => 4105, "inserted_at" => "2020-09-08T16:42:07.000Z", - "processed" => true + "processed" => true, + "state" => "complete", + "processed_number" => 20 } } end diff --git a/lib/pleroma/web/api_spec/operations/pleroma_bookmark_folder_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_bookmark_folder_operation.ex @@ -0,0 +1,125 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.PleromaBookmarkFolderOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.ApiError + alias Pleroma.Web.ApiSpec.Schemas.BookmarkFolder + alias Pleroma.Web.ApiSpec.Schemas.FlakeID + + import Pleroma.Web.ApiSpec.Helpers + + @spec open_api_operation(any()) :: any() + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def index_operation do + %Operation{ + tags: ["Bookmark folders"], + summary: "All bookmark folders", + security: [%{"oAuth" => ["read:bookmarks"]}], + operationId: "PleromaAPI.BookmarkFolderController.index", + responses: %{ + 200 => + Operation.response("Array of Bookmark Folders", "application/json", %Schema{ + type: :array, + items: BookmarkFolder + }) + } + } + end + + def create_operation do + %Operation{ + tags: ["Bookmark folders"], + summary: "Create a bookmark folder", + security: [%{"oAuth" => ["write:bookmarks"]}], + operationId: "PleromaAPI.BookmarkFolderController.create", + requestBody: request_body("Parameters", create_request(), required: true), + responses: %{ + 200 => Operation.response("Bookmark Folder", "application/json", BookmarkFolder), + 422 => Operation.response("Error", "application/json", ApiError) + } + } + end + + def update_operation do + %Operation{ + tags: ["Bookmark folders"], + summary: "Update a bookmark folder", + security: [%{"oAuth" => ["write:bookmarks"]}], + operationId: "PleromaAPI.BookmarkFolderController.update", + parameters: [id_param()], + requestBody: request_body("Parameters", update_request(), required: true), + responses: %{ + 200 => Operation.response("Bookmark Folder", "application/json", BookmarkFolder), + 403 => Operation.response("Forbidden", "application/json", ApiError), + 404 => Operation.response("Not Found", "application/json", ApiError), + 422 => Operation.response("Error", "application/json", ApiError) + } + } + end + + def delete_operation do + %Operation{ + tags: ["Bookmark folders"], + summary: "Delete a bookmark folder", + security: [%{"oAuth" => ["write:bookmarks"]}], + operationId: "PleromaAPI.BookmarkFolderController.delete", + parameters: [id_param()], + responses: %{ + 200 => Operation.response("Bookmark Folder", "application/json", BookmarkFolder), + 403 => Operation.response("Forbidden", "application/json", ApiError), + 404 => Operation.response("Not Found", "application/json", ApiError) + } + } + end + + defp create_request do + %Schema{ + title: "BookmarkFolderCreateRequest", + type: :object, + properties: %{ + name: %Schema{ + type: :string, + description: "Folder name" + }, + emoji: %Schema{ + type: :string, + nullable: true, + description: "Folder emoji" + } + } + } + end + + defp update_request do + %Schema{ + title: "BookmarkFolderUpdateRequest", + type: :object, + properties: %{ + name: %Schema{ + type: :string, + nullable: true, + description: "Folder name" + }, + emoji: %Schema{ + type: :string, + nullable: true, + description: "Folder emoji" + } + } + } + end + + def id_param do + Operation.parameter(:id, :path, FlakeID.schema(), "Bookmark Folder ID", + example: "9umDrYheeY451cQnEe", + required: true + ) + end +end diff --git a/lib/pleroma/web/api_spec/operations/pleroma_notification_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_notification_operation.ex @@ -5,7 +5,6 @@ defmodule Pleroma.Web.ApiSpec.PleromaNotificationOperation do alias OpenApiSpex.Operation alias OpenApiSpex.Schema - alias Pleroma.Web.ApiSpec.NotificationOperation alias Pleroma.Web.ApiSpec.Schemas.ApiError import Pleroma.Web.ApiSpec.Helpers @@ -35,12 +34,7 @@ defmodule Pleroma.Web.ApiSpec.PleromaNotificationOperation do Operation.response( "A Notification or array of Notifications", "application/json", - %Schema{ - anyOf: [ - %Schema{type: :array, items: NotificationOperation.notification()}, - NotificationOperation.notification() - ] - } + %Schema{type: :string} ), 400 => Operation.response("Bad Request", "application/json", ApiError) } diff --git a/lib/pleroma/web/api_spec/operations/pleroma_scrobble_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_scrobble_operation.ex @@ -22,7 +22,8 @@ defmodule Pleroma.Web.ApiSpec.PleromaScrobbleOperation do summary: "Creates a new Listen activity for an account", security: [%{"oAuth" => ["write"]}], operationId: "PleromaAPI.ScrobbleController.create", - requestBody: request_body("Parameters", create_request(), requried: true), + deprecated: true, + requestBody: request_body("Parameters", create_request(), required: true), responses: %{ 200 => Operation.response("Scrobble", "application/json", scrobble()) } @@ -34,6 +35,7 @@ defmodule Pleroma.Web.ApiSpec.PleromaScrobbleOperation do tags: ["Scrobbles"], summary: "Requests a list of current and recent Listen activities for an account", operationId: "PleromaAPI.ScrobbleController.index", + deprecated: true, parameters: [ %Reference{"$ref": "#/components/parameters/accountIdOrNickname"} | pagination_params() ], @@ -57,6 +59,7 @@ defmodule Pleroma.Web.ApiSpec.PleromaScrobbleOperation do album: %Schema{type: :string, description: "The album of the media playing"}, artist: %Schema{type: :string, description: "The artist of the media playing"}, length: %Schema{type: :integer, description: "The length of the media playing"}, + externalLink: %Schema{type: :string, description: "A URL referencing the media playing"}, visibility: %Schema{ allOf: [VisibilityScope], default: "public", @@ -67,7 +70,8 @@ defmodule Pleroma.Web.ApiSpec.PleromaScrobbleOperation do "title" => "Some Title", "artist" => "Some Artist", "album" => "Some Album", - "length" => 180_000 + "length" => 180_000, + "externalLink" => "https://www.last.fm/music/Some+Artist/_/Some+Title" } } end @@ -81,6 +85,7 @@ defmodule Pleroma.Web.ApiSpec.PleromaScrobbleOperation do title: %Schema{type: :string, description: "The title of the media playing"}, album: %Schema{type: :string, description: "The album of the media playing"}, artist: %Schema{type: :string, description: "The artist of the media playing"}, + externalLink: %Schema{type: :string, description: "A URL referencing the media playing"}, length: %Schema{ type: :integer, description: "The length of the media playing", @@ -95,6 +100,7 @@ defmodule Pleroma.Web.ApiSpec.PleromaScrobbleOperation do "artist" => "Some Artist", "album" => "Some Album", "length" => 180_000, + "externalLink" => "https://www.last.fm/music/Some+Artist/_/Some+Title", "created_at" => "2019-09-28T12:40:45.000Z" } } diff --git a/lib/pleroma/web/api_spec/operations/pleroma_status_operation.ex b/lib/pleroma/web/api_spec/operations/pleroma_status_operation.ex @@ -0,0 +1,45 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.PleromaStatusOperation do + alias OpenApiSpex.Operation + alias Pleroma.Web.ApiSpec.Schemas.ApiError + alias Pleroma.Web.ApiSpec.Schemas.FlakeID + alias Pleroma.Web.ApiSpec.StatusOperation + + import Pleroma.Web.ApiSpec.Helpers + + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + def quotes_operation do + %Operation{ + tags: ["Retrieve status information"], + summary: "Quoted by", + description: "View quotes for a given status", + operationId: "PleromaAPI.StatusController.quotes", + parameters: [id_param() | pagination_params()], + security: [%{"oAuth" => ["read:statuses"]}], + responses: %{ + 200 => + Operation.response( + "Array of Status", + "application/json", + StatusOperation.array_of_statuses() + ), + 403 => Operation.response("Forbidden", "application/json", ApiError), + 404 => Operation.response("Not Found", "application/json", ApiError) + } + } + end + + def id_param do + Operation.parameter(:id, :path, FlakeID.schema(), "Status ID", + example: "9umDrYheeY451cQnEe", + required: true + ) + end +end diff --git a/lib/pleroma/web/api_spec/operations/poll_operation.ex b/lib/pleroma/web/api_spec/operations/poll_operation.ex @@ -47,7 +47,7 @@ defmodule Pleroma.Web.ApiSpec.PollOperation do end defp id_param do - Operation.parameter(:id, :path, FlakeID, "Poll ID", + Operation.parameter(:id, :path, FlakeID.schema(), "Poll ID", example: "123", required: true ) diff --git a/lib/pleroma/web/api_spec/operations/report_operation.ex b/lib/pleroma/web/api_spec/operations/report_operation.ex @@ -53,6 +53,12 @@ defmodule Pleroma.Web.ApiSpec.ReportOperation do default: false, description: "If the account is remote, should the report be forwarded to the remote admin?" + }, + rule_ids: %Schema{ + type: :array, + nullable: true, + items: %Schema{type: :string}, + description: "Array of rules" } }, required: [:account_id], @@ -60,7 +66,8 @@ defmodule Pleroma.Web.ApiSpec.ReportOperation do "account_id" => "123", "status_ids" => ["1337"], "comment" => "bad status!", - "forward" => "false" + "forward" => "false", + "rule_ids" => ["3"] } } end diff --git a/lib/pleroma/web/api_spec/operations/scheduled_activity_operation.ex b/lib/pleroma/web/api_spec/operations/scheduled_activity_operation.ex @@ -88,7 +88,7 @@ defmodule Pleroma.Web.ApiSpec.ScheduledActivityOperation do end defp id_param do - Operation.parameter(:id, :path, FlakeID, "Poll ID", + Operation.parameter(:id, :path, FlakeID.schema(), "Poll ID", example: "123", required: true ) diff --git a/lib/pleroma/web/api_spec/operations/search_operation.ex b/lib/pleroma/web/api_spec/operations/search_operation.ex @@ -70,7 +70,7 @@ defmodule Pleroma.Web.ApiSpec.SearchOperation do Operation.parameter( :account_id, :query, - FlakeID, + FlakeID.schema(), "If provided, statuses returned will be authored only by this account" ), Operation.parameter( @@ -116,7 +116,7 @@ defmodule Pleroma.Web.ApiSpec.SearchOperation do Operation.parameter( :account_id, :query, - FlakeID, + FlakeID.schema(), "If provided, statuses returned will be authored only by this account" ), Operation.parameter( diff --git a/lib/pleroma/web/api_spec/operations/status_operation.ex b/lib/pleroma/web/api_spec/operations/status_operation.ex @@ -39,7 +39,7 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do Operation.parameter( :with_muted, :query, - BooleanLike, + BooleanLike.schema(), "Include reactions from muted acccounts." ) ], @@ -82,7 +82,7 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do Operation.parameter( :with_muted, :query, - BooleanLike, + BooleanLike.schema(), "Include reactions from muted acccounts." ) ], @@ -256,6 +256,18 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do description: "Privately bookmark a status", operationId: "StatusController.bookmark", parameters: [id_param()], + requestBody: + request_body("Parameters", %Schema{ + title: "StatusUpdateRequest", + type: :object, + properties: %{ + folder_id: %Schema{ + nullable: true, + allOf: [FlakeID], + description: "ID of bookmarks folder, if any" + } + } + }), responses: %{ 200 => status_response() } @@ -430,7 +442,15 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do summary: "Bookmarked statuses", description: "Statuses the user has bookmarked", operationId: "StatusController.bookmarks", - parameters: pagination_params(), + parameters: [ + Operation.parameter( + :folder_id, + :query, + FlakeID.schema(), + "If provided, only display bookmarks from given folder" + ) + | pagination_params() + ], security: [%{"oAuth" => ["read:bookmarks"]}], responses: %{ 200 => Operation.response("Array of Statuses", "application/json", array_of_statuses()) @@ -534,7 +554,7 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do format: :"date-time", nullable: true, description: - "ISO 8601 Datetime at which to schedule a status. Providing this paramter will cause ScheduledStatus to be returned instead of Status. Must be at least 5 minutes in the future." + "ISO 8601 Datetime at which to schedule a status. Providing this parameter will cause ScheduledStatus to be returned instead of Status. Must be at least 5 minutes in the future." }, language: %Schema{ type: :string, @@ -546,7 +566,7 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do allOf: [BooleanLike], nullable: true, description: - "If set to `true` the post won't be actually posted, but the status entitiy would still be rendered back. This could be useful for previewing rich text/custom emoji, for example" + "If set to `true` the post won't be actually posted, but the status entity would still be rendered back. This could be useful for previewing rich text/custom emoji, for example" }, content_type: %Schema{ type: :string, @@ -581,6 +601,11 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do type: :string, description: "Will reply to a given conversation, addressing only the people who are part of the recipient set of that conversation. Sets the visibility to `direct`." + }, + quote_id: %Schema{ + nullable: true, + allOf: [FlakeID], + description: "ID of the status being quoted, if any" } }, example: %{ @@ -680,7 +705,7 @@ defmodule Pleroma.Web.ApiSpec.StatusOperation do end def id_param do - Operation.parameter(:id, :path, FlakeID, "Status ID", + Operation.parameter(:id, :path, FlakeID.schema(), "Status ID", example: "9umDrYheeY451cQnEe", required: true ) diff --git a/lib/pleroma/web/api_spec/operations/streaming_operation.ex b/lib/pleroma/web/api_spec/operations/streaming_operation.ex @@ -0,0 +1,464 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.StreamingOperation do + alias OpenApiSpex.Operation + alias OpenApiSpex.Response + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.NotificationOperation + alias Pleroma.Web.ApiSpec.Schemas.Chat + alias Pleroma.Web.ApiSpec.Schemas.Conversation + alias Pleroma.Web.ApiSpec.Schemas.FlakeID + alias Pleroma.Web.ApiSpec.Schemas.Status + + require Pleroma.Constants + + @spec open_api_operation(atom) :: Operation.t() + def open_api_operation(action) do + operation = String.to_existing_atom("#{action}_operation") + apply(__MODULE__, operation, []) + end + + @spec streaming_operation() :: Operation.t() + def streaming_operation do + %Operation{ + tags: ["Timelines"], + summary: "Establish streaming connection", + description: """ + Receive statuses in real-time via WebSocket. + + You can specify the access token on the query string or through the `sec-websocket-protocol` header. Using + the query string to authenticate is considered unsafe and should not be used unless you have to (e.g. to maintain + your client's compatibility with Mastodon). + + You may specify a stream on the query string. If you do so and you are connecting to a stream that requires logged-in users, + you must specify the access token at the time of the connection (i.e. via query string or header). + + Otherwise, you have the option to authenticate after you have established the connection through client-sent events. + + The "Request body" section below describes what events clients can send through WebSocket, and the "Responses" section + describes what events server will send through WebSocket. + """, + security: [%{"oAuth" => ["read:statuses", "read:notifications"]}], + operationId: "WebsocketHandler.streaming", + parameters: + [ + Operation.parameter(:connection, :header, %Schema{type: :string}, "connection header", + required: true + ), + Operation.parameter(:upgrade, :header, %Schema{type: :string}, "upgrade header", + required: true + ), + Operation.parameter( + :"sec-websocket-key", + :header, + %Schema{type: :string}, + "sec-websocket-key header", + required: true + ), + Operation.parameter( + :"sec-websocket-version", + :header, + %Schema{type: :string}, + "sec-websocket-version header", + required: true + ) + ] ++ stream_params() ++ access_token_params(), + requestBody: request_body("Client-sent events", client_sent_events()), + responses: %{ + 101 => switching_protocols_response(), + 200 => + Operation.response( + "Server-sent events", + "application/json", + server_sent_events() + ) + } + } + end + + defp stream_params do + stream_specifier() + |> Enum.map(fn {name, schema} -> + Operation.parameter(name, :query, schema, get_schema(schema).description) + end) + end + + defp access_token_params do + [ + Operation.parameter(:access_token, :query, token(), token().description), + Operation.parameter(:"sec-websocket-protocol", :header, token(), token().description) + ] + end + + defp switching_protocols_response do + %Response{ + description: "Switching protocols", + headers: %{ + "connection" => %OpenApiSpex.Header{required: true}, + "upgrade" => %OpenApiSpex.Header{required: true}, + "sec-websocket-accept" => %OpenApiSpex.Header{required: true} + } + } + end + + defp server_sent_events do + %Schema{ + oneOf: [ + update_event(), + status_update_event(), + notification_event(), + chat_update_event(), + follow_relationships_update_event(), + conversation_event(), + delete_event(), + pleroma_respond_event() + ] + } + end + + defp stream do + %Schema{ + type: :array, + title: "Stream", + description: """ + The stream identifier. + The first item is the name of the stream. If the stream needs a differentiator, the second item will be the corresponding identifier. + Currently, for the following stream types, there is a second element in the array: + + - `list`: The second element is the id of the list, as a string. + - `hashtag`: The second element is the name of the hashtag. + - `public:remote:media` and `public:remote`: The second element is the domain of the corresponding instance. + """, + maxItems: 2, + minItems: 1, + items: %Schema{type: :string}, + example: ["hashtag", "mew"] + } + end + + defp get_schema(%Schema{} = schema), do: schema + defp get_schema(schema), do: schema.schema + + defp server_sent_event_helper(name, description, type, payload, opts \\ []) do + payload_type = Keyword.get(opts, :payload_type, :json) + has_stream = Keyword.get(opts, :has_stream, true) + + stream_properties = + if has_stream do + %{stream: stream()} + else + %{} + end + + stream_example = if has_stream, do: %{"stream" => get_schema(stream()).example}, else: %{} + + stream_required = if has_stream, do: [:stream], else: [] + + payload_schema = + if payload_type == :json do + %Schema{ + title: "Event payload", + description: "JSON-encoded string of #{get_schema(payload).title}", + allOf: [payload] + } + else + payload + end + + payload_example = + if payload_type == :json do + get_schema(payload).example |> Jason.encode!() + else + get_schema(payload).example + end + + %Schema{ + type: :object, + title: name, + description: description, + required: [:event, :payload] ++ stream_required, + properties: + %{ + event: %Schema{ + title: "Event type", + description: "Type of the event.", + type: :string, + required: true, + enum: [type] + }, + payload: payload_schema + } + |> Map.merge(stream_properties), + example: + %{ + "event" => type, + "payload" => payload_example + } + |> Map.merge(stream_example) + } + end + + defp update_event do + server_sent_event_helper("New status", "A newly-posted status.", "update", Status) + end + + defp status_update_event do + server_sent_event_helper("Edit", "A status that was just edited", "status.update", Status) + end + + defp notification_event do + server_sent_event_helper( + "Notification", + "A new notification.", + "notification", + NotificationOperation.notification() + ) + end + + defp follow_relationships_update_event do + server_sent_event_helper( + "Follow relationships update", + "An update to follow relationships.", + "pleroma:follow_relationships_update", + %Schema{ + type: :object, + title: "Follow relationships update", + required: [:state, :follower, :following], + properties: %{ + state: %Schema{ + type: :string, + description: "Follow state of the relationship.", + enum: ["follow_pending", "follow_accept", "follow_reject", "unfollow"] + }, + follower: %Schema{ + type: :object, + description: "Information about the follower.", + required: [:id, :follower_count, :following_count], + properties: %{ + id: FlakeID, + follower_count: %Schema{type: :integer}, + following_count: %Schema{type: :integer} + } + }, + following: %Schema{ + type: :object, + description: "Information about the following person.", + required: [:id, :follower_count, :following_count], + properties: %{ + id: FlakeID, + follower_count: %Schema{type: :integer}, + following_count: %Schema{type: :integer} + } + } + }, + example: %{ + "state" => "follow_pending", + "follower" => %{ + "id" => "someUser1", + "follower_count" => 1, + "following_count" => 1 + }, + "following" => %{ + "id" => "someUser2", + "follower_count" => 1, + "following_count" => 1 + } + } + } + ) + end + + defp chat_update_event do + server_sent_event_helper( + "Chat update", + "A new chat message.", + "pleroma:chat_update", + Chat + ) + end + + defp conversation_event do + server_sent_event_helper( + "Conversation update", + "An update about a conversation", + "conversation", + Conversation + ) + end + + defp delete_event do + server_sent_event_helper( + "Delete", + "A status that was just deleted.", + "delete", + %Schema{ + type: :string, + title: "Status id", + description: "Id of the deleted status", + allOf: [FlakeID], + example: "some-opaque-id" + }, + payload_type: :string, + has_stream: false + ) + end + + defp pleroma_respond_event do + server_sent_event_helper( + "Server response", + "A response to a client-sent event.", + "pleroma:respond", + %Schema{ + type: :object, + title: "Results", + required: [:result, :type], + properties: %{ + result: %Schema{ + type: :string, + title: "Result of the request", + enum: ["success", "error", "ignored"] + }, + error: %Schema{ + type: :string, + title: "Error code", + description: "An error identifier. Only appears if `result` is `error`." + }, + type: %Schema{ + type: :string, + description: "Type of the request." + } + }, + example: %{"result" => "success", "type" => "pleroma:authenticate"} + }, + has_stream: false + ) + end + + defp client_sent_events do + %Schema{ + oneOf: [ + subscribe_event(), + unsubscribe_event(), + authenticate_event() + ] + } + end + + defp request_body(description, schema, opts \\ []) do + %OpenApiSpex.RequestBody{ + description: description, + content: %{ + "application/json" => %OpenApiSpex.MediaType{ + schema: schema, + example: opts[:example], + examples: opts[:examples] + } + } + } + end + + defp client_sent_event_helper(name, description, type, properties, opts) do + required = opts[:required] || [] + + %Schema{ + type: :object, + title: name, + required: [:type] ++ required, + description: description, + properties: + %{ + type: %Schema{type: :string, enum: [type], description: "Type of the event."} + } + |> Map.merge(properties), + example: opts[:example] + } + end + + defp subscribe_event do + client_sent_event_helper( + "Subscribe", + "Subscribe to a stream.", + "subscribe", + stream_specifier(), + required: [:stream], + example: %{"type" => "subscribe", "stream" => "list", "list" => "1"} + ) + end + + defp unsubscribe_event do + client_sent_event_helper( + "Unsubscribe", + "Unsubscribe from a stream.", + "unsubscribe", + stream_specifier(), + required: [:stream], + example: %{ + "type" => "unsubscribe", + "stream" => "public:remote:media", + "instance" => "example.org" + } + ) + end + + defp authenticate_event do + client_sent_event_helper( + "Authenticate", + "Authenticate via an access token.", + "pleroma:authenticate", + %{ + token: token() + }, + required: [:token] + ) + end + + defp token do + %Schema{ + type: :string, + description: "An OAuth access token with corresponding permissions.", + example: "some token" + } + end + + defp stream_specifier do + %{ + stream: %Schema{ + type: :string, + description: "The name of the stream.", + enum: + Pleroma.Constants.public_streams() ++ + [ + "public:remote", + "public:remote:media", + "user", + "user:pleroma_chat", + "user:notification", + "direct", + "list", + "hashtag" + ] + }, + list: %Schema{ + type: :string, + title: "List id", + description: "The id of the list. Required when `stream` is `list`.", + example: "some-id" + }, + tag: %Schema{ + type: :string, + title: "Hashtag name", + description: "The name of the hashtag. Required when `stream` is `hashtag`.", + example: "mew" + }, + instance: %Schema{ + type: :string, + title: "Domain name", + description: + "Domain name of the instance. Required when `stream` is `public:remote` or `public:remote:media`.", + example: "example.org" + } + } + end +end diff --git a/lib/pleroma/web/api_spec/operations/timeline_operation.ex b/lib/pleroma/web/api_spec/operations/timeline_operation.ex @@ -176,7 +176,12 @@ defmodule Pleroma.Web.ApiSpec.TimelineOperation do end defp with_muted_param do - Operation.parameter(:with_muted, :query, BooleanLike, "Include activities by muted users") + Operation.parameter( + :with_muted, + :query, + BooleanLike.schema(), + "Include activities by muted users" + ) end defp exclude_visibilities_param do diff --git a/lib/pleroma/web/api_spec/operations/twitter_util_operation.ex b/lib/pleroma/web/api_spec/operations/twitter_util_operation.ex @@ -87,7 +87,7 @@ defmodule Pleroma.Web.ApiSpec.TwitterUtilOperation do defp change_password_request do %Schema{ title: "ChangePasswordRequest", - description: "POST body for changing the account's passowrd", + description: "POST body for changing the account's password", type: :object, required: [:password, :new_password, :new_password_confirmation], properties: %{ @@ -136,23 +136,23 @@ defmodule Pleroma.Web.ApiSpec.TwitterUtilOperation do } end - def update_notificaton_settings_operation do + def update_notification_settings_operation do %Operation{ tags: ["Settings"], summary: "Update Notification Settings", security: [%{"oAuth" => ["write:accounts"]}], - operationId: "UtilController.update_notificaton_settings", + operationId: "UtilController.update_notification_settings", parameters: [ Operation.parameter( :block_from_strangers, :query, - BooleanLike, + BooleanLike.schema(), "blocks notifications from accounts you do not follow" ), Operation.parameter( :hide_notification_contents, :query, - BooleanLike, + BooleanLike.schema(), "removes the contents of a message from the push notification" ) ], diff --git a/lib/pleroma/web/api_spec/schemas/attachment.ex b/lib/pleroma/web/api_spec/schemas/attachment.ex @@ -11,7 +11,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Attachment do title: "Attachment", description: "Represents a file or media attachment that can be added to a status.", type: :object, - requried: [:id, :url, :preview_url], + required: [:id, :url, :preview_url], properties: %{ id: %Schema{type: :string, description: "The ID of the attachment in the database."}, url: %Schema{ diff --git a/lib/pleroma/web/api_spec/schemas/bookmark_folder.ex b/lib/pleroma/web/api_spec/schemas/bookmark_folder.ex @@ -0,0 +1,26 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Schemas.BookmarkFolder do + alias OpenApiSpex.Schema + alias Pleroma.Web.ApiSpec.Schemas.FlakeID + + require OpenApiSpex + + OpenApiSpex.schema(%{ + title: "BookmarkFolder", + description: "Response schema for a bookmark folder", + type: :object, + properties: %{ + id: FlakeID, + name: %Schema{type: :string, description: "Folder name"}, + emoji: %Schema{type: :string, description: "Folder emoji", nullable: true} + }, + example: %{ + "id" => "9toJCu5YZW7O7gfvH6", + "name" => "Read later", + "emoji" => nil + } + }) +end diff --git a/lib/pleroma/web/api_spec/schemas/poll.ex b/lib/pleroma/web/api_spec/schemas/poll.ex @@ -56,6 +56,15 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Poll do } }, description: "Possible answers for the poll." + }, + pleroma: %Schema{ + type: :object, + properties: %{ + non_anonymous: %Schema{ + type: :boolean, + description: "Can voters be publicly identified?" + } + } } }, example: %{ @@ -79,7 +88,10 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Poll do votes_count: 4 } ], - emojis: [] + emojis: [], + pleroma: %{ + non_anonymous: false + } } }) end diff --git a/lib/pleroma/web/api_spec/schemas/status.ex b/lib/pleroma/web/api_spec/schemas/status.ex @@ -58,6 +58,10 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do format: :uri, description: "Preview thumbnail" }, + image_description: %Schema{ + type: :string, + description: "Alternate text that describes what is in the thumbnail" + }, title: %Schema{type: :string, description: "Title of linked resource"}, description: %Schema{type: :string, description: "Description of preview"} } @@ -193,6 +197,30 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do nullable: true, description: "The `acct` property of User entity for replied user (if any)" }, + quote: %Schema{ + allOf: [%OpenApiSpex.Reference{"$ref": "#/components/schemas/Status"}], + nullable: true, + description: "Quoted status (if any)" + }, + quote_id: %Schema{ + nullable: true, + allOf: [FlakeID], + description: "ID of the status being quoted, if any" + }, + quote_url: %Schema{ + type: :string, + format: :uri, + nullable: true, + description: "URL of the quoted status" + }, + quote_visible: %Schema{ + type: :boolean, + description: "`true` if the quoted post is visible to the user" + }, + quotes_count: %Schema{ + type: :integer, + description: "How many statuses quoted this status" + }, local: %Schema{ type: :boolean, description: "`true` if the post was made on the local instance" @@ -347,7 +375,8 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Status do "in_reply_to_account_acct" => nil, "local" => true, "spoiler_text" => %{"text/plain" => ""}, - "thread_muted" => false + "thread_muted" => false, + "quotes_count" => 0 }, "poll" => nil, "reblog" => nil, diff --git a/lib/pleroma/web/api_spec/scopes/compiler.ex b/lib/pleroma/web/api_spec/scopes/compiler.ex @@ -0,0 +1,82 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Scopes.Compiler do + defmacro __before_compile__(_env) do + strings = __MODULE__.extract_all_scopes() + + quote do + def placeholder do + unquote do + Enum.map( + strings, + fn string -> + quote do + Pleroma.Web.Gettext.dgettext_noop( + "oauth_scopes", + unquote(string) + ) + end + end + ) + end + end + end + end + + def extract_all_scopes do + extract_all_scopes_from(Pleroma.Web.ApiSpec.spec()) + end + + def extract_all_scopes_from(specs) do + specs.paths + |> Enum.reduce([], fn + {_path, %{} = path_item}, acc -> + extract_routes(path_item) + |> Enum.flat_map(fn operation -> process_operation(operation) end) + |> Kernel.++(acc) + + {_, _}, acc -> + acc + end) + |> Enum.uniq() + end + + defp extract_routes(path_item) do + path_item + |> Map.from_struct() + |> Enum.map(fn {_method, path_item} -> path_item end) + |> Enum.filter(fn + %OpenApiSpex.Operation{} = _operation -> true + _ -> false + end) + end + + defp process_operation(operation) do + operation.security + |> Kernel.||([]) + |> Enum.flat_map(fn + %{"oAuth" => scopes} -> process_scopes(scopes) + _ -> [] + end) + end + + defp process_scopes(scopes) do + scopes + |> Enum.flat_map(fn scope -> + process_scope(scope) + end) + end + + def process_scope(scope) do + hierarchy = String.split(scope, ":") + + {_, list} = + Enum.reduce(hierarchy, {"", []}, fn comp, {cur, list} -> + {cur <> comp <> ":", [cur <> comp | list]} + end) + + list + end +end diff --git a/lib/pleroma/web/api_spec/scopes/translator.ex b/lib/pleroma/web/api_spec/scopes/translator.ex @@ -0,0 +1,10 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Scopes.Translator do + require Pleroma.Web.ApiSpec.Scopes.Compiler + require Pleroma.Web.Gettext + + @before_compile Pleroma.Web.ApiSpec.Scopes.Compiler +end diff --git a/lib/pleroma/web/auth/authenticator.ex b/lib/pleroma/web/auth/authenticator.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Web.Auth.Authenticator do @callback get_user(Plug.Conn.t()) :: {:ok, user :: struct()} | {:error, any()} @callback create_from_registration(Plug.Conn.t(), registration :: struct()) :: - {:ok, User.t()} | {:error, any()} + {:ok, Pleroma.User.t()} | {:error, any()} @callback get_registration(Plug.Conn.t()) :: {:ok, registration :: struct()} | {:error, any()} @callback handle_error(Plug.Conn.t(), any()) :: any() @callback auth_template() :: String.t() | nil diff --git a/lib/pleroma/web/common_api.ex b/lib/pleroma/web/common_api.ex @@ -8,6 +8,7 @@ defmodule Pleroma.Web.CommonAPI do alias Pleroma.Formatter alias Pleroma.ModerationLog alias Pleroma.Object + alias Pleroma.Rule alias Pleroma.ThreadMute alias Pleroma.User alias Pleroma.UserRelationship @@ -33,6 +34,7 @@ defmodule Pleroma.Web.CommonAPI do def post_chat_message(%User{} = user, %User{} = recipient, content, opts \\ []) do with maybe_attachment <- opts[:media_id] && Object.get_by_id(opts[:media_id]), + :ok <- validate_chat_attachment_attribution(maybe_attachment, user), :ok <- validate_chat_content_length(content, !!maybe_attachment), {_, {:ok, chat_message_data, _meta}} <- {:build_object, @@ -71,6 +73,17 @@ defmodule Pleroma.Web.CommonAPI do text end + defp validate_chat_attachment_attribution(nil, _), do: :ok + + defp validate_chat_attachment_attribution(attachment, user) do + with :ok <- Object.authorize_access(attachment, user) do + :ok + else + e -> + e + end + end + defp validate_chat_content_length(_, true), do: :ok defp validate_chat_content_length(nil, false), do: {:error, :no_content} @@ -142,7 +155,7 @@ defmodule Pleroma.Web.CommonAPI do def delete(activity_id, user) do with {_, %Activity{data: %{"object" => _, "type" => "Create"}} = activity} <- - {:find_activity, Activity.get_by_id(activity_id)}, + {:find_activity, Activity.get_by_id(activity_id, filter: [])}, {_, %Object{} = object, _} <- {:find_object, Object.normalize(activity, fetch: false), activity}, true <- User.privileged?(user, :messages_delete) || user.ap_id == object.data["actor"], @@ -360,7 +373,7 @@ defmodule Pleroma.Web.CommonAPI do do: visibility in ~w(public unlisted) def public_announce?(object, _) do - Visibility.is_public?(object) + Visibility.public?(object) end def get_visibility(_, _, %Participation{}), do: {"direct", "direct"} @@ -488,12 +501,12 @@ defmodule Pleroma.Web.CommonAPI do end defp activity_is_public(activity) do - with false <- Visibility.is_public?(activity) do + with false <- Visibility.public?(activity) do {:error, :visibility_error} end end - @spec unpin(String.t(), User.t()) :: {:ok, User.t()} | {:error, term()} + @spec unpin(String.t(), User.t()) :: {:ok, Activity.t()} | {:error, term()} def unpin(id, user) do with %Activity{} = activity <- create_activity_by_id(id), {:ok, unpin_data, _} <- Builder.unpin(user, activity.object), @@ -538,7 +551,7 @@ defmodule Pleroma.Web.CommonAPI do remove_mute(user, activity) else {what, result} = error -> - Logger.warn( + Logger.warning( "CommonAPI.remove_mute/2 failed. #{what}: #{result}, user_id: #{user_id}, activity_id: #{activity_id}" ) @@ -556,14 +569,16 @@ defmodule Pleroma.Web.CommonAPI do def report(user, data) do with {:ok, account} <- get_reported_account(data.account_id), {:ok, {content_html, _, _}} <- make_report_content_html(data[:comment]), - {:ok, statuses} <- get_report_statuses(account, data) do + {:ok, statuses} <- get_report_statuses(account, data), + rules <- get_report_rules(Map.get(data, :rule_ids, nil)) do ActivityPub.flag(%{ context: Utils.generate_context_id(), actor: user, account: account, statuses: statuses, content: content_html, - forward: Map.get(data, :forward, false) + forward: Map.get(data, :forward, false), + rules: rules }) end end @@ -575,6 +590,15 @@ defmodule Pleroma.Web.CommonAPI do end end + defp get_report_rules(nil) do + nil + end + + defp get_report_rules(rule_ids) do + rule_ids + |> Enum.filter(&Rule.exists?/1) + end + def update_report_state(activity_ids, state) when is_list(activity_ids) do case Utils.update_report_state(activity_ids, state) do :ok -> {:ok, activity_ids} @@ -583,7 +607,7 @@ defmodule Pleroma.Web.CommonAPI do end def update_report_state(activity_id, state) do - with %Activity{} = activity <- Activity.get_by_id(activity_id) do + with %Activity{} = activity <- Activity.get_by_id(activity_id, filter: []) do Utils.update_report_state(activity, state) else nil -> {:error, :not_found} diff --git a/lib/pleroma/web/common_api/activity_draft.ex b/lib/pleroma/web/common_api/activity_draft.ex @@ -7,10 +7,14 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do alias Pleroma.Conversation.Participation alias Pleroma.Object alias Pleroma.Web.ActivityPub.Builder + alias Pleroma.Web.ActivityPub.Visibility alias Pleroma.Web.CommonAPI alias Pleroma.Web.CommonAPI.Utils import Pleroma.Web.Gettext + import Pleroma.Web.Utils.Guards, only: [not_empty_string: 1] + + @type t :: %__MODULE__{} defstruct valid?: true, errors: [], @@ -22,6 +26,7 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do attachments: [], in_reply_to: nil, in_reply_to_conversation: nil, + quote_post: nil, visibility: nil, expires_at: nil, extra: nil, @@ -53,7 +58,9 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do |> poll() |> with_valid(&in_reply_to/1) |> with_valid(&in_reply_to_conversation/1) + |> with_valid(&quote_post/1) |> with_valid(&visibility/1) + |> with_valid(&quoting_visibility/1) |> content() |> with_valid(&to_and_cc/1) |> with_valid(&context/1) @@ -78,7 +85,7 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do defp listen_object(draft) do object = draft.params - |> Map.take([:album, :artist, :title, :length]) + |> Map.take([:album, :artist, :title, :length, :externalLink]) |> Map.new(fn {key, value} -> {to_string(key), value} end) |> Map.put("type", "Audio") |> Map.put("to", draft.to) @@ -111,7 +118,7 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do end defp attachments(%{params: params} = draft) do - attachments = Utils.attachments_from_ids(params) + attachments = Utils.attachments_from_ids(params, draft.user) draft = %__MODULE__{draft | attachments: attachments} case Utils.validate_attachments_count(attachments) do @@ -122,8 +129,22 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do defp in_reply_to(%{params: %{in_reply_to_status_id: ""}} = draft), do: draft - defp in_reply_to(%{params: %{in_reply_to_status_id: id}} = draft) when is_binary(id) do - %__MODULE__{draft | in_reply_to: Activity.get_by_id(id)} + defp in_reply_to(%{params: %{in_reply_to_status_id: :deleted}} = draft) do + add_error(draft, dgettext("errors", "Cannot reply to a deleted status")) + end + + defp in_reply_to(%{params: %{in_reply_to_status_id: id} = params} = draft) when is_binary(id) do + activity = Activity.get_by_id(id) + + params = + if is_nil(activity) do + # Deleted activities are returned as nil + Map.put(params, :in_reply_to_status_id, :deleted) + else + Map.put(params, :in_reply_to_status_id, activity) + end + + in_reply_to(%{draft | params: params}) end defp in_reply_to(%{params: %{in_reply_to_status_id: %Activity{} = in_reply_to}} = draft) do @@ -132,6 +153,18 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do defp in_reply_to(draft), do: draft + defp quote_post(%{params: %{quote_id: id}} = draft) when not_empty_string(id) do + case Activity.get_by_id_with_object(id) do + %Activity{} = activity -> + %__MODULE__{draft | quote_post: activity} + + _ -> + draft + end + end + + defp quote_post(draft), do: draft + defp in_reply_to_conversation(draft) do in_reply_to_conversation = Participation.get(draft.params[:in_reply_to_conversation_id]) %__MODULE__{draft | in_reply_to_conversation: in_reply_to_conversation} @@ -147,6 +180,29 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do end end + defp can_quote?(_draft, _object, visibility) when visibility in ~w(public unlisted local) do + true + end + + defp can_quote?(draft, object, "private") do + draft.user.ap_id == object.data["actor"] + end + + defp can_quote?(_, _, _) do + false + end + + defp quoting_visibility(%{quote_post: %Activity{}} = draft) do + with %Object{} = object <- Object.normalize(draft.quote_post, fetch: false), + true <- can_quote?(draft, object, Visibility.get_visibility(object)) do + draft + else + _ -> add_error(draft, dgettext("errors", "Cannot quote private message")) + end + end + + defp quoting_visibility(draft), do: draft + defp expires_at(draft) do case CommonAPI.check_expiry_date(draft.params[:expires_in]) do {:ok, expires_at} -> %__MODULE__{draft | expires_at: expires_at} @@ -164,12 +220,15 @@ defmodule Pleroma.Web.CommonAPI.ActivityDraft do end end - defp content(draft) do + defp content(%{mentions: mentions} = draft) do {content_html, mentioned_users, tags} = Utils.make_content_html(draft) + mentioned_ap_ids = + Enum.map(mentioned_users, fn {_, mentioned_user} -> mentioned_user.ap_id end) + mentions = - mentioned_users - |> Enum.map(fn {_, mentioned_user} -> mentioned_user.ap_id end) + mentions + |> Kernel.++(mentioned_ap_ids) |> Utils.get_addressed_users(draft.params[:to]) %__MODULE__{draft | content_html: content_html, mentions: mentions, tags: tags} diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex @@ -23,21 +23,21 @@ defmodule Pleroma.Web.CommonAPI.Utils do require Logger require Pleroma.Constants - def attachments_from_ids(%{media_ids: ids, descriptions: desc}) do - attachments_from_ids_descs(ids, desc) + def attachments_from_ids(%{media_ids: ids, descriptions: desc}, user) do + attachments_from_ids_descs(ids, desc, user) end - def attachments_from_ids(%{media_ids: ids}) do - attachments_from_ids_no_descs(ids) + def attachments_from_ids(%{media_ids: ids}, user) do + attachments_from_ids_no_descs(ids, user) end - def attachments_from_ids(_), do: [] + def attachments_from_ids(_, _), do: [] - def attachments_from_ids_no_descs([]), do: [] + def attachments_from_ids_no_descs([], _), do: [] - def attachments_from_ids_no_descs(ids) do + def attachments_from_ids_no_descs(ids, user) do Enum.map(ids, fn media_id -> - case get_attachment(media_id) do + case get_attachment(media_id, user) do %Object{data: data} -> data _ -> nil end @@ -45,21 +45,27 @@ defmodule Pleroma.Web.CommonAPI.Utils do |> Enum.reject(&is_nil/1) end - def attachments_from_ids_descs([], _), do: [] + def attachments_from_ids_descs([], _, _), do: [] - def attachments_from_ids_descs(ids, descs_str) do + def attachments_from_ids_descs(ids, descs_str, user) do {_, descs} = Jason.decode(descs_str) Enum.map(ids, fn media_id -> - with %Object{data: data} <- get_attachment(media_id) do + with %Object{data: data} <- get_attachment(media_id, user) do Map.put(data, "name", descs[media_id]) end end) |> Enum.reject(&is_nil/1) end - defp get_attachment(media_id) do - Repo.get(Object, media_id) + defp get_attachment(media_id, user) do + with %Object{data: data} = object <- Repo.get(Object, media_id), + %{"type" => type} when type in Pleroma.Constants.upload_object_types() <- data, + :ok <- Object.authorize_access(object, user) do + object + else + _ -> nil + end end @spec get_to_and_cc(ActivityDraft.t()) :: {list(String.t()), list(String.t())} @@ -103,7 +109,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do def get_to_and_cc(%{visibility: "direct"} = draft) do # If the OP is a DM already, add the implicit actor. - if draft.in_reply_to && Visibility.is_direct?(draft.in_reply_to) do + if draft.in_reply_to && Visibility.direct?(draft.in_reply_to) do {Enum.uniq([draft.in_reply_to.data["actor"] | draft.mentions]), []} else {draft.mentions, []} @@ -145,6 +151,8 @@ defmodule Pleroma.Web.CommonAPI.Utils do when is_list(options) do limits = Config.get([:instance, :poll_limits]) + options = options |> Enum.uniq() + with :ok <- validate_poll_expiration(expires_in, limits), :ok <- validate_poll_options_amount(options, limits), :ok <- validate_poll_options_length(options, limits) do @@ -180,10 +188,15 @@ defmodule Pleroma.Web.CommonAPI.Utils do end defp validate_poll_options_amount(options, %{max_options: max_options}) do - if Enum.count(options) > max_options do - {:error, "Poll can't contain more than #{max_options} options"} - else - :ok + cond do + Enum.count(options) < 2 -> + {:error, "Poll must contain at least 2 options"} + + Enum.count(options) > max_options -> + {:error, "Poll can't contain more than #{max_options} options"} + + true -> + :ok end end @@ -308,13 +321,13 @@ defmodule Pleroma.Web.CommonAPI.Utils do format_asctime(date) else _e -> - Logger.warn("Date #{date} in wrong format, must be ISO 8601") + Logger.warning("Date #{date} in wrong format, must be ISO 8601") "" end end def date_to_asctime(date) do - Logger.warn("Date #{date} in wrong format, must be ISO 8601") + Logger.warning("Date #{date} in wrong format, must be ISO 8601") "" end diff --git a/lib/pleroma/web/controller_helper.ex b/lib/pleroma/web/controller_helper.ex @@ -20,7 +20,7 @@ defmodule Pleroma.Web.ControllerHelper do |> json(json) end - @spec fetch_integer_param(map(), String.t(), integer() | nil) :: integer() | nil + @spec fetch_integer_param(map(), String.t() | atom(), integer() | nil) :: integer() | nil def fetch_integer_param(params, name, default \\ nil) do params |> Map.get(name, default) @@ -53,10 +53,15 @@ defmodule Pleroma.Web.ControllerHelper do end end + # TODO: Only fetch the params from open_api_spex when everything is converted @id_keys Pagination.page_keys() -- ["limit", "order"] defp build_pagination_fields(conn, min_id, max_id, extra_params) do params = - conn.params + if Map.has_key?(conn.private, :open_api_spex) do + get_in(conn, [Access.key(:private), Access.key(:open_api_spex), Access.key(:params)]) + else + conn.params + end |> Map.drop(Map.keys(conn.path_params) |> Enum.map(&String.to_existing_atom/1)) |> Map.merge(extra_params) |> Map.drop(@id_keys) @@ -85,18 +90,15 @@ defmodule Pleroma.Web.ControllerHelper do end end - def assign_account_by_id(conn, _) do - case Pleroma.User.get_cached_by_id(conn.params.id) do + def assign_account_by_id(%{private: %{open_api_spex: %{params: %{id: id}}}} = conn, _) do + case Pleroma.User.get_cached_by_id(id) do %Pleroma.User{} = account -> assign(conn, :account, account) nil -> Pleroma.Web.MastodonAPI.FallbackController.call(conn, {:error, :not_found}) |> halt() end end def try_render(conn, target, params) when is_binary(target) do - case render(conn, target, params) do - nil -> render_error(conn, :not_implemented, "Can't display this activity") - res -> res - end + render(conn, target, params) end def try_render(conn, _, _) do diff --git a/lib/pleroma/web/embed_controller.ex b/lib/pleroma/web/embed_controller.ex @@ -11,12 +11,10 @@ defmodule Pleroma.Web.EmbedController do alias Pleroma.Web.ActivityPub.Visibility - plug(:put_layout, :embed) - def show(conn, %{"id" => id}) do with %Activity{local: true} = activity <- Activity.get_by_id_with_object(id), - true <- Visibility.is_public?(activity.object) do + true <- Visibility.public?(activity.object) do {:ok, author} = User.get_or_fetch(activity.object.data["actor"]) conn diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex @@ -9,7 +9,31 @@ defmodule Pleroma.Web.Endpoint do alias Pleroma.Config - socket("/socket", Pleroma.Web.UserSocket) + socket("/api/v1/streaming", Pleroma.Web.MastodonAPI.WebsocketHandler, + longpoll: false, + websocket: [ + path: "/", + compress: false, + error_handler: {Pleroma.Web.MastodonAPI.WebsocketHandler, :handle_error, []}, + fullsweep_after: 20 + ] + ) + + socket("/socket", Pleroma.Web.UserSocket, + websocket: [ + path: "/websocket", + serializer: [ + {Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"}, + {Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"} + ], + timeout: 60_000, + transport_log: false, + compress: false, + fullsweep_after: 20 + ], + longpoll: false + ) + socket("/live", Phoenix.LiveView.Socket) plug(Plug.Telemetry, event_prefix: [:phoenix, :endpoint]) @@ -19,7 +43,8 @@ defmodule Pleroma.Web.Endpoint do plug(Pleroma.Web.Plugs.HTTPSecurityPlug) plug(Pleroma.Web.Plugs.UploadedMedia) - @static_cache_control "public, no-cache" + @static_cache_control "public, max-age=1209600" + @static_cache_disabled "public, no-cache" # InstanceStatic needs to be before Plug.Static to be able to override shipped-static files # If you're adding new paths to `only:` you'll need to configure them in InstanceStatic as well @@ -30,22 +55,32 @@ defmodule Pleroma.Web.Endpoint do from: :pleroma, only: ["emoji", "images"], gzip: true, - cache_control_for_etags: "public, max-age=1209600", + cache_control_for_etags: @static_cache_control, headers: %{ - "cache-control" => "public, max-age=1209600" + "cache-control" => @static_cache_control } ) plug(Pleroma.Web.Plugs.InstanceStatic, at: "/", gzip: true, - cache_control_for_etags: @static_cache_control, + cache_control_for_etags: @static_cache_disabled, headers: %{ - "cache-control" => @static_cache_control + "cache-control" => @static_cache_disabled + } + ) + + plug(Pleroma.Web.Plugs.FrontendStatic, + at: "/", + frontend_type: :primary, + only: ["index.html"], + gzip: true, + cache_control_for_etags: @static_cache_disabled, + headers: %{ + "cache-control" => @static_cache_disabled } ) - # Careful! No `only` restriction here, as we don't know what frontends contain. plug(Pleroma.Web.Plugs.FrontendStatic, at: "/", frontend_type: :primary, @@ -62,9 +97,9 @@ defmodule Pleroma.Web.Endpoint do at: "/pleroma/admin", frontend_type: :admin, gzip: true, - cache_control_for_etags: @static_cache_control, + cache_control_for_etags: @static_cache_disabled, headers: %{ - "cache-control" => @static_cache_control + "cache-control" => @static_cache_disabled } ) @@ -79,9 +114,9 @@ defmodule Pleroma.Web.Endpoint do only: Pleroma.Constants.static_only_files(), # credo:disable-for-previous-line Credo.Check.Readability.MaxLineLength gzip: true, - cache_control_for_etags: @static_cache_control, + cache_control_for_etags: @static_cache_disabled, headers: %{ - "cache-control" => @static_cache_control + "cache-control" => @static_cache_disabled } ) @@ -101,13 +136,10 @@ defmodule Pleroma.Web.Endpoint do plug(Plug.Logger, log: :debug) plug(Plug.Parsers, - parsers: [ - :urlencoded, - {:multipart, length: {Config, :get, [[:instance, :upload_limit]]}}, - :json - ], + parsers: [:urlencoded, Pleroma.Web.Multipart, :json], pass: ["*/*"], json_decoder: Jason, + # Note: this is compile-time only, won't work for database-config length: Config.get([:instance, :upload_limit]), body_reader: {Pleroma.Web.Plugs.DigestPlug, :read_body, []} ) @@ -141,47 +173,6 @@ defmodule Pleroma.Web.Endpoint do plug(Pleroma.Web.Plugs.RemoteIp) - defmodule Instrumenter do - use Prometheus.PhoenixInstrumenter - end - - defmodule PipelineInstrumenter do - use Prometheus.PlugPipelineInstrumenter - end - - defmodule MetricsExporter do - use Prometheus.PlugExporter - end - - defmodule MetricsExporterCaller do - @behaviour Plug - - def init(opts), do: opts - - def call(conn, opts) do - prometheus_config = Application.get_env(:prometheus, MetricsExporter, []) - ip_whitelist = List.wrap(prometheus_config[:ip_whitelist]) - - cond do - !prometheus_config[:enabled] -> - conn - - ip_whitelist != [] and - !Enum.find(ip_whitelist, fn ip -> - Pleroma.Helpers.InetHelper.parse_address(ip) == {:ok, conn.remote_ip} - end) -> - conn - - true -> - MetricsExporter.call(conn, opts) - end - end - end - - plug(PipelineInstrumenter) - - plug(MetricsExporterCaller) - plug(Pleroma.Web.Router) @doc """ diff --git a/lib/pleroma/web/fallback/redirect_controller.ex b/lib/pleroma/web/fallback/redirect_controller.ex @@ -17,10 +17,28 @@ defmodule Pleroma.Web.Fallback.RedirectController do |> json(%{error: "Not implemented"}) end + def add_generated_metadata(page_content, extra \\ "") do + title = "<title>#{Pleroma.Config.get([:instance, :name])}</title>" + favicon = "<link rel='icon' href='#{Pleroma.Config.get([:instance, :favicon])}'>" + manifest = "<link rel='manifest' href='/manifest.json'>" + + page_content + |> String.replace( + "<!--server-generated-meta-->", + title <> favicon <> manifest <> extra + ) + end + def redirector(conn, _params, code \\ 200) do + {:ok, index_content} = File.read(index_file_path()) + + response = + index_content + |> add_generated_metadata() + conn |> put_resp_content_type("text/html") - |> send_file(code, index_file_path()) + |> send_resp(code, response) end def redirector_with_meta(conn, %{"maybe_nickname_or_id" => maybe_nickname_or_id} = params) do @@ -34,14 +52,12 @@ defmodule Pleroma.Web.Fallback.RedirectController do def redirector_with_meta(conn, params) do {:ok, index_content} = File.read(index_file_path()) - tags = build_tags(conn, params) preloads = preload_data(conn, params) - title = "<title>#{Pleroma.Config.get([:instance, :name])}</title>" response = index_content - |> String.replace("<!--server-generated-meta-->", tags <> preloads <> title) + |> add_generated_metadata(tags <> preloads) conn |> put_resp_content_type("text/html") @@ -55,11 +71,10 @@ defmodule Pleroma.Web.Fallback.RedirectController do def redirector_with_preload(conn, params) do {:ok, index_content} = File.read(index_file_path()) preloads = preload_data(conn, params) - title = "<title>#{Pleroma.Config.get([:instance, :name])}</title>" response = index_content - |> String.replace("<!--server-generated-meta-->", preloads <> title) + |> add_generated_metadata(preloads) conn |> put_resp_content_type("text/html") diff --git a/lib/pleroma/web/federator.ex b/lib/pleroma/web/federator.ex @@ -6,10 +6,9 @@ defmodule Pleroma.Web.Federator do alias Pleroma.Activity alias Pleroma.Object.Containment alias Pleroma.User - alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Publisher alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.ActivityPub.Utils - alias Pleroma.Web.Federator.Publisher alias Pleroma.Workers.PublisherWorker alias Pleroma.Workers.ReceiverWorker @@ -36,6 +35,17 @@ defmodule Pleroma.Web.Federator do end # Client API + def incoming_ap_doc(%{params: params, req_headers: req_headers}) do + ReceiverWorker.enqueue( + "incoming_ap_doc", + %{"req_headers" => req_headers, "params" => params, "timeout" => :timer.seconds(20)}, + priority: 2 + ) + end + + def incoming_ap_doc(%{"type" => "Delete"} = params) do + ReceiverWorker.enqueue("incoming_ap_doc", %{"params" => params}, priority: 3) + end def incoming_ap_doc(params) do ReceiverWorker.enqueue("incoming_ap_doc", %{"params" => params}) @@ -58,10 +68,8 @@ defmodule Pleroma.Web.Federator do # Job Worker Callbacks - @spec perform(atom(), module(), any()) :: {:ok, any()} | {:error, any()} - def perform(:publish_one, module, params) do - apply(module, :publish_one, [params]) - end + @spec perform(atom(), any()) :: {:ok, any()} | {:error, any()} + def perform(:publish_one, params), do: Publisher.publish_one(params) def perform(:publish, activity) do Logger.debug(fn -> "Running publish for #{activity.data["id"]}" end) @@ -80,7 +88,7 @@ defmodule Pleroma.Web.Federator do # NOTE: we use the actor ID to do the containment, this is fine because an # actor shouldn't be acting on objects outside their own AP server. - with {_, {:ok, _user}} <- {:actor, ap_enabled_actor(actor)}, + with {_, {:ok, _user}} <- {:actor, User.get_or_fetch_by_ap_id(actor)}, nil <- Activity.normalize(params["id"]), {_, :ok} <- {:correct_origin?, Containment.contain_origin_from_id(actor, params)}, @@ -110,14 +118,4 @@ defmodule Pleroma.Web.Federator do {:error, e} end end - - def ap_enabled_actor(id) do - user = User.get_cached_by_ap_id(id) - - if User.ap_enabled?(user) do - {:ok, user} - else - ActivityPub.make_user_from_ap_id(id) - end - end end diff --git a/lib/pleroma/web/federator/publisher.ex b/lib/pleroma/web/federator/publisher.ex @@ -1,109 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.Federator.Publisher do - alias Pleroma.Activity - alias Pleroma.Config - alias Pleroma.User - alias Pleroma.Workers.PublisherWorker - - require Logger - - @moduledoc """ - Defines the contract used by federation implementations to publish messages to - their peers. - """ - - @doc """ - Determine whether an activity can be relayed using the federation module. - """ - @callback is_representable?(Pleroma.Activity.t()) :: boolean() - - @doc """ - Relays an activity to a specified peer, determined by the parameters. The - parameters used are controlled by the federation module. - """ - @callback publish_one(Map.t()) :: {:ok, Map.t()} | {:error, any()} - - @doc """ - Enqueue publishing a single activity. - """ - @spec enqueue_one(module(), Map.t()) :: :ok - def enqueue_one(module, %{} = params) do - PublisherWorker.enqueue( - "publish_one", - %{"module" => to_string(module), "params" => params} - ) - end - - @doc """ - Relays an activity to all specified peers. - """ - @callback publish(User.t(), Activity.t()) :: :ok | {:error, any()} - - @spec publish(User.t(), Activity.t()) :: :ok - def publish(%User{} = user, %Activity{} = activity) do - Config.get([:instance, :federation_publisher_modules]) - |> Enum.each(fn module -> - if module.is_representable?(activity) do - Logger.debug("Publishing #{activity.data["id"]} using #{inspect(module)}") - module.publish(user, activity) - end - end) - - :ok - end - - @doc """ - Gathers links used by an outgoing federation module for WebFinger output. - """ - @callback gather_webfinger_links(User.t()) :: list() - - @spec gather_webfinger_links(User.t()) :: list() - def gather_webfinger_links(%User{} = user) do - Config.get([:instance, :federation_publisher_modules]) - |> Enum.reduce([], fn module, links -> - links ++ module.gather_webfinger_links(user) - end) - end - - @doc """ - Gathers nodeinfo protocol names supported by the federation module. - """ - @callback gather_nodeinfo_protocol_names() :: list() - - @spec gather_nodeinfo_protocol_names() :: list() - def gather_nodeinfo_protocol_names do - Config.get([:instance, :federation_publisher_modules]) - |> Enum.reduce([], fn module, links -> - links ++ module.gather_nodeinfo_protocol_names() - end) - end - - @doc """ - Gathers a set of remote users given an IR envelope. - """ - def remote_users(%User{id: user_id}, %{data: %{"to" => to} = data}) do - cc = Map.get(data, "cc", []) - - bcc = - data - |> Map.get("bcc", []) - |> Enum.reduce([], fn ap_id, bcc -> - case Pleroma.List.get_by_ap_id(ap_id) do - %Pleroma.List{user_id: ^user_id} = list -> - {:ok, following} = Pleroma.List.get_following(list) - bcc ++ Enum.map(following, & &1.ap_id) - - _ -> - bcc - end - end) - - [to, cc, bcc] - |> Enum.concat() - |> Enum.map(&User.get_cached_by_ap_id/1) - |> Enum.filter(fn user -> user && !user.local end) - end -end diff --git a/lib/pleroma/web/feed/feed_view.ex b/lib/pleroma/web/feed/feed_view.ex @@ -6,7 +6,6 @@ defmodule Pleroma.Web.Feed.FeedView do use Phoenix.HTML use Pleroma.Web, :view - alias Pleroma.Formatter alias Pleroma.Object alias Pleroma.User alias Pleroma.Web.Gettext @@ -72,7 +71,9 @@ defmodule Pleroma.Web.Feed.FeedView do def last_activity(activities), do: List.last(activities) - def activity_title(%{"content" => content, "summary" => summary} = data, opts \\ %{}) do + def activity_title(%{"content" => content} = data, opts \\ %{}) do + summary = Map.get(data, "summary", "") + title = cond do summary != "" -> summary @@ -81,9 +82,8 @@ defmodule Pleroma.Web.Feed.FeedView do end title - |> Pleroma.Web.Metadata.Utils.scrub_html() - |> Pleroma.Emoji.Formatter.demojify() - |> Formatter.truncate(opts[:max_length], opts[:omission]) + |> Pleroma.Web.Metadata.Utils.scrub_html_and_truncate(opts[:max_length], opts[:omission]) + |> HtmlEntities.encode() end def activity_description(data) do @@ -132,7 +132,7 @@ defmodule Pleroma.Web.Feed.FeedView do |> safe_to_string() end - @spec to_rfc3339(String.t() | NativeDateTime.t()) :: String.t() + @spec to_rfc3339(String.t() | NaiveDateTime.t()) :: String.t() def to_rfc3339(date) when is_binary(date) do date |> Timex.parse!("{ISO:Extended}") @@ -145,7 +145,7 @@ defmodule Pleroma.Web.Feed.FeedView do |> Timex.format!("{RFC3339}") end - @spec to_rfc2822(String.t() | DateTime.t() | NativeDateTime.t()) :: String.t() + @spec to_rfc2822(String.t() | DateTime.t() | NaiveDateTime.t()) :: String.t() def to_rfc2822(datestr) when is_binary(datestr) do datestr |> Timex.parse!("{ISO:Extended}") diff --git a/lib/pleroma/web/gettext.ex b/lib/pleroma/web/gettext.ex @@ -85,12 +85,12 @@ defmodule Pleroma.Web.Gettext do Process.get({Pleroma.Web.Gettext, :locales}, []) end - def is_locale_list(locales) do + def locale_list?(locales) do Enum.all?(locales, &is_binary/1) end def put_locales(locales) do - if is_locale_list(locales) do + if locale_list?(locales) do Process.put({Pleroma.Web.Gettext, :locales}, Enum.uniq(locales)) Gettext.put_locale(Enum.at(locales, 0, Gettext.get_locale())) :ok diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -30,7 +30,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do alias Pleroma.Web.TwitterAPI.TwitterAPI alias Pleroma.Web.Utils.Params - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug(:skip_auth when action in [:create, :lookup]) @@ -72,7 +72,10 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do %{scopes: ["follow", "write:blocks"]} when action in [:block, :unblock] ) - plug(OAuthScopesPlug, %{scopes: ["read:follows"]} when action == :relationships) + plug( + OAuthScopesPlug, + %{scopes: ["read:follows"]} when action in [:relationships, :familiar_followers] + ) plug( OAuthScopesPlug, @@ -92,7 +95,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug( RateLimiter, - [name: :relation_id_action, params: [:id, :uri]] when action in @relationship_actions + [name: :relation_id_action, params: ["id", "uri"]] when action in @relationship_actions ) plug(RateLimiter, [name: :relations_actions] when action in @relationship_actions) @@ -104,7 +107,10 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.AccountOperation @doc "POST /api/v1/accounts" - def create(%{assigns: %{app: app}, body_params: params} = conn, _params) do + def create( + %{assigns: %{app: app}, private: %{open_api_spex: %{body_params: params}}} = conn, + _params + ) do with :ok <- validate_email_param(params), :ok <- TwitterAPI.validate_captcha(app, params), {:ok, user} <- TwitterAPI.register_user(params), @@ -168,7 +174,10 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do end @doc "PATCH /api/v1/accounts/update_credentials" - def update_credentials(%{assigns: %{user: user}, body_params: params} = conn, _params) do + def update_credentials( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: params}}} = conn, + _params + ) do params = params |> Enum.filter(fn {_, value} -> not is_nil(value) end) @@ -235,7 +244,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do # So we first build the normal local changeset, then apply it to the # user data, but don't persist it. With this, we generate the object # data for our update activity. We feed this and the changeset as meta - # inforation into the pipeline, where they will be properly updated and + # information into the pipeline, where they will be properly updated and # federated. with changeset <- User.update_changeset(user, user_params), {:ok, unpersisted_user} <- Ecto.Changeset.apply_action(changeset, :update), @@ -263,6 +272,18 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do {:error, %Ecto.Changeset{errors: [background: {"file is too large", _}]}} -> render_error(conn, :request_entity_too_large, "File is too large") + {:error, %Ecto.Changeset{errors: [{:bio, {_, _}} | _]}} -> + render_error(conn, :request_entity_too_large, "Bio is too long") + + {:error, %Ecto.Changeset{errors: [{:name, {_, _}} | _]}} -> + render_error(conn, :request_entity_too_large, "Name is too long") + + {:error, %Ecto.Changeset{errors: [{:fields, {"invalid", _}} | _]}} -> + render_error(conn, :request_entity_too_large, "One or more field entries are too long") + + {:error, %Ecto.Changeset{errors: [{:fields, {_, _}} | _]}} -> + render_error(conn, :request_entity_too_large, "Too many field entries") + _e -> render_error(conn, :forbidden, "Invalid request") end @@ -277,7 +298,10 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do end @doc "GET /api/v1/accounts/relationships" - def relationships(%{assigns: %{user: user}} = conn, %{id: id}) do + def relationships( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, + _ + ) do targets = User.get_all_by_ids(List.wrap(id)) render(conn, "relationships.json", user: user, targets: targets) @@ -287,7 +311,13 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do def relationships(%{assigns: %{user: _user}} = conn, _), do: json(conn, []) @doc "GET /api/v1/accounts/:id" - def show(%{assigns: %{user: for_user}} = conn, %{id: nickname_or_id} = params) do + def show( + %{ + assigns: %{user: for_user}, + private: %{open_api_spex: %{params: %{id: nickname_or_id} = params}} + } = conn, + _params + ) do with %User{} = user <- User.get_cached_by_nickname_or_id(nickname_or_id, for: for_user), :visible <- User.visible_for(user, for_user) do render(conn, "show.json", @@ -301,7 +331,10 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do end @doc "GET /api/v1/accounts/:id/statuses" - def statuses(%{assigns: %{user: reading_user}} = conn, params) do + def statuses( + %{assigns: %{user: reading_user}, private: %{open_api_spex: %{params: params}}} = conn, + _params + ) do with %User{} = user <- User.get_cached_by_nickname_or_id(params.id, for: reading_user), :visible <- User.visible_for(user, reading_user) do params = @@ -336,7 +369,11 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do end @doc "GET /api/v1/accounts/:id/followers" - def followers(%{assigns: %{user: for_user, account: user}} = conn, params) do + def followers( + %{assigns: %{user: for_user, account: user}, private: %{open_api_spex: %{params: params}}} = + conn, + _params + ) do params = params |> Enum.map(fn {key, value} -> {to_string(key), value} end) @@ -361,7 +398,11 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do end @doc "GET /api/v1/accounts/:id/following" - def following(%{assigns: %{user: for_user, account: user}} = conn, params) do + def following( + %{assigns: %{user: for_user, account: user}, private: %{open_api_spex: %{params: params}}} = + conn, + _params + ) do params = params |> Enum.map(fn {key, value} -> {to_string(key), value} end) @@ -399,7 +440,13 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do {:error, "Can not follow yourself"} end - def follow(%{body_params: params, assigns: %{user: follower, account: followed}} = conn, _) do + def follow( + %{ + assigns: %{user: follower, account: followed}, + private: %{open_api_spex: %{body_params: params}} + } = conn, + _ + ) do with {:ok, follower} <- MastodonAPI.follow(follower, followed, params) do render(conn, "relationship.json", user: follower, target: followed) else @@ -419,7 +466,13 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do end @doc "POST /api/v1/accounts/:id/mute" - def mute(%{assigns: %{user: muter, account: muted}, body_params: params} = conn, _params) do + def mute( + %{ + assigns: %{user: muter, account: muted}, + private: %{open_api_spex: %{body_params: params}} + } = conn, + _params + ) do params = params |> Map.put_new(:duration, Map.get(params, :expires_in, 0)) @@ -460,7 +513,10 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do @doc "POST /api/v1/accounts/:id/note" def note( - %{assigns: %{user: noter, account: target}, body_params: %{comment: comment}} = conn, + %{ + assigns: %{user: noter, account: target}, + private: %{open_api_spex: %{body_params: %{comment: comment}}} + } = conn, _params ) do with {:ok, _user_note} <- UserNote.create(noter, target, comment) do @@ -501,7 +557,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do end @doc "POST /api/v1/follows" - def follow_by_uri(%{body_params: %{uri: uri}} = conn, _) do + def follow_by_uri(%{private: %{open_api_spex: %{body_params: %{uri: uri}}}} = conn, _) do case User.get_cached_by_nickname(uri) do %User{} = user -> conn @@ -540,11 +596,16 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do conn |> add_link_headers(users) - |> render("index.json", users: users, for: user, as: :user) + |> render("index.json", + users: users, + for: user, + as: :user, + embed_relationships: embed_relationships?(params) + ) end @doc "GET /api/v1/accounts/lookup" - def lookup(conn, %{acct: nickname} = _params) do + def lookup(%{private: %{open_api_spex: %{params: %{acct: nickname}}}} = conn, _params) do with %User{} = user <- User.get_by_nickname(nickname) do render(conn, "show.json", user: user, @@ -571,6 +632,35 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do ) end + @doc "GET /api/v1/accounts/familiar_followers" + def familiar_followers( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, + _id + ) do + users = + User.get_all_by_ids(List.wrap(id)) + |> Enum.map(&%{id: &1.id, accounts: get_familiar_followers(&1, user)}) + + conn + |> render("familiar_followers.json", + for: user, + users: users, + as: :user + ) + end + + defp get_familiar_followers(%{id: id} = user, %{id: id}) do + User.get_familiar_followers(user, user) + end + + defp get_familiar_followers(%{hide_followers: true}, _current_user) do + [] + end + + defp get_familiar_followers(user, current_user) do + User.get_familiar_followers(user, current_user) + end + @doc "GET /api/v1/identity_proofs" def identity_proofs(conn, params), do: MastodonAPIController.empty_array(conn, params) end diff --git a/lib/pleroma/web/mastodon_api/controllers/directory_controller.ex b/lib/pleroma/web/mastodon_api/controllers/directory_controller.ex @@ -15,7 +15,7 @@ defmodule Pleroma.Web.MastodonAPI.DirectoryController do plug(Pleroma.Web.ApiSpec.CastAndValidate) - plug(:skip_auth when action == "index") + plug(:skip_auth when action == :index) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.DirectoryOperation diff --git a/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex b/lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex @@ -8,7 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.DomainBlockController do alias Pleroma.User alias Pleroma.Web.Plugs.OAuthScopesPlug - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.DomainBlockOperation plug( @@ -27,23 +27,31 @@ defmodule Pleroma.Web.MastodonAPI.DomainBlockController do end @doc "POST /api/v1/domain_blocks" - def create(%{assigns: %{user: blocker}, body_params: %{domain: domain}} = conn, _params) do + def create( + %{assigns: %{user: blocker}, private: %{open_api_spex: %{body_params: %{domain: domain}}}} = + conn, + _params + ) do User.block_domain(blocker, domain) json(conn, %{}) end - def create(%{assigns: %{user: blocker}} = conn, %{domain: domain}) do + def create(%{assigns: %{user: blocker}} = conn, %{"domain" => domain}) do User.block_domain(blocker, domain) json(conn, %{}) end @doc "DELETE /api/v1/domain_blocks" - def delete(%{assigns: %{user: blocker}, body_params: %{domain: domain}} = conn, _params) do + def delete( + %{assigns: %{user: blocker}, private: %{open_api_spex: %{body_params: %{domain: domain}}}} = + conn, + _params + ) do User.unblock_domain(blocker, domain) json(conn, %{}) end - def delete(%{assigns: %{user: blocker}} = conn, %{domain: domain}) do + def delete(%{assigns: %{user: blocker}} = conn, %{"domain" => domain}) do User.unblock_domain(blocker, domain) json(conn, %{}) end diff --git a/lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex b/lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.MastodonAPI.FollowRequestController do alias Pleroma.Web.CommonAPI alias Pleroma.Web.Plugs.OAuthScopesPlug - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug(:assign_follower when action != :index) action_fallback(:errors) @@ -44,7 +44,7 @@ defmodule Pleroma.Web.MastodonAPI.FollowRequestController do end end - defp assign_follower(%{params: %{id: id}} = conn, _) do + defp assign_follower(%{private: %{open_api_spex: %{params: %{id: id}}}} = conn, _) do case User.get_cached_by_id(id) do %User{} = follower -> assign(conn, :follower, follower) nil -> Pleroma.Web.MastodonAPI.FallbackController.call(conn, {:error, :not_found}) |> halt() diff --git a/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex b/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceController do plug(Pleroma.Web.ApiSpec.CastAndValidate) - plug(:skip_auth when action in [:show, :peers]) + plug(:skip_auth when action in [:show, :show2, :peers]) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.InstanceOperation @@ -16,8 +16,18 @@ defmodule Pleroma.Web.MastodonAPI.InstanceController do render(conn, "show.json") end + @doc "GET /api/v2/instance" + def show2(conn, _params) do + render(conn, "show2.json") + end + @doc "GET /api/v1/instance/peers" def peers(conn, _params) do json(conn, Pleroma.Stats.get_peers()) end + + @doc "GET /api/v1/instance/rules" + def rules(conn, _params) do + render(conn, "rules.json") + end end diff --git a/lib/pleroma/web/mastodon_api/controllers/list_controller.ex b/lib/pleroma/web/mastodon_api/controllers/list_controller.ex @@ -11,7 +11,7 @@ defmodule Pleroma.Web.MastodonAPI.ListController do @oauth_read_actions [:index, :show, :list_accounts] - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug(:list_by_id_and_user when action not in [:index, :create]) plug(OAuthScopesPlug, %{scopes: ["read:lists"]} when action in @oauth_read_actions) plug(OAuthScopesPlug, %{scopes: ["write:lists"]} when action not in @oauth_read_actions) @@ -21,25 +21,33 @@ defmodule Pleroma.Web.MastodonAPI.ListController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.ListOperation # GET /api/v1/lists - def index(%{assigns: %{user: user}} = conn, opts) do - lists = Pleroma.List.for_user(user, opts) + def index(%{assigns: %{user: user}, private: %{open_api_spex: %{params: params}}} = conn, _) do + lists = Pleroma.List.for_user(user, params) render(conn, "index.json", lists: lists) end # POST /api/v1/lists - def create(%{assigns: %{user: user}, body_params: %{title: title}} = conn, _) do + def create( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: %{title: title}}}} = + conn, + _ + ) do with {:ok, %Pleroma.List{} = list} <- Pleroma.List.create(title, user) do render(conn, "show.json", list: list) end end - # GET /api/v1/lists/:id + # GET /api/v1/lists/:idOB def show(%{assigns: %{list: list}} = conn, _) do render(conn, "show.json", list: list) end # PUT /api/v1/lists/:id - def update(%{assigns: %{list: list}, body_params: %{title: title}} = conn, _) do + def update( + %{assigns: %{list: list}, private: %{open_api_spex: %{body_params: %{title: title}}}} = + conn, + _ + ) do with {:ok, list} <- Pleroma.List.rename(list, title) do render(conn, "show.json", list: list) end @@ -62,7 +70,13 @@ defmodule Pleroma.Web.MastodonAPI.ListController do end # POST /api/v1/lists/:id/accounts - def add_to_list(%{assigns: %{list: list}, body_params: %{account_ids: account_ids}} = conn, _) do + def add_to_list( + %{ + assigns: %{list: list}, + private: %{open_api_spex: %{body_params: %{account_ids: account_ids}}} + } = conn, + _ + ) do Enum.each(account_ids, fn account_id -> with %User{} = followed <- User.get_cached_by_id(account_id) do Pleroma.List.follow(list, followed) @@ -74,9 +88,22 @@ defmodule Pleroma.Web.MastodonAPI.ListController do # DELETE /api/v1/lists/:id/accounts def remove_from_list( - %{assigns: %{list: list}, params: %{account_ids: account_ids}} = conn, + %{ + private: %{open_api_spex: %{params: %{account_ids: account_ids}}} + } = conn, _ ) do + do_remove_from_list(conn, account_ids) + end + + def remove_from_list( + %{private: %{open_api_spex: %{body_params: %{account_ids: account_ids}}}} = conn, + _ + ) do + do_remove_from_list(conn, account_ids) + end + + defp do_remove_from_list(%{assigns: %{list: list}} = conn, account_ids) do Enum.each(account_ids, fn account_id -> with %User{} = followed <- User.get_cached_by_id(account_id) do Pleroma.List.unfollow(list, followed) @@ -86,11 +113,10 @@ defmodule Pleroma.Web.MastodonAPI.ListController do json(conn, %{}) end - def remove_from_list(%{body_params: params} = conn, _) do - remove_from_list(%{conn | params: params}, %{}) - end - - defp list_by_id_and_user(%{assigns: %{user: user}, params: %{id: id}} = conn, _) do + defp list_by_id_and_user( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, + _ + ) do case Pleroma.List.get(id, user) do %Pleroma.List{} = list -> assign(conn, :list, list) nil -> conn |> render_error(:not_found, "List not found") |> halt() diff --git a/lib/pleroma/web/mastodon_api/controllers/media_controller.ex b/lib/pleroma/web/mastodon_api/controllers/media_controller.ex @@ -12,7 +12,7 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do action_fallback(Pleroma.Web.MastodonAPI.FallbackController) plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:create, :create2]) - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug(OAuthScopesPlug, %{scopes: ["read:media"]} when action == :show) plug(OAuthScopesPlug, %{scopes: ["write:media"]} when action != :show) @@ -20,7 +20,11 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.MediaOperation @doc "POST /api/v1/media" - def create(%{assigns: %{user: user}, body_params: %{file: file} = data} = conn, _) do + def create( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: %{file: file} = data}}} = + conn, + _ + ) do with {:ok, object} <- ActivityPub.upload( file, @@ -36,7 +40,11 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do def create(_conn, _data), do: {:error, :bad_request} @doc "POST /api/v2/media" - def create2(%{assigns: %{user: user}, body_params: %{file: file} = data} = conn, _) do + def create2( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: %{file: file} = data}}} = + conn, + _ + ) do with {:ok, object} <- ActivityPub.upload( file, @@ -54,7 +62,15 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do def create2(_conn, _data), do: {:error, :bad_request} @doc "PUT /api/v1/media/:id" - def update(%{assigns: %{user: user}, body_params: %{description: description}} = conn, %{id: id}) do + def update( + %{ + assigns: %{user: user}, + private: %{ + open_api_spex: %{body_params: %{description: description}, params: %{id: id}} + } + } = conn, + _ + ) do with %Object{} = object <- Object.get_by_id(id), :ok <- Object.authorize_access(object, user), {:ok, %Object{data: data}} <- Object.update_data(object, %{"name" => description}) do @@ -67,7 +83,7 @@ defmodule Pleroma.Web.MastodonAPI.MediaController do def update(conn, data), do: show(conn, data) @doc "GET /api/v1/media/:id" - def show(%{assigns: %{user: user}} = conn, %{id: id}) do + def show(%{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, _) do with %Object{data: data, id: object_id} = object <- Object.get_by_id(id), :ok <- Object.authorize_access(object, user) do attachment_data = Map.put(data, "id", object_id) diff --git a/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex b/lib/pleroma/web/mastodon_api/controllers/notification_controller.ex @@ -13,7 +13,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationController do @oauth_read_actions [:show, :index] - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug( OAuthScopesPlug, @@ -24,8 +24,21 @@ defmodule Pleroma.Web.MastodonAPI.NotificationController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.NotificationOperation + @default_notification_types ~w{ + mention + follow + follow_request + reblog + favourite + move + pleroma:emoji_reaction + poll + update + status + } + # GET /api/v1/notifications - def index(conn, %{account_id: account_id} = params) do + def index(%{private: %{open_api_spex: %{params: %{account_id: account_id} = params}}} = conn, _) do case Pleroma.User.get_cached_by_id(account_id) do %{ap_id: account_ap_id} -> params = @@ -33,7 +46,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationController do |> Map.delete(:account_id) |> Map.put(:account_ap_id, account_ap_id) - index(conn, params) + do_get_notifications(conn, params) _ -> conn @@ -42,18 +55,11 @@ defmodule Pleroma.Web.MastodonAPI.NotificationController do end end - @default_notification_types ~w{ - mention - follow - follow_request - reblog - favourite - move - pleroma:emoji_reaction - poll - update - } - def index(%{assigns: %{user: user}} = conn, params) do + def index(%{private: %{open_api_spex: %{params: params}}} = conn, _) do + do_get_notifications(conn, params) + end + + defp do_get_notifications(%{assigns: %{user: user}} = conn, params) do params = Map.new(params, fn {k, v} -> {to_string(k), v} end) |> Map.put_new("types", Map.get(params, :include_types, @default_notification_types)) @@ -69,7 +75,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationController do end # GET /api/v1/notifications/:id - def show(%{assigns: %{user: user}} = conn, %{id: id}) do + def show(%{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, _) do with {:ok, notification} <- Notification.get(user, id) do render(conn, "show.json", notification: notification, for: user) else @@ -88,8 +94,20 @@ defmodule Pleroma.Web.MastodonAPI.NotificationController do # POST /api/v1/notifications/:id/dismiss - def dismiss(%{assigns: %{user: user}} = conn, %{id: id} = _params) do - with {:ok, _notif} <- Notification.dismiss(user, id) do + def dismiss(%{private: %{open_api_spex: %{params: %{id: id}}}} = conn, _) do + do_dismiss(conn, id) + end + + # POST /api/v1/notifications/dismiss (deprecated) + def dismiss_via_body( + %{private: %{open_api_spex: %{body_params: %{id: id}}}} = conn, + _ + ) do + do_dismiss(conn, id) + end + + defp do_dismiss(%{assigns: %{user: user}} = conn, notification_id) do + with {:ok, _notif} <- Notification.dismiss(user, notification_id) do json(conn, %{}) else {:error, reason} -> @@ -99,13 +117,11 @@ defmodule Pleroma.Web.MastodonAPI.NotificationController do end end - # POST /api/v1/notifications/dismiss (deprecated) - def dismiss_via_body(%{body_params: params} = conn, _) do - dismiss(conn, params) - end - # DELETE /api/v1/notifications/destroy_multiple - def destroy_multiple(%{assigns: %{user: user}} = conn, %{ids: ids} = _params) do + def destroy_multiple( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{ids: ids}}}} = conn, + _ + ) do Notification.destroy_multiple(user, ids) json(conn, %{}) end diff --git a/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex b/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex @@ -15,7 +15,7 @@ defmodule Pleroma.Web.MastodonAPI.PollController do action_fallback(Pleroma.Web.MastodonAPI.FallbackController) - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug( OAuthScopesPlug, @@ -29,7 +29,7 @@ defmodule Pleroma.Web.MastodonAPI.PollController do @cachex Pleroma.Config.get([:cachex, :provider], Cachex) @doc "GET /api/v1/polls/:id" - def show(%{assigns: %{user: user}} = conn, %{id: id}) do + def show(%{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, _) do with %Object{} = object <- Object.get_by_id_and_maybe_refetch(id, interval: 60), %Activity{} = activity <- Activity.get_create_by_object_ap_id(object.data["id"]), true <- Visibility.visible_for_user?(activity, user) do @@ -41,7 +41,13 @@ defmodule Pleroma.Web.MastodonAPI.PollController do end @doc "POST /api/v1/polls/:id/votes" - def vote(%{assigns: %{user: user}, body_params: %{choices: choices}} = conn, %{id: id}) do + def vote( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{body_params: %{choices: choices}, params: %{id: id}}} + } = conn, + _ + ) do with %Object{data: %{"type" => "Question"}} = object <- Object.get_by_id(id), %Activity{} = activity <- Activity.get_create_by_object_ap_id(object.data["id"]), true <- Visibility.visible_for_user?(activity, user), diff --git a/lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex b/lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex @@ -13,7 +13,7 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityController do @oauth_read_actions [:show, :index] - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug(OAuthScopesPlug, %{scopes: ["read:statuses"]} when action in @oauth_read_actions) plug(OAuthScopesPlug, %{scopes: ["write:statuses"]} when action not in @oauth_read_actions) plug(:assign_scheduled_activity when action != :index) @@ -23,7 +23,7 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.ScheduledActivityOperation @doc "GET /api/v1/scheduled_statuses" - def index(%{assigns: %{user: user}} = conn, params) do + def index(%{assigns: %{user: user}, private: %{open_api_spex: %{params: params}}} = conn, _) do params = Map.new(params, fn {key, value} -> {to_string(key), value} end) with scheduled_activities <- MastodonAPI.get_scheduled_activities(user, params) do @@ -39,7 +39,13 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityController do end @doc "PUT /api/v1/scheduled_statuses/:id" - def update(%{assigns: %{scheduled_activity: scheduled_activity}, body_params: params} = conn, _) do + def update( + %{ + assigns: %{scheduled_activity: scheduled_activity}, + private: %{open_api_spex: %{body_params: params}} + } = conn, + _ + ) do with {:ok, scheduled_activity} <- ScheduledActivity.update(scheduled_activity, params) do render(conn, "show.json", scheduled_activity: scheduled_activity) end @@ -52,7 +58,10 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityController do end end - defp assign_scheduled_activity(%{assigns: %{user: user}, params: %{id: id}} = conn, _) do + defp assign_scheduled_activity( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, + _ + ) do case ScheduledActivity.get(user, id) do %ScheduledActivity{} = activity -> assign(conn, :scheduled_activity, activity) nil -> Pleroma.Web.MastodonAPI.FallbackController.call(conn, {:error, :not_found}) |> halt() diff --git a/lib/pleroma/web/mastodon_api/controllers/search_controller.ex b/lib/pleroma/web/mastodon_api/controllers/search_controller.ex @@ -5,7 +5,6 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do use Pleroma.Web, :controller - alias Pleroma.Activity alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.ControllerHelper @@ -19,7 +18,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do @search_limit 40 - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) # Note: Mastodon doesn't allow unauthenticated access (requires read:accounts / read:search) plug(OAuthScopesPlug, %{scopes: ["read:search"], fallback: :proceed_unauthenticated}) @@ -30,7 +29,11 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.SearchOperation - def account_search(%{assigns: %{user: user}} = conn, %{q: query} = params) do + def account_search( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{q: query} = params}}} = + conn, + _ + ) do accounts = User.search(query, search_options(params, user)) conn @@ -45,7 +48,12 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do def search2(conn, params), do: do_search(:v2, conn, params) def search(conn, params), do: do_search(:v1, conn, params) - defp do_search(version, %{assigns: %{user: user}} = conn, %{q: query} = params) do + defp do_search( + version, + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{q: query} = params}}} = + conn, + _ + ) do query = String.trim(query) options = search_options(params, user) timeout = Keyword.get(Repo.config(), :timeout, 15_000) @@ -100,7 +108,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do end defp resource_search(_, "statuses", query, options) do - statuses = with_fallback(fn -> Activity.search(options[:for_user], query, options) end) + statuses = with_fallback(fn -> Pleroma.Search.search(query, options) end) StatusView.render("index.json", activities: statuses, @@ -148,7 +156,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchController do tags end - Pleroma.Pagination.paginate(tags, options) + Pleroma.Pagination.paginate_list(tags, options) end defp add_joined_tag(tags) do diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex @@ -12,6 +12,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do alias Pleroma.Activity alias Pleroma.Bookmark + alias Pleroma.BookmarkFolder alias Pleroma.Object alias Pleroma.Repo alias Pleroma.ScheduledActivity @@ -25,7 +26,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do alias Pleroma.Web.Plugs.OAuthScopesPlug alias Pleroma.Web.Plugs.RateLimiter - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug(:skip_public_check when action in [:index, :show]) @@ -37,7 +38,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do when action in [ :index, :show, - :card, :context, :show_history, :show_source @@ -110,7 +110,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do `ids` query param is required """ - def index(%{assigns: %{user: user}} = conn, %{ids: ids} = params) do + def index( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{ids: ids} = params}}} = + conn, + _ + ) do limit = 100 activities = @@ -134,7 +138,9 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do def create( %{ assigns: %{user: user}, - body_params: %{status: _, scheduled_at: scheduled_at} = params + private: %{ + open_api_spex: %{body_params: %{status: _, scheduled_at: scheduled_at} = params} + } } = conn, _ ) @@ -156,7 +162,13 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do else {:far_enough, _} -> params = Map.drop(params, [:scheduled_at]) - create(%Plug.Conn{conn | body_params: params}, %{}) + + put_in( + conn, + [Access.key(:private), Access.key(:open_api_spex), Access.key(:body_params)], + params + ) + |> do_create error -> error @@ -164,7 +176,35 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end # Creates a regular status - def create(%{assigns: %{user: user}, body_params: %{status: _} = params} = conn, _) do + def create( + %{ + private: %{open_api_spex: %{body_params: %{status: _}}} + } = conn, + _ + ) do + do_create(conn) + end + + def create( + %{ + assigns: %{user: _user}, + private: %{open_api_spex: %{body_params: %{media_ids: _} = params}} + } = conn, + _ + ) do + params = Map.put(params, :status, "") + + put_in( + conn, + [Access.key(:private), Access.key(:open_api_spex), Access.key(:body_params)], + params + ) + |> do_create + end + + defp do_create( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: params}}} = conn + ) do params = Map.put(params, :in_reply_to_status_id, params[:in_reply_to_id]) |> put_application(conn) @@ -189,13 +229,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end end - def create(%{assigns: %{user: _user}, body_params: %{media_ids: _} = params} = conn, _) do - params = Map.put(params, :status, "") - create(%Plug.Conn{conn | body_params: params}, %{}) - end - @doc "GET /api/v1/statuses/:id/history" - def show_history(%{assigns: assigns} = conn, %{id: id} = params) do + def show_history( + %{assigns: assigns, private: %{open_api_spex: %{params: %{id: id} = params}}} = conn, + _ + ) do with user = assigns[:user], %Activity{} = activity <- Activity.get_by_id_with_object(id), true <- Visibility.visible_for_user?(activity, user) do @@ -211,7 +249,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "GET /api/v1/statuses/:id/source" - def show_source(%{assigns: assigns} = conn, %{id: id} = _params) do + def show_source(%{assigns: assigns, private: %{open_api_spex: %{params: %{id: id}}}} = conn, _) do with user = assigns[:user], %Activity{} = activity <- Activity.get_by_id_with_object(id), true <- Visibility.visible_for_user?(activity, user) do @@ -225,7 +263,13 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "PUT /api/v1/statuses/:id" - def update(%{assigns: %{user: user}, body_params: body_params} = conn, %{id: id} = params) do + def update( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{body_params: body_params, params: %{id: id} = params}} + } = conn, + _ + ) do with {_, %Activity{}} = {_, activity} <- {:activity, Activity.get_by_id_with_object(id)}, {_, true} <- {:visible, Visibility.visible_for_user?(activity, user)}, {_, true} <- {:is_create, activity.data["type"] == "Create"}, @@ -248,7 +292,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "GET /api/v1/statuses/:id" - def show(%{assigns: %{user: user}} = conn, %{id: id} = params) do + def show( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id} = params}}} = + conn, + _ + ) do with %Activity{} = activity <- Activity.get_by_id_with_object(id), true <- Visibility.visible_for_user?(activity, user) do try_render(conn, "show.json", @@ -263,7 +311,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "DELETE /api/v1/statuses/:id" - def delete(%{assigns: %{user: user}} = conn, %{id: id}) do + def delete(%{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, _) do with %Activity{} = activity <- Activity.get_by_id_with_object(id), {:ok, %Activity{}} <- CommonAPI.delete(id, user) do try_render(conn, "show.json", @@ -278,7 +326,13 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "POST /api/v1/statuses/:id/reblog" - def reblog(%{assigns: %{user: user}, body_params: params} = conn, %{id: ap_id_or_id}) do + def reblog( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{body_params: params, params: %{id: ap_id_or_id}}} + } = conn, + _ + ) do with {:ok, announce} <- CommonAPI.repeat(ap_id_or_id, user, params), %Activity{} = announce <- Activity.normalize(announce.data) do try_render(conn, "show.json", %{activity: announce, for: user, as: :activity}) @@ -286,7 +340,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "POST /api/v1/statuses/:id/unreblog" - def unreblog(%{assigns: %{user: user}} = conn, %{id: activity_id}) do + def unreblog( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: activity_id}}}} = + conn, + _ + ) do with {:ok, _unannounce} <- CommonAPI.unrepeat(activity_id, user), %Activity{} = activity <- Activity.get_by_id(activity_id) do try_render(conn, "show.json", %{activity: activity, for: user, as: :activity}) @@ -294,7 +352,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "POST /api/v1/statuses/:id/favourite" - def favourite(%{assigns: %{user: user}} = conn, %{id: activity_id}) do + def favourite( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: activity_id}}}} = + conn, + _ + ) do with {:ok, _fav} <- CommonAPI.favorite(user, activity_id), %Activity{} = activity <- Activity.get_by_id(activity_id) do try_render(conn, "show.json", activity: activity, for: user, as: :activity) @@ -302,7 +364,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "POST /api/v1/statuses/:id/unfavourite" - def unfavourite(%{assigns: %{user: user}} = conn, %{id: activity_id}) do + def unfavourite( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: activity_id}}}} = + conn, + _ + ) do with {:ok, _unfav} <- CommonAPI.unfavorite(activity_id, user), %Activity{} = activity <- Activity.get_by_id(activity_id) do try_render(conn, "show.json", activity: activity, for: user, as: :activity) @@ -310,7 +376,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "POST /api/v1/statuses/:id/pin" - def pin(%{assigns: %{user: user}} = conn, %{id: ap_id_or_id}) do + def pin( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: ap_id_or_id}}}} = + conn, + _ + ) do with {:ok, activity} <- CommonAPI.pin(ap_id_or_id, user) do try_render(conn, "show.json", activity: activity, for: user, as: :activity) else @@ -329,24 +399,43 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "POST /api/v1/statuses/:id/unpin" - def unpin(%{assigns: %{user: user}} = conn, %{id: ap_id_or_id}) do + def unpin( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: ap_id_or_id}}}} = + conn, + _ + ) do with {:ok, activity} <- CommonAPI.unpin(ap_id_or_id, user) do try_render(conn, "show.json", activity: activity, for: user, as: :activity) end end @doc "POST /api/v1/statuses/:id/bookmark" - def bookmark(%{assigns: %{user: user}} = conn, %{id: id}) do + def bookmark( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{body_params: body_params, params: %{id: id}}} + } = conn, + _ + ) do with %Activity{} = activity <- Activity.get_by_id_with_object(id), %User{} = user <- User.get_cached_by_nickname(user.nickname), true <- Visibility.visible_for_user?(activity, user), - {:ok, _bookmark} <- Bookmark.create(user.id, activity.id) do + folder_id <- Map.get(body_params, :folder_id, nil), + folder_id <- + if(folder_id && BookmarkFolder.belongs_to_user?(folder_id, user.id), + do: folder_id, + else: nil + ), + {:ok, _bookmark} <- Bookmark.create(user.id, activity.id, folder_id) do try_render(conn, "show.json", activity: activity, for: user, as: :activity) end end @doc "POST /api/v1/statuses/:id/unbookmark" - def unbookmark(%{assigns: %{user: user}} = conn, %{id: id}) do + def unbookmark( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, + _ + ) do with %Activity{} = activity <- Activity.get_by_id_with_object(id), %User{} = user <- User.get_cached_by_nickname(user.nickname), true <- Visibility.visible_for_user?(activity, user), @@ -356,7 +445,13 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "POST /api/v1/statuses/:id/mute" - def mute_conversation(%{assigns: %{user: user}, body_params: params} = conn, %{id: id}) do + def mute_conversation( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{body_params: params, params: %{id: id}}} + } = conn, + _ + ) do with %Activity{} = activity <- Activity.get_by_id(id), {:ok, activity} <- CommonAPI.add_mute(user, activity, params) do try_render(conn, "show.json", activity: activity, for: user, as: :activity) @@ -364,27 +459,24 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "POST /api/v1/statuses/:id/unmute" - def unmute_conversation(%{assigns: %{user: user}} = conn, %{id: id}) do + def unmute_conversation( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{params: %{id: id}}} + } = conn, + _ + ) do with %Activity{} = activity <- Activity.get_by_id(id), {:ok, activity} <- CommonAPI.remove_mute(user, activity) do try_render(conn, "show.json", activity: activity, for: user, as: :activity) end end - @doc "GET /api/v1/statuses/:id/card" - @deprecated "https://github.com/tootsuite/mastodon/pull/11213" - def card(%{assigns: %{user: user}} = conn, %{id: status_id}) do - with %Activity{} = activity <- Activity.get_by_id(status_id), - true <- Visibility.visible_for_user?(activity, user) do - data = Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) - render(conn, "card.json", data) - else - _ -> render_error(conn, :not_found, "Record not found") - end - end - @doc "GET /api/v1/statuses/:id/favourited_by" - def favourited_by(%{assigns: %{user: user}} = conn, %{id: id}) do + def favourited_by( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, + _ + ) do with true <- Pleroma.Config.get([:instance, :show_reactions]), %Activity{} = activity <- Activity.get_by_id_with_object(id), {:visible, true} <- {:visible, Visibility.visible_for_user?(activity, user)}, @@ -405,7 +497,10 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "GET /api/v1/statuses/:id/reblogged_by" - def reblogged_by(%{assigns: %{user: user}} = conn, %{id: id}) do + def reblogged_by( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, + _ + ) do with %Activity{} = activity <- Activity.get_by_id_with_object(id), {:visible, true} <- {:visible, Visibility.visible_for_user?(activity, user)}, %Object{data: %{"announcements" => announces, "id" => ap_id}} <- @@ -437,7 +532,10 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "GET /api/v1/statuses/:id/context" - def context(%{assigns: %{user: user}} = conn, %{id: id}) do + def context( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, + _ + ) do with %Activity{} = activity <- Activity.get_by_id(id) do activities = ActivityPub.fetch_activities_for_context(activity.data["context"], %{ @@ -451,7 +549,10 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "GET /api/v1/favourites" - def favourites(%{assigns: %{user: %User{} = user}} = conn, params) do + def favourites( + %{assigns: %{user: %User{} = user}, private: %{open_api_spex: %{params: params}}} = conn, + _ + ) do activities = ActivityPub.fetch_favourites(user, params) conn @@ -464,12 +565,13 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do end @doc "GET /api/v1/bookmarks" - def bookmarks(%{assigns: %{user: user}} = conn, params) do + def bookmarks(%{assigns: %{user: user}, private: %{open_api_spex: %{params: params}}} = conn, _) do user = User.get_cached_by_id(user.id) + folder_id = Map.get(params, :folder_id) bookmarks = user.id - |> Bookmark.for_user_query() + |> Bookmark.for_user_query(folder_id) |> Pleroma.Pagination.fetch_paginated(params) activities = diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.AccountView do @@ -193,7 +193,28 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do render_many(targets, AccountView, "relationship.json", render_opts) end + def render("familiar_followers.json", %{users: users} = opts) do + opts = + opts + |> Map.merge(%{as: :user}) + |> Map.delete(:users) + + users + |> render_many(AccountView, "familiar_followers.json", opts) + end + + def render("familiar_followers.json", %{user: %{id: id, accounts: accounts}} = opts) do + accounts = + accounts + |> render_many(AccountView, "show.json", opts) + |> Enum.filter(&Enum.any?/1) + + %{id: id, accounts: accounts} + end + defp do_render("show.json", %{user: user} = opts) do + self = opts[:for] == user + user = User.sanitize_html(user, User.html_filter_policy(opts[:for])) display_name = user.name || user.nickname @@ -203,16 +224,16 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do header_static = User.banner_url(user) |> MediaProxy.preview_url(static: true) following_count = - if !user.hide_follows_count or !user.hide_follows or opts[:for] == user, + if !user.hide_follows_count or !user.hide_follows or self, do: user.following_count, else: 0 followers_count = - if !user.hide_followers_count or !user.hide_followers or opts[:for] == user, + if !user.hide_followers_count or !user.hide_followers or self, do: user.follower_count, else: 0 - bot = user.actor_type == "Service" + bot = bot?(user) emojis = Enum.map(user.emoji, fn {shortcode, raw_url} -> @@ -249,6 +270,10 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do nil end + last_status_at = + user.last_status_at && + user.last_status_at |> NaiveDateTime.to_date() |> Date.to_iso8601() + %{ id: to_string(user.id), username: username_from_nickname(user.nickname), @@ -277,7 +302,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do actor_type: user.actor_type } }, - last_status_at: user.last_status_at, + last_status_at: last_status_at, # Pleroma extensions # Note: it's insecure to output :email but fully-qualified nickname may serve as safe stub @@ -464,4 +489,12 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do defp image_url(%{"url" => [%{"href" => href} | _]}), do: href defp image_url(_), do: nil + + defp bot?(user) do + # Because older and/or Mastodon clients may not recognize a Group actor properly, + # and currently the group actor can only boost things, we should let these clients + # think groups are bots. + # See https://git.pleroma.social/pleroma/pleroma-meta/-/issues/14 + user.actor_type == "Service" || user.actor_type == "Group" + end end diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex @@ -13,12 +13,11 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do def render("show.json", _) do instance = Config.get(:instance) - %{ - uri: Pleroma.Web.Endpoint.url(), - title: Keyword.get(instance, :name), + common_information(instance) + |> Map.merge(%{ + uri: Pleroma.Web.WebFinger.host(), description: Keyword.get(instance, :description), short_description: Keyword.get(instance, :short_description), - version: "#{@mastodon_api_level} (compatible; #{Pleroma.Application.named_version()})", email: Keyword.get(instance, :email), urls: %{ streaming_api: Pleroma.Web.Endpoint.websocket_url() @@ -27,9 +26,10 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do thumbnail: URI.merge(Pleroma.Web.Endpoint.url(), Keyword.get(instance, :instance_thumbnail)) |> to_string, - languages: Keyword.get(instance, :languages, ["en"]), registrations: Keyword.get(instance, :registrations_open), approval_required: Keyword.get(instance, :account_approval_required), + contact_account: contact_account(Keyword.get(instance, :contact_username)), + configuration: configuration(), # Extra (not present in Mastodon): max_toot_chars: Keyword.get(instance, :limit), max_media_attachments: Keyword.get(instance, :max_media_attachments), @@ -41,19 +41,61 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do background_image: Pleroma.Web.Endpoint.url() <> Keyword.get(instance, :background_image), shout_limit: Config.get([:shout, :limit]), description_limit: Keyword.get(instance, :description_limit), - pleroma: %{ - metadata: %{ - account_activation_required: Keyword.get(instance, :account_activation_required), - features: features(), - federation: federation(), - fields_limits: fields_limits(), - post_formats: Config.get([:instance, :allowed_post_formats]), - birthday_required: Config.get([:instance, :birthday_required]), - birthday_min_age: Config.get([:instance, :birthday_min_age]) - }, - stats: %{mau: Pleroma.User.active_user_count()}, - vapid_public_key: Keyword.get(Pleroma.Web.Push.vapid_config(), :public_key) - } + chat_limit: Keyword.get(instance, :chat_limit), + pleroma: pleroma_configuration(instance) + }) + end + + def render("show2.json", _) do + instance = Config.get(:instance) + + common_information(instance) + |> Map.merge(%{ + domain: Pleroma.Web.WebFinger.host(), + source_url: Pleroma.Application.repository(), + description: Keyword.get(instance, :short_description), + usage: %{users: %{active_month: Pleroma.User.active_user_count()}}, + thumbnail: %{ + url: + URI.merge(Pleroma.Web.Endpoint.url(), Keyword.get(instance, :instance_thumbnail)) + |> to_string + }, + configuration: configuration2(), + registrations: %{ + enabled: Keyword.get(instance, :registrations_open), + approval_required: Keyword.get(instance, :account_approval_required), + message: nil, + url: nil + }, + contact: %{ + email: Keyword.get(instance, :email), + account: contact_account(Keyword.get(instance, :contact_username)) + }, + # Extra (not present in Mastodon): + pleroma: pleroma_configuration2(instance) + }) + end + + def render("rules.json", _) do + Pleroma.Rule.query() + |> Pleroma.Repo.all() + |> render_many(__MODULE__, "rule.json", as: :rule) + end + + def render("rule.json", %{rule: rule}) do + %{ + id: to_string(rule.id), + text: rule.text, + hint: rule.hint || "" + } + end + + defp common_information(instance) do + %{ + languages: Keyword.get(instance, :languages, ["en"]), + rules: render(__MODULE__, "rules.json"), + title: Keyword.get(instance, :name), + version: "#{@mastodon_api_level} (compatible; #{Pleroma.Application.named_version()})" } end @@ -69,6 +111,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do "multifetch", "pleroma:api/v1/notifications:include_types_filter", "editing", + "quote_posting", if Config.get([:activitypub, :blockers_visible]) do "blockers_visible" end, @@ -92,6 +135,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do "safe_dm_mentions" end, "pleroma_emoji_reactions", + "pleroma_custom_emoji_reactions", "pleroma_chat_messages", if Config.get([:instance, :show_reactions]) do "exposable_reactions" @@ -99,7 +143,9 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do if Config.get([:instance, :profile_directory]) do "profile_directory" end, - "pleroma:get:main/ostatus" + "pleroma:get:main/ostatus", + "pleroma:group_actors", + "pleroma:bookmark_folders" ] |> Enum.filter(& &1) end @@ -131,7 +177,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do |> Map.put(:enabled, Config.get([:instance, :federating])) end - def fields_limits do + defp fields_limits do %{ max_fields: Config.get([:instance, :max_account_fields]), max_remote_fields: Config.get([:instance, :max_remote_account_fields]), @@ -139,4 +185,94 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do value_length: Config.get([:instance, :account_field_value_length]) } end + + defp contact_account(nil), do: nil + + defp contact_account("@" <> username) do + contact_account(username) + end + + defp contact_account(username) do + user = Pleroma.User.get_cached_by_nickname(username) + + if user do + Pleroma.Web.MastodonAPI.AccountView.render("show.json", %{user: user, for: nil}) + else + nil + end + end + + defp configuration do + %{ + accounts: %{ + max_featured_tags: 0 + }, + statuses: %{ + max_characters: Config.get([:instance, :limit]), + max_media_attachments: Config.get([:instance, :max_media_attachments]) + }, + media_attachments: %{ + image_size_limit: Config.get([:instance, :upload_limit]), + video_size_limit: Config.get([:instance, :upload_limit]), + supported_mime_types: ["application/octet-stream"] + }, + polls: %{ + max_options: Config.get([:instance, :poll_limits, :max_options]), + max_characters_per_option: Config.get([:instance, :poll_limits, :max_option_chars]), + min_expiration: Config.get([:instance, :poll_limits, :min_expiration]), + max_expiration: Config.get([:instance, :poll_limits, :max_expiration]) + } + } + end + + defp configuration2 do + configuration() + |> put_in([:accounts, :max_pinned_statuses], Config.get([:instance, :max_pinned_statuses], 0)) + |> put_in([:statuses, :characters_reserved_per_url], 0) + |> Map.merge(%{ + urls: %{ + streaming: Pleroma.Web.Endpoint.websocket_url(), + status: Config.get([:instance, :status_page]) + }, + vapid: %{ + public_key: Keyword.get(Pleroma.Web.Push.vapid_config(), :public_key) + } + }) + end + + defp pleroma_configuration(instance) do + %{ + metadata: %{ + account_activation_required: Keyword.get(instance, :account_activation_required), + features: features(), + federation: federation(), + fields_limits: fields_limits(), + post_formats: Config.get([:instance, :allowed_post_formats]), + birthday_required: Config.get([:instance, :birthday_required]), + birthday_min_age: Config.get([:instance, :birthday_min_age]) + }, + stats: %{mau: Pleroma.User.active_user_count()}, + vapid_public_key: Keyword.get(Pleroma.Web.Push.vapid_config(), :public_key) + } + end + + defp pleroma_configuration2(instance) do + configuration = pleroma_configuration(instance) + + configuration + |> Map.merge(%{ + metadata: + configuration.metadata + |> Map.merge(%{ + avatar_upload_limit: Keyword.get(instance, :avatar_upload_limit), + background_upload_limit: Keyword.get(instance, :background_upload_limit), + banner_upload_limit: Keyword.get(instance, :banner_upload_limit), + background_image: + Pleroma.Web.Endpoint.url() <> Keyword.get(instance, :background_image), + chat_limit: Keyword.get(instance, :chat_limit), + description_limit: Keyword.get(instance, :description_limit), + shout_limit: Config.get([:shout, :limit]) + }) + }) + end end diff --git a/lib/pleroma/web/mastodon_api/views/notification_view.ex b/lib/pleroma/web/mastodon_api/views/notification_view.ex @@ -17,6 +17,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationView do alias Pleroma.Web.MastodonAPI.AccountView alias Pleroma.Web.MastodonAPI.NotificationView alias Pleroma.Web.MastodonAPI.StatusView + alias Pleroma.Web.MediaProxy alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView defp object_id_for(%{data: %{"object" => %{"id" => id}}}) when is_binary(id), do: id @@ -107,6 +108,9 @@ defmodule Pleroma.Web.MastodonAPI.NotificationView do "mention" -> put_status(response, activity, reading_user, status_render_opts) + "status" -> + put_status(response, activity, reading_user, status_render_opts) + "favourite" -> put_status(response, parent_activity_fn.(), reading_user, status_render_opts) @@ -145,7 +149,9 @@ defmodule Pleroma.Web.MastodonAPI.NotificationView do end defp put_emoji(response, activity) do - Map.put(response, :emoji, activity.data["content"]) + response + |> Map.put(:emoji, activity.data["content"]) + |> Map.put(:emoji_url, MediaProxy.url(Pleroma.Emoji.emoji_url(activity.data))) end defp put_chat_message(response, activity, reading_user, opts) do diff --git a/lib/pleroma/web/mastodon_api/views/poll_view.ex b/lib/pleroma/web/mastodon_api/views/poll_view.ex @@ -21,7 +21,10 @@ defmodule Pleroma.Web.MastodonAPI.PollView do votes_count: votes_count, voters_count: voters_count(object), options: options, - emojis: Pleroma.Web.MastodonAPI.StatusView.build_emojis(object.data["emoji"]) + emojis: Pleroma.Web.MastodonAPI.StatusView.build_emojis(object.data["emoji"]), + pleroma: %{ + non_anonymous: object.data["nonAnonymous"] || false + } } if params[:for] do diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -21,6 +21,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do alias Pleroma.Web.MastodonAPI.StatusView alias Pleroma.Web.MediaProxy alias Pleroma.Web.PleromaAPI.EmojiReactionController + alias Pleroma.Web.RichMedia.Card import Pleroma.Web.ActivityPub.Visibility, only: [get_visibility: 1, visible_for_user?: 2] @@ -29,9 +30,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do # pagination is restricted to 40 activities at a time defp fetch_rich_media_for_activities(activities) do Enum.each(activities, fn activity -> - spawn(fn -> - Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) - end) + spawn(fn -> Card.get_by_activity(activity) end) end) end @@ -57,6 +56,27 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do end) end + defp get_quoted_activities([]), do: %{} + + defp get_quoted_activities(activities) do + activities + |> Enum.map(fn + %{data: %{"type" => "Create"}} = activity -> + object = Object.normalize(activity, fetch: false) + object && object.data["quoteUrl"] != "" && object.data["quoteUrl"] + + _ -> + nil + end) + |> Enum.filter(& &1) + |> Activity.create_by_object_ap_id_with_object() + |> Repo.all() + |> Enum.reduce(%{}, fn activity, acc -> + object = Object.normalize(activity, fetch: false) + if object, do: Map.put(acc, object.data["id"], activity), else: acc + end) + end + # DEPRECATED This field seems to be a left-over from the StatusNet era. # If your application uses `pleroma.conversation_id`: this field is deprecated. # It is currently stubbed instead by doing a CRC32 of the context, and @@ -92,11 +112,10 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do # To do: check AdminAPIControllerTest on the reasons behind nil activities in the list activities = Enum.filter(opts.activities, & &1) - # Start fetching rich media before doing anything else, so that later calls to get the cards - # only block for timeout in the worst case, as opposed to - # length(activities_with_links) * timeout + # Start prefetching rich media before doing anything else fetch_rich_media_for_activities(activities) replied_to_activities = get_replied_to_activities(activities) + quoted_activities = get_quoted_activities(activities) parent_activities = activities @@ -129,6 +148,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do opts = opts |> Map.put(:replied_to_activities, replied_to_activities) + |> Map.put(:quoted_activities, quoted_activities) |> Map.put(:parent_activities, parent_activities) |> Map.put(:relationships, relationships_opt) @@ -161,7 +181,14 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do favorited = opts[:for] && opts[:for].ap_id in (object.data["likes"] || []) - bookmarked = Activity.get_bookmark(reblogged_parent_activity, opts[:for]) != nil + bookmark = Activity.get_bookmark(reblogged_parent_activity, opts[:for]) + + bookmark_folder = + if bookmark != nil do + bookmark.folder_id + else + nil + end mentions = activity.recipients @@ -190,7 +217,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do favourites_count: 0, reblogged: reblogged?(reblogged_parent_activity, opts[:for]), favourited: present?(favorited), - bookmarked: present?(bookmarked), + bookmarked: present?(bookmark), muted: false, pinned: pinned?, sensitive: false, @@ -204,7 +231,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do emojis: [], pleroma: %{ local: activity.local, - pinned_at: pinned_at + pinned_at: pinned_at, + bookmark_folder: bookmark_folder } } end @@ -241,7 +269,14 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do favorited = opts[:for] && opts[:for].ap_id in (object.data["likes"] || []) - bookmarked = Activity.get_bookmark(activity, opts[:for]) != nil + bookmark = Activity.get_bookmark(activity, opts[:for]) + + bookmark_folder = + if bookmark != nil do + bookmark.folder_id + else + nil + end client_posted_this_activity = opts[:for] && user.id == opts[:for].id @@ -277,7 +312,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do end reply_to = get_reply_to(activity, opts) - reply_to_user = reply_to && CommonAPI.get_user(reply_to.data["actor"]) history_len = @@ -290,6 +324,22 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do # Here the implicit index of the current content is 0 chrono_order = history_len - 1 + quote_activity = get_quote(activity, opts) + + quote_id = + case quote_activity do + %Activity{id: id} -> id + _ -> nil + end + + quote_post = + if visible_for_user?(quote_activity, opts[:for]) and opts[:show_quote] != false do + quote_rendering_opts = Map.merge(opts, %{activity: quote_activity, show_quote: false}) + render("show.json", quote_rendering_opts) + else + nil + end + content = object |> render_content() @@ -311,7 +361,11 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do summary = object.data["summary"] || "" - card = render("card.json", Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity)) + card = + case Card.get_by_activity(activity) do + %Card{} = result -> render("card.json", result) + _ -> nil + end url = if user.local do @@ -334,14 +388,14 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do end emoji_reactions = - object.data - |> Map.get("reactions", []) + object + |> Object.get_emoji_reactions() |> EmojiReactionController.filter_allowed_users( opts[:for], Map.get(opts, :with_muted, false) ) - |> Stream.map(fn {emoji, users} -> - build_emoji_map(emoji, users, opts[:for]) + |> Stream.map(fn {emoji, users, url} -> + build_emoji_map(emoji, users, url, opts[:for]) end) |> Enum.to_list() @@ -380,7 +434,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do favourites_count: like_count, reblogged: reblogged?(activity, opts[:for]), favourited: present?(favorited), - bookmarked: present?(bookmarked), + bookmarked: present?(bookmark), muted: muted, pinned: pinned?, sensitive: sensitive, @@ -398,6 +452,10 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do conversation_id: get_context_id(activity), context: object.data["context"], in_reply_to_account_acct: reply_to_user && reply_to_user.nickname, + quote: quote_post, + quote_id: quote_id, + quote_url: object.data["quoteUrl"], + quote_visible: visible_for_user?(quote_activity, opts[:for]), content: %{"text/plain" => content_plaintext}, spoiler_text: %{"text/plain" => summary}, expires_at: expires_at, @@ -405,7 +463,9 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do thread_muted: thread_muted?, emoji_reactions: emoji_reactions, parent_visible: visible_for_user?(reply_to, opts[:for]), - pinned_at: pinned_at + pinned_at: pinned_at, + quotes_count: object.data["quotesCount"] || 0, + bookmark_folder: bookmark_folder } } end @@ -508,37 +568,30 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do } end - def render("card.json", %{rich_media: rich_media, page_url: page_url}) do - page_url_data = URI.parse(page_url) - - page_url_data = - if is_binary(rich_media["url"]) do - URI.merge(page_url_data, URI.parse(rich_media["url"])) - else - page_url_data - end + def render("card.json", %Card{fields: rich_media}) do + page_url_data = URI.parse(rich_media["url"]) page_url = page_url_data |> to_string - image_url_data = - if is_binary(rich_media["image"]) do - URI.parse(rich_media["image"]) - else - nil - end - - image_url = build_image_url(image_url_data, page_url_data) + image_url = proxied_url(rich_media["image"], page_url_data) + audio_url = proxied_url(rich_media["audio"], page_url_data) + video_url = proxied_url(rich_media["video"], page_url_data) %{ type: "link", provider_name: page_url_data.host, provider_url: page_url_data.scheme <> "://" <> page_url_data.host, url: page_url, - image: image_url |> MediaProxy.url(), + image: image_url, + image_description: rich_media["image:alt"] || "", title: rich_media["title"] || "", description: rich_media["description"] || "", pleroma: %{ - opengraph: rich_media + opengraph: + rich_media + |> Maps.put_if_present("image", image_url) + |> Maps.put_if_present("audio", audio_url) + |> Maps.put_if_present("video", video_url) } } end @@ -646,6 +699,25 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do end end + def get_quote(activity, %{quoted_activities: quoted_activities}) do + object = Object.normalize(activity, fetch: false) + + with nil <- quoted_activities[object.data["quoteUrl"]] do + # For when a quote post is inside an Announce + Activity.get_create_by_object_ap_id_with_object(object.data["quoteUrl"]) + end + end + + def get_quote(%{data: %{"object" => _object}} = activity, _) do + object = Object.normalize(activity, fetch: false) + + if object.data["quoteUrl"] && object.data["quoteUrl"] != "" do + Activity.get_create_by_object_ap_id(object.data["quoteUrl"]) + else + nil + end + end + def render_content(%{data: %{"name" => name}} = object) when not is_nil(name) and name != "" do url = object.data["url"] || object.data["id"] @@ -715,11 +787,13 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do end end - defp build_emoji_map(emoji, users, current_user) do + defp build_emoji_map(emoji, users, url, current_user) do %{ - name: emoji, + name: Pleroma.Web.PleromaAPI.EmojiReactionView.emoji_name(emoji, url), count: length(users), - me: !!(current_user && current_user.ap_id in users) + url: MediaProxy.url(url), + me: !!(current_user && current_user.ap_id in users), + account_ids: Enum.map(users, fn user -> User.get_cached_by_ap_id(user).id end) } end @@ -746,8 +820,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do URI.merge(page_url_data, image_url_data) |> to_string end - defp build_image_url(_, _), do: nil - defp get_source_text(%{"content" => content} = _source) do content end @@ -767,4 +839,12 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do defp get_source_content_type(_source) do Utils.get_content_type(nil) end + + defp proxied_url(url, page_url_data) do + if is_binary(url) do + build_image_url(URI.parse(url), page_url_data) |> MediaProxy.url() + else + nil + end + end end diff --git a/lib/pleroma/web/mastodon_api/websocket_handler.ex b/lib/pleroma/web/mastodon_api/websocket_handler.ex @@ -9,124 +9,128 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do alias Pleroma.User alias Pleroma.Web.OAuth.Token alias Pleroma.Web.Streamer + alias Pleroma.Web.StreamerView - @behaviour :cowboy_websocket + @behaviour Phoenix.Socket.Transport # Client ping period. @tick :timer.seconds(30) - # Cowboy timeout period. - @timeout :timer.seconds(60) - # Hibernate every X messages - @hibernate_every 100 - - def init(%{qs: qs} = req, state) do - with params <- Enum.into(:cow_qs.parse_qs(qs), %{}), - sec_websocket <- :cowboy_req.header("sec-websocket-protocol", req, nil), - access_token <- Map.get(params, "access_token"), - {:ok, user, oauth_token} <- authenticate_request(access_token, sec_websocket), - {:ok, topic} <- Streamer.get_topic(params["stream"], user, oauth_token, params) do - req = - if sec_websocket do - :cowboy_req.set_resp_header("sec-websocket-protocol", sec_websocket, req) + + @impl Phoenix.Socket.Transport + def child_spec(_opts), do: :ignore + + # This only prepares the connection and is not in the process yet + @impl Phoenix.Socket.Transport + def connect(%{params: params} = transport_info) do + with access_token <- Map.get(params, "access_token"), + {:ok, user, oauth_token} <- authenticate_request(access_token), + {:ok, topic} <- + Streamer.get_topic(params["stream"], user, oauth_token, params) do + topics = + if topic do + [topic] else - req + [] end - {:cowboy_websocket, req, - %{user: user, topic: topic, oauth_token: oauth_token, count: 0, timer: nil}, - %{idle_timeout: @timeout}} + state = %{ + user: user, + topics: topics, + oauth_token: oauth_token, + count: 0, + timer: nil + } + + {:ok, state} else {:error, :bad_topic} -> - Logger.debug("#{__MODULE__} bad topic #{inspect(req)}") - req = :cowboy_req.reply(404, req) - {:ok, req, state} + Logger.debug("#{__MODULE__} bad topic #{inspect(transport_info)}") + + {:error, :bad_topic} {:error, :unauthorized} -> - Logger.debug("#{__MODULE__} authentication error: #{inspect(req)}") - req = :cowboy_req.reply(401, req) - {:ok, req, state} + Logger.debug("#{__MODULE__} authentication error: #{inspect(transport_info)}") + {:error, :unauthorized} end end - def websocket_init(state) do - Logger.debug( - "#{__MODULE__} accepted websocket connection for user #{(state.user || %{id: "anonymous"}).id}, topic #{state.topic}" - ) + # All subscriptions/links and messages cannot be created + # until the processed is launched with init/1 + @impl Phoenix.Socket.Transport + def init(state) do + Enum.each(state.topics, fn topic -> Streamer.add_socket(topic, state.oauth_token) end) - Streamer.add_socket(state.topic, state.oauth_token) - {:ok, %{state | timer: timer()}} - end + Process.send_after(self(), :ping, @tick) - # Client's Pong frame. - def websocket_handle(:pong, state) do - if state.timer, do: Process.cancel_timer(state.timer) - {:ok, %{state | timer: timer()}} + {:ok, state} end - # We only receive pings for now - def websocket_handle(:ping, state), do: {:ok, state} + @impl Phoenix.Socket.Transport + def handle_in({text, [opcode: :text]}, state) do + with {:ok, %{} = event} <- Jason.decode(text) do + handle_client_event(event, state) + else + _ -> + Logger.error("#{__MODULE__} received non-JSON event: #{inspect(text)}") + {:ok, state} + end + end - def websocket_handle(frame, state) do + def handle_in(frame, state) do Logger.error("#{__MODULE__} received frame: #{inspect(frame)}") {:ok, state} end - def websocket_info({:render_with_user, view, template, item}, state) do + @impl Phoenix.Socket.Transport + def handle_info({:render_with_user, view, template, item, topic}, state) do user = %User{} = User.get_cached_by_ap_id(state.user.ap_id) unless Streamer.filtered_by_user?(user, item) do - websocket_info({:text, view.render(template, item, user)}, %{state | user: user}) + message = view.render(template, item, user, topic) + {:push, {:text, message}, %{state | user: user}} else {:ok, state} end end - def websocket_info({:text, message}, state) do - # If the websocket processed X messages, force an hibernate/GC. - # We don't hibernate at every message to balance CPU usage/latency with RAM usage. - if state.count > @hibernate_every do - {:reply, {:text, message}, %{state | count: 0}, :hibernate} - else - {:reply, {:text, message}, %{state | count: state.count + 1}} - end + def handle_info({:text, text}, state) do + {:push, {:text, text}, state} end - # Ping tick. We don't re-queue a timer there, it is instead queued when :pong is received. - # As we hibernate there, reset the count to 0. - # If the client misses :pong, Cowboy will automatically timeout the connection after - # `@idle_timeout`. - def websocket_info(:tick, state) do - {:reply, :ping, %{state | timer: nil, count: 0}, :hibernate} + def handle_info(:ping, state) do + Process.send_after(self(), :ping, @tick) + + {:push, {:ping, ""}, state} end - def websocket_info(:close, state) do - {:stop, state} + def handle_info(:close, state) do + {:stop, {:closed, 'connection closed by server'}, state} end - # State can be `[]` only in case we terminate before switching to websocket, - # we already log errors for these cases in `init/1`, so just do nothing here - def terminate(_reason, _req, []), do: :ok + def handle_info(msg, state) do + Logger.debug("#{__MODULE__} received info: #{inspect(msg)}") + + {:ok, state} + end - def terminate(reason, _req, state) do + @impl Phoenix.Socket.Transport + def terminate(reason, state) do Logger.debug( - "#{__MODULE__} terminating websocket connection for user #{(state.user || %{id: "anonymous"}).id}, topic #{state.topic || "?"}: #{inspect(reason)}" + "#{__MODULE__} terminating websocket connection for user #{(state.user || %{id: "anonymous"}).id}, topics #{state.topics || "?"}: #{inspect(reason)})" ) - Streamer.remove_socket(state.topic) + Enum.each(state.topics, fn topic -> Streamer.remove_socket(topic) end) :ok end # Public streams without authentication. - defp authenticate_request(nil, nil) do + defp authenticate_request(nil) do {:ok, nil, nil} end # Authenticated streams. - defp authenticate_request(access_token, sec_websocket) do - token = access_token || sec_websocket - - with true <- is_bitstring(token), - oauth_token = %Token{user_id: user_id} <- Repo.get_by(Token, token: token), + defp authenticate_request(access_token) do + with oauth_token = %Token{user_id: user_id} <- Repo.get_by(Token, token: access_token), user = %User{} <- User.get_cached_by_id(user_id) do {:ok, user, oauth_token} else @@ -134,7 +138,110 @@ defmodule Pleroma.Web.MastodonAPI.WebsocketHandler do end end - defp timer do - Process.send_after(self(), :tick, @tick) + defp handle_client_event(%{"type" => "subscribe", "stream" => _topic} = params, state) do + with {_, {:ok, topic}} <- + {:topic, Streamer.get_topic(params["stream"], state.user, state.oauth_token, params)}, + {_, false} <- {:subscribed, topic in state.topics} do + Streamer.add_socket(topic, state.oauth_token) + + message = + StreamerView.render("pleroma_respond.json", %{type: "subscribe", result: "success"}) + + {:reply, :ok, {:text, message}, %{state | topics: [topic | state.topics]}} + else + {:subscribed, true} -> + message = + StreamerView.render("pleroma_respond.json", %{type: "subscribe", result: "ignored"}) + + {:reply, :error, {:text, message}, state} + + {:topic, {:error, error}} -> + message = + StreamerView.render("pleroma_respond.json", %{ + type: "subscribe", + result: "error", + error: error + }) + + {:reply, :error, {:text, message}, state} + end + end + + defp handle_client_event(%{"type" => "unsubscribe", "stream" => _topic} = params, state) do + with {_, {:ok, topic}} <- + {:topic, Streamer.get_topic(params["stream"], state.user, state.oauth_token, params)}, + {_, true} <- {:subscribed, topic in state.topics} do + Streamer.remove_socket(topic) + + message = + StreamerView.render("pleroma_respond.json", %{type: "unsubscribe", result: "success"}) + + {:reply, :ok, {:text, message}, %{state | topics: List.delete(state.topics, topic)}} + else + {:subscribed, false} -> + message = + StreamerView.render("pleroma_respond.json", %{type: "unsubscribe", result: "ignored"}) + + {:reply, :error, {:text, message}, state} + + {:topic, {:error, error}} -> + message = + StreamerView.render("pleroma_respond.json", %{ + type: "unsubscribe", + result: "error", + error: error + }) + + {:reply, :error, {:text, message}, state} + end + end + + defp handle_client_event( + %{"type" => "pleroma:authenticate", "token" => access_token} = _params, + state + ) do + with {:auth, nil, nil} <- {:auth, state.user, state.oauth_token}, + {:ok, user, oauth_token} <- authenticate_request(access_token) do + message = + StreamerView.render("pleroma_respond.json", %{ + type: "pleroma:authenticate", + result: "success" + }) + + {:reply, :ok, {:text, message}, %{state | user: user, oauth_token: oauth_token}} + else + {:auth, _, _} -> + message = + StreamerView.render("pleroma_respond.json", %{ + type: "pleroma:authenticate", + result: "error", + error: :already_authenticated + }) + + {:reply, :error, {:text, message}, state} + + _ -> + message = + StreamerView.render("pleroma_respond.json", %{ + type: "pleroma:authenticate", + result: "error", + error: :unauthorized + }) + + {:reply, :error, {:text, message}, state} + end + end + + defp handle_client_event(params, state) do + Logger.error("#{__MODULE__} received unknown event: #{inspect(params)}") + {:ok, state} + end + + def handle_error(conn, :unauthorized) do + Plug.Conn.send_resp(conn, 401, "Unauthorized") + end + + def handle_error(conn, _reason) do + Plug.Conn.send_resp(conn, 404, "Not Found") end end diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -12,6 +12,8 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do alias Pleroma.Web.MediaProxy alias Plug.Conn + plug(:sandbox) + def remote(conn, %{"sig" => sig64, "url" => url64}) do with {_, true} <- {:enabled, MediaProxy.enabled?()}, {:ok, url} <- MediaProxy.decode_url(sig64, url64), @@ -54,7 +56,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do media_proxy_url = MediaProxy.url(url) with {:ok, %{status: status} = head_response} when status in 200..299 <- - Pleroma.HTTP.request("HEAD", media_proxy_url, [], [], pool: :media) do + Pleroma.HTTP.request(:head, media_proxy_url, "", [], pool: :media) do content_type = Tesla.get_header(head_response, "content-type") content_length = Tesla.get_header(head_response, "content-length") content_length = content_length && String.to_integer(content_length) @@ -202,4 +204,9 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do defp media_proxy_opts do Config.get([:media_proxy, :proxy_opts], []) end + + defp sandbox(conn, _params) do + conn + |> merge_resp_headers([{"content-security-policy", "sandbox;"}]) + end end diff --git a/lib/pleroma/web/metadata/providers/rel_me.ex b/lib/pleroma/web/metadata/providers/rel_me.ex @@ -8,12 +8,20 @@ defmodule Pleroma.Web.Metadata.Providers.RelMe do @impl Provider def build_tags(%{user: user}) do - bio_tree = Floki.parse_fragment!(user.bio) + profile_tree = + user.bio + |> append_fields_tag(user.fields) + |> Floki.parse_fragment!() - (Floki.attribute(bio_tree, "link[rel~=me]", "href") ++ - Floki.attribute(bio_tree, "a[rel~=me]", "href")) + (Floki.attribute(profile_tree, "link[rel~=me]", "href") ++ + Floki.attribute(profile_tree, "a[rel~=me]", "href")) |> Enum.map(fn link -> {:link, [rel: "me", href: link], []} end) end + + defp append_fields_tag(bio, fields) do + fields + |> Enum.reduce(bio, fn %{"value" => v}, res -> res <> v end) + end end diff --git a/lib/pleroma/web/metadata/providers/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex @@ -76,9 +76,10 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do {:meta, [name: "twitter:card", content: "summary_large_image"], []}, {:meta, [ - name: "twitter:player", + name: "twitter:image", content: MediaProxy.url(url["href"]) - ], []} + ], []}, + {:meta, [name: "twitter:image:alt", content: truncate(attachment["name"])], []} | acc ] |> maybe_add_dimensions(url) @@ -130,4 +131,12 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do metadata end end + + defp truncate(nil), do: "" + + defp truncate(text) do + # truncate to 420 characters + # see https://developer.twitter.com/en/docs/twitter-for-websites/cards/overview/markup + Pleroma.Formatter.truncate(text, 420) + end end diff --git a/lib/pleroma/web/metadata/utils.ex b/lib/pleroma/web/metadata/utils.ex @@ -30,12 +30,13 @@ defmodule Pleroma.Web.Metadata.Utils do |> scrub_html_and_truncate_object_field(object) end - def scrub_html_and_truncate(content, max_length \\ 200) when is_binary(content) do + def scrub_html_and_truncate(content, max_length \\ 200, omission \\ "...") + when is_binary(content) do content |> scrub_html |> Emoji.Formatter.demojify() |> HtmlEntities.decode() - |> Formatter.truncate(max_length) + |> Formatter.truncate(max_length, omission) end def scrub_html(content) when is_binary(content) do diff --git a/lib/pleroma/web/multipart.ex b/lib/pleroma/web/multipart.ex @@ -0,0 +1,22 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +# <https://hexdocs.pm/plug/Plug.Parsers.MULTIPART.html#module-dynamic-configuration> +defmodule Pleroma.Web.Multipart do + @multipart Plug.Parsers.MULTIPART + + def init(opts) do + opts + end + + def parse(conn, "multipart", subtype, headers, opts) do + length = Pleroma.Config.get([:instance, :upload_limit]) + opts = @multipart.init([length: length] ++ opts) + @multipart.parse(conn, "multipart", subtype, headers, opts) + end + + def parse(conn, _type, _subtype, _headers, _opts) do + {:next, conn} + end +end diff --git a/lib/pleroma/web/nodeinfo/nodeinfo.ex b/lib/pleroma/web/nodeinfo/nodeinfo.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.Nodeinfo.Nodeinfo do alias Pleroma.Config alias Pleroma.Stats alias Pleroma.User - alias Pleroma.Web.Federator.Publisher + alias Pleroma.Web.ActivityPub.Publisher alias Pleroma.Web.MastodonAPI.InstanceView # returns a nodeinfo 2.0 map, since 2.1 just adds a repository field diff --git a/lib/pleroma/web/o_auth/authorization.ex b/lib/pleroma/web/o_auth/authorization.ex @@ -28,7 +28,7 @@ defmodule Pleroma.Web.OAuth.Authorization do end @spec create_authorization(App.t(), User.t() | %{}, [String.t()] | nil) :: - {:ok, Authorization.t()} | {:error, Changeset.t()} + {:ok, Authorization.t()} | {:error, Ecto.Changeset.t()} def create_authorization(%App{} = app, %User{} = user, scopes \\ nil) do %{ scopes: scopes || app.scopes, @@ -39,7 +39,7 @@ defmodule Pleroma.Web.OAuth.Authorization do |> Repo.insert() end - @spec create_changeset(map()) :: Changeset.t() + @spec create_changeset(map()) :: Ecto.Changeset.t() def create_changeset(attrs \\ %{}) do %Authorization{} |> cast(attrs, [:user_id, :app_id, :scopes, :valid_until]) @@ -58,7 +58,7 @@ defmodule Pleroma.Web.OAuth.Authorization do put_change(changeset, :valid_until, NaiveDateTime.add(NaiveDateTime.utc_now(), lifespan)) end - @spec use_changeset(Authtorizatiton.t(), map()) :: Changeset.t() + @spec use_changeset(Authorization.t(), map()) :: Ecto.Changeset.t() def use_changeset(%Authorization{} = auth, params) do auth |> cast(params, [:used]) @@ -66,7 +66,7 @@ defmodule Pleroma.Web.OAuth.Authorization do end @spec use_token(Authorization.t()) :: - {:ok, Authorization.t()} | {:error, Changeset.t()} | {:error, String.t()} + {:ok, Authorization.t()} | {:error, Ecto.Changeset.t()} | {:error, String.t()} def use_token(%Authorization{used: false, valid_until: valid_until} = auth) do if NaiveDateTime.diff(NaiveDateTime.utc_now(), valid_until) < 0 do Repo.update(use_changeset(auth, %{used: true})) diff --git a/lib/pleroma/web/o_auth/o_auth_controller.ex b/lib/pleroma/web/o_auth/o_auth_controller.ex @@ -310,7 +310,7 @@ defmodule Pleroma.Web.OAuth.OAuthController do after_token_exchange(conn, %{token: token}) else _error -> - handle_token_exchange_error(conn, :invalid_credentails) + handle_token_exchange_error(conn, :invalid_credentials) end end @@ -610,13 +610,8 @@ defmodule Pleroma.Web.OAuth.OAuthController do end end - @spec validate_scopes(App.t(), map() | list()) :: + @spec validate_scopes(App.t(), list()) :: {:ok, list()} | {:error, :missing_scopes | :unsupported_scopes} - defp validate_scopes(%App{} = app, params) when is_map(params) do - requested_scopes = Scopes.fetch_scopes(params, app.scopes) - validate_scopes(app, requested_scopes) - end - defp validate_scopes(%App{} = app, requested_scopes) when is_list(requested_scopes) do Scopes.validate(requested_scopes, app.scopes) end diff --git a/lib/pleroma/web/o_auth/token.ex b/lib/pleroma/web/o_auth/token.ex @@ -56,7 +56,8 @@ defmodule Pleroma.Web.OAuth.Token do |> Repo.find_resource() end - @spec exchange_token(App.t(), Authorization.t()) :: {:ok, Token.t()} | {:error, Changeset.t()} + @spec exchange_token(App.t(), Authorization.t()) :: + {:ok, Token.t()} | {:error, Ecto.Changeset.t()} def exchange_token(app, auth) do with {:ok, auth} <- Authorization.use_token(auth), true <- auth.app_id == app.id do @@ -95,7 +96,7 @@ defmodule Pleroma.Web.OAuth.Token do |> validate_required([:valid_until]) end - @spec create(App.t(), User.t(), map()) :: {:ok, Token} | {:error, Changeset.t()} + @spec create(App.t(), User.t(), map()) :: {:ok, Token} | {:error, Ecto.Changeset.t()} def create(%App{} = app, %User{} = user, attrs \\ %{}) do with {:ok, token} <- do_create(app, user, attrs) do if Pleroma.Config.get([:oauth2, :clean_expired_tokens]) do @@ -137,9 +138,9 @@ defmodule Pleroma.Web.OAuth.Token do |> Repo.all() end - def is_expired?(%__MODULE__{valid_until: valid_until}) do + def expired?(%__MODULE__{valid_until: valid_until}) do NaiveDateTime.diff(NaiveDateTime.utc_now(), valid_until) > 0 end - def is_expired?(_), do: false + def expired?(_), do: false end diff --git a/lib/pleroma/web/o_auth/token/query.ex b/lib/pleroma/web/o_auth/token/query.ex @@ -9,10 +9,10 @@ defmodule Pleroma.Web.OAuth.Token.Query do import Ecto.Query, only: [from: 2] - @type query :: Ecto.Queryable.t() | Token.t() - alias Pleroma.Web.OAuth.Token + @type query :: Ecto.Queryable.t() | Token.t() + @spec get_by_refresh_token(query, String.t()) :: query def get_by_refresh_token(query \\ Token, refresh_token) do from(q in query, where: q.refresh_token == ^refresh_token) diff --git a/lib/pleroma/web/o_status/o_status_controller.ex b/lib/pleroma/web/o_status/o_status_controller.ex @@ -37,7 +37,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do with id <- Endpoint.url() <> conn.request_path, {_, %Activity{} = activity} <- {:activity, Activity.get_create_by_object_ap_id_with_object(id)}, - {_, true} <- {:public?, Visibility.is_public?(activity)} do + {_, true} <- {:public?, Visibility.public?(activity)} do redirect(conn, to: "/notice/#{activity.id}") else reason when reason in [{:public?, false}, {:activity, nil}] -> @@ -56,7 +56,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do def activity(conn, _params) do with id <- Endpoint.url() <> conn.request_path, {_, %Activity{} = activity} <- {:activity, Activity.normalize(id)}, - {_, true} <- {:public?, Visibility.is_public?(activity)} do + {_, true} <- {:public?, Visibility.public?(activity)} do redirect(conn, to: "/notice/#{activity.id}") else reason when reason in [{:public?, false}, {:activity, nil}] -> @@ -69,7 +69,7 @@ defmodule Pleroma.Web.OStatus.OStatusController do def notice(%{assigns: %{format: format}} = conn, %{"id" => id}) do with {_, %Activity{} = activity} <- {:activity, Activity.get_by_id_with_object(id)}, - {_, true} <- {:public?, Visibility.is_public?(activity)}, + {_, true} <- {:public?, Visibility.public?(activity)}, %User{} = user <- User.get_cached_by_ap_id(activity.data["actor"]) do cond do format in ["json", "activity+json"] -> @@ -106,13 +106,12 @@ defmodule Pleroma.Web.OStatus.OStatusController do # Returns an HTML embedded <audio> or <video> player suitable for embed iframes. def notice_player(conn, %{"id" => id}) do with %Activity{data: %{"type" => "Create"}} = activity <- Activity.get_by_id_with_object(id), - true <- Visibility.is_public?(activity), + true <- Visibility.public?(activity), {_, true} <- {:visible?, Visibility.visible_for_user?(activity, _reading_user = nil)}, %Object{} = object <- Object.normalize(activity, fetch: false), %{data: %{"attachment" => [%{"url" => [url | _]} | _]}} <- object, true <- String.starts_with?(url["mediaType"], ["audio", "video"]) do conn - |> put_layout(:metadata_player) |> put_resp_header("x-frame-options", "ALLOW") |> put_resp_header( "content-security-policy", diff --git a/lib/pleroma/web/pleroma_api/controllers/bookmark_folder_controller.ex b/lib/pleroma/web/pleroma_api/controllers/bookmark_folder_controller.ex @@ -0,0 +1,68 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.BookmarkFolderController do + use Pleroma.Web, :controller + + alias Pleroma.BookmarkFolder + alias Pleroma.Web.Plugs.OAuthScopesPlug + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + + # Note: scope not present in Mastodon: read:bookmarks + plug(OAuthScopesPlug, %{scopes: ["read:bookmarks"]} when action == :index) + + # Note: scope not present in Mastodon: write:bookmarks + plug( + OAuthScopesPlug, + %{scopes: ["write:bookmarks"]} when action in [:create, :update, :delete] + ) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaBookmarkFolderOperation + + action_fallback(Pleroma.Web.MastodonAPI.FallbackController) + + def index(%{assigns: %{user: user}} = conn, _params) do + with folders <- BookmarkFolder.for_user(user.id) do + conn + |> render("index.json", %{folders: folders, as: :folder}) + end + end + + def create( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: params}}} = conn, + _ + ) do + with {:ok, folder} <- BookmarkFolder.create(user.id, params[:name], params[:emoji]) do + render(conn, "show.json", folder: folder) + end + end + + def update( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{body_params: params, params: %{id: id}}} + } = conn, + _ + ) do + with true <- BookmarkFolder.belongs_to_user?(id, user.id), + {:ok, folder} <- BookmarkFolder.update(id, params[:name], params[:emoji]) do + render(conn, "show.json", folder: folder) + else + false -> {:error, :forbidden} + end + end + + def delete( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, + _ + ) do + with true <- BookmarkFolder.belongs_to_user?(id, user.id), + {:ok, folder} <- BookmarkFolder.delete(id) do + render(conn, "show.json", folder: folder) + else + false -> {:error, :forbidden} + end + end +end diff --git a/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex b/lib/pleroma/web/pleroma_api/controllers/chat_controller.ex @@ -38,14 +38,24 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do %{scopes: ["read:chats"]} when action in [:messages, :index, :index2, :show] ) - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.ChatOperation - def delete_message(%{assigns: %{user: %{id: user_id} = user}} = conn, %{ - message_id: message_id, - id: chat_id - }) do + def delete_message( + %{ + assigns: %{user: %{id: user_id} = user}, + private: %{ + open_api_spex: %{ + params: %{ + message_id: message_id, + id: chat_id + } + } + } + } = conn, + _ + ) do with %MessageReference{} = cm_ref <- MessageReference.get_by_id(message_id), ^chat_id <- to_string(cm_ref.chat_id), @@ -72,11 +82,14 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do defp remove_or_delete(cm_ref, _), do: MessageReference.delete(cm_ref) def post_chat_message( - %{body_params: params, assigns: %{user: user}} = conn, - %{id: id} + %{ + private: %{open_api_spex: %{body_params: params, params: %{id: id}}}, + assigns: %{user: user} + } = conn, + _ ) do with {:ok, chat} <- Chat.get_by_user_and_id(user, id), - %User{} = recipient <- User.get_cached_by_ap_id(chat.recipient), + {_, %User{} = recipient} <- {:user, User.get_cached_by_ap_id(chat.recipient)}, {:ok, activity} <- CommonAPI.post_chat_message(user, recipient, params[:content], media_id: params[:media_id], @@ -97,12 +110,20 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do conn |> put_status(:bad_request) |> json(%{error: message}) + + {:user, nil} -> + conn + |> put_status(:bad_request) + |> json(%{error: "Recipient does not exist"}) end end def mark_message_as_read( - %{assigns: %{user: %{id: user_id}}} = conn, - %{id: chat_id, message_id: message_id} + %{ + assigns: %{user: %{id: user_id}}, + private: %{open_api_spex: %{params: %{id: chat_id, message_id: message_id}}} + } = conn, + _ ) do with %MessageReference{} = cm_ref <- MessageReference.get_by_id(message_id), ^chat_id <- to_string(cm_ref.chat_id), @@ -115,8 +136,16 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do end def mark_as_read( - %{body_params: %{last_read_id: last_read_id}, assigns: %{user: user}} = conn, - %{id: id} + %{ + assigns: %{user: user}, + private: %{ + open_api_spex: %{ + body_params: %{last_read_id: last_read_id}, + params: %{id: id} + } + } + } = conn, + _ ) do with {:ok, chat} <- Chat.get_by_user_and_id(user, id), {_n, _} <- MessageReference.set_all_seen_for_chat(chat, last_read_id) do @@ -124,7 +153,13 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do end end - def messages(%{assigns: %{user: user}} = conn, %{id: id} = params) do + def messages( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{params: %{id: id} = params}} + } = conn, + _ + ) do with {:ok, chat} <- Chat.get_by_user_and_id(user, id) do chat_message_refs = chat @@ -138,7 +173,7 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do end end - def index(%{assigns: %{user: user}} = conn, params) do + def index(%{assigns: %{user: user}, private: %{open_api_spex: %{params: params}}} = conn, _) do chats = index_query(user, params) |> Repo.all() @@ -146,7 +181,7 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do render(conn, "index.json", chats: chats) end - def index2(%{assigns: %{user: user}} = conn, params) do + def index2(%{assigns: %{user: user}, private: %{open_api_spex: %{params: params}}} = conn, _) do chats = index_query(user, params) |> Pagination.fetch_paginated(params) @@ -166,14 +201,14 @@ defmodule Pleroma.Web.PleromaAPI.ChatController do |> where([c], c.recipient not in ^exclude_users) end - def create(%{assigns: %{user: user}} = conn, %{id: id}) do + def create(%{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, _) do with %User{ap_id: recipient} <- User.get_cached_by_id(id), {:ok, %Chat{} = chat} <- Chat.get_or_create(user.id, recipient) do render(conn, "show.json", chat: chat) end end - def show(%{assigns: %{user: user}} = conn, %{id: id}) do + def show(%{assigns: %{user: user}, private: %{open_api_spex: %{params: %{id: id}}}} = conn, _) do with {:ok, chat} <- Chat.get_by_user_and_id(user, id) do render(conn, "show.json", chat: chat) end diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_file_controller.ex @@ -8,7 +8,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiFileController do alias Pleroma.Emoji.Pack alias Pleroma.Web.ApiSpec - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug( Pleroma.Web.Plugs.OAuthScopesPlug, @@ -22,7 +22,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiFileController do defdelegate open_api_operation(action), to: ApiSpec.PleromaEmojiFileOperation - def create(%{body_params: params} = conn, %{name: pack_name}) do + def create( + %{private: %{open_api_spex: %{body_params: params, params: %{name: pack_name}}}} = conn, + _ + ) do filename = params[:filename] || get_filename(params[:file]) shortcode = params[:shortcode] || Path.basename(filename, Path.extname(filename)) @@ -49,7 +52,17 @@ defmodule Pleroma.Web.PleromaAPI.EmojiFileController do end end - def update(%{body_params: %{shortcode: shortcode} = params} = conn, %{name: pack_name}) do + def update( + %{ + private: %{ + open_api_spex: %{ + body_params: %{shortcode: shortcode} = params, + params: %{name: pack_name} + } + } + } = conn, + _ + ) do new_shortcode = params[:new_shortcode] new_filename = params[:new_filename] force = params[:force] @@ -80,7 +93,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiFileController do end end - def delete(conn, %{name: pack_name, shortcode: shortcode}) do + def delete( + %{private: %{open_api_spex: %{params: %{name: pack_name, shortcode: shortcode}}}} = conn, + _ + ) do with {:ok, pack} <- Pack.load_pack(pack_name), {:ok, pack} <- Pack.delete_file(pack, shortcode) do json(conn, pack.files) diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do alias Pleroma.Emoji.Pack - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug( Pleroma.Web.Plugs.OAuthScopesPlug, @@ -26,7 +26,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaEmojiPackOperation - def remote(conn, params) do + def remote(%{private: %{open_api_spex: %{params: params}}} = conn, _) do with {:ok, packs} <- Pack.list_remote(url: params.url, page_size: params.page_size, page: params.page) do json(conn, packs) @@ -38,7 +38,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do end end - def index(conn, params) do + def index(%{private: %{open_api_spex: %{params: params}}} = conn, _) do emoji_path = [:instance, :static_dir] |> Pleroma.Config.get!() @@ -61,7 +61,11 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do end end - def show(conn, %{name: name, page: page, page_size: page_size}) do + def show( + %{private: %{open_api_spex: %{params: %{name: name, page: page, page_size: page_size}}}} = + conn, + _ + ) do name = String.trim(name) with {:ok, pack} <- Pack.show(name: name, page: page, page_size: page_size) do @@ -90,7 +94,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do end end - def archive(conn, %{name: name}) do + def archive(%{private: %{open_api_spex: %{params: %{name: name}}}} = conn, _) do with {:ok, archive} <- Pack.get_archive(name) do send_download(conn, {:binary, archive}, filename: "#{name}.zip") else @@ -109,7 +113,10 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do end end - def download(%{body_params: %{url: url, name: name} = params} = conn, _) do + def download( + %{private: %{open_api_spex: %{body_params: %{url: url, name: name} = params}}} = conn, + _ + ) do with {:ok, _pack} <- Pack.download(name, url, params[:as]) do json(conn, "ok") else @@ -130,7 +137,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do end end - def create(conn, %{name: name}) do + def create(%{private: %{open_api_spex: %{params: %{name: name}}}} = conn, _) do name = String.trim(name) with {:ok, _pack} <- Pack.create(name) do @@ -159,7 +166,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do end end - def delete(conn, %{name: name}) do + def delete(%{private: %{open_api_spex: %{params: %{name: name}}}} = conn, _) do name = String.trim(name) with {:ok, deleted} when deleted != [] <- Pack.delete(name) do @@ -184,7 +191,11 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do end end - def update(%{body_params: %{metadata: metadata}} = conn, %{name: name}) do + def update( + %{private: %{open_api_spex: %{body_params: %{metadata: metadata}, params: %{name: name}}}} = + conn, + _ + ) do with {:ok, pack} <- Pack.update_metadata(name, metadata) do json(conn, pack.pack) else diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex @@ -28,8 +28,8 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionController do def index(%{assigns: %{user: user}} = conn, %{id: activity_id} = params) do with true <- Pleroma.Config.get([:instance, :show_reactions]), %Activity{} = activity <- Activity.get_by_id_with_object(activity_id), - %Object{data: %{"reactions" => reactions}} when is_list(reactions) <- - Object.normalize(activity, fetch: false) do + %Object{} = object <- Object.normalize(activity, fetch: false), + reactions <- Object.get_emoji_reactions(object) do reactions = reactions |> filter(params) @@ -50,29 +50,32 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionController do if not with_muted, do: User.cached_muted_users_ap_ids(user), else: [] end - filter_emoji = fn emoji, users -> + filter_emoji = fn emoji, users, url -> case Enum.reject(users, &(&1 in exclude_ap_ids)) do [] -> nil - users -> {emoji, users} + users -> {emoji, users, url} end end reactions |> Stream.map(fn - [emoji, users] when is_list(users) -> filter_emoji.(emoji, users) - {emoji, users} when is_list(users) -> filter_emoji.(emoji, users) - _ -> nil + [emoji, users, url] when is_list(users) -> filter_emoji.(emoji, users, url) end) |> Stream.reject(&is_nil/1) end defp filter(reactions, %{emoji: emoji}) when is_binary(emoji) do - Enum.filter(reactions, fn [e, _] -> e == emoji end) + Enum.filter(reactions, fn [e, _, _] -> e == emoji end) end defp filter(reactions, _), do: reactions def create(%{assigns: %{user: user}} = conn, %{id: activity_id, emoji: emoji}) do + emoji = + emoji + |> Pleroma.Emoji.fully_qualify_emoji() + |> Pleroma.Emoji.maybe_quote() + with {:ok, _activity} <- CommonAPI.react_with_emoji(activity_id, user, emoji) do activity = Activity.get_by_id(activity_id) @@ -83,6 +86,11 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionController do end def delete(%{assigns: %{user: user}} = conn, %{id: activity_id, emoji: emoji}) do + emoji = + emoji + |> Pleroma.Emoji.fully_qualify_emoji() + |> Pleroma.Emoji.maybe_quote() + with {:ok, _activity} <- CommonAPI.unreact_with_emoji(activity_id, user, emoji) do activity = Activity.get_by_id(activity_id) diff --git a/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex b/lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex @@ -10,7 +10,7 @@ defmodule Pleroma.Web.PleromaAPI.MascotController do alias Pleroma.Web.Plugs.OAuthScopesPlug plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:update]) - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug(OAuthScopesPlug, %{scopes: ["read:accounts"]} when action == :show) plug(OAuthScopesPlug, %{scopes: ["write:accounts"]} when action != :show) @@ -22,9 +22,13 @@ defmodule Pleroma.Web.PleromaAPI.MascotController do end @doc "PUT /api/v1/pleroma/mascot" - def update(%{assigns: %{user: user}, body_params: %{file: file}} = conn, _) do + def update( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: %{file: file}}}} = + conn, + _ + ) do with {:content_type, "image" <> _} <- {:content_type, file.content_type}, - {:ok, object} <- ActivityPub.upload(file, actor: User.ap_id(user)) do + {_, {:ok, object}} <- {:upload, ActivityPub.upload(file, actor: User.ap_id(user))} do attachment = render_attachment(object) {:ok, _user} = User.mascot_update(user, attachment) @@ -32,6 +36,9 @@ defmodule Pleroma.Web.PleromaAPI.MascotController do else {:content_type, _} -> render_error(conn, :unsupported_media_type, "mascots can only be images") + + {:upload, {:error, _}} -> + render_error(conn, :error, "error uploading file") end end diff --git a/lib/pleroma/web/pleroma_api/controllers/notification_controller.ex b/lib/pleroma/web/pleroma_api/controllers/notification_controller.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.PleromaAPI.NotificationController do alias Pleroma.Notification - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) plug( Pleroma.Web.Plugs.OAuthScopesPlug, @@ -16,9 +16,16 @@ defmodule Pleroma.Web.PleromaAPI.NotificationController do defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaNotificationOperation - def mark_as_read(%{assigns: %{user: user}, body_params: %{id: notification_id}} = conn, _) do - with {:ok, notification} <- Notification.read_one(user, notification_id) do - render(conn, "show.json", notification: notification, for: user) + def mark_as_read( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{body_params: %{id: notification_id}}} + } = conn, + _ + ) do + with {:ok, _} <- Notification.read_one(user, notification_id) do + conn + |> json("ok") else {:error, message} -> conn @@ -27,12 +34,19 @@ defmodule Pleroma.Web.PleromaAPI.NotificationController do end end - def mark_as_read(%{assigns: %{user: user}, body_params: %{max_id: max_id}} = conn, _) do - notifications = - user - |> Notification.set_read_up_to(max_id) - |> Enum.take(80) - - render(conn, "index.json", notifications: notifications, for: user) + def mark_as_read( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: %{max_id: max_id}}}} = + conn, + _ + ) do + with {:ok, _} <- Notification.set_read_up_to(user, max_id) do + conn + |> json("ok") + else + {:error, message} -> + conn + |> put_status(:bad_request) + |> json(%{"error" => message}) + end end end diff --git a/lib/pleroma/web/pleroma_api/controllers/status_controller.ex b/lib/pleroma/web/pleroma_api/controllers/status_controller.ex @@ -0,0 +1,66 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.StatusController do + use Pleroma.Web, :controller + + import Pleroma.Web.ControllerHelper, only: [add_link_headers: 2] + + require Ecto.Query + require Pleroma.Constants + + alias Pleroma.Activity + alias Pleroma.User + alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Visibility + alias Pleroma.Web.MastodonAPI.StatusView + alias Pleroma.Web.Plugs.OAuthScopesPlug + + plug(Pleroma.Web.ApiSpec.CastAndValidate) + + action_fallback(Pleroma.Web.MastodonAPI.FallbackController) + + plug( + OAuthScopesPlug, + %{scopes: ["read:statuses"], fallback: :proceed_unauthenticated} when action == :quotes + ) + + defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaStatusOperation + + @doc "GET /api/v1/pleroma/statuses/:id/quotes" + def quotes(%{assigns: %{user: user}} = conn, %{id: id} = params) do + with %Activity{object: object} = activity <- Activity.get_by_id_with_object(id), + true <- Visibility.visible_for_user?(activity, user) do + params = + params + |> Map.put(:type, "Create") + |> Map.put(:blocking_user, user) + |> Map.put(:quote_url, object.data["id"]) + + recipients = + if user do + [Pleroma.Constants.as_public()] ++ [user.ap_id | User.following(user)] + else + [Pleroma.Constants.as_public()] + end + + activities = + recipients + |> ActivityPub.fetch_activities(params) + |> Enum.reverse() + + conn + |> add_link_headers(activities) + |> put_view(StatusView) + |> render("index.json", + activities: activities, + for: user, + as: :activity + ) + else + nil -> {:error, :not_found} + false -> {:error, :not_found} + end + end +end diff --git a/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex b/lib/pleroma/web/pleroma_api/controllers/user_import_controller.ex @@ -15,14 +15,21 @@ defmodule Pleroma.Web.PleromaAPI.UserImportController do plug(OAuthScopesPlug, %{scopes: ["follow", "write:blocks"]} when action == :blocks) plug(OAuthScopesPlug, %{scopes: ["follow", "write:mutes"]} when action == :mutes) - plug(Pleroma.Web.ApiSpec.CastAndValidate) + plug(Pleroma.Web.ApiSpec.CastAndValidate, replace_params: false) defdelegate open_api_operation(action), to: ApiSpec.UserImportOperation - def follow(%{body_params: %{list: %Plug.Upload{path: path}}} = conn, _) do - follow(%Plug.Conn{conn | body_params: %{list: File.read!(path)}}, %{}) + def follow( + %{private: %{open_api_spex: %{body_params: %{list: %Plug.Upload{path: path}}}}} = conn, + _ + ) do + list = File.read!(path) + do_follow(conn, list) end - def follow(%{assigns: %{user: follower}, body_params: %{list: list}} = conn, _) do + def follow(%{private: %{open_api_spex: %{body_params: %{list: list}}}} = conn, _), + do: do_follow(conn, list) + + def do_follow(%{assigns: %{user: follower}} = conn, list) do identifiers = list |> String.split("\n") @@ -35,20 +42,34 @@ defmodule Pleroma.Web.PleromaAPI.UserImportController do json(conn, "job started") end - def blocks(%{body_params: %{list: %Plug.Upload{path: path}}} = conn, _) do - blocks(%Plug.Conn{conn | body_params: %{list: File.read!(path)}}, %{}) + def blocks( + %{private: %{open_api_spex: %{body_params: %{list: %Plug.Upload{path: path}}}}} = conn, + _ + ) do + list = File.read!(path) + do_block(conn, list) end - def blocks(%{assigns: %{user: blocker}, body_params: %{list: list}} = conn, _) do + def blocks(%{private: %{open_api_spex: %{body_params: %{list: list}}}} = conn, _), + do: do_block(conn, list) + + defp do_block(%{assigns: %{user: blocker}} = conn, list) do User.Import.blocks_import(blocker, prepare_user_identifiers(list)) json(conn, "job started") end - def mutes(%{body_params: %{list: %Plug.Upload{path: path}}} = conn, _) do - mutes(%Plug.Conn{conn | body_params: %{list: File.read!(path)}}, %{}) + def mutes( + %{private: %{open_api_spex: %{body_params: %{list: %Plug.Upload{path: path}}}}} = conn, + _ + ) do + list = File.read!(path) + do_mute(conn, list) end - def mutes(%{assigns: %{user: user}, body_params: %{list: list}} = conn, _) do + def mutes(%{private: %{open_api_spex: %{body_params: %{list: list}}}} = conn, _), + do: do_mute(conn, list) + + defp do_mute(%{assigns: %{user: user}} = conn, list) do User.Import.mutes_import(user, prepare_user_identifiers(list)) json(conn, "job started") end diff --git a/lib/pleroma/web/pleroma_api/views/backup_view.ex b/lib/pleroma/web/pleroma_api/views/backup_view.ex @@ -9,12 +9,22 @@ defmodule Pleroma.Web.PleromaAPI.BackupView do alias Pleroma.Web.CommonAPI.Utils def render("show.json", %{backup: %Backup{} = backup}) do + # To deal with records before the migration + state = + if backup.state == :invalid do + if backup.processed, do: :complete, else: :failed + else + backup.state + end + %{ id: backup.id, content_type: backup.content_type, url: download_url(backup), file_size: backup.file_size, processed: backup.processed, + state: to_string(state), + processed_number: backup.processed_number, inserted_at: Utils.to_masto_date(backup.inserted_at) } end diff --git a/lib/pleroma/web/pleroma_api/views/bookmark_folder_view.ex b/lib/pleroma/web/pleroma_api/views/bookmark_folder_view.ex @@ -0,0 +1,42 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.BookmarkFolderView do + use Pleroma.Web, :view + + alias Pleroma.BookmarkFolder + alias Pleroma.Emoji + alias Pleroma.Web.Endpoint + + def render("show.json", %{folder: %BookmarkFolder{} = folder}) do + %{ + id: folder.id |> to_string(), + name: folder.name, + emoji: folder.emoji, + emoji_url: get_emoji_url(folder.emoji) + } + end + + def render("index.json", %{folders: folders} = opts) do + render_many(folders, __MODULE__, "show.json", Map.delete(opts, :folders)) + end + + defp get_emoji_url(nil) do + nil + end + + defp get_emoji_url(emoji) do + if Emoji.unicode?(emoji) do + nil + else + emoji = Emoji.get(emoji) + + if emoji != nil do + Endpoint.url() |> URI.merge(emoji.file) |> to_string() + else + nil + end + end + end +end diff --git a/lib/pleroma/web/pleroma_api/views/chat/message_reference_view.ex b/lib/pleroma/web/pleroma_api/views/chat/message_reference_view.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.PleromaAPI.Chat.MessageReferenceView do alias Pleroma.User alias Pleroma.Web.CommonAPI.Utils alias Pleroma.Web.MastodonAPI.StatusView + alias Pleroma.Web.RichMedia.Card @cachex Pleroma.Config.get([:cachex, :provider], Cachex) @@ -23,6 +24,12 @@ defmodule Pleroma.Web.PleromaAPI.Chat.MessageReferenceView do } } ) do + card = + case Card.get_by_object(object) do + %Card{} = card_data -> StatusView.render("card.json", card_data) + _ -> nil + end + %{ id: id |> to_string(), content: chat_message["content"], @@ -34,11 +41,7 @@ defmodule Pleroma.Web.PleromaAPI.Chat.MessageReferenceView do chat_message["attachment"] && StatusView.render("attachment.json", attachment: chat_message["attachment"]), unread: unread, - card: - StatusView.render( - "card.json", - Pleroma.Web.RichMedia.Helpers.fetch_data_for_object(object) - ) + card: card } |> put_idempotency_key() end diff --git a/lib/pleroma/web/pleroma_api/views/emoji_reaction_view.ex b/lib/pleroma/web/pleroma_api/views/emoji_reaction_view.ex @@ -7,17 +7,30 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionView do alias Pleroma.Web.MastodonAPI.AccountView + def emoji_name(emoji, nil), do: emoji + + def emoji_name(emoji, url) do + url = URI.parse(url) + + if url.host == Pleroma.Web.Endpoint.host() do + emoji + else + "#{emoji}@#{url.host}" + end + end + def render("index.json", %{emoji_reactions: emoji_reactions} = opts) do render_many(emoji_reactions, __MODULE__, "show.json", opts) end - def render("show.json", %{emoji_reaction: {emoji, user_ap_ids}, user: user}) do + def render("show.json", %{emoji_reaction: {emoji, user_ap_ids, url}, user: user}) do users = fetch_users(user_ap_ids) %{ - name: emoji, + name: emoji_name(emoji, url), count: length(users), accounts: render(AccountView, "index.json", users: users, for: user), + url: Pleroma.Web.MediaProxy.url(url), me: !!(user && user.ap_id in user_ap_ids) } end diff --git a/lib/pleroma/web/pleroma_api/views/scrobble_view.ex b/lib/pleroma/web/pleroma_api/views/scrobble_view.ex @@ -27,6 +27,7 @@ defmodule Pleroma.Web.PleromaAPI.ScrobbleView do title: object.data["title"] |> HTML.strip_tags(), artist: object.data["artist"] |> HTML.strip_tags(), album: object.data["album"] |> HTML.strip_tags(), + externalLink: object.data["externalLink"], length: object.data["length"] } end diff --git a/lib/pleroma/web/plugs/authentication_plug.ex b/lib/pleroma/web/plugs/authentication_plug.ex @@ -38,10 +38,6 @@ defmodule Pleroma.Web.Plugs.AuthenticationPlug do def call(conn, _), do: conn - def checkpw(password, "$6" <> _ = password_hash) do - :crypt.crypt(password, password_hash) == password_hash - end - def checkpw(password, "$2" <> _ = password_hash) do # Handle bcrypt passwords for Mastodon migration Bcrypt.verify_pass(password, password_hash) @@ -60,10 +56,6 @@ defmodule Pleroma.Web.Plugs.AuthenticationPlug do do_update_password(user, password) end - def maybe_update_password(%User{password_hash: "$6" <> _} = user, password) do - do_update_password(user, password) - end - def maybe_update_password(user, _), do: {:ok, user} defp do_update_password(user, password) do diff --git a/lib/pleroma/web/plugs/cache.ex b/lib/pleroma/web/plugs/cache.ex @@ -20,7 +20,7 @@ defmodule Pleroma.Web.Plugs.Cache do - `ttl`: An expiration time (time-to-live). This value should be in milliseconds or `nil` to disable expiration. Defaults to `nil`. - `query_params`: Take URL query string into account (`true`), ignore it (`false`) or limit to specific params only (list). Defaults to `true`. - - `tracking_fun`: A function that is called on successfull responses, no matter if the request is cached or not. It should accept a conn as the first argument and the value assigned to `tracking_fun_data` as the second. + - `tracking_fun`: A function that is called on successful responses, no matter if the request is cached or not. It should accept a conn as the first argument and the value assigned to `tracking_fun_data` as the second. Additionally, you can overwrite the TTL inside a controller action by assigning `cache_ttl` to the connection struct: diff --git a/lib/pleroma/web/plugs/http_security_plug.ex b/lib/pleroma/web/plugs/http_security_plug.ex @@ -93,19 +93,27 @@ defmodule Pleroma.Web.Plugs.HTTPSecurityPlug do img_src = "img-src 'self' data: blob:" media_src = "media-src 'self'" + connect_src = ["connect-src 'self' blob: ", static_url, ?\s, websocket_url] # Strict multimedia CSP enforcement only when MediaProxy is enabled - {img_src, media_src} = + {img_src, media_src, connect_src} = if Config.get([:media_proxy, :enabled]) && !Config.get([:media_proxy, :proxy_opts, :redirect_on_failure]) do sources = build_csp_multimedia_source_list() - {[img_src, sources], [media_src, sources]} + + { + [img_src, sources], + [media_src, sources], + [connect_src, sources] + } else - {[img_src, " https:"], [media_src, " https:"]} + { + [img_src, " https:"], + [media_src, " https:"], + [connect_src, " https:"] + } end - connect_src = ["connect-src 'self' blob: ", static_url, ?\s, websocket_url] - connect_src = if Config.get(:env) == :dev do [connect_src, " http://localhost:3035/"] @@ -193,7 +201,7 @@ defmodule Pleroma.Web.Plugs.HTTPSecurityPlug do def warn_if_disabled do unless Config.get([:http_security, :enabled]) do - Logger.warn(" + Logger.warning(" .i;;;;i. iYcviii;vXY: .YXi .i1c. diff --git a/lib/pleroma/web/plugs/http_signature_plug.ex b/lib/pleroma/web/plugs/http_signature_plug.ex @@ -16,7 +16,7 @@ defmodule Pleroma.Web.Plugs.HTTPSignaturePlug do end def call(conn, _opts) do - if get_format(conn) == "activity+json" do + if get_format(conn) in ["json", "activity+json"] do conn |> maybe_assign_valid_signature() |> maybe_require_signature() diff --git a/lib/pleroma/web/plugs/o_auth_plug.ex b/lib/pleroma/web/plugs/o_auth_plug.ex @@ -23,14 +23,14 @@ defmodule Pleroma.Web.Plugs.OAuthPlug do def call(conn, _) do with {:ok, token_str} <- fetch_token_str(conn) do with {:ok, user, user_token} <- fetch_user_and_token(token_str), - false <- Token.is_expired?(user_token) do + false <- Token.expired?(user_token) do conn |> assign(:token, user_token) |> assign(:user, user) else _ -> with {:ok, app, app_token} <- fetch_app_and_token(token_str), - false <- Token.is_expired?(app_token) do + false <- Token.expired?(app_token) do conn |> assign(:token, app_token) |> assign(:app, app) diff --git a/lib/pleroma/web/plugs/rate_limiter.ex b/lib/pleroma/web/plugs/rate_limiter.ex @@ -89,7 +89,7 @@ defmodule Pleroma.Web.Plugs.RateLimiter do end defp handle_disabled(conn) do - Logger.warn( + Logger.warning( "Rate limiter disabled due to forwarded IP not being found. Please ensure your reverse proxy is providing the X-Forwarded-For header or disable the RemoteIP plug/rate limiter." ) diff --git a/lib/pleroma/web/plugs/rate_limiter/supervisor.ex b/lib/pleroma/web/plugs/rate_limiter/supervisor.ex @@ -14,7 +14,7 @@ defmodule Pleroma.Web.Plugs.RateLimiter.Supervisor do Pleroma.Web.Plugs.RateLimiter.LimiterSupervisor ] - opts = [strategy: :one_for_one, name: Pleroma.Web.Streamer.Supervisor] + opts = [strategy: :one_for_one] Supervisor.init(children, opts) end end diff --git a/lib/pleroma/web/plugs/remote_ip.ex b/lib/pleroma/web/plugs/remote_ip.ex @@ -43,6 +43,6 @@ defmodule Pleroma.Web.Plugs.RemoteIp do InetCidr.v6?(InetCidr.parse_address!(proxy)) -> proxy <> "/128" end - InetCidr.parse(proxy, true) + InetCidr.parse_cidr!(proxy, true) end end diff --git a/lib/pleroma/web/plugs/uploaded_media.ex b/lib/pleroma/web/plugs/uploaded_media.ex @@ -35,9 +35,9 @@ defmodule Pleroma.Web.Plugs.UploadedMedia do conn = case fetch_query_params(conn) do %{query_params: %{"name" => name}} = conn -> - name = String.replace(name, "\"", "\\\"") + name = String.replace(name, ~s["], ~s[\\"]) - put_resp_header(conn, "content-disposition", "filename=\"#{name}\"") + put_resp_header(conn, "content-disposition", ~s[inline; filename="#{name}"]) conn -> conn @@ -105,7 +105,7 @@ defmodule Pleroma.Web.Plugs.UploadedMedia do end defp get_media(conn, unknown, _, _) do - Logger.error("#{__MODULE__}: Unknown get startegy: #{inspect(unknown)}") + Logger.error("#{__MODULE__}: Unknown get strategy: #{inspect(unknown)}") conn |> send_resp(:internal_server_error, dgettext("errors", "Internal Error")) diff --git a/lib/pleroma/web/preload.ex b/lib/pleroma/web/preload.ex @@ -11,7 +11,7 @@ defmodule Pleroma.Web.Preload do terms = params |> parser.generate_terms() - |> Enum.map(fn {k, v} -> {k, Base.encode64(Jason.encode!(v))} end) + |> Enum.map(fn {k, v} -> {k, Base.encode64(Jason.encode!(v, escape: :html_safe))} end) |> Enum.into(%{}) Map.merge(acc, terms) @@ -19,7 +19,7 @@ defmodule Pleroma.Web.Preload do rendered_html = preload_data - |> Jason.encode!() + |> Jason.encode!(escape: :html_safe) |> build_script_tag() |> HTML.safe_to_string() diff --git a/lib/pleroma/web/push.ex b/lib/pleroma/web/push.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.Push do def init do unless enabled() do - Logger.warn(""" + Logger.warning(""" VAPID key pair is not found. If you wish to enabled web push, please run mix web_push.gen.keypair diff --git a/lib/pleroma/web/push/impl.ex b/lib/pleroma/web/push/impl.ex @@ -57,7 +57,7 @@ defmodule Pleroma.Web.Push.Impl do end def perform(_) do - Logger.warn("Unknown notification type") + Logger.warning("Unknown notification type") {:error, :unknown_type} end @@ -192,6 +192,7 @@ defmodule Pleroma.Web.Push.Impl do def format_title(%{type: type}, mastodon_type) do case mastodon_type || type do "mention" -> "New Mention" + "status" -> "New Status" "follow" -> "New Follower" "follow_request" -> "New Follow Request" "reblog" -> "New Repeat" diff --git a/lib/pleroma/web/rich_media/backfill.ex b/lib/pleroma/web/rich_media/backfill.ex @@ -0,0 +1,101 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.RichMedia.Backfill do + alias Pleroma.Web.RichMedia.Card + alias Pleroma.Web.RichMedia.Parser + alias Pleroma.Web.RichMedia.Parser.TTL + alias Pleroma.Workers.RichMediaExpirationWorker + + require Logger + + @backfiller Pleroma.Config.get([__MODULE__, :provider], Pleroma.Web.RichMedia.Backfill.Task) + @cachex Pleroma.Config.get([:cachex, :provider], Cachex) + @max_attempts 3 + @retry 5_000 + + def start(%{url: url} = args) when is_binary(url) do + url_hash = Card.url_to_hash(url) + + args = + args + |> Map.put(:attempt, 1) + |> Map.put(:url_hash, url_hash) + + @backfiller.run(args) + end + + def run(%{url: url, url_hash: url_hash, attempt: attempt} = args) + when attempt <= @max_attempts do + case Parser.parse(url) do + {:ok, fields} -> + {:ok, card} = Card.create(url, fields) + + maybe_schedule_expiration(url, fields) + + if Map.has_key?(args, :activity_id) do + stream_update(args) + end + + warm_cache(url_hash, card) + + {:error, {:invalid_metadata, fields}} -> + Logger.debug("Rich media incomplete or invalid metadata for #{url}: #{inspect(fields)}") + negative_cache(url_hash) + + {:error, :body_too_large} -> + Logger.error("Rich media error for #{url}: :body_too_large") + negative_cache(url_hash) + + {:error, {:content_type, type}} -> + Logger.debug("Rich media error for #{url}: :content_type is #{type}") + negative_cache(url_hash) + + e -> + Logger.debug("Rich media error for #{url}: #{inspect(e)}") + + :timer.sleep(@retry * attempt) + + run(%{args | attempt: attempt + 1}) + end + end + + def run(%{url: url, url_hash: url_hash}) do + Logger.debug("Rich media failure for #{url}") + + negative_cache(url_hash, :timer.minutes(15)) + end + + defp maybe_schedule_expiration(url, fields) do + case TTL.process(fields, url) do + {:ok, ttl} when is_number(ttl) -> + timestamp = DateTime.from_unix!(ttl) + + RichMediaExpirationWorker.new(%{"url" => url}, scheduled_at: timestamp) + |> Oban.insert() + + _ -> + :ok + end + end + + defp stream_update(%{activity_id: activity_id}) do + Pleroma.Activity.get_by_id(activity_id) + |> Pleroma.Activity.normalize() + |> Pleroma.Web.ActivityPub.ActivityPub.stream_out() + end + + defp warm_cache(key, val), do: @cachex.put(:rich_media_cache, key, val) + defp negative_cache(key, ttl \\ nil), do: @cachex.put(:rich_media_cache, key, nil, ttl: ttl) +end + +defmodule Pleroma.Web.RichMedia.Backfill.Task do + alias Pleroma.Web.RichMedia.Backfill + + def run(args) do + Task.Supervisor.start_child(Pleroma.TaskSupervisor, Backfill, :run, [args], + name: {:global, {:rich_media, args.url_hash}} + ) + end +end diff --git a/lib/pleroma/web/rich_media/card.ex b/lib/pleroma/web/rich_media/card.ex @@ -0,0 +1,157 @@ +defmodule Pleroma.Web.RichMedia.Card do + use Ecto.Schema + import Ecto.Changeset + import Ecto.Query + + alias Pleroma.Activity + alias Pleroma.HTML + alias Pleroma.Object + alias Pleroma.Repo + alias Pleroma.Web.RichMedia.Backfill + alias Pleroma.Web.RichMedia.Parser + + @cachex Pleroma.Config.get([:cachex, :provider], Cachex) + @config_impl Application.compile_env(:pleroma, [__MODULE__, :config_impl], Pleroma.Config) + + @type t :: %__MODULE__{} + + schema "rich_media_card" do + field(:url_hash, :binary) + field(:fields, :map) + + timestamps() + end + + @doc false + def changeset(card, attrs) do + card + |> cast(attrs, [:url_hash, :fields]) + |> validate_required([:url_hash, :fields]) + |> unique_constraint(:url_hash) + end + + @spec create(String.t(), map()) :: {:ok, t()} + def create(url, fields) do + url_hash = url_to_hash(url) + + fields = Map.put_new(fields, "url", url) + + %__MODULE__{} + |> changeset(%{url_hash: url_hash, fields: fields}) + |> Repo.insert(on_conflict: {:replace, [:fields]}, conflict_target: :url_hash) + end + + @spec delete(String.t()) :: {:ok, Ecto.Schema.t()} | {:error, Ecto.Changeset.t()} | :ok + def delete(url) do + url_hash = url_to_hash(url) + @cachex.del(:rich_media_cache, url_hash) + + case get_by_url(url) do + %__MODULE__{} = card -> Repo.delete(card) + nil -> :ok + end + end + + @spec get_by_url(String.t() | nil) :: t() | nil | :error + def get_by_url(url) when is_binary(url) do + if @config_impl.get([:rich_media, :enabled]) do + url_hash = url_to_hash(url) + + @cachex.fetch!(:rich_media_cache, url_hash, fn _ -> + result = + __MODULE__ + |> where(url_hash: ^url_hash) + |> Repo.one() + + case result do + %__MODULE__{} = card -> {:commit, card} + _ -> {:ignore, nil} + end + end) + else + :error + end + end + + def get_by_url(nil), do: nil + + @spec get_or_backfill_by_url(String.t(), map()) :: t() | nil + def get_or_backfill_by_url(url, backfill_opts \\ %{}) do + case get_by_url(url) do + %__MODULE__{} = card -> + card + + nil -> + backfill_opts = Map.put(backfill_opts, :url, url) + + Backfill.start(backfill_opts) + + nil + + :error -> + nil + end + end + + @spec get_by_object(Object.t()) :: t() | nil | :error + def get_by_object(object) do + case HTML.extract_first_external_url_from_object(object) do + nil -> nil + url -> get_or_backfill_by_url(url) + end + end + + @spec get_by_activity(Activity.t()) :: t() | nil | :error + # Fake/Draft activity + def get_by_activity(%Activity{id: "pleroma:fakeid"} = activity) do + with %Object{} = object <- Object.normalize(activity, fetch: false), + url when not is_nil(url) <- HTML.extract_first_external_url_from_object(object) do + case get_by_url(url) do + # Cache hit + %__MODULE__{} = card -> + card + + # Cache miss, but fetch for rendering the Draft + _ -> + with {:ok, fields} <- Parser.parse(url), + {:ok, card} <- create(url, fields) do + card + else + _ -> nil + end + end + else + _ -> + nil + end + end + + def get_by_activity(activity) do + with %Object{} = object <- Object.normalize(activity, fetch: false), + {_, nil} <- {:cached, get_cached_url(object, activity.id)} do + nil + else + {:cached, url} -> + get_or_backfill_by_url(url, %{activity_id: activity.id}) + + _ -> + :error + end + end + + @spec url_to_hash(String.t()) :: String.t() + def url_to_hash(url) do + :crypto.hash(:sha256, url) |> Base.encode16(case: :lower) + end + + defp get_cached_url(object, activity_id) do + key = "URL|#{activity_id}" + + @cachex.fetch!(:scrubber_cache, key, fn _ -> + url = HTML.extract_first_external_url_from_object(object) + Activity.HTML.add_cache_key_for(activity_id, key) + + {:commit, url} + end) + end +end diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex @@ -3,86 +3,13 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.RichMedia.Helpers do - alias Pleroma.Activity alias Pleroma.Config - alias Pleroma.HTML - alias Pleroma.Object - alias Pleroma.Web.RichMedia.Parser - - @options [ - pool: :media, - max_body: 2_000_000, - recv_timeout: 2_000 - ] - - @spec validate_page_url(URI.t() | binary()) :: :ok | :error - defp validate_page_url(page_url) when is_binary(page_url) do - validate_tld = Config.get([Pleroma.Formatter, :validate_tld]) - - page_url - |> Linkify.Parser.url?(validate_tld: validate_tld) - |> parse_uri(page_url) - end - - defp validate_page_url(%URI{host: host, scheme: "https", authority: authority}) - when is_binary(authority) do - cond do - host in Config.get([:rich_media, :ignore_hosts], []) -> - :error - - get_tld(host) in Config.get([:rich_media, :ignore_tld], []) -> - :error - - true -> - :ok - end - end - - defp validate_page_url(_), do: :error - - defp parse_uri(true, url) do - url - |> URI.parse() - |> validate_page_url - end - - defp parse_uri(_, _), do: :error - - defp get_tld(host) do - host - |> String.split(".") - |> Enum.reverse() - |> hd - end - - def fetch_data_for_object(object) do - with true <- Config.get([:rich_media, :enabled]), - {:ok, page_url} <- - HTML.extract_first_external_url_from_object(object), - :ok <- validate_page_url(page_url), - {:ok, rich_media} <- Parser.parse(page_url) do - %{page_url: page_url, rich_media: rich_media} - else - _ -> %{} - end - end - - def fetch_data_for_activity(%Activity{data: %{"type" => "Create"}} = activity) do - with true <- Config.get([:rich_media, :enabled]), - %Object{} = object <- Object.normalize(activity, fetch: false) do - fetch_data_for_object(object) - else - _ -> %{} - end - end - - def fetch_data_for_activity(_), do: %{} def rich_media_get(url) do headers = [{"user-agent", Pleroma.Application.user_agent() <> "; Bot"}] head_check = - case Pleroma.HTTP.head(url, headers, @options) do + case Pleroma.HTTP.head(url, headers, http_options()) do # If the HEAD request didn't reach the server for whatever reason, # we assume the GET that comes right after won't either {:error, _} = e -> @@ -97,7 +24,7 @@ defmodule Pleroma.Web.RichMedia.Helpers do :ok end - with :ok <- head_check, do: Pleroma.HTTP.get(url, headers, @options) + with :ok <- head_check, do: Pleroma.HTTP.get(url, headers, http_options()) end defp check_content_type(headers) do @@ -113,12 +40,13 @@ defmodule Pleroma.Web.RichMedia.Helpers do end end - @max_body @options[:max_body] defp check_content_length(headers) do + max_body = Keyword.get(http_options(), :max_body) + case List.keyfind(headers, "content-length", 0) do {_, maybe_content_length} -> case Integer.parse(maybe_content_length) do - {content_length, ""} when content_length <= @max_body -> :ok + {content_length, ""} when content_length <= max_body -> :ok {_, ""} -> {:error, :body_too_large} _ -> :ok end @@ -127,4 +55,11 @@ defmodule Pleroma.Web.RichMedia.Helpers do :ok end end + + defp http_options do + [ + pool: :media, + max_body: Config.get([:rich_media, :max_body], 5_000_000) + ] + end end diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex @@ -5,137 +5,28 @@ defmodule Pleroma.Web.RichMedia.Parser do require Logger - @cachex Pleroma.Config.get([:cachex, :provider], Cachex) + @config_impl Application.compile_env(:pleroma, [__MODULE__, :config_impl], Pleroma.Config) defp parsers do Pleroma.Config.get([:rich_media, :parsers]) end - def parse(nil), do: {:error, "No URL provided"} - - if Pleroma.Config.get(:env) == :test do - @spec parse(String.t()) :: {:ok, map()} | {:error, any()} - def parse(url), do: parse_url(url) - else - @spec parse(String.t()) :: {:ok, map()} | {:error, any()} - def parse(url) do - with {:ok, data} <- get_cached_or_parse(url), - {:ok, _} <- set_ttl_based_on_image(data, url) do - {:ok, data} - end - end - - defp get_cached_or_parse(url) do - case @cachex.fetch(:rich_media_cache, url, fn -> - case parse_url(url) do - {:ok, _} = res -> - {:commit, res} - - {:error, reason} = e -> - # Unfortunately we have to log errors here, instead of doing that - # along with ttl setting at the bottom. Otherwise we can get log spam - # if more than one process was waiting for the rich media card - # while it was generated. Ideally we would set ttl here as well, - # so we don't override it number_of_waiters_on_generation - # times, but one, obviously, can't set ttl for not-yet-created entry - # and Cachex doesn't support returning ttl from the fetch callback. - log_error(url, reason) - {:commit, e} - end - end) do - {action, res} when action in [:commit, :ok] -> - case res do - {:ok, _data} = res -> - res - - {:error, reason} = e -> - if action == :commit, do: set_error_ttl(url, reason) - e - end - - {:error, e} -> - {:error, {:cachex_error, e}} - end - end - - defp set_error_ttl(_url, :body_too_large), do: :ok - defp set_error_ttl(_url, {:content_type, _}), do: :ok - - # The TTL is not set for the errors above, since they are unlikely to change - # with time - - defp set_error_ttl(url, _reason) do - ttl = Pleroma.Config.get([:rich_media, :failure_backoff], 60_000) - @cachex.expire(:rich_media_cache, url, ttl) - :ok - end - - defp log_error(url, {:invalid_metadata, data}) do - Logger.debug(fn -> "Incomplete or invalid metadata for #{url}: #{inspect(data)}" end) - end - - defp log_error(url, reason) do - Logger.warn(fn -> "Rich media error for #{url}: #{inspect(reason)}" end) - end - end - - @doc """ - Set the rich media cache based on the expiration time of image. - - Adopt behaviour `Pleroma.Web.RichMedia.Parser.TTL` - - ## Example - - defmodule MyModule do - @behaviour Pleroma.Web.RichMedia.Parser.TTL - def ttl(data, url) do - image_url = Map.get(data, :image) - # do some parsing in the url and get the ttl of the image - # and return ttl is unix time - parse_ttl_from_url(image_url) - end - end + def parse(nil), do: nil - Define the module in the config - - config :pleroma, :rich_media, - ttl_setters: [MyModule] - """ - @spec set_ttl_based_on_image(map(), String.t()) :: - {:ok, Integer.t() | :noop} | {:error, :no_key} - def set_ttl_based_on_image(data, url) do - case get_ttl_from_image(data, url) do - {:ok, ttl} when is_number(ttl) -> - ttl = ttl * 1000 - - case @cachex.expire_at(:rich_media_cache, url, ttl) do - {:ok, true} -> {:ok, ttl} - {:ok, false} -> {:error, :no_key} - end - - _ -> - {:ok, :noop} + @spec parse(String.t()) :: {:ok, map()} | {:error, any()} + def parse(url) do + with :ok <- validate_page_url(url), + {:ok, data} <- parse_url(url) do + data = Map.put(data, "url", url) + {:ok, data} end end - defp get_ttl_from_image(data, url) do - [:rich_media, :ttl_setters] - |> Pleroma.Config.get() - |> Enum.reduce({:ok, nil}, fn - module, {:ok, _ttl} -> - module.ttl(data, url) - - _, error -> - error - end) - end - - def parse_url(url) do + defp parse_url(url) do with {:ok, %Tesla.Env{body: html}} <- Pleroma.Web.RichMedia.Helpers.rich_media_get(url), {:ok, html} <- Floki.parse_document(html) do html |> maybe_parse() - |> Map.put("url", url) |> clean_parsed_data() |> check_parsed_data() end @@ -166,4 +57,46 @@ defmodule Pleroma.Web.RichMedia.Parser do end) |> Map.new() end + + @spec validate_page_url(URI.t() | binary()) :: :ok | :error + defp validate_page_url(page_url) when is_binary(page_url) do + validate_tld = @config_impl.get([Pleroma.Formatter, :validate_tld]) + + page_url + |> Linkify.Parser.url?(validate_tld: validate_tld) + |> parse_uri(page_url) + end + + defp validate_page_url(%URI{host: host, scheme: "https"}) do + cond do + Linkify.Parser.ip?(host) -> + :error + + host in @config_impl.get([:rich_media, :ignore_hosts], []) -> + :error + + get_tld(host) in @config_impl.get([:rich_media, :ignore_tld], []) -> + :error + + true -> + :ok + end + end + + defp validate_page_url(_), do: :error + + defp parse_uri(true, url) do + url + |> URI.parse() + |> validate_page_url + end + + defp parse_uri(_, _), do: :error + + defp get_tld(host) do + host + |> String.split(".") + |> Enum.reverse() + |> hd + end end diff --git a/lib/pleroma/web/rich_media/parser/ttl.ex b/lib/pleroma/web/rich_media/parser/ttl.ex @@ -3,5 +3,18 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.RichMedia.Parser.TTL do - @callback ttl(Map.t(), String.t()) :: Integer.t() | nil + @callback ttl(map(), String.t()) :: integer() | nil + + @spec process(map(), String.t()) :: {:ok, integer() | nil} + def process(data, url) do + [:rich_media, :ttl_setters] + |> Pleroma.Config.get() + |> Enum.reduce_while({:ok, nil}, fn + module, acc -> + case module.ttl(data, url) do + ttl when is_number(ttl) -> {:halt, {:ok, ttl}} + _ -> {:cont, acc} + end + end) + end end diff --git a/lib/pleroma/web/rich_media/parser/ttl/aws_signed_url.ex b/lib/pleroma/web/rich_media/parser/ttl/aws_signed_url.ex @@ -7,25 +7,26 @@ defmodule Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl do @impl true def ttl(data, _url) do - image = Map.get(data, :image) + image = Map.get(data, "image") - if is_aws_signed_url(image) do + if aws_signed_url?(image) do image |> parse_query_params() |> format_query_params() |> get_expiration_timestamp() else - {:error, "Not aws signed url #{inspect(image)}"} + nil end end - defp is_aws_signed_url(image) when is_binary(image) and image != "" do + defp aws_signed_url?(image) when is_binary(image) and image != "" do %URI{host: host, query: query} = URI.parse(image) - String.contains?(host, "amazonaws.com") and String.contains?(query, "X-Amz-Expires") + is_binary(host) and String.contains?(host, "amazonaws.com") and + is_binary(query) and String.contains?(query, "X-Amz-Expires") end - defp is_aws_signed_url(_), do: nil + defp aws_signed_url?(_), do: nil defp parse_query_params(image) do %URI{query: query} = URI.parse(image) @@ -45,6 +46,6 @@ defmodule Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl do |> Map.get("X-Amz-Date") |> Timex.parse("{ISO:Basic:Z}") - {:ok, Timex.to_unix(date) + String.to_integer(Map.get(params, "X-Amz-Expires"))} + Timex.to_unix(date) + String.to_integer(Map.get(params, "X-Amz-Expires")) end end diff --git a/lib/pleroma/web/rich_media/parser/ttl/opengraph.ex b/lib/pleroma/web/rich_media/parser/ttl/opengraph.ex @@ -0,0 +1,20 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.RichMedia.Parser.TTL.Opengraph do + @behaviour Pleroma.Web.RichMedia.Parser.TTL + + @impl true + def ttl(%{"ttl" => ttl_string}, _url) when is_binary(ttl_string) do + try do + ttl = String.to_integer(ttl_string) + now = DateTime.utc_now() |> DateTime.to_unix() + now + ttl + rescue + _ -> nil + end + end + + def ttl(_, _), do: nil +end diff --git a/lib/pleroma/web/rich_media/parsers/o_embed.ex b/lib/pleroma/web/rich_media/parsers/o_embed.ex @@ -6,8 +6,8 @@ defmodule Pleroma.Web.RichMedia.Parsers.OEmbed do def parse(html, _data) do with elements = [_ | _] <- get_discovery_data(html), oembed_url when is_binary(oembed_url) <- get_oembed_url(elements), - {:ok, oembed_data} <- get_oembed_data(oembed_url) do - oembed_data + {:ok, oembed_data = %{"html" => html}} <- get_oembed_data(oembed_url) do + %{oembed_data | "html" => Pleroma.HTML.filter_tags(html)} else _e -> %{} end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex @@ -182,7 +182,7 @@ defmodule Pleroma.Web.Router do end pipeline :well_known do - plug(:accepts, ["json", "jrd+json", "xml", "xrd+xml"]) + plug(:accepts, ["json", "jrd", "jrd+json", "xml", "xrd+xml"]) end pipeline :config do @@ -224,6 +224,12 @@ defmodule Pleroma.Web.Router do post("/remote_interaction", UtilController, :remote_interaction) end + scope "/api/v1/pleroma", Pleroma.Web.PleromaAPI do + pipe_through(:pleroma_api) + + get("/federation_status", InstancesController, :show) + end + scope "/api/v1/pleroma", Pleroma.Web do pipe_through(:pleroma_api) post("/uploader_callback/:upload_path", UploaderController, :callback) @@ -286,6 +292,11 @@ defmodule Pleroma.Web.Router do post("/frontends/install", FrontendController, :install) post("/backups", AdminAPIController, :create_backup) + + get("/rules", RuleController, :index) + post("/rules", RuleController, :create) + patch("/rules/:id", RuleController, :update) + delete("/rules/:id", RuleController, :delete) end # AdminAPI: admins and mods (staff) can perform these actions (if privileged by role) @@ -465,6 +476,8 @@ defmodule Pleroma.Web.Router do get("/main/ostatus", UtilController, :show_subscribe_form) get("/ostatus_subscribe", RemoteFollowController, :follow) post("/ostatus_subscribe", RemoteFollowController, :do_follow) + + get("/authorize_interaction", RemoteFollowController, :authorize_interaction) end scope "/api/pleroma", Pleroma.Web.TwitterAPI do @@ -473,7 +486,7 @@ defmodule Pleroma.Web.Router do post("/change_email", UtilController, :change_email) post("/change_password", UtilController, :change_password) post("/delete_account", UtilController, :delete_account) - put("/notification_settings", UtilController, :update_notificaton_settings) + put("/notification_settings", UtilController, :update_notification_settings) post("/disable_account", UtilController, :disable_account) post("/move_account", UtilController, :move_account) @@ -572,12 +585,19 @@ defmodule Pleroma.Web.Router do get("/backups", BackupController, :index) post("/backups", BackupController, :create) + + get("/bookmark_folders", BookmarkFolderController, :index) + post("/bookmark_folders", BookmarkFolderController, :create) + patch("/bookmark_folders/:id", BookmarkFolderController, :update) + delete("/bookmark_folders/:id", BookmarkFolderController, :delete) end scope [] do pipe_through(:api) get("/accounts/:id/favourites", AccountController, :favourites) get("/accounts/:id/endorsements", AccountController, :endorsements) + + get("/statuses/:id/quotes", StatusController, :quotes) end scope [] do @@ -602,7 +622,6 @@ defmodule Pleroma.Web.Router do scope "/api/v1/pleroma", Pleroma.Web.PleromaAPI do pipe_through(:api) get("/accounts/:id/scrobbles", ScrobbleController, :index) - get("/federation_status", InstancesController, :show) end scope "/api/v2/pleroma", Pleroma.Web.PleromaAPI do @@ -619,6 +638,7 @@ defmodule Pleroma.Web.Router do patch("/accounts/update_credentials", AccountController, :update_credentials) get("/accounts/relationships", AccountController, :relationships) + get("/accounts/familiar_followers", AccountController, :familiar_followers) get("/accounts/:id/lists", AccountController, :lists) get("/accounts/:id/identity_proofs", AccountController, :identity_proofs) get("/endorsements", AccountController, :endorsements) @@ -750,11 +770,11 @@ defmodule Pleroma.Web.Router do get("/instance", InstanceController, :show) get("/instance/peers", InstanceController, :peers) + get("/instance/rules", InstanceController, :rules) get("/statuses", StatusController, :index) get("/statuses/:id", StatusController, :show) get("/statuses/:id/context", StatusController, :context) - get("/statuses/:id/card", StatusController, :card) get("/statuses/:id/favourited_by", StatusController, :favourited_by) get("/statuses/:id/reblogged_by", StatusController, :reblogged_by) get("/statuses/:id/history", StatusController, :show_history) @@ -774,11 +794,14 @@ defmodule Pleroma.Web.Router do scope "/api/v2", Pleroma.Web.MastodonAPI do pipe_through(:api) + get("/search", SearchController, :search2) post("/media", MediaController, :create2) get("/suggestions", SuggestionController, :index2) + + get("/instance", InstanceController, :show2) end scope "/api", Pleroma.Web do @@ -835,8 +858,7 @@ defmodule Pleroma.Web.Router do end scope "/", Pleroma.Web do - # Note: html format is supported only if static FE is enabled - pipe_through([:accepts_html_xml, :static_fe]) + pipe_through([:accepts_html_xml]) get("/users/:nickname/feed", Feed.UserController, :feed, as: :user_feed) end @@ -997,16 +1019,15 @@ defmodule Pleroma.Web.Router do scope "/", Pleroma.Web.Fallback do get("/registration/:token", RedirectController, :registration_page) get("/:maybe_nickname_or_id", RedirectController, :redirector_with_meta) - match(:*, "/api/pleroma*path", LegacyPleromaApiRerouterPlug, []) - get("/api*path", RedirectController, :api_not_implemented) + match(:*, "/api/pleroma/*path", LegacyPleromaApiRerouterPlug, []) + get("/api/*path", RedirectController, :api_not_implemented) get("/*path", RedirectController, :redirector_with_preload) options("/*path", RedirectController, :empty) end - # TODO: Change to Phoenix.Router.routes/1 for Phoenix 1.6.0+ def get_api_routes do - __MODULE__.__routes__() + Phoenix.Router.routes(__MODULE__) |> Enum.reject(fn r -> r.plug == Pleroma.Web.Fallback.RedirectController end) |> Enum.map(fn r -> r.path diff --git a/lib/pleroma/web/static_fe/static_fe_controller.ex b/lib/pleroma/web/static_fe/static_fe_controller.ex @@ -13,7 +13,6 @@ defmodule Pleroma.Web.StaticFE.StaticFEController do alias Pleroma.Web.Metadata alias Pleroma.Web.Router.Helpers - plug(:put_layout, :static_fe) plug(:assign_id) @page_keys ["max_id", "min_id", "limit", "since_id", "order"] @@ -22,10 +21,18 @@ defmodule Pleroma.Web.StaticFE.StaticFEController do def show(%{assigns: %{notice_id: notice_id}} = conn, _params) do with %Activity{local: true} = activity <- Activity.get_by_id_with_object(notice_id), - true <- Visibility.is_public?(activity.object), + true <- Visibility.public?(activity.object), {_, true} <- {:visible?, Visibility.visible_for_user?(activity, _reading_user = nil)}, %User{} = user <- User.get_by_ap_id(activity.object.data["actor"]) do - meta = Metadata.build_tags(%{activity_id: notice_id, object: activity.object, user: user}) + url = Helpers.url(conn) <> conn.request_path + + meta = + Metadata.build_tags(%{ + activity_id: notice_id, + object: activity.object, + user: user, + url: url + }) timeline = activity.object.data["context"] diff --git a/lib/pleroma/web/streamer.ex b/lib/pleroma/web/streamer.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.Streamer do require Logger + require Pleroma.Constants alias Pleroma.Activity alias Pleroma.Chat.MessageReference @@ -19,12 +20,12 @@ defmodule Pleroma.Web.Streamer do alias Pleroma.Web.Plugs.OAuthScopesPlug alias Pleroma.Web.StreamerView - @mix_env Mix.env() @registry Pleroma.Web.StreamerRegistry def registry, do: @registry - @public_streams ["public", "public:local", "public:media", "public:local:media"] + @public_streams Pleroma.Constants.public_streams() + @local_streams ["public:local", "public:local:media"] @user_streams ["user", "user:notification", "direct", "user:pleroma_chat"] @doc "Expands and authorizes a stream, and registers the process for streaming." @@ -32,7 +33,7 @@ defmodule Pleroma.Web.Streamer do stream :: String.t(), User.t() | nil, Token.t() | nil, - Map.t() | nil + map() | nil ) :: {:ok, topic :: String.t()} | {:error, :bad_topic} | {:error, :unauthorized} def get_topic_and_add_socket(stream, user, oauth_token, params \\ %{}) do @@ -41,14 +42,41 @@ defmodule Pleroma.Web.Streamer do end end + defp can_access_stream(user, oauth_token, kind) do + with {_, true} <- {:restrict?, Config.restrict_unauthenticated_access?(:timelines, kind)}, + {_, %User{id: user_id}, %Token{user_id: user_id}} <- {:user, user, oauth_token}, + {_, true} <- + {:scopes, + OAuthScopesPlug.filter_descendants(["read:statuses"], oauth_token.scopes) != []} do + true + else + {:restrict?, _} -> + true + + _ -> + false + end + end + @doc "Expand and authorizes a stream" - @spec get_topic(stream :: String.t(), User.t() | nil, Token.t() | nil, Map.t()) :: - {:ok, topic :: String.t()} | {:error, :bad_topic} + @spec get_topic(stream :: String.t() | nil, User.t() | nil, Token.t() | nil, map()) :: + {:ok, topic :: String.t() | nil} | {:error, :bad_topic} def get_topic(stream, user, oauth_token, params \\ %{}) - # Allow all public steams. - def get_topic(stream, _user, _oauth_token, _params) when stream in @public_streams do - {:ok, stream} + def get_topic(nil = _stream, _user, _oauth_token, _params) do + {:ok, nil} + end + + # Allow all public steams if the instance allows unauthenticated access. + # Otherwise, only allow users with valid oauth tokens. + def get_topic(stream, user, oauth_token, _params) when stream in @public_streams do + kind = if stream in @local_streams, do: :local, else: :federated + + if can_access_stream(user, oauth_token, kind) do + {:ok, stream} + else + {:error, :unauthorized} + end end # Allow all hashtags streams. @@ -57,12 +85,20 @@ defmodule Pleroma.Web.Streamer do end # Allow remote instance streams. - def get_topic("public:remote", _user, _oauth_token, %{"instance" => instance} = _params) do - {:ok, "public:remote:" <> instance} + def get_topic("public:remote", user, oauth_token, %{"instance" => instance} = _params) do + if can_access_stream(user, oauth_token, :federated) do + {:ok, "public:remote:" <> instance} + else + {:error, :unauthorized} + end end - def get_topic("public:remote:media", _user, _oauth_token, %{"instance" => instance} = _params) do - {:ok, "public:remote:media:" <> instance} + def get_topic("public:remote:media", user, oauth_token, %{"instance" => instance} = _params) do + if can_access_stream(user, oauth_token, :federated) do + {:ok, "public:remote:media:" <> instance} + else + {:error, :unauthorized} + end end # Expand user streams. @@ -187,8 +223,8 @@ defmodule Pleroma.Web.Streamer do end defp do_stream("follow_relationship", item) do - text = StreamerView.render("follow_relationships_update.json", item) user_topic = "user:#{item.follower.id}" + text = StreamerView.render("follow_relationships_update.json", item, user_topic) Logger.debug("Trying to push follow relationship update to #{user_topic}\n\n") @@ -209,7 +245,7 @@ defmodule Pleroma.Web.Streamer do defp do_stream("list", item) do # filter the recipient list if the activity is not public, see #270. recipient_lists = - case Visibility.is_public?(item) do + case Visibility.public?(item) do true -> Pleroma.List.get_lists_from_activity(item) @@ -234,9 +270,11 @@ defmodule Pleroma.Web.Streamer do defp do_stream(topic, %Notification{} = item) when topic in ["user", "user:notification"] do - Registry.dispatch(@registry, "#{topic}:#{item.user_id}", fn list -> + user_topic = "#{topic}:#{item.user_id}" + + Registry.dispatch(@registry, user_topic, fn list -> Enum.each(list, fn {pid, _auth} -> - send(pid, {:render_with_user, StreamerView, "notification.json", item}) + send(pid, {:render_with_user, StreamerView, "notification.json", item, user_topic}) end) end) end @@ -245,7 +283,7 @@ defmodule Pleroma.Web.Streamer do when topic in ["user", "user:pleroma_chat"] do topic = "#{topic}:#{user.id}" - text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}) + text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}, topic) Registry.dispatch(@registry, topic, fn list -> Enum.each(list, fn {pid, _auth} -> @@ -273,7 +311,7 @@ defmodule Pleroma.Web.Streamer do end defp push_to_socket(topic, %Participation{} = participation) do - rendered = StreamerView.render("conversation.json", participation) + rendered = StreamerView.render("conversation.json", participation, topic) Registry.dispatch(@registry, topic, fn list -> Enum.each(list, fn {pid, _} -> @@ -301,12 +339,15 @@ defmodule Pleroma.Web.Streamer do Pleroma.Activity.get_create_by_object_ap_id(item.object.data["id"]) |> Map.put(:object, item.object) - anon_render = StreamerView.render("status_update.json", create_activity) + anon_render = StreamerView.render("status_update.json", create_activity, topic) Registry.dispatch(@registry, topic, fn list -> Enum.each(list, fn {pid, auth?} -> if auth? do - send(pid, {:render_with_user, StreamerView, "status_update.json", create_activity}) + send( + pid, + {:render_with_user, StreamerView, "status_update.json", create_activity, topic} + ) else send(pid, {:text, anon_render}) end @@ -315,12 +356,12 @@ defmodule Pleroma.Web.Streamer do end defp push_to_socket(topic, item) do - anon_render = StreamerView.render("update.json", item) + anon_render = StreamerView.render("update.json", item, topic) Registry.dispatch(@registry, topic, fn list -> Enum.each(list, fn {pid, auth?} -> if auth? do - send(pid, {:render_with_user, StreamerView, "update.json", item}) + send(pid, {:render_with_user, StreamerView, "update.json", item, topic}) else send(pid, {:text, anon_render}) end @@ -354,25 +395,20 @@ defmodule Pleroma.Web.Streamer do end end - # In test environement, only return true if the registry is started. - # In benchmark environment, returns false. - # In any other environment, always returns true. - cond do - @mix_env == :test -> - def should_env_send? do - case Process.whereis(@registry) do - nil -> - false + # In dev/prod the streamer registry is expected to be started, so return true + # In test it is possible to have the registry started for a test so it will check + # In benchmark it will never find the process alive and return false + def should_env_send? do + if Application.get_env(:pleroma, Pleroma.Application)[:streamer_registry] do + true + else + case Process.whereis(@registry) do + nil -> + false - pid -> - Process.alive?(pid) - end + pid -> + Process.alive?(pid) end - - @mix_env == :benchmark -> - def should_env_send?, do: false - - true -> - def should_env_send?, do: true + end end end diff --git a/lib/pleroma/web/templates/feed/feed/_activity.atom.eex b/lib/pleroma/web/templates/feed/feed/_activity.atom.eex @@ -4,8 +4,8 @@ <id><%= @data["id"] %></id> <title><%= activity_title(@data, Keyword.get(@feed_config, :post_title, %{})) %></title> <content type="html"><%= activity_description(@data) %></content> - <published><%= to_rfc3339(@activity.data["published"]) %></published> - <updated><%= to_rfc3339(@activity.data["published"]) %></updated> + <published><%= to_rfc3339(@data["published"]) %></published> + <updated><%= to_rfc3339(@data["published"]) %></updated> <ostatus:conversation ref="<%= activity_context(@activity) %>"> <%= activity_context(@activity) %> </ostatus:conversation> diff --git a/lib/pleroma/web/templates/feed/feed/_activity.rss.eex b/lib/pleroma/web/templates/feed/feed/_activity.rss.eex @@ -4,7 +4,7 @@ <guid><%= @data["id"] %></guid> <title><%= activity_title(@data, Keyword.get(@feed_config, :post_title, %{})) %></title> <description><%= activity_description(@data) %></description> - <pubDate><%= to_rfc2822(@activity.data["published"]) %></pubDate> + <pubDate><%= to_rfc2822(@data["published"]) %></pubDate> <ostatus:conversation ref="<%= activity_context(@activity) %>"> <%= activity_context(@activity) %> </ostatus:conversation> diff --git a/lib/pleroma/web/templates/feed/feed/_tag_activity.atom.eex b/lib/pleroma/web/templates/feed/feed/_tag_activity.atom.eex @@ -7,8 +7,8 @@ <id><%= @data["id"] %></id> <title><%= activity_title(@data, Keyword.get(@feed_config, :post_title, %{})) %></title> <content type="html"><%= activity_description(@data) %></content> - <published><%= to_rfc3339(@activity.data["published"]) %></published> - <updated><%= to_rfc3339(@activity.data["published"]) %></updated> + <published><%= to_rfc3339(@data["published"]) %></published> + <updated><%= to_rfc3339(@data["published"]) %></updated> <ostatus:conversation ref="<%= activity_context(@activity) %>"> <%= activity_context(@activity) %> </ostatus:conversation> diff --git a/lib/pleroma/web/templates/feed/feed/_tag_activity.xml.eex b/lib/pleroma/web/templates/feed/feed/_tag_activity.xml.eex @@ -4,7 +4,7 @@ <guid isPermalink="true"><%= activity_context(@activity) %></guid> <link><%= activity_context(@activity) %></link> - <pubDate><%= to_rfc2822(@activity.data["published"]) %></pubDate> + <pubDate><%= to_rfc2822(@data["published"]) %></pubDate> <description><%= activity_description(@data) %></description> <%= for attachment <- @data["attachment"] || [] do %> diff --git a/lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex b/lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex @@ -1,8 +1,8 @@ -<%= if get_flash(@conn, :info) do %> -<p class="alert alert-info" role="alert"><%= get_flash(@conn, :info) %></p> +<%= if Phoenix.Flash.get(@flash, :info) do %> +<p class="alert alert-info" role="alert"><%= Phoenix.Flash.get(@flash, :info) %></p> <% end %> -<%= if get_flash(@conn, :error) do %> -<p class="alert alert-danger" role="alert"><%= get_flash(@conn, :error) %></p> +<%= if Phoenix.Flash.get(@flash, :error) do %> +<p class="alert alert-danger" role="alert"><%= Phoenix.Flash.get(@flash, :error) %></p> <% end %> <h2><%= Gettext.dpgettext("static_pages", "mfa recover page title", "Two-factor recovery") %></h2> diff --git a/lib/pleroma/web/templates/o_auth/mfa/totp.html.eex b/lib/pleroma/web/templates/o_auth/mfa/totp.html.eex @@ -1,8 +1,8 @@ -<%= if get_flash(@conn, :info) do %> -<p class="alert alert-info" role="alert"><%= get_flash(@conn, :info) %></p> +<%= if Phoenix.Flash.get(@flash, :info) do %> +<p class="alert alert-info" role="alert"><%= Phoenix.Flash.get(@flash, :info) %></p> <% end %> -<%= if get_flash(@conn, :error) do %> -<p class="alert alert-danger" role="alert"><%= get_flash(@conn, :error) %></p> +<%= if Phoenix.Flash.get(@flash, :error) do %> +<p class="alert alert-danger" role="alert"><%= Phoenix.Flash.get(@flash, :error) %></p> <% end %> <h2><%= Gettext.dpgettext("static_pages", "mfa auth page title", "Two-factor authentication") %></h2> diff --git a/lib/pleroma/web/templates/o_auth/o_auth/_scopes.html.eex b/lib/pleroma/web/templates/o_auth/o_auth/_scopes.html.eex @@ -8,7 +8,7 @@ <%= checkbox @form, :"scope_#{scope}", value: scope in @scopes && scope, checked_value: scope, unchecked_value: "", name: "authorization[scope][]" %> <%= label @form, :"scope_#{scope}", String.capitalize(scope) %> <%= if scope in @scopes && scope do %> - <%= String.capitalize(scope) %> + <code><%= scope %></code> <%= :"Elixir.Gettext".dgettext(Gettext, "oauth_scopes", scope) %> <% end %> </div> <% else %> diff --git a/lib/pleroma/web/templates/o_auth/o_auth/register.html.eex b/lib/pleroma/web/templates/o_auth/o_auth/register.html.eex @@ -1,8 +1,8 @@ -<%= if get_flash(@conn, :info) do %> - <p class="alert alert-info" role="alert"><%= get_flash(@conn, :info) %></p> +<%= if Phoenix.Flash.get(@flash, :info) do %> + <p class="alert alert-info" role="alert"><%= Phoenix.Flash.get(@flash, :info) %></p> <% end %> -<%= if get_flash(@conn, :error) do %> - <p class="alert alert-danger" role="alert"><%= get_flash(@conn, :error) %></p> +<%= if Phoenix.Flash.get(@flash, :error) do %> + <p class="alert alert-danger" role="alert"><%= Phoenix.Flash.get(@flash, :error) %></p> <% end %> <h2><%= Gettext.dpgettext("static_pages", "oauth register page title", "Registration Details") %></h2> diff --git a/lib/pleroma/web/templates/o_auth/o_auth/show.html.eex b/lib/pleroma/web/templates/o_auth/o_auth/show.html.eex @@ -1,8 +1,8 @@ -<%= if get_flash(@conn, :info) do %> -<p class="alert alert-info" role="alert"><%= get_flash(@conn, :info) %></p> +<%= if Phoenix.Flash.get(@flash, :info) do %> +<p class="alert alert-info" role="alert"><%= Phoenix.Flash.get(@flash, :info) %></p> <% end %> -<%= if get_flash(@conn, :error) do %> -<p class="alert alert-danger" role="alert"><%= get_flash(@conn, :error) %></p> +<%= if Phoenix.Flash.get(@flash, :error) do %> +<p class="alert alert-danger" role="alert"><%= Phoenix.Flash.get(@flash, :error) %></p> <% end %> <%= form_for @conn, Routes.o_auth_path(@conn, :authorize), [as: "authorization"], fn f -> %> @@ -13,7 +13,7 @@ <div class="account-header__avatar" style="background-image: url('<%= Pleroma.User.avatar_url(@user) %>')"></div> <div class="account-header__meta"> <div class="account-header__display-name"><%= @user.name %></div> - <div class="account-header__nickname">@<%= @user.nickname %>@<%= Pleroma.User.get_host(@user) %></div> + <div class="account-header__nickname">@<%= Pleroma.User.full_nickname(@user.nickname) %></div> </div> </div> <% end %> diff --git a/lib/pleroma/web/twitter_api/controllers/password_controller.ex b/lib/pleroma/web/twitter_api/controllers/password_controller.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.TwitterAPI.PasswordController do @moduledoc """ - The module containts functions for reset password. + The module contains functions for password reset. """ use Pleroma.Web, :controller diff --git a/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex b/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex @@ -29,7 +29,7 @@ defmodule Pleroma.Web.TwitterAPI.RemoteFollowController do # GET /ostatus_subscribe # def follow(%{assigns: %{user: user}} = conn, %{"acct" => acct}) do - case is_status?(acct) do + case status?(acct) do true -> follow_status(conn, user, acct) _ -> follow_account(conn, user, acct) end @@ -57,7 +57,7 @@ defmodule Pleroma.Web.TwitterAPI.RemoteFollowController do defp follow_template(%User{} = _user), do: "follow.html" defp follow_template(_), do: "follow_login.html" - defp is_status?(acct) do + defp status?(acct) do case Fetcher.fetch_and_contain_remote_object_from_id(acct) do {:ok, %{"type" => type}} when type in @status_types -> true @@ -121,6 +121,13 @@ defmodule Pleroma.Web.TwitterAPI.RemoteFollowController do render(conn, "followed.html", %{error: "Insufficient permissions: follow | write:follows."}) end + # GET /authorize_interaction + # + def authorize_interaction(conn, %{"uri" => uri}) do + conn + |> redirect(to: Routes.remote_follow_path(conn, :follow, %{acct: uri})) + end + defp handle_follow_error(conn, {:mfa_token, followee, _} = _) do render(conn, "follow_login.html", %{error: "Wrong username or password", followee: followee}) end diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex @@ -18,7 +18,8 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do alias Pleroma.Web.WebFinger plug( - Pleroma.Web.ApiSpec.CastAndValidate + Pleroma.Web.ApiSpec.CastAndValidate, + [replace_params: false] when action != :remote_subscribe and action != :show_subscribe_form ) @@ -35,7 +36,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do :change_email, :change_password, :delete_account, - :update_notificaton_settings, + :update_notification_settings, :disable_account, :move_account, :add_alias, @@ -150,7 +151,10 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do end end - def remote_interaction(%{body_params: %{ap_id: ap_id, profile: profile}} = conn, _params) do + def remote_interaction( + %{private: %{open_api_spex: %{body_params: %{ap_id: ap_id, profile: profile}}}} = conn, + _params + ) do with {:ok, %{"subscribe_address" => template}} <- WebFinger.finger(profile) do conn |> json(%{url: String.replace(template, "{uri}", ap_id)}) @@ -181,13 +185,16 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do json(conn, emoji) end - def update_notificaton_settings(%{assigns: %{user: user}} = conn, params) do + def update_notification_settings(%{assigns: %{user: user}} = conn, params) do with {:ok, _} <- User.update_notification_settings(user, params) do json(conn, %{status: "success"}) end end - def change_password(%{assigns: %{user: user}, body_params: body_params} = conn, %{}) do + def change_password( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: body_params}}} = conn, + _ + ) do case CommonAPI.Utils.confirm_current_password(user, body_params.password) do {:ok, user} -> with {:ok, _user} <- @@ -210,7 +217,10 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do end end - def change_email(%{assigns: %{user: user}, body_params: body_params} = conn, %{}) do + def change_email( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: body_params}}} = conn, + _ + ) do case CommonAPI.Utils.confirm_current_password(user, body_params.password) do {:ok, user} -> with {:ok, _user} <- User.change_email(user, body_params.email) do @@ -229,7 +239,13 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do end end - def delete_account(%{assigns: %{user: user}, body_params: body_params} = conn, params) do + def delete_account( + %{ + assigns: %{user: user}, + private: %{open_api_spex: %{body_params: body_params, params: params}} + } = conn, + _ + ) do # This endpoint can accept a query param or JSON body for backwards-compatibility. # Submitting a JSON body is recommended, so passwords don't end up in server logs. password = body_params[:password] || params[:password] || "" @@ -244,7 +260,10 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do end end - def disable_account(%{assigns: %{user: user}} = conn, params) do + def disable_account( + %{assigns: %{user: user}, private: %{open_api_spex: %{params: params}}} = conn, + _ + ) do case CommonAPI.Utils.confirm_current_password(user, params[:password]) do {:ok, user} -> User.set_activation_async(user, false) @@ -255,7 +274,10 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do end end - def move_account(%{assigns: %{user: user}, body_params: body_params} = conn, %{}) do + def move_account( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: body_params}}} = conn, + _ + ) do case CommonAPI.Utils.confirm_current_password(user, body_params.password) do {:ok, user} -> with {:ok, target_user} <- find_or_fetch_user_by_nickname(body_params.target_account), @@ -276,7 +298,10 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do end end - def add_alias(%{assigns: %{user: user}, body_params: body_params} = conn, _) do + def add_alias( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: body_params}}} = conn, + _ + ) do with {:ok, alias_user} <- find_user_by_nickname(body_params.alias), {:ok, _user} <- user |> User.add_alias(alias_user) do json(conn, %{status: "success"}) @@ -291,7 +316,10 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do end end - def delete_alias(%{assigns: %{user: user}, body_params: body_params} = conn, _) do + def delete_alias( + %{assigns: %{user: user}, private: %{open_api_spex: %{body_params: body_params}}} = conn, + _ + ) do with {:ok, alias_user} <- find_user_by_nickname(body_params.alias), {:ok, _user} <- user |> User.delete_alias(alias_user) do json(conn, %{status: "success"}) @@ -306,7 +334,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do end end - def list_aliases(%{assigns: %{user: user}} = conn, %{}) do + def list_aliases(%{assigns: %{user: user}} = conn, _) do alias_nicks = user |> User.alias_users() @@ -319,7 +347,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do user = User.get_cached_by_nickname(nickname) if user == nil do - {:not_found, nil} + {:error, :not_found} else {:ok, user} end @@ -345,13 +373,16 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do end def healthcheck(conn, _params) do - with true <- Config.get([:instance, :healthcheck]), + with {:cfg, true} <- {:cfg, Config.get([:instance, :healthcheck])}, %{healthy: true} = info <- Healthcheck.system_info() do json(conn, info) else %{healthy: false} = info -> service_unavailable(conn, info) + {:cfg, false} -> + service_unavailable(conn, %{"error" => "Healthcheck disabled"}) + _ -> service_unavailable(conn, %{}) end diff --git a/lib/pleroma/web/views/streamer_view.ex b/lib/pleroma/web/views/streamer_view.ex @@ -11,8 +11,11 @@ defmodule Pleroma.Web.StreamerView do alias Pleroma.User alias Pleroma.Web.MastodonAPI.NotificationView - def render("update.json", %Activity{} = activity, %User{} = user) do + require Pleroma.Constants + + def render("update.json", %Activity{} = activity, %User{} = user, topic) do %{ + stream: render("stream.json", %{topic: topic}), event: "update", payload: Pleroma.Web.MastodonAPI.StatusView.render( @@ -25,8 +28,9 @@ defmodule Pleroma.Web.StreamerView do |> Jason.encode!() end - def render("status_update.json", %Activity{} = activity, %User{} = user) do + def render("status_update.json", %Activity{} = activity, %User{} = user, topic) do %{ + stream: render("stream.json", %{topic: topic}), event: "status.update", payload: Pleroma.Web.MastodonAPI.StatusView.render( @@ -39,8 +43,9 @@ defmodule Pleroma.Web.StreamerView do |> Jason.encode!() end - def render("notification.json", %Notification{} = notify, %User{} = user) do + def render("notification.json", %Notification{} = notify, %User{} = user, topic) do %{ + stream: render("stream.json", %{topic: topic}), event: "notification", payload: NotificationView.render( @@ -52,8 +57,9 @@ defmodule Pleroma.Web.StreamerView do |> Jason.encode!() end - def render("update.json", %Activity{} = activity) do + def render("update.json", %Activity{} = activity, topic) do %{ + stream: render("stream.json", %{topic: topic}), event: "update", payload: Pleroma.Web.MastodonAPI.StatusView.render( @@ -65,8 +71,9 @@ defmodule Pleroma.Web.StreamerView do |> Jason.encode!() end - def render("status_update.json", %Activity{} = activity) do + def render("status_update.json", %Activity{} = activity, topic) do %{ + stream: render("stream.json", %{topic: topic}), event: "status.update", payload: Pleroma.Web.MastodonAPI.StatusView.render( @@ -78,7 +85,7 @@ defmodule Pleroma.Web.StreamerView do |> Jason.encode!() end - def render("chat_update.json", %{chat_message_reference: cm_ref}) do + def render("chat_update.json", %{chat_message_reference: cm_ref}, topic) do # Explicitly giving the cmr for the object here, so we don't accidentally # send a later 'last_message' that was inserted between inserting this and # streaming it out @@ -93,6 +100,7 @@ defmodule Pleroma.Web.StreamerView do ) %{ + stream: render("stream.json", %{topic: topic}), event: "pleroma:chat_update", payload: representation @@ -101,8 +109,9 @@ defmodule Pleroma.Web.StreamerView do |> Jason.encode!() end - def render("follow_relationships_update.json", item) do + def render("follow_relationships_update.json", item, topic) do %{ + stream: render("stream.json", %{topic: topic}), event: "pleroma:follow_relationships_update", payload: %{ @@ -123,8 +132,9 @@ defmodule Pleroma.Web.StreamerView do |> Jason.encode!() end - def render("conversation.json", %Participation{} = participation) do + def render("conversation.json", %Participation{} = participation, topic) do %{ + stream: render("stream.json", %{topic: topic}), event: "conversation", payload: Pleroma.Web.MastodonAPI.ConversationView.render("participation.json", %{ @@ -135,4 +145,39 @@ defmodule Pleroma.Web.StreamerView do } |> Jason.encode!() end + + def render("pleroma_respond.json", %{type: type, result: result} = params) do + %{ + event: "pleroma:respond", + payload: + %{ + result: result, + type: type + } + |> Map.merge(maybe_error(params)) + |> Jason.encode!() + } + |> Jason.encode!() + end + + def render("stream.json", %{topic: "user:pleroma_chat:" <> _}), do: ["user:pleroma_chat"] + def render("stream.json", %{topic: "user:notification:" <> _}), do: ["user:notification"] + def render("stream.json", %{topic: "user:" <> _}), do: ["user"] + def render("stream.json", %{topic: "direct:" <> _}), do: ["direct"] + def render("stream.json", %{topic: "list:" <> id}), do: ["list", id] + def render("stream.json", %{topic: "hashtag:" <> tag}), do: ["hashtag", tag] + + def render("stream.json", %{topic: "public:remote:media:" <> instance}), + do: ["public:remote:media", instance] + + def render("stream.json", %{topic: "public:remote:" <> instance}), + do: ["public:remote", instance] + + def render("stream.json", %{topic: stream}) when stream in Pleroma.Constants.public_streams(), + do: [stream] + + defp maybe_error(%{error: :bad_topic}), do: %{error: "bad_topic"} + defp maybe_error(%{error: :unauthorized}), do: %{error: "unauthorized"} + defp maybe_error(%{error: :already_authenticated}), do: %{error: "already_authenticated"} + defp maybe_error(_), do: %{} end diff --git a/lib/pleroma/web/web_finger.ex b/lib/pleroma/web/web_finger.ex @@ -5,8 +5,8 @@ defmodule Pleroma.Web.WebFinger do alias Pleroma.HTTP alias Pleroma.User + alias Pleroma.Web.ActivityPub.Publisher alias Pleroma.Web.Endpoint - alias Pleroma.Web.Federator.Publisher alias Pleroma.Web.XML alias Pleroma.XmlBuilder require Jason @@ -70,7 +70,7 @@ defmodule Pleroma.Web.WebFinger do def represent_user(user, "JSON") do %{ - "subject" => "acct:#{user.nickname}@#{domain()}", + "subject" => "acct:#{user.nickname}@#{host()}", "aliases" => gather_aliases(user), "links" => gather_links(user) } @@ -90,13 +90,13 @@ defmodule Pleroma.Web.WebFinger do :XRD, %{xmlns: "http://docs.oasis-open.org/ns/xri/xrd-1.0"}, [ - {:Subject, "acct:#{user.nickname}@#{domain()}"} + {:Subject, "acct:#{user.nickname}@#{host()}"} ] ++ aliases ++ links } |> XmlBuilder.to_doc() end - defp domain do + def host do Pleroma.Config.get([__MODULE__, :domain]) || Pleroma.Web.Endpoint.host() end @@ -155,7 +155,16 @@ defmodule Pleroma.Web.WebFinger do end end + @cachex Pleroma.Config.get([:cachex, :provider], Cachex) def find_lrdd_template(domain) do + @cachex.fetch!(:host_meta_cache, domain, fn _ -> + {:commit, fetch_lrdd_template(domain)} + end) + rescue + e -> {:error, "Cachex error: #{inspect(e)}"} + end + + defp fetch_lrdd_template(domain) do # WebFinger is restricted to HTTPS - https://tools.ietf.org/html/rfc7033#section-9.1 meta_url = "https://#{domain}/.well-known/host-meta" @@ -163,12 +172,12 @@ defmodule Pleroma.Web.WebFinger do get_template_from_xml(body) else error -> - Logger.warn("Can't find LRDD template in #{inspect(meta_url)}: #{inspect(error)}") + Logger.warning("Can't find LRDD template in #{inspect(meta_url)}: #{inspect(error)}") {:error, :lrdd_not_found} end end - defp get_address_from_domain(domain, encoded_account) when is_binary(domain) do + defp get_address_from_domain(domain, "acct:" <> _ = encoded_account) when is_binary(domain) do case find_lrdd_template(domain) do {:ok, template} -> String.replace(template, "{uri}", encoded_account) @@ -178,6 +187,11 @@ defmodule Pleroma.Web.WebFinger do end end + defp get_address_from_domain(domain, account) when is_binary(domain) do + encoded_account = URI.encode("acct:#{account}") + get_address_from_domain(domain, encoded_account) + end + defp get_address_from_domain(_, _), do: {:error, :webfinger_no_domain} @spec finger(String.t()) :: {:ok, map()} | {:error, any()} @@ -192,9 +206,7 @@ defmodule Pleroma.Web.WebFinger do URI.parse(account).host end - encoded_account = URI.encode("acct:#{account}") - - with address when is_binary(address) <- get_address_from_domain(domain, encoded_account), + with address when is_binary(address) <- get_address_from_domain(domain, account), {:ok, %{status: status, body: body, headers: headers}} when status in 200..299 <- HTTP.get( address, @@ -216,10 +228,28 @@ defmodule Pleroma.Web.WebFinger do _ -> {:error, {:content_type, nil}} end + |> case do + {:ok, data} -> validate_webfinger(address, data) + error -> error + end else error -> Logger.debug("Couldn't finger #{account}: #{inspect(error)}") error end end + + defp validate_webfinger(request_url, %{"subject" => "acct:" <> acct = subject} = data) do + with [_name, acct_host] <- String.split(acct, "@"), + {_, url} <- {:address, get_address_from_domain(acct_host, subject)}, + %URI{host: request_host} <- URI.parse(request_url), + %URI{host: acct_host} <- URI.parse(url), + {_, true} <- {:hosts_match, acct_host == request_host} do + {:ok, data} + else + _ -> {:error, {:webfinger_invalid, request_url, data}} + end + end + + defp validate_webfinger(url, data), do: {:error, {:webfinger_invalid, url, data}} end diff --git a/lib/pleroma/web/web_finger/web_finger_controller.ex b/lib/pleroma/web/web_finger/web_finger_controller.ex @@ -30,7 +30,7 @@ defmodule Pleroma.Web.WebFinger.WebFingerController do end def webfinger(%{assigns: %{format: format}} = conn, %{"resource" => resource}) - when format in ["json", "jrd+json"] do + when format in ["jrd", "json", "jrd+json"] do with {:ok, response} <- WebFinger.webfinger(resource, "JSON") do json(conn, response) else diff --git a/lib/pleroma/web/xml.ex b/lib/pleroma/web/xml.ex @@ -29,7 +29,10 @@ defmodule Pleroma.Web.XML do {doc, _rest} = text |> :binary.bin_to_list() - |> :xmerl_scan.string(quiet: true) + |> :xmerl_scan.string( + quiet: true, + allow_entities: false + ) {:ok, doc} rescue diff --git a/lib/pleroma/workers/background_worker.ex b/lib/pleroma/workers/background_worker.ex @@ -28,7 +28,7 @@ defmodule Pleroma.Workers.BackgroundWorker do def perform(%Job{args: %{"op" => op, "user_id" => user_id, "identifiers" => identifiers}}) when op in ["blocks_import", "follow_import", "mutes_import"] do user = User.get_cached_by_id(user_id) - {:ok, User.Import.perform(String.to_atom(op), user, identifiers)} + {:ok, User.Import.perform(String.to_existing_atom(op), user, identifiers)} end def perform(%Job{ @@ -40,10 +40,15 @@ defmodule Pleroma.Workers.BackgroundWorker do Pleroma.FollowingRelationship.move_following(origin, target) end + def perform(%Job{args: %{"op" => "verify_fields_links", "user_id" => user_id}}) do + user = User.get_by_id(user_id) + User.perform(:verify_fields_links, user) + end + def perform(%Job{args: %{"op" => "delete_instance", "host" => host}}) do Instance.perform(:delete_instance, host) end @impl Oban.Worker - def timeout(_job), do: :timer.seconds(5) + def timeout(_job), do: :timer.seconds(900) end diff --git a/lib/pleroma/workers/backup_worker.ex b/lib/pleroma/workers/backup_worker.ex @@ -51,7 +51,7 @@ defmodule Pleroma.Workers.BackupWorker do end @impl Oban.Worker - def timeout(_job), do: :timer.seconds(900) + def timeout(_job), do: :infinity defp has_email?(user) do not is_nil(user.email) and user.email != "" diff --git a/lib/pleroma/workers/cron/digest_emails_worker.ex b/lib/pleroma/workers/cron/digest_emails_worker.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Workers.Cron.DigestEmailsWorker do The worker to send digest emails. """ - use Oban.Worker, queue: "digest_emails" + use Oban.Worker, queue: "mailer" alias Pleroma.Config alias Pleroma.Emails diff --git a/lib/pleroma/workers/cron/new_users_digest_worker.ex b/lib/pleroma/workers/cron/new_users_digest_worker.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Workers.Cron.NewUsersDigestWorker do import Ecto.Query - use Pleroma.Workers.WorkerHelper, queue: "new_users_digest" + use Pleroma.Workers.WorkerHelper, queue: "mailer" @impl Oban.Worker def perform(_job) do diff --git a/lib/pleroma/workers/publisher_worker.ex b/lib/pleroma/workers/publisher_worker.ex @@ -18,9 +18,9 @@ defmodule Pleroma.Workers.PublisherWorker do Federator.perform(:publish, activity) end - def perform(%Job{args: %{"op" => "publish_one", "module" => module_name, "params" => params}}) do + def perform(%Job{args: %{"op" => "publish_one", "params" => params}}) do params = Map.new(params, fn {k, v} -> {String.to_atom(k), v} end) - Federator.perform(:publish_one, String.to_atom(module_name), params) + Federator.perform(:publish_one, params) end @impl Oban.Worker diff --git a/lib/pleroma/workers/receiver_worker.ex b/lib/pleroma/workers/receiver_worker.ex @@ -3,21 +3,57 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.ReceiverWorker do + alias Pleroma.Signature + alias Pleroma.User alias Pleroma.Web.Federator use Pleroma.Workers.WorkerHelper, queue: "federator_incoming" @impl Oban.Worker + + def perform(%Job{ + args: %{"op" => "incoming_ap_doc", "req_headers" => req_headers, "params" => params} + }) do + # Oban's serialization converts our tuple headers to lists. + # Revert it for the signature validation. + req_headers = Enum.into(req_headers, [], &List.to_tuple(&1)) + + conn_data = %{params: params, req_headers: req_headers} + + with {:ok, %User{} = _actor} <- User.get_or_fetch_by_ap_id(conn_data.params["actor"]), + {:ok, _public_key} <- Signature.refetch_public_key(conn_data), + {:signature, true} <- {:signature, HTTPSignatures.validate_conn(conn_data)}, + {:ok, res} <- Federator.perform(:incoming_ap_doc, params) do + {:ok, res} + else + e -> process_errors(e) + end + end + def perform(%Job{args: %{"op" => "incoming_ap_doc", "params" => params}}) do with {:ok, res} <- Federator.perform(:incoming_ap_doc, params) do {:ok, res} else - {:error, :origin_containment_failed} -> {:cancel, :origin_containment_failed} - {:error, {:reject, reason}} -> {:cancel, reason} - e -> e + e -> process_errors(e) end end @impl Oban.Worker + def timeout(%_{args: %{"timeout" => timeout}}), do: timeout + def timeout(_job), do: :timer.seconds(5) + + defp process_errors(errors) do + case errors do + {:error, :origin_containment_failed} -> {:cancel, :origin_containment_failed} + {:error, :already_present} -> {:cancel, :already_present} + {:error, {:validate_object, reason}} -> {:cancel, reason} + {:error, {:error, {:validate, reason}}} -> {:cancel, reason} + {:error, {:reject, reason}} -> {:cancel, reason} + {:signature, false} -> {:cancel, :invalid_signature} + {:error, {:error, reason = "Object has been deleted"}} -> {:cancel, reason} + {:error, _} = e -> e + e -> {:error, e} + end + end end diff --git a/lib/pleroma/workers/remote_fetcher_worker.ex b/lib/pleroma/workers/remote_fetcher_worker.ex @@ -9,7 +9,25 @@ defmodule Pleroma.Workers.RemoteFetcherWorker do @impl Oban.Worker def perform(%Job{args: %{"op" => "fetch_remote", "id" => id} = args}) do - {:ok, _object} = Fetcher.fetch_object_from_id(id, depth: args["depth"]) + case Fetcher.fetch_object_from_id(id, depth: args["depth"]) do + {:ok, _object} -> + :ok + + {:error, :forbidden} -> + {:discard, :forbidden} + + {:error, :not_found} -> + {:discard, :not_found} + + {:error, :allowed_depth} -> + {:discard, :allowed_depth} + + {:error, _} = e -> + e + + e -> + {:error, e} + end end @impl Oban.Worker diff --git a/lib/pleroma/workers/rich_media_expiration_worker.ex b/lib/pleroma/workers/rich_media_expiration_worker.ex @@ -0,0 +1,15 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.RichMediaExpirationWorker do + alias Pleroma.Web.RichMedia.Card + + use Oban.Worker, + queue: :rich_media_expiration + + @impl Oban.Worker + def perform(%Job{args: %{"url" => url} = _args}) do + Card.delete(url) + end +end diff --git a/lib/pleroma/workers/search_indexing_worker.ex b/lib/pleroma/workers/search_indexing_worker.ex @@ -0,0 +1,23 @@ +defmodule Pleroma.Workers.SearchIndexingWorker do + use Pleroma.Workers.WorkerHelper, queue: "search_indexing" + + @impl Oban.Worker + + alias Pleroma.Config.Getting, as: Config + + def perform(%Job{args: %{"op" => "add_to_index", "activity" => activity_id}}) do + activity = Pleroma.Activity.get_by_id_with_object(activity_id) + + search_module = Config.get([Pleroma.Search, :module]) + + search_module.add_to_index(activity) + end + + def perform(%Job{args: %{"op" => "remove_from_index", "object" => object_id}}) do + object = Pleroma.Object.get_by_id(object_id) + + search_module = Config.get([Pleroma.Search, :module]) + + search_module.remove_from_index(object) + end +end diff --git a/lib/pleroma/workers/transmogrifier_worker.ex b/lib/pleroma/workers/transmogrifier_worker.ex @@ -1,18 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.TransmogrifierWorker do - alias Pleroma.User - - use Pleroma.Workers.WorkerHelper, queue: "transmogrifier" - - @impl Oban.Worker - def perform(%Job{args: %{"op" => "user_upgrade", "user_id" => user_id}}) do - user = User.get_cached_by_id(user_id) - Pleroma.Web.ActivityPub.Transmogrifier.perform(:user_upgrade, user) - end - - @impl Oban.Worker - def timeout(_job), do: :timer.seconds(5) -end diff --git a/mix.exs b/mix.exs @@ -4,12 +4,13 @@ defmodule Pleroma.Mixfile do def project do [ app: :pleroma, - version: version("2.5.51"), - elixir: "~> 1.11", + version: version("2.6.52"), + elixir: "~> 1.13", elixirc_paths: elixirc_paths(Mix.env()), - compilers: [:phoenix, :gettext] ++ Mix.compilers(), + compilers: Mix.compilers(), elixirc_options: [warnings_as_errors: warnings_as_errors()], xref: [exclude: [:eldap]], + dialyzer: [plt_add_apps: [:mix, :eldap]], start_permanent: Mix.env() == :prod, aliases: aliases(), deps: deps(), @@ -78,8 +79,7 @@ defmodule Pleroma.Mixfile do :comeonin, :fast_sanitize, :os_mon, - :ssl, - :esshd + :ssl ], included_applications: [:ex_syslogger] ] @@ -114,23 +114,22 @@ defmodule Pleroma.Mixfile do # Type `mix help deps` for examples and options. defp deps do [ - {:phoenix, "~> 1.6.0"}, - {:phoenix_ecto, "~> 4.4.0"}, + {:phoenix, "~> 1.7.3"}, + {:phoenix_ecto, "~> 4.4"}, + {:ecto_sql, "~> 3.10"}, {:ecto_enum, "~> 1.4"}, {:postgrex, ">= 0.0.0"}, - {:phoenix_html, "~> 3.1"}, + {:phoenix_html, "~> 3.3"}, {:phoenix_live_reload, "~> 1.3.3", only: :dev}, - {:phoenix_live_view, "~> 0.17.1"}, - {:phoenix_live_dashboard, "~> 0.6.2"}, - {:telemetry_metrics, "~> 0.6.1"}, + {:phoenix_live_view, "~> 0.19.0"}, + {:phoenix_live_dashboard, "~> 0.8.0"}, + {:telemetry_metrics, "~> 0.6"}, {:telemetry_poller, "~> 1.0"}, {:tzdata, "~> 1.0.3"}, - {:plug_cowboy, "~> 2.3"}, - {:oban, "~> 2.13"}, - {:gettext, - git: "https://github.com/tusooa/gettext.git", - ref: "72fb2496b6c5280ed911bdc3756890e7f38a4808", - override: true}, + {:plug_cowboy, "~> 2.5"}, + # oban 2.14 requires Elixir 1.12+ + {:oban, "~> 2.13.4"}, + {:gettext, "~> 0.20"}, {:bcrypt_elixir, "~> 2.2"}, {:trailing_format_plug, "~> 0.0.7"}, {:fast_sanitize, "~> 0.2.0"}, @@ -138,49 +137,37 @@ defmodule Pleroma.Mixfile do {:calendar, "~> 1.0"}, {:cachex, "~> 3.2"}, {:poison, "~> 3.0", override: true}, - {:tesla, "~> 1.4.0", override: true}, + {:tesla, "~> 1.8.0"}, {:castore, "~> 0.1"}, {:cowlib, "~> 2.9", override: true}, {:gun, "~> 2.0.0-rc.1", override: true}, - {:finch, "~> 0.10.0"}, + {:finch, "~> 0.15"}, {:jason, "~> 1.2"}, - {:mogrify, "~> 0.9.1"}, + {:mogrify, "~> 0.8.0"}, {:ex_aws, "~> 2.1.6"}, {:ex_aws_s3, "~> 2.0"}, {:sweet_xml, "~> 0.7.2"}, - {:earmark, "~> 1.4.22"}, + # earmark 1.4.23 requires Elixir 1.12+ + {:earmark, "1.4.22"}, {:bbcode_pleroma, "~> 0.2.0"}, - {:crypt, "~> 1.0"}, {:cors_plug, "~> 2.0"}, {:web_push_encryption, "~> 0.3.1"}, - {:swoosh, "~> 1.0"}, + # swoosh 1.11.2+ requires Elixir 1.12+ + {:swoosh, "~> 1.10.0"}, {:phoenix_swoosh, "~> 1.1"}, {:gen_smtp, "~> 0.13"}, {:ex_syslogger, "~> 1.4"}, - {:floki, "~> 0.27"}, + {:floki, "~> 0.35"}, {:timex, "~> 3.6"}, {:ueberauth, "~> 0.4"}, {:linkify, "~> 0.5.3"}, - {:http_signatures, "~> 0.1.1"}, + {:http_signatures, "~> 0.1.2"}, {:telemetry, "~> 1.0.0", override: true}, {:poolboy, "~> 1.5"}, - {:prometheus, "~> 4.6"}, - {:prometheus_ex, - git: "https://github.com/lanodan/prometheus.ex.git", - branch: "fix/elixir-1.14", - override: true}, - {:prometheus_plugs, "~> 1.1"}, - {:prometheus_phoenix, "~> 1.3"}, - # Note: once `prometheus_phx` is integrated into `prometheus_phoenix`, remove the former: - {:prometheus_phx, - git: "https://git.pleroma.social/pleroma/elixir-libraries/prometheus-phx.git", - branch: "no-logging"}, - {:prometheus_ecto, "~> 1.4"}, + {:prom_ex, "~> 1.9"}, {:recon, "~> 2.5"}, {:joken, "~> 2.0"}, - {:benchee, "~> 1.0"}, {:pot, "~> 1.0"}, - {:esshd, "~> 0.1.0", runtime: Application.get_env(:esshd, :enabled, false)}, {:ex_const, "~> 0.2"}, {:plug_static_index_html, "~> 1.0.0"}, {:flake_id, "~> 0.1.0"}, @@ -190,15 +177,18 @@ defmodule Pleroma.Mixfile do ref: "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8"}, {:captcha, git: "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", - ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"}, + ref: "90f6ce7672f70f56708792a98d98bd05176c9176"}, {:restarter, path: "./restarter"}, {:majic, "~> 1.0"}, - {:eblurhash, "~> 1.2.2"}, {:open_api_spex, "~> 3.16"}, {:ecto_psql_extras, "~> 0.6"}, - - # indirect dependency version override - {:plug, "~> 1.10.4", override: true}, + {:vix, "~> 0.26.0"}, + {:elixir_make, "~> 0.7.7", override: true}, + {:blurhash, "~> 0.1.0", hex: :rinpatch_blurhash}, + {:exile, + git: "https://github.com/akash-akya/exile.git", + ref: "be87c33b02a7c3c5d22d2ece01fbd462355b28ef"}, + {:bandit, "~> 1.2"}, ## dev & test {:ex_doc, "~> 0.22", only: :dev, runtime: false}, @@ -208,7 +198,9 @@ defmodule Pleroma.Mixfile do {:covertool, "~> 2.0", only: :test}, {:hackney, "~> 1.18.0", override: true}, {:mox, "~> 1.0", only: :test}, - {:websockex, "~> 0.4.3", only: :test} + {:websockex, "~> 0.4.3", only: :test}, + {:benchee, "~> 1.0", only: :benchmark}, + {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false} ] ++ oauth_deps() end diff --git a/mix.lock b/mix.lock @@ -1,136 +1,150 @@ %{ "accept": {:hex, :accept, "0.3.5", "b33b127abca7cc948bbe6caa4c263369abf1347cfa9d8e699c6d214660f10cd1", [:rebar3], [], "hexpm", "11b18c220bcc2eab63b5470c038ef10eb6783bcb1fcdb11aa4137defa5ac1bb8"}, + "bandit": {:hex, :bandit, "1.2.1", "aa485b4ac175065b8e0fb5864ddd5dd7b50d52336b36f61c82f484c3718b3d15", [:mix], [{:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "27393e590a407f1b7d51c5fee4737f139fe224a30449ce25061eac70f763896b"}, "base62": {:hex, :base62, "1.2.2", "85c6627eb609317b70f555294045895ffaaeb1758666ab9ef9ca38865b11e629", [:mix], [{:custom_base, "~> 0.2.1", [hex: :custom_base, repo: "hexpm", optional: false]}], "hexpm", "d41336bda8eaa5be197f1e4592400513ee60518e5b9f4dcf38f4b4dae6f377bb"}, "bbcode_pleroma": {:hex, :bbcode_pleroma, "0.2.0", "d36f5bca6e2f62261c45be30fa9b92725c0655ad45c99025cb1c3e28e25803ef", [:mix], [{:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "19851074419a5fedb4ef49e1f01b30df504bb5dbb6d6adfc135238063bebd1c3"}, - "bcrypt_elixir": {:hex, :bcrypt_elixir, "2.3.0", "6cb662d5c1b0a8858801cf20997bd006e7016aa8c52959c9ef80e0f34fb60b7a", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "2c81d61d4f6ed0e5cf7bf27a9109b791ff216a1034b3d541327484f46dd43769"}, - "benchee": {:hex, :benchee, "1.0.1", "66b211f9bfd84bd97e6d1beaddf8fc2312aaabe192f776e8931cb0c16f53a521", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}], "hexpm", "3ad58ae787e9c7c94dd7ceda3b587ec2c64604563e049b2a0e8baafae832addb"}, - "bunt": {:hex, :bunt, "0.2.1", "e2d4792f7bc0ced7583ab54922808919518d0e57ee162901a16a1b6664ef3b14", [:mix], [], "hexpm", "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5"}, - "cachex": {:hex, :cachex, "3.3.0", "6f2ebb8f27491fe39121bd207c78badc499214d76c695658b19d6079beeca5c2", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "d90e5ee1dde14cef33f6b187af4335b88748b72b30c038969176cd4e6ccc31a1"}, + "bcrypt_elixir": {:hex, :bcrypt_elixir, "2.3.1", "5114d780459a04f2b4aeef52307de23de961b69e13a5cd98a911e39fda13f420", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "42182d5f46764def15bf9af83739e3bf4ad22661b1c34fc3e88558efced07279"}, + "benchee": {:hex, :benchee, "1.3.0", "f64e3b64ad3563fa9838146ddefb2d2f94cf5b473bdfd63f5ca4d0657bf96694", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:statistex, "~> 1.0", [hex: :statistex, repo: "hexpm", optional: false]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "34f4294068c11b2bd2ebf2c59aac9c7da26ffa0068afdf3419f1b176e16c5f81"}, + "blurhash": {:hex, :rinpatch_blurhash, "0.1.0", "01a888b0f5f1f382ab52e4396f01831cbe8486ea5828604c90f4dac533d39a4b", [:mix], [{:mogrify, "~> 0.8.0", [hex: :mogrify, repo: "hexpm", optional: true]}], "hexpm", "19911a5dcbb0acb9710169a72f702bce6cb048822b12de566ccd82b2cc42b907"}, + "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, + "cachex": {:hex, :cachex, "3.6.0", "14a1bfbeee060dd9bec25a5b6f4e4691e3670ebda28c8ba2884b12fe30b36bf8", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "ebf24e373883bc8e0c8d894a63bbe102ae13d918f790121f5cfe6e485cc8e2e2"}, "calendar": {:hex, :calendar, "1.0.0", "f52073a708528482ec33d0a171954ca610fe2bd28f1e871f247dc7f1565fa807", [:mix], [{:tzdata, "~> 0.5.20 or ~> 0.1.201603 or ~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "990e9581920c82912a5ee50e62ff5ef96da6b15949a2ee4734f935fdef0f0a6f"}, - "captcha": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", "e0f16822d578866e186a0974d65ad58cddc1e2ab", [ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"]}, - "castore": {:hex, :castore, "0.1.18", "deb5b9ab02400561b6f5708f3e7660fc35ca2d51bfc6a940d2f513f89c2975fc", [:mix], [], "hexpm", "61bbaf6452b782ef80b33cdb45701afbcf0a918a45ebe7e73f1130d661e66a06"}, - "certifi": {:hex, :certifi, "2.9.0", "6f2a475689dd47f19fb74334859d460a2dc4e3252a3324bd2111b8f0429e7e21", [:rebar3], [], "hexpm", "266da46bdb06d6c6d35fde799bcb28d36d985d424ad7c08b5bb48f5b5cdd4641"}, + "captcha": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", "90f6ce7672f70f56708792a98d98bd05176c9176", [ref: "90f6ce7672f70f56708792a98d98bd05176c9176"]}, + "castore": {:hex, :castore, "0.1.22", "4127549e411bedd012ca3a308dede574f43819fe9394254ca55ab4895abfa1a2", [:mix], [], "hexpm", "c17576df47eb5aa1ee40cc4134316a99f5cad3e215d5c77b8dd3cfef12a22cac"}, + "cc_precompiler": {:hex, :cc_precompiler, "0.1.9", "e8d3364f310da6ce6463c3dd20cf90ae7bbecbf6c5203b98bf9b48035592649b", [:mix], [{:elixir_make, "~> 0.7", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "9dcab3d0f3038621f1601f13539e7a9ee99843862e66ad62827b0c42b2f58a54"}, + "certifi": {:hex, :certifi, "2.12.0", "2d1cca2ec95f59643862af91f001478c9863c2ac9cb6e2f89780bfd8de987329", [:rebar3], [], "hexpm", "ee68d85df22e554040cdb4be100f33873ac6051387baf6a8f6ce82272340ff1c"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, - "comeonin": {:hex, :comeonin, "5.3.2", "5c2f893d05c56ae3f5e24c1b983c2d5dfb88c6d979c9287a76a7feb1e1d8d646", [:mix], [], "hexpm", "d0993402844c49539aeadb3fe46a3c9bd190f1ecf86b6f9ebd71957534c95f04"}, + "comeonin": {:hex, :comeonin, "5.4.0", "246a56ca3f41d404380fc6465650ddaa532c7f98be4bda1b4656b3a37cc13abe", [:mix], [], "hexpm", "796393a9e50d01999d56b7b8420ab0481a7538d0caf80919da493b4a6e51faf1"}, "concurrent_limiter": {:hex, :concurrent_limiter, "0.1.1", "43ae1dc23edda1ab03dd66febc739c4ff710d047bb4d735754909f9a474ae01c", [:mix], [{:telemetry, "~> 0.3", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "53968ff238c0fbb4d7ed76ddb1af0be6f3b2f77909f6796e249e737c505a16eb"}, "connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"}, "cors_plug": {:hex, :cors_plug, "2.0.3", "316f806d10316e6d10f09473f19052d20ba0a0ce2a1d910ddf57d663dac402ae", [:mix], [{:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "ee4ae1418e6ce117fc42c2ba3e6cbdca4e95ecd2fe59a05ec6884ca16d469aea"}, - "covertool": {:hex, :covertool, "2.0.4", "54acff6cddd88d28dea663cd2e1fe20dd32fcf5f5d3aff7d59031ce44ce39efa", [:rebar3], [], "hexpm", "5c9568ba4308fda2082172737c80c31d991ea83961eb10791f06106a870d0cdc"}, - "cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"}, + "covertool": {:hex, :covertool, "2.0.6", "4a291b4e3449025b0595d8f44c8d7635d4f48f033be2ce88d22a329f36f94a91", [:rebar3], [], "hexpm", "5db3fcd82180d8ea4ad857d4d1ab21a8d31b5aee0d60d2f6c0f9e25a411d1e21"}, + "cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"}, "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"}, - "cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"}, - "credo": {:hex, :credo, "1.6.7", "323f5734350fd23a456f2688b9430e7d517afb313fbd38671b8a4449798a7854", [:mix], [{:bunt, "~> 0.2.1", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2.8", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "41e110bfb007f7eda7f897c10bf019ceab9a0b269ce79f015d54b0dcf4fc7dd3"}, + "cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"}, + "credo": {:hex, :credo, "1.7.3", "05bb11eaf2f2b8db370ecaa6a6bda2ec49b2acd5e0418bc106b73b07128c0436", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "35ea675a094c934c22fb1dca3696f3c31f2728ae6ef5a53b5d648c11180a4535"}, "crontab": {:hex, :crontab, "1.1.8", "2ce0e74777dfcadb28a1debbea707e58b879e6aa0ffbf9c9bb540887bce43617", [:mix], [{:ecto, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm"}, - "crypt": {:hex, :crypt, "1.0.1", "a3567e1c651a2ec42c6650d9f3ab789e0f12a508c060653a9bbb5fafe60f043c", [:rebar3], [], "hexpm", "968dffe321c7a5d9f9b4577c4a4ff56a1c26d1a8a2270eb22c7636a0b43d3982"}, "custom_base": {:hex, :custom_base, "0.2.1", "4a832a42ea0552299d81652aa0b1f775d462175293e99dfbe4d7dbaab785a706", [:mix], [], "hexpm", "8df019facc5ec9603e94f7270f1ac73ddf339f56ade76a721eaa57c1493ba463"}, - "db_connection": {:hex, :db_connection, "2.4.2", "f92e79aff2375299a16bcb069a14ee8615c3414863a6fef93156aee8e86c2ff3", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4fe53ca91b99f55ea249693a0229356a08f4d1a7931d8ffa79289b145fe83668"}, - "decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"}, + "db_connection": {:hex, :db_connection, "2.6.0", "77d835c472b5b67fc4f29556dee74bf511bbafecdcaf98c27d27fa5918152086", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3"}, + "decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"}, "deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"}, + "dialyxir": {:hex, :dialyxir, "1.4.3", "edd0124f358f0b9e95bfe53a9fcf806d615d8f838e2202a9f430d59566b6b53b", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986"}, "earmark": {:hex, :earmark, "1.4.22", "ea3e45c6359446dc308be0a64ce82a03260d973de7d0625a762e6d352ff57958", [:mix], [{:earmark_parser, "~> 1.4.23", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "1caf5145665a42fd76d5317286b0c171861fb1c04f86ab103dde76868814fdfb"}, - "earmark_parser": {:hex, :earmark_parser, "1.4.29", "149d50dcb3a93d9f3d6f3ecf18c918fb5a2d3c001b5d3305c926cddfbd33355b", [:mix], [], "hexpm", "4902af1b3eb139016aed210888748db8070b8125c2342ce3dcae4f38dcc63503"}, - "eblurhash": {:hex, :eblurhash, "1.2.2", "7da4255aaea984b31bb71155f673257353b0e0554d0d30dcf859547e74602582", [:rebar3], [], "hexpm", "8c20ca00904de023a835a9dcb7b7762fed32264c85a80c3cafa85288e405044c"}, - "ecto": {:hex, :ecto, "3.9.2", "017db3bc786ff64271108522c01a5d3f6ba0aea5c84912cfb0dd73bf13684108", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "21466d5177e09e55289ac7eade579a642578242c7a3a9f91ad5c6583337a9d15"}, + "earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"}, + "eblurhash": {:git, "https://github.com/zotonic/eblurhash.git", "bc37ceb426ef021ee9927fb249bb93f7059194ab", [ref: "bc37ceb426ef021ee9927fb249bb93f7059194ab"]}, + "ecto": {:hex, :ecto, "3.11.1", "4b4972b717e7ca83d30121b12998f5fcdc62ba0ed4f20fd390f16f3270d85c3e", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ebd3d3772cd0dfcd8d772659e41ed527c28b2a8bde4b00fe03e0463da0f1983b"}, "ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"}, - "ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.4", "5d43fd088d39a158c860b17e8d210669587f63ec89ea122a4654861c8c6e2db4", [:mix], [{:ecto_sql, "~> 3.4", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, ">= 0.15.7", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "311db02f1b772e3d0dc7f56a05044b5e1499d78ed6abf38885e1ca70059449e5"}, - "ecto_sql": {:hex, :ecto_sql, "3.9.0", "2bb21210a2a13317e098a420a8c1cc58b0c3421ab8e3acfa96417dab7817918c", [:mix], [{:db_connection, "~> 2.5 or ~> 2.4.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.9.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a8f3f720073b8b1ac4c978be25fa7960ed7fd44997420c304a4a2e200b596453"}, + "ecto_psql_extras": {:hex, :ecto_psql_extras, "0.7.15", "0fc29dbae0e444a29bd6abeee4cf3c4c037e692a272478a234a1cc765077dbb1", [:mix], [{:ecto_sql, "~> 3.7", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0", [hex: :postgrex, repo: "hexpm", optional: false]}, {:table_rex, "~> 3.1.1 or ~> 4.0.0", [hex: :table_rex, repo: "hexpm", optional: false]}], "hexpm", "b6127f3a5c6fc3d84895e4768cc7c199f22b48b67d6c99b13fbf4a374e73f039"}, + "ecto_sql": {:hex, :ecto_sql, "3.11.1", "e9abf28ae27ef3916b43545f9578b4750956ccea444853606472089e7d169470", [:mix], [{:db_connection, "~> 2.5 or ~> 2.4.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.11.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ce14063ab3514424276e7e360108ad6c2308f6d88164a076aac8a387e1fea634"}, "eimp": {:hex, :eimp, "1.0.14", "fc297f0c7e2700457a95a60c7010a5f1dcb768a083b6d53f49cd94ab95a28f22", [:rebar3], [{:p1_utils, "1.0.18", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "501133f3112079b92d9e22da8b88bf4f0e13d4d67ae9c15c42c30bd25ceb83b6"}, - "elixir_make": {:hex, :elixir_make, "0.6.2", "7dffacd77dec4c37b39af867cedaabb0b59f6a871f89722c25b28fcd4bd70530", [:mix], [], "hexpm", "03e49eadda22526a7e5279d53321d1cced6552f344ba4e03e619063de75348d9"}, + "elixir_make": {:hex, :elixir_make, "0.7.8", "505026f266552ee5aabca0b9f9c229cbb496c689537c9f922f3eb5431157efc7", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.0", [hex: :certifi, repo: "hexpm", optional: true]}], "hexpm", "7a71945b913d37ea89b06966e1342c85cfe549b15e6d6d081e8081c493062c07"}, + "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "esbuild": {:hex, :esbuild, "0.5.0", "d5bb08ff049d7880ee3609ed5c4b864bd2f46445ea40b16b4acead724fb4c4a3", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "f183a0b332d963c4cfaf585477695ea59eef9a6f2204fdd0efa00e099694ffe5"}, - "esshd": {:hex, :esshd, "0.1.1", "d4dd4c46698093a40a56afecce8a46e246eb35463c457c246dacba2e056f31b5", [:mix], [], "hexpm", "d73e341e3009d390aa36387dc8862860bf9f874c94d9fd92ade2926376f49981"}, "eternal": {:hex, :eternal, "1.2.2", "d1641c86368de99375b98d183042dd6c2b234262b8d08dfd72b9eeaafc2a1abd", [:mix], [], "hexpm", "2c9fe32b9c3726703ba5e1d43a1d255a4f3f2d8f8f9bc19f094c7cb1a7a9e782"}, "ex_aws": {:hex, :ex_aws, "2.1.9", "dc4865ecc20a05190a34a0ac5213e3e5e2b0a75a0c2835e923ae7bfeac5e3c31", [:mix], [{:configparser_ex, "~> 4.0", [hex: :configparser_ex, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: true]}, {:jsx, "~> 3.0", [hex: :jsx, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.6", [hex: :sweet_xml, repo: "hexpm", optional: true]}], "hexpm", "3e6c776703c9076001fbe1f7c049535f042cb2afa0d2cbd3b47cbc4e92ac0d10"}, - "ex_aws_s3": {:hex, :ex_aws_s3, "2.2.0", "07a09de557070320e264893c0acc8a1d2e7ddf80155736e0aed966486d1988e6", [:mix], [{:ex_aws, "~> 2.0", [hex: :ex_aws, repo: "hexpm", optional: false]}, {:sweet_xml, ">= 0.0.0", [hex: :sweet_xml, repo: "hexpm", optional: true]}], "hexpm", "15175c613371e29e1f88b78ec8a4327389ca1ec5b34489744b175727496b21bd"}, + "ex_aws_s3": {:hex, :ex_aws_s3, "2.5.3", "422468e5c3e1a4da5298e66c3468b465cfd354b842e512cb1f6fbbe4e2f5bdaf", [:mix], [{:ex_aws, "~> 2.0", [hex: :ex_aws, repo: "hexpm", optional: false]}, {:sweet_xml, ">= 0.0.0", [hex: :sweet_xml, repo: "hexpm", optional: true]}], "hexpm", "4f09dd372cc386550e484808c5ac5027766c8d0cd8271ccc578b82ee6ef4f3b8"}, "ex_const": {:hex, :ex_const, "0.2.4", "d06e540c9d834865b012a17407761455efa71d0ce91e5831e86881b9c9d82448", [:mix], [], "hexpm", "96fd346610cc992b8f896ed26a98be82ac4efb065a0578f334a32d60a3ba9767"}, - "ex_doc": {:hex, :ex_doc, "0.24.2", "e4c26603830c1a2286dae45f4412a4d1980e1e89dc779fcd0181ed1d5a05c8d9", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "e134e1d9e821b8d9e4244687fb2ace58d479b67b282de5158333b0d57c6fb7da"}, + "ex_doc": {:hex, :ex_doc, "0.31.1", "8a2355ac42b1cc7b2379da9e40243f2670143721dd50748bf6c3b1184dae2089", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.1", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "3178c3a407c557d8343479e1ff117a96fd31bafe52a039079593fb0524ef61b0"}, "ex_machina": {:hex, :ex_machina, "2.7.0", "b792cc3127fd0680fecdb6299235b4727a4944a09ff0fa904cc639272cd92dc7", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "419aa7a39bde11894c87a615c4ecaa52d8f107bbdd81d810465186f783245bf8"}, "ex_syslogger": {:hex, :ex_syslogger, "1.5.2", "72b6aa2d47a236e999171f2e1ec18698740f40af0bd02c8c650bf5f1fd1bac79", [:mix], [{:poison, ">= 1.5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:syslog, "~> 1.1.0", [hex: :syslog, repo: "hexpm", optional: false]}], "hexpm", "ab9fab4136dbc62651ec6f16fa4842f10cf02ab4433fa3d0976c01be99398399"}, - "fast_html": {:hex, :fast_html, "2.0.5", "c61760340606c1077ff1f196f17834056cb1dd3d5cb92a9f2cabf28bc6221c3c", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "605f4f4829443c14127694ebabb681778712ceecb4470ec32aa31012330e6506"}, - "fast_sanitize": {:hex, :fast_sanitize, "0.2.2", "3cbbaebaea6043865dfb5b4ecb0f1af066ad410a51470e353714b10c42007b81", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "69f204db9250afa94a0d559d9110139850f57de2b081719fbafa1e9a89e94466"}, + "exile": {:git, "https://github.com/akash-akya/exile.git", "be87c33b02a7c3c5d22d2ece01fbd462355b28ef", [ref: "be87c33b02a7c3c5d22d2ece01fbd462355b28ef"]}, + "expo": {:hex, :expo, "0.5.1", "249e826a897cac48f591deba863b26c16682b43711dd15ee86b92f25eafd96d9", [:mix], [], "hexpm", "68a4233b0658a3d12ee00d27d37d856b1ba48607e7ce20fd376958d0ba6ce92b"}, + "fast_html": {:hex, :fast_html, "2.2.0", "6c5ef1be087a4ed613b0379c13f815c4d11742b36b67bb52cee7859847c84520", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "064c4f23b4a6168f9187dac8984b056f2c531bb0787f559fd6a8b34b38aefbae"}, + "fast_sanitize": {:hex, :fast_sanitize, "0.2.3", "67b93dfb34e302bef49fec3aaab74951e0f0602fd9fa99085987af05bd91c7a5", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "e8ad286d10d0386e15d67d0ee125245ebcfbc7d7290b08712ba9013c8c5e56e2"}, "file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"}, - "finch": {:hex, :finch, "0.10.2", "9ad27d68270d879f73f26604bb2e573d40f29bf0e907064a9a337f90a16a0312", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "dd8b11b282072cec2ef30852283949c248bd5d2820c88d8acc89402b81db7550"}, + "finch": {:hex, :finch, "0.18.0", "944ac7d34d0bd2ac8998f79f7a811b21d87d911e77a786bc5810adb75632ada4", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.6 or ~> 1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "69f5045b042e531e53edc2574f15e25e735b522c37e2ddb766e15b979e03aa65"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827"}, - "floki": {:hex, :floki, "0.30.1", "75d35526d3a1459920b6e87fdbc2e0b8a3670f965dd0903708d2b267e0904c55", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "e9c03524447d1c4cbfccd672d739b8c18453eee377846b119d4fd71b1a176bb8"}, + "floki": {:hex, :floki, "0.35.2", "87f8c75ed8654b9635b311774308b2760b47e9a579dabf2e4d5f1e1d42c39e0b", [:mix], [], "hexpm", "6b05289a8e9eac475f644f09c2e4ba7e19201fd002b89c28c1293e7bd16773d9"}, "gen_smtp": {:hex, :gen_smtp, "0.15.0", "9f51960c17769b26833b50df0b96123605a8024738b62db747fece14eb2fbfcc", [:rebar3], [], "hexpm", "29bd14a88030980849c7ed2447b8db6d6c9278a28b11a44cafe41b791205440f"}, - "gettext": {:git, "https://github.com/tusooa/gettext.git", "72fb2496b6c5280ed911bdc3756890e7f38a4808", [ref: "72fb2496b6c5280ed911bdc3756890e7f38a4808"]}, - "gun": {:hex, :gun, "2.0.0-rc.2", "7c489a32dedccb77b6e82d1f3c5a7dadfbfa004ec14e322cdb5e579c438632d2", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}], "hexpm", "6b9d1eae146410d727140dbf8b404b9631302ecc2066d1d12f22097ad7d254fc"}, - "hackney": {:hex, :hackney, "1.18.1", "f48bf88f521f2a229fc7bae88cf4f85adc9cd9bcf23b5dc8eb6a1788c662c4f6", [:rebar3], [{:certifi, "~>2.9.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a4ecdaff44297e9b5894ae499e9a070ea1888c84afdd1fd9b7b2bc384950128e"}, + "gettext": {:hex, :gettext, "0.24.0", "6f4d90ac5f3111673cbefc4ebee96fe5f37a114861ab8c7b7d5b30a1108ce6d8", [:mix], [{:expo, "~> 0.5.1", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "bdf75cdfcbe9e4622dd18e034b227d77dd17f0f133853a1c73b97b3d6c770e8b"}, + "gun": {:hex, :gun, "2.0.1", "160a9a5394800fcba41bc7e6d421295cf9a7894c2252c0678244948e3336ad73", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}], "hexpm", "a10bc8d6096b9502205022334f719cc9a08d9adcfbfc0dbee9ef31b56274a20b"}, + "hackney": {:hex, :hackney, "1.18.2", "d7ff544ddae5e1cb49e9cf7fa4e356d7f41b283989a1c304bfc47a8cc1cf966f", [:rebar3], [{:certifi, "~>2.12.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~>6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~>1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~>1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "af94d5c9f97857db257090a4a10e5426ecb6f4918aa5cc666798566ae14b65fd"}, "hpax": {:hex, :hpax, "0.1.2", "09a75600d9d8bbd064cdd741f21fc06fc1f4cf3d0fcc335e5aa19be1a7235c84", [:mix], [], "hexpm", "2c87843d5a23f5f16748ebe77969880e29809580efdaccd615cd3bed628a8c13"}, "html_entities": {:hex, :html_entities, "0.5.2", "9e47e70598da7de2a9ff6af8758399251db6dbb7eebe2b013f2bbd2515895c3c", [:mix], [], "hexpm", "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc"}, - "http_signatures": {:hex, :http_signatures, "0.1.1", "ca7ebc1b61542b163644c8c3b1f0e0f41037d35f2395940d3c6c7deceab41fd8", [:mix], [], "hexpm", "cc3b8a007322cc7b624c0c15eec49ee58ac977254ff529a3c482f681465942a3"}, - "httpoison": {:hex, :httpoison, "1.8.0", "6b85dea15820b7804ef607ff78406ab449dd78bed923a49c7160e1886e987a3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "28089eaa98cf90c66265b6b5ad87c59a3729bea2e74e9d08f9b51eb9729b3c3a"}, + "http_signatures": {:hex, :http_signatures, "0.1.2", "ed1cc7043abcf5bb4f30d68fb7bad9d618ec1a45c4ff6c023664e78b67d9c406", [:mix], [], "hexpm", "f08aa9ac121829dae109d608d83c84b940ef2f183ae50f2dd1e9a8bc619d8be7"}, + "httpoison": {:hex, :httpoison, "1.8.2", "9eb9c63ae289296a544842ef816a85d881d4a31f518a0fec089aaa744beae290", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "2bb350d26972e30c96e2ca74a1aaf8293d61d0742ff17f01e0279fef11599921"}, "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~>0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"}, - "inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"}, - "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"}, - "joken": {:hex, :joken, "2.3.0", "62a979c46f2c81dcb8ddc9150453b60d3757d1ac393c72bb20fc50a7b0827dc6", [:mix], [{:jose, "~> 1.10", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "57b263a79c0ec5d536ac02d569c01e6b4de91bd1cb825625fe90eab4feb7bc1e"}, - "jose": {:hex, :jose, "1.11.1", "59da64010c69aad6cde2f5b9248b896b84472e99bd18f246085b7b9fe435dcdb", [:mix, :rebar3], [], "hexpm", "078f6c9fb3cd2f4cfafc972c814261a7d1e8d2b3685c0a76eb87e158efff1ac5"}, - "jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"}, + "inet_cidr": {:hex, :inet_cidr, "1.0.8", "d26bb7bdbdf21ae401ead2092bf2bb4bf57fe44a62f5eaa5025280720ace8a40", [:mix], [], "hexpm", "d5b26da66603bb56c933c65214c72152f0de9a6ea53618b56d63302a68f6a90e"}, + "jason": {:hex, :jason, "1.4.1", "af1504e35f629ddcdd6addb3513c3853991f694921b1b9368b0bd32beb9f1b63", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "fbb01ecdfd565b56261302f7e1fcc27c4fb8f32d56eab74db621fc154604a7a1"}, + "joken": {:hex, :joken, "2.6.0", "b9dd9b6d52e3e6fcb6c65e151ad38bf4bc286382b5b6f97079c47ade6b1bcc6a", [:mix], [{:jose, "~> 1.11.5", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "5a95b05a71cd0b54abd35378aeb1d487a23a52c324fa7efdffc512b655b5aaa7"}, + "jose": {:hex, :jose, "1.11.6", "613fda82552128aa6fb804682e3a616f4bc15565a048dabd05b1ebd5827ed965", [:mix, :rebar3], [], "hexpm", "6275cb75504f9c1e60eeacb771adfeee4905a9e182103aa59b53fed651ff9738"}, + "jumper": {:hex, :jumper, "1.0.2", "68cdcd84472a00ac596b4e6459a41b3062d4427cbd4f1e8c8793c5b54f1406a7", [:mix], [], "hexpm", "9b7782409021e01ab3c08270e26f36eb62976a38c1aa64b2eaf6348422f165e1"}, "linkify": {:hex, :linkify, "0.5.3", "5f8143d8f61f5ff08d3aeeff47ef6509492b4948d8f08007fbf66e4d2246a7f2", [:mix], [], "hexpm", "3ef35a1377d47c25506e07c1c005ea9d38d700699d92ee92825f024434258177"}, "majic": {:hex, :majic, "1.0.0", "37e50648db5f5c2ff0c9fb46454d034d11596c03683807b9fb3850676ffdaab3", [:make, :mix], [{:elixir_make, "~> 0.6.1", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "7905858f76650d49695f14ea55cd9aaaee0c6654fa391671d4cf305c275a0a9e"}, "makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"}, "makeup_elixir": {:hex, :makeup_elixir, "0.14.1", "4f0e96847c63c17841d42c08107405a005a2680eb9c7ccadfd757bd31dabccfb", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f2438b1a80eaec9ede832b5c41cd4f373b38fd7aa33e3b22d9db79e640cbde11"}, - "makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"}, + "makeup_erlang": {:hex, :makeup_erlang, "0.1.3", "d684f4bac8690e70b06eb52dad65d26de2eefa44cd19d64a8095e1417df7c8fd", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "b78dc853d2e670ff6390b605d807263bf606da3c82be37f9d7f68635bd886fc9"}, "meck": {:hex, :meck, "0.9.2", "85ccbab053f1db86c7ca240e9fc718170ee5bda03810a6292b5306bf31bae5f5", [:rebar3], [], "hexpm", "81344f561357dc40a8344afa53767c32669153355b626ea9fcbc8da6b3045826"}, "metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"}, "mime": {:hex, :mime, "1.6.0", "dabde576a497cef4bbdd60aceee8160e02a6c89250d6c0b29e56c0dfb00db3d2", [:mix], [], "hexpm", "31a1a8613f8321143dde1dafc36006a17d28d02bdfecb9e95a880fa7aabd19a7"}, "mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"}, - "mint": {:hex, :mint, "1.4.2", "50330223429a6e1260b2ca5415f69b0ab086141bc76dc2fbf34d7c389a6675b2", [:mix], [{:castore, "~> 0.1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "ce75a5bbcc59b4d7d8d70f8b2fc284b1751ffb35c7b6a6302b5192f8ab4ddd80"}, + "mint": {:hex, :mint, "1.5.2", "4805e059f96028948870d23d7783613b7e6b0e2fb4e98d720383852a760067fd", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "d77d9e9ce4eb35941907f1d3df38d8f750c357865353e21d335bdcdf6d892a02"}, "mochiweb": {:hex, :mochiweb, "2.18.0", "eb55f1db3e6e960fac4e6db4e2db9ec3602cc9f30b86cd1481d56545c3145d2e", [:rebar3], [], "hexpm"}, - "mock": {:hex, :mock, "0.3.7", "75b3bbf1466d7e486ea2052a73c6e062c6256fb429d6797999ab02fa32f29e03", [:mix], [{:meck, "~> 0.9.2", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "4da49a4609e41fd99b7836945c26f373623ea968cfb6282742bcb94440cf7e5c"}, - "mogrify": {:hex, :mogrify, "0.9.1", "a26f107c4987477769f272bd0f7e3ac4b7b75b11ba597fd001b877beffa9c068", [:mix], [], "hexpm", "134edf189337d2125c0948bf0c228fdeef975c594317452d536224069a5b7f05"}, - "mox": {:hex, :mox, "1.0.0", "4b3c7005173f47ff30641ba044eb0fe67287743eec9bd9545e37f3002b0a9f8b", [:mix], [], "hexpm", "201b0a20b7abdaaab083e9cf97884950f8a30a1350a1da403b3145e213c6f4df"}, - "nimble_options": {:hex, :nimble_options, "0.4.0", "c89babbab52221a24b8d1ff9e7d838be70f0d871be823165c94dd3418eea728f", [:mix], [], "hexpm", "e6701c1af326a11eea9634a3b1c62b475339ace9456c1a23ec3bc9a847bca02d"}, - "nimble_parsec": {:hex, :nimble_parsec, "0.5.0", "90e2eca3d0266e5c53f8fbe0079694740b9c91b6747f2b7e3c5d21966bba8300", [:mix], [], "hexpm", "5c040b8469c1ff1b10093d3186e2e10dbe483cd73d79ec017993fb3985b8a9b3"}, + "mock": {:hex, :mock, "0.3.8", "7046a306b71db2488ef54395eeb74df0a7f335a7caca4a3d3875d1fc81c884dd", [:mix], [{:meck, "~> 0.9.2", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm", "7fa82364c97617d79bb7d15571193fc0c4fe5afd0c932cef09426b3ee6fe2022"}, + "mogrify": {:hex, :mogrify, "0.8.0", "3506f3ca3f7b95a155f3b4ef803b5db176f5a0633723e3fe85e0d6399e3b11c8", [:mix], [], "hexpm", "2278d245f07056ea3b586e98801e933695147066fa4cf563f552c1b4f0ff8ad9"}, + "mox": {:hex, :mox, "1.1.0", "0f5e399649ce9ab7602f72e718305c0f9cdc351190f72844599545e4996af73c", [:mix], [], "hexpm", "d44474c50be02d5b72131070281a5d3895c0e7a95c780e90bc0cfe712f633a13"}, + "nimble_options": {:hex, :nimble_options, "1.1.0", "3b31a57ede9cb1502071fade751ab0c7b8dbe75a9a4c2b5bbb0943a690b63172", [:mix], [], "hexpm", "8bbbb3941af3ca9acc7835f5655ea062111c9c27bcac53e004460dfd19008a99"}, + "nimble_parsec": {:hex, :nimble_parsec, "0.6.0", "32111b3bf39137144abd7ba1cce0914533b2d16ef35e8abc5ec8be6122944263", [:mix], [], "hexpm", "27eac315a94909d4dc68bc07a4a83e06c8379237c5ea528a9acff4ca1c873c52"}, "nimble_pool": {:hex, :nimble_pool, "0.2.6", "91f2f4c357da4c4a0a548286c84a3a28004f68f05609b4534526871a22053cde", [:mix], [], "hexpm", "1c715055095d3f2705c4e236c18b618420a35490da94149ff8b580a2144f653f"}, "nodex": {:git, "https://git.pleroma.social/pleroma/nodex", "cb6730f943cfc6aad674c92161be23a8411f15d1", [ref: "cb6730f943cfc6aad674c92161be23a8411f15d1"]}, - "oban": {:hex, :oban, "2.13.4", "b4c4f48f4c89cc01036670eefa28aa9c03d09aadd402655475b936983d597006", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a7d26f82b409e2d7928fbb75a17716e06ad3f783ebe9af260e3dd23abed7f124"}, - "open_api_spex": {:hex, :open_api_spex, "3.16.0", "9843af4e87550cd8ac5821b10e4c74f1d51f0d4e3310f824d780614743423b25", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:poison, "~> 3.0 or ~> 4.0 or ~> 5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:ymlr, "~> 2.0 or ~> 3.0", [hex: :ymlr, repo: "hexpm", optional: true]}], "hexpm", "bb0be24a648b73e8fc8cbda17f514b8486262275e8b33e8b5ae66283df972129"}, - "parse_trans": {:hex, :parse_trans, "3.3.1", "16328ab840cc09919bd10dab29e431da3af9e9e7e7e6f0089dd5a2d2820011d8", [:rebar3], [], "hexpm", "07cd9577885f56362d414e8c4c4e6bdf10d43a8767abb92d24cbe8b24c54888b"}, + "oban": {:hex, :oban, "2.13.6", "a0cb1bce3bd393770512231fb5a3695fa19fd3af10d7575bf73f837aee7abf43", [:mix], [{:ecto_sql, "~> 3.6", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:jason, "~> 1.1", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.16", [hex: :postgrex, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3c1c5eb16f377b3cbbf2ea14be24d20e3d91285af9d1ac86260b7c2af5464887"}, + "octo_fetch": {:hex, :octo_fetch, "0.4.0", "074b5ecbc08be10b05b27e9db08bc20a3060142769436242702931c418695b19", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "cf8be6f40cd519d7000bb4e84adcf661c32e59369ca2827c4e20042eda7a7fc6"}, + "open_api_spex": {:hex, :open_api_spex, "3.18.2", "8c855e83bfe8bf81603d919d6e892541eafece3720f34d1700b58024dadde247", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:poison, "~> 3.0 or ~> 4.0 or ~> 5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:ymlr, "~> 2.0 or ~> 3.0 or ~> 4.0", [hex: :ymlr, repo: "hexpm", optional: true]}], "hexpm", "aa3e6dcfc0ad6a02596b2172662da21c9dd848dac145ea9e603f54e3d81b8d2b"}, + "parse_trans": {:hex, :parse_trans, "3.4.1", "6e6aa8167cb44cc8f39441d05193be6e6f4e7c2946cb2759f015f8c56b76e5ff", [:rebar3], [], "hexpm", "620a406ce75dada827b82e453c19cf06776be266f5a67cff34e1ef2cbb60e49a"}, "pbkdf2_elixir": {:hex, :pbkdf2_elixir, "1.2.1", "9cbe354b58121075bd20eb83076900a3832324b7dd171a6895fab57b6bb2752c", [:mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}], "hexpm", "d3b40a4a4630f0b442f19eca891fcfeeee4c40871936fed2f68e1c4faa30481f"}, - "phoenix": {:hex, :phoenix, "1.6.15", "0a1d96bbc10747fd83525370d691953cdb6f3ccbac61aa01b4acb012474b047d", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 1.0 or ~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d70ab9fbf6b394755ea88b644d34d79d8b146e490973151f248cacd122d20672"}, - "phoenix_ecto": {:hex, :phoenix_ecto, "4.4.0", "0672ed4e4808b3fbed494dded89958e22fb882de47a97634c0b13e7b0b5f7720", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "09864e558ed31ee00bd48fcc1d4fc58ae9678c9e81649075431e69dbabb43cc1"}, - "phoenix_html": {:hex, :phoenix_html, "3.2.0", "1c1219d4b6cb22ac72f12f73dc5fad6c7563104d083f711c3fcd8551a1f4ae11", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "36ec97ba56d25c0136ef1992c37957e4246b649d620958a1f9fa86165f8bc54f"}, - "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.6.2", "0769470265eb13af01b5001b29cb935f4710d6adaa1ffc18417a570a337a2f0f", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.3", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.17.1", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "5bc6c6b38a2ca8b5020b442322fcee6afd5e641637a0b1fb059d4bd89bc58e7b"}, + "phoenix": {:hex, :phoenix, "1.7.10", "02189140a61b2ce85bb633a9b6fd02dff705a5f1596869547aeb2b2b95edd729", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "cf784932e010fd736d656d7fead6a584a4498efefe5b8227e9f383bf15bb79d0"}, + "phoenix_ecto": {:hex, :phoenix_ecto, "4.4.3", "86e9878f833829c3f66da03d75254c155d91d72a201eb56ae83482328dc7ca93", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "d36c401206f3011fefd63d04e8ef626ec8791975d9d107f9a0817d426f61ac07"}, + "phoenix_html": {:hex, :phoenix_html, "3.3.3", "380b8fb45912b5638d2f1d925a3771b4516b9a78587249cabe394e0a5d579dc9", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "923ebe6fec6e2e3b3e569dfbdc6560de932cd54b000ada0208b5f45024bdd76c"}, + "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.3", "7ff51c9b6609470f681fbea20578dede0e548302b0c8bdf338b5a753a4f045bf", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7 or ~> 1.2.0", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19 or ~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "f9470a0a8bae4f56430a23d42f977b5a6205fdba6559d76f932b876bfaec652d"}, "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.3.3", "3a53772a6118d5679bf50fc1670505a290e32a1d195df9e069d8c53ab040c054", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "766796676e5f558dbae5d1bdb066849673e956005e3730dfd5affd7a6da4abac"}, - "phoenix_live_view": {:hex, :phoenix_live_view, "0.17.5", "63f52a6f9f6983f04e424586ff897c016ecc5e4f8d1e2c22c2887af1c57215d8", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.5.9 or ~> 1.6.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.1", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c5586e6a3d4df71b8214c769d4f5eb8ece2b4001711a7ca0f97323c36958b0e3"}, - "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.1", "ba04e489ef03763bf28a17eb2eaddc2c20c6d217e2150a61e3298b0f4c2012b5", [:mix], [], "hexpm", "81367c6d1eea5878ad726be80808eb5a787a23dee699f96e72b1109c57cdd8d9"}, - "phoenix_swoosh": {:hex, :phoenix_swoosh, "1.1.0", "f8e4780705c9f254cc853f7a40e25f7198ba4d91102bcfad2226669b69766b35", [:mix], [{:finch, "~> 0.8", [hex: :finch, repo: "hexpm", optional: true]}, {:hackney, "~> 1.10", [hex: :hackney, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6", [hex: :phoenix, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_view, "~> 1.0 or ~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:swoosh, "~> 1.5", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm", "aa82f10afd9a4b6080fdf3274dbb9432b25b210d42b4b6b55308f6e59cd87c3d"}, - "phoenix_template": {:hex, :phoenix_template, "1.0.0", "c57bc5044f25f007dc86ab21895688c098a9f846a8dda6bc40e2d0ddc146e38f", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "1b066f99a26fd22064c12b2600a9a6e56700f591bf7b20b418054ea38b4d4357"}, - "phoenix_view": {:hex, :phoenix_view, "2.0.1", "a653e3d9d944aace0a064e4a13ad473ffa68f7bc4ca42dbf83cc1d464f1fb295", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "6c358e2cefc5f341c728914b867c556bbfd239fed9e881bac257d70cb2b8a6f6"}, - "plug": {:hex, :plug, "1.10.4", "41eba7d1a2d671faaf531fa867645bd5a3dce0957d8e2a3f398ccff7d2ef017f", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ad1e233fe73d2eec56616568d260777b67f53148a999dc2d048f4eb9778fe4a0"}, - "plug_cowboy": {:hex, :plug_cowboy, "2.6.0", "d1cf12ff96a1ca4f52207c5271a6c351a4733f413803488d75b70ccf44aebec2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "073cf20b753ce6682ed72905cd62a2d4bd9bad1bf9f7feb02a1b8e525bd94fa6"}, - "plug_crypto": {:hex, :plug_crypto, "1.2.3", "8f77d13aeb32bfd9e654cb68f0af517b371fb34c56c9f2b58fe3df1235c1251a", [:mix], [], "hexpm", "b5672099c6ad5c202c45f5a403f21a3411247f164e4a8fab056e5cd8a290f4a2"}, + "phoenix_live_view": {:hex, :phoenix_live_view, "0.19.5", "6e730595e8e9b8c5da230a814e557768828fd8dfeeb90377d2d8dbb52d4ec00a", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b2eaa0dd3cfb9bd7fb949b88217df9f25aed915e986a28ad5c8a0d054e7ca9d3"}, + "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"}, + "phoenix_swoosh": {:hex, :phoenix_swoosh, "1.2.1", "b74ccaa8046fbc388a62134360ee7d9742d5a8ae74063f34eb050279de7a99e1", [:mix], [{:finch, "~> 0.8", [hex: :finch, repo: "hexpm", optional: true]}, {:hackney, "~> 1.10", [hex: :hackney, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6", [hex: :phoenix, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_view, "~> 1.0 or ~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:swoosh, "~> 1.5", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm", "4000eeba3f9d7d1a6bf56d2bd56733d5cadf41a7f0d8ffe5bb67e7d667e204a2"}, + "phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"}, + "phoenix_view": {:hex, :phoenix_view, "2.0.3", "4d32c4817fce933693741deeb99ef1392619f942633dde834a5163124813aad3", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "cd34049af41be2c627df99cd4eaa71fc52a328c0c3d8e7d4aa28f880c30e7f64"}, + "plug": {:hex, :plug, "1.15.3", "712976f504418f6dff0a3e554c40d705a9bcf89a7ccef92fc6a5ef8f16a30a97", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "cc4365a3c010a56af402e0809208873d113e9c38c401cabd88027ef4f5c01fd2"}, + "plug_cowboy": {:hex, :plug_cowboy, "2.6.2", "753611b23b29231fb916b0cdd96028084b12aff57bfd7b71781bd04b1dbeb5c9", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "951ed2433df22f4c97b85fdb145d4cee561f36b74854d64c06d896d7cd2921a7"}, + "plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"}, "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "79fd4fcf34d110605c26560cbae8f23c603ec4158c08298bd4360fdea90bb5cf"}, "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm", "fec8660eb7733ee4117b85f55799fd3833eb769a6df71ccf8903e8dc5447cfce"}, "poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm", "dad79704ce5440f3d5a3681c8590b9dc25d1a561e8f5a9c995281012860901e3"}, - "postgrex": {:hex, :postgrex, "0.16.5", "fcc4035cc90e23933c5d69a9cd686e329469446ef7abba2cf70f08e2c4b69810", [:mix], [{:connection, "~> 1.1", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "edead639dc6e882618c01d8fc891214c481ab9a3788dfe38dd5e37fd1d5fb2e8"}, - "pot": {:hex, :pot, "1.0.1", "81b511b1fa7c3123171c265cb7065a1528cebd7277b0cbc94257c50a8b2e4c17", [:rebar3], [], "hexpm", "ed87f5976531d91528452faa1138a5328db7f9f20d8feaae15f5051f79bcfb6d"}, - "prom_ex": {:hex, :prom_ex, "1.7.1", "39331ee3fe6f9a8587d8208bf9274a253bb80281700e127dd18786cda5e08c37", [:mix], [{:absinthe, ">= 1.6.0", [hex: :absinthe, repo: "hexpm", optional: true]}, {:broadway, ">= 1.0.2", [hex: :broadway, repo: "hexpm", optional: true]}, {:ecto, ">= 3.5.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:finch, "~> 0.10.2", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:oban, ">= 2.4.0", [hex: :oban, repo: "hexpm", optional: true]}, {:phoenix, ">= 1.5.0", [hex: :phoenix, repo: "hexpm", optional: true]}, {:phoenix_live_view, ">= 0.14.0", [hex: :phoenix_live_view, repo: "hexpm", optional: true]}, {:plug, ">= 1.12.1", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, "~> 2.5.1", [hex: :plug_cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6.1", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}, {:telemetry_metrics_prometheus_core, "~> 1.0.2", [hex: :telemetry_metrics_prometheus_core, repo: "hexpm", optional: false]}, {:telemetry_poller, "~> 1.0.0", [hex: :telemetry_poller, repo: "hexpm", optional: false]}], "hexpm", "4c978872b88a929833925a0f4d0561824804c671fdd04581e765509ed0a6ed08"}, - "prometheus": {:hex, :prometheus, "4.8.0", "1ce1e1002b173c336d61f186b56263346536e76814edd9a142e12aeb2d6c1ad2", [:mix, :rebar3], [], "hexpm", "0fc2e17103073edb3758a46a5d44b006191bf25b73cbaa2b779109de396afcb5"}, + "postgrex": {:hex, :postgrex, "0.17.4", "5777781f80f53b7c431a001c8dad83ee167bcebcf3a793e3906efff680ab62b3", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "6458f7d5b70652bc81c3ea759f91736c16a31be000f306d3c64bcdfe9a18b3cc"}, + "pot": {:hex, :pot, "1.0.2", "13abb849139fdc04ab8154986abbcb63bdee5de6ed2ba7e1713527e33df923dd", [:rebar3], [], "hexpm", "78fe127f5a4f5f919d6ea5a2a671827bd53eb9d37e5b4128c0ad3df99856c2e0"}, + "prom_ex": {:hex, :prom_ex, "1.9.0", "63e6dda6c05cdeec1f26c48443dcc38ffd2118b3665ae8d2bd0e5b79f2aea03e", [:mix], [{:absinthe, ">= 1.6.0", [hex: :absinthe, repo: "hexpm", optional: true]}, {:broadway, ">= 1.0.2", [hex: :broadway, repo: "hexpm", optional: true]}, {:ecto, ">= 3.5.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:finch, "~> 0.15", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.2", [hex: :jason, repo: "hexpm", optional: false]}, {:oban, ">= 2.4.0", [hex: :oban, repo: "hexpm", optional: true]}, {:octo_fetch, "~> 0.3", [hex: :octo_fetch, repo: "hexpm", optional: false]}, {:phoenix, ">= 1.5.0", [hex: :phoenix, repo: "hexpm", optional: true]}, {:phoenix_live_view, ">= 0.14.0", [hex: :phoenix_live_view, repo: "hexpm", optional: true]}, {:plug, ">= 1.12.1", [hex: :plug, repo: "hexpm", optional: true]}, {:plug_cowboy, "~> 2.5 or ~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: false]}, {:telemetry, ">= 1.0.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}, {:telemetry_metrics_prometheus_core, "~> 1.0", [hex: :telemetry_metrics_prometheus_core, repo: "hexpm", optional: false]}, {:telemetry_poller, "~> 1.0", [hex: :telemetry_poller, repo: "hexpm", optional: false]}], "hexpm", "01f3d4f69ec93068219e686cc65e58a29c42bea5429a8ff4e2121f19db178ee6"}, + "prometheus": {:hex, :prometheus, "4.10.0", "792adbf0130ff61b5fa8826f013772af24b6e57b984445c8d602c8a0355704a1", [:mix, :rebar3], [{:quantile_estimator, "~> 0.2.1", [hex: :quantile_estimator, repo: "hexpm", optional: false]}], "hexpm", "2a99bb6dce85e238c7236fde6b0064f9834dc420ddbd962aac4ea2a3c3d59384"}, "prometheus_ecto": {:hex, :prometheus_ecto, "1.4.3", "3dd4da1812b8e0dbee81ea58bb3b62ed7588f2eae0c9e97e434c46807ff82311", [:mix], [{:ecto, "~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.1 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}], "hexpm", "8d66289f77f913b37eda81fd287340c17e61a447549deb28efc254532b2bed82"}, "prometheus_ex": {:git, "https://github.com/lanodan/prometheus.ex.git", "31f7fbe4b71b79ba27efc2a5085746c4011ceb8f", [branch: "fix/elixir-1.14"]}, "prometheus_phoenix": {:hex, :prometheus_phoenix, "1.3.0", "c4b527e0b3a9ef1af26bdcfbfad3998f37795b9185d475ca610fe4388fdd3bb5", [:mix], [{:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.3 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}], "hexpm", "c4d1404ac4e9d3d963da601db2a7d8ea31194f0017057fabf0cfb9bf5a6c8c75"}, "prometheus_phx": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/prometheus-phx.git", "9cd8f248c9381ffedc799905050abce194a97514", [branch: "no-logging"]}, "prometheus_plugs": {:hex, :prometheus_plugs, "1.1.5", "25933d48f8af3a5941dd7b621c889749894d8a1082a6ff7c67cc99dec26377c5", [:mix], [{:accept, "~> 0.1", [hex: :accept, repo: "hexpm", optional: false]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}, {:prometheus_ex, "~> 1.1 or ~> 2.0 or ~> 3.0", [hex: :prometheus_ex, repo: "hexpm", optional: false]}, {:prometheus_process_collector, "~> 1.1", [hex: :prometheus_process_collector, repo: "hexpm", optional: true]}], "hexpm", "0273a6483ccb936d79ca19b0ab629aef0dba958697c94782bb728b920dfc6a79"}, + "quantile_estimator": {:hex, :quantile_estimator, "0.2.1", "ef50a361f11b5f26b5f16d0696e46a9e4661756492c981f7b2229ef42ff1cd15", [:rebar3], [], "hexpm", "282a8a323ca2a845c9e6f787d166348f776c1d4a41ede63046d72d422e3da946"}, "ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"}, - "recon": {:hex, :recon, "2.5.1", "430ffa60685ac1efdfb1fe4c97b8767c92d0d92e6e7c3e8621559ba77598678a", [:mix, :rebar3], [], "hexpm", "5721c6b6d50122d8f68cccac712caa1231f97894bab779eff5ff0f886cb44648"}, + "recon": {:hex, :recon, "2.5.4", "05dd52a119ee4059fa9daa1ab7ce81bc7a8161a2f12e9d42e9d551ffd2ba901c", [:mix, :rebar3], [], "hexpm", "e9ab01ac7fc8572e41eb59385efeb3fb0ff5bf02103816535bacaedf327d0263"}, "remote_ip": {:git, "https://git.pleroma.social/pleroma/remote_ip.git", "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8", [ref: "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8"]}, - "sleeplocks": {:hex, :sleeplocks, "1.1.1", "3d462a0639a6ef36cc75d6038b7393ae537ab394641beb59830a1b8271faeed3", [:rebar3], [], "hexpm", "84ee37aeff4d0d92b290fff986d6a95ac5eedf9b383fadfd1d88e9b84a1c02e1"}, - "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"}, - "sweet_xml": {:hex, :sweet_xml, "0.7.2", "4729f997286811fabdd8288f8474e0840a76573051062f066c4b597e76f14f9f", [:mix], [], "hexpm", "6894e68a120f454534d99045ea3325f7740ea71260bc315f82e29731d570a6e8"}, - "swoosh": {:hex, :swoosh, "1.8.2", "af9a22ab2c0d20b266f61acca737fa11a121902de9466a39e91bacdce012101c", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d058ba750eafadb6c09a84a352c14c5d1eeeda6e84945fcc95785b7f3067b7db"}, + "rustler": {:hex, :rustler, "0.30.0", "cefc49922132b072853fa9b0ca4dc2ffcb452f68fb73b779042b02d545e097fb", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:toml, "~> 0.6", [hex: :toml, repo: "hexpm", optional: false]}], "hexpm", "9ef1abb6a7dda35c47cfc649e6a5a61663af6cf842a55814a554a84607dee389"}, + "sleeplocks": {:hex, :sleeplocks, "1.1.2", "d45aa1c5513da48c888715e3381211c859af34bee9b8290490e10c90bb6ff0ca", [:rebar3], [], "hexpm", "9fe5d048c5b781d6305c1a3a0f40bb3dfc06f49bf40571f3d2d0c57eaa7f59a5"}, + "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.7", "354c321cf377240c7b8716899e182ce4890c5938111a1296add3ec74cf1715df", [:make, :mix, :rebar3], [], "hexpm", "fe4c190e8f37401d30167c8c405eda19469f34577987c76dde613e838bbc67f8"}, + "statistex": {:hex, :statistex, "1.0.0", "f3dc93f3c0c6c92e5f291704cf62b99b553253d7969e9a5fa713e5481cd858a5", [:mix], [], "hexpm", "ff9d8bee7035028ab4742ff52fc80a2aa35cece833cf5319009b52f1b5a86c27"}, + "sweet_xml": {:hex, :sweet_xml, "0.7.4", "a8b7e1ce7ecd775c7e8a65d501bc2cd933bff3a9c41ab763f5105688ef485d08", [:mix], [], "hexpm", "e7c4b0bdbf460c928234951def54fe87edf1a170f6896675443279e2dbeba167"}, + "swoosh": {:hex, :swoosh, "1.10.3", "32f1531ee3fe4e82da8175c597bf3692938f8152eb981e0cbf57107b6c5924c1", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8b7167d93047bac6e1a1c367bf7d899cf2e4fea0592ee04a70673548ef6091b9"}, "syslog": {:hex, :syslog, "1.1.0", "6419a232bea84f07b56dc575225007ffe34d9fdc91abe6f1b2f254fd71d8efc2", [:rebar3], [], "hexpm", "4c6a41373c7e20587be33ef841d3de6f3beba08519809329ecc4d27b15b659e1"}, - "table_rex": {:hex, :table_rex, "3.1.1", "0c67164d1714b5e806d5067c1e96ff098ba7ae79413cc075973e17c38a587caa", [:mix], [], "hexpm", "678a23aba4d670419c23c17790f9dcd635a4a89022040df7d5d772cb21012490"}, + "table_rex": {:hex, :table_rex, "4.0.0", "3c613a68ebdc6d4d1e731bc973c233500974ec3993c99fcdabb210407b90959b", [:mix], [], "hexpm", "c35c4d5612ca49ebb0344ea10387da4d2afe278387d4019e4d8111e815df8f55"}, "telemetry": {:hex, :telemetry, "1.0.0", "0f453a102cdf13d506b7c0ab158324c337c41f1cc7548f0bc0e130bbf0ae9452", [:rebar3], [], "hexpm", "73bc09fa59b4a0284efb4624335583c528e07ec9ae76aca96ea0673850aec57a"}, - "telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"}, - "telemetry_metrics_prometheus_core": {:hex, :telemetry_metrics_prometheus_core, "1.0.2", "c98b1c580de637bfeac00db41b9fb91fb4c3548ee3d512a8ed7299172312eaf3", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "48351a0d56f80e38c997b44232b1043e0a081670d16766eee920e6254175b730"}, + "telemetry_metrics": {:hex, :telemetry_metrics, "0.6.2", "2caabe9344ec17eafe5403304771c3539f3b6e2f7fb6a6f602558c825d0d0bfb", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "9b43db0dc33863930b9ef9d27137e78974756f5f198cae18409970ed6fa5b561"}, + "telemetry_metrics_prometheus_core": {:hex, :telemetry_metrics_prometheus_core, "1.2.0", "b583c3f18508f5c5561b674d16cf5d9afd2ea3c04505b7d92baaeac93c1b8260", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "9cba950e1c4733468efbe3f821841f34ac05d28e7af7798622f88ecdbbe63ea3"}, "telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"}, - "tesla": {:hex, :tesla, "1.4.4", "bb89aa0c9745190930366f6a2ac612cdf2d0e4d7fff449861baa7875afd797b2", [:mix], [{:castore, "~> 0.1", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.3", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, "~> 1.3", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.0", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "d5503a49f9dec1b287567ea8712d085947e247cb11b06bc54adb05bfde466457"}, - "timex": {:hex, :timex, "3.7.5", "3eca56e23bfa4e0848f0b0a29a92fa20af251a975116c6d504966e8a90516dfd", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "a15608dca680f2ef663d71c95842c67f0af08a0f3b1d00e17bbd22872e2874e4"}, + "tesla": {:hex, :tesla, "1.8.0", "d511a4f5c5e42538d97eef7c40ec4f3e44effdc5068206f42ed859e09e51d1fd", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:exjsx, ">= 3.0.0", [hex: :exjsx, repo: "hexpm", optional: true]}, {:finch, "~> 0.13", [hex: :finch, repo: "hexpm", optional: true]}, {:fuse, "~> 2.4", [hex: :fuse, repo: "hexpm", optional: true]}, {:gun, ">= 1.0.0", [hex: :gun, repo: "hexpm", optional: true]}, {:hackney, "~> 1.6", [hex: :hackney, repo: "hexpm", optional: true]}, {:ibrowse, "4.4.2", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: true]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:msgpax, "~> 2.3", [hex: :msgpax, repo: "hexpm", optional: true]}, {:poison, ">= 1.0.0", [hex: :poison, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "10501f360cd926a309501287470372af1a6e1cbed0f43949203a4c13300bc79f"}, + "thousand_island": {:hex, :thousand_island, "1.3.2", "bc27f9afba6e1a676dd36507d42e429935a142cf5ee69b8e3f90bff1383943cd", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "0e085b93012cd1057b378fce40cbfbf381ff6d957a382bfdd5eca1a98eec2535"}, + "timex": {:hex, :timex, "3.7.7", "3ed093cae596a410759104d878ad7b38e78b7c2151c6190340835515d4a46b8a", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "0ec4b09f25fe311321f9fc04144a7e3affe48eb29481d7a5583849b6c4dfa0a7"}, + "toml": {:hex, :toml, "0.7.0", "fbcd773caa937d0c7a02c301a1feea25612720ac3fa1ccb8bfd9d30d822911de", [:mix], [], "hexpm", "0690246a2478c1defd100b0c9b89b4ea280a22be9a7b313a8a058a2408a2fa70"}, "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f"}, "tzdata": {:hex, :tzdata, "1.0.5", "69f1ee029a49afa04ad77801febaf69385f3d3e3d1e4b56b9469025677b89a28", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "55519aa2a99e5d2095c1e61cc74c9be69688f8ab75c27da724eb8279ff402a5a"}, - "ueberauth": {:hex, :ueberauth, "0.6.3", "d42ace28b870e8072cf30e32e385579c57b9cc96ec74fa1f30f30da9c14f3cc0", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "afc293d8a1140d6591b53e3eaf415ca92842cb1d32fad3c450c6f045f7f91b60"}, + "ueberauth": {:hex, :ueberauth, "0.10.7", "5a31cbe11e7ce5c7484d745dc9e1f11948e89662f8510d03c616de03df581ebd", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "0bccf73e2ffd6337971340832947ba232877aa8122dba4c95be9f729c8987377"}, "unicode_util_compat": {:hex, :unicode_util_compat, "0.7.0", "bc84380c9ab48177092f43ac89e4dfa2c6d62b40b8bd132b1059ecc7232f9a78", [:rebar3], [], "hexpm", "25eee6d67df61960cf6a794239566599b09e17e668d3700247bc498638152521"}, - "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, + "unsafe": {:hex, :unsafe, "1.0.2", "23c6be12f6c1605364801f4b47007c0c159497d0446ad378b5cf05f1855c0581", [:mix], [], "hexpm", "b485231683c3ab01a9cd44cb4a79f152c6f3bb87358439c6f68791b85c2df675"}, + "vix": {:hex, :vix, "0.26.0", "027f10b6969b759318be84bd0bd8c88af877445e4e41cf96a0460392cea5399c", [:make, :mix], [{:castore, "~> 1.0 or ~> 0.1", [hex: :castore, repo: "hexpm", optional: false]}, {:cc_precompiler, "~> 0.2 or ~> 0.1.4", [hex: :cc_precompiler, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.8 or ~> 0.7.3", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:kino, "~> 0.7", [hex: :kino, repo: "hexpm", optional: true]}], "hexpm", "71b0a79ae7f199cacfc8e679b0e4ba25ee47dc02e182c5b9097efb29fbe14efd"}, "web_push_encryption": {:hex, :web_push_encryption, "0.3.1", "76d0e7375142dfee67391e7690e89f92578889cbcf2879377900b5620ee4708d", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.11.1", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "4f82b2e57622fb9337559058e8797cb0df7e7c9790793bdc4e40bc895f70e2a2"}, + "websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"}, + "websock_adapter": {:hex, :websock_adapter, "0.5.5", "9dfeee8269b27e958a65b3e235b7e447769f66b5b5925385f5a569269164a210", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "4b977ba4a01918acbf77045ff88de7f6972c2a009213c515a445c48f224ffce9"}, "websockex": {:hex, :websockex, "0.4.3", "92b7905769c79c6480c02daacaca2ddd49de936d912976a4d3c923723b647bf0", [:mix], [], "hexpm", "95f2e7072b85a3a4cc385602d42115b73ce0b74a9121d0d6dbbf557645ac53e4"}, } diff --git a/priv/gettext/config_descriptions.pot b/priv/gettext/config_descriptions.pot @@ -10,6038 +10,5966 @@ msgid "" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 -msgctxt "config description at :esshd" -msgid "Before enabling this you must add :esshd to mix.exs as one of the extra_applications and generate host keys in your priv dir with ssh-keygen -m PEM -N \"\" -b 2048 -t rsa -f ssh_host_rsa_key" -msgstr "" - #, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 msgctxt "config description at :logger" msgid "Logger-related settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :mime" msgid "Mime Types settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma" msgid "Allows setting a token that can be used to authenticate requests with admin privileges without a normal user account token. Append the `admin_token` parameter to requests to utilize it. (Please reconsider using HTTP Basic Auth or OAuth-based authentication if possible)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma" msgid "Authenticator" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :cors_plug" msgid "CORS plug config" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 -msgctxt "config label at :esshd" -msgid "ESSHD" -msgstr "" - #, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 msgctxt "config label at :logger" msgid "Logger" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :mime" msgid "Mime Types" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma" msgid "Pleroma Admin Token" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma" msgid "Pleroma Authenticator" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :logger-:console" msgid "Console logger settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :logger-:ex_syslogger" msgid "ExSyslogger-related settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:activitypub" msgid "ActivityPub-related settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:assets" msgid "This section configures assets to be used with various frontends. Currently the only option relates to mascots on the mastodon frontend" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:auth" msgid "Authentication / authorization settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:connections_pool" msgid "Advanced settings for `Gun` connections pool" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:email_notifications" msgid "Email notifications settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:features" msgid "Customizable features" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:feed" msgid "Configure feed rendering" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations" msgid "This form can be used to configure a keyword list that keeps the configuration data for any kind of frontend. By default, settings for pleroma_fe are configured. If you want to add your own configuration your settings all fields must be complete." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends" msgid "Installed frontends management" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:gopher" msgid "Gopher settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:hackney_pools" msgid "Advanced settings for `Hackney` connections pools" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http" msgid "HTTP settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http_security" msgid "HTTP security settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance" msgid "Instance-related settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instances_favicons" msgid "Control favicons for instances" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap" msgid "Use LDAP for user authentication. When a user logs in to the Pleroma instance, the name and password will be verified by trying to authenticate (bind) to a LDAP server. If a user exists in the LDAP directory but there is no account with the same name yet on the Pleroma instance then a new Pleroma account will be created with the same name as the LDAP user name." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:majic_pool" msgid "Majic/libmagic configuration" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:manifest" msgid "This section describe PWA manifest instance-specific values. Currently this option relate only for MastoFE." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_preview_proxy" msgid "Media preview proxy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_proxy" msgid "Media proxy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:modules" msgid "Custom Runtime Modules" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf" msgid "General MRF settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_activity_expiration" msgid "Adds automatic expiration to all local activities" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_follow_bot" msgid "Automatically follows newly discovered accounts." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_hashtag" msgid "Reject, TWKN-remove or Set-Sensitive messsages with specific hashtags (without the leading #)\n\nNote: This MRF Policy is always enabled, if you want to disable it you have to set empty lists.\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_hellthread" msgid "Block messages with excessive user mentions" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_keyword" msgid "Reject or Word-Replace messages matching a keyword or [Regex](https://hexdocs.pm/elixir/Regex.html)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_mention" msgid "Block messages which mention a specific user" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_normalize_markup" msgid "MRF NormalizeMarkup settings. Scrub configured hypertext markup." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_object_age" msgid "Rejects or delists posts based on their timestamp deviance from your server's clock." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_rejectnonpublic" msgid "RejectNonPublic drops posts with non-public visibility settings." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_simple" msgid "Simple ingress policies" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_steal_emoji" msgid "Steals emojis from selected instances when it sees them." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_subchain" msgid "This policy processes messages through an alternate pipeline when a given message matches certain criteria. All criteria are configured as a map of regular expressions to lists of policy modules." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_vocabulary" msgid "Filter messages which belong to certain activity vocabularies" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:oauth2" msgid "Configure OAuth 2 provider capabilities" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools" msgid "Advanced settings for `Gun` workers pools" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:populate_hashtags_table" msgid "`populate_hashtags_table` background migration settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rate_limit" msgid "Rate limit settings. This is an advanced feature enabled only for :authentication by default." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:restrict_unauthenticated" msgid "Disallow viewing timelines, user profiles and statuses for unauthenticated users." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rich_media" msgid "If enabled the instance will parse metadata from attached links to generate link previews" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:shout" msgid "Pleroma shout settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:static_fe" msgid "Render profiles and posts using server-generated HTML that is viewable without using JavaScript" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:streamer" msgid "Settings for notifications streamer" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:uri_schemes" msgid "URI schemes related settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:web_cache_ttl" msgid "The expiration time for the web responses cache. Values should be in milliseconds or `nil` to disable expiration." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome" msgid "Welcome messages settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:workers" msgid "Includes custom worker options not interpretable directly by `Oban`" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-ConcurrentLimiter" msgid "Limits configuration for background tasks." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban" msgid "[Oban](https://github.com/sorentwo/oban) asynchronous job processor configuration." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Captcha" msgid "Captcha-related settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Captcha.Kocaptcha" msgid "Kocaptcha is a very simple captcha service with a single API endpoint, the source code is here: https://github.com/koto-bank/kocaptcha. The default endpoint (https://captcha.kotobank.ch) is hosted by the developer." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.Mailer" msgid "Mailer-related settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.NewUsersDigestEmail" msgid "New users admin email digest" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.UserEmail" msgid "Email template settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Formatter" msgid "Configuration for Pleroma's link formatter which parses mentions, hashtags, and URLs." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.ScheduledActivity" msgid "Scheduled activities settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Upload" msgid "Upload general settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Upload.Filter.AnonymizeFilename" msgid "Filter replaces the filename of the upload" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Upload.Filter.Mogrify" msgid "Uploads mogrify filter settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Uploaders.Local" msgid "Local uploader-related settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Uploaders.S3" msgid "S3 uploader-related settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.User.Backup" msgid "Account Backup" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Http" msgid "HTTP invalidate settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Script" msgid "Invalidation script settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.Metadata" msgid "Metadata-related settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.Plugs.RemoteIp" msgid "`Pleroma.Web.Plugs.RemoteIp` is a shim to call [`RemoteIp`](https://git.pleroma.social/pleroma/remote_ip) but with runtime configuration.\n**If your instance is not behind at least one reverse proxy, you should not enable this plug.**\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.Preload" msgid "Preload-related settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Workers.PurgeExpiredActivity" msgid "Expired activities settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :prometheus-Pleroma.Web.Endpoint.MetricsExporter" msgid "Prometheus app metrics endpoint configuration" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :web_push_encryption-:vapid_details" msgid "Web Push Notifications configuration. You can use the mix task mix web_push.gen.keypair to generate it." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :ex_aws-:s3" msgid "S3" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :logger-:console" msgid "Console Logger" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :logger-:ex_syslogger" msgid "ExSyslogger" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:activitypub" msgid "ActivityPub" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:assets" msgid "Assets" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:auth" msgid "Auth" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:connections_pool" msgid "Connections pool" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:email_notifications" msgid "Email notifications" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:emoji" msgid "Emoji" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:features" msgid "Features" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:feed" msgid "Feed" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations" msgid "Frontend configurations" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends" msgid "Frontends" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:gopher" msgid "Gopher" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:hackney_pools" msgid "Hackney pools" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http" msgid "HTTP" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http_security" msgid "HTTP security" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance" msgid "Instance" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instances_favicons" msgid "Instances favicons" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap" msgid "LDAP" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:majic_pool" msgid "Majic pool" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:manifest" msgid "Manifest" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:markup" msgid "Markup Settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_preview_proxy" msgid "Media preview proxy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_proxy" msgid "Media proxy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:modules" msgid "Modules" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf" msgid "MRF" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_activity_expiration" msgid "MRF Activity Expiration Policy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_follow_bot" msgid "MRF FollowBot Policy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_hashtag" msgid "MRF Hashtag" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_hellthread" msgid "MRF Hellthread" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_keyword" msgid "MRF Keyword" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_mention" msgid "MRF Mention" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_normalize_markup" msgid "MRF Normalize Markup" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_object_age" msgid "MRF Object Age" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_rejectnonpublic" msgid "MRF Reject Non Public" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_simple" msgid "MRF Simple" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_steal_emoji" msgid "MRF Emojis" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_subchain" msgid "MRF Subchain" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_vocabulary" msgid "MRF Vocabulary" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:oauth2" msgid "OAuth2" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools" msgid "Pools" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:populate_hashtags_table" msgid "Populate hashtags table" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rate_limit" msgid "Rate limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:restrict_unauthenticated" msgid "Restrict Unauthenticated" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rich_media" msgid "Rich media" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:shout" msgid "Shout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:static_fe" msgid "Static FE" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:streamer" msgid "Streamer" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:uri_schemes" msgid "URI Schemes" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:user" msgid "User" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:web_cache_ttl" msgid "Web cache TTL" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome" msgid "Welcome" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:workers" msgid "Workers" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-ConcurrentLimiter" msgid "ConcurrentLimiter" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban" msgid "Oban" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Captcha" msgid "Pleroma.Captcha" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Captcha.Kocaptcha" msgid "Pleroma.Captcha.Kocaptcha" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer" msgid "Pleroma.Emails.Mailer" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.NewUsersDigestEmail" msgid "Pleroma.Emails.NewUsersDigestEmail" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.UserEmail" msgid "Pleroma.Emails.UserEmail" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Formatter" msgid "Linkify" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.ScheduledActivity" msgid "Pleroma.ScheduledActivity" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Upload" msgid "Pleroma.Upload" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Upload.Filter.AnonymizeFilename" msgid "Pleroma.Upload.Filter.AnonymizeFilename" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Upload.Filter.Mogrify" msgid "Pleroma.Upload.Filter.Mogrify" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Uploaders.Local" msgid "Pleroma.Uploaders.Local" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Uploaders.S3" msgid "Pleroma.Uploaders.S3" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.User" msgid "Pleroma.User" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.User.Backup" msgid "Pleroma.User.Backup" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.ApiSpec.CastAndValidate" msgid "Pleroma.Web.ApiSpec.CastAndValidate" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Http" msgid "Pleroma.Web.MediaProxy.Invalidation.Http" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Script" msgid "Pleroma.Web.MediaProxy.Invalidation.Script" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.Metadata" msgid "Pleroma.Web.Metadata" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.Plugs.RemoteIp" msgid "Pleroma.Web.Plugs.RemoteIp" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.Preload" msgid "Pleroma.Web.Preload" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Workers.PurgeExpiredActivity" msgid "Pleroma.Workers.PurgeExpiredActivity" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :prometheus-Pleroma.Web.Endpoint.MetricsExporter" msgid "Pleroma.Web.Endpoint.MetricsExporter" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :web_push_encryption-:vapid_details" msgid "Vapid Details" msgstr "" -#, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 -msgctxt "config description at :esshd > :enabled" -msgid "Enables SSH" -msgstr "" - -#, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 -msgctxt "config description at :esshd > :handler" -msgid "Handler module" -msgstr "" - -#, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 -msgctxt "config description at :esshd > :password_authenticator" -msgid "Authenticator module" -msgstr "" - -#, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 -msgctxt "config description at :esshd > :port" -msgid "Port to connect" -msgstr "" - -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 -msgctxt "config description at :esshd > :priv_dir" -msgid "Dir with SSH keys" -msgstr "" - #, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 msgctxt "config description at :ex_aws-:s3 > :access_key_id" msgid "S3 access key ID" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :ex_aws-:s3 > :host" msgid "S3 host" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :ex_aws-:s3 > :region" msgid "S3 region (for AWS)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :ex_aws-:s3 > :secret_access_key" msgid "Secret access key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :logger > :backends" msgid "Where logs will be sent, :console - send logs to stdout, { ExSyslogger, :ex_syslogger } - to syslog, Quack.Logger - to Slack." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :logger-:console > :format" msgid "Default: \"$date $time [$level] $levelpad$node $metadata $message\"" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :logger-:console > :level" msgid "Log level" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :logger-:ex_syslogger > :format" msgid "Default: \"$date $time [$level] $levelpad$node $metadata $message\"" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :logger-:ex_syslogger > :ident" msgid "A string that's prepended to every message, and is typically set to the app name" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :logger-:ex_syslogger > :level" msgid "Log level" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma > :admin_token" msgid "Admin token" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:activitypub > :blockers_visible" msgid "Whether a user can see someone who has blocked them" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:activitypub > :follow_handshake_timeout" msgid "Following handshake timeout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:activitypub > :note_replies_output_limit" msgid "The number of Note replies' URIs to be included with outgoing federation (`5` to match Mastodon hardcoded value, `0` to disable the output)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:activitypub > :outgoing_blocks" msgid "Whether to federate blocks to other instances" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:activitypub > :sign_object_fetches" msgid "Sign object fetches with HTTP signatures" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:activitypub > :unfollow_blocked" msgid "Whether blocks result in people getting unfollowed" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:assets > :default_mascot" msgid "This will be used as the default mascot on MastoFE. Default: `:pleroma_fox_tan`" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:assets > :default_user_avatar" msgid "URL of the default user avatar" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:assets > :mascots" msgid "Keyword of mascots, each element must contain both an URL and a mime_type key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:auth > :auth_template" msgid "Authentication form template. By default it's `show.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/show.html.ee`." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:auth > :enforce_oauth_admin_scope_usage" msgid "OAuth admin scope requirement toggle. If enabled, admin actions explicitly demand admin OAuth scope(s) presence in OAuth token (client app must support admin scopes). If disabled and token doesn't have admin scope(s), `is_admin` user flag grants access to admin-specific actions." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:auth > :oauth_consumer_strategies" msgid "The list of enabled OAuth consumer strategies. By default it's set by OAUTH_CONSUMER_STRATEGIES environment variable. Each entry in this space-delimited string should be of format \"strategy\" or \"strategy:dependency\" (e.g. twitter or keycloak:ueberauth_keycloak_strategy in case dependency is named differently than ueberauth_<strategy>)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:auth > :oauth_consumer_template" msgid "OAuth consumer mode authentication form template. By default it's `consumer.html` which corresponds to `lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex`." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:connections_pool > :connect_timeout" msgid "Timeout while `gun` will wait until connection is up. Default: 5000ms." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:connections_pool > :connection_acquisition_retries" msgid "Number of attempts to acquire the connection from the pool if it is overloaded. Default: 5" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:connections_pool > :connection_acquisition_wait" msgid "Timeout to acquire a connection from pool. The total max time is this value multiplied by the number of retries. Default: 250ms." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:connections_pool > :max_connections" msgid "Maximum number of connections in the pool. Default: 250 connections." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:connections_pool > :reclaim_multiplier" msgid "Multiplier for the number of idle connection to be reclaimed if the pool is full. For example if the pool maxes out at 250 connections and this setting is set to 0.3, the pool will reclaim at most 75 idle connections if it's overloaded. Default: 0.1" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:email_notifications > :digest" msgid "emails of \"what you've missed\" for users who have been inactive for a while" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:email_notifications > :digest > :active" msgid "Globally enable or disable digest emails" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:email_notifications > :digest > :inactivity_threshold" msgid "Minimum user inactivity threshold" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:email_notifications > :digest > :interval" msgid "Minimum interval between digest emails to one user" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:email_notifications > :digest > :schedule" msgid "When to send digest email, in crontab format. \"0 0 0\" is the default, meaning \"once a week at midnight on Sunday morning\"." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:emoji > :default_manifest" msgid "Location of the JSON-manifest. This manifest contains information about the emoji-packs you can download. Currently only one manifest can be added (no arrays)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:emoji > :groups" msgid "Emojis are ordered in groups (tags). This is an array of key-value pairs where the key is the group name and the value is the location or array of locations. * can be used as a wildcard." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:emoji > :pack_extensions" msgid "A list of file extensions for emojis, when no emoji.txt for a pack is present" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:emoji > :shortcode_globs" msgid "Location of custom emoji files. * can be used as a wildcard." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:features > :improved_hashtag_timeline" msgid "Setting to force toggle / force disable improved hashtags timeline. `:enabled` forces hashtags to be fetched from `hashtags` table for hashtags timeline. `:disabled` forces object-embedded hashtags to be used (slower). Keep it `:auto` for automatic behaviour (it is auto-set to `:enabled` [unless overridden] when HashtagsTableMigrator completes)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:feed > :post_title" msgid "Configure title rendering" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:feed > :post_title > :max_length" msgid "Maximum number of characters before truncating title" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:feed > :post_title > :omission" msgid "Replacement which will be used after truncating string" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe" msgid "Settings for Pleroma FE" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :alwaysShowSubjectInput" msgid "When disabled, auto-hide the subject field if it's empty" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :background" msgid "URL of the background, unless viewing a user profile with a background that is set" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :collapseMessageWithSubject" msgid "When a message has a subject (aka Content Warning), collapse it by default" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :greentext" msgid "Enables green text on lines prefixed with the > character" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :hideFilteredStatuses" msgid "Hides filtered statuses from timelines" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :hideMutedPosts" msgid "Hides muted statuses from timelines" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :hidePostStats" msgid "Hide notices statistics (repeats, favorites, ...)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :hideSitename" msgid "Hides instance name from PleromaFE banner" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :hideUserStats" msgid "Hide profile statistics (posts, posts per day, followers, followings, ...)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :logo" msgid "URL of the logo, defaults to Pleroma's logo" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :logoMargin" msgid "Allows you to adjust vertical margins between logo boundary and navbar borders. The idea is that to have logo's image without any extra margins and instead adjust them to your need in layout." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :logoMask" msgid "By default it assumes logo used will be monochrome with alpha channel to be compatible with both light and dark themes. If you want a colorful logo you must disable logoMask." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :minimalScopesMode" msgid "Limit scope selection to Direct, User default, and Scope of post replying to. Also prevents replying to a DM with a public post from PleromaFE." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :nsfwCensorImage" msgid "URL of the image to use for hiding NSFW media attachments in the timeline" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :postContentType" msgid "Default post formatting option" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :redirectRootLogin" msgid "Relative URL which indicates where to redirect when a user is logged in" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :redirectRootNoLogin" msgid "Relative URL which indicates where to redirect when a user isn't logged in" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :scopeCopy" msgid "Copy the scope (private/unlisted/public) in replies to posts by default" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :showFeaturesPanel" msgid "Enables panel displaying functionality of the instance on the About page" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :showInstanceSpecificPanel" msgid "Whether to show the instance's custom panel" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :sidebarRight" msgid "Change alignment of sidebar and panels to the right" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :subjectLineBehavior" msgid "Allows changing the default behaviour of subject lines in replies.\n `email`: copy and preprend re:, as in email,\n `masto`: copy verbatim, as in Mastodon,\n `noop`: don't copy the subject." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontend_configurations > :pleroma_fe > :theme" msgid "Which theme to use. Available themes are defined in styles.json" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :admin" msgid "Admin frontend" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :admin > name" msgid "Name of the installed frontend. Valid config must include both `Name` and `Reference` values." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :admin > ref" msgid "Reference of the installed frontend to be used. Valid config must include both `Name` and `Reference` values." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :available" msgid "A map containing available frontends and parameters for their installation." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :available > build_dir" msgid "The directory inside the zip file " msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :available > build_url" msgid "Either an url to a zip file containing the frontend or a template to build it by inserting the `ref`. The string `${ref}` will be replaced by the configured `ref`." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :available > custom-http-headers" msgid "The custom HTTP headers for the frontend" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :available > git" msgid "URL of the git repository of the frontend" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :available > name" msgid "Name of the frontend." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :available > ref" msgid "Reference of the frontend to be used." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :primary" msgid "Primary frontend, the one that is served for all pages by default" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :primary > name" msgid "Name of the installed frontend. Valid config must include both `Name` and `Reference` values." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:frontends > :primary > ref" msgid "Reference of the installed frontend to be used. Valid config must include both `Name` and `Reference` values." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:gopher > :dstport" msgid "Port advertised in URLs (optional, defaults to port)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:gopher > :enabled" msgid "Enables the gopher interface" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:gopher > :ip" msgid "IP address to bind to" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:gopher > :port" msgid "Port to bind to" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:hackney_pools > :federation" msgid "Settings for federation pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:hackney_pools > :federation > :max_connections" msgid "Number workers in the pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:hackney_pools > :federation > :timeout" msgid "Timeout while `hackney` will wait for response." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:hackney_pools > :media" msgid "Settings for media pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:hackney_pools > :media > :max_connections" msgid "Number workers in the pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:hackney_pools > :media > :timeout" msgid "Timeout while `hackney` will wait for response." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:hackney_pools > :upload" msgid "Settings for upload pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:hackney_pools > :upload > :max_connections" msgid "Number workers in the pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:hackney_pools > :upload > :timeout" msgid "Timeout while `hackney` will wait for response." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http > :adapter" msgid "Adapter specific options" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http > :adapter > :ssl_options" msgid "SSL options for HTTP adapter" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http > :adapter > :ssl_options > :versions" msgid "List of TLS version to use" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http > :proxy_url" msgid "Proxy URL" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http > :user_agent" msgid "What user agent to use. Must be a string or an atom `:default`. Default value is `:default`." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http_security > :ct_max_age" msgid "The maximum age for the Expect-CT header if sent" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http_security > :enabled" msgid "Whether the managed content security policy is enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http_security > :referrer_policy" msgid "The referrer policy to use, either \"same-origin\" or \"no-referrer\"" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http_security > :report_uri" msgid "Adds the specified URL to report-uri and report-to group in CSP header" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http_security > :sts" msgid "Whether to additionally send a Strict-Transport-Security header" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:http_security > :sts_max_age" msgid "The maximum age for the Strict-Transport-Security header if sent" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :account_activation_required" msgid "Require users to confirm their emails before signing in" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :account_approval_required" msgid "Require users to be manually approved by an admin before signing in" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :account_field_name_length" msgid "An account field name maximum length. Default: 512." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :account_field_value_length" msgid "An account field value maximum length. Default: 2048." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :allow_relay" msgid "Permits remote instances to subscribe to all public posts of your instance. (Important!) This may increase the visibility of your instance." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :allowed_post_formats" msgid "MIME-type list of formats allowed to be posted (transformed into HTML)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :attachment_links" msgid "Enable to automatically add attachment link text to statuses" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :autofollowed_nicknames" msgid "Set to nicknames of (local) users that every new user should automatically follow" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :autofollowing_nicknames" msgid "Set to nicknames of (local) users that automatically follows every newly registered user" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :avatar_upload_limit" msgid "File size limit of user's profile avatars" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :background_upload_limit" msgid "File size limit of user's profile backgrounds" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :banner_upload_limit" msgid "File size limit of user's profile banners" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :birthday_required" msgid "Require users to enter their birthday." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :cleanup_attachments" msgid "Enable to remove associated attachments when status is removed.\nThis will not affect duplicates and attachments without status.\nEnabling this will increase load to database when deleting statuses on larger instances.\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :description" msgid "The instance's description. It can be seen in nodeinfo and `/api/v1/instance`" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :email" msgid "Email used to reach an Administrator/Moderator of the instance" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :extended_nickname_format" msgid "Enable to use extended local nicknames format (allows underscores/dashes). This will break federation with older software for theses nicknames." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :external_user_synchronization" msgid "Enabling following/followers counters synchronization for external users" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :federating" msgid "Enable federation with other instances" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :federation_incoming_replies_max_depth" msgid "Max. depth of reply-to and reply activities fetching on incoming federation, to prevent out-of-memory situations while fetching very long threads. If set to `nil`, threads of any depth will be fetched. Lower this value if you experience out-of-memory crashes." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :federation_reachability_timeout_days" msgid "Timeout (in days) of each external federation target being unreachable prior to pausing federating to it" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :healthcheck" msgid "If enabled, system data will be shown on `/api/pleroma/healthcheck`" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :instance_thumbnail" msgid "The instance thumbnail can be any image that represents your instance and is used by some apps or services when they display information about your instance." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :invites_enabled" msgid "Enable user invitations for admins (depends on `registrations_open` being disabled)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :limit" msgid "Posts character limit (CW/Subject included in the counter)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :limit_to_local_content" msgid "Limit unauthenticated users to search for local statutes and users only. Default: `:unauthenticated`." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :max_account_fields" msgid "The maximum number of custom fields in the user profile. Default: 10." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :max_endorsed_users" msgid "The maximum number of recommended accounts. 0 will disable the feature." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :max_media_attachments" msgid "Maximum number of post media attachments" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :max_pinned_statuses" msgid "The maximum number of pinned statuses. 0 will disable the feature." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :max_remote_account_fields" msgid "The maximum number of custom fields in the remote user profile. Default: 20." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :max_report_comment_size" msgid "The maximum size of the report comment. Default: 1000." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :multi_factor_authentication" msgid "Multi-factor authentication settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :multi_factor_authentication > :backup_codes" msgid "MFA backup codes settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :multi_factor_authentication > :backup_codes > :length" msgid "Determines the length of backup one-time pass-codes, in characters. Defaults to 16 characters." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :multi_factor_authentication > :backup_codes > :number" msgid "Number of backup codes to generate." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :multi_factor_authentication > :totp" msgid "TOTP settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :multi_factor_authentication > :totp > :digits" msgid "Determines the length of a one-time pass-code, in characters. Defaults to 6 characters." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :multi_factor_authentication > :totp > :period" msgid "A period for which the TOTP code will be valid, in seconds. Defaults to 30 seconds." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :name" msgid "Name of the instance" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :notify_email" msgid "Envelope FROM address for mail sent via Pleroma" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :poll_limits" msgid "A map with poll limits for local polls" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :poll_limits > :max_expiration" msgid "Maximum expiration time (in seconds)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :poll_limits > :max_option_chars" msgid "Maximum number of characters per option" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :poll_limits > :max_options" msgid "Maximum number of options" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :poll_limits > :min_expiration" msgid "Minimum expiration time (in seconds)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :profile_directory" msgid "Enable profile directory." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :public" msgid "Makes the client API in authenticated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network. Note: when setting to `false`, please also check `:restrict_unauthenticated` setting." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :quarantined_instances" msgid "List of ActivityPub instances where private (DMs, followers-only) activities will not be sent and the reason for doing so" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :registration_reason_length" msgid "Maximum registration reason length. Default: 500." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :registrations_open" msgid "Enable registrations for anyone. Invitations require this setting to be disabled." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :remote_limit" msgid "Hard character limit beyond which remote posts will be dropped" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :remote_post_retention_days" msgid "The default amount of days to retain remote posts when pruning the database" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :safe_dm_mentions" msgid "If enabled, only mentions at the beginning of a post will be used to address people in direct messages. This is to prevent accidental mentioning of people when talking about them (e.g. \"@admin please keep an eye on @bad_actor\"). Default: disabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :show_reactions" msgid "Let favourites and emoji reactions be viewed through the API." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :skip_thread_containment" msgid "Skip filtering out broken threads. Default: enabled." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :static_dir" msgid "Instance static directory" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :upload_limit" msgid "File size limit of uploads (except for avatar, background, banner)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :user_bio_length" msgid "A user bio maximum length. Default: 5000." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :user_name_length" msgid "A user name maximum length. Default: 100." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instances_favicons > :enabled" msgid "Allow/disallow displaying and getting instances favicons" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :base" msgid "LDAP base, e.g. \"dc=example,dc=com\"" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :enabled" msgid "Enables LDAP authentication" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :host" msgid "LDAP server hostname" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :port" msgid "LDAP port, e.g. 389 or 636" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :ssl" msgid "Enable to use SSL, usually implies the port 636" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :sslopts" msgid "Additional SSL options" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :sslopts > :cacertfile" msgid "Path to file with PEM encoded cacerts" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :sslopts > :verify" msgid "Type of cert verification" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :tls" msgid "Enable to use STARTTLS, usually implies the port 389" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :tlsopts" msgid "Additional TLS options" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :tlsopts > :cacertfile" msgid "Path to file with PEM encoded cacerts" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :tlsopts > :verify" msgid "Type of cert verification" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:ldap > :uid" msgid "LDAP attribute name to authenticate the user, e.g. when \"cn\", the filter will be \"cn=username,base\"" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:majic_pool > :size" msgid "Number of majic workers to start." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:manifest > :background_color" msgid "Describe the background color of the app" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:manifest > :icons" msgid "Describe the icons of the app" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:manifest > :theme_color" msgid "Describe the theme color of the app" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:markup > :scrub_policy" msgid "Module names are shortened (removed leading `Pleroma.HTML.` part), but on adding custom module you need to use full name." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_preview_proxy > :enabled" msgid "Enables proxying of remote media preview to the instance's proxy. Requires enabled media proxy." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_preview_proxy > :image_quality" msgid "Quality of the output. Ranges from 0 (min quality) to 100 (max quality)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_preview_proxy > :min_content_length" msgid "Min content length (in bytes) to perform preview. Media smaller in size will be served without thumbnailing." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_preview_proxy > :thumbnail_max_height" msgid "Max height of preview thumbnail for images (video preview always has original dimensions)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_preview_proxy > :thumbnail_max_width" msgid "Max width of preview thumbnail for images (video preview always has original dimensions)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_proxy > :base_url" msgid "The base URL to access a user-uploaded file. Useful when you want to proxy the media files via another host/CDN fronts." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_proxy > :enabled" msgid "Enables proxying of remote media via the instance's proxy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_proxy > :invalidation > :enabled" msgid "Enables media cache object invalidation." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_proxy > :invalidation > :provider" msgid "Module which will be used to purge objects from the cache." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_proxy > :proxy_opts" msgid "Internal Pleroma.ReverseProxy settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_proxy > :proxy_opts > :max_body_length" msgid "Maximum file size (in bytes) allowed through the Pleroma MediaProxy cache." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_proxy > :proxy_opts > :max_read_duration" msgid "Timeout (in milliseconds) of GET request to the remote URI." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_proxy > :proxy_opts > :redirect_on_failure" msgid "Redirects the client to the origin server upon encountering HTTP errors.\n\nNote that files larger than Max Body Length will trigger an error. (e.g., Peertube videos)\n\n\n**WARNING:** This setting will allow larger files to be accessed, but exposes the\n\nIP addresses of your users to the other servers, bypassing the MediaProxy.\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:media_proxy > :whitelist" msgid "List of hosts with scheme to bypass the MediaProxy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:modules > :runtime_dir" msgid "A path to custom Elixir modules (such as MRF policies)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf > :policies" msgid "A list of MRF policies enabled. Module names are shortened (removed leading `Pleroma.Web.ActivityPub.MRF.` part), but on adding custom module you need to use full name." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf > :transparency" msgid "Make the content of your Message Rewrite Facility settings public (via nodeinfo)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf > :transparency_exclusions" msgid "Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value. You can also provide a reason for excluding these instance names. The instances and reasons won't be publicly disclosed." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_activity_expiration > :days" msgid "Default global expiration time for all local activities (in days)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_follow_bot > :follower_nickname" msgid "The name of the bot account to use for following newly discovered users." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_hashtag > :federated_timeline_removal" msgid "A list of hashtags which result in message being removed from federated timelines (a.k.a unlisted)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_hashtag > :reject" msgid "A list of hashtags which result in message being rejected." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_hashtag > :sensitive" msgid "A list of hashtags which result in message being set as sensitive (a.k.a NSFW/R-18)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_hellthread > :delist_threshold" msgid "Number of mentioned users after which the message gets removed from timelines anddisables notifications. Set to 0 to disable." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_hellthread > :reject_threshold" msgid "Number of mentioned users after which the messaged gets rejected. Set to 0 to disable." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_keyword > :federated_timeline_removal" msgid " A list of patterns which result in message being removed from federated timelines (a.k.a unlisted).\n\n Each pattern can be a string or [Regex](https://hexdocs.pm/elixir/Regex.html) in the format of `~r/PATTERN/`.\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_keyword > :reject" msgid " A list of patterns which result in message being rejected.\n\n Each pattern can be a string or [Regex](https://hexdocs.pm/elixir/Regex.html) in the format of `~r/PATTERN/`.\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_keyword > :replace" msgid " **Pattern**: a string or [Regex](https://hexdocs.pm/elixir/Regex.html) in the format of `~r/PATTERN/`.\n\n **Replacement**: a string. Leaving the field empty is permitted.\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_mention > :actors" msgid "A list of actors for which any post mentioning them will be dropped" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_object_age > :threshold" msgid "Required age (in seconds) of a post before actions are taken." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_rejectnonpublic > :allow_direct" msgid "Whether to allow direct messages" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_rejectnonpublic > :allow_followersonly" msgid "Whether to allow followers-only posts" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_simple > :accept" msgid "List of instances to only accept activities from (except deletes) and the reason for doing so" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_simple > :avatar_removal" msgid "List of instances to strip avatars from and the reason for doing so" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_simple > :banner_removal" msgid "List of instances to strip banners from and the reason for doing so" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_simple > :federated_timeline_removal" msgid "List of instances to remove from the Federated (aka The Whole Known Network) Timeline and the reason for doing so" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_simple > :followers_only" msgid "Force posts from the given instances to be visible by followers only and the reason for doing so" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_simple > :media_nsfw" msgid "List of instances to tag all media as NSFW (sensitive) from and the reason for doing so" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_simple > :media_removal" msgid "List of instances to strip media attachments from and the reason for doing so" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_simple > :reject" msgid "List of instances to reject activities from (except deletes) and the reason for doing so" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_simple > :reject_deletes" msgid "List of instances to reject deletions from and the reason for doing so" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_simple > :report_removal" msgid "List of instances to reject reports from and the reason for doing so" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_steal_emoji > :hosts" msgid "List of hosts to steal emojis from" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_steal_emoji > :rejected_shortcodes" msgid " A list of patterns or matches to reject shortcodes with.\n\n Each pattern can be a string or [Regex](https://hexdocs.pm/elixir/Regex.html) in the format of `~r/PATTERN/`.\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_steal_emoji > :size_limit" msgid "File size limit (in bytes), checked before an emoji is saved to the disk" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_subchain > :match_actor" msgid "Matches a series of regular expressions against the actor field" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_vocabulary > :accept" msgid "A list of ActivityStreams terms to accept. If empty, all supported messages are accepted." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_vocabulary > :reject" msgid "A list of ActivityStreams terms to reject. If empty, no messages are rejected." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:oauth2 > :clean_expired_tokens" msgid "Enable a background job to clean expired OAuth tokens. Default: disabled." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:oauth2 > :issue_new_refresh_token" msgid "Keeps old refresh token or generate new refresh token when to obtain an access token" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:oauth2 > :token_expires_in" msgid "The lifetime in seconds of the access token" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :default" msgid "Settings for default pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :default > :max_waiting" msgid "Maximum number of requests waiting for other requests to finish. After this number is reached, the pool will start returning errrors when a new request is made" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :default > :recv_timeout" msgid "Timeout for the pool while gun will wait for response" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :default > :size" msgid "Maximum number of concurrent requests in the pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :federation" msgid "Settings for federation pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :federation > :max_waiting" msgid "Maximum number of requests waiting for other requests to finish. After this number is reached, the pool will start returning errrors when a new request is made" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :federation > :recv_timeout" msgid "Timeout for the pool while gun will wait for response" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :federation > :size" msgid "Maximum number of concurrent requests in the pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :media" msgid "Settings for media pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :media > :max_waiting" msgid "Maximum number of requests waiting for other requests to finish. After this number is reached, the pool will start returning errrors when a new request is made" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :media > :recv_timeout" msgid "Timeout for the pool while gun will wait for response" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :media > :size" msgid "Maximum number of concurrent requests in the pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :upload" msgid "Settings for upload pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :upload > :max_waiting" msgid "Maximum number of requests waiting for other requests to finish. After this number is reached, the pool will start returning errrors when a new request is made" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :upload > :recv_timeout" msgid "Timeout for the pool while gun will wait for response" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:pools > :upload > :size" msgid "Maximum number of concurrent requests in the pool." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:populate_hashtags_table > :fault_rate_allowance" msgid "Max accepted rate of objects that failed in the migration. Any value from 0.0 which tolerates no errors to 1.0 which will enable the feature even if hashtags transfer failed for all records." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:populate_hashtags_table > :sleep_interval_ms" msgid "Sleep interval between each chunk of processed records in order to decrease the load on the system (defaults to 0 and should be keep default on most instances)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rate_limit > :app_account_creation" msgid "For registering user accounts from the same IP address" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rate_limit > :authentication" msgid "For authentication create / password check / user existence check requests" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rate_limit > :relation_id_action" msgid "For actions on relation with a specific user (follow, unfollow)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rate_limit > :relations_actions" msgid "For actions on relationships with all users (follow, unfollow)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rate_limit > :search" msgid "For the search requests (account & status search etc.)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rate_limit > :status_id_action" msgid "For fav / unfav or reblog / unreblog actions on the same status by the same user" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rate_limit > :statuses_actions" msgid "For create / delete / fav / unfav / reblog / unreblog actions on any statuses" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rate_limit > :timeline" msgid "For requests to timelines (each timeline has it's own limiter)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:restrict_unauthenticated > :activities" msgid "Settings for statuses." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:restrict_unauthenticated > :activities > :local" msgid "Disallow view local statuses." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:restrict_unauthenticated > :activities > :remote" msgid "Disallow view remote statuses." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:restrict_unauthenticated > :profiles" msgid "Settings for user profiles." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:restrict_unauthenticated > :profiles > :local" msgid "Disallow view local user profiles." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:restrict_unauthenticated > :profiles > :remote" msgid "Disallow view remote user profiles." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:restrict_unauthenticated > :timelines" msgid "Settings for public and federated timelines." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:restrict_unauthenticated > :timelines > :federated" msgid "Disallow view federated timeline." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:restrict_unauthenticated > :timelines > :local" msgid "Disallow view public timeline." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rich_media > :enabled" msgid "Enables RichMedia parsing of URLs" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rich_media > :failure_backoff" msgid "Amount of milliseconds after request failure, during which the request will not be retried." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rich_media > :ignore_hosts" msgid "List of hosts which will be ignored by the metadata parser" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rich_media > :ignore_tld" msgid "List TLDs (top-level domains) which will ignore for parse metadata" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rich_media > :parsers" msgid "List of Rich Media parsers. Module names are shortened (removed leading `Pleroma.Web.RichMedia.Parsers.` part), but on adding custom module you need to use full name." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:rich_media > :ttl_setters" msgid "List of rich media TTL setters. Module names are shortened (removed leading `Pleroma.Web.RichMedia.Parser.` part), but on adding custom module you need to use full name." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:shout > :enabled" msgid "Enables the backend Shoutbox chat feature." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:shout > :limit" msgid "Shout message character limit." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:static_fe > :enabled" msgid "Enables the rendering of static HTML. Default: disabled." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:streamer > :overflow_workers" msgid "Maximum number of workers created if pool is empty" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:streamer > :workers" msgid "Number of workers to send notifications" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:uri_schemes > :valid_schemes" msgid "List of the scheme part that is considered valid to be an URL" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:web_cache_ttl > :activity_pub" msgid "Activity pub routes (except question activities). Default: `nil` (no expiration)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:web_cache_ttl > :activity_pub_question" msgid "Activity pub routes (question activities). Default: `30_000` (30 seconds)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome > :chat_message > :enabled" msgid "Enables sending a chat message to newly registered users" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome > :chat_message > :message" msgid "A message that will be sent to newly registered users as a chat message" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome > :chat_message > :sender_nickname" msgid "The nickname of the local user that sends a welcome chat message" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome > :direct_message > :enabled" msgid "Enables sending a direct message to newly registered users" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome > :direct_message > :message" msgid "A message that will be sent to newly registered users" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome > :direct_message > :sender_nickname" msgid "The nickname of the local user that sends a welcome message" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome > :email > :enabled" msgid "Enables sending an email to newly registered users" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome > :email > :html" msgid "HTML content of the welcome email. EEX template with user and instance_name variables can be used." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome > :email > :sender" msgid "Email address and/or nickname that will be used to send the welcome email." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome > :email > :subject" msgid "Subject of the welcome email. EEX template with user and instance_name variables can be used." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:welcome > :email > :text" msgid "Text content of the welcome email. EEX template with user and instance_name variables can be used." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:workers > :retries" msgid "Max retry attempts for failed jobs, per `Oban` queue" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-ConcurrentLimiter > Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy" msgid "Concurrent limits configuration for MediaProxyWarmingPolicy." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-ConcurrentLimiter > Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy > :max_running" msgid "Max running concurrently jobs." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-ConcurrentLimiter > Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy > :max_waiting" msgid "Max waiting jobs." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-ConcurrentLimiter > Pleroma.Web.RichMedia.Helpers" msgid "Concurrent limits configuration for getting RichMedia for activities." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-ConcurrentLimiter > Pleroma.Web.RichMedia.Helpers > :max_running" msgid "Max running concurrently jobs." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-ConcurrentLimiter > Pleroma.Web.RichMedia.Helpers > :max_waiting" msgid "Max waiting jobs." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :crontab" msgid "Settings for cron background jobs" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :log" msgid "Logs verbose mode" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :queues" msgid "Background jobs queues (keys: queues, values: max numbers of concurrent jobs)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :queues > :activity_expiration" msgid "Activity expiration queue" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :queues > :attachments_cleanup" msgid "Attachment deletion queue" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :queues > :background" msgid "Background queue" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :queues > :backup" msgid "Backup queue" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :queues > :federator_incoming" msgid "Incoming federation queue" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :queues > :federator_outgoing" msgid "Outgoing federation queue" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :queues > :mailer" msgid "Email sender queue, see Pleroma.Emails.Mailer" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :queues > :scheduled_activities" msgid "Scheduled activities queue, see Pleroma.ScheduledActivities" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :queues > :transmogrifier" msgid "Transmogrifier queue" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Oban > :queues > :web_push" msgid "Web push notifications queue" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Captcha > :enabled" msgid "Whether the captcha should be shown on registration" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Captcha > :method" msgid "The method/service to use for captcha" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Captcha > :seconds_valid" msgid "The time in seconds for which the captcha is valid" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Captcha.Kocaptcha > :endpoint" msgid "The kocaptcha endpoint to use" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.Mailer > :adapter" msgid "One of the mail adapters listed in [Swoosh documentation](https://hexdocs.pm/swoosh/Swoosh.html#module-adapters)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:auth" msgid "SMTP AUTH enforcement mode" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:password" msgid "SMTP AUTH password" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:port" msgid "SMTP port" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:relay" msgid "Hostname or IP address" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:retries" msgid "SMTP temporary (4xx) error retries" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:ssl" msgid "Use Implicit SSL/TLS. e.g. port 465" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:tls" msgid "Explicit TLS (STARTTLS) enforcement mode" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:username" msgid "SMTP AUTH username" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.NewUsersDigestEmail > :enabled" msgid "Enables new users admin digest email when `true`" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.UserEmail > :logo" msgid "A path to a custom logo. Set it to `nil` to use the default Pleroma logo." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Emails.UserEmail > :styling" msgid "A map with color settings for email templates." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Formatter > :class" msgid "Specify the class to be added to the generated link. Disable to clear." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Formatter > :extra" msgid "Link URLs with rarely used schemes (magnet, ipfs, irc, etc.)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Formatter > :new_window" msgid "Link URLs will open in a new window/tab." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Formatter > :rel" msgid "Override the rel attribute. Disable to clear." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Formatter > :strip_prefix" msgid "Strip the scheme prefix." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Formatter > :truncate" msgid "Set to a number to truncate URLs longer than the number. Truncated URLs will end in `...`" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Formatter > :validate_tld" msgid "Set to false to disable TLD validation for URLs/emails. Can be set to :no_scheme to validate TLDs only for URLs without a scheme (e.g `example.com` will be validated, but `http://example.loki` won't)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.ScheduledActivity > :daily_user_limit" msgid "The number of scheduled activities a user is allowed to create in a single day. Default: 25." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.ScheduledActivity > :enabled" msgid "Whether scheduled activities are sent to the job queue to be executed" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.ScheduledActivity > :total_user_limit" msgid "The number of scheduled activities a user is allowed to create in total. Default: 300." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Upload > :base_url" msgid "Base URL for the uploads. Required if you use a CDN or host attachments under a different domain." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Upload > :filename_display_max_length" msgid "Set max length of a filename to display. 0 = no limit. Default: 30" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Upload > :filters" msgid "List of filter modules for uploads. Module names are shortened (removed leading `Pleroma.Upload.Filter.` part), but on adding custom module you need to use full name." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Upload > :link_name" msgid "If enabled, a name parameter will be added to the URL of the upload. For example `https://instance.tld/media/imagehash.png?name=realname.png`." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Upload > :proxy_remote" msgid "Proxy requests to the remote uploader.\n\nUseful if media upload endpoint is not internet accessible.\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Upload > :uploader" msgid "Module which will be used for uploads" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Upload.Filter.AnonymizeFilename > :text" msgid "Text to replace filenames in links. If no setting, {random}.extension will be used. You can get the original filename extension by using {extension}, for example custom-file-name.{extension}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Upload.Filter.Mogrify > :args" msgid "List of actions for the mogrify command. It's possible to add self-written settings as string. For example `auto-orient, strip, {\"resize\", \"3840x1080>\"}` value will be parsed into valid list of the settings." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Uploaders.Local > :uploads" msgid "Path where user's uploads will be saved" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Uploaders.S3 > :bucket" msgid "S3 bucket" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Uploaders.S3 > :bucket_namespace" msgid "S3 bucket namespace" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Uploaders.S3 > :streaming_enabled" msgid "Enable streaming uploads, when enabled the file will be sent to the server in chunks as it's being read. This may be unsupported by some providers, try disabling this if you have upload problems." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Uploaders.S3 > :truncated_namespace" msgid "If you use S3 compatible service such as Digital Ocean Spaces or CDN, set folder name or \"\" etc. For example, when using CDN to S3 virtual host format, set \"\". At this time, write CNAME to CDN in Upload base_url." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.User > :email_blacklist" msgid "List of email domains users may not register with." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.User > :restricted_nicknames" msgid "List of nicknames users may not register with." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.User.Backup > :limit_days" msgid "Limit user to export not more often than once per N days" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.User.Backup > :purge_after_days" msgid "Remove backup achives after N days" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.ApiSpec.CastAndValidate > :strict" msgid "Enables strict input validation (useful in development, not recommended in production)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Http > :headers" msgid "HTTP headers of request" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Http > :method" msgid "HTTP method of request. Default: :purge" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Http > :options" msgid "Request options" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Script > :script_path" msgid "Path to executable script which will purge cached items." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Script > :url_format" msgid "Optional URL format preprocessing. Only required for Apache's htcacheclean." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.Metadata > :providers" msgid "List of metadata providers to enable" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.Metadata > :unfurl_nsfw" msgid "When enabled NSFW attachments will be shown in previews" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.Plugs.RemoteIp > :enabled" msgid "Enable/disable the plug. Default: disabled." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.Plugs.RemoteIp > :headers" msgid " A list of strings naming the HTTP headers to use when deriving the true client IP. Default: `[\"x-forwarded-for\"]`.\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.Plugs.RemoteIp > :proxies" msgid "A list of upstream proxy IP subnets in CIDR notation from which we will parse the content of `headers`. Defaults to `[]`. IPv4 entries without a bitmask will be assumed to be /32 and IPv6 /128." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.Plugs.RemoteIp > :reserved" msgid " A list of reserved IP subnets in CIDR notation which should be ignored if found in `headers`. Defaults to `[\"127.0.0.0/8\", \"::1/128\", \"fc00::/7\", \"10.0.0.0/8\", \"172.16.0.0/12\", \"192.168.0.0/16\"]`\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Web.Preload > :providers" msgid "List of preload providers to enable" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Workers.PurgeExpiredActivity > :enabled" msgid "Enables expired activities addition & deletion" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-Pleroma.Workers.PurgeExpiredActivity > :min_lifetime" msgid "Minimum lifetime for ephemeral activity (in seconds)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :prometheus-Pleroma.Web.Endpoint.MetricsExporter > :auth" msgid "Enables HTTP Basic Auth for app metrics endpoint." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :prometheus-Pleroma.Web.Endpoint.MetricsExporter > :enabled" msgid "[Pleroma extension] Enables app metrics endpoint." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :prometheus-Pleroma.Web.Endpoint.MetricsExporter > :format" msgid "App metrics endpoint output format." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :prometheus-Pleroma.Web.Endpoint.MetricsExporter > :ip_whitelist" msgid "Restrict access of app metrics endpoint to the specified IP addresses." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :prometheus-Pleroma.Web.Endpoint.MetricsExporter > :path" msgid "App metrics endpoint URI path." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :web_push_encryption-:vapid_details > :private_key" msgid "VAPID private key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :web_push_encryption-:vapid_details > :public_key" msgid "VAPID public key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :web_push_encryption-:vapid_details > :subject" msgid "A mailto link for the administrative contact. It's best if this email is not a personal email address, but rather a group email to the instance moderation team." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :cors_plug > :credentials" msgid "Credentials" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :cors_plug > :expose" msgid "Expose" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :cors_plug > :headers" msgid "Headers" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :cors_plug > :max_age" msgid "Max age" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :cors_plug > :methods" msgid "Methods" msgstr "" -#, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 -msgctxt "config label at :esshd > :enabled" -msgid "Enabled" -msgstr "" - -#, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 -msgctxt "config label at :esshd > :handler" -msgid "Handler" -msgstr "" - -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 -msgctxt "config label at :esshd > :password_authenticator" -msgid "Password authenticator" -msgstr "" - #, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 -msgctxt "config label at :esshd > :port" -msgid "Port" -msgstr "" - -#, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 -msgctxt "config label at :esshd > :priv_dir" -msgid "Priv dir" -msgstr "" - -#, elixir-autogen, elixir-format -#: lib/pleroma/docs/translator.ex:5 msgctxt "config label at :ex_aws-:s3 > :access_key_id" msgid "Access key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :ex_aws-:s3 > :host" msgid "Host" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :ex_aws-:s3 > :region" msgid "Region" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :ex_aws-:s3 > :secret_access_key" msgid "Secret access key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :logger > :backends" msgid "Backends" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :logger-:console > :format" msgid "Format" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :logger-:console > :level" msgid "Level" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :logger-:console > :metadata" msgid "Metadata" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :logger-:ex_syslogger > :format" msgid "Format" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :logger-:ex_syslogger > :ident" msgid "Ident" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :logger-:ex_syslogger > :level" msgid "Level" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :logger-:ex_syslogger > :metadata" msgid "Metadata" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :mime > :types" msgid "Types" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :mime > :types > application/activity+json" msgid "\"application/activity+json\"" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :mime > :types > application/jrd+json" msgid "\"application/jrd+json\"" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :mime > :types > application/ld+json" msgid "\"application/ld+json\"" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :mime > :types > application/xml" msgid "\"application/xml\"" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :mime > :types > application/xrd+xml" msgid "\"application/xrd+xml\"" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma > :admin_token" msgid "Admin token" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma > Pleroma.Web.Auth.Authenticator" msgid "Pleroma.Web.Auth.Authenticator" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:activitypub > :blockers_visible" msgid "Blockers visible" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:activitypub > :follow_handshake_timeout" msgid "Follow handshake timeout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:activitypub > :note_replies_output_limit" msgid "Note replies output limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:activitypub > :outgoing_blocks" msgid "Outgoing blocks" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:activitypub > :sign_object_fetches" msgid "Sign object fetches" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:activitypub > :unfollow_blocked" msgid "Unfollow blocked" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:assets > :default_mascot" msgid "Default mascot" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:assets > :default_user_avatar" msgid "Default user avatar" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:assets > :mascots" msgid "Mascots" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:auth > :auth_template" msgid "Auth template" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:auth > :enforce_oauth_admin_scope_usage" msgid "Enforce OAuth admin scope usage" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:auth > :oauth_consumer_strategies" msgid "OAuth consumer strategies" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:auth > :oauth_consumer_template" msgid "OAuth consumer template" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:connections_pool > :connect_timeout" msgid "Connect timeout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:connections_pool > :connection_acquisition_retries" msgid "Connection acquisition retries" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:connections_pool > :connection_acquisition_wait" msgid "Connection acquisition wait" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:connections_pool > :max_connections" msgid "Max connections" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:connections_pool > :reclaim_multiplier" msgid "Reclaim multiplier" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:email_notifications > :digest" msgid "Digest" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:email_notifications > :digest > :active" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:email_notifications > :digest > :inactivity_threshold" msgid "Inactivity threshold" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:email_notifications > :digest > :interval" msgid "Interval" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:email_notifications > :digest > :schedule" msgid "Schedule" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:emoji > :default_manifest" msgid "Default manifest" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:emoji > :groups" msgid "Groups" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:emoji > :pack_extensions" msgid "Pack extensions" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:emoji > :shared_pack_cache_seconds_per_file" msgid "Shared pack cache s/file" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:emoji > :shortcode_globs" msgid "Shortcode globs" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:features > :improved_hashtag_timeline" msgid "Improved hashtag timeline" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:feed > :post_title" msgid "Post title" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:feed > :post_title > :max_length" msgid "Max length" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:feed > :post_title > :omission" msgid "Omission" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe" msgid "Pleroma FE" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :alwaysShowSubjectInput" msgid "Always show subject input" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :background" msgid "Background" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :collapseMessageWithSubject" msgid "Collapse message with subject" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :greentext" msgid "Greentext" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :hideFilteredStatuses" msgid "Hide Filtered Statuses" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :hideMutedPosts" msgid "Hide Muted Posts" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :hidePostStats" msgid "Hide post stats" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :hideSitename" msgid "Hide Sitename" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :hideUserStats" msgid "Hide user stats" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :logo" msgid "Logo" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :logoMargin" msgid "Logo margin" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :logoMask" msgid "Logo mask" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :minimalScopesMode" msgid "Minimal scopes mode" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :nsfwCensorImage" msgid "NSFW Censor Image" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :postContentType" msgid "Post Content Type" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :redirectRootLogin" msgid "Redirect root login" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :redirectRootNoLogin" msgid "Redirect root no login" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :scopeCopy" msgid "Scope copy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :showFeaturesPanel" msgid "Show instance features panel" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :showInstanceSpecificPanel" msgid "Show instance specific panel" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :sidebarRight" msgid "Sidebar on Right" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :subjectLineBehavior" msgid "Subject line behavior" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontend_configurations > :pleroma_fe > :theme" msgid "Theme" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :admin" msgid "Admin" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :admin > name" msgid "Name" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :admin > ref" msgid "Reference" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :available" msgid "Available" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :available > build_dir" msgid "Build directory" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :available > build_url" msgid "Build URL" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :available > custom-http-headers" msgid "Custom HTTP headers" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :available > git" msgid "Git Repository URL" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :available > name" msgid "Name" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :available > ref" msgid "Reference" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :primary" msgid "Primary" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :primary > name" msgid "Name" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:frontends > :primary > ref" msgid "Reference" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:gopher > :dstport" msgid "Dstport" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:gopher > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:gopher > :ip" msgid "IP" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:gopher > :port" msgid "Port" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:hackney_pools > :federation" msgid "Federation" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:hackney_pools > :federation > :max_connections" msgid "Max connections" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:hackney_pools > :federation > :timeout" msgid "Timeout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:hackney_pools > :media" msgid "Media" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:hackney_pools > :media > :max_connections" msgid "Max connections" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:hackney_pools > :media > :timeout" msgid "Timeout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:hackney_pools > :upload" msgid "Upload" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:hackney_pools > :upload > :max_connections" msgid "Max connections" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:hackney_pools > :upload > :timeout" msgid "Timeout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http > :adapter" msgid "Adapter" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http > :adapter > :ssl_options" msgid "SSL Options" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http > :adapter > :ssl_options > :versions" msgid "Versions" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http > :proxy_url" msgid "Proxy URL" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http > :send_user_agent" msgid "Send user agent" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http > :user_agent" msgid "User agent" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http_security > :ct_max_age" msgid "CT max age" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http_security > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http_security > :referrer_policy" msgid "Referrer policy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http_security > :report_uri" msgid "Report URI" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http_security > :sts" msgid "STS" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:http_security > :sts_max_age" msgid "STS max age" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :account_activation_required" msgid "Account activation required" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :account_approval_required" msgid "Account approval required" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :account_field_name_length" msgid "Account field name length" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :account_field_value_length" msgid "Account field value length" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :allow_relay" msgid "Allow relay" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :allowed_post_formats" msgid "Allowed post formats" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :attachment_links" msgid "Attachment links" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :autofollowed_nicknames" msgid "Autofollowed nicknames" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :autofollowing_nicknames" msgid "Autofollowing nicknames" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :avatar_upload_limit" msgid "Avatar upload limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :background_upload_limit" msgid "Background upload limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :banner_upload_limit" msgid "Banner upload limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :birthday_min_age" msgid "Birthday min age" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :birthday_required" msgid "Birthday required" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :cleanup_attachments" msgid "Cleanup attachments" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :description" msgid "Description" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :email" msgid "Admin Email Address" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :extended_nickname_format" msgid "Extended nickname format" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :external_user_synchronization" msgid "External user synchronization" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :federating" msgid "Federating" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :federation_incoming_replies_max_depth" msgid "Fed. incoming replies max depth" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :federation_reachability_timeout_days" msgid "Fed. reachability timeout days" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :healthcheck" msgid "Healthcheck" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :instance_thumbnail" msgid "Instance thumbnail" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :invites_enabled" msgid "Invites enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :limit" msgid "Limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :limit_to_local_content" msgid "Limit to local content" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :max_account_fields" msgid "Max account fields" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :max_endorsed_users" msgid "Max endorsed users" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :max_media_attachments" msgid "Max media attachments" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :max_pinned_statuses" msgid "Max pinned statuses" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :max_remote_account_fields" msgid "Max remote account fields" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :max_report_comment_size" msgid "Max report comment size" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :multi_factor_authentication" msgid "Multi factor authentication" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :multi_factor_authentication > :backup_codes" msgid "Backup codes" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :multi_factor_authentication > :backup_codes > :length" msgid "Length" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :multi_factor_authentication > :backup_codes > :number" msgid "Number" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :multi_factor_authentication > :totp" msgid "TOTP settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :multi_factor_authentication > :totp > :digits" msgid "Digits" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :multi_factor_authentication > :totp > :period" msgid "Period" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :name" msgid "Name" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :notify_email" msgid "Sender Email Address" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :poll_limits" msgid "Poll limits" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :poll_limits > :max_expiration" msgid "Max expiration" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :poll_limits > :max_option_chars" msgid "Max option chars" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :poll_limits > :max_options" msgid "Max options" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :poll_limits > :min_expiration" msgid "Min expiration" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :profile_directory" msgid "Profile directory" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :public" msgid "Public" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :quarantined_instances" msgid "Quarantined instances" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :registration_reason_length" msgid "Registration reason length" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :registrations_open" msgid "Registrations open" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :remote_limit" msgid "Remote limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :remote_post_retention_days" msgid "Remote post retention days" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :safe_dm_mentions" msgid "Safe DM mentions" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :show_reactions" msgid "Show reactions" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :skip_thread_containment" msgid "Skip thread containment" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :static_dir" msgid "Static dir" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :upload_limit" msgid "Upload limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :user_bio_length" msgid "User bio length" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :user_name_length" msgid "User name length" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instances_favicons > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :base" msgid "Base" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :host" msgid "Host" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :port" msgid "Port" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :ssl" msgid "SSL" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :sslopts" msgid "SSL options" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :sslopts > :cacertfile" msgid "Cacertfile" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :sslopts > :verify" msgid "Verify" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :tls" msgid "TLS" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :tlsopts" msgid "TLS options" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :tlsopts > :cacertfile" msgid "Cacertfile" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :tlsopts > :verify" msgid "Verify" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:ldap > :uid" msgid "UID" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:majic_pool > :size" msgid "Size" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:manifest > :background_color" msgid "Background color" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:manifest > :icons" msgid "Icons" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:manifest > :theme_color" msgid "Theme color" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:markup > :allow_fonts" msgid "Allow fonts" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:markup > :allow_headings" msgid "Allow headings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:markup > :allow_inline_images" msgid "Allow inline images" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:markup > :allow_tables" msgid "Allow tables" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:markup > :scrub_policy" msgid "Scrub policy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_preview_proxy > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_preview_proxy > :image_quality" msgid "Image quality" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_preview_proxy > :min_content_length" msgid "Min content length" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_preview_proxy > :thumbnail_max_height" msgid "Thumbnail max height" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_preview_proxy > :thumbnail_max_width" msgid "Thumbnail max width" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_proxy > :base_url" msgid "Base URL" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_proxy > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_proxy > :invalidation" msgid "Invalidation" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_proxy > :invalidation > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_proxy > :invalidation > :provider" msgid "Provider" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_proxy > :proxy_opts" msgid "Advanced MediaProxy Options" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_proxy > :proxy_opts > :max_body_length" msgid "Max body length" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_proxy > :proxy_opts > :max_read_duration" msgid "Max read duration" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_proxy > :proxy_opts > :redirect_on_failure" msgid "Redirect on failure" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:media_proxy > :whitelist" msgid "Whitelist" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:modules > :runtime_dir" msgid "Runtime dir" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf > :policies" msgid "Policies" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf > :transparency" msgid "MRF transparency" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf > :transparency_exclusions" msgid "MRF transparency exclusions" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_activity_expiration > :days" msgid "Days" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_follow_bot > :follower_nickname" msgid "Follower nickname" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_hashtag > :federated_timeline_removal" msgid "Federated timeline removal" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_hashtag > :reject" msgid "Reject" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_hashtag > :sensitive" msgid "Sensitive" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_hellthread > :delist_threshold" msgid "Delist threshold" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_hellthread > :reject_threshold" msgid "Reject threshold" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_keyword > :federated_timeline_removal" msgid "Federated timeline removal" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_keyword > :reject" msgid "Reject" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_keyword > :replace" msgid "Replace" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_mention > :actors" msgid "Actors" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_normalize_markup > :scrub_policy" msgid "Scrub policy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_object_age > :actions" msgid "Actions" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_object_age > :threshold" msgid "Threshold" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_rejectnonpublic > :allow_direct" msgid "Allow direct" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_rejectnonpublic > :allow_followersonly" msgid "Allow followers-only" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_simple > :accept" msgid "Accept" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_simple > :avatar_removal" msgid "Avatar removal" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_simple > :banner_removal" msgid "Banner removal" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_simple > :federated_timeline_removal" msgid "Federated timeline removal" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_simple > :followers_only" msgid "Followers only" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_simple > :media_nsfw" msgid "Media NSFW" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_simple > :media_removal" msgid "Media removal" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_simple > :reject" msgid "Reject" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_simple > :reject_deletes" msgid "Reject deletes" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_simple > :report_removal" msgid "Report removal" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_steal_emoji > :hosts" msgid "Hosts" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_steal_emoji > :rejected_shortcodes" msgid "Rejected shortcodes" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_steal_emoji > :size_limit" msgid "Size limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_subchain > :match_actor" msgid "Match actor" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_vocabulary > :accept" msgid "Accept" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:mrf_vocabulary > :reject" msgid "Reject" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:oauth2 > :clean_expired_tokens" msgid "Clean expired tokens" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:oauth2 > :issue_new_refresh_token" msgid "Issue new refresh token" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:oauth2 > :token_expires_in" msgid "Token expires in" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :default" msgid "Default" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :default > :max_waiting" msgid "Max waiting" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :default > :recv_timeout" msgid "Recv timeout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :default > :size" msgid "Size" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :federation" msgid "Federation" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :federation > :max_waiting" msgid "Max waiting" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :federation > :recv_timeout" msgid "Recv timeout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :federation > :size" msgid "Size" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :media" msgid "Media" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :media > :max_waiting" msgid "Max waiting" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :media > :recv_timeout" msgid "Recv timeout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :media > :size" msgid "Size" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :upload" msgid "Upload" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :upload > :max_waiting" msgid "Max waiting" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :upload > :recv_timeout" msgid "Recv timeout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:pools > :upload > :size" msgid "Size" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:populate_hashtags_table > :fault_rate_allowance" msgid "Fault rate allowance" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:populate_hashtags_table > :sleep_interval_ms" msgid "Sleep interval ms" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rate_limit > :app_account_creation" msgid "App account creation" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rate_limit > :authentication" msgid "Authentication" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rate_limit > :relation_id_action" msgid "Relation ID action" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rate_limit > :relations_actions" msgid "Relations actions" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rate_limit > :search" msgid "Search" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rate_limit > :status_id_action" msgid "Status ID action" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rate_limit > :statuses_actions" msgid "Statuses actions" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rate_limit > :timeline" msgid "Timeline" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:restrict_unauthenticated > :activities" msgid "Activities" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:restrict_unauthenticated > :activities > :local" msgid "Local" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:restrict_unauthenticated > :activities > :remote" msgid "Remote" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:restrict_unauthenticated > :profiles" msgid "Profiles" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:restrict_unauthenticated > :profiles > :local" msgid "Local" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:restrict_unauthenticated > :profiles > :remote" msgid "Remote" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:restrict_unauthenticated > :timelines" msgid "Timelines" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:restrict_unauthenticated > :timelines > :federated" msgid "Federated" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:restrict_unauthenticated > :timelines > :local" msgid "Local" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rich_media > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rich_media > :failure_backoff" msgid "Failure backoff" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rich_media > :ignore_hosts" msgid "Ignore hosts" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rich_media > :ignore_tld" msgid "Ignore TLD" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rich_media > :parsers" msgid "Parsers" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:rich_media > :ttl_setters" msgid "TTL setters" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:shout > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:shout > :limit" msgid "Limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:static_fe > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:streamer > :overflow_workers" msgid "Overflow workers" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:streamer > :workers" msgid "Workers" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:uri_schemes > :valid_schemes" msgid "Valid schemes" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:user > :deny_follow_blocked" msgid "Deny follow blocked" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:web_cache_ttl > :activity_pub" msgid "Activity pub" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:web_cache_ttl > :activity_pub_question" msgid "Activity pub question" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :chat_message" msgid "Chat message" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :chat_message > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :chat_message > :message" msgid "Message" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :chat_message > :sender_nickname" msgid "Sender nickname" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :direct_message" msgid "Direct message" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :direct_message > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :direct_message > :message" msgid "Message" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :direct_message > :sender_nickname" msgid "Sender nickname" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :email" msgid "Email" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :email > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :email > :html" msgid "Html" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :email > :sender" msgid "Sender" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :email > :subject" msgid "Subject" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:welcome > :email > :text" msgid "Text" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:workers > :retries" msgid "Retries" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-ConcurrentLimiter > Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy" msgid "Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-ConcurrentLimiter > Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy > :max_running" msgid "Max running" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-ConcurrentLimiter > Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy > :max_waiting" msgid "Max waiting" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-ConcurrentLimiter > Pleroma.Web.RichMedia.Helpers" msgid "Pleroma.Web.RichMedia.Helpers" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-ConcurrentLimiter > Pleroma.Web.RichMedia.Helpers > :max_running" msgid "Max running" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-ConcurrentLimiter > Pleroma.Web.RichMedia.Helpers > :max_waiting" msgid "Max waiting" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :crontab" msgid "Crontab" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :log" msgid "Log" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :queues" msgid "Queues" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :queues > :activity_expiration" msgid "Activity expiration" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :queues > :attachments_cleanup" msgid "Attachments cleanup" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :queues > :background" msgid "Background" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :queues > :backup" msgid "Backup" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :queues > :federator_incoming" msgid "Federator incoming" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :queues > :federator_outgoing" msgid "Federator outgoing" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :queues > :mailer" msgid "Mailer" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :queues > :scheduled_activities" msgid "Scheduled activities" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :queues > :transmogrifier" msgid "Transmogrifier" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Oban > :queues > :web_push" msgid "Web push" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Captcha > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Captcha > :method" msgid "Method" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Captcha > :seconds_valid" msgid "Seconds valid" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Captcha.Kocaptcha > :endpoint" msgid "Endpoint" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > :adapter" msgid "Adapter" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > :enabled" msgid "Mailer Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.AmazonSES-:access_key" msgid "AWS Access Key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.AmazonSES-:region" msgid "AWS Region" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.AmazonSES-:secret" msgid "AWS Secret Key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Dyn-:api_key" msgid "Dyn API Key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Gmail-:access_token" msgid "GMail API Access Token" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Mailgun-:api_key" msgid "Mailgun API Key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Mailgun-:domain" msgid "Domain" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Mailjet-:api_key" msgid "MailJet Public API Key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Mailjet-:secret" msgid "MailJet Private API Key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Mandrill-:api_key" msgid "Mandrill API Key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Postmark-:api_key" msgid "Postmark API Key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:auth" msgid "AUTH Mode" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:password" msgid "Password" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:port" msgid "Port" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:relay" msgid "Relay" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:retries" msgid "Retries" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:ssl" msgid "Use SSL" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:tls" msgid "STARTTLS Mode" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SMTP-:username" msgid "Username" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Sendgrid-:api_key" msgid "SendGrid API Key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Sendmail-:cmd_args" msgid "Cmd args" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Sendmail-:cmd_path" msgid "Cmd path" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.Sendmail-:qmail" msgid "Qmail compat mode" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SocketLabs-:api_key" msgid "SocketLabs API Key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SocketLabs-:server_id" msgid "Server ID" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SparkPost-:api_key" msgid "SparkPost API key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.Mailer > Swoosh.Adapters.SparkPost-:endpoint" msgid "Endpoint" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.NewUsersDigestEmail > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.UserEmail > :logo" msgid "Logo" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.UserEmail > :styling" msgid "Styling" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.UserEmail > :styling > :background_color" msgid "Background color" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.UserEmail > :styling > :content_background_color" msgid "Content background color" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.UserEmail > :styling > :header_color" msgid "Header color" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.UserEmail > :styling > :link_color" msgid "Link color" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.UserEmail > :styling > :text_color" msgid "Text color" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Emails.UserEmail > :styling > :text_muted_color" msgid "Text muted color" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Formatter > :class" msgid "Class" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Formatter > :extra" msgid "Extra" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Formatter > :new_window" msgid "New window" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Formatter > :rel" msgid "Rel" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Formatter > :strip_prefix" msgid "Strip prefix" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Formatter > :truncate" msgid "Truncate" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Formatter > :validate_tld" msgid "Validate tld" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.ScheduledActivity > :daily_user_limit" msgid "Daily user limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.ScheduledActivity > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.ScheduledActivity > :total_user_limit" msgid "Total user limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Upload > :base_url" msgid "Base URL" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Upload > :filename_display_max_length" msgid "Filename display max length" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Upload > :filters" msgid "Filters" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Upload > :link_name" msgid "Link name" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Upload > :proxy_remote" msgid "Proxy remote" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Upload > :uploader" msgid "Uploader" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Upload.Filter.AnonymizeFilename > :text" msgid "Text" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Upload.Filter.Mogrify > :args" msgid "Args" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Uploaders.Local > :uploads" msgid "Uploads" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Uploaders.S3 > :bucket" msgid "Bucket" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Uploaders.S3 > :bucket_namespace" msgid "Bucket namespace" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Uploaders.S3 > :streaming_enabled" msgid "Streaming enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Uploaders.S3 > :truncated_namespace" msgid "Truncated namespace" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.User > :email_blacklist" msgid "Email blacklist" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.User > :restricted_nicknames" msgid "Restricted nicknames" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.User.Backup > :limit_days" msgid "Limit days" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.User.Backup > :purge_after_days" msgid "Purge after days" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.ApiSpec.CastAndValidate > :strict" msgid "Strict" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Http > :headers" msgid "Headers" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Http > :method" msgid "Method" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Http > :options" msgid "Options" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Http > :options > :params" msgid "Params" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Script > :script_path" msgid "Script path" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.MediaProxy.Invalidation.Script > :url_format" msgid "URL Format" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.Metadata > :providers" msgid "Providers" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.Metadata > :unfurl_nsfw" msgid "Unfurl NSFW" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.Plugs.RemoteIp > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.Plugs.RemoteIp > :headers" msgid "Headers" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.Plugs.RemoteIp > :proxies" msgid "Proxies" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.Plugs.RemoteIp > :reserved" msgid "Reserved" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Web.Preload > :providers" msgid "Providers" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Workers.PurgeExpiredActivity > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-Pleroma.Workers.PurgeExpiredActivity > :min_lifetime" msgid "Min lifetime" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :prometheus-Pleroma.Web.Endpoint.MetricsExporter > :auth" msgid "Auth" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :prometheus-Pleroma.Web.Endpoint.MetricsExporter > :enabled" msgid "Enabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :prometheus-Pleroma.Web.Endpoint.MetricsExporter > :format" msgid "Format" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :prometheus-Pleroma.Web.Endpoint.MetricsExporter > :ip_whitelist" msgid "IP Whitelist" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :prometheus-Pleroma.Web.Endpoint.MetricsExporter > :path" msgid "Path" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :web_push_encryption-:vapid_details > :private_key" msgid "Private key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :web_push_encryption-:vapid_details > :public_key" msgid "Public key" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :web_push_encryption-:vapid_details > :subject" msgid "Subject" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:activitypub > :authorized_fetch_mode" msgid "Require HTTP signatures for AP fetches" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :short_description" msgid "Shorter version of instance description. It can be seen on `/api/v1/instance`" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:activitypub > :authorized_fetch_mode" msgid "Authorized fetch mode" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :short_description" msgid "Short description" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:delete_context_objects" msgid "`delete_context_objects` background migration settings" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:delete_context_objects > :fault_rate_allowance" msgid "Max accepted rate of objects that failed in the migration. Any value from 0.0 which tolerates no errors to 1.0 which will enable the feature even if context object deletion failed for all records." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:delete_context_objects > :sleep_interval_ms" msgid "Sleep interval between each chunk of processed records in order to decrease the load on the system (defaults to 0 and should be keep default on most instances)." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :birthday_min_age" msgid "Minimum required age (in days) for users to create account. Only used if birthday is required." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:delete_context_objects" msgid "Delete context objects" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:delete_context_objects > :fault_rate_allowance" msgid "Fault rate allowance" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:delete_context_objects > :sleep_interval_ms" msgid "Sleep interval ms" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :report_strip_status" msgid "Strip associated statuses in reports to ids when closed/resolved, otherwise keep a copy" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:mrf_object_age > :actions" msgid "A list of actions to apply to the post. `:delist` removes the post from public timelines; `:strip_followers` removes followers from the ActivityPub recipient list ensuring they won't be delivered to home timelines, additionally for followers-only it degrades to a direct message; `:reject` rejects the message entirely" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :report_strip_status" msgid "Report strip status" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :admin_privileges" msgid "What extra privileges to allow admins (e.g. updating user credentials, get password reset token, delete users, index and read private statuses and chats)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :moderator_privileges" msgid "What extra privileges to allow moderators (e.g. updating user credentials, get password reset token, delete users, index and read private statuses and chats)" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :admin_privileges" msgid "Admin privileges" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :moderator_privileges" msgid "Moderator privileges" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config description at :pleroma-:instance > :languages" msgid "Languages to be exposed in /api/v1/instance. Should be in the format of BCP47 language codes." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/docs/translator.ex:5 +#, elixir-autogen, elixir-format msgctxt "config label at :pleroma-:instance > :languages" msgid "Languages" msgstr "" diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot @@ -10,176 +10,176 @@ msgid "" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:122 +#, elixir-autogen, elixir-format msgid "%{name} - %{count} is not a multiple of %{multiple}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:131 +#, elixir-autogen, elixir-format msgid "%{name} - %{value} is larger than exclusive maximum %{max}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:140 +#, elixir-autogen, elixir-format msgid "%{name} - %{value} is larger than inclusive maximum %{max}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:149 +#, elixir-autogen, elixir-format msgid "%{name} - %{value} is smaller than exclusive minimum %{min}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:158 +#, elixir-autogen, elixir-format msgid "%{name} - %{value} is smaller than inclusive minimum %{min}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:102 +#, elixir-autogen, elixir-format msgid "%{name} - Array items must be unique." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:114 +#, elixir-autogen, elixir-format msgid "%{name} - Array length %{length} is larger than maxItems: %{}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:106 +#, elixir-autogen, elixir-format msgid "%{name} - Array length %{length} is smaller than minItems: %{min}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:166 +#, elixir-autogen, elixir-format msgid "%{name} - Invalid %{type}. Got: %{value}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:174 +#, elixir-autogen, elixir-format msgid "%{name} - Invalid format. Expected %{format}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:51 +#, elixir-autogen, elixir-format msgid "%{name} - Invalid schema.type. Got: %{type}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:178 +#, elixir-autogen, elixir-format msgid "%{name} - Invalid value for enum." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:95 +#, elixir-autogen, elixir-format msgid "%{name} - String length is larger than maxLength: %{length}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:88 +#, elixir-autogen, elixir-format msgid "%{name} - String length is smaller than minLength: %{length}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:63 +#, elixir-autogen, elixir-format msgid "%{name} - null value where %{type} expected." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:60 +#, elixir-autogen, elixir-format msgid "%{name} - null value." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:182 +#, elixir-autogen, elixir-format msgid "Failed to cast to any schema in %{polymorphic_type}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:71 +#, elixir-autogen, elixir-format msgid "Failed to cast value as %{invalid_schema}. Value must be castable using `allOf` schemas listed." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:84 +#, elixir-autogen, elixir-format msgid "Failed to cast value to one of: %{failed_schemas}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:78 +#, elixir-autogen, elixir-format msgid "Failed to cast value using any of: %{failed_schemas}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:212 +#, elixir-autogen, elixir-format msgid "Invalid value for header: %{name}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:204 +#, elixir-autogen, elixir-format msgid "Missing field: %{name}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:208 +#, elixir-autogen, elixir-format msgid "Missing header: %{name}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:196 +#, elixir-autogen, elixir-format msgid "No value provided for required discriminator `%{field}`." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:216 +#, elixir-autogen, elixir-format msgid "Object property count %{property_count} is greater than maxProperties: %{max_properties}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:224 +#, elixir-autogen, elixir-format msgid "Object property count %{property_count} is less than minProperties: %{min_properties}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/static_fe/static_fe/error.html.eex:2 +#, elixir-autogen, elixir-format msgid "Oops" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:188 +#, elixir-autogen, elixir-format msgid "Unexpected field: %{name}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:200 +#, elixir-autogen, elixir-format msgid "Unknown schema: %{name}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:192 +#, elixir-autogen, elixir-format msgid "Value used as discriminator for `%{field}` matches no schemas." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/embed/show.html.eex:43 #: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:37 +#, elixir-autogen, elixir-format msgid "announces" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/embed/show.html.eex:44 #: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:38 +#, elixir-autogen, elixir-format msgid "likes" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/embed/show.html.eex:42 #: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:36 +#, elixir-autogen, elixir-format msgid "replies" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/embed/show.html.eex:27 #: lib/pleroma/web/templates/static_fe/static_fe/_notice.html.eex:22 +#, elixir-autogen, elixir-format msgid "sensitive media" msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/oauth_scopes.po b/priv/gettext/en/LC_MESSAGES/oauth_scopes.po @@ -0,0 +1,264 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"PO-Revision-Date: 2023-05-02 17:02-0400\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin" +msgstr "All admin access" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:read" +msgstr "Read all using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:write" +msgstr "Write all using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "follow" +msgstr "Read and write user relationships" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "push" +msgstr "Push notifications" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read" +msgstr "Read everything" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:accounts" +msgstr "Read information of all accounts" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:backups" +msgstr "Read your backups" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:blocks" +msgstr "Read block relationships" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:bookmarks" +msgstr "Read your bookmarks" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:chats" +msgstr "Read your chats" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:favourites" +msgstr "Read your favourites" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:filters" +msgstr "Read your filtering settings" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:follows" +msgstr "Read follow relationships" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:lists" +msgstr "Read your lists" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:notifications" +msgstr "Read your notifications" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:reports" +msgstr "Read your reports" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:search" +msgstr "Perform searches" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:statuses" +msgstr "Read all statuses you can see" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write" +msgstr "Write everything" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:accounts" +msgstr "Change your account information" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:blocks" +msgstr "Block or unblock someone" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:bookmarks" +msgstr "Add to or remove from your bookmarks" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:chats" +msgstr "Create or delete chats or chat messages, or mark them as read" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:conversations" +msgstr "Change recipients of, mark as read, or delete conversations" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:favourites" +msgstr "Favourite or unfavourite statuses" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:filters" +msgstr "Change your filtering settings" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:follow" +msgstr "Follow or unfollow someone" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:follows" +msgstr "Follow or unfollow someone" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:lists" +msgstr "Create, change or delete your lists" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:media" +msgstr "Upload media files or modify those you uploaded" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:mutes" +msgstr "Mute or unmute someone" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:notifications" +msgstr "Mark notifications as read" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:reports" +msgstr "Submit reports" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "write:statuses" +msgstr "Post, edit, reblog or react to statuses" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:read:accounts" +msgstr "Read all accounts using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:read:chats" +msgstr "Read all chats using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:read:invites" +msgstr "Read all invites using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:read:media_proxy_caches" +msgstr "Read media proxy caches using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:read:reports" +msgstr "Read all reports using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:read:statuses" +msgstr "Read all statuses using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:write:accounts" +msgstr "Change all accounts using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:write:chats" +msgstr "Change all chats using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:write:follows" +msgstr "Change follow relationships using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:write:invites" +msgstr "Invite or revoke an invite using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:write:media_proxy_caches" +msgstr "Change media proxy caches using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:write:reports" +msgstr "Handle reports using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "admin:write:statuses" +msgstr "Delete, change scope of, or mark as sensitive statuses using admin API" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:media" +msgstr "Read media attachments" + +#, elixir-autogen, elixir-format +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +msgid "read:mutes" +msgstr "Read mute relationships" diff --git a/priv/gettext/en_test/LC_MESSAGES/default.po b/priv/gettext/en_test/LC_MESSAGES/default.po @@ -9,7 +9,6 @@ msgid "" msgstr "" "Language: en_test\n" -"Plural-Forms: nplurals=2\n" #, elixir-format #: lib/pleroma/web/api_spec/render_error.ex:122 diff --git a/priv/gettext/en_test/LC_MESSAGES/errors.po b/priv/gettext/en_test/LC_MESSAGES/errors.po @@ -9,7 +9,6 @@ msgid "" msgstr "" "Language: en_test\n" -"Plural-Forms: nplurals=2\n" msgid "can't be blank" msgstr "" diff --git a/priv/gettext/en_test/LC_MESSAGES/posix_errors.po b/priv/gettext/en_test/LC_MESSAGES/posix_errors.po @@ -9,7 +9,6 @@ msgid "" msgstr "" "Language: en_test\n" -"Plural-Forms: nplurals=2\n" msgid "eperm" msgstr "" diff --git a/priv/gettext/en_test/LC_MESSAGES/static_pages.po b/priv/gettext/en_test/LC_MESSAGES/static_pages.po @@ -21,10 +21,6 @@ msgstr "" #~ ## #~ ## Use "mix gettext.extract --merge" or "mix gettext.merge" #~ ## to merge POT files into PO files. -#~ msgid "" -#~ msgstr "" -#~ "Language: en_test\n" -#~ "Plural-Forms: nplurals=2\n" #, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:9 diff --git a/priv/gettext/errors.pot b/priv/gettext/errors.pot @@ -89,153 +89,152 @@ msgstr "" msgid "must be equal to %{number}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:574 +#, elixir-autogen, elixir-format msgid "Account not found" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:332 +#, elixir-autogen, elixir-format msgid "Already voted" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/o_auth_controller.ex:402 +#, elixir-autogen, elixir-format msgid "Bad request" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/controller_helper.ex:97 #: lib/pleroma/web/controller_helper.ex:103 +#, elixir-autogen, elixir-format msgid "Can't display this activity" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:334 +#, elixir-autogen, elixir-format msgid "Can't find user" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:80 +#, elixir-autogen, elixir-format msgid "Can't get favorites" msgstr "" +#: lib/pleroma/web/common_api/utils.ex:464 #, elixir-autogen, elixir-format -#: lib/pleroma/web/common_api/utils.ex:457 msgid "Cannot post an empty status without attachments" msgstr "" +#: lib/pleroma/web/common_api/utils.ex:452 #, elixir-autogen, elixir-format -#: lib/pleroma/web/common_api/utils.ex:445 msgid "Comment must be up to %{max_size} characters" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/config_db.ex:199 +#, elixir-autogen, elixir-format msgid "Config with params %{params} not found" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:183 #: lib/pleroma/web/common_api.ex:187 +#, elixir-autogen, elixir-format msgid "Could not delete" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:233 +#, elixir-autogen, elixir-format msgid "Could not favorite" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:270 +#, elixir-autogen, elixir-format msgid "Could not unfavorite" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:218 +#, elixir-autogen, elixir-format msgid "Could not unrepeat" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:581 #: lib/pleroma/web/common_api.ex:590 +#, elixir-autogen, elixir-format msgid "Could not update state" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:207 +#, elixir-autogen, elixir-format msgid "Error." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/twitter_api/twitter_api.ex:105 +#, elixir-autogen, elixir-format msgid "Invalid CAPTCHA" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:146 #: lib/pleroma/web/o_auth/o_auth_controller.ex:631 +#, elixir-autogen, elixir-format msgid "Invalid credentials" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/plugs/ensure_authenticated_plug.ex:42 +#, elixir-autogen, elixir-format msgid "Invalid credentials." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:353 +#, elixir-autogen, elixir-format msgid "Invalid indices" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:29 +#, elixir-autogen, elixir-format msgid "Invalid parameters" msgstr "" +#: lib/pleroma/web/common_api/utils.ex:360 #, elixir-autogen, elixir-format -#: lib/pleroma/web/common_api/utils.ex:353 msgid "Invalid password." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:267 +#, elixir-autogen, elixir-format msgid "Invalid request" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/twitter_api/twitter_api.ex:108 +#, elixir-autogen, elixir-format msgid "Kocaptcha service unavailable" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:142 +#, elixir-autogen, elixir-format msgid "Missing parameters" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:171 #: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:197 #: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:239 +#, elixir-autogen, elixir-format msgid "No such permission_group" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:502 #: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:11 #: lib/pleroma/web/feed/tag_controller.ex:16 #: lib/pleroma/web/feed/user_controller.ex:69 #: lib/pleroma/web/o_status/o_status_controller.ex:132 -#: lib/pleroma/web/plugs/uploaded_media.ex:84 +#: lib/pleroma/web/plugs/uploaded_media.ex:104 +#, elixir-autogen, elixir-format msgid "Not found" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:324 +#, elixir-autogen, elixir-format msgid "Poll's author can't vote" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:499 #: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:20 #: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:39 @@ -243,213 +242,213 @@ msgstr "" #: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:52 #: lib/pleroma/web/mastodon_api/controllers/status_controller.ex:382 #: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:71 +#, elixir-autogen, elixir-format msgid "Record not found" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:35 #: lib/pleroma/web/feed/user_controller.ex:78 #: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:42 #: lib/pleroma/web/o_status/o_status_controller.ex:138 +#, elixir-autogen, elixir-format msgid "Something went wrong" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api/activity_draft.ex:143 +#, elixir-autogen, elixir-format msgid "The message visibility must be direct" msgstr "" +#: lib/pleroma/web/common_api/utils.ex:474 #, elixir-autogen, elixir-format -#: lib/pleroma/web/common_api/utils.ex:467 msgid "The status is over the character limit" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/plugs/ensure_public_or_authenticated_plug.ex:36 +#, elixir-autogen, elixir-format msgid "This resource requires authentication." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/plugs/rate_limiter.ex:208 +#, elixir-autogen, elixir-format msgid "Throttled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:354 +#, elixir-autogen, elixir-format msgid "Too many choices" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:268 +#, elixir-autogen, elixir-format msgid "You can't revoke your own admin status." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/o_auth_controller.ex:243 #: lib/pleroma/web/o_auth/o_auth_controller.ex:333 +#, elixir-autogen, elixir-format msgid "Your account is currently disabled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/o_auth_controller.ex:205 #: lib/pleroma/web/o_auth/o_auth_controller.ex:356 +#, elixir-autogen, elixir-format msgid "Your login is missing a confirmed e-mail address" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:390 +#, elixir-autogen, elixir-format msgid "can't read inbox of %{nickname} as %{as_nickname}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:489 +#, elixir-autogen, elixir-format msgid "can't update outbox of %{nickname} as %{as_nickname}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:526 +#, elixir-autogen, elixir-format msgid "conversation is already muted" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:508 +#, elixir-autogen, elixir-format msgid "error" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:34 +#, elixir-autogen, elixir-format msgid "mascots can only be images" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:63 +#, elixir-autogen, elixir-format msgid "not found" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/o_auth_controller.ex:437 +#, elixir-autogen, elixir-format msgid "Bad OAuth request." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/twitter_api/twitter_api.ex:114 +#, elixir-autogen, elixir-format msgid "CAPTCHA already used" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/twitter_api/twitter_api.ex:111 +#, elixir-autogen, elixir-format msgid "CAPTCHA expired" msgstr "" +#: lib/pleroma/web/plugs/uploaded_media.ex:77 #, elixir-autogen, elixir-format -#: lib/pleroma/web/plugs/uploaded_media.ex:57 msgid "Failed" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/o_auth_controller.ex:453 +#, elixir-autogen, elixir-format msgid "Failed to authenticate: %{message}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/o_auth_controller.ex:484 +#, elixir-autogen, elixir-format msgid "Failed to set up user account." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/plugs/o_auth_scopes_plug.ex:37 +#, elixir-autogen, elixir-format msgid "Insufficient permissions: %{permissions}." msgstr "" +#: lib/pleroma/web/plugs/uploaded_media.ex:131 #, elixir-autogen, elixir-format -#: lib/pleroma/web/plugs/uploaded_media.ex:111 msgid "Internal Error" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/fallback_controller.ex:22 #: lib/pleroma/web/o_auth/fallback_controller.ex:29 +#, elixir-autogen, elixir-format msgid "Invalid Username/Password" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/twitter_api/twitter_api.ex:117 +#, elixir-autogen, elixir-format msgid "Invalid answer data" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:33 +#, elixir-autogen, elixir-format msgid "Nodeinfo schema version not handled" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/o_auth_controller.ex:194 +#, elixir-autogen, elixir-format msgid "This action is outside the authorized scopes" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/fallback_controller.ex:14 +#, elixir-autogen, elixir-format msgid "Unknown error, please check the details and try again." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/o_auth_controller.ex:136 #: lib/pleroma/web/o_auth/o_auth_controller.ex:180 +#, elixir-autogen, elixir-format msgid "Unlisted redirect_uri." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/o_auth_controller.ex:433 +#, elixir-autogen, elixir-format msgid "Unsupported OAuth provider: %{provider}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/uploaders/uploader.ex:74 +#, elixir-autogen, elixir-format msgid "Uploader callback timeout" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/uploader_controller.ex:23 +#, elixir-autogen, elixir-format msgid "bad request" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/twitter_api/twitter_api.ex:102 +#, elixir-autogen, elixir-format msgid "CAPTCHA Error" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:282 +#, elixir-autogen, elixir-format msgid "Could not add reaction emoji" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/common_api.ex:293 +#, elixir-autogen, elixir-format msgid "Could not remove reaction emoji" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/twitter_api/twitter_api.ex:128 +#, elixir-autogen, elixir-format msgid "Invalid CAPTCHA (Missing parameter: %{name})" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/list_controller.ex:96 +#, elixir-autogen, elixir-format msgid "List not found" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:153 +#, elixir-autogen, elixir-format msgid "Missing parameter: %{name}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/o_auth_controller.ex:232 #: lib/pleroma/web/o_auth/o_auth_controller.ex:346 +#, elixir-autogen, elixir-format msgid "Password reset is required" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/tests/auth_test_controller.ex:9 #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:6 #: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:6 @@ -529,81 +528,82 @@ msgstr "" #: lib/pleroma/web/twitter_api/controllers/util_controller.ex:6 #: lib/pleroma/web/uploader_controller.ex:6 #: lib/pleroma/web/web_finger/web_finger_controller.ex:6 +#, elixir-autogen, elixir-format msgid "Security violation: OAuth scopes check was neither handled nor explicitly skipped." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/plugs/ensure_authenticated_plug.ex:32 +#, elixir-autogen, elixir-format msgid "Two-factor authentication enabled, you must use a access token." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:61 +#, elixir-autogen, elixir-format msgid "Web push subscription is disabled on this Pleroma instance" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:234 +#, elixir-autogen, elixir-format msgid "You can't revoke your own admin/moderator status." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:131 +#, elixir-autogen, elixir-format msgid "authorization required for timeline view" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:24 +#, elixir-autogen, elixir-format msgid "Access denied" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:331 +#, elixir-autogen, elixir-format msgid "This API requires an authenticated user" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/plugs/user_is_admin_plug.ex:21 +#, elixir-autogen, elixir-format msgid "User is not an admin." msgstr "" -#, elixir-format #: lib/pleroma/user/backup.ex:73 +#, elixir-format msgid "Last export was less than a day ago" msgid_plural "Last export was less than %{days} days ago" msgstr[0] "" msgstr[1] "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:421 +#, elixir-autogen, elixir-format msgid "Character limit (%{limit} characters) exceeded, contains %{length} characters" msgstr "" +#: lib/pleroma/web/common_api/utils.ex:489 #, elixir-autogen, elixir-format -#: lib/pleroma/web/common_api/utils.ex:482 msgid "Too many attachments" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/plugs/user_is_staff_plug.ex:20 +#, elixir-autogen, elixir-format msgid "User is not a staff member." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/o_auth/o_auth_controller.ex:366 +#, elixir-autogen, elixir-format msgid "Your account is awaiting approval." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:258 #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:261 #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:264 +#, elixir-autogen, elixir-format msgid "File is too large" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/plugs/ensure_privileged_plug.ex:21 #: lib/pleroma/web/plugs/ensure_privileged_plug.ex:34 #: lib/pleroma/web/plugs/ensure_privileged_plug.ex:41 +#, elixir-autogen, elixir-format msgid "User isn't privileged." msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/errors.po b/priv/gettext/ja/LC_MESSAGES/errors.po @@ -3,16 +3,16 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-09-18 09:07+0000\n" -"PO-Revision-Date: 2021-09-19 09:45+0000\n" -"Last-Translator: Ryo Ueno <r.ueno.nfive@gmail.com>\n" +"PO-Revision-Date: 2024-02-16 11:49+0000\n" +"Last-Translator: SyoBoN <syobon@syobon.net>\n" "Language-Team: Japanese <https://translate.pleroma.social/projects/pleroma/" -"pleroma/ja/>\n" +"pleroma-backend-domain-errors/ja/>\n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 4.6.2\n" +"X-Generator: Weblate 4.13.1\n" ## This file is a PO Template file. ## @@ -25,11 +25,11 @@ msgstr "" ## effect: edit them in PO (`.po`) files instead. ## From Ecto.Changeset.cast/4 msgid "can't be blank" -msgstr "" +msgstr "空にすることはできません" ## From Ecto.Changeset.unique_constraint/3 msgid "has already been taken" -msgstr "" +msgstr "すでに使用されています" ## From Ecto.Changeset.put_change/3 msgid "is invalid" @@ -37,7 +37,7 @@ msgstr "" ## From Ecto.Changeset.validate_format/3 msgid "has invalid format" -msgstr "" +msgstr "書式が正しくありません" ## From Ecto.Changeset.validate_subset/3 msgid "has an invalid entry" @@ -45,7 +45,7 @@ msgstr "" ## From Ecto.Changeset.validate_exclusion/3 msgid "is reserved" -msgstr "" +msgstr "予約されています" ## From Ecto.Changeset.validate_confirmation/3 msgid "does not match confirmation" @@ -61,23 +61,23 @@ msgstr "" ## From Ecto.Changeset.validate_length/3 msgid "should be %{count} character(s)" msgid_plural "should be %{count} character(s)" -msgstr[0] "" +msgstr[0] "%{count}文字である必要があります" msgid "should have %{count} item(s)" msgid_plural "should have %{count} item(s)" -msgstr[0] "" +msgstr[0] "%{count}個の要素を含む必要があります" msgid "should be at least %{count} character(s)" msgid_plural "should be at least %{count} character(s)" -msgstr[0] "" +msgstr[0] "%{count}文字以上である必要があります" msgid "should have at least %{count} item(s)" msgid_plural "should have at least %{count} item(s)" -msgstr[0] "" +msgstr[0] "%{count}個以上の要素を含む必要があります" msgid "should be at most %{count} character(s)" msgid_plural "should be at most %{count} character(s)" -msgstr[0] "" +msgstr[0] "%{count}文字以下である必要があります" msgid "should have at most %{count} item(s)" msgid_plural "should have at most %{count} item(s)" @@ -102,7 +102,7 @@ msgstr "%{number}でなければなりません" #: lib/pleroma/web/common_api/common_api.ex:505 #, elixir-format msgid "Account not found" -msgstr "アカウントがありません" +msgstr "アカウントが見つかりません" #: lib/pleroma/web/common_api/common_api.ex:339 #, elixir-format @@ -226,7 +226,7 @@ msgstr "" #: lib/pleroma/web/common_api/utils.ex:414 #, elixir-format msgid "Invalid password." -msgstr "" +msgstr "パスワードが間違っています。" #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:220 #, elixir-format @@ -236,7 +236,7 @@ msgstr "" #: lib/pleroma/web/twitter_api/twitter_api.ex:109 #, elixir-format msgid "Kocaptcha service unavailable" -msgstr "" +msgstr "Kocaptchaが利用できません" #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:112 #, elixir-format @@ -259,12 +259,12 @@ msgstr "" #: lib/pleroma/web/feed/user_controller.ex:71 lib/pleroma/web/ostatus/ostatus_controller.ex:143 #, elixir-format msgid "Not found" -msgstr "" +msgstr "見つかりません" #: lib/pleroma/web/common_api/common_api.ex:331 #, elixir-format msgid "Poll's author can't vote" -msgstr "" +msgstr "作成者は投票できません" #: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:20 #: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:37 lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:49 @@ -284,17 +284,17 @@ msgstr "" #: lib/pleroma/web/common_api/activity_draft.ex:107 #, elixir-format msgid "The message visibility must be direct" -msgstr "" +msgstr "公開範囲は「ダイレクト」でなければいけません" #: lib/pleroma/web/common_api/utils.ex:573 #, elixir-format msgid "The status is over the character limit" -msgstr "" +msgstr "文字数制限を超過しています" #: lib/pleroma/plugs/ensure_public_or_authenticated_plug.ex:31 #, elixir-format msgid "This resource requires authentication." -msgstr "" +msgstr "認証が必要です。" #: lib/pleroma/plugs/rate_limiter/rate_limiter.ex:206 #, elixir-format @@ -304,7 +304,7 @@ msgstr "" #: lib/pleroma/web/common_api/common_api.ex:356 #, elixir-format msgid "Too many choices" -msgstr "" +msgstr "選択肢が多すぎます" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:443 #, elixir-format @@ -320,7 +320,7 @@ msgstr "" #: lib/pleroma/web/oauth/oauth_controller.ex:308 #, elixir-format msgid "Your account is currently disabled" -msgstr "" +msgstr "あなたのアカウントは無効化されています" #: lib/pleroma/web/oauth/oauth_controller.ex:183 #: lib/pleroma/web/oauth/oauth_controller.ex:331 @@ -331,23 +331,23 @@ msgstr "" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:390 #, elixir-format msgid "can't read inbox of %{nickname} as %{as_nickname}" -msgstr "" +msgstr "%{nickname}のinboxを%{as_nickname}として閲覧することはできません" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:473 #, elixir-format msgid "can't update outbox of %{nickname} as %{as_nickname}" -msgstr "" +msgstr "%{nickname}のoutboxを%{as_nickname}として更新することはできません" #: lib/pleroma/web/common_api/common_api.ex:471 #, elixir-format msgid "conversation is already muted" -msgstr "" +msgstr "この会話はミュート済みです" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:314 #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:492 #, elixir-format msgid "error" -msgstr "" +msgstr "エラー" #: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:32 #, elixir-format @@ -357,7 +357,7 @@ msgstr "" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:62 #, elixir-format msgid "not found" -msgstr "" +msgstr "見つかりません" #: lib/pleroma/web/oauth/oauth_controller.ex:394 #, elixir-format @@ -382,28 +382,28 @@ msgstr "" #: lib/pleroma/web/oauth/oauth_controller.ex:410 #, elixir-format msgid "Failed to authenticate: %{message}." -msgstr "" +msgstr "認証に失敗しました: %{message}。" #: lib/pleroma/web/oauth/oauth_controller.ex:441 #, elixir-format msgid "Failed to set up user account." -msgstr "" +msgstr "ユーザーアカウントの設定に失敗しました。" #: lib/pleroma/plugs/oauth_scopes_plug.ex:38 #, elixir-format msgid "Insufficient permissions: %{permissions}." -msgstr "" +msgstr "%{permissions}の権限が必要です。" #: lib/pleroma/plugs/uploaded_media.ex:104 #, elixir-format msgid "Internal Error" -msgstr "" +msgstr "内部エラー" #: lib/pleroma/web/oauth/fallback_controller.ex:22 #: lib/pleroma/web/oauth/fallback_controller.ex:29 #, elixir-format msgid "Invalid Username/Password" -msgstr "" +msgstr "ユーザー名/パスワードが間違っています" #: lib/pleroma/web/twitter_api/twitter_api.ex:118 #, elixir-format @@ -423,7 +423,7 @@ msgstr "" #: lib/pleroma/web/oauth/fallback_controller.ex:14 #, elixir-format msgid "Unknown error, please check the details and try again." -msgstr "" +msgstr "不明なエラーです。詳細を確認し、再度試行してください。" #: lib/pleroma/web/oauth/oauth_controller.ex:119 #: lib/pleroma/web/oauth/oauth_controller.ex:158 @@ -449,17 +449,17 @@ msgstr "" #: lib/pleroma/web/twitter_api/twitter_api.ex:103 #, elixir-format msgid "CAPTCHA Error" -msgstr "" +msgstr "CAPTCHAエラー" #: lib/pleroma/web/common_api/common_api.ex:290 #, elixir-format msgid "Could not add reaction emoji" -msgstr "" +msgstr "リアクションを追加できません" #: lib/pleroma/web/common_api/common_api.ex:301 #, elixir-format msgid "Could not remove reaction emoji" -msgstr "" +msgstr "リアクションを解除できません" #: lib/pleroma/web/twitter_api/twitter_api.ex:129 #, elixir-format @@ -469,7 +469,7 @@ msgstr "" #: lib/pleroma/web/mastodon_api/controllers/list_controller.ex:92 #, elixir-format msgid "List not found" -msgstr "" +msgstr "リストが見つかりません" #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:123 #, elixir-format @@ -480,7 +480,7 @@ msgstr "" #: lib/pleroma/web/oauth/oauth_controller.ex:321 #, elixir-format msgid "Password reset is required" -msgstr "" +msgstr "パスワードのリセットが必要です" #: lib/pleroma/tests/auth_test_controller.ex:9 #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:6 lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:6 @@ -522,7 +522,7 @@ msgstr "" #: lib/pleroma/plugs/ensure_authenticated_plug.ex:28 #, elixir-format msgid "Two-factor authentication enabled, you must use a access token." -msgstr "" +msgstr "二段階認証が有効になっています。アクセストークンが必要です。" #: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:210 #, elixir-format @@ -552,7 +552,7 @@ msgstr "" #: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:61 #, elixir-format msgid "Web push subscription is disabled on this Pleroma instance" -msgstr "" +msgstr "このPleromaインスタンスではプッシュ通知が利用できません" #: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:451 #, elixir-format @@ -562,19 +562,19 @@ msgstr "" #: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:126 #, elixir-format msgid "authorization required for timeline view" -msgstr "" +msgstr "タイムラインを閲覧するには認証が必要です" #: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:24 #, elixir-format msgid "Access denied" -msgstr "" +msgstr "アクセスが拒否されました" #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:282 #, elixir-format msgid "This API requires an authenticated user" -msgstr "" +msgstr "このAPIを利用するには認証が必要です" #: lib/pleroma/plugs/user_is_admin_plug.ex:21 #, elixir-format msgid "User is not an admin." -msgstr "" +msgstr "ユーザーは管理者ではありません。" diff --git a/priv/gettext/oauth_scopes.pot b/priv/gettext/oauth_scopes.pot @@ -0,0 +1,221 @@ +## This file is a PO Template file. +## +## "msgid"s here are often extracted from source code. +## Add new translations manually only if they're dynamic +## translations that can't be statically extracted. +## +## Run "mix gettext.extract" to bring this file up to +## date. Leave "msgstr"s empty as changing them here has no +## effect: edit them in PO (.po) files instead. +msgid "" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:read" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:write" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "follow" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read:accounts" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read:blocks" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read:bookmarks" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read:favourites" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read:filters" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read:follows" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read:lists" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read:notifications" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read:search" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read:statuses" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:accounts" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:blocks" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:bookmarks" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:conversations" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:favourites" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:filters" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:follows" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:lists" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:media" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:mutes" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:notifications" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "write:statuses" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:read:accounts" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:read:chats" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:read:invites" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:read:media_proxy_caches" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:read:reports" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:read:statuses" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:write:accounts" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:write:chats" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:write:follows" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:write:invites" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:write:media_proxy_caches" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:write:reports" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "admin:write:statuses" +msgstr "" + +#: lib/pleroma/web/api_spec/scopes/translator.ex:5 +#, elixir-autogen, elixir-format +msgid "read:mutes" +msgstr "" diff --git a/priv/gettext/ru/LC_MESSAGES/errors.po b/priv/gettext/ru/LC_MESSAGES/errors.po @@ -9,7 +9,6 @@ msgid "" msgstr "" "Language: ru\n" -"Plural-Forms: nplurals=3\n" msgid "can't be blank" msgstr "не может быть пустым" diff --git a/priv/gettext/static_pages.pot b/priv/gettext/static_pages.pot @@ -10,553 +10,553 @@ msgid "" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:9 +#, elixir-autogen, elixir-format msgctxt "remote follow authorization button" msgid "Authorize" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:2 +#, elixir-autogen, elixir-format msgctxt "remote follow error" msgid "Error fetching user" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:4 +#, elixir-autogen, elixir-format msgctxt "remote follow header" msgid "Remote follow" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:8 +#, elixir-autogen, elixir-format msgctxt "placeholder text for auth code entry" msgid "Authentication code" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:10 +#, elixir-autogen, elixir-format msgctxt "placeholder text for password entry" msgid "Password" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:8 +#, elixir-autogen, elixir-format msgctxt "placeholder text for username entry" msgid "Username" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:13 +#, elixir-autogen, elixir-format msgctxt "remote follow authorization button for login" msgid "Authorize" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:12 +#, elixir-autogen, elixir-format msgctxt "remote follow authorization button for mfa" msgid "Authorize" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/followed.html.eex:2 +#, elixir-autogen, elixir-format msgctxt "remote follow error" msgid "Error following account" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/follow_login.html.eex:4 +#, elixir-autogen, elixir-format msgctxt "remote follow header, need login" msgid "Log in to follow" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/follow_mfa.html.eex:4 +#, elixir-autogen, elixir-format msgctxt "remote follow mfa header" msgid "Two-factor authentication" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/remote_follow/followed.html.eex:4 +#, elixir-autogen, elixir-format msgctxt "remote follow success" msgid "Account followed!" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/util/status_interact.html.eex:7 #: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:7 +#, elixir-autogen, elixir-format msgctxt "placeholder text for account id" msgid "Your account ID, e.g. lain@quitter.se" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:8 +#, elixir-autogen, elixir-format msgctxt "remote follow authorization button for following with a remote account" msgid "Follow" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:2 +#, elixir-autogen, elixir-format msgctxt "remote follow error" msgid "Error: %{error}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/util/subscribe.html.eex:4 +#, elixir-autogen, elixir-format msgctxt "remote follow header" msgid "Remotely follow %{nickname}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:12 +#, elixir-autogen, elixir-format msgctxt "password reset button" msgid "Reset" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/password/reset_failed.html.eex:4 +#, elixir-autogen, elixir-format msgctxt "password reset failed homepage link" msgid "Homepage" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/password/reset_failed.html.eex:1 +#, elixir-autogen, elixir-format msgctxt "password reset failed message" msgid "Password reset failed" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:8 +#, elixir-autogen, elixir-format msgctxt "password reset form confirm password prompt" msgid "Confirmation" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/password/reset.html.eex:4 +#, elixir-autogen, elixir-format msgctxt "password reset form password prompt" msgid "Password" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/password/invalid_token.html.eex:1 +#, elixir-autogen, elixir-format msgctxt "password reset invalid token message" msgid "Invalid Token" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/password/reset_success.html.eex:2 +#, elixir-autogen, elixir-format msgctxt "password reset successful homepage link" msgid "Homepage" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/password/reset_success.html.eex:1 +#, elixir-autogen, elixir-format msgctxt "password reset successful message" msgid "Password changed!" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/feed/feed/tag.atom.eex:12 #: lib/pleroma/web/templates/feed/feed/tag.rss.eex:8 +#, elixir-autogen, elixir-format msgctxt "tag feed description" msgid "These are public toots tagged with #%{tag}. You can interact with them if you have an account anywhere in the fediverse." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex:1 +#, elixir-autogen, elixir-format msgctxt "oauth authorization exists page title" msgid "Authorization exists" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:32 +#, elixir-autogen, elixir-format msgctxt "oauth authorize approve button" msgid "Approve" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:30 +#, elixir-autogen, elixir-format msgctxt "oauth authorize cancel button" msgid "Cancel" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:23 +#, elixir-autogen, elixir-format msgctxt "oauth authorize message" msgid "Application <strong>%{client_name}</strong> is requesting access to your account." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex:1 +#, elixir-autogen, elixir-format msgctxt "oauth authorized page title" msgid "Successfully authorized" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex:1 +#, elixir-autogen, elixir-format msgctxt "oauth external provider page title" msgid "Sign in with external provider" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/consumer.html.eex:13 +#, elixir-autogen, elixir-format msgctxt "oauth external provider sign in button" msgid "Sign in with %{strategy}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:54 +#, elixir-autogen, elixir-format msgctxt "oauth login button" msgid "Log In" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:51 +#, elixir-autogen, elixir-format msgctxt "oauth login password prompt" msgid "Password" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:47 +#, elixir-autogen, elixir-format msgctxt "oauth login username prompt" msgid "Username" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:39 +#, elixir-autogen, elixir-format msgctxt "oauth register nickname prompt" msgid "Pleroma Handle" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:37 +#, elixir-autogen, elixir-format msgctxt "oauth register nickname unchangeable warning" msgid "Choose carefully! You won't be able to change this later. You will be able to change your display name, though." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:18 +#, elixir-autogen, elixir-format msgctxt "oauth register page email prompt" msgid "Email" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:10 +#, elixir-autogen, elixir-format msgctxt "oauth register page fill form prompt" msgid "If you'd like to register a new account, please provide the details below." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:35 +#, elixir-autogen, elixir-format msgctxt "oauth register page login button" msgid "Proceed as existing user" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:31 +#, elixir-autogen, elixir-format msgctxt "oauth register page login password prompt" msgid "Password" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:24 +#, elixir-autogen, elixir-format msgctxt "oauth register page login prompt" msgid "Alternatively, sign in to connect to existing account." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:27 +#, elixir-autogen, elixir-format msgctxt "oauth register page login username prompt" msgid "Name or email" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:14 +#, elixir-autogen, elixir-format msgctxt "oauth register page nickname prompt" msgid "Nickname" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:22 +#, elixir-autogen, elixir-format msgctxt "oauth register page register button" msgid "Proceed as new user" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/register.html.eex:8 +#, elixir-autogen, elixir-format msgctxt "oauth register page title" msgid "Registration Details" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/show.html.eex:36 +#, elixir-autogen, elixir-format msgctxt "oauth register page title" msgid "This is the first time you visit! Please enter your Pleroma handle." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/_scopes.html.eex:2 +#, elixir-autogen, elixir-format msgctxt "oauth scopes message" msgid "The following permissions will be granted" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex:2 #: lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex:2 +#, elixir-autogen, elixir-format msgctxt "oauth token code message" msgid "Token code is <br>%{token}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:12 +#, elixir-autogen, elixir-format msgctxt "mfa auth code prompt" msgid "Authentication code" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:8 +#, elixir-autogen, elixir-format msgctxt "mfa auth page title" msgid "Two-factor authentication" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:23 +#, elixir-autogen, elixir-format msgctxt "mfa auth page use recovery code link" msgid "Enter a two-factor recovery code" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/mfa/totp.html.eex:20 +#, elixir-autogen, elixir-format msgctxt "mfa auth verify code button" msgid "Verify" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:8 +#, elixir-autogen, elixir-format msgctxt "mfa recover page title" msgid "Two-factor recovery" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:12 +#, elixir-autogen, elixir-format msgctxt "mfa recover recovery code prompt" msgid "Recovery code" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:23 +#, elixir-autogen, elixir-format msgctxt "mfa recover use 2fa code link" msgid "Enter a two-factor code" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/o_auth/mfa/recovery.html.eex:20 +#, elixir-autogen, elixir-format msgctxt "mfa recover verify recovery code button" msgid "Verify" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/static_fe/static_fe/profile.html.eex:8 +#, elixir-autogen, elixir-format msgctxt "static fe profile page remote follow button" msgid "Remote follow" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/email/digest.html.eex:163 +#, elixir-autogen, elixir-format msgctxt "digest email header line" msgid "Hey %{nickname}, here is what you've missed!" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/email/digest.html.eex:544 +#, elixir-autogen, elixir-format msgctxt "digest email receiver address" msgid "The email address you are subscribed as is <a href='mailto:%{@user.email}' style='color: %{color};text-decoration: none;'>%{email}</a>. " msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/email/digest.html.eex:538 +#, elixir-autogen, elixir-format msgctxt "digest email sending reason" msgid "You have received this email because you have signed up to receive digest emails from <b>%{instance}</b> Pleroma instance." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/email/digest.html.eex:547 +#, elixir-autogen, elixir-format msgctxt "digest email unsubscribe action" msgid "To unsubscribe, please go %{here}." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/email/digest.html.eex:547 +#, elixir-autogen, elixir-format msgctxt "digest email unsubscribe action link text" msgid "here" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/mailer/subscription/unsubscribe_failure.html.eex:1 +#, elixir-autogen, elixir-format msgctxt "mailer unsubscribe failed message" msgid "UNSUBSCRIBE FAILURE" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/mailer/subscription/unsubscribe_success.html.eex:1 +#, elixir-autogen, elixir-format msgctxt "mailer unsubscribe successful message" msgid "UNSUBSCRIBE SUCCESSFUL" msgstr "" -#, elixir-format #: lib/pleroma/web/templates/email/digest.html.eex:385 +#, elixir-format msgctxt "new followers count header" msgid "%{count} New Follower" msgid_plural "%{count} New Followers" msgstr[0] "" msgstr[1] "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:356 +#, elixir-autogen, elixir-format msgctxt "account archive email body - self-requested" msgid "<p>You requested a full backup of your Pleroma account. It's ready for download:</p>\n<p><a href=\"%{download_url}\">%{download_url}</a></p>\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:384 +#, elixir-autogen, elixir-format msgctxt "account archive email subject" msgid "Your account archive is ready" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:188 +#, elixir-autogen, elixir-format msgctxt "approval pending email body" msgid "<h3>Awaiting Approval</h3>\n<p>Your account at %{instance_name} is being reviewed by staff. You will receive another email once your account is approved.</p>\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:202 +#, elixir-autogen, elixir-format msgctxt "approval pending email subject" msgid "Your account is awaiting approval" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:158 +#, elixir-autogen, elixir-format msgctxt "confirmation email body" msgid "<h3>Thank you for registering on %{instance_name}</h3>\n<p>Email confirmation is required to activate the account.</p>\n<p>Please click the following link to <a href=\"%{confirmation_url}\">activate your account</a>.</p>\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:174 +#, elixir-autogen, elixir-format msgctxt "confirmation email subject" msgid "%{instance_name} account confirmation" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:310 +#, elixir-autogen, elixir-format msgctxt "digest email subject" msgid "Your digest from %{instance_name}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:81 +#, elixir-autogen, elixir-format msgctxt "password reset email body" msgid "<h3>Reset your password at %{instance_name}</h3>\n<p>Someone has requested password change for your account at %{instance_name}.</p>\n<p>If it was you, visit the following link to proceed: <a href=\"%{password_reset_url}\">reset password</a>.</p>\n<p>If it was someone else, nothing to worry about: your data is secure and your password has not been changed.</p>\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:98 +#, elixir-autogen, elixir-format msgctxt "password reset email subject" msgid "Password reset" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:215 +#, elixir-autogen, elixir-format msgctxt "successful registration email body" msgid "<h3>Hello @%{nickname},</h3>\n<p>Your account at %{instance_name} has been registered successfully.</p>\n<p>No further action is required to activate your account.</p>\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:231 +#, elixir-autogen, elixir-format msgctxt "successful registration email subject" msgid "Account registered on %{instance_name}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:119 +#, elixir-autogen, elixir-format msgctxt "user invitation email body" msgid "<h3>You are invited to %{instance_name}</h3>\n<p>%{inviter_name} invites you to join %{instance_name}, an instance of Pleroma federated social networking platform.</p>\n<p>Click the following link to register: <a href=\"%{registration_url}\">accept invitation</a>.</p>\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:136 +#, elixir-autogen, elixir-format msgctxt "user invitation email subject" msgid "Invitation to %{instance_name}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:53 +#, elixir-autogen, elixir-format msgctxt "welcome email html body" msgid "Welcome to %{instance_name}!" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:41 +#, elixir-autogen, elixir-format msgctxt "welcome email subject" msgid "Welcome to %{instance_name}!" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:65 +#, elixir-autogen, elixir-format msgctxt "welcome email text body" msgid "Welcome to %{instance_name}!" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/emails/user_email.ex:368 +#, elixir-autogen, elixir-format msgctxt "account archive email body - admin requested" msgid "<p>Admin @%{admin_nickname} requested a full backup of your Pleroma account. It's ready for download:</p>\n<p><a href=\"%{download_url}\">%{download_url}</a></p>\n" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/twitter_api/controllers/util_controller.ex:123 +#, elixir-autogen, elixir-format msgctxt "remote follow error message - unknown error" msgid "Something went wrong." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/twitter_api/controllers/util_controller.ex:67 +#, elixir-autogen, elixir-format msgctxt "remote follow error message - user not found" msgid "Could not find user" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/util/status_interact.html.eex:8 +#, elixir-autogen, elixir-format msgctxt "status interact authorization button" msgid "Interact" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/util/status_interact.html.eex:2 +#, elixir-autogen, elixir-format msgctxt "status interact error" msgid "Error: %{error}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/twitter_api/controllers/util_controller.ex:95 +#, elixir-autogen, elixir-format msgctxt "status interact error message - status not found" msgid "Could not find status" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/twitter_api/controllers/util_controller.ex:144 +#, elixir-autogen, elixir-format msgctxt "status interact error message - unknown error" msgid "Something went wrong." msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/util/status_interact.html.eex:4 +#, elixir-autogen, elixir-format msgctxt "status interact header" msgid "Interacting with %{nickname}'s %{status_link}" msgstr "" -#, elixir-autogen, elixir-format #: lib/pleroma/web/templates/twitter_api/util/status_interact.html.eex:4 +#, elixir-autogen, elixir-format msgctxt "status interact header - status link text" msgid "status" msgstr "" diff --git a/priv/gettext/zh_Hans/LC_MESSAGES/static_pages.po b/priv/gettext/zh_Hans/LC_MESSAGES/static_pages.po @@ -24,10 +24,6 @@ msgstr "" ## ## Use "mix gettext.extract --merge" or "mix gettext.merge" ## to merge POT files into PO files. -#~ msgid "" -#~ msgstr "" -#~ "Language: zh_Hans\n" -#~ "Plural-Forms: nplurals=1\n" #: lib/pleroma/web/templates/twitter_api/remote_follow/follow.html.eex:9 #, elixir-format diff --git a/priv/repo/migrations/20180516144508_add_trigram_extension.exs b/priv/repo/migrations/20180516144508_add_trigram_extension.exs @@ -7,13 +7,13 @@ defmodule Pleroma.Repo.Migrations.AddTrigramExtension do require Logger def up do - Logger.warn("ATTENTION ATTENTION ATTENTION\n") + Logger.warning("ATTENTION ATTENTION ATTENTION\n") - Logger.warn( + Logger.warning( "This will try to create the pg_trgm extension on your database. If your database user does NOT have the necessary rights, you will have to do it manually and re-run the migrations.\nYou can probably do this by running the following:\n" ) - Logger.warn( + Logger.warning( "sudo -u postgres psql pleroma_dev -c \"create extension if not exists pg_trgm\"\n" ) diff --git a/priv/repo/migrations/20190710125158_add_following_address_from_source_data.exs b/priv/repo/migrations/20190710125158_add_following_address_from_source_data.exs @@ -26,7 +26,7 @@ defmodule Pleroma.Repo.Migrations.AddFollowingAddressFromSourceData do |> Pleroma.Repo.update() user -> - Logger.warn("User #{user.id} / #{user.nickname} does not seem to have source_data") + Logger.warning("User #{user.id} / #{user.nickname} does not seem to have source_data") end) end end diff --git a/priv/repo/migrations/20191118084500_data_migration_populate_user_relationships.exs b/priv/repo/migrations/20191118084500_data_migration_populate_user_relationships.exs @@ -63,7 +63,7 @@ defmodule Pleroma.Repo.Migrations.DataMigrationPopulateUserRelationships do ON CONFLICT (source_id, relationship_type, target_id) DO NOTHING """) else - _ -> Logger.warn("Unresolved #{field} reference: (#{source_uuid}, #{target_id})") + _ -> Logger.warning("Unresolved #{field} reference: (#{source_uuid}, #{target_id})") end end end diff --git a/priv/repo/migrations/20200811143147_ap_id_not_null.exs b/priv/repo/migrations/20200811143147_ap_id_not_null.exs @@ -8,7 +8,7 @@ defmodule Pleroma.Repo.Migrations.ApIdNotNull do require Logger def up do - Logger.warn( + Logger.warning( "If this migration fails please open an issue at https://git.pleroma.social/pleroma/pleroma/-/issues/new \n" ) diff --git a/priv/repo/migrations/20220203224011_create_rules.exs b/priv/repo/migrations/20220203224011_create_rules.exs @@ -0,0 +1,12 @@ +defmodule Pleroma.Repo.Migrations.CreateRules do + use Ecto.Migration + + def change do + create_if_not_exists table(:rules) do + add(:priority, :integer, default: 0, null: false) + add(:text, :text, null: false) + + timestamps() + end + end +end diff --git a/priv/repo/migrations/20220319000000_add_status_to_notifications_enum.exs b/priv/repo/migrations/20220319000000_add_status_to_notifications_enum.exs @@ -0,0 +1,51 @@ +defmodule Pleroma.Repo.Migrations.AddStatusToNotificationsEnum do + use Ecto.Migration + + @disable_ddl_transaction true + + def up do + """ + alter type notification_type add value 'status' + """ + |> execute() + end + + def down do + alter table(:notifications) do + modify(:type, :string) + end + + """ + delete from notifications where type = 'status' + """ + |> execute() + + """ + drop type if exists notification_type + """ + |> execute() + + """ + create type notification_type as enum ( + 'follow', + 'follow_request', + 'mention', + 'move', + 'pleroma:emoji_reaction', + 'pleroma:chat_mention', + 'reblog', + 'favourite', + 'pleroma:report', + 'poll', + 'update' + ) + """ + |> execute() + + """ + alter table notifications + alter column type type notification_type using (type::notification_type) + """ + |> execute() + end +end diff --git a/priv/repo/migrations/20220527134341_add_quote_url_index_to_objects.exs b/priv/repo/migrations/20220527134341_add_quote_url_index_to_objects.exs @@ -0,0 +1,17 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.AddQuoteUrlIndexToObjects do + use Ecto.Migration + @disable_ddl_transaction true + + def change do + create_if_not_exists( + index(:objects, ["(data->'quoteUrl')"], + name: :objects_quote_url, + concurrently: true + ) + ) + end +end diff --git a/priv/repo/migrations/20220905011454_generate_unset_user_keys.exs b/priv/repo/migrations/20220905011454_generate_unset_user_keys.exs @@ -2,12 +2,20 @@ # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> # SPDX-License-Identifier: AGPL-3.0-only +defmodule User do + use Ecto.Schema + + schema "users" do + field(:keys, :string) + field(:local, :boolean, default: true) + end +end + defmodule Pleroma.Repo.Migrations.GenerateUnsetUserKeys do use Ecto.Migration import Ecto.Query alias Pleroma.Keys alias Pleroma.Repo - alias Pleroma.User def change do query = diff --git a/priv/repo/migrations/20221216052127_add_state_to_backups.exs b/priv/repo/migrations/20221216052127_add_state_to_backups.exs @@ -0,0 +1,21 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.AddStateToBackups do + use Ecto.Migration + + def up do + alter table(:backups) do + add(:state, :integer, default: 5) + add(:processed_number, :integer, default: 0) + end + end + + def down do + alter table(:backups) do + remove(:state) + remove(:processed_number) + end + end +end diff --git a/priv/repo/migrations/20230306112859_instances_add_metadata.exs b/priv/repo/migrations/20230306112859_instances_add_metadata.exs @@ -0,0 +1,14 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.InstancesAddMetadata do + use Ecto.Migration + + def change do + alter table(:instances) do + add(:metadata, :map) + add(:metadata_updated_at, :utc_datetime) + end + end +end diff --git a/priv/repo/migrations/20230422154018_drop_unused_indexes.exs b/priv/repo/migrations/20230422154018_drop_unused_indexes.exs @@ -0,0 +1,73 @@ +defmodule Pleroma.Repo.Migrations.DropUnusedIndexes do + use Ecto.Migration + + @disable_ddl_transaction true + @disable_migration_lock true + + def up do + drop_if_exists( + index(:activities, ["(data->>'actor')", "inserted_at desc"], name: :activities_actor_index) + ) + + drop_if_exists(index(:activities, ["(data->'to')"], name: :activities_to_index)) + + drop_if_exists(index(:activities, ["(data->'cc')"], name: :activities_cc_index)) + + drop_if_exists(index(:activities, ["(split_part(actor, '/', 3))"], name: :activities_hosts)) + + drop_if_exists( + index(:activities, ["(data->'object'->>'inReplyTo')"], name: :activities_in_reply_to) + ) + + drop_if_exists( + index(:activities, ["((data #> '{\"object\",\"likes\"}'))"], name: :activities_likes) + ) + end + + def down do + create_if_not_exists( + index(:activities, ["(data->>'actor')", "inserted_at desc"], + name: :activities_actor_index, + concurrently: true + ) + ) + + create_if_not_exists( + index(:activities, ["(data->'to')"], + name: :activities_to_index, + using: :gin, + concurrently: true + ) + ) + + create_if_not_exists( + index(:activities, ["(data->'cc')"], + name: :activities_cc_index, + using: :gin, + concurrently: true + ) + ) + + create_if_not_exists( + index(:activities, ["(split_part(actor, '/', 3))"], + name: :activities_hosts, + concurrently: true + ) + ) + + create_if_not_exists( + index(:activities, ["(data->'object'->>'inReplyTo')"], + name: :activities_in_reply_to, + concurrently: true + ) + ) + + create_if_not_exists( + index(:activities, ["((data #> '{\"object\",\"likes\"}'))"], + name: :activities_likes, + using: :gin, + concurrently: true + ) + ) + end +end diff --git a/priv/repo/migrations/20230504173400_remove_user_ap_enabled.exs b/priv/repo/migrations/20230504173400_remove_user_ap_enabled.exs @@ -0,0 +1,13 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.RemoveUserApEnabled do + use Ecto.Migration + + def change do + alter table(:users) do + remove(:ap_enabled, :boolean, default: false, null: false) + end + end +end diff --git a/priv/repo/migrations/20231107200724_consolidate_email_queues.exs b/priv/repo/migrations/20231107200724_consolidate_email_queues.exs @@ -0,0 +1,9 @@ +defmodule Pleroma.Repo.Migrations.ConsolidateEmailQueues do + use Ecto.Migration + + def change do + execute( + "UPDATE oban_jobs SET queue = 'mailer' WHERE queue in ('digest_emails', 'new_users_digest')" + ) + end +end diff --git a/priv/repo/migrations/20240207035927_create_rich_media_card.exs b/priv/repo/migrations/20240207035927_create_rich_media_card.exs @@ -0,0 +1,14 @@ +defmodule Pleroma.Repo.Migrations.CreateRichMediaCard do + use Ecto.Migration + + def change do + create table(:rich_media_card) do + add(:url_hash, :bytea) + add(:fields, :map) + + timestamps() + end + + create(unique_index(:rich_media_card, [:url_hash])) + end +end diff --git a/priv/repo/migrations/20240223165000_create_bookmark_folders.exs b/priv/repo/migrations/20240223165000_create_bookmark_folders.exs @@ -0,0 +1,27 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.CreateBookmarkFolders do + use Ecto.Migration + + def change do + create_if_not_exists table(:bookmark_folders, primary_key: false) do + add(:id, :uuid, primary_key: true) + add(:name, :string, null: false) + add(:emoji, :string) + add(:user_id, references(:users, type: :uuid, on_delete: :delete_all)) + + timestamps() + end + + alter table(:bookmarks) do + add_if_not_exists( + :folder_id, + references(:bookmark_folders, type: :uuid, on_delete: :nilify_all) + ) + end + + create_if_not_exists(unique_index(:bookmark_folders, [:user_id, :name])) + end +end diff --git a/priv/repo/migrations/20240406000000_add_hint_to_rules.exs b/priv/repo/migrations/20240406000000_add_hint_to_rules.exs @@ -0,0 +1,13 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Repo.Migrations.AddHintToRules do + use Ecto.Migration + + def change do + alter table(:rules) do + add_if_not_exists(:hint, :text) + end + end +end diff --git a/priv/scrubbers/default.ex b/priv/scrubbers/default.ex @@ -33,35 +33,56 @@ defmodule Pleroma.HTML.Scrubber.Default do "ugc" ]) - Meta.allow_tag_with_these_attributes(:a, ["name", "title"]) - - Meta.allow_tag_with_these_attributes(:abbr, ["title"]) - - Meta.allow_tag_with_these_attributes(:b, []) - Meta.allow_tag_with_these_attributes(:blockquote, []) - Meta.allow_tag_with_these_attributes(:br, []) - Meta.allow_tag_with_these_attributes(:code, []) - Meta.allow_tag_with_these_attributes(:del, []) - Meta.allow_tag_with_these_attributes(:em, []) - Meta.allow_tag_with_these_attributes(:hr, []) - Meta.allow_tag_with_these_attributes(:i, []) - Meta.allow_tag_with_these_attributes(:li, []) - Meta.allow_tag_with_these_attributes(:ol, []) - Meta.allow_tag_with_these_attributes(:p, []) - Meta.allow_tag_with_these_attributes(:pre, []) - Meta.allow_tag_with_these_attributes(:strong, []) - Meta.allow_tag_with_these_attributes(:sub, []) - Meta.allow_tag_with_these_attributes(:sup, []) - Meta.allow_tag_with_these_attributes(:ruby, []) - Meta.allow_tag_with_these_attributes(:rb, []) - Meta.allow_tag_with_these_attributes(:rp, []) - Meta.allow_tag_with_these_attributes(:rt, []) - Meta.allow_tag_with_these_attributes(:rtc, []) - Meta.allow_tag_with_these_attributes(:u, []) - Meta.allow_tag_with_these_attributes(:ul, []) - - Meta.allow_tag_with_this_attribute_values(:span, "class", ["h-card", "recipients-inline"]) - Meta.allow_tag_with_these_attributes(:span, []) + Meta.allow_tag_with_these_attributes(:a, ["name", "title", "lang"]) + + Meta.allow_tag_with_these_attributes(:abbr, ["title", "lang"]) + Meta.allow_tag_with_these_attributes(:acronym, ["title", "lang"]) + + # sort(1)-ed list + Meta.allow_tag_with_these_attributes(:bdi, []) + Meta.allow_tag_with_these_attributes(:bdo, ["dir"]) + Meta.allow_tag_with_these_attributes(:big, ["lang"]) + Meta.allow_tag_with_these_attributes(:b, ["lang"]) + Meta.allow_tag_with_these_attributes(:blockquote, ["lang"]) + Meta.allow_tag_with_these_attributes(:br, ["lang"]) + Meta.allow_tag_with_these_attributes(:cite, ["lang"]) + Meta.allow_tag_with_these_attributes(:code, ["lang"]) + Meta.allow_tag_with_these_attributes(:del, ["lang"]) + Meta.allow_tag_with_these_attributes(:dfn, ["lang"]) + Meta.allow_tag_with_these_attributes(:em, ["lang"]) + Meta.allow_tag_with_these_attributes(:hr, ["lang"]) + Meta.allow_tag_with_these_attributes(:i, ["lang"]) + Meta.allow_tag_with_these_attributes(:ins, ["lang"]) + Meta.allow_tag_with_these_attributes(:kbd, ["lang"]) + Meta.allow_tag_with_these_attributes(:li, ["lang"]) + Meta.allow_tag_with_these_attributes(:ol, ["lang"]) + Meta.allow_tag_with_these_attributes(:p, ["lang"]) + Meta.allow_tag_with_these_attributes(:pre, ["lang"]) + Meta.allow_tag_with_these_attributes(:q, ["lang"]) + Meta.allow_tag_with_these_attributes(:rb, ["lang"]) + Meta.allow_tag_with_these_attributes(:rp, ["lang"]) + Meta.allow_tag_with_these_attributes(:rtc, ["lang"]) + Meta.allow_tag_with_these_attributes(:rt, ["lang"]) + Meta.allow_tag_with_these_attributes(:ruby, ["lang"]) + Meta.allow_tag_with_these_attributes(:samp, ["lang"]) + Meta.allow_tag_with_these_attributes(:s, ["lang"]) + Meta.allow_tag_with_these_attributes(:small, ["lang"]) + Meta.allow_tag_with_these_attributes(:strong, ["lang"]) + Meta.allow_tag_with_these_attributes(:sub, ["lang"]) + Meta.allow_tag_with_these_attributes(:sup, ["lang"]) + Meta.allow_tag_with_these_attributes(:tt, ["lang"]) + Meta.allow_tag_with_these_attributes(:u, ["lang"]) + Meta.allow_tag_with_these_attributes(:ul, ["lang"]) + Meta.allow_tag_with_these_attributes(:var, ["lang"]) + Meta.allow_tag_with_these_attributes(:wbr, ["lang"]) + + Meta.allow_tag_with_this_attribute_values(:span, "class", [ + "h-card", + "recipients-inline", + "quote-inline" + ]) + + Meta.allow_tag_with_these_attributes(:span, ["lang"]) Meta.allow_tag_with_this_attribute_values(:code, "class", ["inline"]) @@ -77,29 +98,30 @@ defmodule Pleroma.HTML.Scrubber.Default do "width", "height", "title", - "alt" + "alt", + "lang" ]) end if Pleroma.Config.get([:markup, :allow_tables]) do - Meta.allow_tag_with_these_attributes(:table, []) - Meta.allow_tag_with_these_attributes(:tbody, []) - Meta.allow_tag_with_these_attributes(:td, []) - Meta.allow_tag_with_these_attributes(:th, []) - Meta.allow_tag_with_these_attributes(:thead, []) - Meta.allow_tag_with_these_attributes(:tr, []) + Meta.allow_tag_with_these_attributes(:table, ["lang"]) + Meta.allow_tag_with_these_attributes(:tbody, ["lang"]) + Meta.allow_tag_with_these_attributes(:td, ["lang"]) + Meta.allow_tag_with_these_attributes(:th, ["lang"]) + Meta.allow_tag_with_these_attributes(:thead, ["lang"]) + Meta.allow_tag_with_these_attributes(:tr, ["lang"]) end if Pleroma.Config.get([:markup, :allow_headings]) do - Meta.allow_tag_with_these_attributes(:h1, []) - Meta.allow_tag_with_these_attributes(:h2, []) - Meta.allow_tag_with_these_attributes(:h3, []) - Meta.allow_tag_with_these_attributes(:h4, []) - Meta.allow_tag_with_these_attributes(:h5, []) + Meta.allow_tag_with_these_attributes(:h1, ["lang"]) + Meta.allow_tag_with_these_attributes(:h2, ["lang"]) + Meta.allow_tag_with_these_attributes(:h3, ["lang"]) + Meta.allow_tag_with_these_attributes(:h4, ["lang"]) + Meta.allow_tag_with_these_attributes(:h5, ["lang"]) end if Pleroma.Config.get([:markup, :allow_fonts]) do - Meta.allow_tag_with_these_attributes(:font, ["face"]) + Meta.allow_tag_with_these_attributes(:font, ["face", "lang"]) end Meta.strip_everything_not_covered() diff --git a/priv/scrubbers/search_indexing.ex b/priv/scrubbers/search_indexing.ex @@ -0,0 +1,24 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.HTML.Scrubber.SearchIndexing do + @moduledoc """ + An HTML scrubbing policy that scrubs things for searching. + """ + + require FastSanitize.Sanitizer.Meta + alias FastSanitize.Sanitizer.Meta + + # Explicitly remove mentions + def scrub({:a, attrs, children}) do + if(Enum.any?(attrs, fn {att, val} -> att == "class" and String.contains?(val, "mention") end), + do: nil, + # Strip the tag itself, leave only children (text, presumably) + else: children + ) + end + + Meta.strip_comments() + Meta.strip_everything_not_covered() +end diff --git a/priv/static/index.html b/priv/static/index.html @@ -1 +1 @@ -<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=no"><!--server-generated-meta--><link rel=icon type=image/png href=/favicon.png><script defer=defer src=/static/js/2724.e4840c73281069ba54ab.js></script><script defer=defer src=/static/js/app.8d2126d35dba9482db51.js></script><link href=/static/css/app.48e52505beba5b9ab69b.css rel=stylesheet></head><body class=hidden><noscript>To use Pleroma, please enable JavaScript.</noscript><div id=app></div><div id=modal></div><div id=popovers></body></html> -\ No newline at end of file +<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,user-scalable=no"><link rel=icon type=image/png href=/favicon.png><!--server-generated-meta--><script defer=defer src=/static/js/3733.7060d1e6bca813125a0c.js></script><script defer=defer src=/static/js/app.d42ab31e1d50a3265a82.js></script><link href=/static/css/app.a7f63ee9107a77599942.css rel=stylesheet></head><body class=hidden><noscript>To use Pleroma, please enable JavaScript.</noscript><div id=app></div><div id=modal></div><div id=popovers></body></html> +\ No newline at end of file diff --git a/priv/static/schemas/litepub-0.1.jsonld b/priv/static/schemas/litepub-0.1.jsonld @@ -2,6 +2,7 @@ "@context": [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", + "https://purl.archive.org/socialweb/webfinger", { "Emoji": "toot:Emoji", "Hashtag": "as:Hashtag", @@ -17,6 +18,7 @@ "ostatus": "http://ostatus.org#", "schema": "http://schema.org#", "toot": "http://joinmastodon.org/ns#", + "fedibird": "http://fedibird.com/ns#", "value": "schema:value", "sensitive": "as:sensitive", "litepub": "http://litepub.social/ns#", @@ -26,6 +28,8 @@ "@id": "litepub:listMessage", "@type": "@id" }, + "quoteUrl": "as:quoteUrl", + "quoteUri": "fedibird:quoteUri", "oauthRegistrationEndpoint": { "@id": "litepub:oauthRegistrationEndpoint", "@type": "@id" @@ -37,7 +41,9 @@ "@type": "@id" }, "vcard": "http://www.w3.org/2006/vcard/ns#", - "formerRepresentations": "litepub:formerRepresentations" + "formerRepresentations": "litepub:formerRepresentations", + "sm": "http://smithereen.software/ns#", + "nonAnonymous": "sm:nonAnonymous" } ] } diff --git a/priv/static/static/css/5948.06d2a0d84620cba6a4fb.css b/priv/static/static/css/5948.06d2a0d84620cba6a4fb.css @@ -1,2 +0,0 @@ -.async-component-error{align-items:center;display:flex;height:100%;justify-content:center}.async-component-error .btn{margin:.5em;padding:.5em 2em}.settings-modal{overflow:hidden}.settings-modal .option-list,.settings-modal .setting-list{list-style-type:none;padding-left:2em}.settings-modal .option-list li,.settings-modal .setting-list li{margin-bottom:.5em}.settings-modal .option-list .suboptions,.settings-modal .setting-list .suboptions{margin-top:.3em}.settings-modal .settings-modal-panel{height:90vh;max-width:90vw;overflow:hidden;transition:transform;transition-duration:.3s;transition-timing-function:ease-in-out;width:1000px}@media (max-width:800px){.settings-modal .settings-modal-panel{height:100%;max-width:100vw}}.settings-modal .settings-modal-panel>.panel-body{height:100%;overflow-y:hidden}.settings-modal .settings-modal-panel>.panel-body .btn{min-height:2em;min-width:10em;padding:0 2em}.settings-modal .settings-footer{display:flex}.settings-modal .settings-footer>*{margin-right:.5em}.settings-modal .settings-footer .extra-content{display:flex;flex-grow:1}.settings-modal.peek .settings-modal-panel{transform:translateY(calc(50vh + 50% - 50px))}@media (max-width:800px){.settings-modal.peek .settings-modal-panel{transform:translateY(calc(100% - 50px))}} -/*# sourceMappingURL=5948.06d2a0d84620cba6a4fb.css.map*/ -\ No newline at end of file diff --git a/priv/static/static/css/5948.06d2a0d84620cba6a4fb.css.map b/priv/static/static/css/5948.06d2a0d84620cba6a4fb.css.map @@ -1 +0,0 @@ -{"version":3,"file":"static/css/5948.06d2a0d84620cba6a4fb.css","mappings":"AACA,uBAGE,mBAFA,aACA,YAEA,uBAEA,4BACE,YACA,iBCPJ,gBACE,gBAEA,2DAEE,qBACA,iBAEA,iEACE,mBAGF,mFACE,gBAIJ,sCAOE,YADA,eALA,gBACA,qBAEA,wBADA,uCAEA,YAEA,CAEA,yBATF,sCAWI,YADA,eACA,EAGF,kDACE,YACA,kBAEA,uDACE,eACA,eACA,cAKN,iCACE,aAEA,mCACE,kBAGF,gDACE,aACA,YAKF,2CASE,8CAEA,yBAXF,2CAgBI","sources":["webpack://pleroma_fe/./src/components/async_component_error/async_component_error.vue","webpack://pleroma_fe/./src/components/settings_modal/settings_modal.scss"],"sourcesContent":["\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n\n .btn {\n margin: 0.5em;\n padding: 0.5em 2em;\n }\n}\n","@import \"src/variables\";\n\n.settings-modal {\n overflow: hidden;\n\n .setting-list,\n .option-list {\n list-style-type: none;\n padding-left: 2em;\n\n li {\n margin-bottom: 0.5em;\n }\n\n .suboptions {\n margin-top: 0.3em;\n }\n }\n\n .settings-modal-panel {\n overflow: hidden;\n transition: transform;\n transition-timing-function: ease-in-out;\n transition-duration: 300ms;\n width: 1000px;\n max-width: 90vw;\n height: 90vh;\n\n @media all and (max-width: 800px) {\n max-width: 100vw;\n height: 100%;\n }\n\n >.panel-body {\n height: 100%;\n overflow-y: hidden;\n\n .btn {\n min-height: 2em;\n min-width: 10em;\n padding: 0 2em;\n }\n }\n }\n\n .settings-footer {\n display: flex;\n\n >* {\n margin-right: 0.5em;\n }\n\n .extra-content {\n display: flex;\n flex-grow: 1;\n }\n }\n\n &.peek {\n .settings-modal-panel {\n /* Explanation:\n * Modal is positioned vertically centered.\n * 100vh - 100% = Distance between modal's top+bottom boundaries and screen\n * (100vh - 100%) / 2 = Distance between bottom (or top) boundary and screen\n * + 100% - we move modal completely off-screen, it's top boundary touches\n * bottom of the screen\n * - 50px - leaving tiny amount of space so that titlebar + tiny amount of modal is visible\n */\n transform: translateY(calc(((100vh - 100%) / 2 + 100%) - 50px));\n\n @media all and (max-width: 800px) {\n /* For mobile, the modal takes 100% of the available screen.\n This ensures the minimized modal is always 50px above the browser bottom\n bar regardless of whether or not it is visible.\n */\n transform: translateY(calc(100% - 50px));\n }\n }\n }\n}\n"],"names":[],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/css/7586.0d43f70bc6240422f179.css b/priv/static/static/css/7586.0d43f70bc6240422f179.css @@ -0,0 +1,2 @@ +.async-component-error{align-items:center;display:flex;height:100%;justify-content:center}.async-component-error .btn{margin:.5em;padding:.5em 2em}.settings-modal{overflow:hidden}.settings-modal .option-list,.settings-modal .setting-list{list-style-type:none;padding-left:2em}.settings-modal .option-list li,.settings-modal .setting-list li{margin-bottom:.5em}.settings-modal .option-list .suboptions,.settings-modal .setting-list .suboptions{margin-top:.3em}.settings-modal .setting-description{font-size:70%;margin-bottom:2em;margin-top:.2em}.settings-modal .settings-modal-panel{height:90vh;max-width:90vw;overflow:hidden;transition:transform;transition-duration:.3s;transition-timing-function:ease-in-out;width:1000px}@media (max-width:800px){.settings-modal .settings-modal-panel{height:100%;max-width:100vw}}.settings-modal .settings-modal-panel>.panel-body{height:100%;overflow-y:hidden}.settings-modal .settings-modal-panel>.panel-body .btn{min-height:2em}.settings-modal .settings-modal-panel>.panel-body .btn:not(.dropdown-button){padding:0 2em}.settings-modal .settings-footer{display:flex;flex-wrap:wrap;line-height:2}.settings-modal .settings-footer>*{margin-right:.5em}.settings-modal .settings-footer .extra-content{display:flex;flex-grow:1}.settings-modal.peek .settings-modal-panel{transform:translateY(calc(50vh + 50% - 50px))}@media (max-width:800px){.settings-modal.peek .settings-modal-panel{transform:translateY(calc(100% - 50px))}} +/*# sourceMappingURL=7586.0d43f70bc6240422f179.css.map*/ +\ No newline at end of file diff --git a/priv/static/static/css/7586.0d43f70bc6240422f179.css.map b/priv/static/static/css/7586.0d43f70bc6240422f179.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/7586.0d43f70bc6240422f179.css","mappings":"AACA,uBAGE,mBAFA,aACA,YAEA,uBAEA,4BACE,YACA,iBCPJ,gBACE,gBAEA,2DAEE,qBACA,iBAEA,iEACE,mBAGF,mFACE,gBAIJ,qCAGE,cADA,kBADA,eAEA,CAGF,sCAOE,YADA,eALA,gBACA,qBAEA,wBADA,uCAEA,YAEA,CAEA,yBATF,sCAWI,YADA,eACA,EAGF,kDACE,YACA,kBAEA,uDACE,eAGF,6EACE,cAKN,iCACE,aACA,eACA,cAEA,mCACE,kBAGF,gDACE,aACA,YAKF,2CASE,8CAEA,yBAXF,2CAgBI","sources":["webpack://pleroma_fe/./src/components/async_component_error/async_component_error.vue","webpack://pleroma_fe/./src/components/settings_modal/settings_modal.scss"],"sourcesContent":["\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n\n .btn {\n margin: 0.5em;\n padding: 0.5em 2em;\n }\n}\n","@import \"src/variables\";\n\n.settings-modal {\n overflow: hidden;\n\n .setting-list,\n .option-list {\n list-style-type: none;\n padding-left: 2em;\n\n li {\n margin-bottom: 0.5em;\n }\n\n .suboptions {\n margin-top: 0.3em;\n }\n }\n\n .setting-description {\n margin-top: 0.2em;\n margin-bottom: 2em;\n font-size: 70%;\n }\n\n .settings-modal-panel {\n overflow: hidden;\n transition: transform;\n transition-timing-function: ease-in-out;\n transition-duration: 300ms;\n width: 1000px;\n max-width: 90vw;\n height: 90vh;\n\n @media all and (max-width: 800px) {\n max-width: 100vw;\n height: 100%;\n }\n\n >.panel-body {\n height: 100%;\n overflow-y: hidden;\n\n .btn {\n min-height: 2em;\n }\n\n .btn:not(.dropdown-button) {\n padding: 0 2em;\n }\n }\n }\n\n .settings-footer {\n display: flex;\n flex-wrap: wrap;\n line-height: 2;\n\n >* {\n margin-right: 0.5em;\n }\n\n .extra-content {\n display: flex;\n flex-grow: 1;\n }\n }\n\n &.peek {\n .settings-modal-panel {\n /* Explanation:\n * Modal is positioned vertically centered.\n * 100vh - 100% = Distance between modal's top+bottom boundaries and screen\n * (100vh - 100%) / 2 = Distance between bottom (or top) boundary and screen\n * + 100% - we move modal completely off-screen, it's top boundary touches\n * bottom of the screen\n * - 50px - leaving tiny amount of space so that titlebar + tiny amount of modal is visible\n */\n transform: translateY(calc(((100vh - 100%) / 2 + 100%) - 50px));\n\n @media all and (max-width: 800px) {\n /* For mobile, the modal takes 100% of the available screen.\n This ensures the minimized modal is always 50px above the browser bottom\n bar regardless of whether or not it is visible.\n */\n transform: translateY(calc(100% - 50px));\n }\n }\n }\n}\n"],"names":[],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/css/7962.76663e78ad5ea0bb0b90.css b/priv/static/static/css/7962.76663e78ad5ea0bb0b90.css @@ -0,0 +1,11 @@ +.importer-uploading{font-size:1.5em;margin:.25em}.exporter-processing{margin:.25em}.autosuggest{position:relative}.autosuggest-input{display:block;width:100%}.autosuggest-results{background-color:#121a24;background-color:var(--bg,#121a24);border:1px solid #222;border-color:var(--border,#222);border-radius:4px;border-radius:var(--inputRadius,4px);border-top-left-radius:0;border-top-right-radius:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);left:0;max-height:400px;overflow-y:auto;position:absolute;right:0;top:100%;z-index:1}.block-card-content-container{margin-top:.5em;text-align:right}.block-card-content-container button{width:10em}.mute-card-content-container{margin-top:.5em;text-align:right}.mute-card-content-container button{width:10em}.domain-mute-card{align-items:center;display:flex;flex:1 0;justify-content:space-between;padding:.6em 1em .6em 0}.domain-mute-card-domain{margin-right:1em;overflow:hidden;text-overflow:ellipsis}.domain-mute-card button{width:10em}.autosuggest-results .domain-mute-card{padding-left:1em}.selectable-list-item-inner{align-items:center;display:flex}.selectable-list-item-inner>*{min-width:0}.selectable-list-item-selected-inner{--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon);background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);color:var(--selectedMenuText,#b9b9ba)}.selectable-list-header{align-items:center;border-bottom:2px solid #222;border-bottom-color:var(--border,#222);display:flex;padding:.6em 0}.selectable-list-header-actions{flex:1}.selectable-list-checkbox-wrapper{flex:none;padding:0 10px}.with-subscription-loading{padding:10px;text-align:center}.with-subscription-loading .error{font-size:1rem}.mutes-and-blocks-tab{height:100%}.mutes-and-blocks-tab .usersearch-wrapper{padding:1em}.mutes-and-blocks-tab .bulk-actions{min-height:2em;padding:0 1em;text-align:right}.mutes-and-blocks-tab .bulk-action-button{width:10em}.mutes-and-blocks-tab .domain-mute-form{display:flex;flex-direction:column;padding:1em}.mutes-and-blocks-tab .domain-mute-button{align-self:flex-end;margin-top:1em;width:10em}.ModifiedIndicator{display:inline-block;position:relative}.modified-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.ProfileSettingIndicator{display:inline-block;position:relative}.profilesetting-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.DraftButtons{display:inline-block;position:relative}.DraftButtons .button-default{margin-left:.5em}.draft-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.mfa-backup-codes .warning{color:orange;color:var(--cOrange,orange)}.mfa-backup-codes .backup-codes{font-family:var(--postCodeFont,monospace)}.mfa-settings .method-item,.mfa-settings .mfa-heading{align-items:baseline;display:flex;flex-wrap:wrap;justify-content:space-between}.mfa-settings .warning{color:orange;color:var(--cOrange,orange)}.mfa-settings .setup-otp{display:flex;flex-wrap:wrap;justify-content:center}.mfa-settings .setup-otp .qr-code{flex:1;padding-right:10px}.mfa-settings .setup-otp .verify{flex:1}.mfa-settings .setup-otp .error{margin:4px 0 0}.mfa-settings .setup-otp .confirm-otp-actions button{margin-top:5px;width:15em} +/*! + * Cropper.js v1.5.13 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2022-11-20T05:30:43.444Z + */.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:rgba(51,153,255,.75);overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.image-cropper-img-input{display:none}.image-cropper-image-container{position:relative}.image-cropper-image-container img{display:block;max-width:100%}.image-cropper-buttons-wrapper{margin-top:10px}.image-cropper-buttons-wrapper button{margin-top:5px}.profile-tab .bio{margin:0}.profile-tab .visibility-tray{padding-top:5px}.profile-tab input[type=file]{height:auto;padding:5px}.profile-tab .banner-background-preview{max-width:100%;position:relative;width:300px}.profile-tab .banner-background-preview img{width:100%}.profile-tab .uploading{font-size:1.5em;margin:.25em}.profile-tab .name-changer{width:100%}.profile-tab .current-avatar-container{height:150px;position:relative;width:150px}.profile-tab .current-avatar{border-radius:4px;border-radius:var(--avatarRadius,4px);display:block;height:100%;width:100%}.profile-tab .reset-button{background-color:rgba(0,0,0,.6);border-radius:5px;border-radius:var(--tooltipRadius,5px);cursor:pointer;font-size:1.5em;height:1.5em;line-height:1.5em;opacity:.7;position:absolute;right:.2em;text-align:center;top:.2em;width:1.5em}.profile-tab .reset-button:hover{opacity:1}.profile-tab .reset-button svg{color:#fff}.profile-tab .oauth-tokens{width:100%}.profile-tab .oauth-tokens th{text-align:left}.profile-tab .oauth-tokens .actions{text-align:right}.profile-tab-usersearch-wrapper{padding:1em}.profile-tab-bulk-actions{min-height:2em;padding:0 1em;text-align:right}.profile-tab-bulk-actions button{width:10em}.profile-tab-domain-mute-form{display:flex;flex-direction:column;padding:1em}.profile-tab-domain-mute-form button{align-self:flex-end;margin-top:1em;width:10em}.profile-tab .setting-subitem{margin-left:1.75em}.profile-tab .profile-fields{display:flex}.profile-tab .profile-fields>.emoji-input{flex:1 1 auto;margin:0 .2em .5em;min-width:0}.profile-tab .profile-fields .delete-field{align-self:center;margin:0 .2em .5em;padding:0 .5em;width:20px}.profile-tab .birthday-input{display:block;margin-bottom:1em}.SizeSetting .number-input{max-width:6.5em}.SizeSetting .css-unit-input,.SizeSetting .css-unit-input select{margin-left:.5em;max-width:4em;min-width:4em;width:4em}.column-settings{display:flex;flex-wrap:wrap;justify-content:space-evenly}.column-settings .size-label{display:block;margin-bottom:.5em;margin-top:.5em}.color-input{display:inline-flex}.color-input-field.input{align-items:stretch;display:inline-flex;flex:0 0 0;max-width:9em;padding:.2em 8px}.color-input-field.input input{background:none;border:none;color:#b9b9ba;color:var(--inputText,#b9b9ba);margin:0;padding:0}.color-input-field.input input.textColor{flex:1 0 3em;min-width:3em;padding:0}.color-input-field.input .computedIndicator,.color-input-field.input .transparentIndicator,.color-input-field.input input.nativeColor{align-self:stretch;flex:0 0 2em;min-height:100%;min-width:2em}.color-input-field.input .transparentIndicator{background-color:#f0f;position:relative}.color-input-field.input .transparentIndicator:after,.color-input-field.input .transparentIndicator:before{background-color:#000;content:"";display:block;height:50%;position:absolute;width:50%}.color-input-field.input .transparentIndicator:after{left:0;top:0}.color-input-field.input .transparentIndicator:before{bottom:0;right:0}.color-input .label{flex:1 1 auto}.color-control input.text-input{flex:1;max-width:7em}.shadow-control{display:flex;flex-wrap:wrap;justify-content:center;margin-bottom:1em}.shadow-control .shadow-preview-container,.shadow-control .shadow-tweak{margin:5px 6px 0 0}.shadow-control .shadow-preview-container{display:flex;flex:0;flex-wrap:wrap}.shadow-control .shadow-preview-container input[type=number]{min-width:2em;width:5em}.shadow-control .shadow-preview-container .x-shift-control,.shadow-control .shadow-preview-container .y-shift-control{display:flex;flex:0}.shadow-control .shadow-preview-container .x-shift-control[disabled=disabled] *,.shadow-control .shadow-preview-container .y-shift-control[disabled=disabled] *{opacity:.5}.shadow-control .shadow-preview-container .x-shift-control{align-items:flex-start}.shadow-control .shadow-preview-container .x-shift-control .wrap,.shadow-control .shadow-preview-container input[type=range]{height:2em;margin:0;width:15em}.shadow-control .shadow-preview-container .y-shift-control{align-items:flex-end;flex-direction:column}.shadow-control .shadow-preview-container .y-shift-control .wrap{height:15em;width:2em}.shadow-control .shadow-preview-container .y-shift-control input[type=range]{transform:rotate(90deg);transform-origin:1em 1em}.shadow-control .shadow-preview-container .preview-window{align-items:center;background-color:#999;background-image:linear-gradient(45deg,#666 25%,transparent 0),linear-gradient(-45deg,#666 25%,transparent 0),linear-gradient(45deg,transparent 75%,#666 0),linear-gradient(-45deg,transparent 75%,#666 0);background-position:0 0,0 10px,10px -10px,-10px 0;background-size:20px 20px;border-radius:4px;border-radius:var(--inputRadius,4px);display:flex;flex:1;justify-content:center}.shadow-control .shadow-preview-container .preview-window .preview-block{background-color:#121a24;background-color:var(--bg,#121a24);border-radius:10px;border-radius:var(--panelRadius,10px);height:33%;width:33%}.shadow-control .shadow-tweak{flex:1;min-width:280px}.shadow-control .shadow-tweak .id-control{align-items:stretch}.shadow-control .shadow-tweak .id-control .shadow-switcher{flex:1}.shadow-control .shadow-tweak .id-control .btn,.shadow-control .shadow-tweak .id-control .shadow-switcher{margin-right:5px;min-width:1px}.shadow-control .shadow-tweak .id-control .btn{margin:0 .1em;padding:0 .4em}.font-control input.custom-font{min-width:10em}.font-control.custom .font-switcher{border-bottom-right-radius:0;border-top-right-radius:0}.font-control.custom .custom-font{border-bottom-left-radius:0;border-top-left-radius:0}.contrast-ratio{display:flex;justify-content:flex-end;margin-bottom:5px;margin-top:-4px}.contrast-ratio .label{margin-right:1em}.contrast-ratio .rating{display:inline-block;margin-left:.5em;text-align:center}.preview-container{position:relative}.underlay-preview{bottom:0;left:10px;position:absolute;right:10px;top:0}.theme-tab{padding-bottom:2em}.theme-tab .preset-switcher{margin-right:1em}.theme-tab .btn{margin-left:.25em;margin-right:.25em}.theme-tab .style-control{align-items:baseline;display:flex;margin-bottom:5px}.theme-tab .style-control .label{flex:1}.theme-tab .style-control .opt{margin:.5em}.theme-tab .style-control .color-input{flex:0 0 0}.theme-tab .style-control input,.theme-tab .style-control select{flex:0;margin:0;min-width:3em}.theme-tab .style-control input[type=number],.theme-tab .style-control select[type=number]{min-width:5em}.theme-tab .style-control input[type=range],.theme-tab .style-control select[type=range]{align-self:flex-start;flex:1;min-width:3em}.theme-tab .style-control.disabled input,.theme-tab .style-control.disabled select{opacity:.5}.theme-tab .reset-container{flex-wrap:wrap}.theme-tab .apply-container,.theme-tab .color-container,.theme-tab .fonts-container,.theme-tab .radius-container,.theme-tab .reset-container{display:flex}.theme-tab .fonts-container,.theme-tab .radius-container{flex-direction:column}.theme-tab .color-container{flex-wrap:wrap;justify-content:space-between}.theme-tab .color-container>h4{width:99%}.theme-tab .color-container,.theme-tab .fonts-container,.theme-tab .presets-container,.theme-tab .radius-container,.theme-tab .shadow-container{margin:1em 1em 0}.theme-tab .tab-header{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:1em;min-height:30px;width:100%}.theme-tab .tab-header p{flex:1;margin:0 .5em 0 0}.theme-tab .tab-header-buttons{display:flex;flex-direction:column}.theme-tab .tab-header-buttons .btn{flex:0 auto;margin-bottom:.5em;min-width:1px;padding:0 1em}.theme-tab .shadow-selector .override{flex:1;margin-left:.5em}.theme-tab .shadow-selector .select-container{margin-bottom:-3px;margin-top:-4px}.theme-tab .save-load,.theme-tab .save-load-options{align-items:baseline;display:flex;flex-wrap:wrap;justify-content:center}.theme-tab .save-load .import-export,.theme-tab .save-load .presets,.theme-tab .save-load-options .import-export,.theme-tab .save-load-options .presets{margin-bottom:.5em}.theme-tab .save-load .import-export,.theme-tab .save-load-options .import-export{display:flex}.theme-tab .save-load .override,.theme-tab .save-load-options .override{margin-left:.5em}.theme-tab .save-load-options{flex-wrap:wrap;justify-content:center;margin-top:.5em}.theme-tab .save-load-options .keep-option{margin:0 .5em .5em;min-width:25%}.theme-tab .preview-container{background-color:var(--wallpaper);background-image:var(--body-background-image);background-position:50% 50%;background-size:cover;border-bottom:1px dashed #222;border-color:#222 currentcolor;border-top:1px dashed #222;border-color:var(--border,#222);margin:1em 0;padding:1em}.theme-tab .preview-container .dummy .post{display:flex;font-family:var(--postFont)}.theme-tab .preview-container .dummy .post .content{flex:1}.theme-tab .preview-container .dummy .post .content h4{margin-bottom:.25em}.theme-tab .preview-container .dummy .post .content .icons{display:flex;margin-top:.5em}.theme-tab .preview-container .dummy .post .content .icons i{margin-right:1em}.theme-tab .preview-container .dummy .after-post{align-items:center;display:flex;margin-top:1em}.theme-tab .preview-container .dummy .avatar,.theme-tab .preview-container .dummy .avatar-alt{background:linear-gradient(135deg,#b8e1fc,#a9d2f3 10%,#90bae4 25%,#90bcea 37%,#90bff0 50%,#6ba8e5 51%,#a2daf5 83%,#bdf3fd);color:#000;font-family:sans-serif;margin-right:1em;text-align:center}.theme-tab .preview-container .dummy .avatar-alt{border-radius:10px;border-radius:var(--avatarAltRadius,10px);flex:0 auto;font-size:12px;line-height:20px;margin-left:28px;min-height:20px;min-width:20px}.theme-tab .preview-container .dummy .avatar{flex:0 auto;font-size:14px;height:48px;line-height:48px;width:48px}.theme-tab .preview-container .dummy .actions{align-items:baseline;display:flex}.theme-tab .preview-container .dummy .actions .checkbox{align-items:baseline;display:inline-flex;flex:1;margin-right:1em}.theme-tab .preview-container .dummy .separator{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);margin:1em}.theme-tab .preview-container .dummy .btn{min-width:3em}.theme-tab .radius-item{flex-basis:auto}.theme-tab .color-item,.theme-tab .radius-item{display:flex;flex:1 1 0;flex-direction:column;margin:5px 6px 0 0;min-width:20em}.theme-tab .color-item.wide,.theme-tab .radius-item.wide{min-width:60%}.theme-tab .color-item:not(.wide):nth-child(odd),.theme-tab .radius-item:not(.wide):nth-child(odd){margin-right:7px}.theme-tab .color-item .color,.theme-tab .color-item .opacity,.theme-tab .radius-item .color,.theme-tab .radius-item .opacity{align-items:baseline;display:flex}.theme-tab .theme-color-cl,.theme-tab .theme-radius-rn{align-self:stretch;background:transparent;border:0;box-shadow:none;color:var(--faint,hsla(240,1%,73%,.5))}.theme-tab .theme-color-cl,.theme-tab .theme-color-in,.theme-tab .theme-radius-in{margin-left:4px}.theme-tab .theme-radius-in{flex:1;max-width:7em;min-width:1em}.theme-tab .theme-radius-lb{max-width:50em}.theme-tab .theme-preview-content{padding:20px}.theme-tab .theme-warning{align-items:baseline;display:flex;margin-bottom:.5em}.theme-tab .theme-warning .buttons .btn{margin-bottom:.5em}.extra-content .apply-container{display:flex;flex-direction:row;flex-grow:1;justify-content:space-around}.extra-content .apply-container .btn{flex-grow:1;max-width:10em;min-height:2em;min-width:0;padding:0}.settings_tab-switcher{height:100%}.settings_tab-switcher .setting-item{border-bottom:2px solid var(--fg,#182230);margin:1em 1em 1.4em;padding-bottom:1.4em}.settings_tab-switcher .setting-item>div,.settings_tab-switcher .setting-item>label{display:block;margin-bottom:.5em}.settings_tab-switcher .setting-item>div:last-child,.settings_tab-switcher .setting-item>label:last-child{margin-bottom:0}.settings_tab-switcher .setting-item .select-multiple{display:flex}.settings_tab-switcher .setting-item .select-multiple .option-list{margin:0;padding-left:.5em}.settings_tab-switcher .setting-item:last-child{border-bottom:none;margin-bottom:1em;padding-bottom:0}.settings_tab-switcher .setting-item select{min-width:10em}.settings_tab-switcher .setting-item textarea{height:100px;max-width:100%;width:100%}.settings_tab-switcher .setting-item .unavailable,.settings_tab-switcher .setting-item .unavailable svg{color:var(--cRed,red);color:red} +/*# sourceMappingURL=7962.76663e78ad5ea0bb0b90.css.map*/ +\ No newline at end of file diff --git a/priv/static/static/css/7962.76663e78ad5ea0bb0b90.css.map b/priv/static/static/css/7962.76663e78ad5ea0bb0b90.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/7962.76663e78ad5ea0bb0b90.css","mappings":"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","sources":["webpack://pleroma_fe/./src/components/importer/importer.vue","webpack://pleroma_fe/./src/components/exporter/exporter.vue","webpack://pleroma_fe/./src/components/autosuggest/autosuggest.vue","webpack://pleroma_fe/./src/_variables.scss","webpack://pleroma_fe/./src/components/block_card/block_card.vue","webpack://pleroma_fe/./src/components/mute_card/mute_card.vue","webpack://pleroma_fe/./src/components/domain_mute_card/domain_mute_card.vue","webpack://pleroma_fe/./src/components/selectable_list/selectable_list.vue","webpack://pleroma_fe/./src/hocs/with_subscription/with_subscription.scss","webpack://pleroma_fe/./src/components/settings_modal/tabs/mutes_and_blocks_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/helpers/modified_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/profile_setting_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/draft_buttons.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa.vue","webpack://pleroma_fe/./node_modules/cropperjs/dist/cropper.css","webpack://pleroma_fe/./src/components/image_cropper/image_cropper.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/profile_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/helpers/size_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/general_tab.vue","webpack://pleroma_fe/./src/components/color_input/color_input.scss","webpack://pleroma_fe/./src/components/color_input/color_input.vue","webpack://pleroma_fe/./src/components/shadow_control/shadow_control.vue","webpack://pleroma_fe/./src/components/font_control/font_control.vue","webpack://pleroma_fe/./src/components/contrast_ratio/contrast_ratio.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/preview.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/theme_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_user_content.scss"],"sourcesContent":["\n.importer {\n &-uploading {\n font-size: 1.5em;\n margin: 0.25em;\n }\n}\n","\n.exporter {\n &-processing {\n margin: 0.25em;\n }\n}\n","\n@import \"../../variables\";\n\n.autosuggest {\n position: relative;\n\n &-input {\n display: block;\n width: 100%;\n }\n\n &-results {\n position: absolute;\n left: 0;\n top: 100%;\n right: 0;\n max-height: 400px;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-style: solid;\n border-width: 1px;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n overflow-y: auto;\n z-index: 1;\n }\n}\n","$main-color: #f58d2c;\n$main-background: white;\n$darkened-background: whitesmoke;\n\n$fallback--bg: #121a24;\n$fallback--fg: #182230;\n$fallback--faint: rgb(185 185 186 / 50%);\n$fallback--text: #b9b9ba;\n$fallback--link: #d8a070;\n$fallback--icon: #666;\n$fallback--lightBg: rgb(21 30 42);\n$fallback--lightText: #b9b9ba;\n$fallback--border: #222;\n$fallback--cRed: #f00;\n$fallback--cBlue: #0095ff;\n$fallback--cGreen: #0fa00f;\n$fallback--cOrange: orange;\n\n$fallback--alertError: rgb(211 16 20 / 50%);\n$fallback--alertWarning: rgb(111 111 20 / 50%);\n\n$fallback--panelRadius: 10px;\n$fallback--checkboxRadius: 2px;\n$fallback--btnRadius: 4px;\n$fallback--inputRadius: 4px;\n$fallback--tooltipRadius: 5px;\n$fallback--avatarRadius: 4px;\n$fallback--avatarAltRadius: 10px;\n$fallback--attachmentRadius: 10px;\n$fallback--chatMessageRadius: 10px;\n\n$fallback--buttonShadow: 0 0 2px 0 rgb(0 0 0 / 100%),\n 0 1px 0 0 rgb(255 255 255 / 20%) inset,\n 0 -1px 0 0 rgb(0 0 0 / 20%) inset;\n\n$status-margin: 0.75em;\n","\n.block-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n","\n.mute-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n","\n.domain-mute-card {\n flex: 1 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.6em 1em 0.6em 0;\n\n &-domain {\n margin-right: 1em;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n button {\n width: 10em;\n }\n\n .autosuggest-results & {\n padding-left: 1em;\n }\n}\n","\n@import \"../../variables\";\n\n.selectable-list {\n &-item-inner {\n display: flex;\n align-items: center;\n\n > * {\n min-width: 0;\n }\n }\n\n &-item-selected-inner {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &-header {\n display: flex;\n align-items: center;\n padding: 0.6em 0;\n border-bottom: 2px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n\n &-actions {\n flex: 1;\n }\n }\n\n &-checkbox-wrapper {\n padding: 0 10px;\n flex: none;\n }\n}\n",".with-subscription {\n &-loading {\n padding: 10px;\n text-align: center;\n\n .error {\n font-size: 1rem;\n }\n }\n}\n",".mutes-and-blocks-tab {\n height: 100%;\n\n .usersearch-wrapper {\n padding: 1em;\n }\n\n .bulk-actions {\n text-align: right;\n padding: 0 1em;\n min-height: 2em;\n }\n\n .bulk-action-button {\n width: 10em;\n }\n\n .domain-mute-form {\n padding: 1em;\n display: flex;\n flex-direction: column;\n }\n\n .domain-mute-button {\n align-self: flex-end;\n margin-top: 1em;\n width: 10em;\n }\n}\n","\n.ModifiedIndicator {\n display: inline-block;\n position: relative;\n}\n\n.modified-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.ProfileSettingIndicator {\n display: inline-block;\n position: relative;\n}\n\n.profilesetting-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.DraftButtons {\n display: inline-block;\n position: relative;\n\n .button-default {\n margin-left: 0.5em;\n }\n}\n\n.draft-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n@import \"../../../../variables\";\n\n.mfa-backup-codes {\n .warning {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n .backup-codes {\n font-family: var(--postCodeFont, monospace);\n }\n}\n","\n@import \"../../../../variables\";\n\n.mfa-settings {\n .mfa-heading,\n .method-item {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: baseline;\n }\n\n .warning {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n .setup-otp {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n\n .qr-code {\n flex: 1;\n padding-right: 10px;\n }\n .verify { flex: 1; }\n .error { margin: 4px 0 0; }\n\n .confirm-otp-actions {\n button {\n width: 15em;\n margin-top: 5px;\n }\n }\n }\n}\n","/*!\n * Cropper.js v1.5.13\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2022-11-20T05:30:43.444Z\n */\n\n.cropper-container {\n direction: ltr;\n font-size: 0;\n line-height: 0;\n position: relative;\n -ms-touch-action: none;\n touch-action: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.cropper-container img {\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n display: block;\n height: 100%;\n image-orientation: 0deg;\n max-height: none !important;\n max-width: none !important;\n min-height: 0 !important;\n min-width: 0 !important;\n width: 100%;\n }\n\n.cropper-wrap-box,\n.cropper-canvas,\n.cropper-drag-box,\n.cropper-crop-box,\n.cropper-modal {\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.cropper-wrap-box,\n.cropper-canvas {\n overflow: hidden;\n}\n\n.cropper-drag-box {\n background-color: #fff;\n opacity: 0;\n}\n\n.cropper-modal {\n background-color: #000;\n opacity: 0.5;\n}\n\n.cropper-view-box {\n display: block;\n height: 100%;\n outline: 1px solid #39f;\n outline-color: rgba(51, 153, 255, 75%);\n overflow: hidden;\n width: 100%;\n}\n\n.cropper-dashed {\n border: 0 dashed #eee;\n display: block;\n opacity: 0.5;\n position: absolute;\n}\n\n.cropper-dashed.dashed-h {\n border-bottom-width: 1px;\n border-top-width: 1px;\n height: calc(100% / 3);\n left: 0;\n top: calc(100% / 3);\n width: 100%;\n }\n\n.cropper-dashed.dashed-v {\n border-left-width: 1px;\n border-right-width: 1px;\n height: 100%;\n left: calc(100% / 3);\n top: 0;\n width: calc(100% / 3);\n }\n\n.cropper-center {\n display: block;\n height: 0;\n left: 50%;\n opacity: 0.75;\n position: absolute;\n top: 50%;\n width: 0;\n}\n\n.cropper-center::before,\n .cropper-center::after {\n background-color: #eee;\n content: \" \";\n display: block;\n position: absolute;\n }\n\n.cropper-center::before {\n height: 1px;\n left: -3px;\n top: 0;\n width: 7px;\n }\n\n.cropper-center::after {\n height: 7px;\n left: 0;\n top: -3px;\n width: 1px;\n }\n\n.cropper-face,\n.cropper-line,\n.cropper-point {\n display: block;\n height: 100%;\n opacity: 0.1;\n position: absolute;\n width: 100%;\n}\n\n.cropper-face {\n background-color: #fff;\n left: 0;\n top: 0;\n}\n\n.cropper-line {\n background-color: #39f;\n}\n\n.cropper-line.line-e {\n cursor: ew-resize;\n right: -3px;\n top: 0;\n width: 5px;\n }\n\n.cropper-line.line-n {\n cursor: ns-resize;\n height: 5px;\n left: 0;\n top: -3px;\n }\n\n.cropper-line.line-w {\n cursor: ew-resize;\n left: -3px;\n top: 0;\n width: 5px;\n }\n\n.cropper-line.line-s {\n bottom: -3px;\n cursor: ns-resize;\n height: 5px;\n left: 0;\n }\n\n.cropper-point {\n background-color: #39f;\n height: 5px;\n opacity: 0.75;\n width: 5px;\n}\n\n.cropper-point.point-e {\n cursor: ew-resize;\n margin-top: -3px;\n right: -3px;\n top: 50%;\n }\n\n.cropper-point.point-n {\n cursor: ns-resize;\n left: 50%;\n margin-left: -3px;\n top: -3px;\n }\n\n.cropper-point.point-w {\n cursor: ew-resize;\n left: -3px;\n margin-top: -3px;\n top: 50%;\n }\n\n.cropper-point.point-s {\n bottom: -3px;\n cursor: s-resize;\n left: 50%;\n margin-left: -3px;\n }\n\n.cropper-point.point-ne {\n cursor: nesw-resize;\n right: -3px;\n top: -3px;\n }\n\n.cropper-point.point-nw {\n cursor: nwse-resize;\n left: -3px;\n top: -3px;\n }\n\n.cropper-point.point-sw {\n bottom: -3px;\n cursor: nesw-resize;\n left: -3px;\n }\n\n.cropper-point.point-se {\n bottom: -3px;\n cursor: nwse-resize;\n height: 20px;\n opacity: 1;\n right: -3px;\n width: 20px;\n }\n\n@media (min-width: 768px) {\n\n.cropper-point.point-se {\n height: 15px;\n width: 15px;\n }\n }\n\n@media (min-width: 992px) {\n\n.cropper-point.point-se {\n height: 10px;\n width: 10px;\n }\n }\n\n@media (min-width: 1200px) {\n\n.cropper-point.point-se {\n height: 5px;\n opacity: 0.75;\n width: 5px;\n }\n }\n\n.cropper-point.point-se::before {\n background-color: #39f;\n bottom: -50%;\n content: \" \";\n display: block;\n height: 200%;\n opacity: 0;\n position: absolute;\n right: -50%;\n width: 200%;\n }\n\n.cropper-invisible {\n opacity: 0;\n}\n\n.cropper-bg {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC\");\n}\n\n.cropper-hide {\n display: block;\n height: 0;\n position: absolute;\n width: 0;\n}\n\n.cropper-hidden {\n display: none !important;\n}\n\n.cropper-move {\n cursor: move;\n}\n\n.cropper-crop {\n cursor: crosshair;\n}\n\n.cropper-disabled .cropper-drag-box,\n.cropper-disabled .cropper-face,\n.cropper-disabled .cropper-line,\n.cropper-disabled .cropper-point {\n cursor: not-allowed;\n}\n","\n.image-cropper {\n &-img-input {\n display: none;\n }\n\n &-image-container {\n position: relative;\n\n img {\n display: block;\n max-width: 100%;\n }\n }\n\n &-buttons-wrapper {\n margin-top: 10px;\n\n button {\n margin-top: 5px;\n }\n }\n}\n","@import \"../../../variables\";\n\n.profile-tab {\n .bio {\n margin: 0;\n }\n\n .visibility-tray {\n padding-top: 5px;\n }\n\n input[type=\"file\"] {\n padding: 5px;\n height: auto;\n }\n\n .banner-background-preview {\n max-width: 100%;\n width: 300px;\n position: relative;\n\n img {\n width: 100%;\n }\n }\n\n .uploading {\n font-size: 1.5em;\n margin: 0.25em;\n }\n\n .name-changer {\n width: 100%;\n }\n\n .current-avatar-container {\n position: relative;\n width: 150px;\n height: 150px;\n }\n\n .current-avatar {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n }\n\n .reset-button {\n position: absolute;\n top: 0.2em;\n right: 0.2em;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n background-color: rgb(0 0 0 / 60%);\n opacity: 0.7;\n width: 1.5em;\n height: 1.5em;\n text-align: center;\n line-height: 1.5em;\n font-size: 1.5em;\n cursor: pointer;\n\n &:hover {\n opacity: 1;\n }\n\n svg {\n color: white;\n }\n }\n\n .oauth-tokens {\n width: 100%;\n\n th {\n text-align: left;\n }\n\n .actions {\n text-align: right;\n }\n }\n\n &-usersearch-wrapper {\n padding: 1em;\n }\n\n &-bulk-actions {\n text-align: right;\n padding: 0 1em;\n min-height: 2em;\n\n button {\n width: 10em;\n }\n }\n\n &-domain-mute-form {\n padding: 1em;\n display: flex;\n flex-direction: column;\n\n button {\n align-self: flex-end;\n margin-top: 1em;\n width: 10em;\n }\n }\n\n .setting-subitem {\n margin-left: 1.75em;\n }\n\n .profile-fields {\n display: flex;\n\n & > .emoji-input {\n flex: 1 1 auto;\n margin: 0 0.2em 0.5em;\n min-width: 0;\n }\n\n .delete-field {\n width: 20px;\n align-self: center;\n margin: 0 0.2em 0.5em;\n padding: 0 0.5em;\n }\n }\n\n .birthday-input {\n display: block;\n margin-bottom: 1em;\n }\n}\n","\n.SizeSetting {\n .number-input {\n max-width: 6.5em;\n }\n\n .css-unit-input,\n .css-unit-input select {\n margin-left: 0.5em;\n width: 4em;\n max-width: 4em;\n min-width: 4em;\n }\n}\n\n","\n.column-settings {\n display: flex;\n justify-content: space-evenly;\n flex-wrap: wrap;\n}\n\n.column-settings .size-label {\n display: block;\n margin-bottom: 0.5em;\n margin-top: 0.5em;\n}\n","@import \"../../variables\";\n\n.color-input {\n display: inline-flex;\n\n &-field.input {\n display: inline-flex;\n flex: 0 0 0;\n max-width: 9em;\n align-items: stretch;\n padding: 0.2em 8px;\n\n input {\n background: none;\n color: $fallback--lightText;\n color: var(--inputText, $fallback--lightText);\n border: none;\n padding: 0;\n margin: 0;\n\n &.textColor {\n flex: 1 0 3em;\n min-width: 3em;\n padding: 0;\n }\n\n &.nativeColor {\n flex: 0 0 2em;\n min-width: 2em;\n align-self: stretch;\n min-height: 100%;\n }\n }\n\n .computedIndicator,\n .transparentIndicator {\n flex: 0 0 2em;\n min-width: 2em;\n align-self: stretch;\n min-height: 100%;\n }\n\n .transparentIndicator {\n // forgot to install counter-strike source, ooops\n background-color: #f0f;\n position: relative;\n\n &::before,\n &::after {\n display: block;\n content: \"\";\n background-color: #000;\n position: absolute;\n height: 50%;\n width: 50%;\n }\n\n &::after {\n top: 0;\n left: 0;\n }\n\n &::before {\n bottom: 0;\n right: 0;\n }\n }\n }\n\n .label {\n flex: 1 1 auto;\n }\n}\n","\n.color-control {\n input.text-input {\n max-width: 7em;\n flex: 1;\n }\n}\n","\n@import \"../../variables\";\n\n.shadow-control {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n margin-bottom: 1em;\n\n .shadow-preview-container,\n .shadow-tweak {\n margin: 5px 6px 0 0;\n }\n\n .shadow-preview-container {\n flex: 0;\n display: flex;\n flex-wrap: wrap;\n\n $side: 15em;\n\n input[type=\"number\"] {\n width: 5em;\n min-width: 2em;\n }\n\n .x-shift-control,\n .y-shift-control {\n display: flex;\n flex: 0;\n\n &[disabled=\"disabled\"] * {\n opacity: 0.5;\n }\n }\n\n .x-shift-control {\n align-items: flex-start;\n }\n\n .x-shift-control .wrap,\n input[type=\"range\"] {\n margin: 0;\n width: $side;\n height: 2em;\n }\n\n .y-shift-control {\n flex-direction: column;\n align-items: flex-end;\n\n .wrap {\n width: 2em;\n height: $side;\n }\n\n input[type=\"range\"] {\n transform-origin: 1em 1em;\n transform: rotate(90deg);\n }\n }\n\n .preview-window {\n flex: 1;\n background-color: #999;\n display: flex;\n align-items: center;\n justify-content: center;\n background-image:\n linear-gradient(45deg, #666 25%, transparent 25%),\n linear-gradient(-45deg, #666 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, #666 75%),\n linear-gradient(-45deg, transparent 75%, #666 75%);\n background-size: 20px 20px;\n background-position: 0 0, 0 10px, 10px -10px, -10px 0;\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .preview-block {\n width: 33%;\n height: 33%;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n }\n\n .shadow-tweak {\n flex: 1;\n min-width: 280px;\n\n .id-control {\n align-items: stretch;\n\n .shadow-switcher {\n flex: 1;\n }\n\n .shadow-switcher,\n .btn {\n min-width: 1px;\n margin-right: 5px;\n }\n\n .btn {\n padding: 0 0.4em;\n margin: 0 0.1em;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n\n.font-control {\n input.custom-font {\n min-width: 10em;\n }\n\n &.custom {\n /* TODO Should make proper joiners... */\n .font-switcher {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .custom-font {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n}\n","\n.contrast-ratio {\n display: flex;\n justify-content: flex-end;\n margin-top: -4px;\n margin-bottom: 5px;\n\n .label {\n margin-right: 1em;\n }\n\n .rating {\n display: inline-block;\n text-align: center;\n margin-left: 0.5em;\n }\n}\n","\n.preview-container {\n position: relative;\n}\n\n.underlay-preview {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 10px;\n right: 10px;\n}\n","@import \"src/variables\";\n\n.theme-tab {\n padding-bottom: 2em;\n\n .preset-switcher {\n margin-right: 1em;\n }\n\n .btn {\n margin-left: 0.25em;\n margin-right: 0.25em;\n }\n\n .style-control {\n display: flex;\n align-items: baseline;\n margin-bottom: 5px;\n\n .label {\n flex: 1;\n }\n\n .opt {\n margin: 0.5em;\n }\n\n .color-input {\n flex: 0 0 0;\n }\n\n input,\n select {\n min-width: 3em;\n margin: 0;\n flex: 0;\n\n &[type=\"number\"] {\n min-width: 5em;\n }\n\n &[type=\"range\"] {\n flex: 1;\n min-width: 3em;\n align-self: flex-start;\n }\n }\n\n &.disabled {\n input,\n select {\n opacity: 0.5;\n }\n }\n }\n\n .reset-container {\n flex-wrap: wrap;\n }\n\n .fonts-container,\n .reset-container,\n .apply-container,\n .radius-container,\n .color-container, {\n display: flex;\n }\n\n .fonts-container,\n .radius-container {\n flex-direction: column;\n }\n\n .color-container {\n > h4 {\n width: 99%;\n }\n\n flex-wrap: wrap;\n justify-content: space-between;\n }\n\n .fonts-container,\n .color-container,\n .shadow-container,\n .radius-container,\n .presets-container {\n margin: 1em 1em 0;\n }\n\n .tab-header {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n width: 100%;\n min-height: 30px;\n margin-bottom: 1em;\n\n p {\n flex: 1;\n margin: 0;\n margin-right: 0.5em;\n }\n }\n\n .tab-header-buttons {\n display: flex;\n flex-direction: column;\n\n .btn {\n min-width: 1px;\n flex: 0 auto;\n padding: 0 1em;\n margin-bottom: 0.5em;\n }\n }\n\n .shadow-selector {\n .override {\n flex: 1;\n margin-left: 0.5em;\n }\n\n .select-container {\n margin-top: -4px;\n margin-bottom: -3px;\n }\n }\n\n .save-load,\n .save-load-options {\n display: flex;\n justify-content: center;\n align-items: baseline;\n flex-wrap: wrap;\n\n .presets,\n .import-export {\n margin-bottom: 0.5em;\n }\n\n .import-export {\n display: flex;\n }\n\n .override {\n margin-left: 0.5em;\n }\n }\n\n .save-load-options {\n flex-wrap: wrap;\n margin-top: 0.5em;\n justify-content: center;\n\n .keep-option {\n margin: 0 0.5em 0.5em;\n min-width: 25%;\n }\n }\n\n .preview-container {\n border-top: 1px dashed;\n border-bottom: 1px dashed;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n margin: 1em 0;\n padding: 1em;\n background-color: var(--wallpaper);\n background-image: var(--body-background-image);\n background-size: cover;\n background-position: 50% 50%;\n\n .dummy {\n .post {\n font-family: var(--postFont);\n display: flex;\n\n .content {\n flex: 1;\n\n h4 {\n margin-bottom: 0.25em;\n }\n\n .icons {\n margin-top: 0.5em;\n display: flex;\n\n i {\n margin-right: 1em;\n }\n }\n }\n }\n\n .after-post {\n margin-top: 1em;\n display: flex;\n align-items: center;\n }\n\n .avatar,\n .avatar-alt {\n background:\n linear-gradient(\n 135deg,\n #b8e1fc 0%,\n #a9d2f3 10%,\n #90bae4 25%,\n #90bcea 37%,\n #90bff0 50%,\n #6ba8e5 51%,\n #a2daf5 83%,\n #bdf3fd 100%\n );\n color: black;\n font-family: sans-serif;\n text-align: center;\n margin-right: 1em;\n }\n\n .avatar-alt {\n flex: 0 auto;\n margin-left: 28px;\n font-size: 12px;\n min-width: 20px;\n min-height: 20px;\n line-height: 20px;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .avatar {\n flex: 0 auto;\n width: 48px;\n height: 48px;\n font-size: 14px;\n line-height: 48px;\n }\n\n .actions {\n display: flex;\n align-items: baseline;\n\n .checkbox {\n display: inline-flex;\n align-items: baseline;\n margin-right: 1em;\n flex: 1;\n }\n }\n\n .separator {\n margin: 1em;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n .btn {\n min-width: 3em;\n }\n }\n }\n\n .radius-item {\n flex-basis: auto;\n }\n\n .radius-item,\n .color-item {\n min-width: 20em;\n margin: 5px 6px 0 0;\n display: flex;\n flex-direction: column;\n flex: 1 1 0;\n\n &.wide {\n min-width: 60%;\n }\n\n &:not(.wide):nth-child(2n+1) {\n margin-right: 7px;\n }\n\n .color,\n .opacity {\n display: flex;\n align-items: baseline;\n }\n }\n\n .theme-radius-rn,\n .theme-color-cl {\n border: 0;\n box-shadow: none;\n background: transparent;\n color: var(--faint, $fallback--faint);\n align-self: stretch;\n }\n\n .theme-color-cl,\n .theme-radius-in,\n .theme-color-in {\n margin-left: 4px;\n }\n\n .theme-radius-in {\n min-width: 1em;\n max-width: 7em;\n flex: 1;\n }\n\n .theme-radius-lb {\n max-width: 50em;\n }\n\n .theme-preview-content {\n padding: 20px;\n }\n\n .theme-warning {\n display: flex;\n align-items: baseline;\n margin-bottom: 0.5em;\n\n .buttons {\n .btn {\n margin-bottom: 0.5em;\n }\n }\n }\n}\n\n.extra-content {\n .apply-container {\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n flex-grow: 1;\n\n /* stylelint-disable-next-line no-descending-specificity */\n .btn {\n flex-grow: 1;\n min-height: 2em;\n min-width: 0;\n max-width: 10em;\n padding: 0;\n }\n }\n}\n","@import \"src/variables\";\n\n.settings_tab-switcher {\n height: 100%;\n\n .setting-item {\n border-bottom: 2px solid var(--fg, $fallback--fg);\n margin: 1em 1em 1.4em;\n padding-bottom: 1.4em;\n\n > div,\n > label {\n display: block;\n margin-bottom: 0.5em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n .select-multiple {\n display: flex;\n\n .option-list {\n margin: 0;\n padding-left: 0.5em;\n }\n }\n\n &:last-child {\n border-bottom: none;\n padding-bottom: 0;\n margin-bottom: 1em;\n }\n\n select {\n min-width: 10em;\n }\n\n textarea {\n width: 100%;\n max-width: 100%;\n height: 100px;\n }\n\n .unavailable,\n .unavailable svg {\n color: var(--cRed, $fallback--cRed);\n color: $fallback--cRed;\n }\n }\n}\n"],"names":[],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css b/priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css @@ -0,0 +1,2 @@ +.ModifiedIndicator{display:inline-block;position:relative}.modified-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.ProfileSettingIndicator{display:inline-block;position:relative}.profilesetting-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.DraftButtons{display:inline-block;position:relative}.DraftButtons .button-default{margin-left:.5em}.draft-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.AttachmentSetting .attachment{display:block;height:15em;margin-bottom:.5em;width:100%}.AttachmentSetting .attachment-input{display:flex;flex-direction:column;margin-left:1em;width:20em}.AttachmentSetting.-compact .attachment-input{align-items:flex-end;flex-direction:row}.AttachmentSetting.-compact .attachment{align-self:center;display:block;flex:0;height:4em;margin-bottom:0;min-width:4em;order:0}.AttachmentSetting.-compact .control-field{margin-left:.5em;min-width:12em;order:1}.AttachmentSetting.-compact .control-upload{min-width:12em;order:2;padding:0 .5em}.AttachmentSetting .controls{margin-bottom:.5em}.AttachmentSetting .controls button,.AttachmentSetting .controls input{width:100%}.frontends-tab .cards-list{padding:0}.frontends-tab .relative{position:relative}.frontends-tab .overlay{background:var(--bg);bottom:0;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:2}.frontends-tab dd{word-wrap:nowrap;max-width:10em;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.settings_tab-switcher{height:100%}.settings_tab-switcher .setting-item{border-bottom:2px solid var(--fg,#182230);margin:1em 1em 1.4em;padding-bottom:1.4em}.settings_tab-switcher .setting-item>div,.settings_tab-switcher .setting-item>label{display:block;margin-bottom:.5em}.settings_tab-switcher .setting-item>div:last-child,.settings_tab-switcher .setting-item>label:last-child{margin-bottom:0}.settings_tab-switcher .setting-item .select-multiple{display:flex}.settings_tab-switcher .setting-item .select-multiple .option-list{margin:0;padding-left:.5em}.settings_tab-switcher .setting-item:last-child{border-bottom:none;margin-bottom:1em;padding-bottom:0}.settings_tab-switcher .setting-item select{min-width:10em}.settings_tab-switcher .setting-item textarea{height:100px;max-width:100%;width:100%}.settings_tab-switcher .setting-item .unavailable,.settings_tab-switcher .setting-item .unavailable svg{color:var(--cRed,red);color:red} +/*# sourceMappingURL=8859.d26a3b0841a7beb8fd4a.css.map*/ +\ No newline at end of file diff --git a/priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css.map b/priv/static/static/css/8859.d26a3b0841a7beb8fd4a.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/8859.d26a3b0841a7beb8fd4a.css","mappings":"AACA,mBACE,qBACA,kBAGF,kBACE,gBACA,eACA,kBCRF,yBACE,qBACA,kBAGF,wBACE,gBACA,eACA,kBCRF,cACE,qBACA,kBAEA,8BACE,iBAIJ,eACE,gBACA,eACA,kBCXA,+BACE,cAEA,YACA,mBAFA,UAEA,CAGF,qCAEE,aACA,sBAFA,gBAGA,WAIA,8CAEE,qBADA,kBACA,CAGF,wCAME,kBAHA,cAFA,OAIA,WAEA,eAAc,CAHd,cAFA,OAKA,CAGF,2CAGE,iBADA,eADA,OAEA,CAGF,4CAEE,eADA,QAEA,eAIJ,6BACE,mBAEA,uEAEE,WCjDJ,2BACE,UAGF,yBACE,kBAGF,wBAEE,qBAKA,SACA,OAHA,WAJA,kBAQA,OAAM,CAHN,MAFA,SAKA,CAGF,kBAEE,iBAGA,eADA,kBAHA,uBAEA,kBAEA,CCxBJ,uBACE,YAEA,qCACE,0CACA,qBACA,qBAEA,oFAEE,cACA,mBAEA,0GACE,gBAIJ,sDACE,aAEA,mEACE,SACA,kBAIJ,gDACE,mBAEA,kBADA,gBACA,CAGF,4CACE,eAGF,8CAGE,aADA,eADA,UAEA,CAGF,wGAEE,sBACA,SCnCW","sources":["webpack://pleroma_fe/./src/components/settings_modal/helpers/modified_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/profile_setting_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/draft_buttons.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/attachment_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/frontends_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_admin_content.scss","webpack://pleroma_fe/./src/_variables.scss"],"sourcesContent":["\n.ModifiedIndicator {\n display: inline-block;\n position: relative;\n}\n\n.modified-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.ProfileSettingIndicator {\n display: inline-block;\n position: relative;\n}\n\n.profilesetting-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.DraftButtons {\n display: inline-block;\n position: relative;\n\n .button-default {\n margin-left: 0.5em;\n }\n}\n\n.draft-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.AttachmentSetting {\n .attachment {\n display: block;\n width: 100%;\n height: 15em;\n margin-bottom: 0.5em;\n }\n\n .attachment-input {\n margin-left: 1em;\n display: flex;\n flex-direction: column;\n width: 20em;\n }\n\n &.-compact {\n .attachment-input {\n flex-direction: row;\n align-items: flex-end;\n }\n\n .attachment {\n flex: 0;\n order: 0;\n display: block;\n min-width: 4em;\n height: 4em;\n align-self: center;\n margin-bottom: 0;\n }\n\n .control-field {\n order: 1;\n min-width: 12em;\n margin-left: 0.5em;\n }\n\n .control-upload {\n order: 2;\n min-width: 12em;\n padding: 0 0.5em;\n }\n }\n\n .controls {\n margin-bottom: 0.5em;\n\n input,\n button {\n width: 100%;\n }\n }\n}\n",".frontends-tab {\n .cards-list {\n padding: 0;\n }\n\n .relative {\n position: relative;\n }\n\n .overlay {\n position: absolute;\n background: var(--bg);\n // fix buttons showing through\n z-index: 2;\n opacity: 0.9;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n }\n\n dd {\n text-overflow: ellipsis;\n word-wrap: nowrap;\n white-space: nowrap;\n overflow-x: hidden;\n max-width: 10em;\n }\n}\n","@import \"src/variables\";\n\n.settings_tab-switcher {\n height: 100%;\n\n .setting-item {\n border-bottom: 2px solid var(--fg, $fallback--fg);\n margin: 1em 1em 1.4em;\n padding-bottom: 1.4em;\n\n > div,\n > label {\n display: block;\n margin-bottom: 0.5em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n .select-multiple {\n display: flex;\n\n .option-list {\n margin: 0;\n padding-left: 0.5em;\n }\n }\n\n &:last-child {\n border-bottom: none;\n padding-bottom: 0;\n margin-bottom: 1em;\n }\n\n select {\n min-width: 10em;\n }\n\n textarea {\n width: 100%;\n max-width: 100%;\n height: 100px;\n }\n\n .unavailable,\n .unavailable svg {\n color: var(--cRed, $fallback--cRed);\n color: $fallback--cRed;\n }\n }\n}\n","$main-color: #f58d2c;\n$main-background: white;\n$darkened-background: whitesmoke;\n\n$fallback--bg: #121a24;\n$fallback--fg: #182230;\n$fallback--faint: rgb(185 185 186 / 50%);\n$fallback--text: #b9b9ba;\n$fallback--link: #d8a070;\n$fallback--icon: #666;\n$fallback--lightBg: rgb(21 30 42);\n$fallback--lightText: #b9b9ba;\n$fallback--border: #222;\n$fallback--cRed: #f00;\n$fallback--cBlue: #0095ff;\n$fallback--cGreen: #0fa00f;\n$fallback--cOrange: orange;\n\n$fallback--alertError: rgb(211 16 20 / 50%);\n$fallback--alertWarning: rgb(111 111 20 / 50%);\n\n$fallback--panelRadius: 10px;\n$fallback--checkboxRadius: 2px;\n$fallback--btnRadius: 4px;\n$fallback--inputRadius: 4px;\n$fallback--tooltipRadius: 5px;\n$fallback--avatarRadius: 4px;\n$fallback--avatarAltRadius: 10px;\n$fallback--attachmentRadius: 10px;\n$fallback--chatMessageRadius: 10px;\n\n$fallback--buttonShadow: 0 0 2px 0 rgb(0 0 0 / 100%),\n 0 1px 0 0 rgb(255 255 255 / 20%) inset,\n 0 -1px 0 0 rgb(0 0 0 / 20%) inset;\n\n$status-margin: 0.75em;\n"],"names":[],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/css/9114.8def3b2b7fe70b3b3712.css b/priv/static/static/css/9114.8def3b2b7fe70b3b3712.css @@ -1,11 +0,0 @@ -.importer-uploading{font-size:1.5em;margin:.25em}.exporter-processing{margin:.25em}.autosuggest{position:relative}.autosuggest-input{display:block;width:100%}.autosuggest-results{background-color:#121a24;background-color:var(--bg,#121a24);border:1px solid #222;border-color:var(--border,#222);border-radius:4px;border-radius:var(--inputRadius,4px);border-top-left-radius:0;border-top-right-radius:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);left:0;max-height:400px;overflow-y:auto;position:absolute;right:0;top:100%;z-index:1}.block-card-content-container{margin-top:.5em;text-align:right}.block-card-content-container button{width:10em}.mute-card-content-container{margin-top:.5em;text-align:right}.mute-card-content-container button{width:10em}.domain-mute-card{align-items:center;display:flex;flex:1 0;justify-content:space-between;padding:.6em 1em .6em 0}.domain-mute-card-domain{margin-right:1em;overflow:hidden;text-overflow:ellipsis}.domain-mute-card button{width:10em}.autosuggest-results .domain-mute-card{padding-left:1em}.selectable-list-item-inner{align-items:center;display:flex}.selectable-list-item-inner>*{min-width:0}.selectable-list-item-selected-inner{--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon);background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);color:var(--selectedMenuText,#b9b9ba)}.selectable-list-header{align-items:center;border-bottom:2px solid #222;border-bottom-color:var(--border,#222);display:flex;padding:.6em 0}.selectable-list-header-actions{flex:1}.selectable-list-checkbox-wrapper{flex:none;padding:0 10px}.with-subscription-loading{padding:10px;text-align:center}.with-subscription-loading .error{font-size:1rem}.mutes-and-blocks-tab{height:100%}.mutes-and-blocks-tab .usersearch-wrapper{padding:1em}.mutes-and-blocks-tab .bulk-actions{min-height:2em;padding:0 1em;text-align:right}.mutes-and-blocks-tab .bulk-action-button{width:10em}.mutes-and-blocks-tab .domain-mute-form{display:flex;flex-direction:column;padding:1em}.mutes-and-blocks-tab .domain-mute-button{align-self:flex-end;margin-top:1em;width:10em}.ModifiedIndicator{display:inline-block;position:relative}.modified-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.ServerSideIndicator{display:inline-block;position:relative}.serverside-tooltip{margin:.5em 1em;min-width:10em;text-align:center}.mfa-backup-codes .warning{color:orange;color:var(--cOrange,orange)}.mfa-backup-codes .backup-codes{font-family:var(--postCodeFont,monospace)}.mfa-settings .method-item,.mfa-settings .mfa-heading{align-items:baseline;display:flex;flex-wrap:wrap;justify-content:space-between}.mfa-settings .warning{color:orange;color:var(--cOrange,orange)}.mfa-settings .setup-otp{display:flex;flex-wrap:wrap;justify-content:center}.mfa-settings .setup-otp .qr-code{flex:1;padding-right:10px}.mfa-settings .setup-otp .verify{flex:1}.mfa-settings .setup-otp .error{margin:4px 0 0}.mfa-settings .setup-otp .confirm-otp-actions button{margin-top:5px;width:15em} -/*! - * Cropper.js v1.5.12 - * https://fengyuanchen.github.io/cropperjs - * - * Copyright 2015-present Chen Fengyuan - * Released under the MIT license - * - * Date: 2021-06-12T08:00:11.623Z - */.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{bottom:0;left:0;position:absolute;right:0;top:0}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:rgba(51,153,255,.75);overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.image-cropper-img-input{display:none}.image-cropper-image-container{position:relative}.image-cropper-image-container img{display:block;max-width:100%}.image-cropper-buttons-wrapper{margin-top:10px}.image-cropper-buttons-wrapper button{margin-top:5px}.profile-tab .bio{margin:0}.profile-tab .visibility-tray{padding-top:5px}.profile-tab input[type=file]{height:auto;padding:5px}.profile-tab .banner-background-preview{max-width:100%;position:relative;width:300px}.profile-tab .banner-background-preview img{width:100%}.profile-tab .uploading{font-size:1.5em;margin:.25em}.profile-tab .name-changer{width:100%}.profile-tab .current-avatar-container{height:150px;position:relative;width:150px}.profile-tab .current-avatar{border-radius:4px;border-radius:var(--avatarRadius,4px);display:block;height:100%;width:100%}.profile-tab .reset-button{background-color:rgba(0,0,0,.6);border-radius:5px;border-radius:var(--tooltipRadius,5px);cursor:pointer;font-size:1.5em;height:1.5em;line-height:1.5em;opacity:.7;position:absolute;right:.2em;text-align:center;top:.2em;width:1.5em}.profile-tab .reset-button:hover{opacity:1}.profile-tab .reset-button svg{color:#fff}.profile-tab .oauth-tokens{width:100%}.profile-tab .oauth-tokens th{text-align:left}.profile-tab .oauth-tokens .actions{text-align:right}.profile-tab-usersearch-wrapper{padding:1em}.profile-tab-bulk-actions{min-height:2em;padding:0 1em;text-align:right}.profile-tab-bulk-actions button{width:10em}.profile-tab-domain-mute-form{display:flex;flex-direction:column;padding:1em}.profile-tab-domain-mute-form button{align-self:flex-end;margin-top:1em;width:10em}.profile-tab .setting-subitem{margin-left:1.75em}.profile-tab .profile-fields{display:flex}.profile-tab .profile-fields>.emoji-input{flex:1 1 auto;margin:0 .2em .5em;min-width:0}.profile-tab .profile-fields .delete-field{align-self:center;margin:0 .2em .5em;padding:0 .5em;width:20px}.profile-tab .birthday-input{display:block;margin-bottom:1em}.css-unit-input,.css-unit-input select{margin-left:.5em;max-width:4em;min-width:4em;width:4em}.column-settings{display:flex;flex-wrap:wrap;justify-content:space-evenly}.column-settings .size-label{display:block;margin-bottom:.5em;margin-top:.5em}.color-input{display:inline-flex}.color-input-field.input{align-items:stretch;display:inline-flex;flex:0 0 0;max-width:9em;padding:.2em 8px}.color-input-field.input input{background:none;border:none;color:#b9b9ba;color:var(--inputText,#b9b9ba);margin:0;padding:0}.color-input-field.input input.textColor{flex:1 0 3em;min-width:3em;padding:0}.color-input-field.input .computedIndicator,.color-input-field.input .transparentIndicator,.color-input-field.input input.nativeColor{align-self:stretch;flex:0 0 2em;min-height:100%;min-width:2em}.color-input-field.input .transparentIndicator{background-color:#f0f;position:relative}.color-input-field.input .transparentIndicator:after,.color-input-field.input .transparentIndicator:before{background-color:#000;content:"";display:block;height:50%;position:absolute;width:50%}.color-input-field.input .transparentIndicator:after{left:0;top:0}.color-input-field.input .transparentIndicator:before{bottom:0;right:0}.color-input .label{flex:1 1 auto}.color-control input.text-input{flex:1;max-width:7em}.shadow-control{display:flex;flex-wrap:wrap;justify-content:center;margin-bottom:1em}.shadow-control .shadow-preview-container,.shadow-control .shadow-tweak{margin:5px 6px 0 0}.shadow-control .shadow-preview-container{display:flex;flex:0;flex-wrap:wrap}.shadow-control .shadow-preview-container input[type=number]{min-width:2em;width:5em}.shadow-control .shadow-preview-container .x-shift-control,.shadow-control .shadow-preview-container .y-shift-control{display:flex;flex:0}.shadow-control .shadow-preview-container .x-shift-control[disabled=disabled] *,.shadow-control .shadow-preview-container .y-shift-control[disabled=disabled] *{opacity:.5}.shadow-control .shadow-preview-container .x-shift-control{align-items:flex-start}.shadow-control .shadow-preview-container .x-shift-control .wrap,.shadow-control .shadow-preview-container input[type=range]{height:2em;margin:0;width:15em}.shadow-control .shadow-preview-container .y-shift-control{align-items:flex-end;flex-direction:column}.shadow-control .shadow-preview-container .y-shift-control .wrap{height:15em;width:2em}.shadow-control .shadow-preview-container .y-shift-control input[type=range]{transform:rotate(90deg);transform-origin:1em 1em}.shadow-control .shadow-preview-container .preview-window{align-items:center;background-color:#999;background-image:linear-gradient(45deg,#666 25%,transparent 0),linear-gradient(-45deg,#666 25%,transparent 0),linear-gradient(45deg,transparent 75%,#666 0),linear-gradient(-45deg,transparent 75%,#666 0);background-position:0 0,0 10px,10px -10px,-10px 0;background-size:20px 20px;border-radius:4px;border-radius:var(--inputRadius,4px);display:flex;flex:1;justify-content:center}.shadow-control .shadow-preview-container .preview-window .preview-block{background-color:#121a24;background-color:var(--bg,#121a24);border-radius:10px;border-radius:var(--panelRadius,10px);height:33%;width:33%}.shadow-control .shadow-tweak{flex:1;min-width:280px}.shadow-control .shadow-tweak .id-control{align-items:stretch}.shadow-control .shadow-tweak .id-control .shadow-switcher{flex:1}.shadow-control .shadow-tweak .id-control .btn,.shadow-control .shadow-tweak .id-control .shadow-switcher{margin-right:5px;min-width:1px}.shadow-control .shadow-tweak .id-control .btn{margin:0 .1em;padding:0 .4em}.font-control input.custom-font{min-width:10em}.font-control.custom .font-switcher{border-bottom-right-radius:0;border-top-right-radius:0}.font-control.custom .custom-font{border-bottom-left-radius:0;border-top-left-radius:0}.contrast-ratio{display:flex;justify-content:flex-end;margin-bottom:5px;margin-top:-4px}.contrast-ratio .label{margin-right:1em}.contrast-ratio .rating{display:inline-block;margin-left:.5em;text-align:center}.preview-container{position:relative}.underlay-preview{bottom:0;left:10px;position:absolute;right:10px;top:0}.theme-tab{padding-bottom:2em}.theme-tab .preset-switcher{margin-right:1em}.theme-tab .btn{margin-left:.25em;margin-right:.25em}.theme-tab .style-control{align-items:baseline;display:flex;margin-bottom:5px}.theme-tab .style-control .label{flex:1}.theme-tab .style-control .opt{margin:.5em}.theme-tab .style-control .color-input{flex:0 0 0}.theme-tab .style-control input,.theme-tab .style-control select{flex:0;margin:0;min-width:3em}.theme-tab .style-control input[type=number],.theme-tab .style-control select[type=number]{min-width:5em}.theme-tab .style-control input[type=range],.theme-tab .style-control select[type=range]{align-self:flex-start;flex:1;min-width:3em}.theme-tab .style-control.disabled input,.theme-tab .style-control.disabled select{opacity:.5}.theme-tab .reset-container{flex-wrap:wrap}.theme-tab .apply-container,.theme-tab .color-container,.theme-tab .fonts-container,.theme-tab .radius-container,.theme-tab .reset-container{display:flex}.theme-tab .fonts-container,.theme-tab .radius-container{flex-direction:column}.theme-tab .color-container{flex-wrap:wrap;justify-content:space-between}.theme-tab .color-container>h4{width:99%}.theme-tab .color-container,.theme-tab .fonts-container,.theme-tab .presets-container,.theme-tab .radius-container,.theme-tab .shadow-container{margin:1em 1em 0}.theme-tab .tab-header{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:1em;min-height:30px;width:100%}.theme-tab .tab-header p{flex:1;margin:0 .5em 0 0}.theme-tab .tab-header-buttons{display:flex;flex-direction:column}.theme-tab .tab-header-buttons .btn{flex:0 auto;margin-bottom:.5em;min-width:1px;padding:0 1em}.theme-tab .shadow-selector .override{flex:1;margin-left:.5em}.theme-tab .shadow-selector .select-container{margin-bottom:-3px;margin-top:-4px}.theme-tab .save-load,.theme-tab .save-load-options{align-items:baseline;display:flex;flex-wrap:wrap;justify-content:center}.theme-tab .save-load .import-export,.theme-tab .save-load .presets,.theme-tab .save-load-options .import-export,.theme-tab .save-load-options .presets{margin-bottom:.5em}.theme-tab .save-load .import-export,.theme-tab .save-load-options .import-export{display:flex}.theme-tab .save-load .override,.theme-tab .save-load-options .override{margin-left:.5em}.theme-tab .save-load-options{flex-wrap:wrap;justify-content:center;margin-top:.5em}.theme-tab .save-load-options .keep-option{margin:0 .5em .5em;min-width:25%}.theme-tab .preview-container{background-color:var(--wallpaper);background-image:var(--body-background-image);background-position:50% 50%;background-size:cover;border-bottom:1px dashed #222;border-color:#222 currentcolor;border-top:1px dashed #222;border-color:var(--border,#222);margin:1em 0;padding:1em}.theme-tab .preview-container .dummy .post{display:flex;font-family:var(--postFont)}.theme-tab .preview-container .dummy .post .content{flex:1}.theme-tab .preview-container .dummy .post .content h4{margin-bottom:.25em}.theme-tab .preview-container .dummy .post .content .icons{display:flex;margin-top:.5em}.theme-tab .preview-container .dummy .post .content .icons i{margin-right:1em}.theme-tab .preview-container .dummy .after-post{align-items:center;display:flex;margin-top:1em}.theme-tab .preview-container .dummy .avatar,.theme-tab .preview-container .dummy .avatar-alt{background:linear-gradient(135deg,#b8e1fc,#a9d2f3 10%,#90bae4 25%,#90bcea 37%,#90bff0 50%,#6ba8e5 51%,#a2daf5 83%,#bdf3fd);color:#000;font-family:sans-serif;margin-right:1em;text-align:center}.theme-tab .preview-container .dummy .avatar-alt{border-radius:10px;border-radius:var(--avatarAltRadius,10px);flex:0 auto;font-size:12px;line-height:20px;margin-left:28px;min-height:20px;min-width:20px}.theme-tab .preview-container .dummy .avatar{flex:0 auto;font-size:14px;height:48px;line-height:48px;width:48px}.theme-tab .preview-container .dummy .actions{align-items:baseline;display:flex}.theme-tab .preview-container .dummy .actions .checkbox{align-items:baseline;display:inline-flex;flex:1;margin-right:1em}.theme-tab .preview-container .dummy .separator{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);margin:1em}.theme-tab .preview-container .dummy .btn{min-width:3em}.theme-tab .radius-item{flex-basis:auto}.theme-tab .color-item,.theme-tab .radius-item{display:flex;flex:1 1 0;flex-direction:column;margin:5px 6px 0 0;min-width:20em}.theme-tab .color-item.wide,.theme-tab .radius-item.wide{min-width:60%}.theme-tab .color-item:not(.wide):nth-child(odd),.theme-tab .radius-item:not(.wide):nth-child(odd){margin-right:7px}.theme-tab .color-item .color,.theme-tab .color-item .opacity,.theme-tab .radius-item .color,.theme-tab .radius-item .opacity{align-items:baseline;display:flex}.theme-tab .theme-color-cl,.theme-tab .theme-radius-rn{align-self:stretch;background:transparent;border:0;box-shadow:none;color:var(--faint,hsla(240,1%,73%,.5))}.theme-tab .theme-color-cl,.theme-tab .theme-color-in,.theme-tab .theme-radius-in{margin-left:4px}.theme-tab .theme-radius-in{flex:1;max-width:7em;min-width:1em}.theme-tab .theme-radius-lb{max-width:50em}.theme-tab .theme-preview-content{padding:20px}.theme-tab .theme-warning{align-items:baseline;display:flex;margin-bottom:.5em}.theme-tab .theme-warning .buttons .btn{margin-bottom:.5em}.extra-content .apply-container{display:flex;flex-direction:row;flex-grow:1;justify-content:space-around}.extra-content .apply-container .btn{flex-grow:1;max-width:10em;min-height:2em;min-width:0;padding:0}.settings_tab-switcher{height:100%}.settings_tab-switcher .setting-item{border-bottom:2px solid var(--fg,#182230);margin:1em 1em 1.4em;padding-bottom:1.4em}.settings_tab-switcher .setting-item>div,.settings_tab-switcher .setting-item>label{display:block;margin-bottom:.5em}.settings_tab-switcher .setting-item>div:last-child,.settings_tab-switcher .setting-item>label:last-child{margin-bottom:0}.settings_tab-switcher .setting-item .select-multiple{display:flex}.settings_tab-switcher .setting-item .select-multiple .option-list{margin:0;padding-left:.5em}.settings_tab-switcher .setting-item:last-child{border-bottom:none;margin-bottom:1em;padding-bottom:0}.settings_tab-switcher .setting-item select{min-width:10em}.settings_tab-switcher .setting-item textarea{height:100px;max-width:100%;width:100%}.settings_tab-switcher .setting-item .unavailable,.settings_tab-switcher .setting-item .unavailable svg{color:var(--cRed,red);color:red}.settings_tab-switcher .setting-item .number-input{max-width:6em} -/*# sourceMappingURL=9114.8def3b2b7fe70b3b3712.css.map*/ -\ No newline at end of file diff --git a/priv/static/static/css/9114.8def3b2b7fe70b3b3712.css.map b/priv/static/static/css/9114.8def3b2b7fe70b3b3712.css.map @@ -1 +0,0 @@ -{"version":3,"file":"static/css/9114.8def3b2b7fe70b3b3712.css","mappings":"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","sources":["webpack://pleroma_fe/./src/components/importer/importer.vue","webpack://pleroma_fe/./src/components/exporter/exporter.vue","webpack://pleroma_fe/./src/components/autosuggest/autosuggest.vue","webpack://pleroma_fe/./src/_variables.scss","webpack://pleroma_fe/./src/components/block_card/block_card.vue","webpack://pleroma_fe/./src/components/mute_card/mute_card.vue","webpack://pleroma_fe/./src/components/domain_mute_card/domain_mute_card.vue","webpack://pleroma_fe/./src/components/selectable_list/selectable_list.vue","webpack://pleroma_fe/./src/hocs/with_subscription/with_subscription.scss","webpack://pleroma_fe/./src/components/settings_modal/tabs/mutes_and_blocks_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/helpers/modified_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/server_side_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa.vue","webpack://pleroma_fe/./node_modules/cropperjs/dist/cropper.css","webpack://pleroma_fe/./src/components/image_cropper/image_cropper.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/profile_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/helpers/size_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/general_tab.vue","webpack://pleroma_fe/./src/components/color_input/color_input.scss","webpack://pleroma_fe/./src/components/color_input/color_input.vue","webpack://pleroma_fe/./src/components/shadow_control/shadow_control.vue","webpack://pleroma_fe/./src/components/font_control/font_control.vue","webpack://pleroma_fe/./src/components/contrast_ratio/contrast_ratio.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/preview.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/theme_tab.scss","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_content.scss"],"sourcesContent":["\n.importer {\n &-uploading {\n font-size: 1.5em;\n margin: 0.25em;\n }\n}\n","\n.exporter {\n &-processing {\n margin: 0.25em;\n }\n}\n","\n@import \"../../variables\";\n\n.autosuggest {\n position: relative;\n\n &-input {\n display: block;\n width: 100%;\n }\n\n &-results {\n position: absolute;\n left: 0;\n top: 100%;\n right: 0;\n max-height: 400px;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-style: solid;\n border-width: 1px;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n overflow-y: auto;\n z-index: 1;\n }\n}\n","$main-color: #f58d2c;\n$main-background: white;\n$darkened-background: whitesmoke;\n\n$fallback--bg: #121a24;\n$fallback--fg: #182230;\n$fallback--faint: rgb(185 185 186 / 50%);\n$fallback--text: #b9b9ba;\n$fallback--link: #d8a070;\n$fallback--icon: #666;\n$fallback--lightBg: rgb(21 30 42);\n$fallback--lightText: #b9b9ba;\n$fallback--border: #222;\n$fallback--cRed: #f00;\n$fallback--cBlue: #0095ff;\n$fallback--cGreen: #0fa00f;\n$fallback--cOrange: orange;\n\n$fallback--alertError: rgb(211 16 20 / 50%);\n$fallback--alertWarning: rgb(111 111 20 / 50%);\n\n$fallback--panelRadius: 10px;\n$fallback--checkboxRadius: 2px;\n$fallback--btnRadius: 4px;\n$fallback--inputRadius: 4px;\n$fallback--tooltipRadius: 5px;\n$fallback--avatarRadius: 4px;\n$fallback--avatarAltRadius: 10px;\n$fallback--attachmentRadius: 10px;\n$fallback--chatMessageRadius: 10px;\n\n$fallback--buttonShadow: 0 0 2px 0 rgb(0 0 0 / 100%),\n 0 1px 0 0 rgb(255 255 255 / 20%) inset,\n 0 -1px 0 0 rgb(0 0 0 / 20%) inset;\n\n$status-margin: 0.75em;\n","\n.block-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n","\n.mute-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n","\n.domain-mute-card {\n flex: 1 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.6em 1em 0.6em 0;\n\n &-domain {\n margin-right: 1em;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n button {\n width: 10em;\n }\n\n .autosuggest-results & {\n padding-left: 1em;\n }\n}\n","\n@import \"../../variables\";\n\n.selectable-list {\n &-item-inner {\n display: flex;\n align-items: center;\n\n > * {\n min-width: 0;\n }\n }\n\n &-item-selected-inner {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &-header {\n display: flex;\n align-items: center;\n padding: 0.6em 0;\n border-bottom: 2px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n\n &-actions {\n flex: 1;\n }\n }\n\n &-checkbox-wrapper {\n padding: 0 10px;\n flex: none;\n }\n}\n",".with-subscription {\n &-loading {\n padding: 10px;\n text-align: center;\n\n .error {\n font-size: 1rem;\n }\n }\n}\n",".mutes-and-blocks-tab {\n height: 100%;\n\n .usersearch-wrapper {\n padding: 1em;\n }\n\n .bulk-actions {\n text-align: right;\n padding: 0 1em;\n min-height: 2em;\n }\n\n .bulk-action-button {\n width: 10em;\n }\n\n .domain-mute-form {\n padding: 1em;\n display: flex;\n flex-direction: column;\n }\n\n .domain-mute-button {\n align-self: flex-end;\n margin-top: 1em;\n width: 10em;\n }\n}\n","\n.ModifiedIndicator {\n display: inline-block;\n position: relative;\n}\n\n.modified-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n.ServerSideIndicator {\n display: inline-block;\n position: relative;\n}\n\n.serverside-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n","\n@import \"../../../../variables\";\n\n.mfa-backup-codes {\n .warning {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n .backup-codes {\n font-family: var(--postCodeFont, monospace);\n }\n}\n","\n@import \"../../../../variables\";\n\n.mfa-settings {\n .mfa-heading,\n .method-item {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: baseline;\n }\n\n .warning {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n .setup-otp {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n\n .qr-code {\n flex: 1;\n padding-right: 10px;\n }\n .verify { flex: 1; }\n .error { margin: 4px 0 0; }\n\n .confirm-otp-actions {\n button {\n width: 15em;\n margin-top: 5px;\n }\n }\n }\n}\n","/*!\n * Cropper.js v1.5.12\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2021-06-12T08:00:11.623Z\n */\n\n.cropper-container {\n direction: ltr;\n font-size: 0;\n line-height: 0;\n position: relative;\n -ms-touch-action: none;\n touch-action: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.cropper-container img {\n display: block;\n height: 100%;\n image-orientation: 0deg;\n max-height: none !important;\n max-width: none !important;\n min-height: 0 !important;\n min-width: 0 !important;\n width: 100%;\n}\n\n.cropper-wrap-box,\n.cropper-canvas,\n.cropper-drag-box,\n.cropper-crop-box,\n.cropper-modal {\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.cropper-wrap-box,\n.cropper-canvas {\n overflow: hidden;\n}\n\n.cropper-drag-box {\n background-color: #fff;\n opacity: 0;\n}\n\n.cropper-modal {\n background-color: #000;\n opacity: 0.5;\n}\n\n.cropper-view-box {\n display: block;\n height: 100%;\n outline: 1px solid #39f;\n outline-color: rgba(51, 153, 255, 0.75);\n overflow: hidden;\n width: 100%;\n}\n\n.cropper-dashed {\n border: 0 dashed #eee;\n display: block;\n opacity: 0.5;\n position: absolute;\n}\n\n.cropper-dashed.dashed-h {\n border-bottom-width: 1px;\n border-top-width: 1px;\n height: calc(100% / 3);\n left: 0;\n top: calc(100% / 3);\n width: 100%;\n}\n\n.cropper-dashed.dashed-v {\n border-left-width: 1px;\n border-right-width: 1px;\n height: 100%;\n left: calc(100% / 3);\n top: 0;\n width: calc(100% / 3);\n}\n\n.cropper-center {\n display: block;\n height: 0;\n left: 50%;\n opacity: 0.75;\n position: absolute;\n top: 50%;\n width: 0;\n}\n\n.cropper-center::before,\n.cropper-center::after {\n background-color: #eee;\n content: ' ';\n display: block;\n position: absolute;\n}\n\n.cropper-center::before {\n height: 1px;\n left: -3px;\n top: 0;\n width: 7px;\n}\n\n.cropper-center::after {\n height: 7px;\n left: 0;\n top: -3px;\n width: 1px;\n}\n\n.cropper-face,\n.cropper-line,\n.cropper-point {\n display: block;\n height: 100%;\n opacity: 0.1;\n position: absolute;\n width: 100%;\n}\n\n.cropper-face {\n background-color: #fff;\n left: 0;\n top: 0;\n}\n\n.cropper-line {\n background-color: #39f;\n}\n\n.cropper-line.line-e {\n cursor: ew-resize;\n right: -3px;\n top: 0;\n width: 5px;\n}\n\n.cropper-line.line-n {\n cursor: ns-resize;\n height: 5px;\n left: 0;\n top: -3px;\n}\n\n.cropper-line.line-w {\n cursor: ew-resize;\n left: -3px;\n top: 0;\n width: 5px;\n}\n\n.cropper-line.line-s {\n bottom: -3px;\n cursor: ns-resize;\n height: 5px;\n left: 0;\n}\n\n.cropper-point {\n background-color: #39f;\n height: 5px;\n opacity: 0.75;\n width: 5px;\n}\n\n.cropper-point.point-e {\n cursor: ew-resize;\n margin-top: -3px;\n right: -3px;\n top: 50%;\n}\n\n.cropper-point.point-n {\n cursor: ns-resize;\n left: 50%;\n margin-left: -3px;\n top: -3px;\n}\n\n.cropper-point.point-w {\n cursor: ew-resize;\n left: -3px;\n margin-top: -3px;\n top: 50%;\n}\n\n.cropper-point.point-s {\n bottom: -3px;\n cursor: s-resize;\n left: 50%;\n margin-left: -3px;\n}\n\n.cropper-point.point-ne {\n cursor: nesw-resize;\n right: -3px;\n top: -3px;\n}\n\n.cropper-point.point-nw {\n cursor: nwse-resize;\n left: -3px;\n top: -3px;\n}\n\n.cropper-point.point-sw {\n bottom: -3px;\n cursor: nesw-resize;\n left: -3px;\n}\n\n.cropper-point.point-se {\n bottom: -3px;\n cursor: nwse-resize;\n height: 20px;\n opacity: 1;\n right: -3px;\n width: 20px;\n}\n\n@media (min-width: 768px) {\n .cropper-point.point-se {\n height: 15px;\n width: 15px;\n }\n}\n\n@media (min-width: 992px) {\n .cropper-point.point-se {\n height: 10px;\n width: 10px;\n }\n}\n\n@media (min-width: 1200px) {\n .cropper-point.point-se {\n height: 5px;\n opacity: 0.75;\n width: 5px;\n }\n}\n\n.cropper-point.point-se::before {\n background-color: #39f;\n bottom: -50%;\n content: ' ';\n display: block;\n height: 200%;\n opacity: 0;\n position: absolute;\n right: -50%;\n width: 200%;\n}\n\n.cropper-invisible {\n opacity: 0;\n}\n\n.cropper-bg {\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC');\n}\n\n.cropper-hide {\n display: block;\n height: 0;\n position: absolute;\n width: 0;\n}\n\n.cropper-hidden {\n display: none !important;\n}\n\n.cropper-move {\n cursor: move;\n}\n\n.cropper-crop {\n cursor: crosshair;\n}\n\n.cropper-disabled .cropper-drag-box,\n.cropper-disabled .cropper-face,\n.cropper-disabled .cropper-line,\n.cropper-disabled .cropper-point {\n cursor: not-allowed;\n}\n","\n.image-cropper {\n &-img-input {\n display: none;\n }\n\n &-image-container {\n position: relative;\n\n img {\n display: block;\n max-width: 100%;\n }\n }\n\n &-buttons-wrapper {\n margin-top: 10px;\n\n button {\n margin-top: 5px;\n }\n }\n}\n","@import \"../../../variables\";\n\n.profile-tab {\n .bio {\n margin: 0;\n }\n\n .visibility-tray {\n padding-top: 5px;\n }\n\n input[type=\"file\"] {\n padding: 5px;\n height: auto;\n }\n\n .banner-background-preview {\n max-width: 100%;\n width: 300px;\n position: relative;\n\n img {\n width: 100%;\n }\n }\n\n .uploading {\n font-size: 1.5em;\n margin: 0.25em;\n }\n\n .name-changer {\n width: 100%;\n }\n\n .current-avatar-container {\n position: relative;\n width: 150px;\n height: 150px;\n }\n\n .current-avatar {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n }\n\n .reset-button {\n position: absolute;\n top: 0.2em;\n right: 0.2em;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n background-color: rgb(0 0 0 / 60%);\n opacity: 0.7;\n width: 1.5em;\n height: 1.5em;\n text-align: center;\n line-height: 1.5em;\n font-size: 1.5em;\n cursor: pointer;\n\n &:hover {\n opacity: 1;\n }\n\n svg {\n color: white;\n }\n }\n\n .oauth-tokens {\n width: 100%;\n\n th {\n text-align: left;\n }\n\n .actions {\n text-align: right;\n }\n }\n\n &-usersearch-wrapper {\n padding: 1em;\n }\n\n &-bulk-actions {\n text-align: right;\n padding: 0 1em;\n min-height: 2em;\n\n button {\n width: 10em;\n }\n }\n\n &-domain-mute-form {\n padding: 1em;\n display: flex;\n flex-direction: column;\n\n button {\n align-self: flex-end;\n margin-top: 1em;\n width: 10em;\n }\n }\n\n .setting-subitem {\n margin-left: 1.75em;\n }\n\n .profile-fields {\n display: flex;\n\n & > .emoji-input {\n flex: 1 1 auto;\n margin: 0 0.2em 0.5em;\n min-width: 0;\n }\n\n .delete-field {\n width: 20px;\n align-self: center;\n margin: 0 0.2em 0.5em;\n padding: 0 0.5em;\n }\n }\n\n .birthday-input {\n display: block;\n margin-bottom: 1em;\n }\n}\n","\n.css-unit-input,\n.css-unit-input select {\n margin-left: 0.5em;\n width: 4em;\n max-width: 4em;\n min-width: 4em;\n}\n","\n.column-settings {\n display: flex;\n justify-content: space-evenly;\n flex-wrap: wrap;\n}\n\n.column-settings .size-label {\n display: block;\n margin-bottom: 0.5em;\n margin-top: 0.5em;\n}\n","@import \"../../variables\";\n\n.color-input {\n display: inline-flex;\n\n &-field.input {\n display: inline-flex;\n flex: 0 0 0;\n max-width: 9em;\n align-items: stretch;\n padding: 0.2em 8px;\n\n input {\n background: none;\n color: $fallback--lightText;\n color: var(--inputText, $fallback--lightText);\n border: none;\n padding: 0;\n margin: 0;\n\n &.textColor {\n flex: 1 0 3em;\n min-width: 3em;\n padding: 0;\n }\n\n &.nativeColor {\n flex: 0 0 2em;\n min-width: 2em;\n align-self: stretch;\n min-height: 100%;\n }\n }\n\n .computedIndicator,\n .transparentIndicator {\n flex: 0 0 2em;\n min-width: 2em;\n align-self: stretch;\n min-height: 100%;\n }\n\n .transparentIndicator {\n // forgot to install counter-strike source, ooops\n background-color: #f0f;\n position: relative;\n\n &::before,\n &::after {\n display: block;\n content: \"\";\n background-color: #000;\n position: absolute;\n height: 50%;\n width: 50%;\n }\n\n &::after {\n top: 0;\n left: 0;\n }\n\n &::before {\n bottom: 0;\n right: 0;\n }\n }\n }\n\n .label {\n flex: 1 1 auto;\n }\n}\n","\n.color-control {\n input.text-input {\n max-width: 7em;\n flex: 1;\n }\n}\n","\n@import \"../../variables\";\n\n.shadow-control {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n margin-bottom: 1em;\n\n .shadow-preview-container,\n .shadow-tweak {\n margin: 5px 6px 0 0;\n }\n\n .shadow-preview-container {\n flex: 0;\n display: flex;\n flex-wrap: wrap;\n\n $side: 15em;\n\n input[type=\"number\"] {\n width: 5em;\n min-width: 2em;\n }\n\n .x-shift-control,\n .y-shift-control {\n display: flex;\n flex: 0;\n\n &[disabled=\"disabled\"] * {\n opacity: 0.5;\n }\n }\n\n .x-shift-control {\n align-items: flex-start;\n }\n\n .x-shift-control .wrap,\n input[type=\"range\"] {\n margin: 0;\n width: $side;\n height: 2em;\n }\n\n .y-shift-control {\n flex-direction: column;\n align-items: flex-end;\n\n .wrap {\n width: 2em;\n height: $side;\n }\n\n input[type=\"range\"] {\n transform-origin: 1em 1em;\n transform: rotate(90deg);\n }\n }\n\n .preview-window {\n flex: 1;\n background-color: #999;\n display: flex;\n align-items: center;\n justify-content: center;\n background-image:\n linear-gradient(45deg, #666 25%, transparent 25%),\n linear-gradient(-45deg, #666 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, #666 75%),\n linear-gradient(-45deg, transparent 75%, #666 75%);\n background-size: 20px 20px;\n background-position: 0 0, 0 10px, 10px -10px, -10px 0;\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .preview-block {\n width: 33%;\n height: 33%;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n }\n\n .shadow-tweak {\n flex: 1;\n min-width: 280px;\n\n .id-control {\n align-items: stretch;\n\n .shadow-switcher {\n flex: 1;\n }\n\n .shadow-switcher,\n .btn {\n min-width: 1px;\n margin-right: 5px;\n }\n\n .btn {\n padding: 0 0.4em;\n margin: 0 0.1em;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n\n.font-control {\n input.custom-font {\n min-width: 10em;\n }\n\n &.custom {\n /* TODO Should make proper joiners... */\n .font-switcher {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .custom-font {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n}\n","\n.contrast-ratio {\n display: flex;\n justify-content: flex-end;\n margin-top: -4px;\n margin-bottom: 5px;\n\n .label {\n margin-right: 1em;\n }\n\n .rating {\n display: inline-block;\n text-align: center;\n margin-left: 0.5em;\n }\n}\n","\n.preview-container {\n position: relative;\n}\n\n.underlay-preview {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 10px;\n right: 10px;\n}\n","@import \"src/variables\";\n\n.theme-tab {\n padding-bottom: 2em;\n\n .preset-switcher {\n margin-right: 1em;\n }\n\n .btn {\n margin-left: 0.25em;\n margin-right: 0.25em;\n }\n\n .style-control {\n display: flex;\n align-items: baseline;\n margin-bottom: 5px;\n\n .label {\n flex: 1;\n }\n\n .opt {\n margin: 0.5em;\n }\n\n .color-input {\n flex: 0 0 0;\n }\n\n input,\n select {\n min-width: 3em;\n margin: 0;\n flex: 0;\n\n &[type=\"number\"] {\n min-width: 5em;\n }\n\n &[type=\"range\"] {\n flex: 1;\n min-width: 3em;\n align-self: flex-start;\n }\n }\n\n &.disabled {\n input,\n select {\n opacity: 0.5;\n }\n }\n }\n\n .reset-container {\n flex-wrap: wrap;\n }\n\n .fonts-container,\n .reset-container,\n .apply-container,\n .radius-container,\n .color-container, {\n display: flex;\n }\n\n .fonts-container,\n .radius-container {\n flex-direction: column;\n }\n\n .color-container {\n > h4 {\n width: 99%;\n }\n\n flex-wrap: wrap;\n justify-content: space-between;\n }\n\n .fonts-container,\n .color-container,\n .shadow-container,\n .radius-container,\n .presets-container {\n margin: 1em 1em 0;\n }\n\n .tab-header {\n display: flex;\n justify-content: space-between;\n align-items: baseline;\n width: 100%;\n min-height: 30px;\n margin-bottom: 1em;\n\n p {\n flex: 1;\n margin: 0;\n margin-right: 0.5em;\n }\n }\n\n .tab-header-buttons {\n display: flex;\n flex-direction: column;\n\n .btn {\n min-width: 1px;\n flex: 0 auto;\n padding: 0 1em;\n margin-bottom: 0.5em;\n }\n }\n\n .shadow-selector {\n .override {\n flex: 1;\n margin-left: 0.5em;\n }\n\n .select-container {\n margin-top: -4px;\n margin-bottom: -3px;\n }\n }\n\n .save-load,\n .save-load-options {\n display: flex;\n justify-content: center;\n align-items: baseline;\n flex-wrap: wrap;\n\n .presets,\n .import-export {\n margin-bottom: 0.5em;\n }\n\n .import-export {\n display: flex;\n }\n\n .override {\n margin-left: 0.5em;\n }\n }\n\n .save-load-options {\n flex-wrap: wrap;\n margin-top: 0.5em;\n justify-content: center;\n\n .keep-option {\n margin: 0 0.5em 0.5em;\n min-width: 25%;\n }\n }\n\n .preview-container {\n border-top: 1px dashed;\n border-bottom: 1px dashed;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n margin: 1em 0;\n padding: 1em;\n background-color: var(--wallpaper);\n background-image: var(--body-background-image);\n background-size: cover;\n background-position: 50% 50%;\n\n .dummy {\n .post {\n font-family: var(--postFont);\n display: flex;\n\n .content {\n flex: 1;\n\n h4 {\n margin-bottom: 0.25em;\n }\n\n .icons {\n margin-top: 0.5em;\n display: flex;\n\n i {\n margin-right: 1em;\n }\n }\n }\n }\n\n .after-post {\n margin-top: 1em;\n display: flex;\n align-items: center;\n }\n\n .avatar,\n .avatar-alt {\n background:\n linear-gradient(\n 135deg,\n #b8e1fc 0%,\n #a9d2f3 10%,\n #90bae4 25%,\n #90bcea 37%,\n #90bff0 50%,\n #6ba8e5 51%,\n #a2daf5 83%,\n #bdf3fd 100%\n );\n color: black;\n font-family: sans-serif;\n text-align: center;\n margin-right: 1em;\n }\n\n .avatar-alt {\n flex: 0 auto;\n margin-left: 28px;\n font-size: 12px;\n min-width: 20px;\n min-height: 20px;\n line-height: 20px;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .avatar {\n flex: 0 auto;\n width: 48px;\n height: 48px;\n font-size: 14px;\n line-height: 48px;\n }\n\n .actions {\n display: flex;\n align-items: baseline;\n\n .checkbox {\n display: inline-flex;\n align-items: baseline;\n margin-right: 1em;\n flex: 1;\n }\n }\n\n .separator {\n margin: 1em;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n .btn {\n min-width: 3em;\n }\n }\n }\n\n .radius-item {\n flex-basis: auto;\n }\n\n .radius-item,\n .color-item {\n min-width: 20em;\n margin: 5px 6px 0 0;\n display: flex;\n flex-direction: column;\n flex: 1 1 0;\n\n &.wide {\n min-width: 60%;\n }\n\n &:not(.wide):nth-child(2n+1) {\n margin-right: 7px;\n }\n\n .color,\n .opacity {\n display: flex;\n align-items: baseline;\n }\n }\n\n .theme-radius-rn,\n .theme-color-cl {\n border: 0;\n box-shadow: none;\n background: transparent;\n color: var(--faint, $fallback--faint);\n align-self: stretch;\n }\n\n .theme-color-cl,\n .theme-radius-in,\n .theme-color-in {\n margin-left: 4px;\n }\n\n .theme-radius-in {\n min-width: 1em;\n max-width: 7em;\n flex: 1;\n }\n\n .theme-radius-lb {\n max-width: 50em;\n }\n\n .theme-preview-content {\n padding: 20px;\n }\n\n .theme-warning {\n display: flex;\n align-items: baseline;\n margin-bottom: 0.5em;\n\n .buttons {\n .btn {\n margin-bottom: 0.5em;\n }\n }\n }\n}\n\n.extra-content {\n .apply-container {\n display: flex;\n flex-direction: row;\n justify-content: space-around;\n flex-grow: 1;\n\n /* stylelint-disable-next-line no-descending-specificity */\n .btn {\n flex-grow: 1;\n min-height: 2em;\n min-width: 0;\n max-width: 10em;\n padding: 0;\n }\n }\n}\n","@import \"src/variables\";\n\n.settings_tab-switcher {\n height: 100%;\n\n .setting-item {\n border-bottom: 2px solid var(--fg, $fallback--fg);\n margin: 1em 1em 1.4em;\n padding-bottom: 1.4em;\n\n > div,\n > label {\n display: block;\n margin-bottom: 0.5em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n .select-multiple {\n display: flex;\n\n .option-list {\n margin: 0;\n padding-left: 0.5em;\n }\n }\n\n &:last-child {\n border-bottom: none;\n padding-bottom: 0;\n margin-bottom: 1em;\n }\n\n select {\n min-width: 10em;\n }\n\n textarea {\n width: 100%;\n max-width: 100%;\n height: 100px;\n }\n\n .unavailable,\n .unavailable svg {\n color: var(--cRed, $fallback--cRed);\n color: $fallback--cRed;\n }\n\n .number-input {\n max-width: 6em;\n }\n }\n}\n"],"names":[],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/css/app.48e52505beba5b9ab69b.css b/priv/static/static/css/app.48e52505beba5b9ab69b.css @@ -1,2 +0,0 @@ -.modal-view{align-items:center;animation-duration:.2s;animation-name:modal-background-fadein;bottom:0;display:flex;justify-content:center;left:0;opacity:0;overflow:auto;pointer-events:none;position:fixed;right:0;top:0;z-index:var(--ZI_modals)}.modal-view>*{pointer-events:auto}.modal-view.modal-background{background-color:rgba(0,0,0,.5);pointer-events:auto}.modal-view.open{opacity:1}@keyframes modal-background-fadein{0%{background-color:transparent}to{background-color:rgba(0,0,0,.5)}}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.vue-recycle-scroller__slot{-webkit-box-flex:1;-ms-flex:auto 0 0px;flex:auto 0 0}.vue-recycle-scroller__item-wrapper{-webkit-box-flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex:1;flex:1;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{left:0;position:absolute;top:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{background-color:transparent;border:none;opacity:0}.resize-observer[data-v-b329ee4c],.resize-observer[data-v-b329ee4c] object{display:block;height:100%;left:0;overflow:hidden;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}.login-form{display:flex;flex-direction:column;padding:.6em}.login-form .btn{min-height:2em;width:10em}.login-form .register{flex:1 1}.login-form .login-bottom{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-top:1em}.login-form .form-group{display:flex;flex-direction:column;line-height:24px;padding:.3em .5em .6em}.login-form .form-bottom{display:flex;height:32px;padding:.5em}.login-form .form-bottom button{width:10em}.login-form .form-bottom p{display:flex;margin:.35em;padding:.35em}.login-form .error{animation-duration:.4s;animation-name:shakeError;animation-timing-function:ease-in-out;text-align:center}.media-upload{cursor:pointer}.media-upload .hidden-input-file{display:none}.ScopeSelector .scope{cursor:pointer;display:inline-block;min-height:1.3em;min-width:1.3em;text-align:center}.ScopeSelector .scope.selected svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.checkbox{display:inline-block;min-height:1.2em;position:relative}.checkbox-indicator{padding-left:1.2em;position:relative}.checkbox-indicator:before{background-color:#182230;background-color:var(--input,#182230);border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);box-sizing:border-box;color:transparent;content:"✓";display:block;font-size:1.1em;height:1.1em;line-height:1.1em;overflow:hidden;position:absolute;right:0;text-align:center;top:0;transition:color .2s;vertical-align:top;width:1.1em}.checkbox.disabled .checkbox-indicator:before,.checkbox.disabled .label{opacity:.5}.checkbox.disabled .label{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.checkbox input[type=checkbox]:checked+.checkbox-indicator:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox input[type=checkbox]:indeterminate+.checkbox-indicator:before{color:#b9b9ba;color:var(--inputText,#b9b9ba);content:"–"}.checkbox>span{margin-left:.5em}.popover-trigger-button{display:inline-block}.popover{box-shadow:2px 2px 3px rgba(0,0,0,.5);box-shadow:var(--popupShadow);max-width:calc(100vw - 20px);min-width:0;position:fixed;z-index:var(--ZI_popover_override,var(--ZI_popovers))}.popover-default{--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--postLink:var(--popoverPostLink,$fallback--link);--postFaintLink:var(--popoverPostFaintLink,$fallback--link);--icon:var(--popoverIcon,$fallback--icon);background-color:#121a24;background-color:var(--popover,#121a24);border-radius:4px;border-radius:var(--btnRadius,4px);color:#b9b9ba;color:var(--popoverText,#b9b9ba)}.popover-default:after{bottom:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);content:"";left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:3}.dropdown-menu{display:block;font-size:1em;list-style:none;max-width:100vw;padding:.5rem 0;text-align:left;white-space:nowrap;z-index:var(--ZI_popover_override,var(--ZI_popovers))}.dropdown-menu .dropdown-divider{border-top:1px solid #222;border-top:1px solid var(--border,#222);height:0;margin:.5rem 0;overflow:hidden}.dropdown-menu .dropdown-item{--btnText:var(--popoverText,$fallback--text);background-color:transparent;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;clear:both;display:block;font-weight:400;height:100%;line-height:21px;overflow:hidden;padding:.5em .75em;text-align:inherit;white-space:nowrap;width:100%}.dropdown-menu .dropdown-item-icon svg{color:var(--menuPopoverIcon,#666);margin-right:.75rem;width:22px}.dropdown-menu .dropdown-item.-has-submenu .chevron-icon{margin-left:2rem;margin-right:.25rem}.dropdown-menu .dropdown-item:active,.dropdown-menu .dropdown-item:hover{--btnText:var(--selectedMenuPopoverText,$fallback--link);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon);background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);box-shadow:none}.dropdown-menu .dropdown-item:active svg,.dropdown-menu .dropdown-item:hover svg{--icon:var(--selectedMenuPopoverIcon,$fallback--icon);color:var(--selectedMenuPopoverIcon,#666)}.dropdown-menu .dropdown-item .menu-checkbox{background-color:#182230;background-color:var(--input,#182230);border-radius:0;box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);display:inline-block;line-height:22px;margin-right:.75em;max-height:22px;max-width:22px;min-height:22px;min-width:22px;text-align:center;vertical-align:middle}.dropdown-menu .dropdown-item .menu-checkbox.menu-checkbox-checked:after{content:"✓";font-size:1.25em}.dropdown-menu .dropdown-item .menu-checkbox.-radio{border-radius:9999px}.dropdown-menu .dropdown-item .menu-checkbox.-radio.menu-checkbox-checked:after{content:"•";font-size:2em}.dropdown-menu .button-default.dropdown-item,.dropdown-menu .button-default.dropdown-item i[class*=icon-]{color:#b9b9ba;color:var(--btnText,#b9b9ba)}.dropdown-menu .button-default.dropdown-item:active{background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#d8a070;color:var(--selectedMenuPopoverText,#d8a070)}.dropdown-menu .button-default.dropdown-item:disabled{color:#b9b9ba;color:var(--btnDisabledText,#b9b9ba)}.dropdown-menu .button-default.dropdown-item.toggled{color:#b9b9ba;color:var(--btnToggledText,#b9b9ba)}.still-image{align-items:center;display:inline-flex;line-height:0;overflow:hidden;position:relative}.still-image canvas{bottom:0;left:0;position:absolute;right:0;top:0;visibility:var(--_still-image-canvas-visibility,visible)}.still-image canvas,.still-image img{height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.still-image.animated:before{zoom:var(--_still_image-label-scale,1);background:hsla(0,0%,50%,.5);border-radius:5px;border-radius:var(--tooltipRadius,5px);color:#fff;content:"gif";display:block;font-size:.7em;left:.5em;line-height:1;padding:2px 4px;position:absolute;top:.5em;visibility:var(--_still-image-label-visibility,visible);z-index:2}.still-image.animated:hover canvas{display:none}.still-image.animated:hover:before{visibility:var(--_still-image-label-visibility,hidden)}.still-image.animated img{visibility:var(--_still-image-img-visibility,hidden)}.still-image.animated:hover img{visibility:visible}.emoji-picker{--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon);background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);display:flex;flex-direction:column;max-width:calc(100vw - 20px);width:25em}.emoji-picker-header-image{align-items:center;display:inline-flex;height:32px;justify-content:center;max-height:32px;max-width:32px;width:32px}.emoji-picker-header-image .still-image{height:100%;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;width:100%}.emoji-picker .keep-open,.emoji-picker .too-many-emoji{line-height:normal;padding:7px}.emoji-picker .too-many-emoji{display:flex;flex-direction:column}.emoji-picker .keep-open-label{display:flex;padding:0 7px}.emoji-picker .heading{display:flex;padding:10px 7px 5px}.emoji-picker .content{display:flex;flex:1 1 auto;flex-direction:column;min-height:0}.emoji-picker .emoji-tabs{display:flex;flex-flow:row nowrap;flex-grow:1;overflow-x:auto}.emoji-picker .additional-tabs{border-left:1px solid #666;border-left-color:var(--icon,#666);display:flex;flex:0 0 auto;padding-left:7px}.emoji-picker .additional-tabs,.emoji-picker .emoji-tabs{align-content:center;display:flex;flex-basis:auto}.emoji-picker .additional-tabs-item,.emoji-picker .emoji-tabs-item{align-items:center;cursor:pointer;display:flex;font-size:1.85em;height:32px;max-height:32px;max-width:32px;padding:0 7px;width:32px}.emoji-picker .additional-tabs-item.disabled,.emoji-picker .emoji-tabs-item.disabled{opacity:.5;pointer-events:none}.emoji-picker .additional-tabs-item.active,.emoji-picker .emoji-tabs-item.active{border-bottom:4px solid}.emoji-picker .additional-tabs-item.active svg,.emoji-picker .emoji-tabs-item.active svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.emoji-picker .sticker-picker{flex:1 1 auto}.emoji-picker .emoji-content,.emoji-picker .stickers-content{display:flex;flex:1 1 auto;flex-direction:column;min-height:0}.emoji-picker .emoji-content.hidden,.emoji-picker .stickers-content.hidden{opacity:0;pointer-events:none;position:absolute}.emoji-picker .emoji-search{flex:0 0 auto;padding:5px}.emoji-picker .emoji-search input{width:100%}.emoji-picker .emoji-groups{flex:1 1 1px;height:100%;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;min-height:200px;overflow:auto;position:relative;transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.emoji-picker .emoji-groups.scrolled-top{-webkit-mask-size:100% 20px,100% 0,auto;mask-size:100% 20px,100% 0,auto}.emoji-picker .emoji-groups.scrolled-bottom{-webkit-mask-size:100% 0,100% 20px,auto;mask-size:100% 0,100% 20px,auto}.emoji-picker .emoji-group{align-items:center;display:flex;flex-wrap:wrap;justify-content:left;padding-left:5px}.emoji-picker .emoji-group-title{font-size:.85em;margin:0;width:100%}.emoji-picker .emoji-group-title.disabled{display:none}.emoji-picker .emoji-item{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;height:32px;justify-content:center;line-height:32px;margin:4px;width:32px}.emoji-picker .emoji-item .emoji-picker-emoji.-custom{max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain}.emoji-picker .emoji-item .emoji-picker-emoji.-unicode{font-size:24px;overflow:hidden}.emoji-input{display:flex;flex-direction:column;position:relative}.emoji-input .emoji-picker-icon{cursor:pointer;font-size:1.3em;line-height:24px;margin:.2em .25em;position:absolute;right:0;top:0}.emoji-input .emoji-picker-icon:hover i{color:#b9b9ba;color:var(--text,#b9b9ba)}.emoji-input .emoji-picker-panel{margin-top:2px;position:absolute;z-index:20}.emoji-input .emoji-picker-panel.hide{display:none}.emoji-input input,.emoji-input textarea{flex:1 0 auto}.emoji-input.with-picker input{padding-right:30px}.emoji-input .hidden-overlay{bottom:0;color:red;left:0;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0}.emoji-input .hidden-overlay .caret{border:1px solid red;margin-right:calc(-1ch - 1px);width:0}.autocomplete-panel{position:absolute}.autocomplete-item{border-bottom:1px solid rgba(0,0,0,.4);cursor:pointer;display:flex;height:32px;padding:.2em .4em}.autocomplete-item .image{font-size:32px;height:32px;line-height:32px;margin-right:4px;text-align:center;width:32px}.autocomplete-item .image img{height:32px;-o-object-fit:contain;object-fit:contain;width:32px}.autocomplete-item .label{display:flex;flex-direction:column;justify-content:center;margin:0 .1em 0 .2em}.autocomplete-item .label .displayText{line-height:1.5}.autocomplete-item .label .detailText{font-size:9px;line-height:9px}.autocomplete-item.highlighted{--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon);background-color:#182230;background-color:var(--selectedMenuPopover,#182230);color:var(--selectedMenuPopoverText,#b9b9ba)}label.Select{padding:0}label.Select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:#b9b9ba;color:var(--inputText,--text,#b9b9ba);font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:1em;height:2em;line-height:16px;margin:0;padding:0 2em 0 .2em;width:100%;z-index:1}label.Select .select-down-icon{bottom:0;color:#b9b9ba;color:var(--inputText,#b9b9ba);height:100%;line-height:2;pointer-events:none;position:absolute;right:5px;top:0;width:.875em;z-index:0}.poll-form{display:flex;flex-direction:column;padding:0 .5em .5em}.poll-form .add-option{align-self:flex-start;padding-left:.1em;padding-top:.25em}.poll-form .poll-option{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:.25em}.poll-form .input-container{width:100%}.poll-form .input-container input{padding-right:2.5em;width:100%}.poll-form .delete-option{margin-left:-1.5em;width:1.5em;z-index:1}.poll-form .poll-type-expiry{display:flex;margin-top:.5em;width:100%}.poll-form .poll-type{flex:1 1 60%;margin-right:.75em}.poll-form .poll-type .poll-type-select{padding-right:.75em}.poll-form .poll-expiry{display:flex}.poll-form .poll-expiry .expiry-amount{text-align:right;width:3em}.Flash{display:inline-block;position:relative}.Flash,.Flash .placeholder,.Flash .player{height:100%;width:100%}.Flash .placeholder{align-items:center;background:var(--bg);color:var(--link);display:flex;justify-content:center}.Flash .hider{top:0}.Flash .label{word-wrap:normal;flex:1 1 0;line-height:1.2;text-align:center;white-space:normal}.Flash .hidden{display:none;visibility:"hidden"}.Attachment{align-self:flex-start;border:1px solid #222;border-color:var(--border,#222);border-radius:10px;border-radius:var(--attachmentRadius,10px);display:inline-flex;flex-direction:column;height:100%;line-height:0;position:relative}.Attachment .attachment-wrapper{flex:1 1 auto;height:100%;overflow:hidden;position:relative}.Attachment .description-container{display:flex;flex:0 1 0;padding-top:.5em;z-index:1}.Attachment .description-container p{flex:1;line-height:1.5;margin:0;overflow:hidden;padding:.5em;text-align:center;text-overflow:ellipsis;white-space:nowrap}.Attachment .description-container.-static{background:var(--popover);bottom:0;box-shadow:var(--popupShadow);left:0;padding-top:0;position:absolute;right:0}.Attachment .description-field{flex:1;min-width:0}.Attachment .audio-container,.Attachment .flash-container,.Attachment .image-container,.Attachment .oembed-container,.Attachment .placeholder-container,.Attachment .video-container{display:flex;height:100%;justify-content:center;width:100%}.Attachment .image-container .image{height:100%;width:100%}.Attachment .flash-container .flash,.Attachment .flash-container video,.Attachment .video-container .flash,.Attachment .video-container video{align-self:center;height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.Attachment .audio-container{align-items:flex-end;display:flex}.Attachment .audio-container audio{height:100%;width:100%}.Attachment .placeholder-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding-top:.5em}.Attachment .play-icon{color:hsla(0,0%,100%,.75);font-size:64px;left:calc(50% - 32px);position:absolute;text-shadow:0 0 2px rgba(0,0,0,.4);top:calc(50% - 32px)}.Attachment .play-icon:before{margin:0}.Attachment .attachment-buttons{display:flex;margin-right:.5em;margin-top:.5em;position:absolute;right:0;top:0;z-index:1}.Attachment .attachment-buttons .attachment-button{background:hsla(0,0%,90%,.7);border-radius:5px;border-radius:var(--tooltipRadius,5px);font-size:1.25em;height:2em;margin-left:.5em;padding:0;text-align:center;width:2em}.Attachment .attachment-buttons .attachment-button .svg-inline--fa{color:rgba(0,0,0,.6)}.Attachment .attachment-buttons .attachment-button:hover .svg-inline--fa{color:rgba(0,0,0,.9)}.Attachment.-contain-fit canvas,.Attachment.-contain-fit img{-o-object-fit:contain;object-fit:contain}.Attachment.-cover-fit canvas,.Attachment.-cover-fit img{-o-object-fit:cover;object-fit:cover}.Attachment .oembed-container{display:flex;flex:1 0 100%;line-height:1.2em;margin-right:15px;width:100%}.Attachment .oembed-container img{width:100%}.Attachment .oembed-container .image{flex:1}.Attachment .oembed-container .image img{border:0;border-radius:5px;height:100%;-o-object-fit:cover;object-fit:cover}.Attachment .oembed-container .text{flex:2;margin:8px;word-break:break-all}.Attachment .oembed-container .text h1{font-size:1rem;margin:0}.Attachment.-size-small .play-icon{zoom:.5;opacity:.7}.Attachment.-size-small .attachment-buttons{zoom:.7;opacity:.5}.Attachment.-editable{padding:.5em}.Attachment.-editable .attachment-buttons,.Attachment.-editable .description-container{margin:0}.Attachment.-placeholder{color:#d8a070;color:var(--postLink,#d8a070);display:inline-block;height:auto;line-height:1.5;overflow:hidden;white-space:nowrap}.Attachment.-placeholder:not(.-editable){border:none}.Attachment.-placeholder.-editable{align-items:baseline;display:flex;flex-direction:row}.Attachment.-placeholder.-editable .attachment-buttons,.Attachment.-placeholder.-editable .description-container{margin:0;padding:0;position:relative}.Attachment.-placeholder.-editable .description-container{flex:1;padding-left:.5em}.Attachment.-placeholder.-editable .attachment-buttons{align-self:center;order:99}.Attachment.-placeholder a{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis}.Attachment.-placeholder svg{color:inherit}.Attachment.-loading{cursor:progress}.Attachment.-compact .placeholder-container{padding-bottom:.5em}.Gallery .gallery-rows{display:flex;flex-direction:column}.Gallery .gallery-row{flex-grow:1;height:0;position:relative;width:100%}.Gallery .gallery-row .gallery-row-inner{align-content:stretch;bottom:0;display:flex;flex-flow:row wrap;left:0;position:absolute;right:0;top:0}.Gallery .gallery-row .gallery-row-inner .gallery-item{box-sizing:border-box;flex-grow:1;height:100%;margin:0 .5em 0 0;min-width:2em}.Gallery .gallery-row .gallery-row-inner .gallery-item:last-child{margin:0}.Gallery .gallery-row .gallery-row-inner.-grid{grid-gap:.5em;display:grid;grid-template-columns:repeat(auto-fill,minmax(15em,1fr));height:auto;position:relative;width:100%}.Gallery .gallery-row .gallery-row-inner.-grid .gallery-item{height:200px;margin:0}.Gallery .gallery-row.-grid,.Gallery .gallery-row.-minimal{height:auto}.Gallery .gallery-row.-grid .gallery-row-inner,.Gallery .gallery-row.-minimal .gallery-row-inner{position:relative}.Gallery .gallery-row:not(:first-child){margin-top:.5em}.Gallery.-long .gallery-rows{-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;max-height:25em;overflow:hidden}.Gallery .many-attachments-text{line-height:2;text-align:center}.Gallery .many-attachments-buttons{display:flex}.Gallery .many-attachments-button{display:flex;flex:1;justify-content:center;line-height:2}.Gallery .many-attachments-button button{padding:0 2em}.Avatar{--_avatarShadowBox:var(--avatarStatusShadow);--_avatarShadowFilter:var(--avatarStatusShadowFilter);--_avatarShadowInset:var(--avatarStatusShadowInset);--_still-image-label-visibility:hidden;display:inline-block;height:48px;position:relative;width:48px}.Avatar.-compact{border-radius:10px;border-radius:var(--avatarAltRadius,10px);height:32px;width:32px}.Avatar .avatar{border-radius:4px;border-radius:var(--avatarRadius,4px);box-shadow:var(--_avatarShadowBox);height:100%;width:100%}.Avatar .avatar.-better-shadow{box-shadow:var(--_avatarShadowInset);filter:var(--_avatarShadowFilter)}.Avatar .avatar.-animated:before{display:none}.Avatar .avatar.-compact{border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.Avatar .avatar.-placeholder{background-color:#182230;background-color:var(--fg,#182230)}.Avatar img{height:100%;width:100%}.Avatar .bot-indicator{background:hsla(0,0%,50%,.5);border-radius:var(--tooltipRadius);bottom:0;color:#fff;margin:-.2em;padding:.2em;position:absolute;right:0}.MentionLink{color:var(--link);display:inline;position:relative;white-space:normal;word-break:normal}.MentionLink .new,.MentionLink .original{border-radius:2px;display:inline}.MentionLink .mention-avatar{border-radius:var(--avatarAltRadius,10px);height:1.5em;margin-right:.2em;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1.5em}.MentionLink .full{word-wrap:normal;display:inline-block;height:100%;left:0;margin-top:.25em;opacity:0;padding:.5em;pointer-events:none;position:absolute;top:100%;transition:opacity .2s ease;-webkit-user-select:all;-moz-user-select:all;user-select:all;white-space:nowrap;z-index:1}.MentionLink .short.-with-tooltip,.MentionLink .you{-webkit-user-select:none;-moz-user-select:none;user-select:none}.MentionLink .full,.MentionLink .short{white-space:nowrap}.MentionLink .shortName{white-space:normal}.MentionLink .new.-you .shortName{font-weight:600}.MentionLink .new.-has-selection{background-color:var(--alertNeutral,#182230);color:var(--alertNeutralText,#b9b9ba)}.MentionLink .new .at{color:var(--link);display:inline-block;line-height:1;margin:0;opacity:.8;padding:0 .1em;vertical-align:-25%}.MentionLink .new.-striped .shortName{background-image:repeating-linear-gradient(135deg,var(--____highlight-tintColor),var(--____highlight-tintColor) 5px,var(--____highlight-tintColor2) 5px,var(--____highlight-tintColor2) 10px)}.MentionLink .new.-solid .shortName{background-image:linear-gradient(var(--____highlight-tintColor2),var(--____highlight-tintColor2))}.MentionLink .new.-side .shortName{box-shadow:0 -5px 3px -4px inset var(--____highlight-solidColor)}.MentionLink .serverName.-faded{color:var(--faintLink,#d8a070)}.mention-link-popover{max-height:20rem;max-width:70ch;overflow:hidden}.MentionsLine{word-break:break-all}.MentionsLine .mention-link:not(:first-child):before{content:" "}.MentionsLine .showMoreLess{color:var(--link);margin-left:.5em;white-space:normal}.HashtagLink{color:var(--link);display:inline-block;position:relative;white-space:normal}.RichContent blockquote{border-left:.2em solid var(--faint,hsla(240,1%,73%,.5));font-style:italic;margin:.2em 0 .2em .2em;padding-left:1em}.RichContent pre{overflow:auto}.RichContent code,.RichContent kbd,.RichContent pre,.RichContent samp,.RichContent var{font-family:var(--postCodeFont,monospace)}.RichContent p{margin:0 0 1em}.RichContent p:last-child{margin:0}.RichContent h1{font-size:1.1em;line-height:1.2em;margin:1.4em 0}.RichContent h2{font-size:1.1em;margin:1em 0}.RichContent h3{font-size:1em;margin:1.2em 0}.RichContent h4{margin:1.1em 0}.RichContent .emoji,.RichContent .img{display:inline-block}.RichContent .emoji{height:var(--emoji-size,32px);width:var(--emoji-size,32px)}.RichContent .img,.RichContent video{max-height:400px;max-width:100%;-o-object-fit:contain;object-fit:contain;vertical-align:middle}.poll .votes{display:flex;flex-direction:column;margin:0 0 .5em}.poll .poll-option{margin:.75em .5em}.poll .option-result{color:#b9b9ba;color:var(--lightText,#b9b9ba);display:flex;flex-direction:row;height:100%;position:relative}.poll .option-result-label{align-items:center;display:flex;padding:.1em .25em;word-break:break-word;z-index:1}.poll .result-percentage{flex-shrink:0;width:3.5em}.poll .result-fill{background-color:#151e2a;background-color:var(--poll,#151e2a);border-radius:10px;border-radius:var(--panelRadius,10px);color:#b9b9ba;color:var(--pollText,#b9b9ba);height:100%;left:0;position:absolute;top:0;transition:width .5s}.poll .option-vote{align-items:center;display:flex}.poll input{width:3.5em}.poll .footer{align-items:center;display:flex}.poll.loading *{cursor:progress}.poll .poll-vote-button{margin-right:.5em;padding:0 .5em}.poll .poll-checkbox{display:none}.StatusBody{display:flex;flex-direction:column}.StatusBody .emoji{--_still_image-label-scale:0.5}.StatusBody .attachments{margin-top:.5em}.StatusBody .summary,.StatusBody .text{word-wrap:break-word;font-family:var(--postFont,sans-serif);line-height:var(--post-line-height);overflow-wrap:break-word;white-space:pre-wrap;word-break:break-word}.StatusBody .summary{display:block;font-style:italic;padding-bottom:.5em}.StatusBody .text.-single-line{height:1.4em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.StatusBody .summary-wrapper{border-color:var(--border,#222);border-style:solid;border-width:0 0 1px;flex-grow:0;margin-bottom:.5em}.StatusBody .summary-wrapper.-tall{position:relative}.StatusBody .summary-wrapper.-tall .summary{max-height:2em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.StatusBody .text-wrapper{display:flex;flex-flow:column nowrap}.StatusBody .text-wrapper.-tall-status{height:220px;overflow-x:hidden;overflow-y:hidden;position:relative;z-index:1}.StatusBody .text-wrapper.-tall-status .media-body{-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;min-height:0}.StatusBody .cw-status-hider,.StatusBody .status-unhider,.StatusBody .tall-status-hider,.StatusBody .tall-subject-hider{display:inline-block;text-align:center;width:100%;word-break:break-all}.StatusBody .tall-status-hider{height:70px;line-height:110px;margin-top:150px;position:absolute;z-index:2}.StatusBody .tall-subject-hider{padding-bottom:.5em}.StatusBody .cw-status-hider,.StatusBody .status-unhider{word-break:break-all}.StatusBody .cw-status-hider svg,.StatusBody .status-unhider svg{color:inherit}.StatusBody .greentext{color:#0fa00f;color:var(--postGreentext,#0fa00f)}.StatusBody .cyantext{color:var(--postCyantext,#0095ff)}.StatusBody.-compact{--emoji-size:16px;align-items:top;flex-direction:row}.StatusBody.-compact .attachments,.StatusBody.-compact .body{max-height:3.25em}.StatusBody.-compact .body{flex:5 1 auto;mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-image:linear-gradient(180deg,#fff 2em,transparent 3em);mask-image:linear-gradient(180deg,#fff 2em,transparent 3em);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-repeat:repeat-x,repeat;mask-repeat:repeat-x,repeat;-webkit-mask-size:auto 3.5em,auto auto;mask-size:auto 3.5em,auto auto;min-width:5em;overflow:hidden;white-space:normal}.StatusBody.-compact .attachments{flex:1 1 0;height:100%;margin-left:.5em;margin-top:0;min-width:5em}.StatusBody.-compact .summary-wrapper{border:none;display:inline-block;line-height:inherit;margin:0}.StatusBody.-compact .summary-wrapper .summary:after{content:": "}.StatusBody.-compact .text-wrapper{display:inline-block}.link-preview-card{border:1px solid #222;border-color:var(--border,#222);border-radius:10px;border-radius:var(--attachmentRadius,10px);color:#b9b9ba;color:var(--text,#b9b9ba);cursor:pointer;display:flex;flex-direction:row;margin-top:.5em;overflow:hidden}.link-preview-card .card-image{flex-shrink:0;max-width:25%;width:120px}.link-preview-card .card-image img{border-radius:10px;border-radius:var(--attachmentRadius,10px);height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.link-preview-card .card-content{display:flex;flex-direction:column;margin:.5em;max-height:100%}.link-preview-card .card-host{font-size:.85em}.link-preview-card .card-description{line-height:1.2em;margin:.5em 0 0;max-height:calc(3.6em - 1px);overflow:hidden;text-overflow:ellipsis;word-break:break-word}.link-preview-card .nsfw-alert{margin:2em 0}.StatusContent{flex:1;min-width:0}.post-status-form{position:relative}.post-status-form .attachments{margin-bottom:.5em}.post-status-form .form-bottom{display:flex;height:2.5em;justify-content:space-between;padding:.5em}.post-status-form .form-bottom button{width:10em}.post-status-form .form-bottom p{display:flex;margin:.35em;padding:.35em}.post-status-form .form-bottom-left{display:flex;flex:1;margin-right:7px;max-width:10em;padding-right:7px}.post-status-form .preview-heading{display:flex;padding-left:.5em}.post-status-form .preview-toggle{cursor:pointer;flex:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.post-status-form .preview-toggle:hover{text-decoration:underline}.post-status-form .preview-toggle i,.post-status-form .preview-toggle svg{font-size:.8em;margin-left:.2em;transform:rotate(90deg)}.post-status-form .preview-container{margin-bottom:1em}.post-status-form .preview-error{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));font-style:italic}.post-status-form .preview-status{border:1px solid #222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);margin:0;padding:.5em}.post-status-form .text-format .only-format{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .visibility-tray{align-items:baseline;display:flex;justify-content:space-between;padding-top:5px}.post-status-form .visibility-notice.edit-warning>:first-child{margin-top:0}.post-status-form .visibility-notice.edit-warning>:last-child{margin-bottom:0}.post-status-form .media-upload-icon{justify-content:left;order:1}.post-status-form .emoji-icon{justify-content:center;order:2}.post-status-form .poll-icon{justify-content:right;order:3}.post-status-form .emoji-icon,.post-status-form .media-upload-icon,.post-status-form .poll-icon{align-items:center;display:flex;flex:1;font-size:1.85em;line-height:1.1;padding:0 .1em}.post-status-form .emoji-icon.selected i,.post-status-form .emoji-icon.selected label,.post-status-form .emoji-icon.selected svg,.post-status-form .emoji-icon:hover i,.post-status-form .emoji-icon:hover label,.post-status-form .emoji-icon:hover svg,.post-status-form .media-upload-icon.selected i,.post-status-form .media-upload-icon.selected label,.post-status-form .media-upload-icon.selected svg,.post-status-form .media-upload-icon:hover i,.post-status-form .media-upload-icon:hover label,.post-status-form .media-upload-icon:hover svg,.post-status-form .poll-icon.selected i,.post-status-form .poll-icon.selected label,.post-status-form .poll-icon.selected svg,.post-status-form .poll-icon:hover i,.post-status-form .poll-icon:hover label,.post-status-form .poll-icon:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.post-status-form .emoji-icon.disabled i,.post-status-form .emoji-icon.disabled svg,.post-status-form .media-upload-icon.disabled i,.post-status-form .media-upload-icon.disabled svg,.post-status-form .poll-icon.disabled i,.post-status-form .poll-icon.disabled svg{color:#666;color:var(--btnDisabledText,#666);cursor:not-allowed}.post-status-form .emoji-icon.disabled i:hover,.post-status-form .emoji-icon.disabled svg:hover,.post-status-form .media-upload-icon.disabled i:hover,.post-status-form .media-upload-icon.disabled svg:hover,.post-status-form .poll-icon.disabled i:hover,.post-status-form .poll-icon.disabled svg:hover{color:#666;color:var(--btnDisabledText,#666)}.post-status-form .error{text-align:center}.post-status-form .media-upload-wrapper{margin-bottom:.5em;margin-right:.2em;width:18em}.post-status-form .media-upload-wrapper img,.post-status-form .media-upload-wrapper video{max-height:10em;-o-object-fit:contain;object-fit:contain}.post-status-form .media-upload-wrapper .video{max-height:10em}.post-status-form .media-upload-wrapper input{flex:1;width:100%}.post-status-form .status-input-wrapper{display:flex;flex-direction:column;position:relative;width:100%}.post-status-form .btn[disabled]{cursor:not-allowed}.post-status-form form{display:flex;flex-direction:column;margin:.6em;position:relative}.post-status-form .form-group{display:flex;flex-direction:column;line-height:1.85;padding:.25em .5em .5em}.post-status-form .form-post-body{box-sizing:content-box;height:calc(var(--post-line-height)*1em);min-height:calc(var(--post-line-height)*1em);overflow:hidden;padding-bottom:calc(var(--_padding) + var(--post-line-height)*1em);resize:none;transition:min-height .2s .1s}.post-status-form .form-post-body.scrollable-form{overflow-y:auto}.post-status-form .main-input{position:relative}.post-status-form .character-counter{bottom:0;margin:0 .5em;padding:0;position:absolute;right:0}.post-status-form .character-counter.error{color:red;color:var(--cRed,red)}@keyframes fade-in{0%{opacity:0}to{opacity:.6}}@keyframes fade-out{0%{opacity:.6}to{opacity:0}}.post-status-form .drop-indicator{align-items:center;background-color:#121a24;background-color:var(--bg,#121a24);border:2px dashed #b9b9ba;border:2px dashed var(--text,#b9b9ba);border-radius:5px;border-radius:var(--tooltipRadius,5px);color:#b9b9ba;color:var(--text,#b9b9ba);display:flex;font-size:5em;height:100%;justify-content:center;opacity:.6;position:absolute;width:100%}.remote-follow{max-width:220px}.remote-follow .remote-button{min-height:2em;width:100%}.dark-overlay:before{background:rgba(27,31,35,.5);bottom:0;content:" ";left:0;right:0;z-index:2000}.dark-overlay:before,.dialog-modal.panel{cursor:default;display:block;position:fixed;top:0}.dialog-modal.panel{background-color:#121a24;background-color:var(--bg,#121a24);left:50%;margin:15vh auto;max-height:80vh;max-width:90vw;transform:translateX(-50%);z-index:2001}.dialog-modal.panel .dialog-modal-heading .title{text-align:center}.dialog-modal.panel .dialog-modal-content{background-color:#121a24;background-color:var(--bg,#121a24);margin:0;padding:1rem;white-space:normal}.dialog-modal.panel .dialog-modal-footer{background-color:#121a24;background-color:var(--bg,#121a24);border-top:1px solid #222;border-top:1px solid var(--border,#222);display:flex;justify-content:flex-end;margin:0;padding:.5em}.dialog-modal.panel .dialog-modal-footer button{margin-left:.5rem;width:auto}.moderation-tools-popover{height:100%}.moderation-tools-popover .trigger{display:flex!important;height:100%}.moderation-tools-button i,.moderation-tools-button svg{font-size:.8em}.AccountActions .ellipsis-button{margin:-.5em 0;padding:.5em 0;text-align:center;width:2.5em}.AccountActions .ellipsis-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-note{display:flex;flex-direction:column}.user-note .heading{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-bottom:.75em}.user-note .heading .btn{min-width:95px}.user-note .heading .buttons{display:flex;flex-direction:row;justify-content:right}.user-note .heading .buttons .btn{margin-left:.5em}.user-note .note-text{align-self:stretch}.user-note .note-text.-blank{color:var(--faint,hsla(240,1%,73%,.5));font-style:italic}.user-card{position:relative;z-index:1}.user-card:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.user-card .panel-heading{align-items:stretch;background:transparent;box-shadow:none;flex-direction:column;padding:.5em 0;position:relative;text-align:center}.user-card .panel-body{word-wrap:break-word;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;position:relative}.user-card .background-image{background-color:var(--profileBg);background-size:cover;border-bottom-left-radius:calc(var(--__roundnessBottom, --panelRadius) - 1px);border-bottom-right-radius:calc(var(--__roundnessBottom, --panelRadius) - 1px);border-top-left-radius:calc(var(--__roundnessTop, --panelRadius) - 1px);border-top-right-radius:calc(var(--__roundnessTop, --panelRadius) - 1px);bottom:0;left:0;-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-size:100% 60%;mask-size:100% 60%;position:absolute;right:0;top:0;z-index:-2}.user-card .background-image.hide-bio{-webkit-mask-size:100% 40px;mask-size:100% 40px}.user-card-bio{display:block;line-height:1.3;margin:0;padding:1em;text-align:center}.user-card-bio a{color:#d8a070;color:var(--postLink,#d8a070)}.user-card-bio img{max-height:400px;max-width:100%;-o-object-fit:contain;object-fit:contain;vertical-align:middle}.user-card.-rounded-t{--__roundnessTop:var(--panelRadius);--__roundnessBottom:0;border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px);border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px)}.user-card.-rounded{--__roundnessTop:var(--panelRadius);--__roundnessBottom:var(--panelRadius);border-radius:10px;border-radius:var(--panelRadius,10px)}.user-card.-popover{--__roundnessTop:var(--tooltipRadius);--__roundnessBottom:var(--tooltipRadius);border-radius:5px;border-radius:var(--tooltipRadius,5px)}.user-card.-bordered{border:1px solid #222;border-color:var(--border,#222)}.user-info{padding:0 26px}.user-info,.user-info a{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info a:hover{color:var(--icon)}.user-info .container{align-items:flex-start;display:flex;max-height:56px;min-width:0;padding:16px 0 6px}.user-info .container>*{min-width:0}.user-info .container>a{display:flex;vertical-align:middle}.user-info .container .Avatar{--_avatarShadowBox:var(--avatarShadow);--_avatarShadowFilter:var(--avatarShadowFilter);--_avatarShadowInset:var(--avatarShadowInset);height:56px;-o-object-fit:cover;object-fit:cover;width:56px}.user-info-avatar{cursor:pointer;position:relative}.user-info-avatar.-overlay{align-items:center;background-color:rgba(0,0,0,.3);border-radius:4px;border-radius:var(--avatarRadius,4px);bottom:0;display:flex;justify-content:center;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s ease}.user-info-avatar.-overlay svg{color:#fff}.user-info-avatar:hover .user-info-avatar.-overlay{opacity:1}.user-info .edit-profile-button,.user-info .external-link-button{cursor:pointer;margin:-.5em 0;padding:.5em 0;text-align:center;width:2.5em}.user-info .edit-profile-button:not(:hover) .icon,.user-info .external-link-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info .bottom-line{align-items:baseline;font-size:1.1em;font-weight:light}.user-info .bottom-line .lock-icon{margin-left:.5em}.user-info .bottom-line .user-screen-name{flex:0 1 auto;min-width:1px;overflow:hidden;text-overflow:ellipsis}.user-info .bottom-line .dailyAvg{color:#b9b9ba;color:var(--text,#b9b9ba);flex:0 0 auto;font-size:.7em;margin-left:1em;min-width:1px}.user-info .bottom-line .user-role{background-color:#182230;background-color:var(--alertNeutral,#182230);color:#b9b9ba;color:var(--alertNeutralText,#b9b9ba);flex:none}.user-info .user-summary{--emoji-size:1.7em;display:block;flex:1 1 0;line-height:2em;margin-left:.6em;text-align:left;text-overflow:ellipsis;white-space:nowrap;z-index:1}.user-info .user-summary .bottom-line,.user-info .user-summary .top-line{display:flex}.user-info .user-name{flex:1 1 auto;font-size:1.1em;margin-right:1em;overflow:hidden;text-overflow:ellipsis}.user-info .user-meta{align-items:baseline;display:flex;flex-wrap:wrap;line-height:22px;margin-bottom:.15em}.user-info .user-meta .following{flex:1 0 auto;margin:0 0 .25em;text-align:left}.user-info .user-meta .highlighter{align-self:start;display:flex;flex:0 1 auto;flex-wrap:wrap;margin-right:-.5em}.user-info .user-meta .highlighter .userHighlightCl{flex:1 0 auto;padding:2px 10px}.user-info .user-meta .highlighter .userHighlightSel{flex:1 0 auto;padding-bottom:0;padding-top:0}.user-info .user-meta .highlighter .userHighlightText{flex:1 0 auto;width:70px}.user-info .user-meta .highlighter .userHighlightCl,.user-info .user-meta .highlighter .userHighlightSel,.user-info .user-meta .highlighter .userHighlightText{margin-bottom:.25em;margin-right:.5em;vertical-align:top}.user-info .user-interactions{display:flex;flex-flow:row wrap;margin-right:-.75em;position:relative}.user-info .user-interactions>*{margin:0 .75em .6em 0;min-width:95px;white-space:nowrap}.user-info .user-interactions button{margin:0}.user-info .user-note{margin:0 .75em .6em 0}.sidebar .edit-profile-button{display:none}.user-counts{color:#b9b9ba;color:var(--lightText,#b9b9ba);display:flex;flex-wrap:wrap;justify-content:space-between;line-height:16px;padding:.5em 1.5em 0;text-align:center}.user-count{flex:1 0 auto;margin:0 .5em;padding:.5em 0}.user-count h5{font-size:1em;font-weight:bolder;margin:0 0 .25em}.user-count a{text-decoration:none}.mute-expiry{display:flex;flex-direction:row}.user-panel .signed-in{overflow:visible;z-index:10}.NavigationEntry{align-items:baseline;box-sizing:border-box;color:#d8a070;color:var(--link,#d8a070);display:flex;height:3.5em;line-height:3.5em;padding:0 1em;width:100%}.NavigationEntry .timelines-chevron{margin-right:0}.NavigationEntry .main-link{flex:1}.NavigationEntry .menu-icon{margin-right:.8em}.NavigationEntry .extra-button{text-align:center;width:3em}.NavigationEntry .extra-button:last-child{margin-right:-.8em}.NavigationEntry:hover{--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);color:#d8a070;color:var(--selectedMenuText,#d8a070)}.NavigationEntry:hover .menu-icon{--icon:var(--text,$fallback--icon)}.NavigationEntry.-active{--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba);font-weight:bolder}.NavigationEntry.-active .menu-icon{--icon:var(--text,$fallback--icon)}.NavigationEntry.-active:hover{text-decoration:underline}.NavigationPins{display:flex;flex-wrap:wrap;height:100%;overflow:hidden}.NavigationPins .alert-dot{background-color:red;background-color:var(--badgeNotification,red);border-radius:100%;height:.5em;position:absolute;right:calc(50% - .75em);top:calc(50% - .5em);width:.5em}.NavigationPins .pinned-item{box-sizing:border-box;flex:1 0 3em;height:100%;min-width:2em;overflow:visible;position:relative;text-align:center}.NavigationPins .pinned-item .iconLetter,.NavigationPins .pinned-item .svg-inline--fa{margin:0}.NavigationPins .pinned-item.router-link-active{border-bottom:4px solid;color:#b9b9ba;color:var(--panelText,#b9b9ba)}.NavigationPins .pinned-item.router-link-active .iconLetter,.NavigationPins .pinned-item.router-link-active .svg-inline--fa{color:inherit}.NavPanel .panel{box-shadow:var(--panelShadow);overflow:hidden}.NavPanel ul{list-style:none;margin:0;padding:0}.NavPanel li{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);position:relative}.NavPanel>li:first-child .menu-item{border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px);border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px)}.NavPanel>li:last-child .menu-item{border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px);border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px)}.NavPanel li:last-child{border:none}.NavPanel .navigation-chevron{margin-right:.8em}.NavPanel .navigation-chevron,.NavPanel .timelines-chevron{font-size:1.1em;margin-left:.8em}.NavPanel .timelines-background{background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0 0 0 .6em}.NavPanel .timelines{background-color:#121a24;background-color:var(--bg,#121a24)}.NavPanel .nav-panel-heading{--panel-heading-height-padding:0px}.features-panel li{line-height:24px}.who-to-follow *{vertical-align:middle}.who-to-follow img{height:32px;width:32px}.who-to-follow{margin:0;padding:0 1em}.who-to-follow-items{margin:1em 0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.who-to-follow-more{margin:1em 0;padding:0;text-align:center}.floating-shout{bottom:.5em;max-width:25em;position:fixed;z-index:var(--ZI_popovers)}.floating-shout.-left{left:.5em}.floating-shout:not(.-left){right:.5em}.shout-panel .shout-heading{cursor:pointer}.shout-panel .shout-heading .icon{color:#b9b9ba;color:var(--panelText,#b9b9ba);margin-right:.5em}.shout-panel .shout-heading .title{align-items:center;display:flex;justify-content:space-between}.shout-panel .shout-window{max-height:20em;overflow-x:hidden;overflow-y:auto}.shout-panel .shout-window-container{height:100%}.shout-panel .shout-message{display:flex;padding:.2em .5em}.shout-panel .shout-avatar img{border-radius:4px;border-radius:var(--avatarRadius,4px);height:24px;margin-right:.5em;margin-top:.25em;width:24px}.shout-panel .shout-input{display:flex}.shout-panel .shout-input textarea{flex:1;margin:.6em;min-height:3.5em;resize:none}.shout-panel .shout-panel .title{display:flex;justify-content:space-between}@keyframes media-fadein{0%{opacity:0}to{opacity:1}}.media-modal-view .modal-image-container{max-height:100%;max-width:100%;overflow:hidden}.media-modal-view .modal-image-container,.media-modal-view .modal-image-container-inner{align-items:center;display:flex;flex-direction:column;flex-grow:1;height:100%;justify-content:center;width:100%}.media-modal-view .counter,.media-modal-view .description{color:#fff;margin-top:1em;padding:.2em 2em;text-shadow:0 0 10px #000,0 0 10px #000}.media-modal-view .description{flex:0 0 auto;max-height:9.5em;max-width:500px;min-height:1em;overflow-y:auto;word-break:break-all}.media-modal-view .modal-image{animation:media-fadein .1s cubic-bezier(.7,0,1,.6);image-orientation:from-image;max-height:100%;max-width:100%}.media-modal-view .modal-image.loading{opacity:.5}.media-modal-view .loading-spinner{align-items:center;display:flex;height:100%;justify-content:center;pointer-events:none;position:absolute;width:100%}.media-modal-view .loading-spinner svg{color:#fff}.media-modal-view .modal-view-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;box-shadow:none;cursor:pointer;height:3em;opacity:0;overflow:visible;padding:0;transition:opacity 333ms cubic-bezier(.4,0,.22,1);width:3em}.media-modal-view .modal-view-button .button-icon{background-color:rgba(0,0,0,.3);color:#fff;font-size:1rem;height:3em;line-height:3em;position:absolute;text-align:center;width:3em}.media-modal-view .modal-view-button-arrow{display:block;height:3em;margin-top:1.5em;position:absolute;top:50%;width:3em}.media-modal-view .modal-view-button-arrow .arrow-icon{background-color:rgba(0,0,0,.3);color:#fff;line-height:3em;position:absolute;text-align:center;top:0}.media-modal-view .modal-view-button-arrow--prev{left:0}.media-modal-view .modal-view-button-arrow--prev .arrow-icon{left:.5em}.media-modal-view .modal-view-button-arrow--next{right:0}.media-modal-view .modal-view-button-arrow--next .arrow-icon{right:.5em}.media-modal-view .modal-view-button-hide{position:absolute;right:0;top:0}.media-modal-view .modal-view-button-hide .button-icon{right:.5em;top:.5em}.modal-view.media-modal-view{flex-direction:column;overflow:hidden;z-index:var(--ZI_media_modal)}.modal-view.media-modal-view .modal-view-button-arrow,.modal-view.media-modal-view .modal-view-button-hide{opacity:.75}.modal-view.media-modal-view .modal-view-button-arrow:focus,.modal-view.media-modal-view .modal-view-button-arrow:hover,.modal-view.media-modal-view .modal-view-button-hide:focus,.modal-view.media-modal-view .modal-view-button-hide:hover{box-shadow:none;outline:none}.modal-view.media-modal-view .modal-view-button-arrow:hover,.modal-view.media-modal-view .modal-view-button-hide:hover{opacity:1}.side-drawer-container{align-items:stretch;display:flex;height:100%;left:0;position:fixed;top:0;transition-duration:0s;transition-property:transform;width:100%;z-index:var(--ZI_navbar)}.side-drawer-container-open{transform:translate(0)}.side-drawer-container-closed{transform:translate(-100%);transition-delay:.35s}.side-drawer-darken{background-color:rgba(0,0,0,.5);height:100vh;left:0;position:fixed;top:0;transition:.35s;transition-property:background-color;width:100vw;z-index:-1}.side-drawer-darken-closed{background-color:transparent}.side-drawer-click-outside{flex:1 1 100%}.side-drawer{--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon);background-color:#121a24;background-color:var(--popover,#121a24);box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);color:#d8a070;color:var(--popoverText,#d8a070);flex:0 0 80%;margin:0 0 0 -100px;max-width:20em;overflow-x:hidden;padding:0 0 1em 100px;transition:.35s;transition-property:transform;transition-timing-function:cubic-bezier(0,1,.5,1);width:80%}.side-drawer .badge{margin-left:10px}.side-drawer-logo-wrapper{align-items:center;display:flex;padding:.85em}.side-drawer-logo-wrapper img{flex:none;height:50px;margin-right:.85em}.side-drawer-logo-wrapper span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-drawer-click-outside-closed{flex:0 0 0}.side-drawer-closed{transform:translate(-100%)}.side-drawer-heading{align-items:stretch;background:transparent;display:flex;flex-direction:column;margin:0;padding:0}.side-drawer ul{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);list-style:none;margin:0;padding:0}.side-drawer ul:last-child{border:0}.side-drawer li{padding:0}.side-drawer li a,.side-drawer li button{box-sizing:border-box;display:block;height:3em;line-height:3em;padding:0 .7em}.side-drawer li a:hover,.side-drawer li button:hover{--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon);background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#b9b9ba;color:var(--selectedMenuPopoverText,#b9b9ba)}.MobilePostButton.button-default{align-items:center;background-color:#182230;background-color:var(--btn,#182230);border-radius:100%;bottom:1.5em;box-shadow:0 2px 2px rgba(0,0,0,.3),0 4px 6px rgba(0,0,0,.3);display:flex;height:5em;justify-content:center;position:fixed;right:1.5em;transition:transform .35s;transition-timing-function:cubic-bezier(0,1,.5,1);width:5em;z-index:10}.MobilePostButton.hidden{transform:translateY(150%)}.MobilePostButton svg{color:#b9b9ba;color:var(--text,#b9b9ba);font-size:1.5em}@media (min-width:801px){.new-status-button:not(.always-show){display:none}}.ReplyButton{display:flex}.ReplyButton>:first-child{margin:-10px -8px -10px -10px;padding:10px}.ReplyButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ReplyButton .interactive.-active .svg-inline--fa,.ReplyButton .interactive:hover .svg-inline--fa{color:#0095ff;color:var(--cBlue,#0095ff)}.ReplyButton .interactive .focus-marker{visibility:hidden}.ReplyButton .interactive:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.ReplyButton .interactive:focus .focus-marker,.ReplyButton .interactive:hover .focus-marker{visibility:visible}.ReplyButton .interactive:focus-visible .focus-marker{visibility:visible}.FavoriteButton{display:flex}.FavoriteButton>:first-child{margin:-10px -8px -10px -10px;padding:10px}.FavoriteButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.FavoriteButton .interactive .svg-inline--fa{animation-duration:.6s}.FavoriteButton .interactive.-favorited .svg-inline--fa,.FavoriteButton .interactive:hover .svg-inline--fa{color:orange;color:var(--cOrange,orange)}.FavoriteButton .interactive .focus-marker{visibility:hidden}.FavoriteButton .interactive .active-marker{visibility:visible}.FavoriteButton .interactive:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.FavoriteButton .interactive:focus:not(:focus-visible,:hover) .active-marker{visibility:visible}.FavoriteButton .interactive:focus .focus-marker,.FavoriteButton .interactive:hover .focus-marker{visibility:visible}.FavoriteButton .interactive:focus .active-marker,.FavoriteButton .interactive:hover .active-marker{visibility:hidden}.FavoriteButton .interactive:focus-visible .focus-marker{visibility:visible}.FavoriteButton .interactive:focus-visible .active-marker{visibility:hidden}.ReactButton .reaction-picker-filter{display:flex;padding:.5em}.ReactButton .reaction-picker-filter input{flex:1}.ReactButton .reaction-picker-divider{background-color:var(--border,#222);height:1px;margin:.5em;width:100%}.ReactButton .reaction-picker{align-content:flex-start;display:flex;flex-wrap:wrap;font-size:1.5em;height:9em;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;overflow-y:scroll;padding:.5em;text-align:center;transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:10em}.ReactButton .reaction-picker .emoji-button{align-content:center;cursor:pointer;flex-basis:20%;line-height:1.5}.ReactButton .reaction-picker .emoji-button:hover{transform:scale(1.25)}.ReactButton .popover-trigger{margin:-10px;padding:10px}.ReactButton .popover-trigger:hover .svg-inline--fa{color:#b9b9ba;color:var(--text,#b9b9ba)}.ReactButton .popover-trigger-button{width:auto}.ReactButton .popover-trigger-button .focus-marker{visibility:hidden}.ReactButton .popover-trigger-button:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.ReactButton .popover-trigger-button:focus .focus-marker,.ReactButton .popover-trigger-button:hover .focus-marker{visibility:visible}.ReactButton .popover-trigger-button:focus-visible .focus-marker{visibility:visible}.RetweetButton{display:flex}.RetweetButton>:first-child{margin:-10px -8px -10px -10px;padding:10px}.RetweetButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.RetweetButton .interactive .svg-inline--fa{animation-duration:.6s}.RetweetButton .interactive.-repeated .svg-inline--fa,.RetweetButton .interactive:hover .svg-inline--fa{color:#0fa00f;color:var(--cGreen,#0fa00f)}.RetweetButton .interactive .focus-marker{visibility:hidden}.RetweetButton .interactive .active-marker{visibility:visible}.RetweetButton .interactive:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.RetweetButton .interactive:focus:not(:focus-visible,:hover) .active-marker{visibility:visible}.RetweetButton .interactive:focus .focus-marker,.RetweetButton .interactive:hover .focus-marker{visibility:visible}.RetweetButton .interactive:focus .active-marker,.RetweetButton .interactive:hover .active-marker{visibility:hidden}.RetweetButton .interactive:focus-visible .focus-marker{visibility:visible}.RetweetButton .interactive:focus-visible .active-marker{visibility:hidden}.ExtraButtons .popover-trigger{margin:-10px;padding:10px;position:static}.ExtraButtons .popover-trigger:hover .svg-inline--fa{color:#b9b9ba;color:var(--text,#b9b9ba)}.ExtraButtons .popover-trigger-button{width:auto}.ExtraButtons .popover-trigger-button .focus-marker{visibility:hidden}.ExtraButtons .popover-trigger-button:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.ExtraButtons .popover-trigger-button:focus .focus-marker,.ExtraButtons .popover-trigger-button:hover .focus-marker{visibility:visible}.ExtraButtons .popover-trigger-button:focus-visible .focus-marker{visibility:visible}.avatars{display:flex;flex-wrap:wrap;height:24px;margin:0;padding:0}.avatars .avatars-item{margin:0 0 5px 5px}.avatars .avatars-item:first-child{padding-left:5px}.avatars .avatars-item .avatar-small{border-radius:10px;border-radius:var(--avatarAltRadius,10px);height:24px;width:24px}.status-popover.popover{border-color:#222;border-color:var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);border-style:solid;border-width:1px;font-size:1rem;max-width:95%;min-width:15em}.status-popover.popover .Status.Status{border:none}.status-popover.popover .status-preview-no-content{padding:1em;text-align:center}.status-popover.popover .status-preview-no-content i{font-size:2em}.user-list-popover{--emoji-size:16px;padding:.5em}.user-list-popover .user-list-row{display:flex;flex-direction:row;padding:.25em}.user-list-popover .user-list-row .user-list-names{display:flex;flex-direction:column;margin-left:.5em;min-width:5em}.user-list-popover .user-list-row .user-list-names img{height:1em;width:1em}.user-list-popover .user-list-row .user-list-screen-name{font-size:.65em}.EmojiReactions{display:flex;flex-wrap:wrap;margin-top:.25em}.EmojiReactions .emoji-reaction{align-items:center;box-sizing:border-box;display:flex;justify-content:center;margin-right:.5em;margin-top:.5em;padding:0 .5em}.EmojiReactions .emoji-reaction .reaction-emoji{margin-right:.25em;width:1.25em}.EmojiReactions .emoji-reaction:focus{outline:none}.EmojiReactions .emoji-reaction.not-clickable{cursor:default}.EmojiReactions .emoji-reaction.not-clickable:hover{box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow)}.EmojiReactions .emoji-reaction.-picked-reaction{border:1px solid var(--accent,#d8a070);margin-left:-1px;margin-right:calc(.5em - 1px)}.EmojiReactions .emoji-reaction-expand{align-items:center;display:flex;justify-content:center;margin-right:.5em;margin-top:.5em;padding:0 .5em}.EmojiReactions .emoji-reaction-expand:hover{text-decoration:underline}.Status{word-wrap:break-word;min-width:0;white-space:normal;word-break:break-word}.Status:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.Status.-focused{--lightText:var(--selectedPostLightText,$fallback--light);--faint:var(--selectedPostFaintText,$fallback--faint);--faintLink:var(--selectedPostFaintLink,$fallback--faint);--postLink:var(--selectedPostPostLink,$fallback--faint);--postFaintLink:var(--selectedPostFaintPostLink,$fallback--faint);--icon:var(--selectedPostIcon,$fallback--icon);background-color:#151e2a;background-color:var(--selectedPost,#151e2a);color:#b9b9ba;color:var(--selectedPostText,#b9b9ba)}.Status .gravestone{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));display:flex;padding:var(--status-margin,.75em)}.Status .gravestone .deleted-text{align-items:center;margin:.5em 0}.Status .status-container{display:flex;padding:var(--status-margin,.75em)}.Status .status-container>*{min-width:0}.Status .status-container.-repeat{padding-top:0}.Status .pin{align-items:center;display:flex;justify-content:flex-end;padding:var(--status-margin,.75em) var(--status-margin,.75em) 0}._misclick-prevention .Status{pointer-events:none}._misclick-prevention .Status .attachments{cursor:auto;pointer-events:auto}.Status .left-side{margin-right:var(--status-margin,.75em)}.Status .right-side{flex:1;min-width:0}.Status .usercard{margin-bottom:var(--status-margin,.75em)}.Status .status-username{--_still_image-label-scale:0.25;--emoji-size:14px;flex-shrink:1;font-weight:700;margin-right:.4em;max-width:85%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .status-favicon{height:18px;margin-right:.4em;width:18px}.Status .status-heading{margin-bottom:.5em}.Status .heading-name-row{display:flex;justify-content:space-between;line-height:1.3}.Status .heading-name-row a{display:inline-block;word-break:break-all}.Status .account-name{flex:1 1 0;margin-right:.4em;min-width:1.6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .heading-left{display:flex;min-width:0}.Status .heading-right{display:flex;flex-shrink:0}.Status .heading-right .button-unstyled{margin:-5px;padding:5px}.Status .heading-right .button-unstyled:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.Status .heading-right .svg-inline--fa{margin-left:.25em}.Status .glued-label{display:inline-flex;white-space:nowrap}.Status .timeago{margin-right:.2em}.Status .heading-edited-row,.Status .heading-reply-row{align-content:baseline;align-items:stretch;font-size:.85em;line-height:130%;margin-top:.2em;max-width:100%;position:relative}.Status .mentions,.Status .reply-to-no-popover,.Status .reply-to-popover{flex-shrink:0;margin-right:.4em;min-width:0}.Status .reply-glued-label{margin-right:.5em}.Status .reply-to-popover .reply-to:hover:before{border-bottom:1px solid var(--faint);bottom:0;content:"";display:block;pointer-events:none;position:absolute;width:100%}.Status .reply-to-popover .faint-link:hover{text-decoration:none}.Status .reply-to-popover.-strikethrough .reply-to:after{border-bottom:1px solid var(--faint);content:"";display:block;pointer-events:none;position:absolute;top:50%;width:100%}.Status .mentions,.Status .reply-to{position:relative;white-space:nowrap}.Status .mentions-text,.Status .reply-to-text{color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .mentions-line{display:inline}.Status .replies{display:flex;flex-wrap:wrap;font-size:.85em;line-height:1.3;margin-top:.25em}.Status .replies>*{margin-right:.4em}.Status .reply-link{height:17px}.Status .repeat-info{padding:.4em var(--status-margin,.75em)}.Status .repeat-info .repeat-icon{color:#0fa00f;color:var(--cGreen,#0fa00f)}.Status .repeater-avatar{border-radius:var(--avatarAltRadius,10px);height:20px;margin-left:28px;width:20px}.Status .repeater-name{margin-right:0;text-overflow:ellipsis}.Status .repeater-name .emoji{height:14px;-o-object-fit:contain;object-fit:contain;vertical-align:middle;width:14px}.Status .status-fadein{animation-duration:.4s;animation-name:fadein}@keyframes fadein{0%{opacity:0}to{opacity:1}}.Status .status-actions{display:flex;margin-top:var(--status-margin,.75em);position:relative;width:100%}.Status .status-actions>*{flex:1;max-width:4em}.Status .muted{display:flex;flex-wrap:nowrap;height:1.2em;line-height:1.2em;overflow:hidden;padding:.25em .6em;text-overflow:ellipsis}.Status .muted .mute-thread,.Status .muted .mute-words,.Status .muted .status-username{word-wrap:normal;white-space:nowrap;word-break:normal}.Status .muted .mute-words,.Status .muted .status-username{overflow:hidden;text-overflow:ellipsis}.Status .muted .status-username{flex:0 1 auto;font-size:smaller;font-weight:400;margin-right:.2em}.Status .muted .mute-thread{flex:0 0 auto}.Status .muted .mute-words{flex:1 0 5em;margin-left:.2em}.Status .muted .mute-words:before{content:" "}.Status .muted .unmute{display:block;flex:0 0 auto;margin-left:auto}.Status .reply-form{padding-bottom:0;padding-top:0}.Status .reply-body{flex:1}.Status .favs-repeated-users{margin-top:var(--status-margin,.75em)}.Status .stats{display:flex;line-height:1em;width:100%}.Status .avatar-row{align-items:center;display:flex;flex:1;overflow:hidden;position:relative}.Status .avatar-row:before{background-color:var(--faint,hsla(240,1%,73%,.5));content:"";height:100%;left:0;position:absolute;width:1px}.Status .stat-count{margin-right:var(--status-margin,.75em);-webkit-user-select:none;-moz-user-select:none;user-select:none}.Status .stat-count .stat-title{color:var(--faint,hsla(240,1%,73%,.5));font-size:.85em;position:relative;text-transform:uppercase}.Status .stat-count .stat-number{font-size:1.1em;font-weight:bolder;line-height:1em}.Status .stat-count:hover .stat-title{text-decoration:underline}@media (max-width:800px){.Status .repeater-avatar{margin-left:20px}.Status .post-avatar{height:40px;width:40px}.Status .post-avatar.-compact{height:32px;width:32px}}.Report .report-content,.Report .report-state{margin:.5em 0 1em}.Report .reported-status{border:1px solid hsla(240,1%,73%,.5);border-color:var(--faint,hsla(240,1%,73%,.5));border-radius:4px;border-radius:var(--inputRadius,4px);color:#b9b9ba;color:var(--text,#b9b9ba);display:block;margin:.5em 0;padding:.5em}.Report .reported-status .status-content{pointer-events:none}.Report .reported-status .reported-status-heading{display:flex;justify-content:space-between;margin-bottom:.2em;width:100%}.Report .reported-status .reported-status-name{font-weight:700}.Report .note{margin-bottom:.5em;width:100%}.Notification{word-wrap:break-word;--emoji-size:14px;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);word-break:break-word}.Notification:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.Notification.-muted{display:flex;flex-wrap:nowrap;height:1.2em;line-height:1.2em;overflow:hidden;padding:.25em .6em;text-overflow:ellipsis}.Notification.-muted .mute-thread,.Notification.-muted .mute-words,.Notification.-muted .status-username{word-wrap:normal;white-space:nowrap;word-break:normal}.Notification.-muted .mute-words,.Notification.-muted .status-username{overflow:hidden;text-overflow:ellipsis}.Notification.-muted .status-username{flex:0 1 auto;font-size:smaller;font-weight:400;margin-right:.2em}.Notification.-muted .mute-thread{flex:0 0 auto}.Notification.-muted .mute-words{flex:1 0 5em;margin-left:.2em}.Notification.-muted .mute-words:before{content:" "}.Notification.-muted .unmute{display:block;flex:0 0 auto;margin-left:auto}.Notification .type-icon{margin:0 .1em}.Notification.-type--repeat .type-icon{color:#0fa00f;color:var(--cGreen,#0fa00f)}.Notification.-type--follow .type-icon,.Notification.-type--follow-request .type-icon{color:#0095ff;color:var(--cBlue,#0095ff)}.Notification.-type--like .type-icon{color:orange;color:var(--cOrange,orange)}.Notification.-type--move .type-icon{color:#0095ff;color:var(--cBlue,#0095ff)}.Notifications:not(.minimal){padding-bottom:15em}.Notifications .loadmore-error{color:#b9b9ba;color:var(--text,#b9b9ba)}.Notifications .notification{position:relative}.Notifications .notification .notification-overlay{bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0}.Notifications .notification.unseen .notification-overlay{background-image:linear-gradient(135deg,var(--badgeNotification,red) 4px,transparent 10px)}.notification{box-sizing:border-box}.notification:hover .animated.Avatar canvas{display:none}.notification:hover .animated.Avatar img{visibility:visible}.notification:last-child .Notification{border-bottom:none}.notification .non-mention{display:flex;flex:1;flex-wrap:nowrap;min-width:0;padding:.6em}.notification .non-mention .avatar-container{height:32px;width:32px}.notification .non-mention .faint{--link:var(--faintLink);--text:var(--faint)}.notification .follow-request-accept:hover{color:#b9b9ba;color:var(--text,#b9b9ba)}.notification .follow-request-reject:hover{color:red;color:var(--cRed,red)}.notification .follow-text,.notification .move-text{display:flex;justify-content:space-between;overflow-wrap:break-word;padding:.5em 0}.notification .follow-text .follow-name,.notification .move-text .follow-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification .Status{flex:1}.notification time{white-space:nowrap}.notification .notification-right{flex:1;min-width:0;padding-left:.8em}.notification .notification-right .timeago{min-width:3em;text-align:right}.notification .notification-right .timeago-link{margin-right:.2em}.notification .notification-right .expand-icon .svg-inline--fa{margin-left:.25em}.notification .emoji-reaction-emoji{font-size:1.3em}.notification .notification-details{word-wrap:break-word;display:flex;flex:1 1 0;flex-wrap:nowrap;justify-content:space-between;line-height:var(--post-line-height);min-width:0;overflow:hidden;position:relative;width:100%}.notification .notification-details .name-and-action{flex:1;overflow:hidden;text-overflow:ellipsis}.notification .notification-details .username{font-weight:bolder;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.notification .notification-details .timeago{margin-right:.2em}.notification .notification-details .status-content{margin:0;max-height:300px}.notification .notification-details h1{font-size:1em;line-height:1.5;margin:0 0 .3em;padding:0;word-break:break-all}.notification .notification-details h1 small{font-weight:lighter}.notification .notification-details p{margin:0 0 .3em}.MobileNav{z-index:var(--ZI_navbar)}.MobileNav .mobile-nav{box-sizing:border-box;display:grid;grid-template-columns:2fr auto;grid-template-rows:50px;line-height:var(--navbar-height);width:100%}.MobileNav .mobile-nav a{color:var(--topBarLink,#d8a070)}.MobileNav .mobile-inner-nav{align-items:center;display:flex;width:100%}.MobileNav .mobile-nav-button{cursor:pointer;display:inline-block;padding:0 1em;position:relative;text-align:center}.MobileNav .site-name{display:inline-block;padding:0 .3em}.MobileNav .item{display:flex}.MobileNav .alert-dot{background-color:red;background-color:var(--badgeNotification,red);border-radius:100%;height:8px;left:calc(50% - 4px);margin-left:6px;margin-top:-6px;position:absolute;top:calc(50% - 4px);width:8px}.MobileNav .mobile-notifications-drawer{-webkit-overflow-scrolling:touch;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);height:100vh;left:0;overflow-x:hidden;position:fixed;top:0;transform:translateX(0);transition-duration:.25s;transition-property:transform;width:100%;z-index:var(--ZI_navbar)}.MobileNav .mobile-notifications-drawer.-closed{box-shadow:none;transform:translateX(100%)}.MobileNav .mobile-notifications-header{align-items:center;background-color:#182230;background-color:var(--topBar,#182230);box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow);color:var(--topBarText);display:flex;height:50px;justify-content:space-between;line-height:50px;position:absolute;width:100%;z-index:calc(var(--ZI_navbar) + 100)}.MobileNav .mobile-notifications-header .spacer{flex:1}.MobileNav .mobile-notifications-header .title{font-size:1.3em;margin-left:.6em}.MobileNav .pins{flex:1}.MobileNav .pins .pinned-item{flex-grow:1}.MobileNav .mobile-notifications{background-color:#121a24;background-color:var(--bg,#121a24);color:#b9b9ba;color:var(--text,#b9b9ba);height:calc(100vh - var(--navbar-height));margin-top:50px;overflow-x:hidden;overflow-y:scroll;width:100vw}.MobileNav .mobile-notifications .notifications{border-radius:0;box-shadow:none;padding:0}.MobileNav .mobile-notifications .notifications .panel{border-radius:0;box-shadow:none;margin:0}.MobileNav .mobile-notifications .notifications .panel:after{border-radius:0}.MobileNav .mobile-notifications .notifications .panel .panel-heading{border-radius:0;box-shadow:none}.MobileNav .confirm-modal.dark-overlay:before{z-index:3000}.MobileNav .confirm-modal.dark-overlay .dialog-modal.panel{z-index:3001}.SearchBar{align-items:baseline;display:inline-flex;justify-content:flex-end;vertical-align:baseline}.SearchBar.-expanded{width:100%}.SearchBar .search-bar-input,.SearchBar .search-button{height:29px}.SearchBar .search-bar-input{flex:1 0 auto}.SearchBar .cancel-search{height:50px}.SearchBar .cancel-icon{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}.DesktopNav{width:100%;z-index:var(--ZI_navbar)}.DesktopNav input{color:var(--inputTopbarText,var(--inputText))}.DesktopNav a{color:var(--topBarLink,#d8a070)}.DesktopNav .inner-nav{box-sizing:border-box;display:grid;grid-template-areas:"sitename logo actions";grid-template-columns:2fr auto 2fr;grid-template-rows:var(--navbar-height);margin:auto;max-width:980px;padding:0 1.2em}.DesktopNav.-column-stretch .inner-nav{--miniColumn:25rem;--maxiColumn:45rem;--columnGap:1em;max-width:calc(var(--sidebarColumnWidth, var(--miniColumn)) + var(--contentColumnWidth, var(--maxiColumn)) + var(--columnGap))}.DesktopNav.-logoLeft .inner-nav{grid-template-areas:"logo sitename actions";grid-template-columns:auto 2fr 2fr}.DesktopNav.-column-stretch.-wide .inner-nav{max-width:calc(var(--sidebarColumnWidth, var(--miniColumn)) + var(--contentColumnWidth, var(--maxiColumn)) + var(--notifsColumnWidth, var(--miniColumn)) + var(--columnGap))}.DesktopNav .button-default,.DesktopNav .button-default svg{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}.DesktopNav .button-default:active{background-color:#182230;background-color:var(--btnPressedTopBar,#182230);color:#b9b9ba;color:var(--btnPressedTopBarText,#b9b9ba)}.DesktopNav .button-default:disabled{color:#b9b9ba;color:var(--btnDisabledTopBarText,#b9b9ba)}.DesktopNav .button-default.toggled{background-color:#182230;background-color:var(--btnToggledTopBar,#182230);color:#b9b9ba;color:var(--btnToggledTopBarText,#b9b9ba)}.DesktopNav .logo{grid-area:logo;position:relative;transition:opacity;transition-duration:.1s;transition-timing-function:ease-out}@media (min-width:800px){.DesktopNav .logo{opacity:1!important}}.DesktopNav .logo .mask{background-color:#182230;background-color:var(--topBarText,#182230);bottom:0;left:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;right:0;top:0}.DesktopNav .logo img{display:inline-block;height:var(--navbar-height)}.DesktopNav .nav-icon{height:100%;margin-left:.2em;text-align:center;width:2em}.DesktopNav .nav-icon .svg-inline--fa{color:#d8a070;color:var(--topBarLink,#d8a070)}.DesktopNav .sitename{grid-area:sitename}.DesktopNav .actions{grid-area:actions}.DesktopNav .item{display:flex;flex:1;flex-wrap:wrap;height:var(--navbar-height);line-height:var(--navbar-height);overflow:hidden}.DesktopNav .item.right{justify-content:flex-end;text-align:right}.DesktopNav .spacer{width:1em}.list-item:not(:last-child){border-bottom:1px solid #222;border-bottom-color:var(--border,#222)}.list-empty-content{padding:10px;text-align:center}.user-reporting-panel{max-height:80vh;max-width:700px;min-height:20vh;width:90vw}.user-reporting-panel .panel-body{border-color:currentcolor #222 #222;border-top:1px solid #222;border-color:var(--border,#222);display:flex;flex-direction:column-reverse;overflow:hidden}.user-reporting-panel-left{box-sizing:border-box;line-height:var(--post-line-height);padding:1.1em .7em .7em}.user-reporting-panel-left>div{margin-bottom:1em}.user-reporting-panel-left>div:last-child{margin-bottom:0}.user-reporting-panel-left p{margin-top:0}.user-reporting-panel-left textarea.form-control{line-height:16px;min-height:44px;overflow:hidden;resize:none;transition:min-height .2s .1s;width:100%}.user-reporting-panel-left .btn{min-width:10em;padding:0 2em}.user-reporting-panel-left .alert{line-height:1.3em;margin:1em 0 0}.user-reporting-panel-right{display:flex;flex-direction:column;overflow-y:auto}.user-reporting-panel-sitem{display:flex;justify-content:space-between}.user-reporting-panel-sitem>.Status{flex:1}.user-reporting-panel-sitem>.checkbox{margin:.75em}@media (min-width:801px){.user-reporting-panel .panel-body{flex-direction:row}.user-reporting-panel-left{border-right:1px solid;border-color:#222;border-color:var(--border,#222);max-width:320px;padding:1.1em;width:50%}.user-reporting-panel-left>div{margin-bottom:2em}.user-reporting-panel-right{flex:1 1 auto;margin-bottom:12px;width:50%}}.modal-view.edit-form-modal-view{align-items:flex-start}.edit-form-modal-panel{flex-shrink:0;margin-bottom:2em;margin-top:25%;max-width:700px;width:100%}@media(orientation:landscape){.edit-form-modal-panel{margin-top:8%}}.edit-form-modal-panel .form-bottom-left{max-width:6.5em}.edit-form-modal-panel .form-bottom-left .emoji-icon{justify-content:right}.modal-view.post-form-modal-view{align-items:flex-start}.post-form-modal-panel{flex-shrink:0;margin-bottom:2em;margin-top:25%;max-width:700px;width:100%}@media(orientation:landscape){.post-form-modal-panel{margin-top:8%}}.modal-view.status-history-modal-view{align-items:flex-start}.status-history-modal-panel{flex-shrink:0;margin-bottom:2em;margin-top:25%;max-width:700px;width:100%}@media(orientation:landscape){.status-history-modal-panel{margin-top:8%}}.global-notice-list{align-items:center;display:flex;flex-direction:column;pointer-events:none;position:fixed;top:calc(var(--navbar-height) + .5em);width:100%;z-index:var(--ZI_navbar_popovers)}.global-notice-list .global-notice{display:flex;line-height:2;margin-bottom:.5em;max-width:calc(100% - 3em);padding-left:1.5em;pointer-events:auto;text-align:center;width:40em}.global-notice-list .global-notice .notice-message{flex:1 1 100%}.global-notice-list .global-error{background-color:var(--alertPopupError,red)}.global-notice-list .global-error,.global-notice-list .global-error .svg-inline--fa{color:var(--alertPopupErrorText,#b9b9ba)}.global-notice-list .global-warning{background-color:var(--alertPopupWarning,orange)}.global-notice-list .global-warning,.global-notice-list .global-warning .svg-inline--fa{color:var(--alertPopupWarningText,#b9b9ba)}.global-notice-list .global-success{background-color:var(--alertPopupSuccess,#0fa00f)}.global-notice-list .global-success,.global-notice-list .global-success .svg-inline--fa{color:var(--alertPopupSuccessText,#b9b9ba)}.global-notice-list .global-info{background-color:var(--alertPopupNeutral,#182230)}.global-notice-list .global-info,.global-notice-list .global-info .svg-inline--fa{color:var(--alertPopupNeutralText,#b9b9ba)}.global-notice-list .close-notice{padding-right:.2em}.global-notice-list .close-notice .svg-inline--fa:hover{opacity:.6}.panel{background-color:#121a24;background-color:var(--bg,#121a24);display:flex;flex-direction:column;position:relative}.panel,.panel:after{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel:after{bottom:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);content:"";left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:5}.panel-body{padding:var(--panel-body-padding,0)}.panel-body:empty:before{content:"¯\\_(ツ)_/¯";display:block;margin:1em;text-align:center}.panel-body>p{line-height:1.3;margin:0;padding:1em}.panel-footer,.panel-heading{--panel-heading-height-padding:0.6em;--__panel-heading-gap:0.5em;--__panel-heading-height:3.2em;--__panel-heading-height-inner:calc(var(--__panel-heading-height) - var(--panel-heading-height-padding, 0)*2);grid-column-gap:var(--__panel-heading-gap);background-size:cover;box-sizing:border-box;display:grid;flex:none;grid-auto-columns:auto;grid-auto-flow:column;grid-template-columns:minmax(50%,1fr);height:var(--__panel-heading-height);line-height:var(--__panel-heading-height-inner);padding:var(--panel-heading-height-padding);position:relative;z-index:4}.panel-footer.-flexible-height,.panel-heading.-flexible-height{--__panel-heading-height:auto}.panel-footer.-flexible-height:after,.panel-footer.-flexible-height:before,.panel-heading.-flexible-height:after,.panel-heading.-flexible-height:before{display:none}.panel-footer.-stub,.panel-footer.-stub:after,.panel-heading.-stub,.panel-heading.-stub:after{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel-footer.-sticky,.panel-heading.-sticky{position:sticky;top:var(--navbar-height)}.panel-footer:after,.panel-footer:before,.panel-heading:after,.panel-heading:before{bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.panel-footer .title,.panel-heading .title{font-size:1.3em}.panel-footer .alert,.panel-heading .alert{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-footer:not(.-flexible-height)>.alert,.panel-footer:not(.-flexible-height)>.button-default,.panel-heading:not(.-flexible-height)>.alert,.panel-heading:not(.-flexible-height)>.button-default{align-self:stretch;box-sizing:border-box;height:var(--__panel-heading-height-inner);margin:0;min-height:0;min-width:1px;padding-bottom:0;padding-top:0}.panel-heading{align-items:start;background-color:#121a24;background-color:var(--bg,#121a24);border-width:0 0 1px;color:var(--panelText)}.panel-heading,.panel-heading:after{border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0}.panel-heading:after{background-color:#182230;background-color:var(--panel,#182230);box-shadow:var(--panelHeaderShadow);z-index:-2}.panel-heading .-link,.panel-heading a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-heading .button-unstyled:hover .iconLetter,.panel-heading .button-unstyled:hover .svg-inline--fa,.panel-heading .button-unstyled:hover i[class*=icon-],.panel-heading a:hover .iconLetter,.panel-heading a:hover .svg-inline--fa,.panel-heading a:hover i[class*=icon-]{color:var(--panelText)}.panel-heading .faint{background-color:transparent;color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-heading .faint-link{color:hsla(240,1%,73%,.5);color:var(--faintLink,hsla(240,1%,73%,.5))}.panel-heading:not(.-flexible-height)>.button-default{flex-shrink:0}.panel-heading:not(.-flexible-height)>.button-default,.panel-heading:not(.-flexible-height)>.button-default i[class*=icon-]{color:#b9b9ba;color:var(--btnPanelText,#b9b9ba)}.panel-heading:not(.-flexible-height)>.button-default:active{background-color:#182230;background-color:var(--btnPressedPanel,#182230);color:#b9b9ba;color:var(--btnPressedPanelText,#b9b9ba)}.panel-heading:not(.-flexible-height)>.button-default:disabled{color:#b9b9ba;color:var(--btnDisabledPanelText,#b9b9ba)}.panel-heading:not(.-flexible-height)>.button-default.toggled{color:#b9b9ba;color:var(--btnToggledPanelText,#b9b9ba)}.panel-heading .rightside-button{align-self:stretch;height:var(--__panel-heading-height);margin:calc(var(--panel-heading-height-padding)*-1) 0;margin-right:calc(var(--__panel-heading-gap)*-1);text-align:center;width:var(--__panel-heading-height)}.panel-heading .rightside-button>button{box-sizing:border-box;height:100%;padding:calc(var(--panel-heading-height-padding)*1) 0;text-align:center;width:100%}.panel-heading .rightside-button>button svg{font-size:1.2em}.panel-heading .rightside-icon{align-self:stretch;margin-right:calc(var(--__panel-heading-gap)*-1);text-align:center;width:var(--__panel-heading-height)}.panel-heading .rightside-icon svg{font-size:1.2em}.panel-footer{align-items:center;border-color:var(--border,#222);border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px);border-style:solid;border-width:1px 0 0}:root{--navbar-height:3.5rem;--post-line-height:1.4;--ZI_media_modal:9000;--ZI_modals_popovers:8500;--ZI_modals:8000;--ZI_navbar_popovers:7500;--ZI_navbar:7000;--ZI_popovers:6000}html{font-size:14px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#b9b9ba;color:var(--text,#b9b9ba);font-family:sans-serif;font-family:var(--interfaceFont,sans-serif);margin:0;overflow-x:clip;overflow-y:scroll;overscroll-behavior-y:none}body.hidden{display:none}@media(any-pointer:fine){*{scrollbar-color:var(--btn) transparent}::-webkit-scrollbar{background:transparent}::-webkit-scrollbar-button,::-webkit-scrollbar-thumb{background-color:var(--btn);border-radius:var(--btnRadius);box-shadow:var(--buttonShadow)}::-webkit-scrollbar-button{--___bgPadding:2px;background-repeat:no-repeat,no-repeat;color:var(--btnText)}::-webkit-scrollbar-button:horizontal{background-size:50% calc(50% - var(--___bgPadding)),50% calc(50% - var(--___bgPadding))}::-webkit-scrollbar-button:horizontal:increment{background-image:linear-gradient(45deg,var(--btnText) 50%,transparent 51%),linear-gradient(-45deg,transparent 50%,var(--btnText) 51%);background-position:top var(--___bgPadding) left 50%,right 50% bottom var(--___bgPadding)}::-webkit-scrollbar-button:horizontal:decrement{background-image:linear-gradient(45deg,transparent 50%,var(--btnText) 51%),linear-gradient(-45deg,var(--btnText) 50%,transparent 51%);background-position:bottom var(--___bgPadding) right 50%,left 50% top var(--___bgPadding)}::-webkit-scrollbar-button:vertical{background-size:calc(50% - var(--___bgPadding)) 50%,calc(50% - var(--___bgPadding)) 50%}::-webkit-scrollbar-button:vertical:increment{background-image:linear-gradient(-45deg,transparent 50%,var(--btnText) 51%),linear-gradient(45deg,transparent 50%,var(--btnText) 51%);background-position:right var(--___bgPadding) top 50%,left var(--___bgPadding) top 50%}::-webkit-scrollbar-button:vertical:decrement{background-image:linear-gradient(-45deg,var(--btnText) 50%,transparent 51%),linear-gradient(45deg,var(--btnText) 50%,transparent 51%);background-position:left var(--___bgPadding) top 50%,right var(--___bgPadding) top 50%}html{background:var(--wallpaper);scrollbar-color:var(--selectedMenu) var(--wallpaper)}}a{color:#d8a070;color:var(--link,#d8a070);text-decoration:none}h4{margin:0}.iconLetter{display:inline-block;font-weight:1000;text-align:center}.iconLetter,.svg-inline--fa,i[class*=icon-]{color:#666;color:var(--icon,#666)}.button-unstyled:hover>.iconLetter,.button-unstyled:hover>.svg-inline--fa,.button-unstyled:hover>i[class*=icon-],a:hover>.iconLetter,a:hover>.svg-inline--fa,a:hover>i[class*=icon-]{color:var(--text)}nav{background-color:#182230;background-color:var(--topBar,#182230);box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow);box-sizing:border-box;color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));height:var(--navbar-height);position:fixed;z-index:var(--ZI_navbar)}#sidebar{grid-area:sidebar}#modal{position:absolute;z-index:var(--ZI_modals)}.column.-scrollable{position:sticky;top:var(--navbar-height)}#main-scroller{grid-area:content;position:relative}#notifs-column{grid-area:notifs}.app-bg-wrapper{background-color:var(--wallpaper);background-image:var(--body-background-image);background-position:50%;background-repeat:no-repeat;background-size:cover;height:100%;left:0;position:fixed;right:-20px;top:var(--navbar-height);z-index:-1000}.underlay{background-color:rgba(0,0,0,.15);background-color:var(--underlay,rgba(0,0,0,.15));grid-column:1/span 3;grid-row:1/1;pointer-events:none;z-index:-1000}.app-layout{--miniColumn:25rem;--maxiColumn:45rem;--columnGap:1em;--status-margin:0.75em;--effectiveSidebarColumnWidth:minmax(var(--miniColumn),var(--sidebarColumnWidth,var(--miniColumn)));--effectiveNotifsColumnWidth:minmax(var(--miniColumn),var(--notifsColumnWidth,var(--miniColumn)));--effectiveContentColumnWidth:minmax(var(--miniColumn),var(--contentColumnWidth,var(--maxiColumn)));align-content:flex-start;flex-wrap:wrap;grid-template-areas:"sidebar content";grid-template-columns:var(--effectiveSidebarColumnWidth) var(--effectiveContentColumnWidth);grid-template-rows:1fr;justify-content:center;margin:0 auto;min-height:100vh;overflow-x:clip;position:relative}.app-layout,.app-layout .column{box-sizing:border-box;display:grid}.app-layout .column{--___columnMargin:var(--columnGap);align-content:start;grid-row:1/1;grid-template-columns:100%;margin:0 calc(var(--___columnMargin)/2);padding:calc(var(--___columnMargin)) 0;row-gap:var(--___columnMargin)}.app-layout .column:not(.-scrollable){margin-top:var(--navbar-height)}.app-layout .column:hover{z-index:2}.app-layout .column.-full-height{margin-bottom:0;padding-bottom:0;padding-top:0}.app-layout .column.-scrollable{--___paddingIncrease:calc(var(--columnGap)/2);margin-left:calc(var(--___paddingIncrease)*-1);max-height:calc(100vh - var(--navbar-height));overflow-x:hidden;overflow-y:auto;padding-left:calc(var(--___paddingIncrease) + var(--___columnMargin)/2);position:sticky;top:var(--navbar-height)}@supports(scrollbar-width:none) or (-webkit-text-fill-color:initial){.app-layout .column.-scrollable:not(.-show-scrollbar){margin-right:calc(var(--___paddingIncrease)*-1);padding-right:calc(var(--___paddingIncrease) + var(--___columnMargin)/2);scrollbar-width:none}.app-layout .column.-scrollable:not(.-show-scrollbar)::-webkit-scrollbar{display:block;width:0}}.app-layout .column.-scrollable .panel-heading.-sticky{top:calc(var(--columnGap)/-1)}.app-layout.-has-new-post-button .column{padding-bottom:10rem}.app-layout.-no-sticky-headers .column .panel-heading.-sticky{position:relative;top:0}.app-layout .column-inner{align-content:start;box-sizing:border-box;display:grid;grid-template-columns:100%;row-gap:1em}.app-layout.-reverse:not(.-wide,.-mobile){grid-template-areas:"content sidebar";grid-template-columns:var(--effectiveContentColumnWidth) var(--effectiveSidebarColumnWidth)}.app-layout.-wide{grid-template-areas:"sidebar content notifs";grid-template-columns:var(--effectiveSidebarColumnWidth) var(--effectiveContentColumnWidth) var(--effectiveNotifsColumnWidth)}.app-layout.-wide.-reverse{grid-template-areas:"notifs content sidebar";grid-template-columns:var(--effectiveNotifsColumnWidth) var(--effectiveContentColumnWidth) var(--effectiveSidebarColumnWidth)}.app-layout.-mobile{grid-template-areas:"content";grid-template-columns:100vw;padding:0}.app-layout.-mobile .column{margin:var(--navbar-height) 0 0 0;padding-top:0}.app-layout.-mobile .panel,.app-layout.-mobile .panel-heading,.app-layout.-mobile .panel-heading:after,.app-layout.-mobile .panel-heading:before,.app-layout.-mobile .panel:after{border-top-left-radius:0;border-top-right-radius:0}.app-layout.-mobile #notifs-column,.app-layout.-mobile #sidebar,.app-layout.-normal #notifs-column{display:none}.text-center{text-align:center}.button-default{background-color:#182230;background-color:var(--btn,#182230);border:none;border-radius:4px;border-radius:var(--btnRadius,4px);box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow);color:#b9b9ba;color:var(--btnText,#b9b9ba);cursor:pointer;font-family:sans-serif;font-family:var(--interfaceFont,sans-serif);font-size:1em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.button-default.-sublime{background:transparent}.button-default .svg-inline--fa,.button-default i[class*=icon-]{color:#b9b9ba;color:var(--btnText,#b9b9ba)}.button-default::-moz-focus-inner{border:none}.button-default:hover{box-shadow:0 0 4px hsla(0,0%,100%,.3);box-shadow:var(--buttonHoverShadow)}.button-default:active{background-color:#182230;background-color:var(--btnPressed,#182230);box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow)}.button-default:active,.button-default:active i,.button-default:active svg{color:#b9b9ba;color:var(--btnPressedText,#b9b9ba)}.button-default:disabled{background-color:#182230;background-color:var(--btnDisabled,#182230);cursor:not-allowed}.button-default:disabled,.button-default:disabled i,.button-default:disabled svg{color:#b9b9ba;color:var(--btnDisabledText,#b9b9ba)}.button-default.toggled{background-color:#182230;background-color:var(--btnToggled,#182230);box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow)}.button-default.toggled,.button-default.toggled i,.button-default.toggled svg{color:#b9b9ba;color:var(--btnToggledText,#b9b9ba)}.button-default.danger{background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5));color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba)}.button-unstyled{background:none;border:none;box-sizing:content-box;color:inherit;cursor:pointer;display:inline;font-family:inherit;font-size:100%;line-height:unset;outline:none;padding:0;text-align:initial}.button-unstyled.-link{color:#d8a070;color:var(--link,#d8a070)}.button-unstyled.-fullwidth{width:100%}.button-unstyled.-hover-highlight:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.input,input,textarea{--_padding:0.5em;background-color:#182230;background-color:var(--input,#182230);border:none;border-radius:4px;border-radius:var(--inputRadius,4px);box-shadow:inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2),inset 0 0 2px 0 #000;box-shadow:var(--inputShadow);box-sizing:border-box;color:#b9b9ba;color:var(--inputText,#b9b9ba);display:inline-block;font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:1em;-webkit-hyphens:none;hyphens:none;line-height:2;margin:0;padding:0 var(--_padding);position:relative}.input.unstyled,input.unstyled,textarea.unstyled{background:none;border-radius:0;box-shadow:none;height:unset}.input.disabled,.input:disabled,.input[disabled=disabled],input.disabled,input:disabled,input[disabled=disabled],textarea.disabled,textarea:disabled,textarea[disabled=disabled]{cursor:not-allowed;opacity:.5}.input[type=range],input[type=range],textarea[type=range]{background:none;border:none;box-shadow:none;flex:1;margin:0}.input[type=radio],input[type=radio],textarea[type=radio]{display:none}.input[type=radio]:checked+label:before,input[type=radio]:checked+label:before,textarea[type=radio]:checked+label:before{background-color:var(--accent,#d8a070);box-shadow:inset 0 0 2px #000,inset 0 0 0 4px #182230;box-shadow:var(--inputShadow),0 0 0 4px var(--fg,#182230) inset}.input[type=radio]:disabled,.input[type=radio]:disabled+label,.input[type=radio]:disabled+label:before,input[type=radio]:disabled,input[type=radio]:disabled+label,input[type=radio]:disabled+label:before,textarea[type=radio]:disabled,textarea[type=radio]:disabled+label,textarea[type=radio]:disabled+label:before{opacity:.5}.input[type=radio]+label:before,input[type=radio]+label:before,textarea[type=radio]+label:before{background-color:#182230;background-color:var(--input,#182230);border-radius:100%;box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);box-sizing:border-box;color:transparent;content:"";display:inline-block;flex-shrink:0;font-size:1.1em;height:1.1em;line-height:1.1;margin-right:.5em;overflow:hidden;text-align:center;transition:box-shadow .2s;vertical-align:top;width:1.1em}.input[type=checkbox]:checked+label:before,input[type=checkbox]:checked+label:before,textarea[type=checkbox]:checked+label:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.input[type=checkbox]:disabled,.input[type=checkbox]:disabled+label,.input[type=checkbox]:disabled+label:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled+label,input[type=checkbox]:disabled+label:before,textarea[type=checkbox]:disabled,textarea[type=checkbox]:disabled+label,textarea[type=checkbox]:disabled+label:before{opacity:.5}.input[type=checkbox]+label:before,input[type=checkbox]+label:before,textarea[type=checkbox]+label:before{background-color:#182230;background-color:var(--input,#182230);border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);box-sizing:border-box;color:transparent;content:"✓";display:inline-block;flex-shrink:0;font-size:1.1em;height:1.1em;line-height:1.1;margin-right:.5em;overflow:hidden;text-align:center;transition:color .2s;vertical-align:top;width:1.1em}.input.resize-height,input.resize-height,textarea.resize-height{resize:vertical}textarea{line-height:var(--post-line-height);padding:var(--_padding)}option{background-color:#121a24;background-color:var(--bg,#121a24);color:#b9b9ba;color:var(--text,#b9b9ba)}.hide-number-spinner{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.hide-number-spinner[type=number]::-webkit-inner-spin-button,.hide-number-spinner[type=number]::-webkit-outer-spin-button{display:none;opacity:0}.btn-block{display:block;width:100%}.btn-group{display:inline-flex;position:relative;vertical-align:middle}.btn-group button{flex:1 1 auto;position:relative}.btn-group button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.fa{color:gray}.mobile-shown{display:none}.badge{border-radius:99px;box-sizing:border-box;display:inline-block;font-size:.9em;font-style:normal;font-weight:400;height:1.3em;line-height:1;max-width:10em;min-width:1.7em;overflow:hidden;padding:.15em;text-align:center;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.badge.badge-notification{background-color:red;background-color:var(--badgeNotification,red);color:#fff;color:var(--badgeNotificationText,#fff)}.alert{border-radius:5px;border-radius:var(--tooltipRadius,5px);margin:0 .35em;padding:0 .25em}.alert.error{background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5));color:#b9b9ba;color:var(--alertErrorText,#b9b9ba)}.panel-heading .alert.error{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba)}.alert.warning{background-color:rgba(111,111,20,.5);background-color:var(--alertWarning,rgba(111,111,20,.5));color:#b9b9ba;color:var(--alertWarningText,#b9b9ba)}.panel-heading .alert.warning{color:#b9b9ba;color:var(--alertWarningPanelText,#b9b9ba)}.alert.success{background-color:var(--alertSuccess,rgba(111,111,20,.5));color:var(--alertSuccessText,#b9b9ba)}.panel-heading .alert.success{color:var(--alertSuccessPanelText,#b9b9ba)}.faint,.faint-link{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.faint-link:hover{text-decoration:underline}.visibility-notice{border:1px solid hsla(240,1%,73%,.5);border:1px solid var(--faint,hsla(240,1%,73%,.5));border-radius:4px;border-radius:var(--inputRadius,4px);padding:.5em}.notice-dismissible{padding-right:4rem;position:relative}.notice-dismissible .dismiss{color:inherit;padding:.5em;position:absolute;right:0;top:0}.fa-scale-110.iconLetter,.fa-scale-110.svg-inline--fa{font-size:1.1em}.fa-old-padding-layer,.fa-old-padding.iconLetter,.fa-old-padding.svg-inline--fa{padding:0 .3em}.veryfaint{opacity:.25}.login-hint{text-align:center}@media (min-width:801px){.login-hint{display:none}}.login-hint a{display:inline-block;padding:1em 0;width:100%}.btn.button-default{min-height:2em}.new-status-notification{flex:1;font-size:1.1em;position:relative;z-index:1}@media (max-width:800px){.mobile-hidden{display:none}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes shakeError{0%{transform:translateX(0)}15%{transform:translateX(.375rem)}30%{transform:translateX(-.375rem)}45%{transform:translateX(.375rem)}60%{transform:translateX(-.375rem)}75%{transform:translateX(.375rem)}90%{transform:translateX(-.375rem)}to{transform:translateX(0)}}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter-from,.fade-leave-active{opacity:0}.visible-for-screenreader-only{clip:rect(0 0 0 0);display:block;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;visibility:visible;width:1px}.thread-tree-replies{border-left:2px solid var(--border,#222);margin-left:var(--status-margin,.75em)}.thread-tree-replies-hidden{align-items:stretch;display:flex;flex-direction:column;padding:var(--status-margin,.75em)}.Conversation{z-index:1}.Conversation .conversation-dive-to-top-level-box{align-items:stretch;border-bottom:1px solid var(--border,#222);border-radius:0;display:flex;flex-direction:column;padding:var(--status-margin,.75em)}.Conversation .thread-ancestors{border-left:2px solid var(--border,#222);margin-left:var(--status-margin,.75em)}.Conversation .thread-ancestor.-faded .StatusContent{--link:var(--faintLink);--text:var(--faint);color:var(--text)}.Conversation .thread-ancestor-dive-box{border-bottom:1px solid var(--border,#222);border-radius:0;padding-left:var(--status-margin,.75em)}.Conversation .thread-ancestor-dive-box,.Conversation .thread-ancestor-dive-box-inner{align-items:stretch;display:flex;flex-direction:column}.Conversation .thread-ancestor-dive-box-inner{padding:var(--status-margin,.75em)}.Conversation .conversation-status{border-bottom:1px solid var(--border,#222);border-radius:0}.Conversation .thread-ancestor-has-other-replies .conversation-status,.Conversation .thread-ancestor:last-child .conversation-status,.Conversation .thread-ancestor:last-child .thread-ancestor-dive-box,.Conversation.-expanded .thread-tree .conversation-status,.Conversation:last-child .conversation-status{border-bottom:none}.Conversation .thread-ancestors+.thread-tree>.conversation-status{border-top:1px solid var(--border,#222)}.Conversation.status-fadein.-expanded .thread-body{border-bottom:1px solid var(--border,#222);border-left:4px solid red;border-left-color:var(--cRed,red);border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px)}.Conversation.-expanded.status-fadein{margin:calc(var(--status-margin, .75em)/2)}.timeline-menu-popover{border-top-left-radius:0;border-top-right-radius:0;font-size:1rem;margin-top:.6rem;max-width:100vw;min-width:24rem}.timeline-menu-popover ul{list-style:none;margin:0;padding:0}.timeline-menu-popover a{display:block;height:3.5em;line-height:3.5em;padding:0 .65em}.timeline-menu-popover a:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.timeline-menu-popover a.router-link-active,.timeline-menu-popover a:hover{--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon);background-color:#151e2a;background-color:var(--selectedMenu,#151e2a)}.timeline-menu-popover a.router-link-active{color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba);font-weight:bolder}.timeline-menu-popover a.router-link-active:hover{text-decoration:underline}.timeline-menu-popover a svg{margin-left:-.2em;margin-right:.4em}.timeline-menu-popover li{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.timeline-menu-popover li:last-child a{border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px);border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px)}.timeline-menu-popover li:last-child{border:none}.TimelineMenu{margin-right:auto;min-width:0}.TimelineMenu .popover-trigger-button{vertical-align:bottom}.TimelineMenu .panel:after{border-top-left-radius:0;border-top-right-radius:0}.TimelineMenu .timeline-menu-title{cursor:pointer;display:flex;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.TimelineMenu .timeline-menu-title .timeline-menu-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TimelineMenu .timeline-menu-title svg{margin-left:.6em;transition:transform .1s}.TimelineMenu .timeline-menu-title .click-blocker{cursor:default;flex-grow:1}.TimelineMenu.open .timeline-menu-title svg{color:#b9b9ba;color:var(--panelText,#b9b9ba);transform:rotate(180deg)}.TimelineMenu .panel{box-shadow:var(--popoverShadow)}.Timeline .alert-dot{border-radius:100%;height:8px;left:calc(50% - 4px);margin-left:6px;margin-top:-6px;top:calc(50% - 4px);width:8px}.Timeline .alert-badge,.Timeline .alert-dot{background-color:var(--badgeNeutral);position:absolute}.Timeline .alert-badge{border-radius:var(--tooltipRadius);color:var(--badgeNeutralText);font-size:.75em;left:calc(50% - .5em);line-height:1;margin-left:.7em;margin-top:-1em;padding:.2em;text-align:right;top:calc(50% - .4em)}.Timeline .loadmore-button{position:relative}.Timeline.-blocked{cursor:progress}.Timeline .conversation-heading{top:calc(var(--__panel-heading-height)*var(--currentPanelStack, 2));z-index:2}.Timeline.-nonpanel .timeline-heading{line-height:2.75em;padding:0 .5em;text-align:center}.Timeline.-nonpanel .timeline-heading .alert,.Timeline.-nonpanel .timeline-heading .button-default{line-height:2em;width:100%}.tab-switcher{display:flex}.tab-switcher .tab-icon{display:block;margin:.2em auto}.tab-switcher.top-tabs{flex-direction:column}.tab-switcher.top-tabs>.tabs{flex:0 0 auto;flex-direction:row;overflow-x:auto;overflow-y:hidden;padding-top:5px;width:100%}.tab-switcher.top-tabs>.tabs:after,.tab-switcher.top-tabs>.tabs:before{border-bottom:1px solid #222;border-bottom-color:var(--border,#222);content:"";flex:1 1 auto}.tab-switcher.top-tabs>.tabs .tab-wrapper{height:2em}.tab-switcher.top-tabs>.tabs .tab-wrapper:not(.active):after{border-bottom:1px solid #222;border-bottom-color:var(--border,#222);bottom:0;left:0;right:0}.tab-switcher.top-tabs>.tabs .tab{border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:-93px;min-width:1px;padding-bottom:99px;width:100%}.tab-switcher.top-tabs .contents.scrollable-tabs{flex-basis:0}.tab-switcher.side-tabs{flex-direction:row}@media (max-width:800px){.tab-switcher.side-tabs{overflow-x:auto}}.tab-switcher.side-tabs>.contents{flex:1 1 auto}.tab-switcher.side-tabs>.tabs{flex:0 0 auto;flex-direction:column;overflow-x:hidden;overflow-y:auto}.tab-switcher.side-tabs>.tabs:after,.tab-switcher.side-tabs>.tabs:before{border-right:1px solid #222;border-right-color:var(--border,#222);content:"";flex-basis:.5em;flex-shrink:0}.tab-switcher.side-tabs>.tabs:after{flex-grow:1}.tab-switcher.side-tabs>.tabs:before{flex-grow:0}.tab-switcher.side-tabs>.tabs .tab-wrapper{display:flex;flex-direction:column;min-width:10em}@media (max-width:800px){.tab-switcher.side-tabs>.tabs .tab-wrapper{min-width:4em}}.tab-switcher.side-tabs>.tabs .tab-wrapper:not(.active):after{border-right:1px solid #222;border-right-color:var(--border,#222);bottom:0;right:0;top:0}.tab-switcher.side-tabs>.tabs .tab-wrapper:before{border-right:1px solid #222;border-right-color:var(--border,#222);content:"";flex:0 0 6px}.tab-switcher.side-tabs>.tabs .tab-wrapper:last-child .tab{margin-bottom:0}.tab-switcher.side-tabs>.tabs .tab{border-bottom-right-radius:0;border-top-right-radius:0;box-sizing:content-box;flex:1;margin-left:1em;margin-right:-200px;min-width:10em;min-width:1px;padding-left:1em;padding-right:calc(1em + 200px)}@media (max-width:800px){.tab-switcher.side-tabs>.tabs .tab{margin-left:.25em;margin-right:calc(.25em - 200px);padding-left:.25em;padding-right:calc(.25em + 200px)}.tab-switcher.side-tabs>.tabs .tab .text{display:none}}.tab-switcher .contents{flex:1 0 auto;min-height:0}.tab-switcher .contents .hidden{display:none}.tab-switcher .contents .full-height:not(.hidden){display:flex;flex-direction:column;height:100%}.tab-switcher .contents .full-height:not(.hidden)>:not(.mobile-label){flex:1}.tab-switcher .contents.scrollable-tabs{overflow-y:auto}.tab-switcher .tab{padding:6px 1em;position:relative;white-space:nowrap}.tab-switcher .tab:not(.active){z-index:4}.tab-switcher .tab:not(.active):hover{z-index:6}.tab-switcher .tab.active{background:transparent;color:#b9b9ba;color:var(--tabActiveText,#b9b9ba);z-index:5}.tab-switcher .tab img{margin-top:-5px;max-height:26px;vertical-align:top}.tab-switcher .tabs{box-sizing:border-box;display:flex;position:relative}.tab-switcher .tabs:after,.tab-switcher .tabs:before{display:block;flex:1 1 auto}.tab-switcher .tab-wrapper{display:flex;flex:0 0 auto;position:relative}.tab-switcher .tab-wrapper:not(.active):after{content:"";position:absolute;z-index:7}.tab-switcher .mobile-label{border-bottom:1px solid var(--border,#222);margin-bottom:.25em;margin-left:.2em;margin-top:.5em;padding-bottom:.25em;padding-left:.3em}@media (min-width:800px){.tab-switcher .mobile-label{display:none}}.chat-title{--emoji-size:14px;display:flex}.chat-title,.chat-title .username{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-title .username{word-wrap:break-word;display:inline;max-width:100%}.chat-title .avatar-container{align-self:center;line-height:1}.chat-title .titlebar-avatar{border-radius:10px;border-radius:var(--avatarAltRadius,10px);height:1.5em;margin-right:.5em;width:1.5em}.chat-title .titlebar-avatar.animated:before{display:none}.chat-list-item{box-sizing:border-box;cursor:pointer;display:flex;flex-direction:row;height:5em;overflow:hidden;padding:.75em}.chat-list-item :focus{outline:none}.chat-list-item:hover{background-color:var(--selectedPost,#151e2a);box-shadow:0 0 3px 1px rgba(0,0,0,.1)}.chat-list-item .chat-list-item-left{margin-right:1em}.chat-list-item .chat-list-item-center{word-wrap:break-word;box-sizing:border-box;overflow:hidden;width:100%}.chat-list-item .heading{display:inline-flex;justify-content:space-between;line-height:1em;width:100%}.chat-list-item .heading-right{white-space:nowrap}.chat-list-item .name-and-account-name{flex-shrink:1;line-height:var(--post-line-height);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-list-item .chat-preview{color:#b9b9ba;color:var(--faint,#b9b9ba);display:inline-flex;margin:.35em 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.chat-list-item a{color:var(--faintLink,#d8a070);pointer-events:none;text-decoration:none}.chat-list-item:hover .animated.avatar canvas{display:none}.chat-list-item:hover .animated.avatar img{visibility:visible}.chat-list-item .Avatar{border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.chat-list-item .chat-preview-body{--emoji-size:1.4em;padding-right:1em}.chat-list-item .time-wrapper{line-height:var(--post-line-height)}.basic-user-card{--emoji-size:14px;display:flex;flex:1 0;margin:0;padding:.6em 1em}.basic-user-card-collapsed-content{flex:1;margin-left:.7em;min-width:0;text-align:left}.basic-user-card-user-name img{height:16px;-o-object-fit:contain;object-fit:contain;vertical-align:middle;width:16px}.basic-user-card-screen-name,.basic-user-card-user-name-value{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.basic-user-card-expanded-content{flex:1;margin-left:.7em;min-width:0}.chat-new .input-wrap{display:flex;margin:.7em .5em}.chat-new .input-wrap input{width:100%}.chat-new .search-icon{margin-right:.3em}.chat-new .member-list{padding-bottom:.7rem}.chat-new .basic-user-card:hover{background-color:var(--selectedPost,#151e2a);cursor:pointer}.chat-new .go-back-button{align-self:start;height:100%;line-height:1;text-align:center;width:var(--__panel-heading-height-inner)}.chat-list{margin-bottom:0;min-height:25em}.emtpy-chat-list-alert{color:#b9b9ba;color:var(--faint,#b9b9ba);display:flex;font-size:1.2em;justify-content:center;padding:3em}.chat-message-wrapper.hovered-message-chain .animated.Avatar canvas{display:none}.chat-message-wrapper.hovered-message-chain .animated.Avatar img{visibility:visible}.chat-message-wrapper .chat-message-menu{opacity:0;position:absolute;top:-.8em;transition:opacity .1s}.chat-message-wrapper .chat-message-menu button{padding-bottom:.2em;padding-top:.2em}.chat-message-wrapper .menu-icon{cursor:pointer}.chat-message-wrapper .menu-icon:hover,.extra-button-popover.open .chat-message-wrapper .menu-icon{color:#b9b9ba;color:var(--text,#b9b9ba)}.chat-message-wrapper .popover{width:12em}.chat-message-wrapper .chat-message{display:flex;padding-bottom:.5em}.chat-message-wrapper .chat-message .status-body:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.chat-message-wrapper .avatar-wrapper{margin-right:.72em;width:32px}.chat-message-wrapper .attachments,.chat-message-wrapper .link-preview{margin-bottom:1em}.chat-message-wrapper .status{border-radius:10px;border-radius:var(--chatMessageRadius,10px);display:flex;padding:.75em}.chat-message-wrapper .created-at{float:right;font-size:.8em;font-style:italic;margin:-1em 0 -.5em;opacity:.8;position:relative}.chat-message-wrapper .without-attachment .message-content .RichContent:after{content:" ";display:inline-block;margin-right:5.4em}.chat-message-wrapper .pending .created-at,.chat-message-wrapper .pending .status-content.media-body{color:var(--faint)}.chat-message-wrapper .error .created-at,.chat-message-wrapper .error .status-content.media-body{color:red;color:var(--badgeNotification,red)}.chat-message-wrapper .chat-message-inner{align-items:flex-start;display:flex;flex-direction:column;max-width:80%;min-width:10em;width:100%}.chat-message-wrapper .outgoing{align-content:end;display:flex;flex-flow:row wrap;justify-content:flex-end}.chat-message-wrapper .outgoing a{color:var(--chatMessageOutgoingLink,#d8a070)}.chat-message-wrapper .outgoing .status{background-color:var(--chatMessageOutgoingBg,#151e2a);border:1px solid var(--chatMessageOutgoingBorder,--lightBg);color:var(--chatMessageOutgoingText,#b9b9ba)}.chat-message-wrapper .outgoing .chat-message-inner{align-items:flex-end}.chat-message-wrapper .outgoing .chat-message-menu{right:.4rem}.chat-message-wrapper .incoming a{color:var(--chatMessageIncomingLink,#d8a070)}.chat-message-wrapper .incoming .status{background-color:var(--chatMessageIncomingBg,#121a24);border:1px solid var(--chatMessageIncomingBorder,--border)}.chat-message-wrapper .incoming .created-at a,.chat-message-wrapper .incoming .status{color:var(--chatMessageIncomingText,#b9b9ba)}.chat-message-wrapper .incoming .chat-message-menu{left:.4rem}.chat-message-wrapper .chat-message-inner.with-media,.chat-message-wrapper .chat-message-inner.with-media .status{width:100%}.chat-message-wrapper .visible{opacity:1}.chat-message-date-separator{color:#b9b9ba;color:var(--faintedText,#b9b9ba);font-size:.9em;margin:1.4em 0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chat-view{display:flex;height:100%}.chat-view .chat-view-inner{display:flex;height:auto;overflow:visible;width:100%}.chat-view .chat-view-body{background-color:var(--chatBg,#121a24);border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0;box-sizing:border-box;display:flex;flex-direction:column;margin:0;min-height:calc(100vh - var(--navbar-height));overflow:visible;width:100%}.chat-view .chat-view-body:after{border-radius:0}.chat-view .message-list{display:flex;flex-direction:column;height:100%;justify-content:end;padding:0 .8em}.chat-view .footer{background-color:#121a24;background-color:var(--bg,#121a24);bottom:0;position:sticky;z-index:1}.chat-view .chat-view-heading{grid-template-columns:auto minmax(50%,1fr)}.chat-view .go-back-button{align-self:start;height:100%;line-height:1;text-align:center;width:var(--__panel-heading-height-inner)}.chat-view .jump-to-bottom-button{align-items:center;background-color:#182230;background-color:var(--btn,#182230);border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.3),0 2px 4px rgba(0,0,0,.3);cursor:pointer;display:flex;height:2.5em;justify-content:center;opacity:0;position:absolute;right:1.3em;top:-3.2em;transition:all .35s;transition-timing-function:cubic-bezier(0,1,.5,1);visibility:hidden;width:2.5em;z-index:10}.chat-view .jump-to-bottom-button.visible{opacity:1;visibility:visible}.chat-view .jump-to-bottom-button i{color:#b9b9ba;color:var(--text,#b9b9ba);font-size:1em}.chat-view .jump-to-bottom-button .unread-message-count{border-radius:50px;font-size:.8em;left:50%;margin-top:-1rem;padding:.1em;position:absolute}.chat-view .jump-to-bottom-button .chat-loading-error{align-items:flex-end;display:flex;height:100%;width:100%}.chat-view .jump-to-bottom-button .chat-loading-error .error{width:100%}.follow-card-content-container{display:flex;flex-flow:row wrap;flex-shrink:0;justify-content:space-between;line-height:1.5em}.follow-card-button{margin-left:1em;margin-top:.5em;padding:0 1.5em}.follow-card-follow-button{margin-left:auto;margin-top:.5em;width:10em}.with-load-more-footer{border-top:1px solid #222;border-top-color:var(--border,#222);padding:10px;text-align:center}.with-load-more-footer .error{font-size:1rem}.with-load-more-footer a{cursor:pointer}.user-profile{--currentPanelStack:1;flex:2;flex-basis:500px}.user-profile .user-birthday{margin:0 .75em .5em}.user-profile .user-profile-fields{margin:0 .5em}.user-profile .user-profile-fields img{max-height:400px;max-width:100%;-o-object-fit:contain;object-fit:contain;vertical-align:middle}.user-profile .user-profile-fields img.emoji{height:18px;width:18px}.user-profile .user-profile-fields .user-profile-field{border:1px solid var(--border,#222);border-radius:4px;border-radius:var(--inputRadius,4px);display:flex;margin:.25em}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name{border-right:1px solid var(--border,#222);color:var(--lightText);flex:0 1 30%;font-weight:500;min-width:120px;text-align:right}.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{color:var(--text);flex:1 1 70%;margin:0 0 0 .25em}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name,.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{box-sizing:border-box;line-height:1.3;overflow:hidden;padding:.5em 1.5em;text-overflow:ellipsis;white-space:nowrap}.user-profile .userlist-placeholder{align-items:middle;display:flex;justify-content:center;padding:2em}.user-profile-placeholder .panel-body{align-items:middle;display:flex;justify-content:center;padding:7em}.search-result-heading{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));padding:.75rem;text-align:center}@media (max-width:800px){.search-nav-heading .tab-switcher .tabs .tab-wrapper{display:block;flex:1 1 auto;justify-content:center;text-align:center}}.search-result{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);box-sizing:border-box}.search-result-footer{background-color:#182230;background-color:var(--panel,#182230);border-color:var(--border,#222);border-style:solid;border-width:1px 0 0;padding:10px}.search-input-container{display:flex;justify-content:center;padding:.8rem}.search-input-container .search-input{box-sizing:border-box;font-size:1rem;line-height:1.125rem;padding:.5rem;width:100%}.search-input-container .search-button{margin-left:.5em}.loading-icon{padding:1em}.trend{align-items:center;display:flex}.trend .hashtag{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend .count,.trend .hashtag{color:#b9b9ba;color:var(--text,#b9b9ba)}.trend .count{flex:0 0 auto;font-size:1.5rem;font-weight:500;line-height:2.25rem;text-align:center;width:2rem}.more-statuses-button{height:3.5em;line-height:3.5em}.interface-language-switcher .language-select{margin-right:1em}.registration-form{display:flex;flex-direction:column;margin:.6em}.registration-form .container{display:flex;flex-direction:row}.registration-form .container>*{min-width:0}.registration-form .terms-of-service{flex:0 1 50%;margin:.8em}.registration-form .text-fields{display:flex;flex:1 0;flex-direction:column;margin-top:.6em}.registration-form textarea{min-height:100px;resize:vertical}.registration-form .form-group{display:flex;flex-direction:column;line-height:2;margin-bottom:1em;padding:.3em 0}.registration-form .form-group--error{animation-duration:.6s;animation-name:shakeError;animation-timing-function:ease-in-out}.registration-form .form-group--error .form--label{color:#f04124;color:var(--cRed,#f04124)}.registration-form .form-error{margin-top:-.7em;text-align:left}.registration-form .form-error span{font-size:.85em}.registration-form .form-error ul{list-style:none;margin-top:0;padding:0 0 0 5px}.registration-form .form-error ul li:before{content:"• "}.registration-form form textarea{line-height:16px;resize:vertical}.registration-form .captcha{margin-bottom:.4em;max-width:350px}.registration-form .btn{height:2em;margin-top:.6em}.registration-form .error{text-align:center}@media (max-width:800px){.registration-form .container{flex-direction:column-reverse}}.password-reset-form{align-items:center;display:flex;flex-direction:column;margin:.6em}.password-reset-form .container{display:flex;flex:1 0;flex-direction:column;margin-top:.6em;max-width:18rem}.password-reset-form .container>*{min-width:0}.password-reset-form .form-group{display:flex;flex-direction:column;line-height:1.85em;margin-bottom:1em;padding:.3em 0}.password-reset-form .error{animation-duration:.4s;animation-name:shakeError;animation-timing-function:ease-in-out;text-align:center}.password-reset-form .alert{margin:.3em 0 1em;padding:.5em}.password-reset-form .password-reset-required{background-color:var(--alertError,rgba(211,16,20,.5));padding:10px 0}.password-reset-form .notice-dismissible{padding-right:2rem}.password-reset-form .dismiss{cursor:pointer}.follow-request-card-content-container{display:flex;flex-flow:row wrap}.follow-request-card-content-container button{flex:1 1;margin-right:.5em;margin-top:.5em;max-width:12em;min-width:8em}.follow-request-card-content-container button:last-child{margin-right:0}.tos-content{margin:1em}.staff-group{padding-left:1em;padding-top:1em}.staff-group .basic-user-card{padding-left:0}.mrf-section{margin:1em}.mrf-section table{padding-bottom:20px;padding-left:10px;text-align:left;width:100%}.mrf-section table td,.mrf-section table th{max-width:360px;overflow:hidden;vertical-align:text-top;width:180px}.mrf-section table td+td,.mrf-section table th+th{width:auto}.list-card{display:flex}.list-name{flex-grow:1}.button-list-edit,.list-name{color:#d8a070;color:var(--link,#d8a070);margin:0;padding:1em}.button-list-edit:hover,.list-name:hover{--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);color:#d8a070;color:var(--selectedMenuText,#d8a070)}.Lists .new-list-button{padding:0 .5em}.ListsUserSearch .input-wrap{display:flex;margin:.7em .5em}.ListsUserSearch .input-wrap input{width:100%}.ListsUserSearch .search-icon{margin-right:.3em}.panel-loading{align-items:center;color:#b9b9ba;color:var(--text,#b9b9ba);display:flex;font-size:2em;height:100%;justify-content:center}.panel-loading .loading-text svg{color:#b9b9ba;color:var(--text,#b9b9ba);line-height:0;vertical-align:middle}.ListEdit{--panel-body-padding:0.5em;display:flex;flex-direction:column;height:calc(100vh - var(--navbar-height));overflow:hidden}.ListEdit .list-edit-heading{grid-template-columns:auto minmax(50%,1fr)}.ListEdit .panel-body{display:flex;flex:1;flex-direction:column;overflow:hidden}.ListEdit .list-member-management{flex:1 0 auto}.ListEdit .search-icon{margin-right:.3em}.ListEdit .users-list{overflow-y:auto;padding-bottom:.7rem}.ListEdit .members-list,.ListEdit .search-list{flex-direction:column;min-height:0;overflow:hidden}.ListEdit .go-back-button{align-self:start;height:100%;line-height:1;text-align:center;width:var(--__panel-heading-height-inner)}.ListEdit .btn{margin:0 .5em}.ListEdit .panel-footer{grid-template-columns:minmax(10%,1fr)}.ListEdit .panel-footer .footer-button{min-width:9em}.announcement-editor{align-items:stretch;display:flex;flex-direction:column}.announcement-editor .announcement-metadata{margin-top:.5em}.announcement-editor .post-textarea{box-sizing:content-box;height:10em;overflow:none;resize:vertical}.announcement{border-bottom:1px solid var(--border,#222);border-radius:0;padding:var(--status-margin,.75em)}.announcement .body,.announcement .heading{margin-bottom:var(--status-margin,.75em)}.announcement .footer,.announcement .footer .times{display:flex;flex-direction:column}.announcement .footer .actions{display:flex;flex-direction:row;justify-content:space-evenly}.announcement .footer .actions .btn{flex:1;margin:1em;max-width:10em}.announcements-page .post-form{padding:var(--status-margin,.75em)}.announcements-page .post-form .body,.announcements-page .post-form .heading{margin-bottom:var(--status-margin,.75em)}.announcements-page .post-form .post-button{min-width:10em} -/*# sourceMappingURL=app.48e52505beba5b9ab69b.css.map*/ -\ No newline at end of file diff --git a/priv/static/static/css/app.48e52505beba5b9ab69b.css.map b/priv/static/static/css/app.48e52505beba5b9ab69b.css.map @@ -1 +0,0 @@ -{"version":3,"file":"static/css/app.48e52505beba5b9ab69b.css","mappings":"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","sources":["webpack://pleroma_fe/./src/components/modal/modal.vue","webpack://pleroma_fe/./node_modules/vue-virtual-scroller/dist/vue-virtual-scroller.css","webpack://pleroma_fe/./src/components/login_form/login_form.vue","webpack://pleroma_fe/./src/components/media_upload/media_upload.vue","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.vue","webpack://pleroma_fe/./src/_variables.scss","webpack://pleroma_fe/./src/components/checkbox/checkbox.vue","webpack://pleroma_fe/./src/components/popover/popover.vue","webpack://pleroma_fe/./src/components/still-image/still-image.vue","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.scss","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.vue","webpack://pleroma_fe/./src/components/select/select.vue","webpack://pleroma_fe/./src/components/poll/poll_form.vue","webpack://pleroma_fe/./src/components/flash/flash.vue","webpack://pleroma_fe/./src/components/attachment/attachment.scss","webpack://pleroma_fe/./src/components/gallery/gallery.vue","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.vue","webpack://pleroma_fe/./src/components/mention_link/mention_link.scss","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.scss","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.scss","webpack://pleroma_fe/./src/components/rich_content/rich_content.scss","webpack://pleroma_fe/./src/components/poll/poll.vue","webpack://pleroma_fe/./src/components/status_body/status_body.scss","webpack://pleroma_fe/./src/components/link-preview/link-preview.vue","webpack://pleroma_fe/./src/components/status_content/status_content.vue","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.vue","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.vue","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.vue","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.vue","webpack://pleroma_fe/./src/components/account_actions/account_actions.vue","webpack://pleroma_fe/./src/components/user_note/user_note.vue","webpack://pleroma_fe/./src/components/user_card/user_card.scss","webpack://pleroma_fe/./src/components/user_panel/user_panel.vue","webpack://pleroma_fe/./src/components/navigation/navigation_entry.vue","webpack://pleroma_fe/./src/components/navigation/navigation_pins.vue","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.vue","webpack://pleroma_fe/./src/components/features_panel/features_panel.vue","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.vue","webpack://pleroma_fe/./src/components/media_modal/media_modal.vue","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.vue","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack://pleroma_fe/./src/components/reply_button/reply_button.vue","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.vue","webpack://pleroma_fe/./src/components/react_button/react_button.vue","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.vue","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.vue","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.vue","webpack://pleroma_fe/./src/components/status_popover/status_popover.vue","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.vue","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.vue","webpack://pleroma_fe/./src/components/status/status.scss","webpack://pleroma_fe/./src/components/report/report.scss","webpack://pleroma_fe/./src/components/notification/notification.scss","webpack://pleroma_fe/./src/components/notifications/notifications.scss","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.vue","webpack://pleroma_fe/./src/components/search_bar/search_bar.vue","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.scss","webpack://pleroma_fe/./src/components/list/list.vue","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.vue","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.vue","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.vue","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.vue","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.vue","webpack://pleroma_fe/./src/App.scss","webpack://pleroma_fe/./src/panel.scss","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.vue","webpack://pleroma_fe/./src/components/conversation/conversation.vue","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.vue","webpack://pleroma_fe/./src/components/timeline/timeline.scss","webpack://pleroma_fe/./src/components/tab_switcher/tab_switcher.scss","webpack://pleroma_fe/./src/components/chat_title/chat_title.vue","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.scss","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.vue","webpack://pleroma_fe/./src/components/chat_new/chat_new.scss","webpack://pleroma_fe/./src/components/chat_list/chat_list.vue","webpack://pleroma_fe/./src/components/chat_message/chat_message.scss","webpack://pleroma_fe/./src/components/chat/chat.scss","webpack://pleroma_fe/./src/components/follow_card/follow_card.vue","webpack://pleroma_fe/./src/hocs/with_load_more/with_load_more.scss","webpack://pleroma_fe/./src/components/user_profile/user_profile.vue","webpack://pleroma_fe/./src/components/search/search.vue","webpack://pleroma_fe/./src/components/interface_language_switcher/interface_language_switcher.vue","webpack://pleroma_fe/./src/components/registration/registration.vue","webpack://pleroma_fe/./src/components/password_reset/password_reset.vue","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.vue","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.vue","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.scss","webpack://pleroma_fe/./src/components/lists_card/lists_card.vue","webpack://pleroma_fe/./src/components/lists/lists.vue","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.vue","webpack://pleroma_fe/./src/components/panel_loading/panel_loading.vue","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.vue","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.vue","webpack://pleroma_fe/./src/components/announcement/announcement.vue","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.vue"],"sourcesContent":["\n.modal-view {\n z-index: var(--ZI_modals);\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgb(0 0 0 / 50%);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgb(0 0 0 / 0%);\n }\n\n to {\n background-color: rgb(0 0 0 / 50%);\n }\n}\n",".vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:flex}.vue-recycle-scroller__slot{flex:auto 0 0}.vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}","\n@import \"../../variables\";\n\n.login-form {\n display: flex;\n flex-direction: column;\n padding: 0.6em;\n\n .btn {\n min-height: 2em;\n width: 10em;\n }\n\n .register {\n flex: 1 1;\n }\n\n .login-bottom {\n margin-top: 1em;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0.5em 0.6em;\n line-height: 24px;\n }\n\n .form-bottom {\n display: flex;\n padding: 0.5em;\n height: 32px;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n}\n","\n@import \"../../variables\";\n\n.media-upload {\n cursor: pointer; // We use <label> for interactivity... i wonder if it's fine\n\n .hidden-input-file {\n display: none;\n }\n}\n ","\n@import \"../../variables\";\n\n.ScopeSelector {\n .scope {\n display: inline-block;\n cursor: pointer;\n min-width: 1.3em;\n min-height: 1.3em;\n text-align: center;\n\n &.selected svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n","$main-color: #f58d2c;\n$main-background: white;\n$darkened-background: whitesmoke;\n\n$fallback--bg: #121a24;\n$fallback--fg: #182230;\n$fallback--faint: rgb(185 185 186 / 50%);\n$fallback--text: #b9b9ba;\n$fallback--link: #d8a070;\n$fallback--icon: #666;\n$fallback--lightBg: rgb(21 30 42);\n$fallback--lightText: #b9b9ba;\n$fallback--border: #222;\n$fallback--cRed: #f00;\n$fallback--cBlue: #0095ff;\n$fallback--cGreen: #0fa00f;\n$fallback--cOrange: orange;\n\n$fallback--alertError: rgb(211 16 20 / 50%);\n$fallback--alertWarning: rgb(111 111 20 / 50%);\n\n$fallback--panelRadius: 10px;\n$fallback--checkboxRadius: 2px;\n$fallback--btnRadius: 4px;\n$fallback--inputRadius: 4px;\n$fallback--tooltipRadius: 5px;\n$fallback--avatarRadius: 4px;\n$fallback--avatarAltRadius: 10px;\n$fallback--attachmentRadius: 10px;\n$fallback--chatMessageRadius: 10px;\n\n$fallback--buttonShadow: 0 0 2px 0 rgb(0 0 0 / 100%),\n 0 1px 0 0 rgb(255 255 255 / 20%) inset,\n 0 -1px 0 0 rgb(0 0 0 / 20%) inset;\n\n$status-margin: 0.75em;\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.checkbox {\n position: relative;\n display: inline-block;\n min-height: 1.2em;\n\n &-indicator {\n position: relative;\n padding-left: 1.2em;\n }\n\n &-indicator::before {\n position: absolute;\n right: 0;\n top: 0;\n display: block;\n content: \"✓\";\n transition: color 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: $fallback--checkboxRadius;\n border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1em;\n font-size: 1.1em;\n color: transparent;\n overflow: hidden;\n box-sizing: border-box;\n }\n\n &.disabled {\n .checkbox-indicator::before,\n .label {\n opacity: 0.5;\n }\n\n .label {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n input[type=\"checkbox\"] {\n &:checked + .checkbox-indicator::before {\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n &:indeterminate + .checkbox-indicator::before {\n content: \"–\";\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n }\n\n & > span {\n margin-left: 0.5em;\n }\n}\n","\n@import \"../../variables\";\n\n.popover-trigger-button {\n display: inline-block;\n}\n\n.popover {\n z-index: var(--ZI_popover_override, var(--ZI_popovers));\n position: fixed;\n min-width: 0;\n max-width: calc(100vw - 20px);\n box-shadow: 2px 2px 3px rgb(0 0 0 / 50%);\n box-shadow: var(--popupShadow);\n}\n\n.popover-default {\n &::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 3;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n pointer-events: none;\n }\n\n border-radius: $fallback--btnRadius;\n border-radius: var(--btnRadius, $fallback--btnRadius);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--text;\n color: var(--popoverText, $fallback--text);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --postLink: var(--popoverPostLink, $fallback--link);\n --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n --icon: var(--popoverIcon, $fallback--icon);\n}\n\n.dropdown-menu {\n display: block;\n padding: 0.5rem 0;\n font-size: 1em;\n text-align: left;\n list-style: none;\n max-width: 100vw;\n z-index: var(--ZI_popover_override, var(--ZI_popovers));\n white-space: nowrap;\n\n .dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n .dropdown-item {\n line-height: 21px;\n overflow: hidden;\n display: block;\n padding: 0.5em 0.75em;\n clear: both;\n font-weight: 400;\n text-align: inherit;\n white-space: nowrap;\n border: none;\n border-radius: 0;\n background-color: transparent;\n box-shadow: none;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n\n --btnText: var(--popoverText, $fallback--text);\n\n &-icon {\n svg {\n width: 22px;\n margin-right: 0.75rem;\n color: var(--menuPopoverIcon, $fallback--icon);\n }\n }\n\n &.-has-submenu {\n .chevron-icon {\n margin-right: 0.25rem;\n margin-left: 2rem;\n }\n }\n\n &:active,\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n box-shadow: none;\n\n --btnText: var(--selectedMenuPopoverText, $fallback--link);\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n\n svg {\n color: var(--selectedMenuPopoverIcon, $fallback--icon);\n\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n\n .menu-checkbox {\n display: inline-block;\n vertical-align: middle;\n min-width: 22px;\n max-width: 22px;\n min-height: 22px;\n max-height: 22px;\n line-height: 22px;\n text-align: center;\n border-radius: 0;\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n margin-right: 0.75em;\n\n &.menu-checkbox-checked::after {\n font-size: 1.25em;\n content: \"✓\";\n }\n\n &.-radio {\n border-radius: 9999px;\n\n &.menu-checkbox-checked::after {\n font-size: 2em;\n content: \"•\";\n }\n }\n }\n }\n\n .button-default.dropdown-item {\n &,\n i[class*=\"icon-\"] {\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n }\n\n &:active {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuPopoverText, $fallback--link);\n }\n\n &:disabled {\n color: $fallback--text;\n color: var(--btnDisabledText, $fallback--text);\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledText, $fallback--text);\n }\n }\n}\n","\n@import \"../../variables\";\n\n.still-image {\n position: relative;\n line-height: 0;\n overflow: hidden;\n display: inline-flex;\n align-items: center;\n\n canvas {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n visibility: var(--_still-image-canvas-visibility, visible);\n }\n\n img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n &.animated {\n &::before {\n zoom: var(--_still_image-label-scale, 1);\n content: \"gif\";\n position: absolute;\n line-height: 1;\n font-size: 0.7em;\n top: 0.5em;\n left: 0.5em;\n background: rgb(127 127 127 / 50%);\n color: #fff;\n display: block;\n padding: 2px 4px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n z-index: 2;\n visibility: var(--_still-image-label-visibility, visible);\n }\n\n &:hover canvas {\n display: none;\n }\n\n &:hover::before {\n visibility: var(--_still-image-label-visibility, hidden);\n }\n\n img {\n visibility: var(--_still-image-img-visibility, hidden);\n }\n\n &:hover img {\n visibility: visible;\n }\n }\n}\n","@import \"../../variables\";\n\n$emoji-picker-header-height: 36px;\n$emoji-picker-header-picture-width: 32px;\n$emoji-picker-header-picture-height: 32px;\n$emoji-picker-emoji-size: 32px;\n\n.emoji-picker {\n width: 25em;\n max-width: calc(100vw - 20px); // popover gives 10px margin from window edge\n display: flex;\n flex-direction: column;\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--link;\n color: var(--popoverText, $fallback--link);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --icon: var(--popoverIcon, $fallback--icon);\n\n &-header-image {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: $emoji-picker-header-picture-width;\n max-width: $emoji-picker-header-picture-width;\n height: $emoji-picker-header-picture-height;\n max-height: $emoji-picker-header-picture-height;\n\n .still-image {\n max-width: 100%;\n max-height: 100%;\n height: 100%;\n width: 100%;\n object-fit: contain;\n }\n }\n\n .keep-open,\n .too-many-emoji {\n padding: 7px;\n line-height: normal;\n }\n\n .too-many-emoji {\n display: flex;\n flex-direction: column;\n }\n\n .keep-open-label {\n padding: 0 7px;\n display: flex;\n }\n\n .heading {\n display: flex;\n padding: 10px 7px 5px;\n }\n\n .content {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-height: 0;\n }\n\n .emoji-tabs {\n flex-grow: 1;\n display: flex;\n flex-flow: row nowrap;\n overflow-x: auto;\n }\n\n .additional-tabs {\n display: flex;\n border-left: 1px solid;\n border-left-color: $fallback--icon;\n border-left-color: var(--icon, $fallback--icon);\n padding-left: 7px;\n flex: 0 0 auto;\n }\n\n .additional-tabs,\n .emoji-tabs {\n flex-basis: auto;\n display: flex;\n align-content: center;\n\n &-item {\n padding: 0 7px;\n cursor: pointer;\n font-size: 1.85em;\n width: $emoji-picker-header-picture-width;\n max-width: $emoji-picker-header-picture-width;\n height: $emoji-picker-header-picture-height;\n max-height: $emoji-picker-header-picture-height;\n display: flex;\n align-items: center;\n\n &.disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n\n &.active {\n border-bottom: 4px solid;\n\n svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n }\n }\n\n .sticker-picker {\n flex: 1 1 auto;\n }\n\n .stickers,\n .emoji {\n &-content {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-height: 0;\n\n &.hidden {\n opacity: 0;\n pointer-events: none;\n position: absolute;\n }\n }\n }\n\n .emoji {\n &-search {\n padding: 5px;\n flex: 0 0 auto;\n\n input {\n width: 100%;\n }\n }\n\n &-groups {\n height: 100%;\n min-height: 200px;\n flex: 1 1 1px;\n position: relative;\n overflow: auto;\n user-select: none;\n mask:\n linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n linear-gradient(to top, white, white);\n transition: mask-size 150ms;\n mask-size: 100% 20px, 100% 20px, auto;\n // Autoprefixed seem to ignore this one, and also syntax is different\n mask-composite: xor;\n mask-composite: exclude;\n\n &.scrolled {\n &-top {\n mask-size: 100% 20px, 100% 0, auto;\n }\n\n &-bottom {\n mask-size: 100% 0, 100% 20px, auto;\n }\n }\n }\n\n &-group {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n padding-left: 5px;\n justify-content: left;\n\n &-title {\n font-size: 0.85em;\n width: 100%;\n margin: 0;\n\n &.disabled {\n display: none;\n }\n }\n }\n\n &-item {\n width: $emoji-picker-emoji-size;\n height: $emoji-picker-emoji-size;\n box-sizing: border-box;\n display: flex;\n line-height: $emoji-picker-emoji-size;\n align-items: center;\n justify-content: center;\n margin: 4px;\n cursor: pointer;\n\n .emoji-picker-emoji.-custom {\n object-fit: contain;\n max-width: 100%;\n max-height: 100%;\n }\n\n .emoji-picker-emoji.-unicode {\n font-size: 24px;\n overflow: hidden;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n\n.emoji-input {\n display: flex;\n flex-direction: column;\n position: relative;\n\n .emoji-picker-icon {\n position: absolute;\n top: 0;\n right: 0;\n margin: 0.2em 0.25em;\n font-size: 1.3em;\n cursor: pointer;\n line-height: 24px;\n\n &:hover i {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .emoji-picker-panel {\n position: absolute;\n z-index: 20;\n margin-top: 2px;\n\n &.hide {\n display: none;\n }\n }\n\n input,\n textarea {\n flex: 1 0 auto;\n }\n\n &.with-picker input {\n padding-right: 30px;\n }\n\n .hidden-overlay {\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n overflow: hidden;\n\n /* DEBUG STUFF */\n color: red;\n\n /* set opacity to non-zero to see the overlay */\n\n .caret {\n width: 0;\n margin-right: calc(-1ch - 1px);\n border: 1px solid red;\n }\n }\n}\n\n.autocomplete {\n &-panel {\n position: absolute;\n }\n\n &-item {\n display: flex;\n cursor: pointer;\n padding: 0.2em 0.4em;\n border-bottom: 1px solid rgb(0 0 0 / 40%);\n height: 32px;\n\n .image {\n width: 32px;\n height: 32px;\n line-height: 32px;\n text-align: center;\n font-size: 32px;\n margin-right: 4px;\n\n img {\n width: 32px;\n height: 32px;\n object-fit: contain;\n }\n }\n\n .label {\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.1em 0 0.2em;\n\n .displayText {\n line-height: 1.5;\n }\n\n .detailText {\n font-size: 9px;\n line-height: 9px;\n }\n }\n\n &.highlighted {\n background-color: $fallback--fg;\n background-color: var(--selectedMenuPopover, $fallback--fg);\n color: var(--selectedMenuPopoverText, $fallback--text);\n\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n","\n@import \"../../variables\";\n\n/* TODO fix order of styles */\nlabel.Select {\n padding: 0;\n\n select {\n appearance: none;\n background: transparent;\n border: none;\n color: $fallback--text;\n color: var(--inputText, --text, $fallback--text);\n margin: 0;\n padding: 0 2em 0 0.2em;\n font-family: sans-serif;\n font-family: var(--inputFont, sans-serif);\n font-size: 1em;\n width: 100%;\n z-index: 1;\n height: 2em;\n line-height: 16px;\n }\n\n .select-down-icon {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 5px;\n height: 100%;\n width: 0.875em;\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n line-height: 2;\n z-index: 0;\n pointer-events: none;\n }\n}\n","\n@import \"../../variables\";\n\n.poll-form {\n display: flex;\n flex-direction: column;\n padding: 0 0.5em 0.5em;\n\n .add-option {\n align-self: flex-start;\n padding-top: 0.25em;\n padding-left: 0.1em;\n }\n\n .poll-option {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n margin-bottom: 0.25em;\n }\n\n .input-container {\n width: 100%;\n\n input {\n // Hack: dodge the floating X icon\n padding-right: 2.5em;\n width: 100%;\n }\n }\n\n .delete-option {\n // Hack: Move the icon over the input box\n width: 1.5em;\n margin-left: -1.5em;\n z-index: 1;\n }\n\n .poll-type-expiry {\n margin-top: 0.5em;\n display: flex;\n width: 100%;\n }\n\n .poll-type {\n margin-right: 0.75em;\n flex: 1 1 60%;\n\n .poll-type-select {\n padding-right: 0.75em;\n }\n }\n\n .poll-expiry {\n display: flex;\n\n .expiry-amount {\n width: 3em;\n text-align: right;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.Flash {\n display: inline-block;\n width: 100%;\n height: 100%;\n position: relative;\n\n .player {\n height: 100%;\n width: 100%;\n }\n\n .placeholder {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--bg);\n color: var(--link);\n }\n\n .hider {\n top: 0;\n }\n\n .label {\n text-align: center;\n flex: 1 1 0;\n line-height: 1.2;\n white-space: normal;\n word-wrap: normal;\n }\n\n .hidden {\n display: none;\n visibility: \"hidden\";\n }\n}\n","@import \"../../variables\";\n\n.Attachment {\n display: inline-flex;\n flex-direction: column;\n position: relative;\n align-self: flex-start;\n line-height: 0;\n height: 100%;\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n\n .attachment-wrapper {\n flex: 1 1 auto;\n height: 100%;\n position: relative;\n overflow: hidden;\n }\n\n .description-container {\n flex: 0 1 0;\n display: flex;\n padding-top: 0.5em;\n z-index: 1;\n\n p {\n flex: 1;\n text-align: center;\n line-height: 1.5;\n padding: 0.5em;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n &.-static {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n padding-top: 0;\n background: var(--popover);\n box-shadow: var(--popupShadow);\n }\n }\n\n .description-field {\n flex: 1;\n min-width: 0;\n }\n\n & .placeholder-container,\n & .image-container,\n & .audio-container,\n & .video-container,\n & .flash-container,\n & .oembed-container {\n display: flex;\n justify-content: center;\n width: 100%;\n height: 100%;\n }\n\n .image-container {\n .image {\n width: 100%;\n height: 100%;\n }\n }\n\n & .flash-container,\n & .video-container {\n & .flash,\n & video {\n width: 100%;\n height: 100%;\n object-fit: contain;\n align-self: center;\n }\n }\n\n .audio-container {\n display: flex;\n align-items: flex-end;\n\n audio {\n width: 100%;\n height: 100%;\n }\n }\n\n .placeholder-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding-top: 0.5em;\n }\n\n .play-icon {\n position: absolute;\n font-size: 64px;\n top: calc(50% - 32px);\n left: calc(50% - 32px);\n color: rgb(255 255 255 / 75%);\n text-shadow: 0 0 2px rgb(0 0 0 / 40%);\n\n &::before {\n margin: 0;\n }\n }\n\n .attachment-buttons {\n display: flex;\n position: absolute;\n right: 0;\n top: 0;\n margin-top: 0.5em;\n margin-right: 0.5em;\n z-index: 1;\n\n .attachment-button {\n padding: 0;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n text-align: center;\n width: 2em;\n height: 2em;\n margin-left: 0.5em;\n font-size: 1.25em;\n // TODO: theming? hard to theme with unknown background image color\n background: rgb(230 230 230 / 70%);\n\n .svg-inline--fa {\n color: rgb(0 0 0 / 60%);\n }\n\n &:hover .svg-inline--fa {\n color: rgb(0 0 0 / 90%);\n }\n }\n }\n\n &.-contain-fit {\n img,\n canvas {\n object-fit: contain;\n }\n }\n\n &.-cover-fit {\n img,\n canvas {\n object-fit: cover;\n }\n }\n\n .oembed-container {\n line-height: 1.2em;\n flex: 1 0 100%;\n width: 100%;\n margin-right: 15px;\n display: flex;\n\n img {\n width: 100%;\n }\n\n .image {\n flex: 1;\n\n img {\n border: 0;\n border-radius: 5px;\n height: 100%;\n object-fit: cover;\n }\n }\n\n .text {\n flex: 2;\n margin: 8px;\n word-break: break-all;\n\n h1 {\n font-size: 1rem;\n margin: 0;\n }\n }\n }\n\n &.-size-small {\n .play-icon {\n zoom: 0.5;\n opacity: 0.7;\n }\n\n .attachment-buttons {\n zoom: 0.7;\n opacity: 0.5;\n }\n }\n\n &.-editable {\n padding: 0.5em;\n\n & .description-container,\n & .attachment-buttons {\n margin: 0;\n }\n }\n\n &.-placeholder {\n display: inline-block;\n color: $fallback--link;\n color: var(--postLink, $fallback--link);\n overflow: hidden;\n white-space: nowrap;\n height: auto;\n line-height: 1.5;\n\n &:not(.-editable) {\n border: none;\n }\n\n &.-editable {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n\n & .description-container,\n & .attachment-buttons {\n margin: 0;\n padding: 0;\n position: relative;\n }\n\n .description-container {\n flex: 1;\n padding-left: 0.5em;\n }\n\n .attachment-buttons {\n order: 99;\n align-self: center;\n }\n }\n\n a {\n display: inline-block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n svg {\n color: inherit;\n }\n }\n\n &.-loading {\n cursor: progress;\n }\n\n &.-compact {\n .placeholder-container {\n padding-bottom: 0.5em;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.Gallery {\n .gallery-rows {\n display: flex;\n flex-direction: column;\n }\n\n .gallery-row {\n position: relative;\n height: 0;\n width: 100%;\n flex-grow: 1;\n\n .gallery-row-inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-flow: row wrap;\n align-content: stretch;\n\n .gallery-item {\n margin: 0 0.5em 0 0;\n flex-grow: 1;\n height: 100%;\n box-sizing: border-box;\n // to make failed images a bit more noticeable on chromium\n min-width: 2em;\n\n &:last-child {\n margin: 0;\n }\n }\n\n &.-grid {\n width: 100%;\n height: auto;\n position: relative;\n display: grid;\n grid-gap: 0.5em;\n grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));\n\n .gallery-item {\n margin: 0;\n height: 200px;\n }\n }\n }\n\n &.-grid,\n &.-minimal {\n height: auto;\n\n .gallery-row-inner {\n position: relative;\n }\n }\n\n &:not(:first-child) {\n margin-top: 0.5em;\n }\n }\n\n &.-long {\n .gallery-rows {\n max-height: 25em;\n overflow: hidden;\n mask:\n linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n linear-gradient(to top, white, white);\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n }\n }\n\n .many-attachments-text {\n text-align: center;\n line-height: 2;\n }\n\n .many-attachments-buttons {\n display: flex;\n }\n\n .many-attachments-button {\n display: flex;\n flex: 1;\n justify-content: center;\n line-height: 2;\n\n button {\n padding: 0 2em;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.Avatar {\n --_avatarShadowBox: var(--avatarStatusShadow);\n --_avatarShadowFilter: var(--avatarStatusShadowFilter);\n --_avatarShadowInset: var(--avatarStatusShadowInset);\n --_still-image-label-visibility: hidden;\n\n display: inline-block;\n position: relative;\n width: 48px;\n height: 48px;\n\n &.-compact {\n width: 32px;\n height: 32px;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n box-shadow: var(--_avatarShadowBox);\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n\n &.-better-shadow {\n box-shadow: var(--_avatarShadowInset);\n filter: var(--_avatarShadowFilter);\n }\n\n &.-animated::before {\n display: none;\n }\n\n &.-compact {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n &.-placeholder {\n background-color: $fallback--fg;\n background-color: var(--fg, $fallback--fg);\n }\n }\n\n img {\n width: 100%;\n height: 100%;\n }\n\n .bot-indicator {\n position: absolute;\n bottom: 0;\n right: 0;\n margin: -0.2em;\n padding: 0.2em;\n background: rgb(127 127 127 / 50%);\n color: #fff;\n border-radius: var(--tooltipRadius);\n }\n}\n","@import \"../../variables\";\n\n.MentionLink {\n position: relative;\n white-space: normal;\n display: inline;\n color: var(--link);\n word-break: normal;\n\n & .new,\n & .original {\n display: inline;\n border-radius: 2px;\n }\n\n .mention-avatar {\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n user-select: none;\n margin-right: 0.2em;\n }\n\n .full {\n position: absolute;\n display: inline-block;\n pointer-events: none;\n opacity: 0;\n top: 100%;\n left: 0;\n height: 100%;\n word-wrap: normal;\n white-space: nowrap;\n transition: opacity 0.2s ease;\n z-index: 1;\n margin-top: 0.25em;\n padding: 0.5em;\n user-select: all;\n }\n\n & .short.-with-tooltip,\n & .you {\n user-select: none;\n }\n\n & .short,\n & .full {\n white-space: nowrap;\n }\n\n .shortName {\n white-space: normal;\n }\n\n .new {\n &.-you {\n .shortName {\n font-weight: 600;\n }\n }\n\n &.-has-selection {\n color: var(--alertNeutralText, $fallback--text);\n background-color: var(--alertNeutral, $fallback--fg);\n }\n\n .at {\n color: var(--link);\n opacity: 0.8;\n display: inline-block;\n line-height: 1;\n padding: 0 0.1em;\n vertical-align: -25%;\n margin: 0;\n }\n\n &.-striped {\n & .shortName {\n background-image:\n repeating-linear-gradient(\n 135deg,\n var(--____highlight-tintColor),\n var(--____highlight-tintColor) 5px,\n var(--____highlight-tintColor2) 5px,\n var(--____highlight-tintColor2) 10px\n );\n }\n }\n\n &.-solid {\n .shortName {\n background-image: linear-gradient(var(--____highlight-tintColor2), var(--____highlight-tintColor2));\n }\n }\n\n &.-side {\n .shortName {\n box-shadow: 0 -5px 3px -4px inset var(--____highlight-solidColor);\n }\n }\n }\n\n .serverName.-faded {\n color: var(--faintLink, $fallback--link);\n }\n}\n\n.mention-link-popover {\n max-width: 70ch;\n max-height: 20rem;\n overflow: hidden;\n}\n",".MentionsLine {\n word-break: break-all;\n\n .mention-link:not(:first-child)::before {\n content: \" \";\n }\n\n .showMoreLess {\n margin-left: 0.5em;\n white-space: normal;\n color: var(--link);\n }\n}\n",".HashtagLink {\n position: relative;\n white-space: normal;\n display: inline-block;\n color: var(--link);\n}\n","@import \"../../variables\";\n\n.RichContent {\n blockquote {\n margin: 0.2em 0 0.2em 0.2em;\n font-style: italic;\n border-left: 0.2em solid var(--faint, $fallback--faint);\n padding-left: 1em;\n }\n\n pre {\n overflow: auto;\n }\n\n code,\n samp,\n kbd,\n var,\n pre {\n font-family: var(--postCodeFont, monospace);\n }\n\n p {\n margin: 0 0 1em;\n }\n\n p:last-child {\n margin: 0;\n }\n\n h1 {\n font-size: 1.1em;\n line-height: 1.2em;\n margin: 1.4em 0;\n }\n\n h2 {\n font-size: 1.1em;\n margin: 1em 0;\n }\n\n h3 {\n font-size: 1em;\n margin: 1.2em 0;\n }\n\n h4 {\n margin: 1.1em 0;\n }\n\n .img {\n display: inline-block;\n }\n\n .emoji {\n display: inline-block;\n width: var(--emoji-size, 32px);\n height: var(--emoji-size, 32px);\n }\n\n .img,\n video {\n max-width: 100%;\n max-height: 400px;\n vertical-align: middle;\n object-fit: contain;\n }\n}\n","\n@import \"../../variables\";\n\n.poll {\n .votes {\n display: flex;\n flex-direction: column;\n margin: 0 0 0.5em;\n }\n\n .poll-option {\n margin: 0.75em 0.5em;\n }\n\n .option-result {\n height: 100%;\n display: flex;\n flex-direction: row;\n position: relative;\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n\n .option-result-label {\n display: flex;\n align-items: center;\n padding: 0.1em 0.25em;\n z-index: 1;\n word-break: break-word;\n }\n\n .result-percentage {\n width: 3.5em;\n flex-shrink: 0;\n }\n\n .result-fill {\n height: 100%;\n position: absolute;\n color: $fallback--text;\n color: var(--pollText, $fallback--text);\n background-color: $fallback--lightBg;\n background-color: var(--poll, $fallback--lightBg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n top: 0;\n left: 0;\n transition: width 0.5s;\n }\n\n .option-vote {\n display: flex;\n align-items: center;\n }\n\n input {\n width: 3.5em;\n }\n\n .footer {\n display: flex;\n align-items: center;\n }\n\n &.loading * {\n cursor: progress;\n }\n\n .poll-vote-button {\n padding: 0 0.5em;\n margin-right: 0.5em;\n }\n\n .poll-checkbox {\n display: none;\n }\n}\n","@import \"../../variables\";\n\n.StatusBody {\n display: flex;\n flex-direction: column;\n\n .emoji {\n --_still_image-label-scale: 0.5;\n }\n\n .attachments {\n margin-top: 0.5em;\n }\n\n & .text,\n & .summary {\n font-family: var(--postFont, sans-serif);\n white-space: pre-wrap;\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-word;\n line-height: var(--post-line-height);\n }\n\n .summary {\n display: block;\n font-style: italic;\n padding-bottom: 0.5em;\n }\n\n .text {\n &.-single-line {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n height: 1.4em;\n }\n }\n\n .summary-wrapper {\n margin-bottom: 0.5em;\n border-style: solid;\n border-width: 0 0 1px;\n border-color: var(--border, $fallback--border);\n flex-grow: 0;\n\n &.-tall {\n position: relative;\n\n .summary {\n max-height: 2em;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n }\n\n .text-wrapper {\n display: flex;\n flex-flow: column nowrap;\n\n &.-tall-status {\n position: relative;\n height: 220px;\n overflow-x: hidden;\n overflow-y: hidden;\n z-index: 1;\n\n .media-body {\n min-height: 0;\n mask:\n linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n linear-gradient(to top, white, white);\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n }\n }\n }\n\n & .tall-status-hider,\n & .tall-subject-hider,\n & .status-unhider,\n & .cw-status-hider {\n display: inline-block;\n word-break: break-all;\n width: 100%;\n text-align: center;\n }\n\n .tall-status-hider {\n position: absolute;\n height: 70px;\n margin-top: 150px;\n line-height: 110px;\n z-index: 2;\n }\n\n .tall-subject-hider {\n // position: absolute;\n padding-bottom: 0.5em;\n }\n\n & .status-unhider,\n & .cw-status-hider {\n word-break: break-all;\n\n svg {\n color: inherit;\n }\n }\n\n .greentext {\n color: $fallback--cGreen;\n color: var(--postGreentext, $fallback--cGreen);\n }\n\n .cyantext {\n color: var(--postCyantext, $fallback--cBlue);\n }\n\n &.-compact {\n align-items: top;\n flex-direction: row;\n\n --emoji-size: 16px;\n\n & .body,\n & .attachments {\n max-height: 3.25em;\n }\n\n .body {\n overflow: hidden;\n white-space: normal;\n min-width: 5em;\n flex: 5 1 auto;\n mask-size: auto 3.5em, auto auto;\n mask-position: 0 0, 0 0;\n mask-repeat: repeat-x, repeat;\n mask-image: linear-gradient(to bottom, white 2em, transparent 3em);\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n }\n\n .attachments {\n margin-top: 0;\n flex: 1 1 0;\n min-width: 5em;\n height: 100%;\n margin-left: 0.5em;\n }\n\n .summary-wrapper {\n .summary::after {\n content: \": \";\n }\n\n line-height: inherit;\n margin: 0;\n border: none;\n display: inline-block;\n }\n\n .text-wrapper {\n display: inline-block;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.link-preview-card {\n display: flex;\n flex-direction: row;\n cursor: pointer;\n overflow: hidden;\n margin-top: 0.5em;\n\n .card-image {\n flex-shrink: 0;\n width: 120px;\n max-width: 25%;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n }\n }\n\n .card-content {\n max-height: 100%;\n margin: 0.5em;\n display: flex;\n flex-direction: column;\n }\n\n .card-host {\n font-size: 0.85em;\n }\n\n .card-description {\n margin: 0.5em 0 0;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-word;\n line-height: 1.2em;\n // cap description at 3 lines, the 1px is to clean up some stray pixels\n // TODO: fancier fade-out at the bottom to show off that it's too long?\n max-height: calc(1.2em * 3 - 1px);\n }\n\n .nsfw-alert {\n margin: 2em 0;\n }\n\n color: $fallback--text;\n color: var(--text, $fallback--text);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n","\n.StatusContent {\n flex: 1;\n min-width: 0;\n}\n","\n@import \"../../variables\";\n\n.post-status-form {\n position: relative;\n\n .attachments {\n margin-bottom: 0.5em;\n }\n\n .form-bottom {\n display: flex;\n justify-content: space-between;\n padding: 0.5em;\n height: 2.5em;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .form-bottom-left {\n display: flex;\n flex: 1;\n padding-right: 7px;\n margin-right: 7px;\n max-width: 10em;\n }\n\n .preview-heading {\n display: flex;\n padding-left: 0.5em;\n }\n\n .preview-toggle {\n flex: 1;\n cursor: pointer;\n user-select: none;\n\n &:hover {\n text-decoration: underline;\n }\n\n svg,\n i {\n margin-left: 0.2em;\n font-size: 0.8em;\n transform: rotate(90deg);\n }\n }\n\n .preview-container {\n margin-bottom: 1em;\n }\n\n .preview-error {\n font-style: italic;\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n\n .preview-status {\n border: 1px solid $fallback--border;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n padding: 0.5em;\n margin: 0;\n }\n\n .text-format {\n .only-format {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n .visibility-tray {\n display: flex;\n justify-content: space-between;\n padding-top: 5px;\n align-items: baseline;\n }\n\n .visibility-notice.edit-warning {\n > :first-child {\n margin-top: 0;\n }\n\n > :last-child {\n margin-bottom: 0;\n }\n }\n\n // Order is not necessary but a good indicator\n .media-upload-icon {\n order: 1;\n justify-content: left;\n }\n\n .emoji-icon {\n order: 2;\n justify-content: center;\n }\n\n .poll-icon {\n order: 3;\n justify-content: right;\n }\n\n .media-upload-icon,\n .poll-icon,\n .emoji-icon {\n font-size: 1.85em;\n line-height: 1.1;\n flex: 1;\n padding: 0 0.1em;\n display: flex;\n align-items: center;\n\n &.selected,\n &:hover {\n // needs to be specific to override icon default color\n svg,\n i,\n label {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n\n &.disabled {\n svg,\n i {\n cursor: not-allowed;\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n\n &:hover {\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n }\n }\n }\n }\n\n .error {\n text-align: center;\n }\n\n .media-upload-wrapper {\n margin-right: 0.2em;\n margin-bottom: 0.5em;\n width: 18em;\n\n img,\n video {\n object-fit: contain;\n max-height: 10em;\n }\n\n .video {\n max-height: 10em;\n }\n\n input {\n flex: 1;\n width: 100%;\n }\n }\n\n .status-input-wrapper {\n display: flex;\n position: relative;\n width: 100%;\n flex-direction: column;\n }\n\n .btn[disabled] {\n cursor: not-allowed;\n }\n\n form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n position: relative;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.25em 0.5em 0.5em;\n line-height: 1.85;\n }\n\n .form-post-body {\n // TODO: make a resizable textarea component?\n box-sizing: content-box; // needed for easier computation of dynamic size\n overflow: hidden;\n transition: min-height 200ms 100ms;\n // stock padding + 1 line of text (for counter)\n padding-bottom: calc(var(--_padding) + var(--post-line-height) * 1em);\n // two lines of text\n height: calc(var(--post-line-height) * 1em);\n min-height: calc(var(--post-line-height) * 1em);\n resize: none;\n\n &.scrollable-form {\n overflow-y: auto;\n }\n }\n\n .main-input {\n position: relative;\n }\n\n .character-counter {\n position: absolute;\n bottom: 0;\n right: 0;\n padding: 0;\n margin: 0 0.5em;\n\n &.error {\n color: $fallback--cRed;\n color: var(--cRed, $fallback--cRed);\n }\n }\n\n @keyframes fade-in {\n from { opacity: 0; }\n to { opacity: 0.6; }\n }\n\n @keyframes fade-out {\n from { opacity: 0.6; }\n to { opacity: 0; }\n }\n\n .drop-indicator {\n position: absolute;\n width: 100%;\n height: 100%;\n font-size: 5em;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.6;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n border: 2px dashed $fallback--text;\n border: 2px dashed var(--text, $fallback--text);\n }\n}\n","\n.remote-follow {\n max-width: 220px;\n\n .remote-button {\n width: 100%;\n min-height: 2em;\n }\n}\n","\n@import \"../../variables\";\n\n// TODO: unify with other modals.\n.dark-overlay {\n &::before {\n bottom: 0;\n content: \" \";\n display: block;\n cursor: default;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n background: rgb(27 31 35 / 50%);\n z-index: 2000;\n }\n}\n\n.dialog-modal.panel {\n top: 0;\n left: 50%;\n max-height: 80vh;\n max-width: 90vw;\n margin: 15vh auto;\n position: fixed;\n transform: translateX(-50%);\n z-index: 2001;\n cursor: default;\n display: block;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .dialog-modal-heading {\n .title {\n text-align: center;\n }\n }\n\n .dialog-modal-content {\n margin: 0;\n padding: 1rem;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n white-space: normal;\n }\n\n .dialog-modal-footer {\n margin: 0;\n padding: 0.5em;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n display: flex;\n justify-content: flex-end;\n\n button {\n width: auto;\n margin-left: 0.5rem;\n }\n }\n}\n\n","\n@import \"../../variables\";\n\n.moderation-tools-popover {\n height: 100%;\n\n .trigger {\n /* stylelint-disable-next-line declaration-no-important */\n display: flex !important;\n height: 100%;\n }\n}\n\n.moderation-tools-button {\n svg,\n i {\n font-size: 0.8em;\n }\n}\n","\n@import \"../../variables\";\n\n.AccountActions {\n .ellipsis-button {\n width: 2.5em;\n margin: -0.5em 0;\n padding: 0.5em 0;\n text-align: center;\n\n &:not(:hover) .icon {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n","\n@import \"../../variables\";\n\n.user-note {\n display: flex;\n flex-direction: column;\n\n .heading {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 0.75em;\n\n .btn {\n min-width: 95px;\n }\n\n .buttons {\n display: flex;\n flex-direction: row;\n justify-content: right;\n\n .btn {\n margin-left: 0.5em;\n }\n }\n }\n\n .note-text {\n align-self: stretch;\n }\n\n .note-text.-blank {\n font-style: italic;\n color: var(--faint, $fallback--faint);\n }\n}\n","@import \"../../variables\";\n\n.user-card {\n position: relative;\n z-index: 1;\n\n &:hover {\n --_still-image-img-visibility: visible;\n --_still-image-canvas-visibility: hidden;\n --_still-image-label-visibility: hidden;\n }\n\n .panel-heading {\n padding: 0.5em 0;\n text-align: center;\n box-shadow: none;\n background: transparent;\n flex-direction: column;\n align-items: stretch;\n // create new stacking context\n position: relative;\n }\n\n .panel-body {\n word-wrap: break-word;\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n // create new stacking context\n position: relative;\n }\n\n .background-image {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n mask:\n linear-gradient(to top, white, transparent) bottom no-repeat,\n linear-gradient(to top, white, white);\n // Autoprefixer seem to ignore this one, and also syntax is different\n mask-composite: xor;\n mask-composite: exclude;\n background-size: cover;\n mask-size: 100% 60%;\n border-top-left-radius: calc(var(--__roundnessTop, --panelRadius) - 1px);\n border-top-right-radius: calc(var(--__roundnessTop, --panelRadius) - 1px);\n border-bottom-left-radius: calc(var(--__roundnessBottom, --panelRadius) - 1px);\n border-bottom-right-radius: calc(var(--__roundnessBottom, --panelRadius) - 1px);\n background-color: var(--profileBg);\n z-index: -2;\n\n &.hide-bio {\n mask-size: 100% 40px;\n }\n }\n\n &-bio {\n text-align: center;\n display: block;\n line-height: 1.3;\n padding: 1em;\n margin: 0;\n\n a {\n color: $fallback--link;\n color: var(--postLink, $fallback--link);\n }\n\n img {\n object-fit: contain;\n vertical-align: middle;\n max-width: 100%;\n max-height: 400px;\n }\n }\n\n &.-rounded-t {\n border-top-left-radius: $fallback--panelRadius;\n border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n border-top-right-radius: $fallback--panelRadius;\n border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n\n --__roundnessTop: var(--panelRadius);\n --__roundnessBottom: 0;\n }\n\n &.-rounded {\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n\n --__roundnessTop: var(--panelRadius);\n --__roundnessBottom: var(--panelRadius);\n }\n\n &.-popover {\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n\n --__roundnessTop: var(--tooltipRadius);\n --__roundnessBottom: var(--tooltipRadius);\n }\n\n &.-bordered {\n border-width: 1px;\n border-style: solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n}\n\n.user-info {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n padding: 0 26px;\n\n a {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n\n &:hover {\n color: var(--icon);\n }\n }\n\n .container {\n min-width: 0;\n padding: 16px 0 6px;\n display: flex;\n align-items: flex-start;\n max-height: 56px;\n\n > * {\n min-width: 0;\n }\n\n > a {\n vertical-align: middle;\n display: flex;\n }\n\n .Avatar {\n --_avatarShadowBox: var(--avatarShadow);\n --_avatarShadowFilter: var(--avatarShadowFilter);\n --_avatarShadowInset: var(--avatarShadowInset);\n\n width: 56px;\n height: 56px;\n object-fit: cover;\n }\n }\n\n &-avatar {\n position: relative;\n cursor: pointer;\n\n &.-overlay {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n background-color: rgb(0 0 0 / 30%);\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n opacity: 0;\n transition: opacity 0.2s ease;\n\n svg {\n color: #fff;\n }\n }\n\n &:hover &.-overlay {\n opacity: 1;\n }\n }\n\n .external-link-button,\n .edit-profile-button {\n cursor: pointer;\n width: 2.5em;\n text-align: center;\n margin: -0.5em 0;\n padding: 0.5em 0;\n\n &:not(:hover) .icon {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n\n .bottom-line {\n font-weight: light;\n font-size: 1.1em;\n align-items: baseline;\n\n .lock-icon {\n margin-left: 0.5em;\n }\n\n .user-screen-name {\n min-width: 1px;\n flex: 0 1 auto;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n .dailyAvg {\n min-width: 1px;\n flex: 0 0 auto;\n margin-left: 1em;\n font-size: 0.7em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n\n .user-role {\n flex: none;\n color: $fallback--text;\n color: var(--alertNeutralText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--alertNeutral, $fallback--fg);\n }\n }\n\n .user-summary {\n display: block;\n margin-left: 0.6em;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1 1 0;\n // This is so that text doesn't get overlapped by avatar's shadow if it has\n // big one\n z-index: 1;\n line-height: 2em;\n\n --emoji-size: 1.7em;\n\n .top-line,\n .bottom-line {\n display: flex;\n }\n }\n\n .user-name {\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1 1 auto;\n margin-right: 1em;\n font-size: 1.1em;\n }\n\n .user-meta {\n margin-bottom: 0.15em;\n display: flex;\n align-items: baseline;\n line-height: 22px;\n flex-wrap: wrap;\n\n .following {\n flex: 1 0 auto;\n margin: 0;\n margin-bottom: 0.25em;\n text-align: left;\n }\n\n .highlighter {\n flex: 0 1 auto;\n display: flex;\n flex-wrap: wrap;\n margin-right: -0.5em;\n align-self: start;\n\n .userHighlightCl {\n padding: 2px 10px;\n flex: 1 0 auto;\n }\n\n .userHighlightSel {\n padding-top: 0;\n padding-bottom: 0;\n flex: 1 0 auto;\n }\n\n .userHighlightText {\n width: 70px;\n flex: 1 0 auto;\n }\n\n .userHighlightCl,\n .userHighlightText,\n .userHighlightSel {\n vertical-align: top;\n margin-right: 0.5em;\n margin-bottom: 0.25em;\n }\n }\n }\n\n .user-interactions {\n position: relative;\n display: flex;\n flex-flow: row wrap;\n margin-right: -0.75em;\n\n > * {\n margin: 0 0.75em 0.6em 0;\n white-space: nowrap;\n min-width: 95px;\n }\n\n button {\n margin: 0;\n }\n }\n\n .user-note {\n margin: 0 0.75em 0.6em 0;\n }\n}\n\n.sidebar .edit-profile-button {\n display: none;\n}\n\n.user-counts {\n display: flex;\n line-height: 16px;\n padding: 0.5em 1.5em 0;\n text-align: center;\n justify-content: space-between;\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n flex-wrap: wrap;\n}\n\n.user-count {\n flex: 1 0 auto;\n padding: 0.5em 0;\n margin: 0 0.5em;\n\n h5 {\n font-size: 1em;\n font-weight: bolder;\n margin: 0 0 0.25em;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */\n a {\n text-decoration: none;\n }\n}\n\n.mute-expiry {\n display: flex;\n flex-direction: row;\n}\n","\n.user-panel .signed-in {\n overflow: visible;\n z-index: 10;\n}\n","\n@import \"../../variables\";\n\n.NavigationEntry {\n display: flex;\n box-sizing: border-box;\n align-items: baseline;\n height: 3.5em;\n line-height: 3.5em;\n padding: 0 1em;\n width: 100%;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n .timelines-chevron {\n margin-right: 0;\n }\n\n .main-link {\n flex: 1;\n }\n\n .menu-icon {\n margin-right: 0.8em;\n }\n\n .extra-button {\n width: 3em;\n text-align: center;\n\n &:last-child {\n margin-right: -0.8em;\n }\n }\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n .menu-icon {\n --icon: var(--text, $fallback--icon);\n }\n }\n\n &.-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n .menu-icon {\n --icon: var(--text, $fallback--icon);\n }\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.NavigationPins {\n display: flex;\n flex-wrap: wrap;\n overflow: hidden;\n height: 100%;\n\n .alert-dot {\n border-radius: 100%;\n height: 0.5em;\n width: 0.5em;\n position: absolute;\n right: calc(50% - 0.75em);\n top: calc(50% - 0.5em);\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .pinned-item {\n position: relative;\n flex: 1 0 3em;\n min-width: 2em;\n text-align: center;\n overflow: visible;\n box-sizing: border-box;\n height: 100%;\n\n & .svg-inline--fa,\n & .iconLetter {\n margin: 0;\n }\n\n &.router-link-active {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n border-bottom: 4px solid;\n\n & .svg-inline--fa,\n & .iconLetter {\n color: inherit;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n\n.NavPanel {\n .panel {\n overflow: hidden;\n box-shadow: var(--panelShadow);\n }\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n li {\n position: relative;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n > li {\n &:first-child .menu-item {\n border-top-right-radius: $fallback--panelRadius;\n border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-top-left-radius: $fallback--panelRadius;\n border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child .menu-item {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n\n li:last-child {\n border: none;\n }\n\n .navigation-chevron {\n margin-left: 0.8em;\n margin-right: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-chevron {\n margin-left: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-background {\n padding: 0 0 0 0.6em;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n .timelines {\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n }\n\n .nav-panel-heading {\n // breaks without a unit\n // stylelint-disable-next-line length-zero-no-unit\n --panel-heading-height-padding: 0px;\n }\n}\n","\n .features-panel li {\n line-height: 24px;\n }\n","\n .who-to-follow * {\n vertical-align: middle;\n }\n\n .who-to-follow img {\n width: 32px;\n height: 32px;\n }\n\n .who-to-follow {\n padding: 0 1em;\n margin: 0;\n }\n\n .who-to-follow-items {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0;\n margin: 1em 0;\n }\n\n .who-to-follow-more {\n padding: 0;\n margin: 1em 0;\n text-align: center;\n }\n","\n@import \"../../variables\";\n\n.floating-shout {\n position: fixed;\n bottom: 0.5em;\n z-index: var(--ZI_popovers);\n max-width: 25em;\n\n &.-left {\n left: 0.5em;\n }\n\n &:not(.-left) {\n right: 0.5em;\n }\n}\n\n.shout-panel {\n .shout-heading {\n cursor: pointer;\n\n .icon {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n margin-right: 0.5em;\n }\n\n .title {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n\n .shout-window {\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 20em;\n }\n\n .shout-window-container {\n height: 100%;\n }\n\n .shout-message {\n display: flex;\n padding: 0.2em 0.5em;\n }\n\n .shout-avatar {\n img {\n height: 24px;\n width: 24px;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n margin-right: 0.5em;\n margin-top: 0.25em;\n }\n }\n\n .shout-input {\n display: flex;\n\n textarea {\n flex: 1;\n margin: 0.6em;\n min-height: 3.5em;\n resize: none;\n }\n }\n\n .shout-panel {\n .title {\n display: flex;\n justify-content: space-between;\n }\n }\n}\n","\n$modal-view-button-icon-height: 3em;\n$modal-view-button-icon-half-height: calc(#{$modal-view-button-icon-height} / 2);\n$modal-view-button-icon-width: 3em;\n$modal-view-button-icon-margin: 0.5em;\n\n.media-modal-view {\n @keyframes media-fadein {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n .modal-image-container {\n display: flex;\n overflow: hidden;\n align-items: center;\n flex-direction: column;\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n flex-grow: 1;\n justify-content: center;\n\n &-inner {\n width: 100%;\n height: 100%;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n }\n\n .description,\n .counter {\n /* Hardcoded since background is also hardcoded */\n color: white;\n margin-top: 1em;\n text-shadow: 0 0 10px black, 0 0 10px black;\n padding: 0.2em 2em;\n }\n\n .description {\n flex: 0 0 auto;\n overflow-y: auto;\n min-height: 1em;\n max-width: 500px;\n max-height: 9.5em;\n word-break: break-all;\n }\n\n .modal-image {\n max-width: 100%;\n max-height: 100%;\n image-orientation: from-image; // NOTE: only FF supports this\n animation: 0.1s cubic-bezier(0.7, 0, 1, 0.6) media-fadein;\n\n &.loading {\n opacity: 0.5;\n }\n }\n\n .loading-spinner {\n width: 100%;\n height: 100%;\n position: absolute;\n pointer-events: none;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n color: white;\n }\n }\n\n .modal-view-button {\n border: 0;\n padding: 0;\n opacity: 0;\n box-shadow: none;\n background: none;\n appearance: none;\n overflow: visible;\n cursor: pointer;\n transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n\n .button-icon {\n position: absolute;\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n font-size: 1rem;\n line-height: $modal-view-button-icon-height;\n color: #fff;\n text-align: center;\n background-color: rgb(0 0 0 / 30%);\n }\n }\n\n .modal-view-button-arrow {\n position: absolute;\n display: block;\n top: 50%;\n margin-top: $modal-view-button-icon-half-height;\n width: $modal-view-button-icon-width;\n height: $modal-view-button-icon-height;\n\n .arrow-icon {\n position: absolute;\n top: 0;\n line-height: $modal-view-button-icon-height;\n color: #fff;\n text-align: center;\n background-color: rgb(0 0 0 / 30%);\n }\n\n &--prev {\n left: 0;\n\n .arrow-icon {\n left: $modal-view-button-icon-margin;\n }\n }\n\n &--next {\n right: 0;\n\n .arrow-icon {\n right: $modal-view-button-icon-margin;\n }\n }\n }\n\n .modal-view-button-hide {\n position: absolute;\n top: 0;\n right: 0;\n\n .button-icon {\n top: $modal-view-button-icon-margin;\n right: $modal-view-button-icon-margin;\n }\n }\n}\n\n.modal-view.media-modal-view {\n z-index: var(--ZI_media_modal);\n flex-direction: column;\n\n .modal-view-button-arrow,\n .modal-view-button-hide {\n opacity: 0.75;\n\n &:focus,\n &:hover {\n outline: none;\n box-shadow: none;\n }\n\n &:hover {\n opacity: 1;\n }\n }\n\n overflow: hidden;\n}\n","\n@import \"../../variables\";\n\n.side-drawer-container {\n position: fixed;\n z-index: var(--ZI_navbar);\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: stretch;\n transition-duration: 0s;\n transition-property: transform;\n}\n\n.side-drawer-container-open {\n transform: translate(0%);\n}\n\n.side-drawer-container-closed {\n transition-delay: 0.35s;\n transform: translate(-100%);\n}\n\n.side-drawer-darken {\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n position: fixed;\n z-index: -1;\n transition: 0.35s;\n transition-property: background-color;\n background-color: rgb(0 0 0 / 50%);\n}\n\n.side-drawer-darken-closed {\n background-color: rgb(0 0 0 / 0%);\n}\n\n.side-drawer-click-outside {\n flex: 1 1 100%;\n}\n\n.side-drawer {\n overflow-x: hidden;\n transition: 0.35s;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n transition-property: transform;\n margin: 0 0 0 -100px;\n padding: 0 0 1em 100px;\n width: 80%;\n max-width: 20em;\n flex: 0 0 80%;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--link;\n color: var(--popoverText, $fallback--link);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --icon: var(--popoverIcon, $fallback--icon);\n\n .badge {\n margin-left: 10px;\n }\n}\n\n.side-drawer-logo-wrapper {\n display: flex;\n align-items: center;\n padding: 0.85em;\n\n img {\n flex: none;\n height: 50px;\n margin-right: 0.85em;\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.side-drawer-click-outside-closed {\n flex: 0 0 0;\n}\n\n.side-drawer-closed {\n transform: translate(-100%);\n}\n\n.side-drawer-heading {\n background: transparent;\n flex-direction: column;\n align-items: stretch;\n display: flex;\n padding: 0;\n margin: 0;\n}\n\n.side-drawer ul {\n list-style: none;\n margin: 0;\n padding: 0;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.side-drawer ul:last-child {\n border: 0;\n}\n\n.side-drawer li {\n padding: 0;\n\n a,\n button {\n box-sizing: border-box;\n display: block;\n height: 3em;\n line-height: 3em;\n padding: 0 0.7em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuPopoverText, $fallback--text);\n\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n","\n@import \"../../variables\";\n\n.MobilePostButton {\n &.button-default {\n width: 5em;\n height: 5em;\n border-radius: 100%;\n position: fixed;\n bottom: 1.5em;\n right: 1.5em;\n // TODO: this needs its own color, it has to stand out enough and link color\n // is not very optimal for this particular use.\n background-color: $fallback--fg;\n background-color: var(--btn, $fallback--fg);\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 2px 2px rgb(0 0 0 / 30%), 0 4px 6px rgb(0 0 0 / 30%);\n z-index: 10;\n transition: 0.35s transform;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n }\n\n &.hidden {\n transform: translateY(150%);\n }\n\n svg {\n font-size: 1.5em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n@media all and (min-width: 801px) {\n .new-status-button:not(.always-show) {\n display: none;\n }\n}\n\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ReplyButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n &:hover .svg-inline--fa,\n &.-active .svg-inline--fa {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.FavoriteButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-favorited .svg-inline--fa {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ReactButton {\n .reaction-picker-filter {\n padding: 0.5em;\n display: flex;\n\n input {\n flex: 1;\n }\n }\n\n .reaction-picker-divider {\n height: 1px;\n width: 100%;\n margin: 0.5em;\n background-color: var(--border, $fallback--border);\n }\n\n .reaction-picker {\n width: 10em;\n height: 9em;\n font-size: 1.5em;\n overflow-y: scroll;\n display: flex;\n flex-wrap: wrap;\n padding: 0.5em;\n text-align: center;\n align-content: flex-start;\n user-select: none;\n mask:\n linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n linear-gradient(to top, white, white);\n transition: mask-size 150ms;\n mask-size: 100% 20px, 100% 20px, auto;\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n\n .emoji-button {\n cursor: pointer;\n flex-basis: 20%;\n line-height: 1.5;\n align-content: center;\n\n &:hover {\n transform: scale(1.25);\n }\n }\n }\n\n .popover-trigger {\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .popover-trigger-button {\n /* override of popover internal stuff */\n width: auto;\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.RetweetButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-repeated .svg-inline--fa {\n color: $fallback--cGreen;\n color: var(--cGreen, $fallback--cGreen);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ExtraButtons {\n .popover-trigger {\n position: static;\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .popover-trigger-button {\n /* override of popover internal stuff */\n width: auto;\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n\n.avatars {\n display: flex;\n margin: 0;\n padding: 0;\n\n // For hiding overflowing elements\n flex-wrap: wrap;\n height: 24px;\n\n .avatars-item {\n margin: 0 0 5px 5px;\n\n &:first-child {\n padding-left: 5px;\n }\n\n .avatar-small {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n height: 24px;\n width: 24px;\n }\n }\n}\n","\n@import \"../../variables\";\n\n/* popover styles load on-demand, so we need to override */\n.status-popover.popover {\n font-size: 1rem;\n min-width: 15em;\n max-width: 95%;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n\n /* TODO cleanup this */\n .Status.Status {\n border: none;\n }\n\n .status-preview-no-content {\n padding: 1em;\n text-align: center;\n\n i {\n font-size: 2em;\n }\n }\n}\n\n","\n@import \"../../variables\";\n\n.user-list-popover {\n padding: 0.5em;\n\n --emoji-size: 16px;\n\n .user-list-row {\n padding: 0.25em;\n display: flex;\n flex-direction: row;\n\n .user-list-names {\n display: flex;\n flex-direction: column;\n margin-left: 0.5em;\n min-width: 5em;\n\n img {\n width: 1em;\n height: 1em;\n }\n }\n\n .user-list-screen-name {\n font-size: 0.65em;\n }\n }\n}\n\n","\n@import \"../../variables\";\n\n.EmojiReactions {\n display: flex;\n margin-top: 0.25em;\n flex-wrap: wrap;\n\n .emoji-reaction {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n\n .reaction-emoji {\n width: 1.25em;\n margin-right: 0.25em;\n }\n\n &:focus {\n outline: none;\n }\n\n &.not-clickable {\n cursor: default;\n\n &:hover {\n box-shadow: $fallback--buttonShadow;\n box-shadow: var(--buttonShadow);\n }\n }\n\n &.-picked-reaction {\n border: 1px solid var(--accent, $fallback--link);\n margin-left: -1px; // offset the border, can't use inset shadows either\n margin-right: calc(0.5em - 1px);\n }\n }\n\n .emoji-reaction-expand {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n","@import \"../../variables\";\n\n.Status {\n min-width: 0;\n white-space: normal;\n word-wrap: break-word;\n word-break: break-word;\n\n &:hover {\n --_still-image-img-visibility: visible;\n --_still-image-canvas-visibility: hidden;\n --_still-image-label-visibility: hidden;\n }\n\n &.-focused {\n background-color: $fallback--lightBg;\n background-color: var(--selectedPost, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedPostText, $fallback--text);\n\n --lightText: var(--selectedPostLightText, $fallback--light);\n --faint: var(--selectedPostFaintText, $fallback--faint);\n --faintLink: var(--selectedPostFaintLink, $fallback--faint);\n --postLink: var(--selectedPostPostLink, $fallback--faint);\n --postFaintLink: var(--selectedPostFaintPostLink, $fallback--faint);\n --icon: var(--selectedPostIcon, $fallback--icon);\n }\n\n .gravestone {\n padding: var(--status-margin, $status-margin);\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n display: flex;\n\n .deleted-text {\n margin: 0.5em 0;\n align-items: center;\n }\n }\n\n .status-container {\n display: flex;\n padding: var(--status-margin, $status-margin);\n\n > * {\n min-width: 0;\n }\n\n &.-repeat {\n padding-top: 0;\n }\n }\n\n .pin {\n padding: var(--status-margin, $status-margin) var(--status-margin, $status-margin) 0;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n }\n\n ._misclick-prevention & {\n pointer-events: none;\n\n .attachments {\n pointer-events: initial;\n cursor: initial;\n }\n }\n\n .left-side {\n margin-right: var(--status-margin, $status-margin);\n }\n\n .right-side {\n flex: 1;\n min-width: 0;\n }\n\n .usercard {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .status-username {\n white-space: nowrap;\n overflow: hidden;\n max-width: 85%;\n font-weight: bold;\n flex-shrink: 1;\n margin-right: 0.4em;\n text-overflow: ellipsis;\n\n --_still_image-label-scale: 0.25;\n --emoji-size: 14px;\n }\n\n .status-favicon {\n height: 18px;\n width: 18px;\n margin-right: 0.4em;\n }\n\n .status-heading {\n margin-bottom: 0.5em;\n }\n\n .heading-name-row {\n display: flex;\n justify-content: space-between;\n line-height: 1.3;\n\n a {\n display: inline-block;\n word-break: break-all;\n }\n }\n\n .account-name {\n min-width: 1.6em;\n margin-right: 0.4em;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1 1 0;\n }\n\n .heading-left {\n display: flex;\n min-width: 0;\n }\n\n .heading-right {\n display: flex;\n flex-shrink: 0;\n\n .button-unstyled {\n padding: 5px;\n margin: -5px;\n\n &:hover svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n\n .svg-inline--fa {\n margin-left: 0.25em;\n }\n }\n\n .glued-label {\n display: inline-flex;\n white-space: nowrap;\n }\n\n .timeago {\n margin-right: 0.2em;\n }\n\n & .heading-reply-row,\n & .heading-edited-row {\n position: relative;\n align-content: baseline;\n font-size: 0.85em;\n margin-top: 0.2em;\n line-height: 130%;\n max-width: 100%;\n align-items: stretch;\n }\n\n & .reply-to-popover,\n & .reply-to-no-popover,\n & .mentions {\n min-width: 0;\n margin-right: 0.4em;\n flex-shrink: 0;\n }\n\n .reply-glued-label {\n margin-right: 0.5em;\n }\n\n .reply-to-popover {\n .reply-to:hover::before {\n content: \"\";\n display: block;\n position: absolute;\n bottom: 0;\n width: 100%;\n border-bottom: 1px solid var(--faint);\n pointer-events: none;\n }\n\n .faint-link:hover {\n // override default\n text-decoration: none;\n }\n\n &.-strikethrough {\n .reply-to::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n width: 100%;\n border-bottom: 1px solid var(--faint);\n pointer-events: none;\n }\n }\n }\n\n & .mentions,\n & .reply-to {\n white-space: nowrap;\n position: relative;\n }\n\n & .mentions-text,\n & .reply-to-text {\n color: var(--faint);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .mentions-line {\n display: inline;\n }\n\n .replies {\n margin-top: 0.25em;\n line-height: 1.3;\n font-size: 0.85em;\n display: flex;\n flex-wrap: wrap;\n\n & > * {\n margin-right: 0.4em;\n }\n }\n\n .reply-link {\n height: 17px;\n }\n\n .repeat-info {\n padding: 0.4em var(--status-margin, $status-margin);\n\n .repeat-icon {\n color: $fallback--cGreen;\n color: var(--cGreen, $fallback--cGreen);\n }\n }\n\n .repeater-avatar {\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n margin-left: 28px;\n width: 20px;\n height: 20px;\n }\n\n .repeater-name {\n text-overflow: ellipsis;\n margin-right: 0;\n\n .emoji {\n width: 14px;\n height: 14px;\n vertical-align: middle;\n object-fit: contain;\n }\n }\n\n .status-fadein {\n animation-duration: 0.4s;\n animation-name: fadein;\n }\n\n @keyframes fadein {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n .status-actions {\n position: relative;\n width: 100%;\n display: flex;\n margin-top: var(--status-margin, $status-margin);\n\n > * {\n max-width: 4em;\n flex: 1;\n }\n }\n\n .muted {\n padding: 0.25em 0.6em;\n height: 1.2em;\n line-height: 1.2em;\n text-overflow: ellipsis;\n overflow: hidden;\n display: flex;\n flex-wrap: nowrap;\n\n & .status-username,\n & .mute-thread,\n & .mute-words {\n word-wrap: normal;\n word-break: normal;\n white-space: nowrap;\n }\n\n & .status-username,\n & .mute-words {\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n .status-username {\n font-weight: normal;\n flex: 0 1 auto;\n margin-right: 0.2em;\n font-size: smaller;\n }\n\n .mute-thread {\n flex: 0 0 auto;\n }\n\n .mute-words {\n flex: 1 0 5em;\n margin-left: 0.2em;\n\n &::before {\n content: \" \";\n }\n }\n\n .unmute {\n flex: 0 0 auto;\n margin-left: auto;\n display: block;\n }\n }\n\n .reply-form {\n padding-top: 0;\n padding-bottom: 0;\n }\n\n .reply-body {\n flex: 1;\n }\n\n .favs-repeated-users {\n margin-top: var(--status-margin, $status-margin);\n }\n\n .stats {\n width: 100%;\n display: flex;\n line-height: 1em;\n }\n\n .avatar-row {\n flex: 1;\n overflow: hidden;\n position: relative;\n display: flex;\n align-items: center;\n\n &::before {\n content: \"\";\n position: absolute;\n height: 100%;\n width: 1px;\n left: 0;\n background-color: var(--faint, $fallback--faint);\n }\n }\n\n .stat-count {\n margin-right: var(--status-margin, $status-margin);\n user-select: none;\n\n .stat-title {\n color: var(--faint, $fallback--faint);\n font-size: 0.85em;\n text-transform: uppercase;\n position: relative;\n }\n\n .stat-number {\n font-weight: bolder;\n font-size: 1.1em;\n line-height: 1em;\n }\n\n &:hover .stat-title {\n text-decoration: underline;\n }\n }\n\n @media all and (max-width: 800px) {\n .repeater-avatar {\n margin-left: 20px;\n }\n\n .post-avatar {\n width: 40px;\n height: 40px;\n\n // TODO define those other way somehow?\n // stylelint-disable rscss/class-format\n &.-compact {\n width: 32px;\n height: 32px;\n }\n }\n }\n}\n","@import \"../../variables\";\n\n.Report {\n .report-content {\n margin: 0.5em 0 1em;\n }\n\n .report-state {\n margin: 0.5em 0 1em;\n }\n\n .reported-status {\n border: 1px solid $fallback--faint;\n border-color: var(--faint, $fallback--faint);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n color: $fallback--text;\n color: var(--text, $fallback--text);\n display: block;\n padding: 0.5em;\n margin: 0.5em 0;\n\n .status-content {\n pointer-events: none;\n }\n\n .reported-status-heading {\n display: flex;\n width: 100%;\n justify-content: space-between;\n margin-bottom: 0.2em;\n }\n\n .reported-status-name {\n font-weight: bold;\n }\n }\n\n .note {\n width: 100%;\n margin-bottom: 0.5em;\n }\n}\n","@import \"../../variables\";\n\n// TODO Copypaste from Status, should unify it somehow\n.Notification {\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n word-wrap: break-word;\n word-break: break-word;\n\n --emoji-size: 14px;\n\n &:hover {\n --_still-image-img-visibility: visible;\n --_still-image-canvas-visibility: hidden;\n --_still-image-label-visibility: hidden;\n }\n\n &.-muted {\n padding: 0.25em 0.6em;\n height: 1.2em;\n line-height: 1.2em;\n text-overflow: ellipsis;\n overflow: hidden;\n display: flex;\n flex-wrap: nowrap;\n\n & .status-username,\n & .mute-thread,\n & .mute-words {\n word-wrap: normal;\n word-break: normal;\n white-space: nowrap;\n }\n\n & .status-username,\n & .mute-words {\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n .status-username {\n font-weight: normal;\n flex: 0 1 auto;\n margin-right: 0.2em;\n font-size: smaller;\n }\n\n .mute-thread {\n flex: 0 0 auto;\n }\n\n .mute-words {\n flex: 1 0 5em;\n margin-left: 0.2em;\n\n &::before {\n content: \" \";\n }\n }\n\n .unmute {\n flex: 0 0 auto;\n margin-left: auto;\n display: block;\n }\n }\n\n .type-icon {\n margin: 0 0.1em;\n }\n\n &.-type--repeat .type-icon {\n color: $fallback--cGreen;\n color: var(--cGreen, $fallback--cGreen);\n }\n\n &.-type--follow .type-icon {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n\n &.-type--follow-request .type-icon {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n\n &.-type--like .type-icon {\n color: orange;\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n &.-type--move .type-icon {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n}\n","@import \"../../variables\";\n\n.Notifications {\n &:not(.minimal) {\n // a bit of a hack to allow scrolling below notifications\n padding-bottom: 15em;\n }\n\n .loadmore-error {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n\n .notification {\n position: relative;\n\n .notification-overlay {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n pointer-events: none;\n }\n\n &.unseen {\n .notification-overlay {\n background-image: linear-gradient(135deg, var(--badgeNotification, $fallback--cRed) 4px, transparent 10px);\n }\n }\n }\n}\n\n/* stylelint-disable-next-line no-descending-specificity */\n.notification {\n box-sizing: border-box;\n\n &:hover .animated.Avatar {\n canvas {\n display: none;\n }\n\n img {\n visibility: visible;\n }\n }\n\n &:last-child .Notification {\n border-bottom: none;\n }\n\n .non-mention {\n display: flex;\n flex: 1;\n flex-wrap: nowrap;\n padding: 0.6em;\n min-width: 0;\n\n .avatar-container {\n width: 32px;\n height: 32px;\n }\n\n .faint {\n --link: var(--faintLink);\n --text: var(--faint);\n }\n }\n\n .follow-request-accept {\n &:hover {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .follow-request-reject {\n &:hover {\n color: $fallback--cRed;\n color: var(--cRed, $fallback--cRed);\n }\n }\n\n .follow-text,\n .move-text {\n padding: 0.5em 0;\n overflow-wrap: break-word;\n display: flex;\n justify-content: space-between;\n\n .follow-name {\n display: block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n\n /* TODO cleanup this */\n .Status {\n flex: 1;\n }\n\n time {\n white-space: nowrap;\n }\n\n .notification-right {\n flex: 1;\n padding-left: 0.8em;\n min-width: 0;\n\n .timeago {\n min-width: 3em;\n text-align: right;\n }\n\n .timeago-link {\n margin-right: 0.2em;\n }\n\n .expand-icon {\n .svg-inline--fa {\n margin-left: 0.25em;\n }\n }\n }\n\n .emoji-reaction-emoji {\n font-size: 1.3em;\n }\n\n .notification-details {\n min-width: 0;\n word-wrap: break-word;\n line-height: var(--post-line-height);\n position: relative;\n overflow: hidden;\n width: 100%;\n flex: 1 1 0;\n display: flex;\n flex-wrap: nowrap;\n justify-content: space-between;\n\n .name-and-action {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .username {\n font-weight: bolder;\n max-width: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .timeago {\n margin-right: 0.2em;\n }\n\n .status-content {\n margin: 0;\n max-height: 300px;\n }\n\n h1 {\n word-break: break-all;\n margin: 0 0 0.3em;\n padding: 0;\n font-size: 1em;\n line-height: 1.5;\n\n small {\n font-weight: lighter;\n }\n }\n\n p {\n margin: 0;\n margin-top: 0;\n margin-bottom: 0.3em;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.MobileNav {\n z-index: var(--ZI_navbar);\n\n .mobile-nav {\n display: grid;\n line-height: var(--navbar-height);\n grid-template-rows: 50px;\n grid-template-columns: 2fr auto;\n width: 100%;\n box-sizing: border-box;\n\n a {\n color: var(--topBarLink, $fallback--link);\n }\n }\n\n .mobile-inner-nav {\n width: 100%;\n display: flex;\n align-items: center;\n }\n\n .mobile-nav-button {\n display: inline-block;\n text-align: center;\n padding: 0 1em;\n position: relative;\n cursor: pointer;\n }\n\n .site-name {\n padding: 0 0.3em;\n display: inline-block;\n }\n\n .item {\n /* moslty just to get rid of extra whitespaces */\n display: flex;\n }\n\n .alert-dot {\n border-radius: 100%;\n height: 8px;\n width: 8px;\n position: absolute;\n left: calc(50% - 4px);\n top: calc(50% - 4px);\n margin-left: 6px;\n margin-top: -6px;\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .mobile-notifications-drawer {\n width: 100%;\n height: 100vh;\n overflow-x: hidden;\n position: fixed;\n top: 0;\n left: 0;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n transition-property: transform;\n transition-duration: 0.25s;\n transform: translateX(0);\n z-index: var(--ZI_navbar);\n -webkit-overflow-scrolling: touch;\n\n &.-closed {\n transform: translateX(100%);\n box-shadow: none;\n }\n }\n\n .mobile-notifications-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: calc(var(--ZI_navbar) + 100);\n width: 100%;\n height: 50px;\n line-height: 50px;\n position: absolute;\n color: var(--topBarText);\n background-color: $fallback--fg;\n background-color: var(--topBar, $fallback--fg);\n box-shadow: 0 0 4px rgb(0 0 0 / 60%);\n box-shadow: var(--topBarShadow);\n\n .spacer {\n flex: 1;\n }\n\n .title {\n font-size: 1.3em;\n margin-left: 0.6em;\n }\n }\n\n .pins {\n flex: 1;\n\n .pinned-item {\n flex-grow: 1;\n }\n }\n\n .mobile-notifications {\n margin-top: 50px;\n width: 100vw;\n height: calc(100vh - var(--navbar-height));\n overflow-x: hidden;\n overflow-y: scroll;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .notifications {\n padding: 0;\n border-radius: 0;\n box-shadow: none;\n\n .panel {\n border-radius: 0;\n margin: 0;\n box-shadow: none;\n }\n\n .panel::after {\n border-radius: 0;\n }\n\n .panel .panel-heading {\n border-radius: 0;\n box-shadow: none;\n }\n }\n }\n\n .confirm-modal.dark-overlay {\n &::before {\n z-index: 3000;\n }\n\n .dialog-modal.panel {\n z-index: 3001;\n }\n }\n}\n\n","\n@import \"../../variables\";\n\n.SearchBar {\n display: inline-flex;\n align-items: baseline;\n vertical-align: baseline;\n justify-content: flex-end;\n\n &.-expanded {\n width: 100%;\n }\n\n .search-bar-input,\n .search-button {\n height: 29px;\n }\n\n .search-bar-input {\n flex: 1 0 auto;\n }\n\n .cancel-search {\n height: 50px;\n }\n\n .cancel-icon {\n color: $fallback--text;\n color: var(--btnTopBarText, $fallback--text);\n }\n}\n\n","@import \"../../variables\";\n\n.DesktopNav {\n width: 100%;\n z-index: var(--ZI_navbar);\n\n input {\n color: var(--inputTopbarText, var(--inputText));\n }\n\n a {\n color: var(--topBarLink, $fallback--link);\n }\n\n .inner-nav {\n display: grid;\n grid-template-rows: var(--navbar-height);\n grid-template-columns: 2fr auto 2fr;\n grid-template-areas: \"sitename logo actions\";\n box-sizing: border-box;\n padding: 0 1.2em;\n margin: auto;\n max-width: 980px;\n }\n\n &.-column-stretch .inner-nav {\n --miniColumn: 25rem;\n --maxiColumn: 45rem;\n --columnGap: 1em;\n\n max-width:\n calc(\n var(--sidebarColumnWidth, var(--miniColumn)) +\n var(--contentColumnWidth, var(--maxiColumn)) +\n var(--columnGap)\n );\n }\n\n &.-logoLeft .inner-nav {\n grid-template-columns: auto 2fr 2fr;\n grid-template-areas: \"logo sitename actions\";\n }\n\n &.-column-stretch.-wide .inner-nav {\n max-width:\n calc(\n var(--sidebarColumnWidth, var(--miniColumn)) +\n var(--contentColumnWidth, var(--maxiColumn)) +\n var(--notifsColumnWidth, var(--miniColumn)) +\n var(--columnGap)\n );\n }\n\n .button-default {\n &,\n svg {\n color: $fallback--text;\n color: var(--btnTopBarText, $fallback--text);\n }\n\n &:active {\n background-color: $fallback--fg;\n background-color: var(--btnPressedTopBar, $fallback--fg);\n color: $fallback--text;\n color: var(--btnPressedTopBarText, $fallback--text);\n }\n\n &:disabled {\n color: $fallback--text;\n color: var(--btnDisabledTopBarText, $fallback--text);\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledTopBarText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--btnToggledTopBar, $fallback--fg);\n }\n }\n\n .logo {\n grid-area: logo;\n position: relative;\n transition: opacity;\n transition-timing-function: ease-out;\n transition-duration: 100ms;\n\n @media all and (min-width: 800px) {\n /* stylelint-disable-next-line declaration-no-important */\n opacity: 1 !important;\n }\n\n .mask {\n mask-repeat: no-repeat;\n mask-position: center;\n mask-size: contain;\n background-color: $fallback--fg;\n background-color: var(--topBarText, $fallback--fg);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n }\n\n img {\n display: inline-block;\n height: var(--navbar-height);\n }\n }\n\n .nav-icon {\n margin-left: 0.2em;\n width: 2em;\n height: 100%;\n text-align: center;\n\n .svg-inline--fa {\n color: $fallback--link;\n color: var(--topBarLink, $fallback--link);\n }\n }\n\n .sitename {\n grid-area: sitename;\n }\n\n .actions {\n grid-area: actions;\n }\n\n .item {\n flex: 1;\n line-height: var(--navbar-height);\n height: var(--navbar-height);\n overflow: hidden;\n display: flex;\n flex-wrap: wrap;\n\n &.right {\n justify-content: flex-end;\n text-align: right;\n }\n }\n\n .spacer {\n width: 1em;\n }\n}\n","\n@import \"../../variables\";\n\n.list {\n &-item:not(:last-child) {\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n\n &-empty-content {\n text-align: center;\n padding: 10px;\n }\n}\n","\n@import \"../../variables\";\n\n.user-reporting-panel {\n width: 90vw;\n max-width: 700px;\n min-height: 20vh;\n max-height: 80vh;\n\n .panel-body {\n display: flex;\n flex-direction: column-reverse;\n border-top: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n overflow: hidden;\n }\n\n &-left {\n padding: 1.1em 0.7em 0.7em;\n line-height: var(--post-line-height);\n box-sizing: border-box;\n\n > div {\n margin-bottom: 1em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n p {\n margin-top: 0;\n }\n\n textarea.form-control {\n line-height: 16px;\n resize: none;\n overflow: hidden;\n transition: min-height 200ms 100ms;\n min-height: 44px;\n width: 100%;\n }\n\n .btn {\n min-width: 10em;\n padding: 0 2em;\n }\n\n .alert {\n margin: 1em 0 0;\n line-height: 1.3em;\n }\n }\n\n &-right {\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n }\n\n &-sitem {\n display: flex;\n justify-content: space-between;\n\n /* TODO cleanup this */\n > .Status {\n flex: 1;\n }\n\n > .checkbox {\n margin: 0.75em;\n }\n }\n\n @media all and (min-width: 801px) {\n .panel-body {\n flex-direction: row;\n }\n\n &-left {\n width: 50%;\n max-width: 320px;\n border-right: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 1.1em;\n\n > div {\n margin-bottom: 2em;\n }\n }\n\n &-right {\n width: 50%;\n flex: 1 1 auto;\n margin-bottom: 12px;\n }\n }\n}\n","\n.modal-view.edit-form-modal-view {\n align-items: flex-start;\n}\n\n.edit-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n\n .form-bottom-left {\n max-width: 6.5em;\n\n .emoji-icon {\n justify-content: right;\n }\n }\n}\n","\n.modal-view.post-form-modal-view {\n align-items: flex-start;\n}\n\n.post-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n","\n.modal-view.status-history-modal-view {\n align-items: flex-start;\n}\n\n.status-history-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n","\n@import \"../../variables\";\n\n.global-notice-list {\n position: fixed;\n top: calc(var(--navbar-height) + 0.5em);\n width: 100%;\n pointer-events: none;\n z-index: var(--ZI_navbar_popovers);\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .global-notice {\n pointer-events: auto;\n text-align: center;\n width: 40em;\n max-width: calc(100% - 3em);\n display: flex;\n padding-left: 1.5em;\n line-height: 2;\n margin-bottom: 0.5em;\n\n .notice-message {\n flex: 1 1 100%;\n }\n }\n\n .global-error {\n background-color: var(--alertPopupError, $fallback--cRed);\n color: var(--alertPopupErrorText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupErrorText, $fallback--text);\n }\n }\n\n .global-warning {\n background-color: var(--alertPopupWarning, $fallback--cOrange);\n color: var(--alertPopupWarningText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupWarningText, $fallback--text);\n }\n }\n\n .global-success {\n background-color: var(--alertPopupSuccess, $fallback--cGreen);\n color: var(--alertPopupSuccessText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupSuccessText, $fallback--text);\n }\n }\n\n .global-info {\n background-color: var(--alertPopupNeutral, $fallback--fg);\n color: var(--alertPopupNeutralText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupNeutralText, $fallback--text);\n }\n }\n\n .close-notice {\n padding-right: 0.2em;\n\n .svg-inline--fa:hover {\n opacity: 0.6;\n }\n }\n}\n","// stylelint-disable rscss/class-format\n/* stylelint-disable no-descending-specificity */\n@import \"./variables\";\n@import \"./panel\";\n\n:root {\n --navbar-height: 3.5rem;\n --post-line-height: 1.4;\n // Z-Index stuff\n --ZI_media_modal: 9000;\n --ZI_modals_popovers: 8500;\n --ZI_modals: 8000;\n --ZI_navbar_popovers: 7500;\n --ZI_navbar: 7000;\n --ZI_popovers: 6000;\n}\n\nhtml {\n font-size: 14px;\n // overflow-x: clip causes my browser's tab to crash with SIGILL lul\n}\n\nbody {\n font-family: sans-serif;\n font-family: var(--interfaceFont, sans-serif);\n margin: 0;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n overscroll-behavior-y: none;\n overflow-x: clip;\n overflow-y: scroll;\n\n &.hidden {\n display: none;\n }\n}\n\n// ## Custom scrollbars\n// Only show custom scrollbars on devices which\n// have a cursor/pointer to operate them\n@media (any-pointer: fine) {\n * {\n scrollbar-color: var(--btn) transparent;\n\n &::-webkit-scrollbar {\n background: transparent;\n }\n\n &::-webkit-scrollbar-button,\n &::-webkit-scrollbar-thumb {\n background-color: var(--btn);\n box-shadow: var(--buttonShadow);\n border-radius: var(--btnRadius);\n }\n\n // horizontal/vertical/increment/decrement are webkit-specific stuff\n // that indicates whether we're affecting vertical scrollbar, increase button etc\n // stylelint-disable selector-pseudo-class-no-unknown\n &::-webkit-scrollbar-button {\n --___bgPadding: 2px;\n\n color: var(--btnText);\n background-repeat: no-repeat, no-repeat;\n\n &:horizontal {\n background-size: 50% calc(50% - var(--___bgPadding)), 50% calc(50% - var(--___bgPadding));\n\n &:increment {\n background-image:\n linear-gradient(45deg, var(--btnText) 50%, transparent 51%),\n linear-gradient(-45deg, transparent 50%, var(--btnText) 51%);\n background-position: top var(--___bgPadding) left 50%, right 50% bottom var(--___bgPadding);\n }\n\n &:decrement {\n background-image:\n linear-gradient(45deg, transparent 50%, var(--btnText) 51%),\n linear-gradient(-45deg, var(--btnText) 50%, transparent 51%);\n background-position: bottom var(--___bgPadding) right 50%, left 50% top var(--___bgPadding);\n }\n }\n\n &:vertical {\n background-size: calc(50% - var(--___bgPadding)) 50%, calc(50% - var(--___bgPadding)) 50%;\n\n &:increment {\n background-image:\n linear-gradient(-45deg, transparent 50%, var(--btnText) 51%),\n linear-gradient(45deg, transparent 50%, var(--btnText) 51%);\n background-position: right var(--___bgPadding) top 50%, left var(--___bgPadding) top 50%;\n }\n\n &:decrement {\n background-image:\n linear-gradient(-45deg, var(--btnText) 50%, transparent 51%),\n linear-gradient(45deg, var(--btnText) 50%, transparent 51%);\n background-position: left var(--___bgPadding) top 50%, right var(--___bgPadding) top 50%;\n }\n }\n }\n // stylelint-enable selector-pseudo-class-no-unknown\n }\n // Body should have background to scrollbar otherwise it will use white (body color?)\n html {\n scrollbar-color: var(--selectedMenu) var(--wallpaper);\n background: var(--wallpaper);\n }\n}\n\na {\n text-decoration: none;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n}\n\nh4 {\n margin: 0;\n}\n\n.iconLetter {\n display: inline-block;\n text-align: center;\n font-weight: 1000;\n}\n\ni[class*=\"icon-\"],\n.svg-inline--fa,\n.iconLetter {\n color: $fallback--icon;\n color: var(--icon, $fallback--icon);\n}\n\n.button-unstyled:hover,\na:hover {\n > i[class*=\"icon-\"],\n > .svg-inline--fa,\n > .iconLetter {\n color: var(--text);\n }\n}\n\nnav {\n z-index: var(--ZI_navbar);\n background-color: $fallback--fg;\n background-color: var(--topBar, $fallback--fg);\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n box-shadow: 0 0 4px rgb(0 0 0 / 60%);\n box-shadow: var(--topBarShadow);\n box-sizing: border-box;\n height: var(--navbar-height);\n position: fixed;\n}\n\n#sidebar {\n grid-area: sidebar;\n}\n\n#modal {\n position: absolute;\n z-index: var(--ZI_modals);\n}\n\n.column.-scrollable {\n top: var(--navbar-height);\n position: sticky;\n}\n\n#main-scroller {\n grid-area: content;\n position: relative;\n}\n\n#notifs-column {\n grid-area: notifs;\n}\n\n.app-bg-wrapper {\n position: fixed;\n height: 100%;\n top: var(--navbar-height);\n z-index: -1000;\n left: 0;\n right: -20px;\n background-size: cover;\n background-repeat: no-repeat;\n background-color: var(--wallpaper);\n background-image: var(--body-background-image);\n background-position: 50%;\n}\n\n.underlay {\n grid-column: 1 / span 3;\n grid-row: 1 / 1;\n pointer-events: none;\n background-color: rgb(0 0 0 / 15%);\n background-color: var(--underlay, rgb(0 0 0 / 15%));\n z-index: -1000;\n}\n\n.app-layout {\n --miniColumn: 25rem;\n --maxiColumn: 45rem;\n --columnGap: 1em;\n --status-margin: 0.75em;\n --effectiveSidebarColumnWidth: minmax(var(--miniColumn), var(--sidebarColumnWidth, var(--miniColumn)));\n --effectiveNotifsColumnWidth: minmax(var(--miniColumn), var(--notifsColumnWidth, var(--miniColumn)));\n --effectiveContentColumnWidth: minmax(var(--miniColumn), var(--contentColumnWidth, var(--maxiColumn)));\n\n position: relative;\n display: grid;\n grid-template-columns:\n var(--effectiveSidebarColumnWidth)\n var(--effectiveContentColumnWidth);\n grid-template-areas: \"sidebar content\";\n grid-template-rows: 1fr;\n box-sizing: border-box;\n margin: 0 auto;\n align-content: flex-start;\n flex-wrap: wrap;\n justify-content: center;\n min-height: 100vh;\n overflow-x: clip;\n\n .column {\n --___columnMargin: var(--columnGap);\n\n display: grid;\n grid-template-columns: 100%;\n box-sizing: border-box;\n grid-row: 1 / 1;\n margin: 0 calc(var(--___columnMargin) / 2);\n padding: calc(var(--___columnMargin)) 0;\n row-gap: var(--___columnMargin);\n align-content: start;\n\n &:not(.-scrollable) {\n margin-top: var(--navbar-height);\n }\n\n &:hover {\n z-index: 2;\n }\n\n &.-full-height {\n margin-bottom: 0;\n padding-top: 0;\n padding-bottom: 0;\n }\n\n &.-scrollable {\n --___paddingIncrease: calc(var(--columnGap) / 2);\n\n position: sticky;\n top: var(--navbar-height);\n max-height: calc(100vh - var(--navbar-height));\n overflow-y: auto;\n overflow-x: hidden;\n margin-left: calc(var(--___paddingIncrease) * -1);\n padding-left: calc(var(--___paddingIncrease) + var(--___columnMargin) / 2);\n\n // On browsers that don't support hiding scrollbars we enforce \"show scrolbars\" mode\n // might implement old style of hiding scrollbars later if there's demand\n @supports (scrollbar-width: none) or (-webkit-text-fill-color: initial) {\n &:not(.-show-scrollbar) {\n scrollbar-width: none;\n margin-right: calc(var(--___paddingIncrease) * -1);\n padding-right: calc(var(--___paddingIncrease) + var(--___columnMargin) / 2);\n\n &::-webkit-scrollbar {\n display: block;\n width: 0;\n }\n }\n }\n\n .panel-heading.-sticky {\n top: calc(var(--columnGap) / -1);\n }\n }\n }\n\n &.-has-new-post-button {\n .column {\n padding-bottom: 10rem;\n }\n }\n\n &.-no-sticky-headers {\n .column {\n .panel-heading.-sticky {\n position: relative;\n top: 0;\n }\n }\n }\n\n .column-inner {\n display: grid;\n grid-template-columns: 100%;\n box-sizing: border-box;\n row-gap: 1em;\n align-content: start;\n }\n\n &.-reverse:not(.-wide, .-mobile) {\n grid-template-columns:\n var(--effectiveContentColumnWidth)\n var(--effectiveSidebarColumnWidth);\n grid-template-areas: \"content sidebar\";\n }\n\n &.-wide {\n grid-template-columns:\n var(--effectiveSidebarColumnWidth)\n var(--effectiveContentColumnWidth)\n var(--effectiveNotifsColumnWidth);\n grid-template-areas: \"sidebar content notifs\";\n\n &.-reverse {\n grid-template-columns:\n var(--effectiveNotifsColumnWidth)\n var(--effectiveContentColumnWidth)\n var(--effectiveSidebarColumnWidth);\n grid-template-areas: \"notifs content sidebar\";\n }\n }\n\n &.-mobile {\n grid-template-columns: 100vw;\n grid-template-areas: \"content\";\n padding: 0;\n\n .column {\n padding-top: 0;\n margin: var(--navbar-height) 0 0 0;\n }\n\n .panel-heading,\n .panel-heading::after,\n .panel-heading::before,\n .panel,\n .panel::after {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n #sidebar,\n #notifs-column {\n display: none;\n }\n }\n\n &.-normal {\n #notifs-column {\n display: none;\n }\n }\n}\n\n.text-center {\n text-align: center;\n}\n\n.button-default {\n user-select: none;\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--btn, $fallback--fg);\n border: none;\n border-radius: $fallback--btnRadius;\n border-radius: var(--btnRadius, $fallback--btnRadius);\n cursor: pointer;\n box-shadow: $fallback--buttonShadow;\n box-shadow: var(--buttonShadow);\n font-size: 1em;\n font-family: sans-serif;\n font-family: var(--interfaceFont, sans-serif);\n\n &.-sublime {\n background: transparent;\n }\n\n i[class*=\"icon-\"],\n .svg-inline--fa {\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n }\n\n &::-moz-focus-inner {\n border: none;\n }\n\n &:hover {\n box-shadow: 0 0 4px rgb(255 255 255 / 30%);\n box-shadow: var(--buttonHoverShadow);\n }\n\n &:active {\n box-shadow:\n 0 0 4px 0 rgb(255 255 255 / 30%),\n 0 1px 0 0 rgb(0 0 0 / 20%) inset,\n 0 -1px 0 0 rgb(255 255 255 / 20%) inset;\n box-shadow: var(--buttonPressedShadow);\n color: $fallback--text;\n color: var(--btnPressedText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--btnPressed, $fallback--fg);\n\n svg,\n i {\n color: $fallback--text;\n color: var(--btnPressedText, $fallback--text);\n }\n }\n\n &:disabled {\n cursor: not-allowed;\n color: $fallback--text;\n color: var(--btnDisabledText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--btnDisabled, $fallback--fg);\n\n svg,\n i {\n color: $fallback--text;\n color: var(--btnDisabledText, $fallback--text);\n }\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--btnToggled, $fallback--fg);\n box-shadow:\n 0 0 4px 0 rgb(255 255 255 / 30%),\n 0 1px 0 0 rgb(0 0 0 / 20%) inset,\n 0 -1px 0 0 rgb(255 255 255 / 20%) inset;\n box-shadow: var(--buttonPressedShadow);\n\n svg,\n i {\n color: $fallback--text;\n color: var(--btnToggledText, $fallback--text);\n }\n }\n\n &.danger {\n // TODO: add better color variable\n color: $fallback--text;\n color: var(--alertErrorPanelText, $fallback--text);\n background-color: $fallback--alertError;\n background-color: var(--alertError, $fallback--alertError);\n }\n}\n\n.button-unstyled {\n background: none;\n border: none;\n outline: none;\n display: inline;\n text-align: initial;\n font-size: 100%;\n font-family: inherit;\n padding: 0;\n line-height: unset;\n cursor: pointer;\n box-sizing: content-box;\n color: inherit;\n\n &.-link {\n color: $fallback--link;\n color: var(--link, $fallback--link);\n }\n\n &.-fullwidth {\n width: 100%;\n }\n\n &.-hover-highlight {\n &:hover svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n\ninput,\ntextarea,\n.input {\n &.unstyled {\n border-radius: 0;\n background: none;\n box-shadow: none;\n height: unset;\n }\n\n --_padding: 0.5em;\n\n border: none;\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n box-shadow:\n 0 1px 0 0 rgb(0 0 0 / 20%) inset,\n 0 -1px 0 0 rgb(255 255 255 / 20%) inset,\n 0 0 2px 0 rgb(0 0 0 / 100%) inset;\n box-shadow: var(--inputShadow);\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n color: $fallback--lightText;\n color: var(--inputText, $fallback--lightText);\n font-family: sans-serif;\n font-family: var(--inputFont, sans-serif);\n font-size: 1em;\n margin: 0;\n box-sizing: border-box;\n display: inline-block;\n position: relative;\n line-height: 2;\n hyphens: none;\n padding: 0 var(--_padding);\n\n &:disabled,\n &[disabled=\"disabled\"],\n &.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &[type=\"range\"] {\n background: none;\n border: none;\n margin: 0;\n box-shadow: none;\n flex: 1;\n }\n\n &[type=\"radio\"] {\n display: none;\n\n &:checked + label::before {\n box-shadow: 0 0 2px black inset, 0 0 0 4px $fallback--fg inset;\n box-shadow: var(--inputShadow), 0 0 0 4px var(--fg, $fallback--fg) inset;\n background-color: var(--accent, $fallback--link);\n }\n\n &:disabled {\n &,\n & + label,\n & + label::before {\n opacity: 0.5;\n }\n }\n\n + label::before {\n flex-shrink: 0;\n display: inline-block;\n content: \"\";\n transition: box-shadow 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: 100%; // Radio buttons should always be circle\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n margin-right: 0.5em;\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1;\n font-size: 1.1em;\n box-sizing: border-box;\n color: transparent;\n overflow: hidden;\n }\n }\n\n &[type=\"checkbox\"] {\n &:checked + label::before {\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n &:disabled {\n &,\n & + label,\n & + label::before {\n opacity: 0.5;\n }\n }\n\n + label::before {\n flex-shrink: 0;\n display: inline-block;\n content: \"✓\";\n transition: color 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: $fallback--checkboxRadius;\n border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n margin-right: 0.5em;\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1;\n font-size: 1.1em;\n box-sizing: border-box;\n color: transparent;\n overflow: hidden;\n }\n }\n\n &.resize-height {\n resize: vertical;\n }\n}\n\n// Textareas should have stock line-height + vertical padding instead of huge line-height\ntextarea {\n padding: var(--_padding);\n line-height: var(--post-line-height);\n}\n\noption {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n}\n\n.hide-number-spinner {\n appearance: textfield;\n\n &[type=\"number\"]::-webkit-inner-spin-button,\n &[type=\"number\"]::-webkit-outer-spin-button {\n opacity: 0;\n display: none;\n }\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-group {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n\n button {\n position: relative;\n flex: 1 1 auto;\n\n &:not(:last-child) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n}\n\n.fa {\n color: grey;\n}\n\n.mobile-shown {\n display: none;\n}\n\n.badge {\n box-sizing: border-box;\n display: inline-block;\n border-radius: 99px;\n max-width: 10em;\n min-width: 1.7em;\n height: 1.3em;\n padding: 0.15em;\n vertical-align: middle;\n font-weight: normal;\n font-style: normal;\n font-size: 0.9em;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n &.badge-notification {\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n color: white;\n color: var(--badgeNotificationText, white);\n }\n}\n\n.alert {\n margin: 0 0.35em;\n padding: 0 0.25em;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n\n &.error {\n background-color: $fallback--alertError;\n background-color: var(--alertError, $fallback--alertError);\n color: $fallback--text;\n color: var(--alertErrorText, $fallback--text);\n\n .panel-heading & {\n color: $fallback--text;\n color: var(--alertErrorPanelText, $fallback--text);\n }\n }\n\n &.warning {\n background-color: $fallback--alertWarning;\n background-color: var(--alertWarning, $fallback--alertWarning);\n color: $fallback--text;\n color: var(--alertWarningText, $fallback--text);\n\n .panel-heading & {\n color: $fallback--text;\n color: var(--alertWarningPanelText, $fallback--text);\n }\n }\n\n &.success {\n background-color: var(--alertSuccess, $fallback--alertWarning);\n color: var(--alertSuccessText, $fallback--text);\n\n .panel-heading & {\n color: var(--alertSuccessPanelText, $fallback--text);\n }\n }\n}\n\n.faint {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n}\n\n.faint-link {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n\n &:hover {\n text-decoration: underline;\n }\n}\n\n.visibility-notice {\n padding: 0.5em;\n border: 1px solid $fallback--faint;\n border: 1px solid var(--faint, $fallback--faint);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n}\n\n.notice-dismissible {\n padding-right: 4rem;\n position: relative;\n\n .dismiss {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.5em;\n color: inherit;\n }\n}\n\n.fa-scale-110 {\n &.svg-inline--fa,\n &.iconLetter {\n font-size: 1.1em;\n }\n}\n\n.fa-old-padding {\n &.iconLetter,\n &.svg-inline--fa,\n &-layer {\n padding: 0 0.3em;\n }\n}\n\n.veryfaint {\n opacity: 0.25;\n}\n\n.login-hint {\n text-align: center;\n\n @media all and (min-width: 801px) {\n display: none;\n }\n\n a {\n display: inline-block;\n padding: 1em 0;\n width: 100%;\n }\n}\n\n.btn.button-default {\n min-height: 2em;\n}\n\n.new-status-notification {\n position: relative;\n font-size: 1.1em;\n z-index: 1;\n flex: 1;\n}\n\n@media all and (max-width: 800px) {\n .mobile-hidden {\n display: none;\n }\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(359deg);\n }\n}\n\n@keyframes shakeError {\n 0% {\n transform: translateX(0);\n }\n\n 15% {\n transform: translateX(0.375rem);\n }\n\n 30% {\n transform: translateX(-0.375rem);\n }\n\n 45% {\n transform: translateX(0.375rem);\n }\n\n 60% {\n transform: translateX(-0.375rem);\n }\n\n 75% {\n transform: translateX(0.375rem);\n }\n\n 90% {\n transform: translateX(-0.375rem);\n }\n\n 100% {\n transform: translateX(0);\n }\n}\n\n// Vue transitions\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.3s;\n}\n\n.fade-enter-from,\n.fade-leave-active {\n opacity: 0;\n}\n/* stylelint-enable no-descending-specificity */\n\n.visible-for-screenreader-only {\n display: block;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n visibility: visible;\n clip: rect(0 0 0 0);\n padding: 0;\n position: absolute;\n}\n","/* stylelint-disable no-descending-specificity */\n.panel {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n &::after,\n & {\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 5;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n pointer-events: none;\n }\n}\n\n.panel-body {\n padding: var(--panel-body-padding, 0);\n\n &:empty::before {\n content: \"¯\\\\_(ツ)_/¯\"; // Could use words but it'd require translations\n display: block;\n margin: 1em;\n text-align: center;\n }\n\n > p {\n line-height: 1.3;\n padding: 1em;\n margin: 0;\n }\n}\n\n.panel-heading,\n.panel-footer {\n --panel-heading-height-padding: 0.6em;\n --__panel-heading-gap: 0.5em;\n --__panel-heading-height: 3.2em;\n --__panel-heading-height-inner: calc(var(--__panel-heading-height) - 2 * var(--panel-heading-height-padding, 0));\n\n position: relative;\n box-sizing: border-box;\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: minmax(50%, 1fr);\n grid-auto-columns: auto;\n grid-column-gap: var(--__panel-heading-gap);\n flex: none;\n background-size: cover;\n padding: var(--panel-heading-height-padding);\n height: var(--__panel-heading-height);\n line-height: var(--__panel-heading-height-inner);\n z-index: 4;\n\n &.-flexible-height {\n --__panel-heading-height: auto;\n\n &::after,\n &::before {\n display: none;\n }\n }\n\n &.-stub {\n &,\n &::after {\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n\n &.-sticky {\n position: sticky;\n top: var(--navbar-height);\n }\n\n &::after,\n &::before {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n pointer-events: none;\n }\n\n .title {\n font-size: 1.3em;\n }\n\n .alert {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow-x: hidden;\n }\n\n &:not(.-flexible-height) {\n > .button-default,\n > .alert {\n height: var(--__panel-heading-height-inner);\n min-height: 0;\n box-sizing: border-box;\n margin: 0;\n min-width: 1px;\n padding-top: 0;\n padding-bottom: 0;\n align-self: stretch;\n }\n }\n}\n\n// TODO Should refactor panels into separate component and utilize slots\n\n.panel-heading {\n border-radius: $fallback--panelRadius $fallback--panelRadius 0 0;\n border-radius: var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius) 0 0;\n border-width: 0 0 1px;\n align-items: start;\n // panel theme\n color: var(--panelText);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n &::after {\n background-color: $fallback--fg;\n background-color: var(--panel, $fallback--fg);\n z-index: -2;\n border-radius: $fallback--panelRadius $fallback--panelRadius 0 0;\n border-radius: var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius) 0 0;\n box-shadow: var(--panelHeaderShadow);\n }\n\n a,\n .-link {\n color: $fallback--link;\n color: var(--panelLink, $fallback--link);\n }\n\n .button-unstyled:hover,\n a:hover {\n i[class*=\"icon-\"],\n .svg-inline--fa,\n .iconLetter {\n color: var(--panelText);\n }\n }\n\n .faint {\n background-color: transparent;\n color: $fallback--faint;\n color: var(--panelFaint, $fallback--faint);\n }\n\n .faint-link {\n color: $fallback--faint;\n color: var(--faintLink, $fallback--faint);\n }\n\n &:not(.-flexible-height) {\n > .button-default {\n flex-shrink: 0;\n\n &,\n i[class*=\"icon-\"] {\n color: $fallback--text;\n color: var(--btnPanelText, $fallback--text);\n }\n\n &:active {\n background-color: $fallback--fg;\n background-color: var(--btnPressedPanel, $fallback--fg);\n color: $fallback--text;\n color: var(--btnPressedPanelText, $fallback--text);\n }\n\n &:disabled {\n color: $fallback--text;\n color: var(--btnDisabledPanelText, $fallback--text);\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledPanelText, $fallback--text);\n }\n }\n }\n\n .rightside-button {\n align-self: stretch;\n text-align: center;\n width: var(--__panel-heading-height);\n height: var(--__panel-heading-height);\n margin: calc(-1 * var(--panel-heading-height-padding)) 0;\n margin-right: calc(-1 * var(--__panel-heading-gap));\n\n > button {\n box-sizing: border-box;\n padding: calc(1 * var(--panel-heading-height-padding)) 0;\n height: 100%;\n width: 100%;\n text-align: center;\n\n svg {\n font-size: 1.2em;\n }\n }\n }\n\n .rightside-icon {\n align-self: stretch;\n text-align: center;\n width: var(--__panel-heading-height);\n margin-right: calc(-1 * var(--__panel-heading-gap));\n\n svg {\n font-size: 1.2em;\n }\n }\n}\n\n.panel-footer {\n border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n align-items: center;\n border-width: 1px 0 0;\n border-style: solid;\n border-color: var(--border, $fallback--border);\n}\n/* stylelint-enable no-descending-specificity */\n","\n@import \"../../variables\";\n\n.thread-tree-replies {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n}\n\n.thread-tree-replies-hidden {\n padding: var(--status-margin, $status-margin);\n\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n}\n","\n@import \"../../variables\";\n\n.Conversation {\n z-index: 1;\n\n .conversation-dive-to-top-level-box {\n padding: var(--status-margin, $status-margin);\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n\n .thread-ancestors {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n }\n\n .thread-ancestor.-faded .StatusContent {\n --link: var(--faintLink);\n --text: var(--faint);\n\n color: var(--text);\n }\n\n .thread-ancestor-dive-box {\n padding-left: var(--status-margin, $status-margin);\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n\n /* Make the button stretch along the whole row */\n &,\n &-inner {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n }\n\n .thread-ancestor-dive-box-inner {\n padding: var(--status-margin, $status-margin);\n }\n\n .conversation-status {\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n }\n\n .thread-ancestor-has-other-replies .conversation-status,\n &:last-child .conversation-status,\n .thread-ancestor:last-child .conversation-status,\n .thread-ancestor:last-child .thread-ancestor-dive-box,\n &.-expanded .thread-tree .conversation-status {\n border-bottom: none;\n }\n\n .thread-ancestors + .thread-tree > .conversation-status {\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n /* expanded conversation in timeline */\n &.status-fadein.-expanded .thread-body {\n border-left: 4px solid $fallback--cRed;\n border-left-color: var(--cRed, $fallback--cRed);\n border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n border-bottom: 1px solid var(--border, $fallback--border);\n }\n\n &.-expanded.status-fadein {\n margin: calc(var(--status-margin, $status-margin) / 2);\n }\n}\n","\n@import \"../../variables\";\n\n.timeline-menu-popover {\n min-width: 24rem;\n max-width: 100vw;\n margin-top: 0.6rem;\n font-size: 1rem;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n a {\n display: block;\n padding: 0 0.65em;\n height: 3.5em;\n line-height: 3.5em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &.router-link-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n svg {\n margin-right: 0.4em;\n margin-left: -0.2em;\n }\n }\n\n li {\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 0;\n\n &:last-child a {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child {\n border: none;\n }\n }\n}\n\n.TimelineMenu {\n margin-right: auto;\n min-width: 0;\n\n .popover-trigger-button {\n vertical-align: bottom;\n }\n\n .panel::after {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n }\n\n .timeline-menu-title {\n margin: 0;\n cursor: pointer;\n user-select: none;\n width: 100%;\n display: flex;\n\n .timeline-menu-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n svg {\n margin-left: 0.6em;\n transition: transform 100ms;\n }\n\n .click-blocker {\n cursor: default;\n flex-grow: 1;\n }\n }\n\n &.open .timeline-menu-title svg {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n transform: rotate(180deg);\n }\n\n .panel {\n box-shadow: var(--popoverShadow);\n }\n}\n","@import \"../../variables\";\n\n.Timeline {\n .alert-dot {\n border-radius: 100%;\n height: 8px;\n width: 8px;\n position: absolute;\n left: calc(50% - 4px);\n top: calc(50% - 4px);\n margin-left: 6px;\n margin-top: -6px;\n background-color: var(--badgeNeutral);\n }\n\n .alert-badge {\n font-size: 0.75em;\n line-height: 1;\n text-align: right;\n border-radius: var(--tooltipRadius);\n position: absolute;\n left: calc(50% - 0.5em);\n top: calc(50% - 0.4em);\n padding: 0.2em;\n margin-left: 0.7em;\n margin-top: -1em;\n background-color: var(--badgeNeutral);\n color: var(--badgeNeutralText);\n }\n\n .loadmore-button {\n position: relative;\n }\n\n &.-blocked {\n cursor: progress;\n }\n\n .conversation-heading {\n top: calc(var(--__panel-heading-height) * var(--currentPanelStack, 2));\n z-index: 2;\n }\n\n &.-nonpanel {\n .timeline-heading {\n text-align: center;\n line-height: 2.75em;\n padding: 0 0.5em;\n\n .button-default,\n .alert {\n line-height: 2em;\n width: 100%;\n }\n }\n }\n}\n","@import \"../../variables\";\n\n/* stylelint-disable no-descending-specificity */\n.tab-switcher {\n display: flex;\n\n .tab-icon {\n margin: 0.2em auto;\n display: block;\n }\n\n &.top-tabs {\n flex-direction: column;\n\n > .tabs {\n width: 100%;\n overflow-y: hidden;\n overflow-x: auto;\n padding-top: 5px;\n flex-direction: row;\n flex: 0 0 auto;\n\n &::after,\n &::before {\n content: \"\";\n flex: 1 1 auto;\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n\n .tab-wrapper {\n height: 2em;\n\n &:not(.active)::after {\n left: 0;\n right: 0;\n bottom: 0;\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n }\n\n .tab {\n width: 100%;\n min-width: 1px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n padding-bottom: 99px;\n margin-bottom: 6px - 99px;\n }\n }\n\n .contents.scrollable-tabs {\n flex-basis: 0;\n }\n }\n\n &.side-tabs {\n flex-direction: row;\n\n @media all and (max-width: 800px) {\n overflow-x: auto;\n }\n\n > .contents {\n flex: 1 1 auto;\n }\n\n > .tabs {\n flex: 0 0 auto;\n overflow-y: auto;\n overflow-x: hidden;\n flex-direction: column;\n\n &::after,\n &::before {\n flex-shrink: 0;\n flex-basis: 0.5em;\n content: \"\";\n border-right: 1px solid;\n border-right-color: $fallback--border;\n border-right-color: var(--border, $fallback--border);\n }\n\n &::after {\n flex-grow: 1;\n }\n\n &::before {\n flex-grow: 0;\n }\n\n .tab-wrapper {\n min-width: 10em;\n display: flex;\n flex-direction: column;\n\n @media all and (max-width: 800px) {\n min-width: 4em;\n }\n\n &:not(.active)::after {\n top: 0;\n right: 0;\n bottom: 0;\n border-right: 1px solid;\n border-right-color: $fallback--border;\n border-right-color: var(--border, $fallback--border);\n }\n\n &::before {\n flex: 0 0 6px;\n content: \"\";\n border-right: 1px solid;\n border-right-color: $fallback--border;\n border-right-color: var(--border, $fallback--border);\n }\n\n &:last-child .tab {\n margin-bottom: 0;\n }\n }\n\n .tab {\n flex: 1;\n box-sizing: content-box;\n min-width: 10em;\n min-width: 1px;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n padding-left: 1em;\n padding-right: calc(1em + 200px);\n margin-right: -200px;\n margin-left: 1em;\n\n @media all and (max-width: 800px) {\n padding-left: 0.25em;\n padding-right: calc(0.25em + 200px);\n margin-right: calc(0.25em - 200px);\n margin-left: 0.25em;\n\n .text {\n display: none;\n }\n }\n }\n }\n }\n\n .contents {\n flex: 1 0 auto;\n min-height: 0;\n\n .hidden {\n display: none;\n }\n\n .full-height:not(.hidden) {\n height: 100%;\n display: flex;\n flex-direction: column;\n\n > *:not(.mobile-label) {\n flex: 1;\n }\n }\n\n &.scrollable-tabs {\n overflow-y: auto;\n }\n }\n\n .tab {\n position: relative;\n white-space: nowrap;\n padding: 6px 1em;\n\n &:not(.active) {\n z-index: 4;\n\n &:hover {\n z-index: 6;\n }\n }\n\n &.active {\n background: transparent;\n z-index: 5;\n color: $fallback--text;\n color: var(--tabActiveText, $fallback--text);\n }\n\n img {\n max-height: 26px;\n vertical-align: top;\n margin-top: -5px;\n }\n }\n\n .tabs {\n display: flex;\n position: relative;\n box-sizing: border-box;\n\n &::after,\n &::before {\n display: block;\n flex: 1 1 auto;\n }\n }\n\n .tab-wrapper {\n position: relative;\n display: flex;\n flex: 0 0 auto;\n\n &:not(.active) {\n &::after {\n content: \"\";\n position: absolute;\n z-index: 7;\n }\n }\n }\n\n .mobile-label {\n padding-left: 0.3em;\n padding-bottom: 0.25em;\n margin-top: 0.5em;\n margin-left: 0.2em;\n margin-bottom: 0.25em;\n border-bottom: 1px solid var(--border, $fallback--border);\n\n @media all and (min-width: 800px) {\n display: none;\n }\n }\n}\n/* stylelint-enable no-descending-specificity */\n","\n@import \"../../variables\";\n\n.chat-title {\n display: flex;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n --emoji-size: 14px;\n\n .username {\n max-width: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: inline;\n word-wrap: break-word;\n overflow: hidden;\n }\n\n .avatar-container {\n align-self: center;\n line-height: 1;\n }\n\n .titlebar-avatar {\n margin-right: 0.5em;\n height: 1.5em;\n width: 1.5em;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n\n &.animated::before {\n display: none;\n }\n }\n}\n",".chat-list-item {\n display: flex;\n flex-direction: row;\n padding: 0.75em;\n height: 5em;\n overflow: hidden;\n box-sizing: border-box;\n cursor: pointer;\n\n :focus {\n outline: none;\n }\n\n &:hover {\n background-color: var(--selectedPost, $fallback--lightBg);\n box-shadow: 0 0 3px 1px rgb(0 0 0 / 10%);\n }\n\n .chat-list-item-left {\n margin-right: 1em;\n }\n\n .chat-list-item-center {\n width: 100%;\n box-sizing: border-box;\n overflow: hidden;\n word-wrap: break-word;\n }\n\n .heading {\n width: 100%;\n display: inline-flex;\n justify-content: space-between;\n line-height: 1em;\n }\n\n .heading-right {\n white-space: nowrap;\n }\n\n .name-and-account-name {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n flex-shrink: 1;\n line-height: var(--post-line-height);\n }\n\n .chat-preview {\n display: inline-flex;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n margin: 0.35em 0;\n color: $fallback--text;\n color: var(--faint, $fallback--text);\n width: 100%;\n }\n\n a {\n color: var(--faintLink, $fallback--link);\n text-decoration: none;\n pointer-events: none;\n }\n\n &:hover .animated.avatar {\n canvas {\n display: none;\n }\n\n img {\n visibility: visible;\n }\n }\n\n .Avatar {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .chat-preview-body {\n --emoji-size: 1.4em;\n\n padding-right: 1em;\n }\n\n .time-wrapper {\n line-height: var(--post-line-height);\n }\n}\n","\n.basic-user-card {\n display: flex;\n flex: 1 0;\n margin: 0;\n padding: 0.6em 1em;\n\n --emoji-size: 14px;\n\n &-collapsed-content {\n margin-left: 0.7em;\n text-align: left;\n flex: 1;\n min-width: 0;\n }\n\n &-user-name {\n img {\n object-fit: contain;\n height: 16px;\n width: 16px;\n vertical-align: middle;\n }\n }\n\n &-user-name-value,\n &-screen-name {\n display: inline-block;\n max-width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n &-expanded-content {\n flex: 1;\n margin-left: 0.7em;\n min-width: 0;\n }\n}\n",".chat-new {\n .input-wrap {\n display: flex;\n margin: 0.7em 0.5em;\n\n input {\n width: 100%;\n }\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n\n .member-list {\n padding-bottom: 0.7rem;\n }\n\n .basic-user-card:hover {\n cursor: pointer;\n background-color: var(--selectedPost, $fallback--lightBg);\n }\n\n .go-back-button {\n text-align: center;\n line-height: 1;\n height: 100%;\n align-self: start;\n width: var(--__panel-heading-height-inner);\n }\n}\n","\n@import \"../../variables\";\n\n.chat-list {\n min-height: 25em;\n margin-bottom: 0;\n}\n\n.emtpy-chat-list-alert {\n padding: 3em;\n font-size: 1.2em;\n display: flex;\n justify-content: center;\n color: $fallback--text;\n color: var(--faint, $fallback--text);\n}\n\n","@import \"../../variables\";\n\n.chat-message-wrapper {\n &.hovered-message-chain {\n .animated.Avatar {\n canvas {\n display: none;\n }\n\n img {\n visibility: visible;\n }\n }\n }\n\n .chat-message-menu {\n transition: opacity 0.1s;\n opacity: 0;\n position: absolute;\n top: -0.8em;\n\n button {\n padding-top: 0.2em;\n padding-bottom: 0.2em;\n }\n }\n\n .menu-icon {\n cursor: pointer;\n\n &:hover,\n .extra-button-popover.open & {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .popover {\n width: 12em;\n }\n\n .chat-message {\n display: flex;\n padding-bottom: 0.5em;\n\n .status-body:hover {\n --_still-image-img-visibility: visible;\n --_still-image-canvas-visibility: hidden;\n --_still-image-label-visibility: hidden;\n }\n }\n\n .avatar-wrapper {\n margin-right: 0.72em;\n width: 32px;\n }\n\n .link-preview,\n .attachments {\n margin-bottom: 1em;\n }\n\n .status {\n border-radius: $fallback--chatMessageRadius;\n border-radius: var(--chatMessageRadius, $fallback--chatMessageRadius);\n display: flex;\n padding: 0.75em;\n }\n\n .created-at {\n position: relative;\n float: right;\n font-size: 0.8em;\n margin: -1em 0 -0.5em;\n font-style: italic;\n opacity: 0.8;\n }\n\n .without-attachment {\n .message-content {\n // TODO figure out how to do it properly\n .RichContent::after {\n margin-right: 5.4em;\n content: \" \";\n display: inline-block;\n }\n }\n }\n\n .pending {\n .status-content.media-body,\n .created-at {\n color: var(--faint);\n }\n }\n\n .error {\n .status-content.media-body,\n .created-at {\n color: $fallback--cRed;\n color: var(--badgeNotification, $fallback--cRed);\n }\n }\n\n .chat-message-inner {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n max-width: 80%;\n min-width: 10em;\n width: 100%;\n }\n\n .outgoing {\n display: flex;\n flex-flow: row wrap;\n align-content: end;\n justify-content: flex-end;\n\n a {\n color: var(--chatMessageOutgoingLink, $fallback--link);\n }\n\n .status {\n color: var(--chatMessageOutgoingText, $fallback--text);\n background-color: var(--chatMessageOutgoingBg, $fallback--lightBg);\n border: 1px solid var(--chatMessageOutgoingBorder, --lightBg);\n }\n\n .chat-message-inner {\n align-items: flex-end;\n }\n\n .chat-message-menu {\n right: 0.4rem;\n }\n }\n\n .incoming {\n a {\n color: var(--chatMessageIncomingLink, $fallback--link);\n }\n\n .status {\n color: var(--chatMessageIncomingText, $fallback--text);\n background-color: var(--chatMessageIncomingBg, $fallback--bg);\n border: 1px solid var(--chatMessageIncomingBorder, --border);\n }\n\n .created-at {\n a {\n color: var(--chatMessageIncomingText, $fallback--text);\n }\n }\n\n .chat-message-menu {\n left: 0.4rem;\n }\n }\n\n .chat-message-inner.with-media {\n width: 100%;\n\n .status {\n width: 100%;\n }\n }\n\n .visible {\n opacity: 1;\n }\n}\n\n.chat-message-date-separator {\n text-align: center;\n margin: 1.4em 0;\n font-size: 0.9em;\n user-select: none;\n color: $fallback--text;\n color: var(--faintedText, $fallback--text);\n}\n",".chat-view {\n display: flex;\n height: 100%;\n\n .chat-view-inner {\n height: auto;\n width: 100%;\n overflow: visible;\n display: flex;\n }\n\n .chat-view-body {\n box-sizing: border-box;\n background-color: var(--chatBg, $fallback--bg);\n display: flex;\n flex-direction: column;\n width: 100%;\n overflow: visible;\n min-height: calc(100vh - var(--navbar-height));\n margin: 0;\n border-radius: 10px 10px 0 0;\n border-radius: var(--panelRadius, 10px) var(--panelRadius, 10px) 0 0;\n\n &::after {\n border-radius: 0;\n }\n }\n\n .message-list {\n padding: 0 0.8em;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: end;\n }\n\n .footer {\n position: sticky;\n bottom: 0;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n z-index: 1;\n }\n\n .chat-view-heading {\n grid-template-columns: auto minmax(50%, 1fr);\n }\n\n .go-back-button {\n text-align: center;\n line-height: 1;\n height: 100%;\n align-self: start;\n width: var(--__panel-heading-height-inner);\n }\n\n .jump-to-bottom-button {\n width: 2.5em;\n height: 2.5em;\n border-radius: 100%;\n position: absolute;\n right: 1.3em;\n top: -3.2em;\n background-color: $fallback--fg;\n background-color: var(--btn, $fallback--fg);\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 1px 1px rgb(0 0 0 / 30%), 0 2px 4px rgb(0 0 0 / 30%);\n z-index: 10;\n transition: 0.35s all;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n opacity: 0;\n visibility: hidden;\n cursor: pointer;\n\n &.visible {\n opacity: 1;\n visibility: visible;\n }\n\n i {\n font-size: 1em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n\n .unread-message-count {\n font-size: 0.8em;\n left: 50%;\n margin-top: -1rem;\n padding: 0.1em;\n border-radius: 50px;\n position: absolute;\n }\n\n .chat-loading-error {\n width: 100%;\n display: flex;\n align-items: flex-end;\n height: 100%;\n\n .error {\n width: 100%;\n }\n }\n }\n}\n","\n.follow-card {\n &-content-container {\n flex-shrink: 0;\n display: flex;\n flex-flow: row wrap;\n justify-content: space-between;\n line-height: 1.5em;\n }\n\n &-button {\n margin-top: 0.5em;\n padding: 0 1.5em;\n margin-left: 1em;\n }\n\n &-follow-button {\n margin-top: 0.5em;\n margin-left: auto;\n width: 10em;\n }\n}\n","@import \"../../variables\";\n\n.with-load-more {\n &-footer {\n padding: 10px;\n text-align: center;\n border-top: 1px solid;\n border-top-color: $fallback--border;\n border-top-color: var(--border, $fallback--border);\n\n .error {\n font-size: 1rem;\n }\n\n a {\n cursor: pointer;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.user-profile {\n flex: 2;\n flex-basis: 500px;\n\n // No sticky header on user profile\n --currentPanelStack: 1;\n\n .user-birthday {\n margin: 0 0.75em 0.5em;\n }\n\n .user-profile-fields {\n margin: 0 0.5em;\n\n img {\n object-fit: contain;\n vertical-align: middle;\n max-width: 100%;\n max-height: 400px;\n\n &.emoji {\n width: 18px;\n height: 18px;\n }\n }\n\n .user-profile-field {\n display: flex;\n margin: 0.25em;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .user-profile-field-name {\n flex: 0 1 30%;\n font-weight: 500;\n text-align: right;\n color: var(--lightText);\n min-width: 120px;\n border-right: 1px solid var(--border, $fallback--border);\n }\n\n .user-profile-field-value {\n flex: 1 1 70%;\n color: var(--text);\n margin: 0 0 0 0.25em;\n }\n\n .user-profile-field-name,\n .user-profile-field-value {\n line-height: 1.3;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n padding: 0.5em 1.5em;\n box-sizing: border-box;\n }\n }\n }\n\n .userlist-placeholder {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 2em;\n }\n}\n\n.user-profile-placeholder {\n .panel-body {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 7em;\n }\n}\n","\n@import \"../../variables\";\n\n.search-result-heading {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n padding: 0.75rem;\n text-align: center;\n}\n\n@media all and (max-width: 800px) {\n .search-nav-heading {\n .tab-switcher .tabs .tab-wrapper {\n display: block;\n justify-content: center;\n flex: 1 1 auto;\n text-align: center;\n }\n }\n}\n\n.search-result {\n box-sizing: border-box;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.search-result-footer {\n border-width: 1px 0 0;\n border-style: solid;\n border-color: var(--border, $fallback--border);\n padding: 10px;\n background-color: $fallback--fg;\n background-color: var(--panel, $fallback--fg);\n}\n\n.search-input-container {\n padding: 0.8rem;\n display: flex;\n justify-content: center;\n\n .search-input {\n width: 100%;\n line-height: 1.125rem;\n font-size: 1rem;\n padding: 0.5rem;\n box-sizing: border-box;\n }\n\n .search-button {\n margin-left: 0.5em;\n }\n}\n\n.loading-icon {\n padding: 1em;\n}\n\n.trend {\n display: flex;\n align-items: center;\n\n .hashtag {\n flex: 1 1 auto;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .count {\n flex: 0 0 auto;\n width: 2rem;\n font-size: 1.5rem;\n line-height: 2.25rem;\n font-weight: 500;\n text-align: center;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n.more-statuses-button {\n height: 3.5em;\n line-height: 3.5em;\n}\n\n","\n@import \"../../variables\";\n\n.interface-language-switcher {\n .language-select {\n margin-right: 1em;\n }\n}\n","\n@import \"../../variables\";\n$validations-cRed: #f04124;\n\n.registration-form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex-direction: row;\n\n > * {\n min-width: 0;\n }\n }\n\n .terms-of-service {\n flex: 0 1 50%;\n margin: 0.8em;\n }\n\n .text-fields {\n margin-top: 0.6em;\n flex: 1 0;\n display: flex;\n flex-direction: column;\n }\n\n textarea {\n min-height: 100px;\n resize: vertical;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0;\n line-height: 2;\n margin-bottom: 1em;\n }\n\n .form-group--error {\n animation-name: shakeError;\n animation-duration: 0.6s;\n animation-timing-function: ease-in-out;\n }\n\n .form-group--error .form--label {\n color: $validations-cRed;\n color: var(--cRed, $validations-cRed);\n }\n\n .form-error {\n margin-top: -0.7em;\n text-align: left;\n\n span {\n font-size: 0.85em;\n }\n }\n\n .form-error ul {\n list-style: none;\n padding: 0 0 0 5px;\n margin-top: 0;\n\n li::before {\n content: \"• \";\n }\n }\n\n form textarea {\n line-height: 16px;\n resize: vertical;\n }\n\n .captcha {\n max-width: 350px;\n margin-bottom: 0.4em;\n }\n\n .btn {\n margin-top: 0.6em;\n height: 2em;\n }\n\n .error {\n text-align: center;\n }\n}\n\n@media all and (max-width: 800px) {\n .registration-form .container {\n flex-direction: column-reverse;\n }\n}\n","\n@import \"../../variables\";\n\n.password-reset-form {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex: 1 0;\n flex-direction: column;\n margin-top: 0.6em;\n max-width: 18rem;\n\n > * {\n min-width: 0;\n }\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n margin-bottom: 1em;\n padding: 0.3em 0;\n line-height: 1.85em;\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n\n .alert {\n padding: 0.5em;\n margin: 0.3em 0 1em;\n }\n\n .password-reset-required {\n background-color: var(--alertError, $fallback--alertError);\n padding: 10px 0;\n }\n\n .notice-dismissible {\n padding-right: 2rem;\n }\n\n .dismiss {\n cursor: pointer;\n }\n}\n\n","\n.follow-request-card-content-container {\n display: flex;\n flex-flow: row wrap;\n\n button {\n margin-top: 0.5em;\n margin-right: 0.5em;\n flex: 1 1;\n max-width: 12em;\n min-width: 8em;\n\n &:last-child {\n margin-right: 0;\n }\n }\n}\n","\n.tos-content {\n margin: 1em;\n}\n","\n.staff-group {\n padding-left: 1em;\n padding-top: 1em;\n\n .basic-user-card {\n padding-left: 0;\n }\n}\n\n",".mrf-section {\n margin: 1em;\n\n table {\n width: 100%;\n text-align: left;\n padding-left: 10px;\n padding-bottom: 20px;\n\n th,\n td {\n width: 180px;\n max-width: 360px;\n overflow: hidden;\n vertical-align: text-top;\n }\n\n th + th,\n td + td {\n width: auto;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.list-card {\n display: flex;\n}\n\n.list-name {\n flex-grow: 1;\n}\n\n.list-name,\n.button-list-edit {\n margin: 0;\n padding: 1em;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n }\n}\n","\n.Lists {\n .new-list-button {\n padding: 0 0.5em;\n }\n}\n","\n@import \"../../variables\";\n\n.ListsUserSearch {\n .input-wrap {\n display: flex;\n margin: 0.7em 0.5em;\n\n input {\n width: 100%;\n }\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n}\n\n","\n@import \"src/variables\";\n\n.panel-loading {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n\n .loading-text svg {\n line-height: 0;\n vertical-align: middle;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n","\n@import \"../../variables\";\n\n.ListEdit {\n --panel-body-padding: 0.5em;\n\n height: calc(100vh - var(--navbar-height));\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n .list-edit-heading {\n grid-template-columns: auto minmax(50%, 1fr);\n }\n\n .panel-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n overflow: hidden;\n }\n\n .list-member-management {\n flex: 1 0 auto;\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n\n .users-list {\n padding-bottom: 0.7rem;\n overflow-y: auto;\n }\n\n & .search-list,\n & .members-list {\n overflow: hidden;\n flex-direction: column;\n min-height: 0;\n }\n\n .go-back-button {\n text-align: center;\n line-height: 1;\n height: 100%;\n align-self: start;\n width: var(--__panel-heading-height-inner);\n }\n\n .btn {\n margin: 0 0.5em;\n }\n\n .panel-footer {\n grid-template-columns: minmax(10%, 1fr);\n\n .footer-button {\n min-width: 9em;\n }\n }\n}\n","\n.announcement-editor {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n\n .announcement-metadata {\n margin-top: 0.5em;\n }\n\n .post-textarea {\n resize: vertical;\n height: 10em;\n overflow: none;\n box-sizing: content-box;\n }\n}\n","\n@import \"../../variables\";\n\n.announcement {\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n padding: var(--status-margin, $status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .footer {\n display: flex;\n flex-direction: column;\n\n .times {\n display: flex;\n flex-direction: column;\n }\n }\n\n .footer .actions {\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n\n .btn {\n flex: 1;\n margin: 1em;\n max-width: 10em;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.announcements-page {\n .post-form {\n padding: var(--status-margin, $status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .post-button {\n min-width: 10em;\n }\n }\n}\n"],"names":[],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/css/app.a7f63ee9107a77599942.css b/priv/static/static/css/app.a7f63ee9107a77599942.css @@ -0,0 +1,2 @@ +.modal-view{align-items:center;animation-duration:.2s;animation-name:modal-background-fadein;bottom:0;display:flex;justify-content:center;left:0;opacity:0;overflow:auto;pointer-events:none;position:fixed;right:0;top:0;z-index:var(--ZI_modals)}.modal-view>*{pointer-events:auto}.modal-view.modal-background{background-color:rgba(0,0,0,.5);pointer-events:auto}.modal-view.open{opacity:1}@keyframes modal-background-fadein{0%{background-color:transparent}to{background-color:rgba(0,0,0,.5)}}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.vue-recycle-scroller__slot{-webkit-box-flex:1;-ms-flex:auto 0 0px;flex:auto 0 0}.vue-recycle-scroller__item-wrapper{-webkit-box-flex:1;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex:1;flex:1;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{left:0;position:absolute;top:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{background-color:transparent;border:none;opacity:0}.resize-observer[data-v-b329ee4c],.resize-observer[data-v-b329ee4c] object{display:block;height:100%;left:0;overflow:hidden;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}.login-form{display:flex;flex-direction:column;padding:.6em}.login-form .btn{min-height:2em;width:10em}.login-form .register{flex:1 1}.login-form .login-bottom{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-top:1em}.login-form .form-group{display:flex;flex-direction:column;line-height:24px;padding:.3em .5em .6em}.login-form .form-bottom{display:flex;height:32px;padding:.5em}.login-form .form-bottom button{width:10em}.login-form .form-bottom p{display:flex;margin:.35em;padding:.35em}.login-form .error{animation-duration:.4s;animation-name:shakeError;animation-timing-function:ease-in-out;text-align:center}.media-upload .hidden-input-file{display:none}label.media-upload{cursor:pointer}.ScopeSelector .scope{cursor:pointer;display:inline-block;min-height:1.3em;min-width:1.3em;text-align:center}.ScopeSelector .scope.selected svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.checkbox{display:inline-block;min-height:1.2em;position:relative}.checkbox-indicator{padding-left:1.2em;position:relative}.checkbox-indicator:before{background-color:#182230;background-color:var(--input,#182230);border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);box-sizing:border-box;color:transparent;content:"✓";display:block;font-size:1.1em;height:1.1em;line-height:1.1em;overflow:hidden;position:absolute;right:0;text-align:center;top:0;transition:color .2s;vertical-align:top;width:1.1em}.checkbox.disabled .checkbox-indicator:before,.checkbox.disabled .label{opacity:.5}.checkbox.disabled .label{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.checkbox input[type=checkbox]:checked+.checkbox-indicator:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox input[type=checkbox]:indeterminate+.checkbox-indicator:before{color:#b9b9ba;color:var(--inputText,#b9b9ba);content:"–"}.checkbox.indeterminate-fix input[type=checkbox]+.checkbox-indicator:before{content:"–"}.checkbox>span{margin-left:.5em}.popover-trigger-button{display:inline-block}.popover{box-shadow:2px 2px 3px rgba(0,0,0,.5);box-shadow:var(--popupShadow);max-width:calc(100vw - 20px);min-width:0;position:fixed;z-index:var(--ZI_popover_override,var(--ZI_popovers))}.popover-default{--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--postLink:var(--popoverPostLink,$fallback--link);--postFaintLink:var(--popoverPostFaintLink,$fallback--link);--icon:var(--popoverIcon,$fallback--icon);background-color:#121a24;background-color:var(--popover,#121a24);border-radius:4px;border-radius:var(--btnRadius,4px);color:#b9b9ba;color:var(--popoverText,#b9b9ba)}.popover-default:after{bottom:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);content:"";left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:3}.dropdown-menu{display:block;font-size:1em;list-style:none;max-width:100vw;padding:.5rem 0;text-align:left;white-space:nowrap;z-index:var(--ZI_popover_override,var(--ZI_popovers))}.dropdown-menu .dropdown-divider{border-top:1px solid #222;border-top:1px solid var(--border,#222);height:0;margin:.5rem 0;overflow:hidden}.dropdown-menu .dropdown-item{--btnText:var(--popoverText,$fallback--text);background-color:transparent;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;clear:both;display:block;font-weight:400;height:100%;line-height:21px;overflow:hidden;padding:.5em .75em;text-align:inherit;white-space:nowrap;width:100%}.dropdown-menu .dropdown-item-icon svg{color:var(--menuPopoverIcon,#666);margin-right:.75rem;width:22px}.dropdown-menu .dropdown-item.-has-submenu .chevron-icon{margin-left:2rem;margin-right:.25rem}.dropdown-menu .dropdown-item:active,.dropdown-menu .dropdown-item:hover{--btnText:var(--selectedMenuPopoverText,$fallback--link);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon);background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);box-shadow:none}.dropdown-menu .dropdown-item:active svg,.dropdown-menu .dropdown-item:hover svg{--icon:var(--selectedMenuPopoverIcon,$fallback--icon);color:var(--selectedMenuPopoverIcon,#666)}.dropdown-menu .dropdown-item .menu-checkbox{background-color:#182230;background-color:var(--input,#182230);border-radius:0;box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);display:inline-block;line-height:22px;margin-right:.75em;max-height:22px;max-width:22px;min-height:22px;min-width:22px;text-align:center;vertical-align:middle}.dropdown-menu .dropdown-item .menu-checkbox.menu-checkbox-checked:after{content:"✓";font-size:1.25em}.dropdown-menu .dropdown-item .menu-checkbox.-radio{border-radius:9999px}.dropdown-menu .dropdown-item .menu-checkbox.-radio.menu-checkbox-checked:after{content:"•";font-size:2em}.dropdown-menu .button-default.dropdown-item,.dropdown-menu .button-default.dropdown-item i[class*=icon-]{color:#b9b9ba;color:var(--btnText,#b9b9ba)}.dropdown-menu .button-default.dropdown-item:active{background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#d8a070;color:var(--selectedMenuPopoverText,#d8a070)}.dropdown-menu .button-default.dropdown-item:disabled{color:#b9b9ba;color:var(--btnDisabledText,#b9b9ba)}.dropdown-menu .button-default.dropdown-item.toggled{color:#b9b9ba;color:var(--btnToggledText,#b9b9ba)}.still-image{align-items:center;display:inline-flex;line-height:0;overflow:hidden;position:relative}.still-image canvas{bottom:0;left:0;position:absolute;right:0;top:0;visibility:var(--_still-image-canvas-visibility,visible)}.still-image canvas,.still-image img{height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.still-image.animated:before{zoom:var(--_still_image-label-scale,1);background:hsla(0,0%,50%,.5);border-radius:5px;border-radius:var(--tooltipRadius,5px);color:#fff;content:"gif";display:block;font-size:.7em;left:.5em;line-height:1;padding:2px 4px;position:absolute;top:.5em;visibility:var(--_still-image-label-visibility,visible);z-index:2}.still-image.animated:hover canvas{display:none}.still-image.animated:hover:before{visibility:var(--_still-image-label-visibility,hidden)}.still-image.animated img{visibility:var(--_still-image-img-visibility,hidden)}.still-image.animated:hover img{visibility:visible}.emoji-picker{--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon);background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);display:flex;flex-direction:column;max-width:calc(100vw - 20px);width:25em}.emoji-picker-header-image{align-items:center;display:inline-flex;height:32px;justify-content:center;max-height:32px;max-width:32px;width:32px}.emoji-picker-header-image .still-image{height:100%;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;width:100%}.emoji-picker .keep-open,.emoji-picker .too-many-emoji{line-height:normal;padding:7px}.emoji-picker .too-many-emoji{display:flex;flex-direction:column}.emoji-picker .keep-open-label{display:flex;padding:0 7px}.emoji-picker .heading{display:flex;padding:10px 7px 5px}.emoji-picker .content{display:flex;flex:1 1 auto;flex-direction:column;min-height:0}.emoji-picker .emoji-tabs{display:flex;flex-flow:row nowrap;flex-grow:1;overflow-x:auto}.emoji-picker .additional-tabs{border-left:1px solid #666;border-left-color:var(--icon,#666);display:flex;flex:0 0 auto;padding-left:7px}.emoji-picker .additional-tabs,.emoji-picker .emoji-tabs{align-content:center;display:flex;flex-basis:auto}.emoji-picker .additional-tabs-item,.emoji-picker .emoji-tabs-item{align-items:center;cursor:pointer;display:flex;font-size:1.85em;height:32px;max-height:32px;max-width:32px;padding:0 7px;width:32px}.emoji-picker .additional-tabs-item.disabled,.emoji-picker .emoji-tabs-item.disabled{opacity:.5;pointer-events:none}.emoji-picker .additional-tabs-item.active,.emoji-picker .emoji-tabs-item.active{border-bottom:4px solid}.emoji-picker .additional-tabs-item.active svg,.emoji-picker .emoji-tabs-item.active svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.emoji-picker .sticker-picker{flex:1 1 auto}.emoji-picker .emoji-content,.emoji-picker .stickers-content{display:flex;flex:1 1 auto;flex-direction:column;min-height:0}.emoji-picker .emoji-content.hidden,.emoji-picker .stickers-content.hidden{opacity:0;pointer-events:none;position:absolute}.emoji-picker .emoji-search{flex:0 0 auto;padding:5px}.emoji-picker .emoji-search input{width:100%}.emoji-picker .emoji-groups{flex:1 1 1px;height:100%;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;min-height:200px;overflow:auto;position:relative;transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.emoji-picker .emoji-groups.scrolled-top{-webkit-mask-size:100% 20px,100% 0,auto;mask-size:100% 20px,100% 0,auto}.emoji-picker .emoji-groups.scrolled-bottom{-webkit-mask-size:100% 0,100% 20px,auto;mask-size:100% 0,100% 20px,auto}.emoji-picker .emoji-group{align-items:center;display:flex;flex-wrap:wrap;justify-content:left;padding-left:5px}.emoji-picker .emoji-group-title{font-size:.85em;margin:0;width:100%}.emoji-picker .emoji-group-title.disabled{display:none}.emoji-picker .emoji-item{align-items:center;box-sizing:border-box;cursor:pointer;display:flex;height:32px;justify-content:center;line-height:32px;margin:4px;width:32px}.emoji-picker .emoji-item .emoji-picker-emoji.-custom{max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain}.emoji-picker .emoji-item .emoji-picker-emoji.-unicode{font-size:24px;overflow:hidden}.emoji-input{display:flex;flex-direction:column;position:relative}.emoji-input .emoji-picker-icon{cursor:pointer;font-size:1.3em;line-height:24px;margin:.2em .25em;position:absolute;right:0;top:0}.emoji-input .emoji-picker-icon:hover i{color:#b9b9ba;color:var(--text,#b9b9ba)}.emoji-input .emoji-picker-panel{margin-top:2px;position:absolute;z-index:20}.emoji-input .emoji-picker-panel.hide{display:none}.emoji-input input,.emoji-input textarea{flex:1 0 auto}.emoji-input.with-picker input{padding-right:30px}.emoji-input .hidden-overlay{bottom:0;color:red;left:0;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0}.emoji-input .hidden-overlay .caret{border:1px solid red;margin-right:calc(-1ch - 1px);width:0}.autocomplete-panel{position:absolute}.autocomplete-item{border-bottom:1px solid rgba(0,0,0,.4);cursor:pointer;display:flex;height:32px;padding:.2em .4em}.autocomplete-item .image{font-size:32px;height:32px;line-height:32px;margin-right:4px;text-align:center;width:32px}.autocomplete-item .image img{height:32px;-o-object-fit:contain;object-fit:contain;width:32px}.autocomplete-item .label{display:flex;flex-direction:column;justify-content:center;margin:0 .1em 0 .2em}.autocomplete-item .label .displayText{line-height:1.5}.autocomplete-item .label .detailText{font-size:9px;line-height:9px}.autocomplete-item.highlighted{--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon);background-color:#182230;background-color:var(--selectedMenuPopover,#182230);color:var(--selectedMenuPopoverText,#b9b9ba)}label.Select{padding:0}label.Select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:#b9b9ba;color:var(--inputText,--text,#b9b9ba);font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:1em;height:2em;line-height:16px;margin:0;padding:0 2em 0 .2em;width:100%;z-index:1}label.Select .select-down-icon{bottom:0;color:#b9b9ba;color:var(--inputText,#b9b9ba);height:100%;line-height:2;pointer-events:none;position:absolute;right:5px;top:0;width:.875em;z-index:0}.poll-form{display:flex;flex-direction:column;padding:0 .5em .5em}.poll-form .add-option{align-self:flex-start;padding-left:.1em;padding-top:.25em}.poll-form .poll-option{align-items:baseline;display:flex;justify-content:space-between;margin-bottom:.25em}.poll-form .input-container{width:100%}.poll-form .input-container input{padding-right:2.5em;width:100%}.poll-form .delete-option{margin-left:-1.5em;width:1.5em;z-index:1}.poll-form .poll-type-expiry{display:flex;margin-top:.5em;width:100%}.poll-form .poll-type{flex:1 1 60%;margin-right:.75em}.poll-form .poll-type .poll-type-select{padding-right:.75em}.poll-form .poll-expiry{display:flex}.poll-form .poll-expiry .expiry-amount{text-align:right;width:3em}.Flash{display:inline-block;position:relative}.Flash,.Flash .placeholder,.Flash .player{height:100%;width:100%}.Flash .placeholder{align-items:center;background:var(--bg);color:var(--link);display:flex;justify-content:center}.Flash .hider{top:0}.Flash .label{word-wrap:normal;flex:1 1 0;line-height:1.2;text-align:center;white-space:normal}.Flash .hidden{display:none;visibility:"hidden"}.Attachment{align-self:flex-start;border:1px solid #222;border-color:var(--border,#222);border-radius:10px;border-radius:var(--attachmentRadius,10px);display:inline-flex;flex-direction:column;height:100%;line-height:0;position:relative}.Attachment .attachment-wrapper{flex:1 1 auto;height:100%;overflow:hidden;position:relative}.Attachment .description-container{display:flex;flex:0 1 0;padding-top:.5em;z-index:1}.Attachment .description-container p{flex:1;line-height:1.5;margin:0;overflow:hidden;padding:.5em;text-align:center;text-overflow:ellipsis;white-space:nowrap}.Attachment .description-container.-static{background:var(--popover);bottom:0;box-shadow:var(--popupShadow);left:0;padding-top:0;position:absolute;right:0}.Attachment .description-field{flex:1;min-width:0}.Attachment .audio-container,.Attachment .flash-container,.Attachment .image-container,.Attachment .oembed-container,.Attachment .placeholder-container,.Attachment .video-container{display:flex;height:100%;justify-content:center;width:100%}.Attachment .image-container .image{height:100%;width:100%}.Attachment .flash-container .flash,.Attachment .flash-container video,.Attachment .video-container .flash,.Attachment .video-container video{align-self:center;height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.Attachment .audio-container{align-items:flex-end;display:flex}.Attachment .audio-container audio{height:100%;width:100%}.Attachment .placeholder-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding-top:.5em}.Attachment .play-icon{color:hsla(0,0%,100%,.75);font-size:64px;left:calc(50% - 32px);position:absolute;text-shadow:0 0 2px rgba(0,0,0,.4);top:calc(50% - 32px)}.Attachment .play-icon:before{margin:0}.Attachment .attachment-buttons{display:flex;margin-right:.5em;margin-top:.5em;position:absolute;right:0;top:0;z-index:1}.Attachment .attachment-buttons .attachment-button{background:hsla(0,0%,90%,.7);border-radius:5px;border-radius:var(--tooltipRadius,5px);font-size:1.25em;height:2em;margin-left:.5em;padding:0;text-align:center;width:2em}.Attachment .attachment-buttons .attachment-button .svg-inline--fa{color:rgba(0,0,0,.6)}.Attachment .attachment-buttons .attachment-button:hover .svg-inline--fa{color:rgba(0,0,0,.9)}.Attachment.-contain-fit canvas,.Attachment.-contain-fit img{-o-object-fit:contain;object-fit:contain}.Attachment.-cover-fit canvas,.Attachment.-cover-fit img{-o-object-fit:cover;object-fit:cover}.Attachment .oembed-container{display:flex;flex:1 0 100%;line-height:1.2em;margin-right:15px;width:100%}.Attachment .oembed-container img{width:100%}.Attachment .oembed-container .image{flex:1}.Attachment .oembed-container .image img{border:0;border-radius:5px;height:100%;-o-object-fit:cover;object-fit:cover}.Attachment .oembed-container .text{flex:2;margin:8px;word-break:break-all}.Attachment .oembed-container .text h1{font-size:1rem;margin:0}.Attachment.-size-small .play-icon{zoom:.5;opacity:.7}.Attachment.-size-small .attachment-buttons{zoom:.7;opacity:.5}.Attachment.-editable{padding:.5em}.Attachment.-editable .attachment-buttons,.Attachment.-editable .description-container{margin:0}.Attachment.-placeholder{color:#d8a070;color:var(--postLink,#d8a070);display:inline-block;height:auto;line-height:1.5;overflow:hidden;white-space:nowrap}.Attachment.-placeholder:not(.-editable){border:none}.Attachment.-placeholder.-editable{align-items:baseline;display:flex;flex-direction:row}.Attachment.-placeholder.-editable .attachment-buttons,.Attachment.-placeholder.-editable .description-container{margin:0;padding:0;position:relative}.Attachment.-placeholder.-editable .description-container{flex:1;padding-left:.5em}.Attachment.-placeholder.-editable .attachment-buttons{align-self:center;order:99}.Attachment.-placeholder a{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis}.Attachment.-placeholder svg{color:inherit}.Attachment.-loading{cursor:progress}.Attachment.-compact .placeholder-container{padding-bottom:.5em}.Gallery .gallery-rows{display:flex;flex-direction:column}.Gallery .gallery-row{flex-grow:1;height:0;position:relative;width:100%}.Gallery .gallery-row .gallery-row-inner{align-content:stretch;bottom:0;display:flex;flex-flow:row wrap;left:0;position:absolute;right:0;top:0}.Gallery .gallery-row .gallery-row-inner .gallery-item{box-sizing:border-box;flex-grow:1;height:100%;margin:0 .5em 0 0;min-width:2em}.Gallery .gallery-row .gallery-row-inner .gallery-item:last-child{margin:0}.Gallery .gallery-row .gallery-row-inner.-grid{grid-gap:.5em;display:grid;grid-template-columns:repeat(auto-fill,minmax(15em,1fr));height:auto;position:relative;width:100%}.Gallery .gallery-row .gallery-row-inner.-grid .gallery-item{height:200px;margin:0}.Gallery .gallery-row.-grid,.Gallery .gallery-row.-minimal{height:auto}.Gallery .gallery-row.-grid .gallery-row-inner,.Gallery .gallery-row.-minimal .gallery-row-inner{position:relative}.Gallery .gallery-row:not(:first-child){margin-top:.5em}.Gallery.-long .gallery-rows{-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;max-height:25em;overflow:hidden}.Gallery .many-attachments-text{line-height:2;text-align:center}.Gallery .many-attachments-buttons{display:flex}.Gallery .many-attachments-button{display:flex;flex:1;justify-content:center;line-height:2}.Gallery .many-attachments-button button{padding:0 2em}.Avatar{--_avatarShadowBox:var(--avatarStatusShadow);--_avatarShadowFilter:var(--avatarStatusShadowFilter);--_avatarShadowInset:var(--avatarStatusShadowInset);--_still-image-label-visibility:hidden;display:inline-block;height:48px;position:relative;width:48px}.Avatar.-compact{border-radius:10px;border-radius:var(--avatarAltRadius,10px);height:32px;width:32px}.Avatar .avatar{border-radius:4px;border-radius:var(--avatarRadius,4px);box-shadow:var(--_avatarShadowBox);height:100%;width:100%}.Avatar .avatar.-better-shadow{box-shadow:var(--_avatarShadowInset);filter:var(--_avatarShadowFilter)}.Avatar .avatar.-animated:before{display:none}.Avatar .avatar.-compact{border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.Avatar .avatar.-placeholder{background-color:#182230;background-color:var(--fg,#182230)}.Avatar img{height:100%;width:100%}.Avatar .bot-indicator{background:hsla(0,0%,50%,.5);border-radius:var(--tooltipRadius);bottom:0;color:#fff;margin:-.2em;padding:.2em;position:absolute;right:0}.MentionLink{color:var(--link);display:inline;position:relative;white-space:normal;word-break:normal}.MentionLink .new,.MentionLink .original{border-radius:2px;display:inline}.MentionLink .mention-avatar{border-radius:var(--avatarAltRadius,10px);height:1.5em;margin-right:.2em;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1.5em}.MentionLink .full{word-wrap:normal;display:inline-block;height:100%;left:0;margin-top:.25em;opacity:0;padding:.5em;pointer-events:none;position:absolute;top:100%;transition:opacity .2s ease;-webkit-user-select:all;-moz-user-select:all;user-select:all;white-space:nowrap;z-index:1}.MentionLink .short.-with-tooltip,.MentionLink .you{-webkit-user-select:none;-moz-user-select:none;user-select:none}.MentionLink .full,.MentionLink .short{white-space:nowrap}.MentionLink .shortName{white-space:normal}.MentionLink .new.-you .shortName{font-weight:600}.MentionLink .new.-has-selection{background-color:var(--alertNeutral,#182230);color:var(--alertNeutralText,#b9b9ba)}.MentionLink .new .at{color:var(--link);display:inline-block;line-height:1;margin:0;opacity:.8;padding:0 .1em;vertical-align:-25%}.MentionLink .new.-striped .shortName{background-image:repeating-linear-gradient(135deg,var(--____highlight-tintColor),var(--____highlight-tintColor) 5px,var(--____highlight-tintColor2) 5px,var(--____highlight-tintColor2) 10px)}.MentionLink .new.-solid .shortName{background-image:linear-gradient(var(--____highlight-tintColor2),var(--____highlight-tintColor2))}.MentionLink .new.-side .shortName{box-shadow:0 -5px 3px -4px inset var(--____highlight-solidColor)}.MentionLink .serverName.-faded{color:var(--faintLink,#d8a070)}.mention-link-popover{max-height:20rem;max-width:70ch;overflow:hidden}.MentionsLine{word-break:break-all}.MentionsLine .mention-link:not(:first-child):before{content:" "}.MentionsLine .showMoreLess{color:var(--link);margin-left:.5em;white-space:normal}.HashtagLink{color:var(--link);display:inline-block;position:relative;white-space:normal}.RichContent blockquote{border-left:.2em solid var(--faint,hsla(240,1%,73%,.5));font-style:italic;margin:.2em 0 .2em .2em;padding-left:1em}.RichContent pre{overflow:auto}.RichContent code,.RichContent kbd,.RichContent pre,.RichContent samp,.RichContent var{font-family:var(--postCodeFont,monospace)}.RichContent p{margin:0 0 1em}.RichContent p:last-child{margin:0}.RichContent h1{font-size:1.1em;line-height:1.2em;margin:1.4em 0}.RichContent h2{font-size:1.1em;margin:1em 0}.RichContent h3{font-size:1em;margin:1.2em 0}.RichContent h4{margin:1.1em 0}.RichContent .emoji,.RichContent .img{display:inline-block}.RichContent .emoji{height:var(--emoji-size,32px);width:var(--emoji-size,32px)}.RichContent .img,.RichContent video{max-height:400px;max-width:100%;-o-object-fit:contain;object-fit:contain;vertical-align:middle}.poll .votes{display:flex;flex-direction:column;margin:0 0 .5em}.poll .poll-option{margin:.75em .5em}.poll .option-result{color:#b9b9ba;color:var(--lightText,#b9b9ba);display:flex;flex-direction:row;height:100%;position:relative}.poll .option-result-label{align-items:center;display:flex;padding:.1em .25em;word-break:break-word;z-index:1}.poll .result-percentage{flex-shrink:0;width:3.5em}.poll .result-fill{background-color:#151e2a;background-color:var(--poll,#151e2a);border-radius:10px;border-radius:var(--panelRadius,10px);color:#b9b9ba;color:var(--pollText,#b9b9ba);height:100%;left:0;position:absolute;top:0;transition:width .5s}.poll .option-vote{align-items:center;display:flex}.poll input{width:3.5em}.poll .footer{align-items:center;display:flex}.poll.loading *{cursor:progress}.poll .poll-vote-button{margin-right:.5em;padding:0 .5em}.poll .poll-checkbox{display:none}.StatusBody{display:flex;flex-direction:column}.StatusBody .emoji{--_still_image-label-scale:0.5}.StatusBody .attachments{margin-top:.5em}.StatusBody .summary,.StatusBody .text{word-wrap:break-word;font-family:var(--postFont,sans-serif);line-height:var(--post-line-height);overflow-wrap:break-word;white-space:pre-wrap;word-break:break-word}.StatusBody .summary{display:block;font-style:italic;padding-bottom:.5em}.StatusBody .text.-single-line{height:1.4em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.StatusBody .summary-wrapper{border-color:var(--border,#222);border-style:solid;border-width:0 0 1px;flex-grow:0;margin-bottom:.5em}.StatusBody .summary-wrapper.-tall{position:relative}.StatusBody .summary-wrapper.-tall .summary{max-height:2em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.StatusBody .text-wrapper{display:flex;flex-flow:column nowrap}.StatusBody .text-wrapper.-tall-status{height:220px;overflow-x:hidden;overflow-y:hidden;position:relative;z-index:1}.StatusBody .text-wrapper.-tall-status .media-body{-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;min-height:0}.StatusBody .cw-status-hider,.StatusBody .status-unhider,.StatusBody .tall-status-hider,.StatusBody .tall-subject-hider{display:inline-block;text-align:center;width:100%;word-break:break-all}.StatusBody .tall-status-hider{height:70px;line-height:110px;margin-top:150px;position:absolute;z-index:2}.StatusBody .tall-subject-hider{padding-bottom:.5em}.StatusBody .cw-status-hider,.StatusBody .status-unhider{word-break:break-all}.StatusBody .cw-status-hider svg,.StatusBody .status-unhider svg{color:inherit}.StatusBody .greentext{color:#0fa00f;color:var(--postGreentext,#0fa00f)}.StatusBody .cyantext{color:var(--postCyantext,#0095ff)}.StatusBody.-compact{--emoji-size:16px;align-items:top;flex-direction:row}.StatusBody.-compact .attachments,.StatusBody.-compact .body{max-height:3.25em}.StatusBody.-compact .body{flex:5 1 auto;mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-image:linear-gradient(180deg,#fff 2em,transparent 3em);mask-image:linear-gradient(180deg,#fff 2em,transparent 3em);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-repeat:repeat-x,repeat;mask-repeat:repeat-x,repeat;-webkit-mask-size:auto 3.5em,auto auto;mask-size:auto 3.5em,auto auto;min-width:5em;overflow:hidden;white-space:normal}.StatusBody.-compact .attachments{flex:1 1 0;height:100%;margin-left:.5em;margin-top:0;min-width:5em}.StatusBody.-compact .summary-wrapper{border:none;display:inline-block;line-height:inherit;margin:0}.StatusBody.-compact .summary-wrapper .summary:after{content:": "}.StatusBody.-compact .text-wrapper{display:inline-block}.link-preview-card{border:1px solid #222;border-color:var(--border,#222);border-radius:10px;border-radius:var(--attachmentRadius,10px);color:#b9b9ba;color:var(--text,#b9b9ba);cursor:pointer;display:flex;flex-direction:row;margin-top:.5em;overflow:hidden}.link-preview-card .card-image{flex-shrink:0;max-width:25%;width:120px}.link-preview-card .card-image img{border-radius:10px;border-radius:var(--attachmentRadius,10px);height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.link-preview-card .card-content{display:flex;flex-direction:column;margin:.5em;max-height:100%}.link-preview-card .card-host{font-size:.85em}.link-preview-card .card-description{line-height:1.2em;margin:.5em 0 0;max-height:calc(3.6em - 1px);overflow:hidden;text-overflow:ellipsis;word-break:break-word}.link-preview-card .nsfw-alert{margin:2em 0}.StatusContent{flex:1;min-width:0}.post-status-form{position:relative}.post-status-form .attachments{margin-bottom:.5em}.post-status-form .form-bottom{display:flex;height:2.5em;justify-content:space-between;padding:.5em}.post-status-form .form-bottom button{width:10em}.post-status-form .form-bottom p{display:flex;margin:.35em;padding:.35em}.post-status-form .form-bottom-left{display:flex;flex:1;margin-right:7px;max-width:10em;padding-right:7px}.post-status-form .preview-heading{display:flex;padding-left:.5em}.post-status-form .preview-toggle{cursor:pointer;flex:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.post-status-form .preview-toggle:hover{text-decoration:underline}.post-status-form .preview-toggle i,.post-status-form .preview-toggle svg{font-size:.8em;margin-left:.2em;transform:rotate(90deg)}.post-status-form .preview-container{margin-bottom:1em}.post-status-form .preview-error{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));font-style:italic}.post-status-form .preview-status{border:1px solid #222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);margin:0;padding:.5em}.post-status-form .reply-or-quote-selector{margin-bottom:.5em}.post-status-form .text-format .only-format{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .visibility-tray{align-items:baseline;display:flex;justify-content:space-between;padding-top:5px}.post-status-form .visibility-notice.edit-warning>:first-child{margin-top:0}.post-status-form .visibility-notice.edit-warning>:last-child{margin-bottom:0}.post-status-form .media-upload-icon{justify-content:left;order:1}.post-status-form .emoji-icon{justify-content:center;order:2}.post-status-form .poll-icon{justify-content:right;order:3}.post-status-form .emoji-icon,.post-status-form .media-upload-icon,.post-status-form .poll-icon{align-items:center;display:flex;flex:1;font-size:1.85em;line-height:1.1;padding:0 .1em}.post-status-form .emoji-icon.selected i,.post-status-form .emoji-icon.selected label,.post-status-form .emoji-icon.selected svg,.post-status-form .emoji-icon:hover i,.post-status-form .emoji-icon:hover label,.post-status-form .emoji-icon:hover svg,.post-status-form .media-upload-icon.selected i,.post-status-form .media-upload-icon.selected label,.post-status-form .media-upload-icon.selected svg,.post-status-form .media-upload-icon:hover i,.post-status-form .media-upload-icon:hover label,.post-status-form .media-upload-icon:hover svg,.post-status-form .poll-icon.selected i,.post-status-form .poll-icon.selected label,.post-status-form .poll-icon.selected svg,.post-status-form .poll-icon:hover i,.post-status-form .poll-icon:hover label,.post-status-form .poll-icon:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.post-status-form .emoji-icon.disabled i,.post-status-form .emoji-icon.disabled svg,.post-status-form .media-upload-icon.disabled i,.post-status-form .media-upload-icon.disabled svg,.post-status-form .poll-icon.disabled i,.post-status-form .poll-icon.disabled svg{color:#666;color:var(--btnDisabledText,#666);cursor:not-allowed}.post-status-form .emoji-icon.disabled i:hover,.post-status-form .emoji-icon.disabled svg:hover,.post-status-form .media-upload-icon.disabled i:hover,.post-status-form .media-upload-icon.disabled svg:hover,.post-status-form .poll-icon.disabled i:hover,.post-status-form .poll-icon.disabled svg:hover{color:#666;color:var(--btnDisabledText,#666)}.post-status-form .error{text-align:center}.post-status-form .media-upload-wrapper{margin-bottom:.5em;margin-right:.2em;width:18em}.post-status-form .media-upload-wrapper img,.post-status-form .media-upload-wrapper video{max-height:10em;-o-object-fit:contain;object-fit:contain}.post-status-form .media-upload-wrapper .video{max-height:10em}.post-status-form .media-upload-wrapper input{flex:1;width:100%}.post-status-form .status-input-wrapper{display:flex;flex-direction:column;position:relative;width:100%}.post-status-form .btn[disabled]{cursor:not-allowed}.post-status-form form{display:flex;flex-direction:column;margin:.6em;position:relative}.post-status-form .form-group{display:flex;flex-direction:column;line-height:1.85;padding:.25em .5em .5em}.post-status-form .form-post-body{box-sizing:content-box;height:calc(var(--post-line-height)*1em);min-height:calc(var(--post-line-height)*1em);overflow:hidden;padding-bottom:calc(var(--_padding) + var(--post-line-height)*1em);resize:none;transition:min-height .2s .1s}.post-status-form .form-post-body.scrollable-form{overflow-y:auto}.post-status-form .main-input{position:relative}.post-status-form .character-counter{bottom:0;margin:0 .5em;padding:0;position:absolute;right:0}.post-status-form .character-counter.error{color:red;color:var(--cRed,red)}@keyframes fade-in{0%{opacity:0}to{opacity:.6}}@keyframes fade-out{0%{opacity:.6}to{opacity:0}}.post-status-form .drop-indicator{align-items:center;background-color:#121a24;background-color:var(--bg,#121a24);border:2px dashed #b9b9ba;border:2px dashed var(--text,#b9b9ba);border-radius:5px;border-radius:var(--tooltipRadius,5px);color:#b9b9ba;color:var(--text,#b9b9ba);display:flex;font-size:5em;height:100%;justify-content:center;opacity:.6;position:absolute;width:100%}.remote-follow{max-width:220px}.remote-follow .remote-button{min-height:2em;width:100%}.dark-overlay:before{background:rgba(27,31,35,.5);bottom:0;content:" ";left:0;right:0;z-index:2000}.dark-overlay:before,.dialog-modal.panel{cursor:default;display:block;position:fixed;top:0}.dialog-modal.panel{background-color:#121a24;background-color:var(--bg,#121a24);left:50%;margin:15vh auto;max-height:80vh;max-width:90vw;transform:translateX(-50%);z-index:2001}.dialog-modal.panel .dialog-modal-heading .title{text-align:center}.dialog-modal.panel .dialog-modal-content{background-color:#121a24;background-color:var(--bg,#121a24);margin:0;padding:1rem;white-space:normal}.dialog-modal.panel .dialog-modal-footer{background-color:#121a24;background-color:var(--bg,#121a24);border-top:1px solid #222;border-top:1px solid var(--border,#222);display:flex;justify-content:flex-end;margin:0;padding:.5em}.dialog-modal.panel .dialog-modal-footer button{margin-left:.5rem;width:auto}.moderation-tools-popover{height:100%}.moderation-tools-popover .trigger{display:flex!important;height:100%}.moderation-tools-button i,.moderation-tools-button svg{font-size:.8em}.AccountActions .ellipsis-button{margin:-.5em 0;padding:.5em 0;text-align:center;width:2.5em}.AccountActions .ellipsis-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-note{display:flex;flex-direction:column}.user-note .heading{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-bottom:.75em}.user-note .heading .btn{min-width:95px}.user-note .heading .buttons{display:flex;flex-direction:row;justify-content:right}.user-note .heading .buttons .btn{margin-left:.5em}.user-note .note-text{align-self:stretch}.user-note .note-text.-blank{color:var(--faint,hsla(240,1%,73%,.5));font-style:italic}.user-card{position:relative;z-index:1}.user-card:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.user-card .panel-heading{align-items:stretch;background:transparent;box-shadow:none;flex-direction:column;padding:.5em 0;position:relative;text-align:center}.user-card .panel-body{word-wrap:break-word;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;position:relative}.user-card .background-image{background-color:var(--profileBg);background-size:cover;border-bottom-left-radius:calc(var(--__roundnessBottom, --panelRadius) - 1px);border-bottom-right-radius:calc(var(--__roundnessBottom, --panelRadius) - 1px);border-top-left-radius:calc(var(--__roundnessTop, --panelRadius) - 1px);border-top-right-radius:calc(var(--__roundnessTop, --panelRadius) - 1px);bottom:0;left:0;-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-size:100% 60%;mask-size:100% 60%;position:absolute;right:0;top:0;z-index:-2}.user-card .background-image.hide-bio{-webkit-mask-size:100% 40px;mask-size:100% 40px}.user-card-bio{display:block;line-height:1.3;margin:0;padding:1em;text-align:center}.user-card-bio a{color:#d8a070;color:var(--postLink,#d8a070)}.user-card-bio img{max-height:400px;max-width:100%;-o-object-fit:contain;object-fit:contain;vertical-align:middle}.user-card.-rounded-t{--__roundnessTop:var(--panelRadius);--__roundnessBottom:0;border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px);border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px)}.user-card.-rounded{--__roundnessTop:var(--panelRadius);--__roundnessBottom:var(--panelRadius);border-radius:10px;border-radius:var(--panelRadius,10px)}.user-card.-popover{--__roundnessTop:var(--tooltipRadius);--__roundnessBottom:var(--tooltipRadius);border-radius:5px;border-radius:var(--tooltipRadius,5px)}.user-card.-bordered{border:1px solid #222;border-color:var(--border,#222)}.user-info{padding:0 26px}.user-info,.user-info a{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info a:hover{color:var(--icon)}.user-info .container{align-items:flex-start;display:flex;max-height:56px;min-width:0;padding:16px 0 6px}.user-info .container>*{min-width:0}.user-info .container>a{display:flex;vertical-align:middle}.user-info .container .Avatar{--_avatarShadowBox:var(--avatarShadow);--_avatarShadowFilter:var(--avatarShadowFilter);--_avatarShadowInset:var(--avatarShadowInset);height:56px;-o-object-fit:cover;object-fit:cover;width:56px}.user-info-avatar{cursor:pointer;position:relative}.user-info-avatar.-overlay{align-items:center;background-color:rgba(0,0,0,.3);border-radius:4px;border-radius:var(--avatarRadius,4px);bottom:0;display:flex;justify-content:center;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s ease}.user-info-avatar.-overlay svg{color:#fff}.user-info-avatar:hover .user-info-avatar.-overlay{opacity:1}.user-info .edit-profile-button,.user-info .external-link-button{cursor:pointer;margin:-.5em 0;padding:.5em 0;text-align:center;width:2.5em}.user-info .edit-profile-button:not(:hover) .icon,.user-info .external-link-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info .bottom-line{align-items:baseline;font-size:1.1em;font-weight:light}.user-info .bottom-line .lock-icon{margin-left:.5em}.user-info .bottom-line .user-screen-name{flex:0 1 auto;min-width:1px;overflow:hidden;text-overflow:ellipsis}.user-info .bottom-line .dailyAvg{color:#b9b9ba;color:var(--text,#b9b9ba);flex:0 0 auto;font-size:.7em;margin-left:1em;min-width:1px}.user-info .bottom-line .user-role{background-color:#182230;background-color:var(--alertNeutral,#182230);color:#b9b9ba;color:var(--alertNeutralText,#b9b9ba);flex:none}.user-info .user-summary{--emoji-size:1.7em;display:block;flex:1 1 0;line-height:2em;margin-left:.6em;text-align:left;text-overflow:ellipsis;white-space:nowrap;z-index:1}.user-info .user-summary .bottom-line,.user-info .user-summary .top-line{display:flex}.user-info .user-name{flex:1 1 auto;font-size:1.1em;margin-right:1em;overflow:hidden;text-overflow:ellipsis}.user-info .user-meta{align-items:baseline;display:flex;flex-wrap:wrap;line-height:22px;margin-bottom:.15em}.user-info .user-meta .following{flex:1 0 auto;margin:0 0 .25em;text-align:left}.user-info .user-meta .highlighter{align-self:start;display:flex;flex:0 1 auto;flex-wrap:wrap;margin-right:-.5em}.user-info .user-meta .highlighter .userHighlightCl{flex:1 0 auto;padding:2px 10px}.user-info .user-meta .highlighter .userHighlightSel{flex:1 0 auto;padding-bottom:0;padding-top:0}.user-info .user-meta .highlighter .userHighlightText{flex:1 0 auto;width:70px}.user-info .user-meta .highlighter .userHighlightCl,.user-info .user-meta .highlighter .userHighlightSel,.user-info .user-meta .highlighter .userHighlightText{margin-bottom:.25em;margin-right:.5em;vertical-align:top}.user-info .user-interactions{display:flex;flex-flow:row wrap;margin-right:-.75em;position:relative}.user-info .user-interactions>*{margin:0 .75em .6em 0;min-width:95px;white-space:nowrap}.user-info .user-interactions button{margin:0}.user-info .user-note{margin:0 .75em .6em 0}.sidebar .edit-profile-button{display:none}.user-counts{color:#b9b9ba;color:var(--lightText,#b9b9ba);display:flex;flex-wrap:wrap;justify-content:space-between;line-height:16px;padding:.5em 1.5em 0;text-align:center}.user-count{flex:1 0 auto;margin:0 .5em;padding:.5em 0}.user-count h5{font-size:1em;font-weight:bolder;margin:0 0 .25em}.user-count a{text-decoration:none}.mute-expiry{display:flex;flex-direction:row}.user-panel .signed-in{overflow:visible;z-index:10}.NavigationEntry{align-items:baseline;box-sizing:border-box;color:#d8a070;color:var(--link,#d8a070);display:flex;height:3.5em;line-height:3.5em;padding:0 1em;width:100%}.NavigationEntry .timelines-chevron{margin-right:0}.NavigationEntry .main-link{flex:1}.NavigationEntry .menu-icon{margin-right:.8em}.NavigationEntry .extra-button{text-align:center;width:3em}.NavigationEntry .extra-button:last-child{margin-right:-.8em}.NavigationEntry:hover{--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);color:#d8a070;color:var(--selectedMenuText,#d8a070)}.NavigationEntry:hover .menu-icon{--icon:var(--text,$fallback--icon)}.NavigationEntry.-active{--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba);font-weight:bolder}.NavigationEntry.-active .menu-icon{--icon:var(--text,$fallback--icon)}.NavigationEntry.-active:hover{text-decoration:underline}.NavigationPins{display:flex;flex-wrap:wrap;height:100%;overflow:hidden}.NavigationPins .alert-dot{background-color:red;background-color:var(--badgeNotification,red);border-radius:100%;height:.5em;position:absolute;right:calc(50% - .75em);top:calc(50% - .5em);width:.5em}.NavigationPins .pinned-item{box-sizing:border-box;flex:1 0 3em;height:100%;min-width:2em;overflow:visible;position:relative;text-align:center}.NavigationPins .pinned-item .iconLetter,.NavigationPins .pinned-item .svg-inline--fa{margin:0}.NavigationPins .pinned-item.router-link-active{border-bottom:4px solid;color:#b9b9ba;color:var(--panelText,#b9b9ba)}.NavigationPins .pinned-item.router-link-active .iconLetter,.NavigationPins .pinned-item.router-link-active .svg-inline--fa{color:inherit}.NavPanel .panel{box-shadow:var(--panelShadow);overflow:hidden}.NavPanel ul{list-style:none;margin:0;padding:0}.NavPanel li{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);position:relative}.NavPanel>li:first-child .menu-item{border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px);border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px)}.NavPanel>li:last-child .menu-item{border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px);border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px)}.NavPanel li:last-child{border:none}.NavPanel .navigation-chevron{margin-right:.8em}.NavPanel .navigation-chevron,.NavPanel .timelines-chevron{font-size:1.1em;margin-left:.8em}.NavPanel .timelines-background{background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0 0 0 .6em}.NavPanel .timelines{background-color:#121a24;background-color:var(--bg,#121a24)}.NavPanel .nav-panel-heading{--panel-heading-height-padding:0px}.features-panel li{line-height:24px}.who-to-follow *{vertical-align:middle}.who-to-follow img{height:32px;width:32px}.who-to-follow{margin:0;padding:0 1em}.who-to-follow-items{margin:1em 0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.who-to-follow-more{margin:1em 0;padding:0;text-align:center}.floating-shout{bottom:.5em;max-width:25em;position:fixed;z-index:var(--ZI_popovers)}.floating-shout.-left{left:.5em}.floating-shout:not(.-left){right:.5em}.shout-panel .shout-heading{cursor:pointer}.shout-panel .shout-heading .icon{color:#b9b9ba;color:var(--panelText,#b9b9ba);margin-right:.5em}.shout-panel .shout-heading .title{align-items:center;display:flex;justify-content:space-between}.shout-panel .shout-window{max-height:20em;overflow-x:hidden;overflow-y:auto}.shout-panel .shout-window-container{height:100%}.shout-panel .shout-message{display:flex;padding:.2em .5em}.shout-panel .shout-avatar img{border-radius:4px;border-radius:var(--avatarRadius,4px);height:24px;margin-right:.5em;margin-top:.25em;width:24px}.shout-panel .shout-input{display:flex}.shout-panel .shout-input textarea{flex:1;margin:.6em;min-height:3.5em;resize:none}.shout-panel .shout-panel .title{display:flex;justify-content:space-between}@keyframes media-fadein{0%{opacity:0}to{opacity:1}}.media-modal-view .modal-image-container{max-height:100%;max-width:100%;overflow:hidden}.media-modal-view .modal-image-container,.media-modal-view .modal-image-container-inner{align-items:center;display:flex;flex-direction:column;flex-grow:1;height:100%;justify-content:center;width:100%}.media-modal-view .counter,.media-modal-view .description{color:#fff;margin-top:1em;padding:.2em 2em;text-shadow:0 0 10px #000,0 0 10px #000}.media-modal-view .description{flex:0 0 auto;max-height:9.5em;max-width:500px;min-height:1em;overflow-y:auto;word-break:break-all}.media-modal-view .modal-image{animation:media-fadein .1s cubic-bezier(.7,0,1,.6);image-orientation:from-image;max-height:100%;max-width:100%}.media-modal-view .modal-image.loading{opacity:.5}.media-modal-view .loading-spinner{align-items:center;display:flex;height:100%;justify-content:center;pointer-events:none;position:absolute;width:100%}.media-modal-view .loading-spinner svg{color:#fff}.media-modal-view .modal-view-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;box-shadow:none;cursor:pointer;height:3em;opacity:0;overflow:visible;padding:0;transition:opacity 333ms cubic-bezier(.4,0,.22,1);width:3em}.media-modal-view .modal-view-button .button-icon{background-color:rgba(0,0,0,.3);color:#fff;font-size:1rem;height:3em;line-height:3em;position:absolute;text-align:center;width:3em}.media-modal-view .modal-view-button-arrow{display:block;height:3em;margin-top:1.5em;position:absolute;top:50%;width:3em}.media-modal-view .modal-view-button-arrow .arrow-icon{background-color:rgba(0,0,0,.3);color:#fff;line-height:3em;position:absolute;text-align:center;top:0}.media-modal-view .modal-view-button-arrow--prev{left:0}.media-modal-view .modal-view-button-arrow--prev .arrow-icon{left:.5em}.media-modal-view .modal-view-button-arrow--next{right:0}.media-modal-view .modal-view-button-arrow--next .arrow-icon{right:.5em}.media-modal-view .modal-view-button-hide{position:absolute;right:0;top:0}.media-modal-view .modal-view-button-hide .button-icon{right:.5em;top:.5em}.modal-view.media-modal-view{flex-direction:column;overflow:hidden;z-index:var(--ZI_media_modal)}.modal-view.media-modal-view .modal-view-button-arrow,.modal-view.media-modal-view .modal-view-button-hide{opacity:.75}.modal-view.media-modal-view .modal-view-button-arrow:focus,.modal-view.media-modal-view .modal-view-button-arrow:hover,.modal-view.media-modal-view .modal-view-button-hide:focus,.modal-view.media-modal-view .modal-view-button-hide:hover{box-shadow:none;outline:none}.modal-view.media-modal-view .modal-view-button-arrow:hover,.modal-view.media-modal-view .modal-view-button-hide:hover{opacity:1}.side-drawer-container{align-items:stretch;display:flex;height:100%;left:0;position:fixed;top:0;transition-duration:0s;transition-property:transform;width:100%;z-index:var(--ZI_navbar)}.side-drawer-container-open{transform:translate(0)}.side-drawer-container-closed{transform:translate(-100%);transition-delay:.35s}.side-drawer-darken{background-color:rgba(0,0,0,.5);height:100vh;left:0;position:fixed;top:0;transition:.35s;transition-property:background-color;width:100vw;z-index:-1}.side-drawer-darken-closed{background-color:transparent}.side-drawer-click-outside{flex:1 1 100%}.side-drawer{--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon);background-color:#121a24;background-color:var(--popover,#121a24);box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);color:#d8a070;color:var(--popoverText,#d8a070);flex:0 0 80%;margin:0 0 0 -100px;max-width:20em;overflow-x:hidden;padding:0 0 1em 100px;transition:.35s;transition-property:transform;transition-timing-function:cubic-bezier(0,1,.5,1);width:80%}.side-drawer .badge{margin-left:10px}.side-drawer-logo-wrapper{align-items:center;display:flex;padding:.85em}.side-drawer-logo-wrapper img{flex:none;height:50px;margin-right:.85em}.side-drawer-logo-wrapper span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-drawer-click-outside-closed{flex:0 0 0}.side-drawer-closed{transform:translate(-100%)}.side-drawer-heading{align-items:stretch;background:transparent;display:flex;flex-direction:column;margin:0;padding:0}.side-drawer ul{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);list-style:none;margin:0;padding:0}.side-drawer ul:last-child{border:0}.side-drawer li{padding:0}.side-drawer li a,.side-drawer li button{box-sizing:border-box;display:block;height:3em;line-height:3em;padding:0 .7em}.side-drawer li a:hover,.side-drawer li button:hover{--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon);background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#b9b9ba;color:var(--selectedMenuPopoverText,#b9b9ba)}.MobilePostButton.button-default{align-items:center;background-color:#182230;background-color:var(--btn,#182230);border-radius:100%;bottom:1.5em;box-shadow:0 2px 2px rgba(0,0,0,.3),0 4px 6px rgba(0,0,0,.3);display:flex;height:5em;justify-content:center;position:fixed;right:1.5em;transition:transform .35s;transition-timing-function:cubic-bezier(0,1,.5,1);width:5em;z-index:10}.MobilePostButton.hidden{transform:translateY(150%)}.MobilePostButton svg{color:#b9b9ba;color:var(--text,#b9b9ba);font-size:1.5em}@media (min-width:801px){.new-status-button:not(.always-show){display:none}}.ReplyButton{display:flex}.ReplyButton>:first-child{margin:-10px -8px -10px -10px;padding:10px}.ReplyButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ReplyButton .interactive.-active .svg-inline--fa,.ReplyButton .interactive:hover .svg-inline--fa{color:#0095ff;color:var(--cBlue,#0095ff)}.ReplyButton .interactive .focus-marker{visibility:hidden}.ReplyButton .interactive:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.ReplyButton .interactive:focus .focus-marker,.ReplyButton .interactive:hover .focus-marker{visibility:visible}.ReplyButton .interactive:focus-visible .focus-marker{visibility:visible}.FavoriteButton{display:flex}.FavoriteButton>:first-child{margin:-10px -8px -10px -10px;padding:10px}.FavoriteButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.FavoriteButton .interactive .svg-inline--fa{animation-duration:.6s}.FavoriteButton .interactive.-favorited .svg-inline--fa,.FavoriteButton .interactive:hover .svg-inline--fa{color:orange;color:var(--cOrange,orange)}.FavoriteButton .interactive .focus-marker{visibility:hidden}.FavoriteButton .interactive .active-marker{visibility:visible}.FavoriteButton .interactive:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.FavoriteButton .interactive:focus:not(:focus-visible,:hover) .active-marker{visibility:visible}.FavoriteButton .interactive:focus .focus-marker,.FavoriteButton .interactive:hover .focus-marker{visibility:visible}.FavoriteButton .interactive:focus .active-marker,.FavoriteButton .interactive:hover .active-marker{visibility:hidden}.FavoriteButton .interactive:focus-visible .focus-marker{visibility:visible}.FavoriteButton .interactive:focus-visible .active-marker{visibility:hidden}.ReactButton .reaction-picker-filter{display:flex;padding:.5em}.ReactButton .reaction-picker-filter input{flex:1}.ReactButton .reaction-picker-divider{background-color:var(--border,#222);height:1px;margin:.5em;width:100%}.ReactButton .reaction-picker{align-content:flex-start;display:flex;flex-wrap:wrap;font-size:1.5em;height:9em;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;overflow-y:scroll;padding:.5em;text-align:center;transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:10em}.ReactButton .reaction-picker .emoji-button{align-content:center;cursor:pointer;flex-basis:20%;line-height:1.5}.ReactButton .reaction-picker .emoji-button:hover{transform:scale(1.25)}.ReactButton .popover-trigger{margin:-10px;padding:10px}.ReactButton .popover-trigger:hover .svg-inline--fa{color:#b9b9ba;color:var(--text,#b9b9ba)}.ReactButton .popover-trigger .focus-marker{visibility:hidden}.ReactButton .popover-trigger:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.ReactButton .popover-trigger:focus .focus-marker,.ReactButton .popover-trigger:hover .focus-marker{visibility:visible}.ReactButton .popover-trigger:focus-visible .focus-marker{visibility:visible}.RetweetButton{display:flex}.RetweetButton>:first-child{margin:-10px -8px -10px -10px;padding:10px}.RetweetButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.RetweetButton .interactive .svg-inline--fa{animation-duration:.6s}.RetweetButton .interactive.-repeated .svg-inline--fa,.RetweetButton .interactive:hover .svg-inline--fa{color:#0fa00f;color:var(--cGreen,#0fa00f)}.RetweetButton .interactive .focus-marker{visibility:hidden}.RetweetButton .interactive .active-marker{visibility:visible}.RetweetButton .interactive:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.RetweetButton .interactive:focus:not(:focus-visible,:hover) .active-marker{visibility:visible}.RetweetButton .interactive:focus .focus-marker,.RetweetButton .interactive:hover .focus-marker{visibility:visible}.RetweetButton .interactive:focus .active-marker,.RetweetButton .interactive:hover .active-marker{visibility:hidden}.RetweetButton .interactive:focus-visible .focus-marker{visibility:visible}.RetweetButton .interactive:focus-visible .active-marker{visibility:hidden}.ExtraButtons .popover-trigger{margin:-10px;padding:10px;position:static}.ExtraButtons .popover-trigger:hover .svg-inline--fa{color:#b9b9ba;color:var(--text,#b9b9ba)}.ExtraButtons .popover-trigger-button{width:auto}.ExtraButtons .popover-trigger-button .focus-marker{visibility:hidden}.ExtraButtons .popover-trigger-button:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.ExtraButtons .popover-trigger-button:focus .focus-marker,.ExtraButtons .popover-trigger-button:hover .focus-marker{visibility:visible}.ExtraButtons .popover-trigger-button:focus-visible .focus-marker{visibility:visible}.avatars{display:flex;flex-wrap:wrap;height:24px;margin:0;padding:0}.avatars .avatars-item{margin:0 0 5px 5px}.avatars .avatars-item:first-child{padding-left:5px}.avatars .avatars-item .avatar-small{border-radius:10px;border-radius:var(--avatarAltRadius,10px);height:24px;width:24px}.status-popover.popover{border-color:#222;border-color:var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);border-style:solid;border-width:1px;font-size:1rem;max-width:95%;min-width:15em}.status-popover.popover .Status.Status{border:none}.status-popover.popover .status-preview-no-content{padding:1em;text-align:center}.status-popover.popover .status-preview-no-content i{font-size:2em}.user-list-popover{--emoji-size:16px;padding:.5em}.user-list-popover .user-list-row{display:flex;flex-direction:row;padding:.25em}.user-list-popover .user-list-row .user-list-names{display:flex;flex-direction:column;margin-left:.5em;min-width:5em}.user-list-popover .user-list-row .user-list-names img{height:1em;width:1em}.user-list-popover .user-list-row .user-list-screen-name{font-size:.65em}.EmojiReactions{--emoji-size:calc(1.25em*var(--emojiReactionsScale, 1));display:flex;flex-wrap:wrap;margin-top:.25em}.EmojiReactions .emoji-reaction-container{align-items:stretch;display:flex;margin-right:.5em;margin-top:.5em}.EmojiReactions .emoji-reaction-container .emoji-reaction-popover{padding:0}.EmojiReactions .emoji-reaction-container .emoji-reaction-popover .emoji-reaction-count-button{align-items:center;background-color:var(--btn);border-bottom-left-radius:0;border-top-left-radius:0;box-sizing:border-box;color:#b9b9ba;color:var(--btnText,#b9b9ba);display:inline-flex;height:100%;justify-content:center;margin:0;min-width:2em}.EmojiReactions .emoji-reaction-container .emoji-reaction-popover .emoji-reaction-count-button.-picked-reaction{border:1px solid var(--accent,#d8a070);margin-right:-1px}.EmojiReactions .emoji-reaction{align-items:center;border-bottom-right-radius:0;border-top-right-radius:0;box-sizing:border-box;display:flex;justify-content:center;margin:0;padding-left:.5em}.EmojiReactions .emoji-reaction .reaction-emoji{align-items:center;display:flex;height:var(--emoji-size);justify-content:center;line-height:var(--emoji-size);margin-right:.25em;width:var(--emoji-size)}.EmojiReactions .emoji-reaction .reaction-emoji-content{font-size:calc(var(--emoji-size)*.8);height:auto;line-height:inherit;margin:0;max-height:100%;max-width:100%;overflow:hidden;width:auto}.EmojiReactions .emoji-reaction:focus{outline:none}.EmojiReactions .emoji-reaction .svg-inline--fa{color:#b9b9ba;color:var(--btnText,#b9b9ba)}.EmojiReactions .emoji-reaction.-picked-reaction{border:1px solid var(--accent,#d8a070);margin-left:-1px;margin-right:-1px}.EmojiReactions .emoji-reaction.-picked-reaction .svg-inline--fa{color:#d8a070;color:var(--accent,#d8a070)}.EmojiReactions .emoji-reaction .focus-marker{visibility:hidden}.EmojiReactions .emoji-reaction .active-marker{visibility:visible}.EmojiReactions .emoji-reaction:focus:not(:focus-visible,:hover) .focus-marker{visibility:hidden}.EmojiReactions .emoji-reaction:focus:not(:focus-visible,:hover) .active-marker{visibility:visible}.EmojiReactions .emoji-reaction:focus .svg-inline--fa,.EmojiReactions .emoji-reaction:hover .svg-inline--fa{color:#d8a070;color:var(--accent,#d8a070)}.EmojiReactions .emoji-reaction:focus .focus-marker,.EmojiReactions .emoji-reaction:hover .focus-marker{visibility:visible}.EmojiReactions .emoji-reaction:focus .active-marker,.EmojiReactions .emoji-reaction:hover .active-marker{visibility:hidden}.EmojiReactions .emoji-reaction:focus-visible .svg-inline--fa{color:#d8a070;color:var(--accent,#d8a070)}.EmojiReactions .emoji-reaction:focus-visible .focus-marker{visibility:visible}.EmojiReactions .emoji-reaction:focus-visible .active-marker{visibility:hidden}.EmojiReactions .emoji-reaction-expand{align-items:center;display:flex;justify-content:center;margin-right:.5em;margin-top:.5em;padding:0 .5em}.EmojiReactions .emoji-reaction-expand:hover{text-decoration:underline}.Status{word-wrap:break-word;min-width:0;white-space:normal;word-break:break-word}.Status:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.Status.-focused{--lightText:var(--selectedPostLightText,$fallback--light);--faint:var(--selectedPostFaintText,$fallback--faint);--faintLink:var(--selectedPostFaintLink,$fallback--faint);--postLink:var(--selectedPostPostLink,$fallback--faint);--postFaintLink:var(--selectedPostFaintPostLink,$fallback--faint);--icon:var(--selectedPostIcon,$fallback--icon);background-color:#151e2a;background-color:var(--selectedPost,#151e2a);color:#b9b9ba;color:var(--selectedPostText,#b9b9ba)}.Status .gravestone{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));display:flex;padding:var(--status-margin,.75em)}.Status .gravestone .deleted-text{align-items:center;margin:.5em 0}.Status .status-container{display:flex;padding:var(--status-margin,.75em)}.Status .status-container>*{min-width:0}.Status .status-container.-repeat{padding-top:0}.Status .pin{align-items:center;display:flex;justify-content:flex-end;padding:var(--status-margin,.75em) var(--status-margin,.75em) 0}._misclick-prevention .Status{pointer-events:none}._misclick-prevention .Status .attachments{cursor:auto;pointer-events:auto}.Status .left-side{margin-right:var(--status-margin,.75em)}.Status .right-side{flex:1;min-width:0}.Status .usercard{margin-bottom:var(--status-margin,.75em)}.Status .status-username{--_still_image-label-scale:0.25;--emoji-size:14px;flex-shrink:1;font-weight:700;margin-right:.4em;max-width:85%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .status-favicon{height:18px;margin-right:.4em;width:18px}.Status .status-heading{margin-bottom:.5em}.Status .heading-name-row{display:flex;justify-content:space-between;line-height:1.3}.Status .heading-name-row a{display:inline-block;word-break:break-all}.Status .account-name{flex:1 1 0;margin-right:.4em;min-width:1.6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .heading-left{display:flex;min-width:0}.Status .heading-right{display:flex;flex-shrink:0}.Status .heading-right .button-unstyled{margin:-5px;padding:5px}.Status .heading-right .button-unstyled:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.Status .heading-right .svg-inline--fa{margin-left:.25em}.Status .glued-label{display:inline-flex;white-space:nowrap}.Status .timeago{margin-right:.2em}.Status .heading-edited-row,.Status .heading-reply-row{align-content:baseline;align-items:stretch;font-size:.85em;line-height:130%;margin-top:.2em;max-width:100%;position:relative}.Status .mentions,.Status .reply-to-no-popover,.Status .reply-to-popover{flex-shrink:0;margin-right:.4em;min-width:0}.Status .reply-glued-label{margin-right:.5em}.Status .reply-to-popover .reply-to:hover:before{border-bottom:1px solid var(--faint);bottom:0;content:"";display:block;pointer-events:none;position:absolute;width:100%}.Status .reply-to-popover .faint-link:hover{text-decoration:none}.Status .reply-to-popover.-strikethrough .reply-to:after{border-bottom:1px solid var(--faint);content:"";display:block;pointer-events:none;position:absolute;top:50%;width:100%}.Status .mentions,.Status .reply-to{position:relative;white-space:nowrap}.Status .mentions-text,.Status .reply-to-text{color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .mentions-line{display:inline}.Status .replies{display:flex;flex-wrap:wrap;font-size:.85em;line-height:1.3;margin-top:.25em}.Status .replies>*{margin-right:.4em}.Status .reply-link{height:17px}.Status .repeat-info{padding:.4em var(--status-margin,.75em)}.Status .repeat-info .repeat-icon{color:#0fa00f;color:var(--cGreen,#0fa00f)}.Status .repeater-avatar{border-radius:var(--avatarAltRadius,10px);height:20px;margin-left:28px;width:20px}.Status .repeater-name{margin-right:0;text-overflow:ellipsis}.Status .repeater-name .emoji{height:14px;-o-object-fit:contain;object-fit:contain;vertical-align:middle;width:14px}.Status .status-fadein{animation-duration:.4s;animation-name:fadein}@keyframes fadein{0%{opacity:0}to{opacity:1}}.Status .status-actions{display:flex;margin-top:var(--status-margin,.75em);position:relative;width:100%}.Status .status-actions>*{flex:1;max-width:4em}.Status .muted{display:flex;flex-wrap:nowrap;height:1.2em;line-height:1.2em;overflow:hidden;padding:.25em .6em;text-overflow:ellipsis}.Status .muted .mute-thread,.Status .muted .mute-words,.Status .muted .status-username{word-wrap:normal;white-space:nowrap;word-break:normal}.Status .muted .mute-words,.Status .muted .status-username{overflow:hidden;text-overflow:ellipsis}.Status .muted .status-username{flex:0 1 auto;font-size:smaller;font-weight:400;margin-right:.2em}.Status .muted .mute-thread{flex:0 0 auto}.Status .muted .mute-words{flex:1 0 5em;margin-left:.2em}.Status .muted .mute-words:before{content:" "}.Status .muted .unmute{display:block;flex:0 0 auto;margin-left:auto}.Status .reply-form{padding-bottom:0;padding-top:0}.Status .reply-body{flex:1}.Status .favs-repeated-users{margin-top:var(--status-margin,.75em)}.Status .stats{display:flex;line-height:1em;width:100%}.Status .avatar-row{align-items:center;display:flex;flex:1;overflow:hidden;position:relative}.Status .avatar-row:before{background-color:var(--faint,hsla(240,1%,73%,.5));content:"";height:100%;left:0;position:absolute;width:1px}.Status .stat-count{margin-right:var(--status-margin,.75em);-webkit-user-select:none;-moz-user-select:none;user-select:none}.Status .stat-count .stat-title{color:var(--faint,hsla(240,1%,73%,.5));font-size:.85em;position:relative;text-transform:uppercase}.Status .stat-count .stat-number{font-size:1.1em;font-weight:bolder;line-height:1em}.Status .stat-count:hover .stat-title{text-decoration:underline}@media (max-width:800px){.Status .repeater-avatar{margin-left:20px}.Status .post-avatar{height:40px;width:40px}.Status .post-avatar.-compact{height:32px;width:32px}}.Status .quoted-status{border:1px solid var(--border,#222);border-radius:var(--attachmentRadius,10px);margin-top:.5em}.Status .quoted-status.-unavailable-prompt{padding:.5em}.Status .display-quoted-status-button{margin:.5em}.Status .display-quoted-status-button-icon{color:inherit}.Report .report-content,.Report .report-state{margin:.5em 0 1em}.Report .reported-status{border:1px solid hsla(240,1%,73%,.5);border-color:var(--faint,hsla(240,1%,73%,.5));border-radius:4px;border-radius:var(--inputRadius,4px);color:#b9b9ba;color:var(--text,#b9b9ba);display:block;margin:.5em 0;padding:.5em}.Report .reported-status .status-content{pointer-events:none}.Report .reported-status .reported-status-heading{display:flex;justify-content:space-between;margin-bottom:.2em;width:100%}.Report .reported-status .reported-status-name{font-weight:700}.Report .note{margin-bottom:.5em;width:100%}.Notification{word-wrap:break-word;--emoji-size:14px;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);word-break:break-word}.Notification:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.Notification.-muted{display:flex;flex-wrap:nowrap;height:1.2em;line-height:1.2em;overflow:hidden;padding:.25em .6em;text-overflow:ellipsis}.Notification.-muted .mute-thread,.Notification.-muted .mute-words,.Notification.-muted .status-username{word-wrap:normal;white-space:nowrap;word-break:normal}.Notification.-muted .mute-words,.Notification.-muted .status-username{overflow:hidden;text-overflow:ellipsis}.Notification.-muted .status-username{flex:0 1 auto;font-size:smaller;font-weight:400;margin-right:.2em}.Notification.-muted .mute-thread{flex:0 0 auto}.Notification.-muted .mute-words{flex:1 0 5em;margin-left:.2em}.Notification.-muted .mute-words:before{content:" "}.Notification.-muted .unmute{display:block;flex:0 0 auto;margin-left:auto}.Notification .type-icon{margin:0 .1em}.Notification.-type--repeat .type-icon{color:#0fa00f;color:var(--cGreen,#0fa00f)}.Notification.-type--follow .type-icon,.Notification.-type--follow-request .type-icon{color:#0095ff;color:var(--cBlue,#0095ff)}.Notification.-type--like .type-icon{color:orange;color:var(--cOrange,orange)}.Notification.-type--move .type-icon{color:#0095ff;color:var(--cBlue,#0095ff)}.Notifications:not(.minimal){padding-bottom:15em}.Notifications .loadmore-error{color:#b9b9ba;color:var(--text,#b9b9ba)}.Notifications .notification{position:relative}.Notifications .notification .notification-overlay{bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0}.Notifications .notification.unseen .notification-overlay{background-image:linear-gradient(135deg,var(--badgeNotification,red) 4px,transparent 10px)}.notification{box-sizing:border-box}.notification:hover .animated.Avatar canvas{display:none}.notification:hover .animated.Avatar img{visibility:visible}.notification:last-child .Notification{border-bottom:none}.notification .non-mention{display:flex;flex:1;flex-wrap:nowrap;min-width:0;padding:.6em}.notification .non-mention .avatar-container{height:32px;width:32px}.notification .non-mention .faint{--link:var(--faintLink);--text:var(--faint)}.notification .follow-request-accept:hover{color:#b9b9ba;color:var(--text,#b9b9ba)}.notification .follow-request-reject:hover{color:red;color:var(--cRed,red)}.notification .follow-text,.notification .move-text{display:flex;justify-content:space-between;overflow-wrap:break-word;padding:.5em 0}.notification .follow-text .follow-name,.notification .move-text .follow-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification .Status{flex:1}.notification time{white-space:nowrap}.notification .notification-right{flex:1;min-width:0;padding-left:.8em}.notification .notification-right .timeago{min-width:3em;text-align:right}.notification .notification-right .timeago-link{margin-right:.2em}.notification .notification-right .expand-icon .svg-inline--fa{margin-left:.25em}.notification .emoji-reaction-emoji{font-size:1.3em;height:1.25em;max-width:1.25em;width:auto}.notification .emoji-reaction-emoji-image{-o-object-fit:contain;object-fit:contain;vertical-align:middle}.notification .notification-details{word-wrap:break-word;display:flex;flex:1 1 0;flex-wrap:nowrap;justify-content:space-between;line-height:var(--post-line-height);min-width:0;overflow:hidden;position:relative;width:100%}.notification .notification-details .name-and-action{flex:1;overflow:hidden;text-overflow:ellipsis}.notification .notification-details .username{font-weight:bolder;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.notification .notification-details .timeago{margin-right:.2em}.notification .notification-details .status-content{margin:0;max-height:300px}.notification .notification-details h1{font-size:1em;line-height:1.5;margin:0 0 .3em;padding:0;word-break:break-all}.notification .notification-details h1 small{font-weight:lighter}.notification .notification-details p{margin:0 0 .3em}.MobileNav{z-index:var(--ZI_navbar)}.MobileNav .mobile-nav{box-sizing:border-box;display:grid;grid-template-columns:2fr auto;grid-template-rows:50px;line-height:var(--navbar-height);width:100%}.MobileNav .mobile-nav a{color:var(--topBarLink,#d8a070)}.MobileNav .mobile-inner-nav{align-items:center;display:flex;width:100%}.MobileNav .mobile-nav-button{cursor:pointer;display:inline-block;padding:0 1em;position:relative;text-align:center}.MobileNav .site-name{display:inline-block;padding:0 .3em}.MobileNav .item{display:flex}.MobileNav .alert-dot{background-color:red;background-color:var(--badgeNotification,red);border-radius:100%;height:8px;left:calc(50% - 4px);margin-left:6px;margin-top:-6px;position:absolute;top:calc(50% - 4px);width:8px}.MobileNav .mobile-notifications-drawer{-webkit-overflow-scrolling:touch;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);height:100vh;left:0;overflow-x:hidden;position:fixed;top:0;transform:translateX(0);transition-duration:.25s;transition-property:transform;width:100%;z-index:var(--ZI_navbar)}.MobileNav .mobile-notifications-drawer.-closed{box-shadow:none;transform:translateX(100%)}.MobileNav .mobile-notifications-header{align-items:center;background-color:#182230;background-color:var(--topBar,#182230);box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow);color:var(--topBarText);display:flex;height:50px;justify-content:space-between;line-height:50px;position:absolute;width:100%;z-index:calc(var(--ZI_navbar) + 100)}.MobileNav .mobile-notifications-header .spacer{flex:1}.MobileNav .mobile-notifications-header .title{font-size:1.3em;margin-left:.6em}.MobileNav .pins{flex:1}.MobileNav .pins .pinned-item{flex-grow:1}.MobileNav .mobile-notifications{background-color:#121a24;background-color:var(--bg,#121a24);color:#b9b9ba;color:var(--text,#b9b9ba);height:calc(100vh - var(--navbar-height));margin-top:50px;overflow-x:hidden;overflow-y:scroll;width:100vw}.MobileNav .mobile-notifications .notifications{border-radius:0;box-shadow:none;padding:0}.MobileNav .mobile-notifications .notifications .panel{border-radius:0;box-shadow:none;margin:0}.MobileNav .mobile-notifications .notifications .panel:after{border-radius:0}.MobileNav .mobile-notifications .notifications .panel .panel-heading{border-radius:0;box-shadow:none}.MobileNav .confirm-modal.dark-overlay:before{z-index:3000}.MobileNav .confirm-modal.dark-overlay .dialog-modal.panel{z-index:3001}.SearchBar{align-items:baseline;display:inline-flex;justify-content:flex-end;vertical-align:baseline}.SearchBar.-expanded{width:100%}.SearchBar .search-bar-input,.SearchBar .search-button{height:29px}.SearchBar .search-bar-input{flex:1 0 auto}.SearchBar .cancel-search{height:50px}.SearchBar .cancel-icon{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}.DesktopNav{width:100%;z-index:var(--ZI_navbar)}.DesktopNav input{color:var(--inputTopbarText,var(--inputText))}.DesktopNav a{color:var(--topBarLink,#d8a070)}.DesktopNav .inner-nav{box-sizing:border-box;display:grid;grid-template-areas:"sitename logo actions";grid-template-columns:2fr auto 2fr;grid-template-rows:var(--navbar-height);margin:auto;max-width:980px;padding:0 1.2em}.DesktopNav.-column-stretch .inner-nav{--miniColumn:25rem;--maxiColumn:45rem;--columnGap:1em;max-width:calc(var(--sidebarColumnWidth, var(--miniColumn)) + var(--contentColumnWidth, var(--maxiColumn)) + var(--columnGap))}.DesktopNav.-logoLeft .inner-nav{grid-template-areas:"logo sitename actions";grid-template-columns:auto 2fr 2fr}.DesktopNav.-column-stretch.-wide .inner-nav{max-width:calc(var(--sidebarColumnWidth, var(--miniColumn)) + var(--contentColumnWidth, var(--maxiColumn)) + var(--notifsColumnWidth, var(--miniColumn)) + var(--columnGap))}.DesktopNav .button-default,.DesktopNav .button-default svg{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}.DesktopNav .button-default:active{background-color:#182230;background-color:var(--btnPressedTopBar,#182230);color:#b9b9ba;color:var(--btnPressedTopBarText,#b9b9ba)}.DesktopNav .button-default:disabled{color:#b9b9ba;color:var(--btnDisabledTopBarText,#b9b9ba)}.DesktopNav .button-default.toggled{background-color:#182230;background-color:var(--btnToggledTopBar,#182230);color:#b9b9ba;color:var(--btnToggledTopBarText,#b9b9ba)}.DesktopNav .logo{grid-area:logo;position:relative;transition:opacity;transition-duration:.1s;transition-timing-function:ease-out}@media (min-width:800px){.DesktopNav .logo{opacity:1!important}}.DesktopNav .logo .mask{background-color:#182230;background-color:var(--topBarText,#182230);bottom:0;left:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;right:0;top:0}.DesktopNav .logo img{display:inline-block;height:var(--navbar-height)}.DesktopNav .nav-icon{height:100%;margin-left:.2em;text-align:center;width:2em}.DesktopNav .nav-icon .svg-inline--fa{color:#d8a070;color:var(--topBarLink,#d8a070)}.DesktopNav .sitename{grid-area:sitename}.DesktopNav .actions{grid-area:actions}.DesktopNav .item{display:flex;flex:1;flex-wrap:wrap;height:var(--navbar-height);line-height:var(--navbar-height);overflow:hidden}.DesktopNav .item.right{justify-content:flex-end;text-align:right}.DesktopNav .spacer{width:1em}.list-item:not(:last-child){border-bottom:1px solid #222;border-bottom-color:var(--border,#222)}.list-empty-content{padding:10px;text-align:center}.user-reporting-panel{max-height:80vh;max-width:700px;min-height:20vh;width:90vw}.user-reporting-panel .panel-body{border-color:currentcolor #222 #222;border-top:1px solid #222;border-color:var(--border,#222);display:flex;flex-direction:column-reverse;overflow:hidden}.user-reporting-panel-left{box-sizing:border-box;line-height:var(--post-line-height);padding:1.1em .7em .7em}.user-reporting-panel-left>div{margin-bottom:1em}.user-reporting-panel-left>div:last-child{margin-bottom:0}.user-reporting-panel-left p{margin-top:0}.user-reporting-panel-left textarea.form-control{line-height:16px;min-height:44px;overflow:hidden;resize:none;transition:min-height .2s .1s;width:100%}.user-reporting-panel-left .btn{min-width:10em;padding:0 2em}.user-reporting-panel-left .alert{line-height:1.3em;margin:1em 0 0}.user-reporting-panel-right{display:flex;flex-direction:column;overflow-y:auto}.user-reporting-panel-sitem{display:flex;justify-content:space-between}.user-reporting-panel-sitem>.Status{flex:1}.user-reporting-panel-sitem>.checkbox{margin:.75em}@media (min-width:801px){.user-reporting-panel .panel-body{flex-direction:row}.user-reporting-panel-left{border-right:1px solid;border-color:#222;border-color:var(--border,#222);max-width:320px;padding:1.1em;width:50%}.user-reporting-panel-left>div{margin-bottom:2em}.user-reporting-panel-right{flex:1 1 auto;margin-bottom:12px;width:50%}}.modal-view.edit-form-modal-view{align-items:flex-start}.edit-form-modal-panel{flex-shrink:0;margin-bottom:2em;margin-top:25%;max-width:700px;width:100%}@media(orientation:landscape){.edit-form-modal-panel{margin-top:8%}}.edit-form-modal-panel .form-bottom-left{max-width:6.5em}.edit-form-modal-panel .form-bottom-left .emoji-icon{justify-content:right}.modal-view.post-form-modal-view{align-items:flex-start}.post-form-modal-panel{flex-shrink:0;margin-bottom:2em;margin-top:25%;max-width:700px;width:100%}@media(orientation:landscape){.post-form-modal-panel{margin-top:8%}}.modal-view.status-history-modal-view{align-items:flex-start}.status-history-modal-panel{flex-shrink:0;margin-bottom:2em;margin-top:25%;max-width:700px;width:100%}@media(orientation:landscape){.status-history-modal-panel{margin-top:8%}}.global-notice-list{align-items:center;display:flex;flex-direction:column;pointer-events:none;position:fixed;top:calc(var(--navbar-height) + .5em);width:100%;z-index:var(--ZI_modals_popovers)}.global-notice-list .global-notice{display:flex;line-height:2;margin-bottom:.5em;max-width:calc(100% - 3em);padding-left:1.5em;pointer-events:auto;text-align:center;width:40em}.global-notice-list .global-notice .notice-message{flex:1 1 100%}.global-notice-list .global-error{background-color:var(--alertPopupError,red)}.global-notice-list .global-error,.global-notice-list .global-error .svg-inline--fa{color:var(--alertPopupErrorText,#b9b9ba)}.global-notice-list .global-warning{background-color:var(--alertPopupWarning,orange)}.global-notice-list .global-warning,.global-notice-list .global-warning .svg-inline--fa{color:var(--alertPopupWarningText,#b9b9ba)}.global-notice-list .global-success{background-color:var(--alertPopupSuccess,#0fa00f)}.global-notice-list .global-success,.global-notice-list .global-success .svg-inline--fa{color:var(--alertPopupSuccessText,#b9b9ba)}.global-notice-list .global-info{background-color:var(--alertPopupNeutral,#182230)}.global-notice-list .global-info,.global-notice-list .global-info .svg-inline--fa{color:var(--alertPopupNeutralText,#b9b9ba)}.global-notice-list .close-notice{padding-right:.2em}.global-notice-list .close-notice .svg-inline--fa:hover{opacity:.6}.panel{background-color:#121a24;background-color:var(--bg,#121a24);display:flex;flex-direction:column;position:relative}.panel,.panel:after{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel:after{bottom:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);content:"";left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:5}.panel-body{padding:var(--panel-body-padding,0)}.panel-body:empty:before{content:"¯\\_(ツ)_/¯";display:block;margin:1em;text-align:center}.panel-body>p{line-height:1.3;margin:0;padding:1em}.panel-footer,.panel-heading{--panel-heading-height-padding:0.6em;--__panel-heading-gap:0.5em;--__panel-heading-height:3.2em;--__panel-heading-height-inner:calc(var(--__panel-heading-height) - var(--panel-heading-height-padding, 0)*2);grid-column-gap:var(--__panel-heading-gap);background-size:cover;box-sizing:border-box;display:grid;flex:none;grid-auto-columns:auto;grid-auto-flow:column;grid-template-columns:minmax(50%,1fr);height:var(--__panel-heading-height);line-height:var(--__panel-heading-height-inner);padding:var(--panel-heading-height-padding);position:relative;z-index:4}.panel-footer.-flexible-height,.panel-heading.-flexible-height{--__panel-heading-height:auto}.panel-footer.-flexible-height:after,.panel-footer.-flexible-height:before,.panel-heading.-flexible-height:after,.panel-heading.-flexible-height:before{display:none}.panel-footer.-stub,.panel-footer.-stub:after,.panel-heading.-stub,.panel-heading.-stub:after{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel-footer.-sticky,.panel-heading.-sticky{position:sticky;top:var(--navbar-height)}.panel-footer:after,.panel-footer:before,.panel-heading:after,.panel-heading:before{bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.panel-footer .title,.panel-heading .title{font-size:1.3em}.panel-footer .alert,.panel-heading .alert{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-footer:not(.-flexible-height)>.alert,.panel-footer:not(.-flexible-height)>.button-default,.panel-heading:not(.-flexible-height)>.alert,.panel-heading:not(.-flexible-height)>.button-default{align-self:stretch;box-sizing:border-box;height:var(--__panel-heading-height-inner);margin:0;min-height:0;min-width:1px;padding-bottom:0;padding-top:0}.panel-heading{align-items:start;background-color:#121a24;background-color:var(--bg,#121a24);border-width:0 0 1px;color:var(--panelText)}.panel-heading,.panel-heading:after{border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0}.panel-heading:after{background-color:#182230;background-color:var(--panel,#182230);box-shadow:var(--panelHeaderShadow);z-index:-2}.panel-heading .-link,.panel-heading a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-heading .button-unstyled:hover .iconLetter,.panel-heading .button-unstyled:hover .svg-inline--fa,.panel-heading .button-unstyled:hover i[class*=icon-],.panel-heading a:hover .iconLetter,.panel-heading a:hover .svg-inline--fa,.panel-heading a:hover i[class*=icon-]{color:var(--panelText)}.panel-heading .faint{background-color:transparent;color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-heading .faint-link{color:hsla(240,1%,73%,.5);color:var(--faintLink,hsla(240,1%,73%,.5))}.panel-heading:not(.-flexible-height)>.button-default{flex-shrink:0}.panel-heading:not(.-flexible-height)>.button-default,.panel-heading:not(.-flexible-height)>.button-default i[class*=icon-]{color:#b9b9ba;color:var(--btnPanelText,#b9b9ba)}.panel-heading:not(.-flexible-height)>.button-default:active{background-color:#182230;background-color:var(--btnPressedPanel,#182230);color:#b9b9ba;color:var(--btnPressedPanelText,#b9b9ba)}.panel-heading:not(.-flexible-height)>.button-default:disabled{color:#b9b9ba;color:var(--btnDisabledPanelText,#b9b9ba)}.panel-heading:not(.-flexible-height)>.button-default.toggled{color:#b9b9ba;color:var(--btnToggledPanelText,#b9b9ba)}.panel-heading .rightside-button{align-self:stretch;height:var(--__panel-heading-height);margin:calc(var(--panel-heading-height-padding)*-1) 0;margin-right:calc(var(--__panel-heading-gap)*-1);text-align:center;width:var(--__panel-heading-height)}.panel-heading .rightside-button>button{box-sizing:border-box;height:100%;padding:calc(var(--panel-heading-height-padding)*1) 0;text-align:center;width:100%}.panel-heading .rightside-button>button svg{font-size:1.2em}.panel-heading .rightside-icon{align-self:stretch;margin-right:calc(var(--__panel-heading-gap)*-1);text-align:center;width:var(--__panel-heading-height)}.panel-heading .rightside-icon svg{font-size:1.2em}.panel-footer{align-items:center;border-color:var(--border,#222);border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px);border-style:solid;border-width:1px 0 0}:root{--navbar-height:3.5rem;--post-line-height:1.4;--ZI_media_modal:9000;--ZI_modals_popovers:8500;--ZI_modals:8000;--ZI_navbar_popovers:7500;--ZI_navbar:7000;--ZI_popovers:6000}html{font-size:14px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#b9b9ba;color:var(--text,#b9b9ba);font-family:sans-serif;font-family:var(--interfaceFont,sans-serif);margin:0;overflow-x:clip;overflow-y:scroll;overscroll-behavior-y:none}body.hidden{display:none}@media(any-pointer:fine){*{scrollbar-color:var(--btn) transparent}::-webkit-scrollbar{background:transparent}::-webkit-scrollbar-button,::-webkit-scrollbar-thumb{background-color:var(--btn);border-radius:var(--btnRadius);box-shadow:var(--buttonShadow)}::-webkit-scrollbar-button{--___bgPadding:2px;background-repeat:no-repeat,no-repeat;color:var(--btnText)}::-webkit-scrollbar-button:horizontal{background-size:50% calc(50% - var(--___bgPadding)),50% calc(50% - var(--___bgPadding))}::-webkit-scrollbar-button:horizontal:increment{background-image:linear-gradient(45deg,var(--btnText) 50%,transparent 51%),linear-gradient(-45deg,transparent 50%,var(--btnText) 51%);background-position:top var(--___bgPadding) left 50%,right 50% bottom var(--___bgPadding)}::-webkit-scrollbar-button:horizontal:decrement{background-image:linear-gradient(45deg,transparent 50%,var(--btnText) 51%),linear-gradient(-45deg,var(--btnText) 50%,transparent 51%);background-position:bottom var(--___bgPadding) right 50%,left 50% top var(--___bgPadding)}::-webkit-scrollbar-button:vertical{background-size:calc(50% - var(--___bgPadding)) 50%,calc(50% - var(--___bgPadding)) 50%}::-webkit-scrollbar-button:vertical:increment{background-image:linear-gradient(-45deg,transparent 50%,var(--btnText) 51%),linear-gradient(45deg,transparent 50%,var(--btnText) 51%);background-position:right var(--___bgPadding) top 50%,left var(--___bgPadding) top 50%}::-webkit-scrollbar-button:vertical:decrement{background-image:linear-gradient(-45deg,var(--btnText) 50%,transparent 51%),linear-gradient(45deg,var(--btnText) 50%,transparent 51%);background-position:left var(--___bgPadding) top 50%,right var(--___bgPadding) top 50%}html{background:var(--wallpaper);scrollbar-color:var(--selectedMenu) var(--wallpaper)}}a{color:#d8a070;color:var(--link,#d8a070);text-decoration:none}h4{margin:0}.iconLetter{display:inline-block;font-weight:1000;text-align:center}.iconLetter,.svg-inline--fa,i[class*=icon-]{color:#666;color:var(--icon,#666)}.button-unstyled:hover>.iconLetter,.button-unstyled:hover>.svg-inline--fa,.button-unstyled:hover>i[class*=icon-],a:hover>.iconLetter,a:hover>.svg-inline--fa,a:hover>i[class*=icon-]{color:var(--text)}nav{background-color:#182230;background-color:var(--topBar,#182230);box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow);box-sizing:border-box;color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));height:var(--navbar-height);position:fixed;z-index:var(--ZI_navbar)}#sidebar{grid-area:sidebar}#modal{position:absolute;z-index:var(--ZI_modals)}.column.-scrollable{position:sticky;top:var(--navbar-height)}#main-scroller{grid-area:content;position:relative}#notifs-column{grid-area:notifs}.app-bg-wrapper{background-color:var(--wallpaper);background-image:var(--body-background-image);background-position:50%;background-repeat:no-repeat;background-size:cover;height:100%;left:0;position:fixed;right:-20px;top:var(--navbar-height);z-index:-1000}.underlay{background-color:rgba(0,0,0,.15);background-color:var(--underlay,rgba(0,0,0,.15));grid-column:1/span 3;grid-row:1/1;pointer-events:none;z-index:-1000}.app-layout{--miniColumn:25rem;--maxiColumn:45rem;--columnGap:1em;--status-margin:0.75em;--effectiveSidebarColumnWidth:minmax(var(--miniColumn),var(--sidebarColumnWidth,var(--miniColumn)));--effectiveNotifsColumnWidth:minmax(var(--miniColumn),var(--notifsColumnWidth,var(--miniColumn)));--effectiveContentColumnWidth:minmax(var(--miniColumn),var(--contentColumnWidth,var(--maxiColumn)));align-content:flex-start;flex-wrap:wrap;grid-template-areas:"sidebar content";grid-template-columns:var(--effectiveSidebarColumnWidth) var(--effectiveContentColumnWidth);grid-template-rows:1fr;justify-content:center;margin:0 auto;min-height:100vh;overflow-x:clip;position:relative}.app-layout,.app-layout .column{box-sizing:border-box;display:grid}.app-layout .column{--___columnMargin:var(--columnGap);align-content:start;grid-row:1/1;grid-template-columns:100%;margin:0 calc(var(--___columnMargin)/2);padding:calc(var(--___columnMargin)) 0;row-gap:var(--___columnMargin)}.app-layout .column:not(.-scrollable){margin-top:var(--navbar-height)}.app-layout .column:hover{z-index:2}.app-layout .column.-full-height{margin-bottom:0;padding-bottom:0;padding-top:0}.app-layout .column.-scrollable{--___paddingIncrease:calc(var(--columnGap)/2);margin-left:calc(var(--___paddingIncrease)*-1);max-height:calc(100vh - var(--navbar-height));overflow-x:hidden;overflow-y:auto;padding-left:calc(var(--___paddingIncrease) + var(--___columnMargin)/2);position:sticky;top:var(--navbar-height)}@supports(scrollbar-width:none) or (-webkit-text-fill-color:initial){.app-layout .column.-scrollable:not(.-show-scrollbar){margin-right:calc(var(--___paddingIncrease)*-1);padding-right:calc(var(--___paddingIncrease) + var(--___columnMargin)/2);scrollbar-width:none}.app-layout .column.-scrollable:not(.-show-scrollbar)::-webkit-scrollbar{display:block;width:0}}.app-layout .column.-scrollable .panel-heading.-sticky{top:calc(var(--columnGap)/-1)}.app-layout.-has-new-post-button .column{padding-bottom:10rem}.app-layout.-no-sticky-headers .column .panel-heading.-sticky{position:relative;top:0}.app-layout .column-inner{align-content:start;box-sizing:border-box;display:grid;grid-template-columns:100%;row-gap:1em}.app-layout.-reverse:not(.-wide,.-mobile){grid-template-areas:"content sidebar";grid-template-columns:var(--effectiveContentColumnWidth) var(--effectiveSidebarColumnWidth)}.app-layout.-wide{grid-template-areas:"sidebar content notifs";grid-template-columns:var(--effectiveSidebarColumnWidth) var(--effectiveContentColumnWidth) var(--effectiveNotifsColumnWidth)}.app-layout.-wide.-reverse{grid-template-areas:"notifs content sidebar";grid-template-columns:var(--effectiveNotifsColumnWidth) var(--effectiveContentColumnWidth) var(--effectiveSidebarColumnWidth)}.app-layout.-mobile{grid-template-areas:"content";grid-template-columns:100vw;padding:0}.app-layout.-mobile .column{margin:var(--navbar-height) 0 0 0;padding-top:0}.app-layout.-mobile .panel,.app-layout.-mobile .panel-heading,.app-layout.-mobile .panel-heading:after,.app-layout.-mobile .panel-heading:before,.app-layout.-mobile .panel:after{border-top-left-radius:0;border-top-right-radius:0}.app-layout.-mobile #notifs-column,.app-layout.-mobile #sidebar,.app-layout.-normal #notifs-column{display:none}.text-center{text-align:center}.button-default{background-color:#182230;background-color:var(--btn,#182230);border:none;border-radius:4px;border-radius:var(--btnRadius,4px);box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow);color:#b9b9ba;color:var(--btnText,#b9b9ba);cursor:pointer;font-family:sans-serif;font-family:var(--interfaceFont,sans-serif);font-size:1em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.button-default.-sublime{background:transparent}.button-default .svg-inline--fa,.button-default i[class*=icon-]{color:#b9b9ba;color:var(--btnText,#b9b9ba)}.button-default::-moz-focus-inner{border:none}.button-default:hover{box-shadow:0 0 4px hsla(0,0%,100%,.3);box-shadow:var(--buttonHoverShadow)}.button-default:active{background-color:#182230;background-color:var(--btnPressed,#182230);box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow)}.button-default:active,.button-default:active i,.button-default:active svg{color:#b9b9ba;color:var(--btnPressedText,#b9b9ba)}.button-default:disabled{background-color:#182230;background-color:var(--btnDisabled,#182230);cursor:not-allowed}.button-default:disabled,.button-default:disabled i,.button-default:disabled svg{color:#b9b9ba;color:var(--btnDisabledText,#b9b9ba)}.button-default.toggled{background-color:#182230;background-color:var(--btnToggled,#182230);box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow)}.button-default.toggled,.button-default.toggled i,.button-default.toggled svg{color:#b9b9ba;color:var(--btnToggledText,#b9b9ba)}.button-default.danger{background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5));color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba)}.button-unstyled{background:none;border:none;box-sizing:content-box;color:inherit;cursor:pointer;display:inline;font-family:inherit;font-size:100%;line-height:unset;outline:none;padding:0;text-align:initial}.button-unstyled.-link{color:#d8a070;color:var(--link,#d8a070)}.button-unstyled.-fullwidth{width:100%}.button-unstyled.-hover-highlight:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.input,input,textarea{--_padding:0.5em;background-color:#182230;background-color:var(--input,#182230);border:none;border-radius:4px;border-radius:var(--inputRadius,4px);box-shadow:inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2),inset 0 0 2px 0 #000;box-shadow:var(--inputShadow);box-sizing:border-box;color:#b9b9ba;color:var(--inputText,#b9b9ba);display:inline-block;font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:1em;-webkit-hyphens:none;hyphens:none;line-height:2;margin:0;padding:0 var(--_padding);position:relative}.input.unstyled,input.unstyled,textarea.unstyled{background:none;border-radius:0;box-shadow:none;height:unset}.input.disabled,.input:disabled,.input[disabled=disabled],input.disabled,input:disabled,input[disabled=disabled],textarea.disabled,textarea:disabled,textarea[disabled=disabled]{cursor:not-allowed;opacity:.5}.input[type=range],input[type=range],textarea[type=range]{background:none;border:none;box-shadow:none;flex:1;margin:0}.input[type=radio],input[type=radio],textarea[type=radio]{display:none}.input[type=radio]:checked+label:before,input[type=radio]:checked+label:before,textarea[type=radio]:checked+label:before{background-color:var(--accent,#d8a070);box-shadow:inset 0 0 2px #000,inset 0 0 0 4px #182230;box-shadow:var(--inputShadow),0 0 0 4px var(--fg,#182230) inset}.input[type=radio]:disabled,.input[type=radio]:disabled+label,.input[type=radio]:disabled+label:before,input[type=radio]:disabled,input[type=radio]:disabled+label,input[type=radio]:disabled+label:before,textarea[type=radio]:disabled,textarea[type=radio]:disabled+label,textarea[type=radio]:disabled+label:before{opacity:.5}.input[type=radio]+label:before,input[type=radio]+label:before,textarea[type=radio]+label:before{background-color:#182230;background-color:var(--input,#182230);border-radius:100%;box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);box-sizing:border-box;color:transparent;content:"";display:inline-block;flex-shrink:0;font-size:1.1em;height:1.1em;line-height:1.1;margin-right:.5em;overflow:hidden;text-align:center;transition:box-shadow .2s;vertical-align:top;width:1.1em}.input[type=checkbox]:checked+label:before,input[type=checkbox]:checked+label:before,textarea[type=checkbox]:checked+label:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.input[type=checkbox]:disabled,.input[type=checkbox]:disabled+label,.input[type=checkbox]:disabled+label:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled+label,input[type=checkbox]:disabled+label:before,textarea[type=checkbox]:disabled,textarea[type=checkbox]:disabled+label,textarea[type=checkbox]:disabled+label:before{opacity:.5}.input[type=checkbox]+label:before,input[type=checkbox]+label:before,textarea[type=checkbox]+label:before{background-color:#182230;background-color:var(--input,#182230);border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);box-sizing:border-box;color:transparent;content:"✓";display:inline-block;flex-shrink:0;font-size:1.1em;height:1.1em;line-height:1.1;margin-right:.5em;overflow:hidden;text-align:center;transition:color .2s;vertical-align:top;width:1.1em}.input.resize-height,input.resize-height,textarea.resize-height{resize:vertical}textarea{line-height:var(--post-line-height);padding:var(--_padding)}option{background-color:#121a24;background-color:var(--bg,#121a24);color:#b9b9ba;color:var(--text,#b9b9ba)}.hide-number-spinner{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.hide-number-spinner[type=number]::-webkit-inner-spin-button,.hide-number-spinner[type=number]::-webkit-outer-spin-button{display:none;opacity:0}.cards-list{display:grid;grid-auto-flow:row dense;grid-template-columns:1fr 1fr;list-style:none}.cards-list li{border:1px solid var(--border);border-radius:var(--inputRadius);margin:.25em;padding:.5em}.btn-block{display:block;width:100%}.btn-group{display:inline-flex;position:relative;vertical-align:middle}.btn-group .button-dropdown,.btn-group button{flex:1 1 auto;position:relative}.btn-group .button-dropdown:not(:last-child),.btn-group .button-dropdown:not(:last-child) .button-default,.btn-group button:not(:last-child),.btn-group button:not(:last-child) .button-default{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group .button-dropdown:not(:first-child),.btn-group .button-dropdown:not(:first-child) .button-default,.btn-group button:not(:first-child),.btn-group button:not(:first-child) .button-default{border-bottom-left-radius:0;border-top-left-radius:0}.fa{color:gray}.mobile-shown{display:none}.badge{border-radius:99px;box-sizing:border-box;display:inline-block;font-size:.9em;font-style:normal;font-weight:400;height:1.3em;line-height:1;max-width:10em;min-width:1.7em;overflow:hidden;padding:.15em;text-align:center;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.badge.badge-notification{background-color:red;background-color:var(--badgeNotification,red);color:#fff;color:var(--badgeNotificationText,#fff)}.alert{border-radius:5px;border-radius:var(--tooltipRadius,5px);margin:0 .35em;padding:0 .25em}.alert.error{background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5));color:#b9b9ba;color:var(--alertErrorText,#b9b9ba)}.panel-heading .alert.error{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba)}.alert.warning{background-color:rgba(111,111,20,.5);background-color:var(--alertWarning,rgba(111,111,20,.5));color:#b9b9ba;color:var(--alertWarningText,#b9b9ba)}.panel-heading .alert.warning{color:#b9b9ba;color:var(--alertWarningPanelText,#b9b9ba)}.alert.success{background-color:var(--alertSuccess,rgba(111,111,20,.5));color:var(--alertSuccessText,#b9b9ba)}.panel-heading .alert.success{color:var(--alertSuccessPanelText,#b9b9ba)}.faint,.faint-link{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.faint-link:hover{text-decoration:underline}.visibility-notice{border:1px solid hsla(240,1%,73%,.5);border:1px solid var(--faint,hsla(240,1%,73%,.5));border-radius:4px;border-radius:var(--inputRadius,4px);padding:.5em}.notice-dismissible{padding-right:4rem;position:relative}.notice-dismissible .dismiss{color:inherit;padding:.5em;position:absolute;right:0;top:0}.fa-scale-110.iconLetter,.fa-scale-110.svg-inline--fa{font-size:1.1em}.fa-old-padding-layer,.fa-old-padding.iconLetter,.fa-old-padding.svg-inline--fa{padding:0 .3em}.veryfaint{opacity:.25}.login-hint{text-align:center}@media (min-width:801px){.login-hint{display:none}}.login-hint a{display:inline-block;padding:1em 0;width:100%}.btn.button-default{min-height:2em}.new-status-notification{flex:1;font-size:1.1em;position:relative;z-index:1}@media (max-width:800px){.mobile-hidden{display:none}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes shakeError{0%{transform:translateX(0)}15%{transform:translateX(.375rem)}30%{transform:translateX(-.375rem)}45%{transform:translateX(.375rem)}60%{transform:translateX(-.375rem)}75%{transform:translateX(.375rem)}90%{transform:translateX(-.375rem)}to{transform:translateX(0)}}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter-from,.fade-leave-active{opacity:0}.visible-for-screenreader-only{clip:rect(0 0 0 0);display:block;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;visibility:visible;width:1px}.thread-tree-replies{border-left:2px solid var(--border,#222);margin-left:var(--status-margin,.75em)}.thread-tree-replies-hidden{align-items:stretch;display:flex;flex-direction:column;padding:var(--status-margin,.75em)}.Conversation{z-index:1}.Conversation .conversation-dive-to-top-level-box{align-items:stretch;border-bottom:1px solid var(--border,#222);border-radius:0;display:flex;flex-direction:column;padding:var(--status-margin,.75em)}.Conversation .thread-ancestors{border-left:2px solid var(--border,#222);margin-left:var(--status-margin,.75em)}.Conversation .thread-ancestor.-faded .StatusContent{--link:var(--faintLink);--text:var(--faint);color:var(--text)}.Conversation .thread-ancestor-dive-box{border-bottom:1px solid var(--border,#222);border-radius:0;padding-left:var(--status-margin,.75em)}.Conversation .thread-ancestor-dive-box,.Conversation .thread-ancestor-dive-box-inner{align-items:stretch;display:flex;flex-direction:column}.Conversation .thread-ancestor-dive-box-inner{padding:var(--status-margin,.75em)}.Conversation .conversation-status{border-bottom:1px solid var(--border,#222);border-radius:0}.Conversation .thread-ancestor-has-other-replies .conversation-status,.Conversation .thread-ancestor:last-child .conversation-status,.Conversation .thread-ancestor:last-child .thread-ancestor-dive-box,.Conversation.-expanded .thread-tree .conversation-status,.Conversation:last-child .conversation-status{border-bottom:none}.Conversation .thread-ancestors+.thread-tree>.conversation-status{border-top:1px solid var(--border,#222)}.Conversation.status-fadein.-expanded .thread-body{border-bottom:1px solid var(--border,#222);border-left:4px solid red;border-left-color:var(--cRed,red);border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px)}.Conversation.-expanded.status-fadein{margin:calc(var(--status-margin, .75em)/2)}.timeline-menu-popover{border-top-left-radius:0;border-top-right-radius:0;font-size:1rem;margin-top:.6rem;max-width:100vw;min-width:24rem}.timeline-menu-popover ul{list-style:none;margin:0;padding:0}.timeline-menu-popover a{display:block;height:3.5em;line-height:3.5em;padding:0 .65em}.timeline-menu-popover a:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.timeline-menu-popover a.router-link-active,.timeline-menu-popover a:hover{--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon);background-color:#151e2a;background-color:var(--selectedMenu,#151e2a)}.timeline-menu-popover a.router-link-active{color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba);font-weight:bolder}.timeline-menu-popover a.router-link-active:hover{text-decoration:underline}.timeline-menu-popover a svg{margin-left:-.2em;margin-right:.4em}.timeline-menu-popover li{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.timeline-menu-popover li:last-child a{border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px);border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px)}.timeline-menu-popover li:last-child{border:none}.TimelineMenu{margin-right:auto;min-width:0}.TimelineMenu .popover-trigger-button{vertical-align:bottom}.TimelineMenu .panel:after{border-top-left-radius:0;border-top-right-radius:0}.TimelineMenu .timeline-menu-title{cursor:pointer;display:flex;margin:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.TimelineMenu .timeline-menu-title .timeline-menu-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TimelineMenu .timeline-menu-title svg{margin-left:.6em;transition:transform .1s}.TimelineMenu .timeline-menu-title .click-blocker{cursor:default;flex-grow:1}.TimelineMenu.open .timeline-menu-title svg{color:#b9b9ba;color:var(--panelText,#b9b9ba);transform:rotate(180deg)}.TimelineMenu .panel{box-shadow:var(--popoverShadow)}.Timeline .alert-dot{border-radius:100%;height:8px;left:calc(50% - 4px);margin-left:6px;margin-top:-6px;top:calc(50% - 4px);width:8px}.Timeline .alert-badge,.Timeline .alert-dot{background-color:var(--badgeNeutral);position:absolute}.Timeline .alert-badge{border-radius:var(--tooltipRadius);color:var(--badgeNeutralText);font-size:.75em;left:calc(50% - .5em);line-height:1;margin-left:.7em;margin-top:-1em;padding:.2em;text-align:right;top:calc(50% - .4em)}.Timeline .loadmore-button{position:relative}.Timeline.-blocked{cursor:progress}.Timeline .conversation-heading{top:calc(var(--__panel-heading-height)*var(--currentPanelStack, 2));z-index:2}.Timeline.-nonpanel .timeline-heading{line-height:2.75em;padding:0 .5em;text-align:center}.Timeline.-nonpanel .timeline-heading .alert,.Timeline.-nonpanel .timeline-heading .button-default{line-height:2em;width:100%}.tab-switcher{display:flex}.tab-switcher .tab-icon{display:block;margin:.2em auto}.tab-switcher.top-tabs{flex-direction:column}.tab-switcher.top-tabs>.tabs{flex:0 0 auto;flex-direction:row;overflow-x:auto;overflow-y:hidden;padding-top:5px;width:100%}.tab-switcher.top-tabs>.tabs:after,.tab-switcher.top-tabs>.tabs:before{border-bottom:1px solid #222;border-bottom-color:var(--border,#222);content:"";flex:1 1 auto}.tab-switcher.top-tabs>.tabs .tab-wrapper{height:2em}.tab-switcher.top-tabs>.tabs .tab-wrapper:not(.active):after{border-bottom:1px solid #222;border-bottom-color:var(--border,#222);bottom:0;left:0;right:0}.tab-switcher.top-tabs>.tabs .tab{border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:-93px;min-width:1px;padding-bottom:99px;width:100%}.tab-switcher.top-tabs .contents.scrollable-tabs{flex-basis:0}.tab-switcher.side-tabs{flex-direction:row}@media (max-width:800px){.tab-switcher.side-tabs{overflow-x:auto}}.tab-switcher.side-tabs>.contents{flex:1 1 auto}.tab-switcher.side-tabs>.tabs{flex:0 0 auto;flex-direction:column;overflow-x:hidden;overflow-y:auto}.tab-switcher.side-tabs>.tabs:after,.tab-switcher.side-tabs>.tabs:before{border-right:1px solid #222;border-right-color:var(--border,#222);content:"";flex-basis:.5em;flex-shrink:0}.tab-switcher.side-tabs>.tabs:after{flex-grow:1}.tab-switcher.side-tabs>.tabs:before{flex-grow:0}.tab-switcher.side-tabs>.tabs .tab-wrapper{display:flex;flex-direction:column;min-width:10em}@media (max-width:800px){.tab-switcher.side-tabs>.tabs .tab-wrapper{min-width:4em}}.tab-switcher.side-tabs>.tabs .tab-wrapper:not(.active):after{border-right:1px solid #222;border-right-color:var(--border,#222);bottom:0;right:0;top:0}.tab-switcher.side-tabs>.tabs .tab-wrapper:before{border-right:1px solid #222;border-right-color:var(--border,#222);content:"";flex:0 0 6px}.tab-switcher.side-tabs>.tabs .tab-wrapper:last-child .tab{margin-bottom:0}.tab-switcher.side-tabs>.tabs .tab{border-bottom-right-radius:0;border-top-right-radius:0;box-sizing:content-box;flex:1;margin-left:1em;margin-right:-200px;min-width:10em;min-width:1px;padding-left:1em;padding-right:calc(1em + 200px)}@media (max-width:800px){.tab-switcher.side-tabs>.tabs .tab{margin-left:.25em;margin-right:calc(.25em - 200px);padding-left:.25em;padding-right:calc(.25em + 200px)}.tab-switcher.side-tabs>.tabs .tab .text{display:none}}.tab-switcher .contents{flex:1 0 auto;min-height:0}.tab-switcher .contents .hidden{display:none}.tab-switcher .contents .full-height:not(.hidden){display:flex;flex-direction:column;height:100%}.tab-switcher .contents .full-height:not(.hidden)>:not(.mobile-label){flex:1}.tab-switcher .contents.scrollable-tabs{overflow-y:auto}.tab-switcher .tab{padding:6px 1em;position:relative;white-space:nowrap}.tab-switcher .tab:not(.active){z-index:4}.tab-switcher .tab:not(.active):hover{z-index:6}.tab-switcher .tab.active{background:transparent;color:#b9b9ba;color:var(--tabActiveText,#b9b9ba);z-index:5}.tab-switcher .tab img{margin-top:-5px;max-height:26px;vertical-align:top}.tab-switcher .tabs{box-sizing:border-box;display:flex;position:relative}.tab-switcher .tabs:after,.tab-switcher .tabs:before{display:block;flex:1 1 auto}.tab-switcher .tab-wrapper{display:flex;flex:0 0 auto;position:relative}.tab-switcher .tab-wrapper:not(.active):after{content:"";position:absolute;z-index:7}.tab-switcher .mobile-label{border-bottom:1px solid var(--border,#222);margin-bottom:.25em;margin-left:.2em;margin-top:.5em;padding-bottom:.25em;padding-left:.3em}@media (min-width:800px){.tab-switcher .mobile-label{display:none}}.chat-title{--emoji-size:14px;display:flex}.chat-title,.chat-title .username{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-title .username{word-wrap:break-word;display:inline;max-width:100%}.chat-title .avatar-container{align-self:center;line-height:1}.chat-title .titlebar-avatar{border-radius:10px;border-radius:var(--avatarAltRadius,10px);height:1.5em;margin-right:.5em;width:1.5em}.chat-title .titlebar-avatar.animated:before{display:none}.chat-list-item{box-sizing:border-box;cursor:pointer;display:flex;flex-direction:row;height:5em;overflow:hidden;padding:.75em}.chat-list-item :focus{outline:none}.chat-list-item:hover{background-color:var(--selectedPost,#151e2a);box-shadow:0 0 3px 1px rgba(0,0,0,.1)}.chat-list-item .chat-list-item-left{margin-right:1em}.chat-list-item .chat-list-item-center{word-wrap:break-word;box-sizing:border-box;overflow:hidden;width:100%}.chat-list-item .heading{display:inline-flex;justify-content:space-between;line-height:1em;width:100%}.chat-list-item .heading-right{white-space:nowrap}.chat-list-item .name-and-account-name{flex-shrink:1;line-height:var(--post-line-height);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-list-item .chat-preview{color:#b9b9ba;color:var(--faint,#b9b9ba);display:inline-flex;margin:.35em 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.chat-list-item a{color:var(--faintLink,#d8a070);pointer-events:none;text-decoration:none}.chat-list-item:hover .animated.avatar canvas{display:none}.chat-list-item:hover .animated.avatar img{visibility:visible}.chat-list-item .Avatar{border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.chat-list-item .chat-preview-body{--emoji-size:1.4em;padding-right:1em}.chat-list-item .time-wrapper{line-height:var(--post-line-height)}.basic-user-card{--emoji-size:14px;display:flex;flex:1 0;margin:0;padding:.6em 1em}.basic-user-card-collapsed-content{flex:1;margin-left:.7em;min-width:0;text-align:left}.basic-user-card-user-name img{height:16px;-o-object-fit:contain;object-fit:contain;vertical-align:middle;width:16px}.basic-user-card-screen-name,.basic-user-card-user-name-value{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.basic-user-card-expanded-content{flex:1;margin-left:.7em;min-width:0}.chat-new .input-wrap{display:flex;margin:.7em .5em}.chat-new .input-wrap input{width:100%}.chat-new .search-icon{margin-right:.3em}.chat-new .member-list{padding-bottom:.7rem}.chat-new .basic-user-card:hover{background-color:var(--selectedPost,#151e2a);cursor:pointer}.chat-new .go-back-button{align-self:start;height:100%;line-height:1;text-align:center;width:var(--__panel-heading-height-inner)}.chat-list{margin-bottom:0;min-height:25em}.emtpy-chat-list-alert{color:#b9b9ba;color:var(--faint,#b9b9ba);display:flex;font-size:1.2em;justify-content:center;padding:3em}.chat-message-wrapper.hovered-message-chain .animated.Avatar canvas{display:none}.chat-message-wrapper.hovered-message-chain .animated.Avatar img{visibility:visible}.chat-message-wrapper .chat-message-menu{opacity:0;position:absolute;top:-.8em;transition:opacity .1s}.chat-message-wrapper .chat-message-menu button{padding-bottom:.2em;padding-top:.2em}.chat-message-wrapper .menu-icon{cursor:pointer}.chat-message-wrapper .menu-icon:hover,.extra-button-popover.open .chat-message-wrapper .menu-icon{color:#b9b9ba;color:var(--text,#b9b9ba)}.chat-message-wrapper .popover{width:12em}.chat-message-wrapper .chat-message{display:flex;padding-bottom:.5em}.chat-message-wrapper .chat-message .status-body:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.chat-message-wrapper .avatar-wrapper{margin-right:.72em;width:32px}.chat-message-wrapper .attachments,.chat-message-wrapper .link-preview{margin-bottom:1em}.chat-message-wrapper .status{border-radius:10px;border-radius:var(--chatMessageRadius,10px);display:flex;padding:.75em}.chat-message-wrapper .created-at{float:right;font-size:.8em;font-style:italic;margin:-1em 0 -.5em;opacity:.8;position:relative}.chat-message-wrapper .without-attachment .message-content .RichContent:after{content:" ";display:inline-block;margin-right:5.4em}.chat-message-wrapper .pending .created-at,.chat-message-wrapper .pending .status-content.media-body{color:var(--faint)}.chat-message-wrapper .error .created-at,.chat-message-wrapper .error .status-content.media-body{color:red;color:var(--badgeNotification,red)}.chat-message-wrapper .chat-message-inner{align-items:flex-start;display:flex;flex-direction:column;max-width:80%;min-width:10em;width:100%}.chat-message-wrapper .outgoing{align-content:end;display:flex;flex-flow:row wrap;justify-content:flex-end}.chat-message-wrapper .outgoing a{color:var(--chatMessageOutgoingLink,#d8a070)}.chat-message-wrapper .outgoing .status{background-color:var(--chatMessageOutgoingBg,#151e2a);border:1px solid var(--chatMessageOutgoingBorder,--lightBg);color:var(--chatMessageOutgoingText,#b9b9ba)}.chat-message-wrapper .outgoing .chat-message-inner{align-items:flex-end}.chat-message-wrapper .outgoing .chat-message-menu{right:.4rem}.chat-message-wrapper .incoming a{color:var(--chatMessageIncomingLink,#d8a070)}.chat-message-wrapper .incoming .status{background-color:var(--chatMessageIncomingBg,#121a24);border:1px solid var(--chatMessageIncomingBorder,--border)}.chat-message-wrapper .incoming .created-at a,.chat-message-wrapper .incoming .status{color:var(--chatMessageIncomingText,#b9b9ba)}.chat-message-wrapper .incoming .chat-message-menu{left:.4rem}.chat-message-wrapper .chat-message-inner.with-media,.chat-message-wrapper .chat-message-inner.with-media .status{width:100%}.chat-message-wrapper .visible{opacity:1}.chat-message-date-separator{color:#b9b9ba;color:var(--faintedText,#b9b9ba);font-size:.9em;margin:1.4em 0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chat-view{display:flex;height:100%}.chat-view .chat-view-inner{display:flex;height:auto;overflow:visible;width:100%}.chat-view .chat-view-body{background-color:var(--chatBg,#121a24);border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0;box-sizing:border-box;display:flex;flex-direction:column;margin:0;min-height:calc(100vh - var(--navbar-height));overflow:visible;width:100%}.chat-view .chat-view-body:after{border-radius:0}.chat-view .message-list{display:flex;flex-direction:column;height:100%;justify-content:end;padding:0 .8em}.chat-view .footer{background-color:#121a24;background-color:var(--bg,#121a24);bottom:0;position:sticky;z-index:1}.chat-view .chat-view-heading{grid-template-columns:auto minmax(50%,1fr)}.chat-view .go-back-button{align-self:start;height:100%;line-height:1;text-align:center;width:var(--__panel-heading-height-inner)}.chat-view .jump-to-bottom-button{align-items:center;background-color:#182230;background-color:var(--btn,#182230);border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.3),0 2px 4px rgba(0,0,0,.3);cursor:pointer;display:flex;height:2.5em;justify-content:center;opacity:0;position:absolute;right:1.3em;top:-3.2em;transition:all .35s;transition-timing-function:cubic-bezier(0,1,.5,1);visibility:hidden;width:2.5em;z-index:10}.chat-view .jump-to-bottom-button.visible{opacity:1;visibility:visible}.chat-view .jump-to-bottom-button i{color:#b9b9ba;color:var(--text,#b9b9ba);font-size:1em}.chat-view .jump-to-bottom-button .unread-message-count{border-radius:50px;font-size:.8em;left:50%;margin-top:-1rem;padding:.1em;position:absolute}.chat-view .jump-to-bottom-button .chat-loading-error{align-items:flex-end;display:flex;height:100%;width:100%}.chat-view .jump-to-bottom-button .chat-loading-error .error{width:100%}.follow-card-content-container{display:flex;flex-flow:row wrap;flex-shrink:0;justify-content:space-between;line-height:1.5em}.follow-card-button{margin-left:1em;margin-top:.5em;padding:0 1.5em}.follow-card-follow-button{margin-left:auto;margin-top:.5em;width:10em}.with-load-more-footer{border-top:1px solid #222;border-top-color:var(--border,#222);padding:10px;text-align:center}.with-load-more-footer .error{font-size:1rem}.with-load-more-footer a{cursor:pointer}.user-profile{--currentPanelStack:1;flex:2;flex-basis:500px}.user-profile .user-birthday{margin:0 .75em .5em}.user-profile .user-profile-fields{margin:0 .5em}.user-profile .user-profile-fields img{max-height:400px;max-width:100%;-o-object-fit:contain;object-fit:contain;vertical-align:middle}.user-profile .user-profile-fields img.emoji{height:18px;width:18px}.user-profile .user-profile-fields .user-profile-field{border:1px solid var(--border,#222);border-radius:4px;border-radius:var(--inputRadius,4px);display:flex;margin:.25em}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name{border-right:1px solid var(--border,#222);color:var(--lightText);flex:0 1 30%;font-weight:500;min-width:120px;text-align:right}.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{color:var(--text);flex:1 1 70%;margin:0 0 0 .25em}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name,.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{box-sizing:border-box;line-height:1.3;overflow:hidden;padding:.5em 1.5em;text-overflow:ellipsis;white-space:nowrap}.user-profile .userlist-placeholder{align-items:middle;display:flex;justify-content:center;padding:2em}.user-profile-placeholder .panel-body{align-items:middle;display:flex;justify-content:center;padding:7em}.search-result-heading{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));padding:.75rem;text-align:center}@media (max-width:800px){.search-nav-heading .tab-switcher .tabs .tab-wrapper{display:block;flex:1 1 auto;justify-content:center;text-align:center}}.search-result{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);box-sizing:border-box}.search-result-footer{background-color:#182230;background-color:var(--panel,#182230);border-color:var(--border,#222);border-style:solid;border-width:1px 0 0;padding:10px}.search-input-container{display:flex;justify-content:center;padding:.8rem}.search-input-container .search-input{box-sizing:border-box;font-size:1rem;line-height:1.125rem;padding:.5rem;width:100%}.search-input-container .search-button{margin-left:.5em}.loading-icon{padding:1em}.trend{align-items:center;display:flex}.trend .hashtag{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend .count,.trend .hashtag{color:#b9b9ba;color:var(--text,#b9b9ba)}.trend .count{flex:0 0 auto;font-size:1.5rem;font-weight:500;line-height:2.25rem;text-align:center;width:2rem}.more-statuses-button{height:3.5em;line-height:3.5em}.interface-language-switcher .language-select{margin-right:1em}.registration-form{display:flex;flex-direction:column;margin:.6em}.registration-form .container{display:flex;flex-direction:row}.registration-form .container>*{min-width:0}.registration-form .terms-of-service{flex:0 1 50%;margin:.8em}.registration-form .text-fields{display:flex;flex:1 0;flex-direction:column;margin-top:.6em}.registration-form textarea{min-height:100px;resize:vertical}.registration-form .form-group{display:flex;flex-direction:column;line-height:2;margin-bottom:1em;padding:.3em 0}.registration-form .form-group--error{animation-duration:.6s;animation-name:shakeError;animation-timing-function:ease-in-out}.registration-form .form-group--error .form--label{color:#f04124;color:var(--cRed,#f04124)}.registration-form .form-error{margin-top:-.7em;text-align:left}.registration-form .form-error span{font-size:.85em}.registration-form .form-error ul{list-style:none;margin-top:0;padding:0 0 0 5px}.registration-form .form-error ul li:before{content:"• "}.registration-form form textarea{line-height:16px;resize:vertical}.registration-form .captcha{margin-bottom:.4em;max-width:350px}.registration-form .btn{height:2em;margin-top:.6em}.registration-form .error{text-align:center}@media (max-width:800px){.registration-form .container{flex-direction:column-reverse}}.password-reset-form{align-items:center;display:flex;flex-direction:column;margin:.6em}.password-reset-form .container{display:flex;flex:1 0;flex-direction:column;margin-top:.6em;max-width:18rem}.password-reset-form .container>*{min-width:0}.password-reset-form .form-group{display:flex;flex-direction:column;line-height:1.85em;margin-bottom:1em;padding:.3em 0}.password-reset-form .error{animation-duration:.4s;animation-name:shakeError;animation-timing-function:ease-in-out;text-align:center}.password-reset-form .alert{margin:.3em 0 1em;padding:.5em}.password-reset-form .password-reset-required{background-color:var(--alertError,rgba(211,16,20,.5));padding:10px 0}.password-reset-form .notice-dismissible{padding-right:2rem}.password-reset-form .dismiss{cursor:pointer}.follow-request-card-content-container{display:flex;flex-flow:row wrap}.follow-request-card-content-container button{flex:1 1;margin-right:.5em;margin-top:.5em;max-width:12em;min-width:8em}.follow-request-card-content-container button:last-child{margin-right:0}.tos-content{margin:1em}.staff-group{padding-left:1em;padding-top:1em}.staff-group .basic-user-card{padding-left:0}.mrf-section{margin:1em}.mrf-section table{padding-bottom:20px;padding-left:10px;text-align:left;width:100%}.mrf-section table td,.mrf-section table th{max-width:360px;overflow:hidden;vertical-align:text-top;width:180px}.mrf-section table td+td,.mrf-section table th+th{width:auto}.list-card{display:flex}.list-name{flex-grow:1}.button-list-edit,.list-name{color:#d8a070;color:var(--link,#d8a070);margin:0;padding:1em}.button-list-edit:hover,.list-name:hover{--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);color:#d8a070;color:var(--selectedMenuText,#d8a070)}.Lists .new-list-button{padding:0 .5em}.ListsUserSearch .input-wrap{display:flex;margin:.7em .5em}.ListsUserSearch .input-wrap input{width:100%}.ListsUserSearch .search-icon{margin-right:.3em}.panel-loading{align-items:center;color:#b9b9ba;color:var(--text,#b9b9ba);display:flex;font-size:2em;height:100%;justify-content:center}.panel-loading .loading-text svg{color:#b9b9ba;color:var(--text,#b9b9ba);line-height:0;vertical-align:middle}.ListEdit{--panel-body-padding:0.5em;display:flex;flex-direction:column;height:calc(100vh - var(--navbar-height));overflow:hidden}.ListEdit .list-edit-heading{grid-template-columns:auto minmax(50%,1fr)}.ListEdit .panel-body{display:flex;flex:1;flex-direction:column;overflow:hidden}.ListEdit .list-member-management{flex:1 0 auto}.ListEdit .search-icon{margin-right:.3em}.ListEdit .users-list{overflow-y:auto;padding-bottom:.7rem}.ListEdit .members-list,.ListEdit .search-list{flex-direction:column;min-height:0;overflow:hidden}.ListEdit .go-back-button{align-self:start;height:100%;line-height:1;text-align:center;width:var(--__panel-heading-height-inner)}.ListEdit .btn{margin:0 .5em}.ListEdit .panel-footer{grid-template-columns:minmax(10%,1fr)}.ListEdit .panel-footer .footer-button{min-width:9em}.announcement-editor{align-items:stretch;display:flex;flex-direction:column}.announcement-editor .announcement-metadata{margin-top:.5em}.announcement-editor .post-textarea{box-sizing:content-box;height:10em;overflow:none;resize:vertical}.announcement{border-bottom:1px solid var(--border,#222);border-radius:0;padding:var(--status-margin,.75em)}.announcement .body,.announcement .heading{margin-bottom:var(--status-margin,.75em)}.announcement .footer,.announcement .footer .times{display:flex;flex-direction:column}.announcement .footer .actions{display:flex;flex-direction:row;justify-content:space-evenly}.announcement .footer .actions .btn{flex:1;margin:1em;max-width:10em}.announcements-page .post-form{padding:var(--status-margin,.75em)}.announcements-page .post-form .body,.announcements-page .post-form .heading{margin-bottom:var(--status-margin,.75em)}.announcements-page .post-form .post-button{min-width:10em} +/*# sourceMappingURL=app.a7f63ee9107a77599942.css.map*/ +\ No newline at end of file diff --git a/priv/static/static/css/app.a7f63ee9107a77599942.css.map b/priv/static/static/css/app.a7f63ee9107a77599942.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/app.a7f63ee9107a77599942.css","mappings":"AACA,YASE,mBAGA,uBACA,uCAPA,SACA,aACA,uBAJA,OAUA,SAAQ,CAJR,cACA,oBATA,eAGA,QAFA,MAFA,wBAaA,CAEA,cACE,oBAGF,6BAEE,gCADA,mBACA,CAGF,iBACE,UAIJ,mCACE,GACE,6BAGF,GACE,iCCrCJ,sBAAsB,iBAAiB,CAAC,yDAAyD,eAAe,CAAC,2DAA2D,eAAe,CAAC,2CAA2C,mBAAW,CAAX,mBAAW,CAAX,YAAY,CAAC,4BAA4B,kBAAY,CAAZ,mBAAY,CAAZ,aAAa,CAAC,oCAAoC,kBAAM,CAAC,6BAAqB,CAArB,qBAAqB,CAA5B,UAAM,CAAN,MAAM,CAAuB,eAAe,CAAC,iBAAiB,CAAC,6DAAqF,MAAM,CAA9B,iBAAiB,CAAC,KAAK,CAAQ,qBAAqB,CAAC,6EAA6E,UAAU,CAAC,+EAA+E,WAAW,CAAC,gFAAgF,UAAU,CAAC,kFAAkF,WAAW,CAAC,kCAA+G,4BAA4B,CAAxC,WAAW,CAAgF,SAAS,CAAC,2EAAxC,aAAa,CAAtF,WAAW,CAAxC,MAAM,CAA8G,eAAe,CAAjD,mBAAmB,CAA7H,iBAAiB,CAAC,KAAK,CAAmB,UAAU,CAArB,UAAkS,CCGlsC,YACE,aACA,sBACA,aAEA,iBACE,eACA,WAGF,sBACE,SAGF,0BAIE,mBAFA,aACA,mBAEA,8BAJA,cAIA,CAGF,wBACE,aACA,sBAEA,iBADA,sBACA,CAGF,yBACE,aAEA,YADA,YACA,CAEA,gCACE,WAGF,2BAGE,aAFA,aACA,aACA,CAIJ,mBAGE,uBADA,0BAEA,sCAHA,iBAGA,CChDF,iCACE,aAIJ,mBACE,eCNA,sBAEE,eADA,qBAGA,iBADA,gBAEA,kBAEA,mCACE,aCDgB,CDEhB,+BEbN,UAKE,oBACA,kBAFF,iBAGE,qBAGE,mBADF,iBAEE,4BAeA,wBDrBW,sCCuBX,CANA,iBDAuB,wCCEvB,8BACA,8BACA,CAQA,sBAFA,iBACA,CAfA,WACA,CAFA,aACA,CAaA,eACA,CAXA,YACA,CAQA,iBACA,CAEA,eACA,CApBF,iBACE,QACA,CAaA,iBACA,CAdA,KACA,CAEA,oBACA,CAQA,kBACA,CATA,WAeA,yEAIA,UAEE,2BAGF,yBDtCc,uCCwCZ,mEAKF,aD5Ca,+BC8CX,yEAIA,aDlDW,gCCiDb,WAGE,6EAKF,WACE,gBAIJ,gBACE,CCtEJ,wBAGA,oBACE,UAOA,qCACA,+BAFA,4BACA,CAFA,WACA,CAFA,cACA,CAFF,qDAME,kBAsBA,gDAEA,qDACA,yDACA,kDACA,4DACA,2CAVA,wBF3Ba,wCE6Bb,CAjBF,iBFOsB,mCEQpB,CAEA,aF1Be,iCEmCf,wBAtBE,QACA,CAGA,qCACA,8BACA,CATF,UACE,CAGA,MACA,CAIA,oBARA,iBACA,CAGA,OACA,CAJA,KACA,CAGA,SAIA,gBAkBJ,aACE,CACA,aACA,CACA,eACA,gBACA,CALA,eACA,CACA,eACA,CAGA,mBADA,qDAEA,kCAKE,yBACA,yCAJF,QACE,eACA,gBAGA,+BAkBA,6CALA,4BACA,CAHA,WACA,gBACA,CACA,eACA,CAEA,qBACA,CAXA,UACA,CAHA,aACA,CAEA,eACA,CAOA,WACA,CAdF,gBACE,gBACA,CACA,kBACA,CAEA,kBACA,mBACA,CAIA,UAKA,wCAKI,kCADA,mBACA,CAFF,UAGE,0DAMA,iBADF,mBAEE,0EAQF,wDAEA,6DACA,iEACA,qEACA,uDATF,wBFvFgB,oDE0Fd,gBAOA,kFAGE,sDADF,yCAGE,8CAaF,wBFxHS,sCE0HT,CAHA,eACA,CAEA,6BACA,8BACA,CAbF,oBACE,CAKA,gBACA,CAMA,mBARA,eACA,CAHA,cACA,gBACA,CAHA,cACA,CAIA,iBACA,CAPA,qBAaA,0EAGE,YADF,gBAEE,qDAGF,oBACE,iFAGE,YADF,aAEE,2GAON,aF9Ia,6BEiJX,qDAGF,wBFjJgB,oDEmJd,cFrJW,6CEuJX,uDAGF,aF3Ja,qCE6JX,sDAGF,aFhKa,oCEkKX,CCtKN,aAKE,mBADA,oBAFA,cACA,gBAFA,iBAIA,CAEA,oBAGE,SACA,OAHA,kBAIA,QAHA,MAOA,yDAGF,qCALE,YACA,yCAFA,UASA,CAIA,6BACE,uCAOA,6BAIA,iBHhBoB,CGiBpB,uCAJA,WAPA,cAQA,cALA,eAEA,UAHA,cAOA,gBARA,kBAGA,SASA,wDADA,SACA,CAGF,mCACE,aAGF,mCACE,uDAGF,0BACE,qDAGF,gCACE,mBCrDN,cAUE,gDAAkD,CAClD,oDAAsD,CACtD,wDAA0D,CAC1D,yCAA0C,CAR1C,wBJRa,CISb,wCACA,aJNe,CIOf,iCALA,aACA,sBAFA,6BADA,UAY2C,CAE3C,2BAGE,mBAFA,oBAKA,WAxBiC,CAoBjC,uBAKA,gBAFA,cAxBgC,CAuBhC,UAtBiC,CA2BjC,wCAGE,YADA,gBADA,eAIA,yCADA,UACA,CAIJ,uDAGE,mBADA,WACA,CAGF,8BACE,aACA,sBAGF,+BAEE,aADA,aACA,CAGF,uBACE,aACA,qBAGF,uBACE,aAEA,cADA,sBAEA,aAGF,0BAEE,aACA,qBAFA,YAGA,gBAGF,+BAIE,8DAHA,aAKA,cADA,gBACA,CAGF,yDAIE,qBADA,aADA,eAEA,CAEA,mEASE,mBAPA,eAMA,aALA,iBAGA,WA5F+B,CA6F/B,eA7F+B,CA2F/B,cA5F8B,CAwF9B,cAGA,UAKA,CAEA,qFACE,WACA,oBAGF,iFACE,wBAEA,yFACE,aJnGY,CIoGZ,+BAMR,8BACE,cAKA,6DACE,aAEA,cADA,sBAEA,aAEA,2EACE,UACA,oBACA,kBAMJ,4BAEE,cADA,WACA,CAEA,kCACE,WAIJ,4BAGE,aAFA,YAMA,+JACE,CADF,uJACE,CAMF,mBACA,kDAHA,8EAVA,iBAGA,cADA,kBAOA,6GALA,+DASA,CAGE,yCACE,wEAGF,4CACE,wEAKN,2BAEE,mBADA,aAEA,eAEA,qBADA,gBACA,CAEA,iCACE,gBAEA,QAAO,CADP,UACA,CAEA,0CACE,aAKN,0BAME,mBAHA,sBAMA,eALA,aAFA,WA9LoB,CAmMpB,uBAFA,gBAjMoB,CAoMpB,WAPA,UAQA,CAEA,sDAGE,gBADA,eADA,wCAEA,CAGF,uDACE,eACA,gBCjNR,aACE,aACA,sBACA,kBAEA,gCAME,eADA,gBAEA,iBAHA,kBAHA,kBAEA,QADA,KAKA,CAEA,wCACE,aLXW,CKYX,0BAIJ,iCAGE,eAFA,kBACA,UACA,CAEA,sCACE,aAIJ,yCAEE,cAGF,+BACE,mBAGF,6BAKE,SAMA,UAJA,OANA,UAOA,gBANA,oBACA,kBAGA,QAFA,KAOA,CAIA,oCAGE,qBADA,8BADA,OAEA,CAMJ,oBACE,kBAGF,mBAIE,uCAFA,eADA,aAIA,YAFA,iBAEA,CAEA,0BAKE,eAHA,YACA,iBAGA,iBAFA,kBAHA,UAKA,CAEA,8BAEE,YACA,yCAFA,UAEA,CAIJ,0BACE,aACA,sBACA,uBACA,qBAEA,uCACE,gBAGF,sCACE,cACA,gBAIJ,+BAKE,4DAA8D,CAC9D,gEAAkE,CAClE,oEAAsE,CACtE,qDAAsD,CAPtD,wBLxGS,CKyGT,oDACA,4CAKuD,CChH7D,aACE,UAEA,oBACE,6DACA,uBACA,YACA,aNJa,CMKb,sCAGA,uBACA,wCACA,cAGA,WACA,iBARA,SACA,qBAIA,WACA,SAEA,CAGF,+BAGE,SAIA,aNxBa,CMyBb,+BAHA,YAIA,cAEA,oBAVA,kBAGA,UAFA,MAIA,aAIA,SACA,CChCJ,WACE,aACA,sBACA,oBAEA,uBACE,sBAEA,kBADA,iBACA,CAGF,wBAEE,qBADA,aAEA,8BACA,oBAGF,4BACE,WAEA,kCAEE,oBACA,WAIJ,0BAGE,mBADA,YAEA,UAGF,6BAEE,aADA,gBAEA,WAGF,sBAEE,aADA,kBACA,CAEA,wCACE,oBAIJ,wBACE,aAEA,uCAEE,iBADA,SACA,CCvDN,OACE,qBAGA,kBAOA,0CARA,YADA,UAgBE,CAPF,oBAIE,mBAEA,qBACA,kBAJA,aAEA,sBAEA,CAGF,cACE,MAGF,cAKE,iBAHA,WACA,gBAFA,kBAGA,kBACA,CAGF,eACE,aACA,oBCpCJ,YAIE,sBAOA,qBTDiB,CSEjB,gCAHA,kBTiB2B,CShB3B,2CATA,oBACA,sBAIA,YADA,cAFA,iBASA,CAEA,gCACE,cACA,YAEA,gBADA,iBACA,CAGF,mCAEE,aADA,WAEA,iBACA,UAEA,qCACE,OAEA,gBAEA,SAGA,gBAJA,aAFA,kBAKA,uBADA,kBAEA,CAGF,2CAME,0BAFA,SAGA,8BALA,OAGA,cAJA,kBAEA,OAIA,CAIJ,+BACE,OACA,YAGF,qLAME,aAGA,YAFA,uBACA,UACA,CAIA,oCAEE,YADA,UACA,CAMF,8IAKE,kBAFA,YACA,yCAFA,UAGA,CAIJ,6BAEE,qBADA,YACA,CAEA,mCAEE,YADA,UACA,CAIJ,mCAGE,mBAFA,aACA,sBAEA,uBACA,iBAGF,uBAKE,0BAHA,eAEA,sBAHA,kBAKA,mCAHA,oBAGA,CAEA,8BACE,SAIJ,gCACE,aAKA,kBADA,gBAHA,kBACA,QACA,MAGA,UAEA,mDAUE,6BARA,iBTvGoB,CSwGpB,uCAKA,iBAFA,WACA,iBANA,UAGA,kBACA,SAKA,CAEA,mEACE,qBAGF,yEACE,qBAMJ,6DAEE,yCAKF,yDAEE,qCAIJ,8BAKE,aAHA,cADA,kBAGA,kBADA,UAEA,CAEA,kCACE,WAGF,qCACE,OAEA,yCACE,SACA,kBACA,YACA,qCAIJ,oCACE,OACA,WACA,qBAEA,uCACE,eACA,SAMJ,mCACE,QACA,WAGF,4CACE,QACA,WAIJ,sBACE,aAEA,uFAEE,SAIJ,yBAEE,aTnNa,CSoNb,8BAFA,qBAKA,YACA,gBAHA,gBACA,kBAEA,CAEA,yCACE,YAGF,mCAGE,qBAFA,aACA,kBACA,CAEA,iHAEE,SACA,UACA,kBAGF,0DACE,OACA,kBAGF,uDAEE,kBADA,QACA,CAIJ,2BACE,qBACA,eACA,gBACA,uBAGF,6BACE,cAIJ,qBACE,gBAIA,4CACE,oBC3QJ,uBACE,aACA,sBAGF,sBAIE,WAAU,CAFV,SADA,kBAEA,UACA,CAEA,yCAQE,sBAHA,SACA,aACA,mBAJA,OAFA,kBAGA,QAFA,KAMA,CAEA,uDAIE,sBAFA,YACA,YAFA,kBAKA,cAEA,kEACE,SAIJ,+CAKE,cADA,aAEA,yDAJA,YACA,kBAFA,UAKA,CAEA,6DAEE,aADA,QACA,CAKN,2DAEE,YAEA,iGACE,kBAIJ,wCACE,gBAKF,6BAGE,8GACE,CADF,sGACE,CAIF,mBACA,kDARA,gBACA,eAOA,CAIJ,gCAEE,aAAY,CADZ,iBACA,CAGF,mCACE,aAGF,kCACE,aACA,OACA,uBACA,cAEA,yCACE,cC9FN,QACE,4CAA6C,CAC7C,qDAAsD,CACtD,mDAAoD,CACpD,sCAAuC,CAEvC,qBAGA,YAFA,kBACA,UACA,CAEA,iBAGE,kBXUwB,CWTxB,0CAFA,YADA,UAGA,CAGF,gBAIE,iBXCqB,uCWFrB,mCADA,YADA,UXIqB,CWErB,+BACE,qCACA,kCAGF,iCACE,aAGF,yBACE,kBXXsB,CWYtB,0CAGF,6BACE,wBXtCS,CWuCT,mCAIJ,YAEE,YADA,UACA,CAGF,uBAME,6BAEA,mCANA,SAKA,WAHA,aACA,aAJA,kBAEA,OAKA,CC3DJ,aAIE,kBADA,eAFA,kBACA,mBAGA,kBAEA,yCAGE,kBADA,cACA,CAGF,6BACE,0CAEA,aAGA,kBADA,gEADA,sBAFA,WAIA,CAGF,mBAQE,iBANA,qBAKA,YADA,OAMA,iBARA,UASA,aAVA,oBAFA,kBAIA,SAKA,4BAIA,6DALA,mBAEA,SAGA,CAGF,oDAEE,gEAGF,uCAEE,mBAGF,wBACE,mBAKE,kCACE,gBAIJ,iCAEE,6CADA,qCACA,CAGF,sBACE,kBAEA,qBACA,cAGA,QAAO,CALP,WAGA,eACA,mBACA,CAIA,sCACE,6LACE,CAWJ,oCACE,kGAKF,mCACE,iEAKN,gCACE,+BAIJ,sBAEE,iBADA,eAEA,gBC/GF,cACE,qBAEA,qDACE,YAGF,4BAGE,kBAFA,iBACA,kBACA,CCVJ,aAIE,kBADA,qBAFA,kBACA,kBAEA,CCDA,wBAGE,wDADA,kBADA,wBAGA,iBAGF,iBACE,cAGF,uFAKE,0CAGF,eACE,eAGF,0BACE,SAGF,gBACE,gBACA,kBACA,eAGF,gBACE,gBACA,aAGF,gBACE,cACA,eAGF,gBACE,eAOF,sCAHE,oBAMA,CAHF,oBAGE,8BADA,4BACA,CAGF,qCAGE,iBADA,eAGA,yCADA,qBACA,CC7DF,aACE,aACA,sBACA,gBAGF,mBACE,kBAGF,qBAKE,ahBRkB,CgBSlB,+BAJA,aACA,mBAFA,YAGA,iBAEA,CAGF,2BAEE,mBADA,aAEA,mBAEA,sBADA,SACA,CAGF,yBAEE,aAAY,CADZ,WACA,CAGF,mBAKE,wBhB/BgB,CgBgChB,qCACA,kBhBtBoB,CgBuBpB,sCALA,ahBhCa,CgBiCb,8BAHA,YASA,OARA,kBAOA,MAEA,qBAGF,mBAEE,mBADA,YACA,CAGF,YACE,YAGF,cAEE,mBADA,YACA,CAGF,gBACE,gBAGF,wBAEE,kBADA,cACA,CAGF,qBACE,aCxEJ,YACE,aACA,sBAEA,mBACE,8BAA+B,CAGjC,yBACE,gBAGF,uCAKE,qBAHA,uCAKA,oCAHA,yBADA,qBAGA,qBACA,CAGF,qBACE,cACA,kBACA,oBAIA,+BAIE,aADA,gBADA,uBADA,kBAGA,CAIJ,6BAIE,gCAFA,mBACA,qBAEA,WAAU,CAJV,kBAIA,CAEA,mCACE,kBAEA,4CACE,eACA,gBAEA,uBADA,kBACA,CAKN,0BACE,aACA,wBAEA,uCAEE,aACA,kBACA,kBAHA,kBAIA,UAEA,mDAEE,8GACE,CADF,sGACE,CAIF,mBACA,kDAPA,YAOA,CAKN,wHAIE,qBAGA,kBADA,WADA,oBAEA,CAGF,+BAEE,YAEA,kBADA,iBAFA,kBAIA,UAGF,gCAEE,oBAGF,yDAEE,qBAEA,iEACE,cAIJ,uBACE,ajBpGe,CiBqGf,mCAGF,sBACE,kCAGF,qBAIE,iBAAiB,CAHjB,gBACA,kBAEkB,CAElB,6DAEE,kBAGF,2BAIE,cAOA,mBACA,kDAJA,gIAFA,oDACA,gEAFA,sEAFA,cAFA,gBACA,kBAUA,CAGF,kCAEE,WAEA,YACA,iBAJA,aAEA,aAEA,CAGF,sCAOE,YACA,qBAHA,oBACA,QAEA,CAPA,qDACE,aASJ,mCACE,qBCtKN,mBAqDE,qBlB5CiB,CkB6CjB,gCAHA,kBlB1B2B,CkB2B3B,2CALA,alB3Ce,CkB4Cf,0BA7CA,eAFA,aACA,mBAGA,gBADA,eAkDA,CA/CA,+BACE,cAEA,cADA,WACA,CAEA,mCAIE,kBlBSuB,CkBRvB,2CAHA,YACA,qCAFA,UAIA,CAIJ,iCAGE,aACA,sBAFA,YADA,eAGA,CAGF,8BACE,gBAGF,qCAKE,kBAJA,gBAOA,6BANA,gBACA,uBACA,qBAIA,CAGF,+BACE,aC9CJ,eACE,OACA,YCAF,kBACE,kBAEA,+BACE,mBAGF,+BACE,aAGA,aAFA,8BACA,YACA,CAEA,sCACE,WAGF,iCAGE,aAFA,aACA,aACA,CAIJ,oCACE,aACA,OAEA,iBACA,eAFA,iBAEA,CAGF,mCACE,aACA,kBAGF,kCAEE,eADA,OAEA,gEAEA,wCACE,0BAGF,0EAGE,eADA,iBAEA,wBAIJ,qCACE,kBAGF,iCAEE,yBpBzDc,CoB0Dd,uCAFA,iBAEA,CAGF,kCACE,sBACA,oCACA,iBpB7CsB,CoB8CtB,uCAEA,QAAO,CADP,YACA,CAGF,2CACE,mBAIA,4CACE,yBpB5EY,CoB6EZ,uCAIJ,mCAIE,qBAHA,aACA,8BACA,eACA,CAIA,+DACE,aAGF,8DACE,gBAKJ,qCAEE,qBADA,OACA,CAGF,8BAEE,uBADA,OACA,CAGF,6BAEE,sBADA,OACA,CAGF,gGAQE,mBADA,aAFA,OAFA,iBACA,gBAEA,cAEA,CAKE,+wBAGE,apB7Hc,CoB8Hd,+BAKF,wQAGE,UpBxIS,CoByIT,kCAFA,kBAEA,CAEA,4SACE,UpB5IO,CoB6IP,kCAMR,yBACE,kBAGF,wCAEE,mBADA,kBAEA,WAEA,0FAGE,gBADA,wCACA,CAGF,+CACE,gBAGF,8CACE,OACA,WAIJ,wCACE,aAGA,sBAFA,kBACA,UACA,CAGF,iCACE,mBAGF,uBACE,aACA,sBACA,YACA,kBAGF,8BACE,aACA,sBAEA,iBADA,uBACA,CAGF,kCAEE,uBAMA,yCACA,6CANA,gBAGA,mEAIA,YANA,6BAMA,CAEA,kDACE,gBAIJ,8BACE,kBAGF,qCAEE,SAGA,cADA,UAHA,kBAEA,OAEA,CAEA,2CACE,SpB9NW,CoB+NX,sBAIJ,mBACE,aACA,eAGF,oBACE,cACA,cAGF,kCAME,mBAKA,wBpBjQW,CoBkQX,mCAGA,0BACA,sCAHA,iBpB9OsB,CoB+OtB,uCALA,apB5Pa,CoB6Pb,0BALA,aADA,cADA,YAIA,uBACA,WAPA,kBACA,UAcA,CCzQJ,eACE,gBAEA,8BAEE,eADA,UACA,CCDF,qBASE,6BARA,SACA,YAGA,OAEA,QAGA,aAIJ,yCAVI,eADA,cAGA,eAEA,KAkBF,CAZF,oBAWE,wBtB1Ba,CsB2Bb,mCAVA,SAGA,iBAFA,gBACA,eAGA,2BACA,YAIA,CAGE,iDACE,kBAIJ,0CAGE,wBtBtCW,CsBuCX,mCAHA,SACA,aAGA,mBAGF,yCAGE,wBtB9CW,CsB+CX,mCACA,0BACA,wCACA,aACA,yBAPA,SACA,YAMA,CAEA,gDAEE,kBADA,UACA,CCxDN,0BACE,YAEA,mCAEE,uBACA,YAKF,wDAEE,eCZF,iCAEE,eACA,eACA,kBAHA,WAGA,CAEA,mDACE,cACA,+BCTN,WACE,aACA,sBAEA,oBAIE,mBAHA,aACA,mBACA,8BAEA,oBAEA,yBACE,eAGF,6BACE,aACA,mBACA,sBAEA,kCACE,iBAKN,sBACE,mBAGF,6BAEE,uCADA,iBACA,CCjCJ,WACE,kBACA,UAEA,iBACE,qCAAsC,CACtC,uCAAwC,CACxC,sCAAuC,CAGzC,0BAME,oBAFA,uBADA,gBAEA,sBAJA,eAOA,kBANA,iBAMA,CAGF,uBACE,qBAEA,kCADA,mCAGA,kBAGF,6BAkBE,kCANA,sBAIA,8EACA,+EAHA,wEACA,yEAVA,SAFA,OAGA,oGACE,CADF,4FACE,CAGF,mBACA,kDAEA,8CAZA,kBAGA,QAFA,MAiBA,WAEA,sCACE,gDAIJ,eAEE,cACA,gBAEA,QAAO,CADP,YAHA,iBAIA,CAEA,iBACE,a1BzDW,C0B0DX,8BAGF,mBAIE,iBADA,eAFA,yCACA,qBAEA,CAIJ,sBAME,mCAAoC,CACpC,qBAAqB,CANrB,2B1BzDoB,C0B0DpB,+CACA,4B1B3DoB,C0B4DpB,+CAGsB,CAGxB,oBAIE,mCAAoC,CACpC,sCAAsC,CAJtC,kB1BnEoB,C0BoEpB,qCAGuC,CAGzC,oBAIE,qCAAsC,CACtC,wCAAwC,CAJxC,iB1BvEsB,C0BwEtB,sCAGyC,CAG3C,qBAGE,qB1B9Fe,C0B+Ff,gCAIJ,WAGE,eAEA,wBAJA,a1BrGoB,C0BsGpB,8BAKE,CAEA,mBACE,kBAIJ,sBAIE,uBADA,aAEA,gBAJA,YACA,kBAGA,CAEA,wBACE,YAGF,wBAEE,aADA,qBACA,CAGF,8BACE,sCAAuC,CACvC,+CAAgD,CAChD,6CAA8C,CAG9C,YACA,qCAFA,UAEA,CAIJ,kBAEE,eADA,iBACA,CAEA,2BASE,mBAHA,gCAIA,iB1B5ImB,C0B6InB,sCANA,SAEA,aACA,uBANA,OAUA,UAXA,kBAGA,QADA,MAUA,4BAEA,+BACE,WAIJ,mDACE,UAIJ,iEAEE,eAGA,eACA,eAFA,kBADA,WAGA,CAEA,qGACE,a1BnLgB,C0BoLhB,+BAIJ,wBAGE,qBADA,gBADA,iBAEA,CAEA,mCACE,iBAGF,0CAEE,cADA,cAGA,gBADA,sBACA,CAGF,kCAKE,a1BjNW,C0BkNX,0BAJA,cAEA,eADA,gBAFA,aAKA,CAGF,mCAIE,wB1B3NS,C0B4NT,6CAHA,a1BvNW,C0BwNX,sCAFA,SAIA,CAIJ,yBAYE,kBAAkB,CAXlB,cAKA,WAIA,gBARA,iBACA,gBACA,uBACA,mBAIA,SAGmB,CAEnB,yEAEE,aAIJ,sBAGE,cAEA,gBADA,iBAFA,gBADA,sBAIA,CAGF,sBAGE,qBADA,aAGA,eADA,iBAHA,mBAIA,CAEA,iCACE,cAEA,iBACA,gBAGF,mCAKE,iBAHA,aADA,cAEA,eACA,kBACA,CAEA,oDAEE,cADA,gBACA,CAGF,qDAGE,cADA,iBADA,aAEA,CAGF,sDAEE,cADA,UACA,CAGF,+JAKE,oBADA,kBADA,kBAEA,CAKN,8BAEE,aACA,mBACA,oBAHA,iBAGA,CAEA,gCACE,sBAEA,eADA,kBACA,CAGF,qCACE,SAIJ,sBACE,sBAIJ,8BACE,aAGF,aAME,a1BrUoB,C0BsUpB,+BANA,aAOA,eAHA,8BAHA,iBACA,qBACA,iBAIA,CAGF,YACE,cAEA,cADA,cACA,CAEA,eACE,cACA,mBACA,iBAIF,cACE,qBAIJ,aACE,aACA,mBCvWF,uBACE,iBACA,WCAF,iBAGE,qBADA,sBAMA,a5BHe,C4BIf,0BARA,aAGA,aACA,kBACA,cACA,UAEA,CAEA,oCACE,eAGF,4BACE,OAGF,4BACE,kBAGF,+BAEE,kBADA,SACA,CAEA,0CACE,mBAIJ,uBAME,qDAAuD,CACvD,yDAA2D,CAC3D,6DAA8D,CAP9D,wB5B1BgB,C4B2BhB,6CACA,a5B9Ba,C4B+Bb,qCAI+D,CAE/D,kCACE,kCAAoC,CAIxC,yBAOE,qDAAuD,CACvD,yDAA2D,CAC3D,6DAA8D,CAP9D,wB5B1CgB,C4B2ChB,6CACA,a5B/Ca,C4BgDb,sCAJA,kBAQ+D,CAE/D,oCACE,kCAAoC,CAGtC,+BACE,0BC/DN,gBACE,aACA,eAEA,YADA,eACA,CAEA,2BAOE,oB7BHa,C6BIb,8CAPA,mBACA,YAEA,kBACA,wBACA,qBAHA,UAKA,CAGF,6BAME,sBAJA,aAKA,YAJA,cAEA,iBAJA,kBAGA,iBAGA,CAEA,sFAEE,SAGF,gDAGE,wBAFA,a7B5BW,C6B6BX,8BACA,CAEA,4HAEE,cCrCN,iBAEE,8BADA,eACA,CAGF,aACE,gBACA,SACA,UAGF,aAGE,uB9BNe,C8BMf,iB9BNe,C8BOf,gCAHA,iBAGA,CAIA,oCAGE,2B9BLkB,C8BMlB,+CAHA,4B9BHkB,C8BIlB,+CAEA,CAGF,mCAGE,8B9BZkB,C8BalB,kDAHA,+B9BVkB,C8BWlB,kDAEA,CAIJ,wBACE,YAGF,8BAEE,iBACA,CAGF,2DAHE,gBAFA,gBAOA,CAGF,gCAEE,wB9B7CgB,C8B8ChB,6CAEA,uB9B9Ce,C8B8Cf,iB9B9Ce,C8B+Cf,gCALA,kBAKA,CAGF,qBACE,wB9B3DW,C8B4DX,mCAGF,6BAGE,kCAAmC,CCrErC,mBACE,iBCDF,iBACE,sBAGF,mBAEE,YADA,UACA,CAGF,eAEE,QAAO,CADP,aACA,CAGF,qBAKE,aAHA,gBAEA,UADA,uBAFA,kBAIA,CAGF,oBAEE,aADA,UAEA,kBCvBJ,gBAEE,YAEA,eAHA,eAEA,0BACA,CAEA,sBACE,UAGF,4BACE,WAKF,4BACE,eAEA,kCACE,ajChBW,CiCiBX,+BACA,kBAGF,mCAGE,mBAFA,aACA,6BACA,CAIJ,2BAGE,gBADA,kBADA,eAEA,CAGF,qCACE,YAGF,4BACE,aACA,kBAIA,+BAGE,iBjC5BmB,CiC6BnB,sCAHA,YAIA,kBACA,iBAJA,UAIA,CAIJ,0BACE,aAEA,mCACE,OACA,YACA,iBACA,YAKF,iCACE,aACA,8BCpEJ,wBACE,GACE,UAGF,GACE,WAIJ,yCAME,gBADA,eAHA,eAQA,CAEA,wFATA,mBAFA,aAGA,sBAKA,YADA,YAEA,uBAHA,UAYE,CAIJ,0DAGE,WACA,eAEA,iBADA,uCACA,CAGF,+BACE,cAIA,iBADA,gBADA,eADA,gBAIA,qBAGF,+BAIE,mDADA,6BADA,gBADA,cAGA,CAEA,uCACE,WAIJ,mCAOE,mBAFA,aAHA,YAIA,uBAFA,oBADA,kBAFA,UAMA,CAEA,uCACE,WAIJ,qCAME,6DADA,gBAJA,SAGA,gBAIA,eAEA,UA5F4B,CAqF5B,UAIA,iBALA,UAOA,kDAEA,SA3F2B,CA6F3B,kDAQE,gCAFA,WAFA,eAFA,UAjG0B,CAoG1B,eApG0B,CAgG1B,kBAMA,kBAJA,SAKA,CAIJ,2CAEE,cAIA,WAFA,gBA9GiC,CA2GjC,kBAEA,QAEA,SAhH4B,CAmH5B,uDAME,gCAFA,WADA,eAtH0B,CAoH1B,kBAIA,kBAHA,KAIA,CAGF,iDACE,OAEA,6DACE,SA7HwB,CAiI5B,iDACE,QAEA,6DACE,UArIwB,CA0I9B,0CACE,kBAEA,OAAM,CADN,KACA,CAEA,uDAEE,WADA,QAhJ0B,CAsJhC,6BAEE,sBAiBA,gBAlBA,6BAkBA,CAfA,2GAEE,YAEA,8OAGE,gBADA,YACA,CAGF,uHACE,UCtKN,uBAQE,oBADA,aADA,YAFA,OAHA,eAEA,MAMA,uBACA,8BALA,WAHA,wBAQA,CAGF,4BACE,uBAGF,8BAEE,2BADA,qBACA,CAGF,oBASE,gCALA,aAFA,OAGA,eAJA,MAMA,gBACA,qCALA,YAGA,UAGA,CAGF,2BACE,6BAGF,2BACE,cAGF,aAiBE,gDAAkD,CAClD,oDAAsD,CACtD,wDAA0D,CAC1D,yCAA0C,CAR1C,wBnCrDa,CmCsDb,wCAHA,sCACA,8BAGA,anCnDe,CmCoDf,iCANA,aAJA,oBAGA,eAPA,kBAKA,sBAJA,gBAEA,8BADA,kDAIA,SAa2C,CAE3C,oBACE,iBAIJ,0BAEE,mBADA,aAEA,cAEA,8BACE,UACA,YACA,mBAGF,+BACE,gBACA,uBACA,mBAIJ,kCACE,WAGF,oBACE,2BAGF,qBAGE,oBAFA,uBAGA,aAFA,sBAIA,QAAO,CADP,SACA,CAGF,gBAKE,uBnCpGiB,CmCoGjB,iBnCpGiB,CmCqGjB,gCALA,gBACA,SACA,SAGA,CAGF,2BACE,SAGF,gBACE,UAEA,yCAEE,sBACA,cACA,WACA,gBACA,eAEA,qDAME,4DAA8D,CAC9D,gEAAkE,CAClE,oEAAsE,CACtE,qDAAsD,CARtD,wBnC1Hc,CmC2Hd,oDACA,anC/HW,CmCgIX,4CAKuD,CCxI3D,iCAaE,mBAJA,wBpCRW,CoCSX,oCAPA,mBAEA,aASA,6DAHA,aATA,WAUA,uBARA,eAEA,YAUA,0BACA,kDAhBA,UAcA,UAEA,CAGF,yBACE,2BAGF,sBAEE,apCvBa,CoCwBb,0BAFA,eAEA,CAIJ,yBACE,qCACE,cCjCJ,aACE,aAEA,0BAEE,8BADA,YACA,CAGF,6BACE,oBACA,gEAIA,kGAEE,arCNY,CqCOZ,2BAIA,wCACE,kBADF,yEACE,kBAKF,4FACE,mBADF,sDACE,mBC5BR,gBACE,aAEA,6BAEE,8BADA,YACA,CAGF,gCACE,oBACA,gEAIA,6CACE,uBAGF,2GAEE,YtCRc,CsCSd,4BAIA,2CACE,kBAGF,4CACE,mBALF,4EACE,kBAGF,6EACE,mBAKF,kGACE,mBAGF,oGACE,kBALF,yDACE,mBAGF,0DACE,kBCvCN,qCAEE,aADA,YACA,CAEA,2CACE,OAIJ,sCAIE,oCAHA,WAEA,YADA,UAEA,CAGF,8BASE,yBAJA,aACA,eAHA,gBADA,WASA,+JACE,CADF,uJACE,CAOF,mBACA,kDAJA,8EAZA,kBAGA,aACA,kBAOA,6GALA,gEATA,UAmBA,CAEA,4CAIE,qBAHA,eACA,eACA,eACA,CAEA,kDACE,sBAKN,8BAEE,aADA,YACA,CAEA,oDACE,avCrDW,CuCsDX,0BAIA,4CACE,kBADF,6EACE,kBAKF,oGACE,mBADF,0DACE,mBCpER,eACE,aAEA,4BAEE,8BADA,YACA,CAGF,+BACE,oBACA,gEAIA,4CACE,uBAGF,wGAEE,axCTa,CwCUb,4BAIA,0CACE,kBAGF,2CACE,mBALF,2EACE,kBAGF,4EACE,mBAKF,gGACE,mBAGF,kGACE,kBALF,wDACE,mBAGF,yDACE,kBCvCN,+BAGE,aADA,aADA,eAEA,CAEA,qDACE,azCJW,CyCKX,0BAIJ,sCAEE,WAGE,oDACE,kBADF,qFACE,kBAKF,oHACE,mBADF,kEACE,mBCzBR,SACE,aAKA,eACA,YALA,SACA,SAIA,CAEA,uBACE,mBAEA,mCACE,iBAGF,qCACE,kB1COsB,C0CNtB,0CACA,YACA,WCnBN,wBAIE,iB3CIiB,C2CHjB,gCAGA,iB3CawB,C2CZxB,uCAHA,mBACA,iBANA,eAEA,cADA,cAOA,CAGA,uCACE,YAGF,mDACE,YACA,kBAEA,qDACE,cCtBN,mBAGE,iBAAiB,CAFjB,YAEkB,CAElB,kCAEE,aACA,mBAFA,aAEA,CAEA,mDACE,aACA,sBACA,iBACA,cAEA,uDAEE,WADA,SACA,CAIJ,yDACE,gBCtBN,gBAKE,uDAAyD,CAJzD,aAEA,eADA,gBAG0D,CAE1D,0CAEE,oBADA,aAGA,kBADA,eACA,CAEA,kEACE,UAEA,+FAUE,mBATA,4BAIA,4BADA,yBAEA,sBAKA,a7CxBS,C6CyBT,6BAJA,oBALA,YAMA,uBAPA,SAKA,aAKA,CAEA,gHACE,uCACA,kBAMR,gCAGE,mBAIA,6BADA,0BADA,sBAHA,aAEA,uBAIA,QAAO,CAPP,iBAOA,CAEA,gDAOE,mBAFA,aAHA,yBAIA,uBAFA,8BADA,mBAFA,uBAMA,CAGF,wDAOE,qCAHA,YACA,oBAGA,QAAO,CANP,gBADA,eAKA,gBAHA,UAKA,CAGF,sCACE,aAGF,gDACE,a7CvEW,C6CwEX,6BAGF,iDACE,uCACA,iBACA,kBAEA,iEACE,a7ChFS,C6CiFT,4BAKF,8CACE,kBAGF,+CACE,mBALF,+EACE,kBAGF,gFACE,mBAKF,4GACE,a7CjGS,C6CkGT,4BAGF,wGACE,mBAGF,0GACE,kBAVF,8DACE,a7CjGS,C6CkGT,4BAGF,4DACE,mBAGF,6DACE,kBAKN,uCAKE,mBADA,aAEA,uBAJA,kBACA,gBAFA,cAKA,CAEA,6CACE,0BC9HN,QAGE,qBAFA,YACA,mBAEA,sBAEA,cACE,qCAAsC,CACtC,uCAAwC,CACxC,sCAAuC,CAGzC,iBAME,yDAA2D,CAC3D,qDAAuD,CACvD,yDAA2D,CAC3D,uDAAyD,CACzD,iEAAmE,CACnE,8CAA+C,CAV/C,wB9CLgB,C8CMhB,6CACA,a9CVa,C8CWb,qCAOgD,CAGlD,oBAEE,yB9CxBc,C8CyBd,uCACA,aAHA,kCAGA,CAEA,kCAEE,mBADA,aACA,CAIJ,0BACE,aACA,mCAEA,4BACE,YAGF,kCACE,cAIJ,aAGE,mBADA,aAEA,yBAHA,+DAGA,CAGF,8BACE,oBAEA,2CAEE,YADA,mBACA,CAIJ,mBACE,wCAGF,oBACE,OACA,YAGF,kBACE,yCAGF,yBASE,+BAAgC,CAChC,iBAAiB,CALjB,cADA,gBAEA,kBAHA,cADA,gBAKA,uBANA,kBASkB,CAGpB,wBACE,YAEA,kBADA,UACA,CAGF,wBACE,mBAGF,0BACE,aACA,8BACA,gBAEA,4BACE,qBACA,qBAIJ,sBAME,WAJA,kBADA,gBAGA,gBACA,uBAFA,kBAGA,CAGF,sBACE,aACA,YAGF,uBACE,aACA,cAEA,wCAEE,YADA,WACA,CAEA,kDACE,a9ChIc,C8CiId,+BAIJ,uCACE,kBAIJ,qBACE,oBACA,mBAGF,iBACE,kBAGF,uDAGE,uBAKA,oBAJA,gBAEA,iBADA,gBAEA,eALA,iBAMA,CAGF,yEAKE,aAAY,CADZ,kBADA,WAEA,CAGF,2BACE,kBAIA,iDAME,qCAFA,SAHA,WACA,cAKA,oBAJA,kBAEA,UAEA,CAGF,4CAEE,qBAIA,yDAME,qCALA,WACA,cAKA,oBAJA,kBACA,QACA,UAEA,CAKN,oCAGE,kBADA,kBACA,CAGF,8CAEE,mBACA,gBACA,uBACA,mBAGF,uBACE,eAGF,iBAIE,aACA,eAFA,gBADA,gBADA,gBAIA,CAEA,mBACE,kBAIJ,oBACE,YAGF,qBACE,wCAEA,kCACE,a9CzOa,C8C0Ob,4BAIJ,yBACE,0CAGA,YAFA,iBACA,UACA,CAGF,uBAEE,cAAa,CADb,sBACA,CAEA,8BAEE,YAEA,yCADA,sBAFA,UAGA,CAIJ,uBACE,uBACA,sBAGF,kBACE,GACE,UAGF,GACE,WAIJ,wBAGE,aACA,sCAHA,kBACA,UAEA,CAEA,0BAEE,MAAK,CADL,aACA,CAIJ,eAME,aACA,iBALA,aACA,kBAEA,gBAJA,mBAGA,sBAGA,CAEA,uFAGE,iBAEA,mBADA,iBACA,CAGF,2DAGE,gBADA,sBACA,CAGF,gCAEE,cAEA,kBAHA,gBAEA,iBACA,CAGF,4BACE,cAGF,2BACE,aACA,iBAEA,kCACE,YAIJ,uBAGE,cAFA,cACA,gBACA,CAIJ,oBAEE,gBAAe,CADf,aACA,CAGF,oBACE,OAGF,6BACE,sCAGF,eAEE,aACA,gBAFA,UAEA,CAGF,oBAKE,mBADA,aAHA,OACA,gBACA,iBAEA,CAEA,2BAME,kDALA,WAEA,YAEA,OAHA,kBAEA,SAEA,CAIJ,oBACE,wCACA,gEAEA,gCACE,uCACA,gBAEA,kBADA,wBACA,CAGF,iCAEE,gBADA,mBAEA,gBAGF,sCACE,0BAIJ,yBACE,yBACE,iBAGF,qBAEE,YADA,UACA,CAIA,8BAEE,YADA,UACA,EAKN,uBAEE,oCACA,2CAFA,eAEA,CAEA,2CACE,aAIJ,sCACE,YAEA,2CACE,cChbJ,8CACE,kBAGF,yBACE,qCACA,8CACA,iB/CUoB,C+CTpB,qCACA,a/CTa,C+CUb,0BACA,cAEA,cADA,YACA,CAEA,yCACE,oBAGF,kDACE,aAEA,8BACA,mBAFA,UAEA,CAGF,+CACE,gBAIJ,cAEE,mBADA,UACA,CCrCJ,cAIE,qBAGA,iBAAiB,CALjB,uBhDOiB,CgDPjB,iBhDOiB,CgDNjB,gCAEA,qBAEkB,CAElB,oBACE,qCAAsC,CACtC,uCAAwC,CACxC,sCAAuC,CAGzC,qBAME,aACA,iBALA,aACA,kBAEA,gBAJA,mBAGA,sBAGA,CAEA,yGAGE,iBAEA,mBADA,iBACA,CAGF,uEAGE,gBADA,sBACA,CAGF,sCAEE,cAEA,kBAHA,gBAEA,iBACA,CAGF,kCACE,cAGF,iCACE,aACA,iBAEA,wCACE,YAIJ,6BAGE,cAFA,cACA,gBACA,CAIJ,yBACE,cAGF,uCACE,ahD1De,CgD2Df,4BAQF,sFACE,ahDrEc,CgDsEd,2BAGF,qCAEE,YhDzEgB,CgD0EhB,4BAGF,qCACE,ahDhFc,CgDiFd,2BC5FF,6BAEE,oBAGF,+BACE,ajDFa,CiDGb,0BAGF,6BACE,kBAEA,mDAKE,SADA,OAEA,oBALA,kBAEA,QADA,KAIA,CAIA,0DACE,2FAOR,cACE,sBAGE,4CACE,aAGF,yCACE,mBAIJ,uCACE,mBAGF,2BACE,aACA,OACA,iBAEA,WAAU,CADV,YACA,CAEA,6CAEE,YADA,UACA,CAGF,kCACE,uBAAwB,CACxB,mBAAoB,CAKtB,2CACE,ajDhEW,CiDiEX,0BAKF,2CACE,SjDjEW,CiDkEX,sBAIJ,oDAIE,aACA,8BAFA,yBADA,cAGA,CAEA,8EACE,cACA,eACA,gBACA,uBACA,mBAKJ,sBACE,OAGF,mBACE,mBAGF,kCACE,OAEA,WAAU,CADV,iBACA,CAEA,2CACE,cACA,iBAGF,gDACE,kBAIA,+DACE,kBAKN,oCACE,gBAEA,cADA,iBAEA,WAGF,0CAEE,yCADA,qBACA,CAGF,oCAEE,qBAMA,aADA,WAEA,iBACA,8BAPA,oCAFA,YAIA,gBADA,kBAEA,UAIA,CAEA,qDACE,OACA,gBACA,uBAGF,8CACE,mBACA,eACA,uBACA,mBAGF,6CACE,kBAGF,oDACE,SACA,iBAGF,uCAIE,cACA,gBAHA,gBACA,UAFA,oBAIA,CAEA,6CACE,oBAIJ,sCAGE,gBC3LN,WACE,yBAEA,uBAME,sBALA,aAGA,+BADA,wBADA,iCAGA,UACA,CAEA,yBACE,gCAIJ,6BAGE,mBADA,aADA,UAEA,CAGF,8BAKE,eAJA,qBAEA,cACA,kBAFA,iBAGA,CAGF,sBAEE,qBADA,cACA,CAGF,iBAEE,aAGF,sBASE,oBlDvCa,CkDwCb,8CATA,mBACA,WAGA,qBAEA,gBACA,gBAJA,kBAEA,oBAHA,SAOA,CAGF,wCAaE,iCANA,sCACA,8BANA,aAIA,OAHA,kBACA,eACA,MAMA,wBADA,yBADA,8BARA,WAWA,wBACA,CAEA,gDAEE,gBADA,0BACA,CAIJ,wCAEE,mBAQA,wBlDlFW,CkDmFX,uCACA,kCACA,+BAJA,wBARA,aAKA,YAHA,8BAIA,iBACA,kBAHA,WADA,oCASA,CAEA,gDACE,OAGF,+CACE,gBACA,iBAIJ,iBACE,OAEA,8BACE,YAIJ,iCAQE,wBlDlHW,CkDmHX,mCAHA,alD7Ga,CkD8Gb,0BAJA,0CAFA,gBAGA,kBACA,kBAHA,WAOA,CAEA,gDAEE,gBACA,gBAFA,SAEA,CAEA,uDACE,gBAEA,gBADA,QACA,CAGF,6DACE,gBAGF,sEACE,gBACA,gBAMJ,8CACE,aAGF,2DACE,aClJN,WAEE,qBADA,oBAGA,yBADA,uBACA,CAEA,qBACE,WAGF,uDAEE,YAGF,6BACE,cAGF,0BACE,YAGF,wBACE,anDpBa,CmDqBb,mCC1BJ,YACE,WACA,yBAEA,kBACE,8CAGF,cACE,gCAGF,uBAKE,sBAJA,aAGA,4CADA,mCADA,wCAKA,YACA,gBAFA,eAEA,CAGF,uCACE,kBAAmB,CACnB,kBAAmB,CACnB,eAAgB,CAEhB,8HACE,CAOJ,iCAEE,4CADA,kCACA,CAGF,6CACE,4KACE,CASF,4DAEE,apDjDW,CoDkDX,mCAGF,mCACE,wBpDxDS,CoDyDT,iDACA,apDxDW,CoDyDX,0CAGF,qCACE,apD7DW,CoD8DX,2CAGF,oCAGE,wBpDtES,CoDuET,iDAHA,apDlEW,CoDmEX,yCAEA,CAIJ,kBACE,eACA,kBACA,mBAEA,wBADA,mCACA,CAEA,yBAPF,kBASI,qBAGF,wBAIE,wBpD3FS,CoD4FT,2CAGA,SACA,OAPA,kDADA,oDAEA,4CAGA,kBAIA,OAAM,CAHN,KAGA,CAGF,sBACE,qBACA,4BAIJ,sBAGE,YAFA,iBAGA,kBAFA,SAEA,CAEA,sCACE,apD9GW,CoD+GX,gCAIJ,sBACE,mBAGF,qBACE,kBAGF,kBAKE,aAJA,OAKA,eAHA,4BADA,iCAEA,eAEA,CAEA,wBACE,yBACA,iBAIJ,oBACE,UC9IF,4BAGE,oEAGF,oBAEE,aADA,iBACA,CCTJ,sBAIE,gBAFA,gBACA,gBAFA,UAGA,CAEA,kCAIE,mCtDDe,CsDCf,yBtDDe,CsDEf,gCAJA,aACA,8BAIA,gBAGF,2BAGE,sBADA,oCADA,uBAEA,CAEA,+BACE,kBAEA,0CACE,gBAIJ,6BACE,aAGF,iDACE,iBAIA,gBAFA,gBADA,YAEA,8BAEA,WAGF,gCACE,eACA,cAGF,kCAEE,kBADA,cACA,CAIJ,4BACE,aACA,sBACA,gBAGF,4BACE,aACA,8BAGA,oCACE,OAGF,sCACE,aAIJ,yBACE,kCACE,mBAGF,2BAIE,sBtDxEa,CsDwEb,iBtDxEa,CsDyEb,gCAHA,gBAIA,cALA,SAKA,CAEA,+BACE,kBAIJ,4BAEE,cACA,mBAFA,SAEA,EC/FN,iCACE,uBAGF,uBACE,cAEA,kBADA,eAGA,gBADA,UACA,CAEA,8BAPF,uBAQI,eAGF,yCACE,gBAEA,qDACE,sBCnBN,iCACE,uBAGF,uBACE,cAEA,kBADA,eAGA,gBADA,UACA,CAEA,8BAPF,uBAQI,eCZJ,sCACE,uBAGF,4BACE,cAEA,kBADA,eAGA,gBADA,UACA,CAEA,8BAPF,4BAQI,eCVJ,oBAQE,mBAFA,aACA,sBAHA,oBAHA,eACA,sCACA,WAEA,iCAGA,CAEA,mCAKE,aAEA,cACA,mBAJA,2BAEA,mBALA,oBACA,kBACA,UAKA,CAEA,mDACE,cAIJ,kCACE,2CACA,CAEA,oFAFA,wCAGE,CAIJ,oCACE,gDACA,CAEA,wFAFA,0CAGE,CAIJ,oCACE,iDACA,CAEA,wFAFA,0CAGE,CAIJ,iCACE,iDACA,CAEA,kFAFA,0CAGE,CAIJ,kCACE,mBAEA,wDACE,WCpEN,OCIE,wB5DAa,oC4DFb,YACA,sBACA,CAHF,iBAKE,qBAEA,kB5DasB,sC4DVpB,cAMA,QACA,CAGA,qCACA,8BACA,CATF,UACE,CAGA,MACA,CAIA,oBARA,iBACA,CAGA,OACA,CAJA,KACA,CAGA,SAIA,aAIJ,mCACE,0BAEA,oBACE,cACA,WACA,kBACA,eAGF,eACE,CACA,SADA,WAEA,8BAIJ,oCAEE,4BACA,+BACA,8GACA,CAOA,0CACA,CACA,qBACA,CARA,qBACA,aACA,CAIA,SACA,CAHA,sBACA,CAHA,qBACA,sCACA,CAKA,oCACA,gDACA,CAHA,2CACA,CAXA,iBAEA,CAWA,SACA,gEAEA,6BACE,yJAEA,YAEE,+FAKF,kB5DvDoB,sC4D0DlB,8CAIJ,eACE,yBACA,qFAOA,QACA,CALF,UAEE,CAIA,MACA,qBALA,iBACA,CAEA,OACA,CAHA,KAKA,4CAGF,eACE,4CAKA,kBADA,sBACA,CAFF,kBAGE,qMAYE,mBALA,qBACA,CAJF,0CAEE,CAEA,QACA,CAHA,YACA,CAEA,aACA,CACA,gBACA,CAFA,aAGA,gBAUJ,iBACA,CAEA,wB5DhIa,oC4D4Hb,oBACA,CACA,sBAIA,qCARF,2BACE,kEAeE,CARF,qBAEA,wB5DnIa,sC4DqIX,CAGA,oCAHA,UAIA,wCAGF,a5DzIe,+B4D4Ib,gRAKA,sBAGE,uBAIJ,4BACE,0B5D3Jc,4C4D6Jd,4BAGF,yB5DhKgB,2C4DkKd,uDAIA,aACE,6HAEA,a5DxKW,kC4D2KT,8DAGF,wB5DhLS,gD4DkLP,c5DhLS,yC4DkLT,gEAGF,a5DrLW,0C4DuLT,+DAGF,a5D1LW,yC4D4LT,kCAKN,kBACE,CAEA,oCACA,sDACA,kDAJA,iBACA,oCAIA,yCAEA,qBACE,CACA,WACA,CAFA,qDACA,CAEA,kBADA,UAEA,6CAEA,eACE,gCAKN,kBACE,CAEA,iDAFA,iBACA,oCAEA,oCAEA,eACE,eAOJ,kBACA,CAEA,gCALF,2BACE,kEACA,CAEA,kBACA,CAFA,oBAGA,OD1OF,sBACE,uBACA,sBAEA,0BACA,iBACA,0BACA,iBACA,mBACA,MAGF,cACE,MASA,kCACA,kCACA,CAJA,a3DlBe,0B2DoBf,CALF,sBACE,4CACA,SACA,CAKA,eACA,mBAFA,0BAGA,aAEA,YACE,0BAOJ,EACE,sCACE,qBAEA,sBACE,sDAGF,2BAEE,CACA,+BADA,8BAEA,4BAMF,kBACE,CAEA,sCAFA,oBAGA,uCAEA,uFACE,iDAEA,qIAEI,0FAEF,iDAGF,qIAEI,0FAEF,qCAIJ,uFACE,+CAEA,qIAEI,uFAEF,+CAGF,qIAEI,uFAEF,MAQN,4BADF,oDAEE,IAKF,a3DxGe,2B2DuGjB,oBAGE,IAGF,QACE,aAGF,oBACE,CACA,iBADA,iBAEA,6CAGF,U3DtHiB,uB2D0Hf,sLAKA,iBAGE,KAKF,wB3D3Ia,uC2D6Ib,CAEA,iCACA,+BACA,sBACA,CALA,yB3D5IgB,uC2D8IhB,CAGA,2BACA,gBATF,wBAUE,UAGF,iBACE,QAGF,iBACE,yBACA,qBAIA,gBADF,wBAEE,gBAGF,iBACE,kBACA,gBAGF,gBACE,iBAWA,iCACA,8CACA,yBAHA,2BACA,CAFA,qBACA,CANA,WACA,CAEA,MACA,CALF,cACE,CAIA,WACA,CAJA,wBACA,cAQA,WAMA,gCACA,iDACA,CALF,oBACE,aACA,oBACA,CAEA,aACA,aAGF,kBACE,mBACA,gBACA,uBACA,oGACA,kGACA,oGACA,CAUA,wBACA,eACA,CAPE,qCAEF,CAJA,2FAEE,CAEF,sBACA,CAIA,sBACA,CAJA,aACA,CAGA,gBACA,iBAdA,iBAeA,iCAPA,qBACA,CAPA,YAyBE,CAZF,oBAEA,kCACE,CAQA,oBAJA,YACA,CAHA,0BACA,CAEA,uCACA,uCACA,+BAEA,uCAEA,+BACE,2BAGF,SACE,kCAGF,eACE,CACA,iBADA,aAEA,iCAGF,6CACE,CAMA,8CACA,CAJA,6CACA,CACA,iBACA,CAFA,eACA,CAEA,wEAPA,eAEA,yBAMA,sEAIA,sDAEI,+CACA,0EAFF,oBAGE,0EAEA,aACE,QACA,yDAKN,6BACE,0CAMJ,oBACE,+DAMA,iBACE,MACA,2BASJ,oBAFA,qBACA,CAHF,YACE,2BACA,CACA,WAEA,2CAKE,sCAFJ,2FAIE,mBAKE,6CAFJ,6HAKE,4BAII,6CAFJ,6HAKE,qBAKF,6BACA,CAFF,2BACE,CACA,SACA,6BAGE,kCADF,aAEE,mLAGF,wBAKE,0BACA,CAKA,mGAKF,YACE,cAKN,iBACE,iBAMA,wB3D5Wa,oC2D8Wb,YACA,kB3D7VoB,mC2D+VpB,CACA,4F3DxVuB,+B2D0VvB,CAVA,a3DxWe,6B2D0Wf,CAKA,cACA,CAGA,sBACA,6CAFA,aACA,CAZF,wBACE,CADF,qBACE,CADF,gBAcE,0BAEA,sBACE,iEAGF,a3D3Xe,6B2D8Xb,mCAGF,WACE,uBAGF,qCACE,oCACA,wBAUA,wB3DnZW,4C2D4Yb,0GAEI,sCAOF,4EAJA,a3D/Ya,oC2DwZX,0BAOF,wB3DjaW,6C2D8Zb,kBAKE,kFAJA,a3D7Za,qC2DsaX,yBAMF,wB3D9aW,2C2DgbX,2GAEE,sCAGF,+EATF,a3D1ae,oC2DwbX,wBAOF,mC3DpbmB,uD2DibrB,a3D5be,yC2Dicb,kBAIJ,eACE,YACA,CAQA,sBACA,eAFA,cACA,CAPA,cACA,CAEA,mBACA,CAFA,cACA,CAEA,iBACA,CAPA,YACA,CAIA,SACA,CAJA,kBAQA,wBAEA,a3Dlde,0B2Dodb,6BAGF,UACE,6CAIA,a3DzdkB,+B2D2dhB,uBAKN,gBAUE,CASA,wB3Dzfa,sC2D2fb,CAXA,WAEA,kB3D/dsB,qC2DietB,mGAEE,8BAGF,CAQA,qBACA,CAPA,a3DrfoB,+B2DufpB,CAKA,oBACA,CANA,sBACA,wCACA,cACA,CAKA,oBACA,CADA,YACA,CAFA,aACA,CALA,QACA,CAKA,0BAHA,iBAIA,kDA7BE,eACA,CAFF,eACE,CACA,eACA,aACA,kLA4BF,kBAGE,WACA,2DAGF,eACE,YACA,CACA,eACA,QAFA,QAGA,2DAGF,YACE,0HAIE,uCAFF,qDACE,gEAEA,yTAIA,UAGE,kGAcF,wB3DnjBS,sC2DqjBT,CANA,kBACA,8BACA,8BACA,CAOA,qBACA,kBACA,CAhBA,UACA,CAFA,oBACA,CAFF,aACE,CAcA,eACA,CAXA,YACA,CAQA,eACA,CANA,iBACA,CAQA,gBALA,iBACA,CAXA,yBACA,CAQA,kBACA,CATA,WAeA,mIAKF,a3D/jBa,+B2DikBX,oVAIA,UAGE,2GAeF,wB3DzlBS,sC2D2lBT,CAPA,iB3DnkBqB,wC2DqkBrB,8BACA,8BACA,CAOA,qBACA,kBACA,CAjBA,WACA,CAFA,oBACA,CAFF,aACE,CAeA,eACA,CAZA,YACA,CASA,eACA,CANA,iBACA,CAQA,gBALA,iBACA,CAZA,oBACA,CASA,kBACA,CAVA,WAgBA,iEAIJ,eACE,UAMF,oCADF,uBAEE,QAKA,wB3DpnBa,oC2DknBf,a3D/mBiB,0B2DmnBf,sBAGF,4BACE,CADF,yBACE,CADF,oBACE,2HAIE,aAFF,SAGE,aAKF,YACA,yBACA,+BAHF,eAIE,gBAEA,8BACE,iCACA,CACA,aADA,YAEA,YAIJ,aACE,WACA,YAIA,mBACA,CAFF,iBACE,CACA,qBACA,+CAIE,cAFF,iBAGE,iMAIE,6BAFF,yBAGE,qMAKA,4BAFF,wBAGE,KAKN,UACE,eAGF,YACE,QAKA,kBACA,CAHF,qBACE,qBACA,CAQA,cACA,CAFA,iBACA,CAFA,eACA,CAJA,YACA,CAKA,aACA,CATA,cACA,gBACA,CASA,eACA,CATA,aACA,CAKA,iBACA,CAEA,uBARA,qBACA,CAKA,kBAGA,2BAEA,oB3D/rBe,8C2DisBb,WACA,wCACA,QAMF,iB3D7rBwB,wC2D2rB1B,cACE,gBAGA,cAEA,mC3DxsBqB,sD2D0sBnB,c3DrtBa,oC2DutBb,6BAEA,a3DztBa,yC2D2tBX,gBAIJ,oC3DntBuB,yD2DqtBrB,c3DjuBa,sC2DmuBb,+BAEA,a3DruBa,2C2DuuBX,gBAIJ,wDACE,sCACA,+BAEA,0CACE,CAOJ,mBAGF,yB3D3vBkB,uC2D6vBhB,mBAEA,yBACE,oBAKF,oCACA,kDACA,kB3DrvBsB,sC2DkvBxB,YAKE,qBAGF,kBACE,kBACA,8BAME,cADA,YACA,CAJF,iBACE,CACA,OACA,CAFA,KAIA,uDAKF,eAEE,iFAKF,cAGE,YAIJ,WACE,aAGF,iBACE,0BAEA,YAHF,YAII,gBAGF,oBACE,cACA,WACA,qBAIJ,cACE,0BAMA,OAFA,eACA,CAFF,iBACE,CACA,SAEA,0BAGF,eACE,YACE,kBAIJ,GACE,sBACE,IAGF,wBACE,wBAIJ,GACE,uBACE,KAGF,6BACE,KAGF,8BACE,KAGF,6BACE,KAGF,8BACE,KAGF,6BACE,KAGF,8BACE,IAGF,uBACE,wCAKJ,sBAEE,qCAGF,SAEE,gCAUA,kBACA,CAPF,aACE,CACA,UACA,YACA,gBACA,CAEA,SACA,mBAHA,kBACA,CALA,SAQA,CE/4BF,qBAEE,yCADA,sCACA,CAGF,4BAKE,oBADA,aAEA,sBALA,kCAKA,CCXF,cACE,UAEA,kDAOE,oBALA,2CACA,gBAGA,aAEA,sBAPA,kCAOA,CAGF,gCAEE,yCADA,sCACA,CAGF,qDACE,uBAAwB,CACxB,mBAAoB,CAEpB,kBAGF,wCAEE,2CACA,eAAc,CAFd,uCAEA,CAGA,sFAGE,oBADA,aAEA,sBAIJ,8CACE,mCAGF,mCACE,2CACA,gBAGF,iTAKE,mBAGF,kEACE,wCAIF,mDAKE,2CAHA,4DACA,4BACA,iEACA,CAGF,sCACE,2CCvEJ,uBAME,wBAAuB,CADvB,0BADA,eADA,iBADA,gBADA,eAKA,CAEA,0BACE,gBACA,SACA,UAGF,yBACE,cAEA,aACA,kBAFA,eAEA,CAEA,+BAGE,a/DlBW,C+DmBX,qCAKgD,CAGlD,2EANE,qDAAuD,CACvD,yDAA2D,CAC3D,6DAA+D,CAC/D,8CAA+C,CAR/C,wB/Ddc,C+Ded,4CAoBgD,CAVlD,4CAIE,a/DhCW,C+DiCX,sCAJA,kBASgD,CAEhD,kDACE,0BAIJ,6BAEE,kBADA,iBACA,CAIJ,0BAEE,uB/DhDe,C+DgDf,iB/DhDe,C+DiDf,gCACA,UAEA,uCAGE,8B/D9CkB,C+D+ClB,kDAHA,+B/D5CkB,C+D6ClB,kDAEA,CAGF,qCACE,YAKN,cACE,kBACA,YAEA,sCACE,sBAGF,2BAEE,wBAAuB,CADvB,yBACA,CAGF,mCAEE,eAGA,aAJA,SAEA,gEACA,UACA,CAEA,uDACE,gBACA,uBACA,mBAGF,uCACE,iBACA,yBAGF,kDACE,eACA,YAIJ,4CACE,a/D5Ga,C+D6Gb,+BACA,yBAGF,qBACE,gCCtHF,qBACE,mBACA,WAGA,qBAEA,gBACA,gBAFA,oBAHA,SAMA,CAGF,4CAHE,qCALA,iBAoBA,CAZF,uBAIE,mCAQA,8BAXA,gBAKA,sBAJA,cAOA,iBACA,gBAFA,aALA,iBAIA,oBAKA,CAGF,2BACE,kBAGF,mBACE,gBAGF,gCACE,oEACA,UAIA,sCAEE,mBACA,eAFA,iBAEA,CAEA,mGAEE,gBACA,WCjDR,cACE,aAEA,wBAEE,cADA,gBACA,CAGF,uBACE,sBAEA,6BAME,cADA,mBAFA,gBADA,kBAEA,gBAHA,UAKA,CAEA,uEAME,oEAJA,WACA,aAGA,CAGF,0CACE,WAEA,6DAME,oEAHA,SAFA,OACA,OAIA,CAIJ,kCAGE,4BACA,6BAEA,oBAJA,cAGA,oBAJA,UAKA,CAIJ,iDACE,aAIJ,wBACE,mBAEA,yBAHF,wBAII,iBAGF,kCACE,cAGF,8BACE,cAGA,sBADA,kBADA,eAEA,CAEA,yEAOE,kEAHA,WADA,gBADA,aAKA,CAGF,oCACE,YAGF,qCACE,YAGF,2CAEE,aACA,sBAFA,cAEA,CAEA,yBALF,2CAMI,eAGF,8DAME,kEAHA,SADA,QADA,KAKA,CAGF,kDAKE,kEAHA,WADA,YAIA,CAGF,2DACE,gBAIJ,mCAME,6BADA,0BAHA,uBADA,OASA,gBADA,oBANA,eACA,cAGA,iBACA,+BAEA,CAEA,yBAZF,mCAgBI,kBADA,iCAFA,mBACA,iCAEA,CAEA,yCACE,cAOV,wBACE,cACA,aAEA,gCACE,aAGF,kDAEE,aACA,sBAFA,WAEA,CAEA,sEACE,OAIJ,wCACE,gBAIJ,mBAGE,gBAFA,kBACA,kBACA,CAEA,gCACE,UAEA,sCACE,UAIJ,0BACE,uBAEA,ajEvLW,CiEwLX,mCAFA,SAEA,CAGF,uBAGE,gBAFA,gBACA,kBACA,CAIJ,oBAGE,sBAFA,aACA,iBACA,CAEA,qDAEE,cACA,cAIJ,2BAEE,aACA,cAFA,iBAEA,CAGE,8CACE,WACA,kBACA,UAKN,4BAME,2CADA,oBADA,iBADA,gBADA,qBADA,iBAKA,CAEA,yBARF,4BASI,cCzON,YAME,iBAAiB,CALjB,YAKkB,CAElB,kCANA,gBACA,uBACA,kBAUE,CANF,sBAKE,qBADA,eAHA,cAKA,CAGF,8BACE,kBACA,cAGF,6BAIE,kBlEFwB,CkEGxB,0CAHA,aADA,kBAEA,WAEA,CAEA,6CACE,aCjCN,gBAME,sBACA,eANA,aACA,mBAEA,WACA,gBAFA,aAIA,CAEA,uBACE,aAGF,sBACE,6CACA,sCAGF,qCACE,iBAGF,uCAIE,qBAFA,sBACA,gBAFA,UAGA,CAGF,yBAEE,oBACA,8BACA,gBAHA,UAGA,CAGF,+BACE,mBAGF,uCAIE,cACA,oCAFA,gBAFA,uBACA,kBAGA,CAGF,8BAME,anE/Ca,CmEgDb,2BANA,oBAIA,eAHA,gBAEA,uBADA,mBAKA,WAGF,kBACE,+BAEA,oBADA,oBACA,CAIA,8CACE,aAGF,2CACE,mBAIJ,wBACE,kBnEjDwB,CmEkDxB,0CAGF,mCACE,kBAAmB,CAEnB,kBAGF,8BACE,oCCtFJ,iBAME,iBAAiB,CALjB,aACA,SACA,SACA,gBAEkB,CAElB,mCAGE,OAFA,iBAGA,WAAU,CAFV,eAEA,CAIA,+BAEE,YADA,yCAGA,sBADA,UACA,CAIJ,8DAEE,qBACA,eACA,gBAEA,uBADA,kBACA,CAGF,kCACE,OACA,iBACA,YCpCF,sBACE,aACA,iBAEA,4BACE,WAIJ,uBACE,kBAGF,uBACE,qBAGF,iCAEE,6CADA,cACA,CAGF,0BAIE,iBADA,YADA,cADA,kBAIA,0CCzBJ,WAEE,eAAc,CADd,eACA,CAGF,uBAKE,atENe,CsEOf,2BAHA,aADA,gBAEA,uBAHA,WAKA,CCTI,oEACE,aAGF,iEACE,mBAKN,yCAEE,UACA,kBACA,UAHA,sBAGA,CAEA,gDAEE,oBADA,gBACA,CAIJ,iCACE,eAEA,mGAEE,avEzBW,CuE0BX,0BAIJ,+BACE,WAGF,oCACE,aACA,oBAEA,uDACE,qCAAsC,CACtC,uCAAwC,CACxC,sCAAuC,CAI3C,sCACE,mBACA,WAGF,uEAEE,kBAGF,8BACE,kBvElC0B,CuEmC1B,4CACA,aACA,cAGF,kCAEE,YACA,eAEA,kBADA,oBAEA,WALA,iBAKA,CAME,8EAEE,YACA,qBAFA,kBAEA,CAMJ,qGAEE,mBAKF,iGAEE,SvEtFW,CuEuFX,mCAIJ,0CAGE,uBAFA,aACA,sBAEA,cACA,eACA,WAGF,gCAGE,kBAFA,aACA,mBAEA,yBAEA,kCACE,6CAGF,wCAEE,sDACA,4DAFA,4CAEA,CAGF,oDACE,qBAGF,mDACE,YAKF,kCACE,6CAGF,wCAEE,sDACA,2DAIA,sFANA,4CAOE,CAIJ,mDACE,WAOF,kHACE,WAIJ,+BACE,UAIJ,6BAKE,avE3Ke,CuE4Kf,iCAHA,eADA,eADA,kBAGA,+DAEA,CCnLF,WACE,aACA,YAEA,4BAIE,aAHA,YAEA,iBADA,UAEA,CAGF,2BAEE,uCAOA,4BACA,kEATA,sBAEA,aACA,sBAIA,SADA,8CADA,iBADA,UAKA,CAEA,iCACE,gBAIJ,yBAGE,aACA,sBAFA,YAGA,oBAJA,cAIA,CAGF,mBAGE,wBxEnCW,CwEoCX,mCAFA,SADA,gBAIA,UAGF,8BACE,2CAGF,2BAIE,iBADA,YADA,cADA,kBAIA,0CAGF,kCAWE,mBAJA,wBxE1DW,CwE2DX,oCALA,mBASA,6DAMA,eATA,aAPA,aAQA,uBAMA,UAZA,kBACA,YACA,WAQA,oBACA,kDAEA,kBAhBA,YAYA,UAKA,CAEA,0CACE,UACA,mBAGF,oCAEE,axE5EW,CwE6EX,0BAFA,aAEA,CAGF,wDAKE,mBAJA,eACA,SACA,iBACA,aAEA,kBAGF,sDAGE,qBADA,aAEA,YAHA,UAGA,CAEA,6DACE,WCrGN,+BAEE,aACA,mBAFA,cAGA,8BACA,kBAGF,oBAGE,gBAFA,gBACA,eACA,CAGF,2BAEE,iBADA,gBAEA,WChBF,uBAKE,8DAJA,aACA,iBAGA,CAEA,8BACE,eAGF,yBACE,eCZN,cAKE,qBAAqB,CAJrB,OACA,gBAGsB,CAEtB,6BACE,oBAGF,mCACE,cAEA,uCAIE,iBADA,eAFA,yCACA,qBAEA,CAEA,6CAEE,YADA,UACA,CAIJ,uDAGE,oCACA,iB3ETkB,C2EUlB,qCAJA,aACA,YAGA,CAEA,gFAME,0CAFA,uBAHA,aACA,gBAGA,gBAFA,gBAGA,CAGF,iFAEE,kBADA,aAEA,mBAGF,iKAOE,sBALA,gBAGA,gBACA,mBAHA,uBACA,kBAGA,CAKN,oCAGE,mBAFA,aACA,uBAEA,YAKF,sCAGE,mBAFA,aACA,uBAEA,YCzEJ,uBACE,yB5EEgB,C4EDhB,uCACA,eACA,kBAGF,yBAEI,qDACE,cAEA,cADA,uBAEA,mBAKN,eAGE,uB5EZiB,C4EYjB,iB5EZiB,C4EajB,gCAHA,qBAGA,CAGF,sBAKE,wB5E5Ba,C4E6Bb,sCAHA,gCADA,mBADA,qBAGA,YAEA,CAGF,wBAEE,aACA,uBAFA,aAEA,CAEA,sCAKE,sBAFA,eADA,qBAEA,cAHA,UAIA,CAGF,uCACE,iBAIJ,cACE,YAGF,OAEE,mBADA,YACA,CAEA,gBACE,cAGA,gBACA,uBACA,mBAGF,8BAPE,a5E1Da,C4E2Db,yBAcA,CARF,cACE,cAEA,iBAEA,gBADA,oBAEA,kBAJA,UAMA,CAIJ,sBACE,aACA,kBClFA,8CACE,iBCLJ,mBAIA,YACE,sBACA,YACA,+BAEA,YACE,mBACA,iCAEA,WACE,sCAIJ,YACE,YACA,iCAKA,YACA,CAFA,QACA,CACA,sBAHF,eAIE,6BAGF,gBACE,gBACA,gCAGF,YACE,sBACA,CACA,aACA,mBAFA,cAGA,uCAIA,sBACA,CAFF,yBACE,CACA,qCACA,oDAGF,aA/CiB,0BAiDf,gCAGF,gBACE,gBACA,qCAEA,eACE,mCAIJ,eACE,CACA,aADA,iBAEA,6CAEA,YACE,kCAIJ,gBACE,gBACA,6BAIA,mBADF,eAEE,yBAIA,WADF,eAEE,2BAGF,iBACE,0BAIJ,8BACE,6BACE,EC5FJ,qBAGE,mBAFA,aACA,sBAEA,YAEA,gCACE,aACA,SACA,sBACA,gBACA,gBAEA,kCACE,YAIJ,iCACE,aACA,sBAGA,mBAFA,kBACA,cACA,CAGF,4BAGE,uBADA,0BAEA,sCAHA,iBAGA,CAGF,4BAEE,kBADA,YACA,CAGF,8CACE,sDACA,eAGF,yCACE,mBAGF,8BACE,eClDJ,uCACE,aACA,mBAEA,8CAGE,SADA,kBADA,gBAGA,eACA,cAEA,yDACE,eCZN,aACE,WCDF,aACE,iBACA,gBAEA,8BACE,eCNJ,aACE,WAEA,mBAIE,oBADA,kBADA,gBADA,UAGA,CAEA,4CAGE,gBACA,gBACA,wBAHA,WAGA,CAGF,kDAEE,WChBN,WACE,aAGF,WACE,YAGF,6BAIE,apFPe,CoFQf,0BAHA,SACA,WAEA,CAEA,yCAME,qDAAuD,CACvD,yDAA2D,CAC3D,6DAA8D,CAP9D,wBpFTgB,CoFUhB,6CACA,apFba,CoFcb,qCAI+D,CCxBjE,wBACE,eCCF,6BACE,aACA,iBAEA,mCACE,WAIJ,8BACE,kBCXJ,eAGE,mBAGA,avFFe,CuFGf,0BANA,aAIA,cAHA,YAEA,sBAGA,CAEA,iCAGE,avFRa,CuFSb,0BAHA,cACA,qBAEA,CCbJ,UACE,0BAA2B,CAI3B,aACA,sBAHA,0CACA,eAEA,CAEA,6BACE,2CAGF,sBACE,aACA,OACA,sBACA,gBAGF,kCACE,cAGF,uBACE,kBAGF,sBAEE,gBADA,oBACA,CAGF,+CAGE,sBACA,YAAW,CAFX,eAEA,CAGF,0BAIE,iBADA,YADA,cADA,kBAIA,0CAGF,eACE,cAGF,wBACE,sCAEA,uCACE,cCzDN,qBAEE,oBADA,aAEA,sBAEA,4CACE,gBAGF,oCAIE,uBAFA,YACA,cAFA,eAGA,CCXJ,cACE,2CACA,gBACA,mCAEA,2CAEE,yCAOA,mDACE,aACA,sBAIJ,+BACE,aACA,mBACA,6BAEA,oCACE,OACA,WACA,eC3BJ,+BACE,mCAEA,6EAEE,yCAGF,4CACE","sources":["webpack://pleroma_fe/./src/components/modal/modal.vue","webpack://pleroma_fe/./node_modules/vue-virtual-scroller/dist/vue-virtual-scroller.css","webpack://pleroma_fe/./src/components/login_form/login_form.vue","webpack://pleroma_fe/./src/components/media_upload/media_upload.vue","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.vue","webpack://pleroma_fe/./src/_variables.scss","webpack://pleroma_fe/./src/components/checkbox/checkbox.vue","webpack://pleroma_fe/./src/components/popover/popover.vue","webpack://pleroma_fe/./src/components/still-image/still-image.vue","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.scss","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.vue","webpack://pleroma_fe/./src/components/select/select.vue","webpack://pleroma_fe/./src/components/poll/poll_form.vue","webpack://pleroma_fe/./src/components/flash/flash.vue","webpack://pleroma_fe/./src/components/attachment/attachment.scss","webpack://pleroma_fe/./src/components/gallery/gallery.vue","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.vue","webpack://pleroma_fe/./src/components/mention_link/mention_link.scss","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.scss","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.scss","webpack://pleroma_fe/./src/components/rich_content/rich_content.scss","webpack://pleroma_fe/./src/components/poll/poll.vue","webpack://pleroma_fe/./src/components/status_body/status_body.scss","webpack://pleroma_fe/./src/components/link-preview/link-preview.vue","webpack://pleroma_fe/./src/components/status_content/status_content.vue","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.vue","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.vue","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.vue","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.vue","webpack://pleroma_fe/./src/components/account_actions/account_actions.vue","webpack://pleroma_fe/./src/components/user_note/user_note.vue","webpack://pleroma_fe/./src/components/user_card/user_card.scss","webpack://pleroma_fe/./src/components/user_panel/user_panel.vue","webpack://pleroma_fe/./src/components/navigation/navigation_entry.vue","webpack://pleroma_fe/./src/components/navigation/navigation_pins.vue","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.vue","webpack://pleroma_fe/./src/components/features_panel/features_panel.vue","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.vue","webpack://pleroma_fe/./src/components/media_modal/media_modal.vue","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.vue","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack://pleroma_fe/./src/components/reply_button/reply_button.vue","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.vue","webpack://pleroma_fe/./src/components/react_button/react_button.vue","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.vue","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.vue","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.vue","webpack://pleroma_fe/./src/components/status_popover/status_popover.vue","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.vue","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.vue","webpack://pleroma_fe/./src/components/status/status.scss","webpack://pleroma_fe/./src/components/report/report.scss","webpack://pleroma_fe/./src/components/notification/notification.scss","webpack://pleroma_fe/./src/components/notifications/notifications.scss","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.vue","webpack://pleroma_fe/./src/components/search_bar/search_bar.vue","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.scss","webpack://pleroma_fe/./src/components/list/list.vue","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.vue","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.vue","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.vue","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.vue","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.vue","webpack://pleroma_fe/./src/App.scss","webpack://pleroma_fe/./src/panel.scss","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.vue","webpack://pleroma_fe/./src/components/conversation/conversation.vue","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.vue","webpack://pleroma_fe/./src/components/timeline/timeline.scss","webpack://pleroma_fe/./src/components/tab_switcher/tab_switcher.scss","webpack://pleroma_fe/./src/components/chat_title/chat_title.vue","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.scss","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.vue","webpack://pleroma_fe/./src/components/chat_new/chat_new.scss","webpack://pleroma_fe/./src/components/chat_list/chat_list.vue","webpack://pleroma_fe/./src/components/chat_message/chat_message.scss","webpack://pleroma_fe/./src/components/chat/chat.scss","webpack://pleroma_fe/./src/components/follow_card/follow_card.vue","webpack://pleroma_fe/./src/hocs/with_load_more/with_load_more.scss","webpack://pleroma_fe/./src/components/user_profile/user_profile.vue","webpack://pleroma_fe/./src/components/search/search.vue","webpack://pleroma_fe/./src/components/interface_language_switcher/interface_language_switcher.vue","webpack://pleroma_fe/./src/components/registration/registration.vue","webpack://pleroma_fe/./src/components/password_reset/password_reset.vue","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.vue","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.vue","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.scss","webpack://pleroma_fe/./src/components/lists_card/lists_card.vue","webpack://pleroma_fe/./src/components/lists/lists.vue","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.vue","webpack://pleroma_fe/./src/components/panel_loading/panel_loading.vue","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.vue","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.vue","webpack://pleroma_fe/./src/components/announcement/announcement.vue","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.vue"],"sourcesContent":["\n.modal-view {\n z-index: var(--ZI_modals);\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgb(0 0 0 / 50%);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgb(0 0 0 / 0%);\n }\n\n to {\n background-color: rgb(0 0 0 / 50%);\n }\n}\n",".vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.direction-horizontal{display:flex}.vue-recycle-scroller__slot{flex:auto 0 0}.vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.resize-observer[data-v-b329ee4c]{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:transparent;pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer[data-v-b329ee4c] object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}","\n@import \"../../variables\";\n\n.login-form {\n display: flex;\n flex-direction: column;\n padding: 0.6em;\n\n .btn {\n min-height: 2em;\n width: 10em;\n }\n\n .register {\n flex: 1 1;\n }\n\n .login-bottom {\n margin-top: 1em;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0.5em 0.6em;\n line-height: 24px;\n }\n\n .form-bottom {\n display: flex;\n padding: 0.5em;\n height: 32px;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n}\n","\n@import \"../../variables\";\n\n.media-upload {\n .hidden-input-file {\n display: none;\n }\n}\n\nlabel.media-upload {\n cursor: pointer; // We use <label> for interactivity... i wonder if it's fine\n}\n","\n@import \"../../variables\";\n\n.ScopeSelector {\n .scope {\n display: inline-block;\n cursor: pointer;\n min-width: 1.3em;\n min-height: 1.3em;\n text-align: center;\n\n &.selected svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n","$main-color: #f58d2c;\n$main-background: white;\n$darkened-background: whitesmoke;\n\n$fallback--bg: #121a24;\n$fallback--fg: #182230;\n$fallback--faint: rgb(185 185 186 / 50%);\n$fallback--text: #b9b9ba;\n$fallback--link: #d8a070;\n$fallback--icon: #666;\n$fallback--lightBg: rgb(21 30 42);\n$fallback--lightText: #b9b9ba;\n$fallback--border: #222;\n$fallback--cRed: #f00;\n$fallback--cBlue: #0095ff;\n$fallback--cGreen: #0fa00f;\n$fallback--cOrange: orange;\n\n$fallback--alertError: rgb(211 16 20 / 50%);\n$fallback--alertWarning: rgb(111 111 20 / 50%);\n\n$fallback--panelRadius: 10px;\n$fallback--checkboxRadius: 2px;\n$fallback--btnRadius: 4px;\n$fallback--inputRadius: 4px;\n$fallback--tooltipRadius: 5px;\n$fallback--avatarRadius: 4px;\n$fallback--avatarAltRadius: 10px;\n$fallback--attachmentRadius: 10px;\n$fallback--chatMessageRadius: 10px;\n\n$fallback--buttonShadow: 0 0 2px 0 rgb(0 0 0 / 100%),\n 0 1px 0 0 rgb(255 255 255 / 20%) inset,\n 0 -1px 0 0 rgb(0 0 0 / 20%) inset;\n\n$status-margin: 0.75em;\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.checkbox {\n position: relative;\n display: inline-block;\n min-height: 1.2em;\n\n &-indicator {\n position: relative;\n padding-left: 1.2em;\n }\n\n &-indicator::before {\n position: absolute;\n right: 0;\n top: 0;\n display: block;\n content: \"✓\";\n transition: color 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: $fallback--checkboxRadius;\n border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1em;\n font-size: 1.1em;\n color: transparent;\n overflow: hidden;\n box-sizing: border-box;\n }\n\n &.disabled {\n .checkbox-indicator::before,\n .label {\n opacity: 0.5;\n }\n\n .label {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n input[type=\"checkbox\"] {\n &:checked + .checkbox-indicator::before {\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n &:indeterminate + .checkbox-indicator::before {\n content: \"–\";\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n }\n\n &.indeterminate-fix {\n input[type=\"checkbox\"] + .checkbox-indicator::before {\n content: \"–\";\n }\n }\n\n & > span {\n margin-left: 0.5em;\n }\n}\n","\n@import \"../../variables\";\n\n.popover-trigger-button {\n display: inline-block;\n}\n\n.popover {\n z-index: var(--ZI_popover_override, var(--ZI_popovers));\n position: fixed;\n min-width: 0;\n max-width: calc(100vw - 20px);\n box-shadow: 2px 2px 3px rgb(0 0 0 / 50%);\n box-shadow: var(--popupShadow);\n}\n\n.popover-default {\n &::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 3;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n pointer-events: none;\n }\n\n border-radius: $fallback--btnRadius;\n border-radius: var(--btnRadius, $fallback--btnRadius);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--text;\n color: var(--popoverText, $fallback--text);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --postLink: var(--popoverPostLink, $fallback--link);\n --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n --icon: var(--popoverIcon, $fallback--icon);\n}\n\n.dropdown-menu {\n display: block;\n padding: 0.5rem 0;\n font-size: 1em;\n text-align: left;\n list-style: none;\n max-width: 100vw;\n z-index: var(--ZI_popover_override, var(--ZI_popovers));\n white-space: nowrap;\n\n .dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n .dropdown-item {\n line-height: 21px;\n overflow: hidden;\n display: block;\n padding: 0.5em 0.75em;\n clear: both;\n font-weight: 400;\n text-align: inherit;\n white-space: nowrap;\n border: none;\n border-radius: 0;\n background-color: transparent;\n box-shadow: none;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n\n --btnText: var(--popoverText, $fallback--text);\n\n &-icon {\n svg {\n width: 22px;\n margin-right: 0.75rem;\n color: var(--menuPopoverIcon, $fallback--icon);\n }\n }\n\n &.-has-submenu {\n .chevron-icon {\n margin-right: 0.25rem;\n margin-left: 2rem;\n }\n }\n\n &:active,\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n box-shadow: none;\n\n --btnText: var(--selectedMenuPopoverText, $fallback--link);\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n\n svg {\n color: var(--selectedMenuPopoverIcon, $fallback--icon);\n\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n\n .menu-checkbox {\n display: inline-block;\n vertical-align: middle;\n min-width: 22px;\n max-width: 22px;\n min-height: 22px;\n max-height: 22px;\n line-height: 22px;\n text-align: center;\n border-radius: 0;\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n margin-right: 0.75em;\n\n &.menu-checkbox-checked::after {\n font-size: 1.25em;\n content: \"✓\";\n }\n\n &.-radio {\n border-radius: 9999px;\n\n &.menu-checkbox-checked::after {\n font-size: 2em;\n content: \"•\";\n }\n }\n }\n }\n\n .button-default.dropdown-item {\n &,\n i[class*=\"icon-\"] {\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n }\n\n &:active {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuPopoverText, $fallback--link);\n }\n\n &:disabled {\n color: $fallback--text;\n color: var(--btnDisabledText, $fallback--text);\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledText, $fallback--text);\n }\n }\n}\n","\n@import \"../../variables\";\n\n.still-image {\n position: relative;\n line-height: 0;\n overflow: hidden;\n display: inline-flex;\n align-items: center;\n\n canvas {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n visibility: var(--_still-image-canvas-visibility, visible);\n }\n\n img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n &.animated {\n &::before {\n zoom: var(--_still_image-label-scale, 1);\n content: \"gif\";\n position: absolute;\n line-height: 1;\n font-size: 0.7em;\n top: 0.5em;\n left: 0.5em;\n background: rgb(127 127 127 / 50%);\n color: #fff;\n display: block;\n padding: 2px 4px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n z-index: 2;\n visibility: var(--_still-image-label-visibility, visible);\n }\n\n &:hover canvas {\n display: none;\n }\n\n &:hover::before {\n visibility: var(--_still-image-label-visibility, hidden);\n }\n\n img {\n visibility: var(--_still-image-img-visibility, hidden);\n }\n\n &:hover img {\n visibility: visible;\n }\n }\n}\n","@import \"../../variables\";\n\n$emoji-picker-header-height: 36px;\n$emoji-picker-header-picture-width: 32px;\n$emoji-picker-header-picture-height: 32px;\n$emoji-picker-emoji-size: 32px;\n\n.emoji-picker {\n width: 25em;\n max-width: calc(100vw - 20px); // popover gives 10px margin from window edge\n display: flex;\n flex-direction: column;\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--link;\n color: var(--popoverText, $fallback--link);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --icon: var(--popoverIcon, $fallback--icon);\n\n &-header-image {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: $emoji-picker-header-picture-width;\n max-width: $emoji-picker-header-picture-width;\n height: $emoji-picker-header-picture-height;\n max-height: $emoji-picker-header-picture-height;\n\n .still-image {\n max-width: 100%;\n max-height: 100%;\n height: 100%;\n width: 100%;\n object-fit: contain;\n }\n }\n\n .keep-open,\n .too-many-emoji {\n padding: 7px;\n line-height: normal;\n }\n\n .too-many-emoji {\n display: flex;\n flex-direction: column;\n }\n\n .keep-open-label {\n padding: 0 7px;\n display: flex;\n }\n\n .heading {\n display: flex;\n padding: 10px 7px 5px;\n }\n\n .content {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-height: 0;\n }\n\n .emoji-tabs {\n flex-grow: 1;\n display: flex;\n flex-flow: row nowrap;\n overflow-x: auto;\n }\n\n .additional-tabs {\n display: flex;\n border-left: 1px solid;\n border-left-color: $fallback--icon;\n border-left-color: var(--icon, $fallback--icon);\n padding-left: 7px;\n flex: 0 0 auto;\n }\n\n .additional-tabs,\n .emoji-tabs {\n flex-basis: auto;\n display: flex;\n align-content: center;\n\n &-item {\n padding: 0 7px;\n cursor: pointer;\n font-size: 1.85em;\n width: $emoji-picker-header-picture-width;\n max-width: $emoji-picker-header-picture-width;\n height: $emoji-picker-header-picture-height;\n max-height: $emoji-picker-header-picture-height;\n display: flex;\n align-items: center;\n\n &.disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n\n &.active {\n border-bottom: 4px solid;\n\n svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n }\n }\n\n .sticker-picker {\n flex: 1 1 auto;\n }\n\n .stickers,\n .emoji {\n &-content {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-height: 0;\n\n &.hidden {\n opacity: 0;\n pointer-events: none;\n position: absolute;\n }\n }\n }\n\n .emoji {\n &-search {\n padding: 5px;\n flex: 0 0 auto;\n\n input {\n width: 100%;\n }\n }\n\n &-groups {\n height: 100%;\n min-height: 200px;\n flex: 1 1 1px;\n position: relative;\n overflow: auto;\n user-select: none;\n mask:\n linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n linear-gradient(to top, white, white);\n transition: mask-size 150ms;\n mask-size: 100% 20px, 100% 20px, auto;\n // Autoprefixed seem to ignore this one, and also syntax is different\n mask-composite: xor;\n mask-composite: exclude;\n\n &.scrolled {\n &-top {\n mask-size: 100% 20px, 100% 0, auto;\n }\n\n &-bottom {\n mask-size: 100% 0, 100% 20px, auto;\n }\n }\n }\n\n &-group {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n padding-left: 5px;\n justify-content: left;\n\n &-title {\n font-size: 0.85em;\n width: 100%;\n margin: 0;\n\n &.disabled {\n display: none;\n }\n }\n }\n\n &-item {\n width: $emoji-picker-emoji-size;\n height: $emoji-picker-emoji-size;\n box-sizing: border-box;\n display: flex;\n line-height: $emoji-picker-emoji-size;\n align-items: center;\n justify-content: center;\n margin: 4px;\n cursor: pointer;\n\n .emoji-picker-emoji.-custom {\n object-fit: contain;\n max-width: 100%;\n max-height: 100%;\n }\n\n .emoji-picker-emoji.-unicode {\n font-size: 24px;\n overflow: hidden;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n\n.emoji-input {\n display: flex;\n flex-direction: column;\n position: relative;\n\n .emoji-picker-icon {\n position: absolute;\n top: 0;\n right: 0;\n margin: 0.2em 0.25em;\n font-size: 1.3em;\n cursor: pointer;\n line-height: 24px;\n\n &:hover i {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .emoji-picker-panel {\n position: absolute;\n z-index: 20;\n margin-top: 2px;\n\n &.hide {\n display: none;\n }\n }\n\n input,\n textarea {\n flex: 1 0 auto;\n }\n\n &.with-picker input {\n padding-right: 30px;\n }\n\n .hidden-overlay {\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n overflow: hidden;\n\n /* DEBUG STUFF */\n color: red;\n\n /* set opacity to non-zero to see the overlay */\n\n .caret {\n width: 0;\n margin-right: calc(-1ch - 1px);\n border: 1px solid red;\n }\n }\n}\n\n.autocomplete {\n &-panel {\n position: absolute;\n }\n\n &-item {\n display: flex;\n cursor: pointer;\n padding: 0.2em 0.4em;\n border-bottom: 1px solid rgb(0 0 0 / 40%);\n height: 32px;\n\n .image {\n width: 32px;\n height: 32px;\n line-height: 32px;\n text-align: center;\n font-size: 32px;\n margin-right: 4px;\n\n img {\n width: 32px;\n height: 32px;\n object-fit: contain;\n }\n }\n\n .label {\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.1em 0 0.2em;\n\n .displayText {\n line-height: 1.5;\n }\n\n .detailText {\n font-size: 9px;\n line-height: 9px;\n }\n }\n\n &.highlighted {\n background-color: $fallback--fg;\n background-color: var(--selectedMenuPopover, $fallback--fg);\n color: var(--selectedMenuPopoverText, $fallback--text);\n\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n","\n@import \"../../variables\";\n\n/* TODO fix order of styles */\nlabel.Select {\n padding: 0;\n\n select {\n appearance: none;\n background: transparent;\n border: none;\n color: $fallback--text;\n color: var(--inputText, --text, $fallback--text);\n margin: 0;\n padding: 0 2em 0 0.2em;\n font-family: sans-serif;\n font-family: var(--inputFont, sans-serif);\n font-size: 1em;\n width: 100%;\n z-index: 1;\n height: 2em;\n line-height: 16px;\n }\n\n .select-down-icon {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 5px;\n height: 100%;\n width: 0.875em;\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n line-height: 2;\n z-index: 0;\n pointer-events: none;\n }\n}\n","\n@import \"../../variables\";\n\n.poll-form {\n display: flex;\n flex-direction: column;\n padding: 0 0.5em 0.5em;\n\n .add-option {\n align-self: flex-start;\n padding-top: 0.25em;\n padding-left: 0.1em;\n }\n\n .poll-option {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n margin-bottom: 0.25em;\n }\n\n .input-container {\n width: 100%;\n\n input {\n // Hack: dodge the floating X icon\n padding-right: 2.5em;\n width: 100%;\n }\n }\n\n .delete-option {\n // Hack: Move the icon over the input box\n width: 1.5em;\n margin-left: -1.5em;\n z-index: 1;\n }\n\n .poll-type-expiry {\n margin-top: 0.5em;\n display: flex;\n width: 100%;\n }\n\n .poll-type {\n margin-right: 0.75em;\n flex: 1 1 60%;\n\n .poll-type-select {\n padding-right: 0.75em;\n }\n }\n\n .poll-expiry {\n display: flex;\n\n .expiry-amount {\n width: 3em;\n text-align: right;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.Flash {\n display: inline-block;\n width: 100%;\n height: 100%;\n position: relative;\n\n .player {\n height: 100%;\n width: 100%;\n }\n\n .placeholder {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--bg);\n color: var(--link);\n }\n\n .hider {\n top: 0;\n }\n\n .label {\n text-align: center;\n flex: 1 1 0;\n line-height: 1.2;\n white-space: normal;\n word-wrap: normal;\n }\n\n .hidden {\n display: none;\n visibility: \"hidden\";\n }\n}\n","@import \"../../variables\";\n\n.Attachment {\n display: inline-flex;\n flex-direction: column;\n position: relative;\n align-self: flex-start;\n line-height: 0;\n height: 100%;\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n\n .attachment-wrapper {\n flex: 1 1 auto;\n height: 100%;\n position: relative;\n overflow: hidden;\n }\n\n .description-container {\n flex: 0 1 0;\n display: flex;\n padding-top: 0.5em;\n z-index: 1;\n\n p {\n flex: 1;\n text-align: center;\n line-height: 1.5;\n padding: 0.5em;\n margin: 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n &.-static {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n padding-top: 0;\n background: var(--popover);\n box-shadow: var(--popupShadow);\n }\n }\n\n .description-field {\n flex: 1;\n min-width: 0;\n }\n\n & .placeholder-container,\n & .image-container,\n & .audio-container,\n & .video-container,\n & .flash-container,\n & .oembed-container {\n display: flex;\n justify-content: center;\n width: 100%;\n height: 100%;\n }\n\n .image-container {\n .image {\n width: 100%;\n height: 100%;\n }\n }\n\n & .flash-container,\n & .video-container {\n & .flash,\n & video {\n width: 100%;\n height: 100%;\n object-fit: contain;\n align-self: center;\n }\n }\n\n .audio-container {\n display: flex;\n align-items: flex-end;\n\n audio {\n width: 100%;\n height: 100%;\n }\n }\n\n .placeholder-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding-top: 0.5em;\n }\n\n .play-icon {\n position: absolute;\n font-size: 64px;\n top: calc(50% - 32px);\n left: calc(50% - 32px);\n color: rgb(255 255 255 / 75%);\n text-shadow: 0 0 2px rgb(0 0 0 / 40%);\n\n &::before {\n margin: 0;\n }\n }\n\n .attachment-buttons {\n display: flex;\n position: absolute;\n right: 0;\n top: 0;\n margin-top: 0.5em;\n margin-right: 0.5em;\n z-index: 1;\n\n .attachment-button {\n padding: 0;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n text-align: center;\n width: 2em;\n height: 2em;\n margin-left: 0.5em;\n font-size: 1.25em;\n // TODO: theming? hard to theme with unknown background image color\n background: rgb(230 230 230 / 70%);\n\n .svg-inline--fa {\n color: rgb(0 0 0 / 60%);\n }\n\n &:hover .svg-inline--fa {\n color: rgb(0 0 0 / 90%);\n }\n }\n }\n\n &.-contain-fit {\n img,\n canvas {\n object-fit: contain;\n }\n }\n\n &.-cover-fit {\n img,\n canvas {\n object-fit: cover;\n }\n }\n\n .oembed-container {\n line-height: 1.2em;\n flex: 1 0 100%;\n width: 100%;\n margin-right: 15px;\n display: flex;\n\n img {\n width: 100%;\n }\n\n .image {\n flex: 1;\n\n img {\n border: 0;\n border-radius: 5px;\n height: 100%;\n object-fit: cover;\n }\n }\n\n .text {\n flex: 2;\n margin: 8px;\n word-break: break-all;\n\n h1 {\n font-size: 1rem;\n margin: 0;\n }\n }\n }\n\n &.-size-small {\n .play-icon {\n zoom: 0.5;\n opacity: 0.7;\n }\n\n .attachment-buttons {\n zoom: 0.7;\n opacity: 0.5;\n }\n }\n\n &.-editable {\n padding: 0.5em;\n\n & .description-container,\n & .attachment-buttons {\n margin: 0;\n }\n }\n\n &.-placeholder {\n display: inline-block;\n color: $fallback--link;\n color: var(--postLink, $fallback--link);\n overflow: hidden;\n white-space: nowrap;\n height: auto;\n line-height: 1.5;\n\n &:not(.-editable) {\n border: none;\n }\n\n &.-editable {\n display: flex;\n flex-direction: row;\n align-items: baseline;\n\n & .description-container,\n & .attachment-buttons {\n margin: 0;\n padding: 0;\n position: relative;\n }\n\n .description-container {\n flex: 1;\n padding-left: 0.5em;\n }\n\n .attachment-buttons {\n order: 99;\n align-self: center;\n }\n }\n\n a {\n display: inline-block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n svg {\n color: inherit;\n }\n }\n\n &.-loading {\n cursor: progress;\n }\n\n &.-compact {\n .placeholder-container {\n padding-bottom: 0.5em;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.Gallery {\n .gallery-rows {\n display: flex;\n flex-direction: column;\n }\n\n .gallery-row {\n position: relative;\n height: 0;\n width: 100%;\n flex-grow: 1;\n\n .gallery-row-inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-flow: row wrap;\n align-content: stretch;\n\n .gallery-item {\n margin: 0 0.5em 0 0;\n flex-grow: 1;\n height: 100%;\n box-sizing: border-box;\n // to make failed images a bit more noticeable on chromium\n min-width: 2em;\n\n &:last-child {\n margin: 0;\n }\n }\n\n &.-grid {\n width: 100%;\n height: auto;\n position: relative;\n display: grid;\n grid-gap: 0.5em;\n grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));\n\n .gallery-item {\n margin: 0;\n height: 200px;\n }\n }\n }\n\n &.-grid,\n &.-minimal {\n height: auto;\n\n .gallery-row-inner {\n position: relative;\n }\n }\n\n &:not(:first-child) {\n margin-top: 0.5em;\n }\n }\n\n &.-long {\n .gallery-rows {\n max-height: 25em;\n overflow: hidden;\n mask:\n linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n linear-gradient(to top, white, white);\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n }\n }\n\n .many-attachments-text {\n text-align: center;\n line-height: 2;\n }\n\n .many-attachments-buttons {\n display: flex;\n }\n\n .many-attachments-button {\n display: flex;\n flex: 1;\n justify-content: center;\n line-height: 2;\n\n button {\n padding: 0 2em;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.Avatar {\n --_avatarShadowBox: var(--avatarStatusShadow);\n --_avatarShadowFilter: var(--avatarStatusShadowFilter);\n --_avatarShadowInset: var(--avatarStatusShadowInset);\n --_still-image-label-visibility: hidden;\n\n display: inline-block;\n position: relative;\n width: 48px;\n height: 48px;\n\n &.-compact {\n width: 32px;\n height: 32px;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n box-shadow: var(--_avatarShadowBox);\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n\n &.-better-shadow {\n box-shadow: var(--_avatarShadowInset);\n filter: var(--_avatarShadowFilter);\n }\n\n &.-animated::before {\n display: none;\n }\n\n &.-compact {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n &.-placeholder {\n background-color: $fallback--fg;\n background-color: var(--fg, $fallback--fg);\n }\n }\n\n img {\n width: 100%;\n height: 100%;\n }\n\n .bot-indicator {\n position: absolute;\n bottom: 0;\n right: 0;\n margin: -0.2em;\n padding: 0.2em;\n background: rgb(127 127 127 / 50%);\n color: #fff;\n border-radius: var(--tooltipRadius);\n }\n}\n","@import \"../../variables\";\n\n.MentionLink {\n position: relative;\n white-space: normal;\n display: inline;\n color: var(--link);\n word-break: normal;\n\n & .new,\n & .original {\n display: inline;\n border-radius: 2px;\n }\n\n .mention-avatar {\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n width: 1.5em;\n height: 1.5em;\n vertical-align: middle;\n user-select: none;\n margin-right: 0.2em;\n }\n\n .full {\n position: absolute;\n display: inline-block;\n pointer-events: none;\n opacity: 0;\n top: 100%;\n left: 0;\n height: 100%;\n word-wrap: normal;\n white-space: nowrap;\n transition: opacity 0.2s ease;\n z-index: 1;\n margin-top: 0.25em;\n padding: 0.5em;\n user-select: all;\n }\n\n & .short.-with-tooltip,\n & .you {\n user-select: none;\n }\n\n & .short,\n & .full {\n white-space: nowrap;\n }\n\n .shortName {\n white-space: normal;\n }\n\n .new {\n &.-you {\n .shortName {\n font-weight: 600;\n }\n }\n\n &.-has-selection {\n color: var(--alertNeutralText, $fallback--text);\n background-color: var(--alertNeutral, $fallback--fg);\n }\n\n .at {\n color: var(--link);\n opacity: 0.8;\n display: inline-block;\n line-height: 1;\n padding: 0 0.1em;\n vertical-align: -25%;\n margin: 0;\n }\n\n &.-striped {\n & .shortName {\n background-image:\n repeating-linear-gradient(\n 135deg,\n var(--____highlight-tintColor),\n var(--____highlight-tintColor) 5px,\n var(--____highlight-tintColor2) 5px,\n var(--____highlight-tintColor2) 10px\n );\n }\n }\n\n &.-solid {\n .shortName {\n background-image: linear-gradient(var(--____highlight-tintColor2), var(--____highlight-tintColor2));\n }\n }\n\n &.-side {\n .shortName {\n box-shadow: 0 -5px 3px -4px inset var(--____highlight-solidColor);\n }\n }\n }\n\n .serverName.-faded {\n color: var(--faintLink, $fallback--link);\n }\n}\n\n.mention-link-popover {\n max-width: 70ch;\n max-height: 20rem;\n overflow: hidden;\n}\n",".MentionsLine {\n word-break: break-all;\n\n .mention-link:not(:first-child)::before {\n content: \" \";\n }\n\n .showMoreLess {\n margin-left: 0.5em;\n white-space: normal;\n color: var(--link);\n }\n}\n",".HashtagLink {\n position: relative;\n white-space: normal;\n display: inline-block;\n color: var(--link);\n}\n","@import \"../../variables\";\n\n.RichContent {\n blockquote {\n margin: 0.2em 0 0.2em 0.2em;\n font-style: italic;\n border-left: 0.2em solid var(--faint, $fallback--faint);\n padding-left: 1em;\n }\n\n pre {\n overflow: auto;\n }\n\n code,\n samp,\n kbd,\n var,\n pre {\n font-family: var(--postCodeFont, monospace);\n }\n\n p {\n margin: 0 0 1em;\n }\n\n p:last-child {\n margin: 0;\n }\n\n h1 {\n font-size: 1.1em;\n line-height: 1.2em;\n margin: 1.4em 0;\n }\n\n h2 {\n font-size: 1.1em;\n margin: 1em 0;\n }\n\n h3 {\n font-size: 1em;\n margin: 1.2em 0;\n }\n\n h4 {\n margin: 1.1em 0;\n }\n\n .img {\n display: inline-block;\n }\n\n .emoji {\n display: inline-block;\n width: var(--emoji-size, 32px);\n height: var(--emoji-size, 32px);\n }\n\n .img,\n video {\n max-width: 100%;\n max-height: 400px;\n vertical-align: middle;\n object-fit: contain;\n }\n}\n","\n@import \"../../variables\";\n\n.poll {\n .votes {\n display: flex;\n flex-direction: column;\n margin: 0 0 0.5em;\n }\n\n .poll-option {\n margin: 0.75em 0.5em;\n }\n\n .option-result {\n height: 100%;\n display: flex;\n flex-direction: row;\n position: relative;\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n\n .option-result-label {\n display: flex;\n align-items: center;\n padding: 0.1em 0.25em;\n z-index: 1;\n word-break: break-word;\n }\n\n .result-percentage {\n width: 3.5em;\n flex-shrink: 0;\n }\n\n .result-fill {\n height: 100%;\n position: absolute;\n color: $fallback--text;\n color: var(--pollText, $fallback--text);\n background-color: $fallback--lightBg;\n background-color: var(--poll, $fallback--lightBg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n top: 0;\n left: 0;\n transition: width 0.5s;\n }\n\n .option-vote {\n display: flex;\n align-items: center;\n }\n\n input {\n width: 3.5em;\n }\n\n .footer {\n display: flex;\n align-items: center;\n }\n\n &.loading * {\n cursor: progress;\n }\n\n .poll-vote-button {\n padding: 0 0.5em;\n margin-right: 0.5em;\n }\n\n .poll-checkbox {\n display: none;\n }\n}\n","@import \"../../variables\";\n\n.StatusBody {\n display: flex;\n flex-direction: column;\n\n .emoji {\n --_still_image-label-scale: 0.5;\n }\n\n .attachments {\n margin-top: 0.5em;\n }\n\n & .text,\n & .summary {\n font-family: var(--postFont, sans-serif);\n white-space: pre-wrap;\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-word;\n line-height: var(--post-line-height);\n }\n\n .summary {\n display: block;\n font-style: italic;\n padding-bottom: 0.5em;\n }\n\n .text {\n &.-single-line {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n height: 1.4em;\n }\n }\n\n .summary-wrapper {\n margin-bottom: 0.5em;\n border-style: solid;\n border-width: 0 0 1px;\n border-color: var(--border, $fallback--border);\n flex-grow: 0;\n\n &.-tall {\n position: relative;\n\n .summary {\n max-height: 2em;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n }\n\n .text-wrapper {\n display: flex;\n flex-flow: column nowrap;\n\n &.-tall-status {\n position: relative;\n height: 220px;\n overflow-x: hidden;\n overflow-y: hidden;\n z-index: 1;\n\n .media-body {\n min-height: 0;\n mask:\n linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n linear-gradient(to top, white, white);\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n }\n }\n }\n\n & .tall-status-hider,\n & .tall-subject-hider,\n & .status-unhider,\n & .cw-status-hider {\n display: inline-block;\n word-break: break-all;\n width: 100%;\n text-align: center;\n }\n\n .tall-status-hider {\n position: absolute;\n height: 70px;\n margin-top: 150px;\n line-height: 110px;\n z-index: 2;\n }\n\n .tall-subject-hider {\n // position: absolute;\n padding-bottom: 0.5em;\n }\n\n & .status-unhider,\n & .cw-status-hider {\n word-break: break-all;\n\n svg {\n color: inherit;\n }\n }\n\n .greentext {\n color: $fallback--cGreen;\n color: var(--postGreentext, $fallback--cGreen);\n }\n\n .cyantext {\n color: var(--postCyantext, $fallback--cBlue);\n }\n\n &.-compact {\n align-items: top;\n flex-direction: row;\n\n --emoji-size: 16px;\n\n & .body,\n & .attachments {\n max-height: 3.25em;\n }\n\n .body {\n overflow: hidden;\n white-space: normal;\n min-width: 5em;\n flex: 5 1 auto;\n mask-size: auto 3.5em, auto auto;\n mask-position: 0 0, 0 0;\n mask-repeat: repeat-x, repeat;\n mask-image: linear-gradient(to bottom, white 2em, transparent 3em);\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n }\n\n .attachments {\n margin-top: 0;\n flex: 1 1 0;\n min-width: 5em;\n height: 100%;\n margin-left: 0.5em;\n }\n\n .summary-wrapper {\n .summary::after {\n content: \": \";\n }\n\n line-height: inherit;\n margin: 0;\n border: none;\n display: inline-block;\n }\n\n .text-wrapper {\n display: inline-block;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.link-preview-card {\n display: flex;\n flex-direction: row;\n cursor: pointer;\n overflow: hidden;\n margin-top: 0.5em;\n\n .card-image {\n flex-shrink: 0;\n width: 120px;\n max-width: 25%;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n }\n }\n\n .card-content {\n max-height: 100%;\n margin: 0.5em;\n display: flex;\n flex-direction: column;\n }\n\n .card-host {\n font-size: 0.85em;\n }\n\n .card-description {\n margin: 0.5em 0 0;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-word;\n line-height: 1.2em;\n // cap description at 3 lines, the 1px is to clean up some stray pixels\n // TODO: fancier fade-out at the bottom to show off that it's too long?\n max-height: calc(1.2em * 3 - 1px);\n }\n\n .nsfw-alert {\n margin: 2em 0;\n }\n\n color: $fallback--text;\n color: var(--text, $fallback--text);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n","\n.StatusContent {\n flex: 1;\n min-width: 0;\n}\n","\n@import \"../../variables\";\n\n.post-status-form {\n position: relative;\n\n .attachments {\n margin-bottom: 0.5em;\n }\n\n .form-bottom {\n display: flex;\n justify-content: space-between;\n padding: 0.5em;\n height: 2.5em;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .form-bottom-left {\n display: flex;\n flex: 1;\n padding-right: 7px;\n margin-right: 7px;\n max-width: 10em;\n }\n\n .preview-heading {\n display: flex;\n padding-left: 0.5em;\n }\n\n .preview-toggle {\n flex: 1;\n cursor: pointer;\n user-select: none;\n\n &:hover {\n text-decoration: underline;\n }\n\n svg,\n i {\n margin-left: 0.2em;\n font-size: 0.8em;\n transform: rotate(90deg);\n }\n }\n\n .preview-container {\n margin-bottom: 1em;\n }\n\n .preview-error {\n font-style: italic;\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n\n .preview-status {\n border: 1px solid $fallback--border;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n padding: 0.5em;\n margin: 0;\n }\n\n .reply-or-quote-selector {\n margin-bottom: 0.5em;\n }\n\n .text-format {\n .only-format {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n .visibility-tray {\n display: flex;\n justify-content: space-between;\n padding-top: 5px;\n align-items: baseline;\n }\n\n .visibility-notice.edit-warning {\n > :first-child {\n margin-top: 0;\n }\n\n > :last-child {\n margin-bottom: 0;\n }\n }\n\n // Order is not necessary but a good indicator\n .media-upload-icon {\n order: 1;\n justify-content: left;\n }\n\n .emoji-icon {\n order: 2;\n justify-content: center;\n }\n\n .poll-icon {\n order: 3;\n justify-content: right;\n }\n\n .media-upload-icon,\n .poll-icon,\n .emoji-icon {\n font-size: 1.85em;\n line-height: 1.1;\n flex: 1;\n padding: 0 0.1em;\n display: flex;\n align-items: center;\n\n &.selected,\n &:hover {\n // needs to be specific to override icon default color\n svg,\n i,\n label {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n\n &.disabled {\n svg,\n i {\n cursor: not-allowed;\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n\n &:hover {\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n }\n }\n }\n }\n\n .error {\n text-align: center;\n }\n\n .media-upload-wrapper {\n margin-right: 0.2em;\n margin-bottom: 0.5em;\n width: 18em;\n\n img,\n video {\n object-fit: contain;\n max-height: 10em;\n }\n\n .video {\n max-height: 10em;\n }\n\n input {\n flex: 1;\n width: 100%;\n }\n }\n\n .status-input-wrapper {\n display: flex;\n position: relative;\n width: 100%;\n flex-direction: column;\n }\n\n .btn[disabled] {\n cursor: not-allowed;\n }\n\n form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n position: relative;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.25em 0.5em 0.5em;\n line-height: 1.85;\n }\n\n .form-post-body {\n // TODO: make a resizable textarea component?\n box-sizing: content-box; // needed for easier computation of dynamic size\n overflow: hidden;\n transition: min-height 200ms 100ms;\n // stock padding + 1 line of text (for counter)\n padding-bottom: calc(var(--_padding) + var(--post-line-height) * 1em);\n // two lines of text\n height: calc(var(--post-line-height) * 1em);\n min-height: calc(var(--post-line-height) * 1em);\n resize: none;\n\n &.scrollable-form {\n overflow-y: auto;\n }\n }\n\n .main-input {\n position: relative;\n }\n\n .character-counter {\n position: absolute;\n bottom: 0;\n right: 0;\n padding: 0;\n margin: 0 0.5em;\n\n &.error {\n color: $fallback--cRed;\n color: var(--cRed, $fallback--cRed);\n }\n }\n\n @keyframes fade-in {\n from { opacity: 0; }\n to { opacity: 0.6; }\n }\n\n @keyframes fade-out {\n from { opacity: 0.6; }\n to { opacity: 0; }\n }\n\n .drop-indicator {\n position: absolute;\n width: 100%;\n height: 100%;\n font-size: 5em;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.6;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n border: 2px dashed $fallback--text;\n border: 2px dashed var(--text, $fallback--text);\n }\n}\n","\n.remote-follow {\n max-width: 220px;\n\n .remote-button {\n width: 100%;\n min-height: 2em;\n }\n}\n","\n@import \"../../variables\";\n\n// TODO: unify with other modals.\n.dark-overlay {\n &::before {\n bottom: 0;\n content: \" \";\n display: block;\n cursor: default;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n background: rgb(27 31 35 / 50%);\n z-index: 2000;\n }\n}\n\n.dialog-modal.panel {\n top: 0;\n left: 50%;\n max-height: 80vh;\n max-width: 90vw;\n margin: 15vh auto;\n position: fixed;\n transform: translateX(-50%);\n z-index: 2001;\n cursor: default;\n display: block;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .dialog-modal-heading {\n .title {\n text-align: center;\n }\n }\n\n .dialog-modal-content {\n margin: 0;\n padding: 1rem;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n white-space: normal;\n }\n\n .dialog-modal-footer {\n margin: 0;\n padding: 0.5em;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n display: flex;\n justify-content: flex-end;\n\n button {\n width: auto;\n margin-left: 0.5rem;\n }\n }\n}\n\n","\n@import \"../../variables\";\n\n.moderation-tools-popover {\n height: 100%;\n\n .trigger {\n /* stylelint-disable-next-line declaration-no-important */\n display: flex !important;\n height: 100%;\n }\n}\n\n.moderation-tools-button {\n svg,\n i {\n font-size: 0.8em;\n }\n}\n","\n@import \"../../variables\";\n\n.AccountActions {\n .ellipsis-button {\n width: 2.5em;\n margin: -0.5em 0;\n padding: 0.5em 0;\n text-align: center;\n\n &:not(:hover) .icon {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n","\n@import \"../../variables\";\n\n.user-note {\n display: flex;\n flex-direction: column;\n\n .heading {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 0.75em;\n\n .btn {\n min-width: 95px;\n }\n\n .buttons {\n display: flex;\n flex-direction: row;\n justify-content: right;\n\n .btn {\n margin-left: 0.5em;\n }\n }\n }\n\n .note-text {\n align-self: stretch;\n }\n\n .note-text.-blank {\n font-style: italic;\n color: var(--faint, $fallback--faint);\n }\n}\n","@import \"../../variables\";\n\n.user-card {\n position: relative;\n z-index: 1;\n\n &:hover {\n --_still-image-img-visibility: visible;\n --_still-image-canvas-visibility: hidden;\n --_still-image-label-visibility: hidden;\n }\n\n .panel-heading {\n padding: 0.5em 0;\n text-align: center;\n box-shadow: none;\n background: transparent;\n flex-direction: column;\n align-items: stretch;\n // create new stacking context\n position: relative;\n }\n\n .panel-body {\n word-wrap: break-word;\n border-bottom-right-radius: inherit;\n border-bottom-left-radius: inherit;\n // create new stacking context\n position: relative;\n }\n\n .background-image {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n mask:\n linear-gradient(to top, white, transparent) bottom no-repeat,\n linear-gradient(to top, white, white);\n // Autoprefixer seem to ignore this one, and also syntax is different\n mask-composite: xor;\n mask-composite: exclude;\n background-size: cover;\n mask-size: 100% 60%;\n border-top-left-radius: calc(var(--__roundnessTop, --panelRadius) - 1px);\n border-top-right-radius: calc(var(--__roundnessTop, --panelRadius) - 1px);\n border-bottom-left-radius: calc(var(--__roundnessBottom, --panelRadius) - 1px);\n border-bottom-right-radius: calc(var(--__roundnessBottom, --panelRadius) - 1px);\n background-color: var(--profileBg);\n z-index: -2;\n\n &.hide-bio {\n mask-size: 100% 40px;\n }\n }\n\n &-bio {\n text-align: center;\n display: block;\n line-height: 1.3;\n padding: 1em;\n margin: 0;\n\n a {\n color: $fallback--link;\n color: var(--postLink, $fallback--link);\n }\n\n img {\n object-fit: contain;\n vertical-align: middle;\n max-width: 100%;\n max-height: 400px;\n }\n }\n\n &.-rounded-t {\n border-top-left-radius: $fallback--panelRadius;\n border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n border-top-right-radius: $fallback--panelRadius;\n border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n\n --__roundnessTop: var(--panelRadius);\n --__roundnessBottom: 0;\n }\n\n &.-rounded {\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n\n --__roundnessTop: var(--panelRadius);\n --__roundnessBottom: var(--panelRadius);\n }\n\n &.-popover {\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n\n --__roundnessTop: var(--tooltipRadius);\n --__roundnessBottom: var(--tooltipRadius);\n }\n\n &.-bordered {\n border-width: 1px;\n border-style: solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n}\n\n.user-info {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n padding: 0 26px;\n\n a {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n\n &:hover {\n color: var(--icon);\n }\n }\n\n .container {\n min-width: 0;\n padding: 16px 0 6px;\n display: flex;\n align-items: flex-start;\n max-height: 56px;\n\n > * {\n min-width: 0;\n }\n\n > a {\n vertical-align: middle;\n display: flex;\n }\n\n .Avatar {\n --_avatarShadowBox: var(--avatarShadow);\n --_avatarShadowFilter: var(--avatarShadowFilter);\n --_avatarShadowInset: var(--avatarShadowInset);\n\n width: 56px;\n height: 56px;\n object-fit: cover;\n }\n }\n\n &-avatar {\n position: relative;\n cursor: pointer;\n\n &.-overlay {\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n background-color: rgb(0 0 0 / 30%);\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n opacity: 0;\n transition: opacity 0.2s ease;\n\n svg {\n color: #fff;\n }\n }\n\n &:hover &.-overlay {\n opacity: 1;\n }\n }\n\n .external-link-button,\n .edit-profile-button {\n cursor: pointer;\n width: 2.5em;\n text-align: center;\n margin: -0.5em 0;\n padding: 0.5em 0;\n\n &:not(:hover) .icon {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n\n .bottom-line {\n font-weight: light;\n font-size: 1.1em;\n align-items: baseline;\n\n .lock-icon {\n margin-left: 0.5em;\n }\n\n .user-screen-name {\n min-width: 1px;\n flex: 0 1 auto;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n .dailyAvg {\n min-width: 1px;\n flex: 0 0 auto;\n margin-left: 1em;\n font-size: 0.7em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n\n .user-role {\n flex: none;\n color: $fallback--text;\n color: var(--alertNeutralText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--alertNeutral, $fallback--fg);\n }\n }\n\n .user-summary {\n display: block;\n margin-left: 0.6em;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1 1 0;\n // This is so that text doesn't get overlapped by avatar's shadow if it has\n // big one\n z-index: 1;\n line-height: 2em;\n\n --emoji-size: 1.7em;\n\n .top-line,\n .bottom-line {\n display: flex;\n }\n }\n\n .user-name {\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1 1 auto;\n margin-right: 1em;\n font-size: 1.1em;\n }\n\n .user-meta {\n margin-bottom: 0.15em;\n display: flex;\n align-items: baseline;\n line-height: 22px;\n flex-wrap: wrap;\n\n .following {\n flex: 1 0 auto;\n margin: 0;\n margin-bottom: 0.25em;\n text-align: left;\n }\n\n .highlighter {\n flex: 0 1 auto;\n display: flex;\n flex-wrap: wrap;\n margin-right: -0.5em;\n align-self: start;\n\n .userHighlightCl {\n padding: 2px 10px;\n flex: 1 0 auto;\n }\n\n .userHighlightSel {\n padding-top: 0;\n padding-bottom: 0;\n flex: 1 0 auto;\n }\n\n .userHighlightText {\n width: 70px;\n flex: 1 0 auto;\n }\n\n .userHighlightCl,\n .userHighlightText,\n .userHighlightSel {\n vertical-align: top;\n margin-right: 0.5em;\n margin-bottom: 0.25em;\n }\n }\n }\n\n .user-interactions {\n position: relative;\n display: flex;\n flex-flow: row wrap;\n margin-right: -0.75em;\n\n > * {\n margin: 0 0.75em 0.6em 0;\n white-space: nowrap;\n min-width: 95px;\n }\n\n button {\n margin: 0;\n }\n }\n\n .user-note {\n margin: 0 0.75em 0.6em 0;\n }\n}\n\n.sidebar .edit-profile-button {\n display: none;\n}\n\n.user-counts {\n display: flex;\n line-height: 16px;\n padding: 0.5em 1.5em 0;\n text-align: center;\n justify-content: space-between;\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n flex-wrap: wrap;\n}\n\n.user-count {\n flex: 1 0 auto;\n padding: 0.5em 0;\n margin: 0 0.5em;\n\n h5 {\n font-size: 1em;\n font-weight: bolder;\n margin: 0 0 0.25em;\n }\n\n /* stylelint-disable-next-line no-descending-specificity */\n a {\n text-decoration: none;\n }\n}\n\n.mute-expiry {\n display: flex;\n flex-direction: row;\n}\n","\n.user-panel .signed-in {\n overflow: visible;\n z-index: 10;\n}\n","\n@import \"../../variables\";\n\n.NavigationEntry {\n display: flex;\n box-sizing: border-box;\n align-items: baseline;\n height: 3.5em;\n line-height: 3.5em;\n padding: 0 1em;\n width: 100%;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n .timelines-chevron {\n margin-right: 0;\n }\n\n .main-link {\n flex: 1;\n }\n\n .menu-icon {\n margin-right: 0.8em;\n }\n\n .extra-button {\n width: 3em;\n text-align: center;\n\n &:last-child {\n margin-right: -0.8em;\n }\n }\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n .menu-icon {\n --icon: var(--text, $fallback--icon);\n }\n }\n\n &.-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n .menu-icon {\n --icon: var(--text, $fallback--icon);\n }\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.NavigationPins {\n display: flex;\n flex-wrap: wrap;\n overflow: hidden;\n height: 100%;\n\n .alert-dot {\n border-radius: 100%;\n height: 0.5em;\n width: 0.5em;\n position: absolute;\n right: calc(50% - 0.75em);\n top: calc(50% - 0.5em);\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .pinned-item {\n position: relative;\n flex: 1 0 3em;\n min-width: 2em;\n text-align: center;\n overflow: visible;\n box-sizing: border-box;\n height: 100%;\n\n & .svg-inline--fa,\n & .iconLetter {\n margin: 0;\n }\n\n &.router-link-active {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n border-bottom: 4px solid;\n\n & .svg-inline--fa,\n & .iconLetter {\n color: inherit;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n\n.NavPanel {\n .panel {\n overflow: hidden;\n box-shadow: var(--panelShadow);\n }\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n li {\n position: relative;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n > li {\n &:first-child .menu-item {\n border-top-right-radius: $fallback--panelRadius;\n border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-top-left-radius: $fallback--panelRadius;\n border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child .menu-item {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n\n li:last-child {\n border: none;\n }\n\n .navigation-chevron {\n margin-left: 0.8em;\n margin-right: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-chevron {\n margin-left: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-background {\n padding: 0 0 0 0.6em;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n .timelines {\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n }\n\n .nav-panel-heading {\n // breaks without a unit\n // stylelint-disable-next-line length-zero-no-unit\n --panel-heading-height-padding: 0px;\n }\n}\n","\n .features-panel li {\n line-height: 24px;\n }\n","\n .who-to-follow * {\n vertical-align: middle;\n }\n\n .who-to-follow img {\n width: 32px;\n height: 32px;\n }\n\n .who-to-follow {\n padding: 0 1em;\n margin: 0;\n }\n\n .who-to-follow-items {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0;\n margin: 1em 0;\n }\n\n .who-to-follow-more {\n padding: 0;\n margin: 1em 0;\n text-align: center;\n }\n","\n@import \"../../variables\";\n\n.floating-shout {\n position: fixed;\n bottom: 0.5em;\n z-index: var(--ZI_popovers);\n max-width: 25em;\n\n &.-left {\n left: 0.5em;\n }\n\n &:not(.-left) {\n right: 0.5em;\n }\n}\n\n.shout-panel {\n .shout-heading {\n cursor: pointer;\n\n .icon {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n margin-right: 0.5em;\n }\n\n .title {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n\n .shout-window {\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 20em;\n }\n\n .shout-window-container {\n height: 100%;\n }\n\n .shout-message {\n display: flex;\n padding: 0.2em 0.5em;\n }\n\n .shout-avatar {\n img {\n height: 24px;\n width: 24px;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n margin-right: 0.5em;\n margin-top: 0.25em;\n }\n }\n\n .shout-input {\n display: flex;\n\n textarea {\n flex: 1;\n margin: 0.6em;\n min-height: 3.5em;\n resize: none;\n }\n }\n\n .shout-panel {\n .title {\n display: flex;\n justify-content: space-between;\n }\n }\n}\n","\n$modal-view-button-icon-height: 3em;\n$modal-view-button-icon-half-height: calc(#{$modal-view-button-icon-height} / 2);\n$modal-view-button-icon-width: 3em;\n$modal-view-button-icon-margin: 0.5em;\n\n.media-modal-view {\n @keyframes media-fadein {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n .modal-image-container {\n display: flex;\n overflow: hidden;\n align-items: center;\n flex-direction: column;\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n flex-grow: 1;\n justify-content: center;\n\n &-inner {\n width: 100%;\n height: 100%;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n }\n\n .description,\n .counter {\n /* Hardcoded since background is also hardcoded */\n color: white;\n margin-top: 1em;\n text-shadow: 0 0 10px black, 0 0 10px black;\n padding: 0.2em 2em;\n }\n\n .description {\n flex: 0 0 auto;\n overflow-y: auto;\n min-height: 1em;\n max-width: 500px;\n max-height: 9.5em;\n word-break: break-all;\n }\n\n .modal-image {\n max-width: 100%;\n max-height: 100%;\n image-orientation: from-image; // NOTE: only FF supports this\n animation: 0.1s cubic-bezier(0.7, 0, 1, 0.6) media-fadein;\n\n &.loading {\n opacity: 0.5;\n }\n }\n\n .loading-spinner {\n width: 100%;\n height: 100%;\n position: absolute;\n pointer-events: none;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n color: white;\n }\n }\n\n .modal-view-button {\n border: 0;\n padding: 0;\n opacity: 0;\n box-shadow: none;\n background: none;\n appearance: none;\n overflow: visible;\n cursor: pointer;\n transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n\n .button-icon {\n position: absolute;\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n font-size: 1rem;\n line-height: $modal-view-button-icon-height;\n color: #fff;\n text-align: center;\n background-color: rgb(0 0 0 / 30%);\n }\n }\n\n .modal-view-button-arrow {\n position: absolute;\n display: block;\n top: 50%;\n margin-top: $modal-view-button-icon-half-height;\n width: $modal-view-button-icon-width;\n height: $modal-view-button-icon-height;\n\n .arrow-icon {\n position: absolute;\n top: 0;\n line-height: $modal-view-button-icon-height;\n color: #fff;\n text-align: center;\n background-color: rgb(0 0 0 / 30%);\n }\n\n &--prev {\n left: 0;\n\n .arrow-icon {\n left: $modal-view-button-icon-margin;\n }\n }\n\n &--next {\n right: 0;\n\n .arrow-icon {\n right: $modal-view-button-icon-margin;\n }\n }\n }\n\n .modal-view-button-hide {\n position: absolute;\n top: 0;\n right: 0;\n\n .button-icon {\n top: $modal-view-button-icon-margin;\n right: $modal-view-button-icon-margin;\n }\n }\n}\n\n.modal-view.media-modal-view {\n z-index: var(--ZI_media_modal);\n flex-direction: column;\n\n .modal-view-button-arrow,\n .modal-view-button-hide {\n opacity: 0.75;\n\n &:focus,\n &:hover {\n outline: none;\n box-shadow: none;\n }\n\n &:hover {\n opacity: 1;\n }\n }\n\n overflow: hidden;\n}\n","\n@import \"../../variables\";\n\n.side-drawer-container {\n position: fixed;\n z-index: var(--ZI_navbar);\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: stretch;\n transition-duration: 0s;\n transition-property: transform;\n}\n\n.side-drawer-container-open {\n transform: translate(0%);\n}\n\n.side-drawer-container-closed {\n transition-delay: 0.35s;\n transform: translate(-100%);\n}\n\n.side-drawer-darken {\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n position: fixed;\n z-index: -1;\n transition: 0.35s;\n transition-property: background-color;\n background-color: rgb(0 0 0 / 50%);\n}\n\n.side-drawer-darken-closed {\n background-color: rgb(0 0 0 / 0%);\n}\n\n.side-drawer-click-outside {\n flex: 1 1 100%;\n}\n\n.side-drawer {\n overflow-x: hidden;\n transition: 0.35s;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n transition-property: transform;\n margin: 0 0 0 -100px;\n padding: 0 0 1em 100px;\n width: 80%;\n max-width: 20em;\n flex: 0 0 80%;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--link;\n color: var(--popoverText, $fallback--link);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --icon: var(--popoverIcon, $fallback--icon);\n\n .badge {\n margin-left: 10px;\n }\n}\n\n.side-drawer-logo-wrapper {\n display: flex;\n align-items: center;\n padding: 0.85em;\n\n img {\n flex: none;\n height: 50px;\n margin-right: 0.85em;\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.side-drawer-click-outside-closed {\n flex: 0 0 0;\n}\n\n.side-drawer-closed {\n transform: translate(-100%);\n}\n\n.side-drawer-heading {\n background: transparent;\n flex-direction: column;\n align-items: stretch;\n display: flex;\n padding: 0;\n margin: 0;\n}\n\n.side-drawer ul {\n list-style: none;\n margin: 0;\n padding: 0;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.side-drawer ul:last-child {\n border: 0;\n}\n\n.side-drawer li {\n padding: 0;\n\n a,\n button {\n box-sizing: border-box;\n display: block;\n height: 3em;\n line-height: 3em;\n padding: 0 0.7em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuPopoverText, $fallback--text);\n\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n","\n@import \"../../variables\";\n\n.MobilePostButton {\n &.button-default {\n width: 5em;\n height: 5em;\n border-radius: 100%;\n position: fixed;\n bottom: 1.5em;\n right: 1.5em;\n // TODO: this needs its own color, it has to stand out enough and link color\n // is not very optimal for this particular use.\n background-color: $fallback--fg;\n background-color: var(--btn, $fallback--fg);\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 2px 2px rgb(0 0 0 / 30%), 0 4px 6px rgb(0 0 0 / 30%);\n z-index: 10;\n transition: 0.35s transform;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n }\n\n &.hidden {\n transform: translateY(150%);\n }\n\n svg {\n font-size: 1.5em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n@media all and (min-width: 801px) {\n .new-status-button:not(.always-show) {\n display: none;\n }\n}\n\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ReplyButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n &:hover .svg-inline--fa,\n &.-active .svg-inline--fa {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.FavoriteButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-favorited .svg-inline--fa {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ReactButton {\n .reaction-picker-filter {\n padding: 0.5em;\n display: flex;\n\n input {\n flex: 1;\n }\n }\n\n .reaction-picker-divider {\n height: 1px;\n width: 100%;\n margin: 0.5em;\n background-color: var(--border, $fallback--border);\n }\n\n .reaction-picker {\n width: 10em;\n height: 9em;\n font-size: 1.5em;\n overflow-y: scroll;\n display: flex;\n flex-wrap: wrap;\n padding: 0.5em;\n text-align: center;\n align-content: flex-start;\n user-select: none;\n mask:\n linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n linear-gradient(to top, white, white);\n transition: mask-size 150ms;\n mask-size: 100% 20px, 100% 20px, auto;\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n\n .emoji-button {\n cursor: pointer;\n flex-basis: 20%;\n line-height: 1.5;\n align-content: center;\n\n &:hover {\n transform: scale(1.25);\n }\n }\n }\n\n .popover-trigger {\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.RetweetButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-repeated .svg-inline--fa {\n color: $fallback--cGreen;\n color: var(--cGreen, $fallback--cGreen);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ExtraButtons {\n .popover-trigger {\n position: static;\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .popover-trigger-button {\n /* override of popover internal stuff */\n width: auto;\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n","\n@import \"../../variables\";\n\n.avatars {\n display: flex;\n margin: 0;\n padding: 0;\n\n // For hiding overflowing elements\n flex-wrap: wrap;\n height: 24px;\n\n .avatars-item {\n margin: 0 0 5px 5px;\n\n &:first-child {\n padding-left: 5px;\n }\n\n .avatar-small {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n height: 24px;\n width: 24px;\n }\n }\n}\n","\n@import \"../../variables\";\n\n/* popover styles load on-demand, so we need to override */\n.status-popover.popover {\n font-size: 1rem;\n min-width: 15em;\n max-width: 95%;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n\n /* TODO cleanup this */\n .Status.Status {\n border: none;\n }\n\n .status-preview-no-content {\n padding: 1em;\n text-align: center;\n\n i {\n font-size: 2em;\n }\n }\n}\n\n","\n@import \"../../variables\";\n\n.user-list-popover {\n padding: 0.5em;\n\n --emoji-size: 16px;\n\n .user-list-row {\n padding: 0.25em;\n display: flex;\n flex-direction: row;\n\n .user-list-names {\n display: flex;\n flex-direction: column;\n margin-left: 0.5em;\n min-width: 5em;\n\n img {\n width: 1em;\n height: 1em;\n }\n }\n\n .user-list-screen-name {\n font-size: 0.65em;\n }\n }\n}\n\n","\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.EmojiReactions {\n display: flex;\n margin-top: 0.25em;\n flex-wrap: wrap;\n\n --emoji-size: calc(1.25em * var(--emojiReactionsScale, 1));\n\n .emoji-reaction-container {\n display: flex;\n align-items: stretch;\n margin-top: 0.5em;\n margin-right: 0.5em;\n\n .emoji-reaction-popover {\n padding: 0;\n\n .emoji-reaction-count-button {\n background-color: var(--btn);\n margin: 0;\n height: 100%;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n box-sizing: border-box;\n min-width: 2em;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n\n &.-picked-reaction {\n border: 1px solid var(--accent, $fallback--link);\n margin-right: -1px;\n }\n }\n }\n }\n\n .emoji-reaction {\n padding-left: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n margin: 0;\n\n .reaction-emoji {\n width: var(--emoji-size);\n height: var(--emoji-size);\n margin-right: 0.25em;\n line-height: var(--emoji-size);\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .reaction-emoji-content {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n line-height: inherit;\n overflow: hidden;\n font-size: calc(var(--emoji-size) * 0.8);\n margin: 0;\n }\n\n &:focus {\n outline: none;\n }\n\n .svg-inline--fa {\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n }\n\n &.-picked-reaction {\n border: 1px solid var(--accent, $fallback--link);\n margin-left: -1px; // offset the border, can't use inset shadows either\n margin-right: -1px;\n\n .svg-inline--fa {\n color: $fallback--link;\n color: var(--accent, $fallback--link);\n }\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .svg-inline--fa {\n color: $fallback--link;\n color: var(--accent, $fallback--link);\n }\n\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n\n .emoji-reaction-expand {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n","@import \"../../variables\";\n\n.Status {\n min-width: 0;\n white-space: normal;\n word-wrap: break-word;\n word-break: break-word;\n\n &:hover {\n --_still-image-img-visibility: visible;\n --_still-image-canvas-visibility: hidden;\n --_still-image-label-visibility: hidden;\n }\n\n &.-focused {\n background-color: $fallback--lightBg;\n background-color: var(--selectedPost, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedPostText, $fallback--text);\n\n --lightText: var(--selectedPostLightText, $fallback--light);\n --faint: var(--selectedPostFaintText, $fallback--faint);\n --faintLink: var(--selectedPostFaintLink, $fallback--faint);\n --postLink: var(--selectedPostPostLink, $fallback--faint);\n --postFaintLink: var(--selectedPostFaintPostLink, $fallback--faint);\n --icon: var(--selectedPostIcon, $fallback--icon);\n }\n\n .gravestone {\n padding: var(--status-margin, $status-margin);\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n display: flex;\n\n .deleted-text {\n margin: 0.5em 0;\n align-items: center;\n }\n }\n\n .status-container {\n display: flex;\n padding: var(--status-margin, $status-margin);\n\n > * {\n min-width: 0;\n }\n\n &.-repeat {\n padding-top: 0;\n }\n }\n\n .pin {\n padding: var(--status-margin, $status-margin) var(--status-margin, $status-margin) 0;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n }\n\n ._misclick-prevention & {\n pointer-events: none;\n\n .attachments {\n pointer-events: initial;\n cursor: initial;\n }\n }\n\n .left-side {\n margin-right: var(--status-margin, $status-margin);\n }\n\n .right-side {\n flex: 1;\n min-width: 0;\n }\n\n .usercard {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .status-username {\n white-space: nowrap;\n overflow: hidden;\n max-width: 85%;\n font-weight: bold;\n flex-shrink: 1;\n margin-right: 0.4em;\n text-overflow: ellipsis;\n\n --_still_image-label-scale: 0.25;\n --emoji-size: 14px;\n }\n\n .status-favicon {\n height: 18px;\n width: 18px;\n margin-right: 0.4em;\n }\n\n .status-heading {\n margin-bottom: 0.5em;\n }\n\n .heading-name-row {\n display: flex;\n justify-content: space-between;\n line-height: 1.3;\n\n a {\n display: inline-block;\n word-break: break-all;\n }\n }\n\n .account-name {\n min-width: 1.6em;\n margin-right: 0.4em;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1 1 0;\n }\n\n .heading-left {\n display: flex;\n min-width: 0;\n }\n\n .heading-right {\n display: flex;\n flex-shrink: 0;\n\n .button-unstyled {\n padding: 5px;\n margin: -5px;\n\n &:hover svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n\n .svg-inline--fa {\n margin-left: 0.25em;\n }\n }\n\n .glued-label {\n display: inline-flex;\n white-space: nowrap;\n }\n\n .timeago {\n margin-right: 0.2em;\n }\n\n & .heading-reply-row,\n & .heading-edited-row {\n position: relative;\n align-content: baseline;\n font-size: 0.85em;\n margin-top: 0.2em;\n line-height: 130%;\n max-width: 100%;\n align-items: stretch;\n }\n\n & .reply-to-popover,\n & .reply-to-no-popover,\n & .mentions {\n min-width: 0;\n margin-right: 0.4em;\n flex-shrink: 0;\n }\n\n .reply-glued-label {\n margin-right: 0.5em;\n }\n\n .reply-to-popover {\n .reply-to:hover::before {\n content: \"\";\n display: block;\n position: absolute;\n bottom: 0;\n width: 100%;\n border-bottom: 1px solid var(--faint);\n pointer-events: none;\n }\n\n .faint-link:hover {\n // override default\n text-decoration: none;\n }\n\n &.-strikethrough {\n .reply-to::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 50%;\n width: 100%;\n border-bottom: 1px solid var(--faint);\n pointer-events: none;\n }\n }\n }\n\n & .mentions,\n & .reply-to {\n white-space: nowrap;\n position: relative;\n }\n\n & .mentions-text,\n & .reply-to-text {\n color: var(--faint);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .mentions-line {\n display: inline;\n }\n\n .replies {\n margin-top: 0.25em;\n line-height: 1.3;\n font-size: 0.85em;\n display: flex;\n flex-wrap: wrap;\n\n & > * {\n margin-right: 0.4em;\n }\n }\n\n .reply-link {\n height: 17px;\n }\n\n .repeat-info {\n padding: 0.4em var(--status-margin, $status-margin);\n\n .repeat-icon {\n color: $fallback--cGreen;\n color: var(--cGreen, $fallback--cGreen);\n }\n }\n\n .repeater-avatar {\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n margin-left: 28px;\n width: 20px;\n height: 20px;\n }\n\n .repeater-name {\n text-overflow: ellipsis;\n margin-right: 0;\n\n .emoji {\n width: 14px;\n height: 14px;\n vertical-align: middle;\n object-fit: contain;\n }\n }\n\n .status-fadein {\n animation-duration: 0.4s;\n animation-name: fadein;\n }\n\n @keyframes fadein {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n .status-actions {\n position: relative;\n width: 100%;\n display: flex;\n margin-top: var(--status-margin, $status-margin);\n\n > * {\n max-width: 4em;\n flex: 1;\n }\n }\n\n .muted {\n padding: 0.25em 0.6em;\n height: 1.2em;\n line-height: 1.2em;\n text-overflow: ellipsis;\n overflow: hidden;\n display: flex;\n flex-wrap: nowrap;\n\n & .status-username,\n & .mute-thread,\n & .mute-words {\n word-wrap: normal;\n word-break: normal;\n white-space: nowrap;\n }\n\n & .status-username,\n & .mute-words {\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n .status-username {\n font-weight: normal;\n flex: 0 1 auto;\n margin-right: 0.2em;\n font-size: smaller;\n }\n\n .mute-thread {\n flex: 0 0 auto;\n }\n\n .mute-words {\n flex: 1 0 5em;\n margin-left: 0.2em;\n\n &::before {\n content: \" \";\n }\n }\n\n .unmute {\n flex: 0 0 auto;\n margin-left: auto;\n display: block;\n }\n }\n\n .reply-form {\n padding-top: 0;\n padding-bottom: 0;\n }\n\n .reply-body {\n flex: 1;\n }\n\n .favs-repeated-users {\n margin-top: var(--status-margin, $status-margin);\n }\n\n .stats {\n width: 100%;\n display: flex;\n line-height: 1em;\n }\n\n .avatar-row {\n flex: 1;\n overflow: hidden;\n position: relative;\n display: flex;\n align-items: center;\n\n &::before {\n content: \"\";\n position: absolute;\n height: 100%;\n width: 1px;\n left: 0;\n background-color: var(--faint, $fallback--faint);\n }\n }\n\n .stat-count {\n margin-right: var(--status-margin, $status-margin);\n user-select: none;\n\n .stat-title {\n color: var(--faint, $fallback--faint);\n font-size: 0.85em;\n text-transform: uppercase;\n position: relative;\n }\n\n .stat-number {\n font-weight: bolder;\n font-size: 1.1em;\n line-height: 1em;\n }\n\n &:hover .stat-title {\n text-decoration: underline;\n }\n }\n\n @media all and (max-width: 800px) {\n .repeater-avatar {\n margin-left: 20px;\n }\n\n .post-avatar {\n width: 40px;\n height: 40px;\n\n // TODO define those other way somehow?\n // stylelint-disable rscss/class-format\n &.-compact {\n width: 32px;\n height: 32px;\n }\n }\n }\n\n .quoted-status {\n margin-top: 0.5em;\n border: 1px solid var(--border, $fallback--border);\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n\n &.-unavailable-prompt {\n padding: 0.5em;\n }\n }\n\n .display-quoted-status-button {\n margin: 0.5em;\n\n &-icon {\n color: inherit;\n }\n }\n}\n","@import \"../../variables\";\n\n.Report {\n .report-content {\n margin: 0.5em 0 1em;\n }\n\n .report-state {\n margin: 0.5em 0 1em;\n }\n\n .reported-status {\n border: 1px solid $fallback--faint;\n border-color: var(--faint, $fallback--faint);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n color: $fallback--text;\n color: var(--text, $fallback--text);\n display: block;\n padding: 0.5em;\n margin: 0.5em 0;\n\n .status-content {\n pointer-events: none;\n }\n\n .reported-status-heading {\n display: flex;\n width: 100%;\n justify-content: space-between;\n margin-bottom: 0.2em;\n }\n\n .reported-status-name {\n font-weight: bold;\n }\n }\n\n .note {\n width: 100%;\n margin-bottom: 0.5em;\n }\n}\n","@import \"../../variables\";\n\n// TODO Copypaste from Status, should unify it somehow\n.Notification {\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n word-wrap: break-word;\n word-break: break-word;\n\n --emoji-size: 14px;\n\n &:hover {\n --_still-image-img-visibility: visible;\n --_still-image-canvas-visibility: hidden;\n --_still-image-label-visibility: hidden;\n }\n\n &.-muted {\n padding: 0.25em 0.6em;\n height: 1.2em;\n line-height: 1.2em;\n text-overflow: ellipsis;\n overflow: hidden;\n display: flex;\n flex-wrap: nowrap;\n\n & .status-username,\n & .mute-thread,\n & .mute-words {\n word-wrap: normal;\n word-break: normal;\n white-space: nowrap;\n }\n\n & .status-username,\n & .mute-words {\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n .status-username {\n font-weight: normal;\n flex: 0 1 auto;\n margin-right: 0.2em;\n font-size: smaller;\n }\n\n .mute-thread {\n flex: 0 0 auto;\n }\n\n .mute-words {\n flex: 1 0 5em;\n margin-left: 0.2em;\n\n &::before {\n content: \" \";\n }\n }\n\n .unmute {\n flex: 0 0 auto;\n margin-left: auto;\n display: block;\n }\n }\n\n .type-icon {\n margin: 0 0.1em;\n }\n\n &.-type--repeat .type-icon {\n color: $fallback--cGreen;\n color: var(--cGreen, $fallback--cGreen);\n }\n\n &.-type--follow .type-icon {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n\n &.-type--follow-request .type-icon {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n\n &.-type--like .type-icon {\n color: orange;\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n &.-type--move .type-icon {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n}\n","@import \"../../variables\";\n\n.Notifications {\n &:not(.minimal) {\n // a bit of a hack to allow scrolling below notifications\n padding-bottom: 15em;\n }\n\n .loadmore-error {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n\n .notification {\n position: relative;\n\n .notification-overlay {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n pointer-events: none;\n }\n\n &.unseen {\n .notification-overlay {\n background-image: linear-gradient(135deg, var(--badgeNotification, $fallback--cRed) 4px, transparent 10px);\n }\n }\n }\n}\n\n/* stylelint-disable-next-line no-descending-specificity */\n.notification {\n box-sizing: border-box;\n\n &:hover .animated.Avatar {\n canvas {\n display: none;\n }\n\n img {\n visibility: visible;\n }\n }\n\n &:last-child .Notification {\n border-bottom: none;\n }\n\n .non-mention {\n display: flex;\n flex: 1;\n flex-wrap: nowrap;\n padding: 0.6em;\n min-width: 0;\n\n .avatar-container {\n width: 32px;\n height: 32px;\n }\n\n .faint {\n --link: var(--faintLink);\n --text: var(--faint);\n }\n }\n\n .follow-request-accept {\n &:hover {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .follow-request-reject {\n &:hover {\n color: $fallback--cRed;\n color: var(--cRed, $fallback--cRed);\n }\n }\n\n .follow-text,\n .move-text {\n padding: 0.5em 0;\n overflow-wrap: break-word;\n display: flex;\n justify-content: space-between;\n\n .follow-name {\n display: block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n\n /* TODO cleanup this */\n .Status {\n flex: 1;\n }\n\n time {\n white-space: nowrap;\n }\n\n .notification-right {\n flex: 1;\n padding-left: 0.8em;\n min-width: 0;\n\n .timeago {\n min-width: 3em;\n text-align: right;\n }\n\n .timeago-link {\n margin-right: 0.2em;\n }\n\n .expand-icon {\n .svg-inline--fa {\n margin-left: 0.25em;\n }\n }\n }\n\n .emoji-reaction-emoji {\n font-size: 1.3em;\n max-width: 1.25em;\n height: 1.25em;\n width: auto;\n }\n\n .emoji-reaction-emoji-image {\n vertical-align: middle;\n object-fit: contain;\n }\n\n .notification-details {\n min-width: 0;\n word-wrap: break-word;\n line-height: var(--post-line-height);\n position: relative;\n overflow: hidden;\n width: 100%;\n flex: 1 1 0;\n display: flex;\n flex-wrap: nowrap;\n justify-content: space-between;\n\n .name-and-action {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .username {\n font-weight: bolder;\n max-width: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .timeago {\n margin-right: 0.2em;\n }\n\n .status-content {\n margin: 0;\n max-height: 300px;\n }\n\n h1 {\n word-break: break-all;\n margin: 0 0 0.3em;\n padding: 0;\n font-size: 1em;\n line-height: 1.5;\n\n small {\n font-weight: lighter;\n }\n }\n\n p {\n margin: 0;\n margin-top: 0;\n margin-bottom: 0.3em;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.MobileNav {\n z-index: var(--ZI_navbar);\n\n .mobile-nav {\n display: grid;\n line-height: var(--navbar-height);\n grid-template-rows: 50px;\n grid-template-columns: 2fr auto;\n width: 100%;\n box-sizing: border-box;\n\n a {\n color: var(--topBarLink, $fallback--link);\n }\n }\n\n .mobile-inner-nav {\n width: 100%;\n display: flex;\n align-items: center;\n }\n\n .mobile-nav-button {\n display: inline-block;\n text-align: center;\n padding: 0 1em;\n position: relative;\n cursor: pointer;\n }\n\n .site-name {\n padding: 0 0.3em;\n display: inline-block;\n }\n\n .item {\n /* moslty just to get rid of extra whitespaces */\n display: flex;\n }\n\n .alert-dot {\n border-radius: 100%;\n height: 8px;\n width: 8px;\n position: absolute;\n left: calc(50% - 4px);\n top: calc(50% - 4px);\n margin-left: 6px;\n margin-top: -6px;\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .mobile-notifications-drawer {\n width: 100%;\n height: 100vh;\n overflow-x: hidden;\n position: fixed;\n top: 0;\n left: 0;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n transition-property: transform;\n transition-duration: 0.25s;\n transform: translateX(0);\n z-index: var(--ZI_navbar);\n -webkit-overflow-scrolling: touch;\n\n &.-closed {\n transform: translateX(100%);\n box-shadow: none;\n }\n }\n\n .mobile-notifications-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: calc(var(--ZI_navbar) + 100);\n width: 100%;\n height: 50px;\n line-height: 50px;\n position: absolute;\n color: var(--topBarText);\n background-color: $fallback--fg;\n background-color: var(--topBar, $fallback--fg);\n box-shadow: 0 0 4px rgb(0 0 0 / 60%);\n box-shadow: var(--topBarShadow);\n\n .spacer {\n flex: 1;\n }\n\n .title {\n font-size: 1.3em;\n margin-left: 0.6em;\n }\n }\n\n .pins {\n flex: 1;\n\n .pinned-item {\n flex-grow: 1;\n }\n }\n\n .mobile-notifications {\n margin-top: 50px;\n width: 100vw;\n height: calc(100vh - var(--navbar-height));\n overflow-x: hidden;\n overflow-y: scroll;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .notifications {\n padding: 0;\n border-radius: 0;\n box-shadow: none;\n\n .panel {\n border-radius: 0;\n margin: 0;\n box-shadow: none;\n }\n\n .panel::after {\n border-radius: 0;\n }\n\n .panel .panel-heading {\n border-radius: 0;\n box-shadow: none;\n }\n }\n }\n\n .confirm-modal.dark-overlay {\n &::before {\n z-index: 3000;\n }\n\n .dialog-modal.panel {\n z-index: 3001;\n }\n }\n}\n\n","\n@import \"../../variables\";\n\n.SearchBar {\n display: inline-flex;\n align-items: baseline;\n vertical-align: baseline;\n justify-content: flex-end;\n\n &.-expanded {\n width: 100%;\n }\n\n .search-bar-input,\n .search-button {\n height: 29px;\n }\n\n .search-bar-input {\n flex: 1 0 auto;\n }\n\n .cancel-search {\n height: 50px;\n }\n\n .cancel-icon {\n color: $fallback--text;\n color: var(--btnTopBarText, $fallback--text);\n }\n}\n\n","@import \"../../variables\";\n\n.DesktopNav {\n width: 100%;\n z-index: var(--ZI_navbar);\n\n input {\n color: var(--inputTopbarText, var(--inputText));\n }\n\n a {\n color: var(--topBarLink, $fallback--link);\n }\n\n .inner-nav {\n display: grid;\n grid-template-rows: var(--navbar-height);\n grid-template-columns: 2fr auto 2fr;\n grid-template-areas: \"sitename logo actions\";\n box-sizing: border-box;\n padding: 0 1.2em;\n margin: auto;\n max-width: 980px;\n }\n\n &.-column-stretch .inner-nav {\n --miniColumn: 25rem;\n --maxiColumn: 45rem;\n --columnGap: 1em;\n\n max-width:\n calc(\n var(--sidebarColumnWidth, var(--miniColumn)) +\n var(--contentColumnWidth, var(--maxiColumn)) +\n var(--columnGap)\n );\n }\n\n &.-logoLeft .inner-nav {\n grid-template-columns: auto 2fr 2fr;\n grid-template-areas: \"logo sitename actions\";\n }\n\n &.-column-stretch.-wide .inner-nav {\n max-width:\n calc(\n var(--sidebarColumnWidth, var(--miniColumn)) +\n var(--contentColumnWidth, var(--maxiColumn)) +\n var(--notifsColumnWidth, var(--miniColumn)) +\n var(--columnGap)\n );\n }\n\n .button-default {\n &,\n svg {\n color: $fallback--text;\n color: var(--btnTopBarText, $fallback--text);\n }\n\n &:active {\n background-color: $fallback--fg;\n background-color: var(--btnPressedTopBar, $fallback--fg);\n color: $fallback--text;\n color: var(--btnPressedTopBarText, $fallback--text);\n }\n\n &:disabled {\n color: $fallback--text;\n color: var(--btnDisabledTopBarText, $fallback--text);\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledTopBarText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--btnToggledTopBar, $fallback--fg);\n }\n }\n\n .logo {\n grid-area: logo;\n position: relative;\n transition: opacity;\n transition-timing-function: ease-out;\n transition-duration: 100ms;\n\n @media all and (min-width: 800px) {\n /* stylelint-disable-next-line declaration-no-important */\n opacity: 1 !important;\n }\n\n .mask {\n mask-repeat: no-repeat;\n mask-position: center;\n mask-size: contain;\n background-color: $fallback--fg;\n background-color: var(--topBarText, $fallback--fg);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n }\n\n img {\n display: inline-block;\n height: var(--navbar-height);\n }\n }\n\n .nav-icon {\n margin-left: 0.2em;\n width: 2em;\n height: 100%;\n text-align: center;\n\n .svg-inline--fa {\n color: $fallback--link;\n color: var(--topBarLink, $fallback--link);\n }\n }\n\n .sitename {\n grid-area: sitename;\n }\n\n .actions {\n grid-area: actions;\n }\n\n .item {\n flex: 1;\n line-height: var(--navbar-height);\n height: var(--navbar-height);\n overflow: hidden;\n display: flex;\n flex-wrap: wrap;\n\n &.right {\n justify-content: flex-end;\n text-align: right;\n }\n }\n\n .spacer {\n width: 1em;\n }\n}\n","\n@import \"../../variables\";\n\n.list {\n &-item:not(:last-child) {\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n\n &-empty-content {\n text-align: center;\n padding: 10px;\n }\n}\n","\n@import \"../../variables\";\n\n.user-reporting-panel {\n width: 90vw;\n max-width: 700px;\n min-height: 20vh;\n max-height: 80vh;\n\n .panel-body {\n display: flex;\n flex-direction: column-reverse;\n border-top: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n overflow: hidden;\n }\n\n &-left {\n padding: 1.1em 0.7em 0.7em;\n line-height: var(--post-line-height);\n box-sizing: border-box;\n\n > div {\n margin-bottom: 1em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n p {\n margin-top: 0;\n }\n\n textarea.form-control {\n line-height: 16px;\n resize: none;\n overflow: hidden;\n transition: min-height 200ms 100ms;\n min-height: 44px;\n width: 100%;\n }\n\n .btn {\n min-width: 10em;\n padding: 0 2em;\n }\n\n .alert {\n margin: 1em 0 0;\n line-height: 1.3em;\n }\n }\n\n &-right {\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n }\n\n &-sitem {\n display: flex;\n justify-content: space-between;\n\n /* TODO cleanup this */\n > .Status {\n flex: 1;\n }\n\n > .checkbox {\n margin: 0.75em;\n }\n }\n\n @media all and (min-width: 801px) {\n .panel-body {\n flex-direction: row;\n }\n\n &-left {\n width: 50%;\n max-width: 320px;\n border-right: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 1.1em;\n\n > div {\n margin-bottom: 2em;\n }\n }\n\n &-right {\n width: 50%;\n flex: 1 1 auto;\n margin-bottom: 12px;\n }\n }\n}\n","\n.modal-view.edit-form-modal-view {\n align-items: flex-start;\n}\n\n.edit-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n\n .form-bottom-left {\n max-width: 6.5em;\n\n .emoji-icon {\n justify-content: right;\n }\n }\n}\n","\n.modal-view.post-form-modal-view {\n align-items: flex-start;\n}\n\n.post-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n","\n.modal-view.status-history-modal-view {\n align-items: flex-start;\n}\n\n.status-history-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n","\n@import \"../../variables\";\n\n.global-notice-list {\n position: fixed;\n top: calc(var(--navbar-height) + 0.5em);\n width: 100%;\n pointer-events: none;\n z-index: var(--ZI_modals_popovers);\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .global-notice {\n pointer-events: auto;\n text-align: center;\n width: 40em;\n max-width: calc(100% - 3em);\n display: flex;\n padding-left: 1.5em;\n line-height: 2;\n margin-bottom: 0.5em;\n\n .notice-message {\n flex: 1 1 100%;\n }\n }\n\n .global-error {\n background-color: var(--alertPopupError, $fallback--cRed);\n color: var(--alertPopupErrorText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupErrorText, $fallback--text);\n }\n }\n\n .global-warning {\n background-color: var(--alertPopupWarning, $fallback--cOrange);\n color: var(--alertPopupWarningText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupWarningText, $fallback--text);\n }\n }\n\n .global-success {\n background-color: var(--alertPopupSuccess, $fallback--cGreen);\n color: var(--alertPopupSuccessText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupSuccessText, $fallback--text);\n }\n }\n\n .global-info {\n background-color: var(--alertPopupNeutral, $fallback--fg);\n color: var(--alertPopupNeutralText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupNeutralText, $fallback--text);\n }\n }\n\n .close-notice {\n padding-right: 0.2em;\n\n .svg-inline--fa:hover {\n opacity: 0.6;\n }\n }\n}\n","// stylelint-disable rscss/class-format\n/* stylelint-disable no-descending-specificity */\n@import \"./variables\";\n@import \"./panel\";\n\n:root {\n --navbar-height: 3.5rem;\n --post-line-height: 1.4;\n // Z-Index stuff\n --ZI_media_modal: 9000;\n --ZI_modals_popovers: 8500;\n --ZI_modals: 8000;\n --ZI_navbar_popovers: 7500;\n --ZI_navbar: 7000;\n --ZI_popovers: 6000;\n}\n\nhtml {\n font-size: 14px;\n // overflow-x: clip causes my browser's tab to crash with SIGILL lul\n}\n\nbody {\n font-family: sans-serif;\n font-family: var(--interfaceFont, sans-serif);\n margin: 0;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n overscroll-behavior-y: none;\n overflow-x: clip;\n overflow-y: scroll;\n\n &.hidden {\n display: none;\n }\n}\n\n// ## Custom scrollbars\n// Only show custom scrollbars on devices which\n// have a cursor/pointer to operate them\n@media (any-pointer: fine) {\n * {\n scrollbar-color: var(--btn) transparent;\n\n &::-webkit-scrollbar {\n background: transparent;\n }\n\n &::-webkit-scrollbar-button,\n &::-webkit-scrollbar-thumb {\n background-color: var(--btn);\n box-shadow: var(--buttonShadow);\n border-radius: var(--btnRadius);\n }\n\n // horizontal/vertical/increment/decrement are webkit-specific stuff\n // that indicates whether we're affecting vertical scrollbar, increase button etc\n // stylelint-disable selector-pseudo-class-no-unknown\n &::-webkit-scrollbar-button {\n --___bgPadding: 2px;\n\n color: var(--btnText);\n background-repeat: no-repeat, no-repeat;\n\n &:horizontal {\n background-size: 50% calc(50% - var(--___bgPadding)), 50% calc(50% - var(--___bgPadding));\n\n &:increment {\n background-image:\n linear-gradient(45deg, var(--btnText) 50%, transparent 51%),\n linear-gradient(-45deg, transparent 50%, var(--btnText) 51%);\n background-position: top var(--___bgPadding) left 50%, right 50% bottom var(--___bgPadding);\n }\n\n &:decrement {\n background-image:\n linear-gradient(45deg, transparent 50%, var(--btnText) 51%),\n linear-gradient(-45deg, var(--btnText) 50%, transparent 51%);\n background-position: bottom var(--___bgPadding) right 50%, left 50% top var(--___bgPadding);\n }\n }\n\n &:vertical {\n background-size: calc(50% - var(--___bgPadding)) 50%, calc(50% - var(--___bgPadding)) 50%;\n\n &:increment {\n background-image:\n linear-gradient(-45deg, transparent 50%, var(--btnText) 51%),\n linear-gradient(45deg, transparent 50%, var(--btnText) 51%);\n background-position: right var(--___bgPadding) top 50%, left var(--___bgPadding) top 50%;\n }\n\n &:decrement {\n background-image:\n linear-gradient(-45deg, var(--btnText) 50%, transparent 51%),\n linear-gradient(45deg, var(--btnText) 50%, transparent 51%);\n background-position: left var(--___bgPadding) top 50%, right var(--___bgPadding) top 50%;\n }\n }\n }\n // stylelint-enable selector-pseudo-class-no-unknown\n }\n // Body should have background to scrollbar otherwise it will use white (body color?)\n html {\n scrollbar-color: var(--selectedMenu) var(--wallpaper);\n background: var(--wallpaper);\n }\n}\n\na {\n text-decoration: none;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n}\n\nh4 {\n margin: 0;\n}\n\n.iconLetter {\n display: inline-block;\n text-align: center;\n font-weight: 1000;\n}\n\ni[class*=\"icon-\"],\n.svg-inline--fa,\n.iconLetter {\n color: $fallback--icon;\n color: var(--icon, $fallback--icon);\n}\n\n.button-unstyled:hover,\na:hover {\n > i[class*=\"icon-\"],\n > .svg-inline--fa,\n > .iconLetter {\n color: var(--text);\n }\n}\n\nnav {\n z-index: var(--ZI_navbar);\n background-color: $fallback--fg;\n background-color: var(--topBar, $fallback--fg);\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n box-shadow: 0 0 4px rgb(0 0 0 / 60%);\n box-shadow: var(--topBarShadow);\n box-sizing: border-box;\n height: var(--navbar-height);\n position: fixed;\n}\n\n#sidebar {\n grid-area: sidebar;\n}\n\n#modal {\n position: absolute;\n z-index: var(--ZI_modals);\n}\n\n.column.-scrollable {\n top: var(--navbar-height);\n position: sticky;\n}\n\n#main-scroller {\n grid-area: content;\n position: relative;\n}\n\n#notifs-column {\n grid-area: notifs;\n}\n\n.app-bg-wrapper {\n position: fixed;\n height: 100%;\n top: var(--navbar-height);\n z-index: -1000;\n left: 0;\n right: -20px;\n background-size: cover;\n background-repeat: no-repeat;\n background-color: var(--wallpaper);\n background-image: var(--body-background-image);\n background-position: 50%;\n}\n\n.underlay {\n grid-column: 1 / span 3;\n grid-row: 1 / 1;\n pointer-events: none;\n background-color: rgb(0 0 0 / 15%);\n background-color: var(--underlay, rgb(0 0 0 / 15%));\n z-index: -1000;\n}\n\n.app-layout {\n --miniColumn: 25rem;\n --maxiColumn: 45rem;\n --columnGap: 1em;\n --status-margin: 0.75em;\n --effectiveSidebarColumnWidth: minmax(var(--miniColumn), var(--sidebarColumnWidth, var(--miniColumn)));\n --effectiveNotifsColumnWidth: minmax(var(--miniColumn), var(--notifsColumnWidth, var(--miniColumn)));\n --effectiveContentColumnWidth: minmax(var(--miniColumn), var(--contentColumnWidth, var(--maxiColumn)));\n\n position: relative;\n display: grid;\n grid-template-columns:\n var(--effectiveSidebarColumnWidth)\n var(--effectiveContentColumnWidth);\n grid-template-areas: \"sidebar content\";\n grid-template-rows: 1fr;\n box-sizing: border-box;\n margin: 0 auto;\n align-content: flex-start;\n flex-wrap: wrap;\n justify-content: center;\n min-height: 100vh;\n overflow-x: clip;\n\n .column {\n --___columnMargin: var(--columnGap);\n\n display: grid;\n grid-template-columns: 100%;\n box-sizing: border-box;\n grid-row: 1 / 1;\n margin: 0 calc(var(--___columnMargin) / 2);\n padding: calc(var(--___columnMargin)) 0;\n row-gap: var(--___columnMargin);\n align-content: start;\n\n &:not(.-scrollable) {\n margin-top: var(--navbar-height);\n }\n\n &:hover {\n z-index: 2;\n }\n\n &.-full-height {\n margin-bottom: 0;\n padding-top: 0;\n padding-bottom: 0;\n }\n\n &.-scrollable {\n --___paddingIncrease: calc(var(--columnGap) / 2);\n\n position: sticky;\n top: var(--navbar-height);\n max-height: calc(100vh - var(--navbar-height));\n overflow-y: auto;\n overflow-x: hidden;\n margin-left: calc(var(--___paddingIncrease) * -1);\n padding-left: calc(var(--___paddingIncrease) + var(--___columnMargin) / 2);\n\n // On browsers that don't support hiding scrollbars we enforce \"show scrolbars\" mode\n // might implement old style of hiding scrollbars later if there's demand\n @supports (scrollbar-width: none) or (-webkit-text-fill-color: initial) {\n &:not(.-show-scrollbar) {\n scrollbar-width: none;\n margin-right: calc(var(--___paddingIncrease) * -1);\n padding-right: calc(var(--___paddingIncrease) + var(--___columnMargin) / 2);\n\n &::-webkit-scrollbar {\n display: block;\n width: 0;\n }\n }\n }\n\n .panel-heading.-sticky {\n top: calc(var(--columnGap) / -1);\n }\n }\n }\n\n &.-has-new-post-button {\n .column {\n padding-bottom: 10rem;\n }\n }\n\n &.-no-sticky-headers {\n .column {\n .panel-heading.-sticky {\n position: relative;\n top: 0;\n }\n }\n }\n\n .column-inner {\n display: grid;\n grid-template-columns: 100%;\n box-sizing: border-box;\n row-gap: 1em;\n align-content: start;\n }\n\n &.-reverse:not(.-wide, .-mobile) {\n grid-template-columns:\n var(--effectiveContentColumnWidth)\n var(--effectiveSidebarColumnWidth);\n grid-template-areas: \"content sidebar\";\n }\n\n &.-wide {\n grid-template-columns:\n var(--effectiveSidebarColumnWidth)\n var(--effectiveContentColumnWidth)\n var(--effectiveNotifsColumnWidth);\n grid-template-areas: \"sidebar content notifs\";\n\n &.-reverse {\n grid-template-columns:\n var(--effectiveNotifsColumnWidth)\n var(--effectiveContentColumnWidth)\n var(--effectiveSidebarColumnWidth);\n grid-template-areas: \"notifs content sidebar\";\n }\n }\n\n &.-mobile {\n grid-template-columns: 100vw;\n grid-template-areas: \"content\";\n padding: 0;\n\n .column {\n padding-top: 0;\n margin: var(--navbar-height) 0 0 0;\n }\n\n .panel-heading,\n .panel-heading::after,\n .panel-heading::before,\n .panel,\n .panel::after {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n #sidebar,\n #notifs-column {\n display: none;\n }\n }\n\n &.-normal {\n #notifs-column {\n display: none;\n }\n }\n}\n\n.text-center {\n text-align: center;\n}\n\n.button-default {\n user-select: none;\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--btn, $fallback--fg);\n border: none;\n border-radius: $fallback--btnRadius;\n border-radius: var(--btnRadius, $fallback--btnRadius);\n cursor: pointer;\n box-shadow: $fallback--buttonShadow;\n box-shadow: var(--buttonShadow);\n font-size: 1em;\n font-family: sans-serif;\n font-family: var(--interfaceFont, sans-serif);\n\n &.-sublime {\n background: transparent;\n }\n\n i[class*=\"icon-\"],\n .svg-inline--fa {\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n }\n\n &::-moz-focus-inner {\n border: none;\n }\n\n &:hover {\n box-shadow: 0 0 4px rgb(255 255 255 / 30%);\n box-shadow: var(--buttonHoverShadow);\n }\n\n &:active {\n box-shadow:\n 0 0 4px 0 rgb(255 255 255 / 30%),\n 0 1px 0 0 rgb(0 0 0 / 20%) inset,\n 0 -1px 0 0 rgb(255 255 255 / 20%) inset;\n box-shadow: var(--buttonPressedShadow);\n color: $fallback--text;\n color: var(--btnPressedText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--btnPressed, $fallback--fg);\n\n svg,\n i {\n color: $fallback--text;\n color: var(--btnPressedText, $fallback--text);\n }\n }\n\n &:disabled {\n cursor: not-allowed;\n color: $fallback--text;\n color: var(--btnDisabledText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--btnDisabled, $fallback--fg);\n\n svg,\n i {\n color: $fallback--text;\n color: var(--btnDisabledText, $fallback--text);\n }\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledText, $fallback--text);\n background-color: $fallback--fg;\n background-color: var(--btnToggled, $fallback--fg);\n box-shadow:\n 0 0 4px 0 rgb(255 255 255 / 30%),\n 0 1px 0 0 rgb(0 0 0 / 20%) inset,\n 0 -1px 0 0 rgb(255 255 255 / 20%) inset;\n box-shadow: var(--buttonPressedShadow);\n\n svg,\n i {\n color: $fallback--text;\n color: var(--btnToggledText, $fallback--text);\n }\n }\n\n &.danger {\n // TODO: add better color variable\n color: $fallback--text;\n color: var(--alertErrorPanelText, $fallback--text);\n background-color: $fallback--alertError;\n background-color: var(--alertError, $fallback--alertError);\n }\n}\n\n.button-unstyled {\n background: none;\n border: none;\n outline: none;\n display: inline;\n text-align: initial;\n font-size: 100%;\n font-family: inherit;\n padding: 0;\n line-height: unset;\n cursor: pointer;\n box-sizing: content-box;\n color: inherit;\n\n &.-link {\n color: $fallback--link;\n color: var(--link, $fallback--link);\n }\n\n &.-fullwidth {\n width: 100%;\n }\n\n &.-hover-highlight {\n &:hover svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n\ninput,\ntextarea,\n.input {\n &.unstyled {\n border-radius: 0;\n background: none;\n box-shadow: none;\n height: unset;\n }\n\n --_padding: 0.5em;\n\n border: none;\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n box-shadow:\n 0 1px 0 0 rgb(0 0 0 / 20%) inset,\n 0 -1px 0 0 rgb(255 255 255 / 20%) inset,\n 0 0 2px 0 rgb(0 0 0 / 100%) inset;\n box-shadow: var(--inputShadow);\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n color: $fallback--lightText;\n color: var(--inputText, $fallback--lightText);\n font-family: sans-serif;\n font-family: var(--inputFont, sans-serif);\n font-size: 1em;\n margin: 0;\n box-sizing: border-box;\n display: inline-block;\n position: relative;\n line-height: 2;\n hyphens: none;\n padding: 0 var(--_padding);\n\n &:disabled,\n &[disabled=\"disabled\"],\n &.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &[type=\"range\"] {\n background: none;\n border: none;\n margin: 0;\n box-shadow: none;\n flex: 1;\n }\n\n &[type=\"radio\"] {\n display: none;\n\n &:checked + label::before {\n box-shadow: 0 0 2px black inset, 0 0 0 4px $fallback--fg inset;\n box-shadow: var(--inputShadow), 0 0 0 4px var(--fg, $fallback--fg) inset;\n background-color: var(--accent, $fallback--link);\n }\n\n &:disabled {\n &,\n & + label,\n & + label::before {\n opacity: 0.5;\n }\n }\n\n + label::before {\n flex-shrink: 0;\n display: inline-block;\n content: \"\";\n transition: box-shadow 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: 100%; // Radio buttons should always be circle\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n margin-right: 0.5em;\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1;\n font-size: 1.1em;\n box-sizing: border-box;\n color: transparent;\n overflow: hidden;\n }\n }\n\n &[type=\"checkbox\"] {\n &:checked + label::before {\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n &:disabled {\n &,\n & + label,\n & + label::before {\n opacity: 0.5;\n }\n }\n\n + label::before {\n flex-shrink: 0;\n display: inline-block;\n content: \"✓\";\n transition: color 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: $fallback--checkboxRadius;\n border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n margin-right: 0.5em;\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1;\n font-size: 1.1em;\n box-sizing: border-box;\n color: transparent;\n overflow: hidden;\n }\n }\n\n &.resize-height {\n resize: vertical;\n }\n}\n\n// Textareas should have stock line-height + vertical padding instead of huge line-height\ntextarea {\n padding: var(--_padding);\n line-height: var(--post-line-height);\n}\n\noption {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n}\n\n.hide-number-spinner {\n appearance: textfield;\n\n &[type=\"number\"]::-webkit-inner-spin-button,\n &[type=\"number\"]::-webkit-outer-spin-button {\n opacity: 0;\n display: none;\n }\n}\n\n.cards-list {\n list-style: none;\n display: grid;\n grid-auto-flow: row dense;\n grid-template-columns: 1fr 1fr;\n\n li {\n border: 1px solid var(--border);\n border-radius: var(--inputRadius);\n padding: 0.5em;\n margin: 0.25em;\n }\n}\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n.btn-group {\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n\n button,\n .button-dropdown {\n position: relative;\n flex: 1 1 auto;\n\n &:not(:last-child),\n &:not(:last-child) .button-default {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n &:not(:first-child),\n &:not(:first-child) .button-default {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n}\n\n.fa {\n color: grey;\n}\n\n.mobile-shown {\n display: none;\n}\n\n.badge {\n box-sizing: border-box;\n display: inline-block;\n border-radius: 99px;\n max-width: 10em;\n min-width: 1.7em;\n height: 1.3em;\n padding: 0.15em;\n vertical-align: middle;\n font-weight: normal;\n font-style: normal;\n font-size: 0.9em;\n line-height: 1;\n text-align: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n &.badge-notification {\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n color: white;\n color: var(--badgeNotificationText, white);\n }\n}\n\n.alert {\n margin: 0 0.35em;\n padding: 0 0.25em;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n\n &.error {\n background-color: $fallback--alertError;\n background-color: var(--alertError, $fallback--alertError);\n color: $fallback--text;\n color: var(--alertErrorText, $fallback--text);\n\n .panel-heading & {\n color: $fallback--text;\n color: var(--alertErrorPanelText, $fallback--text);\n }\n }\n\n &.warning {\n background-color: $fallback--alertWarning;\n background-color: var(--alertWarning, $fallback--alertWarning);\n color: $fallback--text;\n color: var(--alertWarningText, $fallback--text);\n\n .panel-heading & {\n color: $fallback--text;\n color: var(--alertWarningPanelText, $fallback--text);\n }\n }\n\n &.success {\n background-color: var(--alertSuccess, $fallback--alertWarning);\n color: var(--alertSuccessText, $fallback--text);\n\n .panel-heading & {\n color: var(--alertSuccessPanelText, $fallback--text);\n }\n }\n}\n\n.faint {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n}\n\n.faint-link {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n\n &:hover {\n text-decoration: underline;\n }\n}\n\n.visibility-notice {\n padding: 0.5em;\n border: 1px solid $fallback--faint;\n border: 1px solid var(--faint, $fallback--faint);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n}\n\n.notice-dismissible {\n padding-right: 4rem;\n position: relative;\n\n .dismiss {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0.5em;\n color: inherit;\n }\n}\n\n.fa-scale-110 {\n &.svg-inline--fa,\n &.iconLetter {\n font-size: 1.1em;\n }\n}\n\n.fa-old-padding {\n &.iconLetter,\n &.svg-inline--fa,\n &-layer {\n padding: 0 0.3em;\n }\n}\n\n.veryfaint {\n opacity: 0.25;\n}\n\n.login-hint {\n text-align: center;\n\n @media all and (min-width: 801px) {\n display: none;\n }\n\n a {\n display: inline-block;\n padding: 1em 0;\n width: 100%;\n }\n}\n\n.btn.button-default {\n min-height: 2em;\n}\n\n.new-status-notification {\n position: relative;\n font-size: 1.1em;\n z-index: 1;\n flex: 1;\n}\n\n@media all and (max-width: 800px) {\n .mobile-hidden {\n display: none;\n }\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(359deg);\n }\n}\n\n@keyframes shakeError {\n 0% {\n transform: translateX(0);\n }\n\n 15% {\n transform: translateX(0.375rem);\n }\n\n 30% {\n transform: translateX(-0.375rem);\n }\n\n 45% {\n transform: translateX(0.375rem);\n }\n\n 60% {\n transform: translateX(-0.375rem);\n }\n\n 75% {\n transform: translateX(0.375rem);\n }\n\n 90% {\n transform: translateX(-0.375rem);\n }\n\n 100% {\n transform: translateX(0);\n }\n}\n\n// Vue transitions\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.3s;\n}\n\n.fade-enter-from,\n.fade-leave-active {\n opacity: 0;\n}\n/* stylelint-enable no-descending-specificity */\n\n.visible-for-screenreader-only {\n display: block;\n width: 1px;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n visibility: visible;\n clip: rect(0 0 0 0);\n padding: 0;\n position: absolute;\n}\n","/* stylelint-disable no-descending-specificity */\n.panel {\n position: relative;\n display: flex;\n flex-direction: column;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n &::after,\n & {\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 5;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n pointer-events: none;\n }\n}\n\n.panel-body {\n padding: var(--panel-body-padding, 0);\n\n &:empty::before {\n content: \"¯\\\\_(ツ)_/¯\"; // Could use words but it'd require translations\n display: block;\n margin: 1em;\n text-align: center;\n }\n\n > p {\n line-height: 1.3;\n padding: 1em;\n margin: 0;\n }\n}\n\n.panel-heading,\n.panel-footer {\n --panel-heading-height-padding: 0.6em;\n --__panel-heading-gap: 0.5em;\n --__panel-heading-height: 3.2em;\n --__panel-heading-height-inner: calc(var(--__panel-heading-height) - 2 * var(--panel-heading-height-padding, 0));\n\n position: relative;\n box-sizing: border-box;\n display: grid;\n grid-auto-flow: column;\n grid-template-columns: minmax(50%, 1fr);\n grid-auto-columns: auto;\n grid-column-gap: var(--__panel-heading-gap);\n flex: none;\n background-size: cover;\n padding: var(--panel-heading-height-padding);\n height: var(--__panel-heading-height);\n line-height: var(--__panel-heading-height-inner);\n z-index: 4;\n\n &.-flexible-height {\n --__panel-heading-height: auto;\n\n &::after,\n &::before {\n display: none;\n }\n }\n\n &.-stub {\n &,\n &::after {\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n\n &.-sticky {\n position: sticky;\n top: var(--navbar-height);\n }\n\n &::after,\n &::before {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n pointer-events: none;\n }\n\n .title {\n font-size: 1.3em;\n }\n\n .alert {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow-x: hidden;\n }\n\n &:not(.-flexible-height) {\n > .button-default,\n > .alert {\n height: var(--__panel-heading-height-inner);\n min-height: 0;\n box-sizing: border-box;\n margin: 0;\n min-width: 1px;\n padding-top: 0;\n padding-bottom: 0;\n align-self: stretch;\n }\n }\n}\n\n// TODO Should refactor panels into separate component and utilize slots\n\n.panel-heading {\n border-radius: $fallback--panelRadius $fallback--panelRadius 0 0;\n border-radius: var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius) 0 0;\n border-width: 0 0 1px;\n align-items: start;\n // panel theme\n color: var(--panelText);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n &::after {\n background-color: $fallback--fg;\n background-color: var(--panel, $fallback--fg);\n z-index: -2;\n border-radius: $fallback--panelRadius $fallback--panelRadius 0 0;\n border-radius: var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius) 0 0;\n box-shadow: var(--panelHeaderShadow);\n }\n\n a,\n .-link {\n color: $fallback--link;\n color: var(--panelLink, $fallback--link);\n }\n\n .button-unstyled:hover,\n a:hover {\n i[class*=\"icon-\"],\n .svg-inline--fa,\n .iconLetter {\n color: var(--panelText);\n }\n }\n\n .faint {\n background-color: transparent;\n color: $fallback--faint;\n color: var(--panelFaint, $fallback--faint);\n }\n\n .faint-link {\n color: $fallback--faint;\n color: var(--faintLink, $fallback--faint);\n }\n\n &:not(.-flexible-height) {\n > .button-default {\n flex-shrink: 0;\n\n &,\n i[class*=\"icon-\"] {\n color: $fallback--text;\n color: var(--btnPanelText, $fallback--text);\n }\n\n &:active {\n background-color: $fallback--fg;\n background-color: var(--btnPressedPanel, $fallback--fg);\n color: $fallback--text;\n color: var(--btnPressedPanelText, $fallback--text);\n }\n\n &:disabled {\n color: $fallback--text;\n color: var(--btnDisabledPanelText, $fallback--text);\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledPanelText, $fallback--text);\n }\n }\n }\n\n .rightside-button {\n align-self: stretch;\n text-align: center;\n width: var(--__panel-heading-height);\n height: var(--__panel-heading-height);\n margin: calc(-1 * var(--panel-heading-height-padding)) 0;\n margin-right: calc(-1 * var(--__panel-heading-gap));\n\n > button {\n box-sizing: border-box;\n padding: calc(1 * var(--panel-heading-height-padding)) 0;\n height: 100%;\n width: 100%;\n text-align: center;\n\n svg {\n font-size: 1.2em;\n }\n }\n }\n\n .rightside-icon {\n align-self: stretch;\n text-align: center;\n width: var(--__panel-heading-height);\n margin-right: calc(-1 * var(--__panel-heading-gap));\n\n svg {\n font-size: 1.2em;\n }\n }\n}\n\n.panel-footer {\n border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n align-items: center;\n border-width: 1px 0 0;\n border-style: solid;\n border-color: var(--border, $fallback--border);\n}\n/* stylelint-enable no-descending-specificity */\n","\n@import \"../../variables\";\n\n.thread-tree-replies {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n}\n\n.thread-tree-replies-hidden {\n padding: var(--status-margin, $status-margin);\n\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n}\n","\n@import \"../../variables\";\n\n.Conversation {\n z-index: 1;\n\n .conversation-dive-to-top-level-box {\n padding: var(--status-margin, $status-margin);\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n\n .thread-ancestors {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n }\n\n .thread-ancestor.-faded .StatusContent {\n --link: var(--faintLink);\n --text: var(--faint);\n\n color: var(--text);\n }\n\n .thread-ancestor-dive-box {\n padding-left: var(--status-margin, $status-margin);\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n\n /* Make the button stretch along the whole row */\n &,\n &-inner {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n }\n\n .thread-ancestor-dive-box-inner {\n padding: var(--status-margin, $status-margin);\n }\n\n .conversation-status {\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n }\n\n .thread-ancestor-has-other-replies .conversation-status,\n &:last-child .conversation-status,\n .thread-ancestor:last-child .conversation-status,\n .thread-ancestor:last-child .thread-ancestor-dive-box,\n &.-expanded .thread-tree .conversation-status {\n border-bottom: none;\n }\n\n .thread-ancestors + .thread-tree > .conversation-status {\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n /* expanded conversation in timeline */\n &.status-fadein.-expanded .thread-body {\n border-left: 4px solid $fallback--cRed;\n border-left-color: var(--cRed, $fallback--cRed);\n border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n border-bottom: 1px solid var(--border, $fallback--border);\n }\n\n &.-expanded.status-fadein {\n margin: calc(var(--status-margin, $status-margin) / 2);\n }\n}\n","\n@import \"../../variables\";\n\n.timeline-menu-popover {\n min-width: 24rem;\n max-width: 100vw;\n margin-top: 0.6rem;\n font-size: 1rem;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n a {\n display: block;\n padding: 0 0.65em;\n height: 3.5em;\n line-height: 3.5em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &.router-link-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n svg {\n margin-right: 0.4em;\n margin-left: -0.2em;\n }\n }\n\n li {\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 0;\n\n &:last-child a {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child {\n border: none;\n }\n }\n}\n\n.TimelineMenu {\n margin-right: auto;\n min-width: 0;\n\n .popover-trigger-button {\n vertical-align: bottom;\n }\n\n .panel::after {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n }\n\n .timeline-menu-title {\n margin: 0;\n cursor: pointer;\n user-select: none;\n width: 100%;\n display: flex;\n\n .timeline-menu-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n svg {\n margin-left: 0.6em;\n transition: transform 100ms;\n }\n\n .click-blocker {\n cursor: default;\n flex-grow: 1;\n }\n }\n\n &.open .timeline-menu-title svg {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n transform: rotate(180deg);\n }\n\n .panel {\n box-shadow: var(--popoverShadow);\n }\n}\n","@import \"../../variables\";\n\n.Timeline {\n .alert-dot {\n border-radius: 100%;\n height: 8px;\n width: 8px;\n position: absolute;\n left: calc(50% - 4px);\n top: calc(50% - 4px);\n margin-left: 6px;\n margin-top: -6px;\n background-color: var(--badgeNeutral);\n }\n\n .alert-badge {\n font-size: 0.75em;\n line-height: 1;\n text-align: right;\n border-radius: var(--tooltipRadius);\n position: absolute;\n left: calc(50% - 0.5em);\n top: calc(50% - 0.4em);\n padding: 0.2em;\n margin-left: 0.7em;\n margin-top: -1em;\n background-color: var(--badgeNeutral);\n color: var(--badgeNeutralText);\n }\n\n .loadmore-button {\n position: relative;\n }\n\n &.-blocked {\n cursor: progress;\n }\n\n .conversation-heading {\n top: calc(var(--__panel-heading-height) * var(--currentPanelStack, 2));\n z-index: 2;\n }\n\n &.-nonpanel {\n .timeline-heading {\n text-align: center;\n line-height: 2.75em;\n padding: 0 0.5em;\n\n .button-default,\n .alert {\n line-height: 2em;\n width: 100%;\n }\n }\n }\n}\n","@import \"../../variables\";\n\n/* stylelint-disable no-descending-specificity */\n.tab-switcher {\n display: flex;\n\n .tab-icon {\n margin: 0.2em auto;\n display: block;\n }\n\n &.top-tabs {\n flex-direction: column;\n\n > .tabs {\n width: 100%;\n overflow-y: hidden;\n overflow-x: auto;\n padding-top: 5px;\n flex-direction: row;\n flex: 0 0 auto;\n\n &::after,\n &::before {\n content: \"\";\n flex: 1 1 auto;\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n\n .tab-wrapper {\n height: 2em;\n\n &:not(.active)::after {\n left: 0;\n right: 0;\n bottom: 0;\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n }\n\n .tab {\n width: 100%;\n min-width: 1px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n padding-bottom: 99px;\n margin-bottom: 6px - 99px;\n }\n }\n\n .contents.scrollable-tabs {\n flex-basis: 0;\n }\n }\n\n &.side-tabs {\n flex-direction: row;\n\n @media all and (max-width: 800px) {\n overflow-x: auto;\n }\n\n > .contents {\n flex: 1 1 auto;\n }\n\n > .tabs {\n flex: 0 0 auto;\n overflow-y: auto;\n overflow-x: hidden;\n flex-direction: column;\n\n &::after,\n &::before {\n flex-shrink: 0;\n flex-basis: 0.5em;\n content: \"\";\n border-right: 1px solid;\n border-right-color: $fallback--border;\n border-right-color: var(--border, $fallback--border);\n }\n\n &::after {\n flex-grow: 1;\n }\n\n &::before {\n flex-grow: 0;\n }\n\n .tab-wrapper {\n min-width: 10em;\n display: flex;\n flex-direction: column;\n\n @media all and (max-width: 800px) {\n min-width: 4em;\n }\n\n &:not(.active)::after {\n top: 0;\n right: 0;\n bottom: 0;\n border-right: 1px solid;\n border-right-color: $fallback--border;\n border-right-color: var(--border, $fallback--border);\n }\n\n &::before {\n flex: 0 0 6px;\n content: \"\";\n border-right: 1px solid;\n border-right-color: $fallback--border;\n border-right-color: var(--border, $fallback--border);\n }\n\n &:last-child .tab {\n margin-bottom: 0;\n }\n }\n\n .tab {\n flex: 1;\n box-sizing: content-box;\n min-width: 10em;\n min-width: 1px;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n padding-left: 1em;\n padding-right: calc(1em + 200px);\n margin-right: -200px;\n margin-left: 1em;\n\n @media all and (max-width: 800px) {\n padding-left: 0.25em;\n padding-right: calc(0.25em + 200px);\n margin-right: calc(0.25em - 200px);\n margin-left: 0.25em;\n\n .text {\n display: none;\n }\n }\n }\n }\n }\n\n .contents {\n flex: 1 0 auto;\n min-height: 0;\n\n .hidden {\n display: none;\n }\n\n .full-height:not(.hidden) {\n height: 100%;\n display: flex;\n flex-direction: column;\n\n > *:not(.mobile-label) {\n flex: 1;\n }\n }\n\n &.scrollable-tabs {\n overflow-y: auto;\n }\n }\n\n .tab {\n position: relative;\n white-space: nowrap;\n padding: 6px 1em;\n\n &:not(.active) {\n z-index: 4;\n\n &:hover {\n z-index: 6;\n }\n }\n\n &.active {\n background: transparent;\n z-index: 5;\n color: $fallback--text;\n color: var(--tabActiveText, $fallback--text);\n }\n\n img {\n max-height: 26px;\n vertical-align: top;\n margin-top: -5px;\n }\n }\n\n .tabs {\n display: flex;\n position: relative;\n box-sizing: border-box;\n\n &::after,\n &::before {\n display: block;\n flex: 1 1 auto;\n }\n }\n\n .tab-wrapper {\n position: relative;\n display: flex;\n flex: 0 0 auto;\n\n &:not(.active) {\n &::after {\n content: \"\";\n position: absolute;\n z-index: 7;\n }\n }\n }\n\n .mobile-label {\n padding-left: 0.3em;\n padding-bottom: 0.25em;\n margin-top: 0.5em;\n margin-left: 0.2em;\n margin-bottom: 0.25em;\n border-bottom: 1px solid var(--border, $fallback--border);\n\n @media all and (min-width: 800px) {\n display: none;\n }\n }\n}\n/* stylelint-enable no-descending-specificity */\n","\n@import \"../../variables\";\n\n.chat-title {\n display: flex;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n --emoji-size: 14px;\n\n .username {\n max-width: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: inline;\n word-wrap: break-word;\n overflow: hidden;\n }\n\n .avatar-container {\n align-self: center;\n line-height: 1;\n }\n\n .titlebar-avatar {\n margin-right: 0.5em;\n height: 1.5em;\n width: 1.5em;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n\n &.animated::before {\n display: none;\n }\n }\n}\n",".chat-list-item {\n display: flex;\n flex-direction: row;\n padding: 0.75em;\n height: 5em;\n overflow: hidden;\n box-sizing: border-box;\n cursor: pointer;\n\n :focus {\n outline: none;\n }\n\n &:hover {\n background-color: var(--selectedPost, $fallback--lightBg);\n box-shadow: 0 0 3px 1px rgb(0 0 0 / 10%);\n }\n\n .chat-list-item-left {\n margin-right: 1em;\n }\n\n .chat-list-item-center {\n width: 100%;\n box-sizing: border-box;\n overflow: hidden;\n word-wrap: break-word;\n }\n\n .heading {\n width: 100%;\n display: inline-flex;\n justify-content: space-between;\n line-height: 1em;\n }\n\n .heading-right {\n white-space: nowrap;\n }\n\n .name-and-account-name {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n flex-shrink: 1;\n line-height: var(--post-line-height);\n }\n\n .chat-preview {\n display: inline-flex;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n margin: 0.35em 0;\n color: $fallback--text;\n color: var(--faint, $fallback--text);\n width: 100%;\n }\n\n a {\n color: var(--faintLink, $fallback--link);\n text-decoration: none;\n pointer-events: none;\n }\n\n &:hover .animated.avatar {\n canvas {\n display: none;\n }\n\n img {\n visibility: visible;\n }\n }\n\n .Avatar {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .chat-preview-body {\n --emoji-size: 1.4em;\n\n padding-right: 1em;\n }\n\n .time-wrapper {\n line-height: var(--post-line-height);\n }\n}\n","\n.basic-user-card {\n display: flex;\n flex: 1 0;\n margin: 0;\n padding: 0.6em 1em;\n\n --emoji-size: 14px;\n\n &-collapsed-content {\n margin-left: 0.7em;\n text-align: left;\n flex: 1;\n min-width: 0;\n }\n\n &-user-name {\n img {\n object-fit: contain;\n height: 16px;\n width: 16px;\n vertical-align: middle;\n }\n }\n\n &-user-name-value,\n &-screen-name {\n display: inline-block;\n max-width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n &-expanded-content {\n flex: 1;\n margin-left: 0.7em;\n min-width: 0;\n }\n}\n",".chat-new {\n .input-wrap {\n display: flex;\n margin: 0.7em 0.5em;\n\n input {\n width: 100%;\n }\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n\n .member-list {\n padding-bottom: 0.7rem;\n }\n\n .basic-user-card:hover {\n cursor: pointer;\n background-color: var(--selectedPost, $fallback--lightBg);\n }\n\n .go-back-button {\n text-align: center;\n line-height: 1;\n height: 100%;\n align-self: start;\n width: var(--__panel-heading-height-inner);\n }\n}\n","\n@import \"../../variables\";\n\n.chat-list {\n min-height: 25em;\n margin-bottom: 0;\n}\n\n.emtpy-chat-list-alert {\n padding: 3em;\n font-size: 1.2em;\n display: flex;\n justify-content: center;\n color: $fallback--text;\n color: var(--faint, $fallback--text);\n}\n\n","@import \"../../variables\";\n\n.chat-message-wrapper {\n &.hovered-message-chain {\n .animated.Avatar {\n canvas {\n display: none;\n }\n\n img {\n visibility: visible;\n }\n }\n }\n\n .chat-message-menu {\n transition: opacity 0.1s;\n opacity: 0;\n position: absolute;\n top: -0.8em;\n\n button {\n padding-top: 0.2em;\n padding-bottom: 0.2em;\n }\n }\n\n .menu-icon {\n cursor: pointer;\n\n &:hover,\n .extra-button-popover.open & {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .popover {\n width: 12em;\n }\n\n .chat-message {\n display: flex;\n padding-bottom: 0.5em;\n\n .status-body:hover {\n --_still-image-img-visibility: visible;\n --_still-image-canvas-visibility: hidden;\n --_still-image-label-visibility: hidden;\n }\n }\n\n .avatar-wrapper {\n margin-right: 0.72em;\n width: 32px;\n }\n\n .link-preview,\n .attachments {\n margin-bottom: 1em;\n }\n\n .status {\n border-radius: $fallback--chatMessageRadius;\n border-radius: var(--chatMessageRadius, $fallback--chatMessageRadius);\n display: flex;\n padding: 0.75em;\n }\n\n .created-at {\n position: relative;\n float: right;\n font-size: 0.8em;\n margin: -1em 0 -0.5em;\n font-style: italic;\n opacity: 0.8;\n }\n\n .without-attachment {\n .message-content {\n // TODO figure out how to do it properly\n .RichContent::after {\n margin-right: 5.4em;\n content: \" \";\n display: inline-block;\n }\n }\n }\n\n .pending {\n .status-content.media-body,\n .created-at {\n color: var(--faint);\n }\n }\n\n .error {\n .status-content.media-body,\n .created-at {\n color: $fallback--cRed;\n color: var(--badgeNotification, $fallback--cRed);\n }\n }\n\n .chat-message-inner {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n max-width: 80%;\n min-width: 10em;\n width: 100%;\n }\n\n .outgoing {\n display: flex;\n flex-flow: row wrap;\n align-content: end;\n justify-content: flex-end;\n\n a {\n color: var(--chatMessageOutgoingLink, $fallback--link);\n }\n\n .status {\n color: var(--chatMessageOutgoingText, $fallback--text);\n background-color: var(--chatMessageOutgoingBg, $fallback--lightBg);\n border: 1px solid var(--chatMessageOutgoingBorder, --lightBg);\n }\n\n .chat-message-inner {\n align-items: flex-end;\n }\n\n .chat-message-menu {\n right: 0.4rem;\n }\n }\n\n .incoming {\n a {\n color: var(--chatMessageIncomingLink, $fallback--link);\n }\n\n .status {\n color: var(--chatMessageIncomingText, $fallback--text);\n background-color: var(--chatMessageIncomingBg, $fallback--bg);\n border: 1px solid var(--chatMessageIncomingBorder, --border);\n }\n\n .created-at {\n a {\n color: var(--chatMessageIncomingText, $fallback--text);\n }\n }\n\n .chat-message-menu {\n left: 0.4rem;\n }\n }\n\n .chat-message-inner.with-media {\n width: 100%;\n\n .status {\n width: 100%;\n }\n }\n\n .visible {\n opacity: 1;\n }\n}\n\n.chat-message-date-separator {\n text-align: center;\n margin: 1.4em 0;\n font-size: 0.9em;\n user-select: none;\n color: $fallback--text;\n color: var(--faintedText, $fallback--text);\n}\n",".chat-view {\n display: flex;\n height: 100%;\n\n .chat-view-inner {\n height: auto;\n width: 100%;\n overflow: visible;\n display: flex;\n }\n\n .chat-view-body {\n box-sizing: border-box;\n background-color: var(--chatBg, $fallback--bg);\n display: flex;\n flex-direction: column;\n width: 100%;\n overflow: visible;\n min-height: calc(100vh - var(--navbar-height));\n margin: 0;\n border-radius: 10px 10px 0 0;\n border-radius: var(--panelRadius, 10px) var(--panelRadius, 10px) 0 0;\n\n &::after {\n border-radius: 0;\n }\n }\n\n .message-list {\n padding: 0 0.8em;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: end;\n }\n\n .footer {\n position: sticky;\n bottom: 0;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n z-index: 1;\n }\n\n .chat-view-heading {\n grid-template-columns: auto minmax(50%, 1fr);\n }\n\n .go-back-button {\n text-align: center;\n line-height: 1;\n height: 100%;\n align-self: start;\n width: var(--__panel-heading-height-inner);\n }\n\n .jump-to-bottom-button {\n width: 2.5em;\n height: 2.5em;\n border-radius: 100%;\n position: absolute;\n right: 1.3em;\n top: -3.2em;\n background-color: $fallback--fg;\n background-color: var(--btn, $fallback--fg);\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 1px 1px rgb(0 0 0 / 30%), 0 2px 4px rgb(0 0 0 / 30%);\n z-index: 10;\n transition: 0.35s all;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n opacity: 0;\n visibility: hidden;\n cursor: pointer;\n\n &.visible {\n opacity: 1;\n visibility: visible;\n }\n\n i {\n font-size: 1em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n\n .unread-message-count {\n font-size: 0.8em;\n left: 50%;\n margin-top: -1rem;\n padding: 0.1em;\n border-radius: 50px;\n position: absolute;\n }\n\n .chat-loading-error {\n width: 100%;\n display: flex;\n align-items: flex-end;\n height: 100%;\n\n .error {\n width: 100%;\n }\n }\n }\n}\n","\n.follow-card {\n &-content-container {\n flex-shrink: 0;\n display: flex;\n flex-flow: row wrap;\n justify-content: space-between;\n line-height: 1.5em;\n }\n\n &-button {\n margin-top: 0.5em;\n padding: 0 1.5em;\n margin-left: 1em;\n }\n\n &-follow-button {\n margin-top: 0.5em;\n margin-left: auto;\n width: 10em;\n }\n}\n","@import \"../../variables\";\n\n.with-load-more {\n &-footer {\n padding: 10px;\n text-align: center;\n border-top: 1px solid;\n border-top-color: $fallback--border;\n border-top-color: var(--border, $fallback--border);\n\n .error {\n font-size: 1rem;\n }\n\n a {\n cursor: pointer;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.user-profile {\n flex: 2;\n flex-basis: 500px;\n\n // No sticky header on user profile\n --currentPanelStack: 1;\n\n .user-birthday {\n margin: 0 0.75em 0.5em;\n }\n\n .user-profile-fields {\n margin: 0 0.5em;\n\n img {\n object-fit: contain;\n vertical-align: middle;\n max-width: 100%;\n max-height: 400px;\n\n &.emoji {\n width: 18px;\n height: 18px;\n }\n }\n\n .user-profile-field {\n display: flex;\n margin: 0.25em;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .user-profile-field-name {\n flex: 0 1 30%;\n font-weight: 500;\n text-align: right;\n color: var(--lightText);\n min-width: 120px;\n border-right: 1px solid var(--border, $fallback--border);\n }\n\n .user-profile-field-value {\n flex: 1 1 70%;\n color: var(--text);\n margin: 0 0 0 0.25em;\n }\n\n .user-profile-field-name,\n .user-profile-field-value {\n line-height: 1.3;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n padding: 0.5em 1.5em;\n box-sizing: border-box;\n }\n }\n }\n\n .userlist-placeholder {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 2em;\n }\n}\n\n.user-profile-placeholder {\n .panel-body {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 7em;\n }\n}\n","\n@import \"../../variables\";\n\n.search-result-heading {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n padding: 0.75rem;\n text-align: center;\n}\n\n@media all and (max-width: 800px) {\n .search-nav-heading {\n .tab-switcher .tabs .tab-wrapper {\n display: block;\n justify-content: center;\n flex: 1 1 auto;\n text-align: center;\n }\n }\n}\n\n.search-result {\n box-sizing: border-box;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.search-result-footer {\n border-width: 1px 0 0;\n border-style: solid;\n border-color: var(--border, $fallback--border);\n padding: 10px;\n background-color: $fallback--fg;\n background-color: var(--panel, $fallback--fg);\n}\n\n.search-input-container {\n padding: 0.8rem;\n display: flex;\n justify-content: center;\n\n .search-input {\n width: 100%;\n line-height: 1.125rem;\n font-size: 1rem;\n padding: 0.5rem;\n box-sizing: border-box;\n }\n\n .search-button {\n margin-left: 0.5em;\n }\n}\n\n.loading-icon {\n padding: 1em;\n}\n\n.trend {\n display: flex;\n align-items: center;\n\n .hashtag {\n flex: 1 1 auto;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .count {\n flex: 0 0 auto;\n width: 2rem;\n font-size: 1.5rem;\n line-height: 2.25rem;\n font-weight: 500;\n text-align: center;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n.more-statuses-button {\n height: 3.5em;\n line-height: 3.5em;\n}\n\n","\n@import \"../../variables\";\n\n.interface-language-switcher {\n .language-select {\n margin-right: 1em;\n }\n}\n","\n@import \"../../variables\";\n$validations-cRed: #f04124;\n\n.registration-form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex-direction: row;\n\n > * {\n min-width: 0;\n }\n }\n\n .terms-of-service {\n flex: 0 1 50%;\n margin: 0.8em;\n }\n\n .text-fields {\n margin-top: 0.6em;\n flex: 1 0;\n display: flex;\n flex-direction: column;\n }\n\n textarea {\n min-height: 100px;\n resize: vertical;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0;\n line-height: 2;\n margin-bottom: 1em;\n }\n\n .form-group--error {\n animation-name: shakeError;\n animation-duration: 0.6s;\n animation-timing-function: ease-in-out;\n }\n\n .form-group--error .form--label {\n color: $validations-cRed;\n color: var(--cRed, $validations-cRed);\n }\n\n .form-error {\n margin-top: -0.7em;\n text-align: left;\n\n span {\n font-size: 0.85em;\n }\n }\n\n .form-error ul {\n list-style: none;\n padding: 0 0 0 5px;\n margin-top: 0;\n\n li::before {\n content: \"• \";\n }\n }\n\n form textarea {\n line-height: 16px;\n resize: vertical;\n }\n\n .captcha {\n max-width: 350px;\n margin-bottom: 0.4em;\n }\n\n .btn {\n margin-top: 0.6em;\n height: 2em;\n }\n\n .error {\n text-align: center;\n }\n}\n\n@media all and (max-width: 800px) {\n .registration-form .container {\n flex-direction: column-reverse;\n }\n}\n","\n@import \"../../variables\";\n\n.password-reset-form {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex: 1 0;\n flex-direction: column;\n margin-top: 0.6em;\n max-width: 18rem;\n\n > * {\n min-width: 0;\n }\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n margin-bottom: 1em;\n padding: 0.3em 0;\n line-height: 1.85em;\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n\n .alert {\n padding: 0.5em;\n margin: 0.3em 0 1em;\n }\n\n .password-reset-required {\n background-color: var(--alertError, $fallback--alertError);\n padding: 10px 0;\n }\n\n .notice-dismissible {\n padding-right: 2rem;\n }\n\n .dismiss {\n cursor: pointer;\n }\n}\n\n","\n.follow-request-card-content-container {\n display: flex;\n flex-flow: row wrap;\n\n button {\n margin-top: 0.5em;\n margin-right: 0.5em;\n flex: 1 1;\n max-width: 12em;\n min-width: 8em;\n\n &:last-child {\n margin-right: 0;\n }\n }\n}\n","\n.tos-content {\n margin: 1em;\n}\n","\n.staff-group {\n padding-left: 1em;\n padding-top: 1em;\n\n .basic-user-card {\n padding-left: 0;\n }\n}\n\n",".mrf-section {\n margin: 1em;\n\n table {\n width: 100%;\n text-align: left;\n padding-left: 10px;\n padding-bottom: 20px;\n\n th,\n td {\n width: 180px;\n max-width: 360px;\n overflow: hidden;\n vertical-align: text-top;\n }\n\n th + th,\n td + td {\n width: auto;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.list-card {\n display: flex;\n}\n\n.list-name {\n flex-grow: 1;\n}\n\n.list-name,\n.button-list-edit {\n margin: 0;\n padding: 1em;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n }\n}\n","\n.Lists {\n .new-list-button {\n padding: 0 0.5em;\n }\n}\n","\n@import \"../../variables\";\n\n.ListsUserSearch {\n .input-wrap {\n display: flex;\n margin: 0.7em 0.5em;\n\n input {\n width: 100%;\n }\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n}\n\n","\n@import \"src/variables\";\n\n.panel-loading {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n\n .loading-text svg {\n line-height: 0;\n vertical-align: middle;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n","\n@import \"../../variables\";\n\n.ListEdit {\n --panel-body-padding: 0.5em;\n\n height: calc(100vh - var(--navbar-height));\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n .list-edit-heading {\n grid-template-columns: auto minmax(50%, 1fr);\n }\n\n .panel-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n overflow: hidden;\n }\n\n .list-member-management {\n flex: 1 0 auto;\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n\n .users-list {\n padding-bottom: 0.7rem;\n overflow-y: auto;\n }\n\n & .search-list,\n & .members-list {\n overflow: hidden;\n flex-direction: column;\n min-height: 0;\n }\n\n .go-back-button {\n text-align: center;\n line-height: 1;\n height: 100%;\n align-self: start;\n width: var(--__panel-heading-height-inner);\n }\n\n .btn {\n margin: 0 0.5em;\n }\n\n .panel-footer {\n grid-template-columns: minmax(10%, 1fr);\n\n .footer-button {\n min-width: 9em;\n }\n }\n}\n","\n.announcement-editor {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n\n .announcement-metadata {\n margin-top: 0.5em;\n }\n\n .post-textarea {\n resize: vertical;\n height: 10em;\n overflow: none;\n box-sizing: content-box;\n }\n}\n","\n@import \"../../variables\";\n\n.announcement {\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n padding: var(--status-margin, $status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .footer {\n display: flex;\n flex-direction: column;\n\n .times {\n display: flex;\n flex-direction: column;\n }\n }\n\n .footer .actions {\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n\n .btn {\n flex: 1;\n margin: 1em;\n max-width: 10em;\n }\n }\n}\n","\n@import \"../../variables\";\n\n.announcements-page {\n .post-form {\n padding: var(--status-margin, $status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .post-button {\n min-width: 10em;\n }\n }\n}\n"],"names":[],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/159.3a9274574f1e33801c4a.js b/priv/static/static/js/159.3a9274574f1e33801c4a.js @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[159],{30159:(t,e,n)=>{n.r(e),n.d(e,{default:()=>p});var i=n(66252),a=n(49963),c={class:"sticker-picker"},r=["image-tooltip","image"],o=["onClick"],s=["src"],l=n(7257);const u={components:{TabSwitcher:n(79354).Z},data:function(){return{meta:{stickers:[]},path:""}},computed:{pack:function(){return this.$store.state.instance.stickers||[]}},methods:{clear:function(){this.meta={stickers:[]}},pick:function(t,e){var n=this,i=this.$store;fetch(t).then((function(t){t.blob().then((function(t){var a=new File([t],e,{mimetype:"image/png"}),c=new FormData;c.append("file",a),l.Z.uploadMedia({store:i,formData:c}).then((function(t){n.$emit("uploaded",t),n.clear()}),(function(t){console.warn("Can't attach sticker"),console.warn(t),n.$emit("upload-failed","default")}))}))}))}}},p=(0,n(83744).Z)(u,[["render",function(t,e,n,l,u,p){var f=(0,i.up)("tab-switcher");return(0,i.wg)(),(0,i.iD)("div",c,[(0,i.Wm)(f,{class:"tab-switcher","render-only-focused":!0,"scrollable-tabs":""},{default:(0,i.w5)((function(){return[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t.pack,(function(e){return(0,i.wg)(),(0,i.iD)("div",{key:e.path,"image-tooltip":e.meta.title,image:e.path+e.meta.tabIcon,class:"sticker-picker-content"},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.meta.stickers,(function(n){return(0,i.wg)(),(0,i.iD)("div",{key:n,class:"sticker",onClick:(0,a.iM)((function(i){return t.pick(e.path+n,e.meta.title)}),["stop","prevent"])},[(0,i._)("img",{src:e.path+n},null,8,s)],8,o)})),128))],8,r)})),128))]})),_:1})])}]])}}]); -//# sourceMappingURL=159.3a9274574f1e33801c4a.js.map -\ No newline at end of file diff --git a/priv/static/static/js/159.3a9274574f1e33801c4a.js.map b/priv/static/static/js/159.3a9274574f1e33801c4a.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/159.3a9274574f1e33801c4a.js","mappings":"mKAEIA,MAAM,kB,8DCiDV,QA/CsB,CACpBC,WAAY,CACVC,Y,SAAAA,GAEFC,KAAI,WACF,MAAO,CACLC,KAAM,CACJC,SAAU,IAEZC,KAAM,GAEV,EACAC,SAAU,CACRC,KAAI,WACF,OAAOC,KAAKC,OAAOC,MAAMC,SAASP,UAAY,EAChD,GAEFQ,QAAS,CACPC,MAAK,WACHL,KAAKL,KAAO,CACVC,SAAU,GAEd,EACAU,KAAI,SAAEC,EAASC,GAAM,WACbC,EAAQT,KAAKC,OAEnBS,MAAMH,GACHI,MAAK,SAACC,GACLA,EAAIC,OAAOF,MAAK,SAACE,GACf,IAAMC,EAAO,IAAIC,KAAK,CAACF,GAAOL,EAAM,CAAEQ,SAAU,cAC1CC,EAAW,IAAIC,SACrBD,EAASE,OAAO,OAAQL,GACxBM,EAAAA,EAAAA,YAAgC,CAAEX,MAAAA,EAAOQ,SAAAA,IACtCN,MAAK,SAACU,GACL,EAAKC,MAAM,WAAYD,GACvB,EAAKhB,OACP,IAAG,SAACkB,GACFC,QAAQC,KAAK,wBACbD,QAAQC,KAAKF,GACb,EAAKD,MAAM,gBAAiB,UAC9B,GACJ,GACF,GACJ,ICtCJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,uEFNzDI,EAAAA,EAAAA,IA2BM,MA3BNC,EA2BM,EAxBJC,EAAAA,EAAAA,IAuBeC,EAAAA,CAtBbtC,MAAM,eACL,uBAAqB,EACtB,sB,mBAGE,iBAA2B,gBAD7BmC,EAAAA,EAAAA,IAiBMI,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IAhBkBC,EAAAA,MAAI,SAAnBC,G,kBADTN,EAAAA,EAAAA,IAiBM,OAfHO,IAAKD,EAAYnC,KACjB,gBAAemC,EAAYrC,KAAKuC,MAChCC,MAAOH,EAAYnC,KAAOmC,EAAYrC,KAAKyC,QAC5C7C,MAAM,0B,gBAENmC,EAAAA,EAAAA,IASMI,EAAAA,GAAAA,MAAAA,EAAAA,EAAAA,IARcE,EAAYrC,KAAKC,UAAQ,SAApCW,G,kBADTmB,EAAAA,EAAAA,IASM,OAPHO,IAAK1B,EACNhB,MAAM,UACL8C,SAAK,4BAAeN,EAAAA,KAAKC,EAAYnC,KAAOU,EAASyB,EAAYrC,KAAKuC,MAAK,wB,EAE5EI,EAAAA,EAAAA,GAEC,OADEC,IAAKP,EAAYnC,KAAOU,G","sources":["webpack://pleroma_fe/./src/components/sticker_picker/sticker_picker.vue","webpack://pleroma_fe/./src/components/sticker_picker/sticker_picker.js","webpack://pleroma_fe/./src/components/sticker_picker/sticker_picker.vue?a437"],"sourcesContent":["<template>\n <div\n class=\"sticker-picker\"\n >\n <tab-switcher\n class=\"tab-switcher\"\n :render-only-focused=\"true\"\n scrollable-tabs\n >\n <div\n v-for=\"stickerpack in pack\"\n :key=\"stickerpack.path\"\n :image-tooltip=\"stickerpack.meta.title\"\n :image=\"stickerpack.path + stickerpack.meta.tabIcon\"\n class=\"sticker-picker-content\"\n >\n <div\n v-for=\"sticker in stickerpack.meta.stickers\"\n :key=\"sticker\"\n class=\"sticker\"\n @click.stop.prevent=\"pick(stickerpack.path + sticker, stickerpack.meta.title)\"\n >\n <img\n :src=\"stickerpack.path + sticker\"\n >\n </div>\n </div>\n </tab-switcher>\n </div>\n</template>\n\n<script src=\"./sticker_picker.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.sticker-picker {\n width: 100%;\n\n .contents {\n min-height: 250px;\n\n .sticker-picker-content {\n display: flex;\n flex-wrap: wrap;\n padding: 0 4px;\n\n .sticker {\n display: flex;\n flex: 1 1 auto;\n margin: 4px;\n width: 56px;\n height: 56px;\n\n img {\n height: 100%;\n\n &:hover {\n filter: drop-shadow(0 0 5px var(--accent, $fallback--link));\n }\n }\n }\n }\n }\n}\n\n</style>\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport TabSwitcher from '../tab_switcher/tab_switcher.jsx'\n\nconst StickerPicker = {\n components: {\n TabSwitcher\n },\n data () {\n return {\n meta: {\n stickers: []\n },\n path: ''\n }\n },\n computed: {\n pack () {\n return this.$store.state.instance.stickers || []\n }\n },\n methods: {\n clear () {\n this.meta = {\n stickers: []\n }\n },\n pick (sticker, name) {\n const store = this.$store\n // TODO remove this workaround by finding a way to bypass reuploads\n fetch(sticker)\n .then((res) => {\n res.blob().then((blob) => {\n const file = new File([blob], name, { mimetype: 'image/png' })\n const formData = new FormData()\n formData.append('file', file)\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n this.$emit('uploaded', fileData)\n this.clear()\n }, (error) => {\n console.warn(\"Can't attach sticker\")\n console.warn(error)\n this.$emit('upload-failed', 'default')\n })\n })\n })\n }\n }\n}\n\nexport default StickerPicker\n","import { render } from \"./sticker_picker.vue?vue&type=template&id=9bba01dc\"\nimport script from \"./sticker_picker.js?vue&type=script&lang=js\"\nexport * from \"./sticker_picker.js?vue&type=script&lang=js\"\n\nimport \"./sticker_picker.vue?vue&type=style&index=0&id=9bba01dc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","components","TabSwitcher","data","meta","stickers","path","computed","pack","this","$store","state","instance","methods","clear","pick","sticker","name","store","fetch","then","res","blob","file","File","mimetype","formData","FormData","append","statusPosterService","fileData","$emit","error","console","warn","_createElementBlock","_hoisted_1","_createVNode","_component_tab_switcher","_Fragment","_ctx","stickerpack","key","title","image","tabIcon","onClick","_createElementVNode","src"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/159.903e90c9de8ef6c67077.js b/priv/static/static/js/159.903e90c9de8ef6c67077.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[159],{30159:(t,e,n)=>{n.r(e),n.d(e,{default:()=>p});var i=n(66252),a=n(49963),c={class:"sticker-picker"},r=["image-tooltip","image"],o=["onClick"],s=["src"],l=n(7257);const u={components:{TabSwitcher:n(79354).Z},data:function(){return{meta:{stickers:[]},path:""}},computed:{pack:function(){return this.$store.state.instance.stickers||[]}},methods:{clear:function(){this.meta={stickers:[]}},pick:function(t,e){var n=this,i=this.$store;fetch(t).then((function(t){t.blob().then((function(t){var a=new File([t],e,{mimetype:"image/png"}),c=new FormData;c.append("file",a),l.Z.uploadMedia({store:i,formData:c}).then((function(t){n.$emit("uploaded",t),n.clear()}),(function(t){console.warn("Can't attach sticker"),console.warn(t),n.$emit("upload-failed","default")}))}))}))}}},p=(0,n(83744).Z)(u,[["render",function(t,e,n,l,u,p){var f=(0,i.up)("tab-switcher");return(0,i.wg)(),(0,i.iD)("div",c,[(0,i.Wm)(f,{class:"tab-switcher","render-only-focused":!0,"scrollable-tabs":""},{default:(0,i.w5)((function(){return[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(t.pack,(function(e){return(0,i.wg)(),(0,i.iD)("div",{key:e.path,"image-tooltip":e.meta.title,image:e.path+e.meta.tabIcon,class:"sticker-picker-content"},[((0,i.wg)(!0),(0,i.iD)(i.HY,null,(0,i.Ko)(e.meta.stickers,(function(n){return(0,i.wg)(),(0,i.iD)("div",{key:n,class:"sticker",onClick:(0,a.iM)((function(i){return t.pick(e.path+n,e.meta.title)}),["stop","prevent"])},[(0,i._)("img",{src:e.path+n},null,8,s)],8,o)})),128))],8,r)})),128))]})),_:1})])}]])}}]); +//# sourceMappingURL=159.903e90c9de8ef6c67077.js.map +\ No newline at end of file diff --git a/priv/static/static/js/159.903e90c9de8ef6c67077.js.map b/priv/static/static/js/159.903e90c9de8ef6c67077.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/159.903e90c9de8ef6c67077.js","mappings":"mKAEIA,MAAM,kB,8DCiDV,QA/CsB,CACpBC,WAAY,CACVC,Y,SAAAA,GAEFC,KAAI,WACF,MAAO,CACLC,KAAM,CACJC,SAAU,IAEZC,KAAM,GAEV,EACAC,SAAU,CACRC,KAAI,WACF,OAAOC,KAAKC,OAAOC,MAAMC,SAASP,UAAY,EAChD,GAEFQ,QAAS,CACPC,MAAK,WACHL,KAAKL,KAAO,CACVC,SAAU,GAEd,EACAU,KAAI,SAAEC,EAASC,GAAM,IAAAC,EAAA,KACbC,EAAQV,KAAKC,OAEnBU,MAAMJ,GACHK,MAAK,SAACC,GACLA,EAAIC,OAAOF,MAAK,SAACE,GACf,IAAMC,EAAO,IAAIC,KAAK,CAACF,GAAON,EAAM,CAAES,SAAU,cAC1CC,EAAW,IAAIC,SACrBD,EAASE,OAAO,OAAQL,GACxBM,EAAAA,EAAAA,YAAgC,CAAEX,MAAAA,EAAOQ,SAAAA,IACtCN,MAAK,SAACU,GACLb,EAAKc,MAAM,WAAYD,GACvBb,EAAKJ,OACP,IAAG,SAACmB,GACFC,QAAQC,KAAK,wBACbD,QAAQC,KAAKF,GACbf,EAAKc,MAAM,gBAAiB,UAC9B,GACJ,GACF,GACJ,ICtCJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,uEFNzDI,EAAAA,EAAAA,IA2BM,MA3BNC,EA2BM,EAxBJC,EAAAA,EAAAA,IAuBeC,EAAA,CAtBbvC,MAAM,eACL,uBAAqB,EACtB,sB,mBAGE,iBAA2B,gBAD7BoC,EAAAA,EAAAA,IAiBMI,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAhBkBC,EAAAlC,MAAI,SAAnBmC,G,kBADTP,EAAAA,EAAAA,IAiBM,OAfHQ,IAAKD,EAAYrC,KACjB,gBAAeqC,EAAYvC,KAAKyC,MAChCC,MAAOH,EAAYrC,KAAOqC,EAAYvC,KAAK2C,QAC5C/C,MAAM,0B,gBAENoC,EAAAA,EAAAA,IASMI,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IARcE,EAAYvC,KAAKC,UAAQ,SAApCW,G,kBADToB,EAAAA,EAAAA,IASM,OAPHQ,IAAK5B,EACNhB,MAAM,UACLgD,SAAKC,EAAAA,EAAAA,KAAA,SAAAC,GAAA,OAAeR,EAAA3B,KAAK4B,EAAYrC,KAAOU,EAAS2B,EAAYvC,KAAKyC,MAAK,wB,EAE5EM,EAAAA,EAAAA,GAEC,OADEC,IAAKT,EAAYrC,KAAOU,G","sources":["webpack://pleroma_fe/./src/components/sticker_picker/sticker_picker.vue","webpack://pleroma_fe/./src/components/sticker_picker/sticker_picker.js","webpack://pleroma_fe/./src/components/sticker_picker/sticker_picker.vue?a437"],"sourcesContent":["<template>\n <div\n class=\"sticker-picker\"\n >\n <tab-switcher\n class=\"tab-switcher\"\n :render-only-focused=\"true\"\n scrollable-tabs\n >\n <div\n v-for=\"stickerpack in pack\"\n :key=\"stickerpack.path\"\n :image-tooltip=\"stickerpack.meta.title\"\n :image=\"stickerpack.path + stickerpack.meta.tabIcon\"\n class=\"sticker-picker-content\"\n >\n <div\n v-for=\"sticker in stickerpack.meta.stickers\"\n :key=\"sticker\"\n class=\"sticker\"\n @click.stop.prevent=\"pick(stickerpack.path + sticker, stickerpack.meta.title)\"\n >\n <img\n :src=\"stickerpack.path + sticker\"\n >\n </div>\n </div>\n </tab-switcher>\n </div>\n</template>\n\n<script src=\"./sticker_picker.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.sticker-picker {\n width: 100%;\n\n .contents {\n min-height: 250px;\n\n .sticker-picker-content {\n display: flex;\n flex-wrap: wrap;\n padding: 0 4px;\n\n .sticker {\n display: flex;\n flex: 1 1 auto;\n margin: 4px;\n width: 56px;\n height: 56px;\n\n img {\n height: 100%;\n\n &:hover {\n filter: drop-shadow(0 0 5px var(--accent, $fallback--link));\n }\n }\n }\n }\n }\n}\n\n</style>\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport TabSwitcher from '../tab_switcher/tab_switcher.jsx'\n\nconst StickerPicker = {\n components: {\n TabSwitcher\n },\n data () {\n return {\n meta: {\n stickers: []\n },\n path: ''\n }\n },\n computed: {\n pack () {\n return this.$store.state.instance.stickers || []\n }\n },\n methods: {\n clear () {\n this.meta = {\n stickers: []\n }\n },\n pick (sticker, name) {\n const store = this.$store\n // TODO remove this workaround by finding a way to bypass reuploads\n fetch(sticker)\n .then((res) => {\n res.blob().then((blob) => {\n const file = new File([blob], name, { mimetype: 'image/png' })\n const formData = new FormData()\n formData.append('file', file)\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n this.$emit('uploaded', fileData)\n this.clear()\n }, (error) => {\n console.warn(\"Can't attach sticker\")\n console.warn(error)\n this.$emit('upload-failed', 'default')\n })\n })\n })\n }\n }\n}\n\nexport default StickerPicker\n","import { render } from \"./sticker_picker.vue?vue&type=template&id=9bba01dc\"\nimport script from \"./sticker_picker.js?vue&type=script&lang=js\"\nexport * from \"./sticker_picker.js?vue&type=script&lang=js\"\n\nimport \"./sticker_picker.vue?vue&type=style&index=0&id=9bba01dc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","components","TabSwitcher","data","meta","stickers","path","computed","pack","this","$store","state","instance","methods","clear","pick","sticker","name","_this","store","fetch","then","res","blob","file","File","mimetype","formData","FormData","append","statusPosterService","fileData","$emit","error","console","warn","_createElementBlock","_hoisted_1","_createVNode","_component_tab_switcher","_Fragment","_renderList","_ctx","stickerpack","key","title","image","tabIcon","onClick","_withModifiers","$event","_createElementVNode","src"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/2724.e4840c73281069ba54ab.js b/priv/static/static/js/2724.e4840c73281069ba54ab.js @@ -1,3 +0,0 @@ -/*! For license information please see 2724.e4840c73281069ba54ab.js.LICENSE.txt */ -(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[2724],{9382:(e,t,n)=>{"use strict";function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,s=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){s=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(s)throw o}}return a}}(e,t)||u(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||u(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{Qc:()=>vn,fL:()=>bn,qv:()=>gn,vI:()=>mn,vc:()=>dn});var h=function(){},p={},d={},m=null,v={mark:h,measure:h};try{"undefined"!=typeof window&&(p=window),"undefined"!=typeof document&&(d=document),"undefined"!=typeof MutationObserver&&(m=MutationObserver),"undefined"!=typeof performance&&(v=performance)}catch(e){}var g,b,y,_,w,x=(p.navigator||{}).userAgent,k=void 0===x?"":x,S=p,C=d,E=m,O=v,N=(S.document,!!C.documentElement&&!!C.head&&"function"==typeof C.addEventListener&&"function"==typeof C.createElement),j=~k.indexOf("MSIE")||~k.indexOf("Trident/"),L="svg-inline--fa",A="data-fa-i2svg",M="data-fa-pseudo-element",I="data-prefix",z="data-icon",T="fontawesome-i2svg",R=["HTML","HEAD","STYLE","SCRIPT"],$=function(){try{return!0}catch(e){return!1}}(),P="classic",F="sharp",H=[P,F];function D(e){return new Proxy(e,{get:function(e,t){return t in e?e[t]:e.classic}})}var V=D((s(g={},P,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit"}),s(g,F,{fa:"solid",fass:"solid","fa-solid":"solid"}),g)),U=D((s(b={},P,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),s(b,F,{solid:"fass"}),b)),W=D((s(y={},P,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),s(y,F,{fass:"fa-solid"}),y)),B=D((s(_={},P,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),s(_,F,{"fa-solid":"fass"}),_)),Y=/fa(s|r|l|t|d|b|k|ss)?[\-\ ]/,q="fa-layers-text",G=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i,Z=D((s(w={},P,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),s(w,F,{900:"fass"}),w)),X=[1,2,3,4,5,6,7,8,9,10],J=X.concat([11,12,13,14,15,16,17,18,19,20]),K=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],Q="duotone-group",ee="primary",te="secondary",ne=new Set;Object.keys(U.classic).map(ne.add.bind(ne)),Object.keys(U.sharp).map(ne.add.bind(ne));var re=[].concat(H,l(ne),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",Q,"swap-opacity",ee,te]).concat(X.map((function(e){return"".concat(e,"x")}))).concat(J.map((function(e){return"w-".concat(e)}))),oe=S.FontAwesomeConfig||{};C&&"function"==typeof C.querySelector&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach((function(e){var t=c(e,2),n=t[0],r=t[1],o=function(e){return""===e||"false"!==e&&("true"===e||e)}(function(e){var t=C.querySelector("script["+e+"]");if(t)return t.getAttribute(e)}(n));null!=o&&(oe[r]=o)}));var ae={styleDefault:"solid",familyDefault:"classic",cssPrefix:"fa",replacementClass:L,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};oe.familyPrefix&&(oe.cssPrefix=oe.familyPrefix);var ie=o(o({},ae),oe);ie.autoReplaceSvg||(ie.observeMutations=!1);var se={};Object.keys(ae).forEach((function(e){Object.defineProperty(se,e,{enumerable:!0,set:function(t){ie[e]=t,ce.forEach((function(e){return e(se)}))},get:function(){return ie[e]}})})),Object.defineProperty(se,"familyPrefix",{enumerable:!0,set:function(e){ie.cssPrefix=e,ce.forEach((function(e){return e(se)}))},get:function(){return ie.cssPrefix}}),S.FontAwesomeConfig=se;var ce=[],le=16,ue={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function fe(){for(var e=12,t="";e-- >0;)t+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return t}function he(e){for(var t=[],n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function pe(e){return e.classList?he(e.classList):(e.getAttribute("class")||"").split(" ").filter((function(e){return e}))}function de(e){return"".concat(e).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function me(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,": ").concat(e[n].trim(),";")}),"")}function ve(e){return e.size!==ue.size||e.x!==ue.x||e.y!==ue.y||e.rotate!==ue.rotate||e.flipX||e.flipY}function ge(){var e="fa",t=L,n=se.cssPrefix,r=se.replacementClass,o=':root, :host {\n --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";\n --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";\n --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";\n --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";\n --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";\n --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";\n --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";\n}\n\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\n overflow: visible;\n box-sizing: content-box;\n}\n\n.svg-inline--fa {\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285705em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n top: 0.25em;\n}\n.svg-inline--fa.fa-fw {\n width: var(--fa-fw-width, 1.25em);\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\n transform: scale(var(--fa-counter-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: 0.625em;\n line-height: 0.1em;\n vertical-align: 0.225em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n line-height: 0.0833333337em;\n vertical-align: 0.125em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n line-height: 0.0714285718em;\n vertical-align: 0.0535714295em;\n}\n\n.fa-lg {\n font-size: 1.25em;\n line-height: 0.05em;\n vertical-align: -0.075em;\n}\n\n.fa-xl {\n font-size: 1.5em;\n line-height: 0.0416666682em;\n vertical-align: -0.125em;\n}\n\n.fa-2xl {\n font-size: 2em;\n line-height: 0.03125em;\n vertical-align: -0.1875em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: var(--fa-li-margin, 2.5em);\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: calc(var(--fa-li-width, 2em) * -1);\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.08em);\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\n}\n\n.fa-pull-left {\n float: left;\n margin-right: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right {\n float: right;\n margin-left: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n -webkit-animation-name: fa-beat;\n animation-name: fa-beat;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n -webkit-animation-name: fa-bounce;\n animation-name: fa-bounce;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n -webkit-animation-name: fa-fade;\n animation-name: fa-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n -webkit-animation-name: fa-beat-fade;\n animation-name: fa-beat-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n -webkit-animation-name: fa-flip;\n animation-name: fa-flip;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n -webkit-animation-name: fa-shake;\n animation-name: fa-shake;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\n animation-duration: var(--fa-animation-duration, 2s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n.fa-bounce,\n.fa-fade,\n.fa-beat-fade,\n.fa-flip,\n.fa-pulse,\n.fa-shake,\n.fa-spin,\n.fa-spin-pulse {\n -webkit-animation-delay: -1ms;\n animation-delay: -1ms;\n -webkit-animation-duration: 1ms;\n animation-duration: 1ms;\n -webkit-animation-iteration-count: 1;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n@-webkit-keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@-webkit-keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@-webkit-keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@-webkit-keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@-webkit-keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@-webkit-keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\n transform: rotate(var(--fa-rotate-angle, none));\n}\n\n.fa-stack {\n display: inline-block;\n vertical-align: middle;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n z-index: var(--fa-stack-z-index, auto);\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n.sr-only,\n.fa-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.sr-only-focusable:not(:focus),\n.fa-sr-only-focusable:not(:focus) {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse,\n.fa-duotone.fa-inverse {\n color: var(--fa-inverse, #fff);\n}';if(n!==e||r!==t){var a=new RegExp("\\.".concat(e,"\\-"),"g"),i=new RegExp("\\--".concat(e,"\\-"),"g"),s=new RegExp("\\.".concat(t),"g");o=o.replace(a,".".concat(n,"-")).replace(i,"--".concat(n,"-")).replace(s,".".concat(r))}return o}var be=!1;function ye(){se.autoAddCss&&!be&&(function(e){if(e&&N){var t=C.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=e;for(var n=C.head.childNodes,r=null,o=n.length-1;o>-1;o--){var a=n[o],i=(a.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(i)>-1&&(r=a)}C.head.insertBefore(t,r)}}(ge()),be=!0)}var _e={mixout:function(){return{dom:{css:ge,insertCss:ye}}},hooks:function(){return{beforeDOMElementCreation:function(){ye()},beforeI2svg:function(){ye()}}}},we=S||{};we.___FONT_AWESOME___||(we.___FONT_AWESOME___={}),we.___FONT_AWESOME___.styles||(we.___FONT_AWESOME___.styles={}),we.___FONT_AWESOME___.hooks||(we.___FONT_AWESOME___.hooks={}),we.___FONT_AWESOME___.shims||(we.___FONT_AWESOME___.shims=[]);var xe=we.___FONT_AWESOME___,ke=[],Se=!1;function Ce(e){N&&(Se?setTimeout(e,0):ke.push(e))}function Ee(e){var t=e.tag,n=e.attributes,r=void 0===n?{}:n,o=e.children,a=void 0===o?[]:o;return"string"==typeof e?de(e):"<".concat(t," ").concat(function(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,'="').concat(de(e[n]),'" ')}),"").trim()}(r),">").concat(a.map(Ee).join(""),"</").concat(t,">")}function Oe(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}N&&((Se=(C.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(C.readyState))||C.addEventListener("DOMContentLoaded",(function e(){C.removeEventListener("DOMContentLoaded",e),Se=1,ke.map((function(e){return e()}))})));var Ne=function(e,t,n,r){var o,a,i,s=Object.keys(e),c=s.length,l=void 0!==r?function(e,t){return function(n,r,o,a){return e.call(t,n,r,o,a)}}(t,r):t;for(void 0===n?(o=1,i=e[s[0]]):(o=0,i=n);o<c;o++)i=l(i,e[a=s[o]],a,e);return i};function je(e){var t=function(e){for(var t=[],n=0,r=e.length;n<r;){var o=e.charCodeAt(n++);if(o>=55296&&o<=56319&&n<r){var a=e.charCodeAt(n++);56320==(64512&a)?t.push(((1023&o)<<10)+(1023&a)+65536):(t.push(o),n--)}else t.push(o)}return t}(e);return 1===t.length?t[0].toString(16):null}function Le(e){return Object.keys(e).reduce((function(t,n){var r=e[n];return r.icon?t[r.iconName]=r.icon:t[n]=r,t}),{})}function Ae(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.skipHooks,a=void 0!==r&&r,i=Le(t);"function"!=typeof xe.hooks.addPack||a?xe.styles[e]=o(o({},xe.styles[e]||{}),i):xe.hooks.addPack(e,Le(t)),"fas"===e&&Ae("fa",t)}var Me,Ie,ze,Te=xe.styles,Re=xe.shims,$e=(s(Me={},P,Object.values(W.classic)),s(Me,F,Object.values(W.sharp)),Me),Pe=null,Fe={},He={},De={},Ve={},Ue={},We=(s(Ie={},P,Object.keys(V.classic)),s(Ie,F,Object.keys(V.sharp)),Ie);function Be(e,t){var n,r=t.split("-"),o=r[0],a=r.slice(1).join("-");return o!==e||""===a||(n=a,~re.indexOf(n))?null:a}var Ye,qe=function(){var e=function(e){return Ne(Te,(function(t,n,r){return t[r]=Ne(n,e,{}),t}),{})};Fe=e((function(e,t,n){return t[3]&&(e[t[3]]=n),t[2]&&t[2].filter((function(e){return"number"==typeof e})).forEach((function(t){e[t.toString(16)]=n})),e})),He=e((function(e,t,n){return e[n]=n,t[2]&&t[2].filter((function(e){return"string"==typeof e})).forEach((function(t){e[t]=n})),e})),Ue=e((function(e,t,n){var r=t[2];return e[n]=n,r.forEach((function(t){e[t]=n})),e}));var t="far"in Te||se.autoFetchSvg,n=Ne(Re,(function(e,n){var r=n[0],o=n[1],a=n[2];return"far"!==o||t||(o="fas"),"string"==typeof r&&(e.names[r]={prefix:o,iconName:a}),"number"==typeof r&&(e.unicodes[r.toString(16)]={prefix:o,iconName:a}),e}),{names:{},unicodes:{}});De=n.names,Ve=n.unicodes,Pe=Ke(se.styleDefault,{family:se.familyDefault})};function Ge(e,t){return(Fe[e]||{})[t]}function Ze(e,t){return(Ue[e]||{})[t]}function Xe(e){return De[e]||{prefix:null,iconName:null}}function Je(){return Pe}function Ke(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.family,r=void 0===n?P:n,o=V[r][e],a=U[r][e]||U[r][o],i=e in xe.styles?e:null;return a||i||null}Ye=function(e){Pe=Ke(e.styleDefault,{family:se.familyDefault})},ce.push(Ye),qe();var Qe=(s(ze={},P,Object.keys(W.classic)),s(ze,F,Object.keys(W.sharp)),ze);function et(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.skipLookups,o=void 0!==r&&r,a=(s(t={},P,"".concat(se.cssPrefix,"-").concat(P)),s(t,F,"".concat(se.cssPrefix,"-").concat(F)),t),i=null,c=P;(e.includes(a.classic)||e.some((function(e){return Qe.classic.includes(e)})))&&(c=P),(e.includes(a.sharp)||e.some((function(e){return Qe.sharp.includes(e)})))&&(c=F);var l=e.reduce((function(e,t){var n=Be(se.cssPrefix,t);if(Te[t]?(t=$e[c].includes(t)?B[c][t]:t,i=t,e.prefix=t):We[c].indexOf(t)>-1?(i=t,e.prefix=Ke(t,{family:c})):n?e.iconName=n:t!==se.replacementClass&&t!==a.classic&&t!==a.sharp&&e.rest.push(t),!o&&e.prefix&&e.iconName){var r="fa"===i?Xe(e.iconName):{},s=Ze(e.prefix,e.iconName);r.prefix&&(i=null),e.iconName=r.iconName||s||e.iconName,e.prefix=r.prefix||e.prefix,"far"!==e.prefix||Te.far||!Te.fas||se.autoFetchSvg||(e.prefix="fas")}return e}),{prefix:null,iconName:null,rest:[]});return(e.includes("fa-brands")||e.includes("fab"))&&(l.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(l.prefix="fad"),l.prefix||c!==F||!Te.fass&&!se.autoFetchSvg||(l.prefix="fass",l.iconName=Ze(l.prefix,l.iconName)||l.iconName),"fa"!==l.prefix&&"fa"!==i||(l.prefix=Je()||"fas"),l}var tt=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.definitions={}}var t,n;return t=e,n=[{key:"add",value:function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];var a=n.reduce(this._pullDefinitions,{});Object.keys(a).forEach((function(t){e.definitions[t]=o(o({},e.definitions[t]||{}),a[t]),Ae(t,a[t]);var n=W.classic[t];n&&Ae(n,a[t]),qe()}))}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(e,t){var n=t.prefix&&t.iconName&&t.icon?{0:t}:t;return Object.keys(n).map((function(t){var r=n[t],o=r.prefix,a=r.iconName,i=r.icon,s=i[2];e[o]||(e[o]={}),s.length>0&&s.forEach((function(t){"string"==typeof t&&(e[o][t]=i)})),e[o][a]=i})),e}}],n&&i(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),nt=[],rt={},ot={},at=Object.keys(ot);function it(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];var a=rt[e]||[];return a.forEach((function(e){t=e.apply(null,[t].concat(r))})),t}function st(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var o=rt[e]||[];o.forEach((function(e){e.apply(null,n)}))}function ct(){var e=arguments[0],t=Array.prototype.slice.call(arguments,1);return ot[e]?ot[e].apply(null,t):void 0}function lt(e){"fa"===e.prefix&&(e.prefix="fas");var t=e.iconName,n=e.prefix||Je();if(t)return t=Ze(n,t)||t,Oe(ut.definitions,n,t)||Oe(xe.styles,n,t)}var ut=new tt,ft={i2svg:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return N?(st("beforeI2svg",e),ct("pseudoElements2svg",e),ct("i2svg",e)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.autoReplaceSvgRoot;!1===se.autoReplaceSvg&&(se.autoReplaceSvg=!0),se.observeMutations=!0,Ce((function(){pt({autoReplaceSvgRoot:t}),st("watch",e)}))}},ht={noAuto:function(){se.autoReplaceSvg=!1,se.observeMutations=!1,st("noAuto")},config:se,dom:ft,parse:{icon:function(e){if(null===e)return null;if("object"===a(e)&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Ze(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&2===e.length){var t=0===e[1].indexOf("fa-")?e[1].slice(3):e[1],n=Ke(e[0]);return{prefix:n,iconName:Ze(n,t)||t}}if("string"==typeof e&&(e.indexOf("".concat(se.cssPrefix,"-"))>-1||e.match(Y))){var r=et(e.split(" "),{skipLookups:!0});return{prefix:r.prefix||Je(),iconName:Ze(r.prefix,r.iconName)||r.iconName}}if("string"==typeof e){var o=Je();return{prefix:o,iconName:Ze(o,e)||e}}}},library:ut,findIconDefinition:lt,toHtml:Ee},pt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.autoReplaceSvgRoot,n=void 0===t?C:t;(Object.keys(xe.styles).length>0||se.autoFetchSvg)&&N&&se.autoReplaceSvg&&ht.dom.i2svg({node:n})};function dt(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map((function(e){return Ee(e)}))}}),Object.defineProperty(e,"node",{get:function(){if(N){var t=C.createElement("div");return t.innerHTML=e.html,t.children}}}),e}function mt(e){var t=e.icons,n=t.main,r=t.mask,a=e.prefix,i=e.iconName,s=e.transform,c=e.symbol,l=e.title,u=e.maskId,f=e.titleId,h=e.extra,p=e.watchable,d=void 0!==p&&p,m=r.found?r:n,v=m.width,g=m.height,b="fak"===a,y=[se.replacementClass,i?"".concat(se.cssPrefix,"-").concat(i):""].filter((function(e){return-1===h.classes.indexOf(e)})).filter((function(e){return""!==e||!!e})).concat(h.classes).join(" "),_={children:[],attributes:o(o({},h.attributes),{},{"data-prefix":a,"data-icon":i,class:y,role:h.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(v," ").concat(g)})},w=b&&!~h.classes.indexOf("fa-fw")?{width:"".concat(v/g*16*.0625,"em")}:{};d&&(_.attributes[A]=""),l&&(_.children.push({tag:"title",attributes:{id:_.attributes["aria-labelledby"]||"title-".concat(f||fe())},children:[l]}),delete _.attributes.title);var x=o(o({},_),{},{prefix:a,iconName:i,main:n,mask:r,maskId:u,transform:s,symbol:c,styles:o(o({},w),h.styles)}),k=r.found&&n.found?ct("generateAbstractMask",x)||{children:[],attributes:{}}:ct("generateAbstractIcon",x)||{children:[],attributes:{}},S=k.children,C=k.attributes;return x.children=S,x.attributes=C,c?function(e){var t=e.prefix,n=e.iconName,r=e.children,a=e.attributes,i=e.symbol,s=!0===i?"".concat(t,"-").concat(se.cssPrefix,"-").concat(n):i;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:o(o({},a),{},{id:s}),children:r}]}]}(x):function(e){var t=e.children,n=e.main,r=e.mask,a=e.attributes,i=e.styles,s=e.transform;if(ve(s)&&n.found&&!r.found){var c={x:n.width/n.height/2,y:.5};a.style=me(o(o({},i),{},{"transform-origin":"".concat(c.x+s.x/16,"em ").concat(c.y+s.y/16,"em")}))}return[{tag:"svg",attributes:a,children:t}]}(x)}function vt(e){var t=e.content,n=e.width,r=e.height,a=e.transform,i=e.title,s=e.extra,c=e.watchable,l=void 0!==c&&c,u=o(o(o({},s.attributes),i?{title:i}:{}),{},{class:s.classes.join(" ")});l&&(u[A]="");var f=o({},s.styles);ve(a)&&(f.transform=function(e){var t=e.transform,n=e.width,r=void 0===n?16:n,o=e.height,a=void 0===o?16:o,i=e.startCentered,s=void 0!==i&&i,c="";return c+=s&&j?"translate(".concat(t.x/le-r/2,"em, ").concat(t.y/le-a/2,"em) "):s?"translate(calc(-50% + ".concat(t.x/le,"em), calc(-50% + ").concat(t.y/le,"em)) "):"translate(".concat(t.x/le,"em, ").concat(t.y/le,"em) "),(c+="scale(".concat(t.size/le*(t.flipX?-1:1),", ").concat(t.size/le*(t.flipY?-1:1),") "))+"rotate(".concat(t.rotate,"deg) ")}({transform:a,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var h=me(f);h.length>0&&(u.style=h);var p=[];return p.push({tag:"span",attributes:u,children:[t]}),i&&p.push({tag:"span",attributes:{class:"sr-only"},children:[i]}),p}function gt(e){var t=e.content,n=e.title,r=e.extra,a=o(o(o({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),i=me(r.styles);i.length>0&&(a.style=i);var s=[];return s.push({tag:"span",attributes:a,children:[t]}),n&&s.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),s}var bt=xe.styles;function yt(e){var t=e[0],n=e[1],r=c(e.slice(4),1)[0];return{found:!0,width:t,height:n,icon:Array.isArray(r)?{tag:"g",attributes:{class:"".concat(se.cssPrefix,"-").concat(Q)},children:[{tag:"path",attributes:{class:"".concat(se.cssPrefix,"-").concat(te),fill:"currentColor",d:r[0]}},{tag:"path",attributes:{class:"".concat(se.cssPrefix,"-").concat(ee),fill:"currentColor",d:r[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:r}}}}var _t={found:!1,width:512,height:512};function wt(e,t){var n=t;return"fa"===t&&null!==se.styleDefault&&(t=Je()),new Promise((function(r,a){if(ct("missingIconAbstract"),"fa"===n){var i=Xe(e)||{};e=i.iconName||e,t=i.prefix||t}if(e&&t&&bt[t]&&bt[t][e])return r(yt(bt[t][e]));!function(e,t){$||se.showMissingIcons||!e||console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}(e,t),r(o(o({},_t),{},{icon:se.showMissingIcons&&e&&ct("missingIconAbstract")||{}}))}))}var xt=function(){},kt=se.measurePerformance&&O&&O.mark&&O.measure?O:{mark:xt,measure:xt},St='FA "6.2.1"',Ct=function(e){return kt.mark("".concat(St," ").concat(e," begins")),function(){return function(e){kt.mark("".concat(St," ").concat(e," ends")),kt.measure("".concat(St," ").concat(e),"".concat(St," ").concat(e," begins"),"".concat(St," ").concat(e," ends"))}(e)}},Et=function(){};function Ot(e){return"string"==typeof(e.getAttribute?e.getAttribute(A):null)}function Nt(e){return C.createElementNS("http://www.w3.org/2000/svg",e)}function jt(e){return C.createElement(e)}function Lt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.ceFn,r=void 0===n?"svg"===e.tag?Nt:jt:n;if("string"==typeof e)return C.createTextNode(e);var o=r(e.tag);Object.keys(e.attributes||[]).forEach((function(t){o.setAttribute(t,e.attributes[t])}));var a=e.children||[];return a.forEach((function(e){o.appendChild(Lt(e,{ceFn:r}))})),o}var At={replace:function(e){var t=e[0];if(t.parentNode)if(e[1].forEach((function(e){t.parentNode.insertBefore(Lt(e),t)})),null===t.getAttribute(A)&&se.keepOriginalSource){var n=C.createComment(function(e){var t=" ".concat(e.outerHTML," ");return"".concat(t,"Font Awesome fontawesome.com ")}(t));t.parentNode.replaceChild(n,t)}else t.remove()},nest:function(e){var t=e[0],n=e[1];if(~pe(t).indexOf(se.replacementClass))return At.replace(e);var r=new RegExp("".concat(se.cssPrefix,"-.*"));if(delete n[0].attributes.id,n[0].attributes.class){var o=n[0].attributes.class.split(" ").reduce((function(e,t){return t===se.replacementClass||t.match(r)?e.toSvg.push(t):e.toNode.push(t),e}),{toNode:[],toSvg:[]});n[0].attributes.class=o.toSvg.join(" "),0===o.toNode.length?t.removeAttribute("class"):t.setAttribute("class",o.toNode.join(" "))}var a=n.map((function(e){return Ee(e)})).join("\n");t.setAttribute(A,""),t.innerHTML=a}};function Mt(e){e()}function It(e,t){var n="function"==typeof t?t:Et;if(0===e.length)n();else{var r=Mt;"async"===se.mutateApproach&&(r=S.requestAnimationFrame||Mt),r((function(){var t=!0===se.autoReplaceSvg?At.replace:At[se.autoReplaceSvg]||At.replace,r=Ct("mutate");e.map(t),r(),n()}))}}var zt=!1;function Tt(){zt=!0}function Rt(){zt=!1}var $t=null;function Pt(e){if(E&&se.observeMutations){var t=e.treeCallback,n=void 0===t?Et:t,r=e.nodeCallback,o=void 0===r?Et:r,a=e.pseudoElementsCallback,i=void 0===a?Et:a,s=e.observeMutationsRoot,c=void 0===s?C:s;$t=new E((function(e){if(!zt){var t=Je();he(e).forEach((function(e){if("childList"===e.type&&e.addedNodes.length>0&&!Ot(e.addedNodes[0])&&(se.searchPseudoElements&&i(e.target),n(e.target)),"attributes"===e.type&&e.target.parentNode&&se.searchPseudoElements&&i(e.target.parentNode),"attributes"===e.type&&Ot(e.target)&&~K.indexOf(e.attributeName))if("class"===e.attributeName&&function(e){var t=e.getAttribute?e.getAttribute(I):null,n=e.getAttribute?e.getAttribute(z):null;return t&&n}(e.target)){var r=et(pe(e.target)),a=r.prefix,s=r.iconName;e.target.setAttribute(I,a||t),s&&e.target.setAttribute(z,s)}else(c=e.target)&&c.classList&&c.classList.contains&&c.classList.contains(se.replacementClass)&&o(e.target);var c}))}})),N&&$t.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function Ft(e){var t=e.getAttribute("style"),n=[];return t&&(n=t.split(";").reduce((function(e,t){var n=t.split(":"),r=n[0],o=n.slice(1);return r&&o.length>0&&(e[r]=o.join(":").trim()),e}),{})),n}function Ht(e){var t,n,r=e.getAttribute("data-prefix"),o=e.getAttribute("data-icon"),a=void 0!==e.innerText?e.innerText.trim():"",i=et(pe(e));return i.prefix||(i.prefix=Je()),r&&o&&(i.prefix=r,i.iconName=o),i.iconName&&i.prefix||(i.prefix&&a.length>0&&(i.iconName=(t=i.prefix,n=e.innerText,(He[t]||{})[n]||Ge(i.prefix,je(e.innerText)))),!i.iconName&&se.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(i.iconName=e.firstChild.data)),i}function Dt(e){var t=he(e.attributes).reduce((function(e,t){return"class"!==e.name&&"style"!==e.name&&(e[t.name]=t.value),e}),{}),n=e.getAttribute("title"),r=e.getAttribute("data-fa-title-id");return se.autoA11y&&(n?t["aria-labelledby"]="".concat(se.replacementClass,"-title-").concat(r||fe()):(t["aria-hidden"]="true",t.focusable="false")),t}function Vt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{styleParser:!0},n=Ht(e),r=n.iconName,a=n.prefix,i=n.rest,s=Dt(e),c=it("parseNodeAttributes",{},e),l=t.styleParser?Ft(e):[];return o({iconName:r,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:a,transform:ue,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:i,styles:l,attributes:s}},c)}var Ut=xe.styles;function Wt(e){var t="nest"===se.autoReplaceSvg?Vt(e,{styleParser:!1}):Vt(e);return~t.extra.classes.indexOf(q)?ct("generateLayersText",e,t):ct("generateSvgReplacementMutation",e,t)}var Bt=new Set;function Yt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!N)return Promise.resolve();var n=C.documentElement.classList,r=function(e){return n.add("".concat(T,"-").concat(e))},o=function(e){return n.remove("".concat(T,"-").concat(e))},a=se.autoFetchSvg?Bt:H.map((function(e){return"fa-".concat(e)})).concat(Object.keys(Ut));a.includes("fa")||a.push("fa");var i=[".".concat(q,":not([").concat(A,"])")].concat(a.map((function(e){return".".concat(e,":not([").concat(A,"])")}))).join(", ");if(0===i.length)return Promise.resolve();var s=[];try{s=he(e.querySelectorAll(i))}catch(e){}if(!(s.length>0))return Promise.resolve();r("pending"),o("complete");var c=Ct("onTree"),l=s.reduce((function(e,t){try{var n=Wt(t);n&&e.push(n)}catch(e){$||"MissingIcon"===e.name&&console.error(e)}return e}),[]);return new Promise((function(e,n){Promise.all(l).then((function(n){It(n,(function(){r("active"),r("complete"),o("pending"),"function"==typeof t&&t(),c(),e()}))})).catch((function(e){c(),n(e)}))}))}function qt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Wt(e).then((function(e){e&&It([e],t)}))}H.map((function(e){Bt.add("fa-".concat(e))})),Object.keys(V.classic).map(Bt.add.bind(Bt)),Object.keys(V.sharp).map(Bt.add.bind(Bt)),Bt=l(Bt);var Gt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,r=void 0===n?ue:n,a=t.symbol,i=void 0!==a&&a,s=t.mask,c=void 0===s?null:s,l=t.maskId,u=void 0===l?null:l,f=t.title,h=void 0===f?null:f,p=t.titleId,d=void 0===p?null:p,m=t.classes,v=void 0===m?[]:m,g=t.attributes,b=void 0===g?{}:g,y=t.styles,_=void 0===y?{}:y;if(e){var w=e.prefix,x=e.iconName,k=e.icon;return dt(o({type:"icon"},e),(function(){return st("beforeDOMElementCreation",{iconDefinition:e,params:t}),se.autoA11y&&(h?b["aria-labelledby"]="".concat(se.replacementClass,"-title-").concat(d||fe()):(b["aria-hidden"]="true",b.focusable="false")),mt({icons:{main:yt(k),mask:c?yt(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:w,iconName:x,transform:o(o({},ue),r),symbol:i,title:h,maskId:u,titleId:d,extra:{attributes:b,styles:_,classes:v}})}))}},Zt={mixout:function(){return{icon:(e=Gt,function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(t||{}).icon?t:lt(t||{}),a=n.mask;return a&&(a=(a||{}).icon?a:lt(a||{})),e(r,o(o({},n),{},{mask:a}))})};var e},hooks:function(){return{mutationObserverCallbacks:function(e){return e.treeCallback=Yt,e.nodeCallback=qt,e}}},provides:function(e){e.i2svg=function(e){var t=e.node,n=void 0===t?C:t,r=e.callback;return Yt(n,void 0===r?function(){}:r)},e.generateSvgReplacementMutation=function(e,t){var n=t.iconName,r=t.title,o=t.titleId,a=t.prefix,i=t.transform,s=t.symbol,l=t.mask,u=t.maskId,f=t.extra;return new Promise((function(t,h){Promise.all([wt(n,a),l.iconName?wt(l.iconName,l.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then((function(l){var h=c(l,2),p=h[0],d=h[1];t([e,mt({icons:{main:p,mask:d},prefix:a,iconName:n,transform:i,symbol:s,maskId:u,title:r,titleId:o,extra:f,watchable:!0})])})).catch(h)}))},e.generateAbstractIcon=function(e){var t,n=e.children,r=e.attributes,o=e.main,a=e.transform,i=me(e.styles);return i.length>0&&(r.style=i),ve(a)&&(t=ct("generateAbstractTransformGrouping",{main:o,transform:a,containerWidth:o.width,iconWidth:o.width})),n.push(t||o.icon),{children:n,attributes:r}}}},Xt={mixout:function(){return{layer:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.classes,r=void 0===n?[]:n;return dt({type:"layer"},(function(){st("beforeDOMElementCreation",{assembler:e,params:t});var n=[];return e((function(e){Array.isArray(e)?e.map((function(e){n=n.concat(e.abstract)})):n=n.concat(e.abstract)})),[{tag:"span",attributes:{class:["".concat(se.cssPrefix,"-layers")].concat(l(r)).join(" ")},children:n}]}))}}}},Jt={mixout:function(){return{counter:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.title,r=void 0===n?null:n,o=t.classes,a=void 0===o?[]:o,i=t.attributes,s=void 0===i?{}:i,c=t.styles,u=void 0===c?{}:c;return dt({type:"counter",content:e},(function(){return st("beforeDOMElementCreation",{content:e,params:t}),gt({content:e.toString(),title:r,extra:{attributes:s,styles:u,classes:["".concat(se.cssPrefix,"-layers-counter")].concat(l(a))}})}))}}}},Kt={mixout:function(){return{text:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,r=void 0===n?ue:n,a=t.title,i=void 0===a?null:a,s=t.classes,c=void 0===s?[]:s,u=t.attributes,f=void 0===u?{}:u,h=t.styles,p=void 0===h?{}:h;return dt({type:"text",content:e},(function(){return st("beforeDOMElementCreation",{content:e,params:t}),vt({content:e,transform:o(o({},ue),r),title:i,extra:{attributes:f,styles:p,classes:["".concat(se.cssPrefix,"-layers-text")].concat(l(c))}})}))}}},provides:function(e){e.generateLayersText=function(e,t){var n=t.title,r=t.transform,o=t.extra,a=null,i=null;if(j){var s=parseInt(getComputedStyle(e).fontSize,10),c=e.getBoundingClientRect();a=c.width/s,i=c.height/s}return se.autoA11y&&!n&&(o.attributes["aria-hidden"]="true"),Promise.resolve([e,vt({content:e.innerHTML,width:a,height:i,transform:r,title:n,extra:o,watchable:!0})])}}},Qt=new RegExp('"',"ug"),en=[1105920,1112319];function tn(e,t){var n="".concat("data-fa-pseudo-element-pending").concat(t.replace(":","-"));return new Promise((function(r,a){if(null!==e.getAttribute(n))return r();var i,s,c,l=he(e.children).filter((function(e){return e.getAttribute(M)===t}))[0],u=S.getComputedStyle(e,t),f=u.getPropertyValue("font-family").match(G),h=u.getPropertyValue("font-weight"),p=u.getPropertyValue("content");if(l&&!f)return e.removeChild(l),r();if(f&&"none"!==p&&""!==p){var d=u.getPropertyValue("content"),m=~["Sharp"].indexOf(f[2])?F:P,v=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(f[2])?U[m][f[2].toLowerCase()]:Z[m][h],g=function(e){var t,n,r,o,a=e.replace(Qt,""),i=(0,r=(t=a).length,(o=t.charCodeAt(0))>=55296&&o<=56319&&r>1&&(n=t.charCodeAt(1))>=56320&&n<=57343?1024*(o-55296)+n-56320+65536:o),s=i>=en[0]&&i<=en[1],c=2===a.length&&a[0]===a[1];return{value:je(c?a[0]:a),isSecondary:s||c}}(d),b=g.value,y=g.isSecondary,_=f[0].startsWith("FontAwesome"),w=Ge(v,b),x=w;if(_){var k=(s=Ve[i=b],c=Ge("fas",i),s||(c?{prefix:"fas",iconName:c}:null)||{prefix:null,iconName:null});k.iconName&&k.prefix&&(w=k.iconName,v=k.prefix)}if(!w||y||l&&l.getAttribute(I)===v&&l.getAttribute(z)===x)r();else{e.setAttribute(n,x),l&&e.removeChild(l);var E={iconName:null,title:null,titleId:null,prefix:null,transform:ue,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}},O=E.extra;O.attributes[M]=t,wt(w,v).then((function(a){var i=mt(o(o({},E),{},{icons:{main:a,mask:{prefix:null,iconName:null,rest:[]}},prefix:v,iconName:x,extra:O,watchable:!0})),s=C.createElement("svg");"::before"===t?e.insertBefore(s,e.firstChild):e.appendChild(s),s.outerHTML=i.map((function(e){return Ee(e)})).join("\n"),e.removeAttribute(n),r()})).catch(a)}}else r()}))}function nn(e){return Promise.all([tn(e,"::before"),tn(e,"::after")])}function rn(e){return!(e.parentNode===document.head||~R.indexOf(e.tagName.toUpperCase())||e.getAttribute(M)||e.parentNode&&"svg"===e.parentNode.tagName)}function on(e){if(N)return new Promise((function(t,n){var r=he(e.querySelectorAll("*")).filter(rn).map(nn),o=Ct("searchPseudoElements");Tt(),Promise.all(r).then((function(){o(),Rt(),t()})).catch((function(){o(),Rt(),n()}))}))}var an=!1,sn=function(e){return e.toLowerCase().split(" ").reduce((function(e,t){var n=t.toLowerCase().split("-"),r=n[0],o=n.slice(1).join("-");if(r&&"h"===o)return e.flipX=!0,e;if(r&&"v"===o)return e.flipY=!0,e;if(o=parseFloat(o),isNaN(o))return e;switch(r){case"grow":e.size=e.size+o;break;case"shrink":e.size=e.size-o;break;case"left":e.x=e.x-o;break;case"right":e.x=e.x+o;break;case"up":e.y=e.y-o;break;case"down":e.y=e.y+o;break;case"rotate":e.rotate=e.rotate+o}return e}),{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0})},cn={mixout:function(){return{parse:{transform:function(e){return sn(e)}}}},hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-transform");return n&&(e.transform=sn(n)),e}}},provides:function(e){e.generateAbstractTransformGrouping=function(e){var t=e.main,n=e.transform,r=e.containerWidth,a=e.iconWidth,i={transform:"translate(".concat(r/2," 256)")},s="translate(".concat(32*n.x,", ").concat(32*n.y,") "),c="scale(".concat(n.size/16*(n.flipX?-1:1),", ").concat(n.size/16*(n.flipY?-1:1),") "),l="rotate(".concat(n.rotate," 0 0)"),u={outer:i,inner:{transform:"".concat(s," ").concat(c," ").concat(l)},path:{transform:"translate(".concat(a/2*-1," -256)")}};return{tag:"g",attributes:o({},u.outer),children:[{tag:"g",attributes:o({},u.inner),children:[{tag:t.icon.tag,children:t.icon.children,attributes:o(o({},t.icon.attributes),u.path)}]}]}}}},ln={x:0,y:0,width:"100%",height:"100%"};function un(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}var fn,hn={hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-mask"),r=n?et(n.split(" ").map((function(e){return e.trim()}))):{prefix:null,iconName:null,rest:[]};return r.prefix||(r.prefix=Je()),e.mask=r,e.maskId=t.getAttribute("data-fa-mask-id"),e}}},provides:function(e){e.generateAbstractMask=function(e){var t,n=e.children,r=e.attributes,a=e.main,i=e.mask,s=e.maskId,c=e.transform,l=a.width,u=a.icon,f=i.width,h=i.icon,p=function(e){var t=e.transform,n=e.iconWidth,r={transform:"translate(".concat(e.containerWidth/2," 256)")},o="translate(".concat(32*t.x,", ").concat(32*t.y,") "),a="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),i="rotate(".concat(t.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(o," ").concat(a," ").concat(i)},path:{transform:"translate(".concat(n/2*-1," -256)")}}}({transform:c,containerWidth:f,iconWidth:l}),d={tag:"rect",attributes:o(o({},ln),{},{fill:"white"})},m=u.children?{children:u.children.map(un)}:{},v={tag:"g",attributes:o({},p.inner),children:[un(o({tag:u.tag,attributes:o(o({},u.attributes),p.path)},m))]},g={tag:"g",attributes:o({},p.outer),children:[v]},b="mask-".concat(s||fe()),y="clip-".concat(s||fe()),_={tag:"mask",attributes:o(o({},ln),{},{id:b,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[d,g]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:(t=h,"g"===t.tag?t.children:[t])},_]};return n.push(w,{tag:"rect",attributes:o({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(b,")")},ln)}),{children:n,attributes:r}}}},pn={provides:function(e){var t=!1;S.matchMedia&&(t=S.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){var e=[],n={fill:"currentColor"},r={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};e.push({tag:"path",attributes:o(o({},n),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var a=o(o({},r),{},{attributeName:"opacity"}),i={tag:"circle",attributes:o(o({},n),{},{cx:"256",cy:"364",r:"28"}),children:[]};return t||i.children.push({tag:"animate",attributes:o(o({},r),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:o(o({},a),{},{values:"1;0;1;1;0;1;"})}),e.push(i),e.push({tag:"path",attributes:o(o({},n),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:t?[]:[{tag:"animate",attributes:o(o({},a),{},{values:"1;0;0;0;0;1;"})}]}),t||e.push({tag:"path",attributes:o(o({},n),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:o(o({},a),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:e}}}};fn={mixoutsTo:ht}.mixoutsTo,nt=[_e,Zt,Xt,Jt,Kt,{hooks:function(){return{mutationObserverCallbacks:function(e){return e.pseudoElementsCallback=on,e}}},provides:function(e){e.pseudoElements2svg=function(e){var t=e.node,n=void 0===t?C:t;se.searchPseudoElements&&on(n)}}},{mixout:function(){return{dom:{unwatch:function(){Tt(),an=!0}}}},hooks:function(){return{bootstrap:function(){Pt(it("mutationObserverCallbacks",{}))},noAuto:function(){$t&&$t.disconnect()},watch:function(e){var t=e.observeMutationsRoot;an?Rt():Pt(it("mutationObserverCallbacks",{observeMutationsRoot:t}))}}}},cn,hn,pn,{hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-symbol"),r=null!==n&&(""===n||n);return e.symbol=r,e}}}}],rt={},Object.keys(ot).forEach((function(e){-1===at.indexOf(e)&&delete ot[e]})),nt.forEach((function(e){var t=e.mixout?e.mixout():{};if(Object.keys(t).forEach((function(e){"function"==typeof t[e]&&(fn[e]=t[e]),"object"===a(t[e])&&Object.keys(t[e]).forEach((function(n){fn[e]||(fn[e]={}),fn[e][n]=t[e][n]}))})),e.hooks){var n=e.hooks();Object.keys(n).forEach((function(e){rt[e]||(rt[e]=[]),rt[e].push(n[e])}))}e.provides&&e.provides(ot)}));var dn=ht.config,mn=ht.library,vn=ht.parse,gn=ht.icon,bn=ht.text},5737:(e,t,n)=>{"use strict";n.d(t,{IQi:()=>s,RKn:()=>r,RrC:()=>o,Tab:()=>i,xVw:()=>a});var r={prefix:"far",iconName:"face-smile-beam",icon:[512,512,[128522,"smile-beam"],"f5b8","M256 352C293.2 352 319.2 334.5 334.4 318.1C343.3 308.4 358.5 307.7 368.3 316.7C378 325.7 378.6 340.9 369.6 350.6C347.7 374.5 309.7 400 256 400C202.3 400 164.3 374.5 142.4 350.6C133.4 340.9 133.1 325.7 143.7 316.7C153.5 307.7 168.7 308.4 177.6 318.1C192.8 334.5 218.8 352 256 352zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"]},o={prefix:"far",iconName:"flag",icon:[448,512,[127988,61725],"f024","M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24V64 350.5 400v88c0 13.3 10.7 24 24 24s24-10.7 24-24V388l80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52V24zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8V334.7l-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5v-237z"]},a={prefix:"far",iconName:"bookmark",icon:[384,512,[128278,61591],"f02e","M336 0h-288C21.49 0 0 21.49 0 48v431.9c0 24.7 26.79 40.08 48.12 27.64L192 423.6l143.9 83.93C357.2 519.1 384 504.6 384 479.9V48C384 21.49 362.5 0 336 0zM336 452L192 368l-144 84V54C48 50.63 50.63 48 53.1 48h276C333.4 48 336 50.63 336 54V452z"]},i={prefix:"far",iconName:"star",icon:[576,512,[11088,61446],"f005","M287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0L287.9 0zM287.9 78.95L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L276.6 387.5C283.7 383.7 292.2 383.7 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.9 78.95z"]},s={prefix:"far",iconName:"window-minimize",icon:[512,512,[128469],"f2d1","M0 456C0 442.7 10.75 432 24 432H488C501.3 432 512 442.7 512 456C512 469.3 501.3 480 488 480H24C10.75 480 0 469.3 0 456z"]}},84131:(e,t,n)=>{"use strict";n.d(t,{$Wj:()=>z,A35:()=>Se,Acd:()=>j,Aq:()=>C,Bg$:()=>ie,CPW:()=>R,E1P:()=>de,EQ8:()=>ze,EfQ:()=>k,Elv:()=>B,FKd:()=>Re,FPD:()=>_e,FU$:()=>K,FVb:()=>S,Fwd:()=>Te,GTN:()=>m,G_j:()=>D,HLz:()=>he,I7k:()=>o,IA$:()=>H,IBq:()=>r,IJ7:()=>h,ILF:()=>N,IwR:()=>G,IyC:()=>Ue,J9Y:()=>ae,Kl4:()=>ee,L4e:()=>Ve,LEp:()=>$e,Lh7:()=>d,Mdf:()=>q,Mm7:()=>W,N7g:()=>He,NBC:()=>ke,OwZ:()=>we,RKn:()=>c,RP7:()=>Ne,RrC:()=>b,S3c:()=>Fe,Sbq:()=>l,TTL:()=>Ie,Tab:()=>M,UJf:()=>u,UXu:()=>Le,V9$:()=>i,VE0:()=>je,VmB:()=>$,X8G:()=>g,Xcf:()=>x,Xig:()=>Me,Xjp:()=>X,XsY:()=>_,Y9i:()=>T,YHc:()=>a,Zrf:()=>y,_1N:()=>U,_tD:()=>Ce,aC2:()=>pe,aQp:()=>F,b7W:()=>te,byT:()=>w,cLY:()=>P,cNd:()=>le,cf$:()=>se,ctA:()=>Oe,dT$:()=>V,eHv:()=>Pe,g4A:()=>L,gMD:()=>fe,gPx:()=>A,gmr:()=>be,iV1:()=>re,jLD:()=>s,k0d:()=>Z,kQp:()=>p,klh:()=>Y,kwI:()=>ce,lCn:()=>ne,lXL:()=>f,mTx:()=>E,nNP:()=>me,ptq:()=>ye,q7m:()=>oe,qO$:()=>Ae,qmU:()=>ue,r8p:()=>xe,sqG:()=>Q,u8Q:()=>De,wn1:()=>ge,x5v:()=>Ee,xVw:()=>O,xf3:()=>I,xiG:()=>v,xiy:()=>J,yGG:()=>ve});var r={prefix:"fas",iconName:"at",icon:[512,512,[61946],"40","M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z"]},o={prefix:"fas",iconName:"trash-can",icon:[448,512,[61460,"trash-alt"],"f2ed","M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z"]},a={prefix:"fas",iconName:"info",icon:[192,512,[],"f129","M144 80c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z"]},i={prefix:"fas",iconName:"down-left-and-up-right-to-center",icon:[512,512,["compress-alt"],"f422","M473 7c-9.4-9.4-24.6-9.4-33.9 0l-87 87L313 55c-6.9-6.9-17.2-8.9-26.2-5.2S272 62.3 272 72V216c0 13.3 10.7 24 24 24H440c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-39-39 87-87c9.4-9.4 9.4-24.6 0-33.9L473 7zM216 272H72c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39L7 439c-9.4 9.4-9.4 24.6 0 33.9l32 32c9.4 9.4 24.6 9.4 33.9 0l87-87 39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V296c0-13.3-10.7-24-24-24z"]},s={prefix:"fas",iconName:"right-from-bracket",icon:[512,512,["sign-out-alt"],"f2f5","M160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96C43 32 0 75 0 128V384c0 53 43 96 96 96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32h64zM504.5 273.4c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22v72H192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32H320v72c0 9.6 5.7 18.2 14.5 22s19 2 26-4.6l144-136z"]},c={prefix:"fas",iconName:"face-smile-beam",icon:[512,512,[128522,"smile-beam"],"f5b8","M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"]},l={prefix:"fas",iconName:"angles-down",icon:[448,512,["angle-double-down"],"f103","M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z"]},u={prefix:"fas",iconName:"pencil",icon:[512,512,[9999,61504,"pencil-alt"],"f303","M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"]},f={prefix:"fas",iconName:"comments",icon:[640,512,[128490,61670],"f086","M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z"]},h={prefix:"fas",iconName:"circle-notch",icon:[512,512,[],"f1ce","M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z"]},p={prefix:"fas",iconName:"paw",icon:[512,512,[],"f1b0","M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z"]},d={prefix:"fas",iconName:"reply",icon:[512,512,[61714,"mail-reply"],"f3e5","M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z"]},m={prefix:"fas",iconName:"compass",icon:[512,512,[129517],"f14e","M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z"]},v={prefix:"fas",iconName:"bars",icon:[448,512,["navicon"],"f0c9","M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},g={prefix:"fas",iconName:"lightbulb",icon:[384,512,[128161],"f0eb","M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z"]},b={prefix:"fas",iconName:"flag",icon:[448,512,[127988,61725],"f024","M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V64 368 480c0 17.7 14.3 32 32 32s32-14.3 32-32V352l64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48V32z"]},y={prefix:"fas",iconName:"list",icon:[512,512,["list-squares"],"f03a","M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z"]},_={prefix:"fas",iconName:"paintbrush",icon:[576,512,[128396,"paint-brush"],"f1fc","M371.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L600.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S549.7-4.4 531.1 9.6L294.4 187.2c-24 18-38.2 46.1-38.4 76.1L371.3 367.1zm-19.6 25.4l-116-104.4C175.9 290.3 128 339.6 128 400c0 3.9 .2 7.8 .6 11.6c1.8 17.5-10.2 36.4-27.8 36.4H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H240c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z"]},w={prefix:"fas",iconName:"lock",icon:[448,512,[128274],"f023","M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z"]},x={prefix:"fas",iconName:"pen-to-square",icon:[512,512,["edit"],"f044","M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.8 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z"]},k={prefix:"fas",iconName:"share-nodes",icon:[448,512,["share-alt"],"f1e0","M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z"]},S={prefix:"fas",iconName:"users",icon:[640,512,[],"f0c0","M144 160c-44.2 0-80-35.8-80-80S99.8 0 144 0s80 35.8 80 80s-35.8 80-80 80zm368 0c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM416 224c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z"]},C={prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c5.2-11.8 8-24.8 8-38.5c0-53-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zm223.1 298L373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5z"]},E={prefix:"fas",iconName:"chevron-up",icon:[512,512,[],"f077","M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z"]},O={prefix:"fas",iconName:"bookmark",icon:[384,512,[128278,61591],"f02e","M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z"]},N={prefix:"fas",iconName:"user",icon:[448,512,[128100,62144],"f007","M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z"]},j={prefix:"fas",iconName:"bullhorn",icon:[512,512,[128226,128363],"f0a1","M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z"]},L={prefix:"fas",iconName:"globe",icon:[512,512,[127760],"f0ac","M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 21 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z"]},A={prefix:"fas",iconName:"ban",icon:[512,512,[128683,"cancel"],"f05e","M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z"]},M={prefix:"fas",iconName:"star",icon:[576,512,[11088,61446],"f005","M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z"]},I={prefix:"fas",iconName:"server",icon:[512,512,[],"f233","M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM344 152c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm96-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zM344 408c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm104-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z"]},z={prefix:"fas",iconName:"right-to-bracket",icon:[512,512,["sign-in-alt"],"f2f6","M352 96h64c17.7 0 32 14.3 32 32V384c0 17.7-14.3 32-32 32H352c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c53 0 96-43 96-96V128c0-53-43-96-96-96H352c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-7.5 177.4c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22v72H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H160v72c0 9.6 5.7 18.2 14.5 22s19 2 26-4.6l144-136z"]},T={prefix:"fas",iconName:"file-arrow-up",icon:[384,512,["file-upload"],"f574","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z"]},R={prefix:"fas",iconName:"square-plus",icon:[448,512,[61846,"plus-square"],"f0fe","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"]},$={prefix:"fas",iconName:"image",icon:[512,512,[],"f03e","M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z"]},P={prefix:"fas",iconName:"angles-right",icon:[512,512,[187,"angle-double-right"],"f101","M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z"]},F={prefix:"fas",iconName:"circle-play",icon:[512,512,[61469,"play-circle"],"f144","M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z"]},H={prefix:"fas",iconName:"box-open",icon:[640,512,[],"f49e","M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z"]},D={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z"]},V={prefix:"fas",iconName:"code",icon:[640,512,[],"f121","M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"]},U={prefix:"fas",iconName:"lock-open",icon:[576,512,[],"f3c1","M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z"]},W={prefix:"fas",iconName:"square-poll-horizontal",icon:[448,512,["poll-h"],"f682","M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z"]},B={prefix:"fas",iconName:"basketball",icon:[512,512,[127936,"basketball-ball"],"f434","M86.6 64C119 35.5 158.6 15 202.3 5.6C206 19.1 208 33.3 208 48c0 38.4-13.5 73.7-36.1 101.3L86.6 64zM64 86.6l85.2 85.2C121.7 194.5 86.4 208 48 208c-14.7 0-28.9-2-42.4-5.7C15 158.6 35.5 119 64 86.6zM256 0c64.9 0 124.2 24.2 169.4 64L256 233.4 194.6 172C222.9 138.5 240 95.3 240 48c0-16.2-2-32-5.8-47.1C241.4 .3 248.7 0 256 0zM48 240c47.3 0 90.5-17.1 124-45.4L233.4 256 64 425.4C24.2 380.2 0 320.9 0 256c0-7.3 .3-14.6 .9-21.8C16 238 31.8 240 48 240zm463.1 37.8C496 274 480.2 272 464 272c-47.3 0-90.5 17.1-124 45.4L278.6 256 448 86.6c39.8 45.1 64 104.4 64 169.4c0 7.3-.3 14.6-.9 21.8zm-4.7 31.9C497 353.4 476.5 393 448 425.4l-85.2-85.2C390.3 317.5 425.6 304 464 304c14.7 0 28.9 2 42.4 5.7zM340.1 362.7L425.4 448C393 476.5 353.4 497 309.7 506.4C306 492.9 304 478.7 304 464c0-38.4 13.5-73.7 36.1-101.3zM317.4 340C289.1 373.5 272 416.7 272 464c0 16.2 2 32 5.8 47.1c-7.2 .6-14.5 .9-21.8 .9c-64.9 0-124.2-24.2-169.4-64L256 278.6 317.4 340z"]},Y={prefix:"fas",iconName:"wrench",icon:[512,512,[128295],"f0ad","M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 456c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z"]},q={prefix:"fas",iconName:"eye",icon:[576,512,[128065],"f06e","M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM432 256c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM288 192c0 35.3-28.7 64-64 64c-11.5 0-22.3-3-31.6-8.4c-.2 2.8-.4 5.5-.4 8.4c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6z"]},G={prefix:"fas",iconName:"pen",icon:[512,512,[128394],"f304","M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z"]},Z={prefix:"fas",iconName:"bus",icon:[512,512,[128653],"f207","M256 0C390.4 0 480 35.2 480 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V448H160v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C32 35.2 121.6 0 256 0zM96 160v96c0 17.7 14.3 32 32 32H240V128H128c-17.7 0-32 14.3-32 32zM272 288H384c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H272V288zM112 400c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM352 80c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16z"]},X={prefix:"fas",iconName:"up-right-from-square",icon:[512,512,["external-link-alt"],"f35d","M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z"]},J={prefix:"fas",iconName:"cake-candles",icon:[448,512,[127874,"birthday-cake","cake"],"f1fd","M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z"]},K={prefix:"fas",iconName:"envelope",icon:[512,512,[128386,9993,61443],"f0e0","M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"]},Q={prefix:"fas",iconName:"circle-info",icon:[512,512,["info-circle"],"f05a","M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-144c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z"]},ee={prefix:"fas",iconName:"minus",icon:[448,512,[8211,8722,10134,"subtract"],"f068","M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"]},te={prefix:"fas",iconName:"gear",icon:[512,512,[9881,"cog"],"f013","M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80z"]},ne={prefix:"fas",iconName:"folder-tree",icon:[576,512,[],"f802","M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z"]},re={prefix:"fas",iconName:"ellipsis-vertical",icon:[128,512,["ellipsis-v"],"f142","M64 360c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56zm0-160c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56zM120 96c0 30.9-25.1 56-56 56S8 126.9 8 96S33.1 40 64 40s56 25.1 56 56z"]},oe={prefix:"fas",iconName:"download",icon:[512,512,[],"f019","M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zM432 456c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z"]},ae={prefix:"fas",iconName:"house",icon:[576,512,[127968,63498,63500,"home","home-alt","home-lg-alt"],"f015","M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z"]},ie={prefix:"fas",iconName:"stop",icon:[384,512,[9209],"f04d","M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z"]},se={prefix:"fas",iconName:"upload",icon:[512,512,[],"f093","M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z"]},ce={prefix:"fas",iconName:"file-arrow-down",icon:[384,512,["file-download"],"f56d","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z"]},le={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M120 256c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zm160 0c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zm104 56c-30.9 0-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56s-25.1 56-56 56z"]},ue={prefix:"fas",iconName:"bell",icon:[448,512,[128276,61602],"f0f3","M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z"]},fe={prefix:"fas",iconName:"file",icon:[384,512,[128196,128459,61462],"f15b","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z"]},he={prefix:"fas",iconName:"gauge-high",icon:[512,512,[62461,"tachometer-alt","tachometer-alt-fast"],"f625","M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM96 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm352-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z"]},pe={prefix:"fas",iconName:"bars-staggered",icon:[512,512,["reorder","stream"],"f550","M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},de={prefix:"fas",iconName:"ice-cream",icon:[384,512,[127848],"f810","M335.1 160c.6-5.3 .9-10.6 .9-16C336 64.5 271.5 0 192 0S48 64.5 48 144c0 5.4 .3 10.7 .9 16H48c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H336c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM64 288L168.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L320 288H64z"]},me={prefix:"fas",iconName:"link",icon:[640,512,[128279,"chain"],"f0c1","M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z"]},ve={prefix:"fas",iconName:"font",icon:[448,512,[],"f031","M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z"]},ge={prefix:"fas",iconName:"magnifying-glass",icon:[512,512,[128269,"search"],"f002","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352c79.5 0 144-64.5 144-144s-64.5-144-144-144S64 128.5 64 208s64.5 144 144 144z"]},be={prefix:"fas",iconName:"suitcase-rolling",icon:[384,512,[],"f5c1","M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"]},ye={prefix:"fas",iconName:"chevron-down",icon:[512,512,[],"f078","M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"]},_e={prefix:"fas",iconName:"arrow-up",icon:[384,512,[8593],"f062","M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"]},we={prefix:"fas",iconName:"circle-half-stroke",icon:[512,512,[9680,"adjust"],"f042","M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zm64 0c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z"]},xe={prefix:"fas",iconName:"plus",icon:[448,512,[10133,61543,"add"],"2b","M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z"]},ke={prefix:"fas",iconName:"xmark",icon:[320,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z"]},Se={prefix:"fas",iconName:"chevron-left",icon:[384,512,[9001],"f053","M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 278.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z"]},Ce={prefix:"fas",iconName:"chevron-right",icon:[384,512,[9002],"f054","M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"]},Ee={prefix:"fas",iconName:"retweet",icon:[576,512,[],"f079","M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z"]},Oe={prefix:"fas",iconName:"face-smile",icon:[512,512,[128578,"smile"],"f118","M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z"]},Ne={prefix:"fas",iconName:"thumbtack",icon:[384,512,[128204,128392,"thumb-tack"],"f08d","M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z"]},je={prefix:"fas",iconName:"robot",icon:[640,512,[129302],"f544","M320 0c17.7 0 32 14.3 32 32V96H480c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H160c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zm152 40c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z"]},Le={prefix:"fas",iconName:"angles-left",icon:[512,512,[171,"angle-double-left"],"f100","M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z"]},Ae={prefix:"fas",iconName:"clock-rotate-left",icon:[512,512,["history"],"f1da","M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z"]},Me={prefix:"fas",iconName:"music",icon:[512,512,[127925],"f001","M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z"]},Ie={prefix:"fas",iconName:"up-right-and-down-left-from-center",icon:[512,512,["expand-alt"],"f424","M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM184 496H40c-13.3 0-24-10.7-24-24V328c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z"]},ze={prefix:"fas",iconName:"circle-plus",icon:[512,512,["plus-circle"],"f055","M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"]},Te={prefix:"fas",iconName:"rss",icon:[448,512,["feed"],"f09e","M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM128 416c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"]},Re={prefix:"fas",iconName:"user-plus",icon:[640,512,[],"f234","M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"]},$e={prefix:"fas",iconName:"check",icon:[512,512,[10003,10004],"f00c","M470.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 338.7 425.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"]},Pe={prefix:"fas",iconName:"triangle-exclamation",icon:[512,512,[9888,"exclamation-triangle","warning"],"f071","M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z"]},Fe={prefix:"fas",iconName:"align-right",icon:[448,512,[],"f038","M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},He={prefix:"fas",iconName:"magnifying-glass-plus",icon:[512,512,["search-plus"],"f00e","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"]},De={prefix:"fas",iconName:"thumbs-up",icon:[512,512,[128077,61575],"f164","M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 25.3-19.5 46-44.3 47.9c7.7 8.5 12.3 19.8 12.3 32.1c0 23.4-16.8 42.9-38.9 47.1c4.4 7.2 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z"]},Ve={prefix:"fas",iconName:"note-sticky",icon:[448,512,[62026,"sticky-note"],"f249","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H288V368c0-26.5 21.5-48 48-48H448V96c0-35.3-28.7-64-64-64H64zM448 352H402.7 336c-8.8 0-16 7.2-16 16v66.7V480l32-32 64-64 32-32z"]},Ue={prefix:"fas",iconName:"video",icon:[576,512,["video-camera"],"f03d","M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z"]}},57810:(e,t,n)=>{"use strict";n.d(t,{GN:()=>k,NH:()=>S});var r=n(9382),o=n(66252);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function u(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var h,p="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{},d={exports:{}};h=d,function(e){var t=function(e,n,r){if(!s(n)||l(n)||u(n)||f(n)||i(n))return n;var o,a=0,h=0;if(c(n))for(o=[],h=n.length;a<h;a++)o.push(t(e,n[a],r));else for(var p in o={},n)Object.prototype.hasOwnProperty.call(n,p)&&(o[e(p,r)]=t(e,n[p],r));return o},n=function(e){return p(e)?e:(e=e.replace(/[\-_\s]+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))).substr(0,1).toLowerCase()+e.substr(1)},r=function(e){var t=n(e);return t.substr(0,1).toUpperCase()+t.substr(1)},o=function(e,t){return function(e,t){var n=(t=t||{}).separator||"_",r=t.split||/(?=[A-Z])/;return e.split(r).join(n)}(e,t).toLowerCase()},a=Object.prototype.toString,i=function(e){return"function"==typeof e},s=function(e){return e===Object(e)},c=function(e){return"[object Array]"==a.call(e)},l=function(e){return"[object Date]"==a.call(e)},u=function(e){return"[object RegExp]"==a.call(e)},f=function(e){return"[object Boolean]"==a.call(e)},p=function(e){return(e-=0)==e},d=function(e,t){var n=t&&"process"in t?t.process:t;return"function"!=typeof n?e:function(t,r){return n(t,e,r)}},m={camelize:n,decamelize:o,pascalize:r,depascalize:o,camelizeKeys:function(e,r){return t(d(n,r),e)},decamelizeKeys:function(e,n){return t(d(o,n),e,n)},pascalizeKeys:function(e,n){return t(d(r,n),e)},depascalizeKeys:function(){return this.decamelizeKeys.apply(this,arguments)}};h.exports?h.exports=m:e.humps=m}(p);var m=d.exports,v=["class","style"];function g(e){return e.split(";").map((function(e){return e.trim()})).filter((function(e){return e})).reduce((function(e,t){var n=t.indexOf(":"),r=m.camelize(t.slice(0,n)),o=t.slice(n+1).trim();return e[r]=o,e}),{})}function b(e){return e.split(/\s+/).reduce((function(e,t){return e[t]=!0,e}),{})}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"==typeof e)return e;var r=(e.children||[]).map((function(e){return y(e)})),a=Object.keys(e.attributes||{}).reduce((function(t,n){var r=e.attributes[n];switch(n){case"class":t.class=b(r);break;case"style":t.style=g(r);break;default:t.attrs[n]=r}return t}),{attrs:{},class:{},style:{}});n.class;var s=n.style,c=void 0===s?{}:s,u=l(n,v);return(0,o.h)(e.tag,i(i(i({},t),{},{class:a.class,style:i(i({},a.style),c)},a.attrs),u),r)}var _=!1;try{_=!0}catch(e){}function w(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?c({},e,t):{}}function x(e){return e&&"object"===s(e)&&e.prefix&&e.iconName&&e.icon?e:r.Qc.icon?r.Qc.icon(e):null===e?null:"object"===s(e)&&e.prefix&&e.iconName?e:Array.isArray(e)&&2===e.length?{prefix:e[0],iconName:e[1]}:"string"==typeof e?{prefix:"fas",iconName:e}:void 0}var k=(0,o.aZ)({name:"FontAwesomeIcon",props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:[Boolean,String],default:!1,validator:function(e){return[!0,!1,"horizontal","vertical","both"].indexOf(e)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(e){return["right","left"].indexOf(e)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(e){return[90,180,270].indexOf(Number.parseInt(e,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(e){return["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(e)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},inverse:{type:Boolean,default:!1},bounce:{type:Boolean,default:!1},shake:{type:Boolean,default:!1},beat:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},beatFade:{type:Boolean,default:!1},flash:{type:Boolean,default:!1},spinPulse:{type:Boolean,default:!1},spinReverse:{type:Boolean,default:!1}},setup:function(e,t){var n=t.attrs,a=(0,o.Fl)((function(){return x(e.icon)})),s=(0,o.Fl)((function(){return w("classes",function(e){var t,n=(c(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip":!0===e.flip,"fa-flip-horizontal":"horizontal"===e.flip||"both"===e.flip,"fa-flip-vertical":"vertical"===e.flip||"both"===e.flip},"fa-".concat(e.size),null!==e.size),c(t,"fa-rotate-".concat(e.rotation),null!==e.rotation),c(t,"fa-pull-".concat(e.pull),null!==e.pull),c(t,"fa-swap-opacity",e.swapOpacity),c(t,"fa-bounce",e.bounce),c(t,"fa-shake",e.shake),c(t,"fa-beat",e.beat),c(t,"fa-fade",e.fade),c(t,"fa-beat-fade",e.beatFade),c(t,"fa-flash",e.flash),c(t,"fa-spin-pulse",e.spinPulse),c(t,"fa-spin-reverse",e.spinReverse),t);return Object.keys(n).map((function(e){return n[e]?e:null})).filter((function(e){return e}))}(e))})),l=(0,o.Fl)((function(){return w("transform","string"==typeof e.transform?r.Qc.transform(e.transform):e.transform)})),u=(0,o.Fl)((function(){return w("mask",x(e.mask))})),f=(0,o.Fl)((function(){return(0,r.qv)(a.value,i(i(i(i({},s.value),l.value),u.value),{},{symbol:e.symbol,title:e.title}))}));(0,o.YP)(f,(function(e){if(!e)return function(){var e;!_&&console&&"function"==typeof console.error&&(e=console).error.apply(e,arguments)}("Could not find one or more icon(s)",a.value,u.value)}),{immediate:!0});var h=(0,o.Fl)((function(){return f.value?y(f.value.abstract[0],{},n):null}));return function(){return h.value}}}),S=(0,o.aZ)({name:"FontAwesomeLayers",props:{fixedWidth:{type:Boolean,default:!1}},setup:function(e,t){var n=t.slots,a=r.vc.familyPrefix,i=(0,o.Fl)((function(){return["".concat(a,"-layers")].concat(u(e.fixedWidth?["".concat(a,"-fw")]:[]))}));return function(){return(0,o.h)("div",{class:i.value},n.default?n.default():[])}}});(0,o.aZ)({name:"FontAwesomeLayersText",props:{value:{type:[String,Number],default:""},transform:{type:[String,Object],default:null},counter:{type:Boolean,default:!1},position:{type:String,default:null,validator:function(e){return["bottom-left","bottom-right","top-left","top-right"].indexOf(e)>-1}}},setup:function(e,t){var n=t.attrs,a=r.vc.familyPrefix,s=(0,o.Fl)((function(){return w("classes",[].concat(u(e.counter?["".concat(a,"-layers-counter")]:[]),u(e.position?["".concat(a,"-layers-").concat(e.position)]:[])))})),c=(0,o.Fl)((function(){return w("transform","string"==typeof e.transform?r.Qc.transform(e.transform):e.transform)})),l=(0,o.Fl)((function(){var t=(0,r.fL)(e.value.toString(),i(i({},c.value),s.value)).abstract;return e.counter&&(t[0].attributes.class=t[0].attributes.class.replace("fa-layers-text","")),t[0]})),f=(0,o.Fl)((function(){return y(l.value,{},n)}));return function(){return f.value}}})},782:(e,t,n)=>{"use strict";n.d(t,{Z:()=>w});class r{constructor(e){this.id=-1,this.nativePointer=e,this.pageX=e.pageX,this.pageY=e.pageY,this.clientX=e.clientX,this.clientY=e.clientY,self.Touch&&e instanceof Touch?this.id=e.identifier:o(e)&&(this.id=e.pointerId)}getCoalesced(){return"getCoalescedEvents"in this.nativePointer?this.nativePointer.getCoalescedEvents().map((e=>new r(e))):[this]}}const o=e=>self.PointerEvent&&e instanceof PointerEvent,a=()=>{};!function(e,t){void 0===t&&(t={});var n=t.insertAt;if("undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}("pinch-zoom {\n display: block;\n overflow: hidden;\n touch-action: none;\n --scale: 1;\n --x: 0;\n --y: 0;\n}\n\npinch-zoom > * {\n transform: translate(var(--x), var(--y)) scale(var(--scale));\n transform-origin: 0 0;\n will-change: transform;\n}\n");const i="min-scale",s="allow-pan-min-scale",c="reset-to-min-scale-limit",l="reach-min-scale-strategy",u="stop-propagate-handled";function f(e,t){return t?Math.sqrt((t.clientX-e.clientX)**2+(t.clientY-e.clientY)**2):0}function h(e,t){return t?{clientX:(e.clientX+t.clientX)/2,clientY:(e.clientY+t.clientY)/2}:e}function p(e,t){return"number"==typeof e?e:e.trimRight().endsWith("%")?t*parseFloat(e)/100:parseFloat(e)}let d;function m(){return d||(d=document.createElementNS("http://www.w3.org/2000/svg","svg"))}function v(){return m().createSVGMatrix()}function g(){return m().createSVGPoint()}const b=.01,y=(e,t)=>Math.round(100*e)-Math.round(100*t);class _ extends HTMLElement{constructor(){super(),this._transform=v(),new MutationObserver((()=>this._stageElChange())).observe(this,{childList:!0});const e=new class{constructor(e,{start:t=(()=>!0),move:n=a,end:i=a,rawUpdates:s=!1}={}){this._element=e,this.startPointers=[],this.currentPointers=[],this._pointerStart=e=>{0===e.button&&this._triggerPointerStart(new r(e),e)&&(o(e)?((e.target&&"setPointerCapture"in e.target?e.target:this._element).setPointerCapture(e.pointerId),this._element.addEventListener(this._rawUpdates?"pointerrawupdate":"pointermove",this._move),this._element.addEventListener("pointerup",this._pointerEnd),this._element.addEventListener("pointercancel",this._pointerEnd)):(window.addEventListener("mousemove",this._move),window.addEventListener("mouseup",this._pointerEnd)))},this._touchStart=e=>{for(const t of Array.from(e.changedTouches))this._triggerPointerStart(new r(t),e)},this._move=e=>{const t=this.currentPointers.slice(),n="changedTouches"in e?Array.from(e.changedTouches).map((e=>new r(e))):[new r(e)],o=[];for(const e of n){const t=this.currentPointers.findIndex((t=>t.id===e.id));-1!==t&&(o.push(e),this.currentPointers[t]=e)}0!==o.length&&this._moveCallback(t,o,e)},this._triggerPointerEnd=(e,t)=>{const n=this.currentPointers.findIndex((t=>t.id===e.id));if(-1===n)return!1;this.currentPointers.splice(n,1),this.startPointers.splice(n,1);const r="touchcancel"===t.type||"pointercancel"===t.type;return this._endCallback(e,t,r),!0},this._pointerEnd=e=>{if(this._triggerPointerEnd(new r(e),e))if(o(e)){if(this.currentPointers.length)return;this._element.removeEventListener(this._rawUpdates?"pointerrawupdate":"pointermove",this._move),this._element.removeEventListener("pointerup",this._pointerEnd),this._element.removeEventListener("pointercancel",this._pointerEnd)}else window.removeEventListener("mousemove",this._move),window.removeEventListener("mouseup",this._pointerEnd)},this._touchEnd=e=>{for(const t of Array.from(e.changedTouches))this._triggerPointerEnd(new r(t),e)},this._startCallback=t,this._moveCallback=n,this._endCallback=i,this._rawUpdates=s&&"onpointerrawupdate"in window,self.PointerEvent?this._element.addEventListener("pointerdown",this._pointerStart):(this._element.addEventListener("mousedown",this._pointerStart),this._element.addEventListener("touchstart",this._touchStart),this._element.addEventListener("touchmove",this._move),this._element.addEventListener("touchend",this._touchEnd),this._element.addEventListener("touchcancel",this._touchEnd))}stop(){this._element.removeEventListener("pointerdown",this._pointerStart),this._element.removeEventListener("mousedown",this._pointerStart),this._element.removeEventListener("touchstart",this._touchStart),this._element.removeEventListener("touchmove",this._move),this._element.removeEventListener("touchend",this._touchEnd),this._element.removeEventListener("touchcancel",this._touchEnd),this._element.removeEventListener(this._rawUpdates?"pointerrawupdate":"pointermove",this._move),this._element.removeEventListener("pointerup",this._pointerEnd),this._element.removeEventListener("pointercancel",this._pointerEnd),window.removeEventListener("mousemove",this._move),window.removeEventListener("mouseup",this._pointerEnd)}_triggerPointerStart(e,t){return!!this._startCallback(e,t)&&(this.currentPointers.push(e),this.startPointers.push(e),!0)}}(this,{start:(t,n)=>{if(2===e.currentPointers.length||!this._positioningEl)return!1;const r=e.currentPointers.length+1===1;return!(r&&!this._allowPan())&&(this._maybeStopPropagate(n),r||this._maybeEmitCancel([t,...e.currentPointers])),n.preventDefault(),!0},move:(t,n,r)=>{this._onPointerMove(t,e.currentPointers,r)},end:(t,n)=>{this._onPointerEnd(t,e.currentPointers,n)}});this.addEventListener("wheel",(e=>this._onWheel(e))),this.addEventListener("click",(t=>this._onClick(t,e)))}static get observedAttributes(){return[i]}attributeChangedCallback(e,t,n){e===i&&this.scale<this.minScale&&this.setTransform({scale:this.minScale})}get minScale(){const e=this.getAttribute(i);if(!e)return b;const t=parseFloat(e);return Number.isFinite(t)?Math.max(b,t):b}set minScale(e){this.setAttribute(i,String(e))}get reachMinScaleStrategy(){return this.getAttribute(l)||"none"}set reachMinScaleStrategy(e){this.setAttribute(l,e)}get allowPanMinScale(){const e=this.getAttribute(s);if(!e)return-1;const t=parseFloat(e);return Number.isFinite(t)?Math.max(-1,t):-1}set allowPanMinScale(e){this.setAttribute(s,String(e))}get resetToMinScaleLimit(){const e=this.getAttribute(c);if(!e)return-1;const t=parseFloat(e);return Number.isFinite(t)?Math.max(-1,t):-1}set resetToMinScaleLimit(e){this.setAttribute(c,String(e))}get stopPropagateHandled(){return this.hasAttribute(u)}set stopPropagateHandled(e){e?this.setAttribute(u,""):this.removeAttribute(u)}connectedCallback(){this._stageElChange()}get x(){return this._transform.e}get y(){return this._transform.f}get scale(){return this._transform.a}scaleTo(e,t={}){let{originX:n=0,originY:r=0}=t;const{relativeTo:o="content",allowChangeEvent:a=!1}=t,i="content"===o?this._positioningEl:this;if(!i||!this._positioningEl)return void this.setTransform({scale:e,allowChangeEvent:a});const s=i.getBoundingClientRect();if(n=p(n,s.width),r=p(r,s.height),"content"===o)n+=this.x,r+=this.y;else{const e=this._positioningEl.getBoundingClientRect();n-=e.left,r-=e.top}this._applyChange({allowChangeEvent:a,originX:n,originY:r,scaleDiff:e/this.scale})}setTransform(e={}){const{scale:t=this.scale,allowChangeEvent:n=!1}=e;let{x:r=this.x,y:o=this.y}=e;if(!this._positioningEl)return void this._updateTransform(t,r,o,n);const a=this.getBoundingClientRect(),i=this._positioningEl.getBoundingClientRect();if(!a.width||!a.height)return void this._updateTransform(t,r,o,n);let s=g();s.x=i.left-a.left,s.y=i.top-a.top;let c=g();c.x=i.width+s.x,c.y=i.height+s.y;const l=v().translate(r,o).scale(t).multiply(this._transform.inverse());s=s.matrixTransform(l),c=c.matrixTransform(l),s.x>a.width?r+=a.width-s.x:c.x<0&&(r+=-c.x),s.y>a.height?o+=a.height-s.y:c.y<0&&(o+=-c.y),this._updateTransform(t,r,o,n)}_updateTransform(e,t,n,r){if(e<this.minScale&&(e=this.minScale),(e!==this.scale||t!==this.x||n!==this.y)&&(this._transform.e=t,this._transform.f=n,this._transform.d=this._transform.a=e,this.style.setProperty("--x",this.x+"px"),this.style.setProperty("--y",this.y+"px"),this.style.setProperty("--scale",this.scale+""),r)){const e=new Event("change",{bubbles:!0});this.dispatchEvent(e)}}_stageElChange(){this._positioningEl=void 0,0!==this.children.length&&(this._positioningEl=this.children[0],this.children.length>1&&console.warn("<pinch-zoom> must not have more than one child."),this.setTransform({allowChangeEvent:!0}))}_onWheel(e){if(!this._positioningEl)return;e.preventDefault();const t=this._positioningEl.getBoundingClientRect();let{deltaY:n}=e;const{ctrlKey:r,deltaMode:o}=e;1===o&&(n*=15);const a=1-n/(r?100:300),i=a<1;this._applyChange({scaleDiff:a,originX:e.clientX-t.left,originY:e.clientY-t.top,allowChangeEvent:!0}),i&&this._maybeResetScale()}_onPointerMove(e,t,n){if(!this._positioningEl)return;if(e.length<2&&!this._allowPan())return;const r=this._positioningEl.getBoundingClientRect(),o=h(e[0],e[1]),a=h(t[0],t[1]),i=o.clientX-r.left,s=o.clientY-r.top,c=f(e[0],e[1]),l=f(t[0],t[1]),u=c?l/c:1;this._applyChange({originX:i,originY:s,scaleDiff:u,panX:a.clientX-o.clientX,panY:a.clientY-o.clientY,allowChangeEvent:!0}),this._maybeStopPropagate(n)}_maybeResetScale(){y(this.scale,this.resetToMinScaleLimit)<=0&&this._resetToMinScale()}_onPointerEnd(e,t,n){if(!this._positioningEl)return;const r=1+t.length,o=1==r;r>=2&&this._maybeResetScale(),o&&!this._allowPan()||this._maybeStopPropagate(n)}_resetToMinScale(){"reset"===this.reachMinScaleStrategy?this.setTransform({scale:this.minScale,x:0,y:0}):this.setTransform({scale:this.minScale})}_applyChange(e={}){const{panX:t=0,panY:n=0,originX:r=0,originY:o=0,scaleDiff:a=1,allowChangeEvent:i=!1}=e,s=v().translate(t,n).translate(r,o).translate(this.x,this.y).scale(a).translate(-r,-o).scale(this.scale);this.setTransform({allowChangeEvent:i,scale:s.a,x:s.e,y:s.f})}_maybeStopPropagate(e){this.stopPropagateHandled&&e.stopPropagation()}_allowPan(){return this.allowPanMinScale>0&&y(this.scale,this.allowPanMinScale)>0}_maybeEmitCancel(e){this.stopPropagateHandled&&e.forEach((e=>{var t;this.parentElement&&"function"==typeof this.parentElement.dispatchEvent&&this.parentElement.dispatchEvent((t=e,new PointerEvent("pointercancel",{pointerId:t.id,clientX:t.clientX,clientY:t.clientY})))}))}_onClick(e,t){0===e.button&&(0!==t.currentPointers.length||this._allowPan())&&this._maybeStopPropagate(e)}}customElements.define("pinch-zoom",_);const w=_},2262:(e,t,n)=>{"use strict";n.d(t,{$y:()=>ge,B:()=>i,Bj:()=>a,Fl:()=>Re,IU:()=>_e,Jd:()=>_,PG:()=>ve,SU:()=>Ae,Um:()=>pe,WL:()=>Ie,X$:()=>S,X3:()=>ye,XI:()=>Ne,Xl:()=>we,dq:()=>Ee,iH:()=>Oe,j:()=>x,lk:()=>w,qj:()=>he,qq:()=>v,yT:()=>be});var r=n(3577);let o;class a{constructor(e=!1){this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=o,!e&&o&&(this.index=(o.scopes||(o.scopes=[])).push(this)-1)}run(e){if(this.active){const t=o;try{return o=this,e()}finally{o=t}}}on(){o=this}off(){o=this.parent}stop(e){if(this.active){let t,n;for(t=0,n=this.effects.length;t<n;t++)this.effects[t].stop();for(t=0,n=this.cleanups.length;t<n;t++)this.cleanups[t]();if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].stop(!0);if(!this.detached&&this.parent&&!e){const e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0,this.active=!1}}}function i(e){return new a(e)}const s=e=>{const t=new Set(e);return t.w=0,t.n=0,t},c=e=>(e.w&p)>0,l=e=>(e.n&p)>0,u=new WeakMap;let f,h=0,p=1;const d=Symbol(""),m=Symbol("");class v{constructor(e,t=null,n){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,function(e,t=o){t&&t.active&&t.effects.push(e)}(this,n)}run(){if(!this.active)return this.fn();let e=f,t=b;for(;e;){if(e===this)return;e=e.parent}try{return this.parent=f,f=this,b=!0,p=1<<++h,h<=30?(({deps:e})=>{if(e.length)for(let t=0;t<e.length;t++)e[t].w|=p})(this):g(this),this.fn()}finally{h<=30&&(e=>{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r<t.length;r++){const o=t[r];c(o)&&!l(o)?o.delete(e):t[n++]=o,o.w&=~p,o.n&=~p}t.length=n}})(this),p=1<<--h,f=this.parent,b=t,this.parent=void 0,this.deferStop&&this.stop()}}stop(){f===this?this.deferStop=!0:this.active&&(g(this),this.onStop&&this.onStop(),this.active=!1)}}function g(e){const{deps:t}=e;if(t.length){for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}}let b=!0;const y=[];function _(){y.push(b),b=!1}function w(){const e=y.pop();b=void 0===e||e}function x(e,t,n){if(b&&f){let t=u.get(e);t||u.set(e,t=new Map);let r=t.get(n);r||t.set(n,r=s()),k(r)}}function k(e,t){let n=!1;h<=30?l(e)||(e.n|=p,n=!c(e)):n=!e.has(f),n&&(e.add(f),f.deps.push(e))}function S(e,t,n,o,a,i){const c=u.get(e);if(!c)return;let l=[];if("clear"===t)l=[...c.values()];else if("length"===n&&(0,r.kJ)(e)){const e=(0,r.He)(o);c.forEach(((t,n)=>{("length"===n||n>=e)&&l.push(t)}))}else switch(void 0!==n&&l.push(c.get(n)),t){case"add":(0,r.kJ)(e)?(0,r.S0)(n)&&l.push(c.get("length")):(l.push(c.get(d)),(0,r._N)(e)&&l.push(c.get(m)));break;case"delete":(0,r.kJ)(e)||(l.push(c.get(d)),(0,r._N)(e)&&l.push(c.get(m)));break;case"set":(0,r._N)(e)&&l.push(c.get(d))}if(1===l.length)l[0]&&C(l[0]);else{const e=[];for(const t of l)t&&e.push(...t);C(s(e))}}function C(e,t){const n=(0,r.kJ)(e)?e:[...e];for(const e of n)e.computed&&E(e);for(const e of n)e.computed||E(e)}function E(e,t){(e!==f||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const O=(0,r.fY)("__proto__,__v_isRef,__isVue"),N=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(r.yk)),j=z(),L=z(!1,!0),A=z(!0),M=I();function I(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=_e(this);for(let e=0,t=this.length;e<t;e++)x(n,0,e+"");const r=n[t](...e);return-1===r||!1===r?n[t](...e.map(_e)):r}})),["push","pop","shift","unshift","splice"].forEach((t=>{e[t]=function(...e){_();const n=_e(this)[t].apply(this,e);return w(),n}})),e}function z(e=!1,t=!1){return function(n,o,a){if("__v_isReactive"===o)return!e;if("__v_isReadonly"===o)return e;if("__v_isShallow"===o)return t;if("__v_raw"===o&&a===(e?t?fe:ue:t?le:ce).get(n))return n;const i=(0,r.kJ)(n);if(!e&&i&&(0,r.RI)(M,o))return Reflect.get(M,o,a);const s=Reflect.get(n,o,a);return((0,r.yk)(o)?N.has(o):O(o))?s:(e||x(n,0,o),t?s:Ee(s)?i&&(0,r.S0)(o)?s:s.value:(0,r.Kn)(s)?e?de(s):he(s):s)}}const T=$(),R=$(!0);function $(e=!1){return function(t,n,o,a){let i=t[n];if(ge(i)&&Ee(i)&&!Ee(o))return!1;if(!e&&(be(o)||ge(o)||(i=_e(i),o=_e(o)),!(0,r.kJ)(t)&&Ee(i)&&!Ee(o)))return i.value=o,!0;const s=(0,r.kJ)(t)&&(0,r.S0)(n)?Number(n)<t.length:(0,r.RI)(t,n),c=Reflect.set(t,n,o,a);return t===_e(a)&&(s?(0,r.aU)(o,i)&&S(t,"set",n,o):S(t,"add",n,o)),c}}const P={get:j,set:T,deleteProperty:function(e,t){const n=(0,r.RI)(e,t),o=(e[t],Reflect.deleteProperty(e,t));return o&&n&&S(e,"delete",t,void 0),o},has:function(e,t){const n=Reflect.has(e,t);return(0,r.yk)(t)&&N.has(t)||x(e,0,t),n},ownKeys:function(e){return x(e,0,(0,r.kJ)(e)?"length":d),Reflect.ownKeys(e)}},F={get:A,set:(e,t)=>!0,deleteProperty:(e,t)=>!0},H=(0,r.l7)({},P,{get:L,set:R}),D=e=>e,V=e=>Reflect.getPrototypeOf(e);function U(e,t,n=!1,r=!1){const o=_e(e=e.__v_raw),a=_e(t);n||(t!==a&&x(o,0,t),x(o,0,a));const{has:i}=V(o),s=r?D:n?ke:xe;return i.call(o,t)?s(e.get(t)):i.call(o,a)?s(e.get(a)):void(e!==o&&e.get(t))}function W(e,t=!1){const n=this.__v_raw,r=_e(n),o=_e(e);return t||(e!==o&&x(r,0,e),x(r,0,o)),e===o?n.has(e):n.has(e)||n.has(o)}function B(e,t=!1){return e=e.__v_raw,!t&&x(_e(e),0,d),Reflect.get(e,"size",e)}function Y(e){e=_e(e);const t=_e(this);return V(t).has.call(t,e)||(t.add(e),S(t,"add",e,e)),this}function q(e,t){t=_e(t);const n=_e(this),{has:o,get:a}=V(n);let i=o.call(n,e);i||(e=_e(e),i=o.call(n,e));const s=a.call(n,e);return n.set(e,t),i?(0,r.aU)(t,s)&&S(n,"set",e,t):S(n,"add",e,t),this}function G(e){const t=_e(this),{has:n,get:r}=V(t);let o=n.call(t,e);o||(e=_e(e),o=n.call(t,e)),r&&r.call(t,e);const a=t.delete(e);return o&&S(t,"delete",e,void 0),a}function Z(){const e=_e(this),t=0!==e.size,n=e.clear();return t&&S(e,"clear",void 0,void 0),n}function X(e,t){return function(n,r){const o=this,a=o.__v_raw,i=_e(a),s=t?D:e?ke:xe;return!e&&x(i,0,d),a.forEach(((e,t)=>n.call(r,s(e),s(t),o)))}}function J(e,t,n){return function(...o){const a=this.__v_raw,i=_e(a),s=(0,r._N)(i),c="entries"===e||e===Symbol.iterator&&s,l="keys"===e&&s,u=a[e](...o),f=n?D:t?ke:xe;return!t&&x(i,0,l?m:d),{next(){const{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[f(e[0]),f(e[1])]:f(e),done:t}},[Symbol.iterator](){return this}}}}function K(e){return function(...t){return"delete"!==e&&this}}function Q(){const e={get(e){return U(this,e)},get size(){return B(this)},has:W,add:Y,set:q,delete:G,clear:Z,forEach:X(!1,!1)},t={get(e){return U(this,e,!1,!0)},get size(){return B(this)},has:W,add:Y,set:q,delete:G,clear:Z,forEach:X(!1,!0)},n={get(e){return U(this,e,!0)},get size(){return B(this,!0)},has(e){return W.call(this,e,!0)},add:K("add"),set:K("set"),delete:K("delete"),clear:K("clear"),forEach:X(!0,!1)},r={get(e){return U(this,e,!0,!0)},get size(){return B(this,!0)},has(e){return W.call(this,e,!0)},add:K("add"),set:K("set"),delete:K("delete"),clear:K("clear"),forEach:X(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=J(o,!1,!1),n[o]=J(o,!0,!1),t[o]=J(o,!1,!0),r[o]=J(o,!0,!0)})),[e,n,t,r]}const[ee,te,ne,re]=Q();function oe(e,t){const n=t?e?re:ne:e?te:ee;return(t,o,a)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get((0,r.RI)(n,o)&&o in t?n:t,o,a)}const ae={get:oe(!1,!1)},ie={get:oe(!1,!0)},se={get:oe(!0,!1)},ce=new WeakMap,le=new WeakMap,ue=new WeakMap,fe=new WeakMap;function he(e){return ge(e)?e:me(e,!1,P,ae,ce)}function pe(e){return me(e,!1,H,ie,le)}function de(e){return me(e,!0,F,se,ue)}function me(e,t,n,o,a){if(!(0,r.Kn)(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=a.get(e);if(i)return i;const s=(c=e).__v_skip||!Object.isExtensible(c)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((0,r.W7)(c));var c;if(0===s)return e;const l=new Proxy(e,2===s?o:n);return a.set(e,l),l}function ve(e){return ge(e)?ve(e.__v_raw):!(!e||!e.__v_isReactive)}function ge(e){return!(!e||!e.__v_isReadonly)}function be(e){return!(!e||!e.__v_isShallow)}function ye(e){return ve(e)||ge(e)}function _e(e){const t=e&&e.__v_raw;return t?_e(t):e}function we(e){return(0,r.Nj)(e,"__v_skip",!0),e}const xe=e=>(0,r.Kn)(e)?he(e):e,ke=e=>(0,r.Kn)(e)?de(e):e;function Se(e){b&&f&&k((e=_e(e)).dep||(e.dep=s()))}function Ce(e,t){(e=_e(e)).dep&&C(e.dep)}function Ee(e){return!(!e||!0!==e.__v_isRef)}function Oe(e){return je(e,!1)}function Ne(e){return je(e,!0)}function je(e,t){return Ee(e)?e:new Le(e,t)}class Le{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:_e(e),this._value=t?e:xe(e)}get value(){return Se(this),this._value}set value(e){const t=this.__v_isShallow||be(e)||ge(e);e=t?e:_e(e),(0,r.aU)(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:xe(e),Ce(this))}}function Ae(e){return Ee(e)?e.value:e}const Me={get:(e,t,n)=>Ae(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ee(o)&&!Ee(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Ie(e){return ve(e)?e:new Proxy(e,Me)}var ze;class Te{constructor(e,t,n,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[ze]=!1,this._dirty=!0,this.effect=new v(e,(()=>{this._dirty||(this._dirty=!0,Ce(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=n}get value(){const e=_e(this);return Se(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function Re(e,t,n=!1){let o,a;const i=(0,r.mf)(e);return i?(o=e,a=r.dG):(o=e.get,a=e.set),new Te(o,a,i||!a,n)}ze="__v_isReadonly"},66252:(e,t,n)=>{"use strict";n.d(t,{$d:()=>i,Ah:()=>ke,Cn:()=>M,F4:()=>Yt,FN:()=>on,Fl:()=>dn,HX:()=>I,HY:()=>Ot,JJ:()=>H,Jd:()=>xe,Ko:()=>$e,LL:()=>Ie,Ob:()=>ce,P$:()=>X,Q2:()=>ze,Q6:()=>ne,RC:()=>ae,U2:()=>K,Uk:()=>Gt,Us:()=>bt,WI:()=>Pe,Wm:()=>Bt,Y3:()=>g,Y8:()=>G,YP:()=>U,_:()=>Wt,aZ:()=>re,bv:()=>ye,dD:()=>A,dG:()=>Qt,f3:()=>D,h:()=>mn,iD:()=>$t,ic:()=>we,j4:()=>Pt,kq:()=>Zt,lA:()=>Ft,lR:()=>Ct,mx:()=>He,nK:()=>te,up:()=>Ae,w5:()=>z,wF:()=>be,wg:()=>It,wy:()=>Ne,xv:()=>Nt});var r=n(2262),o=n(3577);function a(e,t,n,r){let o;try{o=r?e(...r):e()}catch(e){s(e,t,n)}return o}function i(e,t,n,r){if((0,o.mf)(e)){const i=a(e,t,n,r);return i&&(0,o.tI)(i)&&i.catch((e=>{s(e,t,n)})),i}const c=[];for(let o=0;o<e.length;o++)c.push(i(e[o],t,n,r));return c}function s(e,t,n,r=!0){if(t&&t.vnode,t){let r=t.parent;const o=t.proxy,i=n;for(;r;){const t=r.ec;if(t)for(let n=0;n<t.length;n++)if(!1===t[n](e,o,i))return;r=r.parent}const s=t.appContext.config.errorHandler;if(s)return void a(s,null,10,[e,o,i])}!function(e,t,n,r=!0){console.error(e)}(e,0,0,r)}let c=!1,l=!1;const u=[];let f=0;const h=[];let p=null,d=0;const m=Promise.resolve();let v=null;function g(e){const t=v||m;return e?t.then(this?e.bind(this):e):t}function b(e){u.length&&u.includes(e,c&&e.allowRecurse?f+1:f)||(null==e.id?u.push(e):u.splice(function(e){let t=f+1,n=u.length;for(;t<n;){const r=t+n>>>1;x(u[r])<e?t=r+1:n=r}return t}(e.id),0,e),y())}function y(){c||l||(l=!0,v=m.then(S))}function _(e,t=(c?f+1:0)){for(;t<u.length;t++){const e=u[t];e&&e.pre&&(u.splice(t,1),t--,e())}}function w(e){if(h.length){const e=[...new Set(h)];if(h.length=0,p)return void p.push(...e);for(p=e,p.sort(((e,t)=>x(e)-x(t))),d=0;d<p.length;d++)p[d]();p=null,d=0}}const x=e=>null==e.id?1/0:e.id,k=(e,t)=>{const n=x(e)-x(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function S(e){l=!1,c=!0,u.sort(k),o.dG;try{for(f=0;f<u.length;f++){const e=u[f];e&&!1!==e.active&&a(e,null,14)}}finally{f=0,u.length=0,w(),c=!1,v=null,(u.length||h.length)&&S(e)}}function C(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||o.kT;let a=n;const s=t.startsWith("update:"),c=s&&t.slice(7);if(c&&c in r){const e=`${"modelValue"===c?"model":c}Modifiers`,{number:t,trim:i}=r[e]||o.kT;i&&(a=n.map((e=>(0,o.HD)(e)?e.trim():e))),t&&(a=n.map(o.He))}let l,u=r[l=(0,o.hR)(t)]||r[l=(0,o.hR)((0,o._A)(t))];!u&&s&&(u=r[l=(0,o.hR)((0,o.rs)(t))]),u&&i(u,e,6,a);const f=r[l+"Once"];if(f){if(e.emitted){if(e.emitted[l])return}else e.emitted={};e.emitted[l]=!0,i(f,e,6,a)}}function E(e,t,n=!1){const r=t.emitsCache,a=r.get(e);if(void 0!==a)return a;const i=e.emits;let s={},c=!1;if(!(0,o.mf)(e)){const r=e=>{const n=E(e,t,!0);n&&(c=!0,(0,o.l7)(s,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return i||c?((0,o.kJ)(i)?i.forEach((e=>s[e]=null)):(0,o.l7)(s,i),(0,o.Kn)(e)&&r.set(e,s),s):((0,o.Kn)(e)&&r.set(e,null),null)}function O(e,t){return!(!e||!(0,o.F7)(t))&&(t=t.slice(2).replace(/Once$/,""),(0,o.RI)(e,t[0].toLowerCase()+t.slice(1))||(0,o.RI)(e,(0,o.rs)(t))||(0,o.RI)(e,t))}new Set,new Map;let N=null,j=null;function L(e){const t=N;return N=e,j=e&&e.type.__scopeId||null,t}function A(e){j=e}function M(){j=null}const I=e=>z;function z(e,t=N,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r._d&&Tt(-1);const o=L(t);let a;try{a=e(...n)}finally{L(o),r._d&&Tt(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function T(e){const{type:t,vnode:n,proxy:r,withProxy:a,props:i,propsOptions:[c],slots:l,attrs:u,emit:f,render:h,renderCache:p,data:d,setupState:m,ctx:v,inheritAttrs:g}=e;let b,y;const _=L(e);try{if(4&n.shapeFlag){const e=a||r;b=Xt(h.call(e,e,p,i,m,d,v)),y=u}else{const e=t;b=Xt(e.length>1?e(i,{attrs:u,slots:l,emit:f}):e(i,null)),y=t.props?u:R(u)}}catch(t){At.length=0,s(t,e,1),b=Bt(jt)}let w=b;if(y&&!1!==g){const e=Object.keys(y),{shapeFlag:t}=w;e.length&&7&t&&(c&&e.some(o.tR)&&(y=$(y,c)),w=qt(w,y))}return n.dirs&&(w=qt(w),w.dirs=w.dirs?w.dirs.concat(n.dirs):n.dirs),n.transition&&(w.transition=n.transition),b=w,L(_),b}const R=e=>{let t;for(const n in e)("class"===n||"style"===n||(0,o.F7)(n))&&((t||(t={}))[n]=e[n]);return t},$=(e,t)=>{const n={};for(const r in e)(0,o.tR)(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function P(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let o=0;o<r.length;o++){const a=r[o];if(t[a]!==e[a]&&!O(n,a))return!0}return!1}const F=e=>e.__isSuspense;function H(e,t){if(rn){let n=rn.provides;const r=rn.parent&&rn.parent.provides;r===n&&(n=rn.provides=Object.create(r)),n[e]=t}}function D(e,t,n=!1){const r=rn||N;if(r){const a=null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(a&&e in a)return a[e];if(arguments.length>1)return n&&(0,o.mf)(t)?t.call(r.proxy):t}}const V={};function U(e,t,n){return W(e,t,n)}function W(e,t,{immediate:n,deep:s,flush:c,onTrack:l,onTrigger:u}=o.kT){const f=rn;let h,p,d=!1,m=!1;if((0,r.dq)(e)?(h=()=>e.value,d=(0,r.yT)(e)):(0,r.PG)(e)?(h=()=>e,s=!0):(0,o.kJ)(e)?(m=!0,d=e.some((e=>(0,r.PG)(e)||(0,r.yT)(e))),h=()=>e.map((e=>(0,r.dq)(e)?e.value:(0,r.PG)(e)?q(e):(0,o.mf)(e)?a(e,f,2):void 0))):h=(0,o.mf)(e)?t?()=>a(e,f,2):()=>{if(!f||!f.isUnmounted)return p&&p(),i(e,f,3,[g])}:o.dG,t&&s){const e=h;h=()=>q(e())}let v,g=e=>{p=x.onStop=()=>{a(e,f,4)}};if(ln){if(g=o.dG,t?n&&i(t,f,3,[h(),m?[]:void 0,g]):h(),"sync"!==c)return o.dG;{const e=gn();v=e.__watcherHandles||(e.__watcherHandles=[])}}let y=m?new Array(e.length).fill(V):V;const _=()=>{if(x.active)if(t){const e=x.run();(s||d||(m?e.some(((e,t)=>(0,o.aU)(e,y[t]))):(0,o.aU)(e,y)))&&(p&&p(),i(t,f,3,[e,y===V?void 0:m&&y[0]===V?[]:y,g]),y=e)}else x.run()};let w;_.allowRecurse=!!t,"sync"===c?w=_:"post"===c?w=()=>gt(_,f&&f.suspense):(_.pre=!0,f&&(_.id=f.uid),w=()=>b(_));const x=new r.qq(h,w);t?n?_():y=x.run():"post"===c?gt(x.run.bind(x),f&&f.suspense):x.run();const k=()=>{x.stop(),f&&f.scope&&(0,o.Od)(f.scope.effects,x)};return v&&v.push(k),k}function B(e,t,n){const r=this.proxy,a=(0,o.HD)(e)?e.includes(".")?Y(r,e):()=>r[e]:e.bind(r,r);let i;(0,o.mf)(t)?i=t:(i=t.handler,n=t);const s=rn;an(this);const c=W(a,i.bind(r),n);return s?an(s):sn(),c}function Y(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}function q(e,t){if(!(0,o.Kn)(e)||e.__v_skip)return e;if((t=t||new Set).has(e))return e;if(t.add(e),(0,r.dq)(e))q(e.value,t);else if((0,o.kJ)(e))for(let n=0;n<e.length;n++)q(e[n],t);else if((0,o.DM)(e)||(0,o._N)(e))e.forEach((e=>{q(e,t)}));else if((0,o.PO)(e))for(const n in e)q(e[n],t);return e}function G(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return ye((()=>{e.isMounted=!0})),xe((()=>{e.isUnmounting=!0})),e}const Z=[Function,Array],X={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Z,onEnter:Z,onAfterEnter:Z,onEnterCancelled:Z,onBeforeLeave:Z,onLeave:Z,onAfterLeave:Z,onLeaveCancelled:Z,onBeforeAppear:Z,onAppear:Z,onAfterAppear:Z,onAppearCancelled:Z},setup(e,{slots:t}){const n=on(),o=G();let a;return()=>{const i=t.default&&ne(t.default(),!0);if(!i||!i.length)return;let s=i[0];if(i.length>1){let e=!1;for(const t of i)if(t.type!==jt){s=t,e=!0;break}}const c=(0,r.IU)(e),{mode:l}=c;if(o.isLeaving)return Q(s);const u=ee(s);if(!u)return Q(s);const f=K(u,c,o,n);te(u,f);const h=n.subTree,p=h&&ee(h);let d=!1;const{getTransitionKey:m}=u.type;if(m){const e=m();void 0===a?a=e:e!==a&&(a=e,d=!0)}if(p&&p.type!==jt&&(!Ht(u,p)||d)){const e=K(p,c,o,n);if(te(p,e),"out-in"===l)return o.isLeaving=!0,e.afterLeave=()=>{o.isLeaving=!1,!1!==n.update.active&&n.update()},Q(s);"in-out"===l&&u.type!==jt&&(e.delayLeave=(e,t,n)=>{J(o,p)[String(p.key)]=p,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=n})}return s}}};function J(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function K(e,t,n,r){const{appear:a,mode:s,persisted:c=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:p,onLeave:d,onAfterLeave:m,onLeaveCancelled:v,onBeforeAppear:g,onAppear:b,onAfterAppear:y,onAppearCancelled:_}=t,w=String(e.key),x=J(n,e),k=(e,t)=>{e&&i(e,r,9,t)},S=(e,t)=>{const n=t[1];k(e,t),(0,o.kJ)(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},C={mode:s,persisted:c,beforeEnter(t){let r=l;if(!n.isMounted){if(!a)return;r=g||l}t._leaveCb&&t._leaveCb(!0);const o=x[w];o&&Ht(e,o)&&o.el._leaveCb&&o.el._leaveCb(),k(r,[t])},enter(e){let t=u,r=f,o=h;if(!n.isMounted){if(!a)return;t=b||u,r=y||f,o=_||h}let i=!1;const s=e._enterCb=t=>{i||(i=!0,k(t?o:r,[e]),C.delayedLeave&&C.delayedLeave(),e._enterCb=void 0)};t?S(t,[e,s]):s()},leave(t,r){const o=String(e.key);if(t._enterCb&&t._enterCb(!0),n.isUnmounting)return r();k(p,[t]);let a=!1;const i=t._leaveCb=n=>{a||(a=!0,r(),k(n?v:m,[t]),t._leaveCb=void 0,x[o]===e&&delete x[o])};x[o]=e,d?S(d,[t,i]):i()},clone:e=>K(e,t,n,r)};return C}function Q(e){if(se(e))return(e=qt(e)).children=null,e}function ee(e){return se(e)?e.children?e.children[0]:void 0:e}function te(e,t){6&e.shapeFlag&&e.component?te(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ne(e,t=!1,n){let r=[],o=0;for(let a=0;a<e.length;a++){let i=e[a];const s=null==n?i.key:String(n)+String(null!=i.key?i.key:a);i.type===Ot?(128&i.patchFlag&&o++,r=r.concat(ne(i.children,t,s))):(t||i.type!==jt)&&r.push(null!=s?qt(i,{key:s}):i)}if(o>1)for(let e=0;e<r.length;e++)r[e].patchFlag=-2;return r}function re(e){return(0,o.mf)(e)?{setup:e,name:e.name}:e}const oe=e=>!!e.type.__asyncLoader;function ae(e){(0,o.mf)(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:a,delay:i=200,timeout:c,suspensible:l=!0,onError:u}=e;let f,h=null,p=0;const d=()=>{let e;return h||(e=h=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),u)return new Promise(((t,n)=>{u(e,(()=>t((p++,h=null,d()))),(()=>n(e)),p+1)}));throw e})).then((t=>e!==h&&h?h:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),f=t,t))))};return re({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return f},setup(){const e=rn;if(f)return()=>ie(f,e);const t=t=>{h=null,s(t,e,13,!a)};if(l&&e.suspense||ln)return d().then((t=>()=>ie(t,e))).catch((e=>(t(e),()=>a?Bt(a,{error:e}):null)));const o=(0,r.iH)(!1),u=(0,r.iH)(),p=(0,r.iH)(!!i);return i&&setTimeout((()=>{p.value=!1}),i),null!=c&&setTimeout((()=>{if(!o.value&&!u.value){const e=new Error(`Async component timed out after ${c}ms.`);t(e),u.value=e}}),c),d().then((()=>{o.value=!0,e.parent&&se(e.parent.vnode)&&b(e.parent.update)})).catch((e=>{t(e),u.value=e})),()=>o.value&&f?ie(f,e):u.value&&a?Bt(a,{error:u.value}):n&&!p.value?Bt(n):void 0}})}function ie(e,t){const{ref:n,props:r,children:o,ce:a}=t.vnode,i=Bt(e,r,o);return i.ref=n,i.ce=a,delete t.vnode.ce,i}const se=e=>e.type.__isKeepAlive,ce={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=on(),r=n.ctx;if(!r.renderer)return()=>{const e=t.default&&t.default();return e&&1===e.length?e[0]:e};const a=new Map,i=new Set;let s=null;const c=n.suspense,{renderer:{p:l,m:u,um:f,o:{createElement:h}}}=r,p=h("div");function d(e){de(e),f(e,n,c,!0)}function m(e){a.forEach(((t,n)=>{const r=pn(t.type);!r||e&&e(r)||v(n)}))}function v(e){const t=a.get(e);s&&t.type===s.type?s&&de(s):d(t),a.delete(e),i.delete(e)}r.activate=(e,t,n,r,a)=>{const i=e.component;u(e,t,n,0,c),l(i.vnode,e,t,n,i,c,r,e.slotScopeIds,a),gt((()=>{i.isDeactivated=!1,i.a&&(0,o.ir)(i.a);const t=e.props&&e.props.onVnodeMounted;t&&en(t,i.parent,e)}),c)},r.deactivate=e=>{const t=e.component;u(e,p,null,1,c),gt((()=>{t.da&&(0,o.ir)(t.da);const n=e.props&&e.props.onVnodeUnmounted;n&&en(n,t.parent,e),t.isDeactivated=!0}),c)},U((()=>[e.include,e.exclude]),(([e,t])=>{e&&m((t=>le(e,t))),t&&m((e=>!le(t,e)))}),{flush:"post",deep:!0});let g=null;const b=()=>{null!=g&&a.set(g,me(n.subTree))};return ye(b),we(b),xe((()=>{a.forEach((e=>{const{subTree:t,suspense:r}=n,o=me(t);if(e.type!==o.type)d(e);else{de(o);const e=o.component.da;e&&gt(e,r)}}))})),()=>{if(g=null,!t.default)return null;const n=t.default(),r=n[0];if(n.length>1)return s=null,n;if(!Ft(r)||!(4&r.shapeFlag||128&r.shapeFlag))return s=null,r;let o=me(r);const c=o.type,l=pn(oe(o)?o.type.__asyncResolved||{}:c),{include:u,exclude:f,max:h}=e;if(u&&(!l||!le(u,l))||f&&l&&le(f,l))return s=o,r;const p=null==o.key?c:o.key,d=a.get(p);return o.el&&(o=qt(o),128&r.shapeFlag&&(r.ssContent=o)),g=p,d?(o.el=d.el,o.component=d.component,o.transition&&te(o,o.transition),o.shapeFlag|=512,i.delete(p),i.add(p)):(i.add(p),h&&i.size>parseInt(h,10)&&v(i.values().next().value)),o.shapeFlag|=256,s=o,F(r.type)?r:o}}};function le(e,t){return(0,o.kJ)(e)?e.some((e=>le(e,t))):(0,o.HD)(e)?e.split(",").includes(t):!!e.test&&e.test(t)}function ue(e,t){he(e,"a",t)}function fe(e,t){he(e,"da",t)}function he(e,t,n=rn){const r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(ve(t,r,n),n){let e=n.parent;for(;e&&e.parent;)se(e.parent.vnode)&&pe(r,t,n,e),e=e.parent}}function pe(e,t,n,r){const a=ve(t,e,r,!0);ke((()=>{(0,o.Od)(r[t],a)}),n)}function de(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function me(e){return 128&e.shapeFlag?e.ssContent:e}function ve(e,t,n=rn,o=!1){if(n){const a=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;(0,r.Jd)(),an(n);const a=i(t,n,e,o);return sn(),(0,r.lk)(),a});return o?a.unshift(s):a.push(s),s}}const ge=e=>(t,n=rn)=>(!ln||"sp"===e)&&ve(e,((...e)=>t(...e)),n),be=ge("bm"),ye=ge("m"),_e=ge("bu"),we=ge("u"),xe=ge("bum"),ke=ge("um"),Se=ge("sp"),Ce=ge("rtg"),Ee=ge("rtc");function Oe(e,t=rn){ve("ec",e,t)}function Ne(e,t){const n=N;if(null===n)return e;const r=hn(n)||n.proxy,a=e.dirs||(e.dirs=[]);for(let e=0;e<t.length;e++){let[n,i,s,c=o.kT]=t[e];n&&((0,o.mf)(n)&&(n={mounted:n,updated:n}),n.deep&&q(i),a.push({dir:n,instance:r,value:i,oldValue:void 0,arg:s,modifiers:c}))}return e}function je(e,t,n,o){const a=e.dirs,s=t&&t.dirs;for(let c=0;c<a.length;c++){const l=a[c];s&&(l.oldValue=s[c].value);let u=l.dir[o];u&&((0,r.Jd)(),i(u,n,8,[e.el,l,e,t]),(0,r.lk)())}}const Le="components";function Ae(e,t){return Te(Le,e,!0,t)||e}const Me=Symbol();function Ie(e){return(0,o.HD)(e)?Te(Le,e,!1)||e:e||Me}function ze(e){return Te("directives",e)}function Te(e,t,n=!0,r=!1){const a=N||rn;if(a){const n=a.type;if(e===Le){const e=pn(n,!1);if(e&&(e===t||e===(0,o._A)(t)||e===(0,o.kC)((0,o._A)(t))))return n}const i=Re(a[e]||n[e],t)||Re(a.appContext[e],t);return!i&&r?n:i}}function Re(e,t){return e&&(e[t]||e[(0,o._A)(t)]||e[(0,o.kC)((0,o._A)(t))])}function $e(e,t,n,r){let a;const i=n&&n[r];if((0,o.kJ)(e)||(0,o.HD)(e)){a=new Array(e.length);for(let n=0,r=e.length;n<r;n++)a[n]=t(e[n],n,void 0,i&&i[n])}else if("number"==typeof e){a=new Array(e);for(let n=0;n<e;n++)a[n]=t(n+1,n,void 0,i&&i[n])}else if((0,o.Kn)(e))if(e[Symbol.iterator])a=Array.from(e,((e,n)=>t(e,n,void 0,i&&i[n])));else{const n=Object.keys(e);a=new Array(n.length);for(let r=0,o=n.length;r<o;r++){const o=n[r];a[r]=t(e[o],o,r,i&&i[r])}}else a=[];return n&&(n[r]=a),a}function Pe(e,t,n={},r,o){if(N.isCE||N.parent&&oe(N.parent)&&N.parent.isCE)return"default"!==t&&(n.name=t),Bt("slot",n,r&&r());let a=e[t];a&&a._c&&(a._d=!1),It();const i=a&&Fe(a(n)),s=Pt(Ot,{key:n.key||i&&i.key||`_${t}`},i||(r?r():[]),i&&1===e._?64:-2);return!o&&s.scopeId&&(s.slotScopeIds=[s.scopeId+"-s"]),a&&a._c&&(a._d=!0),s}function Fe(e){return e.some((e=>!Ft(e)||e.type!==jt&&!(e.type===Ot&&!Fe(e.children))))?e:null}function He(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:(0,o.hR)(r)]=e[r];return n}const De=e=>e?cn(e)?hn(e)||e.proxy:De(e.parent):null,Ve=(0,o.l7)(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>De(e.parent),$root:e=>De(e.root),$emit:e=>e.emit,$options:e=>Ge(e),$forceUpdate:e=>e.f||(e.f=()=>b(e.update)),$nextTick:e=>e.n||(e.n=g.bind(e.proxy)),$watch:e=>B.bind(e)}),Ue=(e,t)=>e!==o.kT&&!e.__isScriptSetup&&(0,o.RI)(e,t),We={get({_:e},t){const{ctx:n,setupState:a,data:i,props:s,accessCache:c,type:l,appContext:u}=e;let f;if("$"!==t[0]){const r=c[t];if(void 0!==r)switch(r){case 1:return a[t];case 2:return i[t];case 4:return n[t];case 3:return s[t]}else{if(Ue(a,t))return c[t]=1,a[t];if(i!==o.kT&&(0,o.RI)(i,t))return c[t]=2,i[t];if((f=e.propsOptions[0])&&(0,o.RI)(f,t))return c[t]=3,s[t];if(n!==o.kT&&(0,o.RI)(n,t))return c[t]=4,n[t];Be&&(c[t]=0)}}const h=Ve[t];let p,d;return h?("$attrs"===t&&(0,r.j)(e,"get",t),h(e)):(p=l.__cssModules)&&(p=p[t])?p:n!==o.kT&&(0,o.RI)(n,t)?(c[t]=4,n[t]):(d=u.config.globalProperties,(0,o.RI)(d,t)?d[t]:void 0)},set({_:e},t,n){const{data:r,setupState:a,ctx:i}=e;return Ue(a,t)?(a[t]=n,!0):r!==o.kT&&(0,o.RI)(r,t)?(r[t]=n,!0):!((0,o.RI)(e.props,t)||"$"===t[0]&&t.slice(1)in e||(i[t]=n,0))},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:a,propsOptions:i}},s){let c;return!!n[s]||e!==o.kT&&(0,o.RI)(e,s)||Ue(t,s)||(c=i[0])&&(0,o.RI)(c,s)||(0,o.RI)(r,s)||(0,o.RI)(Ve,s)||(0,o.RI)(a.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:(0,o.RI)(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let Be=!0;function Ye(e,t,n){i((0,o.kJ)(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function qe(e,t,n,r){const a=r.includes(".")?Y(n,r):()=>n[r];if((0,o.HD)(e)){const n=t[e];(0,o.mf)(n)&&U(a,n)}else if((0,o.mf)(e))U(a,e.bind(n));else if((0,o.Kn)(e))if((0,o.kJ)(e))e.forEach((e=>qe(e,t,n,r)));else{const r=(0,o.mf)(e.handler)?e.handler.bind(n):t[e.handler];(0,o.mf)(r)&&U(a,r,e)}}function Ge(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:a,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,c=i.get(t);let l;return c?l=c:a.length||n||r?(l={},a.length&&a.forEach((e=>Ze(l,e,s,!0))),Ze(l,t,s)):l=t,(0,o.Kn)(t)&&i.set(t,l),l}function Ze(e,t,n,r=!1){const{mixins:o,extends:a}=t;a&&Ze(e,a,n,!0),o&&o.forEach((t=>Ze(e,t,n,!0)));for(const o in t)if(r&&"expose"===o);else{const r=Xe[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}const Xe={data:Je,props:et,emits:et,methods:et,computed:et,beforeCreate:Qe,created:Qe,beforeMount:Qe,mounted:Qe,beforeUpdate:Qe,updated:Qe,beforeDestroy:Qe,beforeUnmount:Qe,destroyed:Qe,unmounted:Qe,activated:Qe,deactivated:Qe,errorCaptured:Qe,serverPrefetch:Qe,components:et,directives:et,watch:function(e,t){if(!e)return t;if(!t)return e;const n=(0,o.l7)(Object.create(null),e);for(const r in t)n[r]=Qe(e[r],t[r]);return n},provide:Je,inject:function(e,t){return et(Ke(e),Ke(t))}};function Je(e,t){return t?e?function(){return(0,o.l7)((0,o.mf)(e)?e.call(this,this):e,(0,o.mf)(t)?t.call(this,this):t)}:t:e}function Ke(e){if((0,o.kJ)(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function Qe(e,t){return e?[...new Set([].concat(e,t))]:t}function et(e,t){return e?(0,o.l7)((0,o.l7)(Object.create(null),e),t):t}function tt(e,t,n,a){const[i,s]=e.propsOptions;let c,l=!1;if(t)for(let r in t){if((0,o.Gg)(r))continue;const u=t[r];let f;i&&(0,o.RI)(i,f=(0,o._A)(r))?s&&s.includes(f)?(c||(c={}))[f]=u:n[f]=u:O(e.emitsOptions,r)||r in a&&u===a[r]||(a[r]=u,l=!0)}if(s){const t=(0,r.IU)(n),a=c||o.kT;for(let r=0;r<s.length;r++){const c=s[r];n[c]=nt(i,t,c,a[c],e,!(0,o.RI)(a,c))}}return l}function nt(e,t,n,r,a,i){const s=e[n];if(null!=s){const e=(0,o.RI)(s,"default");if(e&&void 0===r){const e=s.default;if(s.type!==Function&&(0,o.mf)(e)){const{propsDefaults:o}=a;n in o?r=o[n]:(an(a),r=o[n]=e.call(null,t),sn())}else r=e}s[0]&&(i&&!e?r=!1:!s[1]||""!==r&&r!==(0,o.rs)(n)||(r=!0))}return r}function rt(e,t,n=!1){const r=t.propsCache,a=r.get(e);if(a)return a;const i=e.props,s={},c=[];let l=!1;if(!(0,o.mf)(e)){const r=e=>{l=!0;const[n,r]=rt(e,t,!0);(0,o.l7)(s,n),r&&c.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!i&&!l)return(0,o.Kn)(e)&&r.set(e,o.Z6),o.Z6;if((0,o.kJ)(i))for(let e=0;e<i.length;e++){const t=(0,o._A)(i[e]);ot(t)&&(s[t]=o.kT)}else if(i)for(const e in i){const t=(0,o._A)(e);if(ot(t)){const n=i[e],r=s[t]=(0,o.kJ)(n)||(0,o.mf)(n)?{type:n}:Object.assign({},n);if(r){const e=st(Boolean,r.type),n=st(String,r.type);r[0]=e>-1,r[1]=n<0||e<n,(e>-1||(0,o.RI)(r,"default"))&&c.push(t)}}}const u=[s,c];return(0,o.Kn)(e)&&r.set(e,u),u}function ot(e){return"$"!==e[0]}function at(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:null===e?"null":""}function it(e,t){return at(e)===at(t)}function st(e,t){return(0,o.kJ)(t)?t.findIndex((t=>it(t,e))):(0,o.mf)(t)&&it(t,e)?0:-1}const ct=e=>"_"===e[0]||"$stable"===e,lt=e=>(0,o.kJ)(e)?e.map(Xt):[Xt(e)],ut=(e,t,n)=>{if(t._n)return t;const r=z(((...e)=>lt(t(...e))),n);return r._c=!1,r},ft=(e,t,n)=>{const r=e._ctx;for(const n in e){if(ct(n))continue;const a=e[n];if((0,o.mf)(a))t[n]=ut(0,a,r);else if(null!=a){const e=lt(a);t[n]=()=>e}}},ht=(e,t)=>{const n=lt(t);e.slots.default=()=>n};function pt(){return{app:null,config:{isNativeTag:o.NO,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let dt=0;function mt(e,t){return function(n,r=null){(0,o.mf)(n)||(n=Object.assign({},n)),null==r||(0,o.Kn)(r)||(r=null);const a=pt(),i=new Set;let s=!1;const c=a.app={_uid:dt++,_component:n,_props:r,_container:null,_context:a,_instance:null,version:bn,get config(){return a.config},set config(e){},use:(e,...t)=>(i.has(e)||(e&&(0,o.mf)(e.install)?(i.add(e),e.install(c,...t)):(0,o.mf)(e)&&(i.add(e),e(c,...t))),c),mixin:e=>(a.mixins.includes(e)||a.mixins.push(e),c),component:(e,t)=>t?(a.components[e]=t,c):a.components[e],directive:(e,t)=>t?(a.directives[e]=t,c):a.directives[e],mount(o,i,l){if(!s){const u=Bt(n,r);return u.appContext=a,i&&t?t(u,o):e(u,o,l),s=!0,c._container=o,o.__vue_app__=c,hn(u.component)||u.component.proxy}},unmount(){s&&(e(null,c._container),delete c._container.__vue_app__)},provide:(e,t)=>(a.provides[e]=t,c)};return c}}function vt(e,t,n,i,s=!1){if((0,o.kJ)(e))return void e.forEach(((e,r)=>vt(e,t&&((0,o.kJ)(t)?t[r]:t),n,i,s)));if(oe(i)&&!s)return;const c=4&i.shapeFlag?hn(i.component)||i.component.proxy:i.el,l=s?null:c,{i:u,r:f}=e,h=t&&t.r,p=u.refs===o.kT?u.refs={}:u.refs,d=u.setupState;if(null!=h&&h!==f&&((0,o.HD)(h)?(p[h]=null,(0,o.RI)(d,h)&&(d[h]=null)):(0,r.dq)(h)&&(h.value=null)),(0,o.mf)(f))a(f,u,12,[l,p]);else{const t=(0,o.HD)(f),a=(0,r.dq)(f);if(t||a){const r=()=>{if(e.f){const n=t?(0,o.RI)(d,f)?d[f]:p[f]:f.value;s?(0,o.kJ)(n)&&(0,o.Od)(n,c):(0,o.kJ)(n)?n.includes(c)||n.push(c):t?(p[f]=[c],(0,o.RI)(d,f)&&(d[f]=p[f])):(f.value=[c],e.k&&(p[e.k]=f.value))}else t?(p[f]=l,(0,o.RI)(d,f)&&(d[f]=l)):a&&(f.value=l,e.k&&(p[e.k]=l))};l?(r.id=-1,gt(r,n)):r()}}}const gt=function(e,t){var n;t&&t.pendingBranch?(0,o.kJ)(e)?t.effects.push(...e):t.effects.push(e):(n=e,(0,o.kJ)(n)?h.push(...n):p&&p.includes(n,n.allowRecurse?d+1:d)||h.push(n),y())};function bt(e){return function(e,t){(0,o.E9)().__VUE__=!0;const{insert:n,remove:i,patchProp:c,createElement:l,createText:h,createComment:p,setText:d,setElementText:m,parentNode:v,nextSibling:g,setScopeId:y=o.dG,insertStaticContent:x}=e,k=(e,t,n,r=null,o=null,a=null,i=!1,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!Ht(e,t)&&(r=te(e),X(e,o,a,!0),e=null),-2===t.patchFlag&&(c=!1,t.dynamicChildren=null);const{type:l,ref:u,shapeFlag:f}=t;switch(l){case Nt:S(e,t,n,r);break;case jt:N(e,t,n,r);break;case Lt:null==e&&j(t,n,r,i);break;case Ot:H(e,t,n,r,o,a,i,s,c);break;default:1&f?A(e,t,n,r,o,a,i,s,c):6&f?D(e,t,n,r,o,a,i,s,c):(64&f||128&f)&&l.process(e,t,n,r,o,a,i,s,c,re)}null!=u&&o&&vt(u,e&&e.ref,a,t||e,!t)},S=(e,t,r,o)=>{if(null==e)n(t.el=h(t.children),r,o);else{const n=t.el=e.el;t.children!==e.children&&d(n,t.children)}},N=(e,t,r,o)=>{null==e?n(t.el=p(t.children||""),r,o):t.el=e.el},j=(e,t,n,r)=>{[e.el,e.anchor]=x(e.children,t,n,r,e.el,e.anchor)},L=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=g(e),i(e),e=n;i(t)},A=(e,t,n,r,o,a,i,s,c)=>{i=i||"svg"===t.type,null==e?M(t,n,r,o,a,i,s,c):R(e,t,o,a,i,s,c)},M=(e,t,r,a,i,s,u,f)=>{let h,p;const{type:d,props:v,shapeFlag:g,transition:b,dirs:y}=e;if(h=e.el=l(e.type,s,v&&v.is,v),8&g?m(h,e.children):16&g&&z(e.children,h,null,a,i,s&&"foreignObject"!==d,u,f),y&&je(e,null,a,"created"),v){for(const t in v)"value"===t||(0,o.Gg)(t)||c(h,t,null,v[t],s,e.children,a,i,ee);"value"in v&&c(h,"value",null,v.value),(p=v.onVnodeBeforeMount)&&en(p,a,e)}I(h,e,e.scopeId,u,a),y&&je(e,null,a,"beforeMount");const _=(!i||i&&!i.pendingBranch)&&b&&!b.persisted;_&&b.beforeEnter(h),n(h,t,r),((p=v&&v.onVnodeMounted)||_||y)&&gt((()=>{p&&en(p,a,e),_&&b.enter(h),y&&je(e,null,a,"mounted")}),i)},I=(e,t,n,r,o)=>{if(n&&y(e,n),r)for(let t=0;t<r.length;t++)y(e,r[t]);if(o&&t===o.subTree){const t=o.vnode;I(e,t,t.scopeId,t.slotScopeIds,o.parent)}},z=(e,t,n,r,o,a,i,s,c=0)=>{for(let l=c;l<e.length;l++){const c=e[l]=s?Jt(e[l]):Xt(e[l]);k(null,c,t,n,r,o,a,i,s)}},R=(e,t,n,r,a,i,s)=>{const l=t.el=e.el;let{patchFlag:u,dynamicChildren:f,dirs:h}=t;u|=16&e.patchFlag;const p=e.props||o.kT,d=t.props||o.kT;let v;n&&yt(n,!1),(v=d.onVnodeBeforeUpdate)&&en(v,n,t,e),h&&je(t,e,n,"beforeUpdate"),n&&yt(n,!0);const g=a&&"foreignObject"!==t.type;if(f?$(e.dynamicChildren,f,l,n,r,g,i):s||Y(e,t,l,null,n,r,g,i,!1),u>0){if(16&u)F(l,t,p,d,n,r,a);else if(2&u&&p.class!==d.class&&c(l,"class",null,d.class,a),4&u&&c(l,"style",p.style,d.style,a),8&u){const o=t.dynamicProps;for(let t=0;t<o.length;t++){const i=o[t],s=p[i],u=d[i];u===s&&"value"!==i||c(l,i,s,u,a,e.children,n,r,ee)}}1&u&&e.children!==t.children&&m(l,t.children)}else s||null!=f||F(l,t,p,d,n,r,a);((v=d.onVnodeUpdated)||h)&&gt((()=>{v&&en(v,n,t,e),h&&je(t,e,n,"updated")}),r)},$=(e,t,n,r,o,a,i)=>{for(let s=0;s<t.length;s++){const c=e[s],l=t[s],u=c.el&&(c.type===Ot||!Ht(c,l)||70&c.shapeFlag)?v(c.el):n;k(c,l,u,null,r,o,a,i,!0)}},F=(e,t,n,r,a,i,s)=>{if(n!==r){if(n!==o.kT)for(const l in n)(0,o.Gg)(l)||l in r||c(e,l,n[l],null,s,t.children,a,i,ee);for(const l in r){if((0,o.Gg)(l))continue;const u=r[l],f=n[l];u!==f&&"value"!==l&&c(e,l,f,u,s,t.children,a,i,ee)}"value"in r&&c(e,"value",n.value,r.value)}},H=(e,t,r,o,a,i,s,c,l)=>{const u=t.el=e?e.el:h(""),f=t.anchor=e?e.anchor:h("");let{patchFlag:p,dynamicChildren:d,slotScopeIds:m}=t;m&&(c=c?c.concat(m):m),null==e?(n(u,r,o),n(f,r,o),z(t.children,r,f,a,i,s,c,l)):p>0&&64&p&&d&&e.dynamicChildren?($(e.dynamicChildren,d,r,a,i,s,c),(null!=t.key||a&&t===a.subTree)&&_t(e,t,!0)):Y(e,t,r,f,a,i,s,c,l)},D=(e,t,n,r,o,a,i,s,c)=>{t.slotScopeIds=s,null==e?512&t.shapeFlag?o.ctx.activate(t,n,r,i,c):V(t,n,r,o,a,i,c):U(e,t,c)},V=(e,t,n,i,c,l,u)=>{const f=e.component=function(e,t,n){const a=e.type,i=(t?t.appContext:e.appContext)||tn,s={uid:nn++,vnode:e,type:a,parent:t,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,scope:new r.Bj(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(i.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:rt(a,i),emitsOptions:E(a,i),emit:null,emitted:null,propsDefaults:o.kT,inheritAttrs:a.inheritAttrs,ctx:o.kT,data:o.kT,props:o.kT,attrs:o.kT,slots:o.kT,refs:o.kT,setupState:o.kT,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return s.ctx={_:s},s.root=t?t.root:s,s.emit=C.bind(null,s),e.ce&&e.ce(s),s}(e,i,c);if(se(e)&&(f.ctx.renderer=re),function(e,t=!1){ln=t;const{props:n,children:i}=e.vnode,c=cn(e);!function(e,t,n,a=!1){const i={},s={};(0,o.Nj)(s,Dt,1),e.propsDefaults=Object.create(null),tt(e,t,i,s);for(const t in e.propsOptions[0])t in i||(i[t]=void 0);n?e.props=a?i:(0,r.Um)(i):e.type.props?e.props=i:e.props=s,e.attrs=s}(e,n,c,t),((e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=(0,r.IU)(t),(0,o.Nj)(t,"_",n)):ft(t,e.slots={})}else e.slots={},t&&ht(e,t);(0,o.Nj)(e.slots,Dt,1)})(e,i);const l=c?function(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=(0,r.Xl)(new Proxy(e.ctx,We));const{setup:i}=n;if(i){const n=e.setupContext=i.length>1?function(e){const t=t=>{e.exposed=t||{}};let n;return{get attrs(){return n||(n=function(e){return new Proxy(e.attrs,{get:(t,n)=>((0,r.j)(e,"get","$attrs"),t[n])})}(e))},slots:e.slots,emit:e.emit,expose:t}}(e):null;an(e),(0,r.Jd)();const c=a(i,e,0,[e.props,n]);if((0,r.lk)(),sn(),(0,o.tI)(c)){if(c.then(sn,sn),t)return c.then((n=>{un(e,n,t)})).catch((t=>{s(t,e,0)}));e.asyncDep=c}else un(e,c,t)}else fn(e,t)}(e,t):void 0;ln=!1}(f),f.asyncDep){if(c&&c.registerDep(f,W),!e.el){const e=f.subTree=Bt(jt);N(null,e,t,n)}}else W(f,e,t,n,c,l,u)},U=(e,t,n)=>{const r=t.component=e.component;if(function(e,t,n){const{props:r,children:o,component:a}=e,{props:i,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&c>=0))return!(!o&&!s||s&&s.$stable)||r!==i&&(r?!i||P(r,i,l):!!i);if(1024&c)return!0;if(16&c)return r?P(r,i,l):!!i;if(8&c){const e=t.dynamicProps;for(let t=0;t<e.length;t++){const n=e[t];if(i[n]!==r[n]&&!O(l,n))return!0}}return!1}(e,t,n)){if(r.asyncDep&&!r.asyncResolved)return void B(r,t,n);r.next=t,function(e){const t=u.indexOf(e);t>f&&u.splice(t,1)}(r.update),r.update()}else t.el=e.el,r.vnode=t},W=(e,t,n,a,i,s,c)=>{const l=e.effect=new r.qq((()=>{if(e.isMounted){let t,{next:n,bu:r,u:a,parent:l,vnode:u}=e,f=n;yt(e,!1),n?(n.el=u.el,B(e,n,c)):n=u,r&&(0,o.ir)(r),(t=n.props&&n.props.onVnodeBeforeUpdate)&&en(t,l,n,u),yt(e,!0);const h=T(e),p=e.subTree;e.subTree=h,k(p,h,v(p.el),te(p),e,i,s),n.el=h.el,null===f&&function({vnode:e,parent:t},n){for(;t&&t.subTree===e;)(e=t.vnode).el=n,t=t.parent}(e,h.el),a&&gt(a,i),(t=n.props&&n.props.onVnodeUpdated)&&gt((()=>en(t,l,n,u)),i)}else{let r;const{el:c,props:l}=t,{bm:u,m:f,parent:h}=e,p=oe(t);if(yt(e,!1),u&&(0,o.ir)(u),!p&&(r=l&&l.onVnodeBeforeMount)&&en(r,h,t),yt(e,!0),c&&ie){const n=()=>{e.subTree=T(e),ie(c,e.subTree,e,i,null)};p?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{const r=e.subTree=T(e);k(null,r,n,a,e,i,s),t.el=r.el}if(f&&gt(f,i),!p&&(r=l&&l.onVnodeMounted)){const e=t;gt((()=>en(r,h,e)),i)}(256&t.shapeFlag||h&&oe(h.vnode)&&256&h.vnode.shapeFlag)&&e.a&&gt(e.a,i),e.isMounted=!0,t=n=a=null}}),(()=>b(u)),e.scope),u=e.update=()=>l.run();u.id=e.uid,yt(e,!0),u()},B=(e,t,n)=>{t.component=e;const a=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,a){const{props:i,attrs:s,vnode:{patchFlag:c}}=e,l=(0,r.IU)(i),[u]=e.propsOptions;let f=!1;if(!(a||c>0)||16&c){let r;tt(e,t,i,s)&&(f=!0);for(const a in l)t&&((0,o.RI)(t,a)||(r=(0,o.rs)(a))!==a&&(0,o.RI)(t,r))||(u?!n||void 0===n[a]&&void 0===n[r]||(i[a]=nt(u,l,a,void 0,e,!0)):delete i[a]);if(s!==l)for(const e in s)t&&(0,o.RI)(t,e)||(delete s[e],f=!0)}else if(8&c){const n=e.vnode.dynamicProps;for(let r=0;r<n.length;r++){let a=n[r];if(O(e.emitsOptions,a))continue;const c=t[a];if(u)if((0,o.RI)(s,a))c!==s[a]&&(s[a]=c,f=!0);else{const t=(0,o._A)(a);i[t]=nt(u,l,t,c,e,!1)}else c!==s[a]&&(s[a]=c,f=!0)}}f&&(0,r.X$)(e,"set","$attrs")}(e,t.props,a,n),((e,t,n)=>{const{vnode:r,slots:a}=e;let i=!0,s=o.kT;if(32&r.shapeFlag){const e=t._;e?n&&1===e?i=!1:((0,o.l7)(a,t),n||1!==e||delete a._):(i=!t.$stable,ft(t,a)),s=t}else t&&(ht(e,t),s={default:1});if(i)for(const e in a)ct(e)||e in s||delete a[e]})(e,t.children,n),(0,r.Jd)(),_(),(0,r.lk)()},Y=(e,t,n,r,o,a,i,s,c=!1)=>{const l=e&&e.children,u=e?e.shapeFlag:0,f=t.children,{patchFlag:h,shapeFlag:p}=t;if(h>0){if(128&h)return void G(l,f,n,r,o,a,i,s,c);if(256&h)return void q(l,f,n,r,o,a,i,s,c)}8&p?(16&u&&ee(l,o,a),f!==l&&m(n,f)):16&u?16&p?G(l,f,n,r,o,a,i,s,c):ee(l,o,a,!0):(8&u&&m(n,""),16&p&&z(f,n,r,o,a,i,s,c))},q=(e,t,n,r,a,i,s,c,l)=>{e=e||o.Z6,t=t||o.Z6;const u=e.length,f=t.length,h=Math.min(u,f);let p;for(p=0;p<h;p++){const r=t[p]=l?Jt(t[p]):Xt(t[p]);k(e[p],r,n,null,a,i,s,c,l)}u>f?ee(e,a,i,!0,!1,h):z(t,n,r,a,i,s,c,l,h)},G=(e,t,n,r,a,i,s,c,l)=>{let u=0;const f=t.length;let h=e.length-1,p=f-1;for(;u<=h&&u<=p;){const r=e[u],o=t[u]=l?Jt(t[u]):Xt(t[u]);if(!Ht(r,o))break;k(r,o,n,null,a,i,s,c,l),u++}for(;u<=h&&u<=p;){const r=e[h],o=t[p]=l?Jt(t[p]):Xt(t[p]);if(!Ht(r,o))break;k(r,o,n,null,a,i,s,c,l),h--,p--}if(u>h){if(u<=p){const e=p+1,o=e<f?t[e].el:r;for(;u<=p;)k(null,t[u]=l?Jt(t[u]):Xt(t[u]),n,o,a,i,s,c,l),u++}}else if(u>p)for(;u<=h;)X(e[u],a,i,!0),u++;else{const d=u,m=u,v=new Map;for(u=m;u<=p;u++){const e=t[u]=l?Jt(t[u]):Xt(t[u]);null!=e.key&&v.set(e.key,u)}let g,b=0;const y=p-m+1;let _=!1,w=0;const x=new Array(y);for(u=0;u<y;u++)x[u]=0;for(u=d;u<=h;u++){const r=e[u];if(b>=y){X(r,a,i,!0);continue}let o;if(null!=r.key)o=v.get(r.key);else for(g=m;g<=p;g++)if(0===x[g-m]&&Ht(r,t[g])){o=g;break}void 0===o?X(r,a,i,!0):(x[o-m]=u+1,o>=w?w=o:_=!0,k(r,t[o],n,null,a,i,s,c,l),b++)}const S=_?function(e){const t=e.slice(),n=[0];let r,o,a,i,s;const c=e.length;for(r=0;r<c;r++){const c=e[r];if(0!==c){if(o=n[n.length-1],e[o]<c){t[r]=o,n.push(r);continue}for(a=0,i=n.length-1;a<i;)s=a+i>>1,e[n[s]]<c?a=s+1:i=s;c<e[n[a]]&&(a>0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,i=n[a-1];a-- >0;)n[a]=i,i=t[i];return n}(x):o.Z6;for(g=S.length-1,u=y-1;u>=0;u--){const e=m+u,o=t[e],h=e+1<f?t[e+1].el:r;0===x[u]?k(null,o,n,h,a,i,s,c,l):_&&(g<0||u!==S[g]?Z(o,n,h,2):g--)}}},Z=(e,t,r,o,a=null)=>{const{el:i,type:s,transition:c,children:l,shapeFlag:u}=e;if(6&u)Z(e.component.subTree,t,r,o);else if(128&u)e.suspense.move(t,r,o);else if(64&u)s.move(e,t,r,re);else if(s!==Ot)if(s!==Lt)if(2!==o&&1&u&&c)if(0===o)c.beforeEnter(i),n(i,t,r),gt((()=>c.enter(i)),a);else{const{leave:e,delayLeave:o,afterLeave:a}=c,s=()=>n(i,t,r),l=()=>{e(i,(()=>{s(),a&&a()}))};o?o(i,s,l):l()}else n(i,t,r);else(({el:e,anchor:t},r,o)=>{let a;for(;e&&e!==t;)a=g(e),n(e,r,o),e=a;n(t,r,o)})(e,t,r);else{n(i,t,r);for(let e=0;e<l.length;e++)Z(l[e],t,r,o);n(e.anchor,t,r)}},X=(e,t,n,r=!1,o=!1)=>{const{type:a,props:i,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:f,dirs:h}=e;if(null!=s&&vt(s,null,n,e,!0),256&u)return void t.ctx.deactivate(e);const p=1&u&&h,d=!oe(e);let m;if(d&&(m=i&&i.onVnodeBeforeUnmount)&&en(m,t,e),6&u)Q(e.component,n,r);else{if(128&u)return void e.suspense.unmount(n,r);p&&je(e,null,t,"beforeUnmount"),64&u?e.type.remove(e,t,n,o,re,r):l&&(a!==Ot||f>0&&64&f)?ee(l,t,n,!1,!0):(a===Ot&&384&f||!o&&16&u)&&ee(c,t,n),r&&J(e)}(d&&(m=i&&i.onVnodeUnmounted)||p)&&gt((()=>{m&&en(m,t,e),p&&je(e,null,t,"unmounted")}),n)},J=e=>{const{type:t,el:n,anchor:r,transition:o}=e;if(t===Ot)return void K(n,r);if(t===Lt)return void L(e);const a=()=>{i(n),o&&!o.persisted&&o.afterLeave&&o.afterLeave()};if(1&e.shapeFlag&&o&&!o.persisted){const{leave:t,delayLeave:r}=o,i=()=>t(n,a);r?r(e.el,a,i):i()}else a()},K=(e,t)=>{let n;for(;e!==t;)n=g(e),i(e),e=n;i(t)},Q=(e,t,n)=>{const{bum:r,scope:a,update:i,subTree:s,um:c}=e;r&&(0,o.ir)(r),a.stop(),i&&(i.active=!1,X(s,e,t,n)),c&&gt(c,t),gt((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},ee=(e,t,n,r=!1,o=!1,a=0)=>{for(let i=a;i<e.length;i++)X(e[i],t,n,r,o)},te=e=>6&e.shapeFlag?te(e.component.subTree):128&e.shapeFlag?e.suspense.next():g(e.anchor||e.el),ne=(e,t,n)=>{null==e?t._vnode&&X(t._vnode,null,null,!0):k(t._vnode||null,e,t,null,null,null,n),_(),w(),t._vnode=e},re={p:k,um:X,m:Z,r:J,mt:V,mc:z,pc:Y,pbc:$,n:te,o:e};let ae,ie;return t&&([ae,ie]=t(re)),{render:ne,hydrate:ae,createApp:mt(ne,ae)}}(e)}function yt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function _t(e,t,n=!1){const r=e.children,a=t.children;if((0,o.kJ)(r)&&(0,o.kJ)(a))for(let e=0;e<r.length;e++){const t=r[e];let o=a[e];1&o.shapeFlag&&!o.dynamicChildren&&((o.patchFlag<=0||32===o.patchFlag)&&(o=a[e]=Jt(a[e]),o.el=t.el),n||_t(t,o)),o.type===Nt&&(o.el=t.el)}}const wt=e=>e&&(e.disabled||""===e.disabled),xt=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,kt=(e,t)=>{const n=e&&e.to;if((0,o.HD)(n)){if(t){return t(n)}return null}return n};function St(e,t,n,{o:{insert:r},m:o},a=2){0===a&&r(e.targetAnchor,t,n);const{el:i,anchor:s,shapeFlag:c,children:l,props:u}=e,f=2===a;if(f&&r(i,t,n),(!f||wt(u))&&16&c)for(let e=0;e<l.length;e++)o(l[e],t,n,2);f&&r(s,t,n)}const Ct={__isTeleport:!0,process(e,t,n,r,o,a,i,s,c,l){const{mc:u,pc:f,pbc:h,o:{insert:p,querySelector:d,createText:m,createComment:v}}=l,g=wt(t.props);let{shapeFlag:b,children:y,dynamicChildren:_}=t;if(null==e){const e=t.el=m(""),l=t.anchor=m("");p(e,n,r),p(l,n,r);const f=t.target=kt(t.props,d),h=t.targetAnchor=m("");f&&(p(h,f),i=i||xt(f));const v=(e,t)=>{16&b&&u(y,e,t,o,a,i,s,c)};g?v(n,l):f&&v(f,h)}else{t.el=e.el;const r=t.anchor=e.anchor,u=t.target=e.target,p=t.targetAnchor=e.targetAnchor,m=wt(e.props),v=m?n:u,b=m?r:p;if(i=i||xt(u),_?(h(e.dynamicChildren,_,v,o,a,i,s),_t(e,t,!0)):c||f(e,t,v,b,o,a,i,s,!1),g)m||St(t,n,r,l,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const e=t.target=kt(t.props,d);e&&St(t,e,null,l,0)}else m&&St(t,u,p,l,1)}Et(t)},remove(e,t,n,r,{um:o,o:{remove:a}},i){const{shapeFlag:s,children:c,anchor:l,targetAnchor:u,target:f,props:h}=e;if(f&&a(u),(i||!wt(h))&&(a(l),16&s))for(let e=0;e<c.length;e++){const r=c[e];o(r,t,n,!0,!!r.dynamicChildren)}},move:St,hydrate:function(e,t,n,r,o,a,{o:{nextSibling:i,parentNode:s,querySelector:c}},l){const u=t.target=kt(t.props,c);if(u){const c=u._lpa||u.firstChild;if(16&t.shapeFlag)if(wt(t.props))t.anchor=l(i(e),t,s(e),n,r,o,a),t.targetAnchor=c;else{t.anchor=i(e);let s=c;for(;s;)if(s=i(s),s&&8===s.nodeType&&"teleport anchor"===s.data){t.targetAnchor=s,u._lpa=t.targetAnchor&&i(t.targetAnchor);break}l(c,t,u,n,r,o,a)}Et(t)}return t.anchor&&i(t.anchor)}};function Et(e){const t=e.ctx;if(t&&t.ut){let n=e.children[0].el;for(;n!==e.targetAnchor;)1===n.nodeType&&n.setAttribute("data-v-owner",t.uid),n=n.nextSibling;t.ut()}}const Ot=Symbol(void 0),Nt=Symbol(void 0),jt=Symbol(void 0),Lt=Symbol(void 0),At=[];let Mt=null;function It(e=!1){At.push(Mt=e?null:[])}let zt=1;function Tt(e){zt+=e}function Rt(e){return e.dynamicChildren=zt>0?Mt||o.Z6:null,At.pop(),Mt=At[At.length-1]||null,zt>0&&Mt&&Mt.push(e),e}function $t(e,t,n,r,o,a){return Rt(Wt(e,t,n,r,o,a,!0))}function Pt(e,t,n,r,o){return Rt(Bt(e,t,n,r,o,!0))}function Ft(e){return!!e&&!0===e.__v_isVNode}function Ht(e,t){return e.type===t.type&&e.key===t.key}const Dt="__vInternal",Vt=({key:e})=>null!=e?e:null,Ut=({ref:e,ref_key:t,ref_for:n})=>null!=e?(0,o.HD)(e)||(0,r.dq)(e)||(0,o.mf)(e)?{i:N,r:e,k:t,f:!!n}:e:null;function Wt(e,t=null,n=null,r=0,a=null,i=(e===Ot?0:1),s=!1,c=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Vt(t),ref:t&&Ut(t),scopeId:j,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:N};return c?(Kt(l,n),128&i&&e.normalize(l)):n&&(l.shapeFlag|=(0,o.HD)(n)?8:16),zt>0&&!s&&Mt&&(l.patchFlag>0||6&i)&&32!==l.patchFlag&&Mt.push(l),l}const Bt=function(e,t=null,n=null,a=0,i=null,s=!1){if(e&&e!==Me||(e=jt),Ft(e)){const r=qt(e,t,!0);return n&&Kt(r,n),zt>0&&!s&&Mt&&(6&r.shapeFlag?Mt[Mt.indexOf(e)]=r:Mt.push(r)),r.patchFlag|=-2,r}if(c=e,(0,o.mf)(c)&&"__vccOpts"in c&&(e=e.__vccOpts),t){t=Yt(t);let{class:e,style:n}=t;e&&!(0,o.HD)(e)&&(t.class=(0,o.C_)(e)),(0,o.Kn)(n)&&((0,r.X3)(n)&&!(0,o.kJ)(n)&&(n=(0,o.l7)({},n)),t.style=(0,o.j5)(n))}var c;return Wt(e,t,n,a,i,(0,o.HD)(e)?1:F(e)?128:(e=>e.__isTeleport)(e)?64:(0,o.Kn)(e)?4:(0,o.mf)(e)?2:0,s,!0)};function Yt(e){return e?(0,r.X3)(e)||Dt in e?(0,o.l7)({},e):e:null}function qt(e,t,n=!1){const{props:r,ref:a,patchFlag:i,children:s}=e,c=t?Qt(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&Vt(c),ref:t&&t.ref?n&&a?(0,o.kJ)(a)?a.concat(Ut(t)):[a,Ut(t)]:Ut(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ot?-1===i?16:16|i:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&qt(e.ssContent),ssFallback:e.ssFallback&&qt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function Gt(e=" ",t=0){return Bt(Nt,null,e,t)}function Zt(e="",t=!1){return t?(It(),Pt(jt,null,e)):Bt(jt,null,e)}function Xt(e){return null==e||"boolean"==typeof e?Bt(jt):(0,o.kJ)(e)?Bt(Ot,null,e.slice()):"object"==typeof e?Jt(e):Bt(Nt,null,String(e))}function Jt(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:qt(e)}function Kt(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if((0,o.kJ)(t))n=16;else if("object"==typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),Kt(e,n()),n._c&&(n._d=!0)))}{n=32;const r=t._;r||Dt in t?3===r&&N&&(1===N.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=N}}else(0,o.mf)(t)?(t={default:t,_ctx:N},n=32):(t=String(t),64&r?(n=16,t=[Gt(t)]):n=8);e.children=t,e.shapeFlag|=n}function Qt(...e){const t={};for(let n=0;n<e.length;n++){const r=e[n];for(const e in r)if("class"===e)t.class!==r.class&&(t.class=(0,o.C_)([t.class,r.class]));else if("style"===e)t.style=(0,o.j5)([t.style,r.style]);else if((0,o.F7)(e)){const n=t[e],a=r[e];!a||n===a||(0,o.kJ)(n)&&n.includes(a)||(t[e]=n?[].concat(n,a):a)}else""!==e&&(t[e]=r[e])}return t}function en(e,t,n,r=null){i(e,t,7,[n,r])}const tn=pt();let nn=0;let rn=null;const on=()=>rn||N,an=e=>{rn=e,e.scope.on()},sn=()=>{rn&&rn.scope.off(),rn=null};function cn(e){return 4&e.vnode.shapeFlag}let ln=!1;function un(e,t,n){(0,o.mf)(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:(0,o.Kn)(t)&&(e.setupState=(0,r.WL)(t)),fn(e,n)}function fn(e,t,n){const a=e.type;e.render||(e.render=a.render||o.dG),an(e),(0,r.Jd)(),function(e){const t=Ge(e),n=e.proxy,a=e.ctx;Be=!1,t.beforeCreate&&Ye(t.beforeCreate,e,"bc");const{data:i,computed:s,methods:c,watch:l,provide:u,inject:f,created:h,beforeMount:p,mounted:d,beforeUpdate:m,updated:v,activated:g,deactivated:b,beforeDestroy:y,beforeUnmount:_,destroyed:w,unmounted:x,render:k,renderTracked:S,renderTriggered:C,errorCaptured:E,serverPrefetch:O,expose:N,inheritAttrs:j,components:L,directives:A,filters:M}=t;if(f&&function(e,t,n=o.dG,a=!1){(0,o.kJ)(e)&&(e=Ke(e));for(const n in e){const i=e[n];let s;s=(0,o.Kn)(i)?"default"in i?D(i.from||n,i.default,!0):D(i.from||n):D(i),(0,r.dq)(s)&&a?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e}):t[n]=s}}(f,a,null,e.appContext.config.unwrapInjectedRef),c)for(const e in c){const t=c[e];(0,o.mf)(t)&&(a[e]=t.bind(n))}if(i){const t=i.call(n,n);(0,o.Kn)(t)&&(e.data=(0,r.qj)(t))}if(Be=!0,s)for(const e in s){const t=s[e],r=(0,o.mf)(t)?t.bind(n,n):(0,o.mf)(t.get)?t.get.bind(n,n):o.dG,i=!(0,o.mf)(t)&&(0,o.mf)(t.set)?t.set.bind(n):o.dG,c=dn({get:r,set:i});Object.defineProperty(a,e,{enumerable:!0,configurable:!0,get:()=>c.value,set:e=>c.value=e})}if(l)for(const e in l)qe(l[e],a,n,e);if(u){const e=(0,o.mf)(u)?u.call(n):u;Reflect.ownKeys(e).forEach((t=>{H(t,e[t])}))}function I(e,t){(0,o.kJ)(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(h&&Ye(h,e,"c"),I(be,p),I(ye,d),I(_e,m),I(we,v),I(ue,g),I(fe,b),I(Oe,E),I(Ee,S),I(Ce,C),I(xe,_),I(ke,x),I(Se,O),(0,o.kJ)(N))if(N.length){const t=e.exposed||(e.exposed={});N.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});k&&e.render===o.dG&&(e.render=k),null!=j&&(e.inheritAttrs=j),L&&(e.components=L),A&&(e.directives=A)}(e),(0,r.lk)(),sn()}function hn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy((0,r.WL)((0,r.Xl)(e.exposed)),{get:(t,n)=>n in t?t[n]:n in Ve?Ve[n](e):void 0,has:(e,t)=>t in e||t in Ve}))}function pn(e,t=!0){return(0,o.mf)(e)?e.displayName||e.name:e.name||t&&e.__name}const dn=(e,t)=>(0,r.Fl)(e,t,ln);function mn(e,t,n){const r=arguments.length;return 2===r?(0,o.Kn)(t)&&!(0,o.kJ)(t)?Ft(t)?Bt(e,null,[t]):Bt(e,t):Bt(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&Ft(n)&&(n=[n]),Bt(e,t,n))}const vn=Symbol(""),gn=()=>D(vn),bn="3.2.45"},49963:(e,t,n)=>{"use strict";n.d(t,{D2:()=>Z,F8:()=>X,YZ:()=>U,e8:()=>R,iM:()=>q,nr:()=>T,ri:()=>ee,uT:()=>_});var r=n(3577),o=n(66252);n(2262);const a="undefined"!=typeof document?document:null,i=a&&a.createElement("template"),s={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?a.createElementNS("http://www.w3.org/2000/svg",e):a.createElement(e,n?{is:n}:void 0);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>a.createTextNode(e),createComment:e=>a.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>a.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,a){const s=n?n.previousSibling:t.lastChild;if(o&&(o===a||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),o!==a&&(o=o.nextSibling););else{i.innerHTML=r?`<svg>${e}</svg>`:e;const o=i.content;if(r){const e=o.firstChild;for(;e.firstChild;)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},c=/\s*!important$/;function l(e,t,n){if((0,r.kJ)(n))n.forEach((n=>l(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=function(e,t){const n=f[t];if(n)return n;let o=(0,r._A)(t);if("filter"!==o&&o in e)return f[t]=o;o=(0,r.kC)(o);for(let n=0;n<u.length;n++){const r=u[n]+o;if(r in e)return f[t]=r}return t}(e,t);c.test(n)?e.setProperty((0,r.rs)(o),n.replace(c,""),"important"):e[o]=n}}const u=["Webkit","Moz","ms"],f={},h="http://www.w3.org/1999/xlink";function p(e,t,n,r){e.addEventListener(t,n,r)}const d=/(?:Once|Passive|Capture)$/;let m=0;const v=Promise.resolve(),g=/^on[a-z]/;"undefined"!=typeof HTMLElement&&HTMLElement;const b="transition",y="animation",_=(e,{slots:t})=>(0,o.h)(o.P$,function(e){const t={};for(const n in e)n in w||(t[n]=e[n]);if(!1===e.css)return t;const{name:n="v",type:o,duration:a,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:c=`${n}-enter-to`,appearFromClass:l=i,appearActiveClass:u=s,appearToClass:f=c,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:d=`${n}-leave-to`}=e,m=function(e){if(null==e)return null;if((0,r.Kn)(e))return[S(e.enter),S(e.leave)];{const t=S(e);return[t,t]}}(a),v=m&&m[0],g=m&&m[1],{onBeforeEnter:b,onEnter:y,onEnterCancelled:_,onLeave:N,onLeaveCancelled:L,onBeforeAppear:A=b,onAppear:M=y,onAppearCancelled:I=_}=t,z=(e,t,n)=>{E(e,t?f:c),E(e,t?u:s),n&&n()},T=(e,t)=>{e._isLeaving=!1,E(e,h),E(e,d),E(e,p),t&&t()},R=e=>(t,n)=>{const r=e?M:y,a=()=>z(t,e,n);x(r,[t,a]),O((()=>{E(t,e?l:i),C(t,e?f:c),k(r)||j(t,o,v,a)}))};return(0,r.l7)(t,{onBeforeEnter(e){x(b,[e]),C(e,i),C(e,s)},onBeforeAppear(e){x(A,[e]),C(e,l),C(e,u)},onEnter:R(!1),onAppear:R(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>T(e,t);C(e,h),document.body.offsetHeight,C(e,p),O((()=>{e._isLeaving&&(E(e,h),C(e,d),k(N)||j(e,o,g,n))})),x(N,[e,n])},onEnterCancelled(e){z(e,!1),x(_,[e])},onAppearCancelled(e){z(e,!0),x(I,[e])},onLeaveCancelled(e){T(e),x(L,[e])}})}(e),t);_.displayName="Transition";const w={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},x=(_.props=(0,r.l7)({},o.P$.props,w),(e,t=[])=>{(0,r.kJ)(e)?e.forEach((e=>e(...t))):e&&e(...t)}),k=e=>!!e&&((0,r.kJ)(e)?e.some((e=>e.length>1)):e.length>1);function S(e){return(0,r.He)(e)}function C(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e._vtc||(e._vtc=new Set)).add(t)}function E(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function O(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let N=0;function j(e,t,n,r){const o=e._endId=++N,a=()=>{o===e._endId&&r()};if(n)return setTimeout(a,n);const{type:i,timeout:s,propCount:c}=function(e,t){const n=window.getComputedStyle(e),r=e=>(n[e]||"").split(", "),o=r("transitionDelay"),a=r("transitionDuration"),i=L(o,a),s=r("animationDelay"),c=r("animationDuration"),l=L(s,c);let u=null,f=0,h=0;return t===b?i>0&&(u=b,f=i,h=a.length):t===y?l>0&&(u=y,f=l,h=c.length):(f=Math.max(i,l),u=f>0?i>l?b:y:null,h=u?u===b?a.length:c.length:0),{type:u,timeout:f,propCount:h,hasTransform:u===b&&/\b(transform|all)(,|$)/.test(r("transitionProperty").toString())}}(e,t);if(!i)return r();const l=i+"end";let u=0;const f=()=>{e.removeEventListener(l,h),a()},h=t=>{t.target===e&&++u>=c&&f()};setTimeout((()=>{u<c&&f()}),s+1),e.addEventListener(l,h)}function L(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map(((t,n)=>A(t)+A(e[n]))))}function A(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}new WeakMap,new WeakMap;const M=e=>{const t=e.props["onUpdate:modelValue"]||!1;return(0,r.kJ)(t)?e=>(0,r.ir)(t,e):t};function I(e){e.target.composing=!0}function z(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const T={created(e,{modifiers:{lazy:t,trim:n,number:o}},a){e._assign=M(a);const i=o||a.props&&"number"===a.props.type;p(e,t?"change":"input",(t=>{if(t.target.composing)return;let o=e.value;n&&(o=o.trim()),i&&(o=(0,r.He)(o)),e._assign(o)})),n&&p(e,"change",(()=>{e.value=e.value.trim()})),t||(p(e,"compositionstart",I),p(e,"compositionend",z),p(e,"change",z))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:o,number:a}},i){if(e._assign=M(i),e.composing)return;if(document.activeElement===e&&"range"!==e.type){if(n)return;if(o&&e.value.trim()===t)return;if((a||"number"===e.type)&&(0,r.He)(e.value)===t)return}const s=null==t?"":t;e.value!==s&&(e.value=s)}},R={deep:!0,created(e,t,n){e._assign=M(n),p(e,"change",(()=>{const t=e._modelValue,n=D(e),o=e.checked,a=e._assign;if((0,r.kJ)(t)){const e=(0,r.hq)(t,n),i=-1!==e;if(o&&!i)a(t.concat(n));else if(!o&&i){const n=[...t];n.splice(e,1),a(n)}}else if((0,r.DM)(t)){const e=new Set(t);o?e.add(n):e.delete(n),a(e)}else a(V(e,o))}))},mounted:$,beforeUpdate(e,t,n){e._assign=M(n),$(e,t,n)}};function $(e,{value:t,oldValue:n},o){e._modelValue=t,(0,r.kJ)(t)?e.checked=(0,r.hq)(t,o.props.value)>-1:(0,r.DM)(t)?e.checked=t.has(o.props.value):t!==n&&(e.checked=(0,r.WV)(t,V(e,!0)))}const P={created(e,{value:t},n){e.checked=(0,r.WV)(t,n.props.value),e._assign=M(n),p(e,"change",(()=>{e._assign(D(e))}))},beforeUpdate(e,{value:t,oldValue:n},o){e._assign=M(o),t!==n&&(e.checked=(0,r.WV)(t,o.props.value))}},F={deep:!0,created(e,{value:t,modifiers:{number:n}},o){const a=(0,r.DM)(t);p(e,"change",(()=>{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?(0,r.He)(D(e)):D(e)));e._assign(e.multiple?a?new Set(t):t:t[0])})),e._assign=M(o)},mounted(e,{value:t}){H(e,t)},beforeUpdate(e,t,n){e._assign=M(n)},updated(e,{value:t}){H(e,t)}};function H(e,t){const n=e.multiple;if(!n||(0,r.kJ)(t)||(0,r.DM)(t)){for(let o=0,a=e.options.length;o<a;o++){const a=e.options[o],i=D(a);if(n)(0,r.kJ)(t)?a.selected=(0,r.hq)(t,i)>-1:a.selected=t.has(i);else if((0,r.WV)(D(a),t))return void(e.selectedIndex!==o&&(e.selectedIndex=o))}n||-1===e.selectedIndex||(e.selectedIndex=-1)}}function D(e){return"_value"in e?e._value:e.value}function V(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const U={created(e,t,n){W(e,t,n,null,"created")},mounted(e,t,n){W(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){W(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){W(e,t,n,r,"updated")}};function W(e,t,n,r,o){const a=function(e,t){switch(e){case"SELECT":return F;case"TEXTAREA":return T;default:switch(t){case"checkbox":return R;case"radio":return P;default:return T}}}(e.tagName,n.props&&n.props.type)[o];a&&a(e,t,n,r)}const B=["ctrl","shift","alt","meta"],Y={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>B.some((n=>e[`${n}Key`]&&!t.includes(n)))},q=(e,t)=>(n,...r)=>{for(let e=0;e<t.length;e++){const r=Y[t[e]];if(r&&r(n,t))return}return e(n,...r)},G={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Z=(e,t)=>n=>{if(!("key"in n))return;const o=(0,r.rs)(n.key);return t.some((e=>e===o||G[e]===o))?e(n):void 0},X={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):J(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),J(e,!0),r.enter(e)):r.leave(e,(()=>{J(e,!1)})):J(e,t))},beforeUnmount(e,{value:t}){J(e,t)}};function J(e,t){e.style.display=t?e._vod:"none"}const K=(0,r.l7)({patchProp:(e,t,n,a,i=!1,s,c,u,f)=>{"class"===t?function(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,a,i):"style"===t?function(e,t,n){const o=e.style,a=(0,r.HD)(n);if(n&&!a){for(const e in n)l(o,e,n[e]);if(t&&!(0,r.HD)(t))for(const e in t)null==n[e]&&l(o,e,"")}else{const r=o.display;a?t!==n&&(o.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(o.display=r)}}(e,n,a):(0,r.F7)(t)?(0,r.tR)(t)||function(e,t,n,a,i=null){const s=e._vei||(e._vei={}),c=s[t];if(a&&c)c.value=a;else{const[n,l]=function(e){let t;if(d.test(e)){let n;for(t={};n=e.match(d);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[":"===e[2]?e.slice(3):(0,r.rs)(e.slice(2)),t]}(t);if(a){const c=s[t]=function(e,t){const n=e=>{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();(0,o.$d)(function(e,t){if((0,r.kJ)(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=m||(v.then((()=>m=0)),m=Date.now()),n}(a,i);p(e,n,c,l)}else c&&(function(e,t,n,r){e.removeEventListener(t,n,r)}(e,n,c,l),s[t]=void 0)}}(e,t,0,a,c):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,o){return o?"innerHTML"===t||"textContent"===t||!!(t in e&&g.test(t)&&(0,r.mf)(n)):"spellcheck"!==t&&"draggable"!==t&&"translate"!==t&&("form"!==t&&(("list"!==t||"INPUT"!==e.tagName)&&(("type"!==t||"TEXTAREA"!==e.tagName)&&((!g.test(t)||!(0,r.HD)(n))&&t in e))))}(e,t,a,i))?function(e,t,n,o,a,i,s){if("innerHTML"===t||"textContent"===t)return o&&s(o,a,i),void(e[t]=null==n?"":n);if("value"===t&&"PROGRESS"!==e.tagName&&!e.tagName.includes("-")){e._value=n;const r=null==n?"":n;return e.value===r&&"OPTION"!==e.tagName||(e.value=r),void(null==n&&e.removeAttribute(t))}let c=!1;if(""===n||null==n){const o=typeof e[t];"boolean"===o?n=(0,r.yA)(n):null==n&&"string"===o?(n="",c=!0):"number"===o&&(n=0,c=!0)}try{e[t]=n}catch(e){}c&&e.removeAttribute(t)}(e,t,a,s,c,u,f):("true-value"===t?e._trueValue=a:"false-value"===t&&(e._falseValue=a),function(e,t,n,o,a){if(o&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(h,t.slice(6,t.length)):e.setAttributeNS(h,t,n);else{const o=(0,r.Pq)(t);null==n||o&&!(0,r.yA)(n)?e.removeAttribute(t):e.setAttribute(t,o?"":n)}}(e,t,a,i))}},s);let Q;const ee=(...e)=>{const t=(Q||(Q=(0,o.Us)(K))).createApp(...e),{mount:n}=t;return t.mount=e=>{const o=function(e){if((0,r.HD)(e))return document.querySelector(e);return e}(e);if(!o)return;const a=t._component;(0,r.mf)(a)||a.render||a.template||(a.template=o.innerHTML),o.innerHTML="";const i=n(o,!1,o instanceof SVGElement);return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t}},3577:(e,t,n)=>{"use strict";function r(e,t){const n=Object.create(null),r=e.split(",");for(let e=0;e<r.length;e++)n[r[e]]=!0;return t?e=>!!n[e.toLowerCase()]:e=>!!n[e]}n.d(t,{C_:()=>u,DM:()=>A,E9:()=>ne,F7:()=>k,Gg:()=>U,HD:()=>z,He:()=>ee,Kn:()=>R,NO:()=>w,Nj:()=>Q,Od:()=>E,PO:()=>D,Pq:()=>h,RI:()=>N,S0:()=>V,W7:()=>H,WV:()=>d,Z6:()=>y,_A:()=>Y,_N:()=>L,aU:()=>J,dG:()=>_,e1:()=>o,fY:()=>r,hR:()=>X,hq:()=>m,ir:()=>K,j5:()=>a,kC:()=>Z,kJ:()=>j,kT:()=>b,l7:()=>C,mf:()=>I,rs:()=>G,tI:()=>$,tR:()=>S,vs:()=>f,yA:()=>p,yk:()=>T,zw:()=>v});const o=r("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt");function a(e){if(j(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],o=z(r)?l(r):a(r);if(o)for(const e in o)t[e]=o[e]}return t}return z(e)||R(e)?e:void 0}const i=/;(?![^(]*\))/g,s=/:([^]+)/,c=/\/\*.*?\*\//gs;function l(e){const t={};return e.replace(c,"").split(i).forEach((e=>{if(e){const n=e.split(s);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function u(e){let t="";if(z(e))t=e;else if(j(e))for(let n=0;n<e.length;n++){const r=u(e[n]);r&&(t+=r+" ")}else if(R(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}function f(e){if(!e)return null;let{class:t,style:n}=e;return t&&!z(t)&&(e.class=u(t)),n&&(e.style=a(n)),e}const h=r("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function p(e){return!!e||""===e}function d(e,t){if(e===t)return!0;let n=M(e),r=M(t);if(n||r)return!(!n||!r)&&e.getTime()===t.getTime();if(n=T(e),r=T(t),n||r)return e===t;if(n=j(e),r=j(t),n||r)return!(!n||!r)&&function(e,t){if(e.length!==t.length)return!1;let n=!0;for(let r=0;n&&r<e.length;r++)n=d(e[r],t[r]);return n}(e,t);if(n=R(e),r=R(t),n||r){if(!n||!r)return!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e){const r=e.hasOwnProperty(n),o=t.hasOwnProperty(n);if(r&&!o||!r&&o||!d(e[n],t[n]))return!1}}return String(e)===String(t)}function m(e,t){return e.findIndex((e=>d(e,t)))}const v=e=>z(e)?e:null==e?"":j(e)||R(e)&&(e.toString===P||!I(e.toString))?JSON.stringify(e,g,2):String(e),g=(e,t)=>t&&t.__v_isRef?g(e,t.value):L(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:A(t)?{[`Set(${t.size})`]:[...t.values()]}:!R(t)||j(t)||D(t)?t:String(t),b={},y=[],_=()=>{},w=()=>!1,x=/^on[^a-z]/,k=e=>x.test(e),S=e=>e.startsWith("onUpdate:"),C=Object.assign,E=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},O=Object.prototype.hasOwnProperty,N=(e,t)=>O.call(e,t),j=Array.isArray,L=e=>"[object Map]"===F(e),A=e=>"[object Set]"===F(e),M=e=>"[object Date]"===F(e),I=e=>"function"==typeof e,z=e=>"string"==typeof e,T=e=>"symbol"==typeof e,R=e=>null!==e&&"object"==typeof e,$=e=>R(e)&&I(e.then)&&I(e.catch),P=Object.prototype.toString,F=e=>P.call(e),H=e=>F(e).slice(8,-1),D=e=>"[object Object]"===F(e),V=e=>z(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,U=r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),W=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},B=/-(\w)/g,Y=W((e=>e.replace(B,((e,t)=>t?t.toUpperCase():"")))),q=/\B([A-Z])/g,G=W((e=>e.replace(q,"-$1").toLowerCase())),Z=W((e=>e.charAt(0).toUpperCase()+e.slice(1))),X=W((e=>e?`on${Z(e)}`:"")),J=(e,t)=>!Object.is(e,t),K=(e,t)=>{for(let n=0;n<e.length;n++)e[n](t)},Q=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},ee=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let te;const ne=()=>te||(te="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{})},54028:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>k});var r=n(2262),o=n(66252);function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Object.keys(e).reduce(((n,o)=>(t.includes(o)||(n[o]=(0,r.SU)(e[o])),n)),{})}function i(e){return"function"==typeof e}function s(e){return(0,r.PG)(e)||(0,r.$y)(e)}function c(e,t,n){let r=e;const o=t.split(".");for(let e=0;e<o.length;e++){if(!r[o[e]])return n;r=r[o[e]]}return r}function l(e,t,n){return(0,o.Fl)((()=>e.some((e=>c(t,e,{[n]:!1})[n]))))}function u(e,t,n){return(0,o.Fl)((()=>e.reduce(((e,r)=>{const o=c(t,r,{[n]:!1})[n]||[];return e.concat(o)}),[])))}function f(e,t,n,o){return e.call(o,(0,r.SU)(t),(0,r.SU)(n),o)}function h(e){return void 0!==e.$valid?!e.$valid:!e}function p(){}function d(e,t,n){if(n)return t?t(e()):e();try{var r=Promise.resolve(e());return t?r.then(t):r}catch(e){return Promise.reject(e)}}function m(e){const t=(n=function(){return D(),e=function(){return d(o.Y3,(function(){return new Promise((e=>{if(!H.value)return e(!$.value);const t=(0,o.YP)(H,(()=>{e(!$.value),t()}))}))}))},(t=function(){if(N.$rewardEarly)return W(),d(o.Y3,p,undefined)}())&&t.then?t.then(e):e();var e,t},function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];try{return Promise.resolve(n.apply(this,e))}catch(e){return Promise.reject(e)}});var n;let{validations:s,state:c,key:v,parentKey:g,childResults:b,resultsCache:y,globalConfig:_={},instance:w,externalResults:x}=e;const k=g?`${g}.${v}`:v,{rules:S,nestedValidators:C,config:E,validationGroups:O}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=(0,r.SU)(e),n=Object.keys(t),o={},a={},s={};let c=null;return n.forEach((e=>{const n=t[e];switch(!0){case i(n.$validator):o[e]=n;break;case i(n):o[e]={$validator:n};break;case"$validationGroups"===e:c=n;break;case e.startsWith("$"):s[e]=n;break;default:a[e]=n}})),{rules:o,nestedValidators:a,config:s,validationGroups:c}}(s),N=Object.assign({},_,E),j=v?(0,o.Fl)((()=>{const e=(0,r.SU)(c);return e?(0,r.SU)(e[v]):void 0})):c,L=Object.assign({},(0,r.SU)(x)||{}),A=(0,o.Fl)((()=>{const e=(0,r.SU)(x);return v?e?(0,r.SU)(e[v]):void 0:e})),M=function(e,t,n,s,c,l,u,p,d){const m=Object.keys(e),v=s.get(c,e),g=(0,r.iH)(!1),b=(0,r.iH)(!1),y=(0,r.iH)(0);if(v){if(!v.$partial)return v;v.$unwatch(),g.value=v.$dirty.value}const _={$dirty:g,$path:c,$touch:()=>{g.value||(g.value=!0)},$reset:()=>{g.value&&(g.value=!1)},$commit:()=>{}};return m.length?(m.forEach((s=>{_[s]=function(e,t,n,s,c,l,u,p,d,m,v){const g=(0,r.iH)(!1),b=e.$params||{},y=(0,r.iH)(null);let _,w;e.$async?({$invalid:_,$unwatch:w}=function(e,t,n,a,i,s,c){let{$lazy:l,$rewardEarly:u}=i,p=arguments.length>7&&void 0!==arguments[7]?arguments[7]:[],d=arguments.length>8?arguments[8]:void 0,m=arguments.length>9?arguments[9]:void 0,v=arguments.length>10?arguments[10]:void 0;const g=(0,r.iH)(!!a.value),b=(0,r.iH)(0);n.value=!1;const y=(0,o.YP)([t,a].concat(p,v),(()=>{if(l&&!a.value||u&&!m.value&&!n.value)return;let r;try{r=f(e,t,d,c)}catch(e){r=Promise.reject(e)}b.value++,n.value=!!b.value,g.value=!1,Promise.resolve(r).then((e=>{b.value--,n.value=!!b.value,s.value=e,g.value=h(e)})).catch((e=>{b.value--,n.value=!!b.value,s.value=e,g.value=!0}))}),{immediate:!0,deep:"object"==typeof t});return{$invalid:g,$unwatch:y}}(e.$validator,t,g,n,s,y,c,e.$watchTargets,d,m,v)):({$invalid:_,$unwatch:w}=function(e,t,n,r,a,i,s,c){let{$lazy:l,$rewardEarly:u}=r;return{$unwatch:()=>({}),$invalid:(0,o.Fl)((()=>{if(l&&!n.value||u&&!c.value)return!1;let r=!0;try{const n=f(e,t,s,i);a.value=n,r=h(n)}catch(e){a.value=e}return r}))}}(e.$validator,t,n,s,y,c,d,m));const x=e.$message;return{$message:i(x)?(0,o.Fl)((()=>x(a({$pending:g,$invalid:_,$params:a(b),$model:t,$response:y,$validator:l,$propertyPath:p,$property:u})))):x||"",$params:b,$pending:g,$invalid:_,$response:y,$unwatch:w}}(e[s],t,_.$dirty,l,u,s,n,c,d,b,y)})),_.$externalResults=(0,o.Fl)((()=>p.value?[].concat(p.value).map(((e,t)=>({$propertyPath:c,$property:n,$validator:"$externalResults",$uid:`${c}-externalResult-${t}`,$message:e,$params:{},$response:null,$pending:!1}))):[])),_.$invalid=(0,o.Fl)((()=>{const e=m.some((e=>(0,r.SU)(_[e].$invalid)));return b.value=e,!!_.$externalResults.value.length||e})),_.$pending=(0,o.Fl)((()=>m.some((e=>(0,r.SU)(_[e].$pending))))),_.$error=(0,o.Fl)((()=>!!_.$dirty.value&&(_.$pending.value||_.$invalid.value))),_.$silentErrors=(0,o.Fl)((()=>m.filter((e=>(0,r.SU)(_[e].$invalid))).map((e=>{const t=_[e];return(0,r.qj)({$propertyPath:c,$property:n,$validator:e,$uid:`${c}-${e}`,$message:t.$message,$params:t.$params,$response:t.$response,$pending:t.$pending})})).concat(_.$externalResults.value))),_.$errors=(0,o.Fl)((()=>_.$dirty.value?_.$silentErrors.value:[])),_.$unwatch=()=>m.forEach((e=>{_[e].$unwatch()})),_.$commit=()=>{b.value=!0,y.value=Date.now()},s.set(c,e,_),_):(v&&s.set(c,e,_),_)}(S,j,v,y,k,N,w,A,c),I=function(e,t,n,r,o,a,i){const s=Object.keys(e);return s.length?s.reduce(((s,c)=>(s[c]=m({validations:e[c],state:t,key:c,parentKey:n,resultsCache:r,globalConfig:o,instance:a,externalResults:i}),s)),{}):{}}(C,j,k,y,N,w,A),z={};O&&Object.entries(O).forEach((e=>{let[t,n]=e;z[t]={$invalid:l(n,I,"$invalid"),$error:l(n,I,"$error"),$pending:l(n,I,"$pending"),$errors:u(n,I,"$errors"),$silentErrors:u(n,I,"$silentErrors")}}));const{$dirty:T,$errors:R,$invalid:$,$anyDirty:P,$error:F,$pending:H,$touch:D,$reset:V,$silentErrors:U,$commit:W}=function(e,t,n){const a=(0,o.Fl)((()=>[t,n].filter((e=>e)).reduce(((e,t)=>e.concat(Object.values((0,r.SU)(t)))),[]))),i=(0,o.Fl)({get:()=>e.$dirty.value||!!a.value.length&&a.value.every((e=>e.$dirty)),set(t){e.$dirty.value=t}}),s=(0,o.Fl)((()=>{const t=(0,r.SU)(e.$silentErrors)||[],n=a.value.filter((e=>((0,r.SU)(e).$silentErrors||[]).length)).reduce(((e,t)=>e.concat(...t.$silentErrors)),[]);return t.concat(n)})),c=(0,o.Fl)((()=>{const t=(0,r.SU)(e.$errors)||[],n=a.value.filter((e=>((0,r.SU)(e).$errors||[]).length)).reduce(((e,t)=>e.concat(...t.$errors)),[]);return t.concat(n)})),l=(0,o.Fl)((()=>a.value.some((e=>e.$invalid))||(0,r.SU)(e.$invalid)||!1)),u=(0,o.Fl)((()=>a.value.some((e=>(0,r.SU)(e.$pending)))||(0,r.SU)(e.$pending)||!1)),f=(0,o.Fl)((()=>a.value.some((e=>e.$dirty))||a.value.some((e=>e.$anyDirty))||i.value)),h=(0,o.Fl)((()=>!!i.value&&(u.value||l.value))),p=()=>{e.$touch(),a.value.forEach((e=>{e.$touch()}))};return a.value.length&&a.value.every((e=>e.$dirty))&&p(),{$dirty:i,$errors:c,$invalid:l,$anyDirty:f,$error:h,$pending:u,$touch:p,$reset:()=>{e.$reset(),a.value.forEach((e=>{e.$reset()}))},$silentErrors:s,$commit:()=>{e.$commit(),a.value.forEach((e=>{e.$commit()}))}}}(M,I,b),B=v?(0,o.Fl)({get:()=>(0,r.SU)(j),set:e=>{T.value=!0;const t=(0,r.SU)(c),n=(0,r.SU)(x);n&&(n[v]=L[v]),(0,r.dq)(t[v])?t[v].value=e:t[v]=e}}):null;return v&&N.$autoDirty&&(0,o.YP)(j,(()=>{T.value||D();const e=(0,r.SU)(x);e&&(e[v]=L[v])}),{flush:"sync"}),(0,r.qj)(Object.assign({},M,{$model:B,$dirty:T,$error:F,$errors:R,$invalid:$,$anyDirty:P,$pending:H,$touch:D,$reset:V,$path:k||"__root",$silentErrors:U,$validate:t,$commit:W},b&&{$getResultsForChild:function(e){return(b.value||{})[e]},$clearExternalResults:function(){(0,r.dq)(x)?x.value=L:0===Object.keys(L).length?Object.keys(x).forEach((e=>{delete x[e]})):Object.assign(x,L)},$validationGroups:z},I))}class v{constructor(){this.storage=new Map}set(e,t,n){this.storage.set(e,{rules:t,result:n})}checkRulesValidity(e,t,n){const o=Object.keys(n),a=Object.keys(t);return a.length===o.length&&(!!a.every((e=>o.includes(e)))&&a.every((e=>!t[e].$params||Object.keys(t[e].$params).every((o=>(0,r.SU)(n[e].$params[o])===(0,r.SU)(t[e].$params[o]))))))}get(e,t){const n=this.storage.get(e);if(!n)return;const{rules:r,result:o}=n,a=this.checkRulesValidity(e,t,r),i=o.$unwatch?o.$unwatch:()=>({});return a?o:{$dirty:o.$dirty,$partial:!0,$unwatch:i}}}const g={COLLECT_ALL:!0,COLLECT_NONE:!1},b=Symbol("vuelidate#injectChildResults"),y=Symbol("vuelidate#removeChildResults");function _(e){let{$scope:t,instance:n}=e;const a={},i=(0,r.iH)([]),s=(0,o.Fl)((()=>i.value.reduce(((e,t)=>(e[t]=(0,r.SU)(a[t]),e)),{})));n.__vuelidateInjectInstances=[].concat(n.__vuelidateInjectInstances||[],(function(e,n){let{$registerAs:r,$scope:o,$stopPropagation:s}=n;s||t===g.COLLECT_NONE||o===g.COLLECT_NONE||t!==g.COLLECT_ALL&&t!==o||(a[r]=e,i.value.push(r))})),n.__vuelidateRemoveInstances=[].concat(n.__vuelidateRemoveInstances||[],(function(e){i.value=i.value.filter((t=>t!==e)),delete a[e]}));const c=(0,o.f3)(b,[]);(0,o.JJ)(b,n.__vuelidateInjectInstances);const l=(0,o.f3)(y,[]);return(0,o.JJ)(y,n.__vuelidateRemoveInstances),{childResults:s,sendValidationResultsToParent:c,removeValidationResultsFromParent:l}}function w(e){return new Proxy(e,{get:(e,t)=>"object"==typeof e[t]?w(e[t]):(0,o.Fl)((()=>e[t]))})}let x=0;function k(e,t){var n;let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};1===arguments.length&&(a=e,e=void 0,t=void 0);let{$registerAs:c,$scope:l=g.COLLECT_ALL,$stopPropagation:u,$externalResults:f,currentVueInstance:h}=a;const p=h||(null===(n=(0,o.FN)())||void 0===n?void 0:n.proxy),d=p?p.$options:{};c||(x+=1,c=`_vuelidate_${x}`);const b=(0,r.iH)({}),y=new v,{childResults:k,sendValidationResultsToParent:S,removeValidationResultsFromParent:C}=p?_({$scope:l,instance:p}):{childResults:(0,r.iH)({})};if(!e&&d.validations){const e=d.validations;t=(0,r.iH)({}),(0,o.wF)((()=>{t.value=p,(0,o.YP)((()=>i(e)?e.call(t.value,new w(t.value)):e),(e=>{b.value=m({validations:e,state:t,childResults:k,resultsCache:y,globalConfig:a,instance:p,externalResults:f||p.vuelidateExternalResults})}),{immediate:!0})})),a=d.validationsConfig||a}else{const n=(0,r.dq)(e)||s(e)?e:(0,r.qj)(e||{});(0,o.YP)(n,(e=>{b.value=m({validations:e,state:t,childResults:k,resultsCache:y,globalConfig:a,instance:null!=p?p:{},externalResults:f})}),{immediate:!0})}return p&&(S.forEach((e=>e(b,{$registerAs:c,$scope:l,$stopPropagation:u}))),(0,o.Jd)((()=>C.forEach((e=>e(c)))))),(0,o.Fl)((()=>Object.assign({},(0,r.SU)(b.value),k.value)))}},35332:(e,t,n)=>{"use strict";n.d(t,{C1:()=>i,CF:()=>c,sH:()=>u});var r=n(2262);const o=e=>{if(e=(0,r.SU)(e),Array.isArray(e))return!!e.length;if(null==e)return!1;if(!1===e)return!0;if(e instanceof Date)return!isNaN(e.getTime());if("object"==typeof e){for(let t in e)return!0;return!1}return!!String(e).length};function a(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return e=>(e=(0,r.SU)(e),!o(e)||t.every((t=>t.test(e))))}r.SU,a(/^[a-zA-Z]*$/),a(/^[a-zA-Z0-9]*$/),a(/^\d*(\.\d+)?$/),a(/^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i);var i={$validator:function(e){return"string"==typeof e&&(e=e.trim()),o(e)},$message:"Value is required",$params:{type:"required"}};const s=(e,t)=>!e||o("string"==typeof t?t.trim():t);function c(e){return{$validator:(t=e,function(e,n){if("function"!=typeof t)return s((0,r.SU)(t),e);const o=t.call(this,e,n);return s(o,e)}),$message:"The value is required",$params:{type:"requiredIf",prop:e}};var t}function l(e){return t=>(0,r.SU)(t)===(0,r.SU)(e)}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"other";return{$validator:l(e),$message:e=>`The value must be equal to the ${t} value`,$params:{equalTo:e,otherName:t,type:"sameAs"}}}a(/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i),a(/(^[0-9]*$)|(^-[0-9]+$)/),a(/^[-]?\d*(\.\d+)?$/)},58509:(e,t,n)=>{"use strict";n.d(t,{Qp:()=>p,tG:()=>d});var r=!1;if("undefined"!=typeof window){var o={get passive(){r=!0}};window.addEventListener("testPassive",null,o),window.removeEventListener("testPassive",null,o)}var a="undefined"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1),i=[],s=!1,c=-1,l=void 0,u=void 0,f=function(e){return i.some((function(t){return!(!t.options.allowTouchMove||!t.options.allowTouchMove(e))}))},h=function(e){var t=e||window.event;return!!f(t.target)||t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1)},p=function(e,t){if(e){if(!i.some((function(t){return t.targetElement===e}))){var n={targetElement:e,options:t||{}};i=[].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(i),[n]),a?(e.ontouchstart=function(e){1===e.targetTouches.length&&(c=e.targetTouches[0].clientY)},e.ontouchmove=function(t){1===t.targetTouches.length&&function(e,t){var n=e.targetTouches[0].clientY-c;!f(e.target)&&(t&&0===t.scrollTop&&n>0||function(e){return!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight}(t)&&n<0?h(e):e.stopPropagation())}(t,e)},s||(document.addEventListener("touchmove",h,r?{passive:!1}:void 0),s=!0)):function(e){if(void 0===u){var t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;t&&n>0&&(u=document.body.style.paddingRight,document.body.style.paddingRight=n+"px")}void 0===l&&(l=document.body.style.overflow,document.body.style.overflow="hidden")}(t)}}else console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.")},d=function(e){e?(i=i.filter((function(t){return t.targetElement!==e})),a?(e.ontouchstart=null,e.ontouchmove=null,s&&0===i.length&&(document.removeEventListener("touchmove",h,r?{passive:!1}:void 0),s=!1)):i.length||(void 0!==u&&(document.body.style.paddingRight=u,u=void 0),void 0!==l&&(document.body.style.overflow=l,l=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")}},97332:(e,t)=>{"use strict";function n(e){return l[e]}function r(e){return u[e]}function o(e){return e*(Math.PI/180)}function a(e,t){return e<t[0]?e=t[0]:e>t[1]&&(e=t[1]),e}function i(e){if(Math.cbrt)return Math.cbrt(e);var t=Math.pow(Math.abs(e),1/3);return e<0?-t:t}function s(e,t,n){if(void 0===t)throw new Error("No value provided");var r=n||function(e){var t=d.find((function(t){return p[t](e)}));if(!t)throw new Error("No type found for color "+e);return t}(t);if(r===e)return t;if(B[r][e])return q(r,e,t);var o=Y[r],a="string"==typeof o?o:o[e]||o.default;return s(e,q(r,a,t),a)}function c(e){var t={};return G.forEach((function(n){Object.defineProperty(t,n,{get:function(){return Z(n,e)},enumerable:!0})})),t}var l={A:{X:1.0985*100,Y:100,Z:35.585},B:{X:99.072,Y:100,Z:85.223},C:{X:98.074,Y:100,Z:118.232},D50:{X:96.422,Y:100,Z:82.521},D55:{X:95.682,Y:100,Z:92.149},D65:{X:95.047,Y:100,Z:108.883},D75:{X:94.972,Y:100,Z:122.638},E:{X:100,Y:100,Z:100},F2:{X:.99186*100,Y:100,Z:67.393},F7:{X:95.041,Y:100,Z:108.747},F11:{X:1.00962*100,Y:100,Z:64.35}},u={BRADFORD:[[.8951,.2664,-.1614],[-.7502,1.7135,.0367],[.0389,-.0685,1.0296]],INVERSE_BRADFORD:[[.9869929,-.1470543,.1599627],[.4323053,.5183603,.0492912],[-.0085287,.0400428,.9684867]],SRGB_XYZ:[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],INVERSE_SRGB_XYZ:[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]]},f=function(e,t){var n=new Set(Object.keys(e));return t.every((function(e){return n.has(e)}))},h=function(e,t){return"string"==typeof e&&e.slice(0,t.length)===t},p={hex:function(e){return h(e,"#")},rgb:function(e){return f(e,["r","g","b"])},cssrgb:function(e){return h(e,"rgb(")},hsl:function(e){return f(e,["h","s","l"])},csshsl:function(e){return h(e,"hsl(")},hsv:function(e){return f(e,["h","s","v"])},cmyk:function(e){return f(e,["c","m","y","k"])},yiq:function(e){return f(e,["y","i","q"])},XYZ:function(e){return f(e,["X","Y","Z"])},xyY:function(e){return f(e,["x","y","Y"])},lms:function(e){return f(e,["rho","gamma","beta"])},cielab:function(e){return f(e,["L","a","b"])},cieluv:function(e){return f(e,["L","u","v"])},cielch:function(e){return f(e,["L","C","h"])},hsluv:function(e){return f(e,["hu","s","l"])}},d=Object.keys(p),m=.008856,v=903.3,g=n("D65"),b=function(e){return Math.pow(e,3)>m?Math.pow(e,3):(116*e-16)/v},y={XYZ:function(e){var t=(e.L+16)/116,n=e.a/500+t,r=t-e.b/200,o=b(n),a=b(r),i=e.L>v*m?Math.pow(t,3):e.L/v;return{X:o*g.X,Y:i*g.Y,Z:a*g.Z}}},_={cieluv:function(e){var t=o(e.h),n=e.C*Math.cos(t),r=e.C*Math.sin(t);return{L:e.L,u:n,v:r}},hsluv:function(e){if(e.L>99.9999999)return{hu:e.h,s:0,l:100};if(e.L<1e-8)return{hu:e.h,s:0,l:0};for(var t=(e.L+16)/1560896,n=t>.008856?t:e.L/903.3,a=r("INVERSE_SRGB_XYZ"),i=[],s=0;s<3;s++)for(var c=a[s][0],l=a[s][1],u=a[s][2],f=0;f<2;f++){var h=(284517*c-94839*u)*n,p=(838422*u+769860*l+731718*c)*e.L*n-769860*f*e.L,d=(632260*u-126452*l)*n+126452*f;i.push({m:h/d,b:p/d})}var m=Number.MAX_VALUE,v=o(e.h);i.forEach((function(e){var t=e.b/(Math.sin(v)-e.m*Math.cos(v));t>=0&&(m=Math.min(m,t))}));var g=m;return{hu:e.h,s:e.C/g*100,l:e.L}}},w={XYZ:function(e){var t=n("D65"),r=function(e){return 4*e.X/(e.X+15*e.Y+3*e.Z)}(t),o=function(e){return 9*e.Y/(e.X+15*e.Y+3*e.Z)}(t),a=1/3*(52*e.L/(e.u+13*e.L*r)-1),i=e.L>903.3*.008856?Math.pow((e.L+16)/116,3):e.L/903.3,s=-5*i,c=(i*(39*e.L/(e.v+13*e.L*o)-5)-s)/(a- -1/3);return{X:100*c,Y:100*i,Z:100*(c*a+s)}},cielch:function(e){var t=Math.sqrt(Math.pow(e.u,2)+Math.pow(e.v,2)),n=Math.atan2(e.v,e.u);return n<0&&(n+=2*Math.PI),n=function(e){return e*(180/Math.PI)}(n),{L:e.L,C:t,h:n}}},x=function(e){return{r:255*(1-e.c)*(1-e.k),g:255*(1-e.m)*(1-e.k),b:255*(1-e.y)*(1-e.k)}},k={rgb:x,cssrgb:function(e){var t=x(e),n=t.r,r=t.g,o=t.b;return"rgb("+Math.round(n)+","+Math.round(r)+","+Math.round(o)+")"}},S={hsl:function(e){var t=e.replace(/(hsl\(|\)|%|[\s]*)/g,"").split(",").map((function(e){return parseInt(e,10)}));return{h:t[0],s:t[1],l:t[2]}}},C={rgb:function(e){var t=e.replace(/((rgb\(|\))|[\s]*)/g,"").split(",").map((function(e){return parseInt(e,10)}));return{r:t[0],g:t[1],b:t[2]}}},E={rgb:function(e){var t=e.replace("#","").match(/.{2}/g).map((function(e){return parseInt(e,16)}));return{r:t[0],g:t[1],b:t[2]}}},O={rgb:function(e){if(0===e.s){var t=e.l/100*255;return{r:t,g:t,b:t}}var n,r,o;n=e.l>=50?e.l/100+e.s/100-e.l/100*(e.s/100):e.l/100*(1+e.s/100),r=e.l/100*2-n;var a,i,s,c=(.333+(o=e.h/360))%1,l=o,u=function(e,t){return(e%t+t)%t}(o-.333,1);return(a=6*c<1?r+6*(n-r)*c:2*c<1?n:3*c<2?r+6*(.666-c)*(n-r):r)<0&&(a=0),(i=6*l<1?r+6*(n-r)*l:2*l<1?n:3*l<2?r+6*(.666-l)*(n-r):r)<0&&(i=0),(s=6*u<1?r+6*(n-r)*u:2*u<1?n:3*u<2?r+6*(.666-u)*(n-r):r)<0&&(s=0),{r:255*a,g:255*i,b:255*s}},csshsl:function(e){return"hsl("+Math.round(e.h)+","+Math.round(e.s)+"%,"+Math.round(e.l)+"%)"},hsv:function(e){var t=Object.assign({},e,{s:e.s/100,l:e.l/100}),n=t.s*(t.l<.5?t.l:1-t.l);return{h:t.h,s:2*n/(t.l+n)*100,v:100*(t.l+n)}}},N={cielch:function(e){if(e.L>99.9999999)return{L:100,C:0,h:e.hu};if(e.L<1e-8)return{L:0,C:0,h:e.hu};for(var t=(e.l+16)/1560896,n=t>.008856?t:e.l/903.3,a=r("INVERSE_SRGB_XYZ"),i=[],s=0;s<3;s++)for(var c=a[s][0],l=a[s][1],u=a[s][2],f=0;f<2;f++){var h=(284517*c-94839*u)*n,p=(838422*u+769860*l+731718*c)*e.l*n-769860*f*e.l,d=(632260*u-126452*l)*n+126452*f;i.push({m:h/d,b:p/d})}var m=Number.MAX_VALUE,v=o(e.hu);i.forEach((function(e){var t=e.b/(Math.sin(v)-e.m*Math.cos(v));t>=0&&(m=Math.min(m,t))}));var g=m;return{L:e.l,C:g/100*e.s,h:e.hu}}},j={hsl:function(e){var t=Object.assign({},e,{h:e.h/360,s:e.s/100,v:e.v/100});return{h:360*t.h,s:100*((2-t.s)*t.v<1?t.s*t.v/((2-t.s)*t.v):t.s*t.v/(2-(2-t.s)*t.v)),l:(2-t.s)*t.v/2*100}}},L={XYZ:function(e){var t=[e.rho,e.gamma,e.beta],n=r("INVERSE_BRADFORD").map((function(e){return t.reduce((function(t,n,r){return e[r]*n+t}),0)}));return{X:100*n[0],Y:100*n[1],Z:100*n[2]}}},A=function(e){return a(e,[0,255])},M=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},I=.008856,z=n("D65"),T={rgb:function(e){var t=[e.X,e.Y,e.Z].map((function(e){return e/100})),n=r("INVERSE_SRGB_XYZ").map((function(e){return t.reduce((function(t,n,r){return e[r]*n+t}),0)})).map((function(e){return e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055})).map((function(e){return 255*e})),o=M(n,3);return function(e){return{r:A(e.r),g:A(e.g),b:A(e.b)}}({r:o[0],g:o[1],b:o[2]})},lms:function(e){var t=[e.X,e.Y,e.Z].map((function(e){return e/100})),n=r("BRADFORD").map((function(e){return t.reduce((function(t,n,r){return e[r]*n+t}),0)}));return{rho:n[0],gamma:n[1],beta:n[2]}},cielab:function(e){var t=e.X/z.X,n=e.Y/z.Y,r=e.Z/z.Z,o=function(e){return e>I?i(e):(903.3*e+16)/116},a=o(t),s=o(n);return{L:116*s-16,a:500*(a-s),b:200*(s-o(r))}},cieluv:function(e){var t=e.Y/z.Y,n=t>I?116*i(t)-16:903.3*t,r=function(e){return 4*e.X/(e.X+15*e.Y+3*e.Z)},o=function(e){return 9*e.Y/(e.X+15*e.Y+3*e.Z)};return{L:n,u:13*n*(r(e)-r(z)),v:13*n*(o(e)-o(z))}},xyY:function(e){return{x:e.X/(e.X+e.Y+e.Z),y:e.Y/(e.X+e.Y+e.Z),Y:e.Y}}},R=T.lms,$=T.cielab,P=T.cieluv,F=T.xyY,H=function(e){var t,n,r=e.r/255,o=e.g/255,a=e.b/255,i=[r,o,a].sort(),s=(i[0]+i[2])/2*100;return i[0]===i[2]?(t=0,n=0):(t=s>=50?(i[2]-i[0])/(2-i[2]-i[0])*100:(i[2]-i[0])/(i[2]+i[0])*100,(n=i[2]===r?(o-a)/(i[2]-i[0])*60:i[2]===o?60*(2+(a-r)/(i[2]-i[0])):60*(4+(r-o)/(i[2]-i[0])))<0?n+=360:n>360&&(n%=360)),{h:n,s:t,l:s}},D=function(e){var t=[e.r,e.g,e.b].map((function(e){return e/255})).map((function(e){return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)})),n=r("SRGB_XYZ").map((function(e){return t.reduce((function(t,n,r){return e[r]*n+t}),0)})).map((function(e){return 100*e})),o=M(n,3);return{X:o[0],Y:o[1],Z:o[2]}},V={hex:function(e){var t=Math.round(e.r).toString(16);1===t.length&&(t="0"+t);var n=Math.round(e.g).toString(16);1===n.length&&(n="0"+n);var r=Math.round(e.b).toString(16);return 1===r.length&&(r="0"+r),"#"+t+n+r},cssrgb:function(e){return"rgb("+Math.round(e.r)+","+Math.round(e.g)+","+Math.round(e.b)+")"},hsl:H,csshsl:function(e){var t=H(e),n=t.h,r=t.s,o=t.l;return"hsl("+Math.round(n)+","+Math.round(r)+"%,"+Math.round(o)+"%)"},cmyk:function(e){var t=e.r/255,n=e.g/255,r=e.b/255,o=1-Math.max(t,n,r);return 1!==o?{c:(1-t-o)/(1-o),m:(1-n-o)/(1-o),y:(1-r-o)/(1-o),k:o}:{c:0,m:0,y:0,k:o}},yiq:function(e){var t=e.r/255*.299+e.g/255*.587+e.b/255*.114,n=e.r/255*.596+e.g/255*-.274+e.b/255*-.322,r=e.r/255*.211+e.g/255*-.523+e.b/255*.312;return{y:t,i:n=a(n,[-.5957,.5957]),q:r=a(r,[-.5226,.5226])}},XYZ:D,lms:function(e){return R(D(e))},cielab:function(e){return $(D(e))},cieluv:function(e){return P(D(e))},xyY:function(e){return F(D(e))}},U=function(e){return a(e,[0,255])},W={rgb:function(e){var t=a(e.i,[-.5957,.5957]),n=a(e.q,[-.5226,.5226]);return{r:255*U(e.y+.956*t+.621*n),g:255*U(e.y+-.272*t+-.647*n),b:255*U(e.y+-1.106*t+-1.703*n)}}},B=Object.freeze({cielab:y,cielch:_,cieluv:w,cmyk:k,csshsl:S,cssrgb:C,hex:E,hsl:O,hsluv:N,hsv:j,lms:L,rgb:V,xyY:{XYZ:function(e){var t=e.x,n=e.y,r=e.Y;return{X:r/n*t,Y:r,Z:r/n*(1-t-n)}}},XYZ:T,yiq:W}),Y={rgb:{default:"XYZ",csshsl:"hsl",hsv:"hsl"},hex:"rgb",hsl:"rgb",hsv:"hsl",csshsl:"hsl",cssrgb:"rgb",cmyk:"rgb",XYZ:{default:"rgb",cielch:"cieluv",hsluv:"cieluv"},xyY:"XYZ",lms:"XYZ",cieluv:{default:"XYZ",hsluv:"cielch"},cielch:"cieluv",cielab:"XYZ",yiq:"rgb",hsluv:"cielch"},q=function(e,t,n){return B[e][t](n)},G=Object.keys(p),Z=function(e,t){return Array.isArray(t)?t.map((function(t){return s(e,t)})):s(e,t)};t.Xu=function(e,t){var n=s("hsl",t);return n.l+=e,n.l<0?n.l=0:n.l>100&&(n.l=100),c(n)},t.wo=function(e){var t=s("rgb",e);return c(t=(299*t.r+587*t.g+114*t.b)/1e3>=128?{r:0,g:0,b:0}:{r:255,g:255,b:255})},t.OQ=c,t.Xp=function(e){var t=s("hsl",e);return t.l=100-t.l,c(t)}},20425:function(e){var t,n,r,o,a,i,s,c;e.exports=(t="__v-click-outside",n="undefined"!=typeof window,r="undefined"!=typeof navigator,o=n&&("ontouchstart"in window||r&&navigator.msMaxTouchPoints>0)?["touchstart"]:["click"],a=function(e){var t=e.event,n=e.handler;(0,e.middleware)(t)&&n(t)},i=function(e,n){var r=function(e){var t="function"==typeof e;if(!t&&"object"!=typeof e)throw new Error("v-click-outside: Binding value must be a function or an object");return{handler:t?e:e.handler,middleware:e.middleware||function(e){return e},events:e.events||o,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe),capture:Boolean(e.capture)}}(n.value),i=r.handler,s=r.middleware,c=r.detectIframe,l=r.capture;if(r.isActive){if(e[t]=r.events.map((function(t){return{event:t,srcTarget:document.documentElement,handler:function(t){return function(e){var t=e.el,n=e.event,r=e.handler,o=e.middleware,i=n.path||n.composedPath&&n.composedPath();(i?i.indexOf(t)<0:!t.contains(n.target))&&a({event:n,handler:r,middleware:o})}({el:e,event:t,handler:i,middleware:s})},capture:l}})),c){var u={event:"blur",srcTarget:window,handler:function(t){return function(e){var t=e.el,n=e.event,r=e.handler,o=e.middleware;setTimeout((function(){var e=document.activeElement;e&&"IFRAME"===e.tagName&&!t.contains(e)&&a({event:n,handler:r,middleware:o})}),0)}({el:e,event:t,handler:i,middleware:s})},capture:l};e[t]=[].concat(e[t],[u])}e[t].forEach((function(n){var r=n.event,o=n.srcTarget,a=n.handler;return setTimeout((function(){e[t]&&o.addEventListener(r,a,l)}),0)}))}},s=function(e){(e[t]||[]).forEach((function(e){return e.srcTarget.removeEventListener(e.event,e.handler,e.capture)})),delete e[t]},c=n?{beforeMount:i,updated:function(e,t){var n=t.value,r=t.oldValue;JSON.stringify(n)!==JSON.stringify(r)&&(s(e),i(e,{value:n}))},unmounted:s}:{},{install:function(e){e.directive("click-outside",c)},directive:c})},67810:()=>{!function(){if("undefined"!=typeof window)try{var e=new window.CustomEvent("test",{cancelable:!0});if(e.preventDefault(),!0!==e.defaultPrevented)throw new Error("Could not prevent default")}catch(e){var t=function(e,t){var n,r;return(t=t||{}).bubbles=!!t.bubbles,t.cancelable=!!t.cancelable,(n=document.createEvent("CustomEvent")).initCustomEvent(e,t.bubbles,t.cancelable,t.detail),r=n.preventDefault,n.preventDefault=function(){r.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},n};t.prototype=window.Event.prototype,window.CustomEvent=t}}()},95573:e=>{"use strict";var t=/["'&<>]/;e.exports=function(e){var n,r=""+e,o=t.exec(r);if(!o)return r;var a="",i=0,s=0;for(i=o.index;i<r.length;i++){switch(r.charCodeAt(i)){case 34:n="&quot;";break;case 38:n="&amp;";break;case 39:n="&#39;";break;case 60:n="&lt;";break;case 62:n="&gt;";break;default:continue}s!==i&&(a+=r.substring(s,i)),s=i+1,a+=n}return s!==i?a+r.substring(s,i):a}},2900:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r={aa:{name:"Afar",nativeName:"Afaraf"},ab:{name:"Abkhaz",nativeName:"аҧсуа бызшәа"},ae:{name:"Avestan",nativeName:"avesta"},af:{name:"Afrikaans",nativeName:"Afrikaans"},ak:{name:"Akan",nativeName:"Akan"},am:{name:"Amharic",nativeName:"አማርኛ"},an:{name:"Aragonese",nativeName:"aragonés"},ar:{name:"Arabic",nativeName:"اَلْعَرَبِيَّةُ"},as:{name:"Assamese",nativeName:"অসমীয়া"},av:{name:"Avaric",nativeName:"авар мацӀ"},ay:{name:"Aymara",nativeName:"aymar aru"},az:{name:"Azerbaijani",nativeName:"azərbaycan dili"},ba:{name:"Bashkir",nativeName:"башҡорт теле"},be:{name:"Belarusian",nativeName:"беларуская мова"},bg:{name:"Bulgarian",nativeName:"български език"},bi:{name:"Bislama",nativeName:"Bislama"},bm:{name:"Bambara",nativeName:"bamanankan"},bn:{name:"Bengali",nativeName:"বাংলা"},bo:{name:"Tibetan",nativeName:"བོད་ཡིག"},br:{name:"Breton",nativeName:"brezhoneg"},bs:{name:"Bosnian",nativeName:"bosanski jezik"},ca:{name:"Catalan",nativeName:"Català"},ce:{name:"Chechen",nativeName:"нохчийн мотт"},ch:{name:"Chamorro",nativeName:"Chamoru"},co:{name:"Corsican",nativeName:"corsu"},cr:{name:"Cree",nativeName:"ᓀᐦᐃᔭᐍᐏᐣ"},cs:{name:"Czech",nativeName:"čeština"},cu:{name:"Old Church Slavonic",nativeName:"ѩзыкъ словѣньскъ"},cv:{name:"Chuvash",nativeName:"чӑваш чӗлхи"},cy:{name:"Welsh",nativeName:"Cymraeg"},da:{name:"Danish",nativeName:"dansk"},de:{name:"German",nativeName:"Deutsch"},dv:{name:"Divehi",nativeName:"ދިވެހި"},dz:{name:"Dzongkha",nativeName:"རྫོང་ཁ"},ee:{name:"Ewe",nativeName:"Eʋegbe"},el:{name:"Greek",nativeName:"Ελληνικά"},en:{name:"English",nativeName:"English"},eo:{name:"Esperanto",nativeName:"Esperanto"},es:{name:"Spanish",nativeName:"Español"},et:{name:"Estonian",nativeName:"eesti"},eu:{name:"Basque",nativeName:"euskara"},fa:{name:"Persian",nativeName:"فارسی"},ff:{name:"Fula",nativeName:"Fulfulde"},fi:{name:"Finnish",nativeName:"suomi"},fj:{name:"Fijian",nativeName:"vosa Vakaviti"},fo:{name:"Faroese",nativeName:"føroyskt"},fr:{name:"French",nativeName:"Français"},fy:{name:"Western Frisian",nativeName:"Frysk"},ga:{name:"Irish",nativeName:"Gaeilge"},gd:{name:"Scottish Gaelic",nativeName:"Gàidhlig"},gl:{name:"Galician",nativeName:"galego"},gn:{name:"Guaraní",nativeName:"Avañe'ẽ"},gu:{name:"Gujarati",nativeName:"ગુજરાતી"},gv:{name:"Manx",nativeName:"Gaelg"},ha:{name:"Hausa",nativeName:"هَوُسَ"},he:{name:"Hebrew",nativeName:"עברית"},hi:{name:"Hindi",nativeName:"हिन्दी"},ho:{name:"Hiri Motu",nativeName:"Hiri Motu"},hr:{name:"Croatian",nativeName:"Hrvatski"},ht:{name:"Haitian",nativeName:"Kreyòl ayisyen"},hu:{name:"Hungarian",nativeName:"magyar"},hy:{name:"Armenian",nativeName:"Հայերեն"},hz:{name:"Herero",nativeName:"Otjiherero"},ia:{name:"Interlingua",nativeName:"Interlingua"},id:{name:"Indonesian",nativeName:"Bahasa Indonesia"},ie:{name:"Interlingue",nativeName:"Interlingue"},ig:{name:"Igbo",nativeName:"Asụsụ Igbo"},ii:{name:"Nuosu",nativeName:"ꆈꌠ꒿ Nuosuhxop"},ik:{name:"Inupiaq",nativeName:"Iñupiaq"},io:{name:"Ido",nativeName:"Ido"},is:{name:"Icelandic",nativeName:"Íslenska"},it:{name:"Italian",nativeName:"Italiano"},iu:{name:"Inuktitut",nativeName:"ᐃᓄᒃᑎᑐᑦ"},ja:{name:"Japanese",nativeName:"日本語"},jv:{name:"Javanese",nativeName:"basa Jawa"},ka:{name:"Georgian",nativeName:"ქართული"},kg:{name:"Kongo",nativeName:"Kikongo"},ki:{name:"Kikuyu",nativeName:"Gĩkũyũ"},kj:{name:"Kwanyama",nativeName:"Kuanyama"},kk:{name:"Kazakh",nativeName:"қазақ тілі"},kl:{name:"Kalaallisut",nativeName:"kalaallisut"},km:{name:"Khmer",nativeName:"ខេមរភាសា"},kn:{name:"Kannada",nativeName:"ಕನ್ನಡ"},ko:{name:"Korean",nativeName:"한국어"},kr:{name:"Kanuri",nativeName:"Kanuri"},ks:{name:"Kashmiri",nativeName:"कश्मीरी"},ku:{name:"Kurdish",nativeName:"Kurdî"},kv:{name:"Komi",nativeName:"коми кыв"},kw:{name:"Cornish",nativeName:"Kernewek"},ky:{name:"Kyrgyz",nativeName:"Кыргызча"},la:{name:"Latin",nativeName:"latine"},lb:{name:"Luxembourgish",nativeName:"Lëtzebuergesch"},lg:{name:"Ganda",nativeName:"Luganda"},li:{name:"Limburgish",nativeName:"Limburgs"},ln:{name:"Lingala",nativeName:"Lingála"},lo:{name:"Lao",nativeName:"ພາສາລາວ"},lt:{name:"Lithuanian",nativeName:"lietuvių kalba"},lu:{name:"Luba-Katanga",nativeName:"Kiluba"},lv:{name:"Latvian",nativeName:"latviešu valoda"},mg:{name:"Malagasy",nativeName:"fiteny malagasy"},mh:{name:"Marshallese",nativeName:"Kajin M̧ajeļ"},mi:{name:"Māori",nativeName:"te reo Māori"},mk:{name:"Macedonian",nativeName:"македонски јазик"},ml:{name:"Malayalam",nativeName:"മലയാളം"},mn:{name:"Mongolian",nativeName:"Монгол хэл"},mr:{name:"Marathi",nativeName:"मराठी"},ms:{name:"Malay",nativeName:"Bahasa Melayu"},mt:{name:"Maltese",nativeName:"Malti"},my:{name:"Burmese",nativeName:"ဗမာစာ"},na:{name:"Nauru",nativeName:"Dorerin Naoero"},nb:{name:"Norwegian Bokmål",nativeName:"Norsk bokmål"},nd:{name:"Northern Ndebele",nativeName:"isiNdebele"},ne:{name:"Nepali",nativeName:"नेपाली"},ng:{name:"Ndonga",nativeName:"Owambo"},nl:{name:"Dutch",nativeName:"Nederlands"},nn:{name:"Norwegian Nynorsk",nativeName:"Norsk nynorsk"},no:{name:"Norwegian",nativeName:"Norsk"},nr:{name:"Southern Ndebele",nativeName:"isiNdebele"},nv:{name:"Navajo",nativeName:"Diné bizaad"},ny:{name:"Chichewa",nativeName:"chiCheŵa"},oc:{name:"Occitan",nativeName:"occitan"},oj:{name:"Ojibwe",nativeName:"ᐊᓂᔑᓈᐯᒧᐎᓐ"},om:{name:"Oromo",nativeName:"Afaan Oromoo"},or:{name:"Oriya",nativeName:"ଓଡ଼ିଆ"},os:{name:"Ossetian",nativeName:"ирон æвзаг"},pa:{name:"Panjabi",nativeName:"ਪੰਜਾਬੀ"},pi:{name:"Pāli",nativeName:"पाऴि"},pl:{name:"Polish",nativeName:"Polski"},ps:{name:"Pashto",nativeName:"پښتو"},pt:{name:"Portuguese",nativeName:"Português"},qu:{name:"Quechua",nativeName:"Runa Simi"},rm:{name:"Romansh",nativeName:"rumantsch grischun"},rn:{name:"Kirundi",nativeName:"Ikirundi"},ro:{name:"Romanian",nativeName:"Română"},ru:{name:"Russian",nativeName:"Русский"},rw:{name:"Kinyarwanda",nativeName:"Ikinyarwanda"},sa:{name:"Sanskrit",nativeName:"संस्कृतम्"},sc:{name:"Sardinian",nativeName:"sardu"},sd:{name:"Sindhi",nativeName:"सिन्धी"},se:{name:"Northern Sami",nativeName:"Davvisámegiella"},sg:{name:"Sango",nativeName:"yângâ tî sängö"},si:{name:"Sinhala",nativeName:"සිංහල"},sk:{name:"Slovak",nativeName:"slovenčina"},sl:{name:"Slovenian",nativeName:"slovenščina"},sm:{name:"Samoan",nativeName:"gagana fa'a Samoa"},sn:{name:"Shona",nativeName:"chiShona"},so:{name:"Somali",nativeName:"Soomaaliga"},sq:{name:"Albanian",nativeName:"Shqip"},sr:{name:"Serbian",nativeName:"српски језик"},ss:{name:"Swati",nativeName:"SiSwati"},st:{name:"Southern Sotho",nativeName:"Sesotho"},su:{name:"Sundanese",nativeName:"Basa Sunda"},sv:{name:"Swedish",nativeName:"Svenska"},sw:{name:"Swahili",nativeName:"Kiswahili"},ta:{name:"Tamil",nativeName:"தமிழ்"},te:{name:"Telugu",nativeName:"తెలుగు"},tg:{name:"Tajik",nativeName:"тоҷикӣ"},th:{name:"Thai",nativeName:"ไทย"},ti:{name:"Tigrinya",nativeName:"ትግርኛ"},tk:{name:"Turkmen",nativeName:"Türkmençe"},tl:{name:"Tagalog",nativeName:"Wikang Tagalog"},tn:{name:"Tswana",nativeName:"Setswana"},to:{name:"Tonga",nativeName:"faka Tonga"},tr:{name:"Turkish",nativeName:"Türkçe"},ts:{name:"Tsonga",nativeName:"Xitsonga"},tt:{name:"Tatar",nativeName:"татар теле"},tw:{name:"Twi",nativeName:"Twi"},ty:{name:"Tahitian",nativeName:"Reo Tahiti"},ug:{name:"Uyghur",nativeName:"ئۇيغۇرچە‎"},uk:{name:"Ukrainian",nativeName:"Українська"},ur:{name:"Urdu",nativeName:"اردو"},uz:{name:"Uzbek",nativeName:"Ўзбек"},ve:{name:"Venda",nativeName:"Tshivenḓa"},vi:{name:"Vietnamese",nativeName:"Tiếng Việt"},vo:{name:"Volapük",nativeName:"Volapük"},wa:{name:"Walloon",nativeName:"walon"},wo:{name:"Wolof",nativeName:"Wollof"},xh:{name:"Xhosa",nativeName:"isiXhosa"},yi:{name:"Yiddish",nativeName:"ייִדיש"},yo:{name:"Yoruba",nativeName:"Yorùbá"},za:{name:"Zhuang",nativeName:"Saɯ cueŋƅ"},zh:{name:"Chinese",nativeName:"中文"},zu:{name:"Zulu",nativeName:"isiZulu"}};class o{static getLanguages(e=[]){return e.map((e=>({code:e,name:o.getName(e),nativeName:o.getNativeName(e)})))}static getName(e){return o.validate(e)?r[e].name:""}static getAllNames(){return Object.values(r).map((e=>e.name))}static getNativeName(e){return o.validate(e)?r[e].nativeName:""}static getAllNativeNames(){return Object.values(r).map((e=>e.nativeName))}static getCode(e){return Object.keys(r).find((t=>{const n=r[t];return n.name.toLowerCase()===e.toLowerCase()||n.nativeName.toLowerCase()===e.toLowerCase()}))||""}static getAllCodes(){return Object.keys(r)}static validate(e){return r.hasOwnProperty(e)}}},6258:(e,t,n)=>{"use strict";function r(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r]}return e}n.d(t,{Z:()=>o});const o=function e(t,n){function o(e,o,a){if("undefined"!=typeof document){"number"==typeof(a=r({},n,a)).expires&&(a.expires=new Date(Date.now()+864e5*a.expires)),a.expires&&(a.expires=a.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var i="";for(var s in a)a[s]&&(i+="; "+s,!0!==a[s]&&(i+="="+a[s].split(";")[0]));return document.cookie=e+"="+t.write(o,e)+i}}return Object.create({set:o,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var n=document.cookie?document.cookie.split("; "):[],r={},o=0;o<n.length;o++){var a=n[o].split("="),i=a.slice(1).join("=");try{var s=decodeURIComponent(a[0]);if(r[s]=t.read(i,s),e===s)break}catch(e){}}return e?r[e]:r}},remove:function(e,t){o(e,"",r({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,r({},this.attributes,t))},withConverter:function(t){return e(r({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(n)},converter:{value:Object.freeze(t)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})},69483:function(e,t){!function(n){"object"==typeof t&&void 0!==e?e.exports=n():"function"==typeof define&&define.amd?define([],n):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).localforage=n()}((function(){return function e(t,n,r){function o(i,s){if(!n[i]){if(!t[i]){var c="function"==typeof require&&require;if(!s&&c)return c(i,!0);if(a)return a(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[i]={exports:{}};t[i][0].call(u.exports,(function(e){return o(t[i][1][e]||e)}),u,u.exports,e,t,n,r)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i<r.length;i++)o(r[i]);return o}({1:[function(e,t,n){(function(e){"use strict";var n,r,o=e.MutationObserver||e.WebKitMutationObserver;if(o){var a=0,i=new o(u),s=e.document.createTextNode("");i.observe(s,{characterData:!0}),n=function(){s.data=a=++a%2}}else if(e.setImmediate||void 0===e.MessageChannel)n="document"in e&&"onreadystatechange"in e.document.createElement("script")?function(){var t=e.document.createElement("script");t.onreadystatechange=function(){u(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(u,0)};else{var c=new e.MessageChannel;c.port1.onmessage=u,n=function(){c.port2.postMessage(0)}}var l=[];function u(){var e,t;r=!0;for(var n=l.length;n;){for(t=l,l=[],e=-1;++e<n;)t[e]();n=l.length}r=!1}t.exports=function(e){1!==l.push(e)||r||n()}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(e,t,n){"use strict";var r=e(1);function o(){}var a={},i=["REJECTED"],s=["FULFILLED"],c=["PENDING"];function l(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=c,this.queue=[],this.outcome=void 0,e!==o&&p(this,e)}function u(e,t,n){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof n&&(this.onRejected=n,this.callRejected=this.otherCallRejected)}function f(e,t,n){r((function(){var r;try{r=t(n)}catch(t){return a.reject(e,t)}r===e?a.reject(e,new TypeError("Cannot resolve promise with itself")):a.resolve(e,r)}))}function h(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments)}}function p(e,t){var n=!1;function r(t){n||(n=!0,a.reject(e,t))}function o(t){n||(n=!0,a.resolve(e,t))}var i=d((function(){t(o,r)}));"error"===i.status&&r(i.value)}function d(e,t){var n={};try{n.value=e(t),n.status="success"}catch(e){n.status="error",n.value=e}return n}t.exports=l,l.prototype.catch=function(e){return this.then(null,e)},l.prototype.then=function(e,t){if("function"!=typeof e&&this.state===s||"function"!=typeof t&&this.state===i)return this;var n=new this.constructor(o);return this.state!==c?f(n,this.state===s?e:t,this.outcome):this.queue.push(new u(n,e,t)),n},u.prototype.callFulfilled=function(e){a.resolve(this.promise,e)},u.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},u.prototype.callRejected=function(e){a.reject(this.promise,e)},u.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},a.resolve=function(e,t){var n=d(h,t);if("error"===n.status)return a.reject(e,n.value);var r=n.value;if(r)p(e,r);else{e.state=s,e.outcome=t;for(var o=-1,i=e.queue.length;++o<i;)e.queue[o].callFulfilled(t)}return e},a.reject=function(e,t){e.state=i,e.outcome=t;for(var n=-1,r=e.queue.length;++n<r;)e.queue[n].callRejected(t);return e},l.resolve=function(e){return e instanceof this?e:a.resolve(new this(o),e)},l.reject=function(e){var t=new this(o);return a.reject(t,e)},l.all=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,r=!1;if(!n)return this.resolve([]);for(var i=new Array(n),s=0,c=-1,l=new this(o);++c<n;)u(e[c],c);return l;function u(e,o){t.resolve(e).then((function(e){i[o]=e,++s!==n||r||(r=!0,a.resolve(l,i))}),(function(e){r||(r=!0,a.reject(l,e))}))}},l.race=function(e){if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var t=e.length,n=!1;if(!t)return this.resolve([]);for(var r,i=-1,s=new this(o);++i<t;)r=e[i],this.resolve(r).then((function(e){n||(n=!0,a.resolve(s,e))}),(function(e){n||(n=!0,a.reject(s,e))}));return s}},{1:1}],3:[function(e,t,n){(function(t){"use strict";"function"!=typeof t.Promise&&(t.Promise=e(2))}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2}],4:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!=typeof mozIndexedDB)return mozIndexedDB;if("undefined"!=typeof OIndexedDB)return OIndexedDB;if("undefined"!=typeof msIndexedDB)return msIndexedDB}catch(e){return}}();function a(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(o){if("TypeError"!==o.name)throw o;for(var n=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),r=0;r<e.length;r+=1)n.append(e[r]);return n.getBlob(t.type)}}"undefined"==typeof Promise&&e(3);var i=Promise;function s(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function c(e,t,n){"function"==typeof t&&e.then(t),"function"==typeof n&&e.catch(n)}function l(e){return"string"!=typeof e&&(console.warn(e+" used as a key, but it is not a string."),e=String(e)),e}function u(){if(arguments.length&&"function"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}var f="local-forage-detect-blob-support",h=void 0,p={},d=Object.prototype.toString,m="readonly",v="readwrite";function g(e){var t=p[e.name],n={};n.promise=new i((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function b(e){var t=p[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function y(e,t){var n=p[e.name].deferredOperations.pop();if(n)return n.reject(t),n.promise}function _(e,t){return new i((function(n,r){if(p[e.name]=p[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return n(e.db);g(e),e.db.close()}var a=[e.name];t&&a.push(e.version);var i=o.open.apply(o,a);t&&(i.onupgradeneeded=function(t){var n=i.result;try{n.createObjectStore(e.storeName),t.oldVersion<=1&&n.createObjectStore(f)}catch(n){if("ConstraintError"!==n.name)throw n;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),i.onerror=function(e){e.preventDefault(),r(i.error)},i.onsuccess=function(){var t=i.result;t.onversionchange=function(e){e.target.close()},n(t),b(e)}}))}function w(e){return _(e,!1)}function x(e){return _(e,!0)}function k(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),r=e.version<e.db.version,o=e.version>e.db.version;if(r&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),o||n){if(n){var a=e.db.version+1;a>e.version&&(e.version=a)}return!0}return!1}function S(e){return a([function(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),o=0;o<t;o++)r[o]=e.charCodeAt(o);return n}(atob(e.data))],{type:e.type})}function C(e){return e&&e.__local_forage_encoded_blob}function E(e){var t=this,n=t._initReady().then((function(){var e=p[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return c(n,e,e),n}function O(e,t,n,r){void 0===r&&(r=1);try{var o=e.db.transaction(e.storeName,t);n(null,o)}catch(o){if(r>0&&(!e.db||"InvalidStateError"===o.name||"NotFoundError"===o.name))return i.resolve().then((function(){if(!e.db||"NotFoundError"===o.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),x(e)})).then((function(){return function(e){g(e);for(var t=p[e.name],n=t.forages,r=0;r<n.length;r++){var o=n[r];o._dbInfo.db&&(o._dbInfo.db.close(),o._dbInfo.db=null)}return e.db=null,w(e).then((function(t){return e.db=t,k(e)?x(e):t})).then((function(r){e.db=t.db=r;for(var o=0;o<n.length;o++)n[o]._dbInfo.db=r})).catch((function(t){throw y(e,t),t}))}(e).then((function(){O(e,t,n,r-1)}))})).catch(n);n(o)}}var N={_driver:"asyncStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]=e[r];var o=p[n.name];o||(o={forages:[],db:null,dbReady:null,deferredOperations:[]},p[n.name]=o),o.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=E);var a=[];function s(){return i.resolve()}for(var c=0;c<o.forages.length;c++){var l=o.forages[c];l!==t&&a.push(l._initReady().catch(s))}var u=o.forages.slice(0);return i.all(a).then((function(){return n.db=o.db,w(n)})).then((function(e){return n.db=e,k(n,t._defaultConfig.version)?x(n):e})).then((function(e){n.db=o.db=e,t._dbInfo=n;for(var r=0;r<u.length;r++){var a=u[r];a!==t&&(a._dbInfo.db=n.db,a._dbInfo.version=n.version)}}))},_support:function(){try{if(!o||!o.open)return!1;var e="undefined"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=new i((function(t,r){n.ready().then((function(){O(n._dbInfo,m,(function(o,a){if(o)return r(o);try{var i=a.objectStore(n._dbInfo.storeName).openCursor(),s=1;i.onsuccess=function(){var n=i.result;if(n){var r=n.value;C(r)&&(r=S(r));var o=e(r,n.key,s++);void 0!==o?t(o):n.continue()}else t()},i.onerror=function(){r(i.error)}}catch(e){r(e)}}))})).catch(r)}));return s(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=new i((function(t,r){n.ready().then((function(){O(n._dbInfo,m,(function(o,a){if(o)return r(o);try{var i=a.objectStore(n._dbInfo.storeName).get(e);i.onsuccess=function(){var e=i.result;void 0===e&&(e=null),C(e)&&(e=S(e)),t(e)},i.onerror=function(){r(i.error)}}catch(e){r(e)}}))})).catch(r)}));return s(r,t),r},setItem:function(e,t,n){var r=this;e=l(e);var o=new i((function(n,o){var s;r.ready().then((function(){return s=r._dbInfo,"[object Blob]"===d.call(t)?function(e){return"boolean"==typeof h?i.resolve(h):function(e){return new i((function(t){var n=e.transaction(f,v),r=a([""]);n.objectStore(f).put(r,"key"),n.onabort=function(e){e.preventDefault(),e.stopPropagation(),t(!1)},n.oncomplete=function(){var e=navigator.userAgent.match(/Chrome\/(\d+)/),n=navigator.userAgent.match(/Edge\//);t(n||!e||parseInt(e[1],10)>=43)}})).catch((function(){return!1}))}(e).then((function(e){return h=e}))}(s.db).then((function(e){return e?t:(n=t,new i((function(e,t){var r=new FileReader;r.onerror=t,r.onloadend=function(t){var r=btoa(t.target.result||"");e({__local_forage_encoded_blob:!0,data:r,type:n.type})},r.readAsBinaryString(n)})));var n})):t})).then((function(t){O(r._dbInfo,v,(function(a,i){if(a)return o(a);try{var s=i.objectStore(r._dbInfo.storeName);null===t&&(t=void 0);var c=s.put(t,e);i.oncomplete=function(){void 0===t&&(t=null),n(t)},i.onabort=i.onerror=function(){var e=c.error?c.error:c.transaction.error;o(e)}}catch(e){o(e)}}))})).catch(o)}));return s(o,n),o},removeItem:function(e,t){var n=this;e=l(e);var r=new i((function(t,r){n.ready().then((function(){O(n._dbInfo,v,(function(o,a){if(o)return r(o);try{var i=a.objectStore(n._dbInfo.storeName).delete(e);a.oncomplete=function(){t()},a.onerror=function(){r(i.error)},a.onabort=function(){var e=i.error?i.error:i.transaction.error;r(e)}}catch(e){r(e)}}))})).catch(r)}));return s(r,t),r},clear:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){O(t._dbInfo,v,(function(r,o){if(r)return n(r);try{var a=o.objectStore(t._dbInfo.storeName).clear();o.oncomplete=function(){e()},o.onabort=o.onerror=function(){var e=a.error?a.error:a.transaction.error;n(e)}}catch(e){n(e)}}))})).catch(n)}));return s(n,e),n},length:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){O(t._dbInfo,m,(function(r,o){if(r)return n(r);try{var a=o.objectStore(t._dbInfo.storeName).count();a.onsuccess=function(){e(a.result)},a.onerror=function(){n(a.error)}}catch(e){n(e)}}))})).catch(n)}));return s(n,e),n},key:function(e,t){var n=this,r=new i((function(t,r){e<0?t(null):n.ready().then((function(){O(n._dbInfo,m,(function(o,a){if(o)return r(o);try{var i=a.objectStore(n._dbInfo.storeName),s=!1,c=i.openKeyCursor();c.onsuccess=function(){var n=c.result;n?0===e||s?t(n.key):(s=!0,n.advance(e)):t(null)},c.onerror=function(){r(c.error)}}catch(e){r(e)}}))})).catch(r)}));return s(r,t),r},keys:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){O(t._dbInfo,m,(function(r,o){if(r)return n(r);try{var a=o.objectStore(t._dbInfo.storeName).openKeyCursor(),i=[];a.onsuccess=function(){var t=a.result;t?(i.push(t.key),t.continue()):e(i)},a.onerror=function(){n(a.error)}}catch(e){n(e)}}))})).catch(n)}));return s(n,e),n},dropInstance:function(e,t){t=u.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,a=this;if(e.name){var c=e.name===n.name&&a._dbInfo.db,l=c?i.resolve(a._dbInfo.db):w(e).then((function(t){var n=p[e.name],r=n.forages;n.db=t;for(var o=0;o<r.length;o++)r[o]._dbInfo.db=t;return t}));r=e.storeName?l.then((function(t){if(t.objectStoreNames.contains(e.storeName)){var n=t.version+1;g(e);var r=p[e.name],a=r.forages;t.close();for(var s=0;s<a.length;s++){var c=a[s];c._dbInfo.db=null,c._dbInfo.version=n}var l=new i((function(t,r){var a=o.open(e.name,n);a.onerror=function(e){a.result.close(),r(e)},a.onupgradeneeded=function(){a.result.deleteObjectStore(e.storeName)},a.onsuccess=function(){var e=a.result;e.close(),t(e)}}));return l.then((function(e){r.db=e;for(var t=0;t<a.length;t++){var n=a[t];n._dbInfo.db=e,b(n._dbInfo)}})).catch((function(t){throw(y(e,t)||i.resolve()).catch((function(){})),t}))}})):l.then((function(t){g(e);var n=p[e.name],r=n.forages;t.close();for(var a=0;a<r.length;a++)r[a]._dbInfo.db=null;var s=new i((function(t,n){var r=o.deleteDatabase(e.name);r.onerror=function(){var e=r.result;e&&e.close(),n(r.error)},r.onblocked=function(){console.warn('dropInstance blocked for database "'+e.name+'" until all open connections are closed')},r.onsuccess=function(){var e=r.result;e&&e.close(),t(e)}}));return s.then((function(e){n.db=e;for(var t=0;t<r.length;t++)b(r[t]._dbInfo)})).catch((function(t){throw(y(e,t)||i.resolve()).catch((function(){})),t}))}))}else r=i.reject("Invalid arguments");return s(r,t),r}},j="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",L=/^~~local_forage_type~([^~]+)~/,A="__lfsc__:",M=A.length,I="arbf",z="blob",T="si08",R="ui08",$="uic8",P="si16",F="si32",H="ur16",D="ui32",V="fl32",U="fl64",W=M+I.length,B=Object.prototype.toString;function Y(e){var t,n,r,o,a,i=.75*e.length,s=e.length,c=0;"="===e[e.length-1]&&(i--,"="===e[e.length-2]&&i--);var l=new ArrayBuffer(i),u=new Uint8Array(l);for(t=0;t<s;t+=4)n=j.indexOf(e[t]),r=j.indexOf(e[t+1]),o=j.indexOf(e[t+2]),a=j.indexOf(e[t+3]),u[c++]=n<<2|r>>4,u[c++]=(15&r)<<4|o>>2,u[c++]=(3&o)<<6|63&a;return l}function q(e){var t,n=new Uint8Array(e),r="";for(t=0;t<n.length;t+=3)r+=j[n[t]>>2],r+=j[(3&n[t])<<4|n[t+1]>>4],r+=j[(15&n[t+1])<<2|n[t+2]>>6],r+=j[63&n[t+2]];return n.length%3==2?r=r.substring(0,r.length-1)+"=":n.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}var G={serialize:function(e,t){var n="";if(e&&(n=B.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===B.call(e.buffer))){var r,o=A;e instanceof ArrayBuffer?(r=e,o+=I):(r=e.buffer,"[object Int8Array]"===n?o+=T:"[object Uint8Array]"===n?o+=R:"[object Uint8ClampedArray]"===n?o+=$:"[object Int16Array]"===n?o+=P:"[object Uint16Array]"===n?o+=H:"[object Int32Array]"===n?o+=F:"[object Uint32Array]"===n?o+=D:"[object Float32Array]"===n?o+=V:"[object Float64Array]"===n?o+=U:t(new Error("Failed to get type for BinaryArray"))),t(o+q(r))}else if("[object Blob]"===n){var a=new FileReader;a.onload=function(){var n="~~local_forage_type~"+e.type+"~"+q(this.result);t("__lfsc__:blob"+n)},a.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if(e.substring(0,M)!==A)return JSON.parse(e);var t,n=e.substring(W),r=e.substring(M,W);if(r===z&&L.test(n)){var o=n.match(L);t=o[1],n=n.substring(o[0].length)}var i=Y(n);switch(r){case I:return i;case z:return a([i],{type:t});case T:return new Int8Array(i);case R:return new Uint8Array(i);case $:return new Uint8ClampedArray(i);case P:return new Int16Array(i);case H:return new Uint16Array(i);case F:return new Int32Array(i);case D:return new Uint32Array(i);case V:return new Float32Array(i);case U:return new Float64Array(i);default:throw new Error("Unkown type: "+r)}},stringToBuffer:Y,bufferToString:q};function Z(e,t,n,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,r)}function X(e,t,n,r,o,a){e.executeSql(n,r,o,(function(e,i){i.code===i.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,s){s.rows.length?a(e,i):Z(e,t,(function(){e.executeSql(n,r,o,a)}),a)}),a):a(e,i)}),a)}function J(e,t,n,r){var o=this;e=l(e);var a=new i((function(a,i){o.ready().then((function(){void 0===t&&(t=null);var s=t,c=o._dbInfo;c.serializer.serialize(t,(function(t,l){l?i(l):c.db.transaction((function(n){X(n,c,"INSERT OR REPLACE INTO "+c.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){a(s)}),(function(e,t){i(t)}))}),(function(t){if(t.code===t.QUOTA_ERR){if(r>0)return void a(J.apply(o,[e,s,n,r-1]));i(t)}}))}))})).catch(i)}));return s(a,n),a}function K(e){return new i((function(t,n){e.transaction((function(r){r.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],(function(n,r){for(var o=[],a=0;a<r.rows.length;a++)o.push(r.rows.item(a).name);t({db:e,storeNames:o})}),(function(e,t){n(t)}))}),(function(e){n(e)}))}))}var Q={_driver:"webSQLStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]="string"!=typeof e[r]?e[r].toString():e[r];var o=new i((function(e,r){try{n.db=openDatabase(n.name,String(n.version),n.description,n.size)}catch(e){return r(e)}n.db.transaction((function(o){Z(o,n,(function(){t._dbInfo=n,e()}),(function(e,t){r(t)}))}),r)}));return n.serializer=G,o},_support:"function"==typeof openDatabase,iterate:function(e,t){var n=this,r=new i((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){X(n,o,"SELECT * FROM "+o.storeName,[],(function(n,r){for(var a=r.rows,i=a.length,s=0;s<i;s++){var c=a.item(s),l=c.value;if(l&&(l=o.serializer.deserialize(l)),void 0!==(l=e(l,c.key,s+1)))return void t(l)}t()}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=new i((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){X(n,o,"SELECT * FROM "+o.storeName+" WHERE key = ? LIMIT 1",[e],(function(e,n){var r=n.rows.length?n.rows.item(0).value:null;r&&(r=o.serializer.deserialize(r)),t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,t),r},setItem:function(e,t,n){return J.apply(this,[e,t,n,1])},removeItem:function(e,t){var n=this;e=l(e);var r=new i((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){X(n,o,"DELETE FROM "+o.storeName+" WHERE key = ?",[e],(function(){t()}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,t),r},clear:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){X(t,r,"DELETE FROM "+r.storeName,[],(function(){e()}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,e),n},length:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){X(t,r,"SELECT COUNT(key) as c FROM "+r.storeName,[],(function(t,n){var r=n.rows.item(0).c;e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,e),n},key:function(e,t){var n=this,r=new i((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){X(n,o,"SELECT key FROM "+o.storeName+" WHERE id = ? LIMIT 1",[e+1],(function(e,n){var r=n.rows.length?n.rows.item(0).key:null;t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,t),r},keys:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){X(t,r,"SELECT key FROM "+r.storeName,[],(function(t,n){for(var r=[],o=0;o<n.rows.length;o++)r.push(n.rows.item(o).key);e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,e),n},dropInstance:function(e,t){t=u.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,o=this;return s(r=e.name?new i((function(t){var r;r=e.name===n.name?o._dbInfo.db:openDatabase(e.name,"","",0),e.storeName?t({db:r,storeNames:[e.storeName]}):t(K(r))})).then((function(e){return new i((function(t,n){e.db.transaction((function(r){function o(e){return new i((function(t,n){r.executeSql("DROP TABLE IF EXISTS "+e,[],(function(){t()}),(function(e,t){n(t)}))}))}for(var a=[],s=0,c=e.storeNames.length;s<c;s++)a.push(o(e.storeNames[s]));i.all(a).then((function(){t()})).catch((function(e){n(e)}))}),(function(e){n(e)}))}))})):i.reject("Invalid arguments"),t),r}};function ee(e,t){var n=e.name+"/";return e.storeName!==t.storeName&&(n+=e.storeName+"/"),n}var te={_driver:"localStorageWrapper",_initStorage:function(e){var t={};if(e)for(var n in e)t[n]=e[n];return t.keyPrefix=ee(e,this._defaultConfig),!function(){var e="_localforage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch(e){return!0}}()||localStorage.length>0?(this._dbInfo=t,t.serializer=G,i.resolve()):i.reject()},_support:function(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=n.ready().then((function(){for(var t=n._dbInfo,r=t.keyPrefix,o=r.length,a=localStorage.length,i=1,s=0;s<a;s++){var c=localStorage.key(s);if(0===c.indexOf(r)){var l=localStorage.getItem(c);if(l&&(l=t.serializer.deserialize(l)),void 0!==(l=e(l,c.substring(o),i++)))return l}}}));return s(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=n.ready().then((function(){var t=n._dbInfo,r=localStorage.getItem(t.keyPrefix+e);return r&&(r=t.serializer.deserialize(r)),r}));return s(r,t),r},setItem:function(e,t,n){var r=this;e=l(e);var o=r.ready().then((function(){void 0===t&&(t=null);var n=t;return new i((function(o,a){var i=r._dbInfo;i.serializer.serialize(t,(function(t,r){if(r)a(r);else try{localStorage.setItem(i.keyPrefix+e,t),o(n)}catch(e){"QuotaExceededError"!==e.name&&"NS_ERROR_DOM_QUOTA_REACHED"!==e.name||a(e),a(e)}}))}))}));return s(o,n),o},removeItem:function(e,t){var n=this;e=l(e);var r=n.ready().then((function(){var t=n._dbInfo;localStorage.removeItem(t.keyPrefix+e)}));return s(r,t),r},clear:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo.keyPrefix,n=localStorage.length-1;n>=0;n--){var r=localStorage.key(n);0===r.indexOf(e)&&localStorage.removeItem(r)}}));return s(n,e),n},length:function(e){var t=this.keys().then((function(e){return e.length}));return s(t,e),t},key:function(e,t){var n=this,r=n.ready().then((function(){var t,r=n._dbInfo;try{t=localStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(r.keyPrefix.length)),t}));return s(r,t),r},keys:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo,n=localStorage.length,r=[],o=0;o<n;o++){var a=localStorage.key(o);0===a.indexOf(e.keyPrefix)&&r.push(a.substring(e.keyPrefix.length))}return r}));return s(n,e),n},dropInstance:function(e,t){if(t=u.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){var n=this.config();e.name=e.name||n.name,e.storeName=e.storeName||n.storeName}var r,o=this;return s(r=e.name?new i((function(t){e.storeName?t(ee(e,o._defaultConfig)):t(e.name+"/")})).then((function(e){for(var t=localStorage.length-1;t>=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}})):i.reject("Invalid arguments"),t),r}},ne=function(e,t){for(var n,r,o=e.length,a=0;a<o;){if((n=e[a])===(r=t)||"number"==typeof n&&"number"==typeof r&&isNaN(n)&&isNaN(r))return!0;a++}return!1},re=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},oe={},ae={},ie={INDEXEDDB:N,WEBSQL:Q,LOCALSTORAGE:te},se=[ie.INDEXEDDB._driver,ie.WEBSQL._driver,ie.LOCALSTORAGE._driver],ce=["dropInstance"],le=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(ce),ue={description:"",driver:se.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function fe(e,t){e[t]=function(){var n=arguments;return e.ready().then((function(){return e[t].apply(e,n)}))}}function he(){for(var e=1;e<arguments.length;e++){var t=arguments[e];if(t)for(var n in t)t.hasOwnProperty(n)&&(re(t[n])?arguments[0][n]=t[n].slice():arguments[0][n]=t[n])}return arguments[0]}var pe=function(){function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),ie)if(ie.hasOwnProperty(n)){var r=ie[n],o=r._driver;this[n]=o,oe[o]||this.defineDriver(r)}this._defaultConfig=he({},ue),this._config=he({},this._defaultConfig,t),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch((function(){}))}return e.prototype.config=function(e){if("object"===(void 0===e?"undefined":r(e))){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var t in e){if("storeName"===t&&(e[t]=e[t].replace(/\W/g,"_")),"version"===t&&"number"!=typeof e[t])return new Error("Database version must be a number.");this._config[t]=e[t]}return!("driver"in e)||!e.driver||this.setDriver(this._config.driver)}return"string"==typeof e?this._config[e]:this._config},e.prototype.defineDriver=function(e,t,n){var r=new i((function(t,n){try{var r=e._driver,o=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!e._driver)return void n(o);for(var a=le.concat("_initStorage"),c=0,l=a.length;c<l;c++){var u=a[c];if((!ne(ce,u)||e[u])&&"function"!=typeof e[u])return void n(o)}!function(){for(var t=function(e){return function(){var t=new Error("Method "+e+" is not implemented by the current driver"),n=i.reject(t);return s(n,arguments[arguments.length-1]),n}},n=0,r=ce.length;n<r;n++){var o=ce[n];e[o]||(e[o]=t(o))}}();var f=function(n){oe[r]&&console.info("Redefining LocalForage driver: "+r),oe[r]=e,ae[r]=n,t()};"_support"in e?e._support&&"function"==typeof e._support?e._support().then(f,n):f(!!e._support):f(!0)}catch(e){n(e)}}));return c(r,t,n),r},e.prototype.driver=function(){return this._driver||null},e.prototype.getDriver=function(e,t,n){var r=oe[e]?i.resolve(oe[e]):i.reject(new Error("Driver not found."));return c(r,t,n),r},e.prototype.getSerializer=function(e){var t=i.resolve(G);return c(t,e),t},e.prototype.ready=function(e){var t=this,n=t._driverSet.then((function(){return null===t._ready&&(t._ready=t._initDriver()),t._ready}));return c(n,e,e),n},e.prototype.setDriver=function(e,t,n){var r=this;re(e)||(e=[e]);var o=this._getSupportedDrivers(e);function a(){r._config.driver=r.driver()}function s(e){return r._extend(e),a(),r._ready=r._initStorage(r._config),r._ready}var l=null!==this._driverSet?this._driverSet.catch((function(){return i.resolve()})):i.resolve();return this._driverSet=l.then((function(){var e=o[0];return r._dbInfo=null,r._ready=null,r.getDriver(e).then((function(e){r._driver=e._driver,a(),r._wrapLibraryMethodsWithReady(),r._initDriver=function(e){return function(){var t=0;return function n(){for(;t<e.length;){var o=e[t];return t++,r._dbInfo=null,r._ready=null,r.getDriver(o).then(s).catch(n)}a();var c=new Error("No available storage method found.");return r._driverSet=i.reject(c),r._driverSet}()}}(o)}))})).catch((function(){a();var e=new Error("No available storage method found.");return r._driverSet=i.reject(e),r._driverSet})),c(this._driverSet,t,n),this._driverSet},e.prototype.supports=function(e){return!!ae[e]},e.prototype._extend=function(e){he(this,e)},e.prototype._getSupportedDrivers=function(e){for(var t=[],n=0,r=e.length;n<r;n++){var o=e[n];this.supports(o)&&t.push(o)}return t},e.prototype._wrapLibraryMethodsWithReady=function(){for(var e=0,t=le.length;e<t;e++)fe(this,le[e])},e.prototype.createInstance=function(t){return new e(t)},e}(),de=new pe;t.exports=de},{3:3}]},{},[4])(4)}))},72378:(e,t,n)=>{e=n.nmd(e);var r="__lodash_hash_undefined__",o=9007199254740991,a="[object Arguments]",i="[object Function]",s="[object Object]",c=/^\[object .+?Constructor\]$/,l=/^(?:0|[1-9]\d*)$/,u={};u["[object Float32Array]"]=u["[object Float64Array]"]=u["[object Int8Array]"]=u["[object Int16Array]"]=u["[object Int32Array]"]=u["[object Uint8Array]"]=u["[object Uint8ClampedArray]"]=u["[object Uint16Array]"]=u["[object Uint32Array]"]=!0,u[a]=u["[object Array]"]=u["[object ArrayBuffer]"]=u["[object Boolean]"]=u["[object DataView]"]=u["[object Date]"]=u["[object Error]"]=u[i]=u["[object Map]"]=u["[object Number]"]=u[s]=u["[object RegExp]"]=u["[object Set]"]=u["[object String]"]=u["[object WeakMap]"]=!1;var f="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,h="object"==typeof self&&self&&self.Object===Object&&self,p=f||h||Function("return this")(),d=t&&!t.nodeType&&t,m=d&&e&&!e.nodeType&&e,v=m&&m.exports===d,g=v&&f.process,b=function(){try{return m&&m.require&&m.require("util").types||g&&g.binding&&g.binding("util")}catch(e){}}(),y=b&&b.isTypedArray;function _(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var w,x,k,S=Array.prototype,C=Function.prototype,E=Object.prototype,O=p["__core-js_shared__"],N=C.toString,j=E.hasOwnProperty,L=(w=/[^.]+$/.exec(O&&O.keys&&O.keys.IE_PROTO||""))?"Symbol(src)_1."+w:"",A=E.toString,M=N.call(Object),I=RegExp("^"+N.call(j).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),z=v?p.Buffer:void 0,T=p.Symbol,R=p.Uint8Array,$=(z&&z.allocUnsafe,x=Object.getPrototypeOf,k=Object,function(e){return x(k(e))}),P=Object.create,F=E.propertyIsEnumerable,H=S.splice,D=T?T.toStringTag:void 0,V=function(){try{var e=ce(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),U=z?z.isBuffer:void 0,W=Math.max,B=Date.now,Y=ce(p,"Map"),q=ce(Object,"create"),G=function(){function e(){}return function(t){if(!_e(t))return{};if(P)return P(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function Z(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function X(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function J(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function K(e){var t=this.__data__=new X(e);this.size=t.size}function Q(e,t,n){(void 0!==n&&!pe(e[t],n)||void 0===n&&!(t in e))&&ne(e,t,n)}function ee(e,t,n){var r=e[t];j.call(e,t)&&pe(r,n)&&(void 0!==n||t in e)||ne(e,t,n)}function te(e,t){for(var n=e.length;n--;)if(pe(e[n][0],t))return n;return-1}function ne(e,t,n){"__proto__"==t&&V?V(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}Z.prototype.clear=function(){this.__data__=q?q(null):{},this.size=0},Z.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},Z.prototype.get=function(e){var t=this.__data__;if(q){var n=t[e];return n===r?void 0:n}return j.call(t,e)?t[e]:void 0},Z.prototype.has=function(e){var t=this.__data__;return q?void 0!==t[e]:j.call(t,e)},Z.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=q&&void 0===t?r:t,this},X.prototype.clear=function(){this.__data__=[],this.size=0},X.prototype.delete=function(e){var t=this.__data__,n=te(t,e);return!(n<0||(n==t.length-1?t.pop():H.call(t,n,1),--this.size,0))},X.prototype.get=function(e){var t=this.__data__,n=te(t,e);return n<0?void 0:t[n][1]},X.prototype.has=function(e){return te(this.__data__,e)>-1},X.prototype.set=function(e,t){var n=this.__data__,r=te(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},J.prototype.clear=function(){this.size=0,this.__data__={hash:new Z,map:new(Y||X),string:new Z}},J.prototype.delete=function(e){var t=se(this,e).delete(e);return this.size-=t?1:0,t},J.prototype.get=function(e){return se(this,e).get(e)},J.prototype.has=function(e){return se(this,e).has(e)},J.prototype.set=function(e,t){var n=se(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},K.prototype.clear=function(){this.__data__=new X,this.size=0},K.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},K.prototype.get=function(e){return this.__data__.get(e)},K.prototype.has=function(e){return this.__data__.has(e)},K.prototype.set=function(e,t){var n=this.__data__;if(n instanceof X){var r=n.__data__;if(!Y||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new J(r)}return n.set(e,t),this.size=n.size,this};function re(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":D&&D in Object(e)?function(e){var t=j.call(e,D),n=e[D];try{e[D]=void 0;var r=!0}catch(e){}var o=A.call(e);return r&&(t?e[D]=n:delete e[D]),o}(e):function(e){return A.call(e)}(e)}function oe(e){return we(e)&&re(e)==a}function ae(e,t,n,r,o){e!==t&&function(e,t,n){for(var r=-1,o=Object(e),a=n(e),i=a.length;i--;){var s=a[++r];if(!1===t(o[s],s,o))break}}(t,(function(a,i){if(o||(o=new K),_e(a))!function(e,t,n,r,o,a,i){var c=fe(e,n),l=fe(t,n),u=i.get(l);if(u)Q(e,n,u);else{var f,h,p,d,m,v=a?a(c,l,n+"",e,t,i):void 0,g=void 0===v;if(g){var b=me(l),y=!b&&ge(l),_=!b&&!y&&xe(l);v=l,b||y||_?me(c)?v=c:we(m=c)&&ve(m)?v=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}(c):y?(g=!1,v=function(e,t){return e.slice()}(l)):_?(g=!1,d=new(p=(f=l).buffer).constructor(p.byteLength),new R(d).set(new R(p)),h=d,v=new f.constructor(h,f.byteOffset,f.length)):v=[]:function(e){if(!we(e)||re(e)!=s)return!1;var t=$(e);if(null===t)return!0;var n=j.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&N.call(n)==M}(l)||de(l)?(v=c,de(c)?v=function(e){return function(e,t,n,r){var o=!n;n||(n={});for(var a=-1,i=t.length;++a<i;){var s=t[a],c=void 0;void 0===c&&(c=e[s]),o?ne(n,s,c):ee(n,s,c)}return n}(e,ke(e))}(c):_e(c)&&!be(c)||(v=function(e){return"function"!=typeof e.constructor||ue(e)?{}:G($(e))}(l))):g=!1}g&&(i.set(l,v),o(v,l,r,a,i),i.delete(l)),Q(e,n,v)}}(e,t,i,n,ae,r,o);else{var c=r?r(fe(e,i),a,i+"",e,t,o):void 0;void 0===c&&(c=a),Q(e,i,c)}}),ke)}var ie=V?function(e,t){return V(e,"toString",{configurable:!0,enumerable:!1,value:(n=t,function(){return n}),writable:!0});var n}:Ee;function se(e,t){var n,r,o=e.__data__;return("string"==(r=typeof(n=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?o["string"==typeof t?"string":"hash"]:o.map}function ce(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return function(e){return!(!_e(e)||function(e){return!!L&&L in e}(e))&&(be(e)?I:c).test(function(e){if(null!=e){try{return N.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}(n)?n:void 0}function le(e,t){var n=typeof e;return!!(t=null==t?o:t)&&("number"==n||"symbol"!=n&&l.test(e))&&e>-1&&e%1==0&&e<t}function ue(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||E)}function fe(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var he=function(e){var t=0,n=0;return function(){var r=B(),o=16-(r-n);if(n=r,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(ie);function pe(e,t){return e===t||e!=e&&t!=t}var de=oe(function(){return arguments}())?oe:function(e){return we(e)&&j.call(e,"callee")&&!F.call(e,"callee")},me=Array.isArray;function ve(e){return null!=e&&ye(e.length)&&!be(e)}var ge=U||function(){return!1};function be(e){if(!_e(e))return!1;var t=re(e);return t==i||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}function ye(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=o}function _e(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function we(e){return null!=e&&"object"==typeof e}var xe=y?function(e){return function(t){return e(t)}}(y):function(e){return we(e)&&ye(e.length)&&!!u[re(e)]};function ke(e){return ve(e)?function(e,t){var n=me(e),r=!n&&de(e),o=!n&&!r&&ge(e),a=!n&&!r&&!o&&xe(e),i=n||r||o||a,s=i?function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}(e.length,String):[],c=s.length;for(var l in e)!t&&!j.call(e,l)||i&&("length"==l||o&&("offset"==l||"parent"==l)||a&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||le(l,c))||s.push(l);return s}(e,!0):function(e){if(!_e(e))return function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}(e);var t=ue(e),n=[];for(var r in e)("constructor"!=r||!t&&j.call(e,r))&&n.push(r);return n}(e)}var Se,Ce=(Se=function(e,t,n){ae(e,t,n)},function(e,t){return he(function(e,t,n){return t=W(void 0===t?e.length-1:t,0),function(){for(var r=arguments,o=-1,a=W(r.length-t,0),i=Array(a);++o<a;)i[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=n(i),_(e,this,s)}}(e,t,Ee),e+"")}((function(e,t){var n=-1,r=t.length,o=r>1?t[r-1]:void 0,a=r>2?t[2]:void 0;for(o=Se.length>3&&"function"==typeof o?(r--,o):void 0,a&&function(e,t,n){if(!_e(n))return!1;var r=typeof t;return!!("number"==r?ve(n)&&le(t,n.length):"string"==r&&t in n)&&pe(n[t],e)}(t[0],t[1],a)&&(o=r<3?void 0:o,r=1),e=Object(e);++n<r;){var i=t[n];i&&Se(e,i,n)}return e})));function Ee(e){return e}e.exports=Ce},18552:(e,t,n)=>{var r=n(10852)(n(55639),"DataView");e.exports=r},1989:(e,t,n)=>{var r=n(51789),o=n(80401),a=n(57667),i=n(21327),s=n(81866);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=a,c.prototype.has=i,c.prototype.set=s,e.exports=c},38407:(e,t,n)=>{var r=n(27040),o=n(14125),a=n(82117),i=n(67518),s=n(54705);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=a,c.prototype.has=i,c.prototype.set=s,e.exports=c},57071:(e,t,n)=>{var r=n(10852)(n(55639),"Map");e.exports=r},83369:(e,t,n)=>{var r=n(24785),o=n(11285),a=n(96e3),i=n(49916),s=n(95265);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=a,c.prototype.has=i,c.prototype.set=s,e.exports=c},53818:(e,t,n)=>{var r=n(10852)(n(55639),"Promise");e.exports=r},58525:(e,t,n)=>{var r=n(10852)(n(55639),"Set");e.exports=r},88668:(e,t,n)=>{var r=n(83369),o=n(90619),a=n(72385);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}i.prototype.add=i.prototype.push=o,i.prototype.has=a,e.exports=i},46384:(e,t,n)=>{var r=n(38407),o=n(37465),a=n(63779),i=n(67599),s=n(44758),c=n(34309);function l(e){var t=this.__data__=new r(e);this.size=t.size}l.prototype.clear=o,l.prototype.delete=a,l.prototype.get=i,l.prototype.has=s,l.prototype.set=c,e.exports=l},62705:(e,t,n)=>{var r=n(55639).Symbol;e.exports=r},11149:(e,t,n)=>{var r=n(55639).Uint8Array;e.exports=r},70577:(e,t,n)=>{var r=n(10852)(n(55639),"WeakMap");e.exports=r},96874:e=>{e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},44174:e=>{e.exports=function(e,t,n,r){for(var o=-1,a=null==e?0:e.length;++o<a;){var i=e[o];t(r,i,n(i),e)}return r}},77412:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},34963:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=0,a=[];++n<r;){var i=e[n];t(i,n,e)&&(a[o++]=i)}return a}},47443:(e,t,n)=>{var r=n(42118);e.exports=function(e,t){return!(null==e||!e.length)&&r(e,t,0)>-1}},1196:e=>{e.exports=function(e,t,n){for(var r=-1,o=null==e?0:e.length;++r<o;)if(n(t,e[r]))return!0;return!1}},14636:(e,t,n)=>{var r=n(22545),o=n(35694),a=n(1469),i=n(44144),s=n(65776),c=n(36719),l=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=a(e),u=!n&&o(e),f=!n&&!u&&i(e),h=!n&&!u&&!f&&c(e),p=n||u||f||h,d=p?r(e.length,String):[],m=d.length;for(var v in e)!t&&!l.call(e,v)||p&&("length"==v||f&&("offset"==v||"parent"==v)||h&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||s(v,m))||d.push(v);return d}},29932:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=Array(r);++n<r;)o[n]=t(e[n],n,e);return o}},62488:e=>{e.exports=function(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}},62663:e=>{e.exports=function(e,t,n,r){var o=-1,a=null==e?0:e.length;for(r&&a&&(n=e[++o]);++o<a;)n=t(n,e[o],o,e);return n}},70151:(e,t,n)=>{var r=n(278),o=n(73480);e.exports=function(e){return o(r(e))}},82908:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},44286:e=>{e.exports=function(e){return e.split("")}},49029:e=>{var t=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(t)||[]}},86556:(e,t,n)=>{var r=n(89465),o=n(77813);e.exports=function(e,t,n){(void 0!==n&&!o(e[t],n)||void 0===n&&!(t in e))&&r(e,t,n)}},34865:(e,t,n)=>{var r=n(89465),o=n(77813),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var i=e[t];a.call(e,t)&&o(i,n)&&(void 0!==n||t in e)||r(e,t,n)}},18470:(e,t,n)=>{var r=n(77813);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},81119:(e,t,n)=>{var r=n(89881);e.exports=function(e,t,n,o){return r(e,(function(e,r,a){t(o,e,n(e),a)})),o}},44037:(e,t,n)=>{var r=n(98363),o=n(3674);e.exports=function(e,t){return e&&r(t,o(t),e)}},63886:(e,t,n)=>{var r=n(98363),o=n(81704);e.exports=function(e,t){return e&&r(t,o(t),e)}},89465:(e,t,n)=>{var r=n(38777);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},29750:e=>{e.exports=function(e,t,n){return e==e&&(void 0!==n&&(e=e<=n?e:n),void 0!==t&&(e=e>=t?e:t)),e}},85990:(e,t,n)=>{var r=n(46384),o=n(77412),a=n(34865),i=n(44037),s=n(63886),c=n(64626),l=n(278),u=n(18805),f=n(1911),h=n(58234),p=n(46904),d=n(64160),m=n(43824),v=n(29148),g=n(38517),b=n(1469),y=n(44144),_=n(56688),w=n(13218),x=n(72928),k=n(3674),S=n(81704),C="[object Arguments]",E="[object Function]",O="[object Object]",N={};N[C]=N["[object Array]"]=N["[object ArrayBuffer]"]=N["[object DataView]"]=N["[object Boolean]"]=N["[object Date]"]=N["[object Float32Array]"]=N["[object Float64Array]"]=N["[object Int8Array]"]=N["[object Int16Array]"]=N["[object Int32Array]"]=N["[object Map]"]=N["[object Number]"]=N[O]=N["[object RegExp]"]=N["[object Set]"]=N["[object String]"]=N["[object Symbol]"]=N["[object Uint8Array]"]=N["[object Uint8ClampedArray]"]=N["[object Uint16Array]"]=N["[object Uint32Array]"]=!0,N["[object Error]"]=N[E]=N["[object WeakMap]"]=!1,e.exports=function e(t,n,j,L,A,M){var I,z=1&n,T=2&n,R=4&n;if(j&&(I=A?j(t,L,A,M):j(t)),void 0!==I)return I;if(!w(t))return t;var $=b(t);if($){if(I=m(t),!z)return l(t,I)}else{var P=d(t),F=P==E||"[object GeneratorFunction]"==P;if(y(t))return c(t,z);if(P==O||P==C||F&&!A){if(I=T||F?{}:g(t),!z)return T?f(t,s(I,t)):u(t,i(I,t))}else{if(!N[P])return A?t:{};I=v(t,P,z)}}M||(M=new r);var H=M.get(t);if(H)return H;M.set(t,I),x(t)?t.forEach((function(r){I.add(e(r,n,j,r,t,M))})):_(t)&&t.forEach((function(r,o){I.set(o,e(r,n,j,o,t,M))}));var D=$?void 0:(R?T?p:h:T?S:k)(t);return o(D||t,(function(r,o){D&&(r=t[o=r]),a(I,o,e(r,n,j,o,t,M))})),I}},3118:(e,t,n)=>{var r=n(13218),o=Object.create,a=function(){function e(){}return function(t){if(!r(t))return{};if(o)return o(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=a},89881:(e,t,n)=>{var r=n(47816),o=n(99291)(r);e.exports=o},56029:(e,t,n)=>{var r=n(33448);e.exports=function(e,t,n){for(var o=-1,a=e.length;++o<a;){var i=e[o],s=t(i);if(null!=s&&(void 0===c?s==s&&!r(s):n(s,c)))var c=s,l=i}return l}},80760:(e,t,n)=>{var r=n(89881);e.exports=function(e,t){var n=[];return r(e,(function(e,r,o){t(e,r,o)&&n.push(e)})),n}},41848:e=>{e.exports=function(e,t,n,r){for(var o=e.length,a=n+(r?1:-1);r?a--:++a<o;)if(t(e[a],a,e))return a;return-1}},21078:(e,t,n)=>{var r=n(62488),o=n(37285);e.exports=function e(t,n,a,i,s){var c=-1,l=t.length;for(a||(a=o),s||(s=[]);++c<l;){var u=t[c];n>0&&a(u)?n>1?e(u,n-1,a,i,s):r(s,u):i||(s[s.length]=u)}return s}},28483:(e,t,n)=>{var r=n(25063)();e.exports=r},47816:(e,t,n)=>{var r=n(28483),o=n(3674);e.exports=function(e,t){return e&&r(e,t,o)}},97786:(e,t,n)=>{var r=n(71811),o=n(40327);e.exports=function(e,t){for(var n=0,a=(t=r(t,e)).length;null!=e&&n<a;)e=e[o(t[n++])];return n&&n==a?e:void 0}},68866:(e,t,n)=>{var r=n(62488),o=n(1469);e.exports=function(e,t,n){var a=t(e);return o(e)?a:r(a,n(e))}},44239:(e,t,n)=>{var r=n(62705),o=n(89607),a=n(2333),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?o(e):a(e)}},53325:e=>{e.exports=function(e,t){return e>t}},13:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},42118:(e,t,n)=>{var r=n(41848),o=n(62722),a=n(42351);e.exports=function(e,t,n){return t==t?a(e,t,n):r(e,o,n)}},9454:(e,t,n)=>{var r=n(44239),o=n(37005);e.exports=function(e){return o(e)&&"[object Arguments]"==r(e)}},90939:(e,t,n)=>{var r=n(2492),o=n(37005);e.exports=function e(t,n,a,i,s){return t===n||(null==t||null==n||!o(t)&&!o(n)?t!=t&&n!=n:r(t,n,a,i,e,s))}},2492:(e,t,n)=>{var r=n(46384),o=n(67114),a=n(18351),i=n(16096),s=n(64160),c=n(1469),l=n(44144),u=n(36719),f="[object Arguments]",h="[object Array]",p="[object Object]",d=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,v,g){var b=c(e),y=c(t),_=b?h:s(e),w=y?h:s(t),x=(_=_==f?p:_)==p,k=(w=w==f?p:w)==p,S=_==w;if(S&&l(e)){if(!l(t))return!1;b=!0,x=!1}if(S&&!x)return g||(g=new r),b||u(e)?o(e,t,n,m,v,g):a(e,t,_,n,m,v,g);if(!(1&n)){var C=x&&d.call(e,"__wrapped__"),E=k&&d.call(t,"__wrapped__");if(C||E){var O=C?e.value():e,N=E?t.value():t;return g||(g=new r),v(O,N,n,m,g)}}return!!S&&(g||(g=new r),i(e,t,n,m,v,g))}},25588:(e,t,n)=>{var r=n(64160),o=n(37005);e.exports=function(e){return o(e)&&"[object Map]"==r(e)}},2958:(e,t,n)=>{var r=n(46384),o=n(90939);e.exports=function(e,t,n,a){var i=n.length,s=i,c=!a;if(null==e)return!s;for(e=Object(e);i--;){var l=n[i];if(c&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++i<s;){var u=(l=n[i])[0],f=e[u],h=l[1];if(c&&l[2]){if(void 0===f&&!(u in e))return!1}else{var p=new r;if(a)var d=a(f,h,u,e,t,p);if(!(void 0===d?o(h,f,3,a,p):d))return!1}}return!0}},62722:e=>{e.exports=function(e){return e!=e}},28458:(e,t,n)=>{var r=n(23560),o=n(15346),a=n(13218),i=n(80346),s=/^\[object .+?Constructor\]$/,c=Function.prototype,l=Object.prototype,u=c.toString,f=l.hasOwnProperty,h=RegExp("^"+u.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!a(e)||o(e))&&(r(e)?h:s).test(i(e))}},29221:(e,t,n)=>{var r=n(64160),o=n(37005);e.exports=function(e){return o(e)&&"[object Set]"==r(e)}},38749:(e,t,n)=>{var r=n(44239),o=n(41780),a=n(37005),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return a(e)&&o(e.length)&&!!i[r(e)]}},67206:(e,t,n)=>{var r=n(91573),o=n(16432),a=n(6557),i=n(1469),s=n(39601);e.exports=function(e){return"function"==typeof e?e:null==e?a:"object"==typeof e?i(e)?o(e[0],e[1]):r(e):s(e)}},280:(e,t,n)=>{var r=n(25726),o=n(86916),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=[];for(var n in Object(e))a.call(e,n)&&"constructor"!=n&&t.push(n);return t}},10313:(e,t,n)=>{var r=n(13218),o=n(25726),a=n(33498),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return a(e);var t=o(e),n=[];for(var s in e)("constructor"!=s||!t&&i.call(e,s))&&n.push(s);return n}},70433:e=>{e.exports=function(e,t){return e<t}},69199:(e,t,n)=>{var r=n(89881),o=n(98612);e.exports=function(e,t){var n=-1,a=o(e)?Array(e.length):[];return r(e,(function(e,r,o){a[++n]=t(e,r,o)})),a}},91573:(e,t,n)=>{var r=n(2958),o=n(1499),a=n(42634);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?a(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},16432:(e,t,n)=>{var r=n(90939),o=n(27361),a=n(79095),i=n(15403),s=n(89162),c=n(42634),l=n(40327);e.exports=function(e,t){return i(e)&&s(t)?c(l(e),t):function(n){var i=o(n,e);return void 0===i&&i===t?a(n,e):r(t,i,3)}}},42980:(e,t,n)=>{var r=n(46384),o=n(86556),a=n(28483),i=n(59783),s=n(13218),c=n(81704),l=n(36390);e.exports=function e(t,n,u,f,h){t!==n&&a(n,(function(a,c){if(h||(h=new r),s(a))i(t,n,c,u,e,f,h);else{var p=f?f(l(t,c),a,c+"",t,n,h):void 0;void 0===p&&(p=a),o(t,c,p)}}),c)}},59783:(e,t,n)=>{var r=n(86556),o=n(64626),a=n(77133),i=n(278),s=n(38517),c=n(35694),l=n(1469),u=n(29246),f=n(44144),h=n(23560),p=n(13218),d=n(68630),m=n(36719),v=n(36390),g=n(59881);e.exports=function(e,t,n,b,y,_,w){var x=v(e,n),k=v(t,n),S=w.get(k);if(S)r(e,n,S);else{var C=_?_(x,k,n+"",e,t,w):void 0,E=void 0===C;if(E){var O=l(k),N=!O&&f(k),j=!O&&!N&&m(k);C=k,O||N||j?l(x)?C=x:u(x)?C=i(x):N?(E=!1,C=o(k,!0)):j?(E=!1,C=a(k,!0)):C=[]:d(k)||c(k)?(C=x,c(x)?C=g(x):p(x)&&!h(x)||(C=s(k))):E=!1}E&&(w.set(k,C),y(C,k,b,_,w),w.delete(k)),r(e,n,C)}}},82689:(e,t,n)=>{var r=n(29932),o=n(97786),a=n(67206),i=n(69199),s=n(71131),c=n(7518),l=n(85022),u=n(6557),f=n(1469);e.exports=function(e,t,n){t=t.length?r(t,(function(e){return f(e)?function(t){return o(t,1===e.length?e[0]:e)}:e})):[u];var h=-1;t=r(t,c(a));var p=i(e,(function(e,n,o){return{criteria:r(t,(function(t){return t(e)})),index:++h,value:e}}));return s(p,(function(e,t){return l(e,t,n)}))}},63012:(e,t,n)=>{var r=n(97786),o=n(10611),a=n(71811);e.exports=function(e,t,n){for(var i=-1,s=t.length,c={};++i<s;){var l=t[i],u=r(e,l);n(u,l)&&o(c,a(l,e),u)}return c}},40371:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},79152:(e,t,n)=>{var r=n(97786);e.exports=function(e){return function(t){return r(t,e)}}},18674:e=>{e.exports=function(e){return function(t){return null==e?void 0:e[t]}}},15742:(e,t,n)=>{var r=n(57406),o=n(65776),a=Array.prototype.splice;e.exports=function(e,t){for(var n=e?t.length:0,i=n-1;n--;){var s=t[n];if(n==i||s!==c){var c=s;o(s)?a.call(e,s,1):r(e,s)}}return e}},69877:e=>{var t=Math.floor,n=Math.random;e.exports=function(e,r){return e+t(n()*(r-e+1))}},10107:e=>{e.exports=function(e,t,n,r,o){return o(e,(function(e,o,a){n=r?(r=!1,e):t(n,e,o,a)})),n}},5976:(e,t,n)=>{var r=n(6557),o=n(45357),a=n(30061);e.exports=function(e,t){return a(o(e,t,r),e+"")}},10611:(e,t,n)=>{var r=n(34865),o=n(71811),a=n(65776),i=n(13218),s=n(40327);e.exports=function(e,t,n,c){if(!i(e))return e;for(var l=-1,u=(t=o(t,e)).length,f=u-1,h=e;null!=h&&++l<u;){var p=s(t[l]),d=n;if("__proto__"===p||"constructor"===p||"prototype"===p)return e;if(l!=f){var m=h[p];void 0===(d=c?c(m,p,h):void 0)&&(d=i(m)?m:a(t[l+1])?[]:{})}r(h,p,d),h=h[p]}return e}},56560:(e,t,n)=>{var r=n(75703),o=n(38777),a=n(6557),i=o?function(e,t){return o(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:a;e.exports=i},25127:(e,t,n)=>{var r=n(73480),o=n(52628);e.exports=function(e){return r(o(e))}},14259:e=>{e.exports=function(e,t,n){var r=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(o);++r<o;)a[r]=e[r+t];return a}},71131:e=>{e.exports=function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}},67762:e=>{e.exports=function(e,t){for(var n,r=-1,o=e.length;++r<o;){var a=t(e[r]);void 0!==a&&(n=void 0===n?a:n+a)}return n}},22545:e=>{e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},80531:(e,t,n)=>{var r=n(62705),o=n(29932),a=n(1469),i=n(33448),s=r?r.prototype:void 0,c=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(a(t))return o(t,e)+"";if(i(t))return c?c.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},27561:(e,t,n)=>{var r=n(67990),o=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(o,""):e}},7518:e=>{e.exports=function(e){return function(t){return e(t)}}},45652:(e,t,n)=>{var r=n(88668),o=n(47443),a=n(1196),i=n(74757),s=n(23593),c=n(21814);e.exports=function(e,t,n){var l=-1,u=o,f=e.length,h=!0,p=[],d=p;if(n)h=!1,u=a;else if(f>=200){var m=t?null:s(e);if(m)return c(m);h=!1,u=i,d=new r}else d=t?[]:p;e:for(;++l<f;){var v=e[l],g=t?t(v):v;if(v=n||0!==v?v:0,h&&g==g){for(var b=d.length;b--;)if(d[b]===g)continue e;t&&d.push(g),p.push(v)}else u(d,g,n)||(d!==p&&d.push(g),p.push(v))}return p}},57406:(e,t,n)=>{var r=n(71811),o=n(10928),a=n(40292),i=n(40327);e.exports=function(e,t){return t=r(t,e),null==(e=a(e,t))||delete e[i(o(t))]}},47415:(e,t,n)=>{var r=n(29932);e.exports=function(e,t){return r(t,(function(t){return e[t]}))}},74757:e=>{e.exports=function(e,t){return e.has(t)}},54290:(e,t,n)=>{var r=n(6557);e.exports=function(e){return"function"==typeof e?e:r}},71811:(e,t,n)=>{var r=n(1469),o=n(15403),a=n(55514),i=n(79833);e.exports=function(e,t){return r(e)?e:o(e,t)?[e]:a(i(e))}},40180:(e,t,n)=>{var r=n(14259);e.exports=function(e,t,n){var o=e.length;return n=void 0===n?o:n,!t&&n>=o?e:r(e,t,n)}},5512:(e,t,n)=>{var r=n(42118);e.exports=function(e,t){for(var n=e.length;n--&&r(t,e[n],0)>-1;);return n}},89817:(e,t,n)=>{var r=n(42118);e.exports=function(e,t){for(var n=-1,o=e.length;++n<o&&r(t,e[n],0)>-1;);return n}},74318:(e,t,n)=>{var r=n(11149);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},64626:(e,t,n)=>{e=n.nmd(e);var r=n(55639),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,i=a&&a.exports===o?r.Buffer:void 0,s=i?i.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=s?s(n):new e.constructor(n);return e.copy(r),r}},57157:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},93147:e=>{var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},40419:(e,t,n)=>{var r=n(62705),o=r?r.prototype:void 0,a=o?o.valueOf:void 0;e.exports=function(e){return a?Object(a.call(e)):{}}},77133:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},26393:(e,t,n)=>{var r=n(33448);e.exports=function(e,t){if(e!==t){var n=void 0!==e,o=null===e,a=e==e,i=r(e),s=void 0!==t,c=null===t,l=t==t,u=r(t);if(!c&&!u&&!i&&e>t||i&&s&&l&&!c&&!u||o&&s&&l||!n&&l||!a)return 1;if(!o&&!i&&!u&&e<t||u&&n&&a&&!o&&!i||c&&n&&a||!s&&a||!l)return-1}return 0}},85022:(e,t,n)=>{var r=n(26393);e.exports=function(e,t,n){for(var o=-1,a=e.criteria,i=t.criteria,s=a.length,c=n.length;++o<s;){var l=r(a[o],i[o]);if(l)return o>=c?l:l*("desc"==n[o]?-1:1)}return e.index-t.index}},278:e=>{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},98363:(e,t,n)=>{var r=n(34865),o=n(89465);e.exports=function(e,t,n,a){var i=!n;n||(n={});for(var s=-1,c=t.length;++s<c;){var l=t[s],u=a?a(n[l],e[l],l,n,e):void 0;void 0===u&&(u=e[l]),i?o(n,l,u):r(n,l,u)}return n}},18805:(e,t,n)=>{var r=n(98363),o=n(99551);e.exports=function(e,t){return r(e,o(e),t)}},1911:(e,t,n)=>{var r=n(98363),o=n(51442);e.exports=function(e,t){return r(e,o(e),t)}},14429:(e,t,n)=>{var r=n(55639)["__core-js_shared__"];e.exports=r},55189:(e,t,n)=>{var r=n(44174),o=n(81119),a=n(67206),i=n(1469);e.exports=function(e,t){return function(n,s){var c=i(n)?r:o,l=t?t():{};return c(n,e,a(s,2),l)}}},21463:(e,t,n)=>{var r=n(5976),o=n(16612);e.exports=function(e){return r((function(t,n){var r=-1,a=n.length,i=a>1?n[a-1]:void 0,s=a>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(a--,i):void 0,s&&o(n[0],n[1],s)&&(i=a<3?void 0:i,a=1),t=Object(t);++r<a;){var c=n[r];c&&e(t,c,r,i)}return t}))}},99291:(e,t,n)=>{var r=n(98612);e.exports=function(e,t){return function(n,o){if(null==n)return n;if(!r(n))return e(n,o);for(var a=n.length,i=t?a:-1,s=Object(n);(t?i--:++i<a)&&!1!==o(s[i],i,s););return n}}},25063:e=>{e.exports=function(e){return function(t,n,r){for(var o=-1,a=Object(t),i=r(t),s=i.length;s--;){var c=i[e?s:++o];if(!1===n(a[c],c,a))break}return t}}},98805:(e,t,n)=>{var r=n(40180),o=n(62689),a=n(83140),i=n(79833);e.exports=function(e){return function(t){t=i(t);var n=o(t)?a(t):void 0,s=n?n[0]:t.charAt(0),c=n?r(n,1).join(""):t.slice(1);return s[e]()+c}}},35393:(e,t,n)=>{var r=n(62663),o=n(53816),a=n(58748),i=RegExp("['’]","g");e.exports=function(e){return function(t){return r(a(o(t).replace(i,"")),e,"")}}},67740:(e,t,n)=>{var r=n(67206),o=n(98612),a=n(3674);e.exports=function(e){return function(t,n,i){var s=Object(t);if(!o(t)){var c=r(n,3);t=a(t),n=function(e){return c(s[e],e,s)}}var l=e(t,n,i);return l>-1?s[c?t[l]:l]:void 0}}},23593:(e,t,n)=>{var r=n(58525),o=n(50308),a=n(21814),i=r&&1/a(new r([,-0]))[1]==1/0?function(e){return new r(e)}:o;e.exports=i},69389:(e,t,n)=>{var r=n(18674)({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"});e.exports=r},38777:(e,t,n)=>{var r=n(10852),o=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=o},67114:(e,t,n)=>{var r=n(88668),o=n(82908),a=n(74757);e.exports=function(e,t,n,i,s,c){var l=1&n,u=e.length,f=t.length;if(u!=f&&!(l&&f>u))return!1;var h=c.get(e),p=c.get(t);if(h&&p)return h==t&&p==e;var d=-1,m=!0,v=2&n?new r:void 0;for(c.set(e,t),c.set(t,e);++d<u;){var g=e[d],b=t[d];if(i)var y=l?i(b,g,d,t,e,c):i(g,b,d,e,t,c);if(void 0!==y){if(y)continue;m=!1;break}if(v){if(!o(t,(function(e,t){if(!a(v,t)&&(g===e||s(g,e,n,i,c)))return v.push(t)}))){m=!1;break}}else if(g!==b&&!s(g,b,n,i,c)){m=!1;break}}return c.delete(e),c.delete(t),m}},18351:(e,t,n)=>{var r=n(62705),o=n(11149),a=n(77813),i=n(67114),s=n(68776),c=n(21814),l=r?r.prototype:void 0,u=l?l.valueOf:void 0;e.exports=function(e,t,n,r,l,f,h){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!f(new o(e),new o(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var p=s;case"[object Set]":var d=1&r;if(p||(p=c),e.size!=t.size&&!d)return!1;var m=h.get(e);if(m)return m==t;r|=2,h.set(e,t);var v=i(p(e),p(t),r,l,f,h);return h.delete(e),v;case"[object Symbol]":if(u)return u.call(e)==u.call(t)}return!1}},16096:(e,t,n)=>{var r=n(58234),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,a,i,s){var c=1&n,l=r(e),u=l.length;if(u!=r(t).length&&!c)return!1;for(var f=u;f--;){var h=l[f];if(!(c?h in t:o.call(t,h)))return!1}var p=s.get(e),d=s.get(t);if(p&&d)return p==t&&d==e;var m=!0;s.set(e,t),s.set(t,e);for(var v=c;++f<u;){var g=e[h=l[f]],b=t[h];if(a)var y=c?a(b,g,h,t,e,s):a(g,b,h,e,t,s);if(!(void 0===y?g===b||i(g,b,n,a,s):y)){m=!1;break}v||(v="constructor"==h)}if(m&&!v){var _=e.constructor,w=t.constructor;_==w||!("constructor"in e)||!("constructor"in t)||"function"==typeof _&&_ instanceof _&&"function"==typeof w&&w instanceof w||(m=!1)}return s.delete(e),s.delete(t),m}},31957:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},58234:(e,t,n)=>{var r=n(68866),o=n(99551),a=n(3674);e.exports=function(e){return r(e,a,o)}},46904:(e,t,n)=>{var r=n(68866),o=n(51442),a=n(81704);e.exports=function(e){return r(e,a,o)}},45050:(e,t,n)=>{var r=n(37019);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},1499:(e,t,n)=>{var r=n(89162),o=n(3674);e.exports=function(e){for(var t=o(e),n=t.length;n--;){var a=t[n],i=e[a];t[n]=[a,i,r(i)]}return t}},10852:(e,t,n)=>{var r=n(28458),o=n(47801);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},85924:(e,t,n)=>{var r=n(5569)(Object.getPrototypeOf,Object);e.exports=r},89607:(e,t,n)=>{var r=n(62705),o=Object.prototype,a=o.hasOwnProperty,i=o.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=a.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var o=i.call(e);return r&&(t?e[s]=n:delete e[s]),o}},99551:(e,t,n)=>{var r=n(34963),o=n(70479),a=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,s=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return a.call(e,t)})))}:o;e.exports=s},51442:(e,t,n)=>{var r=n(62488),o=n(85924),a=n(99551),i=n(70479),s=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,a(e)),e=o(e);return t}:i;e.exports=s},64160:(e,t,n)=>{var r=n(18552),o=n(57071),a=n(53818),i=n(58525),s=n(70577),c=n(44239),l=n(80346),u="[object Map]",f="[object Promise]",h="[object Set]",p="[object WeakMap]",d="[object DataView]",m=l(r),v=l(o),g=l(a),b=l(i),y=l(s),_=c;(r&&_(new r(new ArrayBuffer(1)))!=d||o&&_(new o)!=u||a&&_(a.resolve())!=f||i&&_(new i)!=h||s&&_(new s)!=p)&&(_=function(e){var t=c(e),n="[object Object]"==t?e.constructor:void 0,r=n?l(n):"";if(r)switch(r){case m:return d;case v:return u;case g:return f;case b:return h;case y:return p}return t}),e.exports=_},47801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},222:(e,t,n)=>{var r=n(71811),o=n(35694),a=n(1469),i=n(65776),s=n(41780),c=n(40327);e.exports=function(e,t,n){for(var l=-1,u=(t=r(t,e)).length,f=!1;++l<u;){var h=c(t[l]);if(!(f=null!=e&&n(e,h)))break;e=e[h]}return f||++l!=u?f:!!(u=null==e?0:e.length)&&s(u)&&i(h,u)&&(a(e)||o(e))}},62689:e=>{var t=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return t.test(e)}},93157:e=>{var t=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return t.test(e)}},51789:(e,t,n)=>{var r=n(94536);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},80401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},57667:(e,t,n)=>{var r=n(94536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return o.call(t,e)?t[e]:void 0}},21327:(e,t,n)=>{var r=n(94536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:o.call(t,e)}},81866:(e,t,n)=>{var r=n(94536);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},43824:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,r=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},29148:(e,t,n)=>{var r=n(74318),o=n(57157),a=n(93147),i=n(40419),s=n(77133);e.exports=function(e,t,n){var c=e.constructor;switch(t){case"[object ArrayBuffer]":return r(e);case"[object Boolean]":case"[object Date]":return new c(+e);case"[object DataView]":return o(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return s(e,n);case"[object Map]":case"[object Set]":return new c;case"[object Number]":case"[object String]":return new c(e);case"[object RegExp]":return a(e);case"[object Symbol]":return i(e)}}},38517:(e,t,n)=>{var r=n(3118),o=n(85924),a=n(25726);e.exports=function(e){return"function"!=typeof e.constructor||a(e)?{}:r(o(e))}},37285:(e,t,n)=>{var r=n(62705),o=n(35694),a=n(1469),i=r?r.isConcatSpreadable:void 0;e.exports=function(e){return a(e)||o(e)||!!(i&&e&&e[i])}},65776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e<n}},16612:(e,t,n)=>{var r=n(77813),o=n(98612),a=n(65776),i=n(13218);e.exports=function(e,t,n){if(!i(n))return!1;var s=typeof t;return!!("number"==s?o(n)&&a(t,n.length):"string"==s&&t in n)&&r(n[t],e)}},15403:(e,t,n)=>{var r=n(1469),o=n(33448),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||i.test(e)||!a.test(e)||null!=t&&e in Object(t)}},37019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},15346:(e,t,n)=>{var r,o=n(14429),a=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!a&&a in e}},25726:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},89162:(e,t,n)=>{var r=n(13218);e.exports=function(e){return e==e&&!r(e)}},27040:e=>{e.exports=function(){this.__data__=[],this.size=0}},14125:(e,t,n)=>{var r=n(18470),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0||(n==t.length-1?t.pop():o.call(t,n,1),--this.size,0))}},82117:(e,t,n)=>{var r=n(18470);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},67518:(e,t,n)=>{var r=n(18470);e.exports=function(e){return r(this.__data__,e)>-1}},54705:(e,t,n)=>{var r=n(18470);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},24785:(e,t,n)=>{var r=n(1989),o=n(38407),a=n(57071);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||o),string:new r}}},11285:(e,t,n)=>{var r=n(45050);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},96e3:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).get(e)}},49916:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).has(e)}},95265:(e,t,n)=>{var r=n(45050);e.exports=function(e,t){var n=r(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this}},68776:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},42634:e=>{e.exports=function(e,t){return function(n){return null!=n&&n[e]===t&&(void 0!==t||e in Object(n))}}},24523:(e,t,n)=>{var r=n(88306);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},94536:(e,t,n)=>{var r=n(10852)(Object,"create");e.exports=r},86916:(e,t,n)=>{var r=n(5569)(Object.keys,Object);e.exports=r},33498:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},31167:(e,t,n)=>{e=n.nmd(e);var r=n(31957),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,i=a&&a.exports===o&&r.process,s=function(){try{return a&&a.require&&a.require("util").types||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=s},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},45357:(e,t,n)=>{var r=n(96874),o=Math.max;e.exports=function(e,t,n){return t=o(void 0===t?e.length-1:t,0),function(){for(var a=arguments,i=-1,s=o(a.length-t,0),c=Array(s);++i<s;)c[i]=a[t+i];i=-1;for(var l=Array(t+1);++i<t;)l[i]=a[i];return l[t]=n(c),r(e,this,l)}}},40292:(e,t,n)=>{var r=n(97786),o=n(14259);e.exports=function(e,t){return t.length<2?e:r(e,o(t,0,-1))}},55639:(e,t,n)=>{var r=n(31957),o="object"==typeof self&&self&&self.Object===Object&&self,a=r||o||Function("return this")();e.exports=a},36390:e=>{e.exports=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}},90619:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},72385:e=>{e.exports=function(e){return this.__data__.has(e)}},21814:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},30061:(e,t,n)=>{var r=n(56560),o=n(21275)(r);e.exports=o},21275:e=>{var t=Date.now;e.exports=function(e){var n=0,r=0;return function(){var o=t(),a=16-(o-r);if(r=o,a>0){if(++n>=800)return arguments[0]}else n=0;return e.apply(void 0,arguments)}}},73480:(e,t,n)=>{var r=n(69877);e.exports=function(e,t){var n=-1,o=e.length,a=o-1;for(t=void 0===t?o:t;++n<t;){var i=r(n,a),s=e[i];e[i]=e[n],e[n]=s}return e.length=t,e}},37465:(e,t,n)=>{var r=n(38407);e.exports=function(){this.__data__=new r,this.size=0}},63779:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},67599:e=>{e.exports=function(e){return this.__data__.get(e)}},44758:e=>{e.exports=function(e){return this.__data__.has(e)}},34309:(e,t,n)=>{var r=n(38407),o=n(57071),a=n(83369);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!o||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new a(i)}return n.set(e,t),this.size=n.size,this}},42351:e=>{e.exports=function(e,t,n){for(var r=n-1,o=e.length;++r<o;)if(e[r]===t)return r;return-1}},83140:(e,t,n)=>{var r=n(44286),o=n(62689),a=n(676);e.exports=function(e){return o(e)?a(e):r(e)}},55514:(e,t,n)=>{var r=n(24523),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,i=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(o,(function(e,n,r,o){t.push(r?o.replace(a,"$1"):n||e)})),t}));e.exports=i},40327:(e,t,n)=>{var r=n(33448);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},80346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},67990:e=>{var t=/\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},83729:(e,t,n)=>{var r=n(18674)({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"});e.exports=r},676:e=>{var t="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",n="\\ud83c[\\udffb-\\udfff]",r="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",a="[\\ud800-\\udbff][\\udc00-\\udfff]",i="(?:"+t+"|"+n+")?",s="[\\ufe0e\\ufe0f]?",c=s+i+"(?:\\u200d(?:"+[r,o,a].join("|")+")"+s+i+")*",l="(?:"+[r+t+"?",t,o,a,"[\\ud800-\\udfff]"].join("|")+")",u=RegExp(n+"(?="+n+")|"+l+c,"g");e.exports=function(e){return e.match(u)||[]}},2757:e=>{var t="a-z\\xdf-\\xf6\\xf8-\\xff",n="A-Z\\xc0-\\xd6\\xd8-\\xde",r="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",o="["+r+"]",a="\\d+",i="["+t+"]",s="[^\\ud800-\\udfff"+r+a+"\\u2700-\\u27bf"+t+n+"]",c="(?:\\ud83c[\\udde6-\\uddff]){2}",l="[\\ud800-\\udbff][\\udc00-\\udfff]",u="["+n+"]",f="(?:"+i+"|"+s+")",h="(?:"+u+"|"+s+")",p="(?:['’](?:d|ll|m|re|s|t|ve))?",d="(?:['’](?:D|LL|M|RE|S|T|VE))?",m="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",v="[\\ufe0e\\ufe0f]?",g=v+m+"(?:\\u200d(?:"+["[^\\ud800-\\udfff]",c,l].join("|")+")"+v+m+")*",b="(?:"+["[\\u2700-\\u27bf]",c,l].join("|")+")"+g,y=RegExp([u+"?"+i+"+"+p+"(?="+[o,u,"$"].join("|")+")",h+"+"+d+"(?="+[o,u+f,"$"].join("|")+")",u+"?"+f+"+"+p,u+"+"+d,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",a,b].join("|"),"g");e.exports=function(e){return e.match(y)||[]}},68929:(e,t,n)=>{var r=n(48403),o=n(35393)((function(e,t,n){return t=t.toLowerCase(),e+(n?r(t):t)}));e.exports=o},48403:(e,t,n)=>{var r=n(79833),o=n(11700);e.exports=function(e){return o(r(e).toLowerCase())}},8400:(e,t,n)=>{var r=n(14259),o=n(16612),a=n(40554),i=Math.ceil,s=Math.max;e.exports=function(e,t,n){t=(n?o(e,t,n):void 0===t)?1:s(a(t),0);var c=null==e?0:e.length;if(!c||t<1)return[];for(var l=0,u=0,f=Array(i(c/t));l<c;)f[u++]=r(e,l,l+=t);return f}},74691:(e,t,n)=>{var r=n(29750),o=n(14841);e.exports=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=o(n))==n?n:0),void 0!==t&&(t=(t=o(t))==t?t:0),r(o(e),t,n)}},66678:(e,t,n)=>{var r=n(85990);e.exports=function(e){return r(e,4)}},50361:(e,t,n)=>{var r=n(85990);e.exports=function(e){return r(e,5)}},39693:e=>{e.exports=function(e){for(var t=-1,n=null==e?0:e.length,r=0,o=[];++t<n;){var a=e[t];a&&(o[r++]=a)}return o}},57043:(e,t,n)=>{var r=n(62488),o=n(21078),a=n(278),i=n(1469);e.exports=function(){var e=arguments.length;if(!e)return[];for(var t=Array(e-1),n=arguments[0],s=e;s--;)t[s-1]=arguments[s];return r(i(n)?a(n):[n],o(t,1))}},75703:e=>{e.exports=function(e){return function(){return e}}},23279:(e,t,n)=>{var r=n(13218),o=n(7771),a=n(14841),i=Math.max,s=Math.min;e.exports=function(e,t,n){var c,l,u,f,h,p,d=0,m=!1,v=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var n=c,r=l;return c=l=void 0,d=t,f=e.apply(r,n)}function y(e){return d=e,h=setTimeout(w,t),m?b(e):f}function _(e){var n=e-p;return void 0===p||n>=t||n<0||v&&e-d>=u}function w(){var e=o();if(_(e))return x(e);h=setTimeout(w,function(e){var n=t-(e-p);return v?s(n,u-(e-d)):n}(e))}function x(e){return h=void 0,g&&c?b(e):(c=l=void 0,f)}function k(){var e=o(),n=_(e);if(c=arguments,l=this,p=e,n){if(void 0===h)return y(p);if(v)return clearTimeout(h),h=setTimeout(w,t),b(p)}return void 0===h&&(h=setTimeout(w,t)),f}return t=a(t)||0,r(n)&&(m=!!n.leading,u=(v="maxWait"in n)?i(a(n.maxWait)||0,t):u,g="trailing"in n?!!n.trailing:g),k.cancel=function(){void 0!==h&&clearTimeout(h),d=0,c=p=l=h=void 0},k.flush=function(){return void 0===h?f:x(o())},k}},53816:(e,t,n)=>{var r=n(69389),o=n(79833),a=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,i=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");e.exports=function(e){return(e=o(e))&&e.replace(a,r).replace(i,"")}},66073:(e,t,n)=>{e.exports=n(84486)},77813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},63105:(e,t,n)=>{var r=n(34963),o=n(80760),a=n(67206),i=n(1469);e.exports=function(e,t){return(i(e)?r:o)(e,a(t,3))}},13311:(e,t,n)=>{var r=n(67740)(n(30998));e.exports=r},30998:(e,t,n)=>{var r=n(41848),o=n(67206),a=n(40554),i=Math.max;e.exports=function(e,t,n){var s=null==e?0:e.length;if(!s)return-1;var c=null==n?0:a(n);return c<0&&(c=i(s+c,0)),r(e,o(t,3),c)}},7436:(e,t,n)=>{var r=n(41848),o=n(67206),a=n(40554),i=Math.max,s=Math.min;e.exports=function(e,t,n){var c=null==e?0:e.length;if(!c)return-1;var l=c-1;return void 0!==n&&(l=a(n),l=n<0?i(c+l,0):s(l,c-1)),r(e,o(t,3),l,!0)}},8804:(e,t,n)=>{e.exports=n(91175)},85564:(e,t,n)=>{var r=n(21078);e.exports=function(e){return null!=e&&e.length?r(e,1):[]}},42348:(e,t,n)=>{var r=n(21078);e.exports=function(e){return null!=e&&e.length?r(e,1/0):[]}},84486:(e,t,n)=>{var r=n(77412),o=n(89881),a=n(54290),i=n(1469);e.exports=function(e,t){return(i(e)?r:o)(e,a(t))}},27361:(e,t,n)=>{var r=n(97786);e.exports=function(e,t,n){var o=null==e?void 0:r(e,t);return void 0===o?n:o}},7739:(e,t,n)=>{var r=n(89465),o=n(55189),a=Object.prototype.hasOwnProperty,i=o((function(e,t,n){a.call(e,n)?e[n].push(t):r(e,n,[t])}));e.exports=i},79095:(e,t,n)=>{var r=n(13),o=n(222);e.exports=function(e,t){return null!=e&&o(e,t,r)}},91175:e=>{e.exports=function(e){return e&&e.length?e[0]:void 0}},6557:e=>{e.exports=function(e){return e}},64721:(e,t,n)=>{var r=n(42118),o=n(98612),a=n(47037),i=n(40554),s=n(52628),c=Math.max;e.exports=function(e,t,n,l){e=o(e)?e:s(e),n=n&&!l?i(n):0;var u=e.length;return n<0&&(n=c(u+n,0)),a(e)?n<=u&&e.indexOf(t,n)>-1:!!u&&r(e,t,n)>-1}},35694:(e,t,n)=>{var r=n(9454),o=n(37005),a=Object.prototype,i=a.hasOwnProperty,s=a.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(e){return o(e)&&i.call(e,"callee")&&!s.call(e,"callee")};e.exports=c},1469:e=>{var t=Array.isArray;e.exports=t},98612:(e,t,n)=>{var r=n(23560),o=n(41780);e.exports=function(e){return null!=e&&o(e.length)&&!r(e)}},29246:(e,t,n)=>{var r=n(98612),o=n(37005);e.exports=function(e){return o(e)&&r(e)}},44144:(e,t,n)=>{e=n.nmd(e);var r=n(55639),o=n(95062),a=t&&!t.nodeType&&t,i=a&&e&&!e.nodeType&&e,s=i&&i.exports===a?r.Buffer:void 0,c=(s?s.isBuffer:void 0)||o;e.exports=c},41609:(e,t,n)=>{var r=n(280),o=n(64160),a=n(35694),i=n(1469),s=n(98612),c=n(44144),l=n(25726),u=n(36719),f=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(s(e)&&(i(e)||"string"==typeof e||"function"==typeof e.splice||c(e)||u(e)||a(e)))return!e.length;var t=o(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(l(e))return!r(e).length;for(var n in e)if(f.call(e,n))return!1;return!0}},18446:(e,t,n)=>{var r=n(90939);e.exports=function(e,t){return r(e,t)}},23560:(e,t,n)=>{var r=n(44239),o=n(13218);e.exports=function(e){if(!o(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},41780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},56688:(e,t,n)=>{var r=n(25588),o=n(7518),a=n(31167),i=a&&a.isMap,s=i?o(i):r;e.exports=s},13218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},37005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},68630:(e,t,n)=>{var r=n(44239),o=n(85924),a=n(37005),i=Function.prototype,s=Object.prototype,c=i.toString,l=s.hasOwnProperty,u=c.call(Object);e.exports=function(e){if(!a(e)||"[object Object]"!=r(e))return!1;var t=o(e);if(null===t)return!0;var n=l.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==u}},72928:(e,t,n)=>{var r=n(29221),o=n(7518),a=n(31167),i=a&&a.isSet,s=i?o(i):r;e.exports=s},47037:(e,t,n)=>{var r=n(44239),o=n(1469),a=n(37005);e.exports=function(e){return"string"==typeof e||!o(e)&&a(e)&&"[object String]"==r(e)}},33448:(e,t,n)=>{var r=n(44239),o=n(37005);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},36719:(e,t,n)=>{var r=n(38749),o=n(7518),a=n(31167),i=a&&a.isTypedArray,s=i?o(i):r;e.exports=s},21804:(e,t,n)=>{var r=n(35393)((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}));e.exports=r},24350:(e,t,n)=>{var r=n(89465),o=n(55189)((function(e,t,n){r(e,n,t)}));e.exports=o},3674:(e,t,n)=>{var r=n(14636),o=n(280),a=n(98612);e.exports=function(e){return a(e)?r(e):o(e)}},81704:(e,t,n)=>{var r=n(14636),o=n(10313),a=n(98612);e.exports=function(e){return a(e)?r(e,!0):o(e)}},10928:e=>{e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},35161:(e,t,n)=>{var r=n(29932),o=n(67206),a=n(69199),i=n(1469);e.exports=function(e,t){return(i(e)?r:a)(e,o(t,3))}},84753:(e,t,n)=>{var r=n(56029),o=n(53325),a=n(67206);e.exports=function(e,t){return e&&e.length?r(e,a(t,2),o):void 0}},88306:(e,t,n)=>{var r=n(83369);function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],a=n.cache;if(a.has(o))return a.get(o);var i=e.apply(this,r);return n.cache=a.set(o,i)||a,i};return n.cache=new(o.Cache||r),n}o.Cache=r,e.exports=o},82492:(e,t,n)=>{var r=n(42980),o=n(21463)((function(e,t,n){r(e,t,n)}));e.exports=o},30236:(e,t,n)=>{var r=n(42980),o=n(21463)((function(e,t,n,o){r(e,t,n,o)}));e.exports=o},22762:(e,t,n)=>{var r=n(56029),o=n(67206),a=n(70433);e.exports=function(e,t){return e&&e.length?r(e,o(t,2),a):void 0}},94885:e=>{e.exports=function(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}},50308:e=>{e.exports=function(){}},7771:(e,t,n)=>{var r=n(55639);e.exports=function(){return r.Date.now()}},14176:(e,t,n)=>{var r=n(67206),o=n(94885),a=n(35937);e.exports=function(e,t){return a(e,o(r(t)))}},75472:(e,t,n)=>{var r=n(82689),o=n(1469);e.exports=function(e,t,n,a){return null==e?[]:(o(t)||(t=null==t?[]:[t]),o(n=a?void 0:n)||(n=null==n?[]:[n]),r(e,t,n))}},35937:(e,t,n)=>{var r=n(29932),o=n(67206),a=n(63012),i=n(46904);e.exports=function(e,t){if(null==e)return{};var n=r(i(e),(function(e){return[e]}));return t=o(t),a(e,n,(function(e,n){return t(e,n[0])}))}},39601:(e,t,n)=>{var r=n(40371),o=n(79152),a=n(15403),i=n(40327);e.exports=function(e){return a(e)?r(i(e)):o(e)}},54061:(e,t,n)=>{var r=n(62663),o=n(89881),a=n(67206),i=n(10107),s=n(1469);e.exports=function(e,t,n){var c=s(e)?r:i,l=arguments.length<3;return c(e,a(t,4),n,l,o)}},43063:(e,t,n)=>{var r=n(34963),o=n(80760),a=n(67206),i=n(1469),s=n(94885);e.exports=function(e,t){return(i(e)?r:o)(e,s(a(t,3)))}},82729:(e,t,n)=>{var r=n(67206),o=n(15742);e.exports=function(e,t){var n=[];if(!e||!e.length)return n;var a=-1,i=[],s=e.length;for(t=r(t,3);++a<s;){var c=e[a];t(c,a,e)&&(n.push(c),i.push(a))}return o(e,i),n}},36968:(e,t,n)=>{var r=n(10611);e.exports=function(e,t,n){return null==e?e:r(e,t,n)}},69983:(e,t,n)=>{var r=n(70151),o=n(25127),a=n(1469);e.exports=function(e){return(a(e)?r:o)(e)}},12571:(e,t,n)=>{var r=n(14259),o=n(16612),a=n(40554);e.exports=function(e,t,n){var i=null==e?0:e.length;return i?(n&&"number"!=typeof n&&o(e,t,n)?(t=0,n=i):(t=null==t?0:a(t),n=void 0===n?i:a(n)),r(e,t,n)):[]}},89734:(e,t,n)=>{var r=n(21078),o=n(82689),a=n(5976),i=n(16612),s=a((function(e,t){if(null==e)return[];var n=t.length;return n>1&&i(e,t[0],t[1])?t=[]:n>2&&i(t[0],t[1],t[2])&&(t=[t[0]]),o(e,r(t,1),[])}));e.exports=s},70479:e=>{e.exports=function(){return[]}},95062:e=>{e.exports=function(){return!1}},73303:(e,t,n)=>{var r=n(67206),o=n(67762);e.exports=function(e,t){return e&&e.length?o(e,r(t,2)):0}},69572:(e,t,n)=>{var r=n(14259),o=n(40554);e.exports=function(e,t,n){return e&&e.length?(t=n||void 0===t?1:o(t),r(e,0,t<0?0:t)):[]}},69579:(e,t,n)=>{var r=n(14259),o=n(40554);e.exports=function(e,t,n){var a=null==e?0:e.length;return a?(t=n||void 0===t?1:o(t),r(e,(t=a-t)<0?0:t,a)):[]}},23493:(e,t,n)=>{var r=n(23279),o=n(13218);e.exports=function(e,t,n){var a=!0,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return o(n)&&(a="leading"in n?!!n.leading:a,i="trailing"in n?!!n.trailing:i),r(e,t,{leading:a,maxWait:t,trailing:i})}},18601:(e,t,n)=>{var r=n(14841);e.exports=function(e){return e?Infinity===(e=r(e))||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},40554:(e,t,n)=>{var r=n(18601);e.exports=function(e){var t=r(e),n=t%1;return t==t?n?t-n:t:0}},14841:(e,t,n)=>{var r=n(27561),o=n(13218),a=n(33448),i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(a(e))return NaN;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=s.test(e);return n||c.test(e)?l(e.slice(2),n?2:8):i.test(e)?NaN:+e}},59881:(e,t,n)=>{var r=n(98363),o=n(81704);e.exports=function(e){return r(e,o(e))}},79833:(e,t,n)=>{var r=n(80531);e.exports=function(e){return null==e?"":r(e)}},92742:(e,t,n)=>{var r=n(80531),o=n(27561),a=n(40180),i=n(5512),s=n(89817),c=n(83140),l=n(79833);e.exports=function(e,t,n){if((e=l(e))&&(n||void 0===t))return o(e);if(!e||!(t=r(t)))return e;var u=c(e),f=c(t),h=s(u,f),p=i(u,f)+1;return a(u,h,p).join("")}},27955:(e,t,n)=>{var r=n(79833),o=n(83729),a=/&(?:amp|lt|gt|quot|#39);/g,i=RegExp(a.source);e.exports=function(e){return(e=r(e))&&i.test(e)?e.replace(a,o):e}},44908:(e,t,n)=>{var r=n(45652);e.exports=function(e){return e&&e.length?r(e):[]}},45578:(e,t,n)=>{var r=n(67206),o=n(45652);e.exports=function(e,t){return e&&e.length?o(e,r(t,2)):[]}},87185:(e,t,n)=>{var r=n(45652);e.exports=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?r(e,void 0,t):[]}},73955:(e,t,n)=>{var r=n(79833),o=0;e.exports=function(e){var t=++o;return r(e)+t}},11700:(e,t,n)=>{var r=n(98805)("toUpperCase");e.exports=r},52628:(e,t,n)=>{var r=n(47415),o=n(3674);e.exports=function(e){return null==e?[]:r(e,o(e))}},58748:(e,t,n)=>{var r=n(49029),o=n(93157),a=n(79833),i=n(2757);e.exports=function(e,t,n){return e=a(e),void 0===(t=n?void 0:t)?o(e)?i(e):r(e):e.match(t)||[]}},28490:(e,t,n)=>{"use strict";var r=n(17673),o=n(8575),a=n(47529);const i=parseInt({NODE_ENV:"production"}.PARSE_LINK_HEADER_MAXLEN)||2e3,s=null!={NODE_ENV:"production"}.PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED;function c(e){return e&&e.rel}function l(e,t){return t.rel.split(/\s+/).forEach((function(n){e[n]=a(t,{rel:n})})),e}function u(e,t){var n=t.match(/\s*(.+)\s*=\s*"?([^"]+)"?/);return n&&(e[n[1]]=n[2]),e}function f(e){try{var t=e.match(/<?([^>]*)>(.*)/),n=t[1],i=t[2].split(";"),s=o.parse(n),c=r.parse(s.query);i.shift();var l=i.reduce(u,{});return(l=a(c,l)).url=n,l}catch(e){return null}}e.exports=function(e){return function(e){if(!e)return!1;if(e.length>i){if(s)throw new Error("Input string too long, it should be under "+i+" characters.");return!1}return!0}(e)?e.split(/,\s*</).map(f).filter(c).reduce(l,{}):null}},90837:(e,t,n)=>{"use strict";n.d(t,{sk:()=>w});var r=e=>"function"==typeof e?e:function(){return e},o="undefined"!=typeof self?self:null,a="undefined"!=typeof window?window:null,i=o||a||void 0,s="closed",c="errored",l="joined",u="joining",f="leaving",h="phx_close",p="phx_error",d="phx_reply",m="phx_leave",v=class{constructor(e,t,n,r){this.channel=e,this.event=t,this.payload=n||function(){return{}},this.receivedResp=null,this.timeout=r,this.timeoutTimer=null,this.recHooks=[],this.sent=!1}resend(e){this.timeout=e,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(e,t){return this.hasReceived(e)&&t(this.receivedResp.response),this.recHooks.push({status:e,callback:t}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}matchReceive({status:e,response:t,_ref:n}){this.recHooks.filter((t=>t.status===e)).forEach((e=>e.callback(t)))}cancelRefEvent(){this.refEvent&&this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,(e=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=e,this.matchReceive(e)})),this.timeoutTimer=setTimeout((()=>{this.trigger("timeout",{})}),this.timeout)}hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}trigger(e,t){this.channel.trigger(this.refEvent,{status:e,response:t})}},g=class{constructor(e,t){this.callback=e,this.timerCalc=t,this.timer=null,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout((()=>{this.tries=this.tries+1,this.callback()}),this.timerCalc(this.tries+1))}},b=class{static request(e,t,n,r,o,a,s){if(i.XDomainRequest){let n=new i.XDomainRequest;this.xdomainRequest(n,e,t,r,o,a,s)}else{let c=new i.XMLHttpRequest;this.xhrRequest(c,e,t,n,r,o,a,s)}}static xdomainRequest(e,t,n,r,o,a,i){e.timeout=o,e.open(t,n),e.onload=()=>{let t=this.parseJSON(e.responseText);i&&i(t)},a&&(e.ontimeout=a),e.onprogress=()=>{},e.send(r)}static xhrRequest(e,t,n,r,o,a,i,s){e.open(t,n,!0),e.timeout=a,e.setRequestHeader("Content-Type",r),e.onerror=()=>{s&&s(null)},e.onreadystatechange=()=>{if(4===e.readyState&&s){let t=this.parseJSON(e.responseText);s(t)}},i&&(e.ontimeout=i),e.send(o)}static parseJSON(e){if(!e||""===e)return null;try{return JSON.parse(e)}catch(t){return console&&console.log("failed to parse JSON response",e),null}}static serialize(e,t){let n=[];for(var r in e){if(!Object.prototype.hasOwnProperty.call(e,r))continue;let o=t?`${t}[${r}]`:r,a=e[r];"object"==typeof a?n.push(this.serialize(a,o)):n.push(encodeURIComponent(o)+"="+encodeURIComponent(a))}return n.join("&")}static appendParams(e,t){if(0===Object.keys(t).length)return e;let n=e.match(/\?/)?"&":"?";return`${e}${n}${this.serialize(t)}`}},y=class{constructor(e){this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(e),this.readyState=0,this.poll()}normalizeEndpoint(e){return e.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/websocket"),"$1/longpoll")}endpointURL(){return b.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(){this.close(),this.readyState=0}ontimeout(){this.onerror("timeout"),this.closeAndRetry()}poll(){1!==this.readyState&&0!==this.readyState||b.request("GET",this.endpointURL(),"application/json",null,this.timeout,this.ontimeout.bind(this),(e=>{if(e){var{status:t,token:n,messages:r}=e;this.token=n}else t=0;switch(t){case 200:r.forEach((e=>{setTimeout((()=>{this.onmessage({data:e})}),0)})),this.poll();break;case 204:this.poll();break;case 410:this.readyState=1,this.onopen(),this.poll();break;case 403:this.onerror(),this.close();break;case 0:case 500:this.onerror(),this.closeAndRetry();break;default:throw new Error(`unhandled poll status ${t}`)}}))}send(e){b.request("POST",this.endpointURL(),"application/json",e,this.timeout,this.onerror.bind(this,"timeout"),(e=>{e&&200===e.status||(this.onerror(e&&e.status),this.closeAndRetry())}))}close(e,t){this.readyState=3,this.onclose()}},_={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(e,t){if(e.payload.constructor===ArrayBuffer)return t(this.binaryEncode(e));{let n=[e.join_ref,e.ref,e.topic,e.event,e.payload];return t(JSON.stringify(n))}},decode(e,t){if(e.constructor===ArrayBuffer)return t(this.binaryDecode(e));{let[n,r,o,a,i]=JSON.parse(e);return t({join_ref:n,ref:r,topic:o,event:a,payload:i})}},binaryEncode(e){let{join_ref:t,ref:n,event:r,topic:o,payload:a}=e,i=this.META_LENGTH+t.length+n.length+o.length+r.length,s=new ArrayBuffer(this.HEADER_LENGTH+i),c=new DataView(s),l=0;c.setUint8(l++,this.KINDS.push),c.setUint8(l++,t.length),c.setUint8(l++,n.length),c.setUint8(l++,o.length),c.setUint8(l++,r.length),Array.from(t,(e=>c.setUint8(l++,e.charCodeAt(0)))),Array.from(n,(e=>c.setUint8(l++,e.charCodeAt(0)))),Array.from(o,(e=>c.setUint8(l++,e.charCodeAt(0)))),Array.from(r,(e=>c.setUint8(l++,e.charCodeAt(0))));var u=new Uint8Array(s.byteLength+a.byteLength);return u.set(new Uint8Array(s),0),u.set(new Uint8Array(a),s.byteLength),u.buffer},binaryDecode(e){let t=new DataView(e),n=t.getUint8(0),r=new TextDecoder;switch(n){case this.KINDS.push:return this.decodePush(e,t,r);case this.KINDS.reply:return this.decodeReply(e,t,r);case this.KINDS.broadcast:return this.decodeBroadcast(e,t,r)}},decodePush(e,t,n){let r=t.getUint8(1),o=t.getUint8(2),a=t.getUint8(3),i=this.HEADER_LENGTH+this.META_LENGTH-1,s=n.decode(e.slice(i,i+r));i+=r;let c=n.decode(e.slice(i,i+o));i+=o;let l=n.decode(e.slice(i,i+a));return i+=a,{join_ref:s,ref:null,topic:c,event:l,payload:e.slice(i,e.byteLength)}},decodeReply(e,t,n){let r=t.getUint8(1),o=t.getUint8(2),a=t.getUint8(3),i=t.getUint8(4),s=this.HEADER_LENGTH+this.META_LENGTH,c=n.decode(e.slice(s,s+r));s+=r;let l=n.decode(e.slice(s,s+o));s+=o;let u=n.decode(e.slice(s,s+a));s+=a;let f=n.decode(e.slice(s,s+i));s+=i;let h=e.slice(s,e.byteLength);return{join_ref:c,ref:l,topic:u,event:d,payload:{status:f,response:h}}},decodeBroadcast(e,t,n){let r=t.getUint8(1),o=t.getUint8(2),a=this.HEADER_LENGTH+2,i=n.decode(e.slice(a,a+r));a+=r;let s=n.decode(e.slice(a,a+o));return a+=o,{join_ref:null,ref:null,topic:i,event:s,payload:e.slice(a,e.byteLength)}}},w=class{constructor(e,t={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.timeout=t.timeout||1e4,this.transport=t.transport||i.WebSocket||y,this.establishedConnections=0,this.defaultEncoder=_.encode.bind(_),this.defaultDecoder=_.decode.bind(_),this.closeWasClean=!1,this.binaryType=t.binaryType||"arraybuffer",this.connectClock=1,this.transport!==y?(this.encode=t.encode||this.defaultEncoder,this.decode=t.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let n=null;a&&a.addEventListener&&(a.addEventListener("pagehide",(e=>{this.conn&&(this.disconnect(),n=this.connectClock)})),a.addEventListener("pageshow",(e=>{n===this.connectClock&&(n=null,this.connect())}))),this.heartbeatIntervalMs=t.heartbeatIntervalMs||3e4,this.rejoinAfterMs=e=>t.rejoinAfterMs?t.rejoinAfterMs(e):[1e3,2e3,5e3][e-1]||1e4,this.reconnectAfterMs=e=>t.reconnectAfterMs?t.reconnectAfterMs(e):[10,50,100,150,200,250,500,1e3,2e3][e-1]||5e3,this.logger=t.logger||null,this.longpollerTimeout=t.longpollerTimeout||2e4,this.params=r(t.params||{}),this.endPoint=`${e}/websocket`,this.vsn=t.vsn||"2.0.0",this.heartbeatTimer=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new g((()=>{this.teardown((()=>this.connect()))}),this.reconnectAfterMs)}replaceTransport(e){this.disconnect(),this.transport=e}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let e=b.appendParams(b.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return"/"!==e.charAt(0)?e:"/"===e.charAt(1)?`${this.protocol()}:${e}`:`${this.protocol()}://${location.host}${e}`}disconnect(e,t,n){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.teardown(e,t,n)}connect(e){this.connectClock++,e&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=r(e)),this.conn||(this.closeWasClean=!1,this.conn=new this.transport(this.endPointURL()),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=e=>this.onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this.onConnClose(e))}log(e,t,n){this.logger(e,t,n)}hasLogger(){return null!==this.logger}onOpen(e){let t=this.makeRef();return this.stateChangeCallbacks.open.push([t,e]),t}onClose(e){let t=this.makeRef();return this.stateChangeCallbacks.close.push([t,e]),t}onError(e){let t=this.makeRef();return this.stateChangeCallbacks.error.push([t,e]),t}onMessage(e){let t=this.makeRef();return this.stateChangeCallbacks.message.push([t,e]),t}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.resetHeartbeat(),this.stateChangeCallbacks.open.forEach((([,e])=>e()))}heartbeatTimeout(){this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection"),this.abnormalClose("heartbeat timeout"))}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,clearTimeout(this.heartbeatTimer),setTimeout((()=>this.sendHeartbeat()),this.heartbeatIntervalMs))}teardown(e,t,n){if(!this.conn)return e&&e();this.waitForBufferDone((()=>{this.conn&&(t?this.conn.close(t,n||""):this.conn.close()),this.waitForSocketClosed((()=>{this.conn&&(this.conn.onclose=function(){},this.conn=null),e&&e()}))}))}waitForBufferDone(e,t=1){5!==t&&this.conn&&this.conn.bufferedAmount?setTimeout((()=>{this.waitForBufferDone(e,t+1)}),150*t):e()}waitForSocketClosed(e,t=1){5!==t&&this.conn&&3!==this.conn.readyState?setTimeout((()=>{this.waitForSocketClosed(e,t+1)}),150*t):e()}onConnClose(e){this.hasLogger()&&this.log("transport","close",e),this.triggerChanError(),clearTimeout(this.heartbeatTimer),this.closeWasClean||this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach((([,t])=>t(e)))}onConnError(e){this.hasLogger()&&this.log("transport",e);let t=this.transport,n=this.establishedConnections;this.stateChangeCallbacks.error.forEach((([,r])=>{r(e,t,n)})),(t===this.transport||n>0)&&this.triggerChanError()}triggerChanError(){this.channels.forEach((e=>{e.isErrored()||e.isLeaving()||e.isClosed()||e.trigger(p)}))}connectionState(){switch(this.conn&&this.conn.readyState){case 0:return"connecting";case 1:return"open";case 2:return"closing";default:return"closed"}}isConnected(){return"open"===this.connectionState()}remove(e){this.off(e.stateChangeRefs),this.channels=this.channels.filter((t=>t.joinRef()!==e.joinRef()))}off(e){for(let t in this.stateChangeCallbacks)this.stateChangeCallbacks[t]=this.stateChangeCallbacks[t].filter((([t])=>-1===e.indexOf(t)))}channel(e,t={}){let n=new class{constructor(e,t,n){this.state=s,this.topic=e,this.params=r(t||{}),this.socket=n,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new v(this,"phx_join",this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new g((()=>{this.socket.isConnected()&&this.rejoin()}),this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError((()=>this.rejoinTimer.reset()))),this.stateChangeRefs.push(this.socket.onOpen((()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()}))),this.joinPush.receive("ok",(()=>{this.state=l,this.rejoinTimer.reset(),this.pushBuffer.forEach((e=>e.send())),this.pushBuffer=[]})),this.joinPush.receive("error",(()=>{this.state=c,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()})),this.onClose((()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=s,this.socket.remove(this)})),this.onError((e=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,e),this.isJoining()&&this.joinPush.reset(),this.state=c,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()})),this.joinPush.receive("timeout",(()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic} (${this.joinRef()})`,this.joinPush.timeout),new v(this,m,r({}),this.timeout).send(),this.state=c,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()})),this.on(d,((e,t)=>{this.trigger(this.replyEventName(t),e)}))}join(e=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=e,this.joinedOnce=!0,this.rejoin(),this.joinPush}onClose(e){this.on(h,e)}onError(e){return this.on(p,(t=>e(t)))}on(e,t){let n=this.bindingRef++;return this.bindings.push({event:e,ref:n,callback:t}),n}off(e,t){this.bindings=this.bindings.filter((n=>!(n.event===e&&(void 0===t||t===n.ref))))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(e,t,n=this.timeout){if(t=t||{},!this.joinedOnce)throw new Error(`tried to push '${e}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let r=new v(this,e,(function(){return t}),n);return this.canPush()?r.send():(r.startTimeout(),this.pushBuffer.push(r)),r}leave(e=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=f;let t=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(h,"leave")},n=new v(this,m,r({}),e);return n.receive("ok",(()=>t())).receive("timeout",(()=>t())),n.send(),this.canPush()||n.trigger("ok",{}),n}onMessage(e,t,n){return t}isMember(e,t,n,r){return!(this.topic!==e||r&&r!==this.joinRef()&&(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:e,event:t,payload:n,joinRef:r}),1))}joinRef(){return this.joinPush.ref}rejoin(e=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=u,this.joinPush.resend(e))}trigger(e,t,n,r){let o=this.onMessage(e,t,n,r);if(t&&!o)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let a=this.bindings.filter((t=>t.event===e));for(let e=0;e<a.length;e++)a[e].callback(o,n,r||this.joinRef())}replyEventName(e){return`chan_reply_${e}`}isClosed(){return this.state===s}isErrored(){return this.state===c}isJoined(){return this.state===l}isJoining(){return this.state===u}isLeaving(){return this.state===f}}(e,t,this);return this.channels.push(n),n}push(e){if(this.hasLogger()){let{topic:t,event:n,payload:r,ref:o,join_ref:a}=e;this.log("push",`${t} ${n} (${a}, ${o})`,r)}this.isConnected()?this.encode(e,(e=>this.conn.send(e))):this.sendBuffer.push((()=>this.encode(e,(e=>this.conn.send(e)))))}makeRef(){let e=this.ref+1;return e===this.ref?this.ref=0:this.ref=e,this.ref.toString()}sendHeartbeat(){this.pendingHeartbeatRef&&!this.isConnected()||(this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.heartbeatTimer=setTimeout((()=>this.heartbeatTimeout()),this.heartbeatIntervalMs))}abnormalClose(e){this.closeWasClean=!1,this.isConnected()&&this.conn.close(1e3,e)}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach((e=>e())),this.sendBuffer=[])}onConnMessage(e){this.decode(e.data,(e=>{let{topic:t,event:n,payload:r,ref:o,join_ref:a}=e;o&&o===this.pendingHeartbeatRef&&(clearTimeout(this.heartbeatTimer),this.pendingHeartbeatRef=null,setTimeout((()=>this.sendHeartbeat()),this.heartbeatIntervalMs)),this.hasLogger()&&this.log("receive",`${r.status||""} ${t} ${n} ${o&&"("+o+")"||""}`,r);for(let e=0;e<this.channels.length;e++){const i=this.channels[e];i.isMember(t,n,r,a)&&i.trigger(n,r,o,a)}for(let t=0;t<this.stateChangeCallbacks.message.length;t++){let[,n]=this.stateChangeCallbacks.message[t];n(e)}}))}leaveOpenTopic(e){let t=this.channels.find((t=>t.topic===e&&(t.isJoined()||t.isJoining())));t&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${e}"`),t.leave())}}},35748:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>b});const r=2147483647,o=36,a=/^xn--/,i=/[^\0-\x7F]/,s=/[\x2E\u3002\uFF0E\uFF61]/g,c={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},l=Math.floor,u=String.fromCharCode;function f(e){throw new RangeError(c[e])}function h(e,t){const n=e.split("@");let r="";n.length>1&&(r=n[0]+"@",e=n[1]);const o=function(e,t){const n=[];let r=e.length;for(;r--;)n[r]=t(e[r]);return n}((e=e.replace(s,".")).split("."),t).join(".");return r+o}function p(e){const t=[];let n=0;const r=e.length;for(;n<r;){const o=e.charCodeAt(n++);if(o>=55296&&o<=56319&&n<r){const r=e.charCodeAt(n++);56320==(64512&r)?t.push(((1023&o)<<10)+(1023&r)+65536):(t.push(o),n--)}else t.push(o)}return t}const d=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},m=function(e,t,n){let r=0;for(e=n?l(e/700):e>>1,e+=l(e/t);e>455;r+=o)e=l(e/35);return l(r+36*e/(e+38))},v=function(e){const t=[],n=e.length;let a=0,i=128,s=72,c=e.lastIndexOf("-");c<0&&(c=0);for(let n=0;n<c;++n)e.charCodeAt(n)>=128&&f("not-basic"),t.push(e.charCodeAt(n));for(let h=c>0?c+1:0;h<n;){const c=a;for(let t=1,i=o;;i+=o){h>=n&&f("invalid-input");const c=(u=e.charCodeAt(h++))>=48&&u<58?u-48+26:u>=65&&u<91?u-65:u>=97&&u<123?u-97:o;c>=o&&f("invalid-input"),c>l((r-a)/t)&&f("overflow"),a+=c*t;const p=i<=s?1:i>=s+26?26:i-s;if(c<p)break;const d=o-p;t>l(r/d)&&f("overflow"),t*=d}const p=t.length+1;s=m(a-c,p,0==c),l(a/p)>r-i&&f("overflow"),i+=l(a/p),a%=p,t.splice(a++,0,i)}var u;return String.fromCodePoint(...t)},g=function(e){const t=[],n=(e=p(e)).length;let a=128,i=0,s=72;for(const n of e)n<128&&t.push(u(n));const c=t.length;let h=c;for(c&&t.push("-");h<n;){let n=r;for(const t of e)t>=a&&t<n&&(n=t);const p=h+1;n-a>l((r-i)/p)&&f("overflow"),i+=(n-a)*p,a=n;for(const n of e)if(n<a&&++i>r&&f("overflow"),n===a){let e=i;for(let n=o;;n+=o){const r=n<=s?1:n>=s+26?26:n-s;if(e<r)break;const a=e-r,i=o-r;t.push(u(d(r+a%i,0))),e=l(a/i)}t.push(u(d(e,0))),s=m(i,p,h===c),i=0,++h}++i,++a}return t.join("")},b={version:"2.1.0",ucs2:{decode:p,encode:e=>String.fromCodePoint(...e)},decode:v,encode:g,toASCII:function(e){return h(e,(function(e){return i.test(e)?"xn--"+g(e):e}))},toUnicode:function(e){return h(e,(function(e){return a.test(e)?v(e.slice(4).toLowerCase()):e}))}}},3689:(e,t,n)=>{"use strict";n.r(t),n.d(t,{decode:()=>g,default:()=>w,encode:()=>b,toASCII:()=>_,toUnicode:()=>y,ucs2decode:()=>p,ucs2encode:()=>d});const r=2147483647,o=36,a=/^xn--/,i=/[^\0-\x7E]/,s=/[\x2E\u3002\uFF0E\uFF61]/g,c={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},l=Math.floor,u=String.fromCharCode;function f(e){throw new RangeError(c[e])}function h(e,t){const n=e.split("@");let r="";n.length>1&&(r=n[0]+"@",e=n[1]);const o=function(e,t){const n=[];let r=e.length;for(;r--;)n[r]=t(e[r]);return n}((e=e.replace(s,".")).split("."),t).join(".");return r+o}function p(e){const t=[];let n=0;const r=e.length;for(;n<r;){const o=e.charCodeAt(n++);if(o>=55296&&o<=56319&&n<r){const r=e.charCodeAt(n++);56320==(64512&r)?t.push(((1023&o)<<10)+(1023&r)+65536):(t.push(o),n--)}else t.push(o)}return t}const d=e=>String.fromCodePoint(...e),m=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},v=function(e,t,n){let r=0;for(e=n?l(e/700):e>>1,e+=l(e/t);e>455;r+=o)e=l(e/35);return l(r+36*e/(e+38))},g=function(e){const t=[],n=e.length;let a=0,i=128,s=72,c=e.lastIndexOf("-");c<0&&(c=0);for(let n=0;n<c;++n)e.charCodeAt(n)>=128&&f("not-basic"),t.push(e.charCodeAt(n));for(let h=c>0?c+1:0;h<n;){let c=a;for(let t=1,i=o;;i+=o){h>=n&&f("invalid-input");const c=(u=e.charCodeAt(h++))-48<10?u-22:u-65<26?u-65:u-97<26?u-97:o;(c>=o||c>l((r-a)/t))&&f("overflow"),a+=c*t;const p=i<=s?1:i>=s+26?26:i-s;if(c<p)break;const d=o-p;t>l(r/d)&&f("overflow"),t*=d}const p=t.length+1;s=v(a-c,p,0==c),l(a/p)>r-i&&f("overflow"),i+=l(a/p),a%=p,t.splice(a++,0,i)}var u;return String.fromCodePoint(...t)},b=function(e){const t=[];let n=(e=p(e)).length,a=128,i=0,s=72;for(const n of e)n<128&&t.push(u(n));let c=t.length,h=c;for(c&&t.push("-");h<n;){let n=r;for(const t of e)t>=a&&t<n&&(n=t);const p=h+1;n-a>l((r-i)/p)&&f("overflow"),i+=(n-a)*p,a=n;for(const n of e)if(n<a&&++i>r&&f("overflow"),n==a){let e=i;for(let n=o;;n+=o){const r=n<=s?1:n>=s+26?26:n-s;if(e<r)break;const a=e-r,i=o-r;t.push(u(m(r+a%i,0))),e=l(a/i)}t.push(u(m(e,0))),s=v(i,p,h==c),i=0,++h}++i,++a}return t.join("")},y=function(e){return h(e,(function(e){return a.test(e)?g(e.slice(4).toLowerCase()):e}))},_=function(e){return h(e,(function(e){return i.test(e)?"xn--"+b(e):e}))},w={version:"2.1.0",ucs2:{decode:p,encode:d},decode:g,encode:b,toASCII:_,toUnicode:y}},62587:e=>{"use strict";function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,n,r,o){n=n||"&",r=r||"=";var a={};if("string"!=typeof e||0===e.length)return a;var i=/\+/g;e=e.split(n);var s=1e3;o&&"number"==typeof o.maxKeys&&(s=o.maxKeys);var c=e.length;s>0&&c>s&&(c=s);for(var l=0;l<c;++l){var u,f,h,p,d=e[l].replace(i,"%20"),m=d.indexOf(r);m>=0?(u=d.substr(0,m),f=d.substr(m+1)):(u=d,f=""),h=decodeURIComponent(u),p=decodeURIComponent(f),t(a,h)?Array.isArray(a[h])?a[h].push(p):a[h]=[a[h],p]:a[h]=p}return a}},12361:e=>{"use strict";var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,n,r,o){return n=n||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(o){var a=encodeURIComponent(t(o))+r;return Array.isArray(e[o])?e[o].map((function(e){return a+encodeURIComponent(t(e))})).join(n):a+encodeURIComponent(t(e[o]))})).join(n):o?encodeURIComponent(t(o))+r+encodeURIComponent(t(e)):""}},17673:(e,t,n)=>{"use strict";t.decode=t.parse=n(62587),t.encode=t.stringify=n(12361)},56012:(e,t)=>{var n="/sw-pleroma.js";Object.defineProperty(t,"__esModule",{value:!0}),t.default={register:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return!!navigator.serviceWorker&&navigator.serviceWorker.register(n,e)}},e.exports=t.default},8575:(e,t,n)=>{"use strict";var r=n(3689),o=n(62502);function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=y,t.resolve=function(e,t){return y(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?y(e,!1,!0).resolveObject(t):t},t.format=function(e){return o.isString(e)&&(e=y(e)),e instanceof a?e.format():a.prototype.format.call(e)},t.Url=a;var i=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),u=["'"].concat(l),f=["%","/","?",";","#"].concat(u),h=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},v={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},b=n(17673);function y(e,t,n){if(e&&o.isObject(e)&&e instanceof a)return e;var r=new a;return r.parse(e,t,n),r}a.prototype.parse=function(e,t,n){if(!o.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=-1!==a&&a<e.indexOf("#")?"?":"#",l=e.split(s);l[0]=l[0].replace(/\\/g,"/");var y=e=l.join(s);if(y=y.trim(),!n&&1===e.split("#").length){var _=c.exec(y);if(_)return this.path=y,this.href=y,this.pathname=_[1],_[2]?(this.search=_[2],this.query=t?b.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var w=i.exec(y);if(w){var x=(w=w[0]).toLowerCase();this.protocol=x,y=y.substr(w.length)}if(n||w||y.match(/^\/\/[^@\/]+@[^@\/]+/)){var k="//"===y.substr(0,2);!k||w&&v[w]||(y=y.substr(2),this.slashes=!0)}if(!v[w]&&(k||w&&!g[w])){for(var S,C,E=-1,O=0;O<h.length;O++)-1!==(N=y.indexOf(h[O]))&&(-1===E||N<E)&&(E=N);for(-1!==(C=-1===E?y.lastIndexOf("@"):y.lastIndexOf("@",E))&&(S=y.slice(0,C),y=y.slice(C+1),this.auth=decodeURIComponent(S)),E=-1,O=0;O<f.length;O++){var N;-1!==(N=y.indexOf(f[O]))&&(-1===E||N<E)&&(E=N)}-1===E&&(E=y.length),this.host=y.slice(0,E),y=y.slice(E),this.parseHost(),this.hostname=this.hostname||"";var j="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!j)for(var L=this.hostname.split(/\./),A=(O=0,L.length);O<A;O++){var M=L[O];if(M&&!M.match(p)){for(var I="",z=0,T=M.length;z<T;z++)M.charCodeAt(z)>127?I+="x":I+=M[z];if(!I.match(p)){var R=L.slice(0,O),$=L.slice(O+1),P=M.match(d);P&&(R.push(P[1]),$.unshift(P[2])),$.length&&(y="/"+$.join(".")+y),this.hostname=R.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),j||(this.hostname=r.toASCII(this.hostname));var F=this.port?":"+this.port:"",H=this.hostname||"";this.host=H+F,this.href+=this.host,j&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==y[0]&&(y="/"+y))}if(!m[x])for(O=0,A=u.length;O<A;O++){var D=u[O];if(-1!==y.indexOf(D)){var V=encodeURIComponent(D);V===D&&(V=escape(D)),y=y.split(D).join(V)}}var U=y.indexOf("#");-1!==U&&(this.hash=y.substr(U),y=y.slice(0,U));var W=y.indexOf("?");if(-1!==W?(this.search=y.substr(W),this.query=y.substr(W+1),t&&(this.query=b.parse(this.query)),y=y.slice(0,W)):t&&(this.search="",this.query={}),y&&(this.pathname=y),g[x]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){F=this.pathname||"";var B=this.search||"";this.path=F+B}return this.href=this.format(),this},a.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",a=!1,i="";this.host?a=e+this.host:this.hostname&&(a=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(a+=":"+this.port)),this.query&&o.isObject(this.query)&&Object.keys(this.query).length&&(i=b.stringify(this.query));var s=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||g[t])&&!1!==a?(a="//"+(a||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):a||(a=""),r&&"#"!==r.charAt(0)&&(r="#"+r),s&&"?"!==s.charAt(0)&&(s="?"+s),t+a+(n=n.replace(/[?#]/g,(function(e){return encodeURIComponent(e)})))+(s=s.replace("#","%23"))+r},a.prototype.resolve=function(e){return this.resolveObject(y(e,!1,!0)).format()},a.prototype.resolveObject=function(e){if(o.isString(e)){var t=new a;t.parse(e,!1,!0),e=t}for(var n=new a,r=Object.keys(this),i=0;i<r.length;i++){var s=r[i];n[s]=this[s]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var c=Object.keys(e),l=0;l<c.length;l++){var u=c[l];"protocol"!==u&&(n[u]=e[u])}return g[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!g[e.protocol]){for(var f=Object.keys(e),h=0;h<f.length;h++){var p=f[h];n[p]=e[p]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||v[e.protocol])n.pathname=e.pathname;else{for(var d=(e.pathname||"").split("/");d.length&&!(e.host=d.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==d[0]&&d.unshift(""),d.length<2&&d.unshift(""),n.pathname=d.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var m=n.pathname||"",b=n.search||"";n.path=m+b}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var y=n.pathname&&"/"===n.pathname.charAt(0),_=e.host||e.pathname&&"/"===e.pathname.charAt(0),w=_||y||n.host&&e.pathname,x=w,k=n.pathname&&n.pathname.split("/")||[],S=(d=e.pathname&&e.pathname.split("/")||[],n.protocol&&!g[n.protocol]);if(S&&(n.hostname="",n.port=null,n.host&&(""===k[0]?k[0]=n.host:k.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===d[0]?d[0]=e.host:d.unshift(e.host)),e.host=null),w=w&&(""===d[0]||""===k[0])),_)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,k=d;else if(d.length)k||(k=[]),k.pop(),k=k.concat(d),n.search=e.search,n.query=e.query;else if(!o.isNullOrUndefined(e.search))return S&&(n.hostname=n.host=k.shift(),(j=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=j.shift(),n.host=n.hostname=j.shift())),n.search=e.search,n.query=e.query,o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!k.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var C=k.slice(-1)[0],E=(n.host||e.host||k.length>1)&&("."===C||".."===C)||""===C,O=0,N=k.length;N>=0;N--)"."===(C=k[N])?k.splice(N,1):".."===C?(k.splice(N,1),O++):O&&(k.splice(N,1),O--);if(!w&&!x)for(;O--;O)k.unshift("..");!w||""===k[0]||k[0]&&"/"===k[0].charAt(0)||k.unshift(""),E&&"/"!==k.join("/").substr(-1)&&k.push("");var j,L=""===k[0]||k[0]&&"/"===k[0].charAt(0);return S&&(n.hostname=n.host=L?"":k.length?k.shift():"",(j=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=j.shift(),n.host=n.hostname=j.shift())),(w=w||n.host&&k.length)&&!L&&k.unshift(""),k.length?n.pathname=k.join("/"):(n.pathname=null,n.path=null),o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},a.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},62502:e=>{"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},90308:(e,t,n)=>{"use strict";n.d(t,{o:()=>et});const r="undefined"!=typeof window,o="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,a=e=>o?Symbol(e):e,i=e=>"number"==typeof e&&isFinite(e),s=e=>"[object RegExp]"===x(e),c=e=>k(e)&&0===Object.keys(e).length;function l(e,t){"undefined"!=typeof console&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const u=Object.assign;let f;const h=()=>f||(f="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{});function p(e){return e.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}const d=Object.prototype.hasOwnProperty;function m(e,t){return d.call(e,t)}const v=Array.isArray,g=e=>"function"==typeof e,b=e=>"string"==typeof e,y=e=>"boolean"==typeof e,_=e=>null!==e&&"object"==typeof e,w=Object.prototype.toString,x=e=>w.call(e),k=e=>"[object Object]"===x(e);function S(e,t,n={}){const{domain:r,messages:o,args:a}=n,i=new SyntaxError(String(e));return i.code=e,t&&(i.location=t),i.domain=r,i}String.fromCharCode(8232),String.fromCharCode(8233);const C=[];C[0]={w:[0],i:[3,0],"[":[4],o:[7]},C[1]={w:[1],".":[2],"[":[4],o:[7]},C[2]={w:[2],i:[3,0],0:[3,0]},C[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]},C[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]},C[5]={"'":[4,0],o:8,l:[5,0]},C[6]={'"':[4,0],o:8,l:[6,0]};const E=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function O(e){if(null==e)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}const N=new Map;function j(e,t){return _(e)?e[t]:null}const L=e=>e,A=e=>"",M=e=>0===e.length?"":e.join(""),I=e=>null==e?"":v(e)||k(e)&&e.toString===w?JSON.stringify(e,null,2):String(e);function z(e,t){return e=Math.abs(e),2===t?e?e>1?1:0:1:e?Math.min(e,2):0}let T=null;const R=$("function:translate");function $(e){return t=>T&&T.emit(e,t)}function P(e,t,n){return[...new Set([n,...v(t)?t:_(t)?Object.keys(t):b(t)?[t]:[n]])]}function F(e,t,n){const r=b(n)?n:U,o=e;o.__localeChainCache||(o.__localeChainCache=new Map);let a=o.__localeChainCache.get(r);if(!a){a=[];let e=[n];for(;v(e);)e=H(a,e,t);const i=v(t)||!k(t)?t:t.default?t.default:null;e=b(i)?[i]:i,v(e)&&H(a,e,!1),o.__localeChainCache.set(r,a)}return a}function H(e,t,n){let r=!0;for(let o=0;o<t.length&&y(r);o++){const a=t[o];b(a)&&(r=D(e,t[o],n))}return r}function D(e,t,n){let r;const o=t.split("-");do{r=V(e,o.join("-"),n),o.splice(-1,1)}while(o.length&&!0===r);return r}function V(e,t,n){let r=!1;if(!e.includes(t)&&(r=!0,t)){r="!"!==t[t.length-1];const o=t.replace(/!/g,"");e.push(o),(v(n)||k(n))&&n[o]&&(r=n[o])}return r}const U="en-US",W=e=>`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;let B,Y,q=null;const G=e=>{q=e};let Z=null;const X=e=>{Z=e};let J=0;function K(e,t,n,r,o){const{missing:a,onWarn:i}=e;if(null!==a){const r=a(e,n,t,o);return b(r)?r:t}return t}function Q(e,t,n){e.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}Object.create(null);let ee=15;const te=()=>++ee,ne={INVALID_ARGUMENT:ee,INVALID_DATE_ARGUMENT:te(),INVALID_ISO_DATE_ARGUMENT:te(),__EXTEND_POINT__:te()};function re(e){return S(e,null,void 0)}const oe=()=>"",ae=e=>g(e);function ie(e,...t){const{fallbackFormat:n,postTranslation:r,unresolving:o,messageCompiler:a,fallbackLocale:s,messages:c}=e,[l,f]=le(...t),h=(y(f.missingWarn)?f.missingWarn:e.missingWarn,y(f.fallbackWarn)?f.fallbackWarn:e.fallbackWarn,y(f.escapeParameter)?f.escapeParameter:e.escapeParameter),d=!!f.resolvedMessage,m=b(f.default)||y(f.default)?y(f.default)?a?l:()=>l:f.default:n?a?l:()=>l:"",w=n||""!==m,x=b(f.locale)?f.locale:e.locale;h&&function(e){v(e.list)?e.list=e.list.map((e=>b(e)?p(e):e)):_(e.named)&&Object.keys(e.named).forEach((t=>{b(e.named[t])&&(e.named[t]=p(e.named[t]))}))}(f);let[S,C,E]=d?[l,x,c[x]||{}]:se(e,l,x,s),O=S,N=l;if(d||b(O)||ae(O)||w&&(O=m,N=O),!(d||(b(O)||ae(O))&&b(C)))return o?-1:l;let j=!1;const T=ae(O)?O:ce(e,l,C,O,N,(()=>{j=!0}));if(j)return O;const $=function(e,t,n,r){const{modifiers:o,pluralRules:a,messageResolver:s,fallbackLocale:c,fallbackWarn:l,missingWarn:u,fallbackContext:f}=e,h={locale:t,modifiers:o,pluralRules:a,messages:r=>{let o=s(n,r);if(null==o&&f){const[,,e]=se(f,r,t,c);o=s(e,r)}if(b(o)){let n=!1;const a=ce(e,r,t,o,r,(()=>{n=!0}));return n?oe:a}return ae(o)?o:oe}};return e.processor&&(h.processor=e.processor),r.list&&(h.list=r.list),r.named&&(h.named=r.named),i(r.plural)&&(h.pluralIndex=r.plural),h}(e,C,E,f),P=function(e,t,n){return t(n)}(0,T,function(e={}){const t=e.locale,n=function(e){const t=i(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(i(e.named.count)||i(e.named.n))?i(e.named.count)?e.named.count:i(e.named.n)?e.named.n:t:t}(e),r=_(e.pluralRules)&&b(t)&&g(e.pluralRules[t])?e.pluralRules[t]:z,o=_(e.pluralRules)&&b(t)&&g(e.pluralRules[t])?z:void 0,a=e.list||[],s=e.named||{};function c(t){return(g(e.messages)?e.messages(t):!!_(e.messages)&&e.messages[t])||(e.parent?e.parent.message(t):A)}i(e.pluralIndex)&&function(e,t){t.count||(t.count=e),t.n||(t.n=e)}(n,s);const l=k(e.processor)&&g(e.processor.normalize)?e.processor.normalize:M,u=k(e.processor)&&g(e.processor.interpolate)?e.processor.interpolate:I,f={list:e=>a[e],named:e=>s[e],plural:e=>e[r(n,e.length,o)],linked:(t,...n)=>{const[r,o]=n;let a="text",i="";1===n.length?_(r)?(i=r.modifier||i,a=r.type||a):b(r)&&(i=r||i):2===n.length&&(b(r)&&(i=r||i),b(o)&&(a=o||a));let s=c(t)(f);return"vnode"===a&&v(s)&&i&&(s=s[0]),i?(l=i,e.modifiers?e.modifiers[l]:L)(s,a):s;var l},message:c,type:k(e.processor)&&b(e.processor.type)?e.processor.type:"text",interpolate:u,normalize:l};return f}($)),F=r?r(P,l):P;if(__INTLIFY_PROD_DEVTOOLS__){const t={timestamp:Date.now(),key:b(l)?l:ae(O)?O.key:"",locale:C||(ae(O)?O.locale:""),format:b(O)?O:ae(O)?O.source:"",message:F};t.meta=u({},e.__meta,q||{}),R(t)}return F}function se(e,t,n,r,o,a){const{messages:i,onWarn:s,messageResolver:c,localeFallbacker:l}=e,u=l(e,r,n);let f,h={},p=null,d=n,m=null;for(let n=0;n<u.length&&(f=m=u[n],h=i[f]||{},null===(p=c(h,t))&&(p=h[t]),!b(p)&&!g(p));n++){const n=K(e,t,f,0,"translate");n!==t&&(p=n),d=m}return[p,f,h]}function ce(e,t,n,r,o,a){const{messageCompiler:i,warnHtmlMessage:s}=e;if(ae(r)){const e=r;return e.locale=e.locale||n,e.key=e.key||t,e}if(null==i){const e=()=>r;return e.locale=n,e.key=t,e}const c=i(r,function(e,t,n,r,o,a){return{warnHtmlMessage:o,onError:e=>{throw a&&a(e),e},onCacheKey:e=>((e,t,n)=>{return r={l:e,k:t,s:n},JSON.stringify(r).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027");var r})(t,n,e)}}(0,n,o,0,s,a));return c.locale=n,c.key=t,c.source=r,c}function le(...e){const[t,n,r]=e,o={};if(!b(t)&&!i(t)&&!ae(t))throw re(ne.INVALID_ARGUMENT);const a=i(t)?String(t):(ae(t),t);return i(n)?o.plural=n:b(n)?o.default=n:k(n)&&!c(n)?o.named=n:v(n)&&(o.list=n),i(r)?o.plural=r:b(r)?o.default=r:k(r)&&u(o,r),[a,o]}const ue="undefined"!=typeof Intl;function fe(e,...t){const{datetimeFormats:n,unresolving:r,fallbackLocale:o,onWarn:a,localeFallbacker:i}=e,{__datetimeFormatters:s}=e,[l,f,h,p]=pe(...t),d=(y(h.missingWarn)?h.missingWarn:e.missingWarn,y(h.fallbackWarn)?h.fallbackWarn:e.fallbackWarn,!!h.part),m=b(h.locale)?h.locale:e.locale,v=i(e,o,m);if(!b(l)||""===l)return new Intl.DateTimeFormat(m,p).format(f);let g,_={},w=null,x=m,S=null;for(let t=0;t<v.length&&(g=S=v[t],_=n[g]||{},w=_[l],!k(w));t++)K(e,l,g,0,"datetime format"),x=S;if(!k(w)||!b(g))return r?-1:l;let C=`${g}__${l}`;c(p)||(C=`${C}__${JSON.stringify(p)}`);let E=s.get(C);return E||(E=new Intl.DateTimeFormat(g,u({},w,p)),s.set(C,E)),d?E.formatToParts(f):E.format(f)}ue&&Intl.DateTimeFormat,ue&&Intl.NumberFormat;const he=["localeMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName","formatMatcher","hour12","timeZone","dateStyle","timeStyle","calendar","dayPeriod","numberingSystem","hourCycle","fractionalSecondDigits"];function pe(...e){const[t,n,r,o]=e,a={};let s,c={};if(b(t)){const e=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!e)throw re(ne.INVALID_ISO_DATE_ARGUMENT);const n=e[3]?e[3].trim().startsWith("T")?`${e[1].trim()}${e[3].trim()}`:`${e[1].trim()}T${e[3].trim()}`:e[1].trim();s=new Date(n);try{s.toISOString()}catch(e){throw re(ne.INVALID_ISO_DATE_ARGUMENT)}}else if("[object Date]"===x(t)){if(isNaN(t.getTime()))throw re(ne.INVALID_DATE_ARGUMENT);s=t}else{if(!i(t))throw re(ne.INVALID_ARGUMENT);s=t}return b(n)?a.key=n:k(n)&&Object.keys(n).forEach((e=>{he.includes(e)?c[e]=n[e]:a[e]=n[e]})),b(r)?a.locale=r:k(r)&&(c=r),k(o)&&(c=o),[a.key||"",s,a,c]}function de(e,t,n){const r=e;for(const e in n){const n=`${t}__${e}`;r.__datetimeFormatters.has(n)&&r.__datetimeFormatters.delete(n)}}function me(e,...t){const{numberFormats:n,unresolving:r,fallbackLocale:o,onWarn:a,localeFallbacker:i}=e,{__numberFormatters:s}=e,[l,f,h,p]=ge(...t),d=(y(h.missingWarn)?h.missingWarn:e.missingWarn,y(h.fallbackWarn)?h.fallbackWarn:e.fallbackWarn,!!h.part),m=b(h.locale)?h.locale:e.locale,v=i(e,o,m);if(!b(l)||""===l)return new Intl.NumberFormat(m,p).format(f);let g,_={},w=null,x=m,S=null;for(let t=0;t<v.length&&(g=S=v[t],_=n[g]||{},w=_[l],!k(w));t++)K(e,l,g,0,"number format"),x=S;if(!k(w)||!b(g))return r?-1:l;let C=`${g}__${l}`;c(p)||(C=`${C}__${JSON.stringify(p)}`);let E=s.get(C);return E||(E=new Intl.NumberFormat(g,u({},w,p)),s.set(C,E)),d?E.formatToParts(f):E.format(f)}const ve=["localeMatcher","style","currency","currencyDisplay","currencySign","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","compactDisplay","notation","signDisplay","unit","unitDisplay","roundingMode","roundingPriority","roundingIncrement","trailingZeroDisplay"];function ge(...e){const[t,n,r,o]=e,a={};let s={};if(!i(t))throw re(ne.INVALID_ARGUMENT);const c=t;return b(n)?a.key=n:k(n)&&Object.keys(n).forEach((e=>{ve.includes(e)?s[e]=n[e]:a[e]=n[e]})),b(r)?a.locale=r:k(r)&&(s=r),k(o)&&(s=o),[a.key||"",c,a,s]}function be(e,t,n){const r=e;for(const e in n){const n=`${t}__${e}`;r.__numberFormatters.has(n)&&r.__numberFormatters.delete(n)}}"boolean"!=typeof __INTLIFY_PROD_DEVTOOLS__&&(h().__INTLIFY_PROD_DEVTOOLS__=!1);var ye=n(66252),_e=n(2262);let we=7;const xe=()=>++we;xe(),xe(),xe(),xe(),xe(),xe();let ke=15;const Se=()=>++ke,Ce={UNEXPECTED_RETURN_TYPE:ke,INVALID_ARGUMENT:Se(),MUST_BE_CALL_SETUP_TOP:Se(),NOT_INSLALLED:Se(),NOT_AVAILABLE_IN_LEGACY_MODE:Se(),REQUIRED_VALUE:Se(),INVALID_VALUE:Se(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Se(),NOT_INSLALLED_WITH_PROVIDE:Se(),UNEXPECTED_ERROR:Se(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Se(),BRIDGE_SUPPORT_VUE_2_ONLY:Se(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Se(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Se(),__EXTEND_POINT__:Se()};function Ee(e,...t){return S(e,null,void 0)}const Oe=a("__transrateVNode"),Ne=a("__datetimeParts"),je=a("__numberParts"),Le=a("__setPluralRules");a("__intlifyMeta");const Ae=a("__injectWithOption");function Me(e){if(!_(e))return e;for(const t in e)if(m(e,t))if(t.includes(".")){const n=t.split("."),r=n.length-1;let o=e;for(let e=0;e<r;e++)n[e]in o||(o[n[e]]={}),o=o[n[e]];o[n[r]]=e[t],delete e[t],_(o[n[r]])&&Me(o[n[r]])}else _(e[t])&&Me(e[t]);return e}function Ie(e,t){const{messages:n,__i18n:r,messageResolver:o,flatJson:a}=t,i=k(n)?n:v(r)?{}:{[e]:{}};if(v(r)&&r.forEach((e=>{if("locale"in e&&"resource"in e){const{locale:t,resource:n}=e;t?(i[t]=i[t]||{},Te(n,i[t])):Te(n,i)}else b(e)&&Te(JSON.parse(e),i)})),null==o&&a)for(const e in i)m(i,e)&&Me(i[e]);return i}const ze=e=>!_(e)||v(e);function Te(e,t){if(ze(e)||ze(t))throw Ee(Ce.INVALID_VALUE);for(const n in e)m(e,n)&&(ze(e[n])||ze(t[n])?t[n]=e[n]:Te(e[n],t[n]))}function Re(e){return e.type}function $e(e,t,n){let r=_(t.messages)?t.messages:{};"__i18nGlobal"in n&&(r=Ie(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));const o=Object.keys(r);if(o.length&&o.forEach((t=>{e.mergeLocaleMessage(t,r[t])})),_(t.datetimeFormats)){const n=Object.keys(t.datetimeFormats);n.length&&n.forEach((n=>{e.mergeDateTimeFormat(n,t.datetimeFormats[n])}))}if(_(t.numberFormats)){const n=Object.keys(t.numberFormats);n.length&&n.forEach((n=>{e.mergeNumberFormat(n,t.numberFormats[n])}))}}function Pe(e){return(0,ye.Wm)(ye.xv,null,e,0)}const Fe="__INTLIFY_META__";let He=0;function De(e){return(t,n,r,o)=>e(n,r,(0,ye.FN)()||void 0,o)}function Ve(e={},t){const{__root:n}=e,o=void 0===n;let a=!y(e.inheritLocale)||e.inheritLocale;const c=(0,_e.iH)(n&&a?n.locale.value:b(e.locale)?e.locale:U),f=(0,_e.iH)(n&&a?n.fallbackLocale.value:b(e.fallbackLocale)||v(e.fallbackLocale)||k(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:c.value),h=(0,_e.iH)(Ie(c.value,e)),p=(0,_e.iH)(k(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),d=(0,_e.iH)(k(e.numberFormats)?e.numberFormats:{[c.value]:{}});let m=n?n.missingWarn:!y(e.missingWarn)&&!s(e.missingWarn)||e.missingWarn,w=n?n.fallbackWarn:!y(e.fallbackWarn)&&!s(e.fallbackWarn)||e.fallbackWarn,x=n?n.fallbackRoot:!y(e.fallbackRoot)||e.fallbackRoot,S=!!e.fallbackFormat,C=g(e.missing)?e.missing:null,E=g(e.missing)?De(e.missing):null,O=g(e.postTranslation)?e.postTranslation:null,N=n?n.warnHtmlMessage:!y(e.warnHtmlMessage)||e.warnHtmlMessage,L=!!e.escapeParameter;const A=n?n.modifiers:k(e.modifiers)?e.modifiers:{};let M,I=e.pluralRules||n&&n.pluralRules;M=(()=>{o&&X(null);const t={version:"9.2.2",locale:c.value,fallbackLocale:f.value,messages:h.value,modifiers:A,pluralRules:I,missing:null===E?void 0:E,missingWarn:m,fallbackWarn:w,fallbackFormat:S,unresolving:!0,postTranslation:null===O?void 0:O,warnHtmlMessage:N,escapeParameter:L,messageResolver:e.messageResolver,__meta:{framework:"vue"}};t.datetimeFormats=p.value,t.numberFormats=d.value,t.__datetimeFormatters=k(M)?M.__datetimeFormatters:void 0,t.__numberFormatters=k(M)?M.__numberFormatters:void 0;const n=function(e={}){const t=b(e.version)?e.version:"9.2.2",n=b(e.locale)?e.locale:U,r=v(e.fallbackLocale)||k(e.fallbackLocale)||b(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:n,o=k(e.messages)?e.messages:{[n]:{}},a=k(e.datetimeFormats)?e.datetimeFormats:{[n]:{}},i=k(e.numberFormats)?e.numberFormats:{[n]:{}},c=u({},e.modifiers||{},{upper:(e,t)=>"text"===t&&b(e)?e.toUpperCase():"vnode"===t&&_(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>"text"===t&&b(e)?e.toLowerCase():"vnode"===t&&_(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>"text"===t&&b(e)?W(e):"vnode"===t&&_(e)&&"__v_isVNode"in e?W(e.children):e}),f=e.pluralRules||{},h=g(e.missing)?e.missing:null,p=!y(e.missingWarn)&&!s(e.missingWarn)||e.missingWarn,d=!y(e.fallbackWarn)&&!s(e.fallbackWarn)||e.fallbackWarn,m=!!e.fallbackFormat,w=!!e.unresolving,x=g(e.postTranslation)?e.postTranslation:null,S=k(e.processor)?e.processor:null,C=!y(e.warnHtmlMessage)||e.warnHtmlMessage,E=!!e.escapeParameter,O=g(e.messageCompiler)?e.messageCompiler:void 0,N=g(e.messageResolver)?e.messageResolver:B||j,L=g(e.localeFallbacker)?e.localeFallbacker:Y||P,A=_(e.fallbackContext)?e.fallbackContext:void 0,M=g(e.onWarn)?e.onWarn:l,I=e,z=_(I.__datetimeFormatters)?I.__datetimeFormatters:new Map,R=_(I.__numberFormatters)?I.__numberFormatters:new Map,$=_(I.__meta)?I.__meta:{};J++;const F={version:t,cid:J,locale:n,fallbackLocale:r,messages:o,modifiers:c,pluralRules:f,missing:h,missingWarn:p,fallbackWarn:d,fallbackFormat:m,unresolving:w,postTranslation:x,processor:S,warnHtmlMessage:C,escapeParameter:E,messageCompiler:O,messageResolver:N,localeFallbacker:L,fallbackContext:A,onWarn:M,__meta:$};return F.datetimeFormats=a,F.numberFormats=i,F.__datetimeFormatters=z,F.__numberFormatters=R,__INTLIFY_PROD_DEVTOOLS__&&function(e,t,n){T&&T.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:n})}(F,t,$),F}(t);return o&&X(n),n})(),Q(M,c.value,f.value);const z=(0,ye.Fl)({get:()=>c.value,set:e=>{c.value=e,M.locale=c.value}}),R=(0,ye.Fl)({get:()=>f.value,set:e=>{f.value=e,M.fallbackLocale=f.value,Q(M,c.value,e)}}),$=(0,ye.Fl)((()=>h.value)),H=(0,ye.Fl)((()=>p.value)),D=(0,ye.Fl)((()=>d.value)),V=(e,t,r,a,s,l)=>{let u;if(c.value,f.value,h.value,p.value,d.value,__INTLIFY_PROD_DEVTOOLS__)try{G((()=>{const e=(0,ye.FN)();let t=null;return e&&(t=Re(e)[Fe])?{[Fe]:t}:null})()),o||(M.fallbackContext=n?Z:void 0),u=e(M)}finally{G(null),o||(M.fallbackContext=void 0)}else u=e(M);if(i(u)&&-1===u){const[e,r]=t();return n&&x?a(n):s(e)}if(l(u))return u;throw Ee(Ce.UNEXPECTED_RETURN_TYPE)};function q(...e){return V((t=>Reflect.apply(ie,null,[t,...e])),(()=>le(...e)),0,(t=>Reflect.apply(t.t,t,[...e])),(e=>e),(e=>b(e)))}const K={normalize:function(e){return e.map((e=>b(e)||i(e)||y(e)?Pe(String(e)):e))},interpolate:e=>e,type:"vnode"};function ee(e){return h.value[e]||{}}He++,n&&r&&((0,ye.YP)(n.locale,(e=>{a&&(c.value=e,M.locale=e,Q(M,c.value,f.value))})),(0,ye.YP)(n.fallbackLocale,(e=>{a&&(f.value=e,M.fallbackLocale=e,Q(M,c.value,f.value))})));const te={id:He,locale:z,fallbackLocale:R,get inheritLocale(){return a},set inheritLocale(e){a=e,e&&n&&(c.value=n.locale.value,f.value=n.fallbackLocale.value,Q(M,c.value,f.value))},get availableLocales(){return Object.keys(h.value).sort()},messages:$,get modifiers(){return A},get pluralRules(){return I||{}},get isGlobal(){return o},get missingWarn(){return m},set missingWarn(e){m=e,M.missingWarn=m},get fallbackWarn(){return w},set fallbackWarn(e){w=e,M.fallbackWarn=w},get fallbackRoot(){return x},set fallbackRoot(e){x=e},get fallbackFormat(){return S},set fallbackFormat(e){S=e,M.fallbackFormat=S},get warnHtmlMessage(){return N},set warnHtmlMessage(e){N=e,M.warnHtmlMessage=e},get escapeParameter(){return L},set escapeParameter(e){L=e,M.escapeParameter=e},t:q,getLocaleMessage:ee,setLocaleMessage:function(e,t){h.value[e]=t,M.messages=h.value},mergeLocaleMessage:function(e,t){h.value[e]=h.value[e]||{},Te(t,h.value[e]),M.messages=h.value},getPostTranslationHandler:function(){return g(O)?O:null},setPostTranslationHandler:function(e){O=e,M.postTranslation=e},getMissingHandler:function(){return C},setMissingHandler:function(e){null!==e&&(E=De(e)),C=e,M.missing=E},[Le]:function(e){I=e,M.pluralRules=I}};return te.datetimeFormats=H,te.numberFormats=D,te.rt=function(...e){const[t,n,r]=e;if(r&&!_(r))throw Ee(Ce.INVALID_ARGUMENT);return q(t,n,u({resolvedMessage:!0},r||{}))},te.te=function(e,t){const n=ee(b(t)?t:c.value);return null!==M.messageResolver(n,e)},te.tm=function(e){const t=function(e){let t=null;const n=F(M,f.value,c.value);for(let r=0;r<n.length;r++){const o=h.value[n[r]]||{},a=M.messageResolver(o,e);if(null!=a){t=a;break}}return t}(e);return null!=t?t:n&&n.tm(e)||{}},te.d=function(...e){return V((t=>Reflect.apply(fe,null,[t,...e])),(()=>pe(...e)),0,(t=>Reflect.apply(t.d,t,[...e])),(()=>""),(e=>b(e)))},te.n=function(...e){return V((t=>Reflect.apply(me,null,[t,...e])),(()=>ge(...e)),0,(t=>Reflect.apply(t.n,t,[...e])),(()=>""),(e=>b(e)))},te.getDateTimeFormat=function(e){return p.value[e]||{}},te.setDateTimeFormat=function(e,t){p.value[e]=t,M.datetimeFormats=p.value,de(M,e,t)},te.mergeDateTimeFormat=function(e,t){p.value[e]=u(p.value[e]||{},t),M.datetimeFormats=p.value,de(M,e,t)},te.getNumberFormat=function(e){return d.value[e]||{}},te.setNumberFormat=function(e,t){d.value[e]=t,M.numberFormats=d.value,be(M,e,t)},te.mergeNumberFormat=function(e,t){d.value[e]=u(d.value[e]||{},t),M.numberFormats=d.value,be(M,e,t)},te[Ae]=e.__injectWithOption,te[Oe]=function(...e){return V((t=>{let n;const r=t;try{r.processor=K,n=Reflect.apply(ie,null,[r,...e])}finally{r.processor=null}return n}),(()=>le(...e)),0,(t=>t[Oe](...e)),(e=>[Pe(e)]),(e=>v(e)))},te[Ne]=function(...e){return V((t=>Reflect.apply(fe,null,[t,...e])),(()=>pe(...e)),0,(t=>t[Ne](...e)),(()=>[]),(e=>b(e)||v(e)))},te[je]=function(...e){return V((t=>Reflect.apply(me,null,[t,...e])),(()=>ge(...e)),0,(t=>t[je](...e)),(()=>[]),(e=>b(e)||v(e)))},te}function Ue(e={},t){{const t=Ve(function(e){const t=b(e.locale)?e.locale:U,n=b(e.fallbackLocale)||v(e.fallbackLocale)||k(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:t,r=g(e.missing)?e.missing:void 0,o=!y(e.silentTranslationWarn)&&!s(e.silentTranslationWarn)||!e.silentTranslationWarn,a=!y(e.silentFallbackWarn)&&!s(e.silentFallbackWarn)||!e.silentFallbackWarn,i=!y(e.fallbackRoot)||e.fallbackRoot,c=!!e.formatFallbackMessages,l=k(e.modifiers)?e.modifiers:{},f=e.pluralizationRules,h=g(e.postTranslation)?e.postTranslation:void 0,p=!b(e.warnHtmlInMessage)||"off"!==e.warnHtmlInMessage,d=!!e.escapeParameterHtml,m=!y(e.sync)||e.sync;let _=e.messages;if(k(e.sharedMessages)){const t=e.sharedMessages;_=Object.keys(t).reduce(((e,n)=>{const r=e[n]||(e[n]={});return u(r,t[n]),e}),_||{})}const{__i18n:w,__root:x,__injectWithOption:S}=e,C=e.datetimeFormats,E=e.numberFormats;return{locale:t,fallbackLocale:n,messages:_,flatJson:e.flatJson,datetimeFormats:C,numberFormats:E,missing:r,missingWarn:o,fallbackWarn:a,fallbackRoot:i,fallbackFormat:c,modifiers:l,pluralRules:f,postTranslation:h,warnHtmlMessage:p,escapeParameter:d,messageResolver:e.messageResolver,inheritLocale:m,__i18n:w,__root:x,__injectWithOption:S}}(e)),n={id:t.id,get locale(){return t.locale.value},set locale(e){t.locale.value=e},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(e){t.fallbackLocale.value=e},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get formatter(){return{interpolate:()=>[]}},set formatter(e){},get missing(){return t.getMissingHandler()},set missing(e){t.setMissingHandler(e)},get silentTranslationWarn(){return y(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(e){t.missingWarn=y(e)?!e:e},get silentFallbackWarn(){return y(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(e){t.fallbackWarn=y(e)?!e:e},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(e){t.fallbackFormat=e},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(e){t.setPostTranslationHandler(e)},get sync(){return t.inheritLocale},set sync(e){t.inheritLocale=e},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(e){t.warnHtmlMessage="off"!==e},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(e){t.escapeParameter=e},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(e){},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...e){const[n,r,o]=e,a={};let i=null,s=null;if(!b(n))throw Ee(Ce.INVALID_ARGUMENT);const c=n;return b(r)?a.locale=r:v(r)?i=r:k(r)&&(s=r),v(o)?i=o:k(o)&&(s=o),Reflect.apply(t.t,t,[c,i||s||{},a])},rt:(...e)=>Reflect.apply(t.rt,t,[...e]),tc(...e){const[n,r,o]=e,a={plural:1};let s=null,c=null;if(!b(n))throw Ee(Ce.INVALID_ARGUMENT);const l=n;return b(r)?a.locale=r:i(r)?a.plural=r:v(r)?s=r:k(r)&&(c=r),b(o)?a.locale=o:v(o)?s=o:k(o)&&(c=o),Reflect.apply(t.t,t,[l,s||c||{},a])},te:(e,n)=>t.te(e,n),tm:e=>t.tm(e),getLocaleMessage:e=>t.getLocaleMessage(e),setLocaleMessage(e,n){t.setLocaleMessage(e,n)},mergeLocaleMessage(e,n){t.mergeLocaleMessage(e,n)},d:(...e)=>Reflect.apply(t.d,t,[...e]),getDateTimeFormat:e=>t.getDateTimeFormat(e),setDateTimeFormat(e,n){t.setDateTimeFormat(e,n)},mergeDateTimeFormat(e,n){t.mergeDateTimeFormat(e,n)},n:(...e)=>Reflect.apply(t.n,t,[...e]),getNumberFormat:e=>t.getNumberFormat(e),setNumberFormat(e,n){t.setNumberFormat(e,n)},mergeNumberFormat(e,n){t.mergeNumberFormat(e,n)},getChoiceIndex:(e,t)=>-1,__onComponentInstanceCreated(t){const{componentInstanceCreatedListener:r}=e;r&&r(t,n)}};return n}}const We={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>"parent"===e||"global"===e,default:"parent"},i18n:{type:Object}};function Be(e){return ye.HY}const Ye={name:"i18n-t",props:u({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>i(e)||!isNaN(e)}},We),setup(e,t){const{slots:n,attrs:r}=t,o=e.i18n||tt({useScope:e.scope,__useComponent:!0});return()=>{const a=Object.keys(n).filter((e=>"_"!==e)),i={};e.locale&&(i.locale=e.locale),void 0!==e.plural&&(i.plural=b(e.plural)?+e.plural:e.plural);const s=function({slots:e},t){return 1===t.length&&"default"===t[0]?(e.default?e.default():[]).reduce(((e,t)=>[...e,...v(t.children)?t.children:[t]]),[]):t.reduce(((t,n)=>{const r=e[n];return r&&(t[n]=r()),t}),{})}(t,a),c=o[Oe](e.keypath,s,i),l=u({},r),f=b(e.tag)||_(e.tag)?e.tag:Be();return(0,ye.h)(f,l,c)}}};function qe(e,t,n,r){const{slots:o,attrs:a}=t;return()=>{const t={part:!0};let i={};e.locale&&(t.locale=e.locale),b(e.format)?t.key=e.format:_(e.format)&&(b(e.format.key)&&(t.key=e.format.key),i=Object.keys(e.format).reduce(((t,r)=>n.includes(r)?u({},t,{[r]:e.format[r]}):t),{}));const s=r(e.value,t,i);let c=[t.key];v(s)?c=s.map(((e,t)=>{const n=o[e.type],r=n?n({[e.type]:e.value,index:t,parts:s}):[e.value];var a;return v(a=r)&&!b(a[0])&&(r[0].key=`${e.type}-${t}`),r})):b(s)&&(c=[s]);const l=u({},a),f=b(e.tag)||_(e.tag)?e.tag:Be();return(0,ye.h)(f,l,c)}}const Ge={name:"i18n-n",props:u({value:{type:Number,required:!0},format:{type:[String,Object]}},We),setup(e,t){const n=e.i18n||tt({useScope:"parent",__useComponent:!0});return qe(e,t,ve,((...e)=>n[je](...e)))}},Ze={name:"i18n-d",props:u({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},We),setup(e,t){const n=e.i18n||tt({useScope:"parent",__useComponent:!0});return qe(e,t,he,((...e)=>n[Ne](...e)))}};function Xe(e){if(b(e))return{path:e};if(k(e)){if(!("path"in e))throw Ee(Ce.REQUIRED_VALUE);return e}throw Ee(Ce.INVALID_VALUE)}function Je(e){const{path:t,locale:n,args:r,choice:o,plural:a}=e,s={},c=r||{};return b(n)&&(s.locale=n),i(o)&&(s.plural=o),i(a)&&(s.plural=a),[t,c,s]}function Ke(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Le](t.pluralizationRules||e.pluralizationRules);const n=Ie(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach((t=>e.mergeLocaleMessage(t,n[t]))),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach((n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n]))),t.numberFormats&&Object.keys(t.numberFormats).forEach((n=>e.mergeNumberFormat(n,t.numberFormats[n]))),e}const Qe=a("global-vue-i18n");function et(e={},t){const n=__VUE_I18N_LEGACY_API__&&y(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,o=!y(e.globalInjection)||e.globalInjection,i=!__VUE_I18N_LEGACY_API__||!n||!!e.allowComposition,s=new Map,[c,l]=function(e,t,n){const r=(0,_e.B)();{const n=__VUE_I18N_LEGACY_API__&&t?r.run((()=>Ue(e))):r.run((()=>Ve(e)));if(null==n)throw Ee(Ce.UNEXPECTED_ERROR);return[r,n]}}(e,n),u=a("");{const e={get mode(){return __VUE_I18N_LEGACY_API__&&n?"legacy":"composition"},get allowComposition(){return i},async install(t,...a){t.__VUE_I18N_SYMBOL__=u,t.provide(t.__VUE_I18N_SYMBOL__,e),!n&&o&&function(e,t){const n=Object.create(null);nt.forEach((e=>{const r=Object.getOwnPropertyDescriptor(t,e);if(!r)throw Ee(Ce.UNEXPECTED_ERROR);const o=(0,_e.dq)(r.value)?{get:()=>r.value.value,set(e){r.value.value=e}}:{get:()=>r.get&&r.get()};Object.defineProperty(n,e,o)})),e.config.globalProperties.$i18n=n,rt.forEach((n=>{const r=Object.getOwnPropertyDescriptor(t,n);if(!r||!r.value)throw Ee(Ce.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${n}`,r)}))}(t,e.global),__VUE_I18N_FULL_INSTALL__&&function(e,t,...n){const o=k(n[0])?n[0]:{},a=!!o.useI18nComponentName;(!y(o.globalInstall)||o.globalInstall)&&(e.component(a?"i18n":Ye.name,Ye),e.component(Ge.name,Ge),e.component(Ze.name,Ze)),e.directive("t",function(e){const t=t=>{const{instance:n,modifiers:r,value:o}=t;if(!n||!n.$)throw Ee(Ce.UNEXPECTED_ERROR);const a=function(e,t){const n=e;if("composition"===e.mode)return n.__getInstance(t)||e.global;{const r=n.__getInstance(t);return null!=r?r.__composer:e.global.__composer}}(e,n.$),i=Xe(o);return[Reflect.apply(a.t,a,[...Je(i)]),a]};return{created:(n,o)=>{const[a,i]=t(o);r&&e.global===i&&(n.__i18nWatcher=(0,ye.YP)(i.locale,(()=>{o.instance&&o.instance.$forceUpdate()}))),n.__composer=i,n.textContent=a},unmounted:e=>{r&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},beforeUpdate:(e,{value:t})=>{if(e.__composer){const n=e.__composer,r=Xe(t);e.textContent=Reflect.apply(n.t,n,[...Je(r)])}},getSSRProps:e=>{const[n]=t(e);return{textContent:n}}}}(t))}(t,e,...a),__VUE_I18N_LEGACY_API__&&n&&t.mixin(function(e,t,n){return{beforeCreate(){const r=(0,ye.FN)();if(!r)throw Ee(Ce.UNEXPECTED_ERROR);const o=this.$options;if(o.i18n){const n=o.i18n;o.__i18n&&(n.__i18n=o.__i18n),n.__root=t,this===this.$root?this.$i18n=Ke(e,n):(n.__injectWithOption=!0,this.$i18n=Ue(n))}else o.__i18n?this===this.$root?this.$i18n=Ke(e,o):this.$i18n=Ue({__i18n:o.__i18n,__injectWithOption:!0,__root:t}):this.$i18n=e;o.__i18nGlobal&&$e(t,o,o),e.__onComponentInstanceCreated(this.$i18n),n.__setInstance(r,this.$i18n),this.$t=(...e)=>this.$i18n.t(...e),this.$rt=(...e)=>this.$i18n.rt(...e),this.$tc=(...e)=>this.$i18n.tc(...e),this.$te=(e,t)=>this.$i18n.te(e,t),this.$d=(...e)=>this.$i18n.d(...e),this.$n=(...e)=>this.$i18n.n(...e),this.$tm=e=>this.$i18n.tm(e)},mounted(){},unmounted(){const e=(0,ye.FN)();if(!e)throw Ee(Ce.UNEXPECTED_ERROR);delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,n.__deleteInstance(e),delete this.$i18n}}}(l,l.__composer,e));const i=t.unmount;t.unmount=()=>{e.dispose(),i()}},get global(){return l},dispose(){c.stop()},__instances:s,__getInstance:function(e){return s.get(e)||null},__setInstance:function(e,t){s.set(e,t)},__deleteInstance:function(e){s.delete(e)}};return e}}function tt(e={}){const t=(0,ye.FN)();if(null==t)throw Ee(Ce.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&null!=t.appContext.app&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Ee(Ce.NOT_INSLALLED);const n=function(e){{const t=(0,ye.f3)(e.isCE?Qe:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Ee(e.isCE?Ce.NOT_INSLALLED_WITH_PROVIDE:Ce.UNEXPECTED_ERROR);return t}}(t),r=function(e){return"composition"===e.mode?e.global:e.global.__composer}(n),o=Re(t),a=function(e,t){return c(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}(e,o);if(__VUE_I18N_LEGACY_API__&&"legacy"===n.mode&&!e.__useComponent){if(!n.allowComposition)throw Ee(Ce.NOT_AVAILABLE_IN_LEGACY_MODE);return function(e,t,n,r={}){const o="local"===t,a=(0,_e.XI)(null);if(o&&e.proxy&&!e.proxy.$options.i18n&&!e.proxy.$options.__i18n)throw Ee(Ce.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const i=!y(r.inheritLocale)||r.inheritLocale,c=(0,_e.iH)(o&&i?n.locale.value:b(r.locale)?r.locale:U),l=(0,_e.iH)(o&&i?n.fallbackLocale.value:b(r.fallbackLocale)||v(r.fallbackLocale)||k(r.fallbackLocale)||!1===r.fallbackLocale?r.fallbackLocale:c.value),u=(0,_e.iH)(Ie(c.value,r)),f=(0,_e.iH)(k(r.datetimeFormats)?r.datetimeFormats:{[c.value]:{}}),h=(0,_e.iH)(k(r.numberFormats)?r.numberFormats:{[c.value]:{}}),p=o?n.missingWarn:!y(r.missingWarn)&&!s(r.missingWarn)||r.missingWarn,d=o?n.fallbackWarn:!y(r.fallbackWarn)&&!s(r.fallbackWarn)||r.fallbackWarn,m=o?n.fallbackRoot:!y(r.fallbackRoot)||r.fallbackRoot,_=!!r.fallbackFormat,w=g(r.missing)?r.missing:null,x=g(r.postTranslation)?r.postTranslation:null,S=o?n.warnHtmlMessage:!y(r.warnHtmlMessage)||r.warnHtmlMessage,C=!!r.escapeParameter,E=o?n.modifiers:k(r.modifiers)?r.modifiers:{},O=r.pluralRules||o&&n.pluralRules;function N(e){return c.value,l.value,u.value,f.value,h.value,e()}const j={get id(){return a.value?a.value.id:-1},locale:(0,ye.Fl)({get:()=>a.value?a.value.locale.value:c.value,set:e=>{a.value&&(a.value.locale.value=e),c.value=e}}),fallbackLocale:(0,ye.Fl)({get:()=>a.value?a.value.fallbackLocale.value:l.value,set:e=>{a.value&&(a.value.fallbackLocale.value=e),l.value=e}}),messages:(0,ye.Fl)((()=>a.value?a.value.messages.value:u.value)),datetimeFormats:(0,ye.Fl)((()=>f.value)),numberFormats:(0,ye.Fl)((()=>h.value)),get inheritLocale(){return a.value?a.value.inheritLocale:i},set inheritLocale(e){a.value&&(a.value.inheritLocale=e)},get availableLocales(){return a.value?a.value.availableLocales:Object.keys(u.value)},get modifiers(){return a.value?a.value.modifiers:E},get pluralRules(){return a.value?a.value.pluralRules:O},get isGlobal(){return!!a.value&&a.value.isGlobal},get missingWarn(){return a.value?a.value.missingWarn:p},set missingWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackWarn(){return a.value?a.value.fallbackWarn:d},set fallbackWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackRoot(){return a.value?a.value.fallbackRoot:m},set fallbackRoot(e){a.value&&(a.value.fallbackRoot=e)},get fallbackFormat(){return a.value?a.value.fallbackFormat:_},set fallbackFormat(e){a.value&&(a.value.fallbackFormat=e)},get warnHtmlMessage(){return a.value?a.value.warnHtmlMessage:S},set warnHtmlMessage(e){a.value&&(a.value.warnHtmlMessage=e)},get escapeParameter(){return a.value?a.value.escapeParameter:C},set escapeParameter(e){a.value&&(a.value.escapeParameter=e)},t:function(...e){return a.value?N((()=>Reflect.apply(a.value.t,null,[...e]))):N((()=>""))},getPostTranslationHandler:function(){return a.value?a.value.getPostTranslationHandler():x},setPostTranslationHandler:function(e){a.value&&a.value.setPostTranslationHandler(e)},getMissingHandler:function(){return a.value?a.value.getMissingHandler():w},setMissingHandler:function(e){a.value&&a.value.setMissingHandler(e)},rt:function(...e){return a.value?Reflect.apply(a.value.rt,null,[...e]):""},d:function(...e){return a.value?N((()=>Reflect.apply(a.value.d,null,[...e]))):N((()=>""))},n:function(...e){return a.value?N((()=>Reflect.apply(a.value.n,null,[...e]))):N((()=>""))},tm:function(e){return a.value?a.value.tm(e):{}},te:function(e,t){return!!a.value&&a.value.te(e,t)},getLocaleMessage:function(e){return a.value?a.value.getLocaleMessage(e):{}},setLocaleMessage:function(e,t){a.value&&(a.value.setLocaleMessage(e,t),u.value[e]=t)},mergeLocaleMessage:function(e,t){a.value&&a.value.mergeLocaleMessage(e,t)},getDateTimeFormat:function(e){return a.value?a.value.getDateTimeFormat(e):{}},setDateTimeFormat:function(e,t){a.value&&(a.value.setDateTimeFormat(e,t),f.value[e]=t)},mergeDateTimeFormat:function(e,t){a.value&&a.value.mergeDateTimeFormat(e,t)},getNumberFormat:function(e){return a.value?a.value.getNumberFormat(e):{}},setNumberFormat:function(e,t){a.value&&(a.value.setNumberFormat(e,t),h.value[e]=t)},mergeNumberFormat:function(e,t){a.value&&a.value.mergeNumberFormat(e,t)}};return(0,ye.wF)((()=>{if(null==e.proxy||null==e.proxy.$i18n)throw Ee(Ce.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const n=a.value=e.proxy.$i18n.__composer;"global"===t?(c.value=n.locale.value,l.value=n.fallbackLocale.value,u.value=n.messages.value,f.value=n.datetimeFormats.value,h.value=n.numberFormats.value):o&&function(e){e.locale.value=c.value,e.fallbackLocale.value=l.value,Object.keys(u.value).forEach((t=>{e.mergeLocaleMessage(t,u.value[t])})),Object.keys(f.value).forEach((t=>{e.mergeDateTimeFormat(t,f.value[t])})),Object.keys(h.value).forEach((t=>{e.mergeNumberFormat(t,h.value[t])})),e.escapeParameter=C,e.fallbackFormat=_,e.fallbackRoot=m,e.fallbackWarn=d,e.missingWarn=p,e.warnHtmlMessage=S}(n)})),j}(t,a,r,e)}if("global"===a)return $e(r,e,o),r;if("parent"===a){let o=function(e,t,n=!1){let r=null;const o=t.root;let a=t.parent;for(;null!=a;){const t=e;if("composition"===e.mode)r=t.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){const e=t.__getInstance(a);null!=e&&(r=e.__composer,n&&r&&!r[Ae]&&(r=null))}if(null!=r)break;if(o===a)break;a=a.parent}return r}(n,t,e.__useComponent);return null==o&&(o=r),o}const i=n;let l=i.__getInstance(t);if(null==l){const n=u({},e);"__i18n"in o&&(n.__i18n=o.__i18n),r&&(n.__root=r),l=Ve(n),function(e,t,n){(0,ye.bv)((()=>{}),t),(0,ye.Ah)((()=>{e.__deleteInstance(t)}),t)}(i,t),i.__setInstance(t,l)}return l}const nt=["locale","fallbackLocale","availableLocales"],rt=["t","rt","d","n","tm"];var ot;if(B=function(e,t){if(!_(e))return null;let n=N.get(t);if(n||(n=function(e){const t=[];let n,r,o,a,i,s,c,l=-1,u=0,f=0;const h=[];function p(){const t=e[l+1];if(5===u&&"'"===t||6===u&&'"'===t)return l++,o="\\"+t,h[0](),!0}for(h[0]=()=>{void 0===r?r=o:r+=o},h[1]=()=>{void 0!==r&&(t.push(r),r=void 0)},h[2]=()=>{h[0](),f++},h[3]=()=>{if(f>0)f--,u=4,h[0]();else{if(f=0,void 0===r)return!1;if(r=function(e){const t=e.trim();return("0"!==e.charAt(0)||!isNaN(parseInt(e)))&&(n=t,E.test(n)?function(e){const t=e.charCodeAt(0);return t!==e.charCodeAt(e.length-1)||34!==t&&39!==t?e:e.slice(1,-1)}(t):"*"+t);var n}(r),!1===r)return!1;h[1]()}};null!==u;)if(l++,n=e[l],"\\"!==n||!p()){if(a=O(n),c=C[u],i=c[a]||c.l||8,8===i)return;if(u=i[0],void 0!==i[1]&&(s=h[i[1]],s&&(o=n,!1===s())))return;if(7===u)return t}}(t),n&&N.set(t,n)),!n)return null;const r=n.length;let o=e,a=0;for(;a<r;){const e=o[n[a]];if(void 0===e)return null;o=e,a++}return o},Y=F,function(){let e=!1;"boolean"!=typeof __VUE_I18N_FULL_INSTALL__&&(e=!0,h().__VUE_I18N_FULL_INSTALL__=!0),"boolean"!=typeof __VUE_I18N_LEGACY_API__&&(e=!0,h().__VUE_I18N_LEGACY_API__=!0),"boolean"!=typeof __INTLIFY_PROD_DEVTOOLS__&&(h().__INTLIFY_PROD_DEVTOOLS__=!1)}(),__INTLIFY_PROD_DEVTOOLS__){const e=h();e.__INTLIFY__=!0,ot=e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__,T=ot}},83744:(e,t)=>{"use strict";t.Z=(e,t)=>{const n=e.__vccOpts||e;for(const[e,r]of t)n[e]=r;return n}},28339:(e,t,n)=>{"use strict";n.d(t,{PO:()=>O,p7:()=>Le});var r=n(66252),o=n(2262);const a="undefined"!=typeof window;const i=Object.assign;function s(e,t){const n={};for(const r in t){const o=t[r];n[r]=l(o)?o.map(e):e(o)}return n}const c=()=>{},l=Array.isArray,u=/\/$/;function f(e,t,n="/"){let r,o={},a="",i="";const s=t.indexOf("#");let c=t.indexOf("?");return s<c&&s>=0&&(c=-1),c>-1&&(r=t.slice(0,c),a=t.slice(c+1,s>-1?s:t.length),o=e(a)),s>-1&&(r=r||t.slice(0,s),i=t.slice(s,t.length)),r=function(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/");let o,a,i=n.length-1;for(o=0;o<r.length;o++)if(a=r[o],"."!==a){if(".."!==a)break;i>1&&i--}return n.slice(0,i).join("/")+"/"+r.slice(o-(o===r.length?1:0)).join("/")}(null!=r?r:t,n),{fullPath:r+(a&&"?")+a+i,path:r,query:o,hash:i}}function h(e,t){return t&&e.toLowerCase().startsWith(t.toLowerCase())?e.slice(t.length)||"/":e}function p(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function d(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!m(e[n],t[n]))return!1;return!0}function m(e,t){return l(e)?v(e,t):l(t)?v(t,e):e===t}function v(e,t){return l(t)?e.length===t.length&&e.every(((e,n)=>e===t[n])):1===e.length&&e[0]===t}var g,b;!function(e){e.pop="pop",e.push="push"}(g||(g={})),function(e){e.back="back",e.forward="forward",e.unknown=""}(b||(b={}));const y=/^[^#]+#/;function _(e,t){return e.replace(y,"#")+t}const w=()=>({left:window.pageXOffset,top:window.pageYOffset});function x(e,t){return(history.state?history.state.position-t:-1)+e}const k=new Map;let S=()=>location.protocol+"//"+location.host;function C(e,t){const{pathname:n,search:r,hash:o}=t,a=e.indexOf("#");if(a>-1){let t=o.includes(e.slice(a))?e.slice(a).length:1,n=o.slice(t);return"/"!==n[0]&&(n="/"+n),h(n,"")}return h(n,e)+r+o}function E(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?w():null}}function O(e){const t=function(e){const{history:t,location:n}=window,r={value:C(e,n)},o={value:t.state};function a(r,a,i){const s=e.indexOf("#"),c=s>-1?(n.host&&document.querySelector("base")?e:e.slice(s))+r:S()+e+r;try{t[i?"replaceState":"pushState"](a,"",c),o.value=a}catch(e){console.error(e),n[i?"replace":"assign"](c)}}return o.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0),{location:r,state:o,push:function(e,n){const s=i({},o.value,t.state,{forward:e,scroll:w()});a(s.current,s,!0),a(e,i({},E(r.value,e,null),{position:s.position+1},n),!1),r.value=e},replace:function(e,n){a(e,i({},t.state,E(o.value.back,e,o.value.forward,!0),n,{position:o.value.position}),!0),r.value=e}}}(e=function(e){if(!e)if(a){const t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return"/"!==e[0]&&"#"!==e[0]&&(e="/"+e),e.replace(u,"")}(e)),n=function(e,t,n,r){let o=[],a=[],s=null;const c=({state:a})=>{const i=C(e,location),c=n.value,l=t.value;let u=0;if(a){if(n.value=i,t.value=a,s&&s===c)return void(s=null);u=l?a.position-l.position:0}else r(i);o.forEach((e=>{e(n.value,c,{delta:u,type:g.pop,direction:u?u>0?b.forward:b.back:b.unknown})}))};function l(){const{history:e}=window;e.state&&e.replaceState(i({},e.state,{scroll:w()}),"")}return window.addEventListener("popstate",c),window.addEventListener("beforeunload",l),{pauseListeners:function(){s=n.value},listen:function(e){o.push(e);const t=()=>{const t=o.indexOf(e);t>-1&&o.splice(t,1)};return a.push(t),t},destroy:function(){for(const e of a)e();a=[],window.removeEventListener("popstate",c),window.removeEventListener("beforeunload",l)}}}(e,t.state,t.location,t.replace),r=i({location:"",base:e,go:function(e,t=!0){t||n.pauseListeners(),history.go(e)},createHref:_.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function N(e){return"string"==typeof e||"symbol"==typeof e}const j={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},L=Symbol("");var A;function M(e,t){return i(new Error,{type:e,[L]:!0},t)}function I(e,t){return e instanceof Error&&L in e&&(null==t||!!(e.type&t))}!function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"}(A||(A={}));const z="[^/]+?",T={sensitive:!1,strict:!1,start:!0,end:!0},R=/[.+*?^${}()[\]/\\]/g;function $(e,t){let n=0;for(;n<e.length&&n<t.length;){const r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?1===e.length&&80===e[0]?-1:1:e.length>t.length?1===t.length&&80===t[0]?1:-1:0}function P(e,t){let n=0;const r=e.score,o=t.score;for(;n<r.length&&n<o.length;){const e=$(r[n],o[n]);if(e)return e;n++}if(1===Math.abs(o.length-r.length)){if(F(r))return 1;if(F(o))return-1}return o.length-r.length}function F(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const H={type:0,value:""},D=/[a-zA-Z0-9_]/;function V(e,t,n){const r=function(e,t){const n=i({},T,t),r=[];let o=n.start?"^":"";const a=[];for(const t of e){const e=t.length?[]:[90];n.strict&&!t.length&&(o+="/");for(let r=0;r<t.length;r++){const i=t[r];let s=40+(n.sensitive?.25:0);if(0===i.type)r||(o+="/"),o+=i.value.replace(R,"\\$&"),s+=40;else if(1===i.type){const{value:e,repeatable:n,optional:c,regexp:l}=i;a.push({name:e,repeatable:n,optional:c});const u=l||z;if(u!==z){s+=10;try{new RegExp(`(${u})`)}catch(t){throw new Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let f=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(f=c&&t.length<2?`(?:/${f})`:"/"+f),c&&(f+="?"),o+=f,s+=20,c&&(s+=-8),n&&(s+=-20),".*"===u&&(s+=-50)}e.push(s)}r.push(e)}if(n.strict&&n.end){const e=r.length-1;r[e][r[e].length-1]+=.7000000000000001}n.strict||(o+="/?"),n.end?o+="$":n.strict&&(o+="(?:/|$)");const s=new RegExp(o,n.sensitive?"":"i");return{re:s,score:r,keys:a,parse:function(e){const t=e.match(s),n={};if(!t)return null;for(let e=1;e<t.length;e++){const r=t[e]||"",o=a[e-1];n[o.name]=r&&o.repeatable?r.split("/"):r}return n},stringify:function(t){let n="",r=!1;for(const o of e){r&&n.endsWith("/")||(n+="/"),r=!1;for(const e of o)if(0===e.type)n+=e.value;else if(1===e.type){const{value:a,repeatable:i,optional:s}=e,c=a in t?t[a]:"";if(l(c)&&!i)throw new Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);const u=l(c)?c.join("/"):c;if(!u){if(!s)throw new Error(`Missing required param "${a}"`);o.length<2&&(n.endsWith("/")?n=n.slice(0,-1):r=!0)}n+=u}}return n||"/"}}}(function(e){if(!e)return[[]];if("/"===e)return[[H]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(e){throw new Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n;const o=[];let a;function i(){a&&o.push(a),a=[]}let s,c=0,l="",u="";function f(){l&&(0===n?a.push({type:0,value:l}):1===n||2===n||3===n?(a.length>1&&("*"===s||"+"===s)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:"*"===s||"+"===s,optional:"*"===s||"?"===s})):t("Invalid state to consume buffer"),l="")}function h(){l+=s}for(;c<e.length;)if(s=e[c++],"\\"!==s||2===n)switch(n){case 0:"/"===s?(l&&f(),i()):":"===s?(f(),n=1):h();break;case 4:h(),n=r;break;case 1:"("===s?n=2:D.test(s)?h():(f(),n=0,"*"!==s&&"?"!==s&&"+"!==s&&c--);break;case 2:")"===s?"\\"==u[u.length-1]?u=u.slice(0,-1)+s:n=3:u+=s;break;case 3:f(),n=0,"*"!==s&&"?"!==s&&"+"!==s&&c--,u="";break;default:t("Unknown state")}else r=n,n=4;return 2===n&&t(`Unfinished custom RegExp for param "${l}"`),f(),i(),o}(e.path),n),o=i(r,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function U(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function W(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]="boolean"==typeof n?n:n[r];return t}function B(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Y(e){return e.reduce(((e,t)=>i(e,t.meta)),{})}function q(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function G(e,t){return t.children.some((t=>t===e||G(e,t)))}const Z=/#/g,X=/&/g,J=/\//g,K=/=/g,Q=/\?/g,ee=/\+/g,te=/%5B/g,ne=/%5D/g,re=/%5E/g,oe=/%60/g,ae=/%7B/g,ie=/%7C/g,se=/%7D/g,ce=/%20/g;function le(e){return encodeURI(""+e).replace(ie,"|").replace(te,"[").replace(ne,"]")}function ue(e){return le(e).replace(ee,"%2B").replace(ce,"+").replace(Z,"%23").replace(X,"%26").replace(oe,"`").replace(ae,"{").replace(se,"}").replace(re,"^")}function fe(e){return null==e?"":function(e){return le(e).replace(Z,"%23").replace(Q,"%3F")}(e).replace(J,"%2F")}function he(e){try{return decodeURIComponent(""+e)}catch(e){}return""+e}function pe(e){const t={};if(""===e||"?"===e)return t;const n=("?"===e[0]?e.slice(1):e).split("&");for(let e=0;e<n.length;++e){const r=n[e].replace(ee," "),o=r.indexOf("="),a=he(o<0?r:r.slice(0,o)),i=o<0?null:he(r.slice(o+1));if(a in t){let e=t[a];l(e)||(e=t[a]=[e]),e.push(i)}else t[a]=i}return t}function de(e){let t="";for(let n in e){const r=e[n];(n=ue(n).replace(K,"%3D"),null!=r)?(l(r)?r.map((e=>e&&ue(e))):[r&&ue(r)]).forEach((e=>{void 0!==e&&(t+=(t.length?"&":"")+n,null!=e&&(t+="="+e))})):void 0!==r&&(t+=(t.length?"&":"")+n)}return t}function me(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[n]=l(r)?r.map((e=>null==e?null:""+e)):null==r?r:""+r)}return t}const ve=Symbol(""),ge=Symbol(""),be=Symbol(""),ye=Symbol(""),_e=Symbol("");function we(){let e=[];return{add:function(t){return e.push(t),()=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)}},list:()=>e,reset:function(){e=[]}}}function xe(e,t,n,r,o){const a=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise(((i,s)=>{const c=e=>{var c;!1===e?s(M(4,{from:n,to:t})):e instanceof Error?s(e):"string"==typeof(c=e)||c&&"object"==typeof c?s(M(2,{from:t,to:e})):(a&&r.enterCallbacks[o]===a&&"function"==typeof e&&a.push(e),i())},l=e.call(r&&r.instances[o],t,n,c);let u=Promise.resolve(l);e.length<3&&(u=u.then(c)),u.catch((e=>s(e)))}))}function ke(e,t,n,r){const o=[];for(const i of e)for(const e in i.components){let s=i.components[e];if("beforeRouteEnter"===t||i.instances[e])if("object"==typeof(a=s)||"displayName"in a||"props"in a||"__vccOpts"in a){const a=(s.__vccOpts||s)[t];a&&o.push(xe(a,n,r,i,e))}else{let a=s();o.push((()=>a.then((o=>{if(!o)return Promise.reject(new Error(`Couldn't resolve component "${e}" at "${i.path}"`));const a=(s=o).__esModule||"Module"===s[Symbol.toStringTag]?o.default:o;var s;i.components[e]=a;const c=(a.__vccOpts||a)[t];return c&&xe(c,n,r,i,e)()}))))}}var a;return o}function Se(e){const t=(0,r.f3)(be),n=(0,r.f3)(ye),a=(0,r.Fl)((()=>t.resolve((0,o.SU)(e.to)))),i=(0,r.Fl)((()=>{const{matched:e}=a.value,{length:t}=e,r=e[t-1],o=n.matched;if(!r||!o.length)return-1;const i=o.findIndex(p.bind(null,r));if(i>-1)return i;const s=Ee(e[t-2]);return t>1&&Ee(r)===s&&o[o.length-1].path!==s?o.findIndex(p.bind(null,e[t-2])):i})),s=(0,r.Fl)((()=>i.value>-1&&function(e,t){for(const n in t){const r=t[n],o=e[n];if("string"==typeof r){if(r!==o)return!1}else if(!l(o)||o.length!==r.length||r.some(((e,t)=>e!==o[t])))return!1}return!0}(n.params,a.value.params))),u=(0,r.Fl)((()=>i.value>-1&&i.value===n.matched.length-1&&d(n.params,a.value.params)));return{route:a,href:(0,r.Fl)((()=>a.value.href)),isActive:s,isExactActive:u,navigate:function(n={}){return function(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||e.defaultPrevented||void 0!==e.button&&0!==e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}(n)?t[(0,o.SU)(e.replace)?"replace":"push"]((0,o.SU)(e.to)).catch(c):Promise.resolve()}}}const Ce=(0,r.aZ)({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Se,setup(e,{slots:t}){const n=(0,o.qj)(Se(e)),{options:a}=(0,r.f3)(be),i=(0,r.Fl)((()=>({[Oe(e.activeClass,a.linkActiveClass,"router-link-active")]:n.isActive,[Oe(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive})));return()=>{const o=t.default&&t.default(n);return e.custom?o:(0,r.h)("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},o)}}});function Ee(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Oe=(e,t,n)=>null!=e?e:null!=t?t:n;function Ne(e,t){if(!e)return null;const n=e(t);return 1===n.length?n[0]:n}const je=(0,r.aZ)({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const a=(0,r.f3)(_e),s=(0,r.Fl)((()=>e.route||a.value)),c=(0,r.f3)(ge,0),l=(0,r.Fl)((()=>{let e=(0,o.SU)(c);const{matched:t}=s.value;let n;for(;(n=t[e])&&!n.components;)e++;return e})),u=(0,r.Fl)((()=>s.value.matched[l.value]));(0,r.JJ)(ge,(0,r.Fl)((()=>l.value+1))),(0,r.JJ)(ve,u),(0,r.JJ)(_e,s);const f=(0,o.iH)();return(0,r.YP)((()=>[f.value,u.value,e.name]),(([e,t,n],[r,o,a])=>{t&&(t.instances[n]=e,o&&o!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=o.leaveGuards),t.updateGuards.size||(t.updateGuards=o.updateGuards))),!e||!t||o&&p(t,o)&&r||(t.enterCallbacks[n]||[]).forEach((t=>t(e)))}),{flush:"post"}),()=>{const o=s.value,a=e.name,c=u.value,l=c&&c.components[a];if(!l)return Ne(n.default,{Component:l,route:o});const h=c.props[a],p=h?!0===h?o.params:"function"==typeof h?h(o):h:null,d=(0,r.h)(l,i({},p,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(c.instances[a]=null)},ref:f}));return Ne(n.default,{Component:d,route:o})||d}}});function Le(e){const t=function(e,t){const n=[],r=new Map;function o(e,n,r){const l=!r,u=function(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:W(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}(e);u.aliasOf=r&&r.record;const f=q(t,e),h=[u];if("alias"in e){const t="string"==typeof e.alias?[e.alias]:e.alias;for(const e of t)h.push(i({},u,{components:r?r.record.components:u.components,path:e,aliasOf:r?r.record:u}))}let p,d;for(const t of h){const{path:i}=t;if(n&&"/"!==i[0]){const e=n.record.path,r="/"===e[e.length-1]?"":"/";t.path=n.record.path+(i&&r+i)}if(p=V(t,n,f),r?r.alias.push(p):(d=d||p,d!==p&&d.alias.push(p),l&&e.name&&!B(p)&&a(e.name)),u.children){const e=u.children;for(let t=0;t<e.length;t++)o(e[t],p,r&&r.children[t])}r=r||p,(p.record.components&&Object.keys(p.record.components).length||p.record.name||p.record.redirect)&&s(p)}return d?()=>{a(d)}:c}function a(e){if(N(e)){const t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(a),t.alias.forEach(a))}else{const t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(a),e.alias.forEach(a))}}function s(e){let t=0;for(;t<n.length&&P(e,n[t])>=0&&(e.record.path!==n[t].record.path||!G(e,n[t]));)t++;n.splice(t,0,e),e.record.name&&!B(e)&&r.set(e.record.name,e)}return t=q({strict:!1,end:!0,sensitive:!1},t),e.forEach((e=>o(e))),{addRoute:o,resolve:function(e,t){let o,a,s,c={};if("name"in e&&e.name){if(o=r.get(e.name),!o)throw M(1,{location:e});s=o.record.name,c=i(U(t.params,o.keys.filter((e=>!e.optional)).map((e=>e.name))),e.params&&U(e.params,o.keys.map((e=>e.name)))),a=o.stringify(c)}else if("path"in e)a=e.path,o=n.find((e=>e.re.test(a))),o&&(c=o.parse(a),s=o.record.name);else{if(o=t.name?r.get(t.name):n.find((e=>e.re.test(t.path))),!o)throw M(1,{location:e,currentLocation:t});s=o.record.name,c=i({},t.params,e.params),a=o.stringify(c)}const l=[];let u=o;for(;u;)l.unshift(u.record),u=u.parent;return{name:s,path:a,params:c,matched:l,meta:Y(l)}},removeRoute:a,getRoutes:function(){return n},getRecordMatcher:function(e){return r.get(e)}}}(e.routes,e),n=e.parseQuery||pe,u=e.stringifyQuery||de,h=e.history,m=we(),v=we(),b=we(),y=(0,o.XI)(j);let _=j;a&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const S=s.bind(null,(e=>""+e)),C=s.bind(null,fe),E=s.bind(null,he);function O(e,r){if(r=i({},r||y.value),"string"==typeof e){const o=f(n,e,r.path),a=t.resolve({path:o.path},r),s=h.createHref(o.fullPath);return i(o,a,{params:E(a.params),hash:he(o.hash),redirectedFrom:void 0,href:s})}let o;if("path"in e)o=i({},e,{path:f(n,e.path,r.path).path});else{const t=i({},e.params);for(const e in t)null==t[e]&&delete t[e];o=i({},e,{params:C(e.params)}),r.params=C(r.params)}const a=t.resolve(o,r),s=e.hash||"";a.params=S(E(a.params));const c=function(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}(u,i({},e,{hash:(l=s,le(l).replace(ae,"{").replace(se,"}").replace(re,"^")),path:a.path}));var l;const p=h.createHref(c);return i({fullPath:c,hash:s,query:u===de?me(e.query):e.query||{}},a,{redirectedFrom:void 0,href:p})}function L(e){return"string"==typeof e?f(n,e,y.value.path):i({},e)}function A(e,t){if(_!==e)return M(8,{from:t,to:e})}function z(e){return R(e)}function T(e){const t=e.matched[e.matched.length-1];if(t&&t.redirect){const{redirect:n}=t;let r="function"==typeof n?n(e):n;return"string"==typeof r&&(r=r.includes("?")||r.includes("#")?r=L(r):{path:r},r.params={}),i({query:e.query,hash:e.hash,params:"path"in r?{}:e.params},r)}}function R(e,t){const n=_=O(e),r=y.value,o=e.state,a=e.force,s=!0===e.replace,c=T(n);if(c)return R(i(L(c),{state:"object"==typeof c?i({},o,c.state):o,force:a,replace:s}),t||n);const l=n;let f;return l.redirectedFrom=t,!a&&function(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&p(t.matched[r],n.matched[o])&&d(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}(u,r,n)&&(f=M(16,{to:l,from:r}),te(r,r,!0,!1)),(f?Promise.resolve(f):F(l,r)).catch((e=>I(e)?I(e,2)?e:ee(e):Q(e,l,r))).then((e=>{if(e){if(I(e,2))return R(i({replace:s},L(e.to),{state:"object"==typeof e.to?i({},o,e.to.state):o,force:a}),t||l)}else e=D(l,r,!0,s,o);return H(l,r,e),e}))}function $(e,t){const n=A(e,t);return n?Promise.reject(n):Promise.resolve()}function F(e,t){let n;const[r,o,a]=function(e,t){const n=[],r=[],o=[],a=Math.max(t.matched.length,e.matched.length);for(let i=0;i<a;i++){const a=t.matched[i];a&&(e.matched.find((e=>p(e,a)))?r.push(a):n.push(a));const s=e.matched[i];s&&(t.matched.find((e=>p(e,s)))||o.push(s))}return[n,r,o]}(e,t);n=ke(r.reverse(),"beforeRouteLeave",e,t);for(const o of r)o.leaveGuards.forEach((r=>{n.push(xe(r,e,t))}));const i=$.bind(null,e,t);return n.push(i),Ae(n).then((()=>{n=[];for(const r of m.list())n.push(xe(r,e,t));return n.push(i),Ae(n)})).then((()=>{n=ke(o,"beforeRouteUpdate",e,t);for(const r of o)r.updateGuards.forEach((r=>{n.push(xe(r,e,t))}));return n.push(i),Ae(n)})).then((()=>{n=[];for(const r of e.matched)if(r.beforeEnter&&!t.matched.includes(r))if(l(r.beforeEnter))for(const o of r.beforeEnter)n.push(xe(o,e,t));else n.push(xe(r.beforeEnter,e,t));return n.push(i),Ae(n)})).then((()=>(e.matched.forEach((e=>e.enterCallbacks={})),n=ke(a,"beforeRouteEnter",e,t),n.push(i),Ae(n)))).then((()=>{n=[];for(const r of v.list())n.push(xe(r,e,t));return n.push(i),Ae(n)})).catch((e=>I(e,8)?e:Promise.reject(e)))}function H(e,t,n){for(const r of b.list())r(e,t,n)}function D(e,t,n,r,o){const s=A(e,t);if(s)return s;const c=t===j,l=a?history.state:{};n&&(r||c?h.replace(e.fullPath,i({scroll:c&&l&&l.scroll},o)):h.push(e.fullPath,o)),y.value=e,te(e,t,n,c),ee()}let Z;let X,J=we(),K=we();function Q(e,t,n){ee(e);const r=K.list();return r.length?r.forEach((r=>r(e,t,n))):console.error(e),Promise.reject(e)}function ee(e){return X||(X=!e,Z||(Z=h.listen(((e,t,n)=>{if(!ce.listening)return;const r=O(e),o=T(r);if(o)return void R(i(o,{replace:!0}),r).catch(c);_=r;const s=y.value;var l,u;a&&(l=x(s.fullPath,n.delta),u=w(),k.set(l,u)),F(r,s).catch((e=>I(e,12)?e:I(e,2)?(R(e.to,r).then((e=>{I(e,20)&&!n.delta&&n.type===g.pop&&h.go(-1,!1)})).catch(c),Promise.reject()):(n.delta&&h.go(-n.delta,!1),Q(e,r,s)))).then((e=>{(e=e||D(r,s,!1))&&(n.delta&&!I(e,8)?h.go(-n.delta,!1):n.type===g.pop&&I(e,20)&&h.go(-1,!1)),H(r,s,e)})).catch(c)}))),J.list().forEach((([t,n])=>e?n(e):t())),J.reset()),e}function te(t,n,o,i){const{scrollBehavior:s}=e;if(!a||!s)return Promise.resolve();const c=!o&&function(e){const t=k.get(e);return k.delete(e),t}(x(t.fullPath,0))||(i||!o)&&history.state&&history.state.scroll||null;return(0,r.Y3)().then((()=>s(t,n,c))).then((e=>e&&function(e){let t;if("el"in e){const n=e.el,r="string"==typeof n&&n.startsWith("#"),o="string"==typeof n?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=function(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(null!=t.left?t.left:window.pageXOffset,null!=t.top?t.top:window.pageYOffset)}(e))).catch((e=>Q(e,t,n)))}const ne=e=>h.go(e);let oe;const ie=new Set,ce={currentRoute:y,listening:!0,addRoute:function(e,n){let r,o;return N(e)?(r=t.getRecordMatcher(e),o=n):o=e,t.addRoute(o,r)},removeRoute:function(e){const n=t.getRecordMatcher(e);n&&t.removeRoute(n)},hasRoute:function(e){return!!t.getRecordMatcher(e)},getRoutes:function(){return t.getRoutes().map((e=>e.record))},resolve:O,options:e,push:z,replace:function(e){return z(i(L(e),{replace:!0}))},go:ne,back:()=>ne(-1),forward:()=>ne(1),beforeEach:m.add,beforeResolve:v.add,afterEach:b.add,onError:K.add,isReady:function(){return X&&y.value!==j?Promise.resolve():new Promise(((e,t)=>{J.add([e,t])}))},install(e){e.component("RouterLink",Ce),e.component("RouterView",je),e.config.globalProperties.$router=this,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>(0,o.SU)(y)}),a&&!oe&&y.value===j&&(oe=!0,z(h.location).catch((e=>{})));const t={};for(const e in j)t[e]=(0,r.Fl)((()=>y.value[e]));e.provide(be,this),e.provide(ye,(0,o.qj)(t)),e.provide(_e,y);const n=e.unmount;ie.add(e),e.unmount=function(){ie.delete(e),ie.size<1&&(_=j,Z&&Z(),Z=null,y.value=j,oe=!1,X=!1),n()}}};return ce}function Ae(e){return e.reduce(((e,t)=>e.then((()=>t()))),Promise.resolve())}},42570:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>P});var r=n(2262),o=n(66252),a=n(3577);let i;function s(){s.init||(s.init=!0,i=-1!==function(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){var n=e.indexOf("rv:");return parseInt(e.substring(n+3,e.indexOf(".",n)),10)}var r=e.indexOf("Edge/");return r>0?parseInt(e.substring(r+5,e.indexOf(".",r)),10):-1}())}var c={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){s(),(0,o.Y3)((()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()}));const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",i&&this.$el.appendChild(e),e.data="about:blank",i||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!i&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const l=(0,o.HX)("data-v-b329ee4c");(0,o.dD)("data-v-b329ee4c");const u={class:"resize-observer",tabindex:"-1"};(0,o.Cn)();const f=l(((e,t,n,r,a,i)=>((0,o.wg)(),(0,o.j4)("div",u))));function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function v(e,t){if(e===t)return!0;if("object"===h(e)){for(var n in e)if(!v(e[n],t[n]))return!1;return!0}return!1}c.render=f,c.__scopeId="data-v-b329ee4c",c.__file="src/components/ResizeObserver.vue";var g=function(){function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.el=t,this.observer=null,this.frozen=!1,this.createObserver(n,r)}var t,n;return t=e,n=[{key:"createObserver",value:function(e,t){var n=this;if(this.observer&&this.destroyObserver(),!this.frozen){var r;if(this.options="function"==typeof(r=e)?{callback:r}:r,this.callback=function(e,t){n.options.callback(e,t),e&&n.options.once&&(n.frozen=!0,n.destroyObserver())},this.callback&&this.options.throttle){var a=(this.options.throttleOptions||{}).leading;this.callback=function(e,t){var n,r,o,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=function(i){for(var s=arguments.length,c=new Array(s>1?s-1:0),l=1;l<s;l++)c[l-1]=arguments[l];if(o=c,!n||i!==r){var u=a.leading;"function"==typeof u&&(u=u(i,r)),n&&i===r||!u||e.apply(void 0,[i].concat(d(o))),r=i,clearTimeout(n),n=setTimeout((function(){e.apply(void 0,[i].concat(d(o))),n=0}),t)}};return i._clear=function(){clearTimeout(n),n=null},i}(this.callback,this.options.throttle,{leading:function(e){return"both"===a||"visible"===a&&e||"hidden"===a&&!e}})}this.oldResult=void 0,this.observer=new IntersectionObserver((function(e){var t=e[0];if(e.length>1){var r=e.find((function(e){return e.isIntersecting}));r&&(t=r)}if(n.callback){var o=t.isIntersecting&&t.intersectionRatio>=n.threshold;if(o===n.oldResult)return;n.oldResult=o,n.callback(o,t)}}),this.options.intersection),(0,o.Y3)((function(){n.observer&&n.observer.observe(n.el)}))}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&"number"==typeof this.options.intersection.threshold?this.options.intersection.threshold:0}}],n&&p(t.prototype,n),e}();function b(e,t,n){var r=t.value;if(r)if("undefined"==typeof IntersectionObserver)console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var o=new g(e,r,n);e._vue_visibilityState=o}}function y(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var _={beforeMount:b,updated:function(e,t,n){var r=t.value;if(!v(r,t.oldValue)){var o=e._vue_visibilityState;r?o?o.createObserver(r,n):b(e,{value:r},n):y(e)}},unmounted:y},w={itemsLimit:1e3},x=/(auto|scroll)/;function k(e,t){return null===e.parentNode?t:k(e.parentNode,t.concat([e]))}var S=function(e,t){return getComputedStyle(e,null).getPropertyValue(t)},C=function(e){return x.test(function(e){return S(e,"overflow")+S(e,"overflow-y")+S(e,"overflow-x")}(e))};function E(e){if(e instanceof HTMLElement||e instanceof SVGElement){for(var t=k(e.parentNode,[]),n=0;n<t.length;n+=1)if(C(t[n]))return t[n];return document.scrollingElement||document.documentElement}}function O(e){return O="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},O(e)}var N={items:{type:Array,required:!0},keyField:{type:String,default:"id"},direction:{type:String,default:"vertical",validator:function(e){return["vertical","horizontal"].includes(e)}},listTag:{type:String,default:"div"},itemTag:{type:String,default:"div"}};function j(){return this.items.length&&"object"!==O(this.items[0])}var L=!1;if("undefined"!=typeof window){L=!1;try{var A=Object.defineProperty({},"passive",{get:function(){L=!0}});window.addEventListener("test",null,A)}catch(e){}}let M=0;var I={name:"RecycleScroller",components:{ResizeObserver:c},directives:{ObserveVisibility:_},props:{...N,itemSize:{type:Number,default:null},gridItems:{type:Number,default:void 0},itemSecondarySize:{type:Number,default:void 0},minItemSize:{type:[Number,String],default:null},sizeField:{type:String,default:"size"},typeField:{type:String,default:"type"},buffer:{type:Number,default:200},pageMode:{type:Boolean,default:!1},prerender:{type:Number,default:0},emitUpdate:{type:Boolean,default:!1},updateInterval:{type:Number,default:0},skipHover:{type:Boolean,default:!1},listTag:{type:String,default:"div"},itemTag:{type:String,default:"div"},listClass:{type:[String,Object,Array],default:""},itemClass:{type:[String,Object,Array],default:""}},emits:["resize","visible","hidden","update","scroll-start","scroll-end"],data:()=>({pool:[],totalSize:0,ready:!1,hoverKey:null}),computed:{sizes(){if(null===this.itemSize){const e={"-1":{accumulator:0}},t=this.items,n=this.sizeField,r=this.minItemSize;let o,a=1e4,i=0;for(let s=0,c=t.length;s<c;s++)o=t[s][n]||r,o<a&&(a=o),i+=o,e[s]={accumulator:i,size:o};return this.$_computedMinItemSize=a,e}return[]},simpleArray:j,itemIndexByKey(){const{keyField:e,items:t}=this,n={};for(let r=0,o=t.length;r<o;r++)n[t[r][e]]=r;return n}},watch:{items(){this.updateVisibleItems(!0)},pageMode(){this.applyPageMode(),this.updateVisibleItems(!1)},sizes:{handler(){this.updateVisibleItems(!1)},deep:!0},gridItems(){this.updateVisibleItems(!0)},itemSecondarySize(){this.updateVisibleItems(!0)}},created(){this.$_startIndex=0,this.$_endIndex=0,this.$_views=new Map,this.$_unusedViews=new Map,this.$_scrollDirty=!1,this.$_lastUpdateScrollPosition=0,this.prerender&&(this.$_prerender=!0,this.updateVisibleItems(!1)),this.gridItems&&!this.itemSize&&console.error("[vue-recycle-scroller] You must provide an itemSize when using gridItems")},mounted(){this.applyPageMode(),this.$nextTick((()=>{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0}))},activated(){const e=this.$_lastUpdateScrollPosition;"number"==typeof e&&this.$nextTick((()=>{this.scrollToPosition(e)}))},beforeUnmount(){this.removeListeners()},methods:{addView(e,t,n,o,a){const i=(0,r.Xl)({id:M++,index:t,used:!0,key:o,type:a}),s=(0,r.Um)({item:n,position:0,nr:i});return e.push(s),s},unuseView(e,t=!1){const n=this.$_unusedViews,r=e.nr.type;let o=n.get(r);o||(o=[],n.set(r,o)),o.push(e),t||(e.nr.used=!1,e.position=-9999)},handleResize(){this.$emit("resize"),this.ready&&this.updateVisibleItems(!1)},handleScroll(e){if(!this.$_scrollDirty){if(this.$_scrollDirty=!0,this.$_updateTimeout)return;const e=()=>requestAnimationFrame((()=>{this.$_scrollDirty=!1;const{continuous:e}=this.updateVisibleItems(!1,!0);e||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,this.updateInterval+100))}));e(),this.updateInterval&&(this.$_updateTimeout=setTimeout((()=>{this.$_updateTimeout=0,this.$_scrollDirty&&e()}),this.updateInterval))}},handleVisibilityChange(e,t){this.ready&&(e||0!==t.boundingClientRect.width||0!==t.boundingClientRect.height?(this.$emit("visible"),requestAnimationFrame((()=>{this.updateVisibleItems(!1)}))):this.$emit("hidden"))},updateVisibleItems(e,t=!1){const n=this.itemSize,r=this.gridItems||1,o=this.itemSecondarySize||n,a=this.$_computedMinItemSize,i=this.typeField,s=this.simpleArray?null:this.keyField,c=this.items,l=c.length,u=this.sizes,f=this.$_views,h=this.$_unusedViews,p=this.pool,d=this.itemIndexByKey;let m,v,g,b,y,_;if(l)if(this.$_prerender)m=b=0,v=y=Math.min(this.prerender,c.length),g=null;else{const e=this.getScroll();if(t){let t=e.start-this.$_lastUpdateScrollPosition;if(t<0&&(t=-t),null===n&&t<a||t<n)return{continuous:!0}}this.$_lastUpdateScrollPosition=e.start;const o=this.buffer;e.start-=o,e.end+=o;let i=0;if(this.$refs.before&&(i=this.$refs.before.scrollHeight,e.start-=i),this.$refs.after){const t=this.$refs.after.scrollHeight;e.end+=t}if(null===n){let t,n,r=0,o=l-1,a=~~(l/2);do{n=a,t=u[a].accumulator,t<e.start?r=a:a<l-1&&u[a+1].accumulator>e.start&&(o=a),a=~~((r+o)/2)}while(a!==n);for(a<0&&(a=0),m=a,g=u[l-1].accumulator,v=a;v<l&&u[v].accumulator<e.end;v++);for(-1===v?v=c.length-1:(v++,v>l&&(v=l)),b=m;b<l&&i+u[b].accumulator<e.start;b++);for(y=b;y<l&&i+u[y].accumulator<e.end;y++);}else m=~~(e.start/n*r),m-=m%r,v=Math.ceil(e.end/n*r),b=Math.max(0,Math.floor((e.start-i)/n*r)),y=Math.floor((e.end-i)/n*r),m<0&&(m=0),v>l&&(v=l),b<0&&(b=0),y>l&&(y=l),g=Math.ceil(l/r)*n}else m=v=b=y=g=0;v-m>w.itemsLimit&&this.itemsLimitError(),this.totalSize=g;const x=m<=this.$_endIndex&&v>=this.$_startIndex;if(x)for(let t=0,n=p.length;t<n;t++)_=p[t],_.nr.used&&(e&&(_.nr.index=d[_.item[s]]),(null==_.nr.index||_.nr.index<m||_.nr.index>=v)&&this.unuseView(_));const k=x?null:new Map;let S,C,E;for(let e=m;e<v;e++){S=c[e];const t=s?S[s]:S;if(null==t)throw new Error(`Key is ${t} on item (keyField is '${s}')`);if(_=f.get(t),!n&&!u[e].size){_&&this.unuseView(_);continue}C=S[i];let a=h.get(C),l=!1;if(_){if(!_.nr.used&&(_.nr.used=!0,l=!0,a)){const e=a.indexOf(_);-1!==e&&a.splice(e,1)}}else x?_=a&&a.length?a.pop():this.addView(p,e,S,t,C):(E=k.get(C)||0,(!a||E>=a.length)&&(_=this.addView(p,e,S,t,C),this.unuseView(_,!0),a=h.get(C)),_=a[E],k.set(C,E+1)),f.delete(_.nr.key),_.nr.used=!0,_.nr.index=e,_.nr.key=t,_.nr.type=C,f.set(t,_),l=!0;_.item=S,l&&(e===c.length-1&&this.$emit("scroll-end"),0===e&&this.$emit("scroll-start")),null===n?(_.position=u[e-1].accumulator,_.offset=0):(_.position=Math.floor(e/r)*n,_.offset=e%r*o)}return this.$_startIndex=m,this.$_endIndex=v,this.emitUpdate&&this.$emit("update",m,v,b,y),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,this.updateInterval+300),{continuous:x}},getListenerTarget(){let e=E(this.$el);return!window.document||e!==window.document.documentElement&&e!==window.document.body||(e=window),e},getScroll(){const{$el:e,direction:t}=this,n="vertical"===t;let r;if(this.pageMode){const t=e.getBoundingClientRect(),o=n?t.height:t.width;let a=-(n?t.top:t.left),i=n?window.innerHeight:window.innerWidth;a<0&&(i+=a,a=0),a+i>o&&(i=o-a),r={start:a,end:a+i}}else r=n?{start:e.scrollTop,end:e.scrollTop+e.clientHeight}:{start:e.scrollLeft,end:e.scrollLeft+e.clientWidth};return r},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener("scroll",this.handleScroll,!!L&&{passive:!0}),this.listenerTarget.addEventListener("resize",this.handleResize)},removeListeners(){this.listenerTarget&&(this.listenerTarget.removeEventListener("scroll",this.handleScroll),this.listenerTarget.removeEventListener("resize",this.handleResize),this.listenerTarget=null)},scrollToItem(e){let t;const n=this.gridItems||1;t=null===this.itemSize?e>0?this.sizes[e-1].accumulator:0:Math.floor(e/n)*this.itemSize,this.scrollToPosition(t)},scrollToPosition(e){const t="vertical"===this.direction?{scroll:"scrollTop",start:"top"}:{scroll:"scrollLeft",start:"left"};let n,r,o;if(this.pageMode){const a=E(this.$el),i="HTML"===a.tagName?0:a[t.scroll],s=a.getBoundingClientRect(),c=this.$el.getBoundingClientRect()[t.start]-s[t.start];n=a,r=t.scroll,o=e+i+c}else n=this.$el,r=t.scroll,o=e;n[r]=o},itemsLimitError(){throw setTimeout((()=>{console.log("It seems the scroller element isn't scrolling, so it tries to render all the items at once.","Scroller:",this.$el),console.log("Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.")})),new Error("Rendered items limit reached")},sortViews(){this.pool.sort(((e,t)=>e.nr.index-t.nr.index))}}};const z={key:0,ref:"before",class:"vue-recycle-scroller__slot"},T={key:1,ref:"after",class:"vue-recycle-scroller__slot"};I.render=function(e,t,n,r,i,s){const c=(0,o.up)("ResizeObserver"),l=(0,o.Q2)("observe-visibility");return(0,o.wy)(((0,o.wg)(),(0,o.iD)("div",{class:(0,a.C_)(["vue-recycle-scroller",{ready:i.ready,"page-mode":n.pageMode,[`direction-${e.direction}`]:!0}]),onScrollPassive:t[0]||(t[0]=(...e)=>s.handleScroll&&s.handleScroll(...e))},[e.$slots.before?((0,o.wg)(),(0,o.iD)("div",z,[(0,o.WI)(e.$slots,"before")],512)):(0,o.kq)("v-if",!0),((0,o.wg)(),(0,o.j4)((0,o.LL)(n.listTag),{ref:"wrapper",style:(0,a.j5)({["vertical"===e.direction?"minHeight":"minWidth"]:i.totalSize+"px"}),class:(0,a.C_)(["vue-recycle-scroller__item-wrapper",n.listClass])},{default:(0,o.w5)((()=>[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(i.pool,(t=>((0,o.wg)(),(0,o.j4)((0,o.LL)(n.itemTag),(0,o.dG)({key:t.nr.id,style:i.ready?{transform:`translate${"vertical"===e.direction?"Y":"X"}(${t.position}px) translate${"vertical"===e.direction?"X":"Y"}(${t.offset}px)`,width:n.gridItems?`${"vertical"===e.direction&&n.itemSecondarySize||n.itemSize}px`:void 0,height:n.gridItems?`${"horizontal"===e.direction&&n.itemSecondarySize||n.itemSize}px`:void 0}:null,class:["vue-recycle-scroller__item-view",[n.itemClass,{hover:!n.skipHover&&i.hoverKey===t.nr.key}]]},(0,o.mx)(n.skipHover?{}:{mouseenter:()=>{i.hoverKey=t.nr.key},mouseleave:()=>{i.hoverKey=null}})),{default:(0,o.w5)((()=>[(0,o.WI)(e.$slots,"default",{item:t.item,index:t.nr.index,active:t.nr.used})])),_:2},1040,["style","class"])))),128)),(0,o.WI)(e.$slots,"empty")])),_:3},8,["style","class"])),e.$slots.after?((0,o.wg)(),(0,o.iD)("div",T,[(0,o.WI)(e.$slots,"after")],512)):(0,o.kq)("v-if",!0),(0,o.Wm)(c,{onNotify:s.handleResize},null,8,["onNotify"])],34)),[[l,s.handleVisibilityChange]])},I.__file="src/components/RecycleScroller.vue";var R={name:"DynamicScroller",components:{RecycleScroller:I},provide(){return"undefined"!=typeof ResizeObserver&&(this.$_resizeObserver=new ResizeObserver((e=>{requestAnimationFrame((()=>{if(Array.isArray(e))for(const t of e)if(t.target&&t.target.$_vs_onResize){const e=t.borderBoxSize[0];t.target.$_vs_onResize(t.target.$_vs_id,e.inlineSize,e.blockSize)}}))}))),{vscrollData:this.vscrollData,vscrollParent:this,vscrollResizeObserver:this.$_resizeObserver}},inheritAttrs:!1,props:{...N,minItemSize:{type:[Number,String],required:!0}},emits:["resize","visible"],data(){return{vscrollData:{active:!0,sizes:{},keyField:this.keyField,simpleArray:!1}}},computed:{simpleArray:j,itemsWithSize(){const e=[],{items:t,keyField:n,simpleArray:r}=this,o=this.vscrollData.sizes,a=t.length;for(let i=0;i<a;i++){const a=t[i],s=r?i:a[n];let c=o[s];void 0!==c||this.$_undefinedMap[s]||(c=0),e.push({item:a,id:s,size:c})}return e}},watch:{items(){this.forceUpdate()},simpleArray:{handler(e){this.vscrollData.simpleArray=e},immediate:!0},direction(e){this.forceUpdate(!0)},itemsWithSize(e,t){const n=this.$el.scrollTop;let r=0,o=0;const a=Math.min(e.length,t.length);for(let i=0;i<a&&!(r>=n);i++)r+=t[i].size||this.minItemSize,o+=e[i].size||this.minItemSize;const i=o-r;0!==i&&(this.$el.scrollTop+=i)}},beforeCreate(){var e;this.$_updates=[],this.$_undefinedSizes=0,this.$_undefinedMap={},this.$_events={all:e=e||new Map,on:function(t,n){var r=e.get(t);r&&r.push(n)||e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&r.splice(r.indexOf(n)>>>0,1)},emit:function(t,n){(e.get(t)||[]).slice().map((function(e){e(n)})),(e.get("*")||[]).slice().map((function(e){e(t,n)}))}}},activated(){this.vscrollData.active=!0},deactivated(){this.vscrollData.active=!1},unmounted(){this.$_events.all.clear()},methods:{onScrollerResize(){this.$refs.scroller&&this.forceUpdate(),this.$emit("resize")},onScrollerVisible(){this.$_events.emit("vscroll:update",{force:!1}),this.$emit("visible")},forceUpdate(e=!1){(e||this.simpleArray)&&(this.vscrollData.sizes={}),this.$_events.emit("vscroll:update",{force:!0})},scrollToItem(e){const t=this.$refs.scroller;t&&t.scrollToItem(e)},getItemSize(e,t){const n=this.simpleArray?null!=t?t:this.items.indexOf(e):e[this.keyField];return this.vscrollData.sizes[n]||0},scrollToBottom(){if(this.$_scrollingToBottom)return;this.$_scrollingToBottom=!0;const e=this.$el;this.$nextTick((()=>{e.scrollTop=e.scrollHeight+5e3;const t=()=>{e.scrollTop=e.scrollHeight+5e3,requestAnimationFrame((()=>{e.scrollTop=e.scrollHeight+5e3,0===this.$_undefinedSizes?this.$_scrollingToBottom=!1:requestAnimationFrame(t)}))};requestAnimationFrame(t)}))}},render:function(e,t,n,r,i,s){const c=(0,o.up)("RecycleScroller");return(0,o.wg)(),(0,o.j4)(c,(0,o.dG)({ref:"scroller",items:s.itemsWithSize,"min-item-size":n.minItemSize,direction:e.direction,"key-field":"id","list-tag":e.listTag,"item-tag":e.itemTag},e.$attrs,{onResize:s.onScrollerResize,onVisible:s.onScrollerVisible}),{default:(0,o.w5)((({item:t,index:n,active:r})=>[(0,o.WI)(e.$slots,"default",(0,a.vs)((0,o.F4)({item:t.item,index:n,active:r,itemWithSize:t})))])),before:(0,o.w5)((()=>[(0,o.WI)(e.$slots,"before")])),after:(0,o.w5)((()=>[(0,o.WI)(e.$slots,"after")])),empty:(0,o.w5)((()=>[(0,o.WI)(e.$slots,"empty")])),_:3},16,["items","min-item-size","direction","list-tag","item-tag","onResize","onVisible"])},__file:"src/components/DynamicScroller.vue"},$={name:"DynamicScrollerItem",inject:["vscrollData","vscrollParent","vscrollResizeObserver"],props:{item:{required:!0},watchData:{type:Boolean,default:!1},active:{type:Boolean,required:!0},index:{type:Number,default:void 0},sizeDependencies:{type:[Array,Object],default:null},emitResize:{type:Boolean,default:!1},tag:{type:String,default:"div"}},emits:["resize"],computed:{id(){if(this.vscrollData.simpleArray)return this.index;if(this.vscrollData.keyField in this.item)return this.item[this.vscrollData.keyField];throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`)},size(){return this.vscrollData.sizes[this.id]||0},finalActive(){return this.active&&this.vscrollData.active}},watch:{watchData:"updateWatchData",id(e,t){if(this.$el.$_vs_id=this.id,this.size||this.onDataUpdate(),this.$_sizeObserved){const n=this.vscrollData.sizes[t],r=this.vscrollData.sizes[e];null!=n&&n!==r&&this.applySize(n)}},finalActive(e){this.size||(e?this.vscrollParent.$_undefinedMap[this.id]||(this.vscrollParent.$_undefinedSizes++,this.vscrollParent.$_undefinedMap[this.id]=!0):this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=!1)),this.vscrollResizeObserver?e?this.observeSize():this.unobserveSize():e&&this.$_pendingVScrollUpdate===this.id&&this.updateSize()}},created(){if(!this.$isServer&&(this.$_forceNextVScrollUpdate=null,this.updateWatchData(),!this.vscrollResizeObserver)){for(const e in this.sizeDependencies)this.$watch((()=>this.sizeDependencies[e]),this.onDataUpdate);this.vscrollParent.$_events.on("vscroll:update",this.onVscrollUpdate)}},mounted(){this.finalActive&&(this.updateSize(),this.observeSize())},beforeUnmount(){this.vscrollParent.$_events.off("vscroll:update",this.onVscrollUpdate),this.unobserveSize()},methods:{updateSize(){this.finalActive?this.$_pendingSizeUpdate!==this.id&&(this.$_pendingSizeUpdate=this.id,this.$_forceNextVScrollUpdate=null,this.$_pendingVScrollUpdate=null,this.computeSize(this.id)):this.$_forceNextVScrollUpdate=this.id},updateWatchData(){this.watchData&&!this.vscrollResizeObserver?this.$_watchData=this.$watch("item",(()=>{this.onDataUpdate()}),{deep:!0}):this.$_watchData&&(this.$_watchData(),this.$_watchData=null)},onVscrollUpdate({force:e}){!this.finalActive&&e&&(this.$_pendingVScrollUpdate=this.id),this.$_forceNextVScrollUpdate!==this.id&&!e&&this.size||this.updateSize()},onDataUpdate(){this.updateSize()},computeSize(e){this.$nextTick((()=>{if(this.id===e){const e=this.$el.offsetWidth,t=this.$el.offsetHeight;this.applyWidthHeight(e,t)}this.$_pendingSizeUpdate=null}))},applyWidthHeight(e,t){const n=~~("vertical"===this.vscrollParent.direction?t:e);n&&this.size!==n&&this.applySize(n)},applySize(e){this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=void 0),this.vscrollData.sizes[this.id]=e,this.emitResize&&this.$emit("resize",this.id)},observeSize(){this.vscrollResizeObserver&&(this.$_sizeObserved||(this.vscrollResizeObserver.observe(this.$el),this.$el.$_vs_id=this.id,this.$el.$_vs_onResize=this.onResize,this.$_sizeObserved=!0))},unobserveSize(){this.vscrollResizeObserver&&this.$_sizeObserved&&(this.vscrollResizeObserver.unobserve(this.$el),this.$el.$_vs_onResize=void 0,this.$_sizeObserved=!1)},onResize(e,t,n){this.id===e&&this.applyWidthHeight(t,n)}},render(){return(0,o.h)(this.tag,this.$slots.default())},__file:"src/components/DynamicScrollerItem.vue"},P={version:"2.0.0-beta.7",install:function(e,t){var n=Object.assign({},{installComponents:!0,componentsPrefix:""},t);for(var r in n)void 0!==n[r]&&(w[r]=n[r]);n.installComponents&&function(e,t){e.component("".concat(t,"recycle-scroller"),I),e.component("".concat(t,"RecycleScroller"),I),e.component("".concat(t,"dynamic-scroller"),R),e.component("".concat(t,"DynamicScroller"),R),e.component("".concat(t,"dynamic-scroller-item"),$),e.component("".concat(t,"DynamicScrollerItem"),$)}(e,n.componentsPrefix)}}},989:(e,t,n)=>{"use strict";n.d(t,{MT:()=>z,nv:()=>H,Se:()=>F,OI:()=>P,rn:()=>$});var r=n(66252),o=n(2262);function a(){return"undefined"!=typeof navigator&&"undefined"!=typeof window?window:void 0!==n.g?n.g:{}}const i="function"==typeof Proxy;let s,c;class l{constructor(e,t){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=t;const r={};if(e.settings)for(const t in e.settings){const n=e.settings[t];r[t]=n.defaultValue}const o=`__vue-devtools-plugin-settings__${e.id}`;let a=Object.assign({},r);try{const e=localStorage.getItem(o),t=JSON.parse(e);Object.assign(a,t)}catch(e){}this.fallbacks={getSettings:()=>a,setSettings(e){try{localStorage.setItem(o,JSON.stringify(e))}catch(e){}a=e},now:()=>{return void 0!==s||("undefined"!=typeof window&&window.performance?(s=!0,c=window.performance):void 0!==n.g&&(null===(e=n.g.perf_hooks)||void 0===e?void 0:e.performance)?(s=!0,c=n.g.perf_hooks.performance):s=!1),s?c.now():Date.now();var e}},t&&t.on("plugin:settings:set",((e,t)=>{e===this.plugin.id&&this.fallbacks.setSettings(t)})),this.proxiedOn=new Proxy({},{get:(e,t)=>this.target?this.target.on[t]:(...e)=>{this.onQueue.push({method:t,args:e})}}),this.proxiedTarget=new Proxy({},{get:(e,t)=>this.target?this.target[t]:"on"===t?this.proxiedOn:Object.keys(this.fallbacks).includes(t)?(...e)=>(this.targetQueue.push({method:t,args:e,resolve:()=>{}}),this.fallbacks[t](...e)):(...e)=>new Promise((n=>{this.targetQueue.push({method:t,args:e,resolve:n})}))})}async setRealTarget(e){this.target=e;for(const e of this.onQueue)this.target.on[e.method](...e.args);for(const e of this.targetQueue)e.resolve(await this.target[e.method](...e.args))}}function u(e,t){Object.keys(e).forEach((function(n){return t(e[n],n)}))}function f(e){return null!==e&&"object"==typeof e}function h(e,t,n){return t.indexOf(e)<0&&(n&&n.prepend?t.unshift(e):t.push(e)),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function p(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var n=e.state;m(e,n,[],e._modules.root,!0),d(e,n,t)}function d(e,t,n){var a=e._state,i=e._scope;e.getters={},e._makeLocalGettersCache=Object.create(null);var s=e._wrappedGetters,c={},l={},f=(0,o.B)(!0);f.run((function(){u(s,(function(t,n){c[n]=function(e,t){return function(){return e(t)}}(t,e),l[n]=(0,r.Fl)((function(){return c[n]()})),Object.defineProperty(e.getters,n,{get:function(){return l[n].value},enumerable:!0})}))})),e._state=(0,o.qj)({data:t}),e._scope=f,e.strict&&function(e){(0,r.YP)((function(){return e._state.data}),(function(){}),{deep:!0,flush:"sync"})}(e),a&&n&&e._withCommit((function(){a.data=null})),i&&i.stop()}function m(e,t,n,r,o){var a=!n.length,i=e._modules.getNamespace(n);if(r.namespaced&&(e._modulesNamespaceMap[i],e._modulesNamespaceMap[i]=r),!a&&!o){var s=g(t,n.slice(0,-1)),c=n[n.length-1];e._withCommit((function(){s[c]=r.state}))}var l=r.context=function(e,t,n){var r=""===t,o={dispatch:r?e.dispatch:function(n,r,o){var a=b(n,r,o),i=a.payload,s=a.options,c=a.type;return s&&s.root||(c=t+c),e.dispatch(c,i)},commit:r?e.commit:function(n,r,o){var a=b(n,r,o),i=a.payload,s=a.options,c=a.type;s&&s.root||(c=t+c),e.commit(c,i,s)}};return Object.defineProperties(o,{getters:{get:r?function(){return e.getters}:function(){return v(e,t)}},state:{get:function(){return g(e.state,n)}}}),o}(e,i,n);r.forEachMutation((function(t,n){!function(e,t,n,r){(e._mutations[t]||(e._mutations[t]=[])).push((function(t){n.call(e,r.state,t)}))}(e,i+n,t,l)})),r.forEachAction((function(t,n){var r=t.root?n:i+n,o=t.handler||t;!function(e,t,n,r){(e._actions[t]||(e._actions[t]=[])).push((function(t){var o,a=n.call(e,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:e.getters,rootState:e.state},t);return(o=a)&&"function"==typeof o.then||(a=Promise.resolve(a)),e._devtoolHook?a.catch((function(t){throw e._devtoolHook.emit("vuex:error",t),t})):a}))}(e,r,o,l)})),r.forEachGetter((function(t,n){!function(e,t,n,r){e._wrappedGetters[t]||(e._wrappedGetters[t]=function(e){return n(r.state,r.getters,e.state,e.getters)})}(e,i+n,t,l)})),r.forEachChild((function(r,a){m(e,t,n.concat(a),r,o)}))}function v(e,t){if(!e._makeLocalGettersCache[t]){var n={},r=t.length;Object.keys(e.getters).forEach((function(o){if(o.slice(0,r)===t){var a=o.slice(r);Object.defineProperty(n,a,{get:function(){return e.getters[o]},enumerable:!0})}})),e._makeLocalGettersCache[t]=n}return e._makeLocalGettersCache[t]}function g(e,t){return t.reduce((function(e,t){return e[t]}),e)}function b(e,t,n){return f(e)&&e.type&&(n=t,t=e,e=e.type),{type:e,payload:t,options:n}}var y="vuex:mutations",_="vuex:actions",w="vuex",x=0;function k(e,t){!function(e,t){const n=e,r=a(),o=a().__VUE_DEVTOOLS_GLOBAL_HOOK__,s=i&&n.enableEarlyProxy;if(!o||!r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__&&s){const e=s?new l(n,o):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:e}),e&&t(e.proxiedTarget)}else o.emit("devtools-plugin:setup",e,t)}({id:"org.vuejs.vuex",app:e,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:["vuex bindings"]},(function(n){n.addTimelineLayer({id:y,label:"Vuex Mutations",color:S}),n.addTimelineLayer({id:_,label:"Vuex Actions",color:S}),n.addInspector({id:w,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),n.on.getInspectorTree((function(n){if(n.app===e&&n.inspectorId===w)if(n.filter){var r=[];N(r,t._modules.root,n.filter,""),n.rootNodes=r}else n.rootNodes=[O(t._modules.root,"")]})),n.on.getInspectorState((function(n){if(n.app===e&&n.inspectorId===w){var r=n.nodeId;v(t,r),n.state=function(e,t,n){t="root"===n?t:t[n];var r=Object.keys(t),o={state:Object.keys(e.state).map((function(t){return{key:t,editable:!0,value:e.state[t]}}))};if(r.length){var a=function(e){var t={};return Object.keys(e).forEach((function(n){var r=n.split("/");if(r.length>1){var o=t,a=r.pop();r.forEach((function(e){o[e]||(o[e]={_custom:{value:{},display:e,tooltip:"Module",abstract:!0}}),o=o[e]._custom.value})),o[a]=j((function(){return e[n]}))}else t[n]=j((function(){return e[n]}))})),t}(t);o.getters=Object.keys(a).map((function(e){return{key:e.endsWith("/")?E(e):e,editable:!1,value:j((function(){return a[e]}))}}))}return o}((o=t._modules,(i=(a=r).split("/").filter((function(e){return e}))).reduce((function(e,t,n){var r=e[t];if(!r)throw new Error('Missing module "'+t+'" for path "'+a+'".');return n===i.length-1?r:r._children}),"root"===a?o:o.root._children)),"root"===r?t.getters:t._makeLocalGettersCache,r)}var o,a,i})),n.on.editInspectorState((function(n){if(n.app===e&&n.inspectorId===w){var r=n.nodeId,o=n.path;"root"!==r&&(o=r.split("/").filter(Boolean).concat(o)),t._withCommit((function(){n.set(t._state.data,o,n.state.value)}))}})),t.subscribe((function(e,t){var r={};e.payload&&(r.payload=e.payload),r.state=t,n.notifyComponentUpdate(),n.sendInspectorTree(w),n.sendInspectorState(w),n.addTimelineEvent({layerId:y,event:{time:Date.now(),title:e.type,data:r}})})),t.subscribeAction({before:function(e,t){var r={};e.payload&&(r.payload=e.payload),e._id=x++,e._time=Date.now(),r.state=t,n.addTimelineEvent({layerId:_,event:{time:e._time,title:e.type,groupId:e._id,subtitle:"start",data:r}})},after:function(e,t){var r={},o=Date.now()-e._time;r.duration={_custom:{type:"duration",display:o+"ms",tooltip:"Action duration",value:o}},e.payload&&(r.payload=e.payload),r.state=t,n.addTimelineEvent({layerId:_,event:{time:Date.now(),title:e.type,groupId:e._id,subtitle:"end",data:r}})}})}))}var S=8702998,C={label:"namespaced",textColor:16777215,backgroundColor:6710886};function E(e){return e&&"root"!==e?e.split("/").slice(-2,-1)[0]:"Root"}function O(e,t){return{id:t||"root",label:E(t),tags:e.namespaced?[C]:[],children:Object.keys(e._children).map((function(n){return O(e._children[n],t+n+"/")}))}}function N(e,t,n,r){r.includes(n)&&e.push({id:r||"root",label:r.endsWith("/")?r.slice(0,r.length-1):r||"Root",tags:t.namespaced?[C]:[]}),Object.keys(t._children).forEach((function(o){N(e,t._children[o],n,r+o+"/")}))}function j(e){try{return e()}catch(e){return e}}var L=function(e,t){this.runtime=t,this._children=Object.create(null),this._rawModule=e;var n=e.state;this.state=("function"==typeof n?n():n)||{}},A={namespaced:{configurable:!0}};A.namespaced.get=function(){return!!this._rawModule.namespaced},L.prototype.addChild=function(e,t){this._children[e]=t},L.prototype.removeChild=function(e){delete this._children[e]},L.prototype.getChild=function(e){return this._children[e]},L.prototype.hasChild=function(e){return e in this._children},L.prototype.update=function(e){this._rawModule.namespaced=e.namespaced,e.actions&&(this._rawModule.actions=e.actions),e.mutations&&(this._rawModule.mutations=e.mutations),e.getters&&(this._rawModule.getters=e.getters)},L.prototype.forEachChild=function(e){u(this._children,e)},L.prototype.forEachGetter=function(e){this._rawModule.getters&&u(this._rawModule.getters,e)},L.prototype.forEachAction=function(e){this._rawModule.actions&&u(this._rawModule.actions,e)},L.prototype.forEachMutation=function(e){this._rawModule.mutations&&u(this._rawModule.mutations,e)},Object.defineProperties(L.prototype,A);var M=function(e){this.register([],e,!1)};function I(e,t,n){if(t.update(n),n.modules)for(var r in n.modules){if(!t.getChild(r))return;I(e.concat(r),t.getChild(r),n.modules[r])}}function z(e){return new T(e)}M.prototype.get=function(e){return e.reduce((function(e,t){return e.getChild(t)}),this.root)},M.prototype.getNamespace=function(e){var t=this.root;return e.reduce((function(e,n){return e+((t=t.getChild(n)).namespaced?n+"/":"")}),"")},M.prototype.update=function(e){I([],this.root,e)},M.prototype.register=function(e,t,n){var r=this;void 0===n&&(n=!0);var o=new L(t,n);0===e.length?this.root=o:this.get(e.slice(0,-1)).addChild(e[e.length-1],o),t.modules&&u(t.modules,(function(t,o){r.register(e.concat(o),t,n)}))},M.prototype.unregister=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1],r=t.getChild(n);r&&r.runtime&&t.removeChild(n)},M.prototype.isRegistered=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1];return!!t&&t.hasChild(n)};var T=function(e){var t=this;void 0===e&&(e={});var n=e.plugins;void 0===n&&(n=[]);var r=e.strict;void 0===r&&(r=!1);var o=e.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new M(e),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._scope=null,this._devtools=o;var a=this,i=this.dispatch,s=this.commit;this.dispatch=function(e,t){return i.call(a,e,t)},this.commit=function(e,t,n){return s.call(a,e,t,n)},this.strict=r;var c=this._modules.root.state;m(this,c,[],this._modules.root),d(this,c),n.forEach((function(e){return e(t)}))},R={state:{configurable:!0}};T.prototype.install=function(e,t){e.provide(t||"store",this),e.config.globalProperties.$store=this,void 0!==this._devtools&&this._devtools&&k(e,this)},R.state.get=function(){return this._state.data},R.state.set=function(e){},T.prototype.commit=function(e,t,n){var r=this,o=b(e,t,n),a=o.type,i=o.payload,s=(o.options,{type:a,payload:i}),c=this._mutations[a];c&&(this._withCommit((function(){c.forEach((function(e){e(i)}))})),this._subscribers.slice().forEach((function(e){return e(s,r.state)})))},T.prototype.dispatch=function(e,t){var n=this,r=b(e,t),o=r.type,a=r.payload,i={type:o,payload:a},s=this._actions[o];if(s){try{this._actionSubscribers.slice().filter((function(e){return e.before})).forEach((function(e){return e.before(i,n.state)}))}catch(e){}var c=s.length>1?Promise.all(s.map((function(e){return e(a)}))):s[0](a);return new Promise((function(e,t){c.then((function(t){try{n._actionSubscribers.filter((function(e){return e.after})).forEach((function(e){return e.after(i,n.state)}))}catch(e){}e(t)}),(function(e){try{n._actionSubscribers.filter((function(e){return e.error})).forEach((function(t){return t.error(i,n.state,e)}))}catch(e){}t(e)}))}))}},T.prototype.subscribe=function(e,t){return h(e,this._subscribers,t)},T.prototype.subscribeAction=function(e,t){return h("function"==typeof e?{before:e}:e,this._actionSubscribers,t)},T.prototype.watch=function(e,t,n){var o=this;return(0,r.YP)((function(){return e(o.state,o.getters)}),t,Object.assign({},n))},T.prototype.replaceState=function(e){var t=this;this._withCommit((function(){t._state.data=e}))},T.prototype.registerModule=function(e,t,n){void 0===n&&(n={}),"string"==typeof e&&(e=[e]),this._modules.register(e,t),m(this,this.state,e,this._modules.get(e),n.preserveState),d(this,this.state)},T.prototype.unregisterModule=function(e){var t=this;"string"==typeof e&&(e=[e]),this._modules.unregister(e),this._withCommit((function(){delete g(t.state,e.slice(0,-1))[e[e.length-1]]})),p(this)},T.prototype.hasModule=function(e){return"string"==typeof e&&(e=[e]),this._modules.isRegistered(e)},T.prototype.hotUpdate=function(e){this._modules.update(e),p(this,!0)},T.prototype._withCommit=function(e){var t=this._committing;this._committing=!0,e(),this._committing=t},Object.defineProperties(T.prototype,R);var $=V((function(e,t){var n={};return D(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){var t=this.$store.state,n=this.$store.getters;if(e){var r=U(this.$store,0,e);if(!r)return;t=r.context.state,n=r.context.getters}return"function"==typeof o?o.call(this,t,n):t[o]},n[r].vuex=!0})),n})),P=V((function(e,t){var n={};return D(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=this.$store.commit;if(e){var a=U(this.$store,0,e);if(!a)return;r=a.context.commit}return"function"==typeof o?o.apply(this,[r].concat(t)):r.apply(this.$store,[o].concat(t))}})),n})),F=V((function(e,t){var n={};return D(t).forEach((function(t){var r=t.key,o=t.val;o=e+o,n[r]=function(){if(!e||U(this.$store,0,e))return this.$store.getters[o]},n[r].vuex=!0})),n})),H=V((function(e,t){var n={};return D(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=this.$store.dispatch;if(e){var a=U(this.$store,0,e);if(!a)return;r=a.context.dispatch}return"function"==typeof o?o.apply(this,[r].concat(t)):r.apply(this.$store,[o].concat(t))}})),n}));function D(e){return function(e){return Array.isArray(e)||f(e)}(e)?Array.isArray(e)?e.map((function(e){return{key:e,val:e}})):Object.keys(e).map((function(t){return{key:t,val:e[t]}})):[]}function V(e){return function(t,n){return"string"!=typeof t?(n=t,t=""):"/"!==t.charAt(t.length-1)&&(t+="/"),e(t,n)}}function U(e,t,n){return e._modulesNamespaceMap[n]}},47529:e=>{e.exports=function(){for(var e={},n=0;n<arguments.length;n++){var r=arguments[n];for(var o in r)t.call(r,o)&&(e[o]=r[o])}return e};var t=Object.prototype.hasOwnProperty},17061:(e,t,n)=>{var r=n(18698).default;function o(){"use strict";e.exports=o=function(){return t},e.exports.__esModule=!0,e.exports.default=e.exports;var t={},n=Object.prototype,a=n.hasOwnProperty,i=Object.defineProperty||function(e,t,n){e[t]=n.value},s="function"==typeof Symbol?Symbol:{},c=s.iterator||"@@iterator",l=s.asyncIterator||"@@asyncIterator",u=s.toStringTag||"@@toStringTag";function f(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,n){return e[t]=n}}function h(e,t,n,r){var o=t&&t.prototype instanceof m?t:m,a=Object.create(o.prototype),s=new N(r||[]);return i(a,"_invoke",{value:S(e,n,s)}),a}function p(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=h;var d={};function m(){}function v(){}function g(){}var b={};f(b,c,(function(){return this}));var y=Object.getPrototypeOf,_=y&&y(y(j([])));_&&_!==n&&a.call(_,c)&&(b=_);var w=g.prototype=m.prototype=Object.create(b);function x(e){["next","throw","return"].forEach((function(t){f(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function n(o,i,s,c){var l=p(e[o],e,i);if("throw"!==l.type){var u=l.arg,f=u.value;return f&&"object"==r(f)&&a.call(f,"__await")?t.resolve(f.__await).then((function(e){n("next",e,s,c)}),(function(e){n("throw",e,s,c)})):t.resolve(f).then((function(e){u.value=e,s(u)}),(function(e){return n("throw",e,s,c)}))}c(l.arg)}var o;i(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,o){n(e,r,t,o)}))}return o=o?o.then(a,a):a()}})}function S(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var s=C(i,n);if(s){if(s===d)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=p(e,t,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}function C(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,C(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),d;var o=p(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,d;var a=o.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function j(e){if(e){var t=e[c];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,r=function t(){for(;++n<e.length;)if(a.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return r.next=r}}return{next:L}}function L(){return{value:void 0,done:!0}}return v.prototype=g,i(w,"constructor",{value:g,configurable:!0}),i(g,"constructor",{value:v,configurable:!0}),v.displayName=f(g,u,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===v||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,g):(e.__proto__=g,f(e,u,"GeneratorFunction")),e.prototype=Object.create(w),e},t.awrap=function(e){return{__await:e}},x(k.prototype),f(k.prototype,l,(function(){return this})),t.AsyncIterator=k,t.async=function(e,n,r,o,a){void 0===a&&(a=Promise);var i=new k(h(e,n,r,o),a);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},x(w),f(w,u,"Generator"),f(w,c,(function(){return this})),f(w,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=j,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(O),!e)for(var t in this)"t"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r],i=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),c=a.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&a.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,d):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),d},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),O(n),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;O(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:j(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),d}},t}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports},18698:e=>{function t(n){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},64687:(e,t,n)=>{var r=n(17061)();e.exports=r;try{regeneratorRuntime=r}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}},30907:(e,t,n)=>{"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{Z:()=>r})},83878:(e,t,n)=>{"use strict";function r(e){if(Array.isArray(e))return e}n.d(t,{Z:()=>r})},97326:(e,t,n)=>{"use strict";function r(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}n.d(t,{Z:()=>r})},15861:(e,t,n)=>{"use strict";function r(e,t,n,r,o,a,i){try{var s=e[a](i),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var i=e.apply(t,n);function s(e){r(i,o,a,s,c,"next",e)}function c(e){r(i,o,a,s,c,"throw",e)}s(void 0)}))}}n.d(t,{Z:()=>o})},15671:(e,t,n)=>{"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}n.d(t,{Z:()=>r})},43144:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(49142);function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,(0,r.Z)(o.key),o)}}function a(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}},4942:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(49142);function o(e,t,n){return(t=(0,r.Z)(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},87462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},61120:(e,t,n)=>{"use strict";function r(e){return r=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},r(e)}n.d(t,{Z:()=>r})},60136:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(89611);function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&(0,r.Z)(e,t)}},59199:(e,t,n)=>{"use strict";function r(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}n.d(t,{Z:()=>r})},25267:(e,t,n)=>{"use strict";function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(t,{Z:()=>r})},36459:(e,t,n)=>{"use strict";function r(e){if(null==e)throw new TypeError("Cannot destructure "+e)}n.d(t,{Z:()=>r})},44925:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}n.d(t,{Z:()=>r})},82963:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(71002),o=n(97326);function a(e,t){if(t&&("object"===(0,r.Z)(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return(0,o.Z)(e)}},89611:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}n.d(t,{Z:()=>r})},29439:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(83878),o=n(40181),a=n(25267);function i(e,t){return(0,r.Z)(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw o}}return s}}(e,t)||(0,o.Z)(e,t)||(0,a.Z)()}},84506:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(83878),o=n(59199),a=n(40181),i=n(25267);function s(e){return(0,r.Z)(e)||(0,o.Z)(e)||(0,a.Z)(e)||(0,i.Z)()}},93433:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(30907),o=n(59199),a=n(40181);function i(e){return function(e){if(Array.isArray(e))return(0,r.Z)(e)}(e)||(0,o.Z)(e)||(0,a.Z)(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},49142:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(71002);function o(e){var t=function(e,t){if("object"!==(0,r.Z)(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t);if("object"!==(0,r.Z)(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===(0,r.Z)(t)?t:String(t)}},71002:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}n.d(t,{Z:()=>r})},40181:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(30907);function o(e,t){if(e){if("string"==typeof e)return(0,r.Z)(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?(0,r.Z)(e,t):void 0}}},72407:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(61120),o=n(89611);function a(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function i(e,t,n){return i=a()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&(0,o.Z)(a,n.prototype),a},i.apply(null,arguments)}function s(e){var t="function"==typeof Map?new Map:void 0;return s=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,a)}function a(){return i(e,arguments,(0,r.Z)(this).constructor)}return a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),(0,o.Z)(a,e)},s(e)}},73152:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r={};try{r.EventTarget=(new EventTarget).constructor}catch(e){!function(e,t){var n=e.create,o=e.defineProperty,a=i.prototype;function i(){t.set(this,n(null))}function s(e,t,n){o(e,t,{configurable:!0,writable:!0,value:n})}function c(e){var t=e.options;return t&&t.once&&e.target.removeEventListener(this.type,e.listener),"function"==typeof e.listener?e.listener.call(e.target,this):e.listener.handleEvent(this),this._stopImmediatePropagationFlag}s(a,"addEventListener",(function(e,n,r){for(var o=t.get(this),a=o[e]||(o[e]=[]),i=0,s=a.length;i<s;i++)if(a[i].listener===n)return;a.push({target:this,listener:n,options:r})})),s(a,"dispatchEvent",(function(e){var n=t.get(this)[e.type];return n&&(s(e,"target",this),s(e,"currentTarget",this),n.slice(0).some(c,e),delete e.currentTarget,delete e.target),!0})),s(a,"removeEventListener",(function(e,n){for(var r=t.get(this),o=r[e]||(r[e]=[]),a=0,i=o.length;a<i;a++)if(o[a].listener===n)return void o.splice(a,1)})),r.EventTarget=i}(Object,new WeakMap)}const o=r.EventTarget}}]); -//# sourceMappingURL=2724.e4840c73281069ba54ab.js.map -\ No newline at end of file diff --git a/priv/static/static/js/2724.e4840c73281069ba54ab.js.map b/priv/static/static/js/2724.e4840c73281069ba54ab.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/2724.e4840c73281069ba54ab.js","mappings":"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","sources":["webpack://pleroma_fe/./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","webpack://pleroma_fe/./node_modules/@fortawesome/free-regular-svg-icons/index.mjs","webpack://pleroma_fe/./node_modules/@fortawesome/free-solid-svg-icons/index.mjs","webpack://pleroma_fe/./node_modules/@fortawesome/vue-fontawesome/index.es.js","webpack://pleroma_fe/./node_modules/pointer-tracker/dist/PointerTracker.mjs","webpack://pleroma_fe/./node_modules/@kazvmoe-infra/pinch-zoom-element/dist/pinch-zoom.es.js","webpack://pleroma_fe/./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vuelidate/core/dist/index.esm.js","webpack://pleroma_fe/./node_modules/@vuelidate/validators/dist/index.esm.js","webpack://pleroma_fe/./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack://pleroma_fe/./node_modules/chromatism/dist/chromatism.cjs.js","webpack://pleroma_fe/./node_modules/click-outside-vue3/dist/v-click-outside.umd.js","webpack://pleroma_fe/./node_modules/custom-event-polyfill/polyfill.js","webpack://pleroma_fe/./node_modules/escape-html/index.js","webpack://pleroma_fe/./node_modules/iso-639-1/src/data.js","webpack://pleroma_fe/./node_modules/iso-639-1/src/index.js","webpack://pleroma_fe/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://pleroma_fe/./node_modules/localforage/dist/localforage.js","webpack://pleroma_fe/./node_modules/lodash.merge/index.js","webpack://pleroma_fe/./node_modules/lodash/_DataView.js","webpack://pleroma_fe/./node_modules/lodash/_Hash.js","webpack://pleroma_fe/./node_modules/lodash/_ListCache.js","webpack://pleroma_fe/./node_modules/lodash/_Map.js","webpack://pleroma_fe/./node_modules/lodash/_MapCache.js","webpack://pleroma_fe/./node_modules/lodash/_Promise.js","webpack://pleroma_fe/./node_modules/lodash/_Set.js","webpack://pleroma_fe/./node_modules/lodash/_SetCache.js","webpack://pleroma_fe/./node_modules/lodash/_Stack.js","webpack://pleroma_fe/./node_modules/lodash/_Symbol.js","webpack://pleroma_fe/./node_modules/lodash/_Uint8Array.js","webpack://pleroma_fe/./node_modules/lodash/_WeakMap.js","webpack://pleroma_fe/./node_modules/lodash/_apply.js","webpack://pleroma_fe/./node_modules/lodash/_arrayAggregator.js","webpack://pleroma_fe/./node_modules/lodash/_arrayEach.js","webpack://pleroma_fe/./node_modules/lodash/_arrayFilter.js","webpack://pleroma_fe/./node_modules/lodash/_arrayIncludes.js","webpack://pleroma_fe/./node_modules/lodash/_arrayIncludesWith.js","webpack://pleroma_fe/./node_modules/lodash/_arrayLikeKeys.js","webpack://pleroma_fe/./node_modules/lodash/_arrayMap.js","webpack://pleroma_fe/./node_modules/lodash/_arrayPush.js","webpack://pleroma_fe/./node_modules/lodash/_arrayReduce.js","webpack://pleroma_fe/./node_modules/lodash/_arrayShuffle.js","webpack://pleroma_fe/./node_modules/lodash/_arraySome.js","webpack://pleroma_fe/./node_modules/lodash/_asciiToArray.js","webpack://pleroma_fe/./node_modules/lodash/_asciiWords.js","webpack://pleroma_fe/./node_modules/lodash/_assignMergeValue.js","webpack://pleroma_fe/./node_modules/lodash/_assignValue.js","webpack://pleroma_fe/./node_modules/lodash/_assocIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_baseAggregator.js","webpack://pleroma_fe/./node_modules/lodash/_baseAssign.js","webpack://pleroma_fe/./node_modules/lodash/_baseAssignIn.js","webpack://pleroma_fe/./node_modules/lodash/_baseAssignValue.js","webpack://pleroma_fe/./node_modules/lodash/_baseClamp.js","webpack://pleroma_fe/./node_modules/lodash/_baseClone.js","webpack://pleroma_fe/./node_modules/lodash/_baseCreate.js","webpack://pleroma_fe/./node_modules/lodash/_baseEach.js","webpack://pleroma_fe/./node_modules/lodash/_baseExtremum.js","webpack://pleroma_fe/./node_modules/lodash/_baseFilter.js","webpack://pleroma_fe/./node_modules/lodash/_baseFindIndex.js","webpack://pleroma_fe/./node_modules/lodash/_baseFlatten.js","webpack://pleroma_fe/./node_modules/lodash/_baseFor.js","webpack://pleroma_fe/./node_modules/lodash/_baseForOwn.js","webpack://pleroma_fe/./node_modules/lodash/_baseGet.js","webpack://pleroma_fe/./node_modules/lodash/_baseGetAllKeys.js","webpack://pleroma_fe/./node_modules/lodash/_baseGetTag.js","webpack://pleroma_fe/./node_modules/lodash/_baseGt.js","webpack://pleroma_fe/./node_modules/lodash/_baseHasIn.js","webpack://pleroma_fe/./node_modules/lodash/_baseIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsArguments.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsEqual.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsEqualDeep.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsMap.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsMatch.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsNaN.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsNative.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsSet.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/_baseIteratee.js","webpack://pleroma_fe/./node_modules/lodash/_baseKeys.js","webpack://pleroma_fe/./node_modules/lodash/_baseKeysIn.js","webpack://pleroma_fe/./node_modules/lodash/_baseLt.js","webpack://pleroma_fe/./node_modules/lodash/_baseMap.js","webpack://pleroma_fe/./node_modules/lodash/_baseMatches.js","webpack://pleroma_fe/./node_modules/lodash/_baseMatchesProperty.js","webpack://pleroma_fe/./node_modules/lodash/_baseMerge.js","webpack://pleroma_fe/./node_modules/lodash/_baseMergeDeep.js","webpack://pleroma_fe/./node_modules/lodash/_baseOrderBy.js","webpack://pleroma_fe/./node_modules/lodash/_basePickBy.js","webpack://pleroma_fe/./node_modules/lodash/_baseProperty.js","webpack://pleroma_fe/./node_modules/lodash/_basePropertyDeep.js","webpack://pleroma_fe/./node_modules/lodash/_basePropertyOf.js","webpack://pleroma_fe/./node_modules/lodash/_basePullAt.js","webpack://pleroma_fe/./node_modules/lodash/_baseRandom.js","webpack://pleroma_fe/./node_modules/lodash/_baseReduce.js","webpack://pleroma_fe/./node_modules/lodash/_baseRest.js","webpack://pleroma_fe/./node_modules/lodash/_baseSet.js","webpack://pleroma_fe/./node_modules/lodash/_baseSetToString.js","webpack://pleroma_fe/./node_modules/lodash/_baseShuffle.js","webpack://pleroma_fe/./node_modules/lodash/_baseSlice.js","webpack://pleroma_fe/./node_modules/lodash/_baseSortBy.js","webpack://pleroma_fe/./node_modules/lodash/_baseSum.js","webpack://pleroma_fe/./node_modules/lodash/_baseTimes.js","webpack://pleroma_fe/./node_modules/lodash/_baseToString.js","webpack://pleroma_fe/./node_modules/lodash/_baseTrim.js","webpack://pleroma_fe/./node_modules/lodash/_baseUnary.js","webpack://pleroma_fe/./node_modules/lodash/_baseUniq.js","webpack://pleroma_fe/./node_modules/lodash/_baseUnset.js","webpack://pleroma_fe/./node_modules/lodash/_baseValues.js","webpack://pleroma_fe/./node_modules/lodash/_cacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_castFunction.js","webpack://pleroma_fe/./node_modules/lodash/_castPath.js","webpack://pleroma_fe/./node_modules/lodash/_castSlice.js","webpack://pleroma_fe/./node_modules/lodash/_charsEndIndex.js","webpack://pleroma_fe/./node_modules/lodash/_charsStartIndex.js","webpack://pleroma_fe/./node_modules/lodash/_cloneArrayBuffer.js","webpack://pleroma_fe/./node_modules/lodash/_cloneBuffer.js","webpack://pleroma_fe/./node_modules/lodash/_cloneDataView.js","webpack://pleroma_fe/./node_modules/lodash/_cloneRegExp.js","webpack://pleroma_fe/./node_modules/lodash/_cloneSymbol.js","webpack://pleroma_fe/./node_modules/lodash/_cloneTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/_compareAscending.js","webpack://pleroma_fe/./node_modules/lodash/_compareMultiple.js","webpack://pleroma_fe/./node_modules/lodash/_copyArray.js","webpack://pleroma_fe/./node_modules/lodash/_copyObject.js","webpack://pleroma_fe/./node_modules/lodash/_copySymbols.js","webpack://pleroma_fe/./node_modules/lodash/_copySymbolsIn.js","webpack://pleroma_fe/./node_modules/lodash/_coreJsData.js","webpack://pleroma_fe/./node_modules/lodash/_createAggregator.js","webpack://pleroma_fe/./node_modules/lodash/_createAssigner.js","webpack://pleroma_fe/./node_modules/lodash/_createBaseEach.js","webpack://pleroma_fe/./node_modules/lodash/_createBaseFor.js","webpack://pleroma_fe/./node_modules/lodash/_createCaseFirst.js","webpack://pleroma_fe/./node_modules/lodash/_createCompounder.js","webpack://pleroma_fe/./node_modules/lodash/_createFind.js","webpack://pleroma_fe/./node_modules/lodash/_createSet.js","webpack://pleroma_fe/./node_modules/lodash/_deburrLetter.js","webpack://pleroma_fe/./node_modules/lodash/_defineProperty.js","webpack://pleroma_fe/./node_modules/lodash/_equalArrays.js","webpack://pleroma_fe/./node_modules/lodash/_equalByTag.js","webpack://pleroma_fe/./node_modules/lodash/_equalObjects.js","webpack://pleroma_fe/./node_modules/lodash/_freeGlobal.js","webpack://pleroma_fe/./node_modules/lodash/_getAllKeys.js","webpack://pleroma_fe/./node_modules/lodash/_getAllKeysIn.js","webpack://pleroma_fe/./node_modules/lodash/_getMapData.js","webpack://pleroma_fe/./node_modules/lodash/_getMatchData.js","webpack://pleroma_fe/./node_modules/lodash/_getNative.js","webpack://pleroma_fe/./node_modules/lodash/_getPrototype.js","webpack://pleroma_fe/./node_modules/lodash/_getRawTag.js","webpack://pleroma_fe/./node_modules/lodash/_getSymbols.js","webpack://pleroma_fe/./node_modules/lodash/_getSymbolsIn.js","webpack://pleroma_fe/./node_modules/lodash/_getTag.js","webpack://pleroma_fe/./node_modules/lodash/_getValue.js","webpack://pleroma_fe/./node_modules/lodash/_hasPath.js","webpack://pleroma_fe/./node_modules/lodash/_hasUnicode.js","webpack://pleroma_fe/./node_modules/lodash/_hasUnicodeWord.js","webpack://pleroma_fe/./node_modules/lodash/_hashClear.js","webpack://pleroma_fe/./node_modules/lodash/_hashDelete.js","webpack://pleroma_fe/./node_modules/lodash/_hashGet.js","webpack://pleroma_fe/./node_modules/lodash/_hashHas.js","webpack://pleroma_fe/./node_modules/lodash/_hashSet.js","webpack://pleroma_fe/./node_modules/lodash/_initCloneArray.js","webpack://pleroma_fe/./node_modules/lodash/_initCloneByTag.js","webpack://pleroma_fe/./node_modules/lodash/_initCloneObject.js","webpack://pleroma_fe/./node_modules/lodash/_isFlattenable.js","webpack://pleroma_fe/./node_modules/lodash/_isIndex.js","webpack://pleroma_fe/./node_modules/lodash/_isIterateeCall.js","webpack://pleroma_fe/./node_modules/lodash/_isKey.js","webpack://pleroma_fe/./node_modules/lodash/_isKeyable.js","webpack://pleroma_fe/./node_modules/lodash/_isMasked.js","webpack://pleroma_fe/./node_modules/lodash/_isPrototype.js","webpack://pleroma_fe/./node_modules/lodash/_isStrictComparable.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheClear.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheDelete.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheGet.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheSet.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheClear.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheDelete.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheGet.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheSet.js","webpack://pleroma_fe/./node_modules/lodash/_mapToArray.js","webpack://pleroma_fe/./node_modules/lodash/_matchesStrictComparable.js","webpack://pleroma_fe/./node_modules/lodash/_memoizeCapped.js","webpack://pleroma_fe/./node_modules/lodash/_nativeCreate.js","webpack://pleroma_fe/./node_modules/lodash/_nativeKeys.js","webpack://pleroma_fe/./node_modules/lodash/_nativeKeysIn.js","webpack://pleroma_fe/./node_modules/lodash/_nodeUtil.js","webpack://pleroma_fe/./node_modules/lodash/_objectToString.js","webpack://pleroma_fe/./node_modules/lodash/_overArg.js","webpack://pleroma_fe/./node_modules/lodash/_overRest.js","webpack://pleroma_fe/./node_modules/lodash/_parent.js","webpack://pleroma_fe/./node_modules/lodash/_root.js","webpack://pleroma_fe/./node_modules/lodash/_safeGet.js","webpack://pleroma_fe/./node_modules/lodash/_setCacheAdd.js","webpack://pleroma_fe/./node_modules/lodash/_setCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_setToArray.js","webpack://pleroma_fe/./node_modules/lodash/_setToString.js","webpack://pleroma_fe/./node_modules/lodash/_shortOut.js","webpack://pleroma_fe/./node_modules/lodash/_shuffleSelf.js","webpack://pleroma_fe/./node_modules/lodash/_stackClear.js","webpack://pleroma_fe/./node_modules/lodash/_stackDelete.js","webpack://pleroma_fe/./node_modules/lodash/_stackGet.js","webpack://pleroma_fe/./node_modules/lodash/_stackHas.js","webpack://pleroma_fe/./node_modules/lodash/_stackSet.js","webpack://pleroma_fe/./node_modules/lodash/_strictIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_stringToArray.js","webpack://pleroma_fe/./node_modules/lodash/_stringToPath.js","webpack://pleroma_fe/./node_modules/lodash/_toKey.js","webpack://pleroma_fe/./node_modules/lodash/_toSource.js","webpack://pleroma_fe/./node_modules/lodash/_trimmedEndIndex.js","webpack://pleroma_fe/./node_modules/lodash/_unescapeHtmlChar.js","webpack://pleroma_fe/./node_modules/lodash/_unicodeToArray.js","webpack://pleroma_fe/./node_modules/lodash/_unicodeWords.js","webpack://pleroma_fe/./node_modules/lodash/camelCase.js","webpack://pleroma_fe/./node_modules/lodash/capitalize.js","webpack://pleroma_fe/./node_modules/lodash/chunk.js","webpack://pleroma_fe/./node_modules/lodash/clamp.js","webpack://pleroma_fe/./node_modules/lodash/clone.js","webpack://pleroma_fe/./node_modules/lodash/cloneDeep.js","webpack://pleroma_fe/./node_modules/lodash/compact.js","webpack://pleroma_fe/./node_modules/lodash/concat.js","webpack://pleroma_fe/./node_modules/lodash/constant.js","webpack://pleroma_fe/./node_modules/lodash/debounce.js","webpack://pleroma_fe/./node_modules/lodash/deburr.js","webpack://pleroma_fe/./node_modules/lodash/each.js","webpack://pleroma_fe/./node_modules/lodash/eq.js","webpack://pleroma_fe/./node_modules/lodash/filter.js","webpack://pleroma_fe/./node_modules/lodash/find.js","webpack://pleroma_fe/./node_modules/lodash/findIndex.js","webpack://pleroma_fe/./node_modules/lodash/findLastIndex.js","webpack://pleroma_fe/./node_modules/lodash/first.js","webpack://pleroma_fe/./node_modules/lodash/flatten.js","webpack://pleroma_fe/./node_modules/lodash/flattenDeep.js","webpack://pleroma_fe/./node_modules/lodash/forEach.js","webpack://pleroma_fe/./node_modules/lodash/get.js","webpack://pleroma_fe/./node_modules/lodash/groupBy.js","webpack://pleroma_fe/./node_modules/lodash/hasIn.js","webpack://pleroma_fe/./node_modules/lodash/head.js","webpack://pleroma_fe/./node_modules/lodash/identity.js","webpack://pleroma_fe/./node_modules/lodash/includes.js","webpack://pleroma_fe/./node_modules/lodash/isArguments.js","webpack://pleroma_fe/./node_modules/lodash/isArray.js","webpack://pleroma_fe/./node_modules/lodash/isArrayLike.js","webpack://pleroma_fe/./node_modules/lodash/isArrayLikeObject.js","webpack://pleroma_fe/./node_modules/lodash/isBuffer.js","webpack://pleroma_fe/./node_modules/lodash/isEmpty.js","webpack://pleroma_fe/./node_modules/lodash/isEqual.js","webpack://pleroma_fe/./node_modules/lodash/isFunction.js","webpack://pleroma_fe/./node_modules/lodash/isLength.js","webpack://pleroma_fe/./node_modules/lodash/isMap.js","webpack://pleroma_fe/./node_modules/lodash/isObject.js","webpack://pleroma_fe/./node_modules/lodash/isObjectLike.js","webpack://pleroma_fe/./node_modules/lodash/isPlainObject.js","webpack://pleroma_fe/./node_modules/lodash/isSet.js","webpack://pleroma_fe/./node_modules/lodash/isString.js","webpack://pleroma_fe/./node_modules/lodash/isSymbol.js","webpack://pleroma_fe/./node_modules/lodash/isTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/kebabCase.js","webpack://pleroma_fe/./node_modules/lodash/keyBy.js","webpack://pleroma_fe/./node_modules/lodash/keys.js","webpack://pleroma_fe/./node_modules/lodash/keysIn.js","webpack://pleroma_fe/./node_modules/lodash/last.js","webpack://pleroma_fe/./node_modules/lodash/map.js","webpack://pleroma_fe/./node_modules/lodash/maxBy.js","webpack://pleroma_fe/./node_modules/lodash/memoize.js","webpack://pleroma_fe/./node_modules/lodash/merge.js","webpack://pleroma_fe/./node_modules/lodash/mergeWith.js","webpack://pleroma_fe/./node_modules/lodash/minBy.js","webpack://pleroma_fe/./node_modules/lodash/negate.js","webpack://pleroma_fe/./node_modules/lodash/noop.js","webpack://pleroma_fe/./node_modules/lodash/now.js","webpack://pleroma_fe/./node_modules/lodash/omitBy.js","webpack://pleroma_fe/./node_modules/lodash/orderBy.js","webpack://pleroma_fe/./node_modules/lodash/pickBy.js","webpack://pleroma_fe/./node_modules/lodash/property.js","webpack://pleroma_fe/./node_modules/lodash/reduce.js","webpack://pleroma_fe/./node_modules/lodash/reject.js","webpack://pleroma_fe/./node_modules/lodash/remove.js","webpack://pleroma_fe/./node_modules/lodash/set.js","webpack://pleroma_fe/./node_modules/lodash/shuffle.js","webpack://pleroma_fe/./node_modules/lodash/slice.js","webpack://pleroma_fe/./node_modules/lodash/sortBy.js","webpack://pleroma_fe/./node_modules/lodash/stubArray.js","webpack://pleroma_fe/./node_modules/lodash/stubFalse.js","webpack://pleroma_fe/./node_modules/lodash/sumBy.js","webpack://pleroma_fe/./node_modules/lodash/take.js","webpack://pleroma_fe/./node_modules/lodash/takeRight.js","webpack://pleroma_fe/./node_modules/lodash/throttle.js","webpack://pleroma_fe/./node_modules/lodash/toFinite.js","webpack://pleroma_fe/./node_modules/lodash/toInteger.js","webpack://pleroma_fe/./node_modules/lodash/toNumber.js","webpack://pleroma_fe/./node_modules/lodash/toPlainObject.js","webpack://pleroma_fe/./node_modules/lodash/toString.js","webpack://pleroma_fe/./node_modules/lodash/trim.js","webpack://pleroma_fe/./node_modules/lodash/unescape.js","webpack://pleroma_fe/./node_modules/lodash/uniq.js","webpack://pleroma_fe/./node_modules/lodash/uniqBy.js","webpack://pleroma_fe/./node_modules/lodash/uniqWith.js","webpack://pleroma_fe/./node_modules/lodash/uniqueId.js","webpack://pleroma_fe/./node_modules/lodash/upperFirst.js","webpack://pleroma_fe/./node_modules/lodash/values.js","webpack://pleroma_fe/./node_modules/lodash/words.js","webpack://pleroma_fe/./node_modules/parse-link-header/index.js","webpack://pleroma_fe/./node_modules/phoenix/priv/static/phoenix.esm.js","webpack://pleroma_fe/./node_modules/punycode.js/punycode.es6.js","webpack://pleroma_fe/./node_modules/punycode/punycode.es6.js","webpack://pleroma_fe/./node_modules/querystring/decode.js","webpack://pleroma_fe/./node_modules/querystring/encode.js","webpack://pleroma_fe/./node_modules/querystring/index.js","webpack://pleroma_fe/./node_modules/serviceworker-webpack5-plugin/lib/runtime.js","webpack://pleroma_fe/./node_modules/url/url.js","webpack://pleroma_fe/./node_modules/url/util.js","webpack://pleroma_fe/./node_modules/@intlify/shared/dist/shared.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js","webpack://pleroma_fe/./node_modules/vue-i18n/dist/vue-i18n.runtime.esm-bundler.js","webpack://pleroma_fe/./node_modules/vue-loader/dist/exportHelper.js","webpack://pleroma_fe/./node_modules/vue-router/dist/vue-router.mjs","webpack://pleroma_fe/./node_modules/vue-resize/dist/vue-resize.esm.js","webpack://pleroma_fe/./node_modules/vue-observe-visibility/dist/vue-observe-visibility.esm.js","webpack://pleroma_fe/./node_modules/vue-virtual-scroller/dist/vue-virtual-scroller.esm.js","webpack://pleroma_fe/./node_modules/mitt/dist/mitt.es.js","webpack://pleroma_fe/./node_modules/@vue/devtools-api/lib/esm/env.js","webpack://pleroma_fe/./node_modules/@vue/devtools-api/lib/esm/time.js","webpack://pleroma_fe/./node_modules/@vue/devtools-api/lib/esm/proxy.js","webpack://pleroma_fe/./node_modules/@vue/devtools-api/lib/esm/const.js","webpack://pleroma_fe/./node_modules/vuex/dist/vuex.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/devtools-api/lib/esm/index.js","webpack://pleroma_fe/./node_modules/xtend/immutable.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/typeof.js","webpack://pleroma_fe/./node_modules/@babel/runtime/regenerator/index.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://pleroma_fe/./node_modules/@ungap/event-target/esm/index.js"],"sourcesContent":["function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n 'solid': 'fass'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n 'fass': 'fa-solid'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i; // TODO: this needs to support fass\n// TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n '900': 'fass'\n}), _familyProxy5));\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n var dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nvar _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread2({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.2.1\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(function (abstract) {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n\n if (abstract[0].attributes.class) {\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\n\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","var prefix = \"far\";\nvar faTrashCan = {\n prefix: 'far',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M160 400C160 408.8 152.8 416 144 416C135.2 416 128 408.8 128 400V192C128 183.2 135.2 176 144 176C152.8 176 160 183.2 160 192V400zM240 400C240 408.8 232.8 416 224 416C215.2 416 208 408.8 208 400V192C208 183.2 215.2 176 224 176C232.8 176 240 183.2 240 192V400zM320 400C320 408.8 312.8 416 304 416C295.2 416 288 408.8 288 400V192C288 183.2 295.2 176 304 176C312.8 176 320 183.2 320 192V400zM317.5 24.94L354.2 80H424C437.3 80 448 90.75 448 104C448 117.3 437.3 128 424 128H416V432C416 476.2 380.2 512 336 512H112C67.82 512 32 476.2 32 432V128H24C10.75 128 0 117.3 0 104C0 90.75 10.75 80 24 80H93.82L130.5 24.94C140.9 9.357 158.4 0 177.1 0H270.9C289.6 0 307.1 9.358 317.5 24.94H317.5zM151.5 80H296.5L277.5 51.56C276 49.34 273.5 48 270.9 48H177.1C174.5 48 171.1 49.34 170.5 51.56L151.5 80zM80 432C80 449.7 94.33 464 112 464H336C353.7 464 368 449.7 368 432V128H80V432z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faMessage = {\n prefix: 'far',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M447.1 0h-384c-35.25 0-64 28.75-64 63.1v287.1c0 35.25 28.75 63.1 64 63.1h96v83.98c0 9.836 11.02 15.55 19.12 9.7l124.9-93.68h144c35.25 0 64-28.75 64-63.1V63.1C511.1 28.75 483.2 0 447.1 0zM464 352c0 8.75-7.25 16-16 16h-160l-80 60v-60H64c-8.75 0-16-7.25-16-16V64c0-8.75 7.25-16 16-16h384c8.75 0 16 7.25 16 16V352z\"]\n};\nvar faCommentAlt = faMessage;\nvar faFileLines = {\n prefix: 'far',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0L64-.0001c-35.35 0-64 28.65-64 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM96 280C96 293.3 106.8 304 120 304h144C277.3 304 288 293.3 288 280S277.3 256 264 256h-144C106.8 256 96 266.8 96 280zM264 352h-144C106.8 352 96 362.8 96 376s10.75 24 24 24h144c13.25 0 24-10.75 24-24S277.3 352 264 352z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faCalendarDays = {\n prefix: 'far',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 248H128V192H48V248zM48 296V360H128V296H48zM176 296V360H272V296H176zM320 296V360H400V296H320zM400 192H320V248H400V192zM400 408H320V464H384C392.8 464 400 456.8 400 448V408zM272 408H176V464H272V408zM128 408H48V448C48 456.8 55.16 464 64 464H128V408zM272 192H176V248H272V192z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faHandPointRight = {\n prefix: 'far',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M320 408c0-6.428-.8457-12.66-2.434-18.6C338.2 376.7 352 353.9 352 328c0-6.428-.8457-12.66-2.434-18.6C370.2 296.7 384 273.9 384 248c0-2.705-.1484-5.373-.4414-8H440C479.7 240 512 207.7 512 168S479.7 96 440 96H243.7C227.5 76.51 203.2 64 176 64H126.1C94.02 64 64.47 81.1 49 108.6L17.65 164.5C6.104 185.1 0 208.4 0 231.8v107.9C0 417.1 64.6 480 144 480h104C287.7 480 320 447.7 320 408zM280 304c13.23 0 24 10.78 24 24S293.2 352 280 352H232.1C218.9 352 208 341.2 208 328S218.8 304 232 304H280zM312 224c13.23 0 24 10.78 24 24S325.2 272 312 272h-48c-3.029 0-5.875-.7012-8.545-1.73C260.7 259.9 264 248.4 264 236V224H312zM440 144c13.23 0 24 10.78 24 24S453.2 192 440 192h-176V152c0-2.686-.5566-5.217-.793-7.84C263.5 144.2 263.7 144 264 144H440zM48 339.7V231.8c0-15.25 3.984-30.41 11.52-43.88l31.34-55.78C97.84 119.7 111.4 112 126.1 112H176c22.06 0 40 17.94 40 40v84c0 15.44-12.56 28-28 28S160 251.4 160 236V184C160 170.8 149.3 160 136 160S112 170.8 112 184v52c0 33.23 21.58 61.25 51.36 71.54C161.3 314 160 320.9 160 328c0 5.041 1.166 9.836 2.178 14.66C137.4 354 120 378.1 120 408c0 7.684 1.557 14.94 3.836 21.87C80.56 420.9 48 383.9 48 339.7zM192 432c-13.23 0-24-10.78-24-24S178.8 384 192 384h56c13.23 0 24 10.78 24 24s-10.77 24-24 24H192z\"]\n};\nvar faFaceSmileBeam = {\n prefix: 'far',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 352C293.2 352 319.2 334.5 334.4 318.1C343.3 308.4 358.5 307.7 368.3 316.7C378 325.7 378.6 340.9 369.6 350.6C347.7 374.5 309.7 400 256 400C202.3 400 164.3 374.5 142.4 350.6C133.4 340.9 133.1 325.7 143.7 316.7C153.5 307.7 168.7 308.4 177.6 318.1C192.8 334.5 218.8 352 256 352zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFaceGrinStars = {\n prefix: 'far',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M199.8 167.3L237.9 172.3C240.1 172.7 243.5 174.8 244.5 177.8C245.4 180.7 244.6 183.9 242.4 186L214.5 212.5L221.5 250.3C222 253.4 220.8 256.4 218.3 258.2C215.8 260.1 212.5 260.3 209.8 258.8L175.1 240.5L142.2 258.8C139.5 260.3 136.2 260.1 133.7 258.2C131.2 256.4 129.1 253.4 130.5 250.3L137.5 212.5L109.6 186C107.4 183.9 106.6 180.7 107.5 177.8C108.5 174.8 111 172.7 114.1 172.3L152.2 167.3L168.8 132.6C170.1 129.8 172.9 128 175.1 128C179.1 128 181.9 129.8 183.2 132.6L199.8 167.3zM359.8 167.3L397.9 172.3C400.1 172.7 403.5 174.8 404.5 177.8C405.4 180.7 404.6 183.9 402.4 186L374.5 212.5L381.5 250.3C382 253.4 380.8 256.4 378.3 258.2C375.8 260.1 372.5 260.3 369.8 258.8L336 240.5L302.2 258.8C299.5 260.3 296.2 260.1 293.7 258.2C291.2 256.4 289.1 253.4 290.5 250.3L297.5 212.5L269.6 186C267.4 183.9 266.6 180.7 267.5 177.8C268.5 174.8 271 172.7 274.1 172.3L312.2 167.3L328.8 132.6C330.1 129.8 332.9 128 336 128C339.1 128 341.9 129.8 343.2 132.6L359.8 167.3zM349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faAddressBook = {\n prefix: 'far',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M272 288h-64C163.8 288 128 323.8 128 368C128 376.8 135.2 384 144 384h192c8.836 0 16-7.164 16-16C352 323.8 316.2 288 272 288zM240 256c35.35 0 64-28.65 64-64s-28.65-64-64-64c-35.34 0-64 28.65-64 64S204.7 256 240 256zM496 320H480v96h16c8.836 0 16-7.164 16-16v-64C512 327.2 504.8 320 496 320zM496 64H480v96h16C504.8 160 512 152.8 512 144v-64C512 71.16 504.8 64 496 64zM496 192H480v96h16C504.8 288 512 280.8 512 272v-64C512 199.2 504.8 192 496 192zM384 0H96C60.65 0 32 28.65 32 64v384c0 35.35 28.65 64 64 64h288c35.35 0 64-28.65 64-64V64C448 28.65 419.3 0 384 0zM400 448c0 8.836-7.164 16-16 16H96c-8.836 0-16-7.164-16-16V64c0-8.838 7.164-16 16-16h288c8.836 0 16 7.162 16 16V448z\"]\n};\nvar faContactBook = faAddressBook;\nvar faComments = {\n prefix: 'far',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 0C322.9 0 416 78.8 416 176C416 273.2 322.9 352 208 352C189.3 352 171.2 349.7 153.9 345.8C123.3 364.8 79.13 384 24.95 384C14.97 384 5.93 378.1 2.018 368.9C-1.896 359.7-.0074 349.1 6.739 341.9C7.26 341.5 29.38 317.4 45.73 285.9C17.18 255.8 0 217.6 0 176C0 78.8 93.13 0 208 0zM164.6 298.1C179.2 302.3 193.8 304 208 304C296.2 304 368 246.6 368 176C368 105.4 296.2 48 208 48C119.8 48 48 105.4 48 176C48 211.2 65.71 237.2 80.57 252.9L104.1 277.8L88.31 308.1C84.74 314.1 80.73 321.9 76.55 328.5C94.26 323.4 111.7 315.5 128.7 304.1L145.4 294.6L164.6 298.1zM441.6 128.2C552 132.4 640 209.5 640 304C640 345.6 622.8 383.8 594.3 413.9C610.6 445.4 632.7 469.5 633.3 469.9C640 477.1 641.9 487.7 637.1 496.9C634.1 506.1 625 512 615 512C560.9 512 516.7 492.8 486.1 473.8C468.8 477.7 450.7 480 432 480C350 480 279.1 439.8 245.2 381.5C262.5 379.2 279.1 375.3 294.9 369.9C322.9 407.1 373.9 432 432 432C446.2 432 460.8 430.3 475.4 426.1L494.6 422.6L511.3 432.1C528.3 443.5 545.7 451.4 563.5 456.5C559.3 449.9 555.3 442.1 551.7 436.1L535.9 405.8L559.4 380.9C574.3 365.3 592 339.2 592 304C592 237.7 528.7 183.1 447.1 176.6L448 176C448 159.5 445.8 143.5 441.6 128.2H441.6z\"]\n};\nvar faPaste = {\n prefix: 'far',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M80 96v16c0 17.7 14.3 32 32 32h60.8c16.6-28.7 47.6-48 83.2-48h62c-7.1-27.6-32.2-48-62-48H215.4C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48H64C28.7 48 0 76.7 0 112V384c0 35.3 28.7 64 64 64h96V400H64c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H80zm64-40a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM256 464c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H384v48c0 17.7 14.3 32 32 32h48V448c0 8.8-7.2 16-16 16H256zm192 48c35.3 0 64-28.7 64-64V227.9c0-12.7-5.1-24.9-14.1-33.9l-51.9-51.9c-9-9-21.2-14.1-33.9-14.1H256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H448z\"]\n};\nvar faFileClipboard = faPaste;\nvar faFaceGrinTongueSquint = {\n prefix: 'far',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M116 157.1C116 148.2 125.6 142.4 133.5 146.7L223.4 194.6C234.1 200.3 234.1 215.7 223.4 221.4L133.5 269.3C125.6 273.6 116 267.8 116 258.9C116 256.1 116.1 253.4 118.8 251.2L154.8 208L118.8 164.8C116.1 162.6 116 159.9 116 157.1V157.1zM378.5 146.7C386.4 142.4 396 148.2 396 157.1C396 159.9 395 162.6 393.2 164.8L357.2 208L393.2 251.2C395 253.4 396 256.1 396 258.9C396 267.8 386.4 273.6 378.5 269.3L288.6 221.4C277.9 215.7 277.9 200.3 288.6 194.6L378.5 146.7zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 337.7 95.13 408.4 163.7 442.4C161.3 434 160 425.2 160 416V392.7C135.1 375.1 116.9 351.3 105.2 323.5C100.2 311.7 112.2 301 124.5 304.8C164.1 316.9 208.9 323.8 256.3 323.8C303.7 323.8 348.4 316.9 388.1 304.8C400.4 301 412.4 311.7 407.4 323.5C395.6 351.5 376.3 375.5 352 393.1V416C352 425.2 350.7 434 348.3 442.4C416.9 408.4 464 337.7 464 255.1C464 141.1 370.9 47.1 256 47.1L256 48zM320 416V378.6C320 363.9 308.1 352 293.4 352H291.4C280.1 352 270.3 359.9 267.8 370.9C264.1 383.5 247 383.5 244.2 370.9C241.7 359.9 231.9 352 220.6 352H218.6C203.9 352 192 363.9 192 378.6V416C192 451.3 220.7 480 256 480C291.3 480 320 451.3 320 416z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faFaceFlushed = {\n prefix: 'far',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M320 336C333.3 336 344 346.7 344 360C344 373.3 333.3 384 320 384H192C178.7 384 168 373.3 168 360C168 346.7 178.7 336 192 336H320zM136.4 224C136.4 210.7 147.1 200 160.4 200C173.6 200 184.4 210.7 184.4 224C184.4 237.3 173.6 248 160.4 248C147.1 248 136.4 237.3 136.4 224zM80 224C80 179.8 115.8 144 160 144C204.2 144 240 179.8 240 224C240 268.2 204.2 304 160 304C115.8 304 80 268.2 80 224zM160 272C186.5 272 208 250.5 208 224C208 197.5 186.5 176 160 176C133.5 176 112 197.5 112 224C112 250.5 133.5 272 160 272zM376.4 224C376.4 237.3 365.6 248 352.4 248C339.1 248 328.4 237.3 328.4 224C328.4 210.7 339.1 200 352.4 200C365.6 200 376.4 210.7 376.4 224zM432 224C432 268.2 396.2 304 352 304C307.8 304 272 268.2 272 224C272 179.8 307.8 144 352 144C396.2 144 432 179.8 432 224zM352 176C325.5 176 304 197.5 304 224C304 250.5 325.5 272 352 272C378.5 272 400 250.5 400 224C400 197.5 378.5 176 352 176zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faSquareCaretRight = {\n prefix: 'far',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M200.3 142.4C193.3 135.9 183.1 134.2 174.4 138C165.7 141.8 160 150.5 160 159.1v192C160 361.5 165.7 370.2 174.4 374c8.719 3.812 18.91 2.094 25.91-4.375l104-96C309.2 269.1 312 262.7 312 256s-2.812-13.09-7.719-17.62L200.3 142.4zM384 32H64C28.66 32 0 60.66 0 96v320c0 35.34 28.66 64 64 64h320c35.34 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16V416z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faSquareMinus = {\n prefix: 'far',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M312 232C325.3 232 336 242.7 336 256C336 269.3 325.3 280 312 280H136C122.7 280 112 269.3 112 256C112 242.7 122.7 232 136 232H312zM0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80H64C55.16 80 48 87.16 48 96z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faCompass = {\n prefix: 'far',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M306.7 325.1L162.4 380.6C142.1 388.1 123.9 369 131.4 349.6L186.9 205.3C190.1 196.8 196.8 190.1 205.3 186.9L349.6 131.4C369 123.9 388.1 142.1 380.6 162.4L325.1 306.7C321.9 315.2 315.2 321.9 306.7 325.1V325.1zM255.1 224C238.3 224 223.1 238.3 223.1 256C223.1 273.7 238.3 288 255.1 288C273.7 288 288 273.7 288 256C288 238.3 273.7 224 255.1 224V224zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'far',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M320 192H128C118.5 192 109.8 197.7 105.1 206.4C102.2 215.1 103.9 225.3 110.4 232.3l96 104C210.9 341.2 217.3 344 224 344s13.09-2.812 17.62-7.719l96-104c6.469-7 8.188-17.19 4.375-25.91C338.2 197.7 329.5 192 320 192zM384 32H64C28.65 32 0 60.66 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.178 16-16 16H64c-8.822 0-16-7.18-16-16V96c0-8.82 7.178-16 16-16h320c8.822 0 16 7.18 16 16V416z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFaceKissBeam = {\n prefix: 'far',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M304.7 297.7C308.9 302.8 312 309.1 312 316C312 322.9 308.9 329.2 304.7 334.3C300.4 339.5 294.5 344 287.9 347.7C285.2 349.3 282.3 350.7 279.2 352C282.3 353.3 285.2 354.7 287.9 356.3C294.5 359.1 300.4 364.5 304.7 369.7C308.9 374.8 312 381.1 312 388C312 394.9 308.9 401.2 304.7 406.3C300.4 411.5 294.5 416 287.9 419.7C274.7 427.1 257.4 432 240 432C236.4 432 233.2 429.5 232.3 426C231.3 422.5 232.9 418.8 236.1 417L236.1 417L236.3 416.9C236.5 416.8 236.8 416.6 237.2 416.3C238 415.9 239.2 415.1 240.6 414.2C243.4 412.4 247.2 409.7 250.8 406.6C254.6 403.5 258 400 260.5 396.6C262.1 393 264 390.2 264 388C264 385.8 262.1 382.1 260.5 379.4C258 375.1 254.6 372.5 250.8 369.4C247.2 366.3 243.4 363.6 240.6 361.8C239.2 360.9 238 360.1 237.2 359.7C236.8 359.4 236.5 359.2 236.3 359.1L236.1 358.1L236.1 358.1C233.6 357.6 232 354.9 232 352C232 349.1 233.6 346.4 236.1 345L236.1 345L236.3 344.9C236.5 344.8 236.8 344.6 237.2 344.3C238 343.9 239.2 343.1 240.6 342.2C243.4 340.4 247.2 337.7 250.8 334.6C254.6 331.5 258 328.1 260.5 324.6C262.1 321 264 318.2 264 316C264 313.8 262.1 310.1 260.5 307.4C258 303.1 254.6 300.5 250.8 297.4C247.2 294.3 243.4 291.6 240.6 289.8C239.2 288.9 238 288.1 237.2 287.7C236.8 287.4 236.5 287.2 236.3 287.1L236.1 286.1L236.1 286.1C232.9 285.2 231.3 281.5 232.3 277.1C233.2 274.5 236.4 272 240 272C257.4 272 274.7 276.9 287.9 284.3C294.5 287.1 300.4 292.5 304.7 297.7L304.7 297.7zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faLightbulb = {\n prefix: 'far',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM192 0C90.02 .3203 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.8 289.2 .0039 192 0zM288.4 260.1c-15.66 17.85-35.04 46.3-49.05 75.89h-94.61c-14.01-29.59-33.39-58.04-49.04-75.88C75.24 236.8 64 206.1 64 175.1C64 113.3 112.1 48.25 191.1 48C262.6 48 320 105.4 320 175.1C320 206.1 308.8 236.8 288.4 260.1zM176 80C131.9 80 96 115.9 96 160c0 8.844 7.156 16 16 16S128 168.8 128 160c0-26.47 21.53-48 48-48c8.844 0 16-7.148 16-15.99S184.8 80 176 80z\"]\n};\nvar faFlag = {\n prefix: 'far',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24V64 350.5 400v88c0 13.3 10.7 24 24 24s24-10.7 24-24V388l80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52V24zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8V334.7l-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5v-237z\"]\n};\nvar faSquareCheck = {\n prefix: 'far',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M211.8 339.8C200.9 350.7 183.1 350.7 172.2 339.8L108.2 275.8C97.27 264.9 97.27 247.1 108.2 236.2C119.1 225.3 136.9 225.3 147.8 236.2L192 280.4L300.2 172.2C311.1 161.3 328.9 161.3 339.8 172.2C350.7 183.1 350.7 200.9 339.8 211.8L211.8 339.8zM0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80H64C55.16 80 48 87.16 48 96z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faCircleDot = {\n prefix: 'far',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M160 256C160 202.1 202.1 160 256 160C309 160 352 202.1 352 256C352 309 309 352 256 352C202.1 352 160 309 160 256zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'far',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M192 352C192 316.7 220.7 288 256 288C291.3 288 320 316.7 320 352C320 387.3 291.3 416 256 416C220.7 416 192 387.3 192 352zM103 135C112.4 125.7 127.6 125.7 136.1 135L160 158.1L183 135C192.4 125.7 207.6 125.7 216.1 135C226.3 144.4 226.3 159.6 216.1 168.1L193.9 192L216.1 215C226.3 224.4 226.3 239.6 216.1 248.1C207.6 258.3 192.4 258.3 183 248.1L160 225.9L136.1 248.1C127.6 258.3 112.4 258.3 103 248.1C93.66 239.6 93.66 224.4 103 215L126.1 192L103 168.1C93.66 159.6 93.66 144.4 103 135V135zM295 135C304.4 125.7 319.6 125.7 328.1 135L352 158.1L375 135C384.4 125.7 399.6 125.7 408.1 135C418.3 144.4 418.3 159.6 408.1 168.1L385.9 192L408.1 215C418.3 224.4 418.3 239.6 408.1 248.1C399.6 258.3 384.4 258.3 375 248.1L352 225.9L328.1 248.1C319.6 258.3 304.4 258.3 295 248.1C285.7 239.6 285.7 224.4 295 215L318.1 192L295 168.1C285.7 159.6 285.7 144.4 295 135V135zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faFutbol = {\n prefix: 'far',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M177.1 228.6L207.9 320h96.5l29.62-91.38L256 172.1L177.1 228.6zM255.1 0C114.6 0 .0001 114.6 .0001 256S114.6 512 256 512s255.1-114.6 255.1-255.1S397.4 0 255.1 0zM435.2 361.1l-103.9-1.578l-30.67 99.52C286.2 462.2 271.3 464 256 464s-30.19-1.773-44.56-4.93L180.8 359.6L76.83 361.1c-14.93-25.35-24.79-54.01-27.8-84.72L134.3 216.4L100.7 118.1c19.85-22.34 44.32-40.45 72.04-52.62L256 128l83.29-62.47c27.72 12.17 52.19 30.27 72.04 52.62L377.7 216.4l85.23 59.97C459.1 307.1 450.1 335.8 435.2 361.1z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPenToSquare = {\n prefix: 'far',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M373.1 24.97C401.2-3.147 446.8-3.147 474.9 24.97L487 37.09C515.1 65.21 515.1 110.8 487 138.9L289.8 336.2C281.1 344.8 270.4 351.1 258.6 354.5L158.6 383.1C150.2 385.5 141.2 383.1 135 376.1C128.9 370.8 126.5 361.8 128.9 353.4L157.5 253.4C160.9 241.6 167.2 230.9 175.8 222.2L373.1 24.97zM440.1 58.91C431.6 49.54 416.4 49.54 407 58.91L377.9 88L424 134.1L453.1 104.1C462.5 95.6 462.5 80.4 453.1 71.03L440.1 58.91zM203.7 266.6L186.9 325.1L245.4 308.3C249.4 307.2 252.9 305.1 255.8 302.2L390.1 168L344 121.9L209.8 256.2C206.9 259.1 204.8 262.6 203.7 266.6zM200 64C213.3 64 224 74.75 224 88C224 101.3 213.3 112 200 112H88C65.91 112 48 129.9 48 152V424C48 446.1 65.91 464 88 464H360C382.1 464 400 446.1 400 424V312C400 298.7 410.7 288 424 288C437.3 288 448 298.7 448 312V424C448 472.6 408.6 512 360 512H88C39.4 512 0 472.6 0 424V152C0 103.4 39.4 64 88 64H200z\"]\n};\nvar faEdit = faPenToSquare;\nvar faHourglassHalf = {\n prefix: 'far',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M0 24C0 10.75 10.75 0 24 0H360C373.3 0 384 10.75 384 24C384 37.25 373.3 48 360 48H352V66.98C352 107.3 335.1 145.1 307.5 174.5L225.9 256L307.5 337.5C335.1 366 352 404.7 352 445V464H360C373.3 464 384 474.7 384 488C384 501.3 373.3 512 360 512H24C10.75 512 0 501.3 0 488C0 474.7 10.75 464 24 464H32V445C32 404.7 48.01 366 76.52 337.5L158.1 256L76.52 174.5C48.01 145.1 32 107.3 32 66.98V48H24C10.75 48 0 37.25 0 24V24zM99.78 384H284.2C281 379.6 277.4 375.4 273.5 371.5L192 289.9L110.5 371.5C106.6 375.4 102.1 379.6 99.78 384H99.78zM284.2 128C296.1 110.4 304 89.03 304 66.98V48H80V66.98C80 89.03 87 110.4 99.78 128H284.2z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faEyeSlash = {\n prefix: 'far',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M150.7 92.77C195 58.27 251.8 32 320 32C400.8 32 465.5 68.84 512.6 112.6C559.4 156 590.7 207.1 605.5 243.7C608.8 251.6 608.8 260.4 605.5 268.3C592.1 300.6 565.2 346.1 525.6 386.7L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L150.7 92.77zM189.8 123.5L235.8 159.5C258.3 139.9 287.8 128 320 128C390.7 128 448 185.3 448 256C448 277.2 442.9 297.1 433.8 314.7L487.6 356.9C521.1 322.8 545.9 283.1 558.6 256C544.1 225.1 518.4 183.5 479.9 147.7C438.8 109.6 385.2 79.1 320 79.1C269.5 79.1 225.1 97.73 189.8 123.5L189.8 123.5zM394.9 284.2C398.2 275.4 400 265.9 400 255.1C400 211.8 364.2 175.1 320 175.1C319.3 175.1 318.7 176 317.1 176C319.3 181.1 320 186.5 320 191.1C320 202.2 317.6 211.8 313.4 220.3L394.9 284.2zM404.3 414.5L446.2 447.5C409.9 467.1 367.8 480 320 480C239.2 480 174.5 443.2 127.4 399.4C80.62 355.1 49.34 304 34.46 268.3C31.18 260.4 31.18 251.6 34.46 243.7C44 220.8 60.29 191.2 83.09 161.5L120.8 191.2C102.1 214.5 89.76 237.6 81.45 255.1C95.02 286 121.6 328.5 160.1 364.3C201.2 402.4 254.8 432 320 432C350.7 432 378.8 425.4 404.3 414.5H404.3zM192 255.1C192 253.1 192.1 250.3 192.3 247.5L248.4 291.7C258.9 312.8 278.5 328.6 302 333.1L358.2 378.2C346.1 381.1 333.3 384 319.1 384C249.3 384 191.1 326.7 191.1 255.1H192z\"]\n};\nvar faHand = {\n prefix: 'far',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M408 80c-3.994 0-7.91 .3262-11.73 .9551c-9.586-28.51-36.57-49.11-68.27-49.11c-6.457 0-12.72 .8555-18.68 2.457C296.6 13.73 273.9 0 248 0C222.1 0 199.3 13.79 186.6 34.44C180.7 32.85 174.5 32 168.1 32C128.4 32 96.01 64.3 96.01 104v121.6C90.77 224.6 85.41 224 80.01 224c-.0026 0 .0026 0 0 0C36.43 224 0 259.2 0 304.1c0 20.29 7.558 39.52 21.46 54.45l81.25 87.24C141.9 487.9 197.4 512 254.9 512h33.08C393.9 512 480 425.9 480 320V152C480 112.3 447.7 80 408 80zM432 320c0 79.41-64.59 144-143.1 144H254.9c-44.41 0-86.83-18.46-117.1-50.96l-79.76-85.63c-6.202-6.659-9.406-15.4-9.406-23.1c0-22.16 18.53-31.4 31.35-31.4c8.56 0 17.1 3.416 23.42 10.18l26.72 28.69C131.8 312.7 133.9 313.4 135.9 313.4c4.106 0 8.064-3.172 8.064-8.016V104c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24v152C192 264.8 199.2 272 208 272s15.1-7.163 15.1-15.1L224 72c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24v184C272 264.8 279.2 272 288 272s15.99-7.164 15.99-15.1l.0077-152.2c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24v152.2C352 264.8 359.2 272 368 272s15.1-7.163 15.1-15.1V152c0-13.25 10.75-24 23.1-24c13.25 0 23.1 10.75 23.1 24V320z\"]\n};\nvar faHandPaper = faHand;\nvar faHandSpock = {\n prefix: 'far',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M234.9 48.02c10.43 0 20.72 5.834 24.13 19.17l47.33 184.1c2.142 8.456 9.174 12.62 16.21 12.62c7.326 0 14.66-4.505 16.51-13.37l31.72-155.1c2.921-14.09 13.76-20.57 24.67-20.57c13.01 0 26.14 9.19 26.14 25.62c0 2.19-.2333 4.508-.7313 6.951l-28.48 139.2c-.2389 1.156-.3514 2.265-.3514 3.323c0 8.644 7.504 13.9 14.86 13.9c5.869 0 11.65-3.341 13.46-10.98l24.73-104.2c.2347-.9802 4.12-19.76 24.28-19.76c13.21 0 26.64 9.4 26.64 24.79c0 2.168-.2665 4.455-.8378 6.852l-48.06 204.7c-13.59 57.85-65.15 98.74-124.5 98.74l-48.79-.0234c-40.7-.0196-79.86-15.58-109.5-43.51l-75.93-71.55c-5.938-5.584-8.419-11.1-8.419-18.2c0-13.88 12.45-26.69 26.38-26.69c5.756 0 11.76 2.182 17.26 7.376l51.08 48.14c1.682 1.569 3.599 2.249 5.448 2.249c4.192 0 8.04-3.49 8.04-8.001c0-23.76-3.372-47.39-10.12-70.28L142 161.1C141.2 159.1 140.8 156.3 140.8 153.7c0-15.23 13.48-24.82 26.75-24.82c10.11 0 20.1 5.559 23.94 18.42l31.22 105.8c2.231 7.546 8.029 10.8 13.9 10.8c7.752 0 15.64-5.659 15.64-14.57c0-1.339-.1783-2.752-.562-4.23L209.3 80.06C208.7 77.45 208.3 74.97 208.3 72.62C208.3 57.33 221.7 48.02 234.9 48.02zM234.9 0C201.5 0 160.4 25.24 160.4 72.72c0 2.807 .1579 5.632 .4761 8.463C129.9 83.9 92.84 108.9 92.84 153.8c0 7.175 1.038 14.47 3.148 21.68l24.33 81.94C115.8 256.5 111.1 256 106.4 256C65.74 256 32 290.6 32 330.8c0 19.59 8.162 38.58 23.6 53.1l75.89 71.51c38.68 36.45 89.23 56.53 142.3 56.56L322.6 512c82.1 0 152.5-55.83 171.3-135.8l48.06-204.7C543.3 165.7 544 159.7 544 153.9c0-54.55-49.55-72.95-74.59-72.95c-.7689 0-1.534 .0117-2.297 .0352c-10.49-39.43-46.46-54.11-71.62-54.11c-34.1 0-64.45 24.19-71.63 58.83L319.2 108.5l-13.7-53.29C297.1 22.22 268.7 0 234.9 0z\"]\n};\nvar faFaceKiss = {\n prefix: 'far',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M304.7 281.7C308.9 286.8 312 293.1 312 300C312 306.9 308.9 313.2 304.7 318.3C300.4 323.5 294.5 328 287.9 331.7C285.2 333.3 282.3 334.7 279.2 336C282.3 337.3 285.2 338.7 287.9 340.3C294.5 343.1 300.4 348.5 304.7 353.7C308.9 358.8 312 365.1 312 372C312 378.9 308.9 385.2 304.7 390.3C300.4 395.5 294.5 400 287.9 403.7C274.7 411.1 257.4 416 240 416C236.4 416 233.2 413.5 232.3 410C231.3 406.5 232.9 402.8 236.1 401L236.1 401L236.3 400.9C236.5 400.8 236.8 400.6 237.2 400.3C238 399.9 239.2 399.1 240.6 398.2C243.4 396.4 247.2 393.7 250.8 390.6C254.6 387.5 258 384 260.5 380.6C262.1 377 264 374.2 264 372C264 369.8 262.1 366.1 260.5 363.4C258 359.1 254.6 356.5 250.8 353.4C247.2 350.3 243.4 347.6 240.6 345.8C239.2 344.9 238 344.1 237.2 343.7L236.5 343.2L236.3 343.1L236.1 342.1L236.1 342.1C233.6 341.6 232 338.9 232 336C232 333.1 233.6 330.4 236.1 329L236.1 329L236.3 328.9C236.5 328.8 236.8 328.6 237.2 328.3C238 327.9 239.2 327.1 240.6 326.2C243.4 324.4 247.2 321.7 250.8 318.6C254.6 315.5 258 312.1 260.5 308.6C262.1 305 264 302.2 264 300C264 297.8 262.1 294.1 260.5 291.4C258 287.1 254.6 284.5 250.8 281.4C247.2 278.3 243.4 275.6 240.6 273.8C239.2 272.9 238 272.1 237.2 271.7C236.8 271.4 236.5 271.2 236.3 271.1L236.1 270.1L236.1 270.1C232.9 269.2 231.3 265.5 232.3 261.1C233.2 258.5 236.4 256 240 256C257.4 256 274.7 260.9 287.9 268.3C294.5 271.1 300.4 276.5 304.7 281.7V281.7zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faKiss = faFaceKiss;\nvar faFaceGrinTongue = {\n prefix: 'far',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 337.7 95.13 408.4 163.7 442.4C161.3 434 160 425.2 160 416V363.6C151.1 355.6 143.3 346.5 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C368.6 346.4 360.8 355.5 352 363.5V416C352 425.2 350.7 434 348.3 442.4C416.9 408.4 464 337.7 464 256C464 141.1 370.9 48 255.1 48H256zM320 416V378.6C320 363.9 308.1 352 293.4 352H291.4C280.1 352 270.3 359.9 267.8 370.9C264.1 383.5 247 383.5 244.2 370.9C241.7 359.9 231.9 352 220.6 352H218.6C203.9 352 192 363.9 192 378.6V416C192 451.3 220.7 480 256 480C291.3 480 320 451.3 320 416z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'far',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M296 464H23.1C10.75 464 0 474.7 0 487.1S10.75 512 23.1 512h272C309.3 512 320 501.3 320 488S309.3 464 296 464zM0 304c0 51.63 30.12 85.25 64 96v32h48v-67.13l-33.5-10.63C63.75 349.5 48 333.9 48 304c0-84.1 93.2-206.5 112.6-206.5c19.63 0 60.01 67.18 70.28 85.8l-66.13 66.13c-3.125 3.125-4.688 7.219-4.688 11.31S161.6 268.9 164.8 272L176 283.2c3.125 3.125 7.219 4.688 11.31 4.688s8.188-1.562 11.31-4.688L253 229C264.4 256.8 272 283.5 272 304c0 29.88-15.75 45.5-30.5 50.25L208 364.9V432H256v-32c33.88-10.75 64-44.38 64-96c0-73.38-67.75-197.2-120.6-241.5C213.4 59.12 224 47 224 32c0-17.62-14.38-32-32-32H128C110.4 0 96 14.38 96 32c0 15 10.62 27.12 24.62 30.5C67.75 106.8 0 230.6 0 304z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'far',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM281.9 230.6C273.9 223 273.5 210.4 281 202.3C295.6 186.8 316.3 180 335.6 180C354.1 180 375.7 186.8 390.2 202.3C397.8 210.4 397.4 223 389.3 230.6C381.2 238.1 368.6 237.7 361 229.7C355.6 223.8 346.3 220 335.6 220C324.1 220 315.7 223.8 310.2 229.7C302.7 237.7 290 238.1 281.9 230.6zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faFaceGrinWide = {\n prefix: 'far',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM224 192C224 227.3 209.7 256 192 256C174.3 256 160 227.3 160 192C160 156.7 174.3 128 192 128C209.7 128 224 156.7 224 192zM288 192C288 156.7 302.3 128 320 128C337.7 128 352 156.7 352 192C352 227.3 337.7 256 320 256C302.3 256 288 227.3 288 192zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faFaceFrownOpen = {\n prefix: 'far',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M179.3 369.3C166.1 374.5 153.1 365.1 158.4 352.9C175.1 314.7 214.3 287.8 259.9 287.8C305.6 287.8 344.8 314.7 361.4 352.1C366.7 365.2 352.9 374.5 340.6 369.3C316.2 359 288.8 353.2 259.9 353.2C231 353.2 203.7 358.1 179.3 369.3L179.3 369.3zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'far',\n iconName: 'hand-point-up',\n icon: [448, 512, [9757], \"f0a6\", \"M376 192c-6.428 0-12.66 .8457-18.6 2.434C344.7 173.8 321.9 160 296 160c-6.428 0-12.66 .8457-18.6 2.434C264.7 141.8 241.9 128 216 128C213.3 128 210.6 128.1 208 128.4V72C208 32.3 175.7 0 136 0S64 32.3 64 72v196.3C44.51 284.5 32 308.8 32 336v49.88c0 32.1 17.1 61.65 44.63 77.12l55.83 31.35C153.1 505.9 176.4 512 199.8 512h107.9C385.1 512 448 447.4 448 368V264C448 224.3 415.7 192 376 192zM272 232c0-13.23 10.78-24 24-24S320 218.8 320 232v47.91C320 293.1 309.2 304 296 304S272 293.2 272 280V232zM192 200C192 186.8 202.8 176 216 176s24 10.77 24 24v48c0 3.029-.7012 5.875-1.73 8.545C227.9 251.3 216.4 248 204 248H192V200zM112 72c0-13.23 10.78-24 24-24S160 58.77 160 72v176H120c-2.686 0-5.217 .5566-7.84 .793C112.2 248.5 112 248.3 112 248V72zM307.7 464H199.8c-15.25 0-30.41-3.984-43.88-11.52l-55.78-31.34C87.72 414.2 80 400.6 80 385.9V336c0-22.06 17.94-40 40-40h84c15.44 0 28 12.56 28 28S219.4 352 204 352H152C138.8 352 128 362.8 128 376s10.75 24 24 24h52c33.23 0 61.25-21.58 71.54-51.36C282 350.7 288.9 352 296 352c5.041 0 9.836-1.166 14.66-2.178C322 374.6 346.1 392 376 392c7.684 0 14.94-1.557 21.87-3.836C388.9 431.4 351.9 464 307.7 464zM400 320c0 13.23-10.78 24-24 24S352 333.2 352 320V264c0-13.23 10.78-24 24-24s24 10.77 24 24V320z\"]\n};\nvar faBookmark = {\n prefix: 'far',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M336 0h-288C21.49 0 0 21.49 0 48v431.9c0 24.7 26.79 40.08 48.12 27.64L192 423.6l143.9 83.93C357.2 519.1 384 504.6 384 479.9V48C384 21.49 362.5 0 336 0zM336 452L192 368l-144 84V54C48 50.63 50.63 48 53.1 48h276C333.4 48 336 50.63 336 54V452z\"]\n};\nvar faHandPointDown = {\n prefix: 'far',\n iconName: 'hand-point-down',\n icon: [448, 512, [], \"f0a7\", \"M448 248V144C448 64.6 385.1 0 307.7 0H199.8C176.4 0 153.1 6.104 132.5 17.65L76.63 49C49.1 64.47 32 94.02 32 126.1V176c0 27.23 12.51 51.53 32 67.69V440C64 479.7 96.3 512 136 512s72-32.3 72-72v-56.44C210.6 383.9 213.3 384 216 384c25.95 0 48.73-13.79 61.4-34.43C283.3 351.2 289.6 352 296 352c25.95 0 48.73-13.79 61.4-34.43C363.3 319.2 369.6 320 376 320C415.7 320 448 287.7 448 248zM272 232c0-13.23 10.78-24 24-24S320 218.9 320 232.1V280c0 13.23-10.78 24-24 24S272 293.2 272 280V232zM192 264h12c12.39 0 23.93-3.264 34.27-8.545C239.3 258.1 240 260.1 240 264v48c0 13.23-10.78 24-24 24S192 325.2 192 312V264zM112 264c0-.2813 .1504-.5137 .1602-.793C114.8 263.4 117.3 264 120 264H160v176c0 13.23-10.78 24-24 24S112 453.2 112 440V264zM397.9 123.8C390.9 121.6 383.7 120 376 120c-29.04 0-53.96 17.37-65.34 42.18C305.8 161.2 301 160 296 160c-7.139 0-13.96 1.273-20.46 3.355C265.2 133.6 237.2 112 204 112H152C138.8 112 128 122.8 128 136S138.8 160 152 160h52c15.44 0 28 12.56 28 28S219.4 216 204 216H120C97.94 216 80 198.1 80 176V126.1c0-14.77 7.719-28.28 20.16-35.27l55.78-31.34C169.4 51.98 184.6 48 199.8 48h107.9C351.9 48 388.9 80.56 397.9 123.8zM400 248c0 13.23-10.78 24-24 24S352 261.2 352 248V192c0-13.23 10.78-24 24-24S400 178.8 400 192V248z\"]\n};\nvar faFolder = {\n prefix: 'far',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M447.1 96h-172.1L226.7 50.75C214.7 38.74 198.5 32 181.5 32H63.1c-35.35 0-64 28.66-64 64v320c0 35.34 28.65 64 64 64h384c35.35 0 64-28.66 64-64V160C511.1 124.7 483.3 96 447.1 96zM463.1 416c0 8.824-7.178 16-16 16h-384c-8.822 0-16-7.176-16-16V96c0-8.824 7.178-16 16-16h117.5c4.273 0 8.293 1.664 11.31 4.688L255.1 144h192c8.822 0 16 7.176 16 16V416z\"]\n};\nvar faFolderBlank = faFolder;\nvar faUser = {\n prefix: 'far',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M272 304h-96C78.8 304 0 382.8 0 480c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32C448 382.8 369.2 304 272 304zM48.99 464C56.89 400.9 110.8 352 176 352h96c65.16 0 119.1 48.95 127 112H48.99zM224 256c70.69 0 128-57.31 128-128c0-70.69-57.31-128-128-128S96 57.31 96 128C96 198.7 153.3 256 224 256zM224 48c44.11 0 80 35.89 80 80c0 44.11-35.89 80-80 80S144 172.1 144 128C144 83.89 179.9 48 224 48z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'far',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M384 32H64C28.66 32 0 60.66 0 96v320c0 35.34 28.66 64 64 64h320c35.34 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.18 16-16 16H64c-8.82 0-16-7.18-16-16V96c0-8.82 7.18-16 16-16h320c8.82 0 16 7.18 16 16V416zM273.6 138c-8.719-3.812-18.91-2.094-25.91 4.375l-104 96C138.8 242.9 136 249.3 136 256s2.812 13.09 7.719 17.62l104 96c7 6.469 17.19 8.188 25.91 4.375C282.3 370.2 288 361.5 288 352V160C288 150.5 282.3 141.8 273.6 138z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faStar = {\n prefix: 'far',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0L287.9 0zM287.9 78.95L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L276.6 387.5C283.7 383.7 292.2 383.7 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.9 78.95z\"]\n};\nvar faChessKnight = {\n prefix: 'far',\n iconName: 'chess-knight',\n icon: [384, 512, [9822], \"f441\", \"M44 320.6l14.5 6.5c-17.01 20.24-26.44 45.91-26.44 72.35C32.06 399.7 32.12 432 32.12 432h48v-32c0-24.75 14-47.5 36.13-58.63l38.13-23.37c13.25-6.625 21.75-20.25 21.75-35.13v-58.75l-15.37 9C155.6 235.8 151.9 240.4 150.5 245.9L143 271c-2.25 7.625-8 13.88-15.38 16.75L117.1 292C114 293.3 110.7 293.9 107.4 293.9c-3.626 0-7.263-.7514-10.66-2.254L63.5 276.9C54.12 272.6 48 263.2 48 252.9V140.5c0-5.125 2.125-10.12 5.75-13.88l7.375-7.375L49.5 96C48.5 94.12 48 92 48 89.88C48 84.38 52.38 80 57.88 80h105c86.75 0 156.1 70.38 156.1 157.1V432h48.06l-.0625-194.9C367.9 124 276 32 162.9 32H57.88C25.88 32 0 57.88 0 89.88c0 8.5 1.75 16.88 5.125 24.62C1.75 122.8 0 131.6 0 140.5v112.4C0 282.2 17.25 308.8 44 320.6zM80.12 164c0 11 8.875 20 20 20c11 0 20-9 20-20s-9-20-20-20C89 144 80.12 153 80.12 164zM360 464H23.1C10.75 464 0 474.7 0 487.1S10.75 512 23.1 512H360C373.3 512 384 501.3 384 488S373.3 464 360 464z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'far',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM223.4 178.6C234.1 184.3 234.1 199.7 223.4 205.4L133.5 253.3C125.6 257.6 116 251.8 116 242.9C116 240.1 116.1 237.4 118.8 235.2L154.8 192L118.8 148.8C116.1 146.6 116 143.9 116 141.1C116 132.2 125.6 126.4 133.5 130.7L223.4 178.6zM393.2 148.8L357.2 192L393.2 235.2C395 237.4 396 240.1 396 242.9C396 251.8 386.4 257.6 378.5 253.3L288.6 205.4C277.9 199.7 277.9 184.3 288.6 178.6L378.5 130.7C386.4 126.4 396 132.2 396 141.1C396 143.9 395 146.6 393.2 148.8V148.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faFaceLaugh = {\n prefix: 'far',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM208.4 192C208.4 209.7 194 224 176.4 224C158.7 224 144.4 209.7 144.4 192C144.4 174.3 158.7 160 176.4 160C194 160 208.4 174.3 208.4 192zM304.4 192C304.4 174.3 318.7 160 336.4 160C354 160 368.4 174.3 368.4 192C368.4 209.7 354 224 336.4 224C318.7 224 304.4 209.7 304.4 192zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'far',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M572.6 270.3l-96 192C471.2 473.2 460.1 480 447.1 480H64c-35.35 0-64-28.66-64-64V96c0-35.34 28.65-64 64-64h117.5c16.97 0 33.25 6.742 45.26 18.75L275.9 96H416c35.35 0 64 28.66 64 64v32h-48V160c0-8.824-7.178-16-16-16H256L192.8 84.69C189.8 81.66 185.8 80 181.5 80H64C55.18 80 48 87.18 48 96v288l71.16-142.3C124.6 230.8 135.7 224 147.8 224h396.2C567.7 224 583.2 249 572.6 270.3z\"]\n};\nvar faClipboard = {\n prefix: 'far',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M280 64h40c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64h40 9.6C121 27.5 153.3 0 192 0s71 27.5 78.4 64H280zM64 112c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H304v24c0 13.3-10.7 24-24 24H192 104c-13.3 0-24-10.7-24-24V112H64zm128-8a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faChessQueen = {\n prefix: 'far',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 112c30.88 0 56-25.12 56-56S286.9 0 256 0S199.1 25.12 199.1 56S225.1 112 256 112zM511.1 197.4c0-5.178-2.509-10.2-7.096-13.26L476.4 168.2c-2.5-1.75-5.497-2.62-8.497-2.62c-5.501 .125-10.63 2.87-13.75 7.245c-9.001 12-23.16 19.13-38.16 19.13c-3.125 0-6.089-.2528-9.089-.8778c-23.13-4.25-38.88-26.25-38.88-49.75C367.1 134 361.1 128 354.6 128h-38.75c-6.001 0-11.63 4-12.88 9.875C298.2 160.1 278.7 176 255.1 176c-22.75 0-42.25-15.88-47-38.12C207.7 132 202.2 128 196.1 128h-38.75C149.1 128 143.1 134 143.1 141.4c0 18.49-13.66 50.62-47.95 50.62c-15.13 0-29.3-7.118-38.3-19.24C54.6 168.4 49.66 165.7 44.15 165.6c-3 0-5.931 .8951-8.432 2.645l-28.63 16C2.509 187.2 0 192.3 0 197.4c0 2.438 .5583 4.901 1.72 7.185L109.9 432h53.13L69.85 236.4C78.35 238.8 87.11 240 95.98 240c2.432 0 56.83 1.503 84.76-52.5C198.1 210.5 226.6 224 255.9 224c29.38 0 57.01-13.38 75.26-36.25C336.1 197.6 360.6 240 416 240c8.751 0 17.5-1.125 26-3.5L349 432h53.13l108.1-227.4C511.4 202.3 511.1 199.8 511.1 197.4zM424 464H87.98c-13.26 0-24 10.75-24 23.1S74.72 512 87.98 512h336c13.26 0 24-10.75 24-23.1S437.3 464 424 464z\"]\n};\nvar faHandBackFist = {\n prefix: 'far',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M377.1 68.05C364.4 50.65 343.7 40 321.2 40h-13.53c-3.518 0-7.039 .2754-10.53 .8184C284.8 31.33 269.6 26 253.5 26H240c-3.977 0-7.904 .3691-11.75 1.084C216.7 10.71 197.6 0 176 0H160C124.7 0 96 28.65 96 64v49.71L63.04 143.3C43.3 160 32 184.6 32 210.9v78.97c0 32.1 17.11 61.65 44.65 77.12L112 386.9v101.1C112 501.3 122.7 512 135.1 512S160 501.3 160 488v-129.9c-1.316-.6543-2.775-.9199-4.062-1.639l-55.78-31.34C87.72 318.2 80 304.6 80 289.9V210.9c0-12.31 5.281-23.77 14.5-31.39L112 163.8V208C112 216.8 119.2 224 128 224s16-7.156 16-16V64c0-8.828 7.188-16 16-16h16C184.8 48 192 55.17 192 64v16c0 9.578 7.942 16.04 16.15 16.04c6.432 0 12.31-4.018 14.73-10.17C223.3 84.84 228.3 74 240 74h13.53c20.97 0 17.92 19.58 34.27 19.58c8.177 0 9.9-5.584 19.88-5.584h13.53c25.54 0 18.27 28.23 38.66 28.23c.1562 0 .3125-.002 .4668-.0078L375.4 116C388.1 116 400 127.7 400 142V272c0 36.15-19.54 67.32-48 83.69v132.3C352 501.3 362.7 512 375.1 512S400 501.3 400 488v-108.1C430.1 352.8 448 313.6 448 272V142C448 102.1 416.8 69.44 377.1 68.05z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'far',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M241.6 175.7C237.1 170.8 230.7 168 224 168S210.9 170.8 206.4 175.7l-96 104c-6.469 7-8.188 17.19-4.375 25.91C109.8 314.3 118.5 320 127.1 320h192c9.531 0 18.16-5.656 22-14.38c3.813-8.719 2.094-18.91-4.375-25.91L241.6 175.7zM384 32H64C28.65 32 0 60.66 0 96v320c0 35.34 28.65 64 64 64h320c35.35 0 64-28.66 64-64V96C448 60.66 419.3 32 384 32zM400 416c0 8.82-7.178 16-16 16H64c-8.822 0-16-7.18-16-16V96c0-8.82 7.178-16 16-16h320c8.822 0 16 7.18 16 16V416z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faChartBar = {\n prefix: 'far',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M24 32C37.25 32 48 42.75 48 56V408C48 421.3 58.75 432 72 432H488C501.3 432 512 442.7 512 456C512 469.3 501.3 480 488 480H72C32.24 480 0 447.8 0 408V56C0 42.75 10.75 32 24 32zM128 136C128 122.7 138.7 112 152 112H360C373.3 112 384 122.7 384 136C384 149.3 373.3 160 360 160H152C138.7 160 128 149.3 128 136zM296 208C309.3 208 320 218.7 320 232C320 245.3 309.3 256 296 256H152C138.7 256 128 245.3 128 232C128 218.7 138.7 208 152 208H296zM424 304C437.3 304 448 314.7 448 328C448 341.3 437.3 352 424 352H152C138.7 352 128 341.3 128 328C128 314.7 138.7 304 152 304H424z\"]\n};\nvar faBarChart = faChartBar;\nvar faWindowRestore = {\n prefix: 'far',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 48H208C190.3 48 176 62.33 176 80V96H128V80C128 35.82 163.8 0 208 0H432C476.2 0 512 35.82 512 80V304C512 348.2 476.2 384 432 384H416V336H432C449.7 336 464 321.7 464 304V80C464 62.33 449.7 48 432 48zM320 128C355.3 128 384 156.7 384 192V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V192C0 156.7 28.65 128 64 128H320zM64 464H320C328.8 464 336 456.8 336 448V256H48V448C48 456.8 55.16 464 64 464z\"]\n};\nvar faSquarePlus = {\n prefix: 'far',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M200 344V280H136C122.7 280 112 269.3 112 256C112 242.7 122.7 232 136 232H200V168C200 154.7 210.7 144 224 144C237.3 144 248 154.7 248 168V232H312C325.3 232 336 242.7 336 256C336 269.3 325.3 280 312 280H248V344C248 357.3 237.3 368 224 368C210.7 368 200 357.3 200 344zM0 96C0 60.65 28.65 32 64 32H384C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80H64C55.16 80 48 87.16 48 96z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faImage = {\n prefix: 'far',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M152 120c-26.51 0-48 21.49-48 48s21.49 48 48 48s48-21.49 48-48S178.5 120 152 120zM447.1 32h-384C28.65 32-.0091 60.65-.0091 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96C511.1 60.65 483.3 32 447.1 32zM463.1 409.3l-136.8-185.9C323.8 218.8 318.1 216 312 216c-6.113 0-11.82 2.768-15.21 7.379l-106.6 144.1l-37.09-46.1c-3.441-4.279-8.934-6.809-14.77-6.809c-5.842 0-11.33 2.529-14.78 6.809l-75.52 93.81c0-.0293 0 .0293 0 0L47.99 96c0-8.822 7.178-16 16-16h384c8.822 0 16 7.178 16 16V409.3z\"]\n};\nvar faFolderClosed = {\n prefix: 'far',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 96h-172.1L226.7 50.75C214.7 38.74 198.5 32 181.5 32H64C28.65 32 0 60.66 0 96v320c0 35.34 28.65 64 64 64h384c35.35 0 64-28.66 64-64V160C512 124.7 483.3 96 448 96zM64 80h117.5c4.273 0 8.293 1.664 11.31 4.688L256 144h192c8.822 0 16 7.176 16 16v32h-416V96C48 87.18 55.18 80 64 80zM448 432H64c-8.822 0-16-7.176-16-16V240h416V416C464 424.8 456.8 432 448 432z\"]\n};\nvar faLemon = {\n prefix: 'far',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M439.9 144.6c15.34-26.38 8.372-62.41-16.96-87.62c-25.21-25.32-61.22-32.26-87.61-16.95c-9.044 5.218-27.15 3.702-48.08 1.968c-50.78-4.327-127.4-10.73-207.6 69.56C-.6501 191.9 5.801 268.5 10.07 319.3c1.749 20.96 3.28 39.07-1.984 48.08c-15.35 26.4-8.357 62.45 16.92 87.57c16.26 16.37 37.05 25.09 56.83 25.09c10.89 0 21.46-2.64 30.83-8.092c9.013-5.249 27.12-3.718 48.08-1.968c50.69 4.233 127.4 10.7 207.6-69.56c80.27-80.28 73.82-156.9 69.56-207.7C436.2 171.8 434.7 153.7 439.9 144.6zM398.4 120.5c-12.87 22.09-10.67 48.41-8.326 76.25c4.155 49.3 8.841 105.2-55.67 169.7c-64.53 64.49-120.5 59.78-169.7 55.68c-27.85-2.328-54.12-4.53-76.26 8.311c-6.139 3.64-19.17 1.031-29.58-9.451c-10.39-10.33-12.95-23.35-9.372-29.49c12.87-22.09 10.67-48.41 8.326-76.25C53.72 265.1 49.04 210.1 113.5 145.5c48.27-48.27 91.71-57.8 131.2-57.8c13.28 0 26.12 1.078 38.52 2.125c27.9 2.359 54.17 4.561 76.26-8.311c6.123-3.577 19.18-1.031 29.49 9.357C399.4 101.2 402 114.4 398.4 120.5zM239.5 124.1c2.156 8.561-3.062 17.25-11.62 19.43C183.6 154.7 122.7 215.6 111.6 259.9C109.7 267.1 103.2 271.1 96.05 271.1c-1.281 0-2.593-.1562-3.905-.4687C83.58 269.3 78.4 260.6 80.52 252.1C94.67 195.8 163.8 126.7 220.1 112.5C228.8 110.4 237.3 115.5 239.5 124.1z\"]\n};\nvar faHandshake = {\n prefix: 'far',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M506.1 127.1c-17.97-20.17-61.46-61.65-122.7-71.1c-22.5-3.354-45.39 3.606-63.41 18.21C302 60.47 279.1 53.42 256.5 56.86C176.8 69.17 126.7 136.2 124.6 139.1c-7.844 10.69-5.531 25.72 5.125 33.57c4.281 3.157 9.281 4.657 14.19 4.657c7.406 0 14.69-3.375 19.38-9.782c.4062-.5626 40.19-53.91 100.5-63.23c7.457-.9611 14.98 .67 21.56 4.483L227.2 168.2C214.8 180.5 207.1 196.1 207.1 214.5c0 17.5 6.812 33.94 19.16 46.29C239.5 273.2 255.9 279.1 273.4 279.1s33.94-6.813 46.31-19.19l11.35-11.35l124.2 100.9c2.312 1.875 2.656 5.251 .5 7.97l-27.69 35.75c-1.844 2.25-5.25 2.594-7.156 1.063l-22.22-18.69l-26.19 27.75c-2.344 2.875-5.344 3.563-6.906 3.719c-1.656 .1562-4.562 .125-6.812-1.719l-32.41-27.66L310.7 392.3l-2.812 2.938c-5.844 7.157-14.09 11.66-23.28 12.6c-9.469 .8126-18.25-1.75-24.5-6.782L170.3 319.8H96V128.3L0 128.3v255.6l64 .0404c11.74 0 21.57-6.706 27.14-16.14h60.64l77.06 69.66C243.7 449.6 261.9 456 280.8 456c2.875 0 5.781-.125 8.656-.4376c13.62-1.406 26.41-6.063 37.47-13.5l.9062 .8126c12.03 9.876 27.28 14.41 42.69 12.78c13.19-1.375 25.28-7.032 33.91-15.35c21.09 8.188 46.09 2.344 61.25-16.47l27.69-35.75c18.47-22.82 14.97-56.48-7.844-75.01l-120.3-97.76l8.381-8.382c9.375-9.376 9.375-24.57 0-33.94c-9.375-9.376-24.56-9.376-33.94 0L285.8 226.8C279.2 233.5 267.7 233.5 261.1 226.8c-3.312-3.282-5.125-7.657-5.125-12.31c0-4.688 1.812-9.064 5.281-12.53l85.91-87.64c7.812-7.845 18.53-11.75 28.94-10.03c59.75 9.22 100.2 62.73 100.6 63.29c3.088 4.155 7.264 6.946 11.84 8.376H544v175.1c0 17.67 14.33 32.05 31.1 32.05L640 384V128.1L506.1 127.1zM48 352c-8.75 0-16-7.245-16-15.99c0-8.876 7.25-15.99 16-15.99S64 327.2 64 336.1C64 344.8 56.75 352 48 352zM592 352c-8.75 0-16-7.245-16-15.99c0-8.876 7.25-15.99 16-15.99s16 7.117 16 15.99C608 344.8 600.8 352 592 352z\"]\n};\nvar faGem = {\n prefix: 'far',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M168.5 72L256 165l87.5-93h-175zM383.9 99.1L311.5 176h129L383.9 99.1zm50 124.9H256 78.1L256 420.3 433.9 224zM71.5 176h129L128.1 99.1 71.5 176zm434.3 40.1l-232 256c-4.6 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4z\"]\n};\nvar faCirclePlay = {\n prefix: 'far',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M188.3 147.1C195.8 142.8 205.1 142.1 212.5 147.5L356.5 235.5C363.6 239.9 368 247.6 368 256C368 264.4 363.6 272.1 356.5 276.5L212.5 364.5C205.1 369 195.8 369.2 188.3 364.9C180.7 360.7 176 352.7 176 344V167.1C176 159.3 180.7 151.3 188.3 147.1V147.1zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faCircleCheck = {\n prefix: 'far',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M243.8 339.8C232.9 350.7 215.1 350.7 204.2 339.8L140.2 275.8C129.3 264.9 129.3 247.1 140.2 236.2C151.1 225.3 168.9 225.3 179.8 236.2L224 280.4L332.2 172.2C343.1 161.3 360.9 161.3 371.8 172.2C382.7 183.1 382.7 200.9 371.8 211.8L243.8 339.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'far',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M328 160h-144C170.8 160 160 170.8 160 184v144C160 341.2 170.8 352 184 352h144c13.2 0 24-10.8 24-24v-144C352 170.8 341.2 160 328 160zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faIdBadge = {\n prefix: 'far',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M320 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h256c35.35 0 64-28.65 64-64V64C384 28.65 355.3 0 320 0zM336 448c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16V64c0-8.838 7.164-16 16-16h64V64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V48h64c8.836 0 16 7.162 16 16V448zM192 288c35.35 0 64-28.65 64-64s-28.65-64-64-64C156.7 160 128 188.7 128 224S156.7 288 192 288zM224 320H160c-44.18 0-80 35.82-80 80C80 408.8 87.16 416 96 416h192c8.836 0 16-7.164 16-16C304 355.8 268.2 320 224 320z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'far',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faRegistered = {\n prefix: 'far',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM352 208c0-44.13-35.88-80-80-80L184 128c-13.25 0-24 10.75-24 24v208c0 13.25 10.75 24 24 24s24-10.75 24-24v-72h59.79l38.46 82.19C310.3 378.9 319 384 328 384c3.438 0 6.875-.7187 10.19-2.25c12-5.625 17.16-19.91 11.56-31.94l-34.87-74.5C337.1 261.1 352 236.3 352 208zM272 240h-64v-64h64c17.66 0 32 14.34 32 32S289.7 240 272 240z\"]\n};\nvar faAddressCard = {\n prefix: 'far',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M208 256c35.35 0 64-28.65 64-64c0-35.35-28.65-64-64-64s-64 28.65-64 64C144 227.3 172.7 256 208 256zM464 232h-96c-13.25 0-24 10.75-24 24s10.75 24 24 24h96c13.25 0 24-10.75 24-24S477.3 232 464 232zM240 288h-64C131.8 288 96 323.8 96 368C96 376.8 103.2 384 112 384h192c8.836 0 16-7.164 16-16C320 323.8 284.2 288 240 288zM464 152h-96c-13.25 0-24 10.75-24 24s10.75 24 24 24h96c13.25 0 24-10.75 24-24S477.3 152 464 152zM512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 416c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V96c0-8.822 7.178-16 16-16h448c8.822 0 16 7.178 16 16V416z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faFaceTired = {\n prefix: 'far',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M176.5 320.3C196.1 302.1 223.8 288 256 288C288.2 288 315.9 302.1 335.5 320.3C354.5 338.1 368 362 368 384C368 389.4 365.3 394.4 360.8 397.4C356.2 400.3 350.5 400.8 345.6 398.7L328.4 391.1C305.6 381.2 280.9 376 256 376C231.1 376 206.4 381.2 183.6 391.1L166.4 398.7C161.5 400.8 155.8 400.3 151.2 397.4C146.7 394.4 144 389.4 144 384C144 362 157.5 338.1 176.5 320.3zM223.4 194.6C234.1 200.3 234.1 215.7 223.4 221.4L133.5 269.3C125.6 273.6 116 267.8 116 258.9C116 256.1 116.1 253.4 118.8 251.2L154.8 208L118.8 164.8C116.1 162.6 116 159.9 116 157.1C116 148.2 125.6 142.4 133.5 146.7L223.4 194.6zM393.2 164.8L357.2 208L393.2 251.2C395 253.4 396 256.1 396 258.9C396 267.8 386.4 273.6 378.5 269.3L288.6 221.4C277.9 215.7 277.9 200.3 288.6 194.6L378.5 146.7C386.4 142.4 396 148.2 396 157.1C396 159.9 395 162.6 393.2 164.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faTired = faFaceTired;\nvar faFontAwesome = {\n prefix: 'far',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384c-63.09 22.54-82.34 32-119.5 32c-62.82 0-86.6-32-149.3-32c-21.69 0-38.48 3.791-53.74 8.766C110.1 397.5 96 386.1 96 371.7v-.7461c0-9.275 5.734-17.6 14.42-20.86C129.1 342.8 150.2 336 179.2 336c62.73 0 86.51 32 149.3 32c25.5 0 42.85-4.604 71.47-14.7v-240C379.2 120.6 357.7 128 328.5 128c-.0039 0 .0039 0 0 0c-62.81 0-86.61-32-149.3-32C122.1 96 98.8 122.1 48 126.1V456C48 469.3 37.25 480 24 480S0 469.3 0 456V56C0 42.74 10.75 32 24 32S48 42.74 48 56v22.99C98.8 74.14 122.1 48 179.2 48c62.77 0 86.45 32 149.3 32C366.1 80 386.8 69.85 448 48z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faFaceSmileWink = {\n prefix: 'far',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 352C293.2 352 319.2 334.5 334.4 318.1C343.3 308.4 358.5 307.7 368.3 316.7C378 325.7 378.6 340.9 369.6 350.6C347.7 374.5 309.7 400 256 400C202.3 400 164.3 374.5 142.4 350.6C133.4 340.9 133.1 325.7 143.7 316.7C153.5 307.7 168.7 308.4 177.6 318.1C192.8 334.5 218.8 352 256 352zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM281.9 230.6C273.9 223 273.5 210.4 281 202.3C295.6 186.8 316.3 180 335.6 180C354.1 180 375.7 186.8 390.2 202.3C397.8 210.4 397.4 223 389.3 230.6C381.2 238.1 368.6 237.7 361 229.7C355.6 223.8 346.3 220 335.6 220C324.1 220 315.7 223.8 310.2 229.7C302.7 237.7 290 238.1 281.9 230.6zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'far',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM214.6 248C211.3 238.4 202.2 232 192 232s-19.25 6.406-22.62 16L144.7 318.1l-25.89-77.66C114.6 227.8 101 221.2 88.41 225.2C75.83 229.4 69.05 243 73.23 255.6l48 144C124.5 409.3 133.5 415.9 143.8 416c10.17 0 19.45-6.406 22.83-16L192 328.1L217.4 400C220.8 409.6 229.8 416 240 416c10.27-.0938 19.53-6.688 22.77-16.41l48-144c4.188-12.59-2.594-26.16-15.17-30.38c-12.61-4.125-26.2 2.594-30.36 15.19l-25.89 77.66L214.6 248z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'far',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM200 224H128C119.2 224 112 231.2 112 240v168c0 13.25 10.75 24 24 24S160 421.3 160 408v-32h44c44.21 0 79.73-37.95 75.69-82.98C276.1 253.2 240 224 200 224zM204 328H160V272h44c15.44 0 28 12.56 28 28S219.4 328 204 328z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'far',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M493.6 163c-24.88-19.62-45.5-35.37-164.3-121.6C312.7 29.21 279.7 0 256.4 0H255.6C232.3 0 199.3 29.21 182.6 41.38C63.88 127.6 43.25 143.4 18.38 163C6.75 172 0 186 0 200.8v247.2C0 483.3 28.65 512 64 512h384c35.35 0 64-28.67 64-64.01V200.8C512 186 505.3 172 493.6 163zM464 448c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V276.7l136.1 113.4C204.3 406.8 229.8 416 256 416s51.75-9.211 71.97-26.01L464 276.7V448zM464 214.2l-166.8 138.1c-23.19 19.28-59.34 19.27-82.47 .0156L48 214.2l.1055-13.48c23.24-18.33 42.25-32.97 162.9-120.6c3.082-2.254 6.674-5.027 10.63-8.094C229.4 65.99 246.7 52.59 256 48.62c9.312 3.973 26.62 17.37 34.41 23.41c3.959 3.066 7.553 5.84 10.76 8.186C421.6 167.7 440.7 182.4 464 200.8V214.2z\"]\n};\nvar faFileZipper = {\n prefix: 'far',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0L64-.0001c-35.35 0-64 28.65-64 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h48V64h64V48.13h48.01L224 128c0 17.67 14.33 32 32 32h79.1V448zM176 96h-64v32h64V96zM176 160h-64v32h64V160zM176 224h-64l-30.56 116.5C73.51 379.5 103.7 416 144.3 416c40.26 0 70.45-36.3 62.68-75.15L176 224zM160 368H128c-8.836 0-16-7.164-16-16s7.164-16 16-16h32c8.836 0 16 7.164 16 16S168.8 368 160 368z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'far',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M384 32C419.3 32 448 60.65 448 96V416C448 451.3 419.3 480 384 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H384zM384 80H64C55.16 80 48 87.16 48 96V416C48 424.8 55.16 432 64 432H384C392.8 432 400 424.8 400 416V96C400 87.16 392.8 80 384 80z\"]\n};\nvar faSnowflake = {\n prefix: 'far',\n iconName: 'snowflake',\n icon: [512, 512, [10052, 10054], \"f2dc\", \"M484.4 294.4c1.715 6.402 .6758 12.89-2.395 18.21s-8.172 9.463-14.57 11.18l-31.46 8.43l32.96 19.03C480.4 357.8 484.4 372.5 477.8 384s-21.38 15.41-32.86 8.783l-32.96-19.03l8.43 31.46c3.432 12.81-4.162 25.96-16.97 29.39s-25.96-4.162-29.39-16.97l-20.85-77.82L280 297.6v84.49l56.97 56.97c9.375 9.375 9.375 24.56 0 33.94C332.3 477.7 326.1 480 320 480s-12.28-2.344-16.97-7.031L280 449.9V488c0 13.25-10.75 24-24 24s-24-10.75-24-24v-38.06l-23.03 23.03c-9.375 9.375-24.56 9.375-33.94 0s-9.375-24.56 0-33.94L232 382.1V297.6l-73.17 42.25l-20.85 77.82c-3.432 12.81-16.58 20.4-29.39 16.97s-20.4-16.58-16.97-29.39l8.43-31.46l-32.96 19.03C55.61 399.4 40.85 395.5 34.22 384s-2.615-26.16 8.859-32.79l32.96-19.03l-31.46-8.43c-12.81-3.432-20.4-16.58-16.97-29.39s16.58-20.4 29.39-16.97l77.82 20.85L208 255.1L134.8 213.8L57.01 234.6C44.2 238 31.05 230.4 27.62 217.6s4.162-25.96 16.97-29.39l31.46-8.432L43.08 160.8C31.61 154.2 27.6 139.5 34.22 128s21.38-15.41 32.86-8.785l32.96 19.03L91.62 106.8C88.18 93.98 95.78 80.83 108.6 77.39s25.96 4.162 29.39 16.97l20.85 77.82L232 214.4V129.9L175 72.97c-9.375-9.375-9.375-24.56 0-33.94s24.56-9.375 33.94 0L232 62.06V24C232 10.75 242.8 0 256 0s24 10.75 24 24v38.06l23.03-23.03c9.375-9.375 24.56-9.375 33.94 0s9.375 24.56 0 33.94L280 129.9v84.49l73.17-42.25l20.85-77.82c3.432-12.81 16.58-20.4 29.39-16.97c6.402 1.715 11.5 5.861 14.57 11.18s4.109 11.81 2.395 18.21l-8.43 31.46l32.96-19.03C456.4 112.6 471.2 116.5 477.8 128s2.615 26.16-8.859 32.78l-32.96 19.03l31.46 8.432c12.81 3.432 20.4 16.58 16.97 29.39s-16.58 20.4-29.39 16.97l-77.82-20.85L304 255.1l73.17 42.25l77.82-20.85C467.8 273.1 480.1 281.6 484.4 294.4z\"]\n};\nvar faNewspaper = {\n prefix: 'far',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M456 32h-304C121.1 32 96 57.13 96 88v320c0 13.22-10.77 24-24 24S48 421.2 48 408V112c0-13.25-10.75-24-24-24S0 98.75 0 112v296C0 447.7 32.3 480 72 480h352c48.53 0 88-39.47 88-88v-304C512 57.13 486.9 32 456 32zM464 392c0 22.06-17.94 40-40 40H139.9C142.5 424.5 144 416.4 144 408v-320c0-4.406 3.594-8 8-8h304c4.406 0 8 3.594 8 8V392zM264 272h-64C186.8 272 176 282.8 176 296S186.8 320 200 320h64C277.3 320 288 309.3 288 296S277.3 272 264 272zM408 272h-64C330.8 272 320 282.8 320 296S330.8 320 344 320h64c13.25 0 24-10.75 24-24S421.3 272 408 272zM264 352h-64c-13.25 0-24 10.75-24 24s10.75 24 24 24h64c13.25 0 24-10.75 24-24S277.3 352 264 352zM408 352h-64C330.8 352 320 362.8 320 376s10.75 24 24 24h64c13.25 0 24-10.75 24-24S421.3 352 408 352zM400 112h-192c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64C432 126.3 417.7 112 400 112z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'far',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M345.3 472.1C347.3 479.7 350.9 486.4 355.7 491.8C325.1 504.8 291.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 285.3 507.1 313.4 498 339.7C486.9 334.1 474.5 333.1 461.8 334.6C459.7 329.4 457 324.6 453.9 320.1C460.5 299.9 464 278.4 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C285.4 464 313.5 457.9 338.9 446.8L345.3 472.1zM288.7 334.3C284.4 339.5 278.5 344 271.9 347.7C269.2 349.3 266.3 350.7 263.2 352C266.3 353.3 269.2 354.7 271.9 356.3C278.5 359.1 284.4 364.5 288.7 369.7C292.9 374.8 296 381.1 296 388C296 394.9 292.9 401.2 288.7 406.3C284.4 411.5 278.5 416 271.9 419.7C258.7 427.1 241.4 432 224 432C220.4 432 217.2 429.5 216.3 426C215.3 422.5 216.9 418.8 220.1 417L220.1 417L220.3 416.9C220.5 416.8 220.8 416.6 221.2 416.3C222 415.9 223.2 415.1 224.6 414.2C227.4 412.4 231.2 409.7 234.8 406.6C238.6 403.5 242 400 244.5 396.6C246.1 393 248 390.2 248 388C248 385.8 246.1 382.1 244.5 379.4C242 375.1 238.6 372.5 234.8 369.4C231.2 366.3 227.4 363.6 224.6 361.8C223.2 360.9 222 360.1 221.2 359.7C220.8 359.4 220.5 359.2 220.3 359.1L220.1 358.1L220.1 358.1C217.6 357.6 216 354.9 216 352C216 349.1 217.6 346.4 220.1 345L220.1 345L220.3 344.9C220.5 344.8 220.8 344.6 221.2 344.3C222 343.9 223.2 343.1 224.6 342.2C227.4 340.4 231.2 337.7 234.8 334.6C238.6 331.5 242 328.1 244.5 324.6C246.1 321 248 318.2 248 316C248 313.8 246.1 310.1 244.5 307.4C242 303.1 238.6 300.5 234.8 297.4C231.2 294.3 227.4 291.6 224.6 289.8C223.2 288.9 222 288.1 221.2 287.7C220.8 287.4 220.5 287.2 220.3 287.1L220.1 286.1L220.1 286.1C216.9 285.2 215.3 281.5 216.3 277.1C217.2 274.5 220.4 272 224 272C241.4 272 258.7 276.9 271.9 284.3C278.5 287.1 284.4 292.5 288.7 297.7C292.9 302.8 296 309.1 296 316C296 322.9 292.9 329.2 288.7 334.3V334.3zM144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM335.6 220C324.1 220 315.7 223.8 310.2 229.7C302.7 237.7 290 238.1 281.9 230.6C273.9 223 273.5 210.4 281 202.3C295.6 186.8 316.3 180 335.6 180C354.1 180 375.7 186.8 390.2 202.3C397.8 210.4 397.4 223 389.3 230.6C381.2 238.1 368.6 237.7 361 229.7C355.6 223.8 346.3 220 335.6 220zM439.4 373.3L459.5 367.6C481.7 361.4 504.6 375.2 510.6 398.4C516.5 421.7 503.3 445.6 481.1 451.8L396.1 475.6C387.5 478 378.6 472.9 376.3 464.2L353.4 374.9C347.5 351.6 360.7 327.7 382.9 321.5C405.2 315.3 428 329.1 433.1 352.3L439.4 373.3z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faStarHalfStroke = {\n prefix: 'far',\n iconName: 'star-half-stroke',\n icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8zM287.1 384.7C291.9 384.7 295.7 385.6 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.1 79.09L287.1 384.7z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faFileExcel = {\n prefix: 'far',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM229.1 233.3L192 280.9L154.9 233.3C146.8 222.8 131.8 220.9 121.3 229.1C110.8 237.2 108.9 252.3 117.1 262.8L161.6 320l-44.53 57.25c-8.156 10.47-6.25 25.56 4.188 33.69C125.7 414.3 130.8 416 135.1 416c7.156 0 14.25-3.188 18.97-9.25L192 359.1l37.06 47.65C233.8 412.8 240.9 416 248 416c5.125 0 10.31-1.656 14.72-5.062c10.44-8.125 12.34-23.22 4.188-33.69L222.4 320l44.53-57.25c8.156-10.47 6.25-25.56-4.188-33.69C252.2 220.9 237.2 222.8 229.1 233.3z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'far',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM217.6 228.8L217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 120 227.4 120 224C120 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 176 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 232 206.1 232 224C232 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8V228.8zM377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8L377.6 228.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'far',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M64 0C90.86 0 113.9 16.55 123.3 40H324.7C334.1 16.55 357.1 0 384 0C419.3 0 448 28.65 448 64C448 90.86 431.5 113.9 408 123.3V228.7C431.5 238.1 448 261.1 448 288C448 323.3 419.3 352 384 352C357.1 352 334.1 335.5 324.7 312H123.3C113.9 335.5 90.86 352 64 352C28.65 352 0 323.3 0 288C0 261.1 16.55 238.1 40 228.7V123.3C16.55 113.9 0 90.86 0 64C0 28.65 28.65 0 64 0V0zM64 80C72.84 80 80 72.84 80 64C80 56.1 74.28 49.54 66.75 48.24C65.86 48.08 64.94 48 64 48C55.16 48 48 55.16 48 64C48 64.07 48 64.14 48 64.21C48.01 65.07 48.09 65.92 48.24 66.75C49.54 74.28 56.1 80 64 80zM384 48C383.1 48 382.1 48.08 381.2 48.24C373.7 49.54 368 56.1 368 64C368 72.84 375.2 80 384 80C391.9 80 398.5 74.28 399.8 66.75C399.9 65.86 400 64.94 400 64C400 55.16 392.8 48 384 48V48zM324.7 88H123.3C116.9 104 104 116.9 88 123.3V228.7C104 235.1 116.9 247.1 123.3 264H324.7C331.1 247.1 343.1 235.1 360 228.7V123.3C343.1 116.9 331.1 104 324.7 88zM400 288C400 287.1 399.9 286.1 399.8 285.2C398.5 277.7 391.9 272 384 272C375.2 272 368 279.2 368 288C368 295.9 373.7 302.5 381.2 303.8C382.1 303.9 383.1 304 384 304C392.8 304 400 296.8 400 288zM64 272C56.1 272 49.54 277.7 48.24 285.2C48.08 286.1 48 287.1 48 288C48 296.8 55.16 304 64 304L64.22 303.1C65.08 303.1 65.93 303.9 66.75 303.8C74.28 302.5 80 295.9 80 288C80 279.2 72.84 272 64 272zM471.3 248C465.8 235.9 457.8 225.2 448 216.4V200H516.7C526.1 176.5 549.1 160 576 160C611.3 160 640 188.7 640 224C640 250.9 623.5 273.9 600 283.3V388.7C623.5 398.1 640 421.1 640 448C640 483.3 611.3 512 576 512C549.1 512 526.1 495.5 516.7 472H315.3C305.9 495.5 282.9 512 256 512C220.7 512 192 483.3 192 448C192 421.1 208.5 398.1 232 388.7V352H280V388.7C296 395.1 308.9 407.1 315.3 424H516.7C523.1 407.1 535.1 395.1 552 388.7V283.3C535.1 276.9 523.1 264 516.7 248H471.3zM592 224C592 215.2 584.8 208 576 208C575.1 208 574.1 208.1 573.2 208.2C565.7 209.5 560 216.1 560 224C560 232.8 567.2 240 576 240C583.9 240 590.5 234.3 591.8 226.8C591.9 225.9 592 224.9 592 224zM240 448C240 456.8 247.2 464 256 464C256.9 464 257.9 463.9 258.8 463.8C266.3 462.5 272 455.9 272 448C272 439.2 264.8 432 256 432C248.1 432 241.5 437.7 240.2 445.2C240.1 446.1 240 447.1 240 448zM573.2 463.8C574.1 463.9 575.1 464 576 464C584.8 464 592 456.8 592 448C592 447.1 591.9 446.2 591.8 445.3L591.8 445.2C590.5 437.7 583.9 432 576 432C567.2 432 560 439.2 560 448C560 455.9 565.7 462.5 573.2 463.8V463.8z\"]\n};\nvar faCircleRight = {\n prefix: 'far',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M280.2 150.2C273.1 143.8 262.1 142.2 254.3 146.1S239.1 158.5 239.1 167.1l.002 56L152 224C138.8 224 128 234.8 128 248v16C128 277.3 138.8 288 152 288L240 287.1v56c0 9.531 5.656 18.16 14.38 22c8.75 3.812 18.91 2.094 25.91-4.375l96-88.75C381.2 268.3 384 261.9 384 255.2c-.3125-7.781-2.875-13.25-7.844-17.75L280.2 150.2zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faFaceRollingEyes = {\n prefix: 'far',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M168 376C168 362.7 178.7 352 192 352H320C333.3 352 344 362.7 344 376C344 389.3 333.3 400 320 400H192C178.7 400 168 389.3 168 376zM80 224C80 179.8 115.8 144 160 144C204.2 144 240 179.8 240 224C240 268.2 204.2 304 160 304C115.8 304 80 268.2 80 224zM160 272C186.5 272 208 250.5 208 224C208 209.7 201.7 196.8 191.8 188C191.9 189.3 192 190.6 192 192C192 209.7 177.7 224 160 224C142.3 224 128 209.7 128 192C128 190.6 128.1 189.3 128.2 188C118.3 196.8 112 209.7 112 224C112 250.5 133.5 272 160 272V272zM272 224C272 179.8 307.8 144 352 144C396.2 144 432 179.8 432 224C432 268.2 396.2 304 352 304C307.8 304 272 268.2 272 224zM352 272C378.5 272 400 250.5 400 224C400 209.7 393.7 196.8 383.8 188C383.9 189.3 384 190.6 384 192C384 209.7 369.7 224 352 224C334.3 224 320 209.7 320 192C320 190.6 320.1 189.3 320.2 188C310.3 196.8 304 209.7 304 224C304 250.5 325.5 272 352 272zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'far',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M128 160C128 142.3 142.3 128 160 128H288C305.7 128 320 142.3 320 160V256C320 273.7 305.7 288 288 288H160C142.3 288 128 273.7 128 256V160zM288 320C323.3 320 352 291.3 352 256V224H416C433.7 224 448 238.3 448 256V352C448 369.7 433.7 384 416 384H288C270.3 384 256 369.7 256 352V320H288zM48 115.8C38.18 106.1 32 94.22 32 80C32 53.49 53.49 32 80 32C94.22 32 106.1 38.18 115.8 48H460.2C469 38.18 481.8 32 496 32C522.5 32 544 53.49 544 80C544 94.22 537.8 106.1 528 115.8V396.2C537.8 405 544 417.8 544 432C544 458.5 522.5 480 496 480C481.8 480 469 473.8 460.2 464H115.8C106.1 473.8 94.22 480 80 480C53.49 480 32 458.5 32 432C32 417.8 38.18 405 48 396.2V115.8zM96 125.3V386.7C109.6 391.6 120.4 402.4 125.3 416H450.7C455.6 402.4 466.4 391.6 480 386.7V125.3C466.4 120.4 455.6 109.6 450.7 96H125.3C120.4 109.6 109.6 120.4 96 125.3z\"]\n};\nvar faHeart = {\n prefix: 'far',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M244 84L255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84C243.1 84 244 84.01 244 84L244 84zM255.1 163.9L210.1 117.1C188.4 96.28 157.6 86.4 127.3 91.44C81.55 99.07 48 138.7 48 185.1V190.9C48 219.1 59.71 246.1 80.34 265.3L256 429.3L431.7 265.3C452.3 246.1 464 219.1 464 190.9V185.1C464 138.7 430.4 99.07 384.7 91.44C354.4 86.4 323.6 96.28 301.9 117.1L255.1 163.9z\"]\n};\nvar faFaceSurprise = {\n prefix: 'far',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208zM192 352C192 316.7 220.7 288 256 288C291.3 288 320 316.7 320 352C320 387.3 291.3 416 256 416C220.7 416 192 387.3 192 352zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faCirclePause = {\n prefix: 'far',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M200 160C186.8 160 176 170.8 176 184v144C176 341.3 186.8 352 200 352S224 341.3 224 328v-144C224 170.8 213.3 160 200 160zM312 160C298.8 160 288 170.8 288 184v144c0 13.25 10.75 24 24 24s24-10.75 24-24v-144C336 170.8 325.3 160 312 160zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faCircle = {\n prefix: 'far',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faCircleUp = {\n prefix: 'far',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M272.9 135.7C268.3 130.8 261.9 128 255.2 128C247.5 128.3 241.1 130.9 237.5 135.8l-87.25 96C143.8 238.9 142.2 249 146.1 257.7C149.9 266.4 158.5 272 167.1 272h56L224 360c0 13.25 10.75 24 24 24h16c13.25 0 23.1-10.75 23.1-24L287.1 272h56c9.531 0 18.16-5.656 22-14.38c3.811-8.75 2.092-18.91-4.377-25.91L272.9 135.7zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faFileAudio = {\n prefix: 'far',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0L64-.0001c-35.35 0-64 28.65-64 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM171.5 259.5L136 296H92C85.38 296 80 301.4 80 308v56C80 370.7 85.38 376 92 376H136l35.5 36.5C179.1 420 192 414.8 192 404v-136C192 257.3 179.1 251.9 171.5 259.5zM235.1 260.7c-6.25 6.25-6.25 16.38 0 22.62C235.3 283.5 256 305.1 256 336c0 30.94-20.77 52.53-20.91 52.69c-6.25 6.25-6.25 16.38 0 22.62C238.2 414.4 242.3 416 246.4 416s8.188-1.562 11.31-4.688C258.1 410.1 288 380.5 288 336s-29.05-74.06-30.28-75.31C251.5 254.4 241.3 254.4 235.1 260.7z\"]\n};\nvar faFileImage = {\n prefix: 'far',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM215.3 292c-4.68 0-9.051 2.34-11.65 6.234L164 357.8l-11.68-17.53C149.7 336.3 145.3 334 140.7 334c-4.682 0-9.053 2.34-11.65 6.234l-46.67 70c-2.865 4.297-3.131 9.82-.6953 14.37C84.09 429.2 88.84 432 93.1 432h196c5.163 0 9.907-2.844 12.34-7.395c2.436-4.551 2.17-10.07-.6953-14.37l-74.67-112C224.4 294.3 220 292 215.3 292zM128 288c17.67 0 32-14.33 32-32S145.7 224 128 224S96 238.3 96 256S110.3 288 128 288z\"]\n};\nvar faCircleQuestion = {\n prefix: 'far',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM256 336c-18 0-32 14-32 32s13.1 32 32 32c17.1 0 32-14 32-32S273.1 336 256 336zM289.1 128h-51.1C199 128 168 159 168 198c0 13 11 24 24 24s24-11 24-24C216 186 225.1 176 237.1 176h51.1C301.1 176 312 186 312 198c0 8-4 14.1-11 18.1L244 251C236 256 232 264 232 272V288c0 13 11 24 24 24S280 301 280 288V286l45.1-28c21-13 34-36 34-60C360 159 329 128 289.1 128z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faFaceMehBlank = {\n prefix: 'far',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faEye = {\n prefix: 'far',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M160 256C160 185.3 217.3 128 288 128C358.7 128 416 185.3 416 256C416 326.7 358.7 384 288 384C217.3 384 160 326.7 160 256zM288 336C332.2 336 368 300.2 368 256C368 211.8 332.2 176 288 176C287.3 176 286.7 176 285.1 176C287.3 181.1 288 186.5 288 192C288 227.3 259.3 256 224 256C218.5 256 213.1 255.3 208 253.1C208 254.7 208 255.3 208 255.1C208 300.2 243.8 336 288 336L288 336zM95.42 112.6C142.5 68.84 207.2 32 288 32C368.8 32 433.5 68.84 480.6 112.6C527.4 156 558.7 207.1 573.5 243.7C576.8 251.6 576.8 260.4 573.5 268.3C558.7 304 527.4 355.1 480.6 399.4C433.5 443.2 368.8 480 288 480C207.2 480 142.5 443.2 95.42 399.4C48.62 355.1 17.34 304 2.461 268.3C-.8205 260.4-.8205 251.6 2.461 243.7C17.34 207.1 48.62 156 95.42 112.6V112.6zM288 80C222.8 80 169.2 109.6 128.1 147.7C89.6 183.5 63.02 225.1 49.44 256C63.02 286 89.6 328.5 128.1 364.3C169.2 402.4 222.8 432 288 432C353.2 432 406.8 402.4 447.9 364.3C486.4 328.5 512.1 286 526.6 256C512.1 225.1 486.4 183.5 447.9 147.7C406.8 109.6 353.2 80 288 80V80z\"]\n};\nvar faFaceSadCry = {\n prefix: 'far',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M159.6 220C148.1 220 139.7 223.8 134.2 229.7C126.7 237.7 114 238.1 105.1 230.6C97.89 223 97.48 210.4 105 202.3C119.6 186.8 140.3 180 159.6 180C178.1 180 199.7 186.8 214.2 202.3C221.8 210.4 221.4 223 213.3 230.6C205.2 238.1 192.6 237.7 185 229.7C179.6 223.8 170.3 220 159.6 220zM297.9 230.6C289.9 223 289.5 210.4 297 202.3C311.6 186.8 332.3 180 351.6 180C370.1 180 391.7 186.8 406.2 202.3C413.8 210.4 413.4 223 405.3 230.6C397.2 238.1 384.6 237.7 377 229.7C371.6 223.8 362.3 220 351.6 220C340.1 220 331.7 223.8 326.2 229.7C318.7 237.7 306 238.1 297.9 230.6zM208 320C208 293.5 229.5 272 256 272C282.5 272 304 293.5 304 320V352C304 378.5 282.5 400 256 400C229.5 400 208 378.5 208 352V320zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM400 406.1C439.4 368.2 464 314.1 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 314.1 72.55 368.2 112 406.1V288C112 274.7 122.7 264 136 264C149.3 264 160 274.7 160 288V440.6C188.7 455.5 221.4 464 256 464C290.6 464 323.3 455.5 352 440.6V288C352 274.7 362.7 264 376 264C389.3 264 400 274.7 400 288V406.1z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faFileCode = {\n prefix: 'far',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M162.1 257.8c-7.812-7.812-20.47-7.812-28.28 0l-48 48c-7.812 7.812-7.812 20.5 0 28.31l48 48C137.8 386.1 142.9 388 148 388s10.23-1.938 14.14-5.844c7.812-7.812 7.812-20.5 0-28.31L128.3 320l33.86-33.84C169.1 278.3 169.1 265.7 162.1 257.8zM365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM221.9 257.8c-7.812 7.812-7.812 20.5 0 28.31L255.7 320l-33.86 33.84c-7.812 7.812-7.812 20.5 0 28.31C225.8 386.1 230.9 388 236 388s10.23-1.938 14.14-5.844l48-48c7.812-7.812 7.812-20.5 0-28.31l-48-48C242.3 250 229.7 250 221.9 257.8z\"]\n};\nvar faWindowMaximize = {\n prefix: 'far',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M7.724 65.49C13.36 55.11 21.79 46.47 32 40.56C39.63 36.15 48.25 33.26 57.46 32.33C59.61 32.11 61.79 32 64 32H448C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96C0 93.79 .112 91.61 .3306 89.46C1.204 80.85 3.784 72.75 7.724 65.49V65.49zM48 416C48 424.8 55.16 432 64 432H448C456.8 432 464 424.8 464 416V224H48V416z\"]\n};\nvar faFaceFrown = {\n prefix: 'far',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M143.9 398.6C131.4 394.1 124.9 380.3 129.4 367.9C146.9 319.4 198.9 288 256 288C313.1 288 365.1 319.4 382.6 367.9C387.1 380.3 380.6 394.1 368.1 398.6C355.7 403.1 341.9 396.6 337.4 384.1C328.2 358.5 297.2 336 256 336C214.8 336 183.8 358.5 174.6 384.1C170.1 396.6 156.3 403.1 143.9 398.6V398.6zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faFrown = faFaceFrown;\nvar faFloppyDisk = {\n prefix: 'far',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M224 256c-35.2 0-64 28.8-64 64c0 35.2 28.8 64 64 64c35.2 0 64-28.8 64-64C288 284.8 259.2 256 224 256zM433.1 129.1l-83.9-83.9C341.1 37.06 328.8 32 316.1 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V163.9C448 151.2 442.9 138.9 433.1 129.1zM128 80h144V160H128V80zM400 416c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16V96c0-8.838 7.164-16 16-16h16v104c0 13.25 10.75 24 24 24h192C309.3 208 320 197.3 320 184V83.88l78.25 78.25C399.4 163.2 400 164.8 400 166.3V416z\"]\n};\nvar faSave = faFloppyDisk;\nvar faCommentDots = {\n prefix: 'far',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M144 208C126.3 208 112 222.2 112 239.1C112 257.7 126.3 272 144 272s31.1-14.25 31.1-32S161.8 208 144 208zM256 207.1c-17.75 0-31.1 14.25-31.1 32s14.25 31.1 31.1 31.1s31.1-14.25 31.1-31.1S273.8 207.1 256 207.1zM368 208c-17.75 0-31.1 14.25-31.1 32s14.25 32 31.1 32c17.75 0 31.99-14.25 31.99-32C400 222.2 385.8 208 368 208zM256 31.1c-141.4 0-255.1 93.12-255.1 208c0 47.62 19.91 91.25 52.91 126.3c-14.87 39.5-45.87 72.88-46.37 73.25c-6.624 7-8.373 17.25-4.624 26C5.818 474.2 14.38 480 24 480c61.49 0 109.1-25.75 139.1-46.25c28.87 9 60.16 14.25 92.9 14.25c141.4 0 255.1-93.13 255.1-207.1S397.4 31.1 256 31.1zM256 400c-26.75 0-53.12-4.125-78.36-12.12l-22.75-7.125L135.4 394.5c-14.25 10.12-33.87 21.38-57.49 29c7.374-12.12 14.37-25.75 19.87-40.25l10.62-28l-20.62-21.87C69.81 314.1 48.06 282.2 48.06 240c0-88.25 93.24-160 207.1-160s207.1 71.75 207.1 160S370.8 400 256 400z\"]\n};\nvar faCommenting = faCommentDots;\nvar faFaceGrinSquint = {\n prefix: 'far',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM223.4 194.6C234.1 200.3 234.1 215.7 223.4 221.4L133.5 269.3C125.6 273.6 116 267.8 116 258.9C116 256.1 116.1 253.4 118.8 251.2L154.8 208L118.8 164.8C116.1 162.6 116 159.9 116 157.1C116 148.2 125.6 142.4 133.5 146.7L223.4 194.6zM393.2 164.8L357.2 208L393.2 251.2C395 253.4 396 256.1 396 258.9C396 267.8 386.4 273.6 378.5 269.3L288.6 221.4C277.9 215.7 277.9 200.3 288.6 194.6L378.5 146.7C386.4 142.4 396 148.2 396 157.1C396 159.9 395 162.6 393.2 164.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandPointer = {\n prefix: 'far',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M208 288C199.2 288 192 295.2 192 304v96C192 408.8 199.2 416 208 416s16-7.164 16-16v-96C224 295.2 216.8 288 208 288zM272 288C263.2 288 256 295.2 256 304v96c0 8.836 7.162 16 15.1 16S288 408.8 288 400l-.0013-96C287.1 295.2 280.8 288 272 288zM376.9 201.2c-13.74-17.12-34.8-27.45-56.92-27.45h-13.72c-3.713 0-7.412 .291-11.07 .8652C282.7 165.1 267.4 160 251.4 160h-11.44V72c0-39.7-32.31-72-72.01-72c-39.7 0-71.98 32.3-71.98 72v168.5C84.85 235.1 75.19 235.4 69.83 235.4c-44.35 0-69.83 37.23-69.83 69.85c0 14.99 4.821 29.51 13.99 41.69l78.14 104.2C120.7 489.3 166.2 512 213.7 512h109.7c6.309 0 12.83-.957 18.14-2.645c28.59-5.447 53.87-19.41 73.17-40.44C436.1 446.3 448 416.2 448 384.2V274.3C448 234.6 416.3 202.3 376.9 201.2zM400 384.2c0 19.62-7.219 38.06-20.44 52.06c-12.53 13.66-29.03 22.67-49.69 26.56C327.4 463.6 325.3 464 323.4 464H213.7c-32.56 0-63.65-15.55-83.18-41.59L52.36 318.2C49.52 314.4 48.02 309.8 48.02 305.2c0-16.32 14.5-21.75 21.72-21.75c4.454 0 12.01 1.55 17.34 8.703l28.12 37.5c3.093 4.105 7.865 6.419 12.8 6.419c11.94 0 16.01-10.7 16.01-16.01V72c0-13.23 10.78-24 23.1-24c13.22 0 24 10.77 24 24v130.7c0 6.938 5.451 16.01 16.03 16.01C219.5 218.7 220.1 208 237.7 208h13.72c21.5 0 18.56 19.21 34.7 19.21c8.063 0 9.805-5.487 20.15-5.487h13.72c26.96 0 17.37 27.43 40.77 27.43l14.07-.0037c13.88 0 25.16 11.28 25.16 25.14V384.2zM336 288C327.2 288 320 295.2 320 304v96c0 8.836 7.164 16 16 16s16-7.164 16-16v-96C352 295.2 344.8 288 336 288z\"]\n};\nvar faHandScissors = {\n prefix: 'far',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M270.1 480h97.92C447.4 480 512 417.1 512 339.7V231.8c0-23.45-6.106-46.73-17.66-67.33l-31.35-55.85C447.5 81.1 417.1 64 385.9 64h-46.97c-26.63 0-51.56 11.63-68.4 31.93l-15.46 18.71L127.3 68.44C119 65.46 110.5 64.05 102.1 64.05c-30.02 0-58.37 18.06-69.41 47.09C15.06 156.8 46.19 194 76.75 204.9l2.146 .7637L68.79 206.4C30.21 209 0 241.2 0 279.3c0 39.7 33.27 72.09 73.92 72.09c1.745 0 3.501-.0605 5.268-.1833l88.79-6.135v8.141c0 22.11 10.55 43.11 28.05 56.74C197.4 448.8 230.2 480 270.1 480zM269.1 432c-14.34 0-26-11.03-26-24.62c0 0 .0403-14.31 .0403-14.71c0-6.894-4.102-14.2-10.67-16.39c-10.39-3.5-17.38-12.78-17.38-23.06v-13.53c0-16.98 13.7-16.4 13.7-29.89c0-9.083-7.392-15.96-15.96-15.96c-.3646 0-.7311 .0125-1.099 .0377c0 0-138.1 9.505-138.7 9.505c-14.32 0-25.93-11.04-25.93-24.49c0-13.28 10.7-23.74 24.1-24.64l163.2-11.28c2.674-.1882 14.92-2.907 14.92-16.18c0-6.675-4.284-12.58-10.65-14.85L92.84 159.7C85.39 156.1 75.97 149.4 75.97 136.7c0-11.14 9.249-24.66 25.97-24.66c3.043 0 6.141 .5115 9.166 1.59l234.1 85.03c1.801 .6581 3.644 .9701 5.456 .9701c8.96 0 16-7.376 16-15.1c0-6.514-4.068-12.69-10.59-15.04l-64.81-23.47l15.34-18.56C315.2 117.3 326.6 112 338.9 112h46.97c14.77 0 28.28 7.719 35.27 20.16L452.5 188c7.531 13.41 11.52 28.56 11.52 43.81v107.9c0 50.91-43.06 92.31-96 92.31H269.1z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'far',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M519.4 334.4C522.7 342.5 527.8 352.1 535.9 361.1C539.9 365 544.1 368.4 548.6 371.4C506.4 454.8 419.9 512 319.1 512C220.1 512 133.6 454.8 91.4 371.4C95.87 368.4 100.1 365 104.1 361.1C112.2 352.1 117.3 342.5 120.6 334.4C121.8 331.5 122.9 328.6 123.9 325.5C152.5 406.2 229.5 464 319.1 464C410.5 464 487.5 406.2 516.1 325.5C517.1 328.6 518.2 331.5 519.4 334.4V334.4zM319.1 47.1C218.6 47.1 134.2 120.5 115.7 216.5C109.1 213.4 101.4 212.2 93.4 213.3C86.59 214.3 77.18 215.7 66.84 217.7C85.31 94.5 191.6 0 319.1 0C448.4 0 554.7 94.5 573.2 217.7C562.8 215.7 553.4 214.3 546.6 213.3C538.6 212.2 530.9 213.4 524.2 216.5C505.8 120.5 421.4 48 319.1 48V47.1zM78.5 341.1C59.98 356.7 32.01 355.5 14.27 337.7C-4.442 319-4.825 288.9 13.55 270.6C22.19 261.9 43.69 255.4 64.05 250.1C77.02 248.2 89.53 246.2 97.94 245C103.3 244.2 107.8 248.7 106.1 254.1C103.9 275.6 95.58 324.3 81.43 338.4C80.49 339.4 79.51 340.3 78.5 341.1V341.1zM561.5 341.1C560.7 340.5 559.1 339.8 559.2 339.1C559 338.9 558.8 338.7 558.6 338.4C544.4 324.3 536.1 275.6 533 254.1C532.2 248.7 536.7 244.2 542.1 245C543.1 245.2 544.2 245.3 545.4 245.5C553.6 246.7 564.6 248.5 575.1 250.1C596.3 255.4 617.8 261.9 626.4 270.6C644.8 288.9 644.4 319 625.7 337.7C607.1 355.5 580 356.7 561.5 341.1L561.5 341.1zM319.9 399.1C269.6 399.1 225.5 374.6 200.9 336.5C190.5 320.4 207.7 303.1 226.3 308.4C255.3 315.1 286.8 318.8 319.9 318.8C353 318.8 384.6 315.1 413.5 308.4C432.2 303.1 449.4 320.4 438.1 336.5C414.4 374.6 370.3 399.1 319.9 399.1zM281.6 228.8L281.4 228.5C281.2 228.3 281 228 280.7 227.6C280 226.8 279.1 225.7 277.9 224.3C275.4 221.4 271.9 217.7 267.7 213.1C258.9 206.2 248.8 200 239.1 200C231.2 200 221.1 206.2 212.3 213.1C208.1 217.7 204.6 221.4 202.1 224.3C200.9 225.7 199.1 226.8 199.3 227.6C198.1 228 198.8 228.3 198.6 228.5L198.4 228.8L198.4 228.8C196.3 231.6 192.7 232.7 189.5 231.6C186.2 230.5 183.1 227.4 183.1 224C183.1 206.1 190.7 188.4 200.6 175.2C210.4 162.2 224.5 152 239.1 152C255.5 152 269.6 162.2 279.4 175.2C289.3 188.4 295.1 206.1 295.1 224C295.1 227.4 293.8 230.5 290.5 231.6C287.3 232.7 283.7 231.6 281.6 228.8L281.6 228.8zM441.6 228.8L441.6 228.8L441.4 228.5C441.2 228.3 441 228 440.7 227.6C440 226.8 439.1 225.7 437.9 224.3C435.4 221.4 431.9 217.7 427.7 213.1C418.9 206.2 408.8 200 400 200C391.2 200 381.1 206.2 372.3 213.1C368.1 217.7 364.6 221.4 362.1 224.3C360.9 225.7 359.1 226.8 359.3 227.6C358.1 228 358.8 228.3 358.6 228.5L358.4 228.8L358.4 228.8C356.3 231.6 352.7 232.7 349.5 231.6C346.2 230.5 344 227.4 344 223.1C344 206.1 350.7 188.4 360.6 175.2C370.4 162.2 384.5 151.1 400 151.1C415.5 151.1 429.6 162.2 439.4 175.2C449.3 188.4 456 206.1 456 223.1C456 227.4 453.8 230.5 450.5 231.6C447.3 232.7 443.7 231.6 441.6 228.8V228.8z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faCalendarXmark = {\n prefix: 'far',\n iconName: 'calendar-xmark',\n icon: [448, 512, [\"calendar-times\"], \"f273\", \"M257.9 328L304.1 375C314.3 384.4 314.3 399.6 304.1 408.1C295.6 418.3 280.4 418.3 271 408.1L224 361.9L176.1 408.1C167.6 418.3 152.4 418.3 143 408.1C133.7 399.6 133.7 384.4 143 375L190.1 328L143 280.1C133.7 271.6 133.7 256.4 143 247C152.4 237.7 167.6 237.7 176.1 247L224 294.1L271 247C280.4 237.7 295.6 237.7 304.1 247C314.3 256.4 314.3 271.6 304.1 280.1L257.9 328zM128 0C141.3 0 152 10.75 152 24V64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0zM400 192H48V448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faFileVideo = {\n prefix: 'far',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM240 288c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-16.52l43.84 30.2C292.3 403.5 304 397.6 304 387.4V284.6c0-10.16-11.64-16.16-20.16-10.32L240 304.5V288z\"]\n};\nvar faFilePdf = {\n prefix: 'far',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M320 464C328.8 464 336 456.8 336 448V416H384V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V416H48V448C48 456.8 55.16 464 64 464H320zM256 160C238.3 160 224 145.7 224 128V48H64C55.16 48 48 55.16 48 64V192H0V64C0 28.65 28.65 0 64 0H229.5C246.5 0 262.7 6.743 274.7 18.75L365.3 109.3C377.3 121.3 384 137.5 384 154.5V192H336V160H256zM88 224C118.9 224 144 249.1 144 280C144 310.9 118.9 336 88 336H80V368C80 376.8 72.84 384 64 384C55.16 384 48 376.8 48 368V240C48 231.2 55.16 224 64 224H88zM112 280C112 266.7 101.3 256 88 256H80V304H88C101.3 304 112 293.3 112 280zM160 240C160 231.2 167.2 224 176 224H200C226.5 224 248 245.5 248 272V336C248 362.5 226.5 384 200 384H176C167.2 384 160 376.8 160 368V240zM192 352H200C208.8 352 216 344.8 216 336V272C216 263.2 208.8 256 200 256H192V352zM336 224C344.8 224 352 231.2 352 240C352 248.8 344.8 256 336 256H304V288H336C344.8 288 352 295.2 352 304C352 312.8 344.8 320 336 320H304V368C304 376.8 296.8 384 288 384C279.2 384 272 376.8 272 368V240C272 231.2 279.2 224 288 224H336z\"]\n};\nvar faComment = {\n prefix: 'far',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M256 32C114.6 32 .0272 125.1 .0272 240c0 47.63 19.91 91.25 52.91 126.2c-14.88 39.5-45.87 72.88-46.37 73.25c-6.625 7-8.375 17.25-4.625 26C5.818 474.2 14.38 480 24 480c61.5 0 109.1-25.75 139.1-46.25C191.1 442.8 223.3 448 256 448c141.4 0 255.1-93.13 255.1-208S397.4 32 256 32zM256.1 400c-26.75 0-53.12-4.125-78.38-12.12l-22.75-7.125l-19.5 13.75c-14.25 10.12-33.88 21.38-57.5 29c7.375-12.12 14.37-25.75 19.88-40.25l10.62-28l-20.62-21.87C69.82 314.1 48.07 282.2 48.07 240c0-88.25 93.25-160 208-160s208 71.75 208 160S370.8 400 256.1 400z\"]\n};\nvar faEnvelope = {\n prefix: 'far',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faHourglass = {\n prefix: 'far',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M360 0C373.3 0 384 10.75 384 24C384 37.25 373.3 48 360 48H352V66.98C352 107.3 335.1 145.1 307.5 174.5L225.9 256L307.5 337.5C335.1 366 352 404.7 352 445V464H360C373.3 464 384 474.7 384 488C384 501.3 373.3 512 360 512H24C10.75 512 0 501.3 0 488C0 474.7 10.75 464 24 464H32V445C32 404.7 48.01 366 76.52 337.5L158.1 256L76.52 174.5C48.01 145.1 32 107.3 32 66.98V48H24C10.75 48 0 37.25 0 24C0 10.75 10.75 0 24 0L360 0zM192 289.9L110.5 371.5C90.96 390.1 80 417.4 80 445V464H304V445C304 417.4 293 390.1 273.5 371.5L192 289.9zM192 222.1L273.5 140.5C293 121 304 94.56 304 66.98V47.1H80V66.98C80 94.56 90.96 121 110.5 140.5L192 222.1z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faCalendarCheck = {\n prefix: 'far',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M216.1 408.1C207.6 418.3 192.4 418.3 183 408.1L119 344.1C109.7 335.6 109.7 320.4 119 311C128.4 301.7 143.6 301.7 152.1 311L200 358.1L295 263C304.4 253.7 319.6 253.7 328.1 263C338.3 272.4 338.3 287.6 328.1 296.1L216.1 408.1zM128 0C141.3 0 152 10.75 152 24V64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0zM400 192H48V448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192z\"]\n};\nvar faHardDrive = {\n prefix: 'far',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M304 344c-13.25 0-24 10.74-24 24c0 13.25 10.75 24 24 24c13.26 0 24-10.75 24-24C328 354.7 317.3 344 304 344zM448 32h-384c-35.35 0-64 28.65-64 64v320c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V96C512 60.65 483.3 32 448 32zM464 416c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16v-96c0-8.822 7.178-16 16-16h384C456.8 304 464 311.2 464 320V416zM464 258.3C458.9 256.9 453.6 256 448 256H64C58.44 256 53.14 256.9 48 258.3V96c0-8.822 7.178-16 16-16h384c8.822 0 16 7.178 16 16V258.3zM400 344c-13.25 0-24 10.74-24 24c0 13.25 10.75 24 24 24c13.26 0 24-10.75 24-24C424 354.7 413.3 344 400 344z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'far',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.18C446-5.046 477.5-4.646 497.1 14.92C516.6 34.49 517 65.95 497.8 85.18C483 99.97 432.2 108.8 409.6 111.9C403.1 112.8 399.2 108 400.1 102.4C403.3 79.94 412 28.97 426.8 14.18H426.8zM74.98 74.98C158.2-8.253 284.5-22.19 382.2 33.17C380.6 37.96 379.3 42.81 378.1 47.52C375 59.67 372.6 72.08 370.8 82.52C290.1 28.93 180.1 37.74 108.9 108.9C37.75 180.1 28.94 290 82.49 370.8C72.01 372.6 59.6 374.1 47.46 378.1C42.76 379.3 37.93 380.6 33.15 382.1C-22.19 284.5-8.245 158.2 74.98 74.98V74.98zM478.8 129.9C534.2 227.5 520.2 353.8 437 437C353.8 520.3 227.5 534.2 129.8 478.8C131.3 474 132.7 469.2 133.9 464.5C136.1 452.3 139.4 439.9 141.2 429.5C221.9 483.1 331.9 474.3 403.1 403.1C474.3 331.9 483.1 221.1 429.5 141.2C439.1 139.4 452.4 137 464.5 133.9C469.2 132.7 474.1 131.4 478.8 129.9L478.8 129.9zM359.2 226.9C369.3 210.6 393 210 397 228.8C406.6 273.1 393.4 322.3 357.8 357.9C322.2 393.5 273 406.7 228.6 397.1C209.9 393.1 210.5 369.4 226.8 359.3C252 343.6 276.1 323.9 300.4 300.5C323.8 277.1 343.5 252.1 359.2 226.9L359.2 226.9zM189.5 235.7C201.1 232.1 211.1 242.1 208.5 254.6L178.8 352.1C176.2 360.7 165.4 363.4 159 357C157.1 355 155.8 352.5 155.6 349.7L150.5 293.6L94.43 288.5C91.66 288.3 89.07 287.1 87.1 285.1C80.76 278.7 83.46 267.9 92.05 265.3L189.5 235.7zM288.5 94.43L293.6 150.5L349.7 155.6C352.5 155.8 355 157.1 357 159C363.4 165.4 360.7 176.2 352.1 178.8L254.6 208.5C242.1 211.1 232.1 201.1 235.7 189.5L265.3 92.05C267.9 83.46 278.7 80.76 285.1 87.1C287.1 89.07 288.3 91.66 288.5 94.43V94.43zM14.18 426.8C28.97 412 79.85 403.2 102.4 400.1C108 399.2 112.8 403.1 111.9 409.6C108.7 432.1 99.97 483 85.18 497.8C65.95 517 34.5 516.6 14.93 497.1C-4.645 477.5-5.046 446 14.18 426.8H14.18z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faRectangleList = {\n prefix: 'far',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M128 192C110.3 192 96 177.7 96 160C96 142.3 110.3 128 128 128C145.7 128 160 142.3 160 160C160 177.7 145.7 192 128 192zM200 160C200 146.7 210.7 136 224 136H448C461.3 136 472 146.7 472 160C472 173.3 461.3 184 448 184H224C210.7 184 200 173.3 200 160zM200 256C200 242.7 210.7 232 224 232H448C461.3 232 472 242.7 472 256C472 269.3 461.3 280 448 280H224C210.7 280 200 269.3 200 256zM200 352C200 338.7 210.7 328 224 328H448C461.3 328 472 338.7 472 352C472 365.3 461.3 376 448 376H224C210.7 376 200 365.3 200 352zM128 224C145.7 224 160 238.3 160 256C160 273.7 145.7 288 128 288C110.3 288 96 273.7 96 256C96 238.3 110.3 224 128 224zM128 384C110.3 384 96 369.7 96 352C96 334.3 110.3 320 128 320C145.7 320 160 334.3 160 352C160 369.7 145.7 384 128 384zM0 96C0 60.65 28.65 32 64 32H512C547.3 32 576 60.65 576 96V416C576 451.3 547.3 480 512 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H512C520.8 432 528 424.8 528 416V96C528 87.16 520.8 80 512 80H64C55.16 80 48 87.16 48 96z\"]\n};\nvar faListAlt = faRectangleList;\nvar faCalendarPlus = {\n prefix: 'far',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M224 232C237.3 232 248 242.7 248 256V304H296C309.3 304 320 314.7 320 328C320 341.3 309.3 352 296 352H248V400C248 413.3 237.3 424 224 424C210.7 424 200 413.3 200 400V352H152C138.7 352 128 341.3 128 328C128 314.7 138.7 304 152 304H200V256C200 242.7 210.7 232 224 232zM152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"]\n};\nvar faCircleLeft = {\n prefix: 'far',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M360 224L272 224v-56c0-9.531-5.656-18.16-14.38-22C248.9 142.2 238.7 143.9 231.7 150.4l-96 88.75C130.8 243.7 128 250.1 128 256.8c.3125 7.781 2.875 13.25 7.844 17.75l96 87.25c7.031 6.406 17.19 8.031 25.88 4.188s14.28-12.44 14.28-21.94l-.002-56L360 288C373.3 288 384 277.3 384 264v-16C384 234.8 373.3 224 360 224zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faMoneyBill1 = {\n prefix: 'far',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M400 256C400 317.9 349.9 368 288 368C226.1 368 176 317.9 176 256C176 194.1 226.1 144 288 144C349.9 144 400 194.1 400 256zM272 224V288H264C255.2 288 248 295.2 248 304C248 312.8 255.2 320 264 320H312C320.8 320 328 312.8 328 304C328 295.2 320.8 288 312 288H304V208C304 199.2 296.8 192 288 192H272C263.2 192 256 199.2 256 208C256 216.8 263.2 224 272 224zM0 128C0 92.65 28.65 64 64 64H512C547.3 64 576 92.65 576 128V384C576 419.3 547.3 448 512 448H64C28.65 448 0 419.3 0 384V128zM48 176V336C83.35 336 112 364.7 112 400H464C464 364.7 492.7 336 528 336V176C492.7 176 464 147.3 464 112H112C112 147.3 83.35 176 48 176z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faClock = {\n prefix: 'far',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M232 120C232 106.7 242.7 96 256 96C269.3 96 280 106.7 280 120V243.2L365.3 300C376.3 307.4 379.3 322.3 371.1 333.3C364.6 344.3 349.7 347.3 338.7 339.1L242.7 275.1C236 271.5 232 264 232 255.1L232 120zM256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0zM48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256z\"]\n};\nvar faClockFour = faClock;\nvar faKeyboard = {\n prefix: 'far',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M512 64H64C28.65 64 0 92.65 0 128v256c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V128C576 92.65 547.3 64 512 64zM528 384c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V128c0-8.822 7.178-16 16-16h448c8.822 0 16 7.178 16 16V384zM140 152h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C152 157.3 146.7 152 140 152zM196 200h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C184 194.7 189.3 200 196 200zM276 200h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C264 194.7 269.3 200 276 200zM356 200h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C344 194.7 349.3 200 356 200zM460 152h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C472 157.3 466.7 152 460 152zM140 232h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C152 237.3 146.7 232 140 232zM196 280h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C184 274.7 189.3 280 196 280zM276 280h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C264 274.7 269.3 280 276 280zM356 280h24c6.656 0 12-5.344 12-12v-24c0-6.656-5.344-12-12-12h-24c-6.656 0-12 5.344-12 12v24C344 274.7 349.3 280 356 280zM460 232h-24c-6.656 0-12 5.344-12 12v24c0 6.656 5.344 12 12 12h24c6.656 0 12-5.344 12-12v-24C472 237.3 466.7 232 460 232zM400 320h-224C167.1 320 160 327.1 160 336V352c0 8.875 7.125 16 16 16h224c8.875 0 16-7.125 16-16v-16C416 327.1 408.9 320 400 320z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'far',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 416c0 8.822-7.178 16-16 16H64c-8.822 0-16-7.178-16-16V96c0-8.822 7.178-16 16-16h448c8.822 0 16 7.178 16 16V416zM236.5 222.1c9.375 9.375 24.56 9.375 33.94 0c9.375-9.375 9.375-24.56 0-33.94c-37.44-37.44-98.31-37.44-135.7 0C116.5 206.2 106.5 230.4 106.5 256s9.1 49.75 28.12 67.88c18.72 18.72 43.28 28.08 67.87 28.08s49.16-9.359 67.87-28.08c9.375-9.375 9.375-24.56 0-33.94c-9.375-9.375-24.56-9.375-33.94 0c-18.69 18.72-49.19 18.72-67.87 0C159.5 280.9 154.5 268.8 154.5 256s5-24.88 14.06-33.94C187.3 203.3 217.8 203.3 236.5 222.1zM428.5 222.1c9.375 9.375 24.56 9.375 33.94 0c9.375-9.375 9.375-24.56 0-33.94c-37.44-37.44-98.31-37.44-135.7 0C308.5 206.2 298.5 230.4 298.5 256s9.1 49.75 28.12 67.88c18.72 18.72 43.28 28.08 67.87 28.08s49.16-9.359 67.87-28.08c9.375-9.375 9.375-24.56 0-33.94c-9.375-9.375-24.56-9.375-33.94 0c-18.69 18.72-49.19 18.72-67.87 0C351.5 280.9 346.5 268.8 346.5 256s5-24.88 14.06-33.94C379.3 203.3 409.8 203.3 428.5 222.1z\"]\n};\nvar faImages = {\n prefix: 'far',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M512 32H160c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64H512c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 320c0 8.822-7.178 16-16 16h-16l-109.3-160.9C383.7 170.7 378.7 168 373.3 168c-5.352 0-10.35 2.672-13.31 7.125l-62.74 94.11L274.9 238.6C271.9 234.4 267.1 232 262 232c-5.109 0-9.914 2.441-12.93 6.574L176 336H160c-8.822 0-16-7.178-16-16V96c0-8.822 7.178-16 16-16H512c8.822 0 16 7.178 16 16V320zM224 112c-17.67 0-32 14.33-32 32s14.33 32 32 32c17.68 0 32-14.33 32-32S241.7 112 224 112zM456 480H120C53.83 480 0 426.2 0 360v-240C0 106.8 10.75 96 24 96S48 106.8 48 120v240c0 39.7 32.3 72 72 72h336c13.25 0 24 10.75 24 24S469.3 480 456 480z\"]\n};\nvar faFaceGrin = {\n prefix: 'far',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrin = faFaceGrin;\nvar faFaceMeh = {\n prefix: 'far',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208zM368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208zM328 328C341.3 328 352 338.7 352 352C352 365.3 341.3 376 328 376H184C170.7 376 160 365.3 160 352C160 338.7 170.7 328 184 328H328zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z\"]\n};\nvar faMeh = faFaceMeh;\nvar faIdCard = {\n prefix: 'far',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M368 344h96c13.25 0 24-10.75 24-24s-10.75-24-24-24h-96c-13.25 0-24 10.75-24 24S354.8 344 368 344zM208 320c35.35 0 64-28.65 64-64c0-35.35-28.65-64-64-64s-64 28.65-64 64C144 291.3 172.7 320 208 320zM512 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h448c35.35 0 64-28.65 64-64V96C576 60.65 547.3 32 512 32zM528 416c0 8.822-7.178 16-16 16h-192c0-44.18-35.82-80-80-80h-64C131.8 352 96 387.8 96 432H64c-8.822 0-16-7.178-16-16V160h480V416zM368 264h96c13.25 0 24-10.75 24-24s-10.75-24-24-24h-96c-13.25 0-24 10.75-24 24S354.8 264 368 264z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faSun = {\n prefix: 'far',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M505.2 324.8l-47.73-68.78l47.75-68.81c7.359-10.62 8.797-24.12 3.844-36.06c-4.969-11.94-15.52-20.44-28.22-22.72l-82.39-14.88l-14.89-82.41c-2.281-12.72-10.76-23.25-22.69-28.22c-11.97-4.936-25.42-3.498-36.12 3.844L256 54.49L187.2 6.709C176.5-.6016 163.1-2.039 151.1 2.896c-11.92 4.971-20.4 15.5-22.7 28.19l-14.89 82.44L31.15 128.4C18.42 130.7 7.854 139.2 2.9 151.2C-2.051 163.1-.5996 176.6 6.775 187.2l47.73 68.78l-47.75 68.81c-7.359 10.62-8.795 24.12-3.844 36.06c4.969 11.94 15.52 20.44 28.22 22.72l82.39 14.88l14.89 82.41c2.297 12.72 10.78 23.25 22.7 28.22c11.95 4.906 25.44 3.531 36.09-3.844L256 457.5l68.83 47.78C331.3 509.7 338.8 512 346.3 512c4.906 0 9.859-.9687 14.56-2.906c11.92-4.969 20.4-15.5 22.7-28.19l14.89-82.44l82.37-14.88c12.73-2.281 23.3-10.78 28.25-22.75C514.1 348.9 512.6 335.4 505.2 324.8zM456.8 339.2l-99.61 18l-18 99.63L256 399.1L172.8 456.8l-18-99.63l-99.61-18L112.9 255.1L55.23 172.8l99.61-18l18-99.63L256 112.9l83.15-57.75l18.02 99.66l99.61 18L399.1 255.1L456.8 339.2zM256 143.1c-61.85 0-111.1 50.14-111.1 111.1c0 61.85 50.15 111.1 111.1 111.1s111.1-50.14 111.1-111.1C367.1 194.1 317.8 143.1 256 143.1zM256 319.1c-35.28 0-63.99-28.71-63.99-63.99S220.7 192 256 192s63.99 28.71 63.99 63.1S291.3 319.1 256 319.1z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'far',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M130.7 313.9C126.5 300.4 137.8 288 151.1 288H364.5C378.7 288 389.9 300.4 385.8 313.9C368.1 368.4 318.2 408 258.2 408C198.2 408 147.5 368.4 130.7 313.9V313.9zM208.4 192C208.4 209.7 194 224 176.4 224C158.7 224 144.4 209.7 144.4 192C144.4 174.3 158.7 160 176.4 160C194 160 208.4 174.3 208.4 192zM281.9 214.6C273.9 207 273.5 194.4 281 186.3C295.6 170.8 316.3 164 335.6 164C354.1 164 375.7 170.8 390.2 186.3C397.8 194.4 397.4 207 389.3 214.6C381.2 222.1 368.6 221.7 361 213.7C355.6 207.8 346.3 204 335.6 204C324.1 204 315.7 207.8 310.2 213.7C302.7 221.7 290 222.1 281.9 214.6zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faCircleDown = {\n prefix: 'far',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M344 240h-56L287.1 152c0-13.25-10.75-24-24-24h-16C234.7 128 223.1 138.8 223.1 152L224 240h-56c-9.531 0-18.16 5.656-22 14.38C142.2 263.1 143.9 273.3 150.4 280.3l88.75 96C243.7 381.2 250.1 384 256.8 384c7.781-.3125 13.25-2.875 17.75-7.844l87.25-96c6.406-7.031 8.031-17.19 4.188-25.88S353.5 240 344 240zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faThumbsDown = {\n prefix: 'far',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M128 288V64.03c0-17.67-14.33-31.1-32-31.1H32c-17.67 0-32 14.33-32 31.1v223.1c0 17.67 14.33 31.1 32 31.1h64C113.7 320 128 305.7 128 288zM481.5 229.1c1.234-5.092 1.875-10.32 1.875-15.64c0-22.7-11.44-43.13-29.28-55.28c.4219-3.015 .6406-6.076 .6406-9.122c0-22.32-11.06-42.6-28.83-54.83c-2.438-34.71-31.47-62.2-66.8-62.2h-52.53c-35.94 0-71.55 11.87-100.3 33.41L169.6 92.93c-6.285 4.71-9.596 11.85-9.596 19.13c0 12.76 10.29 24.04 24.03 24.04c5.013 0 10.07-1.565 14.38-4.811l36.66-27.51c20.48-15.34 45.88-23.81 71.5-23.81h52.53c10.45 0 18.97 8.497 18.97 18.95c0 3.5-1.11 4.94-1.11 9.456c0 26.97 29.77 17.91 29.77 40.64c0 9.254-6.392 10.96-6.392 22.25c0 13.97 10.85 21.95 19.58 23.59c8.953 1.671 15.45 9.481 15.45 18.56c0 13.04-11.39 13.37-11.39 28.91c0 12.54 9.702 23.08 22.36 23.94C456.2 266.1 464 275.2 464 284.1c0 10.43-8.516 18.93-18.97 18.93H307.4c-12.44 0-24 10.02-24 23.1c0 4.038 1.02 8.078 3.066 11.72C304.4 371.7 312 403.8 312 411.2c0 8.044-5.984 20.79-22.06 20.79c-12.53 0-14.27-.9059-24.94-28.07c-24.75-62.91-61.74-99.9-80.98-99.9c-13.8 0-24.02 11.27-24.02 23.99c0 7.041 3.083 14.02 9.016 18.76C238.1 402 211.4 480 289.9 480C333.8 480 360 445 360 411.2c0-12.7-5.328-35.21-14.83-59.33h99.86C481.1 351.9 512 321.9 512 284.1C512 261.8 499.9 241 481.5 229.1z\"]\n};\nvar faChessPawn = {\n prefix: 'far',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M296 463.1H23.1c-13.25 0-23.1 10.75-23.1 24s10.75 24 23.1 24h272c13.25 0 23.1-10.75 23.1-23.1S309.3 463.1 296 463.1zM55.1 287.1L80 287.1v29.5c0 40.25-3.5 81.25-23.38 114.5h53.5C125.1 394.1 128 354.6 128 317.5v-29.5h64v29.5c0 37.13 2.875 77.5 17.88 114.5h53.5C243.5 398.7 240 357.7 240 317.5V287.1l24-.0001C277.3 287.1 288 277.3 288 263.1c0-13.25-10.75-24-23.1-24H241c23.75-21.88 38.1-53.12 38.1-87.1c0-9.393-1.106-19.05-3.451-28.86C272.3 105.4 244.9 32 159.1 32C93.75 32 40 85.75 40 151.1c0 34.88 15.12 66.12 39 88H55.1C42.75 239.1 32 250.7 32 263.1C32 277.3 42.75 287.1 55.1 287.1zM160 79.1c39.75 0 72 32.25 72 72S199.8 223.1 160 223.1S88 191.7 88 151.1S120.2 79.1 160 79.1z\"]\n};\nvar faCreditCard = {\n prefix: 'far',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M168 336C181.3 336 192 346.7 192 360C192 373.3 181.3 384 168 384H120C106.7 384 96 373.3 96 360C96 346.7 106.7 336 120 336H168zM360 336C373.3 336 384 346.7 384 360C384 373.3 373.3 384 360 384H248C234.7 384 224 373.3 224 360C224 346.7 234.7 336 248 336H360zM512 32C547.3 32 576 60.65 576 96V416C576 451.3 547.3 480 512 480H64C28.65 480 0 451.3 0 416V96C0 60.65 28.65 32 64 32H512zM512 80H64C55.16 80 48 87.16 48 96V128H528V96C528 87.16 520.8 80 512 80zM528 224H48V416C48 424.8 55.16 432 64 432H512C520.8 432 528 424.8 528 416V224z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faBell = {\n prefix: 'far',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M256 32V49.88C328.5 61.39 384 124.2 384 200V233.4C384 278.8 399.5 322.9 427.8 358.4L442.7 377C448.5 384.2 449.6 394.1 445.6 402.4C441.6 410.7 433.2 416 424 416H24C14.77 416 6.365 410.7 2.369 402.4C-1.628 394.1-.504 384.2 5.26 377L20.17 358.4C48.54 322.9 64 278.8 64 233.4V200C64 124.2 119.5 61.39 192 49.88V32C192 14.33 206.3 0 224 0C241.7 0 256 14.33 256 32V32zM216 96C158.6 96 112 142.6 112 200V233.4C112 281.3 98.12 328 72.31 368H375.7C349.9 328 336 281.3 336 233.4V200C336 142.6 289.4 96 232 96H216zM288 448C288 464.1 281.3 481.3 269.3 493.3C257.3 505.3 240.1 512 224 512C207 512 190.7 505.3 178.7 493.3C166.7 481.3 160 464.1 160 448H288z\"]\n};\nvar faFile = {\n prefix: 'far',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.65 28.65 0 64 0H229.5C246.5 0 262.7 6.743 274.7 18.75L365.3 109.3C377.3 121.3 384 137.5 384 154.5V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM336 448V160H256C238.3 160 224 145.7 224 128V48H64C55.16 48 48 55.16 48 64V448C48 456.8 55.16 464 64 464H320C328.8 464 336 456.8 336 448z\"]\n};\nvar faHospital = {\n prefix: 'far',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M296 96C296 87.16 303.2 80 312 80H328C336.8 80 344 87.16 344 96V120H368C376.8 120 384 127.2 384 136V152C384 160.8 376.8 168 368 168H344V192C344 200.8 336.8 208 328 208H312C303.2 208 296 200.8 296 192V168H272C263.2 168 256 160.8 256 152V136C256 127.2 263.2 120 272 120H296V96zM408 0C447.8 0 480 32.24 480 72V80H568C607.8 80 640 112.2 640 152V440C640 479.8 607.8 512 568 512H71.98C32.19 512 0 479.8 0 440V152C0 112.2 32.24 80 72 80H160V72C160 32.24 192.2 0 232 0L408 0zM480 128V464H568C581.3 464 592 453.3 592 440V336H536C522.7 336 512 325.3 512 312C512 298.7 522.7 288 536 288H592V240H536C522.7 240 512 229.3 512 216C512 202.7 522.7 192 536 192H592V152C592 138.7 581.3 128 568 128H480zM48 152V192H104C117.3 192 128 202.7 128 216C128 229.3 117.3 240 104 240H48V288H104C117.3 288 128 298.7 128 312C128 325.3 117.3 336 104 336H48V440C48 453.3 58.74 464 71.98 464H160V128H72C58.75 128 48 138.7 48 152V152zM208 464H272V400C272 373.5 293.5 352 320 352C346.5 352 368 373.5 368 400V464H432V72C432 58.75 421.3 48 408 48H232C218.7 48 208 58.75 208 72V464z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faChessRook = {\n prefix: 'far',\n iconName: 'chess-rook',\n icon: [384, 512, [9820], \"f447\", \"M360 464H23.1C10.75 464 0 474.7 0 487.1S10.75 512 23.1 512H360C373.3 512 384 501.3 384 488S373.3 464 360 464zM345.1 32h-308C17 32 0 49 0 70v139.4C0 218.8 4 227.5 11 233.6L48 265.8c0 8.885 .0504 17.64 .0504 26.46c0 39.32-1.001 79.96-11.93 139.8h49C94.95 374.3 96.11 333.3 96.11 285.5C96.11 270.7 96 255.1 96 238.2L48 196.5V80h64V128H160V80h64V128h48V80h64v116.5L288 238.2c0 16.77-.1124 32.25-.1124 47.1c0 47.79 1.164 89.15 10.99 146.7h49c-10.92-59.83-11.93-100.6-11.93-139.9C335.9 283.3 336 274.6 336 265.8l37-32.13C380 227.5 384 218.8 384 209.4V70C384 49 367 32 345.1 32zM192 224C174.4 224 160 238.4 160 256v64h64V256C224 238.4 209.6 224 192 224z\"]\n};\nvar faStarHalf = {\n prefix: 'far',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M293.3 .6123C304.2 3.118 311.9 12.82 311.9 24V408.7C311.9 417.5 307.1 425.7 299.2 429.8L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.1 115.1 483.9L142.2 328.4L31.11 218.3C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C271.2 3.46 282.4-1.893 293.3 .6127L293.3 .6123zM263.9 128.4L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L263.9 394.3L263.9 128.4z\"]\n};\nvar faChessKing = {\n prefix: 'far',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M391.9 464H55.95c-13.25 0-23.1 10.75-23.1 23.1S42.7 512 55.95 512h335.1c13.25 0 23.1-10.75 23.1-23.1S405.2 464 391.9 464zM448 216c0-11.82-3.783-23.51-11.08-33.17c-10.3-14.39-27-22.88-44.73-22.88L247.9 160V104h31.1c13.2 0 24.06-10.8 24.06-24S293.1 56 279.9 56h-31.1V23.1C247.9 10.8 237.2 0 223.1 0S199.9 10.8 199.9 23.1V56H167.9c-13.2 0-23.97 10.8-23.97 24S154.7 104 167.9 104h31.1V160H55.95C24.72 160 0 185.3 0 215.9C0 221.6 .8893 227.4 2.704 233L68.45 432h50.5L48.33 218.4C48.09 217.6 47.98 216.9 47.98 216.1C47.98 212.3 50.93 208 55.95 208h335.9c6.076 0 8.115 5.494 8.115 8.113c0 .6341-.078 1.269-.2405 1.887L328.8 432h50.62l65.1-199.2C447.2 227.3 448 221.7 448 216z\"]\n};\nvar faCircleUser = {\n prefix: 'far',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M256 112c-48.6 0-88 39.4-88 88C168 248.6 207.4 288 256 288s88-39.4 88-88C344 151.4 304.6 112 256 112zM256 240c-22.06 0-40-17.95-40-40C216 177.9 233.9 160 256 160s40 17.94 40 40C296 222.1 278.1 240 256 240zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-46.73 0-89.76-15.68-124.5-41.79C148.8 389 182.4 368 220.2 368h71.69c37.75 0 71.31 21.01 88.68 54.21C345.8 448.3 302.7 464 256 464zM416.2 388.5C389.2 346.3 343.2 320 291.8 320H220.2c-51.36 0-97.35 26.25-124.4 68.48C65.96 352.5 48 306.3 48 256c0-114.7 93.31-208 208-208s208 93.31 208 208C464 306.3 446 352.5 416.2 388.5z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faCopy = {\n prefix: 'far',\n iconName: 'copy',\n icon: [512, 512, [], \"f0c5\", \"M502.6 70.63l-61.25-61.25C435.4 3.371 427.2 0 418.7 0H255.1c-35.35 0-64 28.66-64 64l.0195 256C192 355.4 220.7 384 256 384h192c35.2 0 64-28.8 64-64V93.25C512 84.77 508.6 76.63 502.6 70.63zM464 320c0 8.836-7.164 16-16 16H255.1c-8.838 0-16-7.164-16-16L239.1 64.13c0-8.836 7.164-16 16-16h128L384 96c0 17.67 14.33 32 32 32h47.1V320zM272 448c0 8.836-7.164 16-16 16H63.1c-8.838 0-16-7.164-16-16L47.98 192.1c0-8.836 7.164-16 16-16H160V128H63.99c-35.35 0-64 28.65-64 64l.0098 256C.002 483.3 28.66 512 64 512h192c35.2 0 64-28.8 64-64v-32h-47.1L272 448z\"]\n};\nvar faShareFromSquare = {\n prefix: 'far',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M400 255.4V240 208c0-8.8-7.2-16-16-16H352 336 289.5c-50.9 0-93.9 33.5-108.3 79.6c-3.3-9.4-5.2-19.8-5.2-31.6c0-61.9 50.1-112 112-112h48 16 32c8.8 0 16-7.2 16-16V80 64.6L506 160 400 255.4zM336 240h16v48c0 17.7 14.3 32 32 32h3.7c7.9 0 15.5-2.9 21.4-8.2l139-125.1c7.6-6.8 11.9-16.5 11.9-26.7s-4.3-19.9-11.9-26.7L409.9 8.9C403.5 3.2 395.3 0 386.7 0C367.5 0 352 15.5 352 34.7V80H336 304 288c-88.4 0-160 71.6-160 160c0 60.4 34.6 99.1 63.9 120.9c5.9 4.4 11.5 8.1 16.7 11.2c4.4 2.7 8.5 4.9 11.9 6.6c3.4 1.7 6.2 3 8.2 3.9c2.2 1 4.6 1.4 7.1 1.4h2.5c9.8 0 17.8-8 17.8-17.8c0-7.8-5.3-14.7-11.6-19.5l0 0c-.4-.3-.7-.5-1.1-.8c-1.7-1.1-3.4-2.5-5-4.1c-.8-.8-1.7-1.6-2.5-2.6s-1.6-1.9-2.4-2.9c-1.8-2.5-3.5-5.3-5-8.5c-2.6-6-4.3-13.3-4.3-22.4c0-36.1 29.3-65.5 65.5-65.5H304h32zM72 32C32.2 32 0 64.2 0 104V440c0 39.8 32.2 72 72 72H408c39.8 0 72-32.2 72-72V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V104c0-13.3 10.7-24 24-24h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H72z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faCopyright = {\n prefix: 'far',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 464c-114.7 0-208-93.31-208-208S141.3 48 256 48s208 93.31 208 208S370.7 464 256 464zM255.1 176C255.1 176 255.1 176 255.1 176c21.06 0 40.92 8.312 55.83 23.38c9.375 9.344 24.53 9.5 33.97 .1562c9.406-9.344 9.469-24.53 .1562-33.97c-24-24.22-55.95-37.56-89.95-37.56c0 0 .0313 0 0 0c-33.97 0-65.95 13.34-89.95 37.56c-49.44 49.88-49.44 131 0 180.9c24 24.22 55.98 37.56 89.95 37.56c.0313 0 0 0 0 0c34 0 65.95-13.34 89.95-37.56c9.312-9.438 9.25-24.62-.1562-33.97c-9.438-9.312-24.59-9.219-33.97 .1562c-14.91 15.06-34.77 23.38-55.83 23.38c0 0 .0313 0 0 0c-21.09 0-40.95-8.312-55.89-23.38c-30.94-31.22-30.94-82.03 0-113.3C214.2 184.3 234 176 255.1 176z\"]\n};\nvar faMap = {\n prefix: 'far',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M565.6 36.24C572.1 40.72 576 48.11 576 56V392C576 401.1 569.8 410.9 560.5 414.4L392.5 478.4C387.4 480.4 381.7 480.5 376.4 478.8L192.5 417.5L32.54 478.4C25.17 481.2 16.88 480.2 10.38 475.8C3.882 471.3 0 463.9 0 456V120C0 110 6.15 101.1 15.46 97.57L183.5 33.57C188.6 31.6 194.3 31.48 199.6 33.23L383.5 94.52L543.5 33.57C550.8 30.76 559.1 31.76 565.6 36.24H565.6zM48 421.2L168 375.5V90.83L48 136.5V421.2zM360 137.3L216 89.3V374.7L360 422.7V137.3zM408 421.2L528 375.5V90.83L408 136.5V421.2z\"]\n};\nvar faBellSlash = {\n prefix: 'far',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M183.6 118.6C206.5 82.58 244.1 56.84 288 49.88V32C288 14.33 302.3 .0003 320 .0003C337.7 .0003 352 14.33 352 32V49.88C424.5 61.39 480 124.2 480 200V233.4C480 278.8 495.5 322.9 523.8 358.4L538.7 377C543.1 383.5 545.4 392.2 542.6 400L630.8 469.1C641.2 477.3 643.1 492.4 634.9 502.8C626.7 513.2 611.6 515.1 601.2 506.9L9.196 42.89C-1.236 34.71-3.065 19.63 5.112 9.196C13.29-1.236 28.37-3.065 38.81 5.112L183.6 118.6zM221.7 148.4L450.7 327.1C438.4 298.2 432 266.1 432 233.4V200C432 142.6 385.4 96 328 96H312C273.3 96 239.6 117.1 221.7 148.4V148.4zM160 233.4V222.1L206.7 258.9C202.7 297.7 189.5 335.2 168.3 368H345.2L406.2 416H120C110.8 416 102.4 410.7 98.37 402.4C94.37 394.1 95.5 384.2 101.3 377L116.2 358.4C144.5 322.9 160 278.8 160 233.4V233.4zM384 448C384 464.1 377.3 481.3 365.3 493.3C353.3 505.3 336.1 512 320 512C303 512 286.7 505.3 274.7 493.3C262.7 481.3 256 464.1 256 448H384z\"]\n};\nvar faHandLizard = {\n prefix: 'far',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M512 331.8V424c0 13.25-10.75 24-24 24c-13.25 0-24-10.75-24-24v-92.17c0-10.09-3.031-19.8-8.766-28.08l-118.6-170.5C327.4 119.1 312.2 112 295.1 112H53.32c-2.5 0-5.25 2.453-5.313 4.172c-.2969 9.5 3.156 18.47 9.75 25.28C64.36 148.3 73.2 152 82.67 152h161.8c17.09 0 33.4 8.281 43.4 22.14c9.984 13.88 12.73 31.83 7.328 48.05l-9.781 29.34C278.2 273.3 257.8 288 234.9 288H138.7C129.2 288 120.4 291.8 113.8 298.5c-6.594 6.812-10.05 15.78-9.75 25.28C104.1 325.5 106.8 328 109.3 328h156.6c5.188 0 10.14 1.688 14.3 4.797l78.22 58.67c6.031 4.531 9.594 11.66 9.594 19.2L367.1 424c0 13.25-10.75 24-24 24s-24-10.75-24-24v-1.328L257.8 376H109.3c-28.48 0-52.39-22.72-53.28-50.64c-.7187-22.61 7.531-43.98 23.23-60.2C94.1 248.9 116.1 240 138.7 240h96.19c2.297 0 4.328-1.469 5.063-3.656l9.781-29.33c.7031-2.141-.0156-3.797-.7344-4.797C248.2 201.2 246.9 200 244.6 200H82.67c-22.58 0-43.67-8.938-59.39-25.16C7.575 158.6-.6755 137.3 .0433 114.6C.9339 86.72 24.84 64 53.32 64h242.7c31.94 0 61.86 15.67 80.05 41.92l118.6 170.5C506 292.8 512 311.9 512 331.8z\"]\n};\nvar faFaceSmile = {\n prefix: 'far',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 352C293.2 352 319.2 334.5 334.4 318.1C343.3 308.4 358.5 307.7 368.3 316.7C378 325.7 378.6 340.9 369.6 350.6C347.7 374.5 309.7 400 256 400C202.3 400 164.3 374.5 142.4 350.6C133.4 340.9 133.1 325.7 143.7 316.7C153.5 307.7 168.7 308.4 177.6 318.1C192.8 334.5 218.8 352 256 352zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faSmile = faFaceSmile;\nvar faHandPeace = {\n prefix: 'far',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M412 160c-8.326 0-16.3 1.51-23.68 4.27C375.1 151.8 358.9 144 340 144c-11.64 0-22.44 3.223-32.03 8.418l11.12-68.95c.6228-3.874 .9243-7.725 .9243-11.53c0-36.08-28.91-71.95-72.09-71.95c-34.68 0-65.31 25.16-71.03 60.54L173.4 82.22L168.9 72.77c-12.4-25.75-38.07-40.78-64.89-40.78c-40.8 0-72.01 33.28-72.01 72.07c0 10.48 2.296 21.11 7.144 31.18L89.05 238.9C64.64 250.4 48 275.7 48 303.1v80c0 22.06 10.4 43.32 27.83 56.86l45.95 35.74c29.35 22.83 65.98 35.41 103.2 35.41l78.81 .0352C400.9 512 480 432.1 480 335.8v-107.5C480 189.6 447.9 160 412 160zM320 212.3C320 201.1 328.1 192 340 192c11.02 0 20 9.078 20 20.25v55.5C360 278.9 351 288 340 288C328.1 288 320 278.9 320 267.8V212.3zM247.9 47.98c12.05 0 24.13 9.511 24.13 23.98c0 1.277-.1022 2.57-.3134 3.871L248.4 220.5C240.7 217.6 232.4 215.1 223.9 215.1c0 0 .002 0 0 0c-4.475 0-8.967 .4199-13.38 1.254l-10.55 1.627l24.32-150.7C226.2 56.42 236.4 47.98 247.9 47.98zM79.1 104c0-13.27 10.79-24.04 24.02-24.04c8.937 0 17.5 5.023 21.61 13.61l61.29 127.3L137.3 228.5L82.38 114.4C80.76 111.1 79.1 107.5 79.1 104zM303.8 464l-78.81-.0352c-26.56 0-52.72-8.984-73.69-25.3l-45.97-35.75C99.47 398.4 96 391.3 96 383.1v-80c0-11.23 7.969-21.11 17.59-23.22l105.3-16.23C220.6 264.2 222.3 263.1 223.9 263.1c11.91 0 24.09 9.521 24.09 24.06c0 11.04-7.513 20.95-17.17 23.09L172.8 319c-12.03 1.633-20.78 11.92-20.78 23.75c0 20.21 18.82 24.08 23.7 24.08c2.645 0 64.61-8.619 65.54-8.826c23.55-5.227 41.51-22.23 49.73-43.64C303.3 327.5 320.6 336 340 336c8.326 0 16.31-1.51 23.69-4.27C376 344.2 393.1 352 412 352c.1992 0 10.08-.4453 18.65-2.92C423.9 413.5 369.9 464 303.8 464zM432 283.8C432 294.9 423 304 412 304c-11.02 0-20-9.078-20-20.25v-55.5C392 217.1 400.1 208 412 208c11.02 0 20 9.078 20 20.25V283.8z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'far',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4zM238.9 177.1L221.4 243C219.1 251.6 210.4 256.6 201.8 254.3L136.7 236.9C118.9 232.1 108.4 213.8 113.1 196.1C117.9 178.3 136.2 167.7 153.1 172.5L170.1 176.8L174.4 160.7C179.2 142.9 197.5 132.4 215.3 137.1C233.1 141.9 243.6 160.2 238.9 177.1H238.9zM341.9 176.8L358 172.5C375.8 167.7 394.1 178.3 398.9 196.1C403.6 213.8 393.1 232.1 375.3 236.9L310.2 254.3C301.6 256.6 292.9 251.6 290.6 243L273.1 177.1C268.4 160.2 278.9 141.9 296.7 137.1C314.5 132.4 332.8 142.9 337.6 160.7L341.9 176.8zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faBuilding = {\n prefix: 'far',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M88 104C88 95.16 95.16 88 104 88H152C160.8 88 168 95.16 168 104V152C168 160.8 160.8 168 152 168H104C95.16 168 88 160.8 88 152V104zM280 88C288.8 88 296 95.16 296 104V152C296 160.8 288.8 168 280 168H232C223.2 168 216 160.8 216 152V104C216 95.16 223.2 88 232 88H280zM88 232C88 223.2 95.16 216 104 216H152C160.8 216 168 223.2 168 232V280C168 288.8 160.8 296 152 296H104C95.16 296 88 288.8 88 280V232zM280 216C288.8 216 296 223.2 296 232V280C296 288.8 288.8 296 280 296H232C223.2 296 216 288.8 216 280V232C216 223.2 223.2 216 232 216H280zM0 64C0 28.65 28.65 0 64 0H320C355.3 0 384 28.65 384 64V448C384 483.3 355.3 512 320 512H64C28.65 512 0 483.3 0 448V64zM48 64V448C48 456.8 55.16 464 64 464H144V400C144 373.5 165.5 352 192 352C218.5 352 240 373.5 240 400V464H320C328.8 464 336 456.8 336 448V64C336 55.16 328.8 48 320 48H64C55.16 48 48 55.16 48 64z\"]\n};\nvar faFaceGrinBeamSweat = {\n prefix: 'far',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M464 128C437.5 128 416 107 416 81.01C416 76.01 417.8 69.74 420.6 62.87C420.9 62.17 421.2 61.46 421.6 60.74C430.5 40.51 448.1 15.86 457.6 3.281C460.8-1.094 467.2-1.094 470.4 3.281C483.4 20.65 512 61.02 512 81.01C512 102.7 497.1 120.8 476.8 126.3C472.7 127.4 468.4 128 464 128L464 128zM391.1 50.53C387.8 58.57 384 69.57 384 81.01C384 84.1 384.3 88.91 384.9 92.72C349.4 64.71 304.7 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 219.7 454.7 185.5 438.3 155.8C446.4 158.5 455.1 160 464 160C473.6 160 482.8 158.3 491.4 155.2C504.7 186.2 512 220.2 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 .0002 256 .0002C307.4 .0002 355.3 15.15 395.4 41.23C393.9 44.32 392.4 47.43 391.1 50.53V50.53zM255.9 399.1C205.6 399.1 161.5 374.6 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.9 255.9 318.9C289 318.9 320.6 315.1 349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C350.4 374.6 306.3 399.1 255.9 399.1zM217.6 228.8L217.4 228.5C217.2 228.3 217 228 216.7 227.6C216 226.8 215.1 225.7 213.9 224.3C211.4 221.4 207.9 217.7 203.7 213.1C194.9 206.2 184.8 200 176 200C167.2 200 157.1 206.2 148.3 213.1C144.1 217.7 140.6 221.4 138.1 224.3C136.9 225.7 135.1 226.8 135.3 227.6C134.1 228 134.8 228.3 134.6 228.5L134.4 228.8L134.4 228.8C132.3 231.6 128.7 232.7 125.5 231.6C122.2 230.5 119.1 227.4 119.1 224C119.1 206.1 126.7 188.4 136.6 175.2C146.4 162.2 160.5 152 175.1 152C191.5 152 205.6 162.2 215.4 175.2C225.3 188.4 231.1 206.1 231.1 224C231.1 227.4 229.8 230.5 226.5 231.6C223.3 232.7 219.7 231.6 217.6 228.8L217.6 228.8zM377.6 228.8L377.6 228.8L377.4 228.5C377.2 228.3 377 228 376.7 227.6C376 226.8 375.1 225.7 373.9 224.3C371.4 221.4 367.9 217.7 363.7 213.1C354.9 206.2 344.8 200 336 200C327.2 200 317.1 206.2 308.3 213.1C304.1 217.7 300.6 221.4 298.1 224.3C296.9 225.7 295.1 226.8 295.3 227.6C294.1 228 294.8 228.3 294.6 228.5L294.4 228.8L294.4 228.8C292.3 231.6 288.7 232.7 285.5 231.6C282.2 230.5 280 227.4 280 224C280 206.1 286.7 188.4 296.6 175.2C306.4 162.2 320.5 152 336 152C351.5 152 365.6 162.2 375.4 175.2C385.3 188.4 392 206.1 392 224C392 227.4 389.8 230.5 386.5 231.6C383.3 232.7 379.7 231.6 377.6 228.8V228.8z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faMoon = {\n prefix: 'far',\n iconName: 'moon',\n icon: [512, 512, [127769, 9214], \"f186\", \"M421.6 379.9c-.6641 0-1.35 .0625-2.049 .1953c-11.24 2.143-22.37 3.17-33.32 3.17c-94.81 0-174.1-77.14-174.1-175.5c0-63.19 33.79-121.3 88.73-152.6c8.467-4.812 6.339-17.66-3.279-19.44c-11.2-2.078-29.53-3.746-40.9-3.746C132.3 31.1 32 132.2 32 256c0 123.6 100.1 224 223.8 224c69.04 0 132.1-31.45 173.8-82.93C435.3 389.1 429.1 379.9 421.6 379.9zM255.8 432C158.9 432 80 353 80 256c0-76.32 48.77-141.4 116.7-165.8C175.2 125 163.2 165.6 163.2 207.8c0 99.44 65.13 183.9 154.9 212.8C298.5 428.1 277.4 432 255.8 432z\"]\n};\nvar faCalendar = {\n prefix: 'far',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"]\n};\nvar faFaceGrinTongueWink = {\n prefix: 'far',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M159.6 220C148.1 220 139.7 223.8 134.2 229.7C126.7 237.7 114 238.1 105.9 230.6C97.89 223 97.48 210.4 105 202.3C119.6 186.8 140.3 180 159.6 180C178.1 180 199.7 186.8 214.2 202.3C221.8 210.4 221.4 223 213.3 230.6C205.2 238.1 192.6 237.7 185 229.7C179.6 223.8 170.3 220 159.6 220zM312.4 208C312.4 194.7 323.1 184 336.4 184C349.6 184 360.4 194.7 360.4 208C360.4 221.3 349.6 232 336.4 232C323.1 232 312.4 221.3 312.4 208zM256 208C256 163.8 291.8 128 336 128C380.2 128 416 163.8 416 208C416 252.2 380.2 288 336 288C291.8 288 256 252.2 256 208zM336 256C362.5 256 384 234.5 384 208C384 181.5 362.5 160 336 160C309.5 160 288 181.5 288 208C288 234.5 309.5 256 336 256zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM348.3 442.4C416.9 408.4 464 337.7 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 337.7 95.13 408.4 163.7 442.4C161.3 434 160 425.2 160 416V363.6C151.1 355.6 143.3 346.5 136.9 336.5C126.5 320.4 143.7 303.1 162.3 308.4C191.3 315.1 222.8 318.8 255.9 318.8C289 318.8 320.6 315.1 349.5 308.4C368.2 303.1 385.4 320.4 374.1 336.5C368.6 346.4 360.8 355.5 352 363.5V416C352 425.2 350.7 434 348.3 442.4H348.3zM320 416V378.6C320 363.9 308.1 352 293.4 352H291.4C280.1 352 270.3 359.9 267.8 370.9C264.1 383.5 247 383.5 244.2 370.9C241.7 359.9 231.9 352 220.6 352H218.6C203.9 352 192 363.9 192 378.6V416C192 451.3 220.7 480 256 480C291.3 480 320 451.3 320 416z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faClone = {\n prefix: 'far',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M64 464H288C296.8 464 304 456.8 304 448V384H352V448C352 483.3 323.3 512 288 512H64C28.65 512 0 483.3 0 448V224C0 188.7 28.65 160 64 160H128V208H64C55.16 208 48 215.2 48 224V448C48 456.8 55.16 464 64 464zM160 64C160 28.65 188.7 0 224 0H448C483.3 0 512 28.65 512 64V288C512 323.3 483.3 352 448 352H224C188.7 352 160 323.3 160 288V64zM224 304H448C456.8 304 464 296.8 464 288V64C464 55.16 456.8 48 448 48H224C215.2 48 208 55.16 208 64V288C208 296.8 215.2 304 224 304z\"]\n};\nvar faFaceAngry = {\n prefix: 'far',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M328.4 393.5C318.7 402.6 303.5 402.1 294.5 392.4C287.1 384.5 274.4 376 256 376C237.6 376 224.9 384.5 217.5 392.4C208.5 402.1 193.3 402.6 183.6 393.5C173.9 384.5 173.4 369.3 182.5 359.6C196.7 344.3 221.4 328 256 328C290.6 328 315.3 344.3 329.5 359.6C338.6 369.3 338.1 384.5 328.4 393.5zM144.4 240C144.4 231.2 147.9 223.2 153.7 217.4L122.9 207.2C114.6 204.4 110 195.3 112.8 186.9C115.6 178.6 124.7 174 133.1 176.8L229.1 208.8C237.4 211.6 241.1 220.7 239.2 229.1C236.4 237.4 227.3 241.1 218.9 239.2L208.1 235.6C208.3 237 208.4 238.5 208.4 240C208.4 257.7 194 272 176.4 272C158.7 272 144.4 257.7 144.4 240V240zM368.4 240C368.4 257.7 354 272 336.4 272C318.7 272 304.4 257.7 304.4 240C304.4 238.4 304.5 236.8 304.7 235.3L293.1 239.2C284.7 241.1 275.6 237.4 272.8 229.1C270 220.7 274.6 211.6 282.9 208.8L378.9 176.8C387.3 174 396.4 178.6 399.2 186.9C401.1 195.3 397.4 204.4 389.1 207.2L358.9 217.2C364.7 223 368.4 231.1 368.4 240H368.4zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464z\"]\n};\nvar faAngry = faFaceAngry;\nvar faRectangleXmark = {\n prefix: 'far',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M175 175C184.4 165.7 199.6 165.7 208.1 175L255.1 222.1L303 175C312.4 165.7 327.6 165.7 336.1 175C346.3 184.4 346.3 199.6 336.1 208.1L289.9 255.1L336.1 303C346.3 312.4 346.3 327.6 336.1 336.1C327.6 346.3 312.4 346.3 303 336.1L255.1 289.9L208.1 336.1C199.6 346.3 184.4 346.3 175 336.1C165.7 327.6 165.7 312.4 175 303L222.1 255.1L175 208.1C165.7 199.6 165.7 184.4 175 175V175zM0 96C0 60.65 28.65 32 64 32H448C483.3 32 512 60.65 512 96V416C512 451.3 483.3 480 448 480H64C28.65 480 0 451.3 0 416V96zM48 96V416C48 424.8 55.16 432 64 432H448C456.8 432 464 424.8 464 416V96C464 87.16 456.8 80 448 80H64C55.16 80 48 87.16 48 96z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faPaperPlane = {\n prefix: 'far',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z\"]\n};\nvar faLifeRing = {\n prefix: 'far',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M464.1 431C474.3 440.4 474.3 455.6 464.1 464.1C455.6 474.3 440.4 474.3 431 464.1L419.3 453.2C374.9 489.9 318.1 512 256 512C193.9 512 137.1 489.9 92.74 453.2L80.97 464.1C71.6 474.3 56.4 474.3 47.03 464.1C37.66 455.6 37.66 440.4 47.03 431L58.8 419.3C22.08 374.9 0 318.1 0 256C0 193.9 22.08 137.1 58.8 92.74L47.03 80.97C37.66 71.6 37.66 56.4 47.03 47.03C56.4 37.66 71.6 37.66 80.97 47.03L92.74 58.8C137.1 22.08 193.9 0 256 0C318.1 0 374.9 22.08 419.3 58.8L431 47.03C440.4 37.66 455.6 37.66 464.1 47.03C474.3 56.4 474.3 71.6 464.1 80.97L453.2 92.74C489.9 137.1 512 193.9 512 256C512 318.1 489.9 374.9 453.2 419.3L464.1 431zM304.8 338.7C290.5 347.2 273.8 352 256 352C238.2 352 221.5 347.2 207.2 338.7L126.9 419.1C162.3 447.2 207.2 464 256 464C304.8 464 349.7 447.2 385.1 419.1L304.8 338.7zM464 256C464 207.2 447.2 162.3 419.1 126.9L338.7 207.2C347.2 221.5 352 238.2 352 256C352 273.8 347.2 290.5 338.7 304.8L419.1 385.1C447.2 349.7 464 304.8 464 256V256zM256 48C207.2 48 162.3 64.8 126.9 92.93L207.2 173.3C221.5 164.8 238.2 160 256 160C273.8 160 290.5 164.8 304.8 173.3L385.1 92.93C349.7 64.8 304.8 48 256 48V48zM173.3 304.8C164.8 290.5 160 273.8 160 256C160 238.2 164.8 221.5 173.3 207.2L92.93 126.9C64.8 162.3 48 207.2 48 256C48 304.8 64.8 349.7 92.93 385.1L173.3 304.8zM256 208C229.5 208 208 229.5 208 256C208 282.5 229.5 304 256 304C282.5 304 304 282.5 304 256C304 229.5 282.5 208 256 208z\"]\n};\nvar faFaceGrimace = {\n prefix: 'far',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M344 288C374.9 288 400 313.1 400 344C400 374.9 374.9 400 344 400H168C137.1 400 112 374.9 112 344C112 313.1 137.1 288 168 288H344zM168 320C154.7 320 144 330.7 144 344C144 357.3 154.7 368 168 368H176V320H168zM208 368H240V320H208V368zM304 320H272V368H304V320zM336 368H344C357.3 368 368 357.3 368 344C368 330.7 357.3 320 344 320H336V368zM208.4 208C208.4 225.7 194 240 176.4 240C158.7 240 144.4 225.7 144.4 208C144.4 190.3 158.7 176 176.4 176C194 176 208.4 190.3 208.4 208zM304.4 208C304.4 190.3 318.7 176 336.4 176C354 176 368.4 190.3 368.4 208C368.4 225.7 354 240 336.4 240C318.7 240 304.4 225.7 304.4 208zM0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faCalendarMinus = {\n prefix: 'far',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M152 352C138.7 352 128 341.3 128 328C128 314.7 138.7 304 152 304H296C309.3 304 320 314.7 320 328C320 341.3 309.3 352 296 352H152zM128 0C141.3 0 152 10.75 152 24V64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0zM400 192H48V448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192z\"]\n};\nvar faCircleXmark = {\n prefix: 'far',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M175 175C184.4 165.7 199.6 165.7 208.1 175L255.1 222.1L303 175C312.4 165.7 327.6 165.7 336.1 175C346.3 184.4 346.3 199.6 336.1 208.1L289.9 255.1L336.1 303C346.3 312.4 346.3 327.6 336.1 336.1C327.6 346.3 312.4 346.3 303 336.1L255.1 289.9L208.1 336.1C199.6 346.3 184.4 346.3 175 336.1C165.7 327.6 165.7 312.4 175 303L222.1 255.1L175 208.1C165.7 199.6 165.7 184.4 175 175V175zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faThumbsUp = {\n prefix: 'far',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M96 191.1H32c-17.67 0-32 14.33-32 31.1v223.1c0 17.67 14.33 31.1 32 31.1h64c17.67 0 32-14.33 32-31.1V223.1C128 206.3 113.7 191.1 96 191.1zM512 227c0-36.89-30.05-66.92-66.97-66.92h-99.86C354.7 135.1 360 113.5 360 100.8c0-33.8-26.2-68.78-70.06-68.78c-46.61 0-59.36 32.44-69.61 58.5c-31.66 80.5-60.33 66.39-60.33 93.47c0 12.84 10.36 23.99 24.02 23.99c5.256 0 10.55-1.721 14.97-5.26c76.76-61.37 57.97-122.7 90.95-122.7c16.08 0 22.06 12.75 22.06 20.79c0 7.404-7.594 39.55-25.55 71.59c-2.046 3.646-3.066 7.686-3.066 11.72c0 13.92 11.43 23.1 24 23.1h137.6C455.5 208.1 464 216.6 464 227c0 9.809-7.766 18.03-17.67 18.71c-12.66 .8593-22.36 11.4-22.36 23.94c0 15.47 11.39 15.95 11.39 28.91c0 25.37-35.03 12.34-35.03 42.15c0 11.22 6.392 13.03 6.392 22.25c0 22.66-29.77 13.76-29.77 40.64c0 4.515 1.11 5.961 1.11 9.456c0 10.45-8.516 18.95-18.97 18.95h-52.53c-25.62 0-51.02-8.466-71.5-23.81l-36.66-27.51c-4.315-3.245-9.37-4.811-14.38-4.811c-13.85 0-24.03 11.38-24.03 24.04c0 7.287 3.312 14.42 9.596 19.13l36.67 27.52C235 468.1 270.6 480 306.6 480h52.53c35.33 0 64.36-27.49 66.8-62.2c17.77-12.23 28.83-32.51 28.83-54.83c0-3.046-.2187-6.107-.6406-9.122c17.84-12.15 29.28-32.58 29.28-55.28c0-5.311-.6406-10.54-1.875-15.64C499.9 270.1 512 250.2 512 227z\"]\n};\nvar faWindowMinimize = {\n prefix: 'far',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M0 456C0 442.7 10.75 432 24 432H488C501.3 432 512 442.7 512 456C512 469.3 501.3 480 488 480H24C10.75 480 0 469.3 0 456z\"]\n};\nvar faSquareFull = {\n prefix: 'far',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M512 0V512H0V0H512zM464 48H48V464H464V48z\"]\n};\nvar faNoteSticky = {\n prefix: 'far',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H288V352c0-17.7 14.3-32 32-32h80V96c0-8.8-7.2-16-16-16H64zM288 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V320v5.5c0 17-6.7 33.3-18.7 45.3l-90.5 90.5c-12 12-28.3 18.7-45.3 18.7H288z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faFaceSadTear = {\n prefix: 'far',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M169.6 291.3C172.8 286.9 179.2 286.9 182.4 291.3C195.6 308.6 223.1 349 223.1 369C223.1 395 202.5 416 175.1 416C149.5 416 127.1 395 127.1 369C127.1 349 156.6 308.6 169.6 291.3H169.6zM368 346.8C377.9 355.6 378.7 370.8 369.9 380.7C361 390.6 345.9 391.4 335.1 382.6C314.7 363.5 286.7 352 256 352C242.7 352 232 341.3 232 328C232 314.7 242.7 304 256 304C299 304 338.3 320.2 368 346.8L368 346.8zM335.6 176C353.3 176 367.6 190.3 367.6 208C367.6 225.7 353.3 240 335.6 240C317.1 240 303.6 225.7 303.6 208C303.6 190.3 317.1 176 335.6 176zM175.6 240C157.1 240 143.6 225.7 143.6 208C143.6 190.3 157.1 176 175.6 176C193.3 176 207.6 190.3 207.6 208C207.6 225.7 193.3 240 175.6 240zM256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0zM175.9 448C200.5 458.3 227.6 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48C141.1 48 48 141.1 48 256C48 308.7 67.59 356.8 99.88 393.4C110.4 425.4 140.9 447.9 175.9 448V448z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faHandPointLeft = {\n prefix: 'far',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M264 480h104c79.4 0 144-62.95 144-140.3V231.8c0-23.44-6.104-46.73-17.65-67.35L462.1 108.6C447.5 81.1 417.1 64 385.9 64H336c-27.23 0-51.53 12.51-67.69 32H72C32.3 96 0 128.3 0 168S32.3 240 72 240h56.44C128.1 242.6 128 245.3 128 248c0 25.95 13.79 48.73 34.43 61.4C160.8 315.3 160 321.6 160 328c0 25.95 13.79 48.73 34.43 61.4C192.8 395.3 192 401.6 192 408C192 447.7 224.3 480 264 480zM280 304c13.23 0 24 10.78 24 24S293.1 352 279.9 352H232c-13.23 0-24-10.78-24-24S218.8 304 232 304H280zM248 224v12c0 12.39 3.264 23.93 8.545 34.27C253.9 271.3 251 272 248 272h-48C186.8 272 176 261.2 176 248S186.8 224 200 224H248zM248 144c.2813 0 .5137 .1504 .793 .1602C248.6 146.8 248 149.3 248 152V192h-176C58.77 192 48 181.2 48 168S58.77 144 72 144H248zM388.2 429.9C390.4 422.9 392 415.7 392 408c0-29.04-17.37-53.96-42.18-65.34C350.8 337.8 352 333 352 328c0-7.139-1.273-13.96-3.355-20.46C378.4 297.2 400 269.2 400 236V184C400 170.8 389.3 160 376 160S352 170.8 352 184v52c0 15.44-12.56 28-28 28S296 251.4 296 236V152c0-22.06 17.94-40 40-40h49.88c14.77 0 28.28 7.719 35.27 20.16l31.34 55.78C460 201.4 464 216.6 464 231.8v107.9C464 383.9 431.4 420.9 388.2 429.9zM264 432c-13.23 0-24-10.78-24-24S250.8 384 264 384H320c13.23 0 24 10.78 24 24S333.2 432 320 432H264z\"]\n};\nvar icons = {\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faHandPointRight: faHandPointRight,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faLightbulb: faLightbulb,\n faFlag: faFlag,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faEyeSlash: faEyeSlash,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faHandSpock: faHandSpock,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faBookmark: faBookmark,\n faHandPointDown: faHandPointDown,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faUser: faUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faStar: faStar,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faClipboard: faClipboard,\n faChessQueen: faChessQueen,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faImage: faImage,\n faFolderClosed: faFolderClosed,\n faLemon: faLemon,\n faHandshake: faHandshake,\n faGem: faGem,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faIdBadge: faIdBadge,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faEnvelopeOpen: faEnvelopeOpen,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faFileExcel: faFileExcel,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faHeart: faHeart,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faCircle: faCircle,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faFileAudio: faFileAudio,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faFileCode: faFileCode,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandPointer: faHandPointer,\n faHandScissors: faHandScissors,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faFileVideo: faFileVideo,\n faFilePdf: faFilePdf,\n faComment: faComment,\n faEnvelope: faEnvelope,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faCalendarCheck: faCalendarCheck,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faCalendarPlus: faCalendarPlus,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faKeyboard: faKeyboard,\n faClosedCaptioning: faClosedCaptioning,\n faImages: faImages,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faSun: faSun,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faThumbsDown: faThumbsDown,\n faChessPawn: faChessPawn,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faBell: faBell,\n faFile: faFile,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faChessRook: faChessRook,\n faStarHalf: faStarHalf,\n faChessKing: faChessKing,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faCopy: faCopy,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faCopyright: faCopyright,\n faMap: faMap,\n faBellSlash: faBellSlash,\n faHandLizard: faHandLizard,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faHandPeace: faHandPeace,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faBuilding: faBuilding,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faMoon: faMoon,\n faCalendar: faCalendar,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faClone: faClone,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faPaperPlane: faPaperPlane,\n faLifeRing: faLifeRing,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faThumbsUp: faThumbsUp,\n faWindowMinimize: faWindowMinimize,\n faSquareFull: faSquareFull,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faHandPointLeft: faHandPointLeft\n};\n\nexport { icons as far, prefix, faTrashCan, faTrashAlt, faMessage, faCommentAlt, faFileLines, faFileAlt, faFileText, faCalendarDays, faCalendarAlt, faHandPointRight, faFaceSmileBeam, faSmileBeam, faFaceGrinStars, faGrinStars, faAddressBook, faContactBook, faComments, faPaste, faFileClipboard, faFaceGrinTongueSquint, faGrinTongueSquint, faFaceFlushed, faFlushed, faSquareCaretRight, faCaretSquareRight, faSquareMinus, faMinusSquare, faCompass, faSquareCaretDown, faCaretSquareDown, faFaceKissBeam, faKissBeam, faLightbulb, faFlag, faSquareCheck, faCheckSquare, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faFutbol, faFutbolBall, faSoccerBall, faPenToSquare, faEdit, faHourglassHalf, faHourglass2, faEyeSlash, faHand, faHandPaper, faHandSpock, faFaceKiss, faKiss, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faFaceGrinWide, faGrinAlt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faBookmark, faHandPointDown, faFolder, faFolderBlank, faUser, faSquareCaretLeft, faCaretSquareLeft, faStar, faChessKnight, faFaceLaughSquint, faLaughSquint, faFaceLaugh, faLaugh, faFolderOpen, faClipboard, faChessQueen, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faChartBar, faBarChart, faWindowRestore, faSquarePlus, faPlusSquare, faImage, faFolderClosed, faLemon, faHandshake, faGem, faCirclePlay, faPlayCircle, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faIdBadge, faFaceLaughBeam, faLaughBeam, faRegistered, faAddressCard, faContactCard, faVcard, faFaceTired, faTired, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faEnvelopeOpen, faFileZipper, faFileArchive, faSquare, faSnowflake, faNewspaper, faFaceKissWinkHeart, faKissWinkHeart, faStarHalfStroke, faStarHalfAlt, faFileExcel, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faCircleRight, faArrowAltCircleRight, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faHeart, faFaceSurprise, faSurprise, faCirclePause, faPauseCircle, faCircle, faCircleUp, faArrowAltCircleUp, faFileAudio, faFileImage, faCircleQuestion, faQuestionCircle, faFaceMehBlank, faMehBlank, faEye, faFaceSadCry, faSadCry, faFileCode, faWindowMaximize, faFaceFrown, faFrown, faFloppyDisk, faSave, faCommentDots, faCommenting, faFaceGrinSquint, faGrinSquint, faHandPointer, faHandScissors, faFaceGrinTears, faGrinTears, faCalendarXmark, faCalendarTimes, faFileVideo, faFilePdf, faComment, faEnvelope, faHourglass, faHourglassEmpty, faCalendarCheck, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faRectangleList, faListAlt, faCalendarPlus, faCircleLeft, faArrowAltCircleLeft, faMoneyBill1, faMoneyBillAlt, faClock, faClockFour, faKeyboard, faClosedCaptioning, faImages, faFaceGrin, faGrin, faFaceMeh, faMeh, faIdCard, faDriversLicense, faSun, faFaceLaughWink, faLaughWink, faCircleDown, faArrowAltCircleDown, faThumbsDown, faChessPawn, faCreditCard, faCreditCardAlt, faBell, faFile, faHospital, faHospitalAlt, faHospitalWide, faChessRook, faStarHalf, faChessKing, faCircleUser, faUserCircle, faCopy, faShareFromSquare, faShareSquare, faCopyright, faMap, faBellSlash, faHandLizard, faFaceSmile, faSmile, faHandPeace, faFaceGrinHearts, faGrinHearts, faBuilding, faFaceGrinBeamSweat, faGrinBeamSweat, faMoon, faCalendar, faFaceGrinTongueWink, faGrinTongueWink, faClone, faFaceAngry, faAngry, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faPaperPlane, faLifeRing, faFaceGrimace, faGrimace, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faThumbsUp, faWindowMinimize, faSquareFull, faNoteSticky, faStickyNote, faFaceSadTear, faSadTear, faHandPointLeft };\n","var prefix = \"fas\";\nvar fa0 = {\n prefix: 'fas',\n iconName: '0',\n icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160V320c0 88.4-71.6 160-160 160S0 408.4 0 320V192zM160 96c-53 0-96 43-96 96V320c0 53 43 96 96 96s96-43 96-96V192c0-53-43-96-96-96z\"]\n};\nvar fa1 = {\n prefix: 'fas',\n iconName: '1',\n icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V64z\"]\n};\nvar fa2 = {\n prefix: 'fas',\n iconName: '2',\n icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nvar fa3 = {\n prefix: 'fas',\n iconName: '3',\n icon: [448, 512, [], \"33\", \"M64 64c0-17.7 14.3-32 32-32H336c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L226.3 208H248c75.1 0 136 60.9 136 136s-60.9 136-136 136H169.4c-42.4 0-81.2-24-100.2-61.9l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5H248c39.8 0 72-32.2 72-72s-32.2-72-72-72H144c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L253.7 96H96C78.3 96 64 81.7 64 64z\"]\n};\nvar fa4 = {\n prefix: 'fas',\n iconName: '4',\n icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368H256v80c0 17.7 14.3 32 32 32s32-14.3 32-32V368h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320V160c0-17.7-14.3-32-32-32s-32 14.3-32 32V304H82.4L189 77.6z\"]\n};\nvar fa5 = {\n prefix: 'fas',\n iconName: '5',\n icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H90.7L70.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H100.5c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H32c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nvar fa6 = {\n prefix: 'fas',\n iconName: '6',\n icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3c0 .2 0 .3 0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM64 320c0-53 43-96 96-96s96 43 96 96s-43 96-96 96s-96-43-96-96z\"]\n};\nvar fa7 = {\n prefix: 'fas',\n iconName: '7',\n icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32H288c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa8 = {\n prefix: 'fas',\n iconName: '8',\n icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128h64c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288H192c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h15.9c0 0 .1 0 .1 0h32c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0H144c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nvar fa9 = {\n prefix: 'fas',\n iconName: '9',\n icon: [320, 512, [], \"39\", \"M64 192c0 53 43 96 96 96s96-43 96-96s-43-96-96-96s-96 43-96 96zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6H386.7l42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nvar faArrowsToCircle = {\n prefix: 'fas',\n iconName: 'arrows-to-circle',\n icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7V96c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h18.7L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM384 256c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM114.7 352H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32v18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1v0V96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V320v0c0 0 0-.1 0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4c0 0 .1 0 .1 0h0 96c17.7 0 32 14.3 32 32s-14.3 32-32 32H525.3z\"]\n};\nvar faCircleChevronRight = {\n prefix: 'fas',\n iconName: 'circle-chevron-right',\n icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nvar faChevronCircleRight = faCircleChevronRight;\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTrashCan = {\n prefix: 'fas',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M32 32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64l0 320H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H192l0-320h64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H160 32zm470.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V352H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H512V160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faUserXmark = {\n prefix: 'fas',\n iconName: 'user-xmark',\n icon: [640, 512, [\"user-times\"], \"f235\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faUserTimes = faUserXmark;\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1V192c0 53 43 96 96 96s96-43 96-96V71.1l-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1V192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112V265.3c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V336c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192V71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faCommentAlt = faMessage;\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M144 80c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faDownLeftAndUpRightToCenter = {\n prefix: 'fas',\n iconName: 'down-left-and-up-right-to-center',\n icon: [512, 512, [\"compress-alt\"], \"f422\", \"M473 7c-9.4-9.4-24.6-9.4-33.9 0l-87 87L313 55c-6.9-6.9-17.2-8.9-26.2-5.2S272 62.3 272 72V216c0 13.3 10.7 24 24 24H440c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-39-39 87-87c9.4-9.4 9.4-24.6 0-33.9L473 7zM216 272H72c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39L7 439c-9.4 9.4-9.4 24.6 0 33.9l32 32c9.4 9.4 24.6 9.4 33.9 0l87-87 39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V296c0-13.3-10.7-24-24-24z\"]\n};\nvar faCompressAlt = faDownLeftAndUpRightToCenter;\nvar faExplosion = {\n prefix: 'fas',\n iconName: 'explosion',\n icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87H378.5c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H117.8L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448v0H512v0h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64zM288 0c13.3 0 24 10.7 24 24V72c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faFileLines = {\n prefix: 'fas',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32V416h96V256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V448c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V96H192V256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V64z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8v96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304V208z\"]\n};\nvar faBuildingUn = {\n prefix: 'fas',\n iconName: 'building-un',\n icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM237.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V80c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 160c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm128 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faCalendarDays = {\n prefix: 'fas',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faAnchorCircleCheck = {\n prefix: 'fas',\n iconName: 'anchor-circle-check',\n icon: [640, 512, [], \"e4aa\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faBuildingCircleArrowRight = {\n prefix: 'fas',\n iconName: 'building-circle-arrow-right',\n icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V232.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM640 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM492.7 300.7c-6.2 6.2-6.2 16.4 0 22.6L521.4 352H432c-8.8 0-16 7.2-16 16s7.2 16 16 16h89.4l-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nvar faVolleyball = {\n prefix: 'fas',\n iconName: 'volleyball',\n icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nvar faVolleyballBall = faVolleyball;\nvar faArrowsUpToLine = {\n prefix: 'fas',\n iconName: 'arrows-up-to-line',\n icon: [640, 512, [], \"e4c2\", \"M64 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32C46.3 32 32 46.3 32 64s14.3 32 32 32zM41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 237.3 128 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L448 237.3 448 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nvar faSortDesc = faSortDown;\nvar faCircleMinus = {\n prefix: 'fas',\n iconName: 'circle-minus',\n icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusCircle = faCircleMinus;\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 288h32V480 32zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128h96V480v32h32 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V128c0-35.3-28.7-64-64-64H352v64z\"]\n};\nvar faRightFromBracket = {\n prefix: 'fas',\n iconName: 'right-from-bracket',\n icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96C43 32 0 75 0 128V384c0 53 43 96 96 96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32h64zM504.5 273.4c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22v72H192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32H320v72c0 9.6 5.7 18.2 14.5 22s19 2 26-4.6l144-136z\"]\n};\nvar faSignOutAlt = faRightFromBracket;\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [448, 512, [9883], \"f5d2\", \"M258.9 412.3c-16.7 33.8-31 35.7-34.9 35.7s-18.1-1.9-34.9-35.7c11.4-3.9 23.1-8.4 34.9-13.5c11.8 5.1 23.4 9.7 34.9 13.5zM252.8 312c-9.7 5.8-19.3 11.2-28.8 16c-9.4-4.8-19-10.2-28.8-16c-12.1-7.3-23.6-14.8-34.2-22.4c-.7-10.8-1-22-1-33.6s.4-22.7 1-33.6c10.6-7.6 22.1-15.1 34.2-22.4c9.7-5.8 19.3-11.2 28.8-16c9.4 4.8 19 10.2 28.8 16c12.1 7.3 23.6 14.8 34.2 22.4c.7 10.8 1 22 1 33.6s-.4 22.7-1 33.6c-10.6 7.6-22.1 15.1-34.2 22.4zm184.8 72c20.7-37.1 9.4-82.8-23.6-128c33-45.2 44.3-90.9 23.6-128c-20.2-36.3-62.5-49.3-115.2-43.2C300.4 32.7 266.8 0 224 0s-76.4 32.7-98.4 84.8c-52.7-6.1-95 6.8-115.2 43.2C-10.3 165.1 1 210.8 34 256C1 301.2-10.3 346.9 10.4 384c20.2 36.3 62.5 49.3 115.2 43.2c22 52.1 55.7 84.8 98.4 84.8s76.4-32.7 98.4-84.8c52.7 6.1 95-6.8 115.2-43.2zm-67.8-79.2c18.9 30.2 14.2 44 11.9 48.1c-1.6 2.9-8.4 13-40.2 11.7c2.8-13.1 5-26.9 6.7-41.2c7.6-6.1 14.8-12.3 21.6-18.6zm11.9-145.7c2.3 4.2 7 17.9-11.9 48.1c-6.8-6.3-14-12.5-21.6-18.6c-1.7-14.3-3.9-28-6.7-41.2c31.8-1.4 38.6 8.7 40.2 11.7zM224 64c3.9 0 18.1 1.9 34.9 35.7c-11.4 3.9-23.1 8.4-34.9 13.5c-11.8-5.1-23.4-9.7-34.9-13.5C205.9 65.9 220.1 64 224 64zM106.5 147.5c-2.8 13.1-5 26.9-6.7 41.2c-7.6 6.1-14.8 12.3-21.6 18.6C59.4 177 64 163.3 66.3 159.1c1.6-2.9 8.4-13 40.2-11.7zM66.3 352.9c-2.3-4.2-7-17.9 11.9-48.1c6.8 6.3 14 12.5 21.6 18.6c1.7 14.2 3.9 28 6.7 41.2c-31.8 1.4-38.6-8.7-40.2-11.7zM224 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [129532], \"e06e\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM320 256c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM416 32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96H160c-53 0-96-43-96-96s43-96 96-96h88.4c-15.2-17-24.4-39.4-24.4-64H96c-53 0-96 43-96 96V416c0 53 43 96 96 96H416c53 0 96-43 96-96V288c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64H352c35.3 0 64-28.7 64-64s-28.7-64-64-64H320 160z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [576, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M532.3 7.3C539.7 13.3 544 22.4 544 32V176c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V71L384 90.2V208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V64c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM106.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2h61.7c10.7 0 20.7 5.3 26.6 14.2L245.3 304H272c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V352c0-26.5 21.5-48 48-48h26.7zM224 408c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM510.7 278.3L472.3 368H528c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L423.7 400H368c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L51.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nvar faHeartMusicCameraBolt = faIcons;\nvar faMicrophoneLinesSlash = {\n prefix: 'fas',\n iconName: 'microphone-lines-slash',\n icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nvar faMicrophoneAltSlash = faMicrophoneLinesSlash;\nvar faBridgeCircleCheck = {\n prefix: 'fas',\n iconName: 'bridge-circle-check',\n icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [448, 512, [], \"e06a\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM216 280v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V360H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c69.3 0 130.6 33.8 168.5 86c7.8 10.7 22.8 13.1 33.5 5.3s13.1-22.8 5.3-33.5C416.8 41.7 341.3 0 256 0C114.6 0 0 114.6 0 256v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8c0-18.1-1.9-35.8-5.5-52.9zM222.1 128.2c10.8-2.9 22.1-4.4 33.9-4.4c73 0 132.2 59.2 132.2 132.2c0 31.1-1.9 62.4-3.9 86c-1 11.8-2 21.6-2.7 28.4c-.4 3.4-.7 6.1-.9 7.9l-.2 2-.1 .5 0 .1 0 0 0 0c-1.6 13.2 7.7 25.1 20.8 26.8s25.1-7.7 26.8-20.8l-23.8-3c23.8 3 23.8 3 23.8 3l0 0 0 0 0 0 0-.2 .1-.6 .3-2.2c.2-1.9 .5-4.8 .9-8.3c.8-7.2 1.8-17.4 2.8-29.6c2-24.4 4.1-57.1 4.1-90c0-99.5-80.7-180.2-180.2-180.2c-15.9 0-31.4 2.1-46.2 6c-12.8 3.4-20.5 16.5-17.1 29.3s16.5 20.5 29.3 17.1zm-74.5 52.1c7.6-10.9 5-25.8-5.9-33.4s-25.8-5-33.4 5.9C87.9 182 75.8 217.6 75.8 256c0 30.1-3.8 58.6-7.6 79.7c-1.9 10.5-3.8 19.1-5.2 24.9c-.7 2.9-1.3 5.2-1.7 6.7c-.2 .7-.3 1.3-.4 1.6l-.1 .4 0 .1 0 0c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5L83.8 376c23.1 6.6 23.1 6.6 23.1 6.6l0 0 0 0 0-.1 0-.2 .2-.6c.1-.5 .3-1.2 .6-2.1c.5-1.8 1.2-4.4 1.9-7.7c1.6-6.6 3.7-16.1 5.8-27.6c4.2-22.9 8.4-54.4 8.4-88.3c0-28.2 8.8-54.3 23.8-75.7zM256 200c30.9 0 56 25.1 56 56c0 47.1-2.7 86.3-5.5 113.6c-1.4 13.7-2.7 24.3-3.7 31.6c-.5 3.6-.9 6.3-1.2 8.1c-.1 .9-.2 1.6-.3 2l-.1 .5 0 .1 0 0 0 0 0 0c-2.3 13.1 6.5 25.5 19.5 27.8s25.5-6.4 27.8-19.5L324.8 416c23.6 4.1 23.6 4.1 23.6 4.1l0 0 0 0 0-.1 0-.2 .1-.7c.1-.6 .2-1.4 .4-2.4c.3-2.1 .8-5.1 1.3-9c1.1-7.8 2.5-19.1 4-33.4c2.9-28.7 5.7-69.5 5.7-118.4c0-57.4-46.6-104-104-104s-104 46.6-104 104c0 46.7-3.9 83.4-7.7 108.4c-1.9 12.5-3.8 21.9-5.2 28.2c-.7 3.1-1.3 5.5-1.6 6.9c-.2 .7-.3 1.3-.4 1.6l-.1 .3c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5L160 408c23.1 6.6 23.1 6.6 23.1 6.6l0 0 0 0 0-.1 .1-.2 .2-.7c.1-.5 .3-1.3 .6-2.3c.5-2 1.2-4.8 2-8.4c1.6-7.2 3.7-17.8 5.8-31.3c3-19.2 5.9-44.6 7.3-75.3c.6-12.6 .9-26 .9-40.3c0-30.9 25.1-56 56-56zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 45.4-2.6 83.4-6.3 114.5L202 478.3l0 0c-5.3 12.1 .1 26.2 12.2 31.6c12.1 5.4 26.3-.1 31.7-12.2L224 488c21.9 9.7 21.9 9.7 21.9 9.7l0 0 0 0 0-.1 .1-.3 .4-.9c.3-.8 .7-1.8 1.2-3.1c1-2.7 2.4-6.5 4-11.5c3.3-10.1 7.5-24.9 11.7-44.7C271.8 397.3 280 337.6 280 256zM225.7 370.5s0 0 0 0L256 232 225.7 370.5zm0 0c-2.7 22.5-5.9 41.3-9.2 56.6c-3.8 18.2-7.6 31.3-10.3 39.8c-1.4 4.2-2.5 7.3-3.2 9.2c-.4 .9-.6 1.6-.8 2l-.1 .4 23.6-107.9z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm64-64c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h48c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32H160C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64v88c0 22.1-17.9 40-40 40s-40-17.9-40-40V160c0-8.8-7.2-16-16-16s-16 7.2-16 16v56c0 39.8 32.2 72 72 72z\"]\n};\nvar faMagnifyingGlassLocation = {\n prefix: 'fas',\n iconName: 'magnifying-glass-location',\n icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-48 0c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSearchLocation = faMagnifyingGlassLocation;\nvar faForwardStep = {\n prefix: 'fas',\n iconName: 'forward-step',\n icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V271l-11.5 9.6-192 160z\"]\n};\nvar faStepForward = faForwardStep;\nvar faFaceSmileBeam = {\n prefix: 'fas',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1V345.8c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.4-23.7-122.5-13.4L64 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V400 334 64 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9v65.5L64 252.6V318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3V238.7l38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9v66.7l-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8v71.4c21.8 1.9 43.3 6.7 64 14.4V244.2l22.7 6.7c13.5 4 27.3 6.4 41.3 7.4V194c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12v-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8v72.4c-13-.4-26 .8-38.7 3.6L128 173.2V98L64 114v73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2V251.9l-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5v77.4zm64-149.4V115.4c-20.9 6.1-42.4 9.1-64 9.1V194c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n};\nvar faFootball = {\n prefix: 'fas',\n iconName: 'football',\n icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6c-18.3 29.8-30.9 62.3-39.2 95.4L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faFootballBall = faFootball;\nvar faSchoolCircleExclamation = {\n prefix: 'fas',\n iconName: 'school-circle-exclamation',\n icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64v64l178.7 0L128 338.7V32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H173.3L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-274.7z\"]\n};\nvar faAnglesDown = {\n prefix: 'fas',\n iconName: 'angles-down',\n icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faAngleDoubleDown = faAnglesDown;\nvar faUsersRectangle = {\n prefix: 'fas',\n iconName: 'users-rectangle',\n icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H544c53 0 96-43 96-96V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zm159.8 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3C119.9 256 96 279.9 96 309.3zM461.2 336h56.1c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM320 256c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64z\"]\n};\nvar faPeopleRoof = {\n prefix: 'fas',\n iconName: 'people-roof',\n icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 240c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zM144 336c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zm392-40c0 22.1-17.9 40-40 40s-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40zM226.9 491.4L200 441.5V480c0 17.7-14.3 32-32 32H120c-17.7 0-32-14.3-32-32V441.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6h19.5c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5V480c0 17.7-14.3 32-32 32H472c-17.7 0-32-14.3-32-32V441.5l-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5V400c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32V345.5l-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nvar faPeopleLine = {\n prefix: 'fas',\n iconName: 'people-line',\n icon: [640, 512, [], \"e534\", \"M360 72c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zM144 208c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM496 208c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5V272c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V217.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5z\"]\n};\nvar faBeerMugEmpty = {\n prefix: 'fas',\n iconName: 'beer-mug-empty',\n icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V96h51.2c42.4 0 76.8 34.4 76.8 76.8V274.9c0 30.4-17.9 57.9-45.6 70.2L384 381.7V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7V172.8c0-7.1-5.7-12.8-12.8-12.8H384V311.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144z\"]\n};\nvar faBeer = faBeerMugEmpty;\nvar faDiagramPredecessor = {\n prefix: 'fas',\n iconName: 'diagram-predecessor',\n icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nvar faArrowUpLong = {\n prefix: 'fas',\n iconName: 'arrow-up-long',\n icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nvar faLongArrowUp = faArrowUpLong;\nvar faFireFlameSimple = {\n prefix: 'fas',\n iconName: 'fire-flame-simple',\n icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nvar faBurn = faFireFlameSimple;\nvar faPerson = {\n prefix: 'fas',\n iconName: 'person',\n icon: [320, 512, [129485, \"male\"], \"f183\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152z\"]\n};\nvar faMale = faPerson;\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96V352h64V96H512V352h64V96c0-35.3-28.7-64-64-64H128zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H563.2c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2H19.2z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [384, 512, [], \"f6dd\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 224H96c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H80c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8H96c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H80c-22.1 0-40-17.9-40-40V264c0-22.1 17.9-40 40-40zm72 46.4c0-25.6 20.8-46.4 46.4-46.4H216c8.8 0 16 7.2 16 16s-7.2 16-16 16H198.4c-7.9 0-14.4 6.4-14.4 14.4c0 5.2 2.8 9.9 7.2 12.5l25.4 14.5c14.4 8.3 23.4 23.6 23.4 40.3c0 25.6-20.8 46.4-46.4 46.4H168c-8.8 0-16-7.2-16-16s7.2-16 16-16h25.6c7.9 0 14.4-6.4 14.4-14.4c0-5.2-2.8-9.9-7.2-12.5l-25.4-14.5C160.9 302.4 152 287 152 270.4zM280 240v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V240c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32S0 81.7 0 64V62.8c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32V288c0 17.7 14.3 32 32 32H288V160c0-17.7 14.3-32 32-32s32 14.3 32 32V320H544c17.7 0 32-14.3 32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 53-43 96-96 96H352v64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V384H96c-53 0-96-43-96-96V160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H96V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H192V256 160c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32v96 32H384V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H480V256 160c0-17.7 14.3-32 32-32z\"]\n};\nvar faTruckPlane = {\n prefix: 'fas',\n iconName: 'truck-plane',\n icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1V192.5L7.8 274.3C2.9 277.2 0 282.4 0 288v64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37v81.2l-50 40c-3.8 3-6 7.6-6 12.5v32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15V463.4c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1V408 325.5 184l0-1.1 0 0V86.1C256 54.7 231.5 0 200 0zm88 176V400c0 20.9 13.4 38.7 32 45.3V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V448H544v40c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V445.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7H539.7c9.2 0 17.2 6 20.5 14.7L576 304H352l15.8-49.3zM568 400c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM384 376c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zm0 32c70.7 0 128-57.3 128-128s-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128zm0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faFaceGrinStars = {\n prefix: 'fas',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM403 336.5c5.1-11.8-6.9-22.4-19.2-18.7C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [512, 512, [], \"f55c\", \"M192 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7H334.9c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8V64H192V208.5zM320 64V208.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L398.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C406 314.1 416 347.9 416 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5H108.1c-17.3 0-34.2-7.1-43.8-21.5C43.9 460.1 32 423.4 32 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h16H304h16c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSpaghettiMonsterFlying = {\n prefix: 'fas',\n iconName: 'spaghetti-monster-flying',\n icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1l0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faPastafarianism = faSpaghettiMonsterFlying;\nvar faArrowDownUpAcrossLine = {\n prefix: 'fas',\n iconName: 'arrow-down-up-across-line',\n icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V288H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H448V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3V224H192 128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192h64V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192zM448 320H384V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320z\"]\n};\nvar faSpoon = {\n prefix: 'fas',\n iconName: 'spoon',\n icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nvar faUtensilSpoon = faSpoon;\nvar faJarWheat = {\n prefix: 'fas',\n iconName: 'jar-wheat',\n icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm112 0H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7zM112 352H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416H144v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nvar faEnvelopesBulk = {\n prefix: 'fas',\n iconName: 'envelopes-bulk',\n icon: [576, 512, [\"mail-bulk\"], \"f674\", \"M96 0C78.3 0 64 14.3 64 32V224h96V192c0-35.3 28.7-64 64-64H448V32c0-17.7-14.3-32-32-32H96zM224 160c-17.7 0-32 14.3-32 32v32h96c35.3 0 64 28.7 64 64V416H544c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H224zm240 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM32 256c-17.7 0-32 14.3-32 32v13L155.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L320 301V288c0-17.7-14.3-32-32-32H32zm288 84.8L184 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L0 340.8V480c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V340.8z\"]\n};\nvar faMailBulk = faEnvelopesBulk;\nvar faFileCircleExclamation = {\n prefix: 'fas',\n iconName: 'file-circle-exclamation',\n icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faCircleH = {\n prefix: 'fas',\n iconName: 'circle-h',\n icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM368 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H192l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H320V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHospitalSymbol = faCircleH;\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm64 32v64c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H80zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM208 288h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm96-96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"]\n};\nvar faContactBook = faAddressBook;\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H270.1c-.1 0-.3-.1-.4-.1l-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3l0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6l0 0 .2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1H335.1c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nvar faK = {\n prefix: 'fas',\n iconName: 'k',\n icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249V64c0-17.7-14.3-32-32-32S0 46.3 0 64V328 448c0 17.7 14.3 32 32 32s32-14.3 32-32V341l64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nvar faLandmarkFlag = {\n prefix: 'fas',\n iconName: 'landmark-flag',\n icon: [512, 512, [], \"e51c\", \"M272 0h80c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H272v32H464c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H240V16c0-8.8 7.2-16 16-16h16zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPencilAlt = faPencil;\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32H48C21.5 32 0 53.5 0 80V400c0 26.5 21.5 48 48 48H192V176c0-44.2 35.8-80 80-80h48V80c0-26.5-21.5-48-48-48H215.4C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48V448v16c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V256H416c-17.7 0-32-14.3-32-32V128H320 272zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm256 88v96h96l-96-96z\"]\n};\nvar faFileClipboard = faPaste;\nvar faCodePullRequest = {\n prefix: 'fas',\n iconName: 'code-pull-request',\n icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24V64h16c70.7 0 128 57.3 128 128V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-35.3-28.7-64-64-64H320v40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80c0-13.3-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24s24-10.7 24-24zm8 73.3V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm328 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16z\"]\n};\nvar faTruckRampBox = {\n prefix: 'fas',\n iconName: 'truck-ramp-box',\n icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0V400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8V64c0-35.3 28.7-64 64-64H640zM576 400c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nvar faTruckLoading = faTruckRampBox;\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faVialVirus = {\n prefix: 'fas',\n iconName: 'vial-virus',\n icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V384c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 96 32zM96 192V96h64v96H96zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-24c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm88 32c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faSheetPlastic = {\n prefix: 'fas',\n iconName: 'sheet-plastic',\n icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64H224V384c0-17.7 14.3-32 32-32H384V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384H256V512L384 384z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144V368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144H128v96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48V144z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 396 61.3 324.1 142.7 307.6l68.5 91.4c6.4 8.5 19.2 8.5 25.6 0l68.5-91.4C386.7 324.1 448 396 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H160z\"]\n};\nvar faPersonArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'person-arrow-up-from-line',\n icon: [640, 512, [], \"e539\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faScrollTorah = {\n prefix: 'fas',\n iconName: 'scroll-torah',\n icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480V32C96 14.3 74.5 0 48 0S0 14.3 0 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32H128V480H512V32zM592 0c-26.5 0-48 14.3-48 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32V32c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3H271l31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180h56.7c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3H369l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332H214.3c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332H298.8L320 368.4zM254.5 256l30.3 52h70.4l30.3-52-30.3-52H284.8l-30.3 52zm144.9 23.8L383 308h32.8l-16.4-28.2zM415.8 204H383l16.4 28.2L415.8 204zM320 143.6L298.8 180h42.4L320 143.6zM224.2 204l16.4 28.2L257 204H224.2zM257 308l-16.4-28.2L224.2 308H257z\"]\n};\nvar faTorah = faScrollTorah;\nvar faBroomBall = {\n prefix: 'fas',\n iconName: 'broom-ball',\n icon: [640, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M633.3 12.4c10.8 14 8.3 34.1-5.6 44.9l-144 112-72 56L403 232l28.3 36.3c3.7 4.8 4.4 11.2 1.8 16.7s-8.1 9-14.1 9.1l-48 .9L292.3 194.2l12.5-46.3c1.6-5.9 6.3-10.3 12.3-11.5s12 1.1 15.8 5.8l30.8 39.4 8.7-6.8 72-56 144-112c13.9-10.9 34.1-8.3 44.9 5.6zM269.1 476.3c-55.5 43.4-215 34.2-252.3 31.4c-5.1-.4-9.7-2.9-12.8-7s-4.5-9.1-3.6-14.1c.5-3.2 1.3-7.2 2.2-12.1c3-16.5 10.8-31.6 21.9-44.1l73.5-82.5c3.1-3.5 3.2-8.6 .4-12.3s-7.9-4.7-12-2.6L47.3 353.5c-6.3 3.3-13.4-2.7-11-9.4c14.3-39.9 32.7-76.9 55.5-94.7c57.7-45.1 175.3-35.5 175.3-35.5l78.8 100.9s-19.1 116.4-76.8 161.5zM496 512c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faQuidditch = faBroomBall;\nvar faQuidditchBroomBall = faBroomBall;\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128H192c-70.7 0-128-57.3-128-128s57.3-128 128-128H384zM576 256c0-106-86-192-192-192H192C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192zM192 352c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96z\"]\n};\nvar faBoxArchive = {\n prefix: 'fas',\n iconName: 'box-archive',\n icon: [512, 512, [\"archive\"], \"f187\", \"M32 32H480c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H32C14.3 128 0 113.7 0 96V64C0 46.3 14.3 32 32 32zm0 128H480V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V160zm128 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faArchive = faBoxArchive;\nvar faPersonDrowning = {\n prefix: 'fas',\n iconName: 'person-drowning',\n icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V96.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3V64zM320 192c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faArrowDown91 = {\n prefix: 'fas',\n iconName: 'arrow-down-9-1',\n icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM352 320c0 17.7 14.3 32 32 32h16v64H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V320c0-17.7-14.3-32-32-32H384c-17.7 0-32 14.3-32 32zm93.7-171.1c-4.2 2-8.8 3.1-13.7 3.1c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32c0 12.8-7.5 23.8-18.3 28.9zm-40.7 54.9l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericDesc = faArrowDown91;\nvar faSortNumericDownAlt = faArrowDown91;\nvar faFaceGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M128 0h64c17.7 0 32 14.3 32 32v96H96V32c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96H224c53 0 96 43 96 96V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V256zm240 80c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM320 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM512 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM480 192c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm32 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM384 192c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M288 64v64H416L368 64H288zM419.2 25.6L496 128h80c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64H288c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H224V48c0-26.5 21.5-48 48-48h96c20.1 0 39.1 9.5 51.2 25.6zM152 256h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512H152c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512H472c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faW = {\n prefix: 'fas',\n iconName: 'w',\n icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nvar faEarthAfrica = {\n prefix: 'fas',\n iconName: 'earth-africa',\n icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9v41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.3-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32v28c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16v48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4V318.6c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faGlobeAfrica = faEarthAfrica;\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C0 175.3 143.3 32 320 32s320 143.3 320 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-70.7 57.3-128 128-128s128 57.3 128 128v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-35.3-28.7-64-64-64zM160 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-123.7 100.3-224 224-224s224 100.3 224 224v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nvar faTabletScreenButton = {\n prefix: 'fas',\n iconName: 'tablet-screen-button',\n icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM384 64H64V384H384V64z\"]\n};\nvar faTabletAlt = faTabletScreenButton;\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nvar faTrowelBricks = {\n prefix: 'fas',\n iconName: 'trowel-bricks',\n icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32v72h89c3.6-13.8 16.1-24 31-24h88c26.5 0 48 21.5 48 48s-21.5 48-48 48H376c-14.9 0-27.4-10.2-31-24H256v72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V256zM32 384h96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zm192 0H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32z\"]\n};\nvar faFaceFlushed = {\n prefix: 'fas',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM176 384c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16s-7.2-16-16-16H192c-8.8 0-16 7.2-16 16zm-16-88c39.8 0 72-32.2 72-72s-32.2-72-72-72s-72 32.2-72 72s32.2 72 72 72zm264-72c0-39.8-32.2-72-72-72s-72 32.2-72 72s32.2 72 72 72s72-32.2 72-72zm-240 0c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm192 0c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48V256H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v64H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v80c0 26.5 21.5 48 48 48H265.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM152 64h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H184v24c0 8.8-7.2 16-16 16H152c-8.8 0-16-7.2-16-16V152H112c-8.8 0-16-7.2-16-16V120c0-8.8 7.2-16 16-16h24V80c0-8.8 7.2-16 16-16zM512 272c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM288 477.1c0 19.3 15.6 34.9 34.9 34.9H541.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H381.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faTentArrowLeftRight = {\n prefix: 'fas',\n iconName: 'tent-arrow-left-right',\n icon: [640, 512, [], \"e57f\", \"M520.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L521.5 72 118.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9s-24-10.7-33.9-1.8l-80 72C34.9 82.7 32 89.2 32 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L118.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM339.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6s14.9 11.1 24.2 11.1H320V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nvar faLegal = faGavel;\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M128 32h32c17.7 0 32 14.3 32 32V96H96V64c0-17.7 14.3-32 32-32zm64 96V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V388.9c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28H192zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3V448c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V128h99.8zM320 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V96H320V64zm-32 64V288H224V128h64z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 21.2-5.1 41.1-14.2 58.7L416 300.8V96c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M92.5 0H208c40 0 52 24 64 48s24 48 64 48h85.2C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288H128l-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64H80c-8.8 0-16 7.2-16 16s7.2 16 16 16h48H384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H418.5l25.6-64H464c26.5 0 48 21.5 48 48V384H0V272c0-26.5 21.5-48 48-48H79zM0 416H512v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V416z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h57.7l16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7H64c-17.7 0-32 14.3-32 32v32h96c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32h70.4c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128H480c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H459.6c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21H280zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40h66.4C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104H187.3zM128 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBellConcierge = {\n prefix: 'fas',\n iconName: 'bell-concierge',\n icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h16v33.3C119.6 157.2 32 252.4 32 368H480c0-115.6-87.6-210.8-200-222.7V112h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H256 216zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faConciergeBell = faBellConcierge;\nvar faPenRuler = {\n prefix: 'fas',\n iconName: 'pen-ruler',\n icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nvar faPencilRuler = faPenRuler;\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M192 64c0 35.3-28.7 64-64 64s-64-28.7-64-64S92.7 0 128 0s64 28.7 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160h44.8c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM576 64c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H496c-26.5 0-48-21.5-48-48V391.2l47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240v32h96V240c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V336H272v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nvar faPeopleArrowsLeftRight = faPeopleArrows;\nvar faMarsAndVenusBurst = {\n prefix: 'fas',\n iconName: 'mars-and-venus-burst',\n icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3H352c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l24 0H376c0 13.3 10.7 24 24 24s24-10.7 24-24H400l24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456h24c13.3 0 24-10.7 24-24s-10.7-24-24-24H424v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H504zM400 320c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nvar faSquareCaretRight = {\n prefix: 'fas',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faScissors = {\n prefix: 'fas',\n iconName: 'scissors',\n icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM160 112c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM112 448c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faCut = faScissors;\nvar faSunPlantWilt = {\n prefix: 'fas',\n iconName: 'sun-plant-wilt',\n icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 224c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm32-64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32v53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6V176c0-44.2-35.8-80-80-80s-80 35.8-80 80v22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80v21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6V272c0-17.7 14.3-32 32-32s32 14.3 32 32v8V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H504V280v-8V176z\"]\n};\nvar faToiletsPortable = {\n prefix: 'fas',\n iconName: 'toilets-portable',\n icon: [576, 512, [], \"e584\", \"M32 0H224c17.7 0 32 14.3 32 32V64H0V32C0 14.3 14.3 0 32 0zM0 96H24 232h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H48v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM192 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16zM352 0H544c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32zM320 96h24H552h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H368v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM512 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6V352c0 53-114.6 96-256 96S0 405 0 352V222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faMagnifyingGlassArrowRight = {\n prefix: 'fas',\n iconName: 'magnifying-glass-arrow-right',\n icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31H120c-13.3 0-24 10.7-24 24s10.7 24 24 24H238.1l-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nvar faTachographDigital = {\n prefix: 'fas',\n iconName: 'tachograph-digital',\n icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm32 64H320c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16H560c8.8 0 16 7.2 16 16s-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 320c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm48 16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm48 16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faDigitalTachograph = faTachographDigital;\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320H618.7c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192H106.7zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H485.3c10.5 0 19.5-6 23.9-14.8L324.9 352H261.3zM512 160c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80z\"]\n};\nvar faClover = {\n prefix: 'fas',\n iconName: 'clover',\n icon: [448, 512, [], \"e139\", \"M173.3 32C139.4 32 112 59.4 112 93.3v4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4H61.3C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368h4.9c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34v4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3v-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4h4.9c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3h-4.9c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34V93.3C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2C205.1 38.5 189.5 32 173.3 32z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nvar faMailReply = faReply;\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [576, 512, [9770], \"f699\", \"M32 256C32 114.6 146.6 0 288 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C352.6 505.7 321 512 288 512C146.6 512 32 397.4 32 256zM407.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L293 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nvar faHouseFire = {\n prefix: 'fas',\n iconName: 'house-fire',\n icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM453.5 163.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 56.7 24.2 76.9C640 437.9 568.7 512 480 512c-89.7 0-160-74.2-160-161.9c0-26.4 12.7-58.6 32.4-90.6c20-32.4 48.1-66.1 81.4-95.8c5.6-5 14.2-5 19.8 0zM530 433c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15z\"]\n};\nvar faSquareMinus = {\n prefix: 'fas',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H384v64h32c88.4 0 160 71.6 160 160v64c0 17.7-14.3 32-32 32H384 304c-10.1 0-19.6-4.7-25.6-12.8L192 256 47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64H48c10.1 0 19.6 4.7 25.6 12.8L112 128H320V64H160c-17.7 0-32-14.3-32-32zM384 320H512V288c0-53-43-96-96-96H384V320zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H536.2c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'fas',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFileCircleQuestion = {\n prefix: 'fas',\n iconName: 'file-circle-question',\n icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0H160c17.7 0 32 14.3 32 32V416c0 53-43 96-96 96s-96-43-96-96V32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9V154l75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192H480c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H182.8zM128 64H64v64h64V64zM64 192v64h64V192H64zM96 440c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V416H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V320H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V224H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V128z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faNavicon = faBars;\nvar faPeopleGroup = {\n prefix: 'fas',\n iconName: 'people-group',\n icon: [640, 512, [], \"e533\", \"M184 88c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3V245.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V389.2C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112h32c24 0 46.2 7.5 64.4 20.3zM448 416V394.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176h32c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2V416c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32zM568 88c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zm8 157.7v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 160c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM240 304c0 16.2 6 31 16 42.3V261.7c-10 11.3-16 26.1-16 42.3zm144-42.3v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2V448c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V405.2c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112h32c61.9 0 112 50.1 112 112z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nvar faHourglass3 = faHourglassEnd;\nvar faHeartCrack = {\n prefix: 'fas',\n iconName: 'heart-crack',\n icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1v5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nvar faHeartBroken = faHeartCrack;\nvar faSquareUpRight = {\n prefix: 'fas',\n iconName: 'square-up-right',\n icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 160c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l40 40-71 71C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7l71-71 40 40c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V176c0-8.8-7.2-16-16-16H160z\"]\n};\nvar faExternalLinkSquareAlt = faSquareUpRight;\nvar faFaceKissBeam = {\n prefix: 'fas',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM48 368v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H416zM48 240v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H416zM48 112v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H416zM160 128v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32H192z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nvar faPeopleRobbery = {\n prefix: 'fas',\n iconName: 'people-robbery',\n icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V174.3c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM80 96c26.5 0 48-21.5 48-48s-21.5-48-48-48S32 21.5 32 48s21.5 48 48 48zm-8 32c-35.3 0-64 28.7-64 64v96l0 .6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352H88V480c0 17.7 14.3 32 32 32s32-14.3 32-32V252.7l13 20.5c5.9 9.2 16.1 14.9 27 14.9h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H209.6l-37.4-58.9C157.6 142 132.1 128 104.7 128H72z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nvar faCircleExclamation = {\n prefix: 'fas',\n iconName: 'circle-exclamation',\n icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zm32 224c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faExclamationCircle = faCircleExclamation;\nvar faSchoolCircleXmark = {\n prefix: 'fas',\n iconName: 'school-circle-xmark',\n icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nvar faArrowRightFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-from-bracket',\n icon: [576, 512, [\"sign-out\"], \"f08b\", \"M534.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L434.7 224 224 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-53 0-96 43-96 96l0 256c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nvar faSignOut = faArrowRightFromBracket;\nvar faCircleChevronDown = {\n prefix: 'fas',\n iconName: 'circle-chevron-down',\n icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256S397.4 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nvar faChevronCircleDown = faCircleChevronDown;\nvar faUnlockKeyhole = {\n prefix: 'fas',\n iconName: 'unlock-keyhole',\n icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80v48H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80V144C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h64z\"]\n};\nvar faUnlockAlt = faUnlockKeyhole;\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [576, 512, [], \"f740\", \"M128 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C96.7 126.1 96 119.1 96 112C96 50.1 146.1 0 208 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H128zm-14.5 33.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM345.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nvar faHeadphonesSimple = {\n prefix: 'fas',\n iconName: 'headphones-simple',\n icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288C0 146.6 114.6 32 256 32s256 114.6 256 256V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64h16c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V352zm288-64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faHeadphonesAlt = faHeadphonesSimple;\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faCircleDollarToSlot = {\n prefix: 'fas',\n iconName: 'circle-dollar-to-slot',\n icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3c-.3-.1-.5-.2-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.8 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V304c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.4-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V112c0-11.1-9-20.1-20.1-20.1zM48 352H64c19.5 25.9 44 47.7 72.2 64H64v32H256 448V416H375.8c28.2-16.3 52.8-38.1 72.2-64h16c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z\"]\n};\nvar faDonate = faCircleDollarToSlot;\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128v7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6V320H576V248.6c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3V128c0-35.3-28.7-64-64-64H64zM576 352H0v64c0 17.7 14.3 32 32 32H80V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h48c17.7 0 32-14.3 32-32V352zM192 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faRoadSpikes = {\n prefix: 'fas',\n iconName: 'road-spikes',\n icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256V116.8c0-15.8 20.5-22 29.3-8.9L320 256V116.8c0-15.8 20.5-22 29.3-8.9L448 256V116.8c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7H512 448 384 320 256 192 64V116.8zM32 384H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFireBurner = {\n prefix: 'fas',\n iconName: 'fire-burner',\n icon: [640, 512, [], \"e4f1\", \"M293.5 3.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C480 280 408.7 352 320 352c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM370 273c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15zM32 288c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32s-14.3 32-32 32v64H544V320c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32V288zM320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm160-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM192 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V64 368 480c0 17.7 14.3 32 32 32s32-14.3 32-32V352l64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48V32z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32V320H96c-17.7 0-32-14.3-32-32V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 53 43 96 96 96H288v64H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H544c53 0 96-43 96-96V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H352V144z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faVolumeLow = {\n prefix: 'fas',\n iconName: 'volume-low',\n icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nvar faVolumeDown = faVolumeLow;\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zM64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104-17.9L82.9 161.3C70.7 185.6 64 212.2 64 240z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [127782], \"f743\", \"M137.9 3c-4.5-3.2-10.3-3.9-15.4-1.8s-8.8 6.7-9.7 12.2L98.7 98.7 13.4 112.8c-5.5 .9-10.1 4.6-12.2 9.7S-.2 133.4 3 137.9l50.3 70.3L3 278.5c-3.2 4.5-3.9 10.3-1.8 15.4s6.7 8.8 12.2 9.7l85.3 14.1L112.8 403c.9 5.5 4.6 10.1 9.7 12.2s10.9 1.4 15.4-1.8l55.2-39.5c-19.9-21.9-32.3-50.8-33.1-82.6c-17.6-10.2-32.2-26.1-40.6-46.3c-20.3-49 3-105.1 52-125.4c29.4-12.2 61.4-8.7 86.7 6.7c13.1-21.8 32.5-39.4 55.8-50.3L303.6 13.4c-.9-5.5-4.6-10.1-9.7-12.2S282.9-.2 278.5 3L208.2 53.3 137.9 3zM291.4 415.9c-2.5 .6-5.1 .6-7.6-.1c1.4 0 2.8 .1 4.2 .1h3.5zm-46.3-260c-17.3-12.2-40.4-15.6-61.5-6.9c-32.7 13.5-48.2 51-34.6 83.6c3.6 8.7 8.9 16.1 15.3 22.2c10.6-39.7 39.9-71.8 77.8-86.4c.8-4.3 1.8-8.4 3-12.5zM277.4 420c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm74.5-116.1c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C433.3 114.6 402.8 96 368 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H559.9c44.2 0 80-35.8 80-80z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V64zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V64zM320 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faWheatAwn = {\n prefix: 'fas',\n iconName: 'wheat-awn',\n icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nvar faWheatAlt = faWheatAwn;\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H241.2c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nvar faHandsHoldingChild = {\n prefix: 'fas',\n iconName: 'hands-holding-child',\n icon: [640, 512, [], \"e4fa\", \"M320 80c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zm44.7 84.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35h-7.6l-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faSquareCheck = {\n prefix: 'fas',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faPesetaSign = {\n prefix: 'fas',\n iconName: 'peseta-sign',\n icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64v96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96V448c0 17.7 14.3 32 32 32s32-14.3 32-32V352h96c77.4 0 142-55 156.8-128H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-3.2C334 87 269.4 32 192 32H64zM282.5 160H96V96h96c41.8 0 77.4 26.7 90.5 64zM96 224H282.5c-13.2 37.3-48.7 64-90.5 64H96V224z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32H80h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H112V208H336V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h48 48c17.7 0 32 14.3 32 32s-14.3 32-32 32H400V240 416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H368 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112V416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V240 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faHeader = faHeading;\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [128123], \"f6e2\", \"M50.8 452.1L19.2 477.4c-2.1 1.7-4.7 2.6-7.4 2.6C5.3 480 0 474.7 0 468.2V192C0 86 86 0 192 0S384 86 384 192V468.2c0 6.5-5.3 11.8-11.8 11.8c-2.7 0-5.3-.9-7.4-2.6l-31.6-25.3c-3.3-2.7-7.5-4.1-11.8-4.1c-5.9 0-11.5 2.8-15 7.5l-37.6 50.1c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4l-38.4-51.2c-3-4-7.8-6.4-12.8-6.4s-9.8 2.4-12.8 6.4l-38.4 51.2c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L77.6 455.5c-3.6-4.7-9.1-7.5-15-7.5c-4.3 0-8.4 1.5-11.7 4.1zM160 192c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm96 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z\"]\n};\nvar faListSquares = faList;\nvar faSquarePhoneFlip = {\n prefix: 'fas',\n iconName: 'square-phone-flip',\n icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nvar faPhoneSquareAlt = faSquarePhoneFlip;\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20h44v44c0 11 9 20 20 20s20-9 20-20V180h44c11 0 20-9 20-20s-9-20-20-20H356V96c0-11-9-20-20-20s-20 9-20 20v44H272c-11 0-20 9-20 20z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448H448c106 0 192-86 192-192s-86-192-192-192H192zM496 248c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40zm-24 56c0 22.1-17.9 40-40 40s-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V200z\"]\n};\nvar faCircleDot = {\n prefix: 'fas',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm0-160c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'fas',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm0-96c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z\"]\n};\nvar faHouseMedicalCircleXmark = {\n prefix: 'fas',\n iconName: 'house-medical-circle-xmark',\n icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm22.6-144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4V464c0 26.5 21.5 48 48 48H288 528c26.5 0 48-21.5 48-48V440.4c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448H168.5L288 291.7 407.5 448H288z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H448c35.3 0 64 28.7 64 64V416zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V200c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPaintbrush = {\n prefix: 'fas',\n iconName: 'paintbrush',\n icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M371.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L600.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S549.7-4.4 531.1 9.6L294.4 187.2c-24 18-38.2 46.1-38.4 76.1L371.3 367.1zm-19.6 25.4l-116-104.4C175.9 290.3 128 339.6 128 400c0 3.9 .2 7.8 .6 11.6c1.8 17.5-10.2 36.4-27.8 36.4H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H240c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nvar faPaintBrush = faPaintbrush;\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [128274], \"f023\", \"M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0H256c35.3 0 64 28.7 64 64V256h8c48.6 0 88 39.4 88 88v32c0 13.3 10.7 24 24 24s24-10.7 24-24V222c-27.6-7.1-48-32.2-48-62V96L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3V168v24 32V376c0 39.8-32.2 72-72 72s-72-32.2-72-72V344c0-22.1-17.9-40-40-40h-8V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64zM96 80v96c0 8.8 7.2 16 16 16H240c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16z\"]\n};\nvar faHotTubPerson = {\n prefix: 'fas',\n iconName: 'hot-tub-person',\n icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2V24zM0 320v16V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H277.3c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96v64zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm112 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2V24c0-13.3-10.7-24-24-24zM64 128c35.3 0 64-28.7 64-64S99.3 0 64 0S0 28.7 0 64s28.7 64 64 64z\"]\n};\nvar faHotTub = faHotTubPerson;\nvar faMapLocation = {\n prefix: 'fas',\n iconName: 'map-location',\n icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3V152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6V503zM15.1 187.3C6 191 0 199.8 0 209.6V480.4c0 17 17.1 28.6 32.9 22.3L160 451.8V200.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77V449.4l192 54.9V255z\"]\n};\nvar faMapMarked = faMapLocation;\nvar faHouseFloodWater = {\n prefix: 'fas',\n iconName: 'house-flood-water',\n icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192h16v73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2H464c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nvar faBridgeLock = {\n prefix: 'fas',\n iconName: 'bridge-lock',\n icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H536v64h-8c-61.9 0-112 50.1-112 112v24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V384c0-53-43-96-96-96V160h72V96H64C46.3 96 32 81.7 32 64zM408 96v64h80V96H408zm-48 64V96H280v64h80zM152 96v64h80V96H152zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [128176], \"f81d\", \"M320 96H192L144.6 24.9C137.5 14.2 145.1 0 157.9 0H354.1c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128H320c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96H96c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4l0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84.1 96c0-11.1-9-20.1-20.1-20.1s-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.8 4.1c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0 0 0c-2.2-.8-4.3-1.5-6.3-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V416c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.4-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V224z\"]\n};\nvar faPenToSquare = {\n prefix: 'fas',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.8 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z\"]\n};\nvar faEdit = faPenToSquare;\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [128663], \"f5e4\", \"M171.3 96H224v96H111.3l30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192V96h81.2c9.7 0 18.9 4.4 25 12l67.2 84H272zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36H171.3c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256V368c0 17.7 14.3 32 32 32H65.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H385.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H608c17.7 0 32-14.3 32-32V320c0-65.2-48.8-119-111.8-127zm-2.9 207c-6.6 18.6-24.4 32-45.3 32s-38.7-13.4-45.3-32c-1.8-5-2.7-10.4-2.7-16c0-26.5 21.5-48 48-48s48 21.5 48 48c0 5.6-1 11-2.7 16zM160 432c-20.9 0-38.7-13.4-45.3-32c-1.8-5-2.7-10.4-2.7-16c0-26.5 21.5-48 48-48s48 21.5 48 48c0 5.6-1 11-2.7 16c-6.6 18.6-24.4 32-45.3 32z\"]\n};\nvar faShareNodes = {\n prefix: 'fas',\n iconName: 'share-nodes',\n icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nvar faShareAlt = faShareNodes;\nvar faHeartCircleMinus = {\n prefix: 'fas',\n iconName: 'heart-circle-minus',\n icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 19-5.6 37.4-16 53H112c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.2 14.9H112z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [128300], \"f610\", \"M168 32c0-17.7 14.3-32 32-32h16c17.7 0 32 14.3 32 32h8c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32h-8c0 17.7-14.3 32-32 32H200c-17.7 0-32-14.3-32-32h-8c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32l8 0zM32 448H320c70.7 0 128-57.3 128-128s-57.3-128-128-128V128c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96V288H160V264c0-30.9-25.1-56-56-56H56c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c4.4 0 8 3.6 8 8v24H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H256 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H400V264c0-4.4 3.6-8 8-8h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H408c-30.9 0-56 25.1-56 56v24H288V96zM480 416V384H32v32c0 53 43 96 96 96H384c53 0 96-43 96-96z\"]\n};\nvar faBagShopping = {\n prefix: 'fas',\n iconName: 'bag-shopping',\n icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64v48H160V112zm-48 48H48c-26.5 0-48 21.5-48 48V416c0 53 43 96 96 96H352c53 0 96-43 96-96V208c0-26.5-21.5-48-48-48H336V112C336 50.1 285.9 0 224 0S112 50.1 112 112v48zm24 96c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm200-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faShoppingBag = faBagShopping;\nvar faArrowDownZA = {\n prefix: 'fas',\n iconName: 'arrow-down-z-a',\n icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96H352c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400h40.4L416 359.6 395.8 400z\"]\n};\nvar faSortAlphaDesc = faArrowDownZA;\nvar faSortAlphaDownAlt = faArrowDownZA;\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M352 384H64L5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0h3.4c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192h2.8c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V448z\"]\n};\nvar faPersonRays = {\n prefix: 'fas',\n iconName: 'person-rays',\n icon: [512, 512, [], \"e54d\", \"M304 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM248 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9l-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H248zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M144 160c-44.2 0-80-35.8-80-80S99.8 0 144 0s80 35.8 80 80s-35.8 80-80 80zm368 0c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM416 224c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c5.2-11.8 8-24.8 8-38.5c0-53-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zm223.1 298L373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5z\"]\n};\nvar faFlaskVial = {\n prefix: 'fas',\n iconName: 'flask-vial',\n icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96V64C14.3 64 0 49.7 0 32S14.3 0 32 0H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V309.9l-49 79.6zM96 64v96h64V64H96zM352 0H480h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V214.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4H261.4c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h32zm32 64V224c0 5.9-1.6 11.7-4.7 16.8L330.5 320h171l-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8V64H384z\"]\n};\nvar faHand = {\n prefix: 'fas',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z\"]\n};\nvar faHandPaper = faHand;\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48H109.8c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9H144h16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5 0-.1c-2.6-7.8-10.7-12.3-18.7-10.5C4.4 354.2-.9 361.8 .1 370L16 368C.1 370 .1 370 .1 370l0 0 0 0 0 .1 .1 .4c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64h22.6c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.3 0 0c0 0 0 0 0 0c-1.9-7.3-8.6-12.4-16.2-12.1c-7.6 .3-13.9 5.9-15.1 13.4L336 368c-15.8-2.6-15.8-2.6-15.8-2.6l0 0 0 0 0 .1-.1 .3c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96V288c0-53-43-96-96-96h-5.5c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4H245.2c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4zM280.9 66.7c-6-4-14-3.5-19.5 1.3s-7 12.7-3.7 19.2L272 80c-14.3 7.2-14.3 7.2-14.3 7.2l0 0 0 0 0 .1 .1 .2 .4 .7c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .2-.2 .1-.1 0 0 0 0c0 0 0 0-22.6-22.6l22.6 22.6c12.5-12.5 12.5-32.8 0-45.3c-12.4-12.4-32.6-12.5-45.1-.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2 0 0 0 0 0 0z\"]\n};\nvar faWorm = {\n prefix: 'fas',\n iconName: 'worm',\n icon: [448, 512, [], \"e599\", \"M224 96c0-53 43-96 96-96h38.4C407.9 0 448 40.1 448 89.6V176v16V376c0 75.1-60.9 136-136 136s-136-60.9-136-136V296c0-22.1-17.9-40-40-40s-40 17.9-40 40V464c0 26.5-21.5 48-48 48s-48-21.5-48-48V296c0-75.1 60.9-136 136-136s136 60.9 136 136v80c0 22.1 17.9 40 40 40s40-17.9 40-40V192H320c-53 0-96-43-96-96zm144-8c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faHouseCircleXmark = {\n prefix: 'fas',\n iconName: 'house-circle-xmark',\n icon: [640, 512, [], \"e50b\", \"M320.7 351.7C329 262.1 404.3 192 496 192c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V480c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32V383.7c0-17.7 14.3-32 32-32h64l.7 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8C297 398 352 333.4 352 256V224c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64h10.9 8.2c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H224 176zm72 192V320c0 13.3-10.7 24-24 24s-24-10.7-24-24V192c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFaceKiss = {\n prefix: 'fas',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faKiss = faFaceKiss;\nvar faBridgeCircleXmark = {\n prefix: 'fas',\n iconName: 'bridge-circle-xmark',\n icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faFaceGrinTongue = {\n prefix: 'fas',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-16c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7V416H256V372.7c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32H128zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'fas',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faEarDeaf = {\n prefix: 'fas',\n iconName: 'ear-deaf',\n icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7V400c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48v-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nvar faDeaf = faEarDeaf;\nvar faDeafness = faEarDeaf;\nvar faHardOfHearing = faEarDeaf;\nvar faRoadCircleCheck = {\n prefix: 'fas',\n iconName: 'road-circle-check',\n icon: [640, 512, [], \"e564\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM640 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 160c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm32 160c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64-64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM352 160c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM320 384c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSquareRss = {\n prefix: 'fas',\n iconName: 'square-rss',\n icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm64 120c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faRssSquare = faSquareRss;\nvar faLandMineOn = {\n prefix: 'fas',\n iconName: 'land-mine-on',\n icon: [640, 512, [], \"e51b\", \"M344 24V168c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32v32H192V320zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5H482.3c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512H115.8c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40.1 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V128.3c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2H112C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V413.3c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112H366.2c-29.9 0-54.2-24.3-54.2-54.2zM416 416v32H96V416H416z\"]\n};\nvar faStairs = {\n prefix: 'fas',\n iconName: 'stairs',\n icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v96c0 17.7-14.3 32-32 32H320v96c0 17.7-14.3 32-32 32H192v96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V320c0-17.7 14.3-32 32-32h96V192c0-17.7 14.3-32 32-32h96V64z\"]\n};\nvar faI = {\n prefix: 'fas',\n iconName: 'i',\n icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96h96V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V96h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 32z\"]\n};\nvar faHryvniaSign = {\n prefix: 'fas',\n iconName: 'hryvnia-sign',\n icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96H223c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H155.5l-50.6 28.9c-1.7 1-3.4 2-5.1 3.1H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H52.3c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113h43.4c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2H161c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H228.5l50.6-28.9c1.7-1 3.4-2 5.1-3.1H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H331.7c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113H179.6c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nvar faHryvnia = faHryvniaSign;\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48V256h96V144c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112V368c0 61.9-50.1 112-112 112S0 429.9 0 368V144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nvar faFaceGrinWide = {\n prefix: 'fas',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [384, 512, [129463], \"f5c9\", \"M154.1 52.1C137.3 39.1 116.7 32 95.5 32C42.7 32 0 74.7 0 127.5v6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2L80.4 460.2c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C160.2 323.7 175 312 192 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5v-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nvar faV = {\n prefix: 'fas',\n iconName: 'v',\n icon: [448, 512, [118], \"56\", \"M51.7 34.5c16.3-6.8 35 .9 41.8 17.2L224 364.8 354.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7l-160-384c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nvar faBangladeshiTakaSign = {\n prefix: 'fas',\n iconName: 'bangladeshi-taka-sign',\n icon: [384, 512, [], \"e2e6\", \"M36 32.2C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8V160H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V384c0 53 43 96 96 96h32c106 0 192-86 192-192V256c0-53-43-96-96-96H272c-17.7 0-32 14.3-32 32s14.3 32 32 32h16c17.7 0 32 14.3 32 32v32c0 70.7-57.3 128-128 128H160c-17.7 0-32-14.3-32-32V224h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V128.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h25.7l34.6 64H222.9l-27.4-38C191 99.7 183.7 96 176 96H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h43.7l22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112h49c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32H312zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368h65c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1H166.8zm90.6-128H365.9L317 274.8 257.4 192z\"]\n};\nvar faStaffSnake = {\n prefix: 'fas',\n iconName: 'staff-snake',\n icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.2 4.8H288c53 0 96 43 96 96s-43 96-96 96H248V160h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H248 220l-4.5 144H256c53 0 96 43 96 96s-43 96-96 96H240V384h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H213l-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31H136c-22.1 0-40-17.9-40-40s17.9-40 40-40h36l-1-32H152c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7V256c0 8.8 7.2 16 16 16h16.5L164 128H136 122.6c-9 18.9-28.3 32-50.6 32H56c-30.9 0-56-25.1-56-56S25.1 48 56 48h8 8 89.5l-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faRodAsclepius = faStaffSnake;\nvar faRodSnake = faStaffSnake;\nvar faStaffAesculapius = faStaffSnake;\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.3 319.8c22.3-2.1 39.7-20.8 39.7-43.7c0-10-3.4-19.6-9.6-27.4l-42-52.6c-8.3-10.3-12.8-23-15-36.1C398.2 69.3 319.2 0 224 0H201.7C157 0 115.7 14.5 82.2 39.2L38.8 5.1zM0 201.7c0 44.8 18.3 91.5 46.5 127.7C56.9 342.8 64 358.8 64 375.8V480c0 17.7 14.3 32 32 32H256c17.7 0 32-14.3 32-32h64c32.8 0 59.9-24.7 63.6-56.6l-9.4-7.4H352c-17.7 0-32-14.3-32-32c0-10.5 5.1-19.9 12.9-25.7L20.8 112.4C7.5 139.3 0 169.6 0 201.7zM632 288c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm-88 72c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm64 48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faTruckMedical = {\n prefix: 'fas',\n iconName: 'truck-medical',\n icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM208 416c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm272 48c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM112 144c0-8.8 7.2-16 16-16h48V80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240v48c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16V192H128c-8.8 0-16-7.2-16-16V144z\"]\n};\nvar faAmbulance = faTruckMedical;\nvar faWheatAwnCircleExclamation = {\n prefix: 'fas',\n iconName: 'wheat-awn-circle-exclamation',\n icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [576, 512, [9731, 9924], \"f7d0\", \"M373.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L440 160.2V120c0-13.3 10.7-24 24-24s24 10.7 24 24v19.6l22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C428.7 296.9 448 338.2 448 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9H213.3c-13.9 0-27.7-4.2-37.5-13.9C146.3 469 128 428.7 128 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3l-73.6-31.5-56-24c-12.2-5.2-17.8-19.3-12.6-31.5s19.3-17.8 31.5-12.6L88 139.6V120c0-13.3 10.7-24 24-24s24 10.7 24 24v40.2L184.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C196 127.2 192 112.1 192 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM256 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm48 128c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm-16 80c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm16 48c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zM320 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm-48 24v3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9V120c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160H397.3L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512H352c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faRoadBarrier = {\n prefix: 'fas',\n iconName: 'road-barrier',\n icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V266.3L149.2 96H64V64c0-17.7-14.3-32-32-32zM405.2 96H330.8l-5.4 10.7L234.8 288h74.3l5.4-10.7L405.2 96zM362.8 288h74.3l5.4-10.7L533.2 96H458.8l-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288h74.3l5.4-10.7L277.2 96H202.8zm288 192H576V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v53.7L490.8 288z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM256 416c0-35.3 28.7-64 64-64s64 28.7 64 64v96H256V416zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V208zM96 320h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V336zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.8V160H48.5C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160V39.1C424.9 55.7 487.2 99.8 527.5 160H352zM29.9 192H96V320H0c0-46 10.8-89.4 29.9-128zM192 320H128V192H448V320H384v32H576v80c0 26.5-21.5 48-48 48H352V352c0-35.3-28.7-64-64-64s-64 28.7-64 64V480H48c-26.5 0-48-21.5-48-48V352H192V320zm288 0V192h66.1c19.2 38.6 29.9 82 29.9 128H480z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9v11c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43V32zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8v11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512h67.3c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512h19 51.3c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352H336 288c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9V392c0-22.1-17.9-40-40-40H444.7c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [128014], \"f6f0\", \"M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C377.3 0 320 57.3 320 128H224 203.2 148.8c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM496 96c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faQ = {\n prefix: 'fas',\n iconName: 'q',\n icon: [512, 512, [113], \"51\", \"M96 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C403.9 325.8 416 292.3 416 256c0-88.4-71.6-160-160-160S96 167.6 96 256zM376.9 444.6C342 467 300.5 480 256 480C132.3 480 32 379.7 32 256S132.3 32 256 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nvar faG = {\n prefix: 'fas',\n iconName: 'g',\n icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32c0 123.7-100.3 224-224 224S0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [512, 512, [], \"f481\", \"M96 352V96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V293.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7H160c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256h48c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H320V144c0-8.8-7.2-16-16-16H272zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88H296z\"]\n};\nvar faTemperatureHalf = {\n prefix: 'fas',\n iconName: 'temperature-half',\n icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V200c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature2 = faTemperatureHalf;\nvar faThermometer2 = faTemperatureHalf;\nvar faThermometerHalf = faTemperatureHalf;\nvar faDongSign = {\n prefix: 'fas',\n iconName: 'dong-sign',\n icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32V288 128c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM256 288c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48V256H64V144zM0 144V368c0 61.9 50.1 112 112 112s112-50.1 112-112V189.6c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83V144c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 44.3-35.8 80.1-80 80.1c-1.4 0-2.8 .2-4 .5H128c-35.3 0-64 28.7-64 64c0 12.4 3.5 24 9.7 33.8C31.6 234.3 0 271.5 0 316c0 49.1 38.5 89.2 86.9 91.9c-1.8-2.9-3.4-6.1-4.5-9.4c-6-17.5-.5-36.9 13.6-48.5L238.2 233.6c15.6-12.8 37.9-12.7 53.5 .1s20.3 35.1 11.3 53.4l-26 53.2h16.3c18.1 0 34.3 11.7 40.3 29.2c4.5 13.1 2.6 27.3-4.6 38.4h27c50.8 0 92-41.2 92-92c0-44.5-31.6-81.7-73.7-90.2c6.1-9.8 9.7-21.4 9.7-33.8c0-35.3-28.7-64-64-64h-5.7c3.7-10.2 5.7-21.1 5.7-32.6c0-48.7-36.1-88.9-83.1-95.2zm34.2 259.2c-6-4.6-14.3-4.4-20.1 .4l-133.4 112c-5.2 4.3-7 11.4-4.7 17.7s8.3 10.5 15 10.5h54.7l-42.5 89.1c-3.2 6.8-1.3 14.9 4.7 19.5s14.3 4.4 20.1-.4l133.4-112c5.1-4.3 7-11.4 4.7-17.7s-8.3-10.5-15-10.5H233.3l42.5-89.1c3.2-6.8 1.3-14.9-4.7-19.5z\"]\n};\nvar faPooBolt = faPooStorm;\nvar faFaceFrownOpen = {\n prefix: 'fas',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm-186 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32V240H32V32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM288 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H282.1l64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nvar faHelmetUn = {\n prefix: 'fas',\n iconName: 'helmet-un',\n icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240v56.3C0 344.8 39.2 384 87.7 384H200h14.9L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6h96c13.3 0 24-10.7 24-24s-10.7-24-24-24H369.5l-1.5-1.5V288h80 32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.5zM320 417.2l-78-73.7L274.4 288H320V417.2zM285.3 103.1l34.7 52V112c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V208c0 8.8-7.2 16-16 16s-16-7.2-16-16V112c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112v64c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [512, 512, [], \"f140\", \"M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192s192-86 192-192zm64 0c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 336c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm0 64c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm32-144c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6l0 0 .2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32V272H32V480zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-64 64c17.7 0 32-14.3 32-32V304c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6V160C384 71.6 312.4 0 224 0H162.3C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149v27c0 35.3 28.7 64 64 64h88c22.1 0 40-17.9 40-40s-17.9-40-40-40H96c-8.8 0-16-7.2-16-16s7.2-16 16-16h56c39.8 0 72 32.2 72 72z\"]\n};\nvar faArrowUpFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-up-from-bracket',\n icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3V320c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 53 43 96 96 96H352c53 0 96-43 96-96V352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H298.5c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faFileWaveform = {\n prefix: 'fas',\n iconName: 'file-waveform',\n icon: [384, 512, [\"file-medical-alt\"], \"f478\", \"M64 0C28.7 0 0 28.7 0 64V288H112c6.1 0 11.6 3.4 14.3 8.8L144 332.2l49.7-99.4c2.7-5.4 8.2-8.8 14.3-8.8s11.6 3.4 14.3 8.8L249.9 288H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8L208 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L102.1 320H0V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0z\"]\n};\nvar faFileMedicalAlt = faFileWaveform;\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 304c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faChartSimple = {\n prefix: 'fas',\n iconName: 'chart-simple',\n icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H376zm88 48h0v0l0 0zM320 304c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5V416c0 53 43 96 96 96h5.5c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96H205.3z\"]\n};\nvar faGauge = {\n prefix: 'fas',\n iconName: 'gauge',\n icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM320 352c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm-16 80c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm288 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM400 144c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faDashboard = faGauge;\nvar faGaugeMed = faGauge;\nvar faTachometerAltAverage = faGauge;\nvar faWandMagicSparkles = {\n prefix: 'fas',\n iconName: 'wand-magic-sparkles',\n icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nvar faMagicWandSparkles = faWandMagicSparkles;\nvar faE = {\n prefix: 'fas',\n iconName: 'e',\n icon: [320, 512, [101], \"45\", \"M32 32C14.3 32 0 46.3 0 64V256 448c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faPenClip = {\n prefix: 'fas',\n iconName: 'pen-clip',\n icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nvar faPenAlt = faPenClip;\nvar faBridgeCircleExclamation = {\n prefix: 'fas',\n iconName: 'bridge-circle-exclamation',\n icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z\"]\n};\nvar faSchoolCircleCheck = {\n prefix: 'fas',\n iconName: 'school-circle-check',\n icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0H428.5L402.9 32H304V160zm157.1 0h94c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l25.6 128zM32 192l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H448c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160h12c17.7 0 32-14.3 32-32s-14.3-32-32-32h-4l4-32H32z\"]\n};\nvar faVanShuttle = {\n prefix: 'fas',\n iconName: 'van-shuttle',\n icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104v88h96V96H72c-4.4 0-8 3.6-8 8zm482 88L465.1 96H384v96H546zm-226 0V96H224v96h96zM592 384H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V104C0 64.2 32.2 32 72 32H192 352 465.1c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2V336c0 26.5-21.5 48-48 48zm-64 0c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM160 432c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faShuttleVan = faVanShuttle;\nvar faBuildingUser = {\n prefix: 'fas',\n iconName: 'building-user',\n icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h89.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM576 272c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM352 477.1c0 19.3 15.6 34.9 34.9 34.9H605.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H445.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'fas',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [576, 512, [], \"f591\", \"M331 315l158.4-215L460.1 70.6 245 229 331 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L436.6 8.4C444 2.9 453 0 462.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L350.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H240l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L144 320zM23 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H40c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V448h40c13.3 0 24-10.7 24-24V384h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zm40-176c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 21 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166V280.1 512H464 352V416c0-17.7-14.3-32-32-32s-32 14.3-32 32v96H176 160V280.1 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512V244.5l28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1V448c0 35.3-28.7 64-64 64H512zM128 244.5V512H64c-35.3 0-64-28.7-64-64V316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nvar faPersonHalfDress = {\n prefix: 'fas',\n iconName: 'person-half-dress',\n icon: [320, 512, [], \"e548\", \"M160 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm8 256V128h6.9c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352h0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3V384h0v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nvar faRoadBridge = {\n prefix: 'fas',\n iconName: 'road-bridge',\n icon: [640, 512, [], \"e563\", \"M352 0H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V224c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V384zM480 40c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-13.3-10.7-24-24-24zM32 96H288v64H248v64h40v96c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416c0-53-43-96-96-96V224H72V160H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64H120v64h80V160z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8H224V432c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nvar faC = {\n prefix: 'fas',\n iconName: 'c',\n icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faTabletButton = {\n prefix: 'fas',\n iconName: 'tablet-button',\n icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 464c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBuildingLock = {\n prefix: 'fas',\n iconName: 'building-lock',\n icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h88.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-23.7 12.9-44.4 32-55.4V272c0-30.5 12.2-58.2 32-78.4V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 272c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm128 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM160 384c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [576, 512, [], \"f53a\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64H64V352zm64-208c0 35.3-28.7 64-64 64V144h64zM512 304v64H448c0-35.3 28.7-64 64-64zM448 96h64v64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm96 288H448c17.7 0 32-14.3 32-32V251.8c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1v84c0 17.7 14.3 32 32 32z\"]\n};\nvar faAreaChart = faChartArea;\nvar faHouseFlag = {\n prefix: 'fas',\n iconName: 'house-flag',\n icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32V192 512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H512c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288H64V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v96c0 17.7 14.3 32 32 32h64.7l.2 0h-1V159z\"]\n};\nvar faPersonCircleMinus = {\n prefix: 'fas',\n iconName: 'person-circle-minus',\n icon: [576, 512, [], \"e540\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm424 16c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-64 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faCancel = faBan;\nvar faCameraRotate = {\n prefix: 'fas',\n iconName: 'camera-rotate',\n icon: [512, 512, [], \"e0d8\", \"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM384 256c0 8.8-7.2 16-16 16H291.3c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L307 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L185 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C193.4 172.7 224 160 256 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3V256zM128 320c0-8.8 7.2-16 16-16h76.7c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L205 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L327 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C318.6 403.3 288 416 256 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3V320z\"]\n};\nvar faSprayCanSparkles = {\n prefix: 'fas',\n iconName: 'spray-can-sparkles',\n icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32v96H224V32c0-17.7-14.3-32-32-32H128C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96V464c0 26.5 21.5 48 48 48H272c26.5 0 48-21.5 48-48V256c0-53-43-96-96-96H96zm64 256c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nvar faAirFreshener = faSprayCanSparkles;\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nvar faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32V64H160C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96H192V352c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V448H352c88.4 0 160-71.6 160-160z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48v80H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h80V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V256h80c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H256V48c0-26.5-21.5-48-48-48H176z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160H208V32H93.7C75.5 32 58.9 42.3 50.7 58.5zM240 160H448L397.3 58.5C389.1 42.3 372.5 32 354.3 32H240V160zm208 32H0V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [640, 512, [9892], \"f228\", \"M176 288c61.9 0 112-50.1 112-112s-50.1-112-112-112S64 114.1 64 176s50.1 112 112 112zM352 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H208v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0H616c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nvar faArrowPointer = {\n prefix: 'fas',\n iconName: 'arrow-pointer',\n icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2V426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320H297.9c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nvar faMousePointer = faArrowPointer;\nvar faMaximize = {\n prefix: 'fas',\n iconName: 'maximize',\n icon: [448, 512, [\"expand-arrows-alt\"], \"f31e\", \"M168 32H24C10.7 32 0 42.7 0 56V200c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79L81 335 41 295c-6.9-6.9-17.2-8.9-26.2-5.2S0 302.3 0 312V456c0 13.3 10.7 24 24 24H168c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H424c13.3 0 24-10.7 24-24V312c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H280c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S177.7 32 168 32z\"]\n};\nvar faExpandArrowsAlt = faMaximize;\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32V304h16c22.1 0 40 17.9 40 40v32c0 39.8 32.2 72 72 72s72-32.2 72-72V252.3c32.5-10.2 56-40.5 56-76.3V144c0-8.8-7.2-16-16-16H544V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H480V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H432c-8.8 0-16 7.2-16 16v32c0 35.8 23.5 66.1 56 76.3V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V344c0-48.6-39.4-88-88-88H320V64c0-35.3-28.7-64-64-64H96zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9H256c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9H96c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2H384c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312V456c0 22.1 17.9 40 40 40H472c22.1 0 40-17.9 40-40V312c0-22.1-17.9-40-40-40H328c-22.1 0-40 17.9-40 40zM128 512c70.7 0 128-57.3 128-128s-57.3-128-128-128S0 313.3 0 384s57.3 128 128 128z\"]\n};\nvar faTriangleCircleSquare = faShapes;\nvar faShuffle = {\n prefix: 'fas',\n iconName: 'shuffle',\n icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160H352c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96h32V64c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V416H352c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8h32V320c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nvar faRandom = faShuffle;\nvar faPersonRunning = {\n prefix: 'fas',\n iconName: 'person-running',\n icon: [448, 512, [127939, \"running\"], \"f70c\", \"M336 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM141.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L153.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L254 299l30.9-82.4 5.1 12.3C305 264.7 339.9 288 378.7 288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H378.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L73.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM107.2 352H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h69.6c19 0 36.2-11.2 43.9-28.5L173 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L107.2 352z\"]\n};\nvar faRunning = faPersonRunning;\nvar faMobileRetro = {\n prefix: 'fas',\n iconName: 'mobile-retro',\n icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm64 96v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 352c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm56-56c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm56-56c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm24 56c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H128z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [576, 512, [128375], \"f717\", \"M190.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L113.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4-80.4-26.8c-2.4-.8-4.3-2.7-5.1-5.1L78.8 128.4C74.6 115.8 61 109 48.4 113.2S29 131 33.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L148.1 256 87.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L33.2 368.4C29 381 35.8 394.6 48.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8-57.4 57.4c-15.6 15.6-20.6 39-12.7 59.7l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L192 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L462.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L427.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L430.4 15.4C425.6 3 411.8-3.2 399.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L368 174.1V160c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4V112c0 8.8-7.2 16-16 16s-16-7.2-16-16V101.2c0-10.1-9.4-17.7-18.5-13.4C226.6 100.7 208 128.2 208 160v14.1l-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nvar faHandsBound = {\n prefix: 'fas',\n iconName: 'hands-bound',\n icon: [576, 512, [], \"e4f9\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V96v59.1 .7V192v21.9c0 14.2 5.1 27.9 14.3 38.7L99.6 352H96c-13.3 0-24 10.7-24 24s10.7 24 24 24h32H256h64H448h32c13.3 0 24-10.7 24-24s-10.7-24-24-24h-3.6l85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7V192 155.8v-.7V96 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96v48.8l-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L441 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C329 209.7 320 233.4 320 258.1V320v32H256V320 258.1c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L64 144.8V96 32zm64 448v32H256V480h64v32H448V480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H448 320 256 128 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h32z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16v17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1 0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1V440c0 8.8-7.2 16-16 16s-16-7.2-16-16V422.2c-11.2-2.1-21.7-5.7-30.9-8.9l0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4l0 0 0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7V232c0-8.8 7.2-16 16-16z\"]\n};\nvar faPlaneCircleExclamation = {\n prefix: 'fas',\n iconName: 'plane-circle-exclamation',\n icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16v16H144c-8.8 0-16 7.2-16 16s7.2 16 16 16h96v32H112c-8.8 0-16 7.2-16 16s7.2 16 16 16H240v32H144c-8.8 0-16 7.2-16 16s7.2 16 16 16h96v32H152c-8.9 0-17 4.9-21.2 12.7s-3.7 17.3 1.2 24.6l32 48C168.5 412 176 416 184 416H328c8 0 15.5-4 20-10.7l32-48c4.9-7.4 5.4-16.8 1.2-24.6S368.9 320 360 320H272V288h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V224H400c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V160h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16zM208 384c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm112-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [640, 512, [], \"f891\", \"M144 0c-12.9 0-24.6 7.8-29.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L98.7 224h90.7l5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C168.6 7.8 156.9 0 144 0zm18.7 160H125.3L144 115.2 162.7 160zM288 32v96 96c0 17.7 14.3 32 32 32h80c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80H320c-17.7 0-32 14.3-32 32zm96 64H352V64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64h32 16c8.8 0 16 7.2 16 16s-7.2 16-16 16H352V160zM598.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L384 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nvar faComputerMouse = {\n prefix: 'fas',\n iconName: 'computer-mouse',\n icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192H176V0H160C71.6 0 0 71.6 0 160v32zm0 32V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V224H192 0zm384-32V160C384 71.6 312.4 0 224 0H208V192H384z\"]\n};\nvar faMouse = faComputerMouse;\nvar faArrowRightToBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-to-bracket',\n icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faSignIn = faArrowRightToBracket;\nvar faShopSlash = {\n prefix: 'fas',\n iconName: 'shop-slash',\n icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43V224H512V376L384 275.7V224H320v1.5L277.2 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192h85L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V398.5l-64-50.4V384z\"]\n};\nvar faStoreAltSlash = faShopSlash;\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM344 152c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm96-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zM344 408c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm104-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faVirusCovidSlash = {\n prefix: 'fas',\n iconName: 'virus-covid-slash',\n icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7H528v16c0 13.3 10.7 24 24 24s24-10.7 24-24V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v16H494.4c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6V48h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h16V81.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5H112V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V280h33.6c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1V464H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nvar faShopLock = {\n prefix: 'fas',\n iconName: 'shop-lock',\n icon: [640, 512, [], \"e4a5\", \"M36.8 192H449.6c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224H320V384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 352 224zm144 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM288 437v11H96V437c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nvar faHourglass1 = faHourglassStart;\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M192 352V48c0-26.5 21.5-48 48-48H534.1c21.1 0 36.4 20.1 30.9 40.4L558.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H549.8l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H523.6l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L480 352H192zm16 32H496c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nvar faBuildingWheat = {\n prefix: 'fas',\n iconName: 'building-wheat',\n icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm384 80v16c0 44.2-35.8 80-80 80H544V272c0-44.2 35.8-80 80-80h16zm0 128c0 44.2-35.8 80-80 80H544V384c0-44.2 35.8-80 80-80h16v16zm0 112c0 44.2-35.8 80-80 80H544V496c0-44.2 35.8-80 80-80h16v16zM512 496v16H496c-44.2 0-80-35.8-80-80V416h16c44.2 0 80 35.8 80 80zm0-96H496c-44.2 0-80-35.8-80-80V304h16c44.2 0 80 35.8 80 80v16zm0-128v16H496c-44.2 0-80-35.8-80-80V192h16c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24V160c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-13.3 10.7-24 24-24zm96 64v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24z\"]\n};\nvar faPersonBreastfeeding = {\n prefix: 'fas',\n iconName: 'person-breastfeeding',\n icon: [512, 512, [], \"e53a\", \"M256 160c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM468.8 382.8L405.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.7-.1c-38.9-5.6-74.3-25.1-99.7-54.8V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L59.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2l67.1-100.6c26.7-40.1 71.7-64.1 119.8-64.1h75.2c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM352 332c0-24.3-19.7-44-44-44s-44 19.7-44 44s19.7 44 44 44s44-19.7 44-44z\"]\n};\nvar faRightToBracket = {\n prefix: 'fas',\n iconName: 'right-to-bracket',\n icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M352 96h64c17.7 0 32 14.3 32 32V384c0 17.7-14.3 32-32 32H352c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c53 0 96-43 96-96V128c0-53-43-96-96-96H352c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-7.5 177.4c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22v72H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H160v72c0 9.6 5.7 18.2 14.5 22s19 2 26-4.6l144-136z\"]\n};\nvar faSignInAlt = faRightToBracket;\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [384, 512, [9792], \"f221\", \"M304 176c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V384H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V349.1z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8h39.1c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5h47.1c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8h39.1c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8H279.6zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5H200.5c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8H129.3c5.3-31.4 25.8-57.6 53.7-70.8zM352 192c0-70.7-57.3-128-128-128S96 121.3 96 192s57.3 128 128 128s128-57.3 128-128zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faHeartPulse = {\n prefix: 'fas',\n iconName: 'heart-pulse',\n icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4h87c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31H476.3c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240h-132c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9H16c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nvar faHeartbeat = faHeartPulse;\nvar faPeopleCarryBox = {\n prefix: 'fas',\n iconName: 'people-carry-box',\n icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M176 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM144 241.7v65.1l51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7V186.6c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5V160c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32v76.2l10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6v88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51V241.7l-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8H256.7c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm77.9 252.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nvar faPeopleCarry = faPeopleCarryBox;\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm0 64c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.2 32 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zM160 128H352c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm192 32H160V352H352V160z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M288 96c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm58.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32H120c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512H464c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128H346.5z\"]\n};\nvar faXmarksLines = {\n prefix: 'fas',\n iconName: 'xmarks-lines',\n icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM104 196h72c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6H124v44c0 11-9 20-20 20s-20-9-20-20V296 216c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20H124v40h52z\"]\n};\nvar faWeightScale = {\n prefix: 'fas',\n iconName: 'weight-scale',\n icon: [512, 512, [\"weight\"], \"f496\", \"M384 176c0 70.7-57.3 128-128 128s-128-57.3-128-128s57.3-128 128-128s128 57.3 128 128zm7.8-112C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H391.8zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nvar faWeight = faWeightScale;\nvar faUserGroup = {\n prefix: 'fas',\n iconName: 'user-group',\n icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM609.3 512H471.4c5.4-9.4 8.6-20.3 8.6-32v-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2h61.4C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nvar faUserFriends = faUserGroup;\nvar faArrowUpAZ = {\n prefix: 'fas',\n iconName: 'arrow-up-a-z',\n icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z\"]\n};\nvar faSortAlphaUp = faArrowUpAZ;\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [384, 512, [9822], \"f441\", \"M32 391.6V416H352V224c0-106-86-192-192-192H12.9C5.8 32 0 37.8 0 44.9c0 2 .5 4 1.4 5.8L16 80 9.4 86.6c-6 6-9.4 14.1-9.4 22.6V242.3c0 13.1 8 24.9 20.1 29.7l46.5 18.6c8.5 3.4 18 3 26.2-1.1l6.6-3.3c8-4 14-11.2 16.5-19.8l8.3-28.9c2.5-8.6 8.4-15.8 16.5-19.8L160 208v40.4c0 24.2-13.7 46.4-35.4 57.2L67.4 334.3C45.7 345.2 32 367.3 32 391.6zM72 148c0 11-9 20-20 20s-20-9-20-20s9-20 20-20s20 9 20 20zM352 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'fas',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [576, 512, [], \"f193\", \"M224 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM152.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C75.1 225.1 32 283.5 32 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C272 440 234.8 464 192 464c-61.9 0-112-50.1-112-112c0-47.9 30.1-88.8 72.5-104.8zM291.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4h5.1c.4 0 .8 0 1.3 0h94.1c6.7 0 12.6 4.1 15 10.4L434 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9H314.2l-9.6-48H368c17.7 0 32-14.3 32-32s-14.3-32-32-32H291.8z\"]\n};\nvar faCircleArrowUp = {\n prefix: 'fas',\n iconName: 'circle-arrow-up',\n icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM385 215c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V177.9l-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 103c9.4-9.4 24.6-9.4 33.9 0L385 215z\"]\n};\nvar faArrowCircleUp = faCircleArrowUp;\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192s-86-192-192-192H192zM384 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faPersonWalking = {\n prefix: 'fas',\n iconName: 'person-walking',\n icon: [320, 512, [128694, \"walking\"], \"f554\", \"M256 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nvar faWalking = faPersonWalking;\nvar faL = {\n prefix: 'fas',\n iconName: 'l',\n icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32V416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-2.8-5.6-5.6-11.2-9.8-16.8l-50.6 58.8s-81.4-103.6-87.1-110.6C133.1 243.8 112 273.2 112 306.8C112 375.4 162.6 416 225.7 416z\"]\n};\nvar faBedPulse = {\n prefix: 'fas',\n iconName: 'bed-pulse',\n icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64h92c13.3 0 24 10.7 24 24s-10.7 24-24 24H512c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112H216c-13.3 0-24-10.7-24-24s10.7-24 24-24H352c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160h12.7l20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160H544c53 0 96 43 96 96V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V352H288V192c0-17.7 14.3-32 32-32zM176 320c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faProcedures = faBedPulse;\nvar faShuttleSpace = {\n prefix: 'fas',\n iconName: 'shuttle-space',\n icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96h2zM352 128L245.2 63.9C210.4 43 170.6 32 130 32h-2v96l224 0zM96 128l0-96H80C53.5 32 32 53.5 32 80v48h8c-22.1 0-40 17.9-40 40v16V328v16c0 22.1 17.9 40 40 40H32v48c0 26.5 21.5 48 48 48H96l0-96h8c26.2 0 49.4-12.6 64-32H456c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160H168c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6v24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4V212.4c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nvar faSpaceShuttle = faShuttleSpace;\nvar faFaceLaugh = {\n prefix: 'fas',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM208.4 192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nvar faHeartCirclePlus = {\n prefix: 'fas',\n iconName: 'heart-circle-plus',\n icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCodeFork = {\n prefix: 'fas',\n iconName: 'code-fork',\n icon: [448, 512, [], \"e13b\", \"M80 104c13.3 0 24-10.7 24-24s-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM248 432c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48V96H224V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V96H112V24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144v96V464c0 26.5 21.5 48 48 48H304h32 96H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H480V48zm96 320v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM240 416H208c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM560 256c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32zM256 176v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32zM256 304c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM112 320H80c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm304-48v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zm16 112v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faMicrophoneLines = {\n prefix: 'fas',\n iconName: 'microphone-lines',\n icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96V256c0 53 43 96 96 96s96-43 96-96H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V192H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96S96 43 96 96zM320 240v16c0 70.7-57.3 128-128 128s-128-57.3-128-128V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24z\"]\n};\nvar faMicrophoneAlt = faMicrophoneLines;\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3H360c-13.3 0-24-10.7-24-24V152c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0v80c0 26.5 21.5 48 48 48h76.2l23.9 47.8C372.3 443.9 244.3 512 103.2 512H44.4C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H144V144z\"]\n};\nvar faColonSign = {\n prefix: 'fas',\n iconName: 'colon-sign',\n icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.1 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V256C0 114.6 114.6 0 256 0S512 114.6 512 256V400.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24H240c-26.5 0-48-21.5-48-48s21.5-48 48-48h32c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40V256c0-114.9-93.1-208-208-208zM144 208h16c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V272c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64v48c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V240c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V384 252.6c-4 1-8 1.8-12.3 2.3l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V350.9L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0H141.6c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H480c12.9 0 24.8-3.8 34.9-10.3L365.5 384H160z\"]\n};\nvar faRoadCircleXmark = {\n prefix: 'fas',\n iconName: 'road-circle-xmark',\n icon: [640, 512, [], \"e566\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm22.6-144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM472 200H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H472c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMarsStrokeUp = {\n prefix: 'fas',\n iconName: 'mars-stroke-up',\n icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H184v24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H184v24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8V168H104c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V96H96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96z\"]\n};\nvar faMarsStrokeV = faMarsStrokeUp;\nvar faChampagneGlasses = {\n prefix: 'fas',\n iconName: 'champagne-glasses',\n icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M320 128V49.1L186.6 .3c-11.4-4.2-24 .9-29.5 11.7L71.8 181.1c-30.8 61-8 133.8 48.1 167.4l-28 77.4L32.1 403.9C19.7 399.4 6 405.8 1.4 418.3s1.9 26.3 14.3 30.8l164.6 60.3c12.4 4.5 26.1-1.9 30.6-14.4s-1.9-26.3-14.3-30.8l-59.9-21.9 28-77.3c68.1 11.6 135.7-32.8 150.1-103.6l5.1-24.8 5.1 24.8c14.5 70.8 82 115.2 150.1 103.6l28 77.3-59.9 21.9c-12.4 4.5-18.8 18.3-14.3 30.8s18.2 18.9 30.6 14.4l164.6-60.3c12.4-4.5 18.8-18.3 14.3-30.8s-18.2-18.9-30.6-14.4l-59.9 21.9-28-77.4c56.1-33.6 78.8-106.4 48.1-167.4L482.9 12C477.4 1.1 464.7-3.9 453.4 .3L320 49.1V128h0zm-35.7 44.4L153.9 124.6l36.3-71.9L300.6 93.1l-16.2 79.3zm71.3 0L339.4 93.1 449.8 52.7l36.3 71.9L355.7 172.4z\"]\n};\nvar faGlassCheers = faChampagneGlasses;\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHouseCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-circle-exclamation',\n icon: [640, 512, [], \"e50a\", \"M320.7 351.7C329 262.1 404.3 192 496 192c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V480c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32V383.7c0-17.7 14.3-32 32-32h64l.7 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faFileArrowUp = {\n prefix: 'fas',\n iconName: 'file-arrow-up',\n icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z\"]\n};\nvar faFileUpload = faFileArrowUp;\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faWifi3 = faWifi;\nvar faWifiStrong = faWifi;\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3V256c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H96V77.3zM32 352v16c0 28.4 12.4 54 32 71.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V464H384v16c0 17.7 14.3 32 32 32s32-14.3 32-32V439.6c19.6-17.6 32-43.1 32-71.6V352H32z\"]\n};\nvar faBathtub = faBath;\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faUserPen = {\n prefix: 'fas',\n iconName: 'user-pen',\n icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H322.8c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1H178.3zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nvar faUserEdit = faUserPen;\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32v7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96s-96 43-96 96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24H64.3c-.2-2.8-.3-5.6-.3-8.5V368H24zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24H305.9c-6.7 16.3-14.2 32.3-22.3 48H616z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M256 496c132.5 0 240-107.5 240-240S388.5 16 256 16S16 123.5 16 256s107.5 240 240 240zM235.3 76.7L256 97.4l20.7-20.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L278.6 120 324 165.4 357.4 132l-16.7-16.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L380 109.4l8.7-8.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-8.7 8.7 16.7 16.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L380 154.6 346.6 188 392 233.4l20.7-20.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L414.6 256l20.7 20.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L392 278.6 346.6 324 380 357.4l16.7-16.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L402.6 380l8.7 8.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-8.7-8.7-16.7 16.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L357.4 380 324 346.6 278.6 392l20.7 20.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L256 414.6l-20.7 20.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L233.4 392 188 346.6 154.6 380l16.7 16.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L132 402.6l-8.7 8.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l8.7-8.7L92.7 363.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L132 357.4 165.4 324 120 278.6 99.3 299.3c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L97.4 256 76.7 235.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L120 233.4 165.4 188 132 154.6l-16.7 16.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L109.4 132l-8.7-8.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l8.7 8.7 16.7-16.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L154.6 132 188 165.4 233.4 120 212.7 99.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zM210.6 188L256 233.4 301.4 188 256 142.6 210.6 188zm68 68L324 301.4 369.4 256 324 210.6 278.6 256zM256 278.6L210.6 324 256 369.4 301.4 324 256 278.6zM233.4 256L188 210.6 142.6 256 188 301.4 233.4 256z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z\"]\n};\nvar faAnchorLock = {\n prefix: 'fas',\n iconName: 'anchor-lock',\n icon: [640, 512, [], \"e4ad\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3V446.7c-5.2 .9-10.5 1.3-16 1.3H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faBuildingNgo = {\n prefix: 'fas',\n iconName: 'building-ngo',\n icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM168 64h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H184v64h16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 13.3-10.7 24-24 24H176c-13.3 0-24-10.7-24-24V80c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V112zM61.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nvar faManatSign = {\n prefix: 'fas',\n iconName: 'manat-sign',\n icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32V98.7C69.2 113.9 0 192.9 0 288V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-59.6 40.8-109.8 96-124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V164c55.2 14.2 96 64.3 96 124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-95.1-69.2-174.1-160-189.3V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H294.5l-64 96H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H187.8l-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H153.5l64-96H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H260.2l65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nvar faBorderTopLeft = {\n prefix: 'fas',\n iconName: 'border-top-left',\n icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm192 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm-96 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm192 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm0-128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBorderStyle = faBorderTopLeft;\nvar faMapLocationDot = {\n prefix: 'fas',\n iconName: 'map-location-dot',\n icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152V422.8c0 9.8-6 18.6-15.1 22.3L416 503V200.4zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6V451.8L32.9 502.7C17.1 509 0 497.4 0 480.4V209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77V504.3L192 449.4V255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faMapMarkedAlt = faMapLocationDot;\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9h26c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9H526c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9H64.5c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6h26c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nvar faSquarePollVertical = {\n prefix: 'fas',\n iconName: 'square-poll-vertical',\n icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 192c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V160zM320 288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32z\"]\n};\nvar faPoll = faSquarePollVertical;\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32V416c0 53 43 96 96 96H288c53 0 96-43 96-96h16c61.9 0 112-50.1 112-112s-50.1-112-112-112H352 32zm352 64h16c26.5 0 48 21.5 48 48s-21.5 48-48 48H384V256zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32h16c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16v32H320c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V256h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H384V192zM80 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBatteryCar = faCarBattery;\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM352 352c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 192c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M312 56c0-30.9-25.1-56-56-56s-56 25.1-56 56s25.1 56 56 56s56-25.1 56-56zM64 480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM34 169.4L9.2 185.8C3.5 189.7 0 196.2 0 203.1c0 3.2 .7 6.4 2.2 9.3L104 416H408L509.8 212.4c1.4-2.9 2.2-6.1 2.2-9.3c0-6.9-3.5-13.4-9.2-17.3L478 169.4c-8.2-5.4-19-4.4-26 2.6c-12.9 12.9-30.9 21.9-48 15.5c-17.9-6.7-28.1-20.1-32.8-35.8C367.5 139 357.3 128 344 128H328c-13.3 0-23.9 11.2-29.6 23.2C292.6 163.4 280.6 176 256 176s-36.6-12.6-42.4-24.8c-5.7-12-16.3-23.2-29.6-23.2H168c-13.3 0-23.5 11-27.3 23.7c-4.7 15.6-14.9 29.1-32.8 35.8c-17 6.4-35.1-2.7-48-15.5c-6.9-6.9-17.8-8-25.9-2.6z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368c0 26.5 21.5 48 48 48h44.3c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368V325.4c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3H464c26.5 0 48-21.5 48-48z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 64v64h64V96h64v64h64V96h64v64H320v64h64v64H320v64h64v64H320V352H256v64H192V352H128v64H64V352h64V288H64V224h64V160H64V96h64zm64 128h64V160H192v64zm0 64V224H128v64h64zm64 0H192v64h64V288zm0 0h64V224H256v64z\"]\n};\nvar faBuildingCircleCheck = {\n prefix: 'fas',\n iconName: 'building-circle-check',\n icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPersonChalkboard = {\n prefix: 'fas',\n iconName: 'person-chalkboard',\n icon: [640, 512, [], \"e53d\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V192h56 64 16c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64H576V256H384V224H320v48c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v80H243.1 177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMarsStrokeRight = {\n prefix: 'fas',\n iconName: 'mars-stroke-right',\n icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368c61.9 0 112-50.1 112-112s-50.1-112-112-112s-112 50.1-112 112s50.1 112 112 112zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152H416V176c0-13.3 10.7-24 24-24s24 10.7 24 24v56h32V176c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V280H464v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H382.4z\"]\n};\nvar faMarsStrokeH = faMarsStrokeRight;\nvar faHandBackFist = {\n prefix: 'fas',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48V96v28.5V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V149.3l-9 7.5C40.4 169 32 187 32 206V244c0 38 16.9 74 46.1 98.3L128 384v96c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V374.7c46.9-19 80-65 80-118.7V176 160 144c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'fas',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4H120c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faCloudShowersWater = {\n prefix: 'fas',\n iconName: 'cloud-showers-water',\n icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64H448c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarChart = faChartBar;\nvar faHandsBubbles = {\n prefix: 'fas',\n iconName: 'hands-bubbles',\n icon: [512, 512, [\"hands-wash\"], \"e05e\", \"M384 64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm80 160c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM128 464c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM357.1 157.5c-.3 .7-.7 1.5-1.1 2.2l-17.8 30.9c-11-12.6-27.4-19.8-44.4-19.1l20.7-35.8c6.6-11.5 21.3-15.4 32.8-8.8c10.8 6.2 14.9 19.5 9.9 30.6zm-173.6 47C112.3 227.2 64 293.3 64 368c0 1.5 0 3 .1 4.5C24.3 346.9 0 302.8 0 255.1V131.5c0-13.3 10.7-24 24-24s24 10.7 24 24l0 81.7L164.2 12c6.6-11.5 21.3-15.4 32.8-8.8s15.4 21.3 8.8 32.8l-64 110.9c-2.2 3.8-.9 8.7 2.9 10.9s8.7 .9 10.9-2.9l80-138.6c6.6-11.5 21.3-15.4 32.8-8.8s15.4 21.3 8.8 32.8l-80 138.6c-2.2 3.8-.9 8.7 2.9 10.9s8.7 .9 10.9-2.9L275 76c6.6-11.5 21.3-15.4 32.8-8.8s15.4 21.3 8.8 32.8l-44 76.2-89.1 28.3zM448 483.5c0 12.4-9.4 22.6-21.5 23.9c-.8 .1-1.6 .1-2.5 .1H223.3 216c-22.1 0-42.9-6-60.7-16.5c3-8.5 4.7-17.6 4.7-27c0-38.7-27.5-71-64-78.4c0-.6 0-1.1 0-1.7c0-1.2-.1-2.5-.1-3.7c0-68 44-128.3 108.9-148.9l83.9-26.7c12.6-4 26.1 3 30.1 15.6s-3 26.1-15.6 30.1l-53.8 17.1H456c13.3 0 24 10.7 24 24s-10.7 24-24 24H328c-4.4 0-8 3.6-8 8s3.6 8 8 8H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H328c-4.4 0-8 3.6-8 8s3.6 8 8 8H456c13.3 0 24 10.7 24 24s-10.7 24-24 24H328c-4.4 0-8 3.6-8 8s3.6 8 8 8h96c13.3 0 24 10.7 24 24z\"]\n};\nvar faHandsWash = faHandsBubbles;\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zM224 384c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faEyeLowVision = {\n prefix: 'fas',\n iconName: 'eye-low-vision',\n icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c5.2-11.8 8-24.8 8-38.5c0-53-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nvar faLowVision = faEyeLowVision;\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88v29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384H259.2l46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384H352c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192V128v-8l80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32H523.9C507.7 12.5 483.3 0 456 0zm0 112c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faSailboat = {\n prefix: 'fas',\n iconName: 'sailboat',\n icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6H272c-8.8 0-16-7.2-16-16V16zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5V336c0 8.8-7.2 16-16 16H80c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384H554.9c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512H133C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faSquarePlus = {\n prefix: 'fas',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48H64v64h64V128h96v64h64V128h96v64h64V128h16c26.5 0 48-21.5 48-48V0L440.6 23.8C424.3 29.2 407.2 32 390 32H122c-17.2 0-34.3-2.8-50.6-8.2L0 0V80zM64 288V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288H384V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faBucket = {\n prefix: 'fas',\n iconName: 'bucket',\n icon: [448, 512, [], \"e4cf\", \"M96 152v8H48v-8C48 68.1 116.1 0 200 0h48c83.9 0 152 68.1 152 152v8H352v-8c0-57.4-46.6-104-104-104H200C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32h-5.1L388.5 469c-2.6 24.4-23.2 43-47.7 43H107.2c-24.6 0-45.2-18.5-47.7-43L37.1 256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96V256c0 53 43 96 96 96s96-43 96-96V96c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V216z\"]\n};\nvar faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [128004], \"f6c8\", \"M96 224v32V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V327.8c9.9 6.6 20.6 12 32 16.1V368c0 8.8 7.2 16 16 16s16-7.2 16-16V351.1c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9V368c0 8.8 7.2 16 16 16s16-7.2 16-16V343.8c11.4-4 22.1-9.4 32-16.1V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256l32 32v49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5V184c0-13.3-10.7-24-24-24s-24 10.7-24 24v14.4l-52.9-74.1C496 86.5 452.4 64 405.9 64H272 256 192 144C77.7 64 24 117.7 24 184v54C9.4 249.8 0 267.8 0 288v17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4V256 224 184c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160v64zM592 336c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6H361.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19v54.1l-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192H408c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nvar faFolderClosed = {\n prefix: 'fas',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 480H64c-35.3 0-64-28.7-64-64V192H512V416c0 35.3-28.7 64-64 64zm64-320H0V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H448c35.3 0 64 28.7 64 64z\"]\n};\nvar faHouseTsunami = {\n prefix: 'fas',\n iconName: 'house-tsunami',\n icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1l0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6V265c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faSquareNfi = {\n prefix: 'fas',\n iconName: 'square-nfi',\n icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm75.7 64.6C68.8 162.5 64 168.8 64 176V336c0 8.8 7.2 16 16 16s16-7.2 16-16V233.8l66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4V176c0-8.8-7.2-16-16-16s-16 7.2-16 16V278.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176v64 96c0 8.8 7.2 16 16 16s16-7.2 16-16V256h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H256V192h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V336c0 8.8 7.2 16 16 16s16-7.2 16-16V176z\"]\n};\nvar faArrowUpFromGroundWater = {\n prefix: 'fas',\n iconName: 'arrow-up-from-ground-water',\n icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32V109.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192H48c-26.5 0-48 21.5-48 48V425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3V192zm384 48c0-26.5-21.5-48-48-48H384V416.5h0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9V240z\"]\n};\nvar faMartiniGlass = {\n prefix: 'fas',\n iconName: 'martini-glass',\n icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM173.3 128l-64-64H402.7l-64 64H173.3z\"]\n};\nvar faGlassMartiniAlt = faMartiniGlass;\nvar faRotateLeft = {\n prefix: 'fas',\n iconName: 'rotate-left',\n icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z\"]\n};\nvar faRotateBack = faRotateLeft;\nvar faRotateBackward = faRotateLeft;\nvar faUndoAlt = faRotateLeft;\nvar faTableColumns = {\n prefix: 'fas',\n iconName: 'table-columns',\n icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z\"]\n};\nvar faColumns = faTableColumns;\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [512, 512, [], \"e063\", \"M0 224.2c0-22.2 3.2-43.6 9.2-63.9l227 165.1C228.5 337.8 224 352.4 224 368V512H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm258.6 77.9L21 129.3C56.7 53 134.2 0 224 0h32c95.2 0 174.2 69.3 189.4 160.1c2.2 13 6.7 25.7 15 36.1l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 4.1-.6 8.1-1.6 11.9H304c-16.9 0-32.5 5.2-45.4 14.1zM352 224c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM256 512V368c0-26.5 21.5-48 48-48H512l-16 48H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.3l-10.7 32H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H464l-1.4 4.2c-8.7 26.1-33.2 43.8-60.7 43.8H256z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM96 128H0V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V128zM48 352c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V128H544zm64 208c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.6 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [640, 512, [\"dolly-box\"], \"f472\", \"M32 32C32 14.3 46.3 0 64 0h72.9c27.5 0 52 17.6 60.7 43.8L289.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L384 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L136.9 64H64C46.3 64 32 49.7 32 32zM276.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L343 79.4l19.8 60.9 60.9-19.8L403.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L366.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L276.8 134.5z\"]\n};\nvar faDollyBox = faDolly;\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [128684], \"f48d\", \"M448 32V43c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2v11c0 17.7-14.3 32-32 32s-32-14.3-32-32V245c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256V245c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2V32c0-17.7 14.3-32 32-32s32 14.3 32 32V43c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1v11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V416zm224 0v32H384V416H224zm288-64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32z\"]\n};\nvar faMinimize = {\n prefix: 'fas',\n iconName: 'minimize',\n icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224H312c-13.3 0-24-10.7-24-24V56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V312c0-13.3 10.7-24 24-24H456zm-256 0c13.3 0 24 10.7 24 24V456c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8H200zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2V200c0 13.3-10.7 24-24 24H56z\"]\n};\nvar faCompressArrowsAlt = faMinimize;\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322H55.9L96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160H256l-64-64V64H298.9zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0H176c-26.5 0-48 21.5-48 48V160H96c-17.7 0-32 14.3-32 32V298.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112H368c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48H512v50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7V320 235.2L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40V288H448V256.7c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48H112c-26.5 0-48-21.5-48-48s21.5-48 48-48H368zM144 400c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm216 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm-56-24c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM200 424c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faAnglesRight = {\n prefix: 'fas',\n iconName: 'angles-right',\n icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faAngleDoubleRight = faAnglesRight;\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V417.2l-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nvar faCirclePlay = {\n prefix: 'fas',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M614.3 247c16.3-25 25.7-54.9 25.7-87C640 71.6 568.4 0 480 0c-32.1 0-61.9 9.4-87 25.7c-7.9 5.2-8.5 16.2-1.8 22.9L591.4 248.8c6.7 6.7 17.8 6.2 22.9-1.8zM567 294.3c7.9-5.2 8.5-16.2 1.8-22.9L368.6 71.2c-6.7-6.7-17.8-6.2-22.9 1.8c-16.3 25-25.7 54.9-25.7 87c0 88.4 71.6 160 160 160c32.1 0 61.9-9.4 87-25.7zM301.5 368H18.5c-9.5 0-16.9 8.2-15 17.5C18.9 457.8 83.1 512 160 512s141.1-54.2 156.5-126.5c2-9.3-5.5-17.5-15-17.5zm0-32c9.5 0 16.9-8.2 15-17.5C301.1 246.2 236.9 192 160 192S18.9 246.2 3.5 318.5c-2 9.3 5.5 17.5 15 17.5H301.5z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M0 224V416c0 17.7 14.3 32 32 32H96V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H448V160c0-17.7-14.3-32-32-32H384V96c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32v32H96c-17.7 0-32 14.3-32 32v32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8v16c0 2.7 0 5.3 .1 8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H60.3C89.9 419.9 170 480 264 480h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264c-57.9 0-108.2-32.4-133.9-80H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112.2c-.1-2.6-.2-5.3-.2-8V248c0-2.7 .1-5.4 .2-8H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H130.1c25.7-47.6 76-80 133.9-80h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264C170 32 89.9 92.1 60.3 176H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48.1z\"]\n};\nvar faEur = faEuroSign;\nvar faEuro = faEuroSign;\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [129681], \"f6c0\", \"M248 48V256h48V58.7c23.9 13.8 40 39.7 40 69.3V256h48V128C384 57.3 326.7 0 256 0H192C121.3 0 64 57.3 64 128V256h48V128c0-29.6 16.1-55.5 40-69.3V256h48V48h48zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32V384H352v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288H48z\"]\n};\nvar faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'fas',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM192 160H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faCompassDrafting = {\n prefix: 'fas',\n iconName: 'compass-drafting',\n icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192h0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496V440.6c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1V496c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faDraftingCompass = faCompassDrafting;\nvar faPlateWheat = {\n prefix: 'fas',\n iconName: 'plate-wheat',\n icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zM56 64h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48zM400 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zm80 160v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80zm-96 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320H484.2c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446v2c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32v-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nvar faPersonShelter = {\n prefix: 'fas',\n iconName: 'person-shelter',\n icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160V480c0 17.7 14.3 32 32 32s32-14.3 32-32V178.6L256 68.9 448 178.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zm-8 280V400h16v88c0 13.3 10.7 24 24 24s24-10.7 24-24V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H246.2c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5V488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [384, 512, [9906], \"f22c\", \"M304 176c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V480c0 17.7 14.3 32 32 32s32-14.3 32-32V349.1z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm96-96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM144 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'fas',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM101.6 314c-3.7-13.7 7.5-26 21.7-26H388.7c14.2 0 25.4 12.3 21.7 26C392 382 329.8 432 256 432s-136-50-154.4-118zm116-101.2l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faHelicopterSymbol = {\n prefix: 'fas',\n iconName: 'helicopter-symbol',\n icon: [512, 512, [], \"e502\", \"M445.3 224H510C495.6 108.2 403.8 16.4 288 2V66.7C368.4 80.1 431.9 143.6 445.3 224zM510 288H445.3C431.9 368.4 368.4 431.9 288 445.4V510c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510V445.4C143.6 431.9 80.1 368.4 66.7 288H2zm0-64H66.7C80.1 143.6 143.6 80.1 224 66.7V2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V288h96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H208V160z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM161.5 169.9c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3v50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6V235.5c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faCircleChevronUp = {\n prefix: 'fas',\n iconName: 'circle-chevron-up',\n icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nvar faChevronCircleUp = faCircleChevronUp;\nvar faLariSign = {\n prefix: 'fas',\n iconName: 'lari-sign',\n icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32V96.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7V64c0-17.7 14.3-32 32-32s32 14.3 32 32v49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3V256c0 17.7-14.3 32-32 32s-32-14.3-32-32V161c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1v95c0 17.7-14.3 32-32 32s-32-14.3-32-32V188.1C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H192 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48.9C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-59-66.3c-9.1-10.2-22.2-16.1-35.9-16.1H235.1c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2h41.8c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2H52.2C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nvar faPersonWalkingDashedLineArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-dashed-line-arrow-right',\n icon: [640, 512, [], \"e553\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24V72c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM392 320c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V344c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24v48c0 13.3 10.7 24 24 24s24-10.7 24-24V440z\"]\n};\nvar faSterlingSign = {\n prefix: 'fas',\n iconName: 'sterling-sign',\n icon: [384, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M144 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L249 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C137.5 32 80 89.5 80 160.4V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H80v44.5c0 17.4-4.7 34.5-13.7 49.4L36.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S52.5 480 64 480H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H120.5l.7-1.1C136.1 390 144 361.5 144 332.5V288H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H144V160.4z\"]\n};\nvar faGbp = faSterlingSign;\nvar faPoundSign = faSterlingSign;\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24V37.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H346.5c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V346.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H37.5c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5V24c0-13.3 10.7-24 24-24zm48 224c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm-48-64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faSquarePersonConfined = {\n prefix: 'fas',\n iconName: 'square-person-confined',\n icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM256 144c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM240 248c0-30.9 25.1-56 56-56s56 25.1 56 56V350.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7V248z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0zM209.1 359.2l-18.6-31c-6.4-10.7 1.3-24.2 13.7-24.2H224h19.7c12.4 0 20.1 13.6 13.7 24.2l-18.6 31 33.4 123.9 39.5-161.2c77.2 12 136.3 78.8 136.3 159.4c0 17-13.8 30.7-30.7 30.7H265.1 182.9 30.7C13.8 512 0 498.2 0 481.3c0-80.6 59.1-147.4 136.3-159.4l39.5 161.2 33.4-123.9z\"]\n};\nvar faArrowDownLong = {\n prefix: 'fas',\n iconName: 'arrow-down-long',\n icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M224 402.7V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V402.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7z\"]\n};\nvar faLongArrowDown = faArrowDownLong;\nvar faTentArrowDownToLine = {\n prefix: 'fas',\n iconName: 'tent-arrow-down-to-line',\n icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H159.6l.7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448h76.8L384 320V448z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.3-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2V288h32c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176H352V64z\"]\n};\nvar faMailReplyAll = faReplyAll;\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [129523], \"f0f2\", \"M176 56V96H336V56c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zM128 96V56c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56V96v32V480H128V128 96zM64 96H96V480H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64zM448 480H416V96h32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64z\"]\n};\nvar faPersonSkating = {\n prefix: 'fas',\n iconName: 'person-skating',\n icon: [448, 512, [\"skating\"], \"f7c5\", \"M448 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM128 128c0-17.7 14.3-32 32-32H319.4c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V349.3l-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17H160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h88.8c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nvar faSkating = faPersonSkating;\nvar faFilterCircleDollar = {\n prefix: 'fas',\n iconName: 'filter-circle-dollar',\n icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM576 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM408.8 335.4c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7V288c0-8.8-7.2-16-16-16s-16 7.2-16 16v9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6l0 0 0 0c7 2.3 15.1 4.8 23.7 6.6v11.4c0 8.8 7.2 16 16 16s16-7.2 16-16V438.7c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5l0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nvar faFunnelDollar = faFilterCircleDollar;\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96v96H333.2c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24H64V128H192c9.9 0 19.7-2.3 28.6-6.8zM0 128V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H271.1c-9.9 0-19.7 2.3-28.6 6.8L192 64H160V48c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM344 304c0 48.6-39.4 88-88 88s-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88z\"]\n};\nvar faCircleArrowDown = {\n prefix: 'fas',\n iconName: 'circle-arrow-down',\n icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256S397.4 0 256 0zM127 297c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 214.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 409c-9.4 9.4-24.6 9.4-33.9 0L127 297z\"]\n};\nvar faArrowCircleDown = faCircleArrowDown;\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z\"]\n};\nvar faArrowRightToFile = faFileImport;\nvar faSquareArrowUpRight = {\n prefix: 'fas',\n iconName: 'square-arrow-up-right',\n icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h94.1L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135V328c0 13.3 10.7 24 24 24s24-10.7 24-24V168c0-13.3-10.7-24-24-24H160z\"]\n};\nvar faExternalLinkSquare = faSquareArrowUpRight;\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [576, 512, [128220], \"f70e\", \"M0 80v48c0 17.7 14.3 32 32 32H48 96V80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48V384c0 35.3 28.7 64 64 64s64-28.7 64-64v-5.3c0-32.4 26.3-58.7 58.7-58.7H480V128c0-53-43-96-96-96H112zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16H314.7c-14.7 0-26.7 11.9-26.7 26.7V384c0 53-43 96-96 96H368h96z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192h9.9c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480H288 267.9C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192H30c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nvar faLocationPinLock = {\n prefix: 'fas',\n iconName: 'location-pin-lock',\n icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3V352c0-23.7 12.9-44.4 32-55.4V272c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 256c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm208-16c17.7 0 32 14.3 32 32v48H368V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112V400c0 26.5 21.5 48 48 48H80c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zm192 0c-26.5 0-48 21.5-48 48V400c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H240z\"]\n};\nvar faHillAvalanche = {\n prefix: 'fas',\n iconName: 'hill-avalanche',\n icon: [640, 512, [], \"e507\", \"M471.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C433.2 261.3 448 236.4 448 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C248.3 46.6 229.9 32 208 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L471.7 401.9zM512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0 128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM100.3 87C75.1 61.8 32 79.7 32 115.3V432c0 44.2 35.8 80 80 80H428.7c35.6 0 53.5-43.1 28.3-68.3L100.3 87z\"]\n};\nvar faTemperatureEmpty = {\n prefix: 'fas',\n iconName: 'temperature-empty',\n icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM160 0C98.1 0 48 50.2 48 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C272 50.2 221.9 0 160 0zm0 416c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faTemperature0 = faTemperatureEmpty;\nvar faThermometer0 = faTemperatureEmpty;\nvar faThermometerEmpty = faTemperatureEmpty;\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-75.1 60.9-136 136-136h8c8.8 0 16 7.2 16 16s-7.2 16-16 16h-8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM160 152c0-13.3 10.7-24 24-24h88c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152zm48 88h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H208v64z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 256h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm96-96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm128-32H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faScaleUnbalancedFlip = {\n prefix: 'fas',\n iconName: 'scale-unbalanced-flip',\n icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2V480c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-21-9.2-37.2-27-44.2-49l-125.9-42zm396.3 211c-.4-.8-1.3-1.3-2.2-1.3s-1.7 .5-2.2 1.3L435.1 416H588.9L514.2 273.3zM512 224c18.8 0 36 10.4 44.7 27l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C594.9 498.6 562.2 512 512 512s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L467.3 251c8.7-16.6 25.9-27 44.7-27zM128 144c-.9 0-1.7 .5-2.2 1.3L51.1 288H204.9L130.2 145.3c-.4-.8-1.3-1.3-2.2-1.3zm44.7-21l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C210.9 370.6 178.2 384 128 384s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L83.3 123C92 106.4 109.2 96 128 96s36 10.4 44.7 27z\"]\n};\nvar faBalanceScaleRight = faScaleUnbalancedFlip;\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z\"]\n};\nvar faDiamondTurnRight = {\n prefix: 'fas',\n iconName: 'diamond-turn-right',\n icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v56H224c-35.3 0-64 28.7-64 64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V280c0-8.8 7.2-16 16-16h64v56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nvar faDirections = faDiamondTurnRight;\nvar faBurst = {\n prefix: 'fas',\n iconName: 'burst',\n icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nvar faHouseLaptop = {\n prefix: 'fas',\n iconName: 'house-laptop',\n icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5H336c-19.1 0-36.3 8.4-48 21.7V208c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64V416H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304V448H544V304H352zm-48-16c0-17.7 14.3-32 32-32H560c17.7 0 32 14.3 32 32V448h32c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48H544 352 304c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16h32V288z\"]\n};\nvar faLaptopHouse = faHouseLaptop;\nvar faFaceTired = {\n prefix: 'fas',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3h-3.2c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faTired = faFaceTired;\nvar faMoneyBills = {\n prefix: 'fas',\n iconName: 'money-bills',\n icon: [640, 512, [], \"e1f3\", \"M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64H160V256zM224 96c0 35.3-28.7 64-64 64V96h64zM576 256v64H512c0-35.3 28.7-64 64-64zM512 96h64v64c-35.3 0-64-28.7-64-64zM448 208c0 44.2-35.8 80-80 80s-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144H299.3c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32H496c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368H280c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96H440c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H200c13.3 0 24-10.7 24-24z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nvar faFontAwesome = {\n prefix: 'fas',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384c-63.1 22.5-82.3 32-119.5 32c-62.8 0-86.6-32-149.3-32c-20.6 0-36.6 3.6-51.2 8.2v-64c14.6-4.6 30.6-8.2 51.2-8.2c62.7 0 86.5 32 149.3 32c20.4 0 35.6-3 55.5-9.3v-208c-19.9 6.3-35.1 9.3-55.5 9.3c-62.8 0-86.6-32-149.3-32c-50.8 0-74.9 20.6-115.2 28.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32s32 14.3 32 32V76.7c40.3-8 64.4-28.7 115.2-28.7c62.7 0 86.5 32 149.3 32c37.1 0 56.4-9.5 119.5-32z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faCloudArrowUp = {\n prefix: 'fas',\n iconName: 'cloud-arrow-up',\n icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nvar faCloudUpload = faCloudArrowUp;\nvar faCloudUploadAlt = faCloudArrowUp;\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3H344c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faArrowsTurnRight = {\n prefix: 'fas',\n iconName: 'arrows-turn-right',\n icon: [512, 512, [], \"e4c0\", \"M329.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L370.7 160H160c-35.3 0-64 28.7-64 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V224C32 153.3 89.3 96 160 96H370.7L329.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 416H128c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96H274.7l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V270.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6V128 54.3 48c0-26.5-21.5-48-48-48h-4.5c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0H112C85.5 0 64 21.5 64 48v6.3V128v17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5V464c0 26.5 21.5 48 48 48H176c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464V295.8c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nvar faFerry = {\n prefix: 'fas',\n iconName: 'ferry',\n icon: [576, 512, [], \"e4ea\", \"M224 0H352c17.7 0 32 14.3 32 32h75.1c20.6 0 31.6 24.3 18.1 39.8L456 96H120L98.8 71.8C85.3 56.3 96.3 32 116.9 32H192c0-17.7 14.3-32 32-32zM96 128H480c17.7 0 32 14.3 32 32V283.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9H375.6c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9H183.9c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5V160c0-17.7 14.3-32 32-32zm32 64v96H448V192H128zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToPeople = {\n prefix: 'fas',\n iconName: 'arrows-down-to-people',\n icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24V142.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24zM360 200c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zM184 296c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zm312 40c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5V400c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V345.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V142.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 64c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 78.3 364 32 448 32h32c17.7 0 32 14.3 32 32zM0 128c0-17.7 14.3-32 32-32H64c123.7 0 224 100.3 224 224v32 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C100.3 352 0 251.7 0 128z\"]\n};\nvar faSprout = faSeedling;\nvar faLeftRight = {\n prefix: 'fas',\n iconName: 'left-right',\n icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nvar faArrowsAltH = faLeftRight;\nvar faBoxesPacking = {\n prefix: 'fas',\n iconName: 'boxes-packing',\n icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48H592c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H381.3c1.8-5 2.7-10.4 2.7-16V253.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H256V48zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6V432c0 8.8 7.2 16 16 16s16-7.2 16-16V310.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V176zm352 80V480c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V256H352zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144z\"]\n};\nvar faCircleArrowLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-left',\n icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM215 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L392 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-214.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L103 273c-9.4-9.4-9.4-24.6 0-33.9L215 127z\"]\n};\nvar faArrowCircleLeft = faCircleArrowLeft;\nvar faGroupArrowsRotate = {\n prefix: 'fas',\n iconName: 'group-arrows-rotate',\n icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4V163.2c0-5.7-4.7-10.4-10.4-10.4H169.9c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4v60.5c0 5.7 4.7 10.4 10.4 10.4h60.5c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nvar faBowlFood = {\n prefix: 'fas',\n iconName: 'bowl-food',\n icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32H8.6C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23v5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8V151C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nvar faArrowDownWideShort = {\n prefix: 'fas',\n iconName: 'arrow-down-wide-short',\n icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320z\"]\n};\nvar faSortAmountAsc = faArrowDownWideShort;\nvar faSortAmountDown = faArrowDownWideShort;\nvar faCloudBolt = {\n prefix: 'fas',\n iconName: 'cloud-bolt',\n icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96h47.2L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320H352h64c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H281.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nvar faThunderstorm = faCloudBolt;\nvar faTextSlash = {\n prefix: 'fas',\n iconName: 'text-slash',\n icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l16-64c2.4-9.6 .2-19.7-5.8-27.5S553.9 32 544 32H376.1h-.3H192c-14.7 0-27.5 10-31 24.2l-9.3 37.3L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1L272.9 311 243.3 416z\"]\n};\nvar faRemoveFormat = faTextSlash;\nvar faFaceSmileWink = {\n prefix: 'fas',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm92.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12.1 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM136 240h68c42 0 76 34 76 76s-34 76-76 76H160v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V368 264c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28H160v56h44z\"]\n};\nvar faArrowsLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-left-right',\n icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faArrowsH = faArrowsLeftRight;\nvar faHouseLock = {\n prefix: 'fas',\n iconName: 'house-lock',\n icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32H384c-17.7 0-32-14.3-32-32V383.7c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32V480c0 17.7-14.3 32-32 32H96.1c-17.7 0-32-14.3-32-32V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272v24.6c-19.1 11.1-32 31.7-32 55.4V480zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faCloudArrowDown = {\n prefix: 'fas',\n iconName: 'cloud-arrow-down',\n icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V318.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faCloudDownload = faCloudArrowDown;\nvar faCloudDownloadAlt = faCloudArrowDown;\nvar faChildren = {\n prefix: 'fas',\n iconName: 'children',\n icon: [640, 512, [], \"e4e1\", \"M160 128c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM88 480V400H70.2c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1H232v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V400H152v80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 128c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm-8 256v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V300.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9h12.3c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H472z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96V384H96V96l384 0V384h64V96c0-35.3-28.7-64-64-64H96zM224 384v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBlackboard = faChalkboard;\nvar faUserLargeSlash = {\n prefix: 'fas',\n iconName: 'user-large-slash',\n icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM284.3 320h-59C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7H528L284.3 320z\"]\n};\nvar faUserAltSlash = faUserLargeSlash;\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1v47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5V208.1zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V208.1c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nvar faHandshakeSimpleSlash = {\n prefix: 'fas',\n iconName: 'handshake-simple-slash',\n icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM0 176V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6L41.2 128.5C17.9 131.8 0 151.8 0 176z\"]\n};\nvar faHandshakeAltSlash = faHandshakeSimpleSlash;\nvar faMattressPillow = {\n prefix: 'fas',\n iconName: 'mattress-pillow',\n icon: [640, 512, [], \"e525\", \"M256 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H256V64zm32 384H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H288V448zM64 160c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faGuaraniSign = {\n prefix: 'fas',\n iconName: 'guarani-sign',\n icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32V66.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32H224V132c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7V32c0-17.7-14.3-32-32-32zM160 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380V288h92c-11.6 45-47 80.4-92 92z\"]\n};\nvar faArrowsRotate = {\n prefix: 'fas',\n iconName: 'arrows-rotate',\n icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V448c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H176c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nvar faRefresh = faArrowsRotate;\nvar faSync = faArrowsRotate;\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32v96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104H224v34.8c37.8 18 64 56.5 64 101.2V384H64V240c0-44.7 26.2-83.2 64-101.2V110c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4V32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V56h65c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416v32c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V416H288zM176 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faCruzeiroSign = {\n prefix: 'fas',\n iconName: 'cruzeiro-sign',\n icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416V320v-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32v55.3V320v82.7C135.5 378 96 321.6 96 256z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416z\"]\n};\nvar faShieldHalved = {\n prefix: 'fas',\n iconName: 'shield-halved',\n icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.7 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z\"]\n};\nvar faShieldAlt = faShieldHalved;\nvar faBookAtlas = {\n prefix: 'fas',\n iconName: 'book-atlas',\n icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9h63c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9h31.1c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9H303.5c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192c0-70.7-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128s128-57.3 128-128zM145.3 208h31.1c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32H145.3c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9h-63c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nvar faAtlas = faBookAtlas;\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H43.5c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H468.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5V32zM272 224c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm32 104c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faEnvelopeCircleCheck = {\n prefix: 'fas',\n iconName: 'envelope-circle-check',\n icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176V384c0 35.3 28.7 64 64 64H360.2C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nvar faArrowsToDot = {\n prefix: 'fas',\n iconName: 'arrows-to-dot',\n icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32V64h32c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8h32V32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H288v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H192c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224H64V192c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6v32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H96h64V352c0-53 43-96 96-96s96 43 96 96V480h64 64c17.7 0 32-14.3 32-32s-14.3-32-32-32V128H32V416z\"]\n};\nvar faHeartCircleCheck = {\n prefix: 'fas',\n iconName: 'heart-circle-check',\n icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faHouseChimneyCrack = {\n prefix: 'fas',\n iconName: 'house-chimney-crack',\n icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H326.4L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24z\"]\n};\nvar faHouseDamage = faHouseChimneyCrack;\nvar faFileZipper = {\n prefix: 'fas',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM96 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8h14.8c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nvar faMartiniGlassEmpty = {\n prefix: 'fas',\n iconName: 'martini-glass-empty',\n icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM256 210.7L109.3 64H402.7L256 210.7z\"]\n};\nvar faGlassMartini = faMartiniGlassEmpty;\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32H448c70.7 0 128 57.3 128 128v33.6c-36.5 7.4-64 39.7-64 78.4v48H128V272c0-38.7-27.5-71-64-78.4V160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48V448c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32H96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3v48 32h32H512h32V320 272z\"]\n};\nvar faCediSign = {\n prefix: 'fas',\n iconName: 'cedi-sign',\n icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V66.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6V132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8V32zM192 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V48H264c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V251.2c0-16.9-8.8-32.5-23.3-41.2L344 142.4V96h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9l0 0 0 0 .2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2 0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20V86c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V280c0 11 9 20 20 20s20-9 20-20V266.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V72z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8H480c61.4 0 101.6 24 126.2 50c12 12.6 19.9 25.2 24.9 34.9c2.5 4.8 4.3 9 5.5 12.1c.6 1.5 1.1 2.8 1.4 3.8c.2 .5 .3 .9 .4 1.3l.1 .5 .1 .2 0 .1 0 0c0 0 0 0-30.2 9.1l30.2-9.1c5.1 16.9-4.5 34.8-21.5 39.8c-16.8 5-34.5-4.4-39.7-21.1l0 0c-.1-.2-.2-.6-.5-1.2c-.5-1.3-1.4-3.4-2.8-6.1c-2.8-5.4-7.4-12.8-14.4-20.1c-4.2-4.4-9.4-9-15.8-13.2V320H192l-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3h-2C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352h96v64 64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V416H288v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416 352h96H448zm129.4-70.8c0 0 0 0 30.6-9.2l-30.6 9.2 0 0zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nvar faZ = {\n prefix: 'fas',\n iconName: 'z',\n icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32H352c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faPersonSkiing = {\n prefix: 'fas',\n iconName: 'person-skiing',\n icon: [576, 512, [9975, \"skiing\"], \"f7c9\", \"M508.7 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM34.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L264.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L321.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L44.9 301.3c-11.8-6.1-16.3-20.6-10.2-32.4zM150.9 65.6L169 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L183.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nvar faSkiing = faPersonSkiing;\nvar faRoadLock = {\n prefix: 'fas',\n iconName: 'road-lock',\n icon: [640, 512, [], \"e567\", \"M288 32H213.2c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480H288V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64h32V352c0-23.7 12.9-44.4 32-55.4V272c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32H352V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faA = {\n prefix: 'fas',\n iconName: 'a',\n icon: [448, 512, [97], \"41\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM296 320H152l72-172.8L296 320z\"]\n};\nvar faTemperatureArrowDown = {\n prefix: 'fas',\n iconName: 'temperature-arrow-down',\n icon: [512, 512, [\"temperature-down\"], \"e03f\", \"M96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.1 32 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.1 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V272c0-8.8-7.2-16-16-16s-16 7.2-16 16v50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64H448V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352H352c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nvar faTemperatureDown = faTemperatureArrowDown;\nvar faFeatherPointed = {\n prefix: 'fas',\n iconName: 'feather-pointed',\n icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faFeatherAlt = faFeatherPointed;\nvar faP = {\n prefix: 'fas',\n iconName: 'p',\n icon: [320, 512, [112], \"50\", \"M32 32H64h96c88.4 0 160 71.6 160 160s-71.6 160-160 160H64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 320 288 64C0 46.3 14.3 32 32 32zM64 288h96c53 0 96-43 96-96s-43-96-96-96H64V288z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.7 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H80c-44.2 0-80-35.8-80-80V128c0-17.7 14.3-32 32-32s32 14.3 32 32V400c0 8.8 7.2 16 16 16s16-7.2 16-16V96zm64 24v80c0 13.3 10.7 24 24 24H424c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24zm0 184c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm160 0c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H336c-8.8 0-16 7.2-16 16zM160 400c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm160 0c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"]\n};\nvar faRectangleAd = {\n prefix: 'fas',\n iconName: 'rectangle-ad',\n icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328H162.8l-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280h42.3L208 237.7zM392 256c-13.3 0-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24s-10.7-24-24-24zm24-43.9V184c0-13.3 10.7-24 24-24s24 10.7 24 24v96 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nvar faAd = faRectangleAd;\nvar faCircleArrowRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-right',\n icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zM297 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L120 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l214.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L409 239c9.4 9.4 9.4 24.6 0 33.9L297 385z\"]\n};\nvar faArrowCircleRight = faCircleArrowRight;\nvar faFilterCircleXmark = {\n prefix: 'fas',\n iconName: 'filter-circle-xmark',\n icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm59.3-180.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faLocust = {\n prefix: 'fas',\n iconName: 'locust',\n icon: [640, 512, [], \"e520\", \"M344 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h16c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4H463.8l-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L247.1 400h74.5l-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L380 400h80.4l38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L515.6 400H528c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3V280C608 143 497 32 360 32H344zm50.5 168l17.1 40H365l29.5-40zm-87.7 38.1l-1.4 1.9H257.1l32.7-41.5 16.9 39.5zM120.8 240C89.4 240 64 265.4 64 296.8c0 15.5 6.3 30 16.9 40.4L158.7 240H120.8zM528 320c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nvar faUnsorted = faSort;\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24H80c13.3 0 24 10.7 24 24V176h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H56V80H48C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432H120c13.3 0 24 10.7 24 24s-10.7 24-24 24H32c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faList12 = faListOl;\nvar faListNumeric = faListOl;\nvar faPersonDressBurst = {\n prefix: 'fas',\n iconName: 'person-dress-burst',\n icon: [640, 512, [], \"e544\", \"M528 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM390.2 384H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faMoneyCheckDollar = {\n prefix: 'fas',\n iconName: 'money-check-dollar',\n icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zM272 192H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zM164.1 160v6.3c6.6 1.2 16.6 3.2 21 4.4c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-3.8-1-17.4-3.7-21.7-4.3c-12.2-1.9-22.2-.3-28.6 2.6c-6.3 2.9-7.9 6.2-8.2 8.1c-.6 3.4 0 4.7 .1 5c.3 .5 1 1.8 3.6 3.5c6.1 4.2 15.7 7.2 29.9 11.4l.8 .2c12.1 3.7 28.3 8.5 40.4 17.4c6.7 4.9 13 11.4 16.9 20.5c4 9.1 4.8 19.1 3 29.4c-3.3 19-15.9 32-31.6 38.7c-4.9 2.1-10 3.6-15.4 4.6V352c0 11.1-9 20.1-20.1 20.1s-20.1-9-20.1-20.1v-6.4c-9.5-2.2-21.9-6.4-29.8-9.1c-1.7-.6-3.2-1.1-4.4-1.5c-10.5-3.5-16.1-14.8-12.7-25.3s14.8-16.1 25.3-12.7c2 .7 4.1 1.4 6.4 2.1l0 0 0 0c9.5 3.2 20.2 6.9 26.2 7.9c12.8 2 22.7 .7 28.8-1.9c5.5-2.3 7.4-5.3 8-8.8c.7-4 .1-5.9-.2-6.7c-.4-.9-1.3-2.2-3.7-4c-5.9-4.3-15.3-7.5-29.3-11.7l-2.2-.7c-11.7-3.5-27-8.1-38.6-16c-6.6-4.5-13.2-10.7-17.3-19.5c-4.2-9-5.2-18.8-3.4-29c3.2-18.3 16.2-30.9 31.1-37.7c5-2.3 10.3-4 15.9-5.1v-6c0-11.1 9-20.1 20.1-20.1s20.1 9 20.1 20.1z\"]\n};\nvar faMoneyCheckAlt = faMoneyCheckDollar;\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [448, 512, [], \"f5cb\", \"M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'fas',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm194.8-6.4c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M96 96c-17.7 0-32 14.3-32 32s-14.3 32-32 32s-32-14.3-32-32C0 75 43 32 96 32h97c70.1 0 127 56.9 127 127c0 52.4-32.2 99.4-81 118.4l-63 24.5 0 18.1c0 17.7-14.3 32-32 32s-32-14.3-32-32V301.9c0-26.4 16.2-50.1 40.8-59.6l63-24.5C240 208.3 256 185 256 159c0-34.8-28.2-63-63-63H96zm48 384c-22.1 0-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V428.7c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8h8.9c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nvar faUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'up-down-left-right',\n icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v96H128V192c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V288h96v96H192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H288V288h96v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H288V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faArrowsAlt = faUpDownLeftRight;\nvar faHouseChimneyUser = {\n prefix: 'fas',\n iconName: 'house-chimney-user',\n icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM288 288c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM176 400c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M148 76.6C148 34.3 182.3 0 224.6 0c20.3 0 39.8 8.1 54.1 22.4l9.3 9.3 9.3-9.3C311.6 8.1 331.1 0 351.4 0C393.7 0 428 34.3 428 76.6c0 20.3-8.1 39.8-22.4 54.1L302.1 234.1c-7.8 7.8-20.5 7.8-28.3 0L170.4 130.7C156.1 116.4 148 96.9 148 76.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2H336c26.5 0 48 21.5 48 48v56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2V464c0 26.5-21.5 48-48 48H279.2c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2H48c-26.5 0-48-21.5-48-48V343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8V176c0-26.5 21.5-48 48-48H168.8c12.8 0 23.2-10.4 23.2-23.2z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm48 160H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zM376 160h80c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24V184c0-13.3 10.7-24 24-24z\"]\n};\nvar faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M288 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L288.1 86.9l-.1 .3V376.4zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L288.1 439.8 159.8 508.3C149 514 135.9 513.1 126 506s-14.9-19.3-12.9-31.3L137.8 329 33.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L195 150.3 259.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L438.5 329l24.6 145.7z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faWhiskeyGlass = {\n prefix: 'fas',\n iconName: 'whiskey-glass',\n icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5h253c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32H32zM87.7 224L69 96H443L424.3 224H87.7z\"]\n};\nvar faGlassWhiskey = faWhiskeyGlass;\nvar faBuildingCircleExclamation = {\n prefix: 'fas',\n iconName: 'building-circle-exclamation',\n icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faMagnifyingGlassChart = {\n prefix: 'fas',\n iconName: 'magnifying-glass-chart',\n icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8v64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96V280c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64v96c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faArrowUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-right-from-square',\n icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLink = faArrowUpRightFromSquare;\nvar faCubesStacked = {\n prefix: 'fas',\n iconName: 'cubes-stacked',\n icon: [448, 512, [], \"e4e6\", \"M192 64v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H224c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H288zm64 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H352zM160 384v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H72.9l56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288h46L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224H329L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224h-64L62.4 53.9zm78 234.1H167l-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1H249zm96 64h26.6l-15.2 45.6L345 288z\"]\n};\nvar faKrw = faWonSign;\nvar faWon = faWonSign;\nvar faVirusCovid = {\n prefix: 'fas',\n iconName: 'virus-covid',\n icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V81.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3H464V216c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H430.4c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1V464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V430.4c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280H48v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V216c0-13.3 10.7-24 24-24s24 10.7 24 24v16H81.6c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1V48H216c-13.3 0-24-10.7-24-24zm48 200c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm64 104c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faAustralSign = {\n prefix: 'fas',\n iconName: 'austral-sign',\n icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96L82.7 320H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H56L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H365.3L352 288h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H325.3L253.5 51.7zM256 224H192l32-76.8L256 224zm-90.7 64H282.7L296 320H152l13.3-32z\"]\n};\nvar faF = {\n prefix: 'fas',\n iconName: 'f',\n icon: [320, 512, [102], \"46\", \"M32 32C14.3 32 0 46.3 0 64V256 448c0 17.7 14.3 32 32 32s32-14.3 32-32V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.3 5.4c-25.9 5.9-49.9 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [128739], \"f018\", \"M256 32H181.2c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480H256V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64H521.4c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32H320V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32V64c0 .1 0 .1 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288V432v48c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V432H416v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V432 288c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1c0-.1 0-.1 0-.2V32c0-17.7-14.3-32-32-32H192zM165.4 128H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 224H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 352c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm352-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faCab = faTaxi;\nvar faPersonCirclePlus = {\n prefix: 'fas',\n iconName: 'person-circle-plus',\n icon: [576, 512, [], \"e541\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm16-208c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240V16.6c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16H304zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4V288L412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288H558.4z\"]\n};\nvar faPieChart = faChartPie;\nvar faBoltLightning = {\n prefix: 'fas',\n iconName: 'bolt-lightning',\n icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faSackXmark = {\n prefix: 'fas',\n iconName: 'sack-xmark',\n icon: [512, 512, [], \"e56a\", \"M192 96H320l47.4-71.1C374.5 14.2 366.9 0 354.1 0H157.9c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32H192c-3.8 2.5-8.1 5.3-13 8.4l0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96H416c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nvar faFishFins = {\n prefix: 'fas',\n iconName: 'fish-fins',\n icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.7 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.7 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM448 256c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faBuildingFlag = {\n prefix: 'fas',\n iconName: 'building-flag',\n icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32V512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H480c0-17.7-14.3-32-32-32z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'fas',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zm-166.2-89l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H328.6C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V232.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4V232.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V352h64v40.6c9.7 5.6 17.8 13.7 23.4 23.4H520.6c5.6-9.7 13.7-17.8 23.4-23.4V279.4c-9.7-5.6-17.8-13.7-23.4-23.4h-46c-5.4-15.4-14.6-28.9-26.5-39.6V192h72.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H311.4z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32H352c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48H408c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72H72c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72h13.7C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64h16.2c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nvar faLocationPin = {\n prefix: 'fas',\n iconName: 'location-pin',\n icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nvar faMapMarker = faLocationPin;\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112v16 0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2V128 112C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8v46.5l-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8V400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400V262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2V182.8l273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1H48c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0H444.2zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm80-16c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faHelmetSafety = {\n prefix: 'fas',\n iconName: 'helmet-safety',\n icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32v2.3 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288v64H544l0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1V66.3 64c0-17.7-14.3-32-32-32H256zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6H16.6z\"]\n};\nvar faHardHat = faHelmetSafety;\nvar faHatHard = faHelmetSafety;\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320H48c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48s-21.5 48-48 48H48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faCircleRight = {\n prefix: 'fas',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zm395.3 11.3l-112 112c-4.6 4.6-11.5 5.9-17.4 3.5s-9.9-8.3-9.9-14.8l0-64-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-64c0-6.5 3.9-12.3 9.9-14.8s12.9-1.1 17.4 3.5l112 112c6.2 6.2 6.2 16.4 0 22.6z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faPlaneCircleCheck = {\n prefix: 'fas',\n iconName: 'plane-circle-check',\n icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faFaceRollingEyes = {\n prefix: 'fas',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM192 368H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H192c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H456.6C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM456.6 96H119.4c-5.6 9.7-13.7 17.8-23.4 23.4V392.6c9.7 5.6 17.8 13.7 23.4 23.4H456.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLineChart = faChartLine;\nvar faMaskVentilator = {\n prefix: 'fas',\n iconName: 'mask-ventilator',\n icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H159.1zm26-48H56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6V393.3c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8v76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H454.5C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48H584c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320V512h64V320c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nvar faSignsPost = {\n prefix: 'fas',\n iconName: 'signs-post',\n icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32H64C46.3 32 32 46.3 32 64v64c0 17.7 14.3 32 32 32H441.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32H288V192H224v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32V256zM288 480V384H224v96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMapSigns = faSignsPost;\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32V96c0 17.7 14.3 32 32 32h80v32H87c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V378.4c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160H208V128h80c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H64zM96 48H256c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm48-216c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm72 24c0-13.3 10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24zm-24 56c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm120-56c0-13.3 10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24zm-24 56c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm120-56c0-13.3 10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24zm-24 56c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faPersonCircleQuestion = {\n prefix: 'fas',\n iconName: 'person-circle-question',\n icon: [576, 512, [], \"e542\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faH = {\n prefix: 'fas',\n iconName: 'h',\n icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nvar faTarp = {\n prefix: 'fas',\n iconName: 'tarp',\n icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32H576V128zM448 448L576 320H448l0 128zM96 192c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faScrewdriverWrench = {\n prefix: 'fas',\n iconName: 'screwdriver-wrench',\n icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4h54.1l109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109V104c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7H352c-8.8 0-16-7.2-16-16V102.6c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM104 432c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faTools = faScrewdriverWrench;\nvar faArrowsToEye = {\n prefix: 'fas',\n iconName: 'arrows-to-eye',\n icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63V40c0-13.3 10.7-24 24-24s24 10.7 24 24v96c0 13.3-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H78.1L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63H600c13.3 0 24 10.7 24 24s-10.7 24-24 24H504c-13.3 0-24-10.7-24-24V40c0-13.3 10.7-24 24-24s24 10.7 24 24V78.1l63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63H40c-13.3 0-24-10.7-24-24s10.7-24 24-24h96c13.3 0 24 10.7 24 24v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V433.9L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63V472c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H561.9l63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faPlugCircleBolt = {\n prefix: 'fas',\n iconName: 'plug-circle-bolt',\n icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nvar faMarsAndVenus = {\n prefix: 'fas',\n iconName: 'mars-and-venus',\n icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0H472c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59.1 146.7-136.1 158.2c0 .6 .1 1.2 .1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l-24 0-24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456H208c-13.3 0-24-10.7-24-24s10.7-24 24-24h24v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2 .1-1.8C155.1 370.7 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48l0 0h0v0zM256 488h24c0 13.3-10.7 24-24 24s-24-10.7-24-24h24zm96-264c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H256z\"]\n};\nvar faHomeUser = faHouseUser;\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0h58c15.1-18.1 32.1-35.7 50.5-52.1c1.5-1.4 3.2-2.6 4.8-3.8L402.9 32H304V160zm209.9-23.7c17.4-15.8 43.9-16.2 61.7-1.2c-.1-.7-.3-1.4-.5-2.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l12.8 64.2c9.6 1 19 4.9 26.6 11.8c11.7 10.6 23 21.6 33.9 33.1c1.6-1.6 3.3-3.2 5-4.8zM325.2 210.7c3.8-6.2 7.9-12.5 12.3-18.7H32l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H337.6c-31-34.7-49.6-80.6-49.6-129.9c0-35.2 16.3-73.6 37.2-107.4zm128.4-78.9c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8c-19.7 31.9-32.4 66.2-32.4 92.6C320 407.9 390.3 480 480 480c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 401c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faHouseCrack = {\n prefix: 'fas',\n iconName: 'house-crack',\n icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H230.4l-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32z\"]\n};\nvar faMartiniGlassCitrus = {\n prefix: 'fas',\n iconName: 'martini-glass-citrus',\n icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48H296.2C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128H392c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177V464h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H208 120c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V345.9L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nvar faCocktail = faMartiniGlassCitrus;\nvar faFaceSurprise = {\n prefix: 'fas',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM256 416c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faBottleWater = {\n prefix: 'fas',\n iconName: 'bottle-water',\n icon: [256, 512, [], \"e4c5\", \"M88 0h80c13.3 0 24 10.7 24 24V64H64V24C64 10.7 74.7 0 88 0zM0 151.7c0-15.6 9-29.8 23.2-36.5l24.4-11.4c11-5.1 23-7.8 35.1-7.8h90.6c12.1 0 24.1 2.7 35.1 7.8l24.4 11.4c14.2 6.6 23.2 20.8 23.2 36.5c0 14.4-7.5 27-18.9 34.1c11.5 8.8 18.9 22.6 18.9 38.2c0 16.7-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48c0-16.7 8.5-31.4 21.5-40C8.5 415.4 0 400.7 0 384s8.5-31.4 21.5-40C8.5 335.4 0 320.7 0 304s8.5-31.4 21.5-40C8.5 255.4 0 240.7 0 224c0-15.6 7.4-29.4 18.9-38.2C7.5 178.7 0 166.1 0 151.7zM64 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faCirclePause = {\n prefix: 'fas',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM224 192V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192H160c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512H285.9c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6L66.5 148.4zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nvar faAppleWhole = {\n prefix: 'fas',\n iconName: 'apple-whole',\n icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H224zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nvar faAppleAlt = faAppleWhole;\nvar faKitchenSet = {\n prefix: 'fas',\n iconName: 'kitchen-set',\n icon: [576, 512, [], \"e51a\", \"M240 144c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112h71.8c8.8-9.8 21.6-16 35.8-16H496c26.5 0 48 21.5 48 48s-21.5 48-48 48H392c-14.2 0-27-6.2-35.8-16H284.4zM144 208c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm256 32c13.3 0 24 10.7 24 24v8h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h96v-8c0-13.3 10.7-24 24-24zM288 464V352H512V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48zM48 320h80 16 32c26.5 0 48 21.5 48 48s-21.5 48-48 48H160c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V336c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160v32h16zM24 464H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faR = {\n prefix: 'fas',\n iconName: 'r',\n icon: [320, 512, [114], \"52\", \"M32 32C14.3 32 0 46.3 0 64V288 448c0 17.7 14.3 32 32 32s32-14.3 32-32V320h95.3L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144H32zM176 256H64V96H176c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faTemperatureQuarter = {\n prefix: 'fas',\n iconName: 'temperature-quarter',\n icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature1 = faTemperatureQuarter;\nvar faThermometer1 = faTemperatureQuarter;\nvar faThermometerQuarter = faTemperatureQuarter;\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6V377.4c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1v-188L288 246.6v188z\"]\n};\nvar faBitcoinSign = {\n prefix: 'fas',\n iconName: 'bitcoin-sign',\n icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32V64h32V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H41.7C18.7 448 0 429.3 0 406.3V288 265.7 224 101.6C0 80.8 16.8 64 37.6 64H48V32zM64 224H176c26.5 0 48-21.5 48-48s-21.5-48-48-48H64v96zm112 64H64v96H208c26.5 0 48-21.5 48-48s-21.5-48-48-48H176z\"]\n};\nvar faShieldDog = {\n prefix: 'fas',\n iconName: 'shield-dog',\n icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64V160h44.2c12.1 0 23.2 6.8 28.6 17.7L320 192h64c8.8 0 16 7.2 16 16v32c0 44.2-35.8 80-80 80H272v50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160h40 8v32 32c0 17.7-14.3 32-32 32s-32-14.3-32-32V176c0-8.8 7.2-16 16-16zm128 48c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M96 0C80.7 0 67.6 10.8 64.6 25.7l-64 320c-1.9 9.4 .6 19.1 6.6 26.6S22.4 384 32 384H288v64H224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H608c9.6 0 18.7-4.3 24.7-11.7s8.5-17.2 6.6-26.6l-64-320C572.4 10.8 559.3 0 544 0H96zm5.4 168L122.2 64h90.4L202.3 168H101.4zm-9.6 48H197.5L187.1 320H71L91.8 216zm153.9 0H394.3l10.4 104H235.3l10.4-104zm196.8 0H548.2L569 320h-116L442.5 216zm96-48H437.7L427.3 64h90.4l20.8 104zm-149.1 0h-139L260.9 64H379.1l10.4 104z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z\"]\n};\nvar faElevator = {\n prefix: 'fas',\n iconName: 'elevator',\n icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H208c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H64zm96 192c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM80 400c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V400zm192 0c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32V400zM400 272c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0H304c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nvar faMoneyBillTransfer = {\n prefix: 'fas',\n iconName: 'money-bill-transfer',\n icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64H337.9c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5V384c0 35.3-28.7 64-64 64H302.1c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5V128c0-35.3 28.7-64 64-64zm64 64H96v64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64h64V320zM320 352c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96z\"]\n};\nvar faMoneyBillTrendUp = {\n prefix: 'fas',\n iconName: 'money-bill-trend-up',\n icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2l0 .1v0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faHouseFloodWaterCircleArrowRight = {\n prefix: 'fas',\n iconName: 'house-flood-water-circle-arrow-right',\n icon: [640, 512, [], \"e50f\", \"M288 144C288 64.5 223.5 0 144 0S0 64.5 0 144s64.5 144 144 144s144-64.5 144-144zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4H576c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faSquarePollHorizontal = {\n prefix: 'fas',\n iconName: 'square-poll-horizontal',\n icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faPollH = faSquarePollHorizontal;\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512z\"]\n};\nvar faBackwardFast = {\n prefix: 'fas',\n iconName: 'backward-fast',\n icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7V416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V214.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96V214.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96V416c0 12.4-7.2 23.7-18.4 29z\"]\n};\nvar faFastBackward = faBackwardFast;\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [576, 512, [9842, 9850, 9851], \"f1b8\", \"M206.7 45.1C224.2 17 255 0 288 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L315 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM461.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L352 448v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2v32l96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L68 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L214 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3-51.5 82.4c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0c-53.1 0-96.1-43.2-95.8-96.4c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128v64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9V128c0-16.8-12.9-30.5-29.3-31.9zM336 144v16c0 53-43 96-96 96H208c-53 0-96-43-96-96V144c0-26.5 21.5-48 48-48H288c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512H128V448c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64l98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16v48h32V464c0-8.8-7.2-16-16-16zm96 32c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320h73.8c34.2 0 93.7-28 93.7-64c0-35-59.5-64-93.7-64l-116.6 0L297.2 16.1C291.5 6.2 280.9 0 269.4 0H213.2c-10.6 0-18.3 10.2-15.4 20.4l40.3 140.9L38.8 5.1zm2.7 123.6C36 130.6 32 135.9 32 142c0 1.3 .2 2.6 .5 3.9L64 256 32.5 366.1c-.4 1.3-.5 2.6-.5 3.9c0 7.8 6.3 14 14 14H88c5 0 9.8-2.4 12.8-6.4L144 320H246.9l-49 171.6c-2.9 10.2 4.8 20.4 15.4 20.4l56.2 0c11.5 0 22.1-6.2 27.8-16.1l65.3-114.3L41.5 128.7z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128V384c0 17.7 14.3 32 32 32s32-14.3 32-32V224l86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32H96V384c0 17.7 14.3 32 32 32s32-14.3 32-32V160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 96 0 110.3 0 128z\"]\n};\nvar faBasketball = {\n prefix: 'fas',\n iconName: 'basketball',\n icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64C119 35.5 158.6 15 202.3 5.6C206 19.1 208 33.3 208 48c0 38.4-13.5 73.7-36.1 101.3L86.6 64zM64 86.6l85.2 85.2C121.7 194.5 86.4 208 48 208c-14.7 0-28.9-2-42.4-5.7C15 158.6 35.5 119 64 86.6zM256 0c64.9 0 124.2 24.2 169.4 64L256 233.4 194.6 172C222.9 138.5 240 95.3 240 48c0-16.2-2-32-5.8-47.1C241.4 .3 248.7 0 256 0zM48 240c47.3 0 90.5-17.1 124-45.4L233.4 256 64 425.4C24.2 380.2 0 320.9 0 256c0-7.3 .3-14.6 .9-21.8C16 238 31.8 240 48 240zm463.1 37.8C496 274 480.2 272 464 272c-47.3 0-90.5 17.1-124 45.4L278.6 256 448 86.6c39.8 45.1 64 104.4 64 169.4c0 7.3-.3 14.6-.9 21.8zm-4.7 31.9C497 353.4 476.5 393 448 425.4l-85.2-85.2C390.3 317.5 425.6 304 464 304c14.7 0 28.9 2 42.4 5.7zM340.1 362.7L425.4 448C393 476.5 353.4 497 309.7 506.4C306 492.9 304 478.7 304 464c0-38.4 13.5-73.7 36.1-101.3zM317.4 340C289.1 373.5 272 416.7 272 464c0 16.2 2 32 5.8 47.1c-7.2 .6-14.5 .9-21.8 .9c-64.9 0-124.2-24.2-169.4-64L256 278.6 317.4 340z\"]\n};\nvar faBasketballBall = faBasketball;\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCircleUp = {\n prefix: 'fas',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm11.3-395.3l112 112c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H304v96c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V256H144c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l112-112c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM224 448c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM304 64H80V384H304V64z\"]\n};\nvar faMobileAlt = faMobileScreenButton;\nvar faVolumeHigh = {\n prefix: 'fas',\n iconName: 'volume-high',\n icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.3 640 165.8 640 256s-41.5 170.8-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nvar faVolumeUp = faVolumeHigh;\nvar faUsersRays = {\n prefix: 'fas',\n iconName: 'users-rays',\n icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zM464 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H80c-8.8 0-16-7.2-16-16s7.2-16 16-16H448c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM416 336c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376H80c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h33.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nvar faBurger = {\n prefix: 'fas',\n iconName: 'burger',\n icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1H61.1zM144 128c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm240 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zM272 96c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zM16 304c0-26.5 21.5-48 48-48H448c26.5 0 48 21.5 48 48s-21.5 48-48 48H64c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16v16c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V400z\"]\n};\nvar faHamburger = faBurger;\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 456c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faBugs = {\n prefix: 'fas',\n iconName: 'bugs',\n icon: [640, 512, [], \"e4d0\", \"M196.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L160 71.7 133.9 14.1C128.4 2 114.1-3.3 102.1 2.1S84.7 21.9 90.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6h-17l-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8s-21.4 15.2-18.8 28.2l8 40C42.7 175.9 52.6 184 64 184H96v23.3l-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C114.7 274.6 135.8 288 160 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L224 207.3V184h32c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L236.3 136h-17c-4.7-11.6-12.7-21.5-22.9-28.6zM528 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L464.8 250c-12.3 1-24.2 5.6-34.1 13.3L416 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L391 322.7 353.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L535.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L598.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9l0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s25-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1l0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.4-13.4-6.6-28-4.4-43.2c8.5-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nvar faRupee = faRupeeSign;\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM128 256c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm88 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6H216 176 128 80c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nvar faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2H248.4c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48H542.8c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM96 171.6L40.6 128H0V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V171.6zM413.6 421.9L128 196.9V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM48 352c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V128H544zm64 208c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faBookBookmark = {\n prefix: 'fas',\n iconName: 'book-bookmark',\n icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [448, 512, [], \"f126\", \"M80 104c13.3 0 24-10.7 24-24s-10.7-24-24-24S56 66.7 56 80s10.7 24 24 24zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM80 456c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nvar faBridge = {\n prefix: 'fas',\n iconName: 'bridge',\n icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H72v64H0V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96s96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96V160H504V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM456 96v64H376V96h80zM328 96v64H248V96h80zM200 96v64H120V96h80z\"]\n};\nvar faPhoneFlip = {\n prefix: 'fas',\n iconName: 'phone-flip',\n icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nvar faPhoneAlt = faPhoneFlip;\nvar faTruckFront = {\n prefix: 'fas',\n iconName: 'truck-front',\n icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0H432c44.2 0 80 35.8 80 80V368c0 26.2-12.6 49.4-32 64v48c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V432C12.6 417.4 0 394.2 0 368V80zm129.9 72.2L112 224H400l-17.9-71.8C378.5 138 365.7 128 351 128H161c-14.7 0-27.5 10-31 24.2zM128 320c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm288 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [512, 512, [128008], \"f6be\", \"M288 192h17.1c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4v4 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V339.2L248 448h56c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-53 0-96-43-96-96V192.5c0-16.1-12-29.8-28-31.8l-7.9-1C10.5 157.6-1.9 141.6 .2 124s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3v85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5v0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32h0c-3.7-4.1-7-8.5-9.9-13.2C325.3 164 320 146.6 320 128v0V32 12 10.7C320 4.8 324.7 .1 330.6 0h.2c3.3 0 6.4 1.6 8.4 4.2l0 .1L352 21.3l27.2 36.3L384 64h64l4.8-6.4L480 21.3 492.8 4.3l0-.1c2-2.6 5.1-4.2 8.4-4.2h.2C507.3 .1 512 4.8 512 10.7V12 32v96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM400 128c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faAnchorCircleExclamation = {\n prefix: 'fas',\n iconName: 'anchor-circle-exclamation',\n icon: [640, 512, [], \"e4ab\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faTruckField = {\n prefix: 'fas',\n iconName: 'truck-field',\n icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64H320c23.7 0 44.4 12.9 55.4 32h51.8c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2H544c35.3 0 64 28.7 64 64v32c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V288c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32V96zM384 224h85.9l-42.7-96H384v96zM160 432c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm368-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M416 256s96-96 96-160c0-53-43-96-96-96s-96 43-96 96c0 29.4 20.2 65.5 42.1 96H320c-53 0-96 43-96 96s43 96 96 96h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H188.6c-6.2 9.6-12.6 18.8-19 27.2c-10.7 14.2-21.3 26.9-30 36.8H416c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h96zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM149.9 448c21.9-30.5 42.1-66.6 42.1-96c0-53-43-96-96-96s-96 43-96 96c0 64 96 160 96 160s3.5-3.5 9.2-9.6c.4-.4 .7-.8 1.1-1.2c3.3-3.5 7.1-7.8 11.4-12.8c.2-.2 .4-.4 .6-.6c9.4-10.8 20.7-24.6 31.6-39.8zM96 384c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faClipboardQuestion = {\n prefix: 'fas',\n iconName: 'clipboard-question',\n icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V314.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H158.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faPanorama = {\n prefix: 'fas',\n iconName: 'panorama',\n icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6V434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6V77.6C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM160 160c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm208 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272H176c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-53-43-96-96-96H96zM224 96c26.5 0 48 21.5 48 48v56c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V144c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48v56c0 13.3-10.7 24-24 24H328c-13.3 0-24-10.7-24-24V144zM96 128c26.5 0 48 21.5 48 48v24c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V176c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48v24c0 13.3-10.7 24-24 24H456c-13.3 0-24-10.7-24-24V176zM96 480H480c53 0 96-43 96-96V352c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nvar faFileCircleMinus = {\n prefix: 'fas',\n iconName: 'file-circle-minus',\n icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM576 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-64 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5V80C0 53.5 21.5 32 48 32H197.5c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [320, 512, [127863], \"f4e3\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM88.1 128l5.3-64H226.6l5.3 64H88.1z\"]\n};\nvar faForwardFast = {\n prefix: 'fas',\n iconName: 'forward-fast',\n icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7V416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32s-32 14.3-32 32V214.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96V214.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96V416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nvar faFastForward = faForwardFast;\nvar faFaceMehBlank = {\n prefix: 'fas',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM208.4 208c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm128 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faSquareParking = {\n prefix: 'fas',\n iconName: 'square-parking',\n icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 256h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H192v64zm48 64H192v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 168c0-22.1 17.9-40 40-40h72c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faParking = faSquareParking;\nvar faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [576, 512, [], \"e012\", \"M314.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c9.7 8.9 12.9 22.9 8.1 35.2S557.2 256 544 256H512V368c0 26.5-21.5 48-48 48H278.1C259.6 350.8 216.8 295.9 160 261.7V256h-9.9c-16.5-9-34-16.2-52.3-21.6c-4.1-12-.8-25.3 8.5-34l208-192zM304 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H304zM24 256c128.1 0 232 103.9 232 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 256c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM0 376c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24z\"]\n};\nvar faBarsProgress = {\n prefix: 'fas',\n iconName: 'bars-progress',\n icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160H320V128H448v32zM48 64C21.5 64 0 85.5 0 112v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zM448 352v32H192V352H448zM48 288c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48z\"]\n};\nvar faTasksAlt = faBarsProgress;\nvar faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32V44l96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12V32c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32h96l22.6-22.6c6-6 14.1-9.4 22.6-9.4H192V116.2l32-4 32 4V160h18.7c8.5 0 16.6 3.4 22.6 9.4L320 192h32c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32s-14.3-32-32-32H315.9c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48H32c-17.7 0-32-14.3-32-32V224zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nvar faCartFlatbed = {\n prefix: 'fas',\n iconName: 'cart-flatbed',\n icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64H48c8.8 0 16 7.2 16 16V368c0 44.2 35.8 80 80 80h18.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H450.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-8.8 0-16-7.2-16-16V80C128 35.8 92.2 0 48 0H32zM192 80V272c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H464V176c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1V32H240c-26.5 0-48 21.5-48 48z\"]\n};\nvar faDollyFlatbed = faCartFlatbed;\nvar faBanSmoking = {\n prefix: 'fas',\n iconName: 'ban-smoking',\n icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32H384v32H333.3zm32 32H400c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H269.3L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48H304c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H229.5z\"]\n};\nvar faSmokingBan = faBanSmoking;\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [640, 512, [], \"f120\", \"M41.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 41.4 86.6zM288 416H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H288c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faMobileButton = {\n prefix: 'fas',\n iconName: 'mobile-button',\n icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zM192 464c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faHouseMedicalFlag = {\n prefix: 'fas',\n iconName: 'house-medical-flag',\n icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32H624c8.8 0 16 7.2 16 16V176c0 8.8-7.2 16-16 16H512V512H448V192 32c0-17.7 14.3-32 32-32zM276.8 39.7L416 159V512h1l-.2 0H96c-17.7 0-32-14.3-32-32V288H32c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H288V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBasketShopping = {\n prefix: 'fas',\n iconName: 'basket-shopping',\n icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512H430c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H458.4L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192H171.7L253.3 35.1zM192 304v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faShoppingBasket = faBasketShopping;\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H380.8zM224 352c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zm64-96c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faBusSimple = {\n prefix: 'fas',\n iconName: 'bus-simple',\n icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80V96 416c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32V96 80C0 35.2 99.2 0 224 0zM64 128V256c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 400c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBusAlt = faBusSimple;\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM432 256c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM288 192c0 35.3-28.7 64-64 64c-11.5 0-22.3-3-31.6-8.4c-.2 2.8-.4 5.5-.4 8.4c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6z\"]\n};\nvar faFaceSadCry = {\n prefix: 'fas',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V477.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V493.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336v32c0 26.5 21.5 48 48 48s48-21.5 48-48V336c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9H150.9l-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2h42.2zM304 184c0-13.3 10.7-24 24-24h56c53 0 96 43 96 96s-43 96-96 96H328c-13.3 0-24-10.7-24-24V184zm48 24v96h32c26.5 0 48-21.5 48-48s-21.5-48-48-48H352z\"]\n};\nvar faPersonMilitaryToPerson = {\n prefix: 'fas',\n iconName: 'person-military-to-person',\n icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9H184.1c8.8-.1 15.9-7.2 15.9-16V16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1H66.5C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256v32c0 17.7 14.3 32 32 32H192c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5V256c0-35.3-28.7-64-64-64H96c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zm-32 32c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32H448c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H352zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376v32l-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0v32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 3 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nvar faFileShield = {\n prefix: 'fas',\n iconName: 'file-shield',\n icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v47l-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7H514.3c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nvar faTowerObservation = {\n prefix: 'fas',\n iconName: 'tower-observation',\n icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144v80c0 17.7-14.3 32-32 32h-4.9l32 192H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H384.5c-.4 0-.8 0-1.1 0H128.6c-.4 0-.8 0-1.1 0H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l32-192H128c-17.7 0-32-14.3-32-32V144c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448h117zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256H197.8zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [576, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M544 0c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM416 96c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM320 224V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zM160 288c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32zM64 416v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSignal5 = faSignal;\nvar faSignalPerfect = faSignal;\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [512, 512, [128653], \"f207\", \"M256 0C390.4 0 480 35.2 480 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V448H160v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C32 35.2 121.6 0 256 0zM96 160v96c0 17.7 14.3 32 32 32H240V128H128c-17.7 0-32 14.3-32 32zM272 288H384c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H272V288zM112 400c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM352 80c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16z\"]\n};\nvar faHeartCircleXmark = {\n prefix: 'fas',\n iconName: 'heart-circle-xmark',\n icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faHouseChimney = {\n prefix: 'fas',\n iconName: 'house-chimney',\n icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64 24c0 22.1 17.9 40 40 40h24 32.5c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1h16c22.1 0 40-17.9 40-40V455.8c.3-2.6 .5-5.3 .5-8.1l-.7-160.2h32z\"]\n};\nvar faHomeLg = faHouseChimney;\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFaceFrown = {\n prefix: 'fas',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faFrown = faFaceFrown;\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32V192v96c0 17.7 14.3 32 32 32s32-14.3 32-32V224h50.7l128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0H32zM176 160H64V64H176c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faShop = {\n prefix: 'fas',\n iconName: 'shop',\n icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 224H320V384H128V224H64zm448 0V480c0 17.7 14.3 32 32 32s32-14.3 32-32V224H512z\"]\n};\nvar faStoreAlt = faShop;\nvar faFloppyDisk = {\n prefix: 'fas',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 416c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faSave = faFloppyDisk;\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9H480v56.1l6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4H544v65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24H576v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H24c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7V288H56.6c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1V176 128h-7.5c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128H320 224v64h72 48 72V128zM160 288v64H296h24 24H480V288H344 320h0H296 160z\"]\n};\nvar faScaleUnbalanced = {\n prefix: 'fas',\n iconName: 'scale-unbalanced',\n icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2V480c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V153.3c21-9.2 37.2-27 44.2-49l125.9-42zm-396.3 211c.4-.8 1.3-1.3 2.2-1.3s1.7 .5 2.2 1.3L204.9 416H51.1l74.7-142.7zM128 224c-18.8 0-36 10.4-44.7 27L5.5 399.5c-3.1 5.8-6.1 14-5.5 23.8c.7 12.1 4.8 35.2 24.8 55.1C45.1 498.6 77.8 512 128 512s82.9-13.4 103.2-33.5c20-20 24.2-43 24.8-55.1c.6-9.8-2.5-18-5.5-23.8L172.7 251c-8.7-16.6-25.9-27-44.7-27zm384-80c.9 0 1.7 .5 2.2 1.3L588.9 288H435.1l74.7-142.7c.4-.8 1.3-1.3 2.2-1.3zm-44.7-21L389.5 271.5c-3.1 5.8-6.1 14-5.5 23.8c.7 12.1 4.8 35.2 24.8 55.1C429.1 370.6 461.8 384 512 384s82.9-13.4 103.2-33.5c20-20 24.2-43 24.8-55.1c.6-9.8-2.5-18-5.5-23.8L556.7 123C548 106.4 530.8 96 512 96s-36 10.4-44.7 27z\"]\n};\nvar faBalanceScaleLeft = faScaleUnbalanced;\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faSortAsc = faSortUp;\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm160-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faCommenting = faCommentDots;\nvar faPlantWilt = {\n prefix: 'fas',\n iconName: 'plant-wilt',\n icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56v13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V120C464 53.7 410.3 0 344 0S224 53.7 224 120v21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120v13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V248c0-30.9 25.1-56 56-56s56 25.1 56 56v32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V280 248 120z\"]\n};\nvar faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nvar faFaceGrinSquint = {\n prefix: 'fas',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandHoldingDollar = {\n prefix: 'fas',\n iconName: 'hand-holding-dollar',\n icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24V34.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3 0 0c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V220.6c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingUsd = faHandHoldingDollar;\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [576, 512, [], \"e05a\", \"M455.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L228 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L135 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7l0 0-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2c-12.7 3.6-20.1 16.9-16.5 29.7s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L247 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L403 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L471 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zm-331 332.7l0 0L176 368l-51.9-4.7zM240 320c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm32-88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40V188.2c8.5-7.6 19.7-12.2 32-12.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48v32 64c0 70.7-57.3 128-128 128l-16 0H240l-.1 0h-5.2c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7V40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128V352c0 80-128.9 128-288 128S0 432 0 352V160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9l0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nvar faHandsPraying = {\n prefix: 'fas',\n iconName: 'hands-praying',\n icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4v73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384v96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7V224c0-17.7 14.3-32 32-32s32 14.3 32 32v80c0 8.8 7.2 16 16 16s16-7.2 16-16V219.1c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8V304c0 8.8 7.2 16 16 16s16-7.2 16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32V342.3c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480V384c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2V238.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nvar faPrayingHands = faHandsPraying;\nvar faArrowRotateRight = {\n prefix: 'fas',\n iconName: 'arrow-rotate-right',\n icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nvar faArrowRightRotate = faArrowRotateRight;\nvar faArrowRotateForward = faArrowRotateRight;\nvar faRedo = faArrowRotateRight;\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM336 272c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nvar faLocationCrosshairs = {\n prefix: 'fas',\n iconName: 'location-crosshairs',\n icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32V66.7C368.4 80.1 431.9 143.6 445.3 224H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H445.3C431.9 368.4 368.4 431.9 288 445.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C143.6 431.9 80.1 368.4 66.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V32c0-17.7 14.3-32 32-32zM128 256c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128s-128 57.3-128 128zm128 80c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faLocation = faLocationCrosshairs;\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312zm88 48h0v0l0 0zM288 304c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zm80 176c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H504c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2v.2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7V168c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nvar faChildDress = {\n prefix: 'fas',\n iconName: 'child-dress',\n icon: [320, 512, [], \"e59c\", \"M224 64c0-35.3-28.7-64-64-64S96 28.7 96 64s28.7 64 64 64s64-28.7 64-64zM88 400v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h16v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h17.8c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400H88z\"]\n};\nvar faUsersBetweenLines = {\n prefix: 'fas',\n iconName: 'users-between-lines',\n icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM211.2 160c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 320c0-35.3 28.7-64 64-64h96c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6H64c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6h96c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32H493.6zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32h-224c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1h96c7.4 0 14.7 .8 21.6 2.4zM563.2 160c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM321.6 256c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32V156.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2V32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm72 32c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'fas',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.4 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nvar faCalendarXmark = {\n prefix: 'fas',\n iconName: 'calendar-xmark',\n icon: [448, 512, [\"calendar-times\"], \"f273\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM305 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faChildReaching = {\n prefix: 'fas',\n iconName: 'child-reaching',\n icon: [384, 512, [], \"e59d\", \"M256 64c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384h32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V221.6c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0h32c95.2 0 174.2 69.3 189.4 160.1c2.2 13 6.7 25.7 15 36.1l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM240 80c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C161.5 168.1 145 208 112 208c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C184.1 302.5 224 319 224 352c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C318.5 279.9 335 240 368 240c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C295.9 145.5 256 129 256 96c0-8.8-7.2-16-16-16zM216 224c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm72 32c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faUserGear = {\n prefix: 'fas',\n iconName: 'user-gear',\n icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 256c-70.7 0-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128s-57.3 128-128 128zm-45.7 48h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V454.8c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9V218.2zm92.1 133.5c0-26.5-21.5-48-48.1-48s-48.1 21.5-48.1 48s21.5 48 48.1 48s48.1-21.5 48.1-48z\"]\n};\nvar faUserCog = faUserGear;\nvar faArrowUp19 = {\n prefix: 'fas',\n iconName: 'arrow-up-1-9',\n icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM352 64c0-17.7 14.3-32 32-32h48c17.7 0 32 14.3 32 32v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H384c-17.7 0-32-14.3-32-32zm93.7 300.9c10.8-5.1 18.3-16.2 18.3-28.9c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32c4.9 0 9.6-1.1 13.7-3.1zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUp = faArrowUp19;\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V448h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 144 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96V64zM384 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm72 32c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm32 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM320 192c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm32 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM320 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faMosquitoNet = {\n prefix: 'fas',\n iconName: 'mosquito-net',\n icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4V242.2L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5V137.9c0-14.9 10.1-27.3 23.8-31V63.7c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2V107c13.7 3.6 23.8 16.1 23.8 31v22.6l45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35v23.1l32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6v50c0 17.7-14.3 32-32 32s-32-14.3-32-32v-50l-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H528v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H448v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V400H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V320H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16zm16 112h48V320H528v48zm0 80h48V400H528v48zM448 320v48h48V320H448zm0 80v48h48V400H448z\"]\n};\nvar faBridgeWater = {\n prefix: 'fas',\n iconName: 'bridge-water',\n icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64H544c17.7 0 32 14.3 32 32v35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6V352.5c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3h0l0-.5V256c0-53-43-96-96-96s-96 43-96 96V384l0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7V227.6C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6V96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64V32zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM224 512c17.7 0 32-14.3 32-32V320H192V480c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM112 80c0-26.5-21.5-48-48-48S16 53.5 16 80s21.5 48 48 48s48-21.5 48-48zm0 261.3V269.3l4.7 4.7c9 9 21.2 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H157.3l-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6v55.7l0 .9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384l32 42.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V421.3c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M32 32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192l0 128H176c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256l0-128H384v32c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H224 32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V416H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H128V320c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6v1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416H240.9l11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416H64zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.4 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nvar faPersonDigging = {\n prefix: 'fas',\n iconName: 'person-digging',\n icon: [576, 512, [\"digging\"], \"f85e\", \"M304 64c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2H288c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7h32l22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V405.1l-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nvar faDigging = faPersonDigging;\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nvar faGaugeSimple = {\n prefix: 'fas',\n iconName: 'gauge-simple',\n icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM320 352c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGaugeSimpleMed = faGaugeSimple;\nvar faTachometerAverage = faGaugeSimple;\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM208 112v48H160c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h48c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80H160c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48H104c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72H440c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72H394.3c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64h-5.5c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 320c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm160-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm0 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3H339.7c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z\"]\n};\nvar faQuoteRightAlt = faQuoteRight;\nvar faShirt = {\n prefix: 'fas',\n iconName: 'shirt',\n icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0h12.6c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V197.7l-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0h12.6z\"]\n};\nvar faTShirt = faShirt;\nvar faTshirt = faShirt;\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5V204.7c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7V413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3V294.7c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3V92.5c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2V152.6L392 121v89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4V354.8L256 323.2v95.9l-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1V354.8L528 323.2v90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [10135, 247], \"f529\", \"M272 96c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm0 320c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H400z\"]\n};\nvar faTengeSign = {\n prefix: 'fas',\n iconName: 'tenge-sign',\n icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32H192 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V224H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faTenge = faTengeSign;\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80V384 336 288C0 146.6 114.6 32 256 32s256 114.6 256 256v48 48 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nvar faHandsHolding = {\n prefix: 'fas',\n iconName: 'hands-holding',\n icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104v56 64V325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7H240c26.5 0 48-21.5 48-48V385.1c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3V224 144 104zm480 0v40 80 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2 0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2V464c0 26.5 21.5 48 48 48h66.7c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9V224 160 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nvar faHandsClapping = {\n prefix: 'fas',\n iconName: 'hands-clapping',\n icon: [576, 512, [], \"e1a8\", \"M368 16V80c0 8.8-7.2 16-16 16s-16-7.2-16-16V16c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM167 119c9.4-9.4 24.6-9.4 33.9 0L324.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L39 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L87 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM465.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4zM456.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32H384c88.4 0 160 71.6 160 160v64H0V192zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160H320h96 32 64 32v32 80c0 8.8 7.2 16 16 16s16-7.2 16-16V352c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80s-80-35.8-80-80V352H448v32 64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V384H128v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V384 288H128z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faPersonCircleXmark = {\n prefix: 'fas',\n iconName: 'person-circle-xmark',\n icon: [576, 512, [], \"e543\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm59.3-180.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M216.3 2c4.8-2.6 10.5-2.6 15.3 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L216.3 2zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14V496c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L8.3 414C3.2 411.2 0 405.9 0 400V184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8V400c0 5.9-3.2 11.2-8.3 14l-176 96c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8V280c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M176 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM120 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V325.2c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128h8c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H120zM320 0c13.3 0 24 10.7 24 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24zM560 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM440 480V384H422.2c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1H584v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H504v96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faJ = {\n prefix: 'fas',\n iconName: 'j',\n icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32V320c0 88.4-71.6 160-160 160S0 408.4 0 320V288c0-17.7 14.3-32 32-32s32 14.3 32 32v32c0 53 43 96 96 96s96-43 96-96V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faUsersViewfinder = {\n prefix: 'fas',\n iconName: 'users-viewfinder',\n icon: [640, 512, [], \"e595\", \"M48 48h88c13.3 0 24-10.7 24-24s-10.7-24-24-24H32C14.3 0 0 14.3 0 32V136c0 13.3 10.7 24 24 24s24-10.7 24-24V48zM175.8 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-80-32c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM504 48h88v88c0 13.3 10.7 24 24 24s24-10.7 24-24V32c0-17.7-14.3-32-32-32H504c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464V376c0-13.3-10.7-24-24-24s-24 10.7-24 24V480c0 17.7 14.3 32 32 32H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H48zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H608c17.7 0 32-14.3 32-32V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v88H504z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V288zM300.9 397.9L256 368V304l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nvar faUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'up-right-from-square',\n icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLinkAlt = faUpRightFromSquare;\nvar faTableCells = {\n prefix: 'fas',\n iconName: 'table-cells',\n icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z\"]\n};\nvar faTh = faTableCells;\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 224H88c30.9 0 56 25.1 56 56s-25.1 56-56 56H80v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V320 240c0-8.8 7.2-16 16-16zm24 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H80v48h8zm72-64c0-8.8 7.2-16 16-16h24c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H176c-8.8 0-16-7.2-16-16V240zm32 112h8c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16h-8v96zm96-128h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H304v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H304v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V304 240c0-8.8 7.2-16 16-16z\"]\n};\nvar faBookBible = {\n prefix: 'fas',\n iconName: 'book-bible',\n icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272V304c0 8.8-7.2 16-16 16H224c-8.8 0-16-7.2-16-16V192H160c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h48V80z\"]\n};\nvar faBible = faBookBible;\nvar faO = {\n prefix: 'fas',\n iconName: 'o',\n icon: [448, 512, [111], \"4f\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160s160-71.6 160-160s-71.6-160-160-160zM0 256C0 132.3 100.3 32 224 32s224 100.3 224 224s-100.3 224-224 224S0 379.7 0 256z\"]\n};\nvar faSuitcaseMedical = {\n prefix: 'fas',\n iconName: 'suitcase-medical',\n icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96v32V480H384V128 96 56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM96 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H96V96zM416 480h32c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H416V480zM224 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faMedkit = faSuitcaseMedical;\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.7 3.3-8.8 6.1-15.5 6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6V144c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3V168c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6v.6c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V336 320c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6V240c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16v32 16 48c0 8.8 7.2 16 16 16s16-7.2 16-16V204.3c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1h0c0 123.7-100.3 224-224 224h-1.1H256h-.6C132 480 32 380 32 256.6V256 216.8c-10.1-14.6-16-32.3-16-51.4V144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24h2.8C44.8 58.2 83.3 32 128 32h64c44.7 0 83.2 26.2 101.2 64H296c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4v21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-13.3 0-24 10.7-24 24v8h56.4c-15.2 17-24.4 39.4-24.4 64H320c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 160c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm144-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPersonDress = {\n prefix: 'fas',\n iconName: 'person-dress',\n icon: [320, 512, [\"female\"], \"f182\", \"M160 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM88 384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3h11.6c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1H232v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H152v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faFemale = faPersonDress;\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V344c0 11-9 20-20 20s-20-9-20-20V329.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V136c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 352h8.2c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM320 352H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H360.2C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zM496 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faBriefcaseClock = faBusinessTime;\nvar faTableCellsLarge = {\n prefix: 'fas',\n iconName: 'table-cells-large',\n icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96V224H288V96H448zm0 192V416H288V288H448zM224 224H64V96H224V224zM64 288H224V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faThLarge = faTableCellsLarge;\nvar faBookTanakh = {\n prefix: 'fas',\n iconName: 'book-tanakh',\n icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24H124.9l13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24h55.4l27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48H305c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24H249.6L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48H111c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48h55.4l27.7 48-27.7 48H180.3l-27.7-48zm0-48l-13.9 24-13.9-24h27.7zm41.6-24L208 88l13.9 24H194.1zm69.3 24h27.7l-13.9 24-13.9-24zm13.9 72l13.9 24H263.4l13.9-24zm-55.4 48L208 280l-13.9-24h27.7z\"]\n};\nvar faTanakh = faBookTanakh;\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nvar faVolumeControlPhone = faPhoneVolume;\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M463.2 71.3c-2.4-12.8-9.8-24.1-20.7-31.3s-24.2-9.7-36.9-6.8l-216 48c-19.8 4.4-34.7 20.8-37.2 40.9l-8.8 70.6c5.3-.4 10.8-.7 16.5-.7c82.9 0 141.9 55.3 197.5 107.5l0 0c3.1 3 6.3 5.9 9.4 8.8C427.1 364.5 486.9 416 576 416c0 0 64 0 64-48c0-96-112-128-144-128h-1.6L463.2 71.3zM576 448c-102.9 0-171.1-60.5-230.9-116.3l-6.5-6C279.9 270.8 229.9 224 160 224c-57.8 0-97.4 28.6-123.1 63.5C10.7 323 0 363.8 0 384c0 35.3 28.7 64 64 64H576z\"]\n};\nvar faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [320, 512, [], \"f1ae\", \"M224 64c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM144 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V287.8L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H144z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [384, 512, [8356], \"f195\", \"M144 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L249 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C137.5 32 80 89.5 80 160.4V192H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H80v32H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H78c-2.2 10.5-6.1 20.6-11.7 29.9L36.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S52.5 480 64 480H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H120.5l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H144V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H144V160.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nvar faPlaneLock = {\n prefix: 'fas',\n iconName: 'plane-lock',\n icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7v84.6l101.8 58.2C418 247.6 416 259.6 416 272v24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1V400l57.6 43.2c4 3 6.4 7.8 6.4 12.8v24 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8V297.3c0-5.7 3.1-11 8.1-13.9L192 178.3V93.7zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [448, 512, [127991], \"f02b\", \"M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nvar faCakeCandles = {\n prefix: 'fas',\n iconName: 'cake-candles',\n icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z\"]\n};\nvar faBirthdayCake = faCakeCandles;\nvar faCake = faCakeCandles;\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nvar faAnglesUp = {\n prefix: 'fas',\n iconName: 'angles-up',\n icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faAngleDoubleUp = faAnglesUp;\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [512, 512, [128206], \"f0c6\", \"M396.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nvar faArrowRightToCity = {\n prefix: 'fas',\n iconName: 'arrow-right-to-city',\n icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H146.7l-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [127895], \"f4d6\", \"M224 96c39.5 0 66.8 12.2 81.9 21.5L245.6 184l79.3 87.4 36.3-40c14.7-16.2 22.8-37.3 22.8-59.1v-27c0-15.6-4.1-30.8-12-44.3L337.7 42C326.4 22.7 307 6.8 282.1 3.5C267.8 1.6 248.4 0 224 0s-43.8 1.6-58 3.5C141 6.8 121.7 22.7 110.4 42L76 101c-7.8 13.4-12 28.7-12 44.3v27c0 21.9 8.1 42.9 22.8 59.1l57.9 63.8L224 382.6 334.2 504.1c6.4 7 16.3 9.7 25.4 6.6l72-24c7.7-2.6 13.6-8.8 15.6-16.7s0-16.2-5.4-22.2L303.3 295.2 224 207.8l-81.9-90.3C157.3 108.2 184.5 96 224 96zM202.4 406.5L123.2 319 6.3 447.9c-5.4 6-7.5 14.4-5.4 22.2s7.9 14.1 15.6 16.7l72 24c9 3 19 .4 25.4-6.6l88.6-97.7z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32V164.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398V325l90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1v-.4l-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58V398c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v45.5l9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faArrowUp91 = {\n prefix: 'fas',\n iconName: 'arrow-up-9-1',\n icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM352 320c0-17.7 14.3-32 32-32h48c17.7 0 32 14.3 32 32v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V352H384c-17.7 0-32-14.3-32-32zm93.7-171.1c10.8-5.1 18.3-16.2 18.3-28.9c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32c4.9 0 9.6-1.1 13.7-3.1zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUpAlt = faArrowUp91;\nvar faLitecoinSign = {\n prefix: 'fas',\n iconName: 'litecoin-sign',\n icon: [448, 512, [], \"e1d3\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V213.6L55.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L96 280.1V448c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V261.9l136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L160 195.3V64z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm96 64c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0-384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0-448c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm0 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM224 416c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm0-320c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM416 480c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm0-384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM32 32C14.3 32 0 46.3 0 64S14.3 96 32 96s32-14.3 32-32s-14.3-32-32-32zM416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM224 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm192-64c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM32 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM416 128c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zM32 192c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm192-64c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32z\"]\n};\nvar faCircleNodes = {\n prefix: 'fas',\n iconName: 'circle-nodes',\n icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16H240V320H208c-7 0-13.7 1.5-19.7 4.2L68.2 192H96.5c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192h6L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V368c0-7.8-1.9-15.2-5.2-21.7L487.1 192h6c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16h28.3L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2H272V192H383.5z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3V176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nvar faTruckFieldUn = {\n prefix: 'fas',\n iconName: 'truck-field-un',\n icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96v32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32v32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288c0-35.3-28.7-64-64-64h-4.2c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38H375.4C364.4 44.9 343.7 32 320 32H96zm288 96h43.2l42.7 96H384V128zM208 384c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm272 48c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM253.3 135.1l34.7 52V144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144v64c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V144c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0H64 320h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V75c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1v11c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V437c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75V64C14.3 64 0 49.7 0 32zM96 64V75c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9V64H96zm0 384H288V437c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9v11z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.7 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9H55.9C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5 208 288l48-64h65z\"]\n};\nvar faUserDoctor = {\n prefix: 'fas',\n iconName: 'user-doctor',\n icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1V362c27.6 7.1 48 32.2 48 62v40c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16V424c0-17.7-14.3-32-32-32s-32 14.3-32 32v24c8.8 0 16 7.2 16 16s-7.2 16-16 16H256c-8.8 0-16-7.2-16-16V424c0-29.8 20.4-54.9 48-62V304.9c-6-.6-12.1-.9-18.3-.9H178.3c-6.2 0-12.3 .3-18.3 .9v65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7V311.2zM144 448c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faUserMd = faUserDoctor;\nvar faCircleInfo = {\n prefix: 'fas',\n iconName: 'circle-info',\n icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-144c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faInfoCircle = faCircleInfo;\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96h44.7c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40H416c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm416 0c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 384c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faCameraAlt = faCamera;\nvar faSquareVirus = {\n prefix: 'fas',\n iconName: 'square-virus',\n icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm88 32c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 448c-70.7 0-128-57.3-128-128s57.3-128 128-128s128 57.3 128 128s-57.3 128-128 128zm0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm16 96c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faCarOn = {\n prefix: 'fas',\n iconName: 'car-on',\n icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM185.8 224H326.2c6.8 0 12.8 4.3 15.1 10.6L360.3 288H151.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344v40 64 32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V448H384v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160H185.8c-33.8 0-64 21.3-75.3 53.1zM128 392c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm280-24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V256c0 53 43 96 96 96v32h64V352H384v32h64V352c53 0 96-43 96-96V160c17.7 0 32-14.3 32-32s-14.3-32-32-32H512 480c-17.7 0-32 14.3-32 32v41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7H55 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32v8c0 13.3-10.7 24-24 24H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H552c48.6 0 88-39.4 88-88v-8z\"]\n};\nvar faArrowDown19 = {\n prefix: 'fas',\n iconName: 'arrow-down-1-9',\n icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M352 64c0 17.7 14.3 32 32 32h16v64H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V64c0-17.7-14.3-32-32-32H384c-17.7 0-32 14.3-32 32zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM445.7 364.9c-4.2 2-8.8 3.1-13.7 3.1c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32c0 12.8-7.5 23.8-18.3 28.9zm-40.7 54.9l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericAsc = faArrowDown19;\nvar faSortNumericDown = faArrowDown19;\nvar faHandHoldingDroplet = {\n prefix: 'fas',\n iconName: 'hand-holding-droplet',\n icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3V160c0 53-43 96-96 96s-96-43-96-96v-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingWater = faHandHoldingDroplet;\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M128 96c0 35.3-28.7 64-64 64S0 131.3 0 96S28.7 32 64 32s64 28.7 64 64zm96 176c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm0 48c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM80 416c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm112 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM64 320c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM224 160c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM480 96c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm112 0c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM576 272c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm0 48c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm16 96c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM416 272c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm0 48c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zm16 96c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 0c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faPrescriptionBottleMedical = {\n prefix: 'fas',\n iconName: 'prescription-bottle-medical',\n icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM160 240v48H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V352h48c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8H32c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9V104l4.4-1.6L240.1 4.2zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM208 416c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zm272 48c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faPersonCane = {\n prefix: 'fas',\n iconName: 'person-cane',\n icon: [448, 512, [], \"e53c\", \"M272 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8V488c0 13.3 10.7 24 24 24s24-10.7 24-24V376c0-30.9-25.1-56-56-56s-56 25.1-56 56v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8z\"]\n};\nvar faTent = {\n prefix: 'fas',\n iconName: 'tent',\n icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7H416L288 288V512H32c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3V464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512H48c-26.5 0-48-21.5-48-48V270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6V128 54.3 48C64 21.5 85.5 0 112 0h4.5c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0H336c26.5 0 48 21.5 48 48v6.3V128v17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6V464c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V295.8c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280v8 32c0 8.8 7.2 16 16 16h32 8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [512, 512, [], \"f560\", \"M374.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7 86.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nvar faArrowDownAZ = {\n prefix: 'fas',\n iconName: 'arrow-down-a-z',\n icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z\"]\n};\nvar faSortAlphaAsc = faArrowDownAZ;\nvar faSortAlphaDown = faArrowDownAZ;\nvar faMoneyBillWheat = {\n prefix: 'fas',\n iconName: 'money-bill-wheat',\n icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 208c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faArrowRotateLeft = {\n prefix: 'fas',\n iconName: 'arrow-rotate-left',\n icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nvar faArrowLeftRotate = faArrowRotateLeft;\nvar faArrowRotateBack = faArrowRotateLeft;\nvar faArrowRotateBackward = faArrowRotateLeft;\nvar faUndo = faArrowRotateLeft;\nvar faHardDrive = {\n prefix: 'fas',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V280.4c-17-15.2-39.4-24.4-64-24.4H64c-24.6 0-47 9.2-64 24.4V96zM64 288H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zM320 416c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm128-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'fas',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-18.5 5-38.8 8.3-50.9 10c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.2-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M112 96c0-17.7 14.3-32 32-32h16c17.7 0 32 14.3 32 32V224v64V416c0 17.7-14.3 32-32 32H144c-17.7 0-32-14.3-32-32V384H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32h48V96zm416 0v32h48c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32H528v32c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V288 224 96c0-17.7 14.3-32 32-32h16c17.7 0 32 14.3 32 32zM416 224v64H224V224H416z\"]\n};\nvar faRectangleList = {\n prefix: 'fas',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm32-128c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z\"]\n};\nvar faListAlt = faRectangleList;\nvar faTarpDroplet = {\n prefix: 'fas',\n iconName: 'tarp-droplet',\n icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128H197.5c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H512c35.3 0 64 28.7 64 64V352H448c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zM448 512l0-128H576L448 512zM96 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faHouseMedicalCircleCheck = {\n prefix: 'fas',\n iconName: 'house-medical-circle-check',\n icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm320 0c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonSkiingNordic = {\n prefix: 'fas',\n iconName: 'person-skiing-nordic',\n icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464H202.8l41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464H99.7l54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H159.3c.4 0 .9 0 1.3 0H319.3c.5 0 1 0 1.4 0H504c39.8 0 72-32.2 72-72v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 13.3-10.7 24-24 24H434.6l27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32H426.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464H357.8l21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288h2.7z\"]\n};\nvar faSkiingNordic = faPersonSkiingNordic;\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192zM224 248c13.3 0 24 10.7 24 24v56h56c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V376H144c-13.3 0-24-10.7-24-24s10.7-24 24-24h56V272c0-13.3 10.7-24 24-24z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0h40.1c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14-9.3-22.5zM32 448H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160-80c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm64 48c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faCircleLeft = {\n prefix: 'fas',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM116.7 244.7l112-112c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8l0 64 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 64c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-112-112c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faTrainSubway = {\n prefix: 'fas',\n iconName: 'train-subway',\n icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 128c0-17.7 14.3-32 32-32h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM272 96h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H272c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM128 352c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm224 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSubway = faTrainSubway;\nvar faChartGantt = {\n prefix: 'fas',\n iconName: 'chart-gantt',\n icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32zm96 64H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faIndianRupeeSign = {\n prefix: 'fas',\n iconName: 'indian-rupee-sign',\n icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32H96h16H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H231.8c9.6 14.4 16.7 30.6 20.7 48H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H252.4c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256h80c32.8 0 61-19.7 73.3-48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H185.3C173 115.7 144.8 96 112 96H96 32C14.3 96 0 81.7 0 64z\"]\n};\nvar faIndianRupee = faIndianRupeeSign;\nvar faInr = faIndianRupeeSign;\nvar faCropSimple = {\n prefix: 'fas',\n iconName: 'crop-simple',\n icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H128V32zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-256c0-35.3-28.7-64-64-64L160 64v64l224 0 0 352z\"]\n};\nvar faCropAlt = faCropSimple;\nvar faMoneyBill1 = {\n prefix: 'fas',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM400 256c0 61.9-50.1 112-112 112s-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 98c-8.8-3.8-19-2-26 4.6l-144 136C2.7 243.1 0 249.4 0 256s2.7 12.9 7.5 17.4l144 136c7 6.6 17.2 8.4 26 4.6s14.5-12.5 14.5-22l0-88 288 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-288 0 0-88c0-9.6-5.7-18.2-14.5-22z\"]\n};\nvar faLongArrowAltLeft = faLeftLong;\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9l0 0 0 0 0 0-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5H283.3c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32H64c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32H384c0-17.7 14.3-32 32-32zM338.6 384H109.4c-10.1 10.6-18.6 21.3-25.5 32H364.1c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128H338.6c10.1-10.7 18.6-21.3 25.5-32H83.9c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5H164.7z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H532.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM107.5 224H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h11.5c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-31.2 23.6-52.7 50-55.7L144.7 210c-9.5 8.5-22.2 14-37.2 14z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faSubtract = faMinus;\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V32H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h16V96H59.4C48.7 96 40 104.7 40 115.4c0 3 .7 5.9 2 8.7c6 12.4 23.8 50.8 32.8 83.9H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h7.7C78 302.9 69.4 352.7 63.1 384H192.9c-6.4-31.3-14.9-81.1-16.6-128H184c13.3 0 24-10.7 24-24s-10.7-24-24-24h-2.8c9-33.2 26.8-71.5 32.8-83.9c1.3-2.7 2-5.6 2-8.7c0-10.7-8.7-19.4-19.4-19.4H144V64h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H144V16zM25.2 451.4l-8.8 4.4C6.3 460.8 0 471.1 0 482.3C0 498.7 13.3 512 29.7 512H226.3c16.4 0 29.7-13.3 29.7-29.7c0-11.2-6.3-21.5-16.4-26.5l-8.8-4.4c-4.1-2.1-6.8-6.3-6.8-10.9c0-13.5-10.9-24.4-24.4-24.4H56.4C42.9 416 32 426.9 32 440.4c0 4.6-2.6 8.9-6.8 10.9zm279.2 4.4c-10.1 5-16.4 15.3-16.4 26.5c0 16.4 13.3 29.7 29.7 29.7H482.3c16.4 0 29.7-13.3 29.7-29.7c0-11.2-6.3-21.5-16.4-26.5l-8.8-4.4c-4.1-2.1-6.8-6.3-6.8-10.9c0-13.5-10.9-24.4-24.4-24.4H344.4c-13.5 0-24.4 10.9-24.4 24.4c0 4.6-2.6 8.9-6.8 10.9l-8.8 4.4zM304 259.9c0 7.8 2.8 15.3 8 21.1l18.9 21.4c5.4 6.1 8.2 14 8 22.1L337 384H462.5l-2.7-58.7c-.4-8.5 2.6-16.9 8.4-23.1l19.3-21c5.4-5.9 8.5-13.6 8.5-21.7V200c0-4.4-3.6-8-8-8H464c-4.4 0-8 3.6-8 8v16c0 4.4-3.6 8-8 8h-8c-4.4 0-8-3.6-8-8V200c0-4.4-3.6-8-8-8H376c-4.4 0-8 3.6-8 8v16c0 4.4-3.6 8-8 8h-8c-4.4 0-8-3.6-8-8V200c0-4.4-3.6-8-8-8H312c-4.4 0-8 3.6-8 8v59.9zM392 336c-4.4 0-8-3.6-8-8V304c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 4.4-3.6 8-8 8H392z\"]\n};\nvar faArrowLeftLong = {\n prefix: 'fas',\n iconName: 'arrow-left-long',\n icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M109.3 288L480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288z\"]\n};\nvar faLongArrowLeft = faArrowLeftLong;\nvar faPlugCircleCheck = {\n prefix: 'fas',\n iconName: 'plug-circle-check',\n icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M320 64c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nvar faFrancSign = {\n prefix: 'fas',\n iconName: 'franc-sign',\n icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64V224v96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64h67.8L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448V64z\"]\n};\nvar faHandsAslInterpreting = {\n prefix: 'fas',\n iconName: 'hands-asl-interpreting',\n icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7V256c0 70.7 57.3 128 128 128h72 8v-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2V256c0-70.7-57.3-128-128-128H440h-8v.3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nvar faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faAslInterpreting = faHandsAslInterpreting;\nvar faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faGear = {\n prefix: 'fas',\n iconName: 'gear',\n icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80z\"]\n};\nvar faCog = faGear;\nvar faDropletSlash = {\n prefix: 'fas',\n iconName: 'droplet-slash',\n icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.1 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0h-1.8c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTintSlash = faDropletSlash;\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5l0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4H221.8c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6l0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H192c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H560V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H448V454c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454v58H288zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126v2H0v-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160H160V296.6c-19.1 11.1-32 31.7-32 55.4V480c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2H48c-26.5 0-48-21.5-48-48V176 160z\"]\n};\nvar faMosquito = {\n prefix: 'fas',\n iconName: 'mosquito',\n icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344h42.3l-21.1-34.5zM371.4 256l-54-88H194.6l-54 88 54 88H317.4l54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4H348.7l-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400H53.4C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112H163.3l56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112H458.6c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168H383.1zM283 112L256 68l-27 44h54zM128.9 168H86.6l21.1 34.5L128.9 168zM107.8 309.5L86.6 344h42.3l-21.1-34.5zM229 400l27 44 27-44H229z\"]\n};\nvar faPersonMilitaryRifle = {\n prefix: 'fas',\n iconName: 'person-military-rifle',\n icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4V48c0 8.8-7.2 16-16 16H185c-13.8 0-25-11.2-25-25zm17.6 57H334.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7V480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9h50.4c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512H192c-17.7 0-32-14.3-32-32V369.7l-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faShoppingCart = faCartShopping;\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32H88h48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96C14.3 96 0 81.7 0 64zM136 96H88V256h48V96zM288 64c0-17.7 14.3-32 32-32h56 48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96c-17.7 0-32-14.3-32-32zM424 96H376V256h48V96z\"]\n};\nvar faPlugCirclePlus = {\n prefix: 'fas',\n iconName: 'plug-circle-plus',\n icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M224 109.3V217.6L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V283.2c0-16.9-8.8-32.5-23.3-41.2L416 217.6V109.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M40 352c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0zm192 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0zM40 320l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40zM232 192c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0zM40 160l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40L40 32C17.9 32 0 49.9 0 72l0 48c0 22.1 17.9 40 40 40zM232 32c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0z\"]\n};\nvar faArrowTurnUp = {\n prefix: 'fas',\n iconName: 'arrow-turn-up',\n icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nvar faLevelUp = faArrowTurnUp;\nvar faU = {\n prefix: 'fas',\n iconName: 'u',\n icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32V288c0 70.7 57.3 128 128 128s128-57.3 128-128V64c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 106-86 192-192 192S0 394 0 288V64C0 46.3 14.3 32 32 32z\"]\n};\nvar faSquareRootVariable = {\n prefix: 'fas',\n iconName: 'square-root-variable',\n icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M289 24.2C292.5 10 305.3 0 320 0H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H345L239 487.8c-3.2 13-14.2 22.6-27.6 24s-26.1-5.5-32.1-17.5L76.2 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c12.1 0 23.2 6.8 28.6 17.7l73.3 146.6L289 24.2zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faSquareRootAlt = faSquareRootVariable;\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 512C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256s-114.6 256-256 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faBackwardStep = {\n prefix: 'fas',\n iconName: 'backward-step',\n icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241V96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V271l11.5 9.6 192 160z\"]\n};\nvar faStepBackward = faBackwardStep;\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 320 544h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H576V384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H544 320 96 32zm96 64H288v64H128V384zm224 0H512v64H352V384z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M192 96v12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12V96c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H132.1c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48H352c17.7 0 32 14.3 32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160H320l-22.6-22.6c-6-6-14.1-9.4-22.6-9.4H256V180.2l-32-4-32 4V224H173.3c-8.5 0-16.6 3.4-22.6 9.4L128 256H32z\"]\n};\nvar faBaseballBatBall = {\n prefix: 'fas',\n iconName: 'baseball-bat-ball',\n icon: [640, 512, [], \"f432\", \"M550.3 0c-10.9 0-21.4 3.4-30.2 9.8L279.7 184.6c-13.9 10.1-26.8 21.4-38.7 33.8L138.7 325.3c-9.2 9.6-19.3 18.4-30.1 26.3L79.3 372.9c1.3 1.5 2.6 3 3.9 4.7l48 64c1.6 2.2 3.1 4.4 4.4 6.6l27.3-19.9c11.6-8.4 24-15.8 37-21.8l135.3-63.1c16.7-7.8 32.7-17.2 47.6-28.1L619 143.6c13.2-9.6 21-24.9 21-41.2c0-11-3.6-21.8-10.2-30.6L609.6 44.8 591.4 20.6C581.7 7.6 566.5 0 550.3 0zM496 512c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM57.6 396.8c-10.6-14.1-30.7-17-44.8-6.4s-17 30.7-6.4 44.8l48 64c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-48-64z\"]\n};\nvar faS = {\n prefix: 'fas',\n iconName: 's',\n icon: [384, 512, [115], \"53\", \"M131.1 105.4c-20.1 8.6-30.8 21.8-33.9 39.4c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3c-16.8-5.6-25.8-23.7-20.3-40.5s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5-31.5-5.5c7.3-42.5 35.3-71.7 71.8-87.3c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.1 22.7c-11.2-3-48.2-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nvar faTimeline = {\n prefix: 'fas',\n iconName: 'timeline',\n icon: [640, 512, [], \"e29c\", \"M128 120c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm32 49.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288v54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V288H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V169.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3V224H160V169.3zM536 96c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM320 440c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm16 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336zM272 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM368 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V240zM464 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nvar faHouseChimneyMedical = {\n prefix: 'fas',\n iconName: 'house-chimney-medical',\n icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H320V208c0-8.8-7.2-16-16-16H272z\"]\n};\nvar faClinicMedical = faHouseChimneyMedical;\nvar faTemperatureThreeQuarters = {\n prefix: 'fas',\n iconName: 'temperature-three-quarters',\n icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V152c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature3 = faTemperatureThreeQuarters;\nvar faThermometer3 = faTemperatureThreeQuarters;\nvar faThermometerThreeQuarters = faTemperatureThreeQuarters;\nvar faMobileScreen = {\n prefix: 'fas',\n iconName: 'mobile-screen',\n icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z\"]\n};\nvar faMobileAndroidAlt = faMobileScreen;\nvar faPlaneUp = {\n prefix: 'fas',\n iconName: 'plane-up',\n icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6v56.7c0 10.9-10.7 18.6-21.1 15.2L320 320v80l57.6 43.2c4 3 6.4 7.8 6.4 12.8v42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400V320L21.1 377C10.7 380.4 0 372.7 0 361.8V305.1c0-10.7 5.3-20.7 14.2-26.6L192 160V93.7z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7H256c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96h32l-18.8 75.1c15.8 14.8 28.7 32.8 37.5 52.9H544c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H512c-9.1 12.1-19.9 22.9-32 32v64c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H256v32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V416c-34.9-26.2-58.7-66.3-63.2-112H68c-37.6 0-68-30.4-68-68s30.4-68 68-68h4c13.3 0 24 10.7 24 24s-10.7 24-24 24H68c-11 0-20 9-20 20s9 20 20 20H99.2c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2H384zm64 136c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [576, 512, [\"battery-3\"], \"f242\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm208 32V320H96V192H288z\"]\n};\nvar faBattery3 = faBatteryHalf;\nvar faMountainCity = {\n prefix: 'fas',\n iconName: 'mountain-city',\n icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48v92.1l71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16h-3.5l73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H568V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H480V48c0-26.5-21.5-48-48-48H336zm32 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176zm160 96c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zM224 188.9L283.8 288H223l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512H413.5c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2l0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5V176c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336V300.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4V304v5.7V336zm32 0V304 278.1c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5V272c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5V432c0 44.2-86 80-192 80S0 476.2 0 432V396.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [576, 512, [9772], \"f66d\", \"M277.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9l0 0 0 0 0 0 0 0-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C376.9 97.4 400 134 400 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1 0 0 0 0c3.6 6.7 2 15-3.8 19.9L304 343.5v19.8l35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L433.1 80c7.2-14.3 7.2-14.3 7.2-14.3l0 0 0 0 .1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1 0 0 0 0s0 0-10.2-12.3l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L304 423.4v28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7V424.1l-40.3 27.7C229.8 463.3 219.9 472 208 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L144 400c-10.2 12.3-10.2 12.3-10.3 12.3l0 0 0 0-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C58.4 324.5 32 277.1 32 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29c4.8-3.2 8.9-5.7 11.8-7.3c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0 0 0 0 0s0 0 7.2 14.3l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C137.2 119 128 149.5 128 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L272 362.6V343.5l-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9l0 0 0 0 0 0 .1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C199.1 254.6 176 218 176 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1 0 0 0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM252.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C259 210.2 264 190.9 264 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C317 141.8 312 161.1 312 176s5 34.2 11.8 53.1z\"]\n};\nvar faSliders = {\n prefix: 'fas',\n iconName: 'sliders',\n icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0-17.7 14.3-32 32-32l54.7 0c12.3-28.3 40.5-48 73.3-48s61 19.7 73.3 48L480 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-246.7 0c-12.3 28.3-40.5 48-73.3 48s-61-19.7-73.3-48L32 448c-17.7 0-32-14.3-32-32zm192 0c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM384 256c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm-32-80c32.8 0 61 19.7 73.3 48l54.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-54.7 0c-12.3 28.3-40.5 48-73.3 48s-61-19.7-73.3-48L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l246.7 0c12.3-28.3 40.5-48 73.3-48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32s-14.3-32-32-32zm73.3 0L480 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-214.7 0c-12.3 28.3-40.5 48-73.3 48s-61-19.7-73.3-48L32 128C14.3 128 0 113.7 0 96S14.3 64 32 64l86.7 0C131 35.7 159.2 16 192 16s61 19.7 73.3 48z\"]\n};\nvar faSlidersH = faSliders;\nvar faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M256 64H384v64H256V64zM240 0c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96v32H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H192V288H448v32H400c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H512V288h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V192h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H240zM96 448V384H224v64H96zm320-64H544v64H416V384z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [320, 512, [128205], \"f276\", \"M320 144c0 79.5-64.5 144-144 144S32 223.5 32 144S96.5 0 176 0s144 64.5 144 144zM176 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM144 480V317.1c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M34.6 288H80c8.8 0 16-7.2 16-16V72c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V40c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V72c0-22.1 17.9-40 40-40s40 17.9 40 40V272c0 8.8 7.2 16 16 16h45.4c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faCentSign = {\n prefix: 'fas',\n iconName: 'cent-sign',\n icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32V66.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nvar faPersonPregnant = {\n prefix: 'fas',\n iconName: 'person-pregnant',\n icon: [384, 512, [], \"e31e\", \"M192 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zM120 383c-13.8-3.6-24-16.1-24-31V296.9l-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1h1.1 12.5H192c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3v32c0 17.7-14.3 32-32 32H304 264v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384h-8-8v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V383z\"]\n};\nvar faWandSparkles = {\n prefix: 'fas',\n iconName: 'wand-sparkles',\n icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7V176c0 8.8-7.2 16-16 16H384.2c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9V272c0-8.8 7.2-16 16-16h34.6c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM224 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nvar faEllipsisVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-vertical',\n icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56zm0-160c30.9 0 56 25.1 56 56s-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56zM120 96c0 30.9-25.1 56-56 56S8 126.9 8 96S33.1 40 64 40s56 25.1 56 56z\"]\n};\nvar faEllipsisV = faEllipsisVertical;\nvar faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128v80c26.5 0 48 21.5 48 48s-21.5 48-48 48v80c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V304c-26.5 0-48-21.5-48-48s21.5-48 48-48V128c0-35.3-28.7-64-64-64H64zm64 96l0 192H448V160H128zm-32 0c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V256c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nvar faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 88L32 208c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l288 0 0 88c0 9.6 5.7 18.2 14.5 22z\"]\n};\nvar faLongArrowAltRight = faRightLong;\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1v36.1l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9v32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3v33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.4-23.7-122.5-13.4L64 400v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V416 345.5 312.8 249.5 216.8 153.5 120.8 64 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faLaptopFile = {\n prefix: 'fas',\n iconName: 'laptop-file',\n icon: [640, 512, [], \"e51d\", \"M192 0H48C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H162.7c6.6-18.6 24.4-32 45.3-32V272c0-44.2 35.8-80 80-80h32V128H224c-17.7 0-32-14.3-32-32V0zm96 224c-26.5 0-48 21.5-48 48v16 96 32H208c-8.8 0-16 7.2-16 16v16c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V432c0-8.8-7.2-16-16-16H592V288c0-35.3-28.7-64-64-64H320 304 288zm32 64H528V416H304V288h16zM224 0V96h96L224 0z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [\"teletype\"], \"f1e4\", \"M472.7 188.8c-8.5 13.8-26.8 19.6-42.7 13.6L356 174.2c-14-5.3-22.5-18.5-21-32.4l4.6-42.6c-54.1-17.4-113.2-17.4-167.3 0l4.6 42.6c1.5 13.9-7 27.1-21 32.4L82 202.4c-15.9 6.1-34.2 .3-42.7-13.6L4.5 132.5c-7.7-12.4-5.4-28 5.5-38.1c135.9-125.8 356.1-125.8 492 0c10.9 10.1 13.2 25.7 5.5 38.1l-34.8 56.4zM32 272c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V272zm0 192c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V464zM96 352h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V272zm64 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272zm64 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H384c-8.8 0-16-7.2-16-16V368zM336 256h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V272zm16 176h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V464c0-8.8 7.2-16 16-16zM128 464c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V464z\"]\n};\nvar faTeletype = faTty;\nvar faDiagramNext = {\n prefix: 'fas',\n iconName: 'diagram-next',\n icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64H280v64h46.1c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41H232V224H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64zM448 416V352H365.3l.4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4H64v64H210.7l5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7H448z\"]\n};\nvar faPersonRifle = {\n prefix: 'fas',\n iconName: 'person-rifle',\n icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9V512H144V337.7L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8h50.4zM320 80c0 44.2-35.8 80-80 80s-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80zM448 0c8.8 0 16 7.2 16 16V132.3c9.6 5.5 16 15.9 16 27.7V269.3l16-5.3V208c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v84.5c0 6.9-4.4 13-10.9 15.2L480 325.3V352h48c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H484l23 92.1c2.5 10.1-5.1 19.9-15.5 19.9H432c-8.8 0-16-7.2-16-16V400H400c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32V160c0-11.8 6.4-22.2 16-27.7V32c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 16z\"]\n};\nvar faHouseMedicalCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-medical-circle-exclamation',\n icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nvar faPersonHiking = {\n prefix: 'fas',\n iconName: 'person-hiking',\n icon: [384, 512, [\"hiking\"], \"f6ec\", \"M288 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM243.3 230.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3l-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208H336V184c0-13.3 10.7-24 24-24s24 10.7 24 24v55.8c0 .1 0 .2 0 .2s0 .2 0 .2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V272H296.6c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59h4.2c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nvar faHiking = faPersonHiking;\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [640, 512, [9890], \"f226\", \"M192 288c61.9 0 112-50.1 112-112s-50.1-112-112-112S80 114.1 80 176s50.1 112 112 112zM368 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H224v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H480v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H328 280 200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM256 128c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 64H288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32zM64 224c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zM64 416c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zM160 320c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zM288 192c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zM256 320c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faPeoplePulling = {\n prefix: 'fas',\n iconName: 'people-pulling',\n icon: [576, 512, [], \"e535\", \"M80 96c26.5 0 48-21.5 48-48s-21.5-48-48-48S32 21.5 32 48s21.5 48 48 48zM64 128c-35.3 0-64 28.7-64 64V320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352h15.7l30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128H64zM464 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nvar faN = {\n prefix: 'fas',\n iconName: 'n',\n icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V448c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 50.5 8.4 38.5 21.1 33.9z\"]\n};\nvar faCableCar = {\n prefix: 'fas',\n iconName: 'cable-car',\n icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm-64-8c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM32 288c0-35.3 28.7-64 64-64H232V157.5l-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5V224H416c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288zm64 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H96zm112 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H352z\"]\n};\nvar faTram = faCableCar;\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nvar faBuildingCircleXmark = {\n prefix: 'fas',\n iconName: 'building-circle-xmark',\n icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V64h48c26.5 0 48 21.5 48 48V240l44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240V112c0-26.5 21.5-48 48-48h48V32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7V128H160v90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToLine = {\n prefix: 'fas',\n iconName: 'arrows-down-to-line',\n icon: [640, 512, [], \"e4b8\", \"M576 416L64 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L512 274.7 512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L192 274.7 192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L86.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zM432 456c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faFaceGrin = {\n prefix: 'fas',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGrin = faFaceGrin;\nvar faDeleteLeft = {\n prefix: 'fas',\n iconName: 'delete-left',\n icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64H205.3c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7H512c35.3 0 64-28.7 64-64V128zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faBackspace = faDeleteLeft;\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6v42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480h42.4c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7H96V379.9c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nvar faEyeDropperEmpty = faEyeDropper;\nvar faEyedropper = faEyeDropper;\nvar faFileCircleCheck = {\n prefix: 'fas',\n iconName: 'file-circle-check',\n icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM576 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3V256v41.7L52.5 440.6zM256 352V256 128 96c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29V352z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zm80 432h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMobileAndroid = faMobile;\nvar faMobilePhone = faMobile;\nvar faFaceMeh = {\n prefix: 'fas',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM176.4 240c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm192-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM160 336H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMeh = faFaceMeh;\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z\"]\n};\nvar faBookSkull = {\n prefix: 'fas',\n iconName: 'book-skull',\n icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2V176c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V163.2c19.4-11.7 32-30.3 32-51.2zM208 128c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nvar faBookDead = faBookSkull;\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 320c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64zM352 208c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [512, 512, [\"dedent\"], \"f03b\", \"M32 64c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 96 32 81.7 32 64zM224 192c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zm32 96H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32zM32 448c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32zm.2-179.4c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6V335.3c0 13.3-15.3 20.8-25.8 12.6L32.2 268.6z\"]\n};\nvar faDedent = faOutdent;\nvar faHeartCircleExclamation = {\n prefix: 'fas',\n iconName: 'heart-circle-exclamation',\n icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nvar faHome = faHouse;\nvar faHomeAlt = faHouse;\nvar faHomeLgAlt = faHouse;\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H352v48c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V272H240c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faB = {\n prefix: 'fas',\n iconName: 'b',\n icon: [320, 512, [98], \"42\", \"M32 32C14.3 32 0 46.3 0 64V256 448c0 17.7 14.3 32 32 32H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H32zM160 224H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM160 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224v48c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V352H112c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16h48V240z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4H448c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3V224c0-70.7-57.3-128-128-128H392.3c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3V456c0 13.3 10.7 24 24 24s24-10.7 24-24V410c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7V456c0 13.3 10.7 24 24 24s24-10.7 24-24V405.1c12.4-4.4 24.2-10 35.2-16.7zM448 248c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faArrowRightArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-right-arrow-left',\n icon: [448, 512, [8644, \"exchange\"], \"f0ec\", \"M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z\"]\n};\nvar faExchange = faArrowRightArrowLeft;\nvar faRotateRight = {\n prefix: 'fas',\n iconName: 'rotate-right',\n icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5z\"]\n};\nvar faRedoAlt = faRotateRight;\nvar faRotateForward = faRotateRight;\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176V288c0 35.3 28.7 64 64 64h32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352 240 32c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V255.6c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16V150.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8V16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nvar faCutlery = faUtensils;\nvar faArrowUpWideShort = {\n prefix: 'fas',\n iconName: 'arrow-up-wide-short',\n icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSortAmountUp = faArrowUpWideShort;\nvar faMillSign = {\n prefix: 'fas',\n iconName: 'mill-sign',\n icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128v80V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-26.5 21.5-48 48-48s48 21.5 48 48v42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32V261.5l35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nvar faBowlRice = {\n prefix: 'fas',\n iconName: 'bowl-rice',\n icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24zm24 48h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176H72c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H104c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H440c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H392c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1v64c0 26.5 21.5 48 48 48h48V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h64V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h48c26.5 0 48-21.5 48-48V400c0-.4 0-.7 0-1.1zM224 256c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm128 64c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faTowerBroadcast = {\n prefix: 'fas',\n iconName: 'tower-broadcast',\n icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V183.4c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nvar faBroadcastTower = faTowerBroadcast;\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96H288V96h80.6zM224 80V192H64c-17.7 0-32 14.3-32 32v64c-17.7 0-32 14.3-32 32s14.3 32 32 32H65.1c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16h66.3c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32V224c0-17.7-14.3-32-32-32H527.4L418.6 56c-12.1-15.2-30.5-24-50-24H272c-26.5 0-48 21.5-48 48zM128 368c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48zm288 0c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nvar faUpLong = {\n prefix: 'fas',\n iconName: 'up-long',\n icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192h88l0 288c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32l0-288h88c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLongArrowAltUp = faUpLong;\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [448, 512, [], \"f387\", \"M80 104c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm32.4 49.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 456c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM392 272c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9V81.2c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2V430.2c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96zm-96 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faMound = {\n prefix: 'fas',\n iconName: 'mound',\n icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nvar faToiletPortable = {\n prefix: 'fas',\n iconName: 'toilet-portable',\n icon: [320, 512, [], \"e583\", \"M0 32V64H320V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32zM24 96H0v24V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H272v8c0 13.3 10.7 24 24 24s24-10.7 24-24V120 96H296 24zM256 240v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 224c17.7 0 32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32zm-96 32c0 53 43 96 96 96s96-43 96-96s-43-96-96-96s-96 43-96 96zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faFileArrowDown = {\n prefix: 'fas',\n iconName: 'file-arrow-down',\n icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFileDownload = faFileArrowDown;\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32H416c88.4 0 160 71.6 160 160V352h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0H288c0 53-43 96-96 96s-96-43-96-96H80c-44.2 0-80-35.8-80-80V112zM320 352H448V256H416c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V160c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32V352zM96 128c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96zm96 336c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faShieldCat = {\n prefix: 'fas',\n iconName: 'shield-cat',\n icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4h.2c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4h48c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3h.2c5.8 0 10.4 4.7 10.4 10.4V272c0 53-43 96-96 96s-96-43-96-96V154.4zM216 288c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16zm96-16c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z\"]\n};\nvar faZap = faBolt;\nvar faGlassWater = {\n prefix: 'fas',\n iconName: 'glass-water',\n icon: [448, 512, [], \"e4f4\", \"M64 0C55.1 0 46.6 3.7 40.6 10.2s-9.1 15.2-8.5 24.1L60.9 437.7c3 41.9 37.8 74.3 79.8 74.3H307.3c42 0 76.8-32.4 79.8-74.3L415.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S392.9 0 384 0H64zm41 156.5L98.4 64H349.6L343 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L105 156.5z\"]\n};\nvar faOilWell = {\n prefix: 'fas',\n iconName: 'oil-well',\n icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H406.7L340 257.5l-62.2 16.1L305.3 352H238.7L265 277l-74.6 19.3L137.3 448H96V288.8l337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32H327.7l11.2 32H205.1z\"]\n};\nvar faVault = {\n prefix: 'fas',\n iconName: 'vault',\n icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64V416c0 35.3 28.7 64 64 64H80l16 32h64l16-32H400l16 32h64l16-32h16c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 320c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm0 80c-88.4 0-160-71.6-160-160s71.6-160 160-160s160 71.6 160 160s-71.6 160-160 160zM480 221.3V336c0 8.8-7.2 16-16 16s-16-7.2-16-16V221.3c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8H424c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80l0 0h0v0zM176 416c61.9 0 112-50.1 112-112s-50.1-112-112-112s-112 50.1-112 112s50.1 112 112 112z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V196.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H352c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8l0 .1 0 .3zM328.2 384l-.2 .5 0-.5h.2zM112 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPlaneCircleXmark = {\n prefix: 'fas',\n iconName: 'plane-circle-xmark',\n icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.2C48.8 31.5 29 27.6 14.2 37.4S-4.4 67 5.4 81.7L100.2 224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V288h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H219.8L314.6 81.7c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.2z\"]\n};\nvar faCny = faYenSign;\nvar faJpy = faYenSign;\nvar faRmb = faYenSign;\nvar faYen = faYenSign;\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V416H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V320H240c79.5 0 144-64.5 144-144s-64.5-144-144-144H96zM240 256H128V96H240c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faRouble = faRubleSign;\nvar faRub = faRubleSign;\nvar faRuble = faRubleSign;\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM352 256c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zm32 0c0-70.7-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128s128-57.3 128-128z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 352c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'fas',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM208.4 192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm92.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [512, 512, [], \"f7ab\", \"M0 464V316.9C0 208.5 68.3 111.8 170.5 75.6L340.2 15.5C361.6 7.9 384 23.8 384 46.4c0 11-5.5 21.2-14.6 27.3L336 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1h-3.4c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8H48c-26.5 0-48-21.5-48-48zM328 224c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24z\"]\n};\nvar faBoreHole = {\n prefix: 'fas',\n iconName: 'bore-hole',\n icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32V296.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4V32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H352V352c0 53-43 96-96 96s-96-43-96-96V128H48z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [512, 512, [], \"f275\", \"M32 32C14.3 32 0 46.3 0 64V304v48 80c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V304 152.2c0-18.2-19.4-29.7-35.4-21.1L320 215.4V152.2c0-18.2-19.4-29.7-35.4-21.1L128 215.4V64c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faCircleDown = {\n prefix: 'fas',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256S397.4 0 256 0zM244.7 395.3l-112-112c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l64 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 64 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-112 112c-6.2 6.2-16.4 6.2-22.6 0z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faArrowsTurnToDots = {\n prefix: 'fas',\n iconName: 'arrows-turn-to-dots',\n icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM512 384c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM64 64c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64S28.7 64 64 64z\"]\n};\nvar faFlorinSign = {\n prefix: 'fas',\n iconName: 'florin-sign',\n icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h80L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H69.3c38.8 0 73.7-23.3 88.6-59.1L213.3 288H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H240l45.1-108.3c5-11.9 16.6-19.7 29.5-19.7H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H314.7z\"]\n};\nvar faArrowDownShortWide = {\n prefix: 'fas',\n iconName: 'arrow-down-short-wide',\n icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSortAmountDesc = faArrowDownShortWide;\nvar faSortAmountDownAlt = faArrowDownShortWide;\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [448, 512, [8964], \"f107\", \"M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faCarTunnel = {\n prefix: 'fas',\n iconName: 'car-tunnel',\n icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h64H384h64c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM384 512c-17.7 0-32-14.3-32-32V448H160v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V376c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7H313.6c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6V480c0 17.7-14.3 32-32 32zM190.8 277.5L177 320H335l-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5H198.4c-3.5 0-6.5 2.2-7.6 5.5zM168 408c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm200-24c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M0 201.7C0 90.3 90.3 0 201.7 0H224c95.2 0 174.2 69.3 189.4 160.1c2.2 13 6.7 25.7 15 36.1l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H416v32H352c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 35.3-28.7 64-64 64H288c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V375.8c0-17-7.1-33-17.5-46.4C18.3 293.2 0 246.5 0 201.7zM336 224c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm272 88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm-40 24c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm-64 48c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm128 0c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM608 504c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm-40-72c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-25.3-19.5-46-44.3-47.9c7.7-8.5 12.3-19.8 12.3-32.1c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 320H96c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64V288c0 17.7 14.3 32 32 32z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H392.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7H178.3zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faArrowRightLong = {\n prefix: 'fas',\n iconName: 'arrow-right-long',\n icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLongArrowRight = faArrowRightLong;\nvar faAnchorCircleXmark = {\n prefix: 'fas',\n iconName: 'anchor-circle-xmark',\n icon: [640, 512, [], \"e4ac\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faEllipsis = {\n prefix: 'fas',\n iconName: 'ellipsis',\n icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M120 256c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zm160 0c0 30.9-25.1 56-56 56s-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56zm104 56c-30.9 0-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56s-25.1 56-56 56z\"]\n};\nvar faEllipsisH = faEllipsis;\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M264 136c0 37.1-19.4 69.6-48.6 88H224c17.7 0 32 14.3 32 32s-14.3 32-32 32c0 96 24 128 24 128H72s24-32 24-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h8.5C75.4 205.6 56 173.1 56 136C56 78.6 102.6 32 160 32s104 46.6 104 104zM32 448H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faKitMedical = {\n prefix: 'fas',\n iconName: 'kit-medical',\n icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H96V32H64zm64 0V480H448V32H128zM512 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H480V480h32zM256 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V288H208c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16h48V176z\"]\n};\nvar faFirstAid = faKitMedical;\nvar faPersonThroughWindow = {\n prefix: 'fas',\n iconName: 'person-through-window',\n icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0H64V64zm288 0l224 0V384H508.3l-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320H379.2l42.7 64H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48V400c0 26.5 21.5 48 48 48H308.2l33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0H192s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [129520], \"f552\", \"M176 88v40H336V88c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zm-48 40V88c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56v40h28.1c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9V304H384V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H192V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H0V227.9c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1H128zM0 416V336H128v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H320v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H512v80c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faHandsHoldingCircle = {\n prefix: 'fas',\n iconName: 'hands-holding-circle',\n icon: [640, 512, [], \"e4fb\", \"M320 256c-70.7 0-128-57.3-128-128S249.3 0 320 0s128 57.3 128 128s-57.3 128-128 128zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96v3.6c0 15.7-12.7 28.4-28.4 28.4H188.4c-15.7 0-28.4-12.7-28.4-28.4V96c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4H312c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6V240c0-8.8-7.2-16-16-16s-16 7.2-16 16V479.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96.3c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192H402.9l-26.1-74.6C372.3 104.6 360.2 96 346.6 96H165.4c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32H346.6c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2V400v48c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V400H96v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V400 256c0-26.7 16.4-49.6 39.6-59.2zM128 288c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm288 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faAutomobile = faCar;\nvar faHandHoldingHand = {\n prefix: 'fas',\n iconName: 'hand-holding-hand',\n icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32H384 544c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H507.2l-44.9 36c-22.7 18.2-50.9 28-80 28H304 288 224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64 16c8.8 0 16-7.2 16-16s-7.2-16-16-16H183.4L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160l0 0 .9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faBookOpenReader = {\n prefix: 'fas',\n iconName: 'book-open-reader',\n icon: [512, 512, [\"book-reader\"], \"f5da\", \"M352 96c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zM240 248V512l-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427V224c0-17.7 14.3-32 32-32H62.3c63.6 0 125.6 19.6 177.7 56zm32 264V248c52.1-36.4 114.1-56 177.7-56H480c17.7 0 32 14.3 32 32V427c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nvar faBookReader = faBookOpenReader;\nvar faMountainSun = {\n prefix: 'fas',\n iconName: 'mountain-sun',\n icon: [640, 512, [], \"e52f\", \"M560 160c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM55.9 512H381.1h75H578.9c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nvar faArrowsLeftRightToLine = {\n prefix: 'fas',\n iconName: 'arrows-left-right-to-line',\n icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [512, 512, [], \"f6cf\", \"M64.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L217.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L63.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM32 171.7V295.3c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L56.2 158C45.6 151.6 32 159.3 32 171.7zM326.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L338.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM512 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4V171.7zm-49.3 246L302.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9v52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM249.2 512c3.7 0 6.8-3 6.8-6.8V452.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM57.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L46.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L418.9 238.1c-6.5-10-21.4-9.6-27.3 .8L306.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9H199.1c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM190.4 176H353.6c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2h-3.2c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nvar faTruckDroplet = {\n prefix: 'fas',\n iconName: 'truck-droplet',\n icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm368-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nvar faFileCircleXmark = {\n prefix: 'fas',\n iconName: 'file-circle-xmark',\n icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm59.3-180.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faTemperatureArrowUp = {\n prefix: 'fas',\n iconName: 'temperature-arrow-up',\n icon: [512, 512, [\"temperature-up\"], \"e040\", \"M96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.1 32 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.3-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.1 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM448 160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V160z\"]\n};\nvar faTemperatureUp = faTemperatureArrowUp;\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [127941], \"f5a2\", \"M16 0H144c5.3 0 10.3 2.7 13.3 7.1l81.1 121.6c-49.5 4.1-94 25.6-127.6 58.3L2.7 24.9C-.6 20-.9 13.7 1.9 8.5S10.1 0 16 0zM509.3 24.9L401.2 187.1c-33.5-32.7-78.1-54.2-127.6-58.3L354.7 7.1c3-4.5 8-7.1 13.3-7.1H496c5.9 0 11.3 3.2 14.1 8.5s2.5 11.5-.8 16.4zM432 336c0 97.2-78.8 176-176 176s-176-78.8-176-176s78.8-176 176-176s176 78.8 176 176zM264.4 241.1c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32V320H288V160c0-17.7 14.3-32 32-32H544c53 0 96 43 96 96V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32zM176 288c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faSquareH = {\n prefix: 'fas',\n iconName: 'square-h',\n icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM336 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H160l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H288V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHSquare = faSquareH;\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-32c-30.9 0-56-25.1-56-56s25.1-56 56-56s56 25.1 56 56s-25.1 56-56 56z\"]\n};\nvar faTemperatureFull = {\n prefix: 'fas',\n iconName: 'temperature-full',\n icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V112c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature4 = faTemperatureFull;\nvar faThermometer4 = faTemperatureFull;\nvar faThermometerFull = faTemperatureFull;\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z\"]\n};\nvar faPlugCircleXmark = {\n prefix: 'fas',\n iconName: 'plug-circle-xmark',\n icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V172.9l122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.5 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V339.1L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4V32z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M228.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C76.1 30.2 64 46 64 64c0 107.4 37.8 206 100.8 283.1L9.2 469.1c-10.4 8.2-12.3 23.3-4.1 33.7s23.3 12.3 33.7 4.1l592-464c10.4-8.2 12.3-23.3 4.1-33.7s-23.3-12.3-33.7-4.1L253 278c-17.8-21.5-32.9-45.2-45-70.7L257.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96zm96.8 319l-91.3 72C310.7 476 407.1 512 512 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L368.7 368c-15-7.1-29.3-15.2-43-24.3z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 352c0-17.7 14.3-32 32-32V304c0-44.2 35.8-80 80-80H416c17.7 0 32-14.3 32-32V160 69.5c37.3 13.2 64 48.7 64 90.5v32c0 53-43 96-96 96H272c-8.8 0-16 7.2-16 16v16c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faHandshakeAngle = {\n prefix: 'fas',\n iconName: 'handshake-angle',\n icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M543.9 251.4c0-1.1 .1-2.2 .1-3.4c0-48.6-39.4-88-88-88l-40 0H320l-16 0 0 0v16 72c0 22.1-17.9 40-40 40s-40-17.9-40-40V128h.4c4-36 34.5-64 71.6-64H408c2.8 0 5.6 .2 8.3 .5l40.1-40.1c21.9-21.9 57.3-21.9 79.2 0l78.1 78.1c21.9 21.9 21.9 57.3 0 79.2l-69.7 69.7zM192 128V248c0 39.8 32.2 72 72 72s72-32.2 72-72V192h80l40 0c30.9 0 56 25.1 56 56c0 27.2-19.4 49.9-45.2 55c8.2 8.6 13.2 20.2 13.2 33c0 26.5-21.5 48-48 48h-2.7c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48H224c-.9 0-1.8 0-2.7-.1l-37.7 37.7c-21.9 21.9-57.3 21.9-79.2 0L26.3 407.6c-21.9-21.9-21.9-57.3 0-79.2L96 258.7V224c0-53 43-96 96-96z\"]\n};\nvar faHandsHelping = faHandshakeAngle;\nvar faLocationDot = {\n prefix: 'fas',\n iconName: 'location-dot',\n icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 256c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faMapMarkerAlt = faLocationDot;\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nvar faPersonSwimming = {\n prefix: 'fas',\n iconName: 'person-swimming',\n icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-26.9 0-52.3 6.6-74.5 18.4zM32 160c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faSwimmer = faPersonSwimming;\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faDroplet = {\n prefix: 'fas',\n iconName: 'droplet',\n icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z\"]\n};\nvar faTint = faDroplet;\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7H288h9.4H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H387.9L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416H288l-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nvar faEarthAmericas = {\n prefix: 'fas',\n iconName: 'earth-americas',\n icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5v39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9v39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7v-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1H257c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zm48 0c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faEarth = faEarthAmericas;\nvar faEarthAmerica = faEarthAmericas;\nvar faGlobeAmericas = faEarthAmericas;\nvar faPersonBurst = {\n prefix: 'fas',\n iconName: 'person-burst',\n icon: [640, 512, [], \"e53b\", \"M480 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H465.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6V138.8C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v30.6l0 0v1.3l0 0 0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80 16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zM64 176c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176z\"]\n};\nvar faBattery0 = faBatteryEmpty;\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6V96H128V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64H288V48c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0H176c-26.5 0-48 21.5-48 48V64zM320 96V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304V96H320zM512 64V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48V64H512z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V323.9c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32H121zm0 64H391l48 192H387.8c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7H195.8c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7H73L121 96z\"]\n};\nvar faSection = {\n prefix: 'fas',\n iconName: 'section',\n icon: [320, 512, [], \"e447\", \"M96.9 96c2.1-11.6 8.7-19.8 21.1-25.4c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8c-34.7-5.7-69.4-3.6-98 9.3c-29.8 13.5-52.2 38.6-58 74.1c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C54.3 194.2 38.5 215.1 33.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31l0 0 3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2l0 0c-4.3-1.5-8.5-2.9-12.3-4.2c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6l0 0 .2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5c-.2-.1-.4-.1-.6-.2l-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nvar faGaugeHigh = {\n prefix: 'fas',\n iconName: 'gauge-high',\n icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM96 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm352-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faTachometerAlt = faGaugeHigh;\nvar faTachometerAltFast = faGaugeHigh;\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M215.4 96H144 107.8 96v8.8V144v40.4 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3V96c0-26.5 21.5-48 48-48h76.6l49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48H416c26.5 0 48 21.5 48 48v44.3l22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4v-89V144 104.8 96H404.2 368 296.6 215.4zM0 448V242.1L217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1V448v0c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64v0zM176 160H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48V512H368V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H192V48zM48 96H160V512H48c-26.5 0-48-21.5-48-48V320H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V224H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V144c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v48H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80V464c0 26.5-21.5 48-48 48H480V96H592zM312 64c-8.8 0-16 7.2-16 16v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V152h24c8.8 0 16-7.2 16-16V120c0-8.8-7.2-16-16-16H344V80c0-8.8-7.2-16-16-16H312z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [384, 512, [9820], \"f447\", \"M0 204.2V48c0-8.8 7.2-16 16-16H72c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h80c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h56c8.8 0 16 7.2 16 16V204.2c0 12.1-6.8 23.2-17.7 28.6l-28.6 14.3c-10.8 5.4-17.7 16.5-17.5 28.6C322.2 360.7 336 416 336 416H48s13.8-55.3 15.8-140.2c.3-12.1-6.6-23.2-17.5-28.6L17.7 232.8C6.8 227.4 0 216.3 0 204.2zM176 320h32c8.8 0 16-7.2 16-16V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 8.8 7.2 16 16 16zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarsStaggered = {\n prefix: 'fas',\n iconName: 'bars-staggered',\n icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faReorder = faBarsStaggered;\nvar faStream = faBarsStaggered;\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.6-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9l0 0v0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4l0 0-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nvar faPersonWalkingWithCane = {\n prefix: 'fas',\n iconName: 'person-walking-with-cane',\n icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6v43.2c0 17 6.7 33.3 18.7 45.3L224 397.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V390.6c0-12.7-5.1-24.9-14.1-33.9L224 306.7V213.3l70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128H167.6zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nvar faBlind = faPersonWalkingWithCane;\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [576, 512, [129345], \"f569\", \"M533.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L402.2 104.5C367.8 98.7 329 96 288 96C146.6 96 32 128 32 208V368c0 31.3 27.4 58.8 72 78.7V344c0-13.3 10.7-24 24-24s24 10.7 24 24V463.4c33 8.9 71.1 14.5 112 16.1V376c0-13.3 10.7-24 24-24s24 10.7 24 24V479.5c40.9-1.6 79-7.2 112-16.1V344c0-13.3 10.7-24 24-24s24 10.7 24 24V446.7c44.6-19.9 72-47.4 72-78.7V208c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM339.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C490.4 181.8 496 197.4 496 208c0 .8-2.7 17.2-46 35.9C411.1 260.7 354 272 288 272s-123.1-11.3-162-28.1C82.7 225.2 80 208.8 80 208c0-10.6 5.6-26.2 44.4-41.3C162.6 151.9 219.8 144 288 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [384, 512, [127848], \"f810\", \"M335.1 160c.6-5.3 .9-10.6 .9-16C336 64.5 271.5 0 192 0S48 64.5 48 144c0 5.4 .3 10.7 .9 16H48c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H336c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM64 288L168.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L320 288H64z\"]\n};\nvar faHeartCircleBolt = {\n prefix: 'fas',\n iconName: 'heart-circle-bolt',\n icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64v96h64V64H386.7L416 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0H192c-35.3 0-64 28.7-64 64zM0 160V480c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm480 32H128V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM256 320c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm160-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM384 448c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm-96-32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [182], \"f1dd\", \"M192 32h64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352H288V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H192c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nvar faCheckToSlot = {\n prefix: 'fas',\n iconName: 'check-to-slot',\n icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V384H96V80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48H64V416H512V288h16c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336z\"]\n};\nvar faVoteYea = faCheckToSlot;\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8V0zM429.9 512c1.1 .1 2.1 .1 3.2 0h-3.2z\"]\n};\nvar faBoxesStacked = {\n prefix: 'fas',\n iconName: 'boxes-stacked',\n icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M248 0H208c-26.5 0-48 21.5-48 48V160c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V48c0-26.5-21.5-48-48-48H328V80c0 8.8-7.2 16-16 16H264c-8.8 0-16-7.2-16-16V0zM64 256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H184v80c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V256H64zM352 512H512c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H472v80c0 8.8-7.2 16-16 16H408c-8.8 0-16-7.2-16-16V256H352c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2V464c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z\"]\n};\nvar faBoxes = faBoxesStacked;\nvar faBoxesAlt = faBoxesStacked;\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nvar faChain = faLink;\nvar faEarListen = {\n prefix: 'fas',\n iconName: 'ear-listen',\n icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1-.1 0 0 0c0 0 0 0-14.3 28.6L398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78V400c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112v-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM192 352c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faAssistiveListeningSystems = faEarListen;\nvar faTreeCity = {\n prefix: 'fas',\n iconName: 'tree-city',\n icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80H160V480c0 18-15 32-32 32c-18 0-32-14-32-32V320H80c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z\"]\n};\nvar faRupiahSign = {\n prefix: 'fas',\n iconName: 'rupiah-sign',\n icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256-96h80c61.9 0 112 50.1 112 112s-50.1 112-112 112H352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 192c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48H352v96h48z\"]\n};\nvar faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352c79.5 0 144-64.5 144-144s-64.5-144-144-144S64 128.5 64 208s64.5 144 144 144z\"]\n};\nvar faSearch = faMagnifyingGlass;\nvar faTableTennisPaddleBall = {\n prefix: 'fas',\n iconName: 'table-tennis-paddle-ball',\n icon: [512, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M416 288c-50.1 0-93.6 28.8-114.6 70.8L68.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C471.8 297.6 445 288 416 288zM49.3 151.9L290.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3H293c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L88.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32C3.1 464.3-.3 455.7 0 446.9s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8C45.5 285.5 32 252.9 32 219v-2.7c0-22.8 6.1-44.9 17.3-64.3zM416 512c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96z\"]\n};\nvar faPingPongPaddleBall = faTableTennisPaddleBall;\nvar faTableTennis = faTableTennisPaddleBall;\nvar faPersonDotsFromLine = {\n prefix: 'fas',\n iconName: 'person-dots-from-line',\n icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176c48.6 0 88-39.4 88-88s-39.4-88-88-88s-88 39.4-88 88s39.4 88 88 88zM78.7 372.9c15-12.5 50-34.4 97.3-50.1V432H400V322.7c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM272 280c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm56 104c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM96 240c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm368 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faDiagnoses = faPersonDotsFromLine;\nvar faTrashCanArrowUp = {\n prefix: 'fas',\n iconName: 'trash-can-arrow-up',\n icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestoreAlt = faTrashCanArrowUp;\nvar faNairaSign = {\n prefix: 'fas',\n iconName: 'naira-sign',\n icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H228.2l97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6V320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V256H262.5L122.6 46.3zM305.1 320H320v22.3L305.1 320zM185.5 256H128V169.7L185.5 256z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H459.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32H360V134.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V32H120.1C111 12.8 91.6 0 69.5 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144V300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9V464c0 26.5 21.5 48 48 48H304c26.5 0 48-21.5 48-48V371.9c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9V144c0-26.5-21.5-48-48-48H320c0-17.7-14.3-32-32-32s-32 14.3-32 32H224c0-17.7-14.3-32-32-32s-32 14.3-32 32H112V24zm0 136H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFilePen = {\n prefix: 'fas',\n iconName: 'file-pen',\n icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V285.7l-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faFileEdit = faFilePen;\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.2-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8V488c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.2 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488V24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96zM80 352c0 8.8 7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96z\"]\n};\nvar faSquarePen = {\n prefix: 'fas',\n iconName: 'square-pen',\n icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faPenSquare = faSquarePen;\nvar faPencilSquare = faSquarePen;\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPersonCircleExclamation = {\n prefix: 'fas',\n iconName: 'person-circle-exclamation',\n icon: [576, 512, [], \"e53f\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm368 32V320H96V192H448z\"]\n};\nvar faBattery = faBatteryFull;\nvar faBattery5 = faBatteryFull;\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [512, 512, [128369, 9760], \"f714\", \"M400 128c0 44.4-25.4 83.5-64 106.4V256c0 17.7-14.3 32-32 32H208c-17.7 0-32-14.3-32-32V234.4c-38.6-23-64-62.1-64-106.4C112 57.3 176.5 0 256 0s144 57.3 144 128zM200 176c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm144-32c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM35.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L256 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L327.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L256 419.8 78.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L184.4 384 49.7 316.6c-15.8-7.9-22.2-27.1-14.3-42.9z\"]\n};\nvar faCodeCompare = {\n prefix: 'fas',\n iconName: 'code-compare',\n icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9v40h16c35.3 0 64-28.7 64-64V153.3C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V320c0 70.7-57.3 128-128 128H320v40zM456 80c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9V128H176c-35.3 0-64 28.7-64 64V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-70.7 57.3-128 128-128h16V24zM56 432c0 13.3 10.7 24 24 24s24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144c26.5 0 48-21.5 48-48s-21.5-48-48-48S16 69.5 16 96s21.5 48 48 48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM64 464c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm48-208c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faListDots = faListUl;\nvar faSchoolLock = {\n prefix: 'fas',\n iconName: 'school-lock',\n icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96H592c26.5 0 48 21.5 48 48V272c0-61.9-50.1-112-112-112s-112 50.1-112 112v24.6c-19.1 11.1-32 31.7-32 55.4H320.3l-.3 0c-35.3 0-64 28.7-64 64v96h64v0H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48H166.3L302.2 5.4zM80 208v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm0 128v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTowerCell = {\n prefix: 'fas',\n iconName: 'tower-cell',\n icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448H398.3l20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384H206.8l14.5-32H354.7l14.5 32zM288 205.3L325.6 288H250.4L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nvar faDownLong = {\n prefix: 'fas',\n iconName: 'down-long',\n icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M318 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26S14.4 320 24 320h88l0-288c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32l0 288h88c9.6 0 18.2 5.7 22 14.5z\"]\n};\nvar faLongArrowAltDown = faDownLong;\nvar faRankingStar = {\n prefix: 'fas',\n iconName: 'ranking-star',\n icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V288c0-17.7-14.3-32-32-32H256zM32 320c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zm416 96v64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H480c-17.7 0-32 14.3-32 32z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32V48h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H256v48H416c10.3 0 19.9 4.9 26 13.3s7.7 19.1 4.4 28.8L375.1 416H72.9L1.6 202.1C-1.6 192.4 0 181.6 6 173.3s15.7-13.3 26-13.3H192V112H176c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V32c0-17.7 14.3-32 32-32zM32 480c0-17.7 14.3-32 32-32H83.6 364.4 384c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128 64c-17.7 0-32-14.3-32-32z\"]\n};\nvar faPersonHarassing = {\n prefix: 'fas',\n iconName: 'person-harassing',\n icon: [576, 512, [], \"e549\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM59.4 304.5L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM464 344v58.7l-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9V344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16h56c8.8 0 16-7.2 16-16s-7.2-16-16-16H304c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nvar faBrazilianRealSign = {\n prefix: 'fas',\n iconName: 'brazilian-real-sign',\n icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32V50.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5h-1.7c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4v3.4c0 51.2-33.6 94.6-80 109.2V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V460.6c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5v-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2V32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256z\"]\n};\nvar faLandmarkDome = {\n prefix: 'fas',\n iconName: 'landmark-dome',\n icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0h16c13.3 0 24 10.7 24 24V34.7C368.4 48.1 431.9 111.6 445.3 192H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h2.7C80.1 111.6 143.6 48.1 224 34.7V24c0-13.3 10.7-24 24-24zM64 288h64V416h40V288h64V416h48V288h64V416h40V288h64V420.3c.6 .3 1.2 .7 1.7 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V288z\"]\n};\nvar faLandmarkAlt = faLandmarkDome;\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64V352H576V64H64zM0 64C0 28.7 28.7 0 64 0H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM128 448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faTelevision = faTv;\nvar faTvAlt = faTv;\nvar faShrimp = {\n prefix: 'fas',\n iconName: 'shrimp',\n icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64h1c3.7 88.9 77 160 167 160h56V128H264 88.8 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zM224 456c0 13.3 10.7 24 24 24h72V407.8l-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3v69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128H320V320h18.3c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM216 192c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faListCheck = {\n prefix: 'fas',\n iconName: 'list-check',\n icon: [576, 512, [\"tasks\"], \"f0ae\", \"M184.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L39 113c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L39 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM256 96c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H288c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H288c-17.7 0-32-14.3-32-32zM192 416c0-17.7 14.3-32 32-32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zM80 464c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faTasks = faListCheck;\nvar faJugDetergent = {\n prefix: 'fas',\n iconName: 'jug-detergent',\n icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24V48h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H88C74.7 96 64 85.3 64 72s10.7-24 24-24h8V24zM0 256c0-70.7 57.3-128 128-128H256c70.7 0 128 57.3 128 128V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256zm256 0v96c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320H224c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM256 272c39.8 0 72-32.2 72-72s-32.2-72-72-72s-72 32.2-72 72s32.2 72 72 72z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3H178.3zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7V273.8L591.4 312z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32 14.3-32 32zM128 512h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H160c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faCarBurst = {\n prefix: 'fas',\n iconName: 'car-burst',\n icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zM268.3 308.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17s20.4 16.6 17 29.4s-16.6 20.4-29.4 17zM545 358.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4s16.6-20.4 29.4-17s20.4 16.6 17 29.4z\"]\n};\nvar faCarCrash = faCarBurst;\nvar faY = {\n prefix: 'fas',\n iconName: 'y',\n icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V298.3L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nvar faPersonSnowboarding = {\n prefix: 'fas',\n iconName: 'person-snowboarding',\n icon: [576, 512, [127938, \"snowboarding\"], \"f7ce\", \"M241.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6H504c13.3 0 24 10.7 24 24s-10.7 24-24 24H475.8c-10.8 0-21.4-2-31.5-5.8L92.1 371.3c-11.5-4.4-22-11.2-30.8-20L39 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L224 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM171 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.4-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L171 350.1zM464 96c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSnowboarding = faPersonSnowboarding;\nvar faTruckFast = {\n prefix: 'fas',\n iconName: 'truck-fast',\n icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48V96H16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 272c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 48c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 240c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 208c8.8 0 16 7.2 16 16s-7.2 16-16 16H64V416c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H112zM544 237.3V256H416V160h50.7L544 237.3zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm368-48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48z\"]\n};\nvar faShippingFast = faTruckFast;\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9V160c0 70.7-57.3 128-128 128s-128-57.3-128-128V102.9L48 93.3v65.1l15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9H16c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4V86.6C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM129.1 323.2l83.2 88.4c6.3 6.7 17 6.7 23.3 0l83.2-88.4c73.7 14.9 129.1 80 129.1 158.1c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-78.1 55.5-143.2 129.1-158.1z\"]\n};\nvar faCircleHalfStroke = {\n prefix: 'fas',\n iconName: 'circle-half-stroke',\n icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zm64 0c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faAdjust = faCircleHalfStroke;\nvar faClapperboard = {\n prefix: 'fas',\n iconName: 'clapperboard',\n icon: [512, 512, [], \"e131\", \"M448 32H361.9l-1 1-127 127h92.1l1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128V96c0-15.1-5.3-29.1-14-40l-104 104H512zM294.1 32H201.9l-1 1L73.9 160h92.1l1-1 127-127zM64 32C28.7 32 0 60.7 0 96v64H6.1l1-1 127-127H64zM512 192H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faCircleRadiation = {\n prefix: 'fas',\n iconName: 'circle-radiation',\n icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 448C150 448 64 362 64 256S150 64 256 64s192 86 192 192s-86 192-192 192zm0 64c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faRadiationAlt = faCircleRadiation;\nvar faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nvar faBaseballBall = faBaseball;\nvar faJetFighterUp = {\n prefix: 'fas',\n iconName: 'jet-fighter-up',\n icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2v77l-144 84V280c0-13.3-10.7-24-24-24s-24 10.7-24 24v56 32 24c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H192v32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12v16c0 8.8 7.2 16 16 16h96V448c0-8.8 7.2-16 16-16s16 7.2 16 16v64h96c8.8 0 16-7.2 16-16V480c0-4.6-2-9-5.5-12L320 416.7V384H464v8c0 13.3 10.7 24 24 24s24-10.7 24-24V368 336 280c0-13.3-10.7-24-24-24s-24 10.7-24 24v18.8l-144-84v-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nvar faDiagramProject = {\n prefix: 'fas',\n iconName: 'diagram-project',\n icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48V96H384V80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V160H192v16c0 1.7-.1 3.4-.3 5L272 288h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V336c0-1.7 .1-3.4 .3-5L144 224H48c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faProjectDiagram = faDiagramProject;\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [512, 512, [], \"f0c5\", \"M224 0c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224zM64 160c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64H64V224h64V160H64z\"]\n};\nvar faVolumeXmark = {\n prefix: 'fas',\n iconName: 'volume-xmark',\n icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faVolumeMute = faVolumeXmark;\nvar faVolumeTimes = faVolumeXmark;\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7 14.3-32 32-32s32 14.3 32 32V323.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512H348.8c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V32c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nvar faGrip = {\n prefix: 'fas',\n iconName: 'grip',\n icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V136zm0 192c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328z\"]\n};\nvar faGripHorizontal = faGrip;\nvar faShareFromSquare = {\n prefix: 'fas',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M352 224H305.5c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8h-2.5c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144h80V34.7C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2H384c-17.7 0-32-14.3-32-32V224zM80 96c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16H400c8.8 0 16-7.2 16-16V384c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V112C0 67.8 35.8 32 80 32h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H80z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faChildCombatant = {\n prefix: 'fas',\n iconName: 'child-combatant',\n icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176 128c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zm-8 352V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V300.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9H169.8c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0H432 416c-8.8 0-16 7.2-16 16s7.2 16 16 16V132.3c-9.6 5.5-16 15.9-16 27.7v32c-17.7 0-32 14.3-32 32V368c0 17.7 14.3 32 32 32h16v96c0 8.8 7.2 16 16 16h59.5c10.4 0 18-9.8 15.5-19.9L484 400h44c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H480V325.3l53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2V208c0-8.8-7.2-16-16-16H512c-8.8 0-16 7.2-16 16v56l-16 5.3V160c0-11.8-6.4-22.2-16-27.7V16c0-8.8-7.2-16-16-16z\"]\n};\nvar faChildRifle = faChildCombatant;\nvar faGun = {\n prefix: 'fas',\n iconName: 'gun',\n icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24v8H32C14.3 64 0 78.3 0 96V208c0 17.7 14.3 32 32 32H42c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480h96c14.7 0 27.5-10 31-24.2L217 352H321.4c23.7 0 44.8-14.9 52.7-37.2L400.9 240H432c8.5 0 16.6-3.4 22.6-9.4L477.3 208H544c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H528V56zM321.4 304H229l16-64h105l-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSquarePhone = {\n prefix: 'fas',\n iconName: 'square-phone',\n icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nvar faPhoneSquare = faSquarePhone;\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z\"]\n};\nvar faAdd = faPlus;\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V352zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V352z\"]\n};\nvar faComputer = {\n prefix: 'fas',\n iconName: 'computer',\n icon: [640, 512, [], \"e4e5\", \"M384 96V320H64L64 96H384zM64 32C28.7 32 0 60.7 0 96V320c0 35.3 28.7 64 64 64H181.3l-10.7 32H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H277.3l-10.7-32H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm464 0c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H528zm16 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16zm32 224c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [320, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z\"]\n};\nvar faClose = faXmark;\nvar faMultiply = faXmark;\nvar faRemove = faXmark;\nvar faTimes = faXmark;\nvar faArrowsUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-up-down-left-right',\n icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V224H109.3l9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4H224V402.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V288H402.7l-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4H288V109.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nvar faArrows = faArrowsUpDownLeftRight;\nvar faChalkboardUser = {\n prefix: 'fas',\n iconName: 'chalkboard-user',\n icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336.8c-11.8-25.5-29.9-47.5-52.4-64H384V320c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v32h64V64L224 64v49.1C205.2 102.2 183.3 96 160 96V64zm0 256c-53 0-96-43-96-96s43-96 96-96s96 43 96 96s-43 96-96 96zm-26.7 32h53.3C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7H26.7C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nvar faChalkboardTeacher = faChalkboardUser;\nvar faPesoSign = {\n prefix: 'fas',\n iconName: 'peso-sign',\n icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64v64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c68.4 0 127.7-39 156.8-96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.7c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16h.7c17.7 0 32-14.3 32-32s-14.3-32-32-32H332.8C303.7 71 244.4 32 176 32H64zm190.4 96H96V96h80c30.5 0 58.2 12.2 78.4 32zM96 192H286.9c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16H96V192zm158.4 96c-20.2 19.8-47.9 32-78.4 32H96V288H254.4z\"]\n};\nvar faBuildingShield = {\n prefix: 'fas',\n iconName: 'building-shield',\n icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V207l-42.4 17H304 272c-8.8 0-16 7.2-16 16v32 24.2V304c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [448, 512, [], \"f77c\", \"M296 88c0 39.8-32.2 72-72 72s-72-32.2-72-72s32.2-72 72-72s72 32.2 72 72zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25V288H128V251.7c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nvar faUsersLine = {\n prefix: 'fas',\n iconName: 'users-line',\n icon: [640, 512, [], \"e592\", \"M211.2 96c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM32 256c0 17.7 14.3 32 32 32h85.6c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4H96c-35.3 0-64 28.7-64 64zm461.6 32H576c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H448c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4h-96c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM321.6 192c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320 288 216zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H320c-35.3 0-64-28.7-64-64V320 288 216z\"]\n};\nvar faQuoteLeftAlt = faQuoteLeft;\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64H266.3c26.2 0 49.7 15.9 59.4 40.2L373.7 160H480V126.2c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9V160h56c22.1 0 40 17.9 40 40v45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48H352c0 17.7-14.3 32-32 32h-8.2c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8V480c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32v-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8.2c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6V192 160 64zm170.3 0H160v96h32H304.7L266.3 64zM176 256c-44.2 0-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80s-35.8-80-80-80zM528 448c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nvar faTrashArrowUp = {\n prefix: 'fas',\n iconName: 'trash-arrow-up',\n icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestore = faTrashArrowUp;\nvar faArrowDownUpLock = {\n prefix: 'fas',\n iconName: 'arrow-down-up-lock',\n icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7V288H416V272c0-17.2 3.9-33.5 10.8-48H352V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3V224l-128 0H96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32H96V402.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64zM288 320V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H288zm240-80c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faLinesLeaning = {\n prefix: 'fas',\n iconName: 'lines-leaning',\n icon: [448, 512, [], \"e51e\", \"M222.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM384 32c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32H480c53 0 96 43 96 96V384c0 53-43 96-96 96H96c-53 0-96-43-96-96V128zm176 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48zM48 208v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H72c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48V312c0-13.3-10.7-24-24-24H200c-13.3 0-24 10.7-24 24v24zm176 48c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H328c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-176v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H456c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192c35.3 0 64 28.7 64 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-70.7-57.3-128-128-128H32zM320 480c70.7 0 128-57.3 128-128V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 35.3-28.7 64-64 64H192V192c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32H320z\"]\n};\nvar faIls = faShekelSign;\nvar faShekel = faShekelSign;\nvar faSheqel = faShekelSign;\nvar faSheqelSign = faShekelSign;\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2V35.9L384 90.8V476.1zm32-1.2V88.4L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3V394.6c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2V423.6L32.9 474.5C17.1 480.8 0 469.2 0 452.2V117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faPhotoFilm = {\n prefix: 'fas',\n iconName: 'photo-film',\n icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0H576c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H552c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM64 128h96V384v32c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V384H512v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V312c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H72zm336 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H424c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPhotoVideo = faPhotoFilm;\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0H109.6C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V384H128V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V384 252.6c-4 1-8 1.8-12.3 2.3z\"]\n};\nvar faArrowTrendUp = {\n prefix: 'fas',\n iconName: 'arrow-trend-up',\n icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32s-32-14.3-32-32V205.3L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160H384z\"]\n};\nvar faPlugCircleMinus = {\n prefix: 'fas',\n iconName: 'plug-circle-minus',\n icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faSignHanging = {\n prefix: 'fas',\n iconName: 'sign-hanging',\n icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32V64l352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128H32C14.3 128 0 113.7 0 96S14.3 64 32 64H64V32C64 14.3 78.3 0 96 0zm96 160H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faSign = faSignHanging;\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M296 136V88h48v48H296zM288 32c-26.5 0-48 21.5-48 48v4H121.6C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36h66.9c-58.9 39.6-98.9 105-104 180H80c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-3.3c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1h64c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1H496c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-4.5c-5-75-45.1-140.4-104-180h66.9c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36H400V80c0-26.5-21.5-48-48-48H288zM88 376h48v48H88V376zm416 48V376h48v48H504z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-87.5-68.6c.5-1.7 .7-3.5 .7-5.4c0-27.6-11-54.1-30.5-73.7L512 320c-20.5-20.5-32-48.3-32-77.3V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM160 242.7c0 29-11.5 56.8-32 77.3l-1.5 1.5C107 341 96 367.5 96 395.2c0 11.5 9.3 20.8 20.8 20.8H406.2L160 222.1v20.7zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM176 432h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faTabletAndroid = faTablet;\nvar faSchoolFlag = {\n prefix: 'fas',\n iconName: 'school-flag',\n icon: [576, 512, [], \"e56e\", \"M288 0H400c8.8 0 16 7.2 16 16V64c0 8.8-7.2 16-16 16H320V95.5L410.3 160H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H336V400c0-26.5-21.5-48-48-48s-48 21.5-48 48V512H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64H165.7L256 95.5V32c0-17.7 14.3-32 32-32zm48 240c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM80 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm368 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H80zm384 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H464z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [576, 512, [], \"f575\", \"M118.6 9.4C106.1-3.1 85.9-3.1 73.4 9.4s-12.5 32.8 0 45.3L154.7 136 62.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L180.1 481.4c37.5 37.5 98.3 37.5 135.8 0L506.3 290.9c28.1-28.1 28.1-73.7 0-101.8L354.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L200 90.7 118.6 9.4zM200 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L245.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L461.1 234.3c3.1 3.1 3.1 8.2 0 11.3L418.7 288H99.5c1.4-5.4 4.2-10.4 8.4-14.6L200 181.3z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4H336c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176v89.2z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [512, 512, [], \"f7aa\", \"M256 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-80 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72v22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7v-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8v32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8v-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [384, 512, [9001], \"f053\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 278.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-3.1 11c-7.4-.3-14.9 .4-22.4 2.1c-9 2.1-17.8 4.4-26.2 7l-4.4-10.3c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l3.6 8.5c-16.5 7.1-31.5 15.1-45.2 23.9L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l5.8 8.7c-13.5 11.2-25.3 23.1-35.5 35.3l-10.1-8.1c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L66 155c-1.6 2.4-3.1 4.8-4.5 7.3c-7.1 11.8-12.8 23.2-17.4 34l-7.4-3c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l8.7 3.5c-.2 .8-.4 1.6-.7 2.3c-2.6 9.4-4.2 17.4-5.3 23.5c-.5 3.1-.9 5.7-1.2 7.7c-.1 1-.2 2-.3 2.7l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.4 2.8l0 0-29.4-2.7c-.3 3.8-.4 7.5-.3 11.2l-11 3.1C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l10.3-2.9c8 15.5 20.7 28.3 36.4 36.4L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l3.1-11c17.8 .8 34.7-4.1 48.8-13.2l8 8c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-8-8c6.8-10.6 11.3-22.9 12.7-36.2l.1-.6c.2-1.3 .7-3.8 1.7-7.4l.2-.6 9.4 4c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.5-3.6c7.5-11.1 18.7-23.7 36.5-34.5l1.6 5.6c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-3-10.6c5.2-1.7 10.7-3.2 16.6-4.6c9.7-2.2 18.5-6 26.4-11.1l8 8c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-8-8c9.1-14.3 14-31.2 13.2-48.8l11-3.1c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-10.3 2.9c-8.1-15.9-21-28.5-36.4-36.4l2.9-10.3c2.7-9.6-2.8-19.5-12.4-22.3zM106.2 275.8l-37.1-3.4 0 0 37.1 3.4zM128 256c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm96-112c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm98.7 345c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l3.1-11c7.4 .3 14.9-.4 22.4-2.1c9-2.1 17.8-4.4 26.2-7l4.4 10.3c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-3.6-8.5c16.5-7.1 31.5-15.1 45.2-23.9L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-5.8-8.7c13.5-11.2 25.3-23.1 35.5-35.3l10.1 8.1c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574 357c1.6-2.4 3.1-4.8 4.5-7.3c7.1-11.8 12.8-23.2 17.4-34l7.4 3c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-8.7-3.5c.2-.8 .4-1.6 .7-2.3c2.6-9.4 4.2-17.4 5.3-23.5c.5-3.1 .9-5.7 1.2-7.7c.1-1 .2-2 .3-2.7l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.4-2.8l0 0 29.4 2.7c.3-3.8 .4-7.5 .3-11.2l11-3.1c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-10.3 2.9c-8-15.5-20.7-28.3-36.4-36.4l2.9-10.3c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.2 12.4l-3.1 11c-17.8-.8-34.7 4.1-48.8 13.2l-8-8c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l8 8c-6.8 10.6-11.3 22.9-12.7 36.2l-.1 .6c-.2 1.3-.7 3.8-1.7 7.4l-.2 .6-9.4-4c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.5 3.6c-7.5 11.1-18.7 23.7-36.5 34.5l-1.6-5.6c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l3 10.6c-5.2 1.7-10.7 3.2-16.6 4.6c-9.7 2.2-18.5 6-26.4 11.1l-8-8c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l8 8c-9.1 14.2-14 31.2-13.2 48.8l-11 3.1c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l10.3-2.9c8.1 15.9 21 28.5 36.4 36.4l-3 10.3zM570.9 239.5l0 0-37.1-3.4 37.1 3.4zM384 384c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64H160h80 46.5c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8v12 16 48c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V402.2L273.9 352H240 160 112c-26.5 0-48-21.5-48-48s21.5-48 48-48h48 80c26.5 0 48-21.5 48-48s-21.5-48-48-48H160 48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faNotdef = {\n prefix: 'fas',\n iconName: 'notdef',\n icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7V390.3zM102.5 448H281.5L192 313.7 102.5 448zm128-192L320 390.3V121.7L230.5 256zM281.5 64H102.5L192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M238.5 53.1C251 39.6 268.6 32 287 32c28.9 0 54.5 18.7 63.2 46.3L366 128.6c7.3 23 25.2 41 48.2 48.3l62.2 19.9c21.2 6.8 35.6 26.5 35.6 48.7c0 17.5-8.9 33.7-23.6 43.1l-85.9 54.8c-10.6 6.8-16.6 18.8-15.7 31.3l2.5 33.9c2.8 38.5-27.7 71.4-66.4 71.4c-13.6 0-26.9-4.2-38.1-12l-48.2-33.6c-14.8-10.3-32.3-15.8-50.3-15.8H170.2c-4.9 0-9.9 .4-14.8 1.2L83.9 432.1c-21.3 3.6-42.8-5.7-54.6-23.9c-11.8-18.1-11.8-41.4 0-59.4L56.5 307c4.9-7.5 7.5-16.3 7.5-25.3c0-9.9-3.2-19.5-9-27.4L11.3 194.6C-6.5 170.3-.7 136.2 24.2 119.2c9.7-6.6 21.2-9.8 32.9-9.1l80.6 4.6c26.1 1.5 51.5-8.7 69.4-27.9l31.5-33.8zM160 256c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm160-48c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zM288 352c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [384, 512, [], \"f22d\", \"M192 368c-61.9 0-112-50.1-112-112s50.1-112 112-112s112 50.1 112 112s-50.1 112-112 112zm0 64c97.2 0 176-78.8 176-176s-78.8-176-176-176S16 158.8 16 256s78.8 176 176 176z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [384, 512, [9002], \"f054\", \"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z\"]\n};\nvar faCarRear = {\n prefix: 'fas',\n iconName: 'car-rear',\n icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 192H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256v80c0 23.7 12.9 44.4 32 55.4V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V400H384v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V391.4c19.1-11.1 32-31.7 32-55.4V256c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32H165.4c-40.8 0-77.1 25.8-90.6 64.3zM208 272h96c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V288c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-13.3 0-24-10.7-24-24zm360-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H408c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faCarAlt = faCarRear;\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [448, 512, [], \"e06b\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM32 128V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [576, 512, [\"battery-2\"], \"f243\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm112 32V320H96V192h96z\"]\n};\nvar faBattery2 = faBatteryQuarter;\nvar faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192v4V304 448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H218.5L494.8 47zM368 400c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80zM80 256c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192H.1C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0v64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0V160zM80 512c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48zm336-48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48z\"]\n};\nvar faCarriageBaby = faBabyCarriage;\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm96 320c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48zm-48-80c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48zM160 64c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M96 382.1V293.3c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4H129.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H184.4c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM224 240c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm256 64c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40V204.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48v7 73c0 8.8-7.2 16-16 16s-16-7.2-16-16V264.3c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334V372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1H304c70.7 0 128-57.3 128-128V320 288c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2V40c0-22.1-17.9-40-40-40z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128c0-35.3-28.7-64-64-64S0 92.7 0 128s28.7 64 64 64s64-28.7 64-64zM384 384c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faPercentage = faPercent;\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96V304v80 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16H416h33.6c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.7 0 32-14.3 32-32V288 272 261.7c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5H480V96c0-35.3-28.7-64-64-64H64zM585 256H480V192h48.8c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 432c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zM240 400c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM80 432c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGlassWaterDroplet = {\n prefix: 'fas',\n iconName: 'glass-water-droplet',\n icon: [448, 512, [], \"e4f5\", \"M64 0C55.1 0 46.6 3.7 40.6 10.2s-9.1 15.2-8.5 24.1L60.9 437.7c3 41.9 37.8 74.3 79.8 74.3H307.3c42 0 76.8-32.4 79.8-74.3L415.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S392.9 0 384 0H64zm51 297.5L98.4 64H349.6L333 297.5 320 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM288 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C193.7 125.9 160 172 160 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nvar faDisplay = {\n prefix: 'fas',\n iconName: 'display',\n icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V352H64V64H512z\"]\n};\nvar faFaceSmile = {\n prefix: 'fas',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM208.4 208c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSmile = faFaceSmile;\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faThumbTack = faThumbtack;\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [127942], \"f091\", \"M400 0H176c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8H24C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H357.9C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24H446.4c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112h84.4c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6h84.4c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nvar faPersonPraying = {\n prefix: 'fas',\n iconName: 'person-praying',\n icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64c0-35.3-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432H72c-22.1 0-40 17.9-40 40s17.9 40 40 40H280c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nvar faPray = faPersonPraying;\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6V105.5L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0h18.1c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32V240H192V32c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zM93.3 51.2L175.9 240H106.1L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5h69.9H216c22.1 0 40 17.9 40 40s-17.9 40-40 40H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H226.3c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363V336c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nvar faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSyncAlt = faRotate;\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm0 416c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM48 304c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm464-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM142.9 437c18.7-18.7 18.7-49.1 0-67.9s-49.1-18.7-67.9 0s-18.7 49.1 0 67.9s49.1 18.7 67.9 0zm0-294.2c18.7-18.7 18.7-49.1 0-67.9S93.7 56.2 75 75s-18.7 49.1 0 67.9s49.1 18.7 67.9 0zM369.1 437c18.7 18.7 49.1 18.7 67.9 0s18.7-49.1 0-67.9s-49.1-18.7-67.9 0s-18.7 49.1 0 67.9z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32V96H480c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H160c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256c0-22.1-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40s40-17.9 40-40zm152 40c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [512, 512, [9774], \"f67c\", \"M224 445.3V323.5l-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8V66.7C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5V445.3c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3V240.8L422.8 351.1zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256z\"]\n};\nvar faGears = {\n prefix: 'fas',\n iconName: 'gears',\n icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.7 8.4 166.9 8 160 8s-13.7 .4-20.4 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM208 176c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 400c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faCogs = faGears;\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24V432H512l0 56c0 13.3-10.7 24-24 24zM128 400V336H512v64H128zm0-96V224H512l0 80H128z\"]\n};\nvar faArrowUpRightDots = {\n prefix: 'fas',\n iconName: 'arrow-up-right-dots',\n icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V160c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H160zM576 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM448 208c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM400 384c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm48 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm128 0c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM272 384c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm48 80c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM144 512c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM576 336c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zm-48-80c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M287.6 .1c-19.7 0-38.3 9.1-50.4 24.6L205.9 64.9c-17.9 23-46 35.6-75.1 33.7L59.1 94c-13.5-.9-26.9 3.2-37.7 11.6C-1.3 123.2-6.7 155.2 8.8 179.4l44.5 69.2c7.1 11 10.8 23.8 10.8 36.8c0 11.9-3.1 23.5-9 33.8L27.4 367.7c-10 17.5-10 39.1 0 56.6c12.1 21.2 36.4 32.3 60.4 27.7l67-13c5.5-1.1 11.2-1.6 16.8-1.6H180c20.9 0 41 7.4 56.9 20.9l45 38.2c11.8 10 26.9 15.6 42.4 15.6c37.8 0 67.7-31.9 65.4-69.6l-3.1-50.6c-1-16.8 6.6-32.9 20.1-42.8l82.5-60.2c14.2-10.4 22.7-27 22.7-44.6c0-23.2-14.5-43.9-36.3-51.8l-58.2-21.2c-24.4-8.9-42.9-29.1-49.7-54.2L349.3 47.4C341.8 19.5 316.5 .1 287.6 .1z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'fas',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM383.8 317.8c12.3-3.7 24.3 7 19.2 18.7c-24.5 56.9-81.1 96.7-147 96.7s-122.5-39.8-147-96.7c-5.1-11.8 6.9-22.4 19.2-18.7C166.7 329.4 210.1 336 256 336s89.3-6.6 127.8-18.2zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM128 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zM352 160c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM320 384c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M64 0H242.7c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32v32h64V192H96zM64 352h80 96 80V288H240 144 64v64zM320 224c0-17.7-14.3-32-32-32H256v64h64V224zM160 192v64h64V192H160zM288 448c17.7 0 32-14.3 32-32V384H256v64h32zM160 384v64h64V384H160zM64 416c0 17.7 14.3 32 32 32h32V384H64v32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9h96c8.8 0 16 7.2 16 16v96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2V432h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V414.2C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112V16C0 7.2 7.2 0 16 0h96zM352 256c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96z\"]\n};\nvar faTransgenderAlt = faTransgender;\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4V424h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V472H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V398.4C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224c0 61.9 50.1 112 112 112s112-50.1 112-112s-50.1-112-112-112s-112 50.1-112 112z\"]\n};\nvar faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nvar faLevelDown = faArrowTurnDown;\nvar faPersonFallingBurst = {\n prefix: 'fas',\n iconName: 'person-falling-burst',\n icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2V352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320H224l80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80c0-26.5-21.5-48-48-48S0 53.5 0 80s21.5 48 48 48s48-21.5 48-48zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192c0-44.2-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80s80-35.8 80-80zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nvar faTicketSimple = {\n prefix: 'fas',\n iconName: 'ticket-simple',\n icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64v80c-26.5 0-48 21.5-48 48s21.5 48 48 48v80c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V304c26.5 0 48-21.5 48-48s-21.5-48-48-48V128z\"]\n};\nvar faTicketAlt = faTicketSimple;\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z\"]\n};\nvar faAnglesLeft = {\n prefix: 'fas',\n iconName: 'angles-left',\n icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nvar faAngleDoubleLeft = faAnglesLeft;\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M48 32C21.5 32 0 53.5 0 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm80 64v64H64V96h64zM48 288c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48zm80 64v64H64V352h64zM256 80v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H304c-26.5 0-48 21.5-48 48zm64 16h64v64H320V96zm32 352v32h32V448H352zm96 0H416v32h32V448zM416 288v32H352V288H256v96 96h64V384h32v32h96V352 320 288H416z\"]\n};\nvar faClockRotateLeft = {\n prefix: 'fas',\n iconName: 'clock-rotate-left',\n icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z\"]\n};\nvar faHistory = faClockRotateLeft;\nvar faFaceGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm160 0l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [640, 512, [\"arrow-right-from-file\"], \"f56e\", \"M32 64C32 28.7 60.7 0 96 0H256V128c0 17.7 14.3 32 32 32H416V288H248c-13.3 0-24 10.7-24 24s10.7 24 24 24H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM416 336V288H526.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H416zm0-208H288V0L416 128z\"]\n};\nvar faArrowRightFromFile = faFileExport;\nvar faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.7 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nvar faShieldBlank = faShield;\nvar faArrowUpShortWide = {\n prefix: 'fas',\n iconName: 'arrow-up-short-wide',\n icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faSortAmountUpAlt = faArrowUpShortWide;\nvar faHouseMedical = {\n prefix: 'fas',\n iconName: 'house-medical',\n icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM256 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V320H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGolfBallTee = {\n prefix: 'fas',\n iconName: 'golf-ball-tee',\n icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160H85.8C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.6-1.1-13.8-3c5.3 11.6 16.9 19.7 30.5 19.7c18.5 0 33.5-15 33.5-33.5c0-13.6-8.1-25.3-19.7-30.5c1.9 4.2 3 8.9 3 13.8zm-52.3-49.3c-4.9 0-9.6-1.1-13.8-3c5.3 11.6 16.9 19.7 30.5 19.7c18.5 0 33.5-15 33.5-33.5c0-13.6-8.1-25.3-19.7-30.5c1.9 4.2 3 8.9 3 13.8c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.6-1.1-13.8-3c5.3 11.6 16.9 19.7 30.5 19.7c18.5 0 33.5-15 33.5-33.5c0-13.6-8.1-25.3-19.7-30.5c1.9 4.2 3 8.9 3 13.8zM96 416c0-17.7 14.3-32 32-32h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-8.8 0-16 7.2-16 16v16c0 17.7-14.3 32-32 32s-32-14.3-32-32V464c0-8.8-7.2-16-16-16H128c-17.7 0-32-14.3-32-32z\"]\n};\nvar faGolfBall = faGolfBallTee;\nvar faCircleChevronLeft = {\n prefix: 'fas',\n iconName: 'circle-chevron-left',\n icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512s256-114.6 256-256zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nvar faChevronCircleLeft = faCircleChevronLeft;\nvar faHouseChimneyWindow = {\n prefix: 'fas',\n iconName: 'house-chimney-window',\n icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H248z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.8-9.2L288 94.6z\"]\n};\nvar faTentArrowTurnLeft = {\n prefix: 'fas',\n iconName: 'tent-arrow-turn-left',\n icon: [640, 512, [], \"e580\", \"M152.1 41.8c9.9-8.9 10.7-24 1.8-33.9s-24-10.7-33.9-1.8l-80 72C34.9 82.7 32 89.2 32 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L118.5 120 488 120c39.8 0 72 32.2 72 72v40c0 13.3 10.7 24 24 24s24-10.7 24-24V192c0-66.3-53.7-120-120-120L118.5 72l33.5-30.2zM339.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6s14.9 11.1 24.2 11.1H320V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faTents = {\n prefix: 'fas',\n iconName: 'tents',\n icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5H608c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512H224V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nvar faMagic = faWandMagic;\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32h52.1c12.7 0 24.9 5.1 33.9 14.1L496 64h56c13.3 0 24 10.7 24 24v24c0 44.2-35.8 80-80 80H464 448 426.7l-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V364.8c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2V480c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V249.8c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192h30 16H303.8L416 256.1zM464 80c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nvar faWineGlassEmpty = {\n prefix: 'fas',\n iconName: 'wine-glass-empty',\n icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM81.9 203.1L93.4 64H226.6l11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nvar faWineGlassAlt = faWineGlassEmpty;\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M512 240.2V256H0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V288H512z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm32-352c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nvar faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M320 336c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H163.2C178 151 242.6 96 320 96s142 55 156.8 128H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H476.8z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M448 96c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm64 0c0 53-43 96-96 96s-96-43-96-96s43-96 96-96s96 43 96 96zM144 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faPersonBiking = {\n prefix: 'fas',\n iconName: 'person-biking',\n icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1V416c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H427.2zM200 384c0 39.8-32.2 72-72 72s-72-32.2-72-72s32.2-72 72-72s72 32.2 72 72zm56 0c0-70.7-57.3-128-128-128S0 313.3 0 384s57.3 128 128 128s128-57.3 128-128zm328 0c0 39.8-32.2 72-72 72s-72-32.2-72-72s32.2-72 72-72s72 32.2 72 72zm56 0c0-70.7-57.3-128-128-128s-128 57.3-128 128s57.3 128 128 128s128-57.3 128-128z\"]\n};\nvar faBiking = faPersonBiking;\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [640, 512, [129529], \"f51a\", \"M627.6 57.3c14-10.9 16.5-31 5.6-44.9s-31-16.5-44.9-5.6l-144 112-72 56-8.7 6.8-30.8-39.4c-3.7-4.8-9.8-7-15.8-5.8s-10.7 5.7-12.3 11.5l-12.5 46.3L371.1 295l48-.9c6.1-.1 11.5-3.7 14.1-9.1s1.9-11.9-1.8-16.7L403 231.9l8.6-6.7 72-56 144-112zM16.7 507.7c37.4 2.8 196.8 12 252.3-31.4c57.7-45.1 76.8-161.5 76.8-161.5L267.1 213.9s-117.6-9.6-175.3 35.5C69 267.1 50.5 304.1 36.3 344c-2.4 6.7 4.7 12.8 11 9.4L86.2 333c4.1-2.2 9.2-1.1 12 2.6s2.7 8.8-.4 12.3L24.4 430.4C13.2 442.9 5.5 458.1 2.4 474.5c-.9 4.8-1.6 8.9-2.2 12.1c-.9 5 .5 10.1 3.6 14.1s7.7 6.6 12.8 7z\"]\n};\nvar faShieldHeart = {\n prefix: 'fas',\n iconName: 'shield-heart',\n icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h48V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8V64v64c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H416V352H384V224H352V128H320v96h32V352h32V512H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H128V352h32V224h32V128H160v96H128V352H96V512H32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32V256c0-17.7 14.3-32 32-32V160c0-17.7 14.3-32 32-32V64 32 24c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32v48h64V304c0-17.7-14.3-32-32-32zm-32-80v32h64V192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faEarthOceania = {\n prefix: 'fas',\n iconName: 'earth-oceania',\n icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3H254.8c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H264c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faGlobeOceania = faEarthOceania;\nvar faSquareXmark = {\n prefix: 'fas',\n iconName: 'square-xmark',\n icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesSquare = faSquareXmark;\nvar faXmarkSquare = faSquareXmark;\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H347.1L325.8 320H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H315.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1z\"]\n};\nvar faUpRightAndDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'up-right-and-down-left-from-center',\n icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM184 496H40c-13.3 0-24-10.7-24-24V328c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nvar faExpandAlt = faUpRightAndDownLeftFromCenter;\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32H144 96 48c-26.5 0-48 21.5-48 48v64.8c0 19 11.2 36.2 28.5 43.9l67.5 30V368c0 26.5 21.5 48 48 48H403.1c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8H288V128h32zM96 208v86.1L48 272.8V208H96z\"]\n};\nvar faT = {\n prefix: 'fas',\n iconName: 't',\n icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H160V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H192 32z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2h32c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64v32c0 8.8-7.2 16-16 16H560c-8.8 0-16-7.2-16-16V320H480v16c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V318.4c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2V352c0 17.7 14.3 32 32 32h32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V372c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12v76c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V329.1L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1h7.2H256h32c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185c0-13.3-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24s24-10.7 24-24zm88 24c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zM480 144c0-8.8-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16s16-7.2 16-16zm48 16c8.8 0 16-7.2 16-16s-7.2-16-16-16s-16 7.2-16 16s7.2 16 16 16z\"]\n};\nvar faChartColumn = {\n prefix: 'fas',\n iconName: 'chart-column',\n icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm128-64V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32zM480 96V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1v29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9V241.1zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1v29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1V241.1c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nvar faVialCircleCheck = {\n prefix: 'fas',\n iconName: 'vial-circle-check',\n icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V266.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96V96C14.3 96 0 81.7 0 64zM96 96v96h64V96H96zM512 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonArrowDownToLine = {\n prefix: 'fas',\n iconName: 'person-arrow-down-to-line',\n icon: [640, 512, [], \"e538\", \"M192 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM464 64V306.7l-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M144 160c44.2 0 80 35.8 80 80s-35.8 80-80 80s-80-35.8-80-80s35.8-80 80-80zM263.8 320c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144H496c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80H263.8zM496 320c-44.2 0-80-35.8-80-80s35.8-80 80-80s80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224H29.4C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480v2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288h2.6c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32V29.4C288 13.2 274.8 0 258.6 0zM256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faPersonWalkingLuggage = {\n prefix: 'fas',\n iconName: 'person-walking-luggage',\n icon: [576, 512, [], \"e554\", \"M432 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nvar faUpDown = {\n prefix: 'fas',\n iconName: 'up-down',\n icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160H80V352H24c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4H176V160h56c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nvar faArrowsAltV = faUpDown;\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [640, 512, [], \"f73c\", \"M513.2 0C449 0 395.5 46.5 385.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM399.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C273.3 114.6 242.8 96 208 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H399.9zM117.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80V336c0 26.5 21.5 48 48 48H65.1c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96H488h8H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V80c0-26.5-21.5-48-48-48H48zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21V112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zm0-48c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nvar faHaykal = faBahai;\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H141.3C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 88v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0H416h32 16c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48H538.5c-17 0-33.3-6.7-45.3-18.7L480 160H448v21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512H496 432 32.3c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1V181.5v-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3v.6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87V227c0 32.8 8.4 64.8 24 93H112c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32V160c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64h32V32H192c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32V480s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64H96V352H64c-35.3 0-64 28.7-64 64z\"]\n};\nvar faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusCircle = faCirclePlus;\nvar faFaceGrinTongueWink = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448V401.1c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2V448c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64zM320 402.6V448c0 35.3-28.7 64-64 64s-64-28.7-64-64V402.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6zM336 232c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2c.3 0 .6 0 .9 0c0 0 0 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nvar faPlugCircleExclamation = {\n prefix: 'fas',\n iconName: 'plug-circle-exclamation',\n icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144zm0-48c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm0-192c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faLinkSlash = {\n prefix: 'fas',\n iconName: 'link-slash',\n icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nvar faChainBroken = faLinkSlash;\nvar faChainSlash = faLinkSlash;\nvar faUnlink = faLinkSlash;\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M0 448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H224c-53 0-96-43-96-96V160H64c-35.3 0-64 28.7-64 64V448zm224-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z\"]\n};\nvar faPersonWalkingArrowLoopLeft = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-loop-left',\n icon: [640, 512, [], \"e551\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384H480c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96H461.3l25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nvar faArrowUpZA = {\n prefix: 'fas',\n iconName: 'arrow-up-z-a',\n icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400H395.8z\"]\n};\nvar faSortAlphaUpAlt = faArrowUpZA;\nvar faFireFlameCurved = {\n prefix: 'fas',\n iconName: 'fire-flame-curved',\n icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nvar faFireAlt = faFireFlameCurved;\nvar faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [448, 512, [127786], \"f76f\", \"M0 32V45.6C0 62.7 1.7 79.6 5 96H357.8c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0H32C14.3 0 0 14.3 0 32zm352.2 96H13.6c12.2 35.9 32.3 68.7 58.8 96H412l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3H445c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9H110.2c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9H288z\"]\n};\nvar faFileCirclePlus = {\n prefix: 'fas',\n iconName: 'file-circle-plus',\n icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 384c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm16-208c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faBookQuran = {\n prefix: 'fas',\n iconName: 'book-quran',\n icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nvar faQuran = faBookQuran;\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [9875], \"f13d\", \"M256 96c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm85.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c88.4 0 160-71.6 160-160v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 53-43 96-96 96H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M384 96V224H256V96H384zm0 192V416H256V288H384zM192 224H64V96H192V224zM64 288H192V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faFaceAngry = {\n prefix: 'fas',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM161.3 382.1c-5.4 12.3 8.7 21.6 21.1 16.4c22.4-9.5 47.4-14.8 73.7-14.8s51.3 5.3 73.7 14.8c12.4 5.2 26.5-4.1 21.1-16.4c-16-36.6-52.4-62.1-94.8-62.1s-78.8 25.6-94.8 62.1zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 208c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faArrowTrendDown = {\n prefix: 'fas',\n iconName: 'arrow-trend-down',\n icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352H384z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM128 416c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFeed = faRss;\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M96 151.4V360.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1l0 0 32-56 4.5-7.9-.1-.3H119.4c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V151.4C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32H328.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nvar faScaleBalanced = {\n prefix: 'fas',\n iconName: 'scale-balanced',\n icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zM125.8 177.3L51.1 320H204.9L130.2 177.3c-.4-.8-1.3-1.3-2.2-1.3s-1.7 .5-2.2 1.3zM128 128c18.8 0 36 10.4 44.7 27l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C210.9 402.6 178.2 416 128 416s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L83.3 155c8.7-16.6 25.9-27 44.7-27zm384 48c-.9 0-1.7 .5-2.2 1.3L435.1 320H588.9L514.2 177.3c-.4-.8-1.3-1.3-2.2-1.3zm-44.7-21c8.7-16.6 25.9-27 44.7-27s36 10.4 44.7 27l77.8 148.5c3.1 5.8 6.1 14 5.5 23.8c-.7 12.1-4.8 35.2-24.8 55.1C594.9 402.6 562.2 416 512 416s-82.9-13.4-103.2-33.5c-20-20-24.2-43-24.8-55.1c-.6-9.8 2.5-18 5.5-23.8L467.3 155z\"]\n};\nvar faBalanceScale = faScaleBalanced;\nvar faGaugeSimpleHigh = {\n prefix: 'fas',\n iconName: 'gauge-simple-high',\n icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM320 352c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTachometer = faGaugeSimpleHigh;\nvar faTachometerFast = faGaugeSimpleHigh;\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.1-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9V448c0 17.7 14.3 32 32 32s32-14.3 32-32V131.9zM256 352c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm64 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0-128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm64 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm0-128c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32zm64 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm32-32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z\"]\n};\nvar faDesktopAlt = faDesktop;\nvar faM = {\n prefix: 'fas',\n iconName: 'm',\n icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.2c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V169.7L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 49.9 9.2 37.5 22.7 33.4z\"]\n};\nvar faTableList = {\n prefix: 'fas',\n iconName: 'table-list',\n icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 0v64h64V96H64zm384 0H192v64H448V96zM64 224v64h64V224H64zm384 0H192v64H448V224zM64 352v64h64V352H64zm384 0H192v64H448V352z\"]\n};\nvar faThList = faTableList;\nvar faCommentSms = {\n prefix: 'fas',\n iconName: 'comment-sms',\n icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM202.9 176.8c6.5-2.2 13.7 .1 17.9 5.6L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V240l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-6.9 4.4-13 10.9-15.2zm173.1 38c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.2-.4-23.7-4.4-32.6-7.4l0 0 0 0c-1.4-.5-2.7-.9-4-1.4c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.7 .6 3.3 1.1 4.9 1.6l0 0 0 0c9.1 3.1 15.6 5.3 22.6 5.5c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4c-7.2-2.2-16.7-5-24.3-9.6c-9-5.4-17.7-14.7-17.7-29.4c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c10 .2 19.7 2.3 27.9 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-7.3-1.9-14.1-3.3-20.1-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9zm-272 0c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.3-.4-24.2-4.5-33.2-7.6l0 0 0 0c-1.3-.4-2.5-.8-3.6-1.2c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.4 .5 2.7 .9 4 1.4l0 0 0 0 0 0c9.5 3.2 16.5 5.6 23.7 5.8c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4 0 0c-7.2-2.2-16.7-5-24.3-9.6C80.8 239 72.1 229.7 72 215c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c9.5 .1 22.2 2.1 31.1 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-6.6-1.8-16.8-3.3-23.3-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9z\"]\n};\nvar faSms = faCommentSms;\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M352 128c0 70.7-57.3 128-128 128s-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [512, 512, [10003, 10004], \"f00c\", \"M470.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 338.7 425.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [576, 512, [\"battery-4\"], \"f241\", \"M0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176zm80-16c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zm272 32V320H96V192H352z\"]\n};\nvar faBattery4 = faBatteryThreeQuarters;\nvar faHouseCircleCheck = {\n prefix: 'fas',\n iconName: 'house-circle-check',\n icon: [640, 512, [], \"e509\", \"M320.7 351.7C329 262.1 404.3 192 496 192c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V480c0 17.7 14.3 32 32 32H192c17.7 0 32-14.3 32-32V383.7c0-17.7 14.3-32 32-32h64l.7 0zM640 368c0-79.5-64.5-144-144-144s-144 64.5-144 144s64.5 144 144 144s144-64.5 144-144zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faDiagramSuccessor = {\n prefix: 'fas',\n iconName: 'diagram-successor',\n icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nvar faTruckArrowRight = {\n prefix: 'fas',\n iconName: 'truck-arrow-right',\n icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zm368-48c0-26.5-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48s48-21.5 48-48zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H262.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nvar faArrowsSplitUpAndLeft = {\n prefix: 'fas',\n iconName: 'arrows-split-up-and-left',\n icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3V384c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64H109.3l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256H224c23.3 0 45.2 6.2 64 17.1V109.3l-41.4 41.4z\"]\n};\nvar faHandFist = {\n prefix: 'fas',\n iconName: 'hand-fist',\n icon: [384, 512, [9994, \"fist-raised\"], \"f6de\", \"M160 0c17.7 0 32 14.3 32 32V144H128V32c0-17.7 14.3-32 32-32zM32 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H32V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L37.5 357.5C13.5 333.5 0 300.9 0 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faFistRaised = faHandFist;\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80H96c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [128188], \"f0b1\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 320 512V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM512 288H320v32c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V288z\"]\n};\nvar faPersonFalling = {\n prefix: 'fas',\n iconName: 'person-falling',\n icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0h-1.4l92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32V278.2c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 128c-26.5 0-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faImagePortrait = {\n prefix: 'fas',\n iconName: 'image-portrait',\n icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64l0-384zM256 192c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zM80 356.6c0-37.9 30.7-68.6 68.6-68.6h86.9c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4H107.4C92.3 384 80 371.7 80 356.6z\"]\n};\nvar faPortrait = faImagePortrait;\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1v-33c-15.9-4.7-32.8-7.2-50.3-7.2H178.3zM384 224c-17.7 0-32 14.3-32 32v82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7H384zm72 80c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faRug = {\n prefix: 'fas',\n iconName: 'rug',\n icon: [640, 512, [], \"e569\", \"M24 64H56 80V88v88 80 80 88 24H56 24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V360H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V280H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V200H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V112H24C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0H528V448H112V64zM640 88c0 13.3-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H584 560V424 336 256 176 88 64h24 32c13.3 0 24 10.7 24 24z\"]\n};\nvar faEarthEurope = {\n prefix: 'fas',\n iconName: 'earth-europe',\n icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1v9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1h1c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24v4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H379.3c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3h11.3c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16H454c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.6-15.4H251.4c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3v3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3H248c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faGlobeEurope = faEarthEurope;\nvar faCartFlatbedSuitcase = {\n prefix: 'fas',\n iconName: 'cart-flatbed-suitcase',\n icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0H48c44.2 0 80 35.8 80 80V368c0 8.8 7.2 16 16 16H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H541.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H253.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H144c-44.2 0-80-35.8-80-80V80c0-8.8-7.2-16-16-16H32C14.3 64 0 49.7 0 32zM432 96V56c0-4.4-3.6-8-8-8H344c-4.4 0-8 3.6-8 8V96h96zM288 96V56c0-30.9 25.1-56 56-56h80c30.9 0 56 25.1 56 56V96 320H288V96zM512 320V96h16c26.5 0 48 21.5 48 48V272c0 26.5-21.5 48-48 48H512zM240 96h16V320H240c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faLuggageCart = faCartFlatbedSuitcase;\nvar faRectangleXmark = {\n prefix: 'fas',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faBahtSign = {\n prefix: 'fas',\n iconName: 'baht-sign',\n icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32V64H37.6C16.8 64 0 80.8 0 101.6V224v41.7V288 406.3c0 23 18.7 41.7 41.7 41.7H112v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112V32c0-17.7-14.3-32-32-32zM112 128v96H64V128h48zm64 96V128c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64v96H64V288h48zm64 96V288h32c26.5 0 48 21.5 48 48s-21.5 48-48 48H176z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5V78.6c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C87.5 32 35.1 48.6 9 59.9c-5.6 2.4-9 8-9 14V454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5V73.9c0-6.1-3.4-11.6-9-14C540.9 48.6 488.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11V456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nvar faBookJournalWhills = {\n prefix: 'fas',\n iconName: 'book-journal-whills',\n icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.3-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.7-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-10-20.7-26.1-38-46.4-49.2c17 27.1 11 62.8-14 82.6c14.1 14.6 19.1 35.9 13.1 55.2c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-6-19.4-1-40.5 13.1-55.2c-25-19.9-31-55.5-14-82.6c-20.1 11.2-36.4 28.5-46.4 49.2l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nvar faJournalWhills = faBookJournalWhills;\nvar faHandcuffs = {\n prefix: 'fas',\n iconName: 'handcuffs',\n icon: [640, 512, [], \"e4f8\", \"M304 32c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zM192 112c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm-32 16c17.7 0 32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32zm0 320c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32s32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0c0-53-43-96-96-96s-96 43-96 96s43 96 96 96s96-43 96-96zM368 64c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm80 48c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faExclamationTriangle = faTriangleExclamation;\nvar faWarning = faTriangleExclamation;\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [\"arrow-turn-right\", \"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nvar faArrowTurnRight = faShare;\nvar faMailForward = faShare;\nvar faBottleDroplet = {\n prefix: 'fas',\n iconName: 'bottle-droplet',\n icon: [256, 512, [], \"e4c4\", \"M64 0C50.7 0 40 10.7 40 24s10.7 24 24 24c4.4 0 8 3.6 8 8v64.9c0 12.2-7.2 23.1-17.2 30.1C21.7 174.1 0 212.5 0 256V448c0 35.3 28.7 64 64 64H192c35.3 0 64-28.7 64-64V256c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1V56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 0 0 0H72l0 0 0 0L64 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C153.9 288.9 176 320.2 176 337c0 24.9-21.5 45-48 45z\"]\n};\nvar faMaskFace = {\n prefix: 'fas',\n iconName: 'mask-face',\n icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1H144 128 56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H512 496h-9.2c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H96v48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3V176h40c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16 48H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHillRockslide = {\n prefix: 'fas',\n iconName: 'hill-rockslide',\n icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2H293.4c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9V309.4c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9v53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zM384 288c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faRightLeft = {\n prefix: 'fas',\n iconName: 'right-left',\n icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64H480z\"]\n};\nvar faExchangeAlt = faRightLeft;\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nvar faRoadCircleExclamation = {\n prefix: 'fas',\n iconName: 'road-circle-exclamation',\n icon: [640, 512, [], \"e565\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 512c-79.5 0-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144s-64.5 144-144 144zm0-48c13.3 0 24-10.7 24-24s-10.7-24-24-24s-24 10.7-24 24s10.7 24 24 24zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9h80c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24h80c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288H24c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24H408zM24 416c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H24zm384 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H408zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V192zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faMoneyBill1Wave = {\n prefix: 'fas',\n iconName: 'money-bill-1-wave',\n icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416H64V352c35.3 0 64 28.7 64 64zM64 224V160h64c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillWaveAlt = faMoneyBill1Wave;\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm91 .5c33.7-43.3 53.8-97.8 53.8-157s-20.1-113.6-53.8-157l12.4-12.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L413 53.8C369.6 20.1 315.2 0 256 0S142.4 20.1 99 53.8L86.6 41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L53.8 99C20.1 142.4 0 196.8 0 256s20.1 113.6 53.8 157L41.4 425.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L99 458.2c43.3 33.7 97.8 53.8 157 53.8s113.6-20.1 157-53.8l12.4 12.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L458.2 413zm-45.7-45.7l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM304 256c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [512, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M154.9 162c.3 .7 .7 1.5 1.1 2.2l17.8 30.9c11.1-12.6 27.4-19.8 44.4-19.1l-20.7-35.8c-6.6-11.5-21.3-15.4-32.8-8.8c-10.8 6.2-14.9 19.5-9.9 30.6zm173.6 47C399.7 231.7 448 297.8 448 372.5c0 1.5 0 3-.1 4.5c39.7-25.6 64.1-69.7 64.1-117.4V136c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 81.7L347.8 16.5C341.2 5 326.5 1.1 315.1 7.7s-15.4 21.3-8.8 32.8l64 110.9c2.2 3.8 .9 8.7-2.9 10.9s-8.7 .9-10.9-2.9l-80-138.6C269.8 9.3 255.1 5.4 243.6 12s-15.4 21.3-8.8 32.8l80 138.6c2.2 3.8 .9 8.7-2.9 10.9s-8.7 .9-10.9-2.9L237 80.5c-6.6-11.5-21.3-15.4-32.8-8.8s-15.4 21.3-8.8 32.8l44 76.2L328.5 209zM64 488c0 12.4 9.4 22.6 21.5 23.9c.8 .1 1.6 .1 2.5 .1H288.7 296c66.3 0 120-53.7 120-120c0-1.2 0-2.4-.1-3.6c0-1.2 .1-2.5 .1-3.7c0-68-44-128.2-108.9-148.9l-83.9-26.7c-12.6-4-26.1 3-30.1 15.6s3 26.1 15.6 30.1L262.6 272H56c-13.3 0-24 10.7-24 24s10.7 24 24 24H184c4.4 0 8 3.6 8 8s-3.6 8-8 8H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H184c4.4 0 8 3.6 8 8s-3.6 8-8 8H56c-13.3 0-24 10.7-24 24s10.7 24 24 24H184c4.4 0 8 3.6 8 8s-3.6 8-8 8H88c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSignLanguage = faHands;\nvar faSigning = faHands;\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faWaterLadder = {\n prefix: 'fas',\n iconName: 'water-ladder',\n icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V224H384V127.7C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3h0V288H192v96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1V127.7zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faLadderWater = faWaterLadder;\nvar faSwimmingPool = faWaterLadder;\nvar faArrowsUpDown = {\n prefix: 'fas',\n iconName: 'arrows-up-down',\n icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nvar faArrowsV = faArrowsUpDown;\nvar faFaceGrimace = {\n prefix: 'fas',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zm96-112h-8V360l55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344V304h8c23.8 0 43.5 17.3 47.3 40zM328 344H264V304h64v40zm0 56H264V360h64v40zm-80-96v40l-64 0V304h64zm0 56v40H184V360l64 0zm-80-16H112.7c3.8-22.7 23.6-40 47.3-40h8v40zm0 56h-8c-23.8 0-43.5-17.3-47.3-40H168v40zm40.4-192c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faWheelchairMove = {\n prefix: 'fas',\n iconName: 'wheelchair-move',\n icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M416 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224h97.4c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288H306.7c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96z\"]\n};\nvar faWheelchairAlt = faWheelchairMove;\nvar faTurnDown = {\n prefix: 'fas',\n iconName: 'turn-down',\n icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M178.3 506.3L40.3 368.3C35 363 32 355.8 32 348.3C32 332.7 44.7 320 60.3 320H144V112c0-8.8-7.2-16-16-16H32C14.3 96 0 81.7 0 64V32C0 14.3 14.3 0 32 0h96c61.9 0 112 50.1 112 112V320h83.7c15.6 0 28.3 12.7 28.3 28.3c0 7.5-3 14.7-8.3 20L205.7 506.3C202 510 197.1 512 192 512s-10-2-13.7-5.7z\"]\n};\nvar faLevelDownAlt = faTurnDown;\nvar faPersonWalkingArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-right',\n icon: [640, 512, [], \"e552\", \"M208 96c26.5 0 48-21.5 48-48s-21.5-48-48-48s-48 21.5-48 48s21.5 48 48 48zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nvar faSquareEnvelope = {\n prefix: 'fas',\n iconName: 'square-envelope',\n icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144H352c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4V336c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V210.4l136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nvar faEnvelopeSquare = faSquareEnvelope;\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [127922], \"f522\", \"M252.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-184 184c-15.6 15.6-15.6 40.9 0 56.6l184 184c15.6 15.6 40.9 15.6 56.6 0l184-184c15.6-15.6 15.6-40.9 0-56.6l-184-184zM248 224c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zM96 248c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm128 80c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm128-80c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zM224 72c13.3 0 24 10.7 24 24s-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24zm96 392c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H472.5c13.4 26.9 8.8 60.5-13.6 82.9L320 413.8V464zm160-88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [512, 512, [], \"f436\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM240 144c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32zm32 64c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32zm-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56V56c0-30.9 25.1-56 56-56z\"]\n};\nvar faBandage = {\n prefix: 'fas',\n iconName: 'bandage',\n icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H480V416zM448 96H192V416H448V96zM64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64h96V96H64zM296 208c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm72 24c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24zm-72 72c0 13.3-10.7 24-24 24s-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24zm72 24c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faBandAid = faBandage;\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM312 376c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-13.3 0-24 10.7-24 24s10.7 24 24 24H312z\"]\n};\nvar faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H200.6c-5.4-9.4-8.6-20.3-8.6-32V256c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96H217.8l28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224H344c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24H272c-26.5 0-48 21.5-48 48v80H416V256h32v96H640V272c0-26.5-21.5-48-48-48h-4.1c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48H416V384H224v80zm224 48H592c26.5 0 48-21.5 48-48V384H448V512zm96-312c0 13.3-10.7 24-24 24H470.9l29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [512, 512, [127976], \"f594\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H208V448h96v64H480c17.7 0 32-14.3 32-32s-14.3-32-32-32V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V112zM368 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM96 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V208zm144-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V208zm-3 152.2c3.3 12.8-7.8 23.8-21 23.8H184c-13.3 0-24.3-10.9-21-23.8c10.6-41.5 48.2-72.2 93-72.2s82.5 30.7 93 72.2z\"]\n};\nvar faEarthAsia = {\n prefix: 'fas',\n iconName: 'earth-asia',\n icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9h2.3c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM512 256c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM144.5 348.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nvar faGlobeAsia = faEarthAsia;\nvar faIdCardClip = {\n prefix: 'fas',\n iconName: 'id-card-clip',\n icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0h64c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM64 64H192v48c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7H389.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H229.3c-29.5 0-53.3 23.9-53.3 53.3zM288 352c35.3 0 64-28.7 64-64s-28.7-64-64-64s-64 28.7-64 64s28.7 64 64 64z\"]\n};\nvar faIdCardAlt = faIdCardClip;\nvar faMagnifyingGlassPlus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-plus',\n icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faSearchPlus = faMagnifyingGlassPlus;\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 25.3-19.5 46-44.3 47.9c7.7 8.5 12.3 19.8 12.3 32.1c0 23.4-16.8 42.9-38.9 47.1c4.4 7.2 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 256c-70.7 0-128-57.3-128-128S153.3 0 224 0s128 57.3 128 128s-57.3 128-128 128zm-45.7 48h91.4c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM640 368c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM496 288c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faHandDots = {\n prefix: 'fas',\n iconName: 'hand-dots',\n icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32zM272 336c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm48 48c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm80-48c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zM352 448c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16zm-80-16c0 8.8-7.2 16-16 16s-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16zm-80-16c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faAllergies = faHandDots;\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm0 32v64H288V256H96zM240 416h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faMugSaucer = {\n prefix: 'fas',\n iconName: 'mug-saucer',\n icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32H448h64c70.7 0 128 57.3 128 128s-57.3 128-128 128H480c0 53-43 96-96 96H192c-53 0-96-43-96-96V64zM480 224h32c35.3 0 64-28.7 64-64s-28.7-64-64-64H480V224zM32 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCoffee = faMugSaucer;\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M192 64L160 0H128L96 64 64 0H48C21.5 0 0 21.5 0 48V256H384V48c0-26.5-21.5-48-48-48H224L192 64zM0 288v32c0 35.3 28.7 64 64 64h64v64c0 35.3 28.7 64 64 64s64-28.7 64-64V384h64c35.3 0 64-28.7 64-64V288H0zM192 464c-8.8 0-16-7.2-16-16s7.2-16 16-16s16 7.2 16 16s-7.2 16-16 16z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448h8.4c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4H400c96 0 176-64 176-176s-64-208-288-208zM224 256c0 35.3-28.7 64-64 64s-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm192 64c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z\"]\n};\nvar faMagnifyingGlassMinus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-minus',\n icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z\"]\n};\nvar faSearchMinus = faMagnifyingGlassMinus;\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0H208c26.5 0 48 21.5 48 48V96H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faUserLarge = {\n prefix: 'fas',\n iconName: 'user-large',\n icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0S112 64.5 112 144s64.5 144 144 144zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H481.3c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320H161.3z\"]\n};\nvar faUserAlt = faUserLarge;\nvar faTrainTram = {\n prefix: 'fas',\n iconName: 'train-tram',\n icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0H361.2c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.7 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15H248V96h40c53 0 96 43 96 96V352c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1H365.3c-8.5 0-16.6-3.4-22.6-9.4L288 448H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H43c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352V192c0-53 43-96 96-96h40V48H86.8zM160 160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H160zm32 192c0-17.7-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32zm96 32c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M96 128V70.2c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30V128h-.3c.2 2.6 .3 5.3 .3 8v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V136c0-2.7 .1-5.4 .3-8H96zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80V160H144v16zM129.1 323.2l83.2 88.4c6.3 6.7 17 6.7 23.3 0l83.2-88.4c73.7 14.9 129.1 80 129.1 158.1c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-78.1 55.5-143.2 129.1-158.1zM208 48V64H192c-4.4 0-8 3.6-8 8V88c0 4.4 3.6 8 8 8h16v16c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V96h16c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8H240V48c0-4.4-3.6-8-8-8H216c-4.4 0-8 3.6-8 8z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4H97.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V325.3c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [9925], \"f6c4\", \"M122.4 1.2C127.6-.9 133.4-.2 137.9 3l70.3 50.3L278.5 3c4.5-3.2 10.3-3.9 15.4-1.8s8.8 6.7 9.7 12.2l14.1 85.3L403 112.8c5.4 .9 10.1 4.6 12.2 9.7s1.4 10.9-1.8 15.4l-38.8 54.3c-2.2-.1-4.3-.2-6.5-.2c-23.2 0-45 6.2-63.8 17c.1-12.5-2.2-25.3-7.3-37.6c-20.3-49-76.4-72.2-125.4-52s-72.2 76.4-52 125.4c18.3 44.3 66 67.5 111.1 56.6c-36.3 18.2-62.8 53.3-69.1 94.9l-23.6 16.9c-4.5 3.2-10.3 3.9-15.4 1.8s-8.8-6.7-9.7-12.2L98.7 317.7 13.4 303.6c-5.5-.9-10.1-4.6-12.2-9.7S-.2 282.9 3 278.5l50.3-70.3L3 137.9c-3.2-4.5-3.9-10.3-1.8-15.4s6.7-8.8 12.2-9.7L98.7 98.7l14.1-85.3c.9-5.5 4.6-10.1 9.7-12.2zM149 232.7c-13.5-32.7 2-70.1 34.6-83.6s70.1 2 83.6 34.6s-2 70.1-34.6 83.6s-70.1-2-83.6-34.6zM639.9 431.9c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H176zM288 204c28.7 0 52 23.3 52 52v96c0 28.7-23.3 52-52 52s-52-23.3-52-52V256c0-28.7 23.3-52 52-52zm-12 52v96c0 6.6 5.4 12 12 12s12-5.4 12-12V256c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5v2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9H192c11 0 20 9 20 20s-9 20-20 20H128c-11 0-20-9-20-20V368.3c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8v-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [448, 512, [129522], \"f076\", \"M0 160v96C0 379.7 100.3 480 224 480s224-100.3 224-224V160H320v96c0 53-43 96-96 96s-96-43-96-96V160H0zm0-32H128V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64zm320 0H448V64c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32v64z\"]\n};\nvar faJar = {\n prefix: 'fas',\n iconName: 'jar',\n icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm96 64c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H96z\"]\n};\nvar faNoteSticky = {\n prefix: 'fas',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H288V368c0-26.5 21.5-48 48-48H448V96c0-35.3-28.7-64-64-64H64zM448 352H402.7 336c-8.8 0-16 7.2-16 16v66.7V480l32-32 64-64 32-32z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faBugSlash = {\n prefix: 'fas',\n iconName: 'bug-slash',\n icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H479.7c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160H264c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96v3.6c0 15.7 12.7 28.4 28.4 28.4H387.6c15.7 0 28.4-12.7 28.4-28.4V96c0-53-43-96-96-96zM160.3 256H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6V335.5L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7V479.2z\"]\n};\nvar faArrowUpFromWaterPump = {\n prefix: 'fas',\n iconName: 'arrow-up-from-water-pump',\n icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48V256H48c-26.5 0-48 21.5-48 48v96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400V304c0-26.5-21.5-48-48-48H480l0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256H288V48c0-26.5-21.5-48-48-48H112zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2H384c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336H192c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M240 80H342.7c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80h81.4l91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16H97c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7V512H243.7L181.5 408.2 124 312.4zm33-7.2L204.3 384H272c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48h82.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512H64V345.4C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48H223.5l57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nvar faFaceSadTear = {\n prefix: 'fas',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256C0 397.4 114.6 512 256 512s256-114.6 256-256S397.4 0 256 0S0 114.6 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM303.6 208c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32s-32-14.3-32-32zm-128 32c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nvar faTentArrowsDown = {\n prefix: 'fas',\n iconName: 'tent-arrows-down',\n icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V146.1l-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [128, 512, [10069, 10071, 61738], \"21\", \"M96 64c0-17.7-14.3-32-32-32S32 46.3 32 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM64 480c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z\"]\n};\nvar faArrowsSpin = {\n prefix: 'fas',\n iconName: 'arrows-spin',\n icon: [448, 512, [], \"e4bb\", \"M224 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H416c8.8 0 16-7.2 16-16V64c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C331.4 52.6 280.1 32 224 32c-10.9 0-21.5 .8-32 2.3V99.2c10.3-2.1 21-3.2 32-3.2zM100.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V64c0-8.8-7.2-16-16-16H32c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C20.6 148.6 0 199.9 0 256c0 10.9 .8 21.5 2.3 32H67.2c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM445.7 224H380.8c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8V448c0 8.8 7.2 16 16 16H416c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C427.4 363.4 448 312.1 448 256c0-10.9-.8-21.5-2.3-32zM224 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H32c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C116.6 459.4 167.9 480 224 480c10.9 0 21.5-.8 32-2.3V412.8c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zm-16-88c-13.3 0-24-10.7-24-24s10.7-24 24-24s24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faTurkishLiraSign = {\n prefix: 'fas',\n iconName: 'turkish-lira-sign',\n icon: [448, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M128 32c17.7 0 32 14.3 32 32V99.3L279.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L160 165.9v29.4l119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L160 261.9V416h63.8c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C410.5 399.8 326.1 480 223.8 480H128c-17.7 0-32-14.3-32-32V280.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L96 213.6V184.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L96 117.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faTry = faTurkishLiraSign;\nvar faTurkishLira = faTurkishLiraSign;\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c10.6 1.6 42.1 6.7 55.1 10c17.1 4.3 27.5 21.7 23.2 38.9s-21.7 27.5-38.9 23.2c-9.3-2.4-37.6-7-48.9-8.7c-32.1-4.8-59.6-2.4-78.5 4.9c-18.3 7-25.9 16.9-27.9 28c-1.9 10.7-.5 16.8 1.3 20.6c1.9 4 5.6 8.5 12.9 13.4c16.2 10.8 41.1 17.9 73.3 26.7l2.8 .8c28.4 7.7 63.2 17.2 89 34.3c14.1 9.4 27.3 22.1 35.5 39.7c8.3 17.8 10.1 37.8 6.3 59.1c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.2-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.4 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.7 .5-16.8-1.3-20.6c-1.9-4-5.6-8.5-12.9-13.4c-16.2-10.8-41.1-17.9-73.3-26.7l-2.8-.8c-28.4-7.7-63.2-17.2-89-34.3c-14.1-9.4-27.3-22.1-35.5-39.7c-8.3-17.8-10.1-37.8-6.3-59.1C25 114.1 53 89.3 86 76.7c13-5 27.2-8.2 42-10V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faDollar = faDollarSign;\nvar faUsd = faDollarSign;\nvar faX = {\n prefix: 'fas',\n iconName: 'x',\n icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nvar faMagnifyingGlassDollar = {\n prefix: 'fas',\n iconName: 'magnifying-glass-dollar',\n icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104z\"]\n};\nvar faSearchDollar = faMagnifyingGlassDollar;\nvar faUsersGear = {\n prefix: 'fas',\n iconName: 'users-gear',\n icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160c44.2 0 80-35.8 80-80s-35.8-80-80-80S64 35.8 64 80s35.8 80 80 80zm368 0c44.2 0 80-35.8 80-80s-35.8-80-80-80s-80 35.8-80 80s35.8 80 80 80zM0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7H106.7C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2H261.3C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H455.2c-2.1-5.2-3.2-10.9-3.2-16.4v-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3v-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6v3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3L574.4 311c-8.9-7.6-19.1-13.6-30.4-17.6v-21c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9v21c-11.2 4-21.5 10-30.4 17.6l-18.2-10.5c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l18.2 10.5c-1 5.7-1.6 11.6-1.6 17.6s.6 11.9 1.6 17.5l-18.2 10.5c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3L449.6 457c8.9 7.6 19.2 13.6 30.4 17.6v21c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9v-21c11.2-4 21.5-10 30.4-17.6l18.2 10.5c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-18.2-10.5c1-5.7 1.6-11.6 1.6-17.5s-.6-11.9-1.6-17.6l18.2-10.5zM552 384c0 22.1-17.9 40-40 40s-40-17.9-40-40s17.9-40 40-40s40 17.9 40 40z\"]\n};\nvar faUsersCog = faUsersGear;\nvar faPersonMilitaryPointing = {\n prefix: 'fas',\n iconName: 'person-military-pointing',\n icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25H400c8.8 0 16-7.2 16-16V17.4C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H241.6c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40H224v89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5H240 72zm345.7 20.9L246.6 416H416V369.7l53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448v32c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V448H224z\"]\n};\nvar faBuildingColumns = {\n prefix: 'fas',\n iconName: 'building-columns',\n icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160v8c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24v-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8.1-3.4-17.2-3.4-25.2 0zM128 224H64V420.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512H480c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1V224H384V416H344V224H280V416H232V224H168V416H128V224zm128-96c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faBank = faBuildingColumns;\nvar faInstitution = faBuildingColumns;\nvar faMuseum = faBuildingColumns;\nvar faUniversity = faBuildingColumns;\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [640, 512, [], \"f0e9\", \"M320 0c17.7 0 32 14.3 32 32V49.7C483.8 63.4 589.7 161 605.9 285.9c2 15.6-17.3 24.4-27.8 12.7C564.1 283 536.8 272 512 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C391 299.5 358.7 272 320 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C199 299.5 166.7 272 128 272c-24.8 0-52.1 11-66.1 26.7c-10.5 11.7-29.8 2.9-27.8-12.7C50.3 161 156.2 63.4 288 49.7V32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2V430.6c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4V316.2c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nvar faTrowel = {\n prefix: 'fas',\n iconName: 'trowel',\n icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nvar faD = {\n prefix: 'fas',\n iconName: 'd',\n icon: [384, 512, [100], \"44\", \"M0 64C0 46.3 14.3 32 32 32H160c123.7 0 224 100.3 224 224s-100.3 224-224 224H32c-17.7 0-32-14.3-32-32V64zM64 96V416h96c88.4 0 160-71.6 160-160s-71.6-160-160-160H64z\"]\n};\nvar faStapler = {\n prefix: 'fas',\n iconName: 'stapler',\n icon: [640, 512, [], \"e5af\", \"M640 299.3V304 432c0 26.5-21.5 48-48 48H512 448 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H448V368H96c-17.7 0-32-14.3-32-32V219.4L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304V288L128 230.9V304H448z\"]\n};\nvar faMasksTheater = {\n prefix: 'fas',\n iconName: 'masks-theater',\n icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M399.3 509.7c-58.2-8.8-108.2-72.8-137.6-119.7c-20-31.9-25.1-70.3-19.6-107.7L266.3 118c1.4-9.8 5.1-19.2 12.9-25.2c20.2-15.6 72.4-41.5 185.1-24.5s155.2 57.4 170 78.3c5.7 8 6.5 18.1 5.1 27.9L615.2 338.8c-5.5 37.3-21.5 72.6-49.8 97.2c-41.7 36.1-108 82.5-166.1 73.7zm17.1-277.7c.1-.5 .2-1.1 .3-1.6c3.2-21.8-11.6-42-33.1-45.3s-41.5 11.8-44.7 33.5c-.1 .5-.1 1.1-.2 1.6c-.6 5.4 5.2 8.4 10.3 6.7c9-3 18.8-3.9 28.7-2.4s19.1 5.3 26.8 10.8c4.4 3.1 10.8 2 11.8-3.3zm112.6 22.2c4.4 3.1 10.8 2 11.8-3.3c.1-.5 .2-1.1 .3-1.6c3.2-21.8-11.6-42-33.1-45.3s-41.5 11.8-44.7 33.5c-.1 .5-.1 1.1-.2 1.6c-.6 5.4 5.2 8.4 10.3 6.7c9-3 18.8-3.9 28.7-2.4s19.1 5.3 26.8 10.8zm-11.5 85.2c-28.8 12.8-61.4 17.8-94.9 12.8s-63.2-19.5-87-40.3c-6.3-5.5-16.2-1.7-15.2 6.7c5.9 48.5 43 89.1 93 96.7s97.2-20.2 116.8-64.9c3.4-7.7-5-14.3-12.6-10.9zM240.7 446.9c-58.2 8.8-124.5-37.5-166.1-73.7c-28.3-24.5-44.3-59.8-49.8-97.2L.6 111.8C-.8 102 0 91.9 5.7 83.9C20.5 63 63 22.7 175.7 5.6s164.9 8.9 185.1 24.5c.9 .7 1.7 1.4 2.4 2.1c-52.8 4.8-85.1 21-103.6 35.3c-17 13.1-23 32-25 45.9L215.3 244.7c-2.6 .1-5.2 .4-7.9 .8c-35.2 5.3-61.8 32.7-68.2 66.3c-1.6 8.2 8.3 12.2 14.8 7c15.6-12.4 34.1-21.3 54.7-25.4c-3 38.4 4 78.7 25.9 113.6c6.9 11 15 23.1 24.2 35.4c-5.9 2.1-11.9 3.6-18 4.5zM174.1 157c-1-5.3-7.4-6.4-11.8-3.3c-7.7 5.5-16.8 9.3-26.8 10.8s-19.8 .6-28.7-2.4c-5.1-1.7-10.9 1.3-10.3 6.7c.1 .5 .1 1.1 .2 1.6c3.2 21.8 23.2 36.8 44.7 33.5s36.3-23.5 33.1-45.3c-.1-.5-.2-1.1-.3-1.6z\"]\n};\nvar faTheaterMasks = faMasksTheater;\nvar faKipSign = {\n prefix: 'fas',\n iconName: 'kip-sign',\n icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4V64c0-17.7-14.3-32-32-32S64 46.3 64 64V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V325.6L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H182.5L340.8 88.3z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0V96L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm-64-64c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H224zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32H352c88.4 0 160-71.6 160-160V226.3c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64v88c0 22.1 17.9 40 40 40s40-17.9 40-40V160c0-8.8 7.2-16 16-16s16 7.2 16 16v56c0 39.8-32.2 72-72 72z\"]\n};\nvar faHandshakeSimple = {\n prefix: 'fas',\n iconName: 'handshake-simple',\n icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48H48c-26.5 0-48 21.5-48 48V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nvar faHandshakeAlt = faHandshakeSimple;\nvar faJetFighter = {\n prefix: 'fas',\n iconName: 'jet-fighter',\n icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H280L384 192H500.4c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1H384L280 464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V320H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H82.7c8.5 0 16.6 3.4 22.6 9.4L160 192h32V48h-8c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faFighterJet = faJetFighter;\nvar faSquareShareNodes = {\n prefix: 'fas',\n iconName: 'square-share-nodes',\n icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faShareAltSquare = faSquareShareNodes;\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56V456c0 13.3 10.7 24 24 24H40c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H24zm88 0c-8.8 0-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H184zm96 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H280zM448 56V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H472c-13.3 0-24 10.7-24 24zm-64-8V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faPlusMinus = {\n prefix: 'fas',\n iconName: 'plus-minus',\n icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V144H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H160V320c0 17.7 14.3 32 32 32s32-14.3 32-32V208H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V32zM0 480c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nvar faVideoCamera = faVideo;\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nvar faMortarBoard = faGraduationCap;\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M224 24V80H168c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h56v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176h56c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H320V24c0-13.3-10.7-24-24-24H248c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nvar faPersonCircleCheck = {\n prefix: 'fas',\n iconName: 'person-circle-check',\n icon: [576, 512, [], \"e53e\", \"M208 48c0 26.5-21.5 48-48 48s-48-21.5-48-48s21.5-48 48-48s48 21.5 48 48zM152 352V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm424 16c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zm-76.7-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faTurnUp = {\n prefix: 'fas',\n iconName: 'turn-up',\n icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M178.3 5.7L40.3 143.7C35 149 32 156.2 32 163.7C32 179.3 44.7 192 60.3 192H144V400c0 8.8-7.2 16-16 16H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h96c61.9 0 112-50.1 112-112V192h83.7c15.6 0 28.3-12.7 28.3-28.3c0-7.5-3-14.7-8.3-20L205.7 5.7C202 2 197.1 0 192 0s-10 2-13.7 5.7z\"]\n};\nvar faLevelUpAlt = faTurnUp;\nvar icons = {\n fa0: fa0,\n fa1: fa1,\n fa2: fa2,\n fa3: fa3,\n fa4: fa4,\n fa5: fa5,\n fa6: fa6,\n fa7: fa7,\n fa8: fa8,\n fa9: fa9,\n faFillDrip: faFillDrip,\n faArrowsToCircle: faArrowsToCircle,\n faCircleChevronRight: faCircleChevronRight,\n faChevronCircleRight: faChevronCircleRight,\n faAt: faAt,\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faTextHeight: faTextHeight,\n faUserXmark: faUserXmark,\n faUserTimes: faUserTimes,\n faStethoscope: faStethoscope,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faInfo: faInfo,\n faDownLeftAndUpRightToCenter: faDownLeftAndUpRightToCenter,\n faCompressAlt: faCompressAlt,\n faExplosion: faExplosion,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faWaveSquare: faWaveSquare,\n faRing: faRing,\n faBuildingUn: faBuildingUn,\n faDiceThree: faDiceThree,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faAnchorCircleCheck: faAnchorCircleCheck,\n faBuildingCircleArrowRight: faBuildingCircleArrowRight,\n faVolleyball: faVolleyball,\n faVolleyballBall: faVolleyballBall,\n faArrowsUpToLine: faArrowsUpToLine,\n faSortDown: faSortDown,\n faSortDesc: faSortDesc,\n faCircleMinus: faCircleMinus,\n faMinusCircle: faMinusCircle,\n faDoorOpen: faDoorOpen,\n faRightFromBracket: faRightFromBracket,\n faSignOutAlt: faSignOutAlt,\n faAtom: faAtom,\n faSoap: faSoap,\n faIcons: faIcons,\n faHeartMusicCameraBolt: faHeartMusicCameraBolt,\n faMicrophoneLinesSlash: faMicrophoneLinesSlash,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faBridgeCircleCheck: faBridgeCircleCheck,\n faPumpMedical: faPumpMedical,\n faFingerprint: faFingerprint,\n faHandPointRight: faHandPointRight,\n faMagnifyingGlassLocation: faMagnifyingGlassLocation,\n faSearchLocation: faSearchLocation,\n faForwardStep: faForwardStep,\n faStepForward: faStepForward,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFlagCheckered: faFlagCheckered,\n faFootball: faFootball,\n faFootballBall: faFootballBall,\n faSchoolCircleExclamation: faSchoolCircleExclamation,\n faCrop: faCrop,\n faAnglesDown: faAnglesDown,\n faAngleDoubleDown: faAngleDoubleDown,\n faUsersRectangle: faUsersRectangle,\n faPeopleRoof: faPeopleRoof,\n faPeopleLine: faPeopleLine,\n faBeerMugEmpty: faBeerMugEmpty,\n faBeer: faBeer,\n faDiagramPredecessor: faDiagramPredecessor,\n faArrowUpLong: faArrowUpLong,\n faLongArrowUp: faLongArrowUp,\n faFireFlameSimple: faFireFlameSimple,\n faBurn: faBurn,\n faPerson: faPerson,\n faMale: faMale,\n faLaptop: faLaptop,\n faFileCsv: faFileCsv,\n faMenorah: faMenorah,\n faTruckPlane: faTruckPlane,\n faRecordVinyl: faRecordVinyl,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faBong: faBong,\n faSpaghettiMonsterFlying: faSpaghettiMonsterFlying,\n faPastafarianism: faPastafarianism,\n faArrowDownUpAcrossLine: faArrowDownUpAcrossLine,\n faSpoon: faSpoon,\n faUtensilSpoon: faUtensilSpoon,\n faJarWheat: faJarWheat,\n faEnvelopesBulk: faEnvelopesBulk,\n faMailBulk: faMailBulk,\n faFileCircleExclamation: faFileCircleExclamation,\n faCircleH: faCircleH,\n faHospitalSymbol: faHospitalSymbol,\n faPager: faPager,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faStrikethrough: faStrikethrough,\n faK: faK,\n faLandmarkFlag: faLandmarkFlag,\n faPencil: faPencil,\n faPencilAlt: faPencilAlt,\n faBackward: faBackward,\n faCaretRight: faCaretRight,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faCodePullRequest: faCodePullRequest,\n faClipboardList: faClipboardList,\n faTruckRampBox: faTruckRampBox,\n faTruckLoading: faTruckLoading,\n faUserCheck: faUserCheck,\n faVialVirus: faVialVirus,\n faSheetPlastic: faSheetPlastic,\n faBlog: faBlog,\n faUserNinja: faUserNinja,\n faPersonArrowUpFromLine: faPersonArrowUpFromLine,\n faScrollTorah: faScrollTorah,\n faTorah: faTorah,\n faBroomBall: faBroomBall,\n faQuidditch: faQuidditch,\n faQuidditchBroomBall: faQuidditchBroomBall,\n faToggleOff: faToggleOff,\n faBoxArchive: faBoxArchive,\n faArchive: faArchive,\n faPersonDrowning: faPersonDrowning,\n faArrowDown91: faArrowDown91,\n faSortNumericDesc: faSortNumericDesc,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faSprayCan: faSprayCan,\n faTruckMonster: faTruckMonster,\n faW: faW,\n faEarthAfrica: faEarthAfrica,\n faGlobeAfrica: faGlobeAfrica,\n faRainbow: faRainbow,\n faCircleNotch: faCircleNotch,\n faTabletScreenButton: faTabletScreenButton,\n faTabletAlt: faTabletAlt,\n faPaw: faPaw,\n faCloud: faCloud,\n faTrowelBricks: faTrowelBricks,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faHospitalUser: faHospitalUser,\n faTentArrowLeftRight: faTentArrowLeftRight,\n faGavel: faGavel,\n faLegal: faLegal,\n faBinoculars: faBinoculars,\n faMicrophoneSlash: faMicrophoneSlash,\n faBoxTissue: faBoxTissue,\n faMotorcycle: faMotorcycle,\n faBellConcierge: faBellConcierge,\n faConciergeBell: faConciergeBell,\n faPenRuler: faPenRuler,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleArrowsLeftRight: faPeopleArrowsLeftRight,\n faMarsAndVenusBurst: faMarsAndVenusBurst,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faScissors: faScissors,\n faCut: faCut,\n faSunPlantWilt: faSunPlantWilt,\n faToiletsPortable: faToiletsPortable,\n faHockeyPuck: faHockeyPuck,\n faTable: faTable,\n faMagnifyingGlassArrowRight: faMagnifyingGlassArrowRight,\n faTachographDigital: faTachographDigital,\n faDigitalTachograph: faDigitalTachograph,\n faUsersSlash: faUsersSlash,\n faClover: faClover,\n faReply: faReply,\n faMailReply: faMailReply,\n faStarAndCrescent: faStarAndCrescent,\n faHouseFire: faHouseFire,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faHelicopter: faHelicopter,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFileCircleQuestion: faFileCircleQuestion,\n faLaptopCode: faLaptopCode,\n faSwatchbook: faSwatchbook,\n faPrescriptionBottle: faPrescriptionBottle,\n faBars: faBars,\n faNavicon: faNavicon,\n faPeopleGroup: faPeopleGroup,\n faHourglassEnd: faHourglassEnd,\n faHourglass3: faHourglass3,\n faHeartCrack: faHeartCrack,\n faHeartBroken: faHeartBroken,\n faSquareUpRight: faSquareUpRight,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faFilm: faFilm,\n faRulerHorizontal: faRulerHorizontal,\n faPeopleRobbery: faPeopleRobbery,\n faLightbulb: faLightbulb,\n faCaretLeft: faCaretLeft,\n faCircleExclamation: faCircleExclamation,\n faExclamationCircle: faExclamationCircle,\n faSchoolCircleXmark: faSchoolCircleXmark,\n faArrowRightFromBracket: faArrowRightFromBracket,\n faSignOut: faSignOut,\n faCircleChevronDown: faCircleChevronDown,\n faChevronCircleDown: faChevronCircleDown,\n faUnlockKeyhole: faUnlockKeyhole,\n faUnlockAlt: faUnlockAlt,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faHeadphonesSimple: faHeadphonesSimple,\n faHeadphonesAlt: faHeadphonesAlt,\n faSitemap: faSitemap,\n faCircleDollarToSlot: faCircleDollarToSlot,\n faDonate: faDonate,\n faMemory: faMemory,\n faRoadSpikes: faRoadSpikes,\n faFireBurner: faFireBurner,\n faFlag: faFlag,\n faHanukiah: faHanukiah,\n faFeather: faFeather,\n faVolumeLow: faVolumeLow,\n faVolumeDown: faVolumeDown,\n faCommentSlash: faCommentSlash,\n faCloudSunRain: faCloudSunRain,\n faCompress: faCompress,\n faWheatAwn: faWheatAwn,\n faWheatAlt: faWheatAlt,\n faAnkh: faAnkh,\n faHandsHoldingChild: faHandsHoldingChild,\n faAsterisk: faAsterisk,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faPesetaSign: faPesetaSign,\n faHeading: faHeading,\n faHeader: faHeader,\n faGhost: faGhost,\n faList: faList,\n faListSquares: faListSquares,\n faSquarePhoneFlip: faSquarePhoneFlip,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faCartPlus: faCartPlus,\n faGamepad: faGamepad,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faEgg: faEgg,\n faHouseMedicalCircleXmark: faHouseMedicalCircleXmark,\n faCampground: faCampground,\n faFolderPlus: faFolderPlus,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPaintbrush: faPaintbrush,\n faPaintBrush: faPaintBrush,\n faLock: faLock,\n faGasPump: faGasPump,\n faHotTubPerson: faHotTubPerson,\n faHotTub: faHotTub,\n faMapLocation: faMapLocation,\n faMapMarked: faMapMarked,\n faHouseFloodWater: faHouseFloodWater,\n faTree: faTree,\n faBridgeLock: faBridgeLock,\n faSackDollar: faSackDollar,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faCarSide: faCarSide,\n faShareNodes: faShareNodes,\n faShareAlt: faShareAlt,\n faHeartCircleMinus: faHeartCircleMinus,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faMicroscope: faMicroscope,\n faSink: faSink,\n faBagShopping: faBagShopping,\n faShoppingBag: faShoppingBag,\n faArrowDownZA: faArrowDownZA,\n faSortAlphaDesc: faSortAlphaDesc,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faMitten: faMitten,\n faPersonRays: faPersonRays,\n faUsers: faUsers,\n faEyeSlash: faEyeSlash,\n faFlaskVial: faFlaskVial,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faOm: faOm,\n faWorm: faWorm,\n faHouseCircleXmark: faHouseCircleXmark,\n faPlug: faPlug,\n faChevronUp: faChevronUp,\n faHandSpock: faHandSpock,\n faStopwatch: faStopwatch,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faBridgeCircleXmark: faBridgeCircleXmark,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faEarDeaf: faEarDeaf,\n faDeaf: faDeaf,\n faDeafness: faDeafness,\n faHardOfHearing: faHardOfHearing,\n faRoadCircleCheck: faRoadCircleCheck,\n faDiceFive: faDiceFive,\n faSquareRss: faSquareRss,\n faRssSquare: faRssSquare,\n faLandMineOn: faLandMineOn,\n faICursor: faICursor,\n faStamp: faStamp,\n faStairs: faStairs,\n faI: faI,\n faHryvniaSign: faHryvniaSign,\n faHryvnia: faHryvnia,\n faPills: faPills,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faTooth: faTooth,\n faV: faV,\n faBangladeshiTakaSign: faBangladeshiTakaSign,\n faBicycle: faBicycle,\n faStaffSnake: faStaffSnake,\n faRodAsclepius: faRodAsclepius,\n faRodSnake: faRodSnake,\n faStaffAesculapius: faStaffAesculapius,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faTruckMedical: faTruckMedical,\n faAmbulance: faAmbulance,\n faWheatAwnCircleExclamation: faWheatAwnCircleExclamation,\n faSnowman: faSnowman,\n faMortarPestle: faMortarPestle,\n faRoadBarrier: faRoadBarrier,\n faSchool: faSchool,\n faIgloo: faIgloo,\n faJoint: faJoint,\n faAngleRight: faAngleRight,\n faHorse: faHorse,\n faQ: faQ,\n faG: faG,\n faNotesMedical: faNotesMedical,\n faTemperatureHalf: faTemperatureHalf,\n faTemperature2: faTemperature2,\n faThermometer2: faThermometer2,\n faThermometerHalf: faThermometerHalf,\n faDongSign: faDongSign,\n faCapsules: faCapsules,\n faPooStorm: faPooStorm,\n faPooBolt: faPooBolt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faMoneyBill: faMoneyBill,\n faBookmark: faBookmark,\n faAlignJustify: faAlignJustify,\n faUmbrellaBeach: faUmbrellaBeach,\n faHelmetUn: faHelmetUn,\n faBullseye: faBullseye,\n faBacon: faBacon,\n faHandPointDown: faHandPointDown,\n faArrowUpFromBracket: faArrowUpFromBracket,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faFileWaveform: faFileWaveform,\n faFileMedicalAlt: faFileMedicalAlt,\n faRadiation: faRadiation,\n faChartSimple: faChartSimple,\n faMarsStroke: faMarsStroke,\n faVial: faVial,\n faGauge: faGauge,\n faDashboard: faDashboard,\n faGaugeMed: faGaugeMed,\n faTachometerAltAverage: faTachometerAltAverage,\n faWandMagicSparkles: faWandMagicSparkles,\n faMagicWandSparkles: faMagicWandSparkles,\n faE: faE,\n faPenClip: faPenClip,\n faPenAlt: faPenAlt,\n faBridgeCircleExclamation: faBridgeCircleExclamation,\n faUser: faUser,\n faSchoolCircleCheck: faSchoolCircleCheck,\n faDumpster: faDumpster,\n faVanShuttle: faVanShuttle,\n faShuttleVan: faShuttleVan,\n faBuildingUser: faBuildingUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faHighlighter: faHighlighter,\n faKey: faKey,\n faBullhorn: faBullhorn,\n faGlobe: faGlobe,\n faSynagogue: faSynagogue,\n faPersonHalfDress: faPersonHalfDress,\n faRoadBridge: faRoadBridge,\n faLocationArrow: faLocationArrow,\n faC: faC,\n faTabletButton: faTabletButton,\n faBuildingLock: faBuildingLock,\n faPizzaSlice: faPizzaSlice,\n faMoneyBillWave: faMoneyBillWave,\n faChartArea: faChartArea,\n faAreaChart: faAreaChart,\n faHouseFlag: faHouseFlag,\n faPersonCircleMinus: faPersonCircleMinus,\n faBan: faBan,\n faCancel: faCancel,\n faCameraRotate: faCameraRotate,\n faSprayCanSparkles: faSprayCanSparkles,\n faAirFreshener: faAirFreshener,\n faStar: faStar,\n faRepeat: faRepeat,\n faCross: faCross,\n faBox: faBox,\n faVenusMars: faVenusMars,\n faArrowPointer: faArrowPointer,\n faMousePointer: faMousePointer,\n faMaximize: faMaximize,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faChargingStation: faChargingStation,\n faShapes: faShapes,\n faTriangleCircleSquare: faTriangleCircleSquare,\n faShuffle: faShuffle,\n faRandom: faRandom,\n faPersonRunning: faPersonRunning,\n faRunning: faRunning,\n faMobileRetro: faMobileRetro,\n faGripLinesVertical: faGripLinesVertical,\n faSpider: faSpider,\n faHandsBound: faHandsBound,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faPlaneCircleExclamation: faPlaneCircleExclamation,\n faXRay: faXRay,\n faSpellCheck: faSpellCheck,\n faSlash: faSlash,\n faComputerMouse: faComputerMouse,\n faMouse: faMouse,\n faArrowRightToBracket: faArrowRightToBracket,\n faSignIn: faSignIn,\n faShopSlash: faShopSlash,\n faStoreAltSlash: faStoreAltSlash,\n faServer: faServer,\n faVirusCovidSlash: faVirusCovidSlash,\n faShopLock: faShopLock,\n faHourglassStart: faHourglassStart,\n faHourglass1: faHourglass1,\n faBlenderPhone: faBlenderPhone,\n faBuildingWheat: faBuildingWheat,\n faPersonBreastfeeding: faPersonBreastfeeding,\n faRightToBracket: faRightToBracket,\n faSignInAlt: faSignInAlt,\n faVenus: faVenus,\n faPassport: faPassport,\n faHeartPulse: faHeartPulse,\n faHeartbeat: faHeartbeat,\n faPeopleCarryBox: faPeopleCarryBox,\n faPeopleCarry: faPeopleCarry,\n faTemperatureHigh: faTemperatureHigh,\n faMicrochip: faMicrochip,\n faCrown: faCrown,\n faWeightHanging: faWeightHanging,\n faXmarksLines: faXmarksLines,\n faFilePrescription: faFilePrescription,\n faWeightScale: faWeightScale,\n faWeight: faWeight,\n faUserGroup: faUserGroup,\n faUserFriends: faUserFriends,\n faArrowUpAZ: faArrowUpAZ,\n faSortAlphaUp: faSortAlphaUp,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faWheelchair: faWheelchair,\n faCircleArrowUp: faCircleArrowUp,\n faArrowCircleUp: faArrowCircleUp,\n faToggleOn: faToggleOn,\n faPersonWalking: faPersonWalking,\n faWalking: faWalking,\n faL: faL,\n faFire: faFire,\n faBedPulse: faBedPulse,\n faProcedures: faProcedures,\n faShuttleSpace: faShuttleSpace,\n faSpaceShuttle: faSpaceShuttle,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faHeartCirclePlus: faHeartCirclePlus,\n faCodeFork: faCodeFork,\n faCity: faCity,\n faMicrophoneLines: faMicrophoneLines,\n faMicrophoneAlt: faMicrophoneAlt,\n faPepperHot: faPepperHot,\n faUnlock: faUnlock,\n faColonSign: faColonSign,\n faHeadset: faHeadset,\n faStoreSlash: faStoreSlash,\n faRoadCircleXmark: faRoadCircleXmark,\n faUserMinus: faUserMinus,\n faMarsStrokeUp: faMarsStrokeUp,\n faMarsStrokeV: faMarsStrokeV,\n faChampagneGlasses: faChampagneGlasses,\n faGlassCheers: faGlassCheers,\n faClipboard: faClipboard,\n faHouseCircleExclamation: faHouseCircleExclamation,\n faFileArrowUp: faFileArrowUp,\n faFileUpload: faFileUpload,\n faWifi: faWifi,\n faWifi3: faWifi3,\n faWifiStrong: faWifiStrong,\n faBath: faBath,\n faBathtub: faBathtub,\n faUnderline: faUnderline,\n faUserPen: faUserPen,\n faUserEdit: faUserEdit,\n faSignature: faSignature,\n faStroopwafel: faStroopwafel,\n faBold: faBold,\n faAnchorLock: faAnchorLock,\n faBuildingNgo: faBuildingNgo,\n faManatSign: faManatSign,\n faNotEqual: faNotEqual,\n faBorderTopLeft: faBorderTopLeft,\n faBorderStyle: faBorderStyle,\n faMapLocationDot: faMapLocationDot,\n faMapMarkedAlt: faMapMarkedAlt,\n faJedi: faJedi,\n faSquarePollVertical: faSquarePollVertical,\n faPoll: faPoll,\n faMugHot: faMugHot,\n faCarBattery: faCarBattery,\n faBatteryCar: faBatteryCar,\n faGift: faGift,\n faDiceTwo: faDiceTwo,\n faChessQueen: faChessQueen,\n faGlasses: faGlasses,\n faChessBoard: faChessBoard,\n faBuildingCircleCheck: faBuildingCircleCheck,\n faPersonChalkboard: faPersonChalkboard,\n faMarsStrokeRight: faMarsStrokeRight,\n faMarsStrokeH: faMarsStrokeH,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faCloudShowersWater: faCloudShowersWater,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faHandsBubbles: faHandsBubbles,\n faHandsWash: faHandsWash,\n faLessThanEqual: faLessThanEqual,\n faTrain: faTrain,\n faEyeLowVision: faEyeLowVision,\n faLowVision: faLowVision,\n faCrow: faCrow,\n faSailboat: faSailboat,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faToriiGate: faToriiGate,\n faFrog: faFrog,\n faBucket: faBucket,\n faImage: faImage,\n faMicrophone: faMicrophone,\n faCow: faCow,\n faCaretUp: faCaretUp,\n faScrewdriver: faScrewdriver,\n faFolderClosed: faFolderClosed,\n faHouseTsunami: faHouseTsunami,\n faSquareNfi: faSquareNfi,\n faArrowUpFromGroundWater: faArrowUpFromGroundWater,\n faMartiniGlass: faMartiniGlass,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faRotateLeft: faRotateLeft,\n faRotateBack: faRotateBack,\n faRotateBackward: faRotateBackward,\n faUndoAlt: faUndoAlt,\n faTableColumns: faTableColumns,\n faColumns: faColumns,\n faLemon: faLemon,\n faHeadSideMask: faHeadSideMask,\n faHandshake: faHandshake,\n faGem: faGem,\n faDolly: faDolly,\n faDollyBox: faDollyBox,\n faSmoking: faSmoking,\n faMinimize: faMinimize,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faMonument: faMonument,\n faSnowplow: faSnowplow,\n faAnglesRight: faAnglesRight,\n faAngleDoubleRight: faAngleDoubleRight,\n faCannabis: faCannabis,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faTablets: faTablets,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faEur: faEur,\n faEuro: faEuro,\n faChair: faChair,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faCompassDrafting: faCompassDrafting,\n faDraftingCompass: faDraftingCompass,\n faPlateWheat: faPlateWheat,\n faIcicles: faIcicles,\n faPersonShelter: faPersonShelter,\n faNeuter: faNeuter,\n faIdBadge: faIdBadge,\n faMarker: faMarker,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faHelicopterSymbol: faHelicopterSymbol,\n faUniversalAccess: faUniversalAccess,\n faCircleChevronUp: faCircleChevronUp,\n faChevronCircleUp: faChevronCircleUp,\n faLariSign: faLariSign,\n faVolcano: faVolcano,\n faPersonWalkingDashedLineArrowRight: faPersonWalkingDashedLineArrowRight,\n faSterlingSign: faSterlingSign,\n faGbp: faGbp,\n faPoundSign: faPoundSign,\n faViruses: faViruses,\n faSquarePersonConfined: faSquarePersonConfined,\n faUserTie: faUserTie,\n faArrowDownLong: faArrowDownLong,\n faLongArrowDown: faLongArrowDown,\n faTentArrowDownToLine: faTentArrowDownToLine,\n faCertificate: faCertificate,\n faReplyAll: faReplyAll,\n faMailReplyAll: faMailReplyAll,\n faSuitcase: faSuitcase,\n faPersonSkating: faPersonSkating,\n faSkating: faSkating,\n faFilterCircleDollar: faFilterCircleDollar,\n faFunnelDollar: faFunnelDollar,\n faCameraRetro: faCameraRetro,\n faCircleArrowDown: faCircleArrowDown,\n faArrowCircleDown: faArrowCircleDown,\n faFileImport: faFileImport,\n faArrowRightToFile: faArrowRightToFile,\n faSquareArrowUpRight: faSquareArrowUpRight,\n faExternalLinkSquare: faExternalLinkSquare,\n faBoxOpen: faBoxOpen,\n faScroll: faScroll,\n faSpa: faSpa,\n faLocationPinLock: faLocationPinLock,\n faPause: faPause,\n faHillAvalanche: faHillAvalanche,\n faTemperatureEmpty: faTemperatureEmpty,\n faTemperature0: faTemperature0,\n faThermometer0: faThermometer0,\n faThermometerEmpty: faThermometerEmpty,\n faBomb: faBomb,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faScaleUnbalancedFlip: faScaleUnbalancedFlip,\n faBalanceScaleRight: faBalanceScaleRight,\n faSubscript: faSubscript,\n faDiamondTurnRight: faDiamondTurnRight,\n faDirections: faDirections,\n faBurst: faBurst,\n faHouseLaptop: faHouseLaptop,\n faLaptopHouse: faLaptopHouse,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faMoneyBills: faMoneyBills,\n faSmog: faSmog,\n faCrutch: faCrutch,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faCloudArrowUp: faCloudArrowUp,\n faCloudUpload: faCloudUpload,\n faCloudUploadAlt: faCloudUploadAlt,\n faPalette: faPalette,\n faArrowsTurnRight: faArrowsTurnRight,\n faVest: faVest,\n faFerry: faFerry,\n faArrowsDownToPeople: faArrowsDownToPeople,\n faSeedling: faSeedling,\n faSprout: faSprout,\n faLeftRight: faLeftRight,\n faArrowsAltH: faArrowsAltH,\n faBoxesPacking: faBoxesPacking,\n faCircleArrowLeft: faCircleArrowLeft,\n faArrowCircleLeft: faArrowCircleLeft,\n faGroupArrowsRotate: faGroupArrowsRotate,\n faBowlFood: faBowlFood,\n faCandyCane: faCandyCane,\n faArrowDownWideShort: faArrowDownWideShort,\n faSortAmountAsc: faSortAmountAsc,\n faSortAmountDown: faSortAmountDown,\n faCloudBolt: faCloudBolt,\n faThunderstorm: faThunderstorm,\n faTextSlash: faTextSlash,\n faRemoveFormat: faRemoveFormat,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faArrowsLeftRight: faArrowsLeftRight,\n faArrowsH: faArrowsH,\n faHouseLock: faHouseLock,\n faCloudArrowDown: faCloudArrowDown,\n faCloudDownload: faCloudDownload,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faChildren: faChildren,\n faChalkboard: faChalkboard,\n faBlackboard: faBlackboard,\n faUserLargeSlash: faUserLargeSlash,\n faUserAltSlash: faUserAltSlash,\n faEnvelopeOpen: faEnvelopeOpen,\n faHandshakeSimpleSlash: faHandshakeSimpleSlash,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faMattressPillow: faMattressPillow,\n faGuaraniSign: faGuaraniSign,\n faArrowsRotate: faArrowsRotate,\n faRefresh: faRefresh,\n faSync: faSync,\n faFireExtinguisher: faFireExtinguisher,\n faCruzeiroSign: faCruzeiroSign,\n faGreaterThanEqual: faGreaterThanEqual,\n faShieldHalved: faShieldHalved,\n faShieldAlt: faShieldAlt,\n faBookAtlas: faBookAtlas,\n faAtlas: faAtlas,\n faVirus: faVirus,\n faEnvelopeCircleCheck: faEnvelopeCircleCheck,\n faLayerGroup: faLayerGroup,\n faArrowsToDot: faArrowsToDot,\n faArchway: faArchway,\n faHeartCircleCheck: faHeartCircleCheck,\n faHouseChimneyCrack: faHouseChimneyCrack,\n faHouseDamage: faHouseDamage,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faMartiniGlassEmpty: faMartiniGlassEmpty,\n faGlassMartini: faGlassMartini,\n faCouch: faCouch,\n faCediSign: faCediSign,\n faItalic: faItalic,\n faChurch: faChurch,\n faCommentsDollar: faCommentsDollar,\n faDemocrat: faDemocrat,\n faZ: faZ,\n faPersonSkiing: faPersonSkiing,\n faSkiing: faSkiing,\n faRoadLock: faRoadLock,\n faA: faA,\n faTemperatureArrowDown: faTemperatureArrowDown,\n faTemperatureDown: faTemperatureDown,\n faFeatherPointed: faFeatherPointed,\n faFeatherAlt: faFeatherAlt,\n faP: faP,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faRectangleAd: faRectangleAd,\n faAd: faAd,\n faCircleArrowRight: faCircleArrowRight,\n faArrowCircleRight: faArrowCircleRight,\n faFilterCircleXmark: faFilterCircleXmark,\n faLocust: faLocust,\n faSort: faSort,\n faUnsorted: faUnsorted,\n faListOl: faListOl,\n faList12: faList12,\n faListNumeric: faListNumeric,\n faPersonDressBurst: faPersonDressBurst,\n faMoneyCheckDollar: faMoneyCheckDollar,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faVectorSquare: faVectorSquare,\n faBreadSlice: faBreadSlice,\n faLanguage: faLanguage,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faFilter: faFilter,\n faQuestion: faQuestion,\n faFileSignature: faFileSignature,\n faUpDownLeftRight: faUpDownLeftRight,\n faArrowsAlt: faArrowsAlt,\n faHouseChimneyUser: faHouseChimneyUser,\n faHandHoldingHeart: faHandHoldingHeart,\n faPuzzlePiece: faPuzzlePiece,\n faMoneyCheck: faMoneyCheck,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faCode: faCode,\n faWhiskeyGlass: faWhiskeyGlass,\n faGlassWhiskey: faGlassWhiskey,\n faBuildingCircleExclamation: faBuildingCircleExclamation,\n faMagnifyingGlassChart: faMagnifyingGlassChart,\n faArrowUpRightFromSquare: faArrowUpRightFromSquare,\n faExternalLink: faExternalLink,\n faCubesStacked: faCubesStacked,\n faWonSign: faWonSign,\n faKrw: faKrw,\n faWon: faWon,\n faVirusCovid: faVirusCovid,\n faAustralSign: faAustralSign,\n faF: faF,\n faLeaf: faLeaf,\n faRoad: faRoad,\n faTaxi: faTaxi,\n faCab: faCab,\n faPersonCirclePlus: faPersonCirclePlus,\n faChartPie: faChartPie,\n faPieChart: faPieChart,\n faBoltLightning: faBoltLightning,\n faSackXmark: faSackXmark,\n faFileExcel: faFileExcel,\n faFileContract: faFileContract,\n faFishFins: faFishFins,\n faBuildingFlag: faBuildingFlag,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faPoop: faPoop,\n faLocationPin: faLocationPin,\n faMapMarker: faMapMarker,\n faKaaba: faKaaba,\n faToiletPaper: faToiletPaper,\n faHelmetSafety: faHelmetSafety,\n faHardHat: faHardHat,\n faHatHard: faHatHard,\n faEject: faEject,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faPlaneCircleCheck: faPlaneCircleCheck,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faChartLine: faChartLine,\n faLineChart: faLineChart,\n faMaskVentilator: faMaskVentilator,\n faArrowRight: faArrowRight,\n faSignsPost: faSignsPost,\n faMapSigns: faMapSigns,\n faCashRegister: faCashRegister,\n faPersonCircleQuestion: faPersonCircleQuestion,\n faH: faH,\n faTarp: faTarp,\n faScrewdriverWrench: faScrewdriverWrench,\n faTools: faTools,\n faArrowsToEye: faArrowsToEye,\n faPlugCircleBolt: faPlugCircleBolt,\n faHeart: faHeart,\n faMarsAndVenus: faMarsAndVenus,\n faHouseUser: faHouseUser,\n faHomeUser: faHomeUser,\n faDumpsterFire: faDumpsterFire,\n faHouseCrack: faHouseCrack,\n faMartiniGlassCitrus: faMartiniGlassCitrus,\n faCocktail: faCocktail,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faBottleWater: faBottleWater,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faToiletPaperSlash: faToiletPaperSlash,\n faAppleWhole: faAppleWhole,\n faAppleAlt: faAppleAlt,\n faKitchenSet: faKitchenSet,\n faR: faR,\n faTemperatureQuarter: faTemperatureQuarter,\n faTemperature1: faTemperature1,\n faThermometer1: faThermometer1,\n faThermometerQuarter: faThermometerQuarter,\n faCube: faCube,\n faBitcoinSign: faBitcoinSign,\n faShieldDog: faShieldDog,\n faSolarPanel: faSolarPanel,\n faLockOpen: faLockOpen,\n faElevator: faElevator,\n faMoneyBillTransfer: faMoneyBillTransfer,\n faMoneyBillTrendUp: faMoneyBillTrendUp,\n faHouseFloodWaterCircleArrowRight: faHouseFloodWaterCircleArrowRight,\n faSquarePollHorizontal: faSquarePollHorizontal,\n faPollH: faPollH,\n faCircle: faCircle,\n faBackwardFast: faBackwardFast,\n faFastBackward: faFastBackward,\n faRecycle: faRecycle,\n faUserAstronaut: faUserAstronaut,\n faPlaneSlash: faPlaneSlash,\n faTrademark: faTrademark,\n faBasketball: faBasketball,\n faBasketballBall: faBasketballBall,\n faSatelliteDish: faSatelliteDish,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faMobileScreenButton: faMobileScreenButton,\n faMobileAlt: faMobileAlt,\n faVolumeHigh: faVolumeHigh,\n faVolumeUp: faVolumeUp,\n faUsersRays: faUsersRays,\n faWallet: faWallet,\n faClipboardCheck: faClipboardCheck,\n faFileAudio: faFileAudio,\n faBurger: faBurger,\n faHamburger: faHamburger,\n faWrench: faWrench,\n faBugs: faBugs,\n faRupeeSign: faRupeeSign,\n faRupee: faRupee,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faPlaneDeparture: faPlaneDeparture,\n faHandshakeSlash: faHandshakeSlash,\n faBookBookmark: faBookBookmark,\n faCodeBranch: faCodeBranch,\n faHatCowboy: faHatCowboy,\n faBridge: faBridge,\n faPhoneFlip: faPhoneFlip,\n faPhoneAlt: faPhoneAlt,\n faTruckFront: faTruckFront,\n faCat: faCat,\n faAnchorCircleExclamation: faAnchorCircleExclamation,\n faTruckField: faTruckField,\n faRoute: faRoute,\n faClipboardQuestion: faClipboardQuestion,\n faPanorama: faPanorama,\n faCommentMedical: faCommentMedical,\n faTeethOpen: faTeethOpen,\n faFileCircleMinus: faFileCircleMinus,\n faTags: faTags,\n faWineGlass: faWineGlass,\n faForwardFast: faForwardFast,\n faFastForward: faFastForward,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faSquareParking: faSquareParking,\n faParking: faParking,\n faHouseSignal: faHouseSignal,\n faBarsProgress: faBarsProgress,\n faTasksAlt: faTasksAlt,\n faFaucetDrip: faFaucetDrip,\n faCartFlatbed: faCartFlatbed,\n faDollyFlatbed: faDollyFlatbed,\n faBanSmoking: faBanSmoking,\n faSmokingBan: faSmokingBan,\n faTerminal: faTerminal,\n faMobileButton: faMobileButton,\n faHouseMedicalFlag: faHouseMedicalFlag,\n faBasketShopping: faBasketShopping,\n faShoppingBasket: faShoppingBasket,\n faTape: faTape,\n faBusSimple: faBusSimple,\n faBusAlt: faBusAlt,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faAudioDescription: faAudioDescription,\n faPersonMilitaryToPerson: faPersonMilitaryToPerson,\n faFileShield: faFileShield,\n faUserSlash: faUserSlash,\n faPen: faPen,\n faTowerObservation: faTowerObservation,\n faFileCode: faFileCode,\n faSignal: faSignal,\n faSignal5: faSignal5,\n faSignalPerfect: faSignalPerfect,\n faBus: faBus,\n faHeartCircleXmark: faHeartCircleXmark,\n faHouseChimney: faHouseChimney,\n faHomeLg: faHomeLg,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faPrescription: faPrescription,\n faShop: faShop,\n faStoreAlt: faStoreAlt,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faVihara: faVihara,\n faScaleUnbalanced: faScaleUnbalanced,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faSortUp: faSortUp,\n faSortAsc: faSortAsc,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faPlantWilt: faPlantWilt,\n faDiamond: faDiamond,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandHoldingDollar: faHandHoldingDollar,\n faHandHoldingUsd: faHandHoldingUsd,\n faBacterium: faBacterium,\n faHandPointer: faHandPointer,\n faDrumSteelpan: faDrumSteelpan,\n faHandScissors: faHandScissors,\n faHandsPraying: faHandsPraying,\n faPrayingHands: faPrayingHands,\n faArrowRotateRight: faArrowRotateRight,\n faArrowRightRotate: faArrowRightRotate,\n faArrowRotateForward: faArrowRotateForward,\n faRedo: faRedo,\n faBiohazard: faBiohazard,\n faLocationCrosshairs: faLocationCrosshairs,\n faLocation: faLocation,\n faMarsDouble: faMarsDouble,\n faChildDress: faChildDress,\n faUsersBetweenLines: faUsersBetweenLines,\n faLungsVirus: faLungsVirus,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faPhone: faPhone,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faChildReaching: faChildReaching,\n faHeadSideVirus: faHeadSideVirus,\n faUserGear: faUserGear,\n faUserCog: faUserCog,\n faArrowUp19: faArrowUp19,\n faSortNumericUp: faSortNumericUp,\n faDoorClosed: faDoorClosed,\n faShieldVirus: faShieldVirus,\n faDiceSix: faDiceSix,\n faMosquitoNet: faMosquitoNet,\n faBridgeWater: faBridgeWater,\n faPersonBooth: faPersonBooth,\n faTextWidth: faTextWidth,\n faHatWizard: faHatWizard,\n faPenFancy: faPenFancy,\n faPersonDigging: faPersonDigging,\n faDigging: faDigging,\n faTrash: faTrash,\n faGaugeSimple: faGaugeSimple,\n faGaugeSimpleMed: faGaugeSimpleMed,\n faTachometerAverage: faTachometerAverage,\n faBookMedical: faBookMedical,\n faPoo: faPoo,\n faQuoteRight: faQuoteRight,\n faQuoteRightAlt: faQuoteRightAlt,\n faShirt: faShirt,\n faTShirt: faTShirt,\n faTshirt: faTshirt,\n faCubes: faCubes,\n faDivide: faDivide,\n faTengeSign: faTengeSign,\n faTenge: faTenge,\n faHeadphones: faHeadphones,\n faHandsHolding: faHandsHolding,\n faHandsClapping: faHandsClapping,\n faRepublican: faRepublican,\n faArrowLeft: faArrowLeft,\n faPersonCircleXmark: faPersonCircleXmark,\n faRuler: faRuler,\n faAlignLeft: faAlignLeft,\n faDiceD6: faDiceD6,\n faRestroom: faRestroom,\n faJ: faJ,\n faUsersViewfinder: faUsersViewfinder,\n faFileVideo: faFileVideo,\n faUpRightFromSquare: faUpRightFromSquare,\n faExternalLinkAlt: faExternalLinkAlt,\n faTableCells: faTableCells,\n faTh: faTh,\n faFilePdf: faFilePdf,\n faBookBible: faBookBible,\n faBible: faBible,\n faO: faO,\n faSuitcaseMedical: faSuitcaseMedical,\n faMedkit: faMedkit,\n faUserSecret: faUserSecret,\n faOtter: faOtter,\n faPersonDress: faPersonDress,\n faFemale: faFemale,\n faCommentDollar: faCommentDollar,\n faBusinessTime: faBusinessTime,\n faBriefcaseClock: faBriefcaseClock,\n faTableCellsLarge: faTableCellsLarge,\n faThLarge: faThLarge,\n faBookTanakh: faBookTanakh,\n faTanakh: faTanakh,\n faPhoneVolume: faPhoneVolume,\n faVolumeControlPhone: faVolumeControlPhone,\n faHatCowboySide: faHatCowboySide,\n faClipboardUser: faClipboardUser,\n faChild: faChild,\n faLiraSign: faLiraSign,\n faSatellite: faSatellite,\n faPlaneLock: faPlaneLock,\n faTag: faTag,\n faComment: faComment,\n faCakeCandles: faCakeCandles,\n faBirthdayCake: faBirthdayCake,\n faCake: faCake,\n faEnvelope: faEnvelope,\n faAnglesUp: faAnglesUp,\n faAngleDoubleUp: faAngleDoubleUp,\n faPaperclip: faPaperclip,\n faArrowRightToCity: faArrowRightToCity,\n faRibbon: faRibbon,\n faLungs: faLungs,\n faArrowUp91: faArrowUp91,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faLitecoinSign: faLitecoinSign,\n faBorderNone: faBorderNone,\n faCircleNodes: faCircleNodes,\n faParachuteBox: faParachuteBox,\n faIndent: faIndent,\n faTruckFieldUn: faTruckFieldUn,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faMountain: faMountain,\n faUserDoctor: faUserDoctor,\n faUserMd: faUserMd,\n faCircleInfo: faCircleInfo,\n faInfoCircle: faInfoCircle,\n faCloudMeatball: faCloudMeatball,\n faCamera: faCamera,\n faCameraAlt: faCameraAlt,\n faSquareVirus: faSquareVirus,\n faMeteor: faMeteor,\n faCarOn: faCarOn,\n faSleigh: faSleigh,\n faArrowDown19: faArrowDown19,\n faSortNumericAsc: faSortNumericAsc,\n faSortNumericDown: faSortNumericDown,\n faHandHoldingDroplet: faHandHoldingDroplet,\n faHandHoldingWater: faHandHoldingWater,\n faWater: faWater,\n faCalendarCheck: faCalendarCheck,\n faBraille: faBraille,\n faPrescriptionBottleMedical: faPrescriptionBottleMedical,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faLandmark: faLandmark,\n faTruck: faTruck,\n faCrosshairs: faCrosshairs,\n faPersonCane: faPersonCane,\n faTent: faTent,\n faVestPatches: faVestPatches,\n faCheckDouble: faCheckDouble,\n faArrowDownAZ: faArrowDownAZ,\n faSortAlphaAsc: faSortAlphaAsc,\n faSortAlphaDown: faSortAlphaDown,\n faMoneyBillWheat: faMoneyBillWheat,\n faCookie: faCookie,\n faArrowRotateLeft: faArrowRotateLeft,\n faArrowLeftRotate: faArrowLeftRotate,\n faArrowRotateBack: faArrowRotateBack,\n faArrowRotateBackward: faArrowRotateBackward,\n faUndo: faUndo,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faDumbbell: faDumbbell,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faTarpDroplet: faTarpDroplet,\n faHouseMedicalCircleCheck: faHouseMedicalCircleCheck,\n faPersonSkiingNordic: faPersonSkiingNordic,\n faSkiingNordic: faSkiingNordic,\n faCalendarPlus: faCalendarPlus,\n faPlaneArrival: faPlaneArrival,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faTrainSubway: faTrainSubway,\n faSubway: faSubway,\n faChartGantt: faChartGantt,\n faIndianRupeeSign: faIndianRupeeSign,\n faIndianRupee: faIndianRupee,\n faInr: faInr,\n faCropSimple: faCropSimple,\n faCropAlt: faCropAlt,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faLeftLong: faLeftLong,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faDna: faDna,\n faVirusSlash: faVirusSlash,\n faMinus: faMinus,\n faSubtract: faSubtract,\n faChess: faChess,\n faArrowLeftLong: faArrowLeftLong,\n faLongArrowLeft: faLongArrowLeft,\n faPlugCircleCheck: faPlugCircleCheck,\n faStreetView: faStreetView,\n faFrancSign: faFrancSign,\n faVolumeOff: faVolumeOff,\n faHandsAslInterpreting: faHandsAslInterpreting,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAslInterpreting: faAslInterpreting,\n faHandsAmericanSignLanguageInterpreting: faHandsAmericanSignLanguageInterpreting,\n faGear: faGear,\n faCog: faCog,\n faDropletSlash: faDropletSlash,\n faTintSlash: faTintSlash,\n faMosque: faMosque,\n faMosquito: faMosquito,\n faStarOfDavid: faStarOfDavid,\n faPersonMilitaryRifle: faPersonMilitaryRifle,\n faCartShopping: faCartShopping,\n faShoppingCart: faShoppingCart,\n faVials: faVials,\n faPlugCirclePlus: faPlugCirclePlus,\n faPlaceOfWorship: faPlaceOfWorship,\n faGripVertical: faGripVertical,\n faArrowTurnUp: faArrowTurnUp,\n faLevelUp: faLevelUp,\n faU: faU,\n faSquareRootVariable: faSquareRootVariable,\n faSquareRootAlt: faSquareRootAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faBackwardStep: faBackwardStep,\n faStepBackward: faStepBackward,\n faPallet: faPallet,\n faFaucet: faFaucet,\n faBaseballBatBall: faBaseballBatBall,\n faS: faS,\n faTimeline: faTimeline,\n faKeyboard: faKeyboard,\n faCaretDown: faCaretDown,\n faHouseChimneyMedical: faHouseChimneyMedical,\n faClinicMedical: faClinicMedical,\n faTemperatureThreeQuarters: faTemperatureThreeQuarters,\n faTemperature3: faTemperature3,\n faThermometer3: faThermometer3,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faMobileScreen: faMobileScreen,\n faMobileAndroidAlt: faMobileAndroidAlt,\n faPlaneUp: faPlaneUp,\n faPiggyBank: faPiggyBank,\n faBatteryHalf: faBatteryHalf,\n faBattery3: faBattery3,\n faMountainCity: faMountainCity,\n faCoins: faCoins,\n faKhanda: faKhanda,\n faSliders: faSliders,\n faSlidersH: faSlidersH,\n faFolderTree: faFolderTree,\n faNetworkWired: faNetworkWired,\n faMapPin: faMapPin,\n faHamsa: faHamsa,\n faCentSign: faCentSign,\n faFlask: faFlask,\n faPersonPregnant: faPersonPregnant,\n faWandSparkles: faWandSparkles,\n faEllipsisVertical: faEllipsisVertical,\n faEllipsisV: faEllipsisV,\n faTicket: faTicket,\n faPowerOff: faPowerOff,\n faRightLong: faRightLong,\n faLongArrowAltRight: faLongArrowAltRight,\n faFlagUsa: faFlagUsa,\n faLaptopFile: faLaptopFile,\n faTty: faTty,\n faTeletype: faTeletype,\n faDiagramNext: faDiagramNext,\n faPersonRifle: faPersonRifle,\n faHouseMedicalCircleExclamation: faHouseMedicalCircleExclamation,\n faClosedCaptioning: faClosedCaptioning,\n faPersonHiking: faPersonHiking,\n faHiking: faHiking,\n faVenusDouble: faVenusDouble,\n faImages: faImages,\n faCalculator: faCalculator,\n faPeoplePulling: faPeoplePulling,\n faN: faN,\n faCableCar: faCableCar,\n faTram: faTram,\n faCloudRain: faCloudRain,\n faBuildingCircleXmark: faBuildingCircleXmark,\n faShip: faShip,\n faArrowsDownToLine: faArrowsDownToLine,\n faDownload: faDownload,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faDeleteLeft: faDeleteLeft,\n faBackspace: faBackspace,\n faEyeDropper: faEyeDropper,\n faEyeDropperEmpty: faEyeDropperEmpty,\n faEyedropper: faEyedropper,\n faFileCircleCheck: faFileCircleCheck,\n faForward: faForward,\n faMobile: faMobile,\n faMobileAndroid: faMobileAndroid,\n faMobilePhone: faMobilePhone,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faAlignCenter: faAlignCenter,\n faBookSkull: faBookSkull,\n faBookDead: faBookDead,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faOutdent: faOutdent,\n faDedent: faDedent,\n faHeartCircleExclamation: faHeartCircleExclamation,\n faHouse: faHouse,\n faHome: faHome,\n faHomeAlt: faHomeAlt,\n faHomeLgAlt: faHomeLgAlt,\n faCalendarWeek: faCalendarWeek,\n faLaptopMedical: faLaptopMedical,\n faB: faB,\n faFileMedical: faFileMedical,\n faDiceOne: faDiceOne,\n faKiwiBird: faKiwiBird,\n faArrowRightArrowLeft: faArrowRightArrowLeft,\n faExchange: faExchange,\n faRotateRight: faRotateRight,\n faRedoAlt: faRedoAlt,\n faRotateForward: faRotateForward,\n faUtensils: faUtensils,\n faCutlery: faCutlery,\n faArrowUpWideShort: faArrowUpWideShort,\n faSortAmountUp: faSortAmountUp,\n faMillSign: faMillSign,\n faBowlRice: faBowlRice,\n faSkull: faSkull,\n faTowerBroadcast: faTowerBroadcast,\n faBroadcastTower: faBroadcastTower,\n faTruckPickup: faTruckPickup,\n faUpLong: faUpLong,\n faLongArrowAltUp: faLongArrowAltUp,\n faStop: faStop,\n faCodeMerge: faCodeMerge,\n faUpload: faUpload,\n faHurricane: faHurricane,\n faMound: faMound,\n faToiletPortable: faToiletPortable,\n faCompactDisc: faCompactDisc,\n faFileArrowDown: faFileArrowDown,\n faFileDownload: faFileDownload,\n faCaravan: faCaravan,\n faShieldCat: faShieldCat,\n faBolt: faBolt,\n faZap: faZap,\n faGlassWater: faGlassWater,\n faOilWell: faOilWell,\n faVault: faVault,\n faMars: faMars,\n faToilet: faToilet,\n faPlaneCircleXmark: faPlaneCircleXmark,\n faYenSign: faYenSign,\n faCny: faCny,\n faJpy: faJpy,\n faRmb: faRmb,\n faYen: faYen,\n faRubleSign: faRubleSign,\n faRouble: faRouble,\n faRub: faRub,\n faRuble: faRuble,\n faSun: faSun,\n faGuitar: faGuitar,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faHorseHead: faHorseHead,\n faBoreHole: faBoreHole,\n faIndustry: faIndustry,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowsTurnToDots: faArrowsTurnToDots,\n faFlorinSign: faFlorinSign,\n faArrowDownShortWide: faArrowDownShortWide,\n faSortAmountDesc: faSortAmountDesc,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faLessThan: faLessThan,\n faAngleDown: faAngleDown,\n faCarTunnel: faCarTunnel,\n faHeadSideCough: faHeadSideCough,\n faGripLines: faGripLines,\n faThumbsDown: faThumbsDown,\n faUserLock: faUserLock,\n faArrowRightLong: faArrowRightLong,\n faLongArrowRight: faLongArrowRight,\n faAnchorCircleXmark: faAnchorCircleXmark,\n faEllipsis: faEllipsis,\n faEllipsisH: faEllipsisH,\n faChessPawn: faChessPawn,\n faKitMedical: faKitMedical,\n faFirstAid: faFirstAid,\n faPersonThroughWindow: faPersonThroughWindow,\n faToolbox: faToolbox,\n faHandsHoldingCircle: faHandsHoldingCircle,\n faBug: faBug,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faCar: faCar,\n faAutomobile: faAutomobile,\n faHandHoldingHand: faHandHoldingHand,\n faBookOpenReader: faBookOpenReader,\n faBookReader: faBookReader,\n faMountainSun: faMountainSun,\n faArrowsLeftRightToLine: faArrowsLeftRightToLine,\n faDiceD20: faDiceD20,\n faTruckDroplet: faTruckDroplet,\n faFileCircleXmark: faFileCircleXmark,\n faTemperatureArrowUp: faTemperatureArrowUp,\n faTemperatureUp: faTemperatureUp,\n faMedal: faMedal,\n faBed: faBed,\n faSquareH: faSquareH,\n faHSquare: faHSquare,\n faPodcast: faPodcast,\n faTemperatureFull: faTemperatureFull,\n faTemperature4: faTemperature4,\n faThermometer4: faThermometer4,\n faThermometerFull: faThermometerFull,\n faBell: faBell,\n faSuperscript: faSuperscript,\n faPlugCircleXmark: faPlugCircleXmark,\n faStarOfLife: faStarOfLife,\n faPhoneSlash: faPhoneSlash,\n faPaintRoller: faPaintRoller,\n faHandshakeAngle: faHandshakeAngle,\n faHandsHelping: faHandsHelping,\n faLocationDot: faLocationDot,\n faMapMarkerAlt: faMapMarkerAlt,\n faFile: faFile,\n faGreaterThan: faGreaterThan,\n faPersonSwimming: faPersonSwimming,\n faSwimmer: faSwimmer,\n faArrowDown: faArrowDown,\n faDroplet: faDroplet,\n faTint: faTint,\n faEraser: faEraser,\n faEarthAmericas: faEarthAmericas,\n faEarth: faEarth,\n faEarthAmerica: faEarthAmerica,\n faGlobeAmericas: faGlobeAmericas,\n faPersonBurst: faPersonBurst,\n faDove: faDove,\n faBatteryEmpty: faBatteryEmpty,\n faBattery0: faBattery0,\n faSocks: faSocks,\n faInbox: faInbox,\n faSection: faSection,\n faGaugeHigh: faGaugeHigh,\n faTachometerAlt: faTachometerAlt,\n faTachometerAltFast: faTachometerAltFast,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faWineBottle: faWineBottle,\n faChessRook: faChessRook,\n faBarsStaggered: faBarsStaggered,\n faReorder: faReorder,\n faStream: faStream,\n faDharmachakra: faDharmachakra,\n faHotdog: faHotdog,\n faPersonWalkingWithCane: faPersonWalkingWithCane,\n faBlind: faBlind,\n faDrum: faDrum,\n faIceCream: faIceCream,\n faHeartCircleBolt: faHeartCircleBolt,\n faFax: faFax,\n faParagraph: faParagraph,\n faCheckToSlot: faCheckToSlot,\n faVoteYea: faVoteYea,\n faStarHalf: faStarHalf,\n faBoxesStacked: faBoxesStacked,\n faBoxes: faBoxes,\n faBoxesAlt: faBoxesAlt,\n faLink: faLink,\n faChain: faChain,\n faEarListen: faEarListen,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faTreeCity: faTreeCity,\n faPlay: faPlay,\n faFont: faFont,\n faRupiahSign: faRupiahSign,\n faMagnifyingGlass: faMagnifyingGlass,\n faSearch: faSearch,\n faTableTennisPaddleBall: faTableTennisPaddleBall,\n faPingPongPaddleBall: faPingPongPaddleBall,\n faTableTennis: faTableTennis,\n faPersonDotsFromLine: faPersonDotsFromLine,\n faDiagnoses: faDiagnoses,\n faTrashCanArrowUp: faTrashCanArrowUp,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faNairaSign: faNairaSign,\n faCartArrowDown: faCartArrowDown,\n faWalkieTalkie: faWalkieTalkie,\n faFilePen: faFilePen,\n faFileEdit: faFileEdit,\n faReceipt: faReceipt,\n faSquarePen: faSquarePen,\n faPenSquare: faPenSquare,\n faPencilSquare: faPencilSquare,\n faSuitcaseRolling: faSuitcaseRolling,\n faPersonCircleExclamation: faPersonCircleExclamation,\n faChevronDown: faChevronDown,\n faBatteryFull: faBatteryFull,\n faBattery: faBattery,\n faBattery5: faBattery5,\n faSkullCrossbones: faSkullCrossbones,\n faCodeCompare: faCodeCompare,\n faListUl: faListUl,\n faListDots: faListDots,\n faSchoolLock: faSchoolLock,\n faTowerCell: faTowerCell,\n faDownLong: faDownLong,\n faLongArrowAltDown: faLongArrowAltDown,\n faRankingStar: faRankingStar,\n faChessKing: faChessKing,\n faPersonHarassing: faPersonHarassing,\n faBrazilianRealSign: faBrazilianRealSign,\n faLandmarkDome: faLandmarkDome,\n faLandmarkAlt: faLandmarkAlt,\n faArrowUp: faArrowUp,\n faTv: faTv,\n faTelevision: faTelevision,\n faTvAlt: faTvAlt,\n faShrimp: faShrimp,\n faListCheck: faListCheck,\n faTasks: faTasks,\n faJugDetergent: faJugDetergent,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faUserShield: faUserShield,\n faWind: faWind,\n faCarBurst: faCarBurst,\n faCarCrash: faCarCrash,\n faY: faY,\n faPersonSnowboarding: faPersonSnowboarding,\n faSnowboarding: faSnowboarding,\n faTruckFast: faTruckFast,\n faShippingFast: faShippingFast,\n faFish: faFish,\n faUserGraduate: faUserGraduate,\n faCircleHalfStroke: faCircleHalfStroke,\n faAdjust: faAdjust,\n faClapperboard: faClapperboard,\n faCircleRadiation: faCircleRadiation,\n faRadiationAlt: faRadiationAlt,\n faBaseball: faBaseball,\n faBaseballBall: faBaseballBall,\n faJetFighterUp: faJetFighterUp,\n faDiagramProject: faDiagramProject,\n faProjectDiagram: faProjectDiagram,\n faCopy: faCopy,\n faVolumeXmark: faVolumeXmark,\n faVolumeMute: faVolumeMute,\n faVolumeTimes: faVolumeTimes,\n faHandSparkles: faHandSparkles,\n faGrip: faGrip,\n faGripHorizontal: faGripHorizontal,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faChildCombatant: faChildCombatant,\n faChildRifle: faChildRifle,\n faGun: faGun,\n faSquarePhone: faSquarePhone,\n faPhoneSquare: faPhoneSquare,\n faPlus: faPlus,\n faAdd: faAdd,\n faExpand: faExpand,\n faComputer: faComputer,\n faXmark: faXmark,\n faClose: faClose,\n faMultiply: faMultiply,\n faRemove: faRemove,\n faTimes: faTimes,\n faArrowsUpDownLeftRight: faArrowsUpDownLeftRight,\n faArrows: faArrows,\n faChalkboardUser: faChalkboardUser,\n faChalkboardTeacher: faChalkboardTeacher,\n faPesoSign: faPesoSign,\n faBuildingShield: faBuildingShield,\n faBaby: faBaby,\n faUsersLine: faUsersLine,\n faQuoteLeft: faQuoteLeft,\n faQuoteLeftAlt: faQuoteLeftAlt,\n faTractor: faTractor,\n faTrashArrowUp: faTrashArrowUp,\n faTrashRestore: faTrashRestore,\n faArrowDownUpLock: faArrowDownUpLock,\n faLinesLeaning: faLinesLeaning,\n faRulerCombined: faRulerCombined,\n faCopyright: faCopyright,\n faEquals: faEquals,\n faBlender: faBlender,\n faTeeth: faTeeth,\n faShekelSign: faShekelSign,\n faIls: faIls,\n faShekel: faShekel,\n faSheqel: faSheqel,\n faSheqelSign: faSheqelSign,\n faMap: faMap,\n faRocket: faRocket,\n faPhotoFilm: faPhotoFilm,\n faPhotoVideo: faPhotoVideo,\n faFolderMinus: faFolderMinus,\n faStore: faStore,\n faArrowTrendUp: faArrowTrendUp,\n faPlugCircleMinus: faPlugCircleMinus,\n faSignHanging: faSignHanging,\n faSign: faSign,\n faBezierCurve: faBezierCurve,\n faBellSlash: faBellSlash,\n faTablet: faTablet,\n faTabletAndroid: faTabletAndroid,\n faSchoolFlag: faSchoolFlag,\n faFill: faFill,\n faAngleUp: faAngleUp,\n faDrumstickBite: faDrumstickBite,\n faHollyBerry: faHollyBerry,\n faChevronLeft: faChevronLeft,\n faBacteria: faBacteria,\n faHandLizard: faHandLizard,\n faNotdef: faNotdef,\n faDisease: faDisease,\n faBriefcaseMedical: faBriefcaseMedical,\n faGenderless: faGenderless,\n faChevronRight: faChevronRight,\n faRetweet: faRetweet,\n faCarRear: faCarRear,\n faCarAlt: faCarAlt,\n faPumpSoap: faPumpSoap,\n faVideoSlash: faVideoSlash,\n faBatteryQuarter: faBatteryQuarter,\n faBattery2: faBattery2,\n faRadio: faRadio,\n faBabyCarriage: faBabyCarriage,\n faCarriageBaby: faCarriageBaby,\n faTrafficLight: faTrafficLight,\n faThermometer: faThermometer,\n faVrCardboard: faVrCardboard,\n faHandMiddleFinger: faHandMiddleFinger,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faTruckMoving: faTruckMoving,\n faGlassWaterDroplet: faGlassWaterDroplet,\n faDisplay: faDisplay,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faThumbtack: faThumbtack,\n faThumbTack: faThumbTack,\n faTrophy: faTrophy,\n faPersonPraying: faPersonPraying,\n faPray: faPray,\n faHammer: faHammer,\n faHandPeace: faHandPeace,\n faRotate: faRotate,\n faSyncAlt: faSyncAlt,\n faSpinner: faSpinner,\n faRobot: faRobot,\n faPeace: faPeace,\n faGears: faGears,\n faCogs: faCogs,\n faWarehouse: faWarehouse,\n faArrowUpRightDots: faArrowUpRightDots,\n faSplotch: faSplotch,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faDiceFour: faDiceFour,\n faSimCard: faSimCard,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faMercury: faMercury,\n faArrowTurnDown: faArrowTurnDown,\n faLevelDown: faLevelDown,\n faPersonFallingBurst: faPersonFallingBurst,\n faAward: faAward,\n faTicketSimple: faTicketSimple,\n faTicketAlt: faTicketAlt,\n faBuilding: faBuilding,\n faAnglesLeft: faAnglesLeft,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faQrcode: faQrcode,\n faClockRotateLeft: faClockRotateLeft,\n faHistory: faHistory,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faFileExport: faFileExport,\n faArrowRightFromFile: faArrowRightFromFile,\n faShield: faShield,\n faShieldBlank: faShieldBlank,\n faArrowUpShortWide: faArrowUpShortWide,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faHouseMedical: faHouseMedical,\n faGolfBallTee: faGolfBallTee,\n faGolfBall: faGolfBall,\n faCircleChevronLeft: faCircleChevronLeft,\n faChevronCircleLeft: faChevronCircleLeft,\n faHouseChimneyWindow: faHouseChimneyWindow,\n faPenNib: faPenNib,\n faTentArrowTurnLeft: faTentArrowTurnLeft,\n faTents: faTents,\n faWandMagic: faWandMagic,\n faMagic: faMagic,\n faDog: faDog,\n faCarrot: faCarrot,\n faMoon: faMoon,\n faWineGlassEmpty: faWineGlassEmpty,\n faWineGlassAlt: faWineGlassAlt,\n faCheese: faCheese,\n faYinYang: faYinYang,\n faMusic: faMusic,\n faCodeCommit: faCodeCommit,\n faTemperatureLow: faTemperatureLow,\n faPersonBiking: faPersonBiking,\n faBiking: faBiking,\n faBroom: faBroom,\n faShieldHeart: faShieldHeart,\n faGopuram: faGopuram,\n faEarthOceania: faEarthOceania,\n faGlobeOceania: faGlobeOceania,\n faSquareXmark: faSquareXmark,\n faTimesSquare: faTimesSquare,\n faXmarkSquare: faXmarkSquare,\n faHashtag: faHashtag,\n faUpRightAndDownLeftFromCenter: faUpRightAndDownLeftFromCenter,\n faExpandAlt: faExpandAlt,\n faOilCan: faOilCan,\n faT: faT,\n faHippo: faHippo,\n faChartColumn: faChartColumn,\n faInfinity: faInfinity,\n faVialCircleCheck: faVialCircleCheck,\n faPersonArrowDownToLine: faPersonArrowDownToLine,\n faVoicemail: faVoicemail,\n faFan: faFan,\n faPersonWalkingLuggage: faPersonWalkingLuggage,\n faUpDown: faUpDown,\n faArrowsAltV: faArrowsAltV,\n faCloudMoonRain: faCloudMoonRain,\n faCalendar: faCalendar,\n faTrailer: faTrailer,\n faBahai: faBahai,\n faHaykal: faHaykal,\n faSdCard: faSdCard,\n faDragon: faDragon,\n faShoePrints: faShoePrints,\n faCirclePlus: faCirclePlus,\n faPlusCircle: faPlusCircle,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faHandHolding: faHandHolding,\n faPlugCircleExclamation: faPlugCircleExclamation,\n faLinkSlash: faLinkSlash,\n faChainBroken: faChainBroken,\n faChainSlash: faChainSlash,\n faUnlink: faUnlink,\n faClone: faClone,\n faPersonWalkingArrowLoopLeft: faPersonWalkingArrowLoopLeft,\n faArrowUpZA: faArrowUpZA,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faFireFlameCurved: faFireFlameCurved,\n faFireAlt: faFireAlt,\n faTornado: faTornado,\n faFileCirclePlus: faFileCirclePlus,\n faBookQuran: faBookQuran,\n faQuran: faQuran,\n faAnchor: faAnchor,\n faBorderAll: faBorderAll,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faCookieBite: faCookieBite,\n faArrowTrendDown: faArrowTrendDown,\n faRss: faRss,\n faFeed: faFeed,\n faDrawPolygon: faDrawPolygon,\n faScaleBalanced: faScaleBalanced,\n faBalanceScale: faBalanceScale,\n faGaugeSimpleHigh: faGaugeSimpleHigh,\n faTachometer: faTachometer,\n faTachometerFast: faTachometerFast,\n faShower: faShower,\n faDesktop: faDesktop,\n faDesktopAlt: faDesktopAlt,\n faM: faM,\n faTableList: faTableList,\n faThList: faThList,\n faCommentSms: faCommentSms,\n faSms: faSms,\n faBook: faBook,\n faUserPlus: faUserPlus,\n faCheck: faCheck,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBattery4: faBattery4,\n faHouseCircleCheck: faHouseCircleCheck,\n faAngleLeft: faAngleLeft,\n faDiagramSuccessor: faDiagramSuccessor,\n faTruckArrowRight: faTruckArrowRight,\n faArrowsSplitUpAndLeft: faArrowsSplitUpAndLeft,\n faHandFist: faHandFist,\n faFistRaised: faFistRaised,\n faCloudMoon: faCloudMoon,\n faBriefcase: faBriefcase,\n faPersonFalling: faPersonFalling,\n faImagePortrait: faImagePortrait,\n faPortrait: faPortrait,\n faUserTag: faUserTag,\n faRug: faRug,\n faEarthEurope: faEarthEurope,\n faGlobeEurope: faGlobeEurope,\n faCartFlatbedSuitcase: faCartFlatbedSuitcase,\n faLuggageCart: faLuggageCart,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faBahtSign: faBahtSign,\n faBookOpen: faBookOpen,\n faBookJournalWhills: faBookJournalWhills,\n faJournalWhills: faJournalWhills,\n faHandcuffs: faHandcuffs,\n faTriangleExclamation: faTriangleExclamation,\n faExclamationTriangle: faExclamationTriangle,\n faWarning: faWarning,\n faDatabase: faDatabase,\n faShare: faShare,\n faArrowTurnRight: faArrowTurnRight,\n faMailForward: faMailForward,\n faBottleDroplet: faBottleDroplet,\n faMaskFace: faMaskFace,\n faHillRockslide: faHillRockslide,\n faRightLeft: faRightLeft,\n faExchangeAlt: faExchangeAlt,\n faPaperPlane: faPaperPlane,\n faRoadCircleExclamation: faRoadCircleExclamation,\n faDungeon: faDungeon,\n faAlignRight: faAlignRight,\n faMoneyBill1Wave: faMoneyBill1Wave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faLifeRing: faLifeRing,\n faHands: faHands,\n faSignLanguage: faSignLanguage,\n faSigning: faSigning,\n faCalendarDay: faCalendarDay,\n faWaterLadder: faWaterLadder,\n faLadderWater: faLadderWater,\n faSwimmingPool: faSwimmingPool,\n faArrowsUpDown: faArrowsUpDown,\n faArrowsV: faArrowsV,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faWheelchairMove: faWheelchairMove,\n faWheelchairAlt: faWheelchairAlt,\n faTurnDown: faTurnDown,\n faLevelDownAlt: faLevelDownAlt,\n faPersonWalkingArrowRight: faPersonWalkingArrowRight,\n faSquareEnvelope: faSquareEnvelope,\n faEnvelopeSquare: faEnvelopeSquare,\n faDice: faDice,\n faBowlingBall: faBowlingBall,\n faBrain: faBrain,\n faBandage: faBandage,\n faBandAid: faBandAid,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faGifts: faGifts,\n faHotel: faHotel,\n faEarthAsia: faEarthAsia,\n faGlobeAsia: faGlobeAsia,\n faIdCardClip: faIdCardClip,\n faIdCardAlt: faIdCardAlt,\n faMagnifyingGlassPlus: faMagnifyingGlassPlus,\n faSearchPlus: faSearchPlus,\n faThumbsUp: faThumbsUp,\n faUserClock: faUserClock,\n faHandDots: faHandDots,\n faAllergies: faAllergies,\n faFileInvoice: faFileInvoice,\n faWindowMinimize: faWindowMinimize,\n faMugSaucer: faMugSaucer,\n faCoffee: faCoffee,\n faBrush: faBrush,\n faMask: faMask,\n faMagnifyingGlassMinus: faMagnifyingGlassMinus,\n faSearchMinus: faSearchMinus,\n faRulerVertical: faRulerVertical,\n faUserLarge: faUserLarge,\n faUserAlt: faUserAlt,\n faTrainTram: faTrainTram,\n faUserNurse: faUserNurse,\n faSyringe: faSyringe,\n faCloudSun: faCloudSun,\n faStopwatch20: faStopwatch20,\n faSquareFull: faSquareFull,\n faMagnet: faMagnet,\n faJar: faJar,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faBugSlash: faBugSlash,\n faArrowUpFromWaterPump: faArrowUpFromWaterPump,\n faBone: faBone,\n faUserInjured: faUserInjured,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faPlane: faPlane,\n faTentArrowsDown: faTentArrowsDown,\n faExclamation: faExclamation,\n faArrowsSpin: faArrowsSpin,\n faPrint: faPrint,\n faTurkishLiraSign: faTurkishLiraSign,\n faTry: faTry,\n faTurkishLira: faTurkishLira,\n faDollarSign: faDollarSign,\n faDollar: faDollar,\n faUsd: faUsd,\n faX: faX,\n faMagnifyingGlassDollar: faMagnifyingGlassDollar,\n faSearchDollar: faSearchDollar,\n faUsersGear: faUsersGear,\n faUsersCog: faUsersCog,\n faPersonMilitaryPointing: faPersonMilitaryPointing,\n faBuildingColumns: faBuildingColumns,\n faBank: faBank,\n faInstitution: faInstitution,\n faMuseum: faMuseum,\n faUniversity: faUniversity,\n faUmbrella: faUmbrella,\n faTrowel: faTrowel,\n faD: faD,\n faStapler: faStapler,\n faMasksTheater: faMasksTheater,\n faTheaterMasks: faTheaterMasks,\n faKipSign: faKipSign,\n faHandPointLeft: faHandPointLeft,\n faHandshakeSimple: faHandshakeSimple,\n faHandshakeAlt: faHandshakeAlt,\n faJetFighter: faJetFighter,\n faFighterJet: faFighterJet,\n faSquareShareNodes: faSquareShareNodes,\n faShareAltSquare: faShareAltSquare,\n faBarcode: faBarcode,\n faPlusMinus: faPlusMinus,\n faVideo: faVideo,\n faVideoCamera: faVideoCamera,\n faGraduationCap: faGraduationCap,\n faMortarBoard: faMortarBoard,\n faHandHoldingMedical: faHandHoldingMedical,\n faPersonCircleCheck: faPersonCircleCheck,\n faTurnUp: faTurnUp,\n faLevelUpAlt: faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faAt, faTrashCan, faTrashAlt, faTextHeight, faUserXmark, faUserTimes, faStethoscope, faMessage, faCommentAlt, faInfo, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faCalendarDays, faCalendarAlt, faAnchorCircleCheck, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faArrowsUpToLine, faSortDown, faSortDesc, faCircleMinus, faMinusCircle, faDoorOpen, faRightFromBracket, faSignOutAlt, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faBridgeCircleCheck, faPumpMedical, faFingerprint, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faFlagCheckered, faFootball, faFootballBall, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faPeopleLine, faBeerMugEmpty, faBeer, faDiagramPredecessor, faArrowUpLong, faLongArrowUp, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faTruckPlane, faRecordVinyl, faFaceGrinStars, faGrinStars, faBong, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faCircleH, faHospitalSymbol, faPager, faAddressBook, faContactBook, faStrikethrough, faK, faLandmarkFlag, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faCodePullRequest, faClipboardList, faTruckRampBox, faTruckLoading, faUserCheck, faVialVirus, faSheetPlastic, faBlog, faUserNinja, faPersonArrowUpFromLine, faScrollTorah, faTorah, faBroomBall, faQuidditch, faQuidditchBroomBall, faToggleOff, faBoxArchive, faArchive, faPersonDrowning, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faSprayCan, faTruckMonster, faW, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faCloud, faTrowelBricks, faFaceFlushed, faFlushed, faHospitalUser, faTentArrowLeftRight, faGavel, faLegal, faBinoculars, faMicrophoneSlash, faBoxTissue, faMotorcycle, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faPeopleArrows, faPeopleArrowsLeftRight, faMarsAndVenusBurst, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faTable, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faUsersSlash, faClover, faReply, faMailReply, faStarAndCrescent, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faCompass, faSquareCaretDown, faCaretSquareDown, faFileCircleQuestion, faLaptopCode, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faFilm, faRulerHorizontal, faPeopleRobbery, faLightbulb, faCaretLeft, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faCircleChevronDown, faChevronCircleDown, faUnlockKeyhole, faUnlockAlt, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faCircleDollarToSlot, faDonate, faMemory, faRoadSpikes, faFireBurner, faFlag, faHanukiah, faFeather, faVolumeLow, faVolumeDown, faCommentSlash, faCloudSunRain, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faSquareCheck, faCheckSquare, faPesetaSign, faHeading, faHeader, faGhost, faList, faListSquares, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faEgg, faHouseMedicalCircleXmark, faCampground, faFolderPlus, faFutbol, faFutbolBall, faSoccerBall, faPaintbrush, faPaintBrush, faLock, faGasPump, faHotTubPerson, faHotTub, faMapLocation, faMapMarked, faHouseFloodWater, faTree, faBridgeLock, faSackDollar, faPenToSquare, faEdit, faCarSide, faShareNodes, faShareAlt, faHeartCircleMinus, faHourglassHalf, faHourglass2, faMicroscope, faSink, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faPersonRays, faUsers, faEyeSlash, faFlaskVial, faHand, faHandPaper, faOm, faWorm, faHouseCircleXmark, faPlug, faChevronUp, faHandSpock, faStopwatch, faFaceKiss, faKiss, faBridgeCircleXmark, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faRoadCircleCheck, faDiceFive, faSquareRss, faRssSquare, faLandMineOn, faICursor, faStamp, faStairs, faI, faHryvniaSign, faHryvnia, faPills, faFaceGrinWide, faGrinAlt, faTooth, faV, faBangladeshiTakaSign, faBicycle, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faHeadSideCoughSlash, faTruckMedical, faAmbulance, faWheatAwnCircleExclamation, faSnowman, faMortarPestle, faRoadBarrier, faSchool, faIgloo, faJoint, faAngleRight, faHorse, faQ, faG, faNotesMedical, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faCapsules, faPooStorm, faPooBolt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faMoneyBill, faBookmark, faAlignJustify, faUmbrellaBeach, faHelmetUn, faBullseye, faBacon, faHandPointDown, faArrowUpFromBracket, faFolder, faFolderBlank, faFileWaveform, faFileMedicalAlt, faRadiation, faChartSimple, faMarsStroke, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faE, faPenClip, faPenAlt, faBridgeCircleExclamation, faUser, faSchoolCircleCheck, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faKey, faBullhorn, faGlobe, faSynagogue, faPersonHalfDress, faRoadBridge, faLocationArrow, faC, faTabletButton, faBuildingLock, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faPersonCircleMinus, faBan, faCancel, faCameraRotate, faSprayCanSparkles, faAirFreshener, faStar, faRepeat, faCross, faBox, faVenusMars, faArrowPointer, faMousePointer, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faSpider, faHandsBound, faFileInvoiceDollar, faPlaneCircleExclamation, faXRay, faSpellCheck, faSlash, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faShopSlash, faStoreAltSlash, faServer, faVirusCovidSlash, faShopLock, faHourglassStart, faHourglass1, faBlenderPhone, faBuildingWheat, faPersonBreastfeeding, faRightToBracket, faSignInAlt, faVenus, faPassport, faHeartPulse, faHeartbeat, faPeopleCarryBox, faPeopleCarry, faTemperatureHigh, faMicrochip, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faWeightScale, faWeight, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faChessKnight, faFaceLaughSquint, faLaughSquint, faWheelchair, faCircleArrowUp, faArrowCircleUp, faToggleOn, faPersonWalking, faWalking, faL, faFire, faBedPulse, faProcedures, faShuttleSpace, faSpaceShuttle, faFaceLaugh, faLaugh, faFolderOpen, faHeartCirclePlus, faCodeFork, faCity, faMicrophoneLines, faMicrophoneAlt, faPepperHot, faUnlock, faColonSign, faHeadset, faStoreSlash, faRoadCircleXmark, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faBath, faBathtub, faUnderline, faUserPen, faUserEdit, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faManatSign, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faJedi, faSquarePollVertical, faPoll, faMugHot, faCarBattery, faBatteryCar, faGift, faDiceTwo, faChessQueen, faGlasses, faChessBoard, faBuildingCircleCheck, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faEyeLowVision, faLowVision, faCrow, faSailboat, faWindowRestore, faSquarePlus, faPlusSquare, faToriiGate, faFrog, faBucket, faImage, faMicrophone, faCow, faCaretUp, faScrewdriver, faFolderClosed, faHouseTsunami, faSquareNfi, faArrowUpFromGroundWater, faMartiniGlass, faGlassMartiniAlt, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faMonument, faSnowplow, faAnglesRight, faAngleDoubleRight, faCannabis, faCirclePlay, faPlayCircle, faTablets, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faCompassDrafting, faDraftingCompass, faPlateWheat, faIcicles, faPersonShelter, faNeuter, faIdBadge, faMarker, faFaceLaughBeam, faLaughBeam, faHelicopterSymbol, faUniversalAccess, faCircleChevronUp, faChevronCircleUp, faLariSign, faVolcano, faPersonWalkingDashedLineArrowRight, faSterlingSign, faGbp, faPoundSign, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faFileImport, faArrowRightToFile, faSquareArrowUpRight, faExternalLinkSquare, faBoxOpen, faScroll, faSpa, faLocationPinLock, faPause, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faRegistered, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faSubscript, faDiamondTurnRight, faDirections, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faSmog, faCrutch, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faArrowsTurnRight, faVest, faFerry, faArrowsDownToPeople, faSeedling, faSprout, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faGroupArrowsRotate, faBowlFood, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCloudBolt, faThunderstorm, faTextSlash, faRemoveFormat, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faChildren, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faEnvelopeOpen, faHandshakeSimpleSlash, faHandshakeAltSlash, faMattressPillow, faGuaraniSign, faArrowsRotate, faRefresh, faSync, faFireExtinguisher, faCruzeiroSign, faGreaterThanEqual, faShieldHalved, faShieldAlt, faBookAtlas, faAtlas, faVirus, faEnvelopeCircleCheck, faLayerGroup, faArrowsToDot, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faSquare, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faChurch, faCommentsDollar, faDemocrat, faZ, faPersonSkiing, faSkiing, faRoadLock, faA, faTemperatureArrowDown, faTemperatureDown, faFeatherPointed, faFeatherAlt, faP, faSnowflake, faNewspaper, faRectangleAd, faAd, faCircleArrowRight, faArrowCircleRight, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faPersonDressBurst, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faFaceKissWinkHeart, faKissWinkHeart, faFilter, faQuestion, faFileSignature, faUpDownLeftRight, faArrowsAlt, faHouseChimneyUser, faHandHoldingHeart, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faCode, faWhiskeyGlass, faGlassWhiskey, faBuildingCircleExclamation, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faWonSign, faKrw, faWon, faVirusCovid, faAustralSign, faF, faLeaf, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faSackXmark, faFileExcel, faFileContract, faFishFins, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faPoop, faLocationPin, faMapMarker, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faChartLine, faLineChart, faMaskVentilator, faArrowRight, faSignsPost, faMapSigns, faCashRegister, faPersonCircleQuestion, faH, faTarp, faScrewdriverWrench, faTools, faArrowsToEye, faPlugCircleBolt, faHeart, faMarsAndVenus, faHouseUser, faHomeUser, faDumpsterFire, faHouseCrack, faMartiniGlassCitrus, faCocktail, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faToiletPaperSlash, faAppleWhole, faAppleAlt, faKitchenSet, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faCube, faBitcoinSign, faShieldDog, faSolarPanel, faLockOpen, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faPlaneSlash, faTrademark, faBasketball, faBasketballBall, faSatelliteDish, faCircleUp, faArrowAltCircleUp, faMobileScreenButton, faMobileAlt, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faClipboardCheck, faFileAudio, faBurger, faHamburger, faWrench, faBugs, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faCodeBranch, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faTruckFront, faCat, faAnchorCircleExclamation, faTruckField, faRoute, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faFileCircleMinus, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faSquareParking, faParking, faHouseSignal, faBarsProgress, faTasksAlt, faFaucetDrip, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faUserSlash, faPen, faTowerObservation, faFileCode, faSignal, faSignal5, faSignalPerfect, faBus, faHeartCircleXmark, faHouseChimney, faHomeLg, faWindowMaximize, faFaceFrown, faFrown, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faScaleUnbalanced, faBalanceScaleLeft, faSortUp, faSortAsc, faCommentDots, faCommenting, faPlantWilt, faDiamond, faFaceGrinSquint, faGrinSquint, faHandHoldingDollar, faHandHoldingUsd, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faBiohazard, faLocationCrosshairs, faLocation, faMarsDouble, faChildDress, faUsersBetweenLines, faLungsVirus, faFaceGrinTears, faGrinTears, faPhone, faCalendarXmark, faCalendarTimes, faChildReaching, faHeadSideVirus, faUserGear, faUserCog, faArrowUp19, faSortNumericUp, faDoorClosed, faShieldVirus, faDiceSix, faMosquitoNet, faBridgeWater, faPersonBooth, faTextWidth, faHatWizard, faPenFancy, faPersonDigging, faDigging, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faBookMedical, faPoo, faQuoteRight, faQuoteRightAlt, faShirt, faTShirt, faTshirt, faCubes, faDivide, faTengeSign, faTenge, faHeadphones, faHandsHolding, faHandsClapping, faRepublican, faArrowLeft, faPersonCircleXmark, faRuler, faAlignLeft, faDiceD6, faRestroom, faJ, faUsersViewfinder, faFileVideo, faUpRightFromSquare, faExternalLinkAlt, faTableCells, faTh, faFilePdf, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faUserSecret, faOtter, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faPhoneVolume, faVolumeControlPhone, faHatCowboySide, faClipboardUser, faChild, faLiraSign, faSatellite, faPlaneLock, faTag, faComment, faCakeCandles, faBirthdayCake, faCake, faEnvelope, faAnglesUp, faAngleDoubleUp, faPaperclip, faArrowRightToCity, faRibbon, faLungs, faArrowUp91, faSortNumericUpAlt, faLitecoinSign, faBorderNone, faCircleNodes, faParachuteBox, faIndent, faTruckFieldUn, faHourglass, faHourglassEmpty, faMountain, faUserDoctor, faUserMd, faCircleInfo, faInfoCircle, faCloudMeatball, faCamera, faCameraAlt, faSquareVirus, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandHoldingDroplet, faHandHoldingWater, faWater, faCalendarCheck, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faLandmark, faTruck, faCrosshairs, faPersonCane, faTent, faVestPatches, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBillWheat, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faHouseMedicalCircleCheck, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPlaneArrival, faCircleLeft, faArrowAltCircleLeft, faTrainSubway, faSubway, faChartGantt, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faDna, faVirusSlash, faMinus, faSubtract, faChess, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faStreetView, faFrancSign, faVolumeOff, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faGear, faCog, faDropletSlash, faTintSlash, faMosque, faMosquito, faStarOfDavid, faPersonMilitaryRifle, faCartShopping, faShoppingCart, faVials, faPlugCirclePlus, faPlaceOfWorship, faGripVertical, faArrowTurnUp, faLevelUp, faU, faSquareRootVariable, faSquareRootAlt, faClock, faClockFour, faBackwardStep, faStepBackward, faPallet, faFaucet, faBaseballBatBall, faS, faTimeline, faKeyboard, faCaretDown, faHouseChimneyMedical, faClinicMedical, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faPiggyBank, faBatteryHalf, faBattery3, faMountainCity, faCoins, faKhanda, faSliders, faSlidersH, faFolderTree, faNetworkWired, faMapPin, faHamsa, faCentSign, faFlask, faPersonPregnant, faWandSparkles, faEllipsisVertical, faEllipsisV, faTicket, faPowerOff, faRightLong, faLongArrowAltRight, faFlagUsa, faLaptopFile, faTty, faTeletype, faDiagramNext, faPersonRifle, faHouseMedicalCircleExclamation, faClosedCaptioning, faPersonHiking, faHiking, faVenusDouble, faImages, faCalculator, faPeoplePulling, faN, faCableCar, faTram, faCloudRain, faBuildingCircleXmark, faShip, faArrowsDownToLine, faDownload, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faEyeDropper, faEyeDropperEmpty, faEyedropper, faFileCircleCheck, faForward, faMobile, faMobileAndroid, faMobilePhone, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faCalendarWeek, faLaptopMedical, faB, faFileMedical, faDiceOne, faKiwiBird, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faMillSign, faBowlRice, faSkull, faTowerBroadcast, faBroadcastTower, faTruckPickup, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faUpload, faHurricane, faMound, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faCaravan, faShieldCat, faBolt, faZap, faGlassWater, faOilWell, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faRubleSign, faRouble, faRub, faRuble, faSun, faGuitar, faFaceLaughWink, faLaughWink, faHorseHead, faBoreHole, faIndustry, faCircleDown, faArrowAltCircleDown, faArrowsTurnToDots, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faAngleDown, faCarTunnel, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faAnchorCircleXmark, faEllipsis, faEllipsisH, faChessPawn, faKitMedical, faFirstAid, faPersonThroughWindow, faToolbox, faHandsHoldingCircle, faBug, faCreditCard, faCreditCardAlt, faCar, faAutomobile, faHandHoldingHand, faBookOpenReader, faBookReader, faMountainSun, faArrowsLeftRightToLine, faDiceD20, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faSquareH, faHSquare, faPodcast, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faSuperscript, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faPaintRoller, faHandshakeAngle, faHandsHelping, faLocationDot, faMapMarkerAlt, faFile, faGreaterThan, faPersonSwimming, faSwimmer, faArrowDown, faDroplet, faTint, faEraser, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faPersonBurst, faDove, faBatteryEmpty, faBattery0, faSocks, faInbox, faSection, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faEnvelopeOpenText, faHospital, faHospitalAlt, faHospitalWide, faWineBottle, faChessRook, faBarsStaggered, faReorder, faStream, faDharmachakra, faHotdog, faPersonWalkingWithCane, faBlind, faDrum, faIceCream, faHeartCircleBolt, faFax, faParagraph, faCheckToSlot, faVoteYea, faStarHalf, faBoxesStacked, faBoxes, faBoxesAlt, faLink, faChain, faEarListen, faAssistiveListeningSystems, faTreeCity, faPlay, faFont, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faTrashCanArrowUp, faTrashRestoreAlt, faNairaSign, faCartArrowDown, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faSquarePen, faPenSquare, faPencilSquare, faSuitcaseRolling, faPersonCircleExclamation, faChevronDown, faBatteryFull, faBattery, faBattery5, faSkullCrossbones, faCodeCompare, faListUl, faListDots, faSchoolLock, faTowerCell, faDownLong, faLongArrowAltDown, faRankingStar, faChessKing, faPersonHarassing, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faArrowUp, faTv, faTelevision, faTvAlt, faShrimp, faListCheck, faTasks, faJugDetergent, faCircleUser, faUserCircle, faUserShield, faWind, faCarBurst, faCarCrash, faY, faPersonSnowboarding, faSnowboarding, faTruckFast, faShippingFast, faFish, faUserGraduate, faCircleHalfStroke, faAdjust, faClapperboard, faCircleRadiation, faRadiationAlt, faBaseball, faBaseballBall, faJetFighterUp, faDiagramProject, faProjectDiagram, faCopy, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faChildCombatant, faChildRifle, faGun, faSquarePhone, faPhoneSquare, faPlus, faAdd, faExpand, faComputer, faXmark, faClose, faMultiply, faRemove, faTimes, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faPesoSign, faBuildingShield, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faLinesLeaning, faRulerCombined, faCopyright, faEquals, faBlender, faTeeth, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faMap, faRocket, faPhotoFilm, faPhotoVideo, faFolderMinus, faStore, faArrowTrendUp, faPlugCircleMinus, faSignHanging, faSign, faBezierCurve, faBellSlash, faTablet, faTabletAndroid, faSchoolFlag, faFill, faAngleUp, faDrumstickBite, faHollyBerry, faChevronLeft, faBacteria, faHandLizard, faNotdef, faDisease, faBriefcaseMedical, faGenderless, faChevronRight, faRetweet, faCarRear, faCarAlt, faPumpSoap, faVideoSlash, faBatteryQuarter, faBattery2, faRadio, faBabyCarriage, faCarriageBaby, faTrafficLight, faThermometer, faVrCardboard, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faDisplay, faFaceSmile, faSmile, faThumbtack, faThumbTack, faTrophy, faPersonPraying, faPray, faHammer, faHandPeace, faRotate, faSyncAlt, faSpinner, faRobot, faPeace, faGears, faCogs, faWarehouse, faArrowUpRightDots, faSplotch, faFaceGrinHearts, faGrinHearts, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faArrowTurnDown, faLevelDown, faPersonFallingBurst, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faQrcode, faClockRotateLeft, faHistory, faFaceGrinBeamSweat, faGrinBeamSweat, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faPenNib, faTentArrowTurnLeft, faTents, faWandMagic, faMagic, faDog, faCarrot, faMoon, faWineGlassEmpty, faWineGlassAlt, faCheese, faYinYang, faMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faBroom, faShieldHeart, faGopuram, faEarthOceania, faGlobeOceania, faSquareXmark, faTimesSquare, faXmarkSquare, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faHippo, faChartColumn, faInfinity, faVialCircleCheck, faPersonArrowDownToLine, faVoicemail, faFan, faPersonWalkingLuggage, faUpDown, faArrowsAltV, faCloudMoonRain, faCalendar, faTrailer, faBahai, faHaykal, faSdCard, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faBookQuran, faQuran, faAnchor, faBorderAll, faFaceAngry, faAngry, faCookieBite, faArrowTrendDown, faRss, faFeed, faDrawPolygon, faScaleBalanced, faBalanceScale, faGaugeSimpleHigh, faTachometer, faTachometerFast, faShower, faDesktop, faDesktopAlt, faM, faTableList, faThList, faCommentSms, faSms, faBook, faUserPlus, faCheck, faBatteryThreeQuarters, faBattery4, faHouseCircleCheck, faAngleLeft, faDiagramSuccessor, faTruckArrowRight, faArrowsSplitUpAndLeft, faHandFist, faFistRaised, faCloudMoon, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faBahtSign, faBookOpen, faBookJournalWhills, faJournalWhills, faHandcuffs, faTriangleExclamation, faExclamationTriangle, faWarning, faDatabase, faShare, faArrowTurnRight, faMailForward, faBottleDroplet, faMaskFace, faHillRockslide, faRightLeft, faExchangeAlt, faPaperPlane, faRoadCircleExclamation, faDungeon, faAlignRight, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faBowlingBall, faBrain, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faGifts, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faUserClock, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faMugSaucer, faCoffee, faBrush, faMask, faMagnifyingGlassMinus, faSearchMinus, faRulerVertical, faUserLarge, faUserAlt, faTrainTram, faUserNurse, faSyringe, faCloudSun, faStopwatch20, faSquareFull, faMagnet, faJar, faNoteSticky, faStickyNote, faBugSlash, faArrowUpFromWaterPump, faBone, faUserInjured, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faDollarSign, faDollar, faUsd, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faUmbrella, faTrowel, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faHandPointLeft, faHandshakeSimple, faHandshakeAlt, faJetFighter, faFighterJet, faSquareShareNodes, faShareAltSquare, faBarcode, faPlusMinus, faVideo, faVideoCamera, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faTurnUp, faLevelUpAlt };\n","import { parse, icon, config, text } from '@fortawesome/fontawesome-svg-core';\nimport { h, defineComponent, computed, watch } from 'vue';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar humps$1 = {exports: {}};\n\n(function (module) {\n(function(global) {\n\n\t var _processKeys = function(convert, obj, options) {\n\t if(!_isObject(obj) || _isDate(obj) || _isRegExp(obj) || _isBoolean(obj) || _isFunction(obj)) {\n\t return obj;\n\t }\n\n\t var output,\n\t i = 0,\n\t l = 0;\n\n\t if(_isArray(obj)) {\n\t output = [];\n\t for(l=obj.length; i<l; i++) {\n\t output.push(_processKeys(convert, obj[i], options));\n\t }\n\t }\n\t else {\n\t output = {};\n\t for(var key in obj) {\n\t if(Object.prototype.hasOwnProperty.call(obj, key)) {\n\t output[convert(key, options)] = _processKeys(convert, obj[key], options);\n\t }\n\t }\n\t }\n\t return output;\n\t };\n\n\t // String conversion methods\n\n\t var separateWords = function(string, options) {\n\t options = options || {};\n\t var separator = options.separator || '_';\n\t var split = options.split || /(?=[A-Z])/;\n\n\t return string.split(split).join(separator);\n\t };\n\n\t var camelize = function(string) {\n\t if (_isNumerical(string)) {\n\t return string;\n\t }\n\t string = string.replace(/[\\-_\\s]+(.)?/g, function(match, chr) {\n\t return chr ? chr.toUpperCase() : '';\n\t });\n\t // Ensure 1st char is always lowercase\n\t return string.substr(0, 1).toLowerCase() + string.substr(1);\n\t };\n\n\t var pascalize = function(string) {\n\t var camelized = camelize(string);\n\t // Ensure 1st char is always uppercase\n\t return camelized.substr(0, 1).toUpperCase() + camelized.substr(1);\n\t };\n\n\t var decamelize = function(string, options) {\n\t return separateWords(string, options).toLowerCase();\n\t };\n\n\t // Utilities\n\t // Taken from Underscore.js\n\n\t var toString = Object.prototype.toString;\n\n\t var _isFunction = function(obj) {\n\t return typeof(obj) === 'function';\n\t };\n\t var _isObject = function(obj) {\n\t return obj === Object(obj);\n\t };\n\t var _isArray = function(obj) {\n\t return toString.call(obj) == '[object Array]';\n\t };\n\t var _isDate = function(obj) {\n\t return toString.call(obj) == '[object Date]';\n\t };\n\t var _isRegExp = function(obj) {\n\t return toString.call(obj) == '[object RegExp]';\n\t };\n\t var _isBoolean = function(obj) {\n\t return toString.call(obj) == '[object Boolean]';\n\t };\n\n\t // Performant way to determine if obj coerces to a number\n\t var _isNumerical = function(obj) {\n\t obj = obj - 0;\n\t return obj === obj;\n\t };\n\n\t // Sets up function which handles processing keys\n\t // allowing the convert function to be modified by a callback\n\t var _processor = function(convert, options) {\n\t var callback = options && 'process' in options ? options.process : options;\n\n\t if(typeof(callback) !== 'function') {\n\t return convert;\n\t }\n\n\t return function(string, options) {\n\t return callback(string, convert, options);\n\t }\n\t };\n\n\t var humps = {\n\t camelize: camelize,\n\t decamelize: decamelize,\n\t pascalize: pascalize,\n\t depascalize: decamelize,\n\t camelizeKeys: function(object, options) {\n\t return _processKeys(_processor(camelize, options), object);\n\t },\n\t decamelizeKeys: function(object, options) {\n\t return _processKeys(_processor(decamelize, options), object, options);\n\t },\n\t pascalizeKeys: function(object, options) {\n\t return _processKeys(_processor(pascalize, options), object);\n\t },\n\t depascalizeKeys: function () {\n\t return this.decamelizeKeys.apply(this, arguments);\n\t }\n\t };\n\n\t if (module.exports) {\n\t module.exports = humps;\n\t } else {\n\t global.humps = humps;\n\t }\n\n\t})(commonjsGlobal);\n} (humps$1));\n\nvar humps = humps$1.exports;\n\nvar _excluded = [\"class\", \"style\"];\n\n/**\n * Converts a CSS style into a plain Javascript object.\n * @param {String} style The style to converts into a plain Javascript object.\n * @returns {Object}\n */\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (output, pair) {\n var idx = pair.indexOf(':');\n var prop = humps.camelize(pair.slice(0, idx));\n var value = pair.slice(idx + 1).trim();\n output[prop] = value;\n return output;\n }, {});\n}\n\n/**\n * Converts a CSS class list into a plain Javascript object.\n * @param {Array<String>} classes The class list to convert.\n * @returns {Object}\n */\nfunction classToObject(classes) {\n return classes.split(/\\s+/).reduce(function (output, className) {\n output[className] = true;\n return output;\n }, {});\n}\n\n/**\n * Converts a FontAwesome abstract element of an icon into a Vue VNode.\n * @param {AbstractElement | String} abstractElement The element to convert.\n * @param {Object} props The user-defined props.\n * @param {Object} attrs The user-defined native HTML attributes.\n * @returns {VNode}\n */\nfunction convert(abstractElement) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n // If the abstract element is a string, we'll just return a string render function\n if (typeof abstractElement === 'string') {\n return abstractElement;\n }\n\n // Converting abstract element children into Vue VNodes\n var children = (abstractElement.children || []).map(function (child) {\n return convert(child);\n });\n\n // Converting abstract element attributes into valid Vue format\n var mixins = Object.keys(abstractElement.attributes || {}).reduce(function (mixins, key) {\n var value = abstractElement.attributes[key];\n switch (key) {\n case 'class':\n mixins.class = classToObject(value);\n break;\n case 'style':\n mixins.style = styleToObject(value);\n break;\n default:\n mixins.attrs[key] = value;\n }\n return mixins;\n }, {\n attrs: {},\n class: {},\n style: {}\n });\n\n // Now, we'll return the VNode\n attrs.class;\n var _attrs$style = attrs.style,\n aStyle = _attrs$style === void 0 ? {} : _attrs$style,\n otherAttrs = _objectWithoutProperties(attrs, _excluded);\n return h(abstractElement.tag, _objectSpread2(_objectSpread2(_objectSpread2({}, props), {}, {\n class: mixins.class,\n style: _objectSpread2(_objectSpread2({}, mixins.style), aStyle)\n }, mixins.attrs), otherAttrs), children);\n}\n\nvar PRODUCTION = false;\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction objectWithKey(key, value) {\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\nfunction classList(props) {\n var _classes;\n var classes = (_classes = {\n 'fa-spin': props.spin,\n 'fa-pulse': props.pulse,\n 'fa-fw': props.fixedWidth,\n 'fa-border': props.border,\n 'fa-li': props.listItem,\n 'fa-inverse': props.inverse,\n 'fa-flip': props.flip === true,\n 'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n 'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(props.size), props.size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(props.rotation), props.rotation !== null), _defineProperty(_classes, \"fa-pull-\".concat(props.pull), props.pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _defineProperty(_classes, 'fa-bounce', props.bounce), _defineProperty(_classes, 'fa-shake', props.shake), _defineProperty(_classes, 'fa-beat', props.beat), _defineProperty(_classes, 'fa-fade', props.fade), _defineProperty(_classes, 'fa-beat-fade', props.beatFade), _defineProperty(_classes, 'fa-flash', props.flash), _defineProperty(_classes, 'fa-spin-pulse', props.spinPulse), _defineProperty(_classes, 'fa-spin-reverse', props.spinReverse), _classes);\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\nfunction normalizeIconArgs(icon) {\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n if (parse.icon) {\n return parse.icon(icon);\n }\n if (icon === null) {\n return null;\n }\n if (_typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n }\n if (Array.isArray(icon) && icon.length === 2) {\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n }\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\nvar FontAwesomeIcon = defineComponent({\n name: 'FontAwesomeIcon',\n props: {\n border: {\n type: Boolean,\n default: false\n },\n fixedWidth: {\n type: Boolean,\n default: false\n },\n flip: {\n type: [Boolean, String],\n default: false,\n validator: function validator(value) {\n return [true, false, 'horizontal', 'vertical', 'both'].indexOf(value) > -1;\n }\n },\n icon: {\n type: [Object, Array, String],\n required: true\n },\n mask: {\n type: [Object, Array, String],\n default: null\n },\n listItem: {\n type: Boolean,\n default: false\n },\n pull: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['right', 'left'].indexOf(value) > -1;\n }\n },\n pulse: {\n type: Boolean,\n default: false\n },\n rotation: {\n type: [String, Number],\n default: null,\n validator: function validator(value) {\n return [90, 180, 270].indexOf(Number.parseInt(value, 10)) > -1;\n }\n },\n swapOpacity: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x'].indexOf(value) > -1;\n }\n },\n spin: {\n type: Boolean,\n default: false\n },\n transform: {\n type: [String, Object],\n default: null\n },\n symbol: {\n type: [Boolean, String],\n default: false\n },\n title: {\n type: String,\n default: null\n },\n inverse: {\n type: Boolean,\n default: false\n },\n bounce: {\n type: Boolean,\n default: false\n },\n shake: {\n type: Boolean,\n default: false\n },\n beat: {\n type: Boolean,\n default: false\n },\n fade: {\n type: Boolean,\n default: false\n },\n beatFade: {\n type: Boolean,\n default: false\n },\n flash: {\n type: Boolean,\n default: false\n },\n spinPulse: {\n type: Boolean,\n default: false\n },\n spinReverse: {\n type: Boolean,\n default: false\n }\n },\n setup: function setup(props, _ref) {\n var attrs = _ref.attrs;\n var icon$1 = computed(function () {\n return normalizeIconArgs(props.icon);\n });\n var classes = computed(function () {\n return objectWithKey('classes', classList(props));\n });\n var transform = computed(function () {\n return objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n });\n var mask = computed(function () {\n return objectWithKey('mask', normalizeIconArgs(props.mask));\n });\n var renderedIcon = computed(function () {\n return icon(icon$1.value, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes.value), transform.value), mask.value), {}, {\n symbol: props.symbol,\n title: props.title\n }));\n });\n watch(renderedIcon, function (value) {\n if (!value) {\n return log('Could not find one or more icon(s)', icon$1.value, mask.value);\n }\n }, {\n immediate: true\n });\n var vnode = computed(function () {\n return renderedIcon.value ? convert(renderedIcon.value.abstract[0], {}, attrs) : null;\n });\n return function () {\n return vnode.value;\n };\n }\n});\n\nvar FontAwesomeLayers = defineComponent({\n name: 'FontAwesomeLayers',\n props: {\n fixedWidth: {\n type: Boolean,\n default: false\n }\n },\n setup: function setup(props, _ref) {\n var slots = _ref.slots;\n var familyPrefix = config.familyPrefix;\n var className = computed(function () {\n return [\"\".concat(familyPrefix, \"-layers\")].concat(_toConsumableArray(props.fixedWidth ? [\"\".concat(familyPrefix, \"-fw\")] : []));\n });\n return function () {\n return h('div', {\n class: className.value\n }, slots.default ? slots.default() : []);\n };\n }\n});\n\nvar FontAwesomeLayersText = defineComponent({\n name: 'FontAwesomeLayersText',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n transform: {\n type: [String, Object],\n default: null\n },\n counter: {\n type: Boolean,\n default: false\n },\n position: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['bottom-left', 'bottom-right', 'top-left', 'top-right'].indexOf(value) > -1;\n }\n }\n },\n setup: function setup(props, _ref) {\n var attrs = _ref.attrs;\n var familyPrefix = config.familyPrefix;\n var classes = computed(function () {\n return objectWithKey('classes', [].concat(_toConsumableArray(props.counter ? [\"\".concat(familyPrefix, \"-layers-counter\")] : []), _toConsumableArray(props.position ? [\"\".concat(familyPrefix, \"-layers-\").concat(props.position)] : [])));\n });\n var transform = computed(function () {\n return objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n });\n var abstractElement = computed(function () {\n var _text = text(props.value.toString(), _objectSpread2(_objectSpread2({}, transform.value), classes.value)),\n abstract = _text.abstract;\n if (props.counter) {\n abstract[0].attributes.class = abstract[0].attributes.class.replace('fa-layers-text', '');\n }\n return abstract[0];\n });\n var vnode = computed(function () {\n return convert(abstractElement.value, {}, attrs);\n });\n return function () {\n return vnode.value;\n };\n }\n});\n\nexport { FontAwesomeIcon, FontAwesomeLayers, FontAwesomeLayersText };\n","class Pointer {\r\n constructor(nativePointer) {\r\n /** Unique ID for this pointer */\r\n this.id = -1;\r\n this.nativePointer = nativePointer;\r\n this.pageX = nativePointer.pageX;\r\n this.pageY = nativePointer.pageY;\r\n this.clientX = nativePointer.clientX;\r\n this.clientY = nativePointer.clientY;\r\n if (self.Touch && nativePointer instanceof Touch) {\r\n this.id = nativePointer.identifier;\r\n }\r\n else if (isPointerEvent(nativePointer)) {\r\n // is PointerEvent\r\n this.id = nativePointer.pointerId;\r\n }\r\n }\r\n /**\r\n * Returns an expanded set of Pointers for high-resolution inputs.\r\n */\r\n getCoalesced() {\r\n if ('getCoalescedEvents' in this.nativePointer) {\r\n return this.nativePointer.getCoalescedEvents().map((p) => new Pointer(p));\r\n }\r\n return [this];\r\n }\r\n}\r\nconst isPointerEvent = (event) => self.PointerEvent && event instanceof PointerEvent;\r\nconst noop = () => { };\r\n/**\r\n * Track pointers across a particular element\r\n */\r\nclass PointerTracker {\r\n /**\r\n * Track pointers across a particular element\r\n *\r\n * @param element Element to monitor.\r\n * @param options\r\n */\r\n constructor(_element, { start = () => true, move = noop, end = noop, rawUpdates = false, } = {}) {\r\n this._element = _element;\r\n /**\r\n * State of the tracked pointers when they were pressed/touched.\r\n */\r\n this.startPointers = [];\r\n /**\r\n * Latest state of the tracked pointers. Contains the same number of pointers, and in the same\r\n * order as this.startPointers.\r\n */\r\n this.currentPointers = [];\r\n /**\r\n * Listener for mouse/pointer starts.\r\n *\r\n * @param event This will only be a MouseEvent if the browser doesn't support pointer events.\r\n */\r\n this._pointerStart = (event) => {\r\n if (event.button !== 0 /* Left */)\r\n return;\r\n if (!this._triggerPointerStart(new Pointer(event), event))\r\n return;\r\n // Add listeners for additional events.\r\n // The listeners may already exist, but no harm in adding them again.\r\n if (isPointerEvent(event)) {\r\n const capturingElement = event.target && 'setPointerCapture' in event.target\r\n ? event.target\r\n : this._element;\r\n capturingElement.setPointerCapture(event.pointerId);\r\n this._element.addEventListener(this._rawUpdates ? 'pointerrawupdate' : 'pointermove', this._move);\r\n this._element.addEventListener('pointerup', this._pointerEnd);\r\n this._element.addEventListener('pointercancel', this._pointerEnd);\r\n }\r\n else {\r\n // MouseEvent\r\n window.addEventListener('mousemove', this._move);\r\n window.addEventListener('mouseup', this._pointerEnd);\r\n }\r\n };\r\n /**\r\n * Listener for touchstart.\r\n * Only used if the browser doesn't support pointer events.\r\n */\r\n this._touchStart = (event) => {\r\n for (const touch of Array.from(event.changedTouches)) {\r\n this._triggerPointerStart(new Pointer(touch), event);\r\n }\r\n };\r\n /**\r\n * Listener for pointer/mouse/touch move events.\r\n */\r\n this._move = (event) => {\r\n const previousPointers = this.currentPointers.slice();\r\n const changedPointers = 'changedTouches' in event // Shortcut for 'is touch event'.\r\n ? Array.from(event.changedTouches).map((t) => new Pointer(t))\r\n : [new Pointer(event)];\r\n const trackedChangedPointers = [];\r\n for (const pointer of changedPointers) {\r\n const index = this.currentPointers.findIndex((p) => p.id === pointer.id);\r\n if (index === -1)\r\n continue; // Not a pointer we're tracking\r\n trackedChangedPointers.push(pointer);\r\n this.currentPointers[index] = pointer;\r\n }\r\n if (trackedChangedPointers.length === 0)\r\n return;\r\n this._moveCallback(previousPointers, trackedChangedPointers, event);\r\n };\r\n /**\r\n * Call the end callback for this pointer.\r\n *\r\n * @param pointer Pointer\r\n * @param event Related event\r\n */\r\n this._triggerPointerEnd = (pointer, event) => {\r\n const index = this.currentPointers.findIndex((p) => p.id === pointer.id);\r\n // Not a pointer we're interested in?\r\n if (index === -1)\r\n return false;\r\n this.currentPointers.splice(index, 1);\r\n this.startPointers.splice(index, 1);\r\n const cancelled = event.type === 'touchcancel' || event.type === 'pointercancel';\r\n this._endCallback(pointer, event, cancelled);\r\n return true;\r\n };\r\n /**\r\n * Listener for mouse/pointer ends.\r\n *\r\n * @param event This will only be a MouseEvent if the browser doesn't support pointer events.\r\n */\r\n this._pointerEnd = (event) => {\r\n if (!this._triggerPointerEnd(new Pointer(event), event))\r\n return;\r\n if (isPointerEvent(event)) {\r\n if (this.currentPointers.length)\r\n return;\r\n this._element.removeEventListener(this._rawUpdates ? 'pointerrawupdate' : 'pointermove', this._move);\r\n this._element.removeEventListener('pointerup', this._pointerEnd);\r\n this._element.removeEventListener('pointercancel', this._pointerEnd);\r\n }\r\n else {\r\n // MouseEvent\r\n window.removeEventListener('mousemove', this._move);\r\n window.removeEventListener('mouseup', this._pointerEnd);\r\n }\r\n };\r\n /**\r\n * Listener for touchend.\r\n * Only used if the browser doesn't support pointer events.\r\n */\r\n this._touchEnd = (event) => {\r\n for (const touch of Array.from(event.changedTouches)) {\r\n this._triggerPointerEnd(new Pointer(touch), event);\r\n }\r\n };\r\n this._startCallback = start;\r\n this._moveCallback = move;\r\n this._endCallback = end;\r\n this._rawUpdates = rawUpdates && 'onpointerrawupdate' in window;\r\n // Add listeners\r\n if (self.PointerEvent) {\r\n this._element.addEventListener('pointerdown', this._pointerStart);\r\n }\r\n else {\r\n this._element.addEventListener('mousedown', this._pointerStart);\r\n this._element.addEventListener('touchstart', this._touchStart);\r\n this._element.addEventListener('touchmove', this._move);\r\n this._element.addEventListener('touchend', this._touchEnd);\r\n this._element.addEventListener('touchcancel', this._touchEnd);\r\n }\r\n }\r\n /**\r\n * Remove all listeners.\r\n */\r\n stop() {\r\n this._element.removeEventListener('pointerdown', this._pointerStart);\r\n this._element.removeEventListener('mousedown', this._pointerStart);\r\n this._element.removeEventListener('touchstart', this._touchStart);\r\n this._element.removeEventListener('touchmove', this._move);\r\n this._element.removeEventListener('touchend', this._touchEnd);\r\n this._element.removeEventListener('touchcancel', this._touchEnd);\r\n this._element.removeEventListener(this._rawUpdates ? 'pointerrawupdate' : 'pointermove', this._move);\r\n this._element.removeEventListener('pointerup', this._pointerEnd);\r\n this._element.removeEventListener('pointercancel', this._pointerEnd);\r\n window.removeEventListener('mousemove', this._move);\r\n window.removeEventListener('mouseup', this._pointerEnd);\r\n }\r\n /**\r\n * Call the start callback for this pointer, and track it if the user wants.\r\n *\r\n * @param pointer Pointer\r\n * @param event Related event\r\n * @returns Whether the pointer is being tracked.\r\n */\r\n _triggerPointerStart(pointer, event) {\r\n if (!this._startCallback(pointer, event))\r\n return false;\r\n this.currentPointers.push(pointer);\r\n this.startPointers.push(pointer);\r\n return true;\r\n }\r\n}\n\nexport default PointerTracker;\n","import PointerTracker from 'pointer-tracker';\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \"pinch-zoom {\\n display: block;\\n overflow: hidden;\\n touch-action: none;\\n --scale: 1;\\n --x: 0;\\n --y: 0;\\n}\\n\\npinch-zoom > * {\\n transform: translate(var(--x), var(--y)) scale(var(--scale));\\n transform-origin: 0 0;\\n will-change: transform;\\n}\\n\";\nstyleInject(css);\n\nconst minScaleAttr = 'min-scale';\r\nconst allowPanMinScaleAttr = 'allow-pan-min-scale';\r\nconst resetToMinScaleLimitAttr = 'reset-to-min-scale-limit';\r\nconst reachMinScaleStrategyAttr = 'reach-min-scale-strategy';\r\nconst stopPropagateHandledAttr = 'stop-propagate-handled';\r\nconst reachMinScaleStrategyDefault = 'none';\r\nfunction getDistance(a, b) {\r\n if (!b)\r\n return 0;\r\n return Math.sqrt((b.clientX - a.clientX) ** 2 + (b.clientY - a.clientY) ** 2);\r\n}\r\nfunction getMidpoint(a, b) {\r\n if (!b)\r\n return a;\r\n return {\r\n clientX: (a.clientX + b.clientX) / 2,\r\n clientY: (a.clientY + b.clientY) / 2,\r\n };\r\n}\r\nfunction getAbsoluteValue(value, max) {\r\n if (typeof value === 'number')\r\n return value;\r\n if (value.trimRight().endsWith('%')) {\r\n return max * parseFloat(value) / 100;\r\n }\r\n return parseFloat(value);\r\n}\r\n// I'd rather use DOMMatrix/DOMPoint here, but the browser support isn't good enough.\r\n// Given that, better to use something everything supports.\r\nlet cachedSvg;\r\nfunction getSVG() {\r\n return cachedSvg || (cachedSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'));\r\n}\r\nfunction createMatrix() {\r\n return getSVG().createSVGMatrix();\r\n}\r\nfunction createPoint() {\r\n return getSVG().createSVGPoint();\r\n}\r\nconst MIN_SCALE = 0.01;\r\nconst ALLOW_PAN_MIN_SCALE = -1;\r\nconst RESET_TO_MIN_SCALE_LIMIT = -1;\r\nconst BUTTON_LEFT = 0;\r\nconst roundedCmp = (a, b) => {\r\n return Math.round(a * 100) - Math.round(b * 100);\r\n};\r\nclass PinchZoom extends HTMLElement {\r\n constructor() {\r\n super();\r\n // Current transform.\r\n this._transform = createMatrix();\r\n // Watch for children changes.\r\n // Note this won't fire for initial contents,\r\n // so _stageElChange is also called in connectedCallback.\r\n new MutationObserver(() => this._stageElChange())\r\n .observe(this, { childList: true });\r\n // Watch for pointers\r\n const pointerTracker = new PointerTracker(this, {\r\n start: (pointer, event) => {\r\n // We only want to track 2 pointers at most\r\n if (pointerTracker.currentPointers.length === 2 || !this._positioningEl)\r\n return false;\r\n const isPan = pointerTracker.currentPointers.length + 1 === 1;\r\n const handled = !(isPan && !this._allowPan());\r\n if (handled) {\r\n this._maybeStopPropagate(event);\r\n if (!isPan) { // only cancel if something was propagated\r\n this._maybeEmitCancel([pointer, ...pointerTracker.currentPointers]);\r\n }\r\n }\r\n event.preventDefault();\r\n return true;\r\n },\r\n move: (previousPointers, _, event) => {\r\n this._onPointerMove(previousPointers, pointerTracker.currentPointers, event);\r\n },\r\n end: (pointer, event) => {\r\n this._onPointerEnd(pointer, pointerTracker.currentPointers, event);\r\n },\r\n });\r\n this.addEventListener('wheel', event => this._onWheel(event));\r\n this.addEventListener('click', event => this._onClick(event, pointerTracker));\r\n }\r\n static get observedAttributes() { return [minScaleAttr]; }\r\n attributeChangedCallback(name, oldValue, newValue) {\r\n if (name === minScaleAttr) {\r\n if (this.scale < this.minScale) {\r\n this.setTransform({ scale: this.minScale });\r\n }\r\n }\r\n }\r\n get minScale() {\r\n const attrValue = this.getAttribute(minScaleAttr);\r\n if (!attrValue)\r\n return MIN_SCALE;\r\n const value = parseFloat(attrValue);\r\n if (Number.isFinite(value))\r\n return Math.max(MIN_SCALE, value);\r\n return MIN_SCALE;\r\n }\r\n set minScale(value) {\r\n this.setAttribute(minScaleAttr, String(value));\r\n }\r\n get reachMinScaleStrategy() {\r\n const attrValue = this.getAttribute(reachMinScaleStrategyAttr);\r\n const v = attrValue;\r\n return v || reachMinScaleStrategyDefault;\r\n }\r\n set reachMinScaleStrategy(value) {\r\n this.setAttribute(reachMinScaleStrategyAttr, value);\r\n }\r\n get allowPanMinScale() {\r\n const attrValue = this.getAttribute(allowPanMinScaleAttr);\r\n if (!attrValue)\r\n return ALLOW_PAN_MIN_SCALE;\r\n const value = parseFloat(attrValue);\r\n if (Number.isFinite(value))\r\n return Math.max(ALLOW_PAN_MIN_SCALE, value);\r\n return ALLOW_PAN_MIN_SCALE;\r\n }\r\n set allowPanMinScale(value) {\r\n this.setAttribute(allowPanMinScaleAttr, String(value));\r\n }\r\n get resetToMinScaleLimit() {\r\n const attrValue = this.getAttribute(resetToMinScaleLimitAttr);\r\n if (!attrValue)\r\n return RESET_TO_MIN_SCALE_LIMIT;\r\n const value = parseFloat(attrValue);\r\n if (Number.isFinite(value))\r\n return Math.max(RESET_TO_MIN_SCALE_LIMIT, value);\r\n return RESET_TO_MIN_SCALE_LIMIT;\r\n }\r\n set resetToMinScaleLimit(value) {\r\n this.setAttribute(resetToMinScaleLimitAttr, String(value));\r\n }\r\n get stopPropagateHandled() {\r\n return this.hasAttribute(stopPropagateHandledAttr);\r\n }\r\n set stopPropagateHandled(value) {\r\n if (value) {\r\n this.setAttribute(stopPropagateHandledAttr, '');\r\n }\r\n else {\r\n this.removeAttribute(stopPropagateHandledAttr);\r\n }\r\n }\r\n connectedCallback() {\r\n this._stageElChange();\r\n }\r\n get x() {\r\n return this._transform.e;\r\n }\r\n get y() {\r\n return this._transform.f;\r\n }\r\n get scale() {\r\n return this._transform.a;\r\n }\r\n /**\r\n * Change the scale, adjusting x/y by a given transform origin.\r\n */\r\n scaleTo(scale, opts = {}) {\r\n let { originX = 0, originY = 0, } = opts;\r\n const { relativeTo = 'content', allowChangeEvent = false, } = opts;\r\n const relativeToEl = (relativeTo === 'content' ? this._positioningEl : this);\r\n // No content element? Fall back to just setting scale\r\n if (!relativeToEl || !this._positioningEl) {\r\n this.setTransform({ scale, allowChangeEvent });\r\n return;\r\n }\r\n const rect = relativeToEl.getBoundingClientRect();\r\n originX = getAbsoluteValue(originX, rect.width);\r\n originY = getAbsoluteValue(originY, rect.height);\r\n if (relativeTo === 'content') {\r\n originX += this.x;\r\n originY += this.y;\r\n }\r\n else {\r\n const currentRect = this._positioningEl.getBoundingClientRect();\r\n originX -= currentRect.left;\r\n originY -= currentRect.top;\r\n }\r\n this._applyChange({\r\n allowChangeEvent,\r\n originX,\r\n originY,\r\n scaleDiff: scale / this.scale,\r\n });\r\n }\r\n /**\r\n * Update the stage with a given scale/x/y.\r\n */\r\n setTransform(opts = {}) {\r\n const { scale = this.scale, allowChangeEvent = false, } = opts;\r\n let { x = this.x, y = this.y, } = opts;\r\n // If we don't have an element to position, just set the value as given.\r\n // We'll check bounds later.\r\n if (!this._positioningEl) {\r\n this._updateTransform(scale, x, y, allowChangeEvent);\r\n return;\r\n }\r\n // Get current layout\r\n const thisBounds = this.getBoundingClientRect();\r\n const positioningElBounds = this._positioningEl.getBoundingClientRect();\r\n // Not displayed. May be disconnected or display:none.\r\n // Just take the values, and we'll check bounds later.\r\n if (!thisBounds.width || !thisBounds.height) {\r\n this._updateTransform(scale, x, y, allowChangeEvent);\r\n return;\r\n }\r\n // Create points for _positioningEl.\r\n let topLeft = createPoint();\r\n topLeft.x = positioningElBounds.left - thisBounds.left;\r\n topLeft.y = positioningElBounds.top - thisBounds.top;\r\n let bottomRight = createPoint();\r\n bottomRight.x = positioningElBounds.width + topLeft.x;\r\n bottomRight.y = positioningElBounds.height + topLeft.y;\r\n // Calculate the intended position of _positioningEl.\r\n const matrix = createMatrix()\r\n .translate(x, y)\r\n .scale(scale)\r\n // Undo current transform\r\n .multiply(this._transform.inverse());\r\n topLeft = topLeft.matrixTransform(matrix);\r\n bottomRight = bottomRight.matrixTransform(matrix);\r\n // Ensure _positioningEl can't move beyond out-of-bounds.\r\n // Correct for x\r\n if (topLeft.x > thisBounds.width) {\r\n x += thisBounds.width - topLeft.x;\r\n }\r\n else if (bottomRight.x < 0) {\r\n x += -bottomRight.x;\r\n }\r\n // Correct for y\r\n if (topLeft.y > thisBounds.height) {\r\n y += thisBounds.height - topLeft.y;\r\n }\r\n else if (bottomRight.y < 0) {\r\n y += -bottomRight.y;\r\n }\r\n this._updateTransform(scale, x, y, allowChangeEvent);\r\n }\r\n /**\r\n * Update transform values without checking bounds. This is only called in setTransform.\r\n */\r\n _updateTransform(scale, x, y, allowChangeEvent) {\r\n // Avoid scaling to zero\r\n if (scale < this.minScale) {\r\n scale = this.minScale;\r\n }\r\n // Return if there's no change\r\n if (scale === this.scale &&\r\n x === this.x &&\r\n y === this.y)\r\n return;\r\n this._transform.e = x;\r\n this._transform.f = y;\r\n this._transform.d = this._transform.a = scale;\r\n this.style.setProperty('--x', this.x + 'px');\r\n this.style.setProperty('--y', this.y + 'px');\r\n this.style.setProperty('--scale', this.scale + '');\r\n if (allowChangeEvent) {\r\n const event = new Event('change', { bubbles: true });\r\n this.dispatchEvent(event);\r\n }\r\n }\r\n /**\r\n * Called when the direct children of this element change.\r\n * Until we have have shadow dom support across the board, we\r\n * require a single element to be the child of <pinch-zoom>, and\r\n * that's the element we pan/scale.\r\n */\r\n _stageElChange() {\r\n this._positioningEl = undefined;\r\n if (this.children.length === 0)\r\n return;\r\n this._positioningEl = this.children[0];\r\n if (this.children.length > 1) {\r\n console.warn('<pinch-zoom> must not have more than one child.');\r\n }\r\n // Do a bounds check\r\n this.setTransform({ allowChangeEvent: true });\r\n }\r\n _onWheel(event) {\r\n if (!this._positioningEl)\r\n return;\r\n event.preventDefault();\r\n const currentRect = this._positioningEl.getBoundingClientRect();\r\n let { deltaY } = event;\r\n const { ctrlKey, deltaMode } = event;\r\n if (deltaMode === 1) { // 1 is \"lines\", 0 is \"pixels\"\r\n // Firefox uses \"lines\" for some types of mouse\r\n deltaY *= 15;\r\n }\r\n // ctrlKey is true when pinch-zooming on a trackpad.\r\n const divisor = ctrlKey ? 100 : 300;\r\n const scaleDiff = 1 - deltaY / divisor;\r\n const isZoomOut = scaleDiff < 1;\r\n this._applyChange({\r\n scaleDiff,\r\n originX: event.clientX - currentRect.left,\r\n originY: event.clientY - currentRect.top,\r\n allowChangeEvent: true,\r\n });\r\n if (isZoomOut) {\r\n this._maybeResetScale();\r\n }\r\n }\r\n _onPointerMove(previousPointers, currentPointers, event) {\r\n if (!this._positioningEl)\r\n return;\r\n const isPan = previousPointers.length < 2;\r\n if (isPan && !this._allowPan()) {\r\n return;\r\n }\r\n // Combine next points with previous points\r\n const currentRect = this._positioningEl.getBoundingClientRect();\r\n // For calculating panning movement\r\n const prevMidpoint = getMidpoint(previousPointers[0], previousPointers[1]);\r\n const newMidpoint = getMidpoint(currentPointers[0], currentPointers[1]);\r\n // Midpoint within the element\r\n const originX = prevMidpoint.clientX - currentRect.left;\r\n const originY = prevMidpoint.clientY - currentRect.top;\r\n // Calculate the desired change in scale\r\n const prevDistance = getDistance(previousPointers[0], previousPointers[1]);\r\n const newDistance = getDistance(currentPointers[0], currentPointers[1]);\r\n const scaleDiff = prevDistance ? newDistance / prevDistance : 1;\r\n this._applyChange({\r\n originX, originY, scaleDiff,\r\n panX: newMidpoint.clientX - prevMidpoint.clientX,\r\n panY: newMidpoint.clientY - prevMidpoint.clientY,\r\n allowChangeEvent: true,\r\n });\r\n this._maybeStopPropagate(event);\r\n }\r\n _maybeResetScale() {\r\n if (roundedCmp(this.scale, this.resetToMinScaleLimit) <= 0) {\r\n this._resetToMinScale();\r\n }\r\n }\r\n _onPointerEnd(pointer, currentPointers, event) {\r\n if (!this._positioningEl)\r\n return;\r\n const totalPointers = 1 + currentPointers.length;\r\n const isPinch = totalPointers >= 2;\r\n const isPan = totalPointers == 1;\r\n if (isPinch) {\r\n this._maybeResetScale();\r\n }\r\n if (isPan && !this._allowPan()) {\r\n return;\r\n }\r\n this._maybeStopPropagate(event);\r\n }\r\n _resetToMinScale() {\r\n if (this.reachMinScaleStrategy === 'reset') {\r\n this.setTransform({ scale: this.minScale, x: 0, y: 0 });\r\n }\r\n else {\r\n this.setTransform({ scale: this.minScale });\r\n }\r\n }\r\n /** Transform the view & fire a change event */\r\n _applyChange(opts = {}) {\r\n const { panX = 0, panY = 0, originX = 0, originY = 0, scaleDiff = 1, allowChangeEvent = false, } = opts;\r\n const matrix = createMatrix()\r\n // Translate according to panning.\r\n .translate(panX, panY)\r\n // Scale about the origin.\r\n .translate(originX, originY)\r\n // Apply current translate\r\n .translate(this.x, this.y)\r\n .scale(scaleDiff)\r\n .translate(-originX, -originY)\r\n // Apply current scale.\r\n .scale(this.scale);\r\n // Convert the transform into basic translate & scale.\r\n this.setTransform({\r\n allowChangeEvent,\r\n scale: matrix.a,\r\n x: matrix.e,\r\n y: matrix.f,\r\n });\r\n }\r\n _maybeStopPropagate(event) {\r\n if (this.stopPropagateHandled) {\r\n event.stopPropagation();\r\n }\r\n }\r\n _allowPan() {\r\n return (this.allowPanMinScale > 0\r\n && roundedCmp(this.scale, this.allowPanMinScale) > 0);\r\n }\r\n _maybeEmitCancel(pointers) {\r\n const makeCancelEvent = (pointer) => (new PointerEvent('pointercancel', {\r\n pointerId: pointer.id,\r\n clientX: pointer.clientX,\r\n clientY: pointer.clientY,\r\n }));\r\n if (this.stopPropagateHandled) {\r\n pointers.forEach(p => {\r\n if (this.parentElement && typeof this.parentElement.dispatchEvent === 'function') {\r\n this.parentElement.dispatchEvent(makeCancelEvent(p));\r\n }\r\n });\r\n }\r\n }\r\n _onClick(event, pointerTracker) {\r\n // We never handle non-left-clicks\r\n if (event.button !== BUTTON_LEFT) {\r\n return;\r\n }\r\n const wasPanning = pointerTracker.currentPointers.length === 0;\r\n const handled = !(wasPanning && !this._allowPan());\r\n if (handled) {\r\n this._maybeStopPropagate(event);\r\n }\r\n }\r\n}\n\ncustomElements.define('pinch-zoom', PinchZoom);\n\nexport default PinchZoom;\n","import { extend, isArray, toNumber, isMap, isIntegerKey, hasOwn, isSymbol, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index =\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n run(fn) {\n if (this.active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n }\n finally {\n activeEffectScope = currentEffectScope;\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this.active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`onScopeDispose() is called when there is no active effect scope` +\n ` to be associated with.`);\n }\n}\n\nconst createDep = (effects) => {\n const dep = new Set(effects);\n dep.w = 0;\n dep.n = 0;\n return dep;\n};\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({ deps }) => {\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].w |= trackOpBit; // set was tracked\n }\n }\n};\nconst finalizeDepMarkers = (effect) => {\n const { deps } = effect;\n if (deps.length) {\n let ptr = 0;\n for (let i = 0; i < deps.length; i++) {\n const dep = deps[i];\n if (wasTracked(dep) && !newTracked(dep)) {\n dep.delete(effect);\n }\n else {\n deps[ptr++] = dep;\n }\n // clear bits\n dep.w &= ~trackOpBit;\n dep.n &= ~trackOpBit;\n }\n deps.length = ptr;\n }\n};\n\nconst targetMap = new WeakMap();\n// The number of effects currently being tracked recursively.\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\n/**\n * The bitwise track markers support at most 30 levels of recursion.\n * This value is chosen to enable modern JS engines to use a SMI on all platforms.\n * When recursion depth is greater, fall back to using a full cleanup.\n */\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');\nconst MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');\nclass ReactiveEffect {\n constructor(fn, scheduler = null, scope) {\n this.fn = fn;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n this.parent = undefined;\n recordEffectScope(this, scope);\n }\n run() {\n if (!this.active) {\n return this.fn();\n }\n let parent = activeEffect;\n let lastShouldTrack = shouldTrack;\n while (parent) {\n if (parent === this) {\n return;\n }\n parent = parent.parent;\n }\n try {\n this.parent = activeEffect;\n activeEffect = this;\n shouldTrack = true;\n trackOpBit = 1 << ++effectTrackDepth;\n if (effectTrackDepth <= maxMarkerBits) {\n initDepMarkers(this);\n }\n else {\n cleanupEffect(this);\n }\n return this.fn();\n }\n finally {\n if (effectTrackDepth <= maxMarkerBits) {\n finalizeDepMarkers(this);\n }\n trackOpBit = 1 << --effectTrackDepth;\n activeEffect = this.parent;\n shouldTrack = lastShouldTrack;\n this.parent = undefined;\n if (this.deferStop) {\n this.stop();\n }\n }\n }\n stop() {\n // stopped while running itself - defer the cleanup\n if (activeEffect === this) {\n this.deferStop = true;\n }\n else if (this.active) {\n cleanupEffect(this);\n if (this.onStop) {\n this.onStop();\n }\n this.active = false;\n }\n }\n}\nfunction cleanupEffect(effect) {\n const { deps } = effect;\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].delete(effect);\n }\n deps.length = 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn);\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === undefined ? true : last;\n}\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, (depsMap = new Map()));\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, (dep = createDep()));\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { effect: activeEffect, target, type, key }\n : undefined;\n trackEffects(dep, eventInfo);\n }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n let shouldTrack = false;\n if (effectTrackDepth <= maxMarkerBits) {\n if (!newTracked(dep)) {\n dep.n |= trackOpBit; // set newly tracked\n shouldTrack = !wasTracked(dep);\n }\n }\n else {\n // Full cleanup mode.\n shouldTrack = !dep.has(activeEffect);\n }\n if (shouldTrack) {\n dep.add(activeEffect);\n activeEffect.deps.push(dep);\n if ((process.env.NODE_ENV !== 'production') && activeEffect.onTrack) {\n activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n // never been tracked\n return;\n }\n let deps = [];\n if (type === \"clear\" /* TriggerOpTypes.CLEAR */) {\n // collection being cleared\n // trigger all effects for target\n deps = [...depsMap.values()];\n }\n else if (key === 'length' && isArray(target)) {\n const newLength = toNumber(newValue);\n depsMap.forEach((dep, key) => {\n if (key === 'length' || key >= newLength) {\n deps.push(dep);\n }\n });\n }\n else {\n // schedule runs for SET | ADD | DELETE\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n // also run for iteration key on ADD | DELETE | Map.SET\n switch (type) {\n case \"add\" /* TriggerOpTypes.ADD */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n else if (isIntegerKey(key)) {\n // new index added to array -> length changes\n deps.push(depsMap.get('length'));\n }\n break;\n case \"delete\" /* TriggerOpTypes.DELETE */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\" /* TriggerOpTypes.SET */:\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { target, type, key, newValue, oldValue, oldTarget }\n : undefined;\n if (deps.length === 1) {\n if (deps[0]) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(deps[0], eventInfo);\n }\n else {\n triggerEffects(deps[0]);\n }\n }\n }\n else {\n const effects = [];\n for (const dep of deps) {\n if (dep) {\n effects.push(...dep);\n }\n }\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(createDep(effects), eventInfo);\n }\n else {\n triggerEffects(createDep(effects));\n }\n }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n // spread into array for stabilization\n const effects = isArray(dep) ? dep : [...dep];\n for (const effect of effects) {\n if (effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n for (const effect of effects) {\n if (!effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n}\nfunction triggerEffect(effect, debuggerEventExtraInfo) {\n if (effect !== activeEffect || effect.allowRecurse) {\n if ((process.env.NODE_ENV !== 'production') && effect.onTrigger) {\n effect.onTrigger(extend({ effect }, debuggerEventExtraInfo));\n }\n if (effect.scheduler) {\n effect.scheduler();\n }\n else {\n effect.run();\n }\n }\n}\n\nconst isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n/*#__PURE__*/\nObject.getOwnPropertyNames(Symbol)\n // ios10.x Object.getOwnPropertyNames(Symbol) can enumerate 'arguments' and 'caller'\n // but accessing them on Symbol leads to TypeError because Symbol is a strict mode\n // function\n .filter(key => key !== 'arguments' && key !== 'caller')\n .map(key => Symbol[key])\n .filter(isSymbol));\nconst get = /*#__PURE__*/ createGetter();\nconst shallowGet = /*#__PURE__*/ createGetter(false, true);\nconst readonlyGet = /*#__PURE__*/ createGetter(true);\nconst shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);\nconst arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\n instrumentations[key] = function (...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\" /* TrackOpTypes.GET */, i + '');\n }\n // we run the method using the original args first (which may be reactive)\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n // if that didn't work, run it again using raw values.\n return arr[key](...args.map(toRaw));\n }\n else {\n return res;\n }\n };\n });\n ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\n instrumentations[key] = function (...args) {\n pauseTracking();\n const res = toRaw(this)[key].apply(this, args);\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction createGetter(isReadonly = false, shallow = false) {\n return function get(target, key, receiver) {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */) {\n return shallow;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */ &&\n receiver ===\n (isReadonly\n ? shallow\n ? shallowReadonlyMap\n : readonlyMap\n : shallow\n ? shallowReactiveMap\n : reactiveMap).get(target)) {\n return target;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly) {\n track(target, \"get\" /* TrackOpTypes.GET */, key);\n }\n if (shallow) {\n return res;\n }\n if (isRef(res)) {\n // ref unwrapping - skip unwrap for Array + integer key.\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n // Convert returned value into a proxy as well. we do the isObject check\n // here to avoid invalid value warning. Also need to lazy access readonly\n // and reactive here to avoid circular dependency.\n return isReadonly ? readonly(res) : reactive(res);\n }\n return res;\n };\n}\nconst set = /*#__PURE__*/ createSetter();\nconst shallowSet = /*#__PURE__*/ createSetter(true);\nfunction createSetter(shallow = false) {\n return function set(target, key, value, receiver) {\n let oldValue = target[key];\n if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n return false;\n }\n if (!shallow) {\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key)\n ? Number(key) < target.length\n : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n // don't trigger if target is something up in the prototype chain of original\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n }\n return result;\n };\n}\nfunction deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\" /* TrackOpTypes.HAS */, key);\n }\n return result;\n}\nfunction ownKeys(target) {\n track(target, \"iterate\" /* TrackOpTypes.ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);\n return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n get,\n set,\n deleteProperty,\n has,\n ownKeys\n};\nconst readonlyHandlers = {\n get: readonlyGet,\n set(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n },\n deleteProperty(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n }\n};\nconst shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, {\n get: shallowGet,\n set: shallowSet\n});\n// Props handlers are special in the sense that it should not unwrap top-level\n// refs (in order to allow refs to be explicitly passed down), but should\n// retain the reactivity of the normal readonly object.\nconst shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, {\n get: shallowReadonlyGet\n});\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\n // of the value\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, key);\n }\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n }\n else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n }\n else if (target !== rawTarget) {\n // #3602 readonly(reactive(Map))\n // ensure that the nested reactive `Map` can do tracking for itself\n target.get(key);\n }\n}\nfunction has$1(key, isReadonly = false) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, key);\n }\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, rawKey);\n }\n return key === rawKey\n ? target.has(key)\n : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n !isReadonly && track(toRaw(target), \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return Reflect.get(target, 'size', target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, value, value);\n }\n return this;\n}\nfunction set$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : undefined;\n // forward the operation before queueing reactions\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = (process.env.NODE_ENV !== 'production')\n ? isMap(target)\n ? new Map(target)\n : new Set(target)\n : undefined;\n // forward the operation before queueing reactions\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\" /* TriggerOpTypes.CLEAR */, undefined, undefined, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return target.forEach((value, key) => {\n // important: make sure the callback is\n // 1. invoked with the reactive map as `this` and 3rd arg\n // 2. the value received should be a corresponding reactive/readonly.\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function (...args) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);\n const isKeyOnly = method === 'keys' && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly &&\n track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n // return a wrapped iterator which returns observed versions of the\n // values emitted from the real iterator\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done\n ? { value, done }\n : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function (...args) {\n if ((process.env.NODE_ENV !== 'production')) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\n }\n return type === \"delete\" /* TriggerOpTypes.DELETE */ ? false : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations = {\n get(key) {\n return get$1(this, key);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations = {\n get(key) {\n return get$1(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\n iteratorMethods.forEach(method => {\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\n });\n return [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n ];\n}\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow\n ? isReadonly\n ? shallowReadonlyInstrumentations\n : shallowInstrumentations\n : isReadonly\n ? readonlyInstrumentations\n : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */) {\n return target;\n }\n return Reflect.get(hasOwn(instrumentations, key) && key in target\n ? instrumentations\n : target, key, receiver);\n };\n}\nconst mutableCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n console.warn(`Reactive ${type} contains both the raw and reactive ` +\n `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +\n `which can lead to inconsistencies. ` +\n `Avoid differentiating between the raw and reactive versions ` +\n `of an object and only use the reactive version if possible.`);\n }\n}\n\nconst reactiveMap = new WeakMap();\nconst shallowReactiveMap = new WeakMap();\nconst readonlyMap = new WeakMap();\nconst shallowReadonlyMap = new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case 'Object':\n case 'Array':\n return 1 /* TargetType.COMMON */;\n case 'Map':\n case 'Set':\n case 'WeakMap':\n case 'WeakSet':\n return 2 /* TargetType.COLLECTION */;\n default:\n return 0 /* TargetType.INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value)\n ? 0 /* TargetType.INVALID */\n : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\n}\n/**\n * Creates a readonly copy of the original object. Note the returned copy is not\n * made reactive, but `readonly` can be called on an already reactive object.\n */\nfunction readonly(target) {\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);\n}\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n // target is already a Proxy, return it.\n // exception: calling readonly() on a reactive object\n if (target[\"__v_raw\" /* ReactiveFlags.RAW */] &&\n !(isReadonly && target[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */])) {\n return target;\n }\n // target already has corresponding Proxy\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n // only specific value types can be observed.\n const targetType = getTargetType(target);\n if (targetType === 0 /* TargetType.INVALID */) {\n return target;\n }\n const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n return !!(value && value[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref) {\n if (shouldTrack && activeEffect) {\n ref = toRaw(ref);\n if ((process.env.NODE_ENV !== 'production')) {\n trackEffects(ref.dep || (ref.dep = createDep()), {\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n else {\n trackEffects(ref.dep || (ref.dep = createDep()));\n }\n }\n}\nfunction triggerRefValue(ref, newVal) {\n ref = toRaw(ref);\n if (ref.dep) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(ref.dep, {\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value',\n newValue: newVal\n });\n }\n else {\n triggerEffects(ref.dep);\n }\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = undefined;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, newVal);\n }\n }\n}\nfunction triggerRef(ref) {\n triggerRefValue(ref, (process.env.NODE_ENV !== 'production') ? ref.value : void 0);\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs)\n ? objectWithRefs\n : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = undefined;\n this.__v_isRef = true;\n const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if ((process.env.NODE_ENV !== 'production') && !isProxy(object)) {\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === undefined ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n}\nfunction toRef(object, key, defaultValue) {\n const val = object[key];\n return isRef(val)\n ? val\n : new ObjectRefImpl(object, key, defaultValue);\n}\n\nvar _a;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this._setter = _setter;\n this.dep = undefined;\n this.__v_isRef = true;\n this[_a] = false;\n this._dirty = true;\n this.effect = new ReactiveEffect(getter, () => {\n if (!this._dirty) {\n this._dirty = true;\n triggerRefValue(this);\n }\n });\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */] = isReadonly;\n }\n get value() {\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n const self = toRaw(this);\n trackRefValue(self);\n if (self._dirty || !self._cacheable) {\n self._dirty = false;\n self._value = self.effect.run();\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n}\n_a = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = (process.env.NODE_ENV !== 'production')\n ? () => {\n console.warn('Write operation failed: computed value is readonly');\n }\n : NOOP;\n }\n else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if ((process.env.NODE_ENV !== 'production') && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nvar _a$1;\nconst tick = /*#__PURE__*/ Promise.resolve();\nconst queue = [];\nlet queued = false;\nconst scheduler = (fn) => {\n queue.push(fn);\n if (!queued) {\n queued = true;\n tick.then(flush);\n }\n};\nconst flush = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]();\n }\n queue.length = 0;\n queued = false;\n};\nclass DeferredComputedRefImpl {\n constructor(getter) {\n this.dep = undefined;\n this._dirty = true;\n this.__v_isRef = true;\n this[_a$1] = true;\n let compareTarget;\n let hasCompareTarget = false;\n let scheduled = false;\n this.effect = new ReactiveEffect(getter, (computedTrigger) => {\n if (this.dep) {\n if (computedTrigger) {\n compareTarget = this._value;\n hasCompareTarget = true;\n }\n else if (!scheduled) {\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\n scheduled = true;\n hasCompareTarget = false;\n scheduler(() => {\n if (this.effect.active && this._get() !== valueToCompare) {\n triggerRefValue(this);\n }\n scheduled = false;\n });\n }\n // chained upstream computeds are notified synchronously to ensure\n // value invalidation in case of sync access; normal effects are\n // deferred to be triggered in scheduler.\n for (const e of this.dep) {\n if (e.computed instanceof DeferredComputedRefImpl) {\n e.scheduler(true /* computedTrigger */);\n }\n }\n }\n this._dirty = true;\n });\n this.effect.computed = this;\n }\n _get() {\n if (this._dirty) {\n this._dirty = false;\n return (this._value = this.effect.run());\n }\n return this._value;\n }\n get value() {\n trackRefValue(this);\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n return toRaw(this)._get();\n }\n}\n_a$1 = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction deferredComputed(getter) {\n return new DeferredComputedRefImpl(getter);\n}\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, track, trigger, triggerRef, unref };\n","import { pauseTracking, resetTracking, isRef, toRaw, isShallow as isShallow$1, isReactive, ReactiveEffect, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, EffectScope, markRaw, proxyRefs, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, toNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, hasChanged, remove, isSet, isMap, isPlainObject, invokeArrayFns, isBuiltInDirective, capitalize, isGloballyWhitelisted, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, NO, normalizeClass, normalizeStyle } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn(msg, ...args) {\n if (!(process.env.NODE_ENV !== 'production'))\n return;\n // avoid props formatting or warn handler tracking deps that might be mutated\n // during patch, leading to infinite recursion.\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(appWarnHandler, instance, 11 /* ErrorCodes.APP_WARN_HANDLER */, [\n msg + args.join(''),\n instance && instance.proxy,\n trace\n .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)\n .join('\\n'),\n trace\n ]);\n }\n else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n /* istanbul ignore if */\n if (trace.length &&\n // avoid spamming console during tests\n !false) {\n warnArgs.push(`\\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n // we can't just use the stack because it will be incomplete during updates\n // that did not start from the root. Re-construct the parent chain using\n // instance parent pointers.\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n }\n else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\n/* istanbul ignore next */\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\n const close = `>` + postfix;\n return vnode.props\n ? [open, ...formatProps(vnode.props), close]\n : [open + close];\n}\n/* istanbul ignore next */\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach(key => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\n/* istanbul ignore next */\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n }\n else if (typeof value === 'number' ||\n typeof value === 'boolean' ||\n value == null) {\n return raw ? value : [`${key}=${value}`];\n }\n else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n }\n else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n }\n else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\" /* LifecycleHooks.SERVER_PREFETCH */]: 'serverPrefetch hook',\n [\"bc\" /* LifecycleHooks.BEFORE_CREATE */]: 'beforeCreate hook',\n [\"c\" /* LifecycleHooks.CREATED */]: 'created hook',\n [\"bm\" /* LifecycleHooks.BEFORE_MOUNT */]: 'beforeMount hook',\n [\"m\" /* LifecycleHooks.MOUNTED */]: 'mounted hook',\n [\"bu\" /* LifecycleHooks.BEFORE_UPDATE */]: 'beforeUpdate hook',\n [\"u\" /* LifecycleHooks.UPDATED */]: 'updated',\n [\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */]: 'beforeUnmount hook',\n [\"um\" /* LifecycleHooks.UNMOUNTED */]: 'unmounted hook',\n [\"a\" /* LifecycleHooks.ACTIVATED */]: 'activated hook',\n [\"da\" /* LifecycleHooks.DEACTIVATED */]: 'deactivated hook',\n [\"ec\" /* LifecycleHooks.ERROR_CAPTURED */]: 'errorCaptured hook',\n [\"rtc\" /* LifecycleHooks.RENDER_TRACKED */]: 'renderTracked hook',\n [\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */]: 'renderTriggered hook',\n [0 /* ErrorCodes.SETUP_FUNCTION */]: 'setup function',\n [1 /* ErrorCodes.RENDER_FUNCTION */]: 'render function',\n [2 /* ErrorCodes.WATCH_GETTER */]: 'watcher getter',\n [3 /* ErrorCodes.WATCH_CALLBACK */]: 'watcher callback',\n [4 /* ErrorCodes.WATCH_CLEANUP */]: 'watcher cleanup function',\n [5 /* ErrorCodes.NATIVE_EVENT_HANDLER */]: 'native event handler',\n [6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */]: 'component event handler',\n [7 /* ErrorCodes.VNODE_HOOK */]: 'vnode hook',\n [8 /* ErrorCodes.DIRECTIVE_HOOK */]: 'directive hook',\n [9 /* ErrorCodes.TRANSITION_HOOK */]: 'transition hook',\n [10 /* ErrorCodes.APP_ERROR_HANDLER */]: 'app errorHandler',\n [11 /* ErrorCodes.APP_WARN_HANDLER */]: 'app warnHandler',\n [12 /* ErrorCodes.FUNCTION_REF */]: 'ref function',\n [13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */]: 'async component loader',\n [14 /* ErrorCodes.SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +\n 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n }\n catch (err) {\n handleError(err, instance, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch(err => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n // the exposed instance is the render proxy to keep it consistent with 2.x\n const exposedInstance = instance.proxy;\n // in production the hook receives only the error code\n const errorInfo = (process.env.NODE_ENV !== 'production') ? ErrorTypeStrings[type] : type;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n // app-level handling\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(appErrorHandler, null, 10 /* ErrorCodes.APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if ((process.env.NODE_ENV !== 'production')) {\n const info = ErrorTypeStrings[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n // crash in dev by default so it's more noticeable\n if (throwInDev) {\n throw err;\n }\n else {\n console.error(err);\n }\n }\n else {\n // recover in prod to reduce the impact on end-user\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /*#__PURE__*/ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\n// #2768\n// Use binary-search to find a suitable position in the queue,\n// so that the queue maintains the increasing order of job's id,\n// which can prevent the job from being skipped and also can avoid repeated patching.\nfunction findInsertionIndex(id) {\n // the start index should be `flushIndex + 1`\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = (start + end) >>> 1;\n const middleJobId = getId(queue[middle]);\n middleJobId < id ? (start = middle + 1) : (end = middle);\n }\n return start;\n}\nfunction queueJob(job) {\n // the dedupe search uses the startIndex argument of Array.includes()\n // by default the search index includes the current job that is being run\n // so it cannot recursively trigger itself again.\n // if the job is a watch() callback, the search will start with a +1 index to\n // allow it recursively trigger itself - it is the user's responsibility to\n // ensure it doesn't end up in an infinite loop.\n if (!queue.length ||\n !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {\n if (job.id == null) {\n queue.push(job);\n }\n else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs ||\n !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {\n pendingPostFlushCbs.push(cb);\n }\n }\n else {\n // if cb is an array, it is a component lifecycle hook which can only be\n // triggered by a job, which is already deduped in the main queue, so\n // we can skip duplicate check here to improve perf\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(seen, \n// if currently flushing, skip the current job itself\ni = isFlushing ? flushIndex + 1 : 0) {\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if ((process.env.NODE_ENV !== 'production') && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n // #1947 already has active queue, nested flushPostFlushCbs call\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if ((process.env.NODE_ENV !== 'production') &&\n checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child so its render effect will have smaller\n // priority number)\n // 2. If a component is unmounted during a parent component's update,\n // its update can be skipped.\n queue.sort(comparator);\n // conditional usage of checkRecursiveUpdate must be determined out of\n // try ... catch block since Rollup by default de-optimizes treeshaking\n // inside try-catch. This can leave all warning code unshaked. Although\n // they would get eventually shaken by a minifier like terser, some minifiers\n // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\n const check = (process.env.NODE_ENV !== 'production')\n ? (job) => checkRecursiveUpdates(seen, job)\n : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if ((process.env.NODE_ENV !== 'production') && check(job)) {\n continue;\n }\n // console.log(`running:`, job.id)\n callWithErrorHandling(job, null, 14 /* ErrorCodes.SCHEDULER */);\n }\n }\n }\n finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n // some postFlushCb queued jobs!\n // keep flushing until it drains.\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n }\n else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +\n `This means you have a reactive effect that is mutating its own ` +\n `dependencies and thus recursively triggering itself. Possible sources ` +\n `include component template, render function, updated hook or ` +\n `watcher source function.`);\n return true;\n }\n else {\n seen.set(fn, count + 1);\n }\n }\n}\n\n/* eslint-disable no-restricted-globals */\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = new Set();\n// Expose the HMR runtime on the global object\n// This makes it entirely tree-shakable without polluting the exports and makes\n// it easier to be used in toolings like vue-loader\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\n// to be set so that its instances can be registered / removed.\nif ((process.env.NODE_ENV !== 'production')) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n // update initial record (for not-yet-rendered component)\n record.initialDef.render = newRender;\n [...record.instances].forEach(instance => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n // this flag forces child components with slot content to update\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n // update initial def (for not-yet-rendered components)\n updateComponentDef(record.initialDef, newComp);\n // create a snapshot which avoids the set being mutated during updates\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n // 1. Update existing comp definition to match new one\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n // 2. mark definition dirty. This forces the renderer to replace the\n // component on patch.\n hmrDirtyComponents.add(oldComp);\n }\n // 3. invalidate options resolution cache\n instance.appContext.optionsCache.delete(instance.type);\n // 4. actually update\n if (instance.ceReload) {\n // custom element\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n }\n else if (instance.parent) {\n // 4. Force the parent instance to re-render. This will cause all updated\n // components to be unmounted and re-mounted. Queue the update so that we\n // don't end up forcing the same parent to re-render multiple times.\n queueJob(instance.parent.update);\n }\n else if (instance.appContext.reload) {\n // root instance mounted via createApp() has a reload method\n instance.appContext.reload();\n }\n else if (typeof window !== 'undefined') {\n // root instance inside tree created via raw render(). Force reload.\n window.location.reload();\n }\n else {\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\n }\n }\n // 5. make sure to cleanup dirty hmr components after update\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== '__file' && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n }\n catch (e) {\n console.error(e);\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\n `Full reload required.`);\n }\n };\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n }\n else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n }\n else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== 'undefined' &&\n // some envs mock window but not fully\n window.HTMLElement &&\n // also exclude jsdom\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n // clear buffer after 3s - the user probably doesn't have devtools installed\n // at all, and keeping the buffer will cause memory leaks (#4738)\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3000);\n }\n else {\n // non-browser env, assume not installed\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit(\"app:init\" /* DevtoolsHooks.APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit(\"app:unmount\" /* DevtoolsHooks.APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* DevtoolsHooks.COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = \n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* DevtoolsHooks.COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* DevtoolsHooks.COMPONENT_REMOVED */);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools &&\n typeof devtools.cleanupBuffer === 'function' &&\n // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\n };\n}\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* DevtoolsHooks.PERFORMANCE_START */);\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* DevtoolsHooks.PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit(\"component:emit\" /* DevtoolsHooks.COMPONENT_EMIT */, component.appContext.app, component, event, params);\n}\n\nfunction emit$1(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if ((process.env.NODE_ENV !== 'production')) {\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) &&\n !(false )) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\n }\n }\n else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith('update:');\n // for v-model update:xxx events, apply modifiers on args\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map(a => (isString(a) ? a.trim() : a));\n }\n if (number) {\n args = rawArgs.map(toNumber);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\n `Note that HTML attributes are case-insensitive and you cannot use ` +\n `v-on to listen to camelCase events when using in-DOM templates. ` +\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\n }\n }\n let handlerName;\n let handler = props[(handlerName = toHandlerKey(event))] ||\n // also try camelCase event handler (#2249)\n props[(handlerName = toHandlerKey(camelize(event)))];\n // for v-model update:xxx events, also trigger kebab-case equivalent\n // for props passed via kebab-case\n if (!handler && isModelListener) {\n handler = props[(handlerName = toHandlerKey(hyphenate(event)))];\n }\n if (handler) {\n callWithAsyncErrorHandling(handler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n }\n else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== undefined) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach(key => (normalized[key] = null));\n }\n else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\n// Check if an incoming prop key is a declared emit event listener.\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\n// both considered matched listeners.\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, '');\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\n hasOwn(options, hyphenate(key)) ||\n hasOwn(options, key));\n}\n\n/**\n * mark the current rendering instance for asset resolution (e.g.\n * resolveComponent, resolveDirective) during render\n */\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\n/**\n * Note: rendering calls maybe nested. The function returns the parent rendering\n * instance if present, which should be restored after the render is done:\n *\n * ```js\n * const prev = setCurrentRenderingInstance(i)\n * // ...render\n * setCurrentRenderingInstance(prev)\n * ```\n */\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = (instance && instance.type.__scopeId) || null;\n return prev;\n}\n/**\n * Set scope id when creating hoisted vnodes.\n * @private compiler helper\n */\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\n/**\n * Technically we no longer need this after 3.0.8 but we need to keep the same\n * API for backwards compat w/ code generated by compilers.\n * @private\n */\nfunction popScopeId() {\n currentScopeId = null;\n}\n/**\n * Only for backwards compat\n * @private\n */\nconst withScopeId = (_id) => withCtx;\n/**\n * Wrap a slot function to memoize current rendering instance\n * @private compiler helper\n */\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\n) {\n if (!ctx)\n return fn;\n // already normalized\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n // If a user calls a compiled slot inside a template expression (#1745), it\n // can mess up block tracking, so by default we disable block tracking and\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\n // This isn't necessary if rendering a compiled `<slot>`, so we flip the\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n }\n finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n // mark normalized to avoid duplicated wrapping\n renderFnWithContext._n = true;\n // mark this as compiled by default\n // this is used in vnode.ts -> normalizeChildren() to set the slot\n // rendering flag.\n renderFnWithContext._c = true;\n // disable block tracking by default\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\n/**\n * dev only flag to track whether $attrs was used during render.\n * If $attrs was used during render then the warning for failed attrs\n * fallthrough can be suppressed.\n */\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) {\n // withProxy is a proxy with a different `has` trap only for\n // runtime-compiled render functions using `with` block.\n const proxyToUse = withProxy || proxy;\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n fallthroughAttrs = attrs;\n }\n else {\n // functional\n const render = Component;\n // in dev, mark attrs accessed if optional props (attrs === props)\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(render.length > 1\n ? render(props, (process.env.NODE_ENV !== 'production')\n ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n }\n : { attrs, slots, emit })\n : render(props, null /* we know it doesn't need it */));\n fallthroughAttrs = Component.props\n ? attrs\n : getFunctionalFallthrough(attrs);\n }\n }\n catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1 /* ErrorCodes.RENDER_FUNCTION */);\n result = createVNode(Comment);\n }\n // attr merging\n // in dev mode, comments are preserved, and it's possible for a template\n // to have comments along side the root element which makes it a fragment\n let root = result;\n let setRoot = undefined;\n if ((process.env.NODE_ENV !== 'production') &&\n result.patchFlag > 0 &&\n result.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 6 /* ShapeFlags.COMPONENT */)) {\n if (propsOptions && keys.some(isModelListener)) {\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\n // prop, it indicates this component expects to handle v-model and\n // it should not fallthrough.\n // related: #1543, #1643, #1989\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n }\n root = cloneVNode(root, fallthroughAttrs);\n }\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n // ignore v-model handlers when they fail to fallthrough\n if (!isModelListener(key)) {\n // remove `on`, lowercase first letter to reflect event casing\n // accurately\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n }\n else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn(`Extraneous non-props attributes (` +\n `${extraAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes.`);\n }\n if (eventAttrs.length) {\n warn(`Extraneous non-emits event listeners (` +\n `${eventAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes. ` +\n `If the listener is intended to be a component custom event listener only, ` +\n `declare it using the \"emits\" option.`);\n }\n }\n }\n }\n // inherit directives\n if (vnode.dirs) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Runtime directive used on component with non-element root node. ` +\n `The directives will not function as intended.`);\n }\n // clone before mutating since the root may be a hoisted vnode\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n // inherit transition data\n if (vnode.transition) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Component inside <Transition> renders non-element root node ` +\n `that cannot be animated.`);\n }\n root.transition = vnode.transition;\n }\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\n setRoot(root);\n }\n else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\n/**\n * dev only\n * In dev mode, template root level comments are rendered, which turns the\n * template into a fragment root, but we need to locate the single element\n * root for attrs and scope id processing.\n */\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren);\n if (!childRoot) {\n return [vnode, undefined];\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n }\n else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n // ignore user comment\n if (child.type !== Comment || child.children === 'v-if') {\n if (singleRoot) {\n // has more than 1 non-comment child, return now\n return;\n }\n else {\n singleRoot = child;\n }\n }\n }\n else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === 'class' || key === 'style' || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return (vnode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 1 /* ShapeFlags.ELEMENT */) ||\n vnode.type === Comment // potential v-if branch switch\n );\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n // Parent component's render function was hot-updated. Since this may have\n // caused the child component's slots content to have changed, we need to\n // force the child to update as well.\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n // force child update for runtime directive or transition on component vnode.\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024 /* PatchFlags.DYNAMIC_SLOTS */) {\n // slot content that references values that might have changed,\n // e.g. in a v-for\n return true;\n }\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n if (!prevProps) {\n return !!nextProps;\n }\n // presence of this flag indicates props are always non-null\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n else if (patchFlag & 8 /* PatchFlags.PROPS */) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n }\n else {\n // this path is only taken by manually written render functions\n // so presence of any children leads to a forced update\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\n) {\n while (parent && parent.subTree === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\n// Suspense exposes a component-like API, and is treated like a component\n// in the compiler, but internally it's a special built-in type that hooks\n// directly into the renderer.\nconst SuspenseImpl = {\n name: 'Suspense',\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \n // platform-specific impl passed from renderer\n rendererInternals) {\n if (n1 == null) {\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n else {\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\n// Force-casted public typing for h and TSX props inference\nconst Suspense = (SuspenseImpl\n );\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n const { p: patch, o: { createElement } } = rendererInternals;\n const hiddenContainer = createElement('div');\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\n // start mounting the content subtree in an off-dom container\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\n // now check if we have encountered any async deps\n if (suspense.deps > 0) {\n // has async\n // invoke @fallback event\n triggerEvent(vnode, 'onPending');\n triggerEvent(vnode, 'onFallback');\n // mount the fallback tree\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds);\n setActiveBranch(suspense, vnode.ssFallback);\n }\n else {\n // Suspense has no async deps. Just resolve.\n suspense.resolve();\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = (n2.suspense = n1.suspense);\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n // same root type but content may have changed.\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else if (isInFallback) {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else {\n // toggled before pending tree is resolved\n suspense.pendingId++;\n if (isHydrating) {\n // if toggled before hydration is finished, the current DOM tree is\n // no longer valid. set it as the active branch so it will be unmounted\n // when resolved\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n }\n else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n // increment pending ID. this is used to invalidate async callbacks\n // reset suspense state\n suspense.deps = 0;\n // discard effects from pending branch\n suspense.effects.length = 0;\n // discard previous container\n suspense.hiddenContainer = createElement('div');\n if (isInFallback) {\n // already in fallback state\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // toggled \"back\" to current active branch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n // force resolve\n suspense.resolve(true);\n }\n else {\n // switched to a 3rd branch\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n }\n else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // root did not change, just normal patch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newBranch);\n }\n else {\n // root node toggled\n // invoke @pending event\n triggerEvent(n2, 'onPending');\n // mount pending branch in off-dom container\n suspense.pendingBranch = newBranch;\n suspense.pendingId++;\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n // incoming branch has no async deps, resolve now.\n suspense.resolve();\n }\n else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n }\n else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\n hasWarned = true;\n // @ts-ignore `console.info` cannot be null error\n console[console.info ? 'info' : 'log'](`<Suspense> is an experimental feature and its API will likely change.`);\n }\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\n const timeout = toNumber(vnode.props && vnode.props.timeout);\n const suspense = {\n vnode,\n parent,\n parentComponent,\n isSVG,\n container,\n hiddenContainer,\n anchor,\n deps: 0,\n pendingId: 0,\n timeout: typeof timeout === 'number' ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: true,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false) {\n if ((process.env.NODE_ENV !== 'production')) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(`suspense.resolve() is called without a pending branch.`);\n }\n if (suspense.isUnmounted) {\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\n }\n }\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n }\n else if (!resume) {\n const delayEnter = activeBranch &&\n pendingBranch.transition &&\n pendingBranch.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n };\n }\n // this is initial anchor on mount\n let { anchor } = suspense;\n // unmount current active tree\n if (activeBranch) {\n // if the fallback tree was mounted, it may have been moved\n // as part of a parent suspense. get the latest anchor for insertion\n anchor = next(activeBranch);\n unmount(activeBranch, parentComponent, suspense, true);\n }\n if (!delayEnter) {\n // move content from off-dom container to actual container\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n // flush buffered effects\n // check if there is a pending parent suspense\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n // found a pending parent suspense, merge buffered post jobs\n // into that parent\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n // no pending parent suspense, flush all jobs\n if (!hasUnresolvedAncestor) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n // invoke @resolve event\n triggerEvent(vnode, 'onResolve');\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\n // invoke @fallback event\n triggerEvent(vnode, 'onFallback');\n const anchor = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n // mount the fallback tree\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n // unmount current active branch\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\n true // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container, anchor, type) {\n suspense.activeBranch &&\n move(suspense.activeBranch, container, anchor, type);\n suspense.container = container;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance\n .asyncDep.catch(err => {\n handleError(err, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n })\n .then(asyncSetupResult => {\n // retry when the setup() promise resolves.\n // component may have been unmounted before resolve.\n if (instance.isUnmounted ||\n suspense.isUnmounted ||\n suspense.pendingId !== instance.suspenseId) {\n return;\n }\n // retry from this component\n instance.asyncResolved = true;\n const { vnode } = instance;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(vnode);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n // vnode may have been replaced if an update happened before the\n // async dep is resolved.\n vnode.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(instance, vnode, \n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el), \n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode.el);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n // only decrease deps count if suspense is not already resolved\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\n }\n if (suspense.pendingBranch) {\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n /* eslint-disable no-restricted-globals */\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\n // there are two possible scenarios for server-rendered suspense:\n // - success: ssr content should be fully resolved\n // - failure: ssr content should be the fallback branch.\n // however, on the client we don't really know if it has failed or not\n // attempt to hydrate the DOM assuming it has succeeded, but we still\n // need to construct a suspense boundary first\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\n if (suspense.deps === 0) {\n suspense.resolve();\n }\n return result;\n /* eslint-enable no-restricted-globals */\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */;\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\n vnode.ssFallback = isSlotChildren\n ? normalizeSuspenseSlot(children.fallback)\n : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n // disableTracking: false\n // allow block tracking for compiled slots\n // (see ./componentRenderContext.ts)\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\n warn(`<Suspense> slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter(c => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n }\n else {\n suspense.effects.push(fn);\n }\n }\n else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n const el = (vnode.el = branch.el);\n // in case suspense is the root node of a component,\n // recursively update the HOC el\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`provide() can only be used inside setup().`);\n }\n }\n else {\n let provides = currentInstance.provides;\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n // TS doesn't allow symbol as index type\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n const instance = currentInstance || currentRenderingInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n const provides = instance.parent == null\n ? instance.vnode.appContext && instance.vnode.appContext.provides\n : instance.parent.provides;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance.proxy)\n : defaultValue;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`injection \"${String(key)}\" not found.`);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`inject() can only be used inside setup() or functional components.`);\n }\n}\n\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nconst INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(cb)) {\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` +\n `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` +\n `supports \\`watch(source, cb, options?) signature.`);\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {\n if ((process.env.NODE_ENV !== 'production') && !cb) {\n if (immediate !== undefined) {\n warn(`watch() \"immediate\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n if (deep !== undefined) {\n warn(`watch() \"deep\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n }\n const warnInvalidSource = (s) => {\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +\n `a reactive object, or an array of these types.`);\n };\n const instance = currentInstance;\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow$1(source);\n }\n else if (isReactive(source)) {\n getter = () => source;\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(s => isReactive(s) || isShallow$1(s));\n getter = () => source.map(s => {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n return traverse(s);\n }\n else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(s);\n }\n });\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = () => callWithErrorHandling(source, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n // no cb -> simple effect\n getter = () => {\n if (instance && instance.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(source, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [onCleanup]);\n };\n }\n }\n else {\n getter = NOOP;\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4 /* ErrorCodes.WATCH_CLEANUP */);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager or sync flush\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = NOOP;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n if (flush === 'sync') {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n }\n else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource\n ? new Array(source.length).fill(INITIAL_WATCHER_VALUE)\n : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n const newValue = effect.run();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some((v, i) => hasChanged(v, oldValue[i]))\n : hasChanged(newValue, oldValue)) ||\n (false )) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE\n ? undefined\n : (isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE)\n ? []\n : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n effect.run();\n }\n };\n // important: mark the job as a watcher callback so that scheduler knows\n // it is allowed to self-trigger (#1727)\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === 'sync') {\n scheduler = job; // the scheduler function gets called directly\n }\n else if (flush === 'post') {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n }\n else {\n // default: 'pre'\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, scheduler);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n job();\n }\n else {\n oldValue = effect.run();\n }\n }\n else if (flush === 'post') {\n queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);\n }\n else {\n effect.run();\n }\n const unwatch = () => {\n effect.stop();\n if (instance && instance.scope) {\n remove(instance.scope.effects, effect);\n }\n };\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\n// this.$watch\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source)\n ? source.includes('.')\n ? createPathGetter(publicThis, source)\n : () => publicThis[source]\n : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n }\n else {\n cb = value.handler;\n options = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n if (cur) {\n setCurrentInstance(cur);\n }\n else {\n unsetCurrentInstance();\n }\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split('.');\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, seen) {\n if (!isObject(value) || value[\"__v_skip\" /* ReactiveFlags.SKIP */]) {\n return value;\n }\n seen = seen || new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, seen);\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], seen);\n }\n }\n else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, seen);\n });\n }\n else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], seen);\n }\n }\n return value;\n}\n\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevTransitionKey;\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n // locate first non-comment child\n for (const c of children) {\n if (c.type !== Comment) {\n if ((process.env.NODE_ENV !== 'production') && hasFound) {\n // warn more than one non-comment child\n warn('<transition> can only be used on a single element or component. ' +\n 'Use <transition-group> for lists.');\n break;\n }\n child = c;\n hasFound = true;\n if (!(process.env.NODE_ENV !== 'production'))\n break;\n }\n }\n }\n // there's no need to track reactivity for these props so use the raw\n // props for a bit better perf\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n // check mode\n if ((process.env.NODE_ENV !== 'production') &&\n mode &&\n mode !== 'in-out' &&\n mode !== 'out-in' &&\n mode !== 'default') {\n warn(`invalid <transition> mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n // in the case of <transition><keep-alive/></transition>, we need to\n // compare the type of the kept-alive children.\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const { getTransitionKey } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === undefined) {\n prevTransitionKey = key;\n }\n else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n // handle mode\n if (oldInnerChild &&\n oldInnerChild.type !== Comment &&\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\n // update old tree's hooks in case of dynamic transition\n setTransitionHooks(oldInnerChild, leavingHooks);\n // switching between different views\n if (mode === 'out-in') {\n state.isLeaving = true;\n // return placeholder node and queue update when leave finishes\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n // #6835\n // it also needs to be updated when active is undefined\n if (instance.update.active !== false) {\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n }\n else if (mode === 'in-out' && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n // early removal callback\n el._leaveCb = () => {\n earlyRemove();\n el._leaveCb = undefined;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\n// The transition hooks are attached to the vnode as vnode.transition\n// and will be called at appropriate timing in the renderer.\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook &&\n callWithAsyncErrorHandling(hook, instance, 9 /* ErrorCodes.TRANSITION_HOOK */, args);\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every(hook => hook.length <= 1))\n done();\n }\n else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n }\n else {\n return;\n }\n }\n // for same element (v-show)\n if (el._leaveCb) {\n el._leaveCb(true /* cancelled */);\n }\n // for toggled element with same key (v-if)\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode &&\n isSameVNodeType(vnode, leavingVNode) &&\n leavingVNode.el._leaveCb) {\n // force early removal (not cancelled)\n leavingVNode.el._leaveCb();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n }\n else {\n return;\n }\n }\n let called = false;\n const done = (el._enterCb = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n }\n else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el._enterCb = undefined;\n });\n if (hook) {\n callAsyncHook(hook, [el, done]);\n }\n else {\n done();\n }\n },\n leave(el, remove) {\n const key = String(vnode.key);\n if (el._enterCb) {\n el._enterCb(true /* cancelled */);\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = (el._leaveCb = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n }\n else {\n callHook(onAfterLeave, [el]);\n }\n el._leaveCb = undefined;\n if (leavingVNodesCache[key] === vnode) {\n delete leavingVNodesCache[key];\n }\n });\n leavingVNodesCache[key] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n }\n else {\n done();\n }\n },\n clone(vnode) {\n return resolveTransitionHooks(vnode, props, state, instance);\n }\n };\n return hooks;\n}\n// the placeholder really only handles one special case: KeepAlive\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\n// placeholder with empty content to avoid the KeepAlive instance from being\n// unmounted.\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode)\n ? vnode.children\n ? vnode.children[0]\n : undefined\n : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */ && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n }\n else if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n }\n else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n // #5360 inherit parent key in case of <template v-for>\n const key = parentKey == null\n ? child.key\n : String(parentKey) + String(child.key != null ? child.key : i);\n // handle fragment children case, e.g. v-for\n if (child.type === Fragment) {\n if (child.patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */)\n keyedFragmentCount++;\n ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));\n }\n // comment placeholders should be skipped, e.g. v-if\n else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n // #1126 if a transition children list contains multiple sub fragments, these\n // fragments will be merged into a flat children array. Since each v-for\n // fragment may contain different static bindings inside, we need to de-op\n // these children to force full diffs to ensure correct behavior.\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2 /* PatchFlags.BAIL */;\n }\n }\n return ret;\n}\n\n// implementation, close to no-op\nfunction defineComponent(options) {\n return isFunction(options) ? { setup: options, name: options.name } : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out\n suspensible = true, onError: userOnError } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return (pendingRequest ||\n (thisRequest = pendingRequest =\n loader()\n .catch(err => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n }\n else {\n throw err;\n }\n })\n .then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if ((process.env.NODE_ENV !== 'production') && !comp) {\n warn(`Async component loader resolved to undefined. ` +\n `If you are using retry(), make sure to return its return value.`);\n }\n // interop module default\n if (comp &&\n (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\n comp = comp.default;\n }\n if ((process.env.NODE_ENV !== 'production') && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n })));\n };\n return defineComponent({\n name: 'AsyncComponentWrapper',\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n // already resolved\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(err, instance, 13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);\n };\n // suspense-controlled or SSR.\n if ((suspensible && instance.suspense) ||\n (isInSSRComponentSetup)) {\n return load()\n .then(comp => {\n return () => createInnerComp(comp, instance);\n })\n .catch(err => {\n onError(err);\n return () => errorComponent\n ? createVNode(errorComponent, {\n error: err\n })\n : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(`Async component timed out after ${timeout}ms.`);\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load()\n .then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n // parent is keep-alive, force update so the loaded component's\n // name is taken into account\n queueJob(instance.parent.update);\n }\n })\n .catch(err => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n }\n else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n }\n else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n // ensure inner component inherits the async wrapper's ref owner\n vnode.ref = ref;\n // pass the custom element callback on to the inner comp\n // and remove it from the async wrapper\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n // KeepAlive communicates with the instantiated renderer via the\n // ctx where the renderer passes in its internals,\n // and the KeepAlive instance exposes activate/deactivate implementations.\n // The whole point of this is to avoid importing KeepAlive directly in the\n // renderer to facilitate tree-shaking.\n const sharedContext = instance.ctx;\n // if the internal renderer is not registered, it indicates that this is server-side rendering,\n // for KeepAlive, we just need to render its children\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = new Map();\n const keys = new Set();\n let current = null;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;\n const storageContainer = createElement('div');\n sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\n const instance = vnode.component;\n move(vnode, container, anchor, 0 /* MoveType.ENTER */, parentSuspense);\n // in case props have changed\n patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);\n queuePostRenderEffect(() => {\n instance.isDeactivated = false;\n if (instance.a) {\n invokeArrayFns(instance.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance = vnode.component;\n move(vnode, storageContainer, null, 1 /* MoveType.LEAVE */, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance.da) {\n invokeArrayFns(instance.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n instance.isDeactivated = true;\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n function unmount(vnode) {\n // reset the shapeFlag so it can be properly unmounted\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || cached.type !== current.type) {\n unmount(cached);\n }\n else if (current) {\n // current active instance should no longer be kept-alive.\n // we can't unmount it now but it might be later, so reset its flag now.\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n // prune cache on include/exclude prop change\n watch(() => [props.include, props.exclude], ([include, exclude]) => {\n include && pruneCache(name => matches(include, name));\n exclude && pruneCache(name => !matches(exclude, name));\n }, \n // prune post-render after `current` has been updated\n { flush: 'post', deep: true });\n // cache sub tree after render\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n // fix #1621, the pendingCacheKey could be 0\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach(cached => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type) {\n // current instance will be unmounted as part of keep-alive's unmount\n resetShapeFlag(vnode);\n // but invoke its deactivated hook here\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n }\n else if (!isVNode(rawVNode) ||\n (!(rawVNode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) &&\n !(rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */))) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n // for async components, name check should be based in its loaded\n // inner component if available\n const name = getComponentName(isAsyncWrapper(vnode)\n ? vnode.type.__asyncResolved || {}\n : comp);\n const { include, exclude, max } = props;\n if ((include && (!name || !matches(include, name))) ||\n (exclude && name && matches(exclude, name))) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n // clone vnode if it's reused because we are going to mutate it\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n rawVNode.ssContent = vnode;\n }\n }\n // #1513 it's possible for the returned vnode to be cloned due to attr\n // fallthrough or scopeId, so the vnode here may not be the final vnode\n // that is mounted. Instead of caching it directly, we store the pending\n // key and cache `instance.subTree` (the normalized vnode) in\n // beforeMount/beforeUpdate hooks.\n pendingCacheKey = key;\n if (cachedVNode) {\n // copy over mounted state\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n // recursively update transition hooks on subTree\n setTransitionHooks(vnode, vnode.transition);\n }\n // avoid vnode being mounted as fresh\n vnode.shapeFlag |= 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n // make this key the freshest\n keys.delete(key);\n keys.add(key);\n }\n else {\n keys.add(key);\n // prune oldest entry\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n // avoid vnode being unmounted\n vnode.shapeFlag |= 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n }\n else if (isString(pattern)) {\n return pattern.split(',').includes(name);\n }\n else if (pattern.test) {\n return pattern.test(name);\n }\n /* istanbul ignore next */\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\" /* LifecycleHooks.ACTIVATED */, target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\" /* LifecycleHooks.DEACTIVATED */, target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n // cache the deactivate branch check wrapper for injected hooks so the same\n // hook can be properly deduped by the scheduler. \"__wdc\" stands for \"with\n // deactivation check\".\n const wrappedHook = hook.__wdc ||\n (hook.__wdc = () => {\n // only fire the hook if the target instance is NOT in a deactivated branch.\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n // In addition to registering it on the target instance, we walk up the parent\n // chain and register it on all ancestor instances that are keep-alive roots.\n // This avoids the need to walk the entire component tree when invoking these\n // hooks, and more importantly, avoids the need to track child components in\n // arrays.\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n // injectHook wraps the original for error handling, so make sure to remove\n // the wrapped version.\n const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n // bitwise operations to remove keep alive flags\n vnode.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n vnode.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */ ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n // cache the error handling wrapper for injected hooks so the same hook\n // can be properly deduped by the scheduler. \"__weh\" stands for \"with error\n // handling\".\n const wrappedHook = hook.__weh ||\n (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n // Set currentInstance during hook invocation.\n // This assumes the hook does not synchronously trigger other hooks, which\n // can only be false when the user does something really funky.\n setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n unsetCurrentInstance();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n }\n else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ''));\n warn(`${apiName} is called when there is no active component instance to be ` +\n `associated with. ` +\n `Lifecycle injection APIs can only be used during execution of setup().` +\n (` If you are using async setup(), make sure to register lifecycle ` +\n `hooks before the first await statement.`\n ));\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => \n// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n(!isInSSRComponentSetup || lifecycle === \"sp\" /* LifecycleHooks.SERVER_PREFETCH */) &&\n injectHook(lifecycle, (...args) => hook(...args), target);\nconst onBeforeMount = createHook(\"bm\" /* LifecycleHooks.BEFORE_MOUNT */);\nconst onMounted = createHook(\"m\" /* LifecycleHooks.MOUNTED */);\nconst onBeforeUpdate = createHook(\"bu\" /* LifecycleHooks.BEFORE_UPDATE */);\nconst onUpdated = createHook(\"u\" /* LifecycleHooks.UPDATED */);\nconst onBeforeUnmount = createHook(\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */);\nconst onUnmounted = createHook(\"um\" /* LifecycleHooks.UNMOUNTED */);\nconst onServerPrefetch = createHook(\"sp\" /* LifecycleHooks.SERVER_PREFETCH */);\nconst onRenderTriggered = createHook(\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */);\nconst onRenderTracked = createHook(\"rtc\" /* LifecycleHooks.RENDER_TRACKED */);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\" /* LifecycleHooks.ERROR_CAPTURED */, hook, target);\n}\n\n/**\nRuntime helper for applying directives to a vnode. Example usage:\n\nconst comp = resolveComponent('comp')\nconst foo = resolveDirective('foo')\nconst bar = resolveDirective('bar')\n\nreturn withDirectives(h(comp), [\n [foo, this.x],\n [bar, this.y]\n])\n*/\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn('Do not use built-in directive ids as custom directive id: ' + name);\n }\n}\n/**\n * Adds directives to a VNode.\n */\nfunction withDirectives(vnode, directives) {\n const internalInstance = currentRenderingInstance;\n if (internalInstance === null) {\n (process.env.NODE_ENV !== 'production') && warn(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(internalInstance) ||\n internalInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8 /* ErrorCodes.DIRECTIVE_HOOK */, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst COMPONENTS = 'components';\nconst DIRECTIVES = 'directives';\n/**\n * @private\n */\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol();\n/**\n * @private\n */\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n }\n else {\n // invalid types will fallthrough to createVNode and raise warning\n return (component || NULL_DYNAMIC_COMPONENT);\n }\n}\n/**\n * @private\n */\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\n// implementation\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n // explicit self name has highest priority\n if (type === COMPONENTS) {\n const selfName = getComponentName(Component, false /* do not include inferred name to avoid breaking existing code */);\n if (selfName &&\n (selfName === name ||\n selfName === camelize(name) ||\n selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = \n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) ||\n // global registration\n resolve(instance.appContext[type], name);\n if (!res && maybeSelfReference) {\n // fallback to implicit self-reference\n return Component;\n }\n if ((process.env.NODE_ENV !== 'production') && warnMissing && !res) {\n const extra = type === COMPONENTS\n ? `\\nIf this is a native custom element, make sure to exclude it from ` +\n `component resolution via compilerOptions.isCustomElement.`\n : ``;\n warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`resolve${capitalize(type.slice(0, -1))} ` +\n `can only be used in render() or setup().`);\n }\n}\nfunction resolve(registry, name) {\n return (registry &&\n (registry[name] ||\n registry[camelize(name)] ||\n registry[capitalize(camelize(name))]));\n}\n\n/**\n * Actual implementation\n */\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = (cache && cache[index]);\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, undefined, cached && cached[i]);\n }\n }\n else if (typeof source === 'number') {\n if ((process.env.NODE_ENV !== 'production') && !Number.isInteger(source)) {\n warn(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]);\n }\n }\n else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(source, (item, i) => renderItem(item, i, undefined, cached && cached[i]));\n }\n else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n }\n else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\n/**\n * Compiler runtime helper for creating dynamic slots object\n * @private\n */\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n // array of dynamic slot generated by <template v-for=\"...\" #[...]>\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n }\n else if (slot) {\n // conditional single slot generated by <template v-if=\"...\" #foo>\n slots[slot.name] = slot.key\n ? (...args) => {\n const res = slot.fn(...args);\n // attach branch key so each conditional branch is considered a\n // different fragment\n if (res)\n res.key = slot.key;\n return res;\n }\n : slot.fn;\n }\n }\n return slots;\n}\n\n/**\n * Compiler runtime helper for rendering `<slot/>`\n * @private\n */\nfunction renderSlot(slots, name, props = {}, \n// this is not a user-facing function, so the fallback is always generated by\n// the compiler and guaranteed to be a function returning an array\nfallback, noSlotted) {\n if (currentRenderingInstance.isCE ||\n (currentRenderingInstance.parent &&\n isAsyncWrapper(currentRenderingInstance.parent) &&\n currentRenderingInstance.parent.isCE)) {\n if (name !== 'default')\n props.name = name;\n return createVNode('slot', props, fallback && fallback());\n }\n let slot = slots[name];\n if ((process.env.NODE_ENV !== 'production') && slot && slot.length > 1) {\n warn(`SSR-optimized slot function detected in a non-SSR-optimized render ` +\n `function. You need to mark this component with $dynamic-slots in the ` +\n `parent template.`);\n slot = () => [];\n }\n // a compiled slot disables block tracking by default to avoid manual\n // invocation interfering with template-based block tracking, but in\n // `renderSlot` we can be sure that it's template-based so we can force\n // enable it.\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(Fragment, {\n key: props.key ||\n // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n (validSlotContent && validSlotContent.key) ||\n `_${name}`\n }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* SlotFlags.STABLE */\n ? 64 /* PatchFlags.STABLE_FRAGMENT */\n : -2 /* PatchFlags.BAIL */);\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + '-s'];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some(child => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment &&\n !ensureValidVNode(child.children))\n return false;\n return true;\n })\n ? vnodes\n : null;\n}\n\n/**\n * For prefixing keys in v-on=\"obj\" with \"on\"\n * @private\n */\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if ((process.env.NODE_ENV !== 'production') && !isObject(obj)) {\n warn(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key)\n ? `on:${key}`\n : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\n/**\n * #2437 In Vue 3, functional components do not have a public instance proxy but\n * they exist in the internal parent chain. For code that relies on traversing\n * public $parent chains, skip functional ones and go to the parent instead.\n */\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = \n// Move PURE marker to new line to workaround compiler discarding it\n// due to type annotation\n/*#__PURE__*/ extend(Object.create(null), {\n $: i => i,\n $el: i => i.vnode.el,\n $data: i => i.data,\n $props: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.props) : i.props),\n $attrs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.attrs) : i.attrs),\n $slots: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.slots) : i.slots),\n $refs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.refs) : i.refs),\n $parent: i => getPublicInstance(i.parent),\n $root: i => getPublicInstance(i.root),\n $emit: i => i.emit,\n $options: i => (__VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type),\n $forceUpdate: i => i.f || (i.f = () => queueJob(i.update)),\n $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: i => (__VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP)\n});\nconst isReservedPrefix = (key) => key === '_' || key === '$';\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n // for internal formatters to know that this is a Vue instance\n if ((process.env.NODE_ENV !== 'production') && key === '__isVue') {\n return true;\n }\n // data / props / ctx\n // This getter gets called for every property access on the render context\n // during render and is a major hotspot. The most expensive part of this\n // is the multiple hasOwn() calls. It's much faster to do a simple property\n // access on a plain object, so we use an accessCache object (with null\n // prototype) to memoize what access type a key corresponds to.\n let normalizedProps;\n if (key[0] !== '$') {\n const n = accessCache[key];\n if (n !== undefined) {\n switch (n) {\n case 1 /* AccessTypes.SETUP */:\n return setupState[key];\n case 2 /* AccessTypes.DATA */:\n return data[key];\n case 4 /* AccessTypes.CONTEXT */:\n return ctx[key];\n case 3 /* AccessTypes.PROPS */:\n return props[key];\n // default: just fallthrough\n }\n }\n else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* AccessTypes.SETUP */;\n return setupState[key];\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* AccessTypes.DATA */;\n return data[key];\n }\n else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) &&\n hasOwn(normalizedProps, key)) {\n accessCache[key] = 3 /* AccessTypes.PROPS */;\n return props[key];\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* AccessTypes.OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n // public $xxx properties\n if (publicGetter) {\n if (key === '$attrs') {\n track(instance, \"get\" /* TrackOpTypes.GET */, key);\n (process.env.NODE_ENV !== 'production') && markAttrsAccessed();\n }\n return publicGetter(instance);\n }\n else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) &&\n (cssModule = cssModule[key])) {\n return cssModule;\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n // user may set custom properties to `this` that start with `$`\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (\n // global properties\n ((globalProperties = appContext.config.globalProperties),\n hasOwn(globalProperties, key))) {\n {\n return globalProperties[key];\n }\n }\n else if ((process.env.NODE_ENV !== 'production') &&\n currentRenderingInstance &&\n (!isString(key) ||\n // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf('__v') !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved ` +\n `character (\"$\" or \"_\") and is not proxied on the render context.`);\n }\n else if (instance === currentRenderingInstance) {\n warn(`Property ${JSON.stringify(key)} was accessed during render ` +\n `but is not defined on instance.`);\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n }\n else if ((process.env.NODE_ENV !== 'production') &&\n setupState.__isScriptSetup &&\n hasOwn(setupState, key)) {\n warn(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n return false;\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n data[key] = value;\n return true;\n }\n else if (hasOwn(instance.props, key)) {\n (process.env.NODE_ENV !== 'production') && warn(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n return false;\n }\n if (key[0] === '$' && key.slice(1) in instance) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to mutate public property \"${key}\". ` +\n `Properties starting with $ are reserved and readonly.`);\n return false;\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && key in instance.appContext.config.globalProperties) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n value\n });\n }\n else {\n ctx[key] = value;\n }\n }\n return true;\n },\n has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {\n let normalizedProps;\n return (!!accessCache[key] ||\n (data !== EMPTY_OBJ && hasOwn(data, key)) ||\n hasSetupBinding(setupState, key) ||\n ((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||\n hasOwn(ctx, key) ||\n hasOwn(publicPropertiesMap, key) ||\n hasOwn(appContext.config.globalProperties, key));\n },\n defineProperty(target, key, descriptor) {\n if (descriptor.get != null) {\n // invalidate key cache of a getter based property #5417\n target._.accessCache[key] = 0;\n }\n else if (hasOwn(descriptor, 'value')) {\n this.set(target, key, descriptor.value, null);\n }\n return Reflect.defineProperty(target, key, descriptor);\n }\n};\nif ((process.env.NODE_ENV !== 'production') && !false) {\n PublicInstanceProxyHandlers.ownKeys = (target) => {\n warn(`Avoid app logic that relies on enumerating keys on a component instance. ` +\n `The keys will be empty in production mode to avoid performance overhead.`);\n return Reflect.ownKeys(target);\n };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /*#__PURE__*/ extend({}, PublicInstanceProxyHandlers, {\n get(target, key) {\n // fast path for unscopables when using `with` block\n if (key === Symbol.unscopables) {\n return;\n }\n return PublicInstanceProxyHandlers.get(target, key, target);\n },\n has(_, key) {\n const has = key[0] !== '_' && !isGloballyWhitelisted(key);\n if ((process.env.NODE_ENV !== 'production') && !has && PublicInstanceProxyHandlers.has(_, key)) {\n warn(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`);\n }\n return has;\n }\n});\n// dev only\n// In dev mode, the proxy target exposes the same properties as seen on `this`\n// for easier console inspection. In prod mode it will be an empty object so\n// these properties definitions can be skipped.\nfunction createDevRenderContext(instance) {\n const target = {};\n // expose internal instance for proxy handlers\n Object.defineProperty(target, `_`, {\n configurable: true,\n enumerable: false,\n get: () => instance\n });\n // expose public properties\n Object.keys(publicPropertiesMap).forEach(key => {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get: () => publicPropertiesMap[key](instance),\n // intercepted by the proxy so no need for implementation,\n // but needed to prevent set errors\n set: NOOP\n });\n });\n return target;\n}\n// dev only\nfunction exposePropsOnRenderContext(instance) {\n const { ctx, propsOptions: [propsOptions] } = instance;\n if (propsOptions) {\n Object.keys(propsOptions).forEach(key => {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => instance.props[key],\n set: NOOP\n });\n });\n }\n}\n// dev only\nfunction exposeSetupStateOnRenderContext(instance) {\n const { ctx, setupState } = instance;\n Object.keys(toRaw(setupState)).forEach(key => {\n if (!setupState.__isScriptSetup) {\n if (isReservedPrefix(key[0])) {\n warn(`setup() return property ${JSON.stringify(key)} should not start with \"$\" or \"_\" ` +\n `which are reserved prefixes for Vue internals.`);\n return;\n }\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => setupState[key],\n set: NOOP\n });\n }\n });\n}\n\nfunction createDuplicateChecker() {\n const cache = Object.create(null);\n return (type, key) => {\n if (cache[key]) {\n warn(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n }\n else {\n cache[key] = type;\n }\n };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n const options = resolveMergedOptions(instance);\n const publicThis = instance.proxy;\n const ctx = instance.ctx;\n // do not cache property access on public proxy during state initialization\n shouldCacheAccess = false;\n // call beforeCreate first before accessing other options since\n // the hook may mutate resolved options (#2791)\n if (options.beforeCreate) {\n callHook(options.beforeCreate, instance, \"bc\" /* LifecycleHooks.BEFORE_CREATE */);\n }\n const { \n // state\n data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, \n // lifecycle\n created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, \n // public API\n expose, inheritAttrs, \n // assets\n components, directives, filters } = options;\n const checkDuplicateProperties = (process.env.NODE_ENV !== 'production') ? createDuplicateChecker() : null;\n if ((process.env.NODE_ENV !== 'production')) {\n const [propsOptions] = instance.propsOptions;\n if (propsOptions) {\n for (const key in propsOptions) {\n checkDuplicateProperties(\"Props\" /* OptionTypes.PROPS */, key);\n }\n }\n }\n // options initialization order (to be consistent with Vue 2):\n // - props (already done outside of this function)\n // - inject\n // - methods\n // - data (deferred since it relies on `this` access)\n // - computed\n // - watch (deferred since it relies on `this` access)\n if (injectOptions) {\n resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);\n }\n if (methods) {\n for (const key in methods) {\n const methodHandler = methods[key];\n if (isFunction(methodHandler)) {\n // In dev mode, we use the `createRenderContext` function to define\n // methods to the proxy target, and those are read-only but\n // reconfigurable, so it needs to be redefined here\n if ((process.env.NODE_ENV !== 'production')) {\n Object.defineProperty(ctx, key, {\n value: methodHandler.bind(publicThis),\n configurable: true,\n enumerable: true,\n writable: true\n });\n }\n else {\n ctx[key] = methodHandler.bind(publicThis);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Methods\" /* OptionTypes.METHODS */, key);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. ` +\n `Did you reference the function correctly?`);\n }\n }\n }\n if (dataOptions) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(dataOptions)) {\n warn(`The data option must be a function. ` +\n `Plain object usage is no longer supported.`);\n }\n const data = dataOptions.call(publicThis, publicThis);\n if ((process.env.NODE_ENV !== 'production') && isPromise(data)) {\n warn(`data() returned a Promise - note data() cannot be async; If you ` +\n `intend to perform data fetching before component renders, use ` +\n `async setup() + <Suspense>.`);\n }\n if (!isObject(data)) {\n (process.env.NODE_ENV !== 'production') && warn(`data() should return an object.`);\n }\n else {\n instance.data = reactive(data);\n if ((process.env.NODE_ENV !== 'production')) {\n for (const key in data) {\n checkDuplicateProperties(\"Data\" /* OptionTypes.DATA */, key);\n // expose data on ctx during dev\n if (!isReservedPrefix(key[0])) {\n Object.defineProperty(ctx, key, {\n configurable: true,\n enumerable: true,\n get: () => data[key],\n set: NOOP\n });\n }\n }\n }\n }\n }\n // state initialization complete at this point - start caching access\n shouldCacheAccess = true;\n if (computedOptions) {\n for (const key in computedOptions) {\n const opt = computedOptions[key];\n const get = isFunction(opt)\n ? opt.bind(publicThis, publicThis)\n : isFunction(opt.get)\n ? opt.get.bind(publicThis, publicThis)\n : NOOP;\n if ((process.env.NODE_ENV !== 'production') && get === NOOP) {\n warn(`Computed property \"${key}\" has no getter.`);\n }\n const set = !isFunction(opt) && isFunction(opt.set)\n ? opt.set.bind(publicThis)\n : (process.env.NODE_ENV !== 'production')\n ? () => {\n warn(`Write operation failed: computed property \"${key}\" is readonly.`);\n }\n : NOOP;\n const c = computed({\n get,\n set\n });\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => c.value,\n set: v => (c.value = v)\n });\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Computed\" /* OptionTypes.COMPUTED */, key);\n }\n }\n }\n if (watchOptions) {\n for (const key in watchOptions) {\n createWatcher(watchOptions[key], ctx, publicThis, key);\n }\n }\n if (provideOptions) {\n const provides = isFunction(provideOptions)\n ? provideOptions.call(publicThis)\n : provideOptions;\n Reflect.ownKeys(provides).forEach(key => {\n provide(key, provides[key]);\n });\n }\n if (created) {\n callHook(created, instance, \"c\" /* LifecycleHooks.CREATED */);\n }\n function registerLifecycleHook(register, hook) {\n if (isArray(hook)) {\n hook.forEach(_hook => register(_hook.bind(publicThis)));\n }\n else if (hook) {\n register(hook.bind(publicThis));\n }\n }\n registerLifecycleHook(onBeforeMount, beforeMount);\n registerLifecycleHook(onMounted, mounted);\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n registerLifecycleHook(onUpdated, updated);\n registerLifecycleHook(onActivated, activated);\n registerLifecycleHook(onDeactivated, deactivated);\n registerLifecycleHook(onErrorCaptured, errorCaptured);\n registerLifecycleHook(onRenderTracked, renderTracked);\n registerLifecycleHook(onRenderTriggered, renderTriggered);\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n registerLifecycleHook(onUnmounted, unmounted);\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\n if (isArray(expose)) {\n if (expose.length) {\n const exposed = instance.exposed || (instance.exposed = {});\n expose.forEach(key => {\n Object.defineProperty(exposed, key, {\n get: () => publicThis[key],\n set: val => (publicThis[key] = val)\n });\n });\n }\n else if (!instance.exposed) {\n instance.exposed = {};\n }\n }\n // options that are handled when creating the instance but also need to be\n // applied from mixins\n if (render && instance.render === NOOP) {\n instance.render = render;\n }\n if (inheritAttrs != null) {\n instance.inheritAttrs = inheritAttrs;\n }\n // asset options.\n if (components)\n instance.components = components;\n if (directives)\n instance.directives = directives;\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {\n if (isArray(injectOptions)) {\n injectOptions = normalizeInject(injectOptions);\n }\n for (const key in injectOptions) {\n const opt = injectOptions[key];\n let injected;\n if (isObject(opt)) {\n if ('default' in opt) {\n injected = inject(opt.from || key, opt.default, true /* treat default function as factory */);\n }\n else {\n injected = inject(opt.from || key);\n }\n }\n else {\n injected = inject(opt);\n }\n if (isRef(injected)) {\n // TODO remove the check in 3.3\n if (unwrapRef) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => injected.value,\n set: v => (injected.value = v)\n });\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`injected property \"${key}\" is a ref and will be auto-unwrapped ` +\n `and no longer needs \\`.value\\` in the next minor release. ` +\n `To opt-in to the new behavior now, ` +\n `set \\`app.config.unwrapInjectedRef = true\\` (this config is ` +\n `temporary and will not be needed in the future.)`);\n }\n ctx[key] = injected;\n }\n }\n else {\n ctx[key] = injected;\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Inject\" /* OptionTypes.INJECT */, key);\n }\n }\n}\nfunction callHook(hook, instance, type) {\n callWithAsyncErrorHandling(isArray(hook)\n ? hook.map(h => h.bind(instance.proxy))\n : hook.bind(instance.proxy), instance, type);\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n const getter = key.includes('.')\n ? createPathGetter(publicThis, key)\n : () => publicThis[key];\n if (isString(raw)) {\n const handler = ctx[raw];\n if (isFunction(handler)) {\n watch(getter, handler);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw}\"`, handler);\n }\n }\n else if (isFunction(raw)) {\n watch(getter, raw.bind(publicThis));\n }\n else if (isObject(raw)) {\n if (isArray(raw)) {\n raw.forEach(r => createWatcher(r, ctx, publicThis, key));\n }\n else {\n const handler = isFunction(raw.handler)\n ? raw.handler.bind(publicThis)\n : ctx[raw.handler];\n if (isFunction(handler)) {\n watch(getter, handler, raw);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n }\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch option: \"${key}\"`, raw);\n }\n}\n/**\n * Resolve merged options and cache it on the component.\n * This is done only once per-component since the merging does not involve\n * instances.\n */\nfunction resolveMergedOptions(instance) {\n const base = instance.type;\n const { mixins, extends: extendsOptions } = base;\n const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext;\n const cached = cache.get(base);\n let resolved;\n if (cached) {\n resolved = cached;\n }\n else if (!globalMixins.length && !mixins && !extendsOptions) {\n {\n resolved = base;\n }\n }\n else {\n resolved = {};\n if (globalMixins.length) {\n globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));\n }\n mergeOptions(resolved, base, optionMergeStrategies);\n }\n if (isObject(base)) {\n cache.set(base, resolved);\n }\n return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n const { mixins, extends: extendsOptions } = from;\n if (extendsOptions) {\n mergeOptions(to, extendsOptions, strats, true);\n }\n if (mixins) {\n mixins.forEach((m) => mergeOptions(to, m, strats, true));\n }\n for (const key in from) {\n if (asMixin && key === 'expose') {\n (process.env.NODE_ENV !== 'production') &&\n warn(`\"expose\" option is ignored when declared in mixins or extends. ` +\n `It should only be declared in the base component itself.`);\n }\n else {\n const strat = internalOptionMergeStrats[key] || (strats && strats[key]);\n to[key] = strat ? strat(to[key], from[key]) : from[key];\n }\n }\n return to;\n}\nconst internalOptionMergeStrats = {\n data: mergeDataFn,\n props: mergeObjectOptions,\n emits: mergeObjectOptions,\n // objects\n methods: mergeObjectOptions,\n computed: mergeObjectOptions,\n // lifecycle\n beforeCreate: mergeAsArray,\n created: mergeAsArray,\n beforeMount: mergeAsArray,\n mounted: mergeAsArray,\n beforeUpdate: mergeAsArray,\n updated: mergeAsArray,\n beforeDestroy: mergeAsArray,\n beforeUnmount: mergeAsArray,\n destroyed: mergeAsArray,\n unmounted: mergeAsArray,\n activated: mergeAsArray,\n deactivated: mergeAsArray,\n errorCaptured: mergeAsArray,\n serverPrefetch: mergeAsArray,\n // assets\n components: mergeObjectOptions,\n directives: mergeObjectOptions,\n // watch\n watch: mergeWatchOptions,\n // provide / inject\n provide: mergeDataFn,\n inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n if (!from) {\n return to;\n }\n if (!to) {\n return from;\n }\n return function mergedDataFn() {\n return (extend)(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);\n };\n}\nfunction mergeInject(to, from) {\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n if (isArray(raw)) {\n const res = {};\n for (let i = 0; i < raw.length; i++) {\n res[raw[i]] = raw[i];\n }\n return res;\n }\n return raw;\n}\nfunction mergeAsArray(to, from) {\n return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n return to ? extend(extend(Object.create(null), to), from) : from;\n}\nfunction mergeWatchOptions(to, from) {\n if (!to)\n return from;\n if (!from)\n return to;\n const merged = extend(Object.create(null), to);\n for (const key in from) {\n merged[key] = mergeAsArray(to[key], from[key]);\n }\n return merged;\n}\n\nfunction initProps(instance, rawProps, isStateful, // result of bitwise flag comparison\nisSSR = false) {\n const props = {};\n const attrs = {};\n def(attrs, InternalObjectKey, 1);\n instance.propsDefaults = Object.create(null);\n setFullProps(instance, rawProps, props, attrs);\n // ensure all declared prop keys are present\n for (const key in instance.propsOptions[0]) {\n if (!(key in props)) {\n props[key] = undefined;\n }\n }\n // validation\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n if (isStateful) {\n // stateful\n instance.props = isSSR ? props : shallowReactive(props);\n }\n else {\n if (!instance.type.props) {\n // functional w/ optional props, props === attrs\n instance.props = attrs;\n }\n else {\n // functional w/ declared props\n instance.props = props;\n }\n }\n instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n while (instance) {\n if (instance.type.__hmrId)\n return true;\n instance = instance.parent;\n }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n const { props, attrs, vnode: { patchFlag } } = instance;\n const rawCurrentProps = toRaw(props);\n const [options] = instance.propsOptions;\n let hasAttrsChanged = false;\n if (\n // always force full diff in dev\n // - #1942 if hmr is enabled with sfc component\n // - vite#872 non-sfc component used by sfc component\n !((process.env.NODE_ENV !== 'production') && isInHmrContext(instance)) &&\n (optimized || patchFlag > 0) &&\n !(patchFlag & 16 /* PatchFlags.FULL_PROPS */)) {\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // Compiler-generated props & no keys change, just set the updated\n // the props.\n const propsToUpdate = instance.vnode.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n let key = propsToUpdate[i];\n // skip if the prop key is a declared emit event listener\n if (isEmitListener(instance.emitsOptions, key)) {\n continue;\n }\n // PROPS flag guarantees rawProps to be non-null\n const value = rawProps[key];\n if (options) {\n // attr / props separation was done on init and will be consistent\n // in this code path, so just check if attrs have it.\n if (hasOwn(attrs, key)) {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n else {\n const camelizedKey = camelize(key);\n props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */);\n }\n }\n else {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n }\n else {\n // full props update.\n if (setFullProps(instance, rawProps, props, attrs)) {\n hasAttrsChanged = true;\n }\n // in case of dynamic props, check if we need to delete keys from\n // the props object\n let kebabKey;\n for (const key in rawCurrentProps) {\n if (!rawProps ||\n // for camelCase\n (!hasOwn(rawProps, key) &&\n // it's possible the original props was passed in as kebab-case\n // and converted to camelCase (#955)\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) {\n if (options) {\n if (rawPrevProps &&\n // for camelCase\n (rawPrevProps[key] !== undefined ||\n // for kebab-case\n rawPrevProps[kebabKey] !== undefined)) {\n props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */);\n }\n }\n else {\n delete props[key];\n }\n }\n }\n // in the case of functional component w/o props declaration, props and\n // attrs point to the same object so it should already have been updated.\n if (attrs !== rawCurrentProps) {\n for (const key in attrs) {\n if (!rawProps ||\n (!hasOwn(rawProps, key) &&\n (!false ))) {\n delete attrs[key];\n hasAttrsChanged = true;\n }\n }\n }\n }\n // trigger updates for $attrs in case it's used in component slots\n if (hasAttrsChanged) {\n trigger(instance, \"set\" /* TriggerOpTypes.SET */, '$attrs');\n }\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n const [options, needCastKeys] = instance.propsOptions;\n let hasAttrsChanged = false;\n let rawCastValues;\n if (rawProps) {\n for (let key in rawProps) {\n // key, ref are reserved and never passed down\n if (isReservedProp(key)) {\n continue;\n }\n const value = rawProps[key];\n // prop option names are camelized during normalization, so to support\n // kebab -> camel conversion here we need to camelize the key.\n let camelKey;\n if (options && hasOwn(options, (camelKey = camelize(key)))) {\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n props[camelKey] = value;\n }\n else {\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n }\n }\n else if (!isEmitListener(instance.emitsOptions, key)) {\n if (!(key in attrs) || value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (needCastKeys) {\n const rawCurrentProps = toRaw(props);\n const castValues = rawCastValues || EMPTY_OBJ;\n for (let i = 0; i < needCastKeys.length; i++) {\n const key = needCastKeys[i];\n props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn(castValues, key));\n }\n }\n return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n const opt = options[key];\n if (opt != null) {\n const hasDefault = hasOwn(opt, 'default');\n // default values\n if (hasDefault && value === undefined) {\n const defaultValue = opt.default;\n if (opt.type !== Function && isFunction(defaultValue)) {\n const { propsDefaults } = instance;\n if (key in propsDefaults) {\n value = propsDefaults[key];\n }\n else {\n setCurrentInstance(instance);\n value = propsDefaults[key] = defaultValue.call(null, props);\n unsetCurrentInstance();\n }\n }\n else {\n value = defaultValue;\n }\n }\n // boolean casting\n if (opt[0 /* BooleanFlags.shouldCast */]) {\n if (isAbsent && !hasDefault) {\n value = false;\n }\n else if (opt[1 /* BooleanFlags.shouldCastTrue */] &&\n (value === '' || value === hyphenate(key))) {\n value = true;\n }\n }\n }\n return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.propsCache;\n const cached = cache.get(comp);\n if (cached) {\n return cached;\n }\n const raw = comp.props;\n const normalized = {};\n const needCastKeys = [];\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendProps = (raw) => {\n hasExtends = true;\n const [props, keys] = normalizePropsOptions(raw, appContext, true);\n extend(normalized, props);\n if (keys)\n needCastKeys.push(...keys);\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendProps);\n }\n if (comp.extends) {\n extendProps(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendProps);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, EMPTY_ARR);\n }\n return EMPTY_ARR;\n }\n if (isArray(raw)) {\n for (let i = 0; i < raw.length; i++) {\n if ((process.env.NODE_ENV !== 'production') && !isString(raw[i])) {\n warn(`props must be strings when using array syntax.`, raw[i]);\n }\n const normalizedKey = camelize(raw[i]);\n if (validatePropName(normalizedKey)) {\n normalized[normalizedKey] = EMPTY_OBJ;\n }\n }\n }\n else if (raw) {\n if ((process.env.NODE_ENV !== 'production') && !isObject(raw)) {\n warn(`invalid props options`, raw);\n }\n for (const key in raw) {\n const normalizedKey = camelize(key);\n if (validatePropName(normalizedKey)) {\n const opt = raw[key];\n const prop = (normalized[normalizedKey] =\n isArray(opt) || isFunction(opt) ? { type: opt } : Object.assign({}, opt));\n if (prop) {\n const booleanIndex = getTypeIndex(Boolean, prop.type);\n const stringIndex = getTypeIndex(String, prop.type);\n prop[0 /* BooleanFlags.shouldCast */] = booleanIndex > -1;\n prop[1 /* BooleanFlags.shouldCastTrue */] =\n stringIndex < 0 || booleanIndex < stringIndex;\n // if the prop needs boolean casting or default value\n if (booleanIndex > -1 || hasOwn(prop, 'default')) {\n needCastKeys.push(normalizedKey);\n }\n }\n }\n }\n }\n const res = [normalized, needCastKeys];\n if (isObject(comp)) {\n cache.set(comp, res);\n }\n return res;\n}\nfunction validatePropName(key) {\n if (key[0] !== '$') {\n return true;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid prop name: \"${key}\" is a reserved property.`);\n }\n return false;\n}\n// use function string name to check type constructors\n// so that it works across vms / iframes.\nfunction getType(ctor) {\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ctor === null ? 'null' : '';\n}\nfunction isSameType(a, b) {\n return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n if (isArray(expectedTypes)) {\n return expectedTypes.findIndex(t => isSameType(t, type));\n }\n else if (isFunction(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1;\n }\n return -1;\n}\n/**\n * dev only\n */\nfunction validateProps(rawProps, props, instance) {\n const resolvedValues = toRaw(props);\n const options = instance.propsOptions[0];\n for (const key in options) {\n let opt = options[key];\n if (opt == null)\n continue;\n validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)));\n }\n}\n/**\n * dev only\n */\nfunction validateProp(name, value, prop, isAbsent) {\n const { type, required, validator } = prop;\n // required!\n if (required && isAbsent) {\n warn('Missing required prop: \"' + name + '\"');\n return;\n }\n // missing but optional\n if (value == null && !prop.required) {\n return;\n }\n // type check\n if (type != null && type !== true) {\n let isValid = false;\n const types = isArray(type) ? type : [type];\n const expectedTypes = [];\n // value is valid as long as one of the specified types match\n for (let i = 0; i < types.length && !isValid; i++) {\n const { valid, expectedType } = assertType(value, types[i]);\n expectedTypes.push(expectedType || '');\n isValid = valid;\n }\n if (!isValid) {\n warn(getInvalidTypeMessage(name, value, expectedTypes));\n return;\n }\n }\n // custom validator\n if (validator && !validator(value)) {\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n }\n}\nconst isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol,BigInt');\n/**\n * dev only\n */\nfunction assertType(value, type) {\n let valid;\n const expectedType = getType(type);\n if (isSimpleType(expectedType)) {\n const t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n }\n else if (expectedType === 'Object') {\n valid = isObject(value);\n }\n else if (expectedType === 'Array') {\n valid = isArray(value);\n }\n else if (expectedType === 'null') {\n valid = value === null;\n }\n else {\n valid = value instanceof type;\n }\n return {\n valid,\n expectedType\n };\n}\n/**\n * dev only\n */\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n let message = `Invalid prop: type check failed for prop \"${name}\".` +\n ` Expected ${expectedTypes.map(capitalize).join(' | ')}`;\n const expectedType = expectedTypes[0];\n const receivedType = toRawType(value);\n const expectedValue = styleValue(value, expectedType);\n const receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += ` with value ${expectedValue}`;\n }\n message += `, got ${receivedType} `;\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += `with value ${receivedValue}.`;\n }\n return message;\n}\n/**\n * dev only\n */\nfunction styleValue(value, type) {\n if (type === 'String') {\n return `\"${value}\"`;\n }\n else if (type === 'Number') {\n return `${Number(value)}`;\n }\n else {\n return `${value}`;\n }\n}\n/**\n * dev only\n */\nfunction isExplicable(type) {\n const explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(elem => type.toLowerCase() === elem);\n}\n/**\n * dev only\n */\nfunction isBoolean(...args) {\n return args.some(elem => elem.toLowerCase() === 'boolean');\n}\n\nconst isInternalKey = (key) => key[0] === '_' || key === '$stable';\nconst normalizeSlotValue = (value) => isArray(value)\n ? value.map(normalizeVNode)\n : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n if (rawSlot._n) {\n // already normalized - #5353\n return rawSlot;\n }\n const normalized = withCtx((...args) => {\n if ((process.env.NODE_ENV !== 'production') && currentInstance) {\n warn(`Slot \"${key}\" invoked outside of the render function: ` +\n `this will not track dependencies used in the slot. ` +\n `Invoke the slot function inside the render function instead.`);\n }\n return normalizeSlotValue(rawSlot(...args));\n }, ctx);\n normalized._c = false;\n return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n const ctx = rawSlots._ctx;\n for (const key in rawSlots) {\n if (isInternalKey(key))\n continue;\n const value = rawSlots[key];\n if (isFunction(value)) {\n slots[key] = normalizeSlot(key, value, ctx);\n }\n else if (value != null) {\n if ((process.env.NODE_ENV !== 'production') &&\n !(false )) {\n warn(`Non-function value encountered for slot \"${key}\". ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(value);\n slots[key] = () => normalized;\n }\n }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n if ((process.env.NODE_ENV !== 'production') &&\n !isKeepAlive(instance.vnode) &&\n !(false )) {\n warn(`Non-function value encountered for default slot. ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(children);\n instance.slots.default = () => normalized;\n};\nconst initSlots = (instance, children) => {\n if (instance.vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // users can get the shallow readonly version of the slots object through `this.$slots`,\n // we should avoid the proxy object polluting the slots of the internal instance\n instance.slots = toRaw(children);\n // make compiler marker non-enumerable\n def(children, '_', type);\n }\n else {\n normalizeObjectSlots(children, (instance.slots = {}));\n }\n }\n else {\n instance.slots = {};\n if (children) {\n normalizeVNodeSlots(instance, children);\n }\n }\n def(instance.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance, children, optimized) => {\n const { vnode, slots } = instance;\n let needDeletionCheck = true;\n let deletionComparisonTarget = EMPTY_OBJ;\n if (vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // compiled slots.\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // Parent was HMR updated so slot content may have changed.\n // force update slots and mark instance for hmr as well\n extend(slots, children);\n }\n else if (optimized && type === 1 /* SlotFlags.STABLE */) {\n // compiled AND stable.\n // no need to update, and skip stale slots removal.\n needDeletionCheck = false;\n }\n else {\n // compiled but dynamic (v-if/v-for on slots) - update slots, but skip\n // normalization.\n extend(slots, children);\n // #2893\n // when rendering the optimized slots by manually written render function,\n // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,\n // i.e. let the `renderSlot` create the bailed Fragment\n if (!optimized && type === 1 /* SlotFlags.STABLE */) {\n delete slots._;\n }\n }\n }\n else {\n needDeletionCheck = !children.$stable;\n normalizeObjectSlots(children, slots);\n }\n deletionComparisonTarget = children;\n }\n else if (children) {\n // non slot object children (direct value) passed to a component\n normalizeVNodeSlots(instance, children);\n deletionComparisonTarget = { default: 1 };\n }\n // delete stale slots\n if (needDeletionCheck) {\n for (const key in slots) {\n if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\n delete slots[key];\n }\n }\n }\n};\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: undefined,\n warnHandler: undefined,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: Object.create(null),\n optionsCache: new WeakMap(),\n propsCache: new WeakMap(),\n emitsCache: new WeakMap()\n };\n}\nlet uid = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = Object.assign({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n (process.env.NODE_ENV !== 'production') && warn(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = new Set();\n let isMounted = false;\n const app = (context.app = {\n _uid: uid++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`app.config cannot be replaced. Modify individual options instead.`);\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n (process.env.NODE_ENV !== 'production') && warn(`Plugin has already been applied to target app.`);\n }\n else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n }\n else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`A plugin must either be a function or an object with an \"install\" ` +\n `function.`);\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixin has already been applied to target app' +\n (mixin.name ? `: ${mixin.name}` : ''));\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixins are only available in builds supporting Options API');\n }\n return app;\n },\n component(name, component) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.components[name]) {\n warn(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.directives[name]) {\n warn(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n mount(rootContainer, isHydrate, isSVG) {\n if (!isMounted) {\n // #5571\n if ((process.env.NODE_ENV !== 'production') && rootContainer.__vue_app__) {\n warn(`There is already an app instance mounted on the host container.\\n` +\n ` If you want to mount another app on the same host container,` +\n ` you need to unmount the previous app by calling \\`app.unmount()\\` first.`);\n }\n const vnode = createVNode(rootComponent, rootProps);\n // store app context on the root VNode.\n // this will be set on the root instance on initial mount.\n vnode.appContext = context;\n // HMR root reload\n if ((process.env.NODE_ENV !== 'production')) {\n context.reload = () => {\n render(cloneVNode(vnode), rootContainer, isSVG);\n };\n }\n if (isHydrate && hydrate) {\n hydrate(vnode, rootContainer);\n }\n else {\n render(vnode, rootContainer, isSVG);\n }\n isMounted = true;\n app._container = rootContainer;\n rootContainer.__vue_app__ = app;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = vnode.component;\n devtoolsInitApp(app, version);\n }\n return getExposeProxy(vnode.component) || vnode.component.proxy;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`App has already been mounted.\\n` +\n `If you want to remount the same app, move your app creation logic ` +\n `into a factory function and create fresh app instances for each ` +\n `mount - e.g. \\`const createMyApp = () => createApp(App)\\``);\n }\n },\n unmount() {\n if (isMounted) {\n render(null, app._container);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = null;\n devtoolsUnmountApp(app);\n }\n delete app._container.__vue_app__;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Cannot unmount an app that is not mounted.`);\n }\n },\n provide(key, value) {\n if ((process.env.NODE_ENV !== 'production') && key in context.provides) {\n warn(`App already provides property with key \"${String(key)}\". ` +\n `It will be overwritten with the new value.`);\n }\n context.provides[key] = value;\n return app;\n }\n });\n return app;\n };\n}\n\n/**\n * Function for handling a template ref\n */\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n // when mounting async components, nothing needs to be done,\n // because the template ref is forwarded to inner component\n return;\n }\n const refValue = vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */\n ? getExposeProxy(vnode.component) || vnode.component.proxy\n : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if ((process.env.NODE_ENV !== 'production') && !owner) {\n warn(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +\n `A vnode with ref must be created inside the render function.`);\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs;\n const setupState = owner.setupState;\n // dynamic ref changed. unset old ref\n if (oldRef != null && oldRef !== ref) {\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (hasOwn(setupState, oldRef)) {\n setupState[oldRef] = null;\n }\n }\n else if (isRef(oldRef)) {\n oldRef.value = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12 /* ErrorCodes.FUNCTION_REF */, [value, refs]);\n }\n else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString\n ? hasOwn(setupState, ref)\n ? setupState[ref]\n : refs[ref]\n : ref.value;\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n }\n else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (hasOwn(setupState, ref)) {\n setupState[ref] = refs[ref];\n }\n }\n else {\n ref.value = [refValue];\n if (rawRef.k)\n refs[rawRef.k] = ref.value;\n }\n }\n else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n }\n else if (_isString) {\n refs[ref] = value;\n if (hasOwn(setupState, ref)) {\n setupState[ref] = value;\n }\n }\n else if (_isRef) {\n ref.value = value;\n if (rawRef.k)\n refs[rawRef.k] = value;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n };\n if (value) {\n doSet.id = -1;\n queuePostRenderEffect(doSet, parentSuspense);\n }\n else {\n doSet();\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n }\n}\n\nlet hasMismatch = false;\nconst isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';\nconst isComment = (node) => node.nodeType === 8 /* DOMNodeTypes.COMMENT */;\n// Note: hydration is DOM-specific\n// But we have to place it in core due to tight coupling with core - splitting\n// it out creates a ton of unnecessary complexity.\n// Hydration also depends on some renderer internal logic which needs to be\n// passed in via arguments.\nfunction createHydrationFunctions(rendererInternals) {\n const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to hydrate existing markup but container is empty. ` +\n `Performing full mount instead.`);\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hasMismatch = false;\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n if (hasMismatch && !false) {\n // this error should show up in production\n console.error(`Hydration completed but contains mismatches.`);\n }\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n const isFragmentStart = isComment(node) && node.data === '[';\n const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3 /* DOMNodeTypes.TEXT */) {\n // #5728 empty text node inside a slot can cause hydration failure\n // because the server rendered HTML won't contain a text node\n if (vnode.children === '') {\n insert((vnode.el = createText('')), parentNode(node), node);\n nextNode = node;\n }\n else {\n nextNode = onMismatch();\n }\n }\n else {\n if (node.data !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text mismatch:` +\n `\\n- Client: ${JSON.stringify(node.data)}` +\n `\\n- Server: ${JSON.stringify(vnode.children)}`);\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (domType !== 8 /* DOMNodeTypes.COMMENT */ || isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n // entire template is static but SSRed as a fragment\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 /* DOMNodeTypes.ELEMENT */ || domType === 3 /* DOMNodeTypes.TEXT */) {\n // determine anchor, adopt content\n nextNode = node;\n // if the static vnode has its content stripped during build,\n // adopt it from the server-rendered HTML.\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children +=\n nextNode.nodeType === 1 /* DOMNodeTypes.ELEMENT */\n ? nextNode.outerHTML\n : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n }\n else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n if (domType !== 1 /* DOMNodeTypes.ELEMENT */ ||\n vnode.type.toLowerCase() !==\n node.tagName.toLowerCase()) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n // when setting up the render effect, if the initial vnode already\n // has .el set, the component will perform hydration instead of mount\n // on its sub-tree.\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);\n // component may be async, so in the case of fragments we cannot rely\n // on component's rendered output to determine the end of the fragment\n // instead, we do a lookahead to find the end anchor node.\n nextNode = isFragmentStart\n ? locateClosingAsyncAnchor(node)\n : nextSibling(node);\n // #4293 teleport as component root\n if (nextNode &&\n isComment(nextNode) &&\n nextNode.data === 'teleport end') {\n nextNode = nextSibling(nextNode);\n }\n // #3787\n // if component is async, it may get moved / unmounted before its\n // inner component is loaded, so we need to give it a placeholder\n // vnode that matches its adopted DOM.\n if (isAsyncWrapper(vnode)) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode\n ? nextNode.previousSibling\n : container.lastChild;\n }\n else {\n subTree =\n node.nodeType === 3 ? createTextVNode('') : createVNode('div');\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n if (domType !== 8 /* DOMNodeTypes.COMMENT */) {\n nextNode = onMismatch();\n }\n else {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);\n }\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid HostVNode type:', type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs } = vnode;\n // #4006 for form elements with non-string v-model value bindings\n // e.g. <option :value=\"obj\">, <input type=\"checkbox\" :true-value=\"1\">\n const forcePatchValue = (type === 'input' && dirs) || type === 'option';\n // skip props & children if this is hoisted static nodes\n // #5405 in dev, always hydrate children for HMR\n if ((process.env.NODE_ENV !== 'production') || forcePatchValue || patchFlag !== -1 /* PatchFlags.HOISTED */) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n if (forcePatchValue ||\n !optimized ||\n patchFlag & (16 /* PatchFlags.FULL_PROPS */ | 32 /* PatchFlags.HYDRATE_EVENTS */)) {\n for (const key in props) {\n if ((forcePatchValue && key.endsWith('value')) ||\n (isOn(key) && !isReservedProp(key))) {\n patchProp(el, key, null, props[key], false, undefined, parentComponent);\n }\n }\n }\n else if (props.onClick) {\n // Fast path for click listeners (which is most often) to avoid\n // iterating through props.\n patchProp(el, 'onClick', null, props.onClick, false, undefined, parentComponent);\n }\n }\n // vnode / directive hooks\n let vnodeHooks;\n if ((vnodeHooks = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n // children\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */ &&\n // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized);\n let hasWarned = false;\n while (next) {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${vnode.type}>: ` +\n `server rendered element contains more child nodes than client vdom.`);\n hasWarned = true;\n }\n // The SSRed DOM contains more nodes than it should. Remove them.\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n }\n else if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n if (el.textContent !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text content mismatch in <${vnode.type}>:\\n` +\n `- Client: ${el.textContent}\\n` +\n `- Server: ${vnode.children}`);\n el.textContent = vnode.children;\n }\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized\n ? children[i]\n : (children[i] = normalizeVNode(children[i]));\n if (node) {\n node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n else if (vnode.type === Text && !vnode.children) {\n continue;\n }\n else {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${container.tagName.toLowerCase()}>: ` +\n `server rendered element contains fewer child nodes than client vdom.`);\n hasWarned = true;\n }\n // the SSRed DOM didn't contain enough nodes. Mount the missing ones.\n patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);\n if (next && isComment(next) && next.data === ']') {\n return nextSibling((vnode.anchor = next));\n }\n else {\n // fragment didn't hydrate successfully, since we didn't get a end anchor\n // back. This should have led to node/children mismatch warnings.\n hasMismatch = true;\n // since the anchor is missing, we need to create one and insert it\n insert((vnode.anchor = createComment(`]`)), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration node mismatch:\\n- Client vnode:`, vnode.type, `\\n- Server rendered DOM:`, node, node.nodeType === 3 /* DOMNodeTypes.TEXT */\n ? `(text)`\n : isComment(node) && node.data === '['\n ? `(start of fragment)`\n : ``);\n vnode.el = null;\n if (isFragment) {\n // remove excessive fragment nodes\n const end = locateClosingAsyncAnchor(node);\n while (true) {\n const next = nextSibling(node);\n if (next && next !== end) {\n remove(next);\n }\n else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n return next;\n };\n const locateClosingAsyncAnchor = (node) => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === '[')\n match++;\n if (node.data === ']') {\n if (match === 0) {\n return nextSibling(node);\n }\n else {\n match--;\n }\n }\n }\n }\n return node;\n };\n return [hydrate, hydrateNode];\n}\n\n/* eslint-disable no-restricted-globals */\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n perf.mark(`vue-${type}-${instance.uid}`);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction endMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n const startTag = `vue-${type}-${instance.uid}`;\n const endTag = startTag + `:end`;\n perf.mark(endTag);\n perf.measure(`<${formatComponentName(instance, instance.type)}> ${type}`, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction isSupported() {\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\n\n/**\n * This is only called in esm-bundler builds.\n * It is called when a renderer is created, in `baseCreateRenderer` so that\n * importing runtime-core is side-effects free.\n *\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n const needWarn = [];\n if (typeof __VUE_OPTIONS_API__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_OPTIONS_API__`);\n getGlobalThis().__VUE_OPTIONS_API__ = true;\n }\n if (typeof __VUE_PROD_DEVTOOLS__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n }\n if ((process.env.NODE_ENV !== 'production') && needWarn.length) {\n const multi = needWarn.length > 1;\n console.warn(`Feature flag${multi ? `s` : ``} ${needWarn.join(', ')} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, ` +\n `which expects these compile-time feature flags to be globally injected ` +\n `via the bundler config in order to get better tree-shaking in the ` +\n `production bundle.\\n\\n` +\n `For more details, see https://link.vuejs.org/feature-flags.`);\n }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense\n ;\n/**\n * The createRenderer function accepts two generic arguments:\n * HostNode and HostElement, corresponding to Node and Element types in the\n * host environment. For example, for runtime-dom, HostNode would be the DOM\n * `Node` interface and HostElement would be the DOM `Element` interface.\n *\n * Custom renderers can pass in the platform specific types like this:\n *\n * ``` js\n * const { render, createApp } = createRenderer<Node, Element>({\n * patchProp,\n * ...nodeOps\n * })\n * ```\n */\nfunction createRenderer(options) {\n return baseCreateRenderer(options);\n}\n// Separate API for creating hydration-enabled renderer.\n// Hydration logic is only used when calling this function, making it\n// tree-shakable.\nfunction createHydrationRenderer(options) {\n return baseCreateRenderer(options, createHydrationFunctions);\n}\n// implementation\nfunction baseCreateRenderer(options, createHydrationFns) {\n // compile-time feature flags check\n {\n initFeatureFlags();\n }\n const target = getGlobalThis();\n target.__VUE__ = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n }\n const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, insertStaticContent: hostInsertStaticContent } = options;\n // Note: functions inside this closure should use `const xxx = () => {}`\n // style in order to prevent being inlined by minifiers.\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = (process.env.NODE_ENV !== 'production') && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n if (n1 === n2) {\n return;\n }\n // patching & not same type, unmount old tree\n if (n1 && !isSameVNodeType(n1, n2)) {\n anchor = getNextHostNode(n1);\n unmount(n1, parentComponent, parentSuspense, true);\n n1 = null;\n }\n if (n2.patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n n2.dynamicChildren = null;\n }\n const { type, ref, shapeFlag } = n2;\n switch (type) {\n case Text:\n processText(n1, n2, container, anchor);\n break;\n case Comment:\n processCommentNode(n1, n2, container, anchor);\n break;\n case Static:\n if (n1 == null) {\n mountStaticNode(n2, container, anchor, isSVG);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n patchStaticNode(n1, n2, container, isSVG);\n }\n break;\n case Fragment:\n processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid VNode type:', type, `(${typeof type})`);\n }\n }\n // set ref\n if (ref != null && parentComponent) {\n setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n }\n };\n const processText = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateText(n2.children)), container, anchor);\n }\n else {\n const el = (n2.el = n1.el);\n if (n2.children !== n1.children) {\n hostSetText(el, n2.children);\n }\n }\n };\n const processCommentNode = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateComment(n2.children || '')), container, anchor);\n }\n else {\n // there's no support for dynamic comments\n n2.el = n1.el;\n }\n };\n const mountStaticNode = (n2, container, anchor, isSVG) => {\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);\n };\n /**\n * Dev / HMR only\n */\n const patchStaticNode = (n1, n2, container, isSVG) => {\n // static nodes are only patched during dev for HMR\n if (n2.children !== n1.children) {\n const anchor = hostNextSibling(n1.anchor);\n // remove existing\n removeStaticNode(n1);\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG);\n }\n else {\n n2.el = n1.el;\n n2.anchor = n1.anchor;\n }\n };\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostInsert(el, container, nextSibling);\n el = next;\n }\n hostInsert(anchor, container, nextSibling);\n };\n const removeStaticNode = ({ el, anchor }) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostRemove(el);\n el = next;\n }\n hostRemove(anchor);\n };\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n isSVG = isSVG || n2.type === 'svg';\n if (n1 == null) {\n mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let el;\n let vnodeHook;\n const { type, props, shapeFlag, transition, dirs } = vnode;\n el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);\n // mount children first, since some props may rely on child content\n // being already rendered, e.g. `<select value>`\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(el, vnode.children);\n }\n else if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n for (const key in props) {\n if (key !== 'value' && !isReservedProp(key)) {\n hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n /**\n * Special case for setting value on DOM elements:\n * - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024)\n * - it needs to be forced (#1471)\n * #2353 proposes adding another renderer option to configure this, but\n * the properties affects are so finite it is worth special casing it\n * here to reduce the complexity. (Special casing it also should not\n * affect non-DOM renderers)\n */\n if ('value' in props) {\n hostPatchProp(el, 'value', null, props.value);\n }\n if ((vnodeHook = props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n }\n // scopeId\n setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n Object.defineProperty(el, '__vnode', {\n value: vnode,\n enumerable: false\n });\n Object.defineProperty(el, '__vueParentComponent', {\n value: parentComponent,\n enumerable: false\n });\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved\n // #1689 For inside suspense + suspense resolved case, just call it\n const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) &&\n transition &&\n !transition.persisted;\n if (needCallTransitionHooks) {\n transition.beforeEnter(el);\n }\n hostInsert(el, container, anchor);\n if ((vnodeHook = props && props.onVnodeMounted) ||\n needCallTransitionHooks ||\n dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n };\n const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n if (scopeId) {\n hostSetScopeId(el, scopeId);\n }\n if (slotScopeIds) {\n for (let i = 0; i < slotScopeIds.length; i++) {\n hostSetScopeId(el, slotScopeIds[i]);\n }\n }\n if (parentComponent) {\n let subTree = parentComponent.subTree;\n if ((process.env.NODE_ENV !== 'production') &&\n subTree.patchFlag > 0 &&\n subTree.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n subTree =\n filterSingleRoot(subTree.children) || subTree;\n }\n if (vnode === subTree) {\n const parentVNode = parentComponent.vnode;\n setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);\n }\n }\n };\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {\n for (let i = start; i < children.length; i++) {\n const child = (children[i] = optimized\n ? cloneIfMounted(children[i])\n : normalizeVNode(children[i]));\n patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const el = (n2.el = n1.el);\n let { patchFlag, dynamicChildren, dirs } = n2;\n // #1426 take the old vnode's patch flag into account since user may clone a\n // compiler-generated vnode, which de-opts to FULL_PROPS\n patchFlag |= n1.patchFlag & 16 /* PatchFlags.FULL_PROPS */;\n const oldProps = n1.props || EMPTY_OBJ;\n const newProps = n2.props || EMPTY_OBJ;\n let vnodeHook;\n // disable recurse in beforeUpdate hooks\n parentComponent && toggleRecurse(parentComponent, false);\n if ((vnodeHook = newProps.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n }\n if (dirs) {\n invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate');\n }\n parentComponent && toggleRecurse(parentComponent, true);\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // HMR updated, force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n const areChildrenSVG = isSVG && n2.type !== 'foreignObject';\n if (dynamicChildren) {\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n }\n else if (!optimized) {\n // full diff\n patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);\n }\n if (patchFlag > 0) {\n // the presence of a patchFlag means this element's render code was\n // generated by the compiler and can take the fast path.\n // in this path old node and new node are guaranteed to have the same shape\n // (i.e. at the exact same position in the source template)\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n // element props contain dynamic keys, full diff needed\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n else {\n // class\n // this flag is matched when the element has dynamic class bindings.\n if (patchFlag & 2 /* PatchFlags.CLASS */) {\n if (oldProps.class !== newProps.class) {\n hostPatchProp(el, 'class', null, newProps.class, isSVG);\n }\n }\n // style\n // this flag is matched when the element has dynamic style bindings\n if (patchFlag & 4 /* PatchFlags.STYLE */) {\n hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);\n }\n // props\n // This flag is matched when the element has dynamic prop/attr bindings\n // other than class and style. The keys of dynamic prop/attrs are saved for\n // faster iteration.\n // Note dynamic keys like :[foo]=\"bar\" will cause this optimization to\n // bail out and go through a full diff because we need to unset the old key\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // if the flag is present then dynamicProps must be non-null\n const propsToUpdate = n2.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n const key = propsToUpdate[i];\n const prev = oldProps[key];\n const next = newProps[key];\n // #1471 force patch value\n if (next !== prev || key === 'value') {\n hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n }\n // text\n // This flag is matched when the element has only dynamic text children.\n if (patchFlag & 1 /* PatchFlags.TEXT */) {\n if (n1.children !== n2.children) {\n hostSetElementText(el, n2.children);\n }\n }\n }\n else if (!optimized && dynamicChildren == null) {\n // unoptimized, full diff\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated');\n }, parentSuspense);\n }\n };\n // The fast path for blocks.\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {\n for (let i = 0; i < newChildren.length; i++) {\n const oldVNode = oldChildren[i];\n const newVNode = newChildren[i];\n // Determine the container (parent element) for the patch.\n const container = \n // oldVNode may be an errored async setup() component inside Suspense\n // which will not have a mounted element\n oldVNode.el &&\n // - In the case of a Fragment, we need to provide the actual parent\n // of the Fragment itself so it can move its children.\n (oldVNode.type === Fragment ||\n // - In the case of different nodes, there is going to be a replacement\n // which also requires the correct parent container\n !isSameVNodeType(oldVNode, newVNode) ||\n // - In the case of a component, it could contain anything.\n oldVNode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 64 /* ShapeFlags.TELEPORT */))\n ? hostParentNode(oldVNode.el)\n : // In other cases, the parent container is not actually used so we\n // just pass the block element here to avoid a DOM parentNode call.\n fallbackContainer;\n patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);\n }\n };\n const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\n if (oldProps !== newProps) {\n if (oldProps !== EMPTY_OBJ) {\n for (const key in oldProps) {\n if (!isReservedProp(key) && !(key in newProps)) {\n hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n for (const key in newProps) {\n // empty string is not valid prop\n if (isReservedProp(key))\n continue;\n const next = newProps[key];\n const prev = oldProps[key];\n // defer patching value\n if (next !== prev && key !== 'value') {\n hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n if ('value' in newProps) {\n hostPatchProp(el, 'value', oldProps.value, newProps.value);\n }\n }\n };\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));\n const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));\n let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n if ((process.env.NODE_ENV !== 'production') &&\n // #5523 dev root fragment may inherit directives\n (isHmrUpdating || patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */)) {\n // HMR updated / Dev root fragment (w/ comments), force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n // check if this is a slot fragment with :slotted scope ids\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n if (n1 == null) {\n hostInsert(fragmentStartAnchor, container, anchor);\n hostInsert(fragmentEndAnchor, container, anchor);\n // a fragment can only have array children\n // since they are either generated by the compiler, or implicitly created\n // from arrays.\n mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n if (patchFlag > 0 &&\n patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */ &&\n dynamicChildren &&\n // #2715 the previous fragment could've been a BAILed one as a result\n // of renderSlot() with no valid children\n n1.dynamicChildren) {\n // a stable fragment (template root or <template v-for>) doesn't need to\n // patch children order, but it may contain dynamicChildren.\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n else if (\n // #2080 if the stable fragment has a key, it's a <template v-for> that may\n // get moved around. Make sure all root level vnodes inherit el.\n // #2134 or if it's a component root, it may also get moved around\n // as the component is being moved.\n n2.key != null ||\n (parentComponent && n2 === parentComponent.subTree)) {\n traverseStaticChildren(n1, n2, true /* shallow */);\n }\n }\n else {\n // keyed / unkeyed, or manual fragments.\n // for keyed & unkeyed, since they are compiler generated from v-for,\n // each child is guaranteed to be a block so the fragment will never\n // have dynamicChildren.\n patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n };\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n n2.slotScopeIds = slotScopeIds;\n if (n1 == null) {\n if (n2.shapeFlag & 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */) {\n parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);\n }\n else {\n mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\n }\n }\n else {\n updateComponent(n1, n2, optimized);\n }\n };\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\n const instance = (initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense));\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n registerHMR(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(initialVNode);\n startMeasure(instance, `mount`);\n }\n // inject renderer internals for keepAlive\n if (isKeepAlive(initialVNode)) {\n instance.ctx.renderer = internals;\n }\n // resolve props and slots for setup context\n {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `init`);\n }\n setupComponent(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `init`);\n }\n }\n // setup() is async. This component relies on async logic to be resolved\n // before proceeding\n if (instance.asyncDep) {\n parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\n // Give it a placeholder if this is not hydration\n // TODO handle self-defined fallback\n if (!initialVNode.el) {\n const placeholder = (instance.subTree = createVNode(Comment));\n processCommentNode(null, placeholder, container, anchor);\n }\n return;\n }\n setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n endMeasure(instance, `mount`);\n }\n };\n const updateComponent = (n1, n2, optimized) => {\n const instance = (n2.component = n1.component);\n if (shouldUpdateComponent(n1, n2, optimized)) {\n if (instance.asyncDep &&\n !instance.asyncResolved) {\n // async & still pending - just update props and slots\n // since the component's reactive effect for render isn't set-up yet\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(n2);\n }\n updateComponentPreRender(instance, n2, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n return;\n }\n else {\n // normal update\n instance.next = n2;\n // in case the child component is also queued, remove it to avoid\n // double updating the same child component in the same flush.\n invalidateJob(instance.update);\n // instance.update is the reactive effect.\n instance.update();\n }\n }\n else {\n // no update needed. just copy over properties\n n2.el = n1.el;\n instance.vnode = n2;\n }\n };\n const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\n const componentUpdateFn = () => {\n if (!instance.isMounted) {\n let vnodeHook;\n const { el, props } = initialVNode;\n const { bm, m, parent } = instance;\n const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n toggleRecurse(instance, false);\n // beforeMount hook\n if (bm) {\n invokeArrayFns(bm);\n }\n // onVnodeBeforeMount\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parent, initialVNode);\n }\n toggleRecurse(instance, true);\n if (el && hydrateNode) {\n // vnode has adopted host node - perform hydration instead of mount.\n const hydrateSubTree = () => {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n instance.subTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `hydrate`);\n }\n hydrateNode(el, instance.subTree, instance, parentSuspense, null);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `hydrate`);\n }\n };\n if (isAsyncWrapperVNode) {\n initialVNode.type.__asyncLoader().then(\n // note: we are moving the render call into an async callback,\n // which means it won't track dependencies - but it's ok because\n // a server-rendered async wrapper is already in resolved state\n // and it will never need to change.\n () => !instance.isUnmounted && hydrateSubTree());\n }\n else {\n hydrateSubTree();\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const subTree = (instance.subTree = renderComponentRoot(instance));\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n initialVNode.el = subTree.el;\n }\n // mounted hook\n if (m) {\n queuePostRenderEffect(m, parentSuspense);\n }\n // onVnodeMounted\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeMounted)) {\n const scopedInitialVNode = initialVNode;\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);\n }\n // activated hook for keep-alive roots.\n // #1742 activated hook must be accessed after first render\n // since the hook may be injected by a child keep-alive\n if (initialVNode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */ ||\n (parent &&\n isAsyncWrapper(parent.vnode) &&\n parent.vnode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */)) {\n instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n }\n instance.isMounted = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance);\n }\n // #2458: deference mount-only object parameters to prevent memleaks\n initialVNode = container = anchor = null;\n }\n else {\n // updateComponent\n // This is triggered by mutation of component's own state (next: null)\n // OR parent calling processComponent (next: VNode)\n let { next, bu, u, parent, vnode } = instance;\n let originNext = next;\n let vnodeHook;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(next || instance.vnode);\n }\n // Disallow component effect recursion during pre-lifecycle hooks.\n toggleRecurse(instance, false);\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n }\n else {\n next = vnode;\n }\n // beforeUpdate hook\n if (bu) {\n invokeArrayFns(bu);\n }\n // onVnodeBeforeUpdate\n if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parent, next, vnode);\n }\n toggleRecurse(instance, true);\n // render\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const nextTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n const prevTree = instance.subTree;\n instance.subTree = nextTree;\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(prevTree, nextTree, \n // parent may have changed if it's in a teleport\n hostParentNode(prevTree.el), \n // anchor may have changed if it's in a fragment\n getNextHostNode(prevTree), instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n next.el = nextTree.el;\n if (originNext === null) {\n // self-triggered update. In case of HOC, update parent component\n // vnode el. HOC is indicated by parent instance's subTree pointing\n // to child component's vnode\n updateHOCHostEl(instance, nextTree.el);\n }\n // updated hook\n if (u) {\n queuePostRenderEffect(u, parentSuspense);\n }\n // onVnodeUpdated\n if ((vnodeHook = next.props && next.props.onVnodeUpdated)) {\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n }\n };\n // create reactive effect for rendering\n const effect = (instance.effect = new ReactiveEffect(componentUpdateFn, () => queueJob(update), instance.scope // track it in component's effect scope\n ));\n const update = (instance.update = () => effect.run());\n update.id = instance.uid;\n // allowRecurse\n // #1801, #2043 component render effects should allow recursive updates\n toggleRecurse(instance, true);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = instance.rtc\n ? e => invokeArrayFns(instance.rtc, e)\n : void 0;\n effect.onTrigger = instance.rtg\n ? e => invokeArrayFns(instance.rtg, e)\n : void 0;\n update.ownerInstance = instance;\n }\n update();\n };\n const updateComponentPreRender = (instance, nextVNode, optimized) => {\n nextVNode.component = instance;\n const prevProps = instance.vnode.props;\n instance.vnode = nextVNode;\n instance.next = null;\n updateProps(instance, nextVNode.props, prevProps, optimized);\n updateSlots(instance, nextVNode.children, optimized);\n pauseTracking();\n // props update may have triggered pre-flush watchers.\n // flush them before the render update.\n flushPreFlushCbs();\n resetTracking();\n };\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {\n const c1 = n1 && n1.children;\n const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n const c2 = n2.children;\n const { patchFlag, shapeFlag } = n2;\n // fast path\n if (patchFlag > 0) {\n if (patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */) {\n // this could be either fully-keyed or mixed (some keyed some not)\n // presence of patchFlag means children are guaranteed to be arrays\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n else if (patchFlag & 256 /* PatchFlags.UNKEYED_FRAGMENT */) {\n // unkeyed\n patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n }\n // children has 3 possibilities: text, array or no children.\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n // text children fast path\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n unmountChildren(c1, parentComponent, parentSuspense);\n }\n if (c2 !== c1) {\n hostSetElementText(container, c2);\n }\n }\n else {\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // prev children was array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // two arrays, cannot assume anything, do full diff\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n // no new children, just unmount old\n unmountChildren(c1, parentComponent, parentSuspense, true);\n }\n }\n else {\n // prev children was text OR null\n // new children is array OR null\n if (prevShapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(container, '');\n }\n // mount new if array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n }\n };\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n c1 = c1 || EMPTY_ARR;\n c2 = c2 || EMPTY_ARR;\n const oldLength = c1.length;\n const newLength = c2.length;\n const commonLength = Math.min(oldLength, newLength);\n let i;\n for (i = 0; i < commonLength; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n if (oldLength > newLength) {\n // remove old\n unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);\n }\n else {\n // mount new\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);\n }\n };\n // can be all-keyed or mixed\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let i = 0;\n const l2 = c2.length;\n let e1 = c1.length - 1; // prev ending index\n let e2 = l2 - 1; // next ending index\n // 1. sync from start\n // (a b) c\n // (a b) d e\n while (i <= e1 && i <= e2) {\n const n1 = c1[i];\n const n2 = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n i++;\n }\n // 2. sync from end\n // a (b c)\n // d e (b c)\n while (i <= e1 && i <= e2) {\n const n1 = c1[e1];\n const n2 = (c2[e2] = optimized\n ? cloneIfMounted(c2[e2])\n : normalizeVNode(c2[e2]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n e1--;\n e2--;\n }\n // 3. common sequence + mount\n // (a b)\n // (a b) c\n // i = 2, e1 = 1, e2 = 2\n // (a b)\n // c (a b)\n // i = 0, e1 = -1, e2 = 0\n if (i > e1) {\n if (i <= e2) {\n const nextPos = e2 + 1;\n const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n while (i <= e2) {\n patch(null, (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i])), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n i++;\n }\n }\n }\n // 4. common sequence + unmount\n // (a b) c\n // (a b)\n // i = 2, e1 = 2, e2 = 1\n // a (b c)\n // (b c)\n // i = 0, e1 = 0, e2 = -1\n else if (i > e2) {\n while (i <= e1) {\n unmount(c1[i], parentComponent, parentSuspense, true);\n i++;\n }\n }\n // 5. unknown sequence\n // [i ... e1 + 1]: a b [c d e] f g\n // [i ... e2 + 1]: a b [e d c h] f g\n // i = 2, e1 = 4, e2 = 5\n else {\n const s1 = i; // prev starting index\n const s2 = i; // next starting index\n // 5.1 build key:index map for newChildren\n const keyToNewIndexMap = new Map();\n for (i = s2; i <= e2; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (nextChild.key != null) {\n if ((process.env.NODE_ENV !== 'production') && keyToNewIndexMap.has(nextChild.key)) {\n warn(`Duplicate keys found during update:`, JSON.stringify(nextChild.key), `Make sure keys are unique.`);\n }\n keyToNewIndexMap.set(nextChild.key, i);\n }\n }\n // 5.2 loop through old children left to be patched and try to patch\n // matching nodes & remove nodes that are no longer present\n let j;\n let patched = 0;\n const toBePatched = e2 - s2 + 1;\n let moved = false;\n // used to track whether any node has moved\n let maxNewIndexSoFar = 0;\n // works as Map<newIndex, oldIndex>\n // Note that oldIndex is offset by +1\n // and oldIndex = 0 is a special value indicating the new node has\n // no corresponding old node.\n // used for determining longest stable subsequence\n const newIndexToOldIndexMap = new Array(toBePatched);\n for (i = 0; i < toBePatched; i++)\n newIndexToOldIndexMap[i] = 0;\n for (i = s1; i <= e1; i++) {\n const prevChild = c1[i];\n if (patched >= toBePatched) {\n // all new children have been patched so this can only be a removal\n unmount(prevChild, parentComponent, parentSuspense, true);\n continue;\n }\n let newIndex;\n if (prevChild.key != null) {\n newIndex = keyToNewIndexMap.get(prevChild.key);\n }\n else {\n // key-less node, try to locate a key-less node of the same type\n for (j = s2; j <= e2; j++) {\n if (newIndexToOldIndexMap[j - s2] === 0 &&\n isSameVNodeType(prevChild, c2[j])) {\n newIndex = j;\n break;\n }\n }\n }\n if (newIndex === undefined) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n }\n else {\n newIndexToOldIndexMap[newIndex - s2] = i + 1;\n if (newIndex >= maxNewIndexSoFar) {\n maxNewIndexSoFar = newIndex;\n }\n else {\n moved = true;\n }\n patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n patched++;\n }\n }\n // 5.3 move and mount\n // generate longest stable subsequence only when nodes have moved\n const increasingNewIndexSequence = moved\n ? getSequence(newIndexToOldIndexMap)\n : EMPTY_ARR;\n j = increasingNewIndexSequence.length - 1;\n // looping backwards so that we can use last patched node as anchor\n for (i = toBePatched - 1; i >= 0; i--) {\n const nextIndex = s2 + i;\n const nextChild = c2[nextIndex];\n const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n if (newIndexToOldIndexMap[i] === 0) {\n // mount new\n patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (moved) {\n // move if:\n // There is no stable subsequence (e.g. a reverse)\n // OR current node is not among the stable sequence\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\n move(nextChild, container, anchor, 2 /* MoveType.REORDER */);\n }\n else {\n j--;\n }\n }\n }\n }\n };\n const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n const { el, type, transition, children, shapeFlag } = vnode;\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n move(vnode.component.subTree, container, anchor, moveType);\n return;\n }\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.move(container, anchor, moveType);\n return;\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.move(vnode, container, anchor, internals);\n return;\n }\n if (type === Fragment) {\n hostInsert(el, container, anchor);\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, anchor, moveType);\n }\n hostInsert(vnode.anchor, container, anchor);\n return;\n }\n if (type === Static) {\n moveStaticNode(vnode, container, anchor);\n return;\n }\n // single nodes\n const needTransition = moveType !== 2 /* MoveType.REORDER */ &&\n shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition;\n if (needTransition) {\n if (moveType === 0 /* MoveType.ENTER */) {\n transition.beforeEnter(el);\n hostInsert(el, container, anchor);\n queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n }\n else {\n const { leave, delayLeave, afterLeave } = transition;\n const remove = () => hostInsert(el, container, anchor);\n const performLeave = () => {\n leave(el, () => {\n remove();\n afterLeave && afterLeave();\n });\n };\n if (delayLeave) {\n delayLeave(el, remove, performLeave);\n }\n else {\n performLeave();\n }\n }\n }\n else {\n hostInsert(el, container, anchor);\n }\n };\n const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;\n // unset ref\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode, true);\n }\n if (shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */) {\n parentComponent.ctx.deactivate(vnode);\n return;\n }\n const shouldInvokeDirs = shapeFlag & 1 /* ShapeFlags.ELEMENT */ && dirs;\n const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n let vnodeHook;\n if (shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n unmountComponent(vnode.component, parentSuspense, doRemove);\n }\n else {\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.unmount(parentSuspense, doRemove);\n return;\n }\n if (shouldInvokeDirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount');\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);\n }\n else if (dynamicChildren &&\n // #1153: fast path should not be taken for non-stable (v-for) fragments\n (type !== Fragment ||\n (patchFlag > 0 && patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */))) {\n // fast path for block nodes: only need to unmount dynamic children.\n unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);\n }\n else if ((type === Fragment &&\n patchFlag &\n (128 /* PatchFlags.KEYED_FRAGMENT */ | 256 /* PatchFlags.UNKEYED_FRAGMENT */)) ||\n (!optimized && shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */)) {\n unmountChildren(children, parentComponent, parentSuspense);\n }\n if (doRemove) {\n remove(vnode);\n }\n }\n if ((shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeUnmounted)) ||\n shouldInvokeDirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n shouldInvokeDirs &&\n invokeDirectiveHook(vnode, null, parentComponent, 'unmounted');\n }, parentSuspense);\n }\n };\n const remove = vnode => {\n const { type, el, anchor, transition } = vnode;\n if (type === Fragment) {\n if ((process.env.NODE_ENV !== 'production') &&\n vnode.patchFlag > 0 &&\n vnode.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */ &&\n transition &&\n !transition.persisted) {\n vnode.children.forEach(child => {\n if (child.type === Comment) {\n hostRemove(child.el);\n }\n else {\n remove(child);\n }\n });\n }\n else {\n removeFragment(el, anchor);\n }\n return;\n }\n if (type === Static) {\n removeStaticNode(vnode);\n return;\n }\n const performRemove = () => {\n hostRemove(el);\n if (transition && !transition.persisted && transition.afterLeave) {\n transition.afterLeave();\n }\n };\n if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition &&\n !transition.persisted) {\n const { leave, delayLeave } = transition;\n const performLeave = () => leave(el, performRemove);\n if (delayLeave) {\n delayLeave(vnode.el, performRemove, performLeave);\n }\n else {\n performLeave();\n }\n }\n else {\n performRemove();\n }\n };\n const removeFragment = (cur, end) => {\n // For fragments, directly remove all contained DOM nodes.\n // (fragment child nodes cannot have transition)\n let next;\n while (cur !== end) {\n next = hostNextSibling(cur);\n hostRemove(cur);\n cur = next;\n }\n hostRemove(end);\n };\n const unmountComponent = (instance, parentSuspense, doRemove) => {\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n unregisterHMR(instance);\n }\n const { bum, scope, update, subTree, um } = instance;\n // beforeUnmount hook\n if (bum) {\n invokeArrayFns(bum);\n }\n // stop effects in component scope\n scope.stop();\n // update may be null if a component is unmounted before its async\n // setup has resolved.\n if (update) {\n // so that scheduler will no longer invoke it\n update.active = false;\n unmount(subTree, instance, parentSuspense, doRemove);\n }\n // unmounted hook\n if (um) {\n queuePostRenderEffect(um, parentSuspense);\n }\n queuePostRenderEffect(() => {\n instance.isUnmounted = true;\n }, parentSuspense);\n // A component with async dep inside a pending suspense is unmounted before\n // its async dep resolves. This should remove the dep from the suspense, and\n // cause the suspense to resolve immediately if that was the last dep.\n if (parentSuspense &&\n parentSuspense.pendingBranch &&\n !parentSuspense.isUnmounted &&\n instance.asyncDep &&\n !instance.asyncResolved &&\n instance.suspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0) {\n parentSuspense.resolve();\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentRemoved(instance);\n }\n };\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n for (let i = start; i < children.length; i++) {\n unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n }\n };\n const getNextHostNode = vnode => {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n return getNextHostNode(vnode.component.subTree);\n }\n if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n return vnode.suspense.next();\n }\n return hostNextSibling((vnode.anchor || vnode.el));\n };\n const render = (vnode, container, isSVG) => {\n if (vnode == null) {\n if (container._vnode) {\n unmount(container._vnode, null, null, true);\n }\n }\n else {\n patch(container._vnode || null, vnode, container, null, null, null, isSVG);\n }\n flushPreFlushCbs();\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const internals = {\n p: patch,\n um: unmount,\n m: move,\n r: remove,\n mt: mountComponent,\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n n: getNextHostNode,\n o: options\n };\n let hydrate;\n let hydrateNode;\n if (createHydrationFns) {\n [hydrate, hydrateNode] = createHydrationFns(internals);\n }\n return {\n render,\n hydrate,\n createApp: createAppAPI(render, hydrate)\n };\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n effect.allowRecurse = update.allowRecurse = allowed;\n}\n/**\n * #1156\n * When a component is HMR-enabled, we need to make sure that all static nodes\n * inside a block also inherit the DOM element from the previous tree so that\n * HMR updates (which are full updates) can retrieve the element for patching.\n *\n * #2080\n * Inside keyed `template` fragment static children, if a fragment is moved,\n * the children will always be moved. Therefore, in order to ensure correct move\n * position, el should be inherited from previous nodes.\n */\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n const ch1 = n1.children;\n const ch2 = n2.children;\n if (isArray(ch1) && isArray(ch2)) {\n for (let i = 0; i < ch1.length; i++) {\n // this is only called in the optimized path so array children are\n // guaranteed to be vnodes\n const c1 = ch1[i];\n let c2 = ch2[i];\n if (c2.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && !c2.dynamicChildren) {\n if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* PatchFlags.HYDRATE_EVENTS */) {\n c2 = ch2[i] = cloneIfMounted(ch2[i]);\n c2.el = c1.el;\n }\n if (!shallow)\n traverseStaticChildren(c1, c2);\n }\n // #6852 also inherit for text nodes\n if (c2.type === Text) {\n c2.el = c1.el;\n }\n // also inherit for comment nodes, but not placeholders (e.g. v-if which\n // would have received .el during block patch)\n if ((process.env.NODE_ENV !== 'production') && c2.type === Comment && !c2.el) {\n c2.el = c1.el;\n }\n }\n }\n}\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\nfunction getSequence(arr) {\n const p = arr.slice();\n const result = [0];\n let i, j, u, v, c;\n const len = arr.length;\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI !== 0) {\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n u = 0;\n v = result.length - 1;\n while (u < v) {\n c = (u + v) >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n }\n else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = result.length;\n v = result[u - 1];\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n return result;\n}\n\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === '');\nconst isTargetSVG = (target) => typeof SVGElement !== 'undefined' && target instanceof SVGElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Current renderer does not support string target for Teleports. ` +\n `(missing querySelector renderer option)`);\n return null;\n }\n else {\n const target = select(targetSelector);\n if (!target) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Failed to locate Teleport target with selector \"${targetSelector}\". ` +\n `Note the target element must exist before the component is mounted - ` +\n `i.e. the target cannot be rendered by the component itself, and ` +\n `ideally should be outside of the entire Vue component tree.`);\n }\n return target;\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && !targetSelector && !isTeleportDisabled(props)) {\n warn(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {\n const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert, querySelector, createText, createComment } } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n // #3302\n // HMR updated, force full diff\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n // insert anchors in the main view\n const placeholder = (n2.el = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport start')\n : createText(''));\n const mainAnchor = (n2.anchor = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport end')\n : createText(''));\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const target = (n2.target = resolveTarget(n2.props, querySelector));\n const targetAnchor = (n2.targetAnchor = createText(''));\n if (target) {\n insert(targetAnchor, target);\n // #2652 we could be teleporting from a non-SVG tree into an SVG tree\n isSVG = isSVG || isTargetSVG(target);\n }\n else if ((process.env.NODE_ENV !== 'production') && !disabled) {\n warn('Invalid Teleport target on mount:', target, `(${typeof target})`);\n }\n const mount = (container, anchor) => {\n // Teleport *always* has Array children. This is enforced in both the\n // compiler and vnode children normalization.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n }\n else if (target) {\n mount(target, targetAnchor);\n }\n }\n else {\n // update content\n n2.el = n1.el;\n const mainAnchor = (n2.anchor = n1.anchor);\n const target = (n2.target = n1.target);\n const targetAnchor = (n2.targetAnchor = n1.targetAnchor);\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n isSVG = isSVG || isTargetSVG(target);\n if (dynamicChildren) {\n // fast path when the teleport happens to be a block root\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds);\n // even in block tree mode we need to make sure all root-level nodes\n // in the teleport inherit previous DOM references so that they can\n // be moved in future patches.\n traverseStaticChildren(n1, n2, true);\n }\n else if (!optimized) {\n patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false);\n }\n if (disabled) {\n if (!wasDisabled) {\n // enabled -> disabled\n // move into main container\n moveTeleport(n2, container, mainAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n else {\n // target changed\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = (n2.target = resolveTarget(n2.props, querySelector));\n if (nextTarget) {\n moveTeleport(n2, nextTarget, null, internals, 0 /* TeleportMoveTypes.TARGET_CHANGE */);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid Teleport target on update:', target, `(${typeof target})`);\n }\n }\n else if (wasDisabled) {\n // disabled -> enabled\n // move into teleport target\n moveTeleport(n2, target, targetAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n }\n updateCssVars(n2);\n },\n remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\n if (target) {\n hostRemove(targetAnchor);\n }\n // an unmounted teleport should always remove its children if not disabled\n if (doRemove || !isTeleportDisabled(props)) {\n hostRemove(anchor);\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);\n }\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* TeleportMoveTypes.REORDER */) {\n // move target anchor if this is a target change.\n if (moveType === 0 /* TeleportMoveTypes.TARGET_CHANGE */) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2 /* TeleportMoveTypes.REORDER */;\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n // if this is a re-order and teleport is enabled (content is in target)\n // do not move children. So the opposite is: only move children if this\n // is not a reorder, or the teleport is disabled\n if (!isReorder || isTeleportDisabled(props)) {\n // Teleport has either Array children or no children.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, parentAnchor, 2 /* MoveType.REORDER */);\n }\n }\n }\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {\n const target = (vnode.target = resolveTarget(vnode.props, querySelector));\n if (target) {\n // if multiple teleports rendered to the same target element, we need to\n // pick up from where the last teleport finished instead of the first node\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n if (isTeleportDisabled(vnode.props)) {\n vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);\n vnode.targetAnchor = targetNode;\n }\n else {\n vnode.anchor = nextSibling(node);\n // lookahead until we find the target anchor\n // we cannot rely on return value of hydrateChildren() because there\n // could be nested teleports\n let targetAnchor = targetNode;\n while (targetAnchor) {\n targetAnchor = nextSibling(targetAnchor);\n if (targetAnchor &&\n targetAnchor.nodeType === 8 &&\n targetAnchor.data === 'teleport anchor') {\n vnode.targetAnchor = targetAnchor;\n target._lpa =\n vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n updateCssVars(vnode);\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\n// Force-casted public typing for h and TSX props inference\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode) {\n // presence of .ut method indicates owner component uses css vars.\n // code path here can assume browser environment.\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node = vnode.children[0].el;\n while (node !== vnode.targetAnchor) {\n if (node.nodeType === 1)\n node.setAttribute('data-v-owner', ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\n\nconst Fragment = Symbol((process.env.NODE_ENV !== 'production') ? 'Fragment' : undefined);\nconst Text = Symbol((process.env.NODE_ENV !== 'production') ? 'Text' : undefined);\nconst Comment = Symbol((process.env.NODE_ENV !== 'production') ? 'Comment' : undefined);\nconst Static = Symbol((process.env.NODE_ENV !== 'production') ? 'Static' : undefined);\n// Since v-if and v-for are the two possible ways node structure can dynamically\n// change, once we consider v-if branches and each v-for fragment a block, we\n// can divide a template into nested blocks, and within each block the node\n// structure would be stable. This allows us to skip most children diffing\n// and only worry about the dynamic nodes (indicated by patch flags).\nconst blockStack = [];\nlet currentBlock = null;\n/**\n * Open a block.\n * This must be called before `createBlock`. It cannot be part of `createBlock`\n * because the children of the block are evaluated before `createBlock` itself\n * is called. The generated code typically looks like this:\n *\n * ```js\n * function render() {\n * return (openBlock(),createBlock('div', null, [...]))\n * }\n * ```\n * disableTracking is true when creating a v-for fragment block, since a v-for\n * fragment always diffs its children.\n *\n * @private\n */\nfunction openBlock(disableTracking = false) {\n blockStack.push((currentBlock = disableTracking ? null : []));\n}\nfunction closeBlock() {\n blockStack.pop();\n currentBlock = blockStack[blockStack.length - 1] || null;\n}\n// Whether we should be tracking dynamic child nodes inside a block.\n// Only tracks when this value is > 0\n// We are not using a simple boolean because this value may need to be\n// incremented/decremented by nested usage of v-once (see below)\nlet isBlockTreeEnabled = 1;\n/**\n * Block tracking sometimes needs to be disabled, for example during the\n * creation of a tree that needs to be cached by v-once. The compiler generates\n * code like this:\n *\n * ``` js\n * _cache[1] || (\n * setBlockTracking(-1),\n * _cache[1] = createVNode(...),\n * setBlockTracking(1),\n * _cache[1]\n * )\n * ```\n *\n * @private\n */\nfunction setBlockTracking(value) {\n isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n // save current block children on the block vnode\n vnode.dynamicChildren =\n isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n // close block\n closeBlock();\n // a block is always going to be patched, so track it as a child of its\n // parent block\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\n/**\n * @private\n */\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true /* isBlock */));\n}\n/**\n * Create a block root vnode. Takes the same exact arguments as `createVNode`.\n * A block root keeps track of dynamic nodes within the block in the\n * `dynamicChildren` array.\n *\n * @private\n */\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true /* isBlock: prevent a block from tracking itself */));\n}\nfunction isVNode(value) {\n return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n if ((process.env.NODE_ENV !== 'production') &&\n n2.shapeFlag & 6 /* ShapeFlags.COMPONENT */ &&\n hmrDirtyComponents.has(n2.type)) {\n // #7042, ensure the vnode being unmounted during HMR\n // bitwise operations to remove keep alive flags\n n1.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n n2.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n // HMR only: if the component has been hot-updated, force a reload.\n return false;\n }\n return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\n/**\n * Internal API for registering an arguments transform for createVNode\n * used for creating stubs in the test-utils\n * It is *internal* but needs to be exposed for test-utils to pick up proper\n * typings\n */\nfunction transformVNodeArgs(transformer) {\n vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n return _createVNode(...(vnodeArgsTransformer\n ? vnodeArgsTransformer(args, currentRenderingInstance)\n : args));\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({ ref, ref_key, ref_for }) => {\n return (ref != null\n ? isString(ref) || isRef(ref) || isFunction(ref)\n ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for }\n : ref\n : null);\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ShapeFlags.ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) {\n const vnode = {\n __v_isVNode: true,\n __v_skip: true,\n type,\n props,\n key: props && normalizeKey(props),\n ref: props && normalizeRef(props),\n scopeId: currentScopeId,\n slotScopeIds: null,\n children,\n component: null,\n suspense: null,\n ssContent: null,\n ssFallback: null,\n dirs: null,\n transition: null,\n el: null,\n anchor: null,\n target: null,\n targetAnchor: null,\n staticCount: 0,\n shapeFlag,\n patchFlag,\n dynamicProps,\n dynamicChildren: null,\n appContext: null,\n ctx: currentRenderingInstance\n };\n if (needFullChildrenNormalization) {\n normalizeChildren(vnode, children);\n // normalize suspense children\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.normalize(vnode);\n }\n }\n else if (children) {\n // compiled element vnode - if children is passed, only possible types are\n // string or Array.\n vnode.shapeFlag |= isString(children)\n ? 8 /* ShapeFlags.TEXT_CHILDREN */\n : 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n // validate key\n if ((process.env.NODE_ENV !== 'production') && vnode.key !== vnode.key) {\n warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n }\n // track vnode for block tree\n if (isBlockTreeEnabled > 0 &&\n // avoid a block node from tracking itself\n !isBlockNode &&\n // has current parent block\n currentBlock &&\n // presence of a patch flag indicates this node needs patching on updates.\n // component nodes also should always be patched, because even if the\n // component doesn't need to update, it needs to persist the instance on to\n // the next vnode so that it can be properly unmounted later.\n (vnode.patchFlag > 0 || shapeFlag & 6 /* ShapeFlags.COMPONENT */) &&\n // the EVENTS flag is only for hydration and if it is the only flag, the\n // vnode should not be considered dynamic due to handler caching.\n vnode.patchFlag !== 32 /* PatchFlags.HYDRATE_EVENTS */) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nconst createVNode = ((process.env.NODE_ENV !== 'production') ? createVNodeWithArgsTransform : _createVNode);\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\n if ((process.env.NODE_ENV !== 'production') && !type) {\n warn(`Invalid vnode type when creating vnode: ${type}.`);\n }\n type = Comment;\n }\n if (isVNode(type)) {\n // createVNode receiving an existing vnode. This happens in cases like\n // <component :is=\"vnode\"/>\n // #2078 make sure to merge refs during the clone instead of overwriting it\n const cloned = cloneVNode(type, props, true /* mergeRef: true */);\n if (children) {\n normalizeChildren(cloned, children);\n }\n if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n if (cloned.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n currentBlock[currentBlock.indexOf(type)] = cloned;\n }\n else {\n currentBlock.push(cloned);\n }\n }\n cloned.patchFlag |= -2 /* PatchFlags.BAIL */;\n return cloned;\n }\n // class component normalization.\n if (isClassComponent(type)) {\n type = type.__vccOpts;\n }\n // class & style normalization.\n if (props) {\n // for reactive or proxy objects, we need to clone it to enable mutation.\n props = guardReactiveProps(props);\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (isObject(style)) {\n // reactive state objects need to be cloned since they are likely to be\n // mutated\n if (isProxy(style) && !isArray(style)) {\n style = extend({}, style);\n }\n props.style = normalizeStyle(style);\n }\n }\n // encode the vnode type information into a bitmap\n const shapeFlag = isString(type)\n ? 1 /* ShapeFlags.ELEMENT */\n : isSuspense(type)\n ? 128 /* ShapeFlags.SUSPENSE */\n : isTeleport(type)\n ? 64 /* ShapeFlags.TELEPORT */\n : isObject(type)\n ? 4 /* ShapeFlags.STATEFUL_COMPONENT */\n : isFunction(type)\n ? 2 /* ShapeFlags.FUNCTIONAL_COMPONENT */\n : 0;\n if ((process.env.NODE_ENV !== 'production') && shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */ && isProxy(type)) {\n type = toRaw(type);\n warn(`Vue received a Component which was made a reactive object. This can ` +\n `lead to unnecessary performance overhead, and should be avoided by ` +\n `marking the component with \\`markRaw\\` or using \\`shallowRef\\` ` +\n `instead of \\`ref\\`.`, `\\nComponent that was made reactive: `, type);\n }\n return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);\n}\nfunction guardReactiveProps(props) {\n if (!props)\n return null;\n return isProxy(props) || InternalObjectKey in props\n ? extend({}, props)\n : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n // This is intentionally NOT using spread or extend to avoid the runtime\n // key enumeration cost.\n const { props, ref, patchFlag, children } = vnode;\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n const cloned = {\n __v_isVNode: true,\n __v_skip: true,\n type: vnode.type,\n props: mergedProps,\n key: mergedProps && normalizeKey(mergedProps),\n ref: extraProps && extraProps.ref\n ? // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n // if the vnode itself already has a ref, cloneVNode will need to merge\n // the refs so the single vnode can be set on multiple refs\n mergeRef && ref\n ? isArray(ref)\n ? ref.concat(normalizeRef(extraProps))\n : [ref, normalizeRef(extraProps)]\n : normalizeRef(extraProps)\n : ref,\n scopeId: vnode.scopeId,\n slotScopeIds: vnode.slotScopeIds,\n children: (process.env.NODE_ENV !== 'production') && patchFlag === -1 /* PatchFlags.HOISTED */ && isArray(children)\n ? children.map(deepCloneVNode)\n : children,\n target: vnode.target,\n targetAnchor: vnode.targetAnchor,\n staticCount: vnode.staticCount,\n shapeFlag: vnode.shapeFlag,\n // if the vnode is cloned with extra props, we can no longer assume its\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n // note: preserve flag for fragments since they use the flag for children\n // fast paths only.\n patchFlag: extraProps && vnode.type !== Fragment\n ? patchFlag === -1 // hoisted node\n ? 16 /* PatchFlags.FULL_PROPS */\n : patchFlag | 16 /* PatchFlags.FULL_PROPS */\n : patchFlag,\n dynamicProps: vnode.dynamicProps,\n dynamicChildren: vnode.dynamicChildren,\n appContext: vnode.appContext,\n dirs: vnode.dirs,\n transition: vnode.transition,\n // These should technically only be non-null on mounted VNodes. However,\n // they *should* be copied for kept-alive vnodes. So we just always copy\n // them since them being non-null during a mount doesn't affect the logic as\n // they will simply be overwritten.\n component: vnode.component,\n suspense: vnode.suspense,\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n el: vnode.el,\n anchor: vnode.anchor,\n ctx: vnode.ctx\n };\n return cloned;\n}\n/**\n * Dev only, for HMR of hoisted vnodes reused in v-for\n * https://github.com/vitejs/vite/issues/2022\n */\nfunction deepCloneVNode(vnode) {\n const cloned = cloneVNode(vnode);\n if (isArray(vnode.children)) {\n cloned.children = vnode.children.map(deepCloneVNode);\n }\n return cloned;\n}\n/**\n * @private\n */\nfunction createTextVNode(text = ' ', flag = 0) {\n return createVNode(Text, null, text, flag);\n}\n/**\n * @private\n */\nfunction createStaticVNode(content, numberOfNodes) {\n // A static vnode can contain multiple stringified elements, and the number\n // of elements is necessary for hydration.\n const vnode = createVNode(Static, null, content);\n vnode.staticCount = numberOfNodes;\n return vnode;\n}\n/**\n * @private\n */\nfunction createCommentVNode(text = '', \n// when used as the v-else branch, the comment node must be created as a\n// block to ensure correct updates.\nasBlock = false) {\n return asBlock\n ? (openBlock(), createBlock(Comment, null, text))\n : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n if (child == null || typeof child === 'boolean') {\n // empty placeholder\n return createVNode(Comment);\n }\n else if (isArray(child)) {\n // fragment\n return createVNode(Fragment, null, \n // #3666, avoid reference pollution when reusing vnode\n child.slice());\n }\n else if (typeof child === 'object') {\n // already vnode, this should be the most common since compiled templates\n // always produce all-vnode children arrays\n return cloneIfMounted(child);\n }\n else {\n // strings and numbers\n return createVNode(Text, null, String(child));\n }\n}\n// optimized normalization for template-compiled render fns\nfunction cloneIfMounted(child) {\n return (child.el === null && child.patchFlag !== -1 /* PatchFlags.HOISTED */) ||\n child.memo\n ? child\n : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n let type = 0;\n const { shapeFlag } = vnode;\n if (children == null) {\n children = null;\n }\n else if (isArray(children)) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n else if (typeof children === 'object') {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 64 /* ShapeFlags.TELEPORT */)) {\n // Normalize slot to plain children for plain element and Teleport\n const slot = children.default;\n if (slot) {\n // _c marker is added by withCtx() indicating this is a compiled slot\n slot._c && (slot._d = false);\n normalizeChildren(vnode, slot());\n slot._c && (slot._d = true);\n }\n return;\n }\n else {\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n const slotFlag = children._;\n if (!slotFlag && !(InternalObjectKey in children)) {\n children._ctx = currentRenderingInstance;\n }\n else if (slotFlag === 3 /* SlotFlags.FORWARDED */ && currentRenderingInstance) {\n // a child component receives forwarded slots from the parent.\n // its slot type is determined by its parent's slot type.\n if (currentRenderingInstance.slots._ === 1 /* SlotFlags.STABLE */) {\n children._ = 1 /* SlotFlags.STABLE */;\n }\n else {\n children._ = 2 /* SlotFlags.DYNAMIC */;\n vnode.patchFlag |= 1024 /* PatchFlags.DYNAMIC_SLOTS */;\n }\n }\n }\n }\n else if (isFunction(children)) {\n children = { default: children, _ctx: currentRenderingInstance };\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n }\n else {\n children = String(children);\n // force teleport children to array so it can be moved around\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n children = [createTextVNode(children)];\n }\n else {\n type = 8 /* ShapeFlags.TEXT_CHILDREN */;\n }\n }\n vnode.children = children;\n vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n const toMerge = args[i];\n for (const key in toMerge) {\n if (key === 'class') {\n if (ret.class !== toMerge.class) {\n ret.class = normalizeClass([ret.class, toMerge.class]);\n }\n }\n else if (key === 'style') {\n ret.style = normalizeStyle([ret.style, toMerge.style]);\n }\n else if (isOn(key)) {\n const existing = ret[key];\n const incoming = toMerge[key];\n if (incoming &&\n existing !== incoming &&\n !(isArray(existing) && existing.includes(incoming))) {\n ret[key] = existing\n ? [].concat(existing, incoming)\n : incoming;\n }\n }\n else if (key !== '') {\n ret[key] = toMerge[key];\n }\n }\n }\n return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n callWithAsyncErrorHandling(hook, instance, 7 /* ErrorCodes.VNODE_HOOK */, [\n vnode,\n prevVNode\n ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid$1 = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n const type = vnode.type;\n // inherit parent app context - or - if root, adopt from root vnode\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n const instance = {\n uid: uid$1++,\n vnode,\n type,\n parent,\n appContext,\n root: null,\n next: null,\n subTree: null,\n effect: null,\n update: null,\n scope: new EffectScope(true /* detached */),\n render: null,\n proxy: null,\n exposed: null,\n exposeProxy: null,\n withProxy: null,\n provides: parent ? parent.provides : Object.create(appContext.provides),\n accessCache: null,\n renderCache: [],\n // local resolved assets\n components: null,\n directives: null,\n // resolved props and emits options\n propsOptions: normalizePropsOptions(type, appContext),\n emitsOptions: normalizeEmitsOptions(type, appContext),\n // emit\n emit: null,\n emitted: null,\n // props default value\n propsDefaults: EMPTY_OBJ,\n // inheritAttrs\n inheritAttrs: type.inheritAttrs,\n // state\n ctx: EMPTY_OBJ,\n data: EMPTY_OBJ,\n props: EMPTY_OBJ,\n attrs: EMPTY_OBJ,\n slots: EMPTY_OBJ,\n refs: EMPTY_OBJ,\n setupState: EMPTY_OBJ,\n setupContext: null,\n // suspense related\n suspense,\n suspenseId: suspense ? suspense.pendingId : 0,\n asyncDep: null,\n asyncResolved: false,\n // lifecycle hooks\n // not using enums here because it results in computed properties\n isMounted: false,\n isUnmounted: false,\n isDeactivated: false,\n bc: null,\n c: null,\n bm: null,\n m: null,\n bu: null,\n u: null,\n um: null,\n bum: null,\n da: null,\n a: null,\n rtg: null,\n rtc: null,\n ec: null,\n sp: null\n };\n if ((process.env.NODE_ENV !== 'production')) {\n instance.ctx = createDevRenderContext(instance);\n }\n else {\n instance.ctx = { _: instance };\n }\n instance.root = parent ? parent.root : instance;\n instance.emit = emit$1.bind(null, instance);\n // apply custom element special handling\n if (vnode.ce) {\n vnode.ce(instance);\n }\n return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nconst setCurrentInstance = (instance) => {\n currentInstance = instance;\n instance.scope.on();\n};\nconst unsetCurrentInstance = () => {\n currentInstance && currentInstance.scope.off();\n currentInstance = null;\n};\nconst isBuiltInTag = /*#__PURE__*/ makeMap('slot,component');\nfunction validateComponentName(name, config) {\n const appIsNativeTag = config.isNativeTag || NO;\n if (isBuiltInTag(name) || appIsNativeTag(name)) {\n warn('Do not use built-in or reserved HTML elements as component id: ' + name);\n }\n}\nfunction isStatefulComponent(instance) {\n return instance.vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n isInSSRComponentSetup = isSSR;\n const { props, children } = instance.vnode;\n const isStateful = isStatefulComponent(instance);\n initProps(instance, props, isStateful, isSSR);\n initSlots(instance, children);\n const setupResult = isStateful\n ? setupStatefulComponent(instance, isSSR)\n : undefined;\n isInSSRComponentSetup = false;\n return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n var _a;\n const Component = instance.type;\n if ((process.env.NODE_ENV !== 'production')) {\n if (Component.name) {\n validateComponentName(Component.name, instance.appContext.config);\n }\n if (Component.components) {\n const names = Object.keys(Component.components);\n for (let i = 0; i < names.length; i++) {\n validateComponentName(names[i], instance.appContext.config);\n }\n }\n if (Component.directives) {\n const names = Object.keys(Component.directives);\n for (let i = 0; i < names.length; i++) {\n validateDirectiveName(names[i]);\n }\n }\n if (Component.compilerOptions && isRuntimeOnly()) {\n warn(`\"compilerOptions\" is only supported when using a build of Vue that ` +\n `includes the runtime compiler. Since you are using a runtime-only ` +\n `build, the options should be passed via your build tool config instead.`);\n }\n }\n // 0. create render proxy property access cache\n instance.accessCache = Object.create(null);\n // 1. create public instance / render proxy\n // also mark it raw so it's never observed\n instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n if ((process.env.NODE_ENV !== 'production')) {\n exposePropsOnRenderContext(instance);\n }\n // 2. call setup()\n const { setup } = Component;\n if (setup) {\n const setupContext = (instance.setupContext =\n setup.length > 1 ? createSetupContext(instance) : null);\n setCurrentInstance(instance);\n pauseTracking();\n const setupResult = callWithErrorHandling(setup, instance, 0 /* ErrorCodes.SETUP_FUNCTION */, [(process.env.NODE_ENV !== 'production') ? shallowReadonly(instance.props) : instance.props, setupContext]);\n resetTracking();\n unsetCurrentInstance();\n if (isPromise(setupResult)) {\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n if (isSSR) {\n // return the promise so server-renderer can wait on it\n return setupResult\n .then((resolvedResult) => {\n handleSetupResult(instance, resolvedResult, isSSR);\n })\n .catch(e => {\n handleError(e, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n });\n }\n else {\n // async setup returned Promise.\n // bail here and wait for re-entry.\n instance.asyncDep = setupResult;\n if ((process.env.NODE_ENV !== 'production') && !instance.suspense) {\n const name = (_a = Component.name) !== null && _a !== void 0 ? _a : 'Anonymous';\n warn(`Component <${name}>: setup function returned a promise, but no ` +\n `<Suspense> boundary was found in the parent component tree. ` +\n `A component with async setup() must be nested in a <Suspense> ` +\n `in order to be rendered.`);\n }\n }\n }\n else {\n handleSetupResult(instance, setupResult, isSSR);\n }\n }\n else {\n finishComponentSetup(instance, isSSR);\n }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n if (isFunction(setupResult)) {\n // setup returned an inline render function\n if (instance.type.__ssrInlineRender) {\n // when the function's name is `ssrRender` (compiled by SFC inline mode),\n // set it as ssrRender instead.\n instance.ssrRender = setupResult;\n }\n else {\n instance.render = setupResult;\n }\n }\n else if (isObject(setupResult)) {\n if ((process.env.NODE_ENV !== 'production') && isVNode(setupResult)) {\n warn(`setup() should not return VNodes directly - ` +\n `return a render function instead.`);\n }\n // setup returned bindings.\n // assuming a render function compiled from template is present.\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.devtoolsRawSetupState = setupResult;\n }\n instance.setupState = proxyRefs(setupResult);\n if ((process.env.NODE_ENV !== 'production')) {\n exposeSetupStateOnRenderContext(instance);\n }\n }\n else if ((process.env.NODE_ENV !== 'production') && setupResult !== undefined) {\n warn(`setup() should return an object. Received: ${setupResult === null ? 'null' : typeof setupResult}`);\n }\n finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\n/**\n * For runtime-dom to register the compiler.\n * Note the exported method uses any to avoid d.ts relying on the compiler types.\n */\nfunction registerRuntimeCompiler(_compile) {\n compile = _compile;\n installWithProxy = i => {\n if (i.render._rc) {\n i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n }\n };\n}\n// dev only\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n const Component = instance.type;\n // template / render function normalization\n // could be already set when returned from setup()\n if (!instance.render) {\n // only do on-the-fly compile if not in SSR - SSR on-the-fly compilation\n // is done by server-renderer\n if (!isSSR && compile && !Component.render) {\n const template = Component.template ||\n resolveMergedOptions(instance).template;\n if (template) {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `compile`);\n }\n const { isCustomElement, compilerOptions } = instance.appContext.config;\n const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n const finalCompilerOptions = extend(extend({\n isCustomElement,\n delimiters\n }, compilerOptions), componentCompilerOptions);\n Component.render = compile(template, finalCompilerOptions);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `compile`);\n }\n }\n }\n instance.render = (Component.render || NOOP);\n // for runtime-compiled render functions using `with` blocks, the render\n // proxy used needs a different `has` handler which is more performant and\n // also only allows a whitelist of globals to fallthrough.\n if (installWithProxy) {\n installWithProxy(instance);\n }\n }\n // support for 2.x options\n if (__VUE_OPTIONS_API__ && !(false )) {\n setCurrentInstance(instance);\n pauseTracking();\n applyOptions(instance);\n resetTracking();\n unsetCurrentInstance();\n }\n // warn missing template/render\n // the runtime compilation of template in SSR is done by server-render\n if ((process.env.NODE_ENV !== 'production') && !Component.render && instance.render === NOOP && !isSSR) {\n /* istanbul ignore if */\n if (!compile && Component.template) {\n warn(`Component provided template option but ` +\n `runtime compilation is not supported in this build of Vue.` +\n (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".`\n ) /* should not happen */);\n }\n else {\n warn(`Component is missing template or render function.`);\n }\n }\n}\nfunction createAttrsProxy(instance) {\n return new Proxy(instance.attrs, (process.env.NODE_ENV !== 'production')\n ? {\n get(target, key) {\n markAttrsAccessed();\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n },\n set() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n },\n deleteProperty() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n }\n }\n : {\n get(target, key) {\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n }\n });\n}\nfunction createSetupContext(instance) {\n const expose = exposed => {\n if ((process.env.NODE_ENV !== 'production') && instance.exposed) {\n warn(`expose() should be called only once per setup().`);\n }\n instance.exposed = exposed || {};\n };\n let attrs;\n if ((process.env.NODE_ENV !== 'production')) {\n // We use getters in dev in case libs like test-utils overwrite instance\n // properties (overwrites should not be done in prod)\n return Object.freeze({\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n get slots() {\n return shallowReadonly(instance.slots);\n },\n get emit() {\n return (event, ...args) => instance.emit(event, ...args);\n },\n expose\n });\n }\n else {\n return {\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n slots: instance.slots,\n emit: instance.emit,\n expose\n };\n }\n}\nfunction getExposeProxy(instance) {\n if (instance.exposed) {\n return (instance.exposeProxy ||\n (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n get(target, key) {\n if (key in target) {\n return target[key];\n }\n else if (key in publicPropertiesMap) {\n return publicPropertiesMap[key](instance);\n }\n },\n has(target, key) {\n return key in target || key in publicPropertiesMap;\n }\n })));\n }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction(Component)\n ? Component.displayName || Component.name\n : Component.name || (includeInferred && Component.__name);\n}\n/* istanbul ignore next */\nfunction formatComponentName(instance, Component, isRoot = false) {\n let name = getComponentName(Component);\n if (!name && Component.__file) {\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n if (match) {\n name = match[1];\n }\n }\n if (!name && instance && instance.parent) {\n // try to infer the name based on reverse resolution\n const inferFromRegistry = (registry) => {\n for (const key in registry) {\n if (registry[key] === Component) {\n return key;\n }\n }\n };\n name =\n inferFromRegistry(instance.components ||\n instance.parent.type.components) || inferFromRegistry(instance.appContext.components);\n }\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n return isFunction(value) && '__vccOpts' in value;\n}\n\nconst computed = ((getterOrOptions, debugOptions) => {\n // @ts-ignore\n return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n});\n\n// dev only\nconst warnRuntimeUsage = (method) => warn(`${method}() is a compiler-hint helper that is only usable inside ` +\n `<script setup> of a single file component. Its arguments should be ` +\n `compiled away and passing it at runtime has no effect.`);\n// implementation\nfunction defineProps() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineProps`);\n }\n return null;\n}\n// implementation\nfunction defineEmits() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineEmits`);\n }\n return null;\n}\n/**\n * Vue `<script setup>` compiler macro for declaring a component's exposed\n * instance properties when it is accessed by a parent component via template\n * refs.\n *\n * `<script setup>` components are closed by default - i.e. variables inside\n * the `<script setup>` scope is not exposed to parent unless explicitly exposed\n * via `defineExpose`.\n *\n * This is only usable inside `<script setup>`, is compiled away in the\n * output and should **not** be actually called at runtime.\n */\nfunction defineExpose(exposed) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineExpose`);\n }\n}\n/**\n * Vue `<script setup>` compiler macro for providing props default values when\n * using type-based `defineProps` declaration.\n *\n * Example usage:\n * ```ts\n * withDefaults(defineProps<{\n * size?: number\n * labels?: string[]\n * }>(), {\n * size: 3,\n * labels: () => ['default label']\n * })\n * ```\n *\n * This is only usable inside `<script setup>`, is compiled away in the output\n * and should **not** be actually called at runtime.\n */\nfunction withDefaults(props, defaults) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`withDefaults`);\n }\n return null;\n}\nfunction useSlots() {\n return getContext().slots;\n}\nfunction useAttrs() {\n return getContext().attrs;\n}\nfunction getContext() {\n const i = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !i) {\n warn(`useContext() called without active instance.`);\n }\n return i.setupContext || (i.setupContext = createSetupContext(i));\n}\n/**\n * Runtime helper for merging default declarations. Imported by compiled code\n * only.\n * @internal\n */\nfunction mergeDefaults(raw, defaults) {\n const props = isArray(raw)\n ? raw.reduce((normalized, p) => ((normalized[p] = {}), normalized), {})\n : raw;\n for (const key in defaults) {\n const opt = props[key];\n if (opt) {\n if (isArray(opt) || isFunction(opt)) {\n props[key] = { type: opt, default: defaults[key] };\n }\n else {\n opt.default = defaults[key];\n }\n }\n else if (opt === null) {\n props[key] = { default: defaults[key] };\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`props default key \"${key}\" has no corresponding declaration.`);\n }\n }\n return props;\n}\n/**\n * Used to create a proxy for the rest element when destructuring props with\n * defineProps().\n * @internal\n */\nfunction createPropsRestProxy(props, excludedKeys) {\n const ret = {};\n for (const key in props) {\n if (!excludedKeys.includes(key)) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n get: () => props[key]\n });\n }\n }\n return ret;\n}\n/**\n * `<script setup>` helper for persisting the current instance context over\n * async/await flows.\n *\n * `@vue/compiler-sfc` converts the following:\n *\n * ```ts\n * const x = await foo()\n * ```\n *\n * into:\n *\n * ```ts\n * let __temp, __restore\n * const x = (([__temp, __restore] = withAsyncContext(() => foo())),__temp=await __temp,__restore(),__temp)\n * ```\n * @internal\n */\nfunction withAsyncContext(getAwaitable) {\n const ctx = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !ctx) {\n warn(`withAsyncContext called without active current instance. ` +\n `This is likely a bug.`);\n }\n let awaitable = getAwaitable();\n unsetCurrentInstance();\n if (isPromise(awaitable)) {\n awaitable = awaitable.catch(e => {\n setCurrentInstance(ctx);\n throw e;\n });\n }\n return [awaitable, () => setCurrentInstance(ctx)];\n}\n\n// Actual implementation\nfunction h(type, propsOrChildren, children) {\n const l = arguments.length;\n if (l === 2) {\n if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n // single vnode without props\n if (isVNode(propsOrChildren)) {\n return createVNode(type, null, [propsOrChildren]);\n }\n // props without children\n return createVNode(type, propsOrChildren);\n }\n else {\n // omit props\n return createVNode(type, null, propsOrChildren);\n }\n }\n else {\n if (l > 3) {\n children = Array.prototype.slice.call(arguments, 2);\n }\n else if (l === 3 && isVNode(children)) {\n children = [children];\n }\n return createVNode(type, propsOrChildren, children);\n }\n}\n\nconst ssrContextKey = Symbol((process.env.NODE_ENV !== 'production') ? `ssrContext` : ``);\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Server rendering context not provided. Make sure to only call ` +\n `useSSRContext() conditionally in the server build.`);\n }\n return ctx;\n }\n};\n\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\n\nfunction initCustomFormatter() {\n /* eslint-disable no-restricted-globals */\n if (!(process.env.NODE_ENV !== 'production') || typeof window === 'undefined') {\n return;\n }\n const vueStyle = { style: 'color:#3ba776' };\n const numberStyle = { style: 'color:#0b1bc9' };\n const stringStyle = { style: 'color:#b62e24' };\n const keywordStyle = { style: 'color:#9d288c' };\n // custom formatter for Chrome\n // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html\n const formatter = {\n header(obj) {\n // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup\n if (!isObject(obj)) {\n return null;\n }\n if (obj.__isVue) {\n return ['div', vueStyle, `VueInstance`];\n }\n else if (isRef(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, genRefFlag(obj)],\n '<',\n formatValue(obj.value),\n `>`\n ];\n }\n else if (isReactive(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],\n '<',\n formatValue(obj),\n `>${isReadonly(obj) ? ` (readonly)` : ``}`\n ];\n }\n else if (isReadonly(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],\n '<',\n formatValue(obj),\n '>'\n ];\n }\n return null;\n },\n hasBody(obj) {\n return obj && obj.__isVue;\n },\n body(obj) {\n if (obj && obj.__isVue) {\n return [\n 'div',\n {},\n ...formatInstance(obj.$)\n ];\n }\n }\n };\n function formatInstance(instance) {\n const blocks = [];\n if (instance.type.props && instance.props) {\n blocks.push(createInstanceBlock('props', toRaw(instance.props)));\n }\n if (instance.setupState !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('setup', instance.setupState));\n }\n if (instance.data !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('data', toRaw(instance.data)));\n }\n const computed = extractKeys(instance, 'computed');\n if (computed) {\n blocks.push(createInstanceBlock('computed', computed));\n }\n const injected = extractKeys(instance, 'inject');\n if (injected) {\n blocks.push(createInstanceBlock('injected', injected));\n }\n blocks.push([\n 'div',\n {},\n [\n 'span',\n {\n style: keywordStyle.style + ';opacity:0.66'\n },\n '$ (internal): '\n ],\n ['object', { object: instance }]\n ]);\n return blocks;\n }\n function createInstanceBlock(type, target) {\n target = extend({}, target);\n if (!Object.keys(target).length) {\n return ['span', {}];\n }\n return [\n 'div',\n { style: 'line-height:1.25em;margin-bottom:0.6em' },\n [\n 'div',\n {\n style: 'color:#476582'\n },\n type\n ],\n [\n 'div',\n {\n style: 'padding-left:1.25em'\n },\n ...Object.keys(target).map(key => {\n return [\n 'div',\n {},\n ['span', keywordStyle, key + ': '],\n formatValue(target[key], false)\n ];\n })\n ]\n ];\n }\n function formatValue(v, asRaw = true) {\n if (typeof v === 'number') {\n return ['span', numberStyle, v];\n }\n else if (typeof v === 'string') {\n return ['span', stringStyle, JSON.stringify(v)];\n }\n else if (typeof v === 'boolean') {\n return ['span', keywordStyle, v];\n }\n else if (isObject(v)) {\n return ['object', { object: asRaw ? toRaw(v) : v }];\n }\n else {\n return ['span', stringStyle, String(v)];\n }\n }\n function extractKeys(instance, type) {\n const Comp = instance.type;\n if (isFunction(Comp)) {\n return;\n }\n const extracted = {};\n for (const key in instance.ctx) {\n if (isKeyOfType(Comp, key, type)) {\n extracted[key] = instance.ctx[key];\n }\n }\n return extracted;\n }\n function isKeyOfType(Comp, key, type) {\n const opts = Comp[type];\n if ((isArray(opts) && opts.includes(key)) ||\n (isObject(opts) && key in opts)) {\n return true;\n }\n if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n return true;\n }\n if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) {\n return true;\n }\n }\n function genRefFlag(v) {\n if (isShallow(v)) {\n return `ShallowRef`;\n }\n if (v.effect) {\n return `ComputedRef`;\n }\n return `Ref`;\n }\n if (window.devtoolsFormatters) {\n window.devtoolsFormatters.push(formatter);\n }\n else {\n window.devtoolsFormatters = [formatter];\n }\n}\n\nfunction withMemo(memo, render, cache, index) {\n const cached = cache[index];\n if (cached && isMemoSame(cached, memo)) {\n return cached;\n }\n const ret = render();\n // shallow clone\n ret.memo = memo.slice();\n return (cache[index] = ret);\n}\nfunction isMemoSame(cached, memo) {\n const prev = cached.memo;\n if (prev.length != memo.length) {\n return false;\n }\n for (let i = 0; i < prev.length; i++) {\n if (hasChanged(prev[i], memo[i])) {\n return false;\n }\n }\n // make sure to let parent block track it when returning cached\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(cached);\n }\n return true;\n}\n\n// Core API ------------------------------------------------------------------\nconst version = \"3.2.45\";\nconst _ssrUtils = {\n createComponentInstance,\n setupComponent,\n renderComponentRoot,\n setCurrentRenderingInstance,\n isVNode,\n normalizeVNode\n};\n/**\n * SSR utils for \\@vue/server-renderer. Only exposed in ssr-possible builds.\n * @internal\n */\nconst ssrUtils = (_ssrUtils );\n/**\n * @internal only exposed in compat builds\n */\nconst resolveFilter = null;\n/**\n * @internal only exposed in compat builds.\n */\nconst compatUtils = (null);\n\nexport { BaseTransition, Comment, Fragment, KeepAlive, Static, Suspense, Teleport, Text, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useSSRContext, useSlots, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n","import { warn, camelize, callWithAsyncErrorHandling, defineComponent, nextTick, createVNode, getCurrentInstance, watchPostEffect, onMounted, onUnmounted, Fragment, Static, h, BaseTransition, useTransitionState, onUpdated, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, createRenderer, isRuntimeOnly, createHydrationRenderer } from '@vue/runtime-core';\nexport * from '@vue/runtime-core';\nimport { isString, isArray, hyphenate, capitalize, isSpecialBooleanAttr, includeBooleanAttr, isOn, isModelListener, isFunction, camelize as camelize$1, toNumber, extend, EMPTY_OBJ, isObject, invokeArrayFns, looseIndexOf, isSet, looseEqual, isHTMLTag, isSVGTag } from '@vue/shared';\n\nconst svgNS = 'http://www.w3.org/2000/svg';\nconst doc = (typeof document !== 'undefined' ? document : null);\nconst templateContainer = doc && /*#__PURE__*/ doc.createElement('template');\nconst nodeOps = {\n insert: (child, parent, anchor) => {\n parent.insertBefore(child, anchor || null);\n },\n remove: child => {\n const parent = child.parentNode;\n if (parent) {\n parent.removeChild(child);\n }\n },\n createElement: (tag, isSVG, is, props) => {\n const el = isSVG\n ? doc.createElementNS(svgNS, tag)\n : doc.createElement(tag, is ? { is } : undefined);\n if (tag === 'select' && props && props.multiple != null) {\n el.setAttribute('multiple', props.multiple);\n }\n return el;\n },\n createText: text => doc.createTextNode(text),\n createComment: text => doc.createComment(text),\n setText: (node, text) => {\n node.nodeValue = text;\n },\n setElementText: (el, text) => {\n el.textContent = text;\n },\n parentNode: node => node.parentNode,\n nextSibling: node => node.nextSibling,\n querySelector: selector => doc.querySelector(selector),\n setScopeId(el, id) {\n el.setAttribute(id, '');\n },\n // __UNSAFE__\n // Reason: innerHTML.\n // Static content here can only come from compiled templates.\n // As long as the user only uses trusted templates, this is safe.\n insertStaticContent(content, parent, anchor, isSVG, start, end) {\n // <parent> before | first ... last | anchor </parent>\n const before = anchor ? anchor.previousSibling : parent.lastChild;\n // #5308 can only take cached path if:\n // - has a single root node\n // - nextSibling info is still available\n if (start && (start === end || start.nextSibling)) {\n // cached\n while (true) {\n parent.insertBefore(start.cloneNode(true), anchor);\n if (start === end || !(start = start.nextSibling))\n break;\n }\n }\n else {\n // fresh insert\n templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;\n const template = templateContainer.content;\n if (isSVG) {\n // remove outer svg wrapper\n const wrapper = template.firstChild;\n while (wrapper.firstChild) {\n template.appendChild(wrapper.firstChild);\n }\n template.removeChild(wrapper);\n }\n parent.insertBefore(template, anchor);\n }\n return [\n // first\n before ? before.nextSibling : parent.firstChild,\n // last\n anchor ? anchor.previousSibling : parent.lastChild\n ];\n }\n};\n\n// compiler should normalize class + :class bindings on the same element\n// into a single binding ['staticClass', dynamic]\nfunction patchClass(el, value, isSVG) {\n // directly setting className should be faster than setAttribute in theory\n // if this is an element during a transition, take the temporary transition\n // classes into account.\n const transitionClasses = el._vtc;\n if (transitionClasses) {\n value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(' ');\n }\n if (value == null) {\n el.removeAttribute('class');\n }\n else if (isSVG) {\n el.setAttribute('class', value);\n }\n else {\n el.className = value;\n }\n}\n\nfunction patchStyle(el, prev, next) {\n const style = el.style;\n const isCssString = isString(next);\n if (next && !isCssString) {\n for (const key in next) {\n setStyle(style, key, next[key]);\n }\n if (prev && !isString(prev)) {\n for (const key in prev) {\n if (next[key] == null) {\n setStyle(style, key, '');\n }\n }\n }\n }\n else {\n const currentDisplay = style.display;\n if (isCssString) {\n if (prev !== next) {\n style.cssText = next;\n }\n }\n else if (prev) {\n el.removeAttribute('style');\n }\n // indicates that the `display` of the element is controlled by `v-show`,\n // so we always keep the current `display` value regardless of the `style`\n // value, thus handing over control to `v-show`.\n if ('_vod' in el) {\n style.display = currentDisplay;\n }\n }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n if (isArray(val)) {\n val.forEach(v => setStyle(style, name, v));\n }\n else {\n if (val == null)\n val = '';\n if ((process.env.NODE_ENV !== 'production')) {\n if (semicolonRE.test(val)) {\n warn(`Unexpected semicolon at the end of '${name}' style value: '${val}'`);\n }\n }\n if (name.startsWith('--')) {\n // custom property definition\n style.setProperty(name, val);\n }\n else {\n const prefixed = autoPrefix(style, name);\n if (importantRE.test(val)) {\n // !important\n style.setProperty(hyphenate(prefixed), val.replace(importantRE, ''), 'important');\n }\n else {\n style[prefixed] = val;\n }\n }\n }\n}\nconst prefixes = ['Webkit', 'Moz', 'ms'];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n const cached = prefixCache[rawName];\n if (cached) {\n return cached;\n }\n let name = camelize(rawName);\n if (name !== 'filter' && name in style) {\n return (prefixCache[rawName] = name);\n }\n name = capitalize(name);\n for (let i = 0; i < prefixes.length; i++) {\n const prefixed = prefixes[i] + name;\n if (prefixed in style) {\n return (prefixCache[rawName] = prefixed);\n }\n }\n return rawName;\n}\n\nconst xlinkNS = 'http://www.w3.org/1999/xlink';\nfunction patchAttr(el, key, value, isSVG, instance) {\n if (isSVG && key.startsWith('xlink:')) {\n if (value == null) {\n el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n }\n else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n }\n else {\n // note we are only checking boolean attributes that don't have a\n // corresponding dom prop of the same name here.\n const isBoolean = isSpecialBooleanAttr(key);\n if (value == null || (isBoolean && !includeBooleanAttr(value))) {\n el.removeAttribute(key);\n }\n else {\n el.setAttribute(key, isBoolean ? '' : value);\n }\n }\n}\n\n// __UNSAFE__\n// functions. The user is responsible for using them with only trusted content.\nfunction patchDOMProp(el, key, value, \n// the following args are passed only due to potential innerHTML/textContent\n// overriding existing VNodes, in which case the old tree must be properly\n// unmounted.\nprevChildren, parentComponent, parentSuspense, unmountChildren) {\n if (key === 'innerHTML' || key === 'textContent') {\n if (prevChildren) {\n unmountChildren(prevChildren, parentComponent, parentSuspense);\n }\n el[key] = value == null ? '' : value;\n return;\n }\n if (key === 'value' &&\n el.tagName !== 'PROGRESS' &&\n // custom elements may use _value internally\n !el.tagName.includes('-')) {\n // store value as _value as well since\n // non-string values will be stringified.\n el._value = value;\n const newValue = value == null ? '' : value;\n if (el.value !== newValue ||\n // #4956: always set for OPTION elements because its value falls back to\n // textContent if no value attribute is present. And setting .value for\n // OPTION has no side effect\n el.tagName === 'OPTION') {\n el.value = newValue;\n }\n if (value == null) {\n el.removeAttribute(key);\n }\n return;\n }\n let needRemove = false;\n if (value === '' || value == null) {\n const type = typeof el[key];\n if (type === 'boolean') {\n // e.g. <select multiple> compiles to { multiple: '' }\n value = includeBooleanAttr(value);\n }\n else if (value == null && type === 'string') {\n // e.g. <div :id=\"null\">\n value = '';\n needRemove = true;\n }\n else if (type === 'number') {\n // e.g. <img :width=\"null\">\n value = 0;\n needRemove = true;\n }\n }\n // some properties perform value validation and throw,\n // some properties has getter, no setter, will error in 'use strict'\n // eg. <select :type=\"null\"></select> <select :willValidate=\"null\"></select>\n try {\n el[key] = value;\n }\n catch (e) {\n // do not warn if value is auto-coerced from nullish values\n if ((process.env.NODE_ENV !== 'production') && !needRemove) {\n warn(`Failed setting prop \"${key}\" on <${el.tagName.toLowerCase()}>: ` +\n `value ${value} is invalid.`, e);\n }\n }\n needRemove && el.removeAttribute(key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n el.removeEventListener(event, handler, options);\n}\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n // vei = vue event invokers\n const invokers = el._vei || (el._vei = {});\n const existingInvoker = invokers[rawName];\n if (nextValue && existingInvoker) {\n // patch\n existingInvoker.value = nextValue;\n }\n else {\n const [name, options] = parseName(rawName);\n if (nextValue) {\n // add\n const invoker = (invokers[rawName] = createInvoker(nextValue, instance));\n addEventListener(el, name, invoker, options);\n }\n else if (existingInvoker) {\n // remove\n removeEventListener(el, name, existingInvoker, options);\n invokers[rawName] = undefined;\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n let options;\n if (optionsModifierRE.test(name)) {\n options = {};\n let m;\n while ((m = name.match(optionsModifierRE))) {\n name = name.slice(0, name.length - m[0].length);\n options[m[0].toLowerCase()] = true;\n }\n }\n const event = name[2] === ':' ? name.slice(3) : hyphenate(name.slice(2));\n return [event, options];\n}\n// To avoid the overhead of repeatedly calling Date.now(), we cache\n// and use the same timestamp for all event listeners attached in the same tick.\nlet cachedNow = 0;\nconst p = /*#__PURE__*/ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => (cachedNow = 0)), (cachedNow = Date.now()));\nfunction createInvoker(initialValue, instance) {\n const invoker = (e) => {\n // async edge case vuejs/vue#6566\n // inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // this no longer happens for templates in Vue 3, but could still be\n // theoretically possible for hand-written render functions.\n // the solution: we save the timestamp when a handler is attached,\n // and also attach the timestamp to any event that was handled by vue\n // for the first time (to avoid inconsistent event timestamp implementations\n // or events fired from iframes, e.g. #2513)\n // The handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (!e._vts) {\n e._vts = Date.now();\n }\n else if (e._vts <= invoker.attached) {\n return;\n }\n callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5 /* ErrorCodes.NATIVE_EVENT_HANDLER */, [e]);\n };\n invoker.value = initialValue;\n invoker.attached = getNow();\n return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n if (isArray(value)) {\n const originalStop = e.stopImmediatePropagation;\n e.stopImmediatePropagation = () => {\n originalStop.call(e);\n e._stopped = true;\n };\n return value.map(fn => (e) => !e._stopped && fn && fn(e));\n }\n else {\n return value;\n }\n}\n\nconst nativeOnRE = /^on[a-z]/;\nconst patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\n if (key === 'class') {\n patchClass(el, nextValue, isSVG);\n }\n else if (key === 'style') {\n patchStyle(el, prevValue, nextValue);\n }\n else if (isOn(key)) {\n // ignore v-model listeners\n if (!isModelListener(key)) {\n patchEvent(el, key, prevValue, nextValue, parentComponent);\n }\n }\n else if (key[0] === '.'\n ? ((key = key.slice(1)), true)\n : key[0] === '^'\n ? ((key = key.slice(1)), false)\n : shouldSetAsProp(el, key, nextValue, isSVG)) {\n patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);\n }\n else {\n // special case for <input v-model type=\"checkbox\"> with\n // :true-value & :false-value\n // store value as dom properties since non-string values will be\n // stringified.\n if (key === 'true-value') {\n el._trueValue = nextValue;\n }\n else if (key === 'false-value') {\n el._falseValue = nextValue;\n }\n patchAttr(el, key, nextValue, isSVG);\n }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n if (isSVG) {\n // most keys must be set as attribute on svg elements to work\n // ...except innerHTML & textContent\n if (key === 'innerHTML' || key === 'textContent') {\n return true;\n }\n // or native onclick with function values\n if (key in el && nativeOnRE.test(key) && isFunction(value)) {\n return true;\n }\n return false;\n }\n // these are enumerated attrs, however their corresponding DOM properties\n // are actually booleans - this leads to setting it with a string \"false\"\n // value leading it to be coerced to `true`, so we need to always treat\n // them as attributes.\n // Note that `contentEditable` doesn't have this problem: its DOM\n // property is also enumerated string values.\n if (key === 'spellcheck' || key === 'draggable' || key === 'translate') {\n return false;\n }\n // #1787, #2840 form property on form elements is readonly and must be set as\n // attribute.\n if (key === 'form') {\n return false;\n }\n // #1526 <input list> must be set as attribute\n if (key === 'list' && el.tagName === 'INPUT') {\n return false;\n }\n // #2766 <textarea type> must be set as attribute\n if (key === 'type' && el.tagName === 'TEXTAREA') {\n return false;\n }\n // native onclick with string value, must be set as attribute\n if (nativeOnRE.test(key) && isString(value)) {\n return false;\n }\n return key in el;\n}\n\nfunction defineCustomElement(options, hydrate) {\n const Comp = defineComponent(options);\n class VueCustomElement extends VueElement {\n constructor(initialProps) {\n super(Comp, initialProps, hydrate);\n }\n }\n VueCustomElement.def = Comp;\n return VueCustomElement;\n}\nconst defineSSRCustomElement = ((options) => {\n // @ts-ignore\n return defineCustomElement(options, hydrate);\n});\nconst BaseClass = (typeof HTMLElement !== 'undefined' ? HTMLElement : class {\n});\nclass VueElement extends BaseClass {\n constructor(_def, _props = {}, hydrate) {\n super();\n this._def = _def;\n this._props = _props;\n /**\n * @internal\n */\n this._instance = null;\n this._connected = false;\n this._resolved = false;\n this._numberProps = null;\n if (this.shadowRoot && hydrate) {\n hydrate(this._createVNode(), this.shadowRoot);\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && this.shadowRoot) {\n warn(`Custom element has pre-rendered declarative shadow root but is not ` +\n `defined as hydratable. Use \\`defineSSRCustomElement\\`.`);\n }\n this.attachShadow({ mode: 'open' });\n if (!this._def.__asyncLoader) {\n // for sync component defs we can immediately resolve props\n this._resolveProps(this._def);\n }\n }\n }\n connectedCallback() {\n this._connected = true;\n if (!this._instance) {\n if (this._resolved) {\n this._update();\n }\n else {\n this._resolveDef();\n }\n }\n }\n disconnectedCallback() {\n this._connected = false;\n nextTick(() => {\n if (!this._connected) {\n render(null, this.shadowRoot);\n this._instance = null;\n }\n });\n }\n /**\n * resolve inner component definition (handle possible async component)\n */\n _resolveDef() {\n this._resolved = true;\n // set initial attrs\n for (let i = 0; i < this.attributes.length; i++) {\n this._setAttr(this.attributes[i].name);\n }\n // watch future attr changes\n new MutationObserver(mutations => {\n for (const m of mutations) {\n this._setAttr(m.attributeName);\n }\n }).observe(this, { attributes: true });\n const resolve = (def, isAsync = false) => {\n const { props, styles } = def;\n // cast Number-type props set before resolve\n let numberProps;\n if (props && !isArray(props)) {\n for (const key in props) {\n const opt = props[key];\n if (opt === Number || (opt && opt.type === Number)) {\n if (key in this._props) {\n this._props[key] = toNumber(this._props[key]);\n }\n (numberProps || (numberProps = Object.create(null)))[camelize$1(key)] = true;\n }\n }\n }\n this._numberProps = numberProps;\n if (isAsync) {\n // defining getter/setters on prototype\n // for sync defs, this already happened in the constructor\n this._resolveProps(def);\n }\n // apply CSS\n this._applyStyles(styles);\n // initial render\n this._update();\n };\n const asyncDef = this._def.__asyncLoader;\n if (asyncDef) {\n asyncDef().then(def => resolve(def, true));\n }\n else {\n resolve(this._def);\n }\n }\n _resolveProps(def) {\n const { props } = def;\n const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n // check if there are props set pre-upgrade or connect\n for (const key of Object.keys(this)) {\n if (key[0] !== '_' && declaredPropKeys.includes(key)) {\n this._setProp(key, this[key], true, false);\n }\n }\n // defining getter/setters on prototype\n for (const key of declaredPropKeys.map(camelize$1)) {\n Object.defineProperty(this, key, {\n get() {\n return this._getProp(key);\n },\n set(val) {\n this._setProp(key, val);\n }\n });\n }\n }\n _setAttr(key) {\n let value = this.getAttribute(key);\n const camelKey = camelize$1(key);\n if (this._numberProps && this._numberProps[camelKey]) {\n value = toNumber(value);\n }\n this._setProp(camelKey, value, false);\n }\n /**\n * @internal\n */\n _getProp(key) {\n return this._props[key];\n }\n /**\n * @internal\n */\n _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\n if (val !== this._props[key]) {\n this._props[key] = val;\n if (shouldUpdate && this._instance) {\n this._update();\n }\n // reflect\n if (shouldReflect) {\n if (val === true) {\n this.setAttribute(hyphenate(key), '');\n }\n else if (typeof val === 'string' || typeof val === 'number') {\n this.setAttribute(hyphenate(key), val + '');\n }\n else if (!val) {\n this.removeAttribute(hyphenate(key));\n }\n }\n }\n }\n _update() {\n render(this._createVNode(), this.shadowRoot);\n }\n _createVNode() {\n const vnode = createVNode(this._def, extend({}, this._props));\n if (!this._instance) {\n vnode.ce = instance => {\n this._instance = instance;\n instance.isCE = true;\n // HMR\n if ((process.env.NODE_ENV !== 'production')) {\n instance.ceReload = newStyles => {\n // always reset styles\n if (this._styles) {\n this._styles.forEach(s => this.shadowRoot.removeChild(s));\n this._styles.length = 0;\n }\n this._applyStyles(newStyles);\n this._instance = null;\n this._update();\n };\n }\n const dispatch = (event, args) => {\n this.dispatchEvent(new CustomEvent(event, {\n detail: args\n }));\n };\n // intercept emit\n instance.emit = (event, ...args) => {\n // dispatch both the raw and hyphenated versions of an event\n // to match Vue behavior\n dispatch(event, args);\n if (hyphenate(event) !== event) {\n dispatch(hyphenate(event), args);\n }\n };\n // locate nearest Vue custom element parent for provide/inject\n let parent = this;\n while ((parent =\n parent && (parent.parentNode || parent.host))) {\n if (parent instanceof VueElement) {\n instance.parent = parent._instance;\n instance.provides = parent._instance.provides;\n break;\n }\n }\n };\n }\n return vnode;\n }\n _applyStyles(styles) {\n if (styles) {\n styles.forEach(css => {\n const s = document.createElement('style');\n s.textContent = css;\n this.shadowRoot.appendChild(s);\n // record for HMR\n if ((process.env.NODE_ENV !== 'production')) {\n (this._styles || (this._styles = [])).push(s);\n }\n });\n }\n }\n}\n\nfunction useCssModule(name = '$style') {\n /* istanbul ignore else */\n {\n const instance = getCurrentInstance();\n if (!instance) {\n (process.env.NODE_ENV !== 'production') && warn(`useCssModule must be called inside setup()`);\n return EMPTY_OBJ;\n }\n const modules = instance.type.__cssModules;\n if (!modules) {\n (process.env.NODE_ENV !== 'production') && warn(`Current instance does not have CSS modules injected.`);\n return EMPTY_OBJ;\n }\n const mod = modules[name];\n if (!mod) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Current instance does not have CSS module named \"${name}\".`);\n return EMPTY_OBJ;\n }\n return mod;\n }\n}\n\n/**\n * Runtime helper for SFC's CSS variable injection feature.\n * @private\n */\nfunction useCssVars(getter) {\n const instance = getCurrentInstance();\n /* istanbul ignore next */\n if (!instance) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`useCssVars is called without current active component instance.`);\n return;\n }\n const updateTeleports = (instance.ut = (vars = getter(instance.proxy)) => {\n Array.from(document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)).forEach(node => setVarsOnNode(node, vars));\n });\n const setVars = () => {\n const vars = getter(instance.proxy);\n setVarsOnVNode(instance.subTree, vars);\n updateTeleports(vars);\n };\n watchPostEffect(setVars);\n onMounted(() => {\n const ob = new MutationObserver(setVars);\n ob.observe(instance.subTree.el.parentNode, { childList: true });\n onUnmounted(() => ob.disconnect());\n });\n}\nfunction setVarsOnVNode(vnode, vars) {\n if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n const suspense = vnode.suspense;\n vnode = suspense.activeBranch;\n if (suspense.pendingBranch && !suspense.isHydrating) {\n suspense.effects.push(() => {\n setVarsOnVNode(suspense.activeBranch, vars);\n });\n }\n }\n // drill down HOCs until it's a non-component vnode\n while (vnode.component) {\n vnode = vnode.component.subTree;\n }\n if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && vnode.el) {\n setVarsOnNode(vnode.el, vars);\n }\n else if (vnode.type === Fragment) {\n vnode.children.forEach(c => setVarsOnVNode(c, vars));\n }\n else if (vnode.type === Static) {\n let { el, anchor } = vnode;\n while (el) {\n setVarsOnNode(el, vars);\n if (el === anchor)\n break;\n el = el.nextSibling;\n }\n }\n}\nfunction setVarsOnNode(el, vars) {\n if (el.nodeType === 1) {\n const style = el.style;\n for (const key in vars) {\n style.setProperty(`--${key}`, vars[key]);\n }\n }\n}\n\nconst TRANSITION = 'transition';\nconst ANIMATION = 'animation';\n// DOM Transition is a higher-order-component based on the platform-agnostic\n// base Transition component, with DOM-specific logic.\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\nTransition.displayName = 'Transition';\nconst DOMTransitionPropsValidators = {\n name: String,\n type: String,\n css: {\n type: Boolean,\n default: true\n },\n duration: [String, Number, Object],\n enterFromClass: String,\n enterActiveClass: String,\n enterToClass: String,\n appearFromClass: String,\n appearActiveClass: String,\n appearToClass: String,\n leaveFromClass: String,\n leaveActiveClass: String,\n leaveToClass: String\n};\nconst TransitionPropsValidators = (Transition.props =\n /*#__PURE__*/ extend({}, BaseTransition.props, DOMTransitionPropsValidators));\n/**\n * #3227 Incoming hooks may be merged into arrays when wrapping Transition\n * with custom HOCs.\n */\nconst callHook = (hook, args = []) => {\n if (isArray(hook)) {\n hook.forEach(h => h(...args));\n }\n else if (hook) {\n hook(...args);\n }\n};\n/**\n * Check if a hook expects a callback (2nd arg), which means the user\n * intends to explicitly control the end of the transition.\n */\nconst hasExplicitCallback = (hook) => {\n return hook\n ? isArray(hook)\n ? hook.some(h => h.length > 1)\n : hook.length > 1\n : false;\n};\nfunction resolveTransitionProps(rawProps) {\n const baseProps = {};\n for (const key in rawProps) {\n if (!(key in DOMTransitionPropsValidators)) {\n baseProps[key] = rawProps[key];\n }\n }\n if (rawProps.css === false) {\n return baseProps;\n }\n const { name = 'v', type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;\n const durations = normalizeDuration(duration);\n const enterDuration = durations && durations[0];\n const leaveDuration = durations && durations[1];\n const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;\n const finishEnter = (el, isAppear, done) => {\n removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n done && done();\n };\n const finishLeave = (el, done) => {\n el._isLeaving = false;\n removeTransitionClass(el, leaveFromClass);\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n done && done();\n };\n const makeEnterHook = (isAppear) => {\n return (el, done) => {\n const hook = isAppear ? onAppear : onEnter;\n const resolve = () => finishEnter(el, isAppear, done);\n callHook(hook, [el, resolve]);\n nextFrame(() => {\n removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n if (!hasExplicitCallback(hook)) {\n whenTransitionEnds(el, type, enterDuration, resolve);\n }\n });\n };\n };\n return extend(baseProps, {\n onBeforeEnter(el) {\n callHook(onBeforeEnter, [el]);\n addTransitionClass(el, enterFromClass);\n addTransitionClass(el, enterActiveClass);\n },\n onBeforeAppear(el) {\n callHook(onBeforeAppear, [el]);\n addTransitionClass(el, appearFromClass);\n addTransitionClass(el, appearActiveClass);\n },\n onEnter: makeEnterHook(false),\n onAppear: makeEnterHook(true),\n onLeave(el, done) {\n el._isLeaving = true;\n const resolve = () => finishLeave(el, done);\n addTransitionClass(el, leaveFromClass);\n // force reflow so *-leave-from classes immediately take effect (#2593)\n forceReflow();\n addTransitionClass(el, leaveActiveClass);\n nextFrame(() => {\n if (!el._isLeaving) {\n // cancelled\n return;\n }\n removeTransitionClass(el, leaveFromClass);\n addTransitionClass(el, leaveToClass);\n if (!hasExplicitCallback(onLeave)) {\n whenTransitionEnds(el, type, leaveDuration, resolve);\n }\n });\n callHook(onLeave, [el, resolve]);\n },\n onEnterCancelled(el) {\n finishEnter(el, false);\n callHook(onEnterCancelled, [el]);\n },\n onAppearCancelled(el) {\n finishEnter(el, true);\n callHook(onAppearCancelled, [el]);\n },\n onLeaveCancelled(el) {\n finishLeave(el);\n callHook(onLeaveCancelled, [el]);\n }\n });\n}\nfunction normalizeDuration(duration) {\n if (duration == null) {\n return null;\n }\n else if (isObject(duration)) {\n return [NumberOf(duration.enter), NumberOf(duration.leave)];\n }\n else {\n const n = NumberOf(duration);\n return [n, n];\n }\n}\nfunction NumberOf(val) {\n const res = toNumber(val);\n if ((process.env.NODE_ENV !== 'production'))\n validateDuration(res);\n return res;\n}\nfunction validateDuration(val) {\n if (typeof val !== 'number') {\n warn(`<transition> explicit duration is not a valid number - ` +\n `got ${JSON.stringify(val)}.`);\n }\n else if (isNaN(val)) {\n warn(`<transition> explicit duration is NaN - ` +\n 'the duration expression might be incorrect.');\n }\n}\nfunction addTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach(c => c && el.classList.add(c));\n (el._vtc ||\n (el._vtc = new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach(c => c && el.classList.remove(c));\n const { _vtc } = el;\n if (_vtc) {\n _vtc.delete(cls);\n if (!_vtc.size) {\n el._vtc = undefined;\n }\n }\n}\nfunction nextFrame(cb) {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n const id = (el._endId = ++endId);\n const resolveIfNotStale = () => {\n if (id === el._endId) {\n resolve();\n }\n };\n if (explicitTimeout) {\n return setTimeout(resolveIfNotStale, explicitTimeout);\n }\n const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n if (!type) {\n return resolve();\n }\n const endEvent = type + 'end';\n let ended = 0;\n const end = () => {\n el.removeEventListener(endEvent, onEnd);\n resolveIfNotStale();\n };\n const onEnd = (e) => {\n if (e.target === el && ++ended >= propCount) {\n end();\n }\n };\n setTimeout(() => {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n const styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n const getStyleProperties = (key) => (styles[key] || '').split(', ');\n const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n const animationTimeout = getTimeout(animationDelays, animationDurations);\n let type = null;\n let timeout = 0;\n let propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n }\n else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n }\n else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type =\n timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n const hasTransform = type === TRANSITION &&\n /\\b(transform|all)(,|$)/.test(getStyleProperties(`${TRANSITION}Property`).toString());\n return {\n type,\n timeout,\n propCount,\n hasTransform\n };\n}\nfunction getTimeout(delays, durations) {\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer\n// numbers in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down\n// (i.e. acting as a floor function) causing unexpected behaviors\nfunction toMs(s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000;\n}\n// synchronously force layout to put elements into a certain state\nfunction forceReflow() {\n return document.body.offsetHeight;\n}\n\nconst positionMap = new WeakMap();\nconst newPositionMap = new WeakMap();\nconst TransitionGroupImpl = {\n name: 'TransitionGroup',\n props: /*#__PURE__*/ extend({}, TransitionPropsValidators, {\n tag: String,\n moveClass: String\n }),\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevChildren;\n let children;\n onUpdated(() => {\n // children is guaranteed to exist after initial render\n if (!prevChildren.length) {\n return;\n }\n const moveClass = props.moveClass || `${props.name || 'v'}-move`;\n if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {\n return;\n }\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n prevChildren.forEach(callPendingCbs);\n prevChildren.forEach(recordPosition);\n const movedChildren = prevChildren.filter(applyTranslation);\n // force reflow to put everything in position\n forceReflow();\n movedChildren.forEach(c => {\n const el = c.el;\n const style = el.style;\n addTransitionClass(el, moveClass);\n style.transform = style.webkitTransform = style.transitionDuration = '';\n const cb = (el._moveCb = (e) => {\n if (e && e.target !== el) {\n return;\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener('transitionend', cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n el.addEventListener('transitionend', cb);\n });\n });\n return () => {\n const rawProps = toRaw(props);\n const cssTransitionProps = resolveTransitionProps(rawProps);\n let tag = rawProps.tag || Fragment;\n prevChildren = children;\n children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.key != null) {\n setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`<TransitionGroup> children must be keyed.`);\n }\n }\n if (prevChildren) {\n for (let i = 0; i < prevChildren.length; i++) {\n const child = prevChildren[i];\n setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));\n positionMap.set(child, child.el.getBoundingClientRect());\n }\n }\n return createVNode(tag, null, children);\n };\n }\n};\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n const el = c.el;\n if (el._moveCb) {\n el._moveCb();\n }\n if (el._enterCb) {\n el._enterCb();\n }\n}\nfunction recordPosition(c) {\n newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n const oldPos = positionMap.get(c);\n const newPos = newPositionMap.get(c);\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n if (dx || dy) {\n const s = c.el.style;\n s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = '0s';\n return c;\n }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n const clone = el.cloneNode();\n if (el._vtc) {\n el._vtc.forEach(cls => {\n cls.split(/\\s+/).forEach(c => c && clone.classList.remove(c));\n });\n }\n moveClass.split(/\\s+/).forEach(c => c && clone.classList.add(c));\n clone.style.display = 'none';\n const container = (root.nodeType === 1 ? root : root.parentNode);\n container.appendChild(clone);\n const { hasTransform } = getTransitionInfo(clone);\n container.removeChild(clone);\n return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n const fn = vnode.props['onUpdate:modelValue'] ||\n (false );\n return isArray(fn) ? value => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n const target = e.target;\n if (target.composing) {\n target.composing = false;\n target.dispatchEvent(new Event('input'));\n }\n}\n// We are exporting the v-model runtime directly as vnode hooks so that it can\n// be tree-shaken in case v-model is never used.\nconst vModelText = {\n created(el, { modifiers: { lazy, trim, number } }, vnode) {\n el._assign = getModelAssigner(vnode);\n const castToNumber = number || (vnode.props && vnode.props.type === 'number');\n addEventListener(el, lazy ? 'change' : 'input', e => {\n if (e.target.composing)\n return;\n let domValue = el.value;\n if (trim) {\n domValue = domValue.trim();\n }\n if (castToNumber) {\n domValue = toNumber(domValue);\n }\n el._assign(domValue);\n });\n if (trim) {\n addEventListener(el, 'change', () => {\n el.value = el.value.trim();\n });\n }\n if (!lazy) {\n addEventListener(el, 'compositionstart', onCompositionStart);\n addEventListener(el, 'compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n addEventListener(el, 'change', onCompositionEnd);\n }\n },\n // set value on mounted so it's after min/max for type=\"range\"\n mounted(el, { value }) {\n el.value = value == null ? '' : value;\n },\n beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {\n el._assign = getModelAssigner(vnode);\n // avoid clearing unresolved text. #2302\n if (el.composing)\n return;\n if (document.activeElement === el && el.type !== 'range') {\n if (lazy) {\n return;\n }\n if (trim && el.value.trim() === value) {\n return;\n }\n if ((number || el.type === 'number') && toNumber(el.value) === value) {\n return;\n }\n }\n const newValue = value == null ? '' : value;\n if (el.value !== newValue) {\n el.value = newValue;\n }\n }\n};\nconst vModelCheckbox = {\n // #4096 array checkboxes need to be deep traversed\n deep: true,\n created(el, _, vnode) {\n el._assign = getModelAssigner(vnode);\n addEventListener(el, 'change', () => {\n const modelValue = el._modelValue;\n const elementValue = getValue(el);\n const checked = el.checked;\n const assign = el._assign;\n if (isArray(modelValue)) {\n const index = looseIndexOf(modelValue, elementValue);\n const found = index !== -1;\n if (checked && !found) {\n assign(modelValue.concat(elementValue));\n }\n else if (!checked && found) {\n const filtered = [...modelValue];\n filtered.splice(index, 1);\n assign(filtered);\n }\n }\n else if (isSet(modelValue)) {\n const cloned = new Set(modelValue);\n if (checked) {\n cloned.add(elementValue);\n }\n else {\n cloned.delete(elementValue);\n }\n assign(cloned);\n }\n else {\n assign(getCheckboxValue(el, checked));\n }\n });\n },\n // set initial checked on mount to wait for true-value/false-value\n mounted: setChecked,\n beforeUpdate(el, binding, vnode) {\n el._assign = getModelAssigner(vnode);\n setChecked(el, binding, vnode);\n }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n el._modelValue = value;\n if (isArray(value)) {\n el.checked = looseIndexOf(value, vnode.props.value) > -1;\n }\n else if (isSet(value)) {\n el.checked = value.has(vnode.props.value);\n }\n else if (value !== oldValue) {\n el.checked = looseEqual(value, getCheckboxValue(el, true));\n }\n}\nconst vModelRadio = {\n created(el, { value }, vnode) {\n el.checked = looseEqual(value, vnode.props.value);\n el._assign = getModelAssigner(vnode);\n addEventListener(el, 'change', () => {\n el._assign(getValue(el));\n });\n },\n beforeUpdate(el, { value, oldValue }, vnode) {\n el._assign = getModelAssigner(vnode);\n if (value !== oldValue) {\n el.checked = looseEqual(value, vnode.props.value);\n }\n }\n};\nconst vModelSelect = {\n // <select multiple> value need to be deep traversed\n deep: true,\n created(el, { value, modifiers: { number } }, vnode) {\n const isSetModel = isSet(value);\n addEventListener(el, 'change', () => {\n const selectedVal = Array.prototype.filter\n .call(el.options, (o) => o.selected)\n .map((o) => number ? toNumber(getValue(o)) : getValue(o));\n el._assign(el.multiple\n ? isSetModel\n ? new Set(selectedVal)\n : selectedVal\n : selectedVal[0]);\n });\n el._assign = getModelAssigner(vnode);\n },\n // set value in mounted & updated because <select> relies on its children\n // <option>s.\n mounted(el, { value }) {\n setSelected(el, value);\n },\n beforeUpdate(el, _binding, vnode) {\n el._assign = getModelAssigner(vnode);\n },\n updated(el, { value }) {\n setSelected(el, value);\n }\n};\nfunction setSelected(el, value) {\n const isMultiple = el.multiple;\n if (isMultiple && !isArray(value) && !isSet(value)) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`<select multiple v-model> expects an Array or Set value for its binding, ` +\n `but got ${Object.prototype.toString.call(value).slice(8, -1)}.`);\n return;\n }\n for (let i = 0, l = el.options.length; i < l; i++) {\n const option = el.options[i];\n const optionValue = getValue(option);\n if (isMultiple) {\n if (isArray(value)) {\n option.selected = looseIndexOf(value, optionValue) > -1;\n }\n else {\n option.selected = value.has(optionValue);\n }\n }\n else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i)\n el.selectedIndex = i;\n return;\n }\n }\n }\n if (!isMultiple && el.selectedIndex !== -1) {\n el.selectedIndex = -1;\n }\n}\n// retrieve raw value set via :value bindings\nfunction getValue(el) {\n return '_value' in el ? el._value : el.value;\n}\n// retrieve raw value for true-value and false-value set via :true-value or :false-value bindings\nfunction getCheckboxValue(el, checked) {\n const key = checked ? '_trueValue' : '_falseValue';\n return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n created(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, 'created');\n },\n mounted(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, 'mounted');\n },\n beforeUpdate(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, 'beforeUpdate');\n },\n updated(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, 'updated');\n }\n};\nfunction resolveDynamicModel(tagName, type) {\n switch (tagName) {\n case 'SELECT':\n return vModelSelect;\n case 'TEXTAREA':\n return vModelText;\n default:\n switch (type) {\n case 'checkbox':\n return vModelCheckbox;\n case 'radio':\n return vModelRadio;\n default:\n return vModelText;\n }\n }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n const modelToUse = resolveDynamicModel(el.tagName, vnode.props && vnode.props.type);\n const fn = modelToUse[hook];\n fn && fn(el, binding, vnode, prevVNode);\n}\n// SSR vnode transforms, only used when user includes client-oriented render\n// function in SSR\nfunction initVModelForSSR() {\n vModelText.getSSRProps = ({ value }) => ({ value });\n vModelRadio.getSSRProps = ({ value }, vnode) => {\n if (vnode.props && looseEqual(vnode.props.value, value)) {\n return { checked: true };\n }\n };\n vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n if (isArray(value)) {\n if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n return { checked: true };\n }\n }\n else if (isSet(value)) {\n if (vnode.props && value.has(vnode.props.value)) {\n return { checked: true };\n }\n }\n else if (value) {\n return { checked: true };\n }\n };\n vModelDynamic.getSSRProps = (binding, vnode) => {\n if (typeof vnode.type !== 'string') {\n return;\n }\n const modelToUse = resolveDynamicModel(\n // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n vnode.type.toUpperCase(), vnode.props && vnode.props.type);\n if (modelToUse.getSSRProps) {\n return modelToUse.getSSRProps(binding, vnode);\n }\n };\n}\n\nconst systemModifiers = ['ctrl', 'shift', 'alt', 'meta'];\nconst modifierGuards = {\n stop: e => e.stopPropagation(),\n prevent: e => e.preventDefault(),\n self: e => e.target !== e.currentTarget,\n ctrl: e => !e.ctrlKey,\n shift: e => !e.shiftKey,\n alt: e => !e.altKey,\n meta: e => !e.metaKey,\n left: e => 'button' in e && e.button !== 0,\n middle: e => 'button' in e && e.button !== 1,\n right: e => 'button' in e && e.button !== 2,\n exact: (e, modifiers) => systemModifiers.some(m => e[`${m}Key`] && !modifiers.includes(m))\n};\n/**\n * @private\n */\nconst withModifiers = (fn, modifiers) => {\n return (event, ...args) => {\n for (let i = 0; i < modifiers.length; i++) {\n const guard = modifierGuards[modifiers[i]];\n if (guard && guard(event, modifiers))\n return;\n }\n return fn(event, ...args);\n };\n};\n// Kept for 2.x compat.\n// Note: IE11 compat for `spacebar` and `del` is removed for now.\nconst keyNames = {\n esc: 'escape',\n space: ' ',\n up: 'arrow-up',\n left: 'arrow-left',\n right: 'arrow-right',\n down: 'arrow-down',\n delete: 'backspace'\n};\n/**\n * @private\n */\nconst withKeys = (fn, modifiers) => {\n return (event) => {\n if (!('key' in event)) {\n return;\n }\n const eventKey = hyphenate(event.key);\n if (modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) {\n return fn(event);\n }\n };\n};\n\nconst vShow = {\n beforeMount(el, { value }, { transition }) {\n el._vod = el.style.display === 'none' ? '' : el.style.display;\n if (transition && value) {\n transition.beforeEnter(el);\n }\n else {\n setDisplay(el, value);\n }\n },\n mounted(el, { value }, { transition }) {\n if (transition && value) {\n transition.enter(el);\n }\n },\n updated(el, { value, oldValue }, { transition }) {\n if (!value === !oldValue)\n return;\n if (transition) {\n if (value) {\n transition.beforeEnter(el);\n setDisplay(el, true);\n transition.enter(el);\n }\n else {\n transition.leave(el, () => {\n setDisplay(el, false);\n });\n }\n }\n else {\n setDisplay(el, value);\n }\n },\n beforeUnmount(el, { value }) {\n setDisplay(el, value);\n }\n};\nfunction setDisplay(el, value) {\n el.style.display = value ? el._vod : 'none';\n}\n// SSR vnode transforms, only used when user includes client-oriented render\n// function in SSR\nfunction initVShowForSSR() {\n vShow.getSSRProps = ({ value }) => {\n if (!value) {\n return { style: { display: 'none' } };\n }\n };\n}\n\nconst rendererOptions = /*#__PURE__*/ extend({ patchProp }, nodeOps);\n// lazy create the renderer - this makes core renderer logic tree-shakable\n// in case the user only imports reactivity utilities from Vue.\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n return (renderer ||\n (renderer = createRenderer(rendererOptions)));\n}\nfunction ensureHydrationRenderer() {\n renderer = enabledHydration\n ? renderer\n : createHydrationRenderer(rendererOptions);\n enabledHydration = true;\n return renderer;\n}\n// use explicit type casts here to avoid import() calls in rolled-up d.ts\nconst render = ((...args) => {\n ensureRenderer().render(...args);\n});\nconst hydrate = ((...args) => {\n ensureHydrationRenderer().hydrate(...args);\n});\nconst createApp = ((...args) => {\n const app = ensureRenderer().createApp(...args);\n if ((process.env.NODE_ENV !== 'production')) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (!container)\n return;\n const component = app._component;\n if (!isFunction(component) && !component.render && !component.template) {\n // __UNSAFE__\n // Reason: potential execution of JS expressions in in-DOM template.\n // The user must make sure the in-DOM template is trusted. If it's\n // rendered by the server, the template should not contain any user data.\n component.template = container.innerHTML;\n }\n // clear content before mounting\n container.innerHTML = '';\n const proxy = mount(container, false, container instanceof SVGElement);\n if (container instanceof Element) {\n container.removeAttribute('v-cloak');\n container.setAttribute('data-v-app', '');\n }\n return proxy;\n };\n return app;\n});\nconst createSSRApp = ((...args) => {\n const app = ensureHydrationRenderer().createApp(...args);\n if ((process.env.NODE_ENV !== 'production')) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (container) {\n return mount(container, true, container instanceof SVGElement);\n }\n };\n return app;\n});\nfunction injectNativeTagCheck(app) {\n // Inject `isNativeTag`\n // this is used for component name validation (dev only)\n Object.defineProperty(app.config, 'isNativeTag', {\n value: (tag) => isHTMLTag(tag) || isSVGTag(tag),\n writable: false\n });\n}\n// dev only\nfunction injectCompilerOptionsCheck(app) {\n if (isRuntimeOnly()) {\n const isCustomElement = app.config.isCustomElement;\n Object.defineProperty(app.config, 'isCustomElement', {\n get() {\n return isCustomElement;\n },\n set() {\n warn(`The \\`isCustomElement\\` config option is deprecated. Use ` +\n `\\`compilerOptions.isCustomElement\\` instead.`);\n }\n });\n const compilerOptions = app.config.compilerOptions;\n const msg = `The \\`compilerOptions\\` config option is only respected when using ` +\n `a build of Vue.js that includes the runtime compiler (aka \"full build\"). ` +\n `Since you are using the runtime-only build, \\`compilerOptions\\` ` +\n `must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\\n` +\n `- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\\n` +\n `- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\\n` +\n `- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-dom`;\n Object.defineProperty(app.config, 'compilerOptions', {\n get() {\n warn(msg);\n return compilerOptions;\n },\n set() {\n warn(msg);\n }\n });\n }\n}\nfunction normalizeContainer(container) {\n if (isString(container)) {\n const res = document.querySelector(container);\n if ((process.env.NODE_ENV !== 'production') && !res) {\n warn(`Failed to mount app: mount target selector \"${container}\" returned null.`);\n }\n return res;\n }\n if ((process.env.NODE_ENV !== 'production') &&\n window.ShadowRoot &&\n container instanceof window.ShadowRoot &&\n container.mode === 'closed') {\n warn(`mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`);\n }\n return container;\n}\nlet ssrDirectiveInitialized = false;\n/**\n * @internal\n */\nconst initDirectivesForSSR = () => {\n if (!ssrDirectiveInitialized) {\n ssrDirectiveInitialized = true;\n initVModelForSSR();\n initVShowForSSR();\n }\n }\n ;\n\nexport { Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers };\n","/**\n * Make a map and return a function for checking if a key\n * is in that map.\n * IMPORTANT: all calls of this function must be prefixed with\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\n * So that rollup can tree-shake them if necessary.\n */\nfunction makeMap(str, expectsLowerCase) {\n const map = Object.create(null);\n const list = str.split(',');\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\n}\n\n/**\n * dev only flag -> name mapping\n */\nconst PatchFlagNames = {\n [1 /* PatchFlags.TEXT */]: `TEXT`,\n [2 /* PatchFlags.CLASS */]: `CLASS`,\n [4 /* PatchFlags.STYLE */]: `STYLE`,\n [8 /* PatchFlags.PROPS */]: `PROPS`,\n [16 /* PatchFlags.FULL_PROPS */]: `FULL_PROPS`,\n [32 /* PatchFlags.HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,\n [64 /* PatchFlags.STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,\n [128 /* PatchFlags.KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,\n [256 /* PatchFlags.UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,\n [512 /* PatchFlags.NEED_PATCH */]: `NEED_PATCH`,\n [1024 /* PatchFlags.DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,\n [2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,\n [-1 /* PatchFlags.HOISTED */]: `HOISTED`,\n [-2 /* PatchFlags.BAIL */]: `BAIL`\n};\n\n/**\n * Dev only\n */\nconst slotFlagsText = {\n [1 /* SlotFlags.STABLE */]: 'STABLE',\n [2 /* SlotFlags.DYNAMIC */]: 'DYNAMIC',\n [3 /* SlotFlags.FORWARDED */]: 'FORWARDED'\n};\n\nconst GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\n 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\n 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';\nconst isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n // Split the content into individual lines but capture the newline sequence\n // that separated each line. This is important because the actual sequence is\n // needed to properly take into account the full line length for offset\n // comparison\n let lines = source.split(/(\\r?\\n)/);\n // Separate the lines and newline sequences into separate arrays for easier referencing\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count +=\n lines[i].length +\n ((newlineSequences[i] && newlineSequences[i].length) || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);\n const lineLength = lines[j].length;\n const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;\n if (j === i) {\n // push underline\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n }\n else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + '^'.repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item)\n ? parseStringStyle(item)\n : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n }\n else if (isString(value)) {\n return value;\n }\n else if (isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*.*?\\*\\//gs;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText\n .replace(styleCommentRE, '')\n .split(listDelimiterRE)\n .forEach(item => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = '';\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === 'number') {\n // only render valid values\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = '';\n if (isString(value)) {\n res = value;\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + ' ';\n }\n }\n }\n else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + ' ';\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\n// These tag configs are shared between compiler-dom and runtime-dom, so they\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\nconst HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +\n 'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +\n 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +\n 'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +\n 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +\n 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +\n 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +\n 'option,output,progress,select,textarea,details,dialog,menu,' +\n 'summary,template,blockquote,iframe,tfoot';\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\nconst SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +\n 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +\n 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +\n 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +\n 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +\n 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +\n 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +\n 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +\n 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +\n 'text,textPath,title,tspan,unknown,use,view';\nconst VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);\n\n/**\n * On the client we only need to offer special cases for boolean attributes that\n * have different names from their corresponding dom properties:\n * - itemscope -> N/A\n * - allowfullscreen -> allowFullscreen\n * - formnovalidate -> formNoValidate\n * - ismap -> isMap\n * - nomodule -> noModule\n * - novalidate -> noValidate\n * - readonly -> readOnly\n */\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);\n/**\n * The full list is needed during SSR to produce the correct initial markup.\n */\nconst isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +\n `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +\n `loop,open,required,reversed,scoped,seamless,` +\n `checked,muted,multiple,selected`);\n/**\n * Boolean attributes should be included if the value is truthy or ''.\n * e.g. `<select multiple>` compiles to `{ multiple: '' }`\n */\nfunction includeBooleanAttr(value) {\n return !!value || value === '';\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return (attrValidationCache[name] = !isUnsafe);\n}\nconst propsToAttrMap = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n};\n/**\n * Known attributes, this is used for stringification of runtime static nodes\n * so that we don't stringify bindings that cannot be set from HTML.\n * Don't also forget to allow `data-*` and `aria-*`!\n * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\n */\nconst isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +\n `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +\n `border,buffered,capture,challenge,charset,checked,cite,class,code,` +\n `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +\n `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +\n `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +\n `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +\n `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +\n `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +\n `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +\n `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +\n `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +\n `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +\n `start,step,style,summary,tabindex,target,title,translate,type,usemap,` +\n `value,width,wrap`);\n/**\n * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n */\nconst isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +\n `arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +\n `baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +\n `clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +\n `color-interpolation-filters,color-profile,color-rendering,` +\n `contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +\n `descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +\n `dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +\n `fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +\n `font-family,font-size,font-size-adjust,font-stretch,font-style,` +\n `font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +\n `glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +\n `gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +\n `horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +\n `k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +\n `lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +\n `marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +\n `mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +\n `name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +\n `overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +\n `pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +\n `pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +\n `preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +\n `rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +\n `restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +\n `specularConstant,specularExponent,speed,spreadMethod,startOffset,` +\n `stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +\n `strikethrough-position,strikethrough-thickness,string,stroke,` +\n `stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +\n `stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +\n `systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +\n `text-decoration,text-rendering,textLength,to,transform,transform-origin,` +\n `type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +\n `unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +\n `v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +\n `vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +\n `writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +\n `xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +\n `xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = '' + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = '';\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escaped = '&quot;';\n break;\n case 38: // &\n escaped = '&amp;';\n break;\n case 39: // '\n escaped = '&#39;';\n break;\n case 60: // <\n escaped = '&lt;';\n break;\n case 62: // >\n escaped = '&gt;';\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\n// https://www.w3.org/TR/html52/syntax.html#comments\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n return src.replace(commentStripRE, '');\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length)\n return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n /* istanbul ignore if: this if will probably never be called */\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if ((aHasKey && !bHasKey) ||\n (!aHasKey && bHasKey) ||\n !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex(item => looseEqual(item, val));\n}\n\n/**\n * For converting {{ interpolation }} values to displayed strings.\n * @private\n */\nconst toDisplayString = (val) => {\n return isString(val)\n ? val\n : val == null\n ? ''\n : isArray(val) ||\n (isObject(val) &&\n (val.toString === objectToString || !isFunction(val.toString)))\n ? JSON.stringify(val, replacer, 2)\n : String(val);\n};\nconst replacer = (_key, val) => {\n // can't use isRef here since @vue/shared has no deps\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n }\n else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {\n entries[`${key} =>`] = val;\n return entries;\n }, {})\n };\n }\n else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()]\n };\n }\n else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\n\nconst EMPTY_OBJ = (process.env.NODE_ENV !== 'production')\n ? Object.freeze({})\n : {};\nconst EMPTY_ARR = (process.env.NODE_ENV !== 'production') ? Object.freeze([]) : [];\nconst NOOP = () => { };\n/**\n * Always return false.\n */\nconst NO = () => false;\nconst onRE = /^on[^a-z]/;\nconst isOn = (key) => onRE.test(key);\nconst isModelListener = (key) => key.startsWith('onUpdate:');\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === '[object Map]';\nconst isSet = (val) => toTypeString(val) === '[object Set]';\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isSymbol = (val) => typeof val === 'symbol';\nconst isObject = (val) => val !== null && typeof val === 'object';\nconst isPromise = (val) => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n // extract \"RawType\" from strings like \"[object RawType]\"\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\nconst isIntegerKey = (key) => isString(key) &&\n key !== 'NaN' &&\n key[0] !== '-' &&\n '' + parseInt(key, 10) === key;\nconst isReservedProp = /*#__PURE__*/ makeMap(\n// the leading comma is intentional so empty string \"\" is also included\n',key,ref,ref_for,ref_key,' +\n 'onVnodeBeforeMount,onVnodeMounted,' +\n 'onVnodeBeforeUpdate,onVnodeUpdated,' +\n 'onVnodeBeforeUnmount,onVnodeUnmounted');\nconst isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');\nconst cacheStringFunction = (fn) => {\n const cache = Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-(\\w)/g;\n/**\n * @private\n */\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\n});\nconst hyphenateRE = /\\B([A-Z])/g;\n/**\n * @private\n */\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());\n/**\n * @private\n */\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\n/**\n * @private\n */\nconst toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\n// compare whether a value has changed, accounting for NaN.\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst toNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return (_globalThis ||\n (_globalThis =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {}));\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name)\n ? `__props.${name}`\n : `__props[${JSON.stringify(name)}]`;\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isObject, isOn, isPlainObject, isPromise, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","import { isReactive, isReadonly, computed, unref, ref, watch, reactive, isRef, nextTick, inject, provide, getCurrentInstance, onBeforeMount, onBeforeUnmount } from 'vue-demi';\n\nfunction unwrapObj(obj) {\n let ignoreKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return Object.keys(obj).reduce((o, k) => {\n if (ignoreKeys.includes(k)) return o;\n o[k] = unref(obj[k]);\n return o;\n }, {});\n}\nfunction isFunction(val) {\n return typeof val === 'function';\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction get(obj, stringPath, def) {\n // Cache the current object\n let current = obj;\n const path = stringPath.split('.'); // For each item in the path, dig into the object\n\n for (let i = 0; i < path.length; i++) {\n // If the item isn't found, return the default (or null)\n if (!current[path[i]]) return def; // Otherwise, update the current value\n\n current = current[path[i]];\n }\n\n return current;\n}\nfunction gatherBooleanGroupProperties(group, nestedResults, property) {\n return computed(() => {\n return group.some(path => {\n return get(nestedResults, path, {\n [property]: false\n })[property];\n });\n });\n}\nfunction gatherArrayGroupProperties(group, nestedResults, property) {\n return computed(() => {\n return group.reduce((all, path) => {\n const fetchedProperty = get(nestedResults, path, {\n [property]: false\n })[property] || [];\n return all.concat(fetchedProperty);\n }, []);\n });\n}\n\n/**\n * Response form a raw Validator function.\n * Should return a Boolean or an object with $invalid property.\n * @typedef {Boolean | { $valid: Boolean }} ValidatorResponse\n */\n\n/**\n * Calls a validation rule by unwrapping its value first from a ref.\n * @param {Validator} rule\n * @param {Ref} value\n * @param {VueInstance} instance\n * @param {Object} siblingState\n * @return {Promise<ValidatorResponse> | ValidatorResponse}\n */\n\nfunction callRule(rule, value, siblingState, instance) {\n return rule.call(instance, unref(value), unref(siblingState), instance);\n}\n/**\n * Normalizes the validator result\n * Allows passing a boolean of an object like `{ $valid: Boolean }`\n * @param {ValidatorResponse} result - Validator result\n * @return {boolean}\n */\n\n\nfunction normalizeValidatorResponse(result) {\n return result.$valid !== undefined ? !result.$valid : !result;\n}\n/**\n * Returns the result of an async validator.\n * @param {Validator} rule\n * @param {Ref<*>} model\n * @param {Ref<Boolean>} $pending\n * @param {Ref<Boolean>} $dirty\n * @param {GlobalConfig} config\n * @param {boolean} config.$lazy\n * @param {Ref<*>} $response\n * @param {VueInstance} instance\n * @param {Ref<*>[]} watchTargets\n * @param {Object} siblingState\n * @param {Ref<Boolean>} $lastInvalidState\n * @param {Ref<Number>} $lastCommittedOn\n * @return {{ $invalid: Ref<Boolean>, $unwatch: WatchStopHandle }}\n */\n\n\nfunction createAsyncResult(rule, model, $pending, $dirty, _ref, $response, instance) {\n let {\n $lazy,\n $rewardEarly\n } = _ref;\n let watchTargets = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : [];\n let siblingState = arguments.length > 8 ? arguments[8] : undefined;\n let $lastInvalidState = arguments.length > 9 ? arguments[9] : undefined;\n let $lastCommittedOn = arguments.length > 10 ? arguments[10] : undefined;\n const $invalid = ref(!!$dirty.value);\n const $pendingCounter = ref(0);\n $pending.value = false;\n const $unwatch = watch([model, $dirty].concat(watchTargets, $lastCommittedOn), () => {\n if ( // if $lazy and not dirty, return\n $lazy && !$dirty.value || // if in $rewardEarly mode and no previous errors, nothing pending, return\n $rewardEarly && !$lastInvalidState.value && !$pending.value) {\n return;\n }\n\n let ruleResult; // make sure we dont break if a validator throws\n\n try {\n ruleResult = callRule(rule, model, siblingState, instance);\n } catch (err) {\n // convert to a promise, so we can handle it async\n ruleResult = Promise.reject(err);\n }\n\n $pendingCounter.value++;\n $pending.value = !!$pendingCounter.value; // ensure $invalid is false, while validator is resolving\n\n $invalid.value = false;\n Promise.resolve(ruleResult).then(data => {\n $pendingCounter.value--;\n $pending.value = !!$pendingCounter.value;\n $response.value = data;\n $invalid.value = normalizeValidatorResponse(data);\n }).catch(error => {\n $pendingCounter.value--;\n $pending.value = !!$pendingCounter.value;\n $response.value = error;\n $invalid.value = true;\n });\n }, {\n immediate: true,\n deep: typeof model === 'object'\n });\n return {\n $invalid,\n $unwatch\n };\n}\n/**\n * Returns the result of a sync validator\n * @param {Validator} rule\n * @param {Ref<*>} model\n * @param {Ref<Boolean>} $dirty\n * @param {GlobalConfig} config\n * @param {Boolean} config.$lazy\n * @param {Ref<*>} $response\n * @param {VueInstance} instance\n * @param {Object} siblingState\n * @param {Ref<Boolean>} $lastInvalidState\n * @return {{$unwatch: (function(): {}), $invalid: ComputedRef<boolean>}}\n */\n\n\nfunction createSyncResult(rule, model, $dirty, _ref2, $response, instance, siblingState, $lastInvalidState) {\n let {\n $lazy,\n $rewardEarly\n } = _ref2;\n\n const $unwatch = () => ({});\n\n const $invalid = computed(() => {\n if ( // return early if $lazy mode and not touched\n $lazy && !$dirty.value || // If $rewardEarly mode is ON and last invalid was false (no error), return it.\n // If we want to invalidate, we just flip the last state to true, causing the computed to run again\n $rewardEarly && !$lastInvalidState.value) {\n return false;\n }\n\n let returnValue = true;\n\n try {\n const result = callRule(rule, model, siblingState, instance);\n $response.value = result;\n returnValue = normalizeValidatorResponse(result);\n } catch (err) {\n $response.value = err;\n }\n\n return returnValue;\n });\n return {\n $unwatch,\n $invalid\n };\n}\n/**\n * Returns the validation result.\n * Detects async and sync validators.\n * @param {NormalizedValidator} rule\n * @param {Ref<*>} model\n * @param {Ref<boolean>} $dirty\n * @param {GlobalConfig} config - Vuelidate config\n * @param {VueInstance} instance - component instance\n * @param {string} validatorName - name of the current validator\n * @param {string} propertyKey - the current property we are validating\n * @param {string} propertyPath - the deep path to the validated property\n * @param {Object} siblingState\n * @param {Ref<Boolean>} $lastInvalidState - the last invalid state\n * @param {Ref<Number>} $lastCommittedOn - the last time $commit was called\n * @return {{ $params: *, $message: Ref<String>, $pending: Ref<Boolean>, $invalid: Ref<Boolean>, $response: Ref<*>, $unwatch: WatchStopHandle }}\n */\n\n\nfunction createValidatorResult(rule, model, $dirty, config, instance, validatorName, propertyKey, propertyPath, siblingState, $lastInvalidState, $lastCommittedOn) {\n const $pending = ref(false);\n const $params = rule.$params || {};\n const $response = ref(null);\n let $invalid;\n let $unwatch;\n\n if (rule.$async) {\n ({\n $invalid,\n $unwatch\n } = createAsyncResult(rule.$validator, model, $pending, $dirty, config, $response, instance, rule.$watchTargets, siblingState, $lastInvalidState, $lastCommittedOn));\n } else {\n ({\n $invalid,\n $unwatch\n } = createSyncResult(rule.$validator, model, $dirty, config, $response, instance, siblingState, $lastInvalidState));\n }\n\n const message = rule.$message;\n const $message = isFunction(message) ? computed(() => message(unwrapObj({\n $pending,\n $invalid,\n $params: unwrapObj($params),\n // $params can hold refs, so we unwrap them for easy access\n $model: model,\n $response,\n $validator: validatorName,\n $propertyPath: propertyPath,\n $property: propertyKey\n }))) : message || '';\n return {\n $message,\n $params,\n $pending,\n $invalid,\n $response,\n $unwatch\n };\n}\n\n/**\n * Sorts a validation definition into rules, configs and nested validators.\n * @param {Object<NormalizedValidator|Function>} validationsRaw\n * @return {{ rules: Object<NormalizedValidator>, nestedValidators: Object, config: GlobalConfig }}\n */\n\nfunction sortValidations() {\n let validationsRaw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const validations = unref(validationsRaw);\n const validationKeys = Object.keys(validations);\n const rules = {};\n const nestedValidators = {};\n const config = {};\n let validationGroups = null;\n validationKeys.forEach(key => {\n const v = validations[key];\n\n switch (true) {\n // If it is already normalized, use it\n case isFunction(v.$validator):\n rules[key] = v;\n break;\n // If it is just a function, normalize it first\n // into { $validator: <Fun> }\n\n case isFunction(v):\n rules[key] = {\n $validator: v\n };\n break;\n\n case key === '$validationGroups':\n validationGroups = v;\n break;\n // Catch $-prefixed properties as config\n\n case key.startsWith('$'):\n config[key] = v;\n break;\n // If it doesn’t match any of the above,\n // treat as nestedValidators state property\n\n default:\n nestedValidators[key] = v;\n }\n });\n return {\n rules,\n nestedValidators,\n config,\n validationGroups\n };\n}\n\nfunction _empty() {}\n\nconst ROOT_PATH = '__root';\n/** @typedef {import('vue-demi').ComponentPublicInstance} VueInstance */\n\n/** @typedef {import('vue-demi').ComputedRef} ComputedRef */\n\n/** @typedef {import('vue-demi').UnwrapRef} UnwrapRef */\n\n/** @typedef {import('vue-demi').WatchStopHandle} WatchStopHandle */\n\n/** @typedef {import('vue-demi').WritableComputedRef} WritableComputedRef */\n\n/** @typedef {import('vue-demi').UnwrapNestedRefs} UnwrapNestedRefs */\n\n/**\n * @typedef NormalizedValidator\n * @property {Validator} $validator\n * @property {String | Ref<String> | function(*): string} [$message]\n * @property {Object | Ref<Object>} [$params]\n * @property {Object | Ref<Object>} [$async]\n * @property {Ref<*>[]} [$watchTargets]\n */\n\n/**\n * Raw validator function, before being normalized\n * Can return a Promise or a {@see ValidatorResponse}\n * @typedef {function(*): ((Promise<ValidatorResponse> | ValidatorResponse))} Validator\n */\n\n/**\n * @typedef ErrorObject\n * @property {Ref<String>} $message - Reactive error message\n * @property {Ref<Object>} $params - Params passed from withParams\n * @property {Ref<Boolean>} $pending - If validation is pending\n * @property {String} $property - State key\n * @property {String} $propertyPath - Dot notation path to state\n * @property {String} $validator - Validator name\n * @property {String} $uid - Unique identifier\n */\n\n/**\n * @typedef ValidationResult\n * @property {Ref<Boolean>} $pending\n * @property {Ref<Boolean>} $dirty\n * @property {Ref<Boolean>} $invalid\n * @property {Ref<Boolean>} $error\n * @property {Ref<String>} $path\n * @property {Function} $touch\n * @property {Function} $reset\n * @property {ComputedRef<ErrorObject[]>} $errors\n * @property {ComputedRef<ErrorObject[]>} $silentErrors\n * @property {Function} $commit\n */\n\n/**\n * Creates the main Validation Results object for a state tree\n * Walks the tree's top level branches\n * @param {Object<NormalizedValidator>} rules - Rules for the current state tree\n * @param {Object} model - Current state value\n * @param {String} key - Key for the current state tree\n * @param {ResultsStorage} [resultsCache] - A cache map of all the validators\n * @param {String} [path] - the current property path\n * @param {GlobalConfig} [config] - the config object\n * @param {VueInstance} instance\n * @param {ComputedRef<Object>} externalResults\n * @param {Object} siblingState\n * @return {ValidationResult | {}}\n */\n\nfunction _call(body, then, direct) {\n if (direct) {\n return then ? then(body()) : body();\n }\n\n try {\n var result = Promise.resolve(body());\n return then ? result.then(then) : result;\n } catch (e) {\n return Promise.reject(e);\n }\n}\n/**\n * Collects the validation results of all nested state properties\n * @param {Object<NormalizedValidator|Function>} validations - The validation\n * @param {Object} nestedState - Current state\n * @param {String} path - Path to current property\n * @param {ResultsStorage} resultsCache - Validations cache map\n * @param {GlobalConfig} config - The config object\n * @param {VueInstance} instance - The current Vue instance\n * @param {ComputedRef<object>} nestedExternalResults - The external results for this nested collection\n * @return {Object<string, VuelidateState>}\n */\n\n\nfunction _callIgnored(body, direct) {\n return _call(body, _empty, direct);\n}\n\nfunction _invoke(body, then) {\n var result = body();\n\n if (result && result.then) {\n return result.then(then);\n }\n\n return then(result);\n}\n\nfunction _async(f) {\n return function () {\n for (var args = [], i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n try {\n return Promise.resolve(f.apply(this, args));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nfunction createValidationResults(rules, model, key, resultsCache, path, config, instance, externalResults, siblingState) {\n // collect the property keys\n const ruleKeys = Object.keys(rules);\n const cachedResult = resultsCache.get(path, rules);\n const $dirty = ref(false); // state for the $rewardEarly option\n\n /** The last invalid state of this property */\n\n const $lastInvalidState = ref(false);\n /** The last time $commit was called. Used to re-trigger async calls */\n\n const $lastCommittedOn = ref(0);\n\n if (cachedResult) {\n // if the rules are the same as before, use the cached results\n if (!cachedResult.$partial) return cachedResult; // remove old watchers\n\n cachedResult.$unwatch(); // use the `$dirty.value`, so we dont save references by accident\n\n $dirty.value = cachedResult.$dirty.value;\n }\n\n const result = {\n // restore $dirty from cache\n $dirty,\n $path: path,\n $touch: () => {\n if (!$dirty.value) $dirty.value = true;\n },\n $reset: () => {\n if ($dirty.value) $dirty.value = false;\n },\n $commit: () => {}\n };\n /**\n * If there are no validation rules, it is most likely\n * a top level state, aka root\n */\n\n if (!ruleKeys.length) {\n // if there are cached results, we should overwrite them with the new ones\n cachedResult && resultsCache.set(path, rules, result);\n return result;\n }\n\n ruleKeys.forEach(ruleKey => {\n result[ruleKey] = createValidatorResult(rules[ruleKey], model, result.$dirty, config, instance, ruleKey, key, path, siblingState, $lastInvalidState, $lastCommittedOn);\n });\n result.$externalResults = computed(() => {\n if (!externalResults.value) return [];\n return [].concat(externalResults.value).map((stringError, index) => ({\n $propertyPath: path,\n $property: key,\n $validator: '$externalResults',\n $uid: `${path}-externalResult-${index}`,\n $message: stringError,\n $params: {},\n $response: null,\n $pending: false\n }));\n });\n result.$invalid = computed(() => {\n const r = ruleKeys.some(ruleKey => unref(result[ruleKey].$invalid)); // cache the last invalid state\n\n $lastInvalidState.value = r;\n return !!result.$externalResults.value.length || r;\n });\n result.$pending = computed(() => ruleKeys.some(ruleKey => unref(result[ruleKey].$pending)));\n result.$error = computed(() => result.$dirty.value ? result.$pending.value || result.$invalid.value : false);\n result.$silentErrors = computed(() => ruleKeys.filter(ruleKey => unref(result[ruleKey].$invalid)).map(ruleKey => {\n const res = result[ruleKey];\n return reactive({\n $propertyPath: path,\n $property: key,\n $validator: ruleKey,\n $uid: `${path}-${ruleKey}`,\n $message: res.$message,\n $params: res.$params,\n $response: res.$response,\n $pending: res.$pending\n });\n }).concat(result.$externalResults.value));\n result.$errors = computed(() => result.$dirty.value ? result.$silentErrors.value : []);\n\n result.$unwatch = () => ruleKeys.forEach(ruleKey => {\n result[ruleKey].$unwatch();\n });\n\n result.$commit = () => {\n $lastInvalidState.value = true;\n $lastCommittedOn.value = Date.now();\n };\n\n resultsCache.set(path, rules, result);\n return result;\n}\n\nfunction collectNestedValidationResults(validations, nestedState, path, resultsCache, config, instance, nestedExternalResults) {\n const nestedValidationKeys = Object.keys(validations); // if we have no state, return empty object\n\n if (!nestedValidationKeys.length) return {};\n return nestedValidationKeys.reduce((results, nestedKey) => {\n // build validation results for nested state\n results[nestedKey] = setValidations({\n validations: validations[nestedKey],\n state: nestedState,\n key: nestedKey,\n parentKey: path,\n resultsCache,\n globalConfig: config,\n instance,\n externalResults: nestedExternalResults\n });\n return results;\n }, {});\n}\n/**\n * Generates the Meta fields from the results\n * @param {ValidationResult|{}} results\n * @param {Object.<string, VuelidateState>} nestedResults\n * @param {Object.<string, ValidationResult>} childResults\n * @return {{$anyDirty: Ref<Boolean>, $error: Ref<Boolean>, $invalid: Ref<Boolean>, $errors: Ref<ErrorObject[]>, $dirty: Ref<Boolean>, $touch: Function, $reset: Function }}\n */\n\n\nfunction createMetaFields(results, nestedResults, childResults) {\n const allResults = computed(() => [nestedResults, childResults].filter(res => res).reduce((allRes, res) => {\n return allRes.concat(Object.values(unref(res)));\n }, [])); // returns `$dirty` as true, if all children are dirty\n\n const $dirty = computed({\n get() {\n return results.$dirty.value || (allResults.value.length ? allResults.value.every(r => r.$dirty) : false);\n },\n\n set(v) {\n results.$dirty.value = v;\n }\n\n });\n const $silentErrors = computed(() => {\n // current state level errors, fallback to empty array if root\n const modelErrors = unref(results.$silentErrors) || []; // collect all nested and child $silentErrors\n\n const nestedErrors = allResults.value.filter(result => (unref(result).$silentErrors || []).length).reduce((errors, result) => {\n return errors.concat(...result.$silentErrors);\n }, []); // merge the $silentErrors\n\n return modelErrors.concat(nestedErrors);\n });\n const $errors = computed(() => {\n // current state level errors, fallback to empty array if root\n const modelErrors = unref(results.$errors) || []; // collect all nested and child $errors\n\n const nestedErrors = allResults.value.filter(result => (unref(result).$errors || []).length).reduce((errors, result) => {\n return errors.concat(...result.$errors);\n }, []); // merge the $errors\n\n return modelErrors.concat(nestedErrors);\n });\n const $invalid = computed(() => // if any of the nested values is invalid\n allResults.value.some(r => r.$invalid) || // or if the current state is invalid\n unref(results.$invalid) || // fallback to false if is root\n false);\n const $pending = computed(() => // if any of the nested values is pending\n allResults.value.some(r => unref(r.$pending)) || // if any of the current state validators is pending\n unref(results.$pending) || // fallback to false if is root\n false);\n const $anyDirty = computed(() => allResults.value.some(r => r.$dirty) || allResults.value.some(r => r.$anyDirty) || $dirty.value);\n const $error = computed(() => $dirty.value ? $pending.value || $invalid.value : false);\n\n const $touch = () => {\n // call the root $touch\n results.$touch(); // call all nested level $touch\n\n allResults.value.forEach(result => {\n result.$touch();\n });\n };\n\n const $commit = () => {\n // call the root $touch\n results.$commit(); // call all nested level $touch\n\n allResults.value.forEach(result => {\n result.$commit();\n });\n };\n\n const $reset = () => {\n // reset the root $dirty state\n results.$reset(); // reset all the children $dirty states\n\n allResults.value.forEach(result => {\n result.$reset();\n });\n }; // Ensure that if all child and nested results are $dirty, this also becomes $dirty\n\n\n if (allResults.value.length && allResults.value.every(nr => nr.$dirty)) $touch();\n return {\n $dirty,\n $errors,\n $invalid,\n $anyDirty,\n $error,\n $pending,\n $touch,\n $reset,\n $silentErrors,\n $commit\n };\n}\n/**\n * @typedef VuelidateState\n * @property {WritableComputedRef<any>} $model\n * @property {ComputedRef<Boolean>} $dirty\n * @property {ComputedRef<Boolean>} $error\n * @property {ComputedRef<ErrorObject[]>} $errors\n * @property {ComputedRef<Boolean>} $invalid\n * @property {ComputedRef<Boolean>} $anyDirty\n * @property {ComputedRef<Boolean>} $pending\n * @property {Function} $touch\n * @property {Function} $reset\n * @property {String} $path\n * @property {ComputedRef<ErrorObject[]>} $silentErrors\n * @property {Function} [$validate]\n * @property {Function} [$getResultsForChild]\n * @property {Object.<string, VuelidateState>}\n */\n\n/**\n * Main Vuelidate bootstrap function.\n * Used both for Composition API in `setup` and for Global App usage.\n * Used to collect validation state, when walking recursively down the state tree\n * @param {Object} params\n * @param {Object<NormalizedValidator|Function>} params.validations\n * @param {Object} params.state\n * @param {String} [params.key] - Current state property key. Used when being called on nested items\n * @param {String} [params.parentKey] - Parent state property key. Used when being called recursively\n * @param {Object<string, ValidationResult>} [params.childResults] - Used to collect child results.\n * @param {ResultsStorage} params.resultsCache - The cached validation results\n * @param {VueInstance} params.instance - The current Vue instance\n * @param {GlobalConfig} params.globalConfig - The validation config, passed to this setValidations instance.\n * @param {UnwrapNestedRefs<object> | Ref<Object>} params.externalResults - External validation results\n * @return {UnwrapNestedRefs<VuelidateState>}\n */\n\n\nfunction setValidations(_ref) {\n /**\n * Executes the validators and returns the result.\n * @return {Promise<boolean>}\n */\n const $validate = _async(function () {\n $touch();\n return _invoke(function () {\n if (mergedConfig.$rewardEarly) {\n $commit(); // await the watchers\n\n return _callIgnored(nextTick);\n }\n }, function () {\n // await the watchers\n return _call(nextTick, function () {\n return new Promise(resolve => {\n // return whether it is valid or not\n if (!$pending.value) return resolve(!$invalid.value);\n const unwatch = watch($pending, () => {\n resolve(!$invalid.value);\n unwatch();\n });\n });\n });\n });\n });\n /**\n * Returns a child component's results, based on registration name\n * @param {string} key\n * @return {VuelidateState}\n */\n\n\n let {\n validations,\n state,\n key,\n parentKey,\n childResults,\n resultsCache,\n globalConfig = {},\n instance,\n externalResults\n } = _ref;\n const path = parentKey ? `${parentKey}.${key}` : key; // Sort out the validation object into:\n // – rules = validators for current state tree fragment\n // — nestedValidators = nested state fragments keys that might contain more validators\n // – config = configuration properties that affect this state fragment\n\n const {\n rules,\n nestedValidators,\n config,\n validationGroups\n } = sortValidations(validations);\n const mergedConfig = Object.assign({}, globalConfig, config); // create protected state for cases when the state branch does not exist yet.\n // This protects when using the OptionsAPI as the data is bound after the setup method\n\n const nestedState = key ? computed(() => {\n const s = unref(state);\n return s ? unref(s[key]) : undefined;\n }) : state; // cache the external results, so we can revert back to them\n\n const cachedExternalResults = Object.assign({}, unref(externalResults) || {});\n const nestedExternalResults = computed(() => {\n const results = unref(externalResults);\n if (!key) return results;\n return results ? unref(results[key]) : undefined;\n }); // Use rules for the current state fragment and validate it\n\n const results = createValidationResults(rules, nestedState, key, resultsCache, path, mergedConfig, instance, nestedExternalResults, state); // Use nested keys to repeat the process\n // *WARN*: This is recursive\n\n const nestedResults = collectNestedValidationResults(nestedValidators, nestedState, path, resultsCache, mergedConfig, instance, nestedExternalResults);\n const $validationGroups = {};\n\n if (validationGroups) {\n Object.entries(validationGroups).forEach(_ref2 => {\n let [key, group] = _ref2;\n $validationGroups[key] = {\n $invalid: gatherBooleanGroupProperties(group, nestedResults, '$invalid'),\n $error: gatherBooleanGroupProperties(group, nestedResults, '$error'),\n $pending: gatherBooleanGroupProperties(group, nestedResults, '$pending'),\n $errors: gatherArrayGroupProperties(group, nestedResults, '$errors'),\n $silentErrors: gatherArrayGroupProperties(group, nestedResults, '$silentErrors')\n };\n });\n } // Collect and merge this level validation results\n // with all nested validation results\n\n\n const {\n $dirty,\n $errors,\n $invalid,\n $anyDirty,\n $error,\n $pending,\n $touch,\n $reset,\n $silentErrors,\n $commit\n } = createMetaFields(results, nestedResults, childResults);\n /**\n * If we have no `key`, this is the top level state\n * We dont need `$model` there.\n */\n\n const $model = key ? computed({\n get: () => unref(nestedState),\n set: val => {\n $dirty.value = true;\n const s = unref(state);\n const external = unref(externalResults);\n\n if (external) {\n external[key] = cachedExternalResults[key];\n }\n\n if (isRef(s[key])) {\n s[key].value = val;\n } else {\n s[key] = val;\n }\n }\n }) : null;\n\n if (key && mergedConfig.$autoDirty) {\n watch(nestedState, () => {\n if (!$dirty.value) $touch();\n const external = unref(externalResults);\n\n if (external) {\n external[key] = cachedExternalResults[key];\n }\n }, {\n flush: 'sync'\n });\n }\n\n function $getResultsForChild(key) {\n return (childResults.value || {})[key];\n }\n\n function $clearExternalResults() {\n if (isRef(externalResults)) {\n externalResults.value = cachedExternalResults;\n } else {\n // if the external results state was empty, we need to delete every property, one by one\n if (Object.keys(cachedExternalResults).length === 0) {\n Object.keys(externalResults).forEach(k => {\n delete externalResults[k];\n });\n } else {\n // state was not empty, so we just assign it back into the current state\n Object.assign(externalResults, cachedExternalResults);\n }\n }\n }\n\n return reactive(Object.assign({}, results, {\n // NOTE: The order here is very important, since we want to override\n // some of the *results* meta fields with the collective version of it\n // that includes the results of nested state validation results\n $model,\n $dirty,\n $error,\n $errors,\n $invalid,\n $anyDirty,\n $pending,\n $touch,\n $reset,\n $path: path || ROOT_PATH,\n $silentErrors,\n $validate,\n $commit\n }, childResults && {\n $getResultsForChild,\n $clearExternalResults,\n $validationGroups\n }, nestedResults));\n}\n\nclass ResultsStorage {\n constructor() {\n this.storage = new Map();\n }\n /**\n * Stores a validation result, and its rules by its path\n * @param {String} path\n * @param {Object<NormalizedValidator>} rules\n * @param {ValidationResult} result\n */\n\n\n set(path, rules, result) {\n this.storage.set(path, {\n rules,\n result\n });\n }\n /**\n * Check if the stored `results` for the provided `path` have the same `rules` compared to 'storedRules'\n * @param {String} path\n * @param {Object<NormalizedValidator>} rules\n * @param {Object<NormalizedValidator>} storedRules\n * @return {Boolean}\n */\n\n\n checkRulesValidity(path, rules, storedRules) {\n const storedRulesKeys = Object.keys(storedRules);\n const newRulesKeys = Object.keys(rules);\n if (newRulesKeys.length !== storedRulesKeys.length) return false;\n const hasAllValidators = newRulesKeys.every(ruleKey => storedRulesKeys.includes(ruleKey));\n if (!hasAllValidators) return false;\n return newRulesKeys.every(ruleKey => {\n if (!rules[ruleKey].$params) return true;\n return Object.keys(rules[ruleKey].$params).every(paramKey => {\n // make sure to unwrap before comparing\n return unref(storedRules[ruleKey].$params[paramKey]) === unref(rules[ruleKey].$params[paramKey]);\n });\n });\n }\n /**\n * Returns the matched result if catche is valid\n * @param {String} path\n * @param {Object<NormalizedValidator>} rules\n * @return {{$partial: boolean, $dirty: Ref<Boolean>, $unwatch: function}|undefined|ValidationResult}\n */\n\n\n get(path, rules) {\n const storedRuleResultPair = this.storage.get(path);\n if (!storedRuleResultPair) return undefined;\n const {\n rules: storedRules,\n result\n } = storedRuleResultPair;\n const isValidCache = this.checkRulesValidity(path, rules, storedRules);\n const $unwatch = result.$unwatch ? result.$unwatch : () => ({});\n if (!isValidCache) return {\n $dirty: result.$dirty,\n $partial: true,\n $unwatch\n };\n return result;\n }\n\n}\n\nconst CollectFlag = {\n COLLECT_ALL: true,\n COLLECT_NONE: false\n};\nconst VuelidateInjectChildResults = Symbol('vuelidate#injectChildResults');\nconst VuelidateRemoveChildResults = Symbol('vuelidate#removeChildResults');\n/**\n * Create helpers to collect validation state from child components\n * @param {Object} params\n * @param {String | Number | Boolean} params.$scope - Parent component scope\n * @return {{sendValidationResultsToParent: function[], childResults: ComputedRef<Object>, removeValidationResultsFromParent: function[]}}\n */\n\nfunction nestedValidations(_ref) {\n let {\n $scope,\n instance\n } = _ref;\n const childResultsRaw = {};\n const childResultsKeys = ref([]);\n const childResults = computed(() => childResultsKeys.value.reduce((results, key) => {\n results[key] = unref(childResultsRaw[key]);\n return results;\n }, {}));\n /**\n * Allows children to send validation data up to their parent.\n * @param {Object} results - the results\n * @param {Object} args\n * @param {String} args.$registerAs - the $registeredAs key\n * @param {String | Number | Boolean} args.$scope - the $scope key\n */\n\n function injectChildResultsIntoParent(results, _ref2) {\n let {\n $registerAs: key,\n $scope: childScope,\n $stopPropagation\n } = _ref2;\n if ($stopPropagation || $scope === CollectFlag.COLLECT_NONE || childScope === CollectFlag.COLLECT_NONE || $scope !== CollectFlag.COLLECT_ALL && $scope !== childScope) return;\n childResultsRaw[key] = results;\n childResultsKeys.value.push(key);\n } // combine with other `injectChildResultsIntoParent` from vuelidate instances in this Vue component instance\n\n\n instance.__vuelidateInjectInstances = [].concat(instance.__vuelidateInjectInstances || [], injectChildResultsIntoParent);\n /**\n * Allows children to remove the validation data from their parent, before getting destroyed.\n * @param {String} key - the registeredAs key\n */\n\n function removeChildResultsFromParent(key) {\n // remove the key\n childResultsKeys.value = childResultsKeys.value.filter(childKey => childKey !== key); // remove the stored data for the key\n\n delete childResultsRaw[key];\n } // combine with other `removeChildResultsFromParent` from vuelidate instances in this Vue component instance\n\n\n instance.__vuelidateRemoveInstances = [].concat(instance.__vuelidateRemoveInstances || [], removeChildResultsFromParent); // inject the `injectChildResultsIntoParent` method, into the current scope\n\n const sendValidationResultsToParent = inject(VuelidateInjectChildResults, []); // provide to all of its children the send results to parent function\n\n provide(VuelidateInjectChildResults, instance.__vuelidateInjectInstances);\n const removeValidationResultsFromParent = inject(VuelidateRemoveChildResults, []); // provide to all of its children the remove results function\n\n provide(VuelidateRemoveChildResults, instance.__vuelidateRemoveInstances);\n return {\n childResults,\n sendValidationResultsToParent,\n removeValidationResultsFromParent\n };\n}\n\n/**\n * Helper proxy for instance property access. It makes every reference\n * reactive for the validation function\n * @param target\n * @return {*|ComputedRef<*>}\n */\n\nfunction ComputedProxyFactory(target) {\n return new Proxy(target, {\n get(target, prop) {\n return typeof target[prop] === 'object' ? ComputedProxyFactory(target[prop]) : computed(() => target[prop]);\n }\n\n });\n}\n\n/**\n * @typedef GlobalConfig\n * @property {String} [$registerAs] - Config Object\n * @property {String | Number | Symbol} [$scope] - A scope to limit child component registration\n * @property {Boolean} [$stopPropagation] - Tells a Vue component to stop sending its results up to the parent\n * @property {Ref<Object>} [$externalResults] - External error messages, like from server validation.\n * @property {Boolean} [$autoDirty] - Should the form watch for state changed, and automatically set `$dirty` to true.\n * @property {Boolean} [$lazy] - Should the validations be lazy, and run only after they are dirty\n * @property {Boolean} [$rewardEarly] - Once valid, re-runs property validators only on manual calls of $commit\n */\n\n/**\n * Composition API compatible Vuelidate\n * Use inside the `setup` lifecycle hook\n * @param {Object | GlobalConfig} [validations] - Validations Object or the globalConfig.\n * @param {Object} [state] - State object - required if `validations` is a validation object.\n * @param {GlobalConfig} [globalConfig] - Config Object\n * @return {ComputedRef<*>}\n */\n\nlet uid = 0;\nfunction useVuelidate(validations, state) {\n var _getCurrentInstance;\n\n let globalConfig = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n // if we pass only one argument, its most probably the globalConfig.\n // This use case is so parents can just collect results of child forms.\n if (arguments.length === 1) {\n globalConfig = validations;\n validations = undefined;\n state = undefined;\n }\n\n let {\n $registerAs,\n $scope = CollectFlag.COLLECT_ALL,\n $stopPropagation,\n $externalResults,\n currentVueInstance\n } = globalConfig;\n const instance = currentVueInstance || ((_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy);\n const componentOptions = instance ? instance.$options : {}; // if there is no registration name, add one.\n\n if (!$registerAs) {\n uid += 1;\n $registerAs = `_vuelidate_${uid}`;\n }\n\n const validationResults = ref({});\n const resultsCache = new ResultsStorage();\n const {\n childResults,\n sendValidationResultsToParent,\n removeValidationResultsFromParent\n } = instance ? nestedValidations({\n $scope,\n instance\n }) : {\n childResults: ref({})\n }; // Options API\n\n if (!validations && componentOptions.validations) {\n const rules = componentOptions.validations;\n state = ref({});\n onBeforeMount(() => {\n // Delay binding state to validations defined with the Options API until mounting, when the data\n // has been attached to the component instance. From that point on it will be reactive.\n state.value = instance;\n watch(() => isFunction(rules) ? rules.call(state.value, new ComputedProxyFactory(state.value)) : rules, validations => {\n validationResults.value = setValidations({\n validations,\n state,\n childResults,\n resultsCache,\n globalConfig,\n instance,\n externalResults: $externalResults || instance.vuelidateExternalResults\n });\n }, {\n immediate: true\n });\n });\n globalConfig = componentOptions.validationsConfig || globalConfig;\n } else {\n const validationsWatchTarget = isRef(validations) || isProxy(validations) ? validations // wrap plain objects in a reactive, so we can track changes if they have computed in them.\n : reactive(validations || {});\n watch(validationsWatchTarget, newValidationRules => {\n validationResults.value = setValidations({\n validations: newValidationRules,\n state,\n childResults,\n resultsCache,\n globalConfig,\n instance: instance !== null && instance !== void 0 ? instance : {},\n externalResults: $externalResults\n });\n }, {\n immediate: true\n });\n }\n\n if (instance) {\n // send all the data to the parent when the function is invoked inside setup.\n sendValidationResultsToParent.forEach(f => f(validationResults, {\n $registerAs,\n $scope,\n $stopPropagation\n })); // before this component is destroyed, remove all the data from the parent.\n\n onBeforeUnmount(() => removeValidationResultsFromParent.forEach(f => f($registerAs)));\n }\n\n return computed(() => {\n return Object.assign({}, unref(validationResults.value), childResults.value);\n });\n}\n\nexport { CollectFlag, useVuelidate as default, useVuelidate };\n","import { unref } from 'vue-demi';\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\nfunction isObject(o) {\n return o !== null && typeof o === 'object' && !Array.isArray(o);\n}\n/**\n * Returns a standard ValidatorObject\n * Wraps a plain function into a ValidatorObject\n * @param {NormalizedValidator|Function} validator\n * @return {NormalizedValidator}\n */\n\nfunction normalizeValidatorObject(validator) {\n return isFunction(validator.$validator) ? Object.assign({}, validator) : {\n $validator: validator\n };\n}\nfunction isPromise(object) {\n return isObject(object) && isFunction(object.then);\n}\n/**\n * Unwraps a ValidatorResponse object, into a boolean.\n * @param {ValidatorResponse} result\n * @return {boolean}\n */\n\nfunction unwrapValidatorResponse(result) {\n if (typeof result === 'object') return result.$valid;\n return result;\n}\n/**\n * Unwraps a `NormalizedValidator` object, returning its validator function.\n * @param {NormalizedValidator | Function} validator\n * @return {function}\n */\n\nfunction unwrapNormalizedValidator(validator) {\n return validator.$validator || validator;\n}\n\n/**\n * Allows attaching parameters to a validator\n * @param {Object} $params\n * @param {NormalizedValidator|Function} $validator\n * @return {NormalizedValidator}\n */\n\nfunction withParams($params, $validator) {\n if (!isObject($params)) throw new Error(`[@vuelidate/validators]: First parameter to \"withParams\" should be an object, provided ${typeof $params}`);\n if (!isObject($validator) && !isFunction($validator)) throw new Error(`[@vuelidate/validators]: Validator must be a function or object with $validator parameter`);\n const validatorObj = normalizeValidatorObject($validator);\n validatorObj.$params = Object.assign({}, validatorObj.$params || {}, $params);\n return validatorObj;\n}\n\n/**\n * @callback MessageCallback\n * @param {Object} params\n * @return String\n */\n\n/**\n * Attaches a message to a validator\n * @param {MessageCallback | String} $message\n * @param {NormalizedValidator|Function} $validator\n * @return {NormalizedValidator}\n */\n\nfunction withMessage($message, $validator) {\n if (!isFunction($message) && typeof unref($message) !== 'string') throw new Error(`[@vuelidate/validators]: First parameter to \"withMessage\" should be string or a function returning a string, provided ${typeof $message}`);\n if (!isObject($validator) && !isFunction($validator)) throw new Error(`[@vuelidate/validators]: Validator must be a function or object with $validator parameter`);\n const validatorObj = normalizeValidatorObject($validator);\n validatorObj.$message = $message;\n return validatorObj;\n}\n\n/**\n * @typedef {function(*): Promise<boolean|ValidatorResponse>} asyncValidator\n */\n\n/**\n * @typedef {Ref<*>[]|function(*): *} watchTargets\n */\n\n/**\n * Wraps validators that returns a Promise.\n * @param {asyncValidator} $validator\n * @param {watchTargets} $watchTargets\n * @return {{$async: boolean, $validator: asyncValidator, $watchTargets: watchTargets}}\n */\n\nfunction withAsync($validator) {\n let $watchTargets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n const validatorObj = normalizeValidatorObject($validator);\n return Object.assign({}, validatorObj, {\n $async: true,\n $watchTargets\n });\n}\n\nfunction forEach(validators) {\n return {\n $validator(collection) {\n for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n others[_key - 1] = arguments[_key];\n }\n\n // go over the collection. It can be a ref as well.\n return unref(collection).reduce((previous, collectionItem, index) => {\n // go over each property\n const collectionEntryResult = Object.entries(collectionItem).reduce((all, _ref) => {\n let [property, $model] = _ref;\n // get the validators for this property\n const innerValidators = validators[property] || {}; // go over each validator and run it\n\n const propertyResult = Object.entries(innerValidators).reduce((all, _ref2) => {\n let [validatorName, currentValidator] = _ref2;\n // extract the validator. Supports simple and extended validators.\n const validatorFunction = unwrapNormalizedValidator(currentValidator); // Call the validator, passing the VM as this, the value, current iterated object and the rest.\n\n const $response = validatorFunction.call(this, $model, collectionItem, index, ...others); // extract the valid from the result\n\n const $valid = unwrapValidatorResponse($response); // store the entire response for later\n\n all.$data[validatorName] = $response;\n all.$data.$invalid = !$valid || !!all.$data.$invalid;\n all.$data.$error = all.$data.$invalid; // if not valid, get the $message\n\n if (!$valid) {\n let $message = currentValidator.$message || '';\n const $params = currentValidator.$params || {}; // If $message is a function, we call it with the appropriate parameters\n\n if (typeof $message === 'function') {\n $message = $message({\n $pending: false,\n $invalid: !$valid,\n $params,\n $model,\n $response\n });\n } // save the error object\n\n\n all.$errors.push({\n $property: property,\n $message,\n $params,\n $response,\n $model,\n $pending: false,\n $validator: validatorName\n });\n }\n\n return {\n $valid: all.$valid && $valid,\n $data: all.$data,\n $errors: all.$errors\n };\n }, {\n $valid: true,\n $data: {},\n $errors: []\n });\n all.$data[property] = propertyResult.$data;\n all.$errors[property] = propertyResult.$errors;\n return {\n $valid: all.$valid && propertyResult.$valid,\n $data: all.$data,\n $errors: all.$errors\n };\n }, {\n $valid: true,\n $data: {},\n $errors: {}\n });\n return {\n $valid: previous.$valid && collectionEntryResult.$valid,\n $data: previous.$data.concat(collectionEntryResult.$data),\n $errors: previous.$errors.concat(collectionEntryResult.$errors)\n };\n }, {\n $valid: true,\n $data: [],\n $errors: []\n });\n },\n\n // collect all the validation errors into a 2 dimensional array, for each entry in the collection, you have an array of error messages.\n $message: _ref3 => {\n let {\n $response\n } = _ref3;\n return $response ? $response.$errors.map(context => {\n return Object.values(context).map(errors => errors.map(error => error.$message)).reduce((a, b) => a.concat(b), []);\n }) : [];\n }\n };\n}\n\n// \"required\" core, used in almost every validator to allow empty values\nconst req = value => {\n value = unref(value);\n if (Array.isArray(value)) return !!value.length;\n\n if (value === undefined || value === null) {\n return false;\n }\n\n if (value === false) {\n return true;\n }\n\n if (value instanceof Date) {\n // invalid date won't pass\n return !isNaN(value.getTime());\n }\n\n if (typeof value === 'object') {\n for (let _ in value) return true;\n\n return false;\n }\n\n return !!String(value).length;\n};\n/**\n * Returns the length of an arbitrary value\n * @param {Array|Object|String} value\n * @return {number}\n */\n\nconst len = value => {\n value = unref(value);\n if (Array.isArray(value)) return value.length;\n\n if (typeof value === 'object') {\n return Object.keys(value).length;\n }\n\n return String(value).length;\n};\n/**\n * Regex based validator template\n * @param {RegExp} expr\n * @return {function(*=): boolean}\n */\n\nfunction regex() {\n for (var _len = arguments.length, expr = new Array(_len), _key = 0; _key < _len; _key++) {\n expr[_key] = arguments[_key];\n }\n\n return value => {\n value = unref(value);\n return !req(value) || expr.every(reg => reg.test(value));\n };\n}\n\nvar common = /*#__PURE__*/Object.freeze({\n __proto__: null,\n withParams: withParams,\n withMessage: withMessage,\n withAsync: withAsync,\n forEach: forEach,\n req: req,\n len: len,\n regex: regex,\n unwrap: unref,\n unwrapNormalizedValidator: unwrapNormalizedValidator,\n unwrapValidatorResponse: unwrapValidatorResponse,\n normalizeValidatorObject: normalizeValidatorObject\n});\n\nvar alpha$1 = regex(/^[a-zA-Z]*$/);\n\n/**\n * Validate if value is alphabetical string.\n * @type {NormalizedValidator}\n */\n\nvar alpha = {\n $validator: alpha$1,\n $message: 'The value is not alphabetical',\n $params: {\n type: 'alpha'\n }\n};\n\nvar alphaNum$1 = regex(/^[a-zA-Z0-9]*$/);\n\n/**\n * Validate if value is alpha-numeric string.\n * @type {NormalizedValidator}\n */\n\nvar alphaNum = {\n $validator: alphaNum$1,\n $message: 'The value must be alpha-numeric',\n $params: {\n type: 'alphaNum'\n }\n};\n\nvar numeric$1 = regex(/^\\d*(\\.\\d+)?$/);\n\n/**\n * Check whether a value is numeric.\n * @type NormalizedValidator\n */\n\nvar numeric = {\n $validator: numeric$1,\n $message: 'Value must be numeric',\n $params: {\n type: 'numeric'\n }\n};\n\n/**\n * Check if a numeric value is between two values.\n * @param {Ref<Number> | Number} min\n * @param {Ref<Number> | Number} max\n * @return {function(*=): boolean}\n */\n\nfunction between$1 (min, max) {\n return value => !req(value) || (!/\\s/.test(value) || value instanceof Date) && +unref(min) <= +value && +unref(max) >= +value;\n}\n\n/**\n * Checks if a value is between two values.\n * @param {Ref<Number> | Number} min\n * @param {Ref<Number> | Number} max\n * @return {NormalizedValidator}\n */\n\nfunction between (min, max) {\n return {\n $validator: between$1(min, max),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The value must be between ${$params.min} and ${$params.max}`;\n },\n $params: {\n min,\n max,\n type: 'between'\n }\n };\n}\n\nconst emailRegex = /^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nvar email$1 = regex(emailRegex);\n\n/**\n * Validate if value is an email.\n * @type {NormalizedValidator}\n */\n\nvar email = {\n $validator: email$1,\n $message: 'Value is not a valid email address',\n $params: {\n type: 'email'\n }\n};\n\n/**\n * Check if a string is an IP Address\n * @param {String} value\n * @returns {boolean}\n */\n\nfunction ipAddress$1 (value) {\n if (!req(value)) {\n return true;\n }\n\n if (typeof value !== 'string') {\n return false;\n }\n\n const nibbles = value.split('.');\n return nibbles.length === 4 && nibbles.every(nibbleValid);\n}\n\nconst nibbleValid = nibble => {\n if (nibble.length > 3 || nibble.length === 0) {\n return false;\n }\n\n if (nibble[0] === '0' && nibble !== '0') {\n return false;\n }\n\n if (!nibble.match(/^\\d+$/)) {\n return false;\n }\n\n const numeric = +nibble | 0;\n return numeric >= 0 && numeric <= 255;\n};\n\n/**\n * Validate if value is an ipAddress string.\n * @type {NormalizedValidator}\n */\n\nvar ipAddress = {\n $validator: ipAddress$1,\n $message: 'The value is not a valid IP address',\n $params: {\n type: 'ipAddress'\n }\n};\n\n/**\n * Check if value is a properly formatted Mac Address.\n * @param {String | Ref<String>} [separator]\n * @returns {function(*): boolean}\n */\n\nfunction macAddress$1 () {\n let separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ':';\n return value => {\n separator = unref(separator);\n\n if (!req(value)) {\n return true;\n }\n\n if (typeof value !== 'string') {\n return false;\n }\n\n const parts = typeof separator === 'string' && separator !== '' ? value.split(separator) : value.length === 12 || value.length === 16 ? value.match(/.{2}/g) : null;\n return parts !== null && (parts.length === 6 || parts.length === 8) && parts.every(hexValid);\n };\n}\n\nconst hexValid = hex => hex.toLowerCase().match(/^[0-9a-f]{2}$/);\n\n/**\n * Validate if value is a valid Mac Address string.\n * @returns {NormalizedValidator}\n */\n\nfunction macAddress (separator) {\n return {\n $validator: macAddress$1(separator),\n $message: 'The value is not a valid MAC Address',\n $params: {\n type: 'macAddress'\n }\n };\n}\n\n/**\n * Check if provided value has a maximum length\n * @param {Number | Ref<Number>} length\n * @returns {function(Array|Object|String): boolean}\n */\n\nfunction maxLength$1 (length) {\n return value => !req(value) || len(value) <= unref(length);\n}\n\n/**\n * Validate the max length of a string.\n * @param {Number} max\n * @return {NormalizedValidator}\n */\n\nfunction maxLength (max) {\n return {\n $validator: maxLength$1(max),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The maximum length allowed is ${$params.max}`;\n },\n $params: {\n max,\n type: 'maxLength'\n }\n };\n}\n\n/**\n * Check if value is above a threshold.\n * @param {Number | Ref<Number>} length\n * @returns {function(Array|Object|String): boolean}\n */\n\nfunction minLength$1 (length) {\n return value => !req(value) || len(value) >= unref(length);\n}\n\n/**\n * Check if value is above a threshold.\n * @param {Number | Ref<Number>} min\n * @returns {NormalizedValidator}\n */\n\nfunction minLength (min) {\n return {\n $validator: minLength$1(min),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `This field should be at least ${$params.min} characters long`;\n },\n $params: {\n min,\n type: 'minLength'\n }\n };\n}\n\n/**\n * Validates if a value is empty.\n * @param {String | Array | Date | Object} value\n * @returns {boolean}\n */\n\nfunction required$1 (value) {\n if (typeof value === 'string') {\n value = value.trim();\n }\n\n return req(value);\n}\n\n/**\n * Check if a value is empty or not.\n * @type {NormalizedValidator}\n */\n\nvar required = {\n $validator: required$1,\n $message: 'Value is required',\n $params: {\n type: 'required'\n }\n};\n\nconst validate$1 = (prop, val) => prop ? req(typeof val === 'string' ? val.trim() : val) : true;\n/**\n * Returns required if the passed property is truthy\n * @param {Boolean | String | function(any): Boolean | Ref<string | boolean>} propOrFunction\n * @return {function(value: *, parentVM: object): Boolean}\n */\n\n\nfunction requiredIf$1(propOrFunction) {\n return function (value, parentVM) {\n if (typeof propOrFunction !== 'function') {\n return validate$1(unref(propOrFunction), value);\n }\n\n const result = propOrFunction.call(this, value, parentVM);\n return validate$1(result, value);\n };\n}\n\n/**\n * Returns required if the passed property is truthy\n * @param {Boolean | String | function(): (Boolean | Promise<boolean>)} prop\n * @return {NormalizedValidator}\n */\n\nfunction requiredIf (prop) {\n return {\n $validator: requiredIf$1(prop),\n $message: 'The value is required',\n $params: {\n type: 'requiredIf',\n prop\n }\n };\n}\n\nconst validate = (prop, val) => !prop ? req(typeof val === 'string' ? val.trim() : val) : true;\n/**\n * Returns required if the passed property is falsy.\n * @param {Boolean | String | function(any): Boolean | Ref<string | boolean>} propOrFunction\n * @return {function(value: *, parentVM: object): Boolean}\n */\n\n\nfunction requiredUnless$1(propOrFunction) {\n return function (value, parentVM) {\n if (typeof propOrFunction !== 'function') {\n return validate(unref(propOrFunction), value);\n }\n\n const result = propOrFunction.call(this, value, parentVM);\n return validate(result, value);\n };\n}\n\n/**\n * Returns required unless the passed property is truthy\n * @param {Boolean | String | function(): (Boolean | Promise<boolean>)} prop\n * @return {NormalizedValidator}\n */\n\nfunction requiredUnless (prop) {\n return {\n $validator: requiredUnless$1(prop),\n $message: 'The value is required',\n $params: {\n type: 'requiredUnless',\n prop\n }\n };\n}\n\n/**\n * Check if two values are identical.\n * @param {*} equalTo\n * @return {function(*=): boolean}\n */\n\nfunction sameAs$1 (equalTo) {\n return value => unref(value) === unref(equalTo);\n}\n\n/**\n * Check if two values are identical\n * @param {*} equalTo\n * @param {String} [otherName]\n * @return {NormalizedValidator}\n */\n\nfunction sameAs (equalTo) {\n let otherName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'other';\n return {\n $validator: sameAs$1(equalTo),\n $message: _ref => {\n return `The value must be equal to the ${otherName} value`;\n },\n $params: {\n equalTo,\n otherName,\n type: 'sameAs'\n }\n };\n}\n\n/**\n * Regex taken from {@link https://gist.github.com/dperini/729294}\n */\n\nconst urlRegex = /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i;\nvar url$1 = regex(urlRegex);\n\n/**\n * Check if a value is a url\n * @type {NormalizedValidator}\n */\n\nvar url = {\n $validator: url$1,\n $message: 'The value is not a valid URL address',\n $params: {\n type: 'url'\n }\n};\n\nfunction _await$1(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n\nfunction syncOr(validators) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return validators.reduce((valid, fn) => {\n if (unwrapValidatorResponse(valid)) return valid;\n return unwrapNormalizedValidator(fn).apply(this, args);\n }, false);\n };\n}\n\nfunction asyncOr(validators) {\n return function () {\n const _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return validators.reduce(function (valid, fn) {\n return _await$1(valid, function (r) {\n return unwrapValidatorResponse(r) ? r : unwrapNormalizedValidator(fn).apply(_this, args);\n });\n }, Promise.resolve(false));\n };\n}\n/**\n * Returns true when one of the provided functions returns true.\n * @param {...(NormalizedValidator|Function)} validators\n * @return {{$validator: function(...[*]=): (boolean | Promise<boolean>), $async: boolean, $watchTargets: any[]}}\n */\n\n\nfunction or$1() {\n for (var _len3 = arguments.length, validators = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n validators[_key3] = arguments[_key3];\n }\n\n const $async = validators.some(v => v.$async);\n const $watchTargets = validators.reduce((all, v) => {\n if (!v.$watchTargets) return all;\n return all.concat(v.$watchTargets);\n }, []);\n\n let $validator = () => false;\n\n if (validators.length) $validator = $async ? asyncOr(validators) : syncOr(validators);\n return {\n $async,\n $validator,\n $watchTargets\n };\n}\n\n/**\n * Returns true when one of the provided functions returns true.\n * @param {...(NormalizedValidator|Function)} validators\n * @return {NormalizedValidator}\n */\n\nfunction or () {\n return withParams({\n type: 'or'\n }, withMessage('The value does not match any of the provided validators', or$1(...arguments)));\n}\n\nfunction _await(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n/**\n *\n * @param validators\n * @return {function(...[*]=): Promise<boolean>}\n */\n\n\nfunction syncAnd(validators) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return validators.reduce((valid, fn) => {\n if (!unwrapValidatorResponse(valid)) return valid;\n return unwrapNormalizedValidator(fn).apply(this, args);\n }, true);\n };\n}\n\nfunction asyncAnd(validators) {\n return function () {\n const _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return validators.reduce(function (valid, fn) {\n return _await(valid, function (r) {\n return unwrapValidatorResponse(r) ? unwrapNormalizedValidator(fn).apply(_this, args) : r;\n });\n }, Promise.resolve(true));\n };\n}\n/**\n * Returns true when all validators are truthy\n * @param {...(NormalizedValidator | Function)} validators\n * @return {{$validator: function(...[*]=): (boolean | Promise<boolean>), $async: boolean, $watchTargets: any[]}}\n */\n\n\nfunction and$1() {\n for (var _len3 = arguments.length, validators = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n validators[_key3] = arguments[_key3];\n }\n\n const $async = validators.some(v => v.$async);\n const $watchTargets = validators.reduce((all, v) => {\n if (!v.$watchTargets) return all;\n return all.concat(v.$watchTargets);\n }, []);\n\n let $validator = () => false;\n\n if (validators.length) $validator = $async ? asyncAnd(validators) : syncAnd(validators);\n return {\n $async,\n $validator,\n $watchTargets\n };\n}\n\n/**\n * Validate if all validators match.\n * @param {...*} validators\n * @returns {NormalizedValidator}\n */\n\nfunction and () {\n return withParams({\n type: 'and'\n }, withMessage('The value does not match all of the provided validators', and$1(...arguments)));\n}\n\n/**\n * Swaps the result of a value\n * @param {NormalizedValidator|Function} validator\n * @returns {function(*=, *=): boolean}\n */\n\nfunction not$1 (validator) {\n return function (value, vm) {\n if (!req(value)) return true;\n const response = unwrapNormalizedValidator(validator).call(this, value, vm);\n if (!isPromise(response)) return !unwrapValidatorResponse(response);\n return response.then(r => !unwrapValidatorResponse(r));\n };\n}\n\n/**\n * Swaps the result of a value\n * @param {NormalizedValidator|Function} validator\n * @returns {NormalizedValidator}\n */\n\nfunction not (validator) {\n return {\n $validator: not$1(validator),\n $message: `The value does not match the provided validator`,\n $params: {\n type: 'not'\n }\n };\n}\n\n/**\n * Check if a value is above a threshold.\n * @param {String | Number | Ref<Number> | Ref<String>} min\n * @returns {function(*=): boolean}\n */\n\nfunction minValue$1 (min) {\n return value => !req(value) || (!/\\s/.test(value) || value instanceof Date) && +value >= +unref(min);\n}\n\n/**\n * Check if a value is above a threshold.\n * @param {String | Number | Ref<Number> | Ref<String>} min\n * @returns {NormalizedValidator}\n */\n\nfunction minValue (min) {\n return {\n $validator: minValue$1(min),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The minimum value allowed is ${$params.min}`;\n },\n $params: {\n min,\n type: 'minValue'\n }\n };\n}\n\n/**\n * Check if value is below a threshold.\n * @param {Number | Ref<Number> | Ref<String>} max\n * @returns {function(*=): boolean}\n */\n\nfunction maxValue$1 (max) {\n return value => !req(value) || (!/\\s/.test(value) || value instanceof Date) && +value <= +unref(max);\n}\n\n/**\n * Check if value is below a threshold.\n * @param {Number | Ref<Number> | Ref<String>} max\n * @return {NormalizedValidator}\n */\n\nvar maxValue = (max => ({\n $validator: maxValue$1(max),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The maximum value allowed is ${$params.max}`;\n },\n $params: {\n max,\n type: 'maxValue'\n }\n}));\n\n// ^-[0-9]+$ - only for negative integer (minus sign without at least 1 digit is not a number)\n\nvar integer$1 = regex(/(^[0-9]*$)|(^-[0-9]+$)/);\n\n/**\n * Validate if value is integer.\n * @type {NormalizedValidator}\n */\n\nvar integer = {\n $validator: integer$1,\n $message: 'Value is not an integer',\n $params: {\n type: 'integer'\n }\n};\n\nvar decimal$1 = regex(/^[-]?\\d*(\\.\\d+)?$/);\n\n/**\n * Validate if value is decimal number.\n * @type {NormalizedValidator}\n */\n\nvar decimal = {\n $validator: decimal$1,\n $message: 'Value must be decimal',\n $params: {\n type: 'decimal'\n }\n};\n\n/**\n * Creates a translatable version of `withMessage` helper.\n * @param {function} t - the translation function of your choice\n * @param {function} [messagePath] - a function to generate the message path, passed to `t` for each message. By default it is `validations.${$validator}`\n * @param {function} [messageParams] - a function to augment the params, passed to `t` for each message.\n */\n\nfunction createI18nMessage(_ref) {\n let {\n t,\n messagePath = _ref2 => {\n let {\n $validator\n } = _ref2;\n return `validations.${$validator}`;\n },\n messageParams = params => params\n } = _ref;\n return function withI18nMessage(validator) {\n let {\n withArguments = false,\n messagePath: localMessagePath = messagePath,\n messageParams: localMessageParams = messageParams\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n function message(props) {\n return t(localMessagePath(props), localMessageParams(Object.assign({\n model: props.$model,\n property: props.$property,\n pending: props.$pending,\n invalid: props.$invalid,\n response: props.$response,\n validator: props.$validator,\n propertyPath: props.$propertyPath\n }, props.$params)));\n }\n\n if (withArguments && typeof validator === 'function') {\n return function () {\n return withMessage(message, validator(...arguments));\n };\n }\n\n return withMessage(message, validator);\n };\n}\n\nexport { alpha, alphaNum, and, between, createI18nMessage, decimal, email, common as helpers, integer, ipAddress, macAddress, maxLength, maxValue, minLength, minValue, not, numeric, or, required, requiredIf, requiredUnless, sameAs, url };\n","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n } else {\n setOverflowHidden(options);\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n } else if (!locks.length) {\n restoreOverflowSetting();\n }\n};\n\n","\"use strict\";function getIlluminant(r){return ILLUMINANTS[r]}function matrixMultiply(r,t){for(var n=[],e=0;e<r.length;e++){n[e]=[];for(var o=0;o<t[0].length;o++){for(var u=0,a=0;a<r[0].length;a++)u+=r[e][a]*t[a][o];n[e][o]=u}}return n}function getTransform(r){return TRANSFORMS[r]}function determineType(r){var t=types.find(function(t){return testColorType[t](r)});if(!t)throw new Error(\"No type found for color \"+r);return t}function toRadian(r){return r*(Math.PI/180)}function toDegree(r){return r*(180/Math.PI)}function negativeModulo(r,t){return(r%t+t)%t}function bounded(r,t){return r<t[0]?r=t[0]:r>t[1]&&(r=t[1]),r}function boundedRgb(r){return{r:bounded255(r.r),g:bounded255(r.g),b:bounded255(r.b)}}function cubeRoot(r){if(Math.cbrt)return Math.cbrt(r);var t=Math.pow(Math.abs(r),1/3);return r<0?-t:t}function convert(r,t,n){if(void 0===t)throw new Error(\"No value provided\");var e=n||determineType(t);if(e===r)return t;if(conversions[e][r])return convertNow(e,r,t);var o=conversionSteps[e],u=\"string\"==typeof o?o:o[r]||o.default;return convert(r,convertNow(e,u,t),u)}function makeColourObject(r){var t={};return types$1.forEach(function(n){Object.defineProperty(t,n,{get:function(){return convertArrayOrColour(n,r)},enumerable:!0})}),t}function adapt(r,t,n){var e=convert(\"XYZ\",r),o=convert(\"lms\",getIlluminant(t)||getIlluminant(\"D65\")),u=convert(\"lms\",getIlluminant(n)||getIlluminant(\"D65\")),a=getTransform(\"BRADFORD\"),c=matrixMultiply(matrixMultiply(matrixMultiply(getTransform(\"INVERSE_BRADFORD\"),[[o.rho/u.rho,0,0],[0,o.gamma/u.gamma,0],[0,0,o.beta/u.beta]]),a),[[e.X],[e.Y],[e.Z]]);return makeColourObject({X:c[0][0],Y:c[1][0],Z:c[2][0]})}function adjacent(r,t,n){for(var e=convert(\"hsl\",n),o=[{h:e.h,s:e.s,l:e.l}],u=0;u<t-1;u++)e.h=negativeModulo(e.h+r,360),o.push({h:e.h,s:e.s,l:e.l});return makeColourObject(o)}function brightness(r,t){var n=convert(\"hsl\",t);return n.l+=r,n.l<0?n.l=0:n.l>100&&(n.l=100),makeColourObject(n)}function complementary(r){var t=convert(\"hsl\",r);return t.h=(t.h+180)%360,makeColourObject(t)}function contrast(r,t){var n=convert(\"rgb\",t);return n.r=255*((n.r/255-.5)*r+.5),n.r<0?n.r=0:n.r>255&&(n.r=255),n.g=255*((n.g/255-.5)*r+.5),n.g<0?n.g=0:n.g>255&&(n.g=255),n.b=255*((n.b/255-.5)*r+.5),n.b<0?n.b=0:n.b>255&&(n.b=255),makeColourObject(n)}function contrastRatio(r){var t=convert(\"rgb\",r);return t=(299*t.r+587*t.g+114*t.b)/1e3>=128?{r:0,g:0,b:0}:{r:255,g:255,b:255},makeColourObject(t)}function difference(r,t,n,e){n=n||1,e=e||1;var o=convert(\"cielab\",r),u=convert(\"cielab\",t),a=Math.sqrt(Math.pow(o.a,2)+Math.pow(o.b,2)),c=a-Math.sqrt(Math.pow(u.a,2)+Math.pow(u.b,2)),i=o.L-u.L,s=o.a-u.a,l=o.b-u.b,h=Math.sqrt(Math.pow(s,2)+Math.pow(l,2)-Math.pow(c,2)),f=o.L<16?.511:.040975*o.L/(1.01765*o.L),v=.0638*a/(1.0131*a),b=Math.atan2(o.b,o.a),g=b>=0?b:b+360,p=g>=164&&g<=345?.56+Math.abs(.2*Math.cos(toRadian(g+168))):.36+Math.abs(.4*Math.cos(toRadian(g+35))),m=Math.pow(a,4)/(Math.pow(a,4)+1900),d=v*(m*p+1-m),Y=Math.pow(i/(n*f),2),M=Math.pow(c/(e*v),2),y=Math.pow(h/d,2);return Math.sqrt(Y+M+y)}function slopeMod(r,t){return r>2*t?slopeMod(r-2*t,t):r>t?2*t-r:r<0?slopeMod(r+2*t,t):r}function fade(r,t,n){var e=convert(\"rgb\",t),o=convert(\"rgb\",n),u=[e];r-=1;for(var a=(o.r-e.r)/r,c=(o.g-e.g)/r,i=(o.b-e.b)/r,s={r:e.r,g:e.g,b:e.b},l=0;l<r-1;l++)s.r=slopeMod(s.r+a,255),s.g=slopeMod(s.g+c,255),s.b=slopeMod(s.b+i,255),u.push({r:s.r,g:s.g,b:s.b});return u.push(o),makeColourObject(u)}function greyscale(r){var t=convert(\"rgb\",r),n=(t.r+t.g+t.b)/3;return t={r:n,g:n,b:n},makeColourObject(t)}function hue(r,t){var n=convert(\"hsl\",t);return n.h=negativeModulo(n.h+r,360),makeColourObject(n)}function invert(r){var t=convert(\"rgb\",r);return t.r=negativeModulo(255-t.r,255),t.g=negativeModulo(255-t.g,255),t.b=negativeModulo(255-t.b,255),makeColourObject(t)}function invertLightness(r){var t=convert(\"hsl\",r);return t.l=100-t.l,makeColourObject(t)}function mid(r,t){var n=convert(\"hsl\",r),e=convert(\"hsl\",t);return makeColourObject({h:(n.h+e.h)/2,s:(n.s+e.s)/2,l:(n.l+e.l)/2})}function multiply(r,t){var n=convert(\"hsl\",r),e=convert(\"hsl\",t),o={h:n.h,s:n.s,l:n.l/100*(e.l/100)*100};return o.l=o.l>100?100:o.l,o.l=o.l<0?0:o.l,makeColourObject(o)}function saturation(r,t){var n=convert(\"hsl\",t);return n.s+=r,n.s<0?n.s=0:n.s>100&&(n.s=100),makeColourObject(n)}function sepia(r){var t=convert(\"rgb\",r),n={};return n.r=.393*t.r+.769*t.g+.189*t.b,n.g=.349*t.r+.686*t.g+.168*t.b,n.b=.272*t.r+.534*t.g+.131*t.b,makeColourObject(n)}function shade(r,t){var n=convert(\"hsv\",t);return console.log(n),n.v+=r,n.v<0?n.v=0:n.v>100&&(n.v=100),console.log(n),makeColourObject(n)}function temperature(r){var t=convert(\"xyY\",r),n=(t.x-.332)/(t.y-.1858);return-449*Math.pow(n,3)+3525*Math.pow(n,2)-6823.3*n+5520.33}function tetrad(r){for(var t=convert(\"hsl\",r),n=[{h:t.h,s:t.s,l:t.l}],e=0;e<3;e++)t.h=(t.h+90)%360,n.push({h:t.h,s:t.s,l:t.l});return makeColourObject(n)}function triad(r){for(var t=convert(\"hsl\",r),n=[{h:t.h,s:t.s,l:t.l}],e=0;e<2;e++)t.h=(t.h+120)%360,n.push({h:t.h,s:t.s,l:t.l});return makeColourObject(n)}function complementary$1(r){var t=convert(\"hsluv\",r);return t.hu=(t.hu+180)%360,makeColourObject(t)}function triad$1(r){for(var t=convert(\"hsluv\",r),n=[{hu:t.hu,s:t.s,l:t.l}],e=0;e<2;e++)t.hu=(t.hu+120)%360,n.push({h:t.hu,s:t.s,l:t.l});return makeColourObject(n)}function tetrad$1(r){for(var t=convert(\"hsluv\",r),n=[{hu:t.hu,s:t.s,l:t.l}],e=0;e<3;e++)t.hu=(t.hu+90)%360,n.push({h:t.hu,s:t.s,l:t.l});return makeColourObject(n)}Object.defineProperty(exports,\"__esModule\",{value:!0});var ILLUMINANTS={A:{X:1.0985*100,Y:100,Z:35.585},B:{X:99.072,Y:100,Z:85.223},C:{X:98.074,Y:100,Z:118.232},D50:{X:96.422,Y:100,Z:82.521},D55:{X:95.682,Y:100,Z:92.149},D65:{X:95.047,Y:100,Z:108.883},D75:{X:94.972,Y:100,Z:122.638},E:{X:100,Y:100,Z:100},F2:{X:.99186*100,Y:100,Z:67.393},F7:{X:95.041,Y:100,Z:108.747},F11:{X:1.00962*100,Y:100,Z:64.35}},TRANSFORMS={BRADFORD:[[.8951,.2664,-.1614],[-.7502,1.7135,.0367],[.0389,-.0685,1.0296]],INVERSE_BRADFORD:[[.9869929,-.1470543,.1599627],[.4323053,.5183603,.0492912],[-.0085287,.0400428,.9684867]],SRGB_XYZ:[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],INVERSE_SRGB_XYZ:[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]]},contains=function(r,t){var n=new Set(Object.keys(r));return t.every(function(r){return n.has(r)})},stringStartsWith=function(r,t){return\"string\"==typeof r&&r.slice(0,t.length)===t},testColorType={hex:function(r){return stringStartsWith(r,\"#\")},rgb:function(r){return contains(r,[\"r\",\"g\",\"b\"])},cssrgb:function(r){return stringStartsWith(r,\"rgb(\")},hsl:function(r){return contains(r,[\"h\",\"s\",\"l\"])},csshsl:function(r){return stringStartsWith(r,\"hsl(\")},hsv:function(r){return contains(r,[\"h\",\"s\",\"v\"])},cmyk:function(r){return contains(r,[\"c\",\"m\",\"y\",\"k\"])},yiq:function(r){return contains(r,[\"y\",\"i\",\"q\"])},XYZ:function(r){return contains(r,[\"X\",\"Y\",\"Z\"])},xyY:function(r){return contains(r,[\"x\",\"y\",\"Y\"])},lms:function(r){return contains(r,[\"rho\",\"gamma\",\"beta\"])},cielab:function(r){return contains(r,[\"L\",\"a\",\"b\"])},cieluv:function(r){return contains(r,[\"L\",\"u\",\"v\"])},cielch:function(r){return contains(r,[\"L\",\"C\",\"h\"])},hsluv:function(r){return contains(r,[\"hu\",\"s\",\"l\"])}},types=Object.keys(testColorType),epsilon=.008856,kappa=903.3,white=getIlluminant(\"D65\"),toR=function(r){return Math.pow(r,3)>epsilon?Math.pow(r,3):(116*r-16)/kappa},cielab={XYZ:function(r){var t=(r.L+16)/116,n=r.a/500+t,e=t-r.b/200,o=toR(n),u=toR(e),a=r.L>kappa*epsilon?Math.pow(t,3):r.L/kappa;return{X:o*white.X,Y:a*white.Y,Z:u*white.Z}}},cielch={cieluv:function(r){var t=toRadian(r.h),n=r.C*Math.cos(t),e=r.C*Math.sin(t);return{L:r.L,u:n,v:e}},hsluv:function(r){if(r.L>99.9999999)return{hu:r.h,s:0,l:100};if(r.L<1e-8)return{hu:r.h,s:0,l:0};for(var t=(r.L+16)/1560896,n=t>.008856?t:r.L/903.3,e=getTransform(\"INVERSE_SRGB_XYZ\"),o=[],u=0;u<3;u++)for(var a=e[u][0],c=e[u][1],i=e[u][2],s=0;s<2;s++){var l=(284517*a-94839*i)*n,h=(838422*i+769860*c+731718*a)*r.L*n-769860*s*r.L,f=(632260*i-126452*c)*n+126452*s;o.push({m:l/f,b:h/f})}var v=Number.MAX_VALUE,b=toRadian(r.h);o.forEach(function(r){var t=r.b/(Math.sin(b)-r.m*Math.cos(b));t>=0&&(v=Math.min(v,t))});var g=v;return{hu:r.h,s:r.C/g*100,l:r.L}}},cieluv={XYZ:function(r){var t=getIlluminant(\"D65\"),n=function(r){return 4*r.X/(r.X+15*r.Y+3*r.Z)}(t),e=function(r){return 9*r.Y/(r.X+15*r.Y+3*r.Z)}(t),o=1/3*(52*r.L/(r.u+13*r.L*n)-1),u=r.L>903.3*.008856?Math.pow((r.L+16)/116,3):r.L/903.3,a=-5*u,c=(u*(39*r.L/(r.v+13*r.L*e)-5)-a)/(o- -1/3);return{X:100*c,Y:100*u,Z:100*(c*o+a)}},cielch:function(r){var t=Math.sqrt(Math.pow(r.u,2)+Math.pow(r.v,2)),n=Math.atan2(r.v,r.u);return n<0&&(n+=2*Math.PI),n=toDegree(n),{L:r.L,C:t,h:n}}},rgb=function(r){return{r:255*(1-r.c)*(1-r.k),g:255*(1-r.m)*(1-r.k),b:255*(1-r.y)*(1-r.k)}},cmyk={rgb:rgb,cssrgb:function(r){var t=rgb(r),n=t.r,e=t.g,o=t.b;return\"rgb(\"+Math.round(n)+\",\"+Math.round(e)+\",\"+Math.round(o)+\")\"}},csshsl={hsl:function(r){var t=r.replace(/(hsl\\(|\\)|%|[\\s]*)/g,\"\").split(\",\").map(function(r){return parseInt(r,10)});return{h:t[0],s:t[1],l:t[2]}}},cssrgb={rgb:function(r){var t=r.replace(/((rgb\\(|\\))|[\\s]*)/g,\"\").split(\",\").map(function(r){return parseInt(r,10)});return{r:t[0],g:t[1],b:t[2]}}},hex={rgb:function(r){var t=r.replace(\"#\",\"\").match(/.{2}/g).map(function(r){return parseInt(r,16)});return{r:t[0],g:t[1],b:t[2]}}},hsl={rgb:function(r){if(0===r.s){var t=r.l/100*255;return{r:t,g:t,b:t}}var n,e,o;n=r.l>=50?r.l/100+r.s/100-r.l/100*(r.s/100):r.l/100*(1+r.s/100),e=r.l/100*2-n;var u,a,c,i=((o=r.h/360)+.333)%1,s=o,l=negativeModulo(o-.333,1);return u=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+6*(.666-i)*(n-e):e,a=6*s<1?e+6*(n-e)*s:2*s<1?n:3*s<2?e+6*(.666-s)*(n-e):e,c=6*l<1?e+6*(n-e)*l:2*l<1?n:3*l<2?e+6*(.666-l)*(n-e):e,u<0&&(u=0),a<0&&(a=0),c<0&&(c=0),{r:255*u,g:255*a,b:255*c}},csshsl:function(r){return\"hsl(\"+Math.round(r.h)+\",\"+Math.round(r.s)+\"%,\"+Math.round(r.l)+\"%)\"},hsv:function(r){var t=Object.assign({},r,{s:r.s/100,l:r.l/100}),n=t.s*(t.l<.5?t.l:1-t.l);return{h:t.h,s:100*(2*n/(t.l+n)),v:100*(t.l+n)}}},hsluv={cielch:function(r){if(r.L>99.9999999)return{L:100,C:0,h:r.hu};if(r.L<1e-8)return{L:0,C:0,h:r.hu};for(var t=(r.l+16)/1560896,n=t>.008856?t:r.l/903.3,e=getTransform(\"INVERSE_SRGB_XYZ\"),o=[],u=0;u<3;u++)for(var a=e[u][0],c=e[u][1],i=e[u][2],s=0;s<2;s++){var l=(284517*a-94839*i)*n,h=(838422*i+769860*c+731718*a)*r.l*n-769860*s*r.l,f=(632260*i-126452*c)*n+126452*s;o.push({m:l/f,b:h/f})}var v=Number.MAX_VALUE,b=toRadian(r.hu);o.forEach(function(r){var t=r.b/(Math.sin(b)-r.m*Math.cos(b));t>=0&&(v=Math.min(v,t))});var g=v;return{L:r.l,C:g/100*r.s,h:r.hu}}},hsv={hsl:function(r){var t=Object.assign({},r,{h:r.h/360,s:r.s/100,v:r.v/100});return{h:360*t.h,s:100*((2-t.s)*t.v<1?t.s*t.v/((2-t.s)*t.v):t.s*t.v/(2-(2-t.s)*t.v)),l:100*((2-t.s)*t.v/2)}}},lms={XYZ:function(r){var t=[r.rho,r.gamma,r.beta],n=getTransform(\"INVERSE_BRADFORD\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)});return{X:100*n[0],Y:100*n[1],Z:100*n[2]}}},bounded255=function(r){return bounded(r,[0,255])},slicedToArray=function(){function r(r,t){var n=[],e=!0,o=!1,u=void 0;try{for(var a,c=r[Symbol.iterator]();!(e=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);e=!0);}catch(r){o=!0,u=r}finally{try{!e&&c.return&&c.return()}finally{if(o)throw u}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return r(t,n);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}(),epsilon$1=.008856,kappa$1=903.3,white$1=getIlluminant(\"D65\"),fromXYZ={rgb:function(r){var t=[r.X,r.Y,r.Z].map(function(r){return r/100}),n=getTransform(\"INVERSE_SRGB_XYZ\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)}).map(function(r){return r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055}).map(function(r){return 255*r}),e=slicedToArray(n,3);return boundedRgb({r:e[0],g:e[1],b:e[2]})},lms:function(r){var t=[r.X,r.Y,r.Z].map(function(r){return r/100}),n=getTransform(\"BRADFORD\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)});return{rho:n[0],gamma:n[1],beta:n[2]}},cielab:function(r){var t=r.X/white$1.X,n=r.Y/white$1.Y,e=r.Z/white$1.Z,o=function(r){return r>epsilon$1?cubeRoot(r):(kappa$1*r+16)/116},u=o(t),a=o(n);return{L:116*a-16,a:500*(u-a),b:200*(a-o(e))}},cieluv:function(r){var t=r.Y/white$1.Y,n=t>epsilon$1?116*cubeRoot(t)-16:kappa$1*t,e=function(r){return 4*r.X/(r.X+15*r.Y+3*r.Z)},o=function(r){return 9*r.Y/(r.X+15*r.Y+3*r.Z)};return{L:n,u:13*n*(e(r)-e(white$1)),v:13*n*(o(r)-o(white$1))}},xyY:function(r){return{x:r.X/(r.X+r.Y+r.Z),y:r.Y/(r.X+r.Y+r.Z),Y:r.Y}}},fromXYZTolms=fromXYZ.lms,fromXYZTocielab=fromXYZ.cielab,fromXYZTocieluv=fromXYZ.cieluv,fromXYZToxyY=fromXYZ.xyY,hsl$1=function(r){var t,n,e=r.r/255,o=r.g/255,u=r.b/255,a=[e,o,u].sort(),c=(a[0]+a[2])/2*100;return a[0]===a[2]?(t=0,n=0):(t=c>=50?(a[2]-a[0])/(2-a[2]-a[0])*100:(a[2]-a[0])/(a[2]+a[0])*100,(n=a[2]===e?(o-u)/(a[2]-a[0])*60:a[2]===o?60*(2+(u-e)/(a[2]-a[0])):60*(4+(e-o)/(a[2]-a[0])))<0?n+=360:n>360&&(n%=360)),{h:n,s:t,l:c}},cieluv$1=function(r){return fromXYZTocieluv(XYZ(r))},XYZ=function(r){var t=[r.r,r.g,r.b].map(function(r){return r/255}).map(function(r){return r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}),n=getTransform(\"SRGB_XYZ\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)}).map(function(r){return 100*r}),e=slicedToArray(n,3);return{X:e[0],Y:e[1],Z:e[2]}},rgb$1={hex:function(r){var t=Math.round(r.r).toString(16);1===t.length&&(t=\"0\"+t);var n=Math.round(r.g).toString(16);1===n.length&&(n=\"0\"+n);var e=Math.round(r.b).toString(16);return 1===e.length&&(e=\"0\"+e),\"#\"+t+n+e},cssrgb:function(r){return\"rgb(\"+Math.round(r.r)+\",\"+Math.round(r.g)+\",\"+Math.round(r.b)+\")\"},hsl:hsl$1,csshsl:function(r){var t=hsl$1(r),n=t.h,e=t.s,o=t.l;return\"hsl(\"+Math.round(n)+\",\"+Math.round(e)+\"%,\"+Math.round(o)+\"%)\"},cmyk:function(r){var t=r.r/255,n=r.g/255,e=r.b/255,o=1-Math.max(t,n,e);return 1!==o?{c:(1-t-o)/(1-o),m:(1-n-o)/(1-o),y:(1-e-o)/(1-o),k:o}:{c:0,m:0,y:0,k:o}},yiq:function(r){var t=r.r/255*.299+r.g/255*.587+r.b/255*.114,n=r.r/255*.596+r.g/255*-.274+r.b/255*-.322,e=r.r/255*.211+r.g/255*-.523+r.b/255*.312;return n=bounded(n,[-.5957,.5957]),e=bounded(e,[-.5226,.5226]),{y:t,i:n,q:e}},XYZ:XYZ,lms:function(r){return fromXYZTolms(XYZ(r))},cielab:function(r){return fromXYZTocielab(XYZ(r))},cieluv:cieluv$1,xyY:function(r){return fromXYZToxyY(XYZ(r))}},xyY={XYZ:function(r){var t=r.x,n=r.y,e=r.Y;return{X:e/n*t,Y:e,Z:e/n*(1-t-n)}}},bound=function(r){return bounded(r,[0,255])},yiq={rgb:function(r){var t=bounded(r.i,[-.5957,.5957]),n=bounded(r.q,[-.5226,.5226]);return{r:255*bound(r.y+.956*t+.621*n),g:255*bound(r.y+-.272*t+-.647*n),b:255*bound(r.y+-1.106*t+-1.703*n)}}},conversions=Object.freeze({cielab:cielab,cielch:cielch,cieluv:cieluv,cmyk:cmyk,csshsl:csshsl,cssrgb:cssrgb,hex:hex,hsl:hsl,hsluv:hsluv,hsv:hsv,lms:lms,rgb:rgb$1,xyY:xyY,XYZ:fromXYZ,yiq:yiq}),conversionSteps={rgb:{default:\"XYZ\",csshsl:\"hsl\",hsv:\"hsl\"},hex:\"rgb\",hsl:\"rgb\",hsv:\"hsl\",csshsl:\"hsl\",cssrgb:\"rgb\",cmyk:\"rgb\",XYZ:{default:\"rgb\",cielch:\"cieluv\",hsluv:\"cieluv\"},xyY:\"XYZ\",lms:\"XYZ\",cieluv:{default:\"XYZ\",hsluv:\"cielch\"},cielch:\"cieluv\",cielab:\"XYZ\",yiq:\"rgb\",hsluv:\"cielch\"},convertNow=function(r,t,n){return conversions[r][t](n)},types$1=Object.keys(testColorType),convertArrayOrColour=function(r,t){return Array.isArray(t)?t.map(function(t){return convert(r,t)}):convert(r,t)};exports.adapt=adapt,exports.adjacent=adjacent,exports.brightness=brightness,exports.complementary=complementary,exports.contrast=contrast,exports.contrastRatio=contrastRatio,exports.convert=makeColourObject,exports.difference=difference,exports.fade=fade,exports.greyscale=greyscale,exports.hue=hue,exports.invert=invert,exports.invertLightness=invertLightness,exports.mid=mid,exports.multiply=multiply,exports.saturation=saturation,exports.sepia=sepia,exports.shade=shade,exports.temperature=temperature,exports.tetrad=tetrad,exports.triad=triad,exports.uniformComplementary=complementary$1,exports.uniformTriad=triad$1,exports.uniformTetrad=tetrad$1;\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e||self)[\"v-click-outside\"]=n()}(this,function(){var e=\"__v-click-outside\",n=\"undefined\"!=typeof window,t=\"undefined\"!=typeof navigator,r=n&&(\"ontouchstart\"in window||t&&navigator.msMaxTouchPoints>0)?[\"touchstart\"]:[\"click\"],i=function(e){var n=e.event,t=e.handler;(0,e.middleware)(n)&&t(n)},a=function(n,t){var a=function(e){var n=\"function\"==typeof e;if(!n&&\"object\"!=typeof e)throw new Error(\"v-click-outside: Binding value must be a function or an object\");return{handler:n?e:e.handler,middleware:e.middleware||function(e){return e},events:e.events||r,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe),capture:Boolean(e.capture)}}(t.value),o=a.handler,d=a.middleware,c=a.detectIframe,u=a.capture;if(a.isActive){if(n[e]=a.events.map(function(e){return{event:e,srcTarget:document.documentElement,handler:function(e){return function(e){var n=e.el,t=e.event,r=e.handler,a=e.middleware,o=t.path||t.composedPath&&t.composedPath();(o?o.indexOf(n)<0:!n.contains(t.target))&&i({event:t,handler:r,middleware:a})}({el:n,event:e,handler:o,middleware:d})},capture:u}}),c){var l={event:\"blur\",srcTarget:window,handler:function(e){return function(e){var n=e.el,t=e.event,r=e.handler,a=e.middleware;setTimeout(function(){var e=document.activeElement;e&&\"IFRAME\"===e.tagName&&!n.contains(e)&&i({event:t,handler:r,middleware:a})},0)}({el:n,event:e,handler:o,middleware:d})},capture:u};n[e]=[].concat(n[e],[l])}n[e].forEach(function(t){var r=t.event,i=t.srcTarget,a=t.handler;return setTimeout(function(){n[e]&&i.addEventListener(r,a,u)},0)})}},o=function(n){(n[e]||[]).forEach(function(e){return e.srcTarget.removeEventListener(e.event,e.handler,e.capture)}),delete n[e]},d=n?{beforeMount:a,updated:function(e,n){var t=n.value,r=n.oldValue;JSON.stringify(t)!==JSON.stringify(r)&&(o(e),a(e,{value:t}))},unmounted:o}:{};return{install:function(e){e.directive(\"click-outside\",d)},directive:d}});\n//# sourceMappingURL=v-click-outside.umd.js.map\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\n(function() {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n var ce = new window.CustomEvent('test', { cancelable: true });\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n } catch (e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {};\n params.bubbles = !!params.bubbles;\n params.cancelable = !!params.cancelable;\n\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n origPrevent = evt.preventDefault;\n evt.preventDefault = function() {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n } catch (e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n }\n})();\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '&quot;';\n break;\n case 38: // &\n escape = '&amp;';\n break;\n case 39: // '\n escape = '&#39;';\n break;\n case 60: // <\n escape = '&lt;';\n break;\n case 62: // >\n escape = '&gt;';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","const LANGUAGES_LIST = {\n aa: {\n name: 'Afar',\n nativeName: 'Afaraf',\n },\n ab: {\n name: 'Abkhaz',\n nativeName: 'аҧсуа бызшәа',\n },\n ae: {\n name: 'Avestan',\n nativeName: 'avesta',\n },\n af: {\n name: 'Afrikaans',\n nativeName: 'Afrikaans',\n },\n ak: {\n name: 'Akan',\n nativeName: 'Akan',\n },\n am: {\n name: 'Amharic',\n nativeName: 'አማርኛ',\n },\n an: {\n name: 'Aragonese',\n nativeName: 'aragonés',\n },\n ar: {\n name: 'Arabic',\n nativeName: 'اَلْعَرَبِيَّةُ',\n },\n as: {\n name: 'Assamese',\n nativeName: 'অসমীয়া',\n },\n av: {\n name: 'Avaric',\n nativeName: 'авар мацӀ',\n },\n ay: {\n name: 'Aymara',\n nativeName: 'aymar aru',\n },\n az: {\n name: 'Azerbaijani',\n nativeName: 'azərbaycan dili',\n },\n ba: {\n name: 'Bashkir',\n nativeName: 'башҡорт теле',\n },\n be: {\n name: 'Belarusian',\n nativeName: 'беларуская мова',\n },\n bg: {\n name: 'Bulgarian',\n nativeName: 'български език',\n },\n bi: {\n name: 'Bislama',\n nativeName: 'Bislama',\n },\n bm: {\n name: 'Bambara',\n nativeName: 'bamanankan',\n },\n bn: {\n name: 'Bengali',\n nativeName: 'বাংলা',\n },\n bo: {\n name: 'Tibetan',\n nativeName: 'བོད་ཡིག',\n },\n br: {\n name: 'Breton',\n nativeName: 'brezhoneg',\n },\n bs: {\n name: 'Bosnian',\n nativeName: 'bosanski jezik',\n },\n ca: {\n name: 'Catalan',\n nativeName: 'Català',\n },\n ce: {\n name: 'Chechen',\n nativeName: 'нохчийн мотт',\n },\n ch: {\n name: 'Chamorro',\n nativeName: 'Chamoru',\n },\n co: {\n name: 'Corsican',\n nativeName: 'corsu',\n },\n cr: {\n name: 'Cree',\n nativeName: 'ᓀᐦᐃᔭᐍᐏᐣ',\n },\n cs: {\n name: 'Czech',\n nativeName: 'čeština',\n },\n cu: {\n name: 'Old Church Slavonic',\n nativeName: 'ѩзыкъ словѣньскъ',\n },\n cv: {\n name: 'Chuvash',\n nativeName: 'чӑваш чӗлхи',\n },\n cy: {\n name: 'Welsh',\n nativeName: 'Cymraeg',\n },\n da: {\n name: 'Danish',\n nativeName: 'dansk',\n },\n de: {\n name: 'German',\n nativeName: 'Deutsch',\n },\n dv: {\n name: 'Divehi',\n nativeName: 'ދިވެހި',\n },\n dz: {\n name: 'Dzongkha',\n nativeName: 'རྫོང་ཁ',\n },\n ee: {\n name: 'Ewe',\n nativeName: 'Eʋegbe',\n },\n el: {\n name: 'Greek',\n nativeName: 'Ελληνικά',\n },\n en: {\n name: 'English',\n nativeName: 'English',\n },\n eo: {\n name: 'Esperanto',\n nativeName: 'Esperanto',\n },\n es: {\n name: 'Spanish',\n nativeName: 'Español',\n },\n et: {\n name: 'Estonian',\n nativeName: 'eesti',\n },\n eu: {\n name: 'Basque',\n nativeName: 'euskara',\n },\n fa: {\n name: 'Persian',\n nativeName: 'فارسی',\n },\n ff: {\n name: 'Fula',\n nativeName: 'Fulfulde',\n },\n fi: {\n name: 'Finnish',\n nativeName: 'suomi',\n },\n fj: {\n name: 'Fijian',\n nativeName: 'vosa Vakaviti',\n },\n fo: {\n name: 'Faroese',\n nativeName: 'føroyskt',\n },\n fr: {\n name: 'French',\n nativeName: 'Français',\n },\n fy: {\n name: 'Western Frisian',\n nativeName: 'Frysk',\n },\n ga: {\n name: 'Irish',\n nativeName: 'Gaeilge',\n },\n gd: {\n name: 'Scottish Gaelic',\n nativeName: 'Gàidhlig',\n },\n gl: {\n name: 'Galician',\n nativeName: 'galego',\n },\n gn: {\n name: 'Guaraní',\n nativeName: \"Avañe'ẽ\",\n },\n gu: {\n name: 'Gujarati',\n nativeName: 'ગુજરાતી',\n },\n gv: {\n name: 'Manx',\n nativeName: 'Gaelg',\n },\n ha: {\n name: 'Hausa',\n nativeName: 'هَوُسَ',\n },\n he: {\n name: 'Hebrew',\n nativeName: 'עברית',\n },\n hi: {\n name: 'Hindi',\n nativeName: 'हिन्दी',\n },\n ho: {\n name: 'Hiri Motu',\n nativeName: 'Hiri Motu',\n },\n hr: {\n name: 'Croatian',\n nativeName: 'Hrvatski',\n },\n ht: {\n name: 'Haitian',\n nativeName: 'Kreyòl ayisyen',\n },\n hu: {\n name: 'Hungarian',\n nativeName: 'magyar',\n },\n hy: {\n name: 'Armenian',\n nativeName: 'Հայերեն',\n },\n hz: {\n name: 'Herero',\n nativeName: 'Otjiherero',\n },\n ia: {\n name: 'Interlingua',\n nativeName: 'Interlingua',\n },\n id: {\n name: 'Indonesian',\n nativeName: 'Bahasa Indonesia',\n },\n ie: {\n name: 'Interlingue',\n nativeName: 'Interlingue',\n },\n ig: {\n name: 'Igbo',\n nativeName: 'Asụsụ Igbo',\n },\n ii: {\n name: 'Nuosu',\n nativeName: 'ꆈꌠ꒿ Nuosuhxop',\n },\n ik: {\n name: 'Inupiaq',\n nativeName: 'Iñupiaq',\n },\n io: {\n name: 'Ido',\n nativeName: 'Ido',\n },\n is: {\n name: 'Icelandic',\n nativeName: 'Íslenska',\n },\n it: {\n name: 'Italian',\n nativeName: 'Italiano',\n },\n iu: {\n name: 'Inuktitut',\n nativeName: 'ᐃᓄᒃᑎᑐᑦ',\n },\n ja: {\n name: 'Japanese',\n nativeName: '日本語',\n },\n jv: {\n name: 'Javanese',\n nativeName: 'basa Jawa',\n },\n ka: {\n name: 'Georgian',\n nativeName: 'ქართული',\n },\n kg: {\n name: 'Kongo',\n nativeName: 'Kikongo',\n },\n ki: {\n name: 'Kikuyu',\n nativeName: 'Gĩkũyũ',\n },\n kj: {\n name: 'Kwanyama',\n nativeName: 'Kuanyama',\n },\n kk: {\n name: 'Kazakh',\n nativeName: 'қазақ тілі',\n },\n kl: {\n name: 'Kalaallisut',\n nativeName: 'kalaallisut',\n },\n km: {\n name: 'Khmer',\n nativeName: 'ខេមរភាសា',\n },\n kn: {\n name: 'Kannada',\n nativeName: 'ಕನ್ನಡ',\n },\n ko: {\n name: 'Korean',\n nativeName: '한국어',\n },\n kr: {\n name: 'Kanuri',\n nativeName: 'Kanuri',\n },\n ks: {\n name: 'Kashmiri',\n nativeName: 'कश्मीरी',\n },\n ku: {\n name: 'Kurdish',\n nativeName: 'Kurdî',\n },\n kv: {\n name: 'Komi',\n nativeName: 'коми кыв',\n },\n kw: {\n name: 'Cornish',\n nativeName: 'Kernewek',\n },\n ky: {\n name: 'Kyrgyz',\n nativeName: 'Кыргызча',\n },\n la: {\n name: 'Latin',\n nativeName: 'latine',\n },\n lb: {\n name: 'Luxembourgish',\n nativeName: 'Lëtzebuergesch',\n },\n lg: {\n name: 'Ganda',\n nativeName: 'Luganda',\n },\n li: {\n name: 'Limburgish',\n nativeName: 'Limburgs',\n },\n ln: {\n name: 'Lingala',\n nativeName: 'Lingála',\n },\n lo: {\n name: 'Lao',\n nativeName: 'ພາສາລາວ',\n },\n lt: {\n name: 'Lithuanian',\n nativeName: 'lietuvių kalba',\n },\n lu: {\n name: 'Luba-Katanga',\n nativeName: 'Kiluba',\n },\n lv: {\n name: 'Latvian',\n nativeName: 'latviešu valoda',\n },\n mg: {\n name: 'Malagasy',\n nativeName: 'fiteny malagasy',\n },\n mh: {\n name: 'Marshallese',\n nativeName: 'Kajin M̧ajeļ',\n },\n mi: {\n name: 'Māori',\n nativeName: 'te reo Māori',\n },\n mk: {\n name: 'Macedonian',\n nativeName: 'македонски јазик',\n },\n ml: {\n name: 'Malayalam',\n nativeName: 'മലയാളം',\n },\n mn: {\n name: 'Mongolian',\n nativeName: 'Монгол хэл',\n },\n mr: {\n name: 'Marathi',\n nativeName: 'मराठी',\n },\n ms: {\n name: 'Malay',\n nativeName: 'Bahasa Melayu',\n },\n mt: {\n name: 'Maltese',\n nativeName: 'Malti',\n },\n my: {\n name: 'Burmese',\n nativeName: 'ဗမာစာ',\n },\n na: {\n name: 'Nauru',\n nativeName: 'Dorerin Naoero',\n },\n nb: {\n name: 'Norwegian Bokmål',\n nativeName: 'Norsk bokmål',\n },\n nd: {\n name: 'Northern Ndebele',\n nativeName: 'isiNdebele',\n },\n ne: {\n name: 'Nepali',\n nativeName: 'नेपाली',\n },\n ng: {\n name: 'Ndonga',\n nativeName: 'Owambo',\n },\n nl: {\n name: 'Dutch',\n nativeName: 'Nederlands',\n },\n nn: {\n name: 'Norwegian Nynorsk',\n nativeName: 'Norsk nynorsk',\n },\n no: {\n name: 'Norwegian',\n nativeName: 'Norsk',\n },\n nr: {\n name: 'Southern Ndebele',\n nativeName: 'isiNdebele',\n },\n nv: {\n name: 'Navajo',\n nativeName: 'Diné bizaad',\n },\n ny: {\n name: 'Chichewa',\n nativeName: 'chiCheŵa',\n },\n oc: {\n name: 'Occitan',\n nativeName: 'occitan',\n },\n oj: {\n name: 'Ojibwe',\n nativeName: 'ᐊᓂᔑᓈᐯᒧᐎᓐ',\n },\n om: {\n name: 'Oromo',\n nativeName: 'Afaan Oromoo',\n },\n or: {\n name: 'Oriya',\n nativeName: 'ଓଡ଼ିଆ',\n },\n os: {\n name: 'Ossetian',\n nativeName: 'ирон æвзаг',\n },\n pa: {\n name: 'Panjabi',\n nativeName: 'ਪੰਜਾਬੀ',\n },\n pi: {\n name: 'Pāli',\n nativeName: 'पाऴि',\n },\n pl: {\n name: 'Polish',\n nativeName: 'Polski',\n },\n ps: {\n name: 'Pashto',\n nativeName: 'پښتو',\n },\n pt: {\n name: 'Portuguese',\n nativeName: 'Português',\n },\n qu: {\n name: 'Quechua',\n nativeName: 'Runa Simi',\n },\n rm: {\n name: 'Romansh',\n nativeName: 'rumantsch grischun',\n },\n rn: {\n name: 'Kirundi',\n nativeName: 'Ikirundi',\n },\n ro: {\n name: 'Romanian',\n nativeName: 'Română',\n },\n ru: {\n name: 'Russian',\n nativeName: 'Русский',\n },\n rw: {\n name: 'Kinyarwanda',\n nativeName: 'Ikinyarwanda',\n },\n sa: {\n name: 'Sanskrit',\n nativeName: 'संस्कृतम्',\n },\n sc: {\n name: 'Sardinian',\n nativeName: 'sardu',\n },\n sd: {\n name: 'Sindhi',\n nativeName: 'सिन्धी',\n },\n se: {\n name: 'Northern Sami',\n nativeName: 'Davvisámegiella',\n },\n sg: {\n name: 'Sango',\n nativeName: 'yângâ tî sängö',\n },\n si: {\n name: 'Sinhala',\n nativeName: 'සිංහල',\n },\n sk: {\n name: 'Slovak',\n nativeName: 'slovenčina',\n },\n sl: {\n name: 'Slovenian',\n nativeName: 'slovenščina',\n },\n sm: {\n name: 'Samoan',\n nativeName: \"gagana fa'a Samoa\",\n },\n sn: {\n name: 'Shona',\n nativeName: 'chiShona',\n },\n so: {\n name: 'Somali',\n nativeName: 'Soomaaliga',\n },\n sq: {\n name: 'Albanian',\n nativeName: 'Shqip',\n },\n sr: {\n name: 'Serbian',\n nativeName: 'српски језик',\n },\n ss: {\n name: 'Swati',\n nativeName: 'SiSwati',\n },\n st: {\n name: 'Southern Sotho',\n nativeName: 'Sesotho',\n },\n su: {\n name: 'Sundanese',\n nativeName: 'Basa Sunda',\n },\n sv: {\n name: 'Swedish',\n nativeName: 'Svenska',\n },\n sw: {\n name: 'Swahili',\n nativeName: 'Kiswahili',\n },\n ta: {\n name: 'Tamil',\n nativeName: 'தமிழ்',\n },\n te: {\n name: 'Telugu',\n nativeName: 'తెలుగు',\n },\n tg: {\n name: 'Tajik',\n nativeName: 'тоҷикӣ',\n },\n th: {\n name: 'Thai',\n nativeName: 'ไทย',\n },\n ti: {\n name: 'Tigrinya',\n nativeName: 'ትግርኛ',\n },\n tk: {\n name: 'Turkmen',\n nativeName: 'Türkmençe',\n },\n tl: {\n name: 'Tagalog',\n nativeName: 'Wikang Tagalog',\n },\n tn: {\n name: 'Tswana',\n nativeName: 'Setswana',\n },\n to: {\n name: 'Tonga',\n nativeName: 'faka Tonga',\n },\n tr: {\n name: 'Turkish',\n nativeName: 'Türkçe',\n },\n ts: {\n name: 'Tsonga',\n nativeName: 'Xitsonga',\n },\n tt: {\n name: 'Tatar',\n nativeName: 'татар теле',\n },\n tw: {\n name: 'Twi',\n nativeName: 'Twi',\n },\n ty: {\n name: 'Tahitian',\n nativeName: 'Reo Tahiti',\n },\n ug: {\n name: 'Uyghur',\n nativeName: 'ئۇيغۇرچە‎',\n },\n uk: {\n name: 'Ukrainian',\n nativeName: 'Українська',\n },\n ur: {\n name: 'Urdu',\n nativeName: 'اردو',\n },\n uz: {\n name: 'Uzbek',\n nativeName: 'Ўзбек',\n },\n ve: {\n name: 'Venda',\n nativeName: 'Tshivenḓa',\n },\n vi: {\n name: 'Vietnamese',\n nativeName: 'Tiếng Việt',\n },\n vo: {\n name: 'Volapük',\n nativeName: 'Volapük',\n },\n wa: {\n name: 'Walloon',\n nativeName: 'walon',\n },\n wo: {\n name: 'Wolof',\n nativeName: 'Wollof',\n },\n xh: {\n name: 'Xhosa',\n nativeName: 'isiXhosa',\n },\n yi: {\n name: 'Yiddish',\n nativeName: 'ייִדיש',\n },\n yo: {\n name: 'Yoruba',\n nativeName: 'Yorùbá',\n },\n za: {\n name: 'Zhuang',\n nativeName: 'Saɯ cueŋƅ',\n },\n zh: {\n name: 'Chinese',\n nativeName: '中文',\n },\n zu: {\n name: 'Zulu',\n nativeName: 'isiZulu',\n },\n};\n\nexport default LANGUAGES_LIST;\n","import LANGUAGES_LIST from './data';\n\nexport default class ISO6391 {\n static getLanguages(codes = []) {\n return codes.map(code => ({\n code,\n name: ISO6391.getName(code),\n nativeName: ISO6391.getNativeName(code),\n }));\n }\n\n static getName(code) {\n return ISO6391.validate(code) ? LANGUAGES_LIST[code].name : '';\n }\n\n static getAllNames() {\n return Object.values(LANGUAGES_LIST).map(l => l.name);\n }\n\n static getNativeName(code) {\n return ISO6391.validate(code) ? LANGUAGES_LIST[code].nativeName : '';\n }\n\n static getAllNativeNames() {\n return Object.values(LANGUAGES_LIST).map(l => l.nativeName);\n }\n\n static getCode(name) {\n const code = Object.keys(LANGUAGES_LIST).find(code => {\n const language = LANGUAGES_LIST[code];\n\n return (\n language.name.toLowerCase() === name.toLowerCase() ||\n language.nativeName.toLowerCase() === name.toLowerCase()\n );\n });\n return code || '';\n }\n\n static getAllCodes() {\n return Object.keys(LANGUAGES_LIST);\n }\n\n static validate(code) {\n return LANGUAGES_LIST.hasOwnProperty(code);\n }\n}\n","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n","/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","var copyArray = require('./_copyArray'),\n shuffleSelf = require('./_shuffleSelf');\n\n/**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n}\n\nmodule.exports = arrayShuffle;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nmodule.exports = baseClamp;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var baseUnset = require('./_baseUnset'),\n isIndex = require('./_isIndex');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\nmodule.exports = basePullAt;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nmodule.exports = baseRandom;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","var shuffleSelf = require('./_shuffleSelf'),\n values = require('./values');\n\n/**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction baseShuffle(collection) {\n return shuffleSelf(values(collection));\n}\n\nmodule.exports = baseShuffle;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n}\n\nmodule.exports = baseSum;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nmodule.exports = charsEndIndex;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nmodule.exports = charsStartIndex;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseRandom = require('./_baseRandom');\n\n/**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\nfunction shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n}\n\nmodule.exports = shuffleSelf;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map HTML entities to characters. */\nvar htmlUnescapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\"\n};\n\n/**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\nvar unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\nmodule.exports = unescapeHtmlChar;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n}\n\nmodule.exports = chunk;\n","var baseClamp = require('./_baseClamp'),\n toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n","var arrayPush = require('./_arrayPush'),\n baseFlatten = require('./_baseFlatten'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray');\n\n/**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\nfunction concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n}\n\nmodule.exports = concat;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","module.exports = require('./forEach');\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\nfunction findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index, true);\n}\n\nmodule.exports = findLastIndex;\n","module.exports = require('./head');\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseFlatten = require('./_baseFlatten');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nmodule.exports = flattenDeep;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n : undefined;\n}\n\nmodule.exports = maxBy;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\nmodule.exports = mergeWith;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nmodule.exports = negate;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseIteratee = require('./_baseIteratee'),\n negate = require('./negate'),\n pickBy = require('./pickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nmodule.exports = omitBy;\n","var baseOrderBy = require('./_baseOrderBy'),\n isArray = require('./isArray');\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\nmodule.exports = orderBy;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n negate = require('./negate');\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(baseIteratee(predicate, 3)));\n}\n\nmodule.exports = reject;\n","var baseIteratee = require('./_baseIteratee'),\n basePullAt = require('./_basePullAt');\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = baseIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\n\nmodule.exports = remove;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","var arrayShuffle = require('./_arrayShuffle'),\n baseShuffle = require('./_baseShuffle'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\nfunction shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n}\n\nmodule.exports = shuffle;\n","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n}\n\nmodule.exports = slice;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseIteratee = require('./_baseIteratee'),\n baseSum = require('./_baseSum');\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, baseIteratee(iteratee, 2))\n : 0;\n}\n\nmodule.exports = sumBy;\n","var baseSlice = require('./_baseSlice'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\nfunction take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nmodule.exports = take;\n","var baseSlice = require('./_baseSlice'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\nfunction takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nmodule.exports = takeRight;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseToString = require('./_baseToString'),\n baseTrim = require('./_baseTrim'),\n castSlice = require('./_castSlice'),\n charsEndIndex = require('./_charsEndIndex'),\n charsStartIndex = require('./_charsStartIndex'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n}\n\nmodule.exports = trim;\n","var toString = require('./toString'),\n unescapeHtmlChar = require('./_unescapeHtmlChar');\n\n/** Used to match HTML entities and HTML characters. */\nvar reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source);\n\n/**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, &amp; pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n}\n\nmodule.exports = unescape;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","'use strict';\n\nvar qs = require('querystring')\n , url = require('url')\n , xtend = require('xtend');\n\nconst PARSE_LINK_HEADER_MAXLEN = parseInt(process.env.PARSE_LINK_HEADER_MAXLEN) || 2000;\nconst PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED = process.env.PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED != null\n\nfunction hasRel(x) {\n return x && x.rel;\n}\n\nfunction intoRels (acc, x) {\n function splitRel (rel) {\n acc[rel] = xtend(x, { rel: rel });\n }\n\n x.rel.split(/\\s+/).forEach(splitRel);\n\n return acc;\n}\n\nfunction createObjects (acc, p) {\n // rel=\"next\" => 1: rel 2: next\n var m = p.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/)\n if (m) acc[m[1]] = m[2];\n return acc;\n}\n\nfunction parseLink(link) {\n try {\n var m = link.match(/<?([^>]*)>(.*)/)\n , linkUrl = m[1]\n , parts = m[2].split(';')\n , parsedUrl = url.parse(linkUrl)\n , qry = qs.parse(parsedUrl.query);\n\n parts.shift();\n\n var info = parts\n .reduce(createObjects, {});\n \n info = xtend(qry, info);\n info.url = linkUrl;\n return info;\n } catch (e) {\n return null;\n }\n}\n\nfunction checkHeader(linkHeader){\n if (!linkHeader) return false;\n\n if (linkHeader.length > PARSE_LINK_HEADER_MAXLEN) {\n if (PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED) {\n throw new Error('Input string too long, it should be under ' + PARSE_LINK_HEADER_MAXLEN + ' characters.');\n } else {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = function (linkHeader) {\n if (!checkHeader(linkHeader)) return null;\n\n return linkHeader.split(/,\\s*</)\n .map(parseLink)\n .filter(hasRel)\n .reduce(intoRels, {});\n};\n","// js/phoenix/utils.js\nvar closure = (value) => {\n if (typeof value === \"function\") {\n return value;\n } else {\n let closure2 = function() {\n return value;\n };\n return closure2;\n }\n};\n\n// js/phoenix/constants.js\nvar globalSelf = typeof self !== \"undefined\" ? self : null;\nvar phxWindow = typeof window !== \"undefined\" ? window : null;\nvar global = globalSelf || phxWindow || void 0;\nvar DEFAULT_VSN = \"2.0.0\";\nvar SOCKET_STATES = { connecting: 0, open: 1, closing: 2, closed: 3 };\nvar DEFAULT_TIMEOUT = 1e4;\nvar WS_CLOSE_NORMAL = 1e3;\nvar CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\"\n};\nvar CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n};\nvar TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n};\nvar XHR_STATES = {\n complete: 4\n};\n\n// js/phoenix/push.js\nvar Push = class {\n constructor(channel, event, payload, timeout) {\n this.channel = channel;\n this.event = event;\n this.payload = payload || function() {\n return {};\n };\n this.receivedResp = null;\n this.timeout = timeout;\n this.timeoutTimer = null;\n this.recHooks = [];\n this.sent = false;\n }\n resend(timeout) {\n this.timeout = timeout;\n this.reset();\n this.send();\n }\n send() {\n if (this.hasReceived(\"timeout\")) {\n return;\n }\n this.startTimeout();\n this.sent = true;\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n });\n }\n receive(status, callback) {\n if (this.hasReceived(status)) {\n callback(this.receivedResp.response);\n }\n this.recHooks.push({ status, callback });\n return this;\n }\n reset() {\n this.cancelRefEvent();\n this.ref = null;\n this.refEvent = null;\n this.receivedResp = null;\n this.sent = false;\n }\n matchReceive({ status, response, _ref }) {\n this.recHooks.filter((h) => h.status === status).forEach((h) => h.callback(response));\n }\n cancelRefEvent() {\n if (!this.refEvent) {\n return;\n }\n this.channel.off(this.refEvent);\n }\n cancelTimeout() {\n clearTimeout(this.timeoutTimer);\n this.timeoutTimer = null;\n }\n startTimeout() {\n if (this.timeoutTimer) {\n this.cancelTimeout();\n }\n this.ref = this.channel.socket.makeRef();\n this.refEvent = this.channel.replyEventName(this.ref);\n this.channel.on(this.refEvent, (payload) => {\n this.cancelRefEvent();\n this.cancelTimeout();\n this.receivedResp = payload;\n this.matchReceive(payload);\n });\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {});\n }, this.timeout);\n }\n hasReceived(status) {\n return this.receivedResp && this.receivedResp.status === status;\n }\n trigger(status, response) {\n this.channel.trigger(this.refEvent, { status, response });\n }\n};\n\n// js/phoenix/timer.js\nvar Timer = class {\n constructor(callback, timerCalc) {\n this.callback = callback;\n this.timerCalc = timerCalc;\n this.timer = null;\n this.tries = 0;\n }\n reset() {\n this.tries = 0;\n clearTimeout(this.timer);\n }\n scheduleTimeout() {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1;\n this.callback();\n }, this.timerCalc(this.tries + 1));\n }\n};\n\n// js/phoenix/channel.js\nvar Channel = class {\n constructor(topic, params, socket) {\n this.state = CHANNEL_STATES.closed;\n this.topic = topic;\n this.params = closure(params || {});\n this.socket = socket;\n this.bindings = [];\n this.bindingRef = 0;\n this.timeout = this.socket.timeout;\n this.joinedOnce = false;\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout);\n this.pushBuffer = [];\n this.stateChangeRefs = [];\n this.rejoinTimer = new Timer(() => {\n if (this.socket.isConnected()) {\n this.rejoin();\n }\n }, this.socket.rejoinAfterMs);\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()));\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset();\n if (this.isErrored()) {\n this.rejoin();\n }\n }));\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined;\n this.rejoinTimer.reset();\n this.pushBuffer.forEach((pushEvent) => pushEvent.send());\n this.pushBuffer = [];\n });\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored;\n if (this.socket.isConnected()) {\n this.rejoinTimer.scheduleTimeout();\n }\n });\n this.onClose(() => {\n this.rejoinTimer.reset();\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`);\n this.state = CHANNEL_STATES.closed;\n this.socket.remove(this);\n });\n this.onError((reason) => {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `error ${this.topic}`, reason);\n if (this.isJoining()) {\n this.joinPush.reset();\n }\n this.state = CHANNEL_STATES.errored;\n if (this.socket.isConnected()) {\n this.rejoinTimer.scheduleTimeout();\n }\n });\n this.joinPush.receive(\"timeout\", () => {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout);\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout);\n leavePush.send();\n this.state = CHANNEL_STATES.errored;\n this.joinPush.reset();\n if (this.socket.isConnected()) {\n this.rejoinTimer.scheduleTimeout();\n }\n });\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload);\n });\n }\n join(timeout = this.timeout) {\n if (this.joinedOnce) {\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\");\n } else {\n this.timeout = timeout;\n this.joinedOnce = true;\n this.rejoin();\n return this.joinPush;\n }\n }\n onClose(callback) {\n this.on(CHANNEL_EVENTS.close, callback);\n }\n onError(callback) {\n return this.on(CHANNEL_EVENTS.error, (reason) => callback(reason));\n }\n on(event, callback) {\n let ref = this.bindingRef++;\n this.bindings.push({ event, ref, callback });\n return ref;\n }\n off(event, ref) {\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref));\n });\n }\n canPush() {\n return this.socket.isConnected() && this.isJoined();\n }\n push(event, payload, timeout = this.timeout) {\n payload = payload || {};\n if (!this.joinedOnce) {\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`);\n }\n let pushEvent = new Push(this, event, function() {\n return payload;\n }, timeout);\n if (this.canPush()) {\n pushEvent.send();\n } else {\n pushEvent.startTimeout();\n this.pushBuffer.push(pushEvent);\n }\n return pushEvent;\n }\n leave(timeout = this.timeout) {\n this.rejoinTimer.reset();\n this.joinPush.cancelTimeout();\n this.state = CHANNEL_STATES.leaving;\n let onClose = () => {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `leave ${this.topic}`);\n this.trigger(CHANNEL_EVENTS.close, \"leave\");\n };\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout);\n leavePush.receive(\"ok\", () => onClose()).receive(\"timeout\", () => onClose());\n leavePush.send();\n if (!this.canPush()) {\n leavePush.trigger(\"ok\", {});\n }\n return leavePush;\n }\n onMessage(_event, payload, _ref) {\n return payload;\n }\n isMember(topic, event, payload, joinRef) {\n if (this.topic !== topic) {\n return false;\n }\n if (joinRef && joinRef !== this.joinRef()) {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", \"dropping outdated message\", { topic, event, payload, joinRef });\n return false;\n } else {\n return true;\n }\n }\n joinRef() {\n return this.joinPush.ref;\n }\n rejoin(timeout = this.timeout) {\n if (this.isLeaving()) {\n return;\n }\n this.socket.leaveOpenTopic(this.topic);\n this.state = CHANNEL_STATES.joining;\n this.joinPush.resend(timeout);\n }\n trigger(event, payload, ref, joinRef) {\n let handledPayload = this.onMessage(event, payload, ref, joinRef);\n if (payload && !handledPayload) {\n throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\");\n }\n let eventBindings = this.bindings.filter((bind) => bind.event === event);\n for (let i = 0; i < eventBindings.length; i++) {\n let bind = eventBindings[i];\n bind.callback(handledPayload, ref, joinRef || this.joinRef());\n }\n }\n replyEventName(ref) {\n return `chan_reply_${ref}`;\n }\n isClosed() {\n return this.state === CHANNEL_STATES.closed;\n }\n isErrored() {\n return this.state === CHANNEL_STATES.errored;\n }\n isJoined() {\n return this.state === CHANNEL_STATES.joined;\n }\n isJoining() {\n return this.state === CHANNEL_STATES.joining;\n }\n isLeaving() {\n return this.state === CHANNEL_STATES.leaving;\n }\n};\n\n// js/phoenix/ajax.js\nvar Ajax = class {\n static request(method, endPoint, accept, body, timeout, ontimeout, callback) {\n if (global.XDomainRequest) {\n let req = new global.XDomainRequest();\n this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback);\n } else {\n let req = new global.XMLHttpRequest();\n this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback);\n }\n }\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback) {\n req.timeout = timeout;\n req.open(method, endPoint);\n req.onload = () => {\n let response = this.parseJSON(req.responseText);\n callback && callback(response);\n };\n if (ontimeout) {\n req.ontimeout = ontimeout;\n }\n req.onprogress = () => {\n };\n req.send(body);\n }\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback) {\n req.open(method, endPoint, true);\n req.timeout = timeout;\n req.setRequestHeader(\"Content-Type\", accept);\n req.onerror = () => {\n callback && callback(null);\n };\n req.onreadystatechange = () => {\n if (req.readyState === XHR_STATES.complete && callback) {\n let response = this.parseJSON(req.responseText);\n callback(response);\n }\n };\n if (ontimeout) {\n req.ontimeout = ontimeout;\n }\n req.send(body);\n }\n static parseJSON(resp) {\n if (!resp || resp === \"\") {\n return null;\n }\n try {\n return JSON.parse(resp);\n } catch (e) {\n console && console.log(\"failed to parse JSON response\", resp);\n return null;\n }\n }\n static serialize(obj, parentKey) {\n let queryStr = [];\n for (var key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n continue;\n }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key;\n let paramVal = obj[key];\n if (typeof paramVal === \"object\") {\n queryStr.push(this.serialize(paramVal, paramKey));\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal));\n }\n }\n return queryStr.join(\"&\");\n }\n static appendParams(url, params) {\n if (Object.keys(params).length === 0) {\n return url;\n }\n let prefix = url.match(/\\?/) ? \"&\" : \"?\";\n return `${url}${prefix}${this.serialize(params)}`;\n }\n};\n\n// js/phoenix/longpoll.js\nvar LongPoll = class {\n constructor(endPoint) {\n this.endPoint = null;\n this.token = null;\n this.skipHeartbeat = true;\n this.onopen = function() {\n };\n this.onerror = function() {\n };\n this.onmessage = function() {\n };\n this.onclose = function() {\n };\n this.pollEndpoint = this.normalizeEndpoint(endPoint);\n this.readyState = SOCKET_STATES.connecting;\n this.poll();\n }\n normalizeEndpoint(endPoint) {\n return endPoint.replace(\"ws://\", \"http://\").replace(\"wss://\", \"https://\").replace(new RegExp(\"(.*)/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll);\n }\n endpointURL() {\n return Ajax.appendParams(this.pollEndpoint, { token: this.token });\n }\n closeAndRetry() {\n this.close();\n this.readyState = SOCKET_STATES.connecting;\n }\n ontimeout() {\n this.onerror(\"timeout\");\n this.closeAndRetry();\n }\n poll() {\n if (!(this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting)) {\n return;\n }\n Ajax.request(\"GET\", this.endpointURL(), \"application/json\", null, this.timeout, this.ontimeout.bind(this), (resp) => {\n if (resp) {\n var { status, token, messages } = resp;\n this.token = token;\n } else {\n status = 0;\n }\n switch (status) {\n case 200:\n messages.forEach((msg) => {\n setTimeout(() => {\n this.onmessage({ data: msg });\n }, 0);\n });\n this.poll();\n break;\n case 204:\n this.poll();\n break;\n case 410:\n this.readyState = SOCKET_STATES.open;\n this.onopen();\n this.poll();\n break;\n case 403:\n this.onerror();\n this.close();\n break;\n case 0:\n case 500:\n this.onerror();\n this.closeAndRetry();\n break;\n default:\n throw new Error(`unhandled poll status ${status}`);\n }\n });\n }\n send(body) {\n Ajax.request(\"POST\", this.endpointURL(), \"application/json\", body, this.timeout, this.onerror.bind(this, \"timeout\"), (resp) => {\n if (!resp || resp.status !== 200) {\n this.onerror(resp && resp.status);\n this.closeAndRetry();\n }\n });\n }\n close(_code, _reason) {\n this.readyState = SOCKET_STATES.closed;\n this.onclose();\n }\n};\n\n// js/phoenix/presence.js\nvar Presence = class {\n constructor(channel, opts = {}) {\n let events = opts.events || { state: \"presence_state\", diff: \"presence_diff\" };\n this.state = {};\n this.pendingDiffs = [];\n this.channel = channel;\n this.joinRef = null;\n this.caller = {\n onJoin: function() {\n },\n onLeave: function() {\n },\n onSync: function() {\n }\n };\n this.channel.on(events.state, (newState) => {\n let { onJoin, onLeave, onSync } = this.caller;\n this.joinRef = this.channel.joinRef();\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave);\n this.pendingDiffs.forEach((diff) => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave);\n });\n this.pendingDiffs = [];\n onSync();\n });\n this.channel.on(events.diff, (diff) => {\n let { onJoin, onLeave, onSync } = this.caller;\n if (this.inPendingSyncState()) {\n this.pendingDiffs.push(diff);\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave);\n onSync();\n }\n });\n }\n onJoin(callback) {\n this.caller.onJoin = callback;\n }\n onLeave(callback) {\n this.caller.onLeave = callback;\n }\n onSync(callback) {\n this.caller.onSync = callback;\n }\n list(by) {\n return Presence.list(this.state, by);\n }\n inPendingSyncState() {\n return !this.joinRef || this.joinRef !== this.channel.joinRef();\n }\n static syncState(currentState, newState, onJoin, onLeave) {\n let state = this.clone(currentState);\n let joins = {};\n let leaves = {};\n this.map(state, (key, presence) => {\n if (!newState[key]) {\n leaves[key] = presence;\n }\n });\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key];\n if (currentPresence) {\n let newRefs = newPresence.metas.map((m) => m.phx_ref);\n let curRefs = currentPresence.metas.map((m) => m.phx_ref);\n let joinedMetas = newPresence.metas.filter((m) => curRefs.indexOf(m.phx_ref) < 0);\n let leftMetas = currentPresence.metas.filter((m) => newRefs.indexOf(m.phx_ref) < 0);\n if (joinedMetas.length > 0) {\n joins[key] = newPresence;\n joins[key].metas = joinedMetas;\n }\n if (leftMetas.length > 0) {\n leaves[key] = this.clone(currentPresence);\n leaves[key].metas = leftMetas;\n }\n } else {\n joins[key] = newPresence;\n }\n });\n return this.syncDiff(state, { joins, leaves }, onJoin, onLeave);\n }\n static syncDiff(state, diff, onJoin, onLeave) {\n let { joins, leaves } = this.clone(diff);\n if (!onJoin) {\n onJoin = function() {\n };\n }\n if (!onLeave) {\n onLeave = function() {\n };\n }\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key];\n state[key] = this.clone(newPresence);\n if (currentPresence) {\n let joinedRefs = state[key].metas.map((m) => m.phx_ref);\n let curMetas = currentPresence.metas.filter((m) => joinedRefs.indexOf(m.phx_ref) < 0);\n state[key].metas.unshift(...curMetas);\n }\n onJoin(key, currentPresence, newPresence);\n });\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key];\n if (!currentPresence) {\n return;\n }\n let refsToRemove = leftPresence.metas.map((m) => m.phx_ref);\n currentPresence.metas = currentPresence.metas.filter((p) => {\n return refsToRemove.indexOf(p.phx_ref) < 0;\n });\n onLeave(key, currentPresence, leftPresence);\n if (currentPresence.metas.length === 0) {\n delete state[key];\n }\n });\n return state;\n }\n static list(presences, chooser) {\n if (!chooser) {\n chooser = function(key, pres) {\n return pres;\n };\n }\n return this.map(presences, (key, presence) => {\n return chooser(key, presence);\n });\n }\n static map(obj, func) {\n return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]));\n }\n static clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n }\n};\n\n// js/phoenix/serializer.js\nvar serializer_default = {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: { push: 0, reply: 1, broadcast: 2 },\n encode(msg, callback) {\n if (msg.payload.constructor === ArrayBuffer) {\n return callback(this.binaryEncode(msg));\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload];\n return callback(JSON.stringify(payload));\n }\n },\n decode(rawPayload, callback) {\n if (rawPayload.constructor === ArrayBuffer) {\n return callback(this.binaryDecode(rawPayload));\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload);\n return callback({ join_ref, ref, topic, event, payload });\n }\n },\n binaryEncode(message) {\n let { join_ref, ref, event, topic, payload } = message;\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length;\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength);\n let view = new DataView(header);\n let offset = 0;\n view.setUint8(offset++, this.KINDS.push);\n view.setUint8(offset++, join_ref.length);\n view.setUint8(offset++, ref.length);\n view.setUint8(offset++, topic.length);\n view.setUint8(offset++, event.length);\n Array.from(join_ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n Array.from(ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n Array.from(topic, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n Array.from(event, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n var combined = new Uint8Array(header.byteLength + payload.byteLength);\n combined.set(new Uint8Array(header), 0);\n combined.set(new Uint8Array(payload), header.byteLength);\n return combined.buffer;\n },\n binaryDecode(buffer) {\n let view = new DataView(buffer);\n let kind = view.getUint8(0);\n let decoder = new TextDecoder();\n switch (kind) {\n case this.KINDS.push:\n return this.decodePush(buffer, view, decoder);\n case this.KINDS.reply:\n return this.decodeReply(buffer, view, decoder);\n case this.KINDS.broadcast:\n return this.decodeBroadcast(buffer, view, decoder);\n }\n },\n decodePush(buffer, view, decoder) {\n let joinRefSize = view.getUint8(1);\n let topicSize = view.getUint8(2);\n let eventSize = view.getUint8(3);\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1;\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize));\n offset = offset + joinRefSize;\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n offset = offset + topicSize;\n let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n offset = offset + eventSize;\n let data = buffer.slice(offset, buffer.byteLength);\n return { join_ref: joinRef, ref: null, topic, event, payload: data };\n },\n decodeReply(buffer, view, decoder) {\n let joinRefSize = view.getUint8(1);\n let refSize = view.getUint8(2);\n let topicSize = view.getUint8(3);\n let eventSize = view.getUint8(4);\n let offset = this.HEADER_LENGTH + this.META_LENGTH;\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize));\n offset = offset + joinRefSize;\n let ref = decoder.decode(buffer.slice(offset, offset + refSize));\n offset = offset + refSize;\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n offset = offset + topicSize;\n let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n offset = offset + eventSize;\n let data = buffer.slice(offset, buffer.byteLength);\n let payload = { status: event, response: data };\n return { join_ref: joinRef, ref, topic, event: CHANNEL_EVENTS.reply, payload };\n },\n decodeBroadcast(buffer, view, decoder) {\n let topicSize = view.getUint8(1);\n let eventSize = view.getUint8(2);\n let offset = this.HEADER_LENGTH + 2;\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n offset = offset + topicSize;\n let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n offset = offset + eventSize;\n let data = buffer.slice(offset, buffer.byteLength);\n return { join_ref: null, ref: null, topic, event, payload: data };\n }\n};\n\n// js/phoenix/socket.js\nvar Socket = class {\n constructor(endPoint, opts = {}) {\n this.stateChangeCallbacks = { open: [], close: [], error: [], message: [] };\n this.channels = [];\n this.sendBuffer = [];\n this.ref = 0;\n this.timeout = opts.timeout || DEFAULT_TIMEOUT;\n this.transport = opts.transport || global.WebSocket || LongPoll;\n this.establishedConnections = 0;\n this.defaultEncoder = serializer_default.encode.bind(serializer_default);\n this.defaultDecoder = serializer_default.decode.bind(serializer_default);\n this.closeWasClean = false;\n this.binaryType = opts.binaryType || \"arraybuffer\";\n this.connectClock = 1;\n if (this.transport !== LongPoll) {\n this.encode = opts.encode || this.defaultEncoder;\n this.decode = opts.decode || this.defaultDecoder;\n } else {\n this.encode = this.defaultEncoder;\n this.decode = this.defaultDecoder;\n }\n let awaitingConnectionOnPageShow = null;\n if (phxWindow && phxWindow.addEventListener) {\n phxWindow.addEventListener(\"pagehide\", (_e) => {\n if (this.conn) {\n this.disconnect();\n awaitingConnectionOnPageShow = this.connectClock;\n }\n });\n phxWindow.addEventListener(\"pageshow\", (_e) => {\n if (awaitingConnectionOnPageShow === this.connectClock) {\n awaitingConnectionOnPageShow = null;\n this.connect();\n }\n });\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 3e4;\n this.rejoinAfterMs = (tries) => {\n if (opts.rejoinAfterMs) {\n return opts.rejoinAfterMs(tries);\n } else {\n return [1e3, 2e3, 5e3][tries - 1] || 1e4;\n }\n };\n this.reconnectAfterMs = (tries) => {\n if (opts.reconnectAfterMs) {\n return opts.reconnectAfterMs(tries);\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1e3, 2e3][tries - 1] || 5e3;\n }\n };\n this.logger = opts.logger || null;\n this.longpollerTimeout = opts.longpollerTimeout || 2e4;\n this.params = closure(opts.params || {});\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`;\n this.vsn = opts.vsn || DEFAULT_VSN;\n this.heartbeatTimer = null;\n this.pendingHeartbeatRef = null;\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect());\n }, this.reconnectAfterMs);\n }\n replaceTransport(newTransport) {\n this.disconnect();\n this.transport = newTransport;\n }\n protocol() {\n return location.protocol.match(/^https/) ? \"wss\" : \"ws\";\n }\n endPointURL() {\n let uri = Ajax.appendParams(Ajax.appendParams(this.endPoint, this.params()), { vsn: this.vsn });\n if (uri.charAt(0) !== \"/\") {\n return uri;\n }\n if (uri.charAt(1) === \"/\") {\n return `${this.protocol()}:${uri}`;\n }\n return `${this.protocol()}://${location.host}${uri}`;\n }\n disconnect(callback, code, reason) {\n this.connectClock++;\n this.closeWasClean = true;\n this.reconnectTimer.reset();\n this.teardown(callback, code, reason);\n }\n connect(params) {\n this.connectClock++;\n if (params) {\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\");\n this.params = closure(params);\n }\n if (this.conn) {\n return;\n }\n this.closeWasClean = false;\n this.conn = new this.transport(this.endPointURL());\n this.conn.binaryType = this.binaryType;\n this.conn.timeout = this.longpollerTimeout;\n this.conn.onopen = () => this.onConnOpen();\n this.conn.onerror = (error) => this.onConnError(error);\n this.conn.onmessage = (event) => this.onConnMessage(event);\n this.conn.onclose = (event) => this.onConnClose(event);\n }\n log(kind, msg, data) {\n this.logger(kind, msg, data);\n }\n hasLogger() {\n return this.logger !== null;\n }\n onOpen(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.open.push([ref, callback]);\n return ref;\n }\n onClose(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.close.push([ref, callback]);\n return ref;\n }\n onError(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.error.push([ref, callback]);\n return ref;\n }\n onMessage(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.message.push([ref, callback]);\n return ref;\n }\n onConnOpen() {\n if (this.hasLogger())\n this.log(\"transport\", `connected to ${this.endPointURL()}`);\n this.closeWasClean = false;\n this.establishedConnections++;\n this.flushSendBuffer();\n this.reconnectTimer.reset();\n this.resetHeartbeat();\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback());\n }\n heartbeatTimeout() {\n if (this.pendingHeartbeatRef) {\n this.pendingHeartbeatRef = null;\n if (this.hasLogger()) {\n this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\");\n }\n this.abnormalClose(\"heartbeat timeout\");\n }\n }\n resetHeartbeat() {\n if (this.conn && this.conn.skipHeartbeat) {\n return;\n }\n this.pendingHeartbeatRef = null;\n clearTimeout(this.heartbeatTimer);\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs);\n }\n teardown(callback, code, reason) {\n if (!this.conn) {\n return callback && callback();\n }\n this.waitForBufferDone(() => {\n if (this.conn) {\n if (code) {\n this.conn.close(code, reason || \"\");\n } else {\n this.conn.close();\n }\n }\n this.waitForSocketClosed(() => {\n if (this.conn) {\n this.conn.onclose = function() {\n };\n this.conn = null;\n }\n callback && callback();\n });\n });\n }\n waitForBufferDone(callback, tries = 1) {\n if (tries === 5 || !this.conn || !this.conn.bufferedAmount) {\n callback();\n return;\n }\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1);\n }, 150 * tries);\n }\n waitForSocketClosed(callback, tries = 1) {\n if (tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed) {\n callback();\n return;\n }\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1);\n }, 150 * tries);\n }\n onConnClose(event) {\n if (this.hasLogger())\n this.log(\"transport\", \"close\", event);\n this.triggerChanError();\n clearTimeout(this.heartbeatTimer);\n if (!this.closeWasClean) {\n this.reconnectTimer.scheduleTimeout();\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event));\n }\n onConnError(error) {\n if (this.hasLogger())\n this.log(\"transport\", error);\n let transportBefore = this.transport;\n let establishedBefore = this.establishedConnections;\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore);\n });\n if (transportBefore === this.transport || establishedBefore > 0) {\n this.triggerChanError();\n }\n }\n triggerChanError() {\n this.channels.forEach((channel) => {\n if (!(channel.isErrored() || channel.isLeaving() || channel.isClosed())) {\n channel.trigger(CHANNEL_EVENTS.error);\n }\n });\n }\n connectionState() {\n switch (this.conn && this.conn.readyState) {\n case SOCKET_STATES.connecting:\n return \"connecting\";\n case SOCKET_STATES.open:\n return \"open\";\n case SOCKET_STATES.closing:\n return \"closing\";\n default:\n return \"closed\";\n }\n }\n isConnected() {\n return this.connectionState() === \"open\";\n }\n remove(channel) {\n this.off(channel.stateChangeRefs);\n this.channels = this.channels.filter((c) => c.joinRef() !== channel.joinRef());\n }\n off(refs) {\n for (let key in this.stateChangeCallbacks) {\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1;\n });\n }\n }\n channel(topic, chanParams = {}) {\n let chan = new Channel(topic, chanParams, this);\n this.channels.push(chan);\n return chan;\n }\n push(data) {\n if (this.hasLogger()) {\n let { topic, event, payload, ref, join_ref } = data;\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload);\n }\n if (this.isConnected()) {\n this.encode(data, (result) => this.conn.send(result));\n } else {\n this.sendBuffer.push(() => this.encode(data, (result) => this.conn.send(result)));\n }\n }\n makeRef() {\n let newRef = this.ref + 1;\n if (newRef === this.ref) {\n this.ref = 0;\n } else {\n this.ref = newRef;\n }\n return this.ref.toString();\n }\n sendHeartbeat() {\n if (this.pendingHeartbeatRef && !this.isConnected()) {\n return;\n }\n this.pendingHeartbeatRef = this.makeRef();\n this.push({ topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef });\n this.heartbeatTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs);\n }\n abnormalClose(reason) {\n this.closeWasClean = false;\n if (this.isConnected()) {\n this.conn.close(WS_CLOSE_NORMAL, reason);\n }\n }\n flushSendBuffer() {\n if (this.isConnected() && this.sendBuffer.length > 0) {\n this.sendBuffer.forEach((callback) => callback());\n this.sendBuffer = [];\n }\n }\n onConnMessage(rawMessage) {\n this.decode(rawMessage.data, (msg) => {\n let { topic, event, payload, ref, join_ref } = msg;\n if (ref && ref === this.pendingHeartbeatRef) {\n clearTimeout(this.heartbeatTimer);\n this.pendingHeartbeatRef = null;\n setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs);\n }\n if (this.hasLogger())\n this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload);\n for (let i = 0; i < this.channels.length; i++) {\n const channel = this.channels[i];\n if (!channel.isMember(topic, event, payload, join_ref)) {\n continue;\n }\n channel.trigger(event, payload, ref, join_ref);\n }\n for (let i = 0; i < this.stateChangeCallbacks.message.length; i++) {\n let [, callback] = this.stateChangeCallbacks.message[i];\n callback(msg);\n }\n });\n }\n leaveOpenTopic(topic) {\n let dupChannel = this.channels.find((c) => c.topic === topic && (c.isJoined() || c.isJoining()));\n if (dupChannel) {\n if (this.hasLogger())\n this.log(\"transport\", `leaving duplicate topic \"${topic}\"`);\n dupChannel.leave();\n }\n }\n};\nexport {\n Channel,\n LongPoll,\n Presence,\n serializer_default as Serializer,\n Socket\n};\n//# sourceMappingURL=phoenix.esm.js.map\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","var serviceWorkerOption = {\"scriptURL\":\"/sw-pleroma.js\"};\n \"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable flowtype/require-valid-file-annotation */\n/* global serviceWorkerOption */\n\nexports.default = {\n register: function register() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (navigator.serviceWorker) {\n return navigator.serviceWorker.register(serviceWorkerOption.scriptURL, options);\n }\n\n return false;\n }\n};\nmodule.exports = exports[\"default\"];","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","/*!\n * shared v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n/**\r\n * Original Utilities\r\n * written by kazuya kawaguchi\r\n */\r\nconst inBrowser = typeof window !== 'undefined';\r\nlet mark;\r\nlet measure;\r\nif ((process.env.NODE_ENV !== 'production')) {\r\n const perf = inBrowser && window.performance;\r\n if (perf &&\r\n perf.mark &&\r\n perf.measure &&\r\n perf.clearMarks &&\r\n perf.clearMeasures) {\r\n mark = (tag) => perf.mark(tag);\r\n measure = (name, startTag, endTag) => {\r\n perf.measure(name, startTag, endTag);\r\n perf.clearMarks(startTag);\r\n perf.clearMarks(endTag);\r\n };\r\n }\r\n}\r\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\r\n/* eslint-disable */\r\nfunction format(message, ...args) {\r\n if (args.length === 1 && isObject(args[0])) {\r\n args = args[0];\r\n }\r\n if (!args || !args.hasOwnProperty) {\r\n args = {};\r\n }\r\n return message.replace(RE_ARGS, (match, identifier) => {\r\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\r\n });\r\n}\r\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\r\nconst makeSymbol = (name) => hasSymbol ? Symbol(name) : name;\r\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\r\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\r\n .replace(/\\u2028/g, '\\\\u2028')\r\n .replace(/\\u2029/g, '\\\\u2029')\r\n .replace(/\\u0027/g, '\\\\u0027');\r\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\r\nconst isDate = (val) => toTypeString(val) === '[object Date]';\r\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\r\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\r\nfunction warn(msg, err) {\r\n if (typeof console !== 'undefined') {\r\n console.warn(`[intlify] ` + msg);\r\n /* istanbul ignore if */\r\n if (err) {\r\n console.warn(err.stack);\r\n }\r\n }\r\n}\r\nconst assign = Object.assign;\r\nlet _globalThis;\r\nconst getGlobalThis = () => {\r\n // prettier-ignore\r\n return (_globalThis ||\r\n (_globalThis =\r\n typeof globalThis !== 'undefined'\r\n ? globalThis\r\n : typeof self !== 'undefined'\r\n ? self\r\n : typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : {}));\r\n};\r\nfunction escapeHtml(rawText) {\r\n return rawText\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&apos;');\r\n}\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nfunction hasOwn(obj, key) {\r\n return hasOwnProperty.call(obj, key);\r\n}\r\n/* eslint-enable */\r\n/**\r\n * Useful Utilities By Evan you\r\n * Modified by kazuya kawaguchi\r\n * MIT License\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\r\n */\r\nconst isArray = Array.isArray;\r\nconst isFunction = (val) => typeof val === 'function';\r\nconst isString = (val) => typeof val === 'string';\r\nconst isBoolean = (val) => typeof val === 'boolean';\r\nconst isSymbol = (val) => typeof val === 'symbol';\r\nconst isObject = (val) => // eslint-disable-line\r\n val !== null && typeof val === 'object';\r\nconst isPromise = (val) => {\r\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n};\r\nconst objectToString = Object.prototype.toString;\r\nconst toTypeString = (value) => objectToString.call(value);\r\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\r\n// for converting list and named values to displayed strings.\r\nconst toDisplayString = (val) => {\r\n return val == null\r\n ? ''\r\n : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\r\n ? JSON.stringify(val, null, 2)\r\n : String(val);\r\n};\r\nconst RANGE = 2;\r\nfunction generateCodeFrame(source, start = 0, end = source.length) {\r\n const lines = source.split(/\\r?\\n/);\r\n let count = 0;\r\n const res = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n count += lines[i].length + 1;\r\n if (count >= start) {\r\n for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\r\n if (j < 0 || j >= lines.length)\r\n continue;\r\n const line = j + 1;\r\n res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\r\n const lineLength = lines[j].length;\r\n if (j === i) {\r\n // push underline\r\n const pad = start - (count - lineLength) + 1;\r\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\r\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\r\n }\r\n else if (j > i) {\r\n if (end > count) {\r\n const length = Math.max(Math.min(end - count, lineLength), 1);\r\n res.push(` | ` + '^'.repeat(length));\r\n }\r\n count += lineLength + 1;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n return res.join('\\n');\r\n}\n\n/**\r\n * Event emitter, forked from the below:\r\n * - original repository url: https://github.com/developit/mitt\r\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\r\n * - author: Jason Miller (https://github.com/developit)\r\n * - license: MIT\r\n */\r\n/**\r\n * Create a event emitter\r\n *\r\n * @returns An event emitter\r\n */\r\nfunction createEmitter() {\r\n const events = new Map();\r\n const emitter = {\r\n events,\r\n on(event, handler) {\r\n const handlers = events.get(event);\r\n const added = handlers && handlers.push(handler);\r\n if (!added) {\r\n events.set(event, [handler]);\r\n }\r\n },\r\n off(event, handler) {\r\n const handlers = events.get(event);\r\n if (handlers) {\r\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\r\n }\r\n },\r\n emit(event, payload) {\r\n (events.get(event) || [])\r\n .slice()\r\n .map(handler => handler(payload));\r\n (events.get('*') || [])\r\n .slice()\r\n .map(handler => handler(event, payload));\r\n }\r\n };\r\n return emitter;\r\n}\n\nexport { assign, createEmitter, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, makeSymbol, mark, measure, objectToString, toDisplayString, toTypeString, warn };\n","/*!\n * message-compiler v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { format, assign, isString } from '@intlify/shared';\n\nconst CompileErrorCodes = {\r\n // tokenizer error codes\r\n EXPECTED_TOKEN: 1,\r\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\r\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\r\n UNKNOWN_ESCAPE_SEQUENCE: 4,\r\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\r\n UNBALANCED_CLOSING_BRACE: 6,\r\n UNTERMINATED_CLOSING_BRACE: 7,\r\n EMPTY_PLACEHOLDER: 8,\r\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\r\n INVALID_LINKED_FORMAT: 10,\r\n // parser error codes\r\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\r\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\r\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\r\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\r\n // Special value for higher-order compilers to pick up the last code\r\n // to avoid collision of error codes. This should always be kept as the last\r\n // item.\r\n __EXTEND_POINT__: 15\r\n};\r\n/** @internal */\r\nconst errorMessages = {\r\n // tokenizer error messages\r\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\r\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\r\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\r\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\r\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\r\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\r\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\r\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\r\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\r\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\r\n // parser error messages\r\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\r\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`\r\n};\r\nfunction createCompileError(code, loc, options = {}) {\r\n const { domain, messages, args } = options;\r\n const msg = (process.env.NODE_ENV !== 'production')\r\n ? format((messages || errorMessages)[code] || '', ...(args || []))\r\n : code;\r\n const error = new SyntaxError(String(msg));\r\n error.code = code;\r\n if (loc) {\r\n error.location = loc;\r\n }\r\n error.domain = domain;\r\n return error;\r\n}\r\n/** @internal */\r\nfunction defaultOnError(error) {\r\n throw error;\r\n}\n\nconst LocationStub = {\r\n start: { line: 1, column: 1, offset: 0 },\r\n end: { line: 1, column: 1, offset: 0 }\r\n};\r\nfunction createPosition(line, column, offset) {\r\n return { line, column, offset };\r\n}\r\nfunction createLocation(start, end, source) {\r\n const loc = { start, end };\r\n if (source != null) {\r\n loc.source = source;\r\n }\r\n return loc;\r\n}\n\nconst CHAR_SP = ' ';\r\nconst CHAR_CR = '\\r';\r\nconst CHAR_LF = '\\n';\r\nconst CHAR_LS = String.fromCharCode(0x2028);\r\nconst CHAR_PS = String.fromCharCode(0x2029);\r\nfunction createScanner(str) {\r\n const _buf = str;\r\n let _index = 0;\r\n let _line = 1;\r\n let _column = 1;\r\n let _peekOffset = 0;\r\n const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\r\n const isLF = (index) => _buf[index] === CHAR_LF;\r\n const isPS = (index) => _buf[index] === CHAR_PS;\r\n const isLS = (index) => _buf[index] === CHAR_LS;\r\n const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\r\n const index = () => _index;\r\n const line = () => _line;\r\n const column = () => _column;\r\n const peekOffset = () => _peekOffset;\r\n const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\r\n const currentChar = () => charAt(_index);\r\n const currentPeek = () => charAt(_index + _peekOffset);\r\n function next() {\r\n _peekOffset = 0;\r\n if (isLineEnd(_index)) {\r\n _line++;\r\n _column = 0;\r\n }\r\n if (isCRLF(_index)) {\r\n _index++;\r\n }\r\n _index++;\r\n _column++;\r\n return _buf[_index];\r\n }\r\n function peek() {\r\n if (isCRLF(_index + _peekOffset)) {\r\n _peekOffset++;\r\n }\r\n _peekOffset++;\r\n return _buf[_index + _peekOffset];\r\n }\r\n function reset() {\r\n _index = 0;\r\n _line = 1;\r\n _column = 1;\r\n _peekOffset = 0;\r\n }\r\n function resetPeek(offset = 0) {\r\n _peekOffset = offset;\r\n }\r\n function skipToPeek() {\r\n const target = _index + _peekOffset;\r\n // eslint-disable-next-line no-unmodified-loop-condition\r\n while (target !== _index) {\r\n next();\r\n }\r\n _peekOffset = 0;\r\n }\r\n return {\r\n index,\r\n line,\r\n column,\r\n peekOffset,\r\n charAt,\r\n currentChar,\r\n currentPeek,\r\n next,\r\n peek,\r\n reset,\r\n resetPeek,\r\n skipToPeek\r\n };\r\n}\n\nconst EOF = undefined;\r\nconst LITERAL_DELIMITER = \"'\";\r\nconst ERROR_DOMAIN$1 = 'tokenizer';\r\nfunction createTokenizer(source, options = {}) {\r\n const location = options.location !== false;\r\n const _scnr = createScanner(source);\r\n const currentOffset = () => _scnr.index();\r\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\r\n const _initLoc = currentPosition();\r\n const _initOffset = currentOffset();\r\n const _context = {\r\n currentType: 14 /* EOF */,\r\n offset: _initOffset,\r\n startLoc: _initLoc,\r\n endLoc: _initLoc,\r\n lastType: 14 /* EOF */,\r\n lastOffset: _initOffset,\r\n lastStartLoc: _initLoc,\r\n lastEndLoc: _initLoc,\r\n braceNest: 0,\r\n inLinked: false,\r\n text: ''\r\n };\r\n const context = () => _context;\r\n const { onError } = options;\r\n function emitError(code, pos, offset, ...args) {\r\n const ctx = context();\r\n pos.column += offset;\r\n pos.offset += offset;\r\n if (onError) {\r\n const loc = createLocation(ctx.startLoc, pos);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN$1,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function getToken(context, type, value) {\r\n context.endLoc = currentPosition();\r\n context.currentType = type;\r\n const token = { type };\r\n if (location) {\r\n token.loc = createLocation(context.startLoc, context.endLoc);\r\n }\r\n if (value != null) {\r\n token.value = value;\r\n }\r\n return token;\r\n }\r\n const getEndToken = (context) => getToken(context, 14 /* EOF */);\r\n function eat(scnr, ch) {\r\n if (scnr.currentChar() === ch) {\r\n scnr.next();\r\n return ch;\r\n }\r\n else {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function peekSpaces(scnr) {\r\n let buf = '';\r\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\r\n buf += scnr.currentPeek();\r\n scnr.peek();\r\n }\r\n return buf;\r\n }\r\n function skipSpaces(scnr) {\r\n const buf = peekSpaces(scnr);\r\n scnr.skipToPeek();\r\n return buf;\r\n }\r\n function isIdentifierStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n cc === 95 // _\r\n );\r\n }\r\n function isNumberStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n }\r\n function isNamedIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isListIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\r\n const ret = isNumberStart(ch);\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLiteralStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDotStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 8 /* LinkedAlias */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \".\" /* LinkedDot */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedModifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 9 /* LinkedDot */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDelimiterStart(scnr, context) {\r\n const { currentType } = context;\r\n if (!(currentType === 8 /* LinkedAlias */ ||\r\n currentType === 12 /* LinkedModifier */)) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \":\" /* LinkedDelimiter */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedReferStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 10 /* LinkedDelimiter */) {\r\n return false;\r\n }\r\n const fn = () => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return isIdentifierStart(scnr.peek());\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n ch === \":\" /* LinkedDelimiter */ ||\r\n ch === \".\" /* LinkedDot */ ||\r\n ch === CHAR_SP ||\r\n !ch) {\r\n return false;\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn();\r\n }\r\n else {\r\n // other characters\r\n return isIdentifierStart(ch);\r\n }\r\n };\r\n const ret = fn();\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isPluralStart(scnr) {\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"|\" /* Pipe */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function detectModuloStart(scnr) {\r\n const spaces = peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"%\" /* Modulo */ &&\r\n scnr.peek() === \"{\" /* BraceLeft */;\r\n scnr.resetPeek();\r\n return {\r\n isModulo: ret,\r\n hasSpace: spaces.length > 0\r\n };\r\n }\r\n function isTextStart(scnr, reset = true) {\r\n const fn = (hasSpace = false, prev = '', detectModulo = false) => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return prev === \"%\" /* Modulo */ ? false : hasSpace;\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ || !ch) {\r\n return prev === \"%\" /* Modulo */ ? true : hasSpace;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n scnr.peek();\r\n return fn(hasSpace, \"%\" /* Modulo */, true);\r\n }\r\n else if (ch === \"|\" /* Pipe */) {\r\n return prev === \"%\" /* Modulo */ || detectModulo\r\n ? true\r\n : !(prev === CHAR_SP || prev === CHAR_LF);\r\n }\r\n else if (ch === CHAR_SP) {\r\n scnr.peek();\r\n return fn(true, CHAR_SP, detectModulo);\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn(true, CHAR_LF, detectModulo);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n const ret = fn();\r\n reset && scnr.resetPeek();\r\n return ret;\r\n }\r\n function takeChar(scnr, fn) {\r\n const ch = scnr.currentChar();\r\n if (ch === EOF) {\r\n return EOF;\r\n }\r\n if (fn(ch)) {\r\n scnr.next();\r\n return ch;\r\n }\r\n return null;\r\n }\r\n function takeIdentifierChar(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n (cc >= 48 && cc <= 57) || // 0-9\r\n cc === 95 || // _\r\n cc === 36 // $\r\n );\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeHexDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 48 && cc <= 57) || // 0-9\r\n (cc >= 65 && cc <= 70) || // A-F\r\n (cc >= 97 && cc <= 102)); // a-f\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function getDigits(scnr) {\r\n let ch = '';\r\n let num = '';\r\n while ((ch = takeDigit(scnr))) {\r\n num += ch;\r\n }\r\n return num;\r\n }\r\n function readModulo(scnr) {\r\n skipSpaces(scnr);\r\n const ch = scnr.currentChar();\r\n if (ch !== \"%\" /* Modulo */) {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n }\r\n scnr.next();\r\n return \"%\" /* Modulo */;\r\n }\r\n function readText(scnr) {\r\n let buf = '';\r\n while (true) {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"}\" /* BraceRight */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n break;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else if (ch === CHAR_SP || ch === CHAR_LF) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else if (isPluralStart(scnr)) {\r\n break;\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n return buf;\r\n }\r\n function readNamedIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return name;\r\n }\r\n function readListIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let value = '';\r\n if (scnr.currentChar() === '-') {\r\n scnr.next();\r\n value += `-${getDigits(scnr)}`;\r\n }\r\n else {\r\n value += getDigits(scnr);\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return value;\r\n }\r\n function readLiteral(scnr) {\r\n skipSpaces(scnr);\r\n eat(scnr, `\\'`);\r\n let ch = '';\r\n let literal = '';\r\n const fn = (x) => x !== LITERAL_DELIMITER && x !== CHAR_LF;\r\n while ((ch = takeChar(scnr, fn))) {\r\n if (ch === '\\\\') {\r\n literal += readEscapeSequence(scnr);\r\n }\r\n else {\r\n literal += ch;\r\n }\r\n }\r\n const current = scnr.currentChar();\r\n if (current === CHAR_LF || current === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\r\n // TODO: Is it correct really?\r\n if (current === CHAR_LF) {\r\n scnr.next();\r\n eat(scnr, `\\'`);\r\n }\r\n return literal;\r\n }\r\n eat(scnr, `\\'`);\r\n return literal;\r\n }\r\n function readEscapeSequence(scnr) {\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case '\\\\':\r\n case `\\'`:\r\n scnr.next();\r\n return `\\\\${ch}`;\r\n case 'u':\r\n return readUnicodeEscapeSequence(scnr, ch, 4);\r\n case 'U':\r\n return readUnicodeEscapeSequence(scnr, ch, 6);\r\n default:\r\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\r\n eat(scnr, unicode);\r\n let sequence = '';\r\n for (let i = 0; i < digits; i++) {\r\n const ch = takeHexDigit(scnr);\r\n if (!ch) {\r\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\r\n break;\r\n }\r\n sequence += ch;\r\n }\r\n return `\\\\${unicode}${sequence}`;\r\n }\r\n function readInvalidIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let identifiers = '';\r\n const closure = (ch) => ch !== \"{\" /* BraceLeft */ &&\r\n ch !== \"}\" /* BraceRight */ &&\r\n ch !== CHAR_SP &&\r\n ch !== CHAR_LF;\r\n while ((ch = takeChar(scnr, closure))) {\r\n identifiers += ch;\r\n }\r\n return identifiers;\r\n }\r\n function readLinkedModifier(scnr) {\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n return name;\r\n }\r\n function readLinkedRefer(scnr) {\r\n const fn = (detect = false, buf) => {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_SP) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_LF) {\r\n buf += ch;\r\n scnr.next();\r\n return fn(detect, buf);\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n return fn(true, buf);\r\n }\r\n };\r\n return fn(false, '');\r\n }\r\n function readPlural(scnr) {\r\n skipSpaces(scnr);\r\n const plural = eat(scnr, \"|\" /* Pipe */);\r\n skipSpaces(scnr);\r\n return plural;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInPlaceholder(scnr, context) {\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n if (context.braceNest >= 1) {\r\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 2 /* BraceLeft */, \"{\" /* BraceLeft */);\r\n skipSpaces(scnr);\r\n context.braceNest++;\r\n return token;\r\n case \"}\" /* BraceRight */:\r\n if (context.braceNest > 0 &&\r\n context.currentType === 2 /* BraceLeft */) {\r\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n context.braceNest--;\r\n context.braceNest > 0 && skipSpaces(scnr);\r\n if (context.inLinked && context.braceNest === 0) {\r\n context.inLinked = false;\r\n }\r\n return token;\r\n case \"@\" /* LinkedAlias */:\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = readTokenInLinked(scnr, context) || getEndToken(context);\r\n context.braceNest = 0;\r\n return token;\r\n default:\r\n let validNamedIdentifier = true;\r\n let validListIdentifier = true;\r\n let validLiteral = true;\r\n if (isPluralStart(scnr)) {\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (context.braceNest > 0 &&\r\n (context.currentType === 5 /* Named */ ||\r\n context.currentType === 6 /* List */ ||\r\n context.currentType === 7 /* Literal */)) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n context.braceNest = 0;\r\n return readToken(scnr, context);\r\n }\r\n if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\r\n token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\r\n token = getToken(context, 6 /* List */, readListIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validLiteral = isLiteralStart(scnr, context))) {\r\n token = getToken(context, 7 /* Literal */, readLiteral(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\r\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\r\n token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));\r\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInLinked(scnr, context) {\r\n const { currentType } = context;\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n if ((currentType === 8 /* LinkedAlias */ ||\r\n currentType === 9 /* LinkedDot */ ||\r\n currentType === 12 /* LinkedModifier */ ||\r\n currentType === 10 /* LinkedDelimiter */) &&\r\n (ch === CHAR_LF || ch === CHAR_SP)) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n switch (ch) {\r\n case \"@\" /* LinkedAlias */:\r\n scnr.next();\r\n token = getToken(context, 8 /* LinkedAlias */, \"@\" /* LinkedAlias */);\r\n context.inLinked = true;\r\n return token;\r\n case \".\" /* LinkedDot */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 9 /* LinkedDot */, \".\" /* LinkedDot */);\r\n case \":\" /* LinkedDelimiter */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 10 /* LinkedDelimiter */, \":\" /* LinkedDelimiter */);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (isLinkedDotStart(scnr, context) ||\r\n isLinkedDelimiterStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return readTokenInLinked(scnr, context);\r\n }\r\n if (isLinkedModifierStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));\r\n }\r\n if (isLinkedReferStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n if (ch === \"{\" /* BraceLeft */) {\r\n // scan the placeholder\r\n return readTokenInPlaceholder(scnr, context) || token;\r\n }\r\n else {\r\n return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));\r\n }\r\n }\r\n if (currentType === 8 /* LinkedAlias */) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return readToken(scnr, context);\r\n }\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readToken(scnr, context) {\r\n let token = { type: 14 /* EOF */ };\r\n if (context.braceNest > 0) {\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n }\r\n if (context.inLinked) {\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n }\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n case \"}\" /* BraceRight */:\r\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\r\n scnr.next();\r\n return getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n case \"@\" /* LinkedAlias */:\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n const { isModulo, hasSpace } = detectModuloStart(scnr);\r\n if (isModulo) {\r\n return hasSpace\r\n ? getToken(context, 0 /* Text */, readText(scnr))\r\n : getToken(context, 4 /* Modulo */, readModulo(scnr));\r\n }\r\n if (isTextStart(scnr)) {\r\n return getToken(context, 0 /* Text */, readText(scnr));\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n function nextToken() {\r\n const { currentType, offset, startLoc, endLoc } = _context;\r\n _context.lastType = currentType;\r\n _context.lastOffset = offset;\r\n _context.lastStartLoc = startLoc;\r\n _context.lastEndLoc = endLoc;\r\n _context.offset = currentOffset();\r\n _context.startLoc = currentPosition();\r\n if (_scnr.currentChar() === EOF) {\r\n return getToken(_context, 14 /* EOF */);\r\n }\r\n return readToken(_scnr, _context);\r\n }\r\n return {\r\n nextToken,\r\n currentOffset,\r\n currentPosition,\r\n context\r\n };\r\n}\n\nconst ERROR_DOMAIN = 'parser';\r\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\r\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\r\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\r\n switch (match) {\r\n case `\\\\\\\\`:\r\n return `\\\\`;\r\n case `\\\\\\'`:\r\n return `\\'`;\r\n default: {\r\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\r\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\r\n return String.fromCodePoint(codePoint);\r\n }\r\n // invalid ...\r\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\r\n return '�';\r\n }\r\n }\r\n}\r\nfunction createParser(options = {}) {\r\n const location = options.location !== false;\r\n const { onError } = options;\r\n function emitError(tokenzer, code, start, offset, ...args) {\r\n const end = tokenzer.currentPosition();\r\n end.offset += offset;\r\n end.column += offset;\r\n if (onError) {\r\n const loc = createLocation(start, end);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function startNode(type, offset, loc) {\r\n const node = {\r\n type,\r\n start: offset,\r\n end: offset\r\n };\r\n if (location) {\r\n node.loc = { start: loc, end: loc };\r\n }\r\n return node;\r\n }\r\n function endNode(node, offset, pos, type) {\r\n node.end = offset;\r\n if (type) {\r\n node.type = type;\r\n }\r\n if (location && node.loc) {\r\n node.loc.end = pos;\r\n }\r\n }\r\n function parseText(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(3 /* Text */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseList(tokenizer, index) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(5 /* List */, offset, loc);\r\n node.index = parseInt(index, 10);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseNamed(tokenizer, key) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(4 /* Named */, offset, loc);\r\n node.key = key;\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLiteral(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(9 /* Literal */, offset, loc);\r\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinkedModifier(tokenizer) {\r\n const token = tokenizer.nextToken();\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\r\n const node = startNode(8 /* LinkedModifier */, offset, loc);\r\n if (token.type !== 12 /* LinkedModifier */) {\r\n // empty modifier\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\r\n node.value = '';\r\n endNode(node, offset, loc);\r\n return {\r\n nextConsumeToken: token,\r\n node\r\n };\r\n }\r\n // check token\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.value = token.value || '';\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node\r\n };\r\n }\r\n function parseLinkedKey(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinked(tokenizer) {\r\n const context = tokenizer.context();\r\n const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);\r\n let token = tokenizer.nextToken();\r\n if (token.type === 9 /* LinkedDot */) {\r\n const parsed = parseLinkedModifier(tokenizer);\r\n linkedNode.modifier = parsed.node;\r\n token = parsed.nextConsumeToken || tokenizer.nextToken();\r\n }\r\n // asset check token\r\n if (token.type !== 10 /* LinkedDelimiter */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n token = tokenizer.nextToken();\r\n // skip brace left\r\n if (token.type === 2 /* BraceLeft */) {\r\n token = tokenizer.nextToken();\r\n }\r\n switch (token.type) {\r\n case 11 /* LinkedKey */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseNamed(tokenizer, token.value || '');\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseList(tokenizer, token.value || '');\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\r\n break;\r\n default:\r\n // empty key\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\r\n const nextContext = tokenizer.context();\r\n const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);\r\n emptyLinkedKeyNode.value = '';\r\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\r\n linkedNode.key = emptyLinkedKeyNode;\r\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\r\n return {\r\n nextConsumeToken: token,\r\n node: linkedNode\r\n };\r\n }\r\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node: linkedNode\r\n };\r\n }\r\n function parseMessage(tokenizer) {\r\n const context = tokenizer.context();\r\n const startOffset = context.currentType === 1 /* Pipe */\r\n ? tokenizer.currentOffset()\r\n : context.offset;\r\n const startLoc = context.currentType === 1 /* Pipe */\r\n ? context.endLoc\r\n : context.startLoc;\r\n const node = startNode(2 /* Message */, startOffset, startLoc);\r\n node.items = [];\r\n let nextToken = null;\r\n do {\r\n const token = nextToken || tokenizer.nextToken();\r\n nextToken = null;\r\n switch (token.type) {\r\n case 0 /* Text */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseText(tokenizer, token.value || ''));\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseList(tokenizer, token.value || ''));\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseNamed(tokenizer, token.value || ''));\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseLiteral(tokenizer, token.value || ''));\r\n break;\r\n case 8 /* LinkedAlias */:\r\n const parsed = parseLinked(tokenizer);\r\n node.items.push(parsed.node);\r\n nextToken = parsed.nextConsumeToken || null;\r\n break;\r\n }\r\n } while (context.currentType !== 14 /* EOF */ &&\r\n context.currentType !== 1 /* Pipe */);\r\n // adjust message node loc\r\n const endOffset = context.currentType === 1 /* Pipe */\r\n ? context.lastOffset\r\n : tokenizer.currentOffset();\r\n const endLoc = context.currentType === 1 /* Pipe */\r\n ? context.lastEndLoc\r\n : tokenizer.currentPosition();\r\n endNode(node, endOffset, endLoc);\r\n return node;\r\n }\r\n function parsePlural(tokenizer, offset, loc, msgNode) {\r\n const context = tokenizer.context();\r\n let hasEmptyMessage = msgNode.items.length === 0;\r\n const node = startNode(1 /* Plural */, offset, loc);\r\n node.cases = [];\r\n node.cases.push(msgNode);\r\n do {\r\n const msg = parseMessage(tokenizer);\r\n if (!hasEmptyMessage) {\r\n hasEmptyMessage = msg.items.length === 0;\r\n }\r\n node.cases.push(msg);\r\n } while (context.currentType !== 14 /* EOF */);\r\n if (hasEmptyMessage) {\r\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseResource(tokenizer) {\r\n const context = tokenizer.context();\r\n const { offset, startLoc } = context;\r\n const msgNode = parseMessage(tokenizer);\r\n if (context.currentType === 14 /* EOF */) {\r\n return msgNode;\r\n }\r\n else {\r\n return parsePlural(tokenizer, offset, startLoc, msgNode);\r\n }\r\n }\r\n function parse(source) {\r\n const tokenizer = createTokenizer(source, assign({}, options));\r\n const context = tokenizer.context();\r\n const node = startNode(0 /* Resource */, context.offset, context.startLoc);\r\n if (location && node.loc) {\r\n node.loc.source = source;\r\n }\r\n node.body = parseResource(tokenizer);\r\n // assert whether achieved to EOF\r\n if (context.currentType !== 14 /* EOF */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n return { parse };\r\n}\r\nfunction getTokenCaption(token) {\r\n if (token.type === 14 /* EOF */) {\r\n return 'EOF';\r\n }\r\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\r\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\r\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\r\n) {\r\n const _context = {\r\n ast,\r\n helpers: new Set()\r\n };\r\n const context = () => _context;\r\n const helper = (name) => {\r\n _context.helpers.add(name);\r\n return name;\r\n };\r\n return { context, helper };\r\n}\r\nfunction traverseNodes(nodes, transformer) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n traverseNode(nodes[i], transformer);\r\n }\r\n}\r\nfunction traverseNode(node, transformer) {\r\n // TODO: if we need pre-hook of transform, should be implemented to here\r\n switch (node.type) {\r\n case 1 /* Plural */:\r\n traverseNodes(node.cases, transformer);\r\n transformer.helper(\"plural\" /* PLURAL */);\r\n break;\r\n case 2 /* Message */:\r\n traverseNodes(node.items, transformer);\r\n break;\r\n case 6 /* Linked */:\r\n const linked = node;\r\n traverseNode(linked.key, transformer);\r\n transformer.helper(\"linked\" /* LINKED */);\r\n transformer.helper(\"type\" /* TYPE */);\r\n break;\r\n case 5 /* List */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"list\" /* LIST */);\r\n break;\r\n case 4 /* Named */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"named\" /* NAMED */);\r\n break;\r\n }\r\n // TODO: if we need post-hook of transform, should be implemented to here\r\n}\r\n// transform AST\r\nfunction transform(ast, options = {} // eslint-disable-line\r\n) {\r\n const transformer = createTransformer(ast);\r\n transformer.helper(\"normalize\" /* NORMALIZE */);\r\n // traverse\r\n ast.body && traverseNode(ast.body, transformer);\r\n // set meta information\r\n const context = transformer.context();\r\n ast.helpers = Array.from(context.helpers);\r\n}\n\nfunction createCodeGenerator(ast, options) {\r\n const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\r\n const _context = {\r\n source: ast.loc.source,\r\n filename,\r\n code: '',\r\n column: 1,\r\n line: 1,\r\n offset: 0,\r\n map: undefined,\r\n breakLineCode,\r\n needIndent: _needIndent,\r\n indentLevel: 0\r\n };\r\n const context = () => _context;\r\n function push(code, node) {\r\n _context.code += code;\r\n }\r\n function _newline(n, withBreakLine = true) {\r\n const _breakLineCode = withBreakLine ? breakLineCode : '';\r\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\r\n }\r\n function indent(withNewLine = true) {\r\n const level = ++_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function deindent(withNewLine = true) {\r\n const level = --_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function newline() {\r\n _newline(_context.indentLevel);\r\n }\r\n const helper = (key) => `_${key}`;\r\n const needIndent = () => _context.needIndent;\r\n return {\r\n context,\r\n push,\r\n indent,\r\n deindent,\r\n newline,\r\n helper,\r\n needIndent\r\n };\r\n}\r\nfunction generateLinkedNode(generator, node) {\r\n const { helper } = generator;\r\n generator.push(`${helper(\"linked\" /* LINKED */)}(`);\r\n generateNode(generator, node.key);\r\n if (node.modifier) {\r\n generator.push(`, `);\r\n generateNode(generator, node.modifier);\r\n generator.push(`, _type`);\r\n }\r\n else {\r\n generator.push(`, undefined, _type`);\r\n }\r\n generator.push(`)`);\r\n}\r\nfunction generateMessageNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n generator.push(`${helper(\"normalize\" /* NORMALIZE */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.items.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.items[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push('])');\r\n}\r\nfunction generatePluralNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n if (node.cases.length > 1) {\r\n generator.push(`${helper(\"plural\" /* PLURAL */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.cases.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.cases[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push(`])`);\r\n }\r\n}\r\nfunction generateResource(generator, node) {\r\n if (node.body) {\r\n generateNode(generator, node.body);\r\n }\r\n else {\r\n generator.push('null');\r\n }\r\n}\r\nfunction generateNode(generator, node) {\r\n const { helper } = generator;\r\n switch (node.type) {\r\n case 0 /* Resource */:\r\n generateResource(generator, node);\r\n break;\r\n case 1 /* Plural */:\r\n generatePluralNode(generator, node);\r\n break;\r\n case 2 /* Message */:\r\n generateMessageNode(generator, node);\r\n break;\r\n case 6 /* Linked */:\r\n generateLinkedNode(generator, node);\r\n break;\r\n case 8 /* LinkedModifier */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 7 /* LinkedKey */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 5 /* List */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"list\" /* LIST */)}(${node.index}))`, node);\r\n break;\r\n case 4 /* Named */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"named\" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);\r\n break;\r\n case 9 /* Literal */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 3 /* Text */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n default:\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n throw new Error(`unhandled codegen node type: ${node.type}`);\r\n }\r\n }\r\n}\r\n// generate code from AST\r\nconst generate = (ast, options = {} // eslint-disable-line\r\n) => {\r\n const mode = isString(options.mode) ? options.mode : 'normal';\r\n const filename = isString(options.filename)\r\n ? options.filename\r\n : 'message.intl';\r\n const sourceMap = !!options.sourceMap;\r\n // prettier-ignore\r\n const breakLineCode = options.breakLineCode != null\r\n ? options.breakLineCode\r\n : mode === 'arrow'\r\n ? ';'\r\n : '\\n';\r\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\r\n const helpers = ast.helpers || [];\r\n const generator = createCodeGenerator(ast, {\r\n mode,\r\n filename,\r\n sourceMap,\r\n breakLineCode,\r\n needIndent\r\n });\r\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\r\n generator.indent(needIndent);\r\n if (helpers.length > 0) {\r\n generator.push(`const { ${helpers.map(s => `${s}: _${s}`).join(', ')} } = ctx`);\r\n generator.newline();\r\n }\r\n generator.push(`return `);\r\n generateNode(generator, ast);\r\n generator.deindent(needIndent);\r\n generator.push(`}`);\r\n const { code, map } = generator.context();\r\n return {\r\n ast,\r\n code,\r\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\r\n };\r\n};\n\nfunction baseCompile(source, options = {}) {\r\n const assignedOptions = assign({}, options);\r\n // parse source codes\r\n const parser = createParser(assignedOptions);\r\n const ast = parser.parse(source);\r\n // transform ASTs\r\n transform(ast, assignedOptions);\r\n // generate javascript codes\r\n return generate(ast, assignedOptions);\r\n}\n\nexport { CompileErrorCodes, ERROR_DOMAIN, LocationStub, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, errorMessages };\n","/*!\n * devtools-if v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst IntlifyDevToolsHooks = {\r\n I18nInit: 'i18n:init',\r\n FunctionTranslate: 'function:translate'\r\n};\n\nexport { IntlifyDevToolsHooks };\n","/*!\n * core-base v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { isObject, isString, isFunction, isNumber, isPlainObject, toDisplayString, isArray, format, isBoolean, assign, isRegExp, warn, escapeHtml, inBrowser, mark, measure, isEmptyObject, generateCodeFrame, generateFormatCacheKey, isDate, getGlobalThis } from '@intlify/shared';\nimport { defaultOnError, baseCompile, CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nimport { IntlifyDevToolsHooks } from '@intlify/devtools-if';\n\nconst pathStateMachine = [];\r\npathStateMachine[0 /* BEFORE_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [0 /* BEFORE_PATH */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[1 /* IN_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[2 /* BEFORE_IDENT */] = {\r\n [\"w\" /* WORKSPACE */]: [2 /* BEFORE_IDENT */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */]\r\n};\r\npathStateMachine[3 /* IN_IDENT */] = {\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */, 1 /* PUSH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */, 1 /* PUSH */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */, 1 /* PUSH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */, 1 /* PUSH */]\r\n};\r\npathStateMachine[4 /* IN_SUB_PATH */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */],\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [\r\n 4 /* IN_SUB_PATH */,\r\n 2 /* INC_SUB_PATH_DEPTH */\r\n ],\r\n [\"]\" /* RIGHT_BRACKET */]: [1 /* IN_PATH */, 3 /* PUSH_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */]\r\n};\r\npathStateMachine[5 /* IN_SINGLE_QUOTE */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */]\r\n};\r\npathStateMachine[6 /* IN_DOUBLE_QUOTE */] = {\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */]\r\n};\r\n/**\r\n * Check if an expression is a literal value.\r\n */\r\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\r\nfunction isLiteral(exp) {\r\n return literalValueRE.test(exp);\r\n}\r\n/**\r\n * Strip quotes from a string\r\n */\r\nfunction stripQuotes(str) {\r\n const a = str.charCodeAt(0);\r\n const b = str.charCodeAt(str.length - 1);\r\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\r\n}\r\n/**\r\n * Determine the type of a character in a keypath.\r\n */\r\nfunction getPathCharType(ch) {\r\n if (ch === undefined || ch === null) {\r\n return \"o\" /* END_OF_FAIL */;\r\n }\r\n const code = ch.charCodeAt(0);\r\n switch (code) {\r\n case 0x5b: // [\r\n case 0x5d: // ]\r\n case 0x2e: // .\r\n case 0x22: // \"\r\n case 0x27: // '\r\n return ch;\r\n case 0x5f: // _\r\n case 0x24: // $\r\n case 0x2d: // -\r\n return \"i\" /* IDENT */;\r\n case 0x09: // Tab (HT)\r\n case 0x0a: // Newline (LF)\r\n case 0x0d: // Return (CR)\r\n case 0xa0: // No-break space (NBSP)\r\n case 0xfeff: // Byte Order Mark (BOM)\r\n case 0x2028: // Line Separator (LS)\r\n case 0x2029: // Paragraph Separator (PS)\r\n return \"w\" /* WORKSPACE */;\r\n }\r\n return \"i\" /* IDENT */;\r\n}\r\n/**\r\n * Format a subPath, return its plain form if it is\r\n * a literal string or number. Otherwise prepend the\r\n * dynamic indicator (*).\r\n */\r\nfunction formatSubPath(path) {\r\n const trimmed = path.trim();\r\n // invalid leading 0\r\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\r\n return false;\r\n }\r\n return isLiteral(trimmed)\r\n ? stripQuotes(trimmed)\r\n : \"*\" /* ASTARISK */ + trimmed;\r\n}\r\n/**\r\n * Parse a string path into an array of segments\r\n */\r\nfunction parse(path) {\r\n const keys = [];\r\n let index = -1;\r\n let mode = 0 /* BEFORE_PATH */;\r\n let subPathDepth = 0;\r\n let c;\r\n let key; // eslint-disable-line\r\n let newChar;\r\n let type;\r\n let transition;\r\n let action;\r\n let typeMap;\r\n const actions = [];\r\n actions[0 /* APPEND */] = () => {\r\n if (key === undefined) {\r\n key = newChar;\r\n }\r\n else {\r\n key += newChar;\r\n }\r\n };\r\n actions[1 /* PUSH */] = () => {\r\n if (key !== undefined) {\r\n keys.push(key);\r\n key = undefined;\r\n }\r\n };\r\n actions[2 /* INC_SUB_PATH_DEPTH */] = () => {\r\n actions[0 /* APPEND */]();\r\n subPathDepth++;\r\n };\r\n actions[3 /* PUSH_SUB_PATH */] = () => {\r\n if (subPathDepth > 0) {\r\n subPathDepth--;\r\n mode = 4 /* IN_SUB_PATH */;\r\n actions[0 /* APPEND */]();\r\n }\r\n else {\r\n subPathDepth = 0;\r\n if (key === undefined) {\r\n return false;\r\n }\r\n key = formatSubPath(key);\r\n if (key === false) {\r\n return false;\r\n }\r\n else {\r\n actions[1 /* PUSH */]();\r\n }\r\n }\r\n };\r\n function maybeUnescapeQuote() {\r\n const nextChar = path[index + 1];\r\n if ((mode === 5 /* IN_SINGLE_QUOTE */ &&\r\n nextChar === \"'\" /* SINGLE_QUOTE */) ||\r\n (mode === 6 /* IN_DOUBLE_QUOTE */ &&\r\n nextChar === \"\\\"\" /* DOUBLE_QUOTE */)) {\r\n index++;\r\n newChar = '\\\\' + nextChar;\r\n actions[0 /* APPEND */]();\r\n return true;\r\n }\r\n }\r\n while (mode !== null) {\r\n index++;\r\n c = path[index];\r\n if (c === '\\\\' && maybeUnescapeQuote()) {\r\n continue;\r\n }\r\n type = getPathCharType(c);\r\n typeMap = pathStateMachine[mode];\r\n transition = typeMap[type] || typeMap[\"l\" /* ELSE */] || 8 /* ERROR */;\r\n // check parse error\r\n if (transition === 8 /* ERROR */) {\r\n return;\r\n }\r\n mode = transition[0];\r\n if (transition[1] !== undefined) {\r\n action = actions[transition[1]];\r\n if (action) {\r\n newChar = c;\r\n if (action() === false) {\r\n return;\r\n }\r\n }\r\n }\r\n // check parse finish\r\n if (mode === 7 /* AFTER_PATH */) {\r\n return keys;\r\n }\r\n }\r\n}\r\n// path token cache\r\nconst cache = new Map();\r\n/**\r\n * key-value message resolver\r\n *\r\n * @remarks\r\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveWithKeyValue(obj, path) {\r\n return isObject(obj) ? obj[path] : null;\r\n}\r\n/**\r\n * message resolver\r\n *\r\n * @remarks\r\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveValue(obj, path) {\r\n // check object\r\n if (!isObject(obj)) {\r\n return null;\r\n }\r\n // parse path\r\n let hit = cache.get(path);\r\n if (!hit) {\r\n hit = parse(path);\r\n if (hit) {\r\n cache.set(path, hit);\r\n }\r\n }\r\n // check hit\r\n if (!hit) {\r\n return null;\r\n }\r\n // resolve path value\r\n const len = hit.length;\r\n let last = obj;\r\n let i = 0;\r\n while (i < len) {\r\n const val = last[hit[i]];\r\n if (val === undefined) {\r\n return null;\r\n }\r\n last = val;\r\n i++;\r\n }\r\n return last;\r\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\r\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\r\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\r\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : values.join('');\r\nconst DEFAULT_INTERPOLATE = toDisplayString;\r\nfunction pluralDefault(choice, choicesLength) {\r\n choice = Math.abs(choice);\r\n if (choicesLength === 2) {\r\n // prettier-ignore\r\n return choice\r\n ? choice > 1\r\n ? 1\r\n : 0\r\n : 1;\r\n }\r\n return choice ? Math.min(choice, 2) : 0;\r\n}\r\nfunction getPluralIndex(options) {\r\n // prettier-ignore\r\n const index = isNumber(options.pluralIndex)\r\n ? options.pluralIndex\r\n : -1;\r\n // prettier-ignore\r\n return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\r\n ? isNumber(options.named.count)\r\n ? options.named.count\r\n : isNumber(options.named.n)\r\n ? options.named.n\r\n : index\r\n : index;\r\n}\r\nfunction normalizeNamed(pluralIndex, props) {\r\n if (!props.count) {\r\n props.count = pluralIndex;\r\n }\r\n if (!props.n) {\r\n props.n = pluralIndex;\r\n }\r\n}\r\nfunction createMessageContext(options = {}) {\r\n const locale = options.locale;\r\n const pluralIndex = getPluralIndex(options);\r\n const pluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? options.pluralRules[locale]\r\n : pluralDefault;\r\n const orgPluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? pluralDefault\r\n : undefined;\r\n const plural = (messages) => {\r\n return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\r\n };\r\n const _list = options.list || [];\r\n const list = (index) => _list[index];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _named = options.named || {};\r\n isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\r\n const named = (key) => _named[key];\r\n function message(key) {\r\n // prettier-ignore\r\n const msg = isFunction(options.messages)\r\n ? options.messages(key)\r\n : isObject(options.messages)\r\n ? options.messages[key]\r\n : false;\r\n return !msg\r\n ? options.parent\r\n ? options.parent.message(key) // resolve from parent messages\r\n : DEFAULT_MESSAGE\r\n : msg;\r\n }\r\n const _modifier = (name) => options.modifiers\r\n ? options.modifiers[name]\r\n : DEFAULT_MODIFIER;\r\n const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\r\n ? options.processor.normalize\r\n : DEFAULT_NORMALIZE;\r\n const interpolate = isPlainObject(options.processor) &&\r\n isFunction(options.processor.interpolate)\r\n ? options.processor.interpolate\r\n : DEFAULT_INTERPOLATE;\r\n const type = isPlainObject(options.processor) && isString(options.processor.type)\r\n ? options.processor.type\r\n : DEFAULT_MESSAGE_DATA_TYPE;\r\n const linked = (key, ...args) => {\r\n const [arg1, arg2] = args;\r\n let type = 'text';\r\n let modifier = '';\r\n if (args.length === 1) {\r\n if (isObject(arg1)) {\r\n modifier = arg1.modifier || modifier;\r\n type = arg1.type || type;\r\n }\r\n else if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n }\r\n else if (args.length === 2) {\r\n if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n if (isString(arg2)) {\r\n type = arg2 || type;\r\n }\r\n }\r\n let msg = message(key)(ctx);\r\n // The message in vnode resolved with linked are returned as an array by processor.nomalize\r\n if (type === 'vnode' && isArray(msg) && modifier) {\r\n msg = msg[0];\r\n }\r\n return modifier ? _modifier(modifier)(msg, type) : msg;\r\n };\r\n const ctx = {\r\n [\"list\" /* LIST */]: list,\r\n [\"named\" /* NAMED */]: named,\r\n [\"plural\" /* PLURAL */]: plural,\r\n [\"linked\" /* LINKED */]: linked,\r\n [\"message\" /* MESSAGE */]: message,\r\n [\"type\" /* TYPE */]: type,\r\n [\"interpolate\" /* INTERPOLATE */]: interpolate,\r\n [\"normalize\" /* NORMALIZE */]: normalize\r\n };\r\n return ctx;\r\n}\n\nlet devtools = null;\r\nfunction setDevToolsHook(hook) {\r\n devtools = hook;\r\n}\r\nfunction getDevToolsHook() {\r\n return devtools;\r\n}\r\nfunction initI18nDevTools(i18n, version, meta) {\r\n // TODO: queue if devtools is undefined\r\n devtools &&\r\n devtools.emit(IntlifyDevToolsHooks.I18nInit, {\r\n timestamp: Date.now(),\r\n i18n,\r\n version,\r\n meta\r\n });\r\n}\r\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(IntlifyDevToolsHooks.FunctionTranslate);\r\nfunction createDevToolsHook(hook) {\r\n return (payloads) => devtools && devtools.emit(hook, payloads);\r\n}\n\nconst CoreWarnCodes = {\r\n NOT_FOUND_KEY: 1,\r\n FALLBACK_TO_TRANSLATE: 2,\r\n CANNOT_FORMAT_NUMBER: 3,\r\n FALLBACK_TO_NUMBER_FORMAT: 4,\r\n CANNOT_FORMAT_DATE: 5,\r\n FALLBACK_TO_DATE_FORMAT: 6,\r\n __EXTEND_POINT__: 7\r\n};\r\n/** @internal */\r\nconst warnMessages = {\r\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\r\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\n/**\r\n * Fallback with simple implemenation\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a simple fallback algorithm.\r\n *\r\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\r\n) {\r\n // prettier-ignore\r\n return [...new Set([\r\n start,\r\n ...(isArray(fallback)\r\n ? fallback\r\n : isObject(fallback)\r\n ? Object.keys(fallback)\r\n : isString(fallback)\r\n ? [fallback]\r\n : [start])\r\n ])];\r\n}\r\n/**\r\n * Fallback with locale chain\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\r\n const startLocale = isString(start) ? start : DEFAULT_LOCALE;\r\n const context = ctx;\r\n if (!context.__localeChainCache) {\r\n context.__localeChainCache = new Map();\r\n }\r\n let chain = context.__localeChainCache.get(startLocale);\r\n if (!chain) {\r\n chain = [];\r\n // first block defined by start\r\n let block = [start];\r\n // while any intervening block found\r\n while (isArray(block)) {\r\n block = appendBlockToChain(chain, block, fallback);\r\n }\r\n // prettier-ignore\r\n // last block defined by default\r\n const defaults = isArray(fallback) || !isPlainObject(fallback)\r\n ? fallback\r\n : fallback['default']\r\n ? fallback['default']\r\n : null;\r\n // convert defaults to array\r\n block = isString(defaults) ? [defaults] : defaults;\r\n if (isArray(block)) {\r\n appendBlockToChain(chain, block, false);\r\n }\r\n context.__localeChainCache.set(startLocale, chain);\r\n }\r\n return chain;\r\n}\r\nfunction appendBlockToChain(chain, block, blocks) {\r\n let follow = true;\r\n for (let i = 0; i < block.length && isBoolean(follow); i++) {\r\n const locale = block[i];\r\n if (isString(locale)) {\r\n follow = appendLocaleToChain(chain, block[i], blocks);\r\n }\r\n }\r\n return follow;\r\n}\r\nfunction appendLocaleToChain(chain, locale, blocks) {\r\n let follow;\r\n const tokens = locale.split('-');\r\n do {\r\n const target = tokens.join('-');\r\n follow = appendItemToChain(chain, target, blocks);\r\n tokens.splice(-1, 1);\r\n } while (tokens.length && follow === true);\r\n return follow;\r\n}\r\nfunction appendItemToChain(chain, target, blocks) {\r\n let follow = false;\r\n if (!chain.includes(target)) {\r\n follow = true;\r\n if (target) {\r\n follow = target[target.length - 1] !== '!';\r\n const locale = target.replace(/!/g, '');\r\n chain.push(locale);\r\n if ((isArray(blocks) || isPlainObject(blocks)) &&\r\n blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n follow = blocks[locale];\r\n }\r\n }\r\n }\r\n return follow;\r\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Intlify core-base version\r\n * @internal\r\n */\r\nconst VERSION = '9.2.2';\r\nconst NOT_REOSLVED = -1;\r\nconst DEFAULT_LOCALE = 'en-US';\r\nconst MISSING_RESOLVE_VALUE = '';\r\nconst capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\r\nfunction getDefaultLinkedModifiers() {\r\n return {\r\n upper: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toUpperCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toUpperCase()\r\n : val;\r\n },\r\n lower: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toLowerCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toLowerCase()\r\n : val;\r\n },\r\n capitalize: (val, type) => {\r\n // prettier-ignore\r\n return (type === 'text' && isString(val)\r\n ? capitalize(val)\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? capitalize(val.children)\r\n : val);\r\n }\r\n };\r\n}\r\nlet _compiler;\r\nfunction registerMessageCompiler(compiler) {\r\n _compiler = compiler;\r\n}\r\nlet _resolver;\r\n/**\r\n * Register the message resolver\r\n *\r\n * @param resolver - A {@link MessageResolver} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerMessageResolver(resolver) {\r\n _resolver = resolver;\r\n}\r\nlet _fallbacker;\r\n/**\r\n * Register the locale fallbacker\r\n *\r\n * @param fallbacker - A {@link LocaleFallbacker} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerLocaleFallbacker(fallbacker) {\r\n _fallbacker = fallbacker;\r\n}\r\n// Additional Meta for Intlify DevTools\r\nlet _additionalMeta = null;\r\nconst setAdditionalMeta = (meta) => {\r\n _additionalMeta = meta;\r\n};\r\nconst getAdditionalMeta = () => _additionalMeta;\r\nlet _fallbackContext = null;\r\nconst setFallbackContext = (context) => {\r\n _fallbackContext = context;\r\n};\r\nconst getFallbackContext = () => _fallbackContext;\r\n// ID for CoreContext\r\nlet _cid = 0;\r\nfunction createCoreContext(options = {}) {\r\n // setup options\r\n const version = isString(options.version) ? options.version : VERSION;\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n isString(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const messages = isPlainObject(options.messages)\r\n ? options.messages\r\n : { [locale]: {} };\r\n const datetimeFormats = isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [locale]: {} }\r\n ;\r\n const numberFormats = isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [locale]: {} }\r\n ;\r\n const modifiers = assign({}, options.modifiers || {}, getDefaultLinkedModifiers());\r\n const pluralRules = options.pluralRules || {};\r\n const missing = isFunction(options.missing) ? options.missing : null;\r\n const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n const fallbackFormat = !!options.fallbackFormat;\r\n const unresolving = !!options.unresolving;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n const processor = isPlainObject(options.processor) ? options.processor : null;\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const escapeParameter = !!options.escapeParameter;\r\n const messageCompiler = isFunction(options.messageCompiler)\r\n ? options.messageCompiler\r\n : _compiler;\r\n const messageResolver = isFunction(options.messageResolver)\r\n ? options.messageResolver\r\n : _resolver || resolveWithKeyValue;\r\n const localeFallbacker = isFunction(options.localeFallbacker)\r\n ? options.localeFallbacker\r\n : _fallbacker || fallbackWithSimple;\r\n const fallbackContext = isObject(options.fallbackContext)\r\n ? options.fallbackContext\r\n : undefined;\r\n const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\r\n // setup internal options\r\n const internalOptions = options;\r\n const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\r\n ? internalOptions.__datetimeFormatters\r\n : new Map()\r\n ;\r\n const __numberFormatters = isObject(internalOptions.__numberFormatters)\r\n ? internalOptions.__numberFormatters\r\n : new Map()\r\n ;\r\n const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\r\n _cid++;\r\n const context = {\r\n version,\r\n cid: _cid,\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n modifiers,\r\n pluralRules,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackFormat,\r\n unresolving,\r\n postTranslation,\r\n processor,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageCompiler,\r\n messageResolver,\r\n localeFallbacker,\r\n fallbackContext,\r\n onWarn,\r\n __meta\r\n };\r\n {\r\n context.datetimeFormats = datetimeFormats;\r\n context.numberFormats = numberFormats;\r\n context.__datetimeFormatters = __datetimeFormatters;\r\n context.__numberFormatters = __numberFormatters;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n context.__v_emitter =\r\n internalOptions.__v_emitter != null\r\n ? internalOptions.__v_emitter\r\n : undefined;\r\n }\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n initI18nDevTools(context, version, __meta);\r\n }\r\n return context;\r\n}\r\n/** @internal */\r\nfunction isTranslateFallbackWarn(fallback, key) {\r\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\r\n}\r\n/** @internal */\r\nfunction isTranslateMissingWarn(missing, key) {\r\n return missing instanceof RegExp ? missing.test(key) : missing;\r\n}\r\n/** @internal */\r\nfunction handleMissing(context, key, locale, missingWarn, type) {\r\n const { missing, onWarn } = context;\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"missing\" /* MISSING */, {\r\n locale,\r\n key,\r\n type,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n if (missing !== null) {\r\n const ret = missing(context, locale, key, type);\r\n return isString(ret) ? ret : key;\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\r\n }\r\n return key;\r\n }\r\n}\r\n/** @internal */\r\nfunction updateFallbackLocale(ctx, locale, fallback) {\r\n const context = ctx;\r\n context.__localeChainCache = new Map();\r\n ctx.localeFallbacker(ctx, fallback, locale);\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\r\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\r\nfunction checkHtmlMessage(source, options) {\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n if (warnHtmlMessage && RE_HTML_TAG.test(source)) {\r\n warn(format(WARN_MESSAGE, { source }));\r\n }\r\n}\r\nconst defaultOnCacheKey = (source) => source;\r\nlet compileCache = Object.create(null);\r\nfunction clearCompileCache() {\r\n compileCache = Object.create(null);\r\n}\r\nfunction compileToFunction(source, options = {}) {\r\n {\r\n // check HTML message\r\n (process.env.NODE_ENV !== 'production') && checkHtmlMessage(source, options);\r\n // check caches\r\n const onCacheKey = options.onCacheKey || defaultOnCacheKey;\r\n const key = onCacheKey(source);\r\n const cached = compileCache[key];\r\n if (cached) {\r\n return cached;\r\n }\r\n // compile error detecting\r\n let occurred = false;\r\n const onError = options.onError || defaultOnError;\r\n options.onError = (err) => {\r\n occurred = true;\r\n onError(err);\r\n };\r\n // compile\r\n const { code } = baseCompile(source, options);\r\n // evaluate function\r\n const msg = new Function(`return ${code}`)();\r\n // if occurred compile error, don't cache\r\n return !occurred ? (compileCache[key] = msg) : msg;\r\n }\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst CoreErrorCodes = {\r\n INVALID_ARGUMENT: code,\r\n INVALID_DATE_ARGUMENT: inc(),\r\n INVALID_ISO_DATE_ARGUMENT: inc(),\r\n __EXTEND_POINT__: inc() // 18\r\n};\r\nfunction createCoreError(code) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\r\n}\r\n/** @internal */\r\nconst errorMessages = {\r\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\r\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\r\n 'Make sure your Date represents a valid date.',\r\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string'\r\n};\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\r\nconst isMessageFunction = (val) => isFunction(val);\r\n// implementation of `translate` function\r\nfunction translate(context, ...args) {\r\n const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\r\n const [key, options] = parseTranslateArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const escapeParameter = isBoolean(options.escapeParameter)\r\n ? options.escapeParameter\r\n : context.escapeParameter;\r\n const resolvedMessage = !!options.resolvedMessage;\r\n // prettier-ignore\r\n const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\r\n ? !isBoolean(options.default)\r\n ? options.default\r\n : (!messageCompiler ? () => key : key)\r\n : fallbackFormat // default by `fallbackFormat` option\r\n ? (!messageCompiler ? () => key : key)\r\n : '';\r\n const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n // escape params\r\n escapeParameter && escapeParams(options);\r\n // resolve message format\r\n // eslint-disable-next-line prefer-const\r\n let [formatScope, targetLocale, message] = !resolvedMessage\r\n ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\r\n : [\r\n key,\r\n locale,\r\n messages[locale] || {}\r\n ];\r\n // NOTE:\r\n // Fix to work around `ssrTransfrom` bug in Vite.\r\n // https://github.com/vitejs/vite/issues/4306\r\n // To get around this, use temporary variables.\r\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\r\n let format = formatScope;\r\n // if you use default message, set it as message format!\r\n let cacheBaseKey = key;\r\n if (!resolvedMessage &&\r\n !(isString(format) || isMessageFunction(format))) {\r\n if (enableDefaultMsg) {\r\n format = defaultMsgOrKey;\r\n cacheBaseKey = format;\r\n }\r\n }\r\n // checking message format and target locale\r\n if (!resolvedMessage &&\r\n (!(isString(format) || isMessageFunction(format)) ||\r\n !isString(targetLocale))) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\r\n warn(`The message format compilation is not supported in this build. ` +\r\n `Because message compiler isn't included. ` +\r\n `You need to pre-compilation all message format. ` +\r\n `So translate function return '${key}'.`);\r\n return key;\r\n }\r\n // setup compile error detecting\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n // compile message format\r\n const msg = !isMessageFunction(format)\r\n ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector)\r\n : format;\r\n // if occurred compile error, return the message format\r\n if (occurred) {\r\n return format;\r\n }\r\n // evaluate message with context\r\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\r\n const msgContext = createMessageContext(ctxOptions);\r\n const messaged = evaluateMessage(context, msg, msgContext);\r\n // if use post translation option, proceed it with handler\r\n const ret = postTranslation\r\n ? postTranslation(messaged, key)\r\n : messaged;\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n // prettier-ignore\r\n const payloads = {\r\n timestamp: Date.now(),\r\n key: isString(key)\r\n ? key\r\n : isMessageFunction(format)\r\n ? format.key\r\n : '',\r\n locale: targetLocale || (isMessageFunction(format)\r\n ? format.locale\r\n : ''),\r\n format: isString(format)\r\n ? format\r\n : isMessageFunction(format)\r\n ? format.source\r\n : '',\r\n message: ret\r\n };\r\n payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\r\n translateDevTools(payloads);\r\n }\r\n return ret;\r\n}\r\nfunction escapeParams(options) {\r\n if (isArray(options.list)) {\r\n options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\r\n }\r\n else if (isObject(options.named)) {\r\n Object.keys(options.named).forEach(key => {\r\n if (isString(options.named[key])) {\r\n options.named[key] = escapeHtml(options.named[key]);\r\n }\r\n });\r\n }\r\n}\r\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\r\n const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\r\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n let message = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'translate';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n message =\r\n messages[targetLocale] || {};\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-resolve-start';\r\n endTag = 'intlify-message-resolve-end';\r\n mark && mark(startTag);\r\n }\r\n if ((format = resolveValue(message, key)) === null) {\r\n // if null, resolve with object key path\r\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start && format) {\r\n emitter.emit(\"message-resolve\" /* MESSAGE_RESOLVE */, {\r\n type: \"message-resolve\" /* MESSAGE_RESOLVE */,\r\n key,\r\n message: format,\r\n time: end - start,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message resolve', startTag, endTag);\r\n }\r\n }\r\n if (isString(format) || isFunction(format))\r\n break;\r\n const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n key, targetLocale, missingWarn, type);\r\n if (missingRet !== key) {\r\n format = missingRet;\r\n }\r\n from = to;\r\n }\r\n return [format, targetLocale, message];\r\n}\r\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector) {\r\n const { messageCompiler, warnHtmlMessage } = context;\r\n if (isMessageFunction(format)) {\r\n const msg = format;\r\n msg.locale = msg.locale || targetLocale;\r\n msg.key = msg.key || key;\r\n return msg;\r\n }\r\n if (messageCompiler == null) {\r\n const msg = (() => format);\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n return msg;\r\n }\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-compilation-start';\r\n endTag = 'intlify-message-compilation-end';\r\n mark && mark(startTag);\r\n }\r\n const msg = messageCompiler(format, getCompileOptions(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, errorDetector));\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-compilation\" /* MESSAGE_COMPILATION */, {\r\n type: \"message-compilation\" /* MESSAGE_COMPILATION */,\r\n message: format,\r\n time: end - start,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message compilation', startTag, endTag);\r\n }\r\n }\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n msg.source = format;\r\n return msg;\r\n}\r\nfunction evaluateMessage(context, msg, msgCtx) {\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-evaluation-start';\r\n endTag = 'intlify-message-evaluation-end';\r\n mark && mark(startTag);\r\n }\r\n const messaged = msg(msgCtx);\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-evaluation\" /* MESSAGE_EVALUATION */, {\r\n type: \"message-evaluation\" /* MESSAGE_EVALUATION */,\r\n value: messaged,\r\n time: end - start,\r\n groupId: `${'translate'}:${msg.key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message evaluation', startTag, endTag);\r\n }\r\n }\r\n return messaged;\r\n}\r\n/** @internal */\r\nfunction parseTranslateArgs(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n if (!isString(arg1) && !isNumber(arg1) && !isMessageFunction(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n // prettier-ignore\r\n const key = isNumber(arg1)\r\n ? String(arg1)\r\n : isMessageFunction(arg1)\r\n ? arg1\r\n : arg1;\r\n if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isString(arg2)) {\r\n options.default = arg2;\r\n }\r\n else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\r\n options.named = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n options.list = arg2;\r\n }\r\n if (isNumber(arg3)) {\r\n options.plural = arg3;\r\n }\r\n else if (isString(arg3)) {\r\n options.default = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n assign(options, arg3);\r\n }\r\n return [key, options];\r\n}\r\nfunction getCompileOptions(context, locale, key, source, warnHtmlMessage, errorDetector) {\r\n return {\r\n warnHtmlMessage,\r\n onError: (err) => {\r\n errorDetector && errorDetector(err);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const message = `Message compilation error: ${err.message}`;\r\n const codeFrame = err.location &&\r\n generateCodeFrame(source, err.location.start.offset, err.location.end.offset);\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"compile-error\" /* COMPILE_ERROR */, {\r\n message: source,\r\n error: err.message,\r\n start: err.location && err.location.start.offset,\r\n end: err.location && err.location.end.offset,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\r\n }\r\n else {\r\n throw err;\r\n }\r\n },\r\n onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\r\n };\r\n}\r\nfunction getMessageContextOptions(context, locale, message, options) {\r\n const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\r\n const resolveMessage = (key) => {\r\n let val = resolveValue(message, key);\r\n // fallback to root context\r\n if (val == null && fallbackContext) {\r\n const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\r\n val = resolveValue(message, key);\r\n }\r\n if (isString(val)) {\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n const msg = compileMessageFormat(context, key, locale, val, key, errorDetector);\r\n return !occurred\r\n ? msg\r\n : NOOP_MESSAGE_FUNCTION;\r\n }\r\n else if (isMessageFunction(val)) {\r\n return val;\r\n }\r\n else {\r\n // TODO: should be implemented warning message\r\n return NOOP_MESSAGE_FUNCTION;\r\n }\r\n };\r\n const ctxOptions = {\r\n locale,\r\n modifiers,\r\n pluralRules,\r\n messages: resolveMessage\r\n };\r\n if (context.processor) {\r\n ctxOptions.processor = context.processor;\r\n }\r\n if (options.list) {\r\n ctxOptions.list = options.list;\r\n }\r\n if (options.named) {\r\n ctxOptions.named = options.named;\r\n }\r\n if (isNumber(options.plural)) {\r\n ctxOptions.pluralIndex = options.plural;\r\n }\r\n return ctxOptions;\r\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\r\nconst Availabilities = {\r\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\r\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\r\n};\n\n// implementation of `datetime` function\r\nfunction datetime(context, ...args) {\r\n const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __datetimeFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.DateTimeFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let datetimeFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'datetime format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n datetimeFormat =\r\n datetimeFormats[targetLocale] || {};\r\n format = datetimeFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __datetimeFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\r\n __datetimeFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst DATETIME_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'weekday',\r\n 'era',\r\n 'year',\r\n 'month',\r\n 'day',\r\n 'hour',\r\n 'minute',\r\n 'second',\r\n 'timeZoneName',\r\n 'formatMatcher',\r\n 'hour12',\r\n 'timeZone',\r\n 'dateStyle',\r\n 'timeStyle',\r\n 'calendar',\r\n 'dayPeriod',\r\n 'numberingSystem',\r\n 'hourCycle',\r\n 'fractionalSecondDigits'\r\n];\r\n/** @internal */\r\nfunction parseDateTimeArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n let value;\r\n if (isString(arg1)) {\r\n // Only allow ISO strings - other date formats are often supported,\r\n // but may cause different results in different browsers.\r\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\r\n if (!matches) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n // Some browsers can not parse the iso datetime separated by space,\r\n // this is a compromise solution by replace the 'T'/' ' with 'T'\r\n const dateTime = matches[3]\r\n ? matches[3].trim().startsWith('T')\r\n ? `${matches[1].trim()}${matches[3].trim()}`\r\n : `${matches[1].trim()}T${matches[3].trim()}`\r\n : matches[1].trim();\r\n value = new Date(dateTime);\r\n try {\r\n // This will fail if the date is not valid\r\n value.toISOString();\r\n }\r\n catch (e) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n }\r\n else if (isDate(arg1)) {\r\n if (isNaN(arg1.getTime())) {\r\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\r\n }\r\n value = arg1;\r\n }\r\n else if (isNumber(arg1)) {\r\n value = arg1;\r\n }\r\n else {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearDateTimeFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__datetimeFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__datetimeFormatters.delete(id);\r\n }\r\n}\n\n// implementation of `number` function\r\nfunction number(context, ...args) {\r\n const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __numberFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseNumberArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.NumberFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let numberFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'number format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n numberFormat =\r\n numberFormats[targetLocale] || {};\r\n format = numberFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __numberFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\r\n __numberFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst NUMBER_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'style',\r\n 'currency',\r\n 'currencyDisplay',\r\n 'currencySign',\r\n 'useGrouping',\r\n 'minimumIntegerDigits',\r\n 'minimumFractionDigits',\r\n 'maximumFractionDigits',\r\n 'minimumSignificantDigits',\r\n 'maximumSignificantDigits',\r\n 'compactDisplay',\r\n 'notation',\r\n 'signDisplay',\r\n 'unit',\r\n 'unitDisplay',\r\n 'roundingMode',\r\n 'roundingPriority',\r\n 'roundingIncrement',\r\n 'trailingZeroDisplay'\r\n];\r\n/** @internal */\r\nfunction parseNumberArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n if (!isNumber(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const value = arg1;\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearNumberFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__numberFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__numberFormatters.delete(id);\r\n }\r\n}\n\n// TODO: we could not exports for Node native ES Moudles yet...\r\n{\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n}\n\nexport { CoreErrorCodes, CoreWarnCodes, DATETIME_FORMAT_OPTIONS_KEYS, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, NUMBER_FORMAT_OPTIONS_KEYS, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getWarnMessage, handleMissing, initI18nDevTools, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale };\n","/*!\n * vue-i18n v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { getGlobalThis, format, makeSymbol, isPlainObject, isArray, isString, hasOwn, isObject, isBoolean, isRegExp, isFunction, inBrowser, assign, isNumber, warn, createEmitter, isEmptyObject } from '@intlify/shared';\nimport { CoreWarnCodes, CompileErrorCodes, createCompileError, DEFAULT_LOCALE, updateFallbackLocale, setFallbackContext, createCoreContext, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, getFallbackContext, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, fallbackWithLocaleChain, NUMBER_FORMAT_OPTIONS_KEYS, DATETIME_FORMAT_OPTIONS_KEYS, registerMessageResolver, resolveValue, registerLocaleFallbacker, setDevToolsHook } from '@intlify/core-base';\nimport { createVNode, Text, ref, computed, watch, getCurrentInstance, Fragment, h, effectScope, inject, onMounted, onUnmounted, shallowRef, onBeforeMount, isRef } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\nimport { VueDevToolsLabels, VueDevToolsPlaceholders, VueDevToolsTimelineColors } from '@intlify/vue-devtools';\n\n/**\r\n * Vue I18n Version\r\n *\r\n * @remarks\r\n * Semver format. Same format as the package.json `version` field.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst VERSION = '9.2.2';\r\n/**\r\n * This is only called in esm-bundler builds.\r\n * istanbul-ignore-next\r\n */\r\nfunction initFeatureFlags() {\r\n let needWarn = false;\r\n if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;\r\n }\r\n if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_LEGACY_API__ = true;\r\n }\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && needWarn) {\r\n console.warn(`You are running the esm-bundler build of vue-i18n. It is recommended to ` +\r\n `configure your bundler to explicitly replace feature flag globals ` +\r\n `with boolean literals to get proper tree-shaking in the final bundle.`);\r\n }\r\n}\n\nlet code$1 = CoreWarnCodes.__EXTEND_POINT__;\r\nconst inc$1 = () => ++code$1;\r\nconst I18nWarnCodes = {\r\n FALLBACK_TO_ROOT: code$1,\r\n NOT_SUPPORTED_PRESERVE: inc$1(),\r\n NOT_SUPPORTED_FORMATTER: inc$1(),\r\n NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(),\r\n NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(),\r\n COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(),\r\n NOT_FOUND_PARENT_SCOPE: inc$1() // 13\r\n};\r\nconst warnMessages = {\r\n [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,\r\n [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,\r\n [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst I18nErrorCodes = {\r\n // composer module errors\r\n UNEXPECTED_RETURN_TYPE: code,\r\n // legacy module errors\r\n INVALID_ARGUMENT: inc(),\r\n // i18n module errors\r\n MUST_BE_CALL_SETUP_TOP: inc(),\r\n NOT_INSLALLED: inc(),\r\n NOT_AVAILABLE_IN_LEGACY_MODE: inc(),\r\n // directive module errors\r\n REQUIRED_VALUE: inc(),\r\n INVALID_VALUE: inc(),\r\n // vue-devtools errors\r\n CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(),\r\n NOT_INSLALLED_WITH_PROVIDE: inc(),\r\n // unexpected error\r\n UNEXPECTED_ERROR: inc(),\r\n // not compatible legacy vue-i18n constructor\r\n NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(),\r\n // bridge support vue 2.x only\r\n BRIDGE_SUPPORT_VUE_2_ONLY: inc(),\r\n // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``\r\n MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(),\r\n // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly\r\n NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(),\r\n // for enhancement\r\n __EXTEND_POINT__: inc() // 29\r\n};\r\nfunction createI18nError(code, ...args) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);\r\n}\r\nconst errorMessages = {\r\n [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\r\n [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\r\n [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\r\n [I18nErrorCodes.NOT_INSLALLED]: 'Need to install with `app.use` function',\r\n [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\r\n [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode',\r\n [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\r\n [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\r\n [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\r\n [I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\r\n [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\r\n [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only',\r\n [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: 'Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode',\r\n [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly'\r\n};\n\nconst TransrateVNodeSymbol = \r\n/* #__PURE__*/ makeSymbol('__transrateVNode');\r\nconst DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts');\r\nconst NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts');\r\nconst EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter');\r\nconst DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter');\r\nconst SetPluralRulesSymbol = makeSymbol('__setPluralRules');\r\nmakeSymbol('__intlifyMeta');\r\nconst InejctWithOption = /* #__PURE__*/ makeSymbol('__injectWithOption');\r\nconst __VUE_I18N_BRIDGE__ = '__VUE_I18N_BRIDGE__';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Transform flat json in obj to normal json in obj\r\n */\r\nfunction handleFlatJson(obj) {\r\n // check obj\r\n if (!isObject(obj)) {\r\n return obj;\r\n }\r\n for (const key in obj) {\r\n // check key\r\n if (!hasOwn(obj, key)) {\r\n continue;\r\n }\r\n // handle for normal json\r\n if (!key.includes('.')) {\r\n // recursive process value if value is also a object\r\n if (isObject(obj[key])) {\r\n handleFlatJson(obj[key]);\r\n }\r\n }\r\n // handle for flat json, transform to normal json\r\n else {\r\n // go to the last object\r\n const subKeys = key.split('.');\r\n const lastIndex = subKeys.length - 1;\r\n let currentObj = obj;\r\n for (let i = 0; i < lastIndex; i++) {\r\n if (!(subKeys[i] in currentObj)) {\r\n currentObj[subKeys[i]] = {};\r\n }\r\n currentObj = currentObj[subKeys[i]];\r\n }\r\n // update last object value, delete old property\r\n currentObj[subKeys[lastIndex]] = obj[key];\r\n delete obj[key];\r\n // recursive process value if value is also a object\r\n if (isObject(currentObj[subKeys[lastIndex]])) {\r\n handleFlatJson(currentObj[subKeys[lastIndex]]);\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\nfunction getLocaleMessages(locale, options) {\r\n const { messages, __i18n, messageResolver, flatJson } = options;\r\n // prettier-ignore\r\n const ret = isPlainObject(messages)\r\n ? messages\r\n : isArray(__i18n)\r\n ? {}\r\n : { [locale]: {} };\r\n // merge locale messages of i18n custom block\r\n if (isArray(__i18n)) {\r\n __i18n.forEach(custom => {\r\n if ('locale' in custom && 'resource' in custom) {\r\n const { locale, resource } = custom;\r\n if (locale) {\r\n ret[locale] = ret[locale] || {};\r\n deepCopy(resource, ret[locale]);\r\n }\r\n else {\r\n deepCopy(resource, ret);\r\n }\r\n }\r\n else {\r\n isString(custom) && deepCopy(JSON.parse(custom), ret);\r\n }\r\n });\r\n }\r\n // handle messages for flat json\r\n if (messageResolver == null && flatJson) {\r\n for (const key in ret) {\r\n if (hasOwn(ret, key)) {\r\n handleFlatJson(ret[key]);\r\n }\r\n }\r\n }\r\n return ret;\r\n}\r\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction deepCopy(src, des) {\r\n // src and des should both be objects, and non of then can be a array\r\n if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n for (const key in src) {\r\n if (hasOwn(src, key)) {\r\n if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) {\r\n // replace with src[key] when:\r\n // src[key] or des[key] is not a object, or\r\n // src[key] or des[key] is a array\r\n des[key] = src[key];\r\n }\r\n else {\r\n // src[key] and des[key] are both object, merge them\r\n deepCopy(src[key], des[key]);\r\n }\r\n }\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getComponentOptions(instance) {\r\n return instance.type ;\r\n}\r\nfunction adjustI18nResources(global, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n let messages = isObject(options.messages) ? options.messages : {};\r\n if ('__i18nGlobal' in componentOptions) {\r\n messages = getLocaleMessages(global.locale.value, {\r\n messages,\r\n __i18n: componentOptions.__i18nGlobal\r\n });\r\n }\r\n // merge locale messages\r\n const locales = Object.keys(messages);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeLocaleMessage(locale, messages[locale]);\r\n });\r\n }\r\n {\r\n // merge datetime formats\r\n if (isObject(options.datetimeFormats)) {\r\n const locales = Object.keys(options.datetimeFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\r\n });\r\n }\r\n }\r\n // merge number formats\r\n if (isObject(options.numberFormats)) {\r\n const locales = Object.keys(options.numberFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeNumberFormat(locale, options.numberFormats[locale]);\r\n });\r\n }\r\n }\r\n }\r\n}\r\nfunction createTextNode(key) {\r\n return createVNode(Text, null, key, 0)\r\n ;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n// extend VNode interface\r\nconst DEVTOOLS_META = '__INTLIFY_META__';\r\nlet composerID = 0;\r\nfunction defineCoreMissingHandler(missing) {\r\n return ((ctx, locale, key, type) => {\r\n return missing(locale, key, getCurrentInstance() || undefined, type);\r\n });\r\n}\r\n// for Intlify DevTools\r\nconst getMetaInfo = () => {\r\n const instance = getCurrentInstance();\r\n let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\r\n ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : null;\r\n};\r\n/**\r\n * Create composer interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createComposer(options = {}, VueI18nLegacy) {\r\n const { __root } = options;\r\n const _isGlobal = __root === undefined;\r\n let _inheritLocale = isBoolean(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.locale.value\r\n : isString(options.locale)\r\n ? options.locale\r\n : DEFAULT_LOCALE);\r\n const _fallbackLocale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.fallbackLocale.value\r\n : isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = ref(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // prettier-ignore\r\n const _numberFormats = ref(isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // warning suppress options\r\n // prettier-ignore\r\n let _missingWarn = __root\r\n ? __root.missingWarn\r\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackWarn = __root\r\n ? __root.fallbackWarn\r\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackRoot = __root\r\n ? __root.fallbackRoot\r\n : isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n let _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n let _missing = isFunction(options.missing) ? options.missing : null;\r\n let _runtimeMissing = isFunction(options.missing)\r\n ? defineCoreMissingHandler(options.missing)\r\n : null;\r\n // postTranslation handler\r\n let _postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n let _warnHtmlMessage = __root\r\n ? __root.warnHtmlMessage\r\n : isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n let _escapeParameter = !!options.escapeParameter;\r\n // custom linked modifiers\r\n // prettier-ignore\r\n const _modifiers = __root\r\n ? __root.modifiers\r\n : isPlainObject(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\r\n // runtime context\r\n // eslint-disable-next-line prefer-const\r\n let _context;\r\n const getCoreContext = () => {\r\n _isGlobal && setFallbackContext(null);\r\n const ctxOptions = {\r\n version: VERSION,\r\n locale: _locale.value,\r\n fallbackLocale: _fallbackLocale.value,\r\n messages: _messages.value,\r\n modifiers: _modifiers,\r\n pluralRules: _pluralRules,\r\n missing: _runtimeMissing === null ? undefined : _runtimeMissing,\r\n missingWarn: _missingWarn,\r\n fallbackWarn: _fallbackWarn,\r\n fallbackFormat: _fallbackFormat,\r\n unresolving: true,\r\n postTranslation: _postTranslation === null ? undefined : _postTranslation,\r\n warnHtmlMessage: _warnHtmlMessage,\r\n escapeParameter: _escapeParameter,\r\n messageResolver: options.messageResolver,\r\n __meta: { framework: 'vue' }\r\n };\r\n {\r\n ctxOptions.datetimeFormats = _datetimeFormats.value;\r\n ctxOptions.numberFormats = _numberFormats.value;\r\n ctxOptions.__datetimeFormatters = isPlainObject(_context)\r\n ? _context.__datetimeFormatters\r\n : undefined;\r\n ctxOptions.__numberFormatters = isPlainObject(_context)\r\n ? _context.__numberFormatters\r\n : undefined;\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n ctxOptions.__v_emitter = isPlainObject(_context)\r\n ? _context.__v_emitter\r\n : undefined;\r\n }\r\n const ctx = createCoreContext(ctxOptions);\r\n _isGlobal && setFallbackContext(ctx);\r\n return ctx;\r\n };\r\n _context = getCoreContext();\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ]\r\n ;\r\n }\r\n // locale\r\n const locale = computed({\r\n get: () => _locale.value,\r\n set: val => {\r\n _locale.value = val;\r\n _context.locale = _locale.value;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = computed({\r\n get: () => _fallbackLocale.value,\r\n set: val => {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = _fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, val);\r\n }\r\n });\r\n // messages\r\n const messages = computed(() => _messages.value);\r\n // datetimeFormats\r\n const datetimeFormats = /* #__PURE__*/ computed(() => _datetimeFormats.value);\r\n // numberFormats\r\n const numberFormats = /* #__PURE__*/ computed(() => _numberFormats.value);\r\n // getPostTranslationHandler\r\n function getPostTranslationHandler() {\r\n return isFunction(_postTranslation) ? _postTranslation : null;\r\n }\r\n // setPostTranslationHandler\r\n function setPostTranslationHandler(handler) {\r\n _postTranslation = handler;\r\n _context.postTranslation = handler;\r\n }\r\n // getMissingHandler\r\n function getMissingHandler() {\r\n return _missing;\r\n }\r\n // setMissingHandler\r\n function setMissingHandler(handler) {\r\n if (handler !== null) {\r\n _runtimeMissing = defineCoreMissingHandler(handler);\r\n }\r\n _missing = handler;\r\n _context.missing = _runtimeMissing;\r\n }\r\n function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n return type !== 'translate' || !arg.resolvedMessage;\r\n }\r\n const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {\r\n trackReactivityValues(); // track reactive dependency\r\n // NOTE: experimental !!\r\n let ret;\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n try {\r\n setAdditionalMeta(getMetaInfo());\r\n if (!_isGlobal) {\r\n _context.fallbackContext = __root\r\n ? getFallbackContext()\r\n : undefined;\r\n }\r\n ret = fn(_context);\r\n }\r\n finally {\r\n setAdditionalMeta(null);\r\n if (!_isGlobal) {\r\n _context.fallbackContext = undefined;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fn(_context);\r\n }\r\n if (isNumber(ret) && ret === NOT_REOSLVED) {\r\n const [key, arg2] = argumentParser();\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n __root &&\r\n isString(key) &&\r\n isResolvedTranslateMessage(warnType, arg2)) {\r\n if (_fallbackRoot &&\r\n (isTranslateFallbackWarn(_fallbackWarn, key) ||\r\n isTranslateMissingWarn(_missingWarn, key))) {\r\n warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\r\n key,\r\n type: warnType\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const { __v_emitter: emitter } = _context;\r\n if (emitter && _fallbackRoot) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type: warnType,\r\n key,\r\n to: 'global',\r\n groupId: `${warnType}:${key}`\r\n });\r\n }\r\n }\r\n }\r\n return __root && _fallbackRoot\r\n ? fallbackSuccess(__root)\r\n : fallbackFail(key);\r\n }\r\n else if (successCondition(ret)) {\r\n return ret;\r\n }\r\n else {\r\n /* istanbul ignore next */\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\r\n }\r\n };\r\n // t\r\n function t(...args) {\r\n return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val));\r\n }\r\n // rt\r\n function rt(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n if (arg3 && !isObject(arg3)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);\r\n }\r\n // d\r\n function d(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // n\r\n function n(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // for custom processor\r\n function normalize(values) {\r\n return values.map(val => isString(val) || isNumber(val) || isBoolean(val)\r\n ? createTextNode(String(val))\r\n : val);\r\n }\r\n const interpolate = (val) => val;\r\n const processor = {\r\n normalize,\r\n interpolate,\r\n type: 'vnode'\r\n };\r\n // transrateVNode, using for `i18n-t` component\r\n function transrateVNode(...args) {\r\n return wrapWithDeps(context => {\r\n let ret;\r\n const _context = context;\r\n try {\r\n _context.processor = processor;\r\n ret = Reflect.apply(translate, null, [_context, ...args]);\r\n }\r\n finally {\r\n _context.processor = null;\r\n }\r\n return ret;\r\n }, () => parseTranslateArgs(...args), 'translate', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[TransrateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val));\r\n }\r\n // numberParts, using for `i18n-n` component\r\n function numberParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[NumberPartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n // datetimeParts, using for `i18n-d` component\r\n function datetimeParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[DatetimePartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n function setPluralRules(rules) {\r\n _pluralRules = rules;\r\n _context.pluralRules = _pluralRules;\r\n }\r\n // te\r\n function te(key, locale) {\r\n const targetLocale = isString(locale) ? locale : _locale.value;\r\n const message = getLocaleMessage(targetLocale);\r\n return _context.messageResolver(message, key) !== null;\r\n }\r\n function resolveMessages(key) {\r\n let messages = null;\r\n const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);\r\n for (let i = 0; i < locales.length; i++) {\r\n const targetLocaleMessages = _messages.value[locales[i]] || {};\r\n const messageValue = _context.messageResolver(targetLocaleMessages, key);\r\n if (messageValue != null) {\r\n messages = messageValue;\r\n break;\r\n }\r\n }\r\n return messages;\r\n }\r\n // tm\r\n function tm(key) {\r\n const messages = resolveMessages(key);\r\n // prettier-ignore\r\n return messages != null\r\n ? messages\r\n : __root\r\n ? __root.tm(key) || {}\r\n : {};\r\n }\r\n // getLocaleMessage\r\n function getLocaleMessage(locale) {\r\n return (_messages.value[locale] || {});\r\n }\r\n // setLocaleMessage\r\n function setLocaleMessage(locale, message) {\r\n _messages.value[locale] = message;\r\n _context.messages = _messages.value;\r\n }\r\n // mergeLocaleMessage\r\n function mergeLocaleMessage(locale, message) {\r\n _messages.value[locale] = _messages.value[locale] || {};\r\n deepCopy(message, _messages.value[locale]);\r\n _context.messages = _messages.value;\r\n }\r\n // getDateTimeFormat\r\n function getDateTimeFormat(locale) {\r\n return _datetimeFormats.value[locale] || {};\r\n }\r\n // setDateTimeFormat\r\n function setDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = format;\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // mergeDateTimeFormat\r\n function mergeDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format);\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // getNumberFormat\r\n function getNumberFormat(locale) {\r\n return _numberFormats.value[locale] || {};\r\n }\r\n // setNumberFormat\r\n function setNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = format;\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // mergeNumberFormat\r\n function mergeNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format);\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // for debug\r\n composerID++;\r\n // watch root locale & fallbackLocale\r\n if (__root && inBrowser) {\r\n watch(__root.locale, (val) => {\r\n if (_inheritLocale) {\r\n _locale.value = val;\r\n _context.locale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n watch(__root.fallbackLocale, (val) => {\r\n if (_inheritLocale) {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n }\r\n // define basic composition API!\r\n const composer = {\r\n id: composerID,\r\n locale,\r\n fallbackLocale,\r\n get inheritLocale() {\r\n return _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n _inheritLocale = val;\r\n if (val && __root) {\r\n _locale.value = __root.locale.value;\r\n _fallbackLocale.value = __root.fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n },\r\n get availableLocales() {\r\n return Object.keys(_messages.value).sort();\r\n },\r\n messages,\r\n get modifiers() {\r\n return _modifiers;\r\n },\r\n get pluralRules() {\r\n return _pluralRules || {};\r\n },\r\n get isGlobal() {\r\n return _isGlobal;\r\n },\r\n get missingWarn() {\r\n return _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n _missingWarn = val;\r\n _context.missingWarn = _missingWarn;\r\n },\r\n get fallbackWarn() {\r\n return _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n _fallbackWarn = val;\r\n _context.fallbackWarn = _fallbackWarn;\r\n },\r\n get fallbackRoot() {\r\n return _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n _fallbackRoot = val;\r\n },\r\n get fallbackFormat() {\r\n return _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n _fallbackFormat = val;\r\n _context.fallbackFormat = _fallbackFormat;\r\n },\r\n get warnHtmlMessage() {\r\n return _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n _warnHtmlMessage = val;\r\n _context.warnHtmlMessage = val;\r\n },\r\n get escapeParameter() {\r\n return _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n _escapeParameter = val;\r\n _context.escapeParameter = val;\r\n },\r\n t,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n [SetPluralRulesSymbol]: setPluralRules\r\n };\r\n {\r\n composer.datetimeFormats = datetimeFormats;\r\n composer.numberFormats = numberFormats;\r\n composer.rt = rt;\r\n composer.te = te;\r\n composer.tm = tm;\r\n composer.d = d;\r\n composer.n = n;\r\n composer.getDateTimeFormat = getDateTimeFormat;\r\n composer.setDateTimeFormat = setDateTimeFormat;\r\n composer.mergeDateTimeFormat = mergeDateTimeFormat;\r\n composer.getNumberFormat = getNumberFormat;\r\n composer.setNumberFormat = setNumberFormat;\r\n composer.mergeNumberFormat = mergeNumberFormat;\r\n composer[InejctWithOption] = options.__injectWithOption;\r\n composer[TransrateVNodeSymbol] = transrateVNode;\r\n composer[DatetimePartsSymbol] = datetimeParts;\r\n composer[NumberPartsSymbol] = numberParts;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n composer[EnableEmitter] = (emitter) => {\r\n _context.__v_emitter = emitter;\r\n };\r\n composer[DisableEmitter] = () => {\r\n _context.__v_emitter = undefined;\r\n };\r\n }\r\n return composer;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Convert to I18n Composer Options from VueI18n Options\r\n *\r\n * @internal\r\n */\r\nfunction convertComposerOptions(options) {\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const missing = isFunction(options.missing) ? options.missing : undefined;\r\n const missingWarn = isBoolean(options.silentTranslationWarn) ||\r\n isRegExp(options.silentTranslationWarn)\r\n ? !options.silentTranslationWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.silentFallbackWarn) ||\r\n isRegExp(options.silentFallbackWarn)\r\n ? !options.silentFallbackWarn\r\n : true;\r\n const fallbackRoot = isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n const fallbackFormat = !!options.formatFallbackMessages;\r\n const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};\r\n const pluralizationRules = options.pluralizationRules;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : undefined;\r\n const warnHtmlMessage = isString(options.warnHtmlInMessage)\r\n ? options.warnHtmlInMessage !== 'off'\r\n : true;\r\n const escapeParameter = !!options.escapeParameterHtml;\r\n const inheritLocale = isBoolean(options.sync) ? options.sync : true;\r\n if ((process.env.NODE_ENV !== 'production') && options.formatter) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && options.preserveDirectiveContent) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n }\r\n let messages = options.messages;\r\n if (isPlainObject(options.sharedMessages)) {\r\n const sharedMessages = options.sharedMessages;\r\n const locales = Object.keys(sharedMessages);\r\n messages = locales.reduce((messages, locale) => {\r\n const message = messages[locale] || (messages[locale] = {});\r\n assign(message, sharedMessages[locale]);\r\n return messages;\r\n }, (messages || {}));\r\n }\r\n const { __i18n, __root, __injectWithOption } = options;\r\n const datetimeFormats = options.datetimeFormats;\r\n const numberFormats = options.numberFormats;\r\n const flatJson = options.flatJson;\r\n return {\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n flatJson,\r\n datetimeFormats,\r\n numberFormats,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackRoot,\r\n fallbackFormat,\r\n modifiers,\r\n pluralRules: pluralizationRules,\r\n postTranslation,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageResolver: options.messageResolver,\r\n inheritLocale,\r\n __i18n,\r\n __root,\r\n __injectWithOption\r\n };\r\n}\r\n/**\r\n * create VueI18n interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createVueI18n(options = {}, VueI18nLegacy) {\r\n {\r\n const composer = createComposer(convertComposerOptions(options));\r\n // defines VueI18n\r\n const vueI18n = {\r\n // id\r\n id: composer.id,\r\n // locale\r\n get locale() {\r\n return composer.locale.value;\r\n },\r\n set locale(val) {\r\n composer.locale.value = val;\r\n },\r\n // fallbackLocale\r\n get fallbackLocale() {\r\n return composer.fallbackLocale.value;\r\n },\r\n set fallbackLocale(val) {\r\n composer.fallbackLocale.value = val;\r\n },\r\n // messages\r\n get messages() {\r\n return composer.messages.value;\r\n },\r\n // datetimeFormats\r\n get datetimeFormats() {\r\n return composer.datetimeFormats.value;\r\n },\r\n // numberFormats\r\n get numberFormats() {\r\n return composer.numberFormats.value;\r\n },\r\n // availableLocales\r\n get availableLocales() {\r\n return composer.availableLocales;\r\n },\r\n // formatter\r\n get formatter() {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n // dummy\r\n return {\r\n interpolate() {\r\n return [];\r\n }\r\n };\r\n },\r\n set formatter(val) {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n },\r\n // missing\r\n get missing() {\r\n return composer.getMissingHandler();\r\n },\r\n set missing(handler) {\r\n composer.setMissingHandler(handler);\r\n },\r\n // silentTranslationWarn\r\n get silentTranslationWarn() {\r\n return isBoolean(composer.missingWarn)\r\n ? !composer.missingWarn\r\n : composer.missingWarn;\r\n },\r\n set silentTranslationWarn(val) {\r\n composer.missingWarn = isBoolean(val) ? !val : val;\r\n },\r\n // silentFallbackWarn\r\n get silentFallbackWarn() {\r\n return isBoolean(composer.fallbackWarn)\r\n ? !composer.fallbackWarn\r\n : composer.fallbackWarn;\r\n },\r\n set silentFallbackWarn(val) {\r\n composer.fallbackWarn = isBoolean(val) ? !val : val;\r\n },\r\n // modifiers\r\n get modifiers() {\r\n return composer.modifiers;\r\n },\r\n // formatFallbackMessages\r\n get formatFallbackMessages() {\r\n return composer.fallbackFormat;\r\n },\r\n set formatFallbackMessages(val) {\r\n composer.fallbackFormat = val;\r\n },\r\n // postTranslation\r\n get postTranslation() {\r\n return composer.getPostTranslationHandler();\r\n },\r\n set postTranslation(handler) {\r\n composer.setPostTranslationHandler(handler);\r\n },\r\n // sync\r\n get sync() {\r\n return composer.inheritLocale;\r\n },\r\n set sync(val) {\r\n composer.inheritLocale = val;\r\n },\r\n // warnInHtmlMessage\r\n get warnHtmlInMessage() {\r\n return composer.warnHtmlMessage ? 'warn' : 'off';\r\n },\r\n set warnHtmlInMessage(val) {\r\n composer.warnHtmlMessage = val !== 'off';\r\n },\r\n // escapeParameterHtml\r\n get escapeParameterHtml() {\r\n return composer.escapeParameter;\r\n },\r\n set escapeParameterHtml(val) {\r\n composer.escapeParameter = val;\r\n },\r\n // preserveDirectiveContent\r\n get preserveDirectiveContent() {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n return true;\r\n },\r\n set preserveDirectiveContent(val) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n },\r\n // pluralizationRules\r\n get pluralizationRules() {\r\n return composer.pluralRules || {};\r\n },\r\n // for internal\r\n __composer: composer,\r\n // t\r\n t(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n rt(...args) {\r\n return Reflect.apply(composer.rt, composer, [...args]);\r\n },\r\n // tc\r\n tc(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = { plural: 1 };\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n // te\r\n te(key, locale) {\r\n return composer.te(key, locale);\r\n },\r\n // tm\r\n tm(key) {\r\n return composer.tm(key);\r\n },\r\n // getLocaleMessage\r\n getLocaleMessage(locale) {\r\n return composer.getLocaleMessage(locale);\r\n },\r\n // setLocaleMessage\r\n setLocaleMessage(locale, message) {\r\n composer.setLocaleMessage(locale, message);\r\n },\r\n // mergeLocaleMessage\r\n mergeLocaleMessage(locale, message) {\r\n composer.mergeLocaleMessage(locale, message);\r\n },\r\n // d\r\n d(...args) {\r\n return Reflect.apply(composer.d, composer, [...args]);\r\n },\r\n // getDateTimeFormat\r\n getDateTimeFormat(locale) {\r\n return composer.getDateTimeFormat(locale);\r\n },\r\n // setDateTimeFormat\r\n setDateTimeFormat(locale, format) {\r\n composer.setDateTimeFormat(locale, format);\r\n },\r\n // mergeDateTimeFormat\r\n mergeDateTimeFormat(locale, format) {\r\n composer.mergeDateTimeFormat(locale, format);\r\n },\r\n // n\r\n n(...args) {\r\n return Reflect.apply(composer.n, composer, [...args]);\r\n },\r\n // getNumberFormat\r\n getNumberFormat(locale) {\r\n return composer.getNumberFormat(locale);\r\n },\r\n // setNumberFormat\r\n setNumberFormat(locale, format) {\r\n composer.setNumberFormat(locale, format);\r\n },\r\n // mergeNumberFormat\r\n mergeNumberFormat(locale, format) {\r\n composer.mergeNumberFormat(locale, format);\r\n },\r\n // getChoiceIndex\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n getChoiceIndex(choice, choicesLength) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));\r\n return -1;\r\n },\r\n // for internal\r\n __onComponentInstanceCreated(target) {\r\n const { componentInstanceCreatedListener } = options;\r\n if (componentInstanceCreatedListener) {\r\n componentInstanceCreatedListener(target, vueI18n);\r\n }\r\n }\r\n };\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n vueI18n.__enableEmitter = (emitter) => {\r\n const __composer = composer;\r\n __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\r\n };\r\n vueI18n.__disableEmitter = () => {\r\n const __composer = composer;\r\n __composer[DisableEmitter] && __composer[DisableEmitter]();\r\n };\r\n }\r\n return vueI18n;\r\n }\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst baseFormatProps = {\r\n tag: {\r\n type: [String, Object]\r\n },\r\n locale: {\r\n type: String\r\n },\r\n scope: {\r\n type: String,\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n validator: (val /* ComponetI18nScope */) => val === 'parent' || val === 'global',\r\n default: 'parent' /* ComponetI18nScope */\r\n },\r\n i18n: {\r\n type: Object\r\n }\r\n};\n\nfunction getInterpolateArg(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n{ slots }, // SetupContext,\r\nkeys) {\r\n if (keys.length === 1 && keys[0] === 'default') {\r\n // default slot with list\r\n const ret = slots.default ? slots.default() : [];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return ret.reduce((slot, current) => {\r\n return (slot = [\r\n ...slot,\r\n ...(isArray(current.children) ? current.children : [current])\r\n ]);\r\n }, []);\r\n }\r\n else {\r\n // named slots\r\n return keys.reduce((arg, key) => {\r\n const slot = slots[key];\r\n if (slot) {\r\n arg[key] = slot();\r\n }\r\n return arg;\r\n }, {});\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getFragmentableTag(tag) {\r\n return Fragment ;\r\n}\n\n/**\r\n * Translation Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [TranslationProps](component#translationprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\r\n *\r\n * @example\r\n * ```html\r\n * <div id=\"app\">\r\n * <!-- ... -->\r\n * <i18n path=\"term\" tag=\"label\" for=\"tos\">\r\n * <a :href=\"url\" target=\"_blank\">{{ $t('tos') }}</a>\r\n * </i18n>\r\n * <!-- ... -->\r\n * </div>\r\n * ```\r\n * ```js\r\n * import { createApp } from 'vue'\r\n * import { createI18n } from 'vue-i18n'\r\n *\r\n * const messages = {\r\n * en: {\r\n * tos: 'Term of Service',\r\n * term: 'I accept xxx {0}.'\r\n * },\r\n * ja: {\r\n * tos: '利用規約',\r\n * term: '私は xxx の{0}に同意します。'\r\n * }\r\n * }\r\n *\r\n * const i18n = createI18n({\r\n * locale: 'en',\r\n * messages\r\n * })\r\n *\r\n * const app = createApp({\r\n * data: {\r\n * url: '/term'\r\n * }\r\n * }).use(i18n).mount('#app')\r\n * ```\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst Translation = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-t',\r\n props: assign({\r\n keypath: {\r\n type: String,\r\n required: true\r\n },\r\n plural: {\r\n type: [Number, String],\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n validator: (val) => isNumber(val) || !isNaN(val)\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const { slots, attrs } = context;\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n const i18n = props.i18n ||\r\n useI18n({\r\n useScope: props.scope,\r\n __useComponent: true\r\n });\r\n return () => {\r\n const keys = Object.keys(slots).filter(key => key !== '_');\r\n const options = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (props.plural !== undefined) {\r\n options.plural = isString(props.plural) ? +props.plural : props.plural;\r\n }\r\n const arg = getInterpolateArg(context, keys);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const children = i18n[TransrateVNodeSymbol](props.keypath, arg, options);\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n }\r\n};\n\nfunction isVNode(target) {\r\n return isArray(target) && !isString(target[0]);\r\n}\r\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\r\n const { slots, attrs } = context;\r\n return () => {\r\n const options = { part: true };\r\n let overrides = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (isString(props.format)) {\r\n options.key = props.format;\r\n }\r\n else if (isObject(props.format)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (isString(props.format.key)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n options.key = props.format.key;\r\n }\r\n // Filter out number format options only\r\n overrides = Object.keys(props.format).reduce((options, prop) => {\r\n return slotKeys.includes(prop)\r\n ? assign({}, options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : options;\r\n }, {});\r\n }\r\n const parts = partFormatter(...[props.value, options, overrides]);\r\n let children = [options.key];\r\n if (isArray(parts)) {\r\n children = parts.map((part, index) => {\r\n const slot = slots[part.type];\r\n const node = slot\r\n ? slot({ [part.type]: part.value, index, parts })\r\n : [part.value];\r\n if (isVNode(node)) {\r\n node[0].key = `${part.type}-${index}`;\r\n }\r\n return node;\r\n });\r\n }\r\n else if (isString(parts)) {\r\n children = [parts];\r\n }\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n}\n\n/**\r\n * Number Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst NumberFormat = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-n',\r\n props: assign({\r\n value: {\r\n type: Number,\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[NumberPartsSymbol](...args));\r\n }\r\n};\n\n/**\r\n * Datetime Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst DatetimeFormat = /*defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-d',\r\n props: assign({\r\n value: {\r\n type: [Number, Date],\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[DatetimePartsSymbol](...args));\r\n }\r\n};\n\nfunction getComposer$2(i18n, instance) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n return (i18nInternal.__getInstance(instance) || i18n.global);\r\n }\r\n else {\r\n const vueI18n = i18nInternal.__getInstance(instance);\r\n return vueI18n != null\r\n ? vueI18n.__composer\r\n : i18n.global.__composer;\r\n }\r\n}\r\nfunction vTDirective(i18n) {\r\n const _process = (binding) => {\r\n const { instance, modifiers, value } = binding;\r\n /* istanbul ignore if */\r\n if (!instance || !instance.$) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const composer = getComposer$2(i18n, instance.$);\r\n if ((process.env.NODE_ENV !== 'production') && modifiers.preserve) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));\r\n }\r\n const parsedValue = parseValue(value);\r\n return [\r\n Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),\r\n composer\r\n ];\r\n };\r\n const register = (el, binding) => {\r\n const [textContent, composer] = _process(binding);\r\n if (inBrowser && i18n.global === composer) {\r\n // global scope only\r\n el.__i18nWatcher = watch(composer.locale, () => {\r\n binding.instance && binding.instance.$forceUpdate();\r\n });\r\n }\r\n el.__composer = composer;\r\n el.textContent = textContent;\r\n };\r\n const unregister = (el) => {\r\n if (inBrowser && el.__i18nWatcher) {\r\n el.__i18nWatcher();\r\n el.__i18nWatcher = undefined;\r\n delete el.__i18nWatcher;\r\n }\r\n if (el.__composer) {\r\n el.__composer = undefined;\r\n delete el.__composer;\r\n }\r\n };\r\n const update = (el, { value }) => {\r\n if (el.__composer) {\r\n const composer = el.__composer;\r\n const parsedValue = parseValue(value);\r\n el.textContent = Reflect.apply(composer.t, composer, [\r\n ...makeParams(parsedValue)\r\n ]);\r\n }\r\n };\r\n const getSSRProps = (binding) => {\r\n const [textContent] = _process(binding);\r\n return { textContent };\r\n };\r\n return {\r\n created: register,\r\n unmounted: unregister,\r\n beforeUpdate: update,\r\n getSSRProps\r\n };\r\n}\r\nfunction parseValue(value) {\r\n if (isString(value)) {\r\n return { path: value };\r\n }\r\n else if (isPlainObject(value)) {\r\n if (!('path' in value)) {\r\n throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\r\n }\r\n return value;\r\n }\r\n else {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n}\r\nfunction makeParams(value) {\r\n const { path, locale, args, choice, plural } = value;\r\n const options = {};\r\n const named = args || {};\r\n if (isString(locale)) {\r\n options.locale = locale;\r\n }\r\n if (isNumber(choice)) {\r\n options.plural = choice;\r\n }\r\n if (isNumber(plural)) {\r\n options.plural = plural;\r\n }\r\n return [path, named, options];\r\n}\n\nfunction apply(app, i18n, ...options) {\r\n const pluginOptions = isPlainObject(options[0])\r\n ? options[0]\r\n : {};\r\n const useI18nComponentName = !!pluginOptions.useI18nComponentName;\r\n const globalInstall = isBoolean(pluginOptions.globalInstall)\r\n ? pluginOptions.globalInstall\r\n : true;\r\n if ((process.env.NODE_ENV !== 'production') && globalInstall && useI18nComponentName) {\r\n warn(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {\r\n name: Translation.name\r\n }));\r\n }\r\n if (globalInstall) {\r\n // install components\r\n app.component(!useI18nComponentName ? Translation.name : 'i18n', Translation);\r\n app.component(NumberFormat.name, NumberFormat);\r\n app.component(DatetimeFormat.name, DatetimeFormat);\r\n }\r\n // install directive\r\n {\r\n app.directive('t', vTDirective(i18n));\r\n }\r\n}\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\r\nlet devtoolsApi;\r\nasync function enableDevTools(app, i18n) {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n setupDevtoolsPlugin({\r\n id: \"vue-devtools-plugin-vue-i18n\" /* PLUGIN */,\r\n label: VueDevToolsLabels[\"vue-devtools-plugin-vue-i18n\" /* PLUGIN */],\r\n packageName: 'vue-i18n',\r\n homepage: 'https://vue-i18n.intlify.dev',\r\n logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\r\n componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\r\n app: app // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }, api => {\r\n devtoolsApi = api;\r\n api.on.visitComponentTree(({ componentInstance, treeNode }) => {\r\n updateComponentTreeTags(componentInstance, treeNode, i18n);\r\n });\r\n api.on.inspectComponent(({ componentInstance, instanceData }) => {\r\n if (componentInstance.vnode.el &&\r\n componentInstance.vnode.el.__VUE_I18N__ &&\r\n instanceData) {\r\n if (i18n.mode === 'legacy') {\r\n // ignore global scope on legacy mode\r\n if (componentInstance.vnode.el.__VUE_I18N__ !==\r\n i18n.global.__composer) {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n else {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n });\r\n api.addInspector({\r\n id: \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */,\r\n label: VueDevToolsLabels[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */],\r\n icon: 'language',\r\n treeFilterPlaceholder: VueDevToolsPlaceholders[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]\r\n });\r\n api.on.getInspectorTree(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n registerScope(payload, i18n);\r\n }\r\n });\r\n const roots = new Map();\r\n api.on.getInspectorState(async (payload) => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n api.unhighlightElement();\r\n inspectScope(payload, i18n);\r\n if (payload.nodeId === 'global') {\r\n if (!roots.has(payload.app)) {\r\n const [root] = await api.getComponentInstances(payload.app);\r\n roots.set(payload.app, root);\r\n }\r\n api.highlightElement(roots.get(payload.app));\r\n }\r\n else {\r\n const instance = getComponentInstance(payload.nodeId, i18n);\r\n instance && api.highlightElement(instance);\r\n }\r\n }\r\n });\r\n api.on.editInspectorState(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n editScope(payload, i18n);\r\n }\r\n });\r\n api.addTimelineLayer({\r\n id: \"vue-i18n-timeline\" /* TIMELINE */,\r\n label: VueDevToolsLabels[\"vue-i18n-timeline\" /* TIMELINE */],\r\n color: VueDevToolsTimelineColors[\"vue-i18n-timeline\" /* TIMELINE */]\r\n });\r\n resolve(true);\r\n });\r\n }\r\n catch (e) {\r\n console.error(e);\r\n reject(false);\r\n }\r\n });\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getI18nScopeLable(instance) {\r\n return (instance.type.name ||\r\n instance.type.displayName ||\r\n instance.type.__file ||\r\n 'Anonymous');\r\n}\r\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\r\ntreeNode, i18n) {\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\r\n // add custom tags local scope only\r\n if (instance.vnode.el.__VUE_I18N__ !== global) {\r\n const tag = {\r\n label: `i18n (${getI18nScopeLable(instance)} Scope)`,\r\n textColor: 0x000000,\r\n backgroundColor: 0xffcd19\r\n };\r\n treeNode.tags.push(tag);\r\n }\r\n }\r\n}\r\nfunction inspectComposer(instanceData, composer) {\r\n const type = VUE_I18N_COMPONENT_TYPES;\r\n instanceData.state.push({\r\n type,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n });\r\n {\r\n instanceData.state.push({\r\n type,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n });\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getLocaleMessageValue(messages) {\r\n const value = {};\r\n Object.keys(messages).forEach((key) => {\r\n const v = messages[key];\r\n if (isFunction(v) && 'source' in v) {\r\n value[key] = getMessageFunctionDetails(v);\r\n }\r\n else if (isObject(v)) {\r\n value[key] = getLocaleMessageValue(v);\r\n }\r\n else {\r\n value[key] = v;\r\n }\r\n });\r\n return value;\r\n}\r\nconst ESC = {\r\n '<': '&lt;',\r\n '>': '&gt;',\r\n '\"': '&quot;',\r\n '&': '&amp;'\r\n};\r\nfunction escape(s) {\r\n return s.replace(/[<>\"&]/g, escapeChar);\r\n}\r\nfunction escapeChar(a) {\r\n return ESC[a] || a;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getMessageFunctionDetails(func) {\r\n const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\r\n return {\r\n _custom: {\r\n type: 'function',\r\n display: `<span>ƒ</span> ${argString}`\r\n }\r\n };\r\n}\r\nfunction registerScope(payload, i18n) {\r\n payload.rootNodes.push({\r\n id: 'global',\r\n label: 'Global Scope'\r\n });\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n for (const [keyInstance, instance] of i18n.__instances) {\r\n // prettier-ignore\r\n const composer = i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n if (global === composer) {\r\n continue;\r\n }\r\n payload.rootNodes.push({\r\n id: composer.id.toString(),\r\n label: `${getI18nScopeLable(keyInstance)} Scope`\r\n });\r\n }\r\n}\r\nfunction getComponentInstance(nodeId, i18n) {\r\n let instance = null;\r\n if (nodeId !== 'global') {\r\n for (const [component, composer] of i18n.__instances.entries()) {\r\n if (composer.id.toString() === nodeId) {\r\n instance = component;\r\n break;\r\n }\r\n }\r\n }\r\n return instance;\r\n}\r\nfunction getComposer$1(nodeId, i18n) {\r\n if (nodeId === 'global') {\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n }\r\n else {\r\n const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\r\n if (instance) {\r\n return i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\r\nfunction inspectScope(payload, i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n // TODO:\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n payload.state = makeScopeInspectState(composer);\r\n }\r\n return null;\r\n}\r\nfunction makeScopeInspectState(composer) {\r\n const state = {};\r\n const localeType = 'Locale related info';\r\n const localeStates = [\r\n {\r\n type: localeType,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n },\r\n {\r\n type: localeType,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n }\r\n ];\r\n state[localeType] = localeStates;\r\n const localeMessagesType = 'Locale messages info';\r\n const localeMessagesStates = [\r\n {\r\n type: localeMessagesType,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n }\r\n ];\r\n state[localeMessagesType] = localeMessagesStates;\r\n {\r\n const datetimeFormatsType = 'Datetime formats info';\r\n const datetimeFormatsStates = [\r\n {\r\n type: datetimeFormatsType,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n }\r\n ];\r\n state[datetimeFormatsType] = datetimeFormatsStates;\r\n const numberFormatsType = 'Datetime formats info';\r\n const numberFormatsStates = [\r\n {\r\n type: numberFormatsType,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n }\r\n ];\r\n state[numberFormatsType] = numberFormatsStates;\r\n }\r\n return state;\r\n}\r\nfunction addTimelineEvent(event, payload) {\r\n if (devtoolsApi) {\r\n let groupId;\r\n if (payload && 'groupId' in payload) {\r\n groupId = payload.groupId;\r\n delete payload.groupId;\r\n }\r\n devtoolsApi.addTimelineEvent({\r\n layerId: \"vue-i18n-timeline\" /* TIMELINE */,\r\n event: {\r\n title: event,\r\n groupId,\r\n time: Date.now(),\r\n meta: {},\r\n data: payload || {},\r\n logType: event === \"compile-error\" /* COMPILE_ERROR */\r\n ? 'error'\r\n : event === \"fallback\" /* FALBACK */ ||\r\n event === \"missing\" /* MISSING */\r\n ? 'warning'\r\n : 'default'\r\n }\r\n });\r\n }\r\n}\r\nfunction editScope(payload, i18n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n const [field] = payload.path;\r\n if (field === 'locale' && isString(payload.state.value)) {\r\n composer.locale.value = payload.state.value;\r\n }\r\n else if (field === 'fallbackLocale' &&\r\n (isString(payload.state.value) ||\r\n isArray(payload.state.value) ||\r\n isObject(payload.state.value))) {\r\n composer.fallbackLocale.value = payload.state.value;\r\n }\r\n else if (field === 'inheritLocale' && isBoolean(payload.state.value)) {\r\n composer.inheritLocale = payload.state.value;\r\n }\r\n }\r\n}\n\n/**\r\n * Supports compatibility for legacy vue-i18n APIs\r\n * This mixin is used when we use vue-i18n@v9.x or later\r\n */\r\nfunction defineMixin(vuei18n, composer, i18n) {\r\n return {\r\n beforeCreate() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const options = this.$options;\r\n if (options.i18n) {\r\n const optionsI18n = options.i18n;\r\n if (options.__i18n) {\r\n optionsI18n.__i18n = options.__i18n;\r\n }\r\n optionsI18n.__root = composer;\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, optionsI18n);\r\n }\r\n else {\r\n optionsI18n.__injectWithOption = true;\r\n this.$i18n = createVueI18n(optionsI18n);\r\n }\r\n }\r\n else if (options.__i18n) {\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, options);\r\n }\r\n else {\r\n this.$i18n = createVueI18n({\r\n __i18n: options.__i18n,\r\n __injectWithOption: true,\r\n __root: composer\r\n });\r\n }\r\n }\r\n else {\r\n // set global\r\n this.$i18n = vuei18n;\r\n }\r\n if (options.__i18nGlobal) {\r\n adjustI18nResources(composer, options, options);\r\n }\r\n vuei18n.__onComponentInstanceCreated(this.$i18n);\r\n i18n.__setInstance(instance, this.$i18n);\r\n // defines vue-i18n legacy APIs\r\n this.$t = (...args) => this.$i18n.t(...args);\r\n this.$rt = (...args) => this.$i18n.rt(...args);\r\n this.$tc = (...args) => this.$i18n.tc(...args);\r\n this.$te = (key, locale) => this.$i18n.te(key, locale);\r\n this.$d = (...args) => this.$i18n.d(...args);\r\n this.$n = (...args) => this.$i18n.n(...args);\r\n this.$tm = (key) => this.$i18n.tm(key);\r\n },\r\n mounted() {\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n this.$el &&\r\n this.$i18n) {\r\n this.$el.__VUE_I18N__ = this.$i18n.__composer;\r\n const emitter = (this.__v_emitter =\r\n createEmitter());\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n unmounted() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n this.$el &&\r\n this.$el.__VUE_I18N__) {\r\n if (this.__v_emitter) {\r\n this.__v_emitter.off('*', addTimelineEvent);\r\n delete this.__v_emitter;\r\n }\r\n if (this.$i18n) {\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\r\n delete this.$el.__VUE_I18N__;\r\n }\r\n }\r\n delete this.$t;\r\n delete this.$rt;\r\n delete this.$tc;\r\n delete this.$te;\r\n delete this.$d;\r\n delete this.$n;\r\n delete this.$tm;\r\n i18n.__deleteInstance(instance);\r\n delete this.$i18n;\r\n }\r\n };\r\n}\r\nfunction mergeToRoot(root, options) {\r\n root.locale = options.locale || root.locale;\r\n root.fallbackLocale = options.fallbackLocale || root.fallbackLocale;\r\n root.missing = options.missing || root.missing;\r\n root.silentTranslationWarn =\r\n options.silentTranslationWarn || root.silentFallbackWarn;\r\n root.silentFallbackWarn =\r\n options.silentFallbackWarn || root.silentFallbackWarn;\r\n root.formatFallbackMessages =\r\n options.formatFallbackMessages || root.formatFallbackMessages;\r\n root.postTranslation = options.postTranslation || root.postTranslation;\r\n root.warnHtmlInMessage = options.warnHtmlInMessage || root.warnHtmlInMessage;\r\n root.escapeParameterHtml =\r\n options.escapeParameterHtml || root.escapeParameterHtml;\r\n root.sync = options.sync || root.sync;\r\n root.__composer[SetPluralRulesSymbol](options.pluralizationRules || root.pluralizationRules);\r\n const messages = getLocaleMessages(root.locale, {\r\n messages: options.messages,\r\n __i18n: options.__i18n\r\n });\r\n Object.keys(messages).forEach(locale => root.mergeLocaleMessage(locale, messages[locale]));\r\n if (options.datetimeFormats) {\r\n Object.keys(options.datetimeFormats).forEach(locale => root.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\r\n }\r\n if (options.numberFormats) {\r\n Object.keys(options.numberFormats).forEach(locale => root.mergeNumberFormat(locale, options.numberFormats[locale]));\r\n }\r\n return root;\r\n}\n\n/**\r\n * Injection key for {@link useI18n}\r\n *\r\n * @remarks\r\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\r\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst I18nInjectionKey = \r\n/* #__PURE__*/ makeSymbol('global-vue-i18n');\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction createI18n(options = {}, VueI18nLegacy) {\r\n // prettier-ignore\r\n const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)\r\n ? options.legacy\r\n : __VUE_I18N_LEGACY_API__;\r\n // prettier-ignore\r\n const __globalInjection = isBoolean(options.globalInjection)\r\n ? options.globalInjection\r\n : true;\r\n // prettier-ignore\r\n const __allowComposition = __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? !!options.allowComposition\r\n : true;\r\n const __instances = new Map();\r\n const [globalScope, __global] = createGlobal(options, __legacyMode);\r\n const symbol = makeSymbol((process.env.NODE_ENV !== 'production') ? 'vue-i18n' : '');\r\n function __getInstance(component) {\r\n return __instances.get(component) || null;\r\n }\r\n function __setInstance(component, instance) {\r\n __instances.set(component, instance);\r\n }\r\n function __deleteInstance(component) {\r\n __instances.delete(component);\r\n }\r\n {\r\n const i18n = {\r\n // mode\r\n get mode() {\r\n return __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? 'legacy'\r\n : 'composition';\r\n },\r\n // allowComposition\r\n get allowComposition() {\r\n return __allowComposition;\r\n },\r\n // install plugin\r\n async install(app, ...options) {\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false) {\r\n app.__VUE_I18N__ = i18n;\r\n }\r\n // setup global provider\r\n app.__VUE_I18N_SYMBOL__ = symbol;\r\n app.provide(app.__VUE_I18N_SYMBOL__, i18n);\r\n // global method and properties injection for Composition API\r\n if (!__legacyMode && __globalInjection) {\r\n injectGlobalFields(app, i18n.global);\r\n }\r\n // install built-in components and directive\r\n if (__VUE_I18N_FULL_INSTALL__) {\r\n apply(app, i18n, ...options);\r\n }\r\n // setup mixin for Legacy API\r\n if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\r\n app.mixin(defineMixin(__global, __global.__composer, i18n));\r\n }\r\n // release global scope\r\n const unmountApp = app.unmount;\r\n app.unmount = () => {\r\n i18n.dispose();\r\n unmountApp();\r\n };\r\n // setup vue-devtools plugin\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\r\n const ret = await enableDevTools(app, i18n);\r\n if (!ret) {\r\n throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\r\n }\r\n const emitter = createEmitter();\r\n if (__legacyMode) {\r\n const _vueI18n = __global;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = __global;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n }\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n // global accessor\r\n get global() {\r\n return __global;\r\n },\r\n dispose() {\r\n globalScope.stop();\r\n },\r\n // @internal\r\n __instances,\r\n // @internal\r\n __getInstance,\r\n // @internal\r\n __setInstance,\r\n // @internal\r\n __deleteInstance\r\n };\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction useI18n(options = {}) {\r\n const instance = getCurrentInstance();\r\n if (instance == null) {\r\n throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\r\n }\r\n if (!instance.isCE &&\r\n instance.appContext.app != null &&\r\n !instance.appContext.app.__VUE_I18N_SYMBOL__) {\r\n throw createI18nError(I18nErrorCodes.NOT_INSLALLED);\r\n }\r\n const i18n = getI18nInstance(instance);\r\n const global = getGlobalComposer(i18n);\r\n const componentOptions = getComponentOptions(instance);\r\n const scope = getScope(options, componentOptions);\r\n if (__VUE_I18N_LEGACY_API__) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (i18n.mode === 'legacy' && !options.__useComponent) {\r\n if (!i18n.allowComposition) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);\r\n }\r\n return useI18nForLegacy(instance, scope, global, options);\r\n }\r\n }\r\n if (scope === 'global') {\r\n adjustI18nResources(global, options, componentOptions);\r\n return global;\r\n }\r\n if (scope === 'parent') {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let composer = getComposer(i18n, instance, options.__useComponent);\r\n if (composer == null) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\r\n }\r\n composer = global;\r\n }\r\n return composer;\r\n }\r\n const i18nInternal = i18n;\r\n let composer = i18nInternal.__getInstance(instance);\r\n if (composer == null) {\r\n const composerOptions = assign({}, options);\r\n if ('__i18n' in componentOptions) {\r\n composerOptions.__i18n = componentOptions.__i18n;\r\n }\r\n if (global) {\r\n composerOptions.__root = global;\r\n }\r\n composer = createComposer(composerOptions);\r\n setupLifeCycle(i18nInternal, instance, composer);\r\n i18nInternal.__setInstance(instance, composer);\r\n }\r\n return composer;\r\n}\r\n/**\r\n * Cast to VueI18n legacy compatible type\r\n *\r\n * @remarks\r\n * This API is provided only with [vue-i18n-bridge](https://vue-i18n.intlify.dev/guide/migration/ways.html#what-is-vue-i18n-bridge).\r\n *\r\n * The purpose of this function is to convert an {@link I18n} instance created with {@link createI18n | createI18n(legacy: true)} into a `vue-i18n@v8.x` compatible instance of `new VueI18n` in a TypeScript environment.\r\n *\r\n * @param i18n - An instance of {@link I18n}\r\n * @returns A i18n instance which is casted to {@link VueI18n} type\r\n *\r\n * @VueI18nTip\r\n * :new: provided by **vue-i18n-bridge only**\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst castToVueI18n = (i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) => {\r\n if (!(__VUE_I18N_BRIDGE__ in i18n)) {\r\n throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N);\r\n }\r\n return i18n;\r\n};\r\nfunction createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n const scope = effectScope();\r\n {\r\n const obj = __VUE_I18N_LEGACY_API__ && legacyMode\r\n ? scope.run(() => createVueI18n(options))\r\n : scope.run(() => createComposer(options));\r\n if (obj == null) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n return [scope, obj];\r\n }\r\n}\r\nfunction getI18nInstance(instance) {\r\n {\r\n const i18n = inject(!instance.isCE\r\n ? instance.appContext.app.__VUE_I18N_SYMBOL__\r\n : I18nInjectionKey);\r\n /* istanbul ignore if */\r\n if (!i18n) {\r\n throw createI18nError(!instance.isCE\r\n ? I18nErrorCodes.UNEXPECTED_ERROR\r\n : I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE);\r\n }\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getScope(options, componentOptions) {\r\n // prettier-ignore\r\n return isEmptyObject(options)\r\n ? ('__i18n' in componentOptions)\r\n ? 'local'\r\n : 'global'\r\n : !options.useScope\r\n ? 'local'\r\n : options.useScope;\r\n}\r\nfunction getGlobalComposer(i18n) {\r\n // prettier-ignore\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer\r\n ;\r\n}\r\nfunction getComposer(i18n, target, useComponent = false) {\r\n let composer = null;\r\n const root = target.root;\r\n let current = target.parent;\r\n while (current != null) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n composer = i18nInternal.__getInstance(current);\r\n }\r\n else {\r\n if (__VUE_I18N_LEGACY_API__) {\r\n const vueI18n = i18nInternal.__getInstance(current);\r\n if (vueI18n != null) {\r\n composer = vueI18n\r\n .__composer;\r\n if (useComponent &&\r\n composer &&\r\n !composer[InejctWithOption] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n composer = null;\r\n }\r\n }\r\n }\r\n }\r\n if (composer != null) {\r\n break;\r\n }\r\n if (root === current) {\r\n break;\r\n }\r\n current = current.parent;\r\n }\r\n return composer;\r\n}\r\nfunction setupLifeCycle(i18n, target, composer) {\r\n let emitter = null;\r\n {\r\n onMounted(() => {\r\n // inject composer instance to DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el) {\r\n target.vnode.el.__VUE_I18N__ = composer;\r\n emitter = createEmitter();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n }, target);\r\n onUnmounted(() => {\r\n // remove composer instance from DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el &&\r\n target.vnode.el.__VUE_I18N__) {\r\n emitter && emitter.off('*', addTimelineEvent);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[DisableEmitter] && _composer[DisableEmitter]();\r\n delete target.vnode.el.__VUE_I18N__;\r\n }\r\n i18n.__deleteInstance(target);\r\n }, target);\r\n }\r\n}\r\nfunction useI18nForLegacy(instance, scope, root, options = {} // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n const isLocale = scope === 'local';\r\n const _composer = shallowRef(null);\r\n if (isLocale &&\r\n instance.proxy &&\r\n !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) {\r\n throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);\r\n }\r\n const _inheritLocale = isBoolean(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = ref(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.locale.value\r\n : isString(options.locale)\r\n ? options.locale\r\n : DEFAULT_LOCALE);\r\n const _fallbackLocale = ref(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.fallbackLocale.value\r\n : isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = ref(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _numberFormats = ref(isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _missingWarn = isLocale\r\n ? root.missingWarn\r\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackWarn = isLocale\r\n ? root.fallbackWarn\r\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackRoot = isLocale\r\n ? root.fallbackRoot\r\n : isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n const _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n const _missing = isFunction(options.missing) ? options.missing : null;\r\n // postTranslation handler\r\n const _postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n const _warnHtmlMessage = isLocale\r\n ? root.warnHtmlMessage\r\n : isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const _escapeParameter = !!options.escapeParameter;\r\n // prettier-ignore\r\n const _modifiers = isLocale\r\n ? root.modifiers\r\n : isPlainObject(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n const _pluralRules = options.pluralRules || (isLocale && root.pluralRules);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ];\r\n }\r\n // locale\r\n const locale = computed({\r\n get: () => {\r\n return _composer.value ? _composer.value.locale.value : _locale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.locale.value = val;\r\n }\r\n _locale.value = val;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = computed({\r\n get: () => {\r\n return _composer.value\r\n ? _composer.value.fallbackLocale.value\r\n : _fallbackLocale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.fallbackLocale.value = val;\r\n }\r\n _fallbackLocale.value = val;\r\n }\r\n });\r\n // messages\r\n const messages = computed(() => {\r\n if (_composer.value) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _composer.value.messages.value;\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _messages.value;\r\n }\r\n });\r\n const datetimeFormats = computed(() => _datetimeFormats.value);\r\n const numberFormats = computed(() => _numberFormats.value);\r\n function getPostTranslationHandler() {\r\n return _composer.value\r\n ? _composer.value.getPostTranslationHandler()\r\n : _postTranslation;\r\n }\r\n function setPostTranslationHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setPostTranslationHandler(handler);\r\n }\r\n }\r\n function getMissingHandler() {\r\n return _composer.value ? _composer.value.getMissingHandler() : _missing;\r\n }\r\n function setMissingHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setMissingHandler(handler);\r\n }\r\n }\r\n function warpWithDeps(fn) {\r\n trackReactivityValues();\r\n return fn();\r\n }\r\n function t(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function rt(...args) {\r\n return _composer.value\r\n ? Reflect.apply(_composer.value.rt, null, [...args])\r\n : '';\r\n }\r\n function d(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function n(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function tm(key) {\r\n return _composer.value ? _composer.value.tm(key) : {};\r\n }\r\n function te(key, locale) {\r\n return _composer.value ? _composer.value.te(key, locale) : false;\r\n }\r\n function getLocaleMessage(locale) {\r\n return _composer.value ? _composer.value.getLocaleMessage(locale) : {};\r\n }\r\n function setLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.setLocaleMessage(locale, message);\r\n _messages.value[locale] = message;\r\n }\r\n }\r\n function mergeLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.mergeLocaleMessage(locale, message);\r\n }\r\n }\r\n function getDateTimeFormat(locale) {\r\n return _composer.value ? _composer.value.getDateTimeFormat(locale) : {};\r\n }\r\n function setDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setDateTimeFormat(locale, format);\r\n _datetimeFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeDateTimeFormat(locale, format);\r\n }\r\n }\r\n function getNumberFormat(locale) {\r\n return _composer.value ? _composer.value.getNumberFormat(locale) : {};\r\n }\r\n function setNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setNumberFormat(locale, format);\r\n _numberFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeNumberFormat(locale, format);\r\n }\r\n }\r\n const wrapper = {\r\n get id() {\r\n return _composer.value ? _composer.value.id : -1;\r\n },\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n datetimeFormats,\r\n numberFormats,\r\n get inheritLocale() {\r\n return _composer.value ? _composer.value.inheritLocale : _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n if (_composer.value) {\r\n _composer.value.inheritLocale = val;\r\n }\r\n },\r\n get availableLocales() {\r\n return _composer.value\r\n ? _composer.value.availableLocales\r\n : Object.keys(_messages.value);\r\n },\r\n get modifiers() {\r\n return (_composer.value ? _composer.value.modifiers : _modifiers);\r\n },\r\n get pluralRules() {\r\n return (_composer.value ? _composer.value.pluralRules : _pluralRules);\r\n },\r\n get isGlobal() {\r\n return _composer.value ? _composer.value.isGlobal : false;\r\n },\r\n get missingWarn() {\r\n return _composer.value ? _composer.value.missingWarn : _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackWarn() {\r\n return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackRoot() {\r\n return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackRoot = val;\r\n }\r\n },\r\n get fallbackFormat() {\r\n return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackFormat = val;\r\n }\r\n },\r\n get warnHtmlMessage() {\r\n return _composer.value\r\n ? _composer.value.warnHtmlMessage\r\n : _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n if (_composer.value) {\r\n _composer.value.warnHtmlMessage = val;\r\n }\r\n },\r\n get escapeParameter() {\r\n return _composer.value\r\n ? _composer.value.escapeParameter\r\n : _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n if (_composer.value) {\r\n _composer.value.escapeParameter = val;\r\n }\r\n },\r\n t,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n rt,\r\n d,\r\n n,\r\n tm,\r\n te,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getDateTimeFormat,\r\n setDateTimeFormat,\r\n mergeDateTimeFormat,\r\n getNumberFormat,\r\n setNumberFormat,\r\n mergeNumberFormat\r\n };\r\n function sync(composer) {\r\n composer.locale.value = _locale.value;\r\n composer.fallbackLocale.value = _fallbackLocale.value;\r\n Object.keys(_messages.value).forEach(locale => {\r\n composer.mergeLocaleMessage(locale, _messages.value[locale]);\r\n });\r\n Object.keys(_datetimeFormats.value).forEach(locale => {\r\n composer.mergeDateTimeFormat(locale, _datetimeFormats.value[locale]);\r\n });\r\n Object.keys(_numberFormats.value).forEach(locale => {\r\n composer.mergeNumberFormat(locale, _numberFormats.value[locale]);\r\n });\r\n composer.escapeParameter = _escapeParameter;\r\n composer.fallbackFormat = _fallbackFormat;\r\n composer.fallbackRoot = _fallbackRoot;\r\n composer.fallbackWarn = _fallbackWarn;\r\n composer.missingWarn = _missingWarn;\r\n composer.warnHtmlMessage = _warnHtmlMessage;\r\n }\r\n onBeforeMount(() => {\r\n if (instance.proxy == null || instance.proxy.$i18n == null) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const composer = (_composer.value = instance.proxy.$i18n\r\n .__composer);\r\n if (scope === 'global') {\r\n _locale.value = composer.locale.value;\r\n _fallbackLocale.value = composer.fallbackLocale.value;\r\n _messages.value = composer.messages.value;\r\n _datetimeFormats.value = composer.datetimeFormats.value;\r\n _numberFormats.value = composer.numberFormats.value;\r\n }\r\n else if (isLocale) {\r\n sync(composer);\r\n }\r\n });\r\n return wrapper;\r\n}\r\nconst globalExportProps = [\r\n 'locale',\r\n 'fallbackLocale',\r\n 'availableLocales'\r\n];\r\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm'] ;\r\nfunction injectGlobalFields(app, composer) {\r\n const i18n = Object.create(null);\r\n globalExportProps.forEach(prop => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, prop);\r\n if (!desc) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const wrap = isRef(desc.value) // check computed props\r\n ? {\r\n get() {\r\n return desc.value.value;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set(val) {\r\n desc.value.value = val;\r\n }\r\n }\r\n : {\r\n get() {\r\n return desc.get && desc.get();\r\n }\r\n };\r\n Object.defineProperty(i18n, prop, wrap);\r\n });\r\n app.config.globalProperties.$i18n = i18n;\r\n globalExportMethods.forEach(method => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, method);\r\n if (!desc || !desc.value) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\r\n });\r\n}\n\n// register message resolver at vue-i18n\r\nregisterMessageResolver(resolveValue);\r\n// register fallback locale at vue-i18n\r\nregisterLocaleFallbacker(fallbackWithLocaleChain);\r\n{\r\n initFeatureFlags();\r\n}\r\n// NOTE: experimental !!\r\nif ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n const target = getGlobalThis();\r\n target.__INTLIFY__ = true;\r\n setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\r\n}\r\nif ((process.env.NODE_ENV !== 'production')) ;\n\nexport { DatetimeFormat, I18nInjectionKey, NumberFormat, Translation, VERSION, castToVueI18n, createI18n, useI18n, vTDirective };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","/*!\n * vue-router v4.1.6\n * (c) 2022 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, nextTick } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst isBrowser = typeof window !== 'undefined';\n\nfunction isESModule(obj) {\r\n return obj.__esModule || obj[Symbol.toStringTag] === 'Module';\r\n}\r\nconst assign = Object.assign;\r\nfunction applyToParams(fn, params) {\r\n const newParams = {};\r\n for (const key in params) {\r\n const value = params[key];\r\n newParams[key] = isArray(value)\r\n ? value.map(fn)\r\n : fn(value);\r\n }\r\n return newParams;\r\n}\r\nconst noop = () => { };\r\n/**\r\n * Typesafe alternative to Array.isArray\r\n * https://github.com/microsoft/TypeScript/pull/48228\r\n */\r\nconst isArray = Array.isArray;\n\nfunction warn(msg) {\r\n // avoid using ...args as it breaks in older Edge builds\r\n const args = Array.from(arguments).slice(1);\r\n console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\r\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\r\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\r\n/**\r\n * Transforms a URI into a normalized history location\r\n *\r\n * @param parseQuery\r\n * @param location - URI to normalize\r\n * @param currentLocation - current absolute location. Allows resolving relative\r\n * paths. Must start with `/`. Defaults to `/`\r\n * @returns a normalized history location\r\n */\r\nfunction parseURL(parseQuery, location, currentLocation = '/') {\r\n let path, query = {}, searchString = '', hash = '';\r\n // Could use URL and URLSearchParams but IE 11 doesn't support it\r\n // TODO: move to new URL()\r\n const hashPos = location.indexOf('#');\r\n let searchPos = location.indexOf('?');\r\n // the hash appears before the search, so it's not part of the search string\r\n if (hashPos < searchPos && hashPos >= 0) {\r\n searchPos = -1;\r\n }\r\n if (searchPos > -1) {\r\n path = location.slice(0, searchPos);\r\n searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\r\n query = parseQuery(searchString);\r\n }\r\n if (hashPos > -1) {\r\n path = path || location.slice(0, hashPos);\r\n // keep the # character\r\n hash = location.slice(hashPos, location.length);\r\n }\r\n // no search and no query\r\n path = resolveRelativePath(path != null ? path : location, currentLocation);\r\n // empty path means a relative query or hash `?foo=f`, `#thing`\r\n return {\r\n fullPath: path + (searchString && '?') + searchString + hash,\r\n path,\r\n query,\r\n hash,\r\n };\r\n}\r\n/**\r\n * Stringifies a URL object\r\n *\r\n * @param stringifyQuery\r\n * @param location\r\n */\r\nfunction stringifyURL(stringifyQuery, location) {\r\n const query = location.query ? stringifyQuery(location.query) : '';\r\n return location.path + (query && '?') + query + (location.hash || '');\r\n}\r\n/**\r\n * Strips off the base from the beginning of a location.pathname in a non-case-sensitive way.\r\n *\r\n * @param pathname - location.pathname\r\n * @param base - base to strip off\r\n */\r\nfunction stripBase(pathname, base) {\r\n // no base or base is not found at the beginning\r\n if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\r\n return pathname;\r\n return pathname.slice(base.length) || '/';\r\n}\r\n/**\r\n * Checks if two RouteLocation are equal. This means that both locations are\r\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\r\n * parameters and `hash` are the same\r\n *\r\n * @param a - first {@link RouteLocation}\r\n * @param b - second {@link RouteLocation}\r\n */\r\nfunction isSameRouteLocation(stringifyQuery, a, b) {\r\n const aLastIndex = a.matched.length - 1;\r\n const bLastIndex = b.matched.length - 1;\r\n return (aLastIndex > -1 &&\r\n aLastIndex === bLastIndex &&\r\n isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\r\n isSameRouteLocationParams(a.params, b.params) &&\r\n stringifyQuery(a.query) === stringifyQuery(b.query) &&\r\n a.hash === b.hash);\r\n}\r\n/**\r\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\r\n * considered equal to the `RouteRecord` they are aliasing.\r\n *\r\n * @param a - first {@link RouteRecord}\r\n * @param b - second {@link RouteRecord}\r\n */\r\nfunction isSameRouteRecord(a, b) {\r\n // since the original record has an undefined value for aliasOf\r\n // but all aliases point to the original record, this will always compare\r\n // the original record\r\n return (a.aliasOf || a) === (b.aliasOf || b);\r\n}\r\nfunction isSameRouteLocationParams(a, b) {\r\n if (Object.keys(a).length !== Object.keys(b).length)\r\n return false;\r\n for (const key in a) {\r\n if (!isSameRouteLocationParamsValue(a[key], b[key]))\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction isSameRouteLocationParamsValue(a, b) {\r\n return isArray(a)\r\n ? isEquivalentArray(a, b)\r\n : isArray(b)\r\n ? isEquivalentArray(b, a)\r\n : a === b;\r\n}\r\n/**\r\n * Check if two arrays are the same or if an array with one single entry is the\r\n * same as another primitive value. Used to check query and parameters\r\n *\r\n * @param a - array of values\r\n * @param b - array of values or a single value\r\n */\r\nfunction isEquivalentArray(a, b) {\r\n return isArray(b)\r\n ? a.length === b.length && a.every((value, i) => value === b[i])\r\n : a.length === 1 && a[0] === b;\r\n}\r\n/**\r\n * Resolves a relative path that starts with `.`.\r\n *\r\n * @param to - path location we are resolving\r\n * @param from - currentLocation.path, should start with `/`\r\n */\r\nfunction resolveRelativePath(to, from) {\r\n if (to.startsWith('/'))\r\n return to;\r\n if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) {\r\n warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\r\n return to;\r\n }\r\n if (!to)\r\n return from;\r\n const fromSegments = from.split('/');\r\n const toSegments = to.split('/');\r\n let position = fromSegments.length - 1;\r\n let toPosition;\r\n let segment;\r\n for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\r\n segment = toSegments[toPosition];\r\n // we stay on the same position\r\n if (segment === '.')\r\n continue;\r\n // go up in the from array\r\n if (segment === '..') {\r\n // we can't go below zero, but we still need to increment toPosition\r\n if (position > 1)\r\n position--;\r\n // continue\r\n }\r\n // we reached a non-relative path, we stop here\r\n else\r\n break;\r\n }\r\n return (fromSegments.slice(0, position).join('/') +\r\n '/' +\r\n toSegments\r\n // ensure we use at least the last element in the toSegments\r\n .slice(toPosition - (toPosition === toSegments.length ? 1 : 0))\r\n .join('/'));\r\n}\n\nvar NavigationType;\r\n(function (NavigationType) {\r\n NavigationType[\"pop\"] = \"pop\";\r\n NavigationType[\"push\"] = \"push\";\r\n})(NavigationType || (NavigationType = {}));\r\nvar NavigationDirection;\r\n(function (NavigationDirection) {\r\n NavigationDirection[\"back\"] = \"back\";\r\n NavigationDirection[\"forward\"] = \"forward\";\r\n NavigationDirection[\"unknown\"] = \"\";\r\n})(NavigationDirection || (NavigationDirection = {}));\r\n/**\r\n * Starting location for Histories\r\n */\r\nconst START = '';\r\n// Generic utils\r\n/**\r\n * Normalizes a base by removing any trailing slash and reading the base tag if\r\n * present.\r\n *\r\n * @param base - base to normalize\r\n */\r\nfunction normalizeBase(base) {\r\n if (!base) {\r\n if (isBrowser) {\r\n // respect <base> tag\r\n const baseEl = document.querySelector('base');\r\n base = (baseEl && baseEl.getAttribute('href')) || '/';\r\n // strip full URL origin\r\n base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\r\n }\r\n else {\r\n base = '/';\r\n }\r\n }\r\n // ensure leading slash when it was removed by the regex above avoid leading\r\n // slash with hash because the file could be read from the disk like file://\r\n // and the leading slash would cause problems\r\n if (base[0] !== '/' && base[0] !== '#')\r\n base = '/' + base;\r\n // remove the trailing slash so all other method can just do `base + fullPath`\r\n // to build an href\r\n return removeTrailingSlash(base);\r\n}\r\n// remove any character before the hash\r\nconst BEFORE_HASH_RE = /^[^#]+#/;\r\nfunction createHref(base, location) {\r\n return base.replace(BEFORE_HASH_RE, '#') + location;\r\n}\n\nfunction getElementPosition(el, offset) {\r\n const docRect = document.documentElement.getBoundingClientRect();\r\n const elRect = el.getBoundingClientRect();\r\n return {\r\n behavior: offset.behavior,\r\n left: elRect.left - docRect.left - (offset.left || 0),\r\n top: elRect.top - docRect.top - (offset.top || 0),\r\n };\r\n}\r\nconst computeScrollPosition = () => ({\r\n left: window.pageXOffset,\r\n top: window.pageYOffset,\r\n});\r\nfunction scrollToPosition(position) {\r\n let scrollToOptions;\r\n if ('el' in position) {\r\n const positionEl = position.el;\r\n const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\r\n /**\r\n * `id`s can accept pretty much any characters, including CSS combinators\r\n * like `>` or `~`. It's still possible to retrieve elements using\r\n * `document.getElementById('~')` but it needs to be escaped when using\r\n * `document.querySelector('#\\\\~')` for it to be valid. The only\r\n * requirements for `id`s are them to be unique on the page and to not be\r\n * empty (`id=\"\"`). Because of that, when passing an id selector, it should\r\n * be properly escaped for it to work with `querySelector`. We could check\r\n * for the id selector to be simple (no CSS combinators `+ >~`) but that\r\n * would make things inconsistent since they are valid characters for an\r\n * `id` but would need to be escaped when using `querySelector`, breaking\r\n * their usage and ending up in no selector returned. Selectors need to be\r\n * escaped:\r\n *\r\n * - `#1-thing` becomes `#\\31 -thing`\r\n * - `#with~symbols` becomes `#with\\\\~symbols`\r\n *\r\n * - More information about the topic can be found at\r\n * https://mathiasbynens.be/notes/html5-id-class.\r\n * - Practical example: https://mathiasbynens.be/demo/html5-id\r\n */\r\n if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') {\r\n if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\r\n try {\r\n const foundEl = document.querySelector(position.el);\r\n if (isIdSelector && foundEl) {\r\n warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n catch (err) {\r\n warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n }\r\n const el = typeof positionEl === 'string'\r\n ? isIdSelector\r\n ? document.getElementById(positionEl.slice(1))\r\n : document.querySelector(positionEl)\r\n : positionEl;\r\n if (!el) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\r\n return;\r\n }\r\n scrollToOptions = getElementPosition(el, position);\r\n }\r\n else {\r\n scrollToOptions = position;\r\n }\r\n if ('scrollBehavior' in document.documentElement.style)\r\n window.scrollTo(scrollToOptions);\r\n else {\r\n window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.pageXOffset, scrollToOptions.top != null ? scrollToOptions.top : window.pageYOffset);\r\n }\r\n}\r\nfunction getScrollKey(path, delta) {\r\n const position = history.state ? history.state.position - delta : -1;\r\n return position + path;\r\n}\r\nconst scrollPositions = new Map();\r\nfunction saveScrollPosition(key, scrollPosition) {\r\n scrollPositions.set(key, scrollPosition);\r\n}\r\nfunction getSavedScrollPosition(key) {\r\n const scroll = scrollPositions.get(key);\r\n // consume it so it's not used again\r\n scrollPositions.delete(key);\r\n return scroll;\r\n}\r\n// TODO: RFC about how to save scroll position\r\n/**\r\n * ScrollBehavior instance used by the router to compute and restore the scroll\r\n * position when navigating.\r\n */\r\n// export interface ScrollHandler<ScrollPositionEntry extends HistoryStateValue, ScrollPosition extends ScrollPositionEntry> {\r\n// // returns a scroll position that can be saved in history\r\n// compute(): ScrollPositionEntry\r\n// // can take an extended ScrollPositionEntry\r\n// scroll(position: ScrollPosition): void\r\n// }\r\n// export const scrollHandler: ScrollHandler<ScrollPosition> = {\r\n// compute: computeScroll,\r\n// scroll: scrollToPosition,\r\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\r\n/**\r\n * Creates a normalized history location from a window.location object\r\n * @param location -\r\n */\r\nfunction createCurrentLocation(base, location) {\r\n const { pathname, search, hash } = location;\r\n // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\r\n const hashPos = base.indexOf('#');\r\n if (hashPos > -1) {\r\n let slicePos = hash.includes(base.slice(hashPos))\r\n ? base.slice(hashPos).length\r\n : 1;\r\n let pathFromHash = hash.slice(slicePos);\r\n // prepend the starting slash to hash so the url starts with /#\r\n if (pathFromHash[0] !== '/')\r\n pathFromHash = '/' + pathFromHash;\r\n return stripBase(pathFromHash, '');\r\n }\r\n const path = stripBase(pathname, base);\r\n return path + search + hash;\r\n}\r\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\r\n let listeners = [];\r\n let teardowns = [];\r\n // TODO: should it be a stack? a Dict. Check if the popstate listener\r\n // can trigger twice\r\n let pauseState = null;\r\n const popStateHandler = ({ state, }) => {\r\n const to = createCurrentLocation(base, location);\r\n const from = currentLocation.value;\r\n const fromState = historyState.value;\r\n let delta = 0;\r\n if (state) {\r\n currentLocation.value = to;\r\n historyState.value = state;\r\n // ignore the popstate and reset the pauseState\r\n if (pauseState && pauseState === from) {\r\n pauseState = null;\r\n return;\r\n }\r\n delta = fromState ? state.position - fromState.position : 0;\r\n }\r\n else {\r\n replace(to);\r\n }\r\n // console.log({ deltaFromCurrent })\r\n // Here we could also revert the navigation by calling history.go(-delta)\r\n // this listener will have to be adapted to not trigger again and to wait for the url\r\n // to be updated before triggering the listeners. Some kind of validation function would also\r\n // need to be passed to the listeners so the navigation can be accepted\r\n // call all listeners\r\n listeners.forEach(listener => {\r\n listener(currentLocation.value, from, {\r\n delta,\r\n type: NavigationType.pop,\r\n direction: delta\r\n ? delta > 0\r\n ? NavigationDirection.forward\r\n : NavigationDirection.back\r\n : NavigationDirection.unknown,\r\n });\r\n });\r\n };\r\n function pauseListeners() {\r\n pauseState = currentLocation.value;\r\n }\r\n function listen(callback) {\r\n // set up the listener and prepare teardown callbacks\r\n listeners.push(callback);\r\n const teardown = () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n teardowns.push(teardown);\r\n return teardown;\r\n }\r\n function beforeUnloadListener() {\r\n const { history } = window;\r\n if (!history.state)\r\n return;\r\n history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\r\n }\r\n function destroy() {\r\n for (const teardown of teardowns)\r\n teardown();\r\n teardowns = [];\r\n window.removeEventListener('popstate', popStateHandler);\r\n window.removeEventListener('beforeunload', beforeUnloadListener);\r\n }\r\n // set up the listeners and prepare teardown callbacks\r\n window.addEventListener('popstate', popStateHandler);\r\n window.addEventListener('beforeunload', beforeUnloadListener);\r\n return {\r\n pauseListeners,\r\n listen,\r\n destroy,\r\n };\r\n}\r\n/**\r\n * Creates a state object\r\n */\r\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\r\n return {\r\n back,\r\n current,\r\n forward,\r\n replaced,\r\n position: window.history.length,\r\n scroll: computeScroll ? computeScrollPosition() : null,\r\n };\r\n}\r\nfunction useHistoryStateNavigation(base) {\r\n const { history, location } = window;\r\n // private variables\r\n const currentLocation = {\r\n value: createCurrentLocation(base, location),\r\n };\r\n const historyState = { value: history.state };\r\n // build current history entry as this is a fresh navigation\r\n if (!historyState.value) {\r\n changeLocation(currentLocation.value, {\r\n back: null,\r\n current: currentLocation.value,\r\n forward: null,\r\n // the length is off by one, we need to decrease it\r\n position: history.length - 1,\r\n replaced: true,\r\n // don't add a scroll as the user may have an anchor, and we want\r\n // scrollBehavior to be triggered without a saved position\r\n scroll: null,\r\n }, true);\r\n }\r\n function changeLocation(to, state, replace) {\r\n /**\r\n * if a base tag is provided, and we are on a normal domain, we have to\r\n * respect the provided `base` attribute because pushState() will use it and\r\n * potentially erase anything before the `#` like at\r\n * https://github.com/vuejs/router/issues/685 where a base of\r\n * `/folder/#` but a base of `/` would erase the `/folder/` section. If\r\n * there is no host, the `<base>` tag makes no sense and if there isn't a\r\n * base tag we can just use everything after the `#`.\r\n */\r\n const hashIndex = base.indexOf('#');\r\n const url = hashIndex > -1\r\n ? (location.host && document.querySelector('base')\r\n ? base\r\n : base.slice(hashIndex)) + to\r\n : createBaseLocation() + base + to;\r\n try {\r\n // BROWSER QUIRK\r\n // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\r\n history[replace ? 'replaceState' : 'pushState'](state, '', url);\r\n historyState.value = state;\r\n }\r\n catch (err) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Error with push/replace State', err);\r\n }\r\n else {\r\n console.error(err);\r\n }\r\n // Force the navigation, this also resets the call count\r\n location[replace ? 'replace' : 'assign'](url);\r\n }\r\n }\r\n function replace(to, data) {\r\n const state = assign({}, history.state, buildState(historyState.value.back, \r\n // keep back and forward entries but override current position\r\n to, historyState.value.forward, true), data, { position: historyState.value.position });\r\n changeLocation(to, state, true);\r\n currentLocation.value = to;\r\n }\r\n function push(to, data) {\r\n // Add to current entry the information of where we are going\r\n // as well as saving the current position\r\n const currentState = assign({}, \r\n // use current history state to gracefully handle a wrong call to\r\n // history.replaceState\r\n // https://github.com/vuejs/router/issues/366\r\n historyState.value, history.state, {\r\n forward: to,\r\n scroll: computeScrollPosition(),\r\n });\r\n if ((process.env.NODE_ENV !== 'production') && !history.state) {\r\n warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\r\n `history.replaceState(history.state, '', url)\\n\\n` +\r\n `You can find more information at https://next.router.vuejs.org/guide/migration/#usage-of-history-state.`);\r\n }\r\n changeLocation(currentState.current, currentState, true);\r\n const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\r\n changeLocation(to, state, false);\r\n currentLocation.value = to;\r\n }\r\n return {\r\n location: currentLocation,\r\n state: historyState,\r\n push,\r\n replace,\r\n };\r\n}\r\n/**\r\n * Creates an HTML5 history. Most common history for single page applications.\r\n *\r\n * @param base -\r\n */\r\nfunction createWebHistory(base) {\r\n base = normalizeBase(base);\r\n const historyNavigation = useHistoryStateNavigation(base);\r\n const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\r\n function go(delta, triggerListeners = true) {\r\n if (!triggerListeners)\r\n historyListeners.pauseListeners();\r\n history.go(delta);\r\n }\r\n const routerHistory = assign({\r\n // it's overridden right after\r\n location: '',\r\n base,\r\n go,\r\n createHref: createHref.bind(null, base),\r\n }, historyNavigation, historyListeners);\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => historyNavigation.location.value,\r\n });\r\n Object.defineProperty(routerHistory, 'state', {\r\n enumerable: true,\r\n get: () => historyNavigation.state.value,\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\r\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\r\n *\r\n * @param base - Base applied to all urls, defaults to '/'\r\n * @returns a history object that can be passed to the router constructor\r\n */\r\nfunction createMemoryHistory(base = '') {\r\n let listeners = [];\r\n let queue = [START];\r\n let position = 0;\r\n base = normalizeBase(base);\r\n function setLocation(location) {\r\n position++;\r\n if (position === queue.length) {\r\n // we are at the end, we can simply append a new entry\r\n queue.push(location);\r\n }\r\n else {\r\n // we are in the middle, we remove everything from here in the queue\r\n queue.splice(position);\r\n queue.push(location);\r\n }\r\n }\r\n function triggerListeners(to, from, { direction, delta }) {\r\n const info = {\r\n direction,\r\n delta,\r\n type: NavigationType.pop,\r\n };\r\n for (const callback of listeners) {\r\n callback(to, from, info);\r\n }\r\n }\r\n const routerHistory = {\r\n // rewritten by Object.defineProperty\r\n location: START,\r\n // TODO: should be kept in queue\r\n state: {},\r\n base,\r\n createHref: createHref.bind(null, base),\r\n replace(to) {\r\n // remove current entry and decrement position\r\n queue.splice(position--, 1);\r\n setLocation(to);\r\n },\r\n push(to, data) {\r\n setLocation(to);\r\n },\r\n listen(callback) {\r\n listeners.push(callback);\r\n return () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n },\r\n destroy() {\r\n listeners = [];\r\n queue = [START];\r\n position = 0;\r\n },\r\n go(delta, shouldTrigger = true) {\r\n const from = this.location;\r\n const direction = \r\n // we are considering delta === 0 going forward, but in abstract mode\r\n // using 0 for the delta doesn't make sense like it does in html5 where\r\n // it reloads the page\r\n delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\r\n position = Math.max(0, Math.min(position + delta, queue.length - 1));\r\n if (shouldTrigger) {\r\n triggerListeners(this.location, from, {\r\n direction,\r\n delta,\r\n });\r\n }\r\n },\r\n };\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => queue[position],\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to\r\n * handle any URL is not possible.\r\n *\r\n * @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `<base>` tag\r\n * in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState()\r\n * calls**, meaning that if you use a `<base>` tag, it's `href` value **has to match this parameter** (ignoring anything\r\n * after the `#`).\r\n *\r\n * @example\r\n * ```js\r\n * // at https://example.com/folder\r\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\r\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\r\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\r\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\r\n * // you should avoid doing this because it changes the original url and breaks copying urls\r\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\r\n *\r\n * // at file:///usr/etc/folder/index.html\r\n * // for locations with no `host`, the base is ignored\r\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\r\n * ```\r\n */\r\nfunction createWebHashHistory(base) {\r\n // Make sure this implementation is fine in terms of encoding, specially for IE11\r\n // for `file://`, directly use the pathname and ignore the base\r\n // location.pathname contains an initial `/` even at the root: `https://example.com`\r\n base = location.host ? base || location.pathname + location.search : '';\r\n // allow the user to provide a `#` in the middle: `/base/#/app`\r\n if (!base.includes('#'))\r\n base += '#';\r\n if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) {\r\n warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\r\n }\r\n return createWebHistory(base);\r\n}\n\nfunction isRouteLocation(route) {\r\n return typeof route === 'string' || (route && typeof route === 'object');\r\n}\r\nfunction isRouteName(name) {\r\n return typeof name === 'string' || typeof name === 'symbol';\r\n}\n\n/**\r\n * Initial route location where the router is. Can be used in navigation guards\r\n * to differentiate the initial navigation.\r\n *\r\n * @example\r\n * ```js\r\n * import { START_LOCATION } from 'vue-router'\r\n *\r\n * router.beforeEach((to, from) => {\r\n * if (from === START_LOCATION) {\r\n * // initial navigation\r\n * }\r\n * })\r\n * ```\r\n */\r\nconst START_LOCATION_NORMALIZED = {\r\n path: '/',\r\n name: undefined,\r\n params: {},\r\n query: {},\r\n hash: '',\r\n fullPath: '/',\r\n matched: [],\r\n meta: {},\r\n redirectedFrom: undefined,\r\n};\n\nconst NavigationFailureSymbol = Symbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : '');\r\n/**\r\n * Enumeration with all possible types for navigation failures. Can be passed to\r\n * {@link isNavigationFailure} to check for specific failures.\r\n */\r\nvar NavigationFailureType;\r\n(function (NavigationFailureType) {\r\n /**\r\n * An aborted navigation is a navigation that failed because a navigation\r\n * guard returned `false` or called `next(false)`\r\n */\r\n NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\r\n /**\r\n * A cancelled navigation is a navigation that failed because a more recent\r\n * navigation finished started (not necessarily finished).\r\n */\r\n NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\r\n /**\r\n * A duplicated navigation is a navigation that failed because it was\r\n * initiated while already being at the exact same location.\r\n */\r\n NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\r\n})(NavigationFailureType || (NavigationFailureType = {}));\r\n// DEV only debug messages\r\nconst ErrorTypeMessages = {\r\n [1 /* ErrorTypes.MATCHER_NOT_FOUND */]({ location, currentLocation }) {\r\n return `No match for\\n ${JSON.stringify(location)}${currentLocation\r\n ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\r\n : ''}`;\r\n },\r\n [2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\r\n return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\r\n },\r\n [4 /* ErrorTypes.NAVIGATION_ABORTED */]({ from, to }) {\r\n return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\r\n },\r\n [8 /* ErrorTypes.NAVIGATION_CANCELLED */]({ from, to }) {\r\n return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\r\n },\r\n [16 /* ErrorTypes.NAVIGATION_DUPLICATED */]({ from, to }) {\r\n return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\r\n },\r\n};\r\nfunction createRouterError(type, params) {\r\n // keep full error messages in cjs versions\r\n if ((process.env.NODE_ENV !== 'production') || !true) {\r\n return assign(new Error(ErrorTypeMessages[type](params)), {\r\n type,\r\n [NavigationFailureSymbol]: true,\r\n }, params);\r\n }\r\n else {\r\n return assign(new Error(), {\r\n type,\r\n [NavigationFailureSymbol]: true,\r\n }, params);\r\n }\r\n}\r\nfunction isNavigationFailure(error, type) {\r\n return (error instanceof Error &&\r\n NavigationFailureSymbol in error &&\r\n (type == null || !!(error.type & type)));\r\n}\r\nconst propertiesToLog = ['params', 'query', 'hash'];\r\nfunction stringifyRoute(to) {\r\n if (typeof to === 'string')\r\n return to;\r\n if ('path' in to)\r\n return to.path;\r\n const location = {};\r\n for (const key of propertiesToLog) {\r\n if (key in to)\r\n location[key] = to[key];\r\n }\r\n return JSON.stringify(location, null, 2);\r\n}\n\n// default pattern for a param: non-greedy everything but /\r\nconst BASE_PARAM_PATTERN = '[^/]+?';\r\nconst BASE_PATH_PARSER_OPTIONS = {\r\n sensitive: false,\r\n strict: false,\r\n start: true,\r\n end: true,\r\n};\r\n// Special Regex characters that must be escaped in static tokens\r\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\r\n/**\r\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\r\n *\r\n * @param segments - array of segments returned by tokenizePath\r\n * @param extraOptions - optional options for the regexp\r\n * @returns a PathParser\r\n */\r\nfunction tokensToParser(segments, extraOptions) {\r\n const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\r\n // the amount of scores is the same as the length of segments except for the root segment \"/\"\r\n const score = [];\r\n // the regexp as a string\r\n let pattern = options.start ? '^' : '';\r\n // extracted keys\r\n const keys = [];\r\n for (const segment of segments) {\r\n // the root segment needs special treatment\r\n const segmentScores = segment.length ? [] : [90 /* PathScore.Root */];\r\n // allow trailing slash\r\n if (options.strict && !segment.length)\r\n pattern += '/';\r\n for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\r\n const token = segment[tokenIndex];\r\n // resets the score if we are inside a sub-segment /:a-other-:b\r\n let subSegmentScore = 40 /* PathScore.Segment */ +\r\n (options.sensitive ? 0.25 /* PathScore.BonusCaseSensitive */ : 0);\r\n if (token.type === 0 /* TokenType.Static */) {\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n pattern += '/';\r\n pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\r\n subSegmentScore += 40 /* PathScore.Static */;\r\n }\r\n else if (token.type === 1 /* TokenType.Param */) {\r\n const { value, repeatable, optional, regexp } = token;\r\n keys.push({\r\n name: value,\r\n repeatable,\r\n optional,\r\n });\r\n const re = regexp ? regexp : BASE_PARAM_PATTERN;\r\n // the user provided a custom regexp /:id(\\\\d+)\r\n if (re !== BASE_PARAM_PATTERN) {\r\n subSegmentScore += 10 /* PathScore.BonusCustomRegExp */;\r\n // make sure the regexp is valid before using it\r\n try {\r\n new RegExp(`(${re})`);\r\n }\r\n catch (err) {\r\n throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\r\n err.message);\r\n }\r\n }\r\n // when we repeat we must take care of the repeating leading slash\r\n let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n subPattern =\r\n // avoid an optional / if there are more segments e.g. /:p?-static\r\n // or /:p?-:p2\r\n optional && segment.length < 2\r\n ? `(?:/${subPattern})`\r\n : '/' + subPattern;\r\n if (optional)\r\n subPattern += '?';\r\n pattern += subPattern;\r\n subSegmentScore += 20 /* PathScore.Dynamic */;\r\n if (optional)\r\n subSegmentScore += -8 /* PathScore.BonusOptional */;\r\n if (repeatable)\r\n subSegmentScore += -20 /* PathScore.BonusRepeatable */;\r\n if (re === '.*')\r\n subSegmentScore += -50 /* PathScore.BonusWildcard */;\r\n }\r\n segmentScores.push(subSegmentScore);\r\n }\r\n // an empty array like /home/ -> [[{home}], []]\r\n // if (!segment.length) pattern += '/'\r\n score.push(segmentScores);\r\n }\r\n // only apply the strict bonus to the last score\r\n if (options.strict && options.end) {\r\n const i = score.length - 1;\r\n score[i][score[i].length - 1] += 0.7000000000000001 /* PathScore.BonusStrict */;\r\n }\r\n // TODO: dev only warn double trailing slash\r\n if (!options.strict)\r\n pattern += '/?';\r\n if (options.end)\r\n pattern += '$';\r\n // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\r\n else if (options.strict)\r\n pattern += '(?:/|$)';\r\n const re = new RegExp(pattern, options.sensitive ? '' : 'i');\r\n function parse(path) {\r\n const match = path.match(re);\r\n const params = {};\r\n if (!match)\r\n return null;\r\n for (let i = 1; i < match.length; i++) {\r\n const value = match[i] || '';\r\n const key = keys[i - 1];\r\n params[key.name] = value && key.repeatable ? value.split('/') : value;\r\n }\r\n return params;\r\n }\r\n function stringify(params) {\r\n let path = '';\r\n // for optional parameters to allow to be empty\r\n let avoidDuplicatedSlash = false;\r\n for (const segment of segments) {\r\n if (!avoidDuplicatedSlash || !path.endsWith('/'))\r\n path += '/';\r\n avoidDuplicatedSlash = false;\r\n for (const token of segment) {\r\n if (token.type === 0 /* TokenType.Static */) {\r\n path += token.value;\r\n }\r\n else if (token.type === 1 /* TokenType.Param */) {\r\n const { value, repeatable, optional } = token;\r\n const param = value in params ? params[value] : '';\r\n if (isArray(param) && !repeatable) {\r\n throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\r\n }\r\n const text = isArray(param)\r\n ? param.join('/')\r\n : param;\r\n if (!text) {\r\n if (optional) {\r\n // if we have more than one optional param like /:a?-static we don't need to care about the optional param\r\n if (segment.length < 2) {\r\n // remove the last slash as we could be at the end\r\n if (path.endsWith('/'))\r\n path = path.slice(0, -1);\r\n // do not append a slash on the next iteration\r\n else\r\n avoidDuplicatedSlash = true;\r\n }\r\n }\r\n else\r\n throw new Error(`Missing required param \"${value}\"`);\r\n }\r\n path += text;\r\n }\r\n }\r\n }\r\n // avoid empty path when we have multiple optional params\r\n return path || '/';\r\n }\r\n return {\r\n re,\r\n score,\r\n keys,\r\n parse,\r\n stringify,\r\n };\r\n}\r\n/**\r\n * Compares an array of numbers as used in PathParser.score and returns a\r\n * number. This function can be used to `sort` an array\r\n *\r\n * @param a - first array of numbers\r\n * @param b - second array of numbers\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n * should be sorted first\r\n */\r\nfunction compareScoreArray(a, b) {\r\n let i = 0;\r\n while (i < a.length && i < b.length) {\r\n const diff = b[i] - a[i];\r\n // only keep going if diff === 0\r\n if (diff)\r\n return diff;\r\n i++;\r\n }\r\n // if the last subsegment was Static, the shorter segments should be sorted first\r\n // otherwise sort the longest segment first\r\n if (a.length < b.length) {\r\n return a.length === 1 && a[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\r\n ? -1\r\n : 1;\r\n }\r\n else if (a.length > b.length) {\r\n return b.length === 1 && b[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\r\n ? 1\r\n : -1;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * Compare function that can be used with `sort` to sort an array of PathParser\r\n *\r\n * @param a - first PathParser\r\n * @param b - second PathParser\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n */\r\nfunction comparePathParserScore(a, b) {\r\n let i = 0;\r\n const aScore = a.score;\r\n const bScore = b.score;\r\n while (i < aScore.length && i < bScore.length) {\r\n const comp = compareScoreArray(aScore[i], bScore[i]);\r\n // do not return if both are equal\r\n if (comp)\r\n return comp;\r\n i++;\r\n }\r\n if (Math.abs(bScore.length - aScore.length) === 1) {\r\n if (isLastScoreNegative(aScore))\r\n return 1;\r\n if (isLastScoreNegative(bScore))\r\n return -1;\r\n }\r\n // if a and b share the same score entries but b has more, sort b first\r\n return bScore.length - aScore.length;\r\n // this is the ternary version\r\n // return aScore.length < bScore.length\r\n // ? 1\r\n // : aScore.length > bScore.length\r\n // ? -1\r\n // : 0\r\n}\r\n/**\r\n * This allows detecting splats at the end of a path: /home/:id(.*)*\r\n *\r\n * @param score - score to check\r\n * @returns true if the last entry is negative\r\n */\r\nfunction isLastScoreNegative(score) {\r\n const last = score[score.length - 1];\r\n return score.length > 0 && last[last.length - 1] < 0;\r\n}\n\nconst ROOT_TOKEN = {\r\n type: 0 /* TokenType.Static */,\r\n value: '',\r\n};\r\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\r\n// After some profiling, the cache seems to be unnecessary because tokenizePath\r\n// (the slowest part of adding a route) is very fast\r\n// const tokenCache = new Map<string, Token[][]>()\r\nfunction tokenizePath(path) {\r\n if (!path)\r\n return [[]];\r\n if (path === '/')\r\n return [[ROOT_TOKEN]];\r\n if (!path.startsWith('/')) {\r\n throw new Error((process.env.NODE_ENV !== 'production')\r\n ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\r\n : `Invalid path \"${path}\"`);\r\n }\r\n // if (tokenCache.has(path)) return tokenCache.get(path)!\r\n function crash(message) {\r\n throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\r\n }\r\n let state = 0 /* TokenizerState.Static */;\r\n let previousState = state;\r\n const tokens = [];\r\n // the segment will always be valid because we get into the initial state\r\n // with the leading /\r\n let segment;\r\n function finalizeSegment() {\r\n if (segment)\r\n tokens.push(segment);\r\n segment = [];\r\n }\r\n // index on the path\r\n let i = 0;\r\n // char at index\r\n let char;\r\n // buffer of the value read\r\n let buffer = '';\r\n // custom regexp for a param\r\n let customRe = '';\r\n function consumeBuffer() {\r\n if (!buffer)\r\n return;\r\n if (state === 0 /* TokenizerState.Static */) {\r\n segment.push({\r\n type: 0 /* TokenType.Static */,\r\n value: buffer,\r\n });\r\n }\r\n else if (state === 1 /* TokenizerState.Param */ ||\r\n state === 2 /* TokenizerState.ParamRegExp */ ||\r\n state === 3 /* TokenizerState.ParamRegExpEnd */) {\r\n if (segment.length > 1 && (char === '*' || char === '+'))\r\n crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\r\n segment.push({\r\n type: 1 /* TokenType.Param */,\r\n value: buffer,\r\n regexp: customRe,\r\n repeatable: char === '*' || char === '+',\r\n optional: char === '*' || char === '?',\r\n });\r\n }\r\n else {\r\n crash('Invalid state to consume buffer');\r\n }\r\n buffer = '';\r\n }\r\n function addCharToBuffer() {\r\n buffer += char;\r\n }\r\n while (i < path.length) {\r\n char = path[i++];\r\n if (char === '\\\\' && state !== 2 /* TokenizerState.ParamRegExp */) {\r\n previousState = state;\r\n state = 4 /* TokenizerState.EscapeNext */;\r\n continue;\r\n }\r\n switch (state) {\r\n case 0 /* TokenizerState.Static */:\r\n if (char === '/') {\r\n if (buffer) {\r\n consumeBuffer();\r\n }\r\n finalizeSegment();\r\n }\r\n else if (char === ':') {\r\n consumeBuffer();\r\n state = 1 /* TokenizerState.Param */;\r\n }\r\n else {\r\n addCharToBuffer();\r\n }\r\n break;\r\n case 4 /* TokenizerState.EscapeNext */:\r\n addCharToBuffer();\r\n state = previousState;\r\n break;\r\n case 1 /* TokenizerState.Param */:\r\n if (char === '(') {\r\n state = 2 /* TokenizerState.ParamRegExp */;\r\n }\r\n else if (VALID_PARAM_RE.test(char)) {\r\n addCharToBuffer();\r\n }\r\n else {\r\n consumeBuffer();\r\n state = 0 /* TokenizerState.Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n }\r\n break;\r\n case 2 /* TokenizerState.ParamRegExp */:\r\n // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\r\n // it already works by escaping the closing )\r\n // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\r\n // is this really something people need since you can also write\r\n // /prefix_:p()_suffix\r\n if (char === ')') {\r\n // handle the escaped )\r\n if (customRe[customRe.length - 1] == '\\\\')\r\n customRe = customRe.slice(0, -1) + char;\r\n else\r\n state = 3 /* TokenizerState.ParamRegExpEnd */;\r\n }\r\n else {\r\n customRe += char;\r\n }\r\n break;\r\n case 3 /* TokenizerState.ParamRegExpEnd */:\r\n // same as finalizing a param\r\n consumeBuffer();\r\n state = 0 /* TokenizerState.Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n customRe = '';\r\n break;\r\n default:\r\n crash('Unknown state');\r\n break;\r\n }\r\n }\r\n if (state === 2 /* TokenizerState.ParamRegExp */)\r\n crash(`Unfinished custom RegExp for param \"${buffer}\"`);\r\n consumeBuffer();\r\n finalizeSegment();\r\n // tokenCache.set(path, tokens)\r\n return tokens;\r\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\r\n const parser = tokensToParser(tokenizePath(record.path), options);\r\n // warn against params with the same name\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const existingKeys = new Set();\r\n for (const key of parser.keys) {\r\n if (existingKeys.has(key.name))\r\n warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\r\n existingKeys.add(key.name);\r\n }\r\n }\r\n const matcher = assign(parser, {\r\n record,\r\n parent,\r\n // these needs to be populated by the parent\r\n children: [],\r\n alias: [],\r\n });\r\n if (parent) {\r\n // both are aliases or both are not aliases\r\n // we don't want to mix them because the order is used when\r\n // passing originalRecord in Matcher.addRoute\r\n if (!matcher.record.aliasOf === !parent.record.aliasOf)\r\n parent.children.push(matcher);\r\n }\r\n return matcher;\r\n}\n\n/**\r\n * Creates a Router Matcher.\r\n *\r\n * @internal\r\n * @param routes - array of initial routes\r\n * @param globalOptions - global route options\r\n */\r\nfunction createRouterMatcher(routes, globalOptions) {\r\n // normalized ordered array of matchers\r\n const matchers = [];\r\n const matcherMap = new Map();\r\n globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\r\n function getRecordMatcher(name) {\r\n return matcherMap.get(name);\r\n }\r\n function addRoute(record, parent, originalRecord) {\r\n // used later on to remove by name\r\n const isRootAdd = !originalRecord;\r\n const mainNormalizedRecord = normalizeRouteRecord(record);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent);\r\n }\r\n // we might be the child of an alias\r\n mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\r\n const options = mergeOptions(globalOptions, record);\r\n // generate an array of records to correctly handle aliases\r\n const normalizedRecords = [\r\n mainNormalizedRecord,\r\n ];\r\n if ('alias' in record) {\r\n const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\r\n for (const alias of aliases) {\r\n normalizedRecords.push(assign({}, mainNormalizedRecord, {\r\n // this allows us to hold a copy of the `components` option\r\n // so that async components cache is hold on the original record\r\n components: originalRecord\r\n ? originalRecord.record.components\r\n : mainNormalizedRecord.components,\r\n path: alias,\r\n // we might be the child of an alias\r\n aliasOf: originalRecord\r\n ? originalRecord.record\r\n : mainNormalizedRecord,\r\n // the aliases are always of the same kind as the original since they\r\n // are defined on the same record\r\n }));\r\n }\r\n }\r\n let matcher;\r\n let originalMatcher;\r\n for (const normalizedRecord of normalizedRecords) {\r\n const { path } = normalizedRecord;\r\n // Build up the path for nested routes if the child isn't an absolute\r\n // route. Only add the / delimiter if the child path isn't empty and if the\r\n // parent path doesn't have a trailing slash\r\n if (parent && path[0] !== '/') {\r\n const parentPath = parent.record.path;\r\n const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\r\n normalizedRecord.path =\r\n parent.record.path + (path && connectingSlash + path);\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') {\r\n throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\r\n 'See more at https://next.router.vuejs.org/guide/migration/#removed-star-or-catch-all-routes.');\r\n }\r\n // create the object beforehand, so it can be passed to children\r\n matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\r\n if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/')\r\n checkMissingParamsInAbsolutePath(matcher, parent);\r\n // if we are an alias we must tell the original record that we exist,\r\n // so we can be removed\r\n if (originalRecord) {\r\n originalRecord.alias.push(matcher);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkSameParams(originalRecord, matcher);\r\n }\r\n }\r\n else {\r\n // otherwise, the first record is the original and others are aliases\r\n originalMatcher = originalMatcher || matcher;\r\n if (originalMatcher !== matcher)\r\n originalMatcher.alias.push(matcher);\r\n // remove the route if named and only for the top record (avoid in nested calls)\r\n // this works because the original record is the first one\r\n if (isRootAdd && record.name && !isAliasRecord(matcher))\r\n removeRoute(record.name);\r\n }\r\n if (mainNormalizedRecord.children) {\r\n const children = mainNormalizedRecord.children;\r\n for (let i = 0; i < children.length; i++) {\r\n addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\r\n }\r\n }\r\n // if there was no original record, then the first one was not an alias and all\r\n // other aliases (if any) need to reference this record when adding children\r\n originalRecord = originalRecord || matcher;\r\n // TODO: add normalized records for more flexibility\r\n // if (parent && isAliasRecord(originalRecord)) {\r\n // parent.children.push(originalRecord)\r\n // }\r\n // Avoid adding a record that doesn't display anything. This allows passing through records without a component to\r\n // not be reached and pass through the catch all route\r\n if ((matcher.record.components &&\r\n Object.keys(matcher.record.components).length) ||\r\n matcher.record.name ||\r\n matcher.record.redirect) {\r\n insertMatcher(matcher);\r\n }\r\n }\r\n return originalMatcher\r\n ? () => {\r\n // since other matchers are aliases, they should be removed by the original matcher\r\n removeRoute(originalMatcher);\r\n }\r\n : noop;\r\n }\r\n function removeRoute(matcherRef) {\r\n if (isRouteName(matcherRef)) {\r\n const matcher = matcherMap.get(matcherRef);\r\n if (matcher) {\r\n matcherMap.delete(matcherRef);\r\n matchers.splice(matchers.indexOf(matcher), 1);\r\n matcher.children.forEach(removeRoute);\r\n matcher.alias.forEach(removeRoute);\r\n }\r\n }\r\n else {\r\n const index = matchers.indexOf(matcherRef);\r\n if (index > -1) {\r\n matchers.splice(index, 1);\r\n if (matcherRef.record.name)\r\n matcherMap.delete(matcherRef.record.name);\r\n matcherRef.children.forEach(removeRoute);\r\n matcherRef.alias.forEach(removeRoute);\r\n }\r\n }\r\n }\r\n function getRoutes() {\r\n return matchers;\r\n }\r\n function insertMatcher(matcher) {\r\n let i = 0;\r\n while (i < matchers.length &&\r\n comparePathParserScore(matcher, matchers[i]) >= 0 &&\r\n // Adding children with empty path should still appear before the parent\r\n // https://github.com/vuejs/router/issues/1124\r\n (matcher.record.path !== matchers[i].record.path ||\r\n !isRecordChildOf(matcher, matchers[i])))\r\n i++;\r\n matchers.splice(i, 0, matcher);\r\n // only add the original record to the name map\r\n if (matcher.record.name && !isAliasRecord(matcher))\r\n matcherMap.set(matcher.record.name, matcher);\r\n }\r\n function resolve(location, currentLocation) {\r\n let matcher;\r\n let params = {};\r\n let path;\r\n let name;\r\n if ('name' in location && location.name) {\r\n matcher = matcherMap.get(location.name);\r\n if (!matcher)\r\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\r\n location,\r\n });\r\n // warn if the user is passing invalid params so they can debug it better when they get removed\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const invalidParams = Object.keys(location.params || {}).filter(paramName => !matcher.keys.find(k => k.name === paramName));\r\n if (invalidParams.length) {\r\n warn(`Discarded invalid param(s) \"${invalidParams.join('\", \"')}\" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`);\r\n }\r\n }\r\n name = matcher.record.name;\r\n params = assign(\r\n // paramsFromLocation is a new object\r\n paramsFromLocation(currentLocation.params, \r\n // only keep params that exist in the resolved location\r\n // TODO: only keep optional params coming from a parent record\r\n matcher.keys.filter(k => !k.optional).map(k => k.name)), \r\n // discard any existing params in the current location that do not exist here\r\n // #1497 this ensures better active/exact matching\r\n location.params &&\r\n paramsFromLocation(location.params, matcher.keys.map(k => k.name)));\r\n // throws if cannot be stringified\r\n path = matcher.stringify(params);\r\n }\r\n else if ('path' in location) {\r\n // no need to resolve the path with the matcher as it was provided\r\n // this also allows the user to control the encoding\r\n path = location.path;\r\n if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) {\r\n warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/router.`);\r\n }\r\n matcher = matchers.find(m => m.re.test(path));\r\n // matcher should have a value after the loop\r\n if (matcher) {\r\n // we know the matcher works because we tested the regexp\r\n params = matcher.parse(path);\r\n name = matcher.record.name;\r\n }\r\n // location is a relative path\r\n }\r\n else {\r\n // match by name or path of current route\r\n matcher = currentLocation.name\r\n ? matcherMap.get(currentLocation.name)\r\n : matchers.find(m => m.re.test(currentLocation.path));\r\n if (!matcher)\r\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\r\n location,\r\n currentLocation,\r\n });\r\n name = matcher.record.name;\r\n // since we are navigating to the same location, we don't need to pick the\r\n // params like when `name` is provided\r\n params = assign({}, currentLocation.params, location.params);\r\n path = matcher.stringify(params);\r\n }\r\n const matched = [];\r\n let parentMatcher = matcher;\r\n while (parentMatcher) {\r\n // reversed order so parents are at the beginning\r\n matched.unshift(parentMatcher.record);\r\n parentMatcher = parentMatcher.parent;\r\n }\r\n return {\r\n name,\r\n path,\r\n params,\r\n matched,\r\n meta: mergeMetaFields(matched),\r\n };\r\n }\r\n // add initial routes\r\n routes.forEach(route => addRoute(route));\r\n return { addRoute, resolve, removeRoute, getRoutes, getRecordMatcher };\r\n}\r\nfunction paramsFromLocation(params, keys) {\r\n const newParams = {};\r\n for (const key of keys) {\r\n if (key in params)\r\n newParams[key] = params[key];\r\n }\r\n return newParams;\r\n}\r\n/**\r\n * Normalizes a RouteRecordRaw. Creates a copy\r\n *\r\n * @param record\r\n * @returns the normalized version\r\n */\r\nfunction normalizeRouteRecord(record) {\r\n return {\r\n path: record.path,\r\n redirect: record.redirect,\r\n name: record.name,\r\n meta: record.meta || {},\r\n aliasOf: undefined,\r\n beforeEnter: record.beforeEnter,\r\n props: normalizeRecordProps(record),\r\n children: record.children || [],\r\n instances: {},\r\n leaveGuards: new Set(),\r\n updateGuards: new Set(),\r\n enterCallbacks: {},\r\n components: 'components' in record\r\n ? record.components || null\r\n : record.component && { default: record.component },\r\n };\r\n}\r\n/**\r\n * Normalize the optional `props` in a record to always be an object similar to\r\n * components. Also accept a boolean for components.\r\n * @param record\r\n */\r\nfunction normalizeRecordProps(record) {\r\n const propsObject = {};\r\n // props does not exist on redirect records, but we can set false directly\r\n const props = record.props || false;\r\n if ('component' in record) {\r\n propsObject.default = props;\r\n }\r\n else {\r\n // NOTE: we could also allow a function to be applied to every component.\r\n // Would need user feedback for use cases\r\n for (const name in record.components)\r\n propsObject[name] = typeof props === 'boolean' ? props : props[name];\r\n }\r\n return propsObject;\r\n}\r\n/**\r\n * Checks if a record or any of its parent is an alias\r\n * @param record\r\n */\r\nfunction isAliasRecord(record) {\r\n while (record) {\r\n if (record.record.aliasOf)\r\n return true;\r\n record = record.parent;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Merge meta fields of an array of records\r\n *\r\n * @param matched - array of matched records\r\n */\r\nfunction mergeMetaFields(matched) {\r\n return matched.reduce((meta, record) => assign(meta, record.meta), {});\r\n}\r\nfunction mergeOptions(defaults, partialOptions) {\r\n const options = {};\r\n for (const key in defaults) {\r\n options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\r\n }\r\n return options;\r\n}\r\nfunction isSameParam(a, b) {\r\n return (a.name === b.name &&\r\n a.optional === b.optional &&\r\n a.repeatable === b.repeatable);\r\n}\r\n/**\r\n * Check if a path and its alias have the same required params\r\n *\r\n * @param a - original record\r\n * @param b - alias record\r\n */\r\nfunction checkSameParams(a, b) {\r\n for (const key of a.keys) {\r\n if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\r\n }\r\n for (const key of b.keys) {\r\n if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\r\n }\r\n}\r\n/**\r\n * A route with a name and a child with an empty path without a name should warn when adding the route\r\n *\r\n * @param mainNormalizedRecord - RouteRecordNormalized\r\n * @param parent - RouteRecordMatcher\r\n */\r\nfunction checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) {\r\n if (parent &&\r\n parent.record.name &&\r\n !mainNormalizedRecord.name &&\r\n !mainNormalizedRecord.path) {\r\n warn(`The route named \"${String(parent.record.name)}\" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`);\r\n }\r\n}\r\nfunction checkMissingParamsInAbsolutePath(record, parent) {\r\n for (const key of parent.keys) {\r\n if (!record.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Absolute path \"${record.record.path}\" must have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\r\n }\r\n}\r\nfunction isRecordChildOf(record, parent) {\r\n return parent.children.some(child => child === record || isRecordChildOf(record, child));\r\n}\n\n/**\r\n * Encoding Rules ␣ = Space Path: ␣ \" < > # ? { } Query: ␣ \" < > # & = Hash: ␣ \"\r\n * < > `\r\n *\r\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\r\n * defines some extra characters to be encoded. Most browsers do not encode them\r\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\r\n * also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`)\r\n * plus `-._~`. This extra safety should be applied to query by patching the\r\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\r\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\r\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\r\n * encoded everywhere because some browsers like FF encode it when directly\r\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\r\n */\r\n// const EXTRA_RESERVED_RE = /[!'()*]/g\r\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\r\nconst HASH_RE = /#/g; // %23\r\nconst AMPERSAND_RE = /&/g; // %26\r\nconst SLASH_RE = /\\//g; // %2F\r\nconst EQUAL_RE = /=/g; // %3D\r\nconst IM_RE = /\\?/g; // %3F\r\nconst PLUS_RE = /\\+/g; // %2B\r\n/**\r\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\r\n * seems to be less flexible than not doing so and I can't find out the legacy\r\n * systems requiring this for regular requests like text/html. In the standard,\r\n * the encoding of the plus character is only mentioned for\r\n * application/x-www-form-urlencoded\r\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\r\n * leave the plus character as is in queries. To be more flexible, we allow the\r\n * plus character on the query, but it can also be manually encoded by the user.\r\n *\r\n * Resources:\r\n * - https://url.spec.whatwg.org/#urlencoded-parsing\r\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\r\n */\r\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\r\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\r\nconst ENC_CARET_RE = /%5E/g; // ^\r\nconst ENC_BACKTICK_RE = /%60/g; // `\r\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\r\nconst ENC_PIPE_RE = /%7C/g; // |\r\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\r\nconst ENC_SPACE_RE = /%20/g; // }\r\n/**\r\n * Encode characters that need to be encoded on the path, search and hash\r\n * sections of the URL.\r\n *\r\n * @internal\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction commonEncode(text) {\r\n return encodeURI('' + text)\r\n .replace(ENC_PIPE_RE, '|')\r\n .replace(ENC_BRACKET_OPEN_RE, '[')\r\n .replace(ENC_BRACKET_CLOSE_RE, ']');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the hash section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeHash(text) {\r\n return commonEncode(text)\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^');\r\n}\r\n/**\r\n * Encode characters that need to be encoded query values on the query\r\n * section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeQueryValue(text) {\r\n return (commonEncode(text)\r\n // Encode the space as +, encode the + to differentiate it from the space\r\n .replace(PLUS_RE, '%2B')\r\n .replace(ENC_SPACE_RE, '+')\r\n .replace(HASH_RE, '%23')\r\n .replace(AMPERSAND_RE, '%26')\r\n .replace(ENC_BACKTICK_RE, '`')\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^'));\r\n}\r\n/**\r\n * Like `encodeQueryValue` but also encodes the `=` character.\r\n *\r\n * @param text - string to encode\r\n */\r\nfunction encodeQueryKey(text) {\r\n return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodePath(text) {\r\n return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL as a\r\n * param. This function encodes everything {@link encodePath} does plus the\r\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\r\n * string instead.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeParam(text) {\r\n return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\r\n}\r\n/**\r\n * Decode text using `decodeURIComponent`. Returns the original text if it\r\n * fails.\r\n *\r\n * @param text - string to decode\r\n * @returns decoded string\r\n */\r\nfunction decode(text) {\r\n try {\r\n return decodeURIComponent('' + text);\r\n }\r\n catch (err) {\r\n (process.env.NODE_ENV !== 'production') && warn(`Error decoding \"${text}\". Using original value`);\r\n }\r\n return '' + text;\r\n}\n\n/**\r\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\r\n * version with the leading `?` and without Should work as URLSearchParams\r\n\n * @internal\r\n *\r\n * @param search - search string to parse\r\n * @returns a query object\r\n */\r\nfunction parseQuery(search) {\r\n const query = {};\r\n // avoid creating an object with an empty key and empty value\r\n // because of split('&')\r\n if (search === '' || search === '?')\r\n return query;\r\n const hasLeadingIM = search[0] === '?';\r\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\r\n for (let i = 0; i < searchParams.length; ++i) {\r\n // pre decode the + into space\r\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\r\n // allow the = character\r\n const eqPos = searchParam.indexOf('=');\r\n const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\r\n const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\r\n if (key in query) {\r\n // an extra variable for ts types\r\n let currentValue = query[key];\r\n if (!isArray(currentValue)) {\r\n currentValue = query[key] = [currentValue];\r\n }\r\n currentValue.push(value);\r\n }\r\n else {\r\n query[key] = value;\r\n }\r\n }\r\n return query;\r\n}\r\n/**\r\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\r\n * doesn't prepend a `?`\r\n *\r\n * @internal\r\n *\r\n * @param query - query object to stringify\r\n * @returns string version of the query without the leading `?`\r\n */\r\nfunction stringifyQuery(query) {\r\n let search = '';\r\n for (let key in query) {\r\n const value = query[key];\r\n key = encodeQueryKey(key);\r\n if (value == null) {\r\n // only null adds the value\r\n if (value !== undefined) {\r\n search += (search.length ? '&' : '') + key;\r\n }\r\n continue;\r\n }\r\n // keep null values\r\n const values = isArray(value)\r\n ? value.map(v => v && encodeQueryValue(v))\r\n : [value && encodeQueryValue(value)];\r\n values.forEach(value => {\r\n // skip undefined values in arrays as if they were not present\r\n // smaller code than using filter\r\n if (value !== undefined) {\r\n // only append & with non-empty search\r\n search += (search.length ? '&' : '') + key;\r\n if (value != null)\r\n search += '=' + value;\r\n }\r\n });\r\n }\r\n return search;\r\n}\r\n/**\r\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\r\n * numbers into strings, removing keys with an undefined value and replacing\r\n * undefined with null in arrays\r\n *\r\n * @param query - query object to normalize\r\n * @returns a normalized query object\r\n */\r\nfunction normalizeQuery(query) {\r\n const normalizedQuery = {};\r\n for (const key in query) {\r\n const value = query[key];\r\n if (value !== undefined) {\r\n normalizedQuery[key] = isArray(value)\r\n ? value.map(v => (v == null ? null : '' + v))\r\n : value == null\r\n ? value\r\n : '' + value;\r\n }\r\n }\r\n return normalizedQuery;\r\n}\n\n/**\r\n * RouteRecord being rendered by the closest ancestor Router View. Used for\r\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\r\n * Location Matched\r\n *\r\n * @internal\r\n */\r\nconst matchedRouteKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : '');\r\n/**\r\n * Allows overriding the router view depth to control which component in\r\n * `matched` is rendered. rvd stands for Router View Depth\r\n *\r\n * @internal\r\n */\r\nconst viewDepthKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : '');\r\n/**\r\n * Allows overriding the router instance returned by `useRouter` in tests. r\r\n * stands for router\r\n *\r\n * @internal\r\n */\r\nconst routerKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router' : '');\r\n/**\r\n * Allows overriding the current route returned by `useRoute` in tests. rl\r\n * stands for route location\r\n *\r\n * @internal\r\n */\r\nconst routeLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'route location' : '');\r\n/**\r\n * Allows overriding the current route used by router-view. Internally this is\r\n * used when the `route` prop is passed.\r\n *\r\n * @internal\r\n */\r\nconst routerViewLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location' : '');\n\n/**\r\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\r\n */\r\nfunction useCallbacks() {\r\n let handlers = [];\r\n function add(handler) {\r\n handlers.push(handler);\r\n return () => {\r\n const i = handlers.indexOf(handler);\r\n if (i > -1)\r\n handlers.splice(i, 1);\r\n };\r\n }\r\n function reset() {\r\n handlers = [];\r\n }\r\n return {\r\n add,\r\n list: () => handlers,\r\n reset,\r\n };\r\n}\n\nfunction registerGuard(record, name, guard) {\r\n const removeFromList = () => {\r\n record[name].delete(guard);\r\n };\r\n onUnmounted(removeFromList);\r\n onDeactivated(removeFromList);\r\n onActivated(() => {\r\n record[name].add(guard);\r\n });\r\n record[name].add(guard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the component for the current\r\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\r\n * used in any component. The guard is removed when the component is unmounted.\r\n *\r\n * @param leaveGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteLeave(leaveGuard) {\r\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = inject(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside a component child of <router-view>. Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'leaveGuards', leaveGuard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the current location is about\r\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\r\n * component. The guard is removed when the component is unmounted.\r\n *\r\n * @param updateGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteUpdate(updateGuard) {\r\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = inject(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside a component child of <router-view>. Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'updateGuards', updateGuard);\r\n}\r\nfunction guardToPromiseFn(guard, to, from, record, name) {\r\n // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\r\n const enterCallbackArray = record &&\r\n // name is defined if record is because of the function overload\r\n (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\r\n return () => new Promise((resolve, reject) => {\r\n const next = (valid) => {\r\n if (valid === false) {\r\n reject(createRouterError(4 /* ErrorTypes.NAVIGATION_ABORTED */, {\r\n from,\r\n to,\r\n }));\r\n }\r\n else if (valid instanceof Error) {\r\n reject(valid);\r\n }\r\n else if (isRouteLocation(valid)) {\r\n reject(createRouterError(2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */, {\r\n from: to,\r\n to: valid,\r\n }));\r\n }\r\n else {\r\n if (enterCallbackArray &&\r\n // since enterCallbackArray is truthy, both record and name also are\r\n record.enterCallbacks[name] === enterCallbackArray &&\r\n typeof valid === 'function') {\r\n enterCallbackArray.push(valid);\r\n }\r\n resolve();\r\n }\r\n };\r\n // wrapping with Promise.resolve allows it to work with both async and sync guards\r\n const guardReturn = guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next);\r\n let guardCall = Promise.resolve(guardReturn);\r\n if (guard.length < 3)\r\n guardCall = guardCall.then(next);\r\n if ((process.env.NODE_ENV !== 'production') && guard.length > 2) {\r\n const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\r\n if (typeof guardReturn === 'object' && 'then' in guardReturn) {\r\n guardCall = guardCall.then(resolvedValue => {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n return Promise.reject(new Error('Invalid navigation guard'));\r\n }\r\n return resolvedValue;\r\n });\r\n }\r\n else if (guardReturn !== undefined) {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n reject(new Error('Invalid navigation guard'));\r\n return;\r\n }\r\n }\r\n }\r\n guardCall.catch(err => reject(err));\r\n });\r\n}\r\nfunction canOnlyBeCalledOnce(next, to, from) {\r\n let called = 0;\r\n return function () {\r\n if (called++ === 1)\r\n warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\r\n // @ts-expect-error: we put it in the original one because it's easier to check\r\n next._called = true;\r\n if (called === 1)\r\n next.apply(null, arguments);\r\n };\r\n}\r\nfunction extractComponentsGuards(matched, guardType, to, from) {\r\n const guards = [];\r\n for (const record of matched) {\r\n if ((process.env.NODE_ENV !== 'production') && !record.components && !record.children.length) {\r\n warn(`Record with path \"${record.path}\" is either missing a \"component(s)\"` +\r\n ` or \"children\" property.`);\r\n }\r\n for (const name in record.components) {\r\n let rawComponent = record.components[name];\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (!rawComponent ||\r\n (typeof rawComponent !== 'object' &&\r\n typeof rawComponent !== 'function')) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\r\n ` a valid component. Received \"${String(rawComponent)}\".`);\r\n // throw to ensure we stop here but warn to ensure the message isn't\r\n // missed by the user\r\n throw new Error('Invalid route component');\r\n }\r\n else if ('then' in rawComponent) {\r\n // warn if user wrote import('/component.vue') instead of () =>\r\n // import('./component.vue')\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\r\n `Promise instead of a function that returns a Promise. Did you ` +\r\n `write \"import('./MyPage.vue')\" instead of ` +\r\n `\"() => import('./MyPage.vue')\" ? This will break in ` +\r\n `production if not fixed.`);\r\n const promise = rawComponent;\r\n rawComponent = () => promise;\r\n }\r\n else if (rawComponent.__asyncLoader &&\r\n // warn only once per component\r\n !rawComponent.__warnedDefineAsync) {\r\n rawComponent.__warnedDefineAsync = true;\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\r\n `using \"defineAsyncComponent()\". ` +\r\n `Write \"() => import('./MyPage.vue')\" instead of ` +\r\n `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\r\n }\r\n }\r\n // skip update and leave guards if the route component is not mounted\r\n if (guardType !== 'beforeRouteEnter' && !record.instances[name])\r\n continue;\r\n if (isRouteComponent(rawComponent)) {\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = rawComponent.__vccOpts || rawComponent;\r\n const guard = options[guardType];\r\n guard && guards.push(guardToPromiseFn(guard, to, from, record, name));\r\n }\r\n else {\r\n // start requesting the chunk already\r\n let componentPromise = rawComponent();\r\n if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\r\n componentPromise = Promise.resolve(componentPromise);\r\n }\r\n guards.push(() => componentPromise.then(resolved => {\r\n if (!resolved)\r\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`));\r\n const resolvedComponent = isESModule(resolved)\r\n ? resolved.default\r\n : resolved;\r\n // replace the function with the resolved component\r\n // cannot be null or undefined because we went into the for loop\r\n record.components[name] = resolvedComponent;\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = resolvedComponent.__vccOpts || resolvedComponent;\r\n const guard = options[guardType];\r\n return guard && guardToPromiseFn(guard, to, from, record, name)();\r\n }));\r\n }\r\n }\r\n }\r\n return guards;\r\n}\r\n/**\r\n * Allows differentiating lazy components from functional components and vue-class-component\r\n * @internal\r\n *\r\n * @param component\r\n */\r\nfunction isRouteComponent(component) {\r\n return (typeof component === 'object' ||\r\n 'displayName' in component ||\r\n 'props' in component ||\r\n '__vccOpts' in component);\r\n}\r\n/**\r\n * Ensures a route is loaded, so it can be passed as o prop to `<RouterView>`.\r\n *\r\n * @param route - resolved route to load\r\n */\r\nfunction loadRouteLocation(route) {\r\n return route.matched.every(record => record.redirect)\r\n ? Promise.reject(new Error('Cannot load a route that redirects.'))\r\n : Promise.all(route.matched.map(record => record.components &&\r\n Promise.all(Object.keys(record.components).reduce((promises, name) => {\r\n const rawComponent = record.components[name];\r\n if (typeof rawComponent === 'function' &&\r\n !('displayName' in rawComponent)) {\r\n promises.push(rawComponent().then(resolved => {\r\n if (!resolved)\r\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\". Ensure you passed a function that returns a promise.`));\r\n const resolvedComponent = isESModule(resolved)\r\n ? resolved.default\r\n : resolved;\r\n // replace the function with the resolved component\r\n // cannot be null or undefined because we went into the for loop\r\n record.components[name] = resolvedComponent;\r\n return;\r\n }));\r\n }\r\n return promises;\r\n }, [])))).then(() => route);\r\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\r\n// `isExactActive` behavior should go through an RFC\r\nfunction useLink(props) {\r\n const router = inject(routerKey);\r\n const currentRoute = inject(routeLocationKey);\r\n const route = computed(() => router.resolve(unref(props.to)));\r\n const activeRecordIndex = computed(() => {\r\n const { matched } = route.value;\r\n const { length } = matched;\r\n const routeMatched = matched[length - 1];\r\n const currentMatched = currentRoute.matched;\r\n if (!routeMatched || !currentMatched.length)\r\n return -1;\r\n const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\r\n if (index > -1)\r\n return index;\r\n // possible parent record\r\n const parentRecordPath = getOriginalPath(matched[length - 2]);\r\n return (\r\n // we are dealing with nested routes\r\n length > 1 &&\r\n // if the parent and matched route have the same path, this link is\r\n // referring to the empty child. Or we currently are on a different\r\n // child of the same parent\r\n getOriginalPath(routeMatched) === parentRecordPath &&\r\n // avoid comparing the child with its parent\r\n currentMatched[currentMatched.length - 1].path !== parentRecordPath\r\n ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\r\n : index);\r\n });\r\n const isActive = computed(() => activeRecordIndex.value > -1 &&\r\n includesParams(currentRoute.params, route.value.params));\r\n const isExactActive = computed(() => activeRecordIndex.value > -1 &&\r\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\r\n isSameRouteLocationParams(currentRoute.params, route.value.params));\r\n function navigate(e = {}) {\r\n if (guardEvent(e)) {\r\n return router[unref(props.replace) ? 'replace' : 'push'](unref(props.to)\r\n // avoid uncaught errors are they are logged anyway\r\n ).catch(noop);\r\n }\r\n return Promise.resolve();\r\n }\r\n // devtools only\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\r\n const instance = getCurrentInstance();\r\n if (instance) {\r\n const linkContextDevtools = {\r\n route: route.value,\r\n isActive: isActive.value,\r\n isExactActive: isExactActive.value,\r\n };\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools = instance.__vrl_devtools || [];\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools.push(linkContextDevtools);\r\n watchEffect(() => {\r\n linkContextDevtools.route = route.value;\r\n linkContextDevtools.isActive = isActive.value;\r\n linkContextDevtools.isExactActive = isExactActive.value;\r\n }, { flush: 'post' });\r\n }\r\n }\r\n /**\r\n * NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this\r\n */\r\n return {\r\n route,\r\n href: computed(() => route.value.href),\r\n isActive,\r\n isExactActive,\r\n navigate,\r\n };\r\n}\r\nconst RouterLinkImpl = /*#__PURE__*/ defineComponent({\r\n name: 'RouterLink',\r\n compatConfig: { MODE: 3 },\r\n props: {\r\n to: {\r\n type: [String, Object],\r\n required: true,\r\n },\r\n replace: Boolean,\r\n activeClass: String,\r\n // inactiveClass: String,\r\n exactActiveClass: String,\r\n custom: Boolean,\r\n ariaCurrentValue: {\r\n type: String,\r\n default: 'page',\r\n },\r\n },\r\n useLink,\r\n setup(props, { slots }) {\r\n const link = reactive(useLink(props));\r\n const { options } = inject(routerKey);\r\n const elClass = computed(() => ({\r\n [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\r\n // [getLinkClass(\r\n // props.inactiveClass,\r\n // options.linkInactiveClass,\r\n // 'router-link-inactive'\r\n // )]: !link.isExactActive,\r\n [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\r\n }));\r\n return () => {\r\n const children = slots.default && slots.default(link);\r\n return props.custom\r\n ? children\r\n : h('a', {\r\n 'aria-current': link.isExactActive\r\n ? props.ariaCurrentValue\r\n : null,\r\n href: link.href,\r\n // this would override user added attrs but Vue will still add\r\n // the listener, so we end up triggering both\r\n onClick: link.navigate,\r\n class: elClass.value,\r\n }, children);\r\n };\r\n },\r\n});\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to render a link that triggers a navigation on click.\r\n */\r\nconst RouterLink = RouterLinkImpl;\r\nfunction guardEvent(e) {\r\n // don't redirect with control keys\r\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\r\n return;\r\n // don't redirect when preventDefault called\r\n if (e.defaultPrevented)\r\n return;\r\n // don't redirect on right click\r\n if (e.button !== undefined && e.button !== 0)\r\n return;\r\n // don't redirect if `target=\"_blank\"`\r\n // @ts-expect-error getAttribute does exist\r\n if (e.currentTarget && e.currentTarget.getAttribute) {\r\n // @ts-expect-error getAttribute exists\r\n const target = e.currentTarget.getAttribute('target');\r\n if (/\\b_blank\\b/i.test(target))\r\n return;\r\n }\r\n // this may be a Weex event which doesn't have this method\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n return true;\r\n}\r\nfunction includesParams(outer, inner) {\r\n for (const key in inner) {\r\n const innerValue = inner[key];\r\n const outerValue = outer[key];\r\n if (typeof innerValue === 'string') {\r\n if (innerValue !== outerValue)\r\n return false;\r\n }\r\n else {\r\n if (!isArray(outerValue) ||\r\n outerValue.length !== innerValue.length ||\r\n innerValue.some((value, i) => value !== outerValue[i]))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Get the original path value of a record by following its aliasOf\r\n * @param record\r\n */\r\nfunction getOriginalPath(record) {\r\n return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\r\n}\r\n/**\r\n * Utility class to get the active class based on defaults.\r\n * @param propClass\r\n * @param globalClass\r\n * @param defaultClass\r\n */\r\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\r\n ? propClass\r\n : globalClass != null\r\n ? globalClass\r\n : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\r\n name: 'RouterView',\r\n // #674 we manually inherit them\r\n inheritAttrs: false,\r\n props: {\r\n name: {\r\n type: String,\r\n default: 'default',\r\n },\r\n route: Object,\r\n },\r\n // Better compat for @vue/compat users\r\n // https://github.com/vuejs/router/issues/1315\r\n compatConfig: { MODE: 3 },\r\n setup(props, { attrs, slots }) {\r\n (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage();\r\n const injectedRoute = inject(routerViewLocationKey);\r\n const routeToDisplay = computed(() => props.route || injectedRoute.value);\r\n const injectedDepth = inject(viewDepthKey, 0);\r\n // The depth changes based on empty components option, which allows passthrough routes e.g. routes with children\r\n // that are used to reuse the `path` property\r\n const depth = computed(() => {\r\n let initialDepth = unref(injectedDepth);\r\n const { matched } = routeToDisplay.value;\r\n let matchedRoute;\r\n while ((matchedRoute = matched[initialDepth]) &&\r\n !matchedRoute.components) {\r\n initialDepth++;\r\n }\r\n return initialDepth;\r\n });\r\n const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);\r\n provide(viewDepthKey, computed(() => depth.value + 1));\r\n provide(matchedRouteKey, matchedRouteRef);\r\n provide(routerViewLocationKey, routeToDisplay);\r\n const viewRef = ref();\r\n // watch at the same time the component instance, the route record we are\r\n // rendering, and the name\r\n watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\r\n // copy reused instances\r\n if (to) {\r\n // this will update the instance for new instances as well as reused\r\n // instances when navigating to a new route\r\n to.instances[name] = instance;\r\n // the component instance is reused for a different route or name, so\r\n // we copy any saved update or leave guards. With async setup, the\r\n // mounting component will mount before the matchedRoute changes,\r\n // making instance === oldInstance, so we check if guards have been\r\n // added before. This works because we remove guards when\r\n // unmounting/deactivating components\r\n if (from && from !== to && instance && instance === oldInstance) {\r\n if (!to.leaveGuards.size) {\r\n to.leaveGuards = from.leaveGuards;\r\n }\r\n if (!to.updateGuards.size) {\r\n to.updateGuards = from.updateGuards;\r\n }\r\n }\r\n }\r\n // trigger beforeRouteEnter next callbacks\r\n if (instance &&\r\n to &&\r\n // if there is no instance but to and from are the same this might be\r\n // the first visit\r\n (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\r\n (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\r\n }\r\n }, { flush: 'post' });\r\n return () => {\r\n const route = routeToDisplay.value;\r\n // we need the value at the time we render because when we unmount, we\r\n // navigated to a different location so the value is different\r\n const currentName = props.name;\r\n const matchedRoute = matchedRouteRef.value;\r\n const ViewComponent = matchedRoute && matchedRoute.components[currentName];\r\n if (!ViewComponent) {\r\n return normalizeSlot(slots.default, { Component: ViewComponent, route });\r\n }\r\n // props from route configuration\r\n const routePropsOption = matchedRoute.props[currentName];\r\n const routeProps = routePropsOption\r\n ? routePropsOption === true\r\n ? route.params\r\n : typeof routePropsOption === 'function'\r\n ? routePropsOption(route)\r\n : routePropsOption\r\n : null;\r\n const onVnodeUnmounted = vnode => {\r\n // remove the instance reference to prevent leak\r\n if (vnode.component.isUnmounted) {\r\n matchedRoute.instances[currentName] = null;\r\n }\r\n };\r\n const component = h(ViewComponent, assign({}, routeProps, attrs, {\r\n onVnodeUnmounted,\r\n ref: viewRef,\r\n }));\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n isBrowser &&\r\n component.ref) {\r\n // TODO: can display if it's an alias, its props\r\n const info = {\r\n depth: depth.value,\r\n name: matchedRoute.name,\r\n path: matchedRoute.path,\r\n meta: matchedRoute.meta,\r\n };\r\n const internalInstances = isArray(component.ref)\r\n ? component.ref.map(r => r.i)\r\n : [component.ref.i];\r\n internalInstances.forEach(instance => {\r\n // @ts-expect-error\r\n instance.__vrv_devtools = info;\r\n });\r\n }\r\n return (\r\n // pass the vnode to the slot as a prop.\r\n // h and <component :is=\"...\"> both accept vnodes\r\n normalizeSlot(slots.default, { Component: component, route }) ||\r\n component);\r\n };\r\n },\r\n});\r\nfunction normalizeSlot(slot, data) {\r\n if (!slot)\r\n return null;\r\n const slotContent = slot(data);\r\n return slotContent.length === 1 ? slotContent[0] : slotContent;\r\n}\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to display the current route the user is at.\r\n */\r\nconst RouterView = RouterViewImpl;\r\n// warn against deprecated usage with <transition> & <keep-alive>\r\n// due to functional component being no longer eager in Vue 3\r\nfunction warnDeprecatedUsage() {\r\n const instance = getCurrentInstance();\r\n const parentName = instance.parent && instance.parent.type.name;\r\n if (parentName &&\r\n (parentName === 'KeepAlive' || parentName.includes('Transition'))) {\r\n const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\r\n warn(`<router-view> can no longer be used directly inside <transition> or <keep-alive>.\\n` +\r\n `Use slot props instead:\\n\\n` +\r\n `<router-view v-slot=\"{ Component }\">\\n` +\r\n ` <${comp}>\\n` +\r\n ` <component :is=\"Component\" />\\n` +\r\n ` </${comp}>\\n` +\r\n `</router-view>`);\r\n }\r\n}\n\n/**\r\n * Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances).\r\n *\r\n * @param routeLocation - routeLocation to format\r\n * @param tooltip - optional tooltip\r\n * @returns a copy of the routeLocation\r\n */\r\nfunction formatRouteLocation(routeLocation, tooltip) {\r\n const copy = assign({}, routeLocation, {\r\n // remove variables that can contain vue instances\r\n matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\r\n });\r\n return {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: routeLocation.fullPath,\r\n tooltip,\r\n value: copy,\r\n },\r\n };\r\n}\r\nfunction formatDisplay(display) {\r\n return {\r\n _custom: {\r\n display,\r\n },\r\n };\r\n}\r\n// to support multiple router instances\r\nlet routerId = 0;\r\nfunction addDevtools(app, router, matcher) {\r\n // Take over router.beforeEach and afterEach\r\n // make sure we are not registering the devtool twice\r\n if (router.__hasDevtools)\r\n return;\r\n router.__hasDevtools = true;\r\n // increment to support multiple router instances\r\n const id = routerId++;\r\n setupDevtoolsPlugin({\r\n id: 'org.vuejs.router' + (id ? '.' + id : ''),\r\n label: 'Vue Router',\r\n packageName: 'vue-router',\r\n homepage: 'https://router.vuejs.org',\r\n logo: 'https://router.vuejs.org/logo.png',\r\n componentStateTypes: ['Routing'],\r\n app,\r\n }, api => {\r\n if (typeof api.now !== 'function') {\r\n console.warn('[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\r\n }\r\n // display state added by the router\r\n api.on.inspectComponent((payload, ctx) => {\r\n if (payload.instanceData) {\r\n payload.instanceData.state.push({\r\n type: 'Routing',\r\n key: '$route',\r\n editable: false,\r\n value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\r\n });\r\n }\r\n });\r\n // mark router-link as active and display tags on router views\r\n api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\r\n if (componentInstance.__vrv_devtools) {\r\n const info = componentInstance.__vrv_devtools;\r\n node.tags.push({\r\n label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\r\n textColor: 0,\r\n tooltip: 'This component is rendered by &lt;router-view&gt;',\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n // if multiple useLink are used\r\n if (isArray(componentInstance.__vrl_devtools)) {\r\n componentInstance.__devtoolsApi = api;\r\n componentInstance.__vrl_devtools.forEach(devtoolsData => {\r\n let backgroundColor = ORANGE_400;\r\n let tooltip = '';\r\n if (devtoolsData.isExactActive) {\r\n backgroundColor = LIME_500;\r\n tooltip = 'This is exactly active';\r\n }\r\n else if (devtoolsData.isActive) {\r\n backgroundColor = BLUE_600;\r\n tooltip = 'This link is active';\r\n }\r\n node.tags.push({\r\n label: devtoolsData.route.path,\r\n textColor: 0,\r\n tooltip,\r\n backgroundColor,\r\n });\r\n });\r\n }\r\n });\r\n watch(router.currentRoute, () => {\r\n // refresh active state\r\n refreshRoutesView();\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n const navigationsLayerId = 'router:navigations:' + id;\r\n api.addTimelineLayer({\r\n id: navigationsLayerId,\r\n label: `Router${id ? ' ' + id : ''} Navigations`,\r\n color: 0x40a8c4,\r\n });\r\n // const errorsLayerId = 'router:errors'\r\n // api.addTimelineLayer({\r\n // id: errorsLayerId,\r\n // label: 'Router Errors',\r\n // color: 0xea5455,\r\n // })\r\n router.onError((error, to) => {\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'Error during Navigation',\r\n subtitle: to.fullPath,\r\n logType: 'error',\r\n time: api.now(),\r\n data: { error },\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n // attached to `meta` and used to group events\r\n let navigationId = 0;\r\n router.beforeEach((to, from) => {\r\n const data = {\r\n guard: formatDisplay('beforeEach'),\r\n from: formatRouteLocation(from, 'Current Location during this navigation'),\r\n to: formatRouteLocation(to, 'Target location'),\r\n };\r\n // Used to group navigations together, hide from devtools\r\n Object.defineProperty(to.meta, '__navigationId', {\r\n value: navigationId++,\r\n });\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n time: api.now(),\r\n title: 'Start of navigation',\r\n subtitle: to.fullPath,\r\n data,\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n router.afterEach((to, from, failure) => {\r\n const data = {\r\n guard: formatDisplay('afterEach'),\r\n };\r\n if (failure) {\r\n data.failure = {\r\n _custom: {\r\n type: Error,\r\n readOnly: true,\r\n display: failure ? failure.message : '',\r\n tooltip: 'Navigation Failure',\r\n value: failure,\r\n },\r\n };\r\n data.status = formatDisplay('❌');\r\n }\r\n else {\r\n data.status = formatDisplay('✅');\r\n }\r\n // we set here to have the right order\r\n data.from = formatRouteLocation(from, 'Current Location during this navigation');\r\n data.to = formatRouteLocation(to, 'Target location');\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'End of navigation',\r\n subtitle: to.fullPath,\r\n time: api.now(),\r\n data,\r\n logType: failure ? 'warning' : 'default',\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n /**\r\n * Inspector of Existing routes\r\n */\r\n const routerInspectorId = 'router-inspector:' + id;\r\n api.addInspector({\r\n id: routerInspectorId,\r\n label: 'Routes' + (id ? ' ' + id : ''),\r\n icon: 'book',\r\n treeFilterPlaceholder: 'Search routes',\r\n });\r\n function refreshRoutesView() {\r\n // the routes view isn't active\r\n if (!activeRoutesPayload)\r\n return;\r\n const payload = activeRoutesPayload;\r\n // children routes will appear as nested\r\n let routes = matcher.getRoutes().filter(route => !route.parent);\r\n // reset match state to false\r\n routes.forEach(resetMatchStateOnRouteRecord);\r\n // apply a match state if there is a payload\r\n if (payload.filter) {\r\n routes = routes.filter(route => \r\n // save matches state based on the payload\r\n isRouteMatching(route, payload.filter.toLowerCase()));\r\n }\r\n // mark active routes\r\n routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\r\n payload.rootNodes = routes.map(formatRouteRecordForInspector);\r\n }\r\n let activeRoutesPayload;\r\n api.on.getInspectorTree(payload => {\r\n activeRoutesPayload = payload;\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n refreshRoutesView();\r\n }\r\n });\r\n /**\r\n * Display information about the currently selected route record\r\n */\r\n api.on.getInspectorState(payload => {\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n const routes = matcher.getRoutes();\r\n const route = routes.find(route => route.record.__vd_id === payload.nodeId);\r\n if (route) {\r\n payload.state = {\r\n options: formatRouteRecordMatcherForStateInspector(route),\r\n };\r\n }\r\n }\r\n });\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n}\r\nfunction modifierForKey(key) {\r\n if (key.optional) {\r\n return key.repeatable ? '*' : '?';\r\n }\r\n else {\r\n return key.repeatable ? '+' : '';\r\n }\r\n}\r\nfunction formatRouteRecordMatcherForStateInspector(route) {\r\n const { record } = route;\r\n const fields = [\r\n { editable: false, key: 'path', value: record.path },\r\n ];\r\n if (record.name != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'name',\r\n value: record.name,\r\n });\r\n }\r\n fields.push({ editable: false, key: 'regexp', value: route.re });\r\n if (route.keys.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'keys',\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.keys\r\n .map(key => `${key.name}${modifierForKey(key)}`)\r\n .join(' '),\r\n tooltip: 'Param keys',\r\n value: route.keys,\r\n },\r\n },\r\n });\r\n }\r\n if (record.redirect != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'redirect',\r\n value: record.redirect,\r\n });\r\n }\r\n if (route.alias.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'aliases',\r\n value: route.alias.map(alias => alias.record.path),\r\n });\r\n }\r\n if (Object.keys(route.record.meta).length) {\r\n fields.push({\r\n editable: false,\r\n key: 'meta',\r\n value: route.record.meta,\r\n });\r\n }\r\n fields.push({\r\n key: 'score',\r\n editable: false,\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.score.map(score => score.join(', ')).join(' | '),\r\n tooltip: 'Score used to sort routes',\r\n value: route.score,\r\n },\r\n },\r\n });\r\n return fields;\r\n}\r\n/**\r\n * Extracted from tailwind palette\r\n */\r\nconst PINK_500 = 0xec4899;\r\nconst BLUE_600 = 0x2563eb;\r\nconst LIME_500 = 0x84cc16;\r\nconst CYAN_400 = 0x22d3ee;\r\nconst ORANGE_400 = 0xfb923c;\r\n// const GRAY_100 = 0xf4f4f5\r\nconst DARK = 0x666666;\r\nfunction formatRouteRecordForInspector(route) {\r\n const tags = [];\r\n const { record } = route;\r\n if (record.name != null) {\r\n tags.push({\r\n label: String(record.name),\r\n textColor: 0,\r\n backgroundColor: CYAN_400,\r\n });\r\n }\r\n if (record.aliasOf) {\r\n tags.push({\r\n label: 'alias',\r\n textColor: 0,\r\n backgroundColor: ORANGE_400,\r\n });\r\n }\r\n if (route.__vd_match) {\r\n tags.push({\r\n label: 'matches',\r\n textColor: 0,\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n if (route.__vd_exactActive) {\r\n tags.push({\r\n label: 'exact',\r\n textColor: 0,\r\n backgroundColor: LIME_500,\r\n });\r\n }\r\n if (route.__vd_active) {\r\n tags.push({\r\n label: 'active',\r\n textColor: 0,\r\n backgroundColor: BLUE_600,\r\n });\r\n }\r\n if (record.redirect) {\r\n tags.push({\r\n label: typeof record.redirect === 'string'\r\n ? `redirect: ${record.redirect}`\r\n : 'redirects',\r\n textColor: 0xffffff,\r\n backgroundColor: DARK,\r\n });\r\n }\r\n // add an id to be able to select it. Using the `path` is not possible because\r\n // empty path children would collide with their parents\r\n let id = record.__vd_id;\r\n if (id == null) {\r\n id = String(routeRecordId++);\r\n record.__vd_id = id;\r\n }\r\n return {\r\n id,\r\n label: record.path,\r\n tags,\r\n children: route.children.map(formatRouteRecordForInspector),\r\n };\r\n}\r\n// incremental id for route records and inspector state\r\nlet routeRecordId = 0;\r\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\r\nfunction markRouteRecordActive(route, currentRoute) {\r\n // no route will be active if matched is empty\r\n // reset the matching state\r\n const isExactActive = currentRoute.matched.length &&\r\n isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\r\n route.__vd_exactActive = route.__vd_active = isExactActive;\r\n if (!isExactActive) {\r\n route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\r\n }\r\n route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\r\n}\r\nfunction resetMatchStateOnRouteRecord(route) {\r\n route.__vd_match = false;\r\n route.children.forEach(resetMatchStateOnRouteRecord);\r\n}\r\nfunction isRouteMatching(route, filter) {\r\n const found = String(route.re).match(EXTRACT_REGEXP_RE);\r\n route.__vd_match = false;\r\n if (!found || found.length < 3) {\r\n return false;\r\n }\r\n // use a regexp without $ at the end to match nested routes better\r\n const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\r\n if (nonEndingRE.test(filter)) {\r\n // mark children as matches\r\n route.children.forEach(child => isRouteMatching(child, filter));\r\n // exception case: `/`\r\n if (route.record.path !== '/' || filter === '/') {\r\n route.__vd_match = route.re.test(filter);\r\n return true;\r\n }\r\n // hide the / route\r\n return false;\r\n }\r\n const path = route.record.path.toLowerCase();\r\n const decodedPath = decode(path);\r\n // also allow partial matching on the path\r\n if (!filter.startsWith('/') &&\r\n (decodedPath.includes(filter) || path.includes(filter)))\r\n return true;\r\n if (decodedPath.startsWith(filter) || path.startsWith(filter))\r\n return true;\r\n if (route.record.name && String(route.record.name).includes(filter))\r\n return true;\r\n return route.children.some(child => isRouteMatching(child, filter));\r\n}\r\nfunction omit(obj, keys) {\r\n const ret = {};\r\n for (const key in obj) {\r\n if (!keys.includes(key)) {\r\n // @ts-expect-error\r\n ret[key] = obj[key];\r\n }\r\n }\r\n return ret;\r\n}\n\n/**\r\n * Creates a Router instance that can be used by a Vue app.\r\n *\r\n * @param options - {@link RouterOptions}\r\n */\r\nfunction createRouter(options) {\r\n const matcher = createRouterMatcher(options.routes, options);\r\n const parseQuery$1 = options.parseQuery || parseQuery;\r\n const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\r\n const routerHistory = options.history;\r\n if ((process.env.NODE_ENV !== 'production') && !routerHistory)\r\n throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\r\n ' https://next.router.vuejs.org/api/#history.');\r\n const beforeGuards = useCallbacks();\r\n const beforeResolveGuards = useCallbacks();\r\n const afterGuards = useCallbacks();\r\n const currentRoute = shallowRef(START_LOCATION_NORMALIZED);\r\n let pendingLocation = START_LOCATION_NORMALIZED;\r\n // leave the scrollRestoration if no scrollBehavior is provided\r\n if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\r\n history.scrollRestoration = 'manual';\r\n }\r\n const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\r\n const encodeParams = applyToParams.bind(null, encodeParam);\r\n const decodeParams = \r\n // @ts-expect-error: intentionally avoid the type check\r\n applyToParams.bind(null, decode);\r\n function addRoute(parentOrRoute, route) {\r\n let parent;\r\n let record;\r\n if (isRouteName(parentOrRoute)) {\r\n parent = matcher.getRecordMatcher(parentOrRoute);\r\n record = route;\r\n }\r\n else {\r\n record = parentOrRoute;\r\n }\r\n return matcher.addRoute(record, parent);\r\n }\r\n function removeRoute(name) {\r\n const recordMatcher = matcher.getRecordMatcher(name);\r\n if (recordMatcher) {\r\n matcher.removeRoute(recordMatcher);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Cannot remove non-existent route \"${String(name)}\"`);\r\n }\r\n }\r\n function getRoutes() {\r\n return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\r\n }\r\n function hasRoute(name) {\r\n return !!matcher.getRecordMatcher(name);\r\n }\r\n function resolve(rawLocation, currentLocation) {\r\n // const objectLocation = routerLocationAsObject(rawLocation)\r\n // we create a copy to modify it later\r\n currentLocation = assign({}, currentLocation || currentRoute.value);\r\n if (typeof rawLocation === 'string') {\r\n const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\r\n const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\r\n const href = routerHistory.createHref(locationNormalized.fullPath);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (href.startsWith('//'))\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${rawLocation}\"`);\r\n }\r\n }\r\n // locationNormalized is always a new object\r\n return assign(locationNormalized, matchedRoute, {\r\n params: decodeParams(matchedRoute.params),\r\n hash: decode(locationNormalized.hash),\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n let matcherLocation;\r\n // path could be relative in object as well\r\n if ('path' in rawLocation) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n 'params' in rawLocation &&\r\n !('name' in rawLocation) &&\r\n // @ts-expect-error: the type is never\r\n Object.keys(rawLocation.params).length) {\r\n warn(`Path \"${\r\n // @ts-expect-error: the type is never\r\n rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\r\n }\r\n matcherLocation = assign({}, rawLocation, {\r\n path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\r\n });\r\n }\r\n else {\r\n // remove any nullish param\r\n const targetParams = assign({}, rawLocation.params);\r\n for (const key in targetParams) {\r\n if (targetParams[key] == null) {\r\n delete targetParams[key];\r\n }\r\n }\r\n // pass encoded values to the matcher, so it can produce encoded path and fullPath\r\n matcherLocation = assign({}, rawLocation, {\r\n params: encodeParams(rawLocation.params),\r\n });\r\n // current location params are decoded, we need to encode them in case the\r\n // matcher merges the params\r\n currentLocation.params = encodeParams(currentLocation.params);\r\n }\r\n const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\r\n const hash = rawLocation.hash || '';\r\n if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) {\r\n warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\r\n }\r\n // the matcher might have merged current location params, so\r\n // we need to run the decoding again\r\n matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\r\n const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\r\n hash: encodeHash(hash),\r\n path: matchedRoute.path,\r\n }));\r\n const href = routerHistory.createHref(fullPath);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (href.startsWith('//')) {\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n }\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${'path' in rawLocation ? rawLocation.path : rawLocation}\"`);\r\n }\r\n }\r\n return assign({\r\n fullPath,\r\n // keep the hash encoded so fullPath is effectively path + encodedQuery +\r\n // hash\r\n hash,\r\n query: \r\n // if the user is using a custom query lib like qs, we might have\r\n // nested objects, so we keep the query as is, meaning it can contain\r\n // numbers at `$route.query`, but at the point, the user will have to\r\n // use their own type anyway.\r\n // https://github.com/vuejs/router/issues/328#issuecomment-649481567\r\n stringifyQuery$1 === stringifyQuery\r\n ? normalizeQuery(rawLocation.query)\r\n : (rawLocation.query || {}),\r\n }, matchedRoute, {\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n function locationAsObject(to) {\r\n return typeof to === 'string'\r\n ? parseURL(parseQuery$1, to, currentRoute.value.path)\r\n : assign({}, to);\r\n }\r\n function checkCanceledNavigation(to, from) {\r\n if (pendingLocation !== to) {\r\n return createRouterError(8 /* ErrorTypes.NAVIGATION_CANCELLED */, {\r\n from,\r\n to,\r\n });\r\n }\r\n }\r\n function push(to) {\r\n return pushWithRedirect(to);\r\n }\r\n function replace(to) {\r\n return push(assign(locationAsObject(to), { replace: true }));\r\n }\r\n function handleRedirectRecord(to) {\r\n const lastMatched = to.matched[to.matched.length - 1];\r\n if (lastMatched && lastMatched.redirect) {\r\n const { redirect } = lastMatched;\r\n let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\r\n if (typeof newTargetLocation === 'string') {\r\n newTargetLocation =\r\n newTargetLocation.includes('?') || newTargetLocation.includes('#')\r\n ? (newTargetLocation = locationAsObject(newTargetLocation))\r\n : // force empty params\r\n { path: newTargetLocation };\r\n // @ts-expect-error: force empty params when a string is passed to let\r\n // the router parse them again\r\n newTargetLocation.params = {};\r\n }\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n !('path' in newTargetLocation) &&\r\n !('name' in newTargetLocation)) {\r\n warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\r\n throw new Error('Invalid redirect');\r\n }\r\n return assign({\r\n query: to.query,\r\n hash: to.hash,\r\n // avoid transferring params if the redirect has a path\r\n params: 'path' in newTargetLocation ? {} : to.params,\r\n }, newTargetLocation);\r\n }\r\n }\r\n function pushWithRedirect(to, redirectedFrom) {\r\n const targetLocation = (pendingLocation = resolve(to));\r\n const from = currentRoute.value;\r\n const data = to.state;\r\n const force = to.force;\r\n // to could be a string where `replace` is a function\r\n const replace = to.replace === true;\r\n const shouldRedirect = handleRedirectRecord(targetLocation);\r\n if (shouldRedirect)\r\n return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\r\n state: typeof shouldRedirect === 'object'\r\n ? assign({}, data, shouldRedirect.state)\r\n : data,\r\n force,\r\n replace,\r\n }), \r\n // keep original redirectedFrom if it exists\r\n redirectedFrom || targetLocation);\r\n // if it was a redirect we already called `pushWithRedirect` above\r\n const toLocation = targetLocation;\r\n toLocation.redirectedFrom = redirectedFrom;\r\n let failure;\r\n if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\r\n failure = createRouterError(16 /* ErrorTypes.NAVIGATION_DUPLICATED */, { to: toLocation, from });\r\n // trigger scroll to allow scrolling to the same anchor\r\n handleScroll(from, from, \r\n // this is a push, the only way for it to be triggered from a\r\n // history.listen is with a redirect, which makes it become a push\r\n true, \r\n // This cannot be the first navigation because the initial location\r\n // cannot be manually navigated to\r\n false);\r\n }\r\n return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\r\n .catch((error) => isNavigationFailure(error)\r\n ? // navigation redirects still mark the router as ready\r\n isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)\r\n ? error\r\n : markAsReady(error) // also returns the error\r\n : // reject any unknown error\r\n triggerError(error, toLocation, from))\r\n .then((failure) => {\r\n if (failure) {\r\n if (isNavigationFailure(failure, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n // we are redirecting to the same location we were already at\r\n isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\r\n // and we have done it a couple of times\r\n redirectedFrom &&\r\n // @ts-expect-error: added only in dev\r\n (redirectedFrom._count = redirectedFrom._count\r\n ? // @ts-expect-error\r\n redirectedFrom._count + 1\r\n : 1) > 10) {\r\n warn(`Detected an infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow. This will break in production if not fixed.`);\r\n return Promise.reject(new Error('Infinite redirect in navigation guard'));\r\n }\r\n return pushWithRedirect(\r\n // keep options\r\n assign({\r\n // preserve an existing replacement but allow the redirect to override it\r\n replace,\r\n }, locationAsObject(failure.to), {\r\n state: typeof failure.to === 'object'\r\n ? assign({}, data, failure.to.state)\r\n : data,\r\n force,\r\n }), \r\n // preserve the original redirectedFrom if any\r\n redirectedFrom || toLocation);\r\n }\r\n }\r\n else {\r\n // if we fail we don't finalize the navigation\r\n failure = finalizeNavigation(toLocation, from, true, replace, data);\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n return failure;\r\n });\r\n }\r\n /**\r\n * Helper to reject and skip all navigation guards if a new navigation happened\r\n * @param to\r\n * @param from\r\n */\r\n function checkCanceledNavigationAndReject(to, from) {\r\n const error = checkCanceledNavigation(to, from);\r\n return error ? Promise.reject(error) : Promise.resolve();\r\n }\r\n // TODO: refactor the whole before guards by internally using router.beforeEach\r\n function navigate(to, from) {\r\n let guards;\r\n const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\r\n // all components here have been resolved once because we are leaving\r\n guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\r\n // leavingRecords is already reversed\r\n for (const record of leavingRecords) {\r\n record.leaveGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeRouteLeave guards\r\n return (runGuardQueue(guards)\r\n .then(() => {\r\n // check global guards beforeEach\r\n guards = [];\r\n for (const guard of beforeGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check in components beforeRouteUpdate\r\n guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\r\n for (const record of updatingRecords) {\r\n record.updateGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check the route beforeEnter\r\n guards = [];\r\n for (const record of to.matched) {\r\n // do not trigger beforeEnter on reused views\r\n if (record.beforeEnter && !from.matched.includes(record)) {\r\n if (isArray(record.beforeEnter)) {\r\n for (const beforeEnter of record.beforeEnter)\r\n guards.push(guardToPromiseFn(beforeEnter, to, from));\r\n }\r\n else {\r\n guards.push(guardToPromiseFn(record.beforeEnter, to, from));\r\n }\r\n }\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // NOTE: at this point to.matched is normalized and does not contain any () => Promise<Component>\r\n // clear existing enterCallbacks, these are added by extractComponentsGuards\r\n to.matched.forEach(record => (record.enterCallbacks = {}));\r\n // check in-component beforeRouteEnter\r\n guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check global guards beforeResolve\r\n guards = [];\r\n for (const guard of beforeResolveGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n // catch any navigation canceled\r\n .catch(err => isNavigationFailure(err, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)\r\n ? err\r\n : Promise.reject(err)));\r\n }\r\n function triggerAfterEach(to, from, failure) {\r\n // navigation is confirmed, call afterGuards\r\n // TODO: wrap with error handlers\r\n for (const guard of afterGuards.list())\r\n guard(to, from, failure);\r\n }\r\n /**\r\n * - Cleans up any navigation guards\r\n * - Changes the url if necessary\r\n * - Calls the scrollBehavior\r\n */\r\n function finalizeNavigation(toLocation, from, isPush, replace, data) {\r\n // a more recent navigation took place\r\n const error = checkCanceledNavigation(toLocation, from);\r\n if (error)\r\n return error;\r\n // only consider as push if it's not the first navigation\r\n const isFirstNavigation = from === START_LOCATION_NORMALIZED;\r\n const state = !isBrowser ? {} : history.state;\r\n // change URL only if the user did a push/replace and if it's not the initial navigation because\r\n // it's just reflecting the url\r\n if (isPush) {\r\n // on the initial navigation, we want to reuse the scroll position from\r\n // history state if it exists\r\n if (replace || isFirstNavigation)\r\n routerHistory.replace(toLocation.fullPath, assign({\r\n scroll: isFirstNavigation && state && state.scroll,\r\n }, data));\r\n else\r\n routerHistory.push(toLocation.fullPath, data);\r\n }\r\n // accept current navigation\r\n currentRoute.value = toLocation;\r\n handleScroll(toLocation, from, isPush, isFirstNavigation);\r\n markAsReady();\r\n }\r\n let removeHistoryListener;\r\n // attach listener to history to trigger navigations\r\n function setupListeners() {\r\n // avoid setting up listeners twice due to an invalid first navigation\r\n if (removeHistoryListener)\r\n return;\r\n removeHistoryListener = routerHistory.listen((to, _from, info) => {\r\n if (!router.listening)\r\n return;\r\n // cannot be a redirect route because it was in history\r\n const toLocation = resolve(to);\r\n // due to dynamic routing, and to hash history with manual navigation\r\n // (manually changing the url or calling history.hash = '#/somewhere'),\r\n // there could be a redirect record in history\r\n const shouldRedirect = handleRedirectRecord(toLocation);\r\n if (shouldRedirect) {\r\n pushWithRedirect(assign(shouldRedirect, { replace: true }), toLocation).catch(noop);\r\n return;\r\n }\r\n pendingLocation = toLocation;\r\n const from = currentRoute.value;\r\n // TODO: should be moved to web history?\r\n if (isBrowser) {\r\n saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\r\n }\r\n navigate(toLocation, from)\r\n .catch((error) => {\r\n if (isNavigationFailure(error, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\r\n return error;\r\n }\r\n if (isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\r\n // Here we could call if (info.delta) routerHistory.go(-info.delta,\r\n // false) but this is bug prone as we have no way to wait the\r\n // navigation to be finished before calling pushWithRedirect. Using\r\n // a setTimeout of 16ms seems to work but there is no guarantee for\r\n // it to work on every browser. So instead we do not restore the\r\n // history entry and trigger a new navigation as requested by the\r\n // navigation guard.\r\n // the error is already handled by router.push we just want to avoid\r\n // logging the error\r\n pushWithRedirect(error.to, toLocation\r\n // avoid an uncaught rejection, let push call triggerError\r\n )\r\n .then(failure => {\r\n // manual change in hash history #916 ending up in the URL not\r\n // changing, but it was changed by the manual url change, so we\r\n // need to manually change it ourselves\r\n if (isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ |\r\n 16 /* ErrorTypes.NAVIGATION_DUPLICATED */) &&\r\n !info.delta &&\r\n info.type === NavigationType.pop) {\r\n routerHistory.go(-1, false);\r\n }\r\n })\r\n .catch(noop);\r\n // avoid the then branch\r\n return Promise.reject();\r\n }\r\n // do not restore history on unknown direction\r\n if (info.delta) {\r\n routerHistory.go(-info.delta, false);\r\n }\r\n // unrecognized error, transfer to the global handler\r\n return triggerError(error, toLocation, from);\r\n })\r\n .then((failure) => {\r\n failure =\r\n failure ||\r\n finalizeNavigation(\r\n // after navigation, all matched components are resolved\r\n toLocation, from, false);\r\n // revert the navigation\r\n if (failure) {\r\n if (info.delta &&\r\n // a new navigation has been triggered, so we do not want to revert, that will change the current history\r\n // entry while a different route is displayed\r\n !isNavigationFailure(failure, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\r\n routerHistory.go(-info.delta, false);\r\n }\r\n else if (info.type === NavigationType.pop &&\r\n isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 16 /* ErrorTypes.NAVIGATION_DUPLICATED */)) {\r\n // manual change in hash history #916\r\n // it's like a push but lacks the information of the direction\r\n routerHistory.go(-1, false);\r\n }\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n })\r\n .catch(noop);\r\n });\r\n }\r\n // Initialization and Errors\r\n let readyHandlers = useCallbacks();\r\n let errorHandlers = useCallbacks();\r\n let ready;\r\n /**\r\n * Trigger errorHandlers added via onError and throws the error as well\r\n *\r\n * @param error - error to throw\r\n * @param to - location we were navigating to when the error happened\r\n * @param from - location we were navigating from when the error happened\r\n * @returns the error as a rejected promise\r\n */\r\n function triggerError(error, to, from) {\r\n markAsReady(error);\r\n const list = errorHandlers.list();\r\n if (list.length) {\r\n list.forEach(handler => handler(error, to, from));\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('uncaught error during route navigation:');\r\n }\r\n console.error(error);\r\n }\r\n return Promise.reject(error);\r\n }\r\n function isReady() {\r\n if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\r\n return Promise.resolve();\r\n return new Promise((resolve, reject) => {\r\n readyHandlers.add([resolve, reject]);\r\n });\r\n }\r\n function markAsReady(err) {\r\n if (!ready) {\r\n // still not ready if an error happened\r\n ready = !err;\r\n setupListeners();\r\n readyHandlers\r\n .list()\r\n .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\r\n readyHandlers.reset();\r\n }\r\n return err;\r\n }\r\n // Scroll behavior\r\n function handleScroll(to, from, isPush, isFirstNavigation) {\r\n const { scrollBehavior } = options;\r\n if (!isBrowser || !scrollBehavior)\r\n return Promise.resolve();\r\n const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\r\n ((isFirstNavigation || !isPush) &&\r\n history.state &&\r\n history.state.scroll) ||\r\n null;\r\n return nextTick()\r\n .then(() => scrollBehavior(to, from, scrollPosition))\r\n .then(position => position && scrollToPosition(position))\r\n .catch(err => triggerError(err, to, from));\r\n }\r\n const go = (delta) => routerHistory.go(delta);\r\n let started;\r\n const installedApps = new Set();\r\n const router = {\r\n currentRoute,\r\n listening: true,\r\n addRoute,\r\n removeRoute,\r\n hasRoute,\r\n getRoutes,\r\n resolve,\r\n options,\r\n push,\r\n replace,\r\n go,\r\n back: () => go(-1),\r\n forward: () => go(1),\r\n beforeEach: beforeGuards.add,\r\n beforeResolve: beforeResolveGuards.add,\r\n afterEach: afterGuards.add,\r\n onError: errorHandlers.add,\r\n isReady,\r\n install(app) {\r\n const router = this;\r\n app.component('RouterLink', RouterLink);\r\n app.component('RouterView', RouterView);\r\n app.config.globalProperties.$router = router;\r\n Object.defineProperty(app.config.globalProperties, '$route', {\r\n enumerable: true,\r\n get: () => unref(currentRoute),\r\n });\r\n // this initial navigation is only necessary on client, on server it doesn't\r\n // make sense because it will create an extra unnecessary navigation and could\r\n // lead to problems\r\n if (isBrowser &&\r\n // used for the initial navigation client side to avoid pushing\r\n // multiple times when the router is used in multiple apps\r\n !started &&\r\n currentRoute.value === START_LOCATION_NORMALIZED) {\r\n // see above\r\n started = true;\r\n push(routerHistory.location).catch(err => {\r\n if ((process.env.NODE_ENV !== 'production'))\r\n warn('Unexpected error when starting the router:', err);\r\n });\r\n }\r\n const reactiveRoute = {};\r\n for (const key in START_LOCATION_NORMALIZED) {\r\n // @ts-expect-error: the key matches\r\n reactiveRoute[key] = computed(() => currentRoute.value[key]);\r\n }\r\n app.provide(routerKey, router);\r\n app.provide(routeLocationKey, reactive(reactiveRoute));\r\n app.provide(routerViewLocationKey, currentRoute);\r\n const unmountApp = app.unmount;\r\n installedApps.add(app);\r\n app.unmount = function () {\r\n installedApps.delete(app);\r\n // the router is not attached to an app anymore\r\n if (installedApps.size < 1) {\r\n // invalidate the current navigation\r\n pendingLocation = START_LOCATION_NORMALIZED;\r\n removeHistoryListener && removeHistoryListener();\r\n removeHistoryListener = null;\r\n currentRoute.value = START_LOCATION_NORMALIZED;\r\n started = false;\r\n ready = false;\r\n }\r\n unmountApp();\r\n };\r\n // TODO: this probably needs to be updated so it can be used by vue-termui\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\r\n addDevtools(app, router, matcher);\r\n }\r\n },\r\n };\r\n return router;\r\n}\r\nfunction runGuardQueue(guards) {\r\n return guards.reduce((promise, guard) => promise.then(() => guard()), Promise.resolve());\r\n}\r\nfunction extractChangingRecords(to, from) {\r\n const leavingRecords = [];\r\n const updatingRecords = [];\r\n const enteringRecords = [];\r\n const len = Math.max(from.matched.length, to.matched.length);\r\n for (let i = 0; i < len; i++) {\r\n const recordFrom = from.matched[i];\r\n if (recordFrom) {\r\n if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\r\n updatingRecords.push(recordFrom);\r\n else\r\n leavingRecords.push(recordFrom);\r\n }\r\n const recordTo = to.matched[i];\r\n if (recordTo) {\r\n // the type doesn't matter because we are comparing per reference\r\n if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\r\n enteringRecords.push(recordTo);\r\n }\r\n }\r\n }\r\n return [leavingRecords, updatingRecords, enteringRecords];\r\n}\n\n/**\r\n * Returns the router instance. Equivalent to using `$router` inside\r\n * templates.\r\n */\r\nfunction useRouter() {\r\n return inject(routerKey);\r\n}\r\n/**\r\n * Returns the current route location. Equivalent to using `$route` inside\r\n * templates.\r\n */\r\nfunction useRoute() {\r\n return inject(routeLocationKey);\r\n}\n\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","import { nextTick, pushScopeId, popScopeId, openBlock, createBlock, withScopeId } from 'vue';\n\nfunction getInternetExplorerVersion() {\n var ua = window.navigator.userAgent;\n var msie = ua.indexOf('MSIE ');\n\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n var trident = ua.indexOf('Trident/');\n\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n var edge = ua.indexOf('Edge/');\n\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n } // other browser\n\n\n return -1;\n}\n\nlet isIE;\n\nfunction initCompat () {\n if (!initCompat.init) {\n initCompat.init = true;\n isIE = getInternetExplorerVersion() !== -1;\n }\n}\n\nvar script = {\n name: 'ResizeObserver',\n\n props: {\n emitOnMount: {\n type: Boolean,\n default: false,\n },\n\n ignoreWidth: {\n type: Boolean,\n default: false,\n },\n\n ignoreHeight: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n 'notify',\n ],\n\n mounted () {\n initCompat();\n nextTick(() => {\n this._w = this.$el.offsetWidth;\n this._h = this.$el.offsetHeight;\n if (this.emitOnMount) {\n this.emitSize();\n }\n });\n const object = document.createElement('object');\n this._resizeObject = object;\n object.setAttribute('aria-hidden', 'true');\n object.setAttribute('tabindex', -1);\n object.onload = this.addResizeHandlers;\n object.type = 'text/html';\n if (isIE) {\n this.$el.appendChild(object);\n }\n object.data = 'about:blank';\n if (!isIE) {\n this.$el.appendChild(object);\n }\n },\n\n beforeUnmount () {\n this.removeResizeHandlers();\n },\n\n methods: {\n compareAndNotify () {\n if ((!this.ignoreWidth && this._w !== this.$el.offsetWidth) || (!this.ignoreHeight && this._h !== this.$el.offsetHeight)) {\n this._w = this.$el.offsetWidth;\n this._h = this.$el.offsetHeight;\n this.emitSize();\n }\n },\n\n emitSize () {\n this.$emit('notify', {\n width: this._w,\n height: this._h,\n });\n },\n\n addResizeHandlers () {\n this._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n this.compareAndNotify();\n },\n\n removeResizeHandlers () {\n if (this._resizeObject && this._resizeObject.onload) {\n if (!isIE && this._resizeObject.contentDocument) {\n this._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n }\n this.$el.removeChild(this._resizeObject);\n this._resizeObject.onload = null;\n this._resizeObject = null;\n }\n },\n },\n};\n\nconst _withId = /*#__PURE__*/withScopeId(\"data-v-b329ee4c\");\n\npushScopeId(\"data-v-b329ee4c\");\nconst _hoisted_1 = {\n class: \"resize-observer\",\n tabindex: \"-1\"\n};\npopScopeId();\n\nconst render = /*#__PURE__*/_withId((_ctx, _cache, $props, $setup, $data, $options) => {\n return (openBlock(), createBlock(\"div\", _hoisted_1))\n});\n\nscript.render = render;\nscript.__scopeId = \"data-v-b329ee4c\";\nscript.__file = \"src/components/ResizeObserver.vue\";\n\nfunction install(app) {\n // eslint-disable-next-line vue/component-definition-name-casing\n app.component('resize-observer', script);\n app.component('ResizeObserver', script);\n}\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"2.0.0-alpha.1\",\n install: install\n};\n\nexport default plugin;\nexport { script as ResizeObserver, install };\n//# sourceMappingURL=vue-resize.esm.js.map\n","import { nextTick } from 'vue';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction processOptions(value) {\n var options;\n\n if (typeof value === 'function') {\n // Simple options (callback-only)\n options = {\n callback: value\n };\n } else {\n // Options object\n options = value;\n }\n\n return options;\n}\nfunction throttle(callback, delay) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var timeout;\n var lastState;\n var currentArgs;\n\n var throttled = function throttled(state) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n currentArgs = args;\n if (timeout && state === lastState) return;\n var leading = options.leading;\n\n if (typeof leading === 'function') {\n leading = leading(state, lastState);\n }\n\n if ((!timeout || state !== lastState) && leading) {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n }\n\n lastState = state;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n timeout = 0;\n }, delay);\n };\n\n throttled._clear = function () {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return throttled;\n}\nfunction deepEqual(val1, val2) {\n if (val1 === val2) return true;\n\n if (_typeof(val1) === 'object') {\n for (var key in val1) {\n if (!deepEqual(val1[key], val2[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\nvar VisibilityState = /*#__PURE__*/function () {\n function VisibilityState(el, options, vnode) {\n _classCallCheck(this, VisibilityState);\n\n this.el = el;\n this.observer = null;\n this.frozen = false;\n this.createObserver(options, vnode);\n }\n\n _createClass(VisibilityState, [{\n key: \"createObserver\",\n value: function createObserver(options, vnode) {\n var _this = this;\n\n if (this.observer) {\n this.destroyObserver();\n }\n\n if (this.frozen) return;\n this.options = processOptions(options);\n\n this.callback = function (result, entry) {\n _this.options.callback(result, entry);\n\n if (result && _this.options.once) {\n _this.frozen = true;\n\n _this.destroyObserver();\n }\n }; // Throttle\n\n\n if (this.callback && this.options.throttle) {\n var _ref = this.options.throttleOptions || {},\n _leading = _ref.leading;\n\n this.callback = throttle(this.callback, this.options.throttle, {\n leading: function leading(state) {\n return _leading === 'both' || _leading === 'visible' && state || _leading === 'hidden' && !state;\n }\n });\n }\n\n this.oldResult = undefined;\n this.observer = new IntersectionObserver(function (entries) {\n var entry = entries[0];\n\n if (entries.length > 1) {\n var intersectingEntry = entries.find(function (e) {\n return e.isIntersecting;\n });\n\n if (intersectingEntry) {\n entry = intersectingEntry;\n }\n }\n\n if (_this.callback) {\n // Use isIntersecting if possible because browsers can report isIntersecting as true, but intersectionRatio as 0, when something very slowly enters the viewport.\n var result = entry.isIntersecting && entry.intersectionRatio >= _this.threshold;\n if (result === _this.oldResult) return;\n _this.oldResult = result;\n\n _this.callback(result, entry);\n }\n }, this.options.intersection); // Wait for the element to be in document\n\n nextTick(function () {\n if (_this.observer) {\n _this.observer.observe(_this.el);\n }\n });\n }\n }, {\n key: \"destroyObserver\",\n value: function destroyObserver() {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n } // Cancel throttled call\n\n\n if (this.callback && this.callback._clear) {\n this.callback._clear();\n\n this.callback = null;\n }\n }\n }, {\n key: \"threshold\",\n get: function get() {\n return this.options.intersection && typeof this.options.intersection.threshold === 'number' ? this.options.intersection.threshold : 0;\n }\n }]);\n\n return VisibilityState;\n}();\n\nfunction beforeMount(el, _ref2, vnode) {\n var value = _ref2.value;\n if (!value) return;\n\n if (typeof IntersectionObserver === 'undefined') {\n console.warn('[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill');\n } else {\n var state = new VisibilityState(el, value, vnode);\n el._vue_visibilityState = state;\n }\n}\n\nfunction updated(el, _ref3, vnode) {\n var value = _ref3.value,\n oldValue = _ref3.oldValue;\n if (deepEqual(value, oldValue)) return;\n var state = el._vue_visibilityState;\n\n if (!value) {\n unmounted(el);\n return;\n }\n\n if (state) {\n state.createObserver(value, vnode);\n } else {\n beforeMount(el, {\n value: value\n }, vnode);\n }\n}\n\nfunction unmounted(el) {\n var state = el._vue_visibilityState;\n\n if (state) {\n state.destroyObserver();\n delete el._vue_visibilityState;\n }\n}\n\nvar ObserveVisibility = {\n beforeMount: beforeMount,\n updated: updated,\n unmounted: unmounted\n};\n\nfunction install(app) {\n app.directive('observe-visibility', ObserveVisibility);\n /* -- Add more components here -- */\n}\n/* -- Plugin definition & Auto-install -- */\n\n/* You shouldn't have to modify the code below */\n// Plugin\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"2.0.0-alpha.1\",\n install: install\n};\n\nexport default plugin;\nexport { ObserveVisibility, install };\n","import { markRaw, shallowReactive, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, normalizeClass, renderSlot, createCommentVNode, createBlock, resolveDynamicComponent, normalizeStyle, withCtx, Fragment, renderList, mergeProps, toHandlers, createVNode, normalizeProps, guardReactiveProps, h, reactive } from 'vue';\nimport { ResizeObserver as ResizeObserver$1 } from 'vue-resize';\nimport { ObserveVisibility } from 'vue-observe-visibility';\nimport mitt from 'mitt';\n\nvar config = {\n itemsLimit: 1000\n};\n\n// Fork of https://github.com/olahol/scrollparent.js to be able to build with Rollup\n\nvar regex = /(auto|scroll)/;\nfunction parents(node, ps) {\n if (node.parentNode === null) {\n return ps;\n }\n return parents(node.parentNode, ps.concat([node]));\n}\nvar style = function style(node, prop) {\n return getComputedStyle(node, null).getPropertyValue(prop);\n};\nvar overflow = function overflow(node) {\n return style(node, 'overflow') + style(node, 'overflow-y') + style(node, 'overflow-x');\n};\nvar scroll = function scroll(node) {\n return regex.test(overflow(node));\n};\nfunction getScrollParent(node) {\n if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n return;\n }\n var ps = parents(node.parentNode, []);\n for (var i = 0; i < ps.length; i += 1) {\n if (scroll(ps[i])) {\n return ps[i];\n }\n }\n return document.scrollingElement || document.documentElement;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nvar props = {\n items: {\n type: Array,\n required: true\n },\n keyField: {\n type: String,\n default: 'id'\n },\n direction: {\n type: String,\n default: 'vertical',\n validator: function validator(value) {\n return ['vertical', 'horizontal'].includes(value);\n }\n },\n listTag: {\n type: String,\n default: 'div'\n },\n itemTag: {\n type: String,\n default: 'div'\n }\n};\nfunction simpleArray() {\n return this.items.length && _typeof(this.items[0]) !== 'object';\n}\n\nvar supportsPassive = false;\nif (typeof window !== 'undefined') {\n supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n}\n\nlet uid = 0;\n\nvar script$2 = {\n name: 'RecycleScroller',\n\n components: {\n ResizeObserver: ResizeObserver$1,\n },\n\n directives: {\n ObserveVisibility,\n },\n\n props: {\n ...props,\n\n itemSize: {\n type: Number,\n default: null,\n },\n\n gridItems: {\n type: Number,\n default: undefined,\n },\n\n itemSecondarySize: {\n type: Number,\n default: undefined,\n },\n\n minItemSize: {\n type: [Number, String],\n default: null,\n },\n\n sizeField: {\n type: String,\n default: 'size',\n },\n\n typeField: {\n type: String,\n default: 'type',\n },\n\n buffer: {\n type: Number,\n default: 200,\n },\n\n pageMode: {\n type: Boolean,\n default: false,\n },\n\n prerender: {\n type: Number,\n default: 0,\n },\n\n emitUpdate: {\n type: Boolean,\n default: false,\n },\n\n updateInterval: {\n type: Number,\n default: 0,\n },\n\n skipHover: {\n type: Boolean,\n default: false,\n },\n\n listTag: {\n type: String,\n default: 'div',\n },\n\n itemTag: {\n type: String,\n default: 'div',\n },\n\n listClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n itemClass: {\n type: [String, Object, Array],\n default: '',\n },\n },\n\n emits: [\n 'resize',\n 'visible',\n 'hidden',\n 'update',\n 'scroll-start',\n 'scroll-end',\n ],\n\n data () {\n return {\n pool: [],\n totalSize: 0,\n ready: false,\n hoverKey: null,\n }\n },\n\n computed: {\n sizes () {\n if (this.itemSize === null) {\n const sizes = {\n '-1': { accumulator: 0 },\n };\n const items = this.items;\n const field = this.sizeField;\n const minItemSize = this.minItemSize;\n let computedMinSize = 10000;\n let accumulator = 0;\n let current;\n for (let i = 0, l = items.length; i < l; i++) {\n current = items[i][field] || minItemSize;\n if (current < computedMinSize) {\n computedMinSize = current;\n }\n accumulator += current;\n sizes[i] = { accumulator, size: current };\n }\n // eslint-disable-next-line\n this.$_computedMinItemSize = computedMinSize;\n return sizes\n }\n return []\n },\n\n simpleArray,\n\n itemIndexByKey () {\n const { keyField, items } = this;\n const result = {};\n for (let i = 0, l = items.length; i < l; i++) {\n result[items[i][keyField]] = i;\n }\n return result\n },\n },\n\n watch: {\n items () {\n this.updateVisibleItems(true);\n },\n\n pageMode () {\n this.applyPageMode();\n this.updateVisibleItems(false);\n },\n\n sizes: {\n handler () {\n this.updateVisibleItems(false);\n },\n deep: true,\n },\n\n gridItems () {\n this.updateVisibleItems(true);\n },\n\n itemSecondarySize () {\n this.updateVisibleItems(true);\n },\n },\n\n created () {\n this.$_startIndex = 0;\n this.$_endIndex = 0;\n this.$_views = new Map();\n this.$_unusedViews = new Map();\n this.$_scrollDirty = false;\n this.$_lastUpdateScrollPosition = 0;\n\n // In SSR mode, we also prerender the same number of item for the first render\n // to avoir mismatch between server and client templates\n if (this.prerender) {\n this.$_prerender = true;\n this.updateVisibleItems(false);\n }\n\n if (this.gridItems && !this.itemSize) {\n console.error('[vue-recycle-scroller] You must provide an itemSize when using gridItems');\n }\n },\n\n mounted () {\n this.applyPageMode();\n this.$nextTick(() => {\n // In SSR mode, render the real number of visible items\n this.$_prerender = false;\n this.updateVisibleItems(true);\n this.ready = true;\n });\n },\n\n activated () {\n const lastPosition = this.$_lastUpdateScrollPosition;\n if (typeof lastPosition === 'number') {\n this.$nextTick(() => {\n this.scrollToPosition(lastPosition);\n });\n }\n },\n\n beforeUnmount () {\n this.removeListeners();\n },\n\n methods: {\n addView (pool, index, item, key, type) {\n const nr = markRaw({\n id: uid++,\n index,\n used: true,\n key,\n type,\n });\n const view = shallowReactive({\n item,\n position: 0,\n nr,\n });\n pool.push(view);\n return view\n },\n\n unuseView (view, fake = false) {\n const unusedViews = this.$_unusedViews;\n const type = view.nr.type;\n let unusedPool = unusedViews.get(type);\n if (!unusedPool) {\n unusedPool = [];\n unusedViews.set(type, unusedPool);\n }\n unusedPool.push(view);\n if (!fake) {\n view.nr.used = false;\n view.position = -9999;\n }\n },\n\n handleResize () {\n this.$emit('resize');\n if (this.ready) this.updateVisibleItems(false);\n },\n\n handleScroll (event) {\n if (!this.$_scrollDirty) {\n this.$_scrollDirty = true;\n if (this.$_updateTimeout) return\n\n const requestUpdate = () => requestAnimationFrame(() => {\n this.$_scrollDirty = false;\n const { continuous } = this.updateVisibleItems(false, true);\n\n // It seems sometimes chrome doesn't fire scroll event :/\n // When non continous scrolling is ending, we force a refresh\n if (!continuous) {\n clearTimeout(this.$_refreshTimout);\n this.$_refreshTimout = setTimeout(this.handleScroll, this.updateInterval + 100);\n }\n });\n\n requestUpdate();\n\n // Schedule the next update with throttling\n if (this.updateInterval) {\n this.$_updateTimeout = setTimeout(() => {\n this.$_updateTimeout = 0;\n if (this.$_scrollDirty) requestUpdate();\n }, this.updateInterval);\n }\n }\n },\n\n handleVisibilityChange (isVisible, entry) {\n if (this.ready) {\n if (isVisible || entry.boundingClientRect.width !== 0 || entry.boundingClientRect.height !== 0) {\n this.$emit('visible');\n requestAnimationFrame(() => {\n this.updateVisibleItems(false);\n });\n } else {\n this.$emit('hidden');\n }\n }\n },\n\n updateVisibleItems (checkItem, checkPositionDiff = false) {\n const itemSize = this.itemSize;\n const gridItems = this.gridItems || 1;\n const itemSecondarySize = this.itemSecondarySize || itemSize;\n const minItemSize = this.$_computedMinItemSize;\n const typeField = this.typeField;\n const keyField = this.simpleArray ? null : this.keyField;\n const items = this.items;\n const count = items.length;\n const sizes = this.sizes;\n const views = this.$_views;\n const unusedViews = this.$_unusedViews;\n const pool = this.pool;\n const itemIndexByKey = this.itemIndexByKey;\n let startIndex, endIndex;\n let totalSize;\n let visibleStartIndex, visibleEndIndex;\n\n if (!count) {\n startIndex = endIndex = visibleStartIndex = visibleEndIndex = totalSize = 0;\n } else if (this.$_prerender) {\n startIndex = visibleStartIndex = 0;\n endIndex = visibleEndIndex = Math.min(this.prerender, items.length);\n totalSize = null;\n } else {\n const scroll = this.getScroll();\n\n // Skip update if use hasn't scrolled enough\n if (checkPositionDiff) {\n let positionDiff = scroll.start - this.$_lastUpdateScrollPosition;\n if (positionDiff < 0) positionDiff = -positionDiff;\n if ((itemSize === null && positionDiff < minItemSize) || positionDiff < itemSize) {\n return {\n continuous: true,\n }\n }\n }\n this.$_lastUpdateScrollPosition = scroll.start;\n\n const buffer = this.buffer;\n scroll.start -= buffer;\n scroll.end += buffer;\n\n // account for leading slot\n let beforeSize = 0;\n if (this.$refs.before) {\n beforeSize = this.$refs.before.scrollHeight;\n scroll.start -= beforeSize;\n }\n\n // account for trailing slot\n if (this.$refs.after) {\n const afterSize = this.$refs.after.scrollHeight;\n scroll.end += afterSize;\n }\n\n // Variable size mode\n if (itemSize === null) {\n let h;\n let a = 0;\n let b = count - 1;\n let i = ~~(count / 2);\n let oldI;\n\n // Searching for startIndex\n do {\n oldI = i;\n h = sizes[i].accumulator;\n if (h < scroll.start) {\n a = i;\n } else if (i < count - 1 && sizes[i + 1].accumulator > scroll.start) {\n b = i;\n }\n i = ~~((a + b) / 2);\n } while (i !== oldI)\n i < 0 && (i = 0);\n startIndex = i;\n\n // For container style\n totalSize = sizes[count - 1].accumulator;\n\n // Searching for endIndex\n for (endIndex = i; endIndex < count && sizes[endIndex].accumulator < scroll.end; endIndex++);\n if (endIndex === -1) {\n endIndex = items.length - 1;\n } else {\n endIndex++;\n // Bounds\n endIndex > count && (endIndex = count);\n }\n\n // search visible startIndex\n for (visibleStartIndex = startIndex; visibleStartIndex < count && (beforeSize + sizes[visibleStartIndex].accumulator) < scroll.start; visibleStartIndex++);\n\n // search visible endIndex\n for (visibleEndIndex = visibleStartIndex; visibleEndIndex < count && (beforeSize + sizes[visibleEndIndex].accumulator) < scroll.end; visibleEndIndex++);\n } else {\n // Fixed size mode\n startIndex = ~~(scroll.start / itemSize * gridItems);\n const remainer = startIndex % gridItems;\n startIndex -= remainer;\n endIndex = Math.ceil(scroll.end / itemSize * gridItems);\n visibleStartIndex = Math.max(0, Math.floor((scroll.start - beforeSize) / itemSize * gridItems));\n visibleEndIndex = Math.floor((scroll.end - beforeSize) / itemSize * gridItems);\n\n // Bounds\n startIndex < 0 && (startIndex = 0);\n endIndex > count && (endIndex = count);\n visibleStartIndex < 0 && (visibleStartIndex = 0);\n visibleEndIndex > count && (visibleEndIndex = count);\n\n totalSize = Math.ceil(count / gridItems) * itemSize;\n }\n }\n\n if (endIndex - startIndex > config.itemsLimit) {\n this.itemsLimitError();\n }\n\n this.totalSize = totalSize;\n\n let view;\n\n const continuous = startIndex <= this.$_endIndex && endIndex >= this.$_startIndex;\n\n // Unuse views that are no longer visible\n if (continuous) {\n for (let i = 0, l = pool.length; i < l; i++) {\n view = pool[i];\n if (view.nr.used) {\n // Update view item index\n if (checkItem) {\n view.nr.index = itemIndexByKey[view.item[keyField]];\n }\n\n // Check if index is still in visible range\n if (\n view.nr.index == null ||\n view.nr.index < startIndex ||\n view.nr.index >= endIndex\n ) {\n this.unuseView(view);\n }\n }\n }\n }\n\n const unusedIndex = continuous ? null : new Map();\n\n let item, type;\n let v;\n for (let i = startIndex; i < endIndex; i++) {\n item = items[i];\n const key = keyField ? item[keyField] : item;\n if (key == null) {\n throw new Error(`Key is ${key} on item (keyField is '${keyField}')`)\n }\n view = views.get(key);\n\n if (!itemSize && !sizes[i].size) {\n if (view) this.unuseView(view);\n continue\n }\n\n type = item[typeField];\n\n let unusedPool = unusedViews.get(type);\n let newlyUsedView = false;\n\n // No view assigned to item\n if (!view) {\n if (continuous) {\n // Reuse existing view\n if (unusedPool && unusedPool.length) {\n view = unusedPool.pop();\n } else {\n view = this.addView(pool, i, item, key, type);\n }\n } else {\n // Use existing view\n // We don't care if they are already used\n // because we are not in continous scrolling\n v = unusedIndex.get(type) || 0;\n\n if (!unusedPool || v >= unusedPool.length) {\n view = this.addView(pool, i, item, key, type);\n this.unuseView(view, true);\n unusedPool = unusedViews.get(type);\n }\n\n view = unusedPool[v];\n unusedIndex.set(type, v + 1);\n }\n\n // Assign view to item\n views.delete(view.nr.key);\n view.nr.used = true;\n view.nr.index = i;\n view.nr.key = key;\n view.nr.type = type;\n views.set(key, view);\n\n newlyUsedView = true;\n } else {\n // View already assigned to item\n if (!view.nr.used) {\n view.nr.used = true;\n newlyUsedView = true;\n if (unusedPool) {\n const index = unusedPool.indexOf(view);\n if (index !== -1) unusedPool.splice(index, 1);\n }\n }\n }\n\n // Always set item in case it's a new object with the same key\n view.item = item;\n\n if (newlyUsedView) {\n if (i === items.length - 1) this.$emit('scroll-end');\n if (i === 0) this.$emit('scroll-start');\n }\n\n // Update position\n if (itemSize === null) {\n view.position = sizes[i - 1].accumulator;\n view.offset = 0;\n } else {\n view.position = Math.floor(i / gridItems) * itemSize;\n view.offset = (i % gridItems) * itemSecondarySize;\n }\n }\n\n this.$_startIndex = startIndex;\n this.$_endIndex = endIndex;\n\n if (this.emitUpdate) this.$emit('update', startIndex, endIndex, visibleStartIndex, visibleEndIndex);\n\n // After the user has finished scrolling\n // Sort views so text selection is correct\n clearTimeout(this.$_sortTimer);\n this.$_sortTimer = setTimeout(this.sortViews, this.updateInterval + 300);\n\n return {\n continuous,\n }\n },\n\n getListenerTarget () {\n let target = getScrollParent(this.$el);\n // Fix global scroll target for Chrome and Safari\n if (window.document && (target === window.document.documentElement || target === window.document.body)) {\n target = window;\n }\n return target\n },\n\n getScroll () {\n const { $el: el, direction } = this;\n const isVertical = direction === 'vertical';\n let scrollState;\n\n if (this.pageMode) {\n const bounds = el.getBoundingClientRect();\n const boundsSize = isVertical ? bounds.height : bounds.width;\n let start = -(isVertical ? bounds.top : bounds.left);\n let size = isVertical ? window.innerHeight : window.innerWidth;\n if (start < 0) {\n size += start;\n start = 0;\n }\n if (start + size > boundsSize) {\n size = boundsSize - start;\n }\n scrollState = {\n start,\n end: start + size,\n };\n } else if (isVertical) {\n scrollState = {\n start: el.scrollTop,\n end: el.scrollTop + el.clientHeight,\n };\n } else {\n scrollState = {\n start: el.scrollLeft,\n end: el.scrollLeft + el.clientWidth,\n };\n }\n\n return scrollState\n },\n\n applyPageMode () {\n if (this.pageMode) {\n this.addListeners();\n } else {\n this.removeListeners();\n }\n },\n\n addListeners () {\n this.listenerTarget = this.getListenerTarget();\n this.listenerTarget.addEventListener('scroll', this.handleScroll, supportsPassive\n ? {\n passive: true,\n }\n : false);\n this.listenerTarget.addEventListener('resize', this.handleResize);\n },\n\n removeListeners () {\n if (!this.listenerTarget) {\n return\n }\n\n this.listenerTarget.removeEventListener('scroll', this.handleScroll);\n this.listenerTarget.removeEventListener('resize', this.handleResize);\n\n this.listenerTarget = null;\n },\n\n scrollToItem (index) {\n let scroll;\n const gridItems = this.gridItems || 1;\n if (this.itemSize === null) {\n scroll = index > 0 ? this.sizes[index - 1].accumulator : 0;\n } else {\n scroll = Math.floor(index / gridItems) * this.itemSize;\n }\n this.scrollToPosition(scroll);\n },\n\n scrollToPosition (position) {\n const direction = this.direction === 'vertical'\n ? { scroll: 'scrollTop', start: 'top' }\n : { scroll: 'scrollLeft', start: 'left' };\n\n let viewport;\n let scrollDirection;\n let scrollDistance;\n\n if (this.pageMode) {\n const viewportEl = getScrollParent(this.$el);\n // HTML doesn't overflow like other elements\n const scrollTop = viewportEl.tagName === 'HTML' ? 0 : viewportEl[direction.scroll];\n const bounds = viewportEl.getBoundingClientRect();\n\n const scroller = this.$el.getBoundingClientRect();\n const scrollerPosition = scroller[direction.start] - bounds[direction.start];\n\n viewport = viewportEl;\n scrollDirection = direction.scroll;\n scrollDistance = position + scrollTop + scrollerPosition;\n } else {\n viewport = this.$el;\n scrollDirection = direction.scroll;\n scrollDistance = position;\n }\n\n viewport[scrollDirection] = scrollDistance;\n },\n\n itemsLimitError () {\n setTimeout(() => {\n console.log('It seems the scroller element isn\\'t scrolling, so it tries to render all the items at once.', 'Scroller:', this.$el);\n console.log('Make sure the scroller has a fixed height (or width) and \\'overflow-y\\' (or \\'overflow-x\\') set to \\'auto\\' so it can scroll correctly and only render the items visible in the scroll viewport.');\n });\n throw new Error('Rendered items limit reached')\n },\n\n sortViews () {\n this.pool.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index);\n },\n },\n};\n\nconst _hoisted_1 = {\n key: 0,\n ref: \"before\",\n class: \"vue-recycle-scroller__slot\"\n};\nconst _hoisted_2 = {\n key: 1,\n ref: \"after\",\n class: \"vue-recycle-scroller__slot\"\n};\n\nfunction render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ResizeObserver = resolveComponent(\"ResizeObserver\");\n const _directive_observe_visibility = resolveDirective(\"observe-visibility\");\n\n return withDirectives((openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vue-recycle-scroller\", {\n ready: $data.ready,\n 'page-mode': $props.pageMode,\n [`direction-${_ctx.direction}`]: true,\n }]),\n onScrollPassive: _cache[0] || (_cache[0] = (...args) => ($options.handleScroll && $options.handleScroll(...args)))\n }, [\n (_ctx.$slots.before)\n ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n renderSlot(_ctx.$slots, \"before\")\n ], 512 /* NEED_PATCH */))\n : createCommentVNode(\"v-if\", true),\n (openBlock(), createBlock(resolveDynamicComponent($props.listTag), {\n ref: \"wrapper\",\n style: normalizeStyle({ [_ctx.direction === 'vertical' ? 'minHeight' : 'minWidth']: $data.totalSize + 'px' }),\n class: normalizeClass([\"vue-recycle-scroller__item-wrapper\", $props.listClass])\n }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.pool, (view) => {\n return (openBlock(), createBlock(resolveDynamicComponent($props.itemTag), mergeProps({\n key: view.nr.id,\n style: $data.ready ? {\n transform: `translate${_ctx.direction === 'vertical' ? 'Y' : 'X'}(${view.position}px) translate${_ctx.direction === 'vertical' ? 'X' : 'Y'}(${view.offset}px)`,\n width: $props.gridItems ? `${_ctx.direction === 'vertical' ? $props.itemSecondarySize || $props.itemSize : $props.itemSize}px` : undefined,\n height: $props.gridItems ? `${_ctx.direction === 'horizontal' ? $props.itemSecondarySize || $props.itemSize : $props.itemSize}px` : undefined,\n } : null,\n class: [\"vue-recycle-scroller__item-view\", [\n $props.itemClass,\n {\n hover: !$props.skipHover && $data.hoverKey === view.nr.key\n },\n ]]\n }, toHandlers($props.skipHover ? {} : {\n mouseenter: () => { $data.hoverKey = view.nr.key; },\n mouseleave: () => { $data.hoverKey = null; },\n })), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {\n item: view.item,\n index: view.nr.index,\n active: view.nr.used\n })\n ]),\n _: 2 /* DYNAMIC */\n }, 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, [\"style\", \"class\"]))\n }), 128 /* KEYED_FRAGMENT */)),\n renderSlot(_ctx.$slots, \"empty\")\n ]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"style\", \"class\"])),\n (_ctx.$slots.after)\n ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"after\")\n ], 512 /* NEED_PATCH */))\n : createCommentVNode(\"v-if\", true),\n createVNode(_component_ResizeObserver, { onNotify: $options.handleResize }, null, 8 /* PROPS */, [\"onNotify\"])\n ], 34 /* CLASS, HYDRATE_EVENTS */)), [\n [_directive_observe_visibility, $options.handleVisibilityChange]\n ])\n}\n\nscript$2.render = render$1;\nscript$2.__file = \"src/components/RecycleScroller.vue\";\n\nvar script$1 = {\n name: 'DynamicScroller',\n\n components: {\n RecycleScroller: script$2,\n },\n\n provide () {\n if (typeof ResizeObserver !== 'undefined') {\n this.$_resizeObserver = new ResizeObserver(entries => {\n requestAnimationFrame(() => {\n if (!Array.isArray(entries)) {\n return\n }\n for (const entry of entries) {\n if (entry.target && entry.target.$_vs_onResize) {\n const resizeObserverSize = entry.borderBoxSize[0];\n entry.target.$_vs_onResize(entry.target.$_vs_id, resizeObserverSize.inlineSize, resizeObserverSize.blockSize);\n }\n }\n });\n });\n }\n\n return {\n vscrollData: this.vscrollData,\n vscrollParent: this,\n vscrollResizeObserver: this.$_resizeObserver,\n }\n },\n\n inheritAttrs: false,\n\n props: {\n ...props,\n\n minItemSize: {\n type: [Number, String],\n required: true,\n },\n },\n\n emits: [\n 'resize',\n 'visible',\n ],\n\n data () {\n return {\n vscrollData: {\n active: true,\n sizes: {},\n keyField: this.keyField,\n simpleArray: false,\n },\n }\n },\n\n computed: {\n simpleArray,\n\n itemsWithSize () {\n const result = [];\n const { items, keyField, simpleArray } = this;\n const sizes = this.vscrollData.sizes;\n const l = items.length;\n for (let i = 0; i < l; i++) {\n const item = items[i];\n const id = simpleArray ? i : item[keyField];\n let size = sizes[id];\n if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {\n size = 0;\n }\n result.push({\n item,\n id,\n size,\n });\n }\n return result\n },\n },\n\n watch: {\n items () {\n this.forceUpdate();\n },\n\n simpleArray: {\n handler (value) {\n this.vscrollData.simpleArray = value;\n },\n immediate: true,\n },\n\n direction (value) {\n this.forceUpdate(true);\n },\n\n itemsWithSize (next, prev) {\n const scrollTop = this.$el.scrollTop;\n\n // Calculate total diff between prev and next sizes\n // over current scroll top. Then add it to scrollTop to\n // avoid jumping the contents that the user is seeing.\n let prevActiveTop = 0; let activeTop = 0;\n const length = Math.min(next.length, prev.length);\n for (let i = 0; i < length; i++) {\n if (prevActiveTop >= scrollTop) {\n break\n }\n prevActiveTop += prev[i].size || this.minItemSize;\n activeTop += next[i].size || this.minItemSize;\n }\n const offset = activeTop - prevActiveTop;\n\n if (offset === 0) {\n return\n }\n\n this.$el.scrollTop += offset;\n },\n },\n\n beforeCreate () {\n this.$_updates = [];\n this.$_undefinedSizes = 0;\n this.$_undefinedMap = {};\n this.$_events = mitt();\n },\n\n activated () {\n this.vscrollData.active = true;\n },\n\n deactivated () {\n this.vscrollData.active = false;\n },\n\n unmounted () {\n this.$_events.all.clear();\n },\n\n methods: {\n onScrollerResize () {\n const scroller = this.$refs.scroller;\n if (scroller) {\n this.forceUpdate();\n }\n this.$emit('resize');\n },\n\n onScrollerVisible () {\n this.$_events.emit('vscroll:update', { force: false });\n this.$emit('visible');\n },\n\n forceUpdate (clear = false) {\n if (clear || this.simpleArray) {\n this.vscrollData.sizes = {};\n }\n this.$_events.emit('vscroll:update', { force: true });\n },\n\n scrollToItem (index) {\n const scroller = this.$refs.scroller;\n if (scroller) scroller.scrollToItem(index);\n },\n\n getItemSize (item, index = undefined) {\n const id = this.simpleArray ? (index != null ? index : this.items.indexOf(item)) : item[this.keyField];\n return this.vscrollData.sizes[id] || 0\n },\n\n scrollToBottom () {\n if (this.$_scrollingToBottom) return\n this.$_scrollingToBottom = true;\n const el = this.$el;\n // Item is inserted to the DOM\n this.$nextTick(() => {\n el.scrollTop = el.scrollHeight + 5000;\n // Item sizes are computed\n const cb = () => {\n el.scrollTop = el.scrollHeight + 5000;\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight + 5000;\n if (this.$_undefinedSizes === 0) {\n this.$_scrollingToBottom = false;\n } else {\n requestAnimationFrame(cb);\n }\n });\n };\n requestAnimationFrame(cb);\n });\n },\n },\n};\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_RecycleScroller = resolveComponent(\"RecycleScroller\");\n\n return (openBlock(), createBlock(_component_RecycleScroller, mergeProps({\n ref: \"scroller\",\n items: $options.itemsWithSize,\n \"min-item-size\": $props.minItemSize,\n direction: _ctx.direction,\n \"key-field\": \"id\",\n \"list-tag\": _ctx.listTag,\n \"item-tag\": _ctx.itemTag\n }, _ctx.$attrs, {\n onResize: $options.onScrollerResize,\n onVisible: $options.onScrollerVisible\n }), {\n default: withCtx(({ item: itemWithSize, index, active }) => [\n renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps({\n item: itemWithSize.item,\n index,\n active,\n itemWithSize\n })))\n ]),\n before: withCtx(() => [\n renderSlot(_ctx.$slots, \"before\")\n ]),\n after: withCtx(() => [\n renderSlot(_ctx.$slots, \"after\")\n ]),\n empty: withCtx(() => [\n renderSlot(_ctx.$slots, \"empty\")\n ]),\n _: 3 /* FORWARDED */\n }, 16 /* FULL_PROPS */, [\"items\", \"min-item-size\", \"direction\", \"list-tag\", \"item-tag\", \"onResize\", \"onVisible\"]))\n}\n\nscript$1.render = render;\nscript$1.__file = \"src/components/DynamicScroller.vue\";\n\nvar script = {\n name: 'DynamicScrollerItem',\n\n inject: [\n 'vscrollData',\n 'vscrollParent',\n 'vscrollResizeObserver',\n ],\n\n props: {\n // eslint-disable-next-line vue/require-prop-types\n item: {\n required: true,\n },\n\n watchData: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Indicates if the view is actively used to display an item.\n */\n active: {\n type: Boolean,\n required: true,\n },\n\n index: {\n type: Number,\n default: undefined,\n },\n\n sizeDependencies: {\n type: [Array, Object],\n default: null,\n },\n\n emitResize: {\n type: Boolean,\n default: false,\n },\n\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n emits: [\n 'resize',\n ],\n\n computed: {\n id () {\n if (this.vscrollData.simpleArray) return this.index\n // eslint-disable-next-line no-prototype-builtins\n if (this.vscrollData.keyField in this.item) return this.item[this.vscrollData.keyField]\n throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`)\n },\n\n size () {\n return this.vscrollData.sizes[this.id] || 0\n },\n\n finalActive () {\n return this.active && this.vscrollData.active\n },\n },\n\n watch: {\n watchData: 'updateWatchData',\n\n id (value, oldValue) {\n this.$el.$_vs_id = this.id;\n if (!this.size) {\n this.onDataUpdate();\n }\n\n if (this.$_sizeObserved) {\n // In case the old item had the same size, it won't trigger the ResizeObserver\n // since we are reusing the same DOM node\n const oldSize = this.vscrollData.sizes[oldValue];\n const size = this.vscrollData.sizes[value];\n if (oldSize != null && oldSize !== size) {\n this.applySize(oldSize);\n }\n }\n },\n\n finalActive (value) {\n if (!this.size) {\n if (value) {\n if (!this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes++;\n this.vscrollParent.$_undefinedMap[this.id] = true;\n }\n } else {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = false;\n }\n }\n }\n\n if (this.vscrollResizeObserver) {\n if (value) {\n this.observeSize();\n } else {\n this.unobserveSize();\n }\n } else if (value && this.$_pendingVScrollUpdate === this.id) {\n this.updateSize();\n }\n },\n },\n\n created () {\n if (this.$isServer) return\n\n this.$_forceNextVScrollUpdate = null;\n this.updateWatchData();\n\n if (!this.vscrollResizeObserver) {\n for (const k in this.sizeDependencies) {\n this.$watch(() => this.sizeDependencies[k], this.onDataUpdate);\n }\n\n this.vscrollParent.$_events.on('vscroll:update', this.onVscrollUpdate);\n }\n },\n\n mounted () {\n if (this.finalActive) {\n this.updateSize();\n this.observeSize();\n }\n },\n\n beforeUnmount () {\n this.vscrollParent.$_events.off('vscroll:update', this.onVscrollUpdate);\n this.unobserveSize();\n },\n\n methods: {\n updateSize () {\n if (this.finalActive) {\n if (this.$_pendingSizeUpdate !== this.id) {\n this.$_pendingSizeUpdate = this.id;\n this.$_forceNextVScrollUpdate = null;\n this.$_pendingVScrollUpdate = null;\n this.computeSize(this.id);\n }\n } else {\n this.$_forceNextVScrollUpdate = this.id;\n }\n },\n\n updateWatchData () {\n if (this.watchData && !this.vscrollResizeObserver) {\n this.$_watchData = this.$watch('item', () => {\n this.onDataUpdate();\n }, {\n deep: true,\n });\n } else if (this.$_watchData) {\n this.$_watchData();\n this.$_watchData = null;\n }\n },\n\n onVscrollUpdate ({ force }) {\n // If not active, sechedule a size update when it becomes active\n if (!this.finalActive && force) {\n this.$_pendingVScrollUpdate = this.id;\n }\n\n if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {\n this.updateSize();\n }\n },\n\n onDataUpdate () {\n this.updateSize();\n },\n\n computeSize (id) {\n this.$nextTick(() => {\n if (this.id === id) {\n const width = this.$el.offsetWidth;\n const height = this.$el.offsetHeight;\n this.applyWidthHeight(width, height);\n }\n this.$_pendingSizeUpdate = null;\n });\n },\n\n applyWidthHeight (width, height) {\n const size = ~~(this.vscrollParent.direction === 'vertical' ? height : width);\n if (size && this.size !== size) {\n this.applySize(size);\n }\n },\n\n applySize (size) {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = undefined;\n }\n this.vscrollData.sizes[this.id] = size;\n if (this.emitResize) this.$emit('resize', this.id);\n },\n\n observeSize () {\n if (!this.vscrollResizeObserver) return\n if (this.$_sizeObserved) return\n this.vscrollResizeObserver.observe(this.$el);\n this.$el.$_vs_id = this.id;\n this.$el.$_vs_onResize = this.onResize;\n this.$_sizeObserved = true;\n },\n\n unobserveSize () {\n if (!this.vscrollResizeObserver) return\n if (!this.$_sizeObserved) return\n this.vscrollResizeObserver.unobserve(this.$el);\n this.$el.$_vs_onResize = undefined;\n this.$_sizeObserved = false;\n },\n\n onResize (id, width, height) {\n if (this.id === id) {\n this.applyWidthHeight(width, height);\n }\n },\n },\n\n render () {\n return h(this.tag, this.$slots.default())\n },\n};\n\nscript.__file = \"src/components/DynamicScrollerItem.vue\";\n\nfunction IdState () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$idProp = _ref.idProp,\n idProp = _ref$idProp === void 0 ? function (vm) {\n return vm.item.id;\n } : _ref$idProp;\n var store = reactive({});\n\n // @vue/component\n return {\n data: function data() {\n return {\n idState: null\n };\n },\n created: function created() {\n var _this = this;\n this.$_id = null;\n if (typeof idProp === 'function') {\n this.$_getId = function () {\n return idProp.call(_this, _this);\n };\n } else {\n this.$_getId = function () {\n return _this[idProp];\n };\n }\n this.$watch(this.$_getId, {\n handler: function handler(value) {\n var _this2 = this;\n this.$nextTick(function () {\n _this2.$_id = value;\n });\n },\n immediate: true\n });\n this.$_updateIdState();\n },\n beforeUpdate: function beforeUpdate() {\n this.$_updateIdState();\n },\n methods: {\n /**\n * Initialize an idState\n * @param {number|string} id Unique id for the data\n */$_idStateInit: function $_idStateInit(id) {\n var factory = this.$options.idState;\n if (typeof factory === 'function') {\n var data = factory.call(this, this);\n store[id] = data;\n this.$_id = id;\n return data;\n } else {\n throw new Error('[mixin IdState] Missing `idState` function on component definition.');\n }\n },\n /**\n * Ensure idState is created and up-to-date\n */$_updateIdState: function $_updateIdState() {\n var id = this.$_getId();\n if (id == null) {\n console.warn(\"No id found for IdState with idProp: '\".concat(idProp, \"'.\"));\n }\n if (id !== this.$_id) {\n if (!store[id]) {\n this.$_idStateInit(id);\n }\n this.idState = store[id];\n }\n }\n }\n };\n}\n\nfunction registerComponents(app, prefix) {\n app.component(\"\".concat(prefix, \"recycle-scroller\"), script$2);\n app.component(\"\".concat(prefix, \"RecycleScroller\"), script$2);\n app.component(\"\".concat(prefix, \"dynamic-scroller\"), script$1);\n app.component(\"\".concat(prefix, \"DynamicScroller\"), script$1);\n app.component(\"\".concat(prefix, \"dynamic-scroller-item\"), script);\n app.component(\"\".concat(prefix, \"DynamicScrollerItem\"), script);\n}\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"2.0.0-beta.7\",\n install: function install(app, options) {\n var finalOptions = Object.assign({}, {\n installComponents: true,\n componentsPrefix: ''\n }, options);\n for (var key in finalOptions) {\n if (typeof finalOptions[key] !== 'undefined') {\n config[key] = finalOptions[key];\n }\n }\n if (finalOptions.installComponents) {\n registerComponents(app, finalOptions.componentsPrefix);\n }\n }\n};\n\nexport { script$1 as DynamicScroller, script as DynamicScrollerItem, IdState, script$2 as RecycleScroller, plugin as default };\n//# sourceMappingURL=vue-virtual-scroller.esm.js.map\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i&&i.push(e)||n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&i.splice(i.indexOf(e)>>>0,1)},emit:function(t,e){(n.get(t)||[]).slice().map(function(n){n(e)}),(n.get(\"*\")||[]).slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.es.js.map\n","export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-ignore\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = global.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","import { HOOK_PLUGIN_SETTINGS_SET } from './const';\nimport { now } from './time';\nexport class ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return now();\n },\n };\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise(resolve => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","/*!\n * vuex v4.1.0\n * (c) 2022 Evan You\n * @license MIT\n */\nimport { inject, effectScope, reactive, watch, computed } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nvar storeKey = 'store';\n\nfunction useStore (key) {\n if ( key === void 0 ) key = null;\n\n return inject(key !== null ? key : storeKey)\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array<Object>} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset state\n resetStoreState(store, state, hot);\n}\n\nfunction resetStoreState (store, state, hot) {\n var oldState = store._state;\n var oldScope = store._scope;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computedObj = {};\n var computedCache = {};\n\n // create a new effect scope and create computed object inside it to avoid\n // getters (computed) getting destroyed on component unmount.\n var scope = effectScope(true);\n\n scope.run(function () {\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldState.\n // using partial to return function with only arguments preserved in closure environment.\n computedObj[key] = partial(fn, store);\n computedCache[key] = computed(function () { return computedObj[key](); });\n Object.defineProperty(store.getters, key, {\n get: function () { return computedCache[key].value; },\n enumerable: true // for local getters\n });\n });\n });\n\n store._state = reactive({\n data: state\n });\n\n // register the newly created effect scope to the store so that we can\n // dispose the effects when this method runs again in the future.\n store._scope = scope;\n\n // enable strict mode for new state\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldState) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldState.data = null;\n });\n }\n }\n\n // dispose previously registered effect scope if there is one.\n if (oldScope) {\n oldScope.stop();\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n parentState[moduleName] = module.state;\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by state update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n watch(function () { return store._state.data; }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, flush: 'sync' });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nvar LABEL_VUEX_BINDINGS = 'vuex bindings';\nvar MUTATIONS_LAYER_ID = 'vuex:mutations';\nvar ACTIONS_LAYER_ID = 'vuex:actions';\nvar INSPECTOR_ID = 'vuex';\n\nvar actionId = 0;\n\nfunction addDevtools (app, store) {\n setupDevtoolsPlugin(\n {\n id: 'org.vuejs.vuex',\n app: app,\n label: 'Vuex',\n homepage: 'https://next.vuex.vuejs.org/',\n logo: 'https://vuejs.org/images/icons/favicon-96x96.png',\n packageName: 'vuex',\n componentStateTypes: [LABEL_VUEX_BINDINGS]\n },\n function (api) {\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: 'Vuex Mutations',\n color: COLOR_LIME_500\n });\n\n api.addTimelineLayer({\n id: ACTIONS_LAYER_ID,\n label: 'Vuex Actions',\n color: COLOR_LIME_500\n });\n\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Vuex',\n icon: 'storage',\n treeFilterPlaceholder: 'Filter stores...'\n });\n\n api.on.getInspectorTree(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n if (payload.filter) {\n var nodes = [];\n flattenStoreForInspectorTree(nodes, store._modules.root, payload.filter, '');\n payload.rootNodes = nodes;\n } else {\n payload.rootNodes = [\n formatStoreForInspectorTree(store._modules.root, '')\n ];\n }\n }\n });\n\n api.on.getInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n makeLocalGetters(store, modulePath);\n payload.state = formatStoreForInspectorState(\n getStoreModule(store._modules, modulePath),\n modulePath === 'root' ? store.getters : store._makeLocalGettersCache,\n modulePath\n );\n }\n });\n\n api.on.editInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n var path = payload.path;\n if (modulePath !== 'root') {\n path = modulePath.split('/').filter(Boolean).concat( path);\n }\n store._withCommit(function () {\n payload.set(store._state.data, path, payload.state.value);\n });\n }\n });\n\n store.subscribe(function (mutation, state) {\n var data = {};\n\n if (mutation.payload) {\n data.payload = mutation.payload;\n }\n\n data.state = state;\n\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: mutation.type,\n data: data\n }\n });\n });\n\n store.subscribeAction({\n before: function (action, state) {\n var data = {};\n if (action.payload) {\n data.payload = action.payload;\n }\n action._id = actionId++;\n action._time = Date.now();\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: action._time,\n title: action.type,\n groupId: action._id,\n subtitle: 'start',\n data: data\n }\n });\n },\n after: function (action, state) {\n var data = {};\n var duration = Date.now() - action._time;\n data.duration = {\n _custom: {\n type: 'duration',\n display: (duration + \"ms\"),\n tooltip: 'Action duration',\n value: duration\n }\n };\n if (action.payload) {\n data.payload = action.payload;\n }\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: action.type,\n groupId: action._id,\n subtitle: 'end',\n data: data\n }\n });\n }\n });\n }\n );\n}\n\n// extracted from tailwind palette\nvar COLOR_LIME_500 = 0x84cc16;\nvar COLOR_DARK = 0x666666;\nvar COLOR_WHITE = 0xffffff;\n\nvar TAG_NAMESPACED = {\n label: 'namespaced',\n textColor: COLOR_WHITE,\n backgroundColor: COLOR_DARK\n};\n\n/**\n * @param {string} path\n */\nfunction extractNameFromPath (path) {\n return path && path !== 'root' ? path.split('/').slice(-2, -1)[0] : 'Root'\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorNode}\n */\nfunction formatStoreForInspectorTree (module, path) {\n return {\n id: path || 'root',\n // all modules end with a `/`, we want the last segment only\n // cart/ -> cart\n // nested/cart/ -> cart\n label: extractNameFromPath(path),\n tags: module.namespaced ? [TAG_NAMESPACED] : [],\n children: Object.keys(module._children).map(function (moduleName) { return formatStoreForInspectorTree(\n module._children[moduleName],\n path + moduleName + '/'\n ); }\n )\n }\n}\n\n/**\n * @param {import('@vue/devtools-api').CustomInspectorNode[]} result\n * @param {*} module\n * @param {string} filter\n * @param {string} path\n */\nfunction flattenStoreForInspectorTree (result, module, filter, path) {\n if (path.includes(filter)) {\n result.push({\n id: path || 'root',\n label: path.endsWith('/') ? path.slice(0, path.length - 1) : path || 'Root',\n tags: module.namespaced ? [TAG_NAMESPACED] : []\n });\n }\n Object.keys(module._children).forEach(function (moduleName) {\n flattenStoreForInspectorTree(result, module._children[moduleName], filter, path + moduleName + '/');\n });\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorState}\n */\nfunction formatStoreForInspectorState (module, getters, path) {\n getters = path === 'root' ? getters : getters[path];\n var gettersKeys = Object.keys(getters);\n var storeState = {\n state: Object.keys(module.state).map(function (key) { return ({\n key: key,\n editable: true,\n value: module.state[key]\n }); })\n };\n\n if (gettersKeys.length) {\n var tree = transformPathsToObjectTree(getters);\n storeState.getters = Object.keys(tree).map(function (key) { return ({\n key: key.endsWith('/') ? extractNameFromPath(key) : key,\n editable: false,\n value: canThrow(function () { return tree[key]; })\n }); });\n }\n\n return storeState\n}\n\nfunction transformPathsToObjectTree (getters) {\n var result = {};\n Object.keys(getters).forEach(function (key) {\n var path = key.split('/');\n if (path.length > 1) {\n var target = result;\n var leafKey = path.pop();\n path.forEach(function (p) {\n if (!target[p]) {\n target[p] = {\n _custom: {\n value: {},\n display: p,\n tooltip: 'Module',\n abstract: true\n }\n };\n }\n target = target[p]._custom.value;\n });\n target[leafKey] = canThrow(function () { return getters[key]; });\n } else {\n result[key] = canThrow(function () { return getters[key]; });\n }\n });\n return result\n}\n\nfunction getStoreModule (moduleMap, path) {\n var names = path.split('/').filter(function (n) { return n; });\n return names.reduce(\n function (module, moduleName, i) {\n var child = module[moduleName];\n if (!child) {\n throw new Error((\"Missing module \\\"\" + moduleName + \"\\\" for path \\\"\" + path + \"\\\".\"))\n }\n return i === names.length - 1 ? child : child._children\n },\n path === 'root' ? moduleMap : moduleMap.root._children\n )\n}\n\nfunction canThrow (cb) {\n try {\n return cb()\n } catch (e) {\n return e\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors$1 = { namespaced: { configurable: true } };\n\nprototypeAccessors$1.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors$1 );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nfunction createStore (options) {\n return new Store(options)\n}\n\nvar Store = function Store (options) {\n var this$1$1 = this;\n if ( options === void 0 ) options = {};\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n var devtools = options.devtools;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._makeLocalGettersCache = Object.create(null);\n\n // EffectScope instance. when registering new getters, we wrap them inside\n // EffectScope so that getters (computed) would not be destroyed on\n // component unmount.\n this._scope = null;\n\n this._devtools = devtools;\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store state, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreState(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1$1); });\n};\n\nvar prototypeAccessors = { state: { configurable: true } };\n\nStore.prototype.install = function install (app, injectKey) {\n app.provide(injectKey || storeKey, this);\n app.config.globalProperties.$store = this;\n\n var useDevtools = this._devtools !== undefined\n ? this._devtools\n : (process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__;\n\n if (useDevtools) {\n addDevtools(app, this);\n }\n};\n\nprototypeAccessors.state.get = function () {\n return this._state.data\n};\n\nprototypeAccessors.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch$1 (getter, cb, options) {\n var this$1$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return watch(function () { return getter(this$1$1.state, this$1$1.getters); }, cb, Object.assign({}, options))\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1$1 = this;\n\n this._withCommit(function () {\n this$1$1._state.data = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreState(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1$1.state, path.slice(0, -1));\n delete parentState[path[path.length - 1]];\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors );\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n version: '4.1.0',\n Store: Store,\n storeKey: storeKey,\n createStore: createStore,\n useStore: useStore,\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, createStore, mapActions, mapGetters, mapMutations, mapState, storeKey, useStore };\n","import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env';\nimport { HOOK_SETUP } from './const';\nimport { ApiProxy } from './proxy';\nexport * from './api';\nexport * from './plugin';\nexport * from './time';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy)\n setupFn(proxy.proxiedTarget);\n }\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure \" + obj);\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","/*! (c) Andrea Giammarchi - ISC */\nvar self = {};\ntry {\n self.EventTarget = (new EventTarget).constructor;\n} catch(EventTarget) {\n (function (Object, wm) {\n var create = Object.create;\n var defineProperty = Object.defineProperty;\n var proto = EventTarget.prototype;\n define(proto, 'addEventListener', function (type, listener, options) {\n for (var\n secret = wm.get(this),\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener)\n return;\n }\n listeners.push({target: this, listener: listener, options: options});\n });\n define(proto, 'dispatchEvent', function (event) {\n var secret = wm.get(this);\n var listeners = secret[event.type];\n if (listeners) {\n define(event, 'target', this);\n define(event, 'currentTarget', this);\n listeners.slice(0).some(dispatch, event);\n delete event.currentTarget;\n delete event.target;\n }\n return true;\n });\n define(proto, 'removeEventListener', function (type, listener) {\n for (var\n secret = wm.get(this),\n /* istanbul ignore next */\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener) {\n listeners.splice(i, 1);\n return;\n }\n }\n });\n self.EventTarget = EventTarget;\n function EventTarget() {'use strict';\n wm.set(this, create(null));\n }\n function define(target, name, value) {\n defineProperty(\n target,\n name,\n {\n configurable: true,\n writable: true,\n value: value\n }\n );\n }\n function dispatch(info) {\n var options = info.options;\n if (options && options.once)\n info.target.removeEventListener(this.type, info.listener);\n if (typeof info.listener === 'function')\n info.listener.call(info.target, this);\n else\n info.listener.handleEvent(this);\n return this._stopImmediatePropagationFlag;\n }\n }(Object, new WeakMap));\n}\nexport default self.EventTarget;\n"],"names":["ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperties","props","descriptor","configurable","writable","value","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","call","next","done","err","_iterableToArrayLimit","_unsupportedIterableToArray","TypeError","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","_nonIterableSpread","o","minLen","n","toString","slice","name","test","len","arr2","noop","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","mark","measure","window","document","MutationObserver","performance","e","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","_ref$userAgent","navigator","userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","documentElement","head","addEventListener","createElement","IS_IE","indexOf","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","Proxy","get","prop","PREFIX_TO_STYLE","STYLE_TO_PREFIX","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","oneToTen","oneToTwenty","concat","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","prefixes","Set","map","add","bind","RESERVED_CLASSES","initial","FontAwesomeConfig","querySelector","_ref","_ref2","attr","val","coerce","element","getAttribute","getAttrConfig","_default","styleDefault","familyDefault","cssPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","familyPrefix","_config","config","set","_onChangeCb","cb","d","meaninglessTransform","size","x","y","rotate","flipX","flipY","nextUniqueId","id","Math","random","toArray","array","classArray","node","classList","split","htmlEscape","str","replace","joinStyles","styles","reduce","acc","styleName","trim","transformIsMeaningful","transform","css","dcp","drc","fp","rc","s","dPatt","RegExp","customPropPatt","rPatt","_cssInserted","ensureCss","style","setAttribute","innerHTML","headChildren","childNodes","beforeChild","child","tagName","toUpperCase","insertBefore","insertCss","InjectCSS","mixout","dom","hooks","beforeDOMElementCreation","beforeI2svg","w","shims","namespace","functions","loaded","domready","fn","setTimeout","toHtml","abstractNodes","tag","_abstractNodes$attrib","attributes","_abstractNodes$childr","children","attributeName","joinAttributes","join","iconFromMapping","mapping","prefix","iconName","icon","doScroll","readyState","listener","removeEventListener","subject","initialValue","thisContext","result","undefined","func","a","b","c","bindInternal4","toHex","unicode","decoded","string","output","counter","charCodeAt","extra","ucs2decode","normalizeIcons","icons","defineIcons","params","_params$skipHooks","skipHooks","normalized","addPack","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","LONG_STYLE","values","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","getIconName","cls","parts","build","lookup","reducer","alias","aliases","hasRegular","autoFetchSvg","shimLookups","shim","maybeNameMaybeUnicode","names","unicodes","getCanonicalPrefix","family","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","styleOrPrefix","_params$family","defined","PREFIXES_FOR_FAMILY","getCanonicalIcon","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","includes","some","v","canonical","rest","aliasIconName","Library","instance","Constructor","_classCallCheck","this","definitions","protoProps","_this","_len","_key","additions","_pullDefinitions","longPrefix","definition","_normalized$key","_plugins","_hooks","providers","defaultProviderKeys","chainHooks","hook","accumulator","args","hookFns","hookFn","callHooks","_len2","_key2","callProvided","findIconDefinition","iconLookup","library","i2svg","Promise","reject","watch","autoReplaceSvgRoot","autoReplace","api","noAuto","parse","_icon","match","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","abstractCreator","abstract","container","html","makeInlineSvgAbstract","_params$icons","main","mask","symbol","title","maskId","titleId","_params$watchable","watchable","found","width","height","isUploadedIcon","attrClass","classes","content","role","uploadedIconWidthStyle","asSymbol","offset","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","styleString","class","makeLayersCounterAbstract","styles$1","asFoundIcon","vectorData","fill","missingIconResolutionMixin","findIcon","resolve","console","error","maybeNotifyMissing","noop$1","p","preamble","perf","end","noop$2","isWatched","createElementNS","convertSVG","abstractObj","_params$ceFn","ceFn","createTextNode","appendChild","mutators","mutation","parentNode","comment","createComment","outerHTML","nodeAsComment","replaceChild","remove","nest","forSvg","splitClasses","toSvg","toNode","removeAttribute","newInnerHTML","performOperationSync","op","perform","mutations","callback","callbackFunction","frame","requestAnimationFrame","mutator","disabled","disableObservation","enableObservation","mo","observe","options","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","defaultPrefix","mutationRecord","type","addedNodes","hasPrefixAndIcon","_getCanonicalIcon","contains","childList","characterData","subtree","styleParser","classParser","ligature","existingPrefix","existingIconName","innerText","firstChild","nodeType","Node","TEXT_NODE","data","attributesParser","extraAttributes","parseMeta","parser","_classParser","extraClasses","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","knownPrefixes","onTree","root","htmlClassList","hclAdd","suffix","hclRemove","f","prefixesDomQuery","candidates","querySelectorAll","all","then","resolvedMutations","catch","onNode","render","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","ReplaceElements","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","_params$node","_params$callback","generateSvgReplacementMutation","generateAbstractIcon","_ref3","nextChild","containerWidth","iconWidth","Layers","layer","assembler","LayersCounter","LayersText","text","generateLayersText","computedFontSize","parseInt","getComputedStyle","fontSize","boundingClientRect","getBoundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","position","pendingAttribute","oldUnicode","newUnicode","alreadyProcessedPseudoElement","fontFamily","getPropertyValue","fontWeight","removeChild","_content","toLowerCase","_hexValueFromContent","second","first","cleaned","codePoint","index","isPrependTen","isDoubled","isSecondary","hexValueFromContent","hexValue","isV4","startsWith","iconIdentifier","iconName4","meta","processable","operations","_unwatched","parseTransformString","transformString","parseFloat","isNaN","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","outer","innerTranslate","innerScale","innerRotate","inner","path","ALL_SPACE","fillBlack","force","Masks","maskData","generateAbstractMask","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","MissingIconIndicator","reduceMotion","matchMedia","matches","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","dot","cx","cy","r","opacity","mixoutsTo","pseudoElements2svg","unwatch","bootstrap","disconnect","symbolData","k","plugin","tk","sk","config$1","library$1","parse$1","faSmileBeam","faFlag","faBookmark","faStar","faWindowMinimize","faAt","faTrashAlt","faInfo","faCompressAlt","faSignOutAlt","faAngleDoubleDown","faPencilAlt","faComments","faCircleNotch","faPaw","faReply","faCompass","faBars","faLightbulb","faList","faPaintBrush","faLock","faEdit","faShareAlt","faUsers","faEyeSlash","faChevronUp","faUser","faBullhorn","faGlobe","faBan","faServer","faSignInAlt","faFileUpload","faPlusSquare","faImage","faAngleDoubleRight","faPlayCircle","faBoxOpen","faFilter","faCode","faLockOpen","faPollH","faBasketballBall","faWrench","faEye","faPen","faBus","faExternalLinkAlt","faBirthdayCake","faEnvelope","faInfoCircle","faMinus","faCog","faFolderTree","faEllipsisV","faDownload","faHome","faStop","faUpload","faFileDownload","faEllipsisH","faBell","faFile","faTachometerAlt","faStream","faIceCream","faLink","faFont","faSearch","faSuitcaseRolling","faChevronDown","faArrowUp","faAdjust","faPlus","faTimes","faChevronLeft","faChevronRight","faRetweet","faSmile","faThumbtack","faRobot","faAngleDoubleLeft","faHistory","faMusic","faExpandAlt","faCirclePlus","faRss","faUserPlus","faCheck","faExclamationTriangle","faAlignRight","faSearchPlus","faThumbsUp","faStickyNote","faVideo","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","module","commonjsGlobal","globalThis","g","self","humps$1","exports","global","_processKeys","convert","_isObject","_isDate","_isRegExp","_isBoolean","_isFunction","l","_isArray","hasOwnProperty","camelize","_isNumerical","chr","substr","pascalize","camelized","decamelize","separator","separateWords","_processor","process","humps","depascalize","camelizeKeys","decamelizeKeys","pascalizeKeys","depascalizeKeys","_excluded","styleToObject","pair","idx","classToObject","className","abstractElement","attrs","mixins","_attrs$style","aStyle","otherAttrs","h","objectWithKey","normalizeIconArgs","FontAwesomeIcon","border","Boolean","default","fixedWidth","flip","String","validator","required","listItem","pull","pulse","rotation","Number","swapOpacity","spin","inverse","bounce","shake","beat","fade","beatFade","flash","spinPulse","spinReverse","setup","icon$1","_classes","renderedIcon","_console","log","immediate","vnode","FontAwesomeLayers","slots","Pointer","nativePointer","pageX","pageY","clientX","clientY","Touch","identifier","isPointerEvent","pointerId","getCoalesced","getCoalescedEvents","event","PointerEvent","ref","insertAt","getElementsByTagName","styleSheet","cssText","styleInject","minScaleAttr","allowPanMinScaleAttr","resetToMinScaleLimitAttr","reachMinScaleStrategyAttr","stopPropagateHandledAttr","getDistance","sqrt","getMidpoint","getAbsoluteValue","max","trimRight","endsWith","cachedSvg","getSVG","createMatrix","createSVGMatrix","createPoint","createSVGPoint","MIN_SCALE","roundedCmp","round","PinchZoom","HTMLElement","super","_transform","_stageElChange","pointerTracker","_element","start","move","rawUpdates","startPointers","currentPointers","_pointerStart","button","_triggerPointerStart","setPointerCapture","_rawUpdates","_move","_pointerEnd","_touchStart","touch","changedTouches","previousPointers","changedPointers","t","trackedChangedPointers","pointer","findIndex","_moveCallback","_triggerPointerEnd","splice","cancelled","_endCallback","_touchEnd","_startCallback","stop","_positioningEl","isPan","_allowPan","_maybeStopPropagate","_maybeEmitCancel","preventDefault","_","_onPointerMove","_onPointerEnd","_onWheel","_onClick","observedAttributes","attributeChangedCallback","oldValue","newValue","scale","minScale","setTransform","attrValue","isFinite","reachMinScaleStrategy","allowPanMinScale","resetToMinScaleLimit","stopPropagateHandled","hasAttribute","connectedCallback","scaleTo","opts","originX","originY","relativeTo","allowChangeEvent","relativeToEl","rect","currentRect","left","top","_applyChange","scaleDiff","_updateTransform","thisBounds","positioningElBounds","topLeft","bottomRight","matrix","translate","multiply","matrixTransform","setProperty","Event","bubbles","dispatchEvent","warn","deltaY","ctrlKey","deltaMode","isZoomOut","_maybeResetScale","prevMidpoint","newMidpoint","prevDistance","newDistance","panX","panY","_resetToMinScale","totalPointers","stopPropagation","pointers","parentElement","customElements","define","activeEffectScope","EffectScope","detached","active","effects","cleanups","parent","scopes","run","currentEffectScope","on","off","fromParent","last","pop","effectScope","createDep","dep","wasTracked","trackOpBit","newTracked","targetMap","WeakMap","activeEffect","effectTrackDepth","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ReactiveEffect","scheduler","scope","deps","effect","recordEffectScope","lastShouldTrack","shouldTrack","initDepMarkers","cleanupEffect","ptr","delete","finalizeDepMarkers","deferStop","onStop","trackStack","pauseTracking","resetTracking","track","depsMap","Map","trackEffects","debuggerEventExtraInfo","has","trigger","oldTarget","newLength","triggerEffects","computed","triggerEffect","allowRecurse","isNonTrackableKeys","builtInSymbols","getOwnPropertyNames","createGetter","shallowGet","readonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","toRaw","res","isReadonly","shallow","receiver","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","Reflect","isRef","readonly","reactive","createSetter","shallowSet","isShallow","hadKey","mutableHandlers","deleteProperty","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","getPrototypeOf","get$1","rawTarget","rawKey","wrap","toReadonly","toReactive","has$1","set$1","deleteEntry","clear","hadItems","createForEach","thisArg","observed","createIterableMethod","method","targetIsMap","isPair","isKeyOnly","innerIterator","createReadonlyMethod","createInstrumentations","mutableInstrumentations","shallowInstrumentations","readonlyInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","isExtensible","rawType","targetTypeMap","proxy","isReactive","isProxy","raw","markRaw","trackRefValue","triggerRefValue","newVal","__v_isRef","createRef","shallowRef","rawValue","RefImpl","__v_isShallow","_rawValue","_value","useDirectValue","unref","shallowUnwrapHandlers","proxyRefs","objectWithRefs","_a","ComputedRefImpl","getter","_setter","isSSR","_dirty","_cacheable","getterOrOptions","debugOptions","setter","onlyGetter","callWithErrorHandling","handleError","callWithAsyncErrorHandling","throwInDev","cur","exposedInstance","errorInfo","errorCapturedHooks","ec","appErrorHandler","appContext","errorHandler","contextVNode","logError","isFlushing","isFlushPending","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","queueJob","job","middle","getId","findInsertionIndex","queueFlush","flushJobs","flushPreFlushCbs","seen","pre","flushPostFlushCbs","deduped","sort","Infinity","comparator","diff","emit$1","rawArgs","isUnmounted","isModelListener","modelArg","modifiersKey","number","handlerName","handler","onceHandler","emitted","normalizeEmitsOptions","comp","asMixin","cache","emitsCache","cached","emits","hasExtends","extendEmits","normalizedFromExtend","extends","isEmitListener","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","__scopeId","pushScopeId","popScopeId","withScopeId","_id","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","_c","renderComponentRoot","Component","withProxy","propsOptions","emit","renderCache","setupState","inheritAttrs","fallthroughAttrs","shapeFlag","proxyToUse","normalizeVNode","getFunctionalFallthrough","blockStack","createVNode","Comment","filterModelListeners","cloneVNode","dirs","transition","hasPropsChanged","prevProps","nextProps","emitsOptions","nextKeys","isSuspense","__isSuspense","provide","currentInstance","parentProvides","create","inject","defaultValue","treatDefaultAsFactory","INITIAL_WATCHER_VALUE","doWatch","deep","flush","onTrack","onTrigger","cleanup","forceTrigger","isMultiSource","traverse","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","useSSRContext","__watcherHandles","queuePostRenderEffect","suspense","uid","instanceWatch","publicThis","createPathGetter","setCurrentInstance","unsetCurrentInstance","segments","useTransitionState","state","isMounted","isLeaving","isUnmounting","leavingVNodes","onMounted","onBeforeUnmount","TransitionHookValidator","Function","BaseTransition","mode","appear","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","getCurrentInstance","prevTransitionKey","getTransitionRawChildren","hasFound","rawProps","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","subTree","oldInnerChild","transitionKeyChanged","getTransitionKey","isSameVNodeType","leavingHooks","afterLeave","update","delayLeave","el","earlyRemove","delayedLeave","getLeavingNodesForType","_leaveCb","leavingVNodesCache","callHook","callAsyncHook","every","beforeEnter","leavingVNode","enter","afterHook","cancelHook","called","_enterCb","leave","clone","isKeepAlive","component","ssContent","ssFallback","keepComment","parentKey","ret","keyedFragmentCount","Fragment","patchFlag","defineComponent","isAsyncWrapper","__asyncLoader","defineAsyncComponent","loader","loadingComponent","errorComponent","delay","timeout","suspensible","onError","userOnError","resolvedComp","pendingRequest","retries","load","thisRequest","Error","__esModule","toStringTag","__asyncResolved","createInnerComp","delayed","ce","__isKeepAlive","KeepAlive","include","exclude","sharedContext","renderer","current","parentSuspense","patch","m","um","_unmount","storageContainer","unmount","resetShapeFlag","pruneCache","getComponentName","pruneCacheEntry","activate","anchor","isSVG","optimized","slotScopeIds","isDeactivated","vnodeHook","onVnodeMounted","invokeVNodeHook","deactivate","da","onVnodeUnmounted","pendingCacheKey","cacheSubtree","getInnerChild","onUpdated","rawVNode","isVNode","cachedVNode","pattern","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","__weh","unshift","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","withDirectives","directives","internalInstance","getExposeProxy","bindings","dir","arg","modifiers","mounted","updated","invokeDirectiveHook","prevVNode","oldBindings","binding","COMPONENTS","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","resolveDirective","warnMissing","selfName","registry","renderList","renderItem","item","renderSlot","fallback","noSlotted","isCE","slot","openBlock","validSlotContent","ensureValidVNode","rendered","createBlock","scopeId","vnodes","toHandlers","preserveCaseIfNecessary","getPublicInstance","isStatefulComponent","publicPropertiesMap","$","$el","$data","$props","$attrs","$slots","$refs","refs","$parent","$root","$emit","$options","resolveMergedOptions","$forceUpdate","$nextTick","$watch","hasSetupBinding","__isScriptSetup","PublicInstanceProxyHandlers","accessCache","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","__cssModules","createWatcher","base","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","resolved","mergeOptions","to","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeObjectOptions","methods","beforeCreate","mergeAsArray","created","beforeMount","beforeUpdate","beforeDestroy","beforeUnmount","destroyed","unmounted","activated","deactivated","errorCaptured","serverPrefetch","components","merged","normalizeInject","setFullProps","needCastKeys","rawCastValues","hasAttrsChanged","camelKey","rawCurrentProps","castValues","resolvePropValue","isAbsent","opt","hasDefault","propsDefaults","normalizePropsOptions","propsCache","extendProps","normalizedKey","validatePropName","assign","booleanIndex","getTypeIndex","stringIndex","getType","ctor","isSameType","expectedTypes","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","createAppContext","app","isNativeTag","NO","warnHandler","compilerOptions","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","_uid","_component","_props","_container","_context","_instance","version","use","install","mixin","directive","mount","rootContainer","isHydrate","__vue_app__","setRef","rawRef","oldRawRef","isUnmount","refValue","owner","oldRef","_isString","_isRef","doSet","existing","pendingBranch","createRenderer","createHydrationFns","__VUE__","insert","hostInsert","hostRemove","patchProp","hostPatchProp","hostCreateElement","createText","hostCreateText","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","hostParentNode","nextSibling","hostNextSibling","setScopeId","hostSetScopeId","insertStaticContent","hostInsertStaticContent","n1","n2","parentComponent","dynamicChildren","getNextHostNode","Text","processText","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","internals","removeStaticNode","mountElement","patchElement","is","mountChildren","unmountChildren","onVnodeBeforeMount","needCallTransitionHooks","parentVNode","cloneIfMounted","oldProps","newProps","toggleRecurse","onVnodeBeforeUpdate","areChildrenSVG","patchBlockChildren","patchChildren","patchProps","propsToUpdate","dynamicProps","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","mountComponent","updateComponent","initialVNode","emptyAppContext","uid$1","exposed","exposeProxy","setupContext","suspenseId","pendingId","asyncDep","asyncResolved","bc","bm","bu","u","bum","rtg","rtc","sp","createComponentInstance","isStateful","InternalObjectKey","initProps","initSlots","setupResult","expose","createAttrsProxy","createSetupContext","resolvedResult","handleSetupResult","finishComponentSetup","setupStatefulComponent","setupComponent","registerDep","setupRenderEffect","placeholder","nextVNode","prevChildren","nextChildren","$stable","shouldUpdateComponent","updateComponentPreRender","invalidateJob","originNext","nextTree","prevTree","updateHOCHostEl","isAsyncWrapperVNode","hydrateNode","hydrateSubTree","scopedInitialVNode","rawPrevProps","kebabKey","camelizedKey","updateProps","needDeletionCheck","deletionComparisonTarget","updateSlots","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","min","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","arrI","getSequence","nextIndex","moveType","performLeave","moveStaticNode","doRemove","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","removeFragment","performRemove","_vnode","mt","mc","pc","pbc","createApp","baseCreateRenderer","allowed","ch1","ch2","isTeleportDisabled","isTargetSVG","SVGElement","resolveTarget","select","targetSelector","moveTeleport","targetAnchor","isReorder","Teleport","__isTeleport","mainAnchor","wasDisabled","currentContainer","currentAnchor","nextTarget","updateCssVars","hydrateChildren","targetNode","_lpa","ut","currentBlock","disableTracking","isBlockTreeEnabled","setupBlock","createElementBlock","createBaseVNode","__v_isVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","staticCount","normalizeChildren","normalize","cloned","__vccOpts","guardReactiveProps","klass","isTeleport","extraProps","mergeRef","mergedProps","mergeProps","createTextVNode","flag","createCommentVNode","asBlock","memo","slotFlag","toMerge","incoming","__ssrInlineRender","ssrRender","skipOptions","dataOptions","computedOptions","watchOptions","provideOptions","injectOptions","renderTracked","renderTriggered","filters","checkDuplicateProperties","unwrapRef","resolveInjections","unwrapInjectedRef","methodHandler","registerLifecycleHook","register","_hook","applyOptions","includeInferred","displayName","__name","propsOrChildren","ssrContextKey","doc","templateContainer","nodeOps","multiple","nodeValue","textContent","selector","before","previousSibling","lastChild","cloneNode","template","wrapper","importantRE","setStyle","prefixed","rawName","prefixCache","autoPrefix","xlinkNS","optionsModifierRE","cachedNow","nativeOnRE","TRANSITION","ANIMATION","Transition","baseProps","DOMTransitionPropsValidators","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","durations","NumberOf","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","_isLeaving","makeEnterHook","nextFrame","addTransitionClass","hasExplicitCallback","whenTransitionEnds","body","offsetHeight","resolveTransitionProps","_vtc","endId","expectedType","explicitTimeout","_endId","resolveIfNotStale","propCount","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","getTransitionInfo","endEvent","ended","onEnd","delays","toMs","getModelAssigner","onCompositionStart","composing","onCompositionEnd","vModelText","lazy","_assign","castToNumber","domValue","activeElement","vModelCheckbox","modelValue","_modelValue","elementValue","getValue","checked","filtered","getCheckboxValue","setChecked","vModelRadio","vModelSelect","isSetModel","selectedVal","selected","setSelected","_binding","isMultiple","option","optionValue","selectedIndex","vModelDynamic","callModelHook","resolveDynamicModel","systemModifiers","modifierGuards","prevent","currentTarget","ctrl","shift","shiftKey","alt","altKey","metaKey","right","exact","withModifiers","guard","keyNames","esc","space","up","down","withKeys","eventKey","vShow","_vod","display","setDisplay","rendererOptions","prevValue","nextValue","transitionClasses","patchClass","isCssString","currentDisplay","patchStyle","invokers","_vei","existingInvoker","parseName","invoker","_vts","attached","Date","now","originalStop","stopImmediatePropagation","_stopped","patchStopImmediatePropagation","createInvoker","patchEvent","shouldSetAsProp","needRemove","patchDOMProp","_trueValue","_falseValue","removeAttributeNS","setAttributeNS","isBoolean","patchAttr","containerOrSelector","normalizeContainer","Element","makeMap","expectsLowerCase","list","isGloballyWhitelisted","normalizeStyle","isString","parseStringStyle","isObject","listDelimiterRE","propertyDelimiterRE","styleCommentRE","tmp","normalizeClass","normalizeProps","isSpecialBooleanAttr","includeBooleanAttr","looseEqual","aValidType","isDate","bValidType","getTime","isSymbol","equal","looseCompareArrays","aHasKey","bHasKey","looseIndexOf","toDisplayString","objectToString","isFunction","JSON","stringify","replacer","isMap","entries","isSet","isPlainObject","EMPTY_OBJ","EMPTY_ARR","NOOP","onRE","isOn","extend","hasOwn","toTypeString","isPromise","toRawType","isIntegerKey","isReservedProp","cacheStringFunction","camelizeRE","hyphenateRE","hyphenate","capitalize","charAt","toHandlerKey","hasChanged","invokeArrayFns","fns","def","toNumber","_globalThis","getGlobalThis","unwrapObj","ignoreKeys","stringPath","gatherBooleanGroupProperties","group","nestedResults","property","gatherArrayGroupProperties","fetchedProperty","callRule","rule","siblingState","normalizeValidatorResponse","$valid","_empty","_call","direct","setValidations","$validate","$touch","$pending","$invalid","mergedConfig","$rewardEarly","$commit","validations","childResults","resultsCache","globalConfig","externalResults","rules","nestedValidators","validationGroups","validationsRaw","validationKeys","$validator","sortValidations","nestedState","cachedExternalResults","nestedExternalResults","results","model","ruleKeys","cachedResult","$dirty","$lastInvalidState","$lastCommittedOn","$partial","$unwatch","$path","$reset","ruleKey","validatorName","propertyKey","propertyPath","$params","$response","$async","$lazy","watchTargets","$pendingCounter","ruleResult","createAsyncResult","$watchTargets","returnValue","createSyncResult","message","$message","$model","$propertyPath","$property","createValidatorResult","$externalResults","stringError","$uid","$error","$silentErrors","$errors","createValidationResults","nestedValidationKeys","nestedKey","collectNestedValidationResults","$validationGroups","$anyDirty","allResults","allRes","modelErrors","nestedErrors","errors","nr","createMetaFields","external","$autoDirty","$getResultsForChild","$clearExternalResults","ResultsStorage","storage","checkRulesValidity","storedRules","storedRulesKeys","newRulesKeys","paramKey","storedRuleResultPair","isValidCache","CollectFlag","COLLECT_ALL","COLLECT_NONE","VuelidateInjectChildResults","VuelidateRemoveChildResults","nestedValidations","$scope","childResultsRaw","childResultsKeys","__vuelidateInjectInstances","$registerAs","childScope","$stopPropagation","__vuelidateRemoveInstances","childKey","sendValidationResultsToParent","removeValidationResultsFromParent","ComputedProxyFactory","useVuelidate","_getCurrentInstance","currentVueInstance","componentOptions","validationResults","vuelidateExternalResults","validationsConfig","validationsWatchTarget","newValidationRules","req","regex","expr","reg","validate$1","requiredIf","propOrFunction","parentVM","sameAs$1","equalTo","sameAs","otherName","hasPassiveEvents","passiveTestOptions","passive","isIosDevice","platform","maxTouchPoints","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPaddingRight","allowTouchMove","lock","rawEvent","touches","disableBodyScroll","targetElement","ontouchstart","targetTouches","ontouchmove","scrollTop","scrollHeight","clientHeight","isTargetElementTotallyScrolled","handleScroll","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","innerWidth","clientWidth","paddingRight","overflow","setOverflowHidden","enableBodyScroll","getIlluminant","ILLUMINANTS","getTransform","TRANSFORMS","toRadian","PI","bounded","cubeRoot","cbrt","pow","abs","types","find","testColorType","determineType","conversions","convertNow","conversionSteps","makeColourObject","types$1","convertArrayOrColour","A","X","Y","Z","B","C","D50","D55","D65","D75","E","F2","F7","F11","BRADFORD","INVERSE_BRADFORD","SRGB_XYZ","INVERSE_SRGB_XYZ","stringStartsWith","hex","rgb","cssrgb","hsl","csshsl","hsv","cmyk","yiq","XYZ","xyY","lms","cielab","cieluv","cielch","hsluv","epsilon","kappa","white","toR","L","cos","sin","hu","MAX_VALUE","atan2","toDegree","negativeModulo","rho","gamma","beta","bounded255","slicedToArray","return","epsilon$1","white$1","fromXYZ","boundedRgb","fromXYZTolms","fromXYZTocielab","fromXYZTocieluv","fromXYZToxyY","hsl$1","rgb$1","q","bound","freeze","msMaxTouchPoints","middleware","events","isActive","detectIframe","capture","srcTarget","composedPath","CustomEvent","cancelable","defaultPrevented","evt","origPrevent","createEvent","initCustomEvent","detail","matchHtmlRegExp","escape","exec","lastIndex","substring","aa","nativeName","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bi","bn","bo","br","bs","ca","ch","co","cr","cs","cu","cv","de","dv","dz","ee","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hy","hz","ia","ie","ig","ii","ik","io","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mr","ms","my","na","nb","nd","ne","ng","nl","nn","no","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","si","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tl","tn","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu","ISO6391","static","codes","code","getName","getNativeName","validate","language","init","converter","defaultAttributes","expires","toUTCString","encodeURIComponent","decodeURIComponent","stringifiedAttributes","cookie","write","cookies","jar","foundKey","read","withAttributes","withConverter","amd","localforage","require","_dereq_","scheduleDrain","draining","Mutation","WebKitMutationObserver","observer","setImmediate","MessageChannel","scriptEl","onreadystatechange","channel","port1","onmessage","port2","postMessage","oldQueue","task","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","resolver","outcome","safelyResolveThenable","QueueItem","promise","onFulfilled","onRejected","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","unwrap","getThen","thenable","onSuccess","tryCatch","status","out","reason","iterable","allResolver","outValue","race","response","idb","indexedDB","webkitIndexedDB","mozIndexedDB","OIndexedDB","msIndexedDB","getIDB","createBlob","properties","Blob","builder","BlobBuilder","MSBlobBuilder","MozBlobBuilder","WebKitBlobBuilder","append","getBlob","Promise$1","executeCallback","executeTwoCallbacks","errorCallback","getCallback","DETECT_BLOB_SUPPORT_STORE","supportsBlobs","dbContexts","READ_ONLY","READ_WRITE","_deferReadiness","dbInfo","dbContext","deferredOperation","deferredOperations","dbReady","_advanceReadiness","_rejectReadiness","_getConnection","upgradeNeeded","forages","db","close","dbArgs","openreq","open","onupgradeneeded","createObjectStore","storeName","oldVersion","ex","newVersion","onerror","onsuccess","onversionchange","_getOriginalConnection","_getUpgradedConnection","_isUpgradeNeeded","defaultVersion","isNewStore","objectStoreNames","isDowngrade","isUpgrade","incVersion","_decodeBlob","encodedBlob","bin","buf","ArrayBuffer","Uint8Array","_binStringToArrayBuffer","atob","_isEncodedBlob","__local_forage_encoded_blob","_fullyReady","_initReady","_dbInfo","createTransaction","tx","transaction","forage","_tryReconnect","asyncStorage","_driver","_initStorage","ready","initPromises","ignoreErrors","_defaultConfig","_support","isSafari","openDatabase","hasFetch","fetch","IDBKeyRange","isIndexedDBValid","iterate","objectStore","openCursor","iterationNumber","cursor","getItem","setItem","txn","blob","put","onabort","oncomplete","matchedChrome","matchedEdge","_checkBlobSupportWithoutCaching","_checkBlobSupport","blobSupport","reader","FileReader","onloadend","base64","btoa","readAsBinaryString","store","removeItem","count","advanced","openKeyCursor","advance","dropInstance","currentConfig","isCurrentDb","dbPromise","dropObjectPromise","deleteObjectStore","_forage2","dropDBPromise","deleteDatabase","onblocked","BASE_CHARS","BLOB_TYPE_PREFIX_REGEX","SERIALIZED_MARKER","SERIALIZED_MARKER_LENGTH","TYPE_ARRAYBUFFER","TYPE_BLOB","TYPE_INT8ARRAY","TYPE_UINT8ARRAY","TYPE_UINT8CLAMPEDARRAY","TYPE_INT16ARRAY","TYPE_INT32ARRAY","TYPE_UINT16ARRAY","TYPE_UINT32ARRAY","TYPE_FLOAT32ARRAY","TYPE_FLOAT64ARRAY","TYPE_SERIALIZED_MARKER_LENGTH","toString$1","stringToBuffer","serializedString","encoded1","encoded2","encoded3","encoded4","bufferLength","buffer","bytes","bufferToString","base64String","localforageSerializer","serialize","valueType","marker","fileReader","onload","readAsArrayBuffer","deserialize","blobType","matcher","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","createDbTable","executeSql","tryExecuteSql","sqlStatement","SYNTAX_ERR","rows","_setItem","retriesLeft","originalValue","serializer","sqlError","QUOTA_ERR","getAllStoreNames","storeNames","webSQLStorage","dbInfoPromise","description","operationInfo","dropTable","_getKeyPrefix","defaultConfig","keyPrefix","localStorageWrapper","localStorageTestKey","localStorage","checkIfLocalStorageThrows","isLocalStorageValid","keyPrefixLength","itemKey","searchElement","DefinedDrivers","DriverSupport","DefaultDrivers","INDEXEDDB","WEBSQL","LOCALSTORAGE","DefaultDriverOrder","OptionalDriverMethods","LibraryMethods","DefaultConfig","driver","callWhenReady","localForageInstance","libraryMethod","_args","LocalForage","driverTypeKey","driverName","defineDriver","_driverSet","_initDriver","_ready","_wrapLibraryMethodsWithReady","setDriver","driverObject","complianceError","driverMethods","driverMethodName","methodNotImplementedFactory","methodName","optionalDriverMethod","configureMissingMethods","setDriverSupport","support","info","getDriver","getDriverPromise","getSerializer","serializerPromise","drivers","supportedDrivers","_getSupportedDrivers","setDriverToConfig","extendSelfWithDriver","_extend","oldDriverSetDone","currentDriverIndex","driverPromiseLoop","initDriver","supports","libraryMethodsAndProperties","createInstance","localforage_js","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","funcTag","objectTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsTypedArray","isTypedArray","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","reIsNative","Buffer","getPrototype","allocUnsafe","objectCreate","symToStringTag","getNative","nativeIsBuffer","isBuffer","nativeMax","nativeNow","nativeCreate","baseCreate","proto","Hash","entry","ListCache","MapCache","Stack","__data__","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","getMapData","pairs","LARGE_ARRAY_SIZE","baseGetTag","isOwn","unmasked","getRawTag","baseIsArguments","isObjectLike","baseMerge","srcIndex","customizer","stack","iteratee","keysFunc","baseFor","srcValue","mergeFunc","safeGet","stacked","typedArray","arrayBuffer","isCommon","isArr","isBuff","isTyped","isArrayLike","copyArray","isDeep","cloneBuffer","byteLength","byteOffset","Ctor","isArguments","isNew","copyObject","keysIn","toPlainObject","isPrototype","initCloneObject","baseMergeDeep","baseSetToString","identity","isMasked","toSource","baseIsNative","isIndex","setToString","lastCalled","stamp","remaining","shortOut","other","isLength","baseUnary","inherited","isArg","isType","skipIndexes","baseTimes","arrayLikeKeys","nativeKeysIn","isProto","baseKeysIn","assigner","merge","otherArgs","overRest","baseRest","sources","isIterateeCall","DataView","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","setCacheAdd","setCacheHas","SetCache","stackClear","stackDelete","stackGet","stackHas","stackSet","predicate","resIndex","baseIndexOf","initAccum","shuffleSelf","reAsciiWord","baseEach","collection","lower","upper","arrayEach","baseAssign","baseAssignIn","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","cloneableTags","baseClone","bitmask","isFlat","isFull","isFunc","subValue","baseForOwn","createBaseEach","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","createBaseFor","castPath","toKey","symbolsFunc","baseFindIndex","baseIsNaN","strictIndexOf","baseIsEqualDeep","baseIsEqual","equalArrays","equalByTag","equalObjects","arrayTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","baseMatches","baseMatchesProperty","nativeKeys","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","cloneTypedArray","isArrayLikeObject","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","compareMultiple","iteratees","orders","baseSet","paths","baseUnset","indexes","previous","nativeFloor","floor","nativeRandom","eachFunc","nested","constant","comparer","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","seenIndex","stringToPath","baseSlice","strSymbols","chrSymbols","copy","cloneArrayBuffer","dataView","reFlags","regexp","symbolValueOf","valueOf","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","getSymbols","getSymbolsIn","arrayAggregator","baseAggregator","initializer","castSlice","hasUnicode","stringToArray","trailing","arrayReduce","deburr","words","reApos","findIndexFunc","deburrLetter","basePropertyOf","arraySome","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","mapToArray","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","baseGetAllKeys","isKeyable","overArg","arrayFilter","stubArray","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","hasFunc","reHasUnicode","reHasUnicodeWord","input","cloneDataView","cloneRegExp","cloneSymbol","spreadableSymbol","isConcatSpreadable","reIsDeepProp","reIsPlainProp","memoize","baseRandom","rand","asciiToArray","unicodeToArray","memoizeCapped","rePropName","reEscapeChar","quote","subString","reWhitespace","unescapeHtmlChar","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsModifier","rsOptVar","rsSeq","rsSymbol","reUnicode","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsEmoji","reUnicodeWord","camelCase","createCompounder","word","upperFirst","toInteger","nativeCeil","ceil","baseClamp","CLONE_DEEP_FLAG","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","clearTimeout","cancel","reLatin","reComboMark","baseFilter","createFind","castFunction","createAggregator","groupBy","baseHasIn","hasPath","stubFalse","baseKeys","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","baseIsTypedArray","kebabCase","keyBy","baseExtremum","baseGt","memoized","Cache","createAssigner","mergeWith","baseLt","negate","pickBy","baseOrderBy","basePickBy","baseProperty","basePropertyDeep","baseReduce","basePullAt","arrayShuffle","baseShuffle","sortBy","baseSum","debounce","toFinite","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","charsEndIndex","charsStartIndex","chars","reEscapedHtml","reHasEscapedHtml","baseUniq","idCounter","createCaseFirst","baseValues","asciiWords","hasUnicodeWord","unicodeWords","qs","url","xtend","PARSE_LINK_HEADER_MAXLEN","PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED","hasRel","rel","intoRels","createObjects","parseLink","link","linkUrl","parsedUrl","qry","query","linkHeader","checkHeader","closure","globalSelf","phxWindow","CHANNEL_STATES","CHANNEL_EVENTS","Push","payload","receivedResp","timeoutTimer","recHooks","sent","resend","reset","send","hasReceived","startTimeout","socket","topic","join_ref","joinRef","receive","cancelRefEvent","refEvent","matchReceive","cancelTimeout","makeRef","replyEventName","Timer","timerCalc","timer","tries","scheduleTimeout","Ajax","endPoint","accept","ontimeout","XDomainRequest","xdomainRequest","XMLHttpRequest","xhrRequest","parseJSON","responseText","onprogress","setRequestHeader","resp","queryStr","paramVal","LongPoll","token","skipHeartbeat","onopen","onclose","pollEndpoint","normalizeEndpoint","poll","endpointURL","appendParams","closeAndRetry","request","messages","msg","_code","_reason","serializer_default","HEADER_LENGTH","META_LENGTH","KINDS","reply","broadcast","encode","binaryEncode","decode","rawPayload","binaryDecode","metaLength","header","view","setUint8","char","combined","kind","getUint8","decoder","TextDecoder","decodePush","decodeReply","decodeBroadcast","joinRefSize","topicSize","eventSize","refSize","Socket","stateChangeCallbacks","channels","sendBuffer","transport","WebSocket","establishedConnections","defaultEncoder","defaultDecoder","closeWasClean","binaryType","connectClock","awaitingConnectionOnPageShow","conn","connect","heartbeatIntervalMs","rejoinAfterMs","reconnectAfterMs","logger","longpollerTimeout","vsn","heartbeatTimer","pendingHeartbeatRef","reconnectTimer","teardown","replaceTransport","newTransport","protocol","location","endPointURL","uri","host","onConnOpen","onConnError","onConnMessage","onConnClose","hasLogger","onOpen","onClose","onMessage","flushSendBuffer","resetHeartbeat","heartbeatTimeout","abnormalClose","sendHeartbeat","waitForBufferDone","waitForSocketClosed","bufferedAmount","triggerChanError","transportBefore","establishedBefore","isErrored","isClosed","connectionState","isConnected","stateChangeRefs","chanParams","chan","bindingRef","joinedOnce","joinPush","pushBuffer","rejoinTimer","rejoin","pushEvent","isJoining","canPush","isJoined","leavePush","_event","isMember","leaveOpenTopic","handledPayload","eventBindings","newRef","rawMessage","dupChannel","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","fromCharCode","RangeError","mapDomain","domain","encoded","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","inputLength","bias","basic","lastIndexOf","oldi","baseMinusT","fromCodePoint","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","codePoints","ucs2encode","toUnicode","toASCII","sep","maxKeys","kstr","vstr","stringifyPrimitive","serviceWorkerOption","serviceWorker","punycode","util","Url","slashes","auth","port","hostname","hash","search","pathname","href","urlParse","relative","resolveObject","format","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","qm","tkeys","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","hasTrailingSlash","isAbsolute","inBrowser","hasSymbol","isNumber","isRegExp","isEmptyObject","escapeHtml","rawText","createCompileError","loc","SyntaxError","pathStateMachine","literalValueRE","getPathCharType","resolveWithKeyValue","DEFAULT_MODIFIER","DEFAULT_MESSAGE","DEFAULT_NORMALIZE","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","devtools","translateDevTools","createDevToolsHook","payloads","fallbackWithSimple","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","__localeChainCache","chain","block","appendBlockToChain","defaults","blocks","follow","locale","appendLocaleToChain","tokens","appendItemToChain","toLocaleUpperCase","_resolver","_fallbacker","_additionalMeta","setAdditionalMeta","_fallbackContext","setFallbackContext","_cid","handleMissing","missingWarn","missing","onWarn","updateFallbackLocale","localeFallbacker","inc","CoreErrorCodes","INVALID_ARGUMENT","INVALID_DATE_ARGUMENT","INVALID_ISO_DATE_ARGUMENT","__EXTEND_POINT__","createCoreError","NOOP_MESSAGE_FUNCTION","isMessageFunction","fallbackFormat","postTranslation","unresolving","messageCompiler","fallbackLocale","parseTranslateArgs","escapeParameter","fallbackWarn","resolvedMessage","defaultMsgOrKey","enableDefaultMsg","named","escapeParams","formatScope","targetLocale","resolveMessageFormat","cacheBaseKey","occurred","compileMessageFormat","ctxOptions","pluralRules","messageResolver","resolveValue","fallbackContext","processor","plural","pluralIndex","getMessageContextOptions","messaged","msgCtx","evaluateMessage","getPluralIndex","pluralRule","orgPluralRule","_list","_named","normalizeNamed","interpolate","arg1","arg2","modifier","createMessageContext","__INTLIFY_PROD_DEVTOOLS__","timestamp","__meta","locales","missingRet","errorDetector","warnHtmlMessage","onCacheKey","friendlyJSONstringify","json","generateFormatCacheKey","getCompileOptions","arg3","intlDefined","Intl","datetime","datetimeFormats","__datetimeFormatters","overrides","parseDateTimeArgs","DateTimeFormat","datetimeFormat","formatter","formatToParts","NumberFormat","DATETIME_FORMAT_OPTIONS_KEYS","arg4","dateTime","toISOString","clearDateTimeFormat","numberFormats","__numberFormatters","parseNumberArgs","numberFormat","NUMBER_FORMAT_OPTIONS_KEYS","clearNumberFormat","code$1","inc$1","I18nErrorCodes","UNEXPECTED_RETURN_TYPE","MUST_BE_CALL_SETUP_TOP","NOT_INSLALLED","NOT_AVAILABLE_IN_LEGACY_MODE","REQUIRED_VALUE","INVALID_VALUE","CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN","NOT_INSLALLED_WITH_PROVIDE","UNEXPECTED_ERROR","NOT_COMPATIBLE_LEGACY_VUE_I18N","BRIDGE_SUPPORT_VUE_2_ONLY","MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION","NOT_AVAILABLE_COMPOSITION_IN_LEGACY","createI18nError","TransrateVNodeSymbol","DatetimePartsSymbol","NumberPartsSymbol","SetPluralRulesSymbol","InejctWithOption","handleFlatJson","subKeys","currentObj","getLocaleMessages","__i18n","flatJson","custom","resource","deepCopy","isNotObjectOrIsArray","src","des","getComponentOptions","adjustI18nResources","__i18nGlobal","mergeLocaleMessage","mergeDateTimeFormat","mergeNumberFormat","DEVTOOLS_META","composerID","defineCoreMissingHandler","createComposer","VueI18nLegacy","__root","_isGlobal","_inheritLocale","inheritLocale","_locale","_fallbackLocale","_messages","_datetimeFormats","_numberFormats","_missingWarn","_fallbackWarn","_fallbackRoot","fallbackRoot","_fallbackFormat","_missing","_runtimeMissing","_postTranslation","_warnHtmlMessage","_escapeParameter","_modifiers","_pluralRules","framework","_compiler","internalOptions","cid","i18n","initI18nDevTools","createCoreContext","getCoreContext","wrapWithDeps","argumentParser","warnType","fallbackSuccess","fallbackFail","successCondition","getMetaInfo","getLocaleMessage","composer","availableLocales","isGlobal","setLocaleMessage","getPostTranslationHandler","setPostTranslationHandler","getMissingHandler","setMissingHandler","rt","tm","targetLocaleMessages","messageValue","resolveMessages","getDateTimeFormat","setDateTimeFormat","getNumberFormat","setNumberFormat","__injectWithOption","createVueI18n","silentTranslationWarn","silentFallbackWarn","formatFallbackMessages","pluralizationRules","warnHtmlInMessage","escapeParameterHtml","sync","sharedMessages","convertComposerOptions","vueI18n","preserveDirectiveContent","__composer","tc","getChoiceIndex","__onComponentInstanceCreated","componentInstanceCreatedListener","baseFormatProps","getFragmentableTag","Translation","keypath","useI18n","useScope","__useComponent","getInterpolateArg","assignedAttrs","renderFormatter","slotKeys","partFormatter","DatetimeFormat","parseValue","makeParams","mergeToRoot","I18nInjectionKey","createI18n","__legacyMode","__VUE_I18N_LEGACY_API__","legacy","__globalInjection","globalInjection","__allowComposition","allowComposition","__instances","globalScope","__global","legacyMode","createGlobal","async","__VUE_I18N_SYMBOL__","globalExportProps","desc","$i18n","globalExportMethods","injectGlobalFields","__VUE_I18N_FULL_INSTALL__","pluginOptions","useI18nComponentName","globalInstall","_process","i18nInternal","__getInstance","getComposer$2","parsedValue","__i18nWatcher","getSSRProps","vTDirective","vuei18n","optionsI18n","__setInstance","$t","$rt","$tc","$te","$d","$n","$tm","__deleteInstance","defineMixin","unmountApp","dispose","getI18nInstance","getGlobalComposer","getScope","isLocale","_composer","warpWithDeps","useI18nForLegacy","useComponent","getComposer","composerOptions","setupLifeCycle","hit","newChar","action","typeMap","subPathDepth","actions","maybeUnescapeQuote","nextChar","trimmed","exp","stripQuotes","formatSubPath","needWarn","initFeatureFlags","__INTLIFY__","__INTLIFY_DEVTOOLS_GLOBAL_HOOK__","sfc","isBrowser","applyToParams","newParams","TRAILING_SLASH_RE","parseURL","parseQuery","currentLocation","searchString","hashPos","searchPos","fromSegments","toSegments","toPosition","segment","resolveRelativePath","fullPath","stripBase","isSameRouteRecord","aliasOf","isSameRouteLocationParams","isSameRouteLocationParamsValue","isEquivalentArray","NavigationType","NavigationDirection","BEFORE_HASH_RE","createHref","computeScrollPosition","pageXOffset","pageYOffset","getScrollKey","history","scrollPositions","createBaseLocation","createCurrentLocation","slicePos","pathFromHash","buildState","back","forward","replaced","computeScroll","scroll","createWebHistory","historyNavigation","historyState","changeLocation","hashIndex","currentState","useHistoryStateNavigation","baseEl","normalizeBase","historyListeners","listeners","teardowns","pauseState","popStateHandler","fromState","direction","unknown","beforeUnloadListener","replaceState","pauseListeners","listen","destroy","useHistoryListeners","routerHistory","go","triggerListeners","isRouteName","START_LOCATION_NORMALIZED","matched","redirectedFrom","NavigationFailureSymbol","NavigationFailureType","createRouterError","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","sensitive","strict","REGEX_CHARS_RE","compareScoreArray","comparePathParserScore","aScore","score","bScore","isLastScoreNegative","ROOT_TOKEN","VALID_PARAM_RE","createRouteRecordMatcher","record","extraOptions","segmentScores","tokenIndex","subSegmentScore","repeatable","optional","re","subPattern","avoidDuplicatedSlash","param","tokensToParser","crash","previousState","finalizeSegment","customRe","consumeBuffer","addCharToBuffer","tokenizePath","paramsFromLocation","normalizeRecordProps","propsObject","isAliasRecord","mergeMetaFields","partialOptions","isRecordChildOf","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeURI","encodeQueryValue","encodeParam","encodePath","searchParams","searchParam","eqPos","stringifyQuery","normalizeQuery","normalizedQuery","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","useCallbacks","guardToPromiseFn","enterCallbackArray","enterCallbacks","valid","route","guardReturn","instances","guardCall","extractComponentsGuards","guardType","guards","rawComponent","componentPromise","resolvedComponent","useLink","router","currentRoute","activeRecordIndex","routeMatched","currentMatched","parentRecordPath","getOriginalPath","innerValue","outerValue","includesParams","isExactActive","navigate","guardEvent","RouterLink","compatConfig","MODE","activeClass","exactActiveClass","ariaCurrentValue","elClass","getLinkClass","linkActiveClass","linkExactActiveClass","onClick","propClass","globalClass","defaultClass","slotContent","RouterView","injectedRoute","routeToDisplay","injectedDepth","initialDepth","matchedRoute","matchedRouteRef","viewRef","oldInstance","oldName","leaveGuards","updateGuards","currentName","ViewComponent","routePropsOption","routeProps","createRouter","routes","globalOptions","matchers","matcherMap","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","redirect","normalizeRouteRecord","normalizedRecords","originalMatcher","normalizedRecord","parentPath","connectingSlash","removeRoute","insertMatcher","matcherRef","parentMatcher","getRoutes","getRecordMatcher","createRouterMatcher","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","scrollBehavior","scrollRestoration","normalizeParams","paramValue","encodeParams","decodeParams","rawLocation","locationNormalized","matcherLocation","targetParams","stringifyURL","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","newTargetLocation","targetLocation","shouldRedirect","toLocation","failure","aLastIndex","bLastIndex","isSameRouteLocation","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","leavingRecords","updatingRecords","enteringRecords","recordFrom","recordTo","extractChangingRecords","reverse","canceledNavigationCheck","runGuardQueue","isPush","isFirstNavigation","removeHistoryListener","readyHandlers","errorHandlers","_from","listening","scrollPosition","getSavedScrollPosition","scrollToOptions","positionEl","isIdSelector","getElementById","docRect","elRect","behavior","getElementPosition","scrollTo","scrollToPosition","started","installedApps","parentOrRoute","recordMatcher","hasRoute","routeMatcher","beforeEach","beforeResolve","afterEach","isReady","$router","reactiveRoute","isIE","initCompat","ua","msie","rv","edge","getInternetExplorerVersion","script","emitOnMount","ignoreWidth","ignoreHeight","_w","offsetWidth","_h","emitSize","_resizeObject","addResizeHandlers","removeResizeHandlers","compareAndNotify","contentDocument","defaultView","_withId","_hoisted_1","tabindex","_cache","$setup","deepEqual","val1","val2","__file","VisibilityState","frozen","createObserver","destroyObserver","once","throttle","_leading","throttleOptions","lastState","currentArgs","throttled","_clear","oldResult","IntersectionObserver","intersectingEntry","isIntersecting","intersectionRatio","threshold","intersection","_vue_visibilityState","ObserveVisibility","itemsLimit","parents","getScrollParent","scrollingElement","items","keyField","listTag","itemTag","simpleArray","supportsPassive","script$2","ResizeObserver","itemSize","gridItems","itemSecondarySize","minItemSize","sizeField","typeField","pageMode","prerender","emitUpdate","updateInterval","skipHover","listClass","itemClass","pool","totalSize","hoverKey","sizes","field","computedMinSize","$_computedMinItemSize","itemIndexByKey","updateVisibleItems","applyPageMode","$_startIndex","$_endIndex","$_views","$_unusedViews","$_scrollDirty","$_lastUpdateScrollPosition","$_prerender","lastPosition","removeListeners","addView","used","unuseView","fake","unusedViews","unusedPool","handleResize","$_updateTimeout","requestUpdate","continuous","$_refreshTimout","handleVisibilityChange","isVisible","checkItem","checkPositionDiff","views","startIndex","endIndex","visibleStartIndex","visibleEndIndex","getScroll","positionDiff","beforeSize","after","afterSize","oldI","itemsLimitError","unusedIndex","newlyUsedView","$_sortTimer","sortViews","getListenerTarget","isVertical","scrollState","bounds","boundsSize","innerHeight","scrollLeft","addListeners","listenerTarget","scrollToItem","viewport","scrollDirection","scrollDistance","viewportEl","scrollerPosition","viewA","viewB","_hoisted_2","_component_ResizeObserver","_directive_observe_visibility","onScrollPassive","hover","mouseenter","mouseleave","onNotify","script$1","RecycleScroller","$_resizeObserver","$_vs_onResize","resizeObserverSize","borderBoxSize","$_vs_id","inlineSize","blockSize","vscrollData","vscrollParent","vscrollResizeObserver","itemsWithSize","$_undefinedMap","forceUpdate","prevActiveTop","activeTop","$_updates","$_undefinedSizes","$_events","onScrollerResize","scroller","onScrollerVisible","getItemSize","scrollToBottom","$_scrollingToBottom","_component_RecycleScroller","onResize","onVisible","itemWithSize","empty","watchData","sizeDependencies","emitResize","finalActive","onDataUpdate","$_sizeObserved","oldSize","applySize","observeSize","unobserveSize","$_pendingVScrollUpdate","updateSize","$isServer","$_forceNextVScrollUpdate","updateWatchData","onVscrollUpdate","$_pendingSizeUpdate","computeSize","$_watchData","applyWidthHeight","unobserve","finalOptions","installComponents","componentsPrefix","registerComponents","getTarget","isProxyAvailable","supported","ApiProxy","targetQueue","onQueue","defaultSettings","settings","localSettingsSaveId","currentSettings","fallbacks","getSettings","setSettings","perf_hooks","pluginId","proxiedOn","_target","proxiedTarget","forEachValue","genericSubscribe","subs","resetStore","hot","_actions","_mutations","_wrappedGetters","_modulesNamespaceMap","installModule","_modules","resetStoreState","oldState","_state","oldScope","_scope","getters","_makeLocalGettersCache","wrappedGetters","computedObj","computedCache","partial","enableStrictMode","_withCommit","rootState","isRoot","getNamespace","namespaced","parentState","getNestedState","moduleName","local","noNamespace","dispatch","_type","_payload","_options","unifyObjectStyle","commit","makeLocalGetters","makeLocalContext","forEachMutation","registerMutation","forEachAction","rootGetters","_devtoolHook","registerAction","forEachGetter","rawGetter","registerGetter","forEachChild","gettersProxy","splitPos","localType","MUTATIONS_LAYER_ID","ACTIONS_LAYER_ID","INSPECTOR_ID","actionId","addDevtools","pluginDescriptor","setupFn","__VUE_DEVTOOLS_GLOBAL_HOOK__","enableProxy","enableEarlyProxy","__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__","__VUE_DEVTOOLS_PLUGINS__","setupDevtoolsPlugin","label","homepage","logo","packageName","componentStateTypes","addTimelineLayer","color","COLOR_LIME_500","addInspector","treeFilterPlaceholder","getInspectorTree","inspectorId","nodes","flattenStoreForInspectorTree","rootNodes","formatStoreForInspectorTree","getInspectorState","modulePath","nodeId","gettersKeys","storeState","editable","tree","leafKey","_custom","tooltip","canThrow","transformPathsToObjectTree","extractNameFromPath","formatStoreForInspectorState","moduleMap","_children","editInspectorState","subscribe","notifyComponentUpdate","sendInspectorTree","sendInspectorState","addTimelineEvent","layerId","subscribeAction","_time","groupId","subtitle","TAG_NAMESPACED","textColor","backgroundColor","tags","Module","rawModule","runtime","_rawModule","rawState","prototypeAccessors$1","addChild","getChild","hasChild","ModuleCollection","rawRootModule","targetModule","newModule","modules","createStore","Store","this$1$1","rawChildModule","unregister","isRegistered","plugins","_committing","_actionSubscribers","_subscribers","_devtools","prototypeAccessors","injectKey","$store","sub","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","isValidMap","helper","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","doneResult","isGeneratorFunction","genFun","setPrototypeOf","__proto__","awrap","skipTempReset","rootRecord","rval","exception","handle","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","_assertThisInitialized","ReferenceError","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_createClass","staticProps","_extends","_getPrototypeOf","_inherits","subClass","superClass","_objectDestructuringEmpty","_possibleConstructorReturn","_setPrototypeOf","arrayWithHoles","_x","_r","unsupportedIterableToArray","nonIterableRest","_toArray","arrayLikeToArray","iterableToArray","_toPropertyKey","hint","prim","toPrimitive","_isNativeReflectConstruct","construct","sham","_construct","Parent","Class","_wrapNativeSuper","Wrapper","EventTarget","wm","handleEvent","_stopImmediatePropagationFlag","secret"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/3733.7060d1e6bca813125a0c.js b/priv/static/static/js/3733.7060d1e6bca813125a0c.js @@ -0,0 +1,3 @@ +/*! For license information please see 3733.7060d1e6bca813125a0c.js.LICENSE.txt */ +(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[3733],{9382:(e,t,n)=>{"use strict";function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?r(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,s=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){s=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(s)throw o}}return a}}(e,t)||u(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||u(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{Qc:()=>vn,fL:()=>bn,qv:()=>gn,vI:()=>mn,vc:()=>dn});var h=function(){},p={},d={},m=null,v={mark:h,measure:h};try{"undefined"!=typeof window&&(p=window),"undefined"!=typeof document&&(d=document),"undefined"!=typeof MutationObserver&&(m=MutationObserver),"undefined"!=typeof performance&&(v=performance)}catch(e){}var g,b,y,_,w,x=(p.navigator||{}).userAgent,k=void 0===x?"":x,S=p,E=d,O=m,C=v,N=(S.document,!!E.documentElement&&!!E.head&&"function"==typeof E.addEventListener&&"function"==typeof E.createElement),j=~k.indexOf("MSIE")||~k.indexOf("Trident/"),A="svg-inline--fa",L="data-fa-i2svg",M="data-fa-pseudo-element",I="data-prefix",z="data-icon",T="fontawesome-i2svg",R=["HTML","HEAD","STYLE","SCRIPT"],$=function(){try{return!0}catch(e){return!1}}(),P="classic",F="sharp",H=[P,F];function D(e){return new Proxy(e,{get:function(e,t){return t in e?e[t]:e.classic}})}var V=D((s(g={},P,{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands",fak:"kit","fa-kit":"kit"}),s(g,F,{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light"}),g)),U=D((s(b={},P,{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab",kit:"fak"}),s(b,F,{solid:"fass",regular:"fasr",light:"fasl"}),b)),B=D((s(y={},P,{fab:"fa-brands",fad:"fa-duotone",fak:"fa-kit",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"}),s(y,F,{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light"}),y)),W=D((s(_={},P,{"fa-brands":"fab","fa-duotone":"fad","fa-kit":"fak","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"}),s(_,F,{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl"}),_)),Y=/fa(s|r|l|t|d|b|k|ss|sr|sl)?[\-\ ]/,q="fa-layers-text",G=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i,Z=D((s(w={},P,{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"}),s(w,F,{900:"fass",400:"fasr",300:"fasl"}),w)),X=[1,2,3,4,5,6,7,8,9,10],J=X.concat([11,12,13,14,15,16,17,18,19,20]),K=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],Q="duotone-group",ee="primary",te="secondary",ne=new Set;Object.keys(U.classic).map(ne.add.bind(ne)),Object.keys(U.sharp).map(ne.add.bind(ne));var re=[].concat(H,l(ne),["2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",Q,"swap-opacity",ee,te]).concat(X.map((function(e){return"".concat(e,"x")}))).concat(J.map((function(e){return"w-".concat(e)}))),oe=S.FontAwesomeConfig||{};E&&"function"==typeof E.querySelector&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach((function(e){var t=c(e,2),n=t[0],r=t[1],o=function(e){return""===e||"false"!==e&&("true"===e||e)}(function(e){var t=E.querySelector("script["+e+"]");if(t)return t.getAttribute(e)}(n));null!=o&&(oe[r]=o)}));var ae={styleDefault:"solid",familyDefault:"classic",cssPrefix:"fa",replacementClass:A,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};oe.familyPrefix&&(oe.cssPrefix=oe.familyPrefix);var ie=o(o({},ae),oe);ie.autoReplaceSvg||(ie.observeMutations=!1);var se={};Object.keys(ae).forEach((function(e){Object.defineProperty(se,e,{enumerable:!0,set:function(t){ie[e]=t,ce.forEach((function(e){return e(se)}))},get:function(){return ie[e]}})})),Object.defineProperty(se,"familyPrefix",{enumerable:!0,set:function(e){ie.cssPrefix=e,ce.forEach((function(e){return e(se)}))},get:function(){return ie.cssPrefix}}),S.FontAwesomeConfig=se;var ce=[],le=16,ue={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function fe(){for(var e=12,t="";e-- >0;)t+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return t}function he(e){for(var t=[],n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function pe(e){return e.classList?he(e.classList):(e.getAttribute("class")||"").split(" ").filter((function(e){return e}))}function de(e){return"".concat(e).replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function me(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,": ").concat(e[n].trim(),";")}),"")}function ve(e){return e.size!==ue.size||e.x!==ue.x||e.y!==ue.y||e.rotate!==ue.rotate||e.flipX||e.flipY}function ge(){var e="fa",t=A,n=se.cssPrefix,r=se.replacementClass,o=':root, :host {\n --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";\n --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";\n --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";\n --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";\n --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";\n --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";\n --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp";\n --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp";\n --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";\n}\n\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\n overflow: visible;\n box-sizing: content-box;\n}\n\n.svg-inline--fa {\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285705em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n top: 0.25em;\n}\n.svg-inline--fa.fa-fw {\n width: var(--fa-fw-width, 1.25em);\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\n transform: scale(var(--fa-counter-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: 0.625em;\n line-height: 0.1em;\n vertical-align: 0.225em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n line-height: 0.0833333337em;\n vertical-align: 0.125em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n line-height: 0.0714285718em;\n vertical-align: 0.0535714295em;\n}\n\n.fa-lg {\n font-size: 1.25em;\n line-height: 0.05em;\n vertical-align: -0.075em;\n}\n\n.fa-xl {\n font-size: 1.5em;\n line-height: 0.0416666682em;\n vertical-align: -0.125em;\n}\n\n.fa-2xl {\n font-size: 2em;\n line-height: 0.03125em;\n vertical-align: -0.1875em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: var(--fa-li-margin, 2.5em);\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: calc(var(--fa-li-width, 2em) * -1);\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.08em);\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\n}\n\n.fa-pull-left {\n float: left;\n margin-right: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right {\n float: right;\n margin-left: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n -webkit-animation-name: fa-beat;\n animation-name: fa-beat;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n -webkit-animation-name: fa-bounce;\n animation-name: fa-bounce;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n -webkit-animation-name: fa-fade;\n animation-name: fa-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n -webkit-animation-name: fa-beat-fade;\n animation-name: fa-beat-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n -webkit-animation-name: fa-flip;\n animation-name: fa-flip;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n -webkit-animation-name: fa-shake;\n animation-name: fa-shake;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\n animation-duration: var(--fa-animation-duration, 2s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n.fa-bounce,\n.fa-fade,\n.fa-beat-fade,\n.fa-flip,\n.fa-pulse,\n.fa-shake,\n.fa-spin,\n.fa-spin-pulse {\n -webkit-animation-delay: -1ms;\n animation-delay: -1ms;\n -webkit-animation-duration: 1ms;\n animation-duration: 1ms;\n -webkit-animation-iteration-count: 1;\n animation-iteration-count: 1;\n -webkit-transition-delay: 0s;\n transition-delay: 0s;\n -webkit-transition-duration: 0s;\n transition-duration: 0s;\n }\n}\n@-webkit-keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@-webkit-keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@-webkit-keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@-webkit-keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@-webkit-keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@-webkit-keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\n transform: rotate(var(--fa-rotate-angle, none));\n}\n\n.fa-stack {\n display: inline-block;\n vertical-align: middle;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n z-index: var(--fa-stack-z-index, auto);\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n.sr-only,\n.fa-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.sr-only-focusable:not(:focus),\n.fa-sr-only-focusable:not(:focus) {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse,\n.fa-duotone.fa-inverse {\n color: var(--fa-inverse, #fff);\n}';if(n!==e||r!==t){var a=new RegExp("\\.".concat(e,"\\-"),"g"),i=new RegExp("\\--".concat(e,"\\-"),"g"),s=new RegExp("\\.".concat(t),"g");o=o.replace(a,".".concat(n,"-")).replace(i,"--".concat(n,"-")).replace(s,".".concat(r))}return o}var be=!1;function ye(){se.autoAddCss&&!be&&(function(e){if(e&&N){var t=E.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=e;for(var n=E.head.childNodes,r=null,o=n.length-1;o>-1;o--){var a=n[o],i=(a.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(i)>-1&&(r=a)}E.head.insertBefore(t,r)}}(ge()),be=!0)}var _e={mixout:function(){return{dom:{css:ge,insertCss:ye}}},hooks:function(){return{beforeDOMElementCreation:function(){ye()},beforeI2svg:function(){ye()}}}},we=S||{};we.___FONT_AWESOME___||(we.___FONT_AWESOME___={}),we.___FONT_AWESOME___.styles||(we.___FONT_AWESOME___.styles={}),we.___FONT_AWESOME___.hooks||(we.___FONT_AWESOME___.hooks={}),we.___FONT_AWESOME___.shims||(we.___FONT_AWESOME___.shims=[]);var xe=we.___FONT_AWESOME___,ke=[],Se=!1;function Ee(e){N&&(Se?setTimeout(e,0):ke.push(e))}function Oe(e){var t=e.tag,n=e.attributes,r=void 0===n?{}:n,o=e.children,a=void 0===o?[]:o;return"string"==typeof e?de(e):"<".concat(t," ").concat(function(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,'="').concat(de(e[n]),'" ')}),"").trim()}(r),">").concat(a.map(Oe).join(""),"</").concat(t,">")}function Ce(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}N&&((Se=(E.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(E.readyState))||E.addEventListener("DOMContentLoaded",(function e(){E.removeEventListener("DOMContentLoaded",e),Se=1,ke.map((function(e){return e()}))})));var Ne=function(e,t,n,r){var o,a,i,s=Object.keys(e),c=s.length,l=void 0!==r?function(e,t){return function(n,r,o,a){return e.call(t,n,r,o,a)}}(t,r):t;for(void 0===n?(o=1,i=e[s[0]]):(o=0,i=n);o<c;o++)i=l(i,e[a=s[o]],a,e);return i};function je(e){var t=function(e){for(var t=[],n=0,r=e.length;n<r;){var o=e.charCodeAt(n++);if(o>=55296&&o<=56319&&n<r){var a=e.charCodeAt(n++);56320==(64512&a)?t.push(((1023&o)<<10)+(1023&a)+65536):(t.push(o),n--)}else t.push(o)}return t}(e);return 1===t.length?t[0].toString(16):null}function Ae(e){return Object.keys(e).reduce((function(t,n){var r=e[n];return r.icon?t[r.iconName]=r.icon:t[n]=r,t}),{})}function Le(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.skipHooks,a=void 0!==r&&r,i=Ae(t);"function"!=typeof xe.hooks.addPack||a?xe.styles[e]=o(o({},xe.styles[e]||{}),i):xe.hooks.addPack(e,Ae(t)),"fas"===e&&Le("fa",t)}var Me,Ie,ze,Te=xe.styles,Re=xe.shims,$e=(s(Me={},P,Object.values(B.classic)),s(Me,F,Object.values(B.sharp)),Me),Pe=null,Fe={},He={},De={},Ve={},Ue={},Be=(s(Ie={},P,Object.keys(V.classic)),s(Ie,F,Object.keys(V.sharp)),Ie);function We(e,t){var n,r=t.split("-"),o=r[0],a=r.slice(1).join("-");return o!==e||""===a||(n=a,~re.indexOf(n))?null:a}var Ye,qe=function(){var e=function(e){return Ne(Te,(function(t,n,r){return t[r]=Ne(n,e,{}),t}),{})};Fe=e((function(e,t,n){return t[3]&&(e[t[3]]=n),t[2]&&t[2].filter((function(e){return"number"==typeof e})).forEach((function(t){e[t.toString(16)]=n})),e})),He=e((function(e,t,n){return e[n]=n,t[2]&&t[2].filter((function(e){return"string"==typeof e})).forEach((function(t){e[t]=n})),e})),Ue=e((function(e,t,n){var r=t[2];return e[n]=n,r.forEach((function(t){e[t]=n})),e}));var t="far"in Te||se.autoFetchSvg,n=Ne(Re,(function(e,n){var r=n[0],o=n[1],a=n[2];return"far"!==o||t||(o="fas"),"string"==typeof r&&(e.names[r]={prefix:o,iconName:a}),"number"==typeof r&&(e.unicodes[r.toString(16)]={prefix:o,iconName:a}),e}),{names:{},unicodes:{}});De=n.names,Ve=n.unicodes,Pe=Ke(se.styleDefault,{family:se.familyDefault})};function Ge(e,t){return(Fe[e]||{})[t]}function Ze(e,t){return(Ue[e]||{})[t]}function Xe(e){return De[e]||{prefix:null,iconName:null}}function Je(){return Pe}function Ke(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.family,r=void 0===n?P:n,o=V[r][e],a=U[r][e]||U[r][o],i=e in xe.styles?e:null;return a||i||null}Ye=function(e){Pe=Ke(e.styleDefault,{family:se.familyDefault})},ce.push(Ye),qe();var Qe=(s(ze={},P,Object.keys(B.classic)),s(ze,F,Object.keys(B.sharp)),ze);function et(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.skipLookups,o=void 0!==r&&r,a=(s(t={},P,"".concat(se.cssPrefix,"-").concat(P)),s(t,F,"".concat(se.cssPrefix,"-").concat(F)),t),i=null,c=P;(e.includes(a.classic)||e.some((function(e){return Qe.classic.includes(e)})))&&(c=P),(e.includes(a.sharp)||e.some((function(e){return Qe.sharp.includes(e)})))&&(c=F);var l=e.reduce((function(e,t){var n=We(se.cssPrefix,t);if(Te[t]?(t=$e[c].includes(t)?W[c][t]:t,i=t,e.prefix=t):Be[c].indexOf(t)>-1?(i=t,e.prefix=Ke(t,{family:c})):n?e.iconName=n:t!==se.replacementClass&&t!==a.classic&&t!==a.sharp&&e.rest.push(t),!o&&e.prefix&&e.iconName){var r="fa"===i?Xe(e.iconName):{},s=Ze(e.prefix,e.iconName);r.prefix&&(i=null),e.iconName=r.iconName||s||e.iconName,e.prefix=r.prefix||e.prefix,"far"!==e.prefix||Te.far||!Te.fas||se.autoFetchSvg||(e.prefix="fas")}return e}),{prefix:null,iconName:null,rest:[]});return(e.includes("fa-brands")||e.includes("fab"))&&(l.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(l.prefix="fad"),l.prefix||c!==F||!Te.fass&&!se.autoFetchSvg||(l.prefix="fass",l.iconName=Ze(l.prefix,l.iconName)||l.iconName),"fa"!==l.prefix&&"fa"!==i||(l.prefix=Je()||"fas"),l}var tt=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.definitions={}}var t,n;return t=e,n=[{key:"add",value:function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];var a=n.reduce(this._pullDefinitions,{});Object.keys(a).forEach((function(t){e.definitions[t]=o(o({},e.definitions[t]||{}),a[t]),Le(t,a[t]);var n=B.classic[t];n&&Le(n,a[t]),qe()}))}},{key:"reset",value:function(){this.definitions={}}},{key:"_pullDefinitions",value:function(e,t){var n=t.prefix&&t.iconName&&t.icon?{0:t}:t;return Object.keys(n).map((function(t){var r=n[t],o=r.prefix,a=r.iconName,i=r.icon,s=i[2];e[o]||(e[o]={}),s.length>0&&s.forEach((function(t){"string"==typeof t&&(e[o][t]=i)})),e[o][a]=i})),e}}],n&&i(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),nt=[],rt={},ot={},at=Object.keys(ot);function it(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];var a=rt[e]||[];return a.forEach((function(e){t=e.apply(null,[t].concat(r))})),t}function st(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var o=rt[e]||[];o.forEach((function(e){e.apply(null,n)}))}function ct(){var e=arguments[0],t=Array.prototype.slice.call(arguments,1);return ot[e]?ot[e].apply(null,t):void 0}function lt(e){"fa"===e.prefix&&(e.prefix="fas");var t=e.iconName,n=e.prefix||Je();if(t)return t=Ze(n,t)||t,Ce(ut.definitions,n,t)||Ce(xe.styles,n,t)}var ut=new tt,ft={i2svg:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return N?(st("beforeI2svg",e),ct("pseudoElements2svg",e),ct("i2svg",e)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.autoReplaceSvgRoot;!1===se.autoReplaceSvg&&(se.autoReplaceSvg=!0),se.observeMutations=!0,Ee((function(){pt({autoReplaceSvgRoot:t}),st("watch",e)}))}},ht={noAuto:function(){se.autoReplaceSvg=!1,se.observeMutations=!1,st("noAuto")},config:se,dom:ft,parse:{icon:function(e){if(null===e)return null;if("object"===a(e)&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Ze(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&2===e.length){var t=0===e[1].indexOf("fa-")?e[1].slice(3):e[1],n=Ke(e[0]);return{prefix:n,iconName:Ze(n,t)||t}}if("string"==typeof e&&(e.indexOf("".concat(se.cssPrefix,"-"))>-1||e.match(Y))){var r=et(e.split(" "),{skipLookups:!0});return{prefix:r.prefix||Je(),iconName:Ze(r.prefix,r.iconName)||r.iconName}}if("string"==typeof e){var o=Je();return{prefix:o,iconName:Ze(o,e)||e}}}},library:ut,findIconDefinition:lt,toHtml:Oe},pt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.autoReplaceSvgRoot,n=void 0===t?E:t;(Object.keys(xe.styles).length>0||se.autoFetchSvg)&&N&&se.autoReplaceSvg&&ht.dom.i2svg({node:n})};function dt(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map((function(e){return Oe(e)}))}}),Object.defineProperty(e,"node",{get:function(){if(N){var t=E.createElement("div");return t.innerHTML=e.html,t.children}}}),e}function mt(e){var t=e.icons,n=t.main,r=t.mask,a=e.prefix,i=e.iconName,s=e.transform,c=e.symbol,l=e.title,u=e.maskId,f=e.titleId,h=e.extra,p=e.watchable,d=void 0!==p&&p,m=r.found?r:n,v=m.width,g=m.height,b="fak"===a,y=[se.replacementClass,i?"".concat(se.cssPrefix,"-").concat(i):""].filter((function(e){return-1===h.classes.indexOf(e)})).filter((function(e){return""!==e||!!e})).concat(h.classes).join(" "),_={children:[],attributes:o(o({},h.attributes),{},{"data-prefix":a,"data-icon":i,class:y,role:h.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(v," ").concat(g)})},w=b&&!~h.classes.indexOf("fa-fw")?{width:"".concat(v/g*16*.0625,"em")}:{};d&&(_.attributes[L]=""),l&&(_.children.push({tag:"title",attributes:{id:_.attributes["aria-labelledby"]||"title-".concat(f||fe())},children:[l]}),delete _.attributes.title);var x=o(o({},_),{},{prefix:a,iconName:i,main:n,mask:r,maskId:u,transform:s,symbol:c,styles:o(o({},w),h.styles)}),k=r.found&&n.found?ct("generateAbstractMask",x)||{children:[],attributes:{}}:ct("generateAbstractIcon",x)||{children:[],attributes:{}},S=k.children,E=k.attributes;return x.children=S,x.attributes=E,c?function(e){var t=e.prefix,n=e.iconName,r=e.children,a=e.attributes,i=e.symbol,s=!0===i?"".concat(t,"-").concat(se.cssPrefix,"-").concat(n):i;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:o(o({},a),{},{id:s}),children:r}]}]}(x):function(e){var t=e.children,n=e.main,r=e.mask,a=e.attributes,i=e.styles,s=e.transform;if(ve(s)&&n.found&&!r.found){var c={x:n.width/n.height/2,y:.5};a.style=me(o(o({},i),{},{"transform-origin":"".concat(c.x+s.x/16,"em ").concat(c.y+s.y/16,"em")}))}return[{tag:"svg",attributes:a,children:t}]}(x)}function vt(e){var t=e.content,n=e.width,r=e.height,a=e.transform,i=e.title,s=e.extra,c=e.watchable,l=void 0!==c&&c,u=o(o(o({},s.attributes),i?{title:i}:{}),{},{class:s.classes.join(" ")});l&&(u[L]="");var f=o({},s.styles);ve(a)&&(f.transform=function(e){var t=e.transform,n=e.width,r=void 0===n?16:n,o=e.height,a=void 0===o?16:o,i=e.startCentered,s=void 0!==i&&i,c="";return c+=s&&j?"translate(".concat(t.x/le-r/2,"em, ").concat(t.y/le-a/2,"em) "):s?"translate(calc(-50% + ".concat(t.x/le,"em), calc(-50% + ").concat(t.y/le,"em)) "):"translate(".concat(t.x/le,"em, ").concat(t.y/le,"em) "),(c+="scale(".concat(t.size/le*(t.flipX?-1:1),", ").concat(t.size/le*(t.flipY?-1:1),") "))+"rotate(".concat(t.rotate,"deg) ")}({transform:a,startCentered:!0,width:n,height:r}),f["-webkit-transform"]=f.transform);var h=me(f);h.length>0&&(u.style=h);var p=[];return p.push({tag:"span",attributes:u,children:[t]}),i&&p.push({tag:"span",attributes:{class:"sr-only"},children:[i]}),p}function gt(e){var t=e.content,n=e.title,r=e.extra,a=o(o(o({},r.attributes),n?{title:n}:{}),{},{class:r.classes.join(" ")}),i=me(r.styles);i.length>0&&(a.style=i);var s=[];return s.push({tag:"span",attributes:a,children:[t]}),n&&s.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),s}var bt=xe.styles;function yt(e){var t=e[0],n=e[1],r=c(e.slice(4),1)[0];return{found:!0,width:t,height:n,icon:Array.isArray(r)?{tag:"g",attributes:{class:"".concat(se.cssPrefix,"-").concat(Q)},children:[{tag:"path",attributes:{class:"".concat(se.cssPrefix,"-").concat(te),fill:"currentColor",d:r[0]}},{tag:"path",attributes:{class:"".concat(se.cssPrefix,"-").concat(ee),fill:"currentColor",d:r[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:r}}}}var _t={found:!1,width:512,height:512};function wt(e,t){var n=t;return"fa"===t&&null!==se.styleDefault&&(t=Je()),new Promise((function(r,a){if(ct("missingIconAbstract"),"fa"===n){var i=Xe(e)||{};e=i.iconName||e,t=i.prefix||t}if(e&&t&&bt[t]&&bt[t][e])return r(yt(bt[t][e]));!function(e,t){$||se.showMissingIcons||!e||console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}(e,t),r(o(o({},_t),{},{icon:se.showMissingIcons&&e&&ct("missingIconAbstract")||{}}))}))}var xt=function(){},kt=se.measurePerformance&&C&&C.mark&&C.measure?C:{mark:xt,measure:xt},St='FA "6.4.0"',Et=function(e){return kt.mark("".concat(St," ").concat(e," begins")),function(){return function(e){kt.mark("".concat(St," ").concat(e," ends")),kt.measure("".concat(St," ").concat(e),"".concat(St," ").concat(e," begins"),"".concat(St," ").concat(e," ends"))}(e)}},Ot=function(){};function Ct(e){return"string"==typeof(e.getAttribute?e.getAttribute(L):null)}function Nt(e){return E.createElementNS("http://www.w3.org/2000/svg",e)}function jt(e){return E.createElement(e)}function At(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.ceFn,r=void 0===n?"svg"===e.tag?Nt:jt:n;if("string"==typeof e)return E.createTextNode(e);var o=r(e.tag);Object.keys(e.attributes||[]).forEach((function(t){o.setAttribute(t,e.attributes[t])}));var a=e.children||[];return a.forEach((function(e){o.appendChild(At(e,{ceFn:r}))})),o}var Lt={replace:function(e){var t=e[0];if(t.parentNode)if(e[1].forEach((function(e){t.parentNode.insertBefore(At(e),t)})),null===t.getAttribute(L)&&se.keepOriginalSource){var n=E.createComment(function(e){var t=" ".concat(e.outerHTML," ");return"".concat(t,"Font Awesome fontawesome.com ")}(t));t.parentNode.replaceChild(n,t)}else t.remove()},nest:function(e){var t=e[0],n=e[1];if(~pe(t).indexOf(se.replacementClass))return Lt.replace(e);var r=new RegExp("".concat(se.cssPrefix,"-.*"));if(delete n[0].attributes.id,n[0].attributes.class){var o=n[0].attributes.class.split(" ").reduce((function(e,t){return t===se.replacementClass||t.match(r)?e.toSvg.push(t):e.toNode.push(t),e}),{toNode:[],toSvg:[]});n[0].attributes.class=o.toSvg.join(" "),0===o.toNode.length?t.removeAttribute("class"):t.setAttribute("class",o.toNode.join(" "))}var a=n.map((function(e){return Oe(e)})).join("\n");t.setAttribute(L,""),t.innerHTML=a}};function Mt(e){e()}function It(e,t){var n="function"==typeof t?t:Ot;if(0===e.length)n();else{var r=Mt;"async"===se.mutateApproach&&(r=S.requestAnimationFrame||Mt),r((function(){var t=!0===se.autoReplaceSvg?Lt.replace:Lt[se.autoReplaceSvg]||Lt.replace,r=Et("mutate");e.map(t),r(),n()}))}}var zt=!1;function Tt(){zt=!0}function Rt(){zt=!1}var $t=null;function Pt(e){if(O&&se.observeMutations){var t=e.treeCallback,n=void 0===t?Ot:t,r=e.nodeCallback,o=void 0===r?Ot:r,a=e.pseudoElementsCallback,i=void 0===a?Ot:a,s=e.observeMutationsRoot,c=void 0===s?E:s;$t=new O((function(e){if(!zt){var t=Je();he(e).forEach((function(e){if("childList"===e.type&&e.addedNodes.length>0&&!Ct(e.addedNodes[0])&&(se.searchPseudoElements&&i(e.target),n(e.target)),"attributes"===e.type&&e.target.parentNode&&se.searchPseudoElements&&i(e.target.parentNode),"attributes"===e.type&&Ct(e.target)&&~K.indexOf(e.attributeName))if("class"===e.attributeName&&function(e){var t=e.getAttribute?e.getAttribute(I):null,n=e.getAttribute?e.getAttribute(z):null;return t&&n}(e.target)){var r=et(pe(e.target)),a=r.prefix,s=r.iconName;e.target.setAttribute(I,a||t),s&&e.target.setAttribute(z,s)}else(c=e.target)&&c.classList&&c.classList.contains&&c.classList.contains(se.replacementClass)&&o(e.target);var c}))}})),N&&$t.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function Ft(e){var t=e.getAttribute("style"),n=[];return t&&(n=t.split(";").reduce((function(e,t){var n=t.split(":"),r=n[0],o=n.slice(1);return r&&o.length>0&&(e[r]=o.join(":").trim()),e}),{})),n}function Ht(e){var t,n,r=e.getAttribute("data-prefix"),o=e.getAttribute("data-icon"),a=void 0!==e.innerText?e.innerText.trim():"",i=et(pe(e));return i.prefix||(i.prefix=Je()),r&&o&&(i.prefix=r,i.iconName=o),i.iconName&&i.prefix||(i.prefix&&a.length>0&&(i.iconName=(t=i.prefix,n=e.innerText,(He[t]||{})[n]||Ge(i.prefix,je(e.innerText)))),!i.iconName&&se.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(i.iconName=e.firstChild.data)),i}function Dt(e){var t=he(e.attributes).reduce((function(e,t){return"class"!==e.name&&"style"!==e.name&&(e[t.name]=t.value),e}),{}),n=e.getAttribute("title"),r=e.getAttribute("data-fa-title-id");return se.autoA11y&&(n?t["aria-labelledby"]="".concat(se.replacementClass,"-title-").concat(r||fe()):(t["aria-hidden"]="true",t.focusable="false")),t}function Vt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{styleParser:!0},n=Ht(e),r=n.iconName,a=n.prefix,i=n.rest,s=Dt(e),c=it("parseNodeAttributes",{},e),l=t.styleParser?Ft(e):[];return o({iconName:r,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:a,transform:ue,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:i,styles:l,attributes:s}},c)}var Ut=xe.styles;function Bt(e){var t="nest"===se.autoReplaceSvg?Vt(e,{styleParser:!1}):Vt(e);return~t.extra.classes.indexOf(q)?ct("generateLayersText",e,t):ct("generateSvgReplacementMutation",e,t)}var Wt=new Set;function Yt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!N)return Promise.resolve();var n=E.documentElement.classList,r=function(e){return n.add("".concat(T,"-").concat(e))},o=function(e){return n.remove("".concat(T,"-").concat(e))},a=se.autoFetchSvg?Wt:H.map((function(e){return"fa-".concat(e)})).concat(Object.keys(Ut));a.includes("fa")||a.push("fa");var i=[".".concat(q,":not([").concat(L,"])")].concat(a.map((function(e){return".".concat(e,":not([").concat(L,"])")}))).join(", ");if(0===i.length)return Promise.resolve();var s=[];try{s=he(e.querySelectorAll(i))}catch(e){}if(!(s.length>0))return Promise.resolve();r("pending"),o("complete");var c=Et("onTree"),l=s.reduce((function(e,t){try{var n=Bt(t);n&&e.push(n)}catch(e){$||"MissingIcon"===e.name&&console.error(e)}return e}),[]);return new Promise((function(e,n){Promise.all(l).then((function(n){It(n,(function(){r("active"),r("complete"),o("pending"),"function"==typeof t&&t(),c(),e()}))})).catch((function(e){c(),n(e)}))}))}function qt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Bt(e).then((function(e){e&&It([e],t)}))}H.map((function(e){Wt.add("fa-".concat(e))})),Object.keys(V.classic).map(Wt.add.bind(Wt)),Object.keys(V.sharp).map(Wt.add.bind(Wt)),Wt=l(Wt);var Gt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,r=void 0===n?ue:n,a=t.symbol,i=void 0!==a&&a,s=t.mask,c=void 0===s?null:s,l=t.maskId,u=void 0===l?null:l,f=t.title,h=void 0===f?null:f,p=t.titleId,d=void 0===p?null:p,m=t.classes,v=void 0===m?[]:m,g=t.attributes,b=void 0===g?{}:g,y=t.styles,_=void 0===y?{}:y;if(e){var w=e.prefix,x=e.iconName,k=e.icon;return dt(o({type:"icon"},e),(function(){return st("beforeDOMElementCreation",{iconDefinition:e,params:t}),se.autoA11y&&(h?b["aria-labelledby"]="".concat(se.replacementClass,"-title-").concat(d||fe()):(b["aria-hidden"]="true",b.focusable="false")),mt({icons:{main:yt(k),mask:c?yt(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:w,iconName:x,transform:o(o({},ue),r),symbol:i,title:h,maskId:u,titleId:d,extra:{attributes:b,styles:_,classes:v}})}))}},Zt={mixout:function(){return{icon:(e=Gt,function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(t||{}).icon?t:lt(t||{}),a=n.mask;return a&&(a=(a||{}).icon?a:lt(a||{})),e(r,o(o({},n),{},{mask:a}))})};var e},hooks:function(){return{mutationObserverCallbacks:function(e){return e.treeCallback=Yt,e.nodeCallback=qt,e}}},provides:function(e){e.i2svg=function(e){var t=e.node,n=void 0===t?E:t,r=e.callback;return Yt(n,void 0===r?function(){}:r)},e.generateSvgReplacementMutation=function(e,t){var n=t.iconName,r=t.title,o=t.titleId,a=t.prefix,i=t.transform,s=t.symbol,l=t.mask,u=t.maskId,f=t.extra;return new Promise((function(t,h){Promise.all([wt(n,a),l.iconName?wt(l.iconName,l.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then((function(l){var h=c(l,2),p=h[0],d=h[1];t([e,mt({icons:{main:p,mask:d},prefix:a,iconName:n,transform:i,symbol:s,maskId:u,title:r,titleId:o,extra:f,watchable:!0})])})).catch(h)}))},e.generateAbstractIcon=function(e){var t,n=e.children,r=e.attributes,o=e.main,a=e.transform,i=me(e.styles);return i.length>0&&(r.style=i),ve(a)&&(t=ct("generateAbstractTransformGrouping",{main:o,transform:a,containerWidth:o.width,iconWidth:o.width})),n.push(t||o.icon),{children:n,attributes:r}}}},Xt={mixout:function(){return{layer:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.classes,r=void 0===n?[]:n;return dt({type:"layer"},(function(){st("beforeDOMElementCreation",{assembler:e,params:t});var n=[];return e((function(e){Array.isArray(e)?e.map((function(e){n=n.concat(e.abstract)})):n=n.concat(e.abstract)})),[{tag:"span",attributes:{class:["".concat(se.cssPrefix,"-layers")].concat(l(r)).join(" ")},children:n}]}))}}}},Jt={mixout:function(){return{counter:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.title,r=void 0===n?null:n,o=t.classes,a=void 0===o?[]:o,i=t.attributes,s=void 0===i?{}:i,c=t.styles,u=void 0===c?{}:c;return dt({type:"counter",content:e},(function(){return st("beforeDOMElementCreation",{content:e,params:t}),gt({content:e.toString(),title:r,extra:{attributes:s,styles:u,classes:["".concat(se.cssPrefix,"-layers-counter")].concat(l(a))}})}))}}}},Kt={mixout:function(){return{text:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,r=void 0===n?ue:n,a=t.title,i=void 0===a?null:a,s=t.classes,c=void 0===s?[]:s,u=t.attributes,f=void 0===u?{}:u,h=t.styles,p=void 0===h?{}:h;return dt({type:"text",content:e},(function(){return st("beforeDOMElementCreation",{content:e,params:t}),vt({content:e,transform:o(o({},ue),r),title:i,extra:{attributes:f,styles:p,classes:["".concat(se.cssPrefix,"-layers-text")].concat(l(c))}})}))}}},provides:function(e){e.generateLayersText=function(e,t){var n=t.title,r=t.transform,o=t.extra,a=null,i=null;if(j){var s=parseInt(getComputedStyle(e).fontSize,10),c=e.getBoundingClientRect();a=c.width/s,i=c.height/s}return se.autoA11y&&!n&&(o.attributes["aria-hidden"]="true"),Promise.resolve([e,vt({content:e.innerHTML,width:a,height:i,transform:r,title:n,extra:o,watchable:!0})])}}},Qt=new RegExp('"',"ug"),en=[1105920,1112319];function tn(e,t){var n="".concat("data-fa-pseudo-element-pending").concat(t.replace(":","-"));return new Promise((function(r,a){if(null!==e.getAttribute(n))return r();var i,s,c,l=he(e.children).filter((function(e){return e.getAttribute(M)===t}))[0],u=S.getComputedStyle(e,t),f=u.getPropertyValue("font-family").match(G),h=u.getPropertyValue("font-weight"),p=u.getPropertyValue("content");if(l&&!f)return e.removeChild(l),r();if(f&&"none"!==p&&""!==p){var d=u.getPropertyValue("content"),m=~["Sharp"].indexOf(f[2])?F:P,v=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(f[2])?U[m][f[2].toLowerCase()]:Z[m][h],g=function(e){var t,n,r,o,a=e.replace(Qt,""),i=(0,r=(t=a).length,(o=t.charCodeAt(0))>=55296&&o<=56319&&r>1&&(n=t.charCodeAt(1))>=56320&&n<=57343?1024*(o-55296)+n-56320+65536:o),s=i>=en[0]&&i<=en[1],c=2===a.length&&a[0]===a[1];return{value:je(c?a[0]:a),isSecondary:s||c}}(d),b=g.value,y=g.isSecondary,_=f[0].startsWith("FontAwesome"),w=Ge(v,b),x=w;if(_){var k=(s=Ve[i=b],c=Ge("fas",i),s||(c?{prefix:"fas",iconName:c}:null)||{prefix:null,iconName:null});k.iconName&&k.prefix&&(w=k.iconName,v=k.prefix)}if(!w||y||l&&l.getAttribute(I)===v&&l.getAttribute(z)===x)r();else{e.setAttribute(n,x),l&&e.removeChild(l);var O={iconName:null,title:null,titleId:null,prefix:null,transform:ue,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}},C=O.extra;C.attributes[M]=t,wt(w,v).then((function(a){var i=mt(o(o({},O),{},{icons:{main:a,mask:{prefix:null,iconName:null,rest:[]}},prefix:v,iconName:x,extra:C,watchable:!0})),s=E.createElement("svg");"::before"===t?e.insertBefore(s,e.firstChild):e.appendChild(s),s.outerHTML=i.map((function(e){return Oe(e)})).join("\n"),e.removeAttribute(n),r()})).catch(a)}}else r()}))}function nn(e){return Promise.all([tn(e,"::before"),tn(e,"::after")])}function rn(e){return!(e.parentNode===document.head||~R.indexOf(e.tagName.toUpperCase())||e.getAttribute(M)||e.parentNode&&"svg"===e.parentNode.tagName)}function on(e){if(N)return new Promise((function(t,n){var r=he(e.querySelectorAll("*")).filter(rn).map(nn),o=Et("searchPseudoElements");Tt(),Promise.all(r).then((function(){o(),Rt(),t()})).catch((function(){o(),Rt(),n()}))}))}var an=!1,sn=function(e){return e.toLowerCase().split(" ").reduce((function(e,t){var n=t.toLowerCase().split("-"),r=n[0],o=n.slice(1).join("-");if(r&&"h"===o)return e.flipX=!0,e;if(r&&"v"===o)return e.flipY=!0,e;if(o=parseFloat(o),isNaN(o))return e;switch(r){case"grow":e.size=e.size+o;break;case"shrink":e.size=e.size-o;break;case"left":e.x=e.x-o;break;case"right":e.x=e.x+o;break;case"up":e.y=e.y-o;break;case"down":e.y=e.y+o;break;case"rotate":e.rotate=e.rotate+o}return e}),{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0})},cn={mixout:function(){return{parse:{transform:function(e){return sn(e)}}}},hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-transform");return n&&(e.transform=sn(n)),e}}},provides:function(e){e.generateAbstractTransformGrouping=function(e){var t=e.main,n=e.transform,r=e.containerWidth,a=e.iconWidth,i={transform:"translate(".concat(r/2," 256)")},s="translate(".concat(32*n.x,", ").concat(32*n.y,") "),c="scale(".concat(n.size/16*(n.flipX?-1:1),", ").concat(n.size/16*(n.flipY?-1:1),") "),l="rotate(".concat(n.rotate," 0 0)"),u={outer:i,inner:{transform:"".concat(s," ").concat(c," ").concat(l)},path:{transform:"translate(".concat(a/2*-1," -256)")}};return{tag:"g",attributes:o({},u.outer),children:[{tag:"g",attributes:o({},u.inner),children:[{tag:t.icon.tag,children:t.icon.children,attributes:o(o({},t.icon.attributes),u.path)}]}]}}}},ln={x:0,y:0,width:"100%",height:"100%"};function un(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}var fn,hn={hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-mask"),r=n?et(n.split(" ").map((function(e){return e.trim()}))):{prefix:null,iconName:null,rest:[]};return r.prefix||(r.prefix=Je()),e.mask=r,e.maskId=t.getAttribute("data-fa-mask-id"),e}}},provides:function(e){e.generateAbstractMask=function(e){var t,n=e.children,r=e.attributes,a=e.main,i=e.mask,s=e.maskId,c=e.transform,l=a.width,u=a.icon,f=i.width,h=i.icon,p=function(e){var t=e.transform,n=e.iconWidth,r={transform:"translate(".concat(e.containerWidth/2," 256)")},o="translate(".concat(32*t.x,", ").concat(32*t.y,") "),a="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),i="rotate(".concat(t.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(o," ").concat(a," ").concat(i)},path:{transform:"translate(".concat(n/2*-1," -256)")}}}({transform:c,containerWidth:f,iconWidth:l}),d={tag:"rect",attributes:o(o({},ln),{},{fill:"white"})},m=u.children?{children:u.children.map(un)}:{},v={tag:"g",attributes:o({},p.inner),children:[un(o({tag:u.tag,attributes:o(o({},u.attributes),p.path)},m))]},g={tag:"g",attributes:o({},p.outer),children:[v]},b="mask-".concat(s||fe()),y="clip-".concat(s||fe()),_={tag:"mask",attributes:o(o({},ln),{},{id:b,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[d,g]},w={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:(t=h,"g"===t.tag?t.children:[t])},_]};return n.push(w,{tag:"rect",attributes:o({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(b,")")},ln)}),{children:n,attributes:r}}}},pn={provides:function(e){var t=!1;S.matchMedia&&(t=S.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){var e=[],n={fill:"currentColor"},r={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};e.push({tag:"path",attributes:o(o({},n),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var a=o(o({},r),{},{attributeName:"opacity"}),i={tag:"circle",attributes:o(o({},n),{},{cx:"256",cy:"364",r:"28"}),children:[]};return t||i.children.push({tag:"animate",attributes:o(o({},r),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:o(o({},a),{},{values:"1;0;1;1;0;1;"})}),e.push(i),e.push({tag:"path",attributes:o(o({},n),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:t?[]:[{tag:"animate",attributes:o(o({},a),{},{values:"1;0;0;0;0;1;"})}]}),t||e.push({tag:"path",attributes:o(o({},n),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:o(o({},a),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:e}}}};fn={mixoutsTo:ht}.mixoutsTo,nt=[_e,Zt,Xt,Jt,Kt,{hooks:function(){return{mutationObserverCallbacks:function(e){return e.pseudoElementsCallback=on,e}}},provides:function(e){e.pseudoElements2svg=function(e){var t=e.node,n=void 0===t?E:t;se.searchPseudoElements&&on(n)}}},{mixout:function(){return{dom:{unwatch:function(){Tt(),an=!0}}}},hooks:function(){return{bootstrap:function(){Pt(it("mutationObserverCallbacks",{}))},noAuto:function(){$t&&$t.disconnect()},watch:function(e){var t=e.observeMutationsRoot;an?Rt():Pt(it("mutationObserverCallbacks",{observeMutationsRoot:t}))}}}},cn,hn,pn,{hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-symbol"),r=null!==n&&(""===n||n);return e.symbol=r,e}}}}],rt={},Object.keys(ot).forEach((function(e){-1===at.indexOf(e)&&delete ot[e]})),nt.forEach((function(e){var t=e.mixout?e.mixout():{};if(Object.keys(t).forEach((function(e){"function"==typeof t[e]&&(fn[e]=t[e]),"object"===a(t[e])&&Object.keys(t[e]).forEach((function(n){fn[e]||(fn[e]={}),fn[e][n]=t[e][n]}))})),e.hooks){var n=e.hooks();Object.keys(n).forEach((function(e){rt[e]||(rt[e]=[]),rt[e].push(n[e])}))}e.provides&&e.provides(ot)}));var dn=ht.config,mn=ht.library,vn=ht.parse,gn=ht.icon,bn=ht.text},5737:(e,t,n)=>{"use strict";n.d(t,{IQi:()=>s,RKn:()=>r,RrC:()=>o,Tab:()=>i,xVw:()=>a});var r={prefix:"far",iconName:"face-smile-beam",icon:[512,512,[128522,"smile-beam"],"f5b8","M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zm40-89.3l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"]},o={prefix:"far",iconName:"flag",icon:[448,512,[127988,61725],"f024","M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24V64 350.5 400v88c0 13.3 10.7 24 24 24s24-10.7 24-24V388l80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52V24zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8V334.7l-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5v-237z"]},a={prefix:"far",iconName:"bookmark",icon:[384,512,[128278,61591],"f02e","M0 48C0 21.5 21.5 0 48 0l0 48V441.4l130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4V48H48V0H336c26.5 0 48 21.5 48 48V488c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488V48z"]},i={prefix:"far",iconName:"star",icon:[576,512,[11088,61446],"f005","M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.6 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"]},s={prefix:"far",iconName:"window-minimize",icon:[512,512,[128469],"f2d1","M24 432c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z"]}},84131:(e,t,n)=>{"use strict";n.d(t,{$Wj:()=>R,A35:()=>Oe,Acd:()=>L,Aq:()=>O,Bg$:()=>ce,CPW:()=>P,E1P:()=>ve,EQ8:()=>Re,EfQ:()=>S,Elv:()=>q,FKd:()=>Pe,FPD:()=>xe,FU$:()=>ee,FVb:()=>E,Fwd:()=>$e,GTN:()=>m,G_j:()=>U,HLz:()=>de,I7k:()=>o,IA$:()=>V,IBq:()=>r,IJ7:()=>h,ILF:()=>A,IwR:()=>X,IyC:()=>We,J9Y:()=>se,Kl4:()=>ne,L4e:()=>Be,LEp:()=>Fe,Lh7:()=>d,Mdf:()=>Z,Mm7:()=>Y,N7g:()=>Ve,NBC:()=>Ee,OwZ:()=>ke,RKn:()=>c,RP7:()=>Ae,RrC:()=>y,S3c:()=>De,Sbq:()=>l,TTL:()=>Te,Tab:()=>z,UJf:()=>u,UXu:()=>Me,V9$:()=>i,VE0:()=>Le,VmB:()=>F,X8G:()=>b,Xcf:()=>k,Xig:()=>ze,Xjp:()=>K,XsY:()=>w,Y9i:()=>$,YHc:()=>a,Zrf:()=>_,_1N:()=>W,_tD:()=>Ce,aC2:()=>me,aQp:()=>D,b7W:()=>re,byT:()=>x,cLY:()=>H,cNd:()=>fe,cf$:()=>le,ctA:()=>je,dT$:()=>B,eHv:()=>He,g4A:()=>M,gMD:()=>pe,gPx:()=>I,gmr:()=>_e,iV1:()=>ae,ioV:()=>C,jLD:()=>s,k0d:()=>J,kQp:()=>p,klh:()=>G,kwI:()=>ue,lCn:()=>oe,lXL:()=>f,mTx:()=>N,nNP:()=>ge,ptq:()=>we,py1:()=>v,q7m:()=>ie,qO$:()=>Ie,qmU:()=>he,r8p:()=>Se,sqG:()=>te,u8Q:()=>Ue,wn1:()=>ye,x5v:()=>Ne,xVw:()=>j,xf3:()=>T,xiG:()=>g,xiy:()=>Q,yGG:()=>be});var r={prefix:"fas",iconName:"at",icon:[512,512,[61946],"40","M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z"]},o={prefix:"fas",iconName:"trash-can",icon:[448,512,[61460,"trash-alt"],"f2ed","M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z"]},a={prefix:"fas",iconName:"info",icon:[192,512,[],"f129","M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z"]},i={prefix:"fas",iconName:"down-left-and-up-right-to-center",icon:[512,512,["compress-alt"],"f422","M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H296c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272H216c13.3 0 24 10.7 24 24V440c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z"]},s={prefix:"fas",iconName:"right-from-bracket",icon:[512,512,["sign-out-alt"],"f2f5","M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z"]},c={prefix:"fas",iconName:"face-smile-beam",icon:[512,512,[128522,"smile-beam"],"f5b8","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z"]},l={prefix:"fas",iconName:"angles-down",icon:[448,512,["angle-double-down"],"f103","M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z"]},u={prefix:"fas",iconName:"pencil",icon:[512,512,[9999,61504,"pencil-alt"],"f303","M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z"]},f={prefix:"fas",iconName:"comments",icon:[640,512,[128490,61670],"f086","M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z"]},h={prefix:"fas",iconName:"circle-notch",icon:[512,512,[],"f1ce","M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z"]},p={prefix:"fas",iconName:"paw",icon:[512,512,[],"f1b0","M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z"]},d={prefix:"fas",iconName:"reply",icon:[512,512,[61714,"mail-reply"],"f3e5","M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z"]},m={prefix:"fas",iconName:"compass",icon:[512,512,[129517],"f14e","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"]},v={prefix:"fas",iconName:"laptop-code",icon:[640,512,[],"f5fc","M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z"]},g={prefix:"fas",iconName:"bars",icon:[448,512,["navicon"],"f0c9","M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},b={prefix:"fas",iconName:"lightbulb",icon:[384,512,[128161],"f0eb","M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z"]},y={prefix:"fas",iconName:"flag",icon:[448,512,[127988,61725],"f024","M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V64 368 480c0 17.7 14.3 32 32 32s32-14.3 32-32V352l64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48V32z"]},_={prefix:"fas",iconName:"list",icon:[512,512,["list-squares"],"f03a","M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z"]},w={prefix:"fas",iconName:"paintbrush",icon:[576,512,[128396,"paint-brush"],"f1fc","M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H208c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z"]},x={prefix:"fas",iconName:"lock",icon:[448,512,[128274],"f023","M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z"]},k={prefix:"fas",iconName:"pen-to-square",icon:[512,512,["edit"],"f044","M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z"]},S={prefix:"fas",iconName:"share-nodes",icon:[448,512,["share-alt"],"f1e0","M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z"]},E={prefix:"fas",iconName:"users",icon:[640,512,[],"f0c0","M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z"]},O={prefix:"fas",iconName:"eye-slash",icon:[640,512,[],"f070","M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z"]},C={prefix:"fas",iconName:"hand",icon:[512,512,[129306,9995,"hand-paper"],"f256","M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z"]},N={prefix:"fas",iconName:"chevron-up",icon:[512,512,[],"f077","M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z"]},j={prefix:"fas",iconName:"bookmark",icon:[384,512,[128278,61591],"f02e","M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z"]},A={prefix:"fas",iconName:"user",icon:[448,512,[128100,62144],"f007","M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z"]},L={prefix:"fas",iconName:"bullhorn",icon:[512,512,[128226,128363],"f0a1","M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z"]},M={prefix:"fas",iconName:"globe",icon:[512,512,[127760],"f0ac","M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z"]},I={prefix:"fas",iconName:"ban",icon:[512,512,[128683,"cancel"],"f05e","M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z"]},z={prefix:"fas",iconName:"star",icon:[576,512,[11088,61446],"f005","M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z"]},T={prefix:"fas",iconName:"server",icon:[512,512,[],"f233","M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z"]},R={prefix:"fas",iconName:"right-to-bracket",icon:[512,512,["sign-in-alt"],"f2f6","M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z"]},$={prefix:"fas",iconName:"file-arrow-up",icon:[384,512,["file-upload"],"f574","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z"]},P={prefix:"fas",iconName:"square-plus",icon:[448,512,[61846,"plus-square"],"f0fe","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"]},F={prefix:"fas",iconName:"image",icon:[512,512,[],"f03e","M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"]},H={prefix:"fas",iconName:"angles-right",icon:[512,512,[187,"angle-double-right"],"f101","M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z"]},D={prefix:"fas",iconName:"circle-play",icon:[512,512,[61469,"play-circle"],"f144","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z"]},V={prefix:"fas",iconName:"box-open",icon:[640,512,[],"f49e","M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z"]},U={prefix:"fas",iconName:"filter",icon:[512,512,[],"f0b0","M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z"]},B={prefix:"fas",iconName:"code",icon:[640,512,[],"f121","M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"]},W={prefix:"fas",iconName:"lock-open",icon:[576,512,[],"f3c1","M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z"]},Y={prefix:"fas",iconName:"square-poll-horizontal",icon:[448,512,["poll-h"],"f682","M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z"]},q={prefix:"fas",iconName:"basketball",icon:[512,512,[127936,"basketball-ball"],"f434","M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z"]},G={prefix:"fas",iconName:"wrench",icon:[512,512,[128295],"f0ad","M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"]},Z={prefix:"fas",iconName:"eye",icon:[576,512,[128065],"f06e","M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z"]},X={prefix:"fas",iconName:"pen",icon:[512,512,[128394],"f304","M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z"]},J={prefix:"fas",iconName:"bus",icon:[576,512,[128653],"f207","M288 0C422.4 0 512 35.2 512 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H192v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C64 35.2 153.6 0 288 0zM128 160v96c0 17.7 14.3 32 32 32H272V128H160c-17.7 0-32 14.3-32 32zM304 288H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H304V288zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16s7.2 16 16 16H368c8.8 0 16-7.2 16-16z"]},K={prefix:"fas",iconName:"up-right-from-square",icon:[512,512,["external-link-alt"],"f35d","M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z"]},Q={prefix:"fas",iconName:"cake-candles",icon:[448,512,[127874,"birthday-cake","cake"],"f1fd","M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z"]},ee={prefix:"fas",iconName:"envelope",icon:[512,512,[128386,9993,61443],"f0e0","M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"]},te={prefix:"fas",iconName:"circle-info",icon:[512,512,["info-circle"],"f05a","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"]},ne={prefix:"fas",iconName:"minus",icon:[448,512,[8211,8722,10134,"subtract"],"f068","M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"]},re={prefix:"fas",iconName:"gear",icon:[512,512,[9881,"cog"],"f013","M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z"]},oe={prefix:"fas",iconName:"folder-tree",icon:[576,512,[],"f802","M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z"]},ae={prefix:"fas",iconName:"ellipsis-vertical",icon:[128,512,["ellipsis-v"],"f142","M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z"]},ie={prefix:"fas",iconName:"download",icon:[512,512,[],"f019","M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"]},se={prefix:"fas",iconName:"house",icon:[576,512,[127968,63498,63500,"home","home-alt","home-lg-alt"],"f015","M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z"]},ce={prefix:"fas",iconName:"stop",icon:[384,512,[9209],"f04d","M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z"]},le={prefix:"fas",iconName:"upload",icon:[512,512,[],"f093","M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"]},ue={prefix:"fas",iconName:"file-arrow-down",icon:[384,512,["file-download"],"f56d","M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z"]},fe={prefix:"fas",iconName:"ellipsis",icon:[448,512,["ellipsis-h"],"f141","M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z"]},he={prefix:"fas",iconName:"bell",icon:[448,512,[128276,61602],"f0f3","M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z"]},pe={prefix:"fas",iconName:"file",icon:[384,512,[128196,128459,61462],"f15b","M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z"]},de={prefix:"fas",iconName:"gauge-high",icon:[512,512,[62461,"tachometer-alt","tachometer-alt-fast"],"f625","M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"]},me={prefix:"fas",iconName:"bars-staggered",icon:[512,512,["reorder","stream"],"f550","M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},ve={prefix:"fas",iconName:"ice-cream",icon:[448,512,[127848],"f810","M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16H80c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H368c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288H96z"]},ge={prefix:"fas",iconName:"link",icon:[640,512,[128279,"chain"],"f0c1","M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z"]},be={prefix:"fas",iconName:"font",icon:[448,512,[],"f031","M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z"]},ye={prefix:"fas",iconName:"magnifying-glass",icon:[512,512,[128269,"search"],"f002","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"]},_e={prefix:"fas",iconName:"suitcase-rolling",icon:[384,512,[],"f5c1","M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z"]},we={prefix:"fas",iconName:"chevron-down",icon:[512,512,[],"f078","M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"]},xe={prefix:"fas",iconName:"arrow-up",icon:[384,512,[8593],"f062","M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"]},ke={prefix:"fas",iconName:"circle-half-stroke",icon:[512,512,[9680,"adjust"],"f042","M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z"]},Se={prefix:"fas",iconName:"plus",icon:[448,512,[10133,61543,"add"],"2b","M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z"]},Ee={prefix:"fas",iconName:"xmark",icon:[384,512,[128473,10005,10006,10060,215,"close","multiply","remove","times"],"f00d","M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"]},Oe={prefix:"fas",iconName:"chevron-left",icon:[320,512,[9001],"f053","M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z"]},Ce={prefix:"fas",iconName:"chevron-right",icon:[320,512,[9002],"f054","M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z"]},Ne={prefix:"fas",iconName:"retweet",icon:[576,512,[],"f079","M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z"]},je={prefix:"fas",iconName:"face-smile",icon:[512,512,[128578,"smile"],"f118","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"]},Ae={prefix:"fas",iconName:"thumbtack",icon:[384,512,[128204,128392,"thumb-tack"],"f08d","M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z"]},Le={prefix:"fas",iconName:"robot",icon:[640,512,[129302],"f544","M320 0c17.7 0 32 14.3 32 32V96H472c39.8 0 72 32.2 72 72V440c0 39.8-32.2 72-72 72H168c-39.8 0-72-32.2-72-72V168c0-39.8 32.2-72 72-72H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z"]},Me={prefix:"fas",iconName:"angles-left",icon:[512,512,[171,"angle-double-left"],"f100","M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z"]},Ie={prefix:"fas",iconName:"clock-rotate-left",icon:[512,512,["history"],"f1da","M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z"]},ze={prefix:"fas",iconName:"music",icon:[512,512,[127925],"f001","M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z"]},Te={prefix:"fas",iconName:"up-right-and-down-left-from-center",icon:[512,512,["expand-alt"],"f424","M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512H24c-13.3 0-24-10.7-24-24V344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z"]},Re={prefix:"fas",iconName:"circle-plus",icon:[512,512,["plus-circle"],"f055","M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"]},$e={prefix:"fas",iconName:"rss",icon:[448,512,["feed"],"f09e","M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z"]},Pe={prefix:"fas",iconName:"user-plus",icon:[640,512,[],"f234","M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z"]},Fe={prefix:"fas",iconName:"check",icon:[448,512,[10003,10004],"f00c","M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"]},He={prefix:"fas",iconName:"triangle-exclamation",icon:[512,512,[9888,"exclamation-triangle","warning"],"f071","M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"]},De={prefix:"fas",iconName:"align-right",icon:[448,512,[],"f038","M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z"]},Ve={prefix:"fas",iconName:"magnifying-glass-plus",icon:[512,512,["search-plus"],"f00e","M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"]},Ue={prefix:"fas",iconName:"thumbs-up",icon:[512,512,[128077,61575],"f164","M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z"]},Be={prefix:"fas",iconName:"note-sticky",icon:[448,512,[62026,"sticky-note"],"f249","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H288V368c0-26.5 21.5-48 48-48H448V96c0-35.3-28.7-64-64-64H64zM448 352H402.7 336c-8.8 0-16 7.2-16 16v66.7V480l32-32 64-64 32-32z"]},We={prefix:"fas",iconName:"video",icon:[576,512,["video-camera"],"f03d","M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z"]}},57810:(e,t,n)=>{"use strict";n.d(t,{GN:()=>k,NH:()=>S});var r=n(9382),o=n(66252);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function u(e){return function(e){if(Array.isArray(e))return f(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var h,p="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{},d={exports:{}};h=d,function(e){var t=function(e,n,r){if(!s(n)||l(n)||u(n)||f(n)||i(n))return n;var o,a=0,h=0;if(c(n))for(o=[],h=n.length;a<h;a++)o.push(t(e,n[a],r));else for(var p in o={},n)Object.prototype.hasOwnProperty.call(n,p)&&(o[e(p,r)]=t(e,n[p],r));return o},n=function(e){return p(e)?e:(e=e.replace(/[\-_\s]+(.)?/g,(function(e,t){return t?t.toUpperCase():""}))).substr(0,1).toLowerCase()+e.substr(1)},r=function(e){var t=n(e);return t.substr(0,1).toUpperCase()+t.substr(1)},o=function(e,t){return function(e,t){var n=(t=t||{}).separator||"_",r=t.split||/(?=[A-Z])/;return e.split(r).join(n)}(e,t).toLowerCase()},a=Object.prototype.toString,i=function(e){return"function"==typeof e},s=function(e){return e===Object(e)},c=function(e){return"[object Array]"==a.call(e)},l=function(e){return"[object Date]"==a.call(e)},u=function(e){return"[object RegExp]"==a.call(e)},f=function(e){return"[object Boolean]"==a.call(e)},p=function(e){return(e-=0)==e},d=function(e,t){var n=t&&"process"in t?t.process:t;return"function"!=typeof n?e:function(t,r){return n(t,e,r)}},m={camelize:n,decamelize:o,pascalize:r,depascalize:o,camelizeKeys:function(e,r){return t(d(n,r),e)},decamelizeKeys:function(e,n){return t(d(o,n),e,n)},pascalizeKeys:function(e,n){return t(d(r,n),e)},depascalizeKeys:function(){return this.decamelizeKeys.apply(this,arguments)}};h.exports?h.exports=m:e.humps=m}(p);var m=d.exports,v=["class","style"];function g(e){return e.split(";").map((function(e){return e.trim()})).filter((function(e){return e})).reduce((function(e,t){var n=t.indexOf(":"),r=m.camelize(t.slice(0,n)),o=t.slice(n+1).trim();return e[r]=o,e}),{})}function b(e){return e.split(/\s+/).reduce((function(e,t){return e[t]=!0,e}),{})}function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"==typeof e)return e;var r=(e.children||[]).map((function(e){return y(e)})),a=Object.keys(e.attributes||{}).reduce((function(t,n){var r=e.attributes[n];switch(n){case"class":t.class=b(r);break;case"style":t.style=g(r);break;default:t.attrs[n]=r}return t}),{attrs:{},class:{},style:{}});n.class;var s=n.style,c=void 0===s?{}:s,u=l(n,v);return(0,o.h)(e.tag,i(i(i({},t),{},{class:a.class,style:i(i({},a.style),c)},a.attrs),u),r)}var _=!1;try{_=!0}catch(e){}function w(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?c({},e,t):{}}function x(e){return e&&"object"===s(e)&&e.prefix&&e.iconName&&e.icon?e:r.Qc.icon?r.Qc.icon(e):null===e?null:"object"===s(e)&&e.prefix&&e.iconName?e:Array.isArray(e)&&2===e.length?{prefix:e[0],iconName:e[1]}:"string"==typeof e?{prefix:"fas",iconName:e}:void 0}var k=(0,o.aZ)({name:"FontAwesomeIcon",props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:[Boolean,String],default:!1,validator:function(e){return[!0,!1,"horizontal","vertical","both"].indexOf(e)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(e){return["right","left"].indexOf(e)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(e){return[90,180,270].indexOf(Number.parseInt(e,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(e){return["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(e)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},inverse:{type:Boolean,default:!1},bounce:{type:Boolean,default:!1},shake:{type:Boolean,default:!1},beat:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},beatFade:{type:Boolean,default:!1},flash:{type:Boolean,default:!1},spinPulse:{type:Boolean,default:!1},spinReverse:{type:Boolean,default:!1}},setup:function(e,t){var n=t.attrs,a=(0,o.Fl)((function(){return x(e.icon)})),s=(0,o.Fl)((function(){return w("classes",function(e){var t,n=(c(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip":!0===e.flip,"fa-flip-horizontal":"horizontal"===e.flip||"both"===e.flip,"fa-flip-vertical":"vertical"===e.flip||"both"===e.flip},"fa-".concat(e.size),null!==e.size),c(t,"fa-rotate-".concat(e.rotation),null!==e.rotation),c(t,"fa-pull-".concat(e.pull),null!==e.pull),c(t,"fa-swap-opacity",e.swapOpacity),c(t,"fa-bounce",e.bounce),c(t,"fa-shake",e.shake),c(t,"fa-beat",e.beat),c(t,"fa-fade",e.fade),c(t,"fa-beat-fade",e.beatFade),c(t,"fa-flash",e.flash),c(t,"fa-spin-pulse",e.spinPulse),c(t,"fa-spin-reverse",e.spinReverse),t);return Object.keys(n).map((function(e){return n[e]?e:null})).filter((function(e){return e}))}(e))})),l=(0,o.Fl)((function(){return w("transform","string"==typeof e.transform?r.Qc.transform(e.transform):e.transform)})),u=(0,o.Fl)((function(){return w("mask",x(e.mask))})),f=(0,o.Fl)((function(){return(0,r.qv)(a.value,i(i(i(i({},s.value),l.value),u.value),{},{symbol:e.symbol,title:e.title}))}));(0,o.YP)(f,(function(e){if(!e)return function(){var e;!_&&console&&"function"==typeof console.error&&(e=console).error.apply(e,arguments)}("Could not find one or more icon(s)",a.value,u.value)}),{immediate:!0});var h=(0,o.Fl)((function(){return f.value?y(f.value.abstract[0],{},n):null}));return function(){return h.value}}}),S=(0,o.aZ)({name:"FontAwesomeLayers",props:{fixedWidth:{type:Boolean,default:!1}},setup:function(e,t){var n=t.slots,a=r.vc.familyPrefix,i=(0,o.Fl)((function(){return["".concat(a,"-layers")].concat(u(e.fixedWidth?["".concat(a,"-fw")]:[]))}));return function(){return(0,o.h)("div",{class:i.value},n.default?n.default():[])}}});(0,o.aZ)({name:"FontAwesomeLayersText",props:{value:{type:[String,Number],default:""},transform:{type:[String,Object],default:null},counter:{type:Boolean,default:!1},position:{type:String,default:null,validator:function(e){return["bottom-left","bottom-right","top-left","top-right"].indexOf(e)>-1}}},setup:function(e,t){var n=t.attrs,a=r.vc.familyPrefix,s=(0,o.Fl)((function(){return w("classes",[].concat(u(e.counter?["".concat(a,"-layers-counter")]:[]),u(e.position?["".concat(a,"-layers-").concat(e.position)]:[])))})),c=(0,o.Fl)((function(){return w("transform","string"==typeof e.transform?r.Qc.transform(e.transform):e.transform)})),l=(0,o.Fl)((function(){var t=(0,r.fL)(e.value.toString(),i(i({},c.value),s.value)).abstract;return e.counter&&(t[0].attributes.class=t[0].attributes.class.replace("fa-layers-text","")),t[0]})),f=(0,o.Fl)((function(){return y(l.value,{},n)}));return function(){return f.value}}})},782:(e,t,n)=>{"use strict";n.d(t,{Z:()=>w});class r{constructor(e){this.id=-1,this.nativePointer=e,this.pageX=e.pageX,this.pageY=e.pageY,this.clientX=e.clientX,this.clientY=e.clientY,self.Touch&&e instanceof Touch?this.id=e.identifier:o(e)&&(this.id=e.pointerId)}getCoalesced(){return"getCoalescedEvents"in this.nativePointer?this.nativePointer.getCoalescedEvents().map((e=>new r(e))):[this]}}const o=e=>self.PointerEvent&&e instanceof PointerEvent,a=()=>{};!function(e,t){void 0===t&&(t={});var n=t.insertAt;if("undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}("pinch-zoom {\n display: block;\n overflow: hidden;\n touch-action: none;\n --scale: 1;\n --x: 0;\n --y: 0;\n}\n\npinch-zoom > * {\n transform: translate(var(--x), var(--y)) scale(var(--scale));\n transform-origin: 0 0;\n will-change: transform;\n}\n");const i="min-scale",s="allow-pan-min-scale",c="reset-to-min-scale-limit",l="reach-min-scale-strategy",u="stop-propagate-handled";function f(e,t){return t?Math.sqrt((t.clientX-e.clientX)**2+(t.clientY-e.clientY)**2):0}function h(e,t){return t?{clientX:(e.clientX+t.clientX)/2,clientY:(e.clientY+t.clientY)/2}:e}function p(e,t){return"number"==typeof e?e:e.trimRight().endsWith("%")?t*parseFloat(e)/100:parseFloat(e)}let d;function m(){return d||(d=document.createElementNS("http://www.w3.org/2000/svg","svg"))}function v(){return m().createSVGMatrix()}function g(){return m().createSVGPoint()}const b=.01,y=(e,t)=>Math.round(100*e)-Math.round(100*t);class _ extends HTMLElement{constructor(){super(),this._transform=v(),new MutationObserver((()=>this._stageElChange())).observe(this,{childList:!0});const e=new class{constructor(e,{start:t=(()=>!0),move:n=a,end:i=a,rawUpdates:s=!1}={}){this._element=e,this.startPointers=[],this.currentPointers=[],this._pointerStart=e=>{0===e.button&&this._triggerPointerStart(new r(e),e)&&(o(e)?((e.target&&"setPointerCapture"in e.target?e.target:this._element).setPointerCapture(e.pointerId),this._element.addEventListener(this._rawUpdates?"pointerrawupdate":"pointermove",this._move),this._element.addEventListener("pointerup",this._pointerEnd),this._element.addEventListener("pointercancel",this._pointerEnd)):(window.addEventListener("mousemove",this._move),window.addEventListener("mouseup",this._pointerEnd)))},this._touchStart=e=>{for(const t of Array.from(e.changedTouches))this._triggerPointerStart(new r(t),e)},this._move=e=>{const t=this.currentPointers.slice(),n="changedTouches"in e?Array.from(e.changedTouches).map((e=>new r(e))):[new r(e)],o=[];for(const e of n){const t=this.currentPointers.findIndex((t=>t.id===e.id));-1!==t&&(o.push(e),this.currentPointers[t]=e)}0!==o.length&&this._moveCallback(t,o,e)},this._triggerPointerEnd=(e,t)=>{const n=this.currentPointers.findIndex((t=>t.id===e.id));if(-1===n)return!1;this.currentPointers.splice(n,1),this.startPointers.splice(n,1);const r="touchcancel"===t.type||"pointercancel"===t.type;return this._endCallback(e,t,r),!0},this._pointerEnd=e=>{if(this._triggerPointerEnd(new r(e),e))if(o(e)){if(this.currentPointers.length)return;this._element.removeEventListener(this._rawUpdates?"pointerrawupdate":"pointermove",this._move),this._element.removeEventListener("pointerup",this._pointerEnd),this._element.removeEventListener("pointercancel",this._pointerEnd)}else window.removeEventListener("mousemove",this._move),window.removeEventListener("mouseup",this._pointerEnd)},this._touchEnd=e=>{for(const t of Array.from(e.changedTouches))this._triggerPointerEnd(new r(t),e)},this._startCallback=t,this._moveCallback=n,this._endCallback=i,this._rawUpdates=s&&"onpointerrawupdate"in window,self.PointerEvent?this._element.addEventListener("pointerdown",this._pointerStart):(this._element.addEventListener("mousedown",this._pointerStart),this._element.addEventListener("touchstart",this._touchStart),this._element.addEventListener("touchmove",this._move),this._element.addEventListener("touchend",this._touchEnd),this._element.addEventListener("touchcancel",this._touchEnd))}stop(){this._element.removeEventListener("pointerdown",this._pointerStart),this._element.removeEventListener("mousedown",this._pointerStart),this._element.removeEventListener("touchstart",this._touchStart),this._element.removeEventListener("touchmove",this._move),this._element.removeEventListener("touchend",this._touchEnd),this._element.removeEventListener("touchcancel",this._touchEnd),this._element.removeEventListener(this._rawUpdates?"pointerrawupdate":"pointermove",this._move),this._element.removeEventListener("pointerup",this._pointerEnd),this._element.removeEventListener("pointercancel",this._pointerEnd),window.removeEventListener("mousemove",this._move),window.removeEventListener("mouseup",this._pointerEnd)}_triggerPointerStart(e,t){return!!this._startCallback(e,t)&&(this.currentPointers.push(e),this.startPointers.push(e),!0)}}(this,{start:(t,n)=>{if(2===e.currentPointers.length||!this._positioningEl)return!1;const r=e.currentPointers.length+1===1;return!(r&&!this._allowPan())&&(this._maybeStopPropagate(n),r||this._maybeEmitCancel([t,...e.currentPointers])),n.preventDefault(),!0},move:(t,n,r)=>{this._onPointerMove(t,e.currentPointers,r)},end:(t,n)=>{this._onPointerEnd(t,e.currentPointers,n)}});this.addEventListener("wheel",(e=>this._onWheel(e))),this.addEventListener("click",(t=>this._onClick(t,e)))}static get observedAttributes(){return[i]}attributeChangedCallback(e,t,n){e===i&&this.scale<this.minScale&&this.setTransform({scale:this.minScale})}get minScale(){const e=this.getAttribute(i);if(!e)return b;const t=parseFloat(e);return Number.isFinite(t)?Math.max(b,t):b}set minScale(e){this.setAttribute(i,String(e))}get reachMinScaleStrategy(){return this.getAttribute(l)||"none"}set reachMinScaleStrategy(e){this.setAttribute(l,e)}get allowPanMinScale(){const e=this.getAttribute(s);if(!e)return-1;const t=parseFloat(e);return Number.isFinite(t)?Math.max(-1,t):-1}set allowPanMinScale(e){this.setAttribute(s,String(e))}get resetToMinScaleLimit(){const e=this.getAttribute(c);if(!e)return-1;const t=parseFloat(e);return Number.isFinite(t)?Math.max(-1,t):-1}set resetToMinScaleLimit(e){this.setAttribute(c,String(e))}get stopPropagateHandled(){return this.hasAttribute(u)}set stopPropagateHandled(e){e?this.setAttribute(u,""):this.removeAttribute(u)}connectedCallback(){this._stageElChange()}get x(){return this._transform.e}get y(){return this._transform.f}get scale(){return this._transform.a}scaleTo(e,t={}){let{originX:n=0,originY:r=0}=t;const{relativeTo:o="content",allowChangeEvent:a=!1}=t,i="content"===o?this._positioningEl:this;if(!i||!this._positioningEl)return void this.setTransform({scale:e,allowChangeEvent:a});const s=i.getBoundingClientRect();if(n=p(n,s.width),r=p(r,s.height),"content"===o)n+=this.x,r+=this.y;else{const e=this._positioningEl.getBoundingClientRect();n-=e.left,r-=e.top}this._applyChange({allowChangeEvent:a,originX:n,originY:r,scaleDiff:e/this.scale})}setTransform(e={}){const{scale:t=this.scale,allowChangeEvent:n=!1}=e;let{x:r=this.x,y:o=this.y}=e;if(!this._positioningEl)return void this._updateTransform(t,r,o,n);const a=this.getBoundingClientRect(),i=this._positioningEl.getBoundingClientRect();if(!a.width||!a.height)return void this._updateTransform(t,r,o,n);let s=g();s.x=i.left-a.left,s.y=i.top-a.top;let c=g();c.x=i.width+s.x,c.y=i.height+s.y;const l=v().translate(r,o).scale(t).multiply(this._transform.inverse());s=s.matrixTransform(l),c=c.matrixTransform(l),s.x>a.width?r+=a.width-s.x:c.x<0&&(r+=-c.x),s.y>a.height?o+=a.height-s.y:c.y<0&&(o+=-c.y),this._updateTransform(t,r,o,n)}_updateTransform(e,t,n,r){if(e<this.minScale&&(e=this.minScale),(e!==this.scale||t!==this.x||n!==this.y)&&(this._transform.e=t,this._transform.f=n,this._transform.d=this._transform.a=e,this.style.setProperty("--x",this.x+"px"),this.style.setProperty("--y",this.y+"px"),this.style.setProperty("--scale",this.scale+""),r)){const e=new Event("change",{bubbles:!0});this.dispatchEvent(e)}}_stageElChange(){this._positioningEl=void 0,0!==this.children.length&&(this._positioningEl=this.children[0],this.children.length>1&&console.warn("<pinch-zoom> must not have more than one child."),this.setTransform({allowChangeEvent:!0}))}_onWheel(e){if(!this._positioningEl)return;e.preventDefault();const t=this._positioningEl.getBoundingClientRect();let{deltaY:n}=e;const{ctrlKey:r,deltaMode:o}=e;1===o&&(n*=15);const a=1-n/(r?100:300),i=a<1;this._applyChange({scaleDiff:a,originX:e.clientX-t.left,originY:e.clientY-t.top,allowChangeEvent:!0}),i&&this._maybeResetScale()}_onPointerMove(e,t,n){if(!this._positioningEl)return;if(e.length<2&&!this._allowPan())return;const r=this._positioningEl.getBoundingClientRect(),o=h(e[0],e[1]),a=h(t[0],t[1]),i=o.clientX-r.left,s=o.clientY-r.top,c=f(e[0],e[1]),l=f(t[0],t[1]),u=c?l/c:1;this._applyChange({originX:i,originY:s,scaleDiff:u,panX:a.clientX-o.clientX,panY:a.clientY-o.clientY,allowChangeEvent:!0}),this._maybeStopPropagate(n)}_maybeResetScale(){y(this.scale,this.resetToMinScaleLimit)<=0&&this._resetToMinScale()}_onPointerEnd(e,t,n){if(!this._positioningEl)return;const r=1+t.length,o=1==r;r>=2&&this._maybeResetScale(),o&&!this._allowPan()||this._maybeStopPropagate(n)}_resetToMinScale(){"reset"===this.reachMinScaleStrategy?this.setTransform({scale:this.minScale,x:0,y:0}):this.setTransform({scale:this.minScale})}_applyChange(e={}){const{panX:t=0,panY:n=0,originX:r=0,originY:o=0,scaleDiff:a=1,allowChangeEvent:i=!1}=e,s=v().translate(t,n).translate(r,o).translate(this.x,this.y).scale(a).translate(-r,-o).scale(this.scale);this.setTransform({allowChangeEvent:i,scale:s.a,x:s.e,y:s.f})}_maybeStopPropagate(e){this.stopPropagateHandled&&e.stopPropagation()}_allowPan(){return this.allowPanMinScale>0&&y(this.scale,this.allowPanMinScale)>0}_maybeEmitCancel(e){this.stopPropagateHandled&&e.forEach((e=>{var t;this.parentElement&&"function"==typeof this.parentElement.dispatchEvent&&this.parentElement.dispatchEvent((t=e,new PointerEvent("pointercancel",{pointerId:t.id,clientX:t.clientX,clientY:t.clientY})))}))}_onClick(e,t){0===e.button&&(0!==t.currentPointers.length||this._allowPan())&&this._maybeStopPropagate(e)}}customElements.define("pinch-zoom",_);const w=_},2262:(e,t,n)=>{"use strict";n.d(t,{$y:()=>ge,B:()=>i,Bj:()=>a,Fl:()=>Re,IU:()=>_e,Jd:()=>_,PG:()=>ve,SU:()=>Le,Um:()=>pe,WL:()=>Ie,X$:()=>S,X3:()=>ye,XI:()=>Ne,Xl:()=>we,dq:()=>Oe,iH:()=>Ce,j:()=>x,lk:()=>w,qj:()=>he,qq:()=>v,yT:()=>be});var r=n(3577);let o;class a{constructor(e=!1){this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=o,!e&&o&&(this.index=(o.scopes||(o.scopes=[])).push(this)-1)}run(e){if(this.active){const t=o;try{return o=this,e()}finally{o=t}}}on(){o=this}off(){o=this.parent}stop(e){if(this.active){let t,n;for(t=0,n=this.effects.length;t<n;t++)this.effects[t].stop();for(t=0,n=this.cleanups.length;t<n;t++)this.cleanups[t]();if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].stop(!0);if(!this.detached&&this.parent&&!e){const e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0,this.active=!1}}}function i(e){return new a(e)}const s=e=>{const t=new Set(e);return t.w=0,t.n=0,t},c=e=>(e.w&p)>0,l=e=>(e.n&p)>0,u=new WeakMap;let f,h=0,p=1;const d=Symbol(""),m=Symbol("");class v{constructor(e,t=null,n){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,function(e,t=o){t&&t.active&&t.effects.push(e)}(this,n)}run(){if(!this.active)return this.fn();let e=f,t=b;for(;e;){if(e===this)return;e=e.parent}try{return this.parent=f,f=this,b=!0,p=1<<++h,h<=30?(({deps:e})=>{if(e.length)for(let t=0;t<e.length;t++)e[t].w|=p})(this):g(this),this.fn()}finally{h<=30&&(e=>{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r<t.length;r++){const o=t[r];c(o)&&!l(o)?o.delete(e):t[n++]=o,o.w&=~p,o.n&=~p}t.length=n}})(this),p=1<<--h,f=this.parent,b=t,this.parent=void 0,this.deferStop&&this.stop()}}stop(){f===this?this.deferStop=!0:this.active&&(g(this),this.onStop&&this.onStop(),this.active=!1)}}function g(e){const{deps:t}=e;if(t.length){for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}}let b=!0;const y=[];function _(){y.push(b),b=!1}function w(){const e=y.pop();b=void 0===e||e}function x(e,t,n){if(b&&f){let t=u.get(e);t||u.set(e,t=new Map);let r=t.get(n);r||t.set(n,r=s()),k(r)}}function k(e,t){let n=!1;h<=30?l(e)||(e.n|=p,n=!c(e)):n=!e.has(f),n&&(e.add(f),f.deps.push(e))}function S(e,t,n,o,a,i){const c=u.get(e);if(!c)return;let l=[];if("clear"===t)l=[...c.values()];else if("length"===n&&(0,r.kJ)(e)){const e=(0,r.He)(o);c.forEach(((t,n)=>{("length"===n||n>=e)&&l.push(t)}))}else switch(void 0!==n&&l.push(c.get(n)),t){case"add":(0,r.kJ)(e)?(0,r.S0)(n)&&l.push(c.get("length")):(l.push(c.get(d)),(0,r._N)(e)&&l.push(c.get(m)));break;case"delete":(0,r.kJ)(e)||(l.push(c.get(d)),(0,r._N)(e)&&l.push(c.get(m)));break;case"set":(0,r._N)(e)&&l.push(c.get(d))}if(1===l.length)l[0]&&E(l[0]);else{const e=[];for(const t of l)t&&e.push(...t);E(s(e))}}function E(e,t){const n=(0,r.kJ)(e)?e:[...e];for(const e of n)e.computed&&O(e);for(const e of n)e.computed||O(e)}function O(e,t){(e!==f||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const C=(0,r.fY)("__proto__,__v_isRef,__isVue"),N=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(r.yk)),j=z(),A=z(!1,!0),L=z(!0),M=I();function I(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const n=_e(this);for(let e=0,t=this.length;e<t;e++)x(n,0,e+"");const r=n[t](...e);return-1===r||!1===r?n[t](...e.map(_e)):r}})),["push","pop","shift","unshift","splice"].forEach((t=>{e[t]=function(...e){_();const n=_e(this)[t].apply(this,e);return w(),n}})),e}function z(e=!1,t=!1){return function(n,o,a){if("__v_isReactive"===o)return!e;if("__v_isReadonly"===o)return e;if("__v_isShallow"===o)return t;if("__v_raw"===o&&a===(e?t?fe:ue:t?le:ce).get(n))return n;const i=(0,r.kJ)(n);if(!e&&i&&(0,r.RI)(M,o))return Reflect.get(M,o,a);const s=Reflect.get(n,o,a);return((0,r.yk)(o)?N.has(o):C(o))?s:(e||x(n,0,o),t?s:Oe(s)?i&&(0,r.S0)(o)?s:s.value:(0,r.Kn)(s)?e?de(s):he(s):s)}}const T=$(),R=$(!0);function $(e=!1){return function(t,n,o,a){let i=t[n];if(ge(i)&&Oe(i)&&!Oe(o))return!1;if(!e&&(be(o)||ge(o)||(i=_e(i),o=_e(o)),!(0,r.kJ)(t)&&Oe(i)&&!Oe(o)))return i.value=o,!0;const s=(0,r.kJ)(t)&&(0,r.S0)(n)?Number(n)<t.length:(0,r.RI)(t,n),c=Reflect.set(t,n,o,a);return t===_e(a)&&(s?(0,r.aU)(o,i)&&S(t,"set",n,o):S(t,"add",n,o)),c}}const P={get:j,set:T,deleteProperty:function(e,t){const n=(0,r.RI)(e,t),o=(e[t],Reflect.deleteProperty(e,t));return o&&n&&S(e,"delete",t,void 0),o},has:function(e,t){const n=Reflect.has(e,t);return(0,r.yk)(t)&&N.has(t)||x(e,0,t),n},ownKeys:function(e){return x(e,0,(0,r.kJ)(e)?"length":d),Reflect.ownKeys(e)}},F={get:L,set:(e,t)=>!0,deleteProperty:(e,t)=>!0},H=(0,r.l7)({},P,{get:A,set:R}),D=e=>e,V=e=>Reflect.getPrototypeOf(e);function U(e,t,n=!1,r=!1){const o=_e(e=e.__v_raw),a=_e(t);n||(t!==a&&x(o,0,t),x(o,0,a));const{has:i}=V(o),s=r?D:n?ke:xe;return i.call(o,t)?s(e.get(t)):i.call(o,a)?s(e.get(a)):void(e!==o&&e.get(t))}function B(e,t=!1){const n=this.__v_raw,r=_e(n),o=_e(e);return t||(e!==o&&x(r,0,e),x(r,0,o)),e===o?n.has(e):n.has(e)||n.has(o)}function W(e,t=!1){return e=e.__v_raw,!t&&x(_e(e),0,d),Reflect.get(e,"size",e)}function Y(e){e=_e(e);const t=_e(this);return V(t).has.call(t,e)||(t.add(e),S(t,"add",e,e)),this}function q(e,t){t=_e(t);const n=_e(this),{has:o,get:a}=V(n);let i=o.call(n,e);i||(e=_e(e),i=o.call(n,e));const s=a.call(n,e);return n.set(e,t),i?(0,r.aU)(t,s)&&S(n,"set",e,t):S(n,"add",e,t),this}function G(e){const t=_e(this),{has:n,get:r}=V(t);let o=n.call(t,e);o||(e=_e(e),o=n.call(t,e)),r&&r.call(t,e);const a=t.delete(e);return o&&S(t,"delete",e,void 0),a}function Z(){const e=_e(this),t=0!==e.size,n=e.clear();return t&&S(e,"clear",void 0,void 0),n}function X(e,t){return function(n,r){const o=this,a=o.__v_raw,i=_e(a),s=t?D:e?ke:xe;return!e&&x(i,0,d),a.forEach(((e,t)=>n.call(r,s(e),s(t),o)))}}function J(e,t,n){return function(...o){const a=this.__v_raw,i=_e(a),s=(0,r._N)(i),c="entries"===e||e===Symbol.iterator&&s,l="keys"===e&&s,u=a[e](...o),f=n?D:t?ke:xe;return!t&&x(i,0,l?m:d),{next(){const{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[f(e[0]),f(e[1])]:f(e),done:t}},[Symbol.iterator](){return this}}}}function K(e){return function(...t){return"delete"!==e&&this}}function Q(){const e={get(e){return U(this,e)},get size(){return W(this)},has:B,add:Y,set:q,delete:G,clear:Z,forEach:X(!1,!1)},t={get(e){return U(this,e,!1,!0)},get size(){return W(this)},has:B,add:Y,set:q,delete:G,clear:Z,forEach:X(!1,!0)},n={get(e){return U(this,e,!0)},get size(){return W(this,!0)},has(e){return B.call(this,e,!0)},add:K("add"),set:K("set"),delete:K("delete"),clear:K("clear"),forEach:X(!0,!1)},r={get(e){return U(this,e,!0,!0)},get size(){return W(this,!0)},has(e){return B.call(this,e,!0)},add:K("add"),set:K("set"),delete:K("delete"),clear:K("clear"),forEach:X(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=J(o,!1,!1),n[o]=J(o,!0,!1),t[o]=J(o,!1,!0),r[o]=J(o,!0,!0)})),[e,n,t,r]}const[ee,te,ne,re]=Q();function oe(e,t){const n=t?e?re:ne:e?te:ee;return(t,o,a)=>"__v_isReactive"===o?!e:"__v_isReadonly"===o?e:"__v_raw"===o?t:Reflect.get((0,r.RI)(n,o)&&o in t?n:t,o,a)}const ae={get:oe(!1,!1)},ie={get:oe(!1,!0)},se={get:oe(!0,!1)},ce=new WeakMap,le=new WeakMap,ue=new WeakMap,fe=new WeakMap;function he(e){return ge(e)?e:me(e,!1,P,ae,ce)}function pe(e){return me(e,!1,H,ie,le)}function de(e){return me(e,!0,F,se,ue)}function me(e,t,n,o,a){if(!(0,r.Kn)(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const i=a.get(e);if(i)return i;const s=(c=e).__v_skip||!Object.isExtensible(c)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((0,r.W7)(c));var c;if(0===s)return e;const l=new Proxy(e,2===s?o:n);return a.set(e,l),l}function ve(e){return ge(e)?ve(e.__v_raw):!(!e||!e.__v_isReactive)}function ge(e){return!(!e||!e.__v_isReadonly)}function be(e){return!(!e||!e.__v_isShallow)}function ye(e){return ve(e)||ge(e)}function _e(e){const t=e&&e.__v_raw;return t?_e(t):e}function we(e){return(0,r.Nj)(e,"__v_skip",!0),e}const xe=e=>(0,r.Kn)(e)?he(e):e,ke=e=>(0,r.Kn)(e)?de(e):e;function Se(e){b&&f&&k((e=_e(e)).dep||(e.dep=s()))}function Ee(e,t){(e=_e(e)).dep&&E(e.dep)}function Oe(e){return!(!e||!0!==e.__v_isRef)}function Ce(e){return je(e,!1)}function Ne(e){return je(e,!0)}function je(e,t){return Oe(e)?e:new Ae(e,t)}class Ae{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:_e(e),this._value=t?e:xe(e)}get value(){return Se(this),this._value}set value(e){const t=this.__v_isShallow||be(e)||ge(e);e=t?e:_e(e),(0,r.aU)(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:xe(e),Ee(this))}}function Le(e){return Oe(e)?e.value:e}const Me={get:(e,t,n)=>Le(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Oe(o)&&!Oe(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Ie(e){return ve(e)?e:new Proxy(e,Me)}var ze;class Te{constructor(e,t,n,r){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[ze]=!1,this._dirty=!0,this.effect=new v(e,(()=>{this._dirty||(this._dirty=!0,Ee(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=n}get value(){const e=_e(this);return Se(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function Re(e,t,n=!1){let o,a;const i=(0,r.mf)(e);return i?(o=e,a=r.dG):(o=e.get,a=e.set),new Te(o,a,i||!a,n)}ze="__v_isReadonly"},66252:(e,t,n)=>{"use strict";n.d(t,{$d:()=>i,Ah:()=>ke,Cn:()=>M,F4:()=>Yt,FN:()=>on,Fl:()=>dn,HX:()=>I,HY:()=>Ct,JJ:()=>H,Jd:()=>xe,Ko:()=>$e,LL:()=>Ie,Ob:()=>ce,P$:()=>X,Q2:()=>ze,Q6:()=>ne,RC:()=>ae,U2:()=>K,Uk:()=>Gt,Us:()=>bt,WI:()=>Pe,Wm:()=>Wt,Y3:()=>g,Y8:()=>G,YP:()=>U,_:()=>Bt,aZ:()=>re,bv:()=>ye,dD:()=>L,dG:()=>Qt,f3:()=>D,h:()=>mn,iD:()=>$t,ic:()=>we,j4:()=>Pt,kq:()=>Zt,lA:()=>Ft,lR:()=>Et,mx:()=>He,nK:()=>te,up:()=>Le,w5:()=>z,wF:()=>be,wg:()=>It,wy:()=>Ne,xv:()=>Nt});var r=n(2262),o=n(3577);function a(e,t,n,r){let o;try{o=r?e(...r):e()}catch(e){s(e,t,n)}return o}function i(e,t,n,r){if((0,o.mf)(e)){const i=a(e,t,n,r);return i&&(0,o.tI)(i)&&i.catch((e=>{s(e,t,n)})),i}const c=[];for(let o=0;o<e.length;o++)c.push(i(e[o],t,n,r));return c}function s(e,t,n,r=!0){if(t&&t.vnode,t){let r=t.parent;const o=t.proxy,i=n;for(;r;){const t=r.ec;if(t)for(let n=0;n<t.length;n++)if(!1===t[n](e,o,i))return;r=r.parent}const s=t.appContext.config.errorHandler;if(s)return void a(s,null,10,[e,o,i])}!function(e,t,n,r=!0){console.error(e)}(e,0,0,r)}let c=!1,l=!1;const u=[];let f=0;const h=[];let p=null,d=0;const m=Promise.resolve();let v=null;function g(e){const t=v||m;return e?t.then(this?e.bind(this):e):t}function b(e){u.length&&u.includes(e,c&&e.allowRecurse?f+1:f)||(null==e.id?u.push(e):u.splice(function(e){let t=f+1,n=u.length;for(;t<n;){const r=t+n>>>1;x(u[r])<e?t=r+1:n=r}return t}(e.id),0,e),y())}function y(){c||l||(l=!0,v=m.then(S))}function _(e,t=(c?f+1:0)){for(;t<u.length;t++){const e=u[t];e&&e.pre&&(u.splice(t,1),t--,e())}}function w(e){if(h.length){const e=[...new Set(h)];if(h.length=0,p)return void p.push(...e);for(p=e,p.sort(((e,t)=>x(e)-x(t))),d=0;d<p.length;d++)p[d]();p=null,d=0}}const x=e=>null==e.id?1/0:e.id,k=(e,t)=>{const n=x(e)-x(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function S(e){l=!1,c=!0,u.sort(k),o.dG;try{for(f=0;f<u.length;f++){const e=u[f];e&&!1!==e.active&&a(e,null,14)}}finally{f=0,u.length=0,w(),c=!1,v=null,(u.length||h.length)&&S(e)}}function E(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||o.kT;let a=n;const s=t.startsWith("update:"),c=s&&t.slice(7);if(c&&c in r){const e=`${"modelValue"===c?"model":c}Modifiers`,{number:t,trim:i}=r[e]||o.kT;i&&(a=n.map((e=>(0,o.HD)(e)?e.trim():e))),t&&(a=n.map(o.He))}let l,u=r[l=(0,o.hR)(t)]||r[l=(0,o.hR)((0,o._A)(t))];!u&&s&&(u=r[l=(0,o.hR)((0,o.rs)(t))]),u&&i(u,e,6,a);const f=r[l+"Once"];if(f){if(e.emitted){if(e.emitted[l])return}else e.emitted={};e.emitted[l]=!0,i(f,e,6,a)}}function O(e,t,n=!1){const r=t.emitsCache,a=r.get(e);if(void 0!==a)return a;const i=e.emits;let s={},c=!1;if(!(0,o.mf)(e)){const r=e=>{const n=O(e,t,!0);n&&(c=!0,(0,o.l7)(s,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return i||c?((0,o.kJ)(i)?i.forEach((e=>s[e]=null)):(0,o.l7)(s,i),(0,o.Kn)(e)&&r.set(e,s),s):((0,o.Kn)(e)&&r.set(e,null),null)}function C(e,t){return!(!e||!(0,o.F7)(t))&&(t=t.slice(2).replace(/Once$/,""),(0,o.RI)(e,t[0].toLowerCase()+t.slice(1))||(0,o.RI)(e,(0,o.rs)(t))||(0,o.RI)(e,t))}new Set,new Map;let N=null,j=null;function A(e){const t=N;return N=e,j=e&&e.type.__scopeId||null,t}function L(e){j=e}function M(){j=null}const I=e=>z;function z(e,t=N,n){if(!t)return e;if(e._n)return e;const r=(...n)=>{r._d&&Tt(-1);const o=A(t);let a;try{a=e(...n)}finally{A(o),r._d&&Tt(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function T(e){const{type:t,vnode:n,proxy:r,withProxy:a,props:i,propsOptions:[c],slots:l,attrs:u,emit:f,render:h,renderCache:p,data:d,setupState:m,ctx:v,inheritAttrs:g}=e;let b,y;const _=A(e);try{if(4&n.shapeFlag){const e=a||r;b=Xt(h.call(e,e,p,i,m,d,v)),y=u}else{const e=t;b=Xt(e.length>1?e(i,{attrs:u,slots:l,emit:f}):e(i,null)),y=t.props?u:R(u)}}catch(t){Lt.length=0,s(t,e,1),b=Wt(jt)}let w=b;if(y&&!1!==g){const e=Object.keys(y),{shapeFlag:t}=w;e.length&&7&t&&(c&&e.some(o.tR)&&(y=$(y,c)),w=qt(w,y))}return n.dirs&&(w=qt(w),w.dirs=w.dirs?w.dirs.concat(n.dirs):n.dirs),n.transition&&(w.transition=n.transition),b=w,A(_),b}const R=e=>{let t;for(const n in e)("class"===n||"style"===n||(0,o.F7)(n))&&((t||(t={}))[n]=e[n]);return t},$=(e,t)=>{const n={};for(const r in e)(0,o.tR)(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function P(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let o=0;o<r.length;o++){const a=r[o];if(t[a]!==e[a]&&!C(n,a))return!0}return!1}const F=e=>e.__isSuspense;function H(e,t){if(rn){let n=rn.provides;const r=rn.parent&&rn.parent.provides;r===n&&(n=rn.provides=Object.create(r)),n[e]=t}}function D(e,t,n=!1){const r=rn||N;if(r){const a=null==r.parent?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(a&&e in a)return a[e];if(arguments.length>1)return n&&(0,o.mf)(t)?t.call(r.proxy):t}}const V={};function U(e,t,n){return B(e,t,n)}function B(e,t,{immediate:n,deep:s,flush:c,onTrack:l,onTrigger:u}=o.kT){const f=rn;let h,p,d=!1,m=!1;if((0,r.dq)(e)?(h=()=>e.value,d=(0,r.yT)(e)):(0,r.PG)(e)?(h=()=>e,s=!0):(0,o.kJ)(e)?(m=!0,d=e.some((e=>(0,r.PG)(e)||(0,r.yT)(e))),h=()=>e.map((e=>(0,r.dq)(e)?e.value:(0,r.PG)(e)?q(e):(0,o.mf)(e)?a(e,f,2):void 0))):h=(0,o.mf)(e)?t?()=>a(e,f,2):()=>{if(!f||!f.isUnmounted)return p&&p(),i(e,f,3,[g])}:o.dG,t&&s){const e=h;h=()=>q(e())}let v,g=e=>{p=x.onStop=()=>{a(e,f,4)}};if(ln){if(g=o.dG,t?n&&i(t,f,3,[h(),m?[]:void 0,g]):h(),"sync"!==c)return o.dG;{const e=gn();v=e.__watcherHandles||(e.__watcherHandles=[])}}let y=m?new Array(e.length).fill(V):V;const _=()=>{if(x.active)if(t){const e=x.run();(s||d||(m?e.some(((e,t)=>(0,o.aU)(e,y[t]))):(0,o.aU)(e,y)))&&(p&&p(),i(t,f,3,[e,y===V?void 0:m&&y[0]===V?[]:y,g]),y=e)}else x.run()};let w;_.allowRecurse=!!t,"sync"===c?w=_:"post"===c?w=()=>gt(_,f&&f.suspense):(_.pre=!0,f&&(_.id=f.uid),w=()=>b(_));const x=new r.qq(h,w);t?n?_():y=x.run():"post"===c?gt(x.run.bind(x),f&&f.suspense):x.run();const k=()=>{x.stop(),f&&f.scope&&(0,o.Od)(f.scope.effects,x)};return v&&v.push(k),k}function W(e,t,n){const r=this.proxy,a=(0,o.HD)(e)?e.includes(".")?Y(r,e):()=>r[e]:e.bind(r,r);let i;(0,o.mf)(t)?i=t:(i=t.handler,n=t);const s=rn;an(this);const c=B(a,i.bind(r),n);return s?an(s):sn(),c}function Y(e,t){const n=t.split(".");return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}function q(e,t){if(!(0,o.Kn)(e)||e.__v_skip)return e;if((t=t||new Set).has(e))return e;if(t.add(e),(0,r.dq)(e))q(e.value,t);else if((0,o.kJ)(e))for(let n=0;n<e.length;n++)q(e[n],t);else if((0,o.DM)(e)||(0,o._N)(e))e.forEach((e=>{q(e,t)}));else if((0,o.PO)(e))for(const n in e)q(e[n],t);return e}function G(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return ye((()=>{e.isMounted=!0})),xe((()=>{e.isUnmounting=!0})),e}const Z=[Function,Array],X={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Z,onEnter:Z,onAfterEnter:Z,onEnterCancelled:Z,onBeforeLeave:Z,onLeave:Z,onAfterLeave:Z,onLeaveCancelled:Z,onBeforeAppear:Z,onAppear:Z,onAfterAppear:Z,onAppearCancelled:Z},setup(e,{slots:t}){const n=on(),o=G();let a;return()=>{const i=t.default&&ne(t.default(),!0);if(!i||!i.length)return;let s=i[0];if(i.length>1){let e=!1;for(const t of i)if(t.type!==jt){s=t,e=!0;break}}const c=(0,r.IU)(e),{mode:l}=c;if(o.isLeaving)return Q(s);const u=ee(s);if(!u)return Q(s);const f=K(u,c,o,n);te(u,f);const h=n.subTree,p=h&&ee(h);let d=!1;const{getTransitionKey:m}=u.type;if(m){const e=m();void 0===a?a=e:e!==a&&(a=e,d=!0)}if(p&&p.type!==jt&&(!Ht(u,p)||d)){const e=K(p,c,o,n);if(te(p,e),"out-in"===l)return o.isLeaving=!0,e.afterLeave=()=>{o.isLeaving=!1,!1!==n.update.active&&n.update()},Q(s);"in-out"===l&&u.type!==jt&&(e.delayLeave=(e,t,n)=>{J(o,p)[String(p.key)]=p,e._leaveCb=()=>{t(),e._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=n})}return s}}};function J(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function K(e,t,n,r){const{appear:a,mode:s,persisted:c=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:p,onLeave:d,onAfterLeave:m,onLeaveCancelled:v,onBeforeAppear:g,onAppear:b,onAfterAppear:y,onAppearCancelled:_}=t,w=String(e.key),x=J(n,e),k=(e,t)=>{e&&i(e,r,9,t)},S=(e,t)=>{const n=t[1];k(e,t),(0,o.kJ)(e)?e.every((e=>e.length<=1))&&n():e.length<=1&&n()},E={mode:s,persisted:c,beforeEnter(t){let r=l;if(!n.isMounted){if(!a)return;r=g||l}t._leaveCb&&t._leaveCb(!0);const o=x[w];o&&Ht(e,o)&&o.el._leaveCb&&o.el._leaveCb(),k(r,[t])},enter(e){let t=u,r=f,o=h;if(!n.isMounted){if(!a)return;t=b||u,r=y||f,o=_||h}let i=!1;const s=e._enterCb=t=>{i||(i=!0,k(t?o:r,[e]),E.delayedLeave&&E.delayedLeave(),e._enterCb=void 0)};t?S(t,[e,s]):s()},leave(t,r){const o=String(e.key);if(t._enterCb&&t._enterCb(!0),n.isUnmounting)return r();k(p,[t]);let a=!1;const i=t._leaveCb=n=>{a||(a=!0,r(),k(n?v:m,[t]),t._leaveCb=void 0,x[o]===e&&delete x[o])};x[o]=e,d?S(d,[t,i]):i()},clone:e=>K(e,t,n,r)};return E}function Q(e){if(se(e))return(e=qt(e)).children=null,e}function ee(e){return se(e)?e.children?e.children[0]:void 0:e}function te(e,t){6&e.shapeFlag&&e.component?te(e.component.subTree,t):128&e.shapeFlag?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ne(e,t=!1,n){let r=[],o=0;for(let a=0;a<e.length;a++){let i=e[a];const s=null==n?i.key:String(n)+String(null!=i.key?i.key:a);i.type===Ct?(128&i.patchFlag&&o++,r=r.concat(ne(i.children,t,s))):(t||i.type!==jt)&&r.push(null!=s?qt(i,{key:s}):i)}if(o>1)for(let e=0;e<r.length;e++)r[e].patchFlag=-2;return r}function re(e){return(0,o.mf)(e)?{setup:e,name:e.name}:e}const oe=e=>!!e.type.__asyncLoader;function ae(e){(0,o.mf)(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:a,delay:i=200,timeout:c,suspensible:l=!0,onError:u}=e;let f,h=null,p=0;const d=()=>{let e;return h||(e=h=t().catch((e=>{if(e=e instanceof Error?e:new Error(String(e)),u)return new Promise(((t,n)=>{u(e,(()=>t((p++,h=null,d()))),(()=>n(e)),p+1)}));throw e})).then((t=>e!==h&&h?h:(t&&(t.__esModule||"Module"===t[Symbol.toStringTag])&&(t=t.default),f=t,t))))};return re({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return f},setup(){const e=rn;if(f)return()=>ie(f,e);const t=t=>{h=null,s(t,e,13,!a)};if(l&&e.suspense||ln)return d().then((t=>()=>ie(t,e))).catch((e=>(t(e),()=>a?Wt(a,{error:e}):null)));const o=(0,r.iH)(!1),u=(0,r.iH)(),p=(0,r.iH)(!!i);return i&&setTimeout((()=>{p.value=!1}),i),null!=c&&setTimeout((()=>{if(!o.value&&!u.value){const e=new Error(`Async component timed out after ${c}ms.`);t(e),u.value=e}}),c),d().then((()=>{o.value=!0,e.parent&&se(e.parent.vnode)&&b(e.parent.update)})).catch((e=>{t(e),u.value=e})),()=>o.value&&f?ie(f,e):u.value&&a?Wt(a,{error:u.value}):n&&!p.value?Wt(n):void 0}})}function ie(e,t){const{ref:n,props:r,children:o,ce:a}=t.vnode,i=Wt(e,r,o);return i.ref=n,i.ce=a,delete t.vnode.ce,i}const se=e=>e.type.__isKeepAlive,ce={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=on(),r=n.ctx;if(!r.renderer)return()=>{const e=t.default&&t.default();return e&&1===e.length?e[0]:e};const a=new Map,i=new Set;let s=null;const c=n.suspense,{renderer:{p:l,m:u,um:f,o:{createElement:h}}}=r,p=h("div");function d(e){de(e),f(e,n,c,!0)}function m(e){a.forEach(((t,n)=>{const r=pn(t.type);!r||e&&e(r)||v(n)}))}function v(e){const t=a.get(e);s&&t.type===s.type?s&&de(s):d(t),a.delete(e),i.delete(e)}r.activate=(e,t,n,r,a)=>{const i=e.component;u(e,t,n,0,c),l(i.vnode,e,t,n,i,c,r,e.slotScopeIds,a),gt((()=>{i.isDeactivated=!1,i.a&&(0,o.ir)(i.a);const t=e.props&&e.props.onVnodeMounted;t&&en(t,i.parent,e)}),c)},r.deactivate=e=>{const t=e.component;u(e,p,null,1,c),gt((()=>{t.da&&(0,o.ir)(t.da);const n=e.props&&e.props.onVnodeUnmounted;n&&en(n,t.parent,e),t.isDeactivated=!0}),c)},U((()=>[e.include,e.exclude]),(([e,t])=>{e&&m((t=>le(e,t))),t&&m((e=>!le(t,e)))}),{flush:"post",deep:!0});let g=null;const b=()=>{null!=g&&a.set(g,me(n.subTree))};return ye(b),we(b),xe((()=>{a.forEach((e=>{const{subTree:t,suspense:r}=n,o=me(t);if(e.type!==o.type)d(e);else{de(o);const e=o.component.da;e&&gt(e,r)}}))})),()=>{if(g=null,!t.default)return null;const n=t.default(),r=n[0];if(n.length>1)return s=null,n;if(!Ft(r)||!(4&r.shapeFlag||128&r.shapeFlag))return s=null,r;let o=me(r);const c=o.type,l=pn(oe(o)?o.type.__asyncResolved||{}:c),{include:u,exclude:f,max:h}=e;if(u&&(!l||!le(u,l))||f&&l&&le(f,l))return s=o,r;const p=null==o.key?c:o.key,d=a.get(p);return o.el&&(o=qt(o),128&r.shapeFlag&&(r.ssContent=o)),g=p,d?(o.el=d.el,o.component=d.component,o.transition&&te(o,o.transition),o.shapeFlag|=512,i.delete(p),i.add(p)):(i.add(p),h&&i.size>parseInt(h,10)&&v(i.values().next().value)),o.shapeFlag|=256,s=o,F(r.type)?r:o}}};function le(e,t){return(0,o.kJ)(e)?e.some((e=>le(e,t))):(0,o.HD)(e)?e.split(",").includes(t):!!e.test&&e.test(t)}function ue(e,t){he(e,"a",t)}function fe(e,t){he(e,"da",t)}function he(e,t,n=rn){const r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(ve(t,r,n),n){let e=n.parent;for(;e&&e.parent;)se(e.parent.vnode)&&pe(r,t,n,e),e=e.parent}}function pe(e,t,n,r){const a=ve(t,e,r,!0);ke((()=>{(0,o.Od)(r[t],a)}),n)}function de(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function me(e){return 128&e.shapeFlag?e.ssContent:e}function ve(e,t,n=rn,o=!1){if(n){const a=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;(0,r.Jd)(),an(n);const a=i(t,n,e,o);return sn(),(0,r.lk)(),a});return o?a.unshift(s):a.push(s),s}}const ge=e=>(t,n=rn)=>(!ln||"sp"===e)&&ve(e,((...e)=>t(...e)),n),be=ge("bm"),ye=ge("m"),_e=ge("bu"),we=ge("u"),xe=ge("bum"),ke=ge("um"),Se=ge("sp"),Ee=ge("rtg"),Oe=ge("rtc");function Ce(e,t=rn){ve("ec",e,t)}function Ne(e,t){const n=N;if(null===n)return e;const r=hn(n)||n.proxy,a=e.dirs||(e.dirs=[]);for(let e=0;e<t.length;e++){let[n,i,s,c=o.kT]=t[e];n&&((0,o.mf)(n)&&(n={mounted:n,updated:n}),n.deep&&q(i),a.push({dir:n,instance:r,value:i,oldValue:void 0,arg:s,modifiers:c}))}return e}function je(e,t,n,o){const a=e.dirs,s=t&&t.dirs;for(let c=0;c<a.length;c++){const l=a[c];s&&(l.oldValue=s[c].value);let u=l.dir[o];u&&((0,r.Jd)(),i(u,n,8,[e.el,l,e,t]),(0,r.lk)())}}const Ae="components";function Le(e,t){return Te(Ae,e,!0,t)||e}const Me=Symbol();function Ie(e){return(0,o.HD)(e)?Te(Ae,e,!1)||e:e||Me}function ze(e){return Te("directives",e)}function Te(e,t,n=!0,r=!1){const a=N||rn;if(a){const n=a.type;if(e===Ae){const e=pn(n,!1);if(e&&(e===t||e===(0,o._A)(t)||e===(0,o.kC)((0,o._A)(t))))return n}const i=Re(a[e]||n[e],t)||Re(a.appContext[e],t);return!i&&r?n:i}}function Re(e,t){return e&&(e[t]||e[(0,o._A)(t)]||e[(0,o.kC)((0,o._A)(t))])}function $e(e,t,n,r){let a;const i=n&&n[r];if((0,o.kJ)(e)||(0,o.HD)(e)){a=new Array(e.length);for(let n=0,r=e.length;n<r;n++)a[n]=t(e[n],n,void 0,i&&i[n])}else if("number"==typeof e){a=new Array(e);for(let n=0;n<e;n++)a[n]=t(n+1,n,void 0,i&&i[n])}else if((0,o.Kn)(e))if(e[Symbol.iterator])a=Array.from(e,((e,n)=>t(e,n,void 0,i&&i[n])));else{const n=Object.keys(e);a=new Array(n.length);for(let r=0,o=n.length;r<o;r++){const o=n[r];a[r]=t(e[o],o,r,i&&i[r])}}else a=[];return n&&(n[r]=a),a}function Pe(e,t,n={},r,o){if(N.isCE||N.parent&&oe(N.parent)&&N.parent.isCE)return"default"!==t&&(n.name=t),Wt("slot",n,r&&r());let a=e[t];a&&a._c&&(a._d=!1),It();const i=a&&Fe(a(n)),s=Pt(Ct,{key:n.key||i&&i.key||`_${t}`},i||(r?r():[]),i&&1===e._?64:-2);return!o&&s.scopeId&&(s.slotScopeIds=[s.scopeId+"-s"]),a&&a._c&&(a._d=!0),s}function Fe(e){return e.some((e=>!Ft(e)||e.type!==jt&&!(e.type===Ct&&!Fe(e.children))))?e:null}function He(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:(0,o.hR)(r)]=e[r];return n}const De=e=>e?cn(e)?hn(e)||e.proxy:De(e.parent):null,Ve=(0,o.l7)(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>De(e.parent),$root:e=>De(e.root),$emit:e=>e.emit,$options:e=>Ge(e),$forceUpdate:e=>e.f||(e.f=()=>b(e.update)),$nextTick:e=>e.n||(e.n=g.bind(e.proxy)),$watch:e=>W.bind(e)}),Ue=(e,t)=>e!==o.kT&&!e.__isScriptSetup&&(0,o.RI)(e,t),Be={get({_:e},t){const{ctx:n,setupState:a,data:i,props:s,accessCache:c,type:l,appContext:u}=e;let f;if("$"!==t[0]){const r=c[t];if(void 0!==r)switch(r){case 1:return a[t];case 2:return i[t];case 4:return n[t];case 3:return s[t]}else{if(Ue(a,t))return c[t]=1,a[t];if(i!==o.kT&&(0,o.RI)(i,t))return c[t]=2,i[t];if((f=e.propsOptions[0])&&(0,o.RI)(f,t))return c[t]=3,s[t];if(n!==o.kT&&(0,o.RI)(n,t))return c[t]=4,n[t];We&&(c[t]=0)}}const h=Ve[t];let p,d;return h?("$attrs"===t&&(0,r.j)(e,"get",t),h(e)):(p=l.__cssModules)&&(p=p[t])?p:n!==o.kT&&(0,o.RI)(n,t)?(c[t]=4,n[t]):(d=u.config.globalProperties,(0,o.RI)(d,t)?d[t]:void 0)},set({_:e},t,n){const{data:r,setupState:a,ctx:i}=e;return Ue(a,t)?(a[t]=n,!0):r!==o.kT&&(0,o.RI)(r,t)?(r[t]=n,!0):!((0,o.RI)(e.props,t)||"$"===t[0]&&t.slice(1)in e||(i[t]=n,0))},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:a,propsOptions:i}},s){let c;return!!n[s]||e!==o.kT&&(0,o.RI)(e,s)||Ue(t,s)||(c=i[0])&&(0,o.RI)(c,s)||(0,o.RI)(r,s)||(0,o.RI)(Ve,s)||(0,o.RI)(a.config.globalProperties,s)},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:(0,o.RI)(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let We=!0;function Ye(e,t,n){i((0,o.kJ)(e)?e.map((e=>e.bind(t.proxy))):e.bind(t.proxy),t,n)}function qe(e,t,n,r){const a=r.includes(".")?Y(n,r):()=>n[r];if((0,o.HD)(e)){const n=t[e];(0,o.mf)(n)&&U(a,n)}else if((0,o.mf)(e))U(a,e.bind(n));else if((0,o.Kn)(e))if((0,o.kJ)(e))e.forEach((e=>qe(e,t,n,r)));else{const r=(0,o.mf)(e.handler)?e.handler.bind(n):t[e.handler];(0,o.mf)(r)&&U(a,r,e)}}function Ge(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:a,optionsCache:i,config:{optionMergeStrategies:s}}=e.appContext,c=i.get(t);let l;return c?l=c:a.length||n||r?(l={},a.length&&a.forEach((e=>Ze(l,e,s,!0))),Ze(l,t,s)):l=t,(0,o.Kn)(t)&&i.set(t,l),l}function Ze(e,t,n,r=!1){const{mixins:o,extends:a}=t;a&&Ze(e,a,n,!0),o&&o.forEach((t=>Ze(e,t,n,!0)));for(const o in t)if(r&&"expose"===o);else{const r=Xe[o]||n&&n[o];e[o]=r?r(e[o],t[o]):t[o]}return e}const Xe={data:Je,props:et,emits:et,methods:et,computed:et,beforeCreate:Qe,created:Qe,beforeMount:Qe,mounted:Qe,beforeUpdate:Qe,updated:Qe,beforeDestroy:Qe,beforeUnmount:Qe,destroyed:Qe,unmounted:Qe,activated:Qe,deactivated:Qe,errorCaptured:Qe,serverPrefetch:Qe,components:et,directives:et,watch:function(e,t){if(!e)return t;if(!t)return e;const n=(0,o.l7)(Object.create(null),e);for(const r in t)n[r]=Qe(e[r],t[r]);return n},provide:Je,inject:function(e,t){return et(Ke(e),Ke(t))}};function Je(e,t){return t?e?function(){return(0,o.l7)((0,o.mf)(e)?e.call(this,this):e,(0,o.mf)(t)?t.call(this,this):t)}:t:e}function Ke(e){if((0,o.kJ)(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function Qe(e,t){return e?[...new Set([].concat(e,t))]:t}function et(e,t){return e?(0,o.l7)((0,o.l7)(Object.create(null),e),t):t}function tt(e,t,n,a){const[i,s]=e.propsOptions;let c,l=!1;if(t)for(let r in t){if((0,o.Gg)(r))continue;const u=t[r];let f;i&&(0,o.RI)(i,f=(0,o._A)(r))?s&&s.includes(f)?(c||(c={}))[f]=u:n[f]=u:C(e.emitsOptions,r)||r in a&&u===a[r]||(a[r]=u,l=!0)}if(s){const t=(0,r.IU)(n),a=c||o.kT;for(let r=0;r<s.length;r++){const c=s[r];n[c]=nt(i,t,c,a[c],e,!(0,o.RI)(a,c))}}return l}function nt(e,t,n,r,a,i){const s=e[n];if(null!=s){const e=(0,o.RI)(s,"default");if(e&&void 0===r){const e=s.default;if(s.type!==Function&&(0,o.mf)(e)){const{propsDefaults:o}=a;n in o?r=o[n]:(an(a),r=o[n]=e.call(null,t),sn())}else r=e}s[0]&&(i&&!e?r=!1:!s[1]||""!==r&&r!==(0,o.rs)(n)||(r=!0))}return r}function rt(e,t,n=!1){const r=t.propsCache,a=r.get(e);if(a)return a;const i=e.props,s={},c=[];let l=!1;if(!(0,o.mf)(e)){const r=e=>{l=!0;const[n,r]=rt(e,t,!0);(0,o.l7)(s,n),r&&c.push(...r)};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}if(!i&&!l)return(0,o.Kn)(e)&&r.set(e,o.Z6),o.Z6;if((0,o.kJ)(i))for(let e=0;e<i.length;e++){const t=(0,o._A)(i[e]);ot(t)&&(s[t]=o.kT)}else if(i)for(const e in i){const t=(0,o._A)(e);if(ot(t)){const n=i[e],r=s[t]=(0,o.kJ)(n)||(0,o.mf)(n)?{type:n}:Object.assign({},n);if(r){const e=st(Boolean,r.type),n=st(String,r.type);r[0]=e>-1,r[1]=n<0||e<n,(e>-1||(0,o.RI)(r,"default"))&&c.push(t)}}}const u=[s,c];return(0,o.Kn)(e)&&r.set(e,u),u}function ot(e){return"$"!==e[0]}function at(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:null===e?"null":""}function it(e,t){return at(e)===at(t)}function st(e,t){return(0,o.kJ)(t)?t.findIndex((t=>it(t,e))):(0,o.mf)(t)&&it(t,e)?0:-1}const ct=e=>"_"===e[0]||"$stable"===e,lt=e=>(0,o.kJ)(e)?e.map(Xt):[Xt(e)],ut=(e,t,n)=>{if(t._n)return t;const r=z(((...e)=>lt(t(...e))),n);return r._c=!1,r},ft=(e,t,n)=>{const r=e._ctx;for(const n in e){if(ct(n))continue;const a=e[n];if((0,o.mf)(a))t[n]=ut(0,a,r);else if(null!=a){const e=lt(a);t[n]=()=>e}}},ht=(e,t)=>{const n=lt(t);e.slots.default=()=>n};function pt(){return{app:null,config:{isNativeTag:o.NO,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let dt=0;function mt(e,t){return function(n,r=null){(0,o.mf)(n)||(n=Object.assign({},n)),null==r||(0,o.Kn)(r)||(r=null);const a=pt(),i=new Set;let s=!1;const c=a.app={_uid:dt++,_component:n,_props:r,_container:null,_context:a,_instance:null,version:bn,get config(){return a.config},set config(e){},use:(e,...t)=>(i.has(e)||(e&&(0,o.mf)(e.install)?(i.add(e),e.install(c,...t)):(0,o.mf)(e)&&(i.add(e),e(c,...t))),c),mixin:e=>(a.mixins.includes(e)||a.mixins.push(e),c),component:(e,t)=>t?(a.components[e]=t,c):a.components[e],directive:(e,t)=>t?(a.directives[e]=t,c):a.directives[e],mount(o,i,l){if(!s){const u=Wt(n,r);return u.appContext=a,i&&t?t(u,o):e(u,o,l),s=!0,c._container=o,o.__vue_app__=c,hn(u.component)||u.component.proxy}},unmount(){s&&(e(null,c._container),delete c._container.__vue_app__)},provide:(e,t)=>(a.provides[e]=t,c)};return c}}function vt(e,t,n,i,s=!1){if((0,o.kJ)(e))return void e.forEach(((e,r)=>vt(e,t&&((0,o.kJ)(t)?t[r]:t),n,i,s)));if(oe(i)&&!s)return;const c=4&i.shapeFlag?hn(i.component)||i.component.proxy:i.el,l=s?null:c,{i:u,r:f}=e,h=t&&t.r,p=u.refs===o.kT?u.refs={}:u.refs,d=u.setupState;if(null!=h&&h!==f&&((0,o.HD)(h)?(p[h]=null,(0,o.RI)(d,h)&&(d[h]=null)):(0,r.dq)(h)&&(h.value=null)),(0,o.mf)(f))a(f,u,12,[l,p]);else{const t=(0,o.HD)(f),a=(0,r.dq)(f);if(t||a){const r=()=>{if(e.f){const n=t?(0,o.RI)(d,f)?d[f]:p[f]:f.value;s?(0,o.kJ)(n)&&(0,o.Od)(n,c):(0,o.kJ)(n)?n.includes(c)||n.push(c):t?(p[f]=[c],(0,o.RI)(d,f)&&(d[f]=p[f])):(f.value=[c],e.k&&(p[e.k]=f.value))}else t?(p[f]=l,(0,o.RI)(d,f)&&(d[f]=l)):a&&(f.value=l,e.k&&(p[e.k]=l))};l?(r.id=-1,gt(r,n)):r()}}}const gt=function(e,t){var n;t&&t.pendingBranch?(0,o.kJ)(e)?t.effects.push(...e):t.effects.push(e):(n=e,(0,o.kJ)(n)?h.push(...n):p&&p.includes(n,n.allowRecurse?d+1:d)||h.push(n),y())};function bt(e){return function(e,t){(0,o.E9)().__VUE__=!0;const{insert:n,remove:i,patchProp:c,createElement:l,createText:h,createComment:p,setText:d,setElementText:m,parentNode:v,nextSibling:g,setScopeId:y=o.dG,insertStaticContent:x}=e,k=(e,t,n,r=null,o=null,a=null,i=!1,s=null,c=!!t.dynamicChildren)=>{if(e===t)return;e&&!Ht(e,t)&&(r=te(e),X(e,o,a,!0),e=null),-2===t.patchFlag&&(c=!1,t.dynamicChildren=null);const{type:l,ref:u,shapeFlag:f}=t;switch(l){case Nt:S(e,t,n,r);break;case jt:N(e,t,n,r);break;case At:null==e&&j(t,n,r,i);break;case Ct:H(e,t,n,r,o,a,i,s,c);break;default:1&f?L(e,t,n,r,o,a,i,s,c):6&f?D(e,t,n,r,o,a,i,s,c):(64&f||128&f)&&l.process(e,t,n,r,o,a,i,s,c,re)}null!=u&&o&&vt(u,e&&e.ref,a,t||e,!t)},S=(e,t,r,o)=>{if(null==e)n(t.el=h(t.children),r,o);else{const n=t.el=e.el;t.children!==e.children&&d(n,t.children)}},N=(e,t,r,o)=>{null==e?n(t.el=p(t.children||""),r,o):t.el=e.el},j=(e,t,n,r)=>{[e.el,e.anchor]=x(e.children,t,n,r,e.el,e.anchor)},A=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=g(e),i(e),e=n;i(t)},L=(e,t,n,r,o,a,i,s,c)=>{i=i||"svg"===t.type,null==e?M(t,n,r,o,a,i,s,c):R(e,t,o,a,i,s,c)},M=(e,t,r,a,i,s,u,f)=>{let h,p;const{type:d,props:v,shapeFlag:g,transition:b,dirs:y}=e;if(h=e.el=l(e.type,s,v&&v.is,v),8&g?m(h,e.children):16&g&&z(e.children,h,null,a,i,s&&"foreignObject"!==d,u,f),y&&je(e,null,a,"created"),v){for(const t in v)"value"===t||(0,o.Gg)(t)||c(h,t,null,v[t],s,e.children,a,i,ee);"value"in v&&c(h,"value",null,v.value),(p=v.onVnodeBeforeMount)&&en(p,a,e)}I(h,e,e.scopeId,u,a),y&&je(e,null,a,"beforeMount");const _=(!i||i&&!i.pendingBranch)&&b&&!b.persisted;_&&b.beforeEnter(h),n(h,t,r),((p=v&&v.onVnodeMounted)||_||y)&&gt((()=>{p&&en(p,a,e),_&&b.enter(h),y&&je(e,null,a,"mounted")}),i)},I=(e,t,n,r,o)=>{if(n&&y(e,n),r)for(let t=0;t<r.length;t++)y(e,r[t]);if(o&&t===o.subTree){const t=o.vnode;I(e,t,t.scopeId,t.slotScopeIds,o.parent)}},z=(e,t,n,r,o,a,i,s,c=0)=>{for(let l=c;l<e.length;l++){const c=e[l]=s?Jt(e[l]):Xt(e[l]);k(null,c,t,n,r,o,a,i,s)}},R=(e,t,n,r,a,i,s)=>{const l=t.el=e.el;let{patchFlag:u,dynamicChildren:f,dirs:h}=t;u|=16&e.patchFlag;const p=e.props||o.kT,d=t.props||o.kT;let v;n&&yt(n,!1),(v=d.onVnodeBeforeUpdate)&&en(v,n,t,e),h&&je(t,e,n,"beforeUpdate"),n&&yt(n,!0);const g=a&&"foreignObject"!==t.type;if(f?$(e.dynamicChildren,f,l,n,r,g,i):s||Y(e,t,l,null,n,r,g,i,!1),u>0){if(16&u)F(l,t,p,d,n,r,a);else if(2&u&&p.class!==d.class&&c(l,"class",null,d.class,a),4&u&&c(l,"style",p.style,d.style,a),8&u){const o=t.dynamicProps;for(let t=0;t<o.length;t++){const i=o[t],s=p[i],u=d[i];u===s&&"value"!==i||c(l,i,s,u,a,e.children,n,r,ee)}}1&u&&e.children!==t.children&&m(l,t.children)}else s||null!=f||F(l,t,p,d,n,r,a);((v=d.onVnodeUpdated)||h)&&gt((()=>{v&&en(v,n,t,e),h&&je(t,e,n,"updated")}),r)},$=(e,t,n,r,o,a,i)=>{for(let s=0;s<t.length;s++){const c=e[s],l=t[s],u=c.el&&(c.type===Ct||!Ht(c,l)||70&c.shapeFlag)?v(c.el):n;k(c,l,u,null,r,o,a,i,!0)}},F=(e,t,n,r,a,i,s)=>{if(n!==r){if(n!==o.kT)for(const l in n)(0,o.Gg)(l)||l in r||c(e,l,n[l],null,s,t.children,a,i,ee);for(const l in r){if((0,o.Gg)(l))continue;const u=r[l],f=n[l];u!==f&&"value"!==l&&c(e,l,f,u,s,t.children,a,i,ee)}"value"in r&&c(e,"value",n.value,r.value)}},H=(e,t,r,o,a,i,s,c,l)=>{const u=t.el=e?e.el:h(""),f=t.anchor=e?e.anchor:h("");let{patchFlag:p,dynamicChildren:d,slotScopeIds:m}=t;m&&(c=c?c.concat(m):m),null==e?(n(u,r,o),n(f,r,o),z(t.children,r,f,a,i,s,c,l)):p>0&&64&p&&d&&e.dynamicChildren?($(e.dynamicChildren,d,r,a,i,s,c),(null!=t.key||a&&t===a.subTree)&&_t(e,t,!0)):Y(e,t,r,f,a,i,s,c,l)},D=(e,t,n,r,o,a,i,s,c)=>{t.slotScopeIds=s,null==e?512&t.shapeFlag?o.ctx.activate(t,n,r,i,c):V(t,n,r,o,a,i,c):U(e,t,c)},V=(e,t,n,i,c,l,u)=>{const f=e.component=function(e,t,n){const a=e.type,i=(t?t.appContext:e.appContext)||tn,s={uid:nn++,vnode:e,type:a,parent:t,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,scope:new r.Bj(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(i.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:rt(a,i),emitsOptions:O(a,i),emit:null,emitted:null,propsDefaults:o.kT,inheritAttrs:a.inheritAttrs,ctx:o.kT,data:o.kT,props:o.kT,attrs:o.kT,slots:o.kT,refs:o.kT,setupState:o.kT,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return s.ctx={_:s},s.root=t?t.root:s,s.emit=E.bind(null,s),e.ce&&e.ce(s),s}(e,i,c);if(se(e)&&(f.ctx.renderer=re),function(e,t=!1){ln=t;const{props:n,children:i}=e.vnode,c=cn(e);!function(e,t,n,a=!1){const i={},s={};(0,o.Nj)(s,Dt,1),e.propsDefaults=Object.create(null),tt(e,t,i,s);for(const t in e.propsOptions[0])t in i||(i[t]=void 0);n?e.props=a?i:(0,r.Um)(i):e.type.props?e.props=i:e.props=s,e.attrs=s}(e,n,c,t),((e,t)=>{if(32&e.vnode.shapeFlag){const n=t._;n?(e.slots=(0,r.IU)(t),(0,o.Nj)(t,"_",n)):ft(t,e.slots={})}else e.slots={},t&&ht(e,t);(0,o.Nj)(e.slots,Dt,1)})(e,i);const l=c?function(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=(0,r.Xl)(new Proxy(e.ctx,Be));const{setup:i}=n;if(i){const n=e.setupContext=i.length>1?function(e){const t=t=>{e.exposed=t||{}};let n;return{get attrs(){return n||(n=function(e){return new Proxy(e.attrs,{get:(t,n)=>((0,r.j)(e,"get","$attrs"),t[n])})}(e))},slots:e.slots,emit:e.emit,expose:t}}(e):null;an(e),(0,r.Jd)();const c=a(i,e,0,[e.props,n]);if((0,r.lk)(),sn(),(0,o.tI)(c)){if(c.then(sn,sn),t)return c.then((n=>{un(e,n,t)})).catch((t=>{s(t,e,0)}));e.asyncDep=c}else un(e,c,t)}else fn(e,t)}(e,t):void 0;ln=!1}(f),f.asyncDep){if(c&&c.registerDep(f,B),!e.el){const e=f.subTree=Wt(jt);N(null,e,t,n)}}else B(f,e,t,n,c,l,u)},U=(e,t,n)=>{const r=t.component=e.component;if(function(e,t,n){const{props:r,children:o,component:a}=e,{props:i,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(!(n&&c>=0))return!(!o&&!s||s&&s.$stable)||r!==i&&(r?!i||P(r,i,l):!!i);if(1024&c)return!0;if(16&c)return r?P(r,i,l):!!i;if(8&c){const e=t.dynamicProps;for(let t=0;t<e.length;t++){const n=e[t];if(i[n]!==r[n]&&!C(l,n))return!0}}return!1}(e,t,n)){if(r.asyncDep&&!r.asyncResolved)return void W(r,t,n);r.next=t,function(e){const t=u.indexOf(e);t>f&&u.splice(t,1)}(r.update),r.update()}else t.el=e.el,r.vnode=t},B=(e,t,n,a,i,s,c)=>{const l=e.effect=new r.qq((()=>{if(e.isMounted){let t,{next:n,bu:r,u:a,parent:l,vnode:u}=e,f=n;yt(e,!1),n?(n.el=u.el,W(e,n,c)):n=u,r&&(0,o.ir)(r),(t=n.props&&n.props.onVnodeBeforeUpdate)&&en(t,l,n,u),yt(e,!0);const h=T(e),p=e.subTree;e.subTree=h,k(p,h,v(p.el),te(p),e,i,s),n.el=h.el,null===f&&function({vnode:e,parent:t},n){for(;t&&t.subTree===e;)(e=t.vnode).el=n,t=t.parent}(e,h.el),a&&gt(a,i),(t=n.props&&n.props.onVnodeUpdated)&&gt((()=>en(t,l,n,u)),i)}else{let r;const{el:c,props:l}=t,{bm:u,m:f,parent:h}=e,p=oe(t);if(yt(e,!1),u&&(0,o.ir)(u),!p&&(r=l&&l.onVnodeBeforeMount)&&en(r,h,t),yt(e,!0),c&&ie){const n=()=>{e.subTree=T(e),ie(c,e.subTree,e,i,null)};p?t.type.__asyncLoader().then((()=>!e.isUnmounted&&n())):n()}else{const r=e.subTree=T(e);k(null,r,n,a,e,i,s),t.el=r.el}if(f&&gt(f,i),!p&&(r=l&&l.onVnodeMounted)){const e=t;gt((()=>en(r,h,e)),i)}(256&t.shapeFlag||h&&oe(h.vnode)&&256&h.vnode.shapeFlag)&&e.a&&gt(e.a,i),e.isMounted=!0,t=n=a=null}}),(()=>b(u)),e.scope),u=e.update=()=>l.run();u.id=e.uid,yt(e,!0),u()},W=(e,t,n)=>{t.component=e;const a=e.vnode.props;e.vnode=t,e.next=null,function(e,t,n,a){const{props:i,attrs:s,vnode:{patchFlag:c}}=e,l=(0,r.IU)(i),[u]=e.propsOptions;let f=!1;if(!(a||c>0)||16&c){let r;tt(e,t,i,s)&&(f=!0);for(const a in l)t&&((0,o.RI)(t,a)||(r=(0,o.rs)(a))!==a&&(0,o.RI)(t,r))||(u?!n||void 0===n[a]&&void 0===n[r]||(i[a]=nt(u,l,a,void 0,e,!0)):delete i[a]);if(s!==l)for(const e in s)t&&(0,o.RI)(t,e)||(delete s[e],f=!0)}else if(8&c){const n=e.vnode.dynamicProps;for(let r=0;r<n.length;r++){let a=n[r];if(C(e.emitsOptions,a))continue;const c=t[a];if(u)if((0,o.RI)(s,a))c!==s[a]&&(s[a]=c,f=!0);else{const t=(0,o._A)(a);i[t]=nt(u,l,t,c,e,!1)}else c!==s[a]&&(s[a]=c,f=!0)}}f&&(0,r.X$)(e,"set","$attrs")}(e,t.props,a,n),((e,t,n)=>{const{vnode:r,slots:a}=e;let i=!0,s=o.kT;if(32&r.shapeFlag){const e=t._;e?n&&1===e?i=!1:((0,o.l7)(a,t),n||1!==e||delete a._):(i=!t.$stable,ft(t,a)),s=t}else t&&(ht(e,t),s={default:1});if(i)for(const e in a)ct(e)||e in s||delete a[e]})(e,t.children,n),(0,r.Jd)(),_(),(0,r.lk)()},Y=(e,t,n,r,o,a,i,s,c=!1)=>{const l=e&&e.children,u=e?e.shapeFlag:0,f=t.children,{patchFlag:h,shapeFlag:p}=t;if(h>0){if(128&h)return void G(l,f,n,r,o,a,i,s,c);if(256&h)return void q(l,f,n,r,o,a,i,s,c)}8&p?(16&u&&ee(l,o,a),f!==l&&m(n,f)):16&u?16&p?G(l,f,n,r,o,a,i,s,c):ee(l,o,a,!0):(8&u&&m(n,""),16&p&&z(f,n,r,o,a,i,s,c))},q=(e,t,n,r,a,i,s,c,l)=>{e=e||o.Z6,t=t||o.Z6;const u=e.length,f=t.length,h=Math.min(u,f);let p;for(p=0;p<h;p++){const r=t[p]=l?Jt(t[p]):Xt(t[p]);k(e[p],r,n,null,a,i,s,c,l)}u>f?ee(e,a,i,!0,!1,h):z(t,n,r,a,i,s,c,l,h)},G=(e,t,n,r,a,i,s,c,l)=>{let u=0;const f=t.length;let h=e.length-1,p=f-1;for(;u<=h&&u<=p;){const r=e[u],o=t[u]=l?Jt(t[u]):Xt(t[u]);if(!Ht(r,o))break;k(r,o,n,null,a,i,s,c,l),u++}for(;u<=h&&u<=p;){const r=e[h],o=t[p]=l?Jt(t[p]):Xt(t[p]);if(!Ht(r,o))break;k(r,o,n,null,a,i,s,c,l),h--,p--}if(u>h){if(u<=p){const e=p+1,o=e<f?t[e].el:r;for(;u<=p;)k(null,t[u]=l?Jt(t[u]):Xt(t[u]),n,o,a,i,s,c,l),u++}}else if(u>p)for(;u<=h;)X(e[u],a,i,!0),u++;else{const d=u,m=u,v=new Map;for(u=m;u<=p;u++){const e=t[u]=l?Jt(t[u]):Xt(t[u]);null!=e.key&&v.set(e.key,u)}let g,b=0;const y=p-m+1;let _=!1,w=0;const x=new Array(y);for(u=0;u<y;u++)x[u]=0;for(u=d;u<=h;u++){const r=e[u];if(b>=y){X(r,a,i,!0);continue}let o;if(null!=r.key)o=v.get(r.key);else for(g=m;g<=p;g++)if(0===x[g-m]&&Ht(r,t[g])){o=g;break}void 0===o?X(r,a,i,!0):(x[o-m]=u+1,o>=w?w=o:_=!0,k(r,t[o],n,null,a,i,s,c,l),b++)}const S=_?function(e){const t=e.slice(),n=[0];let r,o,a,i,s;const c=e.length;for(r=0;r<c;r++){const c=e[r];if(0!==c){if(o=n[n.length-1],e[o]<c){t[r]=o,n.push(r);continue}for(a=0,i=n.length-1;a<i;)s=a+i>>1,e[n[s]]<c?a=s+1:i=s;c<e[n[a]]&&(a>0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,i=n[a-1];a-- >0;)n[a]=i,i=t[i];return n}(x):o.Z6;for(g=S.length-1,u=y-1;u>=0;u--){const e=m+u,o=t[e],h=e+1<f?t[e+1].el:r;0===x[u]?k(null,o,n,h,a,i,s,c,l):_&&(g<0||u!==S[g]?Z(o,n,h,2):g--)}}},Z=(e,t,r,o,a=null)=>{const{el:i,type:s,transition:c,children:l,shapeFlag:u}=e;if(6&u)Z(e.component.subTree,t,r,o);else if(128&u)e.suspense.move(t,r,o);else if(64&u)s.move(e,t,r,re);else if(s!==Ct)if(s!==At)if(2!==o&&1&u&&c)if(0===o)c.beforeEnter(i),n(i,t,r),gt((()=>c.enter(i)),a);else{const{leave:e,delayLeave:o,afterLeave:a}=c,s=()=>n(i,t,r),l=()=>{e(i,(()=>{s(),a&&a()}))};o?o(i,s,l):l()}else n(i,t,r);else(({el:e,anchor:t},r,o)=>{let a;for(;e&&e!==t;)a=g(e),n(e,r,o),e=a;n(t,r,o)})(e,t,r);else{n(i,t,r);for(let e=0;e<l.length;e++)Z(l[e],t,r,o);n(e.anchor,t,r)}},X=(e,t,n,r=!1,o=!1)=>{const{type:a,props:i,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:f,dirs:h}=e;if(null!=s&&vt(s,null,n,e,!0),256&u)return void t.ctx.deactivate(e);const p=1&u&&h,d=!oe(e);let m;if(d&&(m=i&&i.onVnodeBeforeUnmount)&&en(m,t,e),6&u)Q(e.component,n,r);else{if(128&u)return void e.suspense.unmount(n,r);p&&je(e,null,t,"beforeUnmount"),64&u?e.type.remove(e,t,n,o,re,r):l&&(a!==Ct||f>0&&64&f)?ee(l,t,n,!1,!0):(a===Ct&&384&f||!o&&16&u)&&ee(c,t,n),r&&J(e)}(d&&(m=i&&i.onVnodeUnmounted)||p)&&gt((()=>{m&&en(m,t,e),p&&je(e,null,t,"unmounted")}),n)},J=e=>{const{type:t,el:n,anchor:r,transition:o}=e;if(t===Ct)return void K(n,r);if(t===At)return void A(e);const a=()=>{i(n),o&&!o.persisted&&o.afterLeave&&o.afterLeave()};if(1&e.shapeFlag&&o&&!o.persisted){const{leave:t,delayLeave:r}=o,i=()=>t(n,a);r?r(e.el,a,i):i()}else a()},K=(e,t)=>{let n;for(;e!==t;)n=g(e),i(e),e=n;i(t)},Q=(e,t,n)=>{const{bum:r,scope:a,update:i,subTree:s,um:c}=e;r&&(0,o.ir)(r),a.stop(),i&&(i.active=!1,X(s,e,t,n)),c&&gt(c,t),gt((()=>{e.isUnmounted=!0}),t),t&&t.pendingBranch&&!t.isUnmounted&&e.asyncDep&&!e.asyncResolved&&e.suspenseId===t.pendingId&&(t.deps--,0===t.deps&&t.resolve())},ee=(e,t,n,r=!1,o=!1,a=0)=>{for(let i=a;i<e.length;i++)X(e[i],t,n,r,o)},te=e=>6&e.shapeFlag?te(e.component.subTree):128&e.shapeFlag?e.suspense.next():g(e.anchor||e.el),ne=(e,t,n)=>{null==e?t._vnode&&X(t._vnode,null,null,!0):k(t._vnode||null,e,t,null,null,null,n),_(),w(),t._vnode=e},re={p:k,um:X,m:Z,r:J,mt:V,mc:z,pc:Y,pbc:$,n:te,o:e};let ae,ie;return t&&([ae,ie]=t(re)),{render:ne,hydrate:ae,createApp:mt(ne,ae)}}(e)}function yt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function _t(e,t,n=!1){const r=e.children,a=t.children;if((0,o.kJ)(r)&&(0,o.kJ)(a))for(let e=0;e<r.length;e++){const t=r[e];let o=a[e];1&o.shapeFlag&&!o.dynamicChildren&&((o.patchFlag<=0||32===o.patchFlag)&&(o=a[e]=Jt(a[e]),o.el=t.el),n||_t(t,o)),o.type===Nt&&(o.el=t.el)}}const wt=e=>e&&(e.disabled||""===e.disabled),xt=e=>"undefined"!=typeof SVGElement&&e instanceof SVGElement,kt=(e,t)=>{const n=e&&e.to;if((0,o.HD)(n)){if(t){return t(n)}return null}return n};function St(e,t,n,{o:{insert:r},m:o},a=2){0===a&&r(e.targetAnchor,t,n);const{el:i,anchor:s,shapeFlag:c,children:l,props:u}=e,f=2===a;if(f&&r(i,t,n),(!f||wt(u))&&16&c)for(let e=0;e<l.length;e++)o(l[e],t,n,2);f&&r(s,t,n)}const Et={__isTeleport:!0,process(e,t,n,r,o,a,i,s,c,l){const{mc:u,pc:f,pbc:h,o:{insert:p,querySelector:d,createText:m,createComment:v}}=l,g=wt(t.props);let{shapeFlag:b,children:y,dynamicChildren:_}=t;if(null==e){const e=t.el=m(""),l=t.anchor=m("");p(e,n,r),p(l,n,r);const f=t.target=kt(t.props,d),h=t.targetAnchor=m("");f&&(p(h,f),i=i||xt(f));const v=(e,t)=>{16&b&&u(y,e,t,o,a,i,s,c)};g?v(n,l):f&&v(f,h)}else{t.el=e.el;const r=t.anchor=e.anchor,u=t.target=e.target,p=t.targetAnchor=e.targetAnchor,m=wt(e.props),v=m?n:u,b=m?r:p;if(i=i||xt(u),_?(h(e.dynamicChildren,_,v,o,a,i,s),_t(e,t,!0)):c||f(e,t,v,b,o,a,i,s,!1),g)m||St(t,n,r,l,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const e=t.target=kt(t.props,d);e&&St(t,e,null,l,0)}else m&&St(t,u,p,l,1)}Ot(t)},remove(e,t,n,r,{um:o,o:{remove:a}},i){const{shapeFlag:s,children:c,anchor:l,targetAnchor:u,target:f,props:h}=e;if(f&&a(u),(i||!wt(h))&&(a(l),16&s))for(let e=0;e<c.length;e++){const r=c[e];o(r,t,n,!0,!!r.dynamicChildren)}},move:St,hydrate:function(e,t,n,r,o,a,{o:{nextSibling:i,parentNode:s,querySelector:c}},l){const u=t.target=kt(t.props,c);if(u){const c=u._lpa||u.firstChild;if(16&t.shapeFlag)if(wt(t.props))t.anchor=l(i(e),t,s(e),n,r,o,a),t.targetAnchor=c;else{t.anchor=i(e);let s=c;for(;s;)if(s=i(s),s&&8===s.nodeType&&"teleport anchor"===s.data){t.targetAnchor=s,u._lpa=t.targetAnchor&&i(t.targetAnchor);break}l(c,t,u,n,r,o,a)}Ot(t)}return t.anchor&&i(t.anchor)}};function Ot(e){const t=e.ctx;if(t&&t.ut){let n=e.children[0].el;for(;n!==e.targetAnchor;)1===n.nodeType&&n.setAttribute("data-v-owner",t.uid),n=n.nextSibling;t.ut()}}const Ct=Symbol(void 0),Nt=Symbol(void 0),jt=Symbol(void 0),At=Symbol(void 0),Lt=[];let Mt=null;function It(e=!1){Lt.push(Mt=e?null:[])}let zt=1;function Tt(e){zt+=e}function Rt(e){return e.dynamicChildren=zt>0?Mt||o.Z6:null,Lt.pop(),Mt=Lt[Lt.length-1]||null,zt>0&&Mt&&Mt.push(e),e}function $t(e,t,n,r,o,a){return Rt(Bt(e,t,n,r,o,a,!0))}function Pt(e,t,n,r,o){return Rt(Wt(e,t,n,r,o,!0))}function Ft(e){return!!e&&!0===e.__v_isVNode}function Ht(e,t){return e.type===t.type&&e.key===t.key}const Dt="__vInternal",Vt=({key:e})=>null!=e?e:null,Ut=({ref:e,ref_key:t,ref_for:n})=>null!=e?(0,o.HD)(e)||(0,r.dq)(e)||(0,o.mf)(e)?{i:N,r:e,k:t,f:!!n}:e:null;function Bt(e,t=null,n=null,r=0,a=null,i=(e===Ct?0:1),s=!1,c=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Vt(t),ref:t&&Ut(t),scopeId:j,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:N};return c?(Kt(l,n),128&i&&e.normalize(l)):n&&(l.shapeFlag|=(0,o.HD)(n)?8:16),zt>0&&!s&&Mt&&(l.patchFlag>0||6&i)&&32!==l.patchFlag&&Mt.push(l),l}const Wt=function(e,t=null,n=null,a=0,i=null,s=!1){if(e&&e!==Me||(e=jt),Ft(e)){const r=qt(e,t,!0);return n&&Kt(r,n),zt>0&&!s&&Mt&&(6&r.shapeFlag?Mt[Mt.indexOf(e)]=r:Mt.push(r)),r.patchFlag|=-2,r}if(c=e,(0,o.mf)(c)&&"__vccOpts"in c&&(e=e.__vccOpts),t){t=Yt(t);let{class:e,style:n}=t;e&&!(0,o.HD)(e)&&(t.class=(0,o.C_)(e)),(0,o.Kn)(n)&&((0,r.X3)(n)&&!(0,o.kJ)(n)&&(n=(0,o.l7)({},n)),t.style=(0,o.j5)(n))}var c;return Bt(e,t,n,a,i,(0,o.HD)(e)?1:F(e)?128:(e=>e.__isTeleport)(e)?64:(0,o.Kn)(e)?4:(0,o.mf)(e)?2:0,s,!0)};function Yt(e){return e?(0,r.X3)(e)||Dt in e?(0,o.l7)({},e):e:null}function qt(e,t,n=!1){const{props:r,ref:a,patchFlag:i,children:s}=e,c=t?Qt(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&Vt(c),ref:t&&t.ref?n&&a?(0,o.kJ)(a)?a.concat(Ut(t)):[a,Ut(t)]:Ut(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ct?-1===i?16:16|i:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&qt(e.ssContent),ssFallback:e.ssFallback&&qt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function Gt(e=" ",t=0){return Wt(Nt,null,e,t)}function Zt(e="",t=!1){return t?(It(),Pt(jt,null,e)):Wt(jt,null,e)}function Xt(e){return null==e||"boolean"==typeof e?Wt(jt):(0,o.kJ)(e)?Wt(Ct,null,e.slice()):"object"==typeof e?Jt(e):Wt(Nt,null,String(e))}function Jt(e){return null===e.el&&-1!==e.patchFlag||e.memo?e:qt(e)}function Kt(e,t){let n=0;const{shapeFlag:r}=e;if(null==t)t=null;else if((0,o.kJ)(t))n=16;else if("object"==typeof t){if(65&r){const n=t.default;return void(n&&(n._c&&(n._d=!1),Kt(e,n()),n._c&&(n._d=!0)))}{n=32;const r=t._;r||Dt in t?3===r&&N&&(1===N.slots._?t._=1:(t._=2,e.patchFlag|=1024)):t._ctx=N}}else(0,o.mf)(t)?(t={default:t,_ctx:N},n=32):(t=String(t),64&r?(n=16,t=[Gt(t)]):n=8);e.children=t,e.shapeFlag|=n}function Qt(...e){const t={};for(let n=0;n<e.length;n++){const r=e[n];for(const e in r)if("class"===e)t.class!==r.class&&(t.class=(0,o.C_)([t.class,r.class]));else if("style"===e)t.style=(0,o.j5)([t.style,r.style]);else if((0,o.F7)(e)){const n=t[e],a=r[e];!a||n===a||(0,o.kJ)(n)&&n.includes(a)||(t[e]=n?[].concat(n,a):a)}else""!==e&&(t[e]=r[e])}return t}function en(e,t,n,r=null){i(e,t,7,[n,r])}const tn=pt();let nn=0;let rn=null;const on=()=>rn||N,an=e=>{rn=e,e.scope.on()},sn=()=>{rn&&rn.scope.off(),rn=null};function cn(e){return 4&e.vnode.shapeFlag}let ln=!1;function un(e,t,n){(0,o.mf)(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:(0,o.Kn)(t)&&(e.setupState=(0,r.WL)(t)),fn(e,n)}function fn(e,t,n){const a=e.type;e.render||(e.render=a.render||o.dG),an(e),(0,r.Jd)(),function(e){const t=Ge(e),n=e.proxy,a=e.ctx;We=!1,t.beforeCreate&&Ye(t.beforeCreate,e,"bc");const{data:i,computed:s,methods:c,watch:l,provide:u,inject:f,created:h,beforeMount:p,mounted:d,beforeUpdate:m,updated:v,activated:g,deactivated:b,beforeDestroy:y,beforeUnmount:_,destroyed:w,unmounted:x,render:k,renderTracked:S,renderTriggered:E,errorCaptured:O,serverPrefetch:C,expose:N,inheritAttrs:j,components:A,directives:L,filters:M}=t;if(f&&function(e,t,n=o.dG,a=!1){(0,o.kJ)(e)&&(e=Ke(e));for(const n in e){const i=e[n];let s;s=(0,o.Kn)(i)?"default"in i?D(i.from||n,i.default,!0):D(i.from||n):D(i),(0,r.dq)(s)&&a?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>s.value,set:e=>s.value=e}):t[n]=s}}(f,a,null,e.appContext.config.unwrapInjectedRef),c)for(const e in c){const t=c[e];(0,o.mf)(t)&&(a[e]=t.bind(n))}if(i){const t=i.call(n,n);(0,o.Kn)(t)&&(e.data=(0,r.qj)(t))}if(We=!0,s)for(const e in s){const t=s[e],r=(0,o.mf)(t)?t.bind(n,n):(0,o.mf)(t.get)?t.get.bind(n,n):o.dG,i=!(0,o.mf)(t)&&(0,o.mf)(t.set)?t.set.bind(n):o.dG,c=dn({get:r,set:i});Object.defineProperty(a,e,{enumerable:!0,configurable:!0,get:()=>c.value,set:e=>c.value=e})}if(l)for(const e in l)qe(l[e],a,n,e);if(u){const e=(0,o.mf)(u)?u.call(n):u;Reflect.ownKeys(e).forEach((t=>{H(t,e[t])}))}function I(e,t){(0,o.kJ)(t)?t.forEach((t=>e(t.bind(n)))):t&&e(t.bind(n))}if(h&&Ye(h,e,"c"),I(be,p),I(ye,d),I(_e,m),I(we,v),I(ue,g),I(fe,b),I(Ce,O),I(Oe,S),I(Ee,E),I(xe,_),I(ke,x),I(Se,C),(0,o.kJ)(N))if(N.length){const t=e.exposed||(e.exposed={});N.forEach((e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t})}))}else e.exposed||(e.exposed={});k&&e.render===o.dG&&(e.render=k),null!=j&&(e.inheritAttrs=j),A&&(e.components=A),L&&(e.directives=L)}(e),(0,r.lk)(),sn()}function hn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy((0,r.WL)((0,r.Xl)(e.exposed)),{get:(t,n)=>n in t?t[n]:n in Ve?Ve[n](e):void 0,has:(e,t)=>t in e||t in Ve}))}function pn(e,t=!0){return(0,o.mf)(e)?e.displayName||e.name:e.name||t&&e.__name}const dn=(e,t)=>(0,r.Fl)(e,t,ln);function mn(e,t,n){const r=arguments.length;return 2===r?(0,o.Kn)(t)&&!(0,o.kJ)(t)?Ft(t)?Wt(e,null,[t]):Wt(e,t):Wt(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):3===r&&Ft(n)&&(n=[n]),Wt(e,t,n))}const vn=Symbol(""),gn=()=>D(vn),bn="3.2.45"},49963:(e,t,n)=>{"use strict";n.d(t,{D2:()=>Z,F8:()=>X,YZ:()=>U,e8:()=>R,iM:()=>q,nr:()=>T,ri:()=>ee,uT:()=>_});var r=n(3577),o=n(66252);n(2262);const a="undefined"!=typeof document?document:null,i=a&&a.createElement("template"),s={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?a.createElementNS("http://www.w3.org/2000/svg",e):a.createElement(e,n?{is:n}:void 0);return"select"===e&&r&&null!=r.multiple&&o.setAttribute("multiple",r.multiple),o},createText:e=>a.createTextNode(e),createComment:e=>a.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>a.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,a){const s=n?n.previousSibling:t.lastChild;if(o&&(o===a||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),o!==a&&(o=o.nextSibling););else{i.innerHTML=r?`<svg>${e}</svg>`:e;const o=i.content;if(r){const e=o.firstChild;for(;e.firstChild;)o.appendChild(e.firstChild);o.removeChild(e)}t.insertBefore(o,n)}return[s?s.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},c=/\s*!important$/;function l(e,t,n){if((0,r.kJ)(n))n.forEach((n=>l(e,t,n)));else if(null==n&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const o=function(e,t){const n=f[t];if(n)return n;let o=(0,r._A)(t);if("filter"!==o&&o in e)return f[t]=o;o=(0,r.kC)(o);for(let n=0;n<u.length;n++){const r=u[n]+o;if(r in e)return f[t]=r}return t}(e,t);c.test(n)?e.setProperty((0,r.rs)(o),n.replace(c,""),"important"):e[o]=n}}const u=["Webkit","Moz","ms"],f={},h="http://www.w3.org/1999/xlink";function p(e,t,n,r){e.addEventListener(t,n,r)}const d=/(?:Once|Passive|Capture)$/;let m=0;const v=Promise.resolve(),g=/^on[a-z]/;"undefined"!=typeof HTMLElement&&HTMLElement;const b="transition",y="animation",_=(e,{slots:t})=>(0,o.h)(o.P$,function(e){const t={};for(const n in e)n in w||(t[n]=e[n]);if(!1===e.css)return t;const{name:n="v",type:o,duration:a,enterFromClass:i=`${n}-enter-from`,enterActiveClass:s=`${n}-enter-active`,enterToClass:c=`${n}-enter-to`,appearFromClass:l=i,appearActiveClass:u=s,appearToClass:f=c,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:d=`${n}-leave-to`}=e,m=function(e){if(null==e)return null;if((0,r.Kn)(e))return[S(e.enter),S(e.leave)];{const t=S(e);return[t,t]}}(a),v=m&&m[0],g=m&&m[1],{onBeforeEnter:b,onEnter:y,onEnterCancelled:_,onLeave:N,onLeaveCancelled:A,onBeforeAppear:L=b,onAppear:M=y,onAppearCancelled:I=_}=t,z=(e,t,n)=>{O(e,t?f:c),O(e,t?u:s),n&&n()},T=(e,t)=>{e._isLeaving=!1,O(e,h),O(e,d),O(e,p),t&&t()},R=e=>(t,n)=>{const r=e?M:y,a=()=>z(t,e,n);x(r,[t,a]),C((()=>{O(t,e?l:i),E(t,e?f:c),k(r)||j(t,o,v,a)}))};return(0,r.l7)(t,{onBeforeEnter(e){x(b,[e]),E(e,i),E(e,s)},onBeforeAppear(e){x(L,[e]),E(e,l),E(e,u)},onEnter:R(!1),onAppear:R(!0),onLeave(e,t){e._isLeaving=!0;const n=()=>T(e,t);E(e,h),document.body.offsetHeight,E(e,p),C((()=>{e._isLeaving&&(O(e,h),E(e,d),k(N)||j(e,o,g,n))})),x(N,[e,n])},onEnterCancelled(e){z(e,!1),x(_,[e])},onAppearCancelled(e){z(e,!0),x(I,[e])},onLeaveCancelled(e){T(e),x(A,[e])}})}(e),t);_.displayName="Transition";const w={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},x=(_.props=(0,r.l7)({},o.P$.props,w),(e,t=[])=>{(0,r.kJ)(e)?e.forEach((e=>e(...t))):e&&e(...t)}),k=e=>!!e&&((0,r.kJ)(e)?e.some((e=>e.length>1)):e.length>1);function S(e){return(0,r.He)(e)}function E(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.add(t))),(e._vtc||(e._vtc=new Set)).add(t)}function O(e,t){t.split(/\s+/).forEach((t=>t&&e.classList.remove(t)));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function C(e){requestAnimationFrame((()=>{requestAnimationFrame(e)}))}let N=0;function j(e,t,n,r){const o=e._endId=++N,a=()=>{o===e._endId&&r()};if(n)return setTimeout(a,n);const{type:i,timeout:s,propCount:c}=function(e,t){const n=window.getComputedStyle(e),r=e=>(n[e]||"").split(", "),o=r("transitionDelay"),a=r("transitionDuration"),i=A(o,a),s=r("animationDelay"),c=r("animationDuration"),l=A(s,c);let u=null,f=0,h=0;return t===b?i>0&&(u=b,f=i,h=a.length):t===y?l>0&&(u=y,f=l,h=c.length):(f=Math.max(i,l),u=f>0?i>l?b:y:null,h=u?u===b?a.length:c.length:0),{type:u,timeout:f,propCount:h,hasTransform:u===b&&/\b(transform|all)(,|$)/.test(r("transitionProperty").toString())}}(e,t);if(!i)return r();const l=i+"end";let u=0;const f=()=>{e.removeEventListener(l,h),a()},h=t=>{t.target===e&&++u>=c&&f()};setTimeout((()=>{u<c&&f()}),s+1),e.addEventListener(l,h)}function A(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map(((t,n)=>L(t)+L(e[n]))))}function L(e){return 1e3*Number(e.slice(0,-1).replace(",","."))}new WeakMap,new WeakMap;const M=e=>{const t=e.props["onUpdate:modelValue"]||!1;return(0,r.kJ)(t)?e=>(0,r.ir)(t,e):t};function I(e){e.target.composing=!0}function z(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const T={created(e,{modifiers:{lazy:t,trim:n,number:o}},a){e._assign=M(a);const i=o||a.props&&"number"===a.props.type;p(e,t?"change":"input",(t=>{if(t.target.composing)return;let o=e.value;n&&(o=o.trim()),i&&(o=(0,r.He)(o)),e._assign(o)})),n&&p(e,"change",(()=>{e.value=e.value.trim()})),t||(p(e,"compositionstart",I),p(e,"compositionend",z),p(e,"change",z))},mounted(e,{value:t}){e.value=null==t?"":t},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:o,number:a}},i){if(e._assign=M(i),e.composing)return;if(document.activeElement===e&&"range"!==e.type){if(n)return;if(o&&e.value.trim()===t)return;if((a||"number"===e.type)&&(0,r.He)(e.value)===t)return}const s=null==t?"":t;e.value!==s&&(e.value=s)}},R={deep:!0,created(e,t,n){e._assign=M(n),p(e,"change",(()=>{const t=e._modelValue,n=D(e),o=e.checked,a=e._assign;if((0,r.kJ)(t)){const e=(0,r.hq)(t,n),i=-1!==e;if(o&&!i)a(t.concat(n));else if(!o&&i){const n=[...t];n.splice(e,1),a(n)}}else if((0,r.DM)(t)){const e=new Set(t);o?e.add(n):e.delete(n),a(e)}else a(V(e,o))}))},mounted:$,beforeUpdate(e,t,n){e._assign=M(n),$(e,t,n)}};function $(e,{value:t,oldValue:n},o){e._modelValue=t,(0,r.kJ)(t)?e.checked=(0,r.hq)(t,o.props.value)>-1:(0,r.DM)(t)?e.checked=t.has(o.props.value):t!==n&&(e.checked=(0,r.WV)(t,V(e,!0)))}const P={created(e,{value:t},n){e.checked=(0,r.WV)(t,n.props.value),e._assign=M(n),p(e,"change",(()=>{e._assign(D(e))}))},beforeUpdate(e,{value:t,oldValue:n},o){e._assign=M(o),t!==n&&(e.checked=(0,r.WV)(t,o.props.value))}},F={deep:!0,created(e,{value:t,modifiers:{number:n}},o){const a=(0,r.DM)(t);p(e,"change",(()=>{const t=Array.prototype.filter.call(e.options,(e=>e.selected)).map((e=>n?(0,r.He)(D(e)):D(e)));e._assign(e.multiple?a?new Set(t):t:t[0])})),e._assign=M(o)},mounted(e,{value:t}){H(e,t)},beforeUpdate(e,t,n){e._assign=M(n)},updated(e,{value:t}){H(e,t)}};function H(e,t){const n=e.multiple;if(!n||(0,r.kJ)(t)||(0,r.DM)(t)){for(let o=0,a=e.options.length;o<a;o++){const a=e.options[o],i=D(a);if(n)(0,r.kJ)(t)?a.selected=(0,r.hq)(t,i)>-1:a.selected=t.has(i);else if((0,r.WV)(D(a),t))return void(e.selectedIndex!==o&&(e.selectedIndex=o))}n||-1===e.selectedIndex||(e.selectedIndex=-1)}}function D(e){return"_value"in e?e._value:e.value}function V(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const U={created(e,t,n){B(e,t,n,null,"created")},mounted(e,t,n){B(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){B(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){B(e,t,n,r,"updated")}};function B(e,t,n,r,o){const a=function(e,t){switch(e){case"SELECT":return F;case"TEXTAREA":return T;default:switch(t){case"checkbox":return R;case"radio":return P;default:return T}}}(e.tagName,n.props&&n.props.type)[o];a&&a(e,t,n,r)}const W=["ctrl","shift","alt","meta"],Y={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&0!==e.button,middle:e=>"button"in e&&1!==e.button,right:e=>"button"in e&&2!==e.button,exact:(e,t)=>W.some((n=>e[`${n}Key`]&&!t.includes(n)))},q=(e,t)=>(n,...r)=>{for(let e=0;e<t.length;e++){const r=Y[t[e]];if(r&&r(n,t))return}return e(n,...r)},G={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Z=(e,t)=>n=>{if(!("key"in n))return;const o=(0,r.rs)(n.key);return t.some((e=>e===o||G[e]===o))?e(n):void 0},X={beforeMount(e,{value:t},{transition:n}){e._vod="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):J(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),J(e,!0),r.enter(e)):r.leave(e,(()=>{J(e,!1)})):J(e,t))},beforeUnmount(e,{value:t}){J(e,t)}};function J(e,t){e.style.display=t?e._vod:"none"}const K=(0,r.l7)({patchProp:(e,t,n,a,i=!1,s,c,u,f)=>{"class"===t?function(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),null==t?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}(e,a,i):"style"===t?function(e,t,n){const o=e.style,a=(0,r.HD)(n);if(n&&!a){for(const e in n)l(o,e,n[e]);if(t&&!(0,r.HD)(t))for(const e in t)null==n[e]&&l(o,e,"")}else{const r=o.display;a?t!==n&&(o.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(o.display=r)}}(e,n,a):(0,r.F7)(t)?(0,r.tR)(t)||function(e,t,n,a,i=null){const s=e._vei||(e._vei={}),c=s[t];if(a&&c)c.value=a;else{const[n,l]=function(e){let t;if(d.test(e)){let n;for(t={};n=e.match(d);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[":"===e[2]?e.slice(3):(0,r.rs)(e.slice(2)),t]}(t);if(a){const c=s[t]=function(e,t){const n=e=>{if(e._vts){if(e._vts<=n.attached)return}else e._vts=Date.now();(0,o.$d)(function(e,t){if((0,r.kJ)(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map((e=>t=>!t._stopped&&e&&e(t)))}return t}(e,n.value),t,5,[e])};return n.value=e,n.attached=m||(v.then((()=>m=0)),m=Date.now()),n}(a,i);p(e,n,c,l)}else c&&(function(e,t,n,r){e.removeEventListener(t,n,r)}(e,n,c,l),s[t]=void 0)}}(e,t,0,a,c):("."===t[0]?(t=t.slice(1),1):"^"===t[0]?(t=t.slice(1),0):function(e,t,n,o){return o?"innerHTML"===t||"textContent"===t||!!(t in e&&g.test(t)&&(0,r.mf)(n)):"spellcheck"!==t&&"draggable"!==t&&"translate"!==t&&("form"!==t&&(("list"!==t||"INPUT"!==e.tagName)&&(("type"!==t||"TEXTAREA"!==e.tagName)&&((!g.test(t)||!(0,r.HD)(n))&&t in e))))}(e,t,a,i))?function(e,t,n,o,a,i,s){if("innerHTML"===t||"textContent"===t)return o&&s(o,a,i),void(e[t]=null==n?"":n);if("value"===t&&"PROGRESS"!==e.tagName&&!e.tagName.includes("-")){e._value=n;const r=null==n?"":n;return e.value===r&&"OPTION"!==e.tagName||(e.value=r),void(null==n&&e.removeAttribute(t))}let c=!1;if(""===n||null==n){const o=typeof e[t];"boolean"===o?n=(0,r.yA)(n):null==n&&"string"===o?(n="",c=!0):"number"===o&&(n=0,c=!0)}try{e[t]=n}catch(e){}c&&e.removeAttribute(t)}(e,t,a,s,c,u,f):("true-value"===t?e._trueValue=a:"false-value"===t&&(e._falseValue=a),function(e,t,n,o,a){if(o&&t.startsWith("xlink:"))null==n?e.removeAttributeNS(h,t.slice(6,t.length)):e.setAttributeNS(h,t,n);else{const o=(0,r.Pq)(t);null==n||o&&!(0,r.yA)(n)?e.removeAttribute(t):e.setAttribute(t,o?"":n)}}(e,t,a,i))}},s);let Q;const ee=(...e)=>{const t=(Q||(Q=(0,o.Us)(K))).createApp(...e),{mount:n}=t;return t.mount=e=>{const o=function(e){if((0,r.HD)(e))return document.querySelector(e);return e}(e);if(!o)return;const a=t._component;(0,r.mf)(a)||a.render||a.template||(a.template=o.innerHTML),o.innerHTML="";const i=n(o,!1,o instanceof SVGElement);return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t}},3577:(e,t,n)=>{"use strict";function r(e,t){const n=Object.create(null),r=e.split(",");for(let e=0;e<r.length;e++)n[r[e]]=!0;return t?e=>!!n[e.toLowerCase()]:e=>!!n[e]}n.d(t,{C_:()=>u,DM:()=>L,E9:()=>ne,F7:()=>k,Gg:()=>U,HD:()=>z,He:()=>ee,Kn:()=>R,NO:()=>w,Nj:()=>Q,Od:()=>O,PO:()=>D,Pq:()=>h,RI:()=>N,S0:()=>V,W7:()=>H,WV:()=>d,Z6:()=>y,_A:()=>Y,_N:()=>A,aU:()=>J,dG:()=>_,e1:()=>o,fY:()=>r,hR:()=>X,hq:()=>m,ir:()=>K,j5:()=>a,kC:()=>Z,kJ:()=>j,kT:()=>b,l7:()=>E,mf:()=>I,rs:()=>G,tI:()=>$,tR:()=>S,vs:()=>f,yA:()=>p,yk:()=>T,zw:()=>v});const o=r("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt");function a(e){if(j(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],o=z(r)?l(r):a(r);if(o)for(const e in o)t[e]=o[e]}return t}return z(e)||R(e)?e:void 0}const i=/;(?![^(]*\))/g,s=/:([^]+)/,c=/\/\*.*?\*\//gs;function l(e){const t={};return e.replace(c,"").split(i).forEach((e=>{if(e){const n=e.split(s);n.length>1&&(t[n[0].trim()]=n[1].trim())}})),t}function u(e){let t="";if(z(e))t=e;else if(j(e))for(let n=0;n<e.length;n++){const r=u(e[n]);r&&(t+=r+" ")}else if(R(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}function f(e){if(!e)return null;let{class:t,style:n}=e;return t&&!z(t)&&(e.class=u(t)),n&&(e.style=a(n)),e}const h=r("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function p(e){return!!e||""===e}function d(e,t){if(e===t)return!0;let n=M(e),r=M(t);if(n||r)return!(!n||!r)&&e.getTime()===t.getTime();if(n=T(e),r=T(t),n||r)return e===t;if(n=j(e),r=j(t),n||r)return!(!n||!r)&&function(e,t){if(e.length!==t.length)return!1;let n=!0;for(let r=0;n&&r<e.length;r++)n=d(e[r],t[r]);return n}(e,t);if(n=R(e),r=R(t),n||r){if(!n||!r)return!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e){const r=e.hasOwnProperty(n),o=t.hasOwnProperty(n);if(r&&!o||!r&&o||!d(e[n],t[n]))return!1}}return String(e)===String(t)}function m(e,t){return e.findIndex((e=>d(e,t)))}const v=e=>z(e)?e:null==e?"":j(e)||R(e)&&(e.toString===P||!I(e.toString))?JSON.stringify(e,g,2):String(e),g=(e,t)=>t&&t.__v_isRef?g(e,t.value):A(t)?{[`Map(${t.size})`]:[...t.entries()].reduce(((e,[t,n])=>(e[`${t} =>`]=n,e)),{})}:L(t)?{[`Set(${t.size})`]:[...t.values()]}:!R(t)||j(t)||D(t)?t:String(t),b={},y=[],_=()=>{},w=()=>!1,x=/^on[^a-z]/,k=e=>x.test(e),S=e=>e.startsWith("onUpdate:"),E=Object.assign,O=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},C=Object.prototype.hasOwnProperty,N=(e,t)=>C.call(e,t),j=Array.isArray,A=e=>"[object Map]"===F(e),L=e=>"[object Set]"===F(e),M=e=>"[object Date]"===F(e),I=e=>"function"==typeof e,z=e=>"string"==typeof e,T=e=>"symbol"==typeof e,R=e=>null!==e&&"object"==typeof e,$=e=>R(e)&&I(e.then)&&I(e.catch),P=Object.prototype.toString,F=e=>P.call(e),H=e=>F(e).slice(8,-1),D=e=>"[object Object]"===F(e),V=e=>z(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,U=r(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),B=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},W=/-(\w)/g,Y=B((e=>e.replace(W,((e,t)=>t?t.toUpperCase():"")))),q=/\B([A-Z])/g,G=B((e=>e.replace(q,"-$1").toLowerCase())),Z=B((e=>e.charAt(0).toUpperCase()+e.slice(1))),X=B((e=>e?`on${Z(e)}`:"")),J=(e,t)=>!Object.is(e,t),K=(e,t)=>{for(let n=0;n<e.length;n++)e[n](t)},Q=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},ee=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let te;const ne=()=>te||(te="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{})},21359:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>S});var r=n(2262),o=n(66252);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){s(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function c(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Object.keys(e).reduce(((n,o)=>(t.includes(o)||(n[o]=(0,r.SU)(e[o])),n)),{})}function l(e){return"function"==typeof e}function u(e){return(0,r.PG)(e)||(0,r.$y)(e)}function f(e,t,n){let r=e;const o=t.split(".");for(let e=0;e<o.length;e++){if(!r[o[e]])return n;r=r[o[e]]}return r}function h(e,t,n){return(0,o.Fl)((()=>e.some((e=>f(t,e,{[n]:!1})[n]))))}function p(e,t,n){return(0,o.Fl)((()=>e.reduce(((e,r)=>{const o=f(t,r,{[n]:!1})[n]||[];return e.concat(o)}),[])))}function d(e,t,n,o){return e.call(o,(0,r.SU)(t),(0,r.SU)(n),o)}function m(e){return void 0!==e.$valid?!e.$valid:!e}function v(e){let{validations:t,state:n,key:a,parentKey:s,childResults:u,resultsCache:f,globalConfig:g={},instance:b,externalResults:y}=e;const _=s?`${s}.${a}`:a,{rules:w,nestedValidators:x,config:k,validationGroups:S}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=(0,r.SU)(e),n=Object.keys(t),o={},a={},i={};let s=null;return n.forEach((e=>{const n=t[e];switch(!0){case l(n.$validator):o[e]=n;break;case l(n):o[e]={$validator:n};break;case"$validationGroups"===e:s=n;break;case e.startsWith("$"):i[e]=n;break;default:a[e]=n}})),{rules:o,nestedValidators:a,config:i,validationGroups:s}}(t),E=i(i({},g),k),O=a?(0,o.Fl)((()=>{const e=(0,r.SU)(n);return e?(0,r.SU)(e[a]):void 0})):n,C=i({},(0,r.SU)(y)||{}),N=(0,o.Fl)((()=>{const e=(0,r.SU)(y);return a?e?(0,r.SU)(e[a]):void 0:e})),j=function(e,t,n,a,i,s,u,f,h){const p=Object.keys(e),v=a.get(i,e),g=(0,r.iH)(!1),b=(0,r.iH)(!1),y=(0,r.iH)(0);if(v){if(!v.$partial)return v;v.$unwatch(),g.value=v.$dirty.value}const _={$dirty:g,$path:i,$touch:()=>{g.value||(g.value=!0)},$reset:()=>{g.value&&(g.value=!1)},$commit:()=>{}};return p.length?(p.forEach((a=>{_[a]=function(e,t,n,a,i,s,u,f,h,p,v){const g=(0,r.iH)(!1),b=e.$params||{},y=(0,r.iH)(null);let _,w;e.$async?({$invalid:_,$unwatch:w}=function(e,t,n,a,i,s,c){let{$lazy:l,$rewardEarly:u}=i,f=arguments.length>7&&void 0!==arguments[7]?arguments[7]:[],h=arguments.length>8?arguments[8]:void 0,p=arguments.length>9?arguments[9]:void 0,v=arguments.length>10?arguments[10]:void 0;const g=(0,r.iH)(!!a.value),b=(0,r.iH)(0);n.value=!1;const y=(0,o.YP)([t,a].concat(f,v),(()=>{if(l&&!a.value||u&&!p.value&&!n.value)return;let r;try{r=d(e,t,h,c)}catch(e){r=Promise.reject(e)}b.value++,n.value=!!b.value,g.value=!1,Promise.resolve(r).then((e=>{b.value--,n.value=!!b.value,s.value=e,g.value=m(e)})).catch((e=>{b.value--,n.value=!!b.value,s.value=e,g.value=!0}))}),{immediate:!0,deep:"object"==typeof t});return{$invalid:g,$unwatch:y}}(e.$validator,t,g,n,a,y,i,e.$watchTargets,h,p,v)):({$invalid:_,$unwatch:w}=function(e,t,n,r,a,i,s,c){let{$lazy:l,$rewardEarly:u}=r;return{$unwatch:()=>({}),$invalid:(0,o.Fl)((()=>{if(l&&!n.value||u&&!c.value)return!1;let r=!0;try{const n=d(e,t,s,i);a.value=n,r=m(n)}catch(e){a.value=e}return r}))}}(e.$validator,t,n,a,y,i,h,p));const x=e.$message;return{$message:l(x)?(0,o.Fl)((()=>x(c({$pending:g,$invalid:_,$params:c(b),$model:t,$response:y,$validator:s,$propertyPath:f,$property:u})))):x||"",$params:b,$pending:g,$invalid:_,$response:y,$unwatch:w}}(e[a],t,_.$dirty,s,u,a,n,i,h,b,y)})),_.$externalResults=(0,o.Fl)((()=>f.value?[].concat(f.value).map(((e,t)=>({$propertyPath:i,$property:n,$validator:"$externalResults",$uid:`${i}-externalResult-${t}`,$message:e,$params:{},$response:null,$pending:!1}))):[])),_.$invalid=(0,o.Fl)((()=>{const e=p.some((e=>(0,r.SU)(_[e].$invalid)));return b.value=e,!!_.$externalResults.value.length||e})),_.$pending=(0,o.Fl)((()=>p.some((e=>(0,r.SU)(_[e].$pending))))),_.$error=(0,o.Fl)((()=>!!_.$dirty.value&&(_.$pending.value||_.$invalid.value))),_.$silentErrors=(0,o.Fl)((()=>p.filter((e=>(0,r.SU)(_[e].$invalid))).map((e=>{const t=_[e];return(0,r.qj)({$propertyPath:i,$property:n,$validator:e,$uid:`${i}-${e}`,$message:t.$message,$params:t.$params,$response:t.$response,$pending:t.$pending})})).concat(_.$externalResults.value))),_.$errors=(0,o.Fl)((()=>_.$dirty.value?_.$silentErrors.value:[])),_.$unwatch=()=>p.forEach((e=>{_[e].$unwatch()})),_.$commit=()=>{b.value=!0,y.value=Date.now()},a.set(i,e,_),_):(v&&a.set(i,e,_),_)}(w,O,a,f,_,E,b,N,n),A=function(e,t,n,r,o,a,i){const s=Object.keys(e);return s.length?s.reduce(((s,c)=>(s[c]=v({validations:e[c],state:t,key:c,parentKey:n,resultsCache:r,globalConfig:o,instance:a,externalResults:i}),s)),{}):{}}(x,O,_,f,E,b,N),L={};S&&Object.entries(S).forEach((e=>{let[t,n]=e;L[t]={$invalid:h(n,A,"$invalid"),$error:h(n,A,"$error"),$pending:h(n,A,"$pending"),$errors:p(n,A,"$errors"),$silentErrors:p(n,A,"$silentErrors")}}));const{$dirty:M,$errors:I,$invalid:z,$anyDirty:T,$error:R,$pending:$,$touch:P,$reset:F,$silentErrors:H,$commit:D}=function(e,t,n){const a=(0,o.Fl)((()=>[t,n].filter((e=>e)).reduce(((e,t)=>e.concat(Object.values((0,r.SU)(t)))),[]))),i=(0,o.Fl)({get:()=>e.$dirty.value||!!a.value.length&&a.value.every((e=>e.$dirty)),set(t){e.$dirty.value=t}}),s=(0,o.Fl)((()=>{const t=(0,r.SU)(e.$silentErrors)||[],n=a.value.filter((e=>((0,r.SU)(e).$silentErrors||[]).length)).reduce(((e,t)=>e.concat(...t.$silentErrors)),[]);return t.concat(n)})),c=(0,o.Fl)((()=>{const t=(0,r.SU)(e.$errors)||[],n=a.value.filter((e=>((0,r.SU)(e).$errors||[]).length)).reduce(((e,t)=>e.concat(...t.$errors)),[]);return t.concat(n)})),l=(0,o.Fl)((()=>a.value.some((e=>e.$invalid))||(0,r.SU)(e.$invalid)||!1)),u=(0,o.Fl)((()=>a.value.some((e=>(0,r.SU)(e.$pending)))||(0,r.SU)(e.$pending)||!1)),f=(0,o.Fl)((()=>a.value.some((e=>e.$dirty))||a.value.some((e=>e.$anyDirty))||i.value)),h=(0,o.Fl)((()=>!!i.value&&(u.value||l.value))),p=()=>{e.$touch(),a.value.forEach((e=>{e.$touch()}))};return a.value.length&&a.value.every((e=>e.$dirty))&&p(),{$dirty:i,$errors:c,$invalid:l,$anyDirty:f,$error:h,$pending:u,$touch:p,$reset:()=>{e.$reset(),a.value.forEach((e=>{e.$reset()}))},$silentErrors:s,$commit:()=>{e.$commit(),a.value.forEach((e=>{e.$commit()}))}}}(j,A,u),V=a?(0,o.Fl)({get:()=>(0,r.SU)(O),set:e=>{M.value=!0;const t=(0,r.SU)(n),o=(0,r.SU)(y);o&&(o[a]=C[a]),(0,r.dq)(t[a])?t[a].value=e:t[a]=e}}):null;return a&&E.$autoDirty&&(0,o.YP)(O,(()=>{M.value||P();const e=(0,r.SU)(y);e&&(e[a]=C[a])}),{flush:"sync"}),(0,r.qj)(i(i(i({},j),{},{$model:V,$dirty:M,$error:R,$errors:I,$invalid:z,$anyDirty:T,$pending:$,$touch:P,$reset:F,$path:_||"__root",$silentErrors:H,$validate:async function(){return P(),E.$rewardEarly&&(D(),await(0,o.Y3)()),await(0,o.Y3)(),new Promise((e=>{if(!$.value)return e(!z.value);const t=(0,o.YP)($,(()=>{e(!z.value),t()}))}))},$commit:D},u&&{$getResultsForChild:function(e){return(u.value||{})[e]},$clearExternalResults:function(){(0,r.dq)(y)?y.value=C:0===Object.keys(C).length?Object.keys(y).forEach((e=>{delete y[e]})):Object.assign(y,C)},$validationGroups:L}),A))}class g{constructor(){this.storage=new Map}set(e,t,n){this.storage.set(e,{rules:t,result:n})}checkRulesValidity(e,t,n){const o=Object.keys(n),a=Object.keys(t);return a.length===o.length&&(!!a.every((e=>o.includes(e)))&&a.every((e=>!t[e].$params||Object.keys(t[e].$params).every((o=>(0,r.SU)(n[e].$params[o])===(0,r.SU)(t[e].$params[o]))))))}get(e,t){const n=this.storage.get(e);if(!n)return;const{rules:r,result:o}=n,a=this.checkRulesValidity(e,t,r),i=o.$unwatch?o.$unwatch:()=>({});return a?o:{$dirty:o.$dirty,$partial:!0,$unwatch:i}}}const b={COLLECT_ALL:!0,COLLECT_NONE:!1},y=Symbol("vuelidate#injectChildResults"),_=Symbol("vuelidate#removeChildResults");function w(e){let{$scope:t,instance:n}=e;const a={},i=(0,r.iH)([]),s=(0,o.Fl)((()=>i.value.reduce(((e,t)=>(e[t]=(0,r.SU)(a[t]),e)),{})));n.__vuelidateInjectInstances=[].concat(n.__vuelidateInjectInstances||[],(function(e,n){let{$registerAs:r,$scope:o,$stopPropagation:s}=n;s||t===b.COLLECT_NONE||o===b.COLLECT_NONE||t!==b.COLLECT_ALL&&t!==o||(a[r]=e,i.value.push(r))})),n.__vuelidateRemoveInstances=[].concat(n.__vuelidateRemoveInstances||[],(function(e){i.value=i.value.filter((t=>t!==e)),delete a[e]}));const c=(0,o.f3)(y,[]);(0,o.JJ)(y,n.__vuelidateInjectInstances);const l=(0,o.f3)(_,[]);return(0,o.JJ)(_,n.__vuelidateRemoveInstances),{childResults:s,sendValidationResultsToParent:c,removeValidationResultsFromParent:l}}function x(e){return new Proxy(e,{get:(e,t)=>"object"==typeof e[t]?x(e[t]):(0,o.Fl)((()=>e[t]))})}let k=0;function S(e,t){var n;let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};1===arguments.length&&(a=e,e=void 0,t=void 0);let{$registerAs:s,$scope:c=b.COLLECT_ALL,$stopPropagation:f,$externalResults:h,currentVueInstance:p}=a;const d=p||(null===(n=(0,o.FN)())||void 0===n?void 0:n.proxy),m=d?d.$options:{};s||(k+=1,s=`_vuelidate_${k}`);const y=(0,r.iH)({}),_=new g,{childResults:S,sendValidationResultsToParent:E,removeValidationResultsFromParent:O}=d?w({$scope:c,instance:d}):{childResults:(0,r.iH)({})};if(!e&&m.validations){const e=m.validations;t=(0,r.iH)({}),(0,o.wF)((()=>{t.value=d,(0,o.YP)((()=>l(e)?e.call(t.value,new x(t.value)):e),(e=>{y.value=v({validations:e,state:t,childResults:S,resultsCache:_,globalConfig:a,instance:d,externalResults:h||d.vuelidateExternalResults})}),{immediate:!0})})),a=m.validationsConfig||a}else{const n=(0,r.dq)(e)||u(e)?e:(0,r.qj)(e||{});(0,o.YP)(n,(e=>{y.value=v({validations:e,state:t,childResults:S,resultsCache:_,globalConfig:a,instance:null!=d?d:{},externalResults:h})}),{immediate:!0})}return d&&(E.forEach((e=>e(y,{$registerAs:s,$scope:c,$stopPropagation:f}))),(0,o.Jd)((()=>O.forEach((e=>e(s)))))),(0,o.Fl)((()=>i(i({},(0,r.SU)(y.value)),S.value)))}},35332:(e,t,n)=>{"use strict";n.d(t,{C1:()=>i,CF:()=>c,sH:()=>u});var r=n(2262);const o=e=>{if(e=(0,r.SU)(e),Array.isArray(e))return!!e.length;if(null==e)return!1;if(!1===e)return!0;if(e instanceof Date)return!isNaN(e.getTime());if("object"==typeof e){for(let t in e)return!0;return!1}return!!String(e).length};function a(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return e=>(e=(0,r.SU)(e),!o(e)||t.every((t=>t.test(e))))}r.SU,a(/^[a-zA-Z]*$/),a(/^[a-zA-Z0-9]*$/),a(/^\d*(\.\d+)?$/),a(/^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i);var i={$validator:function(e){return"string"==typeof e&&(e=e.trim()),o(e)},$message:"Value is required",$params:{type:"required"}};const s=(e,t)=>!e||o("string"==typeof t?t.trim():t);function c(e){return{$validator:(t=e,function(e,n){if("function"!=typeof t)return s((0,r.SU)(t),e);const o=t.call(this,e,n);return s(o,e)}),$message:"The value is required",$params:{type:"requiredIf",prop:e}};var t}function l(e){return t=>(0,r.SU)(t)===(0,r.SU)(e)}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"other";return{$validator:l(e),$message:e=>`The value must be equal to the ${t} value`,$params:{equalTo:e,otherName:t,type:"sameAs"}}}a(/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i),a(/(^[0-9]*$)|(^-[0-9]+$)/),a(/^[-]?\d*(\.\d+)?$/)},58509:(e,t,n)=>{"use strict";n.d(t,{Qp:()=>p,tG:()=>d});var r=!1;if("undefined"!=typeof window){var o={get passive(){r=!0}};window.addEventListener("testPassive",null,o),window.removeEventListener("testPassive",null,o)}var a="undefined"!=typeof window&&window.navigator&&window.navigator.platform&&(/iP(ad|hone|od)/.test(window.navigator.platform)||"MacIntel"===window.navigator.platform&&window.navigator.maxTouchPoints>1),i=[],s=!1,c=-1,l=void 0,u=void 0,f=function(e){return i.some((function(t){return!(!t.options.allowTouchMove||!t.options.allowTouchMove(e))}))},h=function(e){var t=e||window.event;return!!f(t.target)||t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1)},p=function(e,t){if(e){if(!i.some((function(t){return t.targetElement===e}))){var n={targetElement:e,options:t||{}};i=[].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(i),[n]),a?(e.ontouchstart=function(e){1===e.targetTouches.length&&(c=e.targetTouches[0].clientY)},e.ontouchmove=function(t){1===t.targetTouches.length&&function(e,t){var n=e.targetTouches[0].clientY-c;!f(e.target)&&(t&&0===t.scrollTop&&n>0||function(e){return!!e&&e.scrollHeight-e.scrollTop<=e.clientHeight}(t)&&n<0?h(e):e.stopPropagation())}(t,e)},s||(document.addEventListener("touchmove",h,r?{passive:!1}:void 0),s=!0)):function(e){if(void 0===u){var t=!!e&&!0===e.reserveScrollBarGap,n=window.innerWidth-document.documentElement.clientWidth;t&&n>0&&(u=document.body.style.paddingRight,document.body.style.paddingRight=n+"px")}void 0===l&&(l=document.body.style.overflow,document.body.style.overflow="hidden")}(t)}}else console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.")},d=function(e){e?(i=i.filter((function(t){return t.targetElement!==e})),a?(e.ontouchstart=null,e.ontouchmove=null,s&&0===i.length&&(document.removeEventListener("touchmove",h,r?{passive:!1}:void 0),s=!1)):i.length||(void 0!==u&&(document.body.style.paddingRight=u,u=void 0),void 0!==l&&(document.body.style.overflow=l,l=void 0))):console.error("enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.")}},97332:(e,t)=>{"use strict";function n(e){return l[e]}function r(e){return u[e]}function o(e){return e*(Math.PI/180)}function a(e,t){return e<t[0]?e=t[0]:e>t[1]&&(e=t[1]),e}function i(e){if(Math.cbrt)return Math.cbrt(e);var t=Math.pow(Math.abs(e),1/3);return e<0?-t:t}function s(e,t,n){if(void 0===t)throw new Error("No value provided");var r=n||function(e){var t=d.find((function(t){return p[t](e)}));if(!t)throw new Error("No type found for color "+e);return t}(t);if(r===e)return t;if(W[r][e])return q(r,e,t);var o=Y[r],a="string"==typeof o?o:o[e]||o.default;return s(e,q(r,a,t),a)}function c(e){var t={};return G.forEach((function(n){Object.defineProperty(t,n,{get:function(){return Z(n,e)},enumerable:!0})})),t}var l={A:{X:1.0985*100,Y:100,Z:35.585},B:{X:99.072,Y:100,Z:85.223},C:{X:98.074,Y:100,Z:118.232},D50:{X:96.422,Y:100,Z:82.521},D55:{X:95.682,Y:100,Z:92.149},D65:{X:95.047,Y:100,Z:108.883},D75:{X:94.972,Y:100,Z:122.638},E:{X:100,Y:100,Z:100},F2:{X:.99186*100,Y:100,Z:67.393},F7:{X:95.041,Y:100,Z:108.747},F11:{X:1.00962*100,Y:100,Z:64.35}},u={BRADFORD:[[.8951,.2664,-.1614],[-.7502,1.7135,.0367],[.0389,-.0685,1.0296]],INVERSE_BRADFORD:[[.9869929,-.1470543,.1599627],[.4323053,.5183603,.0492912],[-.0085287,.0400428,.9684867]],SRGB_XYZ:[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],INVERSE_SRGB_XYZ:[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]]},f=function(e,t){var n=new Set(Object.keys(e));return t.every((function(e){return n.has(e)}))},h=function(e,t){return"string"==typeof e&&e.slice(0,t.length)===t},p={hex:function(e){return h(e,"#")},rgb:function(e){return f(e,["r","g","b"])},cssrgb:function(e){return h(e,"rgb(")},hsl:function(e){return f(e,["h","s","l"])},csshsl:function(e){return h(e,"hsl(")},hsv:function(e){return f(e,["h","s","v"])},cmyk:function(e){return f(e,["c","m","y","k"])},yiq:function(e){return f(e,["y","i","q"])},XYZ:function(e){return f(e,["X","Y","Z"])},xyY:function(e){return f(e,["x","y","Y"])},lms:function(e){return f(e,["rho","gamma","beta"])},cielab:function(e){return f(e,["L","a","b"])},cieluv:function(e){return f(e,["L","u","v"])},cielch:function(e){return f(e,["L","C","h"])},hsluv:function(e){return f(e,["hu","s","l"])}},d=Object.keys(p),m=.008856,v=903.3,g=n("D65"),b=function(e){return Math.pow(e,3)>m?Math.pow(e,3):(116*e-16)/v},y={XYZ:function(e){var t=(e.L+16)/116,n=e.a/500+t,r=t-e.b/200,o=b(n),a=b(r),i=e.L>v*m?Math.pow(t,3):e.L/v;return{X:o*g.X,Y:i*g.Y,Z:a*g.Z}}},_={cieluv:function(e){var t=o(e.h),n=e.C*Math.cos(t),r=e.C*Math.sin(t);return{L:e.L,u:n,v:r}},hsluv:function(e){if(e.L>99.9999999)return{hu:e.h,s:0,l:100};if(e.L<1e-8)return{hu:e.h,s:0,l:0};for(var t=(e.L+16)/1560896,n=t>.008856?t:e.L/903.3,a=r("INVERSE_SRGB_XYZ"),i=[],s=0;s<3;s++)for(var c=a[s][0],l=a[s][1],u=a[s][2],f=0;f<2;f++){var h=(284517*c-94839*u)*n,p=(838422*u+769860*l+731718*c)*e.L*n-769860*f*e.L,d=(632260*u-126452*l)*n+126452*f;i.push({m:h/d,b:p/d})}var m=Number.MAX_VALUE,v=o(e.h);i.forEach((function(e){var t=e.b/(Math.sin(v)-e.m*Math.cos(v));t>=0&&(m=Math.min(m,t))}));var g=m;return{hu:e.h,s:e.C/g*100,l:e.L}}},w={XYZ:function(e){var t=n("D65"),r=function(e){return 4*e.X/(e.X+15*e.Y+3*e.Z)}(t),o=function(e){return 9*e.Y/(e.X+15*e.Y+3*e.Z)}(t),a=1/3*(52*e.L/(e.u+13*e.L*r)-1),i=e.L>903.3*.008856?Math.pow((e.L+16)/116,3):e.L/903.3,s=-5*i,c=(i*(39*e.L/(e.v+13*e.L*o)-5)-s)/(a- -1/3);return{X:100*c,Y:100*i,Z:100*(c*a+s)}},cielch:function(e){var t=Math.sqrt(Math.pow(e.u,2)+Math.pow(e.v,2)),n=Math.atan2(e.v,e.u);return n<0&&(n+=2*Math.PI),n=function(e){return e*(180/Math.PI)}(n),{L:e.L,C:t,h:n}}},x=function(e){return{r:255*(1-e.c)*(1-e.k),g:255*(1-e.m)*(1-e.k),b:255*(1-e.y)*(1-e.k)}},k={rgb:x,cssrgb:function(e){var t=x(e),n=t.r,r=t.g,o=t.b;return"rgb("+Math.round(n)+","+Math.round(r)+","+Math.round(o)+")"}},S={hsl:function(e){var t=e.replace(/(hsl\(|\)|%|[\s]*)/g,"").split(",").map((function(e){return parseInt(e,10)}));return{h:t[0],s:t[1],l:t[2]}}},E={rgb:function(e){var t=e.replace(/((rgb\(|\))|[\s]*)/g,"").split(",").map((function(e){return parseInt(e,10)}));return{r:t[0],g:t[1],b:t[2]}}},O={rgb:function(e){var t=e.replace("#","").match(/.{2}/g).map((function(e){return parseInt(e,16)}));return{r:t[0],g:t[1],b:t[2]}}},C={rgb:function(e){if(0===e.s){var t=e.l/100*255;return{r:t,g:t,b:t}}var n,r,o;n=e.l>=50?e.l/100+e.s/100-e.l/100*(e.s/100):e.l/100*(1+e.s/100),r=e.l/100*2-n;var a,i,s,c=(.333+(o=e.h/360))%1,l=o,u=function(e,t){return(e%t+t)%t}(o-.333,1);return(a=6*c<1?r+6*(n-r)*c:2*c<1?n:3*c<2?r+6*(.666-c)*(n-r):r)<0&&(a=0),(i=6*l<1?r+6*(n-r)*l:2*l<1?n:3*l<2?r+6*(.666-l)*(n-r):r)<0&&(i=0),(s=6*u<1?r+6*(n-r)*u:2*u<1?n:3*u<2?r+6*(.666-u)*(n-r):r)<0&&(s=0),{r:255*a,g:255*i,b:255*s}},csshsl:function(e){return"hsl("+Math.round(e.h)+","+Math.round(e.s)+"%,"+Math.round(e.l)+"%)"},hsv:function(e){var t=Object.assign({},e,{s:e.s/100,l:e.l/100}),n=t.s*(t.l<.5?t.l:1-t.l);return{h:t.h,s:2*n/(t.l+n)*100,v:100*(t.l+n)}}},N={cielch:function(e){if(e.L>99.9999999)return{L:100,C:0,h:e.hu};if(e.L<1e-8)return{L:0,C:0,h:e.hu};for(var t=(e.l+16)/1560896,n=t>.008856?t:e.l/903.3,a=r("INVERSE_SRGB_XYZ"),i=[],s=0;s<3;s++)for(var c=a[s][0],l=a[s][1],u=a[s][2],f=0;f<2;f++){var h=(284517*c-94839*u)*n,p=(838422*u+769860*l+731718*c)*e.l*n-769860*f*e.l,d=(632260*u-126452*l)*n+126452*f;i.push({m:h/d,b:p/d})}var m=Number.MAX_VALUE,v=o(e.hu);i.forEach((function(e){var t=e.b/(Math.sin(v)-e.m*Math.cos(v));t>=0&&(m=Math.min(m,t))}));var g=m;return{L:e.l,C:g/100*e.s,h:e.hu}}},j={hsl:function(e){var t=Object.assign({},e,{h:e.h/360,s:e.s/100,v:e.v/100});return{h:360*t.h,s:100*((2-t.s)*t.v<1?t.s*t.v/((2-t.s)*t.v):t.s*t.v/(2-(2-t.s)*t.v)),l:(2-t.s)*t.v/2*100}}},A={XYZ:function(e){var t=[e.rho,e.gamma,e.beta],n=r("INVERSE_BRADFORD").map((function(e){return t.reduce((function(t,n,r){return e[r]*n+t}),0)}));return{X:100*n[0],Y:100*n[1],Z:100*n[2]}}},L=function(e){return a(e,[0,255])},M=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},I=.008856,z=n("D65"),T={rgb:function(e){var t=[e.X,e.Y,e.Z].map((function(e){return e/100})),n=r("INVERSE_SRGB_XYZ").map((function(e){return t.reduce((function(t,n,r){return e[r]*n+t}),0)})).map((function(e){return e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055})).map((function(e){return 255*e})),o=M(n,3);return function(e){return{r:L(e.r),g:L(e.g),b:L(e.b)}}({r:o[0],g:o[1],b:o[2]})},lms:function(e){var t=[e.X,e.Y,e.Z].map((function(e){return e/100})),n=r("BRADFORD").map((function(e){return t.reduce((function(t,n,r){return e[r]*n+t}),0)}));return{rho:n[0],gamma:n[1],beta:n[2]}},cielab:function(e){var t=e.X/z.X,n=e.Y/z.Y,r=e.Z/z.Z,o=function(e){return e>I?i(e):(903.3*e+16)/116},a=o(t),s=o(n);return{L:116*s-16,a:500*(a-s),b:200*(s-o(r))}},cieluv:function(e){var t=e.Y/z.Y,n=t>I?116*i(t)-16:903.3*t,r=function(e){return 4*e.X/(e.X+15*e.Y+3*e.Z)},o=function(e){return 9*e.Y/(e.X+15*e.Y+3*e.Z)};return{L:n,u:13*n*(r(e)-r(z)),v:13*n*(o(e)-o(z))}},xyY:function(e){return{x:e.X/(e.X+e.Y+e.Z),y:e.Y/(e.X+e.Y+e.Z),Y:e.Y}}},R=T.lms,$=T.cielab,P=T.cieluv,F=T.xyY,H=function(e){var t,n,r=e.r/255,o=e.g/255,a=e.b/255,i=[r,o,a].sort(),s=(i[0]+i[2])/2*100;return i[0]===i[2]?(t=0,n=0):(t=s>=50?(i[2]-i[0])/(2-i[2]-i[0])*100:(i[2]-i[0])/(i[2]+i[0])*100,(n=i[2]===r?(o-a)/(i[2]-i[0])*60:i[2]===o?60*(2+(a-r)/(i[2]-i[0])):60*(4+(r-o)/(i[2]-i[0])))<0?n+=360:n>360&&(n%=360)),{h:n,s:t,l:s}},D=function(e){var t=[e.r,e.g,e.b].map((function(e){return e/255})).map((function(e){return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)})),n=r("SRGB_XYZ").map((function(e){return t.reduce((function(t,n,r){return e[r]*n+t}),0)})).map((function(e){return 100*e})),o=M(n,3);return{X:o[0],Y:o[1],Z:o[2]}},V={hex:function(e){var t=Math.round(e.r).toString(16);1===t.length&&(t="0"+t);var n=Math.round(e.g).toString(16);1===n.length&&(n="0"+n);var r=Math.round(e.b).toString(16);return 1===r.length&&(r="0"+r),"#"+t+n+r},cssrgb:function(e){return"rgb("+Math.round(e.r)+","+Math.round(e.g)+","+Math.round(e.b)+")"},hsl:H,csshsl:function(e){var t=H(e),n=t.h,r=t.s,o=t.l;return"hsl("+Math.round(n)+","+Math.round(r)+"%,"+Math.round(o)+"%)"},cmyk:function(e){var t=e.r/255,n=e.g/255,r=e.b/255,o=1-Math.max(t,n,r);return 1!==o?{c:(1-t-o)/(1-o),m:(1-n-o)/(1-o),y:(1-r-o)/(1-o),k:o}:{c:0,m:0,y:0,k:o}},yiq:function(e){var t=e.r/255*.299+e.g/255*.587+e.b/255*.114,n=e.r/255*.596+e.g/255*-.274+e.b/255*-.322,r=e.r/255*.211+e.g/255*-.523+e.b/255*.312;return{y:t,i:n=a(n,[-.5957,.5957]),q:r=a(r,[-.5226,.5226])}},XYZ:D,lms:function(e){return R(D(e))},cielab:function(e){return $(D(e))},cieluv:function(e){return P(D(e))},xyY:function(e){return F(D(e))}},U=function(e){return a(e,[0,255])},B={rgb:function(e){var t=a(e.i,[-.5957,.5957]),n=a(e.q,[-.5226,.5226]);return{r:255*U(e.y+.956*t+.621*n),g:255*U(e.y+-.272*t+-.647*n),b:255*U(e.y+-1.106*t+-1.703*n)}}},W=Object.freeze({cielab:y,cielch:_,cieluv:w,cmyk:k,csshsl:S,cssrgb:E,hex:O,hsl:C,hsluv:N,hsv:j,lms:A,rgb:V,xyY:{XYZ:function(e){var t=e.x,n=e.y,r=e.Y;return{X:r/n*t,Y:r,Z:r/n*(1-t-n)}}},XYZ:T,yiq:B}),Y={rgb:{default:"XYZ",csshsl:"hsl",hsv:"hsl"},hex:"rgb",hsl:"rgb",hsv:"hsl",csshsl:"hsl",cssrgb:"rgb",cmyk:"rgb",XYZ:{default:"rgb",cielch:"cieluv",hsluv:"cieluv"},xyY:"XYZ",lms:"XYZ",cieluv:{default:"XYZ",hsluv:"cielch"},cielch:"cieluv",cielab:"XYZ",yiq:"rgb",hsluv:"cielch"},q=function(e,t,n){return W[e][t](n)},G=Object.keys(p),Z=function(e,t){return Array.isArray(t)?t.map((function(t){return s(e,t)})):s(e,t)};t.Xu=function(e,t){var n=s("hsl",t);return n.l+=e,n.l<0?n.l=0:n.l>100&&(n.l=100),c(n)},t.wo=function(e){var t=s("rgb",e);return c(t=(299*t.r+587*t.g+114*t.b)/1e3>=128?{r:0,g:0,b:0}:{r:255,g:255,b:255})},t.OQ=c,t.Xp=function(e){var t=s("hsl",e);return t.l=100-t.l,c(t)}},20425:function(e){var t,n,r,o,a,i,s,c;e.exports=(t="__v-click-outside",n="undefined"!=typeof window,r="undefined"!=typeof navigator,o=n&&("ontouchstart"in window||r&&navigator.msMaxTouchPoints>0)?["touchstart"]:["click"],a=function(e){var t=e.event,n=e.handler;(0,e.middleware)(t)&&n(t)},i=function(e,n){var r=function(e){var t="function"==typeof e;if(!t&&"object"!=typeof e)throw new Error("v-click-outside: Binding value must be a function or an object");return{handler:t?e:e.handler,middleware:e.middleware||function(e){return e},events:e.events||o,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe),capture:Boolean(e.capture)}}(n.value),i=r.handler,s=r.middleware,c=r.detectIframe,l=r.capture;if(r.isActive){if(e[t]=r.events.map((function(t){return{event:t,srcTarget:document.documentElement,handler:function(t){return function(e){var t=e.el,n=e.event,r=e.handler,o=e.middleware,i=n.path||n.composedPath&&n.composedPath();(i?i.indexOf(t)<0:!t.contains(n.target))&&a({event:n,handler:r,middleware:o})}({el:e,event:t,handler:i,middleware:s})},capture:l}})),c){var u={event:"blur",srcTarget:window,handler:function(t){return function(e){var t=e.el,n=e.event,r=e.handler,o=e.middleware;setTimeout((function(){var e=document.activeElement;e&&"IFRAME"===e.tagName&&!t.contains(e)&&a({event:n,handler:r,middleware:o})}),0)}({el:e,event:t,handler:i,middleware:s})},capture:l};e[t]=[].concat(e[t],[u])}e[t].forEach((function(n){var r=n.event,o=n.srcTarget,a=n.handler;return setTimeout((function(){e[t]&&o.addEventListener(r,a,l)}),0)}))}},s=function(e){(e[t]||[]).forEach((function(e){return e.srcTarget.removeEventListener(e.event,e.handler,e.capture)})),delete e[t]},c=n?{beforeMount:i,updated:function(e,t){var n=t.value,r=t.oldValue;JSON.stringify(n)!==JSON.stringify(r)&&(s(e),i(e,{value:n}))},unmounted:s}:{},{install:function(e){e.directive("click-outside",c)},directive:c})},67810:()=>{!function(){if("undefined"!=typeof window)try{var e=new window.CustomEvent("test",{cancelable:!0});if(e.preventDefault(),!0!==e.defaultPrevented)throw new Error("Could not prevent default")}catch(e){var t=function(e,t){var n,r;return(t=t||{}).bubbles=!!t.bubbles,t.cancelable=!!t.cancelable,(n=document.createEvent("CustomEvent")).initCustomEvent(e,t.bubbles,t.cancelable,t.detail),r=n.preventDefault,n.preventDefault=function(){r.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},n};t.prototype=window.Event.prototype,window.CustomEvent=t}}()},95573:e=>{"use strict";var t=/["'&<>]/;e.exports=function(e){var n,r=""+e,o=t.exec(r);if(!o)return r;var a="",i=0,s=0;for(i=o.index;i<r.length;i++){switch(r.charCodeAt(i)){case 34:n="&quot;";break;case 38:n="&amp;";break;case 39:n="&#39;";break;case 60:n="&lt;";break;case 62:n="&gt;";break;default:continue}s!==i&&(a+=r.substring(s,i)),s=i+1,a+=n}return s!==i?a+r.substring(s,i):a}},2900:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r={aa:{name:"Afar",nativeName:"Afaraf"},ab:{name:"Abkhaz",nativeName:"аҧсуа бызшәа"},ae:{name:"Avestan",nativeName:"avesta"},af:{name:"Afrikaans",nativeName:"Afrikaans"},ak:{name:"Akan",nativeName:"Akan"},am:{name:"Amharic",nativeName:"አማርኛ"},an:{name:"Aragonese",nativeName:"aragonés"},ar:{name:"Arabic",nativeName:"اَلْعَرَبِيَّةُ"},as:{name:"Assamese",nativeName:"অসমীয়া"},av:{name:"Avaric",nativeName:"авар мацӀ"},ay:{name:"Aymara",nativeName:"aymar aru"},az:{name:"Azerbaijani",nativeName:"azərbaycan dili"},ba:{name:"Bashkir",nativeName:"башҡорт теле"},be:{name:"Belarusian",nativeName:"беларуская мова"},bg:{name:"Bulgarian",nativeName:"български език"},bi:{name:"Bislama",nativeName:"Bislama"},bm:{name:"Bambara",nativeName:"bamanankan"},bn:{name:"Bengali",nativeName:"বাংলা"},bo:{name:"Tibetan",nativeName:"བོད་ཡིག"},br:{name:"Breton",nativeName:"brezhoneg"},bs:{name:"Bosnian",nativeName:"bosanski jezik"},ca:{name:"Catalan",nativeName:"Català"},ce:{name:"Chechen",nativeName:"нохчийн мотт"},ch:{name:"Chamorro",nativeName:"Chamoru"},co:{name:"Corsican",nativeName:"corsu"},cr:{name:"Cree",nativeName:"ᓀᐦᐃᔭᐍᐏᐣ"},cs:{name:"Czech",nativeName:"čeština"},cu:{name:"Old Church Slavonic",nativeName:"ѩзыкъ словѣньскъ"},cv:{name:"Chuvash",nativeName:"чӑваш чӗлхи"},cy:{name:"Welsh",nativeName:"Cymraeg"},da:{name:"Danish",nativeName:"dansk"},de:{name:"German",nativeName:"Deutsch"},dv:{name:"Divehi",nativeName:"ދިވެހި"},dz:{name:"Dzongkha",nativeName:"རྫོང་ཁ"},ee:{name:"Ewe",nativeName:"Eʋegbe"},el:{name:"Greek",nativeName:"Ελληνικά"},en:{name:"English",nativeName:"English"},eo:{name:"Esperanto",nativeName:"Esperanto"},es:{name:"Spanish",nativeName:"Español"},et:{name:"Estonian",nativeName:"eesti"},eu:{name:"Basque",nativeName:"euskara"},fa:{name:"Persian",nativeName:"فارسی"},ff:{name:"Fula",nativeName:"Fulfulde"},fi:{name:"Finnish",nativeName:"suomi"},fj:{name:"Fijian",nativeName:"vosa Vakaviti"},fo:{name:"Faroese",nativeName:"føroyskt"},fr:{name:"French",nativeName:"Français"},fy:{name:"Western Frisian",nativeName:"Frysk"},ga:{name:"Irish",nativeName:"Gaeilge"},gd:{name:"Scottish Gaelic",nativeName:"Gàidhlig"},gl:{name:"Galician",nativeName:"galego"},gn:{name:"Guaraní",nativeName:"Avañe'ẽ"},gu:{name:"Gujarati",nativeName:"ગુજરાતી"},gv:{name:"Manx",nativeName:"Gaelg"},ha:{name:"Hausa",nativeName:"هَوُسَ"},he:{name:"Hebrew",nativeName:"עברית"},hi:{name:"Hindi",nativeName:"हिन्दी"},ho:{name:"Hiri Motu",nativeName:"Hiri Motu"},hr:{name:"Croatian",nativeName:"Hrvatski"},ht:{name:"Haitian",nativeName:"Kreyòl ayisyen"},hu:{name:"Hungarian",nativeName:"magyar"},hy:{name:"Armenian",nativeName:"Հայերեն"},hz:{name:"Herero",nativeName:"Otjiherero"},ia:{name:"Interlingua",nativeName:"Interlingua"},id:{name:"Indonesian",nativeName:"Bahasa Indonesia"},ie:{name:"Interlingue",nativeName:"Interlingue"},ig:{name:"Igbo",nativeName:"Asụsụ Igbo"},ii:{name:"Nuosu",nativeName:"ꆈꌠ꒿ Nuosuhxop"},ik:{name:"Inupiaq",nativeName:"Iñupiaq"},io:{name:"Ido",nativeName:"Ido"},is:{name:"Icelandic",nativeName:"Íslenska"},it:{name:"Italian",nativeName:"Italiano"},iu:{name:"Inuktitut",nativeName:"ᐃᓄᒃᑎᑐᑦ"},ja:{name:"Japanese",nativeName:"日本語"},jv:{name:"Javanese",nativeName:"basa Jawa"},ka:{name:"Georgian",nativeName:"ქართული"},kg:{name:"Kongo",nativeName:"Kikongo"},ki:{name:"Kikuyu",nativeName:"Gĩkũyũ"},kj:{name:"Kwanyama",nativeName:"Kuanyama"},kk:{name:"Kazakh",nativeName:"қазақ тілі"},kl:{name:"Kalaallisut",nativeName:"kalaallisut"},km:{name:"Khmer",nativeName:"ខេមរភាសា"},kn:{name:"Kannada",nativeName:"ಕನ್ನಡ"},ko:{name:"Korean",nativeName:"한국어"},kr:{name:"Kanuri",nativeName:"Kanuri"},ks:{name:"Kashmiri",nativeName:"कश्मीरी"},ku:{name:"Kurdish",nativeName:"Kurdî"},kv:{name:"Komi",nativeName:"коми кыв"},kw:{name:"Cornish",nativeName:"Kernewek"},ky:{name:"Kyrgyz",nativeName:"Кыргызча"},la:{name:"Latin",nativeName:"latine"},lb:{name:"Luxembourgish",nativeName:"Lëtzebuergesch"},lg:{name:"Ganda",nativeName:"Luganda"},li:{name:"Limburgish",nativeName:"Limburgs"},ln:{name:"Lingala",nativeName:"Lingála"},lo:{name:"Lao",nativeName:"ພາສາລາວ"},lt:{name:"Lithuanian",nativeName:"lietuvių kalba"},lu:{name:"Luba-Katanga",nativeName:"Kiluba"},lv:{name:"Latvian",nativeName:"latviešu valoda"},mg:{name:"Malagasy",nativeName:"fiteny malagasy"},mh:{name:"Marshallese",nativeName:"Kajin M̧ajeļ"},mi:{name:"Māori",nativeName:"te reo Māori"},mk:{name:"Macedonian",nativeName:"македонски јазик"},ml:{name:"Malayalam",nativeName:"മലയാളം"},mn:{name:"Mongolian",nativeName:"Монгол хэл"},mr:{name:"Marathi",nativeName:"मराठी"},ms:{name:"Malay",nativeName:"Bahasa Melayu"},mt:{name:"Maltese",nativeName:"Malti"},my:{name:"Burmese",nativeName:"ဗမာစာ"},na:{name:"Nauru",nativeName:"Dorerin Naoero"},nb:{name:"Norwegian Bokmål",nativeName:"Norsk bokmål"},nd:{name:"Northern Ndebele",nativeName:"isiNdebele"},ne:{name:"Nepali",nativeName:"नेपाली"},ng:{name:"Ndonga",nativeName:"Owambo"},nl:{name:"Dutch",nativeName:"Nederlands"},nn:{name:"Norwegian Nynorsk",nativeName:"Norsk nynorsk"},no:{name:"Norwegian",nativeName:"Norsk"},nr:{name:"Southern Ndebele",nativeName:"isiNdebele"},nv:{name:"Navajo",nativeName:"Diné bizaad"},ny:{name:"Chichewa",nativeName:"chiCheŵa"},oc:{name:"Occitan",nativeName:"occitan"},oj:{name:"Ojibwe",nativeName:"ᐊᓂᔑᓈᐯᒧᐎᓐ"},om:{name:"Oromo",nativeName:"Afaan Oromoo"},or:{name:"Oriya",nativeName:"ଓଡ଼ିଆ"},os:{name:"Ossetian",nativeName:"ирон æвзаг"},pa:{name:"Panjabi",nativeName:"ਪੰਜਾਬੀ"},pi:{name:"Pāli",nativeName:"पाऴि"},pl:{name:"Polish",nativeName:"Polski"},ps:{name:"Pashto",nativeName:"پښتو"},pt:{name:"Portuguese",nativeName:"Português"},qu:{name:"Quechua",nativeName:"Runa Simi"},rm:{name:"Romansh",nativeName:"rumantsch grischun"},rn:{name:"Kirundi",nativeName:"Ikirundi"},ro:{name:"Romanian",nativeName:"Română"},ru:{name:"Russian",nativeName:"Русский"},rw:{name:"Kinyarwanda",nativeName:"Ikinyarwanda"},sa:{name:"Sanskrit",nativeName:"संस्कृतम्"},sc:{name:"Sardinian",nativeName:"sardu"},sd:{name:"Sindhi",nativeName:"सिन्धी"},se:{name:"Northern Sami",nativeName:"Davvisámegiella"},sg:{name:"Sango",nativeName:"yângâ tî sängö"},si:{name:"Sinhala",nativeName:"සිංහල"},sk:{name:"Slovak",nativeName:"slovenčina"},sl:{name:"Slovenian",nativeName:"slovenščina"},sm:{name:"Samoan",nativeName:"gagana fa'a Samoa"},sn:{name:"Shona",nativeName:"chiShona"},so:{name:"Somali",nativeName:"Soomaaliga"},sq:{name:"Albanian",nativeName:"Shqip"},sr:{name:"Serbian",nativeName:"српски језик"},ss:{name:"Swati",nativeName:"SiSwati"},st:{name:"Southern Sotho",nativeName:"Sesotho"},su:{name:"Sundanese",nativeName:"Basa Sunda"},sv:{name:"Swedish",nativeName:"Svenska"},sw:{name:"Swahili",nativeName:"Kiswahili"},ta:{name:"Tamil",nativeName:"தமிழ்"},te:{name:"Telugu",nativeName:"తెలుగు"},tg:{name:"Tajik",nativeName:"тоҷикӣ"},th:{name:"Thai",nativeName:"ไทย"},ti:{name:"Tigrinya",nativeName:"ትግርኛ"},tk:{name:"Turkmen",nativeName:"Türkmençe"},tl:{name:"Tagalog",nativeName:"Wikang Tagalog"},tn:{name:"Tswana",nativeName:"Setswana"},to:{name:"Tonga",nativeName:"faka Tonga"},tr:{name:"Turkish",nativeName:"Türkçe"},ts:{name:"Tsonga",nativeName:"Xitsonga"},tt:{name:"Tatar",nativeName:"татар теле"},tw:{name:"Twi",nativeName:"Twi"},ty:{name:"Tahitian",nativeName:"Reo Tahiti"},ug:{name:"Uyghur",nativeName:"ئۇيغۇرچە‎"},uk:{name:"Ukrainian",nativeName:"Українська"},ur:{name:"Urdu",nativeName:"اردو"},uz:{name:"Uzbek",nativeName:"Ўзбек"},ve:{name:"Venda",nativeName:"Tshivenḓa"},vi:{name:"Vietnamese",nativeName:"Tiếng Việt"},vo:{name:"Volapük",nativeName:"Volapük"},wa:{name:"Walloon",nativeName:"walon"},wo:{name:"Wolof",nativeName:"Wollof"},xh:{name:"Xhosa",nativeName:"isiXhosa"},yi:{name:"Yiddish",nativeName:"ייִדיש"},yo:{name:"Yoruba",nativeName:"Yorùbá"},za:{name:"Zhuang",nativeName:"Saɯ cueŋƅ"},zh:{name:"Chinese",nativeName:"中文"},zu:{name:"Zulu",nativeName:"isiZulu"}};class o{static getLanguages(e=[]){return e.map((e=>({code:e,name:o.getName(e),nativeName:o.getNativeName(e)})))}static getName(e){return o.validate(e)?r[e].name:""}static getAllNames(){return Object.values(r).map((e=>e.name))}static getNativeName(e){return o.validate(e)?r[e].nativeName:""}static getAllNativeNames(){return Object.values(r).map((e=>e.nativeName))}static getCode(e){return Object.keys(r).find((t=>{const n=r[t];return n.name.toLowerCase()===e.toLowerCase()||n.nativeName.toLowerCase()===e.toLowerCase()}))||""}static getAllCodes(){return Object.keys(r)}static validate(e){return r.hasOwnProperty(e)}}},6258:(e,t,n)=>{"use strict";function r(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r]}return e}n.d(t,{Z:()=>o});const o=function e(t,n){function o(e,o,a){if("undefined"!=typeof document){"number"==typeof(a=r({},n,a)).expires&&(a.expires=new Date(Date.now()+864e5*a.expires)),a.expires&&(a.expires=a.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var i="";for(var s in a)a[s]&&(i+="; "+s,!0!==a[s]&&(i+="="+a[s].split(";")[0]));return document.cookie=e+"="+t.write(o,e)+i}}return Object.create({set:o,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var n=document.cookie?document.cookie.split("; "):[],r={},o=0;o<n.length;o++){var a=n[o].split("="),i=a.slice(1).join("=");try{var s=decodeURIComponent(a[0]);if(r[s]=t.read(i,s),e===s)break}catch(e){}}return e?r[e]:r}},remove:function(e,t){o(e,"",r({},t,{expires:-1}))},withAttributes:function(t){return e(this.converter,r({},this.attributes,t))},withConverter:function(t){return e(r({},this.converter,t),this.attributes)}},{attributes:{value:Object.freeze(n)},converter:{value:Object.freeze(t)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})},69483:function(e,t){!function(n){"object"==typeof t&&void 0!==e?e.exports=n():"function"==typeof define&&define.amd?define([],n):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).localforage=n()}((function(){return function e(t,n,r){function o(i,s){if(!n[i]){if(!t[i]){var c="function"==typeof require&&require;if(!s&&c)return c(i,!0);if(a)return a(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[i]={exports:{}};t[i][0].call(u.exports,(function(e){return o(t[i][1][e]||e)}),u,u.exports,e,t,n,r)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i<r.length;i++)o(r[i]);return o}({1:[function(e,t,n){(function(e){"use strict";var n,r,o=e.MutationObserver||e.WebKitMutationObserver;if(o){var a=0,i=new o(u),s=e.document.createTextNode("");i.observe(s,{characterData:!0}),n=function(){s.data=a=++a%2}}else if(e.setImmediate||void 0===e.MessageChannel)n="document"in e&&"onreadystatechange"in e.document.createElement("script")?function(){var t=e.document.createElement("script");t.onreadystatechange=function(){u(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(u,0)};else{var c=new e.MessageChannel;c.port1.onmessage=u,n=function(){c.port2.postMessage(0)}}var l=[];function u(){var e,t;r=!0;for(var n=l.length;n;){for(t=l,l=[],e=-1;++e<n;)t[e]();n=l.length}r=!1}t.exports=function(e){1!==l.push(e)||r||n()}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(e,t,n){"use strict";var r=e(1);function o(){}var a={},i=["REJECTED"],s=["FULFILLED"],c=["PENDING"];function l(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=c,this.queue=[],this.outcome=void 0,e!==o&&p(this,e)}function u(e,t,n){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof n&&(this.onRejected=n,this.callRejected=this.otherCallRejected)}function f(e,t,n){r((function(){var r;try{r=t(n)}catch(t){return a.reject(e,t)}r===e?a.reject(e,new TypeError("Cannot resolve promise with itself")):a.resolve(e,r)}))}function h(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments)}}function p(e,t){var n=!1;function r(t){n||(n=!0,a.reject(e,t))}function o(t){n||(n=!0,a.resolve(e,t))}var i=d((function(){t(o,r)}));"error"===i.status&&r(i.value)}function d(e,t){var n={};try{n.value=e(t),n.status="success"}catch(e){n.status="error",n.value=e}return n}t.exports=l,l.prototype.catch=function(e){return this.then(null,e)},l.prototype.then=function(e,t){if("function"!=typeof e&&this.state===s||"function"!=typeof t&&this.state===i)return this;var n=new this.constructor(o);return this.state!==c?f(n,this.state===s?e:t,this.outcome):this.queue.push(new u(n,e,t)),n},u.prototype.callFulfilled=function(e){a.resolve(this.promise,e)},u.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},u.prototype.callRejected=function(e){a.reject(this.promise,e)},u.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},a.resolve=function(e,t){var n=d(h,t);if("error"===n.status)return a.reject(e,n.value);var r=n.value;if(r)p(e,r);else{e.state=s,e.outcome=t;for(var o=-1,i=e.queue.length;++o<i;)e.queue[o].callFulfilled(t)}return e},a.reject=function(e,t){e.state=i,e.outcome=t;for(var n=-1,r=e.queue.length;++n<r;)e.queue[n].callRejected(t);return e},l.resolve=function(e){return e instanceof this?e:a.resolve(new this(o),e)},l.reject=function(e){var t=new this(o);return a.reject(t,e)},l.all=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,r=!1;if(!n)return this.resolve([]);for(var i=new Array(n),s=0,c=-1,l=new this(o);++c<n;)u(e[c],c);return l;function u(e,o){t.resolve(e).then((function(e){i[o]=e,++s!==n||r||(r=!0,a.resolve(l,i))}),(function(e){r||(r=!0,a.reject(l,e))}))}},l.race=function(e){if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var t=e.length,n=!1;if(!t)return this.resolve([]);for(var r,i=-1,s=new this(o);++i<t;)r=e[i],this.resolve(r).then((function(e){n||(n=!0,a.resolve(s,e))}),(function(e){n||(n=!0,a.reject(s,e))}));return s}},{1:1}],3:[function(e,t,n){(function(t){"use strict";"function"!=typeof t.Promise&&(t.Promise=e(2))}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2}],4:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!=typeof mozIndexedDB)return mozIndexedDB;if("undefined"!=typeof OIndexedDB)return OIndexedDB;if("undefined"!=typeof msIndexedDB)return msIndexedDB}catch(e){return}}();function a(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(o){if("TypeError"!==o.name)throw o;for(var n=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),r=0;r<e.length;r+=1)n.append(e[r]);return n.getBlob(t.type)}}"undefined"==typeof Promise&&e(3);var i=Promise;function s(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function c(e,t,n){"function"==typeof t&&e.then(t),"function"==typeof n&&e.catch(n)}function l(e){return"string"!=typeof e&&(console.warn(e+" used as a key, but it is not a string."),e=String(e)),e}function u(){if(arguments.length&&"function"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}var f="local-forage-detect-blob-support",h=void 0,p={},d=Object.prototype.toString,m="readonly",v="readwrite";function g(e){var t=p[e.name],n={};n.promise=new i((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function b(e){var t=p[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function y(e,t){var n=p[e.name].deferredOperations.pop();if(n)return n.reject(t),n.promise}function _(e,t){return new i((function(n,r){if(p[e.name]=p[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return n(e.db);g(e),e.db.close()}var a=[e.name];t&&a.push(e.version);var i=o.open.apply(o,a);t&&(i.onupgradeneeded=function(t){var n=i.result;try{n.createObjectStore(e.storeName),t.oldVersion<=1&&n.createObjectStore(f)}catch(n){if("ConstraintError"!==n.name)throw n;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),i.onerror=function(e){e.preventDefault(),r(i.error)},i.onsuccess=function(){var t=i.result;t.onversionchange=function(e){e.target.close()},n(t),b(e)}}))}function w(e){return _(e,!1)}function x(e){return _(e,!0)}function k(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),r=e.version<e.db.version,o=e.version>e.db.version;if(r&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),o||n){if(n){var a=e.db.version+1;a>e.version&&(e.version=a)}return!0}return!1}function S(e){return a([function(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),o=0;o<t;o++)r[o]=e.charCodeAt(o);return n}(atob(e.data))],{type:e.type})}function E(e){return e&&e.__local_forage_encoded_blob}function O(e){var t=this,n=t._initReady().then((function(){var e=p[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return c(n,e,e),n}function C(e,t,n,r){void 0===r&&(r=1);try{var o=e.db.transaction(e.storeName,t);n(null,o)}catch(o){if(r>0&&(!e.db||"InvalidStateError"===o.name||"NotFoundError"===o.name))return i.resolve().then((function(){if(!e.db||"NotFoundError"===o.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),x(e)})).then((function(){return function(e){g(e);for(var t=p[e.name],n=t.forages,r=0;r<n.length;r++){var o=n[r];o._dbInfo.db&&(o._dbInfo.db.close(),o._dbInfo.db=null)}return e.db=null,w(e).then((function(t){return e.db=t,k(e)?x(e):t})).then((function(r){e.db=t.db=r;for(var o=0;o<n.length;o++)n[o]._dbInfo.db=r})).catch((function(t){throw y(e,t),t}))}(e).then((function(){C(e,t,n,r-1)}))})).catch(n);n(o)}}var N={_driver:"asyncStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]=e[r];var o=p[n.name];o||(o={forages:[],db:null,dbReady:null,deferredOperations:[]},p[n.name]=o),o.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=O);var a=[];function s(){return i.resolve()}for(var c=0;c<o.forages.length;c++){var l=o.forages[c];l!==t&&a.push(l._initReady().catch(s))}var u=o.forages.slice(0);return i.all(a).then((function(){return n.db=o.db,w(n)})).then((function(e){return n.db=e,k(n,t._defaultConfig.version)?x(n):e})).then((function(e){n.db=o.db=e,t._dbInfo=n;for(var r=0;r<u.length;r++){var a=u[r];a!==t&&(a._dbInfo.db=n.db,a._dbInfo.version=n.version)}}))},_support:function(){try{if(!o||!o.open)return!1;var e="undefined"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=new i((function(t,r){n.ready().then((function(){C(n._dbInfo,m,(function(o,a){if(o)return r(o);try{var i=a.objectStore(n._dbInfo.storeName).openCursor(),s=1;i.onsuccess=function(){var n=i.result;if(n){var r=n.value;E(r)&&(r=S(r));var o=e(r,n.key,s++);void 0!==o?t(o):n.continue()}else t()},i.onerror=function(){r(i.error)}}catch(e){r(e)}}))})).catch(r)}));return s(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=new i((function(t,r){n.ready().then((function(){C(n._dbInfo,m,(function(o,a){if(o)return r(o);try{var i=a.objectStore(n._dbInfo.storeName).get(e);i.onsuccess=function(){var e=i.result;void 0===e&&(e=null),E(e)&&(e=S(e)),t(e)},i.onerror=function(){r(i.error)}}catch(e){r(e)}}))})).catch(r)}));return s(r,t),r},setItem:function(e,t,n){var r=this;e=l(e);var o=new i((function(n,o){var s;r.ready().then((function(){return s=r._dbInfo,"[object Blob]"===d.call(t)?function(e){return"boolean"==typeof h?i.resolve(h):function(e){return new i((function(t){var n=e.transaction(f,v),r=a([""]);n.objectStore(f).put(r,"key"),n.onabort=function(e){e.preventDefault(),e.stopPropagation(),t(!1)},n.oncomplete=function(){var e=navigator.userAgent.match(/Chrome\/(\d+)/),n=navigator.userAgent.match(/Edge\//);t(n||!e||parseInt(e[1],10)>=43)}})).catch((function(){return!1}))}(e).then((function(e){return h=e}))}(s.db).then((function(e){return e?t:(n=t,new i((function(e,t){var r=new FileReader;r.onerror=t,r.onloadend=function(t){var r=btoa(t.target.result||"");e({__local_forage_encoded_blob:!0,data:r,type:n.type})},r.readAsBinaryString(n)})));var n})):t})).then((function(t){C(r._dbInfo,v,(function(a,i){if(a)return o(a);try{var s=i.objectStore(r._dbInfo.storeName);null===t&&(t=void 0);var c=s.put(t,e);i.oncomplete=function(){void 0===t&&(t=null),n(t)},i.onabort=i.onerror=function(){var e=c.error?c.error:c.transaction.error;o(e)}}catch(e){o(e)}}))})).catch(o)}));return s(o,n),o},removeItem:function(e,t){var n=this;e=l(e);var r=new i((function(t,r){n.ready().then((function(){C(n._dbInfo,v,(function(o,a){if(o)return r(o);try{var i=a.objectStore(n._dbInfo.storeName).delete(e);a.oncomplete=function(){t()},a.onerror=function(){r(i.error)},a.onabort=function(){var e=i.error?i.error:i.transaction.error;r(e)}}catch(e){r(e)}}))})).catch(r)}));return s(r,t),r},clear:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){C(t._dbInfo,v,(function(r,o){if(r)return n(r);try{var a=o.objectStore(t._dbInfo.storeName).clear();o.oncomplete=function(){e()},o.onabort=o.onerror=function(){var e=a.error?a.error:a.transaction.error;n(e)}}catch(e){n(e)}}))})).catch(n)}));return s(n,e),n},length:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){C(t._dbInfo,m,(function(r,o){if(r)return n(r);try{var a=o.objectStore(t._dbInfo.storeName).count();a.onsuccess=function(){e(a.result)},a.onerror=function(){n(a.error)}}catch(e){n(e)}}))})).catch(n)}));return s(n,e),n},key:function(e,t){var n=this,r=new i((function(t,r){e<0?t(null):n.ready().then((function(){C(n._dbInfo,m,(function(o,a){if(o)return r(o);try{var i=a.objectStore(n._dbInfo.storeName),s=!1,c=i.openKeyCursor();c.onsuccess=function(){var n=c.result;n?0===e||s?t(n.key):(s=!0,n.advance(e)):t(null)},c.onerror=function(){r(c.error)}}catch(e){r(e)}}))})).catch(r)}));return s(r,t),r},keys:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){C(t._dbInfo,m,(function(r,o){if(r)return n(r);try{var a=o.objectStore(t._dbInfo.storeName).openKeyCursor(),i=[];a.onsuccess=function(){var t=a.result;t?(i.push(t.key),t.continue()):e(i)},a.onerror=function(){n(a.error)}}catch(e){n(e)}}))})).catch(n)}));return s(n,e),n},dropInstance:function(e,t){t=u.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,a=this;if(e.name){var c=e.name===n.name&&a._dbInfo.db,l=c?i.resolve(a._dbInfo.db):w(e).then((function(t){var n=p[e.name],r=n.forages;n.db=t;for(var o=0;o<r.length;o++)r[o]._dbInfo.db=t;return t}));r=e.storeName?l.then((function(t){if(t.objectStoreNames.contains(e.storeName)){var n=t.version+1;g(e);var r=p[e.name],a=r.forages;t.close();for(var s=0;s<a.length;s++){var c=a[s];c._dbInfo.db=null,c._dbInfo.version=n}var l=new i((function(t,r){var a=o.open(e.name,n);a.onerror=function(e){a.result.close(),r(e)},a.onupgradeneeded=function(){a.result.deleteObjectStore(e.storeName)},a.onsuccess=function(){var e=a.result;e.close(),t(e)}}));return l.then((function(e){r.db=e;for(var t=0;t<a.length;t++){var n=a[t];n._dbInfo.db=e,b(n._dbInfo)}})).catch((function(t){throw(y(e,t)||i.resolve()).catch((function(){})),t}))}})):l.then((function(t){g(e);var n=p[e.name],r=n.forages;t.close();for(var a=0;a<r.length;a++)r[a]._dbInfo.db=null;var s=new i((function(t,n){var r=o.deleteDatabase(e.name);r.onerror=function(){var e=r.result;e&&e.close(),n(r.error)},r.onblocked=function(){console.warn('dropInstance blocked for database "'+e.name+'" until all open connections are closed')},r.onsuccess=function(){var e=r.result;e&&e.close(),t(e)}}));return s.then((function(e){n.db=e;for(var t=0;t<r.length;t++)b(r[t]._dbInfo)})).catch((function(t){throw(y(e,t)||i.resolve()).catch((function(){})),t}))}))}else r=i.reject("Invalid arguments");return s(r,t),r}},j="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",A=/^~~local_forage_type~([^~]+)~/,L="__lfsc__:",M=L.length,I="arbf",z="blob",T="si08",R="ui08",$="uic8",P="si16",F="si32",H="ur16",D="ui32",V="fl32",U="fl64",B=M+I.length,W=Object.prototype.toString;function Y(e){var t,n,r,o,a,i=.75*e.length,s=e.length,c=0;"="===e[e.length-1]&&(i--,"="===e[e.length-2]&&i--);var l=new ArrayBuffer(i),u=new Uint8Array(l);for(t=0;t<s;t+=4)n=j.indexOf(e[t]),r=j.indexOf(e[t+1]),o=j.indexOf(e[t+2]),a=j.indexOf(e[t+3]),u[c++]=n<<2|r>>4,u[c++]=(15&r)<<4|o>>2,u[c++]=(3&o)<<6|63&a;return l}function q(e){var t,n=new Uint8Array(e),r="";for(t=0;t<n.length;t+=3)r+=j[n[t]>>2],r+=j[(3&n[t])<<4|n[t+1]>>4],r+=j[(15&n[t+1])<<2|n[t+2]>>6],r+=j[63&n[t+2]];return n.length%3==2?r=r.substring(0,r.length-1)+"=":n.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}var G={serialize:function(e,t){var n="";if(e&&(n=W.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===W.call(e.buffer))){var r,o=L;e instanceof ArrayBuffer?(r=e,o+=I):(r=e.buffer,"[object Int8Array]"===n?o+=T:"[object Uint8Array]"===n?o+=R:"[object Uint8ClampedArray]"===n?o+=$:"[object Int16Array]"===n?o+=P:"[object Uint16Array]"===n?o+=H:"[object Int32Array]"===n?o+=F:"[object Uint32Array]"===n?o+=D:"[object Float32Array]"===n?o+=V:"[object Float64Array]"===n?o+=U:t(new Error("Failed to get type for BinaryArray"))),t(o+q(r))}else if("[object Blob]"===n){var a=new FileReader;a.onload=function(){var n="~~local_forage_type~"+e.type+"~"+q(this.result);t("__lfsc__:blob"+n)},a.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if(e.substring(0,M)!==L)return JSON.parse(e);var t,n=e.substring(B),r=e.substring(M,B);if(r===z&&A.test(n)){var o=n.match(A);t=o[1],n=n.substring(o[0].length)}var i=Y(n);switch(r){case I:return i;case z:return a([i],{type:t});case T:return new Int8Array(i);case R:return new Uint8Array(i);case $:return new Uint8ClampedArray(i);case P:return new Int16Array(i);case H:return new Uint16Array(i);case F:return new Int32Array(i);case D:return new Uint32Array(i);case V:return new Float32Array(i);case U:return new Float64Array(i);default:throw new Error("Unkown type: "+r)}},stringToBuffer:Y,bufferToString:q};function Z(e,t,n,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,r)}function X(e,t,n,r,o,a){e.executeSql(n,r,o,(function(e,i){i.code===i.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,s){s.rows.length?a(e,i):Z(e,t,(function(){e.executeSql(n,r,o,a)}),a)}),a):a(e,i)}),a)}function J(e,t,n,r){var o=this;e=l(e);var a=new i((function(a,i){o.ready().then((function(){void 0===t&&(t=null);var s=t,c=o._dbInfo;c.serializer.serialize(t,(function(t,l){l?i(l):c.db.transaction((function(n){X(n,c,"INSERT OR REPLACE INTO "+c.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){a(s)}),(function(e,t){i(t)}))}),(function(t){if(t.code===t.QUOTA_ERR){if(r>0)return void a(J.apply(o,[e,s,n,r-1]));i(t)}}))}))})).catch(i)}));return s(a,n),a}function K(e){return new i((function(t,n){e.transaction((function(r){r.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],(function(n,r){for(var o=[],a=0;a<r.rows.length;a++)o.push(r.rows.item(a).name);t({db:e,storeNames:o})}),(function(e,t){n(t)}))}),(function(e){n(e)}))}))}var Q={_driver:"webSQLStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]="string"!=typeof e[r]?e[r].toString():e[r];var o=new i((function(e,r){try{n.db=openDatabase(n.name,String(n.version),n.description,n.size)}catch(e){return r(e)}n.db.transaction((function(o){Z(o,n,(function(){t._dbInfo=n,e()}),(function(e,t){r(t)}))}),r)}));return n.serializer=G,o},_support:"function"==typeof openDatabase,iterate:function(e,t){var n=this,r=new i((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){X(n,o,"SELECT * FROM "+o.storeName,[],(function(n,r){for(var a=r.rows,i=a.length,s=0;s<i;s++){var c=a.item(s),l=c.value;if(l&&(l=o.serializer.deserialize(l)),void 0!==(l=e(l,c.key,s+1)))return void t(l)}t()}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=new i((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){X(n,o,"SELECT * FROM "+o.storeName+" WHERE key = ? LIMIT 1",[e],(function(e,n){var r=n.rows.length?n.rows.item(0).value:null;r&&(r=o.serializer.deserialize(r)),t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,t),r},setItem:function(e,t,n){return J.apply(this,[e,t,n,1])},removeItem:function(e,t){var n=this;e=l(e);var r=new i((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){X(n,o,"DELETE FROM "+o.storeName+" WHERE key = ?",[e],(function(){t()}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,t),r},clear:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){X(t,r,"DELETE FROM "+r.storeName,[],(function(){e()}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,e),n},length:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){X(t,r,"SELECT COUNT(key) as c FROM "+r.storeName,[],(function(t,n){var r=n.rows.item(0).c;e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,e),n},key:function(e,t){var n=this,r=new i((function(t,r){n.ready().then((function(){var o=n._dbInfo;o.db.transaction((function(n){X(n,o,"SELECT key FROM "+o.storeName+" WHERE id = ? LIMIT 1",[e+1],(function(e,n){var r=n.rows.length?n.rows.item(0).key:null;t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,t),r},keys:function(e){var t=this,n=new i((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){X(t,r,"SELECT key FROM "+r.storeName,[],(function(t,n){for(var r=[],o=0;o<n.rows.length;o++)r.push(n.rows.item(o).key);e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,e),n},dropInstance:function(e,t){t=u.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,o=this;return s(r=e.name?new i((function(t){var r;r=e.name===n.name?o._dbInfo.db:openDatabase(e.name,"","",0),e.storeName?t({db:r,storeNames:[e.storeName]}):t(K(r))})).then((function(e){return new i((function(t,n){e.db.transaction((function(r){function o(e){return new i((function(t,n){r.executeSql("DROP TABLE IF EXISTS "+e,[],(function(){t()}),(function(e,t){n(t)}))}))}for(var a=[],s=0,c=e.storeNames.length;s<c;s++)a.push(o(e.storeNames[s]));i.all(a).then((function(){t()})).catch((function(e){n(e)}))}),(function(e){n(e)}))}))})):i.reject("Invalid arguments"),t),r}};function ee(e,t){var n=e.name+"/";return e.storeName!==t.storeName&&(n+=e.storeName+"/"),n}var te={_driver:"localStorageWrapper",_initStorage:function(e){var t={};if(e)for(var n in e)t[n]=e[n];return t.keyPrefix=ee(e,this._defaultConfig),!function(){var e="_localforage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch(e){return!0}}()||localStorage.length>0?(this._dbInfo=t,t.serializer=G,i.resolve()):i.reject()},_support:function(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=n.ready().then((function(){for(var t=n._dbInfo,r=t.keyPrefix,o=r.length,a=localStorage.length,i=1,s=0;s<a;s++){var c=localStorage.key(s);if(0===c.indexOf(r)){var l=localStorage.getItem(c);if(l&&(l=t.serializer.deserialize(l)),void 0!==(l=e(l,c.substring(o),i++)))return l}}}));return s(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=n.ready().then((function(){var t=n._dbInfo,r=localStorage.getItem(t.keyPrefix+e);return r&&(r=t.serializer.deserialize(r)),r}));return s(r,t),r},setItem:function(e,t,n){var r=this;e=l(e);var o=r.ready().then((function(){void 0===t&&(t=null);var n=t;return new i((function(o,a){var i=r._dbInfo;i.serializer.serialize(t,(function(t,r){if(r)a(r);else try{localStorage.setItem(i.keyPrefix+e,t),o(n)}catch(e){"QuotaExceededError"!==e.name&&"NS_ERROR_DOM_QUOTA_REACHED"!==e.name||a(e),a(e)}}))}))}));return s(o,n),o},removeItem:function(e,t){var n=this;e=l(e);var r=n.ready().then((function(){var t=n._dbInfo;localStorage.removeItem(t.keyPrefix+e)}));return s(r,t),r},clear:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo.keyPrefix,n=localStorage.length-1;n>=0;n--){var r=localStorage.key(n);0===r.indexOf(e)&&localStorage.removeItem(r)}}));return s(n,e),n},length:function(e){var t=this.keys().then((function(e){return e.length}));return s(t,e),t},key:function(e,t){var n=this,r=n.ready().then((function(){var t,r=n._dbInfo;try{t=localStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(r.keyPrefix.length)),t}));return s(r,t),r},keys:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo,n=localStorage.length,r=[],o=0;o<n;o++){var a=localStorage.key(o);0===a.indexOf(e.keyPrefix)&&r.push(a.substring(e.keyPrefix.length))}return r}));return s(n,e),n},dropInstance:function(e,t){if(t=u.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){var n=this.config();e.name=e.name||n.name,e.storeName=e.storeName||n.storeName}var r,o=this;return s(r=e.name?new i((function(t){e.storeName?t(ee(e,o._defaultConfig)):t(e.name+"/")})).then((function(e){for(var t=localStorage.length-1;t>=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}})):i.reject("Invalid arguments"),t),r}},ne=function(e,t){for(var n,r,o=e.length,a=0;a<o;){if((n=e[a])===(r=t)||"number"==typeof n&&"number"==typeof r&&isNaN(n)&&isNaN(r))return!0;a++}return!1},re=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},oe={},ae={},ie={INDEXEDDB:N,WEBSQL:Q,LOCALSTORAGE:te},se=[ie.INDEXEDDB._driver,ie.WEBSQL._driver,ie.LOCALSTORAGE._driver],ce=["dropInstance"],le=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(ce),ue={description:"",driver:se.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function fe(e,t){e[t]=function(){var n=arguments;return e.ready().then((function(){return e[t].apply(e,n)}))}}function he(){for(var e=1;e<arguments.length;e++){var t=arguments[e];if(t)for(var n in t)t.hasOwnProperty(n)&&(re(t[n])?arguments[0][n]=t[n].slice():arguments[0][n]=t[n])}return arguments[0]}var pe=function(){function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),ie)if(ie.hasOwnProperty(n)){var r=ie[n],o=r._driver;this[n]=o,oe[o]||this.defineDriver(r)}this._defaultConfig=he({},ue),this._config=he({},this._defaultConfig,t),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch((function(){}))}return e.prototype.config=function(e){if("object"===(void 0===e?"undefined":r(e))){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var t in e){if("storeName"===t&&(e[t]=e[t].replace(/\W/g,"_")),"version"===t&&"number"!=typeof e[t])return new Error("Database version must be a number.");this._config[t]=e[t]}return!("driver"in e)||!e.driver||this.setDriver(this._config.driver)}return"string"==typeof e?this._config[e]:this._config},e.prototype.defineDriver=function(e,t,n){var r=new i((function(t,n){try{var r=e._driver,o=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!e._driver)return void n(o);for(var a=le.concat("_initStorage"),c=0,l=a.length;c<l;c++){var u=a[c];if((!ne(ce,u)||e[u])&&"function"!=typeof e[u])return void n(o)}!function(){for(var t=function(e){return function(){var t=new Error("Method "+e+" is not implemented by the current driver"),n=i.reject(t);return s(n,arguments[arguments.length-1]),n}},n=0,r=ce.length;n<r;n++){var o=ce[n];e[o]||(e[o]=t(o))}}();var f=function(n){oe[r]&&console.info("Redefining LocalForage driver: "+r),oe[r]=e,ae[r]=n,t()};"_support"in e?e._support&&"function"==typeof e._support?e._support().then(f,n):f(!!e._support):f(!0)}catch(e){n(e)}}));return c(r,t,n),r},e.prototype.driver=function(){return this._driver||null},e.prototype.getDriver=function(e,t,n){var r=oe[e]?i.resolve(oe[e]):i.reject(new Error("Driver not found."));return c(r,t,n),r},e.prototype.getSerializer=function(e){var t=i.resolve(G);return c(t,e),t},e.prototype.ready=function(e){var t=this,n=t._driverSet.then((function(){return null===t._ready&&(t._ready=t._initDriver()),t._ready}));return c(n,e,e),n},e.prototype.setDriver=function(e,t,n){var r=this;re(e)||(e=[e]);var o=this._getSupportedDrivers(e);function a(){r._config.driver=r.driver()}function s(e){return r._extend(e),a(),r._ready=r._initStorage(r._config),r._ready}var l=null!==this._driverSet?this._driverSet.catch((function(){return i.resolve()})):i.resolve();return this._driverSet=l.then((function(){var e=o[0];return r._dbInfo=null,r._ready=null,r.getDriver(e).then((function(e){r._driver=e._driver,a(),r._wrapLibraryMethodsWithReady(),r._initDriver=function(e){return function(){var t=0;return function n(){for(;t<e.length;){var o=e[t];return t++,r._dbInfo=null,r._ready=null,r.getDriver(o).then(s).catch(n)}a();var c=new Error("No available storage method found.");return r._driverSet=i.reject(c),r._driverSet}()}}(o)}))})).catch((function(){a();var e=new Error("No available storage method found.");return r._driverSet=i.reject(e),r._driverSet})),c(this._driverSet,t,n),this._driverSet},e.prototype.supports=function(e){return!!ae[e]},e.prototype._extend=function(e){he(this,e)},e.prototype._getSupportedDrivers=function(e){for(var t=[],n=0,r=e.length;n<r;n++){var o=e[n];this.supports(o)&&t.push(o)}return t},e.prototype._wrapLibraryMethodsWithReady=function(){for(var e=0,t=le.length;e<t;e++)fe(this,le[e])},e.prototype.createInstance=function(t){return new e(t)},e}(),de=new pe;t.exports=de},{3:3}]},{},[4])(4)}))},72378:(e,t,n)=>{e=n.nmd(e);var r="__lodash_hash_undefined__",o=9007199254740991,a="[object Arguments]",i="[object Function]",s="[object Object]",c=/^\[object .+?Constructor\]$/,l=/^(?:0|[1-9]\d*)$/,u={};u["[object Float32Array]"]=u["[object Float64Array]"]=u["[object Int8Array]"]=u["[object Int16Array]"]=u["[object Int32Array]"]=u["[object Uint8Array]"]=u["[object Uint8ClampedArray]"]=u["[object Uint16Array]"]=u["[object Uint32Array]"]=!0,u[a]=u["[object Array]"]=u["[object ArrayBuffer]"]=u["[object Boolean]"]=u["[object DataView]"]=u["[object Date]"]=u["[object Error]"]=u[i]=u["[object Map]"]=u["[object Number]"]=u[s]=u["[object RegExp]"]=u["[object Set]"]=u["[object String]"]=u["[object WeakMap]"]=!1;var f="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,h="object"==typeof self&&self&&self.Object===Object&&self,p=f||h||Function("return this")(),d=t&&!t.nodeType&&t,m=d&&e&&!e.nodeType&&e,v=m&&m.exports===d,g=v&&f.process,b=function(){try{return m&&m.require&&m.require("util").types||g&&g.binding&&g.binding("util")}catch(e){}}(),y=b&&b.isTypedArray;function _(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}var w,x,k,S=Array.prototype,E=Function.prototype,O=Object.prototype,C=p["__core-js_shared__"],N=E.toString,j=O.hasOwnProperty,A=(w=/[^.]+$/.exec(C&&C.keys&&C.keys.IE_PROTO||""))?"Symbol(src)_1."+w:"",L=O.toString,M=N.call(Object),I=RegExp("^"+N.call(j).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),z=v?p.Buffer:void 0,T=p.Symbol,R=p.Uint8Array,$=(z&&z.allocUnsafe,x=Object.getPrototypeOf,k=Object,function(e){return x(k(e))}),P=Object.create,F=O.propertyIsEnumerable,H=S.splice,D=T?T.toStringTag:void 0,V=function(){try{var e=ce(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),U=z?z.isBuffer:void 0,B=Math.max,W=Date.now,Y=ce(p,"Map"),q=ce(Object,"create"),G=function(){function e(){}return function(t){if(!_e(t))return{};if(P)return P(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function Z(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function X(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function J(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function K(e){var t=this.__data__=new X(e);this.size=t.size}function Q(e,t,n){(void 0!==n&&!pe(e[t],n)||void 0===n&&!(t in e))&&ne(e,t,n)}function ee(e,t,n){var r=e[t];j.call(e,t)&&pe(r,n)&&(void 0!==n||t in e)||ne(e,t,n)}function te(e,t){for(var n=e.length;n--;)if(pe(e[n][0],t))return n;return-1}function ne(e,t,n){"__proto__"==t&&V?V(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}Z.prototype.clear=function(){this.__data__=q?q(null):{},this.size=0},Z.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},Z.prototype.get=function(e){var t=this.__data__;if(q){var n=t[e];return n===r?void 0:n}return j.call(t,e)?t[e]:void 0},Z.prototype.has=function(e){var t=this.__data__;return q?void 0!==t[e]:j.call(t,e)},Z.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=q&&void 0===t?r:t,this},X.prototype.clear=function(){this.__data__=[],this.size=0},X.prototype.delete=function(e){var t=this.__data__,n=te(t,e);return!(n<0||(n==t.length-1?t.pop():H.call(t,n,1),--this.size,0))},X.prototype.get=function(e){var t=this.__data__,n=te(t,e);return n<0?void 0:t[n][1]},X.prototype.has=function(e){return te(this.__data__,e)>-1},X.prototype.set=function(e,t){var n=this.__data__,r=te(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},J.prototype.clear=function(){this.size=0,this.__data__={hash:new Z,map:new(Y||X),string:new Z}},J.prototype.delete=function(e){var t=se(this,e).delete(e);return this.size-=t?1:0,t},J.prototype.get=function(e){return se(this,e).get(e)},J.prototype.has=function(e){return se(this,e).has(e)},J.prototype.set=function(e,t){var n=se(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},K.prototype.clear=function(){this.__data__=new X,this.size=0},K.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},K.prototype.get=function(e){return this.__data__.get(e)},K.prototype.has=function(e){return this.__data__.has(e)},K.prototype.set=function(e,t){var n=this.__data__;if(n instanceof X){var r=n.__data__;if(!Y||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new J(r)}return n.set(e,t),this.size=n.size,this};function re(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":D&&D in Object(e)?function(e){var t=j.call(e,D),n=e[D];try{e[D]=void 0;var r=!0}catch(e){}var o=L.call(e);return r&&(t?e[D]=n:delete e[D]),o}(e):function(e){return L.call(e)}(e)}function oe(e){return we(e)&&re(e)==a}function ae(e,t,n,r,o){e!==t&&function(e,t,n){for(var r=-1,o=Object(e),a=n(e),i=a.length;i--;){var s=a[++r];if(!1===t(o[s],s,o))break}}(t,(function(a,i){if(o||(o=new K),_e(a))!function(e,t,n,r,o,a,i){var c=fe(e,n),l=fe(t,n),u=i.get(l);if(u)Q(e,n,u);else{var f,h,p,d,m,v=a?a(c,l,n+"",e,t,i):void 0,g=void 0===v;if(g){var b=me(l),y=!b&&ge(l),_=!b&&!y&&xe(l);v=l,b||y||_?me(c)?v=c:we(m=c)&&ve(m)?v=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}(c):y?(g=!1,v=function(e,t){return e.slice()}(l)):_?(g=!1,d=new(p=(f=l).buffer).constructor(p.byteLength),new R(d).set(new R(p)),h=d,v=new f.constructor(h,f.byteOffset,f.length)):v=[]:function(e){if(!we(e)||re(e)!=s)return!1;var t=$(e);if(null===t)return!0;var n=j.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&N.call(n)==M}(l)||de(l)?(v=c,de(c)?v=function(e){return function(e,t,n,r){var o=!n;n||(n={});for(var a=-1,i=t.length;++a<i;){var s=t[a],c=void 0;void 0===c&&(c=e[s]),o?ne(n,s,c):ee(n,s,c)}return n}(e,ke(e))}(c):_e(c)&&!be(c)||(v=function(e){return"function"!=typeof e.constructor||ue(e)?{}:G($(e))}(l))):g=!1}g&&(i.set(l,v),o(v,l,r,a,i),i.delete(l)),Q(e,n,v)}}(e,t,i,n,ae,r,o);else{var c=r?r(fe(e,i),a,i+"",e,t,o):void 0;void 0===c&&(c=a),Q(e,i,c)}}),ke)}var ie=V?function(e,t){return V(e,"toString",{configurable:!0,enumerable:!1,value:(n=t,function(){return n}),writable:!0});var n}:Oe;function se(e,t){var n,r,o=e.__data__;return("string"==(r=typeof(n=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?o["string"==typeof t?"string":"hash"]:o.map}function ce(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return function(e){return!(!_e(e)||function(e){return!!A&&A in e}(e))&&(be(e)?I:c).test(function(e){if(null!=e){try{return N.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}(n)?n:void 0}function le(e,t){var n=typeof e;return!!(t=null==t?o:t)&&("number"==n||"symbol"!=n&&l.test(e))&&e>-1&&e%1==0&&e<t}function ue(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||O)}function fe(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var he=function(e){var t=0,n=0;return function(){var r=W(),o=16-(r-n);if(n=r,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(ie);function pe(e,t){return e===t||e!=e&&t!=t}var de=oe(function(){return arguments}())?oe:function(e){return we(e)&&j.call(e,"callee")&&!F.call(e,"callee")},me=Array.isArray;function ve(e){return null!=e&&ye(e.length)&&!be(e)}var ge=U||function(){return!1};function be(e){if(!_e(e))return!1;var t=re(e);return t==i||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}function ye(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=o}function _e(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function we(e){return null!=e&&"object"==typeof e}var xe=y?function(e){return function(t){return e(t)}}(y):function(e){return we(e)&&ye(e.length)&&!!u[re(e)]};function ke(e){return ve(e)?function(e,t){var n=me(e),r=!n&&de(e),o=!n&&!r&&ge(e),a=!n&&!r&&!o&&xe(e),i=n||r||o||a,s=i?function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}(e.length,String):[],c=s.length;for(var l in e)!t&&!j.call(e,l)||i&&("length"==l||o&&("offset"==l||"parent"==l)||a&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||le(l,c))||s.push(l);return s}(e,!0):function(e){if(!_e(e))return function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}(e);var t=ue(e),n=[];for(var r in e)("constructor"!=r||!t&&j.call(e,r))&&n.push(r);return n}(e)}var Se,Ee=(Se=function(e,t,n){ae(e,t,n)},function(e,t){return he(function(e,t,n){return t=B(void 0===t?e.length-1:t,0),function(){for(var r=arguments,o=-1,a=B(r.length-t,0),i=Array(a);++o<a;)i[o]=r[t+o];o=-1;for(var s=Array(t+1);++o<t;)s[o]=r[o];return s[t]=n(i),_(e,this,s)}}(e,t,Oe),e+"")}((function(e,t){var n=-1,r=t.length,o=r>1?t[r-1]:void 0,a=r>2?t[2]:void 0;for(o=Se.length>3&&"function"==typeof o?(r--,o):void 0,a&&function(e,t,n){if(!_e(n))return!1;var r=typeof t;return!!("number"==r?ve(n)&&le(t,n.length):"string"==r&&t in n)&&pe(n[t],e)}(t[0],t[1],a)&&(o=r<3?void 0:o,r=1),e=Object(e);++n<r;){var i=t[n];i&&Se(e,i,n)}return e})));function Oe(e){return e}e.exports=Ee},18552:(e,t,n)=>{var r=n(10852)(n(55639),"DataView");e.exports=r},1989:(e,t,n)=>{var r=n(51789),o=n(80401),a=n(57667),i=n(21327),s=n(81866);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=a,c.prototype.has=i,c.prototype.set=s,e.exports=c},38407:(e,t,n)=>{var r=n(27040),o=n(14125),a=n(82117),i=n(67518),s=n(54705);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=a,c.prototype.has=i,c.prototype.set=s,e.exports=c},57071:(e,t,n)=>{var r=n(10852)(n(55639),"Map");e.exports=r},83369:(e,t,n)=>{var r=n(24785),o=n(11285),a=n(96e3),i=n(49916),s=n(95265);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=o,c.prototype.get=a,c.prototype.has=i,c.prototype.set=s,e.exports=c},53818:(e,t,n)=>{var r=n(10852)(n(55639),"Promise");e.exports=r},58525:(e,t,n)=>{var r=n(10852)(n(55639),"Set");e.exports=r},88668:(e,t,n)=>{var r=n(83369),o=n(90619),a=n(72385);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}i.prototype.add=i.prototype.push=o,i.prototype.has=a,e.exports=i},46384:(e,t,n)=>{var r=n(38407),o=n(37465),a=n(63779),i=n(67599),s=n(44758),c=n(34309);function l(e){var t=this.__data__=new r(e);this.size=t.size}l.prototype.clear=o,l.prototype.delete=a,l.prototype.get=i,l.prototype.has=s,l.prototype.set=c,e.exports=l},62705:(e,t,n)=>{var r=n(55639).Symbol;e.exports=r},11149:(e,t,n)=>{var r=n(55639).Uint8Array;e.exports=r},70577:(e,t,n)=>{var r=n(10852)(n(55639),"WeakMap");e.exports=r},96874:e=>{e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},44174:e=>{e.exports=function(e,t,n,r){for(var o=-1,a=null==e?0:e.length;++o<a;){var i=e[o];t(r,i,n(i),e)}return r}},77412:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},34963:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=0,a=[];++n<r;){var i=e[n];t(i,n,e)&&(a[o++]=i)}return a}},47443:(e,t,n)=>{var r=n(42118);e.exports=function(e,t){return!(null==e||!e.length)&&r(e,t,0)>-1}},1196:e=>{e.exports=function(e,t,n){for(var r=-1,o=null==e?0:e.length;++r<o;)if(n(t,e[r]))return!0;return!1}},14636:(e,t,n)=>{var r=n(22545),o=n(35694),a=n(1469),i=n(44144),s=n(65776),c=n(36719),l=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=a(e),u=!n&&o(e),f=!n&&!u&&i(e),h=!n&&!u&&!f&&c(e),p=n||u||f||h,d=p?r(e.length,String):[],m=d.length;for(var v in e)!t&&!l.call(e,v)||p&&("length"==v||f&&("offset"==v||"parent"==v)||h&&("buffer"==v||"byteLength"==v||"byteOffset"==v)||s(v,m))||d.push(v);return d}},29932:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,o=Array(r);++n<r;)o[n]=t(e[n],n,e);return o}},62488:e=>{e.exports=function(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}},62663:e=>{e.exports=function(e,t,n,r){var o=-1,a=null==e?0:e.length;for(r&&a&&(n=e[++o]);++o<a;)n=t(n,e[o],o,e);return n}},70151:(e,t,n)=>{var r=n(278),o=n(73480);e.exports=function(e){return o(r(e))}},82908:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},44286:e=>{e.exports=function(e){return e.split("")}},49029:e=>{var t=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(t)||[]}},86556:(e,t,n)=>{var r=n(89465),o=n(77813);e.exports=function(e,t,n){(void 0!==n&&!o(e[t],n)||void 0===n&&!(t in e))&&r(e,t,n)}},34865:(e,t,n)=>{var r=n(89465),o=n(77813),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var i=e[t];a.call(e,t)&&o(i,n)&&(void 0!==n||t in e)||r(e,t,n)}},18470:(e,t,n)=>{var r=n(77813);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},81119:(e,t,n)=>{var r=n(89881);e.exports=function(e,t,n,o){return r(e,(function(e,r,a){t(o,e,n(e),a)})),o}},44037:(e,t,n)=>{var r=n(98363),o=n(3674);e.exports=function(e,t){return e&&r(t,o(t),e)}},63886:(e,t,n)=>{var r=n(98363),o=n(81704);e.exports=function(e,t){return e&&r(t,o(t),e)}},89465:(e,t,n)=>{var r=n(38777);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},29750:e=>{e.exports=function(e,t,n){return e==e&&(void 0!==n&&(e=e<=n?e:n),void 0!==t&&(e=e>=t?e:t)),e}},85990:(e,t,n)=>{var r=n(46384),o=n(77412),a=n(34865),i=n(44037),s=n(63886),c=n(64626),l=n(278),u=n(18805),f=n(1911),h=n(58234),p=n(46904),d=n(64160),m=n(43824),v=n(29148),g=n(38517),b=n(1469),y=n(44144),_=n(56688),w=n(13218),x=n(72928),k=n(3674),S=n(81704),E="[object Arguments]",O="[object Function]",C="[object Object]",N={};N[E]=N["[object Array]"]=N["[object ArrayBuffer]"]=N["[object DataView]"]=N["[object Boolean]"]=N["[object Date]"]=N["[object Float32Array]"]=N["[object Float64Array]"]=N["[object Int8Array]"]=N["[object Int16Array]"]=N["[object Int32Array]"]=N["[object Map]"]=N["[object Number]"]=N[C]=N["[object RegExp]"]=N["[object Set]"]=N["[object String]"]=N["[object Symbol]"]=N["[object Uint8Array]"]=N["[object Uint8ClampedArray]"]=N["[object Uint16Array]"]=N["[object Uint32Array]"]=!0,N["[object Error]"]=N[O]=N["[object WeakMap]"]=!1,e.exports=function e(t,n,j,A,L,M){var I,z=1&n,T=2&n,R=4&n;if(j&&(I=L?j(t,A,L,M):j(t)),void 0!==I)return I;if(!w(t))return t;var $=b(t);if($){if(I=m(t),!z)return l(t,I)}else{var P=d(t),F=P==O||"[object GeneratorFunction]"==P;if(y(t))return c(t,z);if(P==C||P==E||F&&!L){if(I=T||F?{}:g(t),!z)return T?f(t,s(I,t)):u(t,i(I,t))}else{if(!N[P])return L?t:{};I=v(t,P,z)}}M||(M=new r);var H=M.get(t);if(H)return H;M.set(t,I),x(t)?t.forEach((function(r){I.add(e(r,n,j,r,t,M))})):_(t)&&t.forEach((function(r,o){I.set(o,e(r,n,j,o,t,M))}));var D=$?void 0:(R?T?p:h:T?S:k)(t);return o(D||t,(function(r,o){D&&(r=t[o=r]),a(I,o,e(r,n,j,o,t,M))})),I}},3118:(e,t,n)=>{var r=n(13218),o=Object.create,a=function(){function e(){}return function(t){if(!r(t))return{};if(o)return o(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=a},20731:(e,t,n)=>{var r=n(88668),o=n(47443),a=n(1196),i=n(29932),s=n(7518),c=n(74757);e.exports=function(e,t,n,l){var u=-1,f=o,h=!0,p=e.length,d=[],m=t.length;if(!p)return d;n&&(t=i(t,s(n))),l?(f=a,h=!1):t.length>=200&&(f=c,h=!1,t=new r(t));e:for(;++u<p;){var v=e[u],g=null==n?v:n(v);if(v=l||0!==v?v:0,h&&g==g){for(var b=m;b--;)if(t[b]===g)continue e;d.push(v)}else f(t,g,l)||d.push(v)}return d}},89881:(e,t,n)=>{var r=n(47816),o=n(99291)(r);e.exports=o},56029:(e,t,n)=>{var r=n(33448);e.exports=function(e,t,n){for(var o=-1,a=e.length;++o<a;){var i=e[o],s=t(i);if(null!=s&&(void 0===c?s==s&&!r(s):n(s,c)))var c=s,l=i}return l}},80760:(e,t,n)=>{var r=n(89881);e.exports=function(e,t){var n=[];return r(e,(function(e,r,o){t(e,r,o)&&n.push(e)})),n}},41848:e=>{e.exports=function(e,t,n,r){for(var o=e.length,a=n+(r?1:-1);r?a--:++a<o;)if(t(e[a],a,e))return a;return-1}},21078:(e,t,n)=>{var r=n(62488),o=n(37285);e.exports=function e(t,n,a,i,s){var c=-1,l=t.length;for(a||(a=o),s||(s=[]);++c<l;){var u=t[c];n>0&&a(u)?n>1?e(u,n-1,a,i,s):r(s,u):i||(s[s.length]=u)}return s}},28483:(e,t,n)=>{var r=n(25063)();e.exports=r},47816:(e,t,n)=>{var r=n(28483),o=n(3674);e.exports=function(e,t){return e&&r(e,t,o)}},97786:(e,t,n)=>{var r=n(71811),o=n(40327);e.exports=function(e,t){for(var n=0,a=(t=r(t,e)).length;null!=e&&n<a;)e=e[o(t[n++])];return n&&n==a?e:void 0}},68866:(e,t,n)=>{var r=n(62488),o=n(1469);e.exports=function(e,t,n){var a=t(e);return o(e)?a:r(a,n(e))}},44239:(e,t,n)=>{var r=n(62705),o=n(89607),a=n(2333),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?o(e):a(e)}},53325:e=>{e.exports=function(e,t){return e>t}},13:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},42118:(e,t,n)=>{var r=n(41848),o=n(62722),a=n(42351);e.exports=function(e,t,n){return t==t?a(e,t,n):r(e,o,n)}},9454:(e,t,n)=>{var r=n(44239),o=n(37005);e.exports=function(e){return o(e)&&"[object Arguments]"==r(e)}},90939:(e,t,n)=>{var r=n(2492),o=n(37005);e.exports=function e(t,n,a,i,s){return t===n||(null==t||null==n||!o(t)&&!o(n)?t!=t&&n!=n:r(t,n,a,i,e,s))}},2492:(e,t,n)=>{var r=n(46384),o=n(67114),a=n(18351),i=n(16096),s=n(64160),c=n(1469),l=n(44144),u=n(36719),f="[object Arguments]",h="[object Array]",p="[object Object]",d=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,m,v,g){var b=c(e),y=c(t),_=b?h:s(e),w=y?h:s(t),x=(_=_==f?p:_)==p,k=(w=w==f?p:w)==p,S=_==w;if(S&&l(e)){if(!l(t))return!1;b=!0,x=!1}if(S&&!x)return g||(g=new r),b||u(e)?o(e,t,n,m,v,g):a(e,t,_,n,m,v,g);if(!(1&n)){var E=x&&d.call(e,"__wrapped__"),O=k&&d.call(t,"__wrapped__");if(E||O){var C=E?e.value():e,N=O?t.value():t;return g||(g=new r),v(C,N,n,m,g)}}return!!S&&(g||(g=new r),i(e,t,n,m,v,g))}},25588:(e,t,n)=>{var r=n(64160),o=n(37005);e.exports=function(e){return o(e)&&"[object Map]"==r(e)}},2958:(e,t,n)=>{var r=n(46384),o=n(90939);e.exports=function(e,t,n,a){var i=n.length,s=i,c=!a;if(null==e)return!s;for(e=Object(e);i--;){var l=n[i];if(c&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++i<s;){var u=(l=n[i])[0],f=e[u],h=l[1];if(c&&l[2]){if(void 0===f&&!(u in e))return!1}else{var p=new r;if(a)var d=a(f,h,u,e,t,p);if(!(void 0===d?o(h,f,3,a,p):d))return!1}}return!0}},62722:e=>{e.exports=function(e){return e!=e}},28458:(e,t,n)=>{var r=n(23560),o=n(15346),a=n(13218),i=n(80346),s=/^\[object .+?Constructor\]$/,c=Function.prototype,l=Object.prototype,u=c.toString,f=l.hasOwnProperty,h=RegExp("^"+u.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!a(e)||o(e))&&(r(e)?h:s).test(i(e))}},29221:(e,t,n)=>{var r=n(64160),o=n(37005);e.exports=function(e){return o(e)&&"[object Set]"==r(e)}},38749:(e,t,n)=>{var r=n(44239),o=n(41780),a=n(37005),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return a(e)&&o(e.length)&&!!i[r(e)]}},67206:(e,t,n)=>{var r=n(91573),o=n(16432),a=n(6557),i=n(1469),s=n(39601);e.exports=function(e){return"function"==typeof e?e:null==e?a:"object"==typeof e?i(e)?o(e[0],e[1]):r(e):s(e)}},280:(e,t,n)=>{var r=n(25726),o=n(86916),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=[];for(var n in Object(e))a.call(e,n)&&"constructor"!=n&&t.push(n);return t}},10313:(e,t,n)=>{var r=n(13218),o=n(25726),a=n(33498),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return a(e);var t=o(e),n=[];for(var s in e)("constructor"!=s||!t&&i.call(e,s))&&n.push(s);return n}},70433:e=>{e.exports=function(e,t){return e<t}},69199:(e,t,n)=>{var r=n(89881),o=n(98612);e.exports=function(e,t){var n=-1,a=o(e)?Array(e.length):[];return r(e,(function(e,r,o){a[++n]=t(e,r,o)})),a}},91573:(e,t,n)=>{var r=n(2958),o=n(1499),a=n(42634);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?a(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},16432:(e,t,n)=>{var r=n(90939),o=n(27361),a=n(79095),i=n(15403),s=n(89162),c=n(42634),l=n(40327);e.exports=function(e,t){return i(e)&&s(t)?c(l(e),t):function(n){var i=o(n,e);return void 0===i&&i===t?a(n,e):r(t,i,3)}}},42980:(e,t,n)=>{var r=n(46384),o=n(86556),a=n(28483),i=n(59783),s=n(13218),c=n(81704),l=n(36390);e.exports=function e(t,n,u,f,h){t!==n&&a(n,(function(a,c){if(h||(h=new r),s(a))i(t,n,c,u,e,f,h);else{var p=f?f(l(t,c),a,c+"",t,n,h):void 0;void 0===p&&(p=a),o(t,c,p)}}),c)}},59783:(e,t,n)=>{var r=n(86556),o=n(64626),a=n(77133),i=n(278),s=n(38517),c=n(35694),l=n(1469),u=n(29246),f=n(44144),h=n(23560),p=n(13218),d=n(68630),m=n(36719),v=n(36390),g=n(59881);e.exports=function(e,t,n,b,y,_,w){var x=v(e,n),k=v(t,n),S=w.get(k);if(S)r(e,n,S);else{var E=_?_(x,k,n+"",e,t,w):void 0,O=void 0===E;if(O){var C=l(k),N=!C&&f(k),j=!C&&!N&&m(k);E=k,C||N||j?l(x)?E=x:u(x)?E=i(x):N?(O=!1,E=o(k,!0)):j?(O=!1,E=a(k,!0)):E=[]:d(k)||c(k)?(E=x,c(x)?E=g(x):p(x)&&!h(x)||(E=s(k))):O=!1}O&&(w.set(k,E),y(E,k,b,_,w),w.delete(k)),r(e,n,E)}}},82689:(e,t,n)=>{var r=n(29932),o=n(97786),a=n(67206),i=n(69199),s=n(71131),c=n(7518),l=n(85022),u=n(6557),f=n(1469);e.exports=function(e,t,n){t=t.length?r(t,(function(e){return f(e)?function(t){return o(t,1===e.length?e[0]:e)}:e})):[u];var h=-1;t=r(t,c(a));var p=i(e,(function(e,n,o){return{criteria:r(t,(function(t){return t(e)})),index:++h,value:e}}));return s(p,(function(e,t){return l(e,t,n)}))}},63012:(e,t,n)=>{var r=n(97786),o=n(10611),a=n(71811);e.exports=function(e,t,n){for(var i=-1,s=t.length,c={};++i<s;){var l=t[i],u=r(e,l);n(u,l)&&o(c,a(l,e),u)}return c}},40371:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},79152:(e,t,n)=>{var r=n(97786);e.exports=function(e){return function(t){return r(t,e)}}},18674:e=>{e.exports=function(e){return function(t){return null==e?void 0:e[t]}}},15742:(e,t,n)=>{var r=n(57406),o=n(65776),a=Array.prototype.splice;e.exports=function(e,t){for(var n=e?t.length:0,i=n-1;n--;){var s=t[n];if(n==i||s!==c){var c=s;o(s)?a.call(e,s,1):r(e,s)}}return e}},69877:e=>{var t=Math.floor,n=Math.random;e.exports=function(e,r){return e+t(n()*(r-e+1))}},10107:e=>{e.exports=function(e,t,n,r,o){return o(e,(function(e,o,a){n=r?(r=!1,e):t(n,e,o,a)})),n}},5976:(e,t,n)=>{var r=n(6557),o=n(45357),a=n(30061);e.exports=function(e,t){return a(o(e,t,r),e+"")}},10611:(e,t,n)=>{var r=n(34865),o=n(71811),a=n(65776),i=n(13218),s=n(40327);e.exports=function(e,t,n,c){if(!i(e))return e;for(var l=-1,u=(t=o(t,e)).length,f=u-1,h=e;null!=h&&++l<u;){var p=s(t[l]),d=n;if("__proto__"===p||"constructor"===p||"prototype"===p)return e;if(l!=f){var m=h[p];void 0===(d=c?c(m,p,h):void 0)&&(d=i(m)?m:a(t[l+1])?[]:{})}r(h,p,d),h=h[p]}return e}},56560:(e,t,n)=>{var r=n(75703),o=n(38777),a=n(6557),i=o?function(e,t){return o(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:a;e.exports=i},25127:(e,t,n)=>{var r=n(73480),o=n(52628);e.exports=function(e){return r(o(e))}},14259:e=>{e.exports=function(e,t,n){var r=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(o);++r<o;)a[r]=e[r+t];return a}},71131:e=>{e.exports=function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}},67762:e=>{e.exports=function(e,t){for(var n,r=-1,o=e.length;++r<o;){var a=t(e[r]);void 0!==a&&(n=void 0===n?a:n+a)}return n}},22545:e=>{e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},80531:(e,t,n)=>{var r=n(62705),o=n(29932),a=n(1469),i=n(33448),s=r?r.prototype:void 0,c=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(a(t))return o(t,e)+"";if(i(t))return c?c.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},27561:(e,t,n)=>{var r=n(67990),o=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(o,""):e}},7518:e=>{e.exports=function(e){return function(t){return e(t)}}},45652:(e,t,n)=>{var r=n(88668),o=n(47443),a=n(1196),i=n(74757),s=n(23593),c=n(21814);e.exports=function(e,t,n){var l=-1,u=o,f=e.length,h=!0,p=[],d=p;if(n)h=!1,u=a;else if(f>=200){var m=t?null:s(e);if(m)return c(m);h=!1,u=i,d=new r}else d=t?[]:p;e:for(;++l<f;){var v=e[l],g=t?t(v):v;if(v=n||0!==v?v:0,h&&g==g){for(var b=d.length;b--;)if(d[b]===g)continue e;t&&d.push(g),p.push(v)}else u(d,g,n)||(d!==p&&d.push(g),p.push(v))}return p}},57406:(e,t,n)=>{var r=n(71811),o=n(10928),a=n(40292),i=n(40327);e.exports=function(e,t){return t=r(t,e),null==(e=a(e,t))||delete e[i(o(t))]}},47415:(e,t,n)=>{var r=n(29932);e.exports=function(e,t){return r(t,(function(t){return e[t]}))}},74757:e=>{e.exports=function(e,t){return e.has(t)}},54290:(e,t,n)=>{var r=n(6557);e.exports=function(e){return"function"==typeof e?e:r}},71811:(e,t,n)=>{var r=n(1469),o=n(15403),a=n(55514),i=n(79833);e.exports=function(e,t){return r(e)?e:o(e,t)?[e]:a(i(e))}},40180:(e,t,n)=>{var r=n(14259);e.exports=function(e,t,n){var o=e.length;return n=void 0===n?o:n,!t&&n>=o?e:r(e,t,n)}},5512:(e,t,n)=>{var r=n(42118);e.exports=function(e,t){for(var n=e.length;n--&&r(t,e[n],0)>-1;);return n}},89817:(e,t,n)=>{var r=n(42118);e.exports=function(e,t){for(var n=-1,o=e.length;++n<o&&r(t,e[n],0)>-1;);return n}},74318:(e,t,n)=>{var r=n(11149);e.exports=function(e){var t=new e.constructor(e.byteLength);return new r(t).set(new r(e)),t}},64626:(e,t,n)=>{e=n.nmd(e);var r=n(55639),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,i=a&&a.exports===o?r.Buffer:void 0,s=i?i.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var n=e.length,r=s?s(n):new e.constructor(n);return e.copy(r),r}},57157:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}},93147:e=>{var t=/\w*$/;e.exports=function(e){var n=new e.constructor(e.source,t.exec(e));return n.lastIndex=e.lastIndex,n}},40419:(e,t,n)=>{var r=n(62705),o=r?r.prototype:void 0,a=o?o.valueOf:void 0;e.exports=function(e){return a?Object(a.call(e)):{}}},77133:(e,t,n)=>{var r=n(74318);e.exports=function(e,t){var n=t?r(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}},26393:(e,t,n)=>{var r=n(33448);e.exports=function(e,t){if(e!==t){var n=void 0!==e,o=null===e,a=e==e,i=r(e),s=void 0!==t,c=null===t,l=t==t,u=r(t);if(!c&&!u&&!i&&e>t||i&&s&&l&&!c&&!u||o&&s&&l||!n&&l||!a)return 1;if(!o&&!i&&!u&&e<t||u&&n&&a&&!o&&!i||c&&n&&a||!s&&a||!l)return-1}return 0}},85022:(e,t,n)=>{var r=n(26393);e.exports=function(e,t,n){for(var o=-1,a=e.criteria,i=t.criteria,s=a.length,c=n.length;++o<s;){var l=r(a[o],i[o]);if(l)return o>=c?l:l*("desc"==n[o]?-1:1)}return e.index-t.index}},278:e=>{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},98363:(e,t,n)=>{var r=n(34865),o=n(89465);e.exports=function(e,t,n,a){var i=!n;n||(n={});for(var s=-1,c=t.length;++s<c;){var l=t[s],u=a?a(n[l],e[l],l,n,e):void 0;void 0===u&&(u=e[l]),i?o(n,l,u):r(n,l,u)}return n}},18805:(e,t,n)=>{var r=n(98363),o=n(99551);e.exports=function(e,t){return r(e,o(e),t)}},1911:(e,t,n)=>{var r=n(98363),o=n(51442);e.exports=function(e,t){return r(e,o(e),t)}},14429:(e,t,n)=>{var r=n(55639)["__core-js_shared__"];e.exports=r},55189:(e,t,n)=>{var r=n(44174),o=n(81119),a=n(67206),i=n(1469);e.exports=function(e,t){return function(n,s){var c=i(n)?r:o,l=t?t():{};return c(n,e,a(s,2),l)}}},21463:(e,t,n)=>{var r=n(5976),o=n(16612);e.exports=function(e){return r((function(t,n){var r=-1,a=n.length,i=a>1?n[a-1]:void 0,s=a>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(a--,i):void 0,s&&o(n[0],n[1],s)&&(i=a<3?void 0:i,a=1),t=Object(t);++r<a;){var c=n[r];c&&e(t,c,r,i)}return t}))}},99291:(e,t,n)=>{var r=n(98612);e.exports=function(e,t){return function(n,o){if(null==n)return n;if(!r(n))return e(n,o);for(var a=n.length,i=t?a:-1,s=Object(n);(t?i--:++i<a)&&!1!==o(s[i],i,s););return n}}},25063:e=>{e.exports=function(e){return function(t,n,r){for(var o=-1,a=Object(t),i=r(t),s=i.length;s--;){var c=i[e?s:++o];if(!1===n(a[c],c,a))break}return t}}},98805:(e,t,n)=>{var r=n(40180),o=n(62689),a=n(83140),i=n(79833);e.exports=function(e){return function(t){t=i(t);var n=o(t)?a(t):void 0,s=n?n[0]:t.charAt(0),c=n?r(n,1).join(""):t.slice(1);return s[e]()+c}}},35393:(e,t,n)=>{var r=n(62663),o=n(53816),a=n(58748),i=RegExp("['’]","g");e.exports=function(e){return function(t){return r(a(o(t).replace(i,"")),e,"")}}},67740:(e,t,n)=>{var r=n(67206),o=n(98612),a=n(3674);e.exports=function(e){return function(t,n,i){var s=Object(t);if(!o(t)){var c=r(n,3);t=a(t),n=function(e){return c(s[e],e,s)}}var l=e(t,n,i);return l>-1?s[c?t[l]:l]:void 0}}},23593:(e,t,n)=>{var r=n(58525),o=n(50308),a=n(21814),i=r&&1/a(new r([,-0]))[1]==1/0?function(e){return new r(e)}:o;e.exports=i},69389:(e,t,n)=>{var r=n(18674)({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"});e.exports=r},38777:(e,t,n)=>{var r=n(10852),o=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=o},67114:(e,t,n)=>{var r=n(88668),o=n(82908),a=n(74757);e.exports=function(e,t,n,i,s,c){var l=1&n,u=e.length,f=t.length;if(u!=f&&!(l&&f>u))return!1;var h=c.get(e),p=c.get(t);if(h&&p)return h==t&&p==e;var d=-1,m=!0,v=2&n?new r:void 0;for(c.set(e,t),c.set(t,e);++d<u;){var g=e[d],b=t[d];if(i)var y=l?i(b,g,d,t,e,c):i(g,b,d,e,t,c);if(void 0!==y){if(y)continue;m=!1;break}if(v){if(!o(t,(function(e,t){if(!a(v,t)&&(g===e||s(g,e,n,i,c)))return v.push(t)}))){m=!1;break}}else if(g!==b&&!s(g,b,n,i,c)){m=!1;break}}return c.delete(e),c.delete(t),m}},18351:(e,t,n)=>{var r=n(62705),o=n(11149),a=n(77813),i=n(67114),s=n(68776),c=n(21814),l=r?r.prototype:void 0,u=l?l.valueOf:void 0;e.exports=function(e,t,n,r,l,f,h){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!f(new o(e),new o(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var p=s;case"[object Set]":var d=1&r;if(p||(p=c),e.size!=t.size&&!d)return!1;var m=h.get(e);if(m)return m==t;r|=2,h.set(e,t);var v=i(p(e),p(t),r,l,f,h);return h.delete(e),v;case"[object Symbol]":if(u)return u.call(e)==u.call(t)}return!1}},16096:(e,t,n)=>{var r=n(58234),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,a,i,s){var c=1&n,l=r(e),u=l.length;if(u!=r(t).length&&!c)return!1;for(var f=u;f--;){var h=l[f];if(!(c?h in t:o.call(t,h)))return!1}var p=s.get(e),d=s.get(t);if(p&&d)return p==t&&d==e;var m=!0;s.set(e,t),s.set(t,e);for(var v=c;++f<u;){var g=e[h=l[f]],b=t[h];if(a)var y=c?a(b,g,h,t,e,s):a(g,b,h,e,t,s);if(!(void 0===y?g===b||i(g,b,n,a,s):y)){m=!1;break}v||(v="constructor"==h)}if(m&&!v){var _=e.constructor,w=t.constructor;_==w||!("constructor"in e)||!("constructor"in t)||"function"==typeof _&&_ instanceof _&&"function"==typeof w&&w instanceof w||(m=!1)}return s.delete(e),s.delete(t),m}},31957:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},58234:(e,t,n)=>{var r=n(68866),o=n(99551),a=n(3674);e.exports=function(e){return r(e,a,o)}},46904:(e,t,n)=>{var r=n(68866),o=n(51442),a=n(81704);e.exports=function(e){return r(e,a,o)}},45050:(e,t,n)=>{var r=n(37019);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},1499:(e,t,n)=>{var r=n(89162),o=n(3674);e.exports=function(e){for(var t=o(e),n=t.length;n--;){var a=t[n],i=e[a];t[n]=[a,i,r(i)]}return t}},10852:(e,t,n)=>{var r=n(28458),o=n(47801);e.exports=function(e,t){var n=o(e,t);return r(n)?n:void 0}},85924:(e,t,n)=>{var r=n(5569)(Object.getPrototypeOf,Object);e.exports=r},89607:(e,t,n)=>{var r=n(62705),o=Object.prototype,a=o.hasOwnProperty,i=o.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=a.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(e){}var o=i.call(e);return r&&(t?e[s]=n:delete e[s]),o}},99551:(e,t,n)=>{var r=n(34963),o=n(70479),a=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,s=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return a.call(e,t)})))}:o;e.exports=s},51442:(e,t,n)=>{var r=n(62488),o=n(85924),a=n(99551),i=n(70479),s=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,a(e)),e=o(e);return t}:i;e.exports=s},64160:(e,t,n)=>{var r=n(18552),o=n(57071),a=n(53818),i=n(58525),s=n(70577),c=n(44239),l=n(80346),u="[object Map]",f="[object Promise]",h="[object Set]",p="[object WeakMap]",d="[object DataView]",m=l(r),v=l(o),g=l(a),b=l(i),y=l(s),_=c;(r&&_(new r(new ArrayBuffer(1)))!=d||o&&_(new o)!=u||a&&_(a.resolve())!=f||i&&_(new i)!=h||s&&_(new s)!=p)&&(_=function(e){var t=c(e),n="[object Object]"==t?e.constructor:void 0,r=n?l(n):"";if(r)switch(r){case m:return d;case v:return u;case g:return f;case b:return h;case y:return p}return t}),e.exports=_},47801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},222:(e,t,n)=>{var r=n(71811),o=n(35694),a=n(1469),i=n(65776),s=n(41780),c=n(40327);e.exports=function(e,t,n){for(var l=-1,u=(t=r(t,e)).length,f=!1;++l<u;){var h=c(t[l]);if(!(f=null!=e&&n(e,h)))break;e=e[h]}return f||++l!=u?f:!!(u=null==e?0:e.length)&&s(u)&&i(h,u)&&(a(e)||o(e))}},62689:e=>{var t=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return t.test(e)}},93157:e=>{var t=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return t.test(e)}},51789:(e,t,n)=>{var r=n(94536);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},80401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},57667:(e,t,n)=>{var r=n(94536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return o.call(t,e)?t[e]:void 0}},21327:(e,t,n)=>{var r=n(94536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:o.call(t,e)}},81866:(e,t,n)=>{var r=n(94536);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},43824:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var n=e.length,r=new e.constructor(n);return n&&"string"==typeof e[0]&&t.call(e,"index")&&(r.index=e.index,r.input=e.input),r}},29148:(e,t,n)=>{var r=n(74318),o=n(57157),a=n(93147),i=n(40419),s=n(77133);e.exports=function(e,t,n){var c=e.constructor;switch(t){case"[object ArrayBuffer]":return r(e);case"[object Boolean]":case"[object Date]":return new c(+e);case"[object DataView]":return o(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return s(e,n);case"[object Map]":case"[object Set]":return new c;case"[object Number]":case"[object String]":return new c(e);case"[object RegExp]":return a(e);case"[object Symbol]":return i(e)}}},38517:(e,t,n)=>{var r=n(3118),o=n(85924),a=n(25726);e.exports=function(e){return"function"!=typeof e.constructor||a(e)?{}:r(o(e))}},37285:(e,t,n)=>{var r=n(62705),o=n(35694),a=n(1469),i=r?r.isConcatSpreadable:void 0;e.exports=function(e){return a(e)||o(e)||!!(i&&e&&e[i])}},65776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e<n}},16612:(e,t,n)=>{var r=n(77813),o=n(98612),a=n(65776),i=n(13218);e.exports=function(e,t,n){if(!i(n))return!1;var s=typeof t;return!!("number"==s?o(n)&&a(t,n.length):"string"==s&&t in n)&&r(n[t],e)}},15403:(e,t,n)=>{var r=n(1469),o=n(33448),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||i.test(e)||!a.test(e)||null!=t&&e in Object(t)}},37019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},15346:(e,t,n)=>{var r,o=n(14429),a=(r=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!a&&a in e}},25726:e=>{var t=Object.prototype;e.exports=function(e){var n=e&&e.constructor;return e===("function"==typeof n&&n.prototype||t)}},89162:(e,t,n)=>{var r=n(13218);e.exports=function(e){return e==e&&!r(e)}},27040:e=>{e.exports=function(){this.__data__=[],this.size=0}},14125:(e,t,n)=>{var r=n(18470),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0||(n==t.length-1?t.pop():o.call(t,n,1),--this.size,0))}},82117:(e,t,n)=>{var r=n(18470);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},67518:(e,t,n)=>{var r=n(18470);e.exports=function(e){return r(this.__data__,e)>-1}},54705:(e,t,n)=>{var r=n(18470);e.exports=function(e,t){var n=this.__data__,o=r(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this}},24785:(e,t,n)=>{var r=n(1989),o=n(38407),a=n(57071);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||o),string:new r}}},11285:(e,t,n)=>{var r=n(45050);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},96e3:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).get(e)}},49916:(e,t,n)=>{var r=n(45050);e.exports=function(e){return r(this,e).has(e)}},95265:(e,t,n)=>{var r=n(45050);e.exports=function(e,t){var n=r(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this}},68776:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},42634:e=>{e.exports=function(e,t){return function(n){return null!=n&&n[e]===t&&(void 0!==t||e in Object(n))}}},24523:(e,t,n)=>{var r=n(88306);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},94536:(e,t,n)=>{var r=n(10852)(Object,"create");e.exports=r},86916:(e,t,n)=>{var r=n(5569)(Object.keys,Object);e.exports=r},33498:e=>{e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},31167:(e,t,n)=>{e=n.nmd(e);var r=n(31957),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,i=a&&a.exports===o&&r.process,s=function(){try{return a&&a.require&&a.require("util").types||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=s},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(n){return e(t(n))}}},45357:(e,t,n)=>{var r=n(96874),o=Math.max;e.exports=function(e,t,n){return t=o(void 0===t?e.length-1:t,0),function(){for(var a=arguments,i=-1,s=o(a.length-t,0),c=Array(s);++i<s;)c[i]=a[t+i];i=-1;for(var l=Array(t+1);++i<t;)l[i]=a[i];return l[t]=n(c),r(e,this,l)}}},40292:(e,t,n)=>{var r=n(97786),o=n(14259);e.exports=function(e,t){return t.length<2?e:r(e,o(t,0,-1))}},55639:(e,t,n)=>{var r=n(31957),o="object"==typeof self&&self&&self.Object===Object&&self,a=r||o||Function("return this")();e.exports=a},36390:e=>{e.exports=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}},90619:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},72385:e=>{e.exports=function(e){return this.__data__.has(e)}},21814:e=>{e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},30061:(e,t,n)=>{var r=n(56560),o=n(21275)(r);e.exports=o},21275:e=>{var t=Date.now;e.exports=function(e){var n=0,r=0;return function(){var o=t(),a=16-(o-r);if(r=o,a>0){if(++n>=800)return arguments[0]}else n=0;return e.apply(void 0,arguments)}}},73480:(e,t,n)=>{var r=n(69877);e.exports=function(e,t){var n=-1,o=e.length,a=o-1;for(t=void 0===t?o:t;++n<t;){var i=r(n,a),s=e[i];e[i]=e[n],e[n]=s}return e.length=t,e}},37465:(e,t,n)=>{var r=n(38407);e.exports=function(){this.__data__=new r,this.size=0}},63779:e=>{e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},67599:e=>{e.exports=function(e){return this.__data__.get(e)}},44758:e=>{e.exports=function(e){return this.__data__.has(e)}},34309:(e,t,n)=>{var r=n(38407),o=n(57071),a=n(83369);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!o||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new a(i)}return n.set(e,t),this.size=n.size,this}},42351:e=>{e.exports=function(e,t,n){for(var r=n-1,o=e.length;++r<o;)if(e[r]===t)return r;return-1}},83140:(e,t,n)=>{var r=n(44286),o=n(62689),a=n(676);e.exports=function(e){return o(e)?a(e):r(e)}},55514:(e,t,n)=>{var r=n(24523),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,i=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(o,(function(e,n,r,o){t.push(r?o.replace(a,"$1"):n||e)})),t}));e.exports=i},40327:(e,t,n)=>{var r=n(33448);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},80346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},67990:e=>{var t=/\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},83729:(e,t,n)=>{var r=n(18674)({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"});e.exports=r},676:e=>{var t="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",n="\\ud83c[\\udffb-\\udfff]",r="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",a="[\\ud800-\\udbff][\\udc00-\\udfff]",i="(?:"+t+"|"+n+")?",s="[\\ufe0e\\ufe0f]?",c=s+i+"(?:\\u200d(?:"+[r,o,a].join("|")+")"+s+i+")*",l="(?:"+[r+t+"?",t,o,a,"[\\ud800-\\udfff]"].join("|")+")",u=RegExp(n+"(?="+n+")|"+l+c,"g");e.exports=function(e){return e.match(u)||[]}},2757:e=>{var t="a-z\\xdf-\\xf6\\xf8-\\xff",n="A-Z\\xc0-\\xd6\\xd8-\\xde",r="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",o="["+r+"]",a="\\d+",i="["+t+"]",s="[^\\ud800-\\udfff"+r+a+"\\u2700-\\u27bf"+t+n+"]",c="(?:\\ud83c[\\udde6-\\uddff]){2}",l="[\\ud800-\\udbff][\\udc00-\\udfff]",u="["+n+"]",f="(?:"+i+"|"+s+")",h="(?:"+u+"|"+s+")",p="(?:['’](?:d|ll|m|re|s|t|ve))?",d="(?:['’](?:D|LL|M|RE|S|T|VE))?",m="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",v="[\\ufe0e\\ufe0f]?",g=v+m+"(?:\\u200d(?:"+["[^\\ud800-\\udfff]",c,l].join("|")+")"+v+m+")*",b="(?:"+["[\\u2700-\\u27bf]",c,l].join("|")+")"+g,y=RegExp([u+"?"+i+"+"+p+"(?="+[o,u,"$"].join("|")+")",h+"+"+d+"(?="+[o,u+f,"$"].join("|")+")",u+"?"+f+"+"+p,u+"+"+d,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",a,b].join("|"),"g");e.exports=function(e){return e.match(y)||[]}},68929:(e,t,n)=>{var r=n(48403),o=n(35393)((function(e,t,n){return t=t.toLowerCase(),e+(n?r(t):t)}));e.exports=o},48403:(e,t,n)=>{var r=n(79833),o=n(11700);e.exports=function(e){return o(r(e).toLowerCase())}},8400:(e,t,n)=>{var r=n(14259),o=n(16612),a=n(40554),i=Math.ceil,s=Math.max;e.exports=function(e,t,n){t=(n?o(e,t,n):void 0===t)?1:s(a(t),0);var c=null==e?0:e.length;if(!c||t<1)return[];for(var l=0,u=0,f=Array(i(c/t));l<c;)f[u++]=r(e,l,l+=t);return f}},74691:(e,t,n)=>{var r=n(29750),o=n(14841);e.exports=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=o(n))==n?n:0),void 0!==t&&(t=(t=o(t))==t?t:0),r(o(e),t,n)}},66678:(e,t,n)=>{var r=n(85990);e.exports=function(e){return r(e,4)}},50361:(e,t,n)=>{var r=n(85990);e.exports=function(e){return r(e,5)}},39693:e=>{e.exports=function(e){for(var t=-1,n=null==e?0:e.length,r=0,o=[];++t<n;){var a=e[t];a&&(o[r++]=a)}return o}},57043:(e,t,n)=>{var r=n(62488),o=n(21078),a=n(278),i=n(1469);e.exports=function(){var e=arguments.length;if(!e)return[];for(var t=Array(e-1),n=arguments[0],s=e;s--;)t[s-1]=arguments[s];return r(i(n)?a(n):[n],o(t,1))}},75703:e=>{e.exports=function(e){return function(){return e}}},23279:(e,t,n)=>{var r=n(13218),o=n(7771),a=n(14841),i=Math.max,s=Math.min;e.exports=function(e,t,n){var c,l,u,f,h,p,d=0,m=!1,v=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var n=c,r=l;return c=l=void 0,d=t,f=e.apply(r,n)}function y(e){return d=e,h=setTimeout(w,t),m?b(e):f}function _(e){var n=e-p;return void 0===p||n>=t||n<0||v&&e-d>=u}function w(){var e=o();if(_(e))return x(e);h=setTimeout(w,function(e){var n=t-(e-p);return v?s(n,u-(e-d)):n}(e))}function x(e){return h=void 0,g&&c?b(e):(c=l=void 0,f)}function k(){var e=o(),n=_(e);if(c=arguments,l=this,p=e,n){if(void 0===h)return y(p);if(v)return clearTimeout(h),h=setTimeout(w,t),b(p)}return void 0===h&&(h=setTimeout(w,t)),f}return t=a(t)||0,r(n)&&(m=!!n.leading,u=(v="maxWait"in n)?i(a(n.maxWait)||0,t):u,g="trailing"in n?!!n.trailing:g),k.cancel=function(){void 0!==h&&clearTimeout(h),d=0,c=p=l=h=void 0},k.flush=function(){return void 0===h?f:x(o())},k}},53816:(e,t,n)=>{var r=n(69389),o=n(79833),a=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,i=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");e.exports=function(e){return(e=o(e))&&e.replace(a,r).replace(i,"")}},29521:(e,t,n)=>{var r=n(20731),o=n(21078),a=n(5976),i=n(29246),s=n(10928),c=a((function(e,t){var n=s(t);return i(n)&&(n=void 0),i(e)?r(e,o(t,1,i,!0),void 0,n):[]}));e.exports=c},66073:(e,t,n)=>{e.exports=n(84486)},77813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},63105:(e,t,n)=>{var r=n(34963),o=n(80760),a=n(67206),i=n(1469);e.exports=function(e,t){return(i(e)?r:o)(e,a(t,3))}},13311:(e,t,n)=>{var r=n(67740)(n(30998));e.exports=r},30998:(e,t,n)=>{var r=n(41848),o=n(67206),a=n(40554),i=Math.max;e.exports=function(e,t,n){var s=null==e?0:e.length;if(!s)return-1;var c=null==n?0:a(n);return c<0&&(c=i(s+c,0)),r(e,o(t,3),c)}},7436:(e,t,n)=>{var r=n(41848),o=n(67206),a=n(40554),i=Math.max,s=Math.min;e.exports=function(e,t,n){var c=null==e?0:e.length;if(!c)return-1;var l=c-1;return void 0!==n&&(l=a(n),l=n<0?i(c+l,0):s(l,c-1)),r(e,o(t,3),l,!0)}},8804:(e,t,n)=>{e.exports=n(91175)},85564:(e,t,n)=>{var r=n(21078);e.exports=function(e){return null!=e&&e.length?r(e,1):[]}},42348:(e,t,n)=>{var r=n(21078);e.exports=function(e){return null!=e&&e.length?r(e,1/0):[]}},84486:(e,t,n)=>{var r=n(77412),o=n(89881),a=n(54290),i=n(1469);e.exports=function(e,t){return(i(e)?r:o)(e,a(t))}},27361:(e,t,n)=>{var r=n(97786);e.exports=function(e,t,n){var o=null==e?void 0:r(e,t);return void 0===o?n:o}},7739:(e,t,n)=>{var r=n(89465),o=n(55189),a=Object.prototype.hasOwnProperty,i=o((function(e,t,n){a.call(e,n)?e[n].push(t):r(e,n,[t])}));e.exports=i},79095:(e,t,n)=>{var r=n(13),o=n(222);e.exports=function(e,t){return null!=e&&o(e,t,r)}},91175:e=>{e.exports=function(e){return e&&e.length?e[0]:void 0}},6557:e=>{e.exports=function(e){return e}},64721:(e,t,n)=>{var r=n(42118),o=n(98612),a=n(47037),i=n(40554),s=n(52628),c=Math.max;e.exports=function(e,t,n,l){e=o(e)?e:s(e),n=n&&!l?i(n):0;var u=e.length;return n<0&&(n=c(u+n,0)),a(e)?n<=u&&e.indexOf(t,n)>-1:!!u&&r(e,t,n)>-1}},35694:(e,t,n)=>{var r=n(9454),o=n(37005),a=Object.prototype,i=a.hasOwnProperty,s=a.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(e){return o(e)&&i.call(e,"callee")&&!s.call(e,"callee")};e.exports=c},1469:e=>{var t=Array.isArray;e.exports=t},98612:(e,t,n)=>{var r=n(23560),o=n(41780);e.exports=function(e){return null!=e&&o(e.length)&&!r(e)}},29246:(e,t,n)=>{var r=n(98612),o=n(37005);e.exports=function(e){return o(e)&&r(e)}},44144:(e,t,n)=>{e=n.nmd(e);var r=n(55639),o=n(95062),a=t&&!t.nodeType&&t,i=a&&e&&!e.nodeType&&e,s=i&&i.exports===a?r.Buffer:void 0,c=(s?s.isBuffer:void 0)||o;e.exports=c},41609:(e,t,n)=>{var r=n(280),o=n(64160),a=n(35694),i=n(1469),s=n(98612),c=n(44144),l=n(25726),u=n(36719),f=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(s(e)&&(i(e)||"string"==typeof e||"function"==typeof e.splice||c(e)||u(e)||a(e)))return!e.length;var t=o(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(l(e))return!r(e).length;for(var n in e)if(f.call(e,n))return!1;return!0}},18446:(e,t,n)=>{var r=n(90939);e.exports=function(e,t){return r(e,t)}},23560:(e,t,n)=>{var r=n(44239),o=n(13218);e.exports=function(e){if(!o(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},41780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},56688:(e,t,n)=>{var r=n(25588),o=n(7518),a=n(31167),i=a&&a.isMap,s=i?o(i):r;e.exports=s},13218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},37005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},68630:(e,t,n)=>{var r=n(44239),o=n(85924),a=n(37005),i=Function.prototype,s=Object.prototype,c=i.toString,l=s.hasOwnProperty,u=c.call(Object);e.exports=function(e){if(!a(e)||"[object Object]"!=r(e))return!1;var t=o(e);if(null===t)return!0;var n=l.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==u}},72928:(e,t,n)=>{var r=n(29221),o=n(7518),a=n(31167),i=a&&a.isSet,s=i?o(i):r;e.exports=s},47037:(e,t,n)=>{var r=n(44239),o=n(1469),a=n(37005);e.exports=function(e){return"string"==typeof e||!o(e)&&a(e)&&"[object String]"==r(e)}},33448:(e,t,n)=>{var r=n(44239),o=n(37005);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},36719:(e,t,n)=>{var r=n(38749),o=n(7518),a=n(31167),i=a&&a.isTypedArray,s=i?o(i):r;e.exports=s},21804:(e,t,n)=>{var r=n(35393)((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()}));e.exports=r},24350:(e,t,n)=>{var r=n(89465),o=n(55189)((function(e,t,n){r(e,n,t)}));e.exports=o},3674:(e,t,n)=>{var r=n(14636),o=n(280),a=n(98612);e.exports=function(e){return a(e)?r(e):o(e)}},81704:(e,t,n)=>{var r=n(14636),o=n(10313),a=n(98612);e.exports=function(e){return a(e)?r(e,!0):o(e)}},10928:e=>{e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},35161:(e,t,n)=>{var r=n(29932),o=n(67206),a=n(69199),i=n(1469);e.exports=function(e,t){return(i(e)?r:a)(e,o(t,3))}},84753:(e,t,n)=>{var r=n(56029),o=n(53325),a=n(67206);e.exports=function(e,t){return e&&e.length?r(e,a(t,2),o):void 0}},88306:(e,t,n)=>{var r=n(83369);function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],a=n.cache;if(a.has(o))return a.get(o);var i=e.apply(this,r);return n.cache=a.set(o,i)||a,i};return n.cache=new(o.Cache||r),n}o.Cache=r,e.exports=o},82492:(e,t,n)=>{var r=n(42980),o=n(21463)((function(e,t,n){r(e,t,n)}));e.exports=o},30236:(e,t,n)=>{var r=n(42980),o=n(21463)((function(e,t,n,o){r(e,t,n,o)}));e.exports=o},22762:(e,t,n)=>{var r=n(56029),o=n(67206),a=n(70433);e.exports=function(e,t){return e&&e.length?r(e,o(t,2),a):void 0}},94885:e=>{e.exports=function(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}},50308:e=>{e.exports=function(){}},7771:(e,t,n)=>{var r=n(55639);e.exports=function(){return r.Date.now()}},14176:(e,t,n)=>{var r=n(67206),o=n(94885),a=n(35937);e.exports=function(e,t){return a(e,o(r(t)))}},75472:(e,t,n)=>{var r=n(82689),o=n(1469);e.exports=function(e,t,n,a){return null==e?[]:(o(t)||(t=null==t?[]:[t]),o(n=a?void 0:n)||(n=null==n?[]:[n]),r(e,t,n))}},35937:(e,t,n)=>{var r=n(29932),o=n(67206),a=n(63012),i=n(46904);e.exports=function(e,t){if(null==e)return{};var n=r(i(e),(function(e){return[e]}));return t=o(t),a(e,n,(function(e,n){return t(e,n[0])}))}},39601:(e,t,n)=>{var r=n(40371),o=n(79152),a=n(15403),i=n(40327);e.exports=function(e){return a(e)?r(i(e)):o(e)}},54061:(e,t,n)=>{var r=n(62663),o=n(89881),a=n(67206),i=n(10107),s=n(1469);e.exports=function(e,t,n){var c=s(e)?r:i,l=arguments.length<3;return c(e,a(t,4),n,l,o)}},43063:(e,t,n)=>{var r=n(34963),o=n(80760),a=n(67206),i=n(1469),s=n(94885);e.exports=function(e,t){return(i(e)?r:o)(e,s(a(t,3)))}},82729:(e,t,n)=>{var r=n(67206),o=n(15742);e.exports=function(e,t){var n=[];if(!e||!e.length)return n;var a=-1,i=[],s=e.length;for(t=r(t,3);++a<s;){var c=e[a];t(c,a,e)&&(n.push(c),i.push(a))}return o(e,i),n}},36968:(e,t,n)=>{var r=n(10611);e.exports=function(e,t,n){return null==e?e:r(e,t,n)}},69983:(e,t,n)=>{var r=n(70151),o=n(25127),a=n(1469);e.exports=function(e){return(a(e)?r:o)(e)}},12571:(e,t,n)=>{var r=n(14259),o=n(16612),a=n(40554);e.exports=function(e,t,n){var i=null==e?0:e.length;return i?(n&&"number"!=typeof n&&o(e,t,n)?(t=0,n=i):(t=null==t?0:a(t),n=void 0===n?i:a(n)),r(e,t,n)):[]}},89734:(e,t,n)=>{var r=n(21078),o=n(82689),a=n(5976),i=n(16612),s=a((function(e,t){if(null==e)return[];var n=t.length;return n>1&&i(e,t[0],t[1])?t=[]:n>2&&i(t[0],t[1],t[2])&&(t=[t[0]]),o(e,r(t,1),[])}));e.exports=s},70479:e=>{e.exports=function(){return[]}},95062:e=>{e.exports=function(){return!1}},73303:(e,t,n)=>{var r=n(67206),o=n(67762);e.exports=function(e,t){return e&&e.length?o(e,r(t,2)):0}},69572:(e,t,n)=>{var r=n(14259),o=n(40554);e.exports=function(e,t,n){return e&&e.length?(t=n||void 0===t?1:o(t),r(e,0,t<0?0:t)):[]}},69579:(e,t,n)=>{var r=n(14259),o=n(40554);e.exports=function(e,t,n){var a=null==e?0:e.length;return a?(t=n||void 0===t?1:o(t),r(e,(t=a-t)<0?0:t,a)):[]}},23493:(e,t,n)=>{var r=n(23279),o=n(13218);e.exports=function(e,t,n){var a=!0,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return o(n)&&(a="leading"in n?!!n.leading:a,i="trailing"in n?!!n.trailing:i),r(e,t,{leading:a,maxWait:t,trailing:i})}},18601:(e,t,n)=>{var r=n(14841);e.exports=function(e){return e?Infinity===(e=r(e))||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},40554:(e,t,n)=>{var r=n(18601);e.exports=function(e){var t=r(e),n=t%1;return t==t?n?t-n:t:0}},14841:(e,t,n)=>{var r=n(27561),o=n(13218),a=n(33448),i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(a(e))return NaN;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=s.test(e);return n||c.test(e)?l(e.slice(2),n?2:8):i.test(e)?NaN:+e}},59881:(e,t,n)=>{var r=n(98363),o=n(81704);e.exports=function(e){return r(e,o(e))}},79833:(e,t,n)=>{var r=n(80531);e.exports=function(e){return null==e?"":r(e)}},92742:(e,t,n)=>{var r=n(80531),o=n(27561),a=n(40180),i=n(5512),s=n(89817),c=n(83140),l=n(79833);e.exports=function(e,t,n){if((e=l(e))&&(n||void 0===t))return o(e);if(!e||!(t=r(t)))return e;var u=c(e),f=c(t),h=s(u,f),p=i(u,f)+1;return a(u,h,p).join("")}},27955:(e,t,n)=>{var r=n(79833),o=n(83729),a=/&(?:amp|lt|gt|quot|#39);/g,i=RegExp(a.source);e.exports=function(e){return(e=r(e))&&i.test(e)?e.replace(a,o):e}},44908:(e,t,n)=>{var r=n(45652);e.exports=function(e){return e&&e.length?r(e):[]}},45578:(e,t,n)=>{var r=n(67206),o=n(45652);e.exports=function(e,t){return e&&e.length?o(e,r(t,2)):[]}},87185:(e,t,n)=>{var r=n(45652);e.exports=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?r(e,void 0,t):[]}},73955:(e,t,n)=>{var r=n(79833),o=0;e.exports=function(e){var t=++o;return r(e)+t}},11700:(e,t,n)=>{var r=n(98805)("toUpperCase");e.exports=r},52628:(e,t,n)=>{var r=n(47415),o=n(3674);e.exports=function(e){return null==e?[]:r(e,o(e))}},58748:(e,t,n)=>{var r=n(49029),o=n(93157),a=n(79833),i=n(2757);e.exports=function(e,t,n){return e=a(e),void 0===(t=n?void 0:t)?o(e)?i(e):r(e):e.match(t)||[]}},28490:(e,t,n)=>{"use strict";var r=n(17673),o=n(8575),a=n(47529);const i=parseInt({NODE_ENV:"production"}.PARSE_LINK_HEADER_MAXLEN)||2e3,s=null!={NODE_ENV:"production"}.PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED;function c(e){return e&&e.rel}function l(e,t){return t.rel.split(/\s+/).forEach((function(n){e[n]=a(t,{rel:n})})),e}function u(e,t){var n=t.match(/\s*(.+)\s*=\s*"?([^"]+)"?/);return n&&(e[n[1]]=n[2]),e}function f(e){try{var t=e.match(/<?([^>]*)>(.*)/),n=t[1],i=t[2].split(";"),s=o.parse(n),c=r.parse(s.query);i.shift();var l=i.reduce(u,{});return(l=a(c,l)).url=n,l}catch(e){return null}}e.exports=function(e){return function(e){if(!e)return!1;if(e.length>i){if(s)throw new Error("Input string too long, it should be under "+i+" characters.");return!1}return!0}(e)?e.split(/,\s*</).map(f).filter(c).reduce(l,{}):null}},61796:(e,t,n)=>{"use strict";n.d(t,{sk:()=>w});var r=e=>"function"==typeof e?e:function(){return e},o="undefined"!=typeof self?self:null,a="undefined"!=typeof window?window:null,i=o||a||i,s="closed",c="errored",l="joined",u="joining",f="leaving",h="phx_close",p="phx_error",d="phx_reply",m="phx_leave",v=class{constructor(e,t,n,r){this.channel=e,this.event=t,this.payload=n||function(){return{}},this.receivedResp=null,this.timeout=r,this.timeoutTimer=null,this.recHooks=[],this.sent=!1}resend(e){this.timeout=e,this.reset(),this.send()}send(){this.hasReceived("timeout")||(this.startTimeout(),this.sent=!0,this.channel.socket.push({topic:this.channel.topic,event:this.event,payload:this.payload(),ref:this.ref,join_ref:this.channel.joinRef()}))}receive(e,t){return this.hasReceived(e)&&t(this.receivedResp.response),this.recHooks.push({status:e,callback:t}),this}reset(){this.cancelRefEvent(),this.ref=null,this.refEvent=null,this.receivedResp=null,this.sent=!1}matchReceive({status:e,response:t,_ref:n}){this.recHooks.filter((t=>t.status===e)).forEach((e=>e.callback(t)))}cancelRefEvent(){this.refEvent&&this.channel.off(this.refEvent)}cancelTimeout(){clearTimeout(this.timeoutTimer),this.timeoutTimer=null}startTimeout(){this.timeoutTimer&&this.cancelTimeout(),this.ref=this.channel.socket.makeRef(),this.refEvent=this.channel.replyEventName(this.ref),this.channel.on(this.refEvent,(e=>{this.cancelRefEvent(),this.cancelTimeout(),this.receivedResp=e,this.matchReceive(e)})),this.timeoutTimer=setTimeout((()=>{this.trigger("timeout",{})}),this.timeout)}hasReceived(e){return this.receivedResp&&this.receivedResp.status===e}trigger(e,t){this.channel.trigger(this.refEvent,{status:e,response:t})}},g=class{constructor(e,t){this.callback=e,this.timerCalc=t,this.timer=null,this.tries=0}reset(){this.tries=0,clearTimeout(this.timer)}scheduleTimeout(){clearTimeout(this.timer),this.timer=setTimeout((()=>{this.tries=this.tries+1,this.callback()}),this.timerCalc(this.tries+1))}},b=class{static request(e,t,n,r,o,a,s){if(i.XDomainRequest){let n=new i.XDomainRequest;return this.xdomainRequest(n,e,t,r,o,a,s)}{let c=new i.XMLHttpRequest;return this.xhrRequest(c,e,t,n,r,o,a,s)}}static xdomainRequest(e,t,n,r,o,a,i){return e.timeout=o,e.open(t,n),e.onload=()=>{let t=this.parseJSON(e.responseText);i&&i(t)},a&&(e.ontimeout=a),e.onprogress=()=>{},e.send(r),e}static xhrRequest(e,t,n,r,o,a,i,s){return e.open(t,n,!0),e.timeout=a,e.setRequestHeader("Content-Type",r),e.onerror=()=>s&&s(null),e.onreadystatechange=()=>{if(4===e.readyState&&s){let t=this.parseJSON(e.responseText);s(t)}},i&&(e.ontimeout=i),e.send(o),e}static parseJSON(e){if(!e||""===e)return null;try{return JSON.parse(e)}catch(t){return console&&console.log("failed to parse JSON response",e),null}}static serialize(e,t){let n=[];for(var r in e){if(!Object.prototype.hasOwnProperty.call(e,r))continue;let o=t?`${t}[${r}]`:r,a=e[r];"object"==typeof a?n.push(this.serialize(a,o)):n.push(encodeURIComponent(o)+"="+encodeURIComponent(a))}return n.join("&")}static appendParams(e,t){if(0===Object.keys(t).length)return e;let n=e.match(/\?/)?"&":"?";return`${e}${n}${this.serialize(t)}`}},y=class{constructor(e){this.endPoint=null,this.token=null,this.skipHeartbeat=!0,this.reqs=new Set,this.awaitingBatchAck=!1,this.currentBatch=null,this.currentBatchTimer=null,this.batchBuffer=[],this.onopen=function(){},this.onerror=function(){},this.onmessage=function(){},this.onclose=function(){},this.pollEndpoint=this.normalizeEndpoint(e),this.readyState=0,this.poll()}normalizeEndpoint(e){return e.replace("ws://","http://").replace("wss://","https://").replace(new RegExp("(.*)/websocket"),"$1/longpoll")}endpointURL(){return b.appendParams(this.pollEndpoint,{token:this.token})}closeAndRetry(e,t,n){this.close(e,t,n),this.readyState=0}ontimeout(){this.onerror("timeout"),this.closeAndRetry(1005,"timeout",!1)}isActive(){return 1===this.readyState||0===this.readyState}poll(){this.ajax("GET","application/json",null,(()=>this.ontimeout()),(e=>{if(e){var{status:t,token:n,messages:r}=e;this.token=n}else t=0;switch(t){case 200:r.forEach((e=>{setTimeout((()=>this.onmessage({data:e})),0)})),this.poll();break;case 204:this.poll();break;case 410:this.readyState=1,this.onopen({}),this.poll();break;case 403:this.onerror(403),this.close(1008,"forbidden",!1);break;case 0:case 500:this.onerror(500),this.closeAndRetry(1011,"internal server error",500);break;default:throw new Error(`unhandled poll status ${t}`)}}))}send(e){"string"!=typeof e&&(e=(e=>{let t="",n=new Uint8Array(e),r=n.byteLength;for(let e=0;e<r;e++)t+=String.fromCharCode(n[e]);return btoa(t)})(e)),this.currentBatch?this.currentBatch.push(e):this.awaitingBatchAck?this.batchBuffer.push(e):(this.currentBatch=[e],this.currentBatchTimer=setTimeout((()=>{this.batchSend(this.currentBatch),this.currentBatch=null}),0))}batchSend(e){this.awaitingBatchAck=!0,this.ajax("POST","application/x-ndjson",e.join("\n"),(()=>this.onerror("timeout")),(e=>{this.awaitingBatchAck=!1,e&&200===e.status?this.batchBuffer.length>0&&(this.batchSend(this.batchBuffer),this.batchBuffer=[]):(this.onerror(e&&e.status),this.closeAndRetry(1011,"internal server error",!1))}))}close(e,t,n){for(let e of this.reqs)e.abort();this.readyState=3;let r=Object.assign({code:1e3,reason:void 0,wasClean:!0},{code:e,reason:t,wasClean:n});this.batchBuffer=[],clearTimeout(this.currentBatchTimer),this.currentBatchTimer=null,"undefined"!=typeof CloseEvent?this.onclose(new CloseEvent("close",r)):this.onclose(r)}ajax(e,t,n,r,o){let a;a=b.request(e,this.endpointURL(),t,n,this.timeout,(()=>{this.reqs.delete(a),r()}),(e=>{this.reqs.delete(a),this.isActive()&&o(e)})),this.reqs.add(a)}},_={HEADER_LENGTH:1,META_LENGTH:4,KINDS:{push:0,reply:1,broadcast:2},encode(e,t){if(e.payload.constructor===ArrayBuffer)return t(this.binaryEncode(e));{let n=[e.join_ref,e.ref,e.topic,e.event,e.payload];return t(JSON.stringify(n))}},decode(e,t){if(e.constructor===ArrayBuffer)return t(this.binaryDecode(e));{let[n,r,o,a,i]=JSON.parse(e);return t({join_ref:n,ref:r,topic:o,event:a,payload:i})}},binaryEncode(e){let{join_ref:t,ref:n,event:r,topic:o,payload:a}=e,i=this.META_LENGTH+t.length+n.length+o.length+r.length,s=new ArrayBuffer(this.HEADER_LENGTH+i),c=new DataView(s),l=0;c.setUint8(l++,this.KINDS.push),c.setUint8(l++,t.length),c.setUint8(l++,n.length),c.setUint8(l++,o.length),c.setUint8(l++,r.length),Array.from(t,(e=>c.setUint8(l++,e.charCodeAt(0)))),Array.from(n,(e=>c.setUint8(l++,e.charCodeAt(0)))),Array.from(o,(e=>c.setUint8(l++,e.charCodeAt(0)))),Array.from(r,(e=>c.setUint8(l++,e.charCodeAt(0))));var u=new Uint8Array(s.byteLength+a.byteLength);return u.set(new Uint8Array(s),0),u.set(new Uint8Array(a),s.byteLength),u.buffer},binaryDecode(e){let t=new DataView(e),n=t.getUint8(0),r=new TextDecoder;switch(n){case this.KINDS.push:return this.decodePush(e,t,r);case this.KINDS.reply:return this.decodeReply(e,t,r);case this.KINDS.broadcast:return this.decodeBroadcast(e,t,r)}},decodePush(e,t,n){let r=t.getUint8(1),o=t.getUint8(2),a=t.getUint8(3),i=this.HEADER_LENGTH+this.META_LENGTH-1,s=n.decode(e.slice(i,i+r));i+=r;let c=n.decode(e.slice(i,i+o));i+=o;let l=n.decode(e.slice(i,i+a));return i+=a,{join_ref:s,ref:null,topic:c,event:l,payload:e.slice(i,e.byteLength)}},decodeReply(e,t,n){let r=t.getUint8(1),o=t.getUint8(2),a=t.getUint8(3),i=t.getUint8(4),s=this.HEADER_LENGTH+this.META_LENGTH,c=n.decode(e.slice(s,s+r));s+=r;let l=n.decode(e.slice(s,s+o));s+=o;let u=n.decode(e.slice(s,s+a));s+=a;let f=n.decode(e.slice(s,s+i));s+=i;let h=e.slice(s,e.byteLength);return{join_ref:c,ref:l,topic:u,event:d,payload:{status:f,response:h}}},decodeBroadcast(e,t,n){let r=t.getUint8(1),o=t.getUint8(2),a=this.HEADER_LENGTH+2,i=n.decode(e.slice(a,a+r));a+=r;let s=n.decode(e.slice(a,a+o));return a+=o,{join_ref:null,ref:null,topic:i,event:s,payload:e.slice(a,e.byteLength)}}},w=class{constructor(e,t={}){this.stateChangeCallbacks={open:[],close:[],error:[],message:[]},this.channels=[],this.sendBuffer=[],this.ref=0,this.timeout=t.timeout||1e4,this.transport=t.transport||i.WebSocket||y,this.establishedConnections=0,this.defaultEncoder=_.encode.bind(_),this.defaultDecoder=_.decode.bind(_),this.closeWasClean=!1,this.binaryType=t.binaryType||"arraybuffer",this.connectClock=1,this.transport!==y?(this.encode=t.encode||this.defaultEncoder,this.decode=t.decode||this.defaultDecoder):(this.encode=this.defaultEncoder,this.decode=this.defaultDecoder);let n=null;a&&a.addEventListener&&(a.addEventListener("pagehide",(e=>{this.conn&&(this.disconnect(),n=this.connectClock)})),a.addEventListener("pageshow",(e=>{n===this.connectClock&&(n=null,this.connect())}))),this.heartbeatIntervalMs=t.heartbeatIntervalMs||3e4,this.rejoinAfterMs=e=>t.rejoinAfterMs?t.rejoinAfterMs(e):[1e3,2e3,5e3][e-1]||1e4,this.reconnectAfterMs=e=>t.reconnectAfterMs?t.reconnectAfterMs(e):[10,50,100,150,200,250,500,1e3,2e3][e-1]||5e3,this.logger=t.logger||null,this.longpollerTimeout=t.longpollerTimeout||2e4,this.params=r(t.params||{}),this.endPoint=`${e}/websocket`,this.vsn=t.vsn||"2.0.0",this.heartbeatTimeoutTimer=null,this.heartbeatTimer=null,this.pendingHeartbeatRef=null,this.reconnectTimer=new g((()=>{this.teardown((()=>this.connect()))}),this.reconnectAfterMs)}getLongPollTransport(){return y}replaceTransport(e){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.sendBuffer=[],this.conn&&(this.conn.close(),this.conn=null),this.transport=e}protocol(){return location.protocol.match(/^https/)?"wss":"ws"}endPointURL(){let e=b.appendParams(b.appendParams(this.endPoint,this.params()),{vsn:this.vsn});return"/"!==e.charAt(0)?e:"/"===e.charAt(1)?`${this.protocol()}:${e}`:`${this.protocol()}://${location.host}${e}`}disconnect(e,t,n){this.connectClock++,this.closeWasClean=!0,this.reconnectTimer.reset(),this.teardown(e,t,n)}connect(e){e&&(console&&console.log("passing params to connect is deprecated. Instead pass :params to the Socket constructor"),this.params=r(e)),this.conn||(this.connectClock++,this.closeWasClean=!1,this.conn=new this.transport(this.endPointURL()),this.conn.binaryType=this.binaryType,this.conn.timeout=this.longpollerTimeout,this.conn.onopen=()=>this.onConnOpen(),this.conn.onerror=e=>this.onConnError(e),this.conn.onmessage=e=>this.onConnMessage(e),this.conn.onclose=e=>this.onConnClose(e))}log(e,t,n){this.logger(e,t,n)}hasLogger(){return null!==this.logger}onOpen(e){let t=this.makeRef();return this.stateChangeCallbacks.open.push([t,e]),t}onClose(e){let t=this.makeRef();return this.stateChangeCallbacks.close.push([t,e]),t}onError(e){let t=this.makeRef();return this.stateChangeCallbacks.error.push([t,e]),t}onMessage(e){let t=this.makeRef();return this.stateChangeCallbacks.message.push([t,e]),t}ping(e){if(!this.isConnected())return!1;let t=this.makeRef(),n=Date.now();this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:t});let r=this.onMessage((o=>{o.ref===t&&(this.off([r]),e(Date.now()-n))}));return!0}clearHeartbeats(){clearTimeout(this.heartbeatTimer),clearTimeout(this.heartbeatTimeoutTimer)}onConnOpen(){this.hasLogger()&&this.log("transport",`connected to ${this.endPointURL()}`),this.closeWasClean=!1,this.establishedConnections++,this.flushSendBuffer(),this.reconnectTimer.reset(),this.resetHeartbeat(),this.stateChangeCallbacks.open.forEach((([,e])=>e()))}heartbeatTimeout(){this.pendingHeartbeatRef&&(this.pendingHeartbeatRef=null,this.hasLogger()&&this.log("transport","heartbeat timeout. Attempting to re-establish connection"),this.triggerChanError(),this.closeWasClean=!1,this.teardown((()=>this.reconnectTimer.scheduleTimeout()),1e3,"heartbeat timeout"))}resetHeartbeat(){this.conn&&this.conn.skipHeartbeat||(this.pendingHeartbeatRef=null,this.clearHeartbeats(),this.heartbeatTimer=setTimeout((()=>this.sendHeartbeat()),this.heartbeatIntervalMs))}teardown(e,t,n){if(!this.conn)return e&&e();this.waitForBufferDone((()=>{this.conn&&(t?this.conn.close(t,n||""):this.conn.close()),this.waitForSocketClosed((()=>{this.conn&&(this.conn.onopen=function(){},this.conn.onerror=function(){},this.conn.onmessage=function(){},this.conn.onclose=function(){},this.conn=null),e&&e()}))}))}waitForBufferDone(e,t=1){5!==t&&this.conn&&this.conn.bufferedAmount?setTimeout((()=>{this.waitForBufferDone(e,t+1)}),150*t):e()}waitForSocketClosed(e,t=1){5!==t&&this.conn&&3!==this.conn.readyState?setTimeout((()=>{this.waitForSocketClosed(e,t+1)}),150*t):e()}onConnClose(e){let t=e&&e.code;this.hasLogger()&&this.log("transport","close",e),this.triggerChanError(),this.clearHeartbeats(),this.closeWasClean||1e3===t||this.reconnectTimer.scheduleTimeout(),this.stateChangeCallbacks.close.forEach((([,t])=>t(e)))}onConnError(e){this.hasLogger()&&this.log("transport",e);let t=this.transport,n=this.establishedConnections;this.stateChangeCallbacks.error.forEach((([,r])=>{r(e,t,n)})),(t===this.transport||n>0)&&this.triggerChanError()}triggerChanError(){this.channels.forEach((e=>{e.isErrored()||e.isLeaving()||e.isClosed()||e.trigger(p)}))}connectionState(){switch(this.conn&&this.conn.readyState){case 0:return"connecting";case 1:return"open";case 2:return"closing";default:return"closed"}}isConnected(){return"open"===this.connectionState()}remove(e){this.off(e.stateChangeRefs),this.channels=this.channels.filter((t=>t.joinRef()!==e.joinRef()))}off(e){for(let t in this.stateChangeCallbacks)this.stateChangeCallbacks[t]=this.stateChangeCallbacks[t].filter((([t])=>-1===e.indexOf(t)))}channel(e,t={}){let n=new class{constructor(e,t,n){this.state=s,this.topic=e,this.params=r(t||{}),this.socket=n,this.bindings=[],this.bindingRef=0,this.timeout=this.socket.timeout,this.joinedOnce=!1,this.joinPush=new v(this,"phx_join",this.params,this.timeout),this.pushBuffer=[],this.stateChangeRefs=[],this.rejoinTimer=new g((()=>{this.socket.isConnected()&&this.rejoin()}),this.socket.rejoinAfterMs),this.stateChangeRefs.push(this.socket.onError((()=>this.rejoinTimer.reset()))),this.stateChangeRefs.push(this.socket.onOpen((()=>{this.rejoinTimer.reset(),this.isErrored()&&this.rejoin()}))),this.joinPush.receive("ok",(()=>{this.state=l,this.rejoinTimer.reset(),this.pushBuffer.forEach((e=>e.send())),this.pushBuffer=[]})),this.joinPush.receive("error",(()=>{this.state=c,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()})),this.onClose((()=>{this.rejoinTimer.reset(),this.socket.hasLogger()&&this.socket.log("channel",`close ${this.topic} ${this.joinRef()}`),this.state=s,this.socket.remove(this)})),this.onError((e=>{this.socket.hasLogger()&&this.socket.log("channel",`error ${this.topic}`,e),this.isJoining()&&this.joinPush.reset(),this.state=c,this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()})),this.joinPush.receive("timeout",(()=>{this.socket.hasLogger()&&this.socket.log("channel",`timeout ${this.topic} (${this.joinRef()})`,this.joinPush.timeout),new v(this,m,r({}),this.timeout).send(),this.state=c,this.joinPush.reset(),this.socket.isConnected()&&this.rejoinTimer.scheduleTimeout()})),this.on(d,((e,t)=>{this.trigger(this.replyEventName(t),e)}))}join(e=this.timeout){if(this.joinedOnce)throw new Error("tried to join multiple times. 'join' can only be called a single time per channel instance");return this.timeout=e,this.joinedOnce=!0,this.rejoin(),this.joinPush}onClose(e){this.on(h,e)}onError(e){return this.on(p,(t=>e(t)))}on(e,t){let n=this.bindingRef++;return this.bindings.push({event:e,ref:n,callback:t}),n}off(e,t){this.bindings=this.bindings.filter((n=>!(n.event===e&&(void 0===t||t===n.ref))))}canPush(){return this.socket.isConnected()&&this.isJoined()}push(e,t,n=this.timeout){if(t=t||{},!this.joinedOnce)throw new Error(`tried to push '${e}' to '${this.topic}' before joining. Use channel.join() before pushing events`);let r=new v(this,e,(function(){return t}),n);return this.canPush()?r.send():(r.startTimeout(),this.pushBuffer.push(r)),r}leave(e=this.timeout){this.rejoinTimer.reset(),this.joinPush.cancelTimeout(),this.state=f;let t=()=>{this.socket.hasLogger()&&this.socket.log("channel",`leave ${this.topic}`),this.trigger(h,"leave")},n=new v(this,m,r({}),e);return n.receive("ok",(()=>t())).receive("timeout",(()=>t())),n.send(),this.canPush()||n.trigger("ok",{}),n}onMessage(e,t,n){return t}isMember(e,t,n,r){return!(this.topic!==e||r&&r!==this.joinRef()&&(this.socket.hasLogger()&&this.socket.log("channel","dropping outdated message",{topic:e,event:t,payload:n,joinRef:r}),1))}joinRef(){return this.joinPush.ref}rejoin(e=this.timeout){this.isLeaving()||(this.socket.leaveOpenTopic(this.topic),this.state=u,this.joinPush.resend(e))}trigger(e,t,n,r){let o=this.onMessage(e,t,n,r);if(t&&!o)throw new Error("channel onMessage callbacks must return the payload, modified or unmodified");let a=this.bindings.filter((t=>t.event===e));for(let e=0;e<a.length;e++)a[e].callback(o,n,r||this.joinRef())}replyEventName(e){return`chan_reply_${e}`}isClosed(){return this.state===s}isErrored(){return this.state===c}isJoined(){return this.state===l}isJoining(){return this.state===u}isLeaving(){return this.state===f}}(e,t,this);return this.channels.push(n),n}push(e){if(this.hasLogger()){let{topic:t,event:n,payload:r,ref:o,join_ref:a}=e;this.log("push",`${t} ${n} (${a}, ${o})`,r)}this.isConnected()?this.encode(e,(e=>this.conn.send(e))):this.sendBuffer.push((()=>this.encode(e,(e=>this.conn.send(e)))))}makeRef(){let e=this.ref+1;return e===this.ref?this.ref=0:this.ref=e,this.ref.toString()}sendHeartbeat(){this.pendingHeartbeatRef&&!this.isConnected()||(this.pendingHeartbeatRef=this.makeRef(),this.push({topic:"phoenix",event:"heartbeat",payload:{},ref:this.pendingHeartbeatRef}),this.heartbeatTimeoutTimer=setTimeout((()=>this.heartbeatTimeout()),this.heartbeatIntervalMs))}flushSendBuffer(){this.isConnected()&&this.sendBuffer.length>0&&(this.sendBuffer.forEach((e=>e())),this.sendBuffer=[])}onConnMessage(e){this.decode(e.data,(e=>{let{topic:t,event:n,payload:r,ref:o,join_ref:a}=e;o&&o===this.pendingHeartbeatRef&&(this.clearHeartbeats(),this.pendingHeartbeatRef=null,this.heartbeatTimer=setTimeout((()=>this.sendHeartbeat()),this.heartbeatIntervalMs)),this.hasLogger()&&this.log("receive",`${r.status||""} ${t} ${n} ${o&&"("+o+")"||""}`,r);for(let e=0;e<this.channels.length;e++){const i=this.channels[e];i.isMember(t,n,r,a)&&i.trigger(n,r,o,a)}for(let t=0;t<this.stateChangeCallbacks.message.length;t++){let[,n]=this.stateChangeCallbacks.message[t];n(e)}}))}leaveOpenTopic(e){let t=this.channels.find((t=>t.topic===e&&(t.isJoined()||t.isJoining())));t&&(this.hasLogger()&&this.log("transport",`leaving duplicate topic "${e}"`),t.leave())}}},35748:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>b});const r=2147483647,o=36,a=/^xn--/,i=/[^\0-\x7F]/,s=/[\x2E\u3002\uFF0E\uFF61]/g,c={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},l=Math.floor,u=String.fromCharCode;function f(e){throw new RangeError(c[e])}function h(e,t){const n=e.split("@");let r="";n.length>1&&(r=n[0]+"@",e=n[1]);const o=function(e,t){const n=[];let r=e.length;for(;r--;)n[r]=t(e[r]);return n}((e=e.replace(s,".")).split("."),t).join(".");return r+o}function p(e){const t=[];let n=0;const r=e.length;for(;n<r;){const o=e.charCodeAt(n++);if(o>=55296&&o<=56319&&n<r){const r=e.charCodeAt(n++);56320==(64512&r)?t.push(((1023&o)<<10)+(1023&r)+65536):(t.push(o),n--)}else t.push(o)}return t}const d=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},m=function(e,t,n){let r=0;for(e=n?l(e/700):e>>1,e+=l(e/t);e>455;r+=o)e=l(e/35);return l(r+36*e/(e+38))},v=function(e){const t=[],n=e.length;let a=0,i=128,s=72,c=e.lastIndexOf("-");c<0&&(c=0);for(let n=0;n<c;++n)e.charCodeAt(n)>=128&&f("not-basic"),t.push(e.charCodeAt(n));for(let h=c>0?c+1:0;h<n;){const c=a;for(let t=1,i=o;;i+=o){h>=n&&f("invalid-input");const c=(u=e.charCodeAt(h++))>=48&&u<58?u-48+26:u>=65&&u<91?u-65:u>=97&&u<123?u-97:o;c>=o&&f("invalid-input"),c>l((r-a)/t)&&f("overflow"),a+=c*t;const p=i<=s?1:i>=s+26?26:i-s;if(c<p)break;const d=o-p;t>l(r/d)&&f("overflow"),t*=d}const p=t.length+1;s=m(a-c,p,0==c),l(a/p)>r-i&&f("overflow"),i+=l(a/p),a%=p,t.splice(a++,0,i)}var u;return String.fromCodePoint(...t)},g=function(e){const t=[],n=(e=p(e)).length;let a=128,i=0,s=72;for(const n of e)n<128&&t.push(u(n));const c=t.length;let h=c;for(c&&t.push("-");h<n;){let n=r;for(const t of e)t>=a&&t<n&&(n=t);const p=h+1;n-a>l((r-i)/p)&&f("overflow"),i+=(n-a)*p,a=n;for(const n of e)if(n<a&&++i>r&&f("overflow"),n===a){let e=i;for(let n=o;;n+=o){const r=n<=s?1:n>=s+26?26:n-s;if(e<r)break;const a=e-r,i=o-r;t.push(u(d(r+a%i,0))),e=l(a/i)}t.push(u(d(e,0))),s=m(i,p,h===c),i=0,++h}++i,++a}return t.join("")},b={version:"2.1.0",ucs2:{decode:p,encode:e=>String.fromCodePoint(...e)},decode:v,encode:g,toASCII:function(e){return h(e,(function(e){return i.test(e)?"xn--"+g(e):e}))},toUnicode:function(e){return h(e,(function(e){return a.test(e)?v(e.slice(4).toLowerCase()):e}))}}},3689:(e,t,n)=>{"use strict";n.r(t),n.d(t,{decode:()=>g,default:()=>w,encode:()=>b,toASCII:()=>_,toUnicode:()=>y,ucs2decode:()=>p,ucs2encode:()=>d});const r=2147483647,o=36,a=/^xn--/,i=/[^\0-\x7E]/,s=/[\x2E\u3002\uFF0E\uFF61]/g,c={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},l=Math.floor,u=String.fromCharCode;function f(e){throw new RangeError(c[e])}function h(e,t){const n=e.split("@");let r="";n.length>1&&(r=n[0]+"@",e=n[1]);const o=function(e,t){const n=[];let r=e.length;for(;r--;)n[r]=t(e[r]);return n}((e=e.replace(s,".")).split("."),t).join(".");return r+o}function p(e){const t=[];let n=0;const r=e.length;for(;n<r;){const o=e.charCodeAt(n++);if(o>=55296&&o<=56319&&n<r){const r=e.charCodeAt(n++);56320==(64512&r)?t.push(((1023&o)<<10)+(1023&r)+65536):(t.push(o),n--)}else t.push(o)}return t}const d=e=>String.fromCodePoint(...e),m=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},v=function(e,t,n){let r=0;for(e=n?l(e/700):e>>1,e+=l(e/t);e>455;r+=o)e=l(e/35);return l(r+36*e/(e+38))},g=function(e){const t=[],n=e.length;let a=0,i=128,s=72,c=e.lastIndexOf("-");c<0&&(c=0);for(let n=0;n<c;++n)e.charCodeAt(n)>=128&&f("not-basic"),t.push(e.charCodeAt(n));for(let h=c>0?c+1:0;h<n;){let c=a;for(let t=1,i=o;;i+=o){h>=n&&f("invalid-input");const c=(u=e.charCodeAt(h++))-48<10?u-22:u-65<26?u-65:u-97<26?u-97:o;(c>=o||c>l((r-a)/t))&&f("overflow"),a+=c*t;const p=i<=s?1:i>=s+26?26:i-s;if(c<p)break;const d=o-p;t>l(r/d)&&f("overflow"),t*=d}const p=t.length+1;s=v(a-c,p,0==c),l(a/p)>r-i&&f("overflow"),i+=l(a/p),a%=p,t.splice(a++,0,i)}var u;return String.fromCodePoint(...t)},b=function(e){const t=[];let n=(e=p(e)).length,a=128,i=0,s=72;for(const n of e)n<128&&t.push(u(n));let c=t.length,h=c;for(c&&t.push("-");h<n;){let n=r;for(const t of e)t>=a&&t<n&&(n=t);const p=h+1;n-a>l((r-i)/p)&&f("overflow"),i+=(n-a)*p,a=n;for(const n of e)if(n<a&&++i>r&&f("overflow"),n==a){let e=i;for(let n=o;;n+=o){const r=n<=s?1:n>=s+26?26:n-s;if(e<r)break;const a=e-r,i=o-r;t.push(u(m(r+a%i,0))),e=l(a/i)}t.push(u(m(e,0))),s=v(i,p,h==c),i=0,++h}++i,++a}return t.join("")},y=function(e){return h(e,(function(e){return a.test(e)?g(e.slice(4).toLowerCase()):e}))},_=function(e){return h(e,(function(e){return i.test(e)?"xn--"+b(e):e}))},w={version:"2.1.0",ucs2:{decode:p,encode:d},decode:g,encode:b,toASCII:_,toUnicode:y}},62587:e=>{"use strict";function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,n,r,o){n=n||"&",r=r||"=";var a={};if("string"!=typeof e||0===e.length)return a;var i=/\+/g;e=e.split(n);var s=1e3;o&&"number"==typeof o.maxKeys&&(s=o.maxKeys);var c=e.length;s>0&&c>s&&(c=s);for(var l=0;l<c;++l){var u,f,h,p,d=e[l].replace(i,"%20"),m=d.indexOf(r);m>=0?(u=d.substr(0,m),f=d.substr(m+1)):(u=d,f=""),h=decodeURIComponent(u),p=decodeURIComponent(f),t(a,h)?Array.isArray(a[h])?a[h].push(p):a[h]=[a[h],p]:a[h]=p}return a}},12361:e=>{"use strict";var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,n,r,o){return n=n||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(o){var a=encodeURIComponent(t(o))+r;return Array.isArray(e[o])?e[o].map((function(e){return a+encodeURIComponent(t(e))})).join(n):a+encodeURIComponent(t(e[o]))})).join(n):o?encodeURIComponent(t(o))+r+encodeURIComponent(t(e)):""}},17673:(e,t,n)=>{"use strict";t.decode=t.parse=n(62587),t.encode=t.stringify=n(12361)},56012:(e,t)=>{var n="/sw-pleroma.js";Object.defineProperty(t,"__esModule",{value:!0}),t.default={register:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return!!navigator.serviceWorker&&navigator.serviceWorker.register(n,e)}},e.exports=t.default},8575:(e,t,n)=>{"use strict";var r=n(3689),o=n(62502);function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=y,t.resolve=function(e,t){return y(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?y(e,!1,!0).resolveObject(t):t},t.format=function(e){return o.isString(e)&&(e=y(e)),e instanceof a?e.format():a.prototype.format.call(e)},t.Url=a;var i=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),u=["'"].concat(l),f=["%","/","?",";","#"].concat(u),h=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},v={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},b=n(17673);function y(e,t,n){if(e&&o.isObject(e)&&e instanceof a)return e;var r=new a;return r.parse(e,t,n),r}a.prototype.parse=function(e,t,n){if(!o.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=-1!==a&&a<e.indexOf("#")?"?":"#",l=e.split(s);l[0]=l[0].replace(/\\/g,"/");var y=e=l.join(s);if(y=y.trim(),!n&&1===e.split("#").length){var _=c.exec(y);if(_)return this.path=y,this.href=y,this.pathname=_[1],_[2]?(this.search=_[2],this.query=t?b.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var w=i.exec(y);if(w){var x=(w=w[0]).toLowerCase();this.protocol=x,y=y.substr(w.length)}if(n||w||y.match(/^\/\/[^@\/]+@[^@\/]+/)){var k="//"===y.substr(0,2);!k||w&&v[w]||(y=y.substr(2),this.slashes=!0)}if(!v[w]&&(k||w&&!g[w])){for(var S,E,O=-1,C=0;C<h.length;C++)-1!==(N=y.indexOf(h[C]))&&(-1===O||N<O)&&(O=N);for(-1!==(E=-1===O?y.lastIndexOf("@"):y.lastIndexOf("@",O))&&(S=y.slice(0,E),y=y.slice(E+1),this.auth=decodeURIComponent(S)),O=-1,C=0;C<f.length;C++){var N;-1!==(N=y.indexOf(f[C]))&&(-1===O||N<O)&&(O=N)}-1===O&&(O=y.length),this.host=y.slice(0,O),y=y.slice(O),this.parseHost(),this.hostname=this.hostname||"";var j="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!j)for(var A=this.hostname.split(/\./),L=(C=0,A.length);C<L;C++){var M=A[C];if(M&&!M.match(p)){for(var I="",z=0,T=M.length;z<T;z++)M.charCodeAt(z)>127?I+="x":I+=M[z];if(!I.match(p)){var R=A.slice(0,C),$=A.slice(C+1),P=M.match(d);P&&(R.push(P[1]),$.unshift(P[2])),$.length&&(y="/"+$.join(".")+y),this.hostname=R.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),j||(this.hostname=r.toASCII(this.hostname));var F=this.port?":"+this.port:"",H=this.hostname||"";this.host=H+F,this.href+=this.host,j&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==y[0]&&(y="/"+y))}if(!m[x])for(C=0,L=u.length;C<L;C++){var D=u[C];if(-1!==y.indexOf(D)){var V=encodeURIComponent(D);V===D&&(V=escape(D)),y=y.split(D).join(V)}}var U=y.indexOf("#");-1!==U&&(this.hash=y.substr(U),y=y.slice(0,U));var B=y.indexOf("?");if(-1!==B?(this.search=y.substr(B),this.query=y.substr(B+1),t&&(this.query=b.parse(this.query)),y=y.slice(0,B)):t&&(this.search="",this.query={}),y&&(this.pathname=y),g[x]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){F=this.pathname||"";var W=this.search||"";this.path=F+W}return this.href=this.format(),this},a.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",n=this.pathname||"",r=this.hash||"",a=!1,i="";this.host?a=e+this.host:this.hostname&&(a=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(a+=":"+this.port)),this.query&&o.isObject(this.query)&&Object.keys(this.query).length&&(i=b.stringify(this.query));var s=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||g[t])&&!1!==a?(a="//"+(a||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):a||(a=""),r&&"#"!==r.charAt(0)&&(r="#"+r),s&&"?"!==s.charAt(0)&&(s="?"+s),t+a+(n=n.replace(/[?#]/g,(function(e){return encodeURIComponent(e)})))+(s=s.replace("#","%23"))+r},a.prototype.resolve=function(e){return this.resolveObject(y(e,!1,!0)).format()},a.prototype.resolveObject=function(e){if(o.isString(e)){var t=new a;t.parse(e,!1,!0),e=t}for(var n=new a,r=Object.keys(this),i=0;i<r.length;i++){var s=r[i];n[s]=this[s]}if(n.hash=e.hash,""===e.href)return n.href=n.format(),n;if(e.slashes&&!e.protocol){for(var c=Object.keys(e),l=0;l<c.length;l++){var u=c[l];"protocol"!==u&&(n[u]=e[u])}return g[n.protocol]&&n.hostname&&!n.pathname&&(n.path=n.pathname="/"),n.href=n.format(),n}if(e.protocol&&e.protocol!==n.protocol){if(!g[e.protocol]){for(var f=Object.keys(e),h=0;h<f.length;h++){var p=f[h];n[p]=e[p]}return n.href=n.format(),n}if(n.protocol=e.protocol,e.host||v[e.protocol])n.pathname=e.pathname;else{for(var d=(e.pathname||"").split("/");d.length&&!(e.host=d.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==d[0]&&d.unshift(""),d.length<2&&d.unshift(""),n.pathname=d.join("/")}if(n.search=e.search,n.query=e.query,n.host=e.host||"",n.auth=e.auth,n.hostname=e.hostname||e.host,n.port=e.port,n.pathname||n.search){var m=n.pathname||"",b=n.search||"";n.path=m+b}return n.slashes=n.slashes||e.slashes,n.href=n.format(),n}var y=n.pathname&&"/"===n.pathname.charAt(0),_=e.host||e.pathname&&"/"===e.pathname.charAt(0),w=_||y||n.host&&e.pathname,x=w,k=n.pathname&&n.pathname.split("/")||[],S=(d=e.pathname&&e.pathname.split("/")||[],n.protocol&&!g[n.protocol]);if(S&&(n.hostname="",n.port=null,n.host&&(""===k[0]?k[0]=n.host:k.unshift(n.host)),n.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===d[0]?d[0]=e.host:d.unshift(e.host)),e.host=null),w=w&&(""===d[0]||""===k[0])),_)n.host=e.host||""===e.host?e.host:n.host,n.hostname=e.hostname||""===e.hostname?e.hostname:n.hostname,n.search=e.search,n.query=e.query,k=d;else if(d.length)k||(k=[]),k.pop(),k=k.concat(d),n.search=e.search,n.query=e.query;else if(!o.isNullOrUndefined(e.search))return S&&(n.hostname=n.host=k.shift(),(j=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=j.shift(),n.host=n.hostname=j.shift())),n.search=e.search,n.query=e.query,o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!k.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var E=k.slice(-1)[0],O=(n.host||e.host||k.length>1)&&("."===E||".."===E)||""===E,C=0,N=k.length;N>=0;N--)"."===(E=k[N])?k.splice(N,1):".."===E?(k.splice(N,1),C++):C&&(k.splice(N,1),C--);if(!w&&!x)for(;C--;C)k.unshift("..");!w||""===k[0]||k[0]&&"/"===k[0].charAt(0)||k.unshift(""),O&&"/"!==k.join("/").substr(-1)&&k.push("");var j,A=""===k[0]||k[0]&&"/"===k[0].charAt(0);return S&&(n.hostname=n.host=A?"":k.length?k.shift():"",(j=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=j.shift(),n.host=n.hostname=j.shift())),(w=w||n.host&&k.length)&&!A&&k.unshift(""),k.length?n.pathname=k.join("/"):(n.pathname=null,n.path=null),o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},a.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},62502:e=>{"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},90308:(e,t,n)=>{"use strict";n.d(t,{o:()=>et});const r="undefined"!=typeof window,o="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,a=e=>o?Symbol(e):e,i=e=>"number"==typeof e&&isFinite(e),s=e=>"[object RegExp]"===x(e),c=e=>k(e)&&0===Object.keys(e).length;function l(e,t){"undefined"!=typeof console&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const u=Object.assign;let f;const h=()=>f||(f="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:{});function p(e){return e.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}const d=Object.prototype.hasOwnProperty;function m(e,t){return d.call(e,t)}const v=Array.isArray,g=e=>"function"==typeof e,b=e=>"string"==typeof e,y=e=>"boolean"==typeof e,_=e=>null!==e&&"object"==typeof e,w=Object.prototype.toString,x=e=>w.call(e),k=e=>"[object Object]"===x(e);function S(e,t,n={}){const{domain:r,messages:o,args:a}=n,i=new SyntaxError(String(e));return i.code=e,t&&(i.location=t),i.domain=r,i}String.fromCharCode(8232),String.fromCharCode(8233);const E=[];E[0]={w:[0],i:[3,0],"[":[4],o:[7]},E[1]={w:[1],".":[2],"[":[4],o:[7]},E[2]={w:[2],i:[3,0],0:[3,0]},E[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]},E[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]},E[5]={"'":[4,0],o:8,l:[5,0]},E[6]={'"':[4,0],o:8,l:[6,0]};const O=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function C(e){if(null==e)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}const N=new Map;function j(e,t){return _(e)?e[t]:null}const A=e=>e,L=e=>"",M=e=>0===e.length?"":e.join(""),I=e=>null==e?"":v(e)||k(e)&&e.toString===w?JSON.stringify(e,null,2):String(e);function z(e,t){return e=Math.abs(e),2===t?e?e>1?1:0:1:e?Math.min(e,2):0}let T=null;const R=$("function:translate");function $(e){return t=>T&&T.emit(e,t)}function P(e,t,n){return[...new Set([n,...v(t)?t:_(t)?Object.keys(t):b(t)?[t]:[n]])]}function F(e,t,n){const r=b(n)?n:U,o=e;o.__localeChainCache||(o.__localeChainCache=new Map);let a=o.__localeChainCache.get(r);if(!a){a=[];let e=[n];for(;v(e);)e=H(a,e,t);const i=v(t)||!k(t)?t:t.default?t.default:null;e=b(i)?[i]:i,v(e)&&H(a,e,!1),o.__localeChainCache.set(r,a)}return a}function H(e,t,n){let r=!0;for(let o=0;o<t.length&&y(r);o++){const a=t[o];b(a)&&(r=D(e,t[o],n))}return r}function D(e,t,n){let r;const o=t.split("-");do{r=V(e,o.join("-"),n),o.splice(-1,1)}while(o.length&&!0===r);return r}function V(e,t,n){let r=!1;if(!e.includes(t)&&(r=!0,t)){r="!"!==t[t.length-1];const o=t.replace(/!/g,"");e.push(o),(v(n)||k(n))&&n[o]&&(r=n[o])}return r}const U="en-US",B=e=>`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;let W,Y,q=null;const G=e=>{q=e};let Z=null;const X=e=>{Z=e};let J=0;function K(e,t,n,r,o){const{missing:a,onWarn:i}=e;if(null!==a){const r=a(e,n,t,o);return b(r)?r:t}return t}function Q(e,t,n){e.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}Object.create(null);let ee=15;const te=()=>++ee,ne={INVALID_ARGUMENT:ee,INVALID_DATE_ARGUMENT:te(),INVALID_ISO_DATE_ARGUMENT:te(),__EXTEND_POINT__:te()};function re(e){return S(e,null,void 0)}const oe=()=>"",ae=e=>g(e);function ie(e,...t){const{fallbackFormat:n,postTranslation:r,unresolving:o,messageCompiler:a,fallbackLocale:s,messages:c}=e,[l,f]=le(...t),h=(y(f.missingWarn)?f.missingWarn:e.missingWarn,y(f.fallbackWarn)?f.fallbackWarn:e.fallbackWarn,y(f.escapeParameter)?f.escapeParameter:e.escapeParameter),d=!!f.resolvedMessage,m=b(f.default)||y(f.default)?y(f.default)?a?l:()=>l:f.default:n?a?l:()=>l:"",w=n||""!==m,x=b(f.locale)?f.locale:e.locale;h&&function(e){v(e.list)?e.list=e.list.map((e=>b(e)?p(e):e)):_(e.named)&&Object.keys(e.named).forEach((t=>{b(e.named[t])&&(e.named[t]=p(e.named[t]))}))}(f);let[S,E,O]=d?[l,x,c[x]||{}]:se(e,l,x,s),C=S,N=l;if(d||b(C)||ae(C)||w&&(C=m,N=C),!(d||(b(C)||ae(C))&&b(E)))return o?-1:l;let j=!1;const T=ae(C)?C:ce(e,l,E,C,N,(()=>{j=!0}));if(j)return C;const $=function(e,t,n,r){const{modifiers:o,pluralRules:a,messageResolver:s,fallbackLocale:c,fallbackWarn:l,missingWarn:u,fallbackContext:f}=e,h={locale:t,modifiers:o,pluralRules:a,messages:r=>{let o=s(n,r);if(null==o&&f){const[,,e]=se(f,r,t,c);o=s(e,r)}if(b(o)){let n=!1;const a=ce(e,r,t,o,r,(()=>{n=!0}));return n?oe:a}return ae(o)?o:oe}};return e.processor&&(h.processor=e.processor),r.list&&(h.list=r.list),r.named&&(h.named=r.named),i(r.plural)&&(h.pluralIndex=r.plural),h}(e,E,O,f),P=function(e,t,n){return t(n)}(0,T,function(e={}){const t=e.locale,n=function(e){const t=i(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(i(e.named.count)||i(e.named.n))?i(e.named.count)?e.named.count:i(e.named.n)?e.named.n:t:t}(e),r=_(e.pluralRules)&&b(t)&&g(e.pluralRules[t])?e.pluralRules[t]:z,o=_(e.pluralRules)&&b(t)&&g(e.pluralRules[t])?z:void 0,a=e.list||[],s=e.named||{};function c(t){return(g(e.messages)?e.messages(t):!!_(e.messages)&&e.messages[t])||(e.parent?e.parent.message(t):L)}i(e.pluralIndex)&&function(e,t){t.count||(t.count=e),t.n||(t.n=e)}(n,s);const l=k(e.processor)&&g(e.processor.normalize)?e.processor.normalize:M,u=k(e.processor)&&g(e.processor.interpolate)?e.processor.interpolate:I,f={list:e=>a[e],named:e=>s[e],plural:e=>e[r(n,e.length,o)],linked:(t,...n)=>{const[r,o]=n;let a="text",i="";1===n.length?_(r)?(i=r.modifier||i,a=r.type||a):b(r)&&(i=r||i):2===n.length&&(b(r)&&(i=r||i),b(o)&&(a=o||a));let s=c(t)(f);return"vnode"===a&&v(s)&&i&&(s=s[0]),i?(l=i,e.modifiers?e.modifiers[l]:A)(s,a):s;var l},message:c,type:k(e.processor)&&b(e.processor.type)?e.processor.type:"text",interpolate:u,normalize:l};return f}($)),F=r?r(P,l):P;if(__INTLIFY_PROD_DEVTOOLS__){const t={timestamp:Date.now(),key:b(l)?l:ae(C)?C.key:"",locale:E||(ae(C)?C.locale:""),format:b(C)?C:ae(C)?C.source:"",message:F};t.meta=u({},e.__meta,q||{}),R(t)}return F}function se(e,t,n,r,o,a){const{messages:i,onWarn:s,messageResolver:c,localeFallbacker:l}=e,u=l(e,r,n);let f,h={},p=null,d=n,m=null;for(let n=0;n<u.length&&(f=m=u[n],h=i[f]||{},null===(p=c(h,t))&&(p=h[t]),!b(p)&&!g(p));n++){const n=K(e,t,f,0,"translate");n!==t&&(p=n),d=m}return[p,f,h]}function ce(e,t,n,r,o,a){const{messageCompiler:i,warnHtmlMessage:s}=e;if(ae(r)){const e=r;return e.locale=e.locale||n,e.key=e.key||t,e}if(null==i){const e=()=>r;return e.locale=n,e.key=t,e}const c=i(r,function(e,t,n,r,o,a){return{warnHtmlMessage:o,onError:e=>{throw a&&a(e),e},onCacheKey:e=>((e,t,n)=>{return r={l:e,k:t,s:n},JSON.stringify(r).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027");var r})(t,n,e)}}(0,n,o,0,s,a));return c.locale=n,c.key=t,c.source=r,c}function le(...e){const[t,n,r]=e,o={};if(!b(t)&&!i(t)&&!ae(t))throw re(ne.INVALID_ARGUMENT);const a=i(t)?String(t):(ae(t),t);return i(n)?o.plural=n:b(n)?o.default=n:k(n)&&!c(n)?o.named=n:v(n)&&(o.list=n),i(r)?o.plural=r:b(r)?o.default=r:k(r)&&u(o,r),[a,o]}const ue="undefined"!=typeof Intl;function fe(e,...t){const{datetimeFormats:n,unresolving:r,fallbackLocale:o,onWarn:a,localeFallbacker:i}=e,{__datetimeFormatters:s}=e,[l,f,h,p]=pe(...t),d=(y(h.missingWarn)?h.missingWarn:e.missingWarn,y(h.fallbackWarn)?h.fallbackWarn:e.fallbackWarn,!!h.part),m=b(h.locale)?h.locale:e.locale,v=i(e,o,m);if(!b(l)||""===l)return new Intl.DateTimeFormat(m,p).format(f);let g,_={},w=null,x=m,S=null;for(let t=0;t<v.length&&(g=S=v[t],_=n[g]||{},w=_[l],!k(w));t++)K(e,l,g,0,"datetime format"),x=S;if(!k(w)||!b(g))return r?-1:l;let E=`${g}__${l}`;c(p)||(E=`${E}__${JSON.stringify(p)}`);let O=s.get(E);return O||(O=new Intl.DateTimeFormat(g,u({},w,p)),s.set(E,O)),d?O.formatToParts(f):O.format(f)}ue&&Intl.DateTimeFormat,ue&&Intl.NumberFormat;const he=["localeMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName","formatMatcher","hour12","timeZone","dateStyle","timeStyle","calendar","dayPeriod","numberingSystem","hourCycle","fractionalSecondDigits"];function pe(...e){const[t,n,r,o]=e,a={};let s,c={};if(b(t)){const e=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!e)throw re(ne.INVALID_ISO_DATE_ARGUMENT);const n=e[3]?e[3].trim().startsWith("T")?`${e[1].trim()}${e[3].trim()}`:`${e[1].trim()}T${e[3].trim()}`:e[1].trim();s=new Date(n);try{s.toISOString()}catch(e){throw re(ne.INVALID_ISO_DATE_ARGUMENT)}}else if("[object Date]"===x(t)){if(isNaN(t.getTime()))throw re(ne.INVALID_DATE_ARGUMENT);s=t}else{if(!i(t))throw re(ne.INVALID_ARGUMENT);s=t}return b(n)?a.key=n:k(n)&&Object.keys(n).forEach((e=>{he.includes(e)?c[e]=n[e]:a[e]=n[e]})),b(r)?a.locale=r:k(r)&&(c=r),k(o)&&(c=o),[a.key||"",s,a,c]}function de(e,t,n){const r=e;for(const e in n){const n=`${t}__${e}`;r.__datetimeFormatters.has(n)&&r.__datetimeFormatters.delete(n)}}function me(e,...t){const{numberFormats:n,unresolving:r,fallbackLocale:o,onWarn:a,localeFallbacker:i}=e,{__numberFormatters:s}=e,[l,f,h,p]=ge(...t),d=(y(h.missingWarn)?h.missingWarn:e.missingWarn,y(h.fallbackWarn)?h.fallbackWarn:e.fallbackWarn,!!h.part),m=b(h.locale)?h.locale:e.locale,v=i(e,o,m);if(!b(l)||""===l)return new Intl.NumberFormat(m,p).format(f);let g,_={},w=null,x=m,S=null;for(let t=0;t<v.length&&(g=S=v[t],_=n[g]||{},w=_[l],!k(w));t++)K(e,l,g,0,"number format"),x=S;if(!k(w)||!b(g))return r?-1:l;let E=`${g}__${l}`;c(p)||(E=`${E}__${JSON.stringify(p)}`);let O=s.get(E);return O||(O=new Intl.NumberFormat(g,u({},w,p)),s.set(E,O)),d?O.formatToParts(f):O.format(f)}const ve=["localeMatcher","style","currency","currencyDisplay","currencySign","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","compactDisplay","notation","signDisplay","unit","unitDisplay","roundingMode","roundingPriority","roundingIncrement","trailingZeroDisplay"];function ge(...e){const[t,n,r,o]=e,a={};let s={};if(!i(t))throw re(ne.INVALID_ARGUMENT);const c=t;return b(n)?a.key=n:k(n)&&Object.keys(n).forEach((e=>{ve.includes(e)?s[e]=n[e]:a[e]=n[e]})),b(r)?a.locale=r:k(r)&&(s=r),k(o)&&(s=o),[a.key||"",c,a,s]}function be(e,t,n){const r=e;for(const e in n){const n=`${t}__${e}`;r.__numberFormatters.has(n)&&r.__numberFormatters.delete(n)}}"boolean"!=typeof __INTLIFY_PROD_DEVTOOLS__&&(h().__INTLIFY_PROD_DEVTOOLS__=!1);var ye=n(66252),_e=n(2262);let we=7;const xe=()=>++we;xe(),xe(),xe(),xe(),xe(),xe();let ke=15;const Se=()=>++ke,Ee={UNEXPECTED_RETURN_TYPE:ke,INVALID_ARGUMENT:Se(),MUST_BE_CALL_SETUP_TOP:Se(),NOT_INSLALLED:Se(),NOT_AVAILABLE_IN_LEGACY_MODE:Se(),REQUIRED_VALUE:Se(),INVALID_VALUE:Se(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:Se(),NOT_INSLALLED_WITH_PROVIDE:Se(),UNEXPECTED_ERROR:Se(),NOT_COMPATIBLE_LEGACY_VUE_I18N:Se(),BRIDGE_SUPPORT_VUE_2_ONLY:Se(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:Se(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:Se(),__EXTEND_POINT__:Se()};function Oe(e,...t){return S(e,null,void 0)}const Ce=a("__transrateVNode"),Ne=a("__datetimeParts"),je=a("__numberParts"),Ae=a("__setPluralRules");a("__intlifyMeta");const Le=a("__injectWithOption");function Me(e){if(!_(e))return e;for(const t in e)if(m(e,t))if(t.includes(".")){const n=t.split("."),r=n.length-1;let o=e;for(let e=0;e<r;e++)n[e]in o||(o[n[e]]={}),o=o[n[e]];o[n[r]]=e[t],delete e[t],_(o[n[r]])&&Me(o[n[r]])}else _(e[t])&&Me(e[t]);return e}function Ie(e,t){const{messages:n,__i18n:r,messageResolver:o,flatJson:a}=t,i=k(n)?n:v(r)?{}:{[e]:{}};if(v(r)&&r.forEach((e=>{if("locale"in e&&"resource"in e){const{locale:t,resource:n}=e;t?(i[t]=i[t]||{},Te(n,i[t])):Te(n,i)}else b(e)&&Te(JSON.parse(e),i)})),null==o&&a)for(const e in i)m(i,e)&&Me(i[e]);return i}const ze=e=>!_(e)||v(e);function Te(e,t){if(ze(e)||ze(t))throw Oe(Ee.INVALID_VALUE);for(const n in e)m(e,n)&&(ze(e[n])||ze(t[n])?t[n]=e[n]:Te(e[n],t[n]))}function Re(e){return e.type}function $e(e,t,n){let r=_(t.messages)?t.messages:{};"__i18nGlobal"in n&&(r=Ie(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));const o=Object.keys(r);if(o.length&&o.forEach((t=>{e.mergeLocaleMessage(t,r[t])})),_(t.datetimeFormats)){const n=Object.keys(t.datetimeFormats);n.length&&n.forEach((n=>{e.mergeDateTimeFormat(n,t.datetimeFormats[n])}))}if(_(t.numberFormats)){const n=Object.keys(t.numberFormats);n.length&&n.forEach((n=>{e.mergeNumberFormat(n,t.numberFormats[n])}))}}function Pe(e){return(0,ye.Wm)(ye.xv,null,e,0)}const Fe="__INTLIFY_META__";let He=0;function De(e){return(t,n,r,o)=>e(n,r,(0,ye.FN)()||void 0,o)}function Ve(e={},t){const{__root:n}=e,o=void 0===n;let a=!y(e.inheritLocale)||e.inheritLocale;const c=(0,_e.iH)(n&&a?n.locale.value:b(e.locale)?e.locale:U),f=(0,_e.iH)(n&&a?n.fallbackLocale.value:b(e.fallbackLocale)||v(e.fallbackLocale)||k(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:c.value),h=(0,_e.iH)(Ie(c.value,e)),p=(0,_e.iH)(k(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),d=(0,_e.iH)(k(e.numberFormats)?e.numberFormats:{[c.value]:{}});let m=n?n.missingWarn:!y(e.missingWarn)&&!s(e.missingWarn)||e.missingWarn,w=n?n.fallbackWarn:!y(e.fallbackWarn)&&!s(e.fallbackWarn)||e.fallbackWarn,x=n?n.fallbackRoot:!y(e.fallbackRoot)||e.fallbackRoot,S=!!e.fallbackFormat,E=g(e.missing)?e.missing:null,O=g(e.missing)?De(e.missing):null,C=g(e.postTranslation)?e.postTranslation:null,N=n?n.warnHtmlMessage:!y(e.warnHtmlMessage)||e.warnHtmlMessage,A=!!e.escapeParameter;const L=n?n.modifiers:k(e.modifiers)?e.modifiers:{};let M,I=e.pluralRules||n&&n.pluralRules;M=(()=>{o&&X(null);const t={version:"9.2.2",locale:c.value,fallbackLocale:f.value,messages:h.value,modifiers:L,pluralRules:I,missing:null===O?void 0:O,missingWarn:m,fallbackWarn:w,fallbackFormat:S,unresolving:!0,postTranslation:null===C?void 0:C,warnHtmlMessage:N,escapeParameter:A,messageResolver:e.messageResolver,__meta:{framework:"vue"}};t.datetimeFormats=p.value,t.numberFormats=d.value,t.__datetimeFormatters=k(M)?M.__datetimeFormatters:void 0,t.__numberFormatters=k(M)?M.__numberFormatters:void 0;const n=function(e={}){const t=b(e.version)?e.version:"9.2.2",n=b(e.locale)?e.locale:U,r=v(e.fallbackLocale)||k(e.fallbackLocale)||b(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:n,o=k(e.messages)?e.messages:{[n]:{}},a=k(e.datetimeFormats)?e.datetimeFormats:{[n]:{}},i=k(e.numberFormats)?e.numberFormats:{[n]:{}},c=u({},e.modifiers||{},{upper:(e,t)=>"text"===t&&b(e)?e.toUpperCase():"vnode"===t&&_(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>"text"===t&&b(e)?e.toLowerCase():"vnode"===t&&_(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>"text"===t&&b(e)?B(e):"vnode"===t&&_(e)&&"__v_isVNode"in e?B(e.children):e}),f=e.pluralRules||{},h=g(e.missing)?e.missing:null,p=!y(e.missingWarn)&&!s(e.missingWarn)||e.missingWarn,d=!y(e.fallbackWarn)&&!s(e.fallbackWarn)||e.fallbackWarn,m=!!e.fallbackFormat,w=!!e.unresolving,x=g(e.postTranslation)?e.postTranslation:null,S=k(e.processor)?e.processor:null,E=!y(e.warnHtmlMessage)||e.warnHtmlMessage,O=!!e.escapeParameter,C=g(e.messageCompiler)?e.messageCompiler:void 0,N=g(e.messageResolver)?e.messageResolver:W||j,A=g(e.localeFallbacker)?e.localeFallbacker:Y||P,L=_(e.fallbackContext)?e.fallbackContext:void 0,M=g(e.onWarn)?e.onWarn:l,I=e,z=_(I.__datetimeFormatters)?I.__datetimeFormatters:new Map,R=_(I.__numberFormatters)?I.__numberFormatters:new Map,$=_(I.__meta)?I.__meta:{};J++;const F={version:t,cid:J,locale:n,fallbackLocale:r,messages:o,modifiers:c,pluralRules:f,missing:h,missingWarn:p,fallbackWarn:d,fallbackFormat:m,unresolving:w,postTranslation:x,processor:S,warnHtmlMessage:E,escapeParameter:O,messageCompiler:C,messageResolver:N,localeFallbacker:A,fallbackContext:L,onWarn:M,__meta:$};return F.datetimeFormats=a,F.numberFormats=i,F.__datetimeFormatters=z,F.__numberFormatters=R,__INTLIFY_PROD_DEVTOOLS__&&function(e,t,n){T&&T.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:n})}(F,t,$),F}(t);return o&&X(n),n})(),Q(M,c.value,f.value);const z=(0,ye.Fl)({get:()=>c.value,set:e=>{c.value=e,M.locale=c.value}}),R=(0,ye.Fl)({get:()=>f.value,set:e=>{f.value=e,M.fallbackLocale=f.value,Q(M,c.value,e)}}),$=(0,ye.Fl)((()=>h.value)),H=(0,ye.Fl)((()=>p.value)),D=(0,ye.Fl)((()=>d.value)),V=(e,t,r,a,s,l)=>{let u;if(c.value,f.value,h.value,p.value,d.value,__INTLIFY_PROD_DEVTOOLS__)try{G((()=>{const e=(0,ye.FN)();let t=null;return e&&(t=Re(e)[Fe])?{[Fe]:t}:null})()),o||(M.fallbackContext=n?Z:void 0),u=e(M)}finally{G(null),o||(M.fallbackContext=void 0)}else u=e(M);if(i(u)&&-1===u){const[e,r]=t();return n&&x?a(n):s(e)}if(l(u))return u;throw Oe(Ee.UNEXPECTED_RETURN_TYPE)};function q(...e){return V((t=>Reflect.apply(ie,null,[t,...e])),(()=>le(...e)),0,(t=>Reflect.apply(t.t,t,[...e])),(e=>e),(e=>b(e)))}const K={normalize:function(e){return e.map((e=>b(e)||i(e)||y(e)?Pe(String(e)):e))},interpolate:e=>e,type:"vnode"};function ee(e){return h.value[e]||{}}He++,n&&r&&((0,ye.YP)(n.locale,(e=>{a&&(c.value=e,M.locale=e,Q(M,c.value,f.value))})),(0,ye.YP)(n.fallbackLocale,(e=>{a&&(f.value=e,M.fallbackLocale=e,Q(M,c.value,f.value))})));const te={id:He,locale:z,fallbackLocale:R,get inheritLocale(){return a},set inheritLocale(e){a=e,e&&n&&(c.value=n.locale.value,f.value=n.fallbackLocale.value,Q(M,c.value,f.value))},get availableLocales(){return Object.keys(h.value).sort()},messages:$,get modifiers(){return L},get pluralRules(){return I||{}},get isGlobal(){return o},get missingWarn(){return m},set missingWarn(e){m=e,M.missingWarn=m},get fallbackWarn(){return w},set fallbackWarn(e){w=e,M.fallbackWarn=w},get fallbackRoot(){return x},set fallbackRoot(e){x=e},get fallbackFormat(){return S},set fallbackFormat(e){S=e,M.fallbackFormat=S},get warnHtmlMessage(){return N},set warnHtmlMessage(e){N=e,M.warnHtmlMessage=e},get escapeParameter(){return A},set escapeParameter(e){A=e,M.escapeParameter=e},t:q,getLocaleMessage:ee,setLocaleMessage:function(e,t){h.value[e]=t,M.messages=h.value},mergeLocaleMessage:function(e,t){h.value[e]=h.value[e]||{},Te(t,h.value[e]),M.messages=h.value},getPostTranslationHandler:function(){return g(C)?C:null},setPostTranslationHandler:function(e){C=e,M.postTranslation=e},getMissingHandler:function(){return E},setMissingHandler:function(e){null!==e&&(O=De(e)),E=e,M.missing=O},[Ae]:function(e){I=e,M.pluralRules=I}};return te.datetimeFormats=H,te.numberFormats=D,te.rt=function(...e){const[t,n,r]=e;if(r&&!_(r))throw Oe(Ee.INVALID_ARGUMENT);return q(t,n,u({resolvedMessage:!0},r||{}))},te.te=function(e,t){const n=ee(b(t)?t:c.value);return null!==M.messageResolver(n,e)},te.tm=function(e){const t=function(e){let t=null;const n=F(M,f.value,c.value);for(let r=0;r<n.length;r++){const o=h.value[n[r]]||{},a=M.messageResolver(o,e);if(null!=a){t=a;break}}return t}(e);return null!=t?t:n&&n.tm(e)||{}},te.d=function(...e){return V((t=>Reflect.apply(fe,null,[t,...e])),(()=>pe(...e)),0,(t=>Reflect.apply(t.d,t,[...e])),(()=>""),(e=>b(e)))},te.n=function(...e){return V((t=>Reflect.apply(me,null,[t,...e])),(()=>ge(...e)),0,(t=>Reflect.apply(t.n,t,[...e])),(()=>""),(e=>b(e)))},te.getDateTimeFormat=function(e){return p.value[e]||{}},te.setDateTimeFormat=function(e,t){p.value[e]=t,M.datetimeFormats=p.value,de(M,e,t)},te.mergeDateTimeFormat=function(e,t){p.value[e]=u(p.value[e]||{},t),M.datetimeFormats=p.value,de(M,e,t)},te.getNumberFormat=function(e){return d.value[e]||{}},te.setNumberFormat=function(e,t){d.value[e]=t,M.numberFormats=d.value,be(M,e,t)},te.mergeNumberFormat=function(e,t){d.value[e]=u(d.value[e]||{},t),M.numberFormats=d.value,be(M,e,t)},te[Le]=e.__injectWithOption,te[Ce]=function(...e){return V((t=>{let n;const r=t;try{r.processor=K,n=Reflect.apply(ie,null,[r,...e])}finally{r.processor=null}return n}),(()=>le(...e)),0,(t=>t[Ce](...e)),(e=>[Pe(e)]),(e=>v(e)))},te[Ne]=function(...e){return V((t=>Reflect.apply(fe,null,[t,...e])),(()=>pe(...e)),0,(t=>t[Ne](...e)),(()=>[]),(e=>b(e)||v(e)))},te[je]=function(...e){return V((t=>Reflect.apply(me,null,[t,...e])),(()=>ge(...e)),0,(t=>t[je](...e)),(()=>[]),(e=>b(e)||v(e)))},te}function Ue(e={},t){{const t=Ve(function(e){const t=b(e.locale)?e.locale:U,n=b(e.fallbackLocale)||v(e.fallbackLocale)||k(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:t,r=g(e.missing)?e.missing:void 0,o=!y(e.silentTranslationWarn)&&!s(e.silentTranslationWarn)||!e.silentTranslationWarn,a=!y(e.silentFallbackWarn)&&!s(e.silentFallbackWarn)||!e.silentFallbackWarn,i=!y(e.fallbackRoot)||e.fallbackRoot,c=!!e.formatFallbackMessages,l=k(e.modifiers)?e.modifiers:{},f=e.pluralizationRules,h=g(e.postTranslation)?e.postTranslation:void 0,p=!b(e.warnHtmlInMessage)||"off"!==e.warnHtmlInMessage,d=!!e.escapeParameterHtml,m=!y(e.sync)||e.sync;let _=e.messages;if(k(e.sharedMessages)){const t=e.sharedMessages;_=Object.keys(t).reduce(((e,n)=>{const r=e[n]||(e[n]={});return u(r,t[n]),e}),_||{})}const{__i18n:w,__root:x,__injectWithOption:S}=e,E=e.datetimeFormats,O=e.numberFormats;return{locale:t,fallbackLocale:n,messages:_,flatJson:e.flatJson,datetimeFormats:E,numberFormats:O,missing:r,missingWarn:o,fallbackWarn:a,fallbackRoot:i,fallbackFormat:c,modifiers:l,pluralRules:f,postTranslation:h,warnHtmlMessage:p,escapeParameter:d,messageResolver:e.messageResolver,inheritLocale:m,__i18n:w,__root:x,__injectWithOption:S}}(e)),n={id:t.id,get locale(){return t.locale.value},set locale(e){t.locale.value=e},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(e){t.fallbackLocale.value=e},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get formatter(){return{interpolate:()=>[]}},set formatter(e){},get missing(){return t.getMissingHandler()},set missing(e){t.setMissingHandler(e)},get silentTranslationWarn(){return y(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(e){t.missingWarn=y(e)?!e:e},get silentFallbackWarn(){return y(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(e){t.fallbackWarn=y(e)?!e:e},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(e){t.fallbackFormat=e},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(e){t.setPostTranslationHandler(e)},get sync(){return t.inheritLocale},set sync(e){t.inheritLocale=e},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(e){t.warnHtmlMessage="off"!==e},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(e){t.escapeParameter=e},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(e){},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...e){const[n,r,o]=e,a={};let i=null,s=null;if(!b(n))throw Oe(Ee.INVALID_ARGUMENT);const c=n;return b(r)?a.locale=r:v(r)?i=r:k(r)&&(s=r),v(o)?i=o:k(o)&&(s=o),Reflect.apply(t.t,t,[c,i||s||{},a])},rt:(...e)=>Reflect.apply(t.rt,t,[...e]),tc(...e){const[n,r,o]=e,a={plural:1};let s=null,c=null;if(!b(n))throw Oe(Ee.INVALID_ARGUMENT);const l=n;return b(r)?a.locale=r:i(r)?a.plural=r:v(r)?s=r:k(r)&&(c=r),b(o)?a.locale=o:v(o)?s=o:k(o)&&(c=o),Reflect.apply(t.t,t,[l,s||c||{},a])},te:(e,n)=>t.te(e,n),tm:e=>t.tm(e),getLocaleMessage:e=>t.getLocaleMessage(e),setLocaleMessage(e,n){t.setLocaleMessage(e,n)},mergeLocaleMessage(e,n){t.mergeLocaleMessage(e,n)},d:(...e)=>Reflect.apply(t.d,t,[...e]),getDateTimeFormat:e=>t.getDateTimeFormat(e),setDateTimeFormat(e,n){t.setDateTimeFormat(e,n)},mergeDateTimeFormat(e,n){t.mergeDateTimeFormat(e,n)},n:(...e)=>Reflect.apply(t.n,t,[...e]),getNumberFormat:e=>t.getNumberFormat(e),setNumberFormat(e,n){t.setNumberFormat(e,n)},mergeNumberFormat(e,n){t.mergeNumberFormat(e,n)},getChoiceIndex:(e,t)=>-1,__onComponentInstanceCreated(t){const{componentInstanceCreatedListener:r}=e;r&&r(t,n)}};return n}}const Be={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>"parent"===e||"global"===e,default:"parent"},i18n:{type:Object}};function We(e){return ye.HY}const Ye={name:"i18n-t",props:u({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>i(e)||!isNaN(e)}},Be),setup(e,t){const{slots:n,attrs:r}=t,o=e.i18n||tt({useScope:e.scope,__useComponent:!0});return()=>{const a=Object.keys(n).filter((e=>"_"!==e)),i={};e.locale&&(i.locale=e.locale),void 0!==e.plural&&(i.plural=b(e.plural)?+e.plural:e.plural);const s=function({slots:e},t){return 1===t.length&&"default"===t[0]?(e.default?e.default():[]).reduce(((e,t)=>[...e,...v(t.children)?t.children:[t]]),[]):t.reduce(((t,n)=>{const r=e[n];return r&&(t[n]=r()),t}),{})}(t,a),c=o[Ce](e.keypath,s,i),l=u({},r),f=b(e.tag)||_(e.tag)?e.tag:We();return(0,ye.h)(f,l,c)}}};function qe(e,t,n,r){const{slots:o,attrs:a}=t;return()=>{const t={part:!0};let i={};e.locale&&(t.locale=e.locale),b(e.format)?t.key=e.format:_(e.format)&&(b(e.format.key)&&(t.key=e.format.key),i=Object.keys(e.format).reduce(((t,r)=>n.includes(r)?u({},t,{[r]:e.format[r]}):t),{}));const s=r(e.value,t,i);let c=[t.key];v(s)?c=s.map(((e,t)=>{const n=o[e.type],r=n?n({[e.type]:e.value,index:t,parts:s}):[e.value];var a;return v(a=r)&&!b(a[0])&&(r[0].key=`${e.type}-${t}`),r})):b(s)&&(c=[s]);const l=u({},a),f=b(e.tag)||_(e.tag)?e.tag:We();return(0,ye.h)(f,l,c)}}const Ge={name:"i18n-n",props:u({value:{type:Number,required:!0},format:{type:[String,Object]}},Be),setup(e,t){const n=e.i18n||tt({useScope:"parent",__useComponent:!0});return qe(e,t,ve,((...e)=>n[je](...e)))}},Ze={name:"i18n-d",props:u({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Be),setup(e,t){const n=e.i18n||tt({useScope:"parent",__useComponent:!0});return qe(e,t,he,((...e)=>n[Ne](...e)))}};function Xe(e){if(b(e))return{path:e};if(k(e)){if(!("path"in e))throw Oe(Ee.REQUIRED_VALUE);return e}throw Oe(Ee.INVALID_VALUE)}function Je(e){const{path:t,locale:n,args:r,choice:o,plural:a}=e,s={},c=r||{};return b(n)&&(s.locale=n),i(o)&&(s.plural=o),i(a)&&(s.plural=a),[t,c,s]}function Ke(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Ae](t.pluralizationRules||e.pluralizationRules);const n=Ie(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach((t=>e.mergeLocaleMessage(t,n[t]))),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach((n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n]))),t.numberFormats&&Object.keys(t.numberFormats).forEach((n=>e.mergeNumberFormat(n,t.numberFormats[n]))),e}const Qe=a("global-vue-i18n");function et(e={},t){const n=__VUE_I18N_LEGACY_API__&&y(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,o=!y(e.globalInjection)||e.globalInjection,i=!__VUE_I18N_LEGACY_API__||!n||!!e.allowComposition,s=new Map,[c,l]=function(e,t,n){const r=(0,_e.B)();{const n=__VUE_I18N_LEGACY_API__&&t?r.run((()=>Ue(e))):r.run((()=>Ve(e)));if(null==n)throw Oe(Ee.UNEXPECTED_ERROR);return[r,n]}}(e,n),u=a("");{const e={get mode(){return __VUE_I18N_LEGACY_API__&&n?"legacy":"composition"},get allowComposition(){return i},async install(t,...a){t.__VUE_I18N_SYMBOL__=u,t.provide(t.__VUE_I18N_SYMBOL__,e),!n&&o&&function(e,t){const n=Object.create(null);nt.forEach((e=>{const r=Object.getOwnPropertyDescriptor(t,e);if(!r)throw Oe(Ee.UNEXPECTED_ERROR);const o=(0,_e.dq)(r.value)?{get:()=>r.value.value,set(e){r.value.value=e}}:{get:()=>r.get&&r.get()};Object.defineProperty(n,e,o)})),e.config.globalProperties.$i18n=n,rt.forEach((n=>{const r=Object.getOwnPropertyDescriptor(t,n);if(!r||!r.value)throw Oe(Ee.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${n}`,r)}))}(t,e.global),__VUE_I18N_FULL_INSTALL__&&function(e,t,...n){const o=k(n[0])?n[0]:{},a=!!o.useI18nComponentName;(!y(o.globalInstall)||o.globalInstall)&&(e.component(a?"i18n":Ye.name,Ye),e.component(Ge.name,Ge),e.component(Ze.name,Ze)),e.directive("t",function(e){const t=t=>{const{instance:n,modifiers:r,value:o}=t;if(!n||!n.$)throw Oe(Ee.UNEXPECTED_ERROR);const a=function(e,t){const n=e;if("composition"===e.mode)return n.__getInstance(t)||e.global;{const r=n.__getInstance(t);return null!=r?r.__composer:e.global.__composer}}(e,n.$),i=Xe(o);return[Reflect.apply(a.t,a,[...Je(i)]),a]};return{created:(n,o)=>{const[a,i]=t(o);r&&e.global===i&&(n.__i18nWatcher=(0,ye.YP)(i.locale,(()=>{o.instance&&o.instance.$forceUpdate()}))),n.__composer=i,n.textContent=a},unmounted:e=>{r&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},beforeUpdate:(e,{value:t})=>{if(e.__composer){const n=e.__composer,r=Xe(t);e.textContent=Reflect.apply(n.t,n,[...Je(r)])}},getSSRProps:e=>{const[n]=t(e);return{textContent:n}}}}(t))}(t,e,...a),__VUE_I18N_LEGACY_API__&&n&&t.mixin(function(e,t,n){return{beforeCreate(){const r=(0,ye.FN)();if(!r)throw Oe(Ee.UNEXPECTED_ERROR);const o=this.$options;if(o.i18n){const n=o.i18n;o.__i18n&&(n.__i18n=o.__i18n),n.__root=t,this===this.$root?this.$i18n=Ke(e,n):(n.__injectWithOption=!0,this.$i18n=Ue(n))}else o.__i18n?this===this.$root?this.$i18n=Ke(e,o):this.$i18n=Ue({__i18n:o.__i18n,__injectWithOption:!0,__root:t}):this.$i18n=e;o.__i18nGlobal&&$e(t,o,o),e.__onComponentInstanceCreated(this.$i18n),n.__setInstance(r,this.$i18n),this.$t=(...e)=>this.$i18n.t(...e),this.$rt=(...e)=>this.$i18n.rt(...e),this.$tc=(...e)=>this.$i18n.tc(...e),this.$te=(e,t)=>this.$i18n.te(e,t),this.$d=(...e)=>this.$i18n.d(...e),this.$n=(...e)=>this.$i18n.n(...e),this.$tm=e=>this.$i18n.tm(e)},mounted(){},unmounted(){const e=(0,ye.FN)();if(!e)throw Oe(Ee.UNEXPECTED_ERROR);delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,n.__deleteInstance(e),delete this.$i18n}}}(l,l.__composer,e));const i=t.unmount;t.unmount=()=>{e.dispose(),i()}},get global(){return l},dispose(){c.stop()},__instances:s,__getInstance:function(e){return s.get(e)||null},__setInstance:function(e,t){s.set(e,t)},__deleteInstance:function(e){s.delete(e)}};return e}}function tt(e={}){const t=(0,ye.FN)();if(null==t)throw Oe(Ee.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&null!=t.appContext.app&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw Oe(Ee.NOT_INSLALLED);const n=function(e){{const t=(0,ye.f3)(e.isCE?Qe:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw Oe(e.isCE?Ee.NOT_INSLALLED_WITH_PROVIDE:Ee.UNEXPECTED_ERROR);return t}}(t),r=function(e){return"composition"===e.mode?e.global:e.global.__composer}(n),o=Re(t),a=function(e,t){return c(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}(e,o);if(__VUE_I18N_LEGACY_API__&&"legacy"===n.mode&&!e.__useComponent){if(!n.allowComposition)throw Oe(Ee.NOT_AVAILABLE_IN_LEGACY_MODE);return function(e,t,n,r={}){const o="local"===t,a=(0,_e.XI)(null);if(o&&e.proxy&&!e.proxy.$options.i18n&&!e.proxy.$options.__i18n)throw Oe(Ee.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const i=!y(r.inheritLocale)||r.inheritLocale,c=(0,_e.iH)(o&&i?n.locale.value:b(r.locale)?r.locale:U),l=(0,_e.iH)(o&&i?n.fallbackLocale.value:b(r.fallbackLocale)||v(r.fallbackLocale)||k(r.fallbackLocale)||!1===r.fallbackLocale?r.fallbackLocale:c.value),u=(0,_e.iH)(Ie(c.value,r)),f=(0,_e.iH)(k(r.datetimeFormats)?r.datetimeFormats:{[c.value]:{}}),h=(0,_e.iH)(k(r.numberFormats)?r.numberFormats:{[c.value]:{}}),p=o?n.missingWarn:!y(r.missingWarn)&&!s(r.missingWarn)||r.missingWarn,d=o?n.fallbackWarn:!y(r.fallbackWarn)&&!s(r.fallbackWarn)||r.fallbackWarn,m=o?n.fallbackRoot:!y(r.fallbackRoot)||r.fallbackRoot,_=!!r.fallbackFormat,w=g(r.missing)?r.missing:null,x=g(r.postTranslation)?r.postTranslation:null,S=o?n.warnHtmlMessage:!y(r.warnHtmlMessage)||r.warnHtmlMessage,E=!!r.escapeParameter,O=o?n.modifiers:k(r.modifiers)?r.modifiers:{},C=r.pluralRules||o&&n.pluralRules;function N(e){return c.value,l.value,u.value,f.value,h.value,e()}const j={get id(){return a.value?a.value.id:-1},locale:(0,ye.Fl)({get:()=>a.value?a.value.locale.value:c.value,set:e=>{a.value&&(a.value.locale.value=e),c.value=e}}),fallbackLocale:(0,ye.Fl)({get:()=>a.value?a.value.fallbackLocale.value:l.value,set:e=>{a.value&&(a.value.fallbackLocale.value=e),l.value=e}}),messages:(0,ye.Fl)((()=>a.value?a.value.messages.value:u.value)),datetimeFormats:(0,ye.Fl)((()=>f.value)),numberFormats:(0,ye.Fl)((()=>h.value)),get inheritLocale(){return a.value?a.value.inheritLocale:i},set inheritLocale(e){a.value&&(a.value.inheritLocale=e)},get availableLocales(){return a.value?a.value.availableLocales:Object.keys(u.value)},get modifiers(){return a.value?a.value.modifiers:O},get pluralRules(){return a.value?a.value.pluralRules:C},get isGlobal(){return!!a.value&&a.value.isGlobal},get missingWarn(){return a.value?a.value.missingWarn:p},set missingWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackWarn(){return a.value?a.value.fallbackWarn:d},set fallbackWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackRoot(){return a.value?a.value.fallbackRoot:m},set fallbackRoot(e){a.value&&(a.value.fallbackRoot=e)},get fallbackFormat(){return a.value?a.value.fallbackFormat:_},set fallbackFormat(e){a.value&&(a.value.fallbackFormat=e)},get warnHtmlMessage(){return a.value?a.value.warnHtmlMessage:S},set warnHtmlMessage(e){a.value&&(a.value.warnHtmlMessage=e)},get escapeParameter(){return a.value?a.value.escapeParameter:E},set escapeParameter(e){a.value&&(a.value.escapeParameter=e)},t:function(...e){return a.value?N((()=>Reflect.apply(a.value.t,null,[...e]))):N((()=>""))},getPostTranslationHandler:function(){return a.value?a.value.getPostTranslationHandler():x},setPostTranslationHandler:function(e){a.value&&a.value.setPostTranslationHandler(e)},getMissingHandler:function(){return a.value?a.value.getMissingHandler():w},setMissingHandler:function(e){a.value&&a.value.setMissingHandler(e)},rt:function(...e){return a.value?Reflect.apply(a.value.rt,null,[...e]):""},d:function(...e){return a.value?N((()=>Reflect.apply(a.value.d,null,[...e]))):N((()=>""))},n:function(...e){return a.value?N((()=>Reflect.apply(a.value.n,null,[...e]))):N((()=>""))},tm:function(e){return a.value?a.value.tm(e):{}},te:function(e,t){return!!a.value&&a.value.te(e,t)},getLocaleMessage:function(e){return a.value?a.value.getLocaleMessage(e):{}},setLocaleMessage:function(e,t){a.value&&(a.value.setLocaleMessage(e,t),u.value[e]=t)},mergeLocaleMessage:function(e,t){a.value&&a.value.mergeLocaleMessage(e,t)},getDateTimeFormat:function(e){return a.value?a.value.getDateTimeFormat(e):{}},setDateTimeFormat:function(e,t){a.value&&(a.value.setDateTimeFormat(e,t),f.value[e]=t)},mergeDateTimeFormat:function(e,t){a.value&&a.value.mergeDateTimeFormat(e,t)},getNumberFormat:function(e){return a.value?a.value.getNumberFormat(e):{}},setNumberFormat:function(e,t){a.value&&(a.value.setNumberFormat(e,t),h.value[e]=t)},mergeNumberFormat:function(e,t){a.value&&a.value.mergeNumberFormat(e,t)}};return(0,ye.wF)((()=>{if(null==e.proxy||null==e.proxy.$i18n)throw Oe(Ee.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const n=a.value=e.proxy.$i18n.__composer;"global"===t?(c.value=n.locale.value,l.value=n.fallbackLocale.value,u.value=n.messages.value,f.value=n.datetimeFormats.value,h.value=n.numberFormats.value):o&&function(e){e.locale.value=c.value,e.fallbackLocale.value=l.value,Object.keys(u.value).forEach((t=>{e.mergeLocaleMessage(t,u.value[t])})),Object.keys(f.value).forEach((t=>{e.mergeDateTimeFormat(t,f.value[t])})),Object.keys(h.value).forEach((t=>{e.mergeNumberFormat(t,h.value[t])})),e.escapeParameter=E,e.fallbackFormat=_,e.fallbackRoot=m,e.fallbackWarn=d,e.missingWarn=p,e.warnHtmlMessage=S}(n)})),j}(t,a,r,e)}if("global"===a)return $e(r,e,o),r;if("parent"===a){let o=function(e,t,n=!1){let r=null;const o=t.root;let a=t.parent;for(;null!=a;){const t=e;if("composition"===e.mode)r=t.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){const e=t.__getInstance(a);null!=e&&(r=e.__composer,n&&r&&!r[Le]&&(r=null))}if(null!=r)break;if(o===a)break;a=a.parent}return r}(n,t,e.__useComponent);return null==o&&(o=r),o}const i=n;let l=i.__getInstance(t);if(null==l){const n=u({},e);"__i18n"in o&&(n.__i18n=o.__i18n),r&&(n.__root=r),l=Ve(n),function(e,t,n){(0,ye.bv)((()=>{}),t),(0,ye.Ah)((()=>{e.__deleteInstance(t)}),t)}(i,t),i.__setInstance(t,l)}return l}const nt=["locale","fallbackLocale","availableLocales"],rt=["t","rt","d","n","tm"];var ot;if(W=function(e,t){if(!_(e))return null;let n=N.get(t);if(n||(n=function(e){const t=[];let n,r,o,a,i,s,c,l=-1,u=0,f=0;const h=[];function p(){const t=e[l+1];if(5===u&&"'"===t||6===u&&'"'===t)return l++,o="\\"+t,h[0](),!0}for(h[0]=()=>{void 0===r?r=o:r+=o},h[1]=()=>{void 0!==r&&(t.push(r),r=void 0)},h[2]=()=>{h[0](),f++},h[3]=()=>{if(f>0)f--,u=4,h[0]();else{if(f=0,void 0===r)return!1;if(r=function(e){const t=e.trim();return("0"!==e.charAt(0)||!isNaN(parseInt(e)))&&(n=t,O.test(n)?function(e){const t=e.charCodeAt(0);return t!==e.charCodeAt(e.length-1)||34!==t&&39!==t?e:e.slice(1,-1)}(t):"*"+t);var n}(r),!1===r)return!1;h[1]()}};null!==u;)if(l++,n=e[l],"\\"!==n||!p()){if(a=C(n),c=E[u],i=c[a]||c.l||8,8===i)return;if(u=i[0],void 0!==i[1]&&(s=h[i[1]],s&&(o=n,!1===s())))return;if(7===u)return t}}(t),n&&N.set(t,n)),!n)return null;const r=n.length;let o=e,a=0;for(;a<r;){const e=o[n[a]];if(void 0===e)return null;o=e,a++}return o},Y=F,function(){let e=!1;"boolean"!=typeof __VUE_I18N_FULL_INSTALL__&&(e=!0,h().__VUE_I18N_FULL_INSTALL__=!0),"boolean"!=typeof __VUE_I18N_LEGACY_API__&&(e=!0,h().__VUE_I18N_LEGACY_API__=!0),"boolean"!=typeof __INTLIFY_PROD_DEVTOOLS__&&(h().__INTLIFY_PROD_DEVTOOLS__=!1)}(),__INTLIFY_PROD_DEVTOOLS__){const e=h();e.__INTLIFY__=!0,ot=e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__,T=ot}},83744:(e,t)=>{"use strict";t.Z=(e,t)=>{const n=e.__vccOpts||e;for(const[e,r]of t)n[e]=r;return n}},28339:(e,t,n)=>{"use strict";n.d(t,{PO:()=>C,p7:()=>Ae});var r=n(66252),o=n(2262);const a="undefined"!=typeof window;const i=Object.assign;function s(e,t){const n={};for(const r in t){const o=t[r];n[r]=l(o)?o.map(e):e(o)}return n}const c=()=>{},l=Array.isArray,u=/\/$/;function f(e,t,n="/"){let r,o={},a="",i="";const s=t.indexOf("#");let c=t.indexOf("?");return s<c&&s>=0&&(c=-1),c>-1&&(r=t.slice(0,c),a=t.slice(c+1,s>-1?s:t.length),o=e(a)),s>-1&&(r=r||t.slice(0,s),i=t.slice(s,t.length)),r=function(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/");let o,a,i=n.length-1;for(o=0;o<r.length;o++)if(a=r[o],"."!==a){if(".."!==a)break;i>1&&i--}return n.slice(0,i).join("/")+"/"+r.slice(o-(o===r.length?1:0)).join("/")}(null!=r?r:t,n),{fullPath:r+(a&&"?")+a+i,path:r,query:o,hash:i}}function h(e,t){return t&&e.toLowerCase().startsWith(t.toLowerCase())?e.slice(t.length)||"/":e}function p(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function d(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!m(e[n],t[n]))return!1;return!0}function m(e,t){return l(e)?v(e,t):l(t)?v(t,e):e===t}function v(e,t){return l(t)?e.length===t.length&&e.every(((e,n)=>e===t[n])):1===e.length&&e[0]===t}var g,b;!function(e){e.pop="pop",e.push="push"}(g||(g={})),function(e){e.back="back",e.forward="forward",e.unknown=""}(b||(b={}));const y=/^[^#]+#/;function _(e,t){return e.replace(y,"#")+t}const w=()=>({left:window.pageXOffset,top:window.pageYOffset});function x(e,t){return(history.state?history.state.position-t:-1)+e}const k=new Map;let S=()=>location.protocol+"//"+location.host;function E(e,t){const{pathname:n,search:r,hash:o}=t,a=e.indexOf("#");if(a>-1){let t=o.includes(e.slice(a))?e.slice(a).length:1,n=o.slice(t);return"/"!==n[0]&&(n="/"+n),h(n,"")}return h(n,e)+r+o}function O(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?w():null}}function C(e){const t=function(e){const{history:t,location:n}=window,r={value:E(e,n)},o={value:t.state};function a(r,a,i){const s=e.indexOf("#"),c=s>-1?(n.host&&document.querySelector("base")?e:e.slice(s))+r:S()+e+r;try{t[i?"replaceState":"pushState"](a,"",c),o.value=a}catch(e){console.error(e),n[i?"replace":"assign"](c)}}return o.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0),{location:r,state:o,push:function(e,n){const s=i({},o.value,t.state,{forward:e,scroll:w()});a(s.current,s,!0),a(e,i({},O(r.value,e,null),{position:s.position+1},n),!1),r.value=e},replace:function(e,n){a(e,i({},t.state,O(o.value.back,e,o.value.forward,!0),n,{position:o.value.position}),!0),r.value=e}}}(e=function(e){if(!e)if(a){const t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return"/"!==e[0]&&"#"!==e[0]&&(e="/"+e),e.replace(u,"")}(e)),n=function(e,t,n,r){let o=[],a=[],s=null;const c=({state:a})=>{const i=E(e,location),c=n.value,l=t.value;let u=0;if(a){if(n.value=i,t.value=a,s&&s===c)return void(s=null);u=l?a.position-l.position:0}else r(i);o.forEach((e=>{e(n.value,c,{delta:u,type:g.pop,direction:u?u>0?b.forward:b.back:b.unknown})}))};function l(){const{history:e}=window;e.state&&e.replaceState(i({},e.state,{scroll:w()}),"")}return window.addEventListener("popstate",c),window.addEventListener("beforeunload",l),{pauseListeners:function(){s=n.value},listen:function(e){o.push(e);const t=()=>{const t=o.indexOf(e);t>-1&&o.splice(t,1)};return a.push(t),t},destroy:function(){for(const e of a)e();a=[],window.removeEventListener("popstate",c),window.removeEventListener("beforeunload",l)}}}(e,t.state,t.location,t.replace),r=i({location:"",base:e,go:function(e,t=!0){t||n.pauseListeners(),history.go(e)},createHref:_.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function N(e){return"string"==typeof e||"symbol"==typeof e}const j={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},A=Symbol("");var L;function M(e,t){return i(new Error,{type:e,[A]:!0},t)}function I(e,t){return e instanceof Error&&A in e&&(null==t||!!(e.type&t))}!function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"}(L||(L={}));const z="[^/]+?",T={sensitive:!1,strict:!1,start:!0,end:!0},R=/[.+*?^${}()[\]/\\]/g;function $(e,t){let n=0;for(;n<e.length&&n<t.length;){const r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?1===e.length&&80===e[0]?-1:1:e.length>t.length?1===t.length&&80===t[0]?1:-1:0}function P(e,t){let n=0;const r=e.score,o=t.score;for(;n<r.length&&n<o.length;){const e=$(r[n],o[n]);if(e)return e;n++}if(1===Math.abs(o.length-r.length)){if(F(r))return 1;if(F(o))return-1}return o.length-r.length}function F(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const H={type:0,value:""},D=/[a-zA-Z0-9_]/;function V(e,t,n){const r=function(e,t){const n=i({},T,t),r=[];let o=n.start?"^":"";const a=[];for(const t of e){const e=t.length?[]:[90];n.strict&&!t.length&&(o+="/");for(let r=0;r<t.length;r++){const i=t[r];let s=40+(n.sensitive?.25:0);if(0===i.type)r||(o+="/"),o+=i.value.replace(R,"\\$&"),s+=40;else if(1===i.type){const{value:e,repeatable:n,optional:c,regexp:l}=i;a.push({name:e,repeatable:n,optional:c});const u=l||z;if(u!==z){s+=10;try{new RegExp(`(${u})`)}catch(t){throw new Error(`Invalid custom RegExp for param "${e}" (${u}): `+t.message)}}let f=n?`((?:${u})(?:/(?:${u}))*)`:`(${u})`;r||(f=c&&t.length<2?`(?:/${f})`:"/"+f),c&&(f+="?"),o+=f,s+=20,c&&(s+=-8),n&&(s+=-20),".*"===u&&(s+=-50)}e.push(s)}r.push(e)}if(n.strict&&n.end){const e=r.length-1;r[e][r[e].length-1]+=.7000000000000001}n.strict||(o+="/?"),n.end?o+="$":n.strict&&(o+="(?:/|$)");const s=new RegExp(o,n.sensitive?"":"i");return{re:s,score:r,keys:a,parse:function(e){const t=e.match(s),n={};if(!t)return null;for(let e=1;e<t.length;e++){const r=t[e]||"",o=a[e-1];n[o.name]=r&&o.repeatable?r.split("/"):r}return n},stringify:function(t){let n="",r=!1;for(const o of e){r&&n.endsWith("/")||(n+="/"),r=!1;for(const e of o)if(0===e.type)n+=e.value;else if(1===e.type){const{value:a,repeatable:i,optional:s}=e,c=a in t?t[a]:"";if(l(c)&&!i)throw new Error(`Provided param "${a}" is an array but it is not repeatable (* or + modifiers)`);const u=l(c)?c.join("/"):c;if(!u){if(!s)throw new Error(`Missing required param "${a}"`);o.length<2&&(n.endsWith("/")?n=n.slice(0,-1):r=!0)}n+=u}}return n||"/"}}}(function(e){if(!e)return[[]];if("/"===e)return[[H]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(e){throw new Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n;const o=[];let a;function i(){a&&o.push(a),a=[]}let s,c=0,l="",u="";function f(){l&&(0===n?a.push({type:0,value:l}):1===n||2===n||3===n?(a.length>1&&("*"===s||"+"===s)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:"*"===s||"+"===s,optional:"*"===s||"?"===s})):t("Invalid state to consume buffer"),l="")}function h(){l+=s}for(;c<e.length;)if(s=e[c++],"\\"!==s||2===n)switch(n){case 0:"/"===s?(l&&f(),i()):":"===s?(f(),n=1):h();break;case 4:h(),n=r;break;case 1:"("===s?n=2:D.test(s)?h():(f(),n=0,"*"!==s&&"?"!==s&&"+"!==s&&c--);break;case 2:")"===s?"\\"==u[u.length-1]?u=u.slice(0,-1)+s:n=3:u+=s;break;case 3:f(),n=0,"*"!==s&&"?"!==s&&"+"!==s&&c--,u="";break;default:t("Unknown state")}else r=n,n=4;return 2===n&&t(`Unfinished custom RegExp for param "${l}"`),f(),i(),o}(e.path),n),o=i(r,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function U(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function B(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]="boolean"==typeof n?n:n[r];return t}function W(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Y(e){return e.reduce(((e,t)=>i(e,t.meta)),{})}function q(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function G(e,t){return t.children.some((t=>t===e||G(e,t)))}const Z=/#/g,X=/&/g,J=/\//g,K=/=/g,Q=/\?/g,ee=/\+/g,te=/%5B/g,ne=/%5D/g,re=/%5E/g,oe=/%60/g,ae=/%7B/g,ie=/%7C/g,se=/%7D/g,ce=/%20/g;function le(e){return encodeURI(""+e).replace(ie,"|").replace(te,"[").replace(ne,"]")}function ue(e){return le(e).replace(ee,"%2B").replace(ce,"+").replace(Z,"%23").replace(X,"%26").replace(oe,"`").replace(ae,"{").replace(se,"}").replace(re,"^")}function fe(e){return null==e?"":function(e){return le(e).replace(Z,"%23").replace(Q,"%3F")}(e).replace(J,"%2F")}function he(e){try{return decodeURIComponent(""+e)}catch(e){}return""+e}function pe(e){const t={};if(""===e||"?"===e)return t;const n=("?"===e[0]?e.slice(1):e).split("&");for(let e=0;e<n.length;++e){const r=n[e].replace(ee," "),o=r.indexOf("="),a=he(o<0?r:r.slice(0,o)),i=o<0?null:he(r.slice(o+1));if(a in t){let e=t[a];l(e)||(e=t[a]=[e]),e.push(i)}else t[a]=i}return t}function de(e){let t="";for(let n in e){const r=e[n];(n=ue(n).replace(K,"%3D"),null!=r)?(l(r)?r.map((e=>e&&ue(e))):[r&&ue(r)]).forEach((e=>{void 0!==e&&(t+=(t.length?"&":"")+n,null!=e&&(t+="="+e))})):void 0!==r&&(t+=(t.length?"&":"")+n)}return t}function me(e){const t={};for(const n in e){const r=e[n];void 0!==r&&(t[n]=l(r)?r.map((e=>null==e?null:""+e)):null==r?r:""+r)}return t}const ve=Symbol(""),ge=Symbol(""),be=Symbol(""),ye=Symbol(""),_e=Symbol("");function we(){let e=[];return{add:function(t){return e.push(t),()=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)}},list:()=>e,reset:function(){e=[]}}}function xe(e,t,n,r,o){const a=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise(((i,s)=>{const c=e=>{var c;!1===e?s(M(4,{from:n,to:t})):e instanceof Error?s(e):"string"==typeof(c=e)||c&&"object"==typeof c?s(M(2,{from:t,to:e})):(a&&r.enterCallbacks[o]===a&&"function"==typeof e&&a.push(e),i())},l=e.call(r&&r.instances[o],t,n,c);let u=Promise.resolve(l);e.length<3&&(u=u.then(c)),u.catch((e=>s(e)))}))}function ke(e,t,n,r){const o=[];for(const i of e)for(const e in i.components){let s=i.components[e];if("beforeRouteEnter"===t||i.instances[e])if("object"==typeof(a=s)||"displayName"in a||"props"in a||"__vccOpts"in a){const a=(s.__vccOpts||s)[t];a&&o.push(xe(a,n,r,i,e))}else{let a=s();o.push((()=>a.then((o=>{if(!o)return Promise.reject(new Error(`Couldn't resolve component "${e}" at "${i.path}"`));const a=(s=o).__esModule||"Module"===s[Symbol.toStringTag]?o.default:o;var s;i.components[e]=a;const c=(a.__vccOpts||a)[t];return c&&xe(c,n,r,i,e)()}))))}}var a;return o}function Se(e){const t=(0,r.f3)(be),n=(0,r.f3)(ye),a=(0,r.Fl)((()=>t.resolve((0,o.SU)(e.to)))),i=(0,r.Fl)((()=>{const{matched:e}=a.value,{length:t}=e,r=e[t-1],o=n.matched;if(!r||!o.length)return-1;const i=o.findIndex(p.bind(null,r));if(i>-1)return i;const s=Oe(e[t-2]);return t>1&&Oe(r)===s&&o[o.length-1].path!==s?o.findIndex(p.bind(null,e[t-2])):i})),s=(0,r.Fl)((()=>i.value>-1&&function(e,t){for(const n in t){const r=t[n],o=e[n];if("string"==typeof r){if(r!==o)return!1}else if(!l(o)||o.length!==r.length||r.some(((e,t)=>e!==o[t])))return!1}return!0}(n.params,a.value.params))),u=(0,r.Fl)((()=>i.value>-1&&i.value===n.matched.length-1&&d(n.params,a.value.params)));return{route:a,href:(0,r.Fl)((()=>a.value.href)),isActive:s,isExactActive:u,navigate:function(n={}){return function(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||e.defaultPrevented||void 0!==e.button&&0!==e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}(n)?t[(0,o.SU)(e.replace)?"replace":"push"]((0,o.SU)(e.to)).catch(c):Promise.resolve()}}}const Ee=(0,r.aZ)({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Se,setup(e,{slots:t}){const n=(0,o.qj)(Se(e)),{options:a}=(0,r.f3)(be),i=(0,r.Fl)((()=>({[Ce(e.activeClass,a.linkActiveClass,"router-link-active")]:n.isActive,[Ce(e.exactActiveClass,a.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive})));return()=>{const o=t.default&&t.default(n);return e.custom?o:(0,r.h)("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},o)}}});function Oe(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ce=(e,t,n)=>null!=e?e:null!=t?t:n;function Ne(e,t){if(!e)return null;const n=e(t);return 1===n.length?n[0]:n}const je=(0,r.aZ)({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const a=(0,r.f3)(_e),s=(0,r.Fl)((()=>e.route||a.value)),c=(0,r.f3)(ge,0),l=(0,r.Fl)((()=>{let e=(0,o.SU)(c);const{matched:t}=s.value;let n;for(;(n=t[e])&&!n.components;)e++;return e})),u=(0,r.Fl)((()=>s.value.matched[l.value]));(0,r.JJ)(ge,(0,r.Fl)((()=>l.value+1))),(0,r.JJ)(ve,u),(0,r.JJ)(_e,s);const f=(0,o.iH)();return(0,r.YP)((()=>[f.value,u.value,e.name]),(([e,t,n],[r,o,a])=>{t&&(t.instances[n]=e,o&&o!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=o.leaveGuards),t.updateGuards.size||(t.updateGuards=o.updateGuards))),!e||!t||o&&p(t,o)&&r||(t.enterCallbacks[n]||[]).forEach((t=>t(e)))}),{flush:"post"}),()=>{const o=s.value,a=e.name,c=u.value,l=c&&c.components[a];if(!l)return Ne(n.default,{Component:l,route:o});const h=c.props[a],p=h?!0===h?o.params:"function"==typeof h?h(o):h:null,d=(0,r.h)(l,i({},p,t,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(c.instances[a]=null)},ref:f}));return Ne(n.default,{Component:d,route:o})||d}}});function Ae(e){const t=function(e,t){const n=[],r=new Map;function o(e,n,r){const l=!r,u=function(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:B(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}(e);u.aliasOf=r&&r.record;const f=q(t,e),h=[u];if("alias"in e){const t="string"==typeof e.alias?[e.alias]:e.alias;for(const e of t)h.push(i({},u,{components:r?r.record.components:u.components,path:e,aliasOf:r?r.record:u}))}let p,d;for(const t of h){const{path:i}=t;if(n&&"/"!==i[0]){const e=n.record.path,r="/"===e[e.length-1]?"":"/";t.path=n.record.path+(i&&r+i)}if(p=V(t,n,f),r?r.alias.push(p):(d=d||p,d!==p&&d.alias.push(p),l&&e.name&&!W(p)&&a(e.name)),u.children){const e=u.children;for(let t=0;t<e.length;t++)o(e[t],p,r&&r.children[t])}r=r||p,(p.record.components&&Object.keys(p.record.components).length||p.record.name||p.record.redirect)&&s(p)}return d?()=>{a(d)}:c}function a(e){if(N(e)){const t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(a),t.alias.forEach(a))}else{const t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(a),e.alias.forEach(a))}}function s(e){let t=0;for(;t<n.length&&P(e,n[t])>=0&&(e.record.path!==n[t].record.path||!G(e,n[t]));)t++;n.splice(t,0,e),e.record.name&&!W(e)&&r.set(e.record.name,e)}return t=q({strict:!1,end:!0,sensitive:!1},t),e.forEach((e=>o(e))),{addRoute:o,resolve:function(e,t){let o,a,s,c={};if("name"in e&&e.name){if(o=r.get(e.name),!o)throw M(1,{location:e});s=o.record.name,c=i(U(t.params,o.keys.filter((e=>!e.optional)).map((e=>e.name))),e.params&&U(e.params,o.keys.map((e=>e.name)))),a=o.stringify(c)}else if("path"in e)a=e.path,o=n.find((e=>e.re.test(a))),o&&(c=o.parse(a),s=o.record.name);else{if(o=t.name?r.get(t.name):n.find((e=>e.re.test(t.path))),!o)throw M(1,{location:e,currentLocation:t});s=o.record.name,c=i({},t.params,e.params),a=o.stringify(c)}const l=[];let u=o;for(;u;)l.unshift(u.record),u=u.parent;return{name:s,path:a,params:c,matched:l,meta:Y(l)}},removeRoute:a,getRoutes:function(){return n},getRecordMatcher:function(e){return r.get(e)}}}(e.routes,e),n=e.parseQuery||pe,u=e.stringifyQuery||de,h=e.history,m=we(),v=we(),b=we(),y=(0,o.XI)(j);let _=j;a&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const S=s.bind(null,(e=>""+e)),E=s.bind(null,fe),O=s.bind(null,he);function C(e,r){if(r=i({},r||y.value),"string"==typeof e){const o=f(n,e,r.path),a=t.resolve({path:o.path},r),s=h.createHref(o.fullPath);return i(o,a,{params:O(a.params),hash:he(o.hash),redirectedFrom:void 0,href:s})}let o;if("path"in e)o=i({},e,{path:f(n,e.path,r.path).path});else{const t=i({},e.params);for(const e in t)null==t[e]&&delete t[e];o=i({},e,{params:E(e.params)}),r.params=E(r.params)}const a=t.resolve(o,r),s=e.hash||"";a.params=S(O(a.params));const c=function(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}(u,i({},e,{hash:(l=s,le(l).replace(ae,"{").replace(se,"}").replace(re,"^")),path:a.path}));var l;const p=h.createHref(c);return i({fullPath:c,hash:s,query:u===de?me(e.query):e.query||{}},a,{redirectedFrom:void 0,href:p})}function A(e){return"string"==typeof e?f(n,e,y.value.path):i({},e)}function L(e,t){if(_!==e)return M(8,{from:t,to:e})}function z(e){return R(e)}function T(e){const t=e.matched[e.matched.length-1];if(t&&t.redirect){const{redirect:n}=t;let r="function"==typeof n?n(e):n;return"string"==typeof r&&(r=r.includes("?")||r.includes("#")?r=A(r):{path:r},r.params={}),i({query:e.query,hash:e.hash,params:"path"in r?{}:e.params},r)}}function R(e,t){const n=_=C(e),r=y.value,o=e.state,a=e.force,s=!0===e.replace,c=T(n);if(c)return R(i(A(c),{state:"object"==typeof c?i({},o,c.state):o,force:a,replace:s}),t||n);const l=n;let f;return l.redirectedFrom=t,!a&&function(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&p(t.matched[r],n.matched[o])&&d(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}(u,r,n)&&(f=M(16,{to:l,from:r}),te(r,r,!0,!1)),(f?Promise.resolve(f):F(l,r)).catch((e=>I(e)?I(e,2)?e:ee(e):Q(e,l,r))).then((e=>{if(e){if(I(e,2))return R(i({replace:s},A(e.to),{state:"object"==typeof e.to?i({},o,e.to.state):o,force:a}),t||l)}else e=D(l,r,!0,s,o);return H(l,r,e),e}))}function $(e,t){const n=L(e,t);return n?Promise.reject(n):Promise.resolve()}function F(e,t){let n;const[r,o,a]=function(e,t){const n=[],r=[],o=[],a=Math.max(t.matched.length,e.matched.length);for(let i=0;i<a;i++){const a=t.matched[i];a&&(e.matched.find((e=>p(e,a)))?r.push(a):n.push(a));const s=e.matched[i];s&&(t.matched.find((e=>p(e,s)))||o.push(s))}return[n,r,o]}(e,t);n=ke(r.reverse(),"beforeRouteLeave",e,t);for(const o of r)o.leaveGuards.forEach((r=>{n.push(xe(r,e,t))}));const i=$.bind(null,e,t);return n.push(i),Le(n).then((()=>{n=[];for(const r of m.list())n.push(xe(r,e,t));return n.push(i),Le(n)})).then((()=>{n=ke(o,"beforeRouteUpdate",e,t);for(const r of o)r.updateGuards.forEach((r=>{n.push(xe(r,e,t))}));return n.push(i),Le(n)})).then((()=>{n=[];for(const r of e.matched)if(r.beforeEnter&&!t.matched.includes(r))if(l(r.beforeEnter))for(const o of r.beforeEnter)n.push(xe(o,e,t));else n.push(xe(r.beforeEnter,e,t));return n.push(i),Le(n)})).then((()=>(e.matched.forEach((e=>e.enterCallbacks={})),n=ke(a,"beforeRouteEnter",e,t),n.push(i),Le(n)))).then((()=>{n=[];for(const r of v.list())n.push(xe(r,e,t));return n.push(i),Le(n)})).catch((e=>I(e,8)?e:Promise.reject(e)))}function H(e,t,n){for(const r of b.list())r(e,t,n)}function D(e,t,n,r,o){const s=L(e,t);if(s)return s;const c=t===j,l=a?history.state:{};n&&(r||c?h.replace(e.fullPath,i({scroll:c&&l&&l.scroll},o)):h.push(e.fullPath,o)),y.value=e,te(e,t,n,c),ee()}let Z;let X,J=we(),K=we();function Q(e,t,n){ee(e);const r=K.list();return r.length?r.forEach((r=>r(e,t,n))):console.error(e),Promise.reject(e)}function ee(e){return X||(X=!e,Z||(Z=h.listen(((e,t,n)=>{if(!ce.listening)return;const r=C(e),o=T(r);if(o)return void R(i(o,{replace:!0}),r).catch(c);_=r;const s=y.value;var l,u;a&&(l=x(s.fullPath,n.delta),u=w(),k.set(l,u)),F(r,s).catch((e=>I(e,12)?e:I(e,2)?(R(e.to,r).then((e=>{I(e,20)&&!n.delta&&n.type===g.pop&&h.go(-1,!1)})).catch(c),Promise.reject()):(n.delta&&h.go(-n.delta,!1),Q(e,r,s)))).then((e=>{(e=e||D(r,s,!1))&&(n.delta&&!I(e,8)?h.go(-n.delta,!1):n.type===g.pop&&I(e,20)&&h.go(-1,!1)),H(r,s,e)})).catch(c)}))),J.list().forEach((([t,n])=>e?n(e):t())),J.reset()),e}function te(t,n,o,i){const{scrollBehavior:s}=e;if(!a||!s)return Promise.resolve();const c=!o&&function(e){const t=k.get(e);return k.delete(e),t}(x(t.fullPath,0))||(i||!o)&&history.state&&history.state.scroll||null;return(0,r.Y3)().then((()=>s(t,n,c))).then((e=>e&&function(e){let t;if("el"in e){const n=e.el,r="string"==typeof n&&n.startsWith("#"),o="string"==typeof n?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=function(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(null!=t.left?t.left:window.pageXOffset,null!=t.top?t.top:window.pageYOffset)}(e))).catch((e=>Q(e,t,n)))}const ne=e=>h.go(e);let oe;const ie=new Set,ce={currentRoute:y,listening:!0,addRoute:function(e,n){let r,o;return N(e)?(r=t.getRecordMatcher(e),o=n):o=e,t.addRoute(o,r)},removeRoute:function(e){const n=t.getRecordMatcher(e);n&&t.removeRoute(n)},hasRoute:function(e){return!!t.getRecordMatcher(e)},getRoutes:function(){return t.getRoutes().map((e=>e.record))},resolve:C,options:e,push:z,replace:function(e){return z(i(A(e),{replace:!0}))},go:ne,back:()=>ne(-1),forward:()=>ne(1),beforeEach:m.add,beforeResolve:v.add,afterEach:b.add,onError:K.add,isReady:function(){return X&&y.value!==j?Promise.resolve():new Promise(((e,t)=>{J.add([e,t])}))},install(e){e.component("RouterLink",Ee),e.component("RouterView",je),e.config.globalProperties.$router=this,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>(0,o.SU)(y)}),a&&!oe&&y.value===j&&(oe=!0,z(h.location).catch((e=>{})));const t={};for(const e in j)t[e]=(0,r.Fl)((()=>y.value[e]));e.provide(be,this),e.provide(ye,(0,o.qj)(t)),e.provide(_e,y);const n=e.unmount;ie.add(e),e.unmount=function(){ie.delete(e),ie.size<1&&(_=j,Z&&Z(),Z=null,y.value=j,oe=!1,X=!1),n()}}};return ce}function Le(e){return e.reduce(((e,t)=>e.then((()=>t()))),Promise.resolve())}},42570:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>P});var r=n(2262),o=n(66252),a=n(3577);let i;function s(){s.init||(s.init=!0,i=-1!==function(){var e=window.navigator.userAgent,t=e.indexOf("MSIE ");if(t>0)return parseInt(e.substring(t+5,e.indexOf(".",t)),10);if(e.indexOf("Trident/")>0){var n=e.indexOf("rv:");return parseInt(e.substring(n+3,e.indexOf(".",n)),10)}var r=e.indexOf("Edge/");return r>0?parseInt(e.substring(r+5,e.indexOf(".",r)),10):-1}())}var c={name:"ResizeObserver",props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:["notify"],mounted(){s(),(0,o.Y3)((()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()}));const e=document.createElement("object");this._resizeObject=e,e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex",-1),e.onload=this.addResizeHandlers,e.type="text/html",i&&this.$el.appendChild(e),e.data="about:blank",i||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit("notify",{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener("resize",this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!i&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener("resize",this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}};const l=(0,o.HX)("data-v-b329ee4c");(0,o.dD)("data-v-b329ee4c");const u={class:"resize-observer",tabindex:"-1"};(0,o.Cn)();const f=l(((e,t,n,r,a,i)=>((0,o.wg)(),(0,o.j4)("div",u))));function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function v(e,t){if(e===t)return!0;if("object"===h(e)){for(var n in e)if(!v(e[n],t[n]))return!1;return!0}return!1}c.render=f,c.__scopeId="data-v-b329ee4c",c.__file="src/components/ResizeObserver.vue";var g=function(){function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.el=t,this.observer=null,this.frozen=!1,this.createObserver(n,r)}var t,n;return t=e,n=[{key:"createObserver",value:function(e,t){var n=this;if(this.observer&&this.destroyObserver(),!this.frozen){var r;if(this.options="function"==typeof(r=e)?{callback:r}:r,this.callback=function(e,t){n.options.callback(e,t),e&&n.options.once&&(n.frozen=!0,n.destroyObserver())},this.callback&&this.options.throttle){var a=(this.options.throttleOptions||{}).leading;this.callback=function(e,t){var n,r,o,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=function(i){for(var s=arguments.length,c=new Array(s>1?s-1:0),l=1;l<s;l++)c[l-1]=arguments[l];if(o=c,!n||i!==r){var u=a.leading;"function"==typeof u&&(u=u(i,r)),n&&i===r||!u||e.apply(void 0,[i].concat(d(o))),r=i,clearTimeout(n),n=setTimeout((function(){e.apply(void 0,[i].concat(d(o))),n=0}),t)}};return i._clear=function(){clearTimeout(n),n=null},i}(this.callback,this.options.throttle,{leading:function(e){return"both"===a||"visible"===a&&e||"hidden"===a&&!e}})}this.oldResult=void 0,this.observer=new IntersectionObserver((function(e){var t=e[0];if(e.length>1){var r=e.find((function(e){return e.isIntersecting}));r&&(t=r)}if(n.callback){var o=t.isIntersecting&&t.intersectionRatio>=n.threshold;if(o===n.oldResult)return;n.oldResult=o,n.callback(o,t)}}),this.options.intersection),(0,o.Y3)((function(){n.observer&&n.observer.observe(n.el)}))}}},{key:"destroyObserver",value:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:"threshold",get:function(){return this.options.intersection&&"number"==typeof this.options.intersection.threshold?this.options.intersection.threshold:0}}],n&&p(t.prototype,n),e}();function b(e,t,n){var r=t.value;if(r)if("undefined"==typeof IntersectionObserver)console.warn("[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill");else{var o=new g(e,r,n);e._vue_visibilityState=o}}function y(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var _={beforeMount:b,updated:function(e,t,n){var r=t.value;if(!v(r,t.oldValue)){var o=e._vue_visibilityState;r?o?o.createObserver(r,n):b(e,{value:r},n):y(e)}},unmounted:y},w={itemsLimit:1e3},x=/(auto|scroll)/;function k(e,t){return null===e.parentNode?t:k(e.parentNode,t.concat([e]))}var S=function(e,t){return getComputedStyle(e,null).getPropertyValue(t)},E=function(e){return x.test(function(e){return S(e,"overflow")+S(e,"overflow-y")+S(e,"overflow-x")}(e))};function O(e){if(e instanceof HTMLElement||e instanceof SVGElement){for(var t=k(e.parentNode,[]),n=0;n<t.length;n+=1)if(E(t[n]))return t[n];return document.scrollingElement||document.documentElement}}function C(e){return C="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},C(e)}var N={items:{type:Array,required:!0},keyField:{type:String,default:"id"},direction:{type:String,default:"vertical",validator:function(e){return["vertical","horizontal"].includes(e)}},listTag:{type:String,default:"div"},itemTag:{type:String,default:"div"}};function j(){return this.items.length&&"object"!==C(this.items[0])}var A=!1;if("undefined"!=typeof window){A=!1;try{var L=Object.defineProperty({},"passive",{get:function(){A=!0}});window.addEventListener("test",null,L)}catch(e){}}let M=0;var I={name:"RecycleScroller",components:{ResizeObserver:c},directives:{ObserveVisibility:_},props:{...N,itemSize:{type:Number,default:null},gridItems:{type:Number,default:void 0},itemSecondarySize:{type:Number,default:void 0},minItemSize:{type:[Number,String],default:null},sizeField:{type:String,default:"size"},typeField:{type:String,default:"type"},buffer:{type:Number,default:200},pageMode:{type:Boolean,default:!1},prerender:{type:Number,default:0},emitUpdate:{type:Boolean,default:!1},updateInterval:{type:Number,default:0},skipHover:{type:Boolean,default:!1},listTag:{type:String,default:"div"},itemTag:{type:String,default:"div"},listClass:{type:[String,Object,Array],default:""},itemClass:{type:[String,Object,Array],default:""}},emits:["resize","visible","hidden","update","scroll-start","scroll-end"],data:()=>({pool:[],totalSize:0,ready:!1,hoverKey:null}),computed:{sizes(){if(null===this.itemSize){const e={"-1":{accumulator:0}},t=this.items,n=this.sizeField,r=this.minItemSize;let o,a=1e4,i=0;for(let s=0,c=t.length;s<c;s++)o=t[s][n]||r,o<a&&(a=o),i+=o,e[s]={accumulator:i,size:o};return this.$_computedMinItemSize=a,e}return[]},simpleArray:j,itemIndexByKey(){const{keyField:e,items:t}=this,n={};for(let r=0,o=t.length;r<o;r++)n[t[r][e]]=r;return n}},watch:{items(){this.updateVisibleItems(!0)},pageMode(){this.applyPageMode(),this.updateVisibleItems(!1)},sizes:{handler(){this.updateVisibleItems(!1)},deep:!0},gridItems(){this.updateVisibleItems(!0)},itemSecondarySize(){this.updateVisibleItems(!0)}},created(){this.$_startIndex=0,this.$_endIndex=0,this.$_views=new Map,this.$_unusedViews=new Map,this.$_scrollDirty=!1,this.$_lastUpdateScrollPosition=0,this.prerender&&(this.$_prerender=!0,this.updateVisibleItems(!1)),this.gridItems&&!this.itemSize&&console.error("[vue-recycle-scroller] You must provide an itemSize when using gridItems")},mounted(){this.applyPageMode(),this.$nextTick((()=>{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0}))},activated(){const e=this.$_lastUpdateScrollPosition;"number"==typeof e&&this.$nextTick((()=>{this.scrollToPosition(e)}))},beforeUnmount(){this.removeListeners()},methods:{addView(e,t,n,o,a){const i=(0,r.Xl)({id:M++,index:t,used:!0,key:o,type:a}),s=(0,r.Um)({item:n,position:0,nr:i});return e.push(s),s},unuseView(e,t=!1){const n=this.$_unusedViews,r=e.nr.type;let o=n.get(r);o||(o=[],n.set(r,o)),o.push(e),t||(e.nr.used=!1,e.position=-9999)},handleResize(){this.$emit("resize"),this.ready&&this.updateVisibleItems(!1)},handleScroll(e){if(!this.$_scrollDirty){if(this.$_scrollDirty=!0,this.$_updateTimeout)return;const e=()=>requestAnimationFrame((()=>{this.$_scrollDirty=!1;const{continuous:e}=this.updateVisibleItems(!1,!0);e||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,this.updateInterval+100))}));e(),this.updateInterval&&(this.$_updateTimeout=setTimeout((()=>{this.$_updateTimeout=0,this.$_scrollDirty&&e()}),this.updateInterval))}},handleVisibilityChange(e,t){this.ready&&(e||0!==t.boundingClientRect.width||0!==t.boundingClientRect.height?(this.$emit("visible"),requestAnimationFrame((()=>{this.updateVisibleItems(!1)}))):this.$emit("hidden"))},updateVisibleItems(e,t=!1){const n=this.itemSize,r=this.gridItems||1,o=this.itemSecondarySize||n,a=this.$_computedMinItemSize,i=this.typeField,s=this.simpleArray?null:this.keyField,c=this.items,l=c.length,u=this.sizes,f=this.$_views,h=this.$_unusedViews,p=this.pool,d=this.itemIndexByKey;let m,v,g,b,y,_;if(l)if(this.$_prerender)m=b=0,v=y=Math.min(this.prerender,c.length),g=null;else{const e=this.getScroll();if(t){let t=e.start-this.$_lastUpdateScrollPosition;if(t<0&&(t=-t),null===n&&t<a||t<n)return{continuous:!0}}this.$_lastUpdateScrollPosition=e.start;const o=this.buffer;e.start-=o,e.end+=o;let i=0;if(this.$refs.before&&(i=this.$refs.before.scrollHeight,e.start-=i),this.$refs.after){const t=this.$refs.after.scrollHeight;e.end+=t}if(null===n){let t,n,r=0,o=l-1,a=~~(l/2);do{n=a,t=u[a].accumulator,t<e.start?r=a:a<l-1&&u[a+1].accumulator>e.start&&(o=a),a=~~((r+o)/2)}while(a!==n);for(a<0&&(a=0),m=a,g=u[l-1].accumulator,v=a;v<l&&u[v].accumulator<e.end;v++);for(-1===v?v=c.length-1:(v++,v>l&&(v=l)),b=m;b<l&&i+u[b].accumulator<e.start;b++);for(y=b;y<l&&i+u[y].accumulator<e.end;y++);}else m=~~(e.start/n*r),m-=m%r,v=Math.ceil(e.end/n*r),b=Math.max(0,Math.floor((e.start-i)/n*r)),y=Math.floor((e.end-i)/n*r),m<0&&(m=0),v>l&&(v=l),b<0&&(b=0),y>l&&(y=l),g=Math.ceil(l/r)*n}else m=v=b=y=g=0;v-m>w.itemsLimit&&this.itemsLimitError(),this.totalSize=g;const x=m<=this.$_endIndex&&v>=this.$_startIndex;if(x)for(let t=0,n=p.length;t<n;t++)_=p[t],_.nr.used&&(e&&(_.nr.index=d[_.item[s]]),(null==_.nr.index||_.nr.index<m||_.nr.index>=v)&&this.unuseView(_));const k=x?null:new Map;let S,E,O;for(let e=m;e<v;e++){S=c[e];const t=s?S[s]:S;if(null==t)throw new Error(`Key is ${t} on item (keyField is '${s}')`);if(_=f.get(t),!n&&!u[e].size){_&&this.unuseView(_);continue}E=S[i];let a=h.get(E),l=!1;if(_){if(!_.nr.used&&(_.nr.used=!0,l=!0,a)){const e=a.indexOf(_);-1!==e&&a.splice(e,1)}}else x?_=a&&a.length?a.pop():this.addView(p,e,S,t,E):(O=k.get(E)||0,(!a||O>=a.length)&&(_=this.addView(p,e,S,t,E),this.unuseView(_,!0),a=h.get(E)),_=a[O],k.set(E,O+1)),f.delete(_.nr.key),_.nr.used=!0,_.nr.index=e,_.nr.key=t,_.nr.type=E,f.set(t,_),l=!0;_.item=S,l&&(e===c.length-1&&this.$emit("scroll-end"),0===e&&this.$emit("scroll-start")),null===n?(_.position=u[e-1].accumulator,_.offset=0):(_.position=Math.floor(e/r)*n,_.offset=e%r*o)}return this.$_startIndex=m,this.$_endIndex=v,this.emitUpdate&&this.$emit("update",m,v,b,y),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,this.updateInterval+300),{continuous:x}},getListenerTarget(){let e=O(this.$el);return!window.document||e!==window.document.documentElement&&e!==window.document.body||(e=window),e},getScroll(){const{$el:e,direction:t}=this,n="vertical"===t;let r;if(this.pageMode){const t=e.getBoundingClientRect(),o=n?t.height:t.width;let a=-(n?t.top:t.left),i=n?window.innerHeight:window.innerWidth;a<0&&(i+=a,a=0),a+i>o&&(i=o-a),r={start:a,end:a+i}}else r=n?{start:e.scrollTop,end:e.scrollTop+e.clientHeight}:{start:e.scrollLeft,end:e.scrollLeft+e.clientWidth};return r},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener("scroll",this.handleScroll,!!A&&{passive:!0}),this.listenerTarget.addEventListener("resize",this.handleResize)},removeListeners(){this.listenerTarget&&(this.listenerTarget.removeEventListener("scroll",this.handleScroll),this.listenerTarget.removeEventListener("resize",this.handleResize),this.listenerTarget=null)},scrollToItem(e){let t;const n=this.gridItems||1;t=null===this.itemSize?e>0?this.sizes[e-1].accumulator:0:Math.floor(e/n)*this.itemSize,this.scrollToPosition(t)},scrollToPosition(e){const t="vertical"===this.direction?{scroll:"scrollTop",start:"top"}:{scroll:"scrollLeft",start:"left"};let n,r,o;if(this.pageMode){const a=O(this.$el),i="HTML"===a.tagName?0:a[t.scroll],s=a.getBoundingClientRect(),c=this.$el.getBoundingClientRect()[t.start]-s[t.start];n=a,r=t.scroll,o=e+i+c}else n=this.$el,r=t.scroll,o=e;n[r]=o},itemsLimitError(){throw setTimeout((()=>{console.log("It seems the scroller element isn't scrolling, so it tries to render all the items at once.","Scroller:",this.$el),console.log("Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.")})),new Error("Rendered items limit reached")},sortViews(){this.pool.sort(((e,t)=>e.nr.index-t.nr.index))}}};const z={key:0,ref:"before",class:"vue-recycle-scroller__slot"},T={key:1,ref:"after",class:"vue-recycle-scroller__slot"};I.render=function(e,t,n,r,i,s){const c=(0,o.up)("ResizeObserver"),l=(0,o.Q2)("observe-visibility");return(0,o.wy)(((0,o.wg)(),(0,o.iD)("div",{class:(0,a.C_)(["vue-recycle-scroller",{ready:i.ready,"page-mode":n.pageMode,[`direction-${e.direction}`]:!0}]),onScrollPassive:t[0]||(t[0]=(...e)=>s.handleScroll&&s.handleScroll(...e))},[e.$slots.before?((0,o.wg)(),(0,o.iD)("div",z,[(0,o.WI)(e.$slots,"before")],512)):(0,o.kq)("v-if",!0),((0,o.wg)(),(0,o.j4)((0,o.LL)(n.listTag),{ref:"wrapper",style:(0,a.j5)({["vertical"===e.direction?"minHeight":"minWidth"]:i.totalSize+"px"}),class:(0,a.C_)(["vue-recycle-scroller__item-wrapper",n.listClass])},{default:(0,o.w5)((()=>[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(i.pool,(t=>((0,o.wg)(),(0,o.j4)((0,o.LL)(n.itemTag),(0,o.dG)({key:t.nr.id,style:i.ready?{transform:`translate${"vertical"===e.direction?"Y":"X"}(${t.position}px) translate${"vertical"===e.direction?"X":"Y"}(${t.offset}px)`,width:n.gridItems?`${"vertical"===e.direction&&n.itemSecondarySize||n.itemSize}px`:void 0,height:n.gridItems?`${"horizontal"===e.direction&&n.itemSecondarySize||n.itemSize}px`:void 0}:null,class:["vue-recycle-scroller__item-view",[n.itemClass,{hover:!n.skipHover&&i.hoverKey===t.nr.key}]]},(0,o.mx)(n.skipHover?{}:{mouseenter:()=>{i.hoverKey=t.nr.key},mouseleave:()=>{i.hoverKey=null}})),{default:(0,o.w5)((()=>[(0,o.WI)(e.$slots,"default",{item:t.item,index:t.nr.index,active:t.nr.used})])),_:2},1040,["style","class"])))),128)),(0,o.WI)(e.$slots,"empty")])),_:3},8,["style","class"])),e.$slots.after?((0,o.wg)(),(0,o.iD)("div",T,[(0,o.WI)(e.$slots,"after")],512)):(0,o.kq)("v-if",!0),(0,o.Wm)(c,{onNotify:s.handleResize},null,8,["onNotify"])],34)),[[l,s.handleVisibilityChange]])},I.__file="src/components/RecycleScroller.vue";var R={name:"DynamicScroller",components:{RecycleScroller:I},provide(){return"undefined"!=typeof ResizeObserver&&(this.$_resizeObserver=new ResizeObserver((e=>{requestAnimationFrame((()=>{if(Array.isArray(e))for(const t of e)if(t.target&&t.target.$_vs_onResize){let e,n;if(t.borderBoxSize){const r=t.borderBoxSize[0];e=r.inlineSize,n=r.blockSize}else e=t.contentRect.width,n=t.contentRect.height;t.target.$_vs_onResize(t.target.$_vs_id,e,n)}}))}))),{vscrollData:this.vscrollData,vscrollParent:this,vscrollResizeObserver:this.$_resizeObserver}},inheritAttrs:!1,props:{...N,minItemSize:{type:[Number,String],required:!0}},emits:["resize","visible"],data(){return{vscrollData:{active:!0,sizes:{},keyField:this.keyField,simpleArray:!1}}},computed:{simpleArray:j,itemsWithSize(){const e=[],{items:t,keyField:n,simpleArray:r}=this,o=this.vscrollData.sizes,a=t.length;for(let i=0;i<a;i++){const a=t[i],s=r?i:a[n];let c=o[s];void 0!==c||this.$_undefinedMap[s]||(c=0),e.push({item:a,id:s,size:c})}return e}},watch:{items(){this.forceUpdate()},simpleArray:{handler(e){this.vscrollData.simpleArray=e},immediate:!0},direction(e){this.forceUpdate(!0)},itemsWithSize(e,t){const n=this.$el.scrollTop;let r=0,o=0;const a=Math.min(e.length,t.length);for(let i=0;i<a&&!(r>=n);i++)r+=t[i].size||this.minItemSize,o+=e[i].size||this.minItemSize;const i=o-r;0!==i&&(this.$el.scrollTop+=i)}},beforeCreate(){var e;this.$_updates=[],this.$_undefinedSizes=0,this.$_undefinedMap={},this.$_events={all:e=e||new Map,on:function(t,n){var r=e.get(t);r&&r.push(n)||e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&r.splice(r.indexOf(n)>>>0,1)},emit:function(t,n){(e.get(t)||[]).slice().map((function(e){e(n)})),(e.get("*")||[]).slice().map((function(e){e(t,n)}))}}},activated(){this.vscrollData.active=!0},deactivated(){this.vscrollData.active=!1},unmounted(){this.$_events.all.clear()},methods:{onScrollerResize(){this.$refs.scroller&&this.forceUpdate(),this.$emit("resize")},onScrollerVisible(){this.$_events.emit("vscroll:update",{force:!1}),this.$emit("visible")},forceUpdate(e=!1){(e||this.simpleArray)&&(this.vscrollData.sizes={}),this.$_events.emit("vscroll:update",{force:!0})},scrollToItem(e){const t=this.$refs.scroller;t&&t.scrollToItem(e)},getItemSize(e,t){const n=this.simpleArray?null!=t?t:this.items.indexOf(e):e[this.keyField];return this.vscrollData.sizes[n]||0},scrollToBottom(){if(this.$_scrollingToBottom)return;this.$_scrollingToBottom=!0;const e=this.$el;this.$nextTick((()=>{e.scrollTop=e.scrollHeight+5e3;const t=()=>{e.scrollTop=e.scrollHeight+5e3,requestAnimationFrame((()=>{e.scrollTop=e.scrollHeight+5e3,0===this.$_undefinedSizes?this.$_scrollingToBottom=!1:requestAnimationFrame(t)}))};requestAnimationFrame(t)}))}},render:function(e,t,n,r,i,s){const c=(0,o.up)("RecycleScroller");return(0,o.wg)(),(0,o.j4)(c,(0,o.dG)({ref:"scroller",items:s.itemsWithSize,"min-item-size":n.minItemSize,direction:e.direction,"key-field":"id","list-tag":e.listTag,"item-tag":e.itemTag},e.$attrs,{onResize:s.onScrollerResize,onVisible:s.onScrollerVisible}),{default:(0,o.w5)((({item:t,index:n,active:r})=>[(0,o.WI)(e.$slots,"default",(0,a.vs)((0,o.F4)({item:t.item,index:n,active:r,itemWithSize:t})))])),before:(0,o.w5)((()=>[(0,o.WI)(e.$slots,"before")])),after:(0,o.w5)((()=>[(0,o.WI)(e.$slots,"after")])),empty:(0,o.w5)((()=>[(0,o.WI)(e.$slots,"empty")])),_:3},16,["items","min-item-size","direction","list-tag","item-tag","onResize","onVisible"])},__file:"src/components/DynamicScroller.vue"},$={name:"DynamicScrollerItem",inject:["vscrollData","vscrollParent","vscrollResizeObserver"],props:{item:{required:!0},watchData:{type:Boolean,default:!1},active:{type:Boolean,required:!0},index:{type:Number,default:void 0},sizeDependencies:{type:[Array,Object],default:null},emitResize:{type:Boolean,default:!1},tag:{type:String,default:"div"}},emits:["resize"],computed:{id(){if(this.vscrollData.simpleArray)return this.index;if(this.vscrollData.keyField in this.item)return this.item[this.vscrollData.keyField];throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`)},size(){return this.vscrollData.sizes[this.id]||0},finalActive(){return this.active&&this.vscrollData.active}},watch:{watchData:"updateWatchData",id(e,t){if(this.$el.$_vs_id=this.id,this.size||this.onDataUpdate(),this.$_sizeObserved){const n=this.vscrollData.sizes[t],r=this.vscrollData.sizes[e];null!=n&&n!==r&&this.applySize(n)}},finalActive(e){this.size||(e?this.vscrollParent.$_undefinedMap[this.id]||(this.vscrollParent.$_undefinedSizes++,this.vscrollParent.$_undefinedMap[this.id]=!0):this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=!1)),this.vscrollResizeObserver?e?this.observeSize():this.unobserveSize():e&&this.$_pendingVScrollUpdate===this.id&&this.updateSize()}},created(){if(!this.$isServer&&(this.$_forceNextVScrollUpdate=null,this.updateWatchData(),!this.vscrollResizeObserver)){for(const e in this.sizeDependencies)this.$watch((()=>this.sizeDependencies[e]),this.onDataUpdate);this.vscrollParent.$_events.on("vscroll:update",this.onVscrollUpdate)}},mounted(){this.finalActive&&(this.updateSize(),this.observeSize())},beforeUnmount(){this.vscrollParent.$_events.off("vscroll:update",this.onVscrollUpdate),this.unobserveSize()},methods:{updateSize(){this.finalActive?this.$_pendingSizeUpdate!==this.id&&(this.$_pendingSizeUpdate=this.id,this.$_forceNextVScrollUpdate=null,this.$_pendingVScrollUpdate=null,this.computeSize(this.id)):this.$_forceNextVScrollUpdate=this.id},updateWatchData(){this.watchData&&!this.vscrollResizeObserver?this.$_watchData=this.$watch("item",(()=>{this.onDataUpdate()}),{deep:!0}):this.$_watchData&&(this.$_watchData(),this.$_watchData=null)},onVscrollUpdate({force:e}){!this.finalActive&&e&&(this.$_pendingVScrollUpdate=this.id),this.$_forceNextVScrollUpdate!==this.id&&!e&&this.size||this.updateSize()},onDataUpdate(){this.updateSize()},computeSize(e){this.$nextTick((()=>{if(this.id===e){const e=this.$el.offsetWidth,t=this.$el.offsetHeight;this.applyWidthHeight(e,t)}this.$_pendingSizeUpdate=null}))},applyWidthHeight(e,t){const n=~~("vertical"===this.vscrollParent.direction?t:e);n&&this.size!==n&&this.applySize(n)},applySize(e){this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=void 0),this.vscrollData.sizes[this.id]=e,this.emitResize&&this.$emit("resize",this.id)},observeSize(){this.vscrollResizeObserver&&(this.$_sizeObserved||(this.vscrollResizeObserver.observe(this.$el),this.$el.$_vs_id=this.id,this.$el.$_vs_onResize=this.onResize,this.$_sizeObserved=!0))},unobserveSize(){this.vscrollResizeObserver&&this.$_sizeObserved&&(this.vscrollResizeObserver.unobserve(this.$el),this.$el.$_vs_onResize=void 0,this.$_sizeObserved=!1)},onResize(e,t,n){this.id===e&&this.applyWidthHeight(t,n)}},render(){return(0,o.h)(this.tag,this.$slots.default())},__file:"src/components/DynamicScrollerItem.vue"},P={version:"2.0.0-beta.8",install:function(e,t){var n=Object.assign({},{installComponents:!0,componentsPrefix:""},t);for(var r in n)void 0!==n[r]&&(w[r]=n[r]);n.installComponents&&function(e,t){e.component("".concat(t,"recycle-scroller"),I),e.component("".concat(t,"RecycleScroller"),I),e.component("".concat(t,"dynamic-scroller"),R),e.component("".concat(t,"DynamicScroller"),R),e.component("".concat(t,"dynamic-scroller-item"),$),e.component("".concat(t,"DynamicScrollerItem"),$)}(e,n.componentsPrefix)}}},989:(e,t,n)=>{"use strict";n.d(t,{MT:()=>z,nv:()=>H,Se:()=>F,OI:()=>P,rn:()=>$});var r=n(66252),o=n(2262);function a(){return"undefined"!=typeof navigator&&"undefined"!=typeof window?window:void 0!==n.g?n.g:{}}const i="function"==typeof Proxy;let s,c;class l{constructor(e,t){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=t;const r={};if(e.settings)for(const t in e.settings){const n=e.settings[t];r[t]=n.defaultValue}const o=`__vue-devtools-plugin-settings__${e.id}`;let a=Object.assign({},r);try{const e=localStorage.getItem(o),t=JSON.parse(e);Object.assign(a,t)}catch(e){}this.fallbacks={getSettings:()=>a,setSettings(e){try{localStorage.setItem(o,JSON.stringify(e))}catch(e){}a=e},now:()=>{return void 0!==s||("undefined"!=typeof window&&window.performance?(s=!0,c=window.performance):void 0!==n.g&&(null===(e=n.g.perf_hooks)||void 0===e?void 0:e.performance)?(s=!0,c=n.g.perf_hooks.performance):s=!1),s?c.now():Date.now();var e}},t&&t.on("plugin:settings:set",((e,t)=>{e===this.plugin.id&&this.fallbacks.setSettings(t)})),this.proxiedOn=new Proxy({},{get:(e,t)=>this.target?this.target.on[t]:(...e)=>{this.onQueue.push({method:t,args:e})}}),this.proxiedTarget=new Proxy({},{get:(e,t)=>this.target?this.target[t]:"on"===t?this.proxiedOn:Object.keys(this.fallbacks).includes(t)?(...e)=>(this.targetQueue.push({method:t,args:e,resolve:()=>{}}),this.fallbacks[t](...e)):(...e)=>new Promise((n=>{this.targetQueue.push({method:t,args:e,resolve:n})}))})}async setRealTarget(e){this.target=e;for(const e of this.onQueue)this.target.on[e.method](...e.args);for(const e of this.targetQueue)e.resolve(await this.target[e.method](...e.args))}}function u(e,t){Object.keys(e).forEach((function(n){return t(e[n],n)}))}function f(e){return null!==e&&"object"==typeof e}function h(e,t,n){return t.indexOf(e)<0&&(n&&n.prepend?t.unshift(e):t.push(e)),function(){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}function p(e,t){e._actions=Object.create(null),e._mutations=Object.create(null),e._wrappedGetters=Object.create(null),e._modulesNamespaceMap=Object.create(null);var n=e.state;m(e,n,[],e._modules.root,!0),d(e,n,t)}function d(e,t,n){var a=e._state,i=e._scope;e.getters={},e._makeLocalGettersCache=Object.create(null);var s=e._wrappedGetters,c={},l={},f=(0,o.B)(!0);f.run((function(){u(s,(function(t,n){c[n]=function(e,t){return function(){return e(t)}}(t,e),l[n]=(0,r.Fl)((function(){return c[n]()})),Object.defineProperty(e.getters,n,{get:function(){return l[n].value},enumerable:!0})}))})),e._state=(0,o.qj)({data:t}),e._scope=f,e.strict&&function(e){(0,r.YP)((function(){return e._state.data}),(function(){}),{deep:!0,flush:"sync"})}(e),a&&n&&e._withCommit((function(){a.data=null})),i&&i.stop()}function m(e,t,n,r,o){var a=!n.length,i=e._modules.getNamespace(n);if(r.namespaced&&(e._modulesNamespaceMap[i],e._modulesNamespaceMap[i]=r),!a&&!o){var s=g(t,n.slice(0,-1)),c=n[n.length-1];e._withCommit((function(){s[c]=r.state}))}var l=r.context=function(e,t,n){var r=""===t,o={dispatch:r?e.dispatch:function(n,r,o){var a=b(n,r,o),i=a.payload,s=a.options,c=a.type;return s&&s.root||(c=t+c),e.dispatch(c,i)},commit:r?e.commit:function(n,r,o){var a=b(n,r,o),i=a.payload,s=a.options,c=a.type;s&&s.root||(c=t+c),e.commit(c,i,s)}};return Object.defineProperties(o,{getters:{get:r?function(){return e.getters}:function(){return v(e,t)}},state:{get:function(){return g(e.state,n)}}}),o}(e,i,n);r.forEachMutation((function(t,n){!function(e,t,n,r){(e._mutations[t]||(e._mutations[t]=[])).push((function(t){n.call(e,r.state,t)}))}(e,i+n,t,l)})),r.forEachAction((function(t,n){var r=t.root?n:i+n,o=t.handler||t;!function(e,t,n,r){(e._actions[t]||(e._actions[t]=[])).push((function(t){var o,a=n.call(e,{dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:e.getters,rootState:e.state},t);return(o=a)&&"function"==typeof o.then||(a=Promise.resolve(a)),e._devtoolHook?a.catch((function(t){throw e._devtoolHook.emit("vuex:error",t),t})):a}))}(e,r,o,l)})),r.forEachGetter((function(t,n){!function(e,t,n,r){e._wrappedGetters[t]||(e._wrappedGetters[t]=function(e){return n(r.state,r.getters,e.state,e.getters)})}(e,i+n,t,l)})),r.forEachChild((function(r,a){m(e,t,n.concat(a),r,o)}))}function v(e,t){if(!e._makeLocalGettersCache[t]){var n={},r=t.length;Object.keys(e.getters).forEach((function(o){if(o.slice(0,r)===t){var a=o.slice(r);Object.defineProperty(n,a,{get:function(){return e.getters[o]},enumerable:!0})}})),e._makeLocalGettersCache[t]=n}return e._makeLocalGettersCache[t]}function g(e,t){return t.reduce((function(e,t){return e[t]}),e)}function b(e,t,n){return f(e)&&e.type&&(n=t,t=e,e=e.type),{type:e,payload:t,options:n}}var y="vuex:mutations",_="vuex:actions",w="vuex",x=0;function k(e,t){!function(e,t){const n=e,r=a(),o=a().__VUE_DEVTOOLS_GLOBAL_HOOK__,s=i&&n.enableEarlyProxy;if(!o||!r.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__&&s){const e=s?new l(n,o):null;(r.__VUE_DEVTOOLS_PLUGINS__=r.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:n,setupFn:t,proxy:e}),e&&t(e.proxiedTarget)}else o.emit("devtools-plugin:setup",e,t)}({id:"org.vuejs.vuex",app:e,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:["vuex bindings"]},(function(n){n.addTimelineLayer({id:y,label:"Vuex Mutations",color:S}),n.addTimelineLayer({id:_,label:"Vuex Actions",color:S}),n.addInspector({id:w,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),n.on.getInspectorTree((function(n){if(n.app===e&&n.inspectorId===w)if(n.filter){var r=[];N(r,t._modules.root,n.filter,""),n.rootNodes=r}else n.rootNodes=[C(t._modules.root,"")]})),n.on.getInspectorState((function(n){if(n.app===e&&n.inspectorId===w){var r=n.nodeId;v(t,r),n.state=function(e,t,n){t="root"===n?t:t[n];var r=Object.keys(t),o={state:Object.keys(e.state).map((function(t){return{key:t,editable:!0,value:e.state[t]}}))};if(r.length){var a=function(e){var t={};return Object.keys(e).forEach((function(n){var r=n.split("/");if(r.length>1){var o=t,a=r.pop();r.forEach((function(e){o[e]||(o[e]={_custom:{value:{},display:e,tooltip:"Module",abstract:!0}}),o=o[e]._custom.value})),o[a]=j((function(){return e[n]}))}else t[n]=j((function(){return e[n]}))})),t}(t);o.getters=Object.keys(a).map((function(e){return{key:e.endsWith("/")?O(e):e,editable:!1,value:j((function(){return a[e]}))}}))}return o}((o=t._modules,(i=(a=r).split("/").filter((function(e){return e}))).reduce((function(e,t,n){var r=e[t];if(!r)throw new Error('Missing module "'+t+'" for path "'+a+'".');return n===i.length-1?r:r._children}),"root"===a?o:o.root._children)),"root"===r?t.getters:t._makeLocalGettersCache,r)}var o,a,i})),n.on.editInspectorState((function(n){if(n.app===e&&n.inspectorId===w){var r=n.nodeId,o=n.path;"root"!==r&&(o=r.split("/").filter(Boolean).concat(o)),t._withCommit((function(){n.set(t._state.data,o,n.state.value)}))}})),t.subscribe((function(e,t){var r={};e.payload&&(r.payload=e.payload),r.state=t,n.notifyComponentUpdate(),n.sendInspectorTree(w),n.sendInspectorState(w),n.addTimelineEvent({layerId:y,event:{time:Date.now(),title:e.type,data:r}})})),t.subscribeAction({before:function(e,t){var r={};e.payload&&(r.payload=e.payload),e._id=x++,e._time=Date.now(),r.state=t,n.addTimelineEvent({layerId:_,event:{time:e._time,title:e.type,groupId:e._id,subtitle:"start",data:r}})},after:function(e,t){var r={},o=Date.now()-e._time;r.duration={_custom:{type:"duration",display:o+"ms",tooltip:"Action duration",value:o}},e.payload&&(r.payload=e.payload),r.state=t,n.addTimelineEvent({layerId:_,event:{time:Date.now(),title:e.type,groupId:e._id,subtitle:"end",data:r}})}})}))}var S=8702998,E={label:"namespaced",textColor:16777215,backgroundColor:6710886};function O(e){return e&&"root"!==e?e.split("/").slice(-2,-1)[0]:"Root"}function C(e,t){return{id:t||"root",label:O(t),tags:e.namespaced?[E]:[],children:Object.keys(e._children).map((function(n){return C(e._children[n],t+n+"/")}))}}function N(e,t,n,r){r.includes(n)&&e.push({id:r||"root",label:r.endsWith("/")?r.slice(0,r.length-1):r||"Root",tags:t.namespaced?[E]:[]}),Object.keys(t._children).forEach((function(o){N(e,t._children[o],n,r+o+"/")}))}function j(e){try{return e()}catch(e){return e}}var A=function(e,t){this.runtime=t,this._children=Object.create(null),this._rawModule=e;var n=e.state;this.state=("function"==typeof n?n():n)||{}},L={namespaced:{configurable:!0}};L.namespaced.get=function(){return!!this._rawModule.namespaced},A.prototype.addChild=function(e,t){this._children[e]=t},A.prototype.removeChild=function(e){delete this._children[e]},A.prototype.getChild=function(e){return this._children[e]},A.prototype.hasChild=function(e){return e in this._children},A.prototype.update=function(e){this._rawModule.namespaced=e.namespaced,e.actions&&(this._rawModule.actions=e.actions),e.mutations&&(this._rawModule.mutations=e.mutations),e.getters&&(this._rawModule.getters=e.getters)},A.prototype.forEachChild=function(e){u(this._children,e)},A.prototype.forEachGetter=function(e){this._rawModule.getters&&u(this._rawModule.getters,e)},A.prototype.forEachAction=function(e){this._rawModule.actions&&u(this._rawModule.actions,e)},A.prototype.forEachMutation=function(e){this._rawModule.mutations&&u(this._rawModule.mutations,e)},Object.defineProperties(A.prototype,L);var M=function(e){this.register([],e,!1)};function I(e,t,n){if(t.update(n),n.modules)for(var r in n.modules){if(!t.getChild(r))return;I(e.concat(r),t.getChild(r),n.modules[r])}}function z(e){return new T(e)}M.prototype.get=function(e){return e.reduce((function(e,t){return e.getChild(t)}),this.root)},M.prototype.getNamespace=function(e){var t=this.root;return e.reduce((function(e,n){return e+((t=t.getChild(n)).namespaced?n+"/":"")}),"")},M.prototype.update=function(e){I([],this.root,e)},M.prototype.register=function(e,t,n){var r=this;void 0===n&&(n=!0);var o=new A(t,n);0===e.length?this.root=o:this.get(e.slice(0,-1)).addChild(e[e.length-1],o),t.modules&&u(t.modules,(function(t,o){r.register(e.concat(o),t,n)}))},M.prototype.unregister=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1],r=t.getChild(n);r&&r.runtime&&t.removeChild(n)},M.prototype.isRegistered=function(e){var t=this.get(e.slice(0,-1)),n=e[e.length-1];return!!t&&t.hasChild(n)};var T=function(e){var t=this;void 0===e&&(e={});var n=e.plugins;void 0===n&&(n=[]);var r=e.strict;void 0===r&&(r=!1);var o=e.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new M(e),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._scope=null,this._devtools=o;var a=this,i=this.dispatch,s=this.commit;this.dispatch=function(e,t){return i.call(a,e,t)},this.commit=function(e,t,n){return s.call(a,e,t,n)},this.strict=r;var c=this._modules.root.state;m(this,c,[],this._modules.root),d(this,c),n.forEach((function(e){return e(t)}))},R={state:{configurable:!0}};T.prototype.install=function(e,t){e.provide(t||"store",this),e.config.globalProperties.$store=this,void 0!==this._devtools&&this._devtools&&k(e,this)},R.state.get=function(){return this._state.data},R.state.set=function(e){},T.prototype.commit=function(e,t,n){var r=this,o=b(e,t,n),a=o.type,i=o.payload,s=(o.options,{type:a,payload:i}),c=this._mutations[a];c&&(this._withCommit((function(){c.forEach((function(e){e(i)}))})),this._subscribers.slice().forEach((function(e){return e(s,r.state)})))},T.prototype.dispatch=function(e,t){var n=this,r=b(e,t),o=r.type,a=r.payload,i={type:o,payload:a},s=this._actions[o];if(s){try{this._actionSubscribers.slice().filter((function(e){return e.before})).forEach((function(e){return e.before(i,n.state)}))}catch(e){}var c=s.length>1?Promise.all(s.map((function(e){return e(a)}))):s[0](a);return new Promise((function(e,t){c.then((function(t){try{n._actionSubscribers.filter((function(e){return e.after})).forEach((function(e){return e.after(i,n.state)}))}catch(e){}e(t)}),(function(e){try{n._actionSubscribers.filter((function(e){return e.error})).forEach((function(t){return t.error(i,n.state,e)}))}catch(e){}t(e)}))}))}},T.prototype.subscribe=function(e,t){return h(e,this._subscribers,t)},T.prototype.subscribeAction=function(e,t){return h("function"==typeof e?{before:e}:e,this._actionSubscribers,t)},T.prototype.watch=function(e,t,n){var o=this;return(0,r.YP)((function(){return e(o.state,o.getters)}),t,Object.assign({},n))},T.prototype.replaceState=function(e){var t=this;this._withCommit((function(){t._state.data=e}))},T.prototype.registerModule=function(e,t,n){void 0===n&&(n={}),"string"==typeof e&&(e=[e]),this._modules.register(e,t),m(this,this.state,e,this._modules.get(e),n.preserveState),d(this,this.state)},T.prototype.unregisterModule=function(e){var t=this;"string"==typeof e&&(e=[e]),this._modules.unregister(e),this._withCommit((function(){delete g(t.state,e.slice(0,-1))[e[e.length-1]]})),p(this)},T.prototype.hasModule=function(e){return"string"==typeof e&&(e=[e]),this._modules.isRegistered(e)},T.prototype.hotUpdate=function(e){this._modules.update(e),p(this,!0)},T.prototype._withCommit=function(e){var t=this._committing;this._committing=!0,e(),this._committing=t},Object.defineProperties(T.prototype,R);var $=V((function(e,t){var n={};return D(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){var t=this.$store.state,n=this.$store.getters;if(e){var r=U(this.$store,0,e);if(!r)return;t=r.context.state,n=r.context.getters}return"function"==typeof o?o.call(this,t,n):t[o]},n[r].vuex=!0})),n})),P=V((function(e,t){var n={};return D(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=this.$store.commit;if(e){var a=U(this.$store,0,e);if(!a)return;r=a.context.commit}return"function"==typeof o?o.apply(this,[r].concat(t)):r.apply(this.$store,[o].concat(t))}})),n})),F=V((function(e,t){var n={};return D(t).forEach((function(t){var r=t.key,o=t.val;o=e+o,n[r]=function(){if(!e||U(this.$store,0,e))return this.$store.getters[o]},n[r].vuex=!0})),n})),H=V((function(e,t){var n={};return D(t).forEach((function(t){var r=t.key,o=t.val;n[r]=function(){for(var t=[],n=arguments.length;n--;)t[n]=arguments[n];var r=this.$store.dispatch;if(e){var a=U(this.$store,0,e);if(!a)return;r=a.context.dispatch}return"function"==typeof o?o.apply(this,[r].concat(t)):r.apply(this.$store,[o].concat(t))}})),n}));function D(e){return function(e){return Array.isArray(e)||f(e)}(e)?Array.isArray(e)?e.map((function(e){return{key:e,val:e}})):Object.keys(e).map((function(t){return{key:t,val:e[t]}})):[]}function V(e){return function(t,n){return"string"!=typeof t?(n=t,t=""):"/"!==t.charAt(t.length-1)&&(t+="/"),e(t,n)}}function U(e,t,n){return e._modulesNamespaceMap[n]}},47529:e=>{e.exports=function(){for(var e={},n=0;n<arguments.length;n++){var r=arguments[n];for(var o in r)t.call(r,o)&&(e[o]=r[o])}return e};var t=Object.prototype.hasOwnProperty},17061:(e,t,n)=>{var r=n(18698).default;function o(){"use strict";e.exports=o=function(){return t},e.exports.__esModule=!0,e.exports.default=e.exports;var t={},n=Object.prototype,a=n.hasOwnProperty,i=Object.defineProperty||function(e,t,n){e[t]=n.value},s="function"==typeof Symbol?Symbol:{},c=s.iterator||"@@iterator",l=s.asyncIterator||"@@asyncIterator",u=s.toStringTag||"@@toStringTag";function f(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,n){return e[t]=n}}function h(e,t,n,r){var o=t&&t.prototype instanceof m?t:m,a=Object.create(o.prototype),s=new N(r||[]);return i(a,"_invoke",{value:S(e,n,s)}),a}function p(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=h;var d={};function m(){}function v(){}function g(){}var b={};f(b,c,(function(){return this}));var y=Object.getPrototypeOf,_=y&&y(y(j([])));_&&_!==n&&a.call(_,c)&&(b=_);var w=g.prototype=m.prototype=Object.create(b);function x(e){["next","throw","return"].forEach((function(t){f(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function n(o,i,s,c){var l=p(e[o],e,i);if("throw"!==l.type){var u=l.arg,f=u.value;return f&&"object"==r(f)&&a.call(f,"__await")?t.resolve(f.__await).then((function(e){n("next",e,s,c)}),(function(e){n("throw",e,s,c)})):t.resolve(f).then((function(e){u.value=e,s(u)}),(function(e){return n("throw",e,s,c)}))}c(l.arg)}var o;i(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,o){n(e,r,t,o)}))}return o=o?o.then(a,a):a()}})}function S(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var s=E(i,n);if(s){if(s===d)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=p(e,t,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}function E(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),d;var o=p(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,d;var a=o.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function j(e){if(e){var t=e[c];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,r=function t(){for(;++n<e.length;)if(a.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return r.next=r}}return{next:A}}function A(){return{value:void 0,done:!0}}return v.prototype=g,i(w,"constructor",{value:g,configurable:!0}),i(g,"constructor",{value:v,configurable:!0}),v.displayName=f(g,u,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===v||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,g):(e.__proto__=g,f(e,u,"GeneratorFunction")),e.prototype=Object.create(w),e},t.awrap=function(e){return{__await:e}},x(k.prototype),f(k.prototype,l,(function(){return this})),t.AsyncIterator=k,t.async=function(e,n,r,o,a){void 0===a&&(a=Promise);var i=new k(h(e,n,r,o),a);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},x(w),f(w,u,"Generator"),f(w,c,(function(){return this})),f(w,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=j,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r],i=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),c=a.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&a.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,d):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),d},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;C(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:j(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),d}},t}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports},18698:e=>{function t(n){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},64687:(e,t,n)=>{var r=n(17061)();e.exports=r;try{regeneratorRuntime=r}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}},30907:(e,t,n)=>{"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{Z:()=>r})},83878:(e,t,n)=>{"use strict";function r(e){if(Array.isArray(e))return e}n.d(t,{Z:()=>r})},97326:(e,t,n)=>{"use strict";function r(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}n.d(t,{Z:()=>r})},15861:(e,t,n)=>{"use strict";function r(e,t,n,r,o,a,i){try{var s=e[a](i),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var i=e.apply(t,n);function s(e){r(i,o,a,s,c,"next",e)}function c(e){r(i,o,a,s,c,"throw",e)}s(void 0)}))}}n.d(t,{Z:()=>o})},15671:(e,t,n)=>{"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}n.d(t,{Z:()=>r})},43144:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(49142);function o(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,(0,r.Z)(o.key),o)}}function a(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}},4942:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(49142);function o(e,t,n){return(t=(0,r.Z)(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},87462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},61120:(e,t,n)=>{"use strict";function r(e){return r=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},r(e)}n.d(t,{Z:()=>r})},60136:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(89611);function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&(0,r.Z)(e,t)}},59199:(e,t,n)=>{"use strict";function r(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}n.d(t,{Z:()=>r})},25267:(e,t,n)=>{"use strict";function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}n.d(t,{Z:()=>r})},36459:(e,t,n)=>{"use strict";function r(e){if(null==e)throw new TypeError("Cannot destructure "+e)}n.d(t,{Z:()=>r})},44925:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}n.d(t,{Z:()=>r})},82963:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(71002),o=n(97326);function a(e,t){if(t&&("object"===(0,r.Z)(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return(0,o.Z)(e)}},89611:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}n.d(t,{Z:()=>r})},29439:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(83878),o=n(40181),a=n(25267);function i(e,t){return(0,r.Z)(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw o}}return s}}(e,t)||(0,o.Z)(e,t)||(0,a.Z)()}},84506:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(83878),o=n(59199),a=n(40181),i=n(25267);function s(e){return(0,r.Z)(e)||(0,o.Z)(e)||(0,a.Z)(e)||(0,i.Z)()}},93433:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(30907),o=n(59199),a=n(40181);function i(e){return function(e){if(Array.isArray(e))return(0,r.Z)(e)}(e)||(0,o.Z)(e)||(0,a.Z)(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}},49142:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(71002);function o(e){var t=function(e,t){if("object"!==(0,r.Z)(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t);if("object"!==(0,r.Z)(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===(0,r.Z)(t)?t:String(t)}},71002:(e,t,n)=>{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}n.d(t,{Z:()=>r})},40181:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(30907);function o(e,t){if(e){if("string"==typeof e)return(0,r.Z)(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?(0,r.Z)(e,t):void 0}}},72407:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(61120),o=n(89611);function a(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function i(e,t,n){return i=a()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&(0,o.Z)(a,n.prototype),a},i.apply(null,arguments)}function s(e){var t="function"==typeof Map?new Map:void 0;return s=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,a)}function a(){return i(e,arguments,(0,r.Z)(this).constructor)}return a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),(0,o.Z)(a,e)},s(e)}},73152:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r={};try{r.EventTarget=(new EventTarget).constructor}catch(e){!function(e,t){var n=e.create,o=e.defineProperty,a=i.prototype;function i(){t.set(this,n(null))}function s(e,t,n){o(e,t,{configurable:!0,writable:!0,value:n})}function c(e){var t=e.options;return t&&t.once&&e.target.removeEventListener(this.type,e.listener),"function"==typeof e.listener?e.listener.call(e.target,this):e.listener.handleEvent(this),this._stopImmediatePropagationFlag}s(a,"addEventListener",(function(e,n,r){for(var o=t.get(this),a=o[e]||(o[e]=[]),i=0,s=a.length;i<s;i++)if(a[i].listener===n)return;a.push({target:this,listener:n,options:r})})),s(a,"dispatchEvent",(function(e){var n=t.get(this)[e.type];return n&&(s(e,"target",this),s(e,"currentTarget",this),n.slice(0).some(c,e),delete e.currentTarget,delete e.target),!0})),s(a,"removeEventListener",(function(e,n){for(var r=t.get(this),o=r[e]||(r[e]=[]),a=0,i=o.length;a<i;a++)if(o[a].listener===n)return void o.splice(a,1)})),r.EventTarget=i}(Object,new WeakMap)}const o=r.EventTarget}}]); +//# sourceMappingURL=3733.7060d1e6bca813125a0c.js.map +\ No newline at end of file diff --git a/priv/static/static/js/2724.e4840c73281069ba54ab.js.LICENSE.txt b/priv/static/static/js/3733.7060d1e6bca813125a0c.js.LICENSE.txt diff --git a/priv/static/static/js/3733.7060d1e6bca813125a0c.js.map b/priv/static/static/js/3733.7060d1e6bca813125a0c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/3733.7060d1e6bca813125a0c.js","mappings":"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","sources":["webpack://pleroma_fe/./node_modules/@fortawesome/fontawesome-svg-core/index.mjs","webpack://pleroma_fe/./node_modules/@fortawesome/free-regular-svg-icons/index.mjs","webpack://pleroma_fe/./node_modules/@fortawesome/free-solid-svg-icons/index.mjs","webpack://pleroma_fe/./node_modules/@fortawesome/vue-fontawesome/index.es.js","webpack://pleroma_fe/./node_modules/pointer-tracker/dist/PointerTracker.mjs","webpack://pleroma_fe/./node_modules/@kazvmoe-infra/pinch-zoom-element/dist/pinch-zoom.es.js","webpack://pleroma_fe/./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vuelidate/core/dist/index.mjs","webpack://pleroma_fe/./node_modules/@vuelidate/validators/dist/index.esm.js","webpack://pleroma_fe/./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack://pleroma_fe/./node_modules/chromatism/dist/chromatism.cjs.js","webpack://pleroma_fe/./node_modules/click-outside-vue3/dist/v-click-outside.umd.js","webpack://pleroma_fe/./node_modules/custom-event-polyfill/polyfill.js","webpack://pleroma_fe/./node_modules/escape-html/index.js","webpack://pleroma_fe/./node_modules/iso-639-1/src/data.js","webpack://pleroma_fe/./node_modules/iso-639-1/src/index.js","webpack://pleroma_fe/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://pleroma_fe/./node_modules/localforage/dist/localforage.js","webpack://pleroma_fe/./node_modules/lodash.merge/index.js","webpack://pleroma_fe/./node_modules/lodash/_DataView.js","webpack://pleroma_fe/./node_modules/lodash/_Hash.js","webpack://pleroma_fe/./node_modules/lodash/_ListCache.js","webpack://pleroma_fe/./node_modules/lodash/_Map.js","webpack://pleroma_fe/./node_modules/lodash/_MapCache.js","webpack://pleroma_fe/./node_modules/lodash/_Promise.js","webpack://pleroma_fe/./node_modules/lodash/_Set.js","webpack://pleroma_fe/./node_modules/lodash/_SetCache.js","webpack://pleroma_fe/./node_modules/lodash/_Stack.js","webpack://pleroma_fe/./node_modules/lodash/_Symbol.js","webpack://pleroma_fe/./node_modules/lodash/_Uint8Array.js","webpack://pleroma_fe/./node_modules/lodash/_WeakMap.js","webpack://pleroma_fe/./node_modules/lodash/_apply.js","webpack://pleroma_fe/./node_modules/lodash/_arrayAggregator.js","webpack://pleroma_fe/./node_modules/lodash/_arrayEach.js","webpack://pleroma_fe/./node_modules/lodash/_arrayFilter.js","webpack://pleroma_fe/./node_modules/lodash/_arrayIncludes.js","webpack://pleroma_fe/./node_modules/lodash/_arrayIncludesWith.js","webpack://pleroma_fe/./node_modules/lodash/_arrayLikeKeys.js","webpack://pleroma_fe/./node_modules/lodash/_arrayMap.js","webpack://pleroma_fe/./node_modules/lodash/_arrayPush.js","webpack://pleroma_fe/./node_modules/lodash/_arrayReduce.js","webpack://pleroma_fe/./node_modules/lodash/_arrayShuffle.js","webpack://pleroma_fe/./node_modules/lodash/_arraySome.js","webpack://pleroma_fe/./node_modules/lodash/_asciiToArray.js","webpack://pleroma_fe/./node_modules/lodash/_asciiWords.js","webpack://pleroma_fe/./node_modules/lodash/_assignMergeValue.js","webpack://pleroma_fe/./node_modules/lodash/_assignValue.js","webpack://pleroma_fe/./node_modules/lodash/_assocIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_baseAggregator.js","webpack://pleroma_fe/./node_modules/lodash/_baseAssign.js","webpack://pleroma_fe/./node_modules/lodash/_baseAssignIn.js","webpack://pleroma_fe/./node_modules/lodash/_baseAssignValue.js","webpack://pleroma_fe/./node_modules/lodash/_baseClamp.js","webpack://pleroma_fe/./node_modules/lodash/_baseClone.js","webpack://pleroma_fe/./node_modules/lodash/_baseCreate.js","webpack://pleroma_fe/./node_modules/lodash/_baseDifference.js","webpack://pleroma_fe/./node_modules/lodash/_baseEach.js","webpack://pleroma_fe/./node_modules/lodash/_baseExtremum.js","webpack://pleroma_fe/./node_modules/lodash/_baseFilter.js","webpack://pleroma_fe/./node_modules/lodash/_baseFindIndex.js","webpack://pleroma_fe/./node_modules/lodash/_baseFlatten.js","webpack://pleroma_fe/./node_modules/lodash/_baseFor.js","webpack://pleroma_fe/./node_modules/lodash/_baseForOwn.js","webpack://pleroma_fe/./node_modules/lodash/_baseGet.js","webpack://pleroma_fe/./node_modules/lodash/_baseGetAllKeys.js","webpack://pleroma_fe/./node_modules/lodash/_baseGetTag.js","webpack://pleroma_fe/./node_modules/lodash/_baseGt.js","webpack://pleroma_fe/./node_modules/lodash/_baseHasIn.js","webpack://pleroma_fe/./node_modules/lodash/_baseIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsArguments.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsEqual.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsEqualDeep.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsMap.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsMatch.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsNaN.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsNative.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsSet.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/_baseIteratee.js","webpack://pleroma_fe/./node_modules/lodash/_baseKeys.js","webpack://pleroma_fe/./node_modules/lodash/_baseKeysIn.js","webpack://pleroma_fe/./node_modules/lodash/_baseLt.js","webpack://pleroma_fe/./node_modules/lodash/_baseMap.js","webpack://pleroma_fe/./node_modules/lodash/_baseMatches.js","webpack://pleroma_fe/./node_modules/lodash/_baseMatchesProperty.js","webpack://pleroma_fe/./node_modules/lodash/_baseMerge.js","webpack://pleroma_fe/./node_modules/lodash/_baseMergeDeep.js","webpack://pleroma_fe/./node_modules/lodash/_baseOrderBy.js","webpack://pleroma_fe/./node_modules/lodash/_basePickBy.js","webpack://pleroma_fe/./node_modules/lodash/_baseProperty.js","webpack://pleroma_fe/./node_modules/lodash/_basePropertyDeep.js","webpack://pleroma_fe/./node_modules/lodash/_basePropertyOf.js","webpack://pleroma_fe/./node_modules/lodash/_basePullAt.js","webpack://pleroma_fe/./node_modules/lodash/_baseRandom.js","webpack://pleroma_fe/./node_modules/lodash/_baseReduce.js","webpack://pleroma_fe/./node_modules/lodash/_baseRest.js","webpack://pleroma_fe/./node_modules/lodash/_baseSet.js","webpack://pleroma_fe/./node_modules/lodash/_baseSetToString.js","webpack://pleroma_fe/./node_modules/lodash/_baseShuffle.js","webpack://pleroma_fe/./node_modules/lodash/_baseSlice.js","webpack://pleroma_fe/./node_modules/lodash/_baseSortBy.js","webpack://pleroma_fe/./node_modules/lodash/_baseSum.js","webpack://pleroma_fe/./node_modules/lodash/_baseTimes.js","webpack://pleroma_fe/./node_modules/lodash/_baseToString.js","webpack://pleroma_fe/./node_modules/lodash/_baseTrim.js","webpack://pleroma_fe/./node_modules/lodash/_baseUnary.js","webpack://pleroma_fe/./node_modules/lodash/_baseUniq.js","webpack://pleroma_fe/./node_modules/lodash/_baseUnset.js","webpack://pleroma_fe/./node_modules/lodash/_baseValues.js","webpack://pleroma_fe/./node_modules/lodash/_cacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_castFunction.js","webpack://pleroma_fe/./node_modules/lodash/_castPath.js","webpack://pleroma_fe/./node_modules/lodash/_castSlice.js","webpack://pleroma_fe/./node_modules/lodash/_charsEndIndex.js","webpack://pleroma_fe/./node_modules/lodash/_charsStartIndex.js","webpack://pleroma_fe/./node_modules/lodash/_cloneArrayBuffer.js","webpack://pleroma_fe/./node_modules/lodash/_cloneBuffer.js","webpack://pleroma_fe/./node_modules/lodash/_cloneDataView.js","webpack://pleroma_fe/./node_modules/lodash/_cloneRegExp.js","webpack://pleroma_fe/./node_modules/lodash/_cloneSymbol.js","webpack://pleroma_fe/./node_modules/lodash/_cloneTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/_compareAscending.js","webpack://pleroma_fe/./node_modules/lodash/_compareMultiple.js","webpack://pleroma_fe/./node_modules/lodash/_copyArray.js","webpack://pleroma_fe/./node_modules/lodash/_copyObject.js","webpack://pleroma_fe/./node_modules/lodash/_copySymbols.js","webpack://pleroma_fe/./node_modules/lodash/_copySymbolsIn.js","webpack://pleroma_fe/./node_modules/lodash/_coreJsData.js","webpack://pleroma_fe/./node_modules/lodash/_createAggregator.js","webpack://pleroma_fe/./node_modules/lodash/_createAssigner.js","webpack://pleroma_fe/./node_modules/lodash/_createBaseEach.js","webpack://pleroma_fe/./node_modules/lodash/_createBaseFor.js","webpack://pleroma_fe/./node_modules/lodash/_createCaseFirst.js","webpack://pleroma_fe/./node_modules/lodash/_createCompounder.js","webpack://pleroma_fe/./node_modules/lodash/_createFind.js","webpack://pleroma_fe/./node_modules/lodash/_createSet.js","webpack://pleroma_fe/./node_modules/lodash/_deburrLetter.js","webpack://pleroma_fe/./node_modules/lodash/_defineProperty.js","webpack://pleroma_fe/./node_modules/lodash/_equalArrays.js","webpack://pleroma_fe/./node_modules/lodash/_equalByTag.js","webpack://pleroma_fe/./node_modules/lodash/_equalObjects.js","webpack://pleroma_fe/./node_modules/lodash/_freeGlobal.js","webpack://pleroma_fe/./node_modules/lodash/_getAllKeys.js","webpack://pleroma_fe/./node_modules/lodash/_getAllKeysIn.js","webpack://pleroma_fe/./node_modules/lodash/_getMapData.js","webpack://pleroma_fe/./node_modules/lodash/_getMatchData.js","webpack://pleroma_fe/./node_modules/lodash/_getNative.js","webpack://pleroma_fe/./node_modules/lodash/_getPrototype.js","webpack://pleroma_fe/./node_modules/lodash/_getRawTag.js","webpack://pleroma_fe/./node_modules/lodash/_getSymbols.js","webpack://pleroma_fe/./node_modules/lodash/_getSymbolsIn.js","webpack://pleroma_fe/./node_modules/lodash/_getTag.js","webpack://pleroma_fe/./node_modules/lodash/_getValue.js","webpack://pleroma_fe/./node_modules/lodash/_hasPath.js","webpack://pleroma_fe/./node_modules/lodash/_hasUnicode.js","webpack://pleroma_fe/./node_modules/lodash/_hasUnicodeWord.js","webpack://pleroma_fe/./node_modules/lodash/_hashClear.js","webpack://pleroma_fe/./node_modules/lodash/_hashDelete.js","webpack://pleroma_fe/./node_modules/lodash/_hashGet.js","webpack://pleroma_fe/./node_modules/lodash/_hashHas.js","webpack://pleroma_fe/./node_modules/lodash/_hashSet.js","webpack://pleroma_fe/./node_modules/lodash/_initCloneArray.js","webpack://pleroma_fe/./node_modules/lodash/_initCloneByTag.js","webpack://pleroma_fe/./node_modules/lodash/_initCloneObject.js","webpack://pleroma_fe/./node_modules/lodash/_isFlattenable.js","webpack://pleroma_fe/./node_modules/lodash/_isIndex.js","webpack://pleroma_fe/./node_modules/lodash/_isIterateeCall.js","webpack://pleroma_fe/./node_modules/lodash/_isKey.js","webpack://pleroma_fe/./node_modules/lodash/_isKeyable.js","webpack://pleroma_fe/./node_modules/lodash/_isMasked.js","webpack://pleroma_fe/./node_modules/lodash/_isPrototype.js","webpack://pleroma_fe/./node_modules/lodash/_isStrictComparable.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheClear.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheDelete.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheGet.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheSet.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheClear.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheDelete.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheGet.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheSet.js","webpack://pleroma_fe/./node_modules/lodash/_mapToArray.js","webpack://pleroma_fe/./node_modules/lodash/_matchesStrictComparable.js","webpack://pleroma_fe/./node_modules/lodash/_memoizeCapped.js","webpack://pleroma_fe/./node_modules/lodash/_nativeCreate.js","webpack://pleroma_fe/./node_modules/lodash/_nativeKeys.js","webpack://pleroma_fe/./node_modules/lodash/_nativeKeysIn.js","webpack://pleroma_fe/./node_modules/lodash/_nodeUtil.js","webpack://pleroma_fe/./node_modules/lodash/_objectToString.js","webpack://pleroma_fe/./node_modules/lodash/_overArg.js","webpack://pleroma_fe/./node_modules/lodash/_overRest.js","webpack://pleroma_fe/./node_modules/lodash/_parent.js","webpack://pleroma_fe/./node_modules/lodash/_root.js","webpack://pleroma_fe/./node_modules/lodash/_safeGet.js","webpack://pleroma_fe/./node_modules/lodash/_setCacheAdd.js","webpack://pleroma_fe/./node_modules/lodash/_setCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_setToArray.js","webpack://pleroma_fe/./node_modules/lodash/_setToString.js","webpack://pleroma_fe/./node_modules/lodash/_shortOut.js","webpack://pleroma_fe/./node_modules/lodash/_shuffleSelf.js","webpack://pleroma_fe/./node_modules/lodash/_stackClear.js","webpack://pleroma_fe/./node_modules/lodash/_stackDelete.js","webpack://pleroma_fe/./node_modules/lodash/_stackGet.js","webpack://pleroma_fe/./node_modules/lodash/_stackHas.js","webpack://pleroma_fe/./node_modules/lodash/_stackSet.js","webpack://pleroma_fe/./node_modules/lodash/_strictIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_stringToArray.js","webpack://pleroma_fe/./node_modules/lodash/_stringToPath.js","webpack://pleroma_fe/./node_modules/lodash/_toKey.js","webpack://pleroma_fe/./node_modules/lodash/_toSource.js","webpack://pleroma_fe/./node_modules/lodash/_trimmedEndIndex.js","webpack://pleroma_fe/./node_modules/lodash/_unescapeHtmlChar.js","webpack://pleroma_fe/./node_modules/lodash/_unicodeToArray.js","webpack://pleroma_fe/./node_modules/lodash/_unicodeWords.js","webpack://pleroma_fe/./node_modules/lodash/camelCase.js","webpack://pleroma_fe/./node_modules/lodash/capitalize.js","webpack://pleroma_fe/./node_modules/lodash/chunk.js","webpack://pleroma_fe/./node_modules/lodash/clamp.js","webpack://pleroma_fe/./node_modules/lodash/clone.js","webpack://pleroma_fe/./node_modules/lodash/cloneDeep.js","webpack://pleroma_fe/./node_modules/lodash/compact.js","webpack://pleroma_fe/./node_modules/lodash/concat.js","webpack://pleroma_fe/./node_modules/lodash/constant.js","webpack://pleroma_fe/./node_modules/lodash/debounce.js","webpack://pleroma_fe/./node_modules/lodash/deburr.js","webpack://pleroma_fe/./node_modules/lodash/differenceWith.js","webpack://pleroma_fe/./node_modules/lodash/each.js","webpack://pleroma_fe/./node_modules/lodash/eq.js","webpack://pleroma_fe/./node_modules/lodash/filter.js","webpack://pleroma_fe/./node_modules/lodash/find.js","webpack://pleroma_fe/./node_modules/lodash/findIndex.js","webpack://pleroma_fe/./node_modules/lodash/findLastIndex.js","webpack://pleroma_fe/./node_modules/lodash/first.js","webpack://pleroma_fe/./node_modules/lodash/flatten.js","webpack://pleroma_fe/./node_modules/lodash/flattenDeep.js","webpack://pleroma_fe/./node_modules/lodash/forEach.js","webpack://pleroma_fe/./node_modules/lodash/get.js","webpack://pleroma_fe/./node_modules/lodash/groupBy.js","webpack://pleroma_fe/./node_modules/lodash/hasIn.js","webpack://pleroma_fe/./node_modules/lodash/head.js","webpack://pleroma_fe/./node_modules/lodash/identity.js","webpack://pleroma_fe/./node_modules/lodash/includes.js","webpack://pleroma_fe/./node_modules/lodash/isArguments.js","webpack://pleroma_fe/./node_modules/lodash/isArray.js","webpack://pleroma_fe/./node_modules/lodash/isArrayLike.js","webpack://pleroma_fe/./node_modules/lodash/isArrayLikeObject.js","webpack://pleroma_fe/./node_modules/lodash/isBuffer.js","webpack://pleroma_fe/./node_modules/lodash/isEmpty.js","webpack://pleroma_fe/./node_modules/lodash/isEqual.js","webpack://pleroma_fe/./node_modules/lodash/isFunction.js","webpack://pleroma_fe/./node_modules/lodash/isLength.js","webpack://pleroma_fe/./node_modules/lodash/isMap.js","webpack://pleroma_fe/./node_modules/lodash/isObject.js","webpack://pleroma_fe/./node_modules/lodash/isObjectLike.js","webpack://pleroma_fe/./node_modules/lodash/isPlainObject.js","webpack://pleroma_fe/./node_modules/lodash/isSet.js","webpack://pleroma_fe/./node_modules/lodash/isString.js","webpack://pleroma_fe/./node_modules/lodash/isSymbol.js","webpack://pleroma_fe/./node_modules/lodash/isTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/kebabCase.js","webpack://pleroma_fe/./node_modules/lodash/keyBy.js","webpack://pleroma_fe/./node_modules/lodash/keys.js","webpack://pleroma_fe/./node_modules/lodash/keysIn.js","webpack://pleroma_fe/./node_modules/lodash/last.js","webpack://pleroma_fe/./node_modules/lodash/map.js","webpack://pleroma_fe/./node_modules/lodash/maxBy.js","webpack://pleroma_fe/./node_modules/lodash/memoize.js","webpack://pleroma_fe/./node_modules/lodash/merge.js","webpack://pleroma_fe/./node_modules/lodash/mergeWith.js","webpack://pleroma_fe/./node_modules/lodash/minBy.js","webpack://pleroma_fe/./node_modules/lodash/negate.js","webpack://pleroma_fe/./node_modules/lodash/noop.js","webpack://pleroma_fe/./node_modules/lodash/now.js","webpack://pleroma_fe/./node_modules/lodash/omitBy.js","webpack://pleroma_fe/./node_modules/lodash/orderBy.js","webpack://pleroma_fe/./node_modules/lodash/pickBy.js","webpack://pleroma_fe/./node_modules/lodash/property.js","webpack://pleroma_fe/./node_modules/lodash/reduce.js","webpack://pleroma_fe/./node_modules/lodash/reject.js","webpack://pleroma_fe/./node_modules/lodash/remove.js","webpack://pleroma_fe/./node_modules/lodash/set.js","webpack://pleroma_fe/./node_modules/lodash/shuffle.js","webpack://pleroma_fe/./node_modules/lodash/slice.js","webpack://pleroma_fe/./node_modules/lodash/sortBy.js","webpack://pleroma_fe/./node_modules/lodash/stubArray.js","webpack://pleroma_fe/./node_modules/lodash/stubFalse.js","webpack://pleroma_fe/./node_modules/lodash/sumBy.js","webpack://pleroma_fe/./node_modules/lodash/take.js","webpack://pleroma_fe/./node_modules/lodash/takeRight.js","webpack://pleroma_fe/./node_modules/lodash/throttle.js","webpack://pleroma_fe/./node_modules/lodash/toFinite.js","webpack://pleroma_fe/./node_modules/lodash/toInteger.js","webpack://pleroma_fe/./node_modules/lodash/toNumber.js","webpack://pleroma_fe/./node_modules/lodash/toPlainObject.js","webpack://pleroma_fe/./node_modules/lodash/toString.js","webpack://pleroma_fe/./node_modules/lodash/trim.js","webpack://pleroma_fe/./node_modules/lodash/unescape.js","webpack://pleroma_fe/./node_modules/lodash/uniq.js","webpack://pleroma_fe/./node_modules/lodash/uniqBy.js","webpack://pleroma_fe/./node_modules/lodash/uniqWith.js","webpack://pleroma_fe/./node_modules/lodash/uniqueId.js","webpack://pleroma_fe/./node_modules/lodash/upperFirst.js","webpack://pleroma_fe/./node_modules/lodash/values.js","webpack://pleroma_fe/./node_modules/lodash/words.js","webpack://pleroma_fe/./node_modules/parse-link-header/index.js","webpack://pleroma_fe/./node_modules/phoenix/priv/static/phoenix.mjs","webpack://pleroma_fe/./node_modules/punycode.js/punycode.es6.js","webpack://pleroma_fe/./node_modules/punycode/punycode.es6.js","webpack://pleroma_fe/./node_modules/querystring/decode.js","webpack://pleroma_fe/./node_modules/querystring/encode.js","webpack://pleroma_fe/./node_modules/querystring/index.js","webpack://pleroma_fe/./node_modules/serviceworker-webpack5-plugin/lib/runtime.js","webpack://pleroma_fe/./node_modules/url/url.js","webpack://pleroma_fe/./node_modules/url/util.js","webpack://pleroma_fe/./node_modules/@intlify/shared/dist/shared.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js","webpack://pleroma_fe/./node_modules/vue-i18n/dist/vue-i18n.runtime.esm-bundler.js","webpack://pleroma_fe/./node_modules/vue-loader/dist/exportHelper.js","webpack://pleroma_fe/./node_modules/vue-router/dist/vue-router.mjs","webpack://pleroma_fe/./node_modules/vue-resize/dist/vue-resize.esm.js","webpack://pleroma_fe/./node_modules/vue-observe-visibility/dist/vue-observe-visibility.esm.js","webpack://pleroma_fe/./node_modules/vue-virtual-scroller/dist/vue-virtual-scroller.esm.js","webpack://pleroma_fe/./node_modules/mitt/dist/mitt.es.js","webpack://pleroma_fe/./node_modules/@vue/devtools-api/lib/esm/env.js","webpack://pleroma_fe/./node_modules/@vue/devtools-api/lib/esm/time.js","webpack://pleroma_fe/./node_modules/@vue/devtools-api/lib/esm/proxy.js","webpack://pleroma_fe/./node_modules/@vue/devtools-api/lib/esm/const.js","webpack://pleroma_fe/./node_modules/vuex/dist/vuex.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/devtools-api/lib/esm/index.js","webpack://pleroma_fe/./node_modules/xtend/immutable.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/typeof.js","webpack://pleroma_fe/./node_modules/@babel/runtime/regenerator/index.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://pleroma_fe/./node_modules/@ungap/event-target/esm/index.js"],"sourcesContent":["function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid',\n 'fasr': 'regular',\n 'fa-regular': 'regular',\n 'fasl': 'light',\n 'fa-light': 'light'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n 'solid': 'fass',\n 'regular': 'fasr',\n 'light': 'fasl'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n 'fass': 'fa-solid',\n 'fasr': 'fa-regular',\n 'fasl': 'fa-light'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass',\n 'fa-regular': 'fasr',\n 'fa-light': 'fasl'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss|sr|sl)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i;\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n '900': 'fass',\n '400': 'fasr',\n '300': 'fasl'\n}), _familyProxy5));\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&amp;').replace(/\"/g, '&quot;').replace(/'/g, '&#39;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n -webkit-transition-delay: 0s;\\n transition-delay: 0s;\\n -webkit-transition-duration: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n var dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens <https://mathiasbynens.be/>\n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nvar _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread2({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.4.0\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(function (_abstract) {\n node.parentNode.insertBefore(convertSVG(_abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var _abstract2 = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete _abstract2[0].attributes.id;\n\n if (_abstract2[0].attributes.class) {\n var splitClasses = _abstract2[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n\n _abstract2[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n var newInnerHTML = _abstract2.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nvar styles$2 = namespace.styles;\n\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\n\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\n\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\n\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var _abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n\n var element = DOCUMENT.createElement('svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = _abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(_abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (_abstract.attributes && (_abstract.attributes.fill || force)) {\n _abstract.attributes.fill = 'black';\n }\n\n return _abstract;\n}\n\nfunction deGroup(_abstract2) {\n if (_abstract2.tag === 'g') {\n return _abstract2.children;\n } else {\n return [_abstract2];\n }\n}\n\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","var prefix = \"far\";\nvar faTrashCan = {\n prefix: 'far',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M170.5 51.6L151.5 80h145l-19-28.4c-1.5-2.2-4-3.6-6.7-3.6H177.1c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80H368h48 8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V432c0 44.2-35.8 80-80 80H112c-44.2 0-80-35.8-80-80V128H24c-13.3 0-24-10.7-24-24S10.7 80 24 80h8H80 93.8l36.7-55.1C140.9 9.4 158.4 0 177.1 0h93.7c18.7 0 36.2 9.4 46.6 24.9zM80 128V432c0 17.7 14.3 32 32 32H336c17.7 0 32-14.3 32-32V128H80zm80 64V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0V400c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faMessage = {\n prefix: 'far',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M160 368c26.5 0 48 21.5 48 48v16l72.5-54.4c8.3-6.2 18.4-9.6 28.8-9.6H448c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16V352c0 8.8 7.2 16 16 16h96zm48 124l-.2 .2-5.1 3.8-17.1 12.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V474.7v-6.4V468v-4V416H112 64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H448c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H309.3L208 492z\"]\n};\nvar faCommentAlt = faMessage;\nvar faFileLines = {\n prefix: 'far',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm56 256c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H264c13.3 0 24-10.7 24-24s-10.7-24-24-24H120z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faCalendarDays = {\n prefix: 'far',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192h80v56H48V192zm0 104h80v64H48V296zm128 0h96v64H176V296zm144 0h80v64H320V296zm80-48H320V192h80v56zm0 160v40c0 8.8-7.2 16-16 16H320V408h80zm-128 0v56H176V408h96zm-144 0v56H64c-8.8 0-16-7.2-16-16V408h80zM272 248H176V192h96v56z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faHandPointRight = {\n prefix: 'far',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M448 128l-177.6 0c1 5.2 1.6 10.5 1.6 16l0 16 32 0 144 0c8.8 0 16-7.2 16-16s-7.2-16-16-16zM224 144c0-17.7-14.3-32-32-32c0 0 0 0 0 0l-24 0c-66.3 0-120 53.7-120 120l0 48c0 52.5 33.7 97.1 80.7 113.4c-.5-3.1-.7-6.2-.7-9.4c0-20 9.2-37.9 23.6-49.7c-4.9-9-7.6-19.4-7.6-30.3c0-15.1 5.3-29 14-40c-8.8-11-14-24.9-14-40l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 8.8 7.2 16 16 16s16-7.2 16-16l0-40 0-40zM192 64s0 0 0 0c18 0 34.6 6 48 16l208 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-82 0c1.3 5.1 2 10.5 2 16c0 25.3-14.7 47.2-36 57.6c2.6 7 4 14.5 4 22.4c0 20-9.2 37.9-23.6 49.7c4.9 9 7.6 19.4 7.6 30.3c0 35.3-28.7 64-64 64l-64 0-24 0C75.2 448 0 372.8 0 280l0-48C0 139.2 75.2 64 168 64l24 0zm64 336c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0zm16-176c0 5.5-.7 10.9-2 16l2 0 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0 16zm-24 64l-40 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-24 0z\"]\n};\nvar faFaceSmileBeam = {\n prefix: 'far',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zm40-89.3l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFaceGrinStars = {\n prefix: 'far',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM183.2 132.6c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L176 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L242.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm160 0c-1.3-2.8-4.1-4.6-7.2-4.6s-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L336 240.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L402.4 186c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7zm6.3 175.8c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5c10.4-16.1-6.8-32.5-25.5-28.1z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faAddressBook = {\n prefix: 'far',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M384 48c8.8 0 16 7.2 16 16V448c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H384zM96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM240 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H208zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"]\n};\nvar faContactBook = faAddressBook;\nvar faComments = {\n prefix: 'far',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M88.2 309.1c9.8-18.3 6.8-40.8-7.5-55.8C59.4 230.9 48 204 48 176c0-63.5 63.8-128 160-128s160 64.5 160 128s-63.8 128-160 128c-13.1 0-25.8-1.3-37.8-3.6c-10.4-2-21.2-.6-30.7 4.2c-4.1 2.1-8.3 4.1-12.6 6c-16 7.2-32.9 13.5-49.9 18c2.8-4.6 5.4-9.1 7.9-13.6c1.1-1.9 2.2-3.9 3.2-5.9zM0 176c0 41.8 17.2 80.1 45.9 110.3c-.9 1.7-1.9 3.5-2.8 5.1c-10.3 18.4-22.3 36.5-36.6 52.1c-6.6 7-8.3 17.2-4.6 25.9C5.8 378.3 14.4 384 24 384c43 0 86.5-13.3 122.7-29.7c4.8-2.2 9.6-4.5 14.2-6.8c15.1 3 30.9 4.5 47.1 4.5c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176zM432 480c16.2 0 31.9-1.6 47.1-4.5c4.6 2.3 9.4 4.6 14.2 6.8C529.5 498.7 573 512 616 512c9.6 0 18.2-5.7 22-14.5c3.8-8.8 2-19-4.6-25.9c-14.2-15.6-26.2-33.7-36.6-52.1c-.9-1.7-1.9-3.4-2.8-5.1C622.8 384.1 640 345.8 640 304c0-94.4-87.9-171.5-198.2-175.8c4.1 15.2 6.2 31.2 6.2 47.8l0 .6c87.2 6.7 144 67.5 144 127.4c0 28-11.4 54.9-32.7 77.2c-14.3 15-17.3 37.6-7.5 55.8c1.1 2 2.2 4 3.2 5.9c2.5 4.5 5.2 9 7.9 13.6c-17-4.5-33.9-10.7-49.9-18c-4.3-1.9-8.5-3.9-12.6-6c-9.5-4.8-20.3-6.2-30.7-4.2c-12.1 2.4-24.7 3.6-37.8 3.6c-61.7 0-110-26.5-136.8-62.3c-16 5.4-32.8 9.4-50 11.8C279 439.8 350 480 432 480z\"]\n};\nvar faPaste = {\n prefix: 'far',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M104.6 48H64C28.7 48 0 76.7 0 112V384c0 35.3 28.7 64 64 64h96V400H64c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H80c0 17.7 14.3 32 32 32h72.4C202 108.4 227.6 96 256 96h62c-7.1-27.6-32.2-48-62-48H215.4C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48zM144 56a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 464H256c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16l140.1 0L464 243.9V448c0 8.8-7.2 16-16 16zM256 512H448c35.3 0 64-28.7 64-64V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64z\"]\n};\nvar faFileClipboard = faPaste;\nvar faFaceGrinTongueSquint = {\n prefix: 'far',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V392.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm116-98.9c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faFaceFlushed = {\n prefix: 'far',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM160.4 248a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm216-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 336c-13.3 0-24 10.7-24 24s10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192zM160 176a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm144-80a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 0a80 80 0 1 0 -160 0 80 80 0 1 0 160 0z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faSquareCaretRight = {\n prefix: 'far',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M400 96c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320zM384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faSquareMinus = {\n prefix: 'far',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM152 232H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faCompass = {\n prefix: 'far',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm306.7 69.1L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'far',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 432c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0zm64-16c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFaceKissBeam = {\n prefix: 'far',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 41.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 427.1 257.4 432 240 432c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-68.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faLightbulb = {\n prefix: 'far',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M297.2 248.9C311.6 228.3 320 203.2 320 176c0-70.7-57.3-128-128-128S64 105.3 64 176c0 27.2 8.4 52.3 22.8 72.9c3.7 5.3 8.1 11.3 12.8 17.7l0 0c12.9 17.7 28.3 38.9 39.8 59.8c10.4 19 15.7 38.8 18.3 57.5H109c-2.2-12-5.9-23.7-11.8-34.5c-9.9-18-22.2-34.9-34.5-51.8l0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4l0 0 0 0c-12.3 16.8-24.6 33.7-34.5 51.8c-5.9 10.8-9.6 22.5-11.8 34.5H226.4c2.6-18.7 7.9-38.6 18.3-57.5c11.5-20.9 26.9-42.1 39.8-59.8l0 0 0 0 0 0c4.7-6.4 9-12.4 12.7-17.7zM192 128c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zm0 384c-44.2 0-80-35.8-80-80V416H272v16c0 44.2-35.8 80-80 80z\"]\n};\nvar faFlag = {\n prefix: 'far',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24V64 350.5 400v88c0 13.3 10.7 24 24 24s24-10.7 24-24V388l80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52V24zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8V334.7l-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5v-237z\"]\n};\nvar faSquareCheck = {\n prefix: 'far',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faCircleDot = {\n prefix: 'far',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'far',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM103 135c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9zm192 0c9.4-9.4 24.6-9.4 33.9 0l23 23 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-23 23 23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23-23-23c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faFutbol = {\n prefix: 'far',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M435.4 361.3l-89.7-6c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-22 87.2c-14.4 3.2-29.4 4.8-44.8 4.8s-30.3-1.7-44.8-4.8l-22-87.2c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-89.7 6C61.7 335.9 51.9 307 49 276.2L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15L100.4 118c19.9-22.4 44.6-40.5 72.4-52.7l69.1 57.6c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l69.1-57.6c27.8 12.2 52.5 30.3 72.4 52.7l-33.4 83.4c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9L463 276.2c-3 30.8-12.7 59.7-27.6 85.1zM256 48l.9 0h-1.8l.9 0zM56.7 196.2c.9-3 1.9-6.1 2.9-9.1l-2.9 9.1zM132 423l3.8 2.7c-1.3-.9-2.5-1.8-3.8-2.7zm248.1-.1c-1.3 1-2.7 2-4 2.9l4-2.9zm75.2-226.6l-3-9.2c1.1 3 2.1 6.1 3 9.2zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPenToSquare = {\n prefix: 'far',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152V424c0 48.6 39.4 88 88 88H360c48.6 0 88-39.4 88-88V312c0-13.3-10.7-24-24-24s-24 10.7-24 24V424c0 22.1-17.9 40-40 40H88c-22.1 0-40-17.9-40-40V152c0-22.1 17.9-40 40-40H200c13.3 0 24-10.7 24-24s-10.7-24-24-24H88z\"]\n};\nvar faEdit = faPenToSquare;\nvar faHourglassHalf = {\n prefix: 'far',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M0 24C0 10.7 10.7 0 24 0H360c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8V67c0 40.3-16 79-44.5 107.5L225.9 256l81.5 81.5C336 366 352 404.7 352 445v19h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V445c0-40.3 16-79 44.5-107.5L158.1 256 76.5 174.5C48 146 32 107.3 32 67V48H24C10.7 48 0 37.3 0 24zM110.5 371.5c-3.9 3.9-7.5 8.1-10.7 12.5H284.2c-3.2-4.4-6.8-8.6-10.7-12.5L192 289.9l-81.5 81.5zM284.2 128C297 110.4 304 89 304 67V48H80V67c0 22.1 7 43.4 19.8 61H284.2z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faEyeSlash = {\n prefix: 'far',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm9.4 130.3C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5l-41.9-33zM192 256c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5z\"]\n};\nvar faHand = {\n prefix: 'far',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M256 0c-25.3 0-47.2 14.7-57.6 36c-7-2.6-14.5-4-22.4-4c-35.3 0-64 28.7-64 64V261.5l-2.7-2.7c-25-25-65.5-25-90.5 0s-25 65.5 0 90.5L106.5 437c48 48 113.1 75 181 75H296h8c1.5 0 3-.1 4.5-.4c91.7-6.2 165-79.4 171.1-171.1c.3-1.5 .4-3 .4-4.5V160c0-35.3-28.7-64-64-64c-5.5 0-10.9 .7-16 2V96c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4C303.2 14.7 281.3 0 256 0zM240 96.1c0 0 0-.1 0-.1V64c0-8.8 7.2-16 16-16s16 7.2 16 16V95.9c0 0 0 .1 0 .1V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96c0 0 0 0 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16v55.9c0 0 0 .1 0 .1v80c0 13.3 10.7 24 24 24s24-10.7 24-24V160.1c0 0 0-.1 0-.1c0-8.8 7.2-16 16-16s16 7.2 16 16V332.9c-.1 .6-.1 1.3-.2 1.9c-3.4 69.7-59.3 125.6-129 129c-.6 0-1.3 .1-1.9 .2H296h-8.5c-55.2 0-108.1-21.9-147.1-60.9L52.7 315.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L119 336.4c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V96c0-8.8 7.2-16 16-16c8.8 0 16 7.1 16 15.9V232c0 13.3 10.7 24 24 24s24-10.7 24-24V96.1z\"]\n};\nvar faHandPaper = faHand;\nvar faHandSpock = {\n prefix: 'far',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M221.7 25.3L215.6 2.1l6.2 23.2zm48.9 28.4l23.2-6.2v0l-23.2 6.2zM193.3 74.3l-23.2 6.2 0 0 23.2-6.2zm46.5 175.3l-22.1 9.3c4.9 11.6 17.9 17.5 29.9 13.4s18.7-16.7 15.4-28.9l-23.2 6.2zm-51-121.1l-22.1 9.3v0l22.1-9.3zm-52.4-21.3l9.3 22.1h0l-9.3-22.1zm-21.3 52.4L93 168.8h0l22.1-9.3zm5.4 144.9l14.7-18.9h0l-14.7 18.9zm-56.1 7l18.9 14.7 0 0L64.4 311.4zm7 56.1L56.7 386.5h0l14.7-18.9zm92 71.6l-14.7 18.9 14.7-18.9zm300.1-48.5l23.3 5.8-23.3-5.8zm55.2-220.9l23.3 5.8-23.3-5.8zm-29.1-48.5l5.8-23.3-5.8 23.3zm-48.5 29.1l23.3 5.8v0l-23.3-5.8zM415 255l23.3 5.8 0 0L415 255zm-2.6-.5l23.6 4.2 0 0-23.6-4.2zM439.4 103l23.6 4.2v0L439.4 103zM407 56.6l-4.2 23.6L407 56.6zM360.6 89L337 84.8 360.6 89zM331.5 252.6l-23.6-4.2 0 0 23.6 4.2zm-8 .3l23.2-6.2 0 0-23.2 6.2zM336 488l.5-24-.5 24zm-157-138L193.8 331l-14.7 18.9zM227.9 48.5c8.5-2.3 17.3 2.8 19.6 11.4l46.4-12.3c-9.1-34.2-44.1-54.5-78.3-45.4l12.3 46.4zM216.5 68.1c-2.3-8.5 2.8-17.3 11.4-19.6L215.6 2.1c-34.2 9.1-54.5 44.1-45.4 78.3l46.4-12.3zM263 243.4L216.5 68.1 170.1 80.4l46.5 175.3L263 243.4zM166.7 137.8l51 121.1L262 240.2 211 119.2l-44.2 18.6zm-21-8.5c8.1-3.4 17.5 .4 21 8.5L211 119.2C197.3 86.6 159.7 71.3 127.2 85l18.6 44.2zm-8.5 21c-3.4-8.1 .4-17.5 8.5-21L127.2 85C94.6 98.7 79.3 136.3 93 168.8l44.2-18.6zm76.2 181l-76.2-181L93 168.8l76.2 181 44.2-18.6zm-107.6-7.8l58.5 45.5L193.8 331l-58.5-45.5-29.5 37.9zm-22.5 2.8c5.4-7 15.5-8.2 22.5-2.8l29.5-37.9c-27.9-21.7-68.1-16.7-89.8 11.2l37.9 29.5zm2.8 22.5c-7-5.4-8.2-15.5-2.8-22.5L45.5 296.7c-21.7 27.9-16.7 68.1 11.2 89.8l29.5-37.9zm92 71.6l-92-71.6L56.7 386.5l92 71.6 29.5-37.9zM305.9 464c-46.3 0-91.2-15.4-127.7-43.8l-29.5 37.9C193.6 493 248.9 512 305.9 512V464zm30.1 0H305.9v48H336V464zm2.8 0c-.8 0-1.5 0-2.3 0l-1 48c1.1 0 2.2 0 3.3 0V464zm101.5-79.2C428.7 431.3 386.8 464 338.8 464v48c70 0 131.1-47.7 148-115.6l-46.6-11.6zm55.2-220.9L440.3 384.8l46.6 11.6 55.2-220.9-46.6-11.6zm-11.6-19.4c8.6 2.1 13.8 10.8 11.6 19.4l46.6 11.6c8.6-34.3-12.3-69-46.6-77.6l-11.6 46.6zm-19.4 11.6c2.1-8.6 10.8-13.8 19.4-11.6l11.6-46.6c-34.3-8.6-69 12.3-77.6 46.6l46.6 11.6zM438.3 260.8l26.2-104.7-46.6-11.6L391.7 249.2l46.6 11.6zM413.7 280c11.6 0 21.7-7.9 24.6-19.2l-46.6-11.6c2.5-10.1 11.6-17.2 22-17.2v48zm-24.9-29.7c-2.8 15.5 9.2 29.7 24.9 29.7V232c14.1 0 24.8 12.8 22.3 26.7l-47.3-8.4zM415.8 98.8L388.8 250.3l47.3 8.4L463 107.2l-47.3-8.4zm-13-18.6c8.7 1.5 14.5 9.9 13 18.6l47.3 8.4c6.2-34.8-17-68-51.8-74.2l-8.4 47.3zm-18.6 13c1.5-8.7 9.9-14.5 18.6-13L411.2 33c-34.8-6.2-68 17-74.2 51.8l47.3 8.4zM355.2 256.8L384.2 93.2 337 84.8 307.9 248.4l47.3 8.4zM327.5 280c13.6 0 25.3-9.8 27.7-23.2l-47.3-8.4c1.7-9.5 9.9-16.4 19.6-16.4v48zm-27.2-20.9c3.3 12.3 14.4 20.9 27.2 20.9V232c9 0 16.9 6.1 19.2 14.8l-46.4 12.3zM247.5 59.9l52.8 199.2 46.4-12.3L293.9 47.6 247.5 59.9zM360 488c0 13.5-11.1 24.3-24.5 24l1-48c-13.5-.3-24.5 10.5-24.5 24h48zm-24 24c13.3 0 24-10.8 24-24H312c0-13.2 10.7-24 24-24v48zM169.2 349.8c-6.4-15.2 11.6-29 24.6-18.8l-29.5 37.9c26 20.2 61.9-7.3 49.1-37.7l-44.2 18.6z\"]\n};\nvar faFaceKiss = {\n prefix: 'far',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm304.7 25.7c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 411.1 257.4 416 240 416c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.8-.5-.1-.1-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiss = faFaceKiss;\nvar faFaceGrinTongue = {\n prefix: 'far',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M464 256c0-114.9-93.1-208-208-208S48 141.1 48 256c0 81.7 47.1 152.4 115.7 186.4c-2.4-8.4-3.7-17.3-3.7-26.4V363.6c-8.9-8-16.7-17.1-23.1-27.1c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1c-6.4 9.9-14.2 19-23 27V416c0 9.2-1.3 18-3.7 26.4C416.9 408.4 464 337.7 464 256zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 416V378.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V416c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'far',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M104 0C90.7 0 80 10.7 80 24c0 11.2 7.6 20.6 18 23.2c-7.8 8-16.1 17-24.4 27C38.2 116.7 0 178.8 0 250.9c0 44.8 24.6 72.2 48 87.8V352H96V325c0-9-5-17.2-13-21.3c-18-9.3-35-24.7-35-52.7c0-55.5 29.8-106.8 62.4-145.9c16-19.2 32.1-34.8 44.2-45.5c1.9-1.7 3.7-3.2 5.3-4.6c1.7 1.4 3.4 3 5.3 4.6c12.1 10.7 28.2 26.3 44.2 45.5c5.3 6.3 10.5 13 15.5 20L159 191c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57.8-57.8c12.8 25.9 21.2 54.3 21.2 83.8c0 28-17 43.4-35 52.7c-8 4.1-13 12.3-13 21.3v27h48V338.7c23.4-15.6 48-42.9 48-87.8c0-72.1-38.2-134.2-73.6-176.7c-8.3-9.9-16.6-19-24.4-27c10.3-2.7 18-12.1 18-23.2c0-13.3-10.7-24-24-24H160 104zM52.7 464l16.6-32H250.8l16.6 32H52.7zm207.9-80H59.5c-12 0-22.9 6.7-28.4 17.3L4.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C0 493.8 18.2 512 40.8 512H279.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2c-5.5-10.6-16.5-17.3-28.4-17.3z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'far',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faFaceGrinWide = {\n prefix: 'far',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM224 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm96 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faFaceFrownOpen = {\n prefix: 'far',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM182.4 382.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'far',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M64 64V241.6c5.2-1 10.5-1.6 16-1.6H96V208 64c0-8.8-7.2-16-16-16s-16 7.2-16 16zM80 288c-17.7 0-32 14.3-32 32c0 0 0 0 0 0v24c0 66.3 53.7 120 120 120h48c52.5 0 97.1-33.7 113.4-80.7c-3.1 .5-6.2 .7-9.4 .7c-20 0-37.9-9.2-49.7-23.6c-9 4.9-19.4 7.6-30.3 7.6c-15.1 0-29-5.3-40-14c-11 8.8-24.9 14-40 14H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H120 80zM0 320s0 0 0 0c0-18 6-34.6 16-48V64C16 28.7 44.7 0 80 0s64 28.7 64 64v82c5.1-1.3 10.5-2 16-2c25.3 0 47.2 14.7 57.6 36c7-2.6 14.5-4 22.4-4c20 0 37.9 9.2 49.7 23.6c9-4.9 19.4-7.6 30.3-7.6c35.3 0 64 28.7 64 64v64 24c0 92.8-75.2 168-168 168H168C75.2 512 0 436.8 0 344V320zm336-64c0-8.8-7.2-16-16-16s-16 7.2-16 16v48 16c0 8.8 7.2 16 16 16s16-7.2 16-16V256zM160 240c5.5 0 10.9 .7 16 2v-2V208c0-8.8-7.2-16-16-16s-16 7.2-16 16v32h16zm64 24v40c0 8.8 7.2 16 16 16s16-7.2 16-16V256 240c0-8.8-7.2-16-16-16s-16 7.2-16 16v24z\"]\n};\nvar faBookmark = {\n prefix: 'far',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48C0 21.5 21.5 0 48 0l0 48V441.4l130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4V48H48V0H336c26.5 0 48 21.5 48 48V488c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488V48z\"]\n};\nvar faHandPointDown = {\n prefix: 'far',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M64 448l0-177.6c5.2 1 10.5 1.6 16 1.6l16 0 0 32 0 144c0 8.8-7.2 16-16 16s-16-7.2-16-16zM80 224c-17.7 0-32-14.3-32-32c0 0 0 0 0 0l0-24c0-66.3 53.7-120 120-120l48 0c52.5 0 97.1 33.7 113.4 80.7c-3.1-.5-6.2-.7-9.4-.7c-20 0-37.9 9.2-49.7 23.6c-9-4.9-19.4-7.6-30.3-7.6c-15.1 0-29 5.3-40 14c-11-8.8-24.9-14-40-14l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-40 0-40 0zM0 192s0 0 0 0c0 18 6 34.6 16 48l0 208c0 35.3 28.7 64 64 64s64-28.7 64-64l0-82c5.1 1.3 10.5 2 16 2c25.3 0 47.2-14.7 57.6-36c7 2.6 14.5 4 22.4 4c20 0 37.9-9.2 49.7-23.6c9 4.9 19.4 7.6 30.3 7.6c35.3 0 64-28.7 64-64l0-64 0-24C384 75.2 308.8 0 216 0L168 0C75.2 0 0 75.2 0 168l0 24zm336 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64zM160 272c5.5 0 10.9-.7 16-2l0 2 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32 16 0zm64-24l0-40c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-24z\"]\n};\nvar faFolder = {\n prefix: 'far',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M0 96C0 60.7 28.7 32 64 32H196.1c19.1 0 37.4 7.6 50.9 21.1L289.9 96H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16H286.6c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7H64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faUser = {\n prefix: 'far',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464H398.7c-8.9-63.3-63.3-112-129-112H178.3c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'far',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M48 416c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80c-8.8 0-16 7.2-16 16l0 320zm16 64c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480zm64-224c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faStar = {\n prefix: 'far',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.6 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z\"]\n};\nvar faChessKnight = {\n prefix: 'far',\n iconName: 'chess-knight',\n icon: [448, 512, [9822], \"f441\", \"M226.6 48H117.3l17.1 12.8c6 4.5 9.6 11.6 9.6 19.2s-3.6 14.7-9.6 19.2l-6.5 4.9c-10 7.5-16 19.3-16 31.9l-.3 91c0 10.2 4.9 19.9 13.2 25.8l1.9 1.3c9.9 7.1 23.3 7 33.2-.1l49.9-36.3c10.7-7.8 25.7-5.4 33.5 5.3s5.4 25.7-5.3 33.5l-49.9 36.3-53.8 39.1c-7.3 5.3-13 12.2-16.9 20.1H66.8c5.3-22.1 17.8-41.9 35.9-56.3c-1.3-.8-2.6-1.7-3.8-2.6L97 291.8c-21-15-33.4-39.2-33.3-65l.3-91c.1-19.8 6.7-38.7 18.6-53.9l-.4-.3C70.7 73 64 59.6 64 45.3C64 20.3 84.3 0 109.3 0H226.6C331.2 0 416 84.8 416 189.4c0 11.1-1 22.2-2.9 33.2L390.1 352H341.3l24.5-137.8c1.5-8.2 2.2-16.5 2.2-24.8C368 111.3 304.7 48 226.6 48zM85.2 432L68.7 464H379.3l-16.6-32H85.2zm315.7-30.7l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H56.8C34.2 512 16 493.8 16 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C52.5 390.7 63.5 384 75.5 384h297c12 0 22.9 6.7 28.4 17.3zM172 128a20 20 0 1 1 0 40 20 20 0 1 1 0-40z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'far',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm2.8-183.3l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 141.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faFaceLaugh = {\n prefix: 'far',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'far',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M384 480h48c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224H144c-11.4 0-21.9 6-27.6 15.9L48 357.1V96c0-8.8 7.2-16 16-16H181.5c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8H416c8.8 0 16 7.2 16 16v32h48V160c0-35.3-28.7-64-64-64H298.5c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H87.7 384z\"]\n};\nvar faClipboard = {\n prefix: 'far',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M280 64h40c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64h40 9.6C121 27.5 153.3 0 192 0s71 27.5 78.4 64H280zM64 112c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H304v24c0 13.3-10.7 24-24 24H192 104c-13.3 0-24-10.7-24-24V112H64zm128-8a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faChessQueen = {\n prefix: 'far',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-95.2-8c-18.1 0-31.3 12.8-35.6 26.9c-8 26.2-32.4 45.2-61.2 45.2c-10 0-19.4-2.3-27.7-6.3c-7.6-3.7-16.7-3.3-24 1.2C.7 162.1-3.1 177.1 3.7 188.9L97.6 352H153l-83-144.1c40.5-2.2 75.3-25.9 93.1-59.8c22 26.8 55.4 43.9 92.8 43.9s70.8-17.1 92.8-43.9c17.8 34 52.6 57.7 93.1 59.8L359 352h55.4l93.9-163.1c6.8-11.7 3-26.7-8.6-33.8c-7.3-4.5-16.4-4.9-24-1.2c-8.4 4-17.7 6.3-27.7 6.3c-28.8 0-53.2-19-61.2-45.2C382.5 100.8 369.3 88 351.2 88c-14.5 0-26.3 8.5-32.4 19.3c-12.4 22-35.9 36.7-62.8 36.7s-50.4-14.8-62.8-36.7C187.1 96.5 175.4 88 160.8 88zM133.2 432H378.8l16.6 32H116.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3h-265c-12 0-22.9 6.7-28.4 17.3L68.6 452.5c-3 5.8-4.6 12.2-4.6 18.7c0 22.5 18.2 40.8 40.8 40.8H407.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z\"]\n};\nvar faHandBackFist = {\n prefix: 'far',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 64c0-8.8 7.2-16 16-16s16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16V264c0 31.3-20 58-48 67.9c-9.6 3.4-16 12.5-16 22.6V488c0 13.3 10.7 24 24 24s24-10.7 24-24V370.2c38-20.1 64-60.1 64-106.2V160c0-35.3-28.7-64-64-64c-2.8 0-5.6 .2-8.3 .5C332.8 77.1 311.9 64 288 64c-2.8 0-5.6 .2-8.3 .5C268.8 45.1 247.9 32 224 32c-2.8 0-5.6 .2-8.3 .5C204.8 13.1 183.9 0 160 0C124.7 0 96 28.7 96 64v64.3c-11.7 7.4-22.5 16.4-32 26.9l17.8 16.1L64 155.2l-9.4 10.5C40 181.8 32 202.8 32 224.6v12.8c0 49.6 24.2 96.1 64.8 124.5l13.8-19.7L96.8 361.9l8.9 6.2c6.9 4.8 14.4 8.6 22.3 11.3V488c0 13.3 10.7 24 24 24s24-10.7 24-24V359.9c0-12.6-9.8-23.1-22.4-23.9c-7.3-.5-14.3-2.9-20.3-7.1l-13.1 18.7 13.1-18.7-8.9-6.2C96.6 303.1 80 271.3 80 237.4V224.6c0-9.9 3.7-19.4 10.3-26.8l9.4-10.5c3.8-4.2 7.9-8.1 12.3-11.6V208c0 8.8 7.2 16 16 16s16-7.2 16-16V142.3 128 64z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'far',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-320c0-8.8-7.2-16-16-16L64 80zM0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm224 64c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faChartBar = {\n prefix: 'far',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M24 32c13.3 0 24 10.7 24 24V408c0 13.3 10.7 24 24 24H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-39.8 0-72-32.2-72-72V56C0 42.7 10.7 32 24 32zM128 136c0-13.3 10.7-24 24-24l208 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-208 0c-13.3 0-24-10.7-24-24zm24 72H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 96H424c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faBarChart = faChartBar;\nvar faWindowRestore = {\n prefix: 'far',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 48H208c-17.7 0-32 14.3-32 32V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V336h16c17.7 0 32-14.3 32-32V80c0-17.7-14.3-32-32-32zM48 448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V256H48V448zM64 128H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64z\"]\n};\nvar faSquarePlus = {\n prefix: 'far',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faImage = {\n prefix: 'far',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M448 80c8.8 0 16 7.2 16 16V415.8l-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3V96c0-8.8 7.2-16 16-16H448zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faFolderClosed = {\n prefix: 'far',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M251.7 127.6l0 0c10.5 10.5 24.7 16.4 39.6 16.4H448c8.8 0 16 7.2 16 16v32H48V96c0-8.8 7.2-16 16-16H197.5c4.2 0 8.3 1.7 11.3 4.7l33.9-33.9L208.8 84.7l42.9 42.9zM48 240H464V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V240zM285.7 93.7L242.7 50.7c-12-12-28.3-18.7-45.3-18.7H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H291.3c-2.1 0-4.2-.8-5.7-2.3z\"]\n};\nvar faLemon = {\n prefix: 'far',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M368 80c-3.2 0-6.2 .4-8.9 1.3C340 86.8 313 91.9 284.8 84.6C227.4 69.7 160.2 92 110.1 142.1S37.7 259.4 52.6 316.8c7.3 28.2 2.2 55.2-3.3 74.3c-.8 2.8-1.3 5.8-1.3 8.9c0 17.7 14.3 32 32 32c3.2 0 6.2-.4 8.9-1.3c19.1-5.5 46.1-10.7 74.3-3.3c57.4 14.9 124.6-7.4 174.7-57.5s72.4-117.3 57.5-174.7c-7.3-28.2-2.2-55.2 3.3-74.3c.8-2.8 1.3-5.8 1.3-8.9c0-17.7-14.3-32-32-32zm0-48c44.2 0 80 35.8 80 80c0 7.7-1.1 15.2-3.1 22.3c-4.6 15.8-7.1 32.9-3 48.9c20.1 77.6-10.9 161.5-70 220.7s-143.1 90.2-220.7 70c-16-4.1-33-1.6-48.9 3c-7.1 2-14.6 3.1-22.3 3.1c-44.2 0-80-35.8-80-80c0-7.7 1.1-15.2 3.1-22.3c4.6-15.8 7.1-32.9 3-48.9C-14 251.3 17 167.3 76.2 108.2S219.3 18 296.8 38.1c16 4.1 33 1.6 48.9-3c7.1-2 14.6-3.1 22.3-3.1zM246.7 167c-52 15.2-96.5 59.7-111.7 111.7c-3.7 12.7-17.1 20-29.8 16.3s-20-17.1-16.3-29.8c19.8-67.7 76.6-124.5 144.3-144.3c12.7-3.7 26.1 3.6 29.8 16.3s-3.6 26.1-16.3 29.8z\"]\n};\nvar faHandshake = {\n prefix: 'far',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M272.2 64.6l-51.1 51.1c-15.3 4.2-29.5 11.9-41.5 22.5L153 161.9C142.8 171 129.5 176 115.8 176H96V304c20.4 .6 39.8 8.9 54.3 23.4l35.6 35.6 7 7 0 0L219.9 397c6.2 6.2 16.4 6.2 22.6 0c1.7-1.7 3-3.7 3.7-5.8c2.8-7.7 9.3-13.5 17.3-15.3s16.4 .6 22.2 6.5L296.5 393c11.6 11.6 30.4 11.6 41.9 0c5.4-5.4 8.3-12.3 8.6-19.4c.4-8.8 5.6-16.6 13.6-20.4s17.3-3 24.4 2.1c9.4 6.7 22.5 5.8 30.9-2.6c9.4-9.4 9.4-24.6 0-33.9L340.1 243l-35.8 33c-27.3 25.2-69.2 25.6-97 .9c-31.7-28.2-32.4-77.4-1.6-106.5l70.1-66.2C303.2 78.4 339.4 64 377.1 64c36.1 0 71 13.3 97.9 37.2L505.1 128H544h40 40c8.8 0 16 7.2 16 16V352c0 17.7-14.3 32-32 32H576c-11.8 0-22.2-6.4-27.7-16H463.4c-3.4 6.7-7.9 13.1-13.5 18.7c-17.1 17.1-40.8 23.8-63 20.1c-3.6 7.3-8.5 14.1-14.6 20.2c-27.3 27.3-70 30-100.4 8.1c-25.1 20.8-62.5 19.5-86-4.1L159 404l-7-7-35.6-35.6c-5.5-5.5-12.7-8.7-20.4-9.3C96 369.7 81.6 384 64 384H32c-17.7 0-32-14.3-32-32V144c0-8.8 7.2-16 16-16H56 96h19.8c2 0 3.9-.7 5.3-2l26.5-23.6C175.5 77.7 211.4 64 248.7 64H259c4.4 0 8.9 .2 13.2 .6zM544 320V176H496c-5.9 0-11.6-2.2-15.9-6.1l-36.9-32.8c-18.2-16.2-41.7-25.1-66.1-25.1c-25.4 0-49.8 9.7-68.3 27.1l-70.1 66.2c-10.3 9.8-10.1 26.3 .5 35.7c9.3 8.3 23.4 8.1 32.5-.3l71.9-66.4c9.7-9 24.9-8.4 33.9 1.4s8.4 24.9-1.4 33.9l-.8 .8 74.4 74.4c10 10 16.5 22.3 19.4 35.1H544zM64 336a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm528 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faGem = {\n prefix: 'far',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M168.5 72L256 165l87.5-93h-175zM383.9 99.1L311.5 176h129L383.9 99.1zm50 124.9H256 78.1L256 420.3 433.9 224zM71.5 176h129L128.1 99.1 71.5 176zm434.3 40.1l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4z\"]\n};\nvar faCirclePlay = {\n prefix: 'far',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c7.6-4.2 16.8-4.1 24.3 .5l144 88c7.1 4.4 11.5 12.1 11.5 20.5s-4.4 16.1-11.5 20.5l-144 88c-7.4 4.5-16.7 4.7-24.3 .5s-12.3-12.2-12.3-20.9V168c0-8.7 4.7-16.7 12.3-20.9z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faCircleCheck = {\n prefix: 'far',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L369 209z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'far',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm192-96H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faIdBadge = {\n prefix: 'far',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M256 48V64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H256zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'far',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zm86.9-85.1l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faRegistered = {\n prefix: 'far',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152V264v96c0 13.3 10.7 24 24 24s24-10.7 24-24V288h60.9l37.2 81.9c5.5 12.1 19.7 17.4 31.8 11.9s17.4-19.7 11.9-31.8L315.7 275c21.8-14.3 36.3-39 36.3-67c0-44.2-35.8-80-80-80H184c-13.3 0-24 10.7-24 24zm48 88V176h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H208z\"]\n};\nvar faAddressCard = {\n prefix: 'far',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM208 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H304c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H176zM376 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faFaceTired = {\n prefix: 'far',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.5 64.3C196.1 302.1 223.8 288 256 288s59.9 14.1 79.5 32.3C354.5 338.1 368 362 368 384c0 5.4-2.7 10.4-7.2 13.4s-10.2 3.4-15.2 1.3l-17.2-7.5c-22.8-10-47.5-15.1-72.4-15.1s-49.6 5.2-72.4 15.1l-17.2 7.5c-4.9 2.2-10.7 1.7-15.2-1.3s-7.2-8-7.2-13.4c0-22 13.5-45.9 32.5-63.7zm-43-173.6l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faTired = faFaceTired;\nvar faFontAwesome = {\n prefix: 'far',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M48 56c0-13.3-10.7-24-24-24S0 42.7 0 56V456c0 13.3 10.7 24 24 24s24-10.7 24-24V124.2l12.5-2.4c16.7-3.2 31.5-8.5 44.2-13.1l0 0 0 0c3.7-1.3 7.1-2.6 10.4-3.7c15.2-5.2 30.4-9.1 51.2-9.1c25.6 0 43 6 63.5 13.3l.5 .2c20.9 7.4 44.8 15.9 79.1 15.9c32.4 0 53.7-6.8 90.5-19.6V342.9l-9.5 3.3c-41.5 14.4-55.2 19.2-81 19.2c-25.7 0-43.1-6-63.6-13.3l-.6-.2c-20.8-7.4-44.8-15.8-79-15.8c-16.8 0-31 2-43.9 5c-12.9 3-20.9 16-17.9 28.9s16 20.9 28.9 17.9c9.6-2.2 20.1-3.7 32.9-3.7c25.6 0 43 6 63.5 13.3l.5 .2c20.9 7.4 44.8 15.9 79.1 15.9c34.4 0 56.4-7.7 97.8-22.2c7.5-2.6 15.5-5.4 24.4-8.5l16.2-5.5V360 72 38.4L416.2 49.3c-9.7 3.3-18.2 6.3-25.7 8.9c-41.5 14.4-55.2 19.2-81 19.2c-25.7 0-43.1-6-63.6-13.3l-.6-.2c-20.8-7.4-44.8-15.8-79-15.8c-27.8 0-48.5 5.5-66.6 11.6c-4.9 1.7-9.3 3.3-13.6 4.8c-11.9 4.3-22 7.9-34.7 10.3L48 75.4V56z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faFaceSmileWink = {\n prefix: 'far',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'far',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm55 241.1c-3.8-12.7-17.2-19.9-29.9-16.1s-19.9 17.2-16.1 29.9l48 160c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l25-83.4 25 83.4c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l48-160c3.8-12.7-3.4-26.1-16.1-29.9s-26.1 3.4-29.9 16.1l-25 83.4-25-83.4c-3-10.2-12.4-17.1-23-17.1s-19.9 7-23 17.1l-25 83.4-25-83.4z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'far',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm72 208c-13.3 0-24 10.7-24 24V336v56c0 13.3 10.7 24 24 24s24-10.7 24-24V360h44c42 0 76-34 76-76s-34-76-76-76H136zm68 104H160V256h44c15.5 0 28 12.5 28 28s-12.5 28-28 28z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'far',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5v13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1V200.5c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2V456c0 4.4-3.6 8-8 8H56c-4.4 0-8-3.6-8-8V276.2zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5V456c0 30.9 25.1 56 56 56H456c30.9 0 56-25.1 56-56V200.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z\"]\n};\nvar faFileZipper = {\n prefix: 'far',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16h48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16h48v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm48 112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H128c-8.8 0-16 7.2-16 16zm-6.3 71.8L82.1 335.9c-1.4 5.4-2.1 10.9-2.1 16.4c0 35.2 28.8 63.7 64 63.7s64-28.5 64-63.7c0-5.5-.7-11.1-2.1-16.4l-23.5-88.2c-3.7-14-16.4-23.8-30.9-23.8H136.6c-14.5 0-27.2 9.7-30.9 23.8zM128 336h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H128c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'far',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M384 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H384zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faSnowflake = {\n prefix: 'far',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c13.3 0 24 10.7 24 24V70.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-57 57v76.5l66.2-38.2 20.9-77.8c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4L373 142.2l37.1-21.4c11.5-6.6 26.2-2.7 32.8 8.8s2.7 26.2-8.8 32.8L397 183.8l31.5 8.4c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-77.8-20.9L272 256l66.2 38.2 77.8-20.9c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4L397 328.2l37.1 21.4c11.5 6.6 15.4 21.3 8.8 32.8s-21.3 15.4-32.8 8.8L373 369.8l8.4 31.5c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-20.9-77.8L248 297.6v76.5l57 57c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-23-23V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V441.9l-23 23c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V297.6l-66.2 38.2-20.9 77.8c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4L75 369.8 37.9 391.2c-11.5 6.6-26.2 2.7-32.8-8.8s-2.7-26.2 8.8-32.8L51 328.2l-31.5-8.4c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l77.8 20.9L176 256l-66.2-38.2L31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4L51 183.8 13.9 162.4c-11.5-6.6-15.4-21.3-8.8-32.8s21.3-15.4 32.8-8.8L75 142.2l-8.4-31.5c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l20.9 77.8L200 214.4V137.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faNewspaper = {\n prefix: 'far',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M168 80c-13.3 0-24 10.7-24 24V408c0 8.4-1.4 16.5-4.1 24H440c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H168zM72 480c-39.8 0-72-32.2-72-72V112C0 98.7 10.7 88 24 88s24 10.7 24 24V408c0 13.3 10.7 24 24 24s24-10.7 24-24V104c0-39.8 32.2-72 72-72H440c39.8 0 72 32.2 72 72V408c0 39.8-32.2 72-72 72H72zM176 136c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24v80c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V136zm200-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H376c-13.3 0-24-10.7-24-24s10.7-24 24-24zM200 272H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zm0 80H408c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'far',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M338.9 446.8c-25.4 11-53.4 17.2-82.9 17.2C141.1 464 48 370.9 48 256S141.1 48 256 48s208 93.1 208 208c0 22.4-3.5 43.9-10.1 64.1c3.1 4.5 5.7 9.4 7.8 14.6c12.7-1.6 25.1 .4 36.2 5c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-6.5-25.3zM296 316c0-6.9-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4C258.7 276.9 241.4 272 224 272c-3.6 0-6.8 2.5-7.7 6s.6 7.2 3.8 9l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0 0 0c-2.5 1.4-4.1 4.1-4.1 7s1.6 5.6 4.1 7l0 0 0 0 0 0 .2 .1c.2 .1 .5 .3 .9 .5c.8 .5 2 1.2 3.4 2.1c2.8 1.9 6.5 4.5 10.2 7.6c3.7 3.1 7.2 6.6 9.6 10.1c2.5 3.5 3.5 6.4 3.5 8.6s-1 5-3.5 8.6c-2.5 3.5-5.9 6.9-9.6 10.1c-3.7 3.1-7.4 5.7-10.2 7.6c-1.4 .9-2.6 1.6-3.4 2.1c-.4 .2-.7 .4-.9 .5l-.2 .1 0 0 0 0 0 0 0 0c-3.2 1.8-4.7 5.5-3.8 9s4.1 6 7.7 6c17.4 0 34.7-4.9 47.9-12.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3s-3.1-13.2-7.3-18.3c-4.3-5.2-10.1-9.7-16.7-13.4c-2.7-1.5-5.7-3-8.7-4.3c3.1-1.3 6-2.7 8.7-4.3c6.6-3.7 12.5-8.2 16.7-13.4c4.3-5.1 7.3-11.4 7.3-18.3zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm159.3-20c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C375.7 186.8 355 180 335.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faStarHalfStroke = {\n prefix: 'far',\n iconName: 'star-half-stroke',\n icon: [640, 512, [\"star-half-alt\"], \"f5c0\", \"M341.5 13.5C337.5 5.2 329.1 0 319.9 0s-17.6 5.2-21.6 13.5L229.7 154.8 76.5 177.5c-9 1.3-16.5 7.6-19.3 16.3s-.5 18.1 5.9 24.5L174.2 328.4 148 483.9c-1.5 9 2.2 18.1 9.7 23.5s17.3 6 25.3 1.7l137-73.2 137 73.2c8.1 4.3 17.9 3.7 25.3-1.7s11.2-14.5 9.7-23.5L465.6 328.4 576.8 218.2c6.5-6.4 8.7-15.9 5.9-24.5s-10.3-14.9-19.3-16.3L410.1 154.8 341.5 13.5zM320 384.7V79.1l52.5 108.1c3.5 7.1 10.2 12.1 18.1 13.3l118.3 17.5L423 303c-5.5 5.5-8.1 13.3-6.8 21l20.2 119.6L331.2 387.5c-3.5-1.9-7.4-2.8-11.2-2.8z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faFileExcel = {\n prefix: 'far',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M48 448V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm90.9 233.3c-8.1-10.5-23.2-12.3-33.7-4.2s-12.3 23.2-4.2 33.7L161.6 320l-44.5 57.3c-8.1 10.5-6.3 25.5 4.2 33.7s25.5 6.3 33.7-4.2L192 359.1l37.1 47.6c8.1 10.5 23.2 12.3 33.7 4.2s12.3-23.2 4.2-33.7L222.4 320l44.5-57.3c8.1-10.5 6.3-25.5-4.2-33.7s-25.5-6.3-33.7 4.2L192 280.9l-37.1-47.6z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'far',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM217.6 228.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'far',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M48.2 66.8c-.1-.8-.2-1.7-.2-2.5c0-.1 0-.1 0-.2c0-8.8 7.2-16 16-16c.9 0 1.9 .1 2.8 .2C74.3 49.5 80 56.1 80 64c0 8.8-7.2 16-16 16c-7.9 0-14.5-5.7-15.8-13.2zM0 64c0 26.9 16.5 49.9 40 59.3V228.7C16.5 238.1 0 261.1 0 288c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H324.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V123.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H123.3C113.9 16.5 90.9 0 64 0C28.7 0 0 28.7 0 64zm368 0a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM324.7 88c6.5 16 19.3 28.9 35.3 35.3V228.7c-16 6.5-28.9 19.3-35.3 35.3H123.3c-6.5-16-19.3-28.9-35.3-35.3V123.3c16-6.5 28.9-19.3 35.3-35.3H324.7zM384 272a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM80 288c0 7.9-5.7 14.5-13.2 15.8c-.8 .1-1.7 .2-2.5 .2l-.2 0c-8.8 0-16-7.2-16-16c0-.9 .1-1.9 .2-2.8C49.5 277.7 56.1 272 64 272c8.8 0 16 7.2 16 16zm391.3-40h45.4c6.5 16 19.3 28.9 35.3 35.3V388.7c-16 6.5-28.9 19.3-35.3 35.3H315.3c-6.5-16-19.3-28.9-35.3-35.3V352H232v36.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64c26.9 0 49.9-16.5 59.3-40H516.7c9.5 23.5 32.5 40 59.3 40c35.3 0 64-28.7 64-64c0-26.9-16.5-49.9-40-59.3V283.3c23.5-9.5 40-32.5 40-59.3c0-35.3-28.7-64-64-64c-26.9 0-49.9 16.5-59.3 40H448v16.4c9.8 8.8 17.8 19.5 23.3 31.6zm88.9-26.7a16 16 0 1 1 31.5 5.5 16 16 0 1 1 -31.5-5.5zM271.8 450.7a16 16 0 1 1 -31.5-5.5 16 16 0 1 1 31.5 5.5zm301.5 13c-7.5-1.3-13.2-7.9-13.2-15.8c0-8.8 7.2-16 16-16c7.9 0 14.5 5.7 15.8 13.2l0 .1c.1 .9 .2 1.8 .2 2.7c0 8.8-7.2 16-16 16c-.9 0-1.9-.1-2.8-.2z\"]\n};\nvar faCircleRight = {\n prefix: 'far',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1c-4.2-4.5-10.1-7.1-16.3-7.1C266 128 256 138 256 150.3V208H160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h96v57.7c0 12.3 10 22.3 22.3 22.3c6.2 0 12.1-2.6 16.3-7.1l99.9-107.1c3.5-3.8 5.5-8.7 5.5-13.8s-2-10.1-5.5-13.8L294.6 135.1z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faFaceRollingEyes = {\n prefix: 'far',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM168 376c0 13.3 10.7 24 24 24H320c13.3 0 24-10.7 24-24s-10.7-24-24-24H192c-13.3 0-24 10.7-24 24zm-8-104c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm192-32c-26.5 0-48-21.5-48-48c0-14.3 6.3-27.2 16.2-36c-.2 1.3-.2 2.6-.2 4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1.4-.1-2.7-.2-4c10 8.8 16.2 21.7 16.2 36c0 26.5-21.5 48-48 48zm0 32a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'far',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M48 115.8C38.2 107 32 94.2 32 80c0-26.5 21.5-48 48-48c14.2 0 27 6.2 35.8 16H460.2c8.8-9.8 21.6-16 35.8-16c26.5 0 48 21.5 48 48c0 14.2-6.2 27-16 35.8V396.2c9.8 8.8 16 21.6 16 35.8c0 26.5-21.5 48-48 48c-14.2 0-27-6.2-35.8-16H115.8c-8.8 9.8-21.6 16-35.8 16c-26.5 0-48-21.5-48-48c0-14.2 6.2-27 16-35.8V115.8zM125.3 96c-4.8 13.6-15.6 24.4-29.3 29.3V386.7c13.6 4.8 24.4 15.6 29.3 29.3H450.7c4.8-13.6 15.6-24.4 29.3-29.3V125.3c-13.6-4.8-24.4-15.6-29.3-29.3H125.3zm2.7 64c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"]\n};\nvar faHeart = {\n prefix: 'far',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M225.8 468.2l-2.5-2.3L48.1 303.2C17.4 274.7 0 234.7 0 192.8v-3.3c0-70.4 50-130.8 119.2-144C158.6 37.9 198.9 47 231 69.6c9 6.4 17.4 13.8 25 22.3c4.2-4.8 8.7-9.2 13.5-13.3c3.7-3.2 7.5-6.2 11.5-9c0 0 0 0 0 0C313.1 47 353.4 37.9 392.8 45.4C462 58.6 512 119.1 512 189.5v3.3c0 41.9-17.4 81.9-48.1 110.4L288.7 465.9l-2.5 2.3c-8.2 7.6-19 11.9-30.2 11.9s-22-4.2-30.2-11.9zM239.1 145c-.4-.3-.7-.7-1-1.1l-17.8-20c0 0-.1-.1-.1-.1c0 0 0 0 0 0c-23.1-25.9-58-37.7-92-31.2C81.6 101.5 48 142.1 48 189.5v3.3c0 28.5 11.9 55.8 32.8 75.2L256 430.7 431.2 268c20.9-19.4 32.8-46.7 32.8-75.2v-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69 5.4-92 31.2c0 0 0 0-.1 .1s0 0-.1 .1l-17.8 20c-.3 .4-.7 .7-1 1.1c-4.5 4.5-10.6 7-16.9 7s-12.4-2.5-16.9-7z\"]\n};\nvar faFaceSurprise = {\n prefix: 'far',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faCirclePause = {\n prefix: 'far',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm224-72V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24zm112 0V328c0 13.3-10.7 24-24 24s-24-10.7-24-24V184c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faCircle = {\n prefix: 'far',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faCircleUp = {\n prefix: 'far',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4c-4.5 4.2-7.1 10.1-7.1 16.3c0 12.3 10 22.3 22.3 22.3H208v96c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256h57.7c12.3 0 22.3-10 22.3-22.3c0-6.2-2.6-12.1-7.1-16.3L269.8 117.5c-3.8-3.5-8.7-5.5-13.8-5.5s-10.1 2-13.8 5.5L135.1 217.4z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faFileAudio = {\n prefix: 'far',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 464H320c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM192 272V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L129.4 376H112c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h17.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8zm85.8-4c11.6 20 18.2 43.3 18.2 68s-6.6 48-18.2 68c-6.6 11.5-21.3 15.4-32.8 8.8s-15.4-21.3-8.8-32.8c7.5-12.9 11.8-27.9 11.8-44s-4.3-31.1-11.8-44c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8z\"]\n};\nvar faFileImage = {\n prefix: 'far',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm96 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm69.2 46.9c-3-4.3-7.9-6.9-13.2-6.9s-10.2 2.6-13.2 6.9l-41.3 59.7-11.9-19.1c-2.9-4.7-8.1-7.5-13.6-7.5s-10.6 2.8-13.6 7.5l-40 64c-3.1 4.9-3.2 11.1-.4 16.2s8.2 8.2 14 8.2h48 32 40 72c6 0 11.4-3.3 14.2-8.6s2.4-11.6-1-16.5l-72-104z\"]\n};\nvar faCircleQuestion = {\n prefix: 'far',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm169.8-90.7c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faFaceMehBlank = {\n prefix: 'far',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faEye = {\n prefix: 'far',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z\"]\n};\nvar faFaceSadCry = {\n prefix: 'far',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M400 406.1V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V440.6c-28.7 15-61.4 23.4-96 23.4s-67.3-8.5-96-23.4V288c0-13.3-10.7-24-24-24s-24 10.7-24 24V406.1C72.6 368.2 48 315 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 59-24.6 112.2-64 150.1zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm166.6 9.7c5.5-5.8 14.8-9.7 25.4-9.7s19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C391.7 186.8 371 180 351.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9zM208 320v32c0 26.5 21.5 48 48 48s48-21.5 48-48V320c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faFileCode = {\n prefix: 'far',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 464c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16H224v80c0 17.7 14.3 32 32 32h80V448c0 8.8-7.2 16-16 16H64zM64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V154.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0H64zm97 289c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L79 303c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM257 255c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z\"]\n};\nvar faWindowMaximize = {\n prefix: 'far',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M.3 89.5C.1 91.6 0 93.8 0 96V224 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64V224 96c0-35.3-28.7-64-64-64H64c-2.2 0-4.4 .1-6.5 .3c-9.2 .9-17.8 3.8-25.5 8.2C21.8 46.5 13.4 55.1 7.7 65.5c-3.9 7.3-6.5 15.4-7.4 24zM48 224H464l0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192z\"]\n};\nvar faFaceFrown = {\n prefix: 'far',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM174.6 384.1c-4.5 12.5-18.2 18.9-30.7 14.4s-18.9-18.2-14.4-30.7C146.9 319.4 198.9 288 256 288s109.1 31.4 126.6 79.9c4.5 12.5-2 26.2-14.4 30.7s-26.2-2-30.7-14.4C328.2 358.5 297.2 336 256 336s-72.2 22.5-81.4 48.1zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrown = faFaceFrown;\nvar faFloppyDisk = {\n prefix: 'far',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M48 96V416c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V170.5c0-4.2-1.7-8.3-4.7-11.3l33.9-33.9c12 12 18.7 28.3 18.7 45.3V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H309.5c17 0 33.3 6.7 45.3 18.7l74.5 74.5-33.9 33.9L320.8 84.7c-.3-.3-.5-.5-.8-.8V184c0 13.3-10.7 24-24 24H104c-13.3 0-24-10.7-24-24V80H64c-8.8 0-16 7.2-16 16zm80-16v80H272V80H128zm32 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faSave = faFloppyDisk;\nvar faCommentDots = {\n prefix: 'far',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M168.2 384.9c-15-5.4-31.7-3.1-44.6 6.4c-8.2 6-22.3 14.8-39.4 22.7c5.6-14.7 9.9-31.3 11.3-49.4c1-12.9-3.3-25.7-11.8-35.5C60.4 302.8 48 272 48 240c0-79.5 83.3-160 208-160s208 80.5 208 160s-83.3 160-208 160c-31.6 0-61.3-5.5-87.8-15.1zM26.3 423.8c-1.6 2.7-3.3 5.4-5.1 8.1l-.3 .5c-1.6 2.3-3.2 4.6-4.8 6.9c-3.5 4.7-7.3 9.3-11.3 13.5c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c5.1 0 10.2-.3 15.3-.8l.7-.1c4.4-.5 8.8-1.1 13.2-1.9c.8-.1 1.6-.3 2.4-.5c17.8-3.5 34.9-9.5 50.1-16.1c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9zM144 272a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm80 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCommenting = faCommentDots;\nvar faFaceGrinSquint = {\n prefix: 'far',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zm-216-161.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandPointer = {\n prefix: 'far',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M160 64c0-8.8 7.2-16 16-16s16 7.2 16 16V200c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c8.8 0 16 7.2 16 16c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c7.8 0 14.3 5.6 15.7 13c1.6 8.2 7.3 15.1 15.1 18s16.7 1.6 23.3-3.6c2.7-2.1 6.1-3.4 9.9-3.4c8.8 0 16 7.2 16 16l0 16V392c0 39.8-32.2 72-72 72H272 212.3h-.9c-37.4 0-72.4-18.7-93.2-49.9L50.7 312.9c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4L116 353.2c5.9 8.8 16.8 12.7 26.9 9.7s17-12.4 17-23V320 64zM176 0c-35.3 0-64 28.7-64 64V261.7C91.2 238 55.5 232.8 28.5 250.7C-.9 270.4-8.9 310.1 10.8 339.5L78.3 440.8c29.7 44.5 79.6 71.2 133.1 71.2h.9H272h56c66.3 0 120-53.7 120-120V288l0-16c0-35.3-28.7-64-64-64c-4.5 0-8.8 .5-13 1.3c-11.7-15.4-30.2-25.3-51-25.3c-6.9 0-13.5 1.1-19.7 3.1C288.7 170.7 269.6 160 248 160c-2.7 0-5.4 .2-8 .5V64c0-35.3-28.7-64-64-64zm48 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"]\n};\nvar faHandScissors = {\n prefix: 'far',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M.2 276.3c-1.2-35.3 26.4-65 61.7-66.2l3.3-.1L57 208.1C22.5 200.5 .7 166.3 8.3 131.8S50.2 75.5 84.7 83.2l173 38.3c2.3-2.9 4.7-5.7 7.1-8.5l18.4-20.3C299.9 74.5 323.5 64 348.3 64l10.2 0c54.1 0 104.1 28.7 131.3 75.4l1.5 2.6c13.6 23.2 20.7 49.7 20.7 76.6L512 344c0 66.3-53.7 120-120 120l-8 0-96 0c-35.3 0-64-28.7-64-64c0-2.8 .2-5.6 .5-8.3c-19.4-11-32.5-31.8-32.5-55.7c0-.8 0-1.6 0-2.4L66.4 338c-35.3 1.2-65-26.4-66.2-61.7zm63.4-18.2c-8.8 .3-15.7 7.7-15.4 16.5s7.7 15.7 16.5 15.4l161.5-5.6c9.8-.3 18.7 5.3 22.7 14.2s2.2 19.3-4.5 26.4c-2.8 2.9-4.4 6.7-4.4 11c0 8.8 7.2 16 16 16c9.1 0 17.4 5.1 21.5 13.3s3.2 17.9-2.3 25.1c-2 2.7-3.2 6-3.2 9.6c0 8.8 7.2 16 16 16l96 0 8 0c39.8 0 72-32.2 72-72l0-125.4c0-18.4-4.9-36.5-14.2-52.4l-1.5-2.6c-18.6-32-52.8-51.6-89.8-51.6l-10.2 0c-11.3 0-22 4.8-29.6 13.1l-17.5-15.9 17.5 15.9-18.4 20.3c-.6 .6-1.1 1.3-1.7 1.9l57 13.2c8.6 2 14 10.6 12 19.2s-10.6 14-19.2 12l-85.6-19.7L74.3 130c-8.6-1.9-17.2 3.5-19.1 12.2s3.5 17.2 12.2 19.1l187.5 41.6c10.2 2.3 17.8 10.9 18.7 21.4l.1 1c.6 6.6-1.5 13.1-5.8 18.1s-10.6 7.9-17.2 8.2L63.6 258.1z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'far',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M516.1 325.5c1 3 2.1 6 3.3 8.9c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c1.2-2.9 2.3-5.9 3.3-8.9C152.5 406.2 229.5 464 320 464s167.5-57.8 196.1-138.5zM320 48c-101.4 0-185.8 72.5-204.3 168.5c-6.7-3.1-14.3-4.3-22.3-3.1c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-8-1.2-15.7 .1-22.3 3.1C505.8 120.5 421.4 48 320 48zM78.5 341.1C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7zm483 0c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zM439 336.5C414.4 374.6 370.3 400 319.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5c18.7-4.4 35.9 12 25.5 28.1zM281.6 228.8l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0zm160 0l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faCalendarXmark = {\n prefix: 'far',\n iconName: 'calendar-xmark',\n icon: [512, 512, [\"calendar-times\"], \"f273\", \"M160 0c13.3 0 24 10.7 24 24V64H328V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V192 144 128c0-35.3 28.7-64 64-64h40V24c0-13.3 10.7-24 24-24zM432 192H80V448c0 8.8 7.2 16 16 16H416c8.8 0 16-7.2 16-16V192zm-95 89l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faFileVideo = {\n prefix: 'far',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM80 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v16l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1L240 368v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V288z\"]\n};\nvar faFilePdf = {\n prefix: 'far',\n iconName: 'file-pdf',\n icon: [512, 512, [], \"f1c1\", \"M64 464H96v48H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V288H336V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z\"]\n};\nvar faComment = {\n prefix: 'far',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M123.6 391.3c12.9-9.4 29.6-11.8 44.6-6.4c26.5 9.6 56.2 15.1 87.8 15.1c124.7 0 208-80.5 208-160s-83.3-160-208-160S48 160.5 48 240c0 32 12.4 62.8 35.7 89.2c8.6 9.7 12.8 22.5 11.8 35.5c-1.4 18.1-5.7 34.7-11.3 49.4c17-7.9 31.1-16.7 39.4-22.7zM21.2 431.9c1.8-2.7 3.5-5.4 5.1-8.1c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208s-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6c-15.1 6.6-32.3 12.6-50.1 16.1c-.8 .2-1.6 .3-2.4 .5c-4.4 .8-8.7 1.5-13.2 1.9c-.2 0-.5 .1-.7 .1c-5.1 .5-10.2 .8-15.3 .8c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c4.1-4.2 7.8-8.7 11.3-13.5c1.7-2.3 3.3-4.6 4.8-6.9c.1-.2 .2-.3 .3-.5z\"]\n};\nvar faEnvelope = {\n prefix: 'far',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M64 112c-8.8 0-16 7.2-16 16v22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16H64zM48 212.2V384c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faHourglass = {\n prefix: 'far',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V67c0 40.3 16 79 44.5 107.5L158.1 256 76.5 337.5C48 366 32 404.7 32 445v19H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V445c0-40.3-16-79-44.5-107.5L225.9 256l81.5-81.5C336 146 352 107.3 352 67V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM192 289.9l81.5 81.5C293 391 304 417.4 304 445v19H80V445c0-27.6 11-54 30.5-73.5L192 289.9zm0-67.9l-81.5-81.5C91 121 80 94.6 80 67V48H304V67c0 27.6-11 54-30.5 73.5L192 222.1z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faCalendarCheck = {\n prefix: 'far',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c13.3 0 24 10.7 24 24V64H296V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192 144 128C0 92.7 28.7 64 64 64h40V24c0-13.3 10.7-24 24-24zM400 192H48V448c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16V192zM329 297L217 409c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 95-95c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faHardDrive = {\n prefix: 'far',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M64 80c-8.8 0-16 7.2-16 16V258c5.1-1.3 10.5-2 16-2H448c5.5 0 10.9 .7 16 2V96c0-8.8-7.2-16-16-16H64zM48 320v96c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V320c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM0 320V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V320v96c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320zm280 48a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'far',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-14.8 14.8-65.7 23.6-88.3 26.7c-5.6 .9-10.3-3.9-9.5-9.5C403.3 79.9 412 29 426.8 14.2zM75 75C158.2-8.3 284.5-22.2 382.2 33.2c-1.5 4.8-2.9 9.6-4.1 14.3c-3.1 12.2-5.5 24.6-7.3 35c-80.8-53.6-190.7-44.8-261.9 26.4C37.7 180.1 28.9 290 82.5 370.8c-10.5 1.8-22.9 4.2-35 7.3c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75zm389.6 58.9c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c3.1-12.2 5.5-24.6 7.3-35c80.8 53.6 190.7 44.8 261.9-26.4c71.2-71.2 80-181.1 26.4-261.9c10.5-1.8 22.9-4.2 35-7.3zm-105.4 93c10.1-16.3 33.9-16.9 37.9 1.9c9.5 44.4-3.7 93.5-39.3 129.1s-84.8 48.8-129.1 39.3c-18.7-4-18.2-27.8-1.9-37.9c25.2-15.7 50.2-35.4 73.6-58.8s43.1-48.4 58.8-73.6zM92 265.3l97.4-29.7c11.6-3.5 22.5 7.3 19 19l-29.7 97.4c-2.6 8.6-13.4 11.3-19.8 4.9c-2-2-3.2-4.6-3.4-7.3l-5.1-56.1-56.1-5.1c-2.8-.3-5.4-1.5-7.3-3.4c-6.3-6.3-3.6-17.2 4.9-19.8zm193-178.2c2 2 3.2 4.6 3.4 7.3l5.1 56.1 56.1 5.1c2.8 .3 5.4 1.5 7.3 3.4c6.3 6.3 3.6 17.2-4.9 19.8l-97.4 29.7c-11.6 3.5-22.5-7.3-19-19L265.3 92c2.6-8.6 13.4-11.3 19.8-4.9zM14.9 497.1c-19.6-19.6-20-51-.7-70.3C29 412 79.8 403.2 102.4 400.1c5.6-.9 10.3 3.9 9.5 9.5c-3.2 22.5-11.9 73.5-26.7 88.3C66 517 34.5 516.6 14.9 497.1z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faRectangleList = {\n prefix: 'far',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm96 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm104 0c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24H448c13.3 0 24 10.7 24 24s-10.7 24-24 24H224c-13.3 0-24-10.7-24-24zm-72-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faListAlt = faRectangleList;\nvar faCalendarPlus = {\n prefix: 'far',\n iconName: 'calendar-plus',\n icon: [512, 512, [], \"f271\", \"M184 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H96c-35.3 0-64 28.7-64 64v16 48V448c0 35.3 28.7 64 64 64H416c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H376V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H184V24zM80 192H432V448c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V192zm176 40c-13.3 0-24 10.7-24 24v48H184c-13.3 0-24 10.7-24 24s10.7 24 24 24h48v48c0 13.3 10.7 24 24 24s24-10.7 24-24V352h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V256c0-13.3-10.7-24-24-24z\"]\n};\nvar faCircleLeft = {\n prefix: 'far',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M48 256a208 208 0 1 1 416 0A208 208 0 1 1 48 256zm464 0A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9c4.2 4.5 10.1 7.1 16.3 7.1c12.3 0 22.3-10 22.3-22.3V304h96c17.7 0 32-14.3 32-32V240c0-17.7-14.3-32-32-32H256V150.3c0-12.3-10-22.3-22.3-22.3c-6.2 0-12.1 2.6-16.3 7.1L117.5 242.2c-3.5 3.8-5.5 8.7-5.5 13.8s2 10.1 5.5 13.8l99.9 107.1z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faMoneyBill1 = {\n prefix: 'far',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M112 112c0 35.3-28.7 64-64 64V336c35.3 0 64 28.7 64 64H464c0-35.3 28.7-64 64-64V176c-35.3 0-64-28.7-64-64H112zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm80-48c0 8.8 7.2 16 16 16v64h-8c-8.8 0-16 7.2-16 16s7.2 16 16 16h24 24c8.8 0 16-7.2 16-16s-7.2-16-16-16h-8V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faClock = {\n prefix: 'far',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faKeyboard = {\n prefix: 'far',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 112c-8.8 0-16 7.2-16 16V384c0 8.8 7.2 16 16 16H512c8.8 0 16-7.2 16-16V128c0-8.8-7.2-16-16-16H64zM0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM176 320H400c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm-72-72c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H200c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H280c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H360c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V248zm16-96h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H440c-8.8 0-16-7.2-16-16V168c0-8.8 7.2-16 16-16z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'far',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M512 80c8.8 0 16 7.2 16 16V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16H512zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nvar faImages = {\n prefix: 'far',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 80H512c8.8 0 16 7.2 16 16V320c0 8.8-7.2 16-16 16H490.8L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336H160c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16zM96 96V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faFaceGrin = {\n prefix: 'far',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrin = faFaceGrin;\nvar faFaceMeh = {\n prefix: 'far',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM176.4 240a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm192-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM184 328c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faMeh = faFaceMeh;\nvar faIdCard = {\n prefix: 'far',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M528 160V416c0 8.8-7.2 16-16 16H320c0-44.2-35.8-80-80-80H176c-44.2 0-80 35.8-80 80H64c-8.8 0-16-7.2-16-16V160H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM272 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm104-48c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H376z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faSun = {\n prefix: 'far',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M375.7 19.7c-1.5-8-6.9-14.7-14.4-17.8s-16.1-2.2-22.8 2.4L256 61.1 173.5 4.2c-6.7-4.6-15.3-5.5-22.8-2.4s-12.9 9.8-14.4 17.8l-18.1 98.5L19.7 136.3c-8 1.5-14.7 6.9-17.8 14.4s-2.2 16.1 2.4 22.8L61.1 256 4.2 338.5c-4.6 6.7-5.5 15.3-2.4 22.8s9.8 13 17.8 14.4l98.5 18.1 18.1 98.5c1.5 8 6.9 14.7 14.4 17.8s16.1 2.2 22.8-2.4L256 450.9l82.5 56.9c6.7 4.6 15.3 5.5 22.8 2.4s12.9-9.8 14.4-17.8l18.1-98.5 98.5-18.1c8-1.5 14.7-6.9 17.8-14.4s2.2-16.1-2.4-22.8L450.9 256l56.9-82.5c4.6-6.7 5.5-15.3 2.4-22.8s-9.8-12.9-17.8-14.4l-98.5-18.1L375.7 19.7zM269.6 110l65.6-45.2 14.4 78.3c1.8 9.8 9.5 17.5 19.3 19.3l78.3 14.4L402 242.4c-5.7 8.2-5.7 19 0 27.2l45.2 65.6-78.3 14.4c-9.8 1.8-17.5 9.5-19.3 19.3l-14.4 78.3L269.6 402c-8.2-5.7-19-5.7-27.2 0l-65.6 45.2-14.4-78.3c-1.8-9.8-9.5-17.5-19.3-19.3L64.8 335.2 110 269.6c5.7-8.2 5.7-19 0-27.2L64.8 176.8l78.3-14.4c9.8-1.8 17.5-9.5 19.3-19.3l14.4-78.3L242.4 110c8.2 5.7 19 5.7 27.2 0zM256 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM192 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'far',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm130.7 57.9c-4.2-13.6 7.1-25.9 21.3-25.9H364.5c14.2 0 25.5 12.4 21.3 25.9C369 368.4 318.2 408 258.2 408s-110.8-39.6-127.5-94.1zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm165.8 21.7c-7.6 8.1-20.2 8.5-28.3 .9s-8.5-20.2-.9-28.3c14.5-15.5 35.2-22.3 54.6-22.3s40.1 6.8 54.6 22.3c7.6 8.1 7.1 20.7-.9 28.3s-20.7 7.1-28.3-.9c-5.5-5.8-14.8-9.7-25.4-9.7s-19.9 3.8-25.4 9.7z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faCircleDown = {\n prefix: 'far',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 464a208 208 0 1 1 0-416 208 208 0 1 1 0 416zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6c4.5-4.2 7.1-10.1 7.1-16.3c0-12.3-10-22.3-22.3-22.3H304V160c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32v96H150.3C138 256 128 266 128 278.3c0 6.2 2.6 12.1 7.1 16.3l107.1 99.9c3.8 3.5 8.7 5.5 13.8 5.5s10.1-2 13.8-5.5l107.1-99.9z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faThumbsDown = {\n prefix: 'far',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M323.8 477.2c-38.2 10.9-78.1-11.2-89-49.4l-5.7-20c-3.7-13-10.4-25-19.5-35l-51.3-56.4c-8.9-9.8-8.2-25 1.6-33.9s25-8.2 33.9 1.6l51.3 56.4c14.1 15.5 24.4 34 30.1 54.1l5.7 20c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7l-5.7-20c-5.7-19.9-14.7-38.7-26.6-55.5c-5.2-7.3-5.8-16.9-1.7-24.9s12.3-13 21.3-13L448 288c8.8 0 16-7.2 16-16c0-6.8-4.3-12.7-10.4-15c-7.4-2.8-13-9-14.9-16.7s.1-15.8 5.3-21.7c2.5-2.8 4-6.5 4-10.6c0-7.8-5.6-14.3-13-15.7c-8.2-1.6-15.1-7.3-18-15.2s-1.6-16.7 3.6-23.3c2.1-2.7 3.4-6.1 3.4-9.9c0-6.7-4.2-12.6-10.2-14.9c-11.5-4.5-17.7-16.9-14.4-28.8c.4-1.3 .6-2.8 .6-4.3c0-8.8-7.2-16-16-16H286.5c-12.6 0-25 3.7-35.5 10.7l-61.7 41.1c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l61.7-41.1c18.4-12.3 40-18.8 62.1-18.8H384c34.7 0 62.9 27.6 64 62c14.6 11.7 24 29.7 24 50c0 4.5-.5 8.8-1.3 13c15.4 11.7 25.3 30.2 25.3 51c0 6.5-1 12.8-2.8 18.7C504.8 238.3 512 254.3 512 272c0 35.3-28.6 64-64 64l-92.3 0c4.7 10.4 8.7 21.2 11.8 32.2l5.7 20c10.9 38.2-11.2 78.1-49.4 89zM32 384c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H32z\"]\n};\nvar faChessPawn = {\n prefix: 'far',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M232 152A72 72 0 1 0 88 152a72 72 0 1 0 144 0zm24 120H243.4l10.7 80H205.7L195 272H160 125l-10.7 80H65.9l10.7-80H64c-13.3 0-24-10.7-24-24s10.7-24 24-24c-15.1-20.1-24-45-24-72C40 85.7 93.7 32 160 32s120 53.7 120 120c0 27-8.9 51.9-24 72c13.3 0 24 10.7 24 24s-10.7 24-24 24zM52.7 464H267.3l-16.6-32H69.2L52.7 464zm207.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H40.8C18.2 512 0 493.8 0 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C36.5 390.7 47.5 384 59.5 384h201z\"]\n};\nvar faCreditCard = {\n prefix: 'far',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M512 80c8.8 0 16 7.2 16 16v32H48V96c0-8.8 7.2-16 16-16H512zm16 144V416c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V224H528zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H120zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24H248z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faBell = {\n prefix: 'far',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32V49.9C119.5 61.4 64 124.2 64 200v33.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416H424c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4V200c0-75.8-55.5-138.6-128-150.1V32c0-17.7-14.3-32-32-32zm0 96h8c57.4 0 104 46.6 104 104v33.4c0 47.9 13.9 94.6 39.7 134.6H72.3C98.1 328 112 281.3 112 233.4V200c0-57.4 46.6-104 104-104h8zm64 352H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faFile = {\n prefix: 'far',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M320 464c8.8 0 16-7.2 16-16V160H256c-17.7 0-32-14.3-32-32V48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H320zM0 64C0 28.7 28.7 0 64 0H229.5c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64z\"]\n};\nvar faHospital = {\n prefix: 'far',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M232 0c-39.8 0-72 32.2-72 72v8H72C32.2 80 0 112.2 0 152V440c0 39.8 32.2 72 72 72h.2 .2 .2 .2 .2H73h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H75h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H77h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2H79h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H82h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H85h.2 .2 .2 .2H86h.2 .2 .2 .2H87h.2 .2 .2 .2H88h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2H98h.2 .2 .2 .2H99h.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2v0H456h8v0H568c39.8 0 72-32.2 72-72V152c0-39.8-32.2-72-72-72H480V72c0-39.8-32.2-72-72-72H232zM480 128h88c13.3 0 24 10.7 24 24v40H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56v48H536c-13.3 0-24 10.7-24 24s10.7 24 24 24h56V440c0 13.3-10.7 24-24 24H480V336 128zM72 128h88V464h-.1-.2-.2-.2H159h-.2-.2-.2H158h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H154h-.2-.2-.2H153h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H150h-.2-.2-.2H149h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H146h-.2-.2-.2H145h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H142h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H139h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H136h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H133h-.2-.2-.2-.2-.2-.2-.2-.2H131h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H128h-.2-.2-.2-.2-.2-.2-.2-.2H126h-.2-.2-.2-.2-.2-.2-.2-.2H124h-.2-.2-.2-.2-.2-.2-.2-.2H122h-.2-.2-.2-.2-.2-.2-.2-.2H120h-.2-.2-.2-.2-.2-.2-.2-.2H118h-.2-.2-.2-.2-.2-.2-.2-.2H116h-.2-.2-.2-.2-.2-.2-.2-.2H114h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H111h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H108h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H105h-.2-.2-.2-.2H104h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H100h-.2-.2-.2-.2H99h-.2-.2-.2-.2H98h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H88h-.2-.2-.2-.2H87h-.2-.2-.2-.2H86h-.2-.2-.2-.2H85h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H82h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H79h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H77h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H75h-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2H73h-.2-.2-.2-.2-.2H72c-13.2 0-24-10.7-24-24V336h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V240h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H48V152c0-13.3 10.7-24 24-24zM208 72c0-13.3 10.7-24 24-24H408c13.3 0 24 10.7 24 24V336 464H368V400c0-26.5-21.5-48-48-48s-48 21.5-48 48v64H208V72zm88 24v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V168h24c8.8 0 16-7.2 16-16V136c0-8.8-7.2-16-16-16H344V96c0-8.8-7.2-16-16-16H312c-8.8 0-16 7.2-16 16z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faChessRook = {\n prefix: 'far',\n iconName: 'chess-rook',\n icon: [448, 512, [9820], \"f447\", \"M80 80V192c0 2.5 1.2 4.9 3.2 6.4l51.2 38.4c6.8 5.1 10.4 13.4 9.5 21.9L133.5 352H85.2l9.4-85L54.4 236.8C40.3 226.2 32 209.6 32 192V72c0-22.1 17.9-40 40-40H376c22.1 0 40 17.9 40 40V192c0 17.6-8.3 34.2-22.4 44.8L353.4 267l9.4 85H314.5l-10.4-93.3c-.9-8.4 2.7-16.8 9.5-21.9l51.2-38.4c2-1.5 3.2-3.9 3.2-6.4V80H304v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H192v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V80H80zm4.7 384H363.3l-16.6-32H101.2L84.7 464zm271.9-80c12 0 22.9 6.7 28.4 17.3l26.5 51.2c3 5.8 4.6 12.2 4.6 18.7c0 22.5-18.2 40.8-40.8 40.8H72.8C50.2 512 32 493.8 32 471.2c0-6.5 1.6-12.9 4.6-18.7l26.5-51.2C68.5 390.7 79.5 384 91.5 384h265zM208 288c-8.8 0-16-7.2-16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 8.8-7.2 16-16 16H208z\"]\n};\nvar faStarHalf = {\n prefix: 'far',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M293.3 .6c10.9 2.5 18.6 12.2 18.6 23.4V408.7c0 8.9-4.9 17-12.7 21.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5c4.9-10.1 16.1-15.4 27-12.9zM263.9 128.4l-28.6 58.8c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l92.5-49.4V128.4z\"]\n};\nvar faChessKing = {\n prefix: 'far',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M248 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V56H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v40H59.6C26.7 144 0 170.7 0 203.6c0 8.2 1.7 16.3 4.9 23.8L59.1 352h52.3L49 208.2c-.6-1.5-1-3-1-4.6c0-6.4 5.2-11.6 11.6-11.6H224 388.4c6.4 0 11.6 5.2 11.6 11.6c0 1.6-.3 3.2-1 4.6L336.5 352h52.3l54.2-124.6c3.3-7.5 4.9-15.6 4.9-23.8c0-32.9-26.7-59.6-59.6-59.6H248V104h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H248V24zM101.2 432H346.8l16.6 32H84.7l16.6-32zm283.7-30.7c-5.5-10.6-16.5-17.3-28.4-17.3H91.5c-12 0-22.9 6.7-28.4 17.3L36.6 452.5c-3 5.8-4.6 12.2-4.6 18.7C32 493.8 50.2 512 72.8 512H375.2c22.5 0 40.8-18.2 40.8-40.8c0-6.5-1.6-12.9-4.6-18.7l-26.5-51.2z\"]\n};\nvar faCircleUser = {\n prefix: 'far',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M406.5 399.6C387.4 352.9 341.5 320 288 320H224c-53.5 0-99.4 32.9-118.5 79.6C69.9 362.2 48 311.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 55.7-21.9 106.2-57.5 143.6zm-40.1 32.7C334.4 452.4 296.6 464 256 464s-78.4-11.6-110.5-31.7c7.3-36.7 39.7-64.3 78.5-64.3h64c38.8 0 71.2 27.6 78.5 64.3zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-272a40 40 0 1 1 0-80 40 40 0 1 1 0 80zm-88-40a88 88 0 1 0 176 0 88 88 0 1 0 -176 0z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faCopy = {\n prefix: 'far',\n iconName: 'copy',\n icon: [512, 512, [], \"f0c5\", \"M448 384H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64H396.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V320c0 35.3-28.7 64-64 64zM64 128h96v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16H256c8.8 0 16-7.2 16-16V416h48v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64z\"]\n};\nvar faShareFromSquare = {\n prefix: 'far',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M400 255.4V240 208c0-8.8-7.2-16-16-16H352 336 289.5c-50.9 0-93.9 33.5-108.3 79.6c-3.3-9.4-5.2-19.8-5.2-31.6c0-61.9 50.1-112 112-112h48 16 32c8.8 0 16-7.2 16-16V80 64.6L506 160 400 255.4zM336 240h16v48c0 17.7 14.3 32 32 32h3.7c7.9 0 15.5-2.9 21.4-8.2l139-125.1c7.6-6.8 11.9-16.5 11.9-26.7s-4.3-19.9-11.9-26.7L409.9 8.9C403.5 3.2 395.3 0 386.7 0C367.5 0 352 15.5 352 34.7V80H336 304 288c-88.4 0-160 71.6-160 160c0 60.4 34.6 99.1 63.9 120.9c5.9 4.4 11.5 8.1 16.7 11.2c4.4 2.7 8.5 4.9 11.9 6.6c3.4 1.7 6.2 3 8.2 3.9c2.2 1 4.6 1.4 7.1 1.4h2.5c9.8 0 17.8-8 17.8-17.8c0-7.8-5.3-14.7-11.6-19.5l0 0c-.4-.3-.7-.5-1.1-.8c-1.7-1.1-3.4-2.5-5-4.1c-.8-.8-1.7-1.6-2.5-2.6s-1.6-1.9-2.4-2.9c-1.8-2.5-3.5-5.3-5-8.5c-2.6-6-4.3-13.3-4.3-22.4c0-36.1 29.3-65.5 65.5-65.5H304h32zM72 32C32.2 32 0 64.2 0 104V440c0 39.8 32.2 72 72 72H408c39.8 0 72-32.2 72-72V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V104c0-13.3 10.7-24 24-24h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H72z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faCopyright = {\n prefix: 'far',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c-31.2-31.2-31.2-81.9 0-113.1s81.9-31.2 113.1 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9c-50-50-131-50-181 0s-50 131 0 181s131 50 181 0c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0c-31.2 31.2-81.9 31.2-113.1 0z\"]\n};\nvar faMap = {\n prefix: 'far',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M565.6 36.2C572.1 40.7 576 48.1 576 56V392c0 10-6.2 18.9-15.5 22.4l-168 64c-5.2 2-10.9 2.1-16.1 .3L192.5 417.5l-160 61c-7.4 2.8-15.7 1.8-22.2-2.7S0 463.9 0 456V120c0-10 6.1-18.9 15.5-22.4l168-64c5.2-2 10.9-2.1 16.1-.3L383.5 94.5l160-61c7.4-2.8 15.7-1.8 22.2 2.7zM48 136.5V421.2l120-45.7V90.8L48 136.5zM360 422.7V137.3l-144-48V374.7l144 48zm48-1.5l120-45.7V90.8L408 136.5V421.2z\"]\n};\nvar faBellSlash = {\n prefix: 'far',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L542.6 400c2.7-7.8 1.3-16.5-3.9-23l-14.9-18.6C495.5 322.9 480 278.8 480 233.4V200c0-75.8-55.5-138.6-128-150.1V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V49.9c-43.9 7-81.5 32.7-104.4 68.7L38.8 5.1zM221.7 148.4C239.6 117.1 273.3 96 312 96h8 8c57.4 0 104 46.6 104 104v33.4c0 32.7 6.4 64.8 18.7 94.5L221.7 148.4zM406.2 416l-60.9-48H168.3c21.2-32.8 34.4-70.3 38.4-109.1L160 222.1v11.4c0 45.4-15.5 89.5-43.8 124.9L101.3 377c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6H406.2zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faHandLizard = {\n prefix: 'far',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M72 112c-13.3 0-24 10.7-24 24s10.7 24 24 24H240c35.3 0 64 28.7 64 64s-28.7 64-64 64H136c-13.3 0-24 10.7-24 24s10.7 24 24 24H288c4.5 0 8.9 1.3 12.7 3.6l64 40c7 4.4 11.3 12.1 11.3 20.4v24c0 13.3-10.7 24-24 24s-24-10.7-24-24V413.3L281.1 384H136c-39.8 0-72-32.2-72-72s32.2-72 72-72H240c8.8 0 16-7.2 16-16s-7.2-16-16-16H72c-39.8 0-72-32.2-72-72S32.2 64 72 64H281.6c46.7 0 90.9 21.5 119.7 58.3l78.4 100.1c20.9 26.7 32.3 59.7 32.3 93.7V424c0 13.3-10.7 24-24 24s-24-10.7-24-24V316.1c0-23.2-7.8-45.8-22.1-64.1L363.5 151.9c-19.7-25.2-49.9-39.9-81.9-39.9H72z\"]\n};\nvar faFaceSmile = {\n prefix: 'far',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm177.6 62.1C192.8 334.5 218.8 352 256 352s63.2-17.5 78.4-33.9c9-9.7 24.2-10.4 33.9-1.4s10.4 24.2 1.4 33.9c-22 23.8-60 49.4-113.6 49.4s-91.7-25.5-113.6-49.4c-9-9.7-8.4-24.9 1.4-33.9s24.9-8.4 33.9 1.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSmile = faFaceSmile;\nvar faHandPeace = {\n prefix: 'far',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M250.8 1.4c-35.2-3.7-66.6 21.8-70.3 57L174 119 156.7 69.6C145 36.3 108.4 18.8 75.1 30.5S24.2 78.8 35.9 112.1L88.7 262.2C73.5 276.7 64 297.3 64 320v0 24c0 92.8 75.2 168 168 168h48c92.8 0 168-75.2 168-168V272 256 224c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4c-10.4-21.3-32.3-36-57.6-36c-.7 0-1.5 0-2.2 0l5.9-56.3c3.7-35.2-21.8-66.6-57-70.3zm-.2 155.4C243.9 166.9 240 179 240 192v48c0 .7 0 1.4 0 2c-5.1-1.3-10.5-2-16-2h-7.4l-5.4-15.3 17-161.3c.9-8.8 8.8-15.2 17.6-14.2s15.2 8.8 14.2 17.6l-9.5 90.1zM111.4 85.6L165.7 240H144c-4 0-8 .3-11.9 .9L81.2 96.2c-2.9-8.3 1.5-17.5 9.8-20.4s17.5 1.5 20.4 9.8zM288 192c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16c0 8.8-7.2 16-16 16s-16-7.2-16-16V192zm38.4 108c10.4 21.3 32.3 36 57.6 36c5.5 0 10.9-.7 16-2v10c0 66.3-53.7 120-120 120H232c-66.3 0-120-53.7-120-120l0-24 0 0c0-17.7 14.3-32 32-32h80c8.8 0 16 7.2 16 16s-7.2 16-16 16H184c-13.3 0-24 10.7-24 24s10.7 24 24 24h40c35.3 0 64-28.7 64-64c0-.7 0-1.4 0-2c5.1 1.3 10.5 2 16 2c7.9 0 15.4-1.4 22.4-4zM400 272c0 8.8-7.2 16-16 16s-16-7.2-16-16V240 224c0-8.8 7.2-16 16-16s16 7.2 16 16v32 16z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'far',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm349.5 52.4c18.7-4.4 35.9 12 25.5 28.1C350.4 374.6 306.3 400 255.9 400s-94.5-25.4-119.1-63.5c-10.4-16.1 6.8-32.5 25.5-28.1c28.9 6.8 60.5 10.5 93.6 10.5s64.7-3.7 93.6-10.5zM215.3 137.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm122.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faBuilding = {\n prefix: 'far',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M64 48c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16h80V400c0-26.5 21.5-48 48-48s48 21.5 48 48v64h80c8.8 0 16-7.2 16-16V64c0-8.8-7.2-16-16-16H64zM0 64C0 28.7 28.7 0 64 0H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm88 40c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V104zM232 88h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V104c0-8.8 7.2-16 16-16zM88 232c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H104c-8.8 0-16-7.2-16-16V232zm144-16h48c8.8 0 16 7.2 16 16v48c0 8.8-7.2 16-16 16H232c-8.8 0-16-7.2-16-16V232c0-8.8 7.2-16 16-16z\"]\n};\nvar faFaceGrinBeamSweat = {\n prefix: 'far',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3C497.1 120.8 512 102.7 512 81c0-20-28.6-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0c-9.5 12.6-27.1 37.2-36 57.5c-.3 .7-.6 1.4-.9 2.1C417.8 69.7 416 76 416 81c0 26 21.5 47 48 47c4.4 0 8.7-.6 12.8-1.7zM395.4 41.2C355.3 15.2 307.4 0 256 0C114.6 0 0 114.6 0 256S114.6 512 256 512s256-114.6 256-256c0-35.8-7.3-69.9-20.6-100.8c-8.6 3.1-17.8 4.8-27.4 4.8c-8.9 0-17.6-1.5-25.7-4.2C454.7 185.5 464 219.7 464 256c0 114.9-93.1 208-208 208S48 370.9 48 256S141.1 48 256 48c48.7 0 93.4 16.7 128.9 44.7c-.6-3.8-.9-7.7-.9-11.7c0-11.4 3.8-22.4 7.1-30.5c1.3-3.1 2.7-6.2 4.3-9.3zM375 336.5c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c24.6 38.1 68.7 63.5 119.1 63.5s94.5-25.4 119.1-63.5zM217.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faMoon = {\n prefix: 'far',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M144.7 98.7c-21 34.1-33.1 74.3-33.1 117.3c0 98 62.8 181.4 150.4 211.7c-12.4 2.8-25.3 4.3-38.6 4.3C126.6 432 48 353.3 48 256c0-68.9 39.4-128.4 96.8-157.3zm62.1-66C91.1 41.2 0 137.9 0 256C0 379.7 100 480 223.5 480c47.8 0 92-15 128.4-40.6c1.9-1.3 3.7-2.7 5.5-4c4.8-3.6 9.4-7.4 13.9-11.4c2.7-2.4 5.3-4.8 7.9-7.3c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-3.7 .6-7.4 1.2-11.1 1.6c-5 .5-10.1 .9-15.3 1c-1.2 0-2.5 0-3.7 0c-.1 0-.2 0-.3 0c-96.8-.2-175.2-78.9-175.2-176c0-54.8 24.9-103.7 64.1-136c1-.9 2.1-1.7 3.2-2.6c4-3.2 8.2-6.2 12.5-9c3.1-2 6.3-4 9.6-5.8c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-3.6-.3-7.1-.5-10.7-.6c-2.7-.1-5.5-.1-8.2-.1c-3.3 0-6.5 .1-9.8 .2c-2.3 .1-4.6 .2-6.9 .4z\"]\n};\nvar faCalendar = {\n prefix: 'far',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H64C28.7 64 0 92.7 0 128v16 48V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192 144 128c0-35.3-28.7-64-64-64H344V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H152V24zM48 192H400V448c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192z\"]\n};\nvar faFaceGrinTongueWink = {\n prefix: 'far',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M348.3 442.4c2.4-8.4 3.7-17.3 3.7-26.4V363.5c8.8-8 16.6-17.1 23-27c10.4-16.1-6.8-32.5-25.5-28.1c-28.9 6.8-60.5 10.5-93.6 10.5s-64.7-3.7-93.6-10.5c-18.7-4.4-35.9 12-25.5 28.1c6.5 10 14.3 19.1 23.1 27.1V416c0 9.2 1.3 18 3.7 26.4C95.1 408.4 48 337.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 81.7-47.1 152.4-115.7 186.4zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.6 220c10.6 0 19.9 3.8 25.4 9.7c7.6 8.1 20.2 8.5 28.3 .9s8.5-20.2 .9-28.3C199.7 186.8 179 180 159.6 180s-40.1 6.8-54.6 22.3c-7.6 8.1-7.1 20.7 .9 28.3s20.7 7.1 28.3-.9c5.5-5.8 14.8-9.7 25.4-9.7zm176.7 12a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-.4-72a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm0 128a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM320 416c0 35.3-28.7 64-64 64s-64-28.7-64-64V378.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6V416z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faClone = {\n prefix: 'far',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M64 464H288c8.8 0 16-7.2 16-16V384h48v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h64v48H64c-8.8 0-16 7.2-16 16V448c0 8.8 7.2 16 16 16zM224 352c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H224z\"]\n};\nvar faFaceAngry = {\n prefix: 'far',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm72.4-118.5c9.7-9 10.2-24.2 1.2-33.9C315.3 344.3 290.6 328 256 328s-59.3 16.3-73.5 31.6c-9 9.7-8.5 24.9 1.2 33.9s24.9 8.5 33.9-1.2c7.4-7.9 20-16.4 38.5-16.4s31.1 8.5 38.5 16.4c9 9.7 24.2 10.2 33.9 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faRectangleXmark = {\n prefix: 'far',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H448c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16H64zM0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm175 79c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faPaperPlane = {\n prefix: 'far',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376V479.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z\"]\n};\nvar faLifeRing = {\n prefix: 'far',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M385.1 419.1C349.7 447.2 304.8 464 256 464s-93.7-16.8-129.1-44.9l80.4-80.4c14.3 8.4 31 13.3 48.8 13.3s34.5-4.8 48.8-13.3l80.4 80.4zm68.1 .2C489.9 374.9 512 318.1 512 256s-22.1-118.9-58.8-163.3L465 81c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L419.3 58.8C374.9 22.1 318.1 0 256 0S137.1 22.1 92.7 58.8L81 47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L58.8 92.7C22.1 137.1 0 193.9 0 256s22.1 118.9 58.8 163.3L47 431c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l11.8-11.8C137.1 489.9 193.9 512 256 512s118.9-22.1 163.3-58.8L431 465c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-11.8-11.8zm-34.1-34.1l-80.4-80.4c8.4-14.3 13.3-31 13.3-48.8s-4.8-34.5-13.3-48.8l80.4-80.4C447.2 162.3 464 207.2 464 256s-16.8 93.7-44.9 129.1zM385.1 92.9l-80.4 80.4c-14.3-8.4-31-13.3-48.8-13.3s-34.5 4.8-48.8 13.3L126.9 92.9C162.3 64.8 207.2 48 256 48s93.7 16.8 129.1 44.9zM173.3 304.8L92.9 385.1C64.8 349.7 48 304.8 48 256s16.8-93.7 44.9-129.1l80.4 80.4c-8.4 14.3-13.3 31-13.3 48.8s4.8 34.5 13.3 48.8zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faFaceGrimace = {\n prefix: 'far',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 48a208 208 0 1 0 0 416 208 208 0 1 0 0-416zM512 256A256 256 0 1 1 0 256a256 256 0 1 1 512 0zM168 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h8V320h-8zm40 48h32V320H208v48zm96 0V320H272v48h32zm32 0h8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v48zM168 288H344c30.9 0 56 25.1 56 56s-25.1 56-56 56H168c-30.9 0-56-25.1-56-56s25.1-56 56-56zm-23.6-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faCalendarMinus = {\n prefix: 'far',\n iconName: 'calendar-minus',\n icon: [512, 512, [], \"f272\", \"M160 0c13.3 0 24 10.7 24 24V64H328V24c0-13.3 10.7-24 24-24s24 10.7 24 24V64h40c35.3 0 64 28.7 64 64v16 48V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V192 144 128c0-35.3 28.7-64 64-64h40V24c0-13.3 10.7-24 24-24zM432 192H80V448c0 8.8 7.2 16 16 16H416c8.8 0 16-7.2 16-16V192zM328 352H184c-13.3 0-24-10.7-24-24s10.7-24 24-24H328c13.3 0 24 10.7 24 24s-10.7 24-24 24z\"]\n};\nvar faCircleXmark = {\n prefix: 'far',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faThumbsUp = {\n prefix: 'far',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M323.8 34.8c-38.2-10.9-78.1 11.2-89 49.4l-5.7 20c-3.7 13-10.4 25-19.5 35l-51.3 56.4c-8.9 9.8-8.2 25 1.6 33.9s25 8.2 33.9-1.6l51.3-56.4c14.1-15.5 24.4-34 30.1-54.1l5.7-20c3.6-12.7 16.9-20.1 29.7-16.5s20.1 16.9 16.5 29.7l-5.7 20c-5.7 19.9-14.7 38.7-26.6 55.5c-5.2 7.3-5.8 16.9-1.7 24.9s12.3 13 21.3 13L448 224c8.8 0 16 7.2 16 16c0 6.8-4.3 12.7-10.4 15c-7.4 2.8-13 9-14.9 16.7s.1 15.8 5.3 21.7c2.5 2.8 4 6.5 4 10.6c0 7.8-5.6 14.3-13 15.7c-8.2 1.6-15.1 7.3-18 15.1s-1.6 16.7 3.6 23.3c2.1 2.7 3.4 6.1 3.4 9.9c0 6.7-4.2 12.6-10.2 14.9c-11.5 4.5-17.7 16.9-14.4 28.8c.4 1.3 .6 2.8 .6 4.3c0 8.8-7.2 16-16 16H286.5c-12.6 0-25-3.7-35.5-10.7l-61.7-41.1c-11-7.4-25.9-4.4-33.3 6.7s-4.4 25.9 6.7 33.3l61.7 41.1c18.4 12.3 40 18.8 62.1 18.8H384c34.7 0 62.9-27.6 64-62c14.6-11.7 24-29.7 24-50c0-4.5-.5-8.8-1.3-13c15.4-11.7 25.3-30.2 25.3-51c0-6.5-1-12.8-2.8-18.7C504.8 273.7 512 257.7 512 240c0-35.3-28.6-64-64-64l-92.3 0c4.7-10.4 8.7-21.2 11.8-32.2l5.7-20c10.9-38.2-11.2-78.1-49.4-89zM32 192c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faWindowMinimize = {\n prefix: 'far',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M24 432c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faSquareFull = {\n prefix: 'far',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M464 48V464H48V48H464zM48 0H0V48 464v48H48 464h48V464 48 0H464 48z\"]\n};\nvar faNoteSticky = {\n prefix: 'far',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 80c-8.8 0-16 7.2-16 16V416c0 8.8 7.2 16 16 16H288V352c0-17.7 14.3-32 32-32h80V96c0-8.8-7.2-16-16-16H64zM288 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V320v5.5c0 17-6.7 33.3-18.7 45.3l-90.5 90.5c-12 12-28.3 18.7-45.3 18.7H288z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faFaceSadTear = {\n prefix: 'far',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M175.9 448c-35-.1-65.5-22.6-76-54.6C67.6 356.8 48 308.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208s-93.1 208-208 208c-28.4 0-55.5-5.7-80.1-16zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM128 369c0 26 21.5 47 48 47s48-21 48-47c0-20-28.4-60.4-41.6-77.7c-3.2-4.4-9.6-4.4-12.8 0C156.6 308.6 128 349 128 369zm128-65c-13.3 0-24 10.7-24 24s10.7 24 24 24c30.7 0 58.7 11.5 80 30.6c9.9 8.8 25 8 33.9-1.9s8-25-1.9-33.9C338.3 320.2 299 304 256 304zm47.6-96a32 32 0 1 0 64 0 32 32 0 1 0 -64 0zm-128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faHandPointLeft = {\n prefix: 'far',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M64 128l177.6 0c-1 5.2-1.6 10.5-1.6 16l0 16-32 0L64 160c-8.8 0-16-7.2-16-16s7.2-16 16-16zm224 16c0-17.7 14.3-32 32-32c0 0 0 0 0 0l24 0c66.3 0 120 53.7 120 120l0 48c0 52.5-33.7 97.1-80.7 113.4c.5-3.1 .7-6.2 .7-9.4c0-20-9.2-37.9-23.6-49.7c4.9-9 7.6-19.4 7.6-30.3c0-15.1-5.3-29-14-40c8.8-11 14-24.9 14-40l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-40 0-40zm32-80s0 0 0 0c-18 0-34.6 6-48 16L64 80C28.7 80 0 108.7 0 144s28.7 64 64 64l82 0c-1.3 5.1-2 10.5-2 16c0 25.3 14.7 47.2 36 57.6c-2.6 7-4 14.5-4 22.4c0 20 9.2 37.9 23.6 49.7c-4.9 9-7.6 19.4-7.6 30.3c0 35.3 28.7 64 64 64l64 0 24 0c92.8 0 168-75.2 168-168l0-48c0-92.8-75.2-168-168-168l-24 0zM256 400c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0zM240 224c0 5.5 .7 10.9 2 16l-2 0-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0 16zm24 64l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l24 0z\"]\n};\nvar icons = {\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faHandPointRight: faHandPointRight,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faLightbulb: faLightbulb,\n faFlag: faFlag,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faEyeSlash: faEyeSlash,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faHandSpock: faHandSpock,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faBookmark: faBookmark,\n faHandPointDown: faHandPointDown,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faUser: faUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faStar: faStar,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faClipboard: faClipboard,\n faChessQueen: faChessQueen,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faImage: faImage,\n faFolderClosed: faFolderClosed,\n faLemon: faLemon,\n faHandshake: faHandshake,\n faGem: faGem,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faIdBadge: faIdBadge,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faEnvelopeOpen: faEnvelopeOpen,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faFileExcel: faFileExcel,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faHeart: faHeart,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faCircle: faCircle,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faFileAudio: faFileAudio,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faFileCode: faFileCode,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandPointer: faHandPointer,\n faHandScissors: faHandScissors,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faFileVideo: faFileVideo,\n faFilePdf: faFilePdf,\n faComment: faComment,\n faEnvelope: faEnvelope,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faCalendarCheck: faCalendarCheck,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faCalendarPlus: faCalendarPlus,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faKeyboard: faKeyboard,\n faClosedCaptioning: faClosedCaptioning,\n faImages: faImages,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faSun: faSun,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faThumbsDown: faThumbsDown,\n faChessPawn: faChessPawn,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faBell: faBell,\n faFile: faFile,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faChessRook: faChessRook,\n faStarHalf: faStarHalf,\n faChessKing: faChessKing,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faCopy: faCopy,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faCopyright: faCopyright,\n faMap: faMap,\n faBellSlash: faBellSlash,\n faHandLizard: faHandLizard,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faHandPeace: faHandPeace,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faBuilding: faBuilding,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faMoon: faMoon,\n faCalendar: faCalendar,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faClone: faClone,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faPaperPlane: faPaperPlane,\n faLifeRing: faLifeRing,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faThumbsUp: faThumbsUp,\n faWindowMinimize: faWindowMinimize,\n faSquareFull: faSquareFull,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faHandPointLeft: faHandPointLeft\n};\n\nexport { icons as far, prefix, faTrashCan, faTrashAlt, faMessage, faCommentAlt, faFileLines, faFileAlt, faFileText, faCalendarDays, faCalendarAlt, faHandPointRight, faFaceSmileBeam, faSmileBeam, faFaceGrinStars, faGrinStars, faAddressBook, faContactBook, faComments, faPaste, faFileClipboard, faFaceGrinTongueSquint, faGrinTongueSquint, faFaceFlushed, faFlushed, faSquareCaretRight, faCaretSquareRight, faSquareMinus, faMinusSquare, faCompass, faSquareCaretDown, faCaretSquareDown, faFaceKissBeam, faKissBeam, faLightbulb, faFlag, faSquareCheck, faCheckSquare, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faFutbol, faFutbolBall, faSoccerBall, faPenToSquare, faEdit, faHourglassHalf, faHourglass2, faEyeSlash, faHand, faHandPaper, faHandSpock, faFaceKiss, faKiss, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faFaceGrinWide, faGrinAlt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faBookmark, faHandPointDown, faFolder, faFolderBlank, faUser, faSquareCaretLeft, faCaretSquareLeft, faStar, faChessKnight, faFaceLaughSquint, faLaughSquint, faFaceLaugh, faLaugh, faFolderOpen, faClipboard, faChessQueen, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faChartBar, faBarChart, faWindowRestore, faSquarePlus, faPlusSquare, faImage, faFolderClosed, faLemon, faHandshake, faGem, faCirclePlay, faPlayCircle, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faIdBadge, faFaceLaughBeam, faLaughBeam, faRegistered, faAddressCard, faContactCard, faVcard, faFaceTired, faTired, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faEnvelopeOpen, faFileZipper, faFileArchive, faSquare, faSnowflake, faNewspaper, faFaceKissWinkHeart, faKissWinkHeart, faStarHalfStroke, faStarHalfAlt, faFileExcel, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faCircleRight, faArrowAltCircleRight, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faHeart, faFaceSurprise, faSurprise, faCirclePause, faPauseCircle, faCircle, faCircleUp, faArrowAltCircleUp, faFileAudio, faFileImage, faCircleQuestion, faQuestionCircle, faFaceMehBlank, faMehBlank, faEye, faFaceSadCry, faSadCry, faFileCode, faWindowMaximize, faFaceFrown, faFrown, faFloppyDisk, faSave, faCommentDots, faCommenting, faFaceGrinSquint, faGrinSquint, faHandPointer, faHandScissors, faFaceGrinTears, faGrinTears, faCalendarXmark, faCalendarTimes, faFileVideo, faFilePdf, faComment, faEnvelope, faHourglass, faHourglassEmpty, faCalendarCheck, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faRectangleList, faListAlt, faCalendarPlus, faCircleLeft, faArrowAltCircleLeft, faMoneyBill1, faMoneyBillAlt, faClock, faClockFour, faKeyboard, faClosedCaptioning, faImages, faFaceGrin, faGrin, faFaceMeh, faMeh, faIdCard, faDriversLicense, faSun, faFaceLaughWink, faLaughWink, faCircleDown, faArrowAltCircleDown, faThumbsDown, faChessPawn, faCreditCard, faCreditCardAlt, faBell, faFile, faHospital, faHospitalAlt, faHospitalWide, faChessRook, faStarHalf, faChessKing, faCircleUser, faUserCircle, faCopy, faShareFromSquare, faShareSquare, faCopyright, faMap, faBellSlash, faHandLizard, faFaceSmile, faSmile, faHandPeace, faFaceGrinHearts, faGrinHearts, faBuilding, faFaceGrinBeamSweat, faGrinBeamSweat, faMoon, faCalendar, faFaceGrinTongueWink, faGrinTongueWink, faClone, faFaceAngry, faAngry, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faPaperPlane, faLifeRing, faFaceGrimace, faGrimace, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faThumbsUp, faWindowMinimize, faSquareFull, faNoteSticky, faStickyNote, faFaceSadTear, faSadTear, faHandPointLeft };\n","var prefix = \"fas\";\nvar fa0 = {\n prefix: 'fas',\n iconName: '0',\n icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160V320c0 88.4-71.6 160-160 160S0 408.4 0 320V192zM160 96c-53 0-96 43-96 96V320c0 53 43 96 96 96s96-43 96-96V192c0-53-43-96-96-96z\"]\n};\nvar fa1 = {\n prefix: 'fas',\n iconName: '1',\n icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.8 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V64z\"]\n};\nvar fa2 = {\n prefix: 'fas',\n iconName: '2',\n icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nvar fa3 = {\n prefix: 'fas',\n iconName: '3',\n icon: [320, 512, [], \"33\", \"M0 64C0 46.3 14.3 32 32 32H272c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L162.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H105.4C63 480 24.2 456 5.3 418.1l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H80c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L189.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa4 = {\n prefix: 'fas',\n iconName: '4',\n icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368H256v80c0 17.7 14.3 32 32 32s32-14.3 32-32V368h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320V160c0-17.7-14.3-32-32-32s-32 14.3-32 32V304H82.4L189 77.6z\"]\n};\nvar fa5 = {\n prefix: 'fas',\n iconName: '5',\n icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H90.7L70.3 208H184c75.1 0 136 60.9 136 136s-60.9 136-136 136H100.5c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1H184c39.8 0 72-32.2 72-72s-32.2-72-72-72H32c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nvar fa6 = {\n prefix: 'fas',\n iconName: '6',\n icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3c0 .2 0 .3 0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM256 320A96 96 0 1 1 64 320a96 96 0 1 1 192 0z\"]\n};\nvar fa7 = {\n prefix: 'fas',\n iconName: '7',\n icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32H288c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar fa8 = {\n prefix: 'fas',\n iconName: '8',\n icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128h64c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288H192c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h15.9c0 0 .1 0 .1 0h32c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0H144c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nvar fa9 = {\n prefix: 'fas',\n iconName: '9',\n icon: [320, 512, [], \"39\", \"M64 192a96 96 0 1 0 192 0A96 96 0 1 0 64 192zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6H386.7l42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nvar faArrowsToCircle = {\n prefix: 'fas',\n iconName: 'arrows-to-circle',\n icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7V96c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h18.7L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM114.7 352H96c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32v18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1v0V96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V320v0c0 0 0-.1 0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4c0 0 .1 0 .1 0h0 96c17.7 0 32 14.3 32 32s-14.3 32-32 32H525.3z\"]\n};\nvar faCircleChevronRight = {\n prefix: 'fas',\n iconName: 'circle-chevron-right',\n icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nvar faChevronCircleRight = faCircleChevronRight;\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256v32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32v80 32c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faTrashCan = {\n prefix: 'fas',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm96 64c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faTrashAlt = faTrashCan;\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M64 128V96h64l0 320H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H192l0-320h64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H160 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM502.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V352H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H512V160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faUserXmark = {\n prefix: 'fas',\n iconName: 'user-xmark',\n icon: [640, 512, [\"user-times\"], \"f235\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faUserTimes = faUserXmark;\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1V192c0 53 43 96 96 96s96-43 96-96V71.1l-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1V192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112V265.3c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V336c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192V71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64h96v80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faCommentAlt = faMessage;\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32V448h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64V256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faDownLeftAndUpRightToCenter = {\n prefix: 'fas',\n iconName: 'down-left-and-up-right-to-center',\n icon: [512, 512, [\"compress-alt\"], \"f422\", \"M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H296c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272H216c13.3 0 24 10.7 24 24V440c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z\"]\n};\nvar faCompressAlt = faDownLeftAndUpRightToCenter;\nvar faExplosion = {\n prefix: 'fas',\n iconName: 'explosion',\n icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87H378.5c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64H117.8L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448v0H512v0h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H64zM288 0c13.3 0 24 10.7 24 24V72c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24z\"]\n};\nvar faFileLines = {\n prefix: 'fas',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM112 256H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFileAlt = faFileLines;\nvar faFileText = faFileLines;\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32H320c17.7 0 32 14.3 32 32V416h96V256c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H512V448c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V96H192V256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V64z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8v96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304V208z\"]\n};\nvar faBuildingUn = {\n prefix: 'fas',\n iconName: 'building-un',\n icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM237.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V80c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCalendarDays = {\n prefix: 'fas',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm64 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm128 0v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H336zM64 400v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H208zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H336c-8.8 0-16 7.2-16 16z\"]\n};\nvar faCalendarAlt = faCalendarDays;\nvar faAnchorCircleCheck = {\n prefix: 'fas',\n iconName: 'anchor-circle-check',\n icon: [640, 512, [], \"e4aa\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faBuildingCircleArrowRight = {\n prefix: 'fas',\n iconName: 'building-circle-arrow-right',\n icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V232.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm96 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6L521.4 352H432c-8.8 0-16 7.2-16 16s7.2 16 16 16h89.4l-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nvar faVolleyball = {\n prefix: 'fas',\n iconName: 'volleyball',\n icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nvar faVolleyballBall = faVolleyball;\nvar faArrowsUpToLine = {\n prefix: 'fas',\n iconName: 'arrows-up-to-line',\n icon: [576, 512, [], \"e4c2\", \"M32 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96zM9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 237.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L416 237.3 416 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nvar faSortDesc = faSortDown;\nvar faCircleMinus = {\n prefix: 'fas',\n iconName: 'circle-minus',\n icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232H328c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusCircle = faCircleMinus;\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 288h32V480 32zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128h96V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H512V128c0-35.3-28.7-64-64-64H352v64z\"]\n};\nvar faRightFromBracket = {\n prefix: 'fas',\n iconName: 'right-from-bracket',\n icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSignOutAlt = faRightFromBracket;\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [512, 512, [9883], \"f5d2\", \"M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [129532], \"e06e\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM416 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96H160c-53 0-96-43-96-96s43-96 96-96h88.4c-15.2-17-24.4-39.4-24.4-64H96c-53 0-96 43-96 96V416c0 53 43 96 96 96H416c53 0 96-43 96-96V288c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64H352c35.3 0 64-28.7 64-64s-28.7-64-64-64H320 160z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32V176c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V71L352 90.2V208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48V64c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM74.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2h61.7c10.7 0 20.7 5.3 26.6 14.2L213.3 304H240c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V352c0-26.5 21.5-48 48-48H74.7zM192 408a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM478.7 278.3L440.3 368H496c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L391.7 400H336c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L19.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nvar faHeartMusicCameraBolt = faIcons;\nvar faMicrophoneLinesSlash = {\n prefix: 'fas',\n iconName: 'microphone-lines-slash',\n icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8V256H358.9l-34.5-27c2.9-3.1 7-5 11.6-5h80V192H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H336c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nvar faMicrophoneAltSlash = faMicrophoneLinesSlash;\nvar faBridgeCircleCheck = {\n prefix: 'fas',\n iconName: 'bridge-circle-check',\n icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [448, 512, [], \"e06a\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM216 280v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V360H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V280c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1v40c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128v24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7V256c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256v24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8V256c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96v24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7V256c0-28.7 23.3-52 52-52s52 23.3 52 52v24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1V256c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24v24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9V256z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm64-64c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h48c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32H160C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64v88c0 22.1-17.9 40-40 40s-40-17.9-40-40V160c0-8.8-7.2-16-16-16s-16 7.2-16 16v56c0 39.8 32.2 72 72 72z\"]\n};\nvar faMagnifyingGlassLocation = {\n prefix: 'fas',\n iconName: 'magnifying-glass-location',\n icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faSearchLocation = faMagnifyingGlassLocation;\nvar faForwardStep = {\n prefix: 'fas',\n iconName: 'forward-step',\n icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241V96c0-17.7 14.3-32 32-32s32 14.3 32 32V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V271l-11.5 9.6-192 160z\"]\n};\nvar faStepForward = faForwardStep;\nvar faFaceSmileBeam = {\n prefix: 'fas',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faSmileBeam = faFaceSmileBeam;\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1V345.8c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V400 334 64 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9v65.5L64 252.6V318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3V238.7l38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9v66.7l-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8v71.4c21.8 1.9 43.3 6.7 64 14.4V244.2l22.7 6.7c13.5 4 27.3 6.4 41.3 7.4V194c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12v-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8v72.4c-13-.4-26 .8-38.7 3.6L128 173.2V98L64 114v73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2V251.9l-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5v77.4zm64-149.4V115.4c-20.9 6.1-42.4 9.1-64 9.1V194c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n};\nvar faFootball = {\n prefix: 'fas',\n iconName: 'football',\n icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6c-18.3 29.8-30.9 62.3-39.2 95.4L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faFootballBall = faFootball;\nvar faSchoolCircleExclamation = {\n prefix: 'fas',\n iconName: 'school-circle-exclamation',\n icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64v64l178.7 0L128 338.7V32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H173.3L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-274.7z\"]\n};\nvar faAnglesDown = {\n prefix: 'fas',\n iconName: 'angles-down',\n icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nvar faAngleDoubleDown = faAnglesDown;\nvar faUsersRectangle = {\n prefix: 'fas',\n iconName: 'users-rectangle',\n icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H544c53 0 96-43 96-96V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zm159.8 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3C119.9 256 96 279.9 96 309.3zM461.2 336h56.1c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faPeopleRoof = {\n prefix: 'fas',\n iconName: 'people-roof',\n icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 160a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM144 256a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm312 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM226.9 491.4L200 441.5V480c0 17.7-14.3 32-32 32H120c-17.7 0-32-14.3-32-32V441.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3h19.5c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6h19.5c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5V480c0 17.7-14.3 32-32 32H472c-17.7 0-32-14.3-32-32V441.5l-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5V400c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32V345.5l-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nvar faPeopleLine = {\n prefix: 'fas',\n iconName: 'people-line',\n icon: [640, 512, [], \"e534\", \"M360 72a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM144 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM496 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5V272c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V217.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5V352c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V313.5z\"]\n};\nvar faBeerMugEmpty = {\n prefix: 'fas',\n iconName: 'beer-mug-empty',\n icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V96h51.2c42.4 0 76.8 34.4 76.8 76.8V274.9c0 30.4-17.9 57.9-45.6 70.2L384 381.7V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7V172.8c0-7.1-5.7-12.8-12.8-12.8H384V311.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V368c0 8.8 7.2 16 16 16s16-7.2 16-16V144z\"]\n};\nvar faBeer = faBeerMugEmpty;\nvar faDiagramPredecessor = {\n prefix: 'fas',\n iconName: 'diagram-predecessor',\n icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nvar faArrowUpLong = {\n prefix: 'fas',\n iconName: 'arrow-up-long',\n icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nvar faLongArrowUp = faArrowUpLong;\nvar faFireFlameSimple = {\n prefix: 'fas',\n iconName: 'fire-flame-simple',\n icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nvar faBurn = faFireFlameSimple;\nvar faPerson = {\n prefix: 'fas',\n iconName: 'person',\n icon: [320, 512, [129485, \"male\"], \"f183\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152z\"]\n};\nvar faMale = faPerson;\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96V352h64V96H512V352h64V96c0-35.3-28.7-64-64-64H128zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480H563.2c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2H19.2z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [512, 512, [], \"f6dd\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM200 352h16c22.1 0 40 17.9 40 40v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-4.4-3.6-8-8-8H200c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-8c0-8.8 7.2-16 16-16s16 7.2 16 16v8c0 22.1-17.9 40-40 40H200c-22.1 0-40-17.9-40-40V392c0-22.1 17.9-40 40-40zm133.1 0H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H333.1c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1H304c-8.8 0-16-7.2-16-16s7.2-16 16-16h42.9c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16v31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66V368c0-8.8 7.2-16 16-16s16 7.2 16 16v31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6V368c0-8.8 7.2-16 16-16z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32S0 81.7 0 64V62.8c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V64c0 17.7-14.3 32-32 32s-32-14.3-32-32V62.8c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32V288c0 17.7 14.3 32 32 32H288V160c0-17.7 14.3-32 32-32s32 14.3 32 32V320H544c17.7 0 32-14.3 32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 53-43 96-96 96H352v64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V384H96c-53 0-96-43-96-96V160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H96V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H192V256 160c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32v96 32H384V256 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96 32H480V256 160c0-17.7 14.3-32 32-32z\"]\n};\nvar faTruckPlane = {\n prefix: 'fas',\n iconName: 'truck-plane',\n icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1V192.5L7.8 274.3C2.9 277.2 0 282.4 0 288v64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37v81.2l-50 40c-3.8 3-6 7.6-6 12.5v32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15V463.4c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1V408 325.5 184l0-1.1 0 0V86.1C256 54.7 231.5 0 200 0zm88 176V400c0 20.9 13.4 38.7 32 45.3V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V448H544v40c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V445.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7H539.7c9.2 0 17.2 6 20.5 14.7L576 304H352l15.8-49.3zM568 352a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM336 376a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 224a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFaceGrinStars = {\n prefix: 'fas',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nvar faGrinStars = faFaceGrinStars;\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M160 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7H302.9c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8V64H160V208.5zM288 64V208.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L366.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C374 314.1 384 347.9 384 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5H76.1c-17.3 0-34.2-7.1-43.8-21.5C11.9 460.1 0 423.4 0 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14V64C78.3 64 64 49.7 64 32S78.3 0 96 0h16H272h16c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nvar faSpaghettiMonsterFlying = {\n prefix: 'fas',\n iconName: 'spaghetti-monster-flying',\n icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1l0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faPastafarianism = faSpaghettiMonsterFlying;\nvar faArrowDownUpAcrossLine = {\n prefix: 'fas',\n iconName: 'arrow-down-up-across-line',\n icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V288H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H448V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3V224H192 128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192h64V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192zM448 320H384V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320z\"]\n};\nvar faSpoon = {\n prefix: 'fas',\n iconName: 'spoon',\n icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nvar faUtensilSpoon = faSpoon;\nvar faJarWheat = {\n prefix: 'fas',\n iconName: 'jar-wheat',\n icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm112 0H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320H144h32 21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7zM112 352H69.8c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416H144v32c0 8.8 7.2 16 16 16s16-7.2 16-16V416h21.8c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8H208c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nvar faEnvelopesBulk = {\n prefix: 'fas',\n iconName: 'envelopes-bulk',\n icon: [640, 512, [\"mail-bulk\"], \"f674\", \"M128 0C110.3 0 96 14.3 96 32V224h96V192c0-35.3 28.7-64 64-64H480V32c0-17.7-14.3-32-32-32H128zM256 160c-17.7 0-32 14.3-32 32v32h96c35.3 0 64 28.7 64 64V416H576c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H256zm240 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM64 256c-17.7 0-32 14.3-32 32v13L187.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L352 301V288c0-17.7-14.3-32-32-32H64zm288 84.8L216 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L32 340.8V480c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V340.8z\"]\n};\nvar faMailBulk = faEnvelopesBulk;\nvar faFileCircleExclamation = {\n prefix: 'fas',\n iconName: 'file-circle-exclamation',\n icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faCircleH = {\n prefix: 'fas',\n iconName: 'circle-h',\n icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM368 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H192l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H320V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHospitalSymbol = faCircleH;\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64H448c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zm64 32v64c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H80zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c13.3 0 24-10.7 24-24s-10.7-24-24-24H216z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H96zM208 288h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V80zM496 192c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V208c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V336z\"]\n};\nvar faContactBook = faAddressBook;\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H270.1c-.1 0-.3-.1-.4-.1l-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3l0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6l0 0 .2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1H335.1c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nvar faK = {\n prefix: 'fas',\n iconName: 'k',\n icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249V64c0-17.7-14.3-32-32-32S0 46.3 0 64V328 448c0 17.7 14.3 32 32 32s32-14.3 32-32V341l64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nvar faLandmarkFlag = {\n prefix: 'fas',\n iconName: 'landmark-flag',\n icon: [512, 512, [], \"e51c\", \"M272 0h80c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H272v32H464c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H240V16c0-8.8 7.2-16 16-16h16zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1v32c0 8.8 7.2 16 16 16h32zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPencilAlt = faPencil;\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3V256v41.7L459.5 440.6zM256 352V256 128 96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V352z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2 0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.3-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9l0 0 0 0-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32H48C21.5 32 0 53.5 0 80V400c0 26.5 21.5 48 48 48H192V176c0-44.2 35.8-80 80-80h48V80c0-26.5-21.5-48-48-48H215.4C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48V448v16c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V243.9c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1H320 272zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faFileClipboard = faPaste;\nvar faCodePullRequest = {\n prefix: 'fas',\n iconName: 'code-pull-request',\n icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24V64h16c70.7 0 128 57.3 128 128V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-35.3-28.7-64-64-64H320v40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80A24 24 0 1 0 56 80a24 24 0 1 0 48 0zm8 73.3V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm328 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16z\"]\n};\nvar faTruckRampBox = {\n prefix: 'fas',\n iconName: 'truck-ramp-box',\n icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0V400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8V64c0-35.3 28.7-64 64-64H640zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nvar faTruckLoading = faTruckRampBox;\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faVialVirus = {\n prefix: 'fas',\n iconName: 'vial-virus',\n icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V384c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5V96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 96 32zM96 192V96h64v96H96zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-88a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm40 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faSheetPlastic = {\n prefix: 'fas',\n iconName: 'sheet-plastic',\n icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64H224V384c0-17.7 14.3-32 32-32H384V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384H256V512L384 384z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144V368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144H128v96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48V144z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 399.5 56.4 330 132.8 309.9c6-1.6 12.2 .9 15.9 5.8l62.5 83.3c6.4 8.5 19.2 8.5 25.6 0l62.5-83.3c3.7-4.9 9.9-7.4 15.9-5.8C391.6 330 448 399.5 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H160z\"]\n};\nvar faPersonArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'person-arrow-up-from-line',\n icon: [640, 512, [], \"e539\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32V141.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faScrollTorah = {\n prefix: 'fas',\n iconName: 'scroll-torah',\n icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480V32C96 14.3 74.5 0 48 0S0 14.3 0 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32H128V480H512V32zM592 0c-26.5 0-48 14.3-48 32V480c0 17.7 21.5 32 48 32s48-14.3 48-32V32c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3H271l31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180h56.7c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3H369l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332H214.3c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332H298.8L320 368.4zM254.5 256l30.3 52h70.4l30.3-52-30.3-52H284.8l-30.3 52zm144.9 23.8L383 308h32.8l-16.4-28.2zM415.8 204H383l16.4 28.2L415.8 204zM320 143.6L298.8 180h42.4L320 143.6zM224.2 204l16.4 28.2L257 204H224.2zM257 308l-16.4-28.2L224.2 308H257z\"]\n};\nvar faTorah = faScrollTorah;\nvar faBroomBall = {\n prefix: 'fas',\n iconName: 'broom-ball',\n icon: [576, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M566.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-192 192 34.7 34.7c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H364.3L256 211.7V182.6c0-12.5 10.1-22.6 22.6-22.6c6 0 11.8 2.4 16 6.6l34.7 34.7 192-192c12.5-12.5 32.8-12.5 45.3 0zm-344 225.5L341.1 353.4c3.7 42.7-11.7 85.2-42.3 115.8C271.4 496.6 234.2 512 195.5 512L22.1 512C9.9 512 0 502.1 0 489.9c0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2c0-31.5 12.5-61.7 34.8-84l8-8c30.6-30.6 73.1-45.9 115.8-42.3zM464 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faQuidditch = faBroomBall;\nvar faQuidditchBroomBall = faBroomBall;\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128H192c-70.7 0-128-57.3-128-128s57.3-128 128-128H384zM576 256c0-106-86-192-192-192H192C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192zM192 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faBoxArchive = {\n prefix: 'fas',\n iconName: 'box-archive',\n icon: [512, 512, [\"archive\"], \"f187\", \"M32 32H480c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H32C14.3 128 0 113.7 0 96V64C0 46.3 14.3 32 32 32zm0 128H480V416c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V160zm128 80c0 8.8 7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faArchive = faBoxArchive;\nvar faPersonDrowning = {\n prefix: 'fas',\n iconName: 'person-drowning',\n icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32V96.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3V64zM320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faArrowDown91 = {\n prefix: 'fas',\n iconName: 'arrow-down-9-1',\n icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM450.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V416H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V320c0-10.3-4.9-19.9-13.3-26zM418.3 91a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 91zM405.1 203.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericDesc = faArrowDown91;\nvar faSortNumericDownAlt = faArrowDown91;\nvar faFaceGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongueSquint = faFaceGrinTongueSquint;\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M128 0h64c17.7 0 32 14.3 32 32v96H96V32c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96H224c53 0 96 43 96 96V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V256zm240 80A80 80 0 1 0 80 336a80 80 0 1 0 160 0zM256 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M288 64v64H416L368 64H288zM419.2 25.6L496 128h80c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64H288c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H224V48c0-26.5 21.5-48 48-48h96c20.1 0 39.1 9.5 51.2 25.6zM152 256h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512H152c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6h16c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8v16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512H472c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392V376c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faW = {\n prefix: 'fas',\n iconName: 'w',\n icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nvar faEarthAfrica = {\n prefix: 'fas',\n iconName: 'earth-africa',\n icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9v41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.4-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32v28c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16v48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4V318.6c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faGlobeAfrica = faEarthAfrica;\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C0 175.3 143.3 32 320 32s320 143.3 320 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-70.7 57.3-128 128-128s128 57.3 128 128v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-35.3-28.7-64-64-64zM160 352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-123.7 100.3-224 224-224s224 100.3 224 224v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nvar faTabletScreenButton = {\n prefix: 'fas',\n iconName: 'tablet-screen-button',\n icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64H64V384H384V64z\"]\n};\nvar faTabletAlt = faTabletScreenButton;\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5v1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3v-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144H512c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nvar faTrowelBricks = {\n prefix: 'fas',\n iconName: 'trowel-bricks',\n icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32v72h89c3.6-13.8 16.1-24 31-24h88c26.5 0 48 21.5 48 48s-21.5 48-48 48H376c-14.9 0-27.4-10.2-31-24H256v72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32V256zM32 384h96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32zm192 0H480c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32z\"]\n};\nvar faFaceFlushed = {\n prefix: 'fas',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM176 384c0 8.8 7.2 16 16 16H320c8.8 0 16-7.2 16-16s-7.2-16-16-16H192c-8.8 0-16 7.2-16 16zm-16-88a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faFlushed = faFaceFlushed;\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48V256H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v64H144c8.8 0 16 7.2 16 16s-7.2 16-16 16H0v80c0 26.5 21.5 48 48 48H265.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM152 64h16c8.8 0 16 7.2 16 16v24h24c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H184v24c0 8.8-7.2 16-16 16H152c-8.8 0-16-7.2-16-16V152H112c-8.8 0-16-7.2-16-16V120c0-8.8 7.2-16 16-16h24V80c0-8.8 7.2-16 16-16zM512 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM288 477.1c0 19.3 15.6 34.9 34.9 34.9H541.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H381.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faTentArrowLeftRight = {\n prefix: 'fas',\n iconName: 'tent-arrow-left-right',\n icon: [576, 512, [], \"e57f\", \"M488.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L489.5 72 86.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nvar faLegal = faGavel;\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M128 32h32c17.7 0 32 14.3 32 32V96H96V64c0-17.7 14.3-32 32-32zm64 96V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V388.9c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28H192zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3V448c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V128h99.8zM320 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V96H320V64zm-32 64V288H224V128h64z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 21.2-5.1 41.1-14.2 58.7L416 300.8V96c0-53-43-96-96-96s-96 43-96 96v54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128v-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6v40c0 89.1 66.2 162.7 152 174.4V464H248c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M92.5 0H208c40 0 52 24 64 48s24 48 64 48h85.2C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288H128l-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64H80c-8.8 0-16 7.2-16 16s7.2 16 16 16h48H384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H418.5l25.6-64H464c26.5 0 48 21.5 48 48V384H0V272c0-26.5 21.5-48 48-48H79zM0 416H512v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V416z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h57.7l16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7H64c-17.7 0-32 14.3-32 32v32h96c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32h70.4c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128H480c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H459.6c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21H280zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40h66.4C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104H187.3zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBellConcierge = {\n prefix: 'fas',\n iconName: 'bell-concierge',\n icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24h16v33.3C119.6 157.2 32 252.4 32 368H480c0-115.6-87.6-210.8-200-222.7V112h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H256 216zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H24z\"]\n};\nvar faConciergeBell = faBellConcierge;\nvar faPenRuler = {\n prefix: 'fas',\n iconName: 'pen-ruler',\n icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nvar faPencilRuler = faPenRuler;\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160h44.8c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2V464c0 26.5-21.5 48-48 48H112c-26.5 0-48-21.5-48-48V348.3c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM448 64a64 64 0 1 1 128 0A64 64 0 1 1 448 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1h44.8c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6V464c0 26.5-21.5 48-48 48H496c-26.5 0-48-21.5-48-48V391.2l47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240v32h96V240c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V336H272v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nvar faPeopleArrowsLeftRight = faPeopleArrows;\nvar faMarsAndVenusBurst = {\n prefix: 'fas',\n iconName: 'mars-and-venus-burst',\n icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3H352c-13.3 0-24 10.7-24 24s10.7 24 24 24h24v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l24 0H376c0 13.3 10.7 24 24 24s24-10.7 24-24H400l24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456h24c13.3 0 24-10.7 24-24s-10.7-24-24-24H424v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H504zM400 128a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nvar faSquareCaretRight = {\n prefix: 'fas',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nvar faCaretSquareRight = faSquareCaretRight;\nvar faScissors = {\n prefix: 'fas',\n iconName: 'scissors',\n icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCut = faScissors;\nvar faSunPlantWilt = {\n prefix: 'fas',\n iconName: 'sun-plant-wilt',\n icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32v53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6V176c0-44.2-35.8-80-80-80s-80 35.8-80 80v22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80v21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6V272c0-17.7 14.3-32 32-32s32 14.3 32 32v8V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H504V280v-8V176z\"]\n};\nvar faToiletsPortable = {\n prefix: 'fas',\n iconName: 'toilets-portable',\n icon: [576, 512, [], \"e584\", \"M32 0H224c17.7 0 32 14.3 32 32V64H0V32C0 14.3 14.3 0 32 0zM0 96H24 232h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H48v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM192 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16zM352 0H544c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32zM320 96h24H552h24v24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H368v8c0 13.3-10.7 24-24 24s-24-10.7-24-24V120 96zM512 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16s16-7.2 16-16V240c0-8.8-7.2-16-16-16z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6V352c0 53-114.6 96-256 96S0 405 0 352V222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faMagnifyingGlassArrowRight = {\n prefix: 'fas',\n iconName: 'magnifying-glass-arrow-right',\n icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31H120c-13.3 0-24 10.7-24 24s10.7 24 24 24H238.1l-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nvar faTachographDigital = {\n prefix: 'fas',\n iconName: 'tachograph-digital',\n icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm32 64H320c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16H560c8.8 0 16 7.2 16 16s-7.2 16-16 16H400c-8.8 0-16-7.2-16-16zM80 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faDigitalTachograph = faTachographDigital;\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320H618.7c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192H106.7zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H485.3c10.5 0 19.5-6 23.9-14.8L324.9 352H261.3zM512 160A80 80 0 1 0 512 0a80 80 0 1 0 0 160z\"]\n};\nvar faClover = {\n prefix: 'fas',\n iconName: 'clover',\n icon: [448, 512, [], \"e139\", \"M173.3 32C139.4 32 112 59.4 112 93.3v4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4H61.3C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368h4.9c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34v4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3v-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4h4.9c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3h-4.9c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34V93.3C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2C205.1 38.5 189.5 32 173.3 32z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2v64H336c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96H224v64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nvar faMailReply = faReply;\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [9770], \"f699\", \"M0 256C0 114.6 114.6 0 256 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512C114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nvar faHouseFire = {\n prefix: 'fas',\n iconName: 'house-fire',\n icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM453.5 163.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C640 440 568.7 512 480 512c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM530 433c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15z\"]\n};\nvar faSquareMinus = {\n prefix: 'fas',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 200H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMinusSquare = faSquareMinus;\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H384v64h32c88.4 0 160 71.6 160 160v64c0 17.7-14.3 32-32 32H384 320c-20.1 0-39.1-9.5-51.2-25.6l-71.4-95.2c-3.5-4.7-8.3-8.3-13.7-10.5L47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64H48c10.1 0 19.6 4.7 25.6 12.8L112 128H320V64H160c-17.7 0-32-14.3-32-32zM384 320H512V288c0-53-43-96-96-96H384V320zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H536.2c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquareCaretDown = {\n prefix: 'fas',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nvar faCaretSquareDown = faSquareCaretDown;\nvar faFileCircleQuestion = {\n prefix: 'fas',\n iconName: 'file-circle-question',\n icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0H160c17.7 0 32 14.3 32 32V416c0 53-43 96-96 96s-96-43-96-96V32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9V154l75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192H480c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H182.8zM128 64H64v64h64V64zM64 192v64h64V192H64zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V416H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V320H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V224H144c8.8 0 16-7.2 16-16s-7.2-16-16-16H32V128z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faNavicon = faBars;\nvar faPeopleGroup = {\n prefix: 'fas',\n iconName: 'people-group',\n icon: [640, 512, [], \"e533\", \"M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3V245.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5V416c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V389.2C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112h32c24 0 46.2 7.5 64.4 20.3zM448 416V394.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176h32c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2V416c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3V261.7c-10 11.3-16 26.1-16 42.3zm144-42.3v84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2V448c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V405.2c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112h32c61.9 0 112 50.1 112 112z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nvar faHourglass3 = faHourglassEnd;\nvar faHeartCrack = {\n prefix: 'fas',\n iconName: 'heart-crack',\n icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1v5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nvar faHeartBroken = faHeartCrack;\nvar faSquareUpRight = {\n prefix: 'fas',\n iconName: 'square-up-right',\n icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM320 313.4V176c0-8.8-7.2-16-16-16H166.6c-12.5 0-22.6 10.1-22.6 22.6c0 6 2.4 11.8 6.6 16L184 232l-66.3 66.3C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7L248 296l33.4 33.4c4.2 4.2 10 6.6 16 6.6c12.5 0 22.6-10.1 22.6-22.6z\"]\n};\nvar faExternalLinkSquareAlt = faSquareUpRight;\nvar faFaceKissBeam = {\n prefix: 'fas',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faKissBeam = faFaceKissBeam;\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM48 368v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H416zM48 240v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H416zM48 112v32c0 8.8 7.2 16 16 16H96c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H64c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H416zM160 128v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V320c0-17.7-14.3-32-32-32H192z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nvar faPeopleRobbery = {\n prefix: 'fas',\n iconName: 'people-robbery',\n icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V174.3c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64v96l0 .6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352H88V480c0 17.7 14.3 32 32 32s32-14.3 32-32V252.7l13 20.5c5.9 9.2 16.1 14.9 27 14.9h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H209.6l-37.4-58.9C157.6 142 132.1 128 104.7 128H72z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nvar faCircleExclamation = {\n prefix: 'fas',\n iconName: 'circle-exclamation',\n icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24V264c0 13.3-10.7 24-24 24s-24-10.7-24-24V152c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faExclamationCircle = faCircleExclamation;\nvar faSchoolCircleXmark = {\n prefix: 'fas',\n iconName: 'school-circle-xmark',\n icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nvar faArrowRightFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-from-bracket',\n icon: [512, 512, [\"sign-out\"], \"f08b\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nvar faSignOut = faArrowRightFromBracket;\nvar faCircleChevronDown = {\n prefix: 'fas',\n iconName: 'circle-chevron-down',\n icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nvar faChevronCircleDown = faCircleChevronDown;\nvar faUnlockKeyhole = {\n prefix: 'fas',\n iconName: 'unlock-keyhole',\n icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80v48H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80V144C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h64z\"]\n};\nvar faUnlockAlt = faUnlockKeyhole;\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nvar faHeadphonesSimple = {\n prefix: 'fas',\n iconName: 'headphones-simple',\n icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288C0 146.6 114.6 32 256 32s256 114.6 256 256V392c0 13.3-10.7 24-24 24s-24-10.7-24-24V288c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64h16c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V352zm288-64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faHeadphonesAlt = faHeadphonesSimple;\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48h-8v40H464c30.9 0 56 25.1 56 56v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H464c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-4.4-3.6-8-8-8H312v40h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H256c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V280H112c-4.4 0-8 3.6-8 8v32h8c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V368c0-26.5 21.5-48 48-48h8V288c0-30.9 25.1-56 56-56H264V192h-8c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faCircleDollarToSlot = {\n prefix: 'fas',\n iconName: 'circle-dollar-to-slot',\n icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3c-.3-.1-.5-.2-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.7 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V304c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.3-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V112c0-11.1-9-20.1-20.1-20.1zM48 352H64c19.5 25.9 44 47.7 72.2 64H64v32H256 448V416H375.8c28.2-16.3 52.8-38.1 72.2-64h16c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V400c0-26.5 21.5-48 48-48z\"]\n};\nvar faDonate = faCircleDollarToSlot;\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128v7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6V320H576V248.6c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3V128c0-35.3-28.7-64-64-64H64zM576 352H0v64c0 17.7 14.3 32 32 32H80V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h96V416c0-8.8 7.2-16 16-16s16 7.2 16 16v32h48c17.7 0 32-14.3 32-32V352zM192 160v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faRoadSpikes = {\n prefix: 'fas',\n iconName: 'road-spikes',\n icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256V116.8c0-15.8 20.5-22 29.3-8.9L320 256V116.8c0-15.8 20.5-22 29.3-8.9L448 256V116.8c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7H512 448 384 320 256 192 64V116.8zM32 384H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFireBurner = {\n prefix: 'fas',\n iconName: 'fire-burner',\n icon: [640, 512, [], \"e4f1\", \"M293.5 3.8c19.7 17.8 38.2 37 55.5 57.7c7.9-9.9 16.8-20.7 26.5-29.5c5.6-5.1 14.4-5.1 20 0c24.7 22.7 45.6 52.7 60.4 81.1c14.5 28 24.2 58.8 24.2 79C480 280 408.7 352 320 352c-89.7 0-160-72.1-160-159.8c0-26.4 12.7-60.7 32.4-92.6c20-32.4 48.1-66.1 81.4-95.8c2.8-2.5 6.4-3.8 10-3.7c3.5 0 7 1.3 9.8 3.8zM370 273c30-21 38-63 20-96c-2-4-4-8-7-12l-36 42s-58-74-62-79c-30 37-45 58-45 82c0 49 36 78 81 78c18 0 34-5 49-15zM32 288c0-17.7 14.3-32 32-32H96c17.7 0 32 14.3 32 32s-14.3 32-32 32v64H544V320c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32V288zM320 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32V64 368 480c0 17.7 14.3 32 32 32s32-14.3 32-32V352l64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30V66.1c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48V32z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16v96 16h32V272 176c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32V320H96c-17.7 0-32-14.3-32-32V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 53 43 96 96 96H288v64H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H320 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H544c53 0 96-43 96-96V192c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H352V144z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57h68c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330v55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faVolumeLow = {\n prefix: 'fas',\n iconName: 'volume-low',\n icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nvar faVolumeDown = faVolumeLow;\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zM64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104-17.9L82.9 161.3C70.7 185.6 64 212.2 64 240z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [127782], \"f743\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.1-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zm69.4 276c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm74.5-116.1c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V64zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V64zM320 320c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faWheatAwn = {\n prefix: 'fas',\n iconName: 'wheat-awn',\n icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nvar faWheatAlt = faWheatAwn;\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96V480c0 17.7 14.3 32 32 32s32-14.3 32-32V320h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H241.2c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nvar faHandsHoldingChild = {\n prefix: 'fas',\n iconName: 'hands-holding-child',\n icon: [640, 512, [], \"e4fa\", \"M320 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm44.7 164.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35h-7.6l-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32V199.5l111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V312.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faSquareCheck = {\n prefix: 'fas',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckSquare = faSquareCheck;\nvar faPesetaSign = {\n prefix: 'fas',\n iconName: 'peseta-sign',\n icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64v96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96V448c0 17.7 14.3 32 32 32s32-14.3 32-32V352h96c77.4 0 142-55 156.8-128H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-3.2C334 87 269.4 32 192 32H64zM282.5 160H96V96h96c41.8 0 77.4 26.7 90.5 64zM96 224H282.5c-13.2 37.3-48.7 64-90.5 64H96V224z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32H80h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H112V208H336V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h48 48c17.7 0 32 14.3 32 32s-14.3 32-32 32H400V240 416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H368 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112V416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V240 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faHeader = faHeading;\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [128123], \"f6e2\", \"M40.1 467.1l-11.2 9c-3.2 2.5-7.1 3.9-11.1 3.9C8 480 0 472 0 462.2V192C0 86 86 0 192 0S384 86 384 192V462.2c0 9.8-8 17.8-17.8 17.8c-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V72c0-13.3-10.7-24-24-24H40zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM16 232v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V232c0-13.3-10.7-24-24-24H40c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24H88c13.3 0 24-10.7 24-24V392c0-13.3-10.7-24-24-24H40z\"]\n};\nvar faListSquares = faList;\nvar faSquarePhoneFlip = {\n prefix: 'fas',\n iconName: 'square-phone-flip',\n icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nvar faPhoneSquareAlt = faSquarePhoneFlip;\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20h44v44c0 11 9 20 20 20s20-9 20-20V180h44c11 0 20-9 20-20s-9-20-20-20H356V96c0-11-9-20-20-20s-20 9-20 20v44H272c-11 0-20 9-20 20z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448H448c106 0 192-86 192-192s-86-192-192-192H192zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24v32h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V200z\"]\n};\nvar faCircleDot = {\n prefix: 'fas',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faDotCircle = faCircleDot;\nvar faFaceDizzy = {\n prefix: 'fas',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-224a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nvar faDizzy = faFaceDizzy;\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z\"]\n};\nvar faHouseMedicalCircleXmark = {\n prefix: 'fas',\n iconName: 'house-medical-circle-xmark',\n icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4V464c0 26.5 21.5 48 48 48H288 528c26.5 0 48-21.5 48-48V440.4c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448H168.5L288 291.7 407.5 448H288z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24V312h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V200c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6h59.2c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nvar faFutbolBall = faFutbol;\nvar faSoccerBall = faFutbol;\nvar faPaintbrush = {\n prefix: 'fas',\n iconName: 'paintbrush',\n icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H208c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nvar faPaintBrush = faPaintbrush;\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [128274], \"f023\", \"M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0H256c35.3 0 64 28.7 64 64V256h8c48.6 0 88 39.4 88 88v32c0 13.3 10.7 24 24 24s24-10.7 24-24V222c-27.6-7.1-48-32.2-48-62V96L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3V168v24 32V376c0 39.8-32.2 72-72 72s-72-32.2-72-72V344c0-22.1-17.9-40-40-40h-8V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64zM96 80v96c0 8.8 7.2 16 16 16H240c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16z\"]\n};\nvar faHotTubPerson = {\n prefix: 'fas',\n iconName: 'hot-tub-person',\n icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2V24zM0 320v16V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H277.3c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96v64zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm112 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24v5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5V200c0 13.3 10.7 24 24 24s24-10.7 24-24V186.8c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2V24c0-13.3-10.7-24-24-24zM64 128A64 64 0 1 0 64 0a64 64 0 1 0 0 128z\"]\n};\nvar faHotTub = faHotTubPerson;\nvar faMapLocation = {\n prefix: 'fas',\n iconName: 'map-location',\n icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3V152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6V503zM15.1 187.3C6 191 0 199.8 0 209.6V480.4c0 17 17.1 28.6 32.9 22.3L160 451.8V200.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77V449.4l192 54.9V255z\"]\n};\nvar faMapMarked = faMapLocation;\nvar faHouseFloodWater = {\n prefix: 'fas',\n iconName: 'house-flood-water',\n icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192h16v73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2H464c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208H104L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320H80L5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5H192v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448H424.5c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320h33.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208h24.9c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nvar faBridgeLock = {\n prefix: 'fas',\n iconName: 'bridge-lock',\n icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32H576c17.7 0 32 14.3 32 32s-14.3 32-32 32H536v64h-8c-61.9 0-112 50.1-112 112v24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V384c0-53-43-96-96-96V160h72V96H64C46.3 96 32 81.7 32 64zM408 96v64h80V96H408zm-48 64V96H280v64h80zM152 96v64h80V96H152zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [128176], \"f81d\", \"M320 96H192L144.6 24.9C137.5 14.2 145.1 0 157.9 0H354.1c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128H320c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96H96c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4l0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84 88c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V424c0 11 9 20 20 20s20-9 20-20V410.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l0 0-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V216z\"]\n};\nvar faPenToSquare = {\n prefix: 'fas',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43 96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z\"]\n};\nvar faEdit = faPenToSquare;\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [128663], \"f5e4\", \"M171.3 96H224v96H111.3l30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192V96h81.2c9.7 0 18.9 4.4 25 12l67.2 84H272zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36H171.3c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256V368c0 17.7 14.3 32 32 32H65.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H385.3c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80H608c17.7 0 32-14.3 32-32V320c0-65.2-48.8-119-111.8-127zM434.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM160 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faShareNodes = {\n prefix: 'fas',\n iconName: 'share-nodes',\n icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nvar faShareAlt = faShareNodes;\nvar faHeartCircleMinus = {\n prefix: 'fas',\n iconName: 'heart-circle-minus',\n icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM96 75V64H288V75c0 19-5.6 37.4-16 53H112c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.1 14.9H112z\"]\n};\nvar faHourglass2 = faHourglassHalf;\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [128300], \"f610\", \"M160 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32zM32 448H320c70.7 0 128-57.3 128-128s-57.3-128-128-128V128c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96V288H160V264c0-30.9-25.1-56-56-56H56c-13.3 0-24 10.7-24 24s10.7 24 24 24h48c4.4 0 8 3.6 8 8v24H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H256 480c17.7 0 32-14.3 32-32s-14.3-32-32-32H400V264c0-4.4 3.6-8 8-8h56c13.3 0 24-10.7 24-24s-10.7-24-24-24H408c-30.9 0-56 25.1-56 56v24H288V96zM480 416V384H32v32c0 53 43 96 96 96H384c53 0 96-43 96-96z\"]\n};\nvar faBagShopping = {\n prefix: 'fas',\n iconName: 'bag-shopping',\n icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64v48H160V112zm-48 48H48c-26.5 0-48 21.5-48 48V416c0 53 43 96 96 96H352c53 0 96-43 96-96V208c0-26.5-21.5-48-48-48H336V112C336 50.1 285.9 0 224 0S112 50.1 112 112v48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faShoppingBag = faBagShopping;\nvar faArrowDownZA = {\n prefix: 'fas',\n iconName: 'arrow-down-z-a',\n icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96H352c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400h40.4L416 359.6 395.8 400z\"]\n};\nvar faSortAlphaDesc = faArrowDownZA;\nvar faSortAlphaDownAlt = faArrowDownZA;\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M352 384H64L5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0h3.4c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192h2.8c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V448z\"]\n};\nvar faPersonRays = {\n prefix: 'fas',\n iconName: 'person-rays',\n icon: [512, 512, [], \"e54d\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9l-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H248zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192h42.7c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0H21.3C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7h42.7C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3H405.3zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352H378.7C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7H154.7c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"]\n};\nvar faFlaskVial = {\n prefix: 'fas',\n iconName: 'flask-vial',\n icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96V64C14.3 64 0 49.7 0 32S14.3 0 32 0H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V309.9l-49 79.6zM96 64v96h64V64H96zM352 0H480h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V214.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4H261.4c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9V64c-17.7 0-32-14.3-32-32s14.3-32 32-32h32zm32 64V224c0 5.9-1.6 11.7-4.7 16.8L330.5 320h171l-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8V64H384z\"]\n};\nvar faHand = {\n prefix: 'fas',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32z\"]\n};\nvar faHandPaper = faHand;\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48H109.8c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9H144h16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5 0-.1c-2.6-7.8-10.7-12.3-18.7-10.5C4.4 354.2-.9 361.8 .1 370L16 368C.1 370 .1 370 .1 370l0 0 0 0 0 .1 .1 .4c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64h22.6c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.3 0 0c0 0 0 0 0 0c-1.9-7.3-8.6-12.4-16.2-12.1c-7.6 .3-13.9 5.9-15.1 13.4L336 368c-15.8-2.6-15.8-2.6-15.8-2.6l0 0 0 0 0 .1-.1 .3c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96V288c0-53-43-96-96-96h-5.5c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4H245.2c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4zM280.9 66.7c-6-4-14-3.5-19.5 1.3s-7 12.7-3.7 19.2L272 80c-14.3 7.2-14.3 7.2-14.3 7.2l0 0 0 0 0 .1 .1 .2 .4 .7c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .2-.2 .1-.1 0 0 0 0c0 0 0 0-22.6-22.6l22.6 22.6c12.5-12.5 12.5-32.8 0-45.3c-12.4-12.4-32.6-12.5-45.1-.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2 0 0 0 0 0 0z\"]\n};\nvar faWorm = {\n prefix: 'fas',\n iconName: 'worm',\n icon: [512, 512, [], \"e599\", \"M256 96c0-53 43-96 96-96h38.4C439.9 0 480 40.1 480 89.6V176v16V376c0 75.1-60.9 136-136 136s-136-60.9-136-136V296c0-22.1-17.9-40-40-40s-40 17.9-40 40V464c0 26.5-21.5 48-48 48s-48-21.5-48-48V296c0-75.1 60.9-136 136-136s136 60.9 136 136v80c0 22.1 17.9 40 40 40s40-17.9 40-40V192H352c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHouseCircleXmark = {\n prefix: 'fas',\n iconName: 'house-circle-xmark',\n icon: [640, 512, [], \"e50b\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8C297 398 352 333.4 352 256V224c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64h10.9 8.2c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H224 176zm72 192V320c0 13.3-10.7 24-24 24s-24-10.7-24-24V192c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFaceKiss = {\n prefix: 'fas',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiss = faFaceKiss;\nvar faBridgeCircleXmark = {\n prefix: 'fas',\n iconName: 'bridge-circle-xmark',\n icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faFaceGrinTongue = {\n prefix: 'fas',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448V400.7c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6V448c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 448V402.6c0-14.7-11.9-26.6-26.6-26.6h-2c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9h-2c-14.7 0-26.6 11.9-26.6 26.6V448c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGrinTongue = faFaceGrinTongue;\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7V400H256V372.7c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32H128zM48 432L6.6 473.4c-4.2 4.2-6.6 10-6.6 16C0 501.9 10.1 512 22.6 512H297.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L272 432H48z\"]\n};\nvar faFaceGrinWink = {\n prefix: 'fas',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrinWink = faFaceGrinWink;\nvar faEarDeaf = {\n prefix: 'fas',\n iconName: 'ear-deaf',\n icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7V400c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48v-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nvar faDeaf = faEarDeaf;\nvar faDeafness = faEarDeaf;\nvar faHardOfHearing = faEarDeaf;\nvar faRoadCircleCheck = {\n prefix: 'fas',\n iconName: 'road-circle-check',\n icon: [640, 512, [], \"e564\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSquareRss = {\n prefix: 'fas',\n iconName: 'square-rss',\n icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faRssSquare = faSquareRss;\nvar faLandMineOn = {\n prefix: 'fas',\n iconName: 'land-mine-on',\n icon: [640, 512, [], \"e51b\", \"M344 24V168c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32v32H192V320zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5H482.3c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512H115.8c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3V224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H96v95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40.1 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H160V128.3c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2H112C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V413.3c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112H366.2c-29.9 0-54.2-24.3-54.2-54.2zM416 416v32H96V416H416z\"]\n};\nvar faStairs = {\n prefix: 'fas',\n iconName: 'stairs',\n icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v96c0 17.7-14.3 32-32 32H320v96c0 17.7-14.3 32-32 32H192v96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h96V320c0-17.7 14.3-32 32-32h96V192c0-17.7 14.3-32 32-32h96V64z\"]\n};\nvar faI = {\n prefix: 'fas',\n iconName: 'i',\n icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96h96V416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V96h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H160 32z\"]\n};\nvar faHryvniaSign = {\n prefix: 'fas',\n iconName: 'hryvnia-sign',\n icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96H223c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H155.5l-50.6 28.9c-1.7 1-3.4 2-5.1 3.1H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H52.3c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113h43.4c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2H161c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H228.5l50.6-28.9c1.7-1 3.4-2 5.1-3.1H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H331.7c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113H179.6c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nvar faHryvnia = faHryvniaSign;\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48V256h96V144c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112V368c0 61.9-50.1 112-112 112S0 429.9 0 368V144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nvar faFaceGrinWide = {\n prefix: 'fas',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nvar faGrinAlt = faFaceGrinWide;\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [129463], \"f5c9\", \"M186.1 52.1C169.3 39.1 148.7 32 127.5 32C74.7 32 32 74.7 32 127.5v6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2l36.7 205.8c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C192.2 323.7 207 312 224 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5v-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nvar faV = {\n prefix: 'fas',\n iconName: 'v',\n icon: [384, 512, [118], \"56\", \"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nvar faBangladeshiTakaSign = {\n prefix: 'fas',\n iconName: 'bangladeshi-taka-sign',\n icon: [384, 512, [], \"e2e6\", \"M36 32.2C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8V160H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V384c0 53 43 96 96 96h32c106 0 192-86 192-192V256c0-53-43-96-96-96H272c-17.7 0-32 14.3-32 32s14.3 32 32 32h16c17.7 0 32 14.3 32 32v32c0 70.7-57.3 128-128 128H160c-17.7 0-32-14.3-32-32V224h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V128.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h25.7l34.6 64H222.9l-27.4-38C191 99.7 183.7 96 176 96H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h43.7l22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112h49c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32H312zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368h65c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1H166.8zm90.6-128H365.9L317 274.8 257.4 192z\"]\n};\nvar faStaffSnake = {\n prefix: 'fas',\n iconName: 'staff-snake',\n icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.1 4.8H288c53 0 96 43 96 96s-43 96-96 96H248V160h40c8.8 0 16-7.2 16-16s-7.2-16-16-16H248 220l-4.5 144H256c53 0 96 43 96 96s-43 96-96 96H240V384h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H213l-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31H136c-22.1 0-40-17.9-40-40s17.9-40 40-40h36l-1-32H152c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7V256c0 8.8 7.2 16 16 16h16.5L164 128H136 122.6c-9 18.9-28.3 32-50.6 32H56c-30.9 0-56-25.1-56-56S25.1 48 56 48h8 8 89.5l-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faRodAsclepius = faStaffSnake;\nvar faRodSnake = faStaffSnake;\nvar faStaffAesculapius = faStaffSnake;\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M448 325.8l44 34.5c8.1 1.4 14.8 6.8 18 14.1L552.9 408c10.6 .4 19.5 7.6 22.2 17.4l39.1 30.6c.6 0 1.2-.1 1.8-.1c11.1 0 20.4 7.5 23.2 17.8h-3.9c6.2 8.5 6.4 20.4-.4 29c-8.2 10.4-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L89.6 44.9C127 16.7 173.5 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 5.8zM0 224.2c0-38.7 9.8-75.1 27.1-106.9L341.8 365.3l-2.5 .3c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9l62 3.9 43 33.9C439.3 466.2 421.2 480 400 480H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM616 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-64-48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTruckMedical = {\n prefix: 'fas',\n iconName: 'truck-medical',\n icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM176 80v48l-48 0c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V192h48c8.8 0 16-7.2 16-16V144c0-8.8-7.2-16-16-16H240V80c0-8.8-7.2-16-16-16H192c-8.8 0-16 7.2-16 16z\"]\n};\nvar faAmbulance = faTruckMedical;\nvar faWheatAwnCircleExclamation = {\n prefix: 'fas',\n iconName: 'wheat-awn-circle-exclamation',\n icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [9731, 9924], \"f7d0\", \"M341.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L408 160.2V120c0-13.3 10.7-24 24-24s24 10.7 24 24v19.6l22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C396.7 296.9 416 338.2 416 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9H181.3c-13.9 0-27.7-4.2-37.5-13.9C114.3 469 96 428.7 96 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3L70.5 198.1l-56-24C2.4 168.8-3.3 154.7 1.9 142.5s19.3-17.8 31.5-12.6L56 139.6V120c0-13.3 10.7-24 24-24s24 10.7 24 24v40.2L152.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C164 127.2 160 112.1 160 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM224 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM288 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48 24v3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9V120c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160H397.3L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512H352c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faRoadBarrier = {\n prefix: 'fas',\n iconName: 'road-barrier',\n icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V266.3L149.2 96H64V64c0-17.7-14.3-32-32-32zM405.2 96H330.8l-5.4 10.7L234.8 288h74.3l5.4-10.7L405.2 96zM362.8 288h74.3l5.4-10.7L533.2 96H458.8l-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288h74.3l5.4-10.7L277.2 96H202.8zm288 192H576V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v53.7L490.8 288z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM256 416c0-35.3 28.7-64 64-64s64 28.7 64 64v96H256V416zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V208zM96 320h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H512c-8.8 0-16-7.2-16-16V336zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.8V160H48.5C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160V39.1C424.9 55.7 487.2 99.8 527.5 160H352zM29.9 192H96V320H0c0-46 10.8-89.4 29.9-128zM192 320H128V192H448V320H384v32H576v80c0 26.5-21.5 48-48 48H352V352c0-35.3-28.7-64-64-64s-64 28.7-64 64V480H48c-26.5 0-48-21.5-48-48V352H192V320zm288 0V192h66.1c19.2 38.6 29.9 82 29.9 128H480z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9v11c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43V32zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32V245c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8v11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512h67.3c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512h19 51.3c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352H336 288c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9V392c0-22.1-17.9-40-40-40H444.7c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [128014], \"f6f0\", \"M448 238.1V160h16l9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1V80c0-19.1-8.4-36.3-21.7-48H560c8.8 0 16-7.2 16-16s-7.2-16-16-16H480 448C377.3 0 320 57.3 320 128H224 203.2 148.8c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256v56c0 13.3 10.7 24 24 24s24-10.7 24-24V256c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9h33.7c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8V480c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V315.7c19.2-19.2 31.5-45.7 32-75.7h0v-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faQ = {\n prefix: 'fas',\n iconName: 'q',\n icon: [448, 512, [113], \"51\", \"M64 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C371.9 325.8 384 292.3 384 256c0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nvar faG = {\n prefix: 'fas',\n iconName: 'g',\n icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128H256c-17.7 0-32-14.3-32-32s14.3-32 32-32H400c25.8 0 49.6 21.4 47.2 50.6C437.8 389.6 341.4 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [512, 512, [], \"f481\", \"M96 352V96c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V293.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7H160c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V256h48c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H320V144c0-8.8-7.2-16-16-16H272zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24H136C60.9 512 0 451.1 0 376V152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88H296z\"]\n};\nvar faTemperatureHalf = {\n prefix: 'fas',\n iconName: 'temperature-half',\n icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V208c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature2 = faTemperatureHalf;\nvar faThermometer2 = faTemperatureHalf;\nvar faThermometerHalf = faTemperatureHalf;\nvar faDongSign = {\n prefix: 'fas',\n iconName: 'dong-sign',\n icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32V288 128c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM128 288a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48V256H64V144zM0 144V368c0 61.9 50.1 112 112 112s112-50.1 112-112V189.6c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83V144c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 21.7-8.5 37.2-21.9 47.6c-13.8 10.8-34 17-57.8 17H128c-35.3 0-64 28.7-64 64c0 12.2 3.4 23.5 9.3 33.2C31.7 216.2 0 252.4 0 296c0 41 28 75.4 65.8 85.2c-5.3-18.5 1-38.5 16.2-50.7l160-128c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L285.7 320H304c20.4 0 38.5 12.9 45.3 32.1c3.7 10.6 3.5 21.8 0 31.9H360c48.6 0 88-39.4 88-88c0-43.6-31.7-79.8-73.3-86.8c5.9-9.7 9.3-21.1 9.3-33.2c0-35.3-28.7-64-64-64h-1.4c.9-5.4 1.4-10.9 1.4-16.6c0-48.7-36.1-88.9-83.1-95.2zm45.1 227.4c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L129.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H233.9l52.4-104.8c3.4-6.7 1.6-14.9-4.3-19.6z\"]\n};\nvar faPooBolt = faPooStorm;\nvar faFaceFrownOpen = {\n prefix: 'fas',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nvar faFrownOpen = faFaceFrownOpen;\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32V240H32V32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192zm-64-64c17.7 0 32 14.3 32 32v48c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H162.3c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363V336c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM288 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H282.1l64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nvar faHelmetUn = {\n prefix: 'fas',\n iconName: 'helmet-un',\n icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240v56.3C0 344.8 39.2 384 87.7 384H200h14.9L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6h96c13.3 0 24-10.7 24-24s-10.7-24-24-24H369.5l-1.5-1.5V288h80 32c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.5zM320 417.2l-78-73.7L274.4 288H320V417.2zM285.3 103.1l34.7 52V112c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V208c0 8.8-7.2 16-16 16s-16-7.2-16-16V112c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112v64c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [512, 512, [], \"f140\", \"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6l0 0 .2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32V272H32V480zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-64 64c17.7 0 32-14.3 32-32V304c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6V160C384 71.6 312.4 0 224 0H162.3C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149v27c0 35.3 28.7 64 64 64h88c22.1 0 40-17.9 40-40s-17.9-40-40-40H96c-8.8 0-16-7.2-16-16s7.2-16 16-16h56c39.8 0 72 32.2 72 72z\"]\n};\nvar faArrowUpFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-up-from-bracket',\n icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3V320c0 17.7 14.3 32 32 32s32-14.3 32-32V109.3l73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 53 43 96 96 96H352c53 0 96-43 96-96V352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nvar faFolderBlank = faFolder;\nvar faFileWaveform = {\n prefix: 'fas',\n iconName: 'file-waveform',\n icon: [448, 512, [\"file-medical-alt\"], \"f478\", \"M96 0C60.7 0 32 28.7 32 64V288H144c6.1 0 11.6 3.4 14.3 8.8L176 332.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L281.9 288H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-6.1 0-11.6-3.4-14.3-8.8L240 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L134.1 320H32V448c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V160H288c-17.7 0-32-14.3-32-32V0H96zM288 0V128H416L288 0z\"]\n};\nvar faFileMedicalAlt = faFileWaveform;\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faChartSimple = {\n prefix: 'fas',\n iconName: 'chart-simple',\n icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V80zM0 272c0-26.5 21.5-48 48-48H80c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V272zM368 96h32c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48H368c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V24c0-13.3-10.7-24-24-24H376zm88 48h0v0l0 0zM96 304a112 112 0 1 1 224 0A112 112 0 1 1 96 304z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5V416c0 53 43 96 96 96h5.5c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96H205.3z\"]\n};\nvar faGauge = {\n prefix: 'fas',\n iconName: 'gauge',\n icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faDashboard = faGauge;\nvar faGaugeMed = faGauge;\nvar faTachometerAltAverage = faGauge;\nvar faWandMagicSparkles = {\n prefix: 'fas',\n iconName: 'wand-magic-sparkles',\n icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nvar faMagicWandSparkles = faWandMagicSparkles;\nvar faE = {\n prefix: 'fas',\n iconName: 'e',\n icon: [320, 512, [101], \"45\", \"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"]\n};\nvar faPenClip = {\n prefix: 'fas',\n iconName: 'pen-clip',\n icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1 0 0-1-1 0 0-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nvar faPenAlt = faPenClip;\nvar faBridgeCircleExclamation = {\n prefix: 'fas',\n iconName: 'bridge-circle-exclamation',\n icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32h40v64H32V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2V160H536V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM488 96v64H408V96h80zM360 96v64H280V96h80zM232 96v64H152V96h80zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z\"]\n};\nvar faSchoolCircleCheck = {\n prefix: 'fas',\n iconName: 'school-circle-check',\n icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H320v0H256V416c0-35.3 28.7-64 64-64l.3 0h.5c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8V144c0-26.5-21.5-48-48-48H473.7L337.8 5.4zM96 192h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V208c0-8.8 7.2-16 16-16zm0 128h32c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H336V144c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0H428.5L402.9 32H304V160zm157.1 0h94c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l25.6 128zM32 192l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H448c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160h12c17.7 0 32-14.3 32-32s-14.3-32-32-32h-4l4-32H32z\"]\n};\nvar faVanShuttle = {\n prefix: 'fas',\n iconName: 'van-shuttle',\n icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104v88h96V96H72c-4.4 0-8 3.6-8 8zm482 88L465.1 96H384v96H546zm-226 0V96H224v96h96zM592 384H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V104C0 64.2 32.2 32 72 32H192 352 465.1c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2V336c0 26.5-21.5 48-48 48zm-64 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faShuttleVan = faVanShuttle;\nvar faBuildingUser = {\n prefix: 'fas',\n iconName: 'building-user',\n icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h89.9c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2V271.8 48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM576 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM352 477.1c0 19.3 15.6 34.9 34.9 34.9H605.1c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1H445.1c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nvar faSquareCaretLeft = {\n prefix: 'fas',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nvar faCaretSquareLeft = faSquareCaretLeft;\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [576, 512, [], \"f591\", \"M315 315l158.4-215L444.1 70.6 229 229 315 315zm-187 5l0 0V248.3c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5H224l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7H24c-13.3 0-24-10.7-24-24v-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V448h40c13.3 0 24-10.7 24-24V384h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75H192 160 64c-35.3 0-64 28.7-64 64v96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V352l8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V300.4c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4V32zm-64 76.7V240 371.3C357.2 317.8 280.5 288 200.7 288H192V192h8.7c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166V280.1 512H464 352V416c0-17.7-14.3-32-32-32s-32 14.3-32 32v96H176 160V280.1 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512V244.5l28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1V448c0 35.3-28.7 64-64 64H512zM128 244.5V512H64c-35.3 0-64-28.7-64-64V316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nvar faPersonHalfDress = {\n prefix: 'fas',\n iconName: 'person-half-dress',\n icon: [320, 512, [], \"e548\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm8 352V128h6.9c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352h0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3V384h0v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nvar faRoadBridge = {\n prefix: 'fas',\n iconName: 'road-bridge',\n icon: [640, 512, [], \"e563\", \"M352 0H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V224c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V384zM480 40c-13.3 0-24 10.7-24 24v64c0 13.3 10.7 24 24 24s24-10.7 24-24V64c0-13.3-10.7-24-24-24zM32 96H288v64H248v64h40v96c-53 0-96 43-96 96v64c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V416c0-53-43-96-96-96V224H72V160H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64H120v64h80V160z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8H224V432c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nvar faC = {\n prefix: 'fas',\n iconName: 'c',\n icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nvar faTabletButton = {\n prefix: 'fas',\n iconName: 'tablet-button',\n icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBuildingLock = {\n prefix: 'fas',\n iconName: 'building-lock',\n icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h88.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-23.7 12.9-44.4 32-55.4V272c0-30.5 12.2-58.2 32-78.4V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32v48H432V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [576, 512, [], \"f53a\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64H64V352zm64-208c0 35.3-28.7 64-64 64V144h64zM512 304v64H448c0-35.3 28.7-64 64-64zM448 96h64v64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm96 288H448c17.7 0 32-14.3 32-32V251.8c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1v84c0 17.7 14.3 32 32 32z\"]\n};\nvar faAreaChart = faChartArea;\nvar faHouseFlag = {\n prefix: 'fas',\n iconName: 'house-flag',\n icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32V192 512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H512c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288H64V480c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v96c0 17.7 14.3 32 32 32h64.7l.2 0h-1V159z\"]\n};\nvar faPersonCircleMinus = {\n prefix: 'fas',\n iconName: 'person-circle-minus',\n icon: [576, 512, [], \"e540\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faCancel = faBan;\nvar faCameraRotate = {\n prefix: 'fas',\n iconName: 'camera-rotate',\n icon: [640, 512, [], \"e0d8\", \"M213.1 64.8L202.7 96H128c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H437.3L426.9 64.8C420.4 45.2 402.1 32 381.4 32H258.6c-20.7 0-39 13.2-45.5 32.8zM448 256c0 8.8-7.2 16-16 16H355.3c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L371 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L249 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C257.4 172.7 288 160 320 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3V256zM192 320c0-8.8 7.2-16 16-16h76.7c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L269 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L391 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C382.6 403.3 352 416 320 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3V320z\"]\n};\nvar faSprayCanSparkles = {\n prefix: 'fas',\n iconName: 'spray-can-sparkles',\n icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32v96H224V32c0-17.7-14.3-32-32-32H128C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96V464c0 26.5 21.5 48 48 48H272c26.5 0 48-21.5 48-48V256c0-53-43-96-96-96H96zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nvar faAirFreshener = faSprayCanSparkles;\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nvar faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32V64H160C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96H192V352c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V448H352c88.4 0 160-71.6 160-160z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48v80H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h80V464c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V256h80c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H256V48c0-26.5-21.5-48-48-48H176z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160H208V32H93.7C75.5 32 58.9 42.3 50.7 58.5zM240 160H448L397.3 58.5C389.1 42.3 372.5 32 354.3 32H240V160zm208 32H0V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [640, 512, [9892], \"f228\", \"M176 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM352 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H208v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0H616c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nvar faArrowPointer = {\n prefix: 'fas',\n iconName: 'arrow-pointer',\n icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2V426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320H297.9c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nvar faMousePointer = faArrowPointer;\nvar faMaximize = {\n prefix: 'fas',\n iconName: 'maximize',\n icon: [512, 512, [\"expand-arrows-alt\"], \"f31e\", \"M200 32H56C42.7 32 32 42.7 32 56V200c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79-79 79L73 295c-6.9-6.9-17.2-8.9-26.2-5.2S32 302.3 32 312V456c0 13.3 10.7 24 24 24H200c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H456c13.3 0 24-10.7 24-24V312c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S209.7 32 200 32z\"]\n};\nvar faExpandArrowsAlt = faMaximize;\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64V448c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32s-14.3-32-32-32V304h16c22.1 0 40 17.9 40 40v32c0 39.8 32.2 72 72 72s72-32.2 72-72V252.3c32.5-10.2 56-40.5 56-76.3V144c0-8.8-7.2-16-16-16H544V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H480V80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H432c-8.8 0-16 7.2-16 16v32c0 35.8 23.5 66.1 56 76.3V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V344c0-48.6-39.4-88-88-88H320V64c0-35.3-28.7-64-64-64H96zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9H256c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9H96c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2H384c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312V456c0 22.1 17.9 40 40 40H472c22.1 0 40-17.9 40-40V312c0-22.1-17.9-40-40-40H328c-22.1 0-40 17.9-40 40zM128 512a128 128 0 1 0 0-256 128 128 0 1 0 0 256z\"]\n};\nvar faTriangleCircleSquare = faShapes;\nvar faShuffle = {\n prefix: 'fas',\n iconName: 'shuffle',\n icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160H352c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96h32V64c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V416H352c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8h32V320c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nvar faRandom = faShuffle;\nvar faPersonRunning = {\n prefix: 'fas',\n iconName: 'person-running',\n icon: [448, 512, [127939, \"running\"], \"f70c\", \"M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H362.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h69.6c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z\"]\n};\nvar faRunning = faPersonRunning;\nvar faMobileRetro = {\n prefix: 'fas',\n iconName: 'mobile-retro',\n icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm64 96v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 352a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H128z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [512, 512, [128375], \"f717\", \"M158.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L81.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4L70.8 190.3c-2.4-.8-4.3-2.7-5.1-5.1L46.8 128.4C42.6 115.8 29 109 16.4 113.2S-3 131 1.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L116.1 256 55.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L1.2 368.4C-3 381 3.8 394.6 16.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8L93.7 352.3C78.1 368 73.1 391.4 81.1 412l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L160 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L430.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L395.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L398.4 15.4C393.6 3 379.8-3.2 367.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L336 174.1V160c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4V112c0 8.8-7.2 16-16 16s-16-7.2-16-16V101.2c0-10.1-9.4-17.7-18.5-13.4C194.6 100.7 176 128.2 176 160v14.1l-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nvar faHandsBound = {\n prefix: 'fas',\n iconName: 'hands-bound',\n icon: [640, 512, [], \"e4f9\", \"M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32V96v59.1 .7V192v21.9c0 14.2 5.1 27.9 14.3 38.7L131.6 352H128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32H288h64H480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24h-3.6l85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7V192 155.8v-.7V96 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V96v48.8l-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L473 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C361 209.7 352 233.4 352 258.1V320v32H288V320 258.1c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L96 144.8V96 32zm64 448v32H288V480h64v32H480V480h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H480 352 288 160 128c-13.3 0-24 10.7-24 24s10.7 24 24 24h32z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16v17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1 0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1V440c0 8.8-7.2 16-16 16s-16-7.2-16-16V422.2c-11.2-2.1-21.7-5.7-30.9-8.9l0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4l0 0 0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7V232c0-8.8 7.2-16 16-16z\"]\n};\nvar faPlaneCircleExclamation = {\n prefix: 'fas',\n iconName: 'plane-circle-exclamation',\n icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16v32H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48H128c-8.8 0-16 7.2-16 16s7.2 16 16 16H240v70.6L189.1 307c-5.2-2-10.6-3-16.2-3h-2.1c-23.6 0-42.8 19.2-42.8 42.8c0 9.6 3.2 18.9 9.1 26.4l18.2 23.2c9.7 12.4 24.6 19.6 40.3 19.6H316.4c15.7 0 30.6-7.2 40.3-19.6l18.2-23.2c5.9-7.5 9.1-16.8 9.1-26.4c0-23.6-19.2-42.8-42.8-42.8H339c-5.5 0-11 1-16.2 3L272 326.6V256H384c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V176h80c8.8 0 16-7.2 16-16s-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16zM208 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm80 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M112 0C99.1 0 87.4 7.8 82.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L66.7 224h90.7l5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C136.6 7.8 124.9 0 112 0zm18.7 160H93.3L112 115.2 130.7 160zM256 32v96 96c0 17.7 14.3 32 32 32h80c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80H288c-17.7 0-32 14.3-32 32zm96 64H320V64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64h32 16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320V160zM566.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nvar faComputerMouse = {\n prefix: 'fas',\n iconName: 'computer-mouse',\n icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192H176V0H160C71.6 0 0 71.6 0 160v32zm0 32V352c0 88.4 71.6 160 160 160h64c88.4 0 160-71.6 160-160V224H192 0zm384-32V160C384 71.6 312.4 0 224 0H208V192H384z\"]\n};\nvar faMouse = faComputerMouse;\nvar faArrowRightToBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-to-bracket',\n icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faSignIn = faArrowRightToBracket;\nvar faShopSlash = {\n prefix: 'fas',\n iconName: 'shop-slash',\n icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43V224H512V376L384 275.7V224H320v1.5L277.2 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192h85L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V398.5l-64-50.4V384z\"]\n};\nvar faStoreAltSlash = faShopSlash;\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V352c0-35.3-28.7-64-64-64H64zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faVirusCovidSlash = {\n prefix: 'fas',\n iconName: 'virus-covid-slash',\n icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7H528v16c0 13.3 10.7 24 24 24s24-10.7 24-24V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v16H494.4c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6V48h16c13.3 0 24-10.7 24-24s-10.7-24-24-24H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h16V81.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5H112V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V280h33.6c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1V464H280c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V430.4c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nvar faShopLock = {\n prefix: 'fas',\n iconName: 'shop-lock',\n icon: [640, 512, [], \"e4a5\", \"M36.8 192H449.6c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224H320V384H128V224H64V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 352 224zm144 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64V75c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437v11c-17.7 0-32 14.3-32 32s14.3 32 32 32H64 320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V437c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H320 64 32zM288 437v11H96V437c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nvar faHourglass1 = faHourglassStart;\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M224 352L196.8 52.3C194.2 24.2 216.3 0 244.6 0H534.1c21.1 0 36.4 20.1 30.9 40.4L558.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H549.8l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16H523.6l-17.5 64H400c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L480 352H224zm-16 32H496c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H208c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nvar faBuildingWheat = {\n prefix: 'fas',\n iconName: 'building-wheat',\n icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H272zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zm384 80v16c0 44.2-35.8 80-80 80H544V272c0-44.2 35.8-80 80-80h16zm0 128c0 44.2-35.8 80-80 80H544V384c0-44.2 35.8-80 80-80h16v16zm0 112c0 44.2-35.8 80-80 80H544V496c0-44.2 35.8-80 80-80h16v16zM512 496v16H496c-44.2 0-80-35.8-80-80V416h16c44.2 0 80 35.8 80 80zm0-96H496c-44.2 0-80-35.8-80-80V304h16c44.2 0 80 35.8 80 80v16zm0-128v16H496c-44.2 0-80-35.8-80-80V192h16c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24V160c0 13.3-10.7 24-24 24s-24-10.7-24-24V56c0-13.3 10.7-24 24-24zm96 64v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V96c0-13.3 10.7-24 24-24z\"]\n};\nvar faPersonBreastfeeding = {\n prefix: 'fas',\n iconName: 'person-breastfeeding',\n icon: [448, 512, [], \"e53a\", \"M224 0a80 80 0 1 1 0 160A80 80 0 1 1 224 0zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.8-.1c-38.9-5.6-74.3-25.1-99.7-54.8V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1h75.2c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"]\n};\nvar faRightToBracket = {\n prefix: 'fas',\n iconName: 'right-to-bracket',\n icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSignInAlt = faRightToBracket;\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [384, 512, [9792], \"f221\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V384H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V349.1z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0H384c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8h39.1c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5h47.1c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8h39.1c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8H279.6zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5H200.5c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8H129.3c5.3-31.4 25.8-57.6 53.7-70.8zM352 192A128 128 0 1 0 96 192a128 128 0 1 0 256 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faHeartPulse = {\n prefix: 'fas',\n iconName: 'heart-pulse',\n icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4h87c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31H476.3c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240h-132c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9H16c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9v-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1v5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nvar faHeartbeat = faHeartPulse;\nvar faPeopleCarryBox = {\n prefix: 'fas',\n iconName: 'people-carry-box',\n icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm64 193.7v65.1l51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7V186.6c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5V160c0-17.7 14.3-32 32-32H384c17.7 0 32 14.3 32 32v76.2l10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6v88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51V241.7l-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8H256.7c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm77.9 348.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nvar faPeopleCarry = faPeopleCarryBox;\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128A96 96 0 1 0 416 0a96 96 0 1 0 0 192zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5V112zM144 0C82.1 0 32 50.2 32 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64c-35.3 0-64 28.7-64 64H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64v56H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H64c0 35.3 28.7 64 64 64v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448h56v40c0 13.3 10.7 24 24 24s24-10.7 24-24V448c35.3 0 64-28.7 64-64h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V280h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448V176h40c13.3 0 24-10.7 24-24s-10.7-24-24-24H448c0-35.3-28.7-64-64-64V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H280V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V64H176V24zM160 128H352c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32zm192 32H160V352H352V160z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6H426.6c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32H120c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512H464c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128H346.5z\"]\n};\nvar faXmarksLines = {\n prefix: 'fas',\n iconName: 'xmarks-lines',\n icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM104 196h72c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6H124v44c0 11-9 20-20 20s-20-9-20-20V296 216c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20H124v40h52z\"]\n};\nvar faWeightScale = {\n prefix: 'fas',\n iconName: 'weight-scale',\n icon: [512, 512, [\"weight\"], \"f496\", \"M128 176a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zM391.8 64C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H391.8zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nvar faWeight = faWeightScale;\nvar faUserGroup = {\n prefix: 'fas',\n iconName: 'user-group',\n icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM609.3 512H471.4c5.4-9.4 8.6-20.3 8.6-32v-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2h61.4C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nvar faUserFriends = faUserGroup;\nvar faArrowUpAZ = {\n prefix: 'fas',\n iconName: 'arrow-up-a-z',\n icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176H395.8z\"]\n};\nvar faSortAlphaUp = faArrowUpAZ;\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [448, 512, [9822], \"f441\", \"M96 48L82.7 61.3C70.7 73.3 64 89.5 64 106.5V238.9c0 10.7 5.3 20.7 14.2 26.6l10.6 7c14.3 9.6 32.7 10.7 48.1 3l3.2-1.6c2.6-1.3 5-2.8 7.3-4.5l49.4-37c6.6-5 15.7-5 22.3 0c10.2 7.7 9.9 23.1-.7 30.3L90.4 350C73.9 361.3 64 380 64 400H384l28.9-159c2.1-11.3 3.1-22.8 3.1-34.3V192C416 86 330 0 224 0H83.8C72.9 0 64 8.9 64 19.8c0 7.5 4.2 14.3 10.9 17.7L96 48zm24 68a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H409.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L384 432H64L22.6 473.4z\"]\n};\nvar faFaceLaughSquint = {\n prefix: 'fas',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faLaughSquint = faFaceLaughSquint;\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM120.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C43.1 225.1 0 283.5 0 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C240 440 202.8 464 160 464C98.1 464 48 413.9 48 352c0-47.9 30.1-88.8 72.5-104.8zM259.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4h5.1c.4 0 .8 0 1.3 0h94.1c6.7 0 12.6 4.1 15 10.4L402 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9H282.2l-9.6-48H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H259.8z\"]\n};\nvar faCircleArrowUp = {\n prefix: 'fas',\n iconName: 'circle-arrow-up',\n icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 231c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71V376c0 13.3-10.7 24-24 24s-24-10.7-24-24V193.9l-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 119c9.4-9.4 24.6-9.4 33.9 0L385 231z\"]\n};\nvar faArrowCircleUp = faCircleArrowUp;\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448H384c106 0 192-86 192-192s-86-192-192-192H192zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faPersonWalking = {\n prefix: 'fas',\n iconName: 'person-walking',\n icon: [320, 512, [128694, \"walking\"], \"f554\", \"M160 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nvar faWalking = faPersonWalking;\nvar faL = {\n prefix: 'fas',\n iconName: 'l',\n icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32V416H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z\"]\n};\nvar faBedPulse = {\n prefix: 'fas',\n iconName: 'bed-pulse',\n icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64h92c13.3 0 24 10.7 24 24s-10.7 24-24 24H512c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112H216c-13.3 0-24-10.7-24-24s10.7-24 24-24H352c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160h12.7l20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160H544c53 0 96 43 96 96V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V352H288V192c0-17.7 14.3-32 32-32zm-144 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faProcedures = faBedPulse;\nvar faShuttleSpace = {\n prefix: 'fas',\n iconName: 'shuttle-space',\n icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96h2zM352 128L245.2 63.9C210.4 43 170.6 32 130 32h-2v96l224 0zM96 128l0-96H80C53.5 32 32 53.5 32 80v48h8c-22.1 0-40 17.9-40 40v16V328v16c0 22.1 17.9 40 40 40H32v48c0 26.5 21.5 48 48 48H96l0-96h8c26.2 0 49.4-12.6 64-32H456c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160H168c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6v24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4V212.4c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nvar faSpaceShuttle = faShuttleSpace;\nvar faFaceLaugh = {\n prefix: 'fas',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faLaugh = faFaceLaugh;\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8V96C0 60.7 28.7 32 64 32H181.5c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7H416c35.3 0 64 28.7 64 64v32H144c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224H544c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480H32c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nvar faHeartCirclePlus = {\n prefix: 'fas',\n iconName: 'heart-circle-plus',\n icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCodeFork = {\n prefix: 'fas',\n iconName: 'code-fork',\n icon: [448, 512, [], \"e13b\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3V192c0 17.7 14.3 32 32 32H304c17.7 0 32-14.3 32-32V153.3C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V192c0 53-43 96-96 96H256v70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V288H144c-53 0-96-43-96-96V153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48H336c-26.5 0-48 21.5-48 48V96H224V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V96H112V24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144v96V464c0 26.5 21.5 48 48 48H304h32 96H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H480V48zm96 320v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM240 416H208c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM560 256c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32zM256 176v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32zM256 304c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zM112 320H80c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16zm304-48v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h32zm16 112v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faMicrophoneLines = {\n prefix: 'fas',\n iconName: 'microphone-lines',\n icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96V256c0 53 43 96 96 96s96-43 96-96H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V192H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80V128H208c-8.8 0-16-7.2-16-16s7.2-16 16-16h80c0-53-43-96-96-96S96 43 96 96zM320 240v16c0 70.7-57.3 128-128 128s-128-57.3-128-128V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v24z\"]\n};\nvar faMicrophoneAlt = faMicrophoneLines;\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3H360c-13.3 0-24-10.7-24-24V152c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0v80c0 26.5 21.5 48 48 48h76.2l23.9 47.8C372.3 443.9 244.3 512 103.2 512H44.4C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H144V144z\"]\n};\nvar faColonSign = {\n prefix: 'fas',\n iconName: 'colon-sign',\n icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.2 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256v40c0 13.3-10.7 24-24 24s-24-10.7-24-24V256C0 114.6 114.6 0 256 0S512 114.6 512 256V400.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24H240c-26.5 0-48-21.5-48-48s21.5-48 48-48h32c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40V256c0-114.9-93.1-208-208-208zM144 208h16c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H144c-35.3 0-64-28.7-64-64V272c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64v48c0 35.3-28.7 64-64 64H352c-17.7 0-32-14.3-32-32V240c0-17.7 14.3-32 32-32h16z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68V384 252.6c-4 1-8 1.8-12.3 2.3l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V350.9L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0H141.6c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H480c12.9 0 24.8-3.8 34.9-10.3L365.5 384H160z\"]\n};\nvar faRoadCircleXmark = {\n prefix: 'fas',\n iconName: 'road-circle-xmark',\n icon: [640, 512, [], \"e566\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM472 200H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H472c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faMarsStrokeUp = {\n prefix: 'fas',\n iconName: 'mars-stroke-up',\n icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9H184v24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H184v24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8V168H104c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V96H96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352A96 96 0 1 0 64 352a96 96 0 1 0 192 0z\"]\n};\nvar faMarsStrokeV = faMarsStrokeUp;\nvar faChampagneGlasses = {\n prefix: 'fas',\n iconName: 'champagne-glasses',\n icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M155.6 17.3C163 3 179.9-3.6 195 1.9L320 47.5l125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6L556.1 413l41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41l-71.1 25.9L476.8 510c-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-34-130-95.2L320 188.8l-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6 25.2 24.4 19.1 41s-24.4 25.2-41 19.1L92.2 484.1 21.1 458.2c-16.6-6.1-25.2-24.4-19.1-41s24.4-25.2 41-19.1l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8L261.6 157l13.1-57.9L199.6 71.7zm240.9 0L365.4 99.1 378.5 157l89.2-32.5L440.5 71.7z\"]\n};\nvar faGlassCheers = faChampagneGlasses;\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHouseCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-circle-exclamation',\n icon: [640, 512, [], \"e50a\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faFileArrowUp = {\n prefix: 'fas',\n iconName: 'file-arrow-up',\n icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24V305.9l-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31V408z\"]\n};\nvar faFileUpload = faFileArrowUp;\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faWifi3 = faWifi;\nvar faWifiStrong = faWifi;\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3V256c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H96V77.3zM32 352v16c0 28.4 12.4 54 32 71.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V464H384v16c0 17.7 14.3 32 32 32s32-14.3 32-32V439.6c19.6-17.6 32-43.1 32-71.6V352H32z\"]\n};\nvar faBathtub = faBath;\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faUserPen = {\n prefix: 'fas',\n iconName: 'user-pen',\n icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H322.8c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1H178.3zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nvar faUserEdit = faUserPen;\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32v7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92v71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3V128c0-53-43-96-96-96s-96 43-96 96v32c0 17.7 14.3 32 32 32s32-14.3 32-32V128zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5V335.6c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24H64.3c-.2-2.8-.3-5.6-.3-8.5V368H24zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24H305.9c-6.7 16.3-14.2 32.3-22.3 48H616z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3L86.3 199.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L256 414.4l33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L414.4 256l33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3L233.4 256l-45.3 45.3L142.9 256zm67.9 67.9L256 278.6l45.3 45.3L256 369.1l-45.3-45.3zM278.6 256l45.3-45.3L369.1 256l-45.3 45.3L278.6 256zm22.6-67.9L256 233.4l-45.3-45.3L256 142.9l45.3 45.3z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z\"]\n};\nvar faAnchorLock = {\n prefix: 'fas',\n iconName: 'anchor-lock',\n icon: [640, 512, [], \"e4ad\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3V446.7c-5.2 .9-10.5 1.3-16 1.3H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faBuildingNgo = {\n prefix: 'fas',\n iconName: 'building-ngo',\n icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM168 64h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H184v64h16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v24c0 13.3-10.7 24-24 24H176c-13.3 0-24-10.7-24-24V80c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16s16-7.2 16-16V112c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48v32c0 26.5-21.5 48-48 48s-48-21.5-48-48V112zM61.3 71.1l34.7 52V80c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V80c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nvar faManatSign = {\n prefix: 'fas',\n iconName: 'manat-sign',\n icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32V98.7C69.2 113.9 0 192.9 0 288V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-59.6 40.8-109.8 96-124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V164c55.2 14.2 96 64.3 96 124V448c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-95.1-69.2-174.1-160-189.3V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H294.5l-64 96H400c17.7 0 32 14.3 32 32s-14.3 32-32 32H187.8l-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H153.5l64-96H48c-17.7 0-32-14.3-32-32s14.3-32 32-32H260.2l65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nvar faBorderTopLeft = {\n prefix: 'fas',\n iconName: 'border-top-left',\n icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBorderStyle = faBorderTopLeft;\nvar faMapLocationDot = {\n prefix: 'fas',\n iconName: 'map-location-dot',\n icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152V422.8c0 9.8-6 18.6-15.1 22.3L416 503V200.4zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6V451.8L32.9 502.7C17.1 509 0 497.4 0 480.4V209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77V504.3L192 449.4V255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faMapMarkedAlt = faMapLocationDot;\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9h26c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9H526c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9H64.5c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6h26c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nvar faSquarePollVertical = {\n prefix: 'fas',\n iconName: 'square-poll-vertical',\n icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 192c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V160zM320 288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32z\"]\n};\nvar faPoll = faSquarePollVertical;\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32V416c0 53 43 96 96 96H288c53 0 96-43 96-96h16c61.9 0 112-50.1 112-112s-50.1-112-112-112H352 32zm352 64h16c26.5 0 48 21.5 48 48s-21.5 48-48 48H384V256zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32h16c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16v32H320c-8.8 0-16 7.2-16 16s7.2 16 16 16h32v32c0 8.8 7.2 16 16 16s16-7.2 16-16V256h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H384V192zM80 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBatteryCar = faCarBattery;\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128H224 152c-22.1 0-40-17.9-40-40s17.9-40 40-40h2.2c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H438.4c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88h-2.2c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0H152C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40H288h-1.3l34.8-59.2C329.1 55.9 342.9 48 357.8 48H360c22.1 0 40 17.9 40 40zM32 288V464c0 26.5 21.5 48 48 48H224V288H32zM288 512H432c26.5 0 48-21.5 48-48V288H288V512z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 0a56 56 0 1 1 0 112A56 56 0 1 1 256 0zM134.1 143.8c3.3-13 15-23.8 30.2-23.8c12.3 0 22.6 7.2 27.7 17c12 23.2 36.2 39 64 39s52-15.8 64-39c5.1-9.8 15.4-17 27.7-17c15.3 0 27 10.8 30.2 23.8c7 27.8 32.2 48.3 62.1 48.3c10.8 0 21-2.7 29.8-7.4c8.4-4.4 18.9-4.5 27.6 .9c13 8 17.1 25 9.2 38L399.7 400H384 343.6 168.4 128 112.3L5.4 223.6c-7.9-13-3.8-30 9.2-38c8.7-5.3 19.2-5.3 27.6-.9c8.9 4.7 19 7.4 29.8 7.4c29.9 0 55.1-20.5 62.1-48.3zM256 224l0 0 0 0h0zM112 432H400l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H86.6C74.1 512 64 501.9 64 489.4c0-6 2.4-11.8 6.6-16L112 432z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1 .1 0 0 0 0 0s0 0-6.3 12.7h0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7h40.6c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7h0c-6.3-12.7-6.3-12.7-6.3-12.7l0 0 0 0 .1 0 .2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7v6.7V352v16c0 61.9-50.1 112-112 112H419.7c-59.4 0-108.5-46.4-111.8-105.8L306.6 352H269.4l-1.2 22.2C264.9 433.6 215.8 480 156.3 480H112C50.1 480 0 429.9 0 368V352 310.7 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4V368c0 26.5 21.5 48 48 48h44.3c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368V325.4c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3H464c26.5 0 48-21.5 48-48z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm64 64v64h64V96h64v64h64V96h64v64H320v64h64v64H320v64h64v64H320V352H256v64H192V352H128v64H64V352h64V288H64V224h64V160H64V96h64zm64 128h64V160H192v64zm0 64V224H128v64h64zm64 0H192v64h64V288zm0 0h64V224H256v64z\"]\n};\nvar faBuildingCircleCheck = {\n prefix: 'fas',\n iconName: 'building-circle-check',\n icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faPersonChalkboard = {\n prefix: 'fas',\n iconName: 'person-chalkboard',\n icon: [640, 512, [], \"e53d\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V192h56 64 16c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64H576V256H384V224H320v48c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48v80H243.1 177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMarsStrokeRight = {\n prefix: 'fas',\n iconName: 'mars-stroke-right',\n icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152H416V176c0-13.3 10.7-24 24-24s24 10.7 24 24v56h32V176c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V280H464v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H382.4z\"]\n};\nvar faMarsStrokeH = faMarsStrokeRight;\nvar faHandBackFist = {\n prefix: 'fas',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48V96v28.5V176c0 8.8-7.2 16-16 16s-16-7.2-16-16V149.3l-9 7.5C40.4 169 32 187 32 206V244c0 38 16.9 74 46.1 98.3L128 384v96c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V374.7c46.9-19 80-65 80-118.7V176 160 144c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nvar faHandRock = faHandBackFist;\nvar faSquareCaretUp = {\n prefix: 'fas',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4H120c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nvar faCaretSquareUp = faSquareCaretUp;\nvar faCloudShowersWater = {\n prefix: 'fas',\n iconName: 'cloud-showers-water',\n icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64H448c35.3 0 64 28.7 64 64s-28.7 64-64 64H128c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faBarChart = faChartBar;\nvar faHandsBubbles = {\n prefix: 'fas',\n iconName: 'hands-bubbles',\n icon: [576, 512, [\"hands-wash\"], \"e05e\", \"M416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM32 160l.1 72.6c.1 52.2 24 101 64 133.1c-.1-1.9-.1-3.8-.1-5.7v-8c0-71.8 37-138.6 97.9-176.7l60.2-37.6c8.6-5.4 17.9-8.4 27.3-9.4l45.9-79.5c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-78 135.1c-3.3 5.7-10.7 7.7-16.4 4.4s-7.7-10.7-4.4-16.4l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S214 5 207.4 16.5l-68 117.8 0 0 0 0-43.3 75L96 160c0-17.7-14.4-32-32-32s-32 14.4-32 32zM332.1 88.5L307.5 131c13.9 4.5 26.4 13.7 34.7 27c.9 1.5 1.7 2.9 2.5 4.4l28.9-50c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-26.8 46.4c-.6 6-2.1 11.8-4.3 17.4H352h13.3l0 0H397l23-39.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM315.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C159.3 234.7 128 291.2 128 352v8c0 8.9 .8 17.6 2.2 26.1c35.4 8.2 61.8 40 61.8 77.9c0 6.3-.7 12.5-2.1 18.4C215.1 501 246.3 512 280 512H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H364c-6.6 0-12-5.4-12-12s5.4-12 12-12H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H352l0 0 0 0H258.8L305 219.1c15-9.4 19.5-29.1 10.2-44.1z\"]\n};\nvar faHandsWash = faHandsBubbles;\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 96c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faEyeLowVision = {\n prefix: 'fas',\n iconName: 'eye-low-vision',\n icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223 149.5c48.6-44.3 123-50.8 179.3-11.7c60.8 42.4 78.9 123.2 44.2 186.9L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3L223 149.5zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nvar faLowVision = faEyeLowVision;\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88v29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384H259.2l46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384H352c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192V128v-8l80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32H523.9C507.7 12.5 483.3 0 456 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faSailboat = {\n prefix: 'fas',\n iconName: 'sailboat',\n icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6H272c-8.8 0-16-7.2-16-16V16zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5V336c0 8.8-7.2 16-16 16H80c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384H554.9c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512H133C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 64H208c-8.8 0-16 7.2-16 16V96H128V80c0-44.2 35.8-80 80-80H432c44.2 0 80 35.8 80 80V304c0 44.2-35.8 80-80 80H416V320h16c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64H320c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192zm64 32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faSquarePlus = {\n prefix: 'fas',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM200 344V280H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H248v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusSquare = faSquarePlus;\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48H64v64h64V128h96v64h64V128h96v64h64V128h16c26.5 0 48-21.5 48-48V13.4C512 6 506 0 498.6 0c-1.7 0-3.4 .3-5 1l-49 19.6C425.7 28.1 405.5 32 385.2 32H126.8c-20.4 0-40.5-3.9-59.4-11.4L18.4 1c-1.6-.6-3.3-1-5-1C6 0 0 6 0 13.4V80zM64 288V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288H384V480c0 17.7 14.3 32 32 32s32-14.3 32-32V288h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H480c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faBucket = {\n prefix: 'fas',\n iconName: 'bucket',\n icon: [448, 512, [], \"e4cf\", \"M96 152v8H48v-8C48 68.1 116.1 0 200 0h48c83.9 0 152 68.1 152 152v8H352v-8c0-57.4-46.6-104-104-104H200C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32h-5.1L388.5 469c-2.6 24.4-23.2 43-47.7 43H107.2c-24.6 0-45.2-18.5-47.7-43L37.1 256H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h96 32H424c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96V256c0 53 43 96 96 96s96-43 96-96V96c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 89.1 66.2 162.7 152 174.4V464H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h72 72c13.3 0 24-10.7 24-24s-10.7-24-24-24H216V430.4c85.8-11.7 152-85.3 152-174.4V216c0-13.3-10.7-24-24-24s-24 10.7-24 24v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V216z\"]\n};\nvar faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [128004], \"f6c8\", \"M96 224v32V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V327.8c9.9 6.6 20.6 12 32 16.1V368c0 8.8 7.2 16 16 16s16-7.2 16-16V351.1c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9V368c0 8.8 7.2 16 16 16s16-7.2 16-16V343.8c11.4-4 22.1-9.4 32-16.1V416c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V256l32 32v49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5V184c0-13.3-10.7-24-24-24s-24 10.7-24 24v14.4l-52.9-74.1C496 86.5 452.4 64 405.9 64H272 256 192 144C77.7 64 24 117.7 24 184v54C9.4 249.8 0 267.8 0 288v17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4V256 224 184c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160v64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6H361.4c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19v54.1l-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192H408c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nvar faFolderClosed = {\n prefix: 'fas',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 480H64c-35.3 0-64-28.7-64-64V192H512V416c0 35.3-28.7 64-64 64zm64-320H0V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64z\"]\n};\nvar faHouseTsunami = {\n prefix: 'fas',\n iconName: 'house-tsunami',\n icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1l0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6V265c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nvar faSquareNfi = {\n prefix: 'fas',\n iconName: 'square-nfi',\n icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm75.7 64.6C68.8 162.5 64 168.8 64 176V336c0 8.8 7.2 16 16 16s16-7.2 16-16V233.8l66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4V176c0-8.8-7.2-16-16-16s-16 7.2-16 16V278.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176v64 96c0 8.8 7.2 16 16 16s16-7.2 16-16V256h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H256V192h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V336c0 8.8 7.2 16 16 16s16-7.2 16-16V176z\"]\n};\nvar faArrowUpFromGroundWater = {\n prefix: 'fas',\n iconName: 'arrow-up-from-ground-water',\n icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32V109.3l25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192H48c-26.5 0-48 21.5-48 48V425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3V192zm384 48c0-26.5-21.5-48-48-48H384V416.5h0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9V240z\"]\n};\nvar faMartiniGlass = {\n prefix: 'fas',\n iconName: 'martini-glass',\n icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM173.3 128l-64-64H402.7l-64 64H173.3z\"]\n};\nvar faGlassMartiniAlt = faMartiniGlass;\nvar faRotateLeft = {\n prefix: 'fas',\n iconName: 'rotate-left',\n icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z\"]\n};\nvar faRotateBack = faRotateLeft;\nvar faRotateBackward = faRotateLeft;\nvar faUndoAlt = faRotateLeft;\nvar faTableColumns = {\n prefix: 'fas',\n iconName: 'table-columns',\n icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 64V416H224V160H64zm384 0H288V416H448V160z\"]\n};\nvar faColumns = faTableColumns;\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [576, 512, [], \"e063\", \"M32 224.2c0-22.2 3.2-43.6 9.2-63.9L262.2 321c-4 9.5-6.2 20-6.2 31V512H128c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C48.6 322.4 32 274.1 32 224.2zm248.3 70.4L53 129.3C88.7 53 166.2 0 256 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c5.4 6.7 8.6 14.8 9.4 23.2H336c-21.7 0-41.3 8.6-55.7 22.6zM336 304H534l0 0h10l-19.7 64H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H514.5l-9.8 32H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H494.8l-.9 2.8c-8.3 26.9-33.1 45.2-61.2 45.2H288V352c0-14 6-26.7 15.6-35.4c0 0 0 0 0 0c8.5-7.8 19.9-12.6 32.4-12.6zm48-80a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM16 128c-8.8 0-16 7.2-16 16V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V128H16zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V144c0-8.8-7.2-16-16-16H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8H376c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [\"dolly-box\"], \"f472\", \"M0 32C0 14.3 14.3 0 32 0h72.9c27.5 0 52 17.6 60.7 43.8L257.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L352 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L104.9 64H32C14.3 64 0 49.7 0 32zM244.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L311 79.4l19.8 60.9 60.9-19.8L371.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L334.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L244.8 134.5z\"]\n};\nvar faDollyBox = faDolly;\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [128684], \"f48d\", \"M448 32V43c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2v11c0 17.7-14.3 32-32 32s-32-14.3-32-32V245c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43V32c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256V245c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2V32c0-17.7 14.3-32 32-32s32 14.3 32 32V43c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1v11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64H416c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H64c-35.3 0-64-28.7-64-64V416zm224 0v32H384V416H224zm288-64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384c0-17.7 14.3-32 32-32z\"]\n};\nvar faMinimize = {\n prefix: 'fas',\n iconName: 'minimize',\n icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224H312c-13.3 0-24-10.7-24-24V56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2V312c0-13.3 10.7-24 24-24H456zm-256 0c13.3 0 24 10.7 24 24V456c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8H200zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2V200c0 13.3-10.7 24-24 24H56z\"]\n};\nvar faCompressArrowsAlt = faMinimize;\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322H55.9L96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24H152zM32 448H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160H256l-64-64V64H298.9zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0H176c-26.5 0-48 21.5-48 48V160H96c-17.7 0-32 14.3-32 32V298.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112H368c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48H512v50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7V320 235.2L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40V288H448V256.7c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48H112c-26.5 0-48-21.5-48-48s21.5-48 48-48H368zM144 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm216 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-56-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM200 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faAnglesRight = {\n prefix: 'fas',\n iconName: 'angles-right',\n icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faAngleDoubleRight = faAnglesRight;\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V417.2l-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nvar faCirclePlay = {\n prefix: 'fas',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9V344c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nvar faPlayCircle = faCirclePlay;\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M614.3 247c16.3-25 25.7-54.9 25.7-87C640 71.6 568.4 0 480 0c-32.1 0-61.9 9.4-87 25.7c-7.9 5.2-8.5 16.2-1.8 22.9L591.4 248.8c6.7 6.7 17.8 6.2 22.9-1.8zM567 294.3c7.9-5.2 8.5-16.2 1.8-22.9L368.6 71.2c-6.7-6.7-17.8-6.2-22.9 1.8c-16.3 25-25.7 54.9-25.7 87c0 88.4 71.6 160 160 160c32.1 0 61.9-9.4 87-25.7zM301.5 368H18.5c-9.5 0-16.9 8.2-15 17.5C18.9 457.8 83.1 512 160 512s141.1-54.2 156.5-126.5c2-9.3-5.5-17.5-15-17.5zm0-32c9.5 0 16.9-8.2 15-17.5C301.1 246.2 236.9 192 160 192S18.9 246.2 3.5 318.5c-2 9.3 5.5 17.5 15 17.5H301.5z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M0 224V416c0 17.7 14.3 32 32 32H96V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64V336c0-8.8 7.2-16 16-16s16 7.2 16 16V448h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H448V160c0-17.7-14.3-32-32-32H384V96c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32v32H96c-17.7 0-32 14.3-32 32v32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8v16c0 2.7 0 5.3 .1 8H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H60.3C89.9 419.9 170 480 264 480h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264c-57.9 0-108.2-32.4-133.9-80H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112.2c-.1-2.6-.2-5.3-.2-8V248c0-2.7 .1-5.4 .2-8H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H130.1c25.7-47.6 76-80 133.9-80h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H264C170 32 89.9 92.1 60.3 176H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48.1z\"]\n};\nvar faEur = faEuroSign;\nvar faEuro = faEuroSign;\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [129681], \"f6c0\", \"M248 48V256h48V58.7c23.9 13.8 40 39.7 40 69.3V256h48V128C384 57.3 326.7 0 256 0H192C121.3 0 64 57.3 64 128V256h48V128c0-29.6 16.1-55.5 40-69.3V256h48V48h48zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32V384H352v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288H48z\"]\n};\nvar faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faCheckCircle = faCircleCheck;\nvar faCircleStop = {\n prefix: 'fas',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160H320c17.7 0 32 14.3 32 32V320c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faStopCircle = faCircleStop;\nvar faCompassDrafting = {\n prefix: 'fas',\n iconName: 'compass-drafting',\n icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192h0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496V440.6c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1V496c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDraftingCompass = faCompassDrafting;\nvar faPlateWheat = {\n prefix: 'fas',\n iconName: 'plate-wheat',\n icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zM56 64h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48zM400 32c44.2 0 80 35.8 80 80v16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80V48c0-8.8 7.2-16 16-16zm80 160v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80zm-96 16v16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16V256c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320H484.2c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446v2c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32v-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nvar faPersonShelter = {\n prefix: 'fas',\n iconName: 'person-shelter',\n icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160V480c0 17.7 14.3 32 32 32s32-14.3 32-32V178.6L256 68.9 448 178.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 280V400h16v88c0 13.3 10.7 24 24 24s24-10.7 24-24V313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H246.2c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5V488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [384, 512, [9906], \"f22c\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1V480c0 17.7 14.3 32 32 32s32-14.3 32-32V349.1z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zm96 320h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 64h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nvar faFaceLaughBeam = {\n prefix: 'fas',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM217.6 212.8l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faLaughBeam = faFaceLaughBeam;\nvar faHelicopterSymbol = {\n prefix: 'fas',\n iconName: 'helicopter-symbol',\n icon: [512, 512, [], \"e502\", \"M445.3 224H510C495.6 108.2 403.8 16.4 288 2V66.7C368.4 80.1 431.9 143.6 445.3 224zM510 288H445.3C431.9 368.4 368.4 431.9 288 445.4V510c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510V445.4C143.6 431.9 80.1 368.4 66.7 288H2zm0-64H66.7C80.1 143.6 143.6 80.1 224 66.7V2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 17.7 14.3 32 32 32s32-14.3 32-32V288h96v64c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H208V160z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3v50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6V235.5c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faCircleChevronUp = {\n prefix: 'fas',\n iconName: 'circle-chevron-up',\n icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nvar faChevronCircleUp = faCircleChevronUp;\nvar faLariSign = {\n prefix: 'fas',\n iconName: 'lari-sign',\n icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32V96.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7V64c0-17.7 14.3-32 32-32s32 14.3 32 32v49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3V256c0 17.7-14.3 32-32 32s-32-14.3-32-32V161c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1v95c0 17.7-14.3 32-32 32s-32-14.3-32-32V188.1C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H192 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48.9C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-58.9-66.3c-9.1-10.2-22.2-16.1-35.9-16.1H235.1c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2h41.8c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2H52.2C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nvar faPersonWalkingDashedLineArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-dashed-line-arrow-right',\n icon: [640, 512, [], \"e553\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24V72c0 13.3 10.7 24 24 24s24-10.7 24-24V24c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V152zM392 320c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24s24-10.7 24-24V344c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24v48c0 13.3 10.7 24 24 24s24-10.7 24-24V440z\"]\n};\nvar faSterlingSign = {\n prefix: 'fas',\n iconName: 'sterling-sign',\n icon: [320, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v44.5c0 17.4-4.7 34.5-13.7 49.4L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1C104.1 390 112 361.5 112 332.5V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"]\n};\nvar faGbp = faSterlingSign;\nvar faPoundSign = faSterlingSign;\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24V37.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168H360c13.3 0 24 10.7 24 24s-10.7 24-24 24H346.5c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5V360c0 13.3-10.7 24-24 24s-24-10.7-24-24V346.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H37.5c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5V24c0-13.3 10.7-24 24-24zm48 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48-64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faSquarePersonConfined = {\n prefix: 'fas',\n iconName: 'square-person-confined',\n icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56V350.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7V248z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256A128 128 0 1 1 224 0a128 128 0 1 1 0 256zM209.1 359.2l-18.6-31c-6.4-10.7 1.3-24.2 13.7-24.2H224h19.7c12.4 0 20.1 13.6 13.7 24.2l-18.6 31 33.4 123.9 36-146.9c2-8.1 9.8-13.4 17.9-11.3c70.1 17.6 121.9 81 121.9 156.4c0 17-13.8 30.7-30.7 30.7H285.5c-2.1 0-4-.4-5.8-1.1l.3 1.1H168l.3-1.1c-1.8 .7-3.8 1.1-5.8 1.1H30.7C13.8 512 0 498.2 0 481.3c0-75.5 51.9-138.9 121.9-156.4c8.1-2 15.9 3.3 17.9 11.3l36 146.9 33.4-123.9z\"]\n};\nvar faArrowDownLong = {\n prefix: 'fas',\n iconName: 'arrow-down-long',\n icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"]\n};\nvar faLongArrowDown = faArrowDownLong;\nvar faTentArrowDownToLine = {\n prefix: 'fas',\n iconName: 'tent-arrow-down-to-line',\n icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H159.6l.7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448h76.8L384 320V448z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.3-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2V288h32c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176H352V64z\"]\n};\nvar faMailReplyAll = faReplyAll;\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [129523], \"f0f2\", \"M176 56V96H336V56c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zM128 96V56c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56V96v32V480H128V128 96zM64 96H96V480H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64zM448 480H416V96h32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64z\"]\n};\nvar faPersonSkating = {\n prefix: 'fas',\n iconName: 'person-skating',\n icon: [448, 512, [\"skating\"], \"f7c5\", \"M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32H319.4c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V349.3l-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17H160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h88.8c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nvar faSkating = faPersonSkating;\nvar faFilterCircleDollar = {\n prefix: 'fas',\n iconName: 'filter-circle-dollar',\n icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7V288c0-8.8-7.2-16-16-16s-16 7.2-16 16v9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6l0 0 0 0c7 2.3 15.1 4.8 23.7 6.6v11.4c0 8.8 7.2 16 16 16s16-7.2 16-16V438.7c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5l0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nvar faFunnelDollar = faFilterCircleDollar;\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96v96H333.2c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24H64V128H192c9.9 0 19.7-2.3 28.6-6.8zM0 128V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H271.1c-9.9 0-19.7 2.3-28.6 6.8L192 64H160V48c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z\"]\n};\nvar faCircleArrowDown = {\n prefix: 'fas',\n iconName: 'circle-arrow-down',\n icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 281c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 136c0-13.3 10.7-24 24-24s24 10.7 24 24l0 182.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 393c-9.4 9.4-24.6 9.4-33.9 0L127 281z\"]\n};\nvar faArrowCircleDown = faCircleArrowDown;\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64H352V128c0 17.7 14.3 32 32 32H512V448c0 35.3-28.7 64-64 64H192c-35.3 0-64-28.7-64-64V336H302.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H128V64zm0 224v48H24c-13.3 0-24-10.7-24-24s10.7-24 24-24H128zM512 128H384V0L512 128z\"]\n};\nvar faArrowRightToFile = faFileImport;\nvar faSquareArrowUpRight = {\n prefix: 'fas',\n iconName: 'square-arrow-up-right',\n icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H384zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24h94.1L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135V328c0 13.3 10.7 24 24 24s24-10.7 24-24V168c0-13.3-10.7-24-24-24H160z\"]\n};\nvar faExternalLinkSquare = faSquareArrowUpRight;\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6v167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5v-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128h2.2z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [576, 512, [128220], \"f70e\", \"M0 80v48c0 17.7 14.3 32 32 32H48 96V80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48V384c0 35.3 28.7 64 64 64s64-28.7 64-64v-5.3c0-32.4 26.3-58.7 58.7-58.7H480V128c0-53-43-96-96-96H112zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16H314.7c-14.7 0-26.7 11.9-26.7 26.7V384c0 53-43 96-96 96H368h96z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192h9.9c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480H288 267.9C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192H30c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nvar faLocationPinLock = {\n prefix: 'fas',\n iconName: 'location-pin-lock',\n icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3V352c0-23.7 12.9-44.4 32-55.4V272c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c17.7 0 32 14.3 32 32v48H368V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112V400c0 26.5 21.5 48 48 48H80c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zm192 0c-26.5 0-48 21.5-48 48V400c0 26.5 21.5 48 48 48h32c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H240z\"]\n};\nvar faHillAvalanche = {\n prefix: 'fas',\n iconName: 'hill-avalanche',\n icon: [576, 512, [], \"e507\", \"M439.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C401.2 261.3 416 236.4 416 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C216.3 46.6 197.9 32 176 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L439.7 401.9zM480 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87z\"]\n};\nvar faTemperatureEmpty = {\n prefix: 'fas',\n iconName: 'temperature-empty',\n icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM160 0C98.1 0 48 50.2 48 112V276.5c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faTemperature0 = faTemperatureEmpty;\nvar faThermometer0 = faTemperatureEmpty;\nvar faThermometerEmpty = faTemperatureEmpty;\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104v8c0 8.8-7.2 16-16 16s-16-7.2-16-16v-8c0-75.1 60.9-136 136-136h8c8.8 0 16 7.2 16 16s-7.2 16-16 16h-8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24h88c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288H208v72c0 13.3-10.7 24-24 24s-24-10.7-24-24V264 152zm48 88h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H208v64z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm80 256h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faContactCard = faAddressCard;\nvar faVcard = faAddressCard;\nvar faScaleUnbalancedFlip = {\n prefix: 'fas',\n iconName: 'scale-unbalanced-flip',\n icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2V480c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.4 288L128 163.8 55.6 288H200.4zM128 384C65.1 384 12.8 350 2 305.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C243.2 350 190.9 384 128 384zm382.8-92.2L438.4 416H583.3L510.8 291.8zm126 141.3C626 478 573.7 512 510.8 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"]\n};\nvar faBalanceScaleRight = faScaleUnbalancedFlip;\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z\"]\n};\nvar faDiamondTurnRight = {\n prefix: 'fas',\n iconName: 'diamond-turn-right',\n icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8v56H224c-35.3 0-64 28.7-64 64v48c0 13.3 10.7 24 24 24s24-10.7 24-24V280c0-8.8 7.2-16 16-16h64v56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nvar faDirections = faDiamondTurnRight;\nvar faBurst = {\n prefix: 'fas',\n iconName: 'burst',\n icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nvar faHouseLaptop = {\n prefix: 'fas',\n iconName: 'house-laptop',\n icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5H336c-19.1 0-36.3 8.4-48 21.7V208c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64V416H112c-26.5 0-48-21.5-48-48V256H32c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304V448H544V304H352zm-48-16c0-17.7 14.3-32 32-32H560c17.7 0 32 14.3 32 32V448h32c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48H544 352 304c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16h32V288z\"]\n};\nvar faLaptopHouse = faHouseLaptop;\nvar faFaceTired = {\n prefix: 'fas',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3h-3.2c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faTired = faFaceTired;\nvar faMoneyBills = {\n prefix: 'fas',\n iconName: 'money-bills',\n icon: [640, 512, [], \"e1f3\", \"M96 96V320c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64H160V256zM224 96c0 35.3-28.7 64-64 64V96h64zM576 256v64H512c0-35.3 28.7-64 64-64zM512 96h64v64c-35.3 0-64-28.7-64-64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V360c0 66.3 53.7 120 120 120H520c13.3 0 24-10.7 24-24s-10.7-24-24-24H120c-39.8 0-72-32.2-72-72V120z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144H299.3c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32H496c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368H280c-13.3 0-24 10.7-24 24s10.7 24 24 24H616c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96H440c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H200c13.3 0 24-10.7 24-24z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nvar faFontAwesome = {\n prefix: 'fas',\n iconName: 'font-awesome',\n icon: [448, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M448 48V384c-63.1 22.5-82.3 32-119.5 32c-62.8 0-86.6-32-149.3-32c-20.6 0-36.6 3.6-51.2 8.2v-64c14.6-4.6 30.6-8.2 51.2-8.2c62.7 0 86.5 32 149.3 32c20.4 0 35.6-3 55.5-9.3v-208c-19.9 6.3-35.1 9.3-55.5 9.3c-62.8 0-86.6-32-149.3-32c-50.8 0-74.9 20.6-115.2 28.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32s32 14.3 32 32V76.7c40.3-8 64.4-28.7 115.2-28.7c62.7 0 86.5 32 149.3 32c37.1 0 56.4-9.5 119.5-32z\"]\n};\nvar faFontAwesomeFlag = faFontAwesome;\nvar faFontAwesomeLogoFull = faFontAwesome;\nvar faCloudArrowUp = {\n prefix: 'fas',\n iconName: 'cloud-arrow-up',\n icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V392c0 13.3 10.7 24 24 24s24-10.7 24-24V257.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nvar faCloudUpload = faCloudArrowUp;\nvar faCloudUploadAlt = faCloudArrowUp;\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3H344c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faArrowsTurnRight = {\n prefix: 'fas',\n iconName: 'arrows-turn-right',\n icon: [448, 512, [], \"e4c0\", \"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 160H128c-35.3 0-64 28.7-64 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V224C0 153.3 57.3 96 128 96H338.7L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416H96c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96H242.7l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V270.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6V128 54.3 48c0-26.5-21.5-48-48-48h-4.5c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0H112C85.5 0 64 21.5 64 48v6.3V128v17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5V464c0 26.5 21.5 48 48 48H176c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464V295.8c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nvar faFerry = {\n prefix: 'fas',\n iconName: 'ferry',\n icon: [576, 512, [], \"e4ea\", \"M224 0H352c17.7 0 32 14.3 32 32h75.1c20.6 0 31.6 24.3 18.1 39.8L456 96H120L98.8 71.8C85.3 56.3 96.3 32 116.9 32H192c0-17.7 14.3-32 32-32zM96 128H480c17.7 0 32 14.3 32 32V283.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9H375.6c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9H183.9c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5V160c0-17.7 14.3-32 32-32zm32 64v96H448V192H128zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToPeople = {\n prefix: 'fas',\n iconName: 'arrows-down-to-people',\n icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24V142.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24zM360 200a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM184 296a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm312 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5V400c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V345.5l26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3H486.2c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3H310.2c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6H134.2c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5V480c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32V441.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V142.1l-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 32c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 46.3 364 0 448 0h32c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64H64c123.7 0 224 100.3 224 224v32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320C100.3 320 0 219.7 0 96z\"]\n};\nvar faSprout = faSeedling;\nvar faLeftRight = {\n prefix: 'fas',\n iconName: 'left-right',\n icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nvar faArrowsAltH = faLeftRight;\nvar faBoxesPacking = {\n prefix: 'fas',\n iconName: 'boxes-packing',\n icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48H592c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H381.3c1.8-5 2.7-10.4 2.7-16V253.3c18.6-6.6 32-24.4 32-45.3V176c0-26.5-21.5-48-48-48H256V48zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6V432c0 8.8 7.2 16 16 16s16-7.2 16-16V310.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H16c-8.8 0-16-7.2-16-16V176zm352 80V480c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V256H352zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H144z\"]\n};\nvar faCircleArrowLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-left',\n icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM231 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L376 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-182.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L119 273c-9.4-9.4-9.4-24.6 0-33.9L231 127z\"]\n};\nvar faArrowCircleLeft = faCircleArrowLeft;\nvar faGroupArrowsRotate = {\n prefix: 'fas',\n iconName: 'group-arrows-rotate',\n icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4V163.2c0-5.7-4.7-10.4-10.4-10.4H169.9c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4v60.5c0 5.7 4.7 10.4 10.4 10.4h60.5c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nvar faBowlFood = {\n prefix: 'fas',\n iconName: 'bowl-food',\n icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32H8.6C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23v5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8V151C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nvar faArrowDownWideShort = {\n prefix: 'fas',\n iconName: 'arrow-down-wide-short',\n icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320z\"]\n};\nvar faSortAmountAsc = faArrowDownWideShort;\nvar faSortAmountDown = faArrowDownWideShort;\nvar faCloudBolt = {\n prefix: 'fas',\n iconName: 'cloud-bolt',\n icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96h47.2L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320H352h64c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7h70.1L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7H281.9l52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nvar faThunderstorm = faCloudBolt;\nvar faTextSlash = {\n prefix: 'fas',\n iconName: 'text-slash',\n icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32H376.1h-.3H204.5c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1L272.9 311 243.3 416z\"]\n};\nvar faRemoveFormat = faTextSlash;\nvar faFaceSmileWink = {\n prefix: 'fas',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faSmileWink = faFaceSmileWink;\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM136 240h68c42 0 76 34 76 76s-34 76-76 76H160v32c0 13.3-10.7 24-24 24s-24-10.7-24-24V368 264c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28H160v56h44z\"]\n};\nvar faArrowsLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-left-right',\n icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nvar faArrowsH = faArrowsLeftRight;\nvar faHouseLock = {\n prefix: 'fas',\n iconName: 'house-lock',\n icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32H392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272v24.6c-19.1 11.1-32 31.7-32 55.4V480zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faCloudArrowDown = {\n prefix: 'fas',\n iconName: 'cloud-arrow-down',\n icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128H144zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V318.1l-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nvar faCloudDownload = faCloudArrowDown;\nvar faCloudDownloadAlt = faCloudArrowDown;\nvar faChildren = {\n prefix: 'fas',\n iconName: 'children',\n icon: [640, 512, [], \"e4e1\", \"M160 0a64 64 0 1 1 0 128A64 64 0 1 1 160 0zM88 480V400H70.2c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1H232v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V400H152v80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 0a64 64 0 1 1 0 128A64 64 0 1 1 480 0zm-8 384v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V300.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9h12.3c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H472z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96V384H96V96l384 0V384h64V96c0-35.3-28.7-64-64-64H96zM224 384v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H416V384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32z\"]\n};\nvar faBlackboard = faChalkboard;\nvar faUserLargeSlash = {\n prefix: 'fas',\n iconName: 'user-large-slash',\n icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512H528L284.3 320h-59C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7H545.3l.3 0z\"]\n};\nvar faUserAltSlash = faUserLargeSlash;\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1v47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5V208.1zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V208.1c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nvar faHandshakeSimpleSlash = {\n prefix: 'fas',\n iconName: 'handshake-simple-slash',\n icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM0 176V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6L41.2 128.5C17.9 131.8 0 151.8 0 176z\"]\n};\nvar faHandshakeAltSlash = faHandshakeSimpleSlash;\nvar faMattressPillow = {\n prefix: 'fas',\n iconName: 'mattress-pillow',\n icon: [640, 512, [], \"e525\", \"M256 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H256V64zm32 384H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H288V448zM64 160c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faGuaraniSign = {\n prefix: 'fas',\n iconName: 'guarani-sign',\n icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32V66.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32H224V132c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7V32c0-17.7-14.3-32-32-32zM160 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380V288h92c-11.6 45-47 80.4-92 92z\"]\n};\nvar faArrowsRotate = {\n prefix: 'fas',\n iconName: 'arrows-rotate',\n icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H463.5c0 0 0 0 0 0h.4c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1V448c0 17.7 14.3 32 32 32s32-14.3 32-32V396.9l17.6 17.5 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352H176c17.7 0 32-14.3 32-32s-14.3-32-32-32H48.4c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nvar faRefresh = faArrowsRotate;\nvar faSync = faArrowsRotate;\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32v96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104H224v34.8c37.8 18 64 56.5 64 101.2V384H64V240c0-44.7 26.2-83.2 64-101.2V110c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4V32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V56h65c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416v32c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64V416H288zM176 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faCruzeiroSign = {\n prefix: 'fas',\n iconName: 'cruzeiro-sign',\n icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416V320v-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32v55.3V320v82.7C135.5 378 96 321.6 96 256z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416z\"]\n};\nvar faShieldHalved = {\n prefix: 'fas',\n iconName: 'shield-halved',\n icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8V444.8C394 378 431.1 230.1 432 141.4L256 66.8l0 0z\"]\n};\nvar faShieldAlt = faShieldHalved;\nvar faBookAtlas = {\n prefix: 'fas',\n iconName: 'book-atlas',\n icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9h63c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9h31.1c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9H303.5c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM145.3 208h31.1c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32H145.3c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9h-63c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nvar faAtlas = faBookAtlas;\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H43.5c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H468.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5V32zM176 224a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faEnvelopeCircleCheck = {\n prefix: 'fas',\n iconName: 'envelope-circle-check',\n icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176V384c0 35.3 28.7 64 64 64H360.2C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nvar faArrowsToDot = {\n prefix: 'fas',\n iconName: 'arrows-to-dot',\n icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32V64h32c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8h32V32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H288v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H192c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224H64V192c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6v32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H448v32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32H96h64V352c0-53 43-96 96-96s96 43 96 96V480h64 64c17.7 0 32-14.3 32-32s-14.3-32-32-32V128H32V416z\"]\n};\nvar faHeartCircleCheck = {\n prefix: 'fas',\n iconName: 'heart-circle-check',\n icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faHouseChimneyCrack = {\n prefix: 'fas',\n iconName: 'house-chimney-crack',\n icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H326.4L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24z\"]\n};\nvar faHouseDamage = faHouseChimneyCrack;\nvar faFileZipper = {\n prefix: 'fas',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM96 48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8h14.8c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faFileArchive = faFileZipper;\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nvar faMartiniGlassEmpty = {\n prefix: 'fas',\n iconName: 'martini-glass-empty',\n icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3V448H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h96 96c17.7 0 32-14.3 32-32s-14.3-32-32-32H288V269.3L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0H32zM256 210.7L109.3 64H402.7L256 210.7z\"]\n};\nvar faGlassMartini = faMartiniGlassEmpty;\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32H448c70.7 0 128 57.3 128 128v33.6c-36.5 7.4-64 39.7-64 78.4v48H128V272c0-38.7-27.5-71-64-78.4V160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48V448c0 17.7-14.3 32-32 32H576c-17.7 0-32-14.3-32-32H96c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3v48 32h32H512h32V320 272z\"]\n};\nvar faCediSign = {\n prefix: 'fas',\n iconName: 'cedi-sign',\n icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V66.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V445.3c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6V132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8V32zM192 132V380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24V48H264c-13.3 0-24 10.7-24 24s10.7 24 24 24h32v46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V251.2c0-16.9-8.8-32.5-23.3-41.2L344 142.4V96h32c13.3 0 24-10.7 24-24s-10.7-24-24-24H344V24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9l0 0 0 0 .2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2 0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20V86c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V280c0 11 9 20 20 20s20-9 20-20V266.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V72z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8H480l32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17V320H192l-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3h-2C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352h96v64 64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V416H288v64c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V416 352h96H448zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nvar faZ = {\n prefix: 'fas',\n iconName: 'z',\n icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32H352c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96H32C14.3 96 0 81.7 0 64z\"]\n};\nvar faPersonSkiing = {\n prefix: 'fas',\n iconName: 'person-skiing',\n icon: [512, 512, [9975, \"skiing\"], \"f7c9\", \"M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L232.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L289.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L151.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nvar faSkiing = faPersonSkiing;\nvar faRoadLock = {\n prefix: 'fas',\n iconName: 'road-lock',\n icon: [640, 512, [], \"e567\", \"M288 32H213.2c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480H288V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64h32V352c0-23.7 12.9-44.4 32-55.4V272c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32H352V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faA = {\n prefix: 'fas',\n iconName: 'a',\n icon: [384, 512, [97], \"41\", \"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384H290.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320H120l72-172.8L264 320z\"]\n};\nvar faTemperatureArrowDown = {\n prefix: 'fas',\n iconName: 'temperature-arrow-down',\n icon: [576, 512, [\"temperature-down\"], \"e03f\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V272c0-8.8-7.2-16-16-16s-16 7.2-16 16v50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64H480V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352H384c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nvar faTemperatureDown = faTemperatureArrowDown;\nvar faFeatherPointed = {\n prefix: 'fas',\n iconName: 'feather-pointed',\n icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nvar faFeatherAlt = faFeatherPointed;\nvar faP = {\n prefix: 'fas',\n iconName: 'p',\n icon: [320, 512, [112], \"50\", \"M0 96C0 60.7 28.7 32 64 32h96c88.4 0 160 71.6 160 160s-71.6 160-160 160H64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V320 96zM64 288h96c53 0 96-43 96-96s-43-96-96-96H64V288z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32V62.1l15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49v70.3l61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7v70.3l49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V449.9l-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49V311.7l-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3V129.9L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H80c-44.2 0-80-35.8-80-80V128c0-17.7 14.3-32 32-32s32 14.3 32 32V400c0 8.8 7.2 16 16 16s16-7.2 16-16V96zm64 24v80c0 13.3 10.7 24 24 24H296c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24H184c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H384c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16s-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faRectangleAd = {\n prefix: 'fas',\n iconName: 'rectangle-ad',\n icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328H162.8l-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280h42.3L208 237.7zM392 256a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24-43.9V184c0-13.3 10.7-24 24-24s24 10.7 24 24v96 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nvar faAd = faRectangleAd;\nvar faCircleArrowRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-right',\n icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM281 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L136 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l182.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L393 239c9.4 9.4 9.4 24.6 0 33.9L281 385z\"]\n};\nvar faArrowCircleRight = faCircleArrowRight;\nvar faFilterCircleXmark = {\n prefix: 'fas',\n iconName: 'filter-circle-xmark',\n icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6V288.9L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faLocust = {\n prefix: 'fas',\n iconName: 'locust',\n icon: [576, 512, [], \"e520\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24h16c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4H431.8l-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L215.1 400h74.5l-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L348 400h80.4l38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L483.6 400H496c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3V280C576 143 465 32 328 32H312zm50.5 168l17.1 40H333l29.5-40zm-87.7 38.1l-1.4 1.9H225.1l32.7-41.5 16.9 39.5zM88.8 240C57.4 240 32 265.4 32 296.8c0 15.5 6.3 30 16.9 40.4L126.7 240H88.8zM496 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nvar faUnsorted = faSort;\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24H80c13.3 0 24 10.7 24 24V176h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H56V80H48C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432H120c13.3 0 24 10.7 24 24s-10.7 24-24 24H32c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faList12 = faListOl;\nvar faListNumeric = faListOl;\nvar faPersonDressBurst = {\n prefix: 'fas',\n iconName: 'person-dress-burst',\n icon: [640, 512, [], \"e544\", \"M528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM390.2 384H408v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h16v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h17.8c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3H474.2c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faMoneyCheckDollar = {\n prefix: 'fas',\n iconName: 'money-check-dollar',\n icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zM272 192H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H272c-8.8 0-16-7.2-16-16zM164 152v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V360c0 11-9 20-20 20s-20-9-20-20V345.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V152c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faMoneyCheckAlt = faMoneyCheckDollar;\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [448, 512, [], \"f5cb\", \"M368 80h32v32H368V80zM352 32c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32V160c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H352zM96 160c17.7 0 32-14.3 32-32H320c0 17.7 14.3 32 32 32V352c-17.7 0-32 14.3-32 32H128c0-17.7-14.3-32-32-32V160zM48 400H80v32H48V400zm320 32V400h32v32H368zM48 112V80H80v32H48z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64H256h48 16H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H320 304 256 64c-35.3 0-64-28.7-64-64V128zm320 0V384H576V128H320zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1h73.6l8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276H141l19-42.8zM448 164c11 0 20 9 20 20v4h44 16c11 0 20 9 20 20s-9 20-20 20h-2l-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45H448 376c-11 0-20-9-20-20s9-20 20-20h52v-4c0-11 9-20 20-20z\"]\n};\nvar faFaceKissWinkHeart = {\n prefix: 'fas',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9l0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1 0 0 0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7l0 0 0 0 0 0 0 0 0 0 .2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1 0 0 0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm194.8 57.6c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nvar faKissWinkHeart = faFaceKissWinkHeart;\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32H472c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9V448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6V320.9L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M80 160c0-35.3 28.7-64 64-64h32c35.3 0 64 28.7 64 64v3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74V320c0 17.7 14.3 32 32 32s32-14.3 32-32v-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7V160c0-70.7-57.3-128-128-128H144C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V428.7c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8h8.9c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nvar faUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'up-down-left-right',\n icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32v96H128V192c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V288h96v96H192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H288V288h96v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H288V128h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nvar faArrowsAlt = faUpDownLeftRight;\nvar faHouseChimneyUser = {\n prefix: 'fas',\n iconName: 'house-chimney-user',\n icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM288 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 400c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H192c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M148 76.6C148 34.3 182.3 0 224.6 0c20.3 0 39.8 8.1 54.1 22.4l9.3 9.3 9.3-9.3C311.6 8.1 331.1 0 351.4 0C393.7 0 428 34.3 428 76.6c0 20.3-8.1 39.8-22.4 54.1L302.1 234.1c-7.8 7.8-20.5 7.8-28.3 0L170.4 130.7C156.1 116.4 148 96.9 148 76.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8v0c0 12.8 10.4 23.2 23.2 23.2H336c26.5 0 48 21.5 48 48v56.8c0 12.8 10.4 23.2 23.2 23.2v0c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2v0c-12.8 0-23.2 10.4-23.2 23.2V464c0 26.5-21.5 48-48 48H279.2c-12.8 0-23.2-10.4-23.2-23.2v0c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8v0c0 12.8-10.4 23.2-23.2 23.2H48c-26.5 0-48-21.5-48-48V343.2C0 330.4 10.4 320 23.2 320v0c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256v0C10.4 256 0 245.6 0 232.8V176c0-26.5 21.5-48 48-48H168.8c12.8 0 23.2-10.4 23.2-23.2v0z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm48 160H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16zM376 160h80c13.3 0 24 10.7 24 24v48c0 13.3-10.7 24-24 24H376c-13.3 0-24-10.7-24-24V184c0-13.3 10.7-24 24-24z\"]\n};\nvar faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [640, 512, [\"star-half-alt\"], \"f5c0\", \"M320 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L320.1 86.9l-.1 .3V376.4zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L320.1 439.8 191.8 508.3C181 514 167.9 513.1 158 506s-14.9-19.3-12.9-31.3L169.8 329 65.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L227 150.3 291.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L470.5 329l24.6 145.7z\"]\n};\nvar faStarHalfAlt = faStarHalfStroke;\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faWhiskeyGlass = {\n prefix: 'fas',\n iconName: 'whiskey-glass',\n icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5h253c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32H32zM87.7 224L69 96H443L424.3 224H87.7z\"]\n};\nvar faGlassWhiskey = faWhiskeyGlass;\nvar faBuildingCircleExclamation = {\n prefix: 'fas',\n iconName: 'building-circle-exclamation',\n icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faMagnifyingGlassChart = {\n prefix: 'fas',\n iconName: 'magnifying-glass-chart',\n icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8v64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96V280c0 13.3 10.7 24 24 24s24-10.7 24-24V120c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64v96c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faArrowUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-right-from-square',\n icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLink = faArrowUpRightFromSquare;\nvar faCubesStacked = {\n prefix: 'fas',\n iconName: 'cubes-stacked',\n icon: [448, 512, [], \"e4e6\", \"M192 64v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H224c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32H288zm64 160c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H352zM160 384v64c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V384c0-17.7-14.3-32-32-32H32z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H72.9l56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288h46L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H460.4l50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224H329L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224h-64L62.4 53.9zm78 234.1H167l-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1H249zm96 64h26.6l-15.2 45.6L345 288z\"]\n};\nvar faKrw = faWonSign;\nvar faWon = faWonSign;\nvar faVirusCovid = {\n prefix: 'fas',\n iconName: 'virus-covid',\n icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24s-10.7 24-24 24H280V81.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3H464V216c0-13.3 10.7-24 24-24s24 10.7 24 24v80c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H430.4c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1V464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V430.4c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280H48v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V216c0-13.3 10.7-24 24-24s24 10.7 24 24v16H81.6c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1V48H216c-13.3 0-24-10.7-24-24zm48 200a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm64 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faAustralSign = {\n prefix: 'fas',\n iconName: 'austral-sign',\n icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96L82.7 320H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H56L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384H322.7l31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384h24c17.7 0 32-14.3 32-32s-14.3-32-32-32H365.3L352 288h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H325.3L253.5 51.7zM256 224H192l32-76.8L256 224zm-90.7 64H282.7L296 320H152l13.3-32z\"]\n};\nvar faF = {\n prefix: 'fas',\n iconName: 'f',\n icon: [320, 512, [102], \"46\", \"M64 32C28.7 32 0 60.7 0 96V256 448c0 17.7 14.3 32 32 32s32-14.3 32-32V288H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H64z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5h88c8.8 0 16 7.2 16 16s-7.2 16-16 16H288 216s0 0 0 0c-16.6 0-32.7 1.9-48.2 5.4c-25.9 5.9-50 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440v16c0 13.3 10.7 24 24 24s24-10.7 24-24V440c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [128739], \"f018\", \"M256 32H181.2c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480H256V416c0-17.7 14.3-32 32-32s32 14.3 32 32v64H521.4c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32H320V96c0 17.7-14.3 32-32 32s-32-14.3-32-32V32zm64 192v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32V64c0 .1 0 .1 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288V432v48c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V432H416v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V432 288c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1c0-.1 0-.1 0-.2V32c0-17.7-14.3-32-32-32H192zM165.4 128H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 224H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCab = faTaxi;\nvar faPersonCirclePlus = {\n prefix: 'fas',\n iconName: 'person-circle-plus',\n icon: [576, 512, [], \"e541\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240V16.6c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16H304zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4V288L412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288H558.4z\"]\n};\nvar faPieChart = faChartPie;\nvar faBoltLightning = {\n prefix: 'fas',\n iconName: 'bolt-lightning',\n icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faSackXmark = {\n prefix: 'fas',\n iconName: 'sack-xmark',\n icon: [512, 512, [], \"e56a\", \"M192 96H320l47.4-71.1C374.5 14.2 366.9 0 354.1 0H157.9c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32H192c-3.8 2.5-8.1 5.3-13 8.4l0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96H416c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h8.2c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8H304c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nvar faFishFins = {\n prefix: 'fas',\n iconName: 'fish-fins',\n icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.7 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.7 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faBuildingFlag = {\n prefix: 'fas',\n iconName: 'building-flag',\n icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32V512h64V192H624c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H480c0-17.7-14.3-32-32-32z\"]\n};\nvar faFaceGrinBeam = {\n prefix: 'fas',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-170.5-84l0 0 0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0zm160 0l0 0-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2 0 0 0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8l0 0 0 0 0 0z\"]\n};\nvar faGrinBeam = faFaceGrinBeam;\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H328.6C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V232.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4V232.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4H119.4zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V352h64v40.6c9.7 5.6 17.8 13.7 23.4 23.4H520.6c5.6-9.7 13.7-17.8 23.4-23.4V279.4c-9.7-5.6-17.8-13.7-23.4-23.4h-46c-5.4-15.4-14.6-28.9-26.5-39.6V192h72.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H311.4z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32H352c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48H408c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72H72c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72h13.7C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64h16.2c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nvar faLocationPin = {\n prefix: 'fas',\n iconName: 'location-pin',\n icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nvar faMapMarker = faLocationPin;\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112v16 0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2V128 112C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8v46.5l-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8V400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400V262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2V182.8l273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1H48c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0H444.2zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faHelmetSafety = {\n prefix: 'fas',\n iconName: 'helmet-safety',\n icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32v2.3 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288v64H544l0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1V66.3 64c0-17.7-14.3-32-32-32H256zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6H16.6z\"]\n};\nvar faHardHat = faHelmetSafety;\nvar faHatHard = faHelmetSafety;\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320H48c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48s-21.5 48-48 48H48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faCircleRight = {\n prefix: 'fas',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 135.1l99.9 107.1c3.5 3.8 5.5 8.7 5.5 13.8s-2 10.1-5.5 13.8L294.6 376.9c-4.2 4.5-10.1 7.1-16.3 7.1C266 384 256 374 256 361.7l0-57.7-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-57.7c0-12.3 10-22.3 22.3-22.3c6.2 0 12.1 2.6 16.3 7.1z\"]\n};\nvar faArrowAltCircleRight = faCircleRight;\nvar faPlaneCircleCheck = {\n prefix: 'fas',\n iconName: 'plane-circle-check',\n icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faFaceRollingEyes = {\n prefix: 'fas',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 368H320c8.8 0 16 7.2 16 16s-7.2 16-16 16H192c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nvar faMehRollingEyes = faFaceRollingEyes;\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32H456.6C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4V392.6c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V119.4zM456.6 96H119.4c-5.6 9.7-13.7 17.8-23.4 23.4V392.6c9.7 5.6 17.8 13.7 23.4 23.4H456.6c5.6-9.7 13.7-17.8 23.4-23.4V119.4c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V160zM256 320h32c35.3 0 64-28.7 64-64V224h64c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H288c-17.7 0-32-14.3-32-32V320z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V400c0 44.2 35.8 80 80 80H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H80c-8.8 0-16-7.2-16-16V64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLineChart = faChartLine;\nvar faMaskVentilator = {\n prefix: 'fas',\n iconName: 'mask-ventilator',\n icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H159.1zm26-48H56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6V393.3c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8v76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H454.5C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48H584c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320V512h64V320c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nvar faSignsPost = {\n prefix: 'fas',\n iconName: 'signs-post',\n icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32H64C46.3 32 32 46.3 32 64v64c0 17.7 14.3 32 32 32H441.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32H288V192H224v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32V256zM288 480V384H224v96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faMapSigns = faSignsPost;\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32V96c0 17.7 14.3 32 32 32h80v32H87c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V378.4c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160H208V128h80c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H64zM96 48H256c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm48-168a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"]\n};\nvar faPersonCircleQuestion = {\n prefix: 'fas',\n iconName: 'person-circle-question',\n icon: [576, 512, [], \"e542\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6V328c0 8.8 7.2 16 16 16s16-7.2 16-16v-6.4c0-5.3 4.3-9.6 9.6-9.6h40.5c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2V384c0 8.8 7.2 16 16 16s16-7.2 16-16v-5.1l23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9H409.6c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nvar faH = {\n prefix: 'fas',\n iconName: 'h',\n icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nvar faTarp = {\n prefix: 'fas',\n iconName: 'tarp',\n icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32H576V128zM448 448L576 320H448l0 128zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faScrewdriverWrench = {\n prefix: 'fas',\n iconName: 'screwdriver-wrench',\n icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4h54.1l109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109V104c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7H352c-8.8 0-16-7.2-16-16V102.6c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faTools = faScrewdriverWrench;\nvar faArrowsToEye = {\n prefix: 'fas',\n iconName: 'arrows-to-eye',\n icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63V40c0-13.3 10.7-24 24-24s24 10.7 24 24v96c0 13.3-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H78.1L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63H600c13.3 0 24 10.7 24 24s-10.7 24-24 24H504c-13.3 0-24-10.7-24-24V40c0-13.3 10.7-24 24-24s24 10.7 24 24V78.1l63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63H40c-13.3 0-24-10.7-24-24s10.7-24 24-24h96c13.3 0 24 10.7 24 24v96c0 13.3-10.7 24-24 24s-24-10.7-24-24V433.9L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63V472c0 13.3-10.7 24-24 24s-24-10.7-24-24V376c0-13.3 10.7-24 24-24h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H561.9l63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nvar faPlugCircleBolt = {\n prefix: 'fas',\n iconName: 'plug-circle-bolt',\n icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nvar faMarsAndVenus = {\n prefix: 'fas',\n iconName: 'mars-and-venus',\n icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0H472c13.3 0 24 10.7 24 24V136c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59.1 146.7-136.1 158.2c0 .6 .1 1.2 .1 1.8v.4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .4 .3 .4 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3 .3h24c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v.2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .2 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0l-24 0-24 0v0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V486 486v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V485 485v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V484v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V483v-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1V481v-.1-.1-.1-.1-.1-.1-.1-.1V480v-.1-.1-.1-.1-.1-.1-.1V479v-.1-.1-.1-.1-.1-.1-.1V478v-.1-.1-.1-.1-.1-.1V477v-.1-.1-.1-.1-.1-.1V476v-.1-.1-.1-.1-.1-.1V475v-.1-.2-.2-.2-.2-.2V474v-.2-.2-.2-.2-.2V473v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V470v-.2-.2-.2-.2-.2V469v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V467v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V463v-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2-.2V459v-.2-.2-.2-.2-.2-.2-.2-.2V457v-.2-.2-.2-.2V456H208c-13.3 0-24-10.7-24-24s10.7-24 24-24h24v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3V403v-.3-.3V402v-.3-.3V401v-.3-.3V400v-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.3-.4-.3-.4-.4-.4-.4V393v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V388v-.4-.4-.4-.4-.4-.4-.4-.4-.4-.4V384c0-.6 0-1.2 .1-1.8C155.1 370.7 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48l0 0h0v0zM256 488h24c0 13.3-10.7 24-24 24s-24-10.7-24-24h24zm96-264a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16H384c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80H256z\"]\n};\nvar faHomeUser = faHouseUser;\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160h94L140.5 32H49.7zM272 160V32H173.1L147.5 160H272zm32 0h58c15.1-18.1 32.1-35.7 50.5-52.1c1.5-1.4 3.2-2.6 4.8-3.8L402.9 32H304V160zm209.9-23.7c17.4-15.8 43.9-16.2 61.7-1.2c-.1-.7-.3-1.4-.5-2.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32H435.5l12.8 64.2c9.6 1 19 4.9 26.6 11.8c11.7 10.6 23 21.6 33.9 33.1c1.6-1.6 3.3-3.2 5-4.8zM325.2 210.7c3.8-6.2 7.9-12.5 12.3-18.7H32l4 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H44L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32H337.6c-31-34.7-49.6-80.6-49.6-129.9c0-35.2 16.3-73.6 37.2-107.4zm128.4-78.9c-2.8-2.5-6.3-3.7-9.8-3.8c-3.6 0-7.2 1.2-10 3.7c-33.2 29.7-61.4 63.4-81.4 95.8c-19.7 31.9-32.4 66.2-32.4 92.6C320 407.9 390.3 480 480 480c88.7 0 160-72 160-159.8c0-20.2-9.6-50.9-24.2-79c-14.8-28.5-35.7-58.5-60.4-81.1c-5.6-5.1-14.4-5.2-20 0c-9.6 8.8-18.6 19.6-26.5 29.5c-17.3-20.7-35.8-39.9-55.5-57.7zM530 401c-15 10-31 15-49 15c-45 0-81-29-81-78c0-24 15-45 45-82c4 5 62 79 62 79l36-42c3 4 5 8 7 12c18 33 10 75-20 96z\"]\n};\nvar faHouseCrack = {\n prefix: 'fas',\n iconName: 'house-crack',\n icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H230.4l-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32z\"]\n};\nvar faMartiniGlassCitrus = {\n prefix: 'fas',\n iconName: 'martini-glass-citrus',\n icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48H296.2C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128H392c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177V464h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H208 120c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V345.9L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nvar faCocktail = faMartiniGlassCitrus;\nvar faFaceSurprise = {\n prefix: 'fas',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSurprise = faFaceSurprise;\nvar faBottleWater = {\n prefix: 'fas',\n iconName: 'bottle-water',\n icon: [320, 512, [], \"e4c5\", \"M120 0h80c13.3 0 24 10.7 24 24V64H96V24c0-13.3 10.7-24 24-24zM32 151.7c0-15.6 9-29.8 23.2-36.5l24.4-11.4c11-5.1 23-7.8 35.1-7.8h90.6c12.1 0 24.1 2.7 35.1 7.8l24.4 11.4c14.1 6.6 23.2 20.8 23.2 36.5c0 14.4-7.5 27-18.9 34.1c11.5 8.8 18.9 22.6 18.9 38.2c0 16.7-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40s-8.5 31.4-21.5 40c12.9 8.6 21.5 23.3 21.5 40c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48c0-16.7 8.5-31.4 21.5-40C40.5 415.4 32 400.7 32 384s8.5-31.4 21.5-40C40.5 335.4 32 320.7 32 304s8.5-31.4 21.5-40C40.5 255.4 32 240.7 32 224c0-15.6 7.4-29.4 18.9-38.2C39.5 178.7 32 166.1 32 151.7zM96 240c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zm16 112c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c8.8 0 16-7.2 16-16s-7.2-16-16-16H112z\"]\n};\nvar faCirclePause = {\n prefix: 'fas',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faPauseCircle = faCirclePause;\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192H160c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM367.3 385.4L66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512H285.9c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nvar faAppleWhole = {\n prefix: 'fas',\n iconName: 'apple-whole',\n icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H224zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nvar faAppleAlt = faAppleWhole;\nvar faKitchenSet = {\n prefix: 'fas',\n iconName: 'kitchen-set',\n icon: [576, 512, [], \"e51a\", \"M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112h71.8c8.8-9.8 21.6-16 35.8-16H496c26.5 0 48 21.5 48 48s-21.5 48-48 48H392c-14.2 0-27-6.2-35.8-16H284.4zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24v8h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h96v-8c0-13.3 10.7-24 24-24zM288 464V352H512V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48zM48 320h80 16 32c26.5 0 48 21.5 48 48s-21.5 48-48 48H160c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V336c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160v32h16zM24 464H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faR = {\n prefix: 'fas',\n iconName: 'r',\n icon: [320, 512, [114], \"52\", \"M64 32C28.7 32 0 60.7 0 96V288 448c0 17.7 14.3 32 32 32s32-14.3 32-32V320h95.3L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144H64zM176 256H64V96H176c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faTemperatureQuarter = {\n prefix: 'fas',\n iconName: 'temperature-quarter',\n icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature1 = faTemperatureQuarter;\nvar faThermometer1 = faTemperatureQuarter;\nvar faThermometerQuarter = faTemperatureQuarter;\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6V377.4c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1v-188L288 246.6v188z\"]\n};\nvar faBitcoinSign = {\n prefix: 'fas',\n iconName: 'bitcoin-sign',\n icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32V64h32V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H112v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H41.7C18.7 448 0 429.3 0 406.3V288 265.7 224 101.6C0 80.8 16.8 64 37.6 64H48V32zM64 224H176c26.5 0 48-21.5 48-48s-21.5-48-48-48H64v96zm112 64H64v96H208c26.5 0 48-21.5 48-48s-21.5-48-48-48H176z\"]\n};\nvar faShieldDog = {\n prefix: 'fas',\n iconName: 'shield-dog',\n icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64V160h44.2c12.1 0 23.2 6.8 28.6 17.7L320 192h64c8.8 0 16 7.2 16 16v32c0 44.2-35.8 80-80 80H272v50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160h40 8v32 32c0 17.7-14.3 32-32 32s-32-14.3-32-32V176c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M122.2 0C91.7 0 65.5 21.5 59.5 51.4L8.3 307.4C.4 347 30.6 384 71 384H288v64H224c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V384H569c40.4 0 70.7-36.9 62.8-76.6l-51.2-256C574.5 21.5 548.3 0 517.8 0H122.2zM260.9 64H379.1l10.4 104h-139L260.9 64zM202.3 168H101.4L122.2 64h90.4L202.3 168zM91.8 216H197.5L187.1 320H71L91.8 216zm153.9 0H394.3l10.4 104-169.4 0 10.4-104zm196.8 0H548.2L569 320h-116L442.5 216zm96-48H437.7L427.3 64h90.4l31.4-6.3L517.8 64l20.8 104z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32V144C576 64.5 511.5 0 432 0S288 64.5 288 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H352V144z\"]\n};\nvar faElevator = {\n prefix: 'fas',\n iconName: 'elevator',\n icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H208c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H64zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H112c-17.7 0-32-14.3-32-32V400zm192 0c0-26.5 21.5-48 48-48h64c26.5 0 48 21.5 48 48v16c0 17.7-14.3 32-32 32H304c-17.7 0-32-14.3-32-32V400zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0H304c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nvar faMoneyBillTransfer = {\n prefix: 'fas',\n iconName: 'money-bill-transfer',\n icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64H337.9c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5V384c0 35.3-28.7 64-64 64H302.1c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5V128c0-35.3 28.7-64 64-64zm64 64H96v64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64h64V320zM320 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faMoneyBillTrendUp = {\n prefix: 'fas',\n iconName: 'money-bill-trend-up',\n icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2l0 .1v0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64H352c-17.7 0-32-14.3-32-32s14.3-32 32-32h96 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faHouseFloodWaterCircleArrowRight = {\n prefix: 'fas',\n iconName: 'house-flood-water-circle-arrow-right',\n icon: [640, 512, [], \"e50f\", \"M288 144A144 144 0 1 0 0 144a144 144 0 1 0 288 0zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160H80c-8.8 0-16-7.2-16-16s7.2-16 16-16h89.4L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4H576c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7l0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faSquarePollHorizontal = {\n prefix: 'fas',\n iconName: 'square-poll-horizontal',\n icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faPollH = faSquarePollHorizontal;\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z\"]\n};\nvar faBackwardFast = {\n prefix: 'fas',\n iconName: 'backward-fast',\n icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7V416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64s32 14.3 32 32V214.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96V214.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96V416c0 12.4-7.2 23.7-18.4 29z\"]\n};\nvar faFastBackward = faBackwardFast;\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [9842, 9850, 9851], \"f1b8\", \"M174.7 45.1C192.2 17 223 0 256 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L283 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM429.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L320 448v32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2v32l96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L36 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L182 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3L68.8 335.3c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0C42.7 448-.3 404.8 0 351.6c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128v64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9V128c0-16.8-12.9-30.5-29.3-31.9zM336 144v16c0 53-43 96-96 96H208c-53 0-96-43-96-96V144c0-26.5 21.5-48 48-48H288c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512H128V448c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64l98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16v48h32V464c0-8.8-7.2-16-16-16zm96 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M514.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64H440.6L630.8 469.1c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L238.1 161.3 197.8 20.4C194.9 10.2 202.6 0 213.2 0h56.2c11.5 0 22.1 6.2 27.8 16.1L397.7 192l116.6 0zM41.5 128.7l321 252.9L297.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6H144l-43.2 57.6c-3 4-7.8 6.4-12.8 6.4H46c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L64 256 32.5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-6.2 4-11.4 9.5-13.3z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128V384c0 17.7 14.3 32 32 32s32-14.3 32-32V224l86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224V384c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32H96V384c0 17.7 14.3 32 32 32s32-14.3 32-32V160h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32C14.3 96 0 110.3 0 128z\"]\n};\nvar faBasketball = {\n prefix: 'fas',\n iconName: 'basketball',\n icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z\"]\n};\nvar faBasketballBall = faBasketball;\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCircleUp = {\n prefix: 'fas',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM135.1 217.4l107.1-99.9c3.8-3.5 8.7-5.5 13.8-5.5s10.1 2 13.8 5.5l107.1 99.9c4.5 4.2 7.1 10.1 7.1 16.3c0 12.3-10 22.3-22.3 22.3H304v96c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V256H150.3C138 256 128 246 128 233.7c0-6.2 2.6-12.1 7.1-16.3z\"]\n};\nvar faArrowAltCircleUp = faCircleUp;\nvar faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64H80V384H304V64z\"]\n};\nvar faMobileAlt = faMobileScreenButton;\nvar faVolumeHigh = {\n prefix: 'fas',\n iconName: 'volume-high',\n icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.3 640 165.8 640 256s-41.5 170.8-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nvar faVolumeUp = faVolumeHigh;\nvar faUsersRays = {\n prefix: 'fas',\n iconName: 'users-rays',\n icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H80c-8.8 0-16-7.2-16-16s7.2-16 16-16H448c17.7 0 32-14.3 32-32s-14.3-32-32-32H64zM416 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8V400c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376H80c-8.8 0-16-7.2-16-16V312c0-8.8 7.2-16 16-16h33.4l35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nvar faBurger = {\n prefix: 'fas',\n iconName: 'burger',\n icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1H61.1zM144 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm240 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM272 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM16 304c0-26.5 21.5-48 48-48H448c26.5 0 48 21.5 48 48s-21.5 48-48 48H64c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16H464c8.8 0 16 7.2 16 16v16c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V400z\"]\n};\nvar faHamburger = faBurger;\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7H336c-8.8 0-16-7.2-16-16V118.6c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBugs = {\n prefix: 'fas',\n iconName: 'bugs',\n icon: [576, 512, [], \"e4d0\", \"M164.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L128 71.7 101.9 14.1C96.4 2 82.1-3.3 70.1 2.1S52.7 21.9 58.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6h-17l-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8S-2.1 111.7 .5 124.7l8 40C10.7 175.9 20.6 184 32 184H64v23.3l-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C82.7 274.6 103.8 288 128 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L192 207.3V184h32c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L204.3 136h-17c-4.7-11.6-12.7-21.5-22.9-28.6zM496 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L432.8 250c-12.3 1-24.2 5.6-34.1 13.3L384 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L359 322.7 321.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L503.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L566.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9l0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s24.9-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1l0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.5-13.4-6.6-28-4.4-43.2c8.4-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nvar faRupee = faRupeeSign;\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm152 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6H216 176 128 80c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nvar faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faQuestionCircle = faCircleQuestion;\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2H248.4c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48H542.8c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.3-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8V128h-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM96 171.6L40.6 128H0V352c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V171.6zM413.6 421.9L128 196.9V352h28.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128V352c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V128H544zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faBookBookmark = {\n prefix: 'fas',\n iconName: 'book-bookmark',\n icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0h96V190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5V0h32 32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [448, 512, [], \"f126\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3v87.8c18.8-10.9 40.7-17.1 64-17.1h96c35.3 0 64-28.7 64-64v-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V160c0 70.7-57.3 128-128 128H176c-35.3 0-64 28.7-64 64v6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V352 153.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nvar faBridge = {\n prefix: 'fas',\n iconName: 'bridge',\n icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H72v64H0V288c53 0 96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96s96 43 96 96v64c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V384c0-53 43-96 96-96V160H504V96h40c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM456 96v64H376V96h80zM328 96v64H248V96h80zM200 96v64H120V96h80z\"]\n};\nvar faPhoneFlip = {\n prefix: 'fas',\n iconName: 'phone-flip',\n icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nvar faPhoneAlt = faPhoneFlip;\nvar faTruckFront = {\n prefix: 'fas',\n iconName: 'truck-front',\n icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0H432c44.2 0 80 35.8 80 80V368c0 26.2-12.6 49.4-32 64v48c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V432C12.6 417.4 0 394.2 0 368V80zm129.9 72.2L112 224H400l-17.9-71.8C378.5 138 365.7 128 351 128H161c-14.7 0-27.5 10-31 24.2zM128 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [576, 512, [128008], \"f6be\", \"M320 192h17.1c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4v4 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V339.2L280 448h56c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-53 0-96-43-96-96V192.5c0-16.1-12-29.8-28-31.8l-7.9-1c-17.5-2.2-30-18.2-27.8-35.7s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3v85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5v0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32h0c-3.7-4.1-7-8.5-9.9-13.2C357.3 164 352 146.6 352 128v0V32 12 10.7C352 4.8 356.7 .1 362.6 0h.2c3.3 0 6.4 1.6 8.4 4.2l0 .1L384 21.3l27.2 36.3L416 64h64l4.8-6.4L512 21.3 524.8 4.3l0-.1c2-2.6 5.1-4.2 8.4-4.2h.2C539.3 .1 544 4.8 544 10.7V12 32v96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM432 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faAnchorCircleExclamation = {\n prefix: 'fas',\n iconName: 'anchor-circle-exclamation',\n icon: [640, 512, [], \"e4ab\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faTruckField = {\n prefix: 'fas',\n iconName: 'truck-field',\n icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64H320c23.7 0 44.4 12.9 55.4 32h51.8c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2H544c35.3 0 64 28.7 64 64v32c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V288c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32V96zM384 224h85.9l-42.7-96H384v96zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M512 96c0 50.2-59.1 125.1-84.6 155c-3.8 4.4-9.4 6.1-14.5 5H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c53 0 96 43 96 96s-43 96-96 96H139.6c8.7-9.9 19.3-22.6 30-36.8c6.3-8.4 12.8-17.6 19-27.2H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-53 0-96-43-96-96s43-96 96-96h39.8c-21-31.5-39.8-67.7-39.8-96c0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8C59.8 473 0 402.5 0 352c0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9c-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faClipboardQuestion = {\n prefix: 'fas',\n iconName: 'clipboard-question',\n icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V314.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H158.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faPanorama = {\n prefix: 'fas',\n iconName: 'panorama',\n icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6V434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6V77.6C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM96 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm272 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V272H176c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-53-43-96-96-96H96zM224 96c26.5 0 48 21.5 48 48v56c0 13.3-10.7 24-24 24H200c-13.3 0-24-10.7-24-24V144c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48v56c0 13.3-10.7 24-24 24H328c-13.3 0-24-10.7-24-24V144zM96 128c26.5 0 48 21.5 48 48v24c0 13.3-10.7 24-24 24H72c-13.3 0-24-10.7-24-24V176c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48v24c0 13.3-10.7 24-24 24H456c-13.3 0-24-10.7-24-24V176zM96 480H480c53 0 96-43 96-96V352c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48zm80-48V344c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24v24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nvar faFileCircleMinus = {\n prefix: 'fas',\n iconName: 'file-circle-minus',\n icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16s7.2 16 16 16H496c8.8 0 16-7.2 16-16z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5V80C0 53.5 21.5 32 48 32H197.5c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [320, 512, [127863], \"f4e3\", \"M32.1 29.3C33.5 12.8 47.4 0 64 0H256c16.6 0 30.5 12.8 31.9 29.3l14 168.4c6 72-42.5 135.2-109.9 150.6V448h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H160 80c-17.7 0-32-14.3-32-32s14.3-32 32-32h48V348.4C60.6 333 12.1 269.8 18.1 197.8l14-168.4zm56 98.7H231.9l-5.3-64H93.4l-5.3 64z\"]\n};\nvar faForwardFast = {\n prefix: 'fas',\n iconName: 'forward-fast',\n icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7V416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7V416c0 17.7 14.3 32 32 32s32-14.3 32-32V96c0-17.7-14.3-32-32-32s-32 14.3-32 32V214.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96V214.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96V416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nvar faFastForward = faForwardFast;\nvar faFaceMehBlank = {\n prefix: 'fas',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMehBlank = faFaceMehBlank;\nvar faSquareParking = {\n prefix: 'fas',\n iconName: 'square-parking',\n icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM192 256h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H192v64zm48 64H192v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 168c0-22.1 17.9-40 40-40h72c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nvar faParking = faSquareParking;\nvar faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [576, 512, [], \"e012\", \"M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6H464c26.5 0 48-21.5 48-48V256h32c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V208zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\"]\n};\nvar faBarsProgress = {\n prefix: 'fas',\n iconName: 'bars-progress',\n icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160H320V128H448v32zM48 64C21.5 64 0 85.5 0 112v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48H48zM448 352v32H192V352H448zM48 288c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V336c0-26.5-21.5-48-48-48H48z\"]\n};\nvar faTasksAlt = faBarsProgress;\nvar faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32V44l96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12V32c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32h96l22.6-22.6c6-6 14.1-9.4 22.6-9.4H192V116.2l32-4 32 4V160h18.7c8.5 0 16.6 3.4 22.6 9.4L320 192h32c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32s-14.3-32-32-32H315.9c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48H32c-17.7 0-32-14.3-32-32V224zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1V480c0 17.7-14.3 32-32 32s-32-14.3-32-32v-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nvar faCartFlatbed = {\n prefix: 'fas',\n iconName: 'cart-flatbed',\n icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64H48c8.8 0 16 7.2 16 16V368c0 44.2 35.8 80 80 80h18.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H450.7c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H144c-8.8 0-16-7.2-16-16V80C128 35.8 92.2 0 48 0H32zM192 80V272c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H464V176c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1V32H240c-26.5 0-48 21.5-48 48z\"]\n};\nvar faDollyFlatbed = faCartFlatbed;\nvar faBanSmoking = {\n prefix: 'fas',\n iconName: 'ban-smoking',\n icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32H384v32H333.3zm32 32H400c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H269.3L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48h32c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48H304c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96H112c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H229.5z\"]\n};\nvar faSmokingBan = faBanSmoking;\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [576, 512, [], \"f120\", \"M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faMobileButton = {\n prefix: 'fas',\n iconName: 'mobile-button',\n icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zM192 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHouseMedicalFlag = {\n prefix: 'fas',\n iconName: 'house-medical-flag',\n icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32H624c8.8 0 16 7.2 16 16V176c0 8.8-7.2 16-16 16H512V512H448V192 32c0-17.7 14.3-32 32-32zM276.8 39.7L416 159V512h1l-.2 0H96c-17.7 0-32-14.3-32-32V288H32c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208v48H176c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H288V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16z\"]\n};\nvar faBasketShopping = {\n prefix: 'fas',\n iconName: 'basket-shopping',\n icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512H430c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32H458.4L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192H171.7L253.3 35.1zM192 304v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16zm128 16v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faShoppingBasket = faBasketShopping;\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H380.8zM224 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm64 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faBusSimple = {\n prefix: 'fas',\n iconName: 'bus-simple',\n icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80V96 416c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32V96 80C0 35.2 99.2 0 224 0zM64 128V256c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H96c-17.7 0-32 14.3-32 32zM80 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faBusAlt = faBusSimple;\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"]\n};\nvar faFaceSadCry = {\n prefix: 'fas',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V477.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8V288c0-8.8-7.2-16-16-16s-16 7.2-16 16V493.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336v32c0 26.5 21.5 48 48 48s48-21.5 48-48V336c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nvar faSadCry = faFaceSadCry;\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9H150.9l-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2h42.2zM304 184c0-13.3 10.7-24 24-24h56c53 0 96 43 96 96s-43 96-96 96H328c-13.3 0-24-10.7-24-24V184zm48 24v96h32c26.5 0 48-21.5 48-48s-21.5-48-48-48H352z\"]\n};\nvar faPersonMilitaryToPerson = {\n prefix: 'fas',\n iconName: 'person-military-to-person',\n icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9H184.1c8.8-.1 15.9-7.2 15.9-16V16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1H66.5C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256v32c0 17.7 14.3 32 32 32H192c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5V256c0-35.3-28.7-64-64-64H96c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32H448c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H352zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376v32l-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0v32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 2.9 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nvar faFileShield = {\n prefix: 'fas',\n iconName: 'file-shield',\n icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v47l-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7H514.3c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nvar faTowerObservation = {\n prefix: 'fas',\n iconName: 'tower-observation',\n icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144v80c0 17.7-14.3 32-32 32h-4.9l32 192H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H384.5c-.4 0-.8 0-1.1 0H128.6c-.4 0-.8 0-1.1 0H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l32-192H128c-17.7 0-32-14.3-32-32V144c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448h117zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256H197.8zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16H336c8.8 0 16-7.2 16-16s-7.2-16-16-16H176z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M576 0c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM448 96c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM352 224V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32s32 14.3 32 32zM192 288c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V320c0-17.7 14.3-32 32-32zM96 416v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V416c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faSignal5 = faSignal;\nvar faSignalPerfect = faSignal;\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [576, 512, [128653], \"f207\", \"M288 0C422.4 0 512 35.2 512 80V96l0 32c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32v32c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H192v32c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h0V96h0V80C64 35.2 153.6 0 288 0zM128 160v96c0 17.7 14.3 32 32 32H272V128H160c-17.7 0-32 14.3-32 32zM304 288H416c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H304V288zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16s7.2 16 16 16H368c8.8 0 16-7.2 16-16z\"]\n};\nvar faHeartCircleXmark = {\n prefix: 'fas',\n iconName: 'heart-circle-xmark',\n icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faHouseChimney = {\n prefix: 'fas',\n iconName: 'house-chimney',\n icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185V64c0-17.7-14.3-32-32-32H448c-17.7 0-32 14.3-32 32v36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v64 24c0 22.1 17.9 40 40 40h24 32.5c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1h16c22.1 0 40-17.9 40-40V455.8c.3-2.6 .5-5.3 .5-8.1l-.7-160.2h32z\"]\n};\nvar faHomeLg = faHouseChimney;\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM96 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFaceFrown = {\n prefix: 'fas',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faFrown = faFaceFrown;\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32V192v96c0 17.7 14.3 32 32 32s32-14.3 32-32V224h50.7l128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0H32zM176 160H64V64H176c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faShop = {\n prefix: 'fas',\n iconName: 'shop',\n icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192H603.2c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0H121.7c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224V384v80c0 26.5 21.5 48 48 48H336c26.5 0 48-21.5 48-48V384 224H320V384H128V224H64zm448 0V480c0 17.7 14.3 32 32 32s32-14.3 32-32V224H512z\"]\n};\nvar faStoreAlt = faShop;\nvar faFloppyDisk = {\n prefix: 'fas',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V173.3c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32H64zm0 96c0-17.7 14.3-32 32-32H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faSave = faFloppyDisk;\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9H480v56.1l6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4H544v65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24H576v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H352v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H24c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7V288H56.6c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1V176 128h-7.5c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128H320 224v64h72 48 72V128zM160 288v64H296h24 24H480V288H344 320h0H296 160z\"]\n};\nvar faScaleUnbalanced = {\n prefix: 'fas',\n iconName: 'scale-unbalanced',\n icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2V480c0 17.7 14.3 32 32 32H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V153.3c21-9.2 37.2-27 44.2-49l125.9-42zM439.6 288L512 163.8 584.4 288H439.6zM512 384c62.9 0 115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L536.1 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L392.7 273.1c-5.7 9.8-9.3 21.1-6.7 32.1C396.8 350 449.1 384 512 384zM129.2 291.8L201.6 416H56.7l72.4-124.2zM3.2 433.1C14 478 66.3 512 129.2 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L153.2 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L9.9 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"]\n};\nvar faBalanceScaleLeft = faScaleUnbalanced;\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nvar faSortAsc = faSortUp;\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faCommenting = faCommentDots;\nvar faPlantWilt = {\n prefix: 'fas',\n iconName: 'plant-wilt',\n icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56v13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V120C464 53.7 410.3 0 344 0S224 53.7 224 120v21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120v13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1V248c0-30.9 25.1-56 56-56s56 25.1 56 56v32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V280 248 120z\"]\n};\nvar faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nvar faFaceGrinSquint = {\n prefix: 'fas',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nvar faGrinSquint = faFaceGrinSquint;\nvar faHandHoldingDollar = {\n prefix: 'fas',\n iconName: 'hand-holding-dollar',\n icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24V34.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3 0 0c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8V232c0 13.3-10.7 24-24 24s-24-10.7-24-24V220.6c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2V24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingUsd = faHandHoldingDollar;\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M423.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L196 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L103 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7l0 0-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2C4.7 380.6-2.7 393.8 .9 406.6s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L215 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L371 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L439 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zM92.1 363.3l0 0L144 368l-51.9-4.7zM112 320a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM240 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40V188.2c8.5-7.6 19.7-12.2 32-12.2c20.6 0 38.2 13 45 31.2c8.8-9.3 21.2-15.2 35-15.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48v48 16 48c0 70.7-57.3 128-128 128l-16 0H240l-.1 0h-5.2c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7V40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304zm48-16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16V304z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128V352c0 80-128.9 128-288 128S0 432 0 352V160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9l0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nvar faHandsPraying = {\n prefix: 'fas',\n iconName: 'hands-praying',\n icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4v73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384v96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7V224c0-17.7 14.3-32 32-32s32 14.3 32 32v80c0 8.8 7.2 16 16 16s16-7.2 16-16V219.1c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8V304c0 8.8 7.2 16 16 16s16-7.2 16-16V224c0-17.7 14.3-32 32-32s32 14.3 32 32V342.3c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480V384c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2V238.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nvar faPrayingHands = faHandsPraying;\nvar faArrowRotateRight = {\n prefix: 'fas',\n iconName: 'arrow-rotate-right',\n icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160H336c-17.7 0-32 14.3-32 32s14.3 32 32 32H464c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32s-32 14.3-32 32v51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nvar faArrowRightRotate = faArrowRotateRight;\nvar faArrowRotateForward = faArrowRotateRight;\nvar faRedo = faArrowRotateRight;\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM240 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nvar faLocationCrosshairs = {\n prefix: 'fas',\n iconName: 'location-crosshairs',\n icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32V66.7C368.4 80.1 431.9 143.6 445.3 224H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H445.3C431.9 368.4 368.4 431.9 288 445.3V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C143.6 431.9 80.1 368.4 66.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H66.7C80.1 143.6 143.6 80.1 224 66.7V32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faLocation = faLocationCrosshairs;\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H312zm88 48h0v0l0 0zM64 304a112 112 0 1 1 224 0A112 112 0 1 1 64 304zM368 480c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2V56c0-13.3-10.7-24-24-24H504c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2v.2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7V168c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nvar faChildDress = {\n prefix: 'fas',\n iconName: 'child-dress',\n icon: [320, 512, [], \"e59c\", \"M224 64A64 64 0 1 0 96 64a64 64 0 1 0 128 0zM88 400v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h16v80c0 17.7 14.3 32 32 32s32-14.3 32-32V400h17.8c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400H88z\"]\n};\nvar faUsersBetweenLines = {\n prefix: 'fas',\n iconName: 'users-between-lines',\n icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24H616c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zM83.2 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 320c0-35.3 28.7-64 64-64h96c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6H64c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6h96c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32H493.6zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32h-224c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1h96c7.4 0 14.7 .8 21.6 2.4zm44-130.4a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM321.6 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32V156.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2V32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faFaceGrinTears = {\n prefix: 'fas',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.4 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0zm160 0l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0z\"]\n};\nvar faGrinTears = faFaceGrinTears;\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nvar faCalendarXmark = {\n prefix: 'fas',\n iconName: 'calendar-xmark',\n icon: [512, 512, [\"calendar-times\"], \"f273\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zM337 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nvar faCalendarTimes = faCalendarXmark;\nvar faChildReaching = {\n prefix: 'fas',\n iconName: 'child-reaching',\n icon: [384, 512, [], \"e59d\", \"M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384h32v96c0 17.7 14.3 32 32 32s32-14.3 32-32V221.6c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v64c0 35.3-28.7 64-64 64H320v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM224 64c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C145.5 152.1 129 192 96 192c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C168.1 286.5 208 303 208 336c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C302.5 263.9 319 224 352 224c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C279.9 129.5 240 113 240 80c0-8.8-7.2-16-16-16zm-24 96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faUserGear = {\n prefix: 'fas',\n iconName: 'user-gear',\n icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7v.9c0 9.2 2.7 18.5 7.9 26.3H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8v30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8V454.8c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9V218.2zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z\"]\n};\nvar faUserCog = faUserGear;\nvar faArrowUp19 = {\n prefix: 'fas',\n iconName: 'arrow-up-1-9',\n icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M450.7 38c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V108.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUp = faArrowUp19;\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64H416c35.3 0 64 28.7 64 64V448h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 144 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96V64zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faMosquitoNet = {\n prefix: 'fas',\n iconName: 'mosquito-net',\n icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4V242.2L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5V137.9c0-14.9 10.1-27.3 23.8-31V63.7c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2V107c13.7 3.6 23.8 16.1 23.8 31v22.6l45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35v23.1l32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6v50c0 17.7-14.3 32-32 32s-32-14.3-32-32v-50l-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v48h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H608v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H528v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H448v16c0 8.8-7.2 16-16 16s-16-7.2-16-16V480H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V400H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V320H400c-8.8 0-16-7.2-16-16s7.2-16 16-16h16V272c0-8.8 7.2-16 16-16s16 7.2 16 16v16h48V272c0-8.8 7.2-16 16-16zm16 112h48V320H528v48zm0 80h48V400H528v48zM448 320v48h48V320H448zm0 80v48h48V400H448z\"]\n};\nvar faBridgeWater = {\n prefix: 'fas',\n iconName: 'bridge-water',\n icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64H544c17.7 0 32 14.3 32 32v35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6V352.5c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3h0l0-.5V256c0-53-43-96-96-96s-96 43-96 96V384l0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7V227.6C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6V96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64V32zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM224 512c17.7 0 32-14.3 32-32V320H192V480c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3V269.3l4.7 4.7c9 9 21.2 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H157.3l-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6v55.7l0 .9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V384l32 42.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V421.3c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M64 128V96H192l0 128H176c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H256l0-128H384v32c0 17.7 14.3 32 32 32s32-14.3 32-32V80c0-26.5-21.5-48-48-48H224 48C21.5 32 0 53.5 0 80v48c0 17.7 14.3 32 32 32s32-14.3 32-32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V416H320v32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6v32H128V320c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6v1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416H240.9l11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416H64zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.4 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nvar faPersonDigging = {\n prefix: 'fas',\n iconName: 'person-digging',\n icon: [576, 512, [\"digging\"], \"f85e\", \"M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2H288c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7h32l22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V405.1l-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nvar faDigging = faPersonDigging;\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H320l-7.2-14.3C307.4 6.8 296.3 0 284.2 0H163.8c-12.1 0-23.2 6.8-28.6 17.7zM416 128H32L53.2 467c1.6 25.3 22.6 45 47.9 45H346.9c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nvar faGaugeSimple = {\n prefix: 'fas',\n iconName: 'gauge-simple',\n icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3V88c0-13.3-10.7-24-24-24s-24 10.7-24 24V292.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faGaugeSimpleMed = faGaugeSimple;\nvar faTachometerAverage = faGaugeSimple;\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM208 112v48H160c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h48c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H272V112c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80H160c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48H104c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72H440c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72H394.3c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64h-5.5c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3H339.7c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120h-8c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H320c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72zm-256 0c0 66.3-53.7 120-120 120H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h8c30.9 0 56-25.1 56-56v-8H64c-35.3 0-64-28.7-64-64V160c0-35.3 28.7-64 64-64h64c35.3 0 64 28.7 64 64v32 32 72z\"]\n};\nvar faQuoteRightAlt = faQuoteRight;\nvar faShirt = {\n prefix: 'fas',\n iconName: 'shirt',\n icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0h12.6c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7V448c0 35.3-28.7 64-64 64H224c-35.3 0-64-28.7-64-64V197.7l-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0h12.6z\"]\n};\nvar faTShirt = faShirt;\nvar faTshirt = faShirt;\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5V204.7c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7V413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3V294.7c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3V92.5c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2V152.6L392 121v89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4V354.8L256 323.2v95.9l-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1V354.8L528 323.2v90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [10135, 247], \"f529\", \"M272 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 320a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H400z\"]\n};\nvar faTengeSign = {\n prefix: 'fas',\n iconName: 'tenge-sign',\n icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32H192 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V224H32c-17.7 0-32-14.3-32-32z\"]\n};\nvar faTenge = faTengeSign;\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48V432c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80V384 336 288C0 146.6 114.6 32 256 32s256 114.6 256 256v48 48 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48V304c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nvar faHandsHolding = {\n prefix: 'fas',\n iconName: 'hands-holding',\n icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104v56 64V325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7H240c26.5 0 48-21.5 48-48V385.1c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3 0 0-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3V224 144 104zm480 0v40 80 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2 0 0-25.3 25.3c-21 21-32.8 49.5-32.8 79.2V464c0 26.5 21.5 48 48 48h66.7c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9V224 160 104c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nvar faHandsClapping = {\n prefix: 'fas',\n iconName: 'hands-clapping',\n icon: [512, 512, [], \"e1a8\", \"M336 16V80c0 8.8-7.2 16-16 16s-16-7.2-16-16V16c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16V192c0-17.7 14.3-32 32-32s32 14.3 32 32V345.6c0 57.1-30 110-78.9 139.4zM424.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32H384c88.4 0 160 71.6 160 160v64H0V192zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160H320h96 32 64 32v32 80c0 8.8 7.2 16 16 16s16-7.2 16-16V352c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80s-80-35.8-80-80V352H448v32 64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V384H128v64c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V384 288H128z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faPersonCircleXmark = {\n prefix: 'fas',\n iconName: 'person-circle-xmark',\n icon: [576, 512, [], \"e543\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M201 10.3c14.3-7.8 31.6-7.8 46 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L201 10.3zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14V496c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L25 423.1C9.6 414.7 0 398.6 0 381V184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8V381c0 17.6-9.6 33.7-25 42.1L263.7 510c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8V280c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V325.2c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128h8c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H120zM320 0c13.3 0 24 10.7 24 24V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V24c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480V384H422.2c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1H584v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H504v96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faJ = {\n prefix: 'fas',\n iconName: 'j',\n icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32V320c0 88.4-71.6 160-160 160S0 408.4 0 320V288c0-17.7 14.3-32 32-32s32 14.3 32 32v32c0 53 43 96 96 96s96-43 96-96V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faUsersViewfinder = {\n prefix: 'fas',\n iconName: 'users-viewfinder',\n icon: [640, 512, [], \"e595\", \"M48 48h88c13.3 0 24-10.7 24-24s-10.7-24-24-24H32C14.3 0 0 14.3 0 32V136c0 13.3 10.7 24 24 24s24-10.7 24-24V48zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7h56.1c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4H149.3zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3H421.3c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6h56.1zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1H280c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24H408c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80-32a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM504 48h88v88c0 13.3 10.7 24 24 24s24-10.7 24-24V32c0-17.7-14.3-32-32-32H504c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464V376c0-13.3-10.7-24-24-24s-24 10.7-24 24V480c0 17.7 14.3 32 32 32H136c13.3 0 24-10.7 24-24s-10.7-24-24-24H48zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24H608c17.7 0 32-14.3 32-32V376c0-13.3-10.7-24-24-24s-24 10.7-24 24v88H504z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM64 288c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V288zM300.9 397.9L256 368V304l44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3V387.7c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nvar faUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'up-right-from-square',\n icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6V32c0-17.7-14.3-32-32-32H352zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faExternalLinkAlt = faUpRightFromSquare;\nvar faTableCells = {\n prefix: 'fas',\n iconName: 'table-cells',\n icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm88 64v64H64V96h88zm56 0h88v64H208V96zm240 0v64H360V96h88zM64 224h88v64H64V224zm232 0v64H208V224h88zm64 0h88v64H360V224zM152 352v64H64V352h88zm56 0h88v64H208V352zm240 0v64H360V352h88z\"]\n};\nvar faTh = faTableCells;\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [512, 512, [], \"f1c1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V304H176c-35.3 0-64 28.7-64 64V512H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM176 352h32c30.9 0 56 25.1 56 56s-25.1 56-56 56H192v32c0 8.8-7.2 16-16 16s-16-7.2-16-16V448 368c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24H192v48h16zm96-80h32c26.5 0 48 21.5 48 48v64c0 26.5-21.5 48-48 48H304c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16V400c0-8.8-7.2-16-16-16H320v96h16zm80-112c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v32h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V432 368z\"]\n};\nvar faBookBible = {\n prefix: 'fas',\n iconName: 'book-bible',\n icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272V304c0 8.8-7.2 16-16 16H224c-8.8 0-16-7.2-16-16V192H160c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h48V80z\"]\n};\nvar faBible = faBookBible;\nvar faO = {\n prefix: 'fas',\n iconName: 'o',\n icon: [448, 512, [111], \"4f\", \"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256A224 224 0 1 1 0 256a224 224 0 1 1 448 0z\"]\n};\nvar faSuitcaseMedical = {\n prefix: 'fas',\n iconName: 'suitcase-medical',\n icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96v32V480H384V128 96 56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM96 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H96V96zM416 480h32c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H416V480zM224 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faMedkit = faSuitcaseMedical;\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48H45.4C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4H342.7c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208H267.6c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2H168c-22.1 0-40-17.9-40-40V169.6c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4V184c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6V144c0-35.3-28.7-64-64-64H128c-35.3 0-64 28.7-64 64v21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3V168c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6v.6c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V336 320c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6V240c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16v32 16 48c0 8.8 7.2 16 16 16s16-7.2 16-16V204.3c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1h0c0 123.7-100.3 224-224 224h-1.1H256h-.6C132 480 32 380 32 256.6V256 216.8c-10.1-14.6-16-32.3-16-51.4V144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24h2.8C44.8 58.2 83.3 32 128 32h64c44.7 0 83.2 26.2 101.2 64H296c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4v21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-13.3 0-24 10.7-24 24v8h56.4c-15.2 17-24.4 39.4-24.4 64H320c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nvar faPersonDress = {\n prefix: 'fas',\n iconName: 'person-dress',\n icon: [320, 512, [\"female\"], \"f182\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM88 384H70.2c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3h11.6c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1H232v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H152v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faFemale = faPersonDress;\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312v13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9V344c0 11-9 20-20 20s-20-9-20-20V329.4c-10.3-2.2-20-5.5-28.2-8.4l0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5V136c0-11 9-20 20-20s20 9 20 20z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 352h8.2c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM320 352H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H360.2C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 288c8.8 0 16 7.2 16 16v48h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H496c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16z\"]\n};\nvar faBriefcaseClock = faBusinessTime;\nvar faTableCellsLarge = {\n prefix: 'fas',\n iconName: 'table-cells-large',\n icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96V224H288V96H448zm0 192V416H288V288H448zM224 224H64V96H224V224zM64 288H224V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faThLarge = faTableCellsLarge;\nvar faBookTanakh = {\n prefix: 'fas',\n iconName: 'book-tanakh',\n icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24H124.9l13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24h55.4l27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48H305c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24H249.6L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48H111c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48h55.4l27.7 48-27.7 48H180.3l-27.7-48zm0-48l-13.9 24-13.9-24h27.7zm41.6-24L208 88l13.9 24H194.1zm69.3 24h27.7l-13.9 24-13.9-24zm13.9 72l13.9 24H263.4l13.9-24zm-55.4 48L208 280l-13.9-24h27.7z\"]\n};\nvar faTanakh = faBookTanakh;\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nvar faVolumeControlPhone = faPhoneVolume;\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M152.7 135.9l-10.4 57.2c6.8-.7 13.6-1.1 20.5-1.1h10.7c39.4 0 77.8 12.1 110.1 34.7L562.4 421.8l35.1 24.6c24.4-6 42.5-28.1 42.5-54.4c0-75.8-94.7-126.6-134.6-144.7L474 83.9C468.2 53.8 441.8 32 411.1 32h-2.7c-5.6 0-11.1 .7-16.5 2.2L199.2 85.5c-23.9 6.4-42 26-46.5 50.4zM0 384c0 35.3 28.7 64 64 64H544L265.3 252.9c-26.9-18.8-58.9-28.9-91.8-28.9H162.9c-60.6 0-116 34.2-143.1 88.4L13.5 325C4.6 342.7 0 362.3 0 382.2V384z\"]\n};\nvar faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64H64C28.7 64 0 92.7 0 128V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H282.5C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80h64c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [320, 512, [], \"f1ae\", \"M96 64a64 64 0 1 1 128 0A64 64 0 1 1 96 64zm48 320v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V287.8L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V384H144z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [320, 512, [8356], \"f195\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4V192H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H46c-2.2 10.5-6.1 20.6-11.7 29.9L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H88.5l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H224c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V160.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nvar faPlaneLock = {\n prefix: 'fas',\n iconName: 'plane-lock',\n icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7v84.6l101.8 58.2C418 247.6 416 259.6 416 272v24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1V400l57.6 43.2c4 3 6.4 7.8 6.4 12.8v24 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8V297.3c0-5.7 3.1-11 8.1-13.9L192 178.3V93.7zM528 240c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [448, 512, [127991], \"f02b\", \"M0 80V229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7H48C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4l0 0 0 0 0 0 0 0 .3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nvar faCakeCandles = {\n prefix: 'fas',\n iconName: 'cake-candles',\n icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6V72c0 22.1 17.9 40 40 40s40-17.9 40-40V69.2c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c-35.3 0-64 28.7-64 64v71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1 0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4l0 0 0 0 .1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8l0 0 0 0 0 0 .1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9V288c0-35.3-28.7-64-64-64V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H256V176c0-17.7-14.3-32-32-32s-32 14.3-32 32v48H128V176zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4V480c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32V394.6z\"]\n};\nvar faBirthdayCake = faCakeCandles;\nvar faCake = faCakeCandles;\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nvar faAnglesUp = {\n prefix: 'fas',\n iconName: 'angles-up',\n icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nvar faAngleDoubleUp = faAnglesUp;\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [128206], \"f0c6\", \"M364.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nvar faArrowRightToCity = {\n prefix: 'fas',\n iconName: 'arrow-right-to-city',\n icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H146.7l-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [127895], \"f4d6\", \"M333.2 322.8l0 0-133.9-146 0 0L146 118.6c7.8-5.1 37-22.6 78-22.6s70.2 17.4 78 22.6L245.7 180l85.6 93.4 27.4-29.8c16.3-17.7 25.3-40.9 25.3-65V149.1c0-19-5.6-37.5-16.1-53.3L327.8 35.6C312.9 13.4 287.9 0 261.2 0h-76c-25.8 0-50.1 12.5-65.1 33.5L81.9 87C70.3 103.2 64 122.8 64 142.8V164c0 23.2 8.4 45.6 23.6 63.1l56 64.2 0 0 83.3 95.6 0 0 91.8 105.3c10 11.5 26.8 14.3 40 6.8l54.5-31.1c17.8-10.2 21.6-34.3 7.7-49.4l-87.7-95.7zM205.2 410.6l-83.3-95.6L27.1 418.5c-13.9 15.1-10.1 39.2 7.7 49.4l55.1 31.5c13 7.4 29.3 4.9 39.4-6.1l75.9-82.6z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32V164.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2V165.3C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4v7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398V325l90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1v-.4l-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58V398c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89v-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3v45.5l9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faArrowUp91 = {\n prefix: 'fas',\n iconName: 'arrow-up-9-1',\n icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V146.3L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM450.7 294c8.3 6 13.3 15.7 13.3 26v96h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H432 384c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V364.4l-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zm-5-145.1A32 32 0 1 0 418.3 91a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nvar faSortNumericUpAlt = faArrowUp91;\nvar faLitecoinSign = {\n prefix: 'fas',\n iconName: 'litecoin-sign',\n icon: [384, 512, [], \"e1d3\", \"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64V213.6L23.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L64 280.1V448c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V261.9l136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L128 195.3V64z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faCircleNodes = {\n prefix: 'fas',\n iconName: 'circle-nodes',\n icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16H240V320H208c-7 0-13.7 1.5-19.7 4.2L68.2 192H96.5c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192h6L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7v96c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V368c0-7.8-1.9-15.2-5.2-21.7L487.1 192h6c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16h28.3L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2H272V192H383.5z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3V176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nvar faTruckFieldUn = {\n prefix: 'fas',\n iconName: 'truck-field-un',\n icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96v32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32v32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288c0-35.3-28.7-64-64-64h-4.2c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38H375.4C364.4 44.9 343.7 32 320 32H96zm288 96h43.2l42.7 96H384V128zM112 384a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM253.3 135.1l34.7 52V144c0-8.8 7.2-16 16-16s16 7.2 16 16v96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V144c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144v64c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16v64c0 26.5-21.5 48-48 48s-48-21.5-48-48V144c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0H64 320h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V75c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1v11c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V437c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75V64C14.3 64 0 49.7 0 32zM96 64V75c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9V64H96zm0 384H288V437c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9v11z\"]\n};\nvar faHourglassEmpty = faHourglass;\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.8 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9H55.9C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5l18.3 24.4c6.4 8.5 19.2 8.5 25.6 0l25.6-34.1c6-8.1 15.5-12.8 25.6-12.8h49z\"]\n};\nvar faUserDoctor = {\n prefix: 'fas',\n iconName: 'user-doctor',\n icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1V362c27.6 7.1 48 32.2 48 62v40c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16s7.2-16 16-16V424c0-17.7-14.3-32-32-32s-32 14.3-32 32v24c8.8 0 16 7.2 16 16s-7.2 16-16 16H256c-8.8 0-16-7.2-16-16V424c0-29.8 20.4-54.9 48-62V304.9c-6-.6-12.1-.9-18.3-.9H178.3c-6.2 0-12.3 .3-18.3 .9v65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7V311.2zM144 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faUserMd = faUserDoctor;\nvar faCircleInfo = {\n prefix: 'fas',\n iconName: 'circle-info',\n icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faInfoCircle = faCircleInfo;\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96h44.7c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40H416c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H373.3L362.9 64.8C356.4 45.2 338.1 32 317.4 32H194.6c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faCameraAlt = faCamera;\nvar faSquareVirus = {\n prefix: 'fas',\n iconName: 'square-virus',\n icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm88 32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faCarOn = {\n prefix: 'fas',\n iconName: 'car-on',\n icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24v80c0 13.3 10.7 24 24 24s24-10.7 24-24V24zM185.8 224H326.2c6.8 0 12.8 4.3 15.1 10.6L360.3 288H151.7l19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344v40 64 32c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V448H384v32c0 17.7 14.3 32 32 32h16c17.7 0 32-14.3 32-32V448 384 344c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160H185.8c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96V256c0 53 43 96 96 96v32h64V352H384v32h64V352c53 0 96-43 96-96V160c17.7 0 32-14.3 32-32s-14.3-32-32-32H512 480c-17.7 0-32 14.3-32 32v41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7H55 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32v8c0 13.3-10.7 24-24 24H64c-17.7 0-32 14.3-32 32s14.3 32 32 32H552c48.6 0 88-39.4 88-88v-8z\"]\n};\nvar faArrowDown19 = {\n prefix: 'fas',\n iconName: 'arrow-down-1-9',\n icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2V160H384c-17.7 0-32 14.3-32 32s14.3 32 32 32h48 48c17.7 0 32-14.3 32-32s-14.3-32-32-32H464V64c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V365.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nvar faSortNumericAsc = faArrowDown19;\nvar faSortNumericDown = faArrowDown19;\nvar faHandHoldingDroplet = {\n prefix: 'fas',\n iconName: 'hand-holding-droplet',\n icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3V160c0 53-43 96-96 96s-96-43-96-96v-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V416c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faHandHoldingWater = faHandHoldingDroplet;\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7l0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M0 96a64 64 0 1 1 128 0A64 64 0 1 1 0 96zM224 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM80 416a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 96a64 64 0 1 1 128 0A64 64 0 1 1 352 96zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0A64 64 0 1 1 512 96zm64 176a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM416 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nvar faPrescriptionBottleMedical = {\n prefix: 'fas',\n iconName: 'prescription-bottle-medical',\n icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0H352c17.7 0 32 14.3 32 32V64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64V32zm32 96H352V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zM160 240v48H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V352h48c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8H32c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9V104l4.4-1.6L240.1 4.2zM64 224h64V416h40V224h64V416h48V224h64V416h40V224h64V420.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V224z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48V368c0 26.5 21.5 48 48 48H64c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H48zM416 160h50.7L544 237.3V256H416V160zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32V42.4c93.7 13.9 167.7 88 181.6 181.6H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H469.6c-13.9 93.7-88 167.7-181.6 181.6V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V469.6C130.3 455.7 56.3 381.7 42.4 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H42.4C56.3 130.3 130.3 56.3 224 42.4V32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6V384c0-17.7 14.3-32 32-32s32 14.3 32 32v20.6c58.3-12.5 104.1-58.4 116.6-116.6H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h20.6C392.1 165.7 346.3 119.9 288 107.4V128c0 17.7-14.3 32-32 32s-32-14.3-32-32V107.4C165.7 119.9 119.9 165.7 107.4 224H128c17.7 0 32 14.3 32 32s-14.3 32-32 32H107.4zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPersonCane = {\n prefix: 'fas',\n iconName: 'person-cane',\n icon: [448, 512, [], \"e53c\", \"M272 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8V488c0 13.3 10.7 24 24 24s24-10.7 24-24V376c0-30.9-25.1-56-56-56s-56 25.1-56 56v8c0 13.3 10.7 24 24 24s24-10.7 24-24v-8z\"]\n};\nvar faTent = {\n prefix: 'fas',\n iconName: 'tent',\n icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7H416L288 288V512H32c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3V464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512H48c-26.5 0-48-21.5-48-48V270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6V128 54.3 48C64 21.5 85.5 0 112 0h4.5c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0H336c26.5 0 48 21.5 48 48v6.3V128v17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6V464c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V295.8c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280v8 32c0 8.8 7.2 16 16 16h32 8c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [448, 512, [], \"f560\", \"M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nvar faArrowDownAZ = {\n prefix: 'fas',\n iconName: 'arrow-down-a-z',\n icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32H480c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H352c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352H352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224H371.8l-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176h40.4L416 135.6 395.8 176z\"]\n};\nvar faSortAlphaAsc = faArrowDownAZ;\nvar faSortAlphaDown = faArrowDownAZ;\nvar faMoneyBillWheat = {\n prefix: 'fas',\n iconName: 'money-bill-wheat',\n icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88H136c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24h48c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48H464c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V304zM48 416v48H96c0-26.5-21.5-48-48-48zM96 304H48v48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48h48V416zM416 304c0 26.5 21.5 48 48 48V304H416zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArrowRotateLeft = {\n prefix: 'fas',\n iconName: 'arrow-rotate-left',\n icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nvar faArrowLeftRotate = faArrowRotateLeft;\nvar faArrowRotateBack = faArrowRotateLeft;\nvar faArrowRotateBackward = faArrowRotateLeft;\nvar faUndo = faArrowRotateLeft;\nvar faHardDrive = {\n prefix: 'fas',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V280.4c-17-15.2-39.4-24.4-64-24.4H64c-24.6 0-47 9.2-64 24.4V96zM64 288H448c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faHdd = faHardDrive;\nvar faFaceGrinSquintTears = {\n prefix: 'fas',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-16.3 4.4-34.1 7.5-46.3 9.3c-1.6 .2-3.1 .5-4.6 .6c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.3-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nvar faGrinSquintTears = faFaceGrinSquintTears;\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M96 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V224v64V448c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V384H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H96V64zm448 0v64h32c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32v64c0 17.7-14.3 32-32 32H544v64c0 17.7-14.3 32-32 32H480c-17.7 0-32-14.3-32-32V288 224 64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32zM416 224v64H224V224H416z\"]\n};\nvar faRectangleList = {\n prefix: 'fas',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24H448c13.3 0 24-10.7 24-24s-10.7-24-24-24H224z\"]\n};\nvar faListAlt = faRectangleList;\nvar faTarpDroplet = {\n prefix: 'fas',\n iconName: 'tarp-droplet',\n icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128H197.5c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64H512c35.3 0 64 28.7 64 64V352H448c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zM448 512l0-128H576L448 512zM96 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faHouseMedicalCircleCheck = {\n prefix: 'fas',\n iconName: 'house-medical-circle-check',\n icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonSkiingNordic = {\n prefix: 'fas',\n iconName: 'person-skiing-nordic',\n icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464H202.8l41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464H99.7l54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H159.3c.4 0 .9 0 1.3 0H319.3c.5 0 1 0 1.4 0H504c39.8 0 72-32.2 72-72v-8c0-13.3-10.7-24-24-24s-24 10.7-24 24v8c0 13.3-10.7 24-24 24H434.6l27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32H426.7c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464H357.8l21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288h2.7z\"]\n};\nvar faSkiingNordic = faPersonSkiingNordic;\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [512, 512, [], \"f271\", \"M128 32V64H80c-26.5 0-48 21.5-48 48v48H480V112c0-26.5-21.5-48-48-48H384V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H192V32c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 192H32V464c0 26.5 21.5 48 48 48H432c26.5 0 48-21.5 48-48V192zM256 248c13.3 0 24 10.7 24 24v56h56c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v56c0 13.3-10.7 24-24 24s-24-10.7-24-24V376H176c-13.3 0-24-10.7-24-24s10.7-24 24-24h56V272c0-13.3 10.7-24 24-24z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0h40.1c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14-9.3-22.5zM32 448H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCircleLeft = {\n prefix: 'fas',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9L117.5 269.8c-3.5-3.8-5.5-8.7-5.5-13.8s2-10.1 5.5-13.8l99.9-107.1c4.2-4.5 10.1-7.1 16.3-7.1c12.3 0 22.3 10 22.3 22.3l0 57.7 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 57.7c0 12.3-10 22.3-22.3 22.3c-6.2 0-12.1-2.6-16.3-7.1z\"]\n};\nvar faArrowAltCircleLeft = faCircleLeft;\nvar faTrainSubway = {\n prefix: 'fas',\n iconName: 'train-subway',\n icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96V352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512H82.7c8.5 0 16.6-3.4 22.6-9.4L160 448H288l54.6 54.6c6 6 14.1 9.4 22.6 9.4H405c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9V96c0-53-43-96-96-96H96zM64 128c0-17.7 14.3-32 32-32h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V128zM272 96h80c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H272c-17.7 0-32-14.3-32-32V128c0-17.7 14.3-32 32-32zM64 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSubway = faTrainSubway;\nvar faChartGantt = {\n prefix: 'fas',\n iconName: 'chart-gantt',\n icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32H160c-17.7 0-32-14.3-32-32zm96 64H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faIndianRupeeSign = {\n prefix: 'fas',\n iconName: 'indian-rupee-sign',\n icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32H96h16H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H231.8c9.6 14.4 16.7 30.6 20.7 48H288c17.7 0 32 14.3 32 32s-14.3 32-32 32H252.4c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256h80c32.8 0 61-19.7 73.3-48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H185.3C173 115.7 144.8 96 112 96H96 32C14.3 96 0 81.7 0 64z\"]\n};\nvar faIndianRupee = faIndianRupeeSign;\nvar faInr = faIndianRupeeSign;\nvar faCropSimple = {\n prefix: 'fas',\n iconName: 'crop-simple',\n icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32V64H32C14.3 64 0 78.3 0 96s14.3 32 32 32H64V384c0 35.3 28.7 64 64 64H352V384H128V32zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H448l0-256c0-35.3-28.7-64-64-64L160 64v64l224 0 0 352z\"]\n};\nvar faCropAlt = faCropSimple;\nvar faMoneyBill1 = {\n prefix: 'fas',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm64 320H64V320c35.3 0 64 28.7 64 64zM64 192V128h64c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm76-48c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillAlt = faMoneyBill1;\nvar faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z\"]\n};\nvar faLongArrowAltLeft = faLeftLong;\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9l0 0 0 0 0 0-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5H283.3c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32H64c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32H384c0-17.7 14.3-32 32-32zM338.6 384H109.4c-10.1 10.6-18.6 21.3-25.5 32H364.1c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128H338.6c10.1-10.7 18.6-21.3 25.5-32H83.9c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5H164.7z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H532.5c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V43.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM402 412.7L144.7 210c-9.5 8.5-22.2 14-37.2 14H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h11.5c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6V480c0 17.7 14.3 32 32 32s32-14.3 32-32V468.5c0-31.2 23.6-52.7 50-55.7z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nvar faSubtract = faMinus;\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16V32H96c-8.8 0-16 7.2-16 16s7.2 16 16 16h16V96H60.2C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208H72c-13.3 0-24 10.7-24 24s10.7 24 24 24h4L60 384H196L180 256h4c13.3 0 24-10.7 24-24s-10.7-24-24-24h-1.8l32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2H144V64h16c8.8 0 16-7.2 16-16s-7.2-16-16-16H144V16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24H232c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416H48zm288 0l-43.2 57.6c-3.1 4.2-4.8 9.2-4.8 14.4c0 13.3 10.7 24 24 24H488c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L464 416H336zM304 208v51.9c0 7.8 2.8 15.3 8 21.1L339.2 312 337 384H462.5l-3.3-72 28.3-30.8c5.4-5.9 8.5-13.6 8.5-21.7V208c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16v16H424V208c0-8.8-7.2-16-16-16H392c-8.8 0-16 7.2-16 16v16H352V208c0-8.8-7.2-16-16-16H320c-8.8 0-16 7.2-16 16zm80 96c0-8.8 7.2-16 16-16s16 7.2 16 16v32H384V304z\"]\n};\nvar faArrowLeftLong = {\n prefix: 'fas',\n iconName: 'arrow-left-long',\n icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n};\nvar faLongArrowLeft = faArrowLeftLong;\nvar faPlugCircleCheck = {\n prefix: 'fas',\n iconName: 'plug-circle-check',\n icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64v48c0 17.7 14.3 32 32 32h1.8l11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5h38.7c16.3 0 30-12.3 31.8-28.5L318.2 304H320c17.7 0 32-14.3 32-32V224c0-35.3-28.7-64-64-64H224zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nvar faFrancSign = {\n prefix: 'fas',\n iconName: 'franc-sign',\n icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64V224v96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H48v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V256H256c17.7 0 32-14.3 32-32s-14.3-32-32-32H112V96H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160H64c-35.3 0-64 28.7-64 64v64c0 35.3 28.7 64 64 64h67.8L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448V64z\"]\n};\nvar faHandsAslInterpreting = {\n prefix: 'fas',\n iconName: 'hands-asl-interpreting',\n icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7V256c0 70.7 57.3 128 128 128h72 8v-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2V256c0-70.7-57.3-128-128-128H440h-8v.3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nvar faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faAslInterpreting = faHandsAslInterpreting;\nvar faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nvar faGear = {\n prefix: 'fas',\n iconName: 'gear',\n icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nvar faCog = faGear;\nvar faDropletSlash = {\n prefix: 'fas',\n iconName: 'droplet-slash',\n icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.1 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0h-1.8c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faTintSlash = faDropletSlash;\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5l0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4H221.8c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6l0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H192c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32H608c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H560V440c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H448V454c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454v58H288zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126v2H0v-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160H160V296.6c-19.1 11.1-32 31.7-32 55.4V480c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2H48c-26.5 0-48-21.5-48-48V176 160z\"]\n};\nvar faMosquito = {\n prefix: 'fas',\n iconName: 'mosquito',\n icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344h42.3l-21.1-34.5zM371.4 256l-54-88H194.6l-54 88 54 88H317.4l54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4H348.7l-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400H53.4C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112H163.3l56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112H458.6c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168H383.1zM283 112L256 68l-27 44h54zM128.9 168H86.6l21.1 34.5L128.9 168zM107.8 309.5L86.6 344h42.3l-21.1-34.5zM229 400l27 44 27-44H229z\"]\n};\nvar faPersonMilitaryRifle = {\n prefix: 'fas',\n iconName: 'person-military-rifle',\n icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4V48c0 8.8-7.2 16-16 16H185c-13.8 0-25-11.2-25-25zm17.6 57H334.4c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7V480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9h50.4c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512H192c-17.7 0-32-14.3-32-32V369.7l-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M0 24C0 10.7 10.7 0 24 0H69.5c22 0 41.5 12.8 50.6 32h411c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3H170.7l5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5H488c13.3 0 24 10.7 24 24s-10.7 24-24 24H199.7c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5H24C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faShoppingCart = faCartShopping;\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32H88h48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96C14.3 96 0 81.7 0 64zM136 96H88V256h48V96zM288 64c0-17.7 14.3-32 32-32h56 48 56c17.7 0 32 14.3 32 32s-14.3 32-32 32V400c0 44.2-35.8 80-80 80s-80-35.8-80-80V96c-17.7 0-32-14.3-32-32zM424 96H376V256h48V96z\"]\n};\nvar faPlugCirclePlus = {\n prefix: 'fas',\n iconName: 'plug-circle-plus',\n icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208v48h48c8.8 0 16 7.2 16 16s-7.2 16-16 16H448v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V384H368c-8.8 0-16-7.2-16-16s7.2-16 16-16h48V304c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M224 109.3V217.6L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2V512h96V416c0-35.3 28.7-64 64-64s64 28.7 64 64v96h96V283.2c0-16.9-8.8-32.5-23.3-41.2L416 217.6V109.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4V464c0 26.5 21.5 48 48 48h80V273.6L24.9 330.3zM592 512c26.5 0 48-21.5 48-48V372.4c0-17.5-9.5-33.6-24.9-42.1L512 273.6V512h80z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z\"]\n};\nvar faArrowTurnUp = {\n prefix: 'fas',\n iconName: 'arrow-turn-up',\n icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nvar faLevelUp = faArrowTurnUp;\nvar faU = {\n prefix: 'fas',\n iconName: 'u',\n icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32V288c0 70.7 57.3 128 128 128s128-57.3 128-128V64c0-17.7 14.3-32 32-32s32 14.3 32 32V288c0 106-86 192-192 192S0 394 0 288V64C0 46.3 14.3 32 32 32z\"]\n};\nvar faSquareRootVariable = {\n prefix: 'fas',\n iconName: 'square-root-variable',\n icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H344L238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H77.6c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faSquareRootAlt = faSquareRootVariable;\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nvar faClockFour = faClock;\nvar faBackwardStep = {\n prefix: 'fas',\n iconName: 'backward-step',\n icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29V96c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241V96c0-17.7-14.3-32-32-32S0 78.3 0 96V416c0 17.7 14.3 32 32 32s32-14.3 32-32V271l11.5 9.6 192 160z\"]\n};\nvar faStepBackward = faBackwardStep;\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v64H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H96 320 544h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H576V384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H544 320 96 32zm96 64H288v64H128V384zm224 0H512v64H352V384z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M192 96v12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12V96c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H132.1c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48H352c17.7 0 32 14.3 32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160H320l-22.6-22.6c-6-6-14.1-9.4-22.6-9.4H256V180.2l-32-4-32 4V224H173.3c-8.5 0-16.6 3.4-22.6 9.4L128 256H32z\"]\n};\nvar faBaseballBatBall = {\n prefix: 'fas',\n iconName: 'baseball-bat-ball',\n icon: [512, 512, [], \"f432\", \"M424 0c-12.4 0-24.2 4.9-33 13.7L233.5 171.2c-10.5 10.5-19.8 22.1-27.7 34.6L132.7 321.6c-7.3 11.5-15.8 22.2-25.5 31.9L69.9 390.7l51.3 51.3 37.3-37.3c9.6-9.6 20.3-18.2 31.9-25.5l115.8-73.1c12.5-7.9 24.1-17.2 34.6-27.7L498.3 121c8.7-8.7 13.7-20.6 13.7-33s-4.9-24.2-13.7-33L457 13.7C448.2 4.9 436.4 0 424 0zm88 432a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM15 399c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L49 399c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nvar faS = {\n prefix: 'fas',\n iconName: 's',\n icon: [320, 512, [115], \"53\", \"M99.1 105.4C79 114 68.2 127.2 65.2 144.8c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3C5.1 440.8-3.9 422.7 1.6 405.9s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5L2.1 133.9C9.4 91.4 37.4 62.2 73.9 46.6c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.2 22.7c-11.2-3-48.1-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nvar faTimeline = {\n prefix: 'fas',\n iconName: 'timeline',\n icon: [640, 512, [], \"e29c\", \"M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H288v54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V288H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V169.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3V224H160V169.3zM488 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM320 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64H64zm16 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V144zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V336zM272 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM368 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V240zM464 128h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V240zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H464c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nvar faHouseChimneyMedical = {\n prefix: 'fas',\n iconName: 'house-chimney-medical',\n icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h48c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H320V208c0-8.8-7.2-16-16-16H272z\"]\n};\nvar faClinicMedical = faHouseChimneyMedical;\nvar faTemperatureThreeQuarters = {\n prefix: 'fas',\n iconName: 'temperature-three-quarters',\n icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V144c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature3 = faTemperatureThreeQuarters;\nvar faThermometer3 = faTemperatureThreeQuarters;\nvar faThermometerThreeQuarters = faTemperatureThreeQuarters;\nvar faMobileScreen = {\n prefix: 'fas',\n iconName: 'mobile-screen',\n icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0H304c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H80c-35.3 0-64-28.7-64-64V64zM144 448c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160c-8.8 0-16 7.2-16 16zM304 64H80V384H304V64z\"]\n};\nvar faMobileAndroidAlt = faMobileScreen;\nvar faPlaneUp = {\n prefix: 'fas',\n iconName: 'plane-up',\n icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6v56.7c0 10.9-10.7 18.6-21.1 15.2L320 320v80l57.6 43.2c4 3 6.4 7.8 6.4 12.8v42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14V456c0-5 2.4-9.8 6.4-12.8L192 400V320L21.1 377C10.7 380.4 0 372.7 0 361.8V305.1c0-10.7 5.3-20.7 14.2-26.6L192 160V93.7z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7H256c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96h11.5c10.4 0 18 9.8 15.5 19.9l-13.8 55.2c15.8 14.8 28.7 32.8 37.5 52.9H544c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H512c-9.1 12.1-19.9 22.9-32 32v64c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32V448H256v32c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V416c-34.9-26.2-58.7-66.3-63.2-112H68c-37.6 0-68-30.4-68-68s30.4-68 68-68h4c13.3 0 24 10.7 24 24s-10.7 24-24 24H68c-11 0-20 9-20 20s9 20 20 20H99.2c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2H384zm64 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [576, 512, [\"battery-3\"], \"f242\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm208 96H96V320H288V192z\"]\n};\nvar faBattery3 = faBatteryHalf;\nvar faMountainCity = {\n prefix: 'fas',\n iconName: 'mountain-city',\n icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48v92.1l71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16h-3.5l73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3H592c26.5 0 48-21.5 48-48V240c0-26.5-21.5-48-48-48H568V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v72H480V48c0-26.5-21.5-48-48-48H336zm32 64h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16V176zm160 96c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V272zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H528c-8.8 0-16-7.2-16-16V368c0-8.8 7.2-16 16-16zM224 188.9L283.8 288H223l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512H413.5c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2l0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5V176c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336V300.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4V304v5.7V336zm32 0V304 278.1c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5V272c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5V432c0 44.2-86 80-192 80S0 476.2 0 432V396.6c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [9772], \"f66d\", \"M245.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9l0 0 0 0 0 0 0 0-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C344.9 97.4 368 134 368 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1 0 0 0 0c3.6 6.7 2 15-3.8 19.9L272 343.5v19.8l35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L401.1 80c7.2-14.3 7.2-14.3 7.2-14.3l0 0 0 0 .1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1 0 0 0 0s0 0-10.2-12.3l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L272 423.4v28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7V424.1l-40.3 27.7C197.8 463.3 187.9 472 176 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L112 400c-10.2 12.3-10.2 12.3-10.3 12.3l0 0 0 0-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C26.4 324.5 0 277.1 0 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29C93 72.5 97 70 99.9 68.4c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0 0 0 0 0s0 0 7.2 14.3l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C105.2 119 96 149.5 96 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L240 362.6V343.5l-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9l0 0 0 0 0 0 .1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C167.1 254.6 144 218 144 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1 0 0 0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM220.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C227 210.2 232 190.9 232 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C285 141.8 280 161.1 280 176s5 34.2 11.8 53.1z\"]\n};\nvar faSliders = {\n prefix: 'fas',\n iconName: 'sliders',\n icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z\"]\n};\nvar faSlidersH = faSliders;\nvar faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32v96V384c0 35.3 28.7 64 64 64H256V384H64V160H256V96H64V32zM288 192c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V192zm0 288c0 17.7 14.3 32 32 32H544c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H445.3c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4H320c-17.7 0-32 14.3-32 32V480z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M256 64H384v64H256V64zM240 0c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48h48v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96v32H80c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H240c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H192V288H448v32H400c-26.5 0-48 21.5-48 48v96c0 26.5 21.5 48 48 48H560c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48H512V288h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H352V192h48c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H240zM96 448V384H224v64H96zm320-64H544v64H416V384z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [320, 512, [128205], \"f276\", \"M16 144a144 144 0 1 1 288 0A144 144 0 1 1 16 144zM160 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM128 480V317.1c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M34.6 288H80c8.8 0 16-7.2 16-16V72c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V40c0-22.1 17.9-40 40-40s40 17.9 40 40V204c0 11 9 20 20 20s20-9 20-20V72c0-22.1 17.9-40 40-40s40 17.9 40 40V272c0 8.8 7.2 16 16 16h45.4c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faCentSign = {\n prefix: 'fas',\n iconName: 'cent-sign',\n icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32V66.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.3C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M288 0H160 128C110.3 0 96 14.3 96 32s14.3 32 32 32V196.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512H378.6c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5V64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288zM192 196.8V64h64V196.8c0 23.7 6.6 46.9 19 67.1L309.5 320h-171L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nvar faPersonPregnant = {\n prefix: 'fas',\n iconName: 'person-pregnant',\n icon: [384, 512, [], \"e31e\", \"M192 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM120 383c-13.8-3.6-24-16.1-24-31V296.9l-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1h1.1 12.5H192c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3v32c0 17.7-14.3 32-32 32H304 264v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384h-8-8v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V383z\"]\n};\nvar faWandSparkles = {\n prefix: 'fas',\n iconName: 'wand-sparkles',\n icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7V176c0 8.8-7.2 16-16 16H384.2c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9V272c0-8.8 7.2-16 16-16h34.6c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nvar faEllipsisVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-vertical',\n icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z\"]\n};\nvar faEllipsisV = faEllipsisVertical;\nvar faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128v64c0 8.8 7.4 15.7 15.7 18.6C34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320v64c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V320c0-8.8-7.4-15.7-15.7-18.6C541.5 294.9 528 277 528 256s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6V128c0-35.3-28.7-64-64-64H64zm64 112l0 160c0 8.8 7.2 16 16 16H432c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16zM96 160c0-17.7 14.3-32 32-32H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H128c-17.7 0-32-14.3-32-32V160z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V256c0 17.7 14.3 32 32 32s32-14.3 32-32V32zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nvar faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z\"]\n};\nvar faLongArrowAltRight = faRightLong;\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32V48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1v36.1l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9v32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3v62l-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1v32.7l70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3v33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 400v80c0 17.7-14.3 32-32 32s-32-14.3-32-32V416 345.5 312.8 249.5 216.8 153.5 120.8 64 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faLaptopFile = {\n prefix: 'fas',\n iconName: 'laptop-file',\n icon: [640, 512, [], \"e51d\", \"M128 0C92.7 0 64 28.7 64 64V288H19.2C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384H320V288H128V64H448V96h64V64c0-35.3-28.7-64-64-64H128zM512 128H400c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H592c26.5 0 48-21.5 48-48V256H544c-17.7 0-32-14.3-32-32V128zm32 0v96h96l-96-96z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [\"teletype\"], \"f1e4\", \"M38.3 241.3L15.1 200.6c-9.2-16.2-8.4-36.5 4.5-50C61.4 106.8 144.7 48 256 48s194.6 58.8 236.4 102.6c12.9 13.5 13.7 33.8 4.5 50l-23.1 40.7c-7.5 13.2-23.3 19.3-37.8 14.6l-81.1-26.6c-13.1-4.3-22-16.6-22-30.4V144c-49.6-18.1-104-18.1-153.6 0v54.8c0 13.8-8.9 26.1-22 30.4L76.1 255.8c-14.5 4.7-30.3-1.4-37.8-14.6zM32 336c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V336zm0 96c0-8.8 7.2-16 16-16H80c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H48c-8.8 0-16-7.2-16-16V432zM144 320h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V336zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H336c-8.8 0-16-7.2-16-16V336c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V336zm16 80h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V432c0-8.8 7.2-16 16-16zM128 432c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H144c-8.8 0-16-7.2-16-16V432z\"]\n};\nvar faTeletype = faTty;\nvar faDiagramNext = {\n prefix: 'fas',\n iconName: 'diagram-next',\n icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64H280v64h46.1c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41H232V224H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64v64zM448 416V352H365.3l.4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64V352c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4H64v64H210.7l5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7H448z\"]\n};\nvar faPersonRifle = {\n prefix: 'fas',\n iconName: 'person-rifle',\n icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9V512H144V337.7L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8h50.4zM160 80a80 80 0 1 1 160 0A80 80 0 1 1 160 80zM448 0c8.8 0 16 7.2 16 16V132.3c9.6 5.5 16 15.9 16 27.7V269.3l16-5.3V208c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v84.5c0 6.9-4.4 13-10.9 15.2L480 325.3V352h48c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16H484l23 92.1c2.5 10.1-5.1 19.9-15.5 19.9H432c-8.8 0-16-7.2-16-16V400H400c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32V160c0-11.8 6.4-22.2 16-27.7V32c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 16z\"]\n};\nvar faHouseMedicalCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-medical-circle-exclamation',\n icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64H320V208c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16v48H208c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32H512c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nvar faPersonHiking = {\n prefix: 'fas',\n iconName: 'person-hiking',\n icon: [384, 512, [\"hiking\"], \"f6ec\", \"M192 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm51.3 182.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V397.3l-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208H336V184c0-13.3 10.7-24 24-24s24 10.7 24 24v55.8c0 .1 0 .2 0 .2s0 .2 0 .2V488c0 13.3-10.7 24-24 24s-24-10.7-24-24V272H296.6c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59h4.2c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nvar faHiking = faPersonHiking;\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [640, 512, [9890], \"f226\", \"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H224v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H128c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1V384h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H480v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448H384c-17.7 0-32-14.3-32-32s14.3-32 32-32h32V349.1c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H160zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320H328 280 200c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120V344c0 75.1 60.9 136 136 136H456c13.3 0 24-10.7 24-24s-10.7-24-24-24H136c-48.6 0-88-39.4-88-88V120z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM96 64H288c17.7 0 32 14.3 32 32v32c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V96c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nvar faPeoplePulling = {\n prefix: 'fas',\n iconName: 'people-pulling',\n icon: [576, 512, [], \"e535\", \"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64V320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352h15.7l30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128H64zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nvar faN = {\n prefix: 'fas',\n iconName: 'n',\n icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V448c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 50.5 8.4 38.5 21.1 33.9z\"]\n};\nvar faCableCar = {\n prefix: 'fas',\n iconName: 'cable-car',\n icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 56a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64H232V157.5l-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5V224H416c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288zm64 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H96zm112 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H224c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16H352z\"]\n};\nvar faTram = faCableCar;\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96H96zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3v3c0 26.5-21.5 48-48 48s-48-21.5-48-48v-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nvar faBuildingCircleXmark = {\n prefix: 'fas',\n iconName: 'building-circle-xmark',\n icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32V64h48c26.5 0 48 21.5 48 48V240l44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240V112c0-26.5 21.5-48 48-48h48V32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7V128H160v90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faArrowsDownToLine = {\n prefix: 'fas',\n iconName: 'arrows-down-to-line',\n icon: [576, 512, [], \"e4b8\", \"M544 416L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L480 274.7 480 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L160 274.7 160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L54.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faFaceGrin = {\n prefix: 'fas',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrin = faFaceGrin;\nvar faDeleteLeft = {\n prefix: 'fas',\n iconName: 'delete-left',\n icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64H205.3c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7H512c35.3 0 64-28.7 64-64V128zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faBackspace = faDeleteLeft;\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6v42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480h42.4c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7H96V379.9c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nvar faEyeDropperEmpty = faEyeDropper;\nvar faEyedropper = faEyeDropper;\nvar faFileCircleCheck = {\n prefix: 'fas',\n iconName: 'file-circle-check',\n icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416V96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3V256v41.7L52.5 440.6zM256 352V256 128 96c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29V352z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64V448c0 35.3 28.7 64 64 64H304c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H80zm80 432h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMobileAndroid = faMobile;\nvar faMobilePhone = faMobile;\nvar faFaceMeh = {\n prefix: 'fas',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336H352c8.8 0 16 7.2 16 16s-7.2 16-16 16H160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faMeh = faFaceMeh;\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z\"]\n};\nvar faBookSkull = {\n prefix: 'fas',\n iconName: 'book-skull',\n icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2V176c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V163.2c19.4-11.7 32-30.3 32-51.2zM208 96a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nvar faBookDead = faBookSkull;\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96zm0 32V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V128H0zM64 405.3c0-29.5 23.9-53.3 53.3-53.3H234.7c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7H74.7c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16H496c8.8 0 16 7.2 16 16s-7.2 16-16 16H368c-8.8 0-16-7.2-16-16z\"]\n};\nvar faDriversLicense = faIdCard;\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [\"dedent\"], \"f03b\", \"M0 64C0 46.3 14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32zm32 96H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM.2 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6V335.3c0 13.3-15.3 20.8-25.8 12.6L.2 268.6z\"]\n};\nvar faDedent = faOutdent;\nvar faHeartCircleExclamation = {\n prefix: 'fas',\n iconName: 'heart-circle-exclamation',\n icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c0 2.7-.2 5.4-.5 8.1V472c0 22.1-17.9 40-40 40H456c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1H416 392c-22.1 0-40-17.9-40-40V448 384c0-17.7-14.3-32-32-32H256c-17.7 0-32 14.3-32 32v64 24c0 22.1-17.9 40-40 40H160 128.1c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2H104c-22.1 0-40-17.9-40-40V360c0-.9 0-1.9 .1-2.8V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nvar faHome = faHouse;\nvar faHomeAlt = faHouse;\nvar faHomeLgAlt = faHouse;\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H368c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64H512c35.3 0 64 28.7 64 64V352H512V96H128V352H64V96zM0 403.2C0 392.6 8.6 384 19.2 384H620.8c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8H76.8C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H352v48c0 8.8-7.2 16-16 16H304c-8.8 0-16-7.2-16-16V272H240c-8.8 0-16-7.2-16-16V224c0-8.8 7.2-16 16-16h48V160z\"]\n};\nvar faB = {\n prefix: 'fas',\n iconName: 'b',\n icon: [320, 512, [98], \"42\", \"M64 32C28.7 32 0 60.7 0 96V256 416c0 35.3 28.7 64 64 64H192c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128H64zm96 192H64V96h96c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288h96 32c35.3 0 64 28.7 64 64s-28.7 64-64 64H64V288z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM160 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H224v48c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V352H112c-8.8 0-16-7.2-16-16V304c0-8.8 7.2-16 16-16h48V240z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4H448c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3V224c0-70.7-57.3-128-128-128H392.3c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3V456c0 13.3 10.7 24 24 24s24-10.7 24-24V410c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7V456c0 13.3 10.7 24 24 24s24-10.7 24-24V405.1c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faArrowRightArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-right-arrow-left',\n icon: [448, 512, [8644, \"exchange\"], \"f0ec\", \"M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z\"]\n};\nvar faExchange = faArrowRightArrowLeft;\nvar faRotateRight = {\n prefix: 'fas',\n iconName: 'rotate-right',\n icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5z\"]\n};\nvar faRedoAlt = faRotateRight;\nvar faRotateForward = faRotateRight;\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176V288c0 35.3 28.7 64 64 64h32V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352 240 32c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7V480c0 17.7 14.3 32 32 32s32-14.3 32-32V255.6c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16V150.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8V16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nvar faCutlery = faUtensils;\nvar faArrowUpWideShort = {\n prefix: 'fas',\n iconName: 'arrow-up-wide-short',\n icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSortAmountUp = faArrowUpWideShort;\nvar faMillSign = {\n prefix: 'fas',\n iconName: 'mill-sign',\n icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128v80V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-26.5 21.5-48 48-48s48 21.5 48 48v42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32V261.5l35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48V416c0 17.7 14.3 32 32 32s32-14.3 32-32V208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nvar faBowlRice = {\n prefix: 'fas',\n iconName: 'bowl-rice',\n icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24zm24 48h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H200c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176H72c13.3 0 24 10.7 24 24s-10.7 24-24 24H56c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256H484.6c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28H140.2c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H248c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H152c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H104c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H344c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H440c-13.3 0-24-10.7-24-24zm-24-96h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H392c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H296c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1v64c0 26.5 21.5 48 48 48h48V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h64V464c0-8.8 7.2-16 16-16s16 7.2 16 16v48h48c26.5 0 48-21.5 48-48V400c0-.4 0-.7 0-1.1zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faTowerBroadcast = {\n prefix: 'fas',\n iconName: 'tower-broadcast',\n icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V183.4c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nvar faBroadcastTower = faTowerBroadcast;\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96H288V96h80.6zM224 80V192H64c-17.7 0-32 14.3-32 32v64c-17.7 0-32 14.3-32 32s14.3 32 32 32H65.1c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16h66.3c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16H608c17.7 0 32-14.3 32-32s-14.3-32-32-32V224c0-17.7-14.3-32-32-32H527.4L418.6 56c-12.1-15.2-30.5-24-50-24H272c-26.5 0-48 21.5-48 48zm0 288a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm288 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"]\n};\nvar faUpLong = {\n prefix: 'fas',\n iconName: 'up-long',\n icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192H96l0 288c0 17.7 14.3 32 32 32h64c17.7 0 32-14.3 32-32l0-288h72c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLongArrowAltUp = faUpLong;\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nvar faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [448, 512, [], \"f387\", \"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3V358.7C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3V272c26.7 20.1 60 32 96 32h86.7c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48H208c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M288 109.3V352c0 17.7-14.3 32-32 32s-32-14.3-32-32V109.3l-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352H192c0 35.3 28.7 64 64 64s64-28.7 64-64H448c35.3 0 64 28.7 64 64v32c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V416c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9V81.2c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2V430.2c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48A96 96 0 1 0 96 256a96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faMound = {\n prefix: 'fas',\n iconName: 'mound',\n icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nvar faToiletPortable = {\n prefix: 'fas',\n iconName: 'toilet-portable',\n icon: [320, 512, [], \"e583\", \"M0 32V64H320V32c0-17.7-14.3-32-32-32H32C14.3 0 0 14.3 0 32zM24 96H0v24V488c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H272v8c0 13.3 10.7 24 24 24s24-10.7 24-24V120 96H296 24zM256 240v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V240c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faFileArrowDown = {\n prefix: 'fas',\n iconName: 'file-arrow-down',\n icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM216 232V334.1l31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31V232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faFileDownload = faFileArrowDown;\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32H416c88.4 0 160 71.6 160 160V352h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0H288c0 53-43 96-96 96s-96-43-96-96H80c-44.2 0-80-35.8-80-80V112zM320 352H448V256H416c-8.8 0-16-7.2-16-16s7.2-16 16-16h32V160c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32V352zM96 128c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H96zm96 336a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faShieldCat = {\n prefix: 'fas',\n iconName: 'shield-cat',\n icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4h.2c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4h48c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3h.2c5.8 0 10.4 4.7 10.4 10.4V272c0 53-43 96-96 96s-96-43-96-96V154.4zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288H175.5L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7H272.5L349.4 44.6z\"]\n};\nvar faZap = faBolt;\nvar faGlassWater = {\n prefix: 'fas',\n iconName: 'glass-water',\n icon: [384, 512, [], \"e4f4\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM73 156.5L66.4 64H317.6L311 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"]\n};\nvar faOilWell = {\n prefix: 'fas',\n iconName: 'oil-well',\n icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6V184c0-13.3-10.7-24-24-24s-24 10.7-24 24V448H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H406.7L340 257.5l-62.2 16.1L305.3 352H238.7L265 277l-74.6 19.3L137.3 448H96V288.8l337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32H327.7l11.2 32H205.1z\"]\n};\nvar faVault = {\n prefix: 'fas',\n iconName: 'vault',\n icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64V416c0 35.3 28.7 64 64 64H80l16 32h64l16-32H400l16 32h64l16-32h16c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM224 320a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-240a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM480 221.3V336c0 8.8-7.2 16-16 16s-16-7.2-16-16V221.3c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8H424c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80l0 0h0v0zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V196.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3H352c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8l0 .1 0 .3zM328.2 384l-.2 .5 0-.5h.2zM112 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPlaneCircleXmark = {\n prefix: 'fas',\n iconName: 'plane-circle-xmark',\n icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7v84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9v65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8v42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3V93.7C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.2C48.8 31.5 29 27.6 14.3 37.4S-4.4 67 5.4 81.7L100.2 224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v32H48c-17.7 0-32 14.3-32 32s14.3 32 32 32h80v64c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V288h80c17.7 0 32-14.3 32-32s-14.3-32-32-32H219.8L314.6 81.7c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.2z\"]\n};\nvar faCny = faYenSign;\nvar faJpy = faYenSign;\nvar faRmb = faYenSign;\nvar faYen = faYenSign;\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64v32c0 17.7 14.3 32 32 32s32-14.3 32-32V416H288c17.7 0 32-14.3 32-32s-14.3-32-32-32H128V320H240c79.5 0 144-64.5 144-144s-64.5-144-144-144H96zM240 256H128V96H240c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nvar faRouble = faRubleSign;\nvar faRub = faRubleSign;\nvar faRuble = faRubleSign;\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faFaceLaughWink = {\n prefix: 'fas',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1H393.6c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nvar faLaughWink = faFaceLaughWink;\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [640, 512, [], \"f7ab\", \"M64 464V316.9c0-108.4 68.3-205.1 170.5-241.3L404.2 15.5C425.6 7.9 448 23.8 448 46.4c0 11-5.5 21.2-14.6 27.3L400 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1h-3.4c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4l-.1 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3l0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8H112c-26.5 0-48-21.5-48-48zM392 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nvar faBoreHole = {\n prefix: 'fas',\n iconName: 'bore-hole',\n icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32V296.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4V32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48V464c0 26.5 21.5 48 48 48H464c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H384c-17.7 0-32 14.3-32 32V352c0 53-43 96-96 96s-96-43-96-96V160c0-17.7-14.3-32-32-32H48z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [576, 512, [], \"f275\", \"M64 32C46.3 32 32 46.3 32 64V304v48 80c0 26.5 21.5 48 48 48H496c26.5 0 48-21.5 48-48V304 152.2c0-18.2-19.4-29.7-35.4-21.1L352 215.4V152.2c0-18.2-19.4-29.7-35.4-21.1L160 215.4V64c0-17.7-14.3-32-32-32H64z\"]\n};\nvar faCircleDown = {\n prefix: 'fas',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6L269.8 394.5c-3.8 3.5-8.7 5.5-13.8 5.5s-10.1-2-13.8-5.5L135.1 294.6c-4.5-4.2-7.1-10.1-7.1-16.3c0-12.3 10-22.3 22.3-22.3l57.7 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 57.7 0c12.3 0 22.3 10 22.3 22.3c0 6.2-2.6 12.1-7.1 16.3z\"]\n};\nvar faArrowAltCircleDown = faCircleDown;\nvar faArrowsTurnToDots = {\n prefix: 'fas',\n iconName: 'arrows-turn-to-dots',\n icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V448c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM384 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192A64 64 0 1 1 64 64a64 64 0 1 1 0 128z\"]\n};\nvar faFlorinSign = {\n prefix: 'fas',\n iconName: 'florin-sign',\n icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224H64c-17.7 0-32 14.3-32 32s14.3 32 32 32h80L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H69.3c38.8 0 73.7-23.3 88.6-59.1L213.3 288H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H240l45.1-108.3c5-11.9 16.6-19.7 29.5-19.7H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H314.7z\"]\n};\nvar faArrowDownShortWide = {\n prefix: 'fas',\n iconName: 'arrow-down-short-wide',\n icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7V64c0-17.7 14.3-32 32-32s32 14.3 32 32V365.7l32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H320c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faSortAmountDesc = faArrowDownShortWide;\nvar faSortAmountDownAlt = faArrowDownShortWide;\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [448, 512, [8964], \"f107\", \"M201.4 342.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 274.7 86.6 137.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faCarTunnel = {\n prefix: 'fas',\n iconName: 'car-tunnel',\n icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256V448c0 35.3 28.7 64 64 64h42.8c-6.6-5.9-10.8-14.4-10.8-24V376c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7H313.6c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6V488c0 9.6-4.2 18.1-10.8 24H448c35.3 0 64-28.7 64-64V256C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24V448H160v40c0 9.6-4.2 18.1-10.8 24H362.8zM190.8 277.5L177 320H335l-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5H198.4c-3.5 0-6.5 2.2-7.6 5.5zM168 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm200-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M0 224.2C0 100.6 100.2 0 224 0h24c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8H448v0 32L339.2 365.6c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9L448 416v16c0 26.5-21.5 48-48 48H320v8c0 13.3-10.7 24-24 24H256v0H96c-17.7 0-32-14.3-32-32V407.3c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM592 480a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 312a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384H96c17.7 0 32-14.3 32-32V128c0-17.7-14.3-32-32-32H32C14.3 96 0 110.3 0 128V352c0 17.7 14.3 32 32 32z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H392.6c-5.4-9.4-8.6-20.3-8.6-32V352c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7H178.3zM528 240c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faArrowRightLong = {\n prefix: 'fas',\n iconName: 'arrow-right-long',\n icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nvar faLongArrowRight = faArrowRightLong;\nvar faAnchorCircleXmark = {\n prefix: 'fas',\n iconName: 'anchor-circle-xmark',\n icon: [640, 512, [], \"e4ac\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2H320V368 240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faEllipsis = {\n prefix: 'fas',\n iconName: 'ellipsis',\n icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faEllipsisH = faEllipsis;\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M215.5 224c29.2-18.4 48.5-50.9 48.5-88c0-57.4-46.6-104-104-104S56 78.6 56 136c0 37.1 19.4 69.6 48.5 88H96c-17.7 0-32 14.3-32 32c0 16.5 12.5 30 28.5 31.8L80 400H240L227.5 287.8c16-1.8 28.5-15.3 28.5-31.8c0-17.7-14.3-32-32-32h-8.5zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512H281.4c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L256 432H64L22.6 473.4z\"]\n};\nvar faKitMedical = {\n prefix: 'fas',\n iconName: 'kit-medical',\n icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H96V32H64zm64 0V480H448V32H128zM512 480c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H480V480h32zM256 176c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V288H208c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16h48V176z\"]\n};\nvar faFirstAid = faKitMedical;\nvar faPersonThroughWindow = {\n prefix: 'fas',\n iconName: 'person-through-window',\n icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0H64V64zm288 0l224 0V384H508.3l-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320H379.2l42.7 64H592c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48V400c0 26.5 21.5 48 48 48H308.2l33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0H192s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [129520], \"f552\", \"M176 88v40H336V88c0-4.4-3.6-8-8-8H184c-4.4 0-8 3.6-8 8zm-48 40V88c0-30.9 25.1-56 56-56H328c30.9 0 56 25.1 56 56v40h28.1c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9V304H384V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H192V288c0-17.7-14.3-32-32-32s-32 14.3-32 32v16H0V227.9c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1H128zM0 416V336H128v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H320v16c0 17.7 14.3 32 32 32s32-14.3 32-32V336H512v80c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\"]\n};\nvar faHandsHoldingCircle = {\n prefix: 'fas',\n iconName: 'hands-holding-circle',\n icon: [640, 512, [], \"e4fb\", \"M320 0a128 128 0 1 1 0 256A128 128 0 1 1 320 0zM40 64c22.1 0 40 17.9 40 40v40 80 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2 0 0 25.3 25.3c21 21 32.8 49.5 32.8 79.2V464c0 26.5-21.5 48-48 48H173.3c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5V224 160 104C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40v56 64V325.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7H400c-26.5 0-48-21.5-48-48V385.1c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3 0 0 15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3V224 144 104c0-22.1 17.9-40 40-40z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96v3.6c0 15.7-12.7 28.4-28.4 28.4H188.4c-15.7 0-28.4-12.7-28.4-28.4V96c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4H312c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6V240c0-8.8-7.2-16-16-16s-16 7.2-16 16V479.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H96.3c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96v32H576V96c0-35.3-28.7-64-64-64H64zM576 224H0V416c0 35.3 28.7 64 64 64H512c35.3 0 64-28.7 64-64V224zM112 352h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16H368c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faCreditCardAlt = faCreditCard;\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192H402.9l-26.1-74.6C372.3 104.6 360.2 96 346.6 96H165.4c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32H346.6c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2V400v48c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V400H96v48c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V400 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faAutomobile = faCar;\nvar faHandHoldingHand = {\n prefix: 'fas',\n iconName: 'hand-holding-hand',\n icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32H384 544c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H507.2l-44.9 36c-22.7 18.2-50.9 28-80 28H304 288 224c-17.7 0-32-14.3-32-32s14.3-32 32-32h64 16c8.8 0 16-7.2 16-16s-7.2-16-16-16H183.4L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160l0 0 .9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5H192 32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32H68.8l44.9-36c22.7-18.2 50.9-28 80-28H272h16 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H288 272c-8.8 0-16 7.2-16 16s7.2 16 16 16H392.6l119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352l0 0-.9 0c.3 0 .6 0 .9 0z\"]\n};\nvar faBookOpenReader = {\n prefix: 'fas',\n iconName: 'book-open-reader',\n icon: [512, 512, [\"book-reader\"], \"f5da\", \"M160 96a96 96 0 1 1 192 0A96 96 0 1 1 160 96zm80 152V512l-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427V224c0-17.7 14.3-32 32-32H62.3c63.6 0 125.6 19.6 177.7 56zm32 264V248c52.1-36.4 114.1-56 177.7-56H480c17.7 0 32 14.3 32 32V427c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nvar faBookReader = faBookOpenReader;\nvar faMountainSun = {\n prefix: 'fas',\n iconName: 'mountain-sun',\n icon: [640, 512, [], \"e52f\", \"M560 160A80 80 0 1 0 560 0a80 80 0 1 0 0 160zM55.9 512H381.1h75H578.9c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nvar faArrowsLeftRightToLine = {\n prefix: 'fas',\n iconName: 'arrows-left-right-to-line',\n icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96V416c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [512, 512, [], \"f6cf\", \"M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7V295.3c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4V171.7zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9v52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8V452.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9H183.1c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176H337.6c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2h-3.2c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nvar faTruckDroplet = {\n prefix: 'fas',\n iconName: 'truck-droplet',\n icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nvar faFileCircleXmark = {\n prefix: 'fas',\n iconName: 'file-circle-xmark',\n icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nvar faTemperatureArrowUp = {\n prefix: 'fas',\n iconName: 'temperature-arrow-up',\n icon: [576, 512, [\"temperature-up\"], \"e040\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48V276.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5V112zM176 0C114.1 0 64 50.1 64 112V276.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6V112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3V112c0-8.8-7.2-16-16-16s-16 7.2-16 16V322.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM480 160h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8h32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V160z\"]\n};\nvar faTemperatureUp = faTemperatureArrowUp;\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [127941], \"f5a2\", \"M4.1 38.2C1.4 34.2 0 29.4 0 24.6C0 11 11 0 24.6 0H133.9c11.2 0 21.7 5.9 27.4 15.5l68.5 114.1c-48.2 6.1-91.3 28.6-123.4 61.9L4.1 38.2zm503.7 0L405.6 191.5c-32.1-33.3-75.2-55.8-123.4-61.9L350.7 15.5C356.5 5.9 366.9 0 378.1 0H487.4C501 0 512 11 512 24.6c0 4.8-1.4 9.6-4.1 13.6zM80 336a176 176 0 1 1 352 0A176 176 0 1 1 80 336zm184.4-94.9c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32V320H288V160c0-17.7 14.3-32 32-32H544c53 0 96 43 96 96V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V416H352 320 64v32c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faSquareH = {\n prefix: 'fas',\n iconName: 'square-h',\n icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM336 152V256 360c0 13.3-10.7 24-24 24s-24-10.7-24-24V280H160l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24v80H288V152c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faHSquare = faSquareH;\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-144a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nvar faTemperatureFull = {\n prefix: 'fas',\n iconName: 'temperature-full',\n icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V112c0-8.8 7.2-16 16-16s16 7.2 16 16V322.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faTemperature4 = faTemperatureFull;\nvar faThermometer4 = faTemperatureFull;\nvar faThermometerFull = faTemperatureFull;\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32V51.2C119 66 64 130.6 64 208v18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416H416c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3H224 160c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z\"]\n};\nvar faPlugCircleXmark = {\n prefix: 'fas',\n iconName: 'plug-circle-xmark',\n icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V172.9l122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.5 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1V480c0 17.7-14.3 32-32 32H240c-17.7 0-32-14.3-32-32V339.1L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4V32z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M228.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C76.1 30.2 64 46 64 64c0 107.4 37.8 206 100.8 283.1L9.2 469.1c-10.4 8.2-12.3 23.3-4.1 33.7s23.3 12.3 33.7 4.1l592-464c10.4-8.2 12.3-23.3 4.1-33.7s-23.3-12.3-33.7-4.1L253 278c-17.8-21.5-32.9-45.2-45-70.7L257.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96zm96.8 319l-91.3 72C310.7 476 407.1 512 512 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L368.7 368c-15-7.1-29.3-15.2-43-24.3z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM160 352c0-17.7 14.3-32 32-32V304c0-44.2 35.8-80 80-80H416c17.7 0 32-14.3 32-32V160 69.5c37.3 13.2 64 48.7 64 90.5v32c0 53-43 96-96 96H272c-8.8 0-16 7.2-16 16v16c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V352z\"]\n};\nvar faHandshakeAngle = {\n prefix: 'fas',\n iconName: 'handshake-angle',\n icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M544 248v3.3l69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5H296c-37.1 0-67.6 28-71.6 64H224V248c0 22.1 17.9 40 40 40s40-17.9 40-40V176c0 0 0-.1 0-.1V160l16 0 136 0c0 0 0 0 .1 0H464c44.2 0 80 35.8 80 80v8zM336 192v56c0 39.8-32.2 72-72 72s-72-32.2-72-72V129.4c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1H384c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16H432c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8v-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z\"]\n};\nvar faHandsHelping = faHandshakeAngle;\nvar faLocationDot = {\n prefix: 'fas',\n iconName: 'location-dot',\n icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faMapMarkerAlt = faLocationDot;\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nvar faPersonSwimming = {\n prefix: 'fas',\n iconName: 'person-swimming',\n icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-26.9 0-52.3 6.6-74.5 18.4zM160 160A64 64 0 1 1 32 160a64 64 0 1 1 128 0zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faSwimmer = faPersonSwimming;\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nvar faDroplet = {\n prefix: 'fas',\n iconName: 'droplet',\n icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0h1.8c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z\"]\n};\nvar faTint = faDroplet;\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7H288h9.4H512c17.7 0 32-14.3 32-32s-14.3-32-32-32H387.9L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416H288l-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nvar faEarthAmericas = {\n prefix: 'fas',\n iconName: 'earth-americas',\n icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5v39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9v39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7v-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1H257c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faEarth = faEarthAmericas;\nvar faEarthAmerica = faEarthAmericas;\nvar faGlobeAmericas = faEarthAmericas;\nvar faPersonBurst = {\n prefix: 'fas',\n iconName: 'person-burst',\n icon: [640, 512, [], \"e53b\", \"M480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H465.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6V138.8C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144v30.6l0 0v1.3l0 0 0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448H320c88.4 0 160-71.6 160-160V128l29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3H400c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 160c-8.8 0-16 7.2-16 16V336c0 8.8 7.2 16 16 16H464c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H80zM0 176c0-44.2 35.8-80 80-80H464c44.2 0 80 35.8 80 80v16c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32v16c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V176z\"]\n};\nvar faBattery0 = faBatteryEmpty;\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6V96H128V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64H288V48c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0H176c-26.5 0-48 21.5-48 48V64zM320 96V240c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304V96H320zM512 64V48c0-26.5-21.5-48-48-48H368c-26.5 0-48 21.5-48 48V64H512z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V323.9c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32H121zm0 64H391l48 192H387.8c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7H195.8c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7H73L121 96z\"]\n};\nvar faSection = {\n prefix: 'fas',\n iconName: 'section',\n icon: [256, 512, [], \"e447\", \"M64.9 96C67.1 84.4 73.7 76.2 86 70.6c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8C123-2.7 88.3-.6 59.7 12.3C29.9 25.8 7.5 50.9 1.6 86.5c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C22.3 194.2 6.5 215.1 1.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31l0 0 3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2l0 0c-4.3-1.5-8.5-2.9-12.3-4.2C25.3 420 7.2 429.1 1.6 445.8s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6l0 0 .2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5c-.2-.1-.4-.1-.6-.2l-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nvar faGaugeHigh = {\n prefix: 'fas',\n iconName: 'gauge-high',\n icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faTachometerAlt = faGaugeHigh;\nvar faTachometerAltFast = faGaugeHigh;\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M215.4 96H144 107.8 96v8.8V144v40.4 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3V96c0-26.5 21.5-48 48-48h76.6l49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48H416c26.5 0 48 21.5 48 48v44.3l22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4v-89V144 104.8 96H404.2 368 296.6 215.4zM0 448V242.1L217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1V448v0c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64v0zM176 160H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48H400c26.5 0 48 21.5 48 48V512H368V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H192V48zM48 96H160V512H48c-26.5 0-48-21.5-48-48V320H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V224H80c8.8 0 16-7.2 16-16s-7.2-16-16-16H0V144c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v48H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H560c-8.8 0-16 7.2-16 16s7.2 16 16 16h80V464c0 26.5-21.5 48-48 48H480V96H592zM312 64c-8.8 0-16 7.2-16 16v24H272c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24v24c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V152h24c8.8 0 16-7.2 16-16V120c0-8.8-7.2-16-16-16H344V80c0-8.8-7.2-16-16-16H312z\"]\n};\nvar faHospitalAlt = faHospital;\nvar faHospitalWide = faHospital;\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [448, 512, [9820], \"f447\", \"M32 192V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V88c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V48c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16V192c0 10.1-4.7 19.6-12.8 25.6L352 256l16 144H80L96 256 44.8 217.6C36.7 211.6 32 202.1 32 192zm176 96h32c8.8 0 16-7.2 16-16V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v48c0 8.8 7.2 16 16 16zM22.6 473.4L64 432H384l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H38.6C26.1 512 16 501.9 16 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nvar faBarsStaggered = {\n prefix: 'fas',\n iconName: 'bars-staggered',\n icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H96c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faReorder = faBarsStaggered;\nvar faStream = faBarsStaggered;\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.5-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9l0 0v0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4l0 0-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nvar faPersonWalkingWithCane = {\n prefix: 'fas',\n iconName: 'person-walking-with-cane',\n icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6v43.2c0 17 6.7 33.3 18.7 45.3L224 397.3V480c0 17.7 14.3 32 32 32s32-14.3 32-32V390.6c0-12.7-5.1-24.9-14.1-33.9L224 306.7V213.3l70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128H167.6zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nvar faBlind = faPersonWalkingWithCane;\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [129345], \"f569\", \"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96C114.6 96 0 128 0 208V368c0 31.3 27.4 58.8 72 78.7V344c0-13.3 10.7-24 24-24s24 10.7 24 24V463.4c33 8.9 71.1 14.5 112 16.1V376c0-13.3 10.7-24 24-24s24 10.7 24 24V479.5c40.9-1.6 79-7.2 112-16.1V344c0-13.3 10.7-24 24-24s24 10.7 24 24V446.7c44.6-19.9 72-47.4 72-78.7V208c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C458.4 181.8 464 197.4 464 208c0 .8-2.7 17.2-46 35.9C379.1 260.7 322 272 256 272s-123.1-11.3-162-28.1C50.7 225.2 48 208.8 48 208c0-10.6 5.6-26.2 44.4-41.3C130.6 151.9 187.8 144 256 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [127848], \"f810\", \"M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16H80c-26.5 0-48 21.5-48 48s21.5 48 48 48h53.5 181H368c26.5 0 48-21.5 48-48s-21.5-48-48-48h-.9zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288H96z\"]\n};\nvar faHeartCircleBolt = {\n prefix: 'fas',\n iconName: 'heart-circle-bolt',\n icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356H488c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380H376c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64v96h64V64H386.7L416 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0H192c-35.3 0-64 28.7-64 64zM0 160V480c0 17.7 14.3 32 32 32H64c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zm480 32H128V480c0 17.7 14.3 32 32 32H480c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM256 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [182], \"f1dd\", \"M192 32h64H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352H288V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H192c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nvar faCheckToSlot = {\n prefix: 'fas',\n iconName: 'check-to-slot',\n icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48H432c26.5 0 48 21.5 48 48V384H96V80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48H64V416H512V288h16c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336z\"]\n};\nvar faVoteYea = faCheckToSlot;\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8V0zM429.9 512c1.1 .1 2.1 .1 3.2 0h-3.2z\"]\n};\nvar faBoxesStacked = {\n prefix: 'fas',\n iconName: 'boxes-stacked',\n icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M248 0H208c-26.5 0-48 21.5-48 48V160c0 35.3 28.7 64 64 64H352c35.3 0 64-28.7 64-64V48c0-26.5-21.5-48-48-48H328V80c0 8.8-7.2 16-16 16H264c-8.8 0-16-7.2-16-16V0zM64 256c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H184v80c0 8.8-7.2 16-16 16H120c-8.8 0-16-7.2-16-16V256H64zM352 512H512c35.3 0 64-28.7 64-64V320c0-35.3-28.7-64-64-64H472v80c0 8.8-7.2 16-16 16H408c-8.8 0-16-7.2-16-16V256H352c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2V464c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z\"]\n};\nvar faBoxes = faBoxesStacked;\nvar faBoxesAlt = faBoxesStacked;\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nvar faChain = faLink;\nvar faEarListen = {\n prefix: 'fas',\n iconName: 'ear-listen',\n icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1-.1 0 0 0c0 0 0 0-14.3 28.6L398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78V400c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112v-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nvar faAssistiveListeningSystems = faEarListen;\nvar faTreeCity = {\n prefix: 'fas',\n iconName: 'tree-city',\n icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48V192h40V120c0-13.3 10.7-24 24-24s24 10.7 24 24v72h24c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H432 336c-26.5 0-48-21.5-48-48V48zm64 32v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368zM352 272v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H528zM512 368v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H528c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80H160V480c0 18-15 32-32 32c-18 0-32-14-32-32V320H80c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z\"]\n};\nvar faRupiahSign = {\n prefix: 'fas',\n iconName: 'rupiah-sign',\n icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256zm256-96h80c61.9 0 112 50.1 112 112s-50.1 112-112 112H352v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V352 192c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48H352v96h48z\"]\n};\nvar faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n};\nvar faSearch = faMagnifyingGlass;\nvar faTableTennisPaddleBall = {\n prefix: 'fas',\n iconName: 'table-tennis-paddle-ball',\n icon: [640, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M480 288c-50.1 0-93.6 28.8-114.6 70.8L132.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C535.8 297.6 509 288 480 288zM113.3 151.9L354.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3H357c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L152.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32c-6.3-6.3-9.7-14.9-9.4-23.8s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8c-24-24-37.5-56.6-37.5-90.5v-2.7c0-22.8 6.1-44.9 17.3-64.3zM480 320a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nvar faPingPongPaddleBall = faTableTennisPaddleBall;\nvar faTableTennis = faTableTennisPaddleBall;\nvar faPersonDotsFromLine = {\n prefix: 'fas',\n iconName: 'person-dots-from-line',\n icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176A88 88 0 1 0 288 0a88 88 0 1 0 0 176zM78.7 372.9c15-12.5 50-34.4 97.3-50.1V432H400V322.7c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24H552c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM224 280a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM96 240a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm368 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faDiagnoses = faPersonDotsFromLine;\nvar faTrashCanArrowUp = {\n prefix: 'fas',\n iconName: 'trash-can-arrow-up',\n icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416V448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestoreAlt = faTrashCanArrowUp;\nvar faNairaSign = {\n prefix: 'fas',\n iconName: 'naira-sign',\n icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64V256H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H228.2l97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6V320h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H384V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V256H262.5L122.6 46.3zM305.1 320H320v22.3L305.1 320zM185.5 256H128V169.7L185.5 256z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48H69.5c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5H488c13.3 0 24-10.7 24-24s-10.7-24-24-24H199.7c-11.5 0-21.4-8.2-23.6-19.5L170.7 288H459.2c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32H360V134.1l23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23V32H120.1C111 12.8 91.6 0 69.5 0H24zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24V96H48C21.5 96 0 117.5 0 144V300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9V464c0 26.5 21.5 48 48 48H304c26.5 0 48-21.5 48-48V371.9c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9V144c0-26.5-21.5-48-48-48H320c0-17.7-14.3-32-32-32s-32 14.3-32 32H224c0-17.7-14.3-32-32-32s-32 14.3-32 32H112V24zm0 136H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faFilePen = {\n prefix: 'fas',\n iconName: 'file-pen',\n icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V285.7l-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faFileEdit = faFilePen;\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.3-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8V488c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488V24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96zM80 352c0 8.8 7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16H288c8.8 0 16-7.2 16-16s-7.2-16-16-16H96z\"]\n};\nvar faSquarePen = {\n prefix: 'fas',\n iconName: 'square-pen',\n icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nvar faPenSquare = faSquarePen;\nvar faPencilSquare = faSquarePen;\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v72H144V56zm176 72H288V56c0-30.9-25.1-56-56-56H152C121.1 0 96 25.1 96 56v72H64c-35.3 0-64 28.7-64 64V416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32H256c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64zM112 224H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128H272c8.8 0 16 7.2 16 16s-7.2 16-16 16H112c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faPersonCircleExclamation = {\n prefix: 'fas',\n iconName: 'person-circle-exclamation',\n icon: [576, 512, [], \"e53f\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm368 96H96V320H448V192z\"]\n};\nvar faBattery = faBatteryFull;\nvar faBattery5 = faBatteryFull;\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [128369, 9760], \"f714\", \"M368 128c0 44.4-25.4 83.5-64 106.4V256c0 17.7-14.3 32-32 32H176c-17.7 0-32-14.3-32-32V234.4c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z\"]\n};\nvar faCodeCompare = {\n prefix: 'fas',\n iconName: 'code-compare',\n icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9v40h16c35.3 0 64-28.7 64-64V153.3C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3V320c0 70.7-57.3 128-128 128H320v40zM456 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9V128H176c-35.3 0-64 28.7-64 64V358.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3V192c0-70.7 57.3-128 128-128h16V24zM56 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zM64 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faListDots = faListUl;\nvar faSchoolLock = {\n prefix: 'fas',\n iconName: 'school-lock',\n icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96H592c26.5 0 48 21.5 48 48V272c0-61.9-50.1-112-112-112s-112 50.1-112 112v24.6c-19.1 11.1-32 31.7-32 55.4H320.3l-.3 0c-35.3 0-64 28.7-64 64v96h64v0H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48H166.3L302.2 5.4zM80 208v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm0 128v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120v16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H320c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32v48h64V272c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80v48c17.7 0 32 14.3 32 32V480c0 17.7-14.3 32-32 32H448c-17.7 0-32-14.3-32-32V352c0-17.7 14.3-32 32-32V272z\"]\n};\nvar faTowerCell = {\n prefix: 'fas',\n iconName: 'tower-cell',\n icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448H398.3l20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384H206.8l14.5-32H354.7l14.5 32zM288 205.3L325.6 288H250.4L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nvar faDownLong = {\n prefix: 'fas',\n iconName: 'down-long',\n icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M2 334.5c-3.8 8.8-2 19 4.6 26l136 144c4.5 4.8 10.8 7.5 17.4 7.5s12.9-2.7 17.4-7.5l136-144c6.6-7 8.4-17.2 4.6-26s-12.5-14.5-22-14.5l-72 0 0-288c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32l0 288-72 0c-9.6 0-18.2 5.7-22 14.5z\"]\n};\nvar faLongArrowAltDown = faDownLong;\nvar faRankingStar = {\n prefix: 'fas',\n iconName: 'ranking-star',\n icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V288c0-17.7-14.3-32-32-32H256zM32 320c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H160c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32H32zm416 96v64c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V416c0-17.7-14.3-32-32-32H480c-17.7 0-32 14.3-32 32z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32V48h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H256v48H408c22.1 0 40 17.9 40 40c0 5.3-1 10.5-3.1 15.4L368 400H80L3.1 215.4C1 210.5 0 205.3 0 200c0-22.1 17.9-40 40-40H192V112H176c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V32c0-17.7 14.3-32 32-32zM38.6 473.4L80 432H368l41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6H54.6C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nvar faPersonHarassing = {\n prefix: 'fas',\n iconName: 'person-harassing',\n icon: [576, 512, [], \"e549\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9V480c0 17.7 14.3 32 32 32s32-14.3 32-32V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V235.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7H145.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344v58.7l-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9V344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16h56c8.8 0 16-7.2 16-16s-7.2-16-16-16H304c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nvar faBrazilianRealSign = {\n prefix: 'fas',\n iconName: 'brazilian-real-sign',\n icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32V50.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5h-1.7c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4v3.4c0 51.2-33.6 94.6-80 109.2V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V460.6c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5v-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2V32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32h80c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320H64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V288 64zM64 256h48c44.2 0 80-35.8 80-80s-35.8-80-80-80H64V256z\"]\n};\nvar faLandmarkDome = {\n prefix: 'fas',\n iconName: 'landmark-dome',\n icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0h16c13.3 0 24 10.7 24 24V34.7C368.4 48.1 431.9 111.6 445.3 192H448c17.7 0 32 14.3 32 32s-14.3 32-32 32H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h2.7C80.1 111.6 143.6 48.1 224 34.7V24c0-13.3 10.7-24 24-24zM64 288h64V416h40V288h64V416h48V288h64V416h40V288h64V420.3c.6 .3 1.2 .7 1.7 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512H32c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1V288z\"]\n};\nvar faLandmarkAlt = faLandmarkDome;\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2V448c0 17.7 14.3 32 32 32s32-14.3 32-32V141.2L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64V352H576V64H64zM0 64C0 28.7 28.7 0 64 0H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM128 448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faTelevision = faTv;\nvar faTvAlt = faTv;\nvar faShrimp = {\n prefix: 'fas',\n iconName: 'shrimp',\n icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64h1c3.7 88.9 77 160 167 160h56V128H264 88.8 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H464c8.8 0 16-7.2 16-16s-7.2-16-16-16H64zM224 456c0 13.3 10.7 24 24 24h72V407.8l-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3v69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128H320V320h18.3c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faListCheck = {\n prefix: 'fas',\n iconName: 'list-check',\n icon: [512, 512, [\"tasks\"], \"f0ae\", \"M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faTasks = faListCheck;\nvar faJugDetergent = {\n prefix: 'fas',\n iconName: 'jug-detergent',\n icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24V48h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H88C74.7 96 64 85.3 64 72s10.7-24 24-24h8V24zM0 256c0-70.7 57.3-128 128-128H256c70.7 0 128 57.3 128 128V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256zm256 0v96c0 17.7 14.3 32 32 32s32-14.3 32-32V256c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320H224c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n};\nvar faUserCircle = faCircleUser;\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3H178.3zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7V273.8L591.4 312z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32h32c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c53 0 96-43 96-96s-43-96-96-96H320c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H384c-17.7 0-32 14.3-32 32zM128 512h32c53 0 96-43 96-96s-43-96-96-96H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H160c17.7 0 32 14.3 32 32s-14.3 32-32 32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faCarBurst = {\n prefix: 'fas',\n iconName: 'car-burst',\n icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zm-17 131a24 24 0 1 1 -12.4 46.4 24 24 0 1 1 12.4-46.4zm217.9 83.2A24 24 0 1 1 545 358.1a24 24 0 1 1 -46.4-12.4z\"]\n};\nvar faCarCrash = faCarBurst;\nvar faY = {\n prefix: 'fas',\n iconName: 'y',\n icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V298.3L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nvar faPersonSnowboarding = {\n prefix: 'fas',\n iconName: 'person-snowboarding',\n icon: [512, 512, [127938, \"snowboarding\"], \"f7ce\", \"M209.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6H472c13.3 0 24 10.7 24 24s-10.7 24-24 24H443.8c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L192 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM139 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.3-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L139 350.1zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faSnowboarding = faPersonSnowboarding;\nvar faTruckFast = {\n prefix: 'fas',\n iconName: 'truck-fast',\n icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48V96H16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 272c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 48c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 240c8.8 0 16 7.2 16 16s-7.2 16-16 16H64 16c-8.8 0-16 7.2-16 16s7.2 16 16 16H64 208c8.8 0 16 7.2 16 16s-7.2 16-16 16H64V416c0 53 43 96 96 96s96-43 96-96H384c0 53 43 96 96 96s96-43 96-96h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V288 256 237.3c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7H416V48c0-26.5-21.5-48-48-48H112zM544 237.3V256H416V160h50.7L544 237.3zM160 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faShippingFast = faTruckFast;\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9V160c0 70.7-57.3 128-128 128s-128-57.3-128-128V102.9L48 93.3v65.1l15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9H16c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4V86.6C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6z\"]\n};\nvar faCircleHalfStroke = {\n prefix: 'fas',\n iconName: 'circle-half-stroke',\n icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192V448c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faAdjust = faCircleHalfStroke;\nvar faClapperboard = {\n prefix: 'fas',\n iconName: 'clapperboard',\n icon: [512, 512, [], \"e131\", \"M448 32H361.9l-1 1-127 127h92.1l1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128V96c0-15.1-5.3-29.1-14-40l-104 104H512zM294.1 32H201.9l-1 1L73.9 160h92.1l1-1 127-127zM64 32C28.7 32 0 60.7 0 96v64H6.1l1-1 127-127H64zM512 192H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192z\"]\n};\nvar faCircleRadiation = {\n prefix: 'fas',\n iconName: 'circle-radiation',\n icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 64a192 192 0 1 1 0 384 192 192 0 1 1 0-384zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faRadiationAlt = faCircleRadiation;\nvar faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nvar faBaseballBall = faBaseball;\nvar faJetFighterUp = {\n prefix: 'fas',\n iconName: 'jet-fighter-up',\n icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2v77l-144 84V280c0-13.3-10.7-24-24-24s-24 10.7-24 24v56 32 24c0 13.3 10.7 24 24 24s24-10.7 24-24v-8H192v32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12v16c0 8.8 7.2 16 16 16h96V448c0-8.8 7.2-16 16-16s16 7.2 16 16v64h96c8.8 0 16-7.2 16-16V480c0-4.6-2-9-5.5-12L320 416.7V384H464v8c0 13.3 10.7 24 24 24s24-10.7 24-24V368 336 280c0-13.3-10.7-24-24-24s-24 10.7-24 24v18.8l-144-84v-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nvar faDiagramProject = {\n prefix: 'fas',\n iconName: 'diagram-project',\n icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48V96H384V80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H432c-26.5 0-48-21.5-48-48V160H192v16c0 1.7-.1 3.4-.3 5L272 288h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V336c0-1.7 .1-3.4 .3-5L144 224H48c-26.5 0-48-21.5-48-48V80z\"]\n};\nvar faProjectDiagram = faDiagramProject;\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [512, 512, [], \"f0c5\", \"M272 0H396.1c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9V336c0 26.5-21.5 48-48 48H272c-26.5 0-48-21.5-48-48V48c0-26.5 21.5-48 48-48zM48 128H192v64H64V448H256V416h64v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48z\"]\n};\nvar faVolumeXmark = {\n prefix: 'fas',\n iconName: 'volume-xmark',\n icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64V448c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64h67.8L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nvar faVolumeMute = faVolumeXmark;\nvar faVolumeTimes = faVolumeXmark;\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V128c0-17.7 14.3-32 32-32s32 14.3 32 32V323.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512H348.8c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6V64c0-17.7 14.3-32 32-32s32 14.3 32 32V240c0 8.8 7.2 16 16 16s16-7.2 16-16V32c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nvar faGrip = {\n prefix: 'fas',\n iconName: 'grip',\n icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40H40c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40H88c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40H200c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328zm32-192v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V136c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40H360c-22.1 0-40 17.9-40 40v48c0 22.1 17.9 40 40 40h48c22.1 0 40-17.9 40-40V328z\"]\n};\nvar faGripHorizontal = faGrip;\nvar faShareFromSquare = {\n prefix: 'fas',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M352 224H305.5c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8h-2.5c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144h80V34.7C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2H384c-17.7 0-32-14.3-32-32V224zM80 96c-8.8 0-16 7.2-16 16V432c0 8.8 7.2 16 16 16H400c8.8 0 16-7.2 16-16V384c0-17.7 14.3-32 32-32s32 14.3 32 32v48c0 44.2-35.8 80-80 80H80c-44.2 0-80-35.8-80-80V112C0 67.8 35.8 32 80 32h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H80z\"]\n};\nvar faShareSquare = faShareFromSquare;\nvar faChildCombatant = {\n prefix: 'fas',\n iconName: 'child-combatant',\n icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176 128A64 64 0 1 0 176 0a64 64 0 1 0 0 128zm-8 352V352h16V480c0 17.7 14.3 32 32 32s32-14.3 32-32V300.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9H169.8c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5V480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0H432 416c-8.8 0-16 7.2-16 16s7.2 16 16 16V132.3c-9.6 5.5-16 15.9-16 27.7v32c-17.7 0-32 14.3-32 32V368c0 17.7 14.3 32 32 32h16v96c0 8.8 7.2 16 16 16h59.5c10.4 0 18-9.8 15.5-19.9L484 400h44c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H480V325.3l53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2V208c0-8.8-7.2-16-16-16H512c-8.8 0-16 7.2-16 16v56l-16 5.3V160c0-11.8-6.4-22.2-16-27.7V16c0-8.8-7.2-16-16-16z\"]\n};\nvar faChildRifle = faChildCombatant;\nvar faGun = {\n prefix: 'fas',\n iconName: 'gun',\n icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24v8H32C14.3 64 0 78.3 0 96V208c0 17.7 14.3 32 32 32H42c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480h96c14.7 0 27.5-10 31-24.2L217 352H321.4c23.7 0 44.8-14.9 52.7-37.2L400.9 240H432c8.5 0 16.6-3.4 22.6-9.4L477.3 208H544c17.7 0 32-14.3 32-32V96c0-17.7-14.3-32-32-32H528V56zM321.4 304H229l16-64h105l-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128H464c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faSquarePhone = {\n prefix: 'fas',\n iconName: 'square-phone',\n icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nvar faPhoneSquare = faSquarePhone;\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7 14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z\"]\n};\nvar faAdd = faPlus;\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V96h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7 14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H64V352zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h64v64c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32H320zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32v64H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32V352z\"]\n};\nvar faComputer = {\n prefix: 'fas',\n iconName: 'computer',\n icon: [640, 512, [], \"e4e5\", \"M384 96V320H64L64 96H384zM64 32C28.7 32 0 60.7 0 96V320c0 35.3 28.7 64 64 64H181.3l-10.7 32H96c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H277.3l-10.7-32H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm464 0c-26.5 0-48 21.5-48 48V432c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H528zm16 64h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16s-7.2 16-16 16H544c-8.8 0-16-7.2-16-16zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [384, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\"]\n};\nvar faClose = faXmark;\nvar faMultiply = faXmark;\nvar faRemove = faXmark;\nvar faTimes = faXmark;\nvar faArrowsUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-up-down-left-right',\n icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4V224H109.3l9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4H224V402.7l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4V288H402.7l-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4H288V109.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nvar faArrows = faArrowsUpDownLeftRight;\nvar faChalkboardUser = {\n prefix: 'fas',\n iconName: 'chalkboard-user',\n icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64H576c35.3 0 64 28.7 64 64V352c0 35.3-28.7 64-64 64H336.8c-11.8-25.5-29.9-47.5-52.4-64H384V320c0-17.7 14.3-32 32-32h64c17.7 0 32 14.3 32 32v32h64V64L224 64v49.1C205.2 102.2 183.3 96 160 96V64zm0 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM133.3 352h53.3C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7H26.7C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nvar faChalkboardTeacher = faChalkboardUser;\nvar faPesoSign = {\n prefix: 'fas',\n iconName: 'peso-sign',\n icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64v64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64v96c0 17.7 14.3 32 32 32s32-14.3 32-32V384h80c68.4 0 127.7-39 156.8-96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32h-.7c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16h.7c17.7 0 32-14.3 32-32s-14.3-32-32-32H332.8C303.7 71 244.4 32 176 32H64zm190.4 96H96V96h80c30.5 0 58.2 12.2 78.4 32zM96 192H286.9c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16H96V192zm158.4 96c-20.2 19.8-47.9 32-78.4 32H96V288H254.4z\"]\n};\nvar faBuildingShield = {\n prefix: 'fas',\n iconName: 'building-shield',\n icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V207l-42.4 17H304 272c-8.8 0-16 7.2-16 16v32 24.2V304c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9H240V432c0-26.5-21.5-48-48-48s-48 21.5-48 48v80H48c-26.5 0-48-21.5-48-48V48zM80 224c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H176c-8.8 0-16 7.2-16 16zM64 112v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H176zm80 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H272c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8V461.7c68.2-33 91.5-99 95.4-149.7z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [448, 512, [], \"f77c\", \"M152 88a72 72 0 1 1 144 0A72 72 0 1 1 152 88zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25V288H128V251.7c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nvar faUsersLine = {\n prefix: 'fas',\n iconName: 'users-line',\n icon: [640, 512, [], \"e592\", \"M211.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM32 256c0 17.7 14.3 32 32 32h85.6c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4H96c-35.3 0-64 28.7-64 64zm461.6 32H576c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64H448c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4h-96c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32h224c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM321.6 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320 288 216zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H320c-35.3 0-64-28.7-64-64V320 288 216z\"]\n};\nvar faQuoteLeftAlt = faQuoteLeft;\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64H266.3c26.2 0 49.7 15.9 59.4 40.2L373.7 160H480V126.2c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9V160h56c22.1 0 40 17.9 40 40v45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48H352c0 17.7-14.3 32-32 32h-8.2c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8V480c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32v-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1H32c-17.7 0-32-14.3-32-32V320c0-17.7 14.3-32 32-32h8.2c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6V192 160 64zm170.3 0H160v96h32H304.7L266.3 64zM176 256a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM528 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nvar faTrashArrowUp = {\n prefix: 'fas',\n iconName: 'trash-arrow-up',\n icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0H284.2c12.1 0 23.2 6.8 28.6 17.7L320 32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32h96l7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128H416L394.8 467c-1.6 25.3-22.6 45-47.9 45H101.1c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39V408c0 13.3 10.7 24 24 24s24-10.7 24-24V273.9l39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nvar faTrashRestore = faTrashArrowUp;\nvar faArrowDownUpLock = {\n prefix: 'fas',\n iconName: 'arrow-down-up-lock',\n icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7V288H416V272c0-17.2 3.9-33.5 10.8-48H352V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3V224l-128 0H96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32H96V402.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V192h64zM288 320V448c0 17.7 14.3 32 32 32s32-14.3 32-32V320H288zm240-80c17.7 0 32 14.3 32 32v48H496V272c0-17.7 14.3-32 32-32zm-80 32v48c-17.7 0-32 14.3-32 32V480c0 17.7 14.3 32 32 32H608c17.7 0 32-14.3 32-32V352c0-17.7-14.3-32-32-32V272c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nvar faLinesLeaning = {\n prefix: 'fas',\n iconName: 'lines-leaning',\n icon: [384, 512, [], \"e51e\", \"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32V448c0 17.7 14.3 32 32 32s32-14.3 32-32V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H48z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0h64 32H470.1c21.1 0 36.4 20.1 30.9 40.4L494.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H485.8l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16H459.6l-17.5 64H336c-8.8 0-16 7.2-16 16s7.2 16 16 16h97.5L416 352H160l-8.7-96H64c-35.3 0-64-28.7-64-64V64zM145.5 192L133.8 64H64V192h81.5zM144 384H432c26.5 0 48 21.5 48 48v32c0 26.5-21.5 48-48 48H144c-26.5 0-48-21.5-48-48V432c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32H480c53 0 96 43 96 96V384c0 53-43 96-96 96H96c-53 0-96-43-96-96V128zm176 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176c0-26.5-21.5-48-48-48zM48 208v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H72c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48V312c0-13.3-10.7-24-24-24H200c-13.3 0-24 10.7-24 24v24zm176 48c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H328c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48zm80-176v24c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V208c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48V312c0-13.3-10.7-24-24-24H456c-13.3 0-24 10.7-24 24v24c0 26.5 21.5 48 48 48z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H192c35.3 0 64 28.7 64 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V160c0-70.7-57.3-128-128-128H32zM320 480c70.7 0 128-57.3 128-128V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V352c0 35.3-28.7 64-64 64H192V192c0-17.7-14.3-32-32-32s-32 14.3-32 32V448c0 17.7 14.3 32 32 32H320z\"]\n};\nvar faIls = faShekelSign;\nvar faShekel = faShekelSign;\nvar faSheqel = faShekelSign;\nvar faSheqelSign = faShekelSign;\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2V35.9L384 90.8V476.1zm32-1.2V88.4L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3V394.6c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2V423.6L32.9 474.5C17.1 480.8 0 469.2 0 452.2V117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faPhotoFilm = {\n prefix: 'fas',\n iconName: 'photo-film',\n icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0H576c35.3 0 64 28.7 64 64V288c0 35.3-28.7 64-64 64H256c-35.3 0-64-28.7-64-64V64c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6h80 48H552c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128h96V384v32c0 17.7 14.3 32 32 32H320c17.7 0 32-14.3 32-32V384H512v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V312c0-8.8-7.2-16-16-16H72zm0 104c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16H88c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H72zm336 16v16c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V416c0-8.8-7.2-16-16-16H424c-8.8 0-16 7.2-16 16z\"]\n};\nvar faPhotoVideo = faPhotoFilm;\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M448 480H64c-35.3 0-64-28.7-64-64V96C0 60.7 28.7 32 64 32H192c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0H109.6C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9l-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3V384H128V250.6c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3V384v64c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V384 252.6c-4 1-8 1.8-12.3 2.3z\"]\n};\nvar faArrowTrendUp = {\n prefix: 'fas',\n iconName: 'arrow-trend-up',\n icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32H544c17.7 0 32 14.3 32 32V288c0 17.7-14.3 32-32 32s-32-14.3-32-32V205.3L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160H384z\"]\n};\nvar faPlugCircleMinus = {\n prefix: 'fas',\n iconName: 'plug-circle-minus',\n icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s7.2-16 16-16H496c8.8 0 16 7.2 16 16z\"]\n};\nvar faSignHanging = {\n prefix: 'fas',\n iconName: 'sign-hanging',\n icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32V64l352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V128H32C14.3 128 0 113.7 0 96S14.3 64 32 64H64V32C64 14.3 78.3 0 96 0zm96 160H448c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32V192c0-17.7 14.3-32 32-32z\"]\n};\nvar faSign = faSignHanging;\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M296 136V88h48v48H296zM288 32c-26.5 0-48 21.5-48 48v4H121.6C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36h66.9c-58.9 39.6-98.9 105-104 180H80c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-3.3c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1h64c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1H496c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h64c26.5 0 48-21.5 48-48V368c0-26.5-21.5-48-48-48h-4.5c-5-75-45.1-140.4-104-180h66.9c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36H400V80c0-26.5-21.5-48-48-48H288zM88 376h48v48H88V376zm416 48V376h48v48H504z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-87.5-68.6c.5-1.7 .7-3.5 .7-5.4c0-27.6-11-54.1-30.5-73.7L512 320c-20.5-20.5-32-48.3-32-77.3V208c0-77.4-55-142-128-156.8V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V51.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM160 242.7c0 29-11.5 56.8-32 77.3l-1.5 1.5C107 341 96 367.5 96 395.2c0 11.5 9.3 20.8 20.8 20.8H406.2L160 222.1v20.7zM384 448H320 256c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM176 432h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H176c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faTabletAndroid = faTablet;\nvar faSchoolFlag = {\n prefix: 'fas',\n iconName: 'school-flag',\n icon: [576, 512, [], \"e56e\", \"M288 0H400c8.8 0 16 7.2 16 16V80c0 8.8-7.2 16-16 16H320.7l89.6 64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H336V400c0-26.5-21.5-48-48-48s-48 21.5-48 48V512H64c-35.3 0-64-28.7-64-64V224c0-35.3 28.7-64 64-64H165.7L256 95.5V32c0-17.7 14.3-32 32-32zm48 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM80 224c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H80zm368 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16H464c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H80zm384 0c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16H464z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M86.6 9.4C74.1-3.1 53.9-3.1 41.4 9.4s-12.5 32.8 0 45.3L122.7 136 30.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L148.1 481.4c37.5 37.5 98.3 37.5 135.8 0L474.3 290.9c28.1-28.1 28.1-73.7 0-101.8L322.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L168 90.7 86.6 9.4zM168 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L429.1 234.3c3.1 3.1 3.1 8.2 0 11.3L386.7 288H67.5c1.4-5.4 4.2-10.4 8.4-14.6L168 181.3z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4H336c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176v89.2z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [512, 512, [], \"f7aa\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72v22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7v-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8v32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8v-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [9001], \"f053\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-4.3 15.2c-8.3-.6-16.8 0-25.2 1.9c-7.3 1.7-14.3 3.5-21.1 5.5l-5.5-12.7c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l4.4 10.4c-16.6 6.7-31.7 14.4-45.4 22.8L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l6 9c-13.7 11-25.5 22.8-35.8 34.9l-10-8c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L65.9 155c-1.8 2.8-3.5 5.7-5.1 8.5c-6.6 11.4-11.8 22.6-16 33l-8-3.2c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l10.4 4.2c-.2 .8-.4 1.5-.5 2.3c-2.2 9.3-3.4 17.3-4.1 23.4c-.4 3.1-.6 5.7-.8 7.8c-.1 1.1-.1 2-.2 2.8l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.1 1l-.1 0L28 269.3c-.1 3.1 0 6.1 .2 9.1l-15.2 4.3C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l15.6-4.5c7.6 13.6 18.9 25 32.6 32.6L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l4.3-15.2c1.2 .1 2.4 .2 3.6 .2c15.6 .5 30.3-3.3 43-10.2l9 9c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-7.2-7.2c9.3-12.6 15.2-27.8 16.3-44.5l7.1 3c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.6-3.7c6.4-9.9 17.3-22.4 36.9-33.3l1.3 4.4c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-2.3-8.1c3.8-1.1 7.7-2.1 11.9-3.1c11.6-2.7 22.1-7.7 31.1-14.4l7.2 7.2c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-9-9c7.6-13.9 11.3-30.1 10.1-46.6l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-15.6 4.5c-7.7-13.9-19.1-25.1-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3zM112 272l-48-1.5 0 0c11.7 .4 27.3 .9 48 1.6zm16-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM322.7 489c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l4.3-15.2c8.3 .6 16.8 0 25.2-1.9c7.3-1.7 14.3-3.5 21.1-5.5l5.5 12.7c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-4.4-10.4c16.6-6.7 31.7-14.4 45.4-22.8L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-6-9c13.7-11 25.5-22.8 35.8-34.9l10 8c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574.1 357c1.8-2.8 3.5-5.7 5.1-8.5c6.6-11.4 11.8-22.6 16-33l8 3.2c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-10.4-4.2c.2-.8 .4-1.5 .5-2.3c2.2-9.3 3.4-17.3 4.1-23.4c.4-3.1 .6-5.7 .8-7.8c.1-1.1 .1-2 .2-2.8l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.1-1l.1 0 29.1 .9c.1-3.1 0-6.1-.2-9.1l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-15.6 4.5c-7.6-13.6-18.9-25-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.3 12.4l-4.3 15.2c-1.2-.1-2.4-.2-3.6-.2c-15.6-.5-30.3 3.3-43 10.2l-9-9c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l7.2 7.2c-9.3 12.6-15.2 27.8-16.3 44.5l-7.1-3c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.6 3.7c-6.4 9.9-17.3 22.4-36.9 33.3l-1.3-4.4c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l2.3 8.1c-3.8 1.1-7.7 2.1-11.9 3.1c-11.6 2.7-22.1 7.7-31.1 14.4l-7.2-7.2c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l9 9c-7.6 13.9-11.3 30.1-10.1 46.6l-15.2 4.3c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l15.6-4.5c7.7 13.9 19.1 25.1 32.6 32.6L322.7 489zM576 241.5l0 0c-11.7-.4-27.3-.9-48-1.6l48 1.5zM448 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64H160h80 46.5c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8v12 16 48c0 17.7-14.3 32-32 32H384c-17.7 0-32-14.3-32-32V402.2L273.9 352H240 160 112c-26.5 0-48-21.5-48-48s21.5-48 48-48h48 80c26.5 0 48-21.5 48-48s-21.5-48-48-48H160 48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faNotdef = {\n prefix: 'fas',\n iconName: 'notdef',\n icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7V390.3zM102.5 448H281.5L192 313.7 102.5 448zm128-192L320 390.3V121.7L230.5 256zM281.5 64H102.5L192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0H336c26.5 0 48 21.5 48 48V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M236.4 61.4L227 75.5c-21.3 32-59.4 48.5-97.3 42.1l-59.6-9.9C33.4 101.6 0 129.9 .1 167.1c0 15.9 6.4 31.2 17.6 42.5l29.2 29.2c11 11 17.2 25.9 17.2 41.5c0 15.8-6.4 30.9-17.7 42L33.3 335.1C22.2 345.9 16 360.7 16 376.2c0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6h10c27.2 0 53.7 9.3 75 26.3L287.8 467c10.5 8.4 23.6 13 37 13c32.7 0 59.3-26.5 59.3-59.3l0-25.2c0-34.9 21.4-66.2 53.9-78.8l36.9-14.3c22.4-8.7 37.2-30.3 37.2-54.3c0-28.1-20.1-52.3-47.8-57.3l-28-5.1c-36.5-6.7-65.4-34.5-73.6-70.7l-7.1-31.5C348.9 53.4 322.1 32 291.3 32c-22 0-42.6 11-54.9 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H288v48c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16V320H176c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [384, 512, [], \"f22d\", \"M192 144a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm0 288a176 176 0 1 0 0-352 176 176 0 1 0 0 352z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [9002], \"f054\", \"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32-14.3-32-32V192h32c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96H272zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128H416c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0V192c0-53-43-96-96-96L304 96z\"]\n};\nvar faCarRear = {\n prefix: 'fas',\n iconName: 'car-rear',\n icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96H346.6c13.6 0 25.7 8.6 30.2 21.4L402.9 192H109.1l26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256v80c0 23.7 12.9 44.4 32 55.4V448c0 17.7 14.3 32 32 32H96c17.7 0 32-14.3 32-32V400H384v48c0 17.7 14.3 32 32 32h32c17.7 0 32-14.3 32-32V391.4c19.1-11.1 32-31.7 32-55.4V256c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32H165.4c-40.8 0-77.1 25.8-90.6 64.3zM208 272h96c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H208c-8.8 0-16-7.2-16-16V288c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H72c-13.3 0-24-10.7-24-24zm360-24h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H408c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nvar faCarAlt = faCarRear;\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [448, 512, [], \"e06b\", \"M128 32v96H256V96h60.1c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4H256c0-17.7-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512H285.2c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7H117.4zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2V128c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9V192 320v5.8l-32-25.1V128c0-35.3-28.7-64-64-64H113.9L38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5V384c0 35.3 28.7 64 64 64H352c23.4 0 43.9-12.6 55-31.3z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [576, 512, [\"battery-2\"], \"f243\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm112 96H96V320h96V192z\"]\n};\nvar faBattery2 = faBatteryQuarter;\nvar faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192v4V304 448c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V192c0-35.3-28.7-64-64-64H218.5L494.8 47zM368 240a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM80 256c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16H208c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16s-7.2 16-16 16H96c-8.8 0-16-7.2-16-16z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192H.1C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64h32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0v64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0V160zM80 416a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm240 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faCarriageBaby = faBabyCarriage;\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64V352c0 88.4 71.6 160 160 160s160-71.6 160-160V64c0-35.3-28.7-64-64-64H64zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm48-176a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-80a48 48 0 1 1 0-96 48 48 0 1 1 0 96z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M96 382.1V293.3c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4H129.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64H64C28.7 64 0 92.7 0 128V384c0 35.3 28.7 64 64 64H184.4c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4H576c35.3 0 64-28.7 64-64V128c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40V204.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48v7 73c0 8.8-7.2 16-16 16s-16-7.2-16-16V264.3c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334V372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1H304c70.7 0 128-57.3 128-128V320 288c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2V40c0-22.1-17.9-40-40-40z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128A64 64 0 1 0 0 128a64 64 0 1 0 128 0zM384 384a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nvar faPercentage = faPercent;\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96V304v80 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16H416h33.6c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H608c17.7 0 32-14.3 32-32V288 272 261.7c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5H480V96c0-35.3-28.7-64-64-64H64zM585 256H480V192h48.8c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGlassWaterDroplet = {\n prefix: 'fas',\n iconName: 'glass-water-droplet',\n icon: [384, 512, [], \"e4f5\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3H275.3c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0H32zM83 297.5L66.4 64H317.6L301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C161.7 125.9 128 172 128 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nvar faDisplay = {\n prefix: 'fas',\n iconName: 'display',\n icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V352H64V64H512z\"]\n};\nvar faFaceSmile = {\n prefix: 'fas',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSmile = faFaceSmile;\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z\"]\n};\nvar faThumbTack = faThumbtack;\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [127942], \"f091\", \"M400 0H176c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8H24C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H384c17.7 0 32-14.3 32-32s-14.3-32-32-32H357.9C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24H446.4c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112h84.4c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6h84.4c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nvar faPersonPraying = {\n prefix: 'fas',\n iconName: 'person-praying',\n icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432H72c-22.1 0-40 17.9-40 40s17.9 40 40 40H280c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nvar faPray = faPersonPraying;\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6V105.5L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0h18.1c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32V240H192V32c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V192c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V224zM93.3 51.2L175.9 240H106.1L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5h69.9H216c22.1 0 40 17.9 40 40s-17.9 40-40 40H160c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V352c0 88.4-71.6 160-160 160H226.3c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363V336c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nvar faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5c0 0 0 0 0 0H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5c7.7-21.8 20.2-42.3 37.8-59.8zM16 312v7.6 .7V440c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l41.6-41.6c87.6 86.5 228.7 86.2 315.8-1c24.4-24.4 42.1-53.1 52.9-83.7c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.2 62.2-162.7 62.5-225.3 1L185 329c6.9-6.9 8.9-17.2 5.2-26.2s-12.5-14.8-22.2-14.8H48.4h-.7H40c-13.3 0-24 10.7-24 24z\"]\n};\nvar faSyncAlt = faRotate;\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32V96H472c39.8 0 72 32.2 72 72V440c0 39.8-32.2 72-72 72H168c-39.8 0-72-32.2-72-72V168c0-39.8 32.2-72 72-72H288V32c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H208zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H304zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s-7.2-16-16-16H400zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224H64V416H48c-26.5 0-48-21.5-48-48V272c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H576V224h16z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [512, 512, [9774], \"f67c\", \"M224 445.3V323.5l-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8V66.7C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5V445.3c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3V240.8L422.8 351.1zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nvar faGears = {\n prefix: 'fas',\n iconName: 'gears',\n icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8h-.7c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faCogs = faGears;\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M0 488V171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4V488c0 13.3-10.7 24-24 24H568c-13.3 0-24-10.7-24-24V224c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32V488c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24V432H512l0 56c0 13.3-10.7 24-24 24zM128 400V336H512v64H128zm0-96V224H512l0 80H128z\"]\n};\nvar faArrowUpRightDots = {\n prefix: 'fas',\n iconName: 'arrow-up-right-dots',\n icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h50.7L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3V160c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H160zM576 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM448 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm128 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM272 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM576 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-48-80a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0c28.5 0 53.6 18.7 61.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2c0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6c-14.8 0-29.3-5.1-40.8-14.3l-55.4-44.3c-4.5-3.6-9.3-6.7-14.5-9.2c-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9C47.8 458.2 16 431.6 16 396.5c0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1c0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9c0-33.4 30.1-58.8 63-53.2l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"]\n};\nvar faFaceGrinHearts = {\n prefix: 'fas',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nvar faGrinHearts = faFaceGrinHearts;\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M64 0H242.7c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32v32h64V192H96zM64 352h80 96 80V288H240 144 64v64zM320 224c0-17.7-14.3-32-32-32H256v64h64V224zM160 192v64h64V192H160zM288 448c17.7 0 32-14.3 32-32V384H256v64h32zM160 384v64h64V384H160zM64 416c0 17.7 14.3 32 32 32h32V384H64v32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9h96c8.8 0 16 7.2 16 16v96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2V432h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v8c0 13.3-10.7 24-24 24s-24-10.7-24-24v-8H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h16V414.2C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112V16C0 7.2 7.2 0 16 0h96zM352 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nvar faTransgenderAlt = faTransgender;\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4V424h32c13.3 0 24 10.7 24 24s-10.7 24-24 24H216v16c0 13.3-10.7 24-24 24s-24-10.7-24-24V472H136c-13.3 0-24-10.7-24-24s10.7-24 24-24h32V398.4C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224a112 112 0 1 0 224 0A112 112 0 1 0 80 224z\"]\n};\nvar faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nvar faLevelDown = faArrowTurnDown;\nvar faPersonFallingBurst = {\n prefix: 'fas',\n iconName: 'person-falling-burst',\n icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2V352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320H224l80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80A48 48 0 1 0 0 80a48 48 0 1 0 96 0zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nvar faTicketSimple = {\n prefix: 'fas',\n iconName: 'ticket-simple',\n icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64H512c35.3 0 64 28.7 64 64v64c0 8.8-7.4 15.7-15.7 18.6C541.5 217.1 528 235 528 256s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320c0-8.8 7.4-15.7 15.7-18.6C34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192V128z\"]\n};\nvar faTicketAlt = faTicketSimple;\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48V464c0 26.5 21.5 48 48 48h96V432c0-26.5 21.5-48 48-48s48 21.5 48 48v80h96c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48H48zM64 240c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V240zm112-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V240c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V240zM80 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V112zM272 96h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16z\"]\n};\nvar faAnglesLeft = {\n prefix: 'fas',\n iconName: 'angles-left',\n icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nvar faAngleDoubleLeft = faAnglesLeft;\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 80C0 53.5 21.5 32 48 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80zM64 96v64h64V96H64zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V336zm64 16v64h64V352H64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H304c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm80 64H320v64h64V96zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V304zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z\"]\n};\nvar faClockRotateLeft = {\n prefix: 'fas',\n iconName: 'clock-rotate-left',\n icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z\"]\n};\nvar faHistory = faClockRotateLeft;\nvar faFaceGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89l0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0 0 0zm160 0l0 0 0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8l0 0 0 0 0 0 .2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2 0 0z\"]\n};\nvar faGrinBeamSweat = faFaceGrinBeamSweat;\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [\"arrow-right-from-file\"], \"f56e\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384V288H216c-13.3 0-24 10.7-24 24s10.7 24 24 24H384V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V64zM384 336V288H494.1l-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39H384zm0-208H256V0L384 128z\"]\n};\nvar faArrowRightFromFile = faFileExport;\nvar faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nvar faShieldBlank = faShield;\nvar faArrowUpShortWide = {\n prefix: 'fas',\n iconName: 'arrow-up-short-wide',\n icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H320zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32s-14.3-32-32-32H320z\"]\n};\nvar faSortAmountUpAlt = faArrowUpShortWide;\nvar faHouseMedical = {\n prefix: 'fas',\n iconName: 'house-medical',\n icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32V448c0 35.3 28.7 64 64 64H448.5c35.5 0 64.2-28.8 64-64.3l-.7-160.2h32zM256 208c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v48h48c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H320v48c0 8.8-7.2 16-16 16H272c-8.8 0-16-7.2-16-16V320H208c-8.8 0-16-7.2-16-16V272c0-8.8 7.2-16 16-16h48V208z\"]\n};\nvar faGolfBallTee = {\n prefix: 'fas',\n iconName: 'golf-ball-tee',\n icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160H85.8C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zm-52.3-49.3c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zM96 416c0-17.7 14.3-32 32-32h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H240c-8.8 0-16 7.2-16 16v16c0 17.7-14.3 32-32 32s-32-14.3-32-32V464c0-8.8-7.2-16-16-16H128c-17.7 0-32-14.3-32-32z\"]\n};\nvar faGolfBall = faGolfBallTee;\nvar faCircleChevronLeft = {\n prefix: 'fas',\n iconName: 'circle-chevron-left',\n icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nvar faChevronCircleLeft = faCircleChevronLeft;\nvar faHouseChimneyWindow = {\n prefix: 'fas',\n iconName: 'house-chimney-window',\n icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1h-32l.7 160.2c.2 35.5-28.5 64.3-64 64.3H128.1c-35.3 0-64-28.7-64-64V287.6H32c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7V64c0-17.7 14.3-32 32-32h32c17.7 0 32 14.3 32 32V185l52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V216c0-13.3-10.7-24-24-24H248z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.8-9.2L288 94.6z\"]\n};\nvar faTentArrowTurnLeft = {\n prefix: 'fas',\n iconName: 'tent-arrow-turn-left',\n icon: [576, 512, [], \"e580\", \"M120.1 41.8c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120 456 120c39.8 0 72 32.2 72 72v40c0 13.3 10.7 24 24 24s24-10.7 24-24V192c0-66.3-53.7-120-120-120L86.5 72l33.5-30.2zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faTents = {\n prefix: 'fas',\n iconName: 'tents',\n icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5H608c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512H224V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nvar faMagic = faWandMagic;\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32h52.1c12.7 0 24.9 5.1 33.9 14.1L496 64h56c13.3 0 24 10.7 24 24v24c0 44.2-35.8 80-80 80H464 448 426.7l-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V364.8c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2V480c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V249.8c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192h30 16H303.8L416 256.1zM464 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nvar faWineGlassEmpty = {\n prefix: 'fas',\n iconName: 'wine-glass-empty',\n icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6V448H80c-17.7 0-32 14.3-32 32s14.3 32 32 32h80 80c17.7 0 32-14.3 32-32s-14.3-32-32-32H192V348.4c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0H64zM81.9 203.1L93.4 64H226.6l11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nvar faWineGlassAlt = faWineGlassEmpty;\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M512 240.2V256H0c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V288H512z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7v72V368c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V147L192 223.8V432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6V200 128c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nvar faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M320 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H163.2C178 151 242.6 96 320 96s142 55 156.8 128H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H476.8z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 96a96 96 0 1 1 192 0A96 96 0 1 1 320 96zM144 64c-26.5 0-48 21.5-48 48V276.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5V112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112V276.5c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6V112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3V272c0-8.8 7.2-16 16-16s16 7.2 16 16v50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nvar faPersonBiking = {\n prefix: 'fas',\n iconName: 'person-biking',\n icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1V416c0 17.7 14.3 32 32 32s32-14.3 32-32V288c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H427.2zM56 384a72 72 0 1 1 144 0A72 72 0 1 1 56 384zm200 0A128 128 0 1 0 0 384a128 128 0 1 0 256 0zm184 0a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm200 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nvar faBiking = faPersonBiking;\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [576, 512, [129529], \"f51a\", \"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6v29.1L364.3 320h29.1c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8C76.5 307.5 64 337.7 64 369.2c0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9C0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8c30.6-30.6 45.9-73.1 42.3-115.8z\"]\n};\nvar faShieldHeart = {\n prefix: 'fas',\n iconName: 'shield-heart',\n icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h48V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8h40V24c0-13.3 10.7-24 24-24s24 10.7 24 24v8V64v64c17.7 0 32 14.3 32 32v64c17.7 0 32 14.3 32 32v96c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32H416V352H384V224H352V128H320v96h32V352h32V512H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H128V352h32V224h32V128H160v96H128V352H96V512H32c-17.7 0-32-14.3-32-32V384c0-17.7 14.3-32 32-32V256c0-17.7 14.3-32 32-32V160c0-17.7 14.3-32 32-32V64 32 24c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32v48h64V304c0-17.7-14.3-32-32-32zm-32-80v32h64V192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faEarthOceania = {\n prefix: 'fas',\n iconName: 'earth-oceania',\n icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3H254.8c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16s-7.2 16-16 16H264c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nvar faGlobeOceania = faEarthOceania;\nvar faSquareXmark = {\n prefix: 'fas',\n iconName: 'square-xmark',\n icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesSquare = faSquareXmark;\nvar faXmarkSquare = faSquareXmark;\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128h95.1l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H347.1L325.8 320H384c17.7 0 32 14.3 32 32s-14.3 32-32 32H315.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7H155.1l-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l21.3-128H64c-17.7 0-32-14.3-32-32s14.3-32 32-32h68.9l11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320h95.1l21.3-128H187.1z\"]\n};\nvar faUpRightAndDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'up-right-and-down-left-from-center',\n icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0H488c13.3 0 24 10.7 24 24V168c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512H24c-13.3 0-24-10.7-24-24V344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nvar faExpandAlt = faUpRightAndDownLeftFromCenter;\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32H192c-17.7 0-32 14.3-32 32s14.3 32 32 32h32v32H144 96 48c-26.5 0-48 21.5-48 48v64.8c0 19 11.2 36.2 28.5 43.9l67.5 30V368c0 26.5 21.5 48 48 48H403.1c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8H288V128h32zM96 208v86.1L48 272.8V208H96z\"]\n};\nvar faT = {\n prefix: 'fas',\n iconName: 't',\n icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96H160V448c0 17.7 14.3 32 32 32s32-14.3 32-32V96H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H192 32z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2h32c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64v32c0 8.8-7.2 16-16 16H560c-8.8 0-16-7.2-16-16V320H480v16c0 8.8-7.2 16-16 16H432c-8.8 0-16-7.2-16-16V318.4c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2V352c0 17.7 14.3 32 32 32h32v64c0 17.7-14.3 32-32 32H352c-17.7 0-32-14.3-32-32V372c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12v76c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V329.1L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1h7.2H256h32c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nvar faChartColumn = {\n prefix: 'fas',\n iconName: 'chart-column',\n icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32V400c0 8.8 7.2 16 16 16H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H80c-44.2 0-80-35.8-80-80V64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm128-64V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V224c0-17.7 14.3-32 32-32zM480 96V320c0 17.7-14.3 32-32 32s-32-14.3-32-32V96c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1v29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9V241.1zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1v29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1V241.1c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nvar faVialCircleCheck = {\n prefix: 'fas',\n iconName: 'vial-circle-check',\n icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32H96h64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32V266.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96V96C14.3 96 0 81.7 0 64zM96 96v96h64V96H96zM224 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faPersonArrowDownToLine = {\n prefix: 'fas',\n iconName: 'person-arrow-down-to-line',\n icon: [640, 512, [], \"e538\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352V352h16v96H184zm-64 0H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H152h80H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H264V256.9l28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6H177.1c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9V448zM464 64V306.7l-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7V64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M144 320a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm119.8 0c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144H496c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80H263.8zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224H29.4C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480v2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288h2.6c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32V29.4C288 13.2 274.8 0 258.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faPersonWalkingLuggage = {\n prefix: 'fas',\n iconName: 'person-walking-luggage',\n icon: [576, 512, [], \"e554\", \"M432 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nvar faUpDown = {\n prefix: 'fas',\n iconName: 'up-down',\n icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160H80V352H24c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4H176V160h56c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nvar faArrowsAltV = faUpDown;\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M481.2 0C417 0 363.5 46.5 353.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM367.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C241.3 114.6 210.8 96 176 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96H367.9zM85.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80V336c0 26.5 21.5 48 48 48H65.1c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96H488h8H608c17.7 0 32-14.3 32-32s-14.3-32-32-32H544V80c0-26.5-21.5-48-48-48H48zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21V112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-112a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nvar faHaykal = faBahai;\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H141.3C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 88v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0v48c0 13.3-10.7 24-24 24s-24-10.7-24-24V88c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0H416h32 16c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48H538.5c-17 0-33.3-6.7-45.3-18.7L480 160H448v21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512H496 432 32.3c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1V181.5v-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3v.6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87V227c0 32.8 8.4 64.8 24 93H112c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32V160c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64h32V32H192c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32V480s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64H96V352H64c-35.3 0-64 28.7-64 64z\"]\n};\nvar faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344V280H168c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V168c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H280v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faPlusCircle = faCirclePlus;\nvar faFaceGrinTongueWink = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448V401.1c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2V448c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6V448c0 35.3-28.7 64-64 64s-64-28.7-64-64V402.6c0-14.7 11.9-26.6 26.6-26.6h2c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9h2c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faGrinTongueWink = faFaceGrinTongueWink;\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-366.1-8.3a.5 .5 0 1 1 -.9 .1 .5 .5 0 1 1 .9-.1z\"]\n};\nvar faPlugCircleExclamation = {\n prefix: 'fas',\n iconName: 'plug-circle-exclamation',\n icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32v96h64V32c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32v96h64V32c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32v32c0 77.4 55 142 128 156.8V480c0 17.7 14.3 32 32 32s32-14.3 32-32V412.8c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32H32zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16v80c0 8.8-7.2 16-16 16s-16-7.2-16-16V288c0-8.8 7.2-16 16-16z\"]\n};\nvar faLinkSlash = {\n prefix: 'fas',\n iconName: 'link-slash',\n icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nvar faChainBroken = faLinkSlash;\nvar faChainSlash = faLinkSlash;\nvar faUnlink = faLinkSlash;\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M288 448H64V224h64V160H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H288c35.3 0 64-28.7 64-64V384H288v64zm-64-96H448c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H224c-35.3 0-64 28.7-64 64V288c0 35.3 28.7 64 64 64z\"]\n};\nvar faPersonWalkingArrowLoopLeft = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-loop-left',\n icon: [640, 512, [], \"e551\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384H480c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96H461.3l25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nvar faArrowUpZA = {\n prefix: 'fas',\n iconName: 'arrow-up-z-a',\n icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3V448c0 17.7 14.3 32 32 32s32-14.3 32-32V146.3l32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32h50.7l-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H429.3l73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8H352c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3h88.4l7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400H395.8z\"]\n};\nvar faSortAlphaUpAlt = faArrowUpZA;\nvar faFireFlameCurved = {\n prefix: 'fas',\n iconName: 'fire-flame-curved',\n icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nvar faFireAlt = faFireFlameCurved;\nvar faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [448, 512, [127786], \"f76f\", \"M0 32V45.6C0 62.7 1.7 79.6 5 96H357.8c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0H32C14.3 0 0 14.3 0 32zm352.2 96H13.6c12.2 35.9 32.3 68.7 58.8 96H412l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3H445c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9H110.2c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9H288z\"]\n};\nvar faFileCirclePlus = {\n prefix: 'fas',\n iconName: 'file-circle-plus',\n icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0H224V128c0 17.7 14.3 32 32 32H384v38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7H64c-35.3 0-64-28.7-64-64V64zm384 64H256V0L384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16v48H368c-8.8 0-16 7.2-16 16s7.2 16 16 16h48v48c0 8.8 7.2 16 16 16s16-7.2 16-16V384h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H448V304z\"]\n};\nvar faBookQuran = {\n prefix: 'fas',\n iconName: 'book-quran',\n icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96V416c0 53-43 96-96 96H64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V384c-17.7 0-32-14.3-32-32V32C0 14.3 14.3 0 32 0H64 352zm0 384H96v64H352c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nvar faQuran = faBookQuran;\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [9875], \"f13d\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80H224c-17.7 0-32 14.3-32 32s14.3 32 32 32h32V448H208c-53 0-96-43-96-96v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 88.4 71.6 160 160 160h80 80c88.4 0 160-71.6 160-160v-6.1l7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7V352c0 53-43 96-96 96H320V240h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H341.1z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M384 96V224H256V96H384zm0 192V416H256V288H384zM192 224H64V96H192V224zM64 288H192V416H64V288zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"]\n};\nvar faFaceAngry = {\n prefix: 'fas',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nvar faAngry = faFaceAngry;\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faArrowTrendDown = {\n prefix: 'fas',\n iconName: 'arrow-trend-down',\n icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32H544c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352H384z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faFeed = faRss;\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M96 151.4V360.6c9.7 5.6 17.8 13.7 23.4 23.4H328.6c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1l0 0 32-56 4.5-7.9-.1-.3H119.4c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32H119.4c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4V151.4C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32H328.6c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nvar faScaleBalanced = {\n prefix: 'fas',\n iconName: 'scale-balanced',\n icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H398.4c-5.2 25.8-22.9 47.1-46.4 57.3V448H512c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 128c-17.7 0-32-14.3-32-32s14.3-32 32-32H288V153.3c-23.5-10.3-41.2-31.6-46.4-57.3H128c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288H584.4L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320H199.3L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z\"]\n};\nvar faBalanceScale = faScaleBalanced;\nvar faGaugeSimpleHigh = {\n prefix: 'fas',\n iconName: 'gauge-simple-high',\n icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nvar faTachometer = faGaugeSimpleHigh;\nvar faTachometerFast = faGaugeSimpleHigh;\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.2-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9V448c0 17.7 14.3 32 32 32s32-14.3 32-32V131.9zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64V352c0 35.3 28.7 64 64 64H240l-10.7 32H160c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H346.7L336 416H512c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64H64zM512 64V288H64V64H512z\"]\n};\nvar faDesktopAlt = faDesktop;\nvar faM = {\n prefix: 'fas',\n iconName: 'm',\n icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.2c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V169.7L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7V448c0 17.7-14.3 32-32 32s-32-14.3-32-32V64C0 49.9 9.2 37.5 22.7 33.4z\"]\n};\nvar faTableList = {\n prefix: 'fas',\n iconName: 'table-list',\n icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32H448c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96zm64 0v64h64V96H64zm384 0H192v64H448V96zM64 224v64h64V224H64zm384 0H192v64H448V224zM64 352v64h64V352H64zm384 0H192v64H448V352z\"]\n};\nvar faThList = faTableList;\nvar faCommentSms = {\n prefix: 'fas',\n iconName: 'comment-sms',\n icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3 0 0 0 0 0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM202.9 176.8c6.5-2.2 13.7 .1 17.9 5.6L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2v96c0 8.8-7.2 16-16 16s-16-7.2-16-16V240l-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240v48c0 8.8-7.2 16-16 16s-16-7.2-16-16V192c0-6.9 4.4-13 10.9-15.2zm173.1 38c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.2-.4-23.7-4.4-32.6-7.4l0 0 0 0c-1.4-.5-2.7-.9-4-1.4c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.7 .6 3.3 1.1 4.9 1.6l0 0 0 0c9.1 3.1 15.6 5.3 22.6 5.5c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4c-7.2-2.2-16.7-5-24.3-9.6c-9-5.4-17.7-14.7-17.7-29.4c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c10 .2 19.7 2.3 27.9 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-7.3-1.9-14.1-3.3-20.1-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9zm-272 0c0 .2 0 .4 0 .4c.1 .1 .6 .8 2.2 1.7c3.9 2.3 9.6 4.1 18.3 6.8l.6 .2c7.4 2.2 17.3 5.2 25.2 10.2c9.1 5.7 17.4 15.2 17.6 29.9c.2 15-7.6 26-17.8 32.3c-9.5 5.9-20.9 7.9-30.7 7.6c-12.3-.4-24.2-4.5-33.2-7.6l0 0 0 0c-1.3-.4-2.5-.8-3.6-1.2c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c1.4 .5 2.8 .9 4.1 1.4l0 0 0 0c9.5 3.2 16.5 5.6 23.7 5.8c5.3 .2 10-1 12.8-2.8c1.2-.8 1.8-1.5 2.1-2c.2-.4 .6-1.2 .6-2.7l0-.2c0-.7 0-1.4-2.7-3.1c-3.8-2.4-9.6-4.3-18-6.9l-1.2-.4 0 0c-7.2-2.2-16.7-5-24.3-9.6C80.8 239 72.1 229.7 72 215c-.1-15.2 8.6-25.7 18.5-31.6c9.4-5.5 20.5-7.5 29.7-7.4c9.5 .1 22.2 2.1 31.1 4.4c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-6.6-1.8-16.8-3.3-23.3-3.4c-4.9-.1-9.8 1.1-12.9 2.9c-1.4 .8-2.1 1.6-2.4 2c-.2 .3-.4 .8-.4 1.9z\"]\n};\nvar faSms = faCommentSms;\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96V416c0 53 43 96 96 96H384h32c17.7 0 32-14.3 32-32s-14.3-32-32-32V384c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32H384 96zm0 384H352v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16zm16 48H336c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3zM504 312V248H440c-13.3 0-24-10.7-24-24s10.7-24 24-24h64V136c0-13.3 10.7-24 24-24s24 10.7 24 24v64h64c13.3 0 24 10.7 24 24s-10.7 24-24 24H552v64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [448, 512, [10003, 10004], \"f00c\", \"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [576, 512, [\"battery-4\"], \"f241\", \"M464 160c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16H464zM80 96C35.8 96 0 131.8 0 176V336c0 44.2 35.8 80 80 80H464c44.2 0 80-35.8 80-80V320c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32V176c0-44.2-35.8-80-80-80H80zm272 96H96V320H352V192z\"]\n};\nvar faBattery4 = faBatteryThreeQuarters;\nvar faHouseCircleCheck = {\n prefix: 'fas',\n iconName: 'house-circle-check',\n icon: [640, 512, [], \"e509\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1h32v69.7c-.1 .9-.1 1.8-.1 2.8V472c0 22.1 17.9 40 40 40h16c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2H160h24c22.1 0 40-17.9 40-40V448 384c0-17.7 14.3-32 32-32h64l.7 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nvar faDiagramSuccessor = {\n prefix: 'fas',\n iconName: 'diagram-successor',\n icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nvar faTruckArrowRight = {\n prefix: 'fas',\n iconName: 'truck-arrow-right',\n icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0H368c26.5 0 48 21.5 48 48V96h50.7c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3V256v32 64c17.7 0 32 14.3 32 32s-14.3 32-32 32H576c0 53-43 96-96 96s-96-43-96-96H256c0 53-43 96-96 96s-96-43-96-96H48c-26.5 0-48-21.5-48-48V48zM416 256H544V237.3L466.7 160H416v96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39H96c-13.3 0-24 10.7-24 24s10.7 24 24 24H262.1l-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nvar faArrowsSplitUpAndLeft = {\n prefix: 'fas',\n iconName: 'arrows-split-up-and-left',\n icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3V384c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H416c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64H109.3l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256H224c23.3 0 45.2 6.2 64 17.1V109.3l-41.4 41.4z\"]\n};\nvar faHandFist = {\n prefix: 'fas',\n iconName: 'hand-fist',\n icon: [448, 512, [9994, \"fist-raised\"], \"f6de\", \"M192 0c17.7 0 32 14.3 32 32V144H160V32c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32v80H64V64zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V64zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32v64c0 17.7-14.3 32-32 32s-32-14.3-32-32V128zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6V256c0 52.3-25.1 98.8-64 128v96c0 17.7-14.3 32-32 32H160c-17.7 0-32-14.3-32-32V401.6c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267V240c0-35.3 28.7-64 64-64h88c22.1 0 40 17.9 40 40s-17.9 40-40 40H128c-8.8 0-16 7.2-16 16s7.2 16 16 16h56c39.8 0 72-32.2 72-72z\"]\n};\nvar faFistRaised = faHandFist;\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80H96c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [128188], \"f0b1\", \"M184 48H328c4.4 0 8 3.6 8 8V96H176V56c0-4.4 3.6-8 8-8zm-56 8V96H64C28.7 96 0 124.7 0 160v96H192 320 512V160c0-35.3-28.7-64-64-64H384V56c0-30.9-25.1-56-56-56H184c-30.9 0-56 25.1-56 56zM512 288H320v32c0 17.7-14.3 32-32 32H224c-17.7 0-32-14.3-32-32V288H0V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V288z\"]\n};\nvar faPersonFalling = {\n prefix: 'fas',\n iconName: 'person-falling',\n icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0h-1.4l92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32V278.2c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nvar faImagePortrait = {\n prefix: 'fas',\n iconName: 'image-portrait',\n icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64l0-384zM128 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 356.6c0-37.9 30.7-68.6 68.6-68.6h86.9c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4H107.4C92.3 384 80 371.7 80 356.6z\"]\n};\nvar faPortrait = faImagePortrait;\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1v-33c-15.9-4.7-32.8-7.2-50.3-7.2H178.3zM384 224c-17.7 0-32 14.3-32 32v82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7H384zm24 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nvar faRug = {\n prefix: 'fas',\n iconName: 'rug',\n icon: [640, 512, [], \"e569\", \"M24 64H56 80V88v88 80 80 88 24H56 24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V360H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V280H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V200H24c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V112H24C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0H528V448H112V64zM640 88c0 13.3-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v32h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-8v40h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H584 560V424 336 256 176 88 64h24 32c13.3 0 24 10.7 24 24z\"]\n};\nvar faEarthEurope = {\n prefix: 'fas',\n iconName: 'earth-europe',\n icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1v9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1h1c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24v4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H379.3c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3h11.3c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16H454c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4H251.4c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3v3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3H248c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faGlobeEurope = faEarthEurope;\nvar faCartFlatbedSuitcase = {\n prefix: 'fas',\n iconName: 'cart-flatbed-suitcase',\n icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0H48c44.2 0 80 35.8 80 80V368c0 8.8 7.2 16 16 16H608c17.7 0 32 14.3 32 32s-14.3 32-32 32H541.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H253.3c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16H144c-44.2 0-80-35.8-80-80V80c0-8.8-7.2-16-16-16H32C14.3 64 0 49.7 0 32zM432 96V56c0-4.4-3.6-8-8-8H344c-4.4 0-8 3.6-8 8V96h96zM288 96V56c0-30.9 25.1-56 56-56h80c30.9 0 56 25.1 56 56V96 320H288V96zM512 320V96h16c26.5 0 48 21.5 48 48V272c0 26.5-21.5 48-48 48H512zM240 96h16V320H240c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48z\"]\n};\nvar faLuggageCart = faCartFlatbedSuitcase;\nvar faRectangleXmark = {\n prefix: 'fas',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faRectangleTimes = faRectangleXmark;\nvar faTimesRectangle = faRectangleXmark;\nvar faWindowClose = faRectangleXmark;\nvar faBahtSign = {\n prefix: 'fas',\n iconName: 'baht-sign',\n icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32V64H37.6C16.8 64 0 80.8 0 101.6V224v41.7V288 406.3c0 23 18.7 41.7 41.7 41.7H112v32c0 17.7 14.3 32 32 32s32-14.3 32-32V448h32c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112V32c0-17.7-14.3-32-32-32zM112 128v96H64V128h48zm64 96V128c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64v96H64V288h48zm64 96V288h32c26.5 0 48 21.5 48 48s-21.5 48-48 48H176z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5V78.6c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8V454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5V83.8c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11V456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nvar faBookJournalWhills = {\n prefix: 'fas',\n iconName: 'book-journal-whills',\n icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0H384h32c17.7 0 32 14.3 32 32V352c0 17.7-14.3 32-32 32v64c17.7 0 32 14.3 32 32s-14.3 32-32 32H384 96c-53 0-96-43-96-96V96zM64 416c0 17.7 14.3 32 32 32H352V384H96c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.2-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.8-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-8.2-17-20.5-31.7-35.9-42.6c-2.7-1.9-6.2 1.4-5 4.5c8.5 22.4 3.6 48-13 65.6c-3.2 3.4-3.6 8.9-.9 12.7c9.8 14 12.7 31.9 7.5 48.5c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-5.1-16.6-2.2-34.4 7.6-48.5c2.7-3.9 2.3-9.3-.9-12.7c-16.6-17.5-21.6-43.1-13.1-65.5c1.2-3.1-2.3-6.4-5-4.5c-15.3 10.9-27.6 25.6-35.8 42.6l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nvar faJournalWhills = faBookJournalWhills;\nvar faHandcuffs = {\n prefix: 'fas',\n iconName: 'handcuffs',\n icon: [640, 512, [], \"e4f8\", \"M240 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32 80c17.7 0 32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32zm0 320a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1V184c0-13.3 10.7-24 24-24h8c0-17.7 14.3-32 32-32s32 14.3 32 32h8c13.3 0 24 10.7 24 24v16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM368 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24V296c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nvar faExclamationTriangle = faTriangleExclamation;\nvar faWarning = faTriangleExclamation;\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 80v48c0 44.2-100.3 80-224 80S0 172.2 0 128V80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6V288c0 44.2-100.3 80-224 80S0 332.2 0 288V186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6V432c0 44.2-100.3 80-224 80S0 476.2 0 432V346.1z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [\"arrow-turn-right\", \"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nvar faArrowTurnRight = faShare;\nvar faMailForward = faShare;\nvar faBottleDroplet = {\n prefix: 'fas',\n iconName: 'bottle-droplet',\n icon: [320, 512, [], \"e4c4\", \"M96 0C82.7 0 72 10.7 72 24s10.7 24 24 24c4.4 0 8 3.6 8 8v64.9c0 12.2-7.2 23.1-17.2 30.1C53.7 174.1 32 212.5 32 256V448c0 35.3 28.7 64 64 64H224c35.3 0 64-28.7 64-64V256c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1V56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0 0 0 0H104l0 0 0 0L96 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C185.9 288.9 208 320.2 208 337c0 24.9-21.5 45-48 45z\"]\n};\nvar faMaskFace = {\n prefix: 'fas',\n iconName: 'mask-face',\n icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1H144 128 56c-30.9 0-56 25.1-56 56v85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269V184c0-30.9-25.1-56-56-56H512 496h-9.2c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269V184c0-4.4 3.6-8 8-8H96v48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3V176h40c4.4 0 8 3.6 8 8v85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16zm16 48H432c8.8 0 16 7.2 16 16s-7.2 16-16 16H208c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16H400c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16z\"]\n};\nvar faHillRockslide = {\n prefix: 'fas',\n iconName: 'hill-rockslide',\n icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2H293.4c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3V432c0 44.2 35.8 80 80 80H396.7c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9V309.4c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9v53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faRightLeft = {\n prefix: 'fas',\n iconName: 'right-left',\n icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0V32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6V160L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32H160v64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64H480z\"]\n};\nvar faExchangeAlt = faRightLeft;\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480V396.4c0-4 1.5-7.8 4.2-10.7L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nvar faRoadCircleExclamation = {\n prefix: 'fas',\n iconName: 'road-circle-exclamation',\n icon: [640, 512, [], \"e565\", \"M213.2 32H288V96c0 17.7 14.3 32 32 32s32-14.3 32-32V32h74.8c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8V224c0-17.7-14.3-32-32-32s-32 14.3-32 32v64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32v64H86.6C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16V288c0-8.8-7.2-16-16-16z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9h80c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24h80c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288H24c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V312c0-13.3-10.7-24-24-24H408zM24 416c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H24zm384 0c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V440c0-13.3-10.7-24-24-24H408zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V192zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V224z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"]\n};\nvar faMoneyBill1Wave = {\n prefix: 'fas',\n iconName: 'money-bill-1-wave',\n icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5V422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4V89.7c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416H64V352c35.3 0 64 28.7 64 64zM64 224V160h64c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64v64H448zm64-192c-35.3 0-64-28.7-64-64h64v64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6V276h-4c-11 0-20 9-20 20s9 20 20 20h24 24c11 0 20-9 20-20s-9-20-20-20h-4V208c0-11-9-20-20-20H272c-11 0-20 9-20 20z\"]\n};\nvar faMoneyBillWaveAlt = faMoneyBill1Wave;\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [576, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M544 160l-.1 72.6c-.1 52.2-24 101-64 133.1c.1-1.9 .1-3.8 .1-5.7v-8c0-71.8-37-138.6-97.9-176.7l-60.2-37.6c-8.6-5.4-17.9-8.4-27.3-9.4L248.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l78 135.1c3.3 5.7 10.7 7.7 16.4 4.4s7.7-10.7 4.4-16.4l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S362 5 368.6 16.5l68 117.8 0 0 0 0 43.3 75L480 160c0-17.7 14.4-32 32-32s32 14.4 32 32zM243.9 88.5L268.5 131c-13.9 4.5-26.4 13.7-34.7 27c-.9 1.4-1.7 2.9-2.5 4.4l-28.9-50c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l26.8 46.4c.6 6 2.1 11.8 4.3 17.4H224 210.7l0 0H179l-23-39.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM260.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C416.7 234.7 448 291.2 448 352v8c0 83.9-68.1 152-152 152H120c-13.3 0-24-10.7-24-24s10.7-24 24-24h92c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H56c-13.3 0-24-10.7-24-24s10.7-24 24-24H212c6.6 0 12-5.4 12-12s-5.4-12-12-12H88c-13.3 0-24-10.7-24-24s10.7-24 24-24H224l0 0 0 0h93.2L271 219.1c-15-9.4-19.5-29.1-10.2-44.1z\"]\n};\nvar faSignLanguage = faHands;\nvar faSigning = faHands;\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32V64H288V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H0V112C0 85.5 21.5 64 48 64H96V32c0-17.7 14.3-32 32-32zM0 192H448V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V192zm80 64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V272c0-8.8-7.2-16-16-16H80z\"]\n};\nvar faWaterLadder = {\n prefix: 'fas',\n iconName: 'water-ladder',\n icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V224H384V127.7C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7V361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3h0V288H192v96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1V127.7zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1l0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7l0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nvar faLadderWater = faWaterLadder;\nvar faSwimmingPool = faWaterLadder;\nvar faArrowsUpDown = {\n prefix: 'fas',\n iconName: 'arrows-up-down',\n icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3V402.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7V109.3l41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nvar faArrowsV = faArrowsUpDown;\nvar faFaceGrimace = {\n prefix: 'fas',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm96-112h-8V360l55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344V304h8c23.8 0 43.5 17.3 47.3 40zM328 344H264V304h64v40zm0 56H264V360h64v40zm-80-96v40l-64 0V304h64zm0 56v40H184V360l64 0zm-80-16H112.7c3.8-22.7 23.6-40 47.3-40h8v40zm0 56h-8c-23.8 0-43.5-17.3-47.3-40H168v40zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faGrimace = faFaceGrimace;\nvar faWheelchairMove = {\n prefix: 'fas',\n iconName: 'wheelchair-move',\n icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M320 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224h97.4c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288H306.7c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nvar faWheelchairAlt = faWheelchairMove;\nvar faTurnDown = {\n prefix: 'fas',\n iconName: 'turn-down',\n icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M350 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26s12.5-14.5 22-14.5h88l0-192c0-17.7-14.3-32-32-32H32C14.3 96 0 81.7 0 64V32C0 14.3 14.3 0 32 0l80 0c70.7 0 128 57.3 128 128l0 192h88c9.6 0 18.2 5.7 22 14.5z\"]\n};\nvar faLevelDownAlt = faTurnDown;\nvar faPersonWalkingArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-right',\n icon: [640, 512, [], \"e552\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224H384c-17.7 0-32 14.3-32 32s14.3 32 32 32H530.7l-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nvar faSquareEnvelope = {\n prefix: 'fas',\n iconName: 'square-envelope',\n icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144H352c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4V336c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V210.4l136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nvar faEnvelopeSquare = faSquareEnvelope;\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [127922], \"f522\", \"M274.9 34.3c-28.1-28.1-73.7-28.1-101.8 0L34.3 173.1c-28.1 28.1-28.1 73.7 0 101.8L173.1 413.7c28.1 28.1 73.7 28.1 101.8 0L413.7 274.9c28.1-28.1 28.1-73.7 0-101.8L274.9 34.3zM200 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM96 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 376a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM352 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 120a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm96 328c0 35.3 28.7 64 64 64H576c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H461.7c11.6 36 3.1 77-25.4 105.5L320 413.8V448zM480 328a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [512, 512, [], \"f436\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56V456c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56V56c0-30.9 25.1-56 56-56z\"]\n};\nvar faBandage = {\n prefix: 'fas',\n iconName: 'bandage',\n icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H480V416zM448 96H192V416H448V96zM64 96C28.7 96 0 124.7 0 160V352c0 35.3 28.7 64 64 64h96V96H64zM248 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faBandAid = faBandage;\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [512, 512, [], \"f272\", \"M160 0c17.7 0 32 14.3 32 32V64H320V32c0-17.7 14.3-32 32-32s32 14.3 32 32V64h48c26.5 0 48 21.5 48 48v48H32V112c0-26.5 21.5-48 48-48h48V32c0-17.7 14.3-32 32-32zM32 192H480V464c0 26.5-21.5 48-48 48H80c-26.5 0-48-21.5-48-48V192zM344 376c13.3 0 24-10.7 24-24s-10.7-24-24-24H168c-13.3 0-24 10.7-24 24s10.7 24 24 24H344z\"]\n};\nvar faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nvar faTimesCircle = faCircleXmark;\nvar faXmarkCircle = faCircleXmark;\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96H48C21.5 96 0 117.5 0 144V464c0 26.5 21.5 48 48 48H200.6c-5.4-9.4-8.6-20.3-8.6-32V256c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96H217.8l28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224H344c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24H272c-26.5 0-48 21.5-48 48v80H416V256h32v96H640V272c0-26.5-21.5-48-48-48h-4.1c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48H416V384H224v80zm224 48H592c26.5 0 48-21.5 48-48V384H448V512zm96-312c0 13.3-10.7 24-24 24H470.9l29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [512, 512, [127976], \"f594\", \"M0 32C0 14.3 14.3 0 32 0H480c17.7 0 32 14.3 32 32s-14.3 32-32 32V448c17.7 0 32 14.3 32 32s-14.3 32-32 32H304V464c0-26.5-21.5-48-48-48s-48 21.5-48 48v48H32c-17.7 0-32-14.3-32-32s14.3-32 32-32V64C14.3 64 0 49.7 0 32zm96 80v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H112c-8.8 0-16 7.2-16 16zM240 96c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H240zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V112c0-8.8-7.2-16-16-16H368c-8.8 0-16 7.2-16 16zM112 192c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H112zm112 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16H368zM328 384c13.3 0 24.3-10.9 21-23.8c-10.6-41.5-48.2-72.2-93-72.2s-82.5 30.7-93 72.2c-3.3 12.8 7.8 23.8 21 23.8H328z\"]\n};\nvar faEarthAsia = {\n prefix: 'fas',\n iconName: 'earth-asia',\n icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9h2.3c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm144.5 92.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nvar faGlobeAsia = faEarthAsia;\nvar faIdCardClip = {\n prefix: 'fas',\n iconName: 'id-card-clip',\n icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0h64c17.7 0 32 14.3 32 32V96c0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32V32c0-17.7 14.3-32 32-32zM64 64H192v48c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48V64H512c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7H389.3c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3H229.3c-29.5 0-53.3 23.9-53.3 53.3zM288 352a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nvar faIdCardAlt = faIdCardClip;\nvar faMagnifyingGlassPlus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-plus',\n icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24V232h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H232V120c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H120c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z\"]\n};\nvar faSearchPlus = faMagnifyingGlassPlus;\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304h91.4c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144H29.7C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h48c8.8 0 16-7.2 16-16s-7.2-16-16-16H512V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faHandDots = {\n prefix: 'fas',\n iconName: 'hand-dots',\n icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V336c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64H304c97.2 0 176-78.8 176-176V128c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V64c0-17.7-14.3-32-32-32s-32 14.3-32 32V240c0 8.8-7.2 16-16 16s-16-7.2-16-16V32zM240 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48-16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM240 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-48-48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faAllergies = faHandDots;\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64V448c0 35.3 28.7 64 64 64H320c35.3 0 64-28.7 64-64V160H256c-17.7 0-32-14.3-32-32V0H64zM256 0V128H384L256 0zM80 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H80c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96H288c17.7 0 32 14.3 32 32v64c0 17.7-14.3 32-32 32H96c-17.7 0-32-14.3-32-32V256c0-17.7 14.3-32 32-32zm0 32v64H288V256H96zM240 416h64c8.8 0 16 7.2 16 16s-7.2 16-16 16H240c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32H480c17.7 0 32-14.3 32-32s-14.3-32-32-32H32z\"]\n};\nvar faMugSaucer = {\n prefix: 'fas',\n iconName: 'mug-saucer',\n icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32H448h64c70.7 0 128 57.3 128 128s-57.3 128-128 128H480c0 53-43 96-96 96H192c-53 0-96-43-96-96V64zM480 224h32c35.3 0 64-28.7 64-64s-28.7-64-64-64H480V224zM32 416H544c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nvar faCoffee = faMugSaucer;\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M162.4 6c-1.5-3.6-5-6-8.9-6h-19c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6H48C21.5 0 0 21.5 0 48V224v22.4V256H9.6 374.4 384v-9.6V224 48c0-26.5-21.5-48-48-48H230.5c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 288v32c0 35.3 28.7 64 64 64h64v64c0 35.3 28.7 64 64 64s64-28.7 64-64V384h64c35.3 0 64-28.7 64-64V288H0zM192 432a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448h8.4c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4H400c96 0 176-64 176-176s-64-208-288-208zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nvar faMagnifyingGlassMinus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-minus',\n icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24H280c13.3 0 24-10.7 24-24s-10.7-24-24-24H136z\"]\n};\nvar faSearchMinus = faMagnifyingGlassMinus;\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0H208c26.5 0 48 21.5 48 48V96H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v64H176c-8.8 0-16 7.2-16 16s7.2 16 16 16h80v48c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48z\"]\n};\nvar faUserLarge = {\n prefix: 'fas',\n iconName: 'user-large',\n icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7H481.3c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320H161.3z\"]\n};\nvar faUserAlt = faUserLarge;\nvar faTrainTram = {\n prefix: 'fas',\n iconName: 'train-tram',\n icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0H361.2c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.8 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15H248V96h40c53 0 96 43 96 96V352c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1H365.3c-8.5 0-16.6-3.4-22.6-9.4L288 448H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H43c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352V192c0-53 43-96 96-96h40V48H86.8zM160 160c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32H288c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H160zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M96 128V70.2c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30V128h-.3c.2 2.6 .3 5.3 .3 8v40c0 70.7-57.3 128-128 128s-128-57.3-128-128V136c0-2.7 .1-5.4 .3-8H96zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80V160H144v16zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7H30.7C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6zM208 48V64H192c-4.4 0-8 3.6-8 8V88c0 4.4 3.6 8 8 8h16v16c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V96h16c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8H240V48c0-4.4-3.6-8-8-8H216c-4.4 0-8 3.6-8 8z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4H97.9L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57V325.3c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [9925], \"f6c4\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80H288c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h16V98.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6V64h16c17.7 0 32-14.3 32-32s-14.3-32-32-32H176zM288 204c28.7 0 52 23.3 52 52v96c0 28.7-23.3 52-52 52s-52-23.3-52-52V256c0-28.7 23.3-52 52-52zm-12 52v96c0 6.6 5.4 12 12 12s12-5.4 12-12V256c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5v2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9H192c11 0 20 9 20 20s-9 20-20 20H128c-11 0-20-9-20-20V368.3c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8v-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [448, 512, [129522], \"f076\", \"M0 160v96C0 379.7 100.3 480 224 480s224-100.3 224-224V160H320v96c0 53-43 96-96 96s-96-43-96-96V160H0zm0-32H128V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v64zm320 0H448V64c0-17.7-14.3-32-32-32H352c-17.7 0-32 14.3-32 32v64z\"]\n};\nvar faJar = {\n prefix: 'fas',\n iconName: 'jar',\n icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0H256c17.7 0 32 14.3 32 32s-14.3 32-32 32H64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64H256c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V160zm96 64c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32H224c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H96z\"]\n};\nvar faNoteSticky = {\n prefix: 'fas',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H288V368c0-26.5 21.5-48 48-48H448V96c0-35.3-28.7-64-64-64H64zM448 352H402.7 336c-8.8 0-16 7.2-16 16v66.7V480l32-32 64-64 32-32z\"]\n};\nvar faStickyNote = faNoteSticky;\nvar faBugSlash = {\n prefix: 'fas',\n iconName: 'bug-slash',\n icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H479.7c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160H264c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96v3.6c0 15.7 12.7 28.4 28.4 28.4H387.6c15.7 0 28.4-12.7 28.4-28.4V96c0-53-43-96-96-96zM160.3 256H96c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6V335.5L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7V479.2z\"]\n};\nvar faArrowUpFromWaterPump = {\n prefix: 'fas',\n iconName: 'arrow-up-from-water-pump',\n icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48V256H48c-26.5 0-48 21.5-48 48v96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400V304c0-26.5-21.5-48-48-48H480l0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256H288V48c0-26.5-21.5-48-48-48H112zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1l0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7l0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2H384c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336H192c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M240 80H342.7c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80h81.4l91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16H97c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7V512H243.7L181.5 408.2 124 312.4zm33-7.2L204.3 384H272c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48h82.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512H64V345.4C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48H223.5l57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nvar faFaceSadTear = {\n prefix: 'fas',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faSadTear = faFaceSadTear;\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nvar faTentArrowsDown = {\n prefix: 'fas',\n iconName: 'tent-arrows-down',\n icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36V24c0-13.3-10.7-24-24-24s-24 10.7-24 24V146.1l-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512H288V352l96 160h96c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [64, 512, [10069, 10071, 61738], \"21\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM32 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nvar faArrowsSpin = {\n prefix: 'fas',\n iconName: 'arrows-spin',\n icon: [512, 512, [], \"e4bb\", \"M256 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9H448c8.8 0 16-7.2 16-16V64c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C363.4 52.6 312.1 32 256 32c-10.9 0-21.5 .8-32 2.3V99.2c10.3-2.1 21-3.2 32-3.2zM132.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8V64c0-8.8-7.2-16-16-16H64c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C52.6 148.6 32 199.9 32 256c0 10.9 .8 21.5 2.3 32H99.2c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM477.7 224H412.8c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8V448c0 8.8 7.2 16 16 16H448c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C459.4 363.4 480 312.1 480 256c0-10.9-.8-21.5-2.3-32zM256 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9H64c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C148.6 459.4 199.9 480 256 480c10.9 0 21.5-.8 32-2.3V412.8c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64v96h64V64H354.7L384 93.3V160h64V93.3c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0H128zM384 352v32 64H128V384 368 352H384zm64 32h32c17.7 0 32-14.3 32-32V256c0-35.3-28.7-64-64-64H64c-35.3 0-64 28.7-64 64v96c0 17.7 14.3 32 32 32H64v64c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V384zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nvar faTurkishLiraSign = {\n prefix: 'fas',\n iconName: 'turkish-lira-sign',\n icon: [384, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M96 32c17.7 0 32 14.3 32 32V99.3L247.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 165.9v29.4l119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 261.9V416h63.8c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C378.5 399.8 294.1 480 191.8 480H96c-17.7 0-32-14.3-32-32V280.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 213.6V184.1l-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 117.6V64c0-17.7 14.3-32 32-32z\"]\n};\nvar faTry = faTurkishLiraSign;\nvar faTurkishLira = faTurkishLiraSign;\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32V67.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V445.1c-.4-.1-.9-.1-1.3-.2l-.2 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11V32c0-17.7 14.3-32 32-32z\"]\n};\nvar faDollar = faDollarSign;\nvar faUsd = faDollarSign;\nvar faX = {\n prefix: 'fas',\n iconName: 'x',\n icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nvar faMagnifyingGlassDollar = {\n prefix: 'fas',\n iconName: 'magnifying-glass-dollar',\n icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20v14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1l0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4V312c0 11 9 20 20 20s20-9 20-20V298.2c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7V104z\"]\n};\nvar faSearchDollar = faMagnifyingGlassDollar;\nvar faUsersGear = {\n prefix: 'fas',\n iconName: 'users-gear',\n icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320H234.7c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7H106.7C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2H261.3C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7H455.2c-2.1-5.2-3.2-10.9-3.2-16.4v-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192H490.7c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3v-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6v3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3L574.4 311c-8.9-7.6-19.1-13.6-30.4-17.6v-21c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9v21c-11.2 4-21.5 10-30.4 17.6l-18.2-10.5c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l18.2 10.5c-1 5.7-1.6 11.6-1.6 17.6s.6 11.9 1.6 17.5l-18.2 10.5c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3L449.6 457c8.9 7.6 19.2 13.6 30.4 17.6v21c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9v-21c11.2-4 21.5-10 30.4-17.6l18.2 10.5c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-18.2-10.5c1-5.7 1.6-11.6 1.6-17.5s-.6-11.9-1.6-17.6l18.2-10.5zM472 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nvar faUsersCog = faUsersGear;\nvar faPersonMilitaryPointing = {\n prefix: 'fas',\n iconName: 'person-military-pointing',\n icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25H400c8.8 0 16-7.2 16-16V17.4C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H241.6c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40H224v89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5H240 72zm345.7 20.9L246.6 416H416V369.7l53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448v32c0 17.7 14.3 32 32 32H384c17.7 0 32-14.3 32-32V448H224z\"]\n};\nvar faBuildingColumns = {\n prefix: 'fas',\n iconName: 'building-columns',\n icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160v8c0 13.3 10.7 24 24 24H456c13.3 0 24-10.7 24-24v-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224H64V420.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512H480c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1V224H384V416H344V224H280V416H232V224H168V416H128V224zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nvar faBank = faBuildingColumns;\nvar faInstitution = faBuildingColumns;\nvar faMuseum = faBuildingColumns;\nvar faUniversity = faBuildingColumns;\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M288 0c17.7 0 32 14.3 32 32V49.7C451.8 63.4 557.7 161 573.9 285.9c2 15.6-17.3 24.4-27.8 12.7C532.1 283 504.8 272 480 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C359 299.5 326.7 272 288 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C167 299.5 134.7 272 96 272c-24.8 0-52.1 11-66.1 26.7C19.4 310.4 .1 301.5 2.1 285.9C18.3 161 124.2 63.4 256 49.7V32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2V430.6c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4V316.2c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nvar faTrowel = {\n prefix: 'fas',\n iconName: 'trowel',\n icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nvar faD = {\n prefix: 'fas',\n iconName: 'd',\n icon: [384, 512, [100], \"44\", \"M0 96C0 60.7 28.7 32 64 32h96c123.7 0 224 100.3 224 224s-100.3 224-224 224H64c-35.3 0-64-28.7-64-64V96zm160 0H64V416h96c88.4 0 160-71.6 160-160s-71.6-160-160-160z\"]\n};\nvar faStapler = {\n prefix: 'fas',\n iconName: 'stapler',\n icon: [640, 512, [], \"e5af\", \"M640 299.3V304 432c0 26.5-21.5 48-48 48H512 448 64c-17.7 0-32-14.3-32-32s14.3-32 32-32H448V368H96c-17.7 0-32-14.3-32-32V219.4L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304V288L128 230.9V304H448z\"]\n};\nvar faMasksTheater = {\n prefix: 'fas',\n iconName: 'masks-theater',\n icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M74.6 373.2c41.7 36.1 108 82.5 166.1 73.7c6.1-.9 12.1-2.5 18-4.5c-9.2-12.3-17.3-24.4-24.2-35.4c-21.9-35-28.8-75.2-25.9-113.6c-20.6 4.1-39.2 13-54.7 25.4c-6.5 5.2-16.3 1.3-14.8-7c6.4-33.5 33-60.9 68.2-66.3c2.6-.4 5.3-.7 7.9-.8l19.4-131.3c2-13.8 8-32.7 25-45.9C278.2 53.2 310.5 37 363.2 32.2c-.8-.7-1.6-1.4-2.4-2.1C340.6 14.5 288.4-11.5 175.7 5.6S20.5 63 5.7 83.9C0 91.9-.8 102 .6 111.8L24.8 276.1c5.5 37.3 21.5 72.6 49.8 97.2zm87.7-219.6c4.4-3.1 10.8-2 11.8 3.3c.1 .5 .2 1.1 .3 1.6c3.2 21.8-11.6 42-33.1 45.3s-41.5-11.8-44.7-33.5c-.1-.5-.1-1.1-.2-1.6c-.6-5.4 5.2-8.4 10.3-6.7c9 3 18.8 3.9 28.7 2.4s19.1-5.3 26.8-10.8zM261.6 390c29.4 46.9 79.5 110.9 137.6 119.7s124.5-37.5 166.1-73.7c28.3-24.5 44.3-59.8 49.8-97.2l24.2-164.3c1.4-9.8 .6-19.9-5.1-27.9c-14.8-20.9-57.3-61.2-170-78.3S299.4 77.2 279.2 92.8c-7.8 6-11.5 15.4-12.9 25.2L242.1 282.3c-5.5 37.3-.4 75.8 19.6 107.7zM404.5 235.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6c-1 5.3-7.4 6.4-11.8 3.3zm136.2 15.5c-1 5.3-7.4 6.4-11.8 3.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6zM530 350.2c-19.6 44.7-66.8 72.5-116.8 64.9s-87.1-48.2-93-96.7c-1-8.3 8.9-12.1 15.2-6.7c23.9 20.8 53.6 35.3 87 40.3s66.1 .1 94.9-12.8c7.6-3.4 16 3.2 12.6 10.9z\"]\n};\nvar faTheaterMasks = faMasksTheater;\nvar faKipSign = {\n prefix: 'fas',\n iconName: 'kip-sign',\n icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4V64c0-17.7-14.3-32-32-32S64 46.3 64 64V224H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64V448c0 17.7 14.3 32 32 32s32-14.3 32-32V325.6L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H182.5L340.8 88.3z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0V96L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H192zm-64-64c0 17.7 14.3 32 32 32h48c17.7 0 32-14.3 32-32s-14.3-32-32-32H160c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32h64c17.7 0 32-14.3 32-32s-14.3-32-32-32H224zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32H352c88.4 0 160-71.6 160-160V226.3c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64v88c0 22.1 17.9 40 40 40s40-17.9 40-40V160c0-8.8 7.2-16 16-16s16 7.2 16 16v56c0 39.8-32.2 72-72 72z\"]\n};\nvar faHandshakeSimple = {\n prefix: 'fas',\n iconName: 'handshake-simple',\n icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352H592c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48H516h-4-.7l-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48H48c-26.5 0-48 21.5-48 48V304c0 26.5 21.5 48 48 48H156.2l91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nvar faHandshakeAlt = faHandshakeSimple;\nvar faJetFighter = {\n prefix: 'fas',\n iconName: 'jet-fighter',\n icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24H296c13.3 0 24 10.7 24 24s-10.7 24-24 24H280L384 192H500.4c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1H384L280 464h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H184c-13.3 0-24-10.7-24-24s10.7-24 24-24h8V320H160l-54.6 54.6c-6 6-14.1 9.4-22.6 9.4H64c-17.7 0-32-14.3-32-32V288c-17.7 0-32-14.3-32-32s14.3-32 32-32V160c0-17.7 14.3-32 32-32H82.7c8.5 0 16.6 3.4 22.6 9.4L160 192h32V48h-8c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16h64c8.8 0 16-7.2 16-16s-7.2-16-16-16H80z\"]\n};\nvar faFighterJet = faJetFighter;\nvar faSquareShareNodes = {\n prefix: 'fas',\n iconName: 'square-share-nodes',\n icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nvar faShareAltSquare = faSquareShareNodes;\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56V456c0 13.3 10.7 24 24 24H40c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H24zm88 0c-8.8 0-16 7.2-16 16V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H184zm96 0c-13.3 0-24 10.7-24 24V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H280zM448 56V456c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24H472c-13.3 0-24 10.7-24 24zm-64-8V464c0 8.8 7.2 16 16 16s16-7.2 16-16V48c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nvar faPlusMinus = {\n prefix: 'fas',\n iconName: 'plus-minus',\n icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V144H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H160V320c0 17.7 14.3 32 32 32s32-14.3 32-32V208H336c17.7 0 32-14.3 32-32s-14.3-32-32-32H224V32zM0 480c0 17.7 14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2V384c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1V320 192 174.9l14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nvar faVideoCamera = faVideo;\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9v28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5V291.9c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nvar faMortarBoard = faGraduationCap;\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M224 24V80H168c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h56v56c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V176h56c13.3 0 24-10.7 24-24V104c0-13.3-10.7-24-24-24H320V24c0-13.3-10.7-24-24-24H248c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h16 64c17.7 0 32-14.3 32-32s-14.3-32-32-32H288 272 193.7c-29.1 0-57.3 9.9-80 28L68.8 384H32c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32H192 352.5c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nvar faPersonCircleCheck = {\n prefix: 'fas',\n iconName: 'person-circle-check',\n icon: [576, 512, [], \"e53e\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V256.9L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6h29.7c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9V480c0 17.7-14.3 32-32 32s-32-14.3-32-32V352H152zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nvar faTurnUp = {\n prefix: 'fas',\n iconName: 'turn-up',\n icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M350 177.5c3.8-8.8 2-19-4.6-26l-136-144C204.9 2.7 198.6 0 192 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26s12.5 14.5 22 14.5h88l0 192c0 17.7-14.3 32-32 32H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32l80 0c70.7 0 128-57.3 128-128l0-192h88c9.6 0 18.2-5.7 22-14.5z\"]\n};\nvar faLevelUpAlt = faTurnUp;\nvar icons = {\n fa0: fa0,\n fa1: fa1,\n fa2: fa2,\n fa3: fa3,\n fa4: fa4,\n fa5: fa5,\n fa6: fa6,\n fa7: fa7,\n fa8: fa8,\n fa9: fa9,\n faFillDrip: faFillDrip,\n faArrowsToCircle: faArrowsToCircle,\n faCircleChevronRight: faCircleChevronRight,\n faChevronCircleRight: faChevronCircleRight,\n faAt: faAt,\n faTrashCan: faTrashCan,\n faTrashAlt: faTrashAlt,\n faTextHeight: faTextHeight,\n faUserXmark: faUserXmark,\n faUserTimes: faUserTimes,\n faStethoscope: faStethoscope,\n faMessage: faMessage,\n faCommentAlt: faCommentAlt,\n faInfo: faInfo,\n faDownLeftAndUpRightToCenter: faDownLeftAndUpRightToCenter,\n faCompressAlt: faCompressAlt,\n faExplosion: faExplosion,\n faFileLines: faFileLines,\n faFileAlt: faFileAlt,\n faFileText: faFileText,\n faWaveSquare: faWaveSquare,\n faRing: faRing,\n faBuildingUn: faBuildingUn,\n faDiceThree: faDiceThree,\n faCalendarDays: faCalendarDays,\n faCalendarAlt: faCalendarAlt,\n faAnchorCircleCheck: faAnchorCircleCheck,\n faBuildingCircleArrowRight: faBuildingCircleArrowRight,\n faVolleyball: faVolleyball,\n faVolleyballBall: faVolleyballBall,\n faArrowsUpToLine: faArrowsUpToLine,\n faSortDown: faSortDown,\n faSortDesc: faSortDesc,\n faCircleMinus: faCircleMinus,\n faMinusCircle: faMinusCircle,\n faDoorOpen: faDoorOpen,\n faRightFromBracket: faRightFromBracket,\n faSignOutAlt: faSignOutAlt,\n faAtom: faAtom,\n faSoap: faSoap,\n faIcons: faIcons,\n faHeartMusicCameraBolt: faHeartMusicCameraBolt,\n faMicrophoneLinesSlash: faMicrophoneLinesSlash,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faBridgeCircleCheck: faBridgeCircleCheck,\n faPumpMedical: faPumpMedical,\n faFingerprint: faFingerprint,\n faHandPointRight: faHandPointRight,\n faMagnifyingGlassLocation: faMagnifyingGlassLocation,\n faSearchLocation: faSearchLocation,\n faForwardStep: faForwardStep,\n faStepForward: faStepForward,\n faFaceSmileBeam: faFaceSmileBeam,\n faSmileBeam: faSmileBeam,\n faFlagCheckered: faFlagCheckered,\n faFootball: faFootball,\n faFootballBall: faFootballBall,\n faSchoolCircleExclamation: faSchoolCircleExclamation,\n faCrop: faCrop,\n faAnglesDown: faAnglesDown,\n faAngleDoubleDown: faAngleDoubleDown,\n faUsersRectangle: faUsersRectangle,\n faPeopleRoof: faPeopleRoof,\n faPeopleLine: faPeopleLine,\n faBeerMugEmpty: faBeerMugEmpty,\n faBeer: faBeer,\n faDiagramPredecessor: faDiagramPredecessor,\n faArrowUpLong: faArrowUpLong,\n faLongArrowUp: faLongArrowUp,\n faFireFlameSimple: faFireFlameSimple,\n faBurn: faBurn,\n faPerson: faPerson,\n faMale: faMale,\n faLaptop: faLaptop,\n faFileCsv: faFileCsv,\n faMenorah: faMenorah,\n faTruckPlane: faTruckPlane,\n faRecordVinyl: faRecordVinyl,\n faFaceGrinStars: faFaceGrinStars,\n faGrinStars: faGrinStars,\n faBong: faBong,\n faSpaghettiMonsterFlying: faSpaghettiMonsterFlying,\n faPastafarianism: faPastafarianism,\n faArrowDownUpAcrossLine: faArrowDownUpAcrossLine,\n faSpoon: faSpoon,\n faUtensilSpoon: faUtensilSpoon,\n faJarWheat: faJarWheat,\n faEnvelopesBulk: faEnvelopesBulk,\n faMailBulk: faMailBulk,\n faFileCircleExclamation: faFileCircleExclamation,\n faCircleH: faCircleH,\n faHospitalSymbol: faHospitalSymbol,\n faPager: faPager,\n faAddressBook: faAddressBook,\n faContactBook: faContactBook,\n faStrikethrough: faStrikethrough,\n faK: faK,\n faLandmarkFlag: faLandmarkFlag,\n faPencil: faPencil,\n faPencilAlt: faPencilAlt,\n faBackward: faBackward,\n faCaretRight: faCaretRight,\n faComments: faComments,\n faPaste: faPaste,\n faFileClipboard: faFileClipboard,\n faCodePullRequest: faCodePullRequest,\n faClipboardList: faClipboardList,\n faTruckRampBox: faTruckRampBox,\n faTruckLoading: faTruckLoading,\n faUserCheck: faUserCheck,\n faVialVirus: faVialVirus,\n faSheetPlastic: faSheetPlastic,\n faBlog: faBlog,\n faUserNinja: faUserNinja,\n faPersonArrowUpFromLine: faPersonArrowUpFromLine,\n faScrollTorah: faScrollTorah,\n faTorah: faTorah,\n faBroomBall: faBroomBall,\n faQuidditch: faQuidditch,\n faQuidditchBroomBall: faQuidditchBroomBall,\n faToggleOff: faToggleOff,\n faBoxArchive: faBoxArchive,\n faArchive: faArchive,\n faPersonDrowning: faPersonDrowning,\n faArrowDown91: faArrowDown91,\n faSortNumericDesc: faSortNumericDesc,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faFaceGrinTongueSquint: faFaceGrinTongueSquint,\n faGrinTongueSquint: faGrinTongueSquint,\n faSprayCan: faSprayCan,\n faTruckMonster: faTruckMonster,\n faW: faW,\n faEarthAfrica: faEarthAfrica,\n faGlobeAfrica: faGlobeAfrica,\n faRainbow: faRainbow,\n faCircleNotch: faCircleNotch,\n faTabletScreenButton: faTabletScreenButton,\n faTabletAlt: faTabletAlt,\n faPaw: faPaw,\n faCloud: faCloud,\n faTrowelBricks: faTrowelBricks,\n faFaceFlushed: faFaceFlushed,\n faFlushed: faFlushed,\n faHospitalUser: faHospitalUser,\n faTentArrowLeftRight: faTentArrowLeftRight,\n faGavel: faGavel,\n faLegal: faLegal,\n faBinoculars: faBinoculars,\n faMicrophoneSlash: faMicrophoneSlash,\n faBoxTissue: faBoxTissue,\n faMotorcycle: faMotorcycle,\n faBellConcierge: faBellConcierge,\n faConciergeBell: faConciergeBell,\n faPenRuler: faPenRuler,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleArrowsLeftRight: faPeopleArrowsLeftRight,\n faMarsAndVenusBurst: faMarsAndVenusBurst,\n faSquareCaretRight: faSquareCaretRight,\n faCaretSquareRight: faCaretSquareRight,\n faScissors: faScissors,\n faCut: faCut,\n faSunPlantWilt: faSunPlantWilt,\n faToiletsPortable: faToiletsPortable,\n faHockeyPuck: faHockeyPuck,\n faTable: faTable,\n faMagnifyingGlassArrowRight: faMagnifyingGlassArrowRight,\n faTachographDigital: faTachographDigital,\n faDigitalTachograph: faDigitalTachograph,\n faUsersSlash: faUsersSlash,\n faClover: faClover,\n faReply: faReply,\n faMailReply: faMailReply,\n faStarAndCrescent: faStarAndCrescent,\n faHouseFire: faHouseFire,\n faSquareMinus: faSquareMinus,\n faMinusSquare: faMinusSquare,\n faHelicopter: faHelicopter,\n faCompass: faCompass,\n faSquareCaretDown: faSquareCaretDown,\n faCaretSquareDown: faCaretSquareDown,\n faFileCircleQuestion: faFileCircleQuestion,\n faLaptopCode: faLaptopCode,\n faSwatchbook: faSwatchbook,\n faPrescriptionBottle: faPrescriptionBottle,\n faBars: faBars,\n faNavicon: faNavicon,\n faPeopleGroup: faPeopleGroup,\n faHourglassEnd: faHourglassEnd,\n faHourglass3: faHourglass3,\n faHeartCrack: faHeartCrack,\n faHeartBroken: faHeartBroken,\n faSquareUpRight: faSquareUpRight,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faFaceKissBeam: faFaceKissBeam,\n faKissBeam: faKissBeam,\n faFilm: faFilm,\n faRulerHorizontal: faRulerHorizontal,\n faPeopleRobbery: faPeopleRobbery,\n faLightbulb: faLightbulb,\n faCaretLeft: faCaretLeft,\n faCircleExclamation: faCircleExclamation,\n faExclamationCircle: faExclamationCircle,\n faSchoolCircleXmark: faSchoolCircleXmark,\n faArrowRightFromBracket: faArrowRightFromBracket,\n faSignOut: faSignOut,\n faCircleChevronDown: faCircleChevronDown,\n faChevronCircleDown: faChevronCircleDown,\n faUnlockKeyhole: faUnlockKeyhole,\n faUnlockAlt: faUnlockAlt,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faHeadphonesSimple: faHeadphonesSimple,\n faHeadphonesAlt: faHeadphonesAlt,\n faSitemap: faSitemap,\n faCircleDollarToSlot: faCircleDollarToSlot,\n faDonate: faDonate,\n faMemory: faMemory,\n faRoadSpikes: faRoadSpikes,\n faFireBurner: faFireBurner,\n faFlag: faFlag,\n faHanukiah: faHanukiah,\n faFeather: faFeather,\n faVolumeLow: faVolumeLow,\n faVolumeDown: faVolumeDown,\n faCommentSlash: faCommentSlash,\n faCloudSunRain: faCloudSunRain,\n faCompress: faCompress,\n faWheatAwn: faWheatAwn,\n faWheatAlt: faWheatAlt,\n faAnkh: faAnkh,\n faHandsHoldingChild: faHandsHoldingChild,\n faAsterisk: faAsterisk,\n faSquareCheck: faSquareCheck,\n faCheckSquare: faCheckSquare,\n faPesetaSign: faPesetaSign,\n faHeading: faHeading,\n faHeader: faHeader,\n faGhost: faGhost,\n faList: faList,\n faListSquares: faListSquares,\n faSquarePhoneFlip: faSquarePhoneFlip,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faCartPlus: faCartPlus,\n faGamepad: faGamepad,\n faCircleDot: faCircleDot,\n faDotCircle: faDotCircle,\n faFaceDizzy: faFaceDizzy,\n faDizzy: faDizzy,\n faEgg: faEgg,\n faHouseMedicalCircleXmark: faHouseMedicalCircleXmark,\n faCampground: faCampground,\n faFolderPlus: faFolderPlus,\n faFutbol: faFutbol,\n faFutbolBall: faFutbolBall,\n faSoccerBall: faSoccerBall,\n faPaintbrush: faPaintbrush,\n faPaintBrush: faPaintBrush,\n faLock: faLock,\n faGasPump: faGasPump,\n faHotTubPerson: faHotTubPerson,\n faHotTub: faHotTub,\n faMapLocation: faMapLocation,\n faMapMarked: faMapMarked,\n faHouseFloodWater: faHouseFloodWater,\n faTree: faTree,\n faBridgeLock: faBridgeLock,\n faSackDollar: faSackDollar,\n faPenToSquare: faPenToSquare,\n faEdit: faEdit,\n faCarSide: faCarSide,\n faShareNodes: faShareNodes,\n faShareAlt: faShareAlt,\n faHeartCircleMinus: faHeartCircleMinus,\n faHourglassHalf: faHourglassHalf,\n faHourglass2: faHourglass2,\n faMicroscope: faMicroscope,\n faSink: faSink,\n faBagShopping: faBagShopping,\n faShoppingBag: faShoppingBag,\n faArrowDownZA: faArrowDownZA,\n faSortAlphaDesc: faSortAlphaDesc,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faMitten: faMitten,\n faPersonRays: faPersonRays,\n faUsers: faUsers,\n faEyeSlash: faEyeSlash,\n faFlaskVial: faFlaskVial,\n faHand: faHand,\n faHandPaper: faHandPaper,\n faOm: faOm,\n faWorm: faWorm,\n faHouseCircleXmark: faHouseCircleXmark,\n faPlug: faPlug,\n faChevronUp: faChevronUp,\n faHandSpock: faHandSpock,\n faStopwatch: faStopwatch,\n faFaceKiss: faFaceKiss,\n faKiss: faKiss,\n faBridgeCircleXmark: faBridgeCircleXmark,\n faFaceGrinTongue: faFaceGrinTongue,\n faGrinTongue: faGrinTongue,\n faChessBishop: faChessBishop,\n faFaceGrinWink: faFaceGrinWink,\n faGrinWink: faGrinWink,\n faEarDeaf: faEarDeaf,\n faDeaf: faDeaf,\n faDeafness: faDeafness,\n faHardOfHearing: faHardOfHearing,\n faRoadCircleCheck: faRoadCircleCheck,\n faDiceFive: faDiceFive,\n faSquareRss: faSquareRss,\n faRssSquare: faRssSquare,\n faLandMineOn: faLandMineOn,\n faICursor: faICursor,\n faStamp: faStamp,\n faStairs: faStairs,\n faI: faI,\n faHryvniaSign: faHryvniaSign,\n faHryvnia: faHryvnia,\n faPills: faPills,\n faFaceGrinWide: faFaceGrinWide,\n faGrinAlt: faGrinAlt,\n faTooth: faTooth,\n faV: faV,\n faBangladeshiTakaSign: faBangladeshiTakaSign,\n faBicycle: faBicycle,\n faStaffSnake: faStaffSnake,\n faRodAsclepius: faRodAsclepius,\n faRodSnake: faRodSnake,\n faStaffAesculapius: faStaffAesculapius,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faTruckMedical: faTruckMedical,\n faAmbulance: faAmbulance,\n faWheatAwnCircleExclamation: faWheatAwnCircleExclamation,\n faSnowman: faSnowman,\n faMortarPestle: faMortarPestle,\n faRoadBarrier: faRoadBarrier,\n faSchool: faSchool,\n faIgloo: faIgloo,\n faJoint: faJoint,\n faAngleRight: faAngleRight,\n faHorse: faHorse,\n faQ: faQ,\n faG: faG,\n faNotesMedical: faNotesMedical,\n faTemperatureHalf: faTemperatureHalf,\n faTemperature2: faTemperature2,\n faThermometer2: faThermometer2,\n faThermometerHalf: faThermometerHalf,\n faDongSign: faDongSign,\n faCapsules: faCapsules,\n faPooStorm: faPooStorm,\n faPooBolt: faPooBolt,\n faFaceFrownOpen: faFaceFrownOpen,\n faFrownOpen: faFrownOpen,\n faHandPointUp: faHandPointUp,\n faMoneyBill: faMoneyBill,\n faBookmark: faBookmark,\n faAlignJustify: faAlignJustify,\n faUmbrellaBeach: faUmbrellaBeach,\n faHelmetUn: faHelmetUn,\n faBullseye: faBullseye,\n faBacon: faBacon,\n faHandPointDown: faHandPointDown,\n faArrowUpFromBracket: faArrowUpFromBracket,\n faFolder: faFolder,\n faFolderBlank: faFolderBlank,\n faFileWaveform: faFileWaveform,\n faFileMedicalAlt: faFileMedicalAlt,\n faRadiation: faRadiation,\n faChartSimple: faChartSimple,\n faMarsStroke: faMarsStroke,\n faVial: faVial,\n faGauge: faGauge,\n faDashboard: faDashboard,\n faGaugeMed: faGaugeMed,\n faTachometerAltAverage: faTachometerAltAverage,\n faWandMagicSparkles: faWandMagicSparkles,\n faMagicWandSparkles: faMagicWandSparkles,\n faE: faE,\n faPenClip: faPenClip,\n faPenAlt: faPenAlt,\n faBridgeCircleExclamation: faBridgeCircleExclamation,\n faUser: faUser,\n faSchoolCircleCheck: faSchoolCircleCheck,\n faDumpster: faDumpster,\n faVanShuttle: faVanShuttle,\n faShuttleVan: faShuttleVan,\n faBuildingUser: faBuildingUser,\n faSquareCaretLeft: faSquareCaretLeft,\n faCaretSquareLeft: faCaretSquareLeft,\n faHighlighter: faHighlighter,\n faKey: faKey,\n faBullhorn: faBullhorn,\n faGlobe: faGlobe,\n faSynagogue: faSynagogue,\n faPersonHalfDress: faPersonHalfDress,\n faRoadBridge: faRoadBridge,\n faLocationArrow: faLocationArrow,\n faC: faC,\n faTabletButton: faTabletButton,\n faBuildingLock: faBuildingLock,\n faPizzaSlice: faPizzaSlice,\n faMoneyBillWave: faMoneyBillWave,\n faChartArea: faChartArea,\n faAreaChart: faAreaChart,\n faHouseFlag: faHouseFlag,\n faPersonCircleMinus: faPersonCircleMinus,\n faBan: faBan,\n faCancel: faCancel,\n faCameraRotate: faCameraRotate,\n faSprayCanSparkles: faSprayCanSparkles,\n faAirFreshener: faAirFreshener,\n faStar: faStar,\n faRepeat: faRepeat,\n faCross: faCross,\n faBox: faBox,\n faVenusMars: faVenusMars,\n faArrowPointer: faArrowPointer,\n faMousePointer: faMousePointer,\n faMaximize: faMaximize,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faChargingStation: faChargingStation,\n faShapes: faShapes,\n faTriangleCircleSquare: faTriangleCircleSquare,\n faShuffle: faShuffle,\n faRandom: faRandom,\n faPersonRunning: faPersonRunning,\n faRunning: faRunning,\n faMobileRetro: faMobileRetro,\n faGripLinesVertical: faGripLinesVertical,\n faSpider: faSpider,\n faHandsBound: faHandsBound,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faPlaneCircleExclamation: faPlaneCircleExclamation,\n faXRay: faXRay,\n faSpellCheck: faSpellCheck,\n faSlash: faSlash,\n faComputerMouse: faComputerMouse,\n faMouse: faMouse,\n faArrowRightToBracket: faArrowRightToBracket,\n faSignIn: faSignIn,\n faShopSlash: faShopSlash,\n faStoreAltSlash: faStoreAltSlash,\n faServer: faServer,\n faVirusCovidSlash: faVirusCovidSlash,\n faShopLock: faShopLock,\n faHourglassStart: faHourglassStart,\n faHourglass1: faHourglass1,\n faBlenderPhone: faBlenderPhone,\n faBuildingWheat: faBuildingWheat,\n faPersonBreastfeeding: faPersonBreastfeeding,\n faRightToBracket: faRightToBracket,\n faSignInAlt: faSignInAlt,\n faVenus: faVenus,\n faPassport: faPassport,\n faHeartPulse: faHeartPulse,\n faHeartbeat: faHeartbeat,\n faPeopleCarryBox: faPeopleCarryBox,\n faPeopleCarry: faPeopleCarry,\n faTemperatureHigh: faTemperatureHigh,\n faMicrochip: faMicrochip,\n faCrown: faCrown,\n faWeightHanging: faWeightHanging,\n faXmarksLines: faXmarksLines,\n faFilePrescription: faFilePrescription,\n faWeightScale: faWeightScale,\n faWeight: faWeight,\n faUserGroup: faUserGroup,\n faUserFriends: faUserFriends,\n faArrowUpAZ: faArrowUpAZ,\n faSortAlphaUp: faSortAlphaUp,\n faChessKnight: faChessKnight,\n faFaceLaughSquint: faFaceLaughSquint,\n faLaughSquint: faLaughSquint,\n faWheelchair: faWheelchair,\n faCircleArrowUp: faCircleArrowUp,\n faArrowCircleUp: faArrowCircleUp,\n faToggleOn: faToggleOn,\n faPersonWalking: faPersonWalking,\n faWalking: faWalking,\n faL: faL,\n faFire: faFire,\n faBedPulse: faBedPulse,\n faProcedures: faProcedures,\n faShuttleSpace: faShuttleSpace,\n faSpaceShuttle: faSpaceShuttle,\n faFaceLaugh: faFaceLaugh,\n faLaugh: faLaugh,\n faFolderOpen: faFolderOpen,\n faHeartCirclePlus: faHeartCirclePlus,\n faCodeFork: faCodeFork,\n faCity: faCity,\n faMicrophoneLines: faMicrophoneLines,\n faMicrophoneAlt: faMicrophoneAlt,\n faPepperHot: faPepperHot,\n faUnlock: faUnlock,\n faColonSign: faColonSign,\n faHeadset: faHeadset,\n faStoreSlash: faStoreSlash,\n faRoadCircleXmark: faRoadCircleXmark,\n faUserMinus: faUserMinus,\n faMarsStrokeUp: faMarsStrokeUp,\n faMarsStrokeV: faMarsStrokeV,\n faChampagneGlasses: faChampagneGlasses,\n faGlassCheers: faGlassCheers,\n faClipboard: faClipboard,\n faHouseCircleExclamation: faHouseCircleExclamation,\n faFileArrowUp: faFileArrowUp,\n faFileUpload: faFileUpload,\n faWifi: faWifi,\n faWifi3: faWifi3,\n faWifiStrong: faWifiStrong,\n faBath: faBath,\n faBathtub: faBathtub,\n faUnderline: faUnderline,\n faUserPen: faUserPen,\n faUserEdit: faUserEdit,\n faSignature: faSignature,\n faStroopwafel: faStroopwafel,\n faBold: faBold,\n faAnchorLock: faAnchorLock,\n faBuildingNgo: faBuildingNgo,\n faManatSign: faManatSign,\n faNotEqual: faNotEqual,\n faBorderTopLeft: faBorderTopLeft,\n faBorderStyle: faBorderStyle,\n faMapLocationDot: faMapLocationDot,\n faMapMarkedAlt: faMapMarkedAlt,\n faJedi: faJedi,\n faSquarePollVertical: faSquarePollVertical,\n faPoll: faPoll,\n faMugHot: faMugHot,\n faCarBattery: faCarBattery,\n faBatteryCar: faBatteryCar,\n faGift: faGift,\n faDiceTwo: faDiceTwo,\n faChessQueen: faChessQueen,\n faGlasses: faGlasses,\n faChessBoard: faChessBoard,\n faBuildingCircleCheck: faBuildingCircleCheck,\n faPersonChalkboard: faPersonChalkboard,\n faMarsStrokeRight: faMarsStrokeRight,\n faMarsStrokeH: faMarsStrokeH,\n faHandBackFist: faHandBackFist,\n faHandRock: faHandRock,\n faSquareCaretUp: faSquareCaretUp,\n faCaretSquareUp: faCaretSquareUp,\n faCloudShowersWater: faCloudShowersWater,\n faChartBar: faChartBar,\n faBarChart: faBarChart,\n faHandsBubbles: faHandsBubbles,\n faHandsWash: faHandsWash,\n faLessThanEqual: faLessThanEqual,\n faTrain: faTrain,\n faEyeLowVision: faEyeLowVision,\n faLowVision: faLowVision,\n faCrow: faCrow,\n faSailboat: faSailboat,\n faWindowRestore: faWindowRestore,\n faSquarePlus: faSquarePlus,\n faPlusSquare: faPlusSquare,\n faToriiGate: faToriiGate,\n faFrog: faFrog,\n faBucket: faBucket,\n faImage: faImage,\n faMicrophone: faMicrophone,\n faCow: faCow,\n faCaretUp: faCaretUp,\n faScrewdriver: faScrewdriver,\n faFolderClosed: faFolderClosed,\n faHouseTsunami: faHouseTsunami,\n faSquareNfi: faSquareNfi,\n faArrowUpFromGroundWater: faArrowUpFromGroundWater,\n faMartiniGlass: faMartiniGlass,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faRotateLeft: faRotateLeft,\n faRotateBack: faRotateBack,\n faRotateBackward: faRotateBackward,\n faUndoAlt: faUndoAlt,\n faTableColumns: faTableColumns,\n faColumns: faColumns,\n faLemon: faLemon,\n faHeadSideMask: faHeadSideMask,\n faHandshake: faHandshake,\n faGem: faGem,\n faDolly: faDolly,\n faDollyBox: faDollyBox,\n faSmoking: faSmoking,\n faMinimize: faMinimize,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faMonument: faMonument,\n faSnowplow: faSnowplow,\n faAnglesRight: faAnglesRight,\n faAngleDoubleRight: faAngleDoubleRight,\n faCannabis: faCannabis,\n faCirclePlay: faCirclePlay,\n faPlayCircle: faPlayCircle,\n faTablets: faTablets,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faEur: faEur,\n faEuro: faEuro,\n faChair: faChair,\n faCircleCheck: faCircleCheck,\n faCheckCircle: faCheckCircle,\n faCircleStop: faCircleStop,\n faStopCircle: faStopCircle,\n faCompassDrafting: faCompassDrafting,\n faDraftingCompass: faDraftingCompass,\n faPlateWheat: faPlateWheat,\n faIcicles: faIcicles,\n faPersonShelter: faPersonShelter,\n faNeuter: faNeuter,\n faIdBadge: faIdBadge,\n faMarker: faMarker,\n faFaceLaughBeam: faFaceLaughBeam,\n faLaughBeam: faLaughBeam,\n faHelicopterSymbol: faHelicopterSymbol,\n faUniversalAccess: faUniversalAccess,\n faCircleChevronUp: faCircleChevronUp,\n faChevronCircleUp: faChevronCircleUp,\n faLariSign: faLariSign,\n faVolcano: faVolcano,\n faPersonWalkingDashedLineArrowRight: faPersonWalkingDashedLineArrowRight,\n faSterlingSign: faSterlingSign,\n faGbp: faGbp,\n faPoundSign: faPoundSign,\n faViruses: faViruses,\n faSquarePersonConfined: faSquarePersonConfined,\n faUserTie: faUserTie,\n faArrowDownLong: faArrowDownLong,\n faLongArrowDown: faLongArrowDown,\n faTentArrowDownToLine: faTentArrowDownToLine,\n faCertificate: faCertificate,\n faReplyAll: faReplyAll,\n faMailReplyAll: faMailReplyAll,\n faSuitcase: faSuitcase,\n faPersonSkating: faPersonSkating,\n faSkating: faSkating,\n faFilterCircleDollar: faFilterCircleDollar,\n faFunnelDollar: faFunnelDollar,\n faCameraRetro: faCameraRetro,\n faCircleArrowDown: faCircleArrowDown,\n faArrowCircleDown: faArrowCircleDown,\n faFileImport: faFileImport,\n faArrowRightToFile: faArrowRightToFile,\n faSquareArrowUpRight: faSquareArrowUpRight,\n faExternalLinkSquare: faExternalLinkSquare,\n faBoxOpen: faBoxOpen,\n faScroll: faScroll,\n faSpa: faSpa,\n faLocationPinLock: faLocationPinLock,\n faPause: faPause,\n faHillAvalanche: faHillAvalanche,\n faTemperatureEmpty: faTemperatureEmpty,\n faTemperature0: faTemperature0,\n faThermometer0: faThermometer0,\n faThermometerEmpty: faThermometerEmpty,\n faBomb: faBomb,\n faRegistered: faRegistered,\n faAddressCard: faAddressCard,\n faContactCard: faContactCard,\n faVcard: faVcard,\n faScaleUnbalancedFlip: faScaleUnbalancedFlip,\n faBalanceScaleRight: faBalanceScaleRight,\n faSubscript: faSubscript,\n faDiamondTurnRight: faDiamondTurnRight,\n faDirections: faDirections,\n faBurst: faBurst,\n faHouseLaptop: faHouseLaptop,\n faLaptopHouse: faLaptopHouse,\n faFaceTired: faFaceTired,\n faTired: faTired,\n faMoneyBills: faMoneyBills,\n faSmog: faSmog,\n faCrutch: faCrutch,\n faFontAwesome: faFontAwesome,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faCloudArrowUp: faCloudArrowUp,\n faCloudUpload: faCloudUpload,\n faCloudUploadAlt: faCloudUploadAlt,\n faPalette: faPalette,\n faArrowsTurnRight: faArrowsTurnRight,\n faVest: faVest,\n faFerry: faFerry,\n faArrowsDownToPeople: faArrowsDownToPeople,\n faSeedling: faSeedling,\n faSprout: faSprout,\n faLeftRight: faLeftRight,\n faArrowsAltH: faArrowsAltH,\n faBoxesPacking: faBoxesPacking,\n faCircleArrowLeft: faCircleArrowLeft,\n faArrowCircleLeft: faArrowCircleLeft,\n faGroupArrowsRotate: faGroupArrowsRotate,\n faBowlFood: faBowlFood,\n faCandyCane: faCandyCane,\n faArrowDownWideShort: faArrowDownWideShort,\n faSortAmountAsc: faSortAmountAsc,\n faSortAmountDown: faSortAmountDown,\n faCloudBolt: faCloudBolt,\n faThunderstorm: faThunderstorm,\n faTextSlash: faTextSlash,\n faRemoveFormat: faRemoveFormat,\n faFaceSmileWink: faFaceSmileWink,\n faSmileWink: faSmileWink,\n faFileWord: faFileWord,\n faFilePowerpoint: faFilePowerpoint,\n faArrowsLeftRight: faArrowsLeftRight,\n faArrowsH: faArrowsH,\n faHouseLock: faHouseLock,\n faCloudArrowDown: faCloudArrowDown,\n faCloudDownload: faCloudDownload,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faChildren: faChildren,\n faChalkboard: faChalkboard,\n faBlackboard: faBlackboard,\n faUserLargeSlash: faUserLargeSlash,\n faUserAltSlash: faUserAltSlash,\n faEnvelopeOpen: faEnvelopeOpen,\n faHandshakeSimpleSlash: faHandshakeSimpleSlash,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faMattressPillow: faMattressPillow,\n faGuaraniSign: faGuaraniSign,\n faArrowsRotate: faArrowsRotate,\n faRefresh: faRefresh,\n faSync: faSync,\n faFireExtinguisher: faFireExtinguisher,\n faCruzeiroSign: faCruzeiroSign,\n faGreaterThanEqual: faGreaterThanEqual,\n faShieldHalved: faShieldHalved,\n faShieldAlt: faShieldAlt,\n faBookAtlas: faBookAtlas,\n faAtlas: faAtlas,\n faVirus: faVirus,\n faEnvelopeCircleCheck: faEnvelopeCircleCheck,\n faLayerGroup: faLayerGroup,\n faArrowsToDot: faArrowsToDot,\n faArchway: faArchway,\n faHeartCircleCheck: faHeartCircleCheck,\n faHouseChimneyCrack: faHouseChimneyCrack,\n faHouseDamage: faHouseDamage,\n faFileZipper: faFileZipper,\n faFileArchive: faFileArchive,\n faSquare: faSquare,\n faMartiniGlassEmpty: faMartiniGlassEmpty,\n faGlassMartini: faGlassMartini,\n faCouch: faCouch,\n faCediSign: faCediSign,\n faItalic: faItalic,\n faChurch: faChurch,\n faCommentsDollar: faCommentsDollar,\n faDemocrat: faDemocrat,\n faZ: faZ,\n faPersonSkiing: faPersonSkiing,\n faSkiing: faSkiing,\n faRoadLock: faRoadLock,\n faA: faA,\n faTemperatureArrowDown: faTemperatureArrowDown,\n faTemperatureDown: faTemperatureDown,\n faFeatherPointed: faFeatherPointed,\n faFeatherAlt: faFeatherAlt,\n faP: faP,\n faSnowflake: faSnowflake,\n faNewspaper: faNewspaper,\n faRectangleAd: faRectangleAd,\n faAd: faAd,\n faCircleArrowRight: faCircleArrowRight,\n faArrowCircleRight: faArrowCircleRight,\n faFilterCircleXmark: faFilterCircleXmark,\n faLocust: faLocust,\n faSort: faSort,\n faUnsorted: faUnsorted,\n faListOl: faListOl,\n faList12: faList12,\n faListNumeric: faListNumeric,\n faPersonDressBurst: faPersonDressBurst,\n faMoneyCheckDollar: faMoneyCheckDollar,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faVectorSquare: faVectorSquare,\n faBreadSlice: faBreadSlice,\n faLanguage: faLanguage,\n faFaceKissWinkHeart: faFaceKissWinkHeart,\n faKissWinkHeart: faKissWinkHeart,\n faFilter: faFilter,\n faQuestion: faQuestion,\n faFileSignature: faFileSignature,\n faUpDownLeftRight: faUpDownLeftRight,\n faArrowsAlt: faArrowsAlt,\n faHouseChimneyUser: faHouseChimneyUser,\n faHandHoldingHeart: faHandHoldingHeart,\n faPuzzlePiece: faPuzzlePiece,\n faMoneyCheck: faMoneyCheck,\n faStarHalfStroke: faStarHalfStroke,\n faStarHalfAlt: faStarHalfAlt,\n faCode: faCode,\n faWhiskeyGlass: faWhiskeyGlass,\n faGlassWhiskey: faGlassWhiskey,\n faBuildingCircleExclamation: faBuildingCircleExclamation,\n faMagnifyingGlassChart: faMagnifyingGlassChart,\n faArrowUpRightFromSquare: faArrowUpRightFromSquare,\n faExternalLink: faExternalLink,\n faCubesStacked: faCubesStacked,\n faWonSign: faWonSign,\n faKrw: faKrw,\n faWon: faWon,\n faVirusCovid: faVirusCovid,\n faAustralSign: faAustralSign,\n faF: faF,\n faLeaf: faLeaf,\n faRoad: faRoad,\n faTaxi: faTaxi,\n faCab: faCab,\n faPersonCirclePlus: faPersonCirclePlus,\n faChartPie: faChartPie,\n faPieChart: faPieChart,\n faBoltLightning: faBoltLightning,\n faSackXmark: faSackXmark,\n faFileExcel: faFileExcel,\n faFileContract: faFileContract,\n faFishFins: faFishFins,\n faBuildingFlag: faBuildingFlag,\n faFaceGrinBeam: faFaceGrinBeam,\n faGrinBeam: faGrinBeam,\n faObjectUngroup: faObjectUngroup,\n faPoop: faPoop,\n faLocationPin: faLocationPin,\n faMapMarker: faMapMarker,\n faKaaba: faKaaba,\n faToiletPaper: faToiletPaper,\n faHelmetSafety: faHelmetSafety,\n faHardHat: faHardHat,\n faHatHard: faHatHard,\n faEject: faEject,\n faCircleRight: faCircleRight,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faPlaneCircleCheck: faPlaneCircleCheck,\n faFaceRollingEyes: faFaceRollingEyes,\n faMehRollingEyes: faMehRollingEyes,\n faObjectGroup: faObjectGroup,\n faChartLine: faChartLine,\n faLineChart: faLineChart,\n faMaskVentilator: faMaskVentilator,\n faArrowRight: faArrowRight,\n faSignsPost: faSignsPost,\n faMapSigns: faMapSigns,\n faCashRegister: faCashRegister,\n faPersonCircleQuestion: faPersonCircleQuestion,\n faH: faH,\n faTarp: faTarp,\n faScrewdriverWrench: faScrewdriverWrench,\n faTools: faTools,\n faArrowsToEye: faArrowsToEye,\n faPlugCircleBolt: faPlugCircleBolt,\n faHeart: faHeart,\n faMarsAndVenus: faMarsAndVenus,\n faHouseUser: faHouseUser,\n faHomeUser: faHomeUser,\n faDumpsterFire: faDumpsterFire,\n faHouseCrack: faHouseCrack,\n faMartiniGlassCitrus: faMartiniGlassCitrus,\n faCocktail: faCocktail,\n faFaceSurprise: faFaceSurprise,\n faSurprise: faSurprise,\n faBottleWater: faBottleWater,\n faCirclePause: faCirclePause,\n faPauseCircle: faPauseCircle,\n faToiletPaperSlash: faToiletPaperSlash,\n faAppleWhole: faAppleWhole,\n faAppleAlt: faAppleAlt,\n faKitchenSet: faKitchenSet,\n faR: faR,\n faTemperatureQuarter: faTemperatureQuarter,\n faTemperature1: faTemperature1,\n faThermometer1: faThermometer1,\n faThermometerQuarter: faThermometerQuarter,\n faCube: faCube,\n faBitcoinSign: faBitcoinSign,\n faShieldDog: faShieldDog,\n faSolarPanel: faSolarPanel,\n faLockOpen: faLockOpen,\n faElevator: faElevator,\n faMoneyBillTransfer: faMoneyBillTransfer,\n faMoneyBillTrendUp: faMoneyBillTrendUp,\n faHouseFloodWaterCircleArrowRight: faHouseFloodWaterCircleArrowRight,\n faSquarePollHorizontal: faSquarePollHorizontal,\n faPollH: faPollH,\n faCircle: faCircle,\n faBackwardFast: faBackwardFast,\n faFastBackward: faFastBackward,\n faRecycle: faRecycle,\n faUserAstronaut: faUserAstronaut,\n faPlaneSlash: faPlaneSlash,\n faTrademark: faTrademark,\n faBasketball: faBasketball,\n faBasketballBall: faBasketballBall,\n faSatelliteDish: faSatelliteDish,\n faCircleUp: faCircleUp,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faMobileScreenButton: faMobileScreenButton,\n faMobileAlt: faMobileAlt,\n faVolumeHigh: faVolumeHigh,\n faVolumeUp: faVolumeUp,\n faUsersRays: faUsersRays,\n faWallet: faWallet,\n faClipboardCheck: faClipboardCheck,\n faFileAudio: faFileAudio,\n faBurger: faBurger,\n faHamburger: faHamburger,\n faWrench: faWrench,\n faBugs: faBugs,\n faRupeeSign: faRupeeSign,\n faRupee: faRupee,\n faFileImage: faFileImage,\n faCircleQuestion: faCircleQuestion,\n faQuestionCircle: faQuestionCircle,\n faPlaneDeparture: faPlaneDeparture,\n faHandshakeSlash: faHandshakeSlash,\n faBookBookmark: faBookBookmark,\n faCodeBranch: faCodeBranch,\n faHatCowboy: faHatCowboy,\n faBridge: faBridge,\n faPhoneFlip: faPhoneFlip,\n faPhoneAlt: faPhoneAlt,\n faTruckFront: faTruckFront,\n faCat: faCat,\n faAnchorCircleExclamation: faAnchorCircleExclamation,\n faTruckField: faTruckField,\n faRoute: faRoute,\n faClipboardQuestion: faClipboardQuestion,\n faPanorama: faPanorama,\n faCommentMedical: faCommentMedical,\n faTeethOpen: faTeethOpen,\n faFileCircleMinus: faFileCircleMinus,\n faTags: faTags,\n faWineGlass: faWineGlass,\n faForwardFast: faForwardFast,\n faFastForward: faFastForward,\n faFaceMehBlank: faFaceMehBlank,\n faMehBlank: faMehBlank,\n faSquareParking: faSquareParking,\n faParking: faParking,\n faHouseSignal: faHouseSignal,\n faBarsProgress: faBarsProgress,\n faTasksAlt: faTasksAlt,\n faFaucetDrip: faFaucetDrip,\n faCartFlatbed: faCartFlatbed,\n faDollyFlatbed: faDollyFlatbed,\n faBanSmoking: faBanSmoking,\n faSmokingBan: faSmokingBan,\n faTerminal: faTerminal,\n faMobileButton: faMobileButton,\n faHouseMedicalFlag: faHouseMedicalFlag,\n faBasketShopping: faBasketShopping,\n faShoppingBasket: faShoppingBasket,\n faTape: faTape,\n faBusSimple: faBusSimple,\n faBusAlt: faBusAlt,\n faEye: faEye,\n faFaceSadCry: faFaceSadCry,\n faSadCry: faSadCry,\n faAudioDescription: faAudioDescription,\n faPersonMilitaryToPerson: faPersonMilitaryToPerson,\n faFileShield: faFileShield,\n faUserSlash: faUserSlash,\n faPen: faPen,\n faTowerObservation: faTowerObservation,\n faFileCode: faFileCode,\n faSignal: faSignal,\n faSignal5: faSignal5,\n faSignalPerfect: faSignalPerfect,\n faBus: faBus,\n faHeartCircleXmark: faHeartCircleXmark,\n faHouseChimney: faHouseChimney,\n faHomeLg: faHomeLg,\n faWindowMaximize: faWindowMaximize,\n faFaceFrown: faFaceFrown,\n faFrown: faFrown,\n faPrescription: faPrescription,\n faShop: faShop,\n faStoreAlt: faStoreAlt,\n faFloppyDisk: faFloppyDisk,\n faSave: faSave,\n faVihara: faVihara,\n faScaleUnbalanced: faScaleUnbalanced,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faSortUp: faSortUp,\n faSortAsc: faSortAsc,\n faCommentDots: faCommentDots,\n faCommenting: faCommenting,\n faPlantWilt: faPlantWilt,\n faDiamond: faDiamond,\n faFaceGrinSquint: faFaceGrinSquint,\n faGrinSquint: faGrinSquint,\n faHandHoldingDollar: faHandHoldingDollar,\n faHandHoldingUsd: faHandHoldingUsd,\n faBacterium: faBacterium,\n faHandPointer: faHandPointer,\n faDrumSteelpan: faDrumSteelpan,\n faHandScissors: faHandScissors,\n faHandsPraying: faHandsPraying,\n faPrayingHands: faPrayingHands,\n faArrowRotateRight: faArrowRotateRight,\n faArrowRightRotate: faArrowRightRotate,\n faArrowRotateForward: faArrowRotateForward,\n faRedo: faRedo,\n faBiohazard: faBiohazard,\n faLocationCrosshairs: faLocationCrosshairs,\n faLocation: faLocation,\n faMarsDouble: faMarsDouble,\n faChildDress: faChildDress,\n faUsersBetweenLines: faUsersBetweenLines,\n faLungsVirus: faLungsVirus,\n faFaceGrinTears: faFaceGrinTears,\n faGrinTears: faGrinTears,\n faPhone: faPhone,\n faCalendarXmark: faCalendarXmark,\n faCalendarTimes: faCalendarTimes,\n faChildReaching: faChildReaching,\n faHeadSideVirus: faHeadSideVirus,\n faUserGear: faUserGear,\n faUserCog: faUserCog,\n faArrowUp19: faArrowUp19,\n faSortNumericUp: faSortNumericUp,\n faDoorClosed: faDoorClosed,\n faShieldVirus: faShieldVirus,\n faDiceSix: faDiceSix,\n faMosquitoNet: faMosquitoNet,\n faBridgeWater: faBridgeWater,\n faPersonBooth: faPersonBooth,\n faTextWidth: faTextWidth,\n faHatWizard: faHatWizard,\n faPenFancy: faPenFancy,\n faPersonDigging: faPersonDigging,\n faDigging: faDigging,\n faTrash: faTrash,\n faGaugeSimple: faGaugeSimple,\n faGaugeSimpleMed: faGaugeSimpleMed,\n faTachometerAverage: faTachometerAverage,\n faBookMedical: faBookMedical,\n faPoo: faPoo,\n faQuoteRight: faQuoteRight,\n faQuoteRightAlt: faQuoteRightAlt,\n faShirt: faShirt,\n faTShirt: faTShirt,\n faTshirt: faTshirt,\n faCubes: faCubes,\n faDivide: faDivide,\n faTengeSign: faTengeSign,\n faTenge: faTenge,\n faHeadphones: faHeadphones,\n faHandsHolding: faHandsHolding,\n faHandsClapping: faHandsClapping,\n faRepublican: faRepublican,\n faArrowLeft: faArrowLeft,\n faPersonCircleXmark: faPersonCircleXmark,\n faRuler: faRuler,\n faAlignLeft: faAlignLeft,\n faDiceD6: faDiceD6,\n faRestroom: faRestroom,\n faJ: faJ,\n faUsersViewfinder: faUsersViewfinder,\n faFileVideo: faFileVideo,\n faUpRightFromSquare: faUpRightFromSquare,\n faExternalLinkAlt: faExternalLinkAlt,\n faTableCells: faTableCells,\n faTh: faTh,\n faFilePdf: faFilePdf,\n faBookBible: faBookBible,\n faBible: faBible,\n faO: faO,\n faSuitcaseMedical: faSuitcaseMedical,\n faMedkit: faMedkit,\n faUserSecret: faUserSecret,\n faOtter: faOtter,\n faPersonDress: faPersonDress,\n faFemale: faFemale,\n faCommentDollar: faCommentDollar,\n faBusinessTime: faBusinessTime,\n faBriefcaseClock: faBriefcaseClock,\n faTableCellsLarge: faTableCellsLarge,\n faThLarge: faThLarge,\n faBookTanakh: faBookTanakh,\n faTanakh: faTanakh,\n faPhoneVolume: faPhoneVolume,\n faVolumeControlPhone: faVolumeControlPhone,\n faHatCowboySide: faHatCowboySide,\n faClipboardUser: faClipboardUser,\n faChild: faChild,\n faLiraSign: faLiraSign,\n faSatellite: faSatellite,\n faPlaneLock: faPlaneLock,\n faTag: faTag,\n faComment: faComment,\n faCakeCandles: faCakeCandles,\n faBirthdayCake: faBirthdayCake,\n faCake: faCake,\n faEnvelope: faEnvelope,\n faAnglesUp: faAnglesUp,\n faAngleDoubleUp: faAngleDoubleUp,\n faPaperclip: faPaperclip,\n faArrowRightToCity: faArrowRightToCity,\n faRibbon: faRibbon,\n faLungs: faLungs,\n faArrowUp91: faArrowUp91,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faLitecoinSign: faLitecoinSign,\n faBorderNone: faBorderNone,\n faCircleNodes: faCircleNodes,\n faParachuteBox: faParachuteBox,\n faIndent: faIndent,\n faTruckFieldUn: faTruckFieldUn,\n faHourglass: faHourglass,\n faHourglassEmpty: faHourglassEmpty,\n faMountain: faMountain,\n faUserDoctor: faUserDoctor,\n faUserMd: faUserMd,\n faCircleInfo: faCircleInfo,\n faInfoCircle: faInfoCircle,\n faCloudMeatball: faCloudMeatball,\n faCamera: faCamera,\n faCameraAlt: faCameraAlt,\n faSquareVirus: faSquareVirus,\n faMeteor: faMeteor,\n faCarOn: faCarOn,\n faSleigh: faSleigh,\n faArrowDown19: faArrowDown19,\n faSortNumericAsc: faSortNumericAsc,\n faSortNumericDown: faSortNumericDown,\n faHandHoldingDroplet: faHandHoldingDroplet,\n faHandHoldingWater: faHandHoldingWater,\n faWater: faWater,\n faCalendarCheck: faCalendarCheck,\n faBraille: faBraille,\n faPrescriptionBottleMedical: faPrescriptionBottleMedical,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faLandmark: faLandmark,\n faTruck: faTruck,\n faCrosshairs: faCrosshairs,\n faPersonCane: faPersonCane,\n faTent: faTent,\n faVestPatches: faVestPatches,\n faCheckDouble: faCheckDouble,\n faArrowDownAZ: faArrowDownAZ,\n faSortAlphaAsc: faSortAlphaAsc,\n faSortAlphaDown: faSortAlphaDown,\n faMoneyBillWheat: faMoneyBillWheat,\n faCookie: faCookie,\n faArrowRotateLeft: faArrowRotateLeft,\n faArrowLeftRotate: faArrowLeftRotate,\n faArrowRotateBack: faArrowRotateBack,\n faArrowRotateBackward: faArrowRotateBackward,\n faUndo: faUndo,\n faHardDrive: faHardDrive,\n faHdd: faHdd,\n faFaceGrinSquintTears: faFaceGrinSquintTears,\n faGrinSquintTears: faGrinSquintTears,\n faDumbbell: faDumbbell,\n faRectangleList: faRectangleList,\n faListAlt: faListAlt,\n faTarpDroplet: faTarpDroplet,\n faHouseMedicalCircleCheck: faHouseMedicalCircleCheck,\n faPersonSkiingNordic: faPersonSkiingNordic,\n faSkiingNordic: faSkiingNordic,\n faCalendarPlus: faCalendarPlus,\n faPlaneArrival: faPlaneArrival,\n faCircleLeft: faCircleLeft,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faTrainSubway: faTrainSubway,\n faSubway: faSubway,\n faChartGantt: faChartGantt,\n faIndianRupeeSign: faIndianRupeeSign,\n faIndianRupee: faIndianRupee,\n faInr: faInr,\n faCropSimple: faCropSimple,\n faCropAlt: faCropAlt,\n faMoneyBill1: faMoneyBill1,\n faMoneyBillAlt: faMoneyBillAlt,\n faLeftLong: faLeftLong,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faDna: faDna,\n faVirusSlash: faVirusSlash,\n faMinus: faMinus,\n faSubtract: faSubtract,\n faChess: faChess,\n faArrowLeftLong: faArrowLeftLong,\n faLongArrowLeft: faLongArrowLeft,\n faPlugCircleCheck: faPlugCircleCheck,\n faStreetView: faStreetView,\n faFrancSign: faFrancSign,\n faVolumeOff: faVolumeOff,\n faHandsAslInterpreting: faHandsAslInterpreting,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAslInterpreting: faAslInterpreting,\n faHandsAmericanSignLanguageInterpreting: faHandsAmericanSignLanguageInterpreting,\n faGear: faGear,\n faCog: faCog,\n faDropletSlash: faDropletSlash,\n faTintSlash: faTintSlash,\n faMosque: faMosque,\n faMosquito: faMosquito,\n faStarOfDavid: faStarOfDavid,\n faPersonMilitaryRifle: faPersonMilitaryRifle,\n faCartShopping: faCartShopping,\n faShoppingCart: faShoppingCart,\n faVials: faVials,\n faPlugCirclePlus: faPlugCirclePlus,\n faPlaceOfWorship: faPlaceOfWorship,\n faGripVertical: faGripVertical,\n faArrowTurnUp: faArrowTurnUp,\n faLevelUp: faLevelUp,\n faU: faU,\n faSquareRootVariable: faSquareRootVariable,\n faSquareRootAlt: faSquareRootAlt,\n faClock: faClock,\n faClockFour: faClockFour,\n faBackwardStep: faBackwardStep,\n faStepBackward: faStepBackward,\n faPallet: faPallet,\n faFaucet: faFaucet,\n faBaseballBatBall: faBaseballBatBall,\n faS: faS,\n faTimeline: faTimeline,\n faKeyboard: faKeyboard,\n faCaretDown: faCaretDown,\n faHouseChimneyMedical: faHouseChimneyMedical,\n faClinicMedical: faClinicMedical,\n faTemperatureThreeQuarters: faTemperatureThreeQuarters,\n faTemperature3: faTemperature3,\n faThermometer3: faThermometer3,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faMobileScreen: faMobileScreen,\n faMobileAndroidAlt: faMobileAndroidAlt,\n faPlaneUp: faPlaneUp,\n faPiggyBank: faPiggyBank,\n faBatteryHalf: faBatteryHalf,\n faBattery3: faBattery3,\n faMountainCity: faMountainCity,\n faCoins: faCoins,\n faKhanda: faKhanda,\n faSliders: faSliders,\n faSlidersH: faSlidersH,\n faFolderTree: faFolderTree,\n faNetworkWired: faNetworkWired,\n faMapPin: faMapPin,\n faHamsa: faHamsa,\n faCentSign: faCentSign,\n faFlask: faFlask,\n faPersonPregnant: faPersonPregnant,\n faWandSparkles: faWandSparkles,\n faEllipsisVertical: faEllipsisVertical,\n faEllipsisV: faEllipsisV,\n faTicket: faTicket,\n faPowerOff: faPowerOff,\n faRightLong: faRightLong,\n faLongArrowAltRight: faLongArrowAltRight,\n faFlagUsa: faFlagUsa,\n faLaptopFile: faLaptopFile,\n faTty: faTty,\n faTeletype: faTeletype,\n faDiagramNext: faDiagramNext,\n faPersonRifle: faPersonRifle,\n faHouseMedicalCircleExclamation: faHouseMedicalCircleExclamation,\n faClosedCaptioning: faClosedCaptioning,\n faPersonHiking: faPersonHiking,\n faHiking: faHiking,\n faVenusDouble: faVenusDouble,\n faImages: faImages,\n faCalculator: faCalculator,\n faPeoplePulling: faPeoplePulling,\n faN: faN,\n faCableCar: faCableCar,\n faTram: faTram,\n faCloudRain: faCloudRain,\n faBuildingCircleXmark: faBuildingCircleXmark,\n faShip: faShip,\n faArrowsDownToLine: faArrowsDownToLine,\n faDownload: faDownload,\n faFaceGrin: faFaceGrin,\n faGrin: faGrin,\n faDeleteLeft: faDeleteLeft,\n faBackspace: faBackspace,\n faEyeDropper: faEyeDropper,\n faEyeDropperEmpty: faEyeDropperEmpty,\n faEyedropper: faEyedropper,\n faFileCircleCheck: faFileCircleCheck,\n faForward: faForward,\n faMobile: faMobile,\n faMobileAndroid: faMobileAndroid,\n faMobilePhone: faMobilePhone,\n faFaceMeh: faFaceMeh,\n faMeh: faMeh,\n faAlignCenter: faAlignCenter,\n faBookSkull: faBookSkull,\n faBookDead: faBookDead,\n faIdCard: faIdCard,\n faDriversLicense: faDriversLicense,\n faOutdent: faOutdent,\n faDedent: faDedent,\n faHeartCircleExclamation: faHeartCircleExclamation,\n faHouse: faHouse,\n faHome: faHome,\n faHomeAlt: faHomeAlt,\n faHomeLgAlt: faHomeLgAlt,\n faCalendarWeek: faCalendarWeek,\n faLaptopMedical: faLaptopMedical,\n faB: faB,\n faFileMedical: faFileMedical,\n faDiceOne: faDiceOne,\n faKiwiBird: faKiwiBird,\n faArrowRightArrowLeft: faArrowRightArrowLeft,\n faExchange: faExchange,\n faRotateRight: faRotateRight,\n faRedoAlt: faRedoAlt,\n faRotateForward: faRotateForward,\n faUtensils: faUtensils,\n faCutlery: faCutlery,\n faArrowUpWideShort: faArrowUpWideShort,\n faSortAmountUp: faSortAmountUp,\n faMillSign: faMillSign,\n faBowlRice: faBowlRice,\n faSkull: faSkull,\n faTowerBroadcast: faTowerBroadcast,\n faBroadcastTower: faBroadcastTower,\n faTruckPickup: faTruckPickup,\n faUpLong: faUpLong,\n faLongArrowAltUp: faLongArrowAltUp,\n faStop: faStop,\n faCodeMerge: faCodeMerge,\n faUpload: faUpload,\n faHurricane: faHurricane,\n faMound: faMound,\n faToiletPortable: faToiletPortable,\n faCompactDisc: faCompactDisc,\n faFileArrowDown: faFileArrowDown,\n faFileDownload: faFileDownload,\n faCaravan: faCaravan,\n faShieldCat: faShieldCat,\n faBolt: faBolt,\n faZap: faZap,\n faGlassWater: faGlassWater,\n faOilWell: faOilWell,\n faVault: faVault,\n faMars: faMars,\n faToilet: faToilet,\n faPlaneCircleXmark: faPlaneCircleXmark,\n faYenSign: faYenSign,\n faCny: faCny,\n faJpy: faJpy,\n faRmb: faRmb,\n faYen: faYen,\n faRubleSign: faRubleSign,\n faRouble: faRouble,\n faRub: faRub,\n faRuble: faRuble,\n faSun: faSun,\n faGuitar: faGuitar,\n faFaceLaughWink: faFaceLaughWink,\n faLaughWink: faLaughWink,\n faHorseHead: faHorseHead,\n faBoreHole: faBoreHole,\n faIndustry: faIndustry,\n faCircleDown: faCircleDown,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowsTurnToDots: faArrowsTurnToDots,\n faFlorinSign: faFlorinSign,\n faArrowDownShortWide: faArrowDownShortWide,\n faSortAmountDesc: faSortAmountDesc,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faLessThan: faLessThan,\n faAngleDown: faAngleDown,\n faCarTunnel: faCarTunnel,\n faHeadSideCough: faHeadSideCough,\n faGripLines: faGripLines,\n faThumbsDown: faThumbsDown,\n faUserLock: faUserLock,\n faArrowRightLong: faArrowRightLong,\n faLongArrowRight: faLongArrowRight,\n faAnchorCircleXmark: faAnchorCircleXmark,\n faEllipsis: faEllipsis,\n faEllipsisH: faEllipsisH,\n faChessPawn: faChessPawn,\n faKitMedical: faKitMedical,\n faFirstAid: faFirstAid,\n faPersonThroughWindow: faPersonThroughWindow,\n faToolbox: faToolbox,\n faHandsHoldingCircle: faHandsHoldingCircle,\n faBug: faBug,\n faCreditCard: faCreditCard,\n faCreditCardAlt: faCreditCardAlt,\n faCar: faCar,\n faAutomobile: faAutomobile,\n faHandHoldingHand: faHandHoldingHand,\n faBookOpenReader: faBookOpenReader,\n faBookReader: faBookReader,\n faMountainSun: faMountainSun,\n faArrowsLeftRightToLine: faArrowsLeftRightToLine,\n faDiceD20: faDiceD20,\n faTruckDroplet: faTruckDroplet,\n faFileCircleXmark: faFileCircleXmark,\n faTemperatureArrowUp: faTemperatureArrowUp,\n faTemperatureUp: faTemperatureUp,\n faMedal: faMedal,\n faBed: faBed,\n faSquareH: faSquareH,\n faHSquare: faHSquare,\n faPodcast: faPodcast,\n faTemperatureFull: faTemperatureFull,\n faTemperature4: faTemperature4,\n faThermometer4: faThermometer4,\n faThermometerFull: faThermometerFull,\n faBell: faBell,\n faSuperscript: faSuperscript,\n faPlugCircleXmark: faPlugCircleXmark,\n faStarOfLife: faStarOfLife,\n faPhoneSlash: faPhoneSlash,\n faPaintRoller: faPaintRoller,\n faHandshakeAngle: faHandshakeAngle,\n faHandsHelping: faHandsHelping,\n faLocationDot: faLocationDot,\n faMapMarkerAlt: faMapMarkerAlt,\n faFile: faFile,\n faGreaterThan: faGreaterThan,\n faPersonSwimming: faPersonSwimming,\n faSwimmer: faSwimmer,\n faArrowDown: faArrowDown,\n faDroplet: faDroplet,\n faTint: faTint,\n faEraser: faEraser,\n faEarthAmericas: faEarthAmericas,\n faEarth: faEarth,\n faEarthAmerica: faEarthAmerica,\n faGlobeAmericas: faGlobeAmericas,\n faPersonBurst: faPersonBurst,\n faDove: faDove,\n faBatteryEmpty: faBatteryEmpty,\n faBattery0: faBattery0,\n faSocks: faSocks,\n faInbox: faInbox,\n faSection: faSection,\n faGaugeHigh: faGaugeHigh,\n faTachometerAlt: faTachometerAlt,\n faTachometerAltFast: faTachometerAltFast,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalWide: faHospitalWide,\n faWineBottle: faWineBottle,\n faChessRook: faChessRook,\n faBarsStaggered: faBarsStaggered,\n faReorder: faReorder,\n faStream: faStream,\n faDharmachakra: faDharmachakra,\n faHotdog: faHotdog,\n faPersonWalkingWithCane: faPersonWalkingWithCane,\n faBlind: faBlind,\n faDrum: faDrum,\n faIceCream: faIceCream,\n faHeartCircleBolt: faHeartCircleBolt,\n faFax: faFax,\n faParagraph: faParagraph,\n faCheckToSlot: faCheckToSlot,\n faVoteYea: faVoteYea,\n faStarHalf: faStarHalf,\n faBoxesStacked: faBoxesStacked,\n faBoxes: faBoxes,\n faBoxesAlt: faBoxesAlt,\n faLink: faLink,\n faChain: faChain,\n faEarListen: faEarListen,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faTreeCity: faTreeCity,\n faPlay: faPlay,\n faFont: faFont,\n faRupiahSign: faRupiahSign,\n faMagnifyingGlass: faMagnifyingGlass,\n faSearch: faSearch,\n faTableTennisPaddleBall: faTableTennisPaddleBall,\n faPingPongPaddleBall: faPingPongPaddleBall,\n faTableTennis: faTableTennis,\n faPersonDotsFromLine: faPersonDotsFromLine,\n faDiagnoses: faDiagnoses,\n faTrashCanArrowUp: faTrashCanArrowUp,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faNairaSign: faNairaSign,\n faCartArrowDown: faCartArrowDown,\n faWalkieTalkie: faWalkieTalkie,\n faFilePen: faFilePen,\n faFileEdit: faFileEdit,\n faReceipt: faReceipt,\n faSquarePen: faSquarePen,\n faPenSquare: faPenSquare,\n faPencilSquare: faPencilSquare,\n faSuitcaseRolling: faSuitcaseRolling,\n faPersonCircleExclamation: faPersonCircleExclamation,\n faChevronDown: faChevronDown,\n faBatteryFull: faBatteryFull,\n faBattery: faBattery,\n faBattery5: faBattery5,\n faSkullCrossbones: faSkullCrossbones,\n faCodeCompare: faCodeCompare,\n faListUl: faListUl,\n faListDots: faListDots,\n faSchoolLock: faSchoolLock,\n faTowerCell: faTowerCell,\n faDownLong: faDownLong,\n faLongArrowAltDown: faLongArrowAltDown,\n faRankingStar: faRankingStar,\n faChessKing: faChessKing,\n faPersonHarassing: faPersonHarassing,\n faBrazilianRealSign: faBrazilianRealSign,\n faLandmarkDome: faLandmarkDome,\n faLandmarkAlt: faLandmarkAlt,\n faArrowUp: faArrowUp,\n faTv: faTv,\n faTelevision: faTelevision,\n faTvAlt: faTvAlt,\n faShrimp: faShrimp,\n faListCheck: faListCheck,\n faTasks: faTasks,\n faJugDetergent: faJugDetergent,\n faCircleUser: faCircleUser,\n faUserCircle: faUserCircle,\n faUserShield: faUserShield,\n faWind: faWind,\n faCarBurst: faCarBurst,\n faCarCrash: faCarCrash,\n faY: faY,\n faPersonSnowboarding: faPersonSnowboarding,\n faSnowboarding: faSnowboarding,\n faTruckFast: faTruckFast,\n faShippingFast: faShippingFast,\n faFish: faFish,\n faUserGraduate: faUserGraduate,\n faCircleHalfStroke: faCircleHalfStroke,\n faAdjust: faAdjust,\n faClapperboard: faClapperboard,\n faCircleRadiation: faCircleRadiation,\n faRadiationAlt: faRadiationAlt,\n faBaseball: faBaseball,\n faBaseballBall: faBaseballBall,\n faJetFighterUp: faJetFighterUp,\n faDiagramProject: faDiagramProject,\n faProjectDiagram: faProjectDiagram,\n faCopy: faCopy,\n faVolumeXmark: faVolumeXmark,\n faVolumeMute: faVolumeMute,\n faVolumeTimes: faVolumeTimes,\n faHandSparkles: faHandSparkles,\n faGrip: faGrip,\n faGripHorizontal: faGripHorizontal,\n faShareFromSquare: faShareFromSquare,\n faShareSquare: faShareSquare,\n faChildCombatant: faChildCombatant,\n faChildRifle: faChildRifle,\n faGun: faGun,\n faSquarePhone: faSquarePhone,\n faPhoneSquare: faPhoneSquare,\n faPlus: faPlus,\n faAdd: faAdd,\n faExpand: faExpand,\n faComputer: faComputer,\n faXmark: faXmark,\n faClose: faClose,\n faMultiply: faMultiply,\n faRemove: faRemove,\n faTimes: faTimes,\n faArrowsUpDownLeftRight: faArrowsUpDownLeftRight,\n faArrows: faArrows,\n faChalkboardUser: faChalkboardUser,\n faChalkboardTeacher: faChalkboardTeacher,\n faPesoSign: faPesoSign,\n faBuildingShield: faBuildingShield,\n faBaby: faBaby,\n faUsersLine: faUsersLine,\n faQuoteLeft: faQuoteLeft,\n faQuoteLeftAlt: faQuoteLeftAlt,\n faTractor: faTractor,\n faTrashArrowUp: faTrashArrowUp,\n faTrashRestore: faTrashRestore,\n faArrowDownUpLock: faArrowDownUpLock,\n faLinesLeaning: faLinesLeaning,\n faRulerCombined: faRulerCombined,\n faCopyright: faCopyright,\n faEquals: faEquals,\n faBlender: faBlender,\n faTeeth: faTeeth,\n faShekelSign: faShekelSign,\n faIls: faIls,\n faShekel: faShekel,\n faSheqel: faSheqel,\n faSheqelSign: faSheqelSign,\n faMap: faMap,\n faRocket: faRocket,\n faPhotoFilm: faPhotoFilm,\n faPhotoVideo: faPhotoVideo,\n faFolderMinus: faFolderMinus,\n faStore: faStore,\n faArrowTrendUp: faArrowTrendUp,\n faPlugCircleMinus: faPlugCircleMinus,\n faSignHanging: faSignHanging,\n faSign: faSign,\n faBezierCurve: faBezierCurve,\n faBellSlash: faBellSlash,\n faTablet: faTablet,\n faTabletAndroid: faTabletAndroid,\n faSchoolFlag: faSchoolFlag,\n faFill: faFill,\n faAngleUp: faAngleUp,\n faDrumstickBite: faDrumstickBite,\n faHollyBerry: faHollyBerry,\n faChevronLeft: faChevronLeft,\n faBacteria: faBacteria,\n faHandLizard: faHandLizard,\n faNotdef: faNotdef,\n faDisease: faDisease,\n faBriefcaseMedical: faBriefcaseMedical,\n faGenderless: faGenderless,\n faChevronRight: faChevronRight,\n faRetweet: faRetweet,\n faCarRear: faCarRear,\n faCarAlt: faCarAlt,\n faPumpSoap: faPumpSoap,\n faVideoSlash: faVideoSlash,\n faBatteryQuarter: faBatteryQuarter,\n faBattery2: faBattery2,\n faRadio: faRadio,\n faBabyCarriage: faBabyCarriage,\n faCarriageBaby: faCarriageBaby,\n faTrafficLight: faTrafficLight,\n faThermometer: faThermometer,\n faVrCardboard: faVrCardboard,\n faHandMiddleFinger: faHandMiddleFinger,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faTruckMoving: faTruckMoving,\n faGlassWaterDroplet: faGlassWaterDroplet,\n faDisplay: faDisplay,\n faFaceSmile: faFaceSmile,\n faSmile: faSmile,\n faThumbtack: faThumbtack,\n faThumbTack: faThumbTack,\n faTrophy: faTrophy,\n faPersonPraying: faPersonPraying,\n faPray: faPray,\n faHammer: faHammer,\n faHandPeace: faHandPeace,\n faRotate: faRotate,\n faSyncAlt: faSyncAlt,\n faSpinner: faSpinner,\n faRobot: faRobot,\n faPeace: faPeace,\n faGears: faGears,\n faCogs: faCogs,\n faWarehouse: faWarehouse,\n faArrowUpRightDots: faArrowUpRightDots,\n faSplotch: faSplotch,\n faFaceGrinHearts: faFaceGrinHearts,\n faGrinHearts: faGrinHearts,\n faDiceFour: faDiceFour,\n faSimCard: faSimCard,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faMercury: faMercury,\n faArrowTurnDown: faArrowTurnDown,\n faLevelDown: faLevelDown,\n faPersonFallingBurst: faPersonFallingBurst,\n faAward: faAward,\n faTicketSimple: faTicketSimple,\n faTicketAlt: faTicketAlt,\n faBuilding: faBuilding,\n faAnglesLeft: faAnglesLeft,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faQrcode: faQrcode,\n faClockRotateLeft: faClockRotateLeft,\n faHistory: faHistory,\n faFaceGrinBeamSweat: faFaceGrinBeamSweat,\n faGrinBeamSweat: faGrinBeamSweat,\n faFileExport: faFileExport,\n faArrowRightFromFile: faArrowRightFromFile,\n faShield: faShield,\n faShieldBlank: faShieldBlank,\n faArrowUpShortWide: faArrowUpShortWide,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faHouseMedical: faHouseMedical,\n faGolfBallTee: faGolfBallTee,\n faGolfBall: faGolfBall,\n faCircleChevronLeft: faCircleChevronLeft,\n faChevronCircleLeft: faChevronCircleLeft,\n faHouseChimneyWindow: faHouseChimneyWindow,\n faPenNib: faPenNib,\n faTentArrowTurnLeft: faTentArrowTurnLeft,\n faTents: faTents,\n faWandMagic: faWandMagic,\n faMagic: faMagic,\n faDog: faDog,\n faCarrot: faCarrot,\n faMoon: faMoon,\n faWineGlassEmpty: faWineGlassEmpty,\n faWineGlassAlt: faWineGlassAlt,\n faCheese: faCheese,\n faYinYang: faYinYang,\n faMusic: faMusic,\n faCodeCommit: faCodeCommit,\n faTemperatureLow: faTemperatureLow,\n faPersonBiking: faPersonBiking,\n faBiking: faBiking,\n faBroom: faBroom,\n faShieldHeart: faShieldHeart,\n faGopuram: faGopuram,\n faEarthOceania: faEarthOceania,\n faGlobeOceania: faGlobeOceania,\n faSquareXmark: faSquareXmark,\n faTimesSquare: faTimesSquare,\n faXmarkSquare: faXmarkSquare,\n faHashtag: faHashtag,\n faUpRightAndDownLeftFromCenter: faUpRightAndDownLeftFromCenter,\n faExpandAlt: faExpandAlt,\n faOilCan: faOilCan,\n faT: faT,\n faHippo: faHippo,\n faChartColumn: faChartColumn,\n faInfinity: faInfinity,\n faVialCircleCheck: faVialCircleCheck,\n faPersonArrowDownToLine: faPersonArrowDownToLine,\n faVoicemail: faVoicemail,\n faFan: faFan,\n faPersonWalkingLuggage: faPersonWalkingLuggage,\n faUpDown: faUpDown,\n faArrowsAltV: faArrowsAltV,\n faCloudMoonRain: faCloudMoonRain,\n faCalendar: faCalendar,\n faTrailer: faTrailer,\n faBahai: faBahai,\n faHaykal: faHaykal,\n faSdCard: faSdCard,\n faDragon: faDragon,\n faShoePrints: faShoePrints,\n faCirclePlus: faCirclePlus,\n faPlusCircle: faPlusCircle,\n faFaceGrinTongueWink: faFaceGrinTongueWink,\n faGrinTongueWink: faGrinTongueWink,\n faHandHolding: faHandHolding,\n faPlugCircleExclamation: faPlugCircleExclamation,\n faLinkSlash: faLinkSlash,\n faChainBroken: faChainBroken,\n faChainSlash: faChainSlash,\n faUnlink: faUnlink,\n faClone: faClone,\n faPersonWalkingArrowLoopLeft: faPersonWalkingArrowLoopLeft,\n faArrowUpZA: faArrowUpZA,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faFireFlameCurved: faFireFlameCurved,\n faFireAlt: faFireAlt,\n faTornado: faTornado,\n faFileCirclePlus: faFileCirclePlus,\n faBookQuran: faBookQuran,\n faQuran: faQuran,\n faAnchor: faAnchor,\n faBorderAll: faBorderAll,\n faFaceAngry: faFaceAngry,\n faAngry: faAngry,\n faCookieBite: faCookieBite,\n faArrowTrendDown: faArrowTrendDown,\n faRss: faRss,\n faFeed: faFeed,\n faDrawPolygon: faDrawPolygon,\n faScaleBalanced: faScaleBalanced,\n faBalanceScale: faBalanceScale,\n faGaugeSimpleHigh: faGaugeSimpleHigh,\n faTachometer: faTachometer,\n faTachometerFast: faTachometerFast,\n faShower: faShower,\n faDesktop: faDesktop,\n faDesktopAlt: faDesktopAlt,\n faM: faM,\n faTableList: faTableList,\n faThList: faThList,\n faCommentSms: faCommentSms,\n faSms: faSms,\n faBook: faBook,\n faUserPlus: faUserPlus,\n faCheck: faCheck,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBattery4: faBattery4,\n faHouseCircleCheck: faHouseCircleCheck,\n faAngleLeft: faAngleLeft,\n faDiagramSuccessor: faDiagramSuccessor,\n faTruckArrowRight: faTruckArrowRight,\n faArrowsSplitUpAndLeft: faArrowsSplitUpAndLeft,\n faHandFist: faHandFist,\n faFistRaised: faFistRaised,\n faCloudMoon: faCloudMoon,\n faBriefcase: faBriefcase,\n faPersonFalling: faPersonFalling,\n faImagePortrait: faImagePortrait,\n faPortrait: faPortrait,\n faUserTag: faUserTag,\n faRug: faRug,\n faEarthEurope: faEarthEurope,\n faGlobeEurope: faGlobeEurope,\n faCartFlatbedSuitcase: faCartFlatbedSuitcase,\n faLuggageCart: faLuggageCart,\n faRectangleXmark: faRectangleXmark,\n faRectangleTimes: faRectangleTimes,\n faTimesRectangle: faTimesRectangle,\n faWindowClose: faWindowClose,\n faBahtSign: faBahtSign,\n faBookOpen: faBookOpen,\n faBookJournalWhills: faBookJournalWhills,\n faJournalWhills: faJournalWhills,\n faHandcuffs: faHandcuffs,\n faTriangleExclamation: faTriangleExclamation,\n faExclamationTriangle: faExclamationTriangle,\n faWarning: faWarning,\n faDatabase: faDatabase,\n faShare: faShare,\n faArrowTurnRight: faArrowTurnRight,\n faMailForward: faMailForward,\n faBottleDroplet: faBottleDroplet,\n faMaskFace: faMaskFace,\n faHillRockslide: faHillRockslide,\n faRightLeft: faRightLeft,\n faExchangeAlt: faExchangeAlt,\n faPaperPlane: faPaperPlane,\n faRoadCircleExclamation: faRoadCircleExclamation,\n faDungeon: faDungeon,\n faAlignRight: faAlignRight,\n faMoneyBill1Wave: faMoneyBill1Wave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faLifeRing: faLifeRing,\n faHands: faHands,\n faSignLanguage: faSignLanguage,\n faSigning: faSigning,\n faCalendarDay: faCalendarDay,\n faWaterLadder: faWaterLadder,\n faLadderWater: faLadderWater,\n faSwimmingPool: faSwimmingPool,\n faArrowsUpDown: faArrowsUpDown,\n faArrowsV: faArrowsV,\n faFaceGrimace: faFaceGrimace,\n faGrimace: faGrimace,\n faWheelchairMove: faWheelchairMove,\n faWheelchairAlt: faWheelchairAlt,\n faTurnDown: faTurnDown,\n faLevelDownAlt: faLevelDownAlt,\n faPersonWalkingArrowRight: faPersonWalkingArrowRight,\n faSquareEnvelope: faSquareEnvelope,\n faEnvelopeSquare: faEnvelopeSquare,\n faDice: faDice,\n faBowlingBall: faBowlingBall,\n faBrain: faBrain,\n faBandage: faBandage,\n faBandAid: faBandAid,\n faCalendarMinus: faCalendarMinus,\n faCircleXmark: faCircleXmark,\n faTimesCircle: faTimesCircle,\n faXmarkCircle: faXmarkCircle,\n faGifts: faGifts,\n faHotel: faHotel,\n faEarthAsia: faEarthAsia,\n faGlobeAsia: faGlobeAsia,\n faIdCardClip: faIdCardClip,\n faIdCardAlt: faIdCardAlt,\n faMagnifyingGlassPlus: faMagnifyingGlassPlus,\n faSearchPlus: faSearchPlus,\n faThumbsUp: faThumbsUp,\n faUserClock: faUserClock,\n faHandDots: faHandDots,\n faAllergies: faAllergies,\n faFileInvoice: faFileInvoice,\n faWindowMinimize: faWindowMinimize,\n faMugSaucer: faMugSaucer,\n faCoffee: faCoffee,\n faBrush: faBrush,\n faMask: faMask,\n faMagnifyingGlassMinus: faMagnifyingGlassMinus,\n faSearchMinus: faSearchMinus,\n faRulerVertical: faRulerVertical,\n faUserLarge: faUserLarge,\n faUserAlt: faUserAlt,\n faTrainTram: faTrainTram,\n faUserNurse: faUserNurse,\n faSyringe: faSyringe,\n faCloudSun: faCloudSun,\n faStopwatch20: faStopwatch20,\n faSquareFull: faSquareFull,\n faMagnet: faMagnet,\n faJar: faJar,\n faNoteSticky: faNoteSticky,\n faStickyNote: faStickyNote,\n faBugSlash: faBugSlash,\n faArrowUpFromWaterPump: faArrowUpFromWaterPump,\n faBone: faBone,\n faUserInjured: faUserInjured,\n faFaceSadTear: faFaceSadTear,\n faSadTear: faSadTear,\n faPlane: faPlane,\n faTentArrowsDown: faTentArrowsDown,\n faExclamation: faExclamation,\n faArrowsSpin: faArrowsSpin,\n faPrint: faPrint,\n faTurkishLiraSign: faTurkishLiraSign,\n faTry: faTry,\n faTurkishLira: faTurkishLira,\n faDollarSign: faDollarSign,\n faDollar: faDollar,\n faUsd: faUsd,\n faX: faX,\n faMagnifyingGlassDollar: faMagnifyingGlassDollar,\n faSearchDollar: faSearchDollar,\n faUsersGear: faUsersGear,\n faUsersCog: faUsersCog,\n faPersonMilitaryPointing: faPersonMilitaryPointing,\n faBuildingColumns: faBuildingColumns,\n faBank: faBank,\n faInstitution: faInstitution,\n faMuseum: faMuseum,\n faUniversity: faUniversity,\n faUmbrella: faUmbrella,\n faTrowel: faTrowel,\n faD: faD,\n faStapler: faStapler,\n faMasksTheater: faMasksTheater,\n faTheaterMasks: faTheaterMasks,\n faKipSign: faKipSign,\n faHandPointLeft: faHandPointLeft,\n faHandshakeSimple: faHandshakeSimple,\n faHandshakeAlt: faHandshakeAlt,\n faJetFighter: faJetFighter,\n faFighterJet: faFighterJet,\n faSquareShareNodes: faSquareShareNodes,\n faShareAltSquare: faShareAltSquare,\n faBarcode: faBarcode,\n faPlusMinus: faPlusMinus,\n faVideo: faVideo,\n faVideoCamera: faVideoCamera,\n faGraduationCap: faGraduationCap,\n faMortarBoard: faMortarBoard,\n faHandHoldingMedical: faHandHoldingMedical,\n faPersonCircleCheck: faPersonCircleCheck,\n faTurnUp: faTurnUp,\n faLevelUpAlt: faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faAt, faTrashCan, faTrashAlt, faTextHeight, faUserXmark, faUserTimes, faStethoscope, faMessage, faCommentAlt, faInfo, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faCalendarDays, faCalendarAlt, faAnchorCircleCheck, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faArrowsUpToLine, faSortDown, faSortDesc, faCircleMinus, faMinusCircle, faDoorOpen, faRightFromBracket, faSignOutAlt, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faBridgeCircleCheck, faPumpMedical, faFingerprint, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faFlagCheckered, faFootball, faFootballBall, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faPeopleLine, faBeerMugEmpty, faBeer, faDiagramPredecessor, faArrowUpLong, faLongArrowUp, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faTruckPlane, faRecordVinyl, faFaceGrinStars, faGrinStars, faBong, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faCircleH, faHospitalSymbol, faPager, faAddressBook, faContactBook, faStrikethrough, faK, faLandmarkFlag, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faCodePullRequest, faClipboardList, faTruckRampBox, faTruckLoading, faUserCheck, faVialVirus, faSheetPlastic, faBlog, faUserNinja, faPersonArrowUpFromLine, faScrollTorah, faTorah, faBroomBall, faQuidditch, faQuidditchBroomBall, faToggleOff, faBoxArchive, faArchive, faPersonDrowning, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faSprayCan, faTruckMonster, faW, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faCloud, faTrowelBricks, faFaceFlushed, faFlushed, faHospitalUser, faTentArrowLeftRight, faGavel, faLegal, faBinoculars, faMicrophoneSlash, faBoxTissue, faMotorcycle, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faPeopleArrows, faPeopleArrowsLeftRight, faMarsAndVenusBurst, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faTable, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faUsersSlash, faClover, faReply, faMailReply, faStarAndCrescent, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faCompass, faSquareCaretDown, faCaretSquareDown, faFileCircleQuestion, faLaptopCode, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faFilm, faRulerHorizontal, faPeopleRobbery, faLightbulb, faCaretLeft, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faCircleChevronDown, faChevronCircleDown, faUnlockKeyhole, faUnlockAlt, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faCircleDollarToSlot, faDonate, faMemory, faRoadSpikes, faFireBurner, faFlag, faHanukiah, faFeather, faVolumeLow, faVolumeDown, faCommentSlash, faCloudSunRain, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faSquareCheck, faCheckSquare, faPesetaSign, faHeading, faHeader, faGhost, faList, faListSquares, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faEgg, faHouseMedicalCircleXmark, faCampground, faFolderPlus, faFutbol, faFutbolBall, faSoccerBall, faPaintbrush, faPaintBrush, faLock, faGasPump, faHotTubPerson, faHotTub, faMapLocation, faMapMarked, faHouseFloodWater, faTree, faBridgeLock, faSackDollar, faPenToSquare, faEdit, faCarSide, faShareNodes, faShareAlt, faHeartCircleMinus, faHourglassHalf, faHourglass2, faMicroscope, faSink, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faPersonRays, faUsers, faEyeSlash, faFlaskVial, faHand, faHandPaper, faOm, faWorm, faHouseCircleXmark, faPlug, faChevronUp, faHandSpock, faStopwatch, faFaceKiss, faKiss, faBridgeCircleXmark, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faRoadCircleCheck, faDiceFive, faSquareRss, faRssSquare, faLandMineOn, faICursor, faStamp, faStairs, faI, faHryvniaSign, faHryvnia, faPills, faFaceGrinWide, faGrinAlt, faTooth, faV, faBangladeshiTakaSign, faBicycle, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faHeadSideCoughSlash, faTruckMedical, faAmbulance, faWheatAwnCircleExclamation, faSnowman, faMortarPestle, faRoadBarrier, faSchool, faIgloo, faJoint, faAngleRight, faHorse, faQ, faG, faNotesMedical, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faCapsules, faPooStorm, faPooBolt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faMoneyBill, faBookmark, faAlignJustify, faUmbrellaBeach, faHelmetUn, faBullseye, faBacon, faHandPointDown, faArrowUpFromBracket, faFolder, faFolderBlank, faFileWaveform, faFileMedicalAlt, faRadiation, faChartSimple, faMarsStroke, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faE, faPenClip, faPenAlt, faBridgeCircleExclamation, faUser, faSchoolCircleCheck, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faKey, faBullhorn, faGlobe, faSynagogue, faPersonHalfDress, faRoadBridge, faLocationArrow, faC, faTabletButton, faBuildingLock, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faPersonCircleMinus, faBan, faCancel, faCameraRotate, faSprayCanSparkles, faAirFreshener, faStar, faRepeat, faCross, faBox, faVenusMars, faArrowPointer, faMousePointer, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faSpider, faHandsBound, faFileInvoiceDollar, faPlaneCircleExclamation, faXRay, faSpellCheck, faSlash, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faShopSlash, faStoreAltSlash, faServer, faVirusCovidSlash, faShopLock, faHourglassStart, faHourglass1, faBlenderPhone, faBuildingWheat, faPersonBreastfeeding, faRightToBracket, faSignInAlt, faVenus, faPassport, faHeartPulse, faHeartbeat, faPeopleCarryBox, faPeopleCarry, faTemperatureHigh, faMicrochip, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faWeightScale, faWeight, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faChessKnight, faFaceLaughSquint, faLaughSquint, faWheelchair, faCircleArrowUp, faArrowCircleUp, faToggleOn, faPersonWalking, faWalking, faL, faFire, faBedPulse, faProcedures, faShuttleSpace, faSpaceShuttle, faFaceLaugh, faLaugh, faFolderOpen, faHeartCirclePlus, faCodeFork, faCity, faMicrophoneLines, faMicrophoneAlt, faPepperHot, faUnlock, faColonSign, faHeadset, faStoreSlash, faRoadCircleXmark, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faBath, faBathtub, faUnderline, faUserPen, faUserEdit, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faManatSign, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faJedi, faSquarePollVertical, faPoll, faMugHot, faCarBattery, faBatteryCar, faGift, faDiceTwo, faChessQueen, faGlasses, faChessBoard, faBuildingCircleCheck, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faEyeLowVision, faLowVision, faCrow, faSailboat, faWindowRestore, faSquarePlus, faPlusSquare, faToriiGate, faFrog, faBucket, faImage, faMicrophone, faCow, faCaretUp, faScrewdriver, faFolderClosed, faHouseTsunami, faSquareNfi, faArrowUpFromGroundWater, faMartiniGlass, faGlassMartiniAlt, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faMonument, faSnowplow, faAnglesRight, faAngleDoubleRight, faCannabis, faCirclePlay, faPlayCircle, faTablets, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faCompassDrafting, faDraftingCompass, faPlateWheat, faIcicles, faPersonShelter, faNeuter, faIdBadge, faMarker, faFaceLaughBeam, faLaughBeam, faHelicopterSymbol, faUniversalAccess, faCircleChevronUp, faChevronCircleUp, faLariSign, faVolcano, faPersonWalkingDashedLineArrowRight, faSterlingSign, faGbp, faPoundSign, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faFileImport, faArrowRightToFile, faSquareArrowUpRight, faExternalLinkSquare, faBoxOpen, faScroll, faSpa, faLocationPinLock, faPause, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faRegistered, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faSubscript, faDiamondTurnRight, faDirections, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faSmog, faCrutch, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faArrowsTurnRight, faVest, faFerry, faArrowsDownToPeople, faSeedling, faSprout, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faGroupArrowsRotate, faBowlFood, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCloudBolt, faThunderstorm, faTextSlash, faRemoveFormat, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faChildren, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faEnvelopeOpen, faHandshakeSimpleSlash, faHandshakeAltSlash, faMattressPillow, faGuaraniSign, faArrowsRotate, faRefresh, faSync, faFireExtinguisher, faCruzeiroSign, faGreaterThanEqual, faShieldHalved, faShieldAlt, faBookAtlas, faAtlas, faVirus, faEnvelopeCircleCheck, faLayerGroup, faArrowsToDot, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faSquare, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faChurch, faCommentsDollar, faDemocrat, faZ, faPersonSkiing, faSkiing, faRoadLock, faA, faTemperatureArrowDown, faTemperatureDown, faFeatherPointed, faFeatherAlt, faP, faSnowflake, faNewspaper, faRectangleAd, faAd, faCircleArrowRight, faArrowCircleRight, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faPersonDressBurst, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faFaceKissWinkHeart, faKissWinkHeart, faFilter, faQuestion, faFileSignature, faUpDownLeftRight, faArrowsAlt, faHouseChimneyUser, faHandHoldingHeart, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faCode, faWhiskeyGlass, faGlassWhiskey, faBuildingCircleExclamation, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faWonSign, faKrw, faWon, faVirusCovid, faAustralSign, faF, faLeaf, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faSackXmark, faFileExcel, faFileContract, faFishFins, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faPoop, faLocationPin, faMapMarker, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faChartLine, faLineChart, faMaskVentilator, faArrowRight, faSignsPost, faMapSigns, faCashRegister, faPersonCircleQuestion, faH, faTarp, faScrewdriverWrench, faTools, faArrowsToEye, faPlugCircleBolt, faHeart, faMarsAndVenus, faHouseUser, faHomeUser, faDumpsterFire, faHouseCrack, faMartiniGlassCitrus, faCocktail, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faToiletPaperSlash, faAppleWhole, faAppleAlt, faKitchenSet, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faCube, faBitcoinSign, faShieldDog, faSolarPanel, faLockOpen, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faPlaneSlash, faTrademark, faBasketball, faBasketballBall, faSatelliteDish, faCircleUp, faArrowAltCircleUp, faMobileScreenButton, faMobileAlt, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faClipboardCheck, faFileAudio, faBurger, faHamburger, faWrench, faBugs, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faCodeBranch, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faTruckFront, faCat, faAnchorCircleExclamation, faTruckField, faRoute, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faFileCircleMinus, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faSquareParking, faParking, faHouseSignal, faBarsProgress, faTasksAlt, faFaucetDrip, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faUserSlash, faPen, faTowerObservation, faFileCode, faSignal, faSignal5, faSignalPerfect, faBus, faHeartCircleXmark, faHouseChimney, faHomeLg, faWindowMaximize, faFaceFrown, faFrown, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faScaleUnbalanced, faBalanceScaleLeft, faSortUp, faSortAsc, faCommentDots, faCommenting, faPlantWilt, faDiamond, faFaceGrinSquint, faGrinSquint, faHandHoldingDollar, faHandHoldingUsd, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faBiohazard, faLocationCrosshairs, faLocation, faMarsDouble, faChildDress, faUsersBetweenLines, faLungsVirus, faFaceGrinTears, faGrinTears, faPhone, faCalendarXmark, faCalendarTimes, faChildReaching, faHeadSideVirus, faUserGear, faUserCog, faArrowUp19, faSortNumericUp, faDoorClosed, faShieldVirus, faDiceSix, faMosquitoNet, faBridgeWater, faPersonBooth, faTextWidth, faHatWizard, faPenFancy, faPersonDigging, faDigging, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faBookMedical, faPoo, faQuoteRight, faQuoteRightAlt, faShirt, faTShirt, faTshirt, faCubes, faDivide, faTengeSign, faTenge, faHeadphones, faHandsHolding, faHandsClapping, faRepublican, faArrowLeft, faPersonCircleXmark, faRuler, faAlignLeft, faDiceD6, faRestroom, faJ, faUsersViewfinder, faFileVideo, faUpRightFromSquare, faExternalLinkAlt, faTableCells, faTh, faFilePdf, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faUserSecret, faOtter, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faPhoneVolume, faVolumeControlPhone, faHatCowboySide, faClipboardUser, faChild, faLiraSign, faSatellite, faPlaneLock, faTag, faComment, faCakeCandles, faBirthdayCake, faCake, faEnvelope, faAnglesUp, faAngleDoubleUp, faPaperclip, faArrowRightToCity, faRibbon, faLungs, faArrowUp91, faSortNumericUpAlt, faLitecoinSign, faBorderNone, faCircleNodes, faParachuteBox, faIndent, faTruckFieldUn, faHourglass, faHourglassEmpty, faMountain, faUserDoctor, faUserMd, faCircleInfo, faInfoCircle, faCloudMeatball, faCamera, faCameraAlt, faSquareVirus, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandHoldingDroplet, faHandHoldingWater, faWater, faCalendarCheck, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faLandmark, faTruck, faCrosshairs, faPersonCane, faTent, faVestPatches, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBillWheat, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faHouseMedicalCircleCheck, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPlaneArrival, faCircleLeft, faArrowAltCircleLeft, faTrainSubway, faSubway, faChartGantt, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faDna, faVirusSlash, faMinus, faSubtract, faChess, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faStreetView, faFrancSign, faVolumeOff, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faGear, faCog, faDropletSlash, faTintSlash, faMosque, faMosquito, faStarOfDavid, faPersonMilitaryRifle, faCartShopping, faShoppingCart, faVials, faPlugCirclePlus, faPlaceOfWorship, faGripVertical, faArrowTurnUp, faLevelUp, faU, faSquareRootVariable, faSquareRootAlt, faClock, faClockFour, faBackwardStep, faStepBackward, faPallet, faFaucet, faBaseballBatBall, faS, faTimeline, faKeyboard, faCaretDown, faHouseChimneyMedical, faClinicMedical, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faPiggyBank, faBatteryHalf, faBattery3, faMountainCity, faCoins, faKhanda, faSliders, faSlidersH, faFolderTree, faNetworkWired, faMapPin, faHamsa, faCentSign, faFlask, faPersonPregnant, faWandSparkles, faEllipsisVertical, faEllipsisV, faTicket, faPowerOff, faRightLong, faLongArrowAltRight, faFlagUsa, faLaptopFile, faTty, faTeletype, faDiagramNext, faPersonRifle, faHouseMedicalCircleExclamation, faClosedCaptioning, faPersonHiking, faHiking, faVenusDouble, faImages, faCalculator, faPeoplePulling, faN, faCableCar, faTram, faCloudRain, faBuildingCircleXmark, faShip, faArrowsDownToLine, faDownload, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faEyeDropper, faEyeDropperEmpty, faEyedropper, faFileCircleCheck, faForward, faMobile, faMobileAndroid, faMobilePhone, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faCalendarWeek, faLaptopMedical, faB, faFileMedical, faDiceOne, faKiwiBird, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faMillSign, faBowlRice, faSkull, faTowerBroadcast, faBroadcastTower, faTruckPickup, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faUpload, faHurricane, faMound, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faCaravan, faShieldCat, faBolt, faZap, faGlassWater, faOilWell, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faRubleSign, faRouble, faRub, faRuble, faSun, faGuitar, faFaceLaughWink, faLaughWink, faHorseHead, faBoreHole, faIndustry, faCircleDown, faArrowAltCircleDown, faArrowsTurnToDots, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faAngleDown, faCarTunnel, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faAnchorCircleXmark, faEllipsis, faEllipsisH, faChessPawn, faKitMedical, faFirstAid, faPersonThroughWindow, faToolbox, faHandsHoldingCircle, faBug, faCreditCard, faCreditCardAlt, faCar, faAutomobile, faHandHoldingHand, faBookOpenReader, faBookReader, faMountainSun, faArrowsLeftRightToLine, faDiceD20, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faSquareH, faHSquare, faPodcast, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faSuperscript, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faPaintRoller, faHandshakeAngle, faHandsHelping, faLocationDot, faMapMarkerAlt, faFile, faGreaterThan, faPersonSwimming, faSwimmer, faArrowDown, faDroplet, faTint, faEraser, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faPersonBurst, faDove, faBatteryEmpty, faBattery0, faSocks, faInbox, faSection, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faEnvelopeOpenText, faHospital, faHospitalAlt, faHospitalWide, faWineBottle, faChessRook, faBarsStaggered, faReorder, faStream, faDharmachakra, faHotdog, faPersonWalkingWithCane, faBlind, faDrum, faIceCream, faHeartCircleBolt, faFax, faParagraph, faCheckToSlot, faVoteYea, faStarHalf, faBoxesStacked, faBoxes, faBoxesAlt, faLink, faChain, faEarListen, faAssistiveListeningSystems, faTreeCity, faPlay, faFont, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faTrashCanArrowUp, faTrashRestoreAlt, faNairaSign, faCartArrowDown, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faSquarePen, faPenSquare, faPencilSquare, faSuitcaseRolling, faPersonCircleExclamation, faChevronDown, faBatteryFull, faBattery, faBattery5, faSkullCrossbones, faCodeCompare, faListUl, faListDots, faSchoolLock, faTowerCell, faDownLong, faLongArrowAltDown, faRankingStar, faChessKing, faPersonHarassing, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faArrowUp, faTv, faTelevision, faTvAlt, faShrimp, faListCheck, faTasks, faJugDetergent, faCircleUser, faUserCircle, faUserShield, faWind, faCarBurst, faCarCrash, faY, faPersonSnowboarding, faSnowboarding, faTruckFast, faShippingFast, faFish, faUserGraduate, faCircleHalfStroke, faAdjust, faClapperboard, faCircleRadiation, faRadiationAlt, faBaseball, faBaseballBall, faJetFighterUp, faDiagramProject, faProjectDiagram, faCopy, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faChildCombatant, faChildRifle, faGun, faSquarePhone, faPhoneSquare, faPlus, faAdd, faExpand, faComputer, faXmark, faClose, faMultiply, faRemove, faTimes, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faPesoSign, faBuildingShield, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faLinesLeaning, faRulerCombined, faCopyright, faEquals, faBlender, faTeeth, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faMap, faRocket, faPhotoFilm, faPhotoVideo, faFolderMinus, faStore, faArrowTrendUp, faPlugCircleMinus, faSignHanging, faSign, faBezierCurve, faBellSlash, faTablet, faTabletAndroid, faSchoolFlag, faFill, faAngleUp, faDrumstickBite, faHollyBerry, faChevronLeft, faBacteria, faHandLizard, faNotdef, faDisease, faBriefcaseMedical, faGenderless, faChevronRight, faRetweet, faCarRear, faCarAlt, faPumpSoap, faVideoSlash, faBatteryQuarter, faBattery2, faRadio, faBabyCarriage, faCarriageBaby, faTrafficLight, faThermometer, faVrCardboard, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faDisplay, faFaceSmile, faSmile, faThumbtack, faThumbTack, faTrophy, faPersonPraying, faPray, faHammer, faHandPeace, faRotate, faSyncAlt, faSpinner, faRobot, faPeace, faGears, faCogs, faWarehouse, faArrowUpRightDots, faSplotch, faFaceGrinHearts, faGrinHearts, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faArrowTurnDown, faLevelDown, faPersonFallingBurst, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faQrcode, faClockRotateLeft, faHistory, faFaceGrinBeamSweat, faGrinBeamSweat, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faPenNib, faTentArrowTurnLeft, faTents, faWandMagic, faMagic, faDog, faCarrot, faMoon, faWineGlassEmpty, faWineGlassAlt, faCheese, faYinYang, faMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faBroom, faShieldHeart, faGopuram, faEarthOceania, faGlobeOceania, faSquareXmark, faTimesSquare, faXmarkSquare, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faHippo, faChartColumn, faInfinity, faVialCircleCheck, faPersonArrowDownToLine, faVoicemail, faFan, faPersonWalkingLuggage, faUpDown, faArrowsAltV, faCloudMoonRain, faCalendar, faTrailer, faBahai, faHaykal, faSdCard, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faBookQuran, faQuran, faAnchor, faBorderAll, faFaceAngry, faAngry, faCookieBite, faArrowTrendDown, faRss, faFeed, faDrawPolygon, faScaleBalanced, faBalanceScale, faGaugeSimpleHigh, faTachometer, faTachometerFast, faShower, faDesktop, faDesktopAlt, faM, faTableList, faThList, faCommentSms, faSms, faBook, faUserPlus, faCheck, faBatteryThreeQuarters, faBattery4, faHouseCircleCheck, faAngleLeft, faDiagramSuccessor, faTruckArrowRight, faArrowsSplitUpAndLeft, faHandFist, faFistRaised, faCloudMoon, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faBahtSign, faBookOpen, faBookJournalWhills, faJournalWhills, faHandcuffs, faTriangleExclamation, faExclamationTriangle, faWarning, faDatabase, faShare, faArrowTurnRight, faMailForward, faBottleDroplet, faMaskFace, faHillRockslide, faRightLeft, faExchangeAlt, faPaperPlane, faRoadCircleExclamation, faDungeon, faAlignRight, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faBowlingBall, faBrain, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faGifts, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faUserClock, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faMugSaucer, faCoffee, faBrush, faMask, faMagnifyingGlassMinus, faSearchMinus, faRulerVertical, faUserLarge, faUserAlt, faTrainTram, faUserNurse, faSyringe, faCloudSun, faStopwatch20, faSquareFull, faMagnet, faJar, faNoteSticky, faStickyNote, faBugSlash, faArrowUpFromWaterPump, faBone, faUserInjured, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faDollarSign, faDollar, faUsd, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faUmbrella, faTrowel, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faHandPointLeft, faHandshakeSimple, faHandshakeAlt, faJetFighter, faFighterJet, faSquareShareNodes, faShareAltSquare, faBarcode, faPlusMinus, faVideo, faVideoCamera, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faTurnUp, faLevelUpAlt };\n","import { parse, icon, config, text } from '@fortawesome/fontawesome-svg-core';\nimport { h, defineComponent, computed, watch } from 'vue';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar humps$1 = {exports: {}};\n\n(function (module) {\n(function(global) {\n\n\t var _processKeys = function(convert, obj, options) {\n\t if(!_isObject(obj) || _isDate(obj) || _isRegExp(obj) || _isBoolean(obj) || _isFunction(obj)) {\n\t return obj;\n\t }\n\n\t var output,\n\t i = 0,\n\t l = 0;\n\n\t if(_isArray(obj)) {\n\t output = [];\n\t for(l=obj.length; i<l; i++) {\n\t output.push(_processKeys(convert, obj[i], options));\n\t }\n\t }\n\t else {\n\t output = {};\n\t for(var key in obj) {\n\t if(Object.prototype.hasOwnProperty.call(obj, key)) {\n\t output[convert(key, options)] = _processKeys(convert, obj[key], options);\n\t }\n\t }\n\t }\n\t return output;\n\t };\n\n\t // String conversion methods\n\n\t var separateWords = function(string, options) {\n\t options = options || {};\n\t var separator = options.separator || '_';\n\t var split = options.split || /(?=[A-Z])/;\n\n\t return string.split(split).join(separator);\n\t };\n\n\t var camelize = function(string) {\n\t if (_isNumerical(string)) {\n\t return string;\n\t }\n\t string = string.replace(/[\\-_\\s]+(.)?/g, function(match, chr) {\n\t return chr ? chr.toUpperCase() : '';\n\t });\n\t // Ensure 1st char is always lowercase\n\t return string.substr(0, 1).toLowerCase() + string.substr(1);\n\t };\n\n\t var pascalize = function(string) {\n\t var camelized = camelize(string);\n\t // Ensure 1st char is always uppercase\n\t return camelized.substr(0, 1).toUpperCase() + camelized.substr(1);\n\t };\n\n\t var decamelize = function(string, options) {\n\t return separateWords(string, options).toLowerCase();\n\t };\n\n\t // Utilities\n\t // Taken from Underscore.js\n\n\t var toString = Object.prototype.toString;\n\n\t var _isFunction = function(obj) {\n\t return typeof(obj) === 'function';\n\t };\n\t var _isObject = function(obj) {\n\t return obj === Object(obj);\n\t };\n\t var _isArray = function(obj) {\n\t return toString.call(obj) == '[object Array]';\n\t };\n\t var _isDate = function(obj) {\n\t return toString.call(obj) == '[object Date]';\n\t };\n\t var _isRegExp = function(obj) {\n\t return toString.call(obj) == '[object RegExp]';\n\t };\n\t var _isBoolean = function(obj) {\n\t return toString.call(obj) == '[object Boolean]';\n\t };\n\n\t // Performant way to determine if obj coerces to a number\n\t var _isNumerical = function(obj) {\n\t obj = obj - 0;\n\t return obj === obj;\n\t };\n\n\t // Sets up function which handles processing keys\n\t // allowing the convert function to be modified by a callback\n\t var _processor = function(convert, options) {\n\t var callback = options && 'process' in options ? options.process : options;\n\n\t if(typeof(callback) !== 'function') {\n\t return convert;\n\t }\n\n\t return function(string, options) {\n\t return callback(string, convert, options);\n\t }\n\t };\n\n\t var humps = {\n\t camelize: camelize,\n\t decamelize: decamelize,\n\t pascalize: pascalize,\n\t depascalize: decamelize,\n\t camelizeKeys: function(object, options) {\n\t return _processKeys(_processor(camelize, options), object);\n\t },\n\t decamelizeKeys: function(object, options) {\n\t return _processKeys(_processor(decamelize, options), object, options);\n\t },\n\t pascalizeKeys: function(object, options) {\n\t return _processKeys(_processor(pascalize, options), object);\n\t },\n\t depascalizeKeys: function () {\n\t return this.decamelizeKeys.apply(this, arguments);\n\t }\n\t };\n\n\t if (module.exports) {\n\t module.exports = humps;\n\t } else {\n\t global.humps = humps;\n\t }\n\n\t})(commonjsGlobal);\n} (humps$1));\n\nvar humps = humps$1.exports;\n\nvar _excluded = [\"class\", \"style\"];\n/**\n * Converts a CSS style into a plain Javascript object.\n * @param {String} style The style to converts into a plain Javascript object.\n * @returns {Object}\n */\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (output, pair) {\n var idx = pair.indexOf(':');\n var prop = humps.camelize(pair.slice(0, idx));\n var value = pair.slice(idx + 1).trim();\n output[prop] = value;\n return output;\n }, {});\n}\n/**\n * Converts a CSS class list into a plain Javascript object.\n * @param {Array<String>} classes The class list to convert.\n * @returns {Object}\n */\n\n\nfunction classToObject(classes) {\n return classes.split(/\\s+/).reduce(function (output, className) {\n output[className] = true;\n return output;\n }, {});\n}\n/**\n * Converts a FontAwesome abstract element of an icon into a Vue VNode.\n * @param {AbstractElement | String} abstractElement The element to convert.\n * @param {Object} props The user-defined props.\n * @param {Object} attrs The user-defined native HTML attributes.\n * @returns {VNode}\n */\n\n\nfunction convert(abstractElement) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n // If the abstract element is a string, we'll just return a string render function\n if (typeof abstractElement === 'string') {\n return abstractElement;\n } // Converting abstract element children into Vue VNodes\n\n\n var children = (abstractElement.children || []).map(function (child) {\n return convert(child);\n }); // Converting abstract element attributes into valid Vue format\n\n var mixins = Object.keys(abstractElement.attributes || {}).reduce(function (mixins, key) {\n var value = abstractElement.attributes[key];\n\n switch (key) {\n case 'class':\n mixins.class = classToObject(value);\n break;\n\n case 'style':\n mixins.style = styleToObject(value);\n break;\n\n default:\n mixins.attrs[key] = value;\n }\n\n return mixins;\n }, {\n attrs: {},\n class: {},\n style: {}\n }); // Now, we'll return the VNode\n\n attrs.class;\n var _attrs$style = attrs.style,\n aStyle = _attrs$style === void 0 ? {} : _attrs$style,\n otherAttrs = _objectWithoutProperties(attrs, _excluded);\n\n return h(abstractElement.tag, _objectSpread2(_objectSpread2(_objectSpread2({}, props), {}, {\n class: mixins.class,\n style: _objectSpread2(_objectSpread2({}, mixins.style), aStyle)\n }, mixins.attrs), otherAttrs), children);\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction objectWithKey(key, value) {\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\nfunction classList(props) {\n var _classes;\n\n var classes = (_classes = {\n 'fa-spin': props.spin,\n 'fa-pulse': props.pulse,\n 'fa-fw': props.fixedWidth,\n 'fa-border': props.border,\n 'fa-li': props.listItem,\n 'fa-inverse': props.inverse,\n 'fa-flip': props.flip === true,\n 'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n 'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(props.size), props.size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(props.rotation), props.rotation !== null), _defineProperty(_classes, \"fa-pull-\".concat(props.pull), props.pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _defineProperty(_classes, 'fa-bounce', props.bounce), _defineProperty(_classes, 'fa-shake', props.shake), _defineProperty(_classes, 'fa-beat', props.beat), _defineProperty(_classes, 'fa-fade', props.fade), _defineProperty(_classes, 'fa-beat-fade', props.beatFade), _defineProperty(_classes, 'fa-flash', props.flash), _defineProperty(_classes, 'fa-spin-pulse', props.spinPulse), _defineProperty(_classes, 'fa-spin-reverse', props.spinReverse), _classes);\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\nfunction normalizeIconArgs(icon) {\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n }\n\n if (icon === null) {\n return null;\n }\n\n if (_typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n }\n\n if (Array.isArray(icon) && icon.length === 2) {\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n }\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\nvar FontAwesomeIcon = defineComponent({\n name: 'FontAwesomeIcon',\n props: {\n border: {\n type: Boolean,\n default: false\n },\n fixedWidth: {\n type: Boolean,\n default: false\n },\n flip: {\n type: [Boolean, String],\n default: false,\n validator: function validator(value) {\n return [true, false, 'horizontal', 'vertical', 'both'].indexOf(value) > -1;\n }\n },\n icon: {\n type: [Object, Array, String],\n required: true\n },\n mask: {\n type: [Object, Array, String],\n default: null\n },\n listItem: {\n type: Boolean,\n default: false\n },\n pull: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['right', 'left'].indexOf(value) > -1;\n }\n },\n pulse: {\n type: Boolean,\n default: false\n },\n rotation: {\n type: [String, Number],\n default: null,\n validator: function validator(value) {\n return [90, 180, 270].indexOf(Number.parseInt(value, 10)) > -1;\n }\n },\n swapOpacity: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x'].indexOf(value) > -1;\n }\n },\n spin: {\n type: Boolean,\n default: false\n },\n transform: {\n type: [String, Object],\n default: null\n },\n symbol: {\n type: [Boolean, String],\n default: false\n },\n title: {\n type: String,\n default: null\n },\n inverse: {\n type: Boolean,\n default: false\n },\n bounce: {\n type: Boolean,\n default: false\n },\n shake: {\n type: Boolean,\n default: false\n },\n beat: {\n type: Boolean,\n default: false\n },\n fade: {\n type: Boolean,\n default: false\n },\n beatFade: {\n type: Boolean,\n default: false\n },\n flash: {\n type: Boolean,\n default: false\n },\n spinPulse: {\n type: Boolean,\n default: false\n },\n spinReverse: {\n type: Boolean,\n default: false\n }\n },\n setup: function setup(props, _ref) {\n var attrs = _ref.attrs;\n var icon$1 = computed(function () {\n return normalizeIconArgs(props.icon);\n });\n var classes = computed(function () {\n return objectWithKey('classes', classList(props));\n });\n var transform = computed(function () {\n return objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n });\n var mask = computed(function () {\n return objectWithKey('mask', normalizeIconArgs(props.mask));\n });\n var renderedIcon = computed(function () {\n return icon(icon$1.value, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes.value), transform.value), mask.value), {}, {\n symbol: props.symbol,\n title: props.title\n }));\n });\n watch(renderedIcon, function (value) {\n if (!value) {\n return log('Could not find one or more icon(s)', icon$1.value, mask.value);\n }\n }, {\n immediate: true\n });\n var vnode = computed(function () {\n return renderedIcon.value ? convert(renderedIcon.value.abstract[0], {}, attrs) : null;\n });\n return function () {\n return vnode.value;\n };\n }\n});\n\nvar FontAwesomeLayers = defineComponent({\n name: 'FontAwesomeLayers',\n props: {\n fixedWidth: {\n type: Boolean,\n default: false\n }\n },\n setup: function setup(props, _ref) {\n var slots = _ref.slots;\n var familyPrefix = config.familyPrefix;\n var className = computed(function () {\n return [\"\".concat(familyPrefix, \"-layers\")].concat(_toConsumableArray(props.fixedWidth ? [\"\".concat(familyPrefix, \"-fw\")] : []));\n });\n return function () {\n return h('div', {\n class: className.value\n }, slots.default ? slots.default() : []);\n };\n }\n});\n\nvar FontAwesomeLayersText = defineComponent({\n name: 'FontAwesomeLayersText',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n transform: {\n type: [String, Object],\n default: null\n },\n counter: {\n type: Boolean,\n default: false\n },\n position: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['bottom-left', 'bottom-right', 'top-left', 'top-right'].indexOf(value) > -1;\n }\n }\n },\n setup: function setup(props, _ref) {\n var attrs = _ref.attrs;\n var familyPrefix = config.familyPrefix;\n var classes = computed(function () {\n return objectWithKey('classes', [].concat(_toConsumableArray(props.counter ? [\"\".concat(familyPrefix, \"-layers-counter\")] : []), _toConsumableArray(props.position ? [\"\".concat(familyPrefix, \"-layers-\").concat(props.position)] : [])));\n });\n var transform = computed(function () {\n return objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n });\n var abstractElement = computed(function () {\n var _text = text(props.value.toString(), _objectSpread2(_objectSpread2({}, transform.value), classes.value)),\n abstract = _text.abstract;\n\n if (props.counter) {\n abstract[0].attributes.class = abstract[0].attributes.class.replace('fa-layers-text', '');\n }\n\n return abstract[0];\n });\n var vnode = computed(function () {\n return convert(abstractElement.value, {}, attrs);\n });\n return function () {\n return vnode.value;\n };\n }\n});\n\nexport { FontAwesomeIcon, FontAwesomeLayers, FontAwesomeLayersText };\n","class Pointer {\r\n constructor(nativePointer) {\r\n /** Unique ID for this pointer */\r\n this.id = -1;\r\n this.nativePointer = nativePointer;\r\n this.pageX = nativePointer.pageX;\r\n this.pageY = nativePointer.pageY;\r\n this.clientX = nativePointer.clientX;\r\n this.clientY = nativePointer.clientY;\r\n if (self.Touch && nativePointer instanceof Touch) {\r\n this.id = nativePointer.identifier;\r\n }\r\n else if (isPointerEvent(nativePointer)) {\r\n // is PointerEvent\r\n this.id = nativePointer.pointerId;\r\n }\r\n }\r\n /**\r\n * Returns an expanded set of Pointers for high-resolution inputs.\r\n */\r\n getCoalesced() {\r\n if ('getCoalescedEvents' in this.nativePointer) {\r\n return this.nativePointer.getCoalescedEvents().map((p) => new Pointer(p));\r\n }\r\n return [this];\r\n }\r\n}\r\nconst isPointerEvent = (event) => self.PointerEvent && event instanceof PointerEvent;\r\nconst noop = () => { };\r\n/**\r\n * Track pointers across a particular element\r\n */\r\nclass PointerTracker {\r\n /**\r\n * Track pointers across a particular element\r\n *\r\n * @param element Element to monitor.\r\n * @param options\r\n */\r\n constructor(_element, { start = () => true, move = noop, end = noop, rawUpdates = false, } = {}) {\r\n this._element = _element;\r\n /**\r\n * State of the tracked pointers when they were pressed/touched.\r\n */\r\n this.startPointers = [];\r\n /**\r\n * Latest state of the tracked pointers. Contains the same number of pointers, and in the same\r\n * order as this.startPointers.\r\n */\r\n this.currentPointers = [];\r\n /**\r\n * Listener for mouse/pointer starts.\r\n *\r\n * @param event This will only be a MouseEvent if the browser doesn't support pointer events.\r\n */\r\n this._pointerStart = (event) => {\r\n if (event.button !== 0 /* Left */)\r\n return;\r\n if (!this._triggerPointerStart(new Pointer(event), event))\r\n return;\r\n // Add listeners for additional events.\r\n // The listeners may already exist, but no harm in adding them again.\r\n if (isPointerEvent(event)) {\r\n const capturingElement = event.target && 'setPointerCapture' in event.target\r\n ? event.target\r\n : this._element;\r\n capturingElement.setPointerCapture(event.pointerId);\r\n this._element.addEventListener(this._rawUpdates ? 'pointerrawupdate' : 'pointermove', this._move);\r\n this._element.addEventListener('pointerup', this._pointerEnd);\r\n this._element.addEventListener('pointercancel', this._pointerEnd);\r\n }\r\n else {\r\n // MouseEvent\r\n window.addEventListener('mousemove', this._move);\r\n window.addEventListener('mouseup', this._pointerEnd);\r\n }\r\n };\r\n /**\r\n * Listener for touchstart.\r\n * Only used if the browser doesn't support pointer events.\r\n */\r\n this._touchStart = (event) => {\r\n for (const touch of Array.from(event.changedTouches)) {\r\n this._triggerPointerStart(new Pointer(touch), event);\r\n }\r\n };\r\n /**\r\n * Listener for pointer/mouse/touch move events.\r\n */\r\n this._move = (event) => {\r\n const previousPointers = this.currentPointers.slice();\r\n const changedPointers = 'changedTouches' in event // Shortcut for 'is touch event'.\r\n ? Array.from(event.changedTouches).map((t) => new Pointer(t))\r\n : [new Pointer(event)];\r\n const trackedChangedPointers = [];\r\n for (const pointer of changedPointers) {\r\n const index = this.currentPointers.findIndex((p) => p.id === pointer.id);\r\n if (index === -1)\r\n continue; // Not a pointer we're tracking\r\n trackedChangedPointers.push(pointer);\r\n this.currentPointers[index] = pointer;\r\n }\r\n if (trackedChangedPointers.length === 0)\r\n return;\r\n this._moveCallback(previousPointers, trackedChangedPointers, event);\r\n };\r\n /**\r\n * Call the end callback for this pointer.\r\n *\r\n * @param pointer Pointer\r\n * @param event Related event\r\n */\r\n this._triggerPointerEnd = (pointer, event) => {\r\n const index = this.currentPointers.findIndex((p) => p.id === pointer.id);\r\n // Not a pointer we're interested in?\r\n if (index === -1)\r\n return false;\r\n this.currentPointers.splice(index, 1);\r\n this.startPointers.splice(index, 1);\r\n const cancelled = event.type === 'touchcancel' || event.type === 'pointercancel';\r\n this._endCallback(pointer, event, cancelled);\r\n return true;\r\n };\r\n /**\r\n * Listener for mouse/pointer ends.\r\n *\r\n * @param event This will only be a MouseEvent if the browser doesn't support pointer events.\r\n */\r\n this._pointerEnd = (event) => {\r\n if (!this._triggerPointerEnd(new Pointer(event), event))\r\n return;\r\n if (isPointerEvent(event)) {\r\n if (this.currentPointers.length)\r\n return;\r\n this._element.removeEventListener(this._rawUpdates ? 'pointerrawupdate' : 'pointermove', this._move);\r\n this._element.removeEventListener('pointerup', this._pointerEnd);\r\n this._element.removeEventListener('pointercancel', this._pointerEnd);\r\n }\r\n else {\r\n // MouseEvent\r\n window.removeEventListener('mousemove', this._move);\r\n window.removeEventListener('mouseup', this._pointerEnd);\r\n }\r\n };\r\n /**\r\n * Listener for touchend.\r\n * Only used if the browser doesn't support pointer events.\r\n */\r\n this._touchEnd = (event) => {\r\n for (const touch of Array.from(event.changedTouches)) {\r\n this._triggerPointerEnd(new Pointer(touch), event);\r\n }\r\n };\r\n this._startCallback = start;\r\n this._moveCallback = move;\r\n this._endCallback = end;\r\n this._rawUpdates = rawUpdates && 'onpointerrawupdate' in window;\r\n // Add listeners\r\n if (self.PointerEvent) {\r\n this._element.addEventListener('pointerdown', this._pointerStart);\r\n }\r\n else {\r\n this._element.addEventListener('mousedown', this._pointerStart);\r\n this._element.addEventListener('touchstart', this._touchStart);\r\n this._element.addEventListener('touchmove', this._move);\r\n this._element.addEventListener('touchend', this._touchEnd);\r\n this._element.addEventListener('touchcancel', this._touchEnd);\r\n }\r\n }\r\n /**\r\n * Remove all listeners.\r\n */\r\n stop() {\r\n this._element.removeEventListener('pointerdown', this._pointerStart);\r\n this._element.removeEventListener('mousedown', this._pointerStart);\r\n this._element.removeEventListener('touchstart', this._touchStart);\r\n this._element.removeEventListener('touchmove', this._move);\r\n this._element.removeEventListener('touchend', this._touchEnd);\r\n this._element.removeEventListener('touchcancel', this._touchEnd);\r\n this._element.removeEventListener(this._rawUpdates ? 'pointerrawupdate' : 'pointermove', this._move);\r\n this._element.removeEventListener('pointerup', this._pointerEnd);\r\n this._element.removeEventListener('pointercancel', this._pointerEnd);\r\n window.removeEventListener('mousemove', this._move);\r\n window.removeEventListener('mouseup', this._pointerEnd);\r\n }\r\n /**\r\n * Call the start callback for this pointer, and track it if the user wants.\r\n *\r\n * @param pointer Pointer\r\n * @param event Related event\r\n * @returns Whether the pointer is being tracked.\r\n */\r\n _triggerPointerStart(pointer, event) {\r\n if (!this._startCallback(pointer, event))\r\n return false;\r\n this.currentPointers.push(pointer);\r\n this.startPointers.push(pointer);\r\n return true;\r\n }\r\n}\n\nexport default PointerTracker;\n","import PointerTracker from 'pointer-tracker';\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \"pinch-zoom {\\n display: block;\\n overflow: hidden;\\n touch-action: none;\\n --scale: 1;\\n --x: 0;\\n --y: 0;\\n}\\n\\npinch-zoom > * {\\n transform: translate(var(--x), var(--y)) scale(var(--scale));\\n transform-origin: 0 0;\\n will-change: transform;\\n}\\n\";\nstyleInject(css);\n\nconst minScaleAttr = 'min-scale';\r\nconst allowPanMinScaleAttr = 'allow-pan-min-scale';\r\nconst resetToMinScaleLimitAttr = 'reset-to-min-scale-limit';\r\nconst reachMinScaleStrategyAttr = 'reach-min-scale-strategy';\r\nconst stopPropagateHandledAttr = 'stop-propagate-handled';\r\nconst reachMinScaleStrategyDefault = 'none';\r\nfunction getDistance(a, b) {\r\n if (!b)\r\n return 0;\r\n return Math.sqrt((b.clientX - a.clientX) ** 2 + (b.clientY - a.clientY) ** 2);\r\n}\r\nfunction getMidpoint(a, b) {\r\n if (!b)\r\n return a;\r\n return {\r\n clientX: (a.clientX + b.clientX) / 2,\r\n clientY: (a.clientY + b.clientY) / 2,\r\n };\r\n}\r\nfunction getAbsoluteValue(value, max) {\r\n if (typeof value === 'number')\r\n return value;\r\n if (value.trimRight().endsWith('%')) {\r\n return max * parseFloat(value) / 100;\r\n }\r\n return parseFloat(value);\r\n}\r\n// I'd rather use DOMMatrix/DOMPoint here, but the browser support isn't good enough.\r\n// Given that, better to use something everything supports.\r\nlet cachedSvg;\r\nfunction getSVG() {\r\n return cachedSvg || (cachedSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'));\r\n}\r\nfunction createMatrix() {\r\n return getSVG().createSVGMatrix();\r\n}\r\nfunction createPoint() {\r\n return getSVG().createSVGPoint();\r\n}\r\nconst MIN_SCALE = 0.01;\r\nconst ALLOW_PAN_MIN_SCALE = -1;\r\nconst RESET_TO_MIN_SCALE_LIMIT = -1;\r\nconst BUTTON_LEFT = 0;\r\nconst roundedCmp = (a, b) => {\r\n return Math.round(a * 100) - Math.round(b * 100);\r\n};\r\nclass PinchZoom extends HTMLElement {\r\n constructor() {\r\n super();\r\n // Current transform.\r\n this._transform = createMatrix();\r\n // Watch for children changes.\r\n // Note this won't fire for initial contents,\r\n // so _stageElChange is also called in connectedCallback.\r\n new MutationObserver(() => this._stageElChange())\r\n .observe(this, { childList: true });\r\n // Watch for pointers\r\n const pointerTracker = new PointerTracker(this, {\r\n start: (pointer, event) => {\r\n // We only want to track 2 pointers at most\r\n if (pointerTracker.currentPointers.length === 2 || !this._positioningEl)\r\n return false;\r\n const isPan = pointerTracker.currentPointers.length + 1 === 1;\r\n const handled = !(isPan && !this._allowPan());\r\n if (handled) {\r\n this._maybeStopPropagate(event);\r\n if (!isPan) { // only cancel if something was propagated\r\n this._maybeEmitCancel([pointer, ...pointerTracker.currentPointers]);\r\n }\r\n }\r\n event.preventDefault();\r\n return true;\r\n },\r\n move: (previousPointers, _, event) => {\r\n this._onPointerMove(previousPointers, pointerTracker.currentPointers, event);\r\n },\r\n end: (pointer, event) => {\r\n this._onPointerEnd(pointer, pointerTracker.currentPointers, event);\r\n },\r\n });\r\n this.addEventListener('wheel', event => this._onWheel(event));\r\n this.addEventListener('click', event => this._onClick(event, pointerTracker));\r\n }\r\n static get observedAttributes() { return [minScaleAttr]; }\r\n attributeChangedCallback(name, oldValue, newValue) {\r\n if (name === minScaleAttr) {\r\n if (this.scale < this.minScale) {\r\n this.setTransform({ scale: this.minScale });\r\n }\r\n }\r\n }\r\n get minScale() {\r\n const attrValue = this.getAttribute(minScaleAttr);\r\n if (!attrValue)\r\n return MIN_SCALE;\r\n const value = parseFloat(attrValue);\r\n if (Number.isFinite(value))\r\n return Math.max(MIN_SCALE, value);\r\n return MIN_SCALE;\r\n }\r\n set minScale(value) {\r\n this.setAttribute(minScaleAttr, String(value));\r\n }\r\n get reachMinScaleStrategy() {\r\n const attrValue = this.getAttribute(reachMinScaleStrategyAttr);\r\n const v = attrValue;\r\n return v || reachMinScaleStrategyDefault;\r\n }\r\n set reachMinScaleStrategy(value) {\r\n this.setAttribute(reachMinScaleStrategyAttr, value);\r\n }\r\n get allowPanMinScale() {\r\n const attrValue = this.getAttribute(allowPanMinScaleAttr);\r\n if (!attrValue)\r\n return ALLOW_PAN_MIN_SCALE;\r\n const value = parseFloat(attrValue);\r\n if (Number.isFinite(value))\r\n return Math.max(ALLOW_PAN_MIN_SCALE, value);\r\n return ALLOW_PAN_MIN_SCALE;\r\n }\r\n set allowPanMinScale(value) {\r\n this.setAttribute(allowPanMinScaleAttr, String(value));\r\n }\r\n get resetToMinScaleLimit() {\r\n const attrValue = this.getAttribute(resetToMinScaleLimitAttr);\r\n if (!attrValue)\r\n return RESET_TO_MIN_SCALE_LIMIT;\r\n const value = parseFloat(attrValue);\r\n if (Number.isFinite(value))\r\n return Math.max(RESET_TO_MIN_SCALE_LIMIT, value);\r\n return RESET_TO_MIN_SCALE_LIMIT;\r\n }\r\n set resetToMinScaleLimit(value) {\r\n this.setAttribute(resetToMinScaleLimitAttr, String(value));\r\n }\r\n get stopPropagateHandled() {\r\n return this.hasAttribute(stopPropagateHandledAttr);\r\n }\r\n set stopPropagateHandled(value) {\r\n if (value) {\r\n this.setAttribute(stopPropagateHandledAttr, '');\r\n }\r\n else {\r\n this.removeAttribute(stopPropagateHandledAttr);\r\n }\r\n }\r\n connectedCallback() {\r\n this._stageElChange();\r\n }\r\n get x() {\r\n return this._transform.e;\r\n }\r\n get y() {\r\n return this._transform.f;\r\n }\r\n get scale() {\r\n return this._transform.a;\r\n }\r\n /**\r\n * Change the scale, adjusting x/y by a given transform origin.\r\n */\r\n scaleTo(scale, opts = {}) {\r\n let { originX = 0, originY = 0, } = opts;\r\n const { relativeTo = 'content', allowChangeEvent = false, } = opts;\r\n const relativeToEl = (relativeTo === 'content' ? this._positioningEl : this);\r\n // No content element? Fall back to just setting scale\r\n if (!relativeToEl || !this._positioningEl) {\r\n this.setTransform({ scale, allowChangeEvent });\r\n return;\r\n }\r\n const rect = relativeToEl.getBoundingClientRect();\r\n originX = getAbsoluteValue(originX, rect.width);\r\n originY = getAbsoluteValue(originY, rect.height);\r\n if (relativeTo === 'content') {\r\n originX += this.x;\r\n originY += this.y;\r\n }\r\n else {\r\n const currentRect = this._positioningEl.getBoundingClientRect();\r\n originX -= currentRect.left;\r\n originY -= currentRect.top;\r\n }\r\n this._applyChange({\r\n allowChangeEvent,\r\n originX,\r\n originY,\r\n scaleDiff: scale / this.scale,\r\n });\r\n }\r\n /**\r\n * Update the stage with a given scale/x/y.\r\n */\r\n setTransform(opts = {}) {\r\n const { scale = this.scale, allowChangeEvent = false, } = opts;\r\n let { x = this.x, y = this.y, } = opts;\r\n // If we don't have an element to position, just set the value as given.\r\n // We'll check bounds later.\r\n if (!this._positioningEl) {\r\n this._updateTransform(scale, x, y, allowChangeEvent);\r\n return;\r\n }\r\n // Get current layout\r\n const thisBounds = this.getBoundingClientRect();\r\n const positioningElBounds = this._positioningEl.getBoundingClientRect();\r\n // Not displayed. May be disconnected or display:none.\r\n // Just take the values, and we'll check bounds later.\r\n if (!thisBounds.width || !thisBounds.height) {\r\n this._updateTransform(scale, x, y, allowChangeEvent);\r\n return;\r\n }\r\n // Create points for _positioningEl.\r\n let topLeft = createPoint();\r\n topLeft.x = positioningElBounds.left - thisBounds.left;\r\n topLeft.y = positioningElBounds.top - thisBounds.top;\r\n let bottomRight = createPoint();\r\n bottomRight.x = positioningElBounds.width + topLeft.x;\r\n bottomRight.y = positioningElBounds.height + topLeft.y;\r\n // Calculate the intended position of _positioningEl.\r\n const matrix = createMatrix()\r\n .translate(x, y)\r\n .scale(scale)\r\n // Undo current transform\r\n .multiply(this._transform.inverse());\r\n topLeft = topLeft.matrixTransform(matrix);\r\n bottomRight = bottomRight.matrixTransform(matrix);\r\n // Ensure _positioningEl can't move beyond out-of-bounds.\r\n // Correct for x\r\n if (topLeft.x > thisBounds.width) {\r\n x += thisBounds.width - topLeft.x;\r\n }\r\n else if (bottomRight.x < 0) {\r\n x += -bottomRight.x;\r\n }\r\n // Correct for y\r\n if (topLeft.y > thisBounds.height) {\r\n y += thisBounds.height - topLeft.y;\r\n }\r\n else if (bottomRight.y < 0) {\r\n y += -bottomRight.y;\r\n }\r\n this._updateTransform(scale, x, y, allowChangeEvent);\r\n }\r\n /**\r\n * Update transform values without checking bounds. This is only called in setTransform.\r\n */\r\n _updateTransform(scale, x, y, allowChangeEvent) {\r\n // Avoid scaling to zero\r\n if (scale < this.minScale) {\r\n scale = this.minScale;\r\n }\r\n // Return if there's no change\r\n if (scale === this.scale &&\r\n x === this.x &&\r\n y === this.y)\r\n return;\r\n this._transform.e = x;\r\n this._transform.f = y;\r\n this._transform.d = this._transform.a = scale;\r\n this.style.setProperty('--x', this.x + 'px');\r\n this.style.setProperty('--y', this.y + 'px');\r\n this.style.setProperty('--scale', this.scale + '');\r\n if (allowChangeEvent) {\r\n const event = new Event('change', { bubbles: true });\r\n this.dispatchEvent(event);\r\n }\r\n }\r\n /**\r\n * Called when the direct children of this element change.\r\n * Until we have have shadow dom support across the board, we\r\n * require a single element to be the child of <pinch-zoom>, and\r\n * that's the element we pan/scale.\r\n */\r\n _stageElChange() {\r\n this._positioningEl = undefined;\r\n if (this.children.length === 0)\r\n return;\r\n this._positioningEl = this.children[0];\r\n if (this.children.length > 1) {\r\n console.warn('<pinch-zoom> must not have more than one child.');\r\n }\r\n // Do a bounds check\r\n this.setTransform({ allowChangeEvent: true });\r\n }\r\n _onWheel(event) {\r\n if (!this._positioningEl)\r\n return;\r\n event.preventDefault();\r\n const currentRect = this._positioningEl.getBoundingClientRect();\r\n let { deltaY } = event;\r\n const { ctrlKey, deltaMode } = event;\r\n if (deltaMode === 1) { // 1 is \"lines\", 0 is \"pixels\"\r\n // Firefox uses \"lines\" for some types of mouse\r\n deltaY *= 15;\r\n }\r\n // ctrlKey is true when pinch-zooming on a trackpad.\r\n const divisor = ctrlKey ? 100 : 300;\r\n const scaleDiff = 1 - deltaY / divisor;\r\n const isZoomOut = scaleDiff < 1;\r\n this._applyChange({\r\n scaleDiff,\r\n originX: event.clientX - currentRect.left,\r\n originY: event.clientY - currentRect.top,\r\n allowChangeEvent: true,\r\n });\r\n if (isZoomOut) {\r\n this._maybeResetScale();\r\n }\r\n }\r\n _onPointerMove(previousPointers, currentPointers, event) {\r\n if (!this._positioningEl)\r\n return;\r\n const isPan = previousPointers.length < 2;\r\n if (isPan && !this._allowPan()) {\r\n return;\r\n }\r\n // Combine next points with previous points\r\n const currentRect = this._positioningEl.getBoundingClientRect();\r\n // For calculating panning movement\r\n const prevMidpoint = getMidpoint(previousPointers[0], previousPointers[1]);\r\n const newMidpoint = getMidpoint(currentPointers[0], currentPointers[1]);\r\n // Midpoint within the element\r\n const originX = prevMidpoint.clientX - currentRect.left;\r\n const originY = prevMidpoint.clientY - currentRect.top;\r\n // Calculate the desired change in scale\r\n const prevDistance = getDistance(previousPointers[0], previousPointers[1]);\r\n const newDistance = getDistance(currentPointers[0], currentPointers[1]);\r\n const scaleDiff = prevDistance ? newDistance / prevDistance : 1;\r\n this._applyChange({\r\n originX, originY, scaleDiff,\r\n panX: newMidpoint.clientX - prevMidpoint.clientX,\r\n panY: newMidpoint.clientY - prevMidpoint.clientY,\r\n allowChangeEvent: true,\r\n });\r\n this._maybeStopPropagate(event);\r\n }\r\n _maybeResetScale() {\r\n if (roundedCmp(this.scale, this.resetToMinScaleLimit) <= 0) {\r\n this._resetToMinScale();\r\n }\r\n }\r\n _onPointerEnd(pointer, currentPointers, event) {\r\n if (!this._positioningEl)\r\n return;\r\n const totalPointers = 1 + currentPointers.length;\r\n const isPinch = totalPointers >= 2;\r\n const isPan = totalPointers == 1;\r\n if (isPinch) {\r\n this._maybeResetScale();\r\n }\r\n if (isPan && !this._allowPan()) {\r\n return;\r\n }\r\n this._maybeStopPropagate(event);\r\n }\r\n _resetToMinScale() {\r\n if (this.reachMinScaleStrategy === 'reset') {\r\n this.setTransform({ scale: this.minScale, x: 0, y: 0 });\r\n }\r\n else {\r\n this.setTransform({ scale: this.minScale });\r\n }\r\n }\r\n /** Transform the view & fire a change event */\r\n _applyChange(opts = {}) {\r\n const { panX = 0, panY = 0, originX = 0, originY = 0, scaleDiff = 1, allowChangeEvent = false, } = opts;\r\n const matrix = createMatrix()\r\n // Translate according to panning.\r\n .translate(panX, panY)\r\n // Scale about the origin.\r\n .translate(originX, originY)\r\n // Apply current translate\r\n .translate(this.x, this.y)\r\n .scale(scaleDiff)\r\n .translate(-originX, -originY)\r\n // Apply current scale.\r\n .scale(this.scale);\r\n // Convert the transform into basic translate & scale.\r\n this.setTransform({\r\n allowChangeEvent,\r\n scale: matrix.a,\r\n x: matrix.e,\r\n y: matrix.f,\r\n });\r\n }\r\n _maybeStopPropagate(event) {\r\n if (this.stopPropagateHandled) {\r\n event.stopPropagation();\r\n }\r\n }\r\n _allowPan() {\r\n return (this.allowPanMinScale > 0\r\n && roundedCmp(this.scale, this.allowPanMinScale) > 0);\r\n }\r\n _maybeEmitCancel(pointers) {\r\n const makeCancelEvent = (pointer) => (new PointerEvent('pointercancel', {\r\n pointerId: pointer.id,\r\n clientX: pointer.clientX,\r\n clientY: pointer.clientY,\r\n }));\r\n if (this.stopPropagateHandled) {\r\n pointers.forEach(p => {\r\n if (this.parentElement && typeof this.parentElement.dispatchEvent === 'function') {\r\n this.parentElement.dispatchEvent(makeCancelEvent(p));\r\n }\r\n });\r\n }\r\n }\r\n _onClick(event, pointerTracker) {\r\n // We never handle non-left-clicks\r\n if (event.button !== BUTTON_LEFT) {\r\n return;\r\n }\r\n const wasPanning = pointerTracker.currentPointers.length === 0;\r\n const handled = !(wasPanning && !this._allowPan());\r\n if (handled) {\r\n this._maybeStopPropagate(event);\r\n }\r\n }\r\n}\n\ncustomElements.define('pinch-zoom', PinchZoom);\n\nexport default PinchZoom;\n","import { extend, isArray, toNumber, isMap, isIntegerKey, hasOwn, isSymbol, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index =\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n run(fn) {\n if (this.active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n }\n finally {\n activeEffectScope = currentEffectScope;\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this.active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`onScopeDispose() is called when there is no active effect scope` +\n ` to be associated with.`);\n }\n}\n\nconst createDep = (effects) => {\n const dep = new Set(effects);\n dep.w = 0;\n dep.n = 0;\n return dep;\n};\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({ deps }) => {\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].w |= trackOpBit; // set was tracked\n }\n }\n};\nconst finalizeDepMarkers = (effect) => {\n const { deps } = effect;\n if (deps.length) {\n let ptr = 0;\n for (let i = 0; i < deps.length; i++) {\n const dep = deps[i];\n if (wasTracked(dep) && !newTracked(dep)) {\n dep.delete(effect);\n }\n else {\n deps[ptr++] = dep;\n }\n // clear bits\n dep.w &= ~trackOpBit;\n dep.n &= ~trackOpBit;\n }\n deps.length = ptr;\n }\n};\n\nconst targetMap = new WeakMap();\n// The number of effects currently being tracked recursively.\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\n/**\n * The bitwise track markers support at most 30 levels of recursion.\n * This value is chosen to enable modern JS engines to use a SMI on all platforms.\n * When recursion depth is greater, fall back to using a full cleanup.\n */\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');\nconst MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');\nclass ReactiveEffect {\n constructor(fn, scheduler = null, scope) {\n this.fn = fn;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n this.parent = undefined;\n recordEffectScope(this, scope);\n }\n run() {\n if (!this.active) {\n return this.fn();\n }\n let parent = activeEffect;\n let lastShouldTrack = shouldTrack;\n while (parent) {\n if (parent === this) {\n return;\n }\n parent = parent.parent;\n }\n try {\n this.parent = activeEffect;\n activeEffect = this;\n shouldTrack = true;\n trackOpBit = 1 << ++effectTrackDepth;\n if (effectTrackDepth <= maxMarkerBits) {\n initDepMarkers(this);\n }\n else {\n cleanupEffect(this);\n }\n return this.fn();\n }\n finally {\n if (effectTrackDepth <= maxMarkerBits) {\n finalizeDepMarkers(this);\n }\n trackOpBit = 1 << --effectTrackDepth;\n activeEffect = this.parent;\n shouldTrack = lastShouldTrack;\n this.parent = undefined;\n if (this.deferStop) {\n this.stop();\n }\n }\n }\n stop() {\n // stopped while running itself - defer the cleanup\n if (activeEffect === this) {\n this.deferStop = true;\n }\n else if (this.active) {\n cleanupEffect(this);\n if (this.onStop) {\n this.onStop();\n }\n this.active = false;\n }\n }\n}\nfunction cleanupEffect(effect) {\n const { deps } = effect;\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].delete(effect);\n }\n deps.length = 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn);\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === undefined ? true : last;\n}\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, (depsMap = new Map()));\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, (dep = createDep()));\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { effect: activeEffect, target, type, key }\n : undefined;\n trackEffects(dep, eventInfo);\n }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n let shouldTrack = false;\n if (effectTrackDepth <= maxMarkerBits) {\n if (!newTracked(dep)) {\n dep.n |= trackOpBit; // set newly tracked\n shouldTrack = !wasTracked(dep);\n }\n }\n else {\n // Full cleanup mode.\n shouldTrack = !dep.has(activeEffect);\n }\n if (shouldTrack) {\n dep.add(activeEffect);\n activeEffect.deps.push(dep);\n if ((process.env.NODE_ENV !== 'production') && activeEffect.onTrack) {\n activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n // never been tracked\n return;\n }\n let deps = [];\n if (type === \"clear\" /* TriggerOpTypes.CLEAR */) {\n // collection being cleared\n // trigger all effects for target\n deps = [...depsMap.values()];\n }\n else if (key === 'length' && isArray(target)) {\n const newLength = toNumber(newValue);\n depsMap.forEach((dep, key) => {\n if (key === 'length' || key >= newLength) {\n deps.push(dep);\n }\n });\n }\n else {\n // schedule runs for SET | ADD | DELETE\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n // also run for iteration key on ADD | DELETE | Map.SET\n switch (type) {\n case \"add\" /* TriggerOpTypes.ADD */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n else if (isIntegerKey(key)) {\n // new index added to array -> length changes\n deps.push(depsMap.get('length'));\n }\n break;\n case \"delete\" /* TriggerOpTypes.DELETE */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\" /* TriggerOpTypes.SET */:\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { target, type, key, newValue, oldValue, oldTarget }\n : undefined;\n if (deps.length === 1) {\n if (deps[0]) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(deps[0], eventInfo);\n }\n else {\n triggerEffects(deps[0]);\n }\n }\n }\n else {\n const effects = [];\n for (const dep of deps) {\n if (dep) {\n effects.push(...dep);\n }\n }\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(createDep(effects), eventInfo);\n }\n else {\n triggerEffects(createDep(effects));\n }\n }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n // spread into array for stabilization\n const effects = isArray(dep) ? dep : [...dep];\n for (const effect of effects) {\n if (effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n for (const effect of effects) {\n if (!effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n}\nfunction triggerEffect(effect, debuggerEventExtraInfo) {\n if (effect !== activeEffect || effect.allowRecurse) {\n if ((process.env.NODE_ENV !== 'production') && effect.onTrigger) {\n effect.onTrigger(extend({ effect }, debuggerEventExtraInfo));\n }\n if (effect.scheduler) {\n effect.scheduler();\n }\n else {\n effect.run();\n }\n }\n}\n\nconst isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n/*#__PURE__*/\nObject.getOwnPropertyNames(Symbol)\n // ios10.x Object.getOwnPropertyNames(Symbol) can enumerate 'arguments' and 'caller'\n // but accessing them on Symbol leads to TypeError because Symbol is a strict mode\n // function\n .filter(key => key !== 'arguments' && key !== 'caller')\n .map(key => Symbol[key])\n .filter(isSymbol));\nconst get = /*#__PURE__*/ createGetter();\nconst shallowGet = /*#__PURE__*/ createGetter(false, true);\nconst readonlyGet = /*#__PURE__*/ createGetter(true);\nconst shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);\nconst arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\n instrumentations[key] = function (...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\" /* TrackOpTypes.GET */, i + '');\n }\n // we run the method using the original args first (which may be reactive)\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n // if that didn't work, run it again using raw values.\n return arr[key](...args.map(toRaw));\n }\n else {\n return res;\n }\n };\n });\n ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\n instrumentations[key] = function (...args) {\n pauseTracking();\n const res = toRaw(this)[key].apply(this, args);\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction createGetter(isReadonly = false, shallow = false) {\n return function get(target, key, receiver) {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */) {\n return shallow;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */ &&\n receiver ===\n (isReadonly\n ? shallow\n ? shallowReadonlyMap\n : readonlyMap\n : shallow\n ? shallowReactiveMap\n : reactiveMap).get(target)) {\n return target;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly) {\n track(target, \"get\" /* TrackOpTypes.GET */, key);\n }\n if (shallow) {\n return res;\n }\n if (isRef(res)) {\n // ref unwrapping - skip unwrap for Array + integer key.\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n // Convert returned value into a proxy as well. we do the isObject check\n // here to avoid invalid value warning. Also need to lazy access readonly\n // and reactive here to avoid circular dependency.\n return isReadonly ? readonly(res) : reactive(res);\n }\n return res;\n };\n}\nconst set = /*#__PURE__*/ createSetter();\nconst shallowSet = /*#__PURE__*/ createSetter(true);\nfunction createSetter(shallow = false) {\n return function set(target, key, value, receiver) {\n let oldValue = target[key];\n if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n return false;\n }\n if (!shallow) {\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key)\n ? Number(key) < target.length\n : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n // don't trigger if target is something up in the prototype chain of original\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n }\n return result;\n };\n}\nfunction deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\" /* TrackOpTypes.HAS */, key);\n }\n return result;\n}\nfunction ownKeys(target) {\n track(target, \"iterate\" /* TrackOpTypes.ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);\n return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n get,\n set,\n deleteProperty,\n has,\n ownKeys\n};\nconst readonlyHandlers = {\n get: readonlyGet,\n set(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n },\n deleteProperty(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n }\n};\nconst shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, {\n get: shallowGet,\n set: shallowSet\n});\n// Props handlers are special in the sense that it should not unwrap top-level\n// refs (in order to allow refs to be explicitly passed down), but should\n// retain the reactivity of the normal readonly object.\nconst shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, {\n get: shallowReadonlyGet\n});\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\n // of the value\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, key);\n }\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n }\n else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n }\n else if (target !== rawTarget) {\n // #3602 readonly(reactive(Map))\n // ensure that the nested reactive `Map` can do tracking for itself\n target.get(key);\n }\n}\nfunction has$1(key, isReadonly = false) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, key);\n }\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, rawKey);\n }\n return key === rawKey\n ? target.has(key)\n : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n !isReadonly && track(toRaw(target), \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return Reflect.get(target, 'size', target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, value, value);\n }\n return this;\n}\nfunction set$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : undefined;\n // forward the operation before queueing reactions\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = (process.env.NODE_ENV !== 'production')\n ? isMap(target)\n ? new Map(target)\n : new Set(target)\n : undefined;\n // forward the operation before queueing reactions\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\" /* TriggerOpTypes.CLEAR */, undefined, undefined, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return target.forEach((value, key) => {\n // important: make sure the callback is\n // 1. invoked with the reactive map as `this` and 3rd arg\n // 2. the value received should be a corresponding reactive/readonly.\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function (...args) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);\n const isKeyOnly = method === 'keys' && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly &&\n track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n // return a wrapped iterator which returns observed versions of the\n // values emitted from the real iterator\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done\n ? { value, done }\n : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function (...args) {\n if ((process.env.NODE_ENV !== 'production')) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\n }\n return type === \"delete\" /* TriggerOpTypes.DELETE */ ? false : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations = {\n get(key) {\n return get$1(this, key);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations = {\n get(key) {\n return get$1(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\n iteratorMethods.forEach(method => {\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\n });\n return [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n ];\n}\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow\n ? isReadonly\n ? shallowReadonlyInstrumentations\n : shallowInstrumentations\n : isReadonly\n ? readonlyInstrumentations\n : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */) {\n return target;\n }\n return Reflect.get(hasOwn(instrumentations, key) && key in target\n ? instrumentations\n : target, key, receiver);\n };\n}\nconst mutableCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n console.warn(`Reactive ${type} contains both the raw and reactive ` +\n `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +\n `which can lead to inconsistencies. ` +\n `Avoid differentiating between the raw and reactive versions ` +\n `of an object and only use the reactive version if possible.`);\n }\n}\n\nconst reactiveMap = new WeakMap();\nconst shallowReactiveMap = new WeakMap();\nconst readonlyMap = new WeakMap();\nconst shallowReadonlyMap = new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case 'Object':\n case 'Array':\n return 1 /* TargetType.COMMON */;\n case 'Map':\n case 'Set':\n case 'WeakMap':\n case 'WeakSet':\n return 2 /* TargetType.COLLECTION */;\n default:\n return 0 /* TargetType.INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value)\n ? 0 /* TargetType.INVALID */\n : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\n}\n/**\n * Creates a readonly copy of the original object. Note the returned copy is not\n * made reactive, but `readonly` can be called on an already reactive object.\n */\nfunction readonly(target) {\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);\n}\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n // target is already a Proxy, return it.\n // exception: calling readonly() on a reactive object\n if (target[\"__v_raw\" /* ReactiveFlags.RAW */] &&\n !(isReadonly && target[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */])) {\n return target;\n }\n // target already has corresponding Proxy\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n // only specific value types can be observed.\n const targetType = getTargetType(target);\n if (targetType === 0 /* TargetType.INVALID */) {\n return target;\n }\n const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n return !!(value && value[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref) {\n if (shouldTrack && activeEffect) {\n ref = toRaw(ref);\n if ((process.env.NODE_ENV !== 'production')) {\n trackEffects(ref.dep || (ref.dep = createDep()), {\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n else {\n trackEffects(ref.dep || (ref.dep = createDep()));\n }\n }\n}\nfunction triggerRefValue(ref, newVal) {\n ref = toRaw(ref);\n if (ref.dep) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(ref.dep, {\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value',\n newValue: newVal\n });\n }\n else {\n triggerEffects(ref.dep);\n }\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = undefined;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, newVal);\n }\n }\n}\nfunction triggerRef(ref) {\n triggerRefValue(ref, (process.env.NODE_ENV !== 'production') ? ref.value : void 0);\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs)\n ? objectWithRefs\n : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = undefined;\n this.__v_isRef = true;\n const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if ((process.env.NODE_ENV !== 'production') && !isProxy(object)) {\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === undefined ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n}\nfunction toRef(object, key, defaultValue) {\n const val = object[key];\n return isRef(val)\n ? val\n : new ObjectRefImpl(object, key, defaultValue);\n}\n\nvar _a;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this._setter = _setter;\n this.dep = undefined;\n this.__v_isRef = true;\n this[_a] = false;\n this._dirty = true;\n this.effect = new ReactiveEffect(getter, () => {\n if (!this._dirty) {\n this._dirty = true;\n triggerRefValue(this);\n }\n });\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */] = isReadonly;\n }\n get value() {\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n const self = toRaw(this);\n trackRefValue(self);\n if (self._dirty || !self._cacheable) {\n self._dirty = false;\n self._value = self.effect.run();\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n}\n_a = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = (process.env.NODE_ENV !== 'production')\n ? () => {\n console.warn('Write operation failed: computed value is readonly');\n }\n : NOOP;\n }\n else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if ((process.env.NODE_ENV !== 'production') && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nvar _a$1;\nconst tick = /*#__PURE__*/ Promise.resolve();\nconst queue = [];\nlet queued = false;\nconst scheduler = (fn) => {\n queue.push(fn);\n if (!queued) {\n queued = true;\n tick.then(flush);\n }\n};\nconst flush = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]();\n }\n queue.length = 0;\n queued = false;\n};\nclass DeferredComputedRefImpl {\n constructor(getter) {\n this.dep = undefined;\n this._dirty = true;\n this.__v_isRef = true;\n this[_a$1] = true;\n let compareTarget;\n let hasCompareTarget = false;\n let scheduled = false;\n this.effect = new ReactiveEffect(getter, (computedTrigger) => {\n if (this.dep) {\n if (computedTrigger) {\n compareTarget = this._value;\n hasCompareTarget = true;\n }\n else if (!scheduled) {\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\n scheduled = true;\n hasCompareTarget = false;\n scheduler(() => {\n if (this.effect.active && this._get() !== valueToCompare) {\n triggerRefValue(this);\n }\n scheduled = false;\n });\n }\n // chained upstream computeds are notified synchronously to ensure\n // value invalidation in case of sync access; normal effects are\n // deferred to be triggered in scheduler.\n for (const e of this.dep) {\n if (e.computed instanceof DeferredComputedRefImpl) {\n e.scheduler(true /* computedTrigger */);\n }\n }\n }\n this._dirty = true;\n });\n this.effect.computed = this;\n }\n _get() {\n if (this._dirty) {\n this._dirty = false;\n return (this._value = this.effect.run());\n }\n return this._value;\n }\n get value() {\n trackRefValue(this);\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n return toRaw(this)._get();\n }\n}\n_a$1 = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction deferredComputed(getter) {\n return new DeferredComputedRefImpl(getter);\n}\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, track, trigger, triggerRef, unref };\n","import { pauseTracking, resetTracking, isRef, toRaw, isShallow as isShallow$1, isReactive, ReactiveEffect, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, EffectScope, markRaw, proxyRefs, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, toNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, hasChanged, remove, isSet, isMap, isPlainObject, invokeArrayFns, isBuiltInDirective, capitalize, isGloballyWhitelisted, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, NO, normalizeClass, normalizeStyle } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn(msg, ...args) {\n if (!(process.env.NODE_ENV !== 'production'))\n return;\n // avoid props formatting or warn handler tracking deps that might be mutated\n // during patch, leading to infinite recursion.\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(appWarnHandler, instance, 11 /* ErrorCodes.APP_WARN_HANDLER */, [\n msg + args.join(''),\n instance && instance.proxy,\n trace\n .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)\n .join('\\n'),\n trace\n ]);\n }\n else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n /* istanbul ignore if */\n if (trace.length &&\n // avoid spamming console during tests\n !false) {\n warnArgs.push(`\\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n // we can't just use the stack because it will be incomplete during updates\n // that did not start from the root. Re-construct the parent chain using\n // instance parent pointers.\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n }\n else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\n/* istanbul ignore next */\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\n const close = `>` + postfix;\n return vnode.props\n ? [open, ...formatProps(vnode.props), close]\n : [open + close];\n}\n/* istanbul ignore next */\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach(key => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\n/* istanbul ignore next */\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n }\n else if (typeof value === 'number' ||\n typeof value === 'boolean' ||\n value == null) {\n return raw ? value : [`${key}=${value}`];\n }\n else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n }\n else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n }\n else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\" /* LifecycleHooks.SERVER_PREFETCH */]: 'serverPrefetch hook',\n [\"bc\" /* LifecycleHooks.BEFORE_CREATE */]: 'beforeCreate hook',\n [\"c\" /* LifecycleHooks.CREATED */]: 'created hook',\n [\"bm\" /* LifecycleHooks.BEFORE_MOUNT */]: 'beforeMount hook',\n [\"m\" /* LifecycleHooks.MOUNTED */]: 'mounted hook',\n [\"bu\" /* LifecycleHooks.BEFORE_UPDATE */]: 'beforeUpdate hook',\n [\"u\" /* LifecycleHooks.UPDATED */]: 'updated',\n [\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */]: 'beforeUnmount hook',\n [\"um\" /* LifecycleHooks.UNMOUNTED */]: 'unmounted hook',\n [\"a\" /* LifecycleHooks.ACTIVATED */]: 'activated hook',\n [\"da\" /* LifecycleHooks.DEACTIVATED */]: 'deactivated hook',\n [\"ec\" /* LifecycleHooks.ERROR_CAPTURED */]: 'errorCaptured hook',\n [\"rtc\" /* LifecycleHooks.RENDER_TRACKED */]: 'renderTracked hook',\n [\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */]: 'renderTriggered hook',\n [0 /* ErrorCodes.SETUP_FUNCTION */]: 'setup function',\n [1 /* ErrorCodes.RENDER_FUNCTION */]: 'render function',\n [2 /* ErrorCodes.WATCH_GETTER */]: 'watcher getter',\n [3 /* ErrorCodes.WATCH_CALLBACK */]: 'watcher callback',\n [4 /* ErrorCodes.WATCH_CLEANUP */]: 'watcher cleanup function',\n [5 /* ErrorCodes.NATIVE_EVENT_HANDLER */]: 'native event handler',\n [6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */]: 'component event handler',\n [7 /* ErrorCodes.VNODE_HOOK */]: 'vnode hook',\n [8 /* ErrorCodes.DIRECTIVE_HOOK */]: 'directive hook',\n [9 /* ErrorCodes.TRANSITION_HOOK */]: 'transition hook',\n [10 /* ErrorCodes.APP_ERROR_HANDLER */]: 'app errorHandler',\n [11 /* ErrorCodes.APP_WARN_HANDLER */]: 'app warnHandler',\n [12 /* ErrorCodes.FUNCTION_REF */]: 'ref function',\n [13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */]: 'async component loader',\n [14 /* ErrorCodes.SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +\n 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n }\n catch (err) {\n handleError(err, instance, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch(err => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n // the exposed instance is the render proxy to keep it consistent with 2.x\n const exposedInstance = instance.proxy;\n // in production the hook receives only the error code\n const errorInfo = (process.env.NODE_ENV !== 'production') ? ErrorTypeStrings[type] : type;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n // app-level handling\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(appErrorHandler, null, 10 /* ErrorCodes.APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if ((process.env.NODE_ENV !== 'production')) {\n const info = ErrorTypeStrings[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n // crash in dev by default so it's more noticeable\n if (throwInDev) {\n throw err;\n }\n else {\n console.error(err);\n }\n }\n else {\n // recover in prod to reduce the impact on end-user\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /*#__PURE__*/ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\n// #2768\n// Use binary-search to find a suitable position in the queue,\n// so that the queue maintains the increasing order of job's id,\n// which can prevent the job from being skipped and also can avoid repeated patching.\nfunction findInsertionIndex(id) {\n // the start index should be `flushIndex + 1`\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = (start + end) >>> 1;\n const middleJobId = getId(queue[middle]);\n middleJobId < id ? (start = middle + 1) : (end = middle);\n }\n return start;\n}\nfunction queueJob(job) {\n // the dedupe search uses the startIndex argument of Array.includes()\n // by default the search index includes the current job that is being run\n // so it cannot recursively trigger itself again.\n // if the job is a watch() callback, the search will start with a +1 index to\n // allow it recursively trigger itself - it is the user's responsibility to\n // ensure it doesn't end up in an infinite loop.\n if (!queue.length ||\n !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {\n if (job.id == null) {\n queue.push(job);\n }\n else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs ||\n !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {\n pendingPostFlushCbs.push(cb);\n }\n }\n else {\n // if cb is an array, it is a component lifecycle hook which can only be\n // triggered by a job, which is already deduped in the main queue, so\n // we can skip duplicate check here to improve perf\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(seen, \n// if currently flushing, skip the current job itself\ni = isFlushing ? flushIndex + 1 : 0) {\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if ((process.env.NODE_ENV !== 'production') && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n // #1947 already has active queue, nested flushPostFlushCbs call\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if ((process.env.NODE_ENV !== 'production') &&\n checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child so its render effect will have smaller\n // priority number)\n // 2. If a component is unmounted during a parent component's update,\n // its update can be skipped.\n queue.sort(comparator);\n // conditional usage of checkRecursiveUpdate must be determined out of\n // try ... catch block since Rollup by default de-optimizes treeshaking\n // inside try-catch. This can leave all warning code unshaked. Although\n // they would get eventually shaken by a minifier like terser, some minifiers\n // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\n const check = (process.env.NODE_ENV !== 'production')\n ? (job) => checkRecursiveUpdates(seen, job)\n : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if ((process.env.NODE_ENV !== 'production') && check(job)) {\n continue;\n }\n // console.log(`running:`, job.id)\n callWithErrorHandling(job, null, 14 /* ErrorCodes.SCHEDULER */);\n }\n }\n }\n finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n // some postFlushCb queued jobs!\n // keep flushing until it drains.\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n }\n else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +\n `This means you have a reactive effect that is mutating its own ` +\n `dependencies and thus recursively triggering itself. Possible sources ` +\n `include component template, render function, updated hook or ` +\n `watcher source function.`);\n return true;\n }\n else {\n seen.set(fn, count + 1);\n }\n }\n}\n\n/* eslint-disable no-restricted-globals */\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = new Set();\n// Expose the HMR runtime on the global object\n// This makes it entirely tree-shakable without polluting the exports and makes\n// it easier to be used in toolings like vue-loader\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\n// to be set so that its instances can be registered / removed.\nif ((process.env.NODE_ENV !== 'production')) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n // update initial record (for not-yet-rendered component)\n record.initialDef.render = newRender;\n [...record.instances].forEach(instance => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n // this flag forces child components with slot content to update\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n // update initial def (for not-yet-rendered components)\n updateComponentDef(record.initialDef, newComp);\n // create a snapshot which avoids the set being mutated during updates\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n // 1. Update existing comp definition to match new one\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n // 2. mark definition dirty. This forces the renderer to replace the\n // component on patch.\n hmrDirtyComponents.add(oldComp);\n }\n // 3. invalidate options resolution cache\n instance.appContext.optionsCache.delete(instance.type);\n // 4. actually update\n if (instance.ceReload) {\n // custom element\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n }\n else if (instance.parent) {\n // 4. Force the parent instance to re-render. This will cause all updated\n // components to be unmounted and re-mounted. Queue the update so that we\n // don't end up forcing the same parent to re-render multiple times.\n queueJob(instance.parent.update);\n }\n else if (instance.appContext.reload) {\n // root instance mounted via createApp() has a reload method\n instance.appContext.reload();\n }\n else if (typeof window !== 'undefined') {\n // root instance inside tree created via raw render(). Force reload.\n window.location.reload();\n }\n else {\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\n }\n }\n // 5. make sure to cleanup dirty hmr components after update\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== '__file' && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n }\n catch (e) {\n console.error(e);\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\n `Full reload required.`);\n }\n };\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n }\n else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n }\n else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== 'undefined' &&\n // some envs mock window but not fully\n window.HTMLElement &&\n // also exclude jsdom\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n // clear buffer after 3s - the user probably doesn't have devtools installed\n // at all, and keeping the buffer will cause memory leaks (#4738)\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3000);\n }\n else {\n // non-browser env, assume not installed\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit(\"app:init\" /* DevtoolsHooks.APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit(\"app:unmount\" /* DevtoolsHooks.APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* DevtoolsHooks.COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = \n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* DevtoolsHooks.COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* DevtoolsHooks.COMPONENT_REMOVED */);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools &&\n typeof devtools.cleanupBuffer === 'function' &&\n // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\n };\n}\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* DevtoolsHooks.PERFORMANCE_START */);\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* DevtoolsHooks.PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit(\"component:emit\" /* DevtoolsHooks.COMPONENT_EMIT */, component.appContext.app, component, event, params);\n}\n\nfunction emit$1(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if ((process.env.NODE_ENV !== 'production')) {\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) &&\n !(false )) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\n }\n }\n else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith('update:');\n // for v-model update:xxx events, apply modifiers on args\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map(a => (isString(a) ? a.trim() : a));\n }\n if (number) {\n args = rawArgs.map(toNumber);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\n `Note that HTML attributes are case-insensitive and you cannot use ` +\n `v-on to listen to camelCase events when using in-DOM templates. ` +\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\n }\n }\n let handlerName;\n let handler = props[(handlerName = toHandlerKey(event))] ||\n // also try camelCase event handler (#2249)\n props[(handlerName = toHandlerKey(camelize(event)))];\n // for v-model update:xxx events, also trigger kebab-case equivalent\n // for props passed via kebab-case\n if (!handler && isModelListener) {\n handler = props[(handlerName = toHandlerKey(hyphenate(event)))];\n }\n if (handler) {\n callWithAsyncErrorHandling(handler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n }\n else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== undefined) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach(key => (normalized[key] = null));\n }\n else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\n// Check if an incoming prop key is a declared emit event listener.\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\n// both considered matched listeners.\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, '');\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\n hasOwn(options, hyphenate(key)) ||\n hasOwn(options, key));\n}\n\n/**\n * mark the current rendering instance for asset resolution (e.g.\n * resolveComponent, resolveDirective) during render\n */\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\n/**\n * Note: rendering calls maybe nested. The function returns the parent rendering\n * instance if present, which should be restored after the render is done:\n *\n * ```js\n * const prev = setCurrentRenderingInstance(i)\n * // ...render\n * setCurrentRenderingInstance(prev)\n * ```\n */\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = (instance && instance.type.__scopeId) || null;\n return prev;\n}\n/**\n * Set scope id when creating hoisted vnodes.\n * @private compiler helper\n */\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\n/**\n * Technically we no longer need this after 3.0.8 but we need to keep the same\n * API for backwards compat w/ code generated by compilers.\n * @private\n */\nfunction popScopeId() {\n currentScopeId = null;\n}\n/**\n * Only for backwards compat\n * @private\n */\nconst withScopeId = (_id) => withCtx;\n/**\n * Wrap a slot function to memoize current rendering instance\n * @private compiler helper\n */\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\n) {\n if (!ctx)\n return fn;\n // already normalized\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n // If a user calls a compiled slot inside a template expression (#1745), it\n // can mess up block tracking, so by default we disable block tracking and\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\n // This isn't necessary if rendering a compiled `<slot>`, so we flip the\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n }\n finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n // mark normalized to avoid duplicated wrapping\n renderFnWithContext._n = true;\n // mark this as compiled by default\n // this is used in vnode.ts -> normalizeChildren() to set the slot\n // rendering flag.\n renderFnWithContext._c = true;\n // disable block tracking by default\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\n/**\n * dev only flag to track whether $attrs was used during render.\n * If $attrs was used during render then the warning for failed attrs\n * fallthrough can be suppressed.\n */\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) {\n // withProxy is a proxy with a different `has` trap only for\n // runtime-compiled render functions using `with` block.\n const proxyToUse = withProxy || proxy;\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n fallthroughAttrs = attrs;\n }\n else {\n // functional\n const render = Component;\n // in dev, mark attrs accessed if optional props (attrs === props)\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(render.length > 1\n ? render(props, (process.env.NODE_ENV !== 'production')\n ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n }\n : { attrs, slots, emit })\n : render(props, null /* we know it doesn't need it */));\n fallthroughAttrs = Component.props\n ? attrs\n : getFunctionalFallthrough(attrs);\n }\n }\n catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1 /* ErrorCodes.RENDER_FUNCTION */);\n result = createVNode(Comment);\n }\n // attr merging\n // in dev mode, comments are preserved, and it's possible for a template\n // to have comments along side the root element which makes it a fragment\n let root = result;\n let setRoot = undefined;\n if ((process.env.NODE_ENV !== 'production') &&\n result.patchFlag > 0 &&\n result.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 6 /* ShapeFlags.COMPONENT */)) {\n if (propsOptions && keys.some(isModelListener)) {\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\n // prop, it indicates this component expects to handle v-model and\n // it should not fallthrough.\n // related: #1543, #1643, #1989\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n }\n root = cloneVNode(root, fallthroughAttrs);\n }\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n // ignore v-model handlers when they fail to fallthrough\n if (!isModelListener(key)) {\n // remove `on`, lowercase first letter to reflect event casing\n // accurately\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n }\n else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn(`Extraneous non-props attributes (` +\n `${extraAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes.`);\n }\n if (eventAttrs.length) {\n warn(`Extraneous non-emits event listeners (` +\n `${eventAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes. ` +\n `If the listener is intended to be a component custom event listener only, ` +\n `declare it using the \"emits\" option.`);\n }\n }\n }\n }\n // inherit directives\n if (vnode.dirs) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Runtime directive used on component with non-element root node. ` +\n `The directives will not function as intended.`);\n }\n // clone before mutating since the root may be a hoisted vnode\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n // inherit transition data\n if (vnode.transition) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Component inside <Transition> renders non-element root node ` +\n `that cannot be animated.`);\n }\n root.transition = vnode.transition;\n }\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\n setRoot(root);\n }\n else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\n/**\n * dev only\n * In dev mode, template root level comments are rendered, which turns the\n * template into a fragment root, but we need to locate the single element\n * root for attrs and scope id processing.\n */\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren);\n if (!childRoot) {\n return [vnode, undefined];\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n }\n else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n // ignore user comment\n if (child.type !== Comment || child.children === 'v-if') {\n if (singleRoot) {\n // has more than 1 non-comment child, return now\n return;\n }\n else {\n singleRoot = child;\n }\n }\n }\n else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === 'class' || key === 'style' || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return (vnode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 1 /* ShapeFlags.ELEMENT */) ||\n vnode.type === Comment // potential v-if branch switch\n );\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n // Parent component's render function was hot-updated. Since this may have\n // caused the child component's slots content to have changed, we need to\n // force the child to update as well.\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n // force child update for runtime directive or transition on component vnode.\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024 /* PatchFlags.DYNAMIC_SLOTS */) {\n // slot content that references values that might have changed,\n // e.g. in a v-for\n return true;\n }\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n if (!prevProps) {\n return !!nextProps;\n }\n // presence of this flag indicates props are always non-null\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n else if (patchFlag & 8 /* PatchFlags.PROPS */) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n }\n else {\n // this path is only taken by manually written render functions\n // so presence of any children leads to a forced update\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\n) {\n while (parent && parent.subTree === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\n// Suspense exposes a component-like API, and is treated like a component\n// in the compiler, but internally it's a special built-in type that hooks\n// directly into the renderer.\nconst SuspenseImpl = {\n name: 'Suspense',\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \n // platform-specific impl passed from renderer\n rendererInternals) {\n if (n1 == null) {\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n else {\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\n// Force-casted public typing for h and TSX props inference\nconst Suspense = (SuspenseImpl\n );\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n const { p: patch, o: { createElement } } = rendererInternals;\n const hiddenContainer = createElement('div');\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\n // start mounting the content subtree in an off-dom container\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\n // now check if we have encountered any async deps\n if (suspense.deps > 0) {\n // has async\n // invoke @fallback event\n triggerEvent(vnode, 'onPending');\n triggerEvent(vnode, 'onFallback');\n // mount the fallback tree\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds);\n setActiveBranch(suspense, vnode.ssFallback);\n }\n else {\n // Suspense has no async deps. Just resolve.\n suspense.resolve();\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = (n2.suspense = n1.suspense);\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n // same root type but content may have changed.\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else if (isInFallback) {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else {\n // toggled before pending tree is resolved\n suspense.pendingId++;\n if (isHydrating) {\n // if toggled before hydration is finished, the current DOM tree is\n // no longer valid. set it as the active branch so it will be unmounted\n // when resolved\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n }\n else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n // increment pending ID. this is used to invalidate async callbacks\n // reset suspense state\n suspense.deps = 0;\n // discard effects from pending branch\n suspense.effects.length = 0;\n // discard previous container\n suspense.hiddenContainer = createElement('div');\n if (isInFallback) {\n // already in fallback state\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // toggled \"back\" to current active branch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n // force resolve\n suspense.resolve(true);\n }\n else {\n // switched to a 3rd branch\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n }\n else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // root did not change, just normal patch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newBranch);\n }\n else {\n // root node toggled\n // invoke @pending event\n triggerEvent(n2, 'onPending');\n // mount pending branch in off-dom container\n suspense.pendingBranch = newBranch;\n suspense.pendingId++;\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n // incoming branch has no async deps, resolve now.\n suspense.resolve();\n }\n else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n }\n else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\n hasWarned = true;\n // @ts-ignore `console.info` cannot be null error\n console[console.info ? 'info' : 'log'](`<Suspense> is an experimental feature and its API will likely change.`);\n }\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\n const timeout = toNumber(vnode.props && vnode.props.timeout);\n const suspense = {\n vnode,\n parent,\n parentComponent,\n isSVG,\n container,\n hiddenContainer,\n anchor,\n deps: 0,\n pendingId: 0,\n timeout: typeof timeout === 'number' ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: true,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false) {\n if ((process.env.NODE_ENV !== 'production')) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(`suspense.resolve() is called without a pending branch.`);\n }\n if (suspense.isUnmounted) {\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\n }\n }\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n }\n else if (!resume) {\n const delayEnter = activeBranch &&\n pendingBranch.transition &&\n pendingBranch.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n };\n }\n // this is initial anchor on mount\n let { anchor } = suspense;\n // unmount current active tree\n if (activeBranch) {\n // if the fallback tree was mounted, it may have been moved\n // as part of a parent suspense. get the latest anchor for insertion\n anchor = next(activeBranch);\n unmount(activeBranch, parentComponent, suspense, true);\n }\n if (!delayEnter) {\n // move content from off-dom container to actual container\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n // flush buffered effects\n // check if there is a pending parent suspense\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n // found a pending parent suspense, merge buffered post jobs\n // into that parent\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n // no pending parent suspense, flush all jobs\n if (!hasUnresolvedAncestor) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n // invoke @resolve event\n triggerEvent(vnode, 'onResolve');\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\n // invoke @fallback event\n triggerEvent(vnode, 'onFallback');\n const anchor = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n // mount the fallback tree\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n // unmount current active branch\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\n true // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container, anchor, type) {\n suspense.activeBranch &&\n move(suspense.activeBranch, container, anchor, type);\n suspense.container = container;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance\n .asyncDep.catch(err => {\n handleError(err, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n })\n .then(asyncSetupResult => {\n // retry when the setup() promise resolves.\n // component may have been unmounted before resolve.\n if (instance.isUnmounted ||\n suspense.isUnmounted ||\n suspense.pendingId !== instance.suspenseId) {\n return;\n }\n // retry from this component\n instance.asyncResolved = true;\n const { vnode } = instance;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(vnode);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n // vnode may have been replaced if an update happened before the\n // async dep is resolved.\n vnode.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(instance, vnode, \n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el), \n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode.el);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n // only decrease deps count if suspense is not already resolved\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\n }\n if (suspense.pendingBranch) {\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n /* eslint-disable no-restricted-globals */\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\n // there are two possible scenarios for server-rendered suspense:\n // - success: ssr content should be fully resolved\n // - failure: ssr content should be the fallback branch.\n // however, on the client we don't really know if it has failed or not\n // attempt to hydrate the DOM assuming it has succeeded, but we still\n // need to construct a suspense boundary first\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\n if (suspense.deps === 0) {\n suspense.resolve();\n }\n return result;\n /* eslint-enable no-restricted-globals */\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */;\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\n vnode.ssFallback = isSlotChildren\n ? normalizeSuspenseSlot(children.fallback)\n : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n // disableTracking: false\n // allow block tracking for compiled slots\n // (see ./componentRenderContext.ts)\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\n warn(`<Suspense> slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter(c => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n }\n else {\n suspense.effects.push(fn);\n }\n }\n else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n const el = (vnode.el = branch.el);\n // in case suspense is the root node of a component,\n // recursively update the HOC el\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`provide() can only be used inside setup().`);\n }\n }\n else {\n let provides = currentInstance.provides;\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n // TS doesn't allow symbol as index type\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n const instance = currentInstance || currentRenderingInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n const provides = instance.parent == null\n ? instance.vnode.appContext && instance.vnode.appContext.provides\n : instance.parent.provides;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance.proxy)\n : defaultValue;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`injection \"${String(key)}\" not found.`);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`inject() can only be used inside setup() or functional components.`);\n }\n}\n\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nconst INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(cb)) {\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` +\n `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` +\n `supports \\`watch(source, cb, options?) signature.`);\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {\n if ((process.env.NODE_ENV !== 'production') && !cb) {\n if (immediate !== undefined) {\n warn(`watch() \"immediate\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n if (deep !== undefined) {\n warn(`watch() \"deep\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n }\n const warnInvalidSource = (s) => {\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +\n `a reactive object, or an array of these types.`);\n };\n const instance = currentInstance;\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow$1(source);\n }\n else if (isReactive(source)) {\n getter = () => source;\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(s => isReactive(s) || isShallow$1(s));\n getter = () => source.map(s => {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n return traverse(s);\n }\n else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(s);\n }\n });\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = () => callWithErrorHandling(source, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n // no cb -> simple effect\n getter = () => {\n if (instance && instance.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(source, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [onCleanup]);\n };\n }\n }\n else {\n getter = NOOP;\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4 /* ErrorCodes.WATCH_CLEANUP */);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager or sync flush\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = NOOP;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n if (flush === 'sync') {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n }\n else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource\n ? new Array(source.length).fill(INITIAL_WATCHER_VALUE)\n : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n const newValue = effect.run();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some((v, i) => hasChanged(v, oldValue[i]))\n : hasChanged(newValue, oldValue)) ||\n (false )) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE\n ? undefined\n : (isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE)\n ? []\n : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n effect.run();\n }\n };\n // important: mark the job as a watcher callback so that scheduler knows\n // it is allowed to self-trigger (#1727)\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === 'sync') {\n scheduler = job; // the scheduler function gets called directly\n }\n else if (flush === 'post') {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n }\n else {\n // default: 'pre'\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, scheduler);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n job();\n }\n else {\n oldValue = effect.run();\n }\n }\n else if (flush === 'post') {\n queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);\n }\n else {\n effect.run();\n }\n const unwatch = () => {\n effect.stop();\n if (instance && instance.scope) {\n remove(instance.scope.effects, effect);\n }\n };\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\n// this.$watch\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source)\n ? source.includes('.')\n ? createPathGetter(publicThis, source)\n : () => publicThis[source]\n : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n }\n else {\n cb = value.handler;\n options = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n if (cur) {\n setCurrentInstance(cur);\n }\n else {\n unsetCurrentInstance();\n }\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split('.');\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, seen) {\n if (!isObject(value) || value[\"__v_skip\" /* ReactiveFlags.SKIP */]) {\n return value;\n }\n seen = seen || new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, seen);\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], seen);\n }\n }\n else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, seen);\n });\n }\n else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], seen);\n }\n }\n return value;\n}\n\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevTransitionKey;\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n // locate first non-comment child\n for (const c of children) {\n if (c.type !== Comment) {\n if ((process.env.NODE_ENV !== 'production') && hasFound) {\n // warn more than one non-comment child\n warn('<transition> can only be used on a single element or component. ' +\n 'Use <transition-group> for lists.');\n break;\n }\n child = c;\n hasFound = true;\n if (!(process.env.NODE_ENV !== 'production'))\n break;\n }\n }\n }\n // there's no need to track reactivity for these props so use the raw\n // props for a bit better perf\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n // check mode\n if ((process.env.NODE_ENV !== 'production') &&\n mode &&\n mode !== 'in-out' &&\n mode !== 'out-in' &&\n mode !== 'default') {\n warn(`invalid <transition> mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n // in the case of <transition><keep-alive/></transition>, we need to\n // compare the type of the kept-alive children.\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const { getTransitionKey } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === undefined) {\n prevTransitionKey = key;\n }\n else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n // handle mode\n if (oldInnerChild &&\n oldInnerChild.type !== Comment &&\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\n // update old tree's hooks in case of dynamic transition\n setTransitionHooks(oldInnerChild, leavingHooks);\n // switching between different views\n if (mode === 'out-in') {\n state.isLeaving = true;\n // return placeholder node and queue update when leave finishes\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n // #6835\n // it also needs to be updated when active is undefined\n if (instance.update.active !== false) {\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n }\n else if (mode === 'in-out' && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n // early removal callback\n el._leaveCb = () => {\n earlyRemove();\n el._leaveCb = undefined;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\n// The transition hooks are attached to the vnode as vnode.transition\n// and will be called at appropriate timing in the renderer.\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook &&\n callWithAsyncErrorHandling(hook, instance, 9 /* ErrorCodes.TRANSITION_HOOK */, args);\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every(hook => hook.length <= 1))\n done();\n }\n else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n }\n else {\n return;\n }\n }\n // for same element (v-show)\n if (el._leaveCb) {\n el._leaveCb(true /* cancelled */);\n }\n // for toggled element with same key (v-if)\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode &&\n isSameVNodeType(vnode, leavingVNode) &&\n leavingVNode.el._leaveCb) {\n // force early removal (not cancelled)\n leavingVNode.el._leaveCb();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n }\n else {\n return;\n }\n }\n let called = false;\n const done = (el._enterCb = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n }\n else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el._enterCb = undefined;\n });\n if (hook) {\n callAsyncHook(hook, [el, done]);\n }\n else {\n done();\n }\n },\n leave(el, remove) {\n const key = String(vnode.key);\n if (el._enterCb) {\n el._enterCb(true /* cancelled */);\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = (el._leaveCb = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n }\n else {\n callHook(onAfterLeave, [el]);\n }\n el._leaveCb = undefined;\n if (leavingVNodesCache[key] === vnode) {\n delete leavingVNodesCache[key];\n }\n });\n leavingVNodesCache[key] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n }\n else {\n done();\n }\n },\n clone(vnode) {\n return resolveTransitionHooks(vnode, props, state, instance);\n }\n };\n return hooks;\n}\n// the placeholder really only handles one special case: KeepAlive\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\n// placeholder with empty content to avoid the KeepAlive instance from being\n// unmounted.\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode)\n ? vnode.children\n ? vnode.children[0]\n : undefined\n : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */ && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n }\n else if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n }\n else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n // #5360 inherit parent key in case of <template v-for>\n const key = parentKey == null\n ? child.key\n : String(parentKey) + String(child.key != null ? child.key : i);\n // handle fragment children case, e.g. v-for\n if (child.type === Fragment) {\n if (child.patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */)\n keyedFragmentCount++;\n ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));\n }\n // comment placeholders should be skipped, e.g. v-if\n else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n // #1126 if a transition children list contains multiple sub fragments, these\n // fragments will be merged into a flat children array. Since each v-for\n // fragment may contain different static bindings inside, we need to de-op\n // these children to force full diffs to ensure correct behavior.\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2 /* PatchFlags.BAIL */;\n }\n }\n return ret;\n}\n\n// implementation, close to no-op\nfunction defineComponent(options) {\n return isFunction(options) ? { setup: options, name: options.name } : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out\n suspensible = true, onError: userOnError } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return (pendingRequest ||\n (thisRequest = pendingRequest =\n loader()\n .catch(err => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n }\n else {\n throw err;\n }\n })\n .then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if ((process.env.NODE_ENV !== 'production') && !comp) {\n warn(`Async component loader resolved to undefined. ` +\n `If you are using retry(), make sure to return its return value.`);\n }\n // interop module default\n if (comp &&\n (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\n comp = comp.default;\n }\n if ((process.env.NODE_ENV !== 'production') && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n })));\n };\n return defineComponent({\n name: 'AsyncComponentWrapper',\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n // already resolved\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(err, instance, 13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);\n };\n // suspense-controlled or SSR.\n if ((suspensible && instance.suspense) ||\n (isInSSRComponentSetup)) {\n return load()\n .then(comp => {\n return () => createInnerComp(comp, instance);\n })\n .catch(err => {\n onError(err);\n return () => errorComponent\n ? createVNode(errorComponent, {\n error: err\n })\n : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(`Async component timed out after ${timeout}ms.`);\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load()\n .then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n // parent is keep-alive, force update so the loaded component's\n // name is taken into account\n queueJob(instance.parent.update);\n }\n })\n .catch(err => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n }\n else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n }\n else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n // ensure inner component inherits the async wrapper's ref owner\n vnode.ref = ref;\n // pass the custom element callback on to the inner comp\n // and remove it from the async wrapper\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n // KeepAlive communicates with the instantiated renderer via the\n // ctx where the renderer passes in its internals,\n // and the KeepAlive instance exposes activate/deactivate implementations.\n // The whole point of this is to avoid importing KeepAlive directly in the\n // renderer to facilitate tree-shaking.\n const sharedContext = instance.ctx;\n // if the internal renderer is not registered, it indicates that this is server-side rendering,\n // for KeepAlive, we just need to render its children\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = new Map();\n const keys = new Set();\n let current = null;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;\n const storageContainer = createElement('div');\n sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\n const instance = vnode.component;\n move(vnode, container, anchor, 0 /* MoveType.ENTER */, parentSuspense);\n // in case props have changed\n patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);\n queuePostRenderEffect(() => {\n instance.isDeactivated = false;\n if (instance.a) {\n invokeArrayFns(instance.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance = vnode.component;\n move(vnode, storageContainer, null, 1 /* MoveType.LEAVE */, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance.da) {\n invokeArrayFns(instance.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n instance.isDeactivated = true;\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n function unmount(vnode) {\n // reset the shapeFlag so it can be properly unmounted\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || cached.type !== current.type) {\n unmount(cached);\n }\n else if (current) {\n // current active instance should no longer be kept-alive.\n // we can't unmount it now but it might be later, so reset its flag now.\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n // prune cache on include/exclude prop change\n watch(() => [props.include, props.exclude], ([include, exclude]) => {\n include && pruneCache(name => matches(include, name));\n exclude && pruneCache(name => !matches(exclude, name));\n }, \n // prune post-render after `current` has been updated\n { flush: 'post', deep: true });\n // cache sub tree after render\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n // fix #1621, the pendingCacheKey could be 0\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach(cached => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type) {\n // current instance will be unmounted as part of keep-alive's unmount\n resetShapeFlag(vnode);\n // but invoke its deactivated hook here\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n }\n else if (!isVNode(rawVNode) ||\n (!(rawVNode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) &&\n !(rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */))) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n // for async components, name check should be based in its loaded\n // inner component if available\n const name = getComponentName(isAsyncWrapper(vnode)\n ? vnode.type.__asyncResolved || {}\n : comp);\n const { include, exclude, max } = props;\n if ((include && (!name || !matches(include, name))) ||\n (exclude && name && matches(exclude, name))) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n // clone vnode if it's reused because we are going to mutate it\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n rawVNode.ssContent = vnode;\n }\n }\n // #1513 it's possible for the returned vnode to be cloned due to attr\n // fallthrough or scopeId, so the vnode here may not be the final vnode\n // that is mounted. Instead of caching it directly, we store the pending\n // key and cache `instance.subTree` (the normalized vnode) in\n // beforeMount/beforeUpdate hooks.\n pendingCacheKey = key;\n if (cachedVNode) {\n // copy over mounted state\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n // recursively update transition hooks on subTree\n setTransitionHooks(vnode, vnode.transition);\n }\n // avoid vnode being mounted as fresh\n vnode.shapeFlag |= 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n // make this key the freshest\n keys.delete(key);\n keys.add(key);\n }\n else {\n keys.add(key);\n // prune oldest entry\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n // avoid vnode being unmounted\n vnode.shapeFlag |= 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n }\n else if (isString(pattern)) {\n return pattern.split(',').includes(name);\n }\n else if (pattern.test) {\n return pattern.test(name);\n }\n /* istanbul ignore next */\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\" /* LifecycleHooks.ACTIVATED */, target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\" /* LifecycleHooks.DEACTIVATED */, target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n // cache the deactivate branch check wrapper for injected hooks so the same\n // hook can be properly deduped by the scheduler. \"__wdc\" stands for \"with\n // deactivation check\".\n const wrappedHook = hook.__wdc ||\n (hook.__wdc = () => {\n // only fire the hook if the target instance is NOT in a deactivated branch.\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n // In addition to registering it on the target instance, we walk up the parent\n // chain and register it on all ancestor instances that are keep-alive roots.\n // This avoids the need to walk the entire component tree when invoking these\n // hooks, and more importantly, avoids the need to track child components in\n // arrays.\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n // injectHook wraps the original for error handling, so make sure to remove\n // the wrapped version.\n const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n // bitwise operations to remove keep alive flags\n vnode.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n vnode.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */ ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n // cache the error handling wrapper for injected hooks so the same hook\n // can be properly deduped by the scheduler. \"__weh\" stands for \"with error\n // handling\".\n const wrappedHook = hook.__weh ||\n (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n // Set currentInstance during hook invocation.\n // This assumes the hook does not synchronously trigger other hooks, which\n // can only be false when the user does something really funky.\n setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n unsetCurrentInstance();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n }\n else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ''));\n warn(`${apiName} is called when there is no active component instance to be ` +\n `associated with. ` +\n `Lifecycle injection APIs can only be used during execution of setup().` +\n (` If you are using async setup(), make sure to register lifecycle ` +\n `hooks before the first await statement.`\n ));\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => \n// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n(!isInSSRComponentSetup || lifecycle === \"sp\" /* LifecycleHooks.SERVER_PREFETCH */) &&\n injectHook(lifecycle, (...args) => hook(...args), target);\nconst onBeforeMount = createHook(\"bm\" /* LifecycleHooks.BEFORE_MOUNT */);\nconst onMounted = createHook(\"m\" /* LifecycleHooks.MOUNTED */);\nconst onBeforeUpdate = createHook(\"bu\" /* LifecycleHooks.BEFORE_UPDATE */);\nconst onUpdated = createHook(\"u\" /* LifecycleHooks.UPDATED */);\nconst onBeforeUnmount = createHook(\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */);\nconst onUnmounted = createHook(\"um\" /* LifecycleHooks.UNMOUNTED */);\nconst onServerPrefetch = createHook(\"sp\" /* LifecycleHooks.SERVER_PREFETCH */);\nconst onRenderTriggered = createHook(\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */);\nconst onRenderTracked = createHook(\"rtc\" /* LifecycleHooks.RENDER_TRACKED */);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\" /* LifecycleHooks.ERROR_CAPTURED */, hook, target);\n}\n\n/**\nRuntime helper for applying directives to a vnode. Example usage:\n\nconst comp = resolveComponent('comp')\nconst foo = resolveDirective('foo')\nconst bar = resolveDirective('bar')\n\nreturn withDirectives(h(comp), [\n [foo, this.x],\n [bar, this.y]\n])\n*/\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn('Do not use built-in directive ids as custom directive id: ' + name);\n }\n}\n/**\n * Adds directives to a VNode.\n */\nfunction withDirectives(vnode, directives) {\n const internalInstance = currentRenderingInstance;\n if (internalInstance === null) {\n (process.env.NODE_ENV !== 'production') && warn(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(internalInstance) ||\n internalInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8 /* ErrorCodes.DIRECTIVE_HOOK */, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst COMPONENTS = 'components';\nconst DIRECTIVES = 'directives';\n/**\n * @private\n */\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol();\n/**\n * @private\n */\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n }\n else {\n // invalid types will fallthrough to createVNode and raise warning\n return (component || NULL_DYNAMIC_COMPONENT);\n }\n}\n/**\n * @private\n */\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\n// implementation\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n // explicit self name has highest priority\n if (type === COMPONENTS) {\n const selfName = getComponentName(Component, false /* do not include inferred name to avoid breaking existing code */);\n if (selfName &&\n (selfName === name ||\n selfName === camelize(name) ||\n selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = \n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) ||\n // global registration\n resolve(instance.appContext[type], name);\n if (!res && maybeSelfReference) {\n // fallback to implicit self-reference\n return Component;\n }\n if ((process.env.NODE_ENV !== 'production') && warnMissing && !res) {\n const extra = type === COMPONENTS\n ? `\\nIf this is a native custom element, make sure to exclude it from ` +\n `component resolution via compilerOptions.isCustomElement.`\n : ``;\n warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`resolve${capitalize(type.slice(0, -1))} ` +\n `can only be used in render() or setup().`);\n }\n}\nfunction resolve(registry, name) {\n return (registry &&\n (registry[name] ||\n registry[camelize(name)] ||\n registry[capitalize(camelize(name))]));\n}\n\n/**\n * Actual implementation\n */\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = (cache && cache[index]);\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, undefined, cached && cached[i]);\n }\n }\n else if (typeof source === 'number') {\n if ((process.env.NODE_ENV !== 'production') && !Number.isInteger(source)) {\n warn(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]);\n }\n }\n else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(source, (item, i) => renderItem(item, i, undefined, cached && cached[i]));\n }\n else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n }\n else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\n/**\n * Compiler runtime helper for creating dynamic slots object\n * @private\n */\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n // array of dynamic slot generated by <template v-for=\"...\" #[...]>\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n }\n else if (slot) {\n // conditional single slot generated by <template v-if=\"...\" #foo>\n slots[slot.name] = slot.key\n ? (...args) => {\n const res = slot.fn(...args);\n // attach branch key so each conditional branch is considered a\n // different fragment\n if (res)\n res.key = slot.key;\n return res;\n }\n : slot.fn;\n }\n }\n return slots;\n}\n\n/**\n * Compiler runtime helper for rendering `<slot/>`\n * @private\n */\nfunction renderSlot(slots, name, props = {}, \n// this is not a user-facing function, so the fallback is always generated by\n// the compiler and guaranteed to be a function returning an array\nfallback, noSlotted) {\n if (currentRenderingInstance.isCE ||\n (currentRenderingInstance.parent &&\n isAsyncWrapper(currentRenderingInstance.parent) &&\n currentRenderingInstance.parent.isCE)) {\n if (name !== 'default')\n props.name = name;\n return createVNode('slot', props, fallback && fallback());\n }\n let slot = slots[name];\n if ((process.env.NODE_ENV !== 'production') && slot && slot.length > 1) {\n warn(`SSR-optimized slot function detected in a non-SSR-optimized render ` +\n `function. You need to mark this component with $dynamic-slots in the ` +\n `parent template.`);\n slot = () => [];\n }\n // a compiled slot disables block tracking by default to avoid manual\n // invocation interfering with template-based block tracking, but in\n // `renderSlot` we can be sure that it's template-based so we can force\n // enable it.\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(Fragment, {\n key: props.key ||\n // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n (validSlotContent && validSlotContent.key) ||\n `_${name}`\n }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* SlotFlags.STABLE */\n ? 64 /* PatchFlags.STABLE_FRAGMENT */\n : -2 /* PatchFlags.BAIL */);\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + '-s'];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some(child => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment &&\n !ensureValidVNode(child.children))\n return false;\n return true;\n })\n ? vnodes\n : null;\n}\n\n/**\n * For prefixing keys in v-on=\"obj\" with \"on\"\n * @private\n */\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if ((process.env.NODE_ENV !== 'production') && !isObject(obj)) {\n warn(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key)\n ? `on:${key}`\n : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\n/**\n * #2437 In Vue 3, functional components do not have a public instance proxy but\n * they exist in the internal parent chain. For code that relies on traversing\n * public $parent chains, skip functional ones and go to the parent instead.\n */\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = \n// Move PURE marker to new line to workaround compiler discarding it\n// due to type annotation\n/*#__PURE__*/ extend(Object.create(null), {\n $: i => i,\n $el: i => i.vnode.el,\n $data: i => i.data,\n $props: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.props) : i.props),\n $attrs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.attrs) : i.attrs),\n $slots: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.slots) : i.slots),\n $refs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.refs) : i.refs),\n $parent: i => getPublicInstance(i.parent),\n $root: i => getPublicInstance(i.root),\n $emit: i => i.emit,\n $options: i => (__VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type),\n $forceUpdate: i => i.f || (i.f = () => queueJob(i.update)),\n $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: i => (__VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP)\n});\nconst isReservedPrefix = (key) => key === '_' || key === '$';\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n // for internal formatters to know that this is a Vue instance\n if ((process.env.NODE_ENV !== 'production') && key === '__isVue') {\n return true;\n }\n // data / props / ctx\n // This getter gets called for every property access on the render context\n // during render and is a major hotspot. The most expensive part of this\n // is the multiple hasOwn() calls. It's much faster to do a simple property\n // access on a plain object, so we use an accessCache object (with null\n // prototype) to memoize what access type a key corresponds to.\n let normalizedProps;\n if (key[0] !== '$') {\n const n = accessCache[key];\n if (n !== undefined) {\n switch (n) {\n case 1 /* AccessTypes.SETUP */:\n return setupState[key];\n case 2 /* AccessTypes.DATA */:\n return data[key];\n case 4 /* AccessTypes.CONTEXT */:\n return ctx[key];\n case 3 /* AccessTypes.PROPS */:\n return props[key];\n // default: just fallthrough\n }\n }\n else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* AccessTypes.SETUP */;\n return setupState[key];\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* AccessTypes.DATA */;\n return data[key];\n }\n else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) &&\n hasOwn(normalizedProps, key)) {\n accessCache[key] = 3 /* AccessTypes.PROPS */;\n return props[key];\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* AccessTypes.OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n // public $xxx properties\n if (publicGetter) {\n if (key === '$attrs') {\n track(instance, \"get\" /* TrackOpTypes.GET */, key);\n (process.env.NODE_ENV !== 'production') && markAttrsAccessed();\n }\n return publicGetter(instance);\n }\n else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) &&\n (cssModule = cssModule[key])) {\n return cssModule;\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n // user may set custom properties to `this` that start with `$`\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (\n // global properties\n ((globalProperties = appContext.config.globalProperties),\n hasOwn(globalProperties, key))) {\n {\n return globalProperties[key];\n }\n }\n else if ((process.env.NODE_ENV !== 'production') &&\n currentRenderingInstance &&\n (!isString(key) ||\n // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf('__v') !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved ` +\n `character (\"$\" or \"_\") and is not proxied on the render context.`);\n }\n else if (instance === currentRenderingInstance) {\n warn(`Property ${JSON.stringify(key)} was accessed during render ` +\n `but is not defined on instance.`);\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n }\n else if ((process.env.NODE_ENV !== 'production') &&\n setupState.__isScriptSetup &&\n hasOwn(setupState, key)) {\n warn(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n return false;\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n data[key] = value;\n return true;\n }\n else if (hasOwn(instance.props, key)) {\n (process.env.NODE_ENV !== 'production') && warn(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n return false;\n }\n if (key[0] === '$' && key.slice(1) in instance) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to mutate public property \"${key}\". ` +\n `Properties starting with $ are reserved and readonly.`);\n return false;\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && key in instance.appContext.config.globalProperties) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n value\n });\n }\n else {\n ctx[key] = value;\n }\n }\n return true;\n },\n has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {\n let normalizedProps;\n return (!!accessCache[key] ||\n (data !== EMPTY_OBJ && hasOwn(data, key)) ||\n hasSetupBinding(setupState, key) ||\n ((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||\n hasOwn(ctx, key) ||\n hasOwn(publicPropertiesMap, key) ||\n hasOwn(appContext.config.globalProperties, key));\n },\n defineProperty(target, key, descriptor) {\n if (descriptor.get != null) {\n // invalidate key cache of a getter based property #5417\n target._.accessCache[key] = 0;\n }\n else if (hasOwn(descriptor, 'value')) {\n this.set(target, key, descriptor.value, null);\n }\n return Reflect.defineProperty(target, key, descriptor);\n }\n};\nif ((process.env.NODE_ENV !== 'production') && !false) {\n PublicInstanceProxyHandlers.ownKeys = (target) => {\n warn(`Avoid app logic that relies on enumerating keys on a component instance. ` +\n `The keys will be empty in production mode to avoid performance overhead.`);\n return Reflect.ownKeys(target);\n };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /*#__PURE__*/ extend({}, PublicInstanceProxyHandlers, {\n get(target, key) {\n // fast path for unscopables when using `with` block\n if (key === Symbol.unscopables) {\n return;\n }\n return PublicInstanceProxyHandlers.get(target, key, target);\n },\n has(_, key) {\n const has = key[0] !== '_' && !isGloballyWhitelisted(key);\n if ((process.env.NODE_ENV !== 'production') && !has && PublicInstanceProxyHandlers.has(_, key)) {\n warn(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`);\n }\n return has;\n }\n});\n// dev only\n// In dev mode, the proxy target exposes the same properties as seen on `this`\n// for easier console inspection. In prod mode it will be an empty object so\n// these properties definitions can be skipped.\nfunction createDevRenderContext(instance) {\n const target = {};\n // expose internal instance for proxy handlers\n Object.defineProperty(target, `_`, {\n configurable: true,\n enumerable: false,\n get: () => instance\n });\n // expose public properties\n Object.keys(publicPropertiesMap).forEach(key => {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get: () => publicPropertiesMap[key](instance),\n // intercepted by the proxy so no need for implementation,\n // but needed to prevent set errors\n set: NOOP\n });\n });\n return target;\n}\n// dev only\nfunction exposePropsOnRenderContext(instance) {\n const { ctx, propsOptions: [propsOptions] } = instance;\n if (propsOptions) {\n Object.keys(propsOptions).forEach(key => {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => instance.props[key],\n set: NOOP\n });\n });\n }\n}\n// dev only\nfunction exposeSetupStateOnRenderContext(instance) {\n const { ctx, setupState } = instance;\n Object.keys(toRaw(setupState)).forEach(key => {\n if (!setupState.__isScriptSetup) {\n if (isReservedPrefix(key[0])) {\n warn(`setup() return property ${JSON.stringify(key)} should not start with \"$\" or \"_\" ` +\n `which are reserved prefixes for Vue internals.`);\n return;\n }\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => setupState[key],\n set: NOOP\n });\n }\n });\n}\n\nfunction createDuplicateChecker() {\n const cache = Object.create(null);\n return (type, key) => {\n if (cache[key]) {\n warn(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n }\n else {\n cache[key] = type;\n }\n };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n const options = resolveMergedOptions(instance);\n const publicThis = instance.proxy;\n const ctx = instance.ctx;\n // do not cache property access on public proxy during state initialization\n shouldCacheAccess = false;\n // call beforeCreate first before accessing other options since\n // the hook may mutate resolved options (#2791)\n if (options.beforeCreate) {\n callHook(options.beforeCreate, instance, \"bc\" /* LifecycleHooks.BEFORE_CREATE */);\n }\n const { \n // state\n data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, \n // lifecycle\n created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, \n // public API\n expose, inheritAttrs, \n // assets\n components, directives, filters } = options;\n const checkDuplicateProperties = (process.env.NODE_ENV !== 'production') ? createDuplicateChecker() : null;\n if ((process.env.NODE_ENV !== 'production')) {\n const [propsOptions] = instance.propsOptions;\n if (propsOptions) {\n for (const key in propsOptions) {\n checkDuplicateProperties(\"Props\" /* OptionTypes.PROPS */, key);\n }\n }\n }\n // options initialization order (to be consistent with Vue 2):\n // - props (already done outside of this function)\n // - inject\n // - methods\n // - data (deferred since it relies on `this` access)\n // - computed\n // - watch (deferred since it relies on `this` access)\n if (injectOptions) {\n resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);\n }\n if (methods) {\n for (const key in methods) {\n const methodHandler = methods[key];\n if (isFunction(methodHandler)) {\n // In dev mode, we use the `createRenderContext` function to define\n // methods to the proxy target, and those are read-only but\n // reconfigurable, so it needs to be redefined here\n if ((process.env.NODE_ENV !== 'production')) {\n Object.defineProperty(ctx, key, {\n value: methodHandler.bind(publicThis),\n configurable: true,\n enumerable: true,\n writable: true\n });\n }\n else {\n ctx[key] = methodHandler.bind(publicThis);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Methods\" /* OptionTypes.METHODS */, key);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. ` +\n `Did you reference the function correctly?`);\n }\n }\n }\n if (dataOptions) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(dataOptions)) {\n warn(`The data option must be a function. ` +\n `Plain object usage is no longer supported.`);\n }\n const data = dataOptions.call(publicThis, publicThis);\n if ((process.env.NODE_ENV !== 'production') && isPromise(data)) {\n warn(`data() returned a Promise - note data() cannot be async; If you ` +\n `intend to perform data fetching before component renders, use ` +\n `async setup() + <Suspense>.`);\n }\n if (!isObject(data)) {\n (process.env.NODE_ENV !== 'production') && warn(`data() should return an object.`);\n }\n else {\n instance.data = reactive(data);\n if ((process.env.NODE_ENV !== 'production')) {\n for (const key in data) {\n checkDuplicateProperties(\"Data\" /* OptionTypes.DATA */, key);\n // expose data on ctx during dev\n if (!isReservedPrefix(key[0])) {\n Object.defineProperty(ctx, key, {\n configurable: true,\n enumerable: true,\n get: () => data[key],\n set: NOOP\n });\n }\n }\n }\n }\n }\n // state initialization complete at this point - start caching access\n shouldCacheAccess = true;\n if (computedOptions) {\n for (const key in computedOptions) {\n const opt = computedOptions[key];\n const get = isFunction(opt)\n ? opt.bind(publicThis, publicThis)\n : isFunction(opt.get)\n ? opt.get.bind(publicThis, publicThis)\n : NOOP;\n if ((process.env.NODE_ENV !== 'production') && get === NOOP) {\n warn(`Computed property \"${key}\" has no getter.`);\n }\n const set = !isFunction(opt) && isFunction(opt.set)\n ? opt.set.bind(publicThis)\n : (process.env.NODE_ENV !== 'production')\n ? () => {\n warn(`Write operation failed: computed property \"${key}\" is readonly.`);\n }\n : NOOP;\n const c = computed({\n get,\n set\n });\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => c.value,\n set: v => (c.value = v)\n });\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Computed\" /* OptionTypes.COMPUTED */, key);\n }\n }\n }\n if (watchOptions) {\n for (const key in watchOptions) {\n createWatcher(watchOptions[key], ctx, publicThis, key);\n }\n }\n if (provideOptions) {\n const provides = isFunction(provideOptions)\n ? provideOptions.call(publicThis)\n : provideOptions;\n Reflect.ownKeys(provides).forEach(key => {\n provide(key, provides[key]);\n });\n }\n if (created) {\n callHook(created, instance, \"c\" /* LifecycleHooks.CREATED */);\n }\n function registerLifecycleHook(register, hook) {\n if (isArray(hook)) {\n hook.forEach(_hook => register(_hook.bind(publicThis)));\n }\n else if (hook) {\n register(hook.bind(publicThis));\n }\n }\n registerLifecycleHook(onBeforeMount, beforeMount);\n registerLifecycleHook(onMounted, mounted);\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n registerLifecycleHook(onUpdated, updated);\n registerLifecycleHook(onActivated, activated);\n registerLifecycleHook(onDeactivated, deactivated);\n registerLifecycleHook(onErrorCaptured, errorCaptured);\n registerLifecycleHook(onRenderTracked, renderTracked);\n registerLifecycleHook(onRenderTriggered, renderTriggered);\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n registerLifecycleHook(onUnmounted, unmounted);\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\n if (isArray(expose)) {\n if (expose.length) {\n const exposed = instance.exposed || (instance.exposed = {});\n expose.forEach(key => {\n Object.defineProperty(exposed, key, {\n get: () => publicThis[key],\n set: val => (publicThis[key] = val)\n });\n });\n }\n else if (!instance.exposed) {\n instance.exposed = {};\n }\n }\n // options that are handled when creating the instance but also need to be\n // applied from mixins\n if (render && instance.render === NOOP) {\n instance.render = render;\n }\n if (inheritAttrs != null) {\n instance.inheritAttrs = inheritAttrs;\n }\n // asset options.\n if (components)\n instance.components = components;\n if (directives)\n instance.directives = directives;\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {\n if (isArray(injectOptions)) {\n injectOptions = normalizeInject(injectOptions);\n }\n for (const key in injectOptions) {\n const opt = injectOptions[key];\n let injected;\n if (isObject(opt)) {\n if ('default' in opt) {\n injected = inject(opt.from || key, opt.default, true /* treat default function as factory */);\n }\n else {\n injected = inject(opt.from || key);\n }\n }\n else {\n injected = inject(opt);\n }\n if (isRef(injected)) {\n // TODO remove the check in 3.3\n if (unwrapRef) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => injected.value,\n set: v => (injected.value = v)\n });\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`injected property \"${key}\" is a ref and will be auto-unwrapped ` +\n `and no longer needs \\`.value\\` in the next minor release. ` +\n `To opt-in to the new behavior now, ` +\n `set \\`app.config.unwrapInjectedRef = true\\` (this config is ` +\n `temporary and will not be needed in the future.)`);\n }\n ctx[key] = injected;\n }\n }\n else {\n ctx[key] = injected;\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Inject\" /* OptionTypes.INJECT */, key);\n }\n }\n}\nfunction callHook(hook, instance, type) {\n callWithAsyncErrorHandling(isArray(hook)\n ? hook.map(h => h.bind(instance.proxy))\n : hook.bind(instance.proxy), instance, type);\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n const getter = key.includes('.')\n ? createPathGetter(publicThis, key)\n : () => publicThis[key];\n if (isString(raw)) {\n const handler = ctx[raw];\n if (isFunction(handler)) {\n watch(getter, handler);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw}\"`, handler);\n }\n }\n else if (isFunction(raw)) {\n watch(getter, raw.bind(publicThis));\n }\n else if (isObject(raw)) {\n if (isArray(raw)) {\n raw.forEach(r => createWatcher(r, ctx, publicThis, key));\n }\n else {\n const handler = isFunction(raw.handler)\n ? raw.handler.bind(publicThis)\n : ctx[raw.handler];\n if (isFunction(handler)) {\n watch(getter, handler, raw);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n }\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch option: \"${key}\"`, raw);\n }\n}\n/**\n * Resolve merged options and cache it on the component.\n * This is done only once per-component since the merging does not involve\n * instances.\n */\nfunction resolveMergedOptions(instance) {\n const base = instance.type;\n const { mixins, extends: extendsOptions } = base;\n const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext;\n const cached = cache.get(base);\n let resolved;\n if (cached) {\n resolved = cached;\n }\n else if (!globalMixins.length && !mixins && !extendsOptions) {\n {\n resolved = base;\n }\n }\n else {\n resolved = {};\n if (globalMixins.length) {\n globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));\n }\n mergeOptions(resolved, base, optionMergeStrategies);\n }\n if (isObject(base)) {\n cache.set(base, resolved);\n }\n return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n const { mixins, extends: extendsOptions } = from;\n if (extendsOptions) {\n mergeOptions(to, extendsOptions, strats, true);\n }\n if (mixins) {\n mixins.forEach((m) => mergeOptions(to, m, strats, true));\n }\n for (const key in from) {\n if (asMixin && key === 'expose') {\n (process.env.NODE_ENV !== 'production') &&\n warn(`\"expose\" option is ignored when declared in mixins or extends. ` +\n `It should only be declared in the base component itself.`);\n }\n else {\n const strat = internalOptionMergeStrats[key] || (strats && strats[key]);\n to[key] = strat ? strat(to[key], from[key]) : from[key];\n }\n }\n return to;\n}\nconst internalOptionMergeStrats = {\n data: mergeDataFn,\n props: mergeObjectOptions,\n emits: mergeObjectOptions,\n // objects\n methods: mergeObjectOptions,\n computed: mergeObjectOptions,\n // lifecycle\n beforeCreate: mergeAsArray,\n created: mergeAsArray,\n beforeMount: mergeAsArray,\n mounted: mergeAsArray,\n beforeUpdate: mergeAsArray,\n updated: mergeAsArray,\n beforeDestroy: mergeAsArray,\n beforeUnmount: mergeAsArray,\n destroyed: mergeAsArray,\n unmounted: mergeAsArray,\n activated: mergeAsArray,\n deactivated: mergeAsArray,\n errorCaptured: mergeAsArray,\n serverPrefetch: mergeAsArray,\n // assets\n components: mergeObjectOptions,\n directives: mergeObjectOptions,\n // watch\n watch: mergeWatchOptions,\n // provide / inject\n provide: mergeDataFn,\n inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n if (!from) {\n return to;\n }\n if (!to) {\n return from;\n }\n return function mergedDataFn() {\n return (extend)(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);\n };\n}\nfunction mergeInject(to, from) {\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n if (isArray(raw)) {\n const res = {};\n for (let i = 0; i < raw.length; i++) {\n res[raw[i]] = raw[i];\n }\n return res;\n }\n return raw;\n}\nfunction mergeAsArray(to, from) {\n return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n return to ? extend(extend(Object.create(null), to), from) : from;\n}\nfunction mergeWatchOptions(to, from) {\n if (!to)\n return from;\n if (!from)\n return to;\n const merged = extend(Object.create(null), to);\n for (const key in from) {\n merged[key] = mergeAsArray(to[key], from[key]);\n }\n return merged;\n}\n\nfunction initProps(instance, rawProps, isStateful, // result of bitwise flag comparison\nisSSR = false) {\n const props = {};\n const attrs = {};\n def(attrs, InternalObjectKey, 1);\n instance.propsDefaults = Object.create(null);\n setFullProps(instance, rawProps, props, attrs);\n // ensure all declared prop keys are present\n for (const key in instance.propsOptions[0]) {\n if (!(key in props)) {\n props[key] = undefined;\n }\n }\n // validation\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n if (isStateful) {\n // stateful\n instance.props = isSSR ? props : shallowReactive(props);\n }\n else {\n if (!instance.type.props) {\n // functional w/ optional props, props === attrs\n instance.props = attrs;\n }\n else {\n // functional w/ declared props\n instance.props = props;\n }\n }\n instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n while (instance) {\n if (instance.type.__hmrId)\n return true;\n instance = instance.parent;\n }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n const { props, attrs, vnode: { patchFlag } } = instance;\n const rawCurrentProps = toRaw(props);\n const [options] = instance.propsOptions;\n let hasAttrsChanged = false;\n if (\n // always force full diff in dev\n // - #1942 if hmr is enabled with sfc component\n // - vite#872 non-sfc component used by sfc component\n !((process.env.NODE_ENV !== 'production') && isInHmrContext(instance)) &&\n (optimized || patchFlag > 0) &&\n !(patchFlag & 16 /* PatchFlags.FULL_PROPS */)) {\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // Compiler-generated props & no keys change, just set the updated\n // the props.\n const propsToUpdate = instance.vnode.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n let key = propsToUpdate[i];\n // skip if the prop key is a declared emit event listener\n if (isEmitListener(instance.emitsOptions, key)) {\n continue;\n }\n // PROPS flag guarantees rawProps to be non-null\n const value = rawProps[key];\n if (options) {\n // attr / props separation was done on init and will be consistent\n // in this code path, so just check if attrs have it.\n if (hasOwn(attrs, key)) {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n else {\n const camelizedKey = camelize(key);\n props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */);\n }\n }\n else {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n }\n else {\n // full props update.\n if (setFullProps(instance, rawProps, props, attrs)) {\n hasAttrsChanged = true;\n }\n // in case of dynamic props, check if we need to delete keys from\n // the props object\n let kebabKey;\n for (const key in rawCurrentProps) {\n if (!rawProps ||\n // for camelCase\n (!hasOwn(rawProps, key) &&\n // it's possible the original props was passed in as kebab-case\n // and converted to camelCase (#955)\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) {\n if (options) {\n if (rawPrevProps &&\n // for camelCase\n (rawPrevProps[key] !== undefined ||\n // for kebab-case\n rawPrevProps[kebabKey] !== undefined)) {\n props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */);\n }\n }\n else {\n delete props[key];\n }\n }\n }\n // in the case of functional component w/o props declaration, props and\n // attrs point to the same object so it should already have been updated.\n if (attrs !== rawCurrentProps) {\n for (const key in attrs) {\n if (!rawProps ||\n (!hasOwn(rawProps, key) &&\n (!false ))) {\n delete attrs[key];\n hasAttrsChanged = true;\n }\n }\n }\n }\n // trigger updates for $attrs in case it's used in component slots\n if (hasAttrsChanged) {\n trigger(instance, \"set\" /* TriggerOpTypes.SET */, '$attrs');\n }\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n const [options, needCastKeys] = instance.propsOptions;\n let hasAttrsChanged = false;\n let rawCastValues;\n if (rawProps) {\n for (let key in rawProps) {\n // key, ref are reserved and never passed down\n if (isReservedProp(key)) {\n continue;\n }\n const value = rawProps[key];\n // prop option names are camelized during normalization, so to support\n // kebab -> camel conversion here we need to camelize the key.\n let camelKey;\n if (options && hasOwn(options, (camelKey = camelize(key)))) {\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n props[camelKey] = value;\n }\n else {\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n }\n }\n else if (!isEmitListener(instance.emitsOptions, key)) {\n if (!(key in attrs) || value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (needCastKeys) {\n const rawCurrentProps = toRaw(props);\n const castValues = rawCastValues || EMPTY_OBJ;\n for (let i = 0; i < needCastKeys.length; i++) {\n const key = needCastKeys[i];\n props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn(castValues, key));\n }\n }\n return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n const opt = options[key];\n if (opt != null) {\n const hasDefault = hasOwn(opt, 'default');\n // default values\n if (hasDefault && value === undefined) {\n const defaultValue = opt.default;\n if (opt.type !== Function && isFunction(defaultValue)) {\n const { propsDefaults } = instance;\n if (key in propsDefaults) {\n value = propsDefaults[key];\n }\n else {\n setCurrentInstance(instance);\n value = propsDefaults[key] = defaultValue.call(null, props);\n unsetCurrentInstance();\n }\n }\n else {\n value = defaultValue;\n }\n }\n // boolean casting\n if (opt[0 /* BooleanFlags.shouldCast */]) {\n if (isAbsent && !hasDefault) {\n value = false;\n }\n else if (opt[1 /* BooleanFlags.shouldCastTrue */] &&\n (value === '' || value === hyphenate(key))) {\n value = true;\n }\n }\n }\n return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.propsCache;\n const cached = cache.get(comp);\n if (cached) {\n return cached;\n }\n const raw = comp.props;\n const normalized = {};\n const needCastKeys = [];\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendProps = (raw) => {\n hasExtends = true;\n const [props, keys] = normalizePropsOptions(raw, appContext, true);\n extend(normalized, props);\n if (keys)\n needCastKeys.push(...keys);\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendProps);\n }\n if (comp.extends) {\n extendProps(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendProps);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, EMPTY_ARR);\n }\n return EMPTY_ARR;\n }\n if (isArray(raw)) {\n for (let i = 0; i < raw.length; i++) {\n if ((process.env.NODE_ENV !== 'production') && !isString(raw[i])) {\n warn(`props must be strings when using array syntax.`, raw[i]);\n }\n const normalizedKey = camelize(raw[i]);\n if (validatePropName(normalizedKey)) {\n normalized[normalizedKey] = EMPTY_OBJ;\n }\n }\n }\n else if (raw) {\n if ((process.env.NODE_ENV !== 'production') && !isObject(raw)) {\n warn(`invalid props options`, raw);\n }\n for (const key in raw) {\n const normalizedKey = camelize(key);\n if (validatePropName(normalizedKey)) {\n const opt = raw[key];\n const prop = (normalized[normalizedKey] =\n isArray(opt) || isFunction(opt) ? { type: opt } : Object.assign({}, opt));\n if (prop) {\n const booleanIndex = getTypeIndex(Boolean, prop.type);\n const stringIndex = getTypeIndex(String, prop.type);\n prop[0 /* BooleanFlags.shouldCast */] = booleanIndex > -1;\n prop[1 /* BooleanFlags.shouldCastTrue */] =\n stringIndex < 0 || booleanIndex < stringIndex;\n // if the prop needs boolean casting or default value\n if (booleanIndex > -1 || hasOwn(prop, 'default')) {\n needCastKeys.push(normalizedKey);\n }\n }\n }\n }\n }\n const res = [normalized, needCastKeys];\n if (isObject(comp)) {\n cache.set(comp, res);\n }\n return res;\n}\nfunction validatePropName(key) {\n if (key[0] !== '$') {\n return true;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid prop name: \"${key}\" is a reserved property.`);\n }\n return false;\n}\n// use function string name to check type constructors\n// so that it works across vms / iframes.\nfunction getType(ctor) {\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ctor === null ? 'null' : '';\n}\nfunction isSameType(a, b) {\n return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n if (isArray(expectedTypes)) {\n return expectedTypes.findIndex(t => isSameType(t, type));\n }\n else if (isFunction(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1;\n }\n return -1;\n}\n/**\n * dev only\n */\nfunction validateProps(rawProps, props, instance) {\n const resolvedValues = toRaw(props);\n const options = instance.propsOptions[0];\n for (const key in options) {\n let opt = options[key];\n if (opt == null)\n continue;\n validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)));\n }\n}\n/**\n * dev only\n */\nfunction validateProp(name, value, prop, isAbsent) {\n const { type, required, validator } = prop;\n // required!\n if (required && isAbsent) {\n warn('Missing required prop: \"' + name + '\"');\n return;\n }\n // missing but optional\n if (value == null && !prop.required) {\n return;\n }\n // type check\n if (type != null && type !== true) {\n let isValid = false;\n const types = isArray(type) ? type : [type];\n const expectedTypes = [];\n // value is valid as long as one of the specified types match\n for (let i = 0; i < types.length && !isValid; i++) {\n const { valid, expectedType } = assertType(value, types[i]);\n expectedTypes.push(expectedType || '');\n isValid = valid;\n }\n if (!isValid) {\n warn(getInvalidTypeMessage(name, value, expectedTypes));\n return;\n }\n }\n // custom validator\n if (validator && !validator(value)) {\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n }\n}\nconst isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol,BigInt');\n/**\n * dev only\n */\nfunction assertType(value, type) {\n let valid;\n const expectedType = getType(type);\n if (isSimpleType(expectedType)) {\n const t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n }\n else if (expectedType === 'Object') {\n valid = isObject(value);\n }\n else if (expectedType === 'Array') {\n valid = isArray(value);\n }\n else if (expectedType === 'null') {\n valid = value === null;\n }\n else {\n valid = value instanceof type;\n }\n return {\n valid,\n expectedType\n };\n}\n/**\n * dev only\n */\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n let message = `Invalid prop: type check failed for prop \"${name}\".` +\n ` Expected ${expectedTypes.map(capitalize).join(' | ')}`;\n const expectedType = expectedTypes[0];\n const receivedType = toRawType(value);\n const expectedValue = styleValue(value, expectedType);\n const receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += ` with value ${expectedValue}`;\n }\n message += `, got ${receivedType} `;\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += `with value ${receivedValue}.`;\n }\n return message;\n}\n/**\n * dev only\n */\nfunction styleValue(value, type) {\n if (type === 'String') {\n return `\"${value}\"`;\n }\n else if (type === 'Number') {\n return `${Number(value)}`;\n }\n else {\n return `${value}`;\n }\n}\n/**\n * dev only\n */\nfunction isExplicable(type) {\n const explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(elem => type.toLowerCase() === elem);\n}\n/**\n * dev only\n */\nfunction isBoolean(...args) {\n return args.some(elem => elem.toLowerCase() === 'boolean');\n}\n\nconst isInternalKey = (key) => key[0] === '_' || key === '$stable';\nconst normalizeSlotValue = (value) => isArray(value)\n ? value.map(normalizeVNode)\n : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n if (rawSlot._n) {\n // already normalized - #5353\n return rawSlot;\n }\n const normalized = withCtx((...args) => {\n if ((process.env.NODE_ENV !== 'production') && currentInstance) {\n warn(`Slot \"${key}\" invoked outside of the render function: ` +\n `this will not track dependencies used in the slot. ` +\n `Invoke the slot function inside the render function instead.`);\n }\n return normalizeSlotValue(rawSlot(...args));\n }, ctx);\n normalized._c = false;\n return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n const ctx = rawSlots._ctx;\n for (const key in rawSlots) {\n if (isInternalKey(key))\n continue;\n const value = rawSlots[key];\n if (isFunction(value)) {\n slots[key] = normalizeSlot(key, value, ctx);\n }\n else if (value != null) {\n if ((process.env.NODE_ENV !== 'production') &&\n !(false )) {\n warn(`Non-function value encountered for slot \"${key}\". ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(value);\n slots[key] = () => normalized;\n }\n }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n if ((process.env.NODE_ENV !== 'production') &&\n !isKeepAlive(instance.vnode) &&\n !(false )) {\n warn(`Non-function value encountered for default slot. ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(children);\n instance.slots.default = () => normalized;\n};\nconst initSlots = (instance, children) => {\n if (instance.vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // users can get the shallow readonly version of the slots object through `this.$slots`,\n // we should avoid the proxy object polluting the slots of the internal instance\n instance.slots = toRaw(children);\n // make compiler marker non-enumerable\n def(children, '_', type);\n }\n else {\n normalizeObjectSlots(children, (instance.slots = {}));\n }\n }\n else {\n instance.slots = {};\n if (children) {\n normalizeVNodeSlots(instance, children);\n }\n }\n def(instance.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance, children, optimized) => {\n const { vnode, slots } = instance;\n let needDeletionCheck = true;\n let deletionComparisonTarget = EMPTY_OBJ;\n if (vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // compiled slots.\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // Parent was HMR updated so slot content may have changed.\n // force update slots and mark instance for hmr as well\n extend(slots, children);\n }\n else if (optimized && type === 1 /* SlotFlags.STABLE */) {\n // compiled AND stable.\n // no need to update, and skip stale slots removal.\n needDeletionCheck = false;\n }\n else {\n // compiled but dynamic (v-if/v-for on slots) - update slots, but skip\n // normalization.\n extend(slots, children);\n // #2893\n // when rendering the optimized slots by manually written render function,\n // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,\n // i.e. let the `renderSlot` create the bailed Fragment\n if (!optimized && type === 1 /* SlotFlags.STABLE */) {\n delete slots._;\n }\n }\n }\n else {\n needDeletionCheck = !children.$stable;\n normalizeObjectSlots(children, slots);\n }\n deletionComparisonTarget = children;\n }\n else if (children) {\n // non slot object children (direct value) passed to a component\n normalizeVNodeSlots(instance, children);\n deletionComparisonTarget = { default: 1 };\n }\n // delete stale slots\n if (needDeletionCheck) {\n for (const key in slots) {\n if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\n delete slots[key];\n }\n }\n }\n};\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: undefined,\n warnHandler: undefined,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: Object.create(null),\n optionsCache: new WeakMap(),\n propsCache: new WeakMap(),\n emitsCache: new WeakMap()\n };\n}\nlet uid = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = Object.assign({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n (process.env.NODE_ENV !== 'production') && warn(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = new Set();\n let isMounted = false;\n const app = (context.app = {\n _uid: uid++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`app.config cannot be replaced. Modify individual options instead.`);\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n (process.env.NODE_ENV !== 'production') && warn(`Plugin has already been applied to target app.`);\n }\n else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n }\n else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`A plugin must either be a function or an object with an \"install\" ` +\n `function.`);\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixin has already been applied to target app' +\n (mixin.name ? `: ${mixin.name}` : ''));\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixins are only available in builds supporting Options API');\n }\n return app;\n },\n component(name, component) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.components[name]) {\n warn(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.directives[name]) {\n warn(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n mount(rootContainer, isHydrate, isSVG) {\n if (!isMounted) {\n // #5571\n if ((process.env.NODE_ENV !== 'production') && rootContainer.__vue_app__) {\n warn(`There is already an app instance mounted on the host container.\\n` +\n ` If you want to mount another app on the same host container,` +\n ` you need to unmount the previous app by calling \\`app.unmount()\\` first.`);\n }\n const vnode = createVNode(rootComponent, rootProps);\n // store app context on the root VNode.\n // this will be set on the root instance on initial mount.\n vnode.appContext = context;\n // HMR root reload\n if ((process.env.NODE_ENV !== 'production')) {\n context.reload = () => {\n render(cloneVNode(vnode), rootContainer, isSVG);\n };\n }\n if (isHydrate && hydrate) {\n hydrate(vnode, rootContainer);\n }\n else {\n render(vnode, rootContainer, isSVG);\n }\n isMounted = true;\n app._container = rootContainer;\n rootContainer.__vue_app__ = app;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = vnode.component;\n devtoolsInitApp(app, version);\n }\n return getExposeProxy(vnode.component) || vnode.component.proxy;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`App has already been mounted.\\n` +\n `If you want to remount the same app, move your app creation logic ` +\n `into a factory function and create fresh app instances for each ` +\n `mount - e.g. \\`const createMyApp = () => createApp(App)\\``);\n }\n },\n unmount() {\n if (isMounted) {\n render(null, app._container);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = null;\n devtoolsUnmountApp(app);\n }\n delete app._container.__vue_app__;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Cannot unmount an app that is not mounted.`);\n }\n },\n provide(key, value) {\n if ((process.env.NODE_ENV !== 'production') && key in context.provides) {\n warn(`App already provides property with key \"${String(key)}\". ` +\n `It will be overwritten with the new value.`);\n }\n context.provides[key] = value;\n return app;\n }\n });\n return app;\n };\n}\n\n/**\n * Function for handling a template ref\n */\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n // when mounting async components, nothing needs to be done,\n // because the template ref is forwarded to inner component\n return;\n }\n const refValue = vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */\n ? getExposeProxy(vnode.component) || vnode.component.proxy\n : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if ((process.env.NODE_ENV !== 'production') && !owner) {\n warn(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +\n `A vnode with ref must be created inside the render function.`);\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs;\n const setupState = owner.setupState;\n // dynamic ref changed. unset old ref\n if (oldRef != null && oldRef !== ref) {\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (hasOwn(setupState, oldRef)) {\n setupState[oldRef] = null;\n }\n }\n else if (isRef(oldRef)) {\n oldRef.value = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12 /* ErrorCodes.FUNCTION_REF */, [value, refs]);\n }\n else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString\n ? hasOwn(setupState, ref)\n ? setupState[ref]\n : refs[ref]\n : ref.value;\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n }\n else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (hasOwn(setupState, ref)) {\n setupState[ref] = refs[ref];\n }\n }\n else {\n ref.value = [refValue];\n if (rawRef.k)\n refs[rawRef.k] = ref.value;\n }\n }\n else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n }\n else if (_isString) {\n refs[ref] = value;\n if (hasOwn(setupState, ref)) {\n setupState[ref] = value;\n }\n }\n else if (_isRef) {\n ref.value = value;\n if (rawRef.k)\n refs[rawRef.k] = value;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n };\n if (value) {\n doSet.id = -1;\n queuePostRenderEffect(doSet, parentSuspense);\n }\n else {\n doSet();\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n }\n}\n\nlet hasMismatch = false;\nconst isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';\nconst isComment = (node) => node.nodeType === 8 /* DOMNodeTypes.COMMENT */;\n// Note: hydration is DOM-specific\n// But we have to place it in core due to tight coupling with core - splitting\n// it out creates a ton of unnecessary complexity.\n// Hydration also depends on some renderer internal logic which needs to be\n// passed in via arguments.\nfunction createHydrationFunctions(rendererInternals) {\n const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to hydrate existing markup but container is empty. ` +\n `Performing full mount instead.`);\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hasMismatch = false;\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n if (hasMismatch && !false) {\n // this error should show up in production\n console.error(`Hydration completed but contains mismatches.`);\n }\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n const isFragmentStart = isComment(node) && node.data === '[';\n const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3 /* DOMNodeTypes.TEXT */) {\n // #5728 empty text node inside a slot can cause hydration failure\n // because the server rendered HTML won't contain a text node\n if (vnode.children === '') {\n insert((vnode.el = createText('')), parentNode(node), node);\n nextNode = node;\n }\n else {\n nextNode = onMismatch();\n }\n }\n else {\n if (node.data !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text mismatch:` +\n `\\n- Client: ${JSON.stringify(node.data)}` +\n `\\n- Server: ${JSON.stringify(vnode.children)}`);\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (domType !== 8 /* DOMNodeTypes.COMMENT */ || isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n // entire template is static but SSRed as a fragment\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 /* DOMNodeTypes.ELEMENT */ || domType === 3 /* DOMNodeTypes.TEXT */) {\n // determine anchor, adopt content\n nextNode = node;\n // if the static vnode has its content stripped during build,\n // adopt it from the server-rendered HTML.\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children +=\n nextNode.nodeType === 1 /* DOMNodeTypes.ELEMENT */\n ? nextNode.outerHTML\n : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n }\n else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n if (domType !== 1 /* DOMNodeTypes.ELEMENT */ ||\n vnode.type.toLowerCase() !==\n node.tagName.toLowerCase()) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n // when setting up the render effect, if the initial vnode already\n // has .el set, the component will perform hydration instead of mount\n // on its sub-tree.\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);\n // component may be async, so in the case of fragments we cannot rely\n // on component's rendered output to determine the end of the fragment\n // instead, we do a lookahead to find the end anchor node.\n nextNode = isFragmentStart\n ? locateClosingAsyncAnchor(node)\n : nextSibling(node);\n // #4293 teleport as component root\n if (nextNode &&\n isComment(nextNode) &&\n nextNode.data === 'teleport end') {\n nextNode = nextSibling(nextNode);\n }\n // #3787\n // if component is async, it may get moved / unmounted before its\n // inner component is loaded, so we need to give it a placeholder\n // vnode that matches its adopted DOM.\n if (isAsyncWrapper(vnode)) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode\n ? nextNode.previousSibling\n : container.lastChild;\n }\n else {\n subTree =\n node.nodeType === 3 ? createTextVNode('') : createVNode('div');\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n if (domType !== 8 /* DOMNodeTypes.COMMENT */) {\n nextNode = onMismatch();\n }\n else {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);\n }\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid HostVNode type:', type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs } = vnode;\n // #4006 for form elements with non-string v-model value bindings\n // e.g. <option :value=\"obj\">, <input type=\"checkbox\" :true-value=\"1\">\n const forcePatchValue = (type === 'input' && dirs) || type === 'option';\n // skip props & children if this is hoisted static nodes\n // #5405 in dev, always hydrate children for HMR\n if ((process.env.NODE_ENV !== 'production') || forcePatchValue || patchFlag !== -1 /* PatchFlags.HOISTED */) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n if (forcePatchValue ||\n !optimized ||\n patchFlag & (16 /* PatchFlags.FULL_PROPS */ | 32 /* PatchFlags.HYDRATE_EVENTS */)) {\n for (const key in props) {\n if ((forcePatchValue && key.endsWith('value')) ||\n (isOn(key) && !isReservedProp(key))) {\n patchProp(el, key, null, props[key], false, undefined, parentComponent);\n }\n }\n }\n else if (props.onClick) {\n // Fast path for click listeners (which is most often) to avoid\n // iterating through props.\n patchProp(el, 'onClick', null, props.onClick, false, undefined, parentComponent);\n }\n }\n // vnode / directive hooks\n let vnodeHooks;\n if ((vnodeHooks = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n // children\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */ &&\n // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized);\n let hasWarned = false;\n while (next) {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${vnode.type}>: ` +\n `server rendered element contains more child nodes than client vdom.`);\n hasWarned = true;\n }\n // The SSRed DOM contains more nodes than it should. Remove them.\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n }\n else if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n if (el.textContent !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text content mismatch in <${vnode.type}>:\\n` +\n `- Client: ${el.textContent}\\n` +\n `- Server: ${vnode.children}`);\n el.textContent = vnode.children;\n }\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized\n ? children[i]\n : (children[i] = normalizeVNode(children[i]));\n if (node) {\n node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n else if (vnode.type === Text && !vnode.children) {\n continue;\n }\n else {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${container.tagName.toLowerCase()}>: ` +\n `server rendered element contains fewer child nodes than client vdom.`);\n hasWarned = true;\n }\n // the SSRed DOM didn't contain enough nodes. Mount the missing ones.\n patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);\n if (next && isComment(next) && next.data === ']') {\n return nextSibling((vnode.anchor = next));\n }\n else {\n // fragment didn't hydrate successfully, since we didn't get a end anchor\n // back. This should have led to node/children mismatch warnings.\n hasMismatch = true;\n // since the anchor is missing, we need to create one and insert it\n insert((vnode.anchor = createComment(`]`)), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration node mismatch:\\n- Client vnode:`, vnode.type, `\\n- Server rendered DOM:`, node, node.nodeType === 3 /* DOMNodeTypes.TEXT */\n ? `(text)`\n : isComment(node) && node.data === '['\n ? `(start of fragment)`\n : ``);\n vnode.el = null;\n if (isFragment) {\n // remove excessive fragment nodes\n const end = locateClosingAsyncAnchor(node);\n while (true) {\n const next = nextSibling(node);\n if (next && next !== end) {\n remove(next);\n }\n else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n return next;\n };\n const locateClosingAsyncAnchor = (node) => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === '[')\n match++;\n if (node.data === ']') {\n if (match === 0) {\n return nextSibling(node);\n }\n else {\n match--;\n }\n }\n }\n }\n return node;\n };\n return [hydrate, hydrateNode];\n}\n\n/* eslint-disable no-restricted-globals */\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n perf.mark(`vue-${type}-${instance.uid}`);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction endMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n const startTag = `vue-${type}-${instance.uid}`;\n const endTag = startTag + `:end`;\n perf.mark(endTag);\n perf.measure(`<${formatComponentName(instance, instance.type)}> ${type}`, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction isSupported() {\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\n\n/**\n * This is only called in esm-bundler builds.\n * It is called when a renderer is created, in `baseCreateRenderer` so that\n * importing runtime-core is side-effects free.\n *\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n const needWarn = [];\n if (typeof __VUE_OPTIONS_API__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_OPTIONS_API__`);\n getGlobalThis().__VUE_OPTIONS_API__ = true;\n }\n if (typeof __VUE_PROD_DEVTOOLS__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n }\n if ((process.env.NODE_ENV !== 'production') && needWarn.length) {\n const multi = needWarn.length > 1;\n console.warn(`Feature flag${multi ? `s` : ``} ${needWarn.join(', ')} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, ` +\n `which expects these compile-time feature flags to be globally injected ` +\n `via the bundler config in order to get better tree-shaking in the ` +\n `production bundle.\\n\\n` +\n `For more details, see https://link.vuejs.org/feature-flags.`);\n }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense\n ;\n/**\n * The createRenderer function accepts two generic arguments:\n * HostNode and HostElement, corresponding to Node and Element types in the\n * host environment. For example, for runtime-dom, HostNode would be the DOM\n * `Node` interface and HostElement would be the DOM `Element` interface.\n *\n * Custom renderers can pass in the platform specific types like this:\n *\n * ``` js\n * const { render, createApp } = createRenderer<Node, Element>({\n * patchProp,\n * ...nodeOps\n * })\n * ```\n */\nfunction createRenderer(options) {\n return baseCreateRenderer(options);\n}\n// Separate API for creating hydration-enabled renderer.\n// Hydration logic is only used when calling this function, making it\n// tree-shakable.\nfunction createHydrationRenderer(options) {\n return baseCreateRenderer(options, createHydrationFunctions);\n}\n// implementation\nfunction baseCreateRenderer(options, createHydrationFns) {\n // compile-time feature flags check\n {\n initFeatureFlags();\n }\n const target = getGlobalThis();\n target.__VUE__ = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n }\n const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, insertStaticContent: hostInsertStaticContent } = options;\n // Note: functions inside this closure should use `const xxx = () => {}`\n // style in order to prevent being inlined by minifiers.\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = (process.env.NODE_ENV !== 'production') && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n if (n1 === n2) {\n return;\n }\n // patching & not same type, unmount old tree\n if (n1 && !isSameVNodeType(n1, n2)) {\n anchor = getNextHostNode(n1);\n unmount(n1, parentComponent, parentSuspense, true);\n n1 = null;\n }\n if (n2.patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n n2.dynamicChildren = null;\n }\n const { type, ref, shapeFlag } = n2;\n switch (type) {\n case Text:\n processText(n1, n2, container, anchor);\n break;\n case Comment:\n processCommentNode(n1, n2, container, anchor);\n break;\n case Static:\n if (n1 == null) {\n mountStaticNode(n2, container, anchor, isSVG);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n patchStaticNode(n1, n2, container, isSVG);\n }\n break;\n case Fragment:\n processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid VNode type:', type, `(${typeof type})`);\n }\n }\n // set ref\n if (ref != null && parentComponent) {\n setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n }\n };\n const processText = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateText(n2.children)), container, anchor);\n }\n else {\n const el = (n2.el = n1.el);\n if (n2.children !== n1.children) {\n hostSetText(el, n2.children);\n }\n }\n };\n const processCommentNode = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateComment(n2.children || '')), container, anchor);\n }\n else {\n // there's no support for dynamic comments\n n2.el = n1.el;\n }\n };\n const mountStaticNode = (n2, container, anchor, isSVG) => {\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);\n };\n /**\n * Dev / HMR only\n */\n const patchStaticNode = (n1, n2, container, isSVG) => {\n // static nodes are only patched during dev for HMR\n if (n2.children !== n1.children) {\n const anchor = hostNextSibling(n1.anchor);\n // remove existing\n removeStaticNode(n1);\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG);\n }\n else {\n n2.el = n1.el;\n n2.anchor = n1.anchor;\n }\n };\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostInsert(el, container, nextSibling);\n el = next;\n }\n hostInsert(anchor, container, nextSibling);\n };\n const removeStaticNode = ({ el, anchor }) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostRemove(el);\n el = next;\n }\n hostRemove(anchor);\n };\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n isSVG = isSVG || n2.type === 'svg';\n if (n1 == null) {\n mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let el;\n let vnodeHook;\n const { type, props, shapeFlag, transition, dirs } = vnode;\n el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);\n // mount children first, since some props may rely on child content\n // being already rendered, e.g. `<select value>`\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(el, vnode.children);\n }\n else if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n for (const key in props) {\n if (key !== 'value' && !isReservedProp(key)) {\n hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n /**\n * Special case for setting value on DOM elements:\n * - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024)\n * - it needs to be forced (#1471)\n * #2353 proposes adding another renderer option to configure this, but\n * the properties affects are so finite it is worth special casing it\n * here to reduce the complexity. (Special casing it also should not\n * affect non-DOM renderers)\n */\n if ('value' in props) {\n hostPatchProp(el, 'value', null, props.value);\n }\n if ((vnodeHook = props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n }\n // scopeId\n setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n Object.defineProperty(el, '__vnode', {\n value: vnode,\n enumerable: false\n });\n Object.defineProperty(el, '__vueParentComponent', {\n value: parentComponent,\n enumerable: false\n });\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved\n // #1689 For inside suspense + suspense resolved case, just call it\n const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) &&\n transition &&\n !transition.persisted;\n if (needCallTransitionHooks) {\n transition.beforeEnter(el);\n }\n hostInsert(el, container, anchor);\n if ((vnodeHook = props && props.onVnodeMounted) ||\n needCallTransitionHooks ||\n dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n };\n const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n if (scopeId) {\n hostSetScopeId(el, scopeId);\n }\n if (slotScopeIds) {\n for (let i = 0; i < slotScopeIds.length; i++) {\n hostSetScopeId(el, slotScopeIds[i]);\n }\n }\n if (parentComponent) {\n let subTree = parentComponent.subTree;\n if ((process.env.NODE_ENV !== 'production') &&\n subTree.patchFlag > 0 &&\n subTree.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n subTree =\n filterSingleRoot(subTree.children) || subTree;\n }\n if (vnode === subTree) {\n const parentVNode = parentComponent.vnode;\n setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);\n }\n }\n };\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {\n for (let i = start; i < children.length; i++) {\n const child = (children[i] = optimized\n ? cloneIfMounted(children[i])\n : normalizeVNode(children[i]));\n patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const el = (n2.el = n1.el);\n let { patchFlag, dynamicChildren, dirs } = n2;\n // #1426 take the old vnode's patch flag into account since user may clone a\n // compiler-generated vnode, which de-opts to FULL_PROPS\n patchFlag |= n1.patchFlag & 16 /* PatchFlags.FULL_PROPS */;\n const oldProps = n1.props || EMPTY_OBJ;\n const newProps = n2.props || EMPTY_OBJ;\n let vnodeHook;\n // disable recurse in beforeUpdate hooks\n parentComponent && toggleRecurse(parentComponent, false);\n if ((vnodeHook = newProps.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n }\n if (dirs) {\n invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate');\n }\n parentComponent && toggleRecurse(parentComponent, true);\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // HMR updated, force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n const areChildrenSVG = isSVG && n2.type !== 'foreignObject';\n if (dynamicChildren) {\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n }\n else if (!optimized) {\n // full diff\n patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);\n }\n if (patchFlag > 0) {\n // the presence of a patchFlag means this element's render code was\n // generated by the compiler and can take the fast path.\n // in this path old node and new node are guaranteed to have the same shape\n // (i.e. at the exact same position in the source template)\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n // element props contain dynamic keys, full diff needed\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n else {\n // class\n // this flag is matched when the element has dynamic class bindings.\n if (patchFlag & 2 /* PatchFlags.CLASS */) {\n if (oldProps.class !== newProps.class) {\n hostPatchProp(el, 'class', null, newProps.class, isSVG);\n }\n }\n // style\n // this flag is matched when the element has dynamic style bindings\n if (patchFlag & 4 /* PatchFlags.STYLE */) {\n hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);\n }\n // props\n // This flag is matched when the element has dynamic prop/attr bindings\n // other than class and style. The keys of dynamic prop/attrs are saved for\n // faster iteration.\n // Note dynamic keys like :[foo]=\"bar\" will cause this optimization to\n // bail out and go through a full diff because we need to unset the old key\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // if the flag is present then dynamicProps must be non-null\n const propsToUpdate = n2.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n const key = propsToUpdate[i];\n const prev = oldProps[key];\n const next = newProps[key];\n // #1471 force patch value\n if (next !== prev || key === 'value') {\n hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n }\n // text\n // This flag is matched when the element has only dynamic text children.\n if (patchFlag & 1 /* PatchFlags.TEXT */) {\n if (n1.children !== n2.children) {\n hostSetElementText(el, n2.children);\n }\n }\n }\n else if (!optimized && dynamicChildren == null) {\n // unoptimized, full diff\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated');\n }, parentSuspense);\n }\n };\n // The fast path for blocks.\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {\n for (let i = 0; i < newChildren.length; i++) {\n const oldVNode = oldChildren[i];\n const newVNode = newChildren[i];\n // Determine the container (parent element) for the patch.\n const container = \n // oldVNode may be an errored async setup() component inside Suspense\n // which will not have a mounted element\n oldVNode.el &&\n // - In the case of a Fragment, we need to provide the actual parent\n // of the Fragment itself so it can move its children.\n (oldVNode.type === Fragment ||\n // - In the case of different nodes, there is going to be a replacement\n // which also requires the correct parent container\n !isSameVNodeType(oldVNode, newVNode) ||\n // - In the case of a component, it could contain anything.\n oldVNode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 64 /* ShapeFlags.TELEPORT */))\n ? hostParentNode(oldVNode.el)\n : // In other cases, the parent container is not actually used so we\n // just pass the block element here to avoid a DOM parentNode call.\n fallbackContainer;\n patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);\n }\n };\n const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\n if (oldProps !== newProps) {\n if (oldProps !== EMPTY_OBJ) {\n for (const key in oldProps) {\n if (!isReservedProp(key) && !(key in newProps)) {\n hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n for (const key in newProps) {\n // empty string is not valid prop\n if (isReservedProp(key))\n continue;\n const next = newProps[key];\n const prev = oldProps[key];\n // defer patching value\n if (next !== prev && key !== 'value') {\n hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n if ('value' in newProps) {\n hostPatchProp(el, 'value', oldProps.value, newProps.value);\n }\n }\n };\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));\n const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));\n let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n if ((process.env.NODE_ENV !== 'production') &&\n // #5523 dev root fragment may inherit directives\n (isHmrUpdating || patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */)) {\n // HMR updated / Dev root fragment (w/ comments), force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n // check if this is a slot fragment with :slotted scope ids\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n if (n1 == null) {\n hostInsert(fragmentStartAnchor, container, anchor);\n hostInsert(fragmentEndAnchor, container, anchor);\n // a fragment can only have array children\n // since they are either generated by the compiler, or implicitly created\n // from arrays.\n mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n if (patchFlag > 0 &&\n patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */ &&\n dynamicChildren &&\n // #2715 the previous fragment could've been a BAILed one as a result\n // of renderSlot() with no valid children\n n1.dynamicChildren) {\n // a stable fragment (template root or <template v-for>) doesn't need to\n // patch children order, but it may contain dynamicChildren.\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n else if (\n // #2080 if the stable fragment has a key, it's a <template v-for> that may\n // get moved around. Make sure all root level vnodes inherit el.\n // #2134 or if it's a component root, it may also get moved around\n // as the component is being moved.\n n2.key != null ||\n (parentComponent && n2 === parentComponent.subTree)) {\n traverseStaticChildren(n1, n2, true /* shallow */);\n }\n }\n else {\n // keyed / unkeyed, or manual fragments.\n // for keyed & unkeyed, since they are compiler generated from v-for,\n // each child is guaranteed to be a block so the fragment will never\n // have dynamicChildren.\n patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n };\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n n2.slotScopeIds = slotScopeIds;\n if (n1 == null) {\n if (n2.shapeFlag & 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */) {\n parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);\n }\n else {\n mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\n }\n }\n else {\n updateComponent(n1, n2, optimized);\n }\n };\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\n const instance = (initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense));\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n registerHMR(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(initialVNode);\n startMeasure(instance, `mount`);\n }\n // inject renderer internals for keepAlive\n if (isKeepAlive(initialVNode)) {\n instance.ctx.renderer = internals;\n }\n // resolve props and slots for setup context\n {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `init`);\n }\n setupComponent(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `init`);\n }\n }\n // setup() is async. This component relies on async logic to be resolved\n // before proceeding\n if (instance.asyncDep) {\n parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\n // Give it a placeholder if this is not hydration\n // TODO handle self-defined fallback\n if (!initialVNode.el) {\n const placeholder = (instance.subTree = createVNode(Comment));\n processCommentNode(null, placeholder, container, anchor);\n }\n return;\n }\n setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n endMeasure(instance, `mount`);\n }\n };\n const updateComponent = (n1, n2, optimized) => {\n const instance = (n2.component = n1.component);\n if (shouldUpdateComponent(n1, n2, optimized)) {\n if (instance.asyncDep &&\n !instance.asyncResolved) {\n // async & still pending - just update props and slots\n // since the component's reactive effect for render isn't set-up yet\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(n2);\n }\n updateComponentPreRender(instance, n2, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n return;\n }\n else {\n // normal update\n instance.next = n2;\n // in case the child component is also queued, remove it to avoid\n // double updating the same child component in the same flush.\n invalidateJob(instance.update);\n // instance.update is the reactive effect.\n instance.update();\n }\n }\n else {\n // no update needed. just copy over properties\n n2.el = n1.el;\n instance.vnode = n2;\n }\n };\n const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\n const componentUpdateFn = () => {\n if (!instance.isMounted) {\n let vnodeHook;\n const { el, props } = initialVNode;\n const { bm, m, parent } = instance;\n const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n toggleRecurse(instance, false);\n // beforeMount hook\n if (bm) {\n invokeArrayFns(bm);\n }\n // onVnodeBeforeMount\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parent, initialVNode);\n }\n toggleRecurse(instance, true);\n if (el && hydrateNode) {\n // vnode has adopted host node - perform hydration instead of mount.\n const hydrateSubTree = () => {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n instance.subTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `hydrate`);\n }\n hydrateNode(el, instance.subTree, instance, parentSuspense, null);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `hydrate`);\n }\n };\n if (isAsyncWrapperVNode) {\n initialVNode.type.__asyncLoader().then(\n // note: we are moving the render call into an async callback,\n // which means it won't track dependencies - but it's ok because\n // a server-rendered async wrapper is already in resolved state\n // and it will never need to change.\n () => !instance.isUnmounted && hydrateSubTree());\n }\n else {\n hydrateSubTree();\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const subTree = (instance.subTree = renderComponentRoot(instance));\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n initialVNode.el = subTree.el;\n }\n // mounted hook\n if (m) {\n queuePostRenderEffect(m, parentSuspense);\n }\n // onVnodeMounted\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeMounted)) {\n const scopedInitialVNode = initialVNode;\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);\n }\n // activated hook for keep-alive roots.\n // #1742 activated hook must be accessed after first render\n // since the hook may be injected by a child keep-alive\n if (initialVNode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */ ||\n (parent &&\n isAsyncWrapper(parent.vnode) &&\n parent.vnode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */)) {\n instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n }\n instance.isMounted = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance);\n }\n // #2458: deference mount-only object parameters to prevent memleaks\n initialVNode = container = anchor = null;\n }\n else {\n // updateComponent\n // This is triggered by mutation of component's own state (next: null)\n // OR parent calling processComponent (next: VNode)\n let { next, bu, u, parent, vnode } = instance;\n let originNext = next;\n let vnodeHook;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(next || instance.vnode);\n }\n // Disallow component effect recursion during pre-lifecycle hooks.\n toggleRecurse(instance, false);\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n }\n else {\n next = vnode;\n }\n // beforeUpdate hook\n if (bu) {\n invokeArrayFns(bu);\n }\n // onVnodeBeforeUpdate\n if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parent, next, vnode);\n }\n toggleRecurse(instance, true);\n // render\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const nextTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n const prevTree = instance.subTree;\n instance.subTree = nextTree;\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(prevTree, nextTree, \n // parent may have changed if it's in a teleport\n hostParentNode(prevTree.el), \n // anchor may have changed if it's in a fragment\n getNextHostNode(prevTree), instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n next.el = nextTree.el;\n if (originNext === null) {\n // self-triggered update. In case of HOC, update parent component\n // vnode el. HOC is indicated by parent instance's subTree pointing\n // to child component's vnode\n updateHOCHostEl(instance, nextTree.el);\n }\n // updated hook\n if (u) {\n queuePostRenderEffect(u, parentSuspense);\n }\n // onVnodeUpdated\n if ((vnodeHook = next.props && next.props.onVnodeUpdated)) {\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n }\n };\n // create reactive effect for rendering\n const effect = (instance.effect = new ReactiveEffect(componentUpdateFn, () => queueJob(update), instance.scope // track it in component's effect scope\n ));\n const update = (instance.update = () => effect.run());\n update.id = instance.uid;\n // allowRecurse\n // #1801, #2043 component render effects should allow recursive updates\n toggleRecurse(instance, true);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = instance.rtc\n ? e => invokeArrayFns(instance.rtc, e)\n : void 0;\n effect.onTrigger = instance.rtg\n ? e => invokeArrayFns(instance.rtg, e)\n : void 0;\n update.ownerInstance = instance;\n }\n update();\n };\n const updateComponentPreRender = (instance, nextVNode, optimized) => {\n nextVNode.component = instance;\n const prevProps = instance.vnode.props;\n instance.vnode = nextVNode;\n instance.next = null;\n updateProps(instance, nextVNode.props, prevProps, optimized);\n updateSlots(instance, nextVNode.children, optimized);\n pauseTracking();\n // props update may have triggered pre-flush watchers.\n // flush them before the render update.\n flushPreFlushCbs();\n resetTracking();\n };\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {\n const c1 = n1 && n1.children;\n const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n const c2 = n2.children;\n const { patchFlag, shapeFlag } = n2;\n // fast path\n if (patchFlag > 0) {\n if (patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */) {\n // this could be either fully-keyed or mixed (some keyed some not)\n // presence of patchFlag means children are guaranteed to be arrays\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n else if (patchFlag & 256 /* PatchFlags.UNKEYED_FRAGMENT */) {\n // unkeyed\n patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n }\n // children has 3 possibilities: text, array or no children.\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n // text children fast path\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n unmountChildren(c1, parentComponent, parentSuspense);\n }\n if (c2 !== c1) {\n hostSetElementText(container, c2);\n }\n }\n else {\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // prev children was array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // two arrays, cannot assume anything, do full diff\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n // no new children, just unmount old\n unmountChildren(c1, parentComponent, parentSuspense, true);\n }\n }\n else {\n // prev children was text OR null\n // new children is array OR null\n if (prevShapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(container, '');\n }\n // mount new if array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n }\n };\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n c1 = c1 || EMPTY_ARR;\n c2 = c2 || EMPTY_ARR;\n const oldLength = c1.length;\n const newLength = c2.length;\n const commonLength = Math.min(oldLength, newLength);\n let i;\n for (i = 0; i < commonLength; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n if (oldLength > newLength) {\n // remove old\n unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);\n }\n else {\n // mount new\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);\n }\n };\n // can be all-keyed or mixed\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let i = 0;\n const l2 = c2.length;\n let e1 = c1.length - 1; // prev ending index\n let e2 = l2 - 1; // next ending index\n // 1. sync from start\n // (a b) c\n // (a b) d e\n while (i <= e1 && i <= e2) {\n const n1 = c1[i];\n const n2 = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n i++;\n }\n // 2. sync from end\n // a (b c)\n // d e (b c)\n while (i <= e1 && i <= e2) {\n const n1 = c1[e1];\n const n2 = (c2[e2] = optimized\n ? cloneIfMounted(c2[e2])\n : normalizeVNode(c2[e2]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n e1--;\n e2--;\n }\n // 3. common sequence + mount\n // (a b)\n // (a b) c\n // i = 2, e1 = 1, e2 = 2\n // (a b)\n // c (a b)\n // i = 0, e1 = -1, e2 = 0\n if (i > e1) {\n if (i <= e2) {\n const nextPos = e2 + 1;\n const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n while (i <= e2) {\n patch(null, (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i])), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n i++;\n }\n }\n }\n // 4. common sequence + unmount\n // (a b) c\n // (a b)\n // i = 2, e1 = 2, e2 = 1\n // a (b c)\n // (b c)\n // i = 0, e1 = 0, e2 = -1\n else if (i > e2) {\n while (i <= e1) {\n unmount(c1[i], parentComponent, parentSuspense, true);\n i++;\n }\n }\n // 5. unknown sequence\n // [i ... e1 + 1]: a b [c d e] f g\n // [i ... e2 + 1]: a b [e d c h] f g\n // i = 2, e1 = 4, e2 = 5\n else {\n const s1 = i; // prev starting index\n const s2 = i; // next starting index\n // 5.1 build key:index map for newChildren\n const keyToNewIndexMap = new Map();\n for (i = s2; i <= e2; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (nextChild.key != null) {\n if ((process.env.NODE_ENV !== 'production') && keyToNewIndexMap.has(nextChild.key)) {\n warn(`Duplicate keys found during update:`, JSON.stringify(nextChild.key), `Make sure keys are unique.`);\n }\n keyToNewIndexMap.set(nextChild.key, i);\n }\n }\n // 5.2 loop through old children left to be patched and try to patch\n // matching nodes & remove nodes that are no longer present\n let j;\n let patched = 0;\n const toBePatched = e2 - s2 + 1;\n let moved = false;\n // used to track whether any node has moved\n let maxNewIndexSoFar = 0;\n // works as Map<newIndex, oldIndex>\n // Note that oldIndex is offset by +1\n // and oldIndex = 0 is a special value indicating the new node has\n // no corresponding old node.\n // used for determining longest stable subsequence\n const newIndexToOldIndexMap = new Array(toBePatched);\n for (i = 0; i < toBePatched; i++)\n newIndexToOldIndexMap[i] = 0;\n for (i = s1; i <= e1; i++) {\n const prevChild = c1[i];\n if (patched >= toBePatched) {\n // all new children have been patched so this can only be a removal\n unmount(prevChild, parentComponent, parentSuspense, true);\n continue;\n }\n let newIndex;\n if (prevChild.key != null) {\n newIndex = keyToNewIndexMap.get(prevChild.key);\n }\n else {\n // key-less node, try to locate a key-less node of the same type\n for (j = s2; j <= e2; j++) {\n if (newIndexToOldIndexMap[j - s2] === 0 &&\n isSameVNodeType(prevChild, c2[j])) {\n newIndex = j;\n break;\n }\n }\n }\n if (newIndex === undefined) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n }\n else {\n newIndexToOldIndexMap[newIndex - s2] = i + 1;\n if (newIndex >= maxNewIndexSoFar) {\n maxNewIndexSoFar = newIndex;\n }\n else {\n moved = true;\n }\n patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n patched++;\n }\n }\n // 5.3 move and mount\n // generate longest stable subsequence only when nodes have moved\n const increasingNewIndexSequence = moved\n ? getSequence(newIndexToOldIndexMap)\n : EMPTY_ARR;\n j = increasingNewIndexSequence.length - 1;\n // looping backwards so that we can use last patched node as anchor\n for (i = toBePatched - 1; i >= 0; i--) {\n const nextIndex = s2 + i;\n const nextChild = c2[nextIndex];\n const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n if (newIndexToOldIndexMap[i] === 0) {\n // mount new\n patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (moved) {\n // move if:\n // There is no stable subsequence (e.g. a reverse)\n // OR current node is not among the stable sequence\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\n move(nextChild, container, anchor, 2 /* MoveType.REORDER */);\n }\n else {\n j--;\n }\n }\n }\n }\n };\n const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n const { el, type, transition, children, shapeFlag } = vnode;\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n move(vnode.component.subTree, container, anchor, moveType);\n return;\n }\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.move(container, anchor, moveType);\n return;\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.move(vnode, container, anchor, internals);\n return;\n }\n if (type === Fragment) {\n hostInsert(el, container, anchor);\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, anchor, moveType);\n }\n hostInsert(vnode.anchor, container, anchor);\n return;\n }\n if (type === Static) {\n moveStaticNode(vnode, container, anchor);\n return;\n }\n // single nodes\n const needTransition = moveType !== 2 /* MoveType.REORDER */ &&\n shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition;\n if (needTransition) {\n if (moveType === 0 /* MoveType.ENTER */) {\n transition.beforeEnter(el);\n hostInsert(el, container, anchor);\n queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n }\n else {\n const { leave, delayLeave, afterLeave } = transition;\n const remove = () => hostInsert(el, container, anchor);\n const performLeave = () => {\n leave(el, () => {\n remove();\n afterLeave && afterLeave();\n });\n };\n if (delayLeave) {\n delayLeave(el, remove, performLeave);\n }\n else {\n performLeave();\n }\n }\n }\n else {\n hostInsert(el, container, anchor);\n }\n };\n const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;\n // unset ref\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode, true);\n }\n if (shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */) {\n parentComponent.ctx.deactivate(vnode);\n return;\n }\n const shouldInvokeDirs = shapeFlag & 1 /* ShapeFlags.ELEMENT */ && dirs;\n const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n let vnodeHook;\n if (shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n unmountComponent(vnode.component, parentSuspense, doRemove);\n }\n else {\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.unmount(parentSuspense, doRemove);\n return;\n }\n if (shouldInvokeDirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount');\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);\n }\n else if (dynamicChildren &&\n // #1153: fast path should not be taken for non-stable (v-for) fragments\n (type !== Fragment ||\n (patchFlag > 0 && patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */))) {\n // fast path for block nodes: only need to unmount dynamic children.\n unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);\n }\n else if ((type === Fragment &&\n patchFlag &\n (128 /* PatchFlags.KEYED_FRAGMENT */ | 256 /* PatchFlags.UNKEYED_FRAGMENT */)) ||\n (!optimized && shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */)) {\n unmountChildren(children, parentComponent, parentSuspense);\n }\n if (doRemove) {\n remove(vnode);\n }\n }\n if ((shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeUnmounted)) ||\n shouldInvokeDirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n shouldInvokeDirs &&\n invokeDirectiveHook(vnode, null, parentComponent, 'unmounted');\n }, parentSuspense);\n }\n };\n const remove = vnode => {\n const { type, el, anchor, transition } = vnode;\n if (type === Fragment) {\n if ((process.env.NODE_ENV !== 'production') &&\n vnode.patchFlag > 0 &&\n vnode.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */ &&\n transition &&\n !transition.persisted) {\n vnode.children.forEach(child => {\n if (child.type === Comment) {\n hostRemove(child.el);\n }\n else {\n remove(child);\n }\n });\n }\n else {\n removeFragment(el, anchor);\n }\n return;\n }\n if (type === Static) {\n removeStaticNode(vnode);\n return;\n }\n const performRemove = () => {\n hostRemove(el);\n if (transition && !transition.persisted && transition.afterLeave) {\n transition.afterLeave();\n }\n };\n if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition &&\n !transition.persisted) {\n const { leave, delayLeave } = transition;\n const performLeave = () => leave(el, performRemove);\n if (delayLeave) {\n delayLeave(vnode.el, performRemove, performLeave);\n }\n else {\n performLeave();\n }\n }\n else {\n performRemove();\n }\n };\n const removeFragment = (cur, end) => {\n // For fragments, directly remove all contained DOM nodes.\n // (fragment child nodes cannot have transition)\n let next;\n while (cur !== end) {\n next = hostNextSibling(cur);\n hostRemove(cur);\n cur = next;\n }\n hostRemove(end);\n };\n const unmountComponent = (instance, parentSuspense, doRemove) => {\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n unregisterHMR(instance);\n }\n const { bum, scope, update, subTree, um } = instance;\n // beforeUnmount hook\n if (bum) {\n invokeArrayFns(bum);\n }\n // stop effects in component scope\n scope.stop();\n // update may be null if a component is unmounted before its async\n // setup has resolved.\n if (update) {\n // so that scheduler will no longer invoke it\n update.active = false;\n unmount(subTree, instance, parentSuspense, doRemove);\n }\n // unmounted hook\n if (um) {\n queuePostRenderEffect(um, parentSuspense);\n }\n queuePostRenderEffect(() => {\n instance.isUnmounted = true;\n }, parentSuspense);\n // A component with async dep inside a pending suspense is unmounted before\n // its async dep resolves. This should remove the dep from the suspense, and\n // cause the suspense to resolve immediately if that was the last dep.\n if (parentSuspense &&\n parentSuspense.pendingBranch &&\n !parentSuspense.isUnmounted &&\n instance.asyncDep &&\n !instance.asyncResolved &&\n instance.suspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0) {\n parentSuspense.resolve();\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentRemoved(instance);\n }\n };\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n for (let i = start; i < children.length; i++) {\n unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n }\n };\n const getNextHostNode = vnode => {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n return getNextHostNode(vnode.component.subTree);\n }\n if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n return vnode.suspense.next();\n }\n return hostNextSibling((vnode.anchor || vnode.el));\n };\n const render = (vnode, container, isSVG) => {\n if (vnode == null) {\n if (container._vnode) {\n unmount(container._vnode, null, null, true);\n }\n }\n else {\n patch(container._vnode || null, vnode, container, null, null, null, isSVG);\n }\n flushPreFlushCbs();\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const internals = {\n p: patch,\n um: unmount,\n m: move,\n r: remove,\n mt: mountComponent,\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n n: getNextHostNode,\n o: options\n };\n let hydrate;\n let hydrateNode;\n if (createHydrationFns) {\n [hydrate, hydrateNode] = createHydrationFns(internals);\n }\n return {\n render,\n hydrate,\n createApp: createAppAPI(render, hydrate)\n };\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n effect.allowRecurse = update.allowRecurse = allowed;\n}\n/**\n * #1156\n * When a component is HMR-enabled, we need to make sure that all static nodes\n * inside a block also inherit the DOM element from the previous tree so that\n * HMR updates (which are full updates) can retrieve the element for patching.\n *\n * #2080\n * Inside keyed `template` fragment static children, if a fragment is moved,\n * the children will always be moved. Therefore, in order to ensure correct move\n * position, el should be inherited from previous nodes.\n */\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n const ch1 = n1.children;\n const ch2 = n2.children;\n if (isArray(ch1) && isArray(ch2)) {\n for (let i = 0; i < ch1.length; i++) {\n // this is only called in the optimized path so array children are\n // guaranteed to be vnodes\n const c1 = ch1[i];\n let c2 = ch2[i];\n if (c2.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && !c2.dynamicChildren) {\n if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* PatchFlags.HYDRATE_EVENTS */) {\n c2 = ch2[i] = cloneIfMounted(ch2[i]);\n c2.el = c1.el;\n }\n if (!shallow)\n traverseStaticChildren(c1, c2);\n }\n // #6852 also inherit for text nodes\n if (c2.type === Text) {\n c2.el = c1.el;\n }\n // also inherit for comment nodes, but not placeholders (e.g. v-if which\n // would have received .el during block patch)\n if ((process.env.NODE_ENV !== 'production') && c2.type === Comment && !c2.el) {\n c2.el = c1.el;\n }\n }\n }\n}\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\nfunction getSequence(arr) {\n const p = arr.slice();\n const result = [0];\n let i, j, u, v, c;\n const len = arr.length;\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI !== 0) {\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n u = 0;\n v = result.length - 1;\n while (u < v) {\n c = (u + v) >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n }\n else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = result.length;\n v = result[u - 1];\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n return result;\n}\n\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === '');\nconst isTargetSVG = (target) => typeof SVGElement !== 'undefined' && target instanceof SVGElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Current renderer does not support string target for Teleports. ` +\n `(missing querySelector renderer option)`);\n return null;\n }\n else {\n const target = select(targetSelector);\n if (!target) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Failed to locate Teleport target with selector \"${targetSelector}\". ` +\n `Note the target element must exist before the component is mounted - ` +\n `i.e. the target cannot be rendered by the component itself, and ` +\n `ideally should be outside of the entire Vue component tree.`);\n }\n return target;\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && !targetSelector && !isTeleportDisabled(props)) {\n warn(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {\n const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert, querySelector, createText, createComment } } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n // #3302\n // HMR updated, force full diff\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n // insert anchors in the main view\n const placeholder = (n2.el = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport start')\n : createText(''));\n const mainAnchor = (n2.anchor = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport end')\n : createText(''));\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const target = (n2.target = resolveTarget(n2.props, querySelector));\n const targetAnchor = (n2.targetAnchor = createText(''));\n if (target) {\n insert(targetAnchor, target);\n // #2652 we could be teleporting from a non-SVG tree into an SVG tree\n isSVG = isSVG || isTargetSVG(target);\n }\n else if ((process.env.NODE_ENV !== 'production') && !disabled) {\n warn('Invalid Teleport target on mount:', target, `(${typeof target})`);\n }\n const mount = (container, anchor) => {\n // Teleport *always* has Array children. This is enforced in both the\n // compiler and vnode children normalization.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n }\n else if (target) {\n mount(target, targetAnchor);\n }\n }\n else {\n // update content\n n2.el = n1.el;\n const mainAnchor = (n2.anchor = n1.anchor);\n const target = (n2.target = n1.target);\n const targetAnchor = (n2.targetAnchor = n1.targetAnchor);\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n isSVG = isSVG || isTargetSVG(target);\n if (dynamicChildren) {\n // fast path when the teleport happens to be a block root\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds);\n // even in block tree mode we need to make sure all root-level nodes\n // in the teleport inherit previous DOM references so that they can\n // be moved in future patches.\n traverseStaticChildren(n1, n2, true);\n }\n else if (!optimized) {\n patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false);\n }\n if (disabled) {\n if (!wasDisabled) {\n // enabled -> disabled\n // move into main container\n moveTeleport(n2, container, mainAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n else {\n // target changed\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = (n2.target = resolveTarget(n2.props, querySelector));\n if (nextTarget) {\n moveTeleport(n2, nextTarget, null, internals, 0 /* TeleportMoveTypes.TARGET_CHANGE */);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid Teleport target on update:', target, `(${typeof target})`);\n }\n }\n else if (wasDisabled) {\n // disabled -> enabled\n // move into teleport target\n moveTeleport(n2, target, targetAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n }\n updateCssVars(n2);\n },\n remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\n if (target) {\n hostRemove(targetAnchor);\n }\n // an unmounted teleport should always remove its children if not disabled\n if (doRemove || !isTeleportDisabled(props)) {\n hostRemove(anchor);\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);\n }\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* TeleportMoveTypes.REORDER */) {\n // move target anchor if this is a target change.\n if (moveType === 0 /* TeleportMoveTypes.TARGET_CHANGE */) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2 /* TeleportMoveTypes.REORDER */;\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n // if this is a re-order and teleport is enabled (content is in target)\n // do not move children. So the opposite is: only move children if this\n // is not a reorder, or the teleport is disabled\n if (!isReorder || isTeleportDisabled(props)) {\n // Teleport has either Array children or no children.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, parentAnchor, 2 /* MoveType.REORDER */);\n }\n }\n }\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {\n const target = (vnode.target = resolveTarget(vnode.props, querySelector));\n if (target) {\n // if multiple teleports rendered to the same target element, we need to\n // pick up from where the last teleport finished instead of the first node\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n if (isTeleportDisabled(vnode.props)) {\n vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);\n vnode.targetAnchor = targetNode;\n }\n else {\n vnode.anchor = nextSibling(node);\n // lookahead until we find the target anchor\n // we cannot rely on return value of hydrateChildren() because there\n // could be nested teleports\n let targetAnchor = targetNode;\n while (targetAnchor) {\n targetAnchor = nextSibling(targetAnchor);\n if (targetAnchor &&\n targetAnchor.nodeType === 8 &&\n targetAnchor.data === 'teleport anchor') {\n vnode.targetAnchor = targetAnchor;\n target._lpa =\n vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n updateCssVars(vnode);\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\n// Force-casted public typing for h and TSX props inference\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode) {\n // presence of .ut method indicates owner component uses css vars.\n // code path here can assume browser environment.\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node = vnode.children[0].el;\n while (node !== vnode.targetAnchor) {\n if (node.nodeType === 1)\n node.setAttribute('data-v-owner', ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\n\nconst Fragment = Symbol((process.env.NODE_ENV !== 'production') ? 'Fragment' : undefined);\nconst Text = Symbol((process.env.NODE_ENV !== 'production') ? 'Text' : undefined);\nconst Comment = Symbol((process.env.NODE_ENV !== 'production') ? 'Comment' : undefined);\nconst Static = Symbol((process.env.NODE_ENV !== 'production') ? 'Static' : undefined);\n// Since v-if and v-for are the two possible ways node structure can dynamically\n// change, once we consider v-if branches and each v-for fragment a block, we\n// can divide a template into nested blocks, and within each block the node\n// structure would be stable. This allows us to skip most children diffing\n// and only worry about the dynamic nodes (indicated by patch flags).\nconst blockStack = [];\nlet currentBlock = null;\n/**\n * Open a block.\n * This must be called before `createBlock`. It cannot be part of `createBlock`\n * because the children of the block are evaluated before `createBlock` itself\n * is called. The generated code typically looks like this:\n *\n * ```js\n * function render() {\n * return (openBlock(),createBlock('div', null, [...]))\n * }\n * ```\n * disableTracking is true when creating a v-for fragment block, since a v-for\n * fragment always diffs its children.\n *\n * @private\n */\nfunction openBlock(disableTracking = false) {\n blockStack.push((currentBlock = disableTracking ? null : []));\n}\nfunction closeBlock() {\n blockStack.pop();\n currentBlock = blockStack[blockStack.length - 1] || null;\n}\n// Whether we should be tracking dynamic child nodes inside a block.\n// Only tracks when this value is > 0\n// We are not using a simple boolean because this value may need to be\n// incremented/decremented by nested usage of v-once (see below)\nlet isBlockTreeEnabled = 1;\n/**\n * Block tracking sometimes needs to be disabled, for example during the\n * creation of a tree that needs to be cached by v-once. The compiler generates\n * code like this:\n *\n * ``` js\n * _cache[1] || (\n * setBlockTracking(-1),\n * _cache[1] = createVNode(...),\n * setBlockTracking(1),\n * _cache[1]\n * )\n * ```\n *\n * @private\n */\nfunction setBlockTracking(value) {\n isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n // save current block children on the block vnode\n vnode.dynamicChildren =\n isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n // close block\n closeBlock();\n // a block is always going to be patched, so track it as a child of its\n // parent block\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\n/**\n * @private\n */\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true /* isBlock */));\n}\n/**\n * Create a block root vnode. Takes the same exact arguments as `createVNode`.\n * A block root keeps track of dynamic nodes within the block in the\n * `dynamicChildren` array.\n *\n * @private\n */\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true /* isBlock: prevent a block from tracking itself */));\n}\nfunction isVNode(value) {\n return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n if ((process.env.NODE_ENV !== 'production') &&\n n2.shapeFlag & 6 /* ShapeFlags.COMPONENT */ &&\n hmrDirtyComponents.has(n2.type)) {\n // #7042, ensure the vnode being unmounted during HMR\n // bitwise operations to remove keep alive flags\n n1.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n n2.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n // HMR only: if the component has been hot-updated, force a reload.\n return false;\n }\n return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\n/**\n * Internal API for registering an arguments transform for createVNode\n * used for creating stubs in the test-utils\n * It is *internal* but needs to be exposed for test-utils to pick up proper\n * typings\n */\nfunction transformVNodeArgs(transformer) {\n vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n return _createVNode(...(vnodeArgsTransformer\n ? vnodeArgsTransformer(args, currentRenderingInstance)\n : args));\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({ ref, ref_key, ref_for }) => {\n return (ref != null\n ? isString(ref) || isRef(ref) || isFunction(ref)\n ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for }\n : ref\n : null);\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ShapeFlags.ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) {\n const vnode = {\n __v_isVNode: true,\n __v_skip: true,\n type,\n props,\n key: props && normalizeKey(props),\n ref: props && normalizeRef(props),\n scopeId: currentScopeId,\n slotScopeIds: null,\n children,\n component: null,\n suspense: null,\n ssContent: null,\n ssFallback: null,\n dirs: null,\n transition: null,\n el: null,\n anchor: null,\n target: null,\n targetAnchor: null,\n staticCount: 0,\n shapeFlag,\n patchFlag,\n dynamicProps,\n dynamicChildren: null,\n appContext: null,\n ctx: currentRenderingInstance\n };\n if (needFullChildrenNormalization) {\n normalizeChildren(vnode, children);\n // normalize suspense children\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.normalize(vnode);\n }\n }\n else if (children) {\n // compiled element vnode - if children is passed, only possible types are\n // string or Array.\n vnode.shapeFlag |= isString(children)\n ? 8 /* ShapeFlags.TEXT_CHILDREN */\n : 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n // validate key\n if ((process.env.NODE_ENV !== 'production') && vnode.key !== vnode.key) {\n warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n }\n // track vnode for block tree\n if (isBlockTreeEnabled > 0 &&\n // avoid a block node from tracking itself\n !isBlockNode &&\n // has current parent block\n currentBlock &&\n // presence of a patch flag indicates this node needs patching on updates.\n // component nodes also should always be patched, because even if the\n // component doesn't need to update, it needs to persist the instance on to\n // the next vnode so that it can be properly unmounted later.\n (vnode.patchFlag > 0 || shapeFlag & 6 /* ShapeFlags.COMPONENT */) &&\n // the EVENTS flag is only for hydration and if it is the only flag, the\n // vnode should not be considered dynamic due to handler caching.\n vnode.patchFlag !== 32 /* PatchFlags.HYDRATE_EVENTS */) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nconst createVNode = ((process.env.NODE_ENV !== 'production') ? createVNodeWithArgsTransform : _createVNode);\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\n if ((process.env.NODE_ENV !== 'production') && !type) {\n warn(`Invalid vnode type when creating vnode: ${type}.`);\n }\n type = Comment;\n }\n if (isVNode(type)) {\n // createVNode receiving an existing vnode. This happens in cases like\n // <component :is=\"vnode\"/>\n // #2078 make sure to merge refs during the clone instead of overwriting it\n const cloned = cloneVNode(type, props, true /* mergeRef: true */);\n if (children) {\n normalizeChildren(cloned, children);\n }\n if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n if (cloned.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n currentBlock[currentBlock.indexOf(type)] = cloned;\n }\n else {\n currentBlock.push(cloned);\n }\n }\n cloned.patchFlag |= -2 /* PatchFlags.BAIL */;\n return cloned;\n }\n // class component normalization.\n if (isClassComponent(type)) {\n type = type.__vccOpts;\n }\n // class & style normalization.\n if (props) {\n // for reactive or proxy objects, we need to clone it to enable mutation.\n props = guardReactiveProps(props);\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (isObject(style)) {\n // reactive state objects need to be cloned since they are likely to be\n // mutated\n if (isProxy(style) && !isArray(style)) {\n style = extend({}, style);\n }\n props.style = normalizeStyle(style);\n }\n }\n // encode the vnode type information into a bitmap\n const shapeFlag = isString(type)\n ? 1 /* ShapeFlags.ELEMENT */\n : isSuspense(type)\n ? 128 /* ShapeFlags.SUSPENSE */\n : isTeleport(type)\n ? 64 /* ShapeFlags.TELEPORT */\n : isObject(type)\n ? 4 /* ShapeFlags.STATEFUL_COMPONENT */\n : isFunction(type)\n ? 2 /* ShapeFlags.FUNCTIONAL_COMPONENT */\n : 0;\n if ((process.env.NODE_ENV !== 'production') && shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */ && isProxy(type)) {\n type = toRaw(type);\n warn(`Vue received a Component which was made a reactive object. This can ` +\n `lead to unnecessary performance overhead, and should be avoided by ` +\n `marking the component with \\`markRaw\\` or using \\`shallowRef\\` ` +\n `instead of \\`ref\\`.`, `\\nComponent that was made reactive: `, type);\n }\n return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);\n}\nfunction guardReactiveProps(props) {\n if (!props)\n return null;\n return isProxy(props) || InternalObjectKey in props\n ? extend({}, props)\n : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n // This is intentionally NOT using spread or extend to avoid the runtime\n // key enumeration cost.\n const { props, ref, patchFlag, children } = vnode;\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n const cloned = {\n __v_isVNode: true,\n __v_skip: true,\n type: vnode.type,\n props: mergedProps,\n key: mergedProps && normalizeKey(mergedProps),\n ref: extraProps && extraProps.ref\n ? // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n // if the vnode itself already has a ref, cloneVNode will need to merge\n // the refs so the single vnode can be set on multiple refs\n mergeRef && ref\n ? isArray(ref)\n ? ref.concat(normalizeRef(extraProps))\n : [ref, normalizeRef(extraProps)]\n : normalizeRef(extraProps)\n : ref,\n scopeId: vnode.scopeId,\n slotScopeIds: vnode.slotScopeIds,\n children: (process.env.NODE_ENV !== 'production') && patchFlag === -1 /* PatchFlags.HOISTED */ && isArray(children)\n ? children.map(deepCloneVNode)\n : children,\n target: vnode.target,\n targetAnchor: vnode.targetAnchor,\n staticCount: vnode.staticCount,\n shapeFlag: vnode.shapeFlag,\n // if the vnode is cloned with extra props, we can no longer assume its\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n // note: preserve flag for fragments since they use the flag for children\n // fast paths only.\n patchFlag: extraProps && vnode.type !== Fragment\n ? patchFlag === -1 // hoisted node\n ? 16 /* PatchFlags.FULL_PROPS */\n : patchFlag | 16 /* PatchFlags.FULL_PROPS */\n : patchFlag,\n dynamicProps: vnode.dynamicProps,\n dynamicChildren: vnode.dynamicChildren,\n appContext: vnode.appContext,\n dirs: vnode.dirs,\n transition: vnode.transition,\n // These should technically only be non-null on mounted VNodes. However,\n // they *should* be copied for kept-alive vnodes. So we just always copy\n // them since them being non-null during a mount doesn't affect the logic as\n // they will simply be overwritten.\n component: vnode.component,\n suspense: vnode.suspense,\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n el: vnode.el,\n anchor: vnode.anchor,\n ctx: vnode.ctx\n };\n return cloned;\n}\n/**\n * Dev only, for HMR of hoisted vnodes reused in v-for\n * https://github.com/vitejs/vite/issues/2022\n */\nfunction deepCloneVNode(vnode) {\n const cloned = cloneVNode(vnode);\n if (isArray(vnode.children)) {\n cloned.children = vnode.children.map(deepCloneVNode);\n }\n return cloned;\n}\n/**\n * @private\n */\nfunction createTextVNode(text = ' ', flag = 0) {\n return createVNode(Text, null, text, flag);\n}\n/**\n * @private\n */\nfunction createStaticVNode(content, numberOfNodes) {\n // A static vnode can contain multiple stringified elements, and the number\n // of elements is necessary for hydration.\n const vnode = createVNode(Static, null, content);\n vnode.staticCount = numberOfNodes;\n return vnode;\n}\n/**\n * @private\n */\nfunction createCommentVNode(text = '', \n// when used as the v-else branch, the comment node must be created as a\n// block to ensure correct updates.\nasBlock = false) {\n return asBlock\n ? (openBlock(), createBlock(Comment, null, text))\n : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n if (child == null || typeof child === 'boolean') {\n // empty placeholder\n return createVNode(Comment);\n }\n else if (isArray(child)) {\n // fragment\n return createVNode(Fragment, null, \n // #3666, avoid reference pollution when reusing vnode\n child.slice());\n }\n else if (typeof child === 'object') {\n // already vnode, this should be the most common since compiled templates\n // always produce all-vnode children arrays\n return cloneIfMounted(child);\n }\n else {\n // strings and numbers\n return createVNode(Text, null, String(child));\n }\n}\n// optimized normalization for template-compiled render fns\nfunction cloneIfMounted(child) {\n return (child.el === null && child.patchFlag !== -1 /* PatchFlags.HOISTED */) ||\n child.memo\n ? child\n : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n let type = 0;\n const { shapeFlag } = vnode;\n if (children == null) {\n children = null;\n }\n else if (isArray(children)) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n else if (typeof children === 'object') {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 64 /* ShapeFlags.TELEPORT */)) {\n // Normalize slot to plain children for plain element and Teleport\n const slot = children.default;\n if (slot) {\n // _c marker is added by withCtx() indicating this is a compiled slot\n slot._c && (slot._d = false);\n normalizeChildren(vnode, slot());\n slot._c && (slot._d = true);\n }\n return;\n }\n else {\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n const slotFlag = children._;\n if (!slotFlag && !(InternalObjectKey in children)) {\n children._ctx = currentRenderingInstance;\n }\n else if (slotFlag === 3 /* SlotFlags.FORWARDED */ && currentRenderingInstance) {\n // a child component receives forwarded slots from the parent.\n // its slot type is determined by its parent's slot type.\n if (currentRenderingInstance.slots._ === 1 /* SlotFlags.STABLE */) {\n children._ = 1 /* SlotFlags.STABLE */;\n }\n else {\n children._ = 2 /* SlotFlags.DYNAMIC */;\n vnode.patchFlag |= 1024 /* PatchFlags.DYNAMIC_SLOTS */;\n }\n }\n }\n }\n else if (isFunction(children)) {\n children = { default: children, _ctx: currentRenderingInstance };\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n }\n else {\n children = String(children);\n // force teleport children to array so it can be moved around\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n children = [createTextVNode(children)];\n }\n else {\n type = 8 /* ShapeFlags.TEXT_CHILDREN */;\n }\n }\n vnode.children = children;\n vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n const toMerge = args[i];\n for (const key in toMerge) {\n if (key === 'class') {\n if (ret.class !== toMerge.class) {\n ret.class = normalizeClass([ret.class, toMerge.class]);\n }\n }\n else if (key === 'style') {\n ret.style = normalizeStyle([ret.style, toMerge.style]);\n }\n else if (isOn(key)) {\n const existing = ret[key];\n const incoming = toMerge[key];\n if (incoming &&\n existing !== incoming &&\n !(isArray(existing) && existing.includes(incoming))) {\n ret[key] = existing\n ? [].concat(existing, incoming)\n : incoming;\n }\n }\n else if (key !== '') {\n ret[key] = toMerge[key];\n }\n }\n }\n return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n callWithAsyncErrorHandling(hook, instance, 7 /* ErrorCodes.VNODE_HOOK */, [\n vnode,\n prevVNode\n ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid$1 = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n const type = vnode.type;\n // inherit parent app context - or - if root, adopt from root vnode\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n const instance = {\n uid: uid$1++,\n vnode,\n type,\n parent,\n appContext,\n root: null,\n next: null,\n subTree: null,\n effect: null,\n update: null,\n scope: new EffectScope(true /* detached */),\n render: null,\n proxy: null,\n exposed: null,\n exposeProxy: null,\n withProxy: null,\n provides: parent ? parent.provides : Object.create(appContext.provides),\n accessCache: null,\n renderCache: [],\n // local resolved assets\n components: null,\n directives: null,\n // resolved props and emits options\n propsOptions: normalizePropsOptions(type, appContext),\n emitsOptions: normalizeEmitsOptions(type, appContext),\n // emit\n emit: null,\n emitted: null,\n // props default value\n propsDefaults: EMPTY_OBJ,\n // inheritAttrs\n inheritAttrs: type.inheritAttrs,\n // state\n ctx: EMPTY_OBJ,\n data: EMPTY_OBJ,\n props: EMPTY_OBJ,\n attrs: EMPTY_OBJ,\n slots: EMPTY_OBJ,\n refs: EMPTY_OBJ,\n setupState: EMPTY_OBJ,\n setupContext: null,\n // suspense related\n suspense,\n suspenseId: suspense ? suspense.pendingId : 0,\n asyncDep: null,\n asyncResolved: false,\n // lifecycle hooks\n // not using enums here because it results in computed properties\n isMounted: false,\n isUnmounted: false,\n isDeactivated: false,\n bc: null,\n c: null,\n bm: null,\n m: null,\n bu: null,\n u: null,\n um: null,\n bum: null,\n da: null,\n a: null,\n rtg: null,\n rtc: null,\n ec: null,\n sp: null\n };\n if ((process.env.NODE_ENV !== 'production')) {\n instance.ctx = createDevRenderContext(instance);\n }\n else {\n instance.ctx = { _: instance };\n }\n instance.root = parent ? parent.root : instance;\n instance.emit = emit$1.bind(null, instance);\n // apply custom element special handling\n if (vnode.ce) {\n vnode.ce(instance);\n }\n return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nconst setCurrentInstance = (instance) => {\n currentInstance = instance;\n instance.scope.on();\n};\nconst unsetCurrentInstance = () => {\n currentInstance && currentInstance.scope.off();\n currentInstance = null;\n};\nconst isBuiltInTag = /*#__PURE__*/ makeMap('slot,component');\nfunction validateComponentName(name, config) {\n const appIsNativeTag = config.isNativeTag || NO;\n if (isBuiltInTag(name) || appIsNativeTag(name)) {\n warn('Do not use built-in or reserved HTML elements as component id: ' + name);\n }\n}\nfunction isStatefulComponent(instance) {\n return instance.vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n isInSSRComponentSetup = isSSR;\n const { props, children } = instance.vnode;\n const isStateful = isStatefulComponent(instance);\n initProps(instance, props, isStateful, isSSR);\n initSlots(instance, children);\n const setupResult = isStateful\n ? setupStatefulComponent(instance, isSSR)\n : undefined;\n isInSSRComponentSetup = false;\n return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n var _a;\n const Component = instance.type;\n if ((process.env.NODE_ENV !== 'production')) {\n if (Component.name) {\n validateComponentName(Component.name, instance.appContext.config);\n }\n if (Component.components) {\n const names = Object.keys(Component.components);\n for (let i = 0; i < names.length; i++) {\n validateComponentName(names[i], instance.appContext.config);\n }\n }\n if (Component.directives) {\n const names = Object.keys(Component.directives);\n for (let i = 0; i < names.length; i++) {\n validateDirectiveName(names[i]);\n }\n }\n if (Component.compilerOptions && isRuntimeOnly()) {\n warn(`\"compilerOptions\" is only supported when using a build of Vue that ` +\n `includes the runtime compiler. Since you are using a runtime-only ` +\n `build, the options should be passed via your build tool config instead.`);\n }\n }\n // 0. create render proxy property access cache\n instance.accessCache = Object.create(null);\n // 1. create public instance / render proxy\n // also mark it raw so it's never observed\n instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n if ((process.env.NODE_ENV !== 'production')) {\n exposePropsOnRenderContext(instance);\n }\n // 2. call setup()\n const { setup } = Component;\n if (setup) {\n const setupContext = (instance.setupContext =\n setup.length > 1 ? createSetupContext(instance) : null);\n setCurrentInstance(instance);\n pauseTracking();\n const setupResult = callWithErrorHandling(setup, instance, 0 /* ErrorCodes.SETUP_FUNCTION */, [(process.env.NODE_ENV !== 'production') ? shallowReadonly(instance.props) : instance.props, setupContext]);\n resetTracking();\n unsetCurrentInstance();\n if (isPromise(setupResult)) {\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n if (isSSR) {\n // return the promise so server-renderer can wait on it\n return setupResult\n .then((resolvedResult) => {\n handleSetupResult(instance, resolvedResult, isSSR);\n })\n .catch(e => {\n handleError(e, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n });\n }\n else {\n // async setup returned Promise.\n // bail here and wait for re-entry.\n instance.asyncDep = setupResult;\n if ((process.env.NODE_ENV !== 'production') && !instance.suspense) {\n const name = (_a = Component.name) !== null && _a !== void 0 ? _a : 'Anonymous';\n warn(`Component <${name}>: setup function returned a promise, but no ` +\n `<Suspense> boundary was found in the parent component tree. ` +\n `A component with async setup() must be nested in a <Suspense> ` +\n `in order to be rendered.`);\n }\n }\n }\n else {\n handleSetupResult(instance, setupResult, isSSR);\n }\n }\n else {\n finishComponentSetup(instance, isSSR);\n }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n if (isFunction(setupResult)) {\n // setup returned an inline render function\n if (instance.type.__ssrInlineRender) {\n // when the function's name is `ssrRender` (compiled by SFC inline mode),\n // set it as ssrRender instead.\n instance.ssrRender = setupResult;\n }\n else {\n instance.render = setupResult;\n }\n }\n else if (isObject(setupResult)) {\n if ((process.env.NODE_ENV !== 'production') && isVNode(setupResult)) {\n warn(`setup() should not return VNodes directly - ` +\n `return a render function instead.`);\n }\n // setup returned bindings.\n // assuming a render function compiled from template is present.\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.devtoolsRawSetupState = setupResult;\n }\n instance.setupState = proxyRefs(setupResult);\n if ((process.env.NODE_ENV !== 'production')) {\n exposeSetupStateOnRenderContext(instance);\n }\n }\n else if ((process.env.NODE_ENV !== 'production') && setupResult !== undefined) {\n warn(`setup() should return an object. Received: ${setupResult === null ? 'null' : typeof setupResult}`);\n }\n finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\n/**\n * For runtime-dom to register the compiler.\n * Note the exported method uses any to avoid d.ts relying on the compiler types.\n */\nfunction registerRuntimeCompiler(_compile) {\n compile = _compile;\n installWithProxy = i => {\n if (i.render._rc) {\n i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n }\n };\n}\n// dev only\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n const Component = instance.type;\n // template / render function normalization\n // could be already set when returned from setup()\n if (!instance.render) {\n // only do on-the-fly compile if not in SSR - SSR on-the-fly compilation\n // is done by server-renderer\n if (!isSSR && compile && !Component.render) {\n const template = Component.template ||\n resolveMergedOptions(instance).template;\n if (template) {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `compile`);\n }\n const { isCustomElement, compilerOptions } = instance.appContext.config;\n const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n const finalCompilerOptions = extend(extend({\n isCustomElement,\n delimiters\n }, compilerOptions), componentCompilerOptions);\n Component.render = compile(template, finalCompilerOptions);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `compile`);\n }\n }\n }\n instance.render = (Component.render || NOOP);\n // for runtime-compiled render functions using `with` blocks, the render\n // proxy used needs a different `has` handler which is more performant and\n // also only allows a whitelist of globals to fallthrough.\n if (installWithProxy) {\n installWithProxy(instance);\n }\n }\n // support for 2.x options\n if (__VUE_OPTIONS_API__ && !(false )) {\n setCurrentInstance(instance);\n pauseTracking();\n applyOptions(instance);\n resetTracking();\n unsetCurrentInstance();\n }\n // warn missing template/render\n // the runtime compilation of template in SSR is done by server-render\n if ((process.env.NODE_ENV !== 'production') && !Component.render && instance.render === NOOP && !isSSR) {\n /* istanbul ignore if */\n if (!compile && Component.template) {\n warn(`Component provided template option but ` +\n `runtime compilation is not supported in this build of Vue.` +\n (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".`\n ) /* should not happen */);\n }\n else {\n warn(`Component is missing template or render function.`);\n }\n }\n}\nfunction createAttrsProxy(instance) {\n return new Proxy(instance.attrs, (process.env.NODE_ENV !== 'production')\n ? {\n get(target, key) {\n markAttrsAccessed();\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n },\n set() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n },\n deleteProperty() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n }\n }\n : {\n get(target, key) {\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n }\n });\n}\nfunction createSetupContext(instance) {\n const expose = exposed => {\n if ((process.env.NODE_ENV !== 'production') && instance.exposed) {\n warn(`expose() should be called only once per setup().`);\n }\n instance.exposed = exposed || {};\n };\n let attrs;\n if ((process.env.NODE_ENV !== 'production')) {\n // We use getters in dev in case libs like test-utils overwrite instance\n // properties (overwrites should not be done in prod)\n return Object.freeze({\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n get slots() {\n return shallowReadonly(instance.slots);\n },\n get emit() {\n return (event, ...args) => instance.emit(event, ...args);\n },\n expose\n });\n }\n else {\n return {\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n slots: instance.slots,\n emit: instance.emit,\n expose\n };\n }\n}\nfunction getExposeProxy(instance) {\n if (instance.exposed) {\n return (instance.exposeProxy ||\n (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n get(target, key) {\n if (key in target) {\n return target[key];\n }\n else if (key in publicPropertiesMap) {\n return publicPropertiesMap[key](instance);\n }\n },\n has(target, key) {\n return key in target || key in publicPropertiesMap;\n }\n })));\n }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction(Component)\n ? Component.displayName || Component.name\n : Component.name || (includeInferred && Component.__name);\n}\n/* istanbul ignore next */\nfunction formatComponentName(instance, Component, isRoot = false) {\n let name = getComponentName(Component);\n if (!name && Component.__file) {\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n if (match) {\n name = match[1];\n }\n }\n if (!name && instance && instance.parent) {\n // try to infer the name based on reverse resolution\n const inferFromRegistry = (registry) => {\n for (const key in registry) {\n if (registry[key] === Component) {\n return key;\n }\n }\n };\n name =\n inferFromRegistry(instance.components ||\n instance.parent.type.components) || inferFromRegistry(instance.appContext.components);\n }\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n return isFunction(value) && '__vccOpts' in value;\n}\n\nconst computed = ((getterOrOptions, debugOptions) => {\n // @ts-ignore\n return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n});\n\n// dev only\nconst warnRuntimeUsage = (method) => warn(`${method}() is a compiler-hint helper that is only usable inside ` +\n `<script setup> of a single file component. Its arguments should be ` +\n `compiled away and passing it at runtime has no effect.`);\n// implementation\nfunction defineProps() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineProps`);\n }\n return null;\n}\n// implementation\nfunction defineEmits() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineEmits`);\n }\n return null;\n}\n/**\n * Vue `<script setup>` compiler macro for declaring a component's exposed\n * instance properties when it is accessed by a parent component via template\n * refs.\n *\n * `<script setup>` components are closed by default - i.e. variables inside\n * the `<script setup>` scope is not exposed to parent unless explicitly exposed\n * via `defineExpose`.\n *\n * This is only usable inside `<script setup>`, is compiled away in the\n * output and should **not** be actually called at runtime.\n */\nfunction defineExpose(exposed) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineExpose`);\n }\n}\n/**\n * Vue `<script setup>` compiler macro for providing props default values when\n * using type-based `defineProps` declaration.\n *\n * Example usage:\n * ```ts\n * withDefaults(defineProps<{\n * size?: number\n * labels?: string[]\n * }>(), {\n * size: 3,\n * labels: () => ['default label']\n * })\n * ```\n *\n * This is only usable inside `<script setup>`, is compiled away in the output\n * and should **not** be actually called at runtime.\n */\nfunction withDefaults(props, defaults) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`withDefaults`);\n }\n return null;\n}\nfunction useSlots() {\n return getContext().slots;\n}\nfunction useAttrs() {\n return getContext().attrs;\n}\nfunction getContext() {\n const i = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !i) {\n warn(`useContext() called without active instance.`);\n }\n return i.setupContext || (i.setupContext = createSetupContext(i));\n}\n/**\n * Runtime helper for merging default declarations. Imported by compiled code\n * only.\n * @internal\n */\nfunction mergeDefaults(raw, defaults) {\n const props = isArray(raw)\n ? raw.reduce((normalized, p) => ((normalized[p] = {}), normalized), {})\n : raw;\n for (const key in defaults) {\n const opt = props[key];\n if (opt) {\n if (isArray(opt) || isFunction(opt)) {\n props[key] = { type: opt, default: defaults[key] };\n }\n else {\n opt.default = defaults[key];\n }\n }\n else if (opt === null) {\n props[key] = { default: defaults[key] };\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`props default key \"${key}\" has no corresponding declaration.`);\n }\n }\n return props;\n}\n/**\n * Used to create a proxy for the rest element when destructuring props with\n * defineProps().\n * @internal\n */\nfunction createPropsRestProxy(props, excludedKeys) {\n const ret = {};\n for (const key in props) {\n if (!excludedKeys.includes(key)) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n get: () => props[key]\n });\n }\n }\n return ret;\n}\n/**\n * `<script setup>` helper for persisting the current instance context over\n * async/await flows.\n *\n * `@vue/compiler-sfc` converts the following:\n *\n * ```ts\n * const x = await foo()\n * ```\n *\n * into:\n *\n * ```ts\n * let __temp, __restore\n * const x = (([__temp, __restore] = withAsyncContext(() => foo())),__temp=await __temp,__restore(),__temp)\n * ```\n * @internal\n */\nfunction withAsyncContext(getAwaitable) {\n const ctx = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !ctx) {\n warn(`withAsyncContext called without active current instance. ` +\n `This is likely a bug.`);\n }\n let awaitable = getAwaitable();\n unsetCurrentInstance();\n if (isPromise(awaitable)) {\n awaitable = awaitable.catch(e => {\n setCurrentInstance(ctx);\n throw e;\n });\n }\n return [awaitable, () => setCurrentInstance(ctx)];\n}\n\n// Actual implementation\nfunction h(type, propsOrChildren, children) {\n const l = arguments.length;\n if (l === 2) {\n if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n // single vnode without props\n if (isVNode(propsOrChildren)) {\n return createVNode(type, null, [propsOrChildren]);\n }\n // props without children\n return createVNode(type, propsOrChildren);\n }\n else {\n // omit props\n return createVNode(type, null, propsOrChildren);\n }\n }\n else {\n if (l > 3) {\n children = Array.prototype.slice.call(arguments, 2);\n }\n else if (l === 3 && isVNode(children)) {\n children = [children];\n }\n return createVNode(type, propsOrChildren, children);\n }\n}\n\nconst ssrContextKey = Symbol((process.env.NODE_ENV !== 'production') ? `ssrContext` : ``);\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Server rendering context not provided. Make sure to only call ` +\n `useSSRContext() conditionally in the server build.`);\n }\n return ctx;\n }\n};\n\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\n\nfunction initCustomFormatter() {\n /* eslint-disable no-restricted-globals */\n if (!(process.env.NODE_ENV !== 'production') || typeof window === 'undefined') {\n return;\n }\n const vueStyle = { style: 'color:#3ba776' };\n const numberStyle = { style: 'color:#0b1bc9' };\n const stringStyle = { style: 'color:#b62e24' };\n const keywordStyle = { style: 'color:#9d288c' };\n // custom formatter for Chrome\n // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html\n const formatter = {\n header(obj) {\n // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup\n if (!isObject(obj)) {\n return null;\n }\n if (obj.__isVue) {\n return ['div', vueStyle, `VueInstance`];\n }\n else if (isRef(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, genRefFlag(obj)],\n '<',\n formatValue(obj.value),\n `>`\n ];\n }\n else if (isReactive(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],\n '<',\n formatValue(obj),\n `>${isReadonly(obj) ? ` (readonly)` : ``}`\n ];\n }\n else if (isReadonly(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],\n '<',\n formatValue(obj),\n '>'\n ];\n }\n return null;\n },\n hasBody(obj) {\n return obj && obj.__isVue;\n },\n body(obj) {\n if (obj && obj.__isVue) {\n return [\n 'div',\n {},\n ...formatInstance(obj.$)\n ];\n }\n }\n };\n function formatInstance(instance) {\n const blocks = [];\n if (instance.type.props && instance.props) {\n blocks.push(createInstanceBlock('props', toRaw(instance.props)));\n }\n if (instance.setupState !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('setup', instance.setupState));\n }\n if (instance.data !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('data', toRaw(instance.data)));\n }\n const computed = extractKeys(instance, 'computed');\n if (computed) {\n blocks.push(createInstanceBlock('computed', computed));\n }\n const injected = extractKeys(instance, 'inject');\n if (injected) {\n blocks.push(createInstanceBlock('injected', injected));\n }\n blocks.push([\n 'div',\n {},\n [\n 'span',\n {\n style: keywordStyle.style + ';opacity:0.66'\n },\n '$ (internal): '\n ],\n ['object', { object: instance }]\n ]);\n return blocks;\n }\n function createInstanceBlock(type, target) {\n target = extend({}, target);\n if (!Object.keys(target).length) {\n return ['span', {}];\n }\n return [\n 'div',\n { style: 'line-height:1.25em;margin-bottom:0.6em' },\n [\n 'div',\n {\n style: 'color:#476582'\n },\n type\n ],\n [\n 'div',\n {\n style: 'padding-left:1.25em'\n },\n ...Object.keys(target).map(key => {\n return [\n 'div',\n {},\n ['span', keywordStyle, key + ': '],\n formatValue(target[key], false)\n ];\n })\n ]\n ];\n }\n function formatValue(v, asRaw = true) {\n if (typeof v === 'number') {\n return ['span', numberStyle, v];\n }\n else if (typeof v === 'string') {\n return ['span', stringStyle, JSON.stringify(v)];\n }\n else if (typeof v === 'boolean') {\n return ['span', keywordStyle, v];\n }\n else if (isObject(v)) {\n return ['object', { object: asRaw ? toRaw(v) : v }];\n }\n else {\n return ['span', stringStyle, String(v)];\n }\n }\n function extractKeys(instance, type) {\n const Comp = instance.type;\n if (isFunction(Comp)) {\n return;\n }\n const extracted = {};\n for (const key in instance.ctx) {\n if (isKeyOfType(Comp, key, type)) {\n extracted[key] = instance.ctx[key];\n }\n }\n return extracted;\n }\n function isKeyOfType(Comp, key, type) {\n const opts = Comp[type];\n if ((isArray(opts) && opts.includes(key)) ||\n (isObject(opts) && key in opts)) {\n return true;\n }\n if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n return true;\n }\n if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) {\n return true;\n }\n }\n function genRefFlag(v) {\n if (isShallow(v)) {\n return `ShallowRef`;\n }\n if (v.effect) {\n return `ComputedRef`;\n }\n return `Ref`;\n }\n if (window.devtoolsFormatters) {\n window.devtoolsFormatters.push(formatter);\n }\n else {\n window.devtoolsFormatters = [formatter];\n }\n}\n\nfunction withMemo(memo, render, cache, index) {\n const cached = cache[index];\n if (cached && isMemoSame(cached, memo)) {\n return cached;\n }\n const ret = render();\n // shallow clone\n ret.memo = memo.slice();\n return (cache[index] = ret);\n}\nfunction isMemoSame(cached, memo) {\n const prev = cached.memo;\n if (prev.length != memo.length) {\n return false;\n }\n for (let i = 0; i < prev.length; i++) {\n if (hasChanged(prev[i], memo[i])) {\n return false;\n }\n }\n // make sure to let parent block track it when returning cached\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(cached);\n }\n return true;\n}\n\n// Core API ------------------------------------------------------------------\nconst version = \"3.2.45\";\nconst _ssrUtils = {\n createComponentInstance,\n setupComponent,\n renderComponentRoot,\n setCurrentRenderingInstance,\n isVNode,\n normalizeVNode\n};\n/**\n * SSR utils for \\@vue/server-renderer. Only exposed in ssr-possible builds.\n * @internal\n */\nconst ssrUtils = (_ssrUtils );\n/**\n * @internal only exposed in compat builds\n */\nconst resolveFilter = null;\n/**\n * @internal only exposed in compat builds.\n */\nconst compatUtils = (null);\n\nexport { BaseTransition, Comment, Fragment, KeepAlive, Static, Suspense, Teleport, Text, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useSSRContext, useSlots, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n","import { warn, camelize, callWithAsyncErrorHandling, defineComponent, nextTick, createVNode, getCurrentInstance, watchPostEffect, onMounted, onUnmounted, Fragment, Static, h, BaseTransition, useTransitionState, onUpdated, toRaw, getTransitionRawChildren, setTransitionHooks, resolveTransitionHooks, createRenderer, isRuntimeOnly, createHydrationRenderer } from '@vue/runtime-core';\nexport * from '@vue/runtime-core';\nimport { isString, isArray, hyphenate, capitalize, isSpecialBooleanAttr, includeBooleanAttr, isOn, isModelListener, isFunction, camelize as camelize$1, toNumber, extend, EMPTY_OBJ, isObject, invokeArrayFns, looseIndexOf, isSet, looseEqual, isHTMLTag, isSVGTag } from '@vue/shared';\n\nconst svgNS = 'http://www.w3.org/2000/svg';\nconst doc = (typeof document !== 'undefined' ? document : null);\nconst templateContainer = doc && /*#__PURE__*/ doc.createElement('template');\nconst nodeOps = {\n insert: (child, parent, anchor) => {\n parent.insertBefore(child, anchor || null);\n },\n remove: child => {\n const parent = child.parentNode;\n if (parent) {\n parent.removeChild(child);\n }\n },\n createElement: (tag, isSVG, is, props) => {\n const el = isSVG\n ? doc.createElementNS(svgNS, tag)\n : doc.createElement(tag, is ? { is } : undefined);\n if (tag === 'select' && props && props.multiple != null) {\n el.setAttribute('multiple', props.multiple);\n }\n return el;\n },\n createText: text => doc.createTextNode(text),\n createComment: text => doc.createComment(text),\n setText: (node, text) => {\n node.nodeValue = text;\n },\n setElementText: (el, text) => {\n el.textContent = text;\n },\n parentNode: node => node.parentNode,\n nextSibling: node => node.nextSibling,\n querySelector: selector => doc.querySelector(selector),\n setScopeId(el, id) {\n el.setAttribute(id, '');\n },\n // __UNSAFE__\n // Reason: innerHTML.\n // Static content here can only come from compiled templates.\n // As long as the user only uses trusted templates, this is safe.\n insertStaticContent(content, parent, anchor, isSVG, start, end) {\n // <parent> before | first ... last | anchor </parent>\n const before = anchor ? anchor.previousSibling : parent.lastChild;\n // #5308 can only take cached path if:\n // - has a single root node\n // - nextSibling info is still available\n if (start && (start === end || start.nextSibling)) {\n // cached\n while (true) {\n parent.insertBefore(start.cloneNode(true), anchor);\n if (start === end || !(start = start.nextSibling))\n break;\n }\n }\n else {\n // fresh insert\n templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;\n const template = templateContainer.content;\n if (isSVG) {\n // remove outer svg wrapper\n const wrapper = template.firstChild;\n while (wrapper.firstChild) {\n template.appendChild(wrapper.firstChild);\n }\n template.removeChild(wrapper);\n }\n parent.insertBefore(template, anchor);\n }\n return [\n // first\n before ? before.nextSibling : parent.firstChild,\n // last\n anchor ? anchor.previousSibling : parent.lastChild\n ];\n }\n};\n\n// compiler should normalize class + :class bindings on the same element\n// into a single binding ['staticClass', dynamic]\nfunction patchClass(el, value, isSVG) {\n // directly setting className should be faster than setAttribute in theory\n // if this is an element during a transition, take the temporary transition\n // classes into account.\n const transitionClasses = el._vtc;\n if (transitionClasses) {\n value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(' ');\n }\n if (value == null) {\n el.removeAttribute('class');\n }\n else if (isSVG) {\n el.setAttribute('class', value);\n }\n else {\n el.className = value;\n }\n}\n\nfunction patchStyle(el, prev, next) {\n const style = el.style;\n const isCssString = isString(next);\n if (next && !isCssString) {\n for (const key in next) {\n setStyle(style, key, next[key]);\n }\n if (prev && !isString(prev)) {\n for (const key in prev) {\n if (next[key] == null) {\n setStyle(style, key, '');\n }\n }\n }\n }\n else {\n const currentDisplay = style.display;\n if (isCssString) {\n if (prev !== next) {\n style.cssText = next;\n }\n }\n else if (prev) {\n el.removeAttribute('style');\n }\n // indicates that the `display` of the element is controlled by `v-show`,\n // so we always keep the current `display` value regardless of the `style`\n // value, thus handing over control to `v-show`.\n if ('_vod' in el) {\n style.display = currentDisplay;\n }\n }\n}\nconst semicolonRE = /[^\\\\];\\s*$/;\nconst importantRE = /\\s*!important$/;\nfunction setStyle(style, name, val) {\n if (isArray(val)) {\n val.forEach(v => setStyle(style, name, v));\n }\n else {\n if (val == null)\n val = '';\n if ((process.env.NODE_ENV !== 'production')) {\n if (semicolonRE.test(val)) {\n warn(`Unexpected semicolon at the end of '${name}' style value: '${val}'`);\n }\n }\n if (name.startsWith('--')) {\n // custom property definition\n style.setProperty(name, val);\n }\n else {\n const prefixed = autoPrefix(style, name);\n if (importantRE.test(val)) {\n // !important\n style.setProperty(hyphenate(prefixed), val.replace(importantRE, ''), 'important');\n }\n else {\n style[prefixed] = val;\n }\n }\n }\n}\nconst prefixes = ['Webkit', 'Moz', 'ms'];\nconst prefixCache = {};\nfunction autoPrefix(style, rawName) {\n const cached = prefixCache[rawName];\n if (cached) {\n return cached;\n }\n let name = camelize(rawName);\n if (name !== 'filter' && name in style) {\n return (prefixCache[rawName] = name);\n }\n name = capitalize(name);\n for (let i = 0; i < prefixes.length; i++) {\n const prefixed = prefixes[i] + name;\n if (prefixed in style) {\n return (prefixCache[rawName] = prefixed);\n }\n }\n return rawName;\n}\n\nconst xlinkNS = 'http://www.w3.org/1999/xlink';\nfunction patchAttr(el, key, value, isSVG, instance) {\n if (isSVG && key.startsWith('xlink:')) {\n if (value == null) {\n el.removeAttributeNS(xlinkNS, key.slice(6, key.length));\n }\n else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n }\n else {\n // note we are only checking boolean attributes that don't have a\n // corresponding dom prop of the same name here.\n const isBoolean = isSpecialBooleanAttr(key);\n if (value == null || (isBoolean && !includeBooleanAttr(value))) {\n el.removeAttribute(key);\n }\n else {\n el.setAttribute(key, isBoolean ? '' : value);\n }\n }\n}\n\n// __UNSAFE__\n// functions. The user is responsible for using them with only trusted content.\nfunction patchDOMProp(el, key, value, \n// the following args are passed only due to potential innerHTML/textContent\n// overriding existing VNodes, in which case the old tree must be properly\n// unmounted.\nprevChildren, parentComponent, parentSuspense, unmountChildren) {\n if (key === 'innerHTML' || key === 'textContent') {\n if (prevChildren) {\n unmountChildren(prevChildren, parentComponent, parentSuspense);\n }\n el[key] = value == null ? '' : value;\n return;\n }\n if (key === 'value' &&\n el.tagName !== 'PROGRESS' &&\n // custom elements may use _value internally\n !el.tagName.includes('-')) {\n // store value as _value as well since\n // non-string values will be stringified.\n el._value = value;\n const newValue = value == null ? '' : value;\n if (el.value !== newValue ||\n // #4956: always set for OPTION elements because its value falls back to\n // textContent if no value attribute is present. And setting .value for\n // OPTION has no side effect\n el.tagName === 'OPTION') {\n el.value = newValue;\n }\n if (value == null) {\n el.removeAttribute(key);\n }\n return;\n }\n let needRemove = false;\n if (value === '' || value == null) {\n const type = typeof el[key];\n if (type === 'boolean') {\n // e.g. <select multiple> compiles to { multiple: '' }\n value = includeBooleanAttr(value);\n }\n else if (value == null && type === 'string') {\n // e.g. <div :id=\"null\">\n value = '';\n needRemove = true;\n }\n else if (type === 'number') {\n // e.g. <img :width=\"null\">\n value = 0;\n needRemove = true;\n }\n }\n // some properties perform value validation and throw,\n // some properties has getter, no setter, will error in 'use strict'\n // eg. <select :type=\"null\"></select> <select :willValidate=\"null\"></select>\n try {\n el[key] = value;\n }\n catch (e) {\n // do not warn if value is auto-coerced from nullish values\n if ((process.env.NODE_ENV !== 'production') && !needRemove) {\n warn(`Failed setting prop \"${key}\" on <${el.tagName.toLowerCase()}>: ` +\n `value ${value} is invalid.`, e);\n }\n }\n needRemove && el.removeAttribute(key);\n}\n\nfunction addEventListener(el, event, handler, options) {\n el.addEventListener(event, handler, options);\n}\nfunction removeEventListener(el, event, handler, options) {\n el.removeEventListener(event, handler, options);\n}\nfunction patchEvent(el, rawName, prevValue, nextValue, instance = null) {\n // vei = vue event invokers\n const invokers = el._vei || (el._vei = {});\n const existingInvoker = invokers[rawName];\n if (nextValue && existingInvoker) {\n // patch\n existingInvoker.value = nextValue;\n }\n else {\n const [name, options] = parseName(rawName);\n if (nextValue) {\n // add\n const invoker = (invokers[rawName] = createInvoker(nextValue, instance));\n addEventListener(el, name, invoker, options);\n }\n else if (existingInvoker) {\n // remove\n removeEventListener(el, name, existingInvoker, options);\n invokers[rawName] = undefined;\n }\n }\n}\nconst optionsModifierRE = /(?:Once|Passive|Capture)$/;\nfunction parseName(name) {\n let options;\n if (optionsModifierRE.test(name)) {\n options = {};\n let m;\n while ((m = name.match(optionsModifierRE))) {\n name = name.slice(0, name.length - m[0].length);\n options[m[0].toLowerCase()] = true;\n }\n }\n const event = name[2] === ':' ? name.slice(3) : hyphenate(name.slice(2));\n return [event, options];\n}\n// To avoid the overhead of repeatedly calling Date.now(), we cache\n// and use the same timestamp for all event listeners attached in the same tick.\nlet cachedNow = 0;\nconst p = /*#__PURE__*/ Promise.resolve();\nconst getNow = () => cachedNow || (p.then(() => (cachedNow = 0)), (cachedNow = Date.now()));\nfunction createInvoker(initialValue, instance) {\n const invoker = (e) => {\n // async edge case vuejs/vue#6566\n // inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // this no longer happens for templates in Vue 3, but could still be\n // theoretically possible for hand-written render functions.\n // the solution: we save the timestamp when a handler is attached,\n // and also attach the timestamp to any event that was handled by vue\n // for the first time (to avoid inconsistent event timestamp implementations\n // or events fired from iframes, e.g. #2513)\n // The handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (!e._vts) {\n e._vts = Date.now();\n }\n else if (e._vts <= invoker.attached) {\n return;\n }\n callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5 /* ErrorCodes.NATIVE_EVENT_HANDLER */, [e]);\n };\n invoker.value = initialValue;\n invoker.attached = getNow();\n return invoker;\n}\nfunction patchStopImmediatePropagation(e, value) {\n if (isArray(value)) {\n const originalStop = e.stopImmediatePropagation;\n e.stopImmediatePropagation = () => {\n originalStop.call(e);\n e._stopped = true;\n };\n return value.map(fn => (e) => !e._stopped && fn && fn(e));\n }\n else {\n return value;\n }\n}\n\nconst nativeOnRE = /^on[a-z]/;\nconst patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {\n if (key === 'class') {\n patchClass(el, nextValue, isSVG);\n }\n else if (key === 'style') {\n patchStyle(el, prevValue, nextValue);\n }\n else if (isOn(key)) {\n // ignore v-model listeners\n if (!isModelListener(key)) {\n patchEvent(el, key, prevValue, nextValue, parentComponent);\n }\n }\n else if (key[0] === '.'\n ? ((key = key.slice(1)), true)\n : key[0] === '^'\n ? ((key = key.slice(1)), false)\n : shouldSetAsProp(el, key, nextValue, isSVG)) {\n patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);\n }\n else {\n // special case for <input v-model type=\"checkbox\"> with\n // :true-value & :false-value\n // store value as dom properties since non-string values will be\n // stringified.\n if (key === 'true-value') {\n el._trueValue = nextValue;\n }\n else if (key === 'false-value') {\n el._falseValue = nextValue;\n }\n patchAttr(el, key, nextValue, isSVG);\n }\n};\nfunction shouldSetAsProp(el, key, value, isSVG) {\n if (isSVG) {\n // most keys must be set as attribute on svg elements to work\n // ...except innerHTML & textContent\n if (key === 'innerHTML' || key === 'textContent') {\n return true;\n }\n // or native onclick with function values\n if (key in el && nativeOnRE.test(key) && isFunction(value)) {\n return true;\n }\n return false;\n }\n // these are enumerated attrs, however their corresponding DOM properties\n // are actually booleans - this leads to setting it with a string \"false\"\n // value leading it to be coerced to `true`, so we need to always treat\n // them as attributes.\n // Note that `contentEditable` doesn't have this problem: its DOM\n // property is also enumerated string values.\n if (key === 'spellcheck' || key === 'draggable' || key === 'translate') {\n return false;\n }\n // #1787, #2840 form property on form elements is readonly and must be set as\n // attribute.\n if (key === 'form') {\n return false;\n }\n // #1526 <input list> must be set as attribute\n if (key === 'list' && el.tagName === 'INPUT') {\n return false;\n }\n // #2766 <textarea type> must be set as attribute\n if (key === 'type' && el.tagName === 'TEXTAREA') {\n return false;\n }\n // native onclick with string value, must be set as attribute\n if (nativeOnRE.test(key) && isString(value)) {\n return false;\n }\n return key in el;\n}\n\nfunction defineCustomElement(options, hydrate) {\n const Comp = defineComponent(options);\n class VueCustomElement extends VueElement {\n constructor(initialProps) {\n super(Comp, initialProps, hydrate);\n }\n }\n VueCustomElement.def = Comp;\n return VueCustomElement;\n}\nconst defineSSRCustomElement = ((options) => {\n // @ts-ignore\n return defineCustomElement(options, hydrate);\n});\nconst BaseClass = (typeof HTMLElement !== 'undefined' ? HTMLElement : class {\n});\nclass VueElement extends BaseClass {\n constructor(_def, _props = {}, hydrate) {\n super();\n this._def = _def;\n this._props = _props;\n /**\n * @internal\n */\n this._instance = null;\n this._connected = false;\n this._resolved = false;\n this._numberProps = null;\n if (this.shadowRoot && hydrate) {\n hydrate(this._createVNode(), this.shadowRoot);\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && this.shadowRoot) {\n warn(`Custom element has pre-rendered declarative shadow root but is not ` +\n `defined as hydratable. Use \\`defineSSRCustomElement\\`.`);\n }\n this.attachShadow({ mode: 'open' });\n if (!this._def.__asyncLoader) {\n // for sync component defs we can immediately resolve props\n this._resolveProps(this._def);\n }\n }\n }\n connectedCallback() {\n this._connected = true;\n if (!this._instance) {\n if (this._resolved) {\n this._update();\n }\n else {\n this._resolveDef();\n }\n }\n }\n disconnectedCallback() {\n this._connected = false;\n nextTick(() => {\n if (!this._connected) {\n render(null, this.shadowRoot);\n this._instance = null;\n }\n });\n }\n /**\n * resolve inner component definition (handle possible async component)\n */\n _resolveDef() {\n this._resolved = true;\n // set initial attrs\n for (let i = 0; i < this.attributes.length; i++) {\n this._setAttr(this.attributes[i].name);\n }\n // watch future attr changes\n new MutationObserver(mutations => {\n for (const m of mutations) {\n this._setAttr(m.attributeName);\n }\n }).observe(this, { attributes: true });\n const resolve = (def, isAsync = false) => {\n const { props, styles } = def;\n // cast Number-type props set before resolve\n let numberProps;\n if (props && !isArray(props)) {\n for (const key in props) {\n const opt = props[key];\n if (opt === Number || (opt && opt.type === Number)) {\n if (key in this._props) {\n this._props[key] = toNumber(this._props[key]);\n }\n (numberProps || (numberProps = Object.create(null)))[camelize$1(key)] = true;\n }\n }\n }\n this._numberProps = numberProps;\n if (isAsync) {\n // defining getter/setters on prototype\n // for sync defs, this already happened in the constructor\n this._resolveProps(def);\n }\n // apply CSS\n this._applyStyles(styles);\n // initial render\n this._update();\n };\n const asyncDef = this._def.__asyncLoader;\n if (asyncDef) {\n asyncDef().then(def => resolve(def, true));\n }\n else {\n resolve(this._def);\n }\n }\n _resolveProps(def) {\n const { props } = def;\n const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});\n // check if there are props set pre-upgrade or connect\n for (const key of Object.keys(this)) {\n if (key[0] !== '_' && declaredPropKeys.includes(key)) {\n this._setProp(key, this[key], true, false);\n }\n }\n // defining getter/setters on prototype\n for (const key of declaredPropKeys.map(camelize$1)) {\n Object.defineProperty(this, key, {\n get() {\n return this._getProp(key);\n },\n set(val) {\n this._setProp(key, val);\n }\n });\n }\n }\n _setAttr(key) {\n let value = this.getAttribute(key);\n const camelKey = camelize$1(key);\n if (this._numberProps && this._numberProps[camelKey]) {\n value = toNumber(value);\n }\n this._setProp(camelKey, value, false);\n }\n /**\n * @internal\n */\n _getProp(key) {\n return this._props[key];\n }\n /**\n * @internal\n */\n _setProp(key, val, shouldReflect = true, shouldUpdate = true) {\n if (val !== this._props[key]) {\n this._props[key] = val;\n if (shouldUpdate && this._instance) {\n this._update();\n }\n // reflect\n if (shouldReflect) {\n if (val === true) {\n this.setAttribute(hyphenate(key), '');\n }\n else if (typeof val === 'string' || typeof val === 'number') {\n this.setAttribute(hyphenate(key), val + '');\n }\n else if (!val) {\n this.removeAttribute(hyphenate(key));\n }\n }\n }\n }\n _update() {\n render(this._createVNode(), this.shadowRoot);\n }\n _createVNode() {\n const vnode = createVNode(this._def, extend({}, this._props));\n if (!this._instance) {\n vnode.ce = instance => {\n this._instance = instance;\n instance.isCE = true;\n // HMR\n if ((process.env.NODE_ENV !== 'production')) {\n instance.ceReload = newStyles => {\n // always reset styles\n if (this._styles) {\n this._styles.forEach(s => this.shadowRoot.removeChild(s));\n this._styles.length = 0;\n }\n this._applyStyles(newStyles);\n this._instance = null;\n this._update();\n };\n }\n const dispatch = (event, args) => {\n this.dispatchEvent(new CustomEvent(event, {\n detail: args\n }));\n };\n // intercept emit\n instance.emit = (event, ...args) => {\n // dispatch both the raw and hyphenated versions of an event\n // to match Vue behavior\n dispatch(event, args);\n if (hyphenate(event) !== event) {\n dispatch(hyphenate(event), args);\n }\n };\n // locate nearest Vue custom element parent for provide/inject\n let parent = this;\n while ((parent =\n parent && (parent.parentNode || parent.host))) {\n if (parent instanceof VueElement) {\n instance.parent = parent._instance;\n instance.provides = parent._instance.provides;\n break;\n }\n }\n };\n }\n return vnode;\n }\n _applyStyles(styles) {\n if (styles) {\n styles.forEach(css => {\n const s = document.createElement('style');\n s.textContent = css;\n this.shadowRoot.appendChild(s);\n // record for HMR\n if ((process.env.NODE_ENV !== 'production')) {\n (this._styles || (this._styles = [])).push(s);\n }\n });\n }\n }\n}\n\nfunction useCssModule(name = '$style') {\n /* istanbul ignore else */\n {\n const instance = getCurrentInstance();\n if (!instance) {\n (process.env.NODE_ENV !== 'production') && warn(`useCssModule must be called inside setup()`);\n return EMPTY_OBJ;\n }\n const modules = instance.type.__cssModules;\n if (!modules) {\n (process.env.NODE_ENV !== 'production') && warn(`Current instance does not have CSS modules injected.`);\n return EMPTY_OBJ;\n }\n const mod = modules[name];\n if (!mod) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Current instance does not have CSS module named \"${name}\".`);\n return EMPTY_OBJ;\n }\n return mod;\n }\n}\n\n/**\n * Runtime helper for SFC's CSS variable injection feature.\n * @private\n */\nfunction useCssVars(getter) {\n const instance = getCurrentInstance();\n /* istanbul ignore next */\n if (!instance) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`useCssVars is called without current active component instance.`);\n return;\n }\n const updateTeleports = (instance.ut = (vars = getter(instance.proxy)) => {\n Array.from(document.querySelectorAll(`[data-v-owner=\"${instance.uid}\"]`)).forEach(node => setVarsOnNode(node, vars));\n });\n const setVars = () => {\n const vars = getter(instance.proxy);\n setVarsOnVNode(instance.subTree, vars);\n updateTeleports(vars);\n };\n watchPostEffect(setVars);\n onMounted(() => {\n const ob = new MutationObserver(setVars);\n ob.observe(instance.subTree.el.parentNode, { childList: true });\n onUnmounted(() => ob.disconnect());\n });\n}\nfunction setVarsOnVNode(vnode, vars) {\n if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n const suspense = vnode.suspense;\n vnode = suspense.activeBranch;\n if (suspense.pendingBranch && !suspense.isHydrating) {\n suspense.effects.push(() => {\n setVarsOnVNode(suspense.activeBranch, vars);\n });\n }\n }\n // drill down HOCs until it's a non-component vnode\n while (vnode.component) {\n vnode = vnode.component.subTree;\n }\n if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && vnode.el) {\n setVarsOnNode(vnode.el, vars);\n }\n else if (vnode.type === Fragment) {\n vnode.children.forEach(c => setVarsOnVNode(c, vars));\n }\n else if (vnode.type === Static) {\n let { el, anchor } = vnode;\n while (el) {\n setVarsOnNode(el, vars);\n if (el === anchor)\n break;\n el = el.nextSibling;\n }\n }\n}\nfunction setVarsOnNode(el, vars) {\n if (el.nodeType === 1) {\n const style = el.style;\n for (const key in vars) {\n style.setProperty(`--${key}`, vars[key]);\n }\n }\n}\n\nconst TRANSITION = 'transition';\nconst ANIMATION = 'animation';\n// DOM Transition is a higher-order-component based on the platform-agnostic\n// base Transition component, with DOM-specific logic.\nconst Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);\nTransition.displayName = 'Transition';\nconst DOMTransitionPropsValidators = {\n name: String,\n type: String,\n css: {\n type: Boolean,\n default: true\n },\n duration: [String, Number, Object],\n enterFromClass: String,\n enterActiveClass: String,\n enterToClass: String,\n appearFromClass: String,\n appearActiveClass: String,\n appearToClass: String,\n leaveFromClass: String,\n leaveActiveClass: String,\n leaveToClass: String\n};\nconst TransitionPropsValidators = (Transition.props =\n /*#__PURE__*/ extend({}, BaseTransition.props, DOMTransitionPropsValidators));\n/**\n * #3227 Incoming hooks may be merged into arrays when wrapping Transition\n * with custom HOCs.\n */\nconst callHook = (hook, args = []) => {\n if (isArray(hook)) {\n hook.forEach(h => h(...args));\n }\n else if (hook) {\n hook(...args);\n }\n};\n/**\n * Check if a hook expects a callback (2nd arg), which means the user\n * intends to explicitly control the end of the transition.\n */\nconst hasExplicitCallback = (hook) => {\n return hook\n ? isArray(hook)\n ? hook.some(h => h.length > 1)\n : hook.length > 1\n : false;\n};\nfunction resolveTransitionProps(rawProps) {\n const baseProps = {};\n for (const key in rawProps) {\n if (!(key in DOMTransitionPropsValidators)) {\n baseProps[key] = rawProps[key];\n }\n }\n if (rawProps.css === false) {\n return baseProps;\n }\n const { name = 'v', type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;\n const durations = normalizeDuration(duration);\n const enterDuration = durations && durations[0];\n const leaveDuration = durations && durations[1];\n const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;\n const finishEnter = (el, isAppear, done) => {\n removeTransitionClass(el, isAppear ? appearToClass : enterToClass);\n removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);\n done && done();\n };\n const finishLeave = (el, done) => {\n el._isLeaving = false;\n removeTransitionClass(el, leaveFromClass);\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n done && done();\n };\n const makeEnterHook = (isAppear) => {\n return (el, done) => {\n const hook = isAppear ? onAppear : onEnter;\n const resolve = () => finishEnter(el, isAppear, done);\n callHook(hook, [el, resolve]);\n nextFrame(() => {\n removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);\n addTransitionClass(el, isAppear ? appearToClass : enterToClass);\n if (!hasExplicitCallback(hook)) {\n whenTransitionEnds(el, type, enterDuration, resolve);\n }\n });\n };\n };\n return extend(baseProps, {\n onBeforeEnter(el) {\n callHook(onBeforeEnter, [el]);\n addTransitionClass(el, enterFromClass);\n addTransitionClass(el, enterActiveClass);\n },\n onBeforeAppear(el) {\n callHook(onBeforeAppear, [el]);\n addTransitionClass(el, appearFromClass);\n addTransitionClass(el, appearActiveClass);\n },\n onEnter: makeEnterHook(false),\n onAppear: makeEnterHook(true),\n onLeave(el, done) {\n el._isLeaving = true;\n const resolve = () => finishLeave(el, done);\n addTransitionClass(el, leaveFromClass);\n // force reflow so *-leave-from classes immediately take effect (#2593)\n forceReflow();\n addTransitionClass(el, leaveActiveClass);\n nextFrame(() => {\n if (!el._isLeaving) {\n // cancelled\n return;\n }\n removeTransitionClass(el, leaveFromClass);\n addTransitionClass(el, leaveToClass);\n if (!hasExplicitCallback(onLeave)) {\n whenTransitionEnds(el, type, leaveDuration, resolve);\n }\n });\n callHook(onLeave, [el, resolve]);\n },\n onEnterCancelled(el) {\n finishEnter(el, false);\n callHook(onEnterCancelled, [el]);\n },\n onAppearCancelled(el) {\n finishEnter(el, true);\n callHook(onAppearCancelled, [el]);\n },\n onLeaveCancelled(el) {\n finishLeave(el);\n callHook(onLeaveCancelled, [el]);\n }\n });\n}\nfunction normalizeDuration(duration) {\n if (duration == null) {\n return null;\n }\n else if (isObject(duration)) {\n return [NumberOf(duration.enter), NumberOf(duration.leave)];\n }\n else {\n const n = NumberOf(duration);\n return [n, n];\n }\n}\nfunction NumberOf(val) {\n const res = toNumber(val);\n if ((process.env.NODE_ENV !== 'production'))\n validateDuration(res);\n return res;\n}\nfunction validateDuration(val) {\n if (typeof val !== 'number') {\n warn(`<transition> explicit duration is not a valid number - ` +\n `got ${JSON.stringify(val)}.`);\n }\n else if (isNaN(val)) {\n warn(`<transition> explicit duration is NaN - ` +\n 'the duration expression might be incorrect.');\n }\n}\nfunction addTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach(c => c && el.classList.add(c));\n (el._vtc ||\n (el._vtc = new Set())).add(cls);\n}\nfunction removeTransitionClass(el, cls) {\n cls.split(/\\s+/).forEach(c => c && el.classList.remove(c));\n const { _vtc } = el;\n if (_vtc) {\n _vtc.delete(cls);\n if (!_vtc.size) {\n el._vtc = undefined;\n }\n }\n}\nfunction nextFrame(cb) {\n requestAnimationFrame(() => {\n requestAnimationFrame(cb);\n });\n}\nlet endId = 0;\nfunction whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {\n const id = (el._endId = ++endId);\n const resolveIfNotStale = () => {\n if (id === el._endId) {\n resolve();\n }\n };\n if (explicitTimeout) {\n return setTimeout(resolveIfNotStale, explicitTimeout);\n }\n const { type, timeout, propCount } = getTransitionInfo(el, expectedType);\n if (!type) {\n return resolve();\n }\n const endEvent = type + 'end';\n let ended = 0;\n const end = () => {\n el.removeEventListener(endEvent, onEnd);\n resolveIfNotStale();\n };\n const onEnd = (e) => {\n if (e.target === el && ++ended >= propCount) {\n end();\n }\n };\n setTimeout(() => {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(endEvent, onEnd);\n}\nfunction getTransitionInfo(el, expectedType) {\n const styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n const getStyleProperties = (key) => (styles[key] || '').split(', ');\n const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);\n const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);\n const transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n const animationDelays = getStyleProperties(`${ANIMATION}Delay`);\n const animationDurations = getStyleProperties(`${ANIMATION}Duration`);\n const animationTimeout = getTimeout(animationDelays, animationDurations);\n let type = null;\n let timeout = 0;\n let propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n }\n else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n }\n else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type =\n timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n const hasTransform = type === TRANSITION &&\n /\\b(transform|all)(,|$)/.test(getStyleProperties(`${TRANSITION}Property`).toString());\n return {\n type,\n timeout,\n propCount,\n hasTransform\n };\n}\nfunction getTimeout(delays, durations) {\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));\n}\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer\n// numbers in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down\n// (i.e. acting as a floor function) causing unexpected behaviors\nfunction toMs(s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000;\n}\n// synchronously force layout to put elements into a certain state\nfunction forceReflow() {\n return document.body.offsetHeight;\n}\n\nconst positionMap = new WeakMap();\nconst newPositionMap = new WeakMap();\nconst TransitionGroupImpl = {\n name: 'TransitionGroup',\n props: /*#__PURE__*/ extend({}, TransitionPropsValidators, {\n tag: String,\n moveClass: String\n }),\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevChildren;\n let children;\n onUpdated(() => {\n // children is guaranteed to exist after initial render\n if (!prevChildren.length) {\n return;\n }\n const moveClass = props.moveClass || `${props.name || 'v'}-move`;\n if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {\n return;\n }\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n prevChildren.forEach(callPendingCbs);\n prevChildren.forEach(recordPosition);\n const movedChildren = prevChildren.filter(applyTranslation);\n // force reflow to put everything in position\n forceReflow();\n movedChildren.forEach(c => {\n const el = c.el;\n const style = el.style;\n addTransitionClass(el, moveClass);\n style.transform = style.webkitTransform = style.transitionDuration = '';\n const cb = (el._moveCb = (e) => {\n if (e && e.target !== el) {\n return;\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener('transitionend', cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n el.addEventListener('transitionend', cb);\n });\n });\n return () => {\n const rawProps = toRaw(props);\n const cssTransitionProps = resolveTransitionProps(rawProps);\n let tag = rawProps.tag || Fragment;\n prevChildren = children;\n children = slots.default ? getTransitionRawChildren(slots.default()) : [];\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (child.key != null) {\n setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`<TransitionGroup> children must be keyed.`);\n }\n }\n if (prevChildren) {\n for (let i = 0; i < prevChildren.length; i++) {\n const child = prevChildren[i];\n setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));\n positionMap.set(child, child.el.getBoundingClientRect());\n }\n }\n return createVNode(tag, null, children);\n };\n }\n};\nconst TransitionGroup = TransitionGroupImpl;\nfunction callPendingCbs(c) {\n const el = c.el;\n if (el._moveCb) {\n el._moveCb();\n }\n if (el._enterCb) {\n el._enterCb();\n }\n}\nfunction recordPosition(c) {\n newPositionMap.set(c, c.el.getBoundingClientRect());\n}\nfunction applyTranslation(c) {\n const oldPos = positionMap.get(c);\n const newPos = newPositionMap.get(c);\n const dx = oldPos.left - newPos.left;\n const dy = oldPos.top - newPos.top;\n if (dx || dy) {\n const s = c.el.style;\n s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;\n s.transitionDuration = '0s';\n return c;\n }\n}\nfunction hasCSSTransform(el, root, moveClass) {\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n const clone = el.cloneNode();\n if (el._vtc) {\n el._vtc.forEach(cls => {\n cls.split(/\\s+/).forEach(c => c && clone.classList.remove(c));\n });\n }\n moveClass.split(/\\s+/).forEach(c => c && clone.classList.add(c));\n clone.style.display = 'none';\n const container = (root.nodeType === 1 ? root : root.parentNode);\n container.appendChild(clone);\n const { hasTransform } = getTransitionInfo(clone);\n container.removeChild(clone);\n return hasTransform;\n}\n\nconst getModelAssigner = (vnode) => {\n const fn = vnode.props['onUpdate:modelValue'] ||\n (false );\n return isArray(fn) ? value => invokeArrayFns(fn, value) : fn;\n};\nfunction onCompositionStart(e) {\n e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n const target = e.target;\n if (target.composing) {\n target.composing = false;\n target.dispatchEvent(new Event('input'));\n }\n}\n// We are exporting the v-model runtime directly as vnode hooks so that it can\n// be tree-shaken in case v-model is never used.\nconst vModelText = {\n created(el, { modifiers: { lazy, trim, number } }, vnode) {\n el._assign = getModelAssigner(vnode);\n const castToNumber = number || (vnode.props && vnode.props.type === 'number');\n addEventListener(el, lazy ? 'change' : 'input', e => {\n if (e.target.composing)\n return;\n let domValue = el.value;\n if (trim) {\n domValue = domValue.trim();\n }\n if (castToNumber) {\n domValue = toNumber(domValue);\n }\n el._assign(domValue);\n });\n if (trim) {\n addEventListener(el, 'change', () => {\n el.value = el.value.trim();\n });\n }\n if (!lazy) {\n addEventListener(el, 'compositionstart', onCompositionStart);\n addEventListener(el, 'compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n addEventListener(el, 'change', onCompositionEnd);\n }\n },\n // set value on mounted so it's after min/max for type=\"range\"\n mounted(el, { value }) {\n el.value = value == null ? '' : value;\n },\n beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {\n el._assign = getModelAssigner(vnode);\n // avoid clearing unresolved text. #2302\n if (el.composing)\n return;\n if (document.activeElement === el && el.type !== 'range') {\n if (lazy) {\n return;\n }\n if (trim && el.value.trim() === value) {\n return;\n }\n if ((number || el.type === 'number') && toNumber(el.value) === value) {\n return;\n }\n }\n const newValue = value == null ? '' : value;\n if (el.value !== newValue) {\n el.value = newValue;\n }\n }\n};\nconst vModelCheckbox = {\n // #4096 array checkboxes need to be deep traversed\n deep: true,\n created(el, _, vnode) {\n el._assign = getModelAssigner(vnode);\n addEventListener(el, 'change', () => {\n const modelValue = el._modelValue;\n const elementValue = getValue(el);\n const checked = el.checked;\n const assign = el._assign;\n if (isArray(modelValue)) {\n const index = looseIndexOf(modelValue, elementValue);\n const found = index !== -1;\n if (checked && !found) {\n assign(modelValue.concat(elementValue));\n }\n else if (!checked && found) {\n const filtered = [...modelValue];\n filtered.splice(index, 1);\n assign(filtered);\n }\n }\n else if (isSet(modelValue)) {\n const cloned = new Set(modelValue);\n if (checked) {\n cloned.add(elementValue);\n }\n else {\n cloned.delete(elementValue);\n }\n assign(cloned);\n }\n else {\n assign(getCheckboxValue(el, checked));\n }\n });\n },\n // set initial checked on mount to wait for true-value/false-value\n mounted: setChecked,\n beforeUpdate(el, binding, vnode) {\n el._assign = getModelAssigner(vnode);\n setChecked(el, binding, vnode);\n }\n};\nfunction setChecked(el, { value, oldValue }, vnode) {\n el._modelValue = value;\n if (isArray(value)) {\n el.checked = looseIndexOf(value, vnode.props.value) > -1;\n }\n else if (isSet(value)) {\n el.checked = value.has(vnode.props.value);\n }\n else if (value !== oldValue) {\n el.checked = looseEqual(value, getCheckboxValue(el, true));\n }\n}\nconst vModelRadio = {\n created(el, { value }, vnode) {\n el.checked = looseEqual(value, vnode.props.value);\n el._assign = getModelAssigner(vnode);\n addEventListener(el, 'change', () => {\n el._assign(getValue(el));\n });\n },\n beforeUpdate(el, { value, oldValue }, vnode) {\n el._assign = getModelAssigner(vnode);\n if (value !== oldValue) {\n el.checked = looseEqual(value, vnode.props.value);\n }\n }\n};\nconst vModelSelect = {\n // <select multiple> value need to be deep traversed\n deep: true,\n created(el, { value, modifiers: { number } }, vnode) {\n const isSetModel = isSet(value);\n addEventListener(el, 'change', () => {\n const selectedVal = Array.prototype.filter\n .call(el.options, (o) => o.selected)\n .map((o) => number ? toNumber(getValue(o)) : getValue(o));\n el._assign(el.multiple\n ? isSetModel\n ? new Set(selectedVal)\n : selectedVal\n : selectedVal[0]);\n });\n el._assign = getModelAssigner(vnode);\n },\n // set value in mounted & updated because <select> relies on its children\n // <option>s.\n mounted(el, { value }) {\n setSelected(el, value);\n },\n beforeUpdate(el, _binding, vnode) {\n el._assign = getModelAssigner(vnode);\n },\n updated(el, { value }) {\n setSelected(el, value);\n }\n};\nfunction setSelected(el, value) {\n const isMultiple = el.multiple;\n if (isMultiple && !isArray(value) && !isSet(value)) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`<select multiple v-model> expects an Array or Set value for its binding, ` +\n `but got ${Object.prototype.toString.call(value).slice(8, -1)}.`);\n return;\n }\n for (let i = 0, l = el.options.length; i < l; i++) {\n const option = el.options[i];\n const optionValue = getValue(option);\n if (isMultiple) {\n if (isArray(value)) {\n option.selected = looseIndexOf(value, optionValue) > -1;\n }\n else {\n option.selected = value.has(optionValue);\n }\n }\n else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i)\n el.selectedIndex = i;\n return;\n }\n }\n }\n if (!isMultiple && el.selectedIndex !== -1) {\n el.selectedIndex = -1;\n }\n}\n// retrieve raw value set via :value bindings\nfunction getValue(el) {\n return '_value' in el ? el._value : el.value;\n}\n// retrieve raw value for true-value and false-value set via :true-value or :false-value bindings\nfunction getCheckboxValue(el, checked) {\n const key = checked ? '_trueValue' : '_falseValue';\n return key in el ? el[key] : checked;\n}\nconst vModelDynamic = {\n created(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, 'created');\n },\n mounted(el, binding, vnode) {\n callModelHook(el, binding, vnode, null, 'mounted');\n },\n beforeUpdate(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, 'beforeUpdate');\n },\n updated(el, binding, vnode, prevVNode) {\n callModelHook(el, binding, vnode, prevVNode, 'updated');\n }\n};\nfunction resolveDynamicModel(tagName, type) {\n switch (tagName) {\n case 'SELECT':\n return vModelSelect;\n case 'TEXTAREA':\n return vModelText;\n default:\n switch (type) {\n case 'checkbox':\n return vModelCheckbox;\n case 'radio':\n return vModelRadio;\n default:\n return vModelText;\n }\n }\n}\nfunction callModelHook(el, binding, vnode, prevVNode, hook) {\n const modelToUse = resolveDynamicModel(el.tagName, vnode.props && vnode.props.type);\n const fn = modelToUse[hook];\n fn && fn(el, binding, vnode, prevVNode);\n}\n// SSR vnode transforms, only used when user includes client-oriented render\n// function in SSR\nfunction initVModelForSSR() {\n vModelText.getSSRProps = ({ value }) => ({ value });\n vModelRadio.getSSRProps = ({ value }, vnode) => {\n if (vnode.props && looseEqual(vnode.props.value, value)) {\n return { checked: true };\n }\n };\n vModelCheckbox.getSSRProps = ({ value }, vnode) => {\n if (isArray(value)) {\n if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {\n return { checked: true };\n }\n }\n else if (isSet(value)) {\n if (vnode.props && value.has(vnode.props.value)) {\n return { checked: true };\n }\n }\n else if (value) {\n return { checked: true };\n }\n };\n vModelDynamic.getSSRProps = (binding, vnode) => {\n if (typeof vnode.type !== 'string') {\n return;\n }\n const modelToUse = resolveDynamicModel(\n // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase\n vnode.type.toUpperCase(), vnode.props && vnode.props.type);\n if (modelToUse.getSSRProps) {\n return modelToUse.getSSRProps(binding, vnode);\n }\n };\n}\n\nconst systemModifiers = ['ctrl', 'shift', 'alt', 'meta'];\nconst modifierGuards = {\n stop: e => e.stopPropagation(),\n prevent: e => e.preventDefault(),\n self: e => e.target !== e.currentTarget,\n ctrl: e => !e.ctrlKey,\n shift: e => !e.shiftKey,\n alt: e => !e.altKey,\n meta: e => !e.metaKey,\n left: e => 'button' in e && e.button !== 0,\n middle: e => 'button' in e && e.button !== 1,\n right: e => 'button' in e && e.button !== 2,\n exact: (e, modifiers) => systemModifiers.some(m => e[`${m}Key`] && !modifiers.includes(m))\n};\n/**\n * @private\n */\nconst withModifiers = (fn, modifiers) => {\n return (event, ...args) => {\n for (let i = 0; i < modifiers.length; i++) {\n const guard = modifierGuards[modifiers[i]];\n if (guard && guard(event, modifiers))\n return;\n }\n return fn(event, ...args);\n };\n};\n// Kept for 2.x compat.\n// Note: IE11 compat for `spacebar` and `del` is removed for now.\nconst keyNames = {\n esc: 'escape',\n space: ' ',\n up: 'arrow-up',\n left: 'arrow-left',\n right: 'arrow-right',\n down: 'arrow-down',\n delete: 'backspace'\n};\n/**\n * @private\n */\nconst withKeys = (fn, modifiers) => {\n return (event) => {\n if (!('key' in event)) {\n return;\n }\n const eventKey = hyphenate(event.key);\n if (modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) {\n return fn(event);\n }\n };\n};\n\nconst vShow = {\n beforeMount(el, { value }, { transition }) {\n el._vod = el.style.display === 'none' ? '' : el.style.display;\n if (transition && value) {\n transition.beforeEnter(el);\n }\n else {\n setDisplay(el, value);\n }\n },\n mounted(el, { value }, { transition }) {\n if (transition && value) {\n transition.enter(el);\n }\n },\n updated(el, { value, oldValue }, { transition }) {\n if (!value === !oldValue)\n return;\n if (transition) {\n if (value) {\n transition.beforeEnter(el);\n setDisplay(el, true);\n transition.enter(el);\n }\n else {\n transition.leave(el, () => {\n setDisplay(el, false);\n });\n }\n }\n else {\n setDisplay(el, value);\n }\n },\n beforeUnmount(el, { value }) {\n setDisplay(el, value);\n }\n};\nfunction setDisplay(el, value) {\n el.style.display = value ? el._vod : 'none';\n}\n// SSR vnode transforms, only used when user includes client-oriented render\n// function in SSR\nfunction initVShowForSSR() {\n vShow.getSSRProps = ({ value }) => {\n if (!value) {\n return { style: { display: 'none' } };\n }\n };\n}\n\nconst rendererOptions = /*#__PURE__*/ extend({ patchProp }, nodeOps);\n// lazy create the renderer - this makes core renderer logic tree-shakable\n// in case the user only imports reactivity utilities from Vue.\nlet renderer;\nlet enabledHydration = false;\nfunction ensureRenderer() {\n return (renderer ||\n (renderer = createRenderer(rendererOptions)));\n}\nfunction ensureHydrationRenderer() {\n renderer = enabledHydration\n ? renderer\n : createHydrationRenderer(rendererOptions);\n enabledHydration = true;\n return renderer;\n}\n// use explicit type casts here to avoid import() calls in rolled-up d.ts\nconst render = ((...args) => {\n ensureRenderer().render(...args);\n});\nconst hydrate = ((...args) => {\n ensureHydrationRenderer().hydrate(...args);\n});\nconst createApp = ((...args) => {\n const app = ensureRenderer().createApp(...args);\n if ((process.env.NODE_ENV !== 'production')) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (!container)\n return;\n const component = app._component;\n if (!isFunction(component) && !component.render && !component.template) {\n // __UNSAFE__\n // Reason: potential execution of JS expressions in in-DOM template.\n // The user must make sure the in-DOM template is trusted. If it's\n // rendered by the server, the template should not contain any user data.\n component.template = container.innerHTML;\n }\n // clear content before mounting\n container.innerHTML = '';\n const proxy = mount(container, false, container instanceof SVGElement);\n if (container instanceof Element) {\n container.removeAttribute('v-cloak');\n container.setAttribute('data-v-app', '');\n }\n return proxy;\n };\n return app;\n});\nconst createSSRApp = ((...args) => {\n const app = ensureHydrationRenderer().createApp(...args);\n if ((process.env.NODE_ENV !== 'production')) {\n injectNativeTagCheck(app);\n injectCompilerOptionsCheck(app);\n }\n const { mount } = app;\n app.mount = (containerOrSelector) => {\n const container = normalizeContainer(containerOrSelector);\n if (container) {\n return mount(container, true, container instanceof SVGElement);\n }\n };\n return app;\n});\nfunction injectNativeTagCheck(app) {\n // Inject `isNativeTag`\n // this is used for component name validation (dev only)\n Object.defineProperty(app.config, 'isNativeTag', {\n value: (tag) => isHTMLTag(tag) || isSVGTag(tag),\n writable: false\n });\n}\n// dev only\nfunction injectCompilerOptionsCheck(app) {\n if (isRuntimeOnly()) {\n const isCustomElement = app.config.isCustomElement;\n Object.defineProperty(app.config, 'isCustomElement', {\n get() {\n return isCustomElement;\n },\n set() {\n warn(`The \\`isCustomElement\\` config option is deprecated. Use ` +\n `\\`compilerOptions.isCustomElement\\` instead.`);\n }\n });\n const compilerOptions = app.config.compilerOptions;\n const msg = `The \\`compilerOptions\\` config option is only respected when using ` +\n `a build of Vue.js that includes the runtime compiler (aka \"full build\"). ` +\n `Since you are using the runtime-only build, \\`compilerOptions\\` ` +\n `must be passed to \\`@vue/compiler-dom\\` in the build setup instead.\\n` +\n `- For vue-loader: pass it via vue-loader's \\`compilerOptions\\` loader option.\\n` +\n `- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\\n` +\n `- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-dom`;\n Object.defineProperty(app.config, 'compilerOptions', {\n get() {\n warn(msg);\n return compilerOptions;\n },\n set() {\n warn(msg);\n }\n });\n }\n}\nfunction normalizeContainer(container) {\n if (isString(container)) {\n const res = document.querySelector(container);\n if ((process.env.NODE_ENV !== 'production') && !res) {\n warn(`Failed to mount app: mount target selector \"${container}\" returned null.`);\n }\n return res;\n }\n if ((process.env.NODE_ENV !== 'production') &&\n window.ShadowRoot &&\n container instanceof window.ShadowRoot &&\n container.mode === 'closed') {\n warn(`mounting on a ShadowRoot with \\`{mode: \"closed\"}\\` may lead to unpredictable bugs`);\n }\n return container;\n}\nlet ssrDirectiveInitialized = false;\n/**\n * @internal\n */\nconst initDirectivesForSSR = () => {\n if (!ssrDirectiveInitialized) {\n ssrDirectiveInitialized = true;\n initVModelForSSR();\n initVShowForSSR();\n }\n }\n ;\n\nexport { Transition, TransitionGroup, VueElement, createApp, createSSRApp, defineCustomElement, defineSSRCustomElement, hydrate, initDirectivesForSSR, render, useCssModule, useCssVars, vModelCheckbox, vModelDynamic, vModelRadio, vModelSelect, vModelText, vShow, withKeys, withModifiers };\n","/**\n * Make a map and return a function for checking if a key\n * is in that map.\n * IMPORTANT: all calls of this function must be prefixed with\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\n * So that rollup can tree-shake them if necessary.\n */\nfunction makeMap(str, expectsLowerCase) {\n const map = Object.create(null);\n const list = str.split(',');\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\n}\n\n/**\n * dev only flag -> name mapping\n */\nconst PatchFlagNames = {\n [1 /* PatchFlags.TEXT */]: `TEXT`,\n [2 /* PatchFlags.CLASS */]: `CLASS`,\n [4 /* PatchFlags.STYLE */]: `STYLE`,\n [8 /* PatchFlags.PROPS */]: `PROPS`,\n [16 /* PatchFlags.FULL_PROPS */]: `FULL_PROPS`,\n [32 /* PatchFlags.HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,\n [64 /* PatchFlags.STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,\n [128 /* PatchFlags.KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,\n [256 /* PatchFlags.UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,\n [512 /* PatchFlags.NEED_PATCH */]: `NEED_PATCH`,\n [1024 /* PatchFlags.DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,\n [2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,\n [-1 /* PatchFlags.HOISTED */]: `HOISTED`,\n [-2 /* PatchFlags.BAIL */]: `BAIL`\n};\n\n/**\n * Dev only\n */\nconst slotFlagsText = {\n [1 /* SlotFlags.STABLE */]: 'STABLE',\n [2 /* SlotFlags.DYNAMIC */]: 'DYNAMIC',\n [3 /* SlotFlags.FORWARDED */]: 'FORWARDED'\n};\n\nconst GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\n 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\n 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';\nconst isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n // Split the content into individual lines but capture the newline sequence\n // that separated each line. This is important because the actual sequence is\n // needed to properly take into account the full line length for offset\n // comparison\n let lines = source.split(/(\\r?\\n)/);\n // Separate the lines and newline sequences into separate arrays for easier referencing\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count +=\n lines[i].length +\n ((newlineSequences[i] && newlineSequences[i].length) || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);\n const lineLength = lines[j].length;\n const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;\n if (j === i) {\n // push underline\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n }\n else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + '^'.repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item)\n ? parseStringStyle(item)\n : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n }\n else if (isString(value)) {\n return value;\n }\n else if (isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*.*?\\*\\//gs;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText\n .replace(styleCommentRE, '')\n .split(listDelimiterRE)\n .forEach(item => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = '';\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === 'number') {\n // only render valid values\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = '';\n if (isString(value)) {\n res = value;\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + ' ';\n }\n }\n }\n else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + ' ';\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\n// These tag configs are shared between compiler-dom and runtime-dom, so they\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\nconst HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +\n 'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +\n 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +\n 'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +\n 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +\n 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +\n 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +\n 'option,output,progress,select,textarea,details,dialog,menu,' +\n 'summary,template,blockquote,iframe,tfoot';\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\nconst SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +\n 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +\n 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +\n 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +\n 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +\n 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +\n 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +\n 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +\n 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +\n 'text,textPath,title,tspan,unknown,use,view';\nconst VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);\n\n/**\n * On the client we only need to offer special cases for boolean attributes that\n * have different names from their corresponding dom properties:\n * - itemscope -> N/A\n * - allowfullscreen -> allowFullscreen\n * - formnovalidate -> formNoValidate\n * - ismap -> isMap\n * - nomodule -> noModule\n * - novalidate -> noValidate\n * - readonly -> readOnly\n */\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);\n/**\n * The full list is needed during SSR to produce the correct initial markup.\n */\nconst isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +\n `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +\n `loop,open,required,reversed,scoped,seamless,` +\n `checked,muted,multiple,selected`);\n/**\n * Boolean attributes should be included if the value is truthy or ''.\n * e.g. `<select multiple>` compiles to `{ multiple: '' }`\n */\nfunction includeBooleanAttr(value) {\n return !!value || value === '';\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return (attrValidationCache[name] = !isUnsafe);\n}\nconst propsToAttrMap = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n};\n/**\n * Known attributes, this is used for stringification of runtime static nodes\n * so that we don't stringify bindings that cannot be set from HTML.\n * Don't also forget to allow `data-*` and `aria-*`!\n * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\n */\nconst isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +\n `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +\n `border,buffered,capture,challenge,charset,checked,cite,class,code,` +\n `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +\n `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +\n `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +\n `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +\n `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +\n `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +\n `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +\n `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +\n `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +\n `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +\n `start,step,style,summary,tabindex,target,title,translate,type,usemap,` +\n `value,width,wrap`);\n/**\n * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n */\nconst isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +\n `arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +\n `baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +\n `clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +\n `color-interpolation-filters,color-profile,color-rendering,` +\n `contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +\n `descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +\n `dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +\n `fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +\n `font-family,font-size,font-size-adjust,font-stretch,font-style,` +\n `font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +\n `glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +\n `gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +\n `horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +\n `k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +\n `lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +\n `marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +\n `mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +\n `name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +\n `overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +\n `pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +\n `pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +\n `preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +\n `rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +\n `restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +\n `specularConstant,specularExponent,speed,spreadMethod,startOffset,` +\n `stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +\n `strikethrough-position,strikethrough-thickness,string,stroke,` +\n `stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +\n `stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +\n `systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +\n `text-decoration,text-rendering,textLength,to,transform,transform-origin,` +\n `type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +\n `unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +\n `v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +\n `vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +\n `writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +\n `xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +\n `xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = '' + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = '';\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escaped = '&quot;';\n break;\n case 38: // &\n escaped = '&amp;';\n break;\n case 39: // '\n escaped = '&#39;';\n break;\n case 60: // <\n escaped = '&lt;';\n break;\n case 62: // >\n escaped = '&gt;';\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\n// https://www.w3.org/TR/html52/syntax.html#comments\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n return src.replace(commentStripRE, '');\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length)\n return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n /* istanbul ignore if: this if will probably never be called */\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if ((aHasKey && !bHasKey) ||\n (!aHasKey && bHasKey) ||\n !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex(item => looseEqual(item, val));\n}\n\n/**\n * For converting {{ interpolation }} values to displayed strings.\n * @private\n */\nconst toDisplayString = (val) => {\n return isString(val)\n ? val\n : val == null\n ? ''\n : isArray(val) ||\n (isObject(val) &&\n (val.toString === objectToString || !isFunction(val.toString)))\n ? JSON.stringify(val, replacer, 2)\n : String(val);\n};\nconst replacer = (_key, val) => {\n // can't use isRef here since @vue/shared has no deps\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n }\n else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {\n entries[`${key} =>`] = val;\n return entries;\n }, {})\n };\n }\n else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()]\n };\n }\n else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\n\nconst EMPTY_OBJ = (process.env.NODE_ENV !== 'production')\n ? Object.freeze({})\n : {};\nconst EMPTY_ARR = (process.env.NODE_ENV !== 'production') ? Object.freeze([]) : [];\nconst NOOP = () => { };\n/**\n * Always return false.\n */\nconst NO = () => false;\nconst onRE = /^on[^a-z]/;\nconst isOn = (key) => onRE.test(key);\nconst isModelListener = (key) => key.startsWith('onUpdate:');\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === '[object Map]';\nconst isSet = (val) => toTypeString(val) === '[object Set]';\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isSymbol = (val) => typeof val === 'symbol';\nconst isObject = (val) => val !== null && typeof val === 'object';\nconst isPromise = (val) => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n // extract \"RawType\" from strings like \"[object RawType]\"\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\nconst isIntegerKey = (key) => isString(key) &&\n key !== 'NaN' &&\n key[0] !== '-' &&\n '' + parseInt(key, 10) === key;\nconst isReservedProp = /*#__PURE__*/ makeMap(\n// the leading comma is intentional so empty string \"\" is also included\n',key,ref,ref_for,ref_key,' +\n 'onVnodeBeforeMount,onVnodeMounted,' +\n 'onVnodeBeforeUpdate,onVnodeUpdated,' +\n 'onVnodeBeforeUnmount,onVnodeUnmounted');\nconst isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');\nconst cacheStringFunction = (fn) => {\n const cache = Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-(\\w)/g;\n/**\n * @private\n */\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\n});\nconst hyphenateRE = /\\B([A-Z])/g;\n/**\n * @private\n */\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());\n/**\n * @private\n */\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\n/**\n * @private\n */\nconst toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\n// compare whether a value has changed, accounting for NaN.\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst toNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return (_globalThis ||\n (_globalThis =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {}));\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name)\n ? `__props.${name}`\n : `__props[${JSON.stringify(name)}]`;\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isObject, isOn, isPlainObject, isPromise, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","import { isReactive, isReadonly, computed, unref, ref, watch, isRef, reactive, nextTick, inject, provide, getCurrentInstance, onBeforeMount, onBeforeUnmount } from 'vue-demi';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction unwrapObj(obj) {\n let ignoreKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return Object.keys(obj).reduce((o, k) => {\n if (ignoreKeys.includes(k)) return o;\n o[k] = unref(obj[k]);\n return o;\n }, {});\n}\nfunction isFunction(val) {\n return typeof val === 'function';\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction get(obj, stringPath, def) {\n let current = obj;\n const path = stringPath.split('.');\n\n for (let i = 0; i < path.length; i++) {\n if (!current[path[i]]) return def;\n current = current[path[i]];\n }\n\n return current;\n}\nfunction gatherBooleanGroupProperties(group, nestedResults, property) {\n return computed(() => {\n return group.some(path => {\n return get(nestedResults, path, {\n [property]: false\n })[property];\n });\n });\n}\nfunction gatherArrayGroupProperties(group, nestedResults, property) {\n return computed(() => {\n return group.reduce((all, path) => {\n const fetchedProperty = get(nestedResults, path, {\n [property]: false\n })[property] || [];\n return all.concat(fetchedProperty);\n }, []);\n });\n}\n\nfunction callRule(rule, value, siblingState, instance) {\n return rule.call(instance, unref(value), unref(siblingState), instance);\n}\n\nfunction normalizeValidatorResponse(result) {\n return result.$valid !== undefined ? !result.$valid : !result;\n}\n\nfunction createAsyncResult(rule, model, $pending, $dirty, _ref, $response, instance) {\n let {\n $lazy,\n $rewardEarly\n } = _ref;\n let watchTargets = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : [];\n let siblingState = arguments.length > 8 ? arguments[8] : undefined;\n let $lastInvalidState = arguments.length > 9 ? arguments[9] : undefined;\n let $lastCommittedOn = arguments.length > 10 ? arguments[10] : undefined;\n const $invalid = ref(!!$dirty.value);\n const $pendingCounter = ref(0);\n $pending.value = false;\n const $unwatch = watch([model, $dirty].concat(watchTargets, $lastCommittedOn), () => {\n if ($lazy && !$dirty.value || $rewardEarly && !$lastInvalidState.value && !$pending.value) {\n return;\n }\n\n let ruleResult;\n\n try {\n ruleResult = callRule(rule, model, siblingState, instance);\n } catch (err) {\n ruleResult = Promise.reject(err);\n }\n\n $pendingCounter.value++;\n $pending.value = !!$pendingCounter.value;\n $invalid.value = false;\n Promise.resolve(ruleResult).then(data => {\n $pendingCounter.value--;\n $pending.value = !!$pendingCounter.value;\n $response.value = data;\n $invalid.value = normalizeValidatorResponse(data);\n }).catch(error => {\n $pendingCounter.value--;\n $pending.value = !!$pendingCounter.value;\n $response.value = error;\n $invalid.value = true;\n });\n }, {\n immediate: true,\n deep: typeof model === 'object'\n });\n return {\n $invalid,\n $unwatch\n };\n}\n\nfunction createSyncResult(rule, model, $dirty, _ref2, $response, instance, siblingState, $lastInvalidState) {\n let {\n $lazy,\n $rewardEarly\n } = _ref2;\n\n const $unwatch = () => ({});\n\n const $invalid = computed(() => {\n if ($lazy && !$dirty.value || $rewardEarly && !$lastInvalidState.value) {\n return false;\n }\n\n let returnValue = true;\n\n try {\n const result = callRule(rule, model, siblingState, instance);\n $response.value = result;\n returnValue = normalizeValidatorResponse(result);\n } catch (err) {\n $response.value = err;\n }\n\n return returnValue;\n });\n return {\n $unwatch,\n $invalid\n };\n}\n\nfunction createValidatorResult(rule, model, $dirty, config, instance, validatorName, propertyKey, propertyPath, siblingState, $lastInvalidState, $lastCommittedOn) {\n const $pending = ref(false);\n const $params = rule.$params || {};\n const $response = ref(null);\n let $invalid;\n let $unwatch;\n\n if (rule.$async) {\n ({\n $invalid,\n $unwatch\n } = createAsyncResult(rule.$validator, model, $pending, $dirty, config, $response, instance, rule.$watchTargets, siblingState, $lastInvalidState, $lastCommittedOn));\n } else {\n ({\n $invalid,\n $unwatch\n } = createSyncResult(rule.$validator, model, $dirty, config, $response, instance, siblingState, $lastInvalidState));\n }\n\n const message = rule.$message;\n const $message = isFunction(message) ? computed(() => message(unwrapObj({\n $pending,\n $invalid,\n $params: unwrapObj($params),\n $model: model,\n $response,\n $validator: validatorName,\n $propertyPath: propertyPath,\n $property: propertyKey\n }))) : message || '';\n return {\n $message,\n $params,\n $pending,\n $invalid,\n $response,\n $unwatch\n };\n}\n\nfunction sortValidations() {\n let validationsRaw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const validations = unref(validationsRaw);\n const validationKeys = Object.keys(validations);\n const rules = {};\n const nestedValidators = {};\n const config = {};\n let validationGroups = null;\n validationKeys.forEach(key => {\n const v = validations[key];\n\n switch (true) {\n case isFunction(v.$validator):\n rules[key] = v;\n break;\n\n case isFunction(v):\n rules[key] = {\n $validator: v\n };\n break;\n\n case key === '$validationGroups':\n validationGroups = v;\n break;\n\n case key.startsWith('$'):\n config[key] = v;\n break;\n\n default:\n nestedValidators[key] = v;\n }\n });\n return {\n rules,\n nestedValidators,\n config,\n validationGroups\n };\n}\n\nconst ROOT_PATH = '__root';\n\nfunction createValidationResults(rules, model, key, resultsCache, path, config, instance, externalResults, siblingState) {\n const ruleKeys = Object.keys(rules);\n const cachedResult = resultsCache.get(path, rules);\n const $dirty = ref(false);\n const $lastInvalidState = ref(false);\n const $lastCommittedOn = ref(0);\n\n if (cachedResult) {\n if (!cachedResult.$partial) return cachedResult;\n cachedResult.$unwatch();\n $dirty.value = cachedResult.$dirty.value;\n }\n\n const result = {\n $dirty,\n $path: path,\n $touch: () => {\n if (!$dirty.value) $dirty.value = true;\n },\n $reset: () => {\n if ($dirty.value) $dirty.value = false;\n },\n $commit: () => {}\n };\n\n if (!ruleKeys.length) {\n cachedResult && resultsCache.set(path, rules, result);\n return result;\n }\n\n ruleKeys.forEach(ruleKey => {\n result[ruleKey] = createValidatorResult(rules[ruleKey], model, result.$dirty, config, instance, ruleKey, key, path, siblingState, $lastInvalidState, $lastCommittedOn);\n });\n result.$externalResults = computed(() => {\n if (!externalResults.value) return [];\n return [].concat(externalResults.value).map((stringError, index) => ({\n $propertyPath: path,\n $property: key,\n $validator: '$externalResults',\n $uid: `${path}-externalResult-${index}`,\n $message: stringError,\n $params: {},\n $response: null,\n $pending: false\n }));\n });\n result.$invalid = computed(() => {\n const r = ruleKeys.some(ruleKey => unref(result[ruleKey].$invalid));\n $lastInvalidState.value = r;\n return !!result.$externalResults.value.length || r;\n });\n result.$pending = computed(() => ruleKeys.some(ruleKey => unref(result[ruleKey].$pending)));\n result.$error = computed(() => result.$dirty.value ? result.$pending.value || result.$invalid.value : false);\n result.$silentErrors = computed(() => ruleKeys.filter(ruleKey => unref(result[ruleKey].$invalid)).map(ruleKey => {\n const res = result[ruleKey];\n return reactive({\n $propertyPath: path,\n $property: key,\n $validator: ruleKey,\n $uid: `${path}-${ruleKey}`,\n $message: res.$message,\n $params: res.$params,\n $response: res.$response,\n $pending: res.$pending\n });\n }).concat(result.$externalResults.value));\n result.$errors = computed(() => result.$dirty.value ? result.$silentErrors.value : []);\n\n result.$unwatch = () => ruleKeys.forEach(ruleKey => {\n result[ruleKey].$unwatch();\n });\n\n result.$commit = () => {\n $lastInvalidState.value = true;\n $lastCommittedOn.value = Date.now();\n };\n\n resultsCache.set(path, rules, result);\n return result;\n}\n\nfunction collectNestedValidationResults(validations, nestedState, path, resultsCache, config, instance, nestedExternalResults) {\n const nestedValidationKeys = Object.keys(validations);\n if (!nestedValidationKeys.length) return {};\n return nestedValidationKeys.reduce((results, nestedKey) => {\n results[nestedKey] = setValidations({\n validations: validations[nestedKey],\n state: nestedState,\n key: nestedKey,\n parentKey: path,\n resultsCache,\n globalConfig: config,\n instance,\n externalResults: nestedExternalResults\n });\n return results;\n }, {});\n}\n\nfunction createMetaFields(results, nestedResults, childResults) {\n const allResults = computed(() => [nestedResults, childResults].filter(res => res).reduce((allRes, res) => {\n return allRes.concat(Object.values(unref(res)));\n }, []));\n const $dirty = computed({\n get() {\n return results.$dirty.value || (allResults.value.length ? allResults.value.every(r => r.$dirty) : false);\n },\n\n set(v) {\n results.$dirty.value = v;\n }\n\n });\n const $silentErrors = computed(() => {\n const modelErrors = unref(results.$silentErrors) || [];\n const nestedErrors = allResults.value.filter(result => (unref(result).$silentErrors || []).length).reduce((errors, result) => {\n return errors.concat(...result.$silentErrors);\n }, []);\n return modelErrors.concat(nestedErrors);\n });\n const $errors = computed(() => {\n const modelErrors = unref(results.$errors) || [];\n const nestedErrors = allResults.value.filter(result => (unref(result).$errors || []).length).reduce((errors, result) => {\n return errors.concat(...result.$errors);\n }, []);\n return modelErrors.concat(nestedErrors);\n });\n const $invalid = computed(() => allResults.value.some(r => r.$invalid) || unref(results.$invalid) || false);\n const $pending = computed(() => allResults.value.some(r => unref(r.$pending)) || unref(results.$pending) || false);\n const $anyDirty = computed(() => allResults.value.some(r => r.$dirty) || allResults.value.some(r => r.$anyDirty) || $dirty.value);\n const $error = computed(() => $dirty.value ? $pending.value || $invalid.value : false);\n\n const $touch = () => {\n results.$touch();\n allResults.value.forEach(result => {\n result.$touch();\n });\n };\n\n const $commit = () => {\n results.$commit();\n allResults.value.forEach(result => {\n result.$commit();\n });\n };\n\n const $reset = () => {\n results.$reset();\n allResults.value.forEach(result => {\n result.$reset();\n });\n };\n\n if (allResults.value.length && allResults.value.every(nr => nr.$dirty)) $touch();\n return {\n $dirty,\n $errors,\n $invalid,\n $anyDirty,\n $error,\n $pending,\n $touch,\n $reset,\n $silentErrors,\n $commit\n };\n}\n\nfunction setValidations(_ref) {\n let {\n validations,\n state,\n key,\n parentKey,\n childResults,\n resultsCache,\n globalConfig = {},\n instance,\n externalResults\n } = _ref;\n const path = parentKey ? `${parentKey}.${key}` : key;\n const {\n rules,\n nestedValidators,\n config,\n validationGroups\n } = sortValidations(validations);\n\n const mergedConfig = _objectSpread2(_objectSpread2({}, globalConfig), config);\n\n const nestedState = key ? computed(() => {\n const s = unref(state);\n return s ? unref(s[key]) : undefined;\n }) : state;\n\n const cachedExternalResults = _objectSpread2({}, unref(externalResults) || {});\n\n const nestedExternalResults = computed(() => {\n const results = unref(externalResults);\n if (!key) return results;\n return results ? unref(results[key]) : undefined;\n });\n const results = createValidationResults(rules, nestedState, key, resultsCache, path, mergedConfig, instance, nestedExternalResults, state);\n const nestedResults = collectNestedValidationResults(nestedValidators, nestedState, path, resultsCache, mergedConfig, instance, nestedExternalResults);\n const $validationGroups = {};\n\n if (validationGroups) {\n Object.entries(validationGroups).forEach(_ref2 => {\n let [key, group] = _ref2;\n $validationGroups[key] = {\n $invalid: gatherBooleanGroupProperties(group, nestedResults, '$invalid'),\n $error: gatherBooleanGroupProperties(group, nestedResults, '$error'),\n $pending: gatherBooleanGroupProperties(group, nestedResults, '$pending'),\n $errors: gatherArrayGroupProperties(group, nestedResults, '$errors'),\n $silentErrors: gatherArrayGroupProperties(group, nestedResults, '$silentErrors')\n };\n });\n }\n\n const {\n $dirty,\n $errors,\n $invalid,\n $anyDirty,\n $error,\n $pending,\n $touch,\n $reset,\n $silentErrors,\n $commit\n } = createMetaFields(results, nestedResults, childResults);\n const $model = key ? computed({\n get: () => unref(nestedState),\n set: val => {\n $dirty.value = true;\n const s = unref(state);\n const external = unref(externalResults);\n\n if (external) {\n external[key] = cachedExternalResults[key];\n }\n\n if (isRef(s[key])) {\n s[key].value = val;\n } else {\n s[key] = val;\n }\n }\n }) : null;\n\n if (key && mergedConfig.$autoDirty) {\n watch(nestedState, () => {\n if (!$dirty.value) $touch();\n const external = unref(externalResults);\n\n if (external) {\n external[key] = cachedExternalResults[key];\n }\n }, {\n flush: 'sync'\n });\n }\n\n async function $validate() {\n $touch();\n\n if (mergedConfig.$rewardEarly) {\n $commit();\n await nextTick();\n }\n\n await nextTick();\n return new Promise(resolve => {\n if (!$pending.value) return resolve(!$invalid.value);\n const unwatch = watch($pending, () => {\n resolve(!$invalid.value);\n unwatch();\n });\n });\n }\n\n function $getResultsForChild(key) {\n return (childResults.value || {})[key];\n }\n\n function $clearExternalResults() {\n if (isRef(externalResults)) {\n externalResults.value = cachedExternalResults;\n } else {\n if (Object.keys(cachedExternalResults).length === 0) {\n Object.keys(externalResults).forEach(k => {\n delete externalResults[k];\n });\n } else {\n Object.assign(externalResults, cachedExternalResults);\n }\n }\n }\n\n return reactive(_objectSpread2(_objectSpread2(_objectSpread2({}, results), {}, {\n $model,\n $dirty,\n $error,\n $errors,\n $invalid,\n $anyDirty,\n $pending,\n $touch,\n $reset,\n $path: path || ROOT_PATH,\n $silentErrors,\n $validate,\n $commit\n }, childResults && {\n $getResultsForChild,\n $clearExternalResults,\n $validationGroups\n }), nestedResults));\n}\n\nclass ResultsStorage {\n constructor() {\n this.storage = new Map();\n }\n\n set(path, rules, result) {\n this.storage.set(path, {\n rules,\n result\n });\n }\n\n checkRulesValidity(path, rules, storedRules) {\n const storedRulesKeys = Object.keys(storedRules);\n const newRulesKeys = Object.keys(rules);\n if (newRulesKeys.length !== storedRulesKeys.length) return false;\n const hasAllValidators = newRulesKeys.every(ruleKey => storedRulesKeys.includes(ruleKey));\n if (!hasAllValidators) return false;\n return newRulesKeys.every(ruleKey => {\n if (!rules[ruleKey].$params) return true;\n return Object.keys(rules[ruleKey].$params).every(paramKey => {\n return unref(storedRules[ruleKey].$params[paramKey]) === unref(rules[ruleKey].$params[paramKey]);\n });\n });\n }\n\n get(path, rules) {\n const storedRuleResultPair = this.storage.get(path);\n if (!storedRuleResultPair) return undefined;\n const {\n rules: storedRules,\n result\n } = storedRuleResultPair;\n const isValidCache = this.checkRulesValidity(path, rules, storedRules);\n const $unwatch = result.$unwatch ? result.$unwatch : () => ({});\n if (!isValidCache) return {\n $dirty: result.$dirty,\n $partial: true,\n $unwatch\n };\n return result;\n }\n\n}\n\nconst CollectFlag = {\n COLLECT_ALL: true,\n COLLECT_NONE: false\n};\nconst VuelidateInjectChildResults = Symbol('vuelidate#injectChildResults');\nconst VuelidateRemoveChildResults = Symbol('vuelidate#removeChildResults');\nfunction nestedValidations(_ref) {\n let {\n $scope,\n instance\n } = _ref;\n const childResultsRaw = {};\n const childResultsKeys = ref([]);\n const childResults = computed(() => childResultsKeys.value.reduce((results, key) => {\n results[key] = unref(childResultsRaw[key]);\n return results;\n }, {}));\n\n function injectChildResultsIntoParent(results, _ref2) {\n let {\n $registerAs: key,\n $scope: childScope,\n $stopPropagation\n } = _ref2;\n if ($stopPropagation || $scope === CollectFlag.COLLECT_NONE || childScope === CollectFlag.COLLECT_NONE || $scope !== CollectFlag.COLLECT_ALL && $scope !== childScope) return;\n childResultsRaw[key] = results;\n childResultsKeys.value.push(key);\n }\n\n instance.__vuelidateInjectInstances = [].concat(instance.__vuelidateInjectInstances || [], injectChildResultsIntoParent);\n\n function removeChildResultsFromParent(key) {\n childResultsKeys.value = childResultsKeys.value.filter(childKey => childKey !== key);\n delete childResultsRaw[key];\n }\n\n instance.__vuelidateRemoveInstances = [].concat(instance.__vuelidateRemoveInstances || [], removeChildResultsFromParent);\n const sendValidationResultsToParent = inject(VuelidateInjectChildResults, []);\n provide(VuelidateInjectChildResults, instance.__vuelidateInjectInstances);\n const removeValidationResultsFromParent = inject(VuelidateRemoveChildResults, []);\n provide(VuelidateRemoveChildResults, instance.__vuelidateRemoveInstances);\n return {\n childResults,\n sendValidationResultsToParent,\n removeValidationResultsFromParent\n };\n}\n\nfunction ComputedProxyFactory(target) {\n return new Proxy(target, {\n get(target, prop) {\n return typeof target[prop] === 'object' ? ComputedProxyFactory(target[prop]) : computed(() => target[prop]);\n }\n\n });\n}\n\nlet uid = 0;\nfunction useVuelidate(validations, state) {\n var _getCurrentInstance;\n\n let globalConfig = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (arguments.length === 1) {\n globalConfig = validations;\n validations = undefined;\n state = undefined;\n }\n\n let {\n $registerAs,\n $scope = CollectFlag.COLLECT_ALL,\n $stopPropagation,\n $externalResults,\n currentVueInstance\n } = globalConfig;\n const instance = currentVueInstance || ((_getCurrentInstance = getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy);\n const componentOptions = instance ? instance.$options : {};\n\n if (!$registerAs) {\n uid += 1;\n $registerAs = `_vuelidate_${uid}`;\n }\n\n const validationResults = ref({});\n const resultsCache = new ResultsStorage();\n const {\n childResults,\n sendValidationResultsToParent,\n removeValidationResultsFromParent\n } = instance ? nestedValidations({\n $scope,\n instance\n }) : {\n childResults: ref({})\n };\n\n if (!validations && componentOptions.validations) {\n const rules = componentOptions.validations;\n state = ref({});\n onBeforeMount(() => {\n state.value = instance;\n watch(() => isFunction(rules) ? rules.call(state.value, new ComputedProxyFactory(state.value)) : rules, validations => {\n validationResults.value = setValidations({\n validations,\n state,\n childResults,\n resultsCache,\n globalConfig,\n instance,\n externalResults: $externalResults || instance.vuelidateExternalResults\n });\n }, {\n immediate: true\n });\n });\n globalConfig = componentOptions.validationsConfig || globalConfig;\n } else {\n const validationsWatchTarget = isRef(validations) || isProxy(validations) ? validations : reactive(validations || {});\n watch(validationsWatchTarget, newValidationRules => {\n validationResults.value = setValidations({\n validations: newValidationRules,\n state,\n childResults,\n resultsCache,\n globalConfig,\n instance: instance !== null && instance !== void 0 ? instance : {},\n externalResults: $externalResults\n });\n }, {\n immediate: true\n });\n }\n\n if (instance) {\n sendValidationResultsToParent.forEach(f => f(validationResults, {\n $registerAs,\n $scope,\n $stopPropagation\n }));\n onBeforeUnmount(() => removeValidationResultsFromParent.forEach(f => f($registerAs)));\n }\n\n return computed(() => {\n return _objectSpread2(_objectSpread2({}, unref(validationResults.value)), childResults.value);\n });\n}\n\nexport { CollectFlag, useVuelidate as default, useVuelidate };\n","import { unref } from 'vue-demi';\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\nfunction isObject(o) {\n return o !== null && typeof o === 'object' && !Array.isArray(o);\n}\n/**\n * Returns a standard ValidatorObject\n * Wraps a plain function into a ValidatorObject\n * @param {NormalizedValidator|Function} validator\n * @return {NormalizedValidator}\n */\n\nfunction normalizeValidatorObject(validator) {\n return isFunction(validator.$validator) ? Object.assign({}, validator) : {\n $validator: validator\n };\n}\nfunction isPromise(object) {\n return isObject(object) && isFunction(object.then);\n}\n/**\n * Unwraps a ValidatorResponse object, into a boolean.\n * @param {ValidatorResponse} result\n * @return {boolean}\n */\n\nfunction unwrapValidatorResponse(result) {\n if (typeof result === 'object') return result.$valid;\n return result;\n}\n/**\n * Unwraps a `NormalizedValidator` object, returning its validator function.\n * @param {NormalizedValidator | Function} validator\n * @return {function}\n */\n\nfunction unwrapNormalizedValidator(validator) {\n return validator.$validator || validator;\n}\n\n/**\n * Allows attaching parameters to a validator\n * @param {Object} $params\n * @param {NormalizedValidator|Function} $validator\n * @return {NormalizedValidator}\n */\n\nfunction withParams($params, $validator) {\n if (!isObject($params)) throw new Error(`[@vuelidate/validators]: First parameter to \"withParams\" should be an object, provided ${typeof $params}`);\n if (!isObject($validator) && !isFunction($validator)) throw new Error(`[@vuelidate/validators]: Validator must be a function or object with $validator parameter`);\n const validatorObj = normalizeValidatorObject($validator);\n validatorObj.$params = Object.assign({}, validatorObj.$params || {}, $params);\n return validatorObj;\n}\n\n/**\n * @callback MessageCallback\n * @param {Object} params\n * @return String\n */\n\n/**\n * Attaches a message to a validator\n * @param {MessageCallback | String} $message\n * @param {NormalizedValidator|Function} $validator\n * @return {NormalizedValidator}\n */\n\nfunction withMessage($message, $validator) {\n if (!isFunction($message) && typeof unref($message) !== 'string') throw new Error(`[@vuelidate/validators]: First parameter to \"withMessage\" should be string or a function returning a string, provided ${typeof $message}`);\n if (!isObject($validator) && !isFunction($validator)) throw new Error(`[@vuelidate/validators]: Validator must be a function or object with $validator parameter`);\n const validatorObj = normalizeValidatorObject($validator);\n validatorObj.$message = $message;\n return validatorObj;\n}\n\n/**\n * @typedef {function(*): Promise<boolean|ValidatorResponse>} asyncValidator\n */\n\n/**\n * @typedef {Ref<*>[]|function(*): *} watchTargets\n */\n\n/**\n * Wraps validators that returns a Promise.\n * @param {asyncValidator} $validator\n * @param {watchTargets} $watchTargets\n * @return {{$async: boolean, $validator: asyncValidator, $watchTargets: watchTargets}}\n */\n\nfunction withAsync($validator) {\n let $watchTargets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n const validatorObj = normalizeValidatorObject($validator);\n return Object.assign({}, validatorObj, {\n $async: true,\n $watchTargets\n });\n}\n\nfunction forEach(validators) {\n return {\n $validator(collection) {\n for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n others[_key - 1] = arguments[_key];\n }\n\n // go over the collection. It can be a ref as well.\n return unref(collection).reduce((previous, collectionItem, index) => {\n // go over each property\n const collectionEntryResult = Object.entries(collectionItem).reduce((all, _ref) => {\n let [property, $model] = _ref;\n // get the validators for this property\n const innerValidators = validators[property] || {}; // go over each validator and run it\n\n const propertyResult = Object.entries(innerValidators).reduce((all, _ref2) => {\n let [validatorName, currentValidator] = _ref2;\n // extract the validator. Supports simple and extended validators.\n const validatorFunction = unwrapNormalizedValidator(currentValidator); // Call the validator, passing the VM as this, the value, current iterated object and the rest.\n\n const $response = validatorFunction.call(this, $model, collectionItem, index, ...others); // extract the valid from the result\n\n const $valid = unwrapValidatorResponse($response); // store the entire response for later\n\n all.$data[validatorName] = $response;\n all.$data.$invalid = !$valid || !!all.$data.$invalid;\n all.$data.$error = all.$data.$invalid; // if not valid, get the $message\n\n if (!$valid) {\n let $message = currentValidator.$message || '';\n const $params = currentValidator.$params || {}; // If $message is a function, we call it with the appropriate parameters\n\n if (typeof $message === 'function') {\n $message = $message({\n $pending: false,\n $invalid: !$valid,\n $params,\n $model,\n $response\n });\n } // save the error object\n\n\n all.$errors.push({\n $property: property,\n $message,\n $params,\n $response,\n $model,\n $pending: false,\n $validator: validatorName\n });\n }\n\n return {\n $valid: all.$valid && $valid,\n $data: all.$data,\n $errors: all.$errors\n };\n }, {\n $valid: true,\n $data: {},\n $errors: []\n });\n all.$data[property] = propertyResult.$data;\n all.$errors[property] = propertyResult.$errors;\n return {\n $valid: all.$valid && propertyResult.$valid,\n $data: all.$data,\n $errors: all.$errors\n };\n }, {\n $valid: true,\n $data: {},\n $errors: {}\n });\n return {\n $valid: previous.$valid && collectionEntryResult.$valid,\n $data: previous.$data.concat(collectionEntryResult.$data),\n $errors: previous.$errors.concat(collectionEntryResult.$errors)\n };\n }, {\n $valid: true,\n $data: [],\n $errors: []\n });\n },\n\n // collect all the validation errors into a 2 dimensional array, for each entry in the collection, you have an array of error messages.\n $message: _ref3 => {\n let {\n $response\n } = _ref3;\n return $response ? $response.$errors.map(context => {\n return Object.values(context).map(errors => errors.map(error => error.$message)).reduce((a, b) => a.concat(b), []);\n }) : [];\n }\n };\n}\n\n// \"required\" core, used in almost every validator to allow empty values\nconst req = value => {\n value = unref(value);\n if (Array.isArray(value)) return !!value.length;\n\n if (value === undefined || value === null) {\n return false;\n }\n\n if (value === false) {\n return true;\n }\n\n if (value instanceof Date) {\n // invalid date won't pass\n return !isNaN(value.getTime());\n }\n\n if (typeof value === 'object') {\n for (let _ in value) return true;\n\n return false;\n }\n\n return !!String(value).length;\n};\n/**\n * Returns the length of an arbitrary value\n * @param {Array|Object|String} value\n * @return {number}\n */\n\nconst len = value => {\n value = unref(value);\n if (Array.isArray(value)) return value.length;\n\n if (typeof value === 'object') {\n return Object.keys(value).length;\n }\n\n return String(value).length;\n};\n/**\n * Regex based validator template\n * @param {RegExp} expr\n * @return {function(*=): boolean}\n */\n\nfunction regex() {\n for (var _len = arguments.length, expr = new Array(_len), _key = 0; _key < _len; _key++) {\n expr[_key] = arguments[_key];\n }\n\n return value => {\n value = unref(value);\n return !req(value) || expr.every(reg => reg.test(value));\n };\n}\n\nvar common = /*#__PURE__*/Object.freeze({\n __proto__: null,\n withParams: withParams,\n withMessage: withMessage,\n withAsync: withAsync,\n forEach: forEach,\n req: req,\n len: len,\n regex: regex,\n unwrap: unref,\n unwrapNormalizedValidator: unwrapNormalizedValidator,\n unwrapValidatorResponse: unwrapValidatorResponse,\n normalizeValidatorObject: normalizeValidatorObject\n});\n\nvar alpha$1 = regex(/^[a-zA-Z]*$/);\n\n/**\n * Validate if value is alphabetical string.\n * @type {NormalizedValidator}\n */\n\nvar alpha = {\n $validator: alpha$1,\n $message: 'The value is not alphabetical',\n $params: {\n type: 'alpha'\n }\n};\n\nvar alphaNum$1 = regex(/^[a-zA-Z0-9]*$/);\n\n/**\n * Validate if value is alpha-numeric string.\n * @type {NormalizedValidator}\n */\n\nvar alphaNum = {\n $validator: alphaNum$1,\n $message: 'The value must be alpha-numeric',\n $params: {\n type: 'alphaNum'\n }\n};\n\nvar numeric$1 = regex(/^\\d*(\\.\\d+)?$/);\n\n/**\n * Check whether a value is numeric.\n * @type NormalizedValidator\n */\n\nvar numeric = {\n $validator: numeric$1,\n $message: 'Value must be numeric',\n $params: {\n type: 'numeric'\n }\n};\n\n/**\n * Check if a numeric value is between two values.\n * @param {Ref<Number> | Number} min\n * @param {Ref<Number> | Number} max\n * @return {function(*=): boolean}\n */\n\nfunction between$1 (min, max) {\n return value => !req(value) || (!/\\s/.test(value) || value instanceof Date) && +unref(min) <= +value && +unref(max) >= +value;\n}\n\n/**\n * Checks if a value is between two values.\n * @param {Ref<Number> | Number} min\n * @param {Ref<Number> | Number} max\n * @return {NormalizedValidator}\n */\n\nfunction between (min, max) {\n return {\n $validator: between$1(min, max),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The value must be between ${$params.min} and ${$params.max}`;\n },\n $params: {\n min,\n max,\n type: 'between'\n }\n };\n}\n\nconst emailRegex = /^(?:[A-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[A-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nvar email$1 = regex(emailRegex);\n\n/**\n * Validate if value is an email.\n * @type {NormalizedValidator}\n */\n\nvar email = {\n $validator: email$1,\n $message: 'Value is not a valid email address',\n $params: {\n type: 'email'\n }\n};\n\n/**\n * Check if a string is an IP Address\n * @param {String} value\n * @returns {boolean}\n */\n\nfunction ipAddress$1 (value) {\n if (!req(value)) {\n return true;\n }\n\n if (typeof value !== 'string') {\n return false;\n }\n\n const nibbles = value.split('.');\n return nibbles.length === 4 && nibbles.every(nibbleValid);\n}\n\nconst nibbleValid = nibble => {\n if (nibble.length > 3 || nibble.length === 0) {\n return false;\n }\n\n if (nibble[0] === '0' && nibble !== '0') {\n return false;\n }\n\n if (!nibble.match(/^\\d+$/)) {\n return false;\n }\n\n const numeric = +nibble | 0;\n return numeric >= 0 && numeric <= 255;\n};\n\n/**\n * Validate if value is an ipAddress string.\n * @type {NormalizedValidator}\n */\n\nvar ipAddress = {\n $validator: ipAddress$1,\n $message: 'The value is not a valid IP address',\n $params: {\n type: 'ipAddress'\n }\n};\n\n/**\n * Check if value is a properly formatted Mac Address.\n * @param {String | Ref<String>} [separator]\n * @returns {function(*): boolean}\n */\n\nfunction macAddress$1 () {\n let separator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ':';\n return value => {\n separator = unref(separator);\n\n if (!req(value)) {\n return true;\n }\n\n if (typeof value !== 'string') {\n return false;\n }\n\n const parts = typeof separator === 'string' && separator !== '' ? value.split(separator) : value.length === 12 || value.length === 16 ? value.match(/.{2}/g) : null;\n return parts !== null && (parts.length === 6 || parts.length === 8) && parts.every(hexValid);\n };\n}\n\nconst hexValid = hex => hex.toLowerCase().match(/^[0-9a-f]{2}$/);\n\n/**\n * Validate if value is a valid Mac Address string.\n * @returns {NormalizedValidator}\n */\n\nfunction macAddress (separator) {\n return {\n $validator: macAddress$1(separator),\n $message: 'The value is not a valid MAC Address',\n $params: {\n type: 'macAddress'\n }\n };\n}\n\n/**\n * Check if provided value has a maximum length\n * @param {Number | Ref<Number>} length\n * @returns {function(Array|Object|String): boolean}\n */\n\nfunction maxLength$1 (length) {\n return value => !req(value) || len(value) <= unref(length);\n}\n\n/**\n * Validate the max length of a string.\n * @param {Number} max\n * @return {NormalizedValidator}\n */\n\nfunction maxLength (max) {\n return {\n $validator: maxLength$1(max),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The maximum length allowed is ${$params.max}`;\n },\n $params: {\n max,\n type: 'maxLength'\n }\n };\n}\n\n/**\n * Check if value is above a threshold.\n * @param {Number | Ref<Number>} length\n * @returns {function(Array|Object|String): boolean}\n */\n\nfunction minLength$1 (length) {\n return value => !req(value) || len(value) >= unref(length);\n}\n\n/**\n * Check if value is above a threshold.\n * @param {Number | Ref<Number>} min\n * @returns {NormalizedValidator}\n */\n\nfunction minLength (min) {\n return {\n $validator: minLength$1(min),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `This field should be at least ${$params.min} characters long`;\n },\n $params: {\n min,\n type: 'minLength'\n }\n };\n}\n\n/**\n * Validates if a value is empty.\n * @param {String | Array | Date | Object} value\n * @returns {boolean}\n */\n\nfunction required$1 (value) {\n if (typeof value === 'string') {\n value = value.trim();\n }\n\n return req(value);\n}\n\n/**\n * Check if a value is empty or not.\n * @type {NormalizedValidator}\n */\n\nvar required = {\n $validator: required$1,\n $message: 'Value is required',\n $params: {\n type: 'required'\n }\n};\n\nconst validate$1 = (prop, val) => prop ? req(typeof val === 'string' ? val.trim() : val) : true;\n/**\n * Returns required if the passed property is truthy\n * @param {Boolean | String | function(any): Boolean | Ref<string | boolean>} propOrFunction\n * @return {function(value: *, parentVM: object): Boolean}\n */\n\n\nfunction requiredIf$1(propOrFunction) {\n return function (value, parentVM) {\n if (typeof propOrFunction !== 'function') {\n return validate$1(unref(propOrFunction), value);\n }\n\n const result = propOrFunction.call(this, value, parentVM);\n return validate$1(result, value);\n };\n}\n\n/**\n * Returns required if the passed property is truthy\n * @param {Boolean | String | function(): (Boolean | Promise<boolean>)} prop\n * @return {NormalizedValidator}\n */\n\nfunction requiredIf (prop) {\n return {\n $validator: requiredIf$1(prop),\n $message: 'The value is required',\n $params: {\n type: 'requiredIf',\n prop\n }\n };\n}\n\nconst validate = (prop, val) => !prop ? req(typeof val === 'string' ? val.trim() : val) : true;\n/**\n * Returns required if the passed property is falsy.\n * @param {Boolean | String | function(any): Boolean | Ref<string | boolean>} propOrFunction\n * @return {function(value: *, parentVM: object): Boolean}\n */\n\n\nfunction requiredUnless$1(propOrFunction) {\n return function (value, parentVM) {\n if (typeof propOrFunction !== 'function') {\n return validate(unref(propOrFunction), value);\n }\n\n const result = propOrFunction.call(this, value, parentVM);\n return validate(result, value);\n };\n}\n\n/**\n * Returns required unless the passed property is truthy\n * @param {Boolean | String | function(): (Boolean | Promise<boolean>)} prop\n * @return {NormalizedValidator}\n */\n\nfunction requiredUnless (prop) {\n return {\n $validator: requiredUnless$1(prop),\n $message: 'The value is required',\n $params: {\n type: 'requiredUnless',\n prop\n }\n };\n}\n\n/**\n * Check if two values are identical.\n * @param {*} equalTo\n * @return {function(*=): boolean}\n */\n\nfunction sameAs$1 (equalTo) {\n return value => unref(value) === unref(equalTo);\n}\n\n/**\n * Check if two values are identical\n * @param {*} equalTo\n * @param {String} [otherName]\n * @return {NormalizedValidator}\n */\n\nfunction sameAs (equalTo) {\n let otherName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'other';\n return {\n $validator: sameAs$1(equalTo),\n $message: _ref => {\n return `The value must be equal to the ${otherName} value`;\n },\n $params: {\n equalTo,\n otherName,\n type: 'sameAs'\n }\n };\n}\n\n/**\n * Regex taken from {@link https://gist.github.com/dperini/729294}\n */\n\nconst urlRegex = /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i;\nvar url$1 = regex(urlRegex);\n\n/**\n * Check if a value is a url\n * @type {NormalizedValidator}\n */\n\nvar url = {\n $validator: url$1,\n $message: 'The value is not a valid URL address',\n $params: {\n type: 'url'\n }\n};\n\nfunction _await$1(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n\nfunction syncOr(validators) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return validators.reduce((valid, fn) => {\n if (unwrapValidatorResponse(valid)) return valid;\n return unwrapNormalizedValidator(fn).apply(this, args);\n }, false);\n };\n}\n\nfunction asyncOr(validators) {\n return function () {\n const _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return validators.reduce(function (valid, fn) {\n return _await$1(valid, function (r) {\n return unwrapValidatorResponse(r) ? r : unwrapNormalizedValidator(fn).apply(_this, args);\n });\n }, Promise.resolve(false));\n };\n}\n/**\n * Returns true when one of the provided functions returns true.\n * @param {...(NormalizedValidator|Function)} validators\n * @return {{$validator: function(...[*]=): (boolean | Promise<boolean>), $async: boolean, $watchTargets: any[]}}\n */\n\n\nfunction or$1() {\n for (var _len3 = arguments.length, validators = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n validators[_key3] = arguments[_key3];\n }\n\n const $async = validators.some(v => v.$async);\n const $watchTargets = validators.reduce((all, v) => {\n if (!v.$watchTargets) return all;\n return all.concat(v.$watchTargets);\n }, []);\n\n let $validator = () => false;\n\n if (validators.length) $validator = $async ? asyncOr(validators) : syncOr(validators);\n return {\n $async,\n $validator,\n $watchTargets\n };\n}\n\n/**\n * Returns true when one of the provided functions returns true.\n * @param {...(NormalizedValidator|Function)} validators\n * @return {NormalizedValidator}\n */\n\nfunction or () {\n return withParams({\n type: 'or'\n }, withMessage('The value does not match any of the provided validators', or$1(...arguments)));\n}\n\nfunction _await(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n/**\n *\n * @param validators\n * @return {function(...[*]=): Promise<boolean>}\n */\n\n\nfunction syncAnd(validators) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return validators.reduce((valid, fn) => {\n if (!unwrapValidatorResponse(valid)) return valid;\n return unwrapNormalizedValidator(fn).apply(this, args);\n }, true);\n };\n}\n\nfunction asyncAnd(validators) {\n return function () {\n const _this = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return validators.reduce(function (valid, fn) {\n return _await(valid, function (r) {\n return unwrapValidatorResponse(r) ? unwrapNormalizedValidator(fn).apply(_this, args) : r;\n });\n }, Promise.resolve(true));\n };\n}\n/**\n * Returns true when all validators are truthy\n * @param {...(NormalizedValidator | Function)} validators\n * @return {{$validator: function(...[*]=): (boolean | Promise<boolean>), $async: boolean, $watchTargets: any[]}}\n */\n\n\nfunction and$1() {\n for (var _len3 = arguments.length, validators = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n validators[_key3] = arguments[_key3];\n }\n\n const $async = validators.some(v => v.$async);\n const $watchTargets = validators.reduce((all, v) => {\n if (!v.$watchTargets) return all;\n return all.concat(v.$watchTargets);\n }, []);\n\n let $validator = () => false;\n\n if (validators.length) $validator = $async ? asyncAnd(validators) : syncAnd(validators);\n return {\n $async,\n $validator,\n $watchTargets\n };\n}\n\n/**\n * Validate if all validators match.\n * @param {...*} validators\n * @returns {NormalizedValidator}\n */\n\nfunction and () {\n return withParams({\n type: 'and'\n }, withMessage('The value does not match all of the provided validators', and$1(...arguments)));\n}\n\n/**\n * Swaps the result of a value\n * @param {NormalizedValidator|Function} validator\n * @returns {function(*=, *=): boolean}\n */\n\nfunction not$1 (validator) {\n return function (value, vm) {\n if (!req(value)) return true;\n const response = unwrapNormalizedValidator(validator).call(this, value, vm);\n if (!isPromise(response)) return !unwrapValidatorResponse(response);\n return response.then(r => !unwrapValidatorResponse(r));\n };\n}\n\n/**\n * Swaps the result of a value\n * @param {NormalizedValidator|Function} validator\n * @returns {NormalizedValidator}\n */\n\nfunction not (validator) {\n return {\n $validator: not$1(validator),\n $message: `The value does not match the provided validator`,\n $params: {\n type: 'not'\n }\n };\n}\n\n/**\n * Check if a value is above a threshold.\n * @param {String | Number | Ref<Number> | Ref<String>} min\n * @returns {function(*=): boolean}\n */\n\nfunction minValue$1 (min) {\n return value => !req(value) || (!/\\s/.test(value) || value instanceof Date) && +value >= +unref(min);\n}\n\n/**\n * Check if a value is above a threshold.\n * @param {String | Number | Ref<Number> | Ref<String>} min\n * @returns {NormalizedValidator}\n */\n\nfunction minValue (min) {\n return {\n $validator: minValue$1(min),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The minimum value allowed is ${$params.min}`;\n },\n $params: {\n min,\n type: 'minValue'\n }\n };\n}\n\n/**\n * Check if value is below a threshold.\n * @param {Number | Ref<Number> | Ref<String>} max\n * @returns {function(*=): boolean}\n */\n\nfunction maxValue$1 (max) {\n return value => !req(value) || (!/\\s/.test(value) || value instanceof Date) && +value <= +unref(max);\n}\n\n/**\n * Check if value is below a threshold.\n * @param {Number | Ref<Number> | Ref<String>} max\n * @return {NormalizedValidator}\n */\n\nvar maxValue = (max => ({\n $validator: maxValue$1(max),\n $message: _ref => {\n let {\n $params\n } = _ref;\n return `The maximum value allowed is ${$params.max}`;\n },\n $params: {\n max,\n type: 'maxValue'\n }\n}));\n\n// ^-[0-9]+$ - only for negative integer (minus sign without at least 1 digit is not a number)\n\nvar integer$1 = regex(/(^[0-9]*$)|(^-[0-9]+$)/);\n\n/**\n * Validate if value is integer.\n * @type {NormalizedValidator}\n */\n\nvar integer = {\n $validator: integer$1,\n $message: 'Value is not an integer',\n $params: {\n type: 'integer'\n }\n};\n\nvar decimal$1 = regex(/^[-]?\\d*(\\.\\d+)?$/);\n\n/**\n * Validate if value is decimal number.\n * @type {NormalizedValidator}\n */\n\nvar decimal = {\n $validator: decimal$1,\n $message: 'Value must be decimal',\n $params: {\n type: 'decimal'\n }\n};\n\n/**\n * Creates a translatable version of `withMessage` helper.\n * @param {function} t - the translation function of your choice\n * @param {function} [messagePath] - a function to generate the message path, passed to `t` for each message. By default it is `validations.${$validator}`\n * @param {function} [messageParams] - a function to augment the params, passed to `t` for each message.\n */\n\nfunction createI18nMessage(_ref) {\n let {\n t,\n messagePath = _ref2 => {\n let {\n $validator\n } = _ref2;\n return `validations.${$validator}`;\n },\n messageParams = params => params\n } = _ref;\n return function withI18nMessage(validator) {\n let {\n withArguments = false,\n messagePath: localMessagePath = messagePath,\n messageParams: localMessageParams = messageParams\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n function message(props) {\n return t(localMessagePath(props), localMessageParams(Object.assign({\n model: props.$model,\n property: props.$property,\n pending: props.$pending,\n invalid: props.$invalid,\n response: props.$response,\n validator: props.$validator,\n propertyPath: props.$propertyPath\n }, props.$params)));\n }\n\n if (withArguments && typeof validator === 'function') {\n return function () {\n return withMessage(message, validator(...arguments));\n };\n }\n\n return withMessage(message, validator);\n };\n}\n\nexport { alpha, alphaNum, and, between, createI18nMessage, decimal, email, common as helpers, integer, ipAddress, macAddress, maxLength, maxValue, minLength, minValue, not, numeric, or, required, requiredIf, requiredUnless, sameAs, url };\n","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n } else {\n setOverflowHidden(options);\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n } else if (!locks.length) {\n restoreOverflowSetting();\n }\n};\n\n","\"use strict\";function getIlluminant(r){return ILLUMINANTS[r]}function matrixMultiply(r,t){for(var n=[],e=0;e<r.length;e++){n[e]=[];for(var o=0;o<t[0].length;o++){for(var u=0,a=0;a<r[0].length;a++)u+=r[e][a]*t[a][o];n[e][o]=u}}return n}function getTransform(r){return TRANSFORMS[r]}function determineType(r){var t=types.find(function(t){return testColorType[t](r)});if(!t)throw new Error(\"No type found for color \"+r);return t}function toRadian(r){return r*(Math.PI/180)}function toDegree(r){return r*(180/Math.PI)}function negativeModulo(r,t){return(r%t+t)%t}function bounded(r,t){return r<t[0]?r=t[0]:r>t[1]&&(r=t[1]),r}function boundedRgb(r){return{r:bounded255(r.r),g:bounded255(r.g),b:bounded255(r.b)}}function cubeRoot(r){if(Math.cbrt)return Math.cbrt(r);var t=Math.pow(Math.abs(r),1/3);return r<0?-t:t}function convert(r,t,n){if(void 0===t)throw new Error(\"No value provided\");var e=n||determineType(t);if(e===r)return t;if(conversions[e][r])return convertNow(e,r,t);var o=conversionSteps[e],u=\"string\"==typeof o?o:o[r]||o.default;return convert(r,convertNow(e,u,t),u)}function makeColourObject(r){var t={};return types$1.forEach(function(n){Object.defineProperty(t,n,{get:function(){return convertArrayOrColour(n,r)},enumerable:!0})}),t}function adapt(r,t,n){var e=convert(\"XYZ\",r),o=convert(\"lms\",getIlluminant(t)||getIlluminant(\"D65\")),u=convert(\"lms\",getIlluminant(n)||getIlluminant(\"D65\")),a=getTransform(\"BRADFORD\"),c=matrixMultiply(matrixMultiply(matrixMultiply(getTransform(\"INVERSE_BRADFORD\"),[[o.rho/u.rho,0,0],[0,o.gamma/u.gamma,0],[0,0,o.beta/u.beta]]),a),[[e.X],[e.Y],[e.Z]]);return makeColourObject({X:c[0][0],Y:c[1][0],Z:c[2][0]})}function adjacent(r,t,n){for(var e=convert(\"hsl\",n),o=[{h:e.h,s:e.s,l:e.l}],u=0;u<t-1;u++)e.h=negativeModulo(e.h+r,360),o.push({h:e.h,s:e.s,l:e.l});return makeColourObject(o)}function brightness(r,t){var n=convert(\"hsl\",t);return n.l+=r,n.l<0?n.l=0:n.l>100&&(n.l=100),makeColourObject(n)}function complementary(r){var t=convert(\"hsl\",r);return t.h=(t.h+180)%360,makeColourObject(t)}function contrast(r,t){var n=convert(\"rgb\",t);return n.r=255*((n.r/255-.5)*r+.5),n.r<0?n.r=0:n.r>255&&(n.r=255),n.g=255*((n.g/255-.5)*r+.5),n.g<0?n.g=0:n.g>255&&(n.g=255),n.b=255*((n.b/255-.5)*r+.5),n.b<0?n.b=0:n.b>255&&(n.b=255),makeColourObject(n)}function contrastRatio(r){var t=convert(\"rgb\",r);return t=(299*t.r+587*t.g+114*t.b)/1e3>=128?{r:0,g:0,b:0}:{r:255,g:255,b:255},makeColourObject(t)}function difference(r,t,n,e){n=n||1,e=e||1;var o=convert(\"cielab\",r),u=convert(\"cielab\",t),a=Math.sqrt(Math.pow(o.a,2)+Math.pow(o.b,2)),c=a-Math.sqrt(Math.pow(u.a,2)+Math.pow(u.b,2)),i=o.L-u.L,s=o.a-u.a,l=o.b-u.b,h=Math.sqrt(Math.pow(s,2)+Math.pow(l,2)-Math.pow(c,2)),f=o.L<16?.511:.040975*o.L/(1.01765*o.L),v=.0638*a/(1.0131*a),b=Math.atan2(o.b,o.a),g=b>=0?b:b+360,p=g>=164&&g<=345?.56+Math.abs(.2*Math.cos(toRadian(g+168))):.36+Math.abs(.4*Math.cos(toRadian(g+35))),m=Math.pow(a,4)/(Math.pow(a,4)+1900),d=v*(m*p+1-m),Y=Math.pow(i/(n*f),2),M=Math.pow(c/(e*v),2),y=Math.pow(h/d,2);return Math.sqrt(Y+M+y)}function slopeMod(r,t){return r>2*t?slopeMod(r-2*t,t):r>t?2*t-r:r<0?slopeMod(r+2*t,t):r}function fade(r,t,n){var e=convert(\"rgb\",t),o=convert(\"rgb\",n),u=[e];r-=1;for(var a=(o.r-e.r)/r,c=(o.g-e.g)/r,i=(o.b-e.b)/r,s={r:e.r,g:e.g,b:e.b},l=0;l<r-1;l++)s.r=slopeMod(s.r+a,255),s.g=slopeMod(s.g+c,255),s.b=slopeMod(s.b+i,255),u.push({r:s.r,g:s.g,b:s.b});return u.push(o),makeColourObject(u)}function greyscale(r){var t=convert(\"rgb\",r),n=(t.r+t.g+t.b)/3;return t={r:n,g:n,b:n},makeColourObject(t)}function hue(r,t){var n=convert(\"hsl\",t);return n.h=negativeModulo(n.h+r,360),makeColourObject(n)}function invert(r){var t=convert(\"rgb\",r);return t.r=negativeModulo(255-t.r,255),t.g=negativeModulo(255-t.g,255),t.b=negativeModulo(255-t.b,255),makeColourObject(t)}function invertLightness(r){var t=convert(\"hsl\",r);return t.l=100-t.l,makeColourObject(t)}function mid(r,t){var n=convert(\"hsl\",r),e=convert(\"hsl\",t);return makeColourObject({h:(n.h+e.h)/2,s:(n.s+e.s)/2,l:(n.l+e.l)/2})}function multiply(r,t){var n=convert(\"hsl\",r),e=convert(\"hsl\",t),o={h:n.h,s:n.s,l:n.l/100*(e.l/100)*100};return o.l=o.l>100?100:o.l,o.l=o.l<0?0:o.l,makeColourObject(o)}function saturation(r,t){var n=convert(\"hsl\",t);return n.s+=r,n.s<0?n.s=0:n.s>100&&(n.s=100),makeColourObject(n)}function sepia(r){var t=convert(\"rgb\",r),n={};return n.r=.393*t.r+.769*t.g+.189*t.b,n.g=.349*t.r+.686*t.g+.168*t.b,n.b=.272*t.r+.534*t.g+.131*t.b,makeColourObject(n)}function shade(r,t){var n=convert(\"hsv\",t);return console.log(n),n.v+=r,n.v<0?n.v=0:n.v>100&&(n.v=100),console.log(n),makeColourObject(n)}function temperature(r){var t=convert(\"xyY\",r),n=(t.x-.332)/(t.y-.1858);return-449*Math.pow(n,3)+3525*Math.pow(n,2)-6823.3*n+5520.33}function tetrad(r){for(var t=convert(\"hsl\",r),n=[{h:t.h,s:t.s,l:t.l}],e=0;e<3;e++)t.h=(t.h+90)%360,n.push({h:t.h,s:t.s,l:t.l});return makeColourObject(n)}function triad(r){for(var t=convert(\"hsl\",r),n=[{h:t.h,s:t.s,l:t.l}],e=0;e<2;e++)t.h=(t.h+120)%360,n.push({h:t.h,s:t.s,l:t.l});return makeColourObject(n)}function complementary$1(r){var t=convert(\"hsluv\",r);return t.hu=(t.hu+180)%360,makeColourObject(t)}function triad$1(r){for(var t=convert(\"hsluv\",r),n=[{hu:t.hu,s:t.s,l:t.l}],e=0;e<2;e++)t.hu=(t.hu+120)%360,n.push({h:t.hu,s:t.s,l:t.l});return makeColourObject(n)}function tetrad$1(r){for(var t=convert(\"hsluv\",r),n=[{hu:t.hu,s:t.s,l:t.l}],e=0;e<3;e++)t.hu=(t.hu+90)%360,n.push({h:t.hu,s:t.s,l:t.l});return makeColourObject(n)}Object.defineProperty(exports,\"__esModule\",{value:!0});var ILLUMINANTS={A:{X:1.0985*100,Y:100,Z:35.585},B:{X:99.072,Y:100,Z:85.223},C:{X:98.074,Y:100,Z:118.232},D50:{X:96.422,Y:100,Z:82.521},D55:{X:95.682,Y:100,Z:92.149},D65:{X:95.047,Y:100,Z:108.883},D75:{X:94.972,Y:100,Z:122.638},E:{X:100,Y:100,Z:100},F2:{X:.99186*100,Y:100,Z:67.393},F7:{X:95.041,Y:100,Z:108.747},F11:{X:1.00962*100,Y:100,Z:64.35}},TRANSFORMS={BRADFORD:[[.8951,.2664,-.1614],[-.7502,1.7135,.0367],[.0389,-.0685,1.0296]],INVERSE_BRADFORD:[[.9869929,-.1470543,.1599627],[.4323053,.5183603,.0492912],[-.0085287,.0400428,.9684867]],SRGB_XYZ:[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],INVERSE_SRGB_XYZ:[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]]},contains=function(r,t){var n=new Set(Object.keys(r));return t.every(function(r){return n.has(r)})},stringStartsWith=function(r,t){return\"string\"==typeof r&&r.slice(0,t.length)===t},testColorType={hex:function(r){return stringStartsWith(r,\"#\")},rgb:function(r){return contains(r,[\"r\",\"g\",\"b\"])},cssrgb:function(r){return stringStartsWith(r,\"rgb(\")},hsl:function(r){return contains(r,[\"h\",\"s\",\"l\"])},csshsl:function(r){return stringStartsWith(r,\"hsl(\")},hsv:function(r){return contains(r,[\"h\",\"s\",\"v\"])},cmyk:function(r){return contains(r,[\"c\",\"m\",\"y\",\"k\"])},yiq:function(r){return contains(r,[\"y\",\"i\",\"q\"])},XYZ:function(r){return contains(r,[\"X\",\"Y\",\"Z\"])},xyY:function(r){return contains(r,[\"x\",\"y\",\"Y\"])},lms:function(r){return contains(r,[\"rho\",\"gamma\",\"beta\"])},cielab:function(r){return contains(r,[\"L\",\"a\",\"b\"])},cieluv:function(r){return contains(r,[\"L\",\"u\",\"v\"])},cielch:function(r){return contains(r,[\"L\",\"C\",\"h\"])},hsluv:function(r){return contains(r,[\"hu\",\"s\",\"l\"])}},types=Object.keys(testColorType),epsilon=.008856,kappa=903.3,white=getIlluminant(\"D65\"),toR=function(r){return Math.pow(r,3)>epsilon?Math.pow(r,3):(116*r-16)/kappa},cielab={XYZ:function(r){var t=(r.L+16)/116,n=r.a/500+t,e=t-r.b/200,o=toR(n),u=toR(e),a=r.L>kappa*epsilon?Math.pow(t,3):r.L/kappa;return{X:o*white.X,Y:a*white.Y,Z:u*white.Z}}},cielch={cieluv:function(r){var t=toRadian(r.h),n=r.C*Math.cos(t),e=r.C*Math.sin(t);return{L:r.L,u:n,v:e}},hsluv:function(r){if(r.L>99.9999999)return{hu:r.h,s:0,l:100};if(r.L<1e-8)return{hu:r.h,s:0,l:0};for(var t=(r.L+16)/1560896,n=t>.008856?t:r.L/903.3,e=getTransform(\"INVERSE_SRGB_XYZ\"),o=[],u=0;u<3;u++)for(var a=e[u][0],c=e[u][1],i=e[u][2],s=0;s<2;s++){var l=(284517*a-94839*i)*n,h=(838422*i+769860*c+731718*a)*r.L*n-769860*s*r.L,f=(632260*i-126452*c)*n+126452*s;o.push({m:l/f,b:h/f})}var v=Number.MAX_VALUE,b=toRadian(r.h);o.forEach(function(r){var t=r.b/(Math.sin(b)-r.m*Math.cos(b));t>=0&&(v=Math.min(v,t))});var g=v;return{hu:r.h,s:r.C/g*100,l:r.L}}},cieluv={XYZ:function(r){var t=getIlluminant(\"D65\"),n=function(r){return 4*r.X/(r.X+15*r.Y+3*r.Z)}(t),e=function(r){return 9*r.Y/(r.X+15*r.Y+3*r.Z)}(t),o=1/3*(52*r.L/(r.u+13*r.L*n)-1),u=r.L>903.3*.008856?Math.pow((r.L+16)/116,3):r.L/903.3,a=-5*u,c=(u*(39*r.L/(r.v+13*r.L*e)-5)-a)/(o- -1/3);return{X:100*c,Y:100*u,Z:100*(c*o+a)}},cielch:function(r){var t=Math.sqrt(Math.pow(r.u,2)+Math.pow(r.v,2)),n=Math.atan2(r.v,r.u);return n<0&&(n+=2*Math.PI),n=toDegree(n),{L:r.L,C:t,h:n}}},rgb=function(r){return{r:255*(1-r.c)*(1-r.k),g:255*(1-r.m)*(1-r.k),b:255*(1-r.y)*(1-r.k)}},cmyk={rgb:rgb,cssrgb:function(r){var t=rgb(r),n=t.r,e=t.g,o=t.b;return\"rgb(\"+Math.round(n)+\",\"+Math.round(e)+\",\"+Math.round(o)+\")\"}},csshsl={hsl:function(r){var t=r.replace(/(hsl\\(|\\)|%|[\\s]*)/g,\"\").split(\",\").map(function(r){return parseInt(r,10)});return{h:t[0],s:t[1],l:t[2]}}},cssrgb={rgb:function(r){var t=r.replace(/((rgb\\(|\\))|[\\s]*)/g,\"\").split(\",\").map(function(r){return parseInt(r,10)});return{r:t[0],g:t[1],b:t[2]}}},hex={rgb:function(r){var t=r.replace(\"#\",\"\").match(/.{2}/g).map(function(r){return parseInt(r,16)});return{r:t[0],g:t[1],b:t[2]}}},hsl={rgb:function(r){if(0===r.s){var t=r.l/100*255;return{r:t,g:t,b:t}}var n,e,o;n=r.l>=50?r.l/100+r.s/100-r.l/100*(r.s/100):r.l/100*(1+r.s/100),e=r.l/100*2-n;var u,a,c,i=((o=r.h/360)+.333)%1,s=o,l=negativeModulo(o-.333,1);return u=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+6*(.666-i)*(n-e):e,a=6*s<1?e+6*(n-e)*s:2*s<1?n:3*s<2?e+6*(.666-s)*(n-e):e,c=6*l<1?e+6*(n-e)*l:2*l<1?n:3*l<2?e+6*(.666-l)*(n-e):e,u<0&&(u=0),a<0&&(a=0),c<0&&(c=0),{r:255*u,g:255*a,b:255*c}},csshsl:function(r){return\"hsl(\"+Math.round(r.h)+\",\"+Math.round(r.s)+\"%,\"+Math.round(r.l)+\"%)\"},hsv:function(r){var t=Object.assign({},r,{s:r.s/100,l:r.l/100}),n=t.s*(t.l<.5?t.l:1-t.l);return{h:t.h,s:100*(2*n/(t.l+n)),v:100*(t.l+n)}}},hsluv={cielch:function(r){if(r.L>99.9999999)return{L:100,C:0,h:r.hu};if(r.L<1e-8)return{L:0,C:0,h:r.hu};for(var t=(r.l+16)/1560896,n=t>.008856?t:r.l/903.3,e=getTransform(\"INVERSE_SRGB_XYZ\"),o=[],u=0;u<3;u++)for(var a=e[u][0],c=e[u][1],i=e[u][2],s=0;s<2;s++){var l=(284517*a-94839*i)*n,h=(838422*i+769860*c+731718*a)*r.l*n-769860*s*r.l,f=(632260*i-126452*c)*n+126452*s;o.push({m:l/f,b:h/f})}var v=Number.MAX_VALUE,b=toRadian(r.hu);o.forEach(function(r){var t=r.b/(Math.sin(b)-r.m*Math.cos(b));t>=0&&(v=Math.min(v,t))});var g=v;return{L:r.l,C:g/100*r.s,h:r.hu}}},hsv={hsl:function(r){var t=Object.assign({},r,{h:r.h/360,s:r.s/100,v:r.v/100});return{h:360*t.h,s:100*((2-t.s)*t.v<1?t.s*t.v/((2-t.s)*t.v):t.s*t.v/(2-(2-t.s)*t.v)),l:100*((2-t.s)*t.v/2)}}},lms={XYZ:function(r){var t=[r.rho,r.gamma,r.beta],n=getTransform(\"INVERSE_BRADFORD\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)});return{X:100*n[0],Y:100*n[1],Z:100*n[2]}}},bounded255=function(r){return bounded(r,[0,255])},slicedToArray=function(){function r(r,t){var n=[],e=!0,o=!1,u=void 0;try{for(var a,c=r[Symbol.iterator]();!(e=(a=c.next()).done)&&(n.push(a.value),!t||n.length!==t);e=!0);}catch(r){o=!0,u=r}finally{try{!e&&c.return&&c.return()}finally{if(o)throw u}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return r(t,n);throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}}(),epsilon$1=.008856,kappa$1=903.3,white$1=getIlluminant(\"D65\"),fromXYZ={rgb:function(r){var t=[r.X,r.Y,r.Z].map(function(r){return r/100}),n=getTransform(\"INVERSE_SRGB_XYZ\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)}).map(function(r){return r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055}).map(function(r){return 255*r}),e=slicedToArray(n,3);return boundedRgb({r:e[0],g:e[1],b:e[2]})},lms:function(r){var t=[r.X,r.Y,r.Z].map(function(r){return r/100}),n=getTransform(\"BRADFORD\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)});return{rho:n[0],gamma:n[1],beta:n[2]}},cielab:function(r){var t=r.X/white$1.X,n=r.Y/white$1.Y,e=r.Z/white$1.Z,o=function(r){return r>epsilon$1?cubeRoot(r):(kappa$1*r+16)/116},u=o(t),a=o(n);return{L:116*a-16,a:500*(u-a),b:200*(a-o(e))}},cieluv:function(r){var t=r.Y/white$1.Y,n=t>epsilon$1?116*cubeRoot(t)-16:kappa$1*t,e=function(r){return 4*r.X/(r.X+15*r.Y+3*r.Z)},o=function(r){return 9*r.Y/(r.X+15*r.Y+3*r.Z)};return{L:n,u:13*n*(e(r)-e(white$1)),v:13*n*(o(r)-o(white$1))}},xyY:function(r){return{x:r.X/(r.X+r.Y+r.Z),y:r.Y/(r.X+r.Y+r.Z),Y:r.Y}}},fromXYZTolms=fromXYZ.lms,fromXYZTocielab=fromXYZ.cielab,fromXYZTocieluv=fromXYZ.cieluv,fromXYZToxyY=fromXYZ.xyY,hsl$1=function(r){var t,n,e=r.r/255,o=r.g/255,u=r.b/255,a=[e,o,u].sort(),c=(a[0]+a[2])/2*100;return a[0]===a[2]?(t=0,n=0):(t=c>=50?(a[2]-a[0])/(2-a[2]-a[0])*100:(a[2]-a[0])/(a[2]+a[0])*100,(n=a[2]===e?(o-u)/(a[2]-a[0])*60:a[2]===o?60*(2+(u-e)/(a[2]-a[0])):60*(4+(e-o)/(a[2]-a[0])))<0?n+=360:n>360&&(n%=360)),{h:n,s:t,l:c}},cieluv$1=function(r){return fromXYZTocieluv(XYZ(r))},XYZ=function(r){var t=[r.r,r.g,r.b].map(function(r){return r/255}).map(function(r){return r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}),n=getTransform(\"SRGB_XYZ\").map(function(r){return t.reduce(function(t,n,e){return r[e]*n+t},0)}).map(function(r){return 100*r}),e=slicedToArray(n,3);return{X:e[0],Y:e[1],Z:e[2]}},rgb$1={hex:function(r){var t=Math.round(r.r).toString(16);1===t.length&&(t=\"0\"+t);var n=Math.round(r.g).toString(16);1===n.length&&(n=\"0\"+n);var e=Math.round(r.b).toString(16);return 1===e.length&&(e=\"0\"+e),\"#\"+t+n+e},cssrgb:function(r){return\"rgb(\"+Math.round(r.r)+\",\"+Math.round(r.g)+\",\"+Math.round(r.b)+\")\"},hsl:hsl$1,csshsl:function(r){var t=hsl$1(r),n=t.h,e=t.s,o=t.l;return\"hsl(\"+Math.round(n)+\",\"+Math.round(e)+\"%,\"+Math.round(o)+\"%)\"},cmyk:function(r){var t=r.r/255,n=r.g/255,e=r.b/255,o=1-Math.max(t,n,e);return 1!==o?{c:(1-t-o)/(1-o),m:(1-n-o)/(1-o),y:(1-e-o)/(1-o),k:o}:{c:0,m:0,y:0,k:o}},yiq:function(r){var t=r.r/255*.299+r.g/255*.587+r.b/255*.114,n=r.r/255*.596+r.g/255*-.274+r.b/255*-.322,e=r.r/255*.211+r.g/255*-.523+r.b/255*.312;return n=bounded(n,[-.5957,.5957]),e=bounded(e,[-.5226,.5226]),{y:t,i:n,q:e}},XYZ:XYZ,lms:function(r){return fromXYZTolms(XYZ(r))},cielab:function(r){return fromXYZTocielab(XYZ(r))},cieluv:cieluv$1,xyY:function(r){return fromXYZToxyY(XYZ(r))}},xyY={XYZ:function(r){var t=r.x,n=r.y,e=r.Y;return{X:e/n*t,Y:e,Z:e/n*(1-t-n)}}},bound=function(r){return bounded(r,[0,255])},yiq={rgb:function(r){var t=bounded(r.i,[-.5957,.5957]),n=bounded(r.q,[-.5226,.5226]);return{r:255*bound(r.y+.956*t+.621*n),g:255*bound(r.y+-.272*t+-.647*n),b:255*bound(r.y+-1.106*t+-1.703*n)}}},conversions=Object.freeze({cielab:cielab,cielch:cielch,cieluv:cieluv,cmyk:cmyk,csshsl:csshsl,cssrgb:cssrgb,hex:hex,hsl:hsl,hsluv:hsluv,hsv:hsv,lms:lms,rgb:rgb$1,xyY:xyY,XYZ:fromXYZ,yiq:yiq}),conversionSteps={rgb:{default:\"XYZ\",csshsl:\"hsl\",hsv:\"hsl\"},hex:\"rgb\",hsl:\"rgb\",hsv:\"hsl\",csshsl:\"hsl\",cssrgb:\"rgb\",cmyk:\"rgb\",XYZ:{default:\"rgb\",cielch:\"cieluv\",hsluv:\"cieluv\"},xyY:\"XYZ\",lms:\"XYZ\",cieluv:{default:\"XYZ\",hsluv:\"cielch\"},cielch:\"cieluv\",cielab:\"XYZ\",yiq:\"rgb\",hsluv:\"cielch\"},convertNow=function(r,t,n){return conversions[r][t](n)},types$1=Object.keys(testColorType),convertArrayOrColour=function(r,t){return Array.isArray(t)?t.map(function(t){return convert(r,t)}):convert(r,t)};exports.adapt=adapt,exports.adjacent=adjacent,exports.brightness=brightness,exports.complementary=complementary,exports.contrast=contrast,exports.contrastRatio=contrastRatio,exports.convert=makeColourObject,exports.difference=difference,exports.fade=fade,exports.greyscale=greyscale,exports.hue=hue,exports.invert=invert,exports.invertLightness=invertLightness,exports.mid=mid,exports.multiply=multiply,exports.saturation=saturation,exports.sepia=sepia,exports.shade=shade,exports.temperature=temperature,exports.tetrad=tetrad,exports.triad=triad,exports.uniformComplementary=complementary$1,exports.uniformTriad=triad$1,exports.uniformTetrad=tetrad$1;\n","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e||self)[\"v-click-outside\"]=n()}(this,function(){var e=\"__v-click-outside\",n=\"undefined\"!=typeof window,t=\"undefined\"!=typeof navigator,r=n&&(\"ontouchstart\"in window||t&&navigator.msMaxTouchPoints>0)?[\"touchstart\"]:[\"click\"],i=function(e){var n=e.event,t=e.handler;(0,e.middleware)(n)&&t(n)},a=function(n,t){var a=function(e){var n=\"function\"==typeof e;if(!n&&\"object\"!=typeof e)throw new Error(\"v-click-outside: Binding value must be a function or an object\");return{handler:n?e:e.handler,middleware:e.middleware||function(e){return e},events:e.events||r,isActive:!(!1===e.isActive),detectIframe:!(!1===e.detectIframe),capture:Boolean(e.capture)}}(t.value),o=a.handler,d=a.middleware,c=a.detectIframe,u=a.capture;if(a.isActive){if(n[e]=a.events.map(function(e){return{event:e,srcTarget:document.documentElement,handler:function(e){return function(e){var n=e.el,t=e.event,r=e.handler,a=e.middleware,o=t.path||t.composedPath&&t.composedPath();(o?o.indexOf(n)<0:!n.contains(t.target))&&i({event:t,handler:r,middleware:a})}({el:n,event:e,handler:o,middleware:d})},capture:u}}),c){var l={event:\"blur\",srcTarget:window,handler:function(e){return function(e){var n=e.el,t=e.event,r=e.handler,a=e.middleware;setTimeout(function(){var e=document.activeElement;e&&\"IFRAME\"===e.tagName&&!n.contains(e)&&i({event:t,handler:r,middleware:a})},0)}({el:n,event:e,handler:o,middleware:d})},capture:u};n[e]=[].concat(n[e],[l])}n[e].forEach(function(t){var r=t.event,i=t.srcTarget,a=t.handler;return setTimeout(function(){n[e]&&i.addEventListener(r,a,u)},0)})}},o=function(n){(n[e]||[]).forEach(function(e){return e.srcTarget.removeEventListener(e.event,e.handler,e.capture)}),delete n[e]},d=n?{beforeMount:a,updated:function(e,n){var t=n.value,r=n.oldValue;JSON.stringify(t)!==JSON.stringify(r)&&(o(e),a(e,{value:t}))},unmounted:o}:{};return{install:function(e){e.directive(\"click-outside\",d)},directive:d}});\n//# sourceMappingURL=v-click-outside.umd.js.map\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\n(function() {\n if (typeof window === 'undefined') {\n return;\n }\n\n try {\n var ce = new window.CustomEvent('test', { cancelable: true });\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n } catch (e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {};\n params.bubbles = !!params.bubbles;\n params.cancelable = !!params.cancelable;\n\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(\n event,\n params.bubbles,\n params.cancelable,\n params.detail\n );\n origPrevent = evt.preventDefault;\n evt.preventDefault = function() {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n } catch (e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n }\n})();\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '&quot;';\n break;\n case 38: // &\n escape = '&amp;';\n break;\n case 39: // '\n escape = '&#39;';\n break;\n case 60: // <\n escape = '&lt;';\n break;\n case 62: // >\n escape = '&gt;';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","const LANGUAGES_LIST = {\n aa: {\n name: 'Afar',\n nativeName: 'Afaraf',\n },\n ab: {\n name: 'Abkhaz',\n nativeName: 'аҧсуа бызшәа',\n },\n ae: {\n name: 'Avestan',\n nativeName: 'avesta',\n },\n af: {\n name: 'Afrikaans',\n nativeName: 'Afrikaans',\n },\n ak: {\n name: 'Akan',\n nativeName: 'Akan',\n },\n am: {\n name: 'Amharic',\n nativeName: 'አማርኛ',\n },\n an: {\n name: 'Aragonese',\n nativeName: 'aragonés',\n },\n ar: {\n name: 'Arabic',\n nativeName: 'اَلْعَرَبِيَّةُ',\n },\n as: {\n name: 'Assamese',\n nativeName: 'অসমীয়া',\n },\n av: {\n name: 'Avaric',\n nativeName: 'авар мацӀ',\n },\n ay: {\n name: 'Aymara',\n nativeName: 'aymar aru',\n },\n az: {\n name: 'Azerbaijani',\n nativeName: 'azərbaycan dili',\n },\n ba: {\n name: 'Bashkir',\n nativeName: 'башҡорт теле',\n },\n be: {\n name: 'Belarusian',\n nativeName: 'беларуская мова',\n },\n bg: {\n name: 'Bulgarian',\n nativeName: 'български език',\n },\n bi: {\n name: 'Bislama',\n nativeName: 'Bislama',\n },\n bm: {\n name: 'Bambara',\n nativeName: 'bamanankan',\n },\n bn: {\n name: 'Bengali',\n nativeName: 'বাংলা',\n },\n bo: {\n name: 'Tibetan',\n nativeName: 'བོད་ཡིག',\n },\n br: {\n name: 'Breton',\n nativeName: 'brezhoneg',\n },\n bs: {\n name: 'Bosnian',\n nativeName: 'bosanski jezik',\n },\n ca: {\n name: 'Catalan',\n nativeName: 'Català',\n },\n ce: {\n name: 'Chechen',\n nativeName: 'нохчийн мотт',\n },\n ch: {\n name: 'Chamorro',\n nativeName: 'Chamoru',\n },\n co: {\n name: 'Corsican',\n nativeName: 'corsu',\n },\n cr: {\n name: 'Cree',\n nativeName: 'ᓀᐦᐃᔭᐍᐏᐣ',\n },\n cs: {\n name: 'Czech',\n nativeName: 'čeština',\n },\n cu: {\n name: 'Old Church Slavonic',\n nativeName: 'ѩзыкъ словѣньскъ',\n },\n cv: {\n name: 'Chuvash',\n nativeName: 'чӑваш чӗлхи',\n },\n cy: {\n name: 'Welsh',\n nativeName: 'Cymraeg',\n },\n da: {\n name: 'Danish',\n nativeName: 'dansk',\n },\n de: {\n name: 'German',\n nativeName: 'Deutsch',\n },\n dv: {\n name: 'Divehi',\n nativeName: 'ދިވެހި',\n },\n dz: {\n name: 'Dzongkha',\n nativeName: 'རྫོང་ཁ',\n },\n ee: {\n name: 'Ewe',\n nativeName: 'Eʋegbe',\n },\n el: {\n name: 'Greek',\n nativeName: 'Ελληνικά',\n },\n en: {\n name: 'English',\n nativeName: 'English',\n },\n eo: {\n name: 'Esperanto',\n nativeName: 'Esperanto',\n },\n es: {\n name: 'Spanish',\n nativeName: 'Español',\n },\n et: {\n name: 'Estonian',\n nativeName: 'eesti',\n },\n eu: {\n name: 'Basque',\n nativeName: 'euskara',\n },\n fa: {\n name: 'Persian',\n nativeName: 'فارسی',\n },\n ff: {\n name: 'Fula',\n nativeName: 'Fulfulde',\n },\n fi: {\n name: 'Finnish',\n nativeName: 'suomi',\n },\n fj: {\n name: 'Fijian',\n nativeName: 'vosa Vakaviti',\n },\n fo: {\n name: 'Faroese',\n nativeName: 'føroyskt',\n },\n fr: {\n name: 'French',\n nativeName: 'Français',\n },\n fy: {\n name: 'Western Frisian',\n nativeName: 'Frysk',\n },\n ga: {\n name: 'Irish',\n nativeName: 'Gaeilge',\n },\n gd: {\n name: 'Scottish Gaelic',\n nativeName: 'Gàidhlig',\n },\n gl: {\n name: 'Galician',\n nativeName: 'galego',\n },\n gn: {\n name: 'Guaraní',\n nativeName: \"Avañe'ẽ\",\n },\n gu: {\n name: 'Gujarati',\n nativeName: 'ગુજરાતી',\n },\n gv: {\n name: 'Manx',\n nativeName: 'Gaelg',\n },\n ha: {\n name: 'Hausa',\n nativeName: 'هَوُسَ',\n },\n he: {\n name: 'Hebrew',\n nativeName: 'עברית',\n },\n hi: {\n name: 'Hindi',\n nativeName: 'हिन्दी',\n },\n ho: {\n name: 'Hiri Motu',\n nativeName: 'Hiri Motu',\n },\n hr: {\n name: 'Croatian',\n nativeName: 'Hrvatski',\n },\n ht: {\n name: 'Haitian',\n nativeName: 'Kreyòl ayisyen',\n },\n hu: {\n name: 'Hungarian',\n nativeName: 'magyar',\n },\n hy: {\n name: 'Armenian',\n nativeName: 'Հայերեն',\n },\n hz: {\n name: 'Herero',\n nativeName: 'Otjiherero',\n },\n ia: {\n name: 'Interlingua',\n nativeName: 'Interlingua',\n },\n id: {\n name: 'Indonesian',\n nativeName: 'Bahasa Indonesia',\n },\n ie: {\n name: 'Interlingue',\n nativeName: 'Interlingue',\n },\n ig: {\n name: 'Igbo',\n nativeName: 'Asụsụ Igbo',\n },\n ii: {\n name: 'Nuosu',\n nativeName: 'ꆈꌠ꒿ Nuosuhxop',\n },\n ik: {\n name: 'Inupiaq',\n nativeName: 'Iñupiaq',\n },\n io: {\n name: 'Ido',\n nativeName: 'Ido',\n },\n is: {\n name: 'Icelandic',\n nativeName: 'Íslenska',\n },\n it: {\n name: 'Italian',\n nativeName: 'Italiano',\n },\n iu: {\n name: 'Inuktitut',\n nativeName: 'ᐃᓄᒃᑎᑐᑦ',\n },\n ja: {\n name: 'Japanese',\n nativeName: '日本語',\n },\n jv: {\n name: 'Javanese',\n nativeName: 'basa Jawa',\n },\n ka: {\n name: 'Georgian',\n nativeName: 'ქართული',\n },\n kg: {\n name: 'Kongo',\n nativeName: 'Kikongo',\n },\n ki: {\n name: 'Kikuyu',\n nativeName: 'Gĩkũyũ',\n },\n kj: {\n name: 'Kwanyama',\n nativeName: 'Kuanyama',\n },\n kk: {\n name: 'Kazakh',\n nativeName: 'қазақ тілі',\n },\n kl: {\n name: 'Kalaallisut',\n nativeName: 'kalaallisut',\n },\n km: {\n name: 'Khmer',\n nativeName: 'ខេមរភាសា',\n },\n kn: {\n name: 'Kannada',\n nativeName: 'ಕನ್ನಡ',\n },\n ko: {\n name: 'Korean',\n nativeName: '한국어',\n },\n kr: {\n name: 'Kanuri',\n nativeName: 'Kanuri',\n },\n ks: {\n name: 'Kashmiri',\n nativeName: 'कश्मीरी',\n },\n ku: {\n name: 'Kurdish',\n nativeName: 'Kurdî',\n },\n kv: {\n name: 'Komi',\n nativeName: 'коми кыв',\n },\n kw: {\n name: 'Cornish',\n nativeName: 'Kernewek',\n },\n ky: {\n name: 'Kyrgyz',\n nativeName: 'Кыргызча',\n },\n la: {\n name: 'Latin',\n nativeName: 'latine',\n },\n lb: {\n name: 'Luxembourgish',\n nativeName: 'Lëtzebuergesch',\n },\n lg: {\n name: 'Ganda',\n nativeName: 'Luganda',\n },\n li: {\n name: 'Limburgish',\n nativeName: 'Limburgs',\n },\n ln: {\n name: 'Lingala',\n nativeName: 'Lingála',\n },\n lo: {\n name: 'Lao',\n nativeName: 'ພາສາລາວ',\n },\n lt: {\n name: 'Lithuanian',\n nativeName: 'lietuvių kalba',\n },\n lu: {\n name: 'Luba-Katanga',\n nativeName: 'Kiluba',\n },\n lv: {\n name: 'Latvian',\n nativeName: 'latviešu valoda',\n },\n mg: {\n name: 'Malagasy',\n nativeName: 'fiteny malagasy',\n },\n mh: {\n name: 'Marshallese',\n nativeName: 'Kajin M̧ajeļ',\n },\n mi: {\n name: 'Māori',\n nativeName: 'te reo Māori',\n },\n mk: {\n name: 'Macedonian',\n nativeName: 'македонски јазик',\n },\n ml: {\n name: 'Malayalam',\n nativeName: 'മലയാളം',\n },\n mn: {\n name: 'Mongolian',\n nativeName: 'Монгол хэл',\n },\n mr: {\n name: 'Marathi',\n nativeName: 'मराठी',\n },\n ms: {\n name: 'Malay',\n nativeName: 'Bahasa Melayu',\n },\n mt: {\n name: 'Maltese',\n nativeName: 'Malti',\n },\n my: {\n name: 'Burmese',\n nativeName: 'ဗမာစာ',\n },\n na: {\n name: 'Nauru',\n nativeName: 'Dorerin Naoero',\n },\n nb: {\n name: 'Norwegian Bokmål',\n nativeName: 'Norsk bokmål',\n },\n nd: {\n name: 'Northern Ndebele',\n nativeName: 'isiNdebele',\n },\n ne: {\n name: 'Nepali',\n nativeName: 'नेपाली',\n },\n ng: {\n name: 'Ndonga',\n nativeName: 'Owambo',\n },\n nl: {\n name: 'Dutch',\n nativeName: 'Nederlands',\n },\n nn: {\n name: 'Norwegian Nynorsk',\n nativeName: 'Norsk nynorsk',\n },\n no: {\n name: 'Norwegian',\n nativeName: 'Norsk',\n },\n nr: {\n name: 'Southern Ndebele',\n nativeName: 'isiNdebele',\n },\n nv: {\n name: 'Navajo',\n nativeName: 'Diné bizaad',\n },\n ny: {\n name: 'Chichewa',\n nativeName: 'chiCheŵa',\n },\n oc: {\n name: 'Occitan',\n nativeName: 'occitan',\n },\n oj: {\n name: 'Ojibwe',\n nativeName: 'ᐊᓂᔑᓈᐯᒧᐎᓐ',\n },\n om: {\n name: 'Oromo',\n nativeName: 'Afaan Oromoo',\n },\n or: {\n name: 'Oriya',\n nativeName: 'ଓଡ଼ିଆ',\n },\n os: {\n name: 'Ossetian',\n nativeName: 'ирон æвзаг',\n },\n pa: {\n name: 'Panjabi',\n nativeName: 'ਪੰਜਾਬੀ',\n },\n pi: {\n name: 'Pāli',\n nativeName: 'पाऴि',\n },\n pl: {\n name: 'Polish',\n nativeName: 'Polski',\n },\n ps: {\n name: 'Pashto',\n nativeName: 'پښتو',\n },\n pt: {\n name: 'Portuguese',\n nativeName: 'Português',\n },\n qu: {\n name: 'Quechua',\n nativeName: 'Runa Simi',\n },\n rm: {\n name: 'Romansh',\n nativeName: 'rumantsch grischun',\n },\n rn: {\n name: 'Kirundi',\n nativeName: 'Ikirundi',\n },\n ro: {\n name: 'Romanian',\n nativeName: 'Română',\n },\n ru: {\n name: 'Russian',\n nativeName: 'Русский',\n },\n rw: {\n name: 'Kinyarwanda',\n nativeName: 'Ikinyarwanda',\n },\n sa: {\n name: 'Sanskrit',\n nativeName: 'संस्कृतम्',\n },\n sc: {\n name: 'Sardinian',\n nativeName: 'sardu',\n },\n sd: {\n name: 'Sindhi',\n nativeName: 'सिन्धी',\n },\n se: {\n name: 'Northern Sami',\n nativeName: 'Davvisámegiella',\n },\n sg: {\n name: 'Sango',\n nativeName: 'yângâ tî sängö',\n },\n si: {\n name: 'Sinhala',\n nativeName: 'සිංහල',\n },\n sk: {\n name: 'Slovak',\n nativeName: 'slovenčina',\n },\n sl: {\n name: 'Slovenian',\n nativeName: 'slovenščina',\n },\n sm: {\n name: 'Samoan',\n nativeName: \"gagana fa'a Samoa\",\n },\n sn: {\n name: 'Shona',\n nativeName: 'chiShona',\n },\n so: {\n name: 'Somali',\n nativeName: 'Soomaaliga',\n },\n sq: {\n name: 'Albanian',\n nativeName: 'Shqip',\n },\n sr: {\n name: 'Serbian',\n nativeName: 'српски језик',\n },\n ss: {\n name: 'Swati',\n nativeName: 'SiSwati',\n },\n st: {\n name: 'Southern Sotho',\n nativeName: 'Sesotho',\n },\n su: {\n name: 'Sundanese',\n nativeName: 'Basa Sunda',\n },\n sv: {\n name: 'Swedish',\n nativeName: 'Svenska',\n },\n sw: {\n name: 'Swahili',\n nativeName: 'Kiswahili',\n },\n ta: {\n name: 'Tamil',\n nativeName: 'தமிழ்',\n },\n te: {\n name: 'Telugu',\n nativeName: 'తెలుగు',\n },\n tg: {\n name: 'Tajik',\n nativeName: 'тоҷикӣ',\n },\n th: {\n name: 'Thai',\n nativeName: 'ไทย',\n },\n ti: {\n name: 'Tigrinya',\n nativeName: 'ትግርኛ',\n },\n tk: {\n name: 'Turkmen',\n nativeName: 'Türkmençe',\n },\n tl: {\n name: 'Tagalog',\n nativeName: 'Wikang Tagalog',\n },\n tn: {\n name: 'Tswana',\n nativeName: 'Setswana',\n },\n to: {\n name: 'Tonga',\n nativeName: 'faka Tonga',\n },\n tr: {\n name: 'Turkish',\n nativeName: 'Türkçe',\n },\n ts: {\n name: 'Tsonga',\n nativeName: 'Xitsonga',\n },\n tt: {\n name: 'Tatar',\n nativeName: 'татар теле',\n },\n tw: {\n name: 'Twi',\n nativeName: 'Twi',\n },\n ty: {\n name: 'Tahitian',\n nativeName: 'Reo Tahiti',\n },\n ug: {\n name: 'Uyghur',\n nativeName: 'ئۇيغۇرچە‎',\n },\n uk: {\n name: 'Ukrainian',\n nativeName: 'Українська',\n },\n ur: {\n name: 'Urdu',\n nativeName: 'اردو',\n },\n uz: {\n name: 'Uzbek',\n nativeName: 'Ўзбек',\n },\n ve: {\n name: 'Venda',\n nativeName: 'Tshivenḓa',\n },\n vi: {\n name: 'Vietnamese',\n nativeName: 'Tiếng Việt',\n },\n vo: {\n name: 'Volapük',\n nativeName: 'Volapük',\n },\n wa: {\n name: 'Walloon',\n nativeName: 'walon',\n },\n wo: {\n name: 'Wolof',\n nativeName: 'Wollof',\n },\n xh: {\n name: 'Xhosa',\n nativeName: 'isiXhosa',\n },\n yi: {\n name: 'Yiddish',\n nativeName: 'ייִדיש',\n },\n yo: {\n name: 'Yoruba',\n nativeName: 'Yorùbá',\n },\n za: {\n name: 'Zhuang',\n nativeName: 'Saɯ cueŋƅ',\n },\n zh: {\n name: 'Chinese',\n nativeName: '中文',\n },\n zu: {\n name: 'Zulu',\n nativeName: 'isiZulu',\n },\n};\n\nexport default LANGUAGES_LIST;\n","import LANGUAGES_LIST from './data';\n\nexport default class ISO6391 {\n static getLanguages(codes = []) {\n return codes.map(code => ({\n code,\n name: ISO6391.getName(code),\n nativeName: ISO6391.getNativeName(code),\n }));\n }\n\n static getName(code) {\n return ISO6391.validate(code) ? LANGUAGES_LIST[code].name : '';\n }\n\n static getAllNames() {\n return Object.values(LANGUAGES_LIST).map(l => l.name);\n }\n\n static getNativeName(code) {\n return ISO6391.validate(code) ? LANGUAGES_LIST[code].nativeName : '';\n }\n\n static getAllNativeNames() {\n return Object.values(LANGUAGES_LIST).map(l => l.nativeName);\n }\n\n static getCode(name) {\n const code = Object.keys(LANGUAGES_LIST).find(code => {\n const language = LANGUAGES_LIST[code];\n\n return (\n language.name.toLowerCase() === name.toLowerCase() ||\n language.nativeName.toLowerCase() === name.toLowerCase()\n );\n });\n return code || '';\n }\n\n static getAllCodes() {\n return Object.keys(LANGUAGES_LIST);\n }\n\n static validate(code) {\n return LANGUAGES_LIST.hasOwnProperty(code);\n }\n}\n","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n","/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","var copyArray = require('./_copyArray'),\n shuffleSelf = require('./_shuffleSelf');\n\n/**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n}\n\nmodule.exports = arrayShuffle;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nmodule.exports = baseClamp;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var baseUnset = require('./_baseUnset'),\n isIndex = require('./_isIndex');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\nmodule.exports = basePullAt;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nmodule.exports = baseRandom;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","var shuffleSelf = require('./_shuffleSelf'),\n values = require('./values');\n\n/**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction baseShuffle(collection) {\n return shuffleSelf(values(collection));\n}\n\nmodule.exports = baseShuffle;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\nfunction baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n}\n\nmodule.exports = baseSum;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nmodule.exports = charsEndIndex;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nmodule.exports = charsStartIndex;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseRandom = require('./_baseRandom');\n\n/**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\nfunction shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n}\n\nmodule.exports = shuffleSelf;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map HTML entities to characters. */\nvar htmlUnescapes = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\"\n};\n\n/**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\nvar unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\nmodule.exports = unescapeHtmlChar;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n}\n\nmodule.exports = chunk;\n","var baseClamp = require('./_baseClamp'),\n toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n","var arrayPush = require('./_arrayPush'),\n baseFlatten = require('./_baseFlatten'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray');\n\n/**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\nfunction concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n}\n\nmodule.exports = concat;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n last = require('./last');\n\n/**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\nvar differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n});\n\nmodule.exports = differenceWith;\n","module.exports = require('./forEach');\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\nfunction findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index, true);\n}\n\nmodule.exports = findLastIndex;\n","module.exports = require('./head');\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseFlatten = require('./_baseFlatten');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nmodule.exports = flattenDeep;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\nvar kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n});\n\nmodule.exports = kebabCase;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n : undefined;\n}\n\nmodule.exports = maxBy;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\nmodule.exports = mergeWith;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nmodule.exports = negate;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseIteratee = require('./_baseIteratee'),\n negate = require('./negate'),\n pickBy = require('./pickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nmodule.exports = omitBy;\n","var baseOrderBy = require('./_baseOrderBy'),\n isArray = require('./isArray');\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\n\nmodule.exports = orderBy;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n negate = require('./negate');\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(baseIteratee(predicate, 3)));\n}\n\nmodule.exports = reject;\n","var baseIteratee = require('./_baseIteratee'),\n basePullAt = require('./_basePullAt');\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = baseIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\n\nmodule.exports = remove;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","var arrayShuffle = require('./_arrayShuffle'),\n baseShuffle = require('./_baseShuffle'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\nfunction shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n}\n\nmodule.exports = shuffle;\n","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n}\n\nmodule.exports = slice;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseIteratee = require('./_baseIteratee'),\n baseSum = require('./_baseSum');\n\n/**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\nfunction sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, baseIteratee(iteratee, 2))\n : 0;\n}\n\nmodule.exports = sumBy;\n","var baseSlice = require('./_baseSlice'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\nfunction take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n}\n\nmodule.exports = take;\n","var baseSlice = require('./_baseSlice'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\nfunction takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n}\n\nmodule.exports = takeRight;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseToString = require('./_baseToString'),\n baseTrim = require('./_baseTrim'),\n castSlice = require('./_castSlice'),\n charsEndIndex = require('./_charsEndIndex'),\n charsStartIndex = require('./_charsStartIndex'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n}\n\nmodule.exports = trim;\n","var toString = require('./toString'),\n unescapeHtmlChar = require('./_unescapeHtmlChar');\n\n/** Used to match HTML entities and HTML characters. */\nvar reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source);\n\n/**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, &amp; pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n}\n\nmodule.exports = unescape;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var baseIteratee = require('./_baseIteratee'),\n baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\nfunction uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];\n}\n\nmodule.exports = uniqBy;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","'use strict';\n\nvar qs = require('querystring')\n , url = require('url')\n , xtend = require('xtend');\n\nconst PARSE_LINK_HEADER_MAXLEN = parseInt(process.env.PARSE_LINK_HEADER_MAXLEN) || 2000;\nconst PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED = process.env.PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED != null\n\nfunction hasRel(x) {\n return x && x.rel;\n}\n\nfunction intoRels (acc, x) {\n function splitRel (rel) {\n acc[rel] = xtend(x, { rel: rel });\n }\n\n x.rel.split(/\\s+/).forEach(splitRel);\n\n return acc;\n}\n\nfunction createObjects (acc, p) {\n // rel=\"next\" => 1: rel 2: next\n var m = p.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/)\n if (m) acc[m[1]] = m[2];\n return acc;\n}\n\nfunction parseLink(link) {\n try {\n var m = link.match(/<?([^>]*)>(.*)/)\n , linkUrl = m[1]\n , parts = m[2].split(';')\n , parsedUrl = url.parse(linkUrl)\n , qry = qs.parse(parsedUrl.query);\n\n parts.shift();\n\n var info = parts\n .reduce(createObjects, {});\n \n info = xtend(qry, info);\n info.url = linkUrl;\n return info;\n } catch (e) {\n return null;\n }\n}\n\nfunction checkHeader(linkHeader){\n if (!linkHeader) return false;\n\n if (linkHeader.length > PARSE_LINK_HEADER_MAXLEN) {\n if (PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED) {\n throw new Error('Input string too long, it should be under ' + PARSE_LINK_HEADER_MAXLEN + ' characters.');\n } else {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = function (linkHeader) {\n if (!checkHeader(linkHeader)) return null;\n\n return linkHeader.split(/,\\s*</)\n .map(parseLink)\n .filter(hasRel)\n .reduce(intoRels, {});\n};\n","// js/phoenix/utils.js\nvar closure = (value) => {\n if (typeof value === \"function\") {\n return value;\n } else {\n let closure2 = function() {\n return value;\n };\n return closure2;\n }\n};\n\n// js/phoenix/constants.js\nvar globalSelf = typeof self !== \"undefined\" ? self : null;\nvar phxWindow = typeof window !== \"undefined\" ? window : null;\nvar global = globalSelf || phxWindow || global;\nvar DEFAULT_VSN = \"2.0.0\";\nvar SOCKET_STATES = { connecting: 0, open: 1, closing: 2, closed: 3 };\nvar DEFAULT_TIMEOUT = 1e4;\nvar WS_CLOSE_NORMAL = 1e3;\nvar CHANNEL_STATES = {\n closed: \"closed\",\n errored: \"errored\",\n joined: \"joined\",\n joining: \"joining\",\n leaving: \"leaving\"\n};\nvar CHANNEL_EVENTS = {\n close: \"phx_close\",\n error: \"phx_error\",\n join: \"phx_join\",\n reply: \"phx_reply\",\n leave: \"phx_leave\"\n};\nvar TRANSPORTS = {\n longpoll: \"longpoll\",\n websocket: \"websocket\"\n};\nvar XHR_STATES = {\n complete: 4\n};\n\n// js/phoenix/push.js\nvar Push = class {\n constructor(channel, event, payload, timeout) {\n this.channel = channel;\n this.event = event;\n this.payload = payload || function() {\n return {};\n };\n this.receivedResp = null;\n this.timeout = timeout;\n this.timeoutTimer = null;\n this.recHooks = [];\n this.sent = false;\n }\n resend(timeout) {\n this.timeout = timeout;\n this.reset();\n this.send();\n }\n send() {\n if (this.hasReceived(\"timeout\")) {\n return;\n }\n this.startTimeout();\n this.sent = true;\n this.channel.socket.push({\n topic: this.channel.topic,\n event: this.event,\n payload: this.payload(),\n ref: this.ref,\n join_ref: this.channel.joinRef()\n });\n }\n receive(status, callback) {\n if (this.hasReceived(status)) {\n callback(this.receivedResp.response);\n }\n this.recHooks.push({ status, callback });\n return this;\n }\n reset() {\n this.cancelRefEvent();\n this.ref = null;\n this.refEvent = null;\n this.receivedResp = null;\n this.sent = false;\n }\n matchReceive({ status, response, _ref }) {\n this.recHooks.filter((h) => h.status === status).forEach((h) => h.callback(response));\n }\n cancelRefEvent() {\n if (!this.refEvent) {\n return;\n }\n this.channel.off(this.refEvent);\n }\n cancelTimeout() {\n clearTimeout(this.timeoutTimer);\n this.timeoutTimer = null;\n }\n startTimeout() {\n if (this.timeoutTimer) {\n this.cancelTimeout();\n }\n this.ref = this.channel.socket.makeRef();\n this.refEvent = this.channel.replyEventName(this.ref);\n this.channel.on(this.refEvent, (payload) => {\n this.cancelRefEvent();\n this.cancelTimeout();\n this.receivedResp = payload;\n this.matchReceive(payload);\n });\n this.timeoutTimer = setTimeout(() => {\n this.trigger(\"timeout\", {});\n }, this.timeout);\n }\n hasReceived(status) {\n return this.receivedResp && this.receivedResp.status === status;\n }\n trigger(status, response) {\n this.channel.trigger(this.refEvent, { status, response });\n }\n};\n\n// js/phoenix/timer.js\nvar Timer = class {\n constructor(callback, timerCalc) {\n this.callback = callback;\n this.timerCalc = timerCalc;\n this.timer = null;\n this.tries = 0;\n }\n reset() {\n this.tries = 0;\n clearTimeout(this.timer);\n }\n scheduleTimeout() {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.tries = this.tries + 1;\n this.callback();\n }, this.timerCalc(this.tries + 1));\n }\n};\n\n// js/phoenix/channel.js\nvar Channel = class {\n constructor(topic, params, socket) {\n this.state = CHANNEL_STATES.closed;\n this.topic = topic;\n this.params = closure(params || {});\n this.socket = socket;\n this.bindings = [];\n this.bindingRef = 0;\n this.timeout = this.socket.timeout;\n this.joinedOnce = false;\n this.joinPush = new Push(this, CHANNEL_EVENTS.join, this.params, this.timeout);\n this.pushBuffer = [];\n this.stateChangeRefs = [];\n this.rejoinTimer = new Timer(() => {\n if (this.socket.isConnected()) {\n this.rejoin();\n }\n }, this.socket.rejoinAfterMs);\n this.stateChangeRefs.push(this.socket.onError(() => this.rejoinTimer.reset()));\n this.stateChangeRefs.push(this.socket.onOpen(() => {\n this.rejoinTimer.reset();\n if (this.isErrored()) {\n this.rejoin();\n }\n }));\n this.joinPush.receive(\"ok\", () => {\n this.state = CHANNEL_STATES.joined;\n this.rejoinTimer.reset();\n this.pushBuffer.forEach((pushEvent) => pushEvent.send());\n this.pushBuffer = [];\n });\n this.joinPush.receive(\"error\", () => {\n this.state = CHANNEL_STATES.errored;\n if (this.socket.isConnected()) {\n this.rejoinTimer.scheduleTimeout();\n }\n });\n this.onClose(() => {\n this.rejoinTimer.reset();\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `close ${this.topic} ${this.joinRef()}`);\n this.state = CHANNEL_STATES.closed;\n this.socket.remove(this);\n });\n this.onError((reason) => {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `error ${this.topic}`, reason);\n if (this.isJoining()) {\n this.joinPush.reset();\n }\n this.state = CHANNEL_STATES.errored;\n if (this.socket.isConnected()) {\n this.rejoinTimer.scheduleTimeout();\n }\n });\n this.joinPush.receive(\"timeout\", () => {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `timeout ${this.topic} (${this.joinRef()})`, this.joinPush.timeout);\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), this.timeout);\n leavePush.send();\n this.state = CHANNEL_STATES.errored;\n this.joinPush.reset();\n if (this.socket.isConnected()) {\n this.rejoinTimer.scheduleTimeout();\n }\n });\n this.on(CHANNEL_EVENTS.reply, (payload, ref) => {\n this.trigger(this.replyEventName(ref), payload);\n });\n }\n join(timeout = this.timeout) {\n if (this.joinedOnce) {\n throw new Error(\"tried to join multiple times. 'join' can only be called a single time per channel instance\");\n } else {\n this.timeout = timeout;\n this.joinedOnce = true;\n this.rejoin();\n return this.joinPush;\n }\n }\n onClose(callback) {\n this.on(CHANNEL_EVENTS.close, callback);\n }\n onError(callback) {\n return this.on(CHANNEL_EVENTS.error, (reason) => callback(reason));\n }\n on(event, callback) {\n let ref = this.bindingRef++;\n this.bindings.push({ event, ref, callback });\n return ref;\n }\n off(event, ref) {\n this.bindings = this.bindings.filter((bind) => {\n return !(bind.event === event && (typeof ref === \"undefined\" || ref === bind.ref));\n });\n }\n canPush() {\n return this.socket.isConnected() && this.isJoined();\n }\n push(event, payload, timeout = this.timeout) {\n payload = payload || {};\n if (!this.joinedOnce) {\n throw new Error(`tried to push '${event}' to '${this.topic}' before joining. Use channel.join() before pushing events`);\n }\n let pushEvent = new Push(this, event, function() {\n return payload;\n }, timeout);\n if (this.canPush()) {\n pushEvent.send();\n } else {\n pushEvent.startTimeout();\n this.pushBuffer.push(pushEvent);\n }\n return pushEvent;\n }\n leave(timeout = this.timeout) {\n this.rejoinTimer.reset();\n this.joinPush.cancelTimeout();\n this.state = CHANNEL_STATES.leaving;\n let onClose = () => {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", `leave ${this.topic}`);\n this.trigger(CHANNEL_EVENTS.close, \"leave\");\n };\n let leavePush = new Push(this, CHANNEL_EVENTS.leave, closure({}), timeout);\n leavePush.receive(\"ok\", () => onClose()).receive(\"timeout\", () => onClose());\n leavePush.send();\n if (!this.canPush()) {\n leavePush.trigger(\"ok\", {});\n }\n return leavePush;\n }\n onMessage(_event, payload, _ref) {\n return payload;\n }\n isMember(topic, event, payload, joinRef) {\n if (this.topic !== topic) {\n return false;\n }\n if (joinRef && joinRef !== this.joinRef()) {\n if (this.socket.hasLogger())\n this.socket.log(\"channel\", \"dropping outdated message\", { topic, event, payload, joinRef });\n return false;\n } else {\n return true;\n }\n }\n joinRef() {\n return this.joinPush.ref;\n }\n rejoin(timeout = this.timeout) {\n if (this.isLeaving()) {\n return;\n }\n this.socket.leaveOpenTopic(this.topic);\n this.state = CHANNEL_STATES.joining;\n this.joinPush.resend(timeout);\n }\n trigger(event, payload, ref, joinRef) {\n let handledPayload = this.onMessage(event, payload, ref, joinRef);\n if (payload && !handledPayload) {\n throw new Error(\"channel onMessage callbacks must return the payload, modified or unmodified\");\n }\n let eventBindings = this.bindings.filter((bind) => bind.event === event);\n for (let i = 0; i < eventBindings.length; i++) {\n let bind = eventBindings[i];\n bind.callback(handledPayload, ref, joinRef || this.joinRef());\n }\n }\n replyEventName(ref) {\n return `chan_reply_${ref}`;\n }\n isClosed() {\n return this.state === CHANNEL_STATES.closed;\n }\n isErrored() {\n return this.state === CHANNEL_STATES.errored;\n }\n isJoined() {\n return this.state === CHANNEL_STATES.joined;\n }\n isJoining() {\n return this.state === CHANNEL_STATES.joining;\n }\n isLeaving() {\n return this.state === CHANNEL_STATES.leaving;\n }\n};\n\n// js/phoenix/ajax.js\nvar Ajax = class {\n static request(method, endPoint, accept, body, timeout, ontimeout, callback) {\n if (global.XDomainRequest) {\n let req = new global.XDomainRequest();\n return this.xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback);\n } else {\n let req = new global.XMLHttpRequest();\n return this.xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback);\n }\n }\n static xdomainRequest(req, method, endPoint, body, timeout, ontimeout, callback) {\n req.timeout = timeout;\n req.open(method, endPoint);\n req.onload = () => {\n let response = this.parseJSON(req.responseText);\n callback && callback(response);\n };\n if (ontimeout) {\n req.ontimeout = ontimeout;\n }\n req.onprogress = () => {\n };\n req.send(body);\n return req;\n }\n static xhrRequest(req, method, endPoint, accept, body, timeout, ontimeout, callback) {\n req.open(method, endPoint, true);\n req.timeout = timeout;\n req.setRequestHeader(\"Content-Type\", accept);\n req.onerror = () => callback && callback(null);\n req.onreadystatechange = () => {\n if (req.readyState === XHR_STATES.complete && callback) {\n let response = this.parseJSON(req.responseText);\n callback(response);\n }\n };\n if (ontimeout) {\n req.ontimeout = ontimeout;\n }\n req.send(body);\n return req;\n }\n static parseJSON(resp) {\n if (!resp || resp === \"\") {\n return null;\n }\n try {\n return JSON.parse(resp);\n } catch (e) {\n console && console.log(\"failed to parse JSON response\", resp);\n return null;\n }\n }\n static serialize(obj, parentKey) {\n let queryStr = [];\n for (var key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) {\n continue;\n }\n let paramKey = parentKey ? `${parentKey}[${key}]` : key;\n let paramVal = obj[key];\n if (typeof paramVal === \"object\") {\n queryStr.push(this.serialize(paramVal, paramKey));\n } else {\n queryStr.push(encodeURIComponent(paramKey) + \"=\" + encodeURIComponent(paramVal));\n }\n }\n return queryStr.join(\"&\");\n }\n static appendParams(url, params) {\n if (Object.keys(params).length === 0) {\n return url;\n }\n let prefix = url.match(/\\?/) ? \"&\" : \"?\";\n return `${url}${prefix}${this.serialize(params)}`;\n }\n};\n\n// js/phoenix/longpoll.js\nvar arrayBufferToBase64 = (buffer) => {\n let binary = \"\";\n let bytes = new Uint8Array(buffer);\n let len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n};\nvar LongPoll = class {\n constructor(endPoint) {\n this.endPoint = null;\n this.token = null;\n this.skipHeartbeat = true;\n this.reqs = /* @__PURE__ */ new Set();\n this.awaitingBatchAck = false;\n this.currentBatch = null;\n this.currentBatchTimer = null;\n this.batchBuffer = [];\n this.onopen = function() {\n };\n this.onerror = function() {\n };\n this.onmessage = function() {\n };\n this.onclose = function() {\n };\n this.pollEndpoint = this.normalizeEndpoint(endPoint);\n this.readyState = SOCKET_STATES.connecting;\n this.poll();\n }\n normalizeEndpoint(endPoint) {\n return endPoint.replace(\"ws://\", \"http://\").replace(\"wss://\", \"https://\").replace(new RegExp(\"(.*)/\" + TRANSPORTS.websocket), \"$1/\" + TRANSPORTS.longpoll);\n }\n endpointURL() {\n return Ajax.appendParams(this.pollEndpoint, { token: this.token });\n }\n closeAndRetry(code, reason, wasClean) {\n this.close(code, reason, wasClean);\n this.readyState = SOCKET_STATES.connecting;\n }\n ontimeout() {\n this.onerror(\"timeout\");\n this.closeAndRetry(1005, \"timeout\", false);\n }\n isActive() {\n return this.readyState === SOCKET_STATES.open || this.readyState === SOCKET_STATES.connecting;\n }\n poll() {\n this.ajax(\"GET\", \"application/json\", null, () => this.ontimeout(), (resp) => {\n if (resp) {\n var { status, token, messages } = resp;\n this.token = token;\n } else {\n status = 0;\n }\n switch (status) {\n case 200:\n messages.forEach((msg) => {\n setTimeout(() => this.onmessage({ data: msg }), 0);\n });\n this.poll();\n break;\n case 204:\n this.poll();\n break;\n case 410:\n this.readyState = SOCKET_STATES.open;\n this.onopen({});\n this.poll();\n break;\n case 403:\n this.onerror(403);\n this.close(1008, \"forbidden\", false);\n break;\n case 0:\n case 500:\n this.onerror(500);\n this.closeAndRetry(1011, \"internal server error\", 500);\n break;\n default:\n throw new Error(`unhandled poll status ${status}`);\n }\n });\n }\n send(body) {\n if (typeof body !== \"string\") {\n body = arrayBufferToBase64(body);\n }\n if (this.currentBatch) {\n this.currentBatch.push(body);\n } else if (this.awaitingBatchAck) {\n this.batchBuffer.push(body);\n } else {\n this.currentBatch = [body];\n this.currentBatchTimer = setTimeout(() => {\n this.batchSend(this.currentBatch);\n this.currentBatch = null;\n }, 0);\n }\n }\n batchSend(messages) {\n this.awaitingBatchAck = true;\n this.ajax(\"POST\", \"application/x-ndjson\", messages.join(\"\\n\"), () => this.onerror(\"timeout\"), (resp) => {\n this.awaitingBatchAck = false;\n if (!resp || resp.status !== 200) {\n this.onerror(resp && resp.status);\n this.closeAndRetry(1011, \"internal server error\", false);\n } else if (this.batchBuffer.length > 0) {\n this.batchSend(this.batchBuffer);\n this.batchBuffer = [];\n }\n });\n }\n close(code, reason, wasClean) {\n for (let req of this.reqs) {\n req.abort();\n }\n this.readyState = SOCKET_STATES.closed;\n let opts = Object.assign({ code: 1e3, reason: void 0, wasClean: true }, { code, reason, wasClean });\n this.batchBuffer = [];\n clearTimeout(this.currentBatchTimer);\n this.currentBatchTimer = null;\n if (typeof CloseEvent !== \"undefined\") {\n this.onclose(new CloseEvent(\"close\", opts));\n } else {\n this.onclose(opts);\n }\n }\n ajax(method, contentType, body, onCallerTimeout, callback) {\n let req;\n let ontimeout = () => {\n this.reqs.delete(req);\n onCallerTimeout();\n };\n req = Ajax.request(method, this.endpointURL(), contentType, body, this.timeout, ontimeout, (resp) => {\n this.reqs.delete(req);\n if (this.isActive()) {\n callback(resp);\n }\n });\n this.reqs.add(req);\n }\n};\n\n// js/phoenix/presence.js\nvar Presence = class {\n constructor(channel, opts = {}) {\n let events = opts.events || { state: \"presence_state\", diff: \"presence_diff\" };\n this.state = {};\n this.pendingDiffs = [];\n this.channel = channel;\n this.joinRef = null;\n this.caller = {\n onJoin: function() {\n },\n onLeave: function() {\n },\n onSync: function() {\n }\n };\n this.channel.on(events.state, (newState) => {\n let { onJoin, onLeave, onSync } = this.caller;\n this.joinRef = this.channel.joinRef();\n this.state = Presence.syncState(this.state, newState, onJoin, onLeave);\n this.pendingDiffs.forEach((diff) => {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave);\n });\n this.pendingDiffs = [];\n onSync();\n });\n this.channel.on(events.diff, (diff) => {\n let { onJoin, onLeave, onSync } = this.caller;\n if (this.inPendingSyncState()) {\n this.pendingDiffs.push(diff);\n } else {\n this.state = Presence.syncDiff(this.state, diff, onJoin, onLeave);\n onSync();\n }\n });\n }\n onJoin(callback) {\n this.caller.onJoin = callback;\n }\n onLeave(callback) {\n this.caller.onLeave = callback;\n }\n onSync(callback) {\n this.caller.onSync = callback;\n }\n list(by) {\n return Presence.list(this.state, by);\n }\n inPendingSyncState() {\n return !this.joinRef || this.joinRef !== this.channel.joinRef();\n }\n static syncState(currentState, newState, onJoin, onLeave) {\n let state = this.clone(currentState);\n let joins = {};\n let leaves = {};\n this.map(state, (key, presence) => {\n if (!newState[key]) {\n leaves[key] = presence;\n }\n });\n this.map(newState, (key, newPresence) => {\n let currentPresence = state[key];\n if (currentPresence) {\n let newRefs = newPresence.metas.map((m) => m.phx_ref);\n let curRefs = currentPresence.metas.map((m) => m.phx_ref);\n let joinedMetas = newPresence.metas.filter((m) => curRefs.indexOf(m.phx_ref) < 0);\n let leftMetas = currentPresence.metas.filter((m) => newRefs.indexOf(m.phx_ref) < 0);\n if (joinedMetas.length > 0) {\n joins[key] = newPresence;\n joins[key].metas = joinedMetas;\n }\n if (leftMetas.length > 0) {\n leaves[key] = this.clone(currentPresence);\n leaves[key].metas = leftMetas;\n }\n } else {\n joins[key] = newPresence;\n }\n });\n return this.syncDiff(state, { joins, leaves }, onJoin, onLeave);\n }\n static syncDiff(state, diff, onJoin, onLeave) {\n let { joins, leaves } = this.clone(diff);\n if (!onJoin) {\n onJoin = function() {\n };\n }\n if (!onLeave) {\n onLeave = function() {\n };\n }\n this.map(joins, (key, newPresence) => {\n let currentPresence = state[key];\n state[key] = this.clone(newPresence);\n if (currentPresence) {\n let joinedRefs = state[key].metas.map((m) => m.phx_ref);\n let curMetas = currentPresence.metas.filter((m) => joinedRefs.indexOf(m.phx_ref) < 0);\n state[key].metas.unshift(...curMetas);\n }\n onJoin(key, currentPresence, newPresence);\n });\n this.map(leaves, (key, leftPresence) => {\n let currentPresence = state[key];\n if (!currentPresence) {\n return;\n }\n let refsToRemove = leftPresence.metas.map((m) => m.phx_ref);\n currentPresence.metas = currentPresence.metas.filter((p) => {\n return refsToRemove.indexOf(p.phx_ref) < 0;\n });\n onLeave(key, currentPresence, leftPresence);\n if (currentPresence.metas.length === 0) {\n delete state[key];\n }\n });\n return state;\n }\n static list(presences, chooser) {\n if (!chooser) {\n chooser = function(key, pres) {\n return pres;\n };\n }\n return this.map(presences, (key, presence) => {\n return chooser(key, presence);\n });\n }\n static map(obj, func) {\n return Object.getOwnPropertyNames(obj).map((key) => func(key, obj[key]));\n }\n static clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n }\n};\n\n// js/phoenix/serializer.js\nvar serializer_default = {\n HEADER_LENGTH: 1,\n META_LENGTH: 4,\n KINDS: { push: 0, reply: 1, broadcast: 2 },\n encode(msg, callback) {\n if (msg.payload.constructor === ArrayBuffer) {\n return callback(this.binaryEncode(msg));\n } else {\n let payload = [msg.join_ref, msg.ref, msg.topic, msg.event, msg.payload];\n return callback(JSON.stringify(payload));\n }\n },\n decode(rawPayload, callback) {\n if (rawPayload.constructor === ArrayBuffer) {\n return callback(this.binaryDecode(rawPayload));\n } else {\n let [join_ref, ref, topic, event, payload] = JSON.parse(rawPayload);\n return callback({ join_ref, ref, topic, event, payload });\n }\n },\n binaryEncode(message) {\n let { join_ref, ref, event, topic, payload } = message;\n let metaLength = this.META_LENGTH + join_ref.length + ref.length + topic.length + event.length;\n let header = new ArrayBuffer(this.HEADER_LENGTH + metaLength);\n let view = new DataView(header);\n let offset = 0;\n view.setUint8(offset++, this.KINDS.push);\n view.setUint8(offset++, join_ref.length);\n view.setUint8(offset++, ref.length);\n view.setUint8(offset++, topic.length);\n view.setUint8(offset++, event.length);\n Array.from(join_ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n Array.from(ref, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n Array.from(topic, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n Array.from(event, (char) => view.setUint8(offset++, char.charCodeAt(0)));\n var combined = new Uint8Array(header.byteLength + payload.byteLength);\n combined.set(new Uint8Array(header), 0);\n combined.set(new Uint8Array(payload), header.byteLength);\n return combined.buffer;\n },\n binaryDecode(buffer) {\n let view = new DataView(buffer);\n let kind = view.getUint8(0);\n let decoder = new TextDecoder();\n switch (kind) {\n case this.KINDS.push:\n return this.decodePush(buffer, view, decoder);\n case this.KINDS.reply:\n return this.decodeReply(buffer, view, decoder);\n case this.KINDS.broadcast:\n return this.decodeBroadcast(buffer, view, decoder);\n }\n },\n decodePush(buffer, view, decoder) {\n let joinRefSize = view.getUint8(1);\n let topicSize = view.getUint8(2);\n let eventSize = view.getUint8(3);\n let offset = this.HEADER_LENGTH + this.META_LENGTH - 1;\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize));\n offset = offset + joinRefSize;\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n offset = offset + topicSize;\n let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n offset = offset + eventSize;\n let data = buffer.slice(offset, buffer.byteLength);\n return { join_ref: joinRef, ref: null, topic, event, payload: data };\n },\n decodeReply(buffer, view, decoder) {\n let joinRefSize = view.getUint8(1);\n let refSize = view.getUint8(2);\n let topicSize = view.getUint8(3);\n let eventSize = view.getUint8(4);\n let offset = this.HEADER_LENGTH + this.META_LENGTH;\n let joinRef = decoder.decode(buffer.slice(offset, offset + joinRefSize));\n offset = offset + joinRefSize;\n let ref = decoder.decode(buffer.slice(offset, offset + refSize));\n offset = offset + refSize;\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n offset = offset + topicSize;\n let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n offset = offset + eventSize;\n let data = buffer.slice(offset, buffer.byteLength);\n let payload = { status: event, response: data };\n return { join_ref: joinRef, ref, topic, event: CHANNEL_EVENTS.reply, payload };\n },\n decodeBroadcast(buffer, view, decoder) {\n let topicSize = view.getUint8(1);\n let eventSize = view.getUint8(2);\n let offset = this.HEADER_LENGTH + 2;\n let topic = decoder.decode(buffer.slice(offset, offset + topicSize));\n offset = offset + topicSize;\n let event = decoder.decode(buffer.slice(offset, offset + eventSize));\n offset = offset + eventSize;\n let data = buffer.slice(offset, buffer.byteLength);\n return { join_ref: null, ref: null, topic, event, payload: data };\n }\n};\n\n// js/phoenix/socket.js\nvar Socket = class {\n constructor(endPoint, opts = {}) {\n this.stateChangeCallbacks = { open: [], close: [], error: [], message: [] };\n this.channels = [];\n this.sendBuffer = [];\n this.ref = 0;\n this.timeout = opts.timeout || DEFAULT_TIMEOUT;\n this.transport = opts.transport || global.WebSocket || LongPoll;\n this.establishedConnections = 0;\n this.defaultEncoder = serializer_default.encode.bind(serializer_default);\n this.defaultDecoder = serializer_default.decode.bind(serializer_default);\n this.closeWasClean = false;\n this.binaryType = opts.binaryType || \"arraybuffer\";\n this.connectClock = 1;\n if (this.transport !== LongPoll) {\n this.encode = opts.encode || this.defaultEncoder;\n this.decode = opts.decode || this.defaultDecoder;\n } else {\n this.encode = this.defaultEncoder;\n this.decode = this.defaultDecoder;\n }\n let awaitingConnectionOnPageShow = null;\n if (phxWindow && phxWindow.addEventListener) {\n phxWindow.addEventListener(\"pagehide\", (_e) => {\n if (this.conn) {\n this.disconnect();\n awaitingConnectionOnPageShow = this.connectClock;\n }\n });\n phxWindow.addEventListener(\"pageshow\", (_e) => {\n if (awaitingConnectionOnPageShow === this.connectClock) {\n awaitingConnectionOnPageShow = null;\n this.connect();\n }\n });\n }\n this.heartbeatIntervalMs = opts.heartbeatIntervalMs || 3e4;\n this.rejoinAfterMs = (tries) => {\n if (opts.rejoinAfterMs) {\n return opts.rejoinAfterMs(tries);\n } else {\n return [1e3, 2e3, 5e3][tries - 1] || 1e4;\n }\n };\n this.reconnectAfterMs = (tries) => {\n if (opts.reconnectAfterMs) {\n return opts.reconnectAfterMs(tries);\n } else {\n return [10, 50, 100, 150, 200, 250, 500, 1e3, 2e3][tries - 1] || 5e3;\n }\n };\n this.logger = opts.logger || null;\n this.longpollerTimeout = opts.longpollerTimeout || 2e4;\n this.params = closure(opts.params || {});\n this.endPoint = `${endPoint}/${TRANSPORTS.websocket}`;\n this.vsn = opts.vsn || DEFAULT_VSN;\n this.heartbeatTimeoutTimer = null;\n this.heartbeatTimer = null;\n this.pendingHeartbeatRef = null;\n this.reconnectTimer = new Timer(() => {\n this.teardown(() => this.connect());\n }, this.reconnectAfterMs);\n }\n getLongPollTransport() {\n return LongPoll;\n }\n replaceTransport(newTransport) {\n this.connectClock++;\n this.closeWasClean = true;\n this.reconnectTimer.reset();\n this.sendBuffer = [];\n if (this.conn) {\n this.conn.close();\n this.conn = null;\n }\n this.transport = newTransport;\n }\n protocol() {\n return location.protocol.match(/^https/) ? \"wss\" : \"ws\";\n }\n endPointURL() {\n let uri = Ajax.appendParams(Ajax.appendParams(this.endPoint, this.params()), { vsn: this.vsn });\n if (uri.charAt(0) !== \"/\") {\n return uri;\n }\n if (uri.charAt(1) === \"/\") {\n return `${this.protocol()}:${uri}`;\n }\n return `${this.protocol()}://${location.host}${uri}`;\n }\n disconnect(callback, code, reason) {\n this.connectClock++;\n this.closeWasClean = true;\n this.reconnectTimer.reset();\n this.teardown(callback, code, reason);\n }\n connect(params) {\n if (params) {\n console && console.log(\"passing params to connect is deprecated. Instead pass :params to the Socket constructor\");\n this.params = closure(params);\n }\n if (this.conn) {\n return;\n }\n this.connectClock++;\n this.closeWasClean = false;\n this.conn = new this.transport(this.endPointURL());\n this.conn.binaryType = this.binaryType;\n this.conn.timeout = this.longpollerTimeout;\n this.conn.onopen = () => this.onConnOpen();\n this.conn.onerror = (error) => this.onConnError(error);\n this.conn.onmessage = (event) => this.onConnMessage(event);\n this.conn.onclose = (event) => this.onConnClose(event);\n }\n log(kind, msg, data) {\n this.logger(kind, msg, data);\n }\n hasLogger() {\n return this.logger !== null;\n }\n onOpen(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.open.push([ref, callback]);\n return ref;\n }\n onClose(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.close.push([ref, callback]);\n return ref;\n }\n onError(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.error.push([ref, callback]);\n return ref;\n }\n onMessage(callback) {\n let ref = this.makeRef();\n this.stateChangeCallbacks.message.push([ref, callback]);\n return ref;\n }\n ping(callback) {\n if (!this.isConnected()) {\n return false;\n }\n let ref = this.makeRef();\n let startTime = Date.now();\n this.push({ topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref });\n let onMsgRef = this.onMessage((msg) => {\n if (msg.ref === ref) {\n this.off([onMsgRef]);\n callback(Date.now() - startTime);\n }\n });\n return true;\n }\n clearHeartbeats() {\n clearTimeout(this.heartbeatTimer);\n clearTimeout(this.heartbeatTimeoutTimer);\n }\n onConnOpen() {\n if (this.hasLogger())\n this.log(\"transport\", `connected to ${this.endPointURL()}`);\n this.closeWasClean = false;\n this.establishedConnections++;\n this.flushSendBuffer();\n this.reconnectTimer.reset();\n this.resetHeartbeat();\n this.stateChangeCallbacks.open.forEach(([, callback]) => callback());\n }\n heartbeatTimeout() {\n if (this.pendingHeartbeatRef) {\n this.pendingHeartbeatRef = null;\n if (this.hasLogger()) {\n this.log(\"transport\", \"heartbeat timeout. Attempting to re-establish connection\");\n }\n this.triggerChanError();\n this.closeWasClean = false;\n this.teardown(() => this.reconnectTimer.scheduleTimeout(), WS_CLOSE_NORMAL, \"heartbeat timeout\");\n }\n }\n resetHeartbeat() {\n if (this.conn && this.conn.skipHeartbeat) {\n return;\n }\n this.pendingHeartbeatRef = null;\n this.clearHeartbeats();\n this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs);\n }\n teardown(callback, code, reason) {\n if (!this.conn) {\n return callback && callback();\n }\n this.waitForBufferDone(() => {\n if (this.conn) {\n if (code) {\n this.conn.close(code, reason || \"\");\n } else {\n this.conn.close();\n }\n }\n this.waitForSocketClosed(() => {\n if (this.conn) {\n this.conn.onopen = function() {\n };\n this.conn.onerror = function() {\n };\n this.conn.onmessage = function() {\n };\n this.conn.onclose = function() {\n };\n this.conn = null;\n }\n callback && callback();\n });\n });\n }\n waitForBufferDone(callback, tries = 1) {\n if (tries === 5 || !this.conn || !this.conn.bufferedAmount) {\n callback();\n return;\n }\n setTimeout(() => {\n this.waitForBufferDone(callback, tries + 1);\n }, 150 * tries);\n }\n waitForSocketClosed(callback, tries = 1) {\n if (tries === 5 || !this.conn || this.conn.readyState === SOCKET_STATES.closed) {\n callback();\n return;\n }\n setTimeout(() => {\n this.waitForSocketClosed(callback, tries + 1);\n }, 150 * tries);\n }\n onConnClose(event) {\n let closeCode = event && event.code;\n if (this.hasLogger())\n this.log(\"transport\", \"close\", event);\n this.triggerChanError();\n this.clearHeartbeats();\n if (!this.closeWasClean && closeCode !== 1e3) {\n this.reconnectTimer.scheduleTimeout();\n }\n this.stateChangeCallbacks.close.forEach(([, callback]) => callback(event));\n }\n onConnError(error) {\n if (this.hasLogger())\n this.log(\"transport\", error);\n let transportBefore = this.transport;\n let establishedBefore = this.establishedConnections;\n this.stateChangeCallbacks.error.forEach(([, callback]) => {\n callback(error, transportBefore, establishedBefore);\n });\n if (transportBefore === this.transport || establishedBefore > 0) {\n this.triggerChanError();\n }\n }\n triggerChanError() {\n this.channels.forEach((channel) => {\n if (!(channel.isErrored() || channel.isLeaving() || channel.isClosed())) {\n channel.trigger(CHANNEL_EVENTS.error);\n }\n });\n }\n connectionState() {\n switch (this.conn && this.conn.readyState) {\n case SOCKET_STATES.connecting:\n return \"connecting\";\n case SOCKET_STATES.open:\n return \"open\";\n case SOCKET_STATES.closing:\n return \"closing\";\n default:\n return \"closed\";\n }\n }\n isConnected() {\n return this.connectionState() === \"open\";\n }\n remove(channel) {\n this.off(channel.stateChangeRefs);\n this.channels = this.channels.filter((c) => c.joinRef() !== channel.joinRef());\n }\n off(refs) {\n for (let key in this.stateChangeCallbacks) {\n this.stateChangeCallbacks[key] = this.stateChangeCallbacks[key].filter(([ref]) => {\n return refs.indexOf(ref) === -1;\n });\n }\n }\n channel(topic, chanParams = {}) {\n let chan = new Channel(topic, chanParams, this);\n this.channels.push(chan);\n return chan;\n }\n push(data) {\n if (this.hasLogger()) {\n let { topic, event, payload, ref, join_ref } = data;\n this.log(\"push\", `${topic} ${event} (${join_ref}, ${ref})`, payload);\n }\n if (this.isConnected()) {\n this.encode(data, (result) => this.conn.send(result));\n } else {\n this.sendBuffer.push(() => this.encode(data, (result) => this.conn.send(result)));\n }\n }\n makeRef() {\n let newRef = this.ref + 1;\n if (newRef === this.ref) {\n this.ref = 0;\n } else {\n this.ref = newRef;\n }\n return this.ref.toString();\n }\n sendHeartbeat() {\n if (this.pendingHeartbeatRef && !this.isConnected()) {\n return;\n }\n this.pendingHeartbeatRef = this.makeRef();\n this.push({ topic: \"phoenix\", event: \"heartbeat\", payload: {}, ref: this.pendingHeartbeatRef });\n this.heartbeatTimeoutTimer = setTimeout(() => this.heartbeatTimeout(), this.heartbeatIntervalMs);\n }\n flushSendBuffer() {\n if (this.isConnected() && this.sendBuffer.length > 0) {\n this.sendBuffer.forEach((callback) => callback());\n this.sendBuffer = [];\n }\n }\n onConnMessage(rawMessage) {\n this.decode(rawMessage.data, (msg) => {\n let { topic, event, payload, ref, join_ref } = msg;\n if (ref && ref === this.pendingHeartbeatRef) {\n this.clearHeartbeats();\n this.pendingHeartbeatRef = null;\n this.heartbeatTimer = setTimeout(() => this.sendHeartbeat(), this.heartbeatIntervalMs);\n }\n if (this.hasLogger())\n this.log(\"receive\", `${payload.status || \"\"} ${topic} ${event} ${ref && \"(\" + ref + \")\" || \"\"}`, payload);\n for (let i = 0; i < this.channels.length; i++) {\n const channel = this.channels[i];\n if (!channel.isMember(topic, event, payload, join_ref)) {\n continue;\n }\n channel.trigger(event, payload, ref, join_ref);\n }\n for (let i = 0; i < this.stateChangeCallbacks.message.length; i++) {\n let [, callback] = this.stateChangeCallbacks.message[i];\n callback(msg);\n }\n });\n }\n leaveOpenTopic(topic) {\n let dupChannel = this.channels.find((c) => c.topic === topic && (c.isJoined() || c.isJoining()));\n if (dupChannel) {\n if (this.hasLogger())\n this.log(\"transport\", `leaving duplicate topic \"${topic}\"`);\n dupChannel.leave();\n }\n }\n};\nexport {\n Channel,\n LongPoll,\n Presence,\n serializer_default as Serializer,\n Socket\n};\n//# sourceMappingURL=phoenix.mjs.map\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","var serviceWorkerOption = {\"scriptURL\":\"/sw-pleroma.js\"};\n \"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/* eslint-disable flowtype/require-valid-file-annotation */\n/* global serviceWorkerOption */\n\nexports.default = {\n register: function register() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (navigator.serviceWorker) {\n return navigator.serviceWorker.register(serviceWorkerOption.scriptURL, options);\n }\n\n return false;\n }\n};\nmodule.exports = exports[\"default\"];","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","/*!\n * shared v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n/**\r\n * Original Utilities\r\n * written by kazuya kawaguchi\r\n */\r\nconst inBrowser = typeof window !== 'undefined';\r\nlet mark;\r\nlet measure;\r\nif ((process.env.NODE_ENV !== 'production')) {\r\n const perf = inBrowser && window.performance;\r\n if (perf &&\r\n perf.mark &&\r\n perf.measure &&\r\n perf.clearMarks &&\r\n perf.clearMeasures) {\r\n mark = (tag) => perf.mark(tag);\r\n measure = (name, startTag, endTag) => {\r\n perf.measure(name, startTag, endTag);\r\n perf.clearMarks(startTag);\r\n perf.clearMarks(endTag);\r\n };\r\n }\r\n}\r\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\r\n/* eslint-disable */\r\nfunction format(message, ...args) {\r\n if (args.length === 1 && isObject(args[0])) {\r\n args = args[0];\r\n }\r\n if (!args || !args.hasOwnProperty) {\r\n args = {};\r\n }\r\n return message.replace(RE_ARGS, (match, identifier) => {\r\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\r\n });\r\n}\r\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\r\nconst makeSymbol = (name) => hasSymbol ? Symbol(name) : name;\r\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\r\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\r\n .replace(/\\u2028/g, '\\\\u2028')\r\n .replace(/\\u2029/g, '\\\\u2029')\r\n .replace(/\\u0027/g, '\\\\u0027');\r\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\r\nconst isDate = (val) => toTypeString(val) === '[object Date]';\r\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\r\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\r\nfunction warn(msg, err) {\r\n if (typeof console !== 'undefined') {\r\n console.warn(`[intlify] ` + msg);\r\n /* istanbul ignore if */\r\n if (err) {\r\n console.warn(err.stack);\r\n }\r\n }\r\n}\r\nconst assign = Object.assign;\r\nlet _globalThis;\r\nconst getGlobalThis = () => {\r\n // prettier-ignore\r\n return (_globalThis ||\r\n (_globalThis =\r\n typeof globalThis !== 'undefined'\r\n ? globalThis\r\n : typeof self !== 'undefined'\r\n ? self\r\n : typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : {}));\r\n};\r\nfunction escapeHtml(rawText) {\r\n return rawText\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&apos;');\r\n}\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nfunction hasOwn(obj, key) {\r\n return hasOwnProperty.call(obj, key);\r\n}\r\n/* eslint-enable */\r\n/**\r\n * Useful Utilities By Evan you\r\n * Modified by kazuya kawaguchi\r\n * MIT License\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\r\n */\r\nconst isArray = Array.isArray;\r\nconst isFunction = (val) => typeof val === 'function';\r\nconst isString = (val) => typeof val === 'string';\r\nconst isBoolean = (val) => typeof val === 'boolean';\r\nconst isSymbol = (val) => typeof val === 'symbol';\r\nconst isObject = (val) => // eslint-disable-line\r\n val !== null && typeof val === 'object';\r\nconst isPromise = (val) => {\r\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n};\r\nconst objectToString = Object.prototype.toString;\r\nconst toTypeString = (value) => objectToString.call(value);\r\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\r\n// for converting list and named values to displayed strings.\r\nconst toDisplayString = (val) => {\r\n return val == null\r\n ? ''\r\n : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\r\n ? JSON.stringify(val, null, 2)\r\n : String(val);\r\n};\r\nconst RANGE = 2;\r\nfunction generateCodeFrame(source, start = 0, end = source.length) {\r\n const lines = source.split(/\\r?\\n/);\r\n let count = 0;\r\n const res = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n count += lines[i].length + 1;\r\n if (count >= start) {\r\n for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\r\n if (j < 0 || j >= lines.length)\r\n continue;\r\n const line = j + 1;\r\n res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\r\n const lineLength = lines[j].length;\r\n if (j === i) {\r\n // push underline\r\n const pad = start - (count - lineLength) + 1;\r\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\r\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\r\n }\r\n else if (j > i) {\r\n if (end > count) {\r\n const length = Math.max(Math.min(end - count, lineLength), 1);\r\n res.push(` | ` + '^'.repeat(length));\r\n }\r\n count += lineLength + 1;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n return res.join('\\n');\r\n}\n\n/**\r\n * Event emitter, forked from the below:\r\n * - original repository url: https://github.com/developit/mitt\r\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\r\n * - author: Jason Miller (https://github.com/developit)\r\n * - license: MIT\r\n */\r\n/**\r\n * Create a event emitter\r\n *\r\n * @returns An event emitter\r\n */\r\nfunction createEmitter() {\r\n const events = new Map();\r\n const emitter = {\r\n events,\r\n on(event, handler) {\r\n const handlers = events.get(event);\r\n const added = handlers && handlers.push(handler);\r\n if (!added) {\r\n events.set(event, [handler]);\r\n }\r\n },\r\n off(event, handler) {\r\n const handlers = events.get(event);\r\n if (handlers) {\r\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\r\n }\r\n },\r\n emit(event, payload) {\r\n (events.get(event) || [])\r\n .slice()\r\n .map(handler => handler(payload));\r\n (events.get('*') || [])\r\n .slice()\r\n .map(handler => handler(event, payload));\r\n }\r\n };\r\n return emitter;\r\n}\n\nexport { assign, createEmitter, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, makeSymbol, mark, measure, objectToString, toDisplayString, toTypeString, warn };\n","/*!\n * message-compiler v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { format, assign, isString } from '@intlify/shared';\n\nconst CompileErrorCodes = {\r\n // tokenizer error codes\r\n EXPECTED_TOKEN: 1,\r\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\r\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\r\n UNKNOWN_ESCAPE_SEQUENCE: 4,\r\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\r\n UNBALANCED_CLOSING_BRACE: 6,\r\n UNTERMINATED_CLOSING_BRACE: 7,\r\n EMPTY_PLACEHOLDER: 8,\r\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\r\n INVALID_LINKED_FORMAT: 10,\r\n // parser error codes\r\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\r\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\r\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\r\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\r\n // Special value for higher-order compilers to pick up the last code\r\n // to avoid collision of error codes. This should always be kept as the last\r\n // item.\r\n __EXTEND_POINT__: 15\r\n};\r\n/** @internal */\r\nconst errorMessages = {\r\n // tokenizer error messages\r\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\r\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\r\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\r\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\r\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\r\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\r\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\r\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\r\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\r\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\r\n // parser error messages\r\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\r\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`\r\n};\r\nfunction createCompileError(code, loc, options = {}) {\r\n const { domain, messages, args } = options;\r\n const msg = (process.env.NODE_ENV !== 'production')\r\n ? format((messages || errorMessages)[code] || '', ...(args || []))\r\n : code;\r\n const error = new SyntaxError(String(msg));\r\n error.code = code;\r\n if (loc) {\r\n error.location = loc;\r\n }\r\n error.domain = domain;\r\n return error;\r\n}\r\n/** @internal */\r\nfunction defaultOnError(error) {\r\n throw error;\r\n}\n\nconst LocationStub = {\r\n start: { line: 1, column: 1, offset: 0 },\r\n end: { line: 1, column: 1, offset: 0 }\r\n};\r\nfunction createPosition(line, column, offset) {\r\n return { line, column, offset };\r\n}\r\nfunction createLocation(start, end, source) {\r\n const loc = { start, end };\r\n if (source != null) {\r\n loc.source = source;\r\n }\r\n return loc;\r\n}\n\nconst CHAR_SP = ' ';\r\nconst CHAR_CR = '\\r';\r\nconst CHAR_LF = '\\n';\r\nconst CHAR_LS = String.fromCharCode(0x2028);\r\nconst CHAR_PS = String.fromCharCode(0x2029);\r\nfunction createScanner(str) {\r\n const _buf = str;\r\n let _index = 0;\r\n let _line = 1;\r\n let _column = 1;\r\n let _peekOffset = 0;\r\n const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\r\n const isLF = (index) => _buf[index] === CHAR_LF;\r\n const isPS = (index) => _buf[index] === CHAR_PS;\r\n const isLS = (index) => _buf[index] === CHAR_LS;\r\n const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\r\n const index = () => _index;\r\n const line = () => _line;\r\n const column = () => _column;\r\n const peekOffset = () => _peekOffset;\r\n const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\r\n const currentChar = () => charAt(_index);\r\n const currentPeek = () => charAt(_index + _peekOffset);\r\n function next() {\r\n _peekOffset = 0;\r\n if (isLineEnd(_index)) {\r\n _line++;\r\n _column = 0;\r\n }\r\n if (isCRLF(_index)) {\r\n _index++;\r\n }\r\n _index++;\r\n _column++;\r\n return _buf[_index];\r\n }\r\n function peek() {\r\n if (isCRLF(_index + _peekOffset)) {\r\n _peekOffset++;\r\n }\r\n _peekOffset++;\r\n return _buf[_index + _peekOffset];\r\n }\r\n function reset() {\r\n _index = 0;\r\n _line = 1;\r\n _column = 1;\r\n _peekOffset = 0;\r\n }\r\n function resetPeek(offset = 0) {\r\n _peekOffset = offset;\r\n }\r\n function skipToPeek() {\r\n const target = _index + _peekOffset;\r\n // eslint-disable-next-line no-unmodified-loop-condition\r\n while (target !== _index) {\r\n next();\r\n }\r\n _peekOffset = 0;\r\n }\r\n return {\r\n index,\r\n line,\r\n column,\r\n peekOffset,\r\n charAt,\r\n currentChar,\r\n currentPeek,\r\n next,\r\n peek,\r\n reset,\r\n resetPeek,\r\n skipToPeek\r\n };\r\n}\n\nconst EOF = undefined;\r\nconst LITERAL_DELIMITER = \"'\";\r\nconst ERROR_DOMAIN$1 = 'tokenizer';\r\nfunction createTokenizer(source, options = {}) {\r\n const location = options.location !== false;\r\n const _scnr = createScanner(source);\r\n const currentOffset = () => _scnr.index();\r\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\r\n const _initLoc = currentPosition();\r\n const _initOffset = currentOffset();\r\n const _context = {\r\n currentType: 14 /* EOF */,\r\n offset: _initOffset,\r\n startLoc: _initLoc,\r\n endLoc: _initLoc,\r\n lastType: 14 /* EOF */,\r\n lastOffset: _initOffset,\r\n lastStartLoc: _initLoc,\r\n lastEndLoc: _initLoc,\r\n braceNest: 0,\r\n inLinked: false,\r\n text: ''\r\n };\r\n const context = () => _context;\r\n const { onError } = options;\r\n function emitError(code, pos, offset, ...args) {\r\n const ctx = context();\r\n pos.column += offset;\r\n pos.offset += offset;\r\n if (onError) {\r\n const loc = createLocation(ctx.startLoc, pos);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN$1,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function getToken(context, type, value) {\r\n context.endLoc = currentPosition();\r\n context.currentType = type;\r\n const token = { type };\r\n if (location) {\r\n token.loc = createLocation(context.startLoc, context.endLoc);\r\n }\r\n if (value != null) {\r\n token.value = value;\r\n }\r\n return token;\r\n }\r\n const getEndToken = (context) => getToken(context, 14 /* EOF */);\r\n function eat(scnr, ch) {\r\n if (scnr.currentChar() === ch) {\r\n scnr.next();\r\n return ch;\r\n }\r\n else {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function peekSpaces(scnr) {\r\n let buf = '';\r\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\r\n buf += scnr.currentPeek();\r\n scnr.peek();\r\n }\r\n return buf;\r\n }\r\n function skipSpaces(scnr) {\r\n const buf = peekSpaces(scnr);\r\n scnr.skipToPeek();\r\n return buf;\r\n }\r\n function isIdentifierStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n cc === 95 // _\r\n );\r\n }\r\n function isNumberStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n }\r\n function isNamedIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isListIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\r\n const ret = isNumberStart(ch);\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLiteralStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDotStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 8 /* LinkedAlias */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \".\" /* LinkedDot */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedModifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 9 /* LinkedDot */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDelimiterStart(scnr, context) {\r\n const { currentType } = context;\r\n if (!(currentType === 8 /* LinkedAlias */ ||\r\n currentType === 12 /* LinkedModifier */)) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \":\" /* LinkedDelimiter */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedReferStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 10 /* LinkedDelimiter */) {\r\n return false;\r\n }\r\n const fn = () => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return isIdentifierStart(scnr.peek());\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n ch === \":\" /* LinkedDelimiter */ ||\r\n ch === \".\" /* LinkedDot */ ||\r\n ch === CHAR_SP ||\r\n !ch) {\r\n return false;\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn();\r\n }\r\n else {\r\n // other characters\r\n return isIdentifierStart(ch);\r\n }\r\n };\r\n const ret = fn();\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isPluralStart(scnr) {\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"|\" /* Pipe */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function detectModuloStart(scnr) {\r\n const spaces = peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"%\" /* Modulo */ &&\r\n scnr.peek() === \"{\" /* BraceLeft */;\r\n scnr.resetPeek();\r\n return {\r\n isModulo: ret,\r\n hasSpace: spaces.length > 0\r\n };\r\n }\r\n function isTextStart(scnr, reset = true) {\r\n const fn = (hasSpace = false, prev = '', detectModulo = false) => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return prev === \"%\" /* Modulo */ ? false : hasSpace;\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ || !ch) {\r\n return prev === \"%\" /* Modulo */ ? true : hasSpace;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n scnr.peek();\r\n return fn(hasSpace, \"%\" /* Modulo */, true);\r\n }\r\n else if (ch === \"|\" /* Pipe */) {\r\n return prev === \"%\" /* Modulo */ || detectModulo\r\n ? true\r\n : !(prev === CHAR_SP || prev === CHAR_LF);\r\n }\r\n else if (ch === CHAR_SP) {\r\n scnr.peek();\r\n return fn(true, CHAR_SP, detectModulo);\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn(true, CHAR_LF, detectModulo);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n const ret = fn();\r\n reset && scnr.resetPeek();\r\n return ret;\r\n }\r\n function takeChar(scnr, fn) {\r\n const ch = scnr.currentChar();\r\n if (ch === EOF) {\r\n return EOF;\r\n }\r\n if (fn(ch)) {\r\n scnr.next();\r\n return ch;\r\n }\r\n return null;\r\n }\r\n function takeIdentifierChar(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n (cc >= 48 && cc <= 57) || // 0-9\r\n cc === 95 || // _\r\n cc === 36 // $\r\n );\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeHexDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 48 && cc <= 57) || // 0-9\r\n (cc >= 65 && cc <= 70) || // A-F\r\n (cc >= 97 && cc <= 102)); // a-f\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function getDigits(scnr) {\r\n let ch = '';\r\n let num = '';\r\n while ((ch = takeDigit(scnr))) {\r\n num += ch;\r\n }\r\n return num;\r\n }\r\n function readModulo(scnr) {\r\n skipSpaces(scnr);\r\n const ch = scnr.currentChar();\r\n if (ch !== \"%\" /* Modulo */) {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n }\r\n scnr.next();\r\n return \"%\" /* Modulo */;\r\n }\r\n function readText(scnr) {\r\n let buf = '';\r\n while (true) {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"}\" /* BraceRight */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n break;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else if (ch === CHAR_SP || ch === CHAR_LF) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else if (isPluralStart(scnr)) {\r\n break;\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n return buf;\r\n }\r\n function readNamedIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return name;\r\n }\r\n function readListIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let value = '';\r\n if (scnr.currentChar() === '-') {\r\n scnr.next();\r\n value += `-${getDigits(scnr)}`;\r\n }\r\n else {\r\n value += getDigits(scnr);\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return value;\r\n }\r\n function readLiteral(scnr) {\r\n skipSpaces(scnr);\r\n eat(scnr, `\\'`);\r\n let ch = '';\r\n let literal = '';\r\n const fn = (x) => x !== LITERAL_DELIMITER && x !== CHAR_LF;\r\n while ((ch = takeChar(scnr, fn))) {\r\n if (ch === '\\\\') {\r\n literal += readEscapeSequence(scnr);\r\n }\r\n else {\r\n literal += ch;\r\n }\r\n }\r\n const current = scnr.currentChar();\r\n if (current === CHAR_LF || current === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\r\n // TODO: Is it correct really?\r\n if (current === CHAR_LF) {\r\n scnr.next();\r\n eat(scnr, `\\'`);\r\n }\r\n return literal;\r\n }\r\n eat(scnr, `\\'`);\r\n return literal;\r\n }\r\n function readEscapeSequence(scnr) {\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case '\\\\':\r\n case `\\'`:\r\n scnr.next();\r\n return `\\\\${ch}`;\r\n case 'u':\r\n return readUnicodeEscapeSequence(scnr, ch, 4);\r\n case 'U':\r\n return readUnicodeEscapeSequence(scnr, ch, 6);\r\n default:\r\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\r\n eat(scnr, unicode);\r\n let sequence = '';\r\n for (let i = 0; i < digits; i++) {\r\n const ch = takeHexDigit(scnr);\r\n if (!ch) {\r\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\r\n break;\r\n }\r\n sequence += ch;\r\n }\r\n return `\\\\${unicode}${sequence}`;\r\n }\r\n function readInvalidIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let identifiers = '';\r\n const closure = (ch) => ch !== \"{\" /* BraceLeft */ &&\r\n ch !== \"}\" /* BraceRight */ &&\r\n ch !== CHAR_SP &&\r\n ch !== CHAR_LF;\r\n while ((ch = takeChar(scnr, closure))) {\r\n identifiers += ch;\r\n }\r\n return identifiers;\r\n }\r\n function readLinkedModifier(scnr) {\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n return name;\r\n }\r\n function readLinkedRefer(scnr) {\r\n const fn = (detect = false, buf) => {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_SP) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_LF) {\r\n buf += ch;\r\n scnr.next();\r\n return fn(detect, buf);\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n return fn(true, buf);\r\n }\r\n };\r\n return fn(false, '');\r\n }\r\n function readPlural(scnr) {\r\n skipSpaces(scnr);\r\n const plural = eat(scnr, \"|\" /* Pipe */);\r\n skipSpaces(scnr);\r\n return plural;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInPlaceholder(scnr, context) {\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n if (context.braceNest >= 1) {\r\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 2 /* BraceLeft */, \"{\" /* BraceLeft */);\r\n skipSpaces(scnr);\r\n context.braceNest++;\r\n return token;\r\n case \"}\" /* BraceRight */:\r\n if (context.braceNest > 0 &&\r\n context.currentType === 2 /* BraceLeft */) {\r\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n context.braceNest--;\r\n context.braceNest > 0 && skipSpaces(scnr);\r\n if (context.inLinked && context.braceNest === 0) {\r\n context.inLinked = false;\r\n }\r\n return token;\r\n case \"@\" /* LinkedAlias */:\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = readTokenInLinked(scnr, context) || getEndToken(context);\r\n context.braceNest = 0;\r\n return token;\r\n default:\r\n let validNamedIdentifier = true;\r\n let validListIdentifier = true;\r\n let validLiteral = true;\r\n if (isPluralStart(scnr)) {\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (context.braceNest > 0 &&\r\n (context.currentType === 5 /* Named */ ||\r\n context.currentType === 6 /* List */ ||\r\n context.currentType === 7 /* Literal */)) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n context.braceNest = 0;\r\n return readToken(scnr, context);\r\n }\r\n if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\r\n token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\r\n token = getToken(context, 6 /* List */, readListIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validLiteral = isLiteralStart(scnr, context))) {\r\n token = getToken(context, 7 /* Literal */, readLiteral(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\r\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\r\n token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));\r\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInLinked(scnr, context) {\r\n const { currentType } = context;\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n if ((currentType === 8 /* LinkedAlias */ ||\r\n currentType === 9 /* LinkedDot */ ||\r\n currentType === 12 /* LinkedModifier */ ||\r\n currentType === 10 /* LinkedDelimiter */) &&\r\n (ch === CHAR_LF || ch === CHAR_SP)) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n switch (ch) {\r\n case \"@\" /* LinkedAlias */:\r\n scnr.next();\r\n token = getToken(context, 8 /* LinkedAlias */, \"@\" /* LinkedAlias */);\r\n context.inLinked = true;\r\n return token;\r\n case \".\" /* LinkedDot */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 9 /* LinkedDot */, \".\" /* LinkedDot */);\r\n case \":\" /* LinkedDelimiter */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 10 /* LinkedDelimiter */, \":\" /* LinkedDelimiter */);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (isLinkedDotStart(scnr, context) ||\r\n isLinkedDelimiterStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return readTokenInLinked(scnr, context);\r\n }\r\n if (isLinkedModifierStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));\r\n }\r\n if (isLinkedReferStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n if (ch === \"{\" /* BraceLeft */) {\r\n // scan the placeholder\r\n return readTokenInPlaceholder(scnr, context) || token;\r\n }\r\n else {\r\n return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));\r\n }\r\n }\r\n if (currentType === 8 /* LinkedAlias */) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return readToken(scnr, context);\r\n }\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readToken(scnr, context) {\r\n let token = { type: 14 /* EOF */ };\r\n if (context.braceNest > 0) {\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n }\r\n if (context.inLinked) {\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n }\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n case \"}\" /* BraceRight */:\r\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\r\n scnr.next();\r\n return getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n case \"@\" /* LinkedAlias */:\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n const { isModulo, hasSpace } = detectModuloStart(scnr);\r\n if (isModulo) {\r\n return hasSpace\r\n ? getToken(context, 0 /* Text */, readText(scnr))\r\n : getToken(context, 4 /* Modulo */, readModulo(scnr));\r\n }\r\n if (isTextStart(scnr)) {\r\n return getToken(context, 0 /* Text */, readText(scnr));\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n function nextToken() {\r\n const { currentType, offset, startLoc, endLoc } = _context;\r\n _context.lastType = currentType;\r\n _context.lastOffset = offset;\r\n _context.lastStartLoc = startLoc;\r\n _context.lastEndLoc = endLoc;\r\n _context.offset = currentOffset();\r\n _context.startLoc = currentPosition();\r\n if (_scnr.currentChar() === EOF) {\r\n return getToken(_context, 14 /* EOF */);\r\n }\r\n return readToken(_scnr, _context);\r\n }\r\n return {\r\n nextToken,\r\n currentOffset,\r\n currentPosition,\r\n context\r\n };\r\n}\n\nconst ERROR_DOMAIN = 'parser';\r\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\r\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\r\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\r\n switch (match) {\r\n case `\\\\\\\\`:\r\n return `\\\\`;\r\n case `\\\\\\'`:\r\n return `\\'`;\r\n default: {\r\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\r\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\r\n return String.fromCodePoint(codePoint);\r\n }\r\n // invalid ...\r\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\r\n return '�';\r\n }\r\n }\r\n}\r\nfunction createParser(options = {}) {\r\n const location = options.location !== false;\r\n const { onError } = options;\r\n function emitError(tokenzer, code, start, offset, ...args) {\r\n const end = tokenzer.currentPosition();\r\n end.offset += offset;\r\n end.column += offset;\r\n if (onError) {\r\n const loc = createLocation(start, end);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function startNode(type, offset, loc) {\r\n const node = {\r\n type,\r\n start: offset,\r\n end: offset\r\n };\r\n if (location) {\r\n node.loc = { start: loc, end: loc };\r\n }\r\n return node;\r\n }\r\n function endNode(node, offset, pos, type) {\r\n node.end = offset;\r\n if (type) {\r\n node.type = type;\r\n }\r\n if (location && node.loc) {\r\n node.loc.end = pos;\r\n }\r\n }\r\n function parseText(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(3 /* Text */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseList(tokenizer, index) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(5 /* List */, offset, loc);\r\n node.index = parseInt(index, 10);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseNamed(tokenizer, key) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(4 /* Named */, offset, loc);\r\n node.key = key;\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLiteral(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(9 /* Literal */, offset, loc);\r\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinkedModifier(tokenizer) {\r\n const token = tokenizer.nextToken();\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\r\n const node = startNode(8 /* LinkedModifier */, offset, loc);\r\n if (token.type !== 12 /* LinkedModifier */) {\r\n // empty modifier\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\r\n node.value = '';\r\n endNode(node, offset, loc);\r\n return {\r\n nextConsumeToken: token,\r\n node\r\n };\r\n }\r\n // check token\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.value = token.value || '';\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node\r\n };\r\n }\r\n function parseLinkedKey(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinked(tokenizer) {\r\n const context = tokenizer.context();\r\n const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);\r\n let token = tokenizer.nextToken();\r\n if (token.type === 9 /* LinkedDot */) {\r\n const parsed = parseLinkedModifier(tokenizer);\r\n linkedNode.modifier = parsed.node;\r\n token = parsed.nextConsumeToken || tokenizer.nextToken();\r\n }\r\n // asset check token\r\n if (token.type !== 10 /* LinkedDelimiter */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n token = tokenizer.nextToken();\r\n // skip brace left\r\n if (token.type === 2 /* BraceLeft */) {\r\n token = tokenizer.nextToken();\r\n }\r\n switch (token.type) {\r\n case 11 /* LinkedKey */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseNamed(tokenizer, token.value || '');\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseList(tokenizer, token.value || '');\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\r\n break;\r\n default:\r\n // empty key\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\r\n const nextContext = tokenizer.context();\r\n const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);\r\n emptyLinkedKeyNode.value = '';\r\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\r\n linkedNode.key = emptyLinkedKeyNode;\r\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\r\n return {\r\n nextConsumeToken: token,\r\n node: linkedNode\r\n };\r\n }\r\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node: linkedNode\r\n };\r\n }\r\n function parseMessage(tokenizer) {\r\n const context = tokenizer.context();\r\n const startOffset = context.currentType === 1 /* Pipe */\r\n ? tokenizer.currentOffset()\r\n : context.offset;\r\n const startLoc = context.currentType === 1 /* Pipe */\r\n ? context.endLoc\r\n : context.startLoc;\r\n const node = startNode(2 /* Message */, startOffset, startLoc);\r\n node.items = [];\r\n let nextToken = null;\r\n do {\r\n const token = nextToken || tokenizer.nextToken();\r\n nextToken = null;\r\n switch (token.type) {\r\n case 0 /* Text */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseText(tokenizer, token.value || ''));\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseList(tokenizer, token.value || ''));\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseNamed(tokenizer, token.value || ''));\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseLiteral(tokenizer, token.value || ''));\r\n break;\r\n case 8 /* LinkedAlias */:\r\n const parsed = parseLinked(tokenizer);\r\n node.items.push(parsed.node);\r\n nextToken = parsed.nextConsumeToken || null;\r\n break;\r\n }\r\n } while (context.currentType !== 14 /* EOF */ &&\r\n context.currentType !== 1 /* Pipe */);\r\n // adjust message node loc\r\n const endOffset = context.currentType === 1 /* Pipe */\r\n ? context.lastOffset\r\n : tokenizer.currentOffset();\r\n const endLoc = context.currentType === 1 /* Pipe */\r\n ? context.lastEndLoc\r\n : tokenizer.currentPosition();\r\n endNode(node, endOffset, endLoc);\r\n return node;\r\n }\r\n function parsePlural(tokenizer, offset, loc, msgNode) {\r\n const context = tokenizer.context();\r\n let hasEmptyMessage = msgNode.items.length === 0;\r\n const node = startNode(1 /* Plural */, offset, loc);\r\n node.cases = [];\r\n node.cases.push(msgNode);\r\n do {\r\n const msg = parseMessage(tokenizer);\r\n if (!hasEmptyMessage) {\r\n hasEmptyMessage = msg.items.length === 0;\r\n }\r\n node.cases.push(msg);\r\n } while (context.currentType !== 14 /* EOF */);\r\n if (hasEmptyMessage) {\r\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseResource(tokenizer) {\r\n const context = tokenizer.context();\r\n const { offset, startLoc } = context;\r\n const msgNode = parseMessage(tokenizer);\r\n if (context.currentType === 14 /* EOF */) {\r\n return msgNode;\r\n }\r\n else {\r\n return parsePlural(tokenizer, offset, startLoc, msgNode);\r\n }\r\n }\r\n function parse(source) {\r\n const tokenizer = createTokenizer(source, assign({}, options));\r\n const context = tokenizer.context();\r\n const node = startNode(0 /* Resource */, context.offset, context.startLoc);\r\n if (location && node.loc) {\r\n node.loc.source = source;\r\n }\r\n node.body = parseResource(tokenizer);\r\n // assert whether achieved to EOF\r\n if (context.currentType !== 14 /* EOF */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n return { parse };\r\n}\r\nfunction getTokenCaption(token) {\r\n if (token.type === 14 /* EOF */) {\r\n return 'EOF';\r\n }\r\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\r\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\r\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\r\n) {\r\n const _context = {\r\n ast,\r\n helpers: new Set()\r\n };\r\n const context = () => _context;\r\n const helper = (name) => {\r\n _context.helpers.add(name);\r\n return name;\r\n };\r\n return { context, helper };\r\n}\r\nfunction traverseNodes(nodes, transformer) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n traverseNode(nodes[i], transformer);\r\n }\r\n}\r\nfunction traverseNode(node, transformer) {\r\n // TODO: if we need pre-hook of transform, should be implemented to here\r\n switch (node.type) {\r\n case 1 /* Plural */:\r\n traverseNodes(node.cases, transformer);\r\n transformer.helper(\"plural\" /* PLURAL */);\r\n break;\r\n case 2 /* Message */:\r\n traverseNodes(node.items, transformer);\r\n break;\r\n case 6 /* Linked */:\r\n const linked = node;\r\n traverseNode(linked.key, transformer);\r\n transformer.helper(\"linked\" /* LINKED */);\r\n transformer.helper(\"type\" /* TYPE */);\r\n break;\r\n case 5 /* List */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"list\" /* LIST */);\r\n break;\r\n case 4 /* Named */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"named\" /* NAMED */);\r\n break;\r\n }\r\n // TODO: if we need post-hook of transform, should be implemented to here\r\n}\r\n// transform AST\r\nfunction transform(ast, options = {} // eslint-disable-line\r\n) {\r\n const transformer = createTransformer(ast);\r\n transformer.helper(\"normalize\" /* NORMALIZE */);\r\n // traverse\r\n ast.body && traverseNode(ast.body, transformer);\r\n // set meta information\r\n const context = transformer.context();\r\n ast.helpers = Array.from(context.helpers);\r\n}\n\nfunction createCodeGenerator(ast, options) {\r\n const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\r\n const _context = {\r\n source: ast.loc.source,\r\n filename,\r\n code: '',\r\n column: 1,\r\n line: 1,\r\n offset: 0,\r\n map: undefined,\r\n breakLineCode,\r\n needIndent: _needIndent,\r\n indentLevel: 0\r\n };\r\n const context = () => _context;\r\n function push(code, node) {\r\n _context.code += code;\r\n }\r\n function _newline(n, withBreakLine = true) {\r\n const _breakLineCode = withBreakLine ? breakLineCode : '';\r\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\r\n }\r\n function indent(withNewLine = true) {\r\n const level = ++_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function deindent(withNewLine = true) {\r\n const level = --_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function newline() {\r\n _newline(_context.indentLevel);\r\n }\r\n const helper = (key) => `_${key}`;\r\n const needIndent = () => _context.needIndent;\r\n return {\r\n context,\r\n push,\r\n indent,\r\n deindent,\r\n newline,\r\n helper,\r\n needIndent\r\n };\r\n}\r\nfunction generateLinkedNode(generator, node) {\r\n const { helper } = generator;\r\n generator.push(`${helper(\"linked\" /* LINKED */)}(`);\r\n generateNode(generator, node.key);\r\n if (node.modifier) {\r\n generator.push(`, `);\r\n generateNode(generator, node.modifier);\r\n generator.push(`, _type`);\r\n }\r\n else {\r\n generator.push(`, undefined, _type`);\r\n }\r\n generator.push(`)`);\r\n}\r\nfunction generateMessageNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n generator.push(`${helper(\"normalize\" /* NORMALIZE */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.items.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.items[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push('])');\r\n}\r\nfunction generatePluralNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n if (node.cases.length > 1) {\r\n generator.push(`${helper(\"plural\" /* PLURAL */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.cases.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.cases[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push(`])`);\r\n }\r\n}\r\nfunction generateResource(generator, node) {\r\n if (node.body) {\r\n generateNode(generator, node.body);\r\n }\r\n else {\r\n generator.push('null');\r\n }\r\n}\r\nfunction generateNode(generator, node) {\r\n const { helper } = generator;\r\n switch (node.type) {\r\n case 0 /* Resource */:\r\n generateResource(generator, node);\r\n break;\r\n case 1 /* Plural */:\r\n generatePluralNode(generator, node);\r\n break;\r\n case 2 /* Message */:\r\n generateMessageNode(generator, node);\r\n break;\r\n case 6 /* Linked */:\r\n generateLinkedNode(generator, node);\r\n break;\r\n case 8 /* LinkedModifier */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 7 /* LinkedKey */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 5 /* List */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"list\" /* LIST */)}(${node.index}))`, node);\r\n break;\r\n case 4 /* Named */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"named\" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);\r\n break;\r\n case 9 /* Literal */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 3 /* Text */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n default:\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n throw new Error(`unhandled codegen node type: ${node.type}`);\r\n }\r\n }\r\n}\r\n// generate code from AST\r\nconst generate = (ast, options = {} // eslint-disable-line\r\n) => {\r\n const mode = isString(options.mode) ? options.mode : 'normal';\r\n const filename = isString(options.filename)\r\n ? options.filename\r\n : 'message.intl';\r\n const sourceMap = !!options.sourceMap;\r\n // prettier-ignore\r\n const breakLineCode = options.breakLineCode != null\r\n ? options.breakLineCode\r\n : mode === 'arrow'\r\n ? ';'\r\n : '\\n';\r\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\r\n const helpers = ast.helpers || [];\r\n const generator = createCodeGenerator(ast, {\r\n mode,\r\n filename,\r\n sourceMap,\r\n breakLineCode,\r\n needIndent\r\n });\r\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\r\n generator.indent(needIndent);\r\n if (helpers.length > 0) {\r\n generator.push(`const { ${helpers.map(s => `${s}: _${s}`).join(', ')} } = ctx`);\r\n generator.newline();\r\n }\r\n generator.push(`return `);\r\n generateNode(generator, ast);\r\n generator.deindent(needIndent);\r\n generator.push(`}`);\r\n const { code, map } = generator.context();\r\n return {\r\n ast,\r\n code,\r\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\r\n };\r\n};\n\nfunction baseCompile(source, options = {}) {\r\n const assignedOptions = assign({}, options);\r\n // parse source codes\r\n const parser = createParser(assignedOptions);\r\n const ast = parser.parse(source);\r\n // transform ASTs\r\n transform(ast, assignedOptions);\r\n // generate javascript codes\r\n return generate(ast, assignedOptions);\r\n}\n\nexport { CompileErrorCodes, ERROR_DOMAIN, LocationStub, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, errorMessages };\n","/*!\n * devtools-if v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst IntlifyDevToolsHooks = {\r\n I18nInit: 'i18n:init',\r\n FunctionTranslate: 'function:translate'\r\n};\n\nexport { IntlifyDevToolsHooks };\n","/*!\n * core-base v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { isObject, isString, isFunction, isNumber, isPlainObject, toDisplayString, isArray, format, isBoolean, assign, isRegExp, warn, escapeHtml, inBrowser, mark, measure, isEmptyObject, generateCodeFrame, generateFormatCacheKey, isDate, getGlobalThis } from '@intlify/shared';\nimport { defaultOnError, baseCompile, CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nimport { IntlifyDevToolsHooks } from '@intlify/devtools-if';\n\nconst pathStateMachine = [];\r\npathStateMachine[0 /* BEFORE_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [0 /* BEFORE_PATH */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[1 /* IN_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[2 /* BEFORE_IDENT */] = {\r\n [\"w\" /* WORKSPACE */]: [2 /* BEFORE_IDENT */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */]\r\n};\r\npathStateMachine[3 /* IN_IDENT */] = {\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */, 1 /* PUSH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */, 1 /* PUSH */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */, 1 /* PUSH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */, 1 /* PUSH */]\r\n};\r\npathStateMachine[4 /* IN_SUB_PATH */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */],\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [\r\n 4 /* IN_SUB_PATH */,\r\n 2 /* INC_SUB_PATH_DEPTH */\r\n ],\r\n [\"]\" /* RIGHT_BRACKET */]: [1 /* IN_PATH */, 3 /* PUSH_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */]\r\n};\r\npathStateMachine[5 /* IN_SINGLE_QUOTE */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */]\r\n};\r\npathStateMachine[6 /* IN_DOUBLE_QUOTE */] = {\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */]\r\n};\r\n/**\r\n * Check if an expression is a literal value.\r\n */\r\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\r\nfunction isLiteral(exp) {\r\n return literalValueRE.test(exp);\r\n}\r\n/**\r\n * Strip quotes from a string\r\n */\r\nfunction stripQuotes(str) {\r\n const a = str.charCodeAt(0);\r\n const b = str.charCodeAt(str.length - 1);\r\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\r\n}\r\n/**\r\n * Determine the type of a character in a keypath.\r\n */\r\nfunction getPathCharType(ch) {\r\n if (ch === undefined || ch === null) {\r\n return \"o\" /* END_OF_FAIL */;\r\n }\r\n const code = ch.charCodeAt(0);\r\n switch (code) {\r\n case 0x5b: // [\r\n case 0x5d: // ]\r\n case 0x2e: // .\r\n case 0x22: // \"\r\n case 0x27: // '\r\n return ch;\r\n case 0x5f: // _\r\n case 0x24: // $\r\n case 0x2d: // -\r\n return \"i\" /* IDENT */;\r\n case 0x09: // Tab (HT)\r\n case 0x0a: // Newline (LF)\r\n case 0x0d: // Return (CR)\r\n case 0xa0: // No-break space (NBSP)\r\n case 0xfeff: // Byte Order Mark (BOM)\r\n case 0x2028: // Line Separator (LS)\r\n case 0x2029: // Paragraph Separator (PS)\r\n return \"w\" /* WORKSPACE */;\r\n }\r\n return \"i\" /* IDENT */;\r\n}\r\n/**\r\n * Format a subPath, return its plain form if it is\r\n * a literal string or number. Otherwise prepend the\r\n * dynamic indicator (*).\r\n */\r\nfunction formatSubPath(path) {\r\n const trimmed = path.trim();\r\n // invalid leading 0\r\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\r\n return false;\r\n }\r\n return isLiteral(trimmed)\r\n ? stripQuotes(trimmed)\r\n : \"*\" /* ASTARISK */ + trimmed;\r\n}\r\n/**\r\n * Parse a string path into an array of segments\r\n */\r\nfunction parse(path) {\r\n const keys = [];\r\n let index = -1;\r\n let mode = 0 /* BEFORE_PATH */;\r\n let subPathDepth = 0;\r\n let c;\r\n let key; // eslint-disable-line\r\n let newChar;\r\n let type;\r\n let transition;\r\n let action;\r\n let typeMap;\r\n const actions = [];\r\n actions[0 /* APPEND */] = () => {\r\n if (key === undefined) {\r\n key = newChar;\r\n }\r\n else {\r\n key += newChar;\r\n }\r\n };\r\n actions[1 /* PUSH */] = () => {\r\n if (key !== undefined) {\r\n keys.push(key);\r\n key = undefined;\r\n }\r\n };\r\n actions[2 /* INC_SUB_PATH_DEPTH */] = () => {\r\n actions[0 /* APPEND */]();\r\n subPathDepth++;\r\n };\r\n actions[3 /* PUSH_SUB_PATH */] = () => {\r\n if (subPathDepth > 0) {\r\n subPathDepth--;\r\n mode = 4 /* IN_SUB_PATH */;\r\n actions[0 /* APPEND */]();\r\n }\r\n else {\r\n subPathDepth = 0;\r\n if (key === undefined) {\r\n return false;\r\n }\r\n key = formatSubPath(key);\r\n if (key === false) {\r\n return false;\r\n }\r\n else {\r\n actions[1 /* PUSH */]();\r\n }\r\n }\r\n };\r\n function maybeUnescapeQuote() {\r\n const nextChar = path[index + 1];\r\n if ((mode === 5 /* IN_SINGLE_QUOTE */ &&\r\n nextChar === \"'\" /* SINGLE_QUOTE */) ||\r\n (mode === 6 /* IN_DOUBLE_QUOTE */ &&\r\n nextChar === \"\\\"\" /* DOUBLE_QUOTE */)) {\r\n index++;\r\n newChar = '\\\\' + nextChar;\r\n actions[0 /* APPEND */]();\r\n return true;\r\n }\r\n }\r\n while (mode !== null) {\r\n index++;\r\n c = path[index];\r\n if (c === '\\\\' && maybeUnescapeQuote()) {\r\n continue;\r\n }\r\n type = getPathCharType(c);\r\n typeMap = pathStateMachine[mode];\r\n transition = typeMap[type] || typeMap[\"l\" /* ELSE */] || 8 /* ERROR */;\r\n // check parse error\r\n if (transition === 8 /* ERROR */) {\r\n return;\r\n }\r\n mode = transition[0];\r\n if (transition[1] !== undefined) {\r\n action = actions[transition[1]];\r\n if (action) {\r\n newChar = c;\r\n if (action() === false) {\r\n return;\r\n }\r\n }\r\n }\r\n // check parse finish\r\n if (mode === 7 /* AFTER_PATH */) {\r\n return keys;\r\n }\r\n }\r\n}\r\n// path token cache\r\nconst cache = new Map();\r\n/**\r\n * key-value message resolver\r\n *\r\n * @remarks\r\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveWithKeyValue(obj, path) {\r\n return isObject(obj) ? obj[path] : null;\r\n}\r\n/**\r\n * message resolver\r\n *\r\n * @remarks\r\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveValue(obj, path) {\r\n // check object\r\n if (!isObject(obj)) {\r\n return null;\r\n }\r\n // parse path\r\n let hit = cache.get(path);\r\n if (!hit) {\r\n hit = parse(path);\r\n if (hit) {\r\n cache.set(path, hit);\r\n }\r\n }\r\n // check hit\r\n if (!hit) {\r\n return null;\r\n }\r\n // resolve path value\r\n const len = hit.length;\r\n let last = obj;\r\n let i = 0;\r\n while (i < len) {\r\n const val = last[hit[i]];\r\n if (val === undefined) {\r\n return null;\r\n }\r\n last = val;\r\n i++;\r\n }\r\n return last;\r\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\r\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\r\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\r\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : values.join('');\r\nconst DEFAULT_INTERPOLATE = toDisplayString;\r\nfunction pluralDefault(choice, choicesLength) {\r\n choice = Math.abs(choice);\r\n if (choicesLength === 2) {\r\n // prettier-ignore\r\n return choice\r\n ? choice > 1\r\n ? 1\r\n : 0\r\n : 1;\r\n }\r\n return choice ? Math.min(choice, 2) : 0;\r\n}\r\nfunction getPluralIndex(options) {\r\n // prettier-ignore\r\n const index = isNumber(options.pluralIndex)\r\n ? options.pluralIndex\r\n : -1;\r\n // prettier-ignore\r\n return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\r\n ? isNumber(options.named.count)\r\n ? options.named.count\r\n : isNumber(options.named.n)\r\n ? options.named.n\r\n : index\r\n : index;\r\n}\r\nfunction normalizeNamed(pluralIndex, props) {\r\n if (!props.count) {\r\n props.count = pluralIndex;\r\n }\r\n if (!props.n) {\r\n props.n = pluralIndex;\r\n }\r\n}\r\nfunction createMessageContext(options = {}) {\r\n const locale = options.locale;\r\n const pluralIndex = getPluralIndex(options);\r\n const pluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? options.pluralRules[locale]\r\n : pluralDefault;\r\n const orgPluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? pluralDefault\r\n : undefined;\r\n const plural = (messages) => {\r\n return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\r\n };\r\n const _list = options.list || [];\r\n const list = (index) => _list[index];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _named = options.named || {};\r\n isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\r\n const named = (key) => _named[key];\r\n function message(key) {\r\n // prettier-ignore\r\n const msg = isFunction(options.messages)\r\n ? options.messages(key)\r\n : isObject(options.messages)\r\n ? options.messages[key]\r\n : false;\r\n return !msg\r\n ? options.parent\r\n ? options.parent.message(key) // resolve from parent messages\r\n : DEFAULT_MESSAGE\r\n : msg;\r\n }\r\n const _modifier = (name) => options.modifiers\r\n ? options.modifiers[name]\r\n : DEFAULT_MODIFIER;\r\n const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\r\n ? options.processor.normalize\r\n : DEFAULT_NORMALIZE;\r\n const interpolate = isPlainObject(options.processor) &&\r\n isFunction(options.processor.interpolate)\r\n ? options.processor.interpolate\r\n : DEFAULT_INTERPOLATE;\r\n const type = isPlainObject(options.processor) && isString(options.processor.type)\r\n ? options.processor.type\r\n : DEFAULT_MESSAGE_DATA_TYPE;\r\n const linked = (key, ...args) => {\r\n const [arg1, arg2] = args;\r\n let type = 'text';\r\n let modifier = '';\r\n if (args.length === 1) {\r\n if (isObject(arg1)) {\r\n modifier = arg1.modifier || modifier;\r\n type = arg1.type || type;\r\n }\r\n else if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n }\r\n else if (args.length === 2) {\r\n if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n if (isString(arg2)) {\r\n type = arg2 || type;\r\n }\r\n }\r\n let msg = message(key)(ctx);\r\n // The message in vnode resolved with linked are returned as an array by processor.nomalize\r\n if (type === 'vnode' && isArray(msg) && modifier) {\r\n msg = msg[0];\r\n }\r\n return modifier ? _modifier(modifier)(msg, type) : msg;\r\n };\r\n const ctx = {\r\n [\"list\" /* LIST */]: list,\r\n [\"named\" /* NAMED */]: named,\r\n [\"plural\" /* PLURAL */]: plural,\r\n [\"linked\" /* LINKED */]: linked,\r\n [\"message\" /* MESSAGE */]: message,\r\n [\"type\" /* TYPE */]: type,\r\n [\"interpolate\" /* INTERPOLATE */]: interpolate,\r\n [\"normalize\" /* NORMALIZE */]: normalize\r\n };\r\n return ctx;\r\n}\n\nlet devtools = null;\r\nfunction setDevToolsHook(hook) {\r\n devtools = hook;\r\n}\r\nfunction getDevToolsHook() {\r\n return devtools;\r\n}\r\nfunction initI18nDevTools(i18n, version, meta) {\r\n // TODO: queue if devtools is undefined\r\n devtools &&\r\n devtools.emit(IntlifyDevToolsHooks.I18nInit, {\r\n timestamp: Date.now(),\r\n i18n,\r\n version,\r\n meta\r\n });\r\n}\r\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(IntlifyDevToolsHooks.FunctionTranslate);\r\nfunction createDevToolsHook(hook) {\r\n return (payloads) => devtools && devtools.emit(hook, payloads);\r\n}\n\nconst CoreWarnCodes = {\r\n NOT_FOUND_KEY: 1,\r\n FALLBACK_TO_TRANSLATE: 2,\r\n CANNOT_FORMAT_NUMBER: 3,\r\n FALLBACK_TO_NUMBER_FORMAT: 4,\r\n CANNOT_FORMAT_DATE: 5,\r\n FALLBACK_TO_DATE_FORMAT: 6,\r\n __EXTEND_POINT__: 7\r\n};\r\n/** @internal */\r\nconst warnMessages = {\r\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\r\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\n/**\r\n * Fallback with simple implemenation\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a simple fallback algorithm.\r\n *\r\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\r\n) {\r\n // prettier-ignore\r\n return [...new Set([\r\n start,\r\n ...(isArray(fallback)\r\n ? fallback\r\n : isObject(fallback)\r\n ? Object.keys(fallback)\r\n : isString(fallback)\r\n ? [fallback]\r\n : [start])\r\n ])];\r\n}\r\n/**\r\n * Fallback with locale chain\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\r\n const startLocale = isString(start) ? start : DEFAULT_LOCALE;\r\n const context = ctx;\r\n if (!context.__localeChainCache) {\r\n context.__localeChainCache = new Map();\r\n }\r\n let chain = context.__localeChainCache.get(startLocale);\r\n if (!chain) {\r\n chain = [];\r\n // first block defined by start\r\n let block = [start];\r\n // while any intervening block found\r\n while (isArray(block)) {\r\n block = appendBlockToChain(chain, block, fallback);\r\n }\r\n // prettier-ignore\r\n // last block defined by default\r\n const defaults = isArray(fallback) || !isPlainObject(fallback)\r\n ? fallback\r\n : fallback['default']\r\n ? fallback['default']\r\n : null;\r\n // convert defaults to array\r\n block = isString(defaults) ? [defaults] : defaults;\r\n if (isArray(block)) {\r\n appendBlockToChain(chain, block, false);\r\n }\r\n context.__localeChainCache.set(startLocale, chain);\r\n }\r\n return chain;\r\n}\r\nfunction appendBlockToChain(chain, block, blocks) {\r\n let follow = true;\r\n for (let i = 0; i < block.length && isBoolean(follow); i++) {\r\n const locale = block[i];\r\n if (isString(locale)) {\r\n follow = appendLocaleToChain(chain, block[i], blocks);\r\n }\r\n }\r\n return follow;\r\n}\r\nfunction appendLocaleToChain(chain, locale, blocks) {\r\n let follow;\r\n const tokens = locale.split('-');\r\n do {\r\n const target = tokens.join('-');\r\n follow = appendItemToChain(chain, target, blocks);\r\n tokens.splice(-1, 1);\r\n } while (tokens.length && follow === true);\r\n return follow;\r\n}\r\nfunction appendItemToChain(chain, target, blocks) {\r\n let follow = false;\r\n if (!chain.includes(target)) {\r\n follow = true;\r\n if (target) {\r\n follow = target[target.length - 1] !== '!';\r\n const locale = target.replace(/!/g, '');\r\n chain.push(locale);\r\n if ((isArray(blocks) || isPlainObject(blocks)) &&\r\n blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n follow = blocks[locale];\r\n }\r\n }\r\n }\r\n return follow;\r\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Intlify core-base version\r\n * @internal\r\n */\r\nconst VERSION = '9.2.2';\r\nconst NOT_REOSLVED = -1;\r\nconst DEFAULT_LOCALE = 'en-US';\r\nconst MISSING_RESOLVE_VALUE = '';\r\nconst capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\r\nfunction getDefaultLinkedModifiers() {\r\n return {\r\n upper: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toUpperCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toUpperCase()\r\n : val;\r\n },\r\n lower: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toLowerCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toLowerCase()\r\n : val;\r\n },\r\n capitalize: (val, type) => {\r\n // prettier-ignore\r\n return (type === 'text' && isString(val)\r\n ? capitalize(val)\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? capitalize(val.children)\r\n : val);\r\n }\r\n };\r\n}\r\nlet _compiler;\r\nfunction registerMessageCompiler(compiler) {\r\n _compiler = compiler;\r\n}\r\nlet _resolver;\r\n/**\r\n * Register the message resolver\r\n *\r\n * @param resolver - A {@link MessageResolver} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerMessageResolver(resolver) {\r\n _resolver = resolver;\r\n}\r\nlet _fallbacker;\r\n/**\r\n * Register the locale fallbacker\r\n *\r\n * @param fallbacker - A {@link LocaleFallbacker} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerLocaleFallbacker(fallbacker) {\r\n _fallbacker = fallbacker;\r\n}\r\n// Additional Meta for Intlify DevTools\r\nlet _additionalMeta = null;\r\nconst setAdditionalMeta = (meta) => {\r\n _additionalMeta = meta;\r\n};\r\nconst getAdditionalMeta = () => _additionalMeta;\r\nlet _fallbackContext = null;\r\nconst setFallbackContext = (context) => {\r\n _fallbackContext = context;\r\n};\r\nconst getFallbackContext = () => _fallbackContext;\r\n// ID for CoreContext\r\nlet _cid = 0;\r\nfunction createCoreContext(options = {}) {\r\n // setup options\r\n const version = isString(options.version) ? options.version : VERSION;\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n isString(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const messages = isPlainObject(options.messages)\r\n ? options.messages\r\n : { [locale]: {} };\r\n const datetimeFormats = isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [locale]: {} }\r\n ;\r\n const numberFormats = isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [locale]: {} }\r\n ;\r\n const modifiers = assign({}, options.modifiers || {}, getDefaultLinkedModifiers());\r\n const pluralRules = options.pluralRules || {};\r\n const missing = isFunction(options.missing) ? options.missing : null;\r\n const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n const fallbackFormat = !!options.fallbackFormat;\r\n const unresolving = !!options.unresolving;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n const processor = isPlainObject(options.processor) ? options.processor : null;\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const escapeParameter = !!options.escapeParameter;\r\n const messageCompiler = isFunction(options.messageCompiler)\r\n ? options.messageCompiler\r\n : _compiler;\r\n const messageResolver = isFunction(options.messageResolver)\r\n ? options.messageResolver\r\n : _resolver || resolveWithKeyValue;\r\n const localeFallbacker = isFunction(options.localeFallbacker)\r\n ? options.localeFallbacker\r\n : _fallbacker || fallbackWithSimple;\r\n const fallbackContext = isObject(options.fallbackContext)\r\n ? options.fallbackContext\r\n : undefined;\r\n const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\r\n // setup internal options\r\n const internalOptions = options;\r\n const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\r\n ? internalOptions.__datetimeFormatters\r\n : new Map()\r\n ;\r\n const __numberFormatters = isObject(internalOptions.__numberFormatters)\r\n ? internalOptions.__numberFormatters\r\n : new Map()\r\n ;\r\n const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\r\n _cid++;\r\n const context = {\r\n version,\r\n cid: _cid,\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n modifiers,\r\n pluralRules,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackFormat,\r\n unresolving,\r\n postTranslation,\r\n processor,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageCompiler,\r\n messageResolver,\r\n localeFallbacker,\r\n fallbackContext,\r\n onWarn,\r\n __meta\r\n };\r\n {\r\n context.datetimeFormats = datetimeFormats;\r\n context.numberFormats = numberFormats;\r\n context.__datetimeFormatters = __datetimeFormatters;\r\n context.__numberFormatters = __numberFormatters;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n context.__v_emitter =\r\n internalOptions.__v_emitter != null\r\n ? internalOptions.__v_emitter\r\n : undefined;\r\n }\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n initI18nDevTools(context, version, __meta);\r\n }\r\n return context;\r\n}\r\n/** @internal */\r\nfunction isTranslateFallbackWarn(fallback, key) {\r\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\r\n}\r\n/** @internal */\r\nfunction isTranslateMissingWarn(missing, key) {\r\n return missing instanceof RegExp ? missing.test(key) : missing;\r\n}\r\n/** @internal */\r\nfunction handleMissing(context, key, locale, missingWarn, type) {\r\n const { missing, onWarn } = context;\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"missing\" /* MISSING */, {\r\n locale,\r\n key,\r\n type,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n if (missing !== null) {\r\n const ret = missing(context, locale, key, type);\r\n return isString(ret) ? ret : key;\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\r\n }\r\n return key;\r\n }\r\n}\r\n/** @internal */\r\nfunction updateFallbackLocale(ctx, locale, fallback) {\r\n const context = ctx;\r\n context.__localeChainCache = new Map();\r\n ctx.localeFallbacker(ctx, fallback, locale);\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\r\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\r\nfunction checkHtmlMessage(source, options) {\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n if (warnHtmlMessage && RE_HTML_TAG.test(source)) {\r\n warn(format(WARN_MESSAGE, { source }));\r\n }\r\n}\r\nconst defaultOnCacheKey = (source) => source;\r\nlet compileCache = Object.create(null);\r\nfunction clearCompileCache() {\r\n compileCache = Object.create(null);\r\n}\r\nfunction compileToFunction(source, options = {}) {\r\n {\r\n // check HTML message\r\n (process.env.NODE_ENV !== 'production') && checkHtmlMessage(source, options);\r\n // check caches\r\n const onCacheKey = options.onCacheKey || defaultOnCacheKey;\r\n const key = onCacheKey(source);\r\n const cached = compileCache[key];\r\n if (cached) {\r\n return cached;\r\n }\r\n // compile error detecting\r\n let occurred = false;\r\n const onError = options.onError || defaultOnError;\r\n options.onError = (err) => {\r\n occurred = true;\r\n onError(err);\r\n };\r\n // compile\r\n const { code } = baseCompile(source, options);\r\n // evaluate function\r\n const msg = new Function(`return ${code}`)();\r\n // if occurred compile error, don't cache\r\n return !occurred ? (compileCache[key] = msg) : msg;\r\n }\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst CoreErrorCodes = {\r\n INVALID_ARGUMENT: code,\r\n INVALID_DATE_ARGUMENT: inc(),\r\n INVALID_ISO_DATE_ARGUMENT: inc(),\r\n __EXTEND_POINT__: inc() // 18\r\n};\r\nfunction createCoreError(code) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\r\n}\r\n/** @internal */\r\nconst errorMessages = {\r\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\r\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\r\n 'Make sure your Date represents a valid date.',\r\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string'\r\n};\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\r\nconst isMessageFunction = (val) => isFunction(val);\r\n// implementation of `translate` function\r\nfunction translate(context, ...args) {\r\n const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\r\n const [key, options] = parseTranslateArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const escapeParameter = isBoolean(options.escapeParameter)\r\n ? options.escapeParameter\r\n : context.escapeParameter;\r\n const resolvedMessage = !!options.resolvedMessage;\r\n // prettier-ignore\r\n const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\r\n ? !isBoolean(options.default)\r\n ? options.default\r\n : (!messageCompiler ? () => key : key)\r\n : fallbackFormat // default by `fallbackFormat` option\r\n ? (!messageCompiler ? () => key : key)\r\n : '';\r\n const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n // escape params\r\n escapeParameter && escapeParams(options);\r\n // resolve message format\r\n // eslint-disable-next-line prefer-const\r\n let [formatScope, targetLocale, message] = !resolvedMessage\r\n ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\r\n : [\r\n key,\r\n locale,\r\n messages[locale] || {}\r\n ];\r\n // NOTE:\r\n // Fix to work around `ssrTransfrom` bug in Vite.\r\n // https://github.com/vitejs/vite/issues/4306\r\n // To get around this, use temporary variables.\r\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\r\n let format = formatScope;\r\n // if you use default message, set it as message format!\r\n let cacheBaseKey = key;\r\n if (!resolvedMessage &&\r\n !(isString(format) || isMessageFunction(format))) {\r\n if (enableDefaultMsg) {\r\n format = defaultMsgOrKey;\r\n cacheBaseKey = format;\r\n }\r\n }\r\n // checking message format and target locale\r\n if (!resolvedMessage &&\r\n (!(isString(format) || isMessageFunction(format)) ||\r\n !isString(targetLocale))) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\r\n warn(`The message format compilation is not supported in this build. ` +\r\n `Because message compiler isn't included. ` +\r\n `You need to pre-compilation all message format. ` +\r\n `So translate function return '${key}'.`);\r\n return key;\r\n }\r\n // setup compile error detecting\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n // compile message format\r\n const msg = !isMessageFunction(format)\r\n ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector)\r\n : format;\r\n // if occurred compile error, return the message format\r\n if (occurred) {\r\n return format;\r\n }\r\n // evaluate message with context\r\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\r\n const msgContext = createMessageContext(ctxOptions);\r\n const messaged = evaluateMessage(context, msg, msgContext);\r\n // if use post translation option, proceed it with handler\r\n const ret = postTranslation\r\n ? postTranslation(messaged, key)\r\n : messaged;\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n // prettier-ignore\r\n const payloads = {\r\n timestamp: Date.now(),\r\n key: isString(key)\r\n ? key\r\n : isMessageFunction(format)\r\n ? format.key\r\n : '',\r\n locale: targetLocale || (isMessageFunction(format)\r\n ? format.locale\r\n : ''),\r\n format: isString(format)\r\n ? format\r\n : isMessageFunction(format)\r\n ? format.source\r\n : '',\r\n message: ret\r\n };\r\n payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\r\n translateDevTools(payloads);\r\n }\r\n return ret;\r\n}\r\nfunction escapeParams(options) {\r\n if (isArray(options.list)) {\r\n options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\r\n }\r\n else if (isObject(options.named)) {\r\n Object.keys(options.named).forEach(key => {\r\n if (isString(options.named[key])) {\r\n options.named[key] = escapeHtml(options.named[key]);\r\n }\r\n });\r\n }\r\n}\r\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\r\n const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\r\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n let message = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'translate';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n message =\r\n messages[targetLocale] || {};\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-resolve-start';\r\n endTag = 'intlify-message-resolve-end';\r\n mark && mark(startTag);\r\n }\r\n if ((format = resolveValue(message, key)) === null) {\r\n // if null, resolve with object key path\r\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start && format) {\r\n emitter.emit(\"message-resolve\" /* MESSAGE_RESOLVE */, {\r\n type: \"message-resolve\" /* MESSAGE_RESOLVE */,\r\n key,\r\n message: format,\r\n time: end - start,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message resolve', startTag, endTag);\r\n }\r\n }\r\n if (isString(format) || isFunction(format))\r\n break;\r\n const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n key, targetLocale, missingWarn, type);\r\n if (missingRet !== key) {\r\n format = missingRet;\r\n }\r\n from = to;\r\n }\r\n return [format, targetLocale, message];\r\n}\r\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector) {\r\n const { messageCompiler, warnHtmlMessage } = context;\r\n if (isMessageFunction(format)) {\r\n const msg = format;\r\n msg.locale = msg.locale || targetLocale;\r\n msg.key = msg.key || key;\r\n return msg;\r\n }\r\n if (messageCompiler == null) {\r\n const msg = (() => format);\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n return msg;\r\n }\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-compilation-start';\r\n endTag = 'intlify-message-compilation-end';\r\n mark && mark(startTag);\r\n }\r\n const msg = messageCompiler(format, getCompileOptions(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, errorDetector));\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-compilation\" /* MESSAGE_COMPILATION */, {\r\n type: \"message-compilation\" /* MESSAGE_COMPILATION */,\r\n message: format,\r\n time: end - start,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message compilation', startTag, endTag);\r\n }\r\n }\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n msg.source = format;\r\n return msg;\r\n}\r\nfunction evaluateMessage(context, msg, msgCtx) {\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-evaluation-start';\r\n endTag = 'intlify-message-evaluation-end';\r\n mark && mark(startTag);\r\n }\r\n const messaged = msg(msgCtx);\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-evaluation\" /* MESSAGE_EVALUATION */, {\r\n type: \"message-evaluation\" /* MESSAGE_EVALUATION */,\r\n value: messaged,\r\n time: end - start,\r\n groupId: `${'translate'}:${msg.key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message evaluation', startTag, endTag);\r\n }\r\n }\r\n return messaged;\r\n}\r\n/** @internal */\r\nfunction parseTranslateArgs(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n if (!isString(arg1) && !isNumber(arg1) && !isMessageFunction(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n // prettier-ignore\r\n const key = isNumber(arg1)\r\n ? String(arg1)\r\n : isMessageFunction(arg1)\r\n ? arg1\r\n : arg1;\r\n if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isString(arg2)) {\r\n options.default = arg2;\r\n }\r\n else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\r\n options.named = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n options.list = arg2;\r\n }\r\n if (isNumber(arg3)) {\r\n options.plural = arg3;\r\n }\r\n else if (isString(arg3)) {\r\n options.default = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n assign(options, arg3);\r\n }\r\n return [key, options];\r\n}\r\nfunction getCompileOptions(context, locale, key, source, warnHtmlMessage, errorDetector) {\r\n return {\r\n warnHtmlMessage,\r\n onError: (err) => {\r\n errorDetector && errorDetector(err);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const message = `Message compilation error: ${err.message}`;\r\n const codeFrame = err.location &&\r\n generateCodeFrame(source, err.location.start.offset, err.location.end.offset);\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"compile-error\" /* COMPILE_ERROR */, {\r\n message: source,\r\n error: err.message,\r\n start: err.location && err.location.start.offset,\r\n end: err.location && err.location.end.offset,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\r\n }\r\n else {\r\n throw err;\r\n }\r\n },\r\n onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\r\n };\r\n}\r\nfunction getMessageContextOptions(context, locale, message, options) {\r\n const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\r\n const resolveMessage = (key) => {\r\n let val = resolveValue(message, key);\r\n // fallback to root context\r\n if (val == null && fallbackContext) {\r\n const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\r\n val = resolveValue(message, key);\r\n }\r\n if (isString(val)) {\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n const msg = compileMessageFormat(context, key, locale, val, key, errorDetector);\r\n return !occurred\r\n ? msg\r\n : NOOP_MESSAGE_FUNCTION;\r\n }\r\n else if (isMessageFunction(val)) {\r\n return val;\r\n }\r\n else {\r\n // TODO: should be implemented warning message\r\n return NOOP_MESSAGE_FUNCTION;\r\n }\r\n };\r\n const ctxOptions = {\r\n locale,\r\n modifiers,\r\n pluralRules,\r\n messages: resolveMessage\r\n };\r\n if (context.processor) {\r\n ctxOptions.processor = context.processor;\r\n }\r\n if (options.list) {\r\n ctxOptions.list = options.list;\r\n }\r\n if (options.named) {\r\n ctxOptions.named = options.named;\r\n }\r\n if (isNumber(options.plural)) {\r\n ctxOptions.pluralIndex = options.plural;\r\n }\r\n return ctxOptions;\r\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\r\nconst Availabilities = {\r\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\r\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\r\n};\n\n// implementation of `datetime` function\r\nfunction datetime(context, ...args) {\r\n const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __datetimeFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.DateTimeFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let datetimeFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'datetime format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n datetimeFormat =\r\n datetimeFormats[targetLocale] || {};\r\n format = datetimeFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __datetimeFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\r\n __datetimeFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst DATETIME_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'weekday',\r\n 'era',\r\n 'year',\r\n 'month',\r\n 'day',\r\n 'hour',\r\n 'minute',\r\n 'second',\r\n 'timeZoneName',\r\n 'formatMatcher',\r\n 'hour12',\r\n 'timeZone',\r\n 'dateStyle',\r\n 'timeStyle',\r\n 'calendar',\r\n 'dayPeriod',\r\n 'numberingSystem',\r\n 'hourCycle',\r\n 'fractionalSecondDigits'\r\n];\r\n/** @internal */\r\nfunction parseDateTimeArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n let value;\r\n if (isString(arg1)) {\r\n // Only allow ISO strings - other date formats are often supported,\r\n // but may cause different results in different browsers.\r\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\r\n if (!matches) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n // Some browsers can not parse the iso datetime separated by space,\r\n // this is a compromise solution by replace the 'T'/' ' with 'T'\r\n const dateTime = matches[3]\r\n ? matches[3].trim().startsWith('T')\r\n ? `${matches[1].trim()}${matches[3].trim()}`\r\n : `${matches[1].trim()}T${matches[3].trim()}`\r\n : matches[1].trim();\r\n value = new Date(dateTime);\r\n try {\r\n // This will fail if the date is not valid\r\n value.toISOString();\r\n }\r\n catch (e) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n }\r\n else if (isDate(arg1)) {\r\n if (isNaN(arg1.getTime())) {\r\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\r\n }\r\n value = arg1;\r\n }\r\n else if (isNumber(arg1)) {\r\n value = arg1;\r\n }\r\n else {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearDateTimeFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__datetimeFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__datetimeFormatters.delete(id);\r\n }\r\n}\n\n// implementation of `number` function\r\nfunction number(context, ...args) {\r\n const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __numberFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseNumberArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.NumberFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let numberFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'number format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n numberFormat =\r\n numberFormats[targetLocale] || {};\r\n format = numberFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __numberFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\r\n __numberFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst NUMBER_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'style',\r\n 'currency',\r\n 'currencyDisplay',\r\n 'currencySign',\r\n 'useGrouping',\r\n 'minimumIntegerDigits',\r\n 'minimumFractionDigits',\r\n 'maximumFractionDigits',\r\n 'minimumSignificantDigits',\r\n 'maximumSignificantDigits',\r\n 'compactDisplay',\r\n 'notation',\r\n 'signDisplay',\r\n 'unit',\r\n 'unitDisplay',\r\n 'roundingMode',\r\n 'roundingPriority',\r\n 'roundingIncrement',\r\n 'trailingZeroDisplay'\r\n];\r\n/** @internal */\r\nfunction parseNumberArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n if (!isNumber(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const value = arg1;\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearNumberFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__numberFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__numberFormatters.delete(id);\r\n }\r\n}\n\n// TODO: we could not exports for Node native ES Moudles yet...\r\n{\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n}\n\nexport { CoreErrorCodes, CoreWarnCodes, DATETIME_FORMAT_OPTIONS_KEYS, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, NUMBER_FORMAT_OPTIONS_KEYS, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getWarnMessage, handleMissing, initI18nDevTools, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale };\n","/*!\n * vue-i18n v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { getGlobalThis, format, makeSymbol, isPlainObject, isArray, isString, hasOwn, isObject, isBoolean, isRegExp, isFunction, inBrowser, assign, isNumber, warn, createEmitter, isEmptyObject } from '@intlify/shared';\nimport { CoreWarnCodes, CompileErrorCodes, createCompileError, DEFAULT_LOCALE, updateFallbackLocale, setFallbackContext, createCoreContext, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, getFallbackContext, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, fallbackWithLocaleChain, NUMBER_FORMAT_OPTIONS_KEYS, DATETIME_FORMAT_OPTIONS_KEYS, registerMessageResolver, resolveValue, registerLocaleFallbacker, setDevToolsHook } from '@intlify/core-base';\nimport { createVNode, Text, ref, computed, watch, getCurrentInstance, Fragment, h, effectScope, inject, onMounted, onUnmounted, shallowRef, onBeforeMount, isRef } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\nimport { VueDevToolsLabels, VueDevToolsPlaceholders, VueDevToolsTimelineColors } from '@intlify/vue-devtools';\n\n/**\r\n * Vue I18n Version\r\n *\r\n * @remarks\r\n * Semver format. Same format as the package.json `version` field.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst VERSION = '9.2.2';\r\n/**\r\n * This is only called in esm-bundler builds.\r\n * istanbul-ignore-next\r\n */\r\nfunction initFeatureFlags() {\r\n let needWarn = false;\r\n if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;\r\n }\r\n if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_LEGACY_API__ = true;\r\n }\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && needWarn) {\r\n console.warn(`You are running the esm-bundler build of vue-i18n. It is recommended to ` +\r\n `configure your bundler to explicitly replace feature flag globals ` +\r\n `with boolean literals to get proper tree-shaking in the final bundle.`);\r\n }\r\n}\n\nlet code$1 = CoreWarnCodes.__EXTEND_POINT__;\r\nconst inc$1 = () => ++code$1;\r\nconst I18nWarnCodes = {\r\n FALLBACK_TO_ROOT: code$1,\r\n NOT_SUPPORTED_PRESERVE: inc$1(),\r\n NOT_SUPPORTED_FORMATTER: inc$1(),\r\n NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(),\r\n NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(),\r\n COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(),\r\n NOT_FOUND_PARENT_SCOPE: inc$1() // 13\r\n};\r\nconst warnMessages = {\r\n [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,\r\n [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,\r\n [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst I18nErrorCodes = {\r\n // composer module errors\r\n UNEXPECTED_RETURN_TYPE: code,\r\n // legacy module errors\r\n INVALID_ARGUMENT: inc(),\r\n // i18n module errors\r\n MUST_BE_CALL_SETUP_TOP: inc(),\r\n NOT_INSLALLED: inc(),\r\n NOT_AVAILABLE_IN_LEGACY_MODE: inc(),\r\n // directive module errors\r\n REQUIRED_VALUE: inc(),\r\n INVALID_VALUE: inc(),\r\n // vue-devtools errors\r\n CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(),\r\n NOT_INSLALLED_WITH_PROVIDE: inc(),\r\n // unexpected error\r\n UNEXPECTED_ERROR: inc(),\r\n // not compatible legacy vue-i18n constructor\r\n NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(),\r\n // bridge support vue 2.x only\r\n BRIDGE_SUPPORT_VUE_2_ONLY: inc(),\r\n // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``\r\n MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(),\r\n // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly\r\n NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(),\r\n // for enhancement\r\n __EXTEND_POINT__: inc() // 29\r\n};\r\nfunction createI18nError(code, ...args) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);\r\n}\r\nconst errorMessages = {\r\n [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\r\n [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\r\n [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\r\n [I18nErrorCodes.NOT_INSLALLED]: 'Need to install with `app.use` function',\r\n [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\r\n [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode',\r\n [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\r\n [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\r\n [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\r\n [I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\r\n [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\r\n [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only',\r\n [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: 'Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode',\r\n [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly'\r\n};\n\nconst TransrateVNodeSymbol = \r\n/* #__PURE__*/ makeSymbol('__transrateVNode');\r\nconst DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts');\r\nconst NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts');\r\nconst EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter');\r\nconst DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter');\r\nconst SetPluralRulesSymbol = makeSymbol('__setPluralRules');\r\nmakeSymbol('__intlifyMeta');\r\nconst InejctWithOption = /* #__PURE__*/ makeSymbol('__injectWithOption');\r\nconst __VUE_I18N_BRIDGE__ = '__VUE_I18N_BRIDGE__';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Transform flat json in obj to normal json in obj\r\n */\r\nfunction handleFlatJson(obj) {\r\n // check obj\r\n if (!isObject(obj)) {\r\n return obj;\r\n }\r\n for (const key in obj) {\r\n // check key\r\n if (!hasOwn(obj, key)) {\r\n continue;\r\n }\r\n // handle for normal json\r\n if (!key.includes('.')) {\r\n // recursive process value if value is also a object\r\n if (isObject(obj[key])) {\r\n handleFlatJson(obj[key]);\r\n }\r\n }\r\n // handle for flat json, transform to normal json\r\n else {\r\n // go to the last object\r\n const subKeys = key.split('.');\r\n const lastIndex = subKeys.length - 1;\r\n let currentObj = obj;\r\n for (let i = 0; i < lastIndex; i++) {\r\n if (!(subKeys[i] in currentObj)) {\r\n currentObj[subKeys[i]] = {};\r\n }\r\n currentObj = currentObj[subKeys[i]];\r\n }\r\n // update last object value, delete old property\r\n currentObj[subKeys[lastIndex]] = obj[key];\r\n delete obj[key];\r\n // recursive process value if value is also a object\r\n if (isObject(currentObj[subKeys[lastIndex]])) {\r\n handleFlatJson(currentObj[subKeys[lastIndex]]);\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\nfunction getLocaleMessages(locale, options) {\r\n const { messages, __i18n, messageResolver, flatJson } = options;\r\n // prettier-ignore\r\n const ret = isPlainObject(messages)\r\n ? messages\r\n : isArray(__i18n)\r\n ? {}\r\n : { [locale]: {} };\r\n // merge locale messages of i18n custom block\r\n if (isArray(__i18n)) {\r\n __i18n.forEach(custom => {\r\n if ('locale' in custom && 'resource' in custom) {\r\n const { locale, resource } = custom;\r\n if (locale) {\r\n ret[locale] = ret[locale] || {};\r\n deepCopy(resource, ret[locale]);\r\n }\r\n else {\r\n deepCopy(resource, ret);\r\n }\r\n }\r\n else {\r\n isString(custom) && deepCopy(JSON.parse(custom), ret);\r\n }\r\n });\r\n }\r\n // handle messages for flat json\r\n if (messageResolver == null && flatJson) {\r\n for (const key in ret) {\r\n if (hasOwn(ret, key)) {\r\n handleFlatJson(ret[key]);\r\n }\r\n }\r\n }\r\n return ret;\r\n}\r\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction deepCopy(src, des) {\r\n // src and des should both be objects, and non of then can be a array\r\n if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n for (const key in src) {\r\n if (hasOwn(src, key)) {\r\n if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) {\r\n // replace with src[key] when:\r\n // src[key] or des[key] is not a object, or\r\n // src[key] or des[key] is a array\r\n des[key] = src[key];\r\n }\r\n else {\r\n // src[key] and des[key] are both object, merge them\r\n deepCopy(src[key], des[key]);\r\n }\r\n }\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getComponentOptions(instance) {\r\n return instance.type ;\r\n}\r\nfunction adjustI18nResources(global, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n let messages = isObject(options.messages) ? options.messages : {};\r\n if ('__i18nGlobal' in componentOptions) {\r\n messages = getLocaleMessages(global.locale.value, {\r\n messages,\r\n __i18n: componentOptions.__i18nGlobal\r\n });\r\n }\r\n // merge locale messages\r\n const locales = Object.keys(messages);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeLocaleMessage(locale, messages[locale]);\r\n });\r\n }\r\n {\r\n // merge datetime formats\r\n if (isObject(options.datetimeFormats)) {\r\n const locales = Object.keys(options.datetimeFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\r\n });\r\n }\r\n }\r\n // merge number formats\r\n if (isObject(options.numberFormats)) {\r\n const locales = Object.keys(options.numberFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeNumberFormat(locale, options.numberFormats[locale]);\r\n });\r\n }\r\n }\r\n }\r\n}\r\nfunction createTextNode(key) {\r\n return createVNode(Text, null, key, 0)\r\n ;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n// extend VNode interface\r\nconst DEVTOOLS_META = '__INTLIFY_META__';\r\nlet composerID = 0;\r\nfunction defineCoreMissingHandler(missing) {\r\n return ((ctx, locale, key, type) => {\r\n return missing(locale, key, getCurrentInstance() || undefined, type);\r\n });\r\n}\r\n// for Intlify DevTools\r\nconst getMetaInfo = () => {\r\n const instance = getCurrentInstance();\r\n let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\r\n ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : null;\r\n};\r\n/**\r\n * Create composer interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createComposer(options = {}, VueI18nLegacy) {\r\n const { __root } = options;\r\n const _isGlobal = __root === undefined;\r\n let _inheritLocale = isBoolean(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.locale.value\r\n : isString(options.locale)\r\n ? options.locale\r\n : DEFAULT_LOCALE);\r\n const _fallbackLocale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.fallbackLocale.value\r\n : isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = ref(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // prettier-ignore\r\n const _numberFormats = ref(isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // warning suppress options\r\n // prettier-ignore\r\n let _missingWarn = __root\r\n ? __root.missingWarn\r\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackWarn = __root\r\n ? __root.fallbackWarn\r\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackRoot = __root\r\n ? __root.fallbackRoot\r\n : isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n let _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n let _missing = isFunction(options.missing) ? options.missing : null;\r\n let _runtimeMissing = isFunction(options.missing)\r\n ? defineCoreMissingHandler(options.missing)\r\n : null;\r\n // postTranslation handler\r\n let _postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n let _warnHtmlMessage = __root\r\n ? __root.warnHtmlMessage\r\n : isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n let _escapeParameter = !!options.escapeParameter;\r\n // custom linked modifiers\r\n // prettier-ignore\r\n const _modifiers = __root\r\n ? __root.modifiers\r\n : isPlainObject(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\r\n // runtime context\r\n // eslint-disable-next-line prefer-const\r\n let _context;\r\n const getCoreContext = () => {\r\n _isGlobal && setFallbackContext(null);\r\n const ctxOptions = {\r\n version: VERSION,\r\n locale: _locale.value,\r\n fallbackLocale: _fallbackLocale.value,\r\n messages: _messages.value,\r\n modifiers: _modifiers,\r\n pluralRules: _pluralRules,\r\n missing: _runtimeMissing === null ? undefined : _runtimeMissing,\r\n missingWarn: _missingWarn,\r\n fallbackWarn: _fallbackWarn,\r\n fallbackFormat: _fallbackFormat,\r\n unresolving: true,\r\n postTranslation: _postTranslation === null ? undefined : _postTranslation,\r\n warnHtmlMessage: _warnHtmlMessage,\r\n escapeParameter: _escapeParameter,\r\n messageResolver: options.messageResolver,\r\n __meta: { framework: 'vue' }\r\n };\r\n {\r\n ctxOptions.datetimeFormats = _datetimeFormats.value;\r\n ctxOptions.numberFormats = _numberFormats.value;\r\n ctxOptions.__datetimeFormatters = isPlainObject(_context)\r\n ? _context.__datetimeFormatters\r\n : undefined;\r\n ctxOptions.__numberFormatters = isPlainObject(_context)\r\n ? _context.__numberFormatters\r\n : undefined;\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n ctxOptions.__v_emitter = isPlainObject(_context)\r\n ? _context.__v_emitter\r\n : undefined;\r\n }\r\n const ctx = createCoreContext(ctxOptions);\r\n _isGlobal && setFallbackContext(ctx);\r\n return ctx;\r\n };\r\n _context = getCoreContext();\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ]\r\n ;\r\n }\r\n // locale\r\n const locale = computed({\r\n get: () => _locale.value,\r\n set: val => {\r\n _locale.value = val;\r\n _context.locale = _locale.value;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = computed({\r\n get: () => _fallbackLocale.value,\r\n set: val => {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = _fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, val);\r\n }\r\n });\r\n // messages\r\n const messages = computed(() => _messages.value);\r\n // datetimeFormats\r\n const datetimeFormats = /* #__PURE__*/ computed(() => _datetimeFormats.value);\r\n // numberFormats\r\n const numberFormats = /* #__PURE__*/ computed(() => _numberFormats.value);\r\n // getPostTranslationHandler\r\n function getPostTranslationHandler() {\r\n return isFunction(_postTranslation) ? _postTranslation : null;\r\n }\r\n // setPostTranslationHandler\r\n function setPostTranslationHandler(handler) {\r\n _postTranslation = handler;\r\n _context.postTranslation = handler;\r\n }\r\n // getMissingHandler\r\n function getMissingHandler() {\r\n return _missing;\r\n }\r\n // setMissingHandler\r\n function setMissingHandler(handler) {\r\n if (handler !== null) {\r\n _runtimeMissing = defineCoreMissingHandler(handler);\r\n }\r\n _missing = handler;\r\n _context.missing = _runtimeMissing;\r\n }\r\n function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n return type !== 'translate' || !arg.resolvedMessage;\r\n }\r\n const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {\r\n trackReactivityValues(); // track reactive dependency\r\n // NOTE: experimental !!\r\n let ret;\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n try {\r\n setAdditionalMeta(getMetaInfo());\r\n if (!_isGlobal) {\r\n _context.fallbackContext = __root\r\n ? getFallbackContext()\r\n : undefined;\r\n }\r\n ret = fn(_context);\r\n }\r\n finally {\r\n setAdditionalMeta(null);\r\n if (!_isGlobal) {\r\n _context.fallbackContext = undefined;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fn(_context);\r\n }\r\n if (isNumber(ret) && ret === NOT_REOSLVED) {\r\n const [key, arg2] = argumentParser();\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n __root &&\r\n isString(key) &&\r\n isResolvedTranslateMessage(warnType, arg2)) {\r\n if (_fallbackRoot &&\r\n (isTranslateFallbackWarn(_fallbackWarn, key) ||\r\n isTranslateMissingWarn(_missingWarn, key))) {\r\n warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\r\n key,\r\n type: warnType\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const { __v_emitter: emitter } = _context;\r\n if (emitter && _fallbackRoot) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type: warnType,\r\n key,\r\n to: 'global',\r\n groupId: `${warnType}:${key}`\r\n });\r\n }\r\n }\r\n }\r\n return __root && _fallbackRoot\r\n ? fallbackSuccess(__root)\r\n : fallbackFail(key);\r\n }\r\n else if (successCondition(ret)) {\r\n return ret;\r\n }\r\n else {\r\n /* istanbul ignore next */\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\r\n }\r\n };\r\n // t\r\n function t(...args) {\r\n return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val));\r\n }\r\n // rt\r\n function rt(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n if (arg3 && !isObject(arg3)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);\r\n }\r\n // d\r\n function d(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // n\r\n function n(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // for custom processor\r\n function normalize(values) {\r\n return values.map(val => isString(val) || isNumber(val) || isBoolean(val)\r\n ? createTextNode(String(val))\r\n : val);\r\n }\r\n const interpolate = (val) => val;\r\n const processor = {\r\n normalize,\r\n interpolate,\r\n type: 'vnode'\r\n };\r\n // transrateVNode, using for `i18n-t` component\r\n function transrateVNode(...args) {\r\n return wrapWithDeps(context => {\r\n let ret;\r\n const _context = context;\r\n try {\r\n _context.processor = processor;\r\n ret = Reflect.apply(translate, null, [_context, ...args]);\r\n }\r\n finally {\r\n _context.processor = null;\r\n }\r\n return ret;\r\n }, () => parseTranslateArgs(...args), 'translate', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[TransrateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val));\r\n }\r\n // numberParts, using for `i18n-n` component\r\n function numberParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[NumberPartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n // datetimeParts, using for `i18n-d` component\r\n function datetimeParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[DatetimePartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n function setPluralRules(rules) {\r\n _pluralRules = rules;\r\n _context.pluralRules = _pluralRules;\r\n }\r\n // te\r\n function te(key, locale) {\r\n const targetLocale = isString(locale) ? locale : _locale.value;\r\n const message = getLocaleMessage(targetLocale);\r\n return _context.messageResolver(message, key) !== null;\r\n }\r\n function resolveMessages(key) {\r\n let messages = null;\r\n const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);\r\n for (let i = 0; i < locales.length; i++) {\r\n const targetLocaleMessages = _messages.value[locales[i]] || {};\r\n const messageValue = _context.messageResolver(targetLocaleMessages, key);\r\n if (messageValue != null) {\r\n messages = messageValue;\r\n break;\r\n }\r\n }\r\n return messages;\r\n }\r\n // tm\r\n function tm(key) {\r\n const messages = resolveMessages(key);\r\n // prettier-ignore\r\n return messages != null\r\n ? messages\r\n : __root\r\n ? __root.tm(key) || {}\r\n : {};\r\n }\r\n // getLocaleMessage\r\n function getLocaleMessage(locale) {\r\n return (_messages.value[locale] || {});\r\n }\r\n // setLocaleMessage\r\n function setLocaleMessage(locale, message) {\r\n _messages.value[locale] = message;\r\n _context.messages = _messages.value;\r\n }\r\n // mergeLocaleMessage\r\n function mergeLocaleMessage(locale, message) {\r\n _messages.value[locale] = _messages.value[locale] || {};\r\n deepCopy(message, _messages.value[locale]);\r\n _context.messages = _messages.value;\r\n }\r\n // getDateTimeFormat\r\n function getDateTimeFormat(locale) {\r\n return _datetimeFormats.value[locale] || {};\r\n }\r\n // setDateTimeFormat\r\n function setDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = format;\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // mergeDateTimeFormat\r\n function mergeDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format);\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // getNumberFormat\r\n function getNumberFormat(locale) {\r\n return _numberFormats.value[locale] || {};\r\n }\r\n // setNumberFormat\r\n function setNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = format;\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // mergeNumberFormat\r\n function mergeNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format);\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // for debug\r\n composerID++;\r\n // watch root locale & fallbackLocale\r\n if (__root && inBrowser) {\r\n watch(__root.locale, (val) => {\r\n if (_inheritLocale) {\r\n _locale.value = val;\r\n _context.locale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n watch(__root.fallbackLocale, (val) => {\r\n if (_inheritLocale) {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n }\r\n // define basic composition API!\r\n const composer = {\r\n id: composerID,\r\n locale,\r\n fallbackLocale,\r\n get inheritLocale() {\r\n return _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n _inheritLocale = val;\r\n if (val && __root) {\r\n _locale.value = __root.locale.value;\r\n _fallbackLocale.value = __root.fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n },\r\n get availableLocales() {\r\n return Object.keys(_messages.value).sort();\r\n },\r\n messages,\r\n get modifiers() {\r\n return _modifiers;\r\n },\r\n get pluralRules() {\r\n return _pluralRules || {};\r\n },\r\n get isGlobal() {\r\n return _isGlobal;\r\n },\r\n get missingWarn() {\r\n return _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n _missingWarn = val;\r\n _context.missingWarn = _missingWarn;\r\n },\r\n get fallbackWarn() {\r\n return _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n _fallbackWarn = val;\r\n _context.fallbackWarn = _fallbackWarn;\r\n },\r\n get fallbackRoot() {\r\n return _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n _fallbackRoot = val;\r\n },\r\n get fallbackFormat() {\r\n return _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n _fallbackFormat = val;\r\n _context.fallbackFormat = _fallbackFormat;\r\n },\r\n get warnHtmlMessage() {\r\n return _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n _warnHtmlMessage = val;\r\n _context.warnHtmlMessage = val;\r\n },\r\n get escapeParameter() {\r\n return _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n _escapeParameter = val;\r\n _context.escapeParameter = val;\r\n },\r\n t,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n [SetPluralRulesSymbol]: setPluralRules\r\n };\r\n {\r\n composer.datetimeFormats = datetimeFormats;\r\n composer.numberFormats = numberFormats;\r\n composer.rt = rt;\r\n composer.te = te;\r\n composer.tm = tm;\r\n composer.d = d;\r\n composer.n = n;\r\n composer.getDateTimeFormat = getDateTimeFormat;\r\n composer.setDateTimeFormat = setDateTimeFormat;\r\n composer.mergeDateTimeFormat = mergeDateTimeFormat;\r\n composer.getNumberFormat = getNumberFormat;\r\n composer.setNumberFormat = setNumberFormat;\r\n composer.mergeNumberFormat = mergeNumberFormat;\r\n composer[InejctWithOption] = options.__injectWithOption;\r\n composer[TransrateVNodeSymbol] = transrateVNode;\r\n composer[DatetimePartsSymbol] = datetimeParts;\r\n composer[NumberPartsSymbol] = numberParts;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n composer[EnableEmitter] = (emitter) => {\r\n _context.__v_emitter = emitter;\r\n };\r\n composer[DisableEmitter] = () => {\r\n _context.__v_emitter = undefined;\r\n };\r\n }\r\n return composer;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Convert to I18n Composer Options from VueI18n Options\r\n *\r\n * @internal\r\n */\r\nfunction convertComposerOptions(options) {\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const missing = isFunction(options.missing) ? options.missing : undefined;\r\n const missingWarn = isBoolean(options.silentTranslationWarn) ||\r\n isRegExp(options.silentTranslationWarn)\r\n ? !options.silentTranslationWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.silentFallbackWarn) ||\r\n isRegExp(options.silentFallbackWarn)\r\n ? !options.silentFallbackWarn\r\n : true;\r\n const fallbackRoot = isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n const fallbackFormat = !!options.formatFallbackMessages;\r\n const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};\r\n const pluralizationRules = options.pluralizationRules;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : undefined;\r\n const warnHtmlMessage = isString(options.warnHtmlInMessage)\r\n ? options.warnHtmlInMessage !== 'off'\r\n : true;\r\n const escapeParameter = !!options.escapeParameterHtml;\r\n const inheritLocale = isBoolean(options.sync) ? options.sync : true;\r\n if ((process.env.NODE_ENV !== 'production') && options.formatter) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && options.preserveDirectiveContent) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n }\r\n let messages = options.messages;\r\n if (isPlainObject(options.sharedMessages)) {\r\n const sharedMessages = options.sharedMessages;\r\n const locales = Object.keys(sharedMessages);\r\n messages = locales.reduce((messages, locale) => {\r\n const message = messages[locale] || (messages[locale] = {});\r\n assign(message, sharedMessages[locale]);\r\n return messages;\r\n }, (messages || {}));\r\n }\r\n const { __i18n, __root, __injectWithOption } = options;\r\n const datetimeFormats = options.datetimeFormats;\r\n const numberFormats = options.numberFormats;\r\n const flatJson = options.flatJson;\r\n return {\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n flatJson,\r\n datetimeFormats,\r\n numberFormats,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackRoot,\r\n fallbackFormat,\r\n modifiers,\r\n pluralRules: pluralizationRules,\r\n postTranslation,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageResolver: options.messageResolver,\r\n inheritLocale,\r\n __i18n,\r\n __root,\r\n __injectWithOption\r\n };\r\n}\r\n/**\r\n * create VueI18n interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createVueI18n(options = {}, VueI18nLegacy) {\r\n {\r\n const composer = createComposer(convertComposerOptions(options));\r\n // defines VueI18n\r\n const vueI18n = {\r\n // id\r\n id: composer.id,\r\n // locale\r\n get locale() {\r\n return composer.locale.value;\r\n },\r\n set locale(val) {\r\n composer.locale.value = val;\r\n },\r\n // fallbackLocale\r\n get fallbackLocale() {\r\n return composer.fallbackLocale.value;\r\n },\r\n set fallbackLocale(val) {\r\n composer.fallbackLocale.value = val;\r\n },\r\n // messages\r\n get messages() {\r\n return composer.messages.value;\r\n },\r\n // datetimeFormats\r\n get datetimeFormats() {\r\n return composer.datetimeFormats.value;\r\n },\r\n // numberFormats\r\n get numberFormats() {\r\n return composer.numberFormats.value;\r\n },\r\n // availableLocales\r\n get availableLocales() {\r\n return composer.availableLocales;\r\n },\r\n // formatter\r\n get formatter() {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n // dummy\r\n return {\r\n interpolate() {\r\n return [];\r\n }\r\n };\r\n },\r\n set formatter(val) {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n },\r\n // missing\r\n get missing() {\r\n return composer.getMissingHandler();\r\n },\r\n set missing(handler) {\r\n composer.setMissingHandler(handler);\r\n },\r\n // silentTranslationWarn\r\n get silentTranslationWarn() {\r\n return isBoolean(composer.missingWarn)\r\n ? !composer.missingWarn\r\n : composer.missingWarn;\r\n },\r\n set silentTranslationWarn(val) {\r\n composer.missingWarn = isBoolean(val) ? !val : val;\r\n },\r\n // silentFallbackWarn\r\n get silentFallbackWarn() {\r\n return isBoolean(composer.fallbackWarn)\r\n ? !composer.fallbackWarn\r\n : composer.fallbackWarn;\r\n },\r\n set silentFallbackWarn(val) {\r\n composer.fallbackWarn = isBoolean(val) ? !val : val;\r\n },\r\n // modifiers\r\n get modifiers() {\r\n return composer.modifiers;\r\n },\r\n // formatFallbackMessages\r\n get formatFallbackMessages() {\r\n return composer.fallbackFormat;\r\n },\r\n set formatFallbackMessages(val) {\r\n composer.fallbackFormat = val;\r\n },\r\n // postTranslation\r\n get postTranslation() {\r\n return composer.getPostTranslationHandler();\r\n },\r\n set postTranslation(handler) {\r\n composer.setPostTranslationHandler(handler);\r\n },\r\n // sync\r\n get sync() {\r\n return composer.inheritLocale;\r\n },\r\n set sync(val) {\r\n composer.inheritLocale = val;\r\n },\r\n // warnInHtmlMessage\r\n get warnHtmlInMessage() {\r\n return composer.warnHtmlMessage ? 'warn' : 'off';\r\n },\r\n set warnHtmlInMessage(val) {\r\n composer.warnHtmlMessage = val !== 'off';\r\n },\r\n // escapeParameterHtml\r\n get escapeParameterHtml() {\r\n return composer.escapeParameter;\r\n },\r\n set escapeParameterHtml(val) {\r\n composer.escapeParameter = val;\r\n },\r\n // preserveDirectiveContent\r\n get preserveDirectiveContent() {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n return true;\r\n },\r\n set preserveDirectiveContent(val) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n },\r\n // pluralizationRules\r\n get pluralizationRules() {\r\n return composer.pluralRules || {};\r\n },\r\n // for internal\r\n __composer: composer,\r\n // t\r\n t(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n rt(...args) {\r\n return Reflect.apply(composer.rt, composer, [...args]);\r\n },\r\n // tc\r\n tc(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = { plural: 1 };\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n // te\r\n te(key, locale) {\r\n return composer.te(key, locale);\r\n },\r\n // tm\r\n tm(key) {\r\n return composer.tm(key);\r\n },\r\n // getLocaleMessage\r\n getLocaleMessage(locale) {\r\n return composer.getLocaleMessage(locale);\r\n },\r\n // setLocaleMessage\r\n setLocaleMessage(locale, message) {\r\n composer.setLocaleMessage(locale, message);\r\n },\r\n // mergeLocaleMessage\r\n mergeLocaleMessage(locale, message) {\r\n composer.mergeLocaleMessage(locale, message);\r\n },\r\n // d\r\n d(...args) {\r\n return Reflect.apply(composer.d, composer, [...args]);\r\n },\r\n // getDateTimeFormat\r\n getDateTimeFormat(locale) {\r\n return composer.getDateTimeFormat(locale);\r\n },\r\n // setDateTimeFormat\r\n setDateTimeFormat(locale, format) {\r\n composer.setDateTimeFormat(locale, format);\r\n },\r\n // mergeDateTimeFormat\r\n mergeDateTimeFormat(locale, format) {\r\n composer.mergeDateTimeFormat(locale, format);\r\n },\r\n // n\r\n n(...args) {\r\n return Reflect.apply(composer.n, composer, [...args]);\r\n },\r\n // getNumberFormat\r\n getNumberFormat(locale) {\r\n return composer.getNumberFormat(locale);\r\n },\r\n // setNumberFormat\r\n setNumberFormat(locale, format) {\r\n composer.setNumberFormat(locale, format);\r\n },\r\n // mergeNumberFormat\r\n mergeNumberFormat(locale, format) {\r\n composer.mergeNumberFormat(locale, format);\r\n },\r\n // getChoiceIndex\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n getChoiceIndex(choice, choicesLength) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));\r\n return -1;\r\n },\r\n // for internal\r\n __onComponentInstanceCreated(target) {\r\n const { componentInstanceCreatedListener } = options;\r\n if (componentInstanceCreatedListener) {\r\n componentInstanceCreatedListener(target, vueI18n);\r\n }\r\n }\r\n };\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n vueI18n.__enableEmitter = (emitter) => {\r\n const __composer = composer;\r\n __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\r\n };\r\n vueI18n.__disableEmitter = () => {\r\n const __composer = composer;\r\n __composer[DisableEmitter] && __composer[DisableEmitter]();\r\n };\r\n }\r\n return vueI18n;\r\n }\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst baseFormatProps = {\r\n tag: {\r\n type: [String, Object]\r\n },\r\n locale: {\r\n type: String\r\n },\r\n scope: {\r\n type: String,\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n validator: (val /* ComponetI18nScope */) => val === 'parent' || val === 'global',\r\n default: 'parent' /* ComponetI18nScope */\r\n },\r\n i18n: {\r\n type: Object\r\n }\r\n};\n\nfunction getInterpolateArg(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n{ slots }, // SetupContext,\r\nkeys) {\r\n if (keys.length === 1 && keys[0] === 'default') {\r\n // default slot with list\r\n const ret = slots.default ? slots.default() : [];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return ret.reduce((slot, current) => {\r\n return (slot = [\r\n ...slot,\r\n ...(isArray(current.children) ? current.children : [current])\r\n ]);\r\n }, []);\r\n }\r\n else {\r\n // named slots\r\n return keys.reduce((arg, key) => {\r\n const slot = slots[key];\r\n if (slot) {\r\n arg[key] = slot();\r\n }\r\n return arg;\r\n }, {});\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getFragmentableTag(tag) {\r\n return Fragment ;\r\n}\n\n/**\r\n * Translation Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [TranslationProps](component#translationprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\r\n *\r\n * @example\r\n * ```html\r\n * <div id=\"app\">\r\n * <!-- ... -->\r\n * <i18n path=\"term\" tag=\"label\" for=\"tos\">\r\n * <a :href=\"url\" target=\"_blank\">{{ $t('tos') }}</a>\r\n * </i18n>\r\n * <!-- ... -->\r\n * </div>\r\n * ```\r\n * ```js\r\n * import { createApp } from 'vue'\r\n * import { createI18n } from 'vue-i18n'\r\n *\r\n * const messages = {\r\n * en: {\r\n * tos: 'Term of Service',\r\n * term: 'I accept xxx {0}.'\r\n * },\r\n * ja: {\r\n * tos: '利用規約',\r\n * term: '私は xxx の{0}に同意します。'\r\n * }\r\n * }\r\n *\r\n * const i18n = createI18n({\r\n * locale: 'en',\r\n * messages\r\n * })\r\n *\r\n * const app = createApp({\r\n * data: {\r\n * url: '/term'\r\n * }\r\n * }).use(i18n).mount('#app')\r\n * ```\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst Translation = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-t',\r\n props: assign({\r\n keypath: {\r\n type: String,\r\n required: true\r\n },\r\n plural: {\r\n type: [Number, String],\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n validator: (val) => isNumber(val) || !isNaN(val)\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const { slots, attrs } = context;\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n const i18n = props.i18n ||\r\n useI18n({\r\n useScope: props.scope,\r\n __useComponent: true\r\n });\r\n return () => {\r\n const keys = Object.keys(slots).filter(key => key !== '_');\r\n const options = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (props.plural !== undefined) {\r\n options.plural = isString(props.plural) ? +props.plural : props.plural;\r\n }\r\n const arg = getInterpolateArg(context, keys);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const children = i18n[TransrateVNodeSymbol](props.keypath, arg, options);\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n }\r\n};\n\nfunction isVNode(target) {\r\n return isArray(target) && !isString(target[0]);\r\n}\r\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\r\n const { slots, attrs } = context;\r\n return () => {\r\n const options = { part: true };\r\n let overrides = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (isString(props.format)) {\r\n options.key = props.format;\r\n }\r\n else if (isObject(props.format)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (isString(props.format.key)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n options.key = props.format.key;\r\n }\r\n // Filter out number format options only\r\n overrides = Object.keys(props.format).reduce((options, prop) => {\r\n return slotKeys.includes(prop)\r\n ? assign({}, options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : options;\r\n }, {});\r\n }\r\n const parts = partFormatter(...[props.value, options, overrides]);\r\n let children = [options.key];\r\n if (isArray(parts)) {\r\n children = parts.map((part, index) => {\r\n const slot = slots[part.type];\r\n const node = slot\r\n ? slot({ [part.type]: part.value, index, parts })\r\n : [part.value];\r\n if (isVNode(node)) {\r\n node[0].key = `${part.type}-${index}`;\r\n }\r\n return node;\r\n });\r\n }\r\n else if (isString(parts)) {\r\n children = [parts];\r\n }\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n}\n\n/**\r\n * Number Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst NumberFormat = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-n',\r\n props: assign({\r\n value: {\r\n type: Number,\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[NumberPartsSymbol](...args));\r\n }\r\n};\n\n/**\r\n * Datetime Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst DatetimeFormat = /*defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-d',\r\n props: assign({\r\n value: {\r\n type: [Number, Date],\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[DatetimePartsSymbol](...args));\r\n }\r\n};\n\nfunction getComposer$2(i18n, instance) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n return (i18nInternal.__getInstance(instance) || i18n.global);\r\n }\r\n else {\r\n const vueI18n = i18nInternal.__getInstance(instance);\r\n return vueI18n != null\r\n ? vueI18n.__composer\r\n : i18n.global.__composer;\r\n }\r\n}\r\nfunction vTDirective(i18n) {\r\n const _process = (binding) => {\r\n const { instance, modifiers, value } = binding;\r\n /* istanbul ignore if */\r\n if (!instance || !instance.$) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const composer = getComposer$2(i18n, instance.$);\r\n if ((process.env.NODE_ENV !== 'production') && modifiers.preserve) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));\r\n }\r\n const parsedValue = parseValue(value);\r\n return [\r\n Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),\r\n composer\r\n ];\r\n };\r\n const register = (el, binding) => {\r\n const [textContent, composer] = _process(binding);\r\n if (inBrowser && i18n.global === composer) {\r\n // global scope only\r\n el.__i18nWatcher = watch(composer.locale, () => {\r\n binding.instance && binding.instance.$forceUpdate();\r\n });\r\n }\r\n el.__composer = composer;\r\n el.textContent = textContent;\r\n };\r\n const unregister = (el) => {\r\n if (inBrowser && el.__i18nWatcher) {\r\n el.__i18nWatcher();\r\n el.__i18nWatcher = undefined;\r\n delete el.__i18nWatcher;\r\n }\r\n if (el.__composer) {\r\n el.__composer = undefined;\r\n delete el.__composer;\r\n }\r\n };\r\n const update = (el, { value }) => {\r\n if (el.__composer) {\r\n const composer = el.__composer;\r\n const parsedValue = parseValue(value);\r\n el.textContent = Reflect.apply(composer.t, composer, [\r\n ...makeParams(parsedValue)\r\n ]);\r\n }\r\n };\r\n const getSSRProps = (binding) => {\r\n const [textContent] = _process(binding);\r\n return { textContent };\r\n };\r\n return {\r\n created: register,\r\n unmounted: unregister,\r\n beforeUpdate: update,\r\n getSSRProps\r\n };\r\n}\r\nfunction parseValue(value) {\r\n if (isString(value)) {\r\n return { path: value };\r\n }\r\n else if (isPlainObject(value)) {\r\n if (!('path' in value)) {\r\n throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\r\n }\r\n return value;\r\n }\r\n else {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n}\r\nfunction makeParams(value) {\r\n const { path, locale, args, choice, plural } = value;\r\n const options = {};\r\n const named = args || {};\r\n if (isString(locale)) {\r\n options.locale = locale;\r\n }\r\n if (isNumber(choice)) {\r\n options.plural = choice;\r\n }\r\n if (isNumber(plural)) {\r\n options.plural = plural;\r\n }\r\n return [path, named, options];\r\n}\n\nfunction apply(app, i18n, ...options) {\r\n const pluginOptions = isPlainObject(options[0])\r\n ? options[0]\r\n : {};\r\n const useI18nComponentName = !!pluginOptions.useI18nComponentName;\r\n const globalInstall = isBoolean(pluginOptions.globalInstall)\r\n ? pluginOptions.globalInstall\r\n : true;\r\n if ((process.env.NODE_ENV !== 'production') && globalInstall && useI18nComponentName) {\r\n warn(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {\r\n name: Translation.name\r\n }));\r\n }\r\n if (globalInstall) {\r\n // install components\r\n app.component(!useI18nComponentName ? Translation.name : 'i18n', Translation);\r\n app.component(NumberFormat.name, NumberFormat);\r\n app.component(DatetimeFormat.name, DatetimeFormat);\r\n }\r\n // install directive\r\n {\r\n app.directive('t', vTDirective(i18n));\r\n }\r\n}\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\r\nlet devtoolsApi;\r\nasync function enableDevTools(app, i18n) {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n setupDevtoolsPlugin({\r\n id: \"vue-devtools-plugin-vue-i18n\" /* PLUGIN */,\r\n label: VueDevToolsLabels[\"vue-devtools-plugin-vue-i18n\" /* PLUGIN */],\r\n packageName: 'vue-i18n',\r\n homepage: 'https://vue-i18n.intlify.dev',\r\n logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\r\n componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\r\n app: app // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }, api => {\r\n devtoolsApi = api;\r\n api.on.visitComponentTree(({ componentInstance, treeNode }) => {\r\n updateComponentTreeTags(componentInstance, treeNode, i18n);\r\n });\r\n api.on.inspectComponent(({ componentInstance, instanceData }) => {\r\n if (componentInstance.vnode.el &&\r\n componentInstance.vnode.el.__VUE_I18N__ &&\r\n instanceData) {\r\n if (i18n.mode === 'legacy') {\r\n // ignore global scope on legacy mode\r\n if (componentInstance.vnode.el.__VUE_I18N__ !==\r\n i18n.global.__composer) {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n else {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n });\r\n api.addInspector({\r\n id: \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */,\r\n label: VueDevToolsLabels[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */],\r\n icon: 'language',\r\n treeFilterPlaceholder: VueDevToolsPlaceholders[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]\r\n });\r\n api.on.getInspectorTree(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n registerScope(payload, i18n);\r\n }\r\n });\r\n const roots = new Map();\r\n api.on.getInspectorState(async (payload) => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n api.unhighlightElement();\r\n inspectScope(payload, i18n);\r\n if (payload.nodeId === 'global') {\r\n if (!roots.has(payload.app)) {\r\n const [root] = await api.getComponentInstances(payload.app);\r\n roots.set(payload.app, root);\r\n }\r\n api.highlightElement(roots.get(payload.app));\r\n }\r\n else {\r\n const instance = getComponentInstance(payload.nodeId, i18n);\r\n instance && api.highlightElement(instance);\r\n }\r\n }\r\n });\r\n api.on.editInspectorState(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n editScope(payload, i18n);\r\n }\r\n });\r\n api.addTimelineLayer({\r\n id: \"vue-i18n-timeline\" /* TIMELINE */,\r\n label: VueDevToolsLabels[\"vue-i18n-timeline\" /* TIMELINE */],\r\n color: VueDevToolsTimelineColors[\"vue-i18n-timeline\" /* TIMELINE */]\r\n });\r\n resolve(true);\r\n });\r\n }\r\n catch (e) {\r\n console.error(e);\r\n reject(false);\r\n }\r\n });\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getI18nScopeLable(instance) {\r\n return (instance.type.name ||\r\n instance.type.displayName ||\r\n instance.type.__file ||\r\n 'Anonymous');\r\n}\r\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\r\ntreeNode, i18n) {\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\r\n // add custom tags local scope only\r\n if (instance.vnode.el.__VUE_I18N__ !== global) {\r\n const tag = {\r\n label: `i18n (${getI18nScopeLable(instance)} Scope)`,\r\n textColor: 0x000000,\r\n backgroundColor: 0xffcd19\r\n };\r\n treeNode.tags.push(tag);\r\n }\r\n }\r\n}\r\nfunction inspectComposer(instanceData, composer) {\r\n const type = VUE_I18N_COMPONENT_TYPES;\r\n instanceData.state.push({\r\n type,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n });\r\n {\r\n instanceData.state.push({\r\n type,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n });\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getLocaleMessageValue(messages) {\r\n const value = {};\r\n Object.keys(messages).forEach((key) => {\r\n const v = messages[key];\r\n if (isFunction(v) && 'source' in v) {\r\n value[key] = getMessageFunctionDetails(v);\r\n }\r\n else if (isObject(v)) {\r\n value[key] = getLocaleMessageValue(v);\r\n }\r\n else {\r\n value[key] = v;\r\n }\r\n });\r\n return value;\r\n}\r\nconst ESC = {\r\n '<': '&lt;',\r\n '>': '&gt;',\r\n '\"': '&quot;',\r\n '&': '&amp;'\r\n};\r\nfunction escape(s) {\r\n return s.replace(/[<>\"&]/g, escapeChar);\r\n}\r\nfunction escapeChar(a) {\r\n return ESC[a] || a;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getMessageFunctionDetails(func) {\r\n const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\r\n return {\r\n _custom: {\r\n type: 'function',\r\n display: `<span>ƒ</span> ${argString}`\r\n }\r\n };\r\n}\r\nfunction registerScope(payload, i18n) {\r\n payload.rootNodes.push({\r\n id: 'global',\r\n label: 'Global Scope'\r\n });\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n for (const [keyInstance, instance] of i18n.__instances) {\r\n // prettier-ignore\r\n const composer = i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n if (global === composer) {\r\n continue;\r\n }\r\n payload.rootNodes.push({\r\n id: composer.id.toString(),\r\n label: `${getI18nScopeLable(keyInstance)} Scope`\r\n });\r\n }\r\n}\r\nfunction getComponentInstance(nodeId, i18n) {\r\n let instance = null;\r\n if (nodeId !== 'global') {\r\n for (const [component, composer] of i18n.__instances.entries()) {\r\n if (composer.id.toString() === nodeId) {\r\n instance = component;\r\n break;\r\n }\r\n }\r\n }\r\n return instance;\r\n}\r\nfunction getComposer$1(nodeId, i18n) {\r\n if (nodeId === 'global') {\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n }\r\n else {\r\n const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\r\n if (instance) {\r\n return i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\r\nfunction inspectScope(payload, i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n // TODO:\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n payload.state = makeScopeInspectState(composer);\r\n }\r\n return null;\r\n}\r\nfunction makeScopeInspectState(composer) {\r\n const state = {};\r\n const localeType = 'Locale related info';\r\n const localeStates = [\r\n {\r\n type: localeType,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n },\r\n {\r\n type: localeType,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n }\r\n ];\r\n state[localeType] = localeStates;\r\n const localeMessagesType = 'Locale messages info';\r\n const localeMessagesStates = [\r\n {\r\n type: localeMessagesType,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n }\r\n ];\r\n state[localeMessagesType] = localeMessagesStates;\r\n {\r\n const datetimeFormatsType = 'Datetime formats info';\r\n const datetimeFormatsStates = [\r\n {\r\n type: datetimeFormatsType,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n }\r\n ];\r\n state[datetimeFormatsType] = datetimeFormatsStates;\r\n const numberFormatsType = 'Datetime formats info';\r\n const numberFormatsStates = [\r\n {\r\n type: numberFormatsType,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n }\r\n ];\r\n state[numberFormatsType] = numberFormatsStates;\r\n }\r\n return state;\r\n}\r\nfunction addTimelineEvent(event, payload) {\r\n if (devtoolsApi) {\r\n let groupId;\r\n if (payload && 'groupId' in payload) {\r\n groupId = payload.groupId;\r\n delete payload.groupId;\r\n }\r\n devtoolsApi.addTimelineEvent({\r\n layerId: \"vue-i18n-timeline\" /* TIMELINE */,\r\n event: {\r\n title: event,\r\n groupId,\r\n time: Date.now(),\r\n meta: {},\r\n data: payload || {},\r\n logType: event === \"compile-error\" /* COMPILE_ERROR */\r\n ? 'error'\r\n : event === \"fallback\" /* FALBACK */ ||\r\n event === \"missing\" /* MISSING */\r\n ? 'warning'\r\n : 'default'\r\n }\r\n });\r\n }\r\n}\r\nfunction editScope(payload, i18n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n const [field] = payload.path;\r\n if (field === 'locale' && isString(payload.state.value)) {\r\n composer.locale.value = payload.state.value;\r\n }\r\n else if (field === 'fallbackLocale' &&\r\n (isString(payload.state.value) ||\r\n isArray(payload.state.value) ||\r\n isObject(payload.state.value))) {\r\n composer.fallbackLocale.value = payload.state.value;\r\n }\r\n else if (field === 'inheritLocale' && isBoolean(payload.state.value)) {\r\n composer.inheritLocale = payload.state.value;\r\n }\r\n }\r\n}\n\n/**\r\n * Supports compatibility for legacy vue-i18n APIs\r\n * This mixin is used when we use vue-i18n@v9.x or later\r\n */\r\nfunction defineMixin(vuei18n, composer, i18n) {\r\n return {\r\n beforeCreate() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const options = this.$options;\r\n if (options.i18n) {\r\n const optionsI18n = options.i18n;\r\n if (options.__i18n) {\r\n optionsI18n.__i18n = options.__i18n;\r\n }\r\n optionsI18n.__root = composer;\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, optionsI18n);\r\n }\r\n else {\r\n optionsI18n.__injectWithOption = true;\r\n this.$i18n = createVueI18n(optionsI18n);\r\n }\r\n }\r\n else if (options.__i18n) {\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, options);\r\n }\r\n else {\r\n this.$i18n = createVueI18n({\r\n __i18n: options.__i18n,\r\n __injectWithOption: true,\r\n __root: composer\r\n });\r\n }\r\n }\r\n else {\r\n // set global\r\n this.$i18n = vuei18n;\r\n }\r\n if (options.__i18nGlobal) {\r\n adjustI18nResources(composer, options, options);\r\n }\r\n vuei18n.__onComponentInstanceCreated(this.$i18n);\r\n i18n.__setInstance(instance, this.$i18n);\r\n // defines vue-i18n legacy APIs\r\n this.$t = (...args) => this.$i18n.t(...args);\r\n this.$rt = (...args) => this.$i18n.rt(...args);\r\n this.$tc = (...args) => this.$i18n.tc(...args);\r\n this.$te = (key, locale) => this.$i18n.te(key, locale);\r\n this.$d = (...args) => this.$i18n.d(...args);\r\n this.$n = (...args) => this.$i18n.n(...args);\r\n this.$tm = (key) => this.$i18n.tm(key);\r\n },\r\n mounted() {\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n this.$el &&\r\n this.$i18n) {\r\n this.$el.__VUE_I18N__ = this.$i18n.__composer;\r\n const emitter = (this.__v_emitter =\r\n createEmitter());\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n unmounted() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n this.$el &&\r\n this.$el.__VUE_I18N__) {\r\n if (this.__v_emitter) {\r\n this.__v_emitter.off('*', addTimelineEvent);\r\n delete this.__v_emitter;\r\n }\r\n if (this.$i18n) {\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\r\n delete this.$el.__VUE_I18N__;\r\n }\r\n }\r\n delete this.$t;\r\n delete this.$rt;\r\n delete this.$tc;\r\n delete this.$te;\r\n delete this.$d;\r\n delete this.$n;\r\n delete this.$tm;\r\n i18n.__deleteInstance(instance);\r\n delete this.$i18n;\r\n }\r\n };\r\n}\r\nfunction mergeToRoot(root, options) {\r\n root.locale = options.locale || root.locale;\r\n root.fallbackLocale = options.fallbackLocale || root.fallbackLocale;\r\n root.missing = options.missing || root.missing;\r\n root.silentTranslationWarn =\r\n options.silentTranslationWarn || root.silentFallbackWarn;\r\n root.silentFallbackWarn =\r\n options.silentFallbackWarn || root.silentFallbackWarn;\r\n root.formatFallbackMessages =\r\n options.formatFallbackMessages || root.formatFallbackMessages;\r\n root.postTranslation = options.postTranslation || root.postTranslation;\r\n root.warnHtmlInMessage = options.warnHtmlInMessage || root.warnHtmlInMessage;\r\n root.escapeParameterHtml =\r\n options.escapeParameterHtml || root.escapeParameterHtml;\r\n root.sync = options.sync || root.sync;\r\n root.__composer[SetPluralRulesSymbol](options.pluralizationRules || root.pluralizationRules);\r\n const messages = getLocaleMessages(root.locale, {\r\n messages: options.messages,\r\n __i18n: options.__i18n\r\n });\r\n Object.keys(messages).forEach(locale => root.mergeLocaleMessage(locale, messages[locale]));\r\n if (options.datetimeFormats) {\r\n Object.keys(options.datetimeFormats).forEach(locale => root.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\r\n }\r\n if (options.numberFormats) {\r\n Object.keys(options.numberFormats).forEach(locale => root.mergeNumberFormat(locale, options.numberFormats[locale]));\r\n }\r\n return root;\r\n}\n\n/**\r\n * Injection key for {@link useI18n}\r\n *\r\n * @remarks\r\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\r\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst I18nInjectionKey = \r\n/* #__PURE__*/ makeSymbol('global-vue-i18n');\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction createI18n(options = {}, VueI18nLegacy) {\r\n // prettier-ignore\r\n const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)\r\n ? options.legacy\r\n : __VUE_I18N_LEGACY_API__;\r\n // prettier-ignore\r\n const __globalInjection = isBoolean(options.globalInjection)\r\n ? options.globalInjection\r\n : true;\r\n // prettier-ignore\r\n const __allowComposition = __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? !!options.allowComposition\r\n : true;\r\n const __instances = new Map();\r\n const [globalScope, __global] = createGlobal(options, __legacyMode);\r\n const symbol = makeSymbol((process.env.NODE_ENV !== 'production') ? 'vue-i18n' : '');\r\n function __getInstance(component) {\r\n return __instances.get(component) || null;\r\n }\r\n function __setInstance(component, instance) {\r\n __instances.set(component, instance);\r\n }\r\n function __deleteInstance(component) {\r\n __instances.delete(component);\r\n }\r\n {\r\n const i18n = {\r\n // mode\r\n get mode() {\r\n return __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? 'legacy'\r\n : 'composition';\r\n },\r\n // allowComposition\r\n get allowComposition() {\r\n return __allowComposition;\r\n },\r\n // install plugin\r\n async install(app, ...options) {\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false) {\r\n app.__VUE_I18N__ = i18n;\r\n }\r\n // setup global provider\r\n app.__VUE_I18N_SYMBOL__ = symbol;\r\n app.provide(app.__VUE_I18N_SYMBOL__, i18n);\r\n // global method and properties injection for Composition API\r\n if (!__legacyMode && __globalInjection) {\r\n injectGlobalFields(app, i18n.global);\r\n }\r\n // install built-in components and directive\r\n if (__VUE_I18N_FULL_INSTALL__) {\r\n apply(app, i18n, ...options);\r\n }\r\n // setup mixin for Legacy API\r\n if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\r\n app.mixin(defineMixin(__global, __global.__composer, i18n));\r\n }\r\n // release global scope\r\n const unmountApp = app.unmount;\r\n app.unmount = () => {\r\n i18n.dispose();\r\n unmountApp();\r\n };\r\n // setup vue-devtools plugin\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\r\n const ret = await enableDevTools(app, i18n);\r\n if (!ret) {\r\n throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\r\n }\r\n const emitter = createEmitter();\r\n if (__legacyMode) {\r\n const _vueI18n = __global;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = __global;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n }\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n // global accessor\r\n get global() {\r\n return __global;\r\n },\r\n dispose() {\r\n globalScope.stop();\r\n },\r\n // @internal\r\n __instances,\r\n // @internal\r\n __getInstance,\r\n // @internal\r\n __setInstance,\r\n // @internal\r\n __deleteInstance\r\n };\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction useI18n(options = {}) {\r\n const instance = getCurrentInstance();\r\n if (instance == null) {\r\n throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\r\n }\r\n if (!instance.isCE &&\r\n instance.appContext.app != null &&\r\n !instance.appContext.app.__VUE_I18N_SYMBOL__) {\r\n throw createI18nError(I18nErrorCodes.NOT_INSLALLED);\r\n }\r\n const i18n = getI18nInstance(instance);\r\n const global = getGlobalComposer(i18n);\r\n const componentOptions = getComponentOptions(instance);\r\n const scope = getScope(options, componentOptions);\r\n if (__VUE_I18N_LEGACY_API__) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (i18n.mode === 'legacy' && !options.__useComponent) {\r\n if (!i18n.allowComposition) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);\r\n }\r\n return useI18nForLegacy(instance, scope, global, options);\r\n }\r\n }\r\n if (scope === 'global') {\r\n adjustI18nResources(global, options, componentOptions);\r\n return global;\r\n }\r\n if (scope === 'parent') {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let composer = getComposer(i18n, instance, options.__useComponent);\r\n if (composer == null) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\r\n }\r\n composer = global;\r\n }\r\n return composer;\r\n }\r\n const i18nInternal = i18n;\r\n let composer = i18nInternal.__getInstance(instance);\r\n if (composer == null) {\r\n const composerOptions = assign({}, options);\r\n if ('__i18n' in componentOptions) {\r\n composerOptions.__i18n = componentOptions.__i18n;\r\n }\r\n if (global) {\r\n composerOptions.__root = global;\r\n }\r\n composer = createComposer(composerOptions);\r\n setupLifeCycle(i18nInternal, instance, composer);\r\n i18nInternal.__setInstance(instance, composer);\r\n }\r\n return composer;\r\n}\r\n/**\r\n * Cast to VueI18n legacy compatible type\r\n *\r\n * @remarks\r\n * This API is provided only with [vue-i18n-bridge](https://vue-i18n.intlify.dev/guide/migration/ways.html#what-is-vue-i18n-bridge).\r\n *\r\n * The purpose of this function is to convert an {@link I18n} instance created with {@link createI18n | createI18n(legacy: true)} into a `vue-i18n@v8.x` compatible instance of `new VueI18n` in a TypeScript environment.\r\n *\r\n * @param i18n - An instance of {@link I18n}\r\n * @returns A i18n instance which is casted to {@link VueI18n} type\r\n *\r\n * @VueI18nTip\r\n * :new: provided by **vue-i18n-bridge only**\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst castToVueI18n = (i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) => {\r\n if (!(__VUE_I18N_BRIDGE__ in i18n)) {\r\n throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N);\r\n }\r\n return i18n;\r\n};\r\nfunction createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n const scope = effectScope();\r\n {\r\n const obj = __VUE_I18N_LEGACY_API__ && legacyMode\r\n ? scope.run(() => createVueI18n(options))\r\n : scope.run(() => createComposer(options));\r\n if (obj == null) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n return [scope, obj];\r\n }\r\n}\r\nfunction getI18nInstance(instance) {\r\n {\r\n const i18n = inject(!instance.isCE\r\n ? instance.appContext.app.__VUE_I18N_SYMBOL__\r\n : I18nInjectionKey);\r\n /* istanbul ignore if */\r\n if (!i18n) {\r\n throw createI18nError(!instance.isCE\r\n ? I18nErrorCodes.UNEXPECTED_ERROR\r\n : I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE);\r\n }\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getScope(options, componentOptions) {\r\n // prettier-ignore\r\n return isEmptyObject(options)\r\n ? ('__i18n' in componentOptions)\r\n ? 'local'\r\n : 'global'\r\n : !options.useScope\r\n ? 'local'\r\n : options.useScope;\r\n}\r\nfunction getGlobalComposer(i18n) {\r\n // prettier-ignore\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer\r\n ;\r\n}\r\nfunction getComposer(i18n, target, useComponent = false) {\r\n let composer = null;\r\n const root = target.root;\r\n let current = target.parent;\r\n while (current != null) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n composer = i18nInternal.__getInstance(current);\r\n }\r\n else {\r\n if (__VUE_I18N_LEGACY_API__) {\r\n const vueI18n = i18nInternal.__getInstance(current);\r\n if (vueI18n != null) {\r\n composer = vueI18n\r\n .__composer;\r\n if (useComponent &&\r\n composer &&\r\n !composer[InejctWithOption] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n composer = null;\r\n }\r\n }\r\n }\r\n }\r\n if (composer != null) {\r\n break;\r\n }\r\n if (root === current) {\r\n break;\r\n }\r\n current = current.parent;\r\n }\r\n return composer;\r\n}\r\nfunction setupLifeCycle(i18n, target, composer) {\r\n let emitter = null;\r\n {\r\n onMounted(() => {\r\n // inject composer instance to DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el) {\r\n target.vnode.el.__VUE_I18N__ = composer;\r\n emitter = createEmitter();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n }, target);\r\n onUnmounted(() => {\r\n // remove composer instance from DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el &&\r\n target.vnode.el.__VUE_I18N__) {\r\n emitter && emitter.off('*', addTimelineEvent);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[DisableEmitter] && _composer[DisableEmitter]();\r\n delete target.vnode.el.__VUE_I18N__;\r\n }\r\n i18n.__deleteInstance(target);\r\n }, target);\r\n }\r\n}\r\nfunction useI18nForLegacy(instance, scope, root, options = {} // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n const isLocale = scope === 'local';\r\n const _composer = shallowRef(null);\r\n if (isLocale &&\r\n instance.proxy &&\r\n !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) {\r\n throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);\r\n }\r\n const _inheritLocale = isBoolean(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = ref(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.locale.value\r\n : isString(options.locale)\r\n ? options.locale\r\n : DEFAULT_LOCALE);\r\n const _fallbackLocale = ref(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.fallbackLocale.value\r\n : isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = ref(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _numberFormats = ref(isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _missingWarn = isLocale\r\n ? root.missingWarn\r\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackWarn = isLocale\r\n ? root.fallbackWarn\r\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackRoot = isLocale\r\n ? root.fallbackRoot\r\n : isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n const _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n const _missing = isFunction(options.missing) ? options.missing : null;\r\n // postTranslation handler\r\n const _postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n const _warnHtmlMessage = isLocale\r\n ? root.warnHtmlMessage\r\n : isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const _escapeParameter = !!options.escapeParameter;\r\n // prettier-ignore\r\n const _modifiers = isLocale\r\n ? root.modifiers\r\n : isPlainObject(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n const _pluralRules = options.pluralRules || (isLocale && root.pluralRules);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ];\r\n }\r\n // locale\r\n const locale = computed({\r\n get: () => {\r\n return _composer.value ? _composer.value.locale.value : _locale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.locale.value = val;\r\n }\r\n _locale.value = val;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = computed({\r\n get: () => {\r\n return _composer.value\r\n ? _composer.value.fallbackLocale.value\r\n : _fallbackLocale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.fallbackLocale.value = val;\r\n }\r\n _fallbackLocale.value = val;\r\n }\r\n });\r\n // messages\r\n const messages = computed(() => {\r\n if (_composer.value) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _composer.value.messages.value;\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _messages.value;\r\n }\r\n });\r\n const datetimeFormats = computed(() => _datetimeFormats.value);\r\n const numberFormats = computed(() => _numberFormats.value);\r\n function getPostTranslationHandler() {\r\n return _composer.value\r\n ? _composer.value.getPostTranslationHandler()\r\n : _postTranslation;\r\n }\r\n function setPostTranslationHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setPostTranslationHandler(handler);\r\n }\r\n }\r\n function getMissingHandler() {\r\n return _composer.value ? _composer.value.getMissingHandler() : _missing;\r\n }\r\n function setMissingHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setMissingHandler(handler);\r\n }\r\n }\r\n function warpWithDeps(fn) {\r\n trackReactivityValues();\r\n return fn();\r\n }\r\n function t(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function rt(...args) {\r\n return _composer.value\r\n ? Reflect.apply(_composer.value.rt, null, [...args])\r\n : '';\r\n }\r\n function d(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function n(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function tm(key) {\r\n return _composer.value ? _composer.value.tm(key) : {};\r\n }\r\n function te(key, locale) {\r\n return _composer.value ? _composer.value.te(key, locale) : false;\r\n }\r\n function getLocaleMessage(locale) {\r\n return _composer.value ? _composer.value.getLocaleMessage(locale) : {};\r\n }\r\n function setLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.setLocaleMessage(locale, message);\r\n _messages.value[locale] = message;\r\n }\r\n }\r\n function mergeLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.mergeLocaleMessage(locale, message);\r\n }\r\n }\r\n function getDateTimeFormat(locale) {\r\n return _composer.value ? _composer.value.getDateTimeFormat(locale) : {};\r\n }\r\n function setDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setDateTimeFormat(locale, format);\r\n _datetimeFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeDateTimeFormat(locale, format);\r\n }\r\n }\r\n function getNumberFormat(locale) {\r\n return _composer.value ? _composer.value.getNumberFormat(locale) : {};\r\n }\r\n function setNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setNumberFormat(locale, format);\r\n _numberFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeNumberFormat(locale, format);\r\n }\r\n }\r\n const wrapper = {\r\n get id() {\r\n return _composer.value ? _composer.value.id : -1;\r\n },\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n datetimeFormats,\r\n numberFormats,\r\n get inheritLocale() {\r\n return _composer.value ? _composer.value.inheritLocale : _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n if (_composer.value) {\r\n _composer.value.inheritLocale = val;\r\n }\r\n },\r\n get availableLocales() {\r\n return _composer.value\r\n ? _composer.value.availableLocales\r\n : Object.keys(_messages.value);\r\n },\r\n get modifiers() {\r\n return (_composer.value ? _composer.value.modifiers : _modifiers);\r\n },\r\n get pluralRules() {\r\n return (_composer.value ? _composer.value.pluralRules : _pluralRules);\r\n },\r\n get isGlobal() {\r\n return _composer.value ? _composer.value.isGlobal : false;\r\n },\r\n get missingWarn() {\r\n return _composer.value ? _composer.value.missingWarn : _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackWarn() {\r\n return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackRoot() {\r\n return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackRoot = val;\r\n }\r\n },\r\n get fallbackFormat() {\r\n return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackFormat = val;\r\n }\r\n },\r\n get warnHtmlMessage() {\r\n return _composer.value\r\n ? _composer.value.warnHtmlMessage\r\n : _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n if (_composer.value) {\r\n _composer.value.warnHtmlMessage = val;\r\n }\r\n },\r\n get escapeParameter() {\r\n return _composer.value\r\n ? _composer.value.escapeParameter\r\n : _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n if (_composer.value) {\r\n _composer.value.escapeParameter = val;\r\n }\r\n },\r\n t,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n rt,\r\n d,\r\n n,\r\n tm,\r\n te,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getDateTimeFormat,\r\n setDateTimeFormat,\r\n mergeDateTimeFormat,\r\n getNumberFormat,\r\n setNumberFormat,\r\n mergeNumberFormat\r\n };\r\n function sync(composer) {\r\n composer.locale.value = _locale.value;\r\n composer.fallbackLocale.value = _fallbackLocale.value;\r\n Object.keys(_messages.value).forEach(locale => {\r\n composer.mergeLocaleMessage(locale, _messages.value[locale]);\r\n });\r\n Object.keys(_datetimeFormats.value).forEach(locale => {\r\n composer.mergeDateTimeFormat(locale, _datetimeFormats.value[locale]);\r\n });\r\n Object.keys(_numberFormats.value).forEach(locale => {\r\n composer.mergeNumberFormat(locale, _numberFormats.value[locale]);\r\n });\r\n composer.escapeParameter = _escapeParameter;\r\n composer.fallbackFormat = _fallbackFormat;\r\n composer.fallbackRoot = _fallbackRoot;\r\n composer.fallbackWarn = _fallbackWarn;\r\n composer.missingWarn = _missingWarn;\r\n composer.warnHtmlMessage = _warnHtmlMessage;\r\n }\r\n onBeforeMount(() => {\r\n if (instance.proxy == null || instance.proxy.$i18n == null) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const composer = (_composer.value = instance.proxy.$i18n\r\n .__composer);\r\n if (scope === 'global') {\r\n _locale.value = composer.locale.value;\r\n _fallbackLocale.value = composer.fallbackLocale.value;\r\n _messages.value = composer.messages.value;\r\n _datetimeFormats.value = composer.datetimeFormats.value;\r\n _numberFormats.value = composer.numberFormats.value;\r\n }\r\n else if (isLocale) {\r\n sync(composer);\r\n }\r\n });\r\n return wrapper;\r\n}\r\nconst globalExportProps = [\r\n 'locale',\r\n 'fallbackLocale',\r\n 'availableLocales'\r\n];\r\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm'] ;\r\nfunction injectGlobalFields(app, composer) {\r\n const i18n = Object.create(null);\r\n globalExportProps.forEach(prop => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, prop);\r\n if (!desc) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const wrap = isRef(desc.value) // check computed props\r\n ? {\r\n get() {\r\n return desc.value.value;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set(val) {\r\n desc.value.value = val;\r\n }\r\n }\r\n : {\r\n get() {\r\n return desc.get && desc.get();\r\n }\r\n };\r\n Object.defineProperty(i18n, prop, wrap);\r\n });\r\n app.config.globalProperties.$i18n = i18n;\r\n globalExportMethods.forEach(method => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, method);\r\n if (!desc || !desc.value) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\r\n });\r\n}\n\n// register message resolver at vue-i18n\r\nregisterMessageResolver(resolveValue);\r\n// register fallback locale at vue-i18n\r\nregisterLocaleFallbacker(fallbackWithLocaleChain);\r\n{\r\n initFeatureFlags();\r\n}\r\n// NOTE: experimental !!\r\nif ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n const target = getGlobalThis();\r\n target.__INTLIFY__ = true;\r\n setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\r\n}\r\nif ((process.env.NODE_ENV !== 'production')) ;\n\nexport { DatetimeFormat, I18nInjectionKey, NumberFormat, Translation, VERSION, castToVueI18n, createI18n, useI18n, vTDirective };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// runtime helper for setting properties on components\n// in a tree-shakable way\nexports.default = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\n","/*!\n * vue-router v4.1.6\n * (c) 2022 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, nextTick } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nconst isBrowser = typeof window !== 'undefined';\n\nfunction isESModule(obj) {\r\n return obj.__esModule || obj[Symbol.toStringTag] === 'Module';\r\n}\r\nconst assign = Object.assign;\r\nfunction applyToParams(fn, params) {\r\n const newParams = {};\r\n for (const key in params) {\r\n const value = params[key];\r\n newParams[key] = isArray(value)\r\n ? value.map(fn)\r\n : fn(value);\r\n }\r\n return newParams;\r\n}\r\nconst noop = () => { };\r\n/**\r\n * Typesafe alternative to Array.isArray\r\n * https://github.com/microsoft/TypeScript/pull/48228\r\n */\r\nconst isArray = Array.isArray;\n\nfunction warn(msg) {\r\n // avoid using ...args as it breaks in older Edge builds\r\n const args = Array.from(arguments).slice(1);\r\n console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args));\r\n}\n\nconst TRAILING_SLASH_RE = /\\/$/;\r\nconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, '');\r\n/**\r\n * Transforms a URI into a normalized history location\r\n *\r\n * @param parseQuery\r\n * @param location - URI to normalize\r\n * @param currentLocation - current absolute location. Allows resolving relative\r\n * paths. Must start with `/`. Defaults to `/`\r\n * @returns a normalized history location\r\n */\r\nfunction parseURL(parseQuery, location, currentLocation = '/') {\r\n let path, query = {}, searchString = '', hash = '';\r\n // Could use URL and URLSearchParams but IE 11 doesn't support it\r\n // TODO: move to new URL()\r\n const hashPos = location.indexOf('#');\r\n let searchPos = location.indexOf('?');\r\n // the hash appears before the search, so it's not part of the search string\r\n if (hashPos < searchPos && hashPos >= 0) {\r\n searchPos = -1;\r\n }\r\n if (searchPos > -1) {\r\n path = location.slice(0, searchPos);\r\n searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length);\r\n query = parseQuery(searchString);\r\n }\r\n if (hashPos > -1) {\r\n path = path || location.slice(0, hashPos);\r\n // keep the # character\r\n hash = location.slice(hashPos, location.length);\r\n }\r\n // no search and no query\r\n path = resolveRelativePath(path != null ? path : location, currentLocation);\r\n // empty path means a relative query or hash `?foo=f`, `#thing`\r\n return {\r\n fullPath: path + (searchString && '?') + searchString + hash,\r\n path,\r\n query,\r\n hash,\r\n };\r\n}\r\n/**\r\n * Stringifies a URL object\r\n *\r\n * @param stringifyQuery\r\n * @param location\r\n */\r\nfunction stringifyURL(stringifyQuery, location) {\r\n const query = location.query ? stringifyQuery(location.query) : '';\r\n return location.path + (query && '?') + query + (location.hash || '');\r\n}\r\n/**\r\n * Strips off the base from the beginning of a location.pathname in a non-case-sensitive way.\r\n *\r\n * @param pathname - location.pathname\r\n * @param base - base to strip off\r\n */\r\nfunction stripBase(pathname, base) {\r\n // no base or base is not found at the beginning\r\n if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase()))\r\n return pathname;\r\n return pathname.slice(base.length) || '/';\r\n}\r\n/**\r\n * Checks if two RouteLocation are equal. This means that both locations are\r\n * pointing towards the same {@link RouteRecord} and that all `params`, `query`\r\n * parameters and `hash` are the same\r\n *\r\n * @param a - first {@link RouteLocation}\r\n * @param b - second {@link RouteLocation}\r\n */\r\nfunction isSameRouteLocation(stringifyQuery, a, b) {\r\n const aLastIndex = a.matched.length - 1;\r\n const bLastIndex = b.matched.length - 1;\r\n return (aLastIndex > -1 &&\r\n aLastIndex === bLastIndex &&\r\n isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) &&\r\n isSameRouteLocationParams(a.params, b.params) &&\r\n stringifyQuery(a.query) === stringifyQuery(b.query) &&\r\n a.hash === b.hash);\r\n}\r\n/**\r\n * Check if two `RouteRecords` are equal. Takes into account aliases: they are\r\n * considered equal to the `RouteRecord` they are aliasing.\r\n *\r\n * @param a - first {@link RouteRecord}\r\n * @param b - second {@link RouteRecord}\r\n */\r\nfunction isSameRouteRecord(a, b) {\r\n // since the original record has an undefined value for aliasOf\r\n // but all aliases point to the original record, this will always compare\r\n // the original record\r\n return (a.aliasOf || a) === (b.aliasOf || b);\r\n}\r\nfunction isSameRouteLocationParams(a, b) {\r\n if (Object.keys(a).length !== Object.keys(b).length)\r\n return false;\r\n for (const key in a) {\r\n if (!isSameRouteLocationParamsValue(a[key], b[key]))\r\n return false;\r\n }\r\n return true;\r\n}\r\nfunction isSameRouteLocationParamsValue(a, b) {\r\n return isArray(a)\r\n ? isEquivalentArray(a, b)\r\n : isArray(b)\r\n ? isEquivalentArray(b, a)\r\n : a === b;\r\n}\r\n/**\r\n * Check if two arrays are the same or if an array with one single entry is the\r\n * same as another primitive value. Used to check query and parameters\r\n *\r\n * @param a - array of values\r\n * @param b - array of values or a single value\r\n */\r\nfunction isEquivalentArray(a, b) {\r\n return isArray(b)\r\n ? a.length === b.length && a.every((value, i) => value === b[i])\r\n : a.length === 1 && a[0] === b;\r\n}\r\n/**\r\n * Resolves a relative path that starts with `.`.\r\n *\r\n * @param to - path location we are resolving\r\n * @param from - currentLocation.path, should start with `/`\r\n */\r\nfunction resolveRelativePath(to, from) {\r\n if (to.startsWith('/'))\r\n return to;\r\n if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) {\r\n warn(`Cannot resolve a relative location without an absolute path. Trying to resolve \"${to}\" from \"${from}\". It should look like \"/${from}\".`);\r\n return to;\r\n }\r\n if (!to)\r\n return from;\r\n const fromSegments = from.split('/');\r\n const toSegments = to.split('/');\r\n let position = fromSegments.length - 1;\r\n let toPosition;\r\n let segment;\r\n for (toPosition = 0; toPosition < toSegments.length; toPosition++) {\r\n segment = toSegments[toPosition];\r\n // we stay on the same position\r\n if (segment === '.')\r\n continue;\r\n // go up in the from array\r\n if (segment === '..') {\r\n // we can't go below zero, but we still need to increment toPosition\r\n if (position > 1)\r\n position--;\r\n // continue\r\n }\r\n // we reached a non-relative path, we stop here\r\n else\r\n break;\r\n }\r\n return (fromSegments.slice(0, position).join('/') +\r\n '/' +\r\n toSegments\r\n // ensure we use at least the last element in the toSegments\r\n .slice(toPosition - (toPosition === toSegments.length ? 1 : 0))\r\n .join('/'));\r\n}\n\nvar NavigationType;\r\n(function (NavigationType) {\r\n NavigationType[\"pop\"] = \"pop\";\r\n NavigationType[\"push\"] = \"push\";\r\n})(NavigationType || (NavigationType = {}));\r\nvar NavigationDirection;\r\n(function (NavigationDirection) {\r\n NavigationDirection[\"back\"] = \"back\";\r\n NavigationDirection[\"forward\"] = \"forward\";\r\n NavigationDirection[\"unknown\"] = \"\";\r\n})(NavigationDirection || (NavigationDirection = {}));\r\n/**\r\n * Starting location for Histories\r\n */\r\nconst START = '';\r\n// Generic utils\r\n/**\r\n * Normalizes a base by removing any trailing slash and reading the base tag if\r\n * present.\r\n *\r\n * @param base - base to normalize\r\n */\r\nfunction normalizeBase(base) {\r\n if (!base) {\r\n if (isBrowser) {\r\n // respect <base> tag\r\n const baseEl = document.querySelector('base');\r\n base = (baseEl && baseEl.getAttribute('href')) || '/';\r\n // strip full URL origin\r\n base = base.replace(/^\\w+:\\/\\/[^\\/]+/, '');\r\n }\r\n else {\r\n base = '/';\r\n }\r\n }\r\n // ensure leading slash when it was removed by the regex above avoid leading\r\n // slash with hash because the file could be read from the disk like file://\r\n // and the leading slash would cause problems\r\n if (base[0] !== '/' && base[0] !== '#')\r\n base = '/' + base;\r\n // remove the trailing slash so all other method can just do `base + fullPath`\r\n // to build an href\r\n return removeTrailingSlash(base);\r\n}\r\n// remove any character before the hash\r\nconst BEFORE_HASH_RE = /^[^#]+#/;\r\nfunction createHref(base, location) {\r\n return base.replace(BEFORE_HASH_RE, '#') + location;\r\n}\n\nfunction getElementPosition(el, offset) {\r\n const docRect = document.documentElement.getBoundingClientRect();\r\n const elRect = el.getBoundingClientRect();\r\n return {\r\n behavior: offset.behavior,\r\n left: elRect.left - docRect.left - (offset.left || 0),\r\n top: elRect.top - docRect.top - (offset.top || 0),\r\n };\r\n}\r\nconst computeScrollPosition = () => ({\r\n left: window.pageXOffset,\r\n top: window.pageYOffset,\r\n});\r\nfunction scrollToPosition(position) {\r\n let scrollToOptions;\r\n if ('el' in position) {\r\n const positionEl = position.el;\r\n const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#');\r\n /**\r\n * `id`s can accept pretty much any characters, including CSS combinators\r\n * like `>` or `~`. It's still possible to retrieve elements using\r\n * `document.getElementById('~')` but it needs to be escaped when using\r\n * `document.querySelector('#\\\\~')` for it to be valid. The only\r\n * requirements for `id`s are them to be unique on the page and to not be\r\n * empty (`id=\"\"`). Because of that, when passing an id selector, it should\r\n * be properly escaped for it to work with `querySelector`. We could check\r\n * for the id selector to be simple (no CSS combinators `+ >~`) but that\r\n * would make things inconsistent since they are valid characters for an\r\n * `id` but would need to be escaped when using `querySelector`, breaking\r\n * their usage and ending up in no selector returned. Selectors need to be\r\n * escaped:\r\n *\r\n * - `#1-thing` becomes `#\\31 -thing`\r\n * - `#with~symbols` becomes `#with\\\\~symbols`\r\n *\r\n * - More information about the topic can be found at\r\n * https://mathiasbynens.be/notes/html5-id-class.\r\n * - Practical example: https://mathiasbynens.be/demo/html5-id\r\n */\r\n if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') {\r\n if (!isIdSelector || !document.getElementById(position.el.slice(1))) {\r\n try {\r\n const foundEl = document.querySelector(position.el);\r\n if (isIdSelector && foundEl) {\r\n warn(`The selector \"${position.el}\" should be passed as \"el: document.querySelector('${position.el}')\" because it starts with \"#\".`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n catch (err) {\r\n warn(`The selector \"${position.el}\" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`);\r\n // return to avoid other warnings\r\n return;\r\n }\r\n }\r\n }\r\n const el = typeof positionEl === 'string'\r\n ? isIdSelector\r\n ? document.getElementById(positionEl.slice(1))\r\n : document.querySelector(positionEl)\r\n : positionEl;\r\n if (!el) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(`Couldn't find element using selector \"${position.el}\" returned by scrollBehavior.`);\r\n return;\r\n }\r\n scrollToOptions = getElementPosition(el, position);\r\n }\r\n else {\r\n scrollToOptions = position;\r\n }\r\n if ('scrollBehavior' in document.documentElement.style)\r\n window.scrollTo(scrollToOptions);\r\n else {\r\n window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.pageXOffset, scrollToOptions.top != null ? scrollToOptions.top : window.pageYOffset);\r\n }\r\n}\r\nfunction getScrollKey(path, delta) {\r\n const position = history.state ? history.state.position - delta : -1;\r\n return position + path;\r\n}\r\nconst scrollPositions = new Map();\r\nfunction saveScrollPosition(key, scrollPosition) {\r\n scrollPositions.set(key, scrollPosition);\r\n}\r\nfunction getSavedScrollPosition(key) {\r\n const scroll = scrollPositions.get(key);\r\n // consume it so it's not used again\r\n scrollPositions.delete(key);\r\n return scroll;\r\n}\r\n// TODO: RFC about how to save scroll position\r\n/**\r\n * ScrollBehavior instance used by the router to compute and restore the scroll\r\n * position when navigating.\r\n */\r\n// export interface ScrollHandler<ScrollPositionEntry extends HistoryStateValue, ScrollPosition extends ScrollPositionEntry> {\r\n// // returns a scroll position that can be saved in history\r\n// compute(): ScrollPositionEntry\r\n// // can take an extended ScrollPositionEntry\r\n// scroll(position: ScrollPosition): void\r\n// }\r\n// export const scrollHandler: ScrollHandler<ScrollPosition> = {\r\n// compute: computeScroll,\r\n// scroll: scrollToPosition,\r\n// }\n\nlet createBaseLocation = () => location.protocol + '//' + location.host;\r\n/**\r\n * Creates a normalized history location from a window.location object\r\n * @param location -\r\n */\r\nfunction createCurrentLocation(base, location) {\r\n const { pathname, search, hash } = location;\r\n // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end\r\n const hashPos = base.indexOf('#');\r\n if (hashPos > -1) {\r\n let slicePos = hash.includes(base.slice(hashPos))\r\n ? base.slice(hashPos).length\r\n : 1;\r\n let pathFromHash = hash.slice(slicePos);\r\n // prepend the starting slash to hash so the url starts with /#\r\n if (pathFromHash[0] !== '/')\r\n pathFromHash = '/' + pathFromHash;\r\n return stripBase(pathFromHash, '');\r\n }\r\n const path = stripBase(pathname, base);\r\n return path + search + hash;\r\n}\r\nfunction useHistoryListeners(base, historyState, currentLocation, replace) {\r\n let listeners = [];\r\n let teardowns = [];\r\n // TODO: should it be a stack? a Dict. Check if the popstate listener\r\n // can trigger twice\r\n let pauseState = null;\r\n const popStateHandler = ({ state, }) => {\r\n const to = createCurrentLocation(base, location);\r\n const from = currentLocation.value;\r\n const fromState = historyState.value;\r\n let delta = 0;\r\n if (state) {\r\n currentLocation.value = to;\r\n historyState.value = state;\r\n // ignore the popstate and reset the pauseState\r\n if (pauseState && pauseState === from) {\r\n pauseState = null;\r\n return;\r\n }\r\n delta = fromState ? state.position - fromState.position : 0;\r\n }\r\n else {\r\n replace(to);\r\n }\r\n // console.log({ deltaFromCurrent })\r\n // Here we could also revert the navigation by calling history.go(-delta)\r\n // this listener will have to be adapted to not trigger again and to wait for the url\r\n // to be updated before triggering the listeners. Some kind of validation function would also\r\n // need to be passed to the listeners so the navigation can be accepted\r\n // call all listeners\r\n listeners.forEach(listener => {\r\n listener(currentLocation.value, from, {\r\n delta,\r\n type: NavigationType.pop,\r\n direction: delta\r\n ? delta > 0\r\n ? NavigationDirection.forward\r\n : NavigationDirection.back\r\n : NavigationDirection.unknown,\r\n });\r\n });\r\n };\r\n function pauseListeners() {\r\n pauseState = currentLocation.value;\r\n }\r\n function listen(callback) {\r\n // set up the listener and prepare teardown callbacks\r\n listeners.push(callback);\r\n const teardown = () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n teardowns.push(teardown);\r\n return teardown;\r\n }\r\n function beforeUnloadListener() {\r\n const { history } = window;\r\n if (!history.state)\r\n return;\r\n history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), '');\r\n }\r\n function destroy() {\r\n for (const teardown of teardowns)\r\n teardown();\r\n teardowns = [];\r\n window.removeEventListener('popstate', popStateHandler);\r\n window.removeEventListener('beforeunload', beforeUnloadListener);\r\n }\r\n // set up the listeners and prepare teardown callbacks\r\n window.addEventListener('popstate', popStateHandler);\r\n window.addEventListener('beforeunload', beforeUnloadListener);\r\n return {\r\n pauseListeners,\r\n listen,\r\n destroy,\r\n };\r\n}\r\n/**\r\n * Creates a state object\r\n */\r\nfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\r\n return {\r\n back,\r\n current,\r\n forward,\r\n replaced,\r\n position: window.history.length,\r\n scroll: computeScroll ? computeScrollPosition() : null,\r\n };\r\n}\r\nfunction useHistoryStateNavigation(base) {\r\n const { history, location } = window;\r\n // private variables\r\n const currentLocation = {\r\n value: createCurrentLocation(base, location),\r\n };\r\n const historyState = { value: history.state };\r\n // build current history entry as this is a fresh navigation\r\n if (!historyState.value) {\r\n changeLocation(currentLocation.value, {\r\n back: null,\r\n current: currentLocation.value,\r\n forward: null,\r\n // the length is off by one, we need to decrease it\r\n position: history.length - 1,\r\n replaced: true,\r\n // don't add a scroll as the user may have an anchor, and we want\r\n // scrollBehavior to be triggered without a saved position\r\n scroll: null,\r\n }, true);\r\n }\r\n function changeLocation(to, state, replace) {\r\n /**\r\n * if a base tag is provided, and we are on a normal domain, we have to\r\n * respect the provided `base` attribute because pushState() will use it and\r\n * potentially erase anything before the `#` like at\r\n * https://github.com/vuejs/router/issues/685 where a base of\r\n * `/folder/#` but a base of `/` would erase the `/folder/` section. If\r\n * there is no host, the `<base>` tag makes no sense and if there isn't a\r\n * base tag we can just use everything after the `#`.\r\n */\r\n const hashIndex = base.indexOf('#');\r\n const url = hashIndex > -1\r\n ? (location.host && document.querySelector('base')\r\n ? base\r\n : base.slice(hashIndex)) + to\r\n : createBaseLocation() + base + to;\r\n try {\r\n // BROWSER QUIRK\r\n // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds\r\n history[replace ? 'replaceState' : 'pushState'](state, '', url);\r\n historyState.value = state;\r\n }\r\n catch (err) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('Error with push/replace State', err);\r\n }\r\n else {\r\n console.error(err);\r\n }\r\n // Force the navigation, this also resets the call count\r\n location[replace ? 'replace' : 'assign'](url);\r\n }\r\n }\r\n function replace(to, data) {\r\n const state = assign({}, history.state, buildState(historyState.value.back, \r\n // keep back and forward entries but override current position\r\n to, historyState.value.forward, true), data, { position: historyState.value.position });\r\n changeLocation(to, state, true);\r\n currentLocation.value = to;\r\n }\r\n function push(to, data) {\r\n // Add to current entry the information of where we are going\r\n // as well as saving the current position\r\n const currentState = assign({}, \r\n // use current history state to gracefully handle a wrong call to\r\n // history.replaceState\r\n // https://github.com/vuejs/router/issues/366\r\n historyState.value, history.state, {\r\n forward: to,\r\n scroll: computeScrollPosition(),\r\n });\r\n if ((process.env.NODE_ENV !== 'production') && !history.state) {\r\n warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\\n\\n` +\r\n `history.replaceState(history.state, '', url)\\n\\n` +\r\n `You can find more information at https://next.router.vuejs.org/guide/migration/#usage-of-history-state.`);\r\n }\r\n changeLocation(currentState.current, currentState, true);\r\n const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data);\r\n changeLocation(to, state, false);\r\n currentLocation.value = to;\r\n }\r\n return {\r\n location: currentLocation,\r\n state: historyState,\r\n push,\r\n replace,\r\n };\r\n}\r\n/**\r\n * Creates an HTML5 history. Most common history for single page applications.\r\n *\r\n * @param base -\r\n */\r\nfunction createWebHistory(base) {\r\n base = normalizeBase(base);\r\n const historyNavigation = useHistoryStateNavigation(base);\r\n const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\r\n function go(delta, triggerListeners = true) {\r\n if (!triggerListeners)\r\n historyListeners.pauseListeners();\r\n history.go(delta);\r\n }\r\n const routerHistory = assign({\r\n // it's overridden right after\r\n location: '',\r\n base,\r\n go,\r\n createHref: createHref.bind(null, base),\r\n }, historyNavigation, historyListeners);\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => historyNavigation.location.value,\r\n });\r\n Object.defineProperty(routerHistory, 'state', {\r\n enumerable: true,\r\n get: () => historyNavigation.state.value,\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\r\n * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\r\n *\r\n * @param base - Base applied to all urls, defaults to '/'\r\n * @returns a history object that can be passed to the router constructor\r\n */\r\nfunction createMemoryHistory(base = '') {\r\n let listeners = [];\r\n let queue = [START];\r\n let position = 0;\r\n base = normalizeBase(base);\r\n function setLocation(location) {\r\n position++;\r\n if (position === queue.length) {\r\n // we are at the end, we can simply append a new entry\r\n queue.push(location);\r\n }\r\n else {\r\n // we are in the middle, we remove everything from here in the queue\r\n queue.splice(position);\r\n queue.push(location);\r\n }\r\n }\r\n function triggerListeners(to, from, { direction, delta }) {\r\n const info = {\r\n direction,\r\n delta,\r\n type: NavigationType.pop,\r\n };\r\n for (const callback of listeners) {\r\n callback(to, from, info);\r\n }\r\n }\r\n const routerHistory = {\r\n // rewritten by Object.defineProperty\r\n location: START,\r\n // TODO: should be kept in queue\r\n state: {},\r\n base,\r\n createHref: createHref.bind(null, base),\r\n replace(to) {\r\n // remove current entry and decrement position\r\n queue.splice(position--, 1);\r\n setLocation(to);\r\n },\r\n push(to, data) {\r\n setLocation(to);\r\n },\r\n listen(callback) {\r\n listeners.push(callback);\r\n return () => {\r\n const index = listeners.indexOf(callback);\r\n if (index > -1)\r\n listeners.splice(index, 1);\r\n };\r\n },\r\n destroy() {\r\n listeners = [];\r\n queue = [START];\r\n position = 0;\r\n },\r\n go(delta, shouldTrigger = true) {\r\n const from = this.location;\r\n const direction = \r\n // we are considering delta === 0 going forward, but in abstract mode\r\n // using 0 for the delta doesn't make sense like it does in html5 where\r\n // it reloads the page\r\n delta < 0 ? NavigationDirection.back : NavigationDirection.forward;\r\n position = Math.max(0, Math.min(position + delta, queue.length - 1));\r\n if (shouldTrigger) {\r\n triggerListeners(this.location, from, {\r\n direction,\r\n delta,\r\n });\r\n }\r\n },\r\n };\r\n Object.defineProperty(routerHistory, 'location', {\r\n enumerable: true,\r\n get: () => queue[position],\r\n });\r\n return routerHistory;\r\n}\n\n/**\r\n * Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to\r\n * handle any URL is not possible.\r\n *\r\n * @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `<base>` tag\r\n * in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState()\r\n * calls**, meaning that if you use a `<base>` tag, it's `href` value **has to match this parameter** (ignoring anything\r\n * after the `#`).\r\n *\r\n * @example\r\n * ```js\r\n * // at https://example.com/folder\r\n * createWebHashHistory() // gives a url of `https://example.com/folder#`\r\n * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\r\n * // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\r\n * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\r\n * // you should avoid doing this because it changes the original url and breaks copying urls\r\n * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\r\n *\r\n * // at file:///usr/etc/folder/index.html\r\n * // for locations with no `host`, the base is ignored\r\n * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\r\n * ```\r\n */\r\nfunction createWebHashHistory(base) {\r\n // Make sure this implementation is fine in terms of encoding, specially for IE11\r\n // for `file://`, directly use the pathname and ignore the base\r\n // location.pathname contains an initial `/` even at the root: `https://example.com`\r\n base = location.host ? base || location.pathname + location.search : '';\r\n // allow the user to provide a `#` in the middle: `/base/#/app`\r\n if (!base.includes('#'))\r\n base += '#';\r\n if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) {\r\n warn(`A hash base must end with a \"#\":\\n\"${base}\" should be \"${base.replace(/#.*$/, '#')}\".`);\r\n }\r\n return createWebHistory(base);\r\n}\n\nfunction isRouteLocation(route) {\r\n return typeof route === 'string' || (route && typeof route === 'object');\r\n}\r\nfunction isRouteName(name) {\r\n return typeof name === 'string' || typeof name === 'symbol';\r\n}\n\n/**\r\n * Initial route location where the router is. Can be used in navigation guards\r\n * to differentiate the initial navigation.\r\n *\r\n * @example\r\n * ```js\r\n * import { START_LOCATION } from 'vue-router'\r\n *\r\n * router.beforeEach((to, from) => {\r\n * if (from === START_LOCATION) {\r\n * // initial navigation\r\n * }\r\n * })\r\n * ```\r\n */\r\nconst START_LOCATION_NORMALIZED = {\r\n path: '/',\r\n name: undefined,\r\n params: {},\r\n query: {},\r\n hash: '',\r\n fullPath: '/',\r\n matched: [],\r\n meta: {},\r\n redirectedFrom: undefined,\r\n};\n\nconst NavigationFailureSymbol = Symbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : '');\r\n/**\r\n * Enumeration with all possible types for navigation failures. Can be passed to\r\n * {@link isNavigationFailure} to check for specific failures.\r\n */\r\nvar NavigationFailureType;\r\n(function (NavigationFailureType) {\r\n /**\r\n * An aborted navigation is a navigation that failed because a navigation\r\n * guard returned `false` or called `next(false)`\r\n */\r\n NavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\r\n /**\r\n * A cancelled navigation is a navigation that failed because a more recent\r\n * navigation finished started (not necessarily finished).\r\n */\r\n NavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\r\n /**\r\n * A duplicated navigation is a navigation that failed because it was\r\n * initiated while already being at the exact same location.\r\n */\r\n NavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\r\n})(NavigationFailureType || (NavigationFailureType = {}));\r\n// DEV only debug messages\r\nconst ErrorTypeMessages = {\r\n [1 /* ErrorTypes.MATCHER_NOT_FOUND */]({ location, currentLocation }) {\r\n return `No match for\\n ${JSON.stringify(location)}${currentLocation\r\n ? '\\nwhile being at\\n' + JSON.stringify(currentLocation)\r\n : ''}`;\r\n },\r\n [2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */]({ from, to, }) {\r\n return `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\r\n },\r\n [4 /* ErrorTypes.NAVIGATION_ABORTED */]({ from, to }) {\r\n return `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\r\n },\r\n [8 /* ErrorTypes.NAVIGATION_CANCELLED */]({ from, to }) {\r\n return `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\r\n },\r\n [16 /* ErrorTypes.NAVIGATION_DUPLICATED */]({ from, to }) {\r\n return `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\r\n },\r\n};\r\nfunction createRouterError(type, params) {\r\n // keep full error messages in cjs versions\r\n if ((process.env.NODE_ENV !== 'production') || !true) {\r\n return assign(new Error(ErrorTypeMessages[type](params)), {\r\n type,\r\n [NavigationFailureSymbol]: true,\r\n }, params);\r\n }\r\n else {\r\n return assign(new Error(), {\r\n type,\r\n [NavigationFailureSymbol]: true,\r\n }, params);\r\n }\r\n}\r\nfunction isNavigationFailure(error, type) {\r\n return (error instanceof Error &&\r\n NavigationFailureSymbol in error &&\r\n (type == null || !!(error.type & type)));\r\n}\r\nconst propertiesToLog = ['params', 'query', 'hash'];\r\nfunction stringifyRoute(to) {\r\n if (typeof to === 'string')\r\n return to;\r\n if ('path' in to)\r\n return to.path;\r\n const location = {};\r\n for (const key of propertiesToLog) {\r\n if (key in to)\r\n location[key] = to[key];\r\n }\r\n return JSON.stringify(location, null, 2);\r\n}\n\n// default pattern for a param: non-greedy everything but /\r\nconst BASE_PARAM_PATTERN = '[^/]+?';\r\nconst BASE_PATH_PARSER_OPTIONS = {\r\n sensitive: false,\r\n strict: false,\r\n start: true,\r\n end: true,\r\n};\r\n// Special Regex characters that must be escaped in static tokens\r\nconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\r\n/**\r\n * Creates a path parser from an array of Segments (a segment is an array of Tokens)\r\n *\r\n * @param segments - array of segments returned by tokenizePath\r\n * @param extraOptions - optional options for the regexp\r\n * @returns a PathParser\r\n */\r\nfunction tokensToParser(segments, extraOptions) {\r\n const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\r\n // the amount of scores is the same as the length of segments except for the root segment \"/\"\r\n const score = [];\r\n // the regexp as a string\r\n let pattern = options.start ? '^' : '';\r\n // extracted keys\r\n const keys = [];\r\n for (const segment of segments) {\r\n // the root segment needs special treatment\r\n const segmentScores = segment.length ? [] : [90 /* PathScore.Root */];\r\n // allow trailing slash\r\n if (options.strict && !segment.length)\r\n pattern += '/';\r\n for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\r\n const token = segment[tokenIndex];\r\n // resets the score if we are inside a sub-segment /:a-other-:b\r\n let subSegmentScore = 40 /* PathScore.Segment */ +\r\n (options.sensitive ? 0.25 /* PathScore.BonusCaseSensitive */ : 0);\r\n if (token.type === 0 /* TokenType.Static */) {\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n pattern += '/';\r\n pattern += token.value.replace(REGEX_CHARS_RE, '\\\\$&');\r\n subSegmentScore += 40 /* PathScore.Static */;\r\n }\r\n else if (token.type === 1 /* TokenType.Param */) {\r\n const { value, repeatable, optional, regexp } = token;\r\n keys.push({\r\n name: value,\r\n repeatable,\r\n optional,\r\n });\r\n const re = regexp ? regexp : BASE_PARAM_PATTERN;\r\n // the user provided a custom regexp /:id(\\\\d+)\r\n if (re !== BASE_PARAM_PATTERN) {\r\n subSegmentScore += 10 /* PathScore.BonusCustomRegExp */;\r\n // make sure the regexp is valid before using it\r\n try {\r\n new RegExp(`(${re})`);\r\n }\r\n catch (err) {\r\n throw new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` +\r\n err.message);\r\n }\r\n }\r\n // when we repeat we must take care of the repeating leading slash\r\n let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\r\n // prepend the slash if we are starting a new segment\r\n if (!tokenIndex)\r\n subPattern =\r\n // avoid an optional / if there are more segments e.g. /:p?-static\r\n // or /:p?-:p2\r\n optional && segment.length < 2\r\n ? `(?:/${subPattern})`\r\n : '/' + subPattern;\r\n if (optional)\r\n subPattern += '?';\r\n pattern += subPattern;\r\n subSegmentScore += 20 /* PathScore.Dynamic */;\r\n if (optional)\r\n subSegmentScore += -8 /* PathScore.BonusOptional */;\r\n if (repeatable)\r\n subSegmentScore += -20 /* PathScore.BonusRepeatable */;\r\n if (re === '.*')\r\n subSegmentScore += -50 /* PathScore.BonusWildcard */;\r\n }\r\n segmentScores.push(subSegmentScore);\r\n }\r\n // an empty array like /home/ -> [[{home}], []]\r\n // if (!segment.length) pattern += '/'\r\n score.push(segmentScores);\r\n }\r\n // only apply the strict bonus to the last score\r\n if (options.strict && options.end) {\r\n const i = score.length - 1;\r\n score[i][score[i].length - 1] += 0.7000000000000001 /* PathScore.BonusStrict */;\r\n }\r\n // TODO: dev only warn double trailing slash\r\n if (!options.strict)\r\n pattern += '/?';\r\n if (options.end)\r\n pattern += '$';\r\n // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else\r\n else if (options.strict)\r\n pattern += '(?:/|$)';\r\n const re = new RegExp(pattern, options.sensitive ? '' : 'i');\r\n function parse(path) {\r\n const match = path.match(re);\r\n const params = {};\r\n if (!match)\r\n return null;\r\n for (let i = 1; i < match.length; i++) {\r\n const value = match[i] || '';\r\n const key = keys[i - 1];\r\n params[key.name] = value && key.repeatable ? value.split('/') : value;\r\n }\r\n return params;\r\n }\r\n function stringify(params) {\r\n let path = '';\r\n // for optional parameters to allow to be empty\r\n let avoidDuplicatedSlash = false;\r\n for (const segment of segments) {\r\n if (!avoidDuplicatedSlash || !path.endsWith('/'))\r\n path += '/';\r\n avoidDuplicatedSlash = false;\r\n for (const token of segment) {\r\n if (token.type === 0 /* TokenType.Static */) {\r\n path += token.value;\r\n }\r\n else if (token.type === 1 /* TokenType.Param */) {\r\n const { value, repeatable, optional } = token;\r\n const param = value in params ? params[value] : '';\r\n if (isArray(param) && !repeatable) {\r\n throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\r\n }\r\n const text = isArray(param)\r\n ? param.join('/')\r\n : param;\r\n if (!text) {\r\n if (optional) {\r\n // if we have more than one optional param like /:a?-static we don't need to care about the optional param\r\n if (segment.length < 2) {\r\n // remove the last slash as we could be at the end\r\n if (path.endsWith('/'))\r\n path = path.slice(0, -1);\r\n // do not append a slash on the next iteration\r\n else\r\n avoidDuplicatedSlash = true;\r\n }\r\n }\r\n else\r\n throw new Error(`Missing required param \"${value}\"`);\r\n }\r\n path += text;\r\n }\r\n }\r\n }\r\n // avoid empty path when we have multiple optional params\r\n return path || '/';\r\n }\r\n return {\r\n re,\r\n score,\r\n keys,\r\n parse,\r\n stringify,\r\n };\r\n}\r\n/**\r\n * Compares an array of numbers as used in PathParser.score and returns a\r\n * number. This function can be used to `sort` an array\r\n *\r\n * @param a - first array of numbers\r\n * @param b - second array of numbers\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n * should be sorted first\r\n */\r\nfunction compareScoreArray(a, b) {\r\n let i = 0;\r\n while (i < a.length && i < b.length) {\r\n const diff = b[i] - a[i];\r\n // only keep going if diff === 0\r\n if (diff)\r\n return diff;\r\n i++;\r\n }\r\n // if the last subsegment was Static, the shorter segments should be sorted first\r\n // otherwise sort the longest segment first\r\n if (a.length < b.length) {\r\n return a.length === 1 && a[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\r\n ? -1\r\n : 1;\r\n }\r\n else if (a.length > b.length) {\r\n return b.length === 1 && b[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */\r\n ? 1\r\n : -1;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * Compare function that can be used with `sort` to sort an array of PathParser\r\n *\r\n * @param a - first PathParser\r\n * @param b - second PathParser\r\n * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\r\n */\r\nfunction comparePathParserScore(a, b) {\r\n let i = 0;\r\n const aScore = a.score;\r\n const bScore = b.score;\r\n while (i < aScore.length && i < bScore.length) {\r\n const comp = compareScoreArray(aScore[i], bScore[i]);\r\n // do not return if both are equal\r\n if (comp)\r\n return comp;\r\n i++;\r\n }\r\n if (Math.abs(bScore.length - aScore.length) === 1) {\r\n if (isLastScoreNegative(aScore))\r\n return 1;\r\n if (isLastScoreNegative(bScore))\r\n return -1;\r\n }\r\n // if a and b share the same score entries but b has more, sort b first\r\n return bScore.length - aScore.length;\r\n // this is the ternary version\r\n // return aScore.length < bScore.length\r\n // ? 1\r\n // : aScore.length > bScore.length\r\n // ? -1\r\n // : 0\r\n}\r\n/**\r\n * This allows detecting splats at the end of a path: /home/:id(.*)*\r\n *\r\n * @param score - score to check\r\n * @returns true if the last entry is negative\r\n */\r\nfunction isLastScoreNegative(score) {\r\n const last = score[score.length - 1];\r\n return score.length > 0 && last[last.length - 1] < 0;\r\n}\n\nconst ROOT_TOKEN = {\r\n type: 0 /* TokenType.Static */,\r\n value: '',\r\n};\r\nconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\r\n// After some profiling, the cache seems to be unnecessary because tokenizePath\r\n// (the slowest part of adding a route) is very fast\r\n// const tokenCache = new Map<string, Token[][]>()\r\nfunction tokenizePath(path) {\r\n if (!path)\r\n return [[]];\r\n if (path === '/')\r\n return [[ROOT_TOKEN]];\r\n if (!path.startsWith('/')) {\r\n throw new Error((process.env.NODE_ENV !== 'production')\r\n ? `Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`\r\n : `Invalid path \"${path}\"`);\r\n }\r\n // if (tokenCache.has(path)) return tokenCache.get(path)!\r\n function crash(message) {\r\n throw new Error(`ERR (${state})/\"${buffer}\": ${message}`);\r\n }\r\n let state = 0 /* TokenizerState.Static */;\r\n let previousState = state;\r\n const tokens = [];\r\n // the segment will always be valid because we get into the initial state\r\n // with the leading /\r\n let segment;\r\n function finalizeSegment() {\r\n if (segment)\r\n tokens.push(segment);\r\n segment = [];\r\n }\r\n // index on the path\r\n let i = 0;\r\n // char at index\r\n let char;\r\n // buffer of the value read\r\n let buffer = '';\r\n // custom regexp for a param\r\n let customRe = '';\r\n function consumeBuffer() {\r\n if (!buffer)\r\n return;\r\n if (state === 0 /* TokenizerState.Static */) {\r\n segment.push({\r\n type: 0 /* TokenType.Static */,\r\n value: buffer,\r\n });\r\n }\r\n else if (state === 1 /* TokenizerState.Param */ ||\r\n state === 2 /* TokenizerState.ParamRegExp */ ||\r\n state === 3 /* TokenizerState.ParamRegExpEnd */) {\r\n if (segment.length > 1 && (char === '*' || char === '+'))\r\n crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\r\n segment.push({\r\n type: 1 /* TokenType.Param */,\r\n value: buffer,\r\n regexp: customRe,\r\n repeatable: char === '*' || char === '+',\r\n optional: char === '*' || char === '?',\r\n });\r\n }\r\n else {\r\n crash('Invalid state to consume buffer');\r\n }\r\n buffer = '';\r\n }\r\n function addCharToBuffer() {\r\n buffer += char;\r\n }\r\n while (i < path.length) {\r\n char = path[i++];\r\n if (char === '\\\\' && state !== 2 /* TokenizerState.ParamRegExp */) {\r\n previousState = state;\r\n state = 4 /* TokenizerState.EscapeNext */;\r\n continue;\r\n }\r\n switch (state) {\r\n case 0 /* TokenizerState.Static */:\r\n if (char === '/') {\r\n if (buffer) {\r\n consumeBuffer();\r\n }\r\n finalizeSegment();\r\n }\r\n else if (char === ':') {\r\n consumeBuffer();\r\n state = 1 /* TokenizerState.Param */;\r\n }\r\n else {\r\n addCharToBuffer();\r\n }\r\n break;\r\n case 4 /* TokenizerState.EscapeNext */:\r\n addCharToBuffer();\r\n state = previousState;\r\n break;\r\n case 1 /* TokenizerState.Param */:\r\n if (char === '(') {\r\n state = 2 /* TokenizerState.ParamRegExp */;\r\n }\r\n else if (VALID_PARAM_RE.test(char)) {\r\n addCharToBuffer();\r\n }\r\n else {\r\n consumeBuffer();\r\n state = 0 /* TokenizerState.Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n }\r\n break;\r\n case 2 /* TokenizerState.ParamRegExp */:\r\n // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix)\r\n // it already works by escaping the closing )\r\n // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB#\r\n // is this really something people need since you can also write\r\n // /prefix_:p()_suffix\r\n if (char === ')') {\r\n // handle the escaped )\r\n if (customRe[customRe.length - 1] == '\\\\')\r\n customRe = customRe.slice(0, -1) + char;\r\n else\r\n state = 3 /* TokenizerState.ParamRegExpEnd */;\r\n }\r\n else {\r\n customRe += char;\r\n }\r\n break;\r\n case 3 /* TokenizerState.ParamRegExpEnd */:\r\n // same as finalizing a param\r\n consumeBuffer();\r\n state = 0 /* TokenizerState.Static */;\r\n // go back one character if we were not modifying\r\n if (char !== '*' && char !== '?' && char !== '+')\r\n i--;\r\n customRe = '';\r\n break;\r\n default:\r\n crash('Unknown state');\r\n break;\r\n }\r\n }\r\n if (state === 2 /* TokenizerState.ParamRegExp */)\r\n crash(`Unfinished custom RegExp for param \"${buffer}\"`);\r\n consumeBuffer();\r\n finalizeSegment();\r\n // tokenCache.set(path, tokens)\r\n return tokens;\r\n}\n\nfunction createRouteRecordMatcher(record, parent, options) {\r\n const parser = tokensToParser(tokenizePath(record.path), options);\r\n // warn against params with the same name\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const existingKeys = new Set();\r\n for (const key of parser.keys) {\r\n if (existingKeys.has(key.name))\r\n warn(`Found duplicated params with name \"${key.name}\" for path \"${record.path}\". Only the last one will be available on \"$route.params\".`);\r\n existingKeys.add(key.name);\r\n }\r\n }\r\n const matcher = assign(parser, {\r\n record,\r\n parent,\r\n // these needs to be populated by the parent\r\n children: [],\r\n alias: [],\r\n });\r\n if (parent) {\r\n // both are aliases or both are not aliases\r\n // we don't want to mix them because the order is used when\r\n // passing originalRecord in Matcher.addRoute\r\n if (!matcher.record.aliasOf === !parent.record.aliasOf)\r\n parent.children.push(matcher);\r\n }\r\n return matcher;\r\n}\n\n/**\r\n * Creates a Router Matcher.\r\n *\r\n * @internal\r\n * @param routes - array of initial routes\r\n * @param globalOptions - global route options\r\n */\r\nfunction createRouterMatcher(routes, globalOptions) {\r\n // normalized ordered array of matchers\r\n const matchers = [];\r\n const matcherMap = new Map();\r\n globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions);\r\n function getRecordMatcher(name) {\r\n return matcherMap.get(name);\r\n }\r\n function addRoute(record, parent, originalRecord) {\r\n // used later on to remove by name\r\n const isRootAdd = !originalRecord;\r\n const mainNormalizedRecord = normalizeRouteRecord(record);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent);\r\n }\r\n // we might be the child of an alias\r\n mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\r\n const options = mergeOptions(globalOptions, record);\r\n // generate an array of records to correctly handle aliases\r\n const normalizedRecords = [\r\n mainNormalizedRecord,\r\n ];\r\n if ('alias' in record) {\r\n const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias;\r\n for (const alias of aliases) {\r\n normalizedRecords.push(assign({}, mainNormalizedRecord, {\r\n // this allows us to hold a copy of the `components` option\r\n // so that async components cache is hold on the original record\r\n components: originalRecord\r\n ? originalRecord.record.components\r\n : mainNormalizedRecord.components,\r\n path: alias,\r\n // we might be the child of an alias\r\n aliasOf: originalRecord\r\n ? originalRecord.record\r\n : mainNormalizedRecord,\r\n // the aliases are always of the same kind as the original since they\r\n // are defined on the same record\r\n }));\r\n }\r\n }\r\n let matcher;\r\n let originalMatcher;\r\n for (const normalizedRecord of normalizedRecords) {\r\n const { path } = normalizedRecord;\r\n // Build up the path for nested routes if the child isn't an absolute\r\n // route. Only add the / delimiter if the child path isn't empty and if the\r\n // parent path doesn't have a trailing slash\r\n if (parent && path[0] !== '/') {\r\n const parentPath = parent.record.path;\r\n const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/';\r\n normalizedRecord.path =\r\n parent.record.path + (path && connectingSlash + path);\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') {\r\n throw new Error('Catch all routes (\"*\") must now be defined using a param with a custom regexp.\\n' +\r\n 'See more at https://next.router.vuejs.org/guide/migration/#removed-star-or-catch-all-routes.');\r\n }\r\n // create the object beforehand, so it can be passed to children\r\n matcher = createRouteRecordMatcher(normalizedRecord, parent, options);\r\n if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/')\r\n checkMissingParamsInAbsolutePath(matcher, parent);\r\n // if we are an alias we must tell the original record that we exist,\r\n // so we can be removed\r\n if (originalRecord) {\r\n originalRecord.alias.push(matcher);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n checkSameParams(originalRecord, matcher);\r\n }\r\n }\r\n else {\r\n // otherwise, the first record is the original and others are aliases\r\n originalMatcher = originalMatcher || matcher;\r\n if (originalMatcher !== matcher)\r\n originalMatcher.alias.push(matcher);\r\n // remove the route if named and only for the top record (avoid in nested calls)\r\n // this works because the original record is the first one\r\n if (isRootAdd && record.name && !isAliasRecord(matcher))\r\n removeRoute(record.name);\r\n }\r\n if (mainNormalizedRecord.children) {\r\n const children = mainNormalizedRecord.children;\r\n for (let i = 0; i < children.length; i++) {\r\n addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\r\n }\r\n }\r\n // if there was no original record, then the first one was not an alias and all\r\n // other aliases (if any) need to reference this record when adding children\r\n originalRecord = originalRecord || matcher;\r\n // TODO: add normalized records for more flexibility\r\n // if (parent && isAliasRecord(originalRecord)) {\r\n // parent.children.push(originalRecord)\r\n // }\r\n // Avoid adding a record that doesn't display anything. This allows passing through records without a component to\r\n // not be reached and pass through the catch all route\r\n if ((matcher.record.components &&\r\n Object.keys(matcher.record.components).length) ||\r\n matcher.record.name ||\r\n matcher.record.redirect) {\r\n insertMatcher(matcher);\r\n }\r\n }\r\n return originalMatcher\r\n ? () => {\r\n // since other matchers are aliases, they should be removed by the original matcher\r\n removeRoute(originalMatcher);\r\n }\r\n : noop;\r\n }\r\n function removeRoute(matcherRef) {\r\n if (isRouteName(matcherRef)) {\r\n const matcher = matcherMap.get(matcherRef);\r\n if (matcher) {\r\n matcherMap.delete(matcherRef);\r\n matchers.splice(matchers.indexOf(matcher), 1);\r\n matcher.children.forEach(removeRoute);\r\n matcher.alias.forEach(removeRoute);\r\n }\r\n }\r\n else {\r\n const index = matchers.indexOf(matcherRef);\r\n if (index > -1) {\r\n matchers.splice(index, 1);\r\n if (matcherRef.record.name)\r\n matcherMap.delete(matcherRef.record.name);\r\n matcherRef.children.forEach(removeRoute);\r\n matcherRef.alias.forEach(removeRoute);\r\n }\r\n }\r\n }\r\n function getRoutes() {\r\n return matchers;\r\n }\r\n function insertMatcher(matcher) {\r\n let i = 0;\r\n while (i < matchers.length &&\r\n comparePathParserScore(matcher, matchers[i]) >= 0 &&\r\n // Adding children with empty path should still appear before the parent\r\n // https://github.com/vuejs/router/issues/1124\r\n (matcher.record.path !== matchers[i].record.path ||\r\n !isRecordChildOf(matcher, matchers[i])))\r\n i++;\r\n matchers.splice(i, 0, matcher);\r\n // only add the original record to the name map\r\n if (matcher.record.name && !isAliasRecord(matcher))\r\n matcherMap.set(matcher.record.name, matcher);\r\n }\r\n function resolve(location, currentLocation) {\r\n let matcher;\r\n let params = {};\r\n let path;\r\n let name;\r\n if ('name' in location && location.name) {\r\n matcher = matcherMap.get(location.name);\r\n if (!matcher)\r\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\r\n location,\r\n });\r\n // warn if the user is passing invalid params so they can debug it better when they get removed\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const invalidParams = Object.keys(location.params || {}).filter(paramName => !matcher.keys.find(k => k.name === paramName));\r\n if (invalidParams.length) {\r\n warn(`Discarded invalid param(s) \"${invalidParams.join('\", \"')}\" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`);\r\n }\r\n }\r\n name = matcher.record.name;\r\n params = assign(\r\n // paramsFromLocation is a new object\r\n paramsFromLocation(currentLocation.params, \r\n // only keep params that exist in the resolved location\r\n // TODO: only keep optional params coming from a parent record\r\n matcher.keys.filter(k => !k.optional).map(k => k.name)), \r\n // discard any existing params in the current location that do not exist here\r\n // #1497 this ensures better active/exact matching\r\n location.params &&\r\n paramsFromLocation(location.params, matcher.keys.map(k => k.name)));\r\n // throws if cannot be stringified\r\n path = matcher.stringify(params);\r\n }\r\n else if ('path' in location) {\r\n // no need to resolve the path with the matcher as it was provided\r\n // this also allows the user to control the encoding\r\n path = location.path;\r\n if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) {\r\n warn(`The Matcher cannot resolve relative paths but received \"${path}\". Unless you directly called \\`matcher.resolve(\"${path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/router.`);\r\n }\r\n matcher = matchers.find(m => m.re.test(path));\r\n // matcher should have a value after the loop\r\n if (matcher) {\r\n // we know the matcher works because we tested the regexp\r\n params = matcher.parse(path);\r\n name = matcher.record.name;\r\n }\r\n // location is a relative path\r\n }\r\n else {\r\n // match by name or path of current route\r\n matcher = currentLocation.name\r\n ? matcherMap.get(currentLocation.name)\r\n : matchers.find(m => m.re.test(currentLocation.path));\r\n if (!matcher)\r\n throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, {\r\n location,\r\n currentLocation,\r\n });\r\n name = matcher.record.name;\r\n // since we are navigating to the same location, we don't need to pick the\r\n // params like when `name` is provided\r\n params = assign({}, currentLocation.params, location.params);\r\n path = matcher.stringify(params);\r\n }\r\n const matched = [];\r\n let parentMatcher = matcher;\r\n while (parentMatcher) {\r\n // reversed order so parents are at the beginning\r\n matched.unshift(parentMatcher.record);\r\n parentMatcher = parentMatcher.parent;\r\n }\r\n return {\r\n name,\r\n path,\r\n params,\r\n matched,\r\n meta: mergeMetaFields(matched),\r\n };\r\n }\r\n // add initial routes\r\n routes.forEach(route => addRoute(route));\r\n return { addRoute, resolve, removeRoute, getRoutes, getRecordMatcher };\r\n}\r\nfunction paramsFromLocation(params, keys) {\r\n const newParams = {};\r\n for (const key of keys) {\r\n if (key in params)\r\n newParams[key] = params[key];\r\n }\r\n return newParams;\r\n}\r\n/**\r\n * Normalizes a RouteRecordRaw. Creates a copy\r\n *\r\n * @param record\r\n * @returns the normalized version\r\n */\r\nfunction normalizeRouteRecord(record) {\r\n return {\r\n path: record.path,\r\n redirect: record.redirect,\r\n name: record.name,\r\n meta: record.meta || {},\r\n aliasOf: undefined,\r\n beforeEnter: record.beforeEnter,\r\n props: normalizeRecordProps(record),\r\n children: record.children || [],\r\n instances: {},\r\n leaveGuards: new Set(),\r\n updateGuards: new Set(),\r\n enterCallbacks: {},\r\n components: 'components' in record\r\n ? record.components || null\r\n : record.component && { default: record.component },\r\n };\r\n}\r\n/**\r\n * Normalize the optional `props` in a record to always be an object similar to\r\n * components. Also accept a boolean for components.\r\n * @param record\r\n */\r\nfunction normalizeRecordProps(record) {\r\n const propsObject = {};\r\n // props does not exist on redirect records, but we can set false directly\r\n const props = record.props || false;\r\n if ('component' in record) {\r\n propsObject.default = props;\r\n }\r\n else {\r\n // NOTE: we could also allow a function to be applied to every component.\r\n // Would need user feedback for use cases\r\n for (const name in record.components)\r\n propsObject[name] = typeof props === 'boolean' ? props : props[name];\r\n }\r\n return propsObject;\r\n}\r\n/**\r\n * Checks if a record or any of its parent is an alias\r\n * @param record\r\n */\r\nfunction isAliasRecord(record) {\r\n while (record) {\r\n if (record.record.aliasOf)\r\n return true;\r\n record = record.parent;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Merge meta fields of an array of records\r\n *\r\n * @param matched - array of matched records\r\n */\r\nfunction mergeMetaFields(matched) {\r\n return matched.reduce((meta, record) => assign(meta, record.meta), {});\r\n}\r\nfunction mergeOptions(defaults, partialOptions) {\r\n const options = {};\r\n for (const key in defaults) {\r\n options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\r\n }\r\n return options;\r\n}\r\nfunction isSameParam(a, b) {\r\n return (a.name === b.name &&\r\n a.optional === b.optional &&\r\n a.repeatable === b.repeatable);\r\n}\r\n/**\r\n * Check if a path and its alias have the same required params\r\n *\r\n * @param a - original record\r\n * @param b - alias record\r\n */\r\nfunction checkSameParams(a, b) {\r\n for (const key of a.keys) {\r\n if (!key.optional && !b.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\r\n }\r\n for (const key of b.keys) {\r\n if (!key.optional && !a.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Alias \"${b.record.path}\" and the original record: \"${a.record.path}\" must have the exact same param named \"${key.name}\"`);\r\n }\r\n}\r\n/**\r\n * A route with a name and a child with an empty path without a name should warn when adding the route\r\n *\r\n * @param mainNormalizedRecord - RouteRecordNormalized\r\n * @param parent - RouteRecordMatcher\r\n */\r\nfunction checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) {\r\n if (parent &&\r\n parent.record.name &&\r\n !mainNormalizedRecord.name &&\r\n !mainNormalizedRecord.path) {\r\n warn(`The route named \"${String(parent.record.name)}\" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`);\r\n }\r\n}\r\nfunction checkMissingParamsInAbsolutePath(record, parent) {\r\n for (const key of parent.keys) {\r\n if (!record.keys.find(isSameParam.bind(null, key)))\r\n return warn(`Absolute path \"${record.record.path}\" must have the exact same param named \"${key.name}\" as its parent \"${parent.record.path}\".`);\r\n }\r\n}\r\nfunction isRecordChildOf(record, parent) {\r\n return parent.children.some(child => child === record || isRecordChildOf(record, child));\r\n}\n\n/**\r\n * Encoding Rules ␣ = Space Path: ␣ \" < > # ? { } Query: ␣ \" < > # & = Hash: ␣ \"\r\n * < > `\r\n *\r\n * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\r\n * defines some extra characters to be encoded. Most browsers do not encode them\r\n * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\r\n * also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`)\r\n * plus `-._~`. This extra safety should be applied to query by patching the\r\n * string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\r\n * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\r\n * into a `/` if directly typed in. The _backtick_ (`````) should also be\r\n * encoded everywhere because some browsers like FF encode it when directly\r\n * written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\r\n */\r\n// const EXTRA_RESERVED_RE = /[!'()*]/g\r\n// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16)\r\nconst HASH_RE = /#/g; // %23\r\nconst AMPERSAND_RE = /&/g; // %26\r\nconst SLASH_RE = /\\//g; // %2F\r\nconst EQUAL_RE = /=/g; // %3D\r\nconst IM_RE = /\\?/g; // %3F\r\nconst PLUS_RE = /\\+/g; // %2B\r\n/**\r\n * NOTE: It's not clear to me if we should encode the + symbol in queries, it\r\n * seems to be less flexible than not doing so and I can't find out the legacy\r\n * systems requiring this for regular requests like text/html. In the standard,\r\n * the encoding of the plus character is only mentioned for\r\n * application/x-www-form-urlencoded\r\n * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\r\n * leave the plus character as is in queries. To be more flexible, we allow the\r\n * plus character on the query, but it can also be manually encoded by the user.\r\n *\r\n * Resources:\r\n * - https://url.spec.whatwg.org/#urlencoded-parsing\r\n * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\r\n */\r\nconst ENC_BRACKET_OPEN_RE = /%5B/g; // [\r\nconst ENC_BRACKET_CLOSE_RE = /%5D/g; // ]\r\nconst ENC_CARET_RE = /%5E/g; // ^\r\nconst ENC_BACKTICK_RE = /%60/g; // `\r\nconst ENC_CURLY_OPEN_RE = /%7B/g; // {\r\nconst ENC_PIPE_RE = /%7C/g; // |\r\nconst ENC_CURLY_CLOSE_RE = /%7D/g; // }\r\nconst ENC_SPACE_RE = /%20/g; // }\r\n/**\r\n * Encode characters that need to be encoded on the path, search and hash\r\n * sections of the URL.\r\n *\r\n * @internal\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction commonEncode(text) {\r\n return encodeURI('' + text)\r\n .replace(ENC_PIPE_RE, '|')\r\n .replace(ENC_BRACKET_OPEN_RE, '[')\r\n .replace(ENC_BRACKET_CLOSE_RE, ']');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the hash section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeHash(text) {\r\n return commonEncode(text)\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^');\r\n}\r\n/**\r\n * Encode characters that need to be encoded query values on the query\r\n * section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeQueryValue(text) {\r\n return (commonEncode(text)\r\n // Encode the space as +, encode the + to differentiate it from the space\r\n .replace(PLUS_RE, '%2B')\r\n .replace(ENC_SPACE_RE, '+')\r\n .replace(HASH_RE, '%23')\r\n .replace(AMPERSAND_RE, '%26')\r\n .replace(ENC_BACKTICK_RE, '`')\r\n .replace(ENC_CURLY_OPEN_RE, '{')\r\n .replace(ENC_CURLY_CLOSE_RE, '}')\r\n .replace(ENC_CARET_RE, '^'));\r\n}\r\n/**\r\n * Like `encodeQueryValue` but also encodes the `=` character.\r\n *\r\n * @param text - string to encode\r\n */\r\nfunction encodeQueryKey(text) {\r\n return encodeQueryValue(text).replace(EQUAL_RE, '%3D');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodePath(text) {\r\n return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F');\r\n}\r\n/**\r\n * Encode characters that need to be encoded on the path section of the URL as a\r\n * param. This function encodes everything {@link encodePath} does plus the\r\n * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\r\n * string instead.\r\n *\r\n * @param text - string to encode\r\n * @returns encoded string\r\n */\r\nfunction encodeParam(text) {\r\n return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F');\r\n}\r\n/**\r\n * Decode text using `decodeURIComponent`. Returns the original text if it\r\n * fails.\r\n *\r\n * @param text - string to decode\r\n * @returns decoded string\r\n */\r\nfunction decode(text) {\r\n try {\r\n return decodeURIComponent('' + text);\r\n }\r\n catch (err) {\r\n (process.env.NODE_ENV !== 'production') && warn(`Error decoding \"${text}\". Using original value`);\r\n }\r\n return '' + text;\r\n}\n\n/**\r\n * Transforms a queryString into a {@link LocationQuery} object. Accept both, a\r\n * version with the leading `?` and without Should work as URLSearchParams\r\n\n * @internal\r\n *\r\n * @param search - search string to parse\r\n * @returns a query object\r\n */\r\nfunction parseQuery(search) {\r\n const query = {};\r\n // avoid creating an object with an empty key and empty value\r\n // because of split('&')\r\n if (search === '' || search === '?')\r\n return query;\r\n const hasLeadingIM = search[0] === '?';\r\n const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&');\r\n for (let i = 0; i < searchParams.length; ++i) {\r\n // pre decode the + into space\r\n const searchParam = searchParams[i].replace(PLUS_RE, ' ');\r\n // allow the = character\r\n const eqPos = searchParam.indexOf('=');\r\n const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\r\n const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\r\n if (key in query) {\r\n // an extra variable for ts types\r\n let currentValue = query[key];\r\n if (!isArray(currentValue)) {\r\n currentValue = query[key] = [currentValue];\r\n }\r\n currentValue.push(value);\r\n }\r\n else {\r\n query[key] = value;\r\n }\r\n }\r\n return query;\r\n}\r\n/**\r\n * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\r\n * doesn't prepend a `?`\r\n *\r\n * @internal\r\n *\r\n * @param query - query object to stringify\r\n * @returns string version of the query without the leading `?`\r\n */\r\nfunction stringifyQuery(query) {\r\n let search = '';\r\n for (let key in query) {\r\n const value = query[key];\r\n key = encodeQueryKey(key);\r\n if (value == null) {\r\n // only null adds the value\r\n if (value !== undefined) {\r\n search += (search.length ? '&' : '') + key;\r\n }\r\n continue;\r\n }\r\n // keep null values\r\n const values = isArray(value)\r\n ? value.map(v => v && encodeQueryValue(v))\r\n : [value && encodeQueryValue(value)];\r\n values.forEach(value => {\r\n // skip undefined values in arrays as if they were not present\r\n // smaller code than using filter\r\n if (value !== undefined) {\r\n // only append & with non-empty search\r\n search += (search.length ? '&' : '') + key;\r\n if (value != null)\r\n search += '=' + value;\r\n }\r\n });\r\n }\r\n return search;\r\n}\r\n/**\r\n * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\r\n * numbers into strings, removing keys with an undefined value and replacing\r\n * undefined with null in arrays\r\n *\r\n * @param query - query object to normalize\r\n * @returns a normalized query object\r\n */\r\nfunction normalizeQuery(query) {\r\n const normalizedQuery = {};\r\n for (const key in query) {\r\n const value = query[key];\r\n if (value !== undefined) {\r\n normalizedQuery[key] = isArray(value)\r\n ? value.map(v => (v == null ? null : '' + v))\r\n : value == null\r\n ? value\r\n : '' + value;\r\n }\r\n }\r\n return normalizedQuery;\r\n}\n\n/**\r\n * RouteRecord being rendered by the closest ancestor Router View. Used for\r\n * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\r\n * Location Matched\r\n *\r\n * @internal\r\n */\r\nconst matchedRouteKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : '');\r\n/**\r\n * Allows overriding the router view depth to control which component in\r\n * `matched` is rendered. rvd stands for Router View Depth\r\n *\r\n * @internal\r\n */\r\nconst viewDepthKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : '');\r\n/**\r\n * Allows overriding the router instance returned by `useRouter` in tests. r\r\n * stands for router\r\n *\r\n * @internal\r\n */\r\nconst routerKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router' : '');\r\n/**\r\n * Allows overriding the current route returned by `useRoute` in tests. rl\r\n * stands for route location\r\n *\r\n * @internal\r\n */\r\nconst routeLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'route location' : '');\r\n/**\r\n * Allows overriding the current route used by router-view. Internally this is\r\n * used when the `route` prop is passed.\r\n *\r\n * @internal\r\n */\r\nconst routerViewLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location' : '');\n\n/**\r\n * Create a list of callbacks that can be reset. Used to create before and after navigation guards list\r\n */\r\nfunction useCallbacks() {\r\n let handlers = [];\r\n function add(handler) {\r\n handlers.push(handler);\r\n return () => {\r\n const i = handlers.indexOf(handler);\r\n if (i > -1)\r\n handlers.splice(i, 1);\r\n };\r\n }\r\n function reset() {\r\n handlers = [];\r\n }\r\n return {\r\n add,\r\n list: () => handlers,\r\n reset,\r\n };\r\n}\n\nfunction registerGuard(record, name, guard) {\r\n const removeFromList = () => {\r\n record[name].delete(guard);\r\n };\r\n onUnmounted(removeFromList);\r\n onDeactivated(removeFromList);\r\n onActivated(() => {\r\n record[name].add(guard);\r\n });\r\n record[name].add(guard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the component for the current\r\n * location is about to be left. Similar to {@link beforeRouteLeave} but can be\r\n * used in any component. The guard is removed when the component is unmounted.\r\n *\r\n * @param leaveGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteLeave(leaveGuard) {\r\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = inject(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside a component child of <router-view>. Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'leaveGuards', leaveGuard);\r\n}\r\n/**\r\n * Add a navigation guard that triggers whenever the current location is about\r\n * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\r\n * component. The guard is removed when the component is unmounted.\r\n *\r\n * @param updateGuard - {@link NavigationGuard}\r\n */\r\nfunction onBeforeRouteUpdate(updateGuard) {\r\n if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) {\r\n warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function');\r\n return;\r\n }\r\n const activeRecord = inject(matchedRouteKey, \r\n // to avoid warning\r\n {}).value;\r\n if (!activeRecord) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside a component child of <router-view>. Maybe you called it inside of App.vue?');\r\n return;\r\n }\r\n registerGuard(activeRecord, 'updateGuards', updateGuard);\r\n}\r\nfunction guardToPromiseFn(guard, to, from, record, name) {\r\n // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place\r\n const enterCallbackArray = record &&\r\n // name is defined if record is because of the function overload\r\n (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\r\n return () => new Promise((resolve, reject) => {\r\n const next = (valid) => {\r\n if (valid === false) {\r\n reject(createRouterError(4 /* ErrorTypes.NAVIGATION_ABORTED */, {\r\n from,\r\n to,\r\n }));\r\n }\r\n else if (valid instanceof Error) {\r\n reject(valid);\r\n }\r\n else if (isRouteLocation(valid)) {\r\n reject(createRouterError(2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */, {\r\n from: to,\r\n to: valid,\r\n }));\r\n }\r\n else {\r\n if (enterCallbackArray &&\r\n // since enterCallbackArray is truthy, both record and name also are\r\n record.enterCallbacks[name] === enterCallbackArray &&\r\n typeof valid === 'function') {\r\n enterCallbackArray.push(valid);\r\n }\r\n resolve();\r\n }\r\n };\r\n // wrapping with Promise.resolve allows it to work with both async and sync guards\r\n const guardReturn = guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next);\r\n let guardCall = Promise.resolve(guardReturn);\r\n if (guard.length < 3)\r\n guardCall = guardCall.then(next);\r\n if ((process.env.NODE_ENV !== 'production') && guard.length > 2) {\r\n const message = `The \"next\" callback was never called inside of ${guard.name ? '\"' + guard.name + '\"' : ''}:\\n${guard.toString()}\\n. If you are returning a value instead of calling \"next\", make sure to remove the \"next\" parameter from your function.`;\r\n if (typeof guardReturn === 'object' && 'then' in guardReturn) {\r\n guardCall = guardCall.then(resolvedValue => {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n return Promise.reject(new Error('Invalid navigation guard'));\r\n }\r\n return resolvedValue;\r\n });\r\n }\r\n else if (guardReturn !== undefined) {\r\n // @ts-expect-error: _called is added at canOnlyBeCalledOnce\r\n if (!next._called) {\r\n warn(message);\r\n reject(new Error('Invalid navigation guard'));\r\n return;\r\n }\r\n }\r\n }\r\n guardCall.catch(err => reject(err));\r\n });\r\n}\r\nfunction canOnlyBeCalledOnce(next, to, from) {\r\n let called = 0;\r\n return function () {\r\n if (called++ === 1)\r\n warn(`The \"next\" callback was called more than once in one navigation guard when going from \"${from.fullPath}\" to \"${to.fullPath}\". It should be called exactly one time in each navigation guard. This will fail in production.`);\r\n // @ts-expect-error: we put it in the original one because it's easier to check\r\n next._called = true;\r\n if (called === 1)\r\n next.apply(null, arguments);\r\n };\r\n}\r\nfunction extractComponentsGuards(matched, guardType, to, from) {\r\n const guards = [];\r\n for (const record of matched) {\r\n if ((process.env.NODE_ENV !== 'production') && !record.components && !record.children.length) {\r\n warn(`Record with path \"${record.path}\" is either missing a \"component(s)\"` +\r\n ` or \"children\" property.`);\r\n }\r\n for (const name in record.components) {\r\n let rawComponent = record.components[name];\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (!rawComponent ||\r\n (typeof rawComponent !== 'object' &&\r\n typeof rawComponent !== 'function')) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is not` +\r\n ` a valid component. Received \"${String(rawComponent)}\".`);\r\n // throw to ensure we stop here but warn to ensure the message isn't\r\n // missed by the user\r\n throw new Error('Invalid route component');\r\n }\r\n else if ('then' in rawComponent) {\r\n // warn if user wrote import('/component.vue') instead of () =>\r\n // import('./component.vue')\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a ` +\r\n `Promise instead of a function that returns a Promise. Did you ` +\r\n `write \"import('./MyPage.vue')\" instead of ` +\r\n `\"() => import('./MyPage.vue')\" ? This will break in ` +\r\n `production if not fixed.`);\r\n const promise = rawComponent;\r\n rawComponent = () => promise;\r\n }\r\n else if (rawComponent.__asyncLoader &&\r\n // warn only once per component\r\n !rawComponent.__warnedDefineAsync) {\r\n rawComponent.__warnedDefineAsync = true;\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is defined ` +\r\n `using \"defineAsyncComponent()\". ` +\r\n `Write \"() => import('./MyPage.vue')\" instead of ` +\r\n `\"defineAsyncComponent(() => import('./MyPage.vue'))\".`);\r\n }\r\n }\r\n // skip update and leave guards if the route component is not mounted\r\n if (guardType !== 'beforeRouteEnter' && !record.instances[name])\r\n continue;\r\n if (isRouteComponent(rawComponent)) {\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = rawComponent.__vccOpts || rawComponent;\r\n const guard = options[guardType];\r\n guard && guards.push(guardToPromiseFn(guard, to, from, record, name));\r\n }\r\n else {\r\n // start requesting the chunk already\r\n let componentPromise = rawComponent();\r\n if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) {\r\n warn(`Component \"${name}\" in record with path \"${record.path}\" is a function that does not return a Promise. If you were passing a functional component, make sure to add a \"displayName\" to the component. This will break in production if not fixed.`);\r\n componentPromise = Promise.resolve(componentPromise);\r\n }\r\n guards.push(() => componentPromise.then(resolved => {\r\n if (!resolved)\r\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`));\r\n const resolvedComponent = isESModule(resolved)\r\n ? resolved.default\r\n : resolved;\r\n // replace the function with the resolved component\r\n // cannot be null or undefined because we went into the for loop\r\n record.components[name] = resolvedComponent;\r\n // __vccOpts is added by vue-class-component and contain the regular options\r\n const options = resolvedComponent.__vccOpts || resolvedComponent;\r\n const guard = options[guardType];\r\n return guard && guardToPromiseFn(guard, to, from, record, name)();\r\n }));\r\n }\r\n }\r\n }\r\n return guards;\r\n}\r\n/**\r\n * Allows differentiating lazy components from functional components and vue-class-component\r\n * @internal\r\n *\r\n * @param component\r\n */\r\nfunction isRouteComponent(component) {\r\n return (typeof component === 'object' ||\r\n 'displayName' in component ||\r\n 'props' in component ||\r\n '__vccOpts' in component);\r\n}\r\n/**\r\n * Ensures a route is loaded, so it can be passed as o prop to `<RouterView>`.\r\n *\r\n * @param route - resolved route to load\r\n */\r\nfunction loadRouteLocation(route) {\r\n return route.matched.every(record => record.redirect)\r\n ? Promise.reject(new Error('Cannot load a route that redirects.'))\r\n : Promise.all(route.matched.map(record => record.components &&\r\n Promise.all(Object.keys(record.components).reduce((promises, name) => {\r\n const rawComponent = record.components[name];\r\n if (typeof rawComponent === 'function' &&\r\n !('displayName' in rawComponent)) {\r\n promises.push(rawComponent().then(resolved => {\r\n if (!resolved)\r\n return Promise.reject(new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\". Ensure you passed a function that returns a promise.`));\r\n const resolvedComponent = isESModule(resolved)\r\n ? resolved.default\r\n : resolved;\r\n // replace the function with the resolved component\r\n // cannot be null or undefined because we went into the for loop\r\n record.components[name] = resolvedComponent;\r\n return;\r\n }));\r\n }\r\n return promises;\r\n }, [])))).then(() => route);\r\n}\n\n// TODO: we could allow currentRoute as a prop to expose `isActive` and\r\n// `isExactActive` behavior should go through an RFC\r\nfunction useLink(props) {\r\n const router = inject(routerKey);\r\n const currentRoute = inject(routeLocationKey);\r\n const route = computed(() => router.resolve(unref(props.to)));\r\n const activeRecordIndex = computed(() => {\r\n const { matched } = route.value;\r\n const { length } = matched;\r\n const routeMatched = matched[length - 1];\r\n const currentMatched = currentRoute.matched;\r\n if (!routeMatched || !currentMatched.length)\r\n return -1;\r\n const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\r\n if (index > -1)\r\n return index;\r\n // possible parent record\r\n const parentRecordPath = getOriginalPath(matched[length - 2]);\r\n return (\r\n // we are dealing with nested routes\r\n length > 1 &&\r\n // if the parent and matched route have the same path, this link is\r\n // referring to the empty child. Or we currently are on a different\r\n // child of the same parent\r\n getOriginalPath(routeMatched) === parentRecordPath &&\r\n // avoid comparing the child with its parent\r\n currentMatched[currentMatched.length - 1].path !== parentRecordPath\r\n ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2]))\r\n : index);\r\n });\r\n const isActive = computed(() => activeRecordIndex.value > -1 &&\r\n includesParams(currentRoute.params, route.value.params));\r\n const isExactActive = computed(() => activeRecordIndex.value > -1 &&\r\n activeRecordIndex.value === currentRoute.matched.length - 1 &&\r\n isSameRouteLocationParams(currentRoute.params, route.value.params));\r\n function navigate(e = {}) {\r\n if (guardEvent(e)) {\r\n return router[unref(props.replace) ? 'replace' : 'push'](unref(props.to)\r\n // avoid uncaught errors are they are logged anyway\r\n ).catch(noop);\r\n }\r\n return Promise.resolve();\r\n }\r\n // devtools only\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\r\n const instance = getCurrentInstance();\r\n if (instance) {\r\n const linkContextDevtools = {\r\n route: route.value,\r\n isActive: isActive.value,\r\n isExactActive: isExactActive.value,\r\n };\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools = instance.__vrl_devtools || [];\r\n // @ts-expect-error: this is internal\r\n instance.__vrl_devtools.push(linkContextDevtools);\r\n watchEffect(() => {\r\n linkContextDevtools.route = route.value;\r\n linkContextDevtools.isActive = isActive.value;\r\n linkContextDevtools.isExactActive = isExactActive.value;\r\n }, { flush: 'post' });\r\n }\r\n }\r\n /**\r\n * NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this\r\n */\r\n return {\r\n route,\r\n href: computed(() => route.value.href),\r\n isActive,\r\n isExactActive,\r\n navigate,\r\n };\r\n}\r\nconst RouterLinkImpl = /*#__PURE__*/ defineComponent({\r\n name: 'RouterLink',\r\n compatConfig: { MODE: 3 },\r\n props: {\r\n to: {\r\n type: [String, Object],\r\n required: true,\r\n },\r\n replace: Boolean,\r\n activeClass: String,\r\n // inactiveClass: String,\r\n exactActiveClass: String,\r\n custom: Boolean,\r\n ariaCurrentValue: {\r\n type: String,\r\n default: 'page',\r\n },\r\n },\r\n useLink,\r\n setup(props, { slots }) {\r\n const link = reactive(useLink(props));\r\n const { options } = inject(routerKey);\r\n const elClass = computed(() => ({\r\n [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive,\r\n // [getLinkClass(\r\n // props.inactiveClass,\r\n // options.linkInactiveClass,\r\n // 'router-link-inactive'\r\n // )]: !link.isExactActive,\r\n [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive,\r\n }));\r\n return () => {\r\n const children = slots.default && slots.default(link);\r\n return props.custom\r\n ? children\r\n : h('a', {\r\n 'aria-current': link.isExactActive\r\n ? props.ariaCurrentValue\r\n : null,\r\n href: link.href,\r\n // this would override user added attrs but Vue will still add\r\n // the listener, so we end up triggering both\r\n onClick: link.navigate,\r\n class: elClass.value,\r\n }, children);\r\n };\r\n },\r\n});\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to render a link that triggers a navigation on click.\r\n */\r\nconst RouterLink = RouterLinkImpl;\r\nfunction guardEvent(e) {\r\n // don't redirect with control keys\r\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)\r\n return;\r\n // don't redirect when preventDefault called\r\n if (e.defaultPrevented)\r\n return;\r\n // don't redirect on right click\r\n if (e.button !== undefined && e.button !== 0)\r\n return;\r\n // don't redirect if `target=\"_blank\"`\r\n // @ts-expect-error getAttribute does exist\r\n if (e.currentTarget && e.currentTarget.getAttribute) {\r\n // @ts-expect-error getAttribute exists\r\n const target = e.currentTarget.getAttribute('target');\r\n if (/\\b_blank\\b/i.test(target))\r\n return;\r\n }\r\n // this may be a Weex event which doesn't have this method\r\n if (e.preventDefault)\r\n e.preventDefault();\r\n return true;\r\n}\r\nfunction includesParams(outer, inner) {\r\n for (const key in inner) {\r\n const innerValue = inner[key];\r\n const outerValue = outer[key];\r\n if (typeof innerValue === 'string') {\r\n if (innerValue !== outerValue)\r\n return false;\r\n }\r\n else {\r\n if (!isArray(outerValue) ||\r\n outerValue.length !== innerValue.length ||\r\n innerValue.some((value, i) => value !== outerValue[i]))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Get the original path value of a record by following its aliasOf\r\n * @param record\r\n */\r\nfunction getOriginalPath(record) {\r\n return record ? (record.aliasOf ? record.aliasOf.path : record.path) : '';\r\n}\r\n/**\r\n * Utility class to get the active class based on defaults.\r\n * @param propClass\r\n * @param globalClass\r\n * @param defaultClass\r\n */\r\nconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null\r\n ? propClass\r\n : globalClass != null\r\n ? globalClass\r\n : defaultClass;\n\nconst RouterViewImpl = /*#__PURE__*/ defineComponent({\r\n name: 'RouterView',\r\n // #674 we manually inherit them\r\n inheritAttrs: false,\r\n props: {\r\n name: {\r\n type: String,\r\n default: 'default',\r\n },\r\n route: Object,\r\n },\r\n // Better compat for @vue/compat users\r\n // https://github.com/vuejs/router/issues/1315\r\n compatConfig: { MODE: 3 },\r\n setup(props, { attrs, slots }) {\r\n (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage();\r\n const injectedRoute = inject(routerViewLocationKey);\r\n const routeToDisplay = computed(() => props.route || injectedRoute.value);\r\n const injectedDepth = inject(viewDepthKey, 0);\r\n // The depth changes based on empty components option, which allows passthrough routes e.g. routes with children\r\n // that are used to reuse the `path` property\r\n const depth = computed(() => {\r\n let initialDepth = unref(injectedDepth);\r\n const { matched } = routeToDisplay.value;\r\n let matchedRoute;\r\n while ((matchedRoute = matched[initialDepth]) &&\r\n !matchedRoute.components) {\r\n initialDepth++;\r\n }\r\n return initialDepth;\r\n });\r\n const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]);\r\n provide(viewDepthKey, computed(() => depth.value + 1));\r\n provide(matchedRouteKey, matchedRouteRef);\r\n provide(routerViewLocationKey, routeToDisplay);\r\n const viewRef = ref();\r\n // watch at the same time the component instance, the route record we are\r\n // rendering, and the name\r\n watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => {\r\n // copy reused instances\r\n if (to) {\r\n // this will update the instance for new instances as well as reused\r\n // instances when navigating to a new route\r\n to.instances[name] = instance;\r\n // the component instance is reused for a different route or name, so\r\n // we copy any saved update or leave guards. With async setup, the\r\n // mounting component will mount before the matchedRoute changes,\r\n // making instance === oldInstance, so we check if guards have been\r\n // added before. This works because we remove guards when\r\n // unmounting/deactivating components\r\n if (from && from !== to && instance && instance === oldInstance) {\r\n if (!to.leaveGuards.size) {\r\n to.leaveGuards = from.leaveGuards;\r\n }\r\n if (!to.updateGuards.size) {\r\n to.updateGuards = from.updateGuards;\r\n }\r\n }\r\n }\r\n // trigger beforeRouteEnter next callbacks\r\n if (instance &&\r\n to &&\r\n // if there is no instance but to and from are the same this might be\r\n // the first visit\r\n (!from || !isSameRouteRecord(to, from) || !oldInstance)) {\r\n (to.enterCallbacks[name] || []).forEach(callback => callback(instance));\r\n }\r\n }, { flush: 'post' });\r\n return () => {\r\n const route = routeToDisplay.value;\r\n // we need the value at the time we render because when we unmount, we\r\n // navigated to a different location so the value is different\r\n const currentName = props.name;\r\n const matchedRoute = matchedRouteRef.value;\r\n const ViewComponent = matchedRoute && matchedRoute.components[currentName];\r\n if (!ViewComponent) {\r\n return normalizeSlot(slots.default, { Component: ViewComponent, route });\r\n }\r\n // props from route configuration\r\n const routePropsOption = matchedRoute.props[currentName];\r\n const routeProps = routePropsOption\r\n ? routePropsOption === true\r\n ? route.params\r\n : typeof routePropsOption === 'function'\r\n ? routePropsOption(route)\r\n : routePropsOption\r\n : null;\r\n const onVnodeUnmounted = vnode => {\r\n // remove the instance reference to prevent leak\r\n if (vnode.component.isUnmounted) {\r\n matchedRoute.instances[currentName] = null;\r\n }\r\n };\r\n const component = h(ViewComponent, assign({}, routeProps, attrs, {\r\n onVnodeUnmounted,\r\n ref: viewRef,\r\n }));\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n isBrowser &&\r\n component.ref) {\r\n // TODO: can display if it's an alias, its props\r\n const info = {\r\n depth: depth.value,\r\n name: matchedRoute.name,\r\n path: matchedRoute.path,\r\n meta: matchedRoute.meta,\r\n };\r\n const internalInstances = isArray(component.ref)\r\n ? component.ref.map(r => r.i)\r\n : [component.ref.i];\r\n internalInstances.forEach(instance => {\r\n // @ts-expect-error\r\n instance.__vrv_devtools = info;\r\n });\r\n }\r\n return (\r\n // pass the vnode to the slot as a prop.\r\n // h and <component :is=\"...\"> both accept vnodes\r\n normalizeSlot(slots.default, { Component: component, route }) ||\r\n component);\r\n };\r\n },\r\n});\r\nfunction normalizeSlot(slot, data) {\r\n if (!slot)\r\n return null;\r\n const slotContent = slot(data);\r\n return slotContent.length === 1 ? slotContent[0] : slotContent;\r\n}\r\n// export the public type for h/tsx inference\r\n// also to avoid inline import() in generated d.ts files\r\n/**\r\n * Component to display the current route the user is at.\r\n */\r\nconst RouterView = RouterViewImpl;\r\n// warn against deprecated usage with <transition> & <keep-alive>\r\n// due to functional component being no longer eager in Vue 3\r\nfunction warnDeprecatedUsage() {\r\n const instance = getCurrentInstance();\r\n const parentName = instance.parent && instance.parent.type.name;\r\n if (parentName &&\r\n (parentName === 'KeepAlive' || parentName.includes('Transition'))) {\r\n const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition';\r\n warn(`<router-view> can no longer be used directly inside <transition> or <keep-alive>.\\n` +\r\n `Use slot props instead:\\n\\n` +\r\n `<router-view v-slot=\"{ Component }\">\\n` +\r\n ` <${comp}>\\n` +\r\n ` <component :is=\"Component\" />\\n` +\r\n ` </${comp}>\\n` +\r\n `</router-view>`);\r\n }\r\n}\n\n/**\r\n * Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances).\r\n *\r\n * @param routeLocation - routeLocation to format\r\n * @param tooltip - optional tooltip\r\n * @returns a copy of the routeLocation\r\n */\r\nfunction formatRouteLocation(routeLocation, tooltip) {\r\n const copy = assign({}, routeLocation, {\r\n // remove variables that can contain vue instances\r\n matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])),\r\n });\r\n return {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: routeLocation.fullPath,\r\n tooltip,\r\n value: copy,\r\n },\r\n };\r\n}\r\nfunction formatDisplay(display) {\r\n return {\r\n _custom: {\r\n display,\r\n },\r\n };\r\n}\r\n// to support multiple router instances\r\nlet routerId = 0;\r\nfunction addDevtools(app, router, matcher) {\r\n // Take over router.beforeEach and afterEach\r\n // make sure we are not registering the devtool twice\r\n if (router.__hasDevtools)\r\n return;\r\n router.__hasDevtools = true;\r\n // increment to support multiple router instances\r\n const id = routerId++;\r\n setupDevtoolsPlugin({\r\n id: 'org.vuejs.router' + (id ? '.' + id : ''),\r\n label: 'Vue Router',\r\n packageName: 'vue-router',\r\n homepage: 'https://router.vuejs.org',\r\n logo: 'https://router.vuejs.org/logo.png',\r\n componentStateTypes: ['Routing'],\r\n app,\r\n }, api => {\r\n if (typeof api.now !== 'function') {\r\n console.warn('[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\r\n }\r\n // display state added by the router\r\n api.on.inspectComponent((payload, ctx) => {\r\n if (payload.instanceData) {\r\n payload.instanceData.state.push({\r\n type: 'Routing',\r\n key: '$route',\r\n editable: false,\r\n value: formatRouteLocation(router.currentRoute.value, 'Current Route'),\r\n });\r\n }\r\n });\r\n // mark router-link as active and display tags on router views\r\n api.on.visitComponentTree(({ treeNode: node, componentInstance }) => {\r\n if (componentInstance.__vrv_devtools) {\r\n const info = componentInstance.__vrv_devtools;\r\n node.tags.push({\r\n label: (info.name ? `${info.name.toString()}: ` : '') + info.path,\r\n textColor: 0,\r\n tooltip: 'This component is rendered by &lt;router-view&gt;',\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n // if multiple useLink are used\r\n if (isArray(componentInstance.__vrl_devtools)) {\r\n componentInstance.__devtoolsApi = api;\r\n componentInstance.__vrl_devtools.forEach(devtoolsData => {\r\n let backgroundColor = ORANGE_400;\r\n let tooltip = '';\r\n if (devtoolsData.isExactActive) {\r\n backgroundColor = LIME_500;\r\n tooltip = 'This is exactly active';\r\n }\r\n else if (devtoolsData.isActive) {\r\n backgroundColor = BLUE_600;\r\n tooltip = 'This link is active';\r\n }\r\n node.tags.push({\r\n label: devtoolsData.route.path,\r\n textColor: 0,\r\n tooltip,\r\n backgroundColor,\r\n });\r\n });\r\n }\r\n });\r\n watch(router.currentRoute, () => {\r\n // refresh active state\r\n refreshRoutesView();\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n const navigationsLayerId = 'router:navigations:' + id;\r\n api.addTimelineLayer({\r\n id: navigationsLayerId,\r\n label: `Router${id ? ' ' + id : ''} Navigations`,\r\n color: 0x40a8c4,\r\n });\r\n // const errorsLayerId = 'router:errors'\r\n // api.addTimelineLayer({\r\n // id: errorsLayerId,\r\n // label: 'Router Errors',\r\n // color: 0xea5455,\r\n // })\r\n router.onError((error, to) => {\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'Error during Navigation',\r\n subtitle: to.fullPath,\r\n logType: 'error',\r\n time: api.now(),\r\n data: { error },\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n // attached to `meta` and used to group events\r\n let navigationId = 0;\r\n router.beforeEach((to, from) => {\r\n const data = {\r\n guard: formatDisplay('beforeEach'),\r\n from: formatRouteLocation(from, 'Current Location during this navigation'),\r\n to: formatRouteLocation(to, 'Target location'),\r\n };\r\n // Used to group navigations together, hide from devtools\r\n Object.defineProperty(to.meta, '__navigationId', {\r\n value: navigationId++,\r\n });\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n time: api.now(),\r\n title: 'Start of navigation',\r\n subtitle: to.fullPath,\r\n data,\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n router.afterEach((to, from, failure) => {\r\n const data = {\r\n guard: formatDisplay('afterEach'),\r\n };\r\n if (failure) {\r\n data.failure = {\r\n _custom: {\r\n type: Error,\r\n readOnly: true,\r\n display: failure ? failure.message : '',\r\n tooltip: 'Navigation Failure',\r\n value: failure,\r\n },\r\n };\r\n data.status = formatDisplay('❌');\r\n }\r\n else {\r\n data.status = formatDisplay('✅');\r\n }\r\n // we set here to have the right order\r\n data.from = formatRouteLocation(from, 'Current Location during this navigation');\r\n data.to = formatRouteLocation(to, 'Target location');\r\n api.addTimelineEvent({\r\n layerId: navigationsLayerId,\r\n event: {\r\n title: 'End of navigation',\r\n subtitle: to.fullPath,\r\n time: api.now(),\r\n data,\r\n logType: failure ? 'warning' : 'default',\r\n groupId: to.meta.__navigationId,\r\n },\r\n });\r\n });\r\n /**\r\n * Inspector of Existing routes\r\n */\r\n const routerInspectorId = 'router-inspector:' + id;\r\n api.addInspector({\r\n id: routerInspectorId,\r\n label: 'Routes' + (id ? ' ' + id : ''),\r\n icon: 'book',\r\n treeFilterPlaceholder: 'Search routes',\r\n });\r\n function refreshRoutesView() {\r\n // the routes view isn't active\r\n if (!activeRoutesPayload)\r\n return;\r\n const payload = activeRoutesPayload;\r\n // children routes will appear as nested\r\n let routes = matcher.getRoutes().filter(route => !route.parent);\r\n // reset match state to false\r\n routes.forEach(resetMatchStateOnRouteRecord);\r\n // apply a match state if there is a payload\r\n if (payload.filter) {\r\n routes = routes.filter(route => \r\n // save matches state based on the payload\r\n isRouteMatching(route, payload.filter.toLowerCase()));\r\n }\r\n // mark active routes\r\n routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value));\r\n payload.rootNodes = routes.map(formatRouteRecordForInspector);\r\n }\r\n let activeRoutesPayload;\r\n api.on.getInspectorTree(payload => {\r\n activeRoutesPayload = payload;\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n refreshRoutesView();\r\n }\r\n });\r\n /**\r\n * Display information about the currently selected route record\r\n */\r\n api.on.getInspectorState(payload => {\r\n if (payload.app === app && payload.inspectorId === routerInspectorId) {\r\n const routes = matcher.getRoutes();\r\n const route = routes.find(route => route.record.__vd_id === payload.nodeId);\r\n if (route) {\r\n payload.state = {\r\n options: formatRouteRecordMatcherForStateInspector(route),\r\n };\r\n }\r\n }\r\n });\r\n api.sendInspectorTree(routerInspectorId);\r\n api.sendInspectorState(routerInspectorId);\r\n });\r\n}\r\nfunction modifierForKey(key) {\r\n if (key.optional) {\r\n return key.repeatable ? '*' : '?';\r\n }\r\n else {\r\n return key.repeatable ? '+' : '';\r\n }\r\n}\r\nfunction formatRouteRecordMatcherForStateInspector(route) {\r\n const { record } = route;\r\n const fields = [\r\n { editable: false, key: 'path', value: record.path },\r\n ];\r\n if (record.name != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'name',\r\n value: record.name,\r\n });\r\n }\r\n fields.push({ editable: false, key: 'regexp', value: route.re });\r\n if (route.keys.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'keys',\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.keys\r\n .map(key => `${key.name}${modifierForKey(key)}`)\r\n .join(' '),\r\n tooltip: 'Param keys',\r\n value: route.keys,\r\n },\r\n },\r\n });\r\n }\r\n if (record.redirect != null) {\r\n fields.push({\r\n editable: false,\r\n key: 'redirect',\r\n value: record.redirect,\r\n });\r\n }\r\n if (route.alias.length) {\r\n fields.push({\r\n editable: false,\r\n key: 'aliases',\r\n value: route.alias.map(alias => alias.record.path),\r\n });\r\n }\r\n if (Object.keys(route.record.meta).length) {\r\n fields.push({\r\n editable: false,\r\n key: 'meta',\r\n value: route.record.meta,\r\n });\r\n }\r\n fields.push({\r\n key: 'score',\r\n editable: false,\r\n value: {\r\n _custom: {\r\n type: null,\r\n readOnly: true,\r\n display: route.score.map(score => score.join(', ')).join(' | '),\r\n tooltip: 'Score used to sort routes',\r\n value: route.score,\r\n },\r\n },\r\n });\r\n return fields;\r\n}\r\n/**\r\n * Extracted from tailwind palette\r\n */\r\nconst PINK_500 = 0xec4899;\r\nconst BLUE_600 = 0x2563eb;\r\nconst LIME_500 = 0x84cc16;\r\nconst CYAN_400 = 0x22d3ee;\r\nconst ORANGE_400 = 0xfb923c;\r\n// const GRAY_100 = 0xf4f4f5\r\nconst DARK = 0x666666;\r\nfunction formatRouteRecordForInspector(route) {\r\n const tags = [];\r\n const { record } = route;\r\n if (record.name != null) {\r\n tags.push({\r\n label: String(record.name),\r\n textColor: 0,\r\n backgroundColor: CYAN_400,\r\n });\r\n }\r\n if (record.aliasOf) {\r\n tags.push({\r\n label: 'alias',\r\n textColor: 0,\r\n backgroundColor: ORANGE_400,\r\n });\r\n }\r\n if (route.__vd_match) {\r\n tags.push({\r\n label: 'matches',\r\n textColor: 0,\r\n backgroundColor: PINK_500,\r\n });\r\n }\r\n if (route.__vd_exactActive) {\r\n tags.push({\r\n label: 'exact',\r\n textColor: 0,\r\n backgroundColor: LIME_500,\r\n });\r\n }\r\n if (route.__vd_active) {\r\n tags.push({\r\n label: 'active',\r\n textColor: 0,\r\n backgroundColor: BLUE_600,\r\n });\r\n }\r\n if (record.redirect) {\r\n tags.push({\r\n label: typeof record.redirect === 'string'\r\n ? `redirect: ${record.redirect}`\r\n : 'redirects',\r\n textColor: 0xffffff,\r\n backgroundColor: DARK,\r\n });\r\n }\r\n // add an id to be able to select it. Using the `path` is not possible because\r\n // empty path children would collide with their parents\r\n let id = record.__vd_id;\r\n if (id == null) {\r\n id = String(routeRecordId++);\r\n record.__vd_id = id;\r\n }\r\n return {\r\n id,\r\n label: record.path,\r\n tags,\r\n children: route.children.map(formatRouteRecordForInspector),\r\n };\r\n}\r\n// incremental id for route records and inspector state\r\nlet routeRecordId = 0;\r\nconst EXTRACT_REGEXP_RE = /^\\/(.*)\\/([a-z]*)$/;\r\nfunction markRouteRecordActive(route, currentRoute) {\r\n // no route will be active if matched is empty\r\n // reset the matching state\r\n const isExactActive = currentRoute.matched.length &&\r\n isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record);\r\n route.__vd_exactActive = route.__vd_active = isExactActive;\r\n if (!isExactActive) {\r\n route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record));\r\n }\r\n route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute));\r\n}\r\nfunction resetMatchStateOnRouteRecord(route) {\r\n route.__vd_match = false;\r\n route.children.forEach(resetMatchStateOnRouteRecord);\r\n}\r\nfunction isRouteMatching(route, filter) {\r\n const found = String(route.re).match(EXTRACT_REGEXP_RE);\r\n route.__vd_match = false;\r\n if (!found || found.length < 3) {\r\n return false;\r\n }\r\n // use a regexp without $ at the end to match nested routes better\r\n const nonEndingRE = new RegExp(found[1].replace(/\\$$/, ''), found[2]);\r\n if (nonEndingRE.test(filter)) {\r\n // mark children as matches\r\n route.children.forEach(child => isRouteMatching(child, filter));\r\n // exception case: `/`\r\n if (route.record.path !== '/' || filter === '/') {\r\n route.__vd_match = route.re.test(filter);\r\n return true;\r\n }\r\n // hide the / route\r\n return false;\r\n }\r\n const path = route.record.path.toLowerCase();\r\n const decodedPath = decode(path);\r\n // also allow partial matching on the path\r\n if (!filter.startsWith('/') &&\r\n (decodedPath.includes(filter) || path.includes(filter)))\r\n return true;\r\n if (decodedPath.startsWith(filter) || path.startsWith(filter))\r\n return true;\r\n if (route.record.name && String(route.record.name).includes(filter))\r\n return true;\r\n return route.children.some(child => isRouteMatching(child, filter));\r\n}\r\nfunction omit(obj, keys) {\r\n const ret = {};\r\n for (const key in obj) {\r\n if (!keys.includes(key)) {\r\n // @ts-expect-error\r\n ret[key] = obj[key];\r\n }\r\n }\r\n return ret;\r\n}\n\n/**\r\n * Creates a Router instance that can be used by a Vue app.\r\n *\r\n * @param options - {@link RouterOptions}\r\n */\r\nfunction createRouter(options) {\r\n const matcher = createRouterMatcher(options.routes, options);\r\n const parseQuery$1 = options.parseQuery || parseQuery;\r\n const stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\r\n const routerHistory = options.history;\r\n if ((process.env.NODE_ENV !== 'production') && !routerHistory)\r\n throw new Error('Provide the \"history\" option when calling \"createRouter()\":' +\r\n ' https://next.router.vuejs.org/api/#history.');\r\n const beforeGuards = useCallbacks();\r\n const beforeResolveGuards = useCallbacks();\r\n const afterGuards = useCallbacks();\r\n const currentRoute = shallowRef(START_LOCATION_NORMALIZED);\r\n let pendingLocation = START_LOCATION_NORMALIZED;\r\n // leave the scrollRestoration if no scrollBehavior is provided\r\n if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) {\r\n history.scrollRestoration = 'manual';\r\n }\r\n const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue);\r\n const encodeParams = applyToParams.bind(null, encodeParam);\r\n const decodeParams = \r\n // @ts-expect-error: intentionally avoid the type check\r\n applyToParams.bind(null, decode);\r\n function addRoute(parentOrRoute, route) {\r\n let parent;\r\n let record;\r\n if (isRouteName(parentOrRoute)) {\r\n parent = matcher.getRecordMatcher(parentOrRoute);\r\n record = route;\r\n }\r\n else {\r\n record = parentOrRoute;\r\n }\r\n return matcher.addRoute(record, parent);\r\n }\r\n function removeRoute(name) {\r\n const recordMatcher = matcher.getRecordMatcher(name);\r\n if (recordMatcher) {\r\n matcher.removeRoute(recordMatcher);\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n warn(`Cannot remove non-existent route \"${String(name)}\"`);\r\n }\r\n }\r\n function getRoutes() {\r\n return matcher.getRoutes().map(routeMatcher => routeMatcher.record);\r\n }\r\n function hasRoute(name) {\r\n return !!matcher.getRecordMatcher(name);\r\n }\r\n function resolve(rawLocation, currentLocation) {\r\n // const objectLocation = routerLocationAsObject(rawLocation)\r\n // we create a copy to modify it later\r\n currentLocation = assign({}, currentLocation || currentRoute.value);\r\n if (typeof rawLocation === 'string') {\r\n const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\r\n const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\r\n const href = routerHistory.createHref(locationNormalized.fullPath);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (href.startsWith('//'))\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${rawLocation}\"`);\r\n }\r\n }\r\n // locationNormalized is always a new object\r\n return assign(locationNormalized, matchedRoute, {\r\n params: decodeParams(matchedRoute.params),\r\n hash: decode(locationNormalized.hash),\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n let matcherLocation;\r\n // path could be relative in object as well\r\n if ('path' in rawLocation) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n 'params' in rawLocation &&\r\n !('name' in rawLocation) &&\r\n // @ts-expect-error: the type is never\r\n Object.keys(rawLocation.params).length) {\r\n warn(`Path \"${\r\n // @ts-expect-error: the type is never\r\n rawLocation.path}\" was passed with params but they will be ignored. Use a named route alongside params instead.`);\r\n }\r\n matcherLocation = assign({}, rawLocation, {\r\n path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path,\r\n });\r\n }\r\n else {\r\n // remove any nullish param\r\n const targetParams = assign({}, rawLocation.params);\r\n for (const key in targetParams) {\r\n if (targetParams[key] == null) {\r\n delete targetParams[key];\r\n }\r\n }\r\n // pass encoded values to the matcher, so it can produce encoded path and fullPath\r\n matcherLocation = assign({}, rawLocation, {\r\n params: encodeParams(rawLocation.params),\r\n });\r\n // current location params are decoded, we need to encode them in case the\r\n // matcher merges the params\r\n currentLocation.params = encodeParams(currentLocation.params);\r\n }\r\n const matchedRoute = matcher.resolve(matcherLocation, currentLocation);\r\n const hash = rawLocation.hash || '';\r\n if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) {\r\n warn(`A \\`hash\\` should always start with the character \"#\". Replace \"${hash}\" with \"#${hash}\".`);\r\n }\r\n // the matcher might have merged current location params, so\r\n // we need to run the decoding again\r\n matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\r\n const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\r\n hash: encodeHash(hash),\r\n path: matchedRoute.path,\r\n }));\r\n const href = routerHistory.createHref(fullPath);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n if (href.startsWith('//')) {\r\n warn(`Location \"${rawLocation}\" resolved to \"${href}\". A resolved location cannot start with multiple slashes.`);\r\n }\r\n else if (!matchedRoute.matched.length) {\r\n warn(`No match found for location with path \"${'path' in rawLocation ? rawLocation.path : rawLocation}\"`);\r\n }\r\n }\r\n return assign({\r\n fullPath,\r\n // keep the hash encoded so fullPath is effectively path + encodedQuery +\r\n // hash\r\n hash,\r\n query: \r\n // if the user is using a custom query lib like qs, we might have\r\n // nested objects, so we keep the query as is, meaning it can contain\r\n // numbers at `$route.query`, but at the point, the user will have to\r\n // use their own type anyway.\r\n // https://github.com/vuejs/router/issues/328#issuecomment-649481567\r\n stringifyQuery$1 === stringifyQuery\r\n ? normalizeQuery(rawLocation.query)\r\n : (rawLocation.query || {}),\r\n }, matchedRoute, {\r\n redirectedFrom: undefined,\r\n href,\r\n });\r\n }\r\n function locationAsObject(to) {\r\n return typeof to === 'string'\r\n ? parseURL(parseQuery$1, to, currentRoute.value.path)\r\n : assign({}, to);\r\n }\r\n function checkCanceledNavigation(to, from) {\r\n if (pendingLocation !== to) {\r\n return createRouterError(8 /* ErrorTypes.NAVIGATION_CANCELLED */, {\r\n from,\r\n to,\r\n });\r\n }\r\n }\r\n function push(to) {\r\n return pushWithRedirect(to);\r\n }\r\n function replace(to) {\r\n return push(assign(locationAsObject(to), { replace: true }));\r\n }\r\n function handleRedirectRecord(to) {\r\n const lastMatched = to.matched[to.matched.length - 1];\r\n if (lastMatched && lastMatched.redirect) {\r\n const { redirect } = lastMatched;\r\n let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect;\r\n if (typeof newTargetLocation === 'string') {\r\n newTargetLocation =\r\n newTargetLocation.includes('?') || newTargetLocation.includes('#')\r\n ? (newTargetLocation = locationAsObject(newTargetLocation))\r\n : // force empty params\r\n { path: newTargetLocation };\r\n // @ts-expect-error: force empty params when a string is passed to let\r\n // the router parse them again\r\n newTargetLocation.params = {};\r\n }\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n !('path' in newTargetLocation) &&\r\n !('name' in newTargetLocation)) {\r\n warn(`Invalid redirect found:\\n${JSON.stringify(newTargetLocation, null, 2)}\\n when navigating to \"${to.fullPath}\". A redirect must contain a name or path. This will break in production.`);\r\n throw new Error('Invalid redirect');\r\n }\r\n return assign({\r\n query: to.query,\r\n hash: to.hash,\r\n // avoid transferring params if the redirect has a path\r\n params: 'path' in newTargetLocation ? {} : to.params,\r\n }, newTargetLocation);\r\n }\r\n }\r\n function pushWithRedirect(to, redirectedFrom) {\r\n const targetLocation = (pendingLocation = resolve(to));\r\n const from = currentRoute.value;\r\n const data = to.state;\r\n const force = to.force;\r\n // to could be a string where `replace` is a function\r\n const replace = to.replace === true;\r\n const shouldRedirect = handleRedirectRecord(targetLocation);\r\n if (shouldRedirect)\r\n return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\r\n state: typeof shouldRedirect === 'object'\r\n ? assign({}, data, shouldRedirect.state)\r\n : data,\r\n force,\r\n replace,\r\n }), \r\n // keep original redirectedFrom if it exists\r\n redirectedFrom || targetLocation);\r\n // if it was a redirect we already called `pushWithRedirect` above\r\n const toLocation = targetLocation;\r\n toLocation.redirectedFrom = redirectedFrom;\r\n let failure;\r\n if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\r\n failure = createRouterError(16 /* ErrorTypes.NAVIGATION_DUPLICATED */, { to: toLocation, from });\r\n // trigger scroll to allow scrolling to the same anchor\r\n handleScroll(from, from, \r\n // this is a push, the only way for it to be triggered from a\r\n // history.listen is with a redirect, which makes it become a push\r\n true, \r\n // This cannot be the first navigation because the initial location\r\n // cannot be manually navigated to\r\n false);\r\n }\r\n return (failure ? Promise.resolve(failure) : navigate(toLocation, from))\r\n .catch((error) => isNavigationFailure(error)\r\n ? // navigation redirects still mark the router as ready\r\n isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)\r\n ? error\r\n : markAsReady(error) // also returns the error\r\n : // reject any unknown error\r\n triggerError(error, toLocation, from))\r\n .then((failure) => {\r\n if (failure) {\r\n if (isNavigationFailure(failure, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n // we are redirecting to the same location we were already at\r\n isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) &&\r\n // and we have done it a couple of times\r\n redirectedFrom &&\r\n // @ts-expect-error: added only in dev\r\n (redirectedFrom._count = redirectedFrom._count\r\n ? // @ts-expect-error\r\n redirectedFrom._count + 1\r\n : 1) > 10) {\r\n warn(`Detected an infinite redirection in a navigation guard when going from \"${from.fullPath}\" to \"${toLocation.fullPath}\". Aborting to avoid a Stack Overflow. This will break in production if not fixed.`);\r\n return Promise.reject(new Error('Infinite redirect in navigation guard'));\r\n }\r\n return pushWithRedirect(\r\n // keep options\r\n assign({\r\n // preserve an existing replacement but allow the redirect to override it\r\n replace,\r\n }, locationAsObject(failure.to), {\r\n state: typeof failure.to === 'object'\r\n ? assign({}, data, failure.to.state)\r\n : data,\r\n force,\r\n }), \r\n // preserve the original redirectedFrom if any\r\n redirectedFrom || toLocation);\r\n }\r\n }\r\n else {\r\n // if we fail we don't finalize the navigation\r\n failure = finalizeNavigation(toLocation, from, true, replace, data);\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n return failure;\r\n });\r\n }\r\n /**\r\n * Helper to reject and skip all navigation guards if a new navigation happened\r\n * @param to\r\n * @param from\r\n */\r\n function checkCanceledNavigationAndReject(to, from) {\r\n const error = checkCanceledNavigation(to, from);\r\n return error ? Promise.reject(error) : Promise.resolve();\r\n }\r\n // TODO: refactor the whole before guards by internally using router.beforeEach\r\n function navigate(to, from) {\r\n let guards;\r\n const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\r\n // all components here have been resolved once because we are leaving\r\n guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from);\r\n // leavingRecords is already reversed\r\n for (const record of leavingRecords) {\r\n record.leaveGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeRouteLeave guards\r\n return (runGuardQueue(guards)\r\n .then(() => {\r\n // check global guards beforeEach\r\n guards = [];\r\n for (const guard of beforeGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check in components beforeRouteUpdate\r\n guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from);\r\n for (const record of updatingRecords) {\r\n record.updateGuards.forEach(guard => {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n });\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check the route beforeEnter\r\n guards = [];\r\n for (const record of to.matched) {\r\n // do not trigger beforeEnter on reused views\r\n if (record.beforeEnter && !from.matched.includes(record)) {\r\n if (isArray(record.beforeEnter)) {\r\n for (const beforeEnter of record.beforeEnter)\r\n guards.push(guardToPromiseFn(beforeEnter, to, from));\r\n }\r\n else {\r\n guards.push(guardToPromiseFn(record.beforeEnter, to, from));\r\n }\r\n }\r\n }\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // NOTE: at this point to.matched is normalized and does not contain any () => Promise<Component>\r\n // clear existing enterCallbacks, these are added by extractComponentsGuards\r\n to.matched.forEach(record => (record.enterCallbacks = {}));\r\n // check in-component beforeRouteEnter\r\n guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from);\r\n guards.push(canceledNavigationCheck);\r\n // run the queue of per route beforeEnter guards\r\n return runGuardQueue(guards);\r\n })\r\n .then(() => {\r\n // check global guards beforeResolve\r\n guards = [];\r\n for (const guard of beforeResolveGuards.list()) {\r\n guards.push(guardToPromiseFn(guard, to, from));\r\n }\r\n guards.push(canceledNavigationCheck);\r\n return runGuardQueue(guards);\r\n })\r\n // catch any navigation canceled\r\n .catch(err => isNavigationFailure(err, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)\r\n ? err\r\n : Promise.reject(err)));\r\n }\r\n function triggerAfterEach(to, from, failure) {\r\n // navigation is confirmed, call afterGuards\r\n // TODO: wrap with error handlers\r\n for (const guard of afterGuards.list())\r\n guard(to, from, failure);\r\n }\r\n /**\r\n * - Cleans up any navigation guards\r\n * - Changes the url if necessary\r\n * - Calls the scrollBehavior\r\n */\r\n function finalizeNavigation(toLocation, from, isPush, replace, data) {\r\n // a more recent navigation took place\r\n const error = checkCanceledNavigation(toLocation, from);\r\n if (error)\r\n return error;\r\n // only consider as push if it's not the first navigation\r\n const isFirstNavigation = from === START_LOCATION_NORMALIZED;\r\n const state = !isBrowser ? {} : history.state;\r\n // change URL only if the user did a push/replace and if it's not the initial navigation because\r\n // it's just reflecting the url\r\n if (isPush) {\r\n // on the initial navigation, we want to reuse the scroll position from\r\n // history state if it exists\r\n if (replace || isFirstNavigation)\r\n routerHistory.replace(toLocation.fullPath, assign({\r\n scroll: isFirstNavigation && state && state.scroll,\r\n }, data));\r\n else\r\n routerHistory.push(toLocation.fullPath, data);\r\n }\r\n // accept current navigation\r\n currentRoute.value = toLocation;\r\n handleScroll(toLocation, from, isPush, isFirstNavigation);\r\n markAsReady();\r\n }\r\n let removeHistoryListener;\r\n // attach listener to history to trigger navigations\r\n function setupListeners() {\r\n // avoid setting up listeners twice due to an invalid first navigation\r\n if (removeHistoryListener)\r\n return;\r\n removeHistoryListener = routerHistory.listen((to, _from, info) => {\r\n if (!router.listening)\r\n return;\r\n // cannot be a redirect route because it was in history\r\n const toLocation = resolve(to);\r\n // due to dynamic routing, and to hash history with manual navigation\r\n // (manually changing the url or calling history.hash = '#/somewhere'),\r\n // there could be a redirect record in history\r\n const shouldRedirect = handleRedirectRecord(toLocation);\r\n if (shouldRedirect) {\r\n pushWithRedirect(assign(shouldRedirect, { replace: true }), toLocation).catch(noop);\r\n return;\r\n }\r\n pendingLocation = toLocation;\r\n const from = currentRoute.value;\r\n // TODO: should be moved to web history?\r\n if (isBrowser) {\r\n saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\r\n }\r\n navigate(toLocation, from)\r\n .catch((error) => {\r\n if (isNavigationFailure(error, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\r\n return error;\r\n }\r\n if (isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) {\r\n // Here we could call if (info.delta) routerHistory.go(-info.delta,\r\n // false) but this is bug prone as we have no way to wait the\r\n // navigation to be finished before calling pushWithRedirect. Using\r\n // a setTimeout of 16ms seems to work but there is no guarantee for\r\n // it to work on every browser. So instead we do not restore the\r\n // history entry and trigger a new navigation as requested by the\r\n // navigation guard.\r\n // the error is already handled by router.push we just want to avoid\r\n // logging the error\r\n pushWithRedirect(error.to, toLocation\r\n // avoid an uncaught rejection, let push call triggerError\r\n )\r\n .then(failure => {\r\n // manual change in hash history #916 ending up in the URL not\r\n // changing, but it was changed by the manual url change, so we\r\n // need to manually change it ourselves\r\n if (isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ |\r\n 16 /* ErrorTypes.NAVIGATION_DUPLICATED */) &&\r\n !info.delta &&\r\n info.type === NavigationType.pop) {\r\n routerHistory.go(-1, false);\r\n }\r\n })\r\n .catch(noop);\r\n // avoid the then branch\r\n return Promise.reject();\r\n }\r\n // do not restore history on unknown direction\r\n if (info.delta) {\r\n routerHistory.go(-info.delta, false);\r\n }\r\n // unrecognized error, transfer to the global handler\r\n return triggerError(error, toLocation, from);\r\n })\r\n .then((failure) => {\r\n failure =\r\n failure ||\r\n finalizeNavigation(\r\n // after navigation, all matched components are resolved\r\n toLocation, from, false);\r\n // revert the navigation\r\n if (failure) {\r\n if (info.delta &&\r\n // a new navigation has been triggered, so we do not want to revert, that will change the current history\r\n // entry while a different route is displayed\r\n !isNavigationFailure(failure, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) {\r\n routerHistory.go(-info.delta, false);\r\n }\r\n else if (info.type === NavigationType.pop &&\r\n isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 16 /* ErrorTypes.NAVIGATION_DUPLICATED */)) {\r\n // manual change in hash history #916\r\n // it's like a push but lacks the information of the direction\r\n routerHistory.go(-1, false);\r\n }\r\n }\r\n triggerAfterEach(toLocation, from, failure);\r\n })\r\n .catch(noop);\r\n });\r\n }\r\n // Initialization and Errors\r\n let readyHandlers = useCallbacks();\r\n let errorHandlers = useCallbacks();\r\n let ready;\r\n /**\r\n * Trigger errorHandlers added via onError and throws the error as well\r\n *\r\n * @param error - error to throw\r\n * @param to - location we were navigating to when the error happened\r\n * @param from - location we were navigating from when the error happened\r\n * @returns the error as a rejected promise\r\n */\r\n function triggerError(error, to, from) {\r\n markAsReady(error);\r\n const list = errorHandlers.list();\r\n if (list.length) {\r\n list.forEach(handler => handler(error, to, from));\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn('uncaught error during route navigation:');\r\n }\r\n console.error(error);\r\n }\r\n return Promise.reject(error);\r\n }\r\n function isReady() {\r\n if (ready && currentRoute.value !== START_LOCATION_NORMALIZED)\r\n return Promise.resolve();\r\n return new Promise((resolve, reject) => {\r\n readyHandlers.add([resolve, reject]);\r\n });\r\n }\r\n function markAsReady(err) {\r\n if (!ready) {\r\n // still not ready if an error happened\r\n ready = !err;\r\n setupListeners();\r\n readyHandlers\r\n .list()\r\n .forEach(([resolve, reject]) => (err ? reject(err) : resolve()));\r\n readyHandlers.reset();\r\n }\r\n return err;\r\n }\r\n // Scroll behavior\r\n function handleScroll(to, from, isPush, isFirstNavigation) {\r\n const { scrollBehavior } = options;\r\n if (!isBrowser || !scrollBehavior)\r\n return Promise.resolve();\r\n const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) ||\r\n ((isFirstNavigation || !isPush) &&\r\n history.state &&\r\n history.state.scroll) ||\r\n null;\r\n return nextTick()\r\n .then(() => scrollBehavior(to, from, scrollPosition))\r\n .then(position => position && scrollToPosition(position))\r\n .catch(err => triggerError(err, to, from));\r\n }\r\n const go = (delta) => routerHistory.go(delta);\r\n let started;\r\n const installedApps = new Set();\r\n const router = {\r\n currentRoute,\r\n listening: true,\r\n addRoute,\r\n removeRoute,\r\n hasRoute,\r\n getRoutes,\r\n resolve,\r\n options,\r\n push,\r\n replace,\r\n go,\r\n back: () => go(-1),\r\n forward: () => go(1),\r\n beforeEach: beforeGuards.add,\r\n beforeResolve: beforeResolveGuards.add,\r\n afterEach: afterGuards.add,\r\n onError: errorHandlers.add,\r\n isReady,\r\n install(app) {\r\n const router = this;\r\n app.component('RouterLink', RouterLink);\r\n app.component('RouterView', RouterView);\r\n app.config.globalProperties.$router = router;\r\n Object.defineProperty(app.config.globalProperties, '$route', {\r\n enumerable: true,\r\n get: () => unref(currentRoute),\r\n });\r\n // this initial navigation is only necessary on client, on server it doesn't\r\n // make sense because it will create an extra unnecessary navigation and could\r\n // lead to problems\r\n if (isBrowser &&\r\n // used for the initial navigation client side to avoid pushing\r\n // multiple times when the router is used in multiple apps\r\n !started &&\r\n currentRoute.value === START_LOCATION_NORMALIZED) {\r\n // see above\r\n started = true;\r\n push(routerHistory.location).catch(err => {\r\n if ((process.env.NODE_ENV !== 'production'))\r\n warn('Unexpected error when starting the router:', err);\r\n });\r\n }\r\n const reactiveRoute = {};\r\n for (const key in START_LOCATION_NORMALIZED) {\r\n // @ts-expect-error: the key matches\r\n reactiveRoute[key] = computed(() => currentRoute.value[key]);\r\n }\r\n app.provide(routerKey, router);\r\n app.provide(routeLocationKey, reactive(reactiveRoute));\r\n app.provide(routerViewLocationKey, currentRoute);\r\n const unmountApp = app.unmount;\r\n installedApps.add(app);\r\n app.unmount = function () {\r\n installedApps.delete(app);\r\n // the router is not attached to an app anymore\r\n if (installedApps.size < 1) {\r\n // invalidate the current navigation\r\n pendingLocation = START_LOCATION_NORMALIZED;\r\n removeHistoryListener && removeHistoryListener();\r\n removeHistoryListener = null;\r\n currentRoute.value = START_LOCATION_NORMALIZED;\r\n started = false;\r\n ready = false;\r\n }\r\n unmountApp();\r\n };\r\n // TODO: this probably needs to be updated so it can be used by vue-termui\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) {\r\n addDevtools(app, router, matcher);\r\n }\r\n },\r\n };\r\n return router;\r\n}\r\nfunction runGuardQueue(guards) {\r\n return guards.reduce((promise, guard) => promise.then(() => guard()), Promise.resolve());\r\n}\r\nfunction extractChangingRecords(to, from) {\r\n const leavingRecords = [];\r\n const updatingRecords = [];\r\n const enteringRecords = [];\r\n const len = Math.max(from.matched.length, to.matched.length);\r\n for (let i = 0; i < len; i++) {\r\n const recordFrom = from.matched[i];\r\n if (recordFrom) {\r\n if (to.matched.find(record => isSameRouteRecord(record, recordFrom)))\r\n updatingRecords.push(recordFrom);\r\n else\r\n leavingRecords.push(recordFrom);\r\n }\r\n const recordTo = to.matched[i];\r\n if (recordTo) {\r\n // the type doesn't matter because we are comparing per reference\r\n if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) {\r\n enteringRecords.push(recordTo);\r\n }\r\n }\r\n }\r\n return [leavingRecords, updatingRecords, enteringRecords];\r\n}\n\n/**\r\n * Returns the router instance. Equivalent to using `$router` inside\r\n * templates.\r\n */\r\nfunction useRouter() {\r\n return inject(routerKey);\r\n}\r\n/**\r\n * Returns the current route location. Equivalent to using `$route` inside\r\n * templates.\r\n */\r\nfunction useRoute() {\r\n return inject(routeLocationKey);\r\n}\n\nexport { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey };\n","import { nextTick, pushScopeId, popScopeId, openBlock, createBlock, withScopeId } from 'vue';\n\nfunction getInternetExplorerVersion() {\n var ua = window.navigator.userAgent;\n var msie = ua.indexOf('MSIE ');\n\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n\n var trident = ua.indexOf('Trident/');\n\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf('rv:');\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n }\n\n var edge = ua.indexOf('Edge/');\n\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\n } // other browser\n\n\n return -1;\n}\n\nlet isIE;\n\nfunction initCompat () {\n if (!initCompat.init) {\n initCompat.init = true;\n isIE = getInternetExplorerVersion() !== -1;\n }\n}\n\nvar script = {\n name: 'ResizeObserver',\n\n props: {\n emitOnMount: {\n type: Boolean,\n default: false,\n },\n\n ignoreWidth: {\n type: Boolean,\n default: false,\n },\n\n ignoreHeight: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n 'notify',\n ],\n\n mounted () {\n initCompat();\n nextTick(() => {\n this._w = this.$el.offsetWidth;\n this._h = this.$el.offsetHeight;\n if (this.emitOnMount) {\n this.emitSize();\n }\n });\n const object = document.createElement('object');\n this._resizeObject = object;\n object.setAttribute('aria-hidden', 'true');\n object.setAttribute('tabindex', -1);\n object.onload = this.addResizeHandlers;\n object.type = 'text/html';\n if (isIE) {\n this.$el.appendChild(object);\n }\n object.data = 'about:blank';\n if (!isIE) {\n this.$el.appendChild(object);\n }\n },\n\n beforeUnmount () {\n this.removeResizeHandlers();\n },\n\n methods: {\n compareAndNotify () {\n if ((!this.ignoreWidth && this._w !== this.$el.offsetWidth) || (!this.ignoreHeight && this._h !== this.$el.offsetHeight)) {\n this._w = this.$el.offsetWidth;\n this._h = this.$el.offsetHeight;\n this.emitSize();\n }\n },\n\n emitSize () {\n this.$emit('notify', {\n width: this._w,\n height: this._h,\n });\n },\n\n addResizeHandlers () {\n this._resizeObject.contentDocument.defaultView.addEventListener('resize', this.compareAndNotify);\n this.compareAndNotify();\n },\n\n removeResizeHandlers () {\n if (this._resizeObject && this._resizeObject.onload) {\n if (!isIE && this._resizeObject.contentDocument) {\n this._resizeObject.contentDocument.defaultView.removeEventListener('resize', this.compareAndNotify);\n }\n this.$el.removeChild(this._resizeObject);\n this._resizeObject.onload = null;\n this._resizeObject = null;\n }\n },\n },\n};\n\nconst _withId = /*#__PURE__*/withScopeId(\"data-v-b329ee4c\");\n\npushScopeId(\"data-v-b329ee4c\");\nconst _hoisted_1 = {\n class: \"resize-observer\",\n tabindex: \"-1\"\n};\npopScopeId();\n\nconst render = /*#__PURE__*/_withId((_ctx, _cache, $props, $setup, $data, $options) => {\n return (openBlock(), createBlock(\"div\", _hoisted_1))\n});\n\nscript.render = render;\nscript.__scopeId = \"data-v-b329ee4c\";\nscript.__file = \"src/components/ResizeObserver.vue\";\n\nfunction install(app) {\n // eslint-disable-next-line vue/component-definition-name-casing\n app.component('resize-observer', script);\n app.component('ResizeObserver', script);\n}\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"2.0.0-alpha.1\",\n install: install\n};\n\nexport default plugin;\nexport { script as ResizeObserver, install };\n//# sourceMappingURL=vue-resize.esm.js.map\n","import { nextTick } from 'vue';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction processOptions(value) {\n var options;\n\n if (typeof value === 'function') {\n // Simple options (callback-only)\n options = {\n callback: value\n };\n } else {\n // Options object\n options = value;\n }\n\n return options;\n}\nfunction throttle(callback, delay) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var timeout;\n var lastState;\n var currentArgs;\n\n var throttled = function throttled(state) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n currentArgs = args;\n if (timeout && state === lastState) return;\n var leading = options.leading;\n\n if (typeof leading === 'function') {\n leading = leading(state, lastState);\n }\n\n if ((!timeout || state !== lastState) && leading) {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n }\n\n lastState = state;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n callback.apply(void 0, [state].concat(_toConsumableArray(currentArgs)));\n timeout = 0;\n }, delay);\n };\n\n throttled._clear = function () {\n clearTimeout(timeout);\n timeout = null;\n };\n\n return throttled;\n}\nfunction deepEqual(val1, val2) {\n if (val1 === val2) return true;\n\n if (_typeof(val1) === 'object') {\n for (var key in val1) {\n if (!deepEqual(val1[key], val2[key])) {\n return false;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\nvar VisibilityState = /*#__PURE__*/function () {\n function VisibilityState(el, options, vnode) {\n _classCallCheck(this, VisibilityState);\n\n this.el = el;\n this.observer = null;\n this.frozen = false;\n this.createObserver(options, vnode);\n }\n\n _createClass(VisibilityState, [{\n key: \"createObserver\",\n value: function createObserver(options, vnode) {\n var _this = this;\n\n if (this.observer) {\n this.destroyObserver();\n }\n\n if (this.frozen) return;\n this.options = processOptions(options);\n\n this.callback = function (result, entry) {\n _this.options.callback(result, entry);\n\n if (result && _this.options.once) {\n _this.frozen = true;\n\n _this.destroyObserver();\n }\n }; // Throttle\n\n\n if (this.callback && this.options.throttle) {\n var _ref = this.options.throttleOptions || {},\n _leading = _ref.leading;\n\n this.callback = throttle(this.callback, this.options.throttle, {\n leading: function leading(state) {\n return _leading === 'both' || _leading === 'visible' && state || _leading === 'hidden' && !state;\n }\n });\n }\n\n this.oldResult = undefined;\n this.observer = new IntersectionObserver(function (entries) {\n var entry = entries[0];\n\n if (entries.length > 1) {\n var intersectingEntry = entries.find(function (e) {\n return e.isIntersecting;\n });\n\n if (intersectingEntry) {\n entry = intersectingEntry;\n }\n }\n\n if (_this.callback) {\n // Use isIntersecting if possible because browsers can report isIntersecting as true, but intersectionRatio as 0, when something very slowly enters the viewport.\n var result = entry.isIntersecting && entry.intersectionRatio >= _this.threshold;\n if (result === _this.oldResult) return;\n _this.oldResult = result;\n\n _this.callback(result, entry);\n }\n }, this.options.intersection); // Wait for the element to be in document\n\n nextTick(function () {\n if (_this.observer) {\n _this.observer.observe(_this.el);\n }\n });\n }\n }, {\n key: \"destroyObserver\",\n value: function destroyObserver() {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n } // Cancel throttled call\n\n\n if (this.callback && this.callback._clear) {\n this.callback._clear();\n\n this.callback = null;\n }\n }\n }, {\n key: \"threshold\",\n get: function get() {\n return this.options.intersection && typeof this.options.intersection.threshold === 'number' ? this.options.intersection.threshold : 0;\n }\n }]);\n\n return VisibilityState;\n}();\n\nfunction beforeMount(el, _ref2, vnode) {\n var value = _ref2.value;\n if (!value) return;\n\n if (typeof IntersectionObserver === 'undefined') {\n console.warn('[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill');\n } else {\n var state = new VisibilityState(el, value, vnode);\n el._vue_visibilityState = state;\n }\n}\n\nfunction updated(el, _ref3, vnode) {\n var value = _ref3.value,\n oldValue = _ref3.oldValue;\n if (deepEqual(value, oldValue)) return;\n var state = el._vue_visibilityState;\n\n if (!value) {\n unmounted(el);\n return;\n }\n\n if (state) {\n state.createObserver(value, vnode);\n } else {\n beforeMount(el, {\n value: value\n }, vnode);\n }\n}\n\nfunction unmounted(el) {\n var state = el._vue_visibilityState;\n\n if (state) {\n state.destroyObserver();\n delete el._vue_visibilityState;\n }\n}\n\nvar ObserveVisibility = {\n beforeMount: beforeMount,\n updated: updated,\n unmounted: unmounted\n};\n\nfunction install(app) {\n app.directive('observe-visibility', ObserveVisibility);\n /* -- Add more components here -- */\n}\n/* -- Plugin definition & Auto-install -- */\n\n/* You shouldn't have to modify the code below */\n// Plugin\n\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"2.0.0-alpha.1\",\n install: install\n};\n\nexport default plugin;\nexport { ObserveVisibility, install };\n","import { markRaw, shallowReactive, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, normalizeClass, renderSlot, createCommentVNode, createBlock, resolveDynamicComponent, normalizeStyle, withCtx, Fragment, renderList, mergeProps, toHandlers, createVNode, normalizeProps, guardReactiveProps, h, reactive } from 'vue';\nimport { ResizeObserver as ResizeObserver$1 } from 'vue-resize';\nimport { ObserveVisibility } from 'vue-observe-visibility';\nimport mitt from 'mitt';\n\nvar config = {\n itemsLimit: 1000\n};\n\n// Fork of https://github.com/olahol/scrollparent.js to be able to build with Rollup\n\nvar regex = /(auto|scroll)/;\nfunction parents(node, ps) {\n if (node.parentNode === null) {\n return ps;\n }\n return parents(node.parentNode, ps.concat([node]));\n}\nvar style = function style(node, prop) {\n return getComputedStyle(node, null).getPropertyValue(prop);\n};\nvar overflow = function overflow(node) {\n return style(node, 'overflow') + style(node, 'overflow-y') + style(node, 'overflow-x');\n};\nvar scroll = function scroll(node) {\n return regex.test(overflow(node));\n};\nfunction getScrollParent(node) {\n if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n return;\n }\n var ps = parents(node.parentNode, []);\n for (var i = 0; i < ps.length; i += 1) {\n if (scroll(ps[i])) {\n return ps[i];\n }\n }\n return document.scrollingElement || document.documentElement;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nvar props = {\n items: {\n type: Array,\n required: true\n },\n keyField: {\n type: String,\n default: 'id'\n },\n direction: {\n type: String,\n default: 'vertical',\n validator: function validator(value) {\n return ['vertical', 'horizontal'].includes(value);\n }\n },\n listTag: {\n type: String,\n default: 'div'\n },\n itemTag: {\n type: String,\n default: 'div'\n }\n};\nfunction simpleArray() {\n return this.items.length && _typeof(this.items[0]) !== 'object';\n}\n\nvar supportsPassive = false;\nif (typeof window !== 'undefined') {\n supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n } catch (e) {}\n}\n\nlet uid = 0;\n\nvar script$2 = {\n name: 'RecycleScroller',\n\n components: {\n ResizeObserver: ResizeObserver$1,\n },\n\n directives: {\n ObserveVisibility,\n },\n\n props: {\n ...props,\n\n itemSize: {\n type: Number,\n default: null,\n },\n\n gridItems: {\n type: Number,\n default: undefined,\n },\n\n itemSecondarySize: {\n type: Number,\n default: undefined,\n },\n\n minItemSize: {\n type: [Number, String],\n default: null,\n },\n\n sizeField: {\n type: String,\n default: 'size',\n },\n\n typeField: {\n type: String,\n default: 'type',\n },\n\n buffer: {\n type: Number,\n default: 200,\n },\n\n pageMode: {\n type: Boolean,\n default: false,\n },\n\n prerender: {\n type: Number,\n default: 0,\n },\n\n emitUpdate: {\n type: Boolean,\n default: false,\n },\n\n updateInterval: {\n type: Number,\n default: 0,\n },\n\n skipHover: {\n type: Boolean,\n default: false,\n },\n\n listTag: {\n type: String,\n default: 'div',\n },\n\n itemTag: {\n type: String,\n default: 'div',\n },\n\n listClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n itemClass: {\n type: [String, Object, Array],\n default: '',\n },\n },\n\n emits: [\n 'resize',\n 'visible',\n 'hidden',\n 'update',\n 'scroll-start',\n 'scroll-end',\n ],\n\n data () {\n return {\n pool: [],\n totalSize: 0,\n ready: false,\n hoverKey: null,\n }\n },\n\n computed: {\n sizes () {\n if (this.itemSize === null) {\n const sizes = {\n '-1': { accumulator: 0 },\n };\n const items = this.items;\n const field = this.sizeField;\n const minItemSize = this.minItemSize;\n let computedMinSize = 10000;\n let accumulator = 0;\n let current;\n for (let i = 0, l = items.length; i < l; i++) {\n current = items[i][field] || minItemSize;\n if (current < computedMinSize) {\n computedMinSize = current;\n }\n accumulator += current;\n sizes[i] = { accumulator, size: current };\n }\n // eslint-disable-next-line\n this.$_computedMinItemSize = computedMinSize;\n return sizes\n }\n return []\n },\n\n simpleArray,\n\n itemIndexByKey () {\n const { keyField, items } = this;\n const result = {};\n for (let i = 0, l = items.length; i < l; i++) {\n result[items[i][keyField]] = i;\n }\n return result\n },\n },\n\n watch: {\n items () {\n this.updateVisibleItems(true);\n },\n\n pageMode () {\n this.applyPageMode();\n this.updateVisibleItems(false);\n },\n\n sizes: {\n handler () {\n this.updateVisibleItems(false);\n },\n deep: true,\n },\n\n gridItems () {\n this.updateVisibleItems(true);\n },\n\n itemSecondarySize () {\n this.updateVisibleItems(true);\n },\n },\n\n created () {\n this.$_startIndex = 0;\n this.$_endIndex = 0;\n this.$_views = new Map();\n this.$_unusedViews = new Map();\n this.$_scrollDirty = false;\n this.$_lastUpdateScrollPosition = 0;\n\n // In SSR mode, we also prerender the same number of item for the first render\n // to avoir mismatch between server and client templates\n if (this.prerender) {\n this.$_prerender = true;\n this.updateVisibleItems(false);\n }\n\n if (this.gridItems && !this.itemSize) {\n console.error('[vue-recycle-scroller] You must provide an itemSize when using gridItems');\n }\n },\n\n mounted () {\n this.applyPageMode();\n this.$nextTick(() => {\n // In SSR mode, render the real number of visible items\n this.$_prerender = false;\n this.updateVisibleItems(true);\n this.ready = true;\n });\n },\n\n activated () {\n const lastPosition = this.$_lastUpdateScrollPosition;\n if (typeof lastPosition === 'number') {\n this.$nextTick(() => {\n this.scrollToPosition(lastPosition);\n });\n }\n },\n\n beforeUnmount () {\n this.removeListeners();\n },\n\n methods: {\n addView (pool, index, item, key, type) {\n const nr = markRaw({\n id: uid++,\n index,\n used: true,\n key,\n type,\n });\n const view = shallowReactive({\n item,\n position: 0,\n nr,\n });\n pool.push(view);\n return view\n },\n\n unuseView (view, fake = false) {\n const unusedViews = this.$_unusedViews;\n const type = view.nr.type;\n let unusedPool = unusedViews.get(type);\n if (!unusedPool) {\n unusedPool = [];\n unusedViews.set(type, unusedPool);\n }\n unusedPool.push(view);\n if (!fake) {\n view.nr.used = false;\n view.position = -9999;\n }\n },\n\n handleResize () {\n this.$emit('resize');\n if (this.ready) this.updateVisibleItems(false);\n },\n\n handleScroll (event) {\n if (!this.$_scrollDirty) {\n this.$_scrollDirty = true;\n if (this.$_updateTimeout) return\n\n const requestUpdate = () => requestAnimationFrame(() => {\n this.$_scrollDirty = false;\n const { continuous } = this.updateVisibleItems(false, true);\n\n // It seems sometimes chrome doesn't fire scroll event :/\n // When non continous scrolling is ending, we force a refresh\n if (!continuous) {\n clearTimeout(this.$_refreshTimout);\n this.$_refreshTimout = setTimeout(this.handleScroll, this.updateInterval + 100);\n }\n });\n\n requestUpdate();\n\n // Schedule the next update with throttling\n if (this.updateInterval) {\n this.$_updateTimeout = setTimeout(() => {\n this.$_updateTimeout = 0;\n if (this.$_scrollDirty) requestUpdate();\n }, this.updateInterval);\n }\n }\n },\n\n handleVisibilityChange (isVisible, entry) {\n if (this.ready) {\n if (isVisible || entry.boundingClientRect.width !== 0 || entry.boundingClientRect.height !== 0) {\n this.$emit('visible');\n requestAnimationFrame(() => {\n this.updateVisibleItems(false);\n });\n } else {\n this.$emit('hidden');\n }\n }\n },\n\n updateVisibleItems (checkItem, checkPositionDiff = false) {\n const itemSize = this.itemSize;\n const gridItems = this.gridItems || 1;\n const itemSecondarySize = this.itemSecondarySize || itemSize;\n const minItemSize = this.$_computedMinItemSize;\n const typeField = this.typeField;\n const keyField = this.simpleArray ? null : this.keyField;\n const items = this.items;\n const count = items.length;\n const sizes = this.sizes;\n const views = this.$_views;\n const unusedViews = this.$_unusedViews;\n const pool = this.pool;\n const itemIndexByKey = this.itemIndexByKey;\n let startIndex, endIndex;\n let totalSize;\n let visibleStartIndex, visibleEndIndex;\n\n if (!count) {\n startIndex = endIndex = visibleStartIndex = visibleEndIndex = totalSize = 0;\n } else if (this.$_prerender) {\n startIndex = visibleStartIndex = 0;\n endIndex = visibleEndIndex = Math.min(this.prerender, items.length);\n totalSize = null;\n } else {\n const scroll = this.getScroll();\n\n // Skip update if use hasn't scrolled enough\n if (checkPositionDiff) {\n let positionDiff = scroll.start - this.$_lastUpdateScrollPosition;\n if (positionDiff < 0) positionDiff = -positionDiff;\n if ((itemSize === null && positionDiff < minItemSize) || positionDiff < itemSize) {\n return {\n continuous: true,\n }\n }\n }\n this.$_lastUpdateScrollPosition = scroll.start;\n\n const buffer = this.buffer;\n scroll.start -= buffer;\n scroll.end += buffer;\n\n // account for leading slot\n let beforeSize = 0;\n if (this.$refs.before) {\n beforeSize = this.$refs.before.scrollHeight;\n scroll.start -= beforeSize;\n }\n\n // account for trailing slot\n if (this.$refs.after) {\n const afterSize = this.$refs.after.scrollHeight;\n scroll.end += afterSize;\n }\n\n // Variable size mode\n if (itemSize === null) {\n let h;\n let a = 0;\n let b = count - 1;\n let i = ~~(count / 2);\n let oldI;\n\n // Searching for startIndex\n do {\n oldI = i;\n h = sizes[i].accumulator;\n if (h < scroll.start) {\n a = i;\n } else if (i < count - 1 && sizes[i + 1].accumulator > scroll.start) {\n b = i;\n }\n i = ~~((a + b) / 2);\n } while (i !== oldI)\n i < 0 && (i = 0);\n startIndex = i;\n\n // For container style\n totalSize = sizes[count - 1].accumulator;\n\n // Searching for endIndex\n for (endIndex = i; endIndex < count && sizes[endIndex].accumulator < scroll.end; endIndex++);\n if (endIndex === -1) {\n endIndex = items.length - 1;\n } else {\n endIndex++;\n // Bounds\n endIndex > count && (endIndex = count);\n }\n\n // search visible startIndex\n for (visibleStartIndex = startIndex; visibleStartIndex < count && (beforeSize + sizes[visibleStartIndex].accumulator) < scroll.start; visibleStartIndex++);\n\n // search visible endIndex\n for (visibleEndIndex = visibleStartIndex; visibleEndIndex < count && (beforeSize + sizes[visibleEndIndex].accumulator) < scroll.end; visibleEndIndex++);\n } else {\n // Fixed size mode\n startIndex = ~~(scroll.start / itemSize * gridItems);\n const remainer = startIndex % gridItems;\n startIndex -= remainer;\n endIndex = Math.ceil(scroll.end / itemSize * gridItems);\n visibleStartIndex = Math.max(0, Math.floor((scroll.start - beforeSize) / itemSize * gridItems));\n visibleEndIndex = Math.floor((scroll.end - beforeSize) / itemSize * gridItems);\n\n // Bounds\n startIndex < 0 && (startIndex = 0);\n endIndex > count && (endIndex = count);\n visibleStartIndex < 0 && (visibleStartIndex = 0);\n visibleEndIndex > count && (visibleEndIndex = count);\n\n totalSize = Math.ceil(count / gridItems) * itemSize;\n }\n }\n\n if (endIndex - startIndex > config.itemsLimit) {\n this.itemsLimitError();\n }\n\n this.totalSize = totalSize;\n\n let view;\n\n const continuous = startIndex <= this.$_endIndex && endIndex >= this.$_startIndex;\n\n // Unuse views that are no longer visible\n if (continuous) {\n for (let i = 0, l = pool.length; i < l; i++) {\n view = pool[i];\n if (view.nr.used) {\n // Update view item index\n if (checkItem) {\n view.nr.index = itemIndexByKey[view.item[keyField]];\n }\n\n // Check if index is still in visible range\n if (\n view.nr.index == null ||\n view.nr.index < startIndex ||\n view.nr.index >= endIndex\n ) {\n this.unuseView(view);\n }\n }\n }\n }\n\n const unusedIndex = continuous ? null : new Map();\n\n let item, type;\n let v;\n for (let i = startIndex; i < endIndex; i++) {\n item = items[i];\n const key = keyField ? item[keyField] : item;\n if (key == null) {\n throw new Error(`Key is ${key} on item (keyField is '${keyField}')`)\n }\n view = views.get(key);\n\n if (!itemSize && !sizes[i].size) {\n if (view) this.unuseView(view);\n continue\n }\n\n type = item[typeField];\n\n let unusedPool = unusedViews.get(type);\n let newlyUsedView = false;\n\n // No view assigned to item\n if (!view) {\n if (continuous) {\n // Reuse existing view\n if (unusedPool && unusedPool.length) {\n view = unusedPool.pop();\n } else {\n view = this.addView(pool, i, item, key, type);\n }\n } else {\n // Use existing view\n // We don't care if they are already used\n // because we are not in continous scrolling\n v = unusedIndex.get(type) || 0;\n\n if (!unusedPool || v >= unusedPool.length) {\n view = this.addView(pool, i, item, key, type);\n this.unuseView(view, true);\n unusedPool = unusedViews.get(type);\n }\n\n view = unusedPool[v];\n unusedIndex.set(type, v + 1);\n }\n\n // Assign view to item\n views.delete(view.nr.key);\n view.nr.used = true;\n view.nr.index = i;\n view.nr.key = key;\n view.nr.type = type;\n views.set(key, view);\n\n newlyUsedView = true;\n } else {\n // View already assigned to item\n if (!view.nr.used) {\n view.nr.used = true;\n newlyUsedView = true;\n if (unusedPool) {\n const index = unusedPool.indexOf(view);\n if (index !== -1) unusedPool.splice(index, 1);\n }\n }\n }\n\n // Always set item in case it's a new object with the same key\n view.item = item;\n\n if (newlyUsedView) {\n if (i === items.length - 1) this.$emit('scroll-end');\n if (i === 0) this.$emit('scroll-start');\n }\n\n // Update position\n if (itemSize === null) {\n view.position = sizes[i - 1].accumulator;\n view.offset = 0;\n } else {\n view.position = Math.floor(i / gridItems) * itemSize;\n view.offset = (i % gridItems) * itemSecondarySize;\n }\n }\n\n this.$_startIndex = startIndex;\n this.$_endIndex = endIndex;\n\n if (this.emitUpdate) this.$emit('update', startIndex, endIndex, visibleStartIndex, visibleEndIndex);\n\n // After the user has finished scrolling\n // Sort views so text selection is correct\n clearTimeout(this.$_sortTimer);\n this.$_sortTimer = setTimeout(this.sortViews, this.updateInterval + 300);\n\n return {\n continuous,\n }\n },\n\n getListenerTarget () {\n let target = getScrollParent(this.$el);\n // Fix global scroll target for Chrome and Safari\n if (window.document && (target === window.document.documentElement || target === window.document.body)) {\n target = window;\n }\n return target\n },\n\n getScroll () {\n const { $el: el, direction } = this;\n const isVertical = direction === 'vertical';\n let scrollState;\n\n if (this.pageMode) {\n const bounds = el.getBoundingClientRect();\n const boundsSize = isVertical ? bounds.height : bounds.width;\n let start = -(isVertical ? bounds.top : bounds.left);\n let size = isVertical ? window.innerHeight : window.innerWidth;\n if (start < 0) {\n size += start;\n start = 0;\n }\n if (start + size > boundsSize) {\n size = boundsSize - start;\n }\n scrollState = {\n start,\n end: start + size,\n };\n } else if (isVertical) {\n scrollState = {\n start: el.scrollTop,\n end: el.scrollTop + el.clientHeight,\n };\n } else {\n scrollState = {\n start: el.scrollLeft,\n end: el.scrollLeft + el.clientWidth,\n };\n }\n\n return scrollState\n },\n\n applyPageMode () {\n if (this.pageMode) {\n this.addListeners();\n } else {\n this.removeListeners();\n }\n },\n\n addListeners () {\n this.listenerTarget = this.getListenerTarget();\n this.listenerTarget.addEventListener('scroll', this.handleScroll, supportsPassive\n ? {\n passive: true,\n }\n : false);\n this.listenerTarget.addEventListener('resize', this.handleResize);\n },\n\n removeListeners () {\n if (!this.listenerTarget) {\n return\n }\n\n this.listenerTarget.removeEventListener('scroll', this.handleScroll);\n this.listenerTarget.removeEventListener('resize', this.handleResize);\n\n this.listenerTarget = null;\n },\n\n scrollToItem (index) {\n let scroll;\n const gridItems = this.gridItems || 1;\n if (this.itemSize === null) {\n scroll = index > 0 ? this.sizes[index - 1].accumulator : 0;\n } else {\n scroll = Math.floor(index / gridItems) * this.itemSize;\n }\n this.scrollToPosition(scroll);\n },\n\n scrollToPosition (position) {\n const direction = this.direction === 'vertical'\n ? { scroll: 'scrollTop', start: 'top' }\n : { scroll: 'scrollLeft', start: 'left' };\n\n let viewport;\n let scrollDirection;\n let scrollDistance;\n\n if (this.pageMode) {\n const viewportEl = getScrollParent(this.$el);\n // HTML doesn't overflow like other elements\n const scrollTop = viewportEl.tagName === 'HTML' ? 0 : viewportEl[direction.scroll];\n const bounds = viewportEl.getBoundingClientRect();\n\n const scroller = this.$el.getBoundingClientRect();\n const scrollerPosition = scroller[direction.start] - bounds[direction.start];\n\n viewport = viewportEl;\n scrollDirection = direction.scroll;\n scrollDistance = position + scrollTop + scrollerPosition;\n } else {\n viewport = this.$el;\n scrollDirection = direction.scroll;\n scrollDistance = position;\n }\n\n viewport[scrollDirection] = scrollDistance;\n },\n\n itemsLimitError () {\n setTimeout(() => {\n console.log('It seems the scroller element isn\\'t scrolling, so it tries to render all the items at once.', 'Scroller:', this.$el);\n console.log('Make sure the scroller has a fixed height (or width) and \\'overflow-y\\' (or \\'overflow-x\\') set to \\'auto\\' so it can scroll correctly and only render the items visible in the scroll viewport.');\n });\n throw new Error('Rendered items limit reached')\n },\n\n sortViews () {\n this.pool.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index);\n },\n },\n};\n\nconst _hoisted_1 = {\n key: 0,\n ref: \"before\",\n class: \"vue-recycle-scroller__slot\"\n};\nconst _hoisted_2 = {\n key: 1,\n ref: \"after\",\n class: \"vue-recycle-scroller__slot\"\n};\n\nfunction render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ResizeObserver = resolveComponent(\"ResizeObserver\");\n const _directive_observe_visibility = resolveDirective(\"observe-visibility\");\n\n return withDirectives((openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vue-recycle-scroller\", {\n ready: $data.ready,\n 'page-mode': $props.pageMode,\n [`direction-${_ctx.direction}`]: true,\n }]),\n onScrollPassive: _cache[0] || (_cache[0] = (...args) => ($options.handleScroll && $options.handleScroll(...args)))\n }, [\n (_ctx.$slots.before)\n ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n renderSlot(_ctx.$slots, \"before\")\n ], 512 /* NEED_PATCH */))\n : createCommentVNode(\"v-if\", true),\n (openBlock(), createBlock(resolveDynamicComponent($props.listTag), {\n ref: \"wrapper\",\n style: normalizeStyle({ [_ctx.direction === 'vertical' ? 'minHeight' : 'minWidth']: $data.totalSize + 'px' }),\n class: normalizeClass([\"vue-recycle-scroller__item-wrapper\", $props.listClass])\n }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.pool, (view) => {\n return (openBlock(), createBlock(resolveDynamicComponent($props.itemTag), mergeProps({\n key: view.nr.id,\n style: $data.ready ? {\n transform: `translate${_ctx.direction === 'vertical' ? 'Y' : 'X'}(${view.position}px) translate${_ctx.direction === 'vertical' ? 'X' : 'Y'}(${view.offset}px)`,\n width: $props.gridItems ? `${_ctx.direction === 'vertical' ? $props.itemSecondarySize || $props.itemSize : $props.itemSize}px` : undefined,\n height: $props.gridItems ? `${_ctx.direction === 'horizontal' ? $props.itemSecondarySize || $props.itemSize : $props.itemSize}px` : undefined,\n } : null,\n class: [\"vue-recycle-scroller__item-view\", [\n $props.itemClass,\n {\n hover: !$props.skipHover && $data.hoverKey === view.nr.key\n },\n ]]\n }, toHandlers($props.skipHover ? {} : {\n mouseenter: () => { $data.hoverKey = view.nr.key; },\n mouseleave: () => { $data.hoverKey = null; },\n })), {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {\n item: view.item,\n index: view.nr.index,\n active: view.nr.used\n })\n ]),\n _: 2 /* DYNAMIC */\n }, 1040 /* FULL_PROPS, DYNAMIC_SLOTS */, [\"style\", \"class\"]))\n }), 128 /* KEYED_FRAGMENT */)),\n renderSlot(_ctx.$slots, \"empty\")\n ]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"style\", \"class\"])),\n (_ctx.$slots.after)\n ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"after\")\n ], 512 /* NEED_PATCH */))\n : createCommentVNode(\"v-if\", true),\n createVNode(_component_ResizeObserver, { onNotify: $options.handleResize }, null, 8 /* PROPS */, [\"onNotify\"])\n ], 34 /* CLASS, HYDRATE_EVENTS */)), [\n [_directive_observe_visibility, $options.handleVisibilityChange]\n ])\n}\n\nscript$2.render = render$1;\nscript$2.__file = \"src/components/RecycleScroller.vue\";\n\nvar script$1 = {\n name: 'DynamicScroller',\n\n components: {\n RecycleScroller: script$2,\n },\n\n provide () {\n if (typeof ResizeObserver !== 'undefined') {\n this.$_resizeObserver = new ResizeObserver(entries => {\n requestAnimationFrame(() => {\n if (!Array.isArray(entries)) {\n return\n }\n for (const entry of entries) {\n if (entry.target && entry.target.$_vs_onResize) {\n let width, height;\n if (entry.borderBoxSize) {\n const resizeObserverSize = entry.borderBoxSize[0];\n width = resizeObserverSize.inlineSize;\n height = resizeObserverSize.blockSize;\n } else {\n // @TODO remove when contentRect is deprecated\n width = entry.contentRect.width;\n height = entry.contentRect.height;\n }\n entry.target.$_vs_onResize(entry.target.$_vs_id, width, height);\n }\n }\n });\n });\n }\n\n return {\n vscrollData: this.vscrollData,\n vscrollParent: this,\n vscrollResizeObserver: this.$_resizeObserver,\n }\n },\n\n inheritAttrs: false,\n\n props: {\n ...props,\n\n minItemSize: {\n type: [Number, String],\n required: true,\n },\n },\n\n emits: [\n 'resize',\n 'visible',\n ],\n\n data () {\n return {\n vscrollData: {\n active: true,\n sizes: {},\n keyField: this.keyField,\n simpleArray: false,\n },\n }\n },\n\n computed: {\n simpleArray,\n\n itemsWithSize () {\n const result = [];\n const { items, keyField, simpleArray } = this;\n const sizes = this.vscrollData.sizes;\n const l = items.length;\n for (let i = 0; i < l; i++) {\n const item = items[i];\n const id = simpleArray ? i : item[keyField];\n let size = sizes[id];\n if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {\n size = 0;\n }\n result.push({\n item,\n id,\n size,\n });\n }\n return result\n },\n },\n\n watch: {\n items () {\n this.forceUpdate();\n },\n\n simpleArray: {\n handler (value) {\n this.vscrollData.simpleArray = value;\n },\n immediate: true,\n },\n\n direction (value) {\n this.forceUpdate(true);\n },\n\n itemsWithSize (next, prev) {\n const scrollTop = this.$el.scrollTop;\n\n // Calculate total diff between prev and next sizes\n // over current scroll top. Then add it to scrollTop to\n // avoid jumping the contents that the user is seeing.\n let prevActiveTop = 0; let activeTop = 0;\n const length = Math.min(next.length, prev.length);\n for (let i = 0; i < length; i++) {\n if (prevActiveTop >= scrollTop) {\n break\n }\n prevActiveTop += prev[i].size || this.minItemSize;\n activeTop += next[i].size || this.minItemSize;\n }\n const offset = activeTop - prevActiveTop;\n\n if (offset === 0) {\n return\n }\n\n this.$el.scrollTop += offset;\n },\n },\n\n beforeCreate () {\n this.$_updates = [];\n this.$_undefinedSizes = 0;\n this.$_undefinedMap = {};\n this.$_events = mitt();\n },\n\n activated () {\n this.vscrollData.active = true;\n },\n\n deactivated () {\n this.vscrollData.active = false;\n },\n\n unmounted () {\n this.$_events.all.clear();\n },\n\n methods: {\n onScrollerResize () {\n const scroller = this.$refs.scroller;\n if (scroller) {\n this.forceUpdate();\n }\n this.$emit('resize');\n },\n\n onScrollerVisible () {\n this.$_events.emit('vscroll:update', { force: false });\n this.$emit('visible');\n },\n\n forceUpdate (clear = false) {\n if (clear || this.simpleArray) {\n this.vscrollData.sizes = {};\n }\n this.$_events.emit('vscroll:update', { force: true });\n },\n\n scrollToItem (index) {\n const scroller = this.$refs.scroller;\n if (scroller) scroller.scrollToItem(index);\n },\n\n getItemSize (item, index = undefined) {\n const id = this.simpleArray ? (index != null ? index : this.items.indexOf(item)) : item[this.keyField];\n return this.vscrollData.sizes[id] || 0\n },\n\n scrollToBottom () {\n if (this.$_scrollingToBottom) return\n this.$_scrollingToBottom = true;\n const el = this.$el;\n // Item is inserted to the DOM\n this.$nextTick(() => {\n el.scrollTop = el.scrollHeight + 5000;\n // Item sizes are computed\n const cb = () => {\n el.scrollTop = el.scrollHeight + 5000;\n requestAnimationFrame(() => {\n el.scrollTop = el.scrollHeight + 5000;\n if (this.$_undefinedSizes === 0) {\n this.$_scrollingToBottom = false;\n } else {\n requestAnimationFrame(cb);\n }\n });\n };\n requestAnimationFrame(cb);\n });\n },\n },\n};\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_RecycleScroller = resolveComponent(\"RecycleScroller\");\n\n return (openBlock(), createBlock(_component_RecycleScroller, mergeProps({\n ref: \"scroller\",\n items: $options.itemsWithSize,\n \"min-item-size\": $props.minItemSize,\n direction: _ctx.direction,\n \"key-field\": \"id\",\n \"list-tag\": _ctx.listTag,\n \"item-tag\": _ctx.itemTag\n }, _ctx.$attrs, {\n onResize: $options.onScrollerResize,\n onVisible: $options.onScrollerVisible\n }), {\n default: withCtx(({ item: itemWithSize, index, active }) => [\n renderSlot(_ctx.$slots, \"default\", normalizeProps(guardReactiveProps({\n item: itemWithSize.item,\n index,\n active,\n itemWithSize\n })))\n ]),\n before: withCtx(() => [\n renderSlot(_ctx.$slots, \"before\")\n ]),\n after: withCtx(() => [\n renderSlot(_ctx.$slots, \"after\")\n ]),\n empty: withCtx(() => [\n renderSlot(_ctx.$slots, \"empty\")\n ]),\n _: 3 /* FORWARDED */\n }, 16 /* FULL_PROPS */, [\"items\", \"min-item-size\", \"direction\", \"list-tag\", \"item-tag\", \"onResize\", \"onVisible\"]))\n}\n\nscript$1.render = render;\nscript$1.__file = \"src/components/DynamicScroller.vue\";\n\nvar script = {\n name: 'DynamicScrollerItem',\n\n inject: [\n 'vscrollData',\n 'vscrollParent',\n 'vscrollResizeObserver',\n ],\n\n props: {\n // eslint-disable-next-line vue/require-prop-types\n item: {\n required: true,\n },\n\n watchData: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Indicates if the view is actively used to display an item.\n */\n active: {\n type: Boolean,\n required: true,\n },\n\n index: {\n type: Number,\n default: undefined,\n },\n\n sizeDependencies: {\n type: [Array, Object],\n default: null,\n },\n\n emitResize: {\n type: Boolean,\n default: false,\n },\n\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n emits: [\n 'resize',\n ],\n\n computed: {\n id () {\n if (this.vscrollData.simpleArray) return this.index\n // eslint-disable-next-line no-prototype-builtins\n if (this.vscrollData.keyField in this.item) return this.item[this.vscrollData.keyField]\n throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`)\n },\n\n size () {\n return this.vscrollData.sizes[this.id] || 0\n },\n\n finalActive () {\n return this.active && this.vscrollData.active\n },\n },\n\n watch: {\n watchData: 'updateWatchData',\n\n id (value, oldValue) {\n this.$el.$_vs_id = this.id;\n if (!this.size) {\n this.onDataUpdate();\n }\n\n if (this.$_sizeObserved) {\n // In case the old item had the same size, it won't trigger the ResizeObserver\n // since we are reusing the same DOM node\n const oldSize = this.vscrollData.sizes[oldValue];\n const size = this.vscrollData.sizes[value];\n if (oldSize != null && oldSize !== size) {\n this.applySize(oldSize);\n }\n }\n },\n\n finalActive (value) {\n if (!this.size) {\n if (value) {\n if (!this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes++;\n this.vscrollParent.$_undefinedMap[this.id] = true;\n }\n } else {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = false;\n }\n }\n }\n\n if (this.vscrollResizeObserver) {\n if (value) {\n this.observeSize();\n } else {\n this.unobserveSize();\n }\n } else if (value && this.$_pendingVScrollUpdate === this.id) {\n this.updateSize();\n }\n },\n },\n\n created () {\n if (this.$isServer) return\n\n this.$_forceNextVScrollUpdate = null;\n this.updateWatchData();\n\n if (!this.vscrollResizeObserver) {\n for (const k in this.sizeDependencies) {\n this.$watch(() => this.sizeDependencies[k], this.onDataUpdate);\n }\n\n this.vscrollParent.$_events.on('vscroll:update', this.onVscrollUpdate);\n }\n },\n\n mounted () {\n if (this.finalActive) {\n this.updateSize();\n this.observeSize();\n }\n },\n\n beforeUnmount () {\n this.vscrollParent.$_events.off('vscroll:update', this.onVscrollUpdate);\n this.unobserveSize();\n },\n\n methods: {\n updateSize () {\n if (this.finalActive) {\n if (this.$_pendingSizeUpdate !== this.id) {\n this.$_pendingSizeUpdate = this.id;\n this.$_forceNextVScrollUpdate = null;\n this.$_pendingVScrollUpdate = null;\n this.computeSize(this.id);\n }\n } else {\n this.$_forceNextVScrollUpdate = this.id;\n }\n },\n\n updateWatchData () {\n if (this.watchData && !this.vscrollResizeObserver) {\n this.$_watchData = this.$watch('item', () => {\n this.onDataUpdate();\n }, {\n deep: true,\n });\n } else if (this.$_watchData) {\n this.$_watchData();\n this.$_watchData = null;\n }\n },\n\n onVscrollUpdate ({ force }) {\n // If not active, sechedule a size update when it becomes active\n if (!this.finalActive && force) {\n this.$_pendingVScrollUpdate = this.id;\n }\n\n if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {\n this.updateSize();\n }\n },\n\n onDataUpdate () {\n this.updateSize();\n },\n\n computeSize (id) {\n this.$nextTick(() => {\n if (this.id === id) {\n const width = this.$el.offsetWidth;\n const height = this.$el.offsetHeight;\n this.applyWidthHeight(width, height);\n }\n this.$_pendingSizeUpdate = null;\n });\n },\n\n applyWidthHeight (width, height) {\n const size = ~~(this.vscrollParent.direction === 'vertical' ? height : width);\n if (size && this.size !== size) {\n this.applySize(size);\n }\n },\n\n applySize (size) {\n if (this.vscrollParent.$_undefinedMap[this.id]) {\n this.vscrollParent.$_undefinedSizes--;\n this.vscrollParent.$_undefinedMap[this.id] = undefined;\n }\n this.vscrollData.sizes[this.id] = size;\n if (this.emitResize) this.$emit('resize', this.id);\n },\n\n observeSize () {\n if (!this.vscrollResizeObserver) return\n if (this.$_sizeObserved) return\n this.vscrollResizeObserver.observe(this.$el);\n this.$el.$_vs_id = this.id;\n this.$el.$_vs_onResize = this.onResize;\n this.$_sizeObserved = true;\n },\n\n unobserveSize () {\n if (!this.vscrollResizeObserver) return\n if (!this.$_sizeObserved) return\n this.vscrollResizeObserver.unobserve(this.$el);\n this.$el.$_vs_onResize = undefined;\n this.$_sizeObserved = false;\n },\n\n onResize (id, width, height) {\n if (this.id === id) {\n this.applyWidthHeight(width, height);\n }\n },\n },\n\n render () {\n return h(this.tag, this.$slots.default())\n },\n};\n\nscript.__file = \"src/components/DynamicScrollerItem.vue\";\n\nfunction IdState () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$idProp = _ref.idProp,\n idProp = _ref$idProp === void 0 ? function (vm) {\n return vm.item.id;\n } : _ref$idProp;\n var store = reactive({});\n\n // @vue/component\n return {\n data: function data() {\n return {\n idState: null\n };\n },\n created: function created() {\n var _this = this;\n this.$_id = null;\n if (typeof idProp === 'function') {\n this.$_getId = function () {\n return idProp.call(_this, _this);\n };\n } else {\n this.$_getId = function () {\n return _this[idProp];\n };\n }\n this.$watch(this.$_getId, {\n handler: function handler(value) {\n var _this2 = this;\n this.$nextTick(function () {\n _this2.$_id = value;\n });\n },\n immediate: true\n });\n this.$_updateIdState();\n },\n beforeUpdate: function beforeUpdate() {\n this.$_updateIdState();\n },\n methods: {\n /**\n * Initialize an idState\n * @param {number|string} id Unique id for the data\n */$_idStateInit: function $_idStateInit(id) {\n var factory = this.$options.idState;\n if (typeof factory === 'function') {\n var data = factory.call(this, this);\n store[id] = data;\n this.$_id = id;\n return data;\n } else {\n throw new Error('[mixin IdState] Missing `idState` function on component definition.');\n }\n },\n /**\n * Ensure idState is created and up-to-date\n */$_updateIdState: function $_updateIdState() {\n var id = this.$_getId();\n if (id == null) {\n console.warn(\"No id found for IdState with idProp: '\".concat(idProp, \"'.\"));\n }\n if (id !== this.$_id) {\n if (!store[id]) {\n this.$_idStateInit(id);\n }\n this.idState = store[id];\n }\n }\n }\n };\n}\n\nfunction registerComponents(app, prefix) {\n app.component(\"\".concat(prefix, \"recycle-scroller\"), script$2);\n app.component(\"\".concat(prefix, \"RecycleScroller\"), script$2);\n app.component(\"\".concat(prefix, \"dynamic-scroller\"), script$1);\n app.component(\"\".concat(prefix, \"DynamicScroller\"), script$1);\n app.component(\"\".concat(prefix, \"dynamic-scroller-item\"), script);\n app.component(\"\".concat(prefix, \"DynamicScrollerItem\"), script);\n}\nvar plugin = {\n // eslint-disable-next-line no-undef\n version: \"2.0.0-beta.8\",\n install: function install(app, options) {\n var finalOptions = Object.assign({}, {\n installComponents: true,\n componentsPrefix: ''\n }, options);\n for (var key in finalOptions) {\n if (typeof finalOptions[key] !== 'undefined') {\n config[key] = finalOptions[key];\n }\n }\n if (finalOptions.installComponents) {\n registerComponents(app, finalOptions.componentsPrefix);\n }\n }\n};\n\nexport { script$1 as DynamicScroller, script as DynamicScrollerItem, IdState, script$2 as RecycleScroller, plugin as default };\n//# sourceMappingURL=vue-virtual-scroller.esm.js.map\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i&&i.push(e)||n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&i.splice(i.indexOf(e)>>>0,1)},emit:function(t,e){(n.get(t)||[]).slice().map(function(n){n(e)}),(n.get(\"*\")||[]).slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.es.js.map\n","export function getDevtoolsGlobalHook() {\n return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;\n}\nexport function getTarget() {\n // @ts-ignore\n return (typeof navigator !== 'undefined' && typeof window !== 'undefined')\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\n}\nexport const isProxyAvailable = typeof Proxy === 'function';\n","let supported;\nlet perf;\nexport function isPerformanceSupported() {\n var _a;\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {\n supported = true;\n perf = global.perf_hooks.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\nexport function now() {\n return isPerformanceSupported() ? perf.now() : Date.now();\n}\n","import { HOOK_PLUGIN_SETTINGS_SET } from './const';\nimport { now } from './time';\nexport class ApiProxy {\n constructor(plugin, hook) {\n this.target = null;\n this.targetQueue = [];\n this.onQueue = [];\n this.plugin = plugin;\n this.hook = hook;\n const defaultSettings = {};\n if (plugin.settings) {\n for (const id in plugin.settings) {\n const item = plugin.settings[id];\n defaultSettings[id] = item.defaultValue;\n }\n }\n const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;\n let currentSettings = Object.assign({}, defaultSettings);\n try {\n const raw = localStorage.getItem(localSettingsSaveId);\n const data = JSON.parse(raw);\n Object.assign(currentSettings, data);\n }\n catch (e) {\n // noop\n }\n this.fallbacks = {\n getSettings() {\n return currentSettings;\n },\n setSettings(value) {\n try {\n localStorage.setItem(localSettingsSaveId, JSON.stringify(value));\n }\n catch (e) {\n // noop\n }\n currentSettings = value;\n },\n now() {\n return now();\n },\n };\n if (hook) {\n hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {\n if (pluginId === this.plugin.id) {\n this.fallbacks.setSettings(value);\n }\n });\n }\n this.proxiedOn = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target.on[prop];\n }\n else {\n return (...args) => {\n this.onQueue.push({\n method: prop,\n args,\n });\n };\n }\n },\n });\n this.proxiedTarget = new Proxy({}, {\n get: (_target, prop) => {\n if (this.target) {\n return this.target[prop];\n }\n else if (prop === 'on') {\n return this.proxiedOn;\n }\n else if (Object.keys(this.fallbacks).includes(prop)) {\n return (...args) => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve: () => { },\n });\n return this.fallbacks[prop](...args);\n };\n }\n else {\n return (...args) => {\n return new Promise(resolve => {\n this.targetQueue.push({\n method: prop,\n args,\n resolve,\n });\n });\n };\n }\n },\n });\n }\n async setRealTarget(target) {\n this.target = target;\n for (const item of this.onQueue) {\n this.target.on[item.method](...item.args);\n }\n for (const item of this.targetQueue) {\n item.resolve(await this.target[item.method](...item.args));\n }\n }\n}\n","export const HOOK_SETUP = 'devtools-plugin:setup';\nexport const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set';\n","/*!\n * vuex v4.1.0\n * (c) 2022 Evan You\n * @license MIT\n */\nimport { inject, effectScope, reactive, watch, computed } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\nvar storeKey = 'store';\n\nfunction useStore (key) {\n if ( key === void 0 ) key = null;\n\n return inject(key !== null ? key : storeKey)\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array<Object>} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset state\n resetStoreState(store, state, hot);\n}\n\nfunction resetStoreState (store, state, hot) {\n var oldState = store._state;\n var oldScope = store._scope;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computedObj = {};\n var computedCache = {};\n\n // create a new effect scope and create computed object inside it to avoid\n // getters (computed) getting destroyed on component unmount.\n var scope = effectScope(true);\n\n scope.run(function () {\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldState.\n // using partial to return function with only arguments preserved in closure environment.\n computedObj[key] = partial(fn, store);\n computedCache[key] = computed(function () { return computedObj[key](); });\n Object.defineProperty(store.getters, key, {\n get: function () { return computedCache[key].value; },\n enumerable: true // for local getters\n });\n });\n });\n\n store._state = reactive({\n data: state\n });\n\n // register the newly created effect scope to the store so that we can\n // dispose the effects when this method runs again in the future.\n store._scope = scope;\n\n // enable strict mode for new state\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldState) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldState.data = null;\n });\n }\n }\n\n // dispose previously registered effect scope if there is one.\n if (oldScope) {\n oldScope.stop();\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n parentState[moduleName] = module.state;\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by state update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n watch(function () { return store._state.data; }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, flush: 'sync' });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nvar LABEL_VUEX_BINDINGS = 'vuex bindings';\nvar MUTATIONS_LAYER_ID = 'vuex:mutations';\nvar ACTIONS_LAYER_ID = 'vuex:actions';\nvar INSPECTOR_ID = 'vuex';\n\nvar actionId = 0;\n\nfunction addDevtools (app, store) {\n setupDevtoolsPlugin(\n {\n id: 'org.vuejs.vuex',\n app: app,\n label: 'Vuex',\n homepage: 'https://next.vuex.vuejs.org/',\n logo: 'https://vuejs.org/images/icons/favicon-96x96.png',\n packageName: 'vuex',\n componentStateTypes: [LABEL_VUEX_BINDINGS]\n },\n function (api) {\n api.addTimelineLayer({\n id: MUTATIONS_LAYER_ID,\n label: 'Vuex Mutations',\n color: COLOR_LIME_500\n });\n\n api.addTimelineLayer({\n id: ACTIONS_LAYER_ID,\n label: 'Vuex Actions',\n color: COLOR_LIME_500\n });\n\n api.addInspector({\n id: INSPECTOR_ID,\n label: 'Vuex',\n icon: 'storage',\n treeFilterPlaceholder: 'Filter stores...'\n });\n\n api.on.getInspectorTree(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n if (payload.filter) {\n var nodes = [];\n flattenStoreForInspectorTree(nodes, store._modules.root, payload.filter, '');\n payload.rootNodes = nodes;\n } else {\n payload.rootNodes = [\n formatStoreForInspectorTree(store._modules.root, '')\n ];\n }\n }\n });\n\n api.on.getInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n makeLocalGetters(store, modulePath);\n payload.state = formatStoreForInspectorState(\n getStoreModule(store._modules, modulePath),\n modulePath === 'root' ? store.getters : store._makeLocalGettersCache,\n modulePath\n );\n }\n });\n\n api.on.editInspectorState(function (payload) {\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\n var modulePath = payload.nodeId;\n var path = payload.path;\n if (modulePath !== 'root') {\n path = modulePath.split('/').filter(Boolean).concat( path);\n }\n store._withCommit(function () {\n payload.set(store._state.data, path, payload.state.value);\n });\n }\n });\n\n store.subscribe(function (mutation, state) {\n var data = {};\n\n if (mutation.payload) {\n data.payload = mutation.payload;\n }\n\n data.state = state;\n\n api.notifyComponentUpdate();\n api.sendInspectorTree(INSPECTOR_ID);\n api.sendInspectorState(INSPECTOR_ID);\n\n api.addTimelineEvent({\n layerId: MUTATIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: mutation.type,\n data: data\n }\n });\n });\n\n store.subscribeAction({\n before: function (action, state) {\n var data = {};\n if (action.payload) {\n data.payload = action.payload;\n }\n action._id = actionId++;\n action._time = Date.now();\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: action._time,\n title: action.type,\n groupId: action._id,\n subtitle: 'start',\n data: data\n }\n });\n },\n after: function (action, state) {\n var data = {};\n var duration = Date.now() - action._time;\n data.duration = {\n _custom: {\n type: 'duration',\n display: (duration + \"ms\"),\n tooltip: 'Action duration',\n value: duration\n }\n };\n if (action.payload) {\n data.payload = action.payload;\n }\n data.state = state;\n\n api.addTimelineEvent({\n layerId: ACTIONS_LAYER_ID,\n event: {\n time: Date.now(),\n title: action.type,\n groupId: action._id,\n subtitle: 'end',\n data: data\n }\n });\n }\n });\n }\n );\n}\n\n// extracted from tailwind palette\nvar COLOR_LIME_500 = 0x84cc16;\nvar COLOR_DARK = 0x666666;\nvar COLOR_WHITE = 0xffffff;\n\nvar TAG_NAMESPACED = {\n label: 'namespaced',\n textColor: COLOR_WHITE,\n backgroundColor: COLOR_DARK\n};\n\n/**\n * @param {string} path\n */\nfunction extractNameFromPath (path) {\n return path && path !== 'root' ? path.split('/').slice(-2, -1)[0] : 'Root'\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorNode}\n */\nfunction formatStoreForInspectorTree (module, path) {\n return {\n id: path || 'root',\n // all modules end with a `/`, we want the last segment only\n // cart/ -> cart\n // nested/cart/ -> cart\n label: extractNameFromPath(path),\n tags: module.namespaced ? [TAG_NAMESPACED] : [],\n children: Object.keys(module._children).map(function (moduleName) { return formatStoreForInspectorTree(\n module._children[moduleName],\n path + moduleName + '/'\n ); }\n )\n }\n}\n\n/**\n * @param {import('@vue/devtools-api').CustomInspectorNode[]} result\n * @param {*} module\n * @param {string} filter\n * @param {string} path\n */\nfunction flattenStoreForInspectorTree (result, module, filter, path) {\n if (path.includes(filter)) {\n result.push({\n id: path || 'root',\n label: path.endsWith('/') ? path.slice(0, path.length - 1) : path || 'Root',\n tags: module.namespaced ? [TAG_NAMESPACED] : []\n });\n }\n Object.keys(module._children).forEach(function (moduleName) {\n flattenStoreForInspectorTree(result, module._children[moduleName], filter, path + moduleName + '/');\n });\n}\n\n/**\n * @param {*} module\n * @return {import('@vue/devtools-api').CustomInspectorState}\n */\nfunction formatStoreForInspectorState (module, getters, path) {\n getters = path === 'root' ? getters : getters[path];\n var gettersKeys = Object.keys(getters);\n var storeState = {\n state: Object.keys(module.state).map(function (key) { return ({\n key: key,\n editable: true,\n value: module.state[key]\n }); })\n };\n\n if (gettersKeys.length) {\n var tree = transformPathsToObjectTree(getters);\n storeState.getters = Object.keys(tree).map(function (key) { return ({\n key: key.endsWith('/') ? extractNameFromPath(key) : key,\n editable: false,\n value: canThrow(function () { return tree[key]; })\n }); });\n }\n\n return storeState\n}\n\nfunction transformPathsToObjectTree (getters) {\n var result = {};\n Object.keys(getters).forEach(function (key) {\n var path = key.split('/');\n if (path.length > 1) {\n var target = result;\n var leafKey = path.pop();\n path.forEach(function (p) {\n if (!target[p]) {\n target[p] = {\n _custom: {\n value: {},\n display: p,\n tooltip: 'Module',\n abstract: true\n }\n };\n }\n target = target[p]._custom.value;\n });\n target[leafKey] = canThrow(function () { return getters[key]; });\n } else {\n result[key] = canThrow(function () { return getters[key]; });\n }\n });\n return result\n}\n\nfunction getStoreModule (moduleMap, path) {\n var names = path.split('/').filter(function (n) { return n; });\n return names.reduce(\n function (module, moduleName, i) {\n var child = module[moduleName];\n if (!child) {\n throw new Error((\"Missing module \\\"\" + moduleName + \"\\\" for path \\\"\" + path + \"\\\".\"))\n }\n return i === names.length - 1 ? child : child._children\n },\n path === 'root' ? moduleMap : moduleMap.root._children\n )\n}\n\nfunction canThrow (cb) {\n try {\n return cb()\n } catch (e) {\n return e\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors$1 = { namespaced: { configurable: true } };\n\nprototypeAccessors$1.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors$1 );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nfunction createStore (options) {\n return new Store(options)\n}\n\nvar Store = function Store (options) {\n var this$1$1 = this;\n if ( options === void 0 ) options = {};\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n var devtools = options.devtools;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._makeLocalGettersCache = Object.create(null);\n\n // EffectScope instance. when registering new getters, we wrap them inside\n // EffectScope so that getters (computed) would not be destroyed on\n // component unmount.\n this._scope = null;\n\n this._devtools = devtools;\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store state, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreState(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1$1); });\n};\n\nvar prototypeAccessors = { state: { configurable: true } };\n\nStore.prototype.install = function install (app, injectKey) {\n app.provide(injectKey || storeKey, this);\n app.config.globalProperties.$store = this;\n\n var useDevtools = this._devtools !== undefined\n ? this._devtools\n : (process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__;\n\n if (useDevtools) {\n addDevtools(app, this);\n }\n};\n\nprototypeAccessors.state.get = function () {\n return this._state.data\n};\n\nprototypeAccessors.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch$1 (getter, cb, options) {\n var this$1$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return watch(function () { return getter(this$1$1.state, this$1$1.getters); }, cb, Object.assign({}, options))\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1$1 = this;\n\n this._withCommit(function () {\n this$1$1._state.data = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreState(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1$1.state, path.slice(0, -1));\n delete parentState[path[path.length - 1]];\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors );\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n version: '4.1.0',\n Store: Store,\n storeKey: storeKey,\n createStore: createStore,\n useStore: useStore,\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, createStore, mapActions, mapGetters, mapMutations, mapState, storeKey, useStore };\n","import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env';\nimport { HOOK_SETUP } from './const';\nimport { ApiProxy } from './proxy';\nexport * from './api';\nexport * from './plugin';\nexport * from './time';\nexport function setupDevtoolsPlugin(pluginDescriptor, setupFn) {\n const descriptor = pluginDescriptor;\n const target = getTarget();\n const hook = getDevtoolsGlobalHook();\n const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;\n if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) {\n hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);\n }\n else {\n const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;\n const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];\n list.push({\n pluginDescriptor: descriptor,\n setupFn,\n proxy,\n });\n if (proxy)\n setupFn(proxy.proxiedTarget);\n }\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure \" + obj);\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","/*! (c) Andrea Giammarchi - ISC */\nvar self = {};\ntry {\n self.EventTarget = (new EventTarget).constructor;\n} catch(EventTarget) {\n (function (Object, wm) {\n var create = Object.create;\n var defineProperty = Object.defineProperty;\n var proto = EventTarget.prototype;\n define(proto, 'addEventListener', function (type, listener, options) {\n for (var\n secret = wm.get(this),\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener)\n return;\n }\n listeners.push({target: this, listener: listener, options: options});\n });\n define(proto, 'dispatchEvent', function (event) {\n var secret = wm.get(this);\n var listeners = secret[event.type];\n if (listeners) {\n define(event, 'target', this);\n define(event, 'currentTarget', this);\n listeners.slice(0).some(dispatch, event);\n delete event.currentTarget;\n delete event.target;\n }\n return true;\n });\n define(proto, 'removeEventListener', function (type, listener) {\n for (var\n secret = wm.get(this),\n /* istanbul ignore next */\n listeners = secret[type] || (secret[type] = []),\n i = 0, length = listeners.length; i < length; i++\n ) {\n if (listeners[i].listener === listener) {\n listeners.splice(i, 1);\n return;\n }\n }\n });\n self.EventTarget = EventTarget;\n function EventTarget() {'use strict';\n wm.set(this, create(null));\n }\n function define(target, name, value) {\n defineProperty(\n target,\n name,\n {\n configurable: true,\n writable: true,\n value: value\n }\n );\n }\n function dispatch(info) {\n var options = info.options;\n if (options && options.once)\n info.target.removeEventListener(this.type, info.listener);\n if (typeof info.listener === 'function')\n info.listener.call(info.target, this);\n else\n info.listener.handleEvent(this);\n return this._stopImmediatePropagationFlag;\n }\n }(Object, new WeakMap));\n}\nexport default self.EventTarget;\n"],"names":["ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperties","props","descriptor","configurable","writable","value","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","call","next","done","err","_iterableToArrayLimit","_unsupportedIterableToArray","TypeError","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","_nonIterableSpread","o","minLen","n","toString","slice","name","test","len","arr2","noop","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","mark","measure","window","document","MutationObserver","performance","e","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","_ref$userAgent","navigator","userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","documentElement","head","addEventListener","createElement","IS_IE","indexOf","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","Proxy","get","prop","PREFIX_TO_STYLE","STYLE_TO_PREFIX","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","oneToTen","oneToTwenty","concat","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","prefixes","Set","map","add","bind","RESERVED_CLASSES","initial","FontAwesomeConfig","querySelector","_ref","_ref2","attr","val","coerce","element","getAttribute","getAttrConfig","_default","styleDefault","familyDefault","cssPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","familyPrefix","_config","config","set","_onChangeCb","cb","d","meaninglessTransform","size","x","y","rotate","flipX","flipY","nextUniqueId","id","Math","random","toArray","array","classArray","node","classList","split","htmlEscape","str","replace","joinStyles","styles","reduce","acc","styleName","trim","transformIsMeaningful","transform","css","dcp","drc","fp","rc","s","dPatt","RegExp","customPropPatt","rPatt","_cssInserted","ensureCss","style","setAttribute","innerHTML","headChildren","childNodes","beforeChild","child","tagName","toUpperCase","insertBefore","insertCss","InjectCSS","mixout","dom","hooks","beforeDOMElementCreation","beforeI2svg","w","shims","namespace","functions","loaded","domready","fn","setTimeout","toHtml","abstractNodes","tag","_abstractNodes$attrib","attributes","_abstractNodes$childr","children","attributeName","joinAttributes","join","iconFromMapping","mapping","prefix","iconName","icon","doScroll","readyState","listener","removeEventListener","subject","initialValue","thisContext","result","undefined","func","a","b","c","bindInternal4","toHex","unicode","decoded","string","output","counter","charCodeAt","extra","ucs2decode","normalizeIcons","icons","defineIcons","params","_params$skipHooks","skipHooks","normalized","addPack","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","LONG_STYLE","values","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","getIconName","cls","parts","build","lookup","reducer","alias","aliases","hasRegular","autoFetchSvg","shimLookups","shim","maybeNameMaybeUnicode","names","unicodes","getCanonicalPrefix","family","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","styleOrPrefix","_params$family","defined","PREFIXES_FOR_FAMILY","getCanonicalIcon","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","includes","some","v","canonical","rest","aliasIconName","Library","instance","Constructor","_classCallCheck","this","definitions","protoProps","_this","_len","_key","additions","_pullDefinitions","longPrefix","definition","_normalized$key","_plugins","_hooks","providers","defaultProviderKeys","chainHooks","hook","accumulator","args","hookFns","hookFn","callHooks","_len2","_key2","callProvided","findIconDefinition","iconLookup","library","i2svg","Promise","reject","watch","autoReplaceSvgRoot","autoReplace","api","noAuto","parse","_icon","match","canonicalIcon","_prefix","_params$autoReplaceSv","domVariants","abstractCreator","abstract","container","html","makeInlineSvgAbstract","_params$icons","main","mask","symbol","title","maskId","titleId","_params$watchable","watchable","found","width","height","isUploadedIcon","attrClass","classes","content","role","uploadedIconWidthStyle","asSymbol","offset","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","styleString","class","makeLayersCounterAbstract","styles$1","asFoundIcon","vectorData","fill","missingIconResolutionMixin","findIcon","resolve","console","error","maybeNotifyMissing","noop$1","p","preamble","perf","end","noop$2","isWatched","createElementNS","convertSVG","abstractObj","_params$ceFn","ceFn","createTextNode","appendChild","mutators","mutation","parentNode","_abstract","comment","createComment","outerHTML","nodeAsComment","replaceChild","remove","nest","_abstract2","forSvg","splitClasses","toSvg","toNode","removeAttribute","newInnerHTML","performOperationSync","op","perform","mutations","callback","callbackFunction","frame","requestAnimationFrame","mutator","disabled","disableObservation","enableObservation","mo","observe","options","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","defaultPrefix","mutationRecord","type","addedNodes","hasPrefixAndIcon","_getCanonicalIcon","contains","childList","characterData","subtree","styleParser","classParser","ligature","existingPrefix","existingIconName","innerText","firstChild","nodeType","Node","TEXT_NODE","data","attributesParser","extraAttributes","parseMeta","parser","_classParser","extraClasses","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","knownPrefixes","onTree","root","htmlClassList","hclAdd","suffix","hclRemove","f","prefixesDomQuery","candidates","querySelectorAll","all","then","resolvedMutations","catch","onNode","render","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","ReplaceElements","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","_params$node","_params$callback","generateSvgReplacementMutation","generateAbstractIcon","_ref3","nextChild","containerWidth","iconWidth","Layers","layer","assembler","LayersCounter","LayersText","text","generateLayersText","computedFontSize","parseInt","getComputedStyle","fontSize","boundingClientRect","getBoundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","position","pendingAttribute","oldUnicode","newUnicode","alreadyProcessedPseudoElement","fontFamily","getPropertyValue","fontWeight","removeChild","_content","toLowerCase","_hexValueFromContent","second","first","cleaned","codePoint","index","isPrependTen","isDoubled","isSecondary","hexValueFromContent","hexValue","isV4","startsWith","iconIdentifier","iconName4","meta","processable","operations","_unwatched","parseTransformString","transformString","parseFloat","isNaN","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","outer","innerTranslate","innerScale","innerRotate","inner","path","ALL_SPACE","fillBlack","force","Masks","maskData","generateAbstractMask","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","MissingIconIndicator","reduceMotion","matchMedia","matches","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","dot","cx","cy","r","opacity","mixoutsTo","pseudoElements2svg","unwatch","bootstrap","disconnect","symbolData","k","plugin","tk","sk","config$1","library$1","parse$1","faSmileBeam","faFlag","faBookmark","faStar","faWindowMinimize","faAt","faTrashAlt","faInfo","faCompressAlt","faSignOutAlt","faAngleDoubleDown","faPencilAlt","faComments","faCircleNotch","faPaw","faReply","faCompass","faLaptopCode","faBars","faLightbulb","faList","faPaintBrush","faLock","faEdit","faShareAlt","faUsers","faEyeSlash","faHand","faChevronUp","faUser","faBullhorn","faGlobe","faBan","faServer","faSignInAlt","faFileUpload","faPlusSquare","faImage","faAngleDoubleRight","faPlayCircle","faBoxOpen","faFilter","faCode","faLockOpen","faPollH","faBasketballBall","faWrench","faEye","faPen","faBus","faExternalLinkAlt","faBirthdayCake","faEnvelope","faInfoCircle","faMinus","faCog","faFolderTree","faEllipsisV","faDownload","faHome","faStop","faUpload","faFileDownload","faEllipsisH","faBell","faFile","faTachometerAlt","faStream","faIceCream","faLink","faFont","faSearch","faSuitcaseRolling","faChevronDown","faArrowUp","faAdjust","faPlus","faTimes","faChevronLeft","faChevronRight","faRetweet","faSmile","faThumbtack","faRobot","faAngleDoubleLeft","faHistory","faMusic","faExpandAlt","faCirclePlus","faRss","faUserPlus","faCheck","faExclamationTriangle","faAlignRight","faSearchPlus","faThumbsUp","faStickyNote","faVideo","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","module","commonjsGlobal","globalThis","g","self","humps$1","exports","global","_processKeys","convert","_isObject","_isDate","_isRegExp","_isBoolean","_isFunction","l","_isArray","hasOwnProperty","camelize","_isNumerical","chr","substr","pascalize","camelized","decamelize","separator","separateWords","_processor","process","humps","depascalize","camelizeKeys","decamelizeKeys","pascalizeKeys","depascalizeKeys","_excluded","styleToObject","pair","idx","classToObject","className","abstractElement","attrs","mixins","_attrs$style","aStyle","otherAttrs","h","objectWithKey","normalizeIconArgs","FontAwesomeIcon","border","Boolean","default","fixedWidth","flip","String","validator","required","listItem","pull","pulse","rotation","Number","swapOpacity","spin","inverse","bounce","shake","beat","fade","beatFade","flash","spinPulse","spinReverse","setup","icon$1","_classes","renderedIcon","_console","log","immediate","vnode","FontAwesomeLayers","slots","Pointer","nativePointer","pageX","pageY","clientX","clientY","Touch","identifier","isPointerEvent","pointerId","getCoalesced","getCoalescedEvents","event","PointerEvent","ref","insertAt","getElementsByTagName","styleSheet","cssText","styleInject","minScaleAttr","allowPanMinScaleAttr","resetToMinScaleLimitAttr","reachMinScaleStrategyAttr","stopPropagateHandledAttr","getDistance","sqrt","getMidpoint","getAbsoluteValue","max","trimRight","endsWith","cachedSvg","getSVG","createMatrix","createSVGMatrix","createPoint","createSVGPoint","MIN_SCALE","roundedCmp","round","PinchZoom","HTMLElement","super","_transform","_stageElChange","pointerTracker","_element","start","move","rawUpdates","startPointers","currentPointers","_pointerStart","button","_triggerPointerStart","setPointerCapture","_rawUpdates","_move","_pointerEnd","_touchStart","touch","changedTouches","previousPointers","changedPointers","t","trackedChangedPointers","pointer","findIndex","_moveCallback","_triggerPointerEnd","splice","cancelled","_endCallback","_touchEnd","_startCallback","stop","_positioningEl","isPan","_allowPan","_maybeStopPropagate","_maybeEmitCancel","preventDefault","_","_onPointerMove","_onPointerEnd","_onWheel","_onClick","observedAttributes","attributeChangedCallback","oldValue","newValue","scale","minScale","setTransform","attrValue","isFinite","reachMinScaleStrategy","allowPanMinScale","resetToMinScaleLimit","stopPropagateHandled","hasAttribute","connectedCallback","scaleTo","opts","originX","originY","relativeTo","allowChangeEvent","relativeToEl","rect","currentRect","left","top","_applyChange","scaleDiff","_updateTransform","thisBounds","positioningElBounds","topLeft","bottomRight","matrix","translate","multiply","matrixTransform","setProperty","Event","bubbles","dispatchEvent","warn","deltaY","ctrlKey","deltaMode","isZoomOut","_maybeResetScale","prevMidpoint","newMidpoint","prevDistance","newDistance","panX","panY","_resetToMinScale","totalPointers","stopPropagation","pointers","parentElement","customElements","define","activeEffectScope","EffectScope","detached","active","effects","cleanups","parent","scopes","run","currentEffectScope","on","off","fromParent","last","pop","effectScope","createDep","dep","wasTracked","trackOpBit","newTracked","targetMap","WeakMap","activeEffect","effectTrackDepth","ITERATE_KEY","MAP_KEY_ITERATE_KEY","ReactiveEffect","scheduler","scope","deps","effect","recordEffectScope","lastShouldTrack","shouldTrack","initDepMarkers","cleanupEffect","ptr","delete","finalizeDepMarkers","deferStop","onStop","trackStack","pauseTracking","resetTracking","track","depsMap","Map","trackEffects","debuggerEventExtraInfo","has","trigger","oldTarget","newLength","triggerEffects","computed","triggerEffect","allowRecurse","isNonTrackableKeys","builtInSymbols","getOwnPropertyNames","createGetter","shallowGet","readonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","toRaw","res","isReadonly","shallow","receiver","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","Reflect","isRef","readonly","reactive","createSetter","shallowSet","isShallow","hadKey","mutableHandlers","deleteProperty","readonlyHandlers","shallowReactiveHandlers","toShallow","getProto","getPrototypeOf","get$1","rawTarget","rawKey","wrap","toReadonly","toReactive","has$1","set$1","deleteEntry","clear","hadItems","createForEach","thisArg","observed","createIterableMethod","method","targetIsMap","isPair","isKeyOnly","innerIterator","createReadonlyMethod","createInstrumentations","mutableInstrumentations","shallowInstrumentations","readonlyInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","shallowCollectionHandlers","readonlyCollectionHandlers","createReactiveObject","shallowReactive","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","isExtensible","rawType","targetTypeMap","proxy","isReactive","isProxy","raw","markRaw","trackRefValue","triggerRefValue","newVal","__v_isRef","createRef","shallowRef","rawValue","RefImpl","__v_isShallow","_rawValue","_value","useDirectValue","unref","shallowUnwrapHandlers","proxyRefs","objectWithRefs","_a","ComputedRefImpl","getter","_setter","isSSR","_dirty","_cacheable","getterOrOptions","debugOptions","setter","onlyGetter","callWithErrorHandling","handleError","callWithAsyncErrorHandling","throwInDev","cur","exposedInstance","errorInfo","errorCapturedHooks","ec","appErrorHandler","appContext","errorHandler","contextVNode","logError","isFlushing","isFlushPending","queue","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","nextTick","queueJob","job","middle","getId","findInsertionIndex","queueFlush","flushJobs","flushPreFlushCbs","seen","pre","flushPostFlushCbs","deduped","sort","Infinity","comparator","diff","emit$1","rawArgs","isUnmounted","isModelListener","modelArg","modifiersKey","number","handlerName","handler","onceHandler","emitted","normalizeEmitsOptions","comp","asMixin","cache","emitsCache","cached","emits","hasExtends","extendEmits","normalizedFromExtend","extends","isEmitListener","currentRenderingInstance","currentScopeId","setCurrentRenderingInstance","prev","__scopeId","pushScopeId","popScopeId","withScopeId","_id","withCtx","ctx","isNonScopedSlot","renderFnWithContext","setBlockTracking","prevInstance","_c","renderComponentRoot","Component","withProxy","propsOptions","emit","renderCache","setupState","inheritAttrs","fallthroughAttrs","shapeFlag","proxyToUse","normalizeVNode","getFunctionalFallthrough","blockStack","createVNode","Comment","filterModelListeners","cloneVNode","dirs","transition","hasPropsChanged","prevProps","nextProps","emitsOptions","nextKeys","isSuspense","__isSuspense","provide","currentInstance","parentProvides","create","inject","defaultValue","treatDefaultAsFactory","INITIAL_WATCHER_VALUE","doWatch","deep","flush","onTrack","onTrigger","cleanup","forceTrigger","isMultiSource","traverse","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","useSSRContext","__watcherHandles","queuePostRenderEffect","suspense","uid","instanceWatch","publicThis","createPathGetter","setCurrentInstance","unsetCurrentInstance","segments","useTransitionState","state","isMounted","isLeaving","isUnmounting","leavingVNodes","onMounted","onBeforeUnmount","TransitionHookValidator","Function","BaseTransition","mode","appear","persisted","onBeforeEnter","onEnter","onAfterEnter","onEnterCancelled","onBeforeLeave","onLeave","onAfterLeave","onLeaveCancelled","onBeforeAppear","onAppear","onAfterAppear","onAppearCancelled","getCurrentInstance","prevTransitionKey","getTransitionRawChildren","hasFound","rawProps","emptyPlaceholder","innerChild","getKeepAliveChild","enterHooks","resolveTransitionHooks","setTransitionHooks","oldChild","subTree","oldInnerChild","transitionKeyChanged","getTransitionKey","isSameVNodeType","leavingHooks","afterLeave","update","delayLeave","el","earlyRemove","delayedLeave","getLeavingNodesForType","_leaveCb","leavingVNodesCache","callHook","callAsyncHook","every","beforeEnter","leavingVNode","enter","afterHook","cancelHook","called","_enterCb","leave","clone","isKeepAlive","component","ssContent","ssFallback","keepComment","parentKey","ret","keyedFragmentCount","Fragment","patchFlag","defineComponent","isAsyncWrapper","__asyncLoader","defineAsyncComponent","loader","loadingComponent","errorComponent","delay","timeout","suspensible","onError","userOnError","resolvedComp","pendingRequest","retries","load","thisRequest","Error","__esModule","toStringTag","__asyncResolved","createInnerComp","delayed","ce","__isKeepAlive","KeepAlive","include","exclude","sharedContext","renderer","current","parentSuspense","patch","m","um","_unmount","storageContainer","unmount","resetShapeFlag","pruneCache","getComponentName","pruneCacheEntry","activate","anchor","isSVG","optimized","slotScopeIds","isDeactivated","vnodeHook","onVnodeMounted","invokeVNodeHook","deactivate","da","onVnodeUnmounted","pendingCacheKey","cacheSubtree","getInnerChild","onUpdated","rawVNode","isVNode","cachedVNode","pattern","onActivated","registerKeepAliveHook","onDeactivated","wrappedHook","__wdc","injectHook","injectToKeepAliveRoot","keepAliveRoot","injected","onUnmounted","prepend","__weh","unshift","createHook","lifecycle","onBeforeMount","onBeforeUpdate","onServerPrefetch","onRenderTriggered","onRenderTracked","onErrorCaptured","withDirectives","directives","internalInstance","getExposeProxy","bindings","dir","arg","modifiers","mounted","updated","invokeDirectiveHook","prevVNode","oldBindings","binding","COMPONENTS","resolveComponent","maybeSelfReference","resolveAsset","NULL_DYNAMIC_COMPONENT","resolveDynamicComponent","resolveDirective","warnMissing","selfName","registry","renderList","renderItem","item","renderSlot","fallback","noSlotted","isCE","slot","openBlock","validSlotContent","ensureValidVNode","rendered","createBlock","scopeId","vnodes","toHandlers","preserveCaseIfNecessary","getPublicInstance","isStatefulComponent","publicPropertiesMap","$","$el","$data","$props","$attrs","$slots","$refs","refs","$parent","$root","$emit","$options","resolveMergedOptions","$forceUpdate","$nextTick","$watch","hasSetupBinding","__isScriptSetup","PublicInstanceProxyHandlers","accessCache","normalizedProps","shouldCacheAccess","publicGetter","cssModule","globalProperties","__cssModules","createWatcher","base","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","resolved","mergeOptions","to","strats","strat","internalOptionMergeStrats","mergeDataFn","mergeObjectOptions","methods","beforeCreate","mergeAsArray","created","beforeMount","beforeUpdate","beforeDestroy","beforeUnmount","destroyed","unmounted","activated","deactivated","errorCaptured","serverPrefetch","components","merged","normalizeInject","setFullProps","needCastKeys","rawCastValues","hasAttrsChanged","camelKey","rawCurrentProps","castValues","resolvePropValue","isAbsent","opt","hasDefault","propsDefaults","normalizePropsOptions","propsCache","extendProps","normalizedKey","validatePropName","assign","booleanIndex","getTypeIndex","stringIndex","getType","ctor","isSameType","expectedTypes","isInternalKey","normalizeSlotValue","normalizeSlot","rawSlot","normalizeObjectSlots","rawSlots","_ctx","normalizeVNodeSlots","createAppContext","app","isNativeTag","NO","warnHandler","compilerOptions","createAppAPI","hydrate","rootComponent","rootProps","context","installedPlugins","_uid","_component","_props","_container","_context","_instance","version","use","install","mixin","directive","mount","rootContainer","isHydrate","__vue_app__","setRef","rawRef","oldRawRef","isUnmount","refValue","owner","oldRef","_isString","_isRef","doSet","existing","pendingBranch","createRenderer","createHydrationFns","__VUE__","insert","hostInsert","hostRemove","patchProp","hostPatchProp","hostCreateElement","createText","hostCreateText","hostCreateComment","setText","hostSetText","setElementText","hostSetElementText","hostParentNode","nextSibling","hostNextSibling","setScopeId","hostSetScopeId","insertStaticContent","hostInsertStaticContent","n1","n2","parentComponent","dynamicChildren","getNextHostNode","Text","processText","processCommentNode","Static","mountStaticNode","processFragment","processElement","processComponent","internals","removeStaticNode","mountElement","patchElement","is","mountChildren","unmountChildren","onVnodeBeforeMount","needCallTransitionHooks","parentVNode","cloneIfMounted","oldProps","newProps","toggleRecurse","onVnodeBeforeUpdate","areChildrenSVG","patchBlockChildren","patchChildren","patchProps","propsToUpdate","dynamicProps","onVnodeUpdated","oldChildren","newChildren","fallbackContainer","oldVNode","newVNode","fragmentStartAnchor","fragmentEndAnchor","fragmentSlotScopeIds","traverseStaticChildren","mountComponent","updateComponent","initialVNode","emptyAppContext","uid$1","exposed","exposeProxy","setupContext","suspenseId","pendingId","asyncDep","asyncResolved","bc","bm","bu","u","bum","rtg","rtc","sp","createComponentInstance","isStateful","InternalObjectKey","initProps","initSlots","setupResult","expose","createAttrsProxy","createSetupContext","resolvedResult","handleSetupResult","finishComponentSetup","setupStatefulComponent","setupComponent","registerDep","setupRenderEffect","placeholder","nextVNode","prevChildren","nextChildren","$stable","shouldUpdateComponent","updateComponentPreRender","invalidateJob","originNext","nextTree","prevTree","updateHOCHostEl","isAsyncWrapperVNode","hydrateNode","hydrateSubTree","scopedInitialVNode","rawPrevProps","kebabKey","camelizedKey","updateProps","needDeletionCheck","deletionComparisonTarget","updateSlots","c1","prevShapeFlag","c2","patchKeyedChildren","patchUnkeyedChildren","oldLength","commonLength","min","parentAnchor","l2","e1","e2","nextPos","s1","s2","keyToNewIndexMap","j","patched","toBePatched","moved","maxNewIndexSoFar","newIndexToOldIndexMap","prevChild","newIndex","increasingNewIndexSequence","arrI","getSequence","nextIndex","moveType","performLeave","moveStaticNode","doRemove","shouldInvokeDirs","shouldInvokeVnodeHook","onVnodeBeforeUnmount","unmountComponent","removeFragment","performRemove","_vnode","mt","mc","pc","pbc","createApp","baseCreateRenderer","allowed","ch1","ch2","isTeleportDisabled","isTargetSVG","SVGElement","resolveTarget","select","targetSelector","moveTeleport","targetAnchor","isReorder","Teleport","__isTeleport","mainAnchor","wasDisabled","currentContainer","currentAnchor","nextTarget","updateCssVars","hydrateChildren","targetNode","_lpa","ut","currentBlock","disableTracking","isBlockTreeEnabled","setupBlock","createElementBlock","createBaseVNode","__v_isVNode","normalizeKey","normalizeRef","ref_key","ref_for","isBlockNode","needFullChildrenNormalization","__v_skip","staticCount","normalizeChildren","normalize","cloned","__vccOpts","guardReactiveProps","klass","isTeleport","extraProps","mergeRef","mergedProps","mergeProps","createTextVNode","flag","createCommentVNode","asBlock","memo","slotFlag","toMerge","incoming","__ssrInlineRender","ssrRender","skipOptions","dataOptions","computedOptions","watchOptions","provideOptions","injectOptions","renderTracked","renderTriggered","filters","checkDuplicateProperties","unwrapRef","resolveInjections","unwrapInjectedRef","methodHandler","registerLifecycleHook","register","_hook","applyOptions","includeInferred","displayName","__name","propsOrChildren","ssrContextKey","doc","templateContainer","nodeOps","multiple","nodeValue","textContent","selector","before","previousSibling","lastChild","cloneNode","template","wrapper","importantRE","setStyle","prefixed","rawName","prefixCache","autoPrefix","xlinkNS","optionsModifierRE","cachedNow","nativeOnRE","TRANSITION","ANIMATION","Transition","baseProps","DOMTransitionPropsValidators","duration","enterFromClass","enterActiveClass","enterToClass","appearFromClass","appearActiveClass","appearToClass","leaveFromClass","leaveActiveClass","leaveToClass","durations","NumberOf","normalizeDuration","enterDuration","leaveDuration","finishEnter","isAppear","removeTransitionClass","finishLeave","_isLeaving","makeEnterHook","nextFrame","addTransitionClass","hasExplicitCallback","whenTransitionEnds","body","offsetHeight","resolveTransitionProps","_vtc","endId","expectedType","explicitTimeout","_endId","resolveIfNotStale","propCount","getStyleProperties","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","getTransitionInfo","endEvent","ended","onEnd","delays","toMs","getModelAssigner","onCompositionStart","composing","onCompositionEnd","vModelText","lazy","_assign","castToNumber","domValue","activeElement","vModelCheckbox","modelValue","_modelValue","elementValue","getValue","checked","filtered","getCheckboxValue","setChecked","vModelRadio","vModelSelect","isSetModel","selectedVal","selected","setSelected","_binding","isMultiple","option","optionValue","selectedIndex","vModelDynamic","callModelHook","resolveDynamicModel","systemModifiers","modifierGuards","prevent","currentTarget","ctrl","shift","shiftKey","alt","altKey","metaKey","right","exact","withModifiers","guard","keyNames","esc","space","up","down","withKeys","eventKey","vShow","_vod","display","setDisplay","rendererOptions","prevValue","nextValue","transitionClasses","patchClass","isCssString","currentDisplay","patchStyle","invokers","_vei","existingInvoker","parseName","invoker","_vts","attached","Date","now","originalStop","stopImmediatePropagation","_stopped","patchStopImmediatePropagation","createInvoker","patchEvent","shouldSetAsProp","needRemove","patchDOMProp","_trueValue","_falseValue","removeAttributeNS","setAttributeNS","isBoolean","patchAttr","containerOrSelector","normalizeContainer","Element","makeMap","expectsLowerCase","list","isGloballyWhitelisted","normalizeStyle","isString","parseStringStyle","isObject","listDelimiterRE","propertyDelimiterRE","styleCommentRE","tmp","normalizeClass","normalizeProps","isSpecialBooleanAttr","includeBooleanAttr","looseEqual","aValidType","isDate","bValidType","getTime","isSymbol","equal","looseCompareArrays","aHasKey","bHasKey","looseIndexOf","toDisplayString","objectToString","isFunction","JSON","stringify","replacer","isMap","entries","isSet","isPlainObject","EMPTY_OBJ","EMPTY_ARR","NOOP","onRE","isOn","extend","hasOwn","toTypeString","isPromise","toRawType","isIntegerKey","isReservedProp","cacheStringFunction","camelizeRE","hyphenateRE","hyphenate","capitalize","charAt","toHandlerKey","hasChanged","invokeArrayFns","fns","def","toNumber","_globalThis","getGlobalThis","unwrapObj","ignoreKeys","stringPath","gatherBooleanGroupProperties","group","nestedResults","property","gatherArrayGroupProperties","fetchedProperty","callRule","rule","siblingState","normalizeValidatorResponse","$valid","setValidations","validations","childResults","resultsCache","globalConfig","externalResults","rules","nestedValidators","validationGroups","validationsRaw","validationKeys","$validator","sortValidations","mergedConfig","nestedState","cachedExternalResults","nestedExternalResults","results","model","ruleKeys","cachedResult","$dirty","$lastInvalidState","$lastCommittedOn","$partial","$unwatch","$path","$touch","$reset","$commit","ruleKey","validatorName","propertyKey","propertyPath","$pending","$params","$response","$invalid","$async","$lazy","$rewardEarly","watchTargets","$pendingCounter","ruleResult","createAsyncResult","$watchTargets","returnValue","createSyncResult","message","$message","$model","$propertyPath","$property","createValidatorResult","$externalResults","stringError","$uid","$error","$silentErrors","$errors","createValidationResults","nestedValidationKeys","nestedKey","collectNestedValidationResults","$validationGroups","$anyDirty","allResults","allRes","modelErrors","nestedErrors","errors","nr","createMetaFields","external","$autoDirty","$validate","async","$getResultsForChild","$clearExternalResults","ResultsStorage","storage","checkRulesValidity","storedRules","storedRulesKeys","newRulesKeys","paramKey","storedRuleResultPair","isValidCache","CollectFlag","COLLECT_ALL","COLLECT_NONE","VuelidateInjectChildResults","VuelidateRemoveChildResults","nestedValidations","$scope","childResultsRaw","childResultsKeys","__vuelidateInjectInstances","$registerAs","childScope","$stopPropagation","__vuelidateRemoveInstances","childKey","sendValidationResultsToParent","removeValidationResultsFromParent","ComputedProxyFactory","useVuelidate","_getCurrentInstance","currentVueInstance","componentOptions","validationResults","vuelidateExternalResults","validationsConfig","validationsWatchTarget","newValidationRules","req","regex","expr","reg","validate$1","requiredIf","propOrFunction","parentVM","sameAs$1","equalTo","sameAs","otherName","hasPassiveEvents","passiveTestOptions","passive","isIosDevice","platform","maxTouchPoints","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPaddingRight","allowTouchMove","lock","rawEvent","touches","disableBodyScroll","targetElement","ontouchstart","targetTouches","ontouchmove","scrollTop","scrollHeight","clientHeight","isTargetElementTotallyScrolled","handleScroll","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","innerWidth","clientWidth","paddingRight","overflow","setOverflowHidden","enableBodyScroll","getIlluminant","ILLUMINANTS","getTransform","TRANSFORMS","toRadian","PI","bounded","cubeRoot","cbrt","pow","abs","types","find","testColorType","determineType","conversions","convertNow","conversionSteps","makeColourObject","types$1","convertArrayOrColour","A","X","Y","Z","B","C","D50","D55","D65","D75","E","F2","F7","F11","BRADFORD","INVERSE_BRADFORD","SRGB_XYZ","INVERSE_SRGB_XYZ","stringStartsWith","hex","rgb","cssrgb","hsl","csshsl","hsv","cmyk","yiq","XYZ","xyY","lms","cielab","cieluv","cielch","hsluv","epsilon","kappa","white","toR","L","cos","sin","hu","MAX_VALUE","atan2","toDegree","negativeModulo","rho","gamma","beta","bounded255","slicedToArray","return","epsilon$1","white$1","fromXYZ","boundedRgb","fromXYZTolms","fromXYZTocielab","fromXYZTocieluv","fromXYZToxyY","hsl$1","rgb$1","q","bound","freeze","msMaxTouchPoints","middleware","events","isActive","detectIframe","capture","srcTarget","composedPath","CustomEvent","cancelable","defaultPrevented","evt","origPrevent","createEvent","initCustomEvent","detail","matchHtmlRegExp","escape","exec","lastIndex","substring","aa","nativeName","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bi","bn","bo","br","bs","ca","ch","co","cr","cs","cu","cv","de","dv","dz","ee","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hy","hz","ia","ie","ig","ii","ik","io","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mr","ms","my","na","nb","nd","ne","ng","nl","nn","no","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","si","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tl","tn","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu","ISO6391","static","codes","code","getName","getNativeName","validate","language","init","converter","defaultAttributes","expires","toUTCString","encodeURIComponent","decodeURIComponent","stringifiedAttributes","cookie","write","cookies","jar","foundKey","read","withAttributes","withConverter","amd","localforage","require","_dereq_","scheduleDrain","draining","Mutation","WebKitMutationObserver","observer","setImmediate","MessageChannel","scriptEl","onreadystatechange","channel","port1","onmessage","port2","postMessage","oldQueue","task","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","resolver","outcome","safelyResolveThenable","QueueItem","promise","onFulfilled","onRejected","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","unwrap","getThen","thenable","onSuccess","tryCatch","status","out","reason","iterable","allResolver","outValue","race","response","idb","indexedDB","webkitIndexedDB","mozIndexedDB","OIndexedDB","msIndexedDB","getIDB","createBlob","properties","Blob","builder","BlobBuilder","MSBlobBuilder","MozBlobBuilder","WebKitBlobBuilder","append","getBlob","Promise$1","executeCallback","executeTwoCallbacks","errorCallback","getCallback","DETECT_BLOB_SUPPORT_STORE","supportsBlobs","dbContexts","READ_ONLY","READ_WRITE","_deferReadiness","dbInfo","dbContext","deferredOperation","deferredOperations","dbReady","_advanceReadiness","_rejectReadiness","_getConnection","upgradeNeeded","forages","db","close","dbArgs","openreq","open","onupgradeneeded","createObjectStore","storeName","oldVersion","ex","newVersion","onerror","onsuccess","onversionchange","_getOriginalConnection","_getUpgradedConnection","_isUpgradeNeeded","defaultVersion","isNewStore","objectStoreNames","isDowngrade","isUpgrade","incVersion","_decodeBlob","encodedBlob","bin","buf","ArrayBuffer","Uint8Array","_binStringToArrayBuffer","atob","_isEncodedBlob","__local_forage_encoded_blob","_fullyReady","_initReady","_dbInfo","createTransaction","tx","transaction","forage","_tryReconnect","asyncStorage","_driver","_initStorage","ready","initPromises","ignoreErrors","_defaultConfig","_support","isSafari","openDatabase","hasFetch","fetch","IDBKeyRange","isIndexedDBValid","iterate","objectStore","openCursor","iterationNumber","cursor","getItem","setItem","txn","blob","put","onabort","oncomplete","matchedChrome","matchedEdge","_checkBlobSupportWithoutCaching","_checkBlobSupport","blobSupport","reader","FileReader","onloadend","base64","btoa","readAsBinaryString","store","removeItem","count","advanced","openKeyCursor","advance","dropInstance","currentConfig","isCurrentDb","dbPromise","dropObjectPromise","deleteObjectStore","_forage2","dropDBPromise","deleteDatabase","onblocked","BASE_CHARS","BLOB_TYPE_PREFIX_REGEX","SERIALIZED_MARKER","SERIALIZED_MARKER_LENGTH","TYPE_ARRAYBUFFER","TYPE_BLOB","TYPE_INT8ARRAY","TYPE_UINT8ARRAY","TYPE_UINT8CLAMPEDARRAY","TYPE_INT16ARRAY","TYPE_INT32ARRAY","TYPE_UINT16ARRAY","TYPE_UINT32ARRAY","TYPE_FLOAT32ARRAY","TYPE_FLOAT64ARRAY","TYPE_SERIALIZED_MARKER_LENGTH","toString$1","stringToBuffer","serializedString","encoded1","encoded2","encoded3","encoded4","bufferLength","buffer","bytes","bufferToString","base64String","localforageSerializer","serialize","valueType","marker","fileReader","onload","readAsArrayBuffer","deserialize","blobType","matcher","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","createDbTable","executeSql","tryExecuteSql","sqlStatement","SYNTAX_ERR","rows","_setItem","retriesLeft","originalValue","serializer","sqlError","QUOTA_ERR","getAllStoreNames","storeNames","webSQLStorage","dbInfoPromise","description","operationInfo","dropTable","_getKeyPrefix","defaultConfig","keyPrefix","localStorageWrapper","localStorageTestKey","localStorage","checkIfLocalStorageThrows","isLocalStorageValid","keyPrefixLength","itemKey","searchElement","DefinedDrivers","DriverSupport","DefaultDrivers","INDEXEDDB","WEBSQL","LOCALSTORAGE","DefaultDriverOrder","OptionalDriverMethods","LibraryMethods","DefaultConfig","driver","callWhenReady","localForageInstance","libraryMethod","_args","LocalForage","driverTypeKey","driverName","defineDriver","_driverSet","_initDriver","_ready","_wrapLibraryMethodsWithReady","setDriver","driverObject","complianceError","driverMethods","driverMethodName","methodNotImplementedFactory","methodName","optionalDriverMethod","configureMissingMethods","setDriverSupport","support","info","getDriver","getDriverPromise","getSerializer","serializerPromise","drivers","supportedDrivers","_getSupportedDrivers","setDriverToConfig","extendSelfWithDriver","_extend","oldDriverSetDone","currentDriverIndex","driverPromiseLoop","initDriver","supports","libraryMethodsAndProperties","createInstance","localforage_js","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","funcTag","objectTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsTypedArray","isTypedArray","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","reIsNative","Buffer","getPrototype","allocUnsafe","objectCreate","symToStringTag","getNative","nativeIsBuffer","isBuffer","nativeMax","nativeNow","nativeCreate","baseCreate","proto","Hash","entry","ListCache","MapCache","Stack","__data__","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","getMapData","pairs","LARGE_ARRAY_SIZE","baseGetTag","isOwn","unmasked","getRawTag","baseIsArguments","isObjectLike","baseMerge","srcIndex","customizer","stack","iteratee","keysFunc","baseFor","srcValue","mergeFunc","safeGet","stacked","typedArray","arrayBuffer","isCommon","isArr","isBuff","isTyped","isArrayLike","copyArray","isDeep","cloneBuffer","byteLength","byteOffset","Ctor","isArguments","isNew","copyObject","keysIn","toPlainObject","isPrototype","initCloneObject","baseMergeDeep","baseSetToString","identity","isMasked","toSource","baseIsNative","isIndex","setToString","lastCalled","stamp","remaining","shortOut","other","isLength","baseUnary","inherited","isArg","isType","skipIndexes","baseTimes","arrayLikeKeys","nativeKeysIn","isProto","baseKeysIn","assigner","merge","otherArgs","overRest","baseRest","sources","isIterateeCall","DataView","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","setCacheAdd","setCacheHas","SetCache","stackClear","stackDelete","stackGet","stackHas","stackSet","predicate","resIndex","baseIndexOf","initAccum","shuffleSelf","reAsciiWord","baseEach","collection","lower","upper","arrayEach","baseAssign","baseAssignIn","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","cloneableTags","baseClone","bitmask","isFlat","isFull","isFunc","subValue","arrayIncludes","arrayIncludesWith","arrayMap","cacheHas","valuesLength","valuesIndex","baseForOwn","createBaseEach","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","createBaseFor","castPath","toKey","symbolsFunc","baseFindIndex","baseIsNaN","strictIndexOf","baseIsEqualDeep","baseIsEqual","equalArrays","equalByTag","equalObjects","arrayTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","baseMatches","baseMatchesProperty","nativeKeys","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","cloneTypedArray","isArrayLikeObject","baseGet","baseIteratee","baseMap","baseSortBy","compareMultiple","iteratees","orders","baseSet","paths","baseUnset","indexes","previous","nativeFloor","floor","nativeRandom","eachFunc","nested","constant","comparer","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","createSet","setToArray","seenIndex","stringToPath","baseSlice","strSymbols","chrSymbols","copy","cloneArrayBuffer","dataView","reFlags","regexp","symbolValueOf","valueOf","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","getSymbols","getSymbolsIn","arrayAggregator","baseAggregator","initializer","castSlice","hasUnicode","stringToArray","trailing","arrayReduce","deburr","words","reApos","findIndexFunc","deburrLetter","basePropertyOf","arraySome","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","mapToArray","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","baseGetAllKeys","isKeyable","overArg","arrayFilter","stubArray","nativeGetSymbols","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","hasFunc","reHasUnicode","reHasUnicodeWord","input","cloneDataView","cloneRegExp","cloneSymbol","spreadableSymbol","isConcatSpreadable","reIsDeepProp","reIsPlainProp","memoize","baseRandom","rand","asciiToArray","unicodeToArray","memoizeCapped","rePropName","reEscapeChar","quote","subString","reWhitespace","unescapeHtmlChar","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsModifier","rsOptVar","rsSeq","rsSymbol","reUnicode","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsEmoji","reUnicodeWord","camelCase","createCompounder","word","upperFirst","toInteger","nativeCeil","ceil","baseClamp","CLONE_DEEP_FLAG","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","time","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","clearTimeout","cancel","reLatin","reComboMark","baseDifference","differenceWith","baseFilter","createFind","castFunction","createAggregator","groupBy","baseHasIn","hasPath","stubFalse","baseKeys","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","baseIsTypedArray","kebabCase","keyBy","baseExtremum","baseGt","memoized","Cache","createAssigner","mergeWith","baseLt","negate","pickBy","baseOrderBy","basePickBy","baseProperty","basePropertyDeep","baseReduce","basePullAt","arrayShuffle","baseShuffle","sortBy","baseSum","debounce","toFinite","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","charsEndIndex","charsStartIndex","chars","reEscapedHtml","reHasEscapedHtml","baseUniq","idCounter","createCaseFirst","baseValues","asciiWords","hasUnicodeWord","unicodeWords","qs","url","xtend","PARSE_LINK_HEADER_MAXLEN","PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED","hasRel","rel","intoRels","createObjects","parseLink","link","linkUrl","parsedUrl","qry","query","linkHeader","checkHeader","closure","globalSelf","phxWindow","CHANNEL_STATES","CHANNEL_EVENTS","Push","payload","receivedResp","timeoutTimer","recHooks","sent","resend","reset","send","hasReceived","startTimeout","socket","topic","join_ref","joinRef","receive","cancelRefEvent","refEvent","matchReceive","cancelTimeout","makeRef","replyEventName","Timer","timerCalc","timer","tries","scheduleTimeout","Ajax","endPoint","accept","ontimeout","XDomainRequest","xdomainRequest","XMLHttpRequest","xhrRequest","parseJSON","responseText","onprogress","setRequestHeader","resp","queryStr","paramVal","LongPoll","token","skipHeartbeat","reqs","awaitingBatchAck","currentBatch","currentBatchTimer","batchBuffer","onopen","onclose","pollEndpoint","normalizeEndpoint","poll","endpointURL","appendParams","closeAndRetry","wasClean","ajax","messages","msg","binary","fromCharCode","arrayBufferToBase64","batchSend","abort","CloseEvent","contentType","onCallerTimeout","request","serializer_default","HEADER_LENGTH","META_LENGTH","KINDS","reply","broadcast","encode","binaryEncode","decode","rawPayload","binaryDecode","metaLength","header","view","setUint8","char","combined","kind","getUint8","decoder","TextDecoder","decodePush","decodeReply","decodeBroadcast","joinRefSize","topicSize","eventSize","refSize","Socket","stateChangeCallbacks","channels","sendBuffer","transport","WebSocket","establishedConnections","defaultEncoder","defaultDecoder","closeWasClean","binaryType","connectClock","awaitingConnectionOnPageShow","conn","connect","heartbeatIntervalMs","rejoinAfterMs","reconnectAfterMs","logger","longpollerTimeout","vsn","heartbeatTimeoutTimer","heartbeatTimer","pendingHeartbeatRef","reconnectTimer","teardown","getLongPollTransport","replaceTransport","newTransport","protocol","location","endPointURL","uri","host","onConnOpen","onConnError","onConnMessage","onConnClose","hasLogger","onOpen","onClose","onMessage","ping","isConnected","startTime","onMsgRef","clearHeartbeats","flushSendBuffer","resetHeartbeat","heartbeatTimeout","triggerChanError","sendHeartbeat","waitForBufferDone","waitForSocketClosed","bufferedAmount","closeCode","transportBefore","establishedBefore","isErrored","isClosed","connectionState","stateChangeRefs","chanParams","chan","bindingRef","joinedOnce","joinPush","pushBuffer","rejoinTimer","rejoin","pushEvent","isJoining","canPush","isJoined","leavePush","_event","isMember","leaveOpenTopic","handledPayload","eventBindings","newRef","rawMessage","dupChannel","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","RangeError","mapDomain","domain","encoded","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","inputLength","bias","basic","lastIndexOf","oldi","baseMinusT","fromCodePoint","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","codePoints","ucs2encode","toUnicode","toASCII","sep","maxKeys","kstr","vstr","stringifyPrimitive","serviceWorkerOption","serviceWorker","punycode","util","Url","slashes","auth","port","hostname","hash","search","pathname","href","urlParse","relative","resolveObject","format","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","qm","tkeys","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","hasTrailingSlash","isAbsolute","inBrowser","hasSymbol","isNumber","isRegExp","isEmptyObject","escapeHtml","rawText","createCompileError","loc","SyntaxError","pathStateMachine","literalValueRE","getPathCharType","resolveWithKeyValue","DEFAULT_MODIFIER","DEFAULT_MESSAGE","DEFAULT_NORMALIZE","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","devtools","translateDevTools","createDevToolsHook","payloads","fallbackWithSimple","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","__localeChainCache","chain","block","appendBlockToChain","defaults","blocks","follow","locale","appendLocaleToChain","tokens","appendItemToChain","toLocaleUpperCase","_resolver","_fallbacker","_additionalMeta","setAdditionalMeta","_fallbackContext","setFallbackContext","_cid","handleMissing","missingWarn","missing","onWarn","updateFallbackLocale","localeFallbacker","inc","CoreErrorCodes","INVALID_ARGUMENT","INVALID_DATE_ARGUMENT","INVALID_ISO_DATE_ARGUMENT","__EXTEND_POINT__","createCoreError","NOOP_MESSAGE_FUNCTION","isMessageFunction","fallbackFormat","postTranslation","unresolving","messageCompiler","fallbackLocale","parseTranslateArgs","escapeParameter","fallbackWarn","resolvedMessage","defaultMsgOrKey","enableDefaultMsg","named","escapeParams","formatScope","targetLocale","resolveMessageFormat","cacheBaseKey","occurred","compileMessageFormat","ctxOptions","pluralRules","messageResolver","resolveValue","fallbackContext","processor","plural","pluralIndex","getMessageContextOptions","messaged","msgCtx","evaluateMessage","getPluralIndex","pluralRule","orgPluralRule","_list","_named","normalizeNamed","interpolate","arg1","arg2","modifier","createMessageContext","__INTLIFY_PROD_DEVTOOLS__","timestamp","__meta","locales","missingRet","errorDetector","warnHtmlMessage","onCacheKey","friendlyJSONstringify","json","generateFormatCacheKey","getCompileOptions","arg3","intlDefined","Intl","datetime","datetimeFormats","__datetimeFormatters","overrides","parseDateTimeArgs","DateTimeFormat","datetimeFormat","formatter","formatToParts","NumberFormat","DATETIME_FORMAT_OPTIONS_KEYS","arg4","dateTime","toISOString","clearDateTimeFormat","numberFormats","__numberFormatters","parseNumberArgs","numberFormat","NUMBER_FORMAT_OPTIONS_KEYS","clearNumberFormat","code$1","inc$1","I18nErrorCodes","UNEXPECTED_RETURN_TYPE","MUST_BE_CALL_SETUP_TOP","NOT_INSLALLED","NOT_AVAILABLE_IN_LEGACY_MODE","REQUIRED_VALUE","INVALID_VALUE","CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN","NOT_INSLALLED_WITH_PROVIDE","UNEXPECTED_ERROR","NOT_COMPATIBLE_LEGACY_VUE_I18N","BRIDGE_SUPPORT_VUE_2_ONLY","MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION","NOT_AVAILABLE_COMPOSITION_IN_LEGACY","createI18nError","TransrateVNodeSymbol","DatetimePartsSymbol","NumberPartsSymbol","SetPluralRulesSymbol","InejctWithOption","handleFlatJson","subKeys","currentObj","getLocaleMessages","__i18n","flatJson","custom","resource","deepCopy","isNotObjectOrIsArray","src","des","getComponentOptions","adjustI18nResources","__i18nGlobal","mergeLocaleMessage","mergeDateTimeFormat","mergeNumberFormat","DEVTOOLS_META","composerID","defineCoreMissingHandler","createComposer","VueI18nLegacy","__root","_isGlobal","_inheritLocale","inheritLocale","_locale","_fallbackLocale","_messages","_datetimeFormats","_numberFormats","_missingWarn","_fallbackWarn","_fallbackRoot","fallbackRoot","_fallbackFormat","_missing","_runtimeMissing","_postTranslation","_warnHtmlMessage","_escapeParameter","_modifiers","_pluralRules","framework","_compiler","internalOptions","cid","i18n","initI18nDevTools","createCoreContext","getCoreContext","wrapWithDeps","argumentParser","warnType","fallbackSuccess","fallbackFail","successCondition","getMetaInfo","getLocaleMessage","composer","availableLocales","isGlobal","setLocaleMessage","getPostTranslationHandler","setPostTranslationHandler","getMissingHandler","setMissingHandler","rt","tm","targetLocaleMessages","messageValue","resolveMessages","getDateTimeFormat","setDateTimeFormat","getNumberFormat","setNumberFormat","__injectWithOption","createVueI18n","silentTranslationWarn","silentFallbackWarn","formatFallbackMessages","pluralizationRules","warnHtmlInMessage","escapeParameterHtml","sync","sharedMessages","convertComposerOptions","vueI18n","preserveDirectiveContent","__composer","tc","getChoiceIndex","__onComponentInstanceCreated","componentInstanceCreatedListener","baseFormatProps","getFragmentableTag","Translation","keypath","useI18n","useScope","__useComponent","getInterpolateArg","assignedAttrs","renderFormatter","slotKeys","partFormatter","DatetimeFormat","parseValue","makeParams","mergeToRoot","I18nInjectionKey","createI18n","__legacyMode","__VUE_I18N_LEGACY_API__","legacy","__globalInjection","globalInjection","__allowComposition","allowComposition","__instances","globalScope","__global","legacyMode","createGlobal","__VUE_I18N_SYMBOL__","globalExportProps","desc","$i18n","globalExportMethods","injectGlobalFields","__VUE_I18N_FULL_INSTALL__","pluginOptions","useI18nComponentName","globalInstall","_process","i18nInternal","__getInstance","getComposer$2","parsedValue","__i18nWatcher","getSSRProps","vTDirective","vuei18n","optionsI18n","__setInstance","$t","$rt","$tc","$te","$d","$n","$tm","__deleteInstance","defineMixin","unmountApp","dispose","getI18nInstance","getGlobalComposer","getScope","isLocale","_composer","warpWithDeps","useI18nForLegacy","useComponent","getComposer","composerOptions","setupLifeCycle","hit","newChar","action","typeMap","subPathDepth","actions","maybeUnescapeQuote","nextChar","trimmed","exp","stripQuotes","formatSubPath","needWarn","initFeatureFlags","__INTLIFY__","__INTLIFY_DEVTOOLS_GLOBAL_HOOK__","sfc","isBrowser","applyToParams","newParams","TRAILING_SLASH_RE","parseURL","parseQuery","currentLocation","searchString","hashPos","searchPos","fromSegments","toSegments","toPosition","segment","resolveRelativePath","fullPath","stripBase","isSameRouteRecord","aliasOf","isSameRouteLocationParams","isSameRouteLocationParamsValue","isEquivalentArray","NavigationType","NavigationDirection","BEFORE_HASH_RE","createHref","computeScrollPosition","pageXOffset","pageYOffset","getScrollKey","history","scrollPositions","createBaseLocation","createCurrentLocation","slicePos","pathFromHash","buildState","back","forward","replaced","computeScroll","scroll","createWebHistory","historyNavigation","historyState","changeLocation","hashIndex","currentState","useHistoryStateNavigation","baseEl","normalizeBase","historyListeners","listeners","teardowns","pauseState","popStateHandler","fromState","direction","unknown","beforeUnloadListener","replaceState","pauseListeners","listen","destroy","useHistoryListeners","routerHistory","go","triggerListeners","isRouteName","START_LOCATION_NORMALIZED","matched","redirectedFrom","NavigationFailureSymbol","NavigationFailureType","createRouterError","isNavigationFailure","BASE_PARAM_PATTERN","BASE_PATH_PARSER_OPTIONS","sensitive","strict","REGEX_CHARS_RE","compareScoreArray","comparePathParserScore","aScore","score","bScore","isLastScoreNegative","ROOT_TOKEN","VALID_PARAM_RE","createRouteRecordMatcher","record","extraOptions","segmentScores","tokenIndex","subSegmentScore","repeatable","optional","re","subPattern","avoidDuplicatedSlash","param","tokensToParser","crash","previousState","finalizeSegment","customRe","consumeBuffer","addCharToBuffer","tokenizePath","paramsFromLocation","normalizeRecordProps","propsObject","isAliasRecord","mergeMetaFields","partialOptions","isRecordChildOf","HASH_RE","AMPERSAND_RE","SLASH_RE","EQUAL_RE","IM_RE","PLUS_RE","ENC_BRACKET_OPEN_RE","ENC_BRACKET_CLOSE_RE","ENC_CARET_RE","ENC_BACKTICK_RE","ENC_CURLY_OPEN_RE","ENC_PIPE_RE","ENC_CURLY_CLOSE_RE","ENC_SPACE_RE","commonEncode","encodeURI","encodeQueryValue","encodeParam","encodePath","searchParams","searchParam","eqPos","stringifyQuery","normalizeQuery","normalizedQuery","matchedRouteKey","viewDepthKey","routerKey","routeLocationKey","routerViewLocationKey","useCallbacks","guardToPromiseFn","enterCallbackArray","enterCallbacks","valid","route","guardReturn","instances","guardCall","extractComponentsGuards","guardType","guards","rawComponent","componentPromise","resolvedComponent","useLink","router","currentRoute","activeRecordIndex","routeMatched","currentMatched","parentRecordPath","getOriginalPath","innerValue","outerValue","includesParams","isExactActive","navigate","guardEvent","RouterLink","compatConfig","MODE","activeClass","exactActiveClass","ariaCurrentValue","elClass","getLinkClass","linkActiveClass","linkExactActiveClass","onClick","propClass","globalClass","defaultClass","slotContent","RouterView","injectedRoute","routeToDisplay","injectedDepth","initialDepth","matchedRoute","matchedRouteRef","viewRef","oldInstance","oldName","leaveGuards","updateGuards","currentName","ViewComponent","routePropsOption","routeProps","createRouter","routes","globalOptions","matchers","matcherMap","addRoute","originalRecord","isRootAdd","mainNormalizedRecord","redirect","normalizeRouteRecord","normalizedRecords","originalMatcher","normalizedRecord","parentPath","connectingSlash","removeRoute","insertMatcher","matcherRef","parentMatcher","getRoutes","getRecordMatcher","createRouterMatcher","parseQuery$1","stringifyQuery$1","beforeGuards","beforeResolveGuards","afterGuards","pendingLocation","scrollBehavior","scrollRestoration","normalizeParams","paramValue","encodeParams","decodeParams","rawLocation","locationNormalized","matcherLocation","targetParams","stringifyURL","locationAsObject","checkCanceledNavigation","pushWithRedirect","handleRedirectRecord","lastMatched","newTargetLocation","targetLocation","shouldRedirect","toLocation","failure","aLastIndex","bLastIndex","isSameRouteLocation","markAsReady","triggerError","finalizeNavigation","triggerAfterEach","checkCanceledNavigationAndReject","leavingRecords","updatingRecords","enteringRecords","recordFrom","recordTo","extractChangingRecords","reverse","canceledNavigationCheck","runGuardQueue","isPush","isFirstNavigation","removeHistoryListener","readyHandlers","errorHandlers","_from","listening","scrollPosition","getSavedScrollPosition","scrollToOptions","positionEl","isIdSelector","getElementById","docRect","elRect","behavior","getElementPosition","scrollTo","scrollToPosition","started","installedApps","parentOrRoute","recordMatcher","hasRoute","routeMatcher","beforeEach","beforeResolve","afterEach","isReady","$router","reactiveRoute","isIE","initCompat","ua","msie","rv","edge","getInternetExplorerVersion","script","emitOnMount","ignoreWidth","ignoreHeight","_w","offsetWidth","_h","emitSize","_resizeObject","addResizeHandlers","removeResizeHandlers","compareAndNotify","contentDocument","defaultView","_withId","_hoisted_1","tabindex","_cache","$setup","deepEqual","val1","val2","__file","VisibilityState","frozen","createObserver","destroyObserver","once","throttle","_leading","throttleOptions","lastState","currentArgs","throttled","_clear","oldResult","IntersectionObserver","intersectingEntry","isIntersecting","intersectionRatio","threshold","intersection","_vue_visibilityState","ObserveVisibility","itemsLimit","parents","getScrollParent","scrollingElement","items","keyField","listTag","itemTag","simpleArray","supportsPassive","script$2","ResizeObserver","itemSize","gridItems","itemSecondarySize","minItemSize","sizeField","typeField","pageMode","prerender","emitUpdate","updateInterval","skipHover","listClass","itemClass","pool","totalSize","hoverKey","sizes","field","computedMinSize","$_computedMinItemSize","itemIndexByKey","updateVisibleItems","applyPageMode","$_startIndex","$_endIndex","$_views","$_unusedViews","$_scrollDirty","$_lastUpdateScrollPosition","$_prerender","lastPosition","removeListeners","addView","used","unuseView","fake","unusedViews","unusedPool","handleResize","$_updateTimeout","requestUpdate","continuous","$_refreshTimout","handleVisibilityChange","isVisible","checkItem","checkPositionDiff","views","startIndex","endIndex","visibleStartIndex","visibleEndIndex","getScroll","positionDiff","beforeSize","after","afterSize","oldI","itemsLimitError","unusedIndex","newlyUsedView","$_sortTimer","sortViews","getListenerTarget","isVertical","scrollState","bounds","boundsSize","innerHeight","scrollLeft","addListeners","listenerTarget","scrollToItem","viewport","scrollDirection","scrollDistance","viewportEl","scrollerPosition","viewA","viewB","_hoisted_2","_component_ResizeObserver","_directive_observe_visibility","onScrollPassive","hover","mouseenter","mouseleave","onNotify","script$1","RecycleScroller","$_resizeObserver","$_vs_onResize","borderBoxSize","resizeObserverSize","inlineSize","blockSize","contentRect","$_vs_id","vscrollData","vscrollParent","vscrollResizeObserver","itemsWithSize","$_undefinedMap","forceUpdate","prevActiveTop","activeTop","$_updates","$_undefinedSizes","$_events","onScrollerResize","scroller","onScrollerVisible","getItemSize","scrollToBottom","$_scrollingToBottom","_component_RecycleScroller","onResize","onVisible","itemWithSize","empty","watchData","sizeDependencies","emitResize","finalActive","onDataUpdate","$_sizeObserved","oldSize","applySize","observeSize","unobserveSize","$_pendingVScrollUpdate","updateSize","$isServer","$_forceNextVScrollUpdate","updateWatchData","onVscrollUpdate","$_pendingSizeUpdate","computeSize","$_watchData","applyWidthHeight","unobserve","finalOptions","installComponents","componentsPrefix","registerComponents","getTarget","isProxyAvailable","supported","ApiProxy","targetQueue","onQueue","defaultSettings","settings","localSettingsSaveId","currentSettings","fallbacks","getSettings","setSettings","perf_hooks","pluginId","proxiedOn","_target","proxiedTarget","forEachValue","genericSubscribe","subs","resetStore","hot","_actions","_mutations","_wrappedGetters","_modulesNamespaceMap","installModule","_modules","resetStoreState","oldState","_state","oldScope","_scope","getters","_makeLocalGettersCache","wrappedGetters","computedObj","computedCache","partial","enableStrictMode","_withCommit","rootState","isRoot","getNamespace","namespaced","parentState","getNestedState","moduleName","local","noNamespace","dispatch","_type","_payload","_options","unifyObjectStyle","commit","makeLocalGetters","makeLocalContext","forEachMutation","registerMutation","forEachAction","rootGetters","_devtoolHook","registerAction","forEachGetter","rawGetter","registerGetter","forEachChild","gettersProxy","splitPos","localType","MUTATIONS_LAYER_ID","ACTIONS_LAYER_ID","INSPECTOR_ID","actionId","addDevtools","pluginDescriptor","setupFn","__VUE_DEVTOOLS_GLOBAL_HOOK__","enableProxy","enableEarlyProxy","__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__","__VUE_DEVTOOLS_PLUGINS__","setupDevtoolsPlugin","label","homepage","logo","packageName","componentStateTypes","addTimelineLayer","color","COLOR_LIME_500","addInspector","treeFilterPlaceholder","getInspectorTree","inspectorId","nodes","flattenStoreForInspectorTree","rootNodes","formatStoreForInspectorTree","getInspectorState","modulePath","nodeId","gettersKeys","storeState","editable","tree","leafKey","_custom","tooltip","canThrow","transformPathsToObjectTree","extractNameFromPath","formatStoreForInspectorState","moduleMap","_children","editInspectorState","subscribe","notifyComponentUpdate","sendInspectorTree","sendInspectorState","addTimelineEvent","layerId","subscribeAction","_time","groupId","subtitle","TAG_NAMESPACED","textColor","backgroundColor","tags","Module","rawModule","runtime","_rawModule","rawState","prototypeAccessors$1","addChild","getChild","hasChild","ModuleCollection","rawRootModule","targetModule","newModule","modules","createStore","Store","this$1$1","rawChildModule","unregister","isRegistered","plugins","_committing","_actionSubscribers","_subscribers","_devtools","prototypeAccessors","injectKey","$store","sub","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","newOptions","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","isValidMap","helper","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","doneResult","isGeneratorFunction","genFun","setPrototypeOf","__proto__","awrap","skipTempReset","rootRecord","rval","exception","handle","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","_assertThisInitialized","ReferenceError","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_createClass","staticProps","_extends","_getPrototypeOf","_inherits","subClass","superClass","_objectDestructuringEmpty","_possibleConstructorReturn","_setPrototypeOf","arrayWithHoles","_x","_r","unsupportedIterableToArray","nonIterableRest","_toArray","arrayLikeToArray","iterableToArray","_toPropertyKey","hint","prim","toPrimitive","_isNativeReflectConstruct","construct","sham","_construct","Parent","Class","_wrapNativeSuper","Wrapper","EventTarget","wm","handleEvent","_stopImmediatePropagationFlag","secret"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/48.b5ecdbc517423af07ca4.js b/priv/static/static/js/48.b5ecdbc517423af07ca4.js @@ -0,0 +1,3 @@ +/*! For license information please see 48.b5ecdbc517423af07ca4.js.LICENSE.txt */ +(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[48],{99990:(t,e,i)=>{"use strict";i.d(e,{Z:()=>o});var n=i(66252),r=i(92592);const a="ready";var o=(0,n.aZ)({name:"VueQrcode",props:{value:{type:String,default:void 0},options:{type:Object,default:void 0},tag:{type:String,default:"canvas"}},emits:[a],watch:{$props:{deep:!0,immediate:!0,handler(){this.$el&&this.generate()}}},mounted(){this.generate()},methods:{generate(){const t=this.options||{},e=String(this.value),i=()=>{this.$emit(a,this.$el)};switch(this.tag){case"canvas":(0,r.rT)(this.$el,e,t,(t=>{if(t)throw t;i()}));break;case"img":(0,r.hz)(e,t,((t,e)=>{if(t)throw t;this.$el.src=e,this.$el.onload=i}));break;case"svg":(0,r.toString)(e,t,((t,e)=>{if(t)throw t;const n=document.createElement("div");n.innerHTML=e;const r=n.querySelector("svg");if(r){const{attributes:t,childNodes:e}=r;Object.keys(t).forEach((e=>{const i=t[Number(e)];this.$el.setAttribute(i.name,i.value)})),Object.keys(e).forEach((t=>{const i=e[Number(t)];this.$el.appendChild(i.cloneNode(!0))})),i()}}))}}},render(){return(0,n.h)(this.tag,this.$slots.default)}})},33129:function(t){t.exports=function(){"use strict";function t(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,n)}return i}function e(e){for(var i=1;i<arguments.length;i++){var n=null!=arguments[i]?arguments[i]:{};i%2?t(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):t(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function a(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function o(t){return function(t){if(Array.isArray(t))return s(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?s(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i<e;i++)n[i]=t[i];return n}var h="undefined"!=typeof window&&void 0!==window.document,c=h?window:{},l=!(!h||!c.document.documentElement)&&"ontouchstart"in c.document.documentElement,d=!!h&&"PointerEvent"in c,u="cropper",p="all",g="crop",f="move",m="zoom",v="e",w="w",y="s",b="n",x="ne",M="nw",C="se",E="sw",B="".concat(u,"-crop"),T="".concat(u,"-disabled"),D="".concat(u,"-hidden"),A="".concat(u,"-hide"),N="".concat(u,"-invisible"),k="".concat(u,"-modal"),R="".concat(u,"-move"),I="".concat(u,"Action"),L="".concat(u,"Preview"),P="crop",S="move",O="none",H="crop",z="cropend",Y="cropmove",U="cropstart",W="dblclick",j=d?"pointerdown":l?"touchstart":"mousedown",X=d?"pointermove":l?"touchmove":"mousemove",F=d?"pointerup pointercancel":l?"touchend touchcancel":"mouseup",K="ready",q="resize",$="wheel",_="zoom",J="image/jpeg",Q=/^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/,V=/^data:/,Z=/^data:image\/jpeg;base64,/,G=/^img|canvas$/i,tt={viewMode:0,dragMode:P,initialAspectRatio:NaN,aspectRatio:NaN,data:null,preview:"",responsive:!0,restore:!0,checkCrossOrigin:!0,checkOrientation:!0,modal:!0,guides:!0,center:!0,highlight:!0,background:!0,autoCrop:!0,autoCropArea:.8,movable:!0,rotatable:!0,scalable:!0,zoomable:!0,zoomOnTouch:!0,zoomOnWheel:!0,wheelZoomRatio:.1,cropBoxMovable:!0,cropBoxResizable:!0,toggleDragModeOnDblclick:!0,minCanvasWidth:0,minCanvasHeight:0,minCropBoxWidth:0,minCropBoxHeight:0,minContainerWidth:200,minContainerHeight:100,ready:null,cropstart:null,cropmove:null,cropend:null,crop:null,zoom:null},et=Number.isNaN||c.isNaN;function it(t){return"number"==typeof t&&!et(t)}var nt=function(t){return t>0&&t<1/0};function rt(t){return void 0===t}function at(t){return"object"===i(t)&&null!==t}var ot=Object.prototype.hasOwnProperty;function st(t){if(!at(t))return!1;try{var e=t.constructor,i=e.prototype;return e&&i&&ot.call(i,"isPrototypeOf")}catch(t){return!1}}function ht(t){return"function"==typeof t}var ct=Array.prototype.slice;function lt(t){return Array.from?Array.from(t):ct.call(t)}function dt(t,e){return t&&ht(e)&&(Array.isArray(t)||it(t.length)?lt(t).forEach((function(i,n){e.call(t,i,n,t)})):at(t)&&Object.keys(t).forEach((function(i){e.call(t,t[i],i,t)}))),t}var ut=Object.assign||function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),n=1;n<e;n++)i[n-1]=arguments[n];return at(t)&&i.length>0&&i.forEach((function(e){at(e)&&Object.keys(e).forEach((function(i){t[i]=e[i]}))})),t},pt=/\.\d*(?:0|9){12}\d*$/;function gt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e11;return pt.test(t)?Math.round(t*e)/e:t}var ft=/^width|height|left|top|marginLeft|marginTop$/;function mt(t,e){var i=t.style;dt(e,(function(t,e){ft.test(e)&&it(t)&&(t="".concat(t,"px")),i[e]=t}))}function vt(t,e){if(e)if(it(t.length))dt(t,(function(t){vt(t,e)}));else if(t.classList)t.classList.add(e);else{var i=t.className.trim();i?i.indexOf(e)<0&&(t.className="".concat(i," ").concat(e)):t.className=e}}function wt(t,e){e&&(it(t.length)?dt(t,(function(t){wt(t,e)})):t.classList?t.classList.remove(e):t.className.indexOf(e)>=0&&(t.className=t.className.replace(e,"")))}function yt(t,e,i){e&&(it(t.length)?dt(t,(function(t){yt(t,e,i)})):i?vt(t,e):wt(t,e))}var bt=/([a-z\d])([A-Z])/g;function xt(t){return t.replace(bt,"$1-$2").toLowerCase()}function Mt(t,e){return at(t[e])?t[e]:t.dataset?t.dataset[e]:t.getAttribute("data-".concat(xt(e)))}function Ct(t,e,i){at(i)?t[e]=i:t.dataset?t.dataset[e]=i:t.setAttribute("data-".concat(xt(e)),i)}var Et=/\s\s*/,Bt=function(){var t=!1;if(h){var e=!1,i=function(){},n=Object.defineProperty({},"once",{get:function(){return t=!0,e},set:function(t){e=t}});c.addEventListener("test",i,n),c.removeEventListener("test",i,n)}return t}();function Tt(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=i;e.trim().split(Et).forEach((function(e){if(!Bt){var a=t.listeners;a&&a[e]&&a[e][i]&&(r=a[e][i],delete a[e][i],0===Object.keys(a[e]).length&&delete a[e],0===Object.keys(a).length&&delete t.listeners)}t.removeEventListener(e,r,n)}))}function Dt(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=i;e.trim().split(Et).forEach((function(e){if(n.once&&!Bt){var a=t.listeners,o=void 0===a?{}:a;r=function(){delete o[e][i],t.removeEventListener(e,r,n);for(var a=arguments.length,s=new Array(a),h=0;h<a;h++)s[h]=arguments[h];i.apply(t,s)},o[e]||(o[e]={}),o[e][i]&&t.removeEventListener(e,o[e][i],n),o[e][i]=r,t.listeners=o}t.addEventListener(e,r,n)}))}function At(t,e,i){var n;return ht(Event)&&ht(CustomEvent)?n=new CustomEvent(e,{detail:i,bubbles:!0,cancelable:!0}):(n=document.createEvent("CustomEvent")).initCustomEvent(e,!0,!0,i),t.dispatchEvent(n)}function Nt(t){var e=t.getBoundingClientRect();return{left:e.left+(window.pageXOffset-document.documentElement.clientLeft),top:e.top+(window.pageYOffset-document.documentElement.clientTop)}}var kt=c.location,Rt=/^(\w+:)\/\/([^:/?#]*):?(\d*)/i;function It(t){var e=t.match(Rt);return null!==e&&(e[1]!==kt.protocol||e[2]!==kt.hostname||e[3]!==kt.port)}function Lt(t){var e="timestamp=".concat((new Date).getTime());return t+(-1===t.indexOf("?")?"?":"&")+e}function Pt(t){var e=t.rotate,i=t.scaleX,n=t.scaleY,r=t.translateX,a=t.translateY,o=[];it(r)&&0!==r&&o.push("translateX(".concat(r,"px)")),it(a)&&0!==a&&o.push("translateY(".concat(a,"px)")),it(e)&&0!==e&&o.push("rotate(".concat(e,"deg)")),it(i)&&1!==i&&o.push("scaleX(".concat(i,")")),it(n)&&1!==n&&o.push("scaleY(".concat(n,")"));var s=o.length?o.join(" "):"none";return{WebkitTransform:s,msTransform:s,transform:s}}function St(t,i){var n=t.pageX,r=t.pageY,a={endX:n,endY:r};return i?a:e({startX:n,startY:r},a)}function Ot(t){var e=t.aspectRatio,i=t.height,n=t.width,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"contain",a=nt(n),o=nt(i);if(a&&o){var s=i*e;"contain"===r&&s>n||"cover"===r&&s<n?i=n/e:n=i*e}else a?i=n/e:o&&(n=i*e);return{width:n,height:i}}function Ht(t,e,i,n){var r=e.aspectRatio,a=e.naturalWidth,s=e.naturalHeight,h=e.rotate,c=void 0===h?0:h,l=e.scaleX,d=void 0===l?1:l,u=e.scaleY,p=void 0===u?1:u,g=i.aspectRatio,f=i.naturalWidth,m=i.naturalHeight,v=n.fillColor,w=void 0===v?"transparent":v,y=n.imageSmoothingEnabled,b=void 0===y||y,x=n.imageSmoothingQuality,M=void 0===x?"low":x,C=n.maxWidth,E=void 0===C?1/0:C,B=n.maxHeight,T=void 0===B?1/0:B,D=n.minWidth,A=void 0===D?0:D,N=n.minHeight,k=void 0===N?0:N,R=document.createElement("canvas"),I=R.getContext("2d"),L=Ot({aspectRatio:g,width:E,height:T}),P=Ot({aspectRatio:g,width:A,height:k},"cover"),S=Math.min(L.width,Math.max(P.width,f)),O=Math.min(L.height,Math.max(P.height,m)),H=Ot({aspectRatio:r,width:E,height:T}),z=Ot({aspectRatio:r,width:A,height:k},"cover"),Y=Math.min(H.width,Math.max(z.width,a)),U=Math.min(H.height,Math.max(z.height,s)),W=[-Y/2,-U/2,Y,U];return R.width=gt(S),R.height=gt(O),I.fillStyle=w,I.fillRect(0,0,S,O),I.save(),I.translate(S/2,O/2),I.rotate(c*Math.PI/180),I.scale(d,p),I.imageSmoothingEnabled=b,I.imageSmoothingQuality=M,I.drawImage.apply(I,[t].concat(o(W.map((function(t){return Math.floor(gt(t))}))))),I.restore(),R}var zt=String.fromCharCode;var Yt=/^data:.*,/;function Ut(t){var e,i=new DataView(t);try{var n,r,a;if(255===i.getUint8(0)&&216===i.getUint8(1))for(var o=i.byteLength,s=2;s+1<o;){if(255===i.getUint8(s)&&225===i.getUint8(s+1)){r=s;break}s+=1}if(r){var h=r+10;if("Exif"===function(t,e,i){var n="";i+=e;for(var r=e;r<i;r+=1)n+=zt(t.getUint8(r));return n}(i,r+4,4)){var c=i.getUint16(h);if(((n=18761===c)||19789===c)&&42===i.getUint16(h+2,n)){var l=i.getUint32(h+4,n);l>=8&&(a=h+l)}}}if(a){var d,u,p=i.getUint16(a,n);for(u=0;u<p;u+=1)if(d=a+12*u+2,274===i.getUint16(d,n)){d+=8,e=i.getUint16(d,n),i.setUint16(d,1,n);break}}}catch(t){e=1}return e}var Wt={render:function(){this.initContainer(),this.initCanvas(),this.initCropBox(),this.renderCanvas(),this.cropped&&this.renderCropBox()},initContainer:function(){var t=this.element,e=this.options,i=this.container,n=this.cropper,r=Number(e.minContainerWidth),a=Number(e.minContainerHeight);vt(n,D),wt(t,D);var o={width:Math.max(i.offsetWidth,r>=0?r:200),height:Math.max(i.offsetHeight,a>=0?a:100)};this.containerData=o,mt(n,{width:o.width,height:o.height}),vt(t,D),wt(n,D)},initCanvas:function(){var t=this.containerData,e=this.imageData,i=this.options.viewMode,n=Math.abs(e.rotate)%180==90,r=n?e.naturalHeight:e.naturalWidth,a=n?e.naturalWidth:e.naturalHeight,o=r/a,s=t.width,h=t.height;t.height*o>t.width?3===i?s=t.height*o:h=t.width/o:3===i?h=t.width/o:s=t.height*o;var c={aspectRatio:o,naturalWidth:r,naturalHeight:a,width:s,height:h};this.canvasData=c,this.limited=1===i||2===i,this.limitCanvas(!0,!0),c.width=Math.min(Math.max(c.width,c.minWidth),c.maxWidth),c.height=Math.min(Math.max(c.height,c.minHeight),c.maxHeight),c.left=(t.width-c.width)/2,c.top=(t.height-c.height)/2,c.oldLeft=c.left,c.oldTop=c.top,this.initialCanvasData=ut({},c)},limitCanvas:function(t,e){var i=this.options,n=this.containerData,r=this.canvasData,a=this.cropBoxData,o=i.viewMode,s=r.aspectRatio,h=this.cropped&&a;if(t){var c=Number(i.minCanvasWidth)||0,l=Number(i.minCanvasHeight)||0;o>1?(c=Math.max(c,n.width),l=Math.max(l,n.height),3===o&&(l*s>c?c=l*s:l=c/s)):o>0&&(c?c=Math.max(c,h?a.width:0):l?l=Math.max(l,h?a.height:0):h&&(c=a.width,(l=a.height)*s>c?c=l*s:l=c/s));var d=Ot({aspectRatio:s,width:c,height:l});c=d.width,l=d.height,r.minWidth=c,r.minHeight=l,r.maxWidth=1/0,r.maxHeight=1/0}if(e)if(o>(h?0:1)){var u=n.width-r.width,p=n.height-r.height;r.minLeft=Math.min(0,u),r.minTop=Math.min(0,p),r.maxLeft=Math.max(0,u),r.maxTop=Math.max(0,p),h&&this.limited&&(r.minLeft=Math.min(a.left,a.left+(a.width-r.width)),r.minTop=Math.min(a.top,a.top+(a.height-r.height)),r.maxLeft=a.left,r.maxTop=a.top,2===o&&(r.width>=n.width&&(r.minLeft=Math.min(0,u),r.maxLeft=Math.max(0,u)),r.height>=n.height&&(r.minTop=Math.min(0,p),r.maxTop=Math.max(0,p))))}else r.minLeft=-r.width,r.minTop=-r.height,r.maxLeft=n.width,r.maxTop=n.height},renderCanvas:function(t,e){var i=this.canvasData,n=this.imageData;if(e){var r=function(t){var e=t.width,i=t.height,n=t.degree;if(90==(n=Math.abs(n)%180))return{width:i,height:e};var r=n%90*Math.PI/180,a=Math.sin(r),o=Math.cos(r),s=e*o+i*a,h=e*a+i*o;return n>90?{width:h,height:s}:{width:s,height:h}}({width:n.naturalWidth*Math.abs(n.scaleX||1),height:n.naturalHeight*Math.abs(n.scaleY||1),degree:n.rotate||0}),a=r.width,o=r.height,s=i.width*(a/i.naturalWidth),h=i.height*(o/i.naturalHeight);i.left-=(s-i.width)/2,i.top-=(h-i.height)/2,i.width=s,i.height=h,i.aspectRatio=a/o,i.naturalWidth=a,i.naturalHeight=o,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.width<i.minWidth)&&(i.left=i.oldLeft),(i.height>i.maxHeight||i.height<i.minHeight)&&(i.top=i.oldTop),i.width=Math.min(Math.max(i.width,i.minWidth),i.maxWidth),i.height=Math.min(Math.max(i.height,i.minHeight),i.maxHeight),this.limitCanvas(!1,!0),i.left=Math.min(Math.max(i.left,i.minLeft),i.maxLeft),i.top=Math.min(Math.max(i.top,i.minTop),i.maxTop),i.oldLeft=i.left,i.oldTop=i.top,mt(this.canvas,ut({width:i.width,height:i.height},Pt({translateX:i.left,translateY:i.top}))),this.renderImage(t),this.cropped&&this.limited&&this.limitCropBox(!0,!0)},renderImage:function(t){var e=this.canvasData,i=this.imageData,n=i.naturalWidth*(e.width/e.naturalWidth),r=i.naturalHeight*(e.height/e.naturalHeight);ut(i,{width:n,height:r,left:(e.width-n)/2,top:(e.height-r)/2}),mt(this.image,ut({width:i.width,height:i.height},Pt(ut({translateX:i.left,translateY:i.top},i)))),t&&this.output()},initCropBox:function(){var t=this.options,e=this.canvasData,i=t.aspectRatio||t.initialAspectRatio,n=Number(t.autoCropArea)||.8,r={width:e.width,height:e.height};i&&(e.height*i>e.width?r.height=r.width/i:r.width=r.height*i),this.cropBoxData=r,this.limitCropBox(!0,!0),r.width=Math.min(Math.max(r.width,r.minWidth),r.maxWidth),r.height=Math.min(Math.max(r.height,r.minHeight),r.maxHeight),r.width=Math.max(r.minWidth,r.width*n),r.height=Math.max(r.minHeight,r.height*n),r.left=e.left+(e.width-r.width)/2,r.top=e.top+(e.height-r.height)/2,r.oldLeft=r.left,r.oldTop=r.top,this.initialCropBoxData=ut({},r)},limitCropBox:function(t,e){var i=this.options,n=this.containerData,r=this.canvasData,a=this.cropBoxData,o=this.limited,s=i.aspectRatio;if(t){var h=Number(i.minCropBoxWidth)||0,c=Number(i.minCropBoxHeight)||0,l=o?Math.min(n.width,r.width,r.width+r.left,n.width-r.left):n.width,d=o?Math.min(n.height,r.height,r.height+r.top,n.height-r.top):n.height;h=Math.min(h,n.width),c=Math.min(c,n.height),s&&(h&&c?c*s>h?c=h/s:h=c*s:h?c=h/s:c&&(h=c*s),d*s>l?d=l/s:l=d*s),a.minWidth=Math.min(h,l),a.minHeight=Math.min(c,d),a.maxWidth=l,a.maxHeight=d}e&&(o?(a.minLeft=Math.max(0,r.left),a.minTop=Math.max(0,r.top),a.maxLeft=Math.min(n.width,r.left+r.width)-a.width,a.maxTop=Math.min(n.height,r.top+r.height)-a.height):(a.minLeft=0,a.minTop=0,a.maxLeft=n.width-a.width,a.maxTop=n.height-a.height))},renderCropBox:function(){var t=this.options,e=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.width<i.minWidth)&&(i.left=i.oldLeft),(i.height>i.maxHeight||i.height<i.minHeight)&&(i.top=i.oldTop),i.width=Math.min(Math.max(i.width,i.minWidth),i.maxWidth),i.height=Math.min(Math.max(i.height,i.minHeight),i.maxHeight),this.limitCropBox(!1,!0),i.left=Math.min(Math.max(i.left,i.minLeft),i.maxLeft),i.top=Math.min(Math.max(i.top,i.minTop),i.maxTop),i.oldLeft=i.left,i.oldTop=i.top,t.movable&&t.cropBoxMovable&&Ct(this.face,I,i.width>=e.width&&i.height>=e.height?f:p),mt(this.cropBox,ut({width:i.width,height:i.height},Pt({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),At(this.element,H,this.getData())}},jt={initPreview:function(){var t=this.element,e=this.crossOrigin,i=this.options.preview,n=e?this.crossOriginUrl:this.url,r=t.alt||"The image to preview",a=document.createElement("img");if(e&&(a.crossOrigin=e),a.src=n,a.alt=r,this.viewBox.appendChild(a),this.viewBoxImage=a,i){var o=i;"string"==typeof i?o=t.ownerDocument.querySelectorAll(i):i.querySelector&&(o=[i]),this.previews=o,dt(o,(function(t){var i=document.createElement("img");Ct(t,L,{width:t.offsetWidth,height:t.offsetHeight,html:t.innerHTML}),e&&(i.crossOrigin=e),i.src=n,i.alt=r,i.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',t.innerHTML="",t.appendChild(i)}))}},resetPreview:function(){dt(this.previews,(function(t){var e=Mt(t,L);mt(t,{width:e.width,height:e.height}),t.innerHTML=e.html,function(t,e){if(at(t[e]))try{delete t[e]}catch(i){t[e]=void 0}else if(t.dataset)try{delete t.dataset[e]}catch(i){t.dataset[e]=void 0}else t.removeAttribute("data-".concat(xt(e)))}(t,L)}))},preview:function(){var t=this.imageData,e=this.canvasData,i=this.cropBoxData,n=i.width,r=i.height,a=t.width,o=t.height,s=i.left-e.left-t.left,h=i.top-e.top-t.top;this.cropped&&!this.disabled&&(mt(this.viewBoxImage,ut({width:a,height:o},Pt(ut({translateX:-s,translateY:-h},t)))),dt(this.previews,(function(e){var i=Mt(e,L),c=i.width,l=i.height,d=c,u=l,p=1;n&&(u=r*(p=c/n)),r&&u>l&&(d=n*(p=l/r),u=l),mt(e,{width:d,height:u}),mt(e.getElementsByTagName("img")[0],ut({width:a*p,height:o*p},Pt(ut({translateX:-s*p,translateY:-h*p},t))))})))}},Xt={bind:function(){var t=this.element,e=this.options,i=this.cropper;ht(e.cropstart)&&Dt(t,U,e.cropstart),ht(e.cropmove)&&Dt(t,Y,e.cropmove),ht(e.cropend)&&Dt(t,z,e.cropend),ht(e.crop)&&Dt(t,H,e.crop),ht(e.zoom)&&Dt(t,_,e.zoom),Dt(i,j,this.onCropStart=this.cropStart.bind(this)),e.zoomable&&e.zoomOnWheel&&Dt(i,$,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&Dt(i,W,this.onDblclick=this.dblclick.bind(this)),Dt(t.ownerDocument,X,this.onCropMove=this.cropMove.bind(this)),Dt(t.ownerDocument,F,this.onCropEnd=this.cropEnd.bind(this)),e.responsive&&Dt(window,q,this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,e=this.options,i=this.cropper;ht(e.cropstart)&&Tt(t,U,e.cropstart),ht(e.cropmove)&&Tt(t,Y,e.cropmove),ht(e.cropend)&&Tt(t,z,e.cropend),ht(e.crop)&&Tt(t,H,e.crop),ht(e.zoom)&&Tt(t,_,e.zoom),Tt(i,j,this.onCropStart),e.zoomable&&e.zoomOnWheel&&Tt(i,$,this.onWheel,{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&Tt(i,W,this.onDblclick),Tt(t.ownerDocument,X,this.onCropMove),Tt(t.ownerDocument,F,this.onCropEnd),e.responsive&&Tt(window,q,this.onResize)}},Ft={resize:function(){if(!this.disabled){var t,e,i=this.options,n=this.container,r=this.containerData,a=n.offsetWidth/r.width,o=n.offsetHeight/r.height,s=Math.abs(a-1)>Math.abs(o-1)?a:o;1!==s&&(i.restore&&(t=this.getCanvasData(),e=this.getCropBoxData()),this.render(),i.restore&&(this.setCanvasData(dt(t,(function(e,i){t[i]=e*s}))),this.setCropBoxData(dt(e,(function(t,i){e[i]=t*s})))))}},dblclick:function(){var t,e;this.disabled||this.options.dragMode===O||this.setDragMode((t=this.dragBox,e=B,(t.classList?t.classList.contains(e):t.className.indexOf(e)>-1)?S:P))},wheel:function(t){var e=this,i=Number(this.options.wheelZoomRatio)||.1,n=1;this.disabled||(t.preventDefault(),this.wheeling||(this.wheeling=!0,setTimeout((function(){e.wheeling=!1}),50),t.deltaY?n=t.deltaY>0?1:-1:t.wheelDelta?n=-t.wheelDelta/120:t.detail&&(n=t.detail>0?1:-1),this.zoom(-n*i,t)))},cropStart:function(t){var e=t.buttons,i=t.button;if(!(this.disabled||("mousedown"===t.type||"pointerdown"===t.type&&"mouse"===t.pointerType)&&(it(e)&&1!==e||it(i)&&0!==i||t.ctrlKey))){var n,r=this.options,a=this.pointers;t.changedTouches?dt(t.changedTouches,(function(t){a[t.identifier]=St(t)})):a[t.pointerId||0]=St(t),n=Object.keys(a).length>1&&r.zoomable&&r.zoomOnTouch?m:Mt(t.target,I),Q.test(n)&&!1!==At(this.element,U,{originalEvent:t,action:n})&&(t.preventDefault(),this.action=n,this.cropping=!1,n===g&&(this.cropping=!0,vt(this.dragBox,k)))}},cropMove:function(t){var e=this.action;if(!this.disabled&&e){var i=this.pointers;t.preventDefault(),!1!==At(this.element,Y,{originalEvent:t,action:e})&&(t.changedTouches?dt(t.changedTouches,(function(t){ut(i[t.identifier]||{},St(t,!0))})):ut(i[t.pointerId||0]||{},St(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var e=this.action,i=this.pointers;t.changedTouches?dt(t.changedTouches,(function(t){delete i[t.identifier]})):delete i[t.pointerId||0],e&&(t.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,yt(this.dragBox,k,this.cropped&&this.options.modal)),At(this.element,z,{originalEvent:t,action:e}))}}},Kt={change:function(t){var i,n=this.options,r=this.canvasData,a=this.containerData,o=this.cropBoxData,s=this.pointers,h=this.action,c=n.aspectRatio,l=o.left,d=o.top,u=o.width,B=o.height,T=l+u,A=d+B,N=0,k=0,R=a.width,I=a.height,L=!0;!c&&t.shiftKey&&(c=u&&B?u/B:1),this.limited&&(N=o.minLeft,k=o.minTop,R=N+Math.min(a.width,r.width,r.left+r.width),I=k+Math.min(a.height,r.height,r.top+r.height));var P=s[Object.keys(s)[0]],S={x:P.endX-P.startX,y:P.endY-P.startY},O=function(t){switch(t){case v:T+S.x>R&&(S.x=R-T);break;case w:l+S.x<N&&(S.x=N-l);break;case b:d+S.y<k&&(S.y=k-d);break;case y:A+S.y>I&&(S.y=I-A)}};switch(h){case p:l+=S.x,d+=S.y;break;case v:if(S.x>=0&&(T>=R||c&&(d<=k||A>=I))){L=!1;break}O(v),(u+=S.x)<0&&(h=w,l-=u=-u),c&&(B=u/c,d+=(o.height-B)/2);break;case b:if(S.y<=0&&(d<=k||c&&(l<=N||T>=R))){L=!1;break}O(b),B-=S.y,d+=S.y,B<0&&(h=y,d-=B=-B),c&&(u=B*c,l+=(o.width-u)/2);break;case w:if(S.x<=0&&(l<=N||c&&(d<=k||A>=I))){L=!1;break}O(w),u-=S.x,l+=S.x,u<0&&(h=v,l-=u=-u),c&&(B=u/c,d+=(o.height-B)/2);break;case y:if(S.y>=0&&(A>=I||c&&(l<=N||T>=R))){L=!1;break}O(y),(B+=S.y)<0&&(h=b,d-=B=-B),c&&(u=B*c,l+=(o.width-u)/2);break;case x:if(c){if(S.y<=0&&(d<=k||T>=R)){L=!1;break}O(b),B-=S.y,d+=S.y,u=B*c}else O(b),O(v),S.x>=0?T<R?u+=S.x:S.y<=0&&d<=k&&(L=!1):u+=S.x,S.y<=0?d>k&&(B-=S.y,d+=S.y):(B-=S.y,d+=S.y);u<0&&B<0?(h=E,d-=B=-B,l-=u=-u):u<0?(h=M,l-=u=-u):B<0&&(h=C,d-=B=-B);break;case M:if(c){if(S.y<=0&&(d<=k||l<=N)){L=!1;break}O(b),B-=S.y,d+=S.y,u=B*c,l+=o.width-u}else O(b),O(w),S.x<=0?l>N?(u-=S.x,l+=S.x):S.y<=0&&d<=k&&(L=!1):(u-=S.x,l+=S.x),S.y<=0?d>k&&(B-=S.y,d+=S.y):(B-=S.y,d+=S.y);u<0&&B<0?(h=C,d-=B=-B,l-=u=-u):u<0?(h=x,l-=u=-u):B<0&&(h=E,d-=B=-B);break;case E:if(c){if(S.x<=0&&(l<=N||A>=I)){L=!1;break}O(w),u-=S.x,l+=S.x,B=u/c}else O(y),O(w),S.x<=0?l>N?(u-=S.x,l+=S.x):S.y>=0&&A>=I&&(L=!1):(u-=S.x,l+=S.x),S.y>=0?A<I&&(B+=S.y):B+=S.y;u<0&&B<0?(h=x,d-=B=-B,l-=u=-u):u<0?(h=C,l-=u=-u):B<0&&(h=M,d-=B=-B);break;case C:if(c){if(S.x>=0&&(T>=R||A>=I)){L=!1;break}O(v),B=(u+=S.x)/c}else O(y),O(v),S.x>=0?T<R?u+=S.x:S.y>=0&&A>=I&&(L=!1):u+=S.x,S.y>=0?A<I&&(B+=S.y):B+=S.y;u<0&&B<0?(h=M,d-=B=-B,l-=u=-u):u<0?(h=E,l-=u=-u):B<0&&(h=x,d-=B=-B);break;case f:this.move(S.x,S.y),L=!1;break;case m:this.zoom(function(t){var i=e({},t),n=0;return dt(t,(function(t,e){delete i[e],dt(i,(function(e){var i=Math.abs(t.startX-e.startX),r=Math.abs(t.startY-e.startY),a=Math.abs(t.endX-e.endX),o=Math.abs(t.endY-e.endY),s=Math.sqrt(i*i+r*r),h=(Math.sqrt(a*a+o*o)-s)/s;Math.abs(h)>Math.abs(n)&&(n=h)}))})),n}(s),t),L=!1;break;case g:if(!S.x||!S.y){L=!1;break}i=Nt(this.cropper),l=P.startX-i.left,d=P.startY-i.top,u=o.minWidth,B=o.minHeight,S.x>0?h=S.y>0?C:x:S.x<0&&(l-=u,h=S.y>0?E:M),S.y<0&&(d-=B),this.cropped||(wt(this.cropBox,D),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0))}L&&(o.width=u,o.height=B,o.left=l,o.top=d,this.action=h,this.renderCropBox()),dt(s,(function(t){t.startX=t.endX,t.startY=t.endY}))}},qt={crop:function(){return!this.ready||this.cropped||this.disabled||(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&vt(this.dragBox,k),wt(this.cropBox,D),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=ut({},this.initialImageData),this.canvasData=ut({},this.initialCanvasData),this.cropBoxData=ut({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(ut(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),wt(this.dragBox,k),vt(this.cropBox,D)),this},replace:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!this.disabled&&t&&(this.isImg&&(this.element.src=t),e?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,dt(this.previews,(function(e){e.getElementsByTagName("img")[0].src=t})))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,wt(this.cropper,T)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,vt(this.cropper,T)),this},destroy:function(){var t=this.element;return t.cropper?(t.cropper=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,n=i.left,r=i.top;return this.moveTo(rt(t)?t:n+Number(t),rt(e)?e:r+Number(e))},moveTo:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,n=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.movable&&(it(t)&&(i.left=t,n=!0),it(e)&&(i.top=e,n=!0),n&&this.renderCanvas(!0)),this},zoom:function(t,e){var i=this.canvasData;return t=(t=Number(t))<0?1/(1-t):1+t,this.zoomTo(i.width*t/i.naturalWidth,null,e)},zoomTo:function(t,e,i){var n=this.options,r=this.canvasData,a=r.width,o=r.height,s=r.naturalWidth,h=r.naturalHeight;if((t=Number(t))>=0&&this.ready&&!this.disabled&&n.zoomable){var c=s*t,l=h*t;if(!1===At(this.element,_,{ratio:t,oldRatio:a/s,originalEvent:i}))return this;if(i){var d=this.pointers,u=Nt(this.cropper),p=d&&Object.keys(d).length?function(t){var e=0,i=0,n=0;return dt(t,(function(t){var r=t.startX,a=t.startY;e+=r,i+=a,n+=1})),{pageX:e/=n,pageY:i/=n}}(d):{pageX:i.pageX,pageY:i.pageY};r.left-=(c-a)*((p.pageX-u.left-r.left)/a),r.top-=(l-o)*((p.pageY-u.top-r.top)/o)}else st(e)&&it(e.x)&&it(e.y)?(r.left-=(c-a)*((e.x-r.left)/a),r.top-=(l-o)*((e.y-r.top)/o)):(r.left-=(c-a)/2,r.top-=(l-o)/2);r.width=c,r.height=l,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return it(t=Number(t))&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var e=this.imageData.scaleY;return this.scale(t,it(e)?e:1)},scaleY:function(t){var e=this.imageData.scaleX;return this.scale(it(e)?e:1,t)},scale:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.imageData,n=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.scalable&&(it(t)&&(i.scaleX=t,n=!0),it(e)&&(i.scaleY=e,n=!0),n&&this.renderCanvas(!0,!0)),this},getData:function(){var t,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.options,n=this.imageData,r=this.canvasData,a=this.cropBoxData;if(this.ready&&this.cropped){t={x:a.left-r.left,y:a.top-r.top,width:a.width,height:a.height};var o=n.width/n.naturalWidth;if(dt(t,(function(e,i){t[i]=e/o})),e){var s=Math.round(t.y+t.height),h=Math.round(t.x+t.width);t.x=Math.round(t.x),t.y=Math.round(t.y),t.width=h-t.x,t.height=s-t.y}}else t={x:0,y:0,width:0,height:0};return i.rotatable&&(t.rotate=n.rotate||0),i.scalable&&(t.scaleX=n.scaleX||1,t.scaleY=n.scaleY||1),t},setData:function(t){var e=this.options,i=this.imageData,n=this.canvasData,r={};if(this.ready&&!this.disabled&&st(t)){var a=!1;e.rotatable&&it(t.rotate)&&t.rotate!==i.rotate&&(i.rotate=t.rotate,a=!0),e.scalable&&(it(t.scaleX)&&t.scaleX!==i.scaleX&&(i.scaleX=t.scaleX,a=!0),it(t.scaleY)&&t.scaleY!==i.scaleY&&(i.scaleY=t.scaleY,a=!0)),a&&this.renderCanvas(!0,!0);var o=i.width/i.naturalWidth;it(t.x)&&(r.left=t.x*o+n.left),it(t.y)&&(r.top=t.y*o+n.top),it(t.width)&&(r.width=t.width*o),it(t.height)&&(r.height=t.height*o),this.setCropBoxData(r)}return this},getContainerData:function(){return this.ready?ut({},this.containerData):{}},getImageData:function(){return this.sized?ut({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,e={};return this.ready&&dt(["left","top","width","height","naturalWidth","naturalHeight"],(function(i){e[i]=t[i]})),e},setCanvasData:function(t){var e=this.canvasData,i=e.aspectRatio;return this.ready&&!this.disabled&&st(t)&&(it(t.left)&&(e.left=t.left),it(t.top)&&(e.top=t.top),it(t.width)?(e.width=t.width,e.height=t.width/i):it(t.height)&&(e.height=t.height,e.width=t.height*i),this.renderCanvas(!0)),this},getCropBoxData:function(){var t,e=this.cropBoxData;return this.ready&&this.cropped&&(t={left:e.left,top:e.top,width:e.width,height:e.height}),t||{}},setCropBoxData:function(t){var e,i,n=this.cropBoxData,r=this.options.aspectRatio;return this.ready&&this.cropped&&!this.disabled&&st(t)&&(it(t.left)&&(n.left=t.left),it(t.top)&&(n.top=t.top),it(t.width)&&t.width!==n.width&&(e=!0,n.width=t.width),it(t.height)&&t.height!==n.height&&(i=!0,n.height=t.height),r&&(e?n.height=n.width/r:i&&(n.width=n.height*r)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var e=this.canvasData,i=Ht(this.image,this.imageData,e,t);if(!this.cropped)return i;var n=this.getData(),r=n.x,a=n.y,s=n.width,h=n.height,c=i.width/Math.floor(e.naturalWidth);1!==c&&(r*=c,a*=c,s*=c,h*=c);var l=s/h,d=Ot({aspectRatio:l,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),u=Ot({aspectRatio:l,width:t.minWidth||0,height:t.minHeight||0},"cover"),p=Ot({aspectRatio:l,width:t.width||(1!==c?i.width:s),height:t.height||(1!==c?i.height:h)}),g=p.width,f=p.height;g=Math.min(d.width,Math.max(u.width,g)),f=Math.min(d.height,Math.max(u.height,f));var m=document.createElement("canvas"),v=m.getContext("2d");m.width=gt(g),m.height=gt(f),v.fillStyle=t.fillColor||"transparent",v.fillRect(0,0,g,f);var w=t.imageSmoothingEnabled,y=void 0===w||w,b=t.imageSmoothingQuality;v.imageSmoothingEnabled=y,b&&(v.imageSmoothingQuality=b);var x,M,C,E,B,T,D=i.width,A=i.height,N=r,k=a;N<=-s||N>D?(N=0,x=0,C=0,B=0):N<=0?(C=-N,N=0,B=x=Math.min(D,s+N)):N<=D&&(C=0,B=x=Math.min(s,D-N)),x<=0||k<=-h||k>A?(k=0,M=0,E=0,T=0):k<=0?(E=-k,k=0,T=M=Math.min(A,h+k)):k<=A&&(E=0,T=M=Math.min(h,A-k));var R=[N,k,x,M];if(B>0&&T>0){var I=g/s;R.push(C*I,E*I,B*I,T*I)}return v.drawImage.apply(v,[i].concat(o(R.map((function(t){return Math.floor(gt(t))}))))),m},setAspectRatio:function(t){var e=this.options;return this.disabled||rt(t)||(e.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var e=this.options,i=this.dragBox,n=this.face;if(this.ready&&!this.disabled){var r=t===P,a=e.movable&&t===S;t=r||a?t:O,e.dragMode=t,Ct(i,I,t),yt(i,B,r),yt(i,R,a),e.cropBoxMovable||(Ct(n,I,t),yt(n,B,r),yt(n,R,a))}return this}},$t=c.Cropper,_t=function(){function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(n(this,t),!e||!G.test(e.tagName))throw new Error("The first argument is required and must be an <img> or <canvas> element.");this.element=e,this.options=ut({},tt,st(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return e=t,a=[{key:"noConflict",value:function(){return window.Cropper=$t,t}},{key:"setDefaults",value:function(t){ut(tt,st(t)&&t)}}],(i=[{key:"init",value:function(){var t,e=this.element,i=e.tagName.toLowerCase();if(!e.cropper){if(e.cropper=this,"img"===i){if(this.isImg=!0,t=e.getAttribute("src")||"",this.originalUrl=t,!t)return;t=e.src}else"canvas"===i&&window.HTMLCanvasElement&&(t=e.toDataURL());this.load(t)}}},{key:"load",value:function(t){var e,i,n,r,a=this;if(t){this.url=t,this.imageData={};var o=this.element,s=this.options;if(s.rotatable||s.scalable||(s.checkOrientation=!1),s.checkOrientation&&window.ArrayBuffer)if(V.test(t))Z.test(t)?this.read((e=t.replace(Yt,""),i=atob(e),n=new ArrayBuffer(i.length),dt(r=new Uint8Array(n),(function(t,e){r[e]=i.charCodeAt(e)})),n)):this.clone();else{var h=new XMLHttpRequest,c=this.clone.bind(this);this.reloading=!0,this.xhr=h,h.onabort=c,h.onerror=c,h.ontimeout=c,h.onprogress=function(){h.getResponseHeader("content-type")!==J&&h.abort()},h.onload=function(){a.read(h.response)},h.onloadend=function(){a.reloading=!1,a.xhr=null},s.checkCrossOrigin&&It(t)&&o.crossOrigin&&(t=Lt(t)),h.open("GET",t,!0),h.responseType="arraybuffer",h.withCredentials="use-credentials"===o.crossOrigin,h.send()}else this.clone()}}},{key:"read",value:function(t){var e=this.options,i=this.imageData,n=Ut(t),r=0,a=1,o=1;if(n>1){this.url=function(t,e){for(var i=[],n=new Uint8Array(t);n.length>0;)i.push(zt.apply(null,lt(n.subarray(0,8192)))),n=n.subarray(8192);return"data:".concat(e,";base64,").concat(btoa(i.join("")))}(t,J);var s=function(t){var e=0,i=1,n=1;switch(t){case 2:i=-1;break;case 3:e=-180;break;case 4:n=-1;break;case 5:e=90,n=-1;break;case 6:e=90;break;case 7:e=90,i=-1;break;case 8:e=-90}return{rotate:e,scaleX:i,scaleY:n}}(n);r=s.rotate,a=s.scaleX,o=s.scaleY}e.rotatable&&(i.rotate=r),e.scalable&&(i.scaleX=a,i.scaleY=o),this.clone()}},{key:"clone",value:function(){var t=this.element,e=this.url,i=t.crossOrigin,n=e;this.options.checkCrossOrigin&&It(e)&&(i||(i="anonymous"),n=Lt(e)),this.crossOrigin=i,this.crossOriginUrl=n;var r=document.createElement("img");i&&(r.crossOrigin=i),r.src=n||e,r.alt=t.alt||"The image to crop",this.image=r,r.onload=this.start.bind(this),r.onerror=this.stop.bind(this),vt(r,A),t.parentNode.insertBefore(r,t.nextSibling)}},{key:"start",value:function(){var t=this,e=this.image;e.onload=null,e.onerror=null,this.sizing=!0;var i=c.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(c.navigator.userAgent),n=function(e,i){ut(t.imageData,{naturalWidth:e,naturalHeight:i,aspectRatio:e/i}),t.initialImageData=ut({},t.imageData),t.sizing=!1,t.sized=!0,t.build()};if(!e.naturalWidth||i){var r=document.createElement("img"),a=document.body||document.documentElement;this.sizingImage=r,r.onload=function(){n(r.width,r.height),i||a.removeChild(r)},r.src=e.src,i||(r.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",a.appendChild(r))}else n(e.naturalWidth,e.naturalHeight)}},{key:"stop",value:function(){var t=this.image;t.onload=null,t.onerror=null,t.parentNode.removeChild(t),this.image=null}},{key:"build",value:function(){if(this.sized&&!this.ready){var t=this.element,e=this.options,i=this.image,n=t.parentNode,r=document.createElement("div");r.innerHTML='<div class="cropper-container" touch-action="none"><div class="cropper-wrap-box"><div class="cropper-canvas"></div></div><div class="cropper-drag-box"></div><div class="cropper-crop-box"><span class="cropper-view-box"></span><span class="cropper-dashed dashed-h"></span><span class="cropper-dashed dashed-v"></span><span class="cropper-center"></span><span class="cropper-face"></span><span class="cropper-line line-e" data-cropper-action="e"></span><span class="cropper-line line-n" data-cropper-action="n"></span><span class="cropper-line line-w" data-cropper-action="w"></span><span class="cropper-line line-s" data-cropper-action="s"></span><span class="cropper-point point-e" data-cropper-action="e"></span><span class="cropper-point point-n" data-cropper-action="n"></span><span class="cropper-point point-w" data-cropper-action="w"></span><span class="cropper-point point-s" data-cropper-action="s"></span><span class="cropper-point point-ne" data-cropper-action="ne"></span><span class="cropper-point point-nw" data-cropper-action="nw"></span><span class="cropper-point point-sw" data-cropper-action="sw"></span><span class="cropper-point point-se" data-cropper-action="se"></span></div></div>';var a=r.querySelector(".".concat(u,"-container")),o=a.querySelector(".".concat(u,"-canvas")),s=a.querySelector(".".concat(u,"-drag-box")),h=a.querySelector(".".concat(u,"-crop-box")),c=h.querySelector(".".concat(u,"-face"));this.container=n,this.cropper=a,this.canvas=o,this.dragBox=s,this.cropBox=h,this.viewBox=a.querySelector(".".concat(u,"-view-box")),this.face=c,o.appendChild(i),vt(t,D),n.insertBefore(a,t.nextSibling),wt(i,A),this.initPreview(),this.bind(),e.initialAspectRatio=Math.max(0,e.initialAspectRatio)||NaN,e.aspectRatio=Math.max(0,e.aspectRatio)||NaN,e.viewMode=Math.max(0,Math.min(3,Math.round(e.viewMode)))||0,vt(h,D),e.guides||vt(h.getElementsByClassName("".concat(u,"-dashed")),D),e.center||vt(h.getElementsByClassName("".concat(u,"-center")),D),e.background&&vt(a,"".concat(u,"-bg")),e.highlight||vt(c,N),e.cropBoxMovable&&(vt(c,R),Ct(c,I,p)),e.cropBoxResizable||(vt(h.getElementsByClassName("".concat(u,"-line")),D),vt(h.getElementsByClassName("".concat(u,"-point")),D)),this.render(),this.ready=!0,this.setDragMode(e.dragMode),e.autoCrop&&this.crop(),this.setData(e.data),ht(e.ready)&&Dt(t,K,e.ready,{once:!0}),At(t,K)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var t=this.cropper.parentNode;t&&t.removeChild(this.cropper),wt(this.element,D)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}])&&r(e.prototype,i),a&&r(e,a),Object.defineProperty(e,"prototype",{writable:!1}),t;var e,i,a}();return ut(_t.prototype,Wt,jt,Xt,Ft,Kt,qt),_t}()},65987:t=>{"use strict";var e={single_source_shortest_paths:function(t,i,n){var r={},a={};a[i]=0;var o,s,h,c,l,d,u,p=e.PriorityQueue.make();for(p.push(i,0);!p.empty();)for(h in s=(o=p.pop()).value,c=o.cost,l=t[s]||{})l.hasOwnProperty(h)&&(d=c+l[h],u=a[h],(void 0===a[h]||u>d)&&(a[h]=d,p.push(h,d),r[h]=s));if(void 0!==n&&void 0===a[n]){var g=["Could not find a path from ",i," to ",n,"."].join("");throw new Error(g)}return r},extract_shortest_path_from_predecessor_list:function(t,e){for(var i=[],n=e;n;)i.push(n),t[n],n=t[n];return i.reverse(),i},find_path:function(t,i,n){var r=e.single_source_shortest_paths(t,i,n);return e.extract_shortest_path_from_predecessor_list(r,n)},PriorityQueue:{make:function(t){var i,n=e.PriorityQueue,r={};for(i in t=t||{},n)n.hasOwnProperty(i)&&(r[i]=n[i]);return r.queue=[],r.sorter=t.sorter||n.default_sorter,r},default_sorter:function(t,e){return t.cost-e.cost},push:function(t,e){var i={value:t,cost:e};this.queue.push(i),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};t.exports=e},62378:t=>{"use strict";t.exports=function(t){for(var e=[],i=t.length,n=0;n<i;n++){var r=t.charCodeAt(n);if(r>=55296&&r<=56319&&i>n+1){var a=t.charCodeAt(n+1);a>=56320&&a<=57343&&(r=1024*(r-55296)+a-56320+65536,n+=1)}r<128?e.push(r):r<2048?(e.push(r>>6|192),e.push(63&r|128)):r<55296||r>=57344&&r<65536?(e.push(r>>12|224),e.push(r>>6&63|128),e.push(63&r|128)):r>=65536&&r<=1114111?(e.push(r>>18|240),e.push(r>>12&63|128),e.push(r>>6&63|128),e.push(63&r|128)):e.push(239,191,189)}return new Uint8Array(e).buffer}},92592:(t,e,i)=>{const n=i(47138),r=i(95115),a=i(6907),o=i(93776);function s(t,e,i,a,o){const s=[].slice.call(arguments,1),h=s.length,c="function"==typeof s[h-1];if(!c&&!n())throw new Error("Callback required as last argument");if(!c){if(h<1)throw new Error("Too few arguments provided");return 1===h?(i=e,e=a=void 0):2!==h||e.getContext||(a=i,i=e,e=void 0),new Promise((function(n,o){try{const o=r.create(i,a);n(t(o,e,a))}catch(t){o(t)}}))}if(h<2)throw new Error("Too few arguments provided");2===h?(o=i,i=e,e=a=void 0):3===h&&(e.getContext&&void 0===o?(o=a,a=void 0):(o=a,a=i,i=e,e=void 0));try{const n=r.create(i,a);o(null,t(n,e,a))}catch(t){o(t)}}r.create,e.rT=s.bind(null,a.render),e.hz=s.bind(null,a.renderToDataURL),e.toString=s.bind(null,(function(t,e,i){return o.render(t,i)}))},47138:t=>{t.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},21845:(t,e,i)=>{const n=i(10242).getSymbolSize;e.getRowColCoords=function(t){if(1===t)return[];const e=Math.floor(t/7)+2,i=n(t),r=145===i?26:2*Math.ceil((i-13)/(2*e-2)),a=[i-7];for(let t=1;t<e-1;t++)a[t]=a[t-1]-r;return a.push(6),a.reverse()},e.getPositions=function(t){const i=[],n=e.getRowColCoords(t),r=n.length;for(let t=0;t<r;t++)for(let e=0;e<r;e++)0===t&&0===e||0===t&&e===r-1||t===r-1&&0===e||i.push([n[t],n[e]]);return i}},8260:(t,e,i)=>{const n=i(76910),r=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function a(t){this.mode=n.ALPHANUMERIC,this.data=t}a.getBitsLength=function(t){return 11*Math.floor(t/2)+t%2*6},a.prototype.getLength=function(){return this.data.length},a.prototype.getBitsLength=function(){return a.getBitsLength(this.data.length)},a.prototype.write=function(t){let e;for(e=0;e+2<=this.data.length;e+=2){let i=45*r.indexOf(this.data[e]);i+=r.indexOf(this.data[e+1]),t.put(i,11)}this.data.length%2&&t.put(r.indexOf(this.data[e]),6)},t.exports=a},97245:t=>{function e(){this.buffer=[],this.length=0}e.prototype={get:function(t){const e=Math.floor(t/8);return 1==(this.buffer[e]>>>7-t%8&1)},put:function(t,e){for(let i=0;i<e;i++)this.putBit(1==(t>>>e-i-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){const e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}},t.exports=e},73280:t=>{function e(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}e.prototype.set=function(t,e,i,n){const r=t*this.size+e;this.data[r]=i,n&&(this.reservedBit[r]=!0)},e.prototype.get=function(t,e){return this.data[t*this.size+e]},e.prototype.xor=function(t,e,i){this.data[t*this.size+e]^=i},e.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]},t.exports=e},43424:(t,e,i)=>{const n=i(62378),r=i(76910);function a(t){this.mode=r.BYTE,"string"==typeof t&&(t=n(t)),this.data=new Uint8Array(t)}a.getBitsLength=function(t){return 8*t},a.prototype.getLength=function(){return this.data.length},a.prototype.getBitsLength=function(){return a.getBitsLength(this.data.length)},a.prototype.write=function(t){for(let e=0,i=this.data.length;e<i;e++)t.put(this.data[e],8)},t.exports=a},26245:(t,e,i)=>{const n=i(64908),r=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],a=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(t,e){switch(e){case n.L:return r[4*(t-1)+0];case n.M:return r[4*(t-1)+1];case n.Q:return r[4*(t-1)+2];case n.H:return r[4*(t-1)+3];default:return}},e.getTotalCodewordsCount=function(t,e){switch(e){case n.L:return a[4*(t-1)+0];case n.M:return a[4*(t-1)+1];case n.Q:return a[4*(t-1)+2];case n.H:return a[4*(t-1)+3];default:return}}},64908:(t,e)=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2},e.isValid=function(t){return t&&void 0!==t.bit&&t.bit>=0&&t.bit<4},e.from=function(t,i){if(e.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+t)}}(t)}catch(t){return i}}},76526:(t,e,i)=>{const n=i(10242).getSymbolSize;e.getPositions=function(t){const e=n(t);return[[0,0],[e-7,0],[0,e-7]]}},61642:(t,e,i)=>{const n=i(10242),r=n.getBCHDigit(1335);e.getEncodedBits=function(t,e){const i=t.bit<<3|e;let a=i<<10;for(;n.getBCHDigit(a)-r>=0;)a^=1335<<n.getBCHDigit(a)-r;return 21522^(i<<10|a)}},69729:(t,e)=>{const i=new Uint8Array(512),n=new Uint8Array(256);!function(){let t=1;for(let e=0;e<255;e++)i[e]=t,n[t]=e,t<<=1,256&t&&(t^=285);for(let t=255;t<512;t++)i[t]=i[t-255]}(),e.log=function(t){if(t<1)throw new Error("log("+t+")");return n[t]},e.exp=function(t){return i[t]},e.mul=function(t,e){return 0===t||0===e?0:i[n[t]+n[e]]}},35442:(t,e,i)=>{const n=i(76910),r=i(10242);function a(t){this.mode=n.KANJI,this.data=t}a.getBitsLength=function(t){return 13*t},a.prototype.getLength=function(){return this.data.length},a.prototype.getBitsLength=function(){return a.getBitsLength(this.data.length)},a.prototype.write=function(t){let e;for(e=0;e<this.data.length;e++){let i=r.toSJIS(this.data[e]);if(i>=33088&&i<=40956)i-=33088;else{if(!(i>=57408&&i<=60351))throw new Error("Invalid SJIS character: "+this.data[e]+"\nMake sure your charset is UTF-8");i-=49472}i=192*(i>>>8&255)+(255&i),t.put(i,13)}},t.exports=a},27126:(t,e)=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};function i(t,i,n){switch(t){case e.Patterns.PATTERN000:return(i+n)%2==0;case e.Patterns.PATTERN001:return i%2==0;case e.Patterns.PATTERN010:return n%3==0;case e.Patterns.PATTERN011:return(i+n)%3==0;case e.Patterns.PATTERN100:return(Math.floor(i/2)+Math.floor(n/3))%2==0;case e.Patterns.PATTERN101:return i*n%2+i*n%3==0;case e.Patterns.PATTERN110:return(i*n%2+i*n%3)%2==0;case e.Patterns.PATTERN111:return(i*n%3+(i+n)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}}e.isValid=function(t){return null!=t&&""!==t&&!isNaN(t)&&t>=0&&t<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(t){const e=t.size;let i=0,n=0,r=0,a=null,o=null;for(let s=0;s<e;s++){n=r=0,a=o=null;for(let h=0;h<e;h++){let e=t.get(s,h);e===a?n++:(n>=5&&(i+=n-5+3),a=e,n=1),e=t.get(h,s),e===o?r++:(r>=5&&(i+=r-5+3),o=e,r=1)}n>=5&&(i+=n-5+3),r>=5&&(i+=r-5+3)}return i},e.getPenaltyN2=function(t){const e=t.size;let i=0;for(let n=0;n<e-1;n++)for(let r=0;r<e-1;r++){const e=t.get(n,r)+t.get(n,r+1)+t.get(n+1,r)+t.get(n+1,r+1);4!==e&&0!==e||i++}return 3*i},e.getPenaltyN3=function(t){const e=t.size;let i=0,n=0,r=0;for(let a=0;a<e;a++){n=r=0;for(let o=0;o<e;o++)n=n<<1&2047|t.get(a,o),o>=10&&(1488===n||93===n)&&i++,r=r<<1&2047|t.get(o,a),o>=10&&(1488===r||93===r)&&i++}return 40*i},e.getPenaltyN4=function(t){let e=0;const i=t.data.length;for(let n=0;n<i;n++)e+=t.data[n];return 10*Math.abs(Math.ceil(100*e/i/5)-10)},e.applyMask=function(t,e){const n=e.size;for(let r=0;r<n;r++)for(let a=0;a<n;a++)e.isReserved(a,r)||e.xor(a,r,i(t,a,r))},e.getBestMask=function(t,i){const n=Object.keys(e.Patterns).length;let r=0,a=1/0;for(let o=0;o<n;o++){i(o),e.applyMask(o,t);const n=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),n<a&&(a=n,r=o)}return r}},76910:(t,e,i)=>{const n=i(43114),r=i(7007);e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(t,e){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!n.isValid(e))throw new Error("Invalid version: "+e);return e>=1&&e<10?t.ccBits[0]:e<27?t.ccBits[1]:t.ccBits[2]},e.getBestModeForData=function(t){return r.testNumeric(t)?e.NUMERIC:r.testAlphanumeric(t)?e.ALPHANUMERIC:r.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},e.isValid=function(t){return t&&t.bit&&t.ccBits},e.from=function(t,i){if(e.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+t)}}(t)}catch(t){return i}}},41085:(t,e,i)=>{const n=i(76910);function r(t){this.mode=n.NUMERIC,this.data=t.toString()}r.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(t){let e,i,n;for(e=0;e+3<=this.data.length;e+=3)i=this.data.substr(e,3),n=parseInt(i,10),t.put(n,10);const r=this.data.length-e;r>0&&(i=this.data.substr(e),n=parseInt(i,10),t.put(n,3*r+1))},t.exports=r},26143:(t,e,i)=>{const n=i(69729);e.mul=function(t,e){const i=new Uint8Array(t.length+e.length-1);for(let r=0;r<t.length;r++)for(let a=0;a<e.length;a++)i[r+a]^=n.mul(t[r],e[a]);return i},e.mod=function(t,e){let i=new Uint8Array(t);for(;i.length-e.length>=0;){const t=i[0];for(let r=0;r<e.length;r++)i[r]^=n.mul(e[r],t);let r=0;for(;r<i.length&&0===i[r];)r++;i=i.slice(r)}return i},e.generateECPolynomial=function(t){let i=new Uint8Array([1]);for(let r=0;r<t;r++)i=e.mul(i,new Uint8Array([1,n.exp(r)]));return i}},95115:(t,e,i)=>{const n=i(10242),r=i(64908),a=i(97245),o=i(73280),s=i(21845),h=i(76526),c=i(27126),l=i(26245),d=i(52882),u=i(23103),p=i(61642),g=i(76910),f=i(16130);function m(t,e,i){const n=t.size,r=p.getEncodedBits(e,i);let a,o;for(a=0;a<15;a++)o=1==(r>>a&1),a<6?t.set(a,8,o,!0):a<8?t.set(a+1,8,o,!0):t.set(n-15+a,8,o,!0),a<8?t.set(8,n-a-1,o,!0):a<9?t.set(8,15-a-1+1,o,!0):t.set(8,15-a-1,o,!0);t.set(n-8,8,1,!0)}function v(t,e,i,r){let p;if(Array.isArray(t))p=f.fromArray(t);else{if("string"!=typeof t)throw new Error("Invalid data");{let n=e;if(!n){const e=f.rawSplit(t);n=u.getBestVersionForData(e,i)}p=f.fromString(t,n||40)}}const v=u.getBestVersionForData(p,i);if(!v)throw new Error("The amount of data is too big to be stored in a QR Code");if(e){if(e<v)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+v+".\n")}else e=v;const w=function(t,e,i){const r=new a;i.forEach((function(e){r.put(e.mode.bit,4),r.put(e.getLength(),g.getCharCountIndicator(e.mode,t)),e.write(r)}));const o=8*(n.getSymbolTotalCodewords(t)-l.getTotalCodewordsCount(t,e));for(r.getLengthInBits()+4<=o&&r.put(0,4);r.getLengthInBits()%8!=0;)r.putBit(0);const s=(o-r.getLengthInBits())/8;for(let t=0;t<s;t++)r.put(t%2?17:236,8);return function(t,e,i){const r=n.getSymbolTotalCodewords(e),a=r-l.getTotalCodewordsCount(e,i),o=l.getBlocksCount(e,i),s=o-r%o,h=Math.floor(r/o),c=Math.floor(a/o),u=c+1,p=h-c,g=new d(p);let f=0;const m=new Array(o),v=new Array(o);let w=0;const y=new Uint8Array(t.buffer);for(let t=0;t<o;t++){const e=t<s?c:u;m[t]=y.slice(f,f+e),v[t]=g.encode(m[t]),f+=e,w=Math.max(w,e)}const b=new Uint8Array(r);let x,M,C=0;for(x=0;x<w;x++)for(M=0;M<o;M++)x<m[M].length&&(b[C++]=m[M][x]);for(x=0;x<p;x++)for(M=0;M<o;M++)b[C++]=v[M][x];return b}(r,t,e)}(e,i,p),y=n.getSymbolSize(e),b=new o(y);return function(t,e){const i=t.size,n=h.getPositions(e);for(let e=0;e<n.length;e++){const r=n[e][0],a=n[e][1];for(let e=-1;e<=7;e++)if(!(r+e<=-1||i<=r+e))for(let n=-1;n<=7;n++)a+n<=-1||i<=a+n||(e>=0&&e<=6&&(0===n||6===n)||n>=0&&n<=6&&(0===e||6===e)||e>=2&&e<=4&&n>=2&&n<=4?t.set(r+e,a+n,!0,!0):t.set(r+e,a+n,!1,!0))}}(b,e),function(t){const e=t.size;for(let i=8;i<e-8;i++){const e=i%2==0;t.set(i,6,e,!0),t.set(6,i,e,!0)}}(b),function(t,e){const i=s.getPositions(e);for(let e=0;e<i.length;e++){const n=i[e][0],r=i[e][1];for(let e=-2;e<=2;e++)for(let i=-2;i<=2;i++)-2===e||2===e||-2===i||2===i||0===e&&0===i?t.set(n+e,r+i,!0,!0):t.set(n+e,r+i,!1,!0)}}(b,e),m(b,i,0),e>=7&&function(t,e){const i=t.size,n=u.getEncodedBits(e);let r,a,o;for(let e=0;e<18;e++)r=Math.floor(e/3),a=e%3+i-8-3,o=1==(n>>e&1),t.set(r,a,o,!0),t.set(a,r,o,!0)}(b,e),function(t,e){const i=t.size;let n=-1,r=i-1,a=7,o=0;for(let s=i-1;s>0;s-=2)for(6===s&&s--;;){for(let i=0;i<2;i++)if(!t.isReserved(r,s-i)){let n=!1;o<e.length&&(n=1==(e[o]>>>a&1)),t.set(r,s-i,n),a--,-1===a&&(o++,a=7)}if(r+=n,r<0||i<=r){r-=n,n=-n;break}}}(b,w),isNaN(r)&&(r=c.getBestMask(b,m.bind(null,b,i))),c.applyMask(r,b),m(b,i,r),{modules:b,version:e,errorCorrectionLevel:i,maskPattern:r,segments:p}}e.create=function(t,e){if(void 0===t||""===t)throw new Error("No input text");let i,a,o=r.M;return void 0!==e&&(o=r.from(e.errorCorrectionLevel,r.M),i=u.from(e.version),a=c.from(e.maskPattern),e.toSJISFunc&&n.setToSJISFunction(e.toSJISFunc)),v(t,i,o,a)}},52882:(t,e,i)=>{const n=i(26143);function r(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(t){this.degree=t,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(t){if(!this.genPoly)throw new Error("Encoder not initialized");const e=new Uint8Array(t.length+this.degree);e.set(t);const i=n.mod(e,this.genPoly),r=this.degree-i.length;if(r>0){const t=new Uint8Array(this.degree);return t.set(i,r),t}return i},t.exports=r},7007:(t,e)=>{let i="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";i=i.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+i+")(?:.|[\r\n]))+";e.KANJI=new RegExp(i,"g"),e.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),e.BYTE=new RegExp(n,"g"),e.NUMERIC=new RegExp("[0-9]+","g"),e.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");const r=new RegExp("^"+i+"$"),a=new RegExp("^[0-9]+$"),o=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");e.testKanji=function(t){return r.test(t)},e.testNumeric=function(t){return a.test(t)},e.testAlphanumeric=function(t){return o.test(t)}},16130:(t,e,i)=>{const n=i(76910),r=i(41085),a=i(8260),o=i(43424),s=i(35442),h=i(7007),c=i(10242),l=i(65987);function d(t){return unescape(encodeURIComponent(t)).length}function u(t,e,i){const n=[];let r;for(;null!==(r=t.exec(i));)n.push({data:r[0],index:r.index,mode:e,length:r[0].length});return n}function p(t){const e=u(h.NUMERIC,n.NUMERIC,t),i=u(h.ALPHANUMERIC,n.ALPHANUMERIC,t);let r,a;return c.isKanjiModeEnabled()?(r=u(h.BYTE,n.BYTE,t),a=u(h.KANJI,n.KANJI,t)):(r=u(h.BYTE_KANJI,n.BYTE,t),a=[]),e.concat(i,r,a).sort((function(t,e){return t.index-e.index})).map((function(t){return{data:t.data,mode:t.mode,length:t.length}}))}function g(t,e){switch(e){case n.NUMERIC:return r.getBitsLength(t);case n.ALPHANUMERIC:return a.getBitsLength(t);case n.KANJI:return s.getBitsLength(t);case n.BYTE:return o.getBitsLength(t)}}function f(t,e){let i;const h=n.getBestModeForData(t);if(i=n.from(e,h),i!==n.BYTE&&i.bit<h.bit)throw new Error('"'+t+'" cannot be encoded with mode '+n.toString(i)+".\n Suggested mode is: "+n.toString(h));switch(i!==n.KANJI||c.isKanjiModeEnabled()||(i=n.BYTE),i){case n.NUMERIC:return new r(t);case n.ALPHANUMERIC:return new a(t);case n.KANJI:return new s(t);case n.BYTE:return new o(t)}}e.fromArray=function(t){return t.reduce((function(t,e){return"string"==typeof e?t.push(f(e,null)):e.data&&t.push(f(e.data,e.mode)),t}),[])},e.fromString=function(t,i){const r=function(t){const e=[];for(let i=0;i<t.length;i++){const r=t[i];switch(r.mode){case n.NUMERIC:e.push([r,{data:r.data,mode:n.ALPHANUMERIC,length:r.length},{data:r.data,mode:n.BYTE,length:r.length}]);break;case n.ALPHANUMERIC:e.push([r,{data:r.data,mode:n.BYTE,length:r.length}]);break;case n.KANJI:e.push([r,{data:r.data,mode:n.BYTE,length:d(r.data)}]);break;case n.BYTE:e.push([{data:r.data,mode:n.BYTE,length:d(r.data)}])}}return e}(p(t,c.isKanjiModeEnabled())),a=function(t,e){const i={},r={start:{}};let a=["start"];for(let o=0;o<t.length;o++){const s=t[o],h=[];for(let t=0;t<s.length;t++){const c=s[t],l=""+o+t;h.push(l),i[l]={node:c,lastCount:0},r[l]={};for(let t=0;t<a.length;t++){const o=a[t];i[o]&&i[o].node.mode===c.mode?(r[o][l]=g(i[o].lastCount+c.length,c.mode)-g(i[o].lastCount,c.mode),i[o].lastCount+=c.length):(i[o]&&(i[o].lastCount=c.length),r[o][l]=g(c.length,c.mode)+4+n.getCharCountIndicator(c.mode,e))}}a=h}for(let t=0;t<a.length;t++)r[a[t]].end=0;return{map:r,table:i}}(r,i),o=l.find_path(a.map,"start","end"),s=[];for(let t=1;t<o.length-1;t++)s.push(a.table[o[t]].node);return e.fromArray(s.reduce((function(t,e){const i=t.length-1>=0?t[t.length-1]:null;return i&&i.mode===e.mode?(t[t.length-1].data+=e.data,t):(t.push(e),t)}),[]))},e.rawSplit=function(t){return e.fromArray(p(t,c.isKanjiModeEnabled()))}},10242:(t,e)=>{let i;const n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return 4*t+17},e.getSymbolTotalCodewords=function(t){return n[t]},e.getBCHDigit=function(t){let e=0;for(;0!==t;)e++,t>>>=1;return e},e.setToSJISFunction=function(t){if("function"!=typeof t)throw new Error('"toSJISFunc" is not a valid function.');i=t},e.isKanjiModeEnabled=function(){return void 0!==i},e.toSJIS=function(t){return i(t)}},43114:(t,e)=>{e.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}},23103:(t,e,i)=>{const n=i(10242),r=i(26245),a=i(64908),o=i(76910),s=i(43114),h=n.getBCHDigit(7973);function c(t,e){return o.getCharCountIndicator(t,e)+4}function l(t,e){let i=0;return t.forEach((function(t){const n=c(t.mode,e);i+=n+t.getBitsLength()})),i}e.from=function(t,e){return s.isValid(t)?parseInt(t,10):e},e.getCapacity=function(t,e,i){if(!s.isValid(t))throw new Error("Invalid QR Code version");void 0===i&&(i=o.BYTE);const a=8*(n.getSymbolTotalCodewords(t)-r.getTotalCodewordsCount(t,e));if(i===o.MIXED)return a;const h=a-c(i,t);switch(i){case o.NUMERIC:return Math.floor(h/10*3);case o.ALPHANUMERIC:return Math.floor(h/11*2);case o.KANJI:return Math.floor(h/13);case o.BYTE:default:return Math.floor(h/8)}},e.getBestVersionForData=function(t,i){let n;const r=a.from(i,a.M);if(Array.isArray(t)){if(t.length>1)return function(t,i){for(let n=1;n<=40;n++)if(l(t,n)<=e.getCapacity(n,i,o.MIXED))return n}(t,r);if(0===t.length)return 1;n=t[0]}else n=t;return function(t,i,n){for(let r=1;r<=40;r++)if(i<=e.getCapacity(r,n,t))return r}(n.mode,n.getLength(),r)},e.getEncodedBits=function(t){if(!s.isValid(t)||t<7)throw new Error("Invalid QR Code version");let e=t<<12;for(;n.getBCHDigit(e)-h>=0;)e^=7973<<n.getBCHDigit(e)-h;return t<<12|e}},6907:(t,e,i)=>{const n=i(89653);e.render=function(t,e,i){let r=i,a=e;void 0!==r||e&&e.getContext||(r=e,e=void 0),e||(a=function(){try{return document.createElement("canvas")}catch(t){throw new Error("You need to specify a canvas element")}}()),r=n.getOptions(r);const o=n.getImageWidth(t.modules.size,r),s=a.getContext("2d"),h=s.createImageData(o,o);return n.qrToImageData(h.data,t,r),function(t,e,i){t.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=i,e.width=i,e.style.height=i+"px",e.style.width=i+"px"}(s,a,o),s.putImageData(h,0,0),a},e.renderToDataURL=function(t,i,n){let r=n;void 0!==r||i&&i.getContext||(r=i,i=void 0),r||(r={});const a=e.render(t,i,r),o=r.type||"image/png",s=r.rendererOpts||{};return a.toDataURL(o,s.quality)}},93776:(t,e,i)=>{const n=i(89653);function r(t,e){const i=t.a/255,n=e+'="'+t.hex+'"';return i<1?n+" "+e+'-opacity="'+i.toFixed(2).slice(1)+'"':n}function a(t,e,i){let n=t+e;return void 0!==i&&(n+=" "+i),n}e.render=function(t,e,i){const o=n.getOptions(e),s=t.modules.size,h=t.modules.data,c=s+2*o.margin,l=o.color.light.a?"<path "+r(o.color.light,"fill")+' d="M0 0h'+c+"v"+c+'H0z"/>':"",d="<path "+r(o.color.dark,"stroke")+' d="'+function(t,e,i){let n="",r=0,o=!1,s=0;for(let h=0;h<t.length;h++){const c=Math.floor(h%e),l=Math.floor(h/e);c||o||(o=!0),t[h]?(s++,h>0&&c>0&&t[h-1]||(n+=o?a("M",c+i,.5+l+i):a("m",r,0),r=0,o=!1),c+1<e&&t[h+1]||(n+=a("h",s),s=0)):r++}return n}(h,s,o.margin)+'"/>',u='viewBox="0 0 '+c+" "+c+'"',p='<svg xmlns="http://www.w3.org/2000/svg" '+(o.width?'width="'+o.width+'" height="'+o.width+'" ':"")+u+' shape-rendering="crispEdges">'+l+d+"</svg>\n";return"function"==typeof i&&i(null,p),p}},89653:(t,e)=>{function i(t){if("number"==typeof t&&(t=t.toString()),"string"!=typeof t)throw new Error("Color should be defined as hex string");let e=t.slice().replace("#","").split("");if(e.length<3||5===e.length||e.length>8)throw new Error("Invalid hex color: "+t);3!==e.length&&4!==e.length||(e=Array.prototype.concat.apply([],e.map((function(t){return[t,t]})))),6===e.length&&e.push("F","F");const i=parseInt(e.join(""),16);return{r:i>>24&255,g:i>>16&255,b:i>>8&255,a:255&i,hex:"#"+e.slice(0,6).join("")}}e.getOptions=function(t){t||(t={}),t.color||(t.color={});const e=void 0===t.margin||null===t.margin||t.margin<0?4:t.margin,n=t.width&&t.width>=21?t.width:void 0,r=t.scale||4;return{width:n,scale:n?4:r,margin:e,color:{dark:i(t.color.dark||"#000000ff"),light:i(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}},e.getScale=function(t,e){return e.width&&e.width>=t+2*e.margin?e.width/(t+2*e.margin):e.scale},e.getImageWidth=function(t,i){const n=e.getScale(t,i);return Math.floor((t+2*i.margin)*n)},e.qrToImageData=function(t,i,n){const r=i.modules.size,a=i.modules.data,o=e.getScale(r,n),s=Math.floor((r+2*n.margin)*o),h=n.margin*o,c=[n.color.light,n.color.dark];for(let e=0;e<s;e++)for(let i=0;i<s;i++){let l=4*(e*s+i),d=n.color.light;e>=h&&i>=h&&e<s-h&&i<s-h&&(d=c[a[Math.floor((e-h)/o)*r+Math.floor((i-h)/o)]?1:0]),t[l++]=d.r,t[l++]=d.g,t[l++]=d.b,t[l]=d.a}}}}]); +//# sourceMappingURL=48.b5ecdbc517423af07ca4.js.map +\ No newline at end of file diff --git a/priv/static/static/js/48.b5ecdbc517423af07ca4.js.LICENSE.txt b/priv/static/static/js/48.b5ecdbc517423af07ca4.js.LICENSE.txt @@ -0,0 +1,11 @@ +/*! + * Cropper.js v1.5.13 + * https://fengyuanchen.github.io/cropperjs + * + * Copyright 2015-present Chen Fengyuan + * Released under the MIT license + * + * Date: 2022-11-20T05:30:46.114Z + */ + +/*! vue-qrcode v2.0.0 | (c) 2018-present Chen Fengyuan | MIT */ diff --git a/priv/static/static/js/48.b5ecdbc517423af07ca4.js.map b/priv/static/static/js/48.b5ecdbc517423af07ca4.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/48.b5ecdbc517423af07ca4.js","mappings":"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","sources":["webpack://pleroma_fe/./node_modules/@chenfengyuan/vue-qrcode/dist/vue-qrcode.esm.js","webpack://pleroma_fe/./node_modules/cropperjs/dist/cropper.js","webpack://pleroma_fe/./node_modules/dijkstrajs/dijkstra.js","webpack://pleroma_fe/./node_modules/encode-utf8/index.js","webpack://pleroma_fe/./node_modules/qrcode/lib/browser.js","webpack://pleroma_fe/./node_modules/qrcode/lib/can-promise.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/alignment-pattern.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/alphanumeric-data.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/bit-buffer.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/bit-matrix.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/byte-data.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/error-correction-code.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/error-correction-level.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/finder-pattern.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/format-info.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/galois-field.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/kanji-data.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/mask-pattern.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/mode.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/numeric-data.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/polynomial.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/qrcode.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/reed-solomon-encoder.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/regex.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/segments.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/utils.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/version-check.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/version.js","webpack://pleroma_fe/./node_modules/qrcode/lib/renderer/canvas.js","webpack://pleroma_fe/./node_modules/qrcode/lib/renderer/svg-tag.js","webpack://pleroma_fe/./node_modules/qrcode/lib/renderer/utils.js"],"sourcesContent":["/*! vue-qrcode v2.0.0 | (c) 2018-present Chen Fengyuan | MIT */\nimport { defineComponent, h } from 'vue';\nimport { toString, toDataURL, toCanvas } from 'qrcode';\n\nconst EVENT_READY = 'ready';\r\nvar index = defineComponent({\r\n name: 'VueQrcode',\r\n props: {\r\n /**\r\n * The value of the QR code.\r\n */\r\n value: {\r\n type: String,\r\n default: undefined,\r\n },\r\n /**\r\n * The options for the QR code generator.\r\n * {@link https://github.com/soldair/node-qrcode#qr-code-options}\r\n */\r\n options: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n /**\r\n * The tag name of the component's root element.\r\n */\r\n tag: {\r\n type: String,\r\n default: 'canvas',\r\n },\r\n },\r\n emits: [EVENT_READY],\r\n watch: {\r\n $props: {\r\n deep: true,\r\n immediate: true,\r\n /**\r\n * Update the QR code when props changed.\r\n */\r\n handler() {\r\n if (this.$el) {\r\n this.generate();\r\n }\r\n },\r\n },\r\n },\r\n mounted() {\r\n this.generate();\r\n },\r\n methods: {\r\n /**\r\n * Generate QR code.\r\n */\r\n generate() {\r\n const options = this.options || {};\r\n const value = String(this.value);\r\n const done = () => {\r\n this.$emit(EVENT_READY, this.$el);\r\n };\r\n switch (this.tag) {\r\n case 'canvas':\r\n toCanvas(this.$el, value, options, (error) => {\r\n if (error) {\r\n throw error;\r\n }\r\n done();\r\n });\r\n break;\r\n case 'img':\r\n toDataURL(value, options, (error, url) => {\r\n if (error) {\r\n throw error;\r\n }\r\n this.$el.src = url;\r\n this.$el.onload = done;\r\n });\r\n break;\r\n case 'svg':\r\n toString(value, options, (error, string) => {\r\n if (error) {\r\n throw error;\r\n }\r\n const div = document.createElement('div');\r\n div.innerHTML = string;\r\n const svg = div.querySelector('svg');\r\n if (svg) {\r\n const { attributes, childNodes } = svg;\r\n Object.keys(attributes).forEach((key) => {\r\n const attribute = attributes[Number(key)];\r\n this.$el.setAttribute(attribute.name, attribute.value);\r\n });\r\n Object.keys(childNodes).forEach((key) => {\r\n const childNode = childNodes[Number(key)];\r\n this.$el.appendChild(childNode.cloneNode(true));\r\n });\r\n done();\r\n }\r\n });\r\n break;\r\n }\r\n },\r\n },\r\n render() {\r\n return h(this.tag, this.$slots.default);\r\n },\r\n});\n\nexport { index as default };\n","/*!\n * Cropper.js v1.5.13\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2022-11-20T05:30:46.114Z\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Cropper = factory());\n})(this, (function () { 'use strict';\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n }\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n }\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n }\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n }\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n }\n function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n }\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n }\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var WINDOW = IS_BROWSER ? window : {};\n var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\n var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\n var NAMESPACE = 'cropper';\n\n // Actions\n var ACTION_ALL = 'all';\n var ACTION_CROP = 'crop';\n var ACTION_MOVE = 'move';\n var ACTION_ZOOM = 'zoom';\n var ACTION_EAST = 'e';\n var ACTION_WEST = 'w';\n var ACTION_SOUTH = 's';\n var ACTION_NORTH = 'n';\n var ACTION_NORTH_EAST = 'ne';\n var ACTION_NORTH_WEST = 'nw';\n var ACTION_SOUTH_EAST = 'se';\n var ACTION_SOUTH_WEST = 'sw';\n\n // Classes\n var CLASS_CROP = \"\".concat(NAMESPACE, \"-crop\");\n var CLASS_DISABLED = \"\".concat(NAMESPACE, \"-disabled\");\n var CLASS_HIDDEN = \"\".concat(NAMESPACE, \"-hidden\");\n var CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\n var CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\n var CLASS_MODAL = \"\".concat(NAMESPACE, \"-modal\");\n var CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\");\n\n // Data keys\n var DATA_ACTION = \"\".concat(NAMESPACE, \"Action\");\n var DATA_PREVIEW = \"\".concat(NAMESPACE, \"Preview\");\n\n // Drag modes\n var DRAG_MODE_CROP = 'crop';\n var DRAG_MODE_MOVE = 'move';\n var DRAG_MODE_NONE = 'none';\n\n // Events\n var EVENT_CROP = 'crop';\n var EVENT_CROP_END = 'cropend';\n var EVENT_CROP_MOVE = 'cropmove';\n var EVENT_CROP_START = 'cropstart';\n var EVENT_DBLCLICK = 'dblclick';\n var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\n var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\n var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\n var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\n var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\n var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\n var EVENT_READY = 'ready';\n var EVENT_RESIZE = 'resize';\n var EVENT_WHEEL = 'wheel';\n var EVENT_ZOOM = 'zoom';\n\n // Mime types\n var MIME_TYPE_JPEG = 'image/jpeg';\n\n // RegExps\n var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/;\n var REGEXP_DATA_URL = /^data:/;\n var REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg;base64,/;\n var REGEXP_TAG_NAME = /^img|canvas$/i;\n\n // Misc\n // Inspired by the default width and height of a canvas element.\n var MIN_CONTAINER_WIDTH = 200;\n var MIN_CONTAINER_HEIGHT = 100;\n\n var DEFAULTS = {\n // Define the view mode of the cropper\n viewMode: 0,\n // 0, 1, 2, 3\n\n // Define the dragging mode of the cropper\n dragMode: DRAG_MODE_CROP,\n // 'crop', 'move' or 'none'\n\n // Define the initial aspect ratio of the crop box\n initialAspectRatio: NaN,\n // Define the aspect ratio of the crop box\n aspectRatio: NaN,\n // An object with the previous cropping result data\n data: null,\n // A selector for adding extra containers to preview\n preview: '',\n // Re-render the cropper when resize the window\n responsive: true,\n // Restore the cropped area after resize the window\n restore: true,\n // Check if the current image is a cross-origin image\n checkCrossOrigin: true,\n // Check the current image's Exif Orientation information\n checkOrientation: true,\n // Show the black modal\n modal: true,\n // Show the dashed lines for guiding\n guides: true,\n // Show the center indicator for guiding\n center: true,\n // Show the white modal to highlight the crop box\n highlight: true,\n // Show the grid background\n background: true,\n // Enable to crop the image automatically when initialize\n autoCrop: true,\n // Define the percentage of automatic cropping area when initializes\n autoCropArea: 0.8,\n // Enable to move the image\n movable: true,\n // Enable to rotate the image\n rotatable: true,\n // Enable to scale the image\n scalable: true,\n // Enable to zoom the image\n zoomable: true,\n // Enable to zoom the image by dragging touch\n zoomOnTouch: true,\n // Enable to zoom the image by wheeling mouse\n zoomOnWheel: true,\n // Define zoom ratio when zoom the image by wheeling mouse\n wheelZoomRatio: 0.1,\n // Enable to move the crop box\n cropBoxMovable: true,\n // Enable to resize the crop box\n cropBoxResizable: true,\n // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\n toggleDragModeOnDblclick: true,\n // Size limitation\n minCanvasWidth: 0,\n minCanvasHeight: 0,\n minCropBoxWidth: 0,\n minCropBoxHeight: 0,\n minContainerWidth: MIN_CONTAINER_WIDTH,\n minContainerHeight: MIN_CONTAINER_HEIGHT,\n // Shortcuts of events\n ready: null,\n cropstart: null,\n cropmove: null,\n cropend: null,\n crop: null,\n zoom: null\n };\n\n var TEMPLATE = '<div class=\"cropper-container\" touch-action=\"none\">' + '<div class=\"cropper-wrap-box\">' + '<div class=\"cropper-canvas\"></div>' + '</div>' + '<div class=\"cropper-drag-box\"></div>' + '<div class=\"cropper-crop-box\">' + '<span class=\"cropper-view-box\"></span>' + '<span class=\"cropper-dashed dashed-h\"></span>' + '<span class=\"cropper-dashed dashed-v\"></span>' + '<span class=\"cropper-center\"></span>' + '<span class=\"cropper-face\"></span>' + '<span class=\"cropper-line line-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-line line-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-line line-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-line line-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-point point-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-point point-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-point point-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-ne\" data-cropper-action=\"ne\"></span>' + '<span class=\"cropper-point point-nw\" data-cropper-action=\"nw\"></span>' + '<span class=\"cropper-point point-sw\" data-cropper-action=\"sw\"></span>' + '<span class=\"cropper-point point-se\" data-cropper-action=\"se\"></span>' + '</div>' + '</div>';\n\n /**\n * Check if the given value is not a number.\n */\n var isNaN = Number.isNaN || WINDOW.isNaN;\n\n /**\n * Check if the given value is a number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n */\n function isNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n }\n\n /**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\n var isPositiveNumber = function isPositiveNumber(value) {\n return value > 0 && value < Infinity;\n };\n\n /**\n * Check if the given value is undefined.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n */\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n\n /**\n * Check if the given value is an object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n */\n function isObject(value) {\n return _typeof(value) === 'object' && value !== null;\n }\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n /**\n * Check if the given value is a plain object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n */\n function isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n try {\n var _constructor = value.constructor;\n var prototype = _constructor.prototype;\n return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Check if the given value is a function.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n */\n function isFunction(value) {\n return typeof value === 'function';\n }\n var slice = Array.prototype.slice;\n\n /**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\n function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n }\n\n /**\n * Iterate the given data.\n * @param {*} data - The data to iterate.\n * @param {Function} callback - The process function for each element.\n * @returns {*} The original data.\n */\n function forEach(data, callback) {\n if (data && isFunction(callback)) {\n if (Array.isArray(data) || isNumber(data.length) /* array-like */) {\n toArray(data).forEach(function (value, key) {\n callback.call(data, value, key, data);\n });\n } else if (isObject(data)) {\n Object.keys(data).forEach(function (key) {\n callback.call(data, data[key], key, data);\n });\n }\n }\n return data;\n }\n\n /**\n * Extend the given object.\n * @param {*} target - The target object to extend.\n * @param {*} args - The rest objects for merging to the target object.\n * @returns {Object} The extended object.\n */\n var assign = Object.assign || function assign(target) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (isObject(target) && args.length > 0) {\n args.forEach(function (arg) {\n if (isObject(arg)) {\n Object.keys(arg).forEach(function (key) {\n target[key] = arg[key];\n });\n }\n });\n }\n return target;\n };\n var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n\n /**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\n function normalizeDecimalNumber(value) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n }\n var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/;\n\n /**\n * Apply styles to the given element.\n * @param {Element} element - The target element.\n * @param {Object} styles - The styles for applying.\n */\n function setStyle(element, styles) {\n var style = element.style;\n forEach(styles, function (value, property) {\n if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n value = \"\".concat(value, \"px\");\n }\n style[property] = value;\n });\n }\n\n /**\n * Check if the given element has a special class.\n * @param {Element} element - The element to check.\n * @param {string} value - The class to search.\n * @returns {boolean} Returns `true` if the special class was found.\n */\n function hasClass(element, value) {\n return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n }\n\n /**\n * Add classes to the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be added.\n */\n function addClass(element, value) {\n if (!value) {\n return;\n }\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n addClass(elem, value);\n });\n return;\n }\n if (element.classList) {\n element.classList.add(value);\n return;\n }\n var className = element.className.trim();\n if (!className) {\n element.className = value;\n } else if (className.indexOf(value) < 0) {\n element.className = \"\".concat(className, \" \").concat(value);\n }\n }\n\n /**\n * Remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be removed.\n */\n function removeClass(element, value) {\n if (!value) {\n return;\n }\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n removeClass(elem, value);\n });\n return;\n }\n if (element.classList) {\n element.classList.remove(value);\n return;\n }\n if (element.className.indexOf(value) >= 0) {\n element.className = element.className.replace(value, '');\n }\n }\n\n /**\n * Add or remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be toggled.\n * @param {boolean} added - Add only.\n */\n function toggleClass(element, value, added) {\n if (!value) {\n return;\n }\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n toggleClass(elem, value, added);\n });\n return;\n }\n\n // IE10-11 doesn't support the second parameter of `classList.toggle`\n if (added) {\n addClass(element, value);\n } else {\n removeClass(element, value);\n }\n }\n var REGEXP_CAMEL_CASE = /([a-z\\d])([A-Z])/g;\n\n /**\n * Transform the given string from camelCase to kebab-case\n * @param {string} value - The value to transform.\n * @returns {string} The transformed value.\n */\n function toParamCase(value) {\n return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase();\n }\n\n /**\n * Get data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to get.\n * @returns {string} The data value.\n */\n function getData(element, name) {\n if (isObject(element[name])) {\n return element[name];\n }\n if (element.dataset) {\n return element.dataset[name];\n }\n return element.getAttribute(\"data-\".concat(toParamCase(name)));\n }\n\n /**\n * Set data to the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to set.\n * @param {string} data - The data value.\n */\n function setData(element, name, data) {\n if (isObject(data)) {\n element[name] = data;\n } else if (element.dataset) {\n element.dataset[name] = data;\n } else {\n element.setAttribute(\"data-\".concat(toParamCase(name)), data);\n }\n }\n\n /**\n * Remove data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to remove.\n */\n function removeData(element, name) {\n if (isObject(element[name])) {\n try {\n delete element[name];\n } catch (error) {\n element[name] = undefined;\n }\n } else if (element.dataset) {\n // #128 Safari not allows to delete dataset property\n try {\n delete element.dataset[name];\n } catch (error) {\n element.dataset[name] = undefined;\n }\n } else {\n element.removeAttribute(\"data-\".concat(toParamCase(name)));\n }\n }\n var REGEXP_SPACES = /\\s\\s*/;\n var onceSupported = function () {\n var supported = false;\n if (IS_BROWSER) {\n var once = false;\n var listener = function listener() {};\n var options = Object.defineProperty({}, 'once', {\n get: function get() {\n supported = true;\n return once;\n },\n /**\n * This setter can fix a `TypeError` in strict mode\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n * @param {boolean} value - The value to set\n */\n set: function set(value) {\n once = value;\n }\n });\n WINDOW.addEventListener('test', listener, options);\n WINDOW.removeEventListener('test', listener, options);\n }\n return supported;\n }();\n\n /**\n * Remove event listener from the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n function removeListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (!onceSupported) {\n var listeners = element.listeners;\n if (listeners && listeners[event] && listeners[event][listener]) {\n handler = listeners[event][listener];\n delete listeners[event][listener];\n if (Object.keys(listeners[event]).length === 0) {\n delete listeners[event];\n }\n if (Object.keys(listeners).length === 0) {\n delete element.listeners;\n }\n }\n }\n element.removeEventListener(event, handler, options);\n });\n }\n\n /**\n * Add event listener to the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n function addListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (options.once && !onceSupported) {\n var _element$listeners = element.listeners,\n listeners = _element$listeners === void 0 ? {} : _element$listeners;\n _handler = function handler() {\n delete listeners[event][listener];\n element.removeEventListener(event, _handler, options);\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n listener.apply(element, args);\n };\n if (!listeners[event]) {\n listeners[event] = {};\n }\n if (listeners[event][listener]) {\n element.removeEventListener(event, listeners[event][listener], options);\n }\n listeners[event][listener] = _handler;\n element.listeners = listeners;\n }\n element.addEventListener(event, _handler, options);\n });\n }\n\n /**\n * Dispatch event on the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Object} data - The additional event data.\n * @returns {boolean} Indicate if the event is default prevented or not.\n */\n function dispatchEvent(element, type, data) {\n var event;\n\n // Event and CustomEvent on IE9-11 are global objects, not constructors\n if (isFunction(Event) && isFunction(CustomEvent)) {\n event = new CustomEvent(type, {\n detail: data,\n bubbles: true,\n cancelable: true\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, data);\n }\n return element.dispatchEvent(event);\n }\n\n /**\n * Get the offset base on the document.\n * @param {Element} element - The target element.\n * @returns {Object} The offset data.\n */\n function getOffset(element) {\n var box = element.getBoundingClientRect();\n return {\n left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n };\n }\n var location = WINDOW.location;\n var REGEXP_ORIGINS = /^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;\n\n /**\n * Check if the given URL is a cross origin URL.\n * @param {string} url - The target URL.\n * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.\n */\n function isCrossOriginURL(url) {\n var parts = url.match(REGEXP_ORIGINS);\n return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);\n }\n\n /**\n * Add timestamp to the given URL.\n * @param {string} url - The target URL.\n * @returns {string} The result URL.\n */\n function addTimestamp(url) {\n var timestamp = \"timestamp=\".concat(new Date().getTime());\n return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;\n }\n\n /**\n * Get transforms base on the given object.\n * @param {Object} obj - The target object.\n * @returns {string} A string contains transform values.\n */\n function getTransforms(_ref) {\n var rotate = _ref.rotate,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n translateX = _ref.translateX,\n translateY = _ref.translateY;\n var values = [];\n if (isNumber(translateX) && translateX !== 0) {\n values.push(\"translateX(\".concat(translateX, \"px)\"));\n }\n if (isNumber(translateY) && translateY !== 0) {\n values.push(\"translateY(\".concat(translateY, \"px)\"));\n }\n\n // Rotate should come first before scale to match orientation transform\n if (isNumber(rotate) && rotate !== 0) {\n values.push(\"rotate(\".concat(rotate, \"deg)\"));\n }\n if (isNumber(scaleX) && scaleX !== 1) {\n values.push(\"scaleX(\".concat(scaleX, \")\"));\n }\n if (isNumber(scaleY) && scaleY !== 1) {\n values.push(\"scaleY(\".concat(scaleY, \")\"));\n }\n var transform = values.length ? values.join(' ') : 'none';\n return {\n WebkitTransform: transform,\n msTransform: transform,\n transform: transform\n };\n }\n\n /**\n * Get the max ratio of a group of pointers.\n * @param {string} pointers - The target pointers.\n * @returns {number} The result ratio.\n */\n function getMaxZoomRatio(pointers) {\n var pointers2 = _objectSpread2({}, pointers);\n var maxRatio = 0;\n forEach(pointers, function (pointer, pointerId) {\n delete pointers2[pointerId];\n forEach(pointers2, function (pointer2) {\n var x1 = Math.abs(pointer.startX - pointer2.startX);\n var y1 = Math.abs(pointer.startY - pointer2.startY);\n var x2 = Math.abs(pointer.endX - pointer2.endX);\n var y2 = Math.abs(pointer.endY - pointer2.endY);\n var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n var ratio = (z2 - z1) / z1;\n if (Math.abs(ratio) > Math.abs(maxRatio)) {\n maxRatio = ratio;\n }\n });\n });\n return maxRatio;\n }\n\n /**\n * Get a pointer from an event object.\n * @param {Object} event - The target event object.\n * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n * @returns {Object} The result pointer contains start and/or end point coordinates.\n */\n function getPointer(_ref2, endOnly) {\n var pageX = _ref2.pageX,\n pageY = _ref2.pageY;\n var end = {\n endX: pageX,\n endY: pageY\n };\n return endOnly ? end : _objectSpread2({\n startX: pageX,\n startY: pageY\n }, end);\n }\n\n /**\n * Get the center point coordinate of a group of pointers.\n * @param {Object} pointers - The target pointers.\n * @returns {Object} The center point coordinate.\n */\n function getPointersCenter(pointers) {\n var pageX = 0;\n var pageY = 0;\n var count = 0;\n forEach(pointers, function (_ref3) {\n var startX = _ref3.startX,\n startY = _ref3.startY;\n pageX += startX;\n pageY += startY;\n count += 1;\n });\n pageX /= count;\n pageY /= count;\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n\n /**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\n function getAdjustedSizes(_ref4) {\n var aspectRatio = _ref4.aspectRatio,\n height = _ref4.height,\n width = _ref4.width;\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain';\n var isValidWidth = isPositiveNumber(width);\n var isValidHeight = isPositiveNumber(height);\n if (isValidWidth && isValidHeight) {\n var adjustedWidth = height * aspectRatio;\n if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n return {\n width: width,\n height: height\n };\n }\n\n /**\n * Get the new sizes of a rectangle after rotated.\n * @param {Object} data - The original sizes.\n * @returns {Object} The result sizes.\n */\n function getRotatedSizes(_ref5) {\n var width = _ref5.width,\n height = _ref5.height,\n degree = _ref5.degree;\n degree = Math.abs(degree) % 180;\n if (degree === 90) {\n return {\n width: height,\n height: width\n };\n }\n var arc = degree % 90 * Math.PI / 180;\n var sinArc = Math.sin(arc);\n var cosArc = Math.cos(arc);\n var newWidth = width * cosArc + height * sinArc;\n var newHeight = width * sinArc + height * cosArc;\n return degree > 90 ? {\n width: newHeight,\n height: newWidth\n } : {\n width: newWidth,\n height: newHeight\n };\n }\n\n /**\n * Get a canvas which drew the given image.\n * @param {HTMLImageElement} image - The image for drawing.\n * @param {Object} imageData - The image data.\n * @param {Object} canvasData - The canvas data.\n * @param {Object} options - The options.\n * @returns {HTMLCanvasElement} The result canvas.\n */\n function getSourceCanvas(image, _ref6, _ref7, _ref8) {\n var imageAspectRatio = _ref6.aspectRatio,\n imageNaturalWidth = _ref6.naturalWidth,\n imageNaturalHeight = _ref6.naturalHeight,\n _ref6$rotate = _ref6.rotate,\n rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate,\n _ref6$scaleX = _ref6.scaleX,\n scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX,\n _ref6$scaleY = _ref6.scaleY,\n scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY;\n var aspectRatio = _ref7.aspectRatio,\n naturalWidth = _ref7.naturalWidth,\n naturalHeight = _ref7.naturalHeight;\n var _ref8$fillColor = _ref8.fillColor,\n fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor,\n _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,\n imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE,\n _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,\n imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ,\n _ref8$maxWidth = _ref8.maxWidth,\n maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth,\n _ref8$maxHeight = _ref8.maxHeight,\n maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight,\n _ref8$minWidth = _ref8.minWidth,\n minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth,\n _ref8$minHeight = _ref8.minHeight,\n minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight;\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var maxSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: maxWidth,\n height: maxHeight\n });\n var minSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));\n var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight));\n\n // Note: should always use image's natural sizes for drawing as\n // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90\n var destMaxSizes = getAdjustedSizes({\n aspectRatio: imageAspectRatio,\n width: maxWidth,\n height: maxHeight\n });\n var destMinSizes = getAdjustedSizes({\n aspectRatio: imageAspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth));\n var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight));\n var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight];\n canvas.width = normalizeDecimalNumber(width);\n canvas.height = normalizeDecimalNumber(height);\n context.fillStyle = fillColor;\n context.fillRect(0, 0, width, height);\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate(rotate * Math.PI / 180);\n context.scale(scaleX, scaleY);\n context.imageSmoothingEnabled = imageSmoothingEnabled;\n context.imageSmoothingQuality = imageSmoothingQuality;\n context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) {\n return Math.floor(normalizeDecimalNumber(param));\n }))));\n context.restore();\n return canvas;\n }\n var fromCharCode = String.fromCharCode;\n\n /**\n * Get string from char code in data view.\n * @param {DataView} dataView - The data view for read.\n * @param {number} start - The start index.\n * @param {number} length - The read length.\n * @returns {string} The read result.\n */\n function getStringFromCharCode(dataView, start, length) {\n var str = '';\n length += start;\n for (var i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n return str;\n }\n var REGEXP_DATA_URL_HEAD = /^data:.*,/;\n\n /**\n * Transform Data URL to array buffer.\n * @param {string} dataURL - The Data URL to transform.\n * @returns {ArrayBuffer} The result array buffer.\n */\n function dataURLToArrayBuffer(dataURL) {\n var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');\n var binary = atob(base64);\n var arrayBuffer = new ArrayBuffer(binary.length);\n var uint8 = new Uint8Array(arrayBuffer);\n forEach(uint8, function (value, i) {\n uint8[i] = binary.charCodeAt(i);\n });\n return arrayBuffer;\n }\n\n /**\n * Transform array buffer to Data URL.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {string} mimeType - The mime type of the Data URL.\n * @returns {string} The result Data URL.\n */\n function arrayBufferToDataURL(arrayBuffer, mimeType) {\n var chunks = [];\n\n // Chunk Typed Array for better performance (#435)\n var chunkSize = 8192;\n var uint8 = new Uint8Array(arrayBuffer);\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n }\n\n /**\n * Get orientation value from given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {number} The read orientation value.\n */\n function resetAndGetOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation;\n\n // Ignores range error when the image does not have correct Exif information\n try {\n var littleEndian;\n var app1Start;\n var ifdStart;\n\n // Only handle JPEG image (start by 0xFFD8)\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n offset += 1;\n }\n }\n if (app1Start) {\n var exifIDCode = app1Start + 4;\n var tiffOffset = app1Start + 10;\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n var endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n if (littleEndian || endianness === 0x4D4D /* bigEndian */) {\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n if (firstIFDOffset >= 0x00000008) {\n ifdStart = tiffOffset + firstIFDOffset;\n }\n }\n }\n }\n }\n if (ifdStart) {\n var _length = dataView.getUint16(ifdStart, littleEndian);\n var _offset;\n var i;\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n if (dataView.getUint16(_offset, littleEndian) === 0x0112 /* Orientation */) {\n // 8 is the offset of the current tag's value\n _offset += 8;\n\n // Get the original orientation value\n orientation = dataView.getUint16(_offset, littleEndian);\n\n // Override the orientation with its default value\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n } catch (error) {\n orientation = 1;\n }\n return orientation;\n }\n\n /**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\n function parseOrientation(orientation) {\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n switch (orientation) {\n // Flip horizontal\n case 2:\n scaleX = -1;\n break;\n\n // Rotate left 180°\n case 3:\n rotate = -180;\n break;\n\n // Flip vertical\n case 4:\n scaleY = -1;\n break;\n\n // Flip vertical and rotate right 90°\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n\n // Rotate right 90°\n case 6:\n rotate = 90;\n break;\n\n // Flip horizontal and rotate right 90°\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n\n // Rotate left 90°\n case 8:\n rotate = -90;\n break;\n }\n return {\n rotate: rotate,\n scaleX: scaleX,\n scaleY: scaleY\n };\n }\n\n var render = {\n render: function render() {\n this.initContainer();\n this.initCanvas();\n this.initCropBox();\n this.renderCanvas();\n if (this.cropped) {\n this.renderCropBox();\n }\n },\n initContainer: function initContainer() {\n var element = this.element,\n options = this.options,\n container = this.container,\n cropper = this.cropper;\n var minWidth = Number(options.minContainerWidth);\n var minHeight = Number(options.minContainerHeight);\n addClass(cropper, CLASS_HIDDEN);\n removeClass(element, CLASS_HIDDEN);\n var containerData = {\n width: Math.max(container.offsetWidth, minWidth >= 0 ? minWidth : MIN_CONTAINER_WIDTH),\n height: Math.max(container.offsetHeight, minHeight >= 0 ? minHeight : MIN_CONTAINER_HEIGHT)\n };\n this.containerData = containerData;\n setStyle(cropper, {\n width: containerData.width,\n height: containerData.height\n });\n addClass(element, CLASS_HIDDEN);\n removeClass(cropper, CLASS_HIDDEN);\n },\n // Canvas (image wrapper)\n initCanvas: function initCanvas() {\n var containerData = this.containerData,\n imageData = this.imageData;\n var viewMode = this.options.viewMode;\n var rotated = Math.abs(imageData.rotate) % 180 === 90;\n var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;\n var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;\n var aspectRatio = naturalWidth / naturalHeight;\n var canvasWidth = containerData.width;\n var canvasHeight = containerData.height;\n if (containerData.height * aspectRatio > containerData.width) {\n if (viewMode === 3) {\n canvasWidth = containerData.height * aspectRatio;\n } else {\n canvasHeight = containerData.width / aspectRatio;\n }\n } else if (viewMode === 3) {\n canvasHeight = containerData.width / aspectRatio;\n } else {\n canvasWidth = containerData.height * aspectRatio;\n }\n var canvasData = {\n aspectRatio: aspectRatio,\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n width: canvasWidth,\n height: canvasHeight\n };\n this.canvasData = canvasData;\n this.limited = viewMode === 1 || viewMode === 2;\n this.limitCanvas(true, true);\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n canvasData.left = (containerData.width - canvasData.width) / 2;\n canvasData.top = (containerData.height - canvasData.height) / 2;\n canvasData.oldLeft = canvasData.left;\n canvasData.oldTop = canvasData.top;\n this.initialCanvasData = assign({}, canvasData);\n },\n limitCanvas: function limitCanvas(sizeLimited, positionLimited) {\n var options = this.options,\n containerData = this.containerData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var viewMode = options.viewMode;\n var aspectRatio = canvasData.aspectRatio;\n var cropped = this.cropped && cropBoxData;\n if (sizeLimited) {\n var minCanvasWidth = Number(options.minCanvasWidth) || 0;\n var minCanvasHeight = Number(options.minCanvasHeight) || 0;\n if (viewMode > 1) {\n minCanvasWidth = Math.max(minCanvasWidth, containerData.width);\n minCanvasHeight = Math.max(minCanvasHeight, containerData.height);\n if (viewMode === 3) {\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n minCanvasWidth = minCanvasHeight * aspectRatio;\n } else {\n minCanvasHeight = minCanvasWidth / aspectRatio;\n }\n }\n } else if (viewMode > 0) {\n if (minCanvasWidth) {\n minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);\n } else if (minCanvasHeight) {\n minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);\n } else if (cropped) {\n minCanvasWidth = cropBoxData.width;\n minCanvasHeight = cropBoxData.height;\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n minCanvasWidth = minCanvasHeight * aspectRatio;\n } else {\n minCanvasHeight = minCanvasWidth / aspectRatio;\n }\n }\n }\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minCanvasWidth,\n height: minCanvasHeight\n });\n minCanvasWidth = _getAdjustedSizes.width;\n minCanvasHeight = _getAdjustedSizes.height;\n canvasData.minWidth = minCanvasWidth;\n canvasData.minHeight = minCanvasHeight;\n canvasData.maxWidth = Infinity;\n canvasData.maxHeight = Infinity;\n }\n if (positionLimited) {\n if (viewMode > (cropped ? 0 : 1)) {\n var newCanvasLeft = containerData.width - canvasData.width;\n var newCanvasTop = containerData.height - canvasData.height;\n canvasData.minLeft = Math.min(0, newCanvasLeft);\n canvasData.minTop = Math.min(0, newCanvasTop);\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\n canvasData.maxTop = Math.max(0, newCanvasTop);\n if (cropped && this.limited) {\n canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));\n canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));\n canvasData.maxLeft = cropBoxData.left;\n canvasData.maxTop = cropBoxData.top;\n if (viewMode === 2) {\n if (canvasData.width >= containerData.width) {\n canvasData.minLeft = Math.min(0, newCanvasLeft);\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\n }\n if (canvasData.height >= containerData.height) {\n canvasData.minTop = Math.min(0, newCanvasTop);\n canvasData.maxTop = Math.max(0, newCanvasTop);\n }\n }\n }\n } else {\n canvasData.minLeft = -canvasData.width;\n canvasData.minTop = -canvasData.height;\n canvasData.maxLeft = containerData.width;\n canvasData.maxTop = containerData.height;\n }\n }\n },\n renderCanvas: function renderCanvas(changed, transformed) {\n var canvasData = this.canvasData,\n imageData = this.imageData;\n if (transformed) {\n var _getRotatedSizes = getRotatedSizes({\n width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),\n height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),\n degree: imageData.rotate || 0\n }),\n naturalWidth = _getRotatedSizes.width,\n naturalHeight = _getRotatedSizes.height;\n var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);\n var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);\n canvasData.left -= (width - canvasData.width) / 2;\n canvasData.top -= (height - canvasData.height) / 2;\n canvasData.width = width;\n canvasData.height = height;\n canvasData.aspectRatio = naturalWidth / naturalHeight;\n canvasData.naturalWidth = naturalWidth;\n canvasData.naturalHeight = naturalHeight;\n this.limitCanvas(true, false);\n }\n if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {\n canvasData.left = canvasData.oldLeft;\n }\n if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {\n canvasData.top = canvasData.oldTop;\n }\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n this.limitCanvas(false, true);\n canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);\n canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);\n canvasData.oldLeft = canvasData.left;\n canvasData.oldTop = canvasData.top;\n setStyle(this.canvas, assign({\n width: canvasData.width,\n height: canvasData.height\n }, getTransforms({\n translateX: canvasData.left,\n translateY: canvasData.top\n })));\n this.renderImage(changed);\n if (this.cropped && this.limited) {\n this.limitCropBox(true, true);\n }\n },\n renderImage: function renderImage(changed) {\n var canvasData = this.canvasData,\n imageData = this.imageData;\n var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);\n var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);\n assign(imageData, {\n width: width,\n height: height,\n left: (canvasData.width - width) / 2,\n top: (canvasData.height - height) / 2\n });\n setStyle(this.image, assign({\n width: imageData.width,\n height: imageData.height\n }, getTransforms(assign({\n translateX: imageData.left,\n translateY: imageData.top\n }, imageData))));\n if (changed) {\n this.output();\n }\n },\n initCropBox: function initCropBox() {\n var options = this.options,\n canvasData = this.canvasData;\n var aspectRatio = options.aspectRatio || options.initialAspectRatio;\n var autoCropArea = Number(options.autoCropArea) || 0.8;\n var cropBoxData = {\n width: canvasData.width,\n height: canvasData.height\n };\n if (aspectRatio) {\n if (canvasData.height * aspectRatio > canvasData.width) {\n cropBoxData.height = cropBoxData.width / aspectRatio;\n } else {\n cropBoxData.width = cropBoxData.height * aspectRatio;\n }\n }\n this.cropBoxData = cropBoxData;\n this.limitCropBox(true, true);\n\n // Initialize auto crop area\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n\n // The width/height of auto crop area must large than \"minWidth/Height\"\n cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);\n cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);\n cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;\n cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;\n cropBoxData.oldLeft = cropBoxData.left;\n cropBoxData.oldTop = cropBoxData.top;\n this.initialCropBoxData = assign({}, cropBoxData);\n },\n limitCropBox: function limitCropBox(sizeLimited, positionLimited) {\n var options = this.options,\n containerData = this.containerData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData,\n limited = this.limited;\n var aspectRatio = options.aspectRatio;\n if (sizeLimited) {\n var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;\n var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;\n var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width;\n var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height;\n\n // The min/maxCropBoxWidth/Height must be less than container's width/height\n minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);\n minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);\n if (aspectRatio) {\n if (minCropBoxWidth && minCropBoxHeight) {\n if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\n } else {\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\n }\n } else if (minCropBoxWidth) {\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\n } else if (minCropBoxHeight) {\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\n }\n if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {\n maxCropBoxHeight = maxCropBoxWidth / aspectRatio;\n } else {\n maxCropBoxWidth = maxCropBoxHeight * aspectRatio;\n }\n }\n\n // The minWidth/Height must be less than maxWidth/Height\n cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);\n cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);\n cropBoxData.maxWidth = maxCropBoxWidth;\n cropBoxData.maxHeight = maxCropBoxHeight;\n }\n if (positionLimited) {\n if (limited) {\n cropBoxData.minLeft = Math.max(0, canvasData.left);\n cropBoxData.minTop = Math.max(0, canvasData.top);\n cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;\n cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;\n } else {\n cropBoxData.minLeft = 0;\n cropBoxData.minTop = 0;\n cropBoxData.maxLeft = containerData.width - cropBoxData.width;\n cropBoxData.maxTop = containerData.height - cropBoxData.height;\n }\n }\n },\n renderCropBox: function renderCropBox() {\n var options = this.options,\n containerData = this.containerData,\n cropBoxData = this.cropBoxData;\n if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {\n cropBoxData.left = cropBoxData.oldLeft;\n }\n if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {\n cropBoxData.top = cropBoxData.oldTop;\n }\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n this.limitCropBox(false, true);\n cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);\n cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);\n cropBoxData.oldLeft = cropBoxData.left;\n cropBoxData.oldTop = cropBoxData.top;\n if (options.movable && options.cropBoxMovable) {\n // Turn to move the canvas when the crop box is equal to the container\n setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);\n }\n setStyle(this.cropBox, assign({\n width: cropBoxData.width,\n height: cropBoxData.height\n }, getTransforms({\n translateX: cropBoxData.left,\n translateY: cropBoxData.top\n })));\n if (this.cropped && this.limited) {\n this.limitCanvas(true, true);\n }\n if (!this.disabled) {\n this.output();\n }\n },\n output: function output() {\n this.preview();\n dispatchEvent(this.element, EVENT_CROP, this.getData());\n }\n };\n\n var preview = {\n initPreview: function initPreview() {\n var element = this.element,\n crossOrigin = this.crossOrigin;\n var preview = this.options.preview;\n var url = crossOrigin ? this.crossOriginUrl : this.url;\n var alt = element.alt || 'The image to preview';\n var image = document.createElement('img');\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n image.src = url;\n image.alt = alt;\n this.viewBox.appendChild(image);\n this.viewBoxImage = image;\n if (!preview) {\n return;\n }\n var previews = preview;\n if (typeof preview === 'string') {\n previews = element.ownerDocument.querySelectorAll(preview);\n } else if (preview.querySelector) {\n previews = [preview];\n }\n this.previews = previews;\n forEach(previews, function (el) {\n var img = document.createElement('img');\n\n // Save the original size for recover\n setData(el, DATA_PREVIEW, {\n width: el.offsetWidth,\n height: el.offsetHeight,\n html: el.innerHTML\n });\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n img.src = url;\n img.alt = alt;\n\n /**\n * Override img element styles\n * Add `display:block` to avoid margin top issue\n * Add `height:auto` to override `height` attribute on IE8\n * (Occur only when margin-top <= -height)\n */\n img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;\"';\n el.innerHTML = '';\n el.appendChild(img);\n });\n },\n resetPreview: function resetPreview() {\n forEach(this.previews, function (element) {\n var data = getData(element, DATA_PREVIEW);\n setStyle(element, {\n width: data.width,\n height: data.height\n });\n element.innerHTML = data.html;\n removeData(element, DATA_PREVIEW);\n });\n },\n preview: function preview() {\n var imageData = this.imageData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var cropBoxWidth = cropBoxData.width,\n cropBoxHeight = cropBoxData.height;\n var width = imageData.width,\n height = imageData.height;\n var left = cropBoxData.left - canvasData.left - imageData.left;\n var top = cropBoxData.top - canvasData.top - imageData.top;\n if (!this.cropped || this.disabled) {\n return;\n }\n setStyle(this.viewBoxImage, assign({\n width: width,\n height: height\n }, getTransforms(assign({\n translateX: -left,\n translateY: -top\n }, imageData))));\n forEach(this.previews, function (element) {\n var data = getData(element, DATA_PREVIEW);\n var originalWidth = data.width;\n var originalHeight = data.height;\n var newWidth = originalWidth;\n var newHeight = originalHeight;\n var ratio = 1;\n if (cropBoxWidth) {\n ratio = originalWidth / cropBoxWidth;\n newHeight = cropBoxHeight * ratio;\n }\n if (cropBoxHeight && newHeight > originalHeight) {\n ratio = originalHeight / cropBoxHeight;\n newWidth = cropBoxWidth * ratio;\n newHeight = originalHeight;\n }\n setStyle(element, {\n width: newWidth,\n height: newHeight\n });\n setStyle(element.getElementsByTagName('img')[0], assign({\n width: width * ratio,\n height: height * ratio\n }, getTransforms(assign({\n translateX: -left * ratio,\n translateY: -top * ratio\n }, imageData))));\n });\n }\n };\n\n var events = {\n bind: function bind() {\n var element = this.element,\n options = this.options,\n cropper = this.cropper;\n if (isFunction(options.cropstart)) {\n addListener(element, EVENT_CROP_START, options.cropstart);\n }\n if (isFunction(options.cropmove)) {\n addListener(element, EVENT_CROP_MOVE, options.cropmove);\n }\n if (isFunction(options.cropend)) {\n addListener(element, EVENT_CROP_END, options.cropend);\n }\n if (isFunction(options.crop)) {\n addListener(element, EVENT_CROP, options.crop);\n }\n if (isFunction(options.zoom)) {\n addListener(element, EVENT_ZOOM, options.zoom);\n }\n addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this));\n if (options.zoomable && options.zoomOnWheel) {\n addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n passive: false,\n capture: true\n });\n }\n if (options.toggleDragModeOnDblclick) {\n addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n }\n addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this));\n addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this));\n if (options.responsive) {\n addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n }\n },\n unbind: function unbind() {\n var element = this.element,\n options = this.options,\n cropper = this.cropper;\n if (isFunction(options.cropstart)) {\n removeListener(element, EVENT_CROP_START, options.cropstart);\n }\n if (isFunction(options.cropmove)) {\n removeListener(element, EVENT_CROP_MOVE, options.cropmove);\n }\n if (isFunction(options.cropend)) {\n removeListener(element, EVENT_CROP_END, options.cropend);\n }\n if (isFunction(options.crop)) {\n removeListener(element, EVENT_CROP, options.crop);\n }\n if (isFunction(options.zoom)) {\n removeListener(element, EVENT_ZOOM, options.zoom);\n }\n removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);\n if (options.zoomable && options.zoomOnWheel) {\n removeListener(cropper, EVENT_WHEEL, this.onWheel, {\n passive: false,\n capture: true\n });\n }\n if (options.toggleDragModeOnDblclick) {\n removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);\n }\n removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);\n removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);\n if (options.responsive) {\n removeListener(window, EVENT_RESIZE, this.onResize);\n }\n }\n };\n\n var handlers = {\n resize: function resize() {\n if (this.disabled) {\n return;\n }\n var options = this.options,\n container = this.container,\n containerData = this.containerData;\n var ratioX = container.offsetWidth / containerData.width;\n var ratioY = container.offsetHeight / containerData.height;\n var ratio = Math.abs(ratioX - 1) > Math.abs(ratioY - 1) ? ratioX : ratioY;\n\n // Resize when width changed or height changed\n if (ratio !== 1) {\n var canvasData;\n var cropBoxData;\n if (options.restore) {\n canvasData = this.getCanvasData();\n cropBoxData = this.getCropBoxData();\n }\n this.render();\n if (options.restore) {\n this.setCanvasData(forEach(canvasData, function (n, i) {\n canvasData[i] = n * ratio;\n }));\n this.setCropBoxData(forEach(cropBoxData, function (n, i) {\n cropBoxData[i] = n * ratio;\n }));\n }\n }\n },\n dblclick: function dblclick() {\n if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {\n return;\n }\n this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);\n },\n wheel: function wheel(event) {\n var _this = this;\n var ratio = Number(this.options.wheelZoomRatio) || 0.1;\n var delta = 1;\n if (this.disabled) {\n return;\n }\n event.preventDefault();\n\n // Limit wheel speed to prevent zoom too fast (#21)\n if (this.wheeling) {\n return;\n }\n this.wheeling = true;\n setTimeout(function () {\n _this.wheeling = false;\n }, 50);\n if (event.deltaY) {\n delta = event.deltaY > 0 ? 1 : -1;\n } else if (event.wheelDelta) {\n delta = -event.wheelDelta / 120;\n } else if (event.detail) {\n delta = event.detail > 0 ? 1 : -1;\n }\n this.zoom(-delta * ratio, event);\n },\n cropStart: function cropStart(event) {\n var buttons = event.buttons,\n button = event.button;\n if (this.disabled\n\n // Handle mouse event and pointer event and ignore touch event\n || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && (\n // No primary button (Usually the left button)\n isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0\n\n // Open context menu\n || event.ctrlKey)) {\n return;\n }\n var options = this.options,\n pointers = this.pointers;\n var action;\n if (event.changedTouches) {\n // Handle touch event\n forEach(event.changedTouches, function (touch) {\n pointers[touch.identifier] = getPointer(touch);\n });\n } else {\n // Handle mouse event and pointer event\n pointers[event.pointerId || 0] = getPointer(event);\n }\n if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {\n action = ACTION_ZOOM;\n } else {\n action = getData(event.target, DATA_ACTION);\n }\n if (!REGEXP_ACTIONS.test(action)) {\n return;\n }\n if (dispatchEvent(this.element, EVENT_CROP_START, {\n originalEvent: event,\n action: action\n }) === false) {\n return;\n }\n\n // This line is required for preventing page zooming in iOS browsers\n event.preventDefault();\n this.action = action;\n this.cropping = false;\n if (action === ACTION_CROP) {\n this.cropping = true;\n addClass(this.dragBox, CLASS_MODAL);\n }\n },\n cropMove: function cropMove(event) {\n var action = this.action;\n if (this.disabled || !action) {\n return;\n }\n var pointers = this.pointers;\n event.preventDefault();\n if (dispatchEvent(this.element, EVENT_CROP_MOVE, {\n originalEvent: event,\n action: action\n }) === false) {\n return;\n }\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n // The first parameter should not be undefined (#432)\n assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n });\n } else {\n assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n }\n this.change(event);\n },\n cropEnd: function cropEnd(event) {\n if (this.disabled) {\n return;\n }\n var action = this.action,\n pointers = this.pointers;\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n delete pointers[touch.identifier];\n });\n } else {\n delete pointers[event.pointerId || 0];\n }\n if (!action) {\n return;\n }\n event.preventDefault();\n if (!Object.keys(pointers).length) {\n this.action = '';\n }\n if (this.cropping) {\n this.cropping = false;\n toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);\n }\n dispatchEvent(this.element, EVENT_CROP_END, {\n originalEvent: event,\n action: action\n });\n }\n };\n\n var change = {\n change: function change(event) {\n var options = this.options,\n canvasData = this.canvasData,\n containerData = this.containerData,\n cropBoxData = this.cropBoxData,\n pointers = this.pointers;\n var action = this.action;\n var aspectRatio = options.aspectRatio;\n var left = cropBoxData.left,\n top = cropBoxData.top,\n width = cropBoxData.width,\n height = cropBoxData.height;\n var right = left + width;\n var bottom = top + height;\n var minLeft = 0;\n var minTop = 0;\n var maxWidth = containerData.width;\n var maxHeight = containerData.height;\n var renderable = true;\n var offset;\n\n // Locking aspect ratio in \"free mode\" by holding shift key\n if (!aspectRatio && event.shiftKey) {\n aspectRatio = width && height ? width / height : 1;\n }\n if (this.limited) {\n minLeft = cropBoxData.minLeft;\n minTop = cropBoxData.minTop;\n maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);\n maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);\n }\n var pointer = pointers[Object.keys(pointers)[0]];\n var range = {\n x: pointer.endX - pointer.startX,\n y: pointer.endY - pointer.startY\n };\n var check = function check(side) {\n switch (side) {\n case ACTION_EAST:\n if (right + range.x > maxWidth) {\n range.x = maxWidth - right;\n }\n break;\n case ACTION_WEST:\n if (left + range.x < minLeft) {\n range.x = minLeft - left;\n }\n break;\n case ACTION_NORTH:\n if (top + range.y < minTop) {\n range.y = minTop - top;\n }\n break;\n case ACTION_SOUTH:\n if (bottom + range.y > maxHeight) {\n range.y = maxHeight - bottom;\n }\n break;\n }\n };\n switch (action) {\n // Move crop box\n case ACTION_ALL:\n left += range.x;\n top += range.y;\n break;\n\n // Resize crop box\n case ACTION_EAST:\n if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n renderable = false;\n break;\n }\n check(ACTION_EAST);\n width += range.x;\n if (width < 0) {\n action = ACTION_WEST;\n width = -width;\n left -= width;\n }\n if (aspectRatio) {\n height = width / aspectRatio;\n top += (cropBoxData.height - height) / 2;\n }\n break;\n case ACTION_NORTH:\n if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n renderable = false;\n break;\n }\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n if (height < 0) {\n action = ACTION_SOUTH;\n height = -height;\n top -= height;\n }\n if (aspectRatio) {\n width = height * aspectRatio;\n left += (cropBoxData.width - width) / 2;\n }\n break;\n case ACTION_WEST:\n if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n renderable = false;\n break;\n }\n check(ACTION_WEST);\n width -= range.x;\n left += range.x;\n if (width < 0) {\n action = ACTION_EAST;\n width = -width;\n left -= width;\n }\n if (aspectRatio) {\n height = width / aspectRatio;\n top += (cropBoxData.height - height) / 2;\n }\n break;\n case ACTION_SOUTH:\n if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n renderable = false;\n break;\n }\n check(ACTION_SOUTH);\n height += range.y;\n if (height < 0) {\n action = ACTION_NORTH;\n height = -height;\n top -= height;\n }\n if (aspectRatio) {\n width = height * aspectRatio;\n left += (cropBoxData.width - width) / 2;\n }\n break;\n case ACTION_NORTH_EAST:\n if (aspectRatio) {\n if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {\n renderable = false;\n break;\n }\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\n } else {\n check(ACTION_NORTH);\n check(ACTION_EAST);\n if (range.x >= 0) {\n if (right < maxWidth) {\n width += range.x;\n } else if (range.y <= 0 && top <= minTop) {\n renderable = false;\n }\n } else {\n width += range.x;\n }\n if (range.y <= 0) {\n if (top > minTop) {\n height -= range.y;\n top += range.y;\n }\n } else {\n height -= range.y;\n top += range.y;\n }\n }\n if (width < 0 && height < 0) {\n action = ACTION_SOUTH_WEST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_NORTH_WEST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_SOUTH_EAST;\n height = -height;\n top -= height;\n }\n break;\n case ACTION_NORTH_WEST:\n if (aspectRatio) {\n if (range.y <= 0 && (top <= minTop || left <= minLeft)) {\n renderable = false;\n break;\n }\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\n left += cropBoxData.width - width;\n } else {\n check(ACTION_NORTH);\n check(ACTION_WEST);\n if (range.x <= 0) {\n if (left > minLeft) {\n width -= range.x;\n left += range.x;\n } else if (range.y <= 0 && top <= minTop) {\n renderable = false;\n }\n } else {\n width -= range.x;\n left += range.x;\n }\n if (range.y <= 0) {\n if (top > minTop) {\n height -= range.y;\n top += range.y;\n }\n } else {\n height -= range.y;\n top += range.y;\n }\n }\n if (width < 0 && height < 0) {\n action = ACTION_SOUTH_EAST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_NORTH_EAST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_SOUTH_WEST;\n height = -height;\n top -= height;\n }\n break;\n case ACTION_SOUTH_WEST:\n if (aspectRatio) {\n if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {\n renderable = false;\n break;\n }\n check(ACTION_WEST);\n width -= range.x;\n left += range.x;\n height = width / aspectRatio;\n } else {\n check(ACTION_SOUTH);\n check(ACTION_WEST);\n if (range.x <= 0) {\n if (left > minLeft) {\n width -= range.x;\n left += range.x;\n } else if (range.y >= 0 && bottom >= maxHeight) {\n renderable = false;\n }\n } else {\n width -= range.x;\n left += range.x;\n }\n if (range.y >= 0) {\n if (bottom < maxHeight) {\n height += range.y;\n }\n } else {\n height += range.y;\n }\n }\n if (width < 0 && height < 0) {\n action = ACTION_NORTH_EAST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_SOUTH_EAST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_NORTH_WEST;\n height = -height;\n top -= height;\n }\n break;\n case ACTION_SOUTH_EAST:\n if (aspectRatio) {\n if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {\n renderable = false;\n break;\n }\n check(ACTION_EAST);\n width += range.x;\n height = width / aspectRatio;\n } else {\n check(ACTION_SOUTH);\n check(ACTION_EAST);\n if (range.x >= 0) {\n if (right < maxWidth) {\n width += range.x;\n } else if (range.y >= 0 && bottom >= maxHeight) {\n renderable = false;\n }\n } else {\n width += range.x;\n }\n if (range.y >= 0) {\n if (bottom < maxHeight) {\n height += range.y;\n }\n } else {\n height += range.y;\n }\n }\n if (width < 0 && height < 0) {\n action = ACTION_NORTH_WEST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_SOUTH_WEST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_NORTH_EAST;\n height = -height;\n top -= height;\n }\n break;\n\n // Move canvas\n case ACTION_MOVE:\n this.move(range.x, range.y);\n renderable = false;\n break;\n\n // Zoom canvas\n case ACTION_ZOOM:\n this.zoom(getMaxZoomRatio(pointers), event);\n renderable = false;\n break;\n\n // Create crop box\n case ACTION_CROP:\n if (!range.x || !range.y) {\n renderable = false;\n break;\n }\n offset = getOffset(this.cropper);\n left = pointer.startX - offset.left;\n top = pointer.startY - offset.top;\n width = cropBoxData.minWidth;\n height = cropBoxData.minHeight;\n if (range.x > 0) {\n action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;\n } else if (range.x < 0) {\n left -= width;\n action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;\n }\n if (range.y < 0) {\n top -= height;\n }\n\n // Show the crop box if is hidden\n if (!this.cropped) {\n removeClass(this.cropBox, CLASS_HIDDEN);\n this.cropped = true;\n if (this.limited) {\n this.limitCropBox(true, true);\n }\n }\n break;\n }\n if (renderable) {\n cropBoxData.width = width;\n cropBoxData.height = height;\n cropBoxData.left = left;\n cropBoxData.top = top;\n this.action = action;\n this.renderCropBox();\n }\n\n // Override\n forEach(pointers, function (p) {\n p.startX = p.endX;\n p.startY = p.endY;\n });\n }\n };\n\n var methods = {\n // Show the crop box manually\n crop: function crop() {\n if (this.ready && !this.cropped && !this.disabled) {\n this.cropped = true;\n this.limitCropBox(true, true);\n if (this.options.modal) {\n addClass(this.dragBox, CLASS_MODAL);\n }\n removeClass(this.cropBox, CLASS_HIDDEN);\n this.setCropBoxData(this.initialCropBoxData);\n }\n return this;\n },\n // Reset the image and crop box to their initial states\n reset: function reset() {\n if (this.ready && !this.disabled) {\n this.imageData = assign({}, this.initialImageData);\n this.canvasData = assign({}, this.initialCanvasData);\n this.cropBoxData = assign({}, this.initialCropBoxData);\n this.renderCanvas();\n if (this.cropped) {\n this.renderCropBox();\n }\n }\n return this;\n },\n // Clear the crop box\n clear: function clear() {\n if (this.cropped && !this.disabled) {\n assign(this.cropBoxData, {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n });\n this.cropped = false;\n this.renderCropBox();\n this.limitCanvas(true, true);\n\n // Render canvas after crop box rendered\n this.renderCanvas();\n removeClass(this.dragBox, CLASS_MODAL);\n addClass(this.cropBox, CLASS_HIDDEN);\n }\n return this;\n },\n /**\n * Replace the image's src and rebuild the cropper\n * @param {string} url - The new URL.\n * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one.\n * @returns {Cropper} this\n */\n replace: function replace(url) {\n var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (!this.disabled && url) {\n if (this.isImg) {\n this.element.src = url;\n }\n if (hasSameSize) {\n this.url = url;\n this.image.src = url;\n if (this.ready) {\n this.viewBoxImage.src = url;\n forEach(this.previews, function (element) {\n element.getElementsByTagName('img')[0].src = url;\n });\n }\n } else {\n if (this.isImg) {\n this.replaced = true;\n }\n this.options.data = null;\n this.uncreate();\n this.load(url);\n }\n }\n return this;\n },\n // Enable (unfreeze) the cropper\n enable: function enable() {\n if (this.ready && this.disabled) {\n this.disabled = false;\n removeClass(this.cropper, CLASS_DISABLED);\n }\n return this;\n },\n // Disable (freeze) the cropper\n disable: function disable() {\n if (this.ready && !this.disabled) {\n this.disabled = true;\n addClass(this.cropper, CLASS_DISABLED);\n }\n return this;\n },\n /**\n * Destroy the cropper and remove the instance from the image\n * @returns {Cropper} this\n */\n destroy: function destroy() {\n var element = this.element;\n if (!element[NAMESPACE]) {\n return this;\n }\n element[NAMESPACE] = undefined;\n if (this.isImg && this.replaced) {\n element.src = this.originalUrl;\n }\n this.uncreate();\n return this;\n },\n /**\n * Move the canvas with relative offsets\n * @param {number} offsetX - The relative offset distance on the x-axis.\n * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis.\n * @returns {Cropper} this\n */\n move: function move(offsetX) {\n var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX;\n var _this$canvasData = this.canvasData,\n left = _this$canvasData.left,\n top = _this$canvasData.top;\n return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));\n },\n /**\n * Move the canvas to an absolute point\n * @param {number} x - The x-axis coordinate.\n * @param {number} [y=x] - The y-axis coordinate.\n * @returns {Cropper} this\n */\n moveTo: function moveTo(x) {\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n var canvasData = this.canvasData;\n var changed = false;\n x = Number(x);\n y = Number(y);\n if (this.ready && !this.disabled && this.options.movable) {\n if (isNumber(x)) {\n canvasData.left = x;\n changed = true;\n }\n if (isNumber(y)) {\n canvasData.top = y;\n changed = true;\n }\n if (changed) {\n this.renderCanvas(true);\n }\n }\n return this;\n },\n /**\n * Zoom the canvas with a relative ratio\n * @param {number} ratio - The target ratio.\n * @param {Event} _originalEvent - The original event if any.\n * @returns {Cropper} this\n */\n zoom: function zoom(ratio, _originalEvent) {\n var canvasData = this.canvasData;\n ratio = Number(ratio);\n if (ratio < 0) {\n ratio = 1 / (1 - ratio);\n } else {\n ratio = 1 + ratio;\n }\n return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);\n },\n /**\n * Zoom the canvas to an absolute ratio\n * @param {number} ratio - The target ratio.\n * @param {Object} pivot - The zoom pivot point coordinate.\n * @param {Event} _originalEvent - The original event if any.\n * @returns {Cropper} this\n */\n zoomTo: function zoomTo(ratio, pivot, _originalEvent) {\n var options = this.options,\n canvasData = this.canvasData;\n var width = canvasData.width,\n height = canvasData.height,\n naturalWidth = canvasData.naturalWidth,\n naturalHeight = canvasData.naturalHeight;\n ratio = Number(ratio);\n if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {\n var newWidth = naturalWidth * ratio;\n var newHeight = naturalHeight * ratio;\n if (dispatchEvent(this.element, EVENT_ZOOM, {\n ratio: ratio,\n oldRatio: width / naturalWidth,\n originalEvent: _originalEvent\n }) === false) {\n return this;\n }\n if (_originalEvent) {\n var pointers = this.pointers;\n var offset = getOffset(this.cropper);\n var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n pageX: _originalEvent.pageX,\n pageY: _originalEvent.pageY\n };\n\n // Zoom from the triggering point of the event\n canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);\n canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);\n } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {\n canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);\n canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);\n } else {\n // Zoom from the center of the canvas\n canvasData.left -= (newWidth - width) / 2;\n canvasData.top -= (newHeight - height) / 2;\n }\n canvasData.width = newWidth;\n canvasData.height = newHeight;\n this.renderCanvas(true);\n }\n return this;\n },\n /**\n * Rotate the canvas with a relative degree\n * @param {number} degree - The rotate degree.\n * @returns {Cropper} this\n */\n rotate: function rotate(degree) {\n return this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n },\n /**\n * Rotate the canvas to an absolute degree\n * @param {number} degree - The rotate degree.\n * @returns {Cropper} this\n */\n rotateTo: function rotateTo(degree) {\n degree = Number(degree);\n if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {\n this.imageData.rotate = degree % 360;\n this.renderCanvas(true, true);\n }\n return this;\n },\n /**\n * Scale the image on the x-axis.\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @returns {Cropper} this\n */\n scaleX: function scaleX(_scaleX) {\n var scaleY = this.imageData.scaleY;\n return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);\n },\n /**\n * Scale the image on the y-axis.\n * @param {number} scaleY - The scale ratio on the y-axis.\n * @returns {Cropper} this\n */\n scaleY: function scaleY(_scaleY) {\n var scaleX = this.imageData.scaleX;\n return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);\n },\n /**\n * Scale the image\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n * @returns {Cropper} this\n */\n scale: function scale(scaleX) {\n var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n var imageData = this.imageData;\n var transformed = false;\n scaleX = Number(scaleX);\n scaleY = Number(scaleY);\n if (this.ready && !this.disabled && this.options.scalable) {\n if (isNumber(scaleX)) {\n imageData.scaleX = scaleX;\n transformed = true;\n }\n if (isNumber(scaleY)) {\n imageData.scaleY = scaleY;\n transformed = true;\n }\n if (transformed) {\n this.renderCanvas(true, true);\n }\n }\n return this;\n },\n /**\n * Get the cropped area position and size data (base on the original image)\n * @param {boolean} [rounded=false] - Indicate if round the data values or not.\n * @returns {Object} The result cropped data.\n */\n getData: function getData() {\n var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var options = this.options,\n imageData = this.imageData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var data;\n if (this.ready && this.cropped) {\n data = {\n x: cropBoxData.left - canvasData.left,\n y: cropBoxData.top - canvasData.top,\n width: cropBoxData.width,\n height: cropBoxData.height\n };\n var ratio = imageData.width / imageData.naturalWidth;\n forEach(data, function (n, i) {\n data[i] = n / ratio;\n });\n if (rounded) {\n // In case rounding off leads to extra 1px in right or bottom border\n // we should round the top-left corner and the dimension (#343).\n var bottom = Math.round(data.y + data.height);\n var right = Math.round(data.x + data.width);\n data.x = Math.round(data.x);\n data.y = Math.round(data.y);\n data.width = right - data.x;\n data.height = bottom - data.y;\n }\n } else {\n data = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n if (options.rotatable) {\n data.rotate = imageData.rotate || 0;\n }\n if (options.scalable) {\n data.scaleX = imageData.scaleX || 1;\n data.scaleY = imageData.scaleY || 1;\n }\n return data;\n },\n /**\n * Set the cropped area position and size with new data\n * @param {Object} data - The new data.\n * @returns {Cropper} this\n */\n setData: function setData(data) {\n var options = this.options,\n imageData = this.imageData,\n canvasData = this.canvasData;\n var cropBoxData = {};\n if (this.ready && !this.disabled && isPlainObject(data)) {\n var transformed = false;\n if (options.rotatable) {\n if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {\n imageData.rotate = data.rotate;\n transformed = true;\n }\n }\n if (options.scalable) {\n if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {\n imageData.scaleX = data.scaleX;\n transformed = true;\n }\n if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {\n imageData.scaleY = data.scaleY;\n transformed = true;\n }\n }\n if (transformed) {\n this.renderCanvas(true, true);\n }\n var ratio = imageData.width / imageData.naturalWidth;\n if (isNumber(data.x)) {\n cropBoxData.left = data.x * ratio + canvasData.left;\n }\n if (isNumber(data.y)) {\n cropBoxData.top = data.y * ratio + canvasData.top;\n }\n if (isNumber(data.width)) {\n cropBoxData.width = data.width * ratio;\n }\n if (isNumber(data.height)) {\n cropBoxData.height = data.height * ratio;\n }\n this.setCropBoxData(cropBoxData);\n }\n return this;\n },\n /**\n * Get the container size data.\n * @returns {Object} The result container data.\n */\n getContainerData: function getContainerData() {\n return this.ready ? assign({}, this.containerData) : {};\n },\n /**\n * Get the image position and size data.\n * @returns {Object} The result image data.\n */\n getImageData: function getImageData() {\n return this.sized ? assign({}, this.imageData) : {};\n },\n /**\n * Get the canvas position and size data.\n * @returns {Object} The result canvas data.\n */\n getCanvasData: function getCanvasData() {\n var canvasData = this.canvasData;\n var data = {};\n if (this.ready) {\n forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {\n data[n] = canvasData[n];\n });\n }\n return data;\n },\n /**\n * Set the canvas position and size with new data.\n * @param {Object} data - The new canvas data.\n * @returns {Cropper} this\n */\n setCanvasData: function setCanvasData(data) {\n var canvasData = this.canvasData;\n var aspectRatio = canvasData.aspectRatio;\n if (this.ready && !this.disabled && isPlainObject(data)) {\n if (isNumber(data.left)) {\n canvasData.left = data.left;\n }\n if (isNumber(data.top)) {\n canvasData.top = data.top;\n }\n if (isNumber(data.width)) {\n canvasData.width = data.width;\n canvasData.height = data.width / aspectRatio;\n } else if (isNumber(data.height)) {\n canvasData.height = data.height;\n canvasData.width = data.height * aspectRatio;\n }\n this.renderCanvas(true);\n }\n return this;\n },\n /**\n * Get the crop box position and size data.\n * @returns {Object} The result crop box data.\n */\n getCropBoxData: function getCropBoxData() {\n var cropBoxData = this.cropBoxData;\n var data;\n if (this.ready && this.cropped) {\n data = {\n left: cropBoxData.left,\n top: cropBoxData.top,\n width: cropBoxData.width,\n height: cropBoxData.height\n };\n }\n return data || {};\n },\n /**\n * Set the crop box position and size with new data.\n * @param {Object} data - The new crop box data.\n * @returns {Cropper} this\n */\n setCropBoxData: function setCropBoxData(data) {\n var cropBoxData = this.cropBoxData;\n var aspectRatio = this.options.aspectRatio;\n var widthChanged;\n var heightChanged;\n if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {\n if (isNumber(data.left)) {\n cropBoxData.left = data.left;\n }\n if (isNumber(data.top)) {\n cropBoxData.top = data.top;\n }\n if (isNumber(data.width) && data.width !== cropBoxData.width) {\n widthChanged = true;\n cropBoxData.width = data.width;\n }\n if (isNumber(data.height) && data.height !== cropBoxData.height) {\n heightChanged = true;\n cropBoxData.height = data.height;\n }\n if (aspectRatio) {\n if (widthChanged) {\n cropBoxData.height = cropBoxData.width / aspectRatio;\n } else if (heightChanged) {\n cropBoxData.width = cropBoxData.height * aspectRatio;\n }\n }\n this.renderCropBox();\n }\n return this;\n },\n /**\n * Get a canvas drawn the cropped image.\n * @param {Object} [options={}] - The config options.\n * @returns {HTMLCanvasElement} - The result canvas.\n */\n getCroppedCanvas: function getCroppedCanvas() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!this.ready || !window.HTMLCanvasElement) {\n return null;\n }\n var canvasData = this.canvasData;\n var source = getSourceCanvas(this.image, this.imageData, canvasData, options);\n\n // Returns the source canvas if it is not cropped.\n if (!this.cropped) {\n return source;\n }\n var _this$getData = this.getData(),\n initialX = _this$getData.x,\n initialY = _this$getData.y,\n initialWidth = _this$getData.width,\n initialHeight = _this$getData.height;\n var ratio = source.width / Math.floor(canvasData.naturalWidth);\n if (ratio !== 1) {\n initialX *= ratio;\n initialY *= ratio;\n initialWidth *= ratio;\n initialHeight *= ratio;\n }\n var aspectRatio = initialWidth / initialHeight;\n var maxSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.maxWidth || Infinity,\n height: options.maxHeight || Infinity\n });\n var minSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.minWidth || 0,\n height: options.minHeight || 0\n }, 'cover');\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.width || (ratio !== 1 ? source.width : initialWidth),\n height: options.height || (ratio !== 1 ? source.height : initialHeight)\n }),\n width = _getAdjustedSizes.width,\n height = _getAdjustedSizes.height;\n width = Math.min(maxSizes.width, Math.max(minSizes.width, width));\n height = Math.min(maxSizes.height, Math.max(minSizes.height, height));\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n canvas.width = normalizeDecimalNumber(width);\n canvas.height = normalizeDecimalNumber(height);\n context.fillStyle = options.fillColor || 'transparent';\n context.fillRect(0, 0, width, height);\n var _options$imageSmoothi = options.imageSmoothingEnabled,\n imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi,\n imageSmoothingQuality = options.imageSmoothingQuality;\n context.imageSmoothingEnabled = imageSmoothingEnabled;\n if (imageSmoothingQuality) {\n context.imageSmoothingQuality = imageSmoothingQuality;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\n var sourceWidth = source.width;\n var sourceHeight = source.height;\n\n // Source canvas parameters\n var srcX = initialX;\n var srcY = initialY;\n var srcWidth;\n var srcHeight;\n\n // Destination canvas parameters\n var dstX;\n var dstY;\n var dstWidth;\n var dstHeight;\n if (srcX <= -initialWidth || srcX > sourceWidth) {\n srcX = 0;\n srcWidth = 0;\n dstX = 0;\n dstWidth = 0;\n } else if (srcX <= 0) {\n dstX = -srcX;\n srcX = 0;\n srcWidth = Math.min(sourceWidth, initialWidth + srcX);\n dstWidth = srcWidth;\n } else if (srcX <= sourceWidth) {\n dstX = 0;\n srcWidth = Math.min(initialWidth, sourceWidth - srcX);\n dstWidth = srcWidth;\n }\n if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {\n srcY = 0;\n srcHeight = 0;\n dstY = 0;\n dstHeight = 0;\n } else if (srcY <= 0) {\n dstY = -srcY;\n srcY = 0;\n srcHeight = Math.min(sourceHeight, initialHeight + srcY);\n dstHeight = srcHeight;\n } else if (srcY <= sourceHeight) {\n dstY = 0;\n srcHeight = Math.min(initialHeight, sourceHeight - srcY);\n dstHeight = srcHeight;\n }\n var params = [srcX, srcY, srcWidth, srcHeight];\n\n // Avoid \"IndexSizeError\"\n if (dstWidth > 0 && dstHeight > 0) {\n var scale = width / initialWidth;\n params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);\n }\n\n // All the numerical parameters should be integer for `drawImage`\n // https://github.com/fengyuanchen/cropper/issues/476\n context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) {\n return Math.floor(normalizeDecimalNumber(param));\n }))));\n return canvas;\n },\n /**\n * Change the aspect ratio of the crop box.\n * @param {number} aspectRatio - The new aspect ratio.\n * @returns {Cropper} this\n */\n setAspectRatio: function setAspectRatio(aspectRatio) {\n var options = this.options;\n if (!this.disabled && !isUndefined(aspectRatio)) {\n // 0 -> NaN\n options.aspectRatio = Math.max(0, aspectRatio) || NaN;\n if (this.ready) {\n this.initCropBox();\n if (this.cropped) {\n this.renderCropBox();\n }\n }\n }\n return this;\n },\n /**\n * Change the drag mode.\n * @param {string} mode - The new drag mode.\n * @returns {Cropper} this\n */\n setDragMode: function setDragMode(mode) {\n var options = this.options,\n dragBox = this.dragBox,\n face = this.face;\n if (this.ready && !this.disabled) {\n var croppable = mode === DRAG_MODE_CROP;\n var movable = options.movable && mode === DRAG_MODE_MOVE;\n mode = croppable || movable ? mode : DRAG_MODE_NONE;\n options.dragMode = mode;\n setData(dragBox, DATA_ACTION, mode);\n toggleClass(dragBox, CLASS_CROP, croppable);\n toggleClass(dragBox, CLASS_MOVE, movable);\n if (!options.cropBoxMovable) {\n // Sync drag mode to crop box when it is not movable\n setData(face, DATA_ACTION, mode);\n toggleClass(face, CLASS_CROP, croppable);\n toggleClass(face, CLASS_MOVE, movable);\n }\n }\n return this;\n }\n };\n\n var AnotherCropper = WINDOW.Cropper;\n var Cropper = /*#__PURE__*/function () {\n /**\n * Create a new Cropper.\n * @param {Element} element - The target element for cropping.\n * @param {Object} [options={}] - The configuration options.\n */\n function Cropper(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Cropper);\n if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {\n throw new Error('The first argument is required and must be an <img> or <canvas> element.');\n }\n this.element = element;\n this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n this.cropped = false;\n this.disabled = false;\n this.pointers = {};\n this.ready = false;\n this.reloading = false;\n this.replaced = false;\n this.sized = false;\n this.sizing = false;\n this.init();\n }\n _createClass(Cropper, [{\n key: \"init\",\n value: function init() {\n var element = this.element;\n var tagName = element.tagName.toLowerCase();\n var url;\n if (element[NAMESPACE]) {\n return;\n }\n element[NAMESPACE] = this;\n if (tagName === 'img') {\n this.isImg = true;\n\n // e.g.: \"img/picture.jpg\"\n url = element.getAttribute('src') || '';\n this.originalUrl = url;\n\n // Stop when it's a blank image\n if (!url) {\n return;\n }\n\n // e.g.: \"https://example.com/img/picture.jpg\"\n url = element.src;\n } else if (tagName === 'canvas' && window.HTMLCanvasElement) {\n url = element.toDataURL();\n }\n this.load(url);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this = this;\n if (!url) {\n return;\n }\n this.url = url;\n this.imageData = {};\n var element = this.element,\n options = this.options;\n if (!options.rotatable && !options.scalable) {\n options.checkOrientation = false;\n }\n\n // Only IE10+ supports Typed Arrays\n if (!options.checkOrientation || !window.ArrayBuffer) {\n this.clone();\n return;\n }\n\n // Detect the mime type of the image directly if it is a Data URL\n if (REGEXP_DATA_URL.test(url)) {\n // Read ArrayBuffer from Data URL of JPEG images directly for better performance\n if (REGEXP_DATA_URL_JPEG.test(url)) {\n this.read(dataURLToArrayBuffer(url));\n } else {\n // Only a JPEG image may contains Exif Orientation information,\n // the rest types of Data URLs are not necessary to check orientation at all.\n this.clone();\n }\n return;\n }\n\n // 1. Detect the mime type of the image by a XMLHttpRequest.\n // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image.\n var xhr = new XMLHttpRequest();\n var clone = this.clone.bind(this);\n this.reloading = true;\n this.xhr = xhr;\n\n // 1. Cross origin requests are only supported for protocol schemes:\n // http, https, data, chrome, chrome-extension.\n // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy\n // in some browsers as IE11 and Safari.\n xhr.onabort = clone;\n xhr.onerror = clone;\n xhr.ontimeout = clone;\n xhr.onprogress = function () {\n // Abort the request directly if it not a JPEG image for better performance\n if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) {\n xhr.abort();\n }\n };\n xhr.onload = function () {\n _this.read(xhr.response);\n };\n xhr.onloadend = function () {\n _this.reloading = false;\n _this.xhr = null;\n };\n\n // Bust cache when there is a \"crossOrigin\" property to avoid browser cache error\n if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {\n url = addTimestamp(url);\n }\n\n // The third parameter is required for avoiding side-effect (#682)\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n xhr.withCredentials = element.crossOrigin === 'use-credentials';\n xhr.send();\n }\n }, {\n key: \"read\",\n value: function read(arrayBuffer) {\n var options = this.options,\n imageData = this.imageData;\n\n // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n var orientation = resetAndGetOrientation(arrayBuffer);\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n if (orientation > 1) {\n // Generate a new URL which has the default orientation value\n this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG);\n var _parseOrientation = parseOrientation(orientation);\n rotate = _parseOrientation.rotate;\n scaleX = _parseOrientation.scaleX;\n scaleY = _parseOrientation.scaleY;\n }\n if (options.rotatable) {\n imageData.rotate = rotate;\n }\n if (options.scalable) {\n imageData.scaleX = scaleX;\n imageData.scaleY = scaleY;\n }\n this.clone();\n }\n }, {\n key: \"clone\",\n value: function clone() {\n var element = this.element,\n url = this.url;\n var crossOrigin = element.crossOrigin;\n var crossOriginUrl = url;\n if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {\n if (!crossOrigin) {\n crossOrigin = 'anonymous';\n }\n\n // Bust cache when there is not a \"crossOrigin\" property (#519)\n crossOriginUrl = addTimestamp(url);\n }\n this.crossOrigin = crossOrigin;\n this.crossOriginUrl = crossOriginUrl;\n var image = document.createElement('img');\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n image.src = crossOriginUrl || url;\n image.alt = element.alt || 'The image to crop';\n this.image = image;\n image.onload = this.start.bind(this);\n image.onerror = this.stop.bind(this);\n addClass(image, CLASS_HIDE);\n element.parentNode.insertBefore(image, element.nextSibling);\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this2 = this;\n var image = this.image;\n image.onload = null;\n image.onerror = null;\n this.sizing = true;\n\n // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent);\n var done = function done(naturalWidth, naturalHeight) {\n assign(_this2.imageData, {\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n aspectRatio: naturalWidth / naturalHeight\n });\n _this2.initialImageData = assign({}, _this2.imageData);\n _this2.sizing = false;\n _this2.sized = true;\n _this2.build();\n };\n\n // Most modern browsers (excepts iOS WebKit)\n if (image.naturalWidth && !isIOSWebKit) {\n done(image.naturalWidth, image.naturalHeight);\n return;\n }\n var sizingImage = document.createElement('img');\n var body = document.body || document.documentElement;\n this.sizingImage = sizingImage;\n sizingImage.onload = function () {\n done(sizingImage.width, sizingImage.height);\n if (!isIOSWebKit) {\n body.removeChild(sizingImage);\n }\n };\n sizingImage.src = image.src;\n\n // iOS WebKit will convert the image automatically\n // with its orientation once append it into DOM (#279)\n if (!isIOSWebKit) {\n sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n body.appendChild(sizingImage);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n var image = this.image;\n image.onload = null;\n image.onerror = null;\n image.parentNode.removeChild(image);\n this.image = null;\n }\n }, {\n key: \"build\",\n value: function build() {\n if (!this.sized || this.ready) {\n return;\n }\n var element = this.element,\n options = this.options,\n image = this.image;\n\n // Create cropper elements\n var container = element.parentNode;\n var template = document.createElement('div');\n template.innerHTML = TEMPLATE;\n var cropper = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n var canvas = cropper.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n var dragBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-drag-box\"));\n var cropBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-crop-box\"));\n var face = cropBox.querySelector(\".\".concat(NAMESPACE, \"-face\"));\n this.container = container;\n this.cropper = cropper;\n this.canvas = canvas;\n this.dragBox = dragBox;\n this.cropBox = cropBox;\n this.viewBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-view-box\"));\n this.face = face;\n canvas.appendChild(image);\n\n // Hide the original image\n addClass(element, CLASS_HIDDEN);\n\n // Inserts the cropper after to the current image\n container.insertBefore(cropper, element.nextSibling);\n\n // Show the hidden image\n removeClass(image, CLASS_HIDE);\n this.initPreview();\n this.bind();\n options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN;\n options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;\n options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;\n addClass(cropBox, CLASS_HIDDEN);\n if (!options.guides) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-dashed\")), CLASS_HIDDEN);\n }\n if (!options.center) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-center\")), CLASS_HIDDEN);\n }\n if (options.background) {\n addClass(cropper, \"\".concat(NAMESPACE, \"-bg\"));\n }\n if (!options.highlight) {\n addClass(face, CLASS_INVISIBLE);\n }\n if (options.cropBoxMovable) {\n addClass(face, CLASS_MOVE);\n setData(face, DATA_ACTION, ACTION_ALL);\n }\n if (!options.cropBoxResizable) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-line\")), CLASS_HIDDEN);\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-point\")), CLASS_HIDDEN);\n }\n this.render();\n this.ready = true;\n this.setDragMode(options.dragMode);\n if (options.autoCrop) {\n this.crop();\n }\n this.setData(options.data);\n if (isFunction(options.ready)) {\n addListener(element, EVENT_READY, options.ready, {\n once: true\n });\n }\n dispatchEvent(element, EVENT_READY);\n }\n }, {\n key: \"unbuild\",\n value: function unbuild() {\n if (!this.ready) {\n return;\n }\n this.ready = false;\n this.unbind();\n this.resetPreview();\n var parentNode = this.cropper.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.cropper);\n }\n removeClass(this.element, CLASS_HIDDEN);\n }\n }, {\n key: \"uncreate\",\n value: function uncreate() {\n if (this.ready) {\n this.unbuild();\n this.ready = false;\n this.cropped = false;\n } else if (this.sizing) {\n this.sizingImage.onload = null;\n this.sizing = false;\n this.sized = false;\n } else if (this.reloading) {\n this.xhr.onabort = null;\n this.xhr.abort();\n } else if (this.image) {\n this.stop();\n }\n }\n\n /**\n * Get the no conflict cropper class.\n * @returns {Cropper} The cropper class.\n */\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Cropper = AnotherCropper;\n return Cropper;\n }\n\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n assign(DEFAULTS, isPlainObject(options) && options);\n }\n }]);\n return Cropper;\n }();\n assign(Cropper.prototype, render, preview, events, handlers, change, methods);\n\n return Cropper;\n\n}));\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin <self@wyattbaldwin.com>\n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","'use strict'\n\nmodule.exports = function encodeUtf8 (input) {\n var result = []\n var size = input.length\n\n for (var index = 0; index < size; index++) {\n var point = input.charCodeAt(index)\n\n if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n var second = input.charCodeAt(index + 1)\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n index += 1\n }\n }\n\n // US-ASCII\n if (point < 0x80) {\n result.push(point)\n continue\n }\n\n // 2-byte UTF-8\n if (point < 0x800) {\n result.push((point >> 6) | 192)\n result.push((point & 63) | 128)\n continue\n }\n\n // 3-byte UTF-8\n if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n result.push((point >> 12) | 224)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // 4-byte UTF-8\n if (point >= 0x10000 && point <= 0x10FFFF) {\n result.push((point >> 18) | 240)\n result.push(((point >> 12) & 63) | 128)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // Invalid character\n result.push(0xEF, 0xBF, 0xBD)\n }\n\n return new Uint8Array(result).buffer\n}\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","const encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n if (typeof (data) === 'string') {\n data = encodeUtf8(data)\n }\n this.data = new Uint8Array(data)\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : '<path ' + getColorAttrib(opts.color.light, 'fill') +\n ' d=\"M0 0h' + qrcodesize + 'v' + qrcodesize + 'H0z\"/>'\n\n const path =\n '<path ' + getColorAttrib(opts.color.dark, 'stroke') +\n ' d=\"' + qrToPath(data, size, opts.margin) + '\"/>'\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + ' shape-rendering=\"crispEdges\">' + bg + path + '</svg>\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n"],"names":["EVENT_READY","index","name","props","value","type","String","default","undefined","options","Object","tag","emits","watch","$props","deep","immediate","handler","this","$el","generate","mounted","methods","done","$emit","error","url","src","onload","toString","string","div","document","createElement","innerHTML","svg","querySelector","attributes","childNodes","keys","forEach","key","attribute","Number","setAttribute","childNode","appendChild","cloneNode","render","h","$slots","module","exports","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","descriptor","configurable","writable","_toConsumableArray","arr","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","o","minLen","n","call","slice","test","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","IS_BROWSER","window","WINDOW","IS_TOUCH_DEVICE","documentElement","HAS_POINTER_EVENT","NAMESPACE","ACTION_ALL","ACTION_CROP","ACTION_MOVE","ACTION_ZOOM","ACTION_EAST","ACTION_WEST","ACTION_SOUTH","ACTION_NORTH","ACTION_NORTH_EAST","ACTION_NORTH_WEST","ACTION_SOUTH_EAST","ACTION_SOUTH_WEST","CLASS_CROP","concat","CLASS_DISABLED","CLASS_HIDDEN","CLASS_HIDE","CLASS_INVISIBLE","CLASS_MODAL","CLASS_MOVE","DATA_ACTION","DATA_PREVIEW","DRAG_MODE_CROP","DRAG_MODE_MOVE","DRAG_MODE_NONE","EVENT_CROP","EVENT_CROP_END","EVENT_CROP_MOVE","EVENT_CROP_START","EVENT_DBLCLICK","EVENT_POINTER_DOWN","EVENT_POINTER_MOVE","EVENT_POINTER_UP","EVENT_RESIZE","EVENT_WHEEL","EVENT_ZOOM","MIME_TYPE_JPEG","REGEXP_ACTIONS","REGEXP_DATA_URL","REGEXP_DATA_URL_JPEG","REGEXP_TAG_NAME","DEFAULTS","viewMode","dragMode","initialAspectRatio","NaN","aspectRatio","data","preview","responsive","restore","checkCrossOrigin","checkOrientation","modal","guides","center","highlight","background","autoCrop","autoCropArea","movable","rotatable","scalable","zoomable","zoomOnTouch","zoomOnWheel","wheelZoomRatio","cropBoxMovable","cropBoxResizable","toggleDragModeOnDblclick","minCanvasWidth","minCanvasHeight","minCropBoxWidth","minCropBoxHeight","minContainerWidth","minContainerHeight","ready","cropstart","cropmove","cropend","crop","zoom","isNaN","isNumber","isPositiveNumber","Infinity","isUndefined","isObject","hasOwnProperty","isPlainObject","_constructor","isFunction","toArray","callback","assign","_len","args","_key","arg","REGEXP_DECIMALS","normalizeDecimalNumber","times","Math","round","REGEXP_SUFFIX","setStyle","element","styles","style","property","addClass","elem","classList","add","className","trim","indexOf","removeClass","remove","replace","toggleClass","added","REGEXP_CAMEL_CASE","toParamCase","toLowerCase","getData","dataset","getAttribute","setData","REGEXP_SPACES","onceSupported","supported","once","listener","get","set","addEventListener","removeEventListener","removeListener","split","event","listeners","addListener","_handler","_element$listeners","_len2","_key2","dispatchEvent","Event","CustomEvent","detail","bubbles","cancelable","createEvent","initCustomEvent","getOffset","box","getBoundingClientRect","left","pageXOffset","clientLeft","top","pageYOffset","clientTop","location","REGEXP_ORIGINS","isCrossOriginURL","parts","match","protocol","hostname","port","addTimestamp","timestamp","Date","getTime","getTransforms","_ref","rotate","scaleX","scaleY","translateX","translateY","values","transform","join","WebkitTransform","msTransform","getPointer","_ref2","endOnly","pageX","pageY","end","endX","endY","startX","startY","getAdjustedSizes","_ref4","height","width","isValidWidth","isValidHeight","adjustedWidth","getSourceCanvas","image","_ref6","_ref7","_ref8","imageAspectRatio","imageNaturalWidth","naturalWidth","imageNaturalHeight","naturalHeight","_ref6$rotate","_ref6$scaleX","_ref6$scaleY","_ref8$fillColor","fillColor","_ref8$imageSmoothingE","imageSmoothingEnabled","_ref8$imageSmoothingQ","imageSmoothingQuality","_ref8$maxWidth","maxWidth","_ref8$maxHeight","maxHeight","_ref8$minWidth","minWidth","_ref8$minHeight","minHeight","canvas","context","getContext","maxSizes","minSizes","min","max","destMaxSizes","destMinSizes","destWidth","destHeight","params","fillStyle","fillRect","save","translate","PI","scale","drawImage","map","param","floor","fromCharCode","REGEXP_DATA_URL_HEAD","resetAndGetOrientation","arrayBuffer","orientation","dataView","DataView","littleEndian","app1Start","ifdStart","getUint8","byteLength","offset","tiffOffset","start","str","getStringFromCharCode","endianness","getUint16","firstIFDOffset","getUint32","_offset","_length","setUint16","initContainer","initCanvas","initCropBox","renderCanvas","cropped","renderCropBox","container","cropper","containerData","offsetWidth","offsetHeight","imageData","rotated","abs","canvasWidth","canvasHeight","canvasData","limited","limitCanvas","oldLeft","oldTop","initialCanvasData","sizeLimited","positionLimited","cropBoxData","_getAdjustedSizes","newCanvasLeft","newCanvasTop","minLeft","minTop","maxLeft","maxTop","changed","transformed","_getRotatedSizes","_ref5","degree","arc","sinArc","sin","cosArc","cos","newWidth","newHeight","getRotatedSizes","renderImage","limitCropBox","output","initialCropBoxData","maxCropBoxWidth","maxCropBoxHeight","face","cropBox","disabled","initPreview","crossOrigin","crossOriginUrl","alt","viewBox","viewBoxImage","previews","ownerDocument","querySelectorAll","el","img","html","cssText","resetPreview","removeAttribute","removeData","cropBoxWidth","cropBoxHeight","originalWidth","originalHeight","ratio","getElementsByTagName","events","bind","onCropStart","cropStart","onWheel","wheel","passive","capture","onDblclick","dblclick","onCropMove","cropMove","onCropEnd","cropEnd","onResize","resize","unbind","handlers","ratioX","ratioY","getCanvasData","getCropBoxData","setCanvasData","setCropBoxData","setDragMode","dragBox","contains","_this","delta","preventDefault","wheeling","setTimeout","deltaY","wheelDelta","buttons","button","pointerType","ctrlKey","action","pointers","changedTouches","touch","identifier","pointerId","originalEvent","cropping","change","right","bottom","renderable","shiftKey","pointer","range","x","y","check","side","move","pointers2","maxRatio","pointer2","x1","y1","x2","y2","z1","sqrt","getMaxZoomRatio","p","reset","initialImageData","clear","hasSameSize","isImg","replaced","uncreate","load","enable","disable","destroy","originalUrl","offsetX","offsetY","_this$canvasData","moveTo","_originalEvent","zoomTo","pivot","oldRatio","count","_ref3","getPointersCenter","rotateTo","_scaleX","_scaleY","rounded","getContainerData","getImageData","sized","widthChanged","heightChanged","getCroppedCanvas","HTMLCanvasElement","_this$getData","initialX","initialY","initialWidth","initialHeight","_options$imageSmoothi","srcWidth","srcHeight","dstX","dstY","dstWidth","dstHeight","sourceWidth","sourceHeight","srcX","srcY","setAspectRatio","mode","croppable","AnotherCropper","Cropper","tagName","Error","reloading","sizing","init","staticProps","protoProps","toDataURL","base64","binary","uint8","ArrayBuffer","read","atob","Uint8Array","charCodeAt","clone","xhr","XMLHttpRequest","onabort","onerror","ontimeout","onprogress","getResponseHeader","abort","response","onloadend","open","responseType","withCredentials","send","mimeType","chunks","subarray","btoa","arrayBufferToDataURL","_parseOrientation","parseOrientation","stop","parentNode","insertBefore","nextSibling","_this2","isIOSWebKit","navigator","userAgent","build","sizingImage","body","removeChild","template","getElementsByClassName","unbuild","factory","dijkstra","single_source_shortest_paths","graph","s","d","predecessors","costs","closest","u","v","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","PriorityQueue","make","empty","pop","cost","msg","extract_shortest_path_from_predecessor_list","nodes","reverse","find_path","opts","T","t","queue","sorter","default_sorter","a","b","item","sort","shift","input","result","size","point","second","buffer","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderFunc","text","cb","argsNum","isLastArgCb","Promise","resolve","reject","create","e","renderToDataURL","_","then","getSymbolSize","getRowColCoords","version","posCount","intervals","ceil","positions","getPositions","coords","pos","posLength","j","Mode","ALPHA_NUM_CHARS","AlphanumericData","ALPHANUMERIC","getBitsLength","getLength","write","bitBuffer","put","BitBuffer","bufIndex","num","putBit","getLengthInBits","bit","BitMatrix","reservedBit","row","col","reserved","xor","isReserved","encodeUtf8","ByteData","BYTE","l","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","L","M","Q","H","getTotalCodewordsCount","isValid","level","defaultValue","fromString","Utils","G15_BCH","getBCHDigit","getEncodedBits","mask","EXP_TABLE","LOG_TABLE","log","exp","mul","KanjiData","KANJI","toSJIS","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","getMaskAt","maskPattern","parseInt","getPenaltyN1","points","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","last","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","applyMask","pattern","getBestMask","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","penalty","VersionCheck","Regex","NUMERIC","id","ccBits","MIXED","getCharCountIndicator","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","NumericData","group","substr","remainingNum","GF","p1","p2","coeff","mod","divident","divisor","generateECPolynomial","poly","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","setupFormatInfo","matrix","bits","createSymbol","segments","fromArray","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","dataTotalCodewordsBits","getSymbolTotalCodewords","remainingByte","totalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","dataSize","encode","r","createCodewords","createData","moduleCount","modules","c","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","dark","setupData","toSJISFunc","setToSJISFunction","Polynomial","genPoly","initialize","paddedData","remainder","buff","kanji","byte","RegExp","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","getStringByteLength","unescape","encodeURIComponent","getSegments","regex","exec","getSegmentsFromString","numSegs","alphaNumSegs","byteSegs","kanjiSegs","isKanjiModeEnabled","s1","s2","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","array","reduce","acc","seg","segs","buildNodes","table","prevNodeIds","nodeGroup","currentNodeIds","node","lastCount","prevNodeId","buildGraph","path","optimizedSegs","curr","prevSeg","toSJISFunction","CODEWORDS_COUNT","digit","f","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getCapacity","usableBits","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","qrData","canvasEl","getCanvasElement","getOptions","getImageWidth","ctx","createImageData","qrToImageData","clearRect","clearCanvas","putImageData","rendererOpts","quality","getColorAttrib","color","attrib","alpha","hex","toFixed","svgCmd","cmd","qrcodesize","margin","bg","light","moveBy","newRow","lineLength","qrToPath","svgTag","hex2rgba","hexCode","hexValue","g","getScale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/48.d7e479b200a6c89c4958.js b/priv/static/static/js/48.d7e479b200a6c89c4958.js @@ -1,3 +0,0 @@ -/*! For license information please see 48.d7e479b200a6c89c4958.js.LICENSE.txt */ -(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[48],{99990:(t,e,i)=>{"use strict";i.d(e,{Z:()=>o});var n=i(66252),r=i(92592);const a="ready";var o=(0,n.aZ)({name:"VueQrcode",props:{value:{type:String,default:void 0},options:{type:Object,default:void 0},tag:{type:String,default:"canvas"}},emits:[a],watch:{$props:{deep:!0,immediate:!0,handler(){this.$el&&this.generate()}}},mounted(){this.generate()},methods:{generate(){const t=this.options||{},e=String(this.value),i=()=>{this.$emit(a,this.$el)};switch(this.tag){case"canvas":(0,r.rT)(this.$el,e,t,(t=>{if(t)throw t;i()}));break;case"img":(0,r.hz)(e,t,((t,e)=>{if(t)throw t;this.$el.src=e,this.$el.onload=i}));break;case"svg":(0,r.toString)(e,t,((t,e)=>{if(t)throw t;const n=document.createElement("div");n.innerHTML=e;const r=n.querySelector("svg");if(r){const{attributes:t,childNodes:e}=r;Object.keys(t).forEach((e=>{const i=t[Number(e)];this.$el.setAttribute(i.name,i.value)})),Object.keys(e).forEach((t=>{const i=e[Number(t)];this.$el.appendChild(i.cloneNode(!0))})),i()}}))}}},render(){return(0,n.h)(this.tag,this.$slots.default)}})},33129:function(t){t.exports=function(){"use strict";function t(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,n)}return i}function e(e){for(var i=1;i<arguments.length;i++){var n=null!=arguments[i]?arguments[i]:{};i%2?t(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):t(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function a(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function o(t){return function(t){if(Array.isArray(t))return s(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?s(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,n=new Array(e);i<e;i++)n[i]=t[i];return n}var h="undefined"!=typeof window&&void 0!==window.document,c=h?window:{},l=!(!h||!c.document.documentElement)&&"ontouchstart"in c.document.documentElement,d=!!h&&"PointerEvent"in c,u="cropper",p="all",g="crop",f="move",m="zoom",v="e",w="w",y="s",b="n",x="ne",M="nw",C="se",E="sw",B="".concat(u,"-crop"),T="".concat(u,"-disabled"),D="".concat(u,"-hidden"),A="".concat(u,"-hide"),N="".concat(u,"-invisible"),k="".concat(u,"-modal"),R="".concat(u,"-move"),I="".concat(u,"Action"),L="".concat(u,"Preview"),P="crop",S="move",O="none",H="crop",z="cropend",Y="cropmove",U="cropstart",W="dblclick",j=d?"pointerdown":l?"touchstart":"mousedown",X=d?"pointermove":l?"touchmove":"mousemove",F=d?"pointerup pointercancel":l?"touchend touchcancel":"mouseup",K="ready",q="resize",$="wheel",_="zoom",J="image/jpeg",Q=/^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/,V=/^data:/,Z=/^data:image\/jpeg;base64,/,G=/^img|canvas$/i,tt={viewMode:0,dragMode:P,initialAspectRatio:NaN,aspectRatio:NaN,data:null,preview:"",responsive:!0,restore:!0,checkCrossOrigin:!0,checkOrientation:!0,modal:!0,guides:!0,center:!0,highlight:!0,background:!0,autoCrop:!0,autoCropArea:.8,movable:!0,rotatable:!0,scalable:!0,zoomable:!0,zoomOnTouch:!0,zoomOnWheel:!0,wheelZoomRatio:.1,cropBoxMovable:!0,cropBoxResizable:!0,toggleDragModeOnDblclick:!0,minCanvasWidth:0,minCanvasHeight:0,minCropBoxWidth:0,minCropBoxHeight:0,minContainerWidth:200,minContainerHeight:100,ready:null,cropstart:null,cropmove:null,cropend:null,crop:null,zoom:null},et=Number.isNaN||c.isNaN;function it(t){return"number"==typeof t&&!et(t)}var nt=function(t){return t>0&&t<1/0};function rt(t){return void 0===t}function at(t){return"object"===i(t)&&null!==t}var ot=Object.prototype.hasOwnProperty;function st(t){if(!at(t))return!1;try{var e=t.constructor,i=e.prototype;return e&&i&&ot.call(i,"isPrototypeOf")}catch(t){return!1}}function ht(t){return"function"==typeof t}var ct=Array.prototype.slice;function lt(t){return Array.from?Array.from(t):ct.call(t)}function dt(t,e){return t&&ht(e)&&(Array.isArray(t)||it(t.length)?lt(t).forEach((function(i,n){e.call(t,i,n,t)})):at(t)&&Object.keys(t).forEach((function(i){e.call(t,t[i],i,t)}))),t}var ut=Object.assign||function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),n=1;n<e;n++)i[n-1]=arguments[n];return at(t)&&i.length>0&&i.forEach((function(e){at(e)&&Object.keys(e).forEach((function(i){t[i]=e[i]}))})),t},pt=/\.\d*(?:0|9){12}\d*$/;function gt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e11;return pt.test(t)?Math.round(t*e)/e:t}var ft=/^width|height|left|top|marginLeft|marginTop$/;function mt(t,e){var i=t.style;dt(e,(function(t,e){ft.test(e)&&it(t)&&(t="".concat(t,"px")),i[e]=t}))}function vt(t,e){if(e)if(it(t.length))dt(t,(function(t){vt(t,e)}));else if(t.classList)t.classList.add(e);else{var i=t.className.trim();i?i.indexOf(e)<0&&(t.className="".concat(i," ").concat(e)):t.className=e}}function wt(t,e){e&&(it(t.length)?dt(t,(function(t){wt(t,e)})):t.classList?t.classList.remove(e):t.className.indexOf(e)>=0&&(t.className=t.className.replace(e,"")))}function yt(t,e,i){e&&(it(t.length)?dt(t,(function(t){yt(t,e,i)})):i?vt(t,e):wt(t,e))}var bt=/([a-z\d])([A-Z])/g;function xt(t){return t.replace(bt,"$1-$2").toLowerCase()}function Mt(t,e){return at(t[e])?t[e]:t.dataset?t.dataset[e]:t.getAttribute("data-".concat(xt(e)))}function Ct(t,e,i){at(i)?t[e]=i:t.dataset?t.dataset[e]=i:t.setAttribute("data-".concat(xt(e)),i)}var Et=/\s\s*/,Bt=function(){var t=!1;if(h){var e=!1,i=function(){},n=Object.defineProperty({},"once",{get:function(){return t=!0,e},set:function(t){e=t}});c.addEventListener("test",i,n),c.removeEventListener("test",i,n)}return t}();function Tt(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=i;e.trim().split(Et).forEach((function(e){if(!Bt){var a=t.listeners;a&&a[e]&&a[e][i]&&(r=a[e][i],delete a[e][i],0===Object.keys(a[e]).length&&delete a[e],0===Object.keys(a).length&&delete t.listeners)}t.removeEventListener(e,r,n)}))}function Dt(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=i;e.trim().split(Et).forEach((function(e){if(n.once&&!Bt){var a=t.listeners,o=void 0===a?{}:a;r=function(){delete o[e][i],t.removeEventListener(e,r,n);for(var a=arguments.length,s=new Array(a),h=0;h<a;h++)s[h]=arguments[h];i.apply(t,s)},o[e]||(o[e]={}),o[e][i]&&t.removeEventListener(e,o[e][i],n),o[e][i]=r,t.listeners=o}t.addEventListener(e,r,n)}))}function At(t,e,i){var n;return ht(Event)&&ht(CustomEvent)?n=new CustomEvent(e,{detail:i,bubbles:!0,cancelable:!0}):(n=document.createEvent("CustomEvent")).initCustomEvent(e,!0,!0,i),t.dispatchEvent(n)}function Nt(t){var e=t.getBoundingClientRect();return{left:e.left+(window.pageXOffset-document.documentElement.clientLeft),top:e.top+(window.pageYOffset-document.documentElement.clientTop)}}var kt=c.location,Rt=/^(\w+:)\/\/([^:/?#]*):?(\d*)/i;function It(t){var e=t.match(Rt);return null!==e&&(e[1]!==kt.protocol||e[2]!==kt.hostname||e[3]!==kt.port)}function Lt(t){var e="timestamp=".concat((new Date).getTime());return t+(-1===t.indexOf("?")?"?":"&")+e}function Pt(t){var e=t.rotate,i=t.scaleX,n=t.scaleY,r=t.translateX,a=t.translateY,o=[];it(r)&&0!==r&&o.push("translateX(".concat(r,"px)")),it(a)&&0!==a&&o.push("translateY(".concat(a,"px)")),it(e)&&0!==e&&o.push("rotate(".concat(e,"deg)")),it(i)&&1!==i&&o.push("scaleX(".concat(i,")")),it(n)&&1!==n&&o.push("scaleY(".concat(n,")"));var s=o.length?o.join(" "):"none";return{WebkitTransform:s,msTransform:s,transform:s}}function St(t,i){var n=t.pageX,r=t.pageY,a={endX:n,endY:r};return i?a:e({startX:n,startY:r},a)}function Ot(t){var e=t.aspectRatio,i=t.height,n=t.width,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"contain",a=nt(n),o=nt(i);if(a&&o){var s=i*e;"contain"===r&&s>n||"cover"===r&&s<n?i=n/e:n=i*e}else a?i=n/e:o&&(n=i*e);return{width:n,height:i}}function Ht(t,e,i,n){var r=e.aspectRatio,a=e.naturalWidth,s=e.naturalHeight,h=e.rotate,c=void 0===h?0:h,l=e.scaleX,d=void 0===l?1:l,u=e.scaleY,p=void 0===u?1:u,g=i.aspectRatio,f=i.naturalWidth,m=i.naturalHeight,v=n.fillColor,w=void 0===v?"transparent":v,y=n.imageSmoothingEnabled,b=void 0===y||y,x=n.imageSmoothingQuality,M=void 0===x?"low":x,C=n.maxWidth,E=void 0===C?1/0:C,B=n.maxHeight,T=void 0===B?1/0:B,D=n.minWidth,A=void 0===D?0:D,N=n.minHeight,k=void 0===N?0:N,R=document.createElement("canvas"),I=R.getContext("2d"),L=Ot({aspectRatio:g,width:E,height:T}),P=Ot({aspectRatio:g,width:A,height:k},"cover"),S=Math.min(L.width,Math.max(P.width,f)),O=Math.min(L.height,Math.max(P.height,m)),H=Ot({aspectRatio:r,width:E,height:T}),z=Ot({aspectRatio:r,width:A,height:k},"cover"),Y=Math.min(H.width,Math.max(z.width,a)),U=Math.min(H.height,Math.max(z.height,s)),W=[-Y/2,-U/2,Y,U];return R.width=gt(S),R.height=gt(O),I.fillStyle=w,I.fillRect(0,0,S,O),I.save(),I.translate(S/2,O/2),I.rotate(c*Math.PI/180),I.scale(d,p),I.imageSmoothingEnabled=b,I.imageSmoothingQuality=M,I.drawImage.apply(I,[t].concat(o(W.map((function(t){return Math.floor(gt(t))}))))),I.restore(),R}var zt=String.fromCharCode;var Yt=/^data:.*,/;function Ut(t){var e,i=new DataView(t);try{var n,r,a;if(255===i.getUint8(0)&&216===i.getUint8(1))for(var o=i.byteLength,s=2;s+1<o;){if(255===i.getUint8(s)&&225===i.getUint8(s+1)){r=s;break}s+=1}if(r){var h=r+10;if("Exif"===function(t,e,i){var n="";i+=e;for(var r=e;r<i;r+=1)n+=zt(t.getUint8(r));return n}(i,r+4,4)){var c=i.getUint16(h);if(((n=18761===c)||19789===c)&&42===i.getUint16(h+2,n)){var l=i.getUint32(h+4,n);l>=8&&(a=h+l)}}}if(a){var d,u,p=i.getUint16(a,n);for(u=0;u<p;u+=1)if(d=a+12*u+2,274===i.getUint16(d,n)){d+=8,e=i.getUint16(d,n),i.setUint16(d,1,n);break}}}catch(t){e=1}return e}var Wt={render:function(){this.initContainer(),this.initCanvas(),this.initCropBox(),this.renderCanvas(),this.cropped&&this.renderCropBox()},initContainer:function(){var t=this.element,e=this.options,i=this.container,n=this.cropper,r=Number(e.minContainerWidth),a=Number(e.minContainerHeight);vt(n,D),wt(t,D);var o={width:Math.max(i.offsetWidth,r>=0?r:200),height:Math.max(i.offsetHeight,a>=0?a:100)};this.containerData=o,mt(n,{width:o.width,height:o.height}),vt(t,D),wt(n,D)},initCanvas:function(){var t=this.containerData,e=this.imageData,i=this.options.viewMode,n=Math.abs(e.rotate)%180==90,r=n?e.naturalHeight:e.naturalWidth,a=n?e.naturalWidth:e.naturalHeight,o=r/a,s=t.width,h=t.height;t.height*o>t.width?3===i?s=t.height*o:h=t.width/o:3===i?h=t.width/o:s=t.height*o;var c={aspectRatio:o,naturalWidth:r,naturalHeight:a,width:s,height:h};this.canvasData=c,this.limited=1===i||2===i,this.limitCanvas(!0,!0),c.width=Math.min(Math.max(c.width,c.minWidth),c.maxWidth),c.height=Math.min(Math.max(c.height,c.minHeight),c.maxHeight),c.left=(t.width-c.width)/2,c.top=(t.height-c.height)/2,c.oldLeft=c.left,c.oldTop=c.top,this.initialCanvasData=ut({},c)},limitCanvas:function(t,e){var i=this.options,n=this.containerData,r=this.canvasData,a=this.cropBoxData,o=i.viewMode,s=r.aspectRatio,h=this.cropped&&a;if(t){var c=Number(i.minCanvasWidth)||0,l=Number(i.minCanvasHeight)||0;o>1?(c=Math.max(c,n.width),l=Math.max(l,n.height),3===o&&(l*s>c?c=l*s:l=c/s)):o>0&&(c?c=Math.max(c,h?a.width:0):l?l=Math.max(l,h?a.height:0):h&&(c=a.width,(l=a.height)*s>c?c=l*s:l=c/s));var d=Ot({aspectRatio:s,width:c,height:l});c=d.width,l=d.height,r.minWidth=c,r.minHeight=l,r.maxWidth=1/0,r.maxHeight=1/0}if(e)if(o>(h?0:1)){var u=n.width-r.width,p=n.height-r.height;r.minLeft=Math.min(0,u),r.minTop=Math.min(0,p),r.maxLeft=Math.max(0,u),r.maxTop=Math.max(0,p),h&&this.limited&&(r.minLeft=Math.min(a.left,a.left+(a.width-r.width)),r.minTop=Math.min(a.top,a.top+(a.height-r.height)),r.maxLeft=a.left,r.maxTop=a.top,2===o&&(r.width>=n.width&&(r.minLeft=Math.min(0,u),r.maxLeft=Math.max(0,u)),r.height>=n.height&&(r.minTop=Math.min(0,p),r.maxTop=Math.max(0,p))))}else r.minLeft=-r.width,r.minTop=-r.height,r.maxLeft=n.width,r.maxTop=n.height},renderCanvas:function(t,e){var i=this.canvasData,n=this.imageData;if(e){var r=function(t){var e=t.width,i=t.height,n=t.degree;if(90==(n=Math.abs(n)%180))return{width:i,height:e};var r=n%90*Math.PI/180,a=Math.sin(r),o=Math.cos(r),s=e*o+i*a,h=e*a+i*o;return n>90?{width:h,height:s}:{width:s,height:h}}({width:n.naturalWidth*Math.abs(n.scaleX||1),height:n.naturalHeight*Math.abs(n.scaleY||1),degree:n.rotate||0}),a=r.width,o=r.height,s=i.width*(a/i.naturalWidth),h=i.height*(o/i.naturalHeight);i.left-=(s-i.width)/2,i.top-=(h-i.height)/2,i.width=s,i.height=h,i.aspectRatio=a/o,i.naturalWidth=a,i.naturalHeight=o,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.width<i.minWidth)&&(i.left=i.oldLeft),(i.height>i.maxHeight||i.height<i.minHeight)&&(i.top=i.oldTop),i.width=Math.min(Math.max(i.width,i.minWidth),i.maxWidth),i.height=Math.min(Math.max(i.height,i.minHeight),i.maxHeight),this.limitCanvas(!1,!0),i.left=Math.min(Math.max(i.left,i.minLeft),i.maxLeft),i.top=Math.min(Math.max(i.top,i.minTop),i.maxTop),i.oldLeft=i.left,i.oldTop=i.top,mt(this.canvas,ut({width:i.width,height:i.height},Pt({translateX:i.left,translateY:i.top}))),this.renderImage(t),this.cropped&&this.limited&&this.limitCropBox(!0,!0)},renderImage:function(t){var e=this.canvasData,i=this.imageData,n=i.naturalWidth*(e.width/e.naturalWidth),r=i.naturalHeight*(e.height/e.naturalHeight);ut(i,{width:n,height:r,left:(e.width-n)/2,top:(e.height-r)/2}),mt(this.image,ut({width:i.width,height:i.height},Pt(ut({translateX:i.left,translateY:i.top},i)))),t&&this.output()},initCropBox:function(){var t=this.options,e=this.canvasData,i=t.aspectRatio||t.initialAspectRatio,n=Number(t.autoCropArea)||.8,r={width:e.width,height:e.height};i&&(e.height*i>e.width?r.height=r.width/i:r.width=r.height*i),this.cropBoxData=r,this.limitCropBox(!0,!0),r.width=Math.min(Math.max(r.width,r.minWidth),r.maxWidth),r.height=Math.min(Math.max(r.height,r.minHeight),r.maxHeight),r.width=Math.max(r.minWidth,r.width*n),r.height=Math.max(r.minHeight,r.height*n),r.left=e.left+(e.width-r.width)/2,r.top=e.top+(e.height-r.height)/2,r.oldLeft=r.left,r.oldTop=r.top,this.initialCropBoxData=ut({},r)},limitCropBox:function(t,e){var i=this.options,n=this.containerData,r=this.canvasData,a=this.cropBoxData,o=this.limited,s=i.aspectRatio;if(t){var h=Number(i.minCropBoxWidth)||0,c=Number(i.minCropBoxHeight)||0,l=o?Math.min(n.width,r.width,r.width+r.left,n.width-r.left):n.width,d=o?Math.min(n.height,r.height,r.height+r.top,n.height-r.top):n.height;h=Math.min(h,n.width),c=Math.min(c,n.height),s&&(h&&c?c*s>h?c=h/s:h=c*s:h?c=h/s:c&&(h=c*s),d*s>l?d=l/s:l=d*s),a.minWidth=Math.min(h,l),a.minHeight=Math.min(c,d),a.maxWidth=l,a.maxHeight=d}e&&(o?(a.minLeft=Math.max(0,r.left),a.minTop=Math.max(0,r.top),a.maxLeft=Math.min(n.width,r.left+r.width)-a.width,a.maxTop=Math.min(n.height,r.top+r.height)-a.height):(a.minLeft=0,a.minTop=0,a.maxLeft=n.width-a.width,a.maxTop=n.height-a.height))},renderCropBox:function(){var t=this.options,e=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.width<i.minWidth)&&(i.left=i.oldLeft),(i.height>i.maxHeight||i.height<i.minHeight)&&(i.top=i.oldTop),i.width=Math.min(Math.max(i.width,i.minWidth),i.maxWidth),i.height=Math.min(Math.max(i.height,i.minHeight),i.maxHeight),this.limitCropBox(!1,!0),i.left=Math.min(Math.max(i.left,i.minLeft),i.maxLeft),i.top=Math.min(Math.max(i.top,i.minTop),i.maxTop),i.oldLeft=i.left,i.oldTop=i.top,t.movable&&t.cropBoxMovable&&Ct(this.face,I,i.width>=e.width&&i.height>=e.height?f:p),mt(this.cropBox,ut({width:i.width,height:i.height},Pt({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),At(this.element,H,this.getData())}},jt={initPreview:function(){var t=this.element,e=this.crossOrigin,i=this.options.preview,n=e?this.crossOriginUrl:this.url,r=t.alt||"The image to preview",a=document.createElement("img");if(e&&(a.crossOrigin=e),a.src=n,a.alt=r,this.viewBox.appendChild(a),this.viewBoxImage=a,i){var o=i;"string"==typeof i?o=t.ownerDocument.querySelectorAll(i):i.querySelector&&(o=[i]),this.previews=o,dt(o,(function(t){var i=document.createElement("img");Ct(t,L,{width:t.offsetWidth,height:t.offsetHeight,html:t.innerHTML}),e&&(i.crossOrigin=e),i.src=n,i.alt=r,i.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',t.innerHTML="",t.appendChild(i)}))}},resetPreview:function(){dt(this.previews,(function(t){var e=Mt(t,L);mt(t,{width:e.width,height:e.height}),t.innerHTML=e.html,function(t,e){if(at(t[e]))try{delete t[e]}catch(i){t[e]=void 0}else if(t.dataset)try{delete t.dataset[e]}catch(i){t.dataset[e]=void 0}else t.removeAttribute("data-".concat(xt(e)))}(t,L)}))},preview:function(){var t=this.imageData,e=this.canvasData,i=this.cropBoxData,n=i.width,r=i.height,a=t.width,o=t.height,s=i.left-e.left-t.left,h=i.top-e.top-t.top;this.cropped&&!this.disabled&&(mt(this.viewBoxImage,ut({width:a,height:o},Pt(ut({translateX:-s,translateY:-h},t)))),dt(this.previews,(function(e){var i=Mt(e,L),c=i.width,l=i.height,d=c,u=l,p=1;n&&(u=r*(p=c/n)),r&&u>l&&(d=n*(p=l/r),u=l),mt(e,{width:d,height:u}),mt(e.getElementsByTagName("img")[0],ut({width:a*p,height:o*p},Pt(ut({translateX:-s*p,translateY:-h*p},t))))})))}},Xt={bind:function(){var t=this.element,e=this.options,i=this.cropper;ht(e.cropstart)&&Dt(t,U,e.cropstart),ht(e.cropmove)&&Dt(t,Y,e.cropmove),ht(e.cropend)&&Dt(t,z,e.cropend),ht(e.crop)&&Dt(t,H,e.crop),ht(e.zoom)&&Dt(t,_,e.zoom),Dt(i,j,this.onCropStart=this.cropStart.bind(this)),e.zoomable&&e.zoomOnWheel&&Dt(i,$,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&Dt(i,W,this.onDblclick=this.dblclick.bind(this)),Dt(t.ownerDocument,X,this.onCropMove=this.cropMove.bind(this)),Dt(t.ownerDocument,F,this.onCropEnd=this.cropEnd.bind(this)),e.responsive&&Dt(window,q,this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,e=this.options,i=this.cropper;ht(e.cropstart)&&Tt(t,U,e.cropstart),ht(e.cropmove)&&Tt(t,Y,e.cropmove),ht(e.cropend)&&Tt(t,z,e.cropend),ht(e.crop)&&Tt(t,H,e.crop),ht(e.zoom)&&Tt(t,_,e.zoom),Tt(i,j,this.onCropStart),e.zoomable&&e.zoomOnWheel&&Tt(i,$,this.onWheel,{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&Tt(i,W,this.onDblclick),Tt(t.ownerDocument,X,this.onCropMove),Tt(t.ownerDocument,F,this.onCropEnd),e.responsive&&Tt(window,q,this.onResize)}},Ft={resize:function(){if(!this.disabled){var t,e,i=this.options,n=this.container,r=this.containerData,a=n.offsetWidth/r.width,o=n.offsetHeight/r.height,s=Math.abs(a-1)>Math.abs(o-1)?a:o;1!==s&&(i.restore&&(t=this.getCanvasData(),e=this.getCropBoxData()),this.render(),i.restore&&(this.setCanvasData(dt(t,(function(e,i){t[i]=e*s}))),this.setCropBoxData(dt(e,(function(t,i){e[i]=t*s})))))}},dblclick:function(){var t,e;this.disabled||this.options.dragMode===O||this.setDragMode((t=this.dragBox,e=B,(t.classList?t.classList.contains(e):t.className.indexOf(e)>-1)?S:P))},wheel:function(t){var e=this,i=Number(this.options.wheelZoomRatio)||.1,n=1;this.disabled||(t.preventDefault(),this.wheeling||(this.wheeling=!0,setTimeout((function(){e.wheeling=!1}),50),t.deltaY?n=t.deltaY>0?1:-1:t.wheelDelta?n=-t.wheelDelta/120:t.detail&&(n=t.detail>0?1:-1),this.zoom(-n*i,t)))},cropStart:function(t){var e=t.buttons,i=t.button;if(!(this.disabled||("mousedown"===t.type||"pointerdown"===t.type&&"mouse"===t.pointerType)&&(it(e)&&1!==e||it(i)&&0!==i||t.ctrlKey))){var n,r=this.options,a=this.pointers;t.changedTouches?dt(t.changedTouches,(function(t){a[t.identifier]=St(t)})):a[t.pointerId||0]=St(t),n=Object.keys(a).length>1&&r.zoomable&&r.zoomOnTouch?m:Mt(t.target,I),Q.test(n)&&!1!==At(this.element,U,{originalEvent:t,action:n})&&(t.preventDefault(),this.action=n,this.cropping=!1,n===g&&(this.cropping=!0,vt(this.dragBox,k)))}},cropMove:function(t){var e=this.action;if(!this.disabled&&e){var i=this.pointers;t.preventDefault(),!1!==At(this.element,Y,{originalEvent:t,action:e})&&(t.changedTouches?dt(t.changedTouches,(function(t){ut(i[t.identifier]||{},St(t,!0))})):ut(i[t.pointerId||0]||{},St(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var e=this.action,i=this.pointers;t.changedTouches?dt(t.changedTouches,(function(t){delete i[t.identifier]})):delete i[t.pointerId||0],e&&(t.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,yt(this.dragBox,k,this.cropped&&this.options.modal)),At(this.element,z,{originalEvent:t,action:e}))}}},Kt={change:function(t){var i,n=this.options,r=this.canvasData,a=this.containerData,o=this.cropBoxData,s=this.pointers,h=this.action,c=n.aspectRatio,l=o.left,d=o.top,u=o.width,B=o.height,T=l+u,A=d+B,N=0,k=0,R=a.width,I=a.height,L=!0;!c&&t.shiftKey&&(c=u&&B?u/B:1),this.limited&&(N=o.minLeft,k=o.minTop,R=N+Math.min(a.width,r.width,r.left+r.width),I=k+Math.min(a.height,r.height,r.top+r.height));var P=s[Object.keys(s)[0]],S={x:P.endX-P.startX,y:P.endY-P.startY},O=function(t){switch(t){case v:T+S.x>R&&(S.x=R-T);break;case w:l+S.x<N&&(S.x=N-l);break;case b:d+S.y<k&&(S.y=k-d);break;case y:A+S.y>I&&(S.y=I-A)}};switch(h){case p:l+=S.x,d+=S.y;break;case v:if(S.x>=0&&(T>=R||c&&(d<=k||A>=I))){L=!1;break}O(v),(u+=S.x)<0&&(h=w,l-=u=-u),c&&(B=u/c,d+=(o.height-B)/2);break;case b:if(S.y<=0&&(d<=k||c&&(l<=N||T>=R))){L=!1;break}O(b),B-=S.y,d+=S.y,B<0&&(h=y,d-=B=-B),c&&(u=B*c,l+=(o.width-u)/2);break;case w:if(S.x<=0&&(l<=N||c&&(d<=k||A>=I))){L=!1;break}O(w),u-=S.x,l+=S.x,u<0&&(h=v,l-=u=-u),c&&(B=u/c,d+=(o.height-B)/2);break;case y:if(S.y>=0&&(A>=I||c&&(l<=N||T>=R))){L=!1;break}O(y),(B+=S.y)<0&&(h=b,d-=B=-B),c&&(u=B*c,l+=(o.width-u)/2);break;case x:if(c){if(S.y<=0&&(d<=k||T>=R)){L=!1;break}O(b),B-=S.y,d+=S.y,u=B*c}else O(b),O(v),S.x>=0?T<R?u+=S.x:S.y<=0&&d<=k&&(L=!1):u+=S.x,S.y<=0?d>k&&(B-=S.y,d+=S.y):(B-=S.y,d+=S.y);u<0&&B<0?(h=E,d-=B=-B,l-=u=-u):u<0?(h=M,l-=u=-u):B<0&&(h=C,d-=B=-B);break;case M:if(c){if(S.y<=0&&(d<=k||l<=N)){L=!1;break}O(b),B-=S.y,d+=S.y,u=B*c,l+=o.width-u}else O(b),O(w),S.x<=0?l>N?(u-=S.x,l+=S.x):S.y<=0&&d<=k&&(L=!1):(u-=S.x,l+=S.x),S.y<=0?d>k&&(B-=S.y,d+=S.y):(B-=S.y,d+=S.y);u<0&&B<0?(h=C,d-=B=-B,l-=u=-u):u<0?(h=x,l-=u=-u):B<0&&(h=E,d-=B=-B);break;case E:if(c){if(S.x<=0&&(l<=N||A>=I)){L=!1;break}O(w),u-=S.x,l+=S.x,B=u/c}else O(y),O(w),S.x<=0?l>N?(u-=S.x,l+=S.x):S.y>=0&&A>=I&&(L=!1):(u-=S.x,l+=S.x),S.y>=0?A<I&&(B+=S.y):B+=S.y;u<0&&B<0?(h=x,d-=B=-B,l-=u=-u):u<0?(h=C,l-=u=-u):B<0&&(h=M,d-=B=-B);break;case C:if(c){if(S.x>=0&&(T>=R||A>=I)){L=!1;break}O(v),B=(u+=S.x)/c}else O(y),O(v),S.x>=0?T<R?u+=S.x:S.y>=0&&A>=I&&(L=!1):u+=S.x,S.y>=0?A<I&&(B+=S.y):B+=S.y;u<0&&B<0?(h=M,d-=B=-B,l-=u=-u):u<0?(h=E,l-=u=-u):B<0&&(h=x,d-=B=-B);break;case f:this.move(S.x,S.y),L=!1;break;case m:this.zoom(function(t){var i=e({},t),n=0;return dt(t,(function(t,e){delete i[e],dt(i,(function(e){var i=Math.abs(t.startX-e.startX),r=Math.abs(t.startY-e.startY),a=Math.abs(t.endX-e.endX),o=Math.abs(t.endY-e.endY),s=Math.sqrt(i*i+r*r),h=(Math.sqrt(a*a+o*o)-s)/s;Math.abs(h)>Math.abs(n)&&(n=h)}))})),n}(s),t),L=!1;break;case g:if(!S.x||!S.y){L=!1;break}i=Nt(this.cropper),l=P.startX-i.left,d=P.startY-i.top,u=o.minWidth,B=o.minHeight,S.x>0?h=S.y>0?C:x:S.x<0&&(l-=u,h=S.y>0?E:M),S.y<0&&(d-=B),this.cropped||(wt(this.cropBox,D),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0))}L&&(o.width=u,o.height=B,o.left=l,o.top=d,this.action=h,this.renderCropBox()),dt(s,(function(t){t.startX=t.endX,t.startY=t.endY}))}},qt={crop:function(){return!this.ready||this.cropped||this.disabled||(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&vt(this.dragBox,k),wt(this.cropBox,D),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=ut({},this.initialImageData),this.canvasData=ut({},this.initialCanvasData),this.cropBoxData=ut({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(ut(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),wt(this.dragBox,k),vt(this.cropBox,D)),this},replace:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!this.disabled&&t&&(this.isImg&&(this.element.src=t),e?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,dt(this.previews,(function(e){e.getElementsByTagName("img")[0].src=t})))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,wt(this.cropper,T)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,vt(this.cropper,T)),this},destroy:function(){var t=this.element;return t.cropper?(t.cropper=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,n=i.left,r=i.top;return this.moveTo(rt(t)?t:n+Number(t),rt(e)?e:r+Number(e))},moveTo:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,n=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.movable&&(it(t)&&(i.left=t,n=!0),it(e)&&(i.top=e,n=!0),n&&this.renderCanvas(!0)),this},zoom:function(t,e){var i=this.canvasData;return t=(t=Number(t))<0?1/(1-t):1+t,this.zoomTo(i.width*t/i.naturalWidth,null,e)},zoomTo:function(t,e,i){var n=this.options,r=this.canvasData,a=r.width,o=r.height,s=r.naturalWidth,h=r.naturalHeight;if((t=Number(t))>=0&&this.ready&&!this.disabled&&n.zoomable){var c=s*t,l=h*t;if(!1===At(this.element,_,{ratio:t,oldRatio:a/s,originalEvent:i}))return this;if(i){var d=this.pointers,u=Nt(this.cropper),p=d&&Object.keys(d).length?function(t){var e=0,i=0,n=0;return dt(t,(function(t){var r=t.startX,a=t.startY;e+=r,i+=a,n+=1})),{pageX:e/=n,pageY:i/=n}}(d):{pageX:i.pageX,pageY:i.pageY};r.left-=(c-a)*((p.pageX-u.left-r.left)/a),r.top-=(l-o)*((p.pageY-u.top-r.top)/o)}else st(e)&&it(e.x)&&it(e.y)?(r.left-=(c-a)*((e.x-r.left)/a),r.top-=(l-o)*((e.y-r.top)/o)):(r.left-=(c-a)/2,r.top-=(l-o)/2);r.width=c,r.height=l,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return it(t=Number(t))&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var e=this.imageData.scaleY;return this.scale(t,it(e)?e:1)},scaleY:function(t){var e=this.imageData.scaleX;return this.scale(it(e)?e:1,t)},scale:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.imageData,n=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.scalable&&(it(t)&&(i.scaleX=t,n=!0),it(e)&&(i.scaleY=e,n=!0),n&&this.renderCanvas(!0,!0)),this},getData:function(){var t,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.options,n=this.imageData,r=this.canvasData,a=this.cropBoxData;if(this.ready&&this.cropped){t={x:a.left-r.left,y:a.top-r.top,width:a.width,height:a.height};var o=n.width/n.naturalWidth;if(dt(t,(function(e,i){t[i]=e/o})),e){var s=Math.round(t.y+t.height),h=Math.round(t.x+t.width);t.x=Math.round(t.x),t.y=Math.round(t.y),t.width=h-t.x,t.height=s-t.y}}else t={x:0,y:0,width:0,height:0};return i.rotatable&&(t.rotate=n.rotate||0),i.scalable&&(t.scaleX=n.scaleX||1,t.scaleY=n.scaleY||1),t},setData:function(t){var e=this.options,i=this.imageData,n=this.canvasData,r={};if(this.ready&&!this.disabled&&st(t)){var a=!1;e.rotatable&&it(t.rotate)&&t.rotate!==i.rotate&&(i.rotate=t.rotate,a=!0),e.scalable&&(it(t.scaleX)&&t.scaleX!==i.scaleX&&(i.scaleX=t.scaleX,a=!0),it(t.scaleY)&&t.scaleY!==i.scaleY&&(i.scaleY=t.scaleY,a=!0)),a&&this.renderCanvas(!0,!0);var o=i.width/i.naturalWidth;it(t.x)&&(r.left=t.x*o+n.left),it(t.y)&&(r.top=t.y*o+n.top),it(t.width)&&(r.width=t.width*o),it(t.height)&&(r.height=t.height*o),this.setCropBoxData(r)}return this},getContainerData:function(){return this.ready?ut({},this.containerData):{}},getImageData:function(){return this.sized?ut({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,e={};return this.ready&&dt(["left","top","width","height","naturalWidth","naturalHeight"],(function(i){e[i]=t[i]})),e},setCanvasData:function(t){var e=this.canvasData,i=e.aspectRatio;return this.ready&&!this.disabled&&st(t)&&(it(t.left)&&(e.left=t.left),it(t.top)&&(e.top=t.top),it(t.width)?(e.width=t.width,e.height=t.width/i):it(t.height)&&(e.height=t.height,e.width=t.height*i),this.renderCanvas(!0)),this},getCropBoxData:function(){var t,e=this.cropBoxData;return this.ready&&this.cropped&&(t={left:e.left,top:e.top,width:e.width,height:e.height}),t||{}},setCropBoxData:function(t){var e,i,n=this.cropBoxData,r=this.options.aspectRatio;return this.ready&&this.cropped&&!this.disabled&&st(t)&&(it(t.left)&&(n.left=t.left),it(t.top)&&(n.top=t.top),it(t.width)&&t.width!==n.width&&(e=!0,n.width=t.width),it(t.height)&&t.height!==n.height&&(i=!0,n.height=t.height),r&&(e?n.height=n.width/r:i&&(n.width=n.height*r)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var e=this.canvasData,i=Ht(this.image,this.imageData,e,t);if(!this.cropped)return i;var n=this.getData(),r=n.x,a=n.y,s=n.width,h=n.height,c=i.width/Math.floor(e.naturalWidth);1!==c&&(r*=c,a*=c,s*=c,h*=c);var l=s/h,d=Ot({aspectRatio:l,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),u=Ot({aspectRatio:l,width:t.minWidth||0,height:t.minHeight||0},"cover"),p=Ot({aspectRatio:l,width:t.width||(1!==c?i.width:s),height:t.height||(1!==c?i.height:h)}),g=p.width,f=p.height;g=Math.min(d.width,Math.max(u.width,g)),f=Math.min(d.height,Math.max(u.height,f));var m=document.createElement("canvas"),v=m.getContext("2d");m.width=gt(g),m.height=gt(f),v.fillStyle=t.fillColor||"transparent",v.fillRect(0,0,g,f);var w=t.imageSmoothingEnabled,y=void 0===w||w,b=t.imageSmoothingQuality;v.imageSmoothingEnabled=y,b&&(v.imageSmoothingQuality=b);var x,M,C,E,B,T,D=i.width,A=i.height,N=r,k=a;N<=-s||N>D?(N=0,x=0,C=0,B=0):N<=0?(C=-N,N=0,B=x=Math.min(D,s+N)):N<=D&&(C=0,B=x=Math.min(s,D-N)),x<=0||k<=-h||k>A?(k=0,M=0,E=0,T=0):k<=0?(E=-k,k=0,T=M=Math.min(A,h+k)):k<=A&&(E=0,T=M=Math.min(h,A-k));var R=[N,k,x,M];if(B>0&&T>0){var I=g/s;R.push(C*I,E*I,B*I,T*I)}return v.drawImage.apply(v,[i].concat(o(R.map((function(t){return Math.floor(gt(t))}))))),m},setAspectRatio:function(t){var e=this.options;return this.disabled||rt(t)||(e.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var e=this.options,i=this.dragBox,n=this.face;if(this.ready&&!this.disabled){var r=t===P,a=e.movable&&t===S;t=r||a?t:O,e.dragMode=t,Ct(i,I,t),yt(i,B,r),yt(i,R,a),e.cropBoxMovable||(Ct(n,I,t),yt(n,B,r),yt(n,R,a))}return this}},$t=c.Cropper,_t=function(){function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(n(this,t),!e||!G.test(e.tagName))throw new Error("The first argument is required and must be an <img> or <canvas> element.");this.element=e,this.options=ut({},tt,st(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return e=t,a=[{key:"noConflict",value:function(){return window.Cropper=$t,t}},{key:"setDefaults",value:function(t){ut(tt,st(t)&&t)}}],(i=[{key:"init",value:function(){var t,e=this.element,i=e.tagName.toLowerCase();if(!e.cropper){if(e.cropper=this,"img"===i){if(this.isImg=!0,t=e.getAttribute("src")||"",this.originalUrl=t,!t)return;t=e.src}else"canvas"===i&&window.HTMLCanvasElement&&(t=e.toDataURL());this.load(t)}}},{key:"load",value:function(t){var e,i,n,r,a=this;if(t){this.url=t,this.imageData={};var o=this.element,s=this.options;if(s.rotatable||s.scalable||(s.checkOrientation=!1),s.checkOrientation&&window.ArrayBuffer)if(V.test(t))Z.test(t)?this.read((e=t.replace(Yt,""),i=atob(e),n=new ArrayBuffer(i.length),dt(r=new Uint8Array(n),(function(t,e){r[e]=i.charCodeAt(e)})),n)):this.clone();else{var h=new XMLHttpRequest,c=this.clone.bind(this);this.reloading=!0,this.xhr=h,h.onabort=c,h.onerror=c,h.ontimeout=c,h.onprogress=function(){h.getResponseHeader("content-type")!==J&&h.abort()},h.onload=function(){a.read(h.response)},h.onloadend=function(){a.reloading=!1,a.xhr=null},s.checkCrossOrigin&&It(t)&&o.crossOrigin&&(t=Lt(t)),h.open("GET",t,!0),h.responseType="arraybuffer",h.withCredentials="use-credentials"===o.crossOrigin,h.send()}else this.clone()}}},{key:"read",value:function(t){var e=this.options,i=this.imageData,n=Ut(t),r=0,a=1,o=1;if(n>1){this.url=function(t,e){for(var i=[],n=new Uint8Array(t);n.length>0;)i.push(zt.apply(null,lt(n.subarray(0,8192)))),n=n.subarray(8192);return"data:".concat(e,";base64,").concat(btoa(i.join("")))}(t,J);var s=function(t){var e=0,i=1,n=1;switch(t){case 2:i=-1;break;case 3:e=-180;break;case 4:n=-1;break;case 5:e=90,n=-1;break;case 6:e=90;break;case 7:e=90,i=-1;break;case 8:e=-90}return{rotate:e,scaleX:i,scaleY:n}}(n);r=s.rotate,a=s.scaleX,o=s.scaleY}e.rotatable&&(i.rotate=r),e.scalable&&(i.scaleX=a,i.scaleY=o),this.clone()}},{key:"clone",value:function(){var t=this.element,e=this.url,i=t.crossOrigin,n=e;this.options.checkCrossOrigin&&It(e)&&(i||(i="anonymous"),n=Lt(e)),this.crossOrigin=i,this.crossOriginUrl=n;var r=document.createElement("img");i&&(r.crossOrigin=i),r.src=n||e,r.alt=t.alt||"The image to crop",this.image=r,r.onload=this.start.bind(this),r.onerror=this.stop.bind(this),vt(r,A),t.parentNode.insertBefore(r,t.nextSibling)}},{key:"start",value:function(){var t=this,e=this.image;e.onload=null,e.onerror=null,this.sizing=!0;var i=c.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(c.navigator.userAgent),n=function(e,i){ut(t.imageData,{naturalWidth:e,naturalHeight:i,aspectRatio:e/i}),t.initialImageData=ut({},t.imageData),t.sizing=!1,t.sized=!0,t.build()};if(!e.naturalWidth||i){var r=document.createElement("img"),a=document.body||document.documentElement;this.sizingImage=r,r.onload=function(){n(r.width,r.height),i||a.removeChild(r)},r.src=e.src,i||(r.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",a.appendChild(r))}else n(e.naturalWidth,e.naturalHeight)}},{key:"stop",value:function(){var t=this.image;t.onload=null,t.onerror=null,t.parentNode.removeChild(t),this.image=null}},{key:"build",value:function(){if(this.sized&&!this.ready){var t=this.element,e=this.options,i=this.image,n=t.parentNode,r=document.createElement("div");r.innerHTML='<div class="cropper-container" touch-action="none"><div class="cropper-wrap-box"><div class="cropper-canvas"></div></div><div class="cropper-drag-box"></div><div class="cropper-crop-box"><span class="cropper-view-box"></span><span class="cropper-dashed dashed-h"></span><span class="cropper-dashed dashed-v"></span><span class="cropper-center"></span><span class="cropper-face"></span><span class="cropper-line line-e" data-cropper-action="e"></span><span class="cropper-line line-n" data-cropper-action="n"></span><span class="cropper-line line-w" data-cropper-action="w"></span><span class="cropper-line line-s" data-cropper-action="s"></span><span class="cropper-point point-e" data-cropper-action="e"></span><span class="cropper-point point-n" data-cropper-action="n"></span><span class="cropper-point point-w" data-cropper-action="w"></span><span class="cropper-point point-s" data-cropper-action="s"></span><span class="cropper-point point-ne" data-cropper-action="ne"></span><span class="cropper-point point-nw" data-cropper-action="nw"></span><span class="cropper-point point-sw" data-cropper-action="sw"></span><span class="cropper-point point-se" data-cropper-action="se"></span></div></div>';var a=r.querySelector(".".concat(u,"-container")),o=a.querySelector(".".concat(u,"-canvas")),s=a.querySelector(".".concat(u,"-drag-box")),h=a.querySelector(".".concat(u,"-crop-box")),c=h.querySelector(".".concat(u,"-face"));this.container=n,this.cropper=a,this.canvas=o,this.dragBox=s,this.cropBox=h,this.viewBox=a.querySelector(".".concat(u,"-view-box")),this.face=c,o.appendChild(i),vt(t,D),n.insertBefore(a,t.nextSibling),this.isImg||wt(i,A),this.initPreview(),this.bind(),e.initialAspectRatio=Math.max(0,e.initialAspectRatio)||NaN,e.aspectRatio=Math.max(0,e.aspectRatio)||NaN,e.viewMode=Math.max(0,Math.min(3,Math.round(e.viewMode)))||0,vt(h,D),e.guides||vt(h.getElementsByClassName("".concat(u,"-dashed")),D),e.center||vt(h.getElementsByClassName("".concat(u,"-center")),D),e.background&&vt(a,"".concat(u,"-bg")),e.highlight||vt(c,N),e.cropBoxMovable&&(vt(c,R),Ct(c,I,p)),e.cropBoxResizable||(vt(h.getElementsByClassName("".concat(u,"-line")),D),vt(h.getElementsByClassName("".concat(u,"-point")),D)),this.render(),this.ready=!0,this.setDragMode(e.dragMode),e.autoCrop&&this.crop(),this.setData(e.data),ht(e.ready)&&Dt(t,K,e.ready,{once:!0}),At(t,K)}}},{key:"unbuild",value:function(){this.ready&&(this.ready=!1,this.unbind(),this.resetPreview(),this.cropper.parentNode.removeChild(this.cropper),wt(this.element,D))}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}])&&r(e.prototype,i),a&&r(e,a),t;var e,i,a}();return ut(_t.prototype,Wt,jt,Xt,Ft,Kt,qt),_t}()},65987:t=>{"use strict";var e={single_source_shortest_paths:function(t,i,n){var r={},a={};a[i]=0;var o,s,h,c,l,d,u,p=e.PriorityQueue.make();for(p.push(i,0);!p.empty();)for(h in s=(o=p.pop()).value,c=o.cost,l=t[s]||{})l.hasOwnProperty(h)&&(d=c+l[h],u=a[h],(void 0===a[h]||u>d)&&(a[h]=d,p.push(h,d),r[h]=s));if(void 0!==n&&void 0===a[n]){var g=["Could not find a path from ",i," to ",n,"."].join("");throw new Error(g)}return r},extract_shortest_path_from_predecessor_list:function(t,e){for(var i=[],n=e;n;)i.push(n),t[n],n=t[n];return i.reverse(),i},find_path:function(t,i,n){var r=e.single_source_shortest_paths(t,i,n);return e.extract_shortest_path_from_predecessor_list(r,n)},PriorityQueue:{make:function(t){var i,n=e.PriorityQueue,r={};for(i in t=t||{},n)n.hasOwnProperty(i)&&(r[i]=n[i]);return r.queue=[],r.sorter=t.sorter||n.default_sorter,r},default_sorter:function(t,e){return t.cost-e.cost},push:function(t,e){var i={value:t,cost:e};this.queue.push(i),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};t.exports=e},62378:t=>{"use strict";t.exports=function(t){for(var e=[],i=t.length,n=0;n<i;n++){var r=t.charCodeAt(n);if(r>=55296&&r<=56319&&i>n+1){var a=t.charCodeAt(n+1);a>=56320&&a<=57343&&(r=1024*(r-55296)+a-56320+65536,n+=1)}r<128?e.push(r):r<2048?(e.push(r>>6|192),e.push(63&r|128)):r<55296||r>=57344&&r<65536?(e.push(r>>12|224),e.push(r>>6&63|128),e.push(63&r|128)):r>=65536&&r<=1114111?(e.push(r>>18|240),e.push(r>>12&63|128),e.push(r>>6&63|128),e.push(63&r|128)):e.push(239,191,189)}return new Uint8Array(e).buffer}},92592:(t,e,i)=>{const n=i(47138),r=i(95115),a=i(6907),o=i(93776);function s(t,e,i,a,o){const s=[].slice.call(arguments,1),h=s.length,c="function"==typeof s[h-1];if(!c&&!n())throw new Error("Callback required as last argument");if(!c){if(h<1)throw new Error("Too few arguments provided");return 1===h?(i=e,e=a=void 0):2!==h||e.getContext||(a=i,i=e,e=void 0),new Promise((function(n,o){try{const o=r.create(i,a);n(t(o,e,a))}catch(t){o(t)}}))}if(h<2)throw new Error("Too few arguments provided");2===h?(o=i,i=e,e=a=void 0):3===h&&(e.getContext&&void 0===o?(o=a,a=void 0):(o=a,a=i,i=e,e=void 0));try{const n=r.create(i,a);o(null,t(n,e,a))}catch(t){o(t)}}r.create,e.rT=s.bind(null,a.render),e.hz=s.bind(null,a.renderToDataURL),e.toString=s.bind(null,(function(t,e,i){return o.render(t,i)}))},47138:t=>{t.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},21845:(t,e,i)=>{const n=i(10242).getSymbolSize;e.getRowColCoords=function(t){if(1===t)return[];const e=Math.floor(t/7)+2,i=n(t),r=145===i?26:2*Math.ceil((i-13)/(2*e-2)),a=[i-7];for(let t=1;t<e-1;t++)a[t]=a[t-1]-r;return a.push(6),a.reverse()},e.getPositions=function(t){const i=[],n=e.getRowColCoords(t),r=n.length;for(let t=0;t<r;t++)for(let e=0;e<r;e++)0===t&&0===e||0===t&&e===r-1||t===r-1&&0===e||i.push([n[t],n[e]]);return i}},8260:(t,e,i)=>{const n=i(76910),r=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function a(t){this.mode=n.ALPHANUMERIC,this.data=t}a.getBitsLength=function(t){return 11*Math.floor(t/2)+t%2*6},a.prototype.getLength=function(){return this.data.length},a.prototype.getBitsLength=function(){return a.getBitsLength(this.data.length)},a.prototype.write=function(t){let e;for(e=0;e+2<=this.data.length;e+=2){let i=45*r.indexOf(this.data[e]);i+=r.indexOf(this.data[e+1]),t.put(i,11)}this.data.length%2&&t.put(r.indexOf(this.data[e]),6)},t.exports=a},97245:t=>{function e(){this.buffer=[],this.length=0}e.prototype={get:function(t){const e=Math.floor(t/8);return 1==(this.buffer[e]>>>7-t%8&1)},put:function(t,e){for(let i=0;i<e;i++)this.putBit(1==(t>>>e-i-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){const e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}},t.exports=e},73280:t=>{function e(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}e.prototype.set=function(t,e,i,n){const r=t*this.size+e;this.data[r]=i,n&&(this.reservedBit[r]=!0)},e.prototype.get=function(t,e){return this.data[t*this.size+e]},e.prototype.xor=function(t,e,i){this.data[t*this.size+e]^=i},e.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]},t.exports=e},43424:(t,e,i)=>{const n=i(62378),r=i(76910);function a(t){this.mode=r.BYTE,this.data=new Uint8Array(n(t))}a.getBitsLength=function(t){return 8*t},a.prototype.getLength=function(){return this.data.length},a.prototype.getBitsLength=function(){return a.getBitsLength(this.data.length)},a.prototype.write=function(t){for(let e=0,i=this.data.length;e<i;e++)t.put(this.data[e],8)},t.exports=a},26245:(t,e,i)=>{const n=i(64908),r=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],a=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(t,e){switch(e){case n.L:return r[4*(t-1)+0];case n.M:return r[4*(t-1)+1];case n.Q:return r[4*(t-1)+2];case n.H:return r[4*(t-1)+3];default:return}},e.getTotalCodewordsCount=function(t,e){switch(e){case n.L:return a[4*(t-1)+0];case n.M:return a[4*(t-1)+1];case n.Q:return a[4*(t-1)+2];case n.H:return a[4*(t-1)+3];default:return}}},64908:(t,e)=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2},e.isValid=function(t){return t&&void 0!==t.bit&&t.bit>=0&&t.bit<4},e.from=function(t,i){if(e.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+t)}}(t)}catch(t){return i}}},76526:(t,e,i)=>{const n=i(10242).getSymbolSize;e.getPositions=function(t){const e=n(t);return[[0,0],[e-7,0],[0,e-7]]}},61642:(t,e,i)=>{const n=i(10242),r=n.getBCHDigit(1335);e.getEncodedBits=function(t,e){const i=t.bit<<3|e;let a=i<<10;for(;n.getBCHDigit(a)-r>=0;)a^=1335<<n.getBCHDigit(a)-r;return 21522^(i<<10|a)}},69729:(t,e)=>{const i=new Uint8Array(512),n=new Uint8Array(256);!function(){let t=1;for(let e=0;e<255;e++)i[e]=t,n[t]=e,t<<=1,256&t&&(t^=285);for(let t=255;t<512;t++)i[t]=i[t-255]}(),e.log=function(t){if(t<1)throw new Error("log("+t+")");return n[t]},e.exp=function(t){return i[t]},e.mul=function(t,e){return 0===t||0===e?0:i[n[t]+n[e]]}},35442:(t,e,i)=>{const n=i(76910),r=i(10242);function a(t){this.mode=n.KANJI,this.data=t}a.getBitsLength=function(t){return 13*t},a.prototype.getLength=function(){return this.data.length},a.prototype.getBitsLength=function(){return a.getBitsLength(this.data.length)},a.prototype.write=function(t){let e;for(e=0;e<this.data.length;e++){let i=r.toSJIS(this.data[e]);if(i>=33088&&i<=40956)i-=33088;else{if(!(i>=57408&&i<=60351))throw new Error("Invalid SJIS character: "+this.data[e]+"\nMake sure your charset is UTF-8");i-=49472}i=192*(i>>>8&255)+(255&i),t.put(i,13)}},t.exports=a},27126:(t,e)=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};function i(t,i,n){switch(t){case e.Patterns.PATTERN000:return(i+n)%2==0;case e.Patterns.PATTERN001:return i%2==0;case e.Patterns.PATTERN010:return n%3==0;case e.Patterns.PATTERN011:return(i+n)%3==0;case e.Patterns.PATTERN100:return(Math.floor(i/2)+Math.floor(n/3))%2==0;case e.Patterns.PATTERN101:return i*n%2+i*n%3==0;case e.Patterns.PATTERN110:return(i*n%2+i*n%3)%2==0;case e.Patterns.PATTERN111:return(i*n%3+(i+n)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}}e.isValid=function(t){return null!=t&&""!==t&&!isNaN(t)&&t>=0&&t<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(t){const e=t.size;let i=0,n=0,r=0,a=null,o=null;for(let s=0;s<e;s++){n=r=0,a=o=null;for(let h=0;h<e;h++){let e=t.get(s,h);e===a?n++:(n>=5&&(i+=n-5+3),a=e,n=1),e=t.get(h,s),e===o?r++:(r>=5&&(i+=r-5+3),o=e,r=1)}n>=5&&(i+=n-5+3),r>=5&&(i+=r-5+3)}return i},e.getPenaltyN2=function(t){const e=t.size;let i=0;for(let n=0;n<e-1;n++)for(let r=0;r<e-1;r++){const e=t.get(n,r)+t.get(n,r+1)+t.get(n+1,r)+t.get(n+1,r+1);4!==e&&0!==e||i++}return 3*i},e.getPenaltyN3=function(t){const e=t.size;let i=0,n=0,r=0;for(let a=0;a<e;a++){n=r=0;for(let o=0;o<e;o++)n=n<<1&2047|t.get(a,o),o>=10&&(1488===n||93===n)&&i++,r=r<<1&2047|t.get(o,a),o>=10&&(1488===r||93===r)&&i++}return 40*i},e.getPenaltyN4=function(t){let e=0;const i=t.data.length;for(let n=0;n<i;n++)e+=t.data[n];return 10*Math.abs(Math.ceil(100*e/i/5)-10)},e.applyMask=function(t,e){const n=e.size;for(let r=0;r<n;r++)for(let a=0;a<n;a++)e.isReserved(a,r)||e.xor(a,r,i(t,a,r))},e.getBestMask=function(t,i){const n=Object.keys(e.Patterns).length;let r=0,a=1/0;for(let o=0;o<n;o++){i(o),e.applyMask(o,t);const n=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),n<a&&(a=n,r=o)}return r}},76910:(t,e,i)=>{const n=i(43114),r=i(7007);e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(t,e){if(!t.ccBits)throw new Error("Invalid mode: "+t);if(!n.isValid(e))throw new Error("Invalid version: "+e);return e>=1&&e<10?t.ccBits[0]:e<27?t.ccBits[1]:t.ccBits[2]},e.getBestModeForData=function(t){return r.testNumeric(t)?e.NUMERIC:r.testAlphanumeric(t)?e.ALPHANUMERIC:r.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},e.isValid=function(t){return t&&t.bit&&t.ccBits},e.from=function(t,i){if(e.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+t)}}(t)}catch(t){return i}}},41085:(t,e,i)=>{const n=i(76910);function r(t){this.mode=n.NUMERIC,this.data=t.toString()}r.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(t){let e,i,n;for(e=0;e+3<=this.data.length;e+=3)i=this.data.substr(e,3),n=parseInt(i,10),t.put(n,10);const r=this.data.length-e;r>0&&(i=this.data.substr(e),n=parseInt(i,10),t.put(n,3*r+1))},t.exports=r},26143:(t,e,i)=>{const n=i(69729);e.mul=function(t,e){const i=new Uint8Array(t.length+e.length-1);for(let r=0;r<t.length;r++)for(let a=0;a<e.length;a++)i[r+a]^=n.mul(t[r],e[a]);return i},e.mod=function(t,e){let i=new Uint8Array(t);for(;i.length-e.length>=0;){const t=i[0];for(let r=0;r<e.length;r++)i[r]^=n.mul(e[r],t);let r=0;for(;r<i.length&&0===i[r];)r++;i=i.slice(r)}return i},e.generateECPolynomial=function(t){let i=new Uint8Array([1]);for(let r=0;r<t;r++)i=e.mul(i,new Uint8Array([1,n.exp(r)]));return i}},95115:(t,e,i)=>{const n=i(10242),r=i(64908),a=i(97245),o=i(73280),s=i(21845),h=i(76526),c=i(27126),l=i(26245),d=i(52882),u=i(23103),p=i(61642),g=i(76910),f=i(16130);function m(t,e,i){const n=t.size,r=p.getEncodedBits(e,i);let a,o;for(a=0;a<15;a++)o=1==(r>>a&1),a<6?t.set(a,8,o,!0):a<8?t.set(a+1,8,o,!0):t.set(n-15+a,8,o,!0),a<8?t.set(8,n-a-1,o,!0):a<9?t.set(8,15-a-1+1,o,!0):t.set(8,15-a-1,o,!0);t.set(n-8,8,1,!0)}function v(t,e,i,r){let p;if(Array.isArray(t))p=f.fromArray(t);else{if("string"!=typeof t)throw new Error("Invalid data");{let n=e;if(!n){const e=f.rawSplit(t);n=u.getBestVersionForData(e,i)}p=f.fromString(t,n||40)}}const v=u.getBestVersionForData(p,i);if(!v)throw new Error("The amount of data is too big to be stored in a QR Code");if(e){if(e<v)throw new Error("\nThe chosen QR Code version cannot contain this amount of data.\nMinimum version required to store current data is: "+v+".\n")}else e=v;const w=function(t,e,i){const r=new a;i.forEach((function(e){r.put(e.mode.bit,4),r.put(e.getLength(),g.getCharCountIndicator(e.mode,t)),e.write(r)}));const o=8*(n.getSymbolTotalCodewords(t)-l.getTotalCodewordsCount(t,e));for(r.getLengthInBits()+4<=o&&r.put(0,4);r.getLengthInBits()%8!=0;)r.putBit(0);const s=(o-r.getLengthInBits())/8;for(let t=0;t<s;t++)r.put(t%2?17:236,8);return function(t,e,i){const r=n.getSymbolTotalCodewords(e),a=r-l.getTotalCodewordsCount(e,i),o=l.getBlocksCount(e,i),s=o-r%o,h=Math.floor(r/o),c=Math.floor(a/o),u=c+1,p=h-c,g=new d(p);let f=0;const m=new Array(o),v=new Array(o);let w=0;const y=new Uint8Array(t.buffer);for(let t=0;t<o;t++){const e=t<s?c:u;m[t]=y.slice(f,f+e),v[t]=g.encode(m[t]),f+=e,w=Math.max(w,e)}const b=new Uint8Array(r);let x,M,C=0;for(x=0;x<w;x++)for(M=0;M<o;M++)x<m[M].length&&(b[C++]=m[M][x]);for(x=0;x<p;x++)for(M=0;M<o;M++)b[C++]=v[M][x];return b}(r,t,e)}(e,i,p),y=n.getSymbolSize(e),b=new o(y);return function(t,e){const i=t.size,n=h.getPositions(e);for(let e=0;e<n.length;e++){const r=n[e][0],a=n[e][1];for(let e=-1;e<=7;e++)if(!(r+e<=-1||i<=r+e))for(let n=-1;n<=7;n++)a+n<=-1||i<=a+n||(e>=0&&e<=6&&(0===n||6===n)||n>=0&&n<=6&&(0===e||6===e)||e>=2&&e<=4&&n>=2&&n<=4?t.set(r+e,a+n,!0,!0):t.set(r+e,a+n,!1,!0))}}(b,e),function(t){const e=t.size;for(let i=8;i<e-8;i++){const e=i%2==0;t.set(i,6,e,!0),t.set(6,i,e,!0)}}(b),function(t,e){const i=s.getPositions(e);for(let e=0;e<i.length;e++){const n=i[e][0],r=i[e][1];for(let e=-2;e<=2;e++)for(let i=-2;i<=2;i++)-2===e||2===e||-2===i||2===i||0===e&&0===i?t.set(n+e,r+i,!0,!0):t.set(n+e,r+i,!1,!0)}}(b,e),m(b,i,0),e>=7&&function(t,e){const i=t.size,n=u.getEncodedBits(e);let r,a,o;for(let e=0;e<18;e++)r=Math.floor(e/3),a=e%3+i-8-3,o=1==(n>>e&1),t.set(r,a,o,!0),t.set(a,r,o,!0)}(b,e),function(t,e){const i=t.size;let n=-1,r=i-1,a=7,o=0;for(let s=i-1;s>0;s-=2)for(6===s&&s--;;){for(let i=0;i<2;i++)if(!t.isReserved(r,s-i)){let n=!1;o<e.length&&(n=1==(e[o]>>>a&1)),t.set(r,s-i,n),a--,-1===a&&(o++,a=7)}if(r+=n,r<0||i<=r){r-=n,n=-n;break}}}(b,w),isNaN(r)&&(r=c.getBestMask(b,m.bind(null,b,i))),c.applyMask(r,b),m(b,i,r),{modules:b,version:e,errorCorrectionLevel:i,maskPattern:r,segments:p}}e.create=function(t,e){if(void 0===t||""===t)throw new Error("No input text");let i,a,o=r.M;return void 0!==e&&(o=r.from(e.errorCorrectionLevel,r.M),i=u.from(e.version),a=c.from(e.maskPattern),e.toSJISFunc&&n.setToSJISFunction(e.toSJISFunc)),v(t,i,o,a)}},52882:(t,e,i)=>{const n=i(26143);function r(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(t){this.degree=t,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(t){if(!this.genPoly)throw new Error("Encoder not initialized");const e=new Uint8Array(t.length+this.degree);e.set(t);const i=n.mod(e,this.genPoly),r=this.degree-i.length;if(r>0){const t=new Uint8Array(this.degree);return t.set(i,r),t}return i},t.exports=r},7007:(t,e)=>{let i="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";i=i.replace(/u/g,"\\u");const n="(?:(?![A-Z0-9 $%*+\\-./:]|"+i+")(?:.|[\r\n]))+";e.KANJI=new RegExp(i,"g"),e.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),e.BYTE=new RegExp(n,"g"),e.NUMERIC=new RegExp("[0-9]+","g"),e.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");const r=new RegExp("^"+i+"$"),a=new RegExp("^[0-9]+$"),o=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");e.testKanji=function(t){return r.test(t)},e.testNumeric=function(t){return a.test(t)},e.testAlphanumeric=function(t){return o.test(t)}},16130:(t,e,i)=>{const n=i(76910),r=i(41085),a=i(8260),o=i(43424),s=i(35442),h=i(7007),c=i(10242),l=i(65987);function d(t){return unescape(encodeURIComponent(t)).length}function u(t,e,i){const n=[];let r;for(;null!==(r=t.exec(i));)n.push({data:r[0],index:r.index,mode:e,length:r[0].length});return n}function p(t){const e=u(h.NUMERIC,n.NUMERIC,t),i=u(h.ALPHANUMERIC,n.ALPHANUMERIC,t);let r,a;return c.isKanjiModeEnabled()?(r=u(h.BYTE,n.BYTE,t),a=u(h.KANJI,n.KANJI,t)):(r=u(h.BYTE_KANJI,n.BYTE,t),a=[]),e.concat(i,r,a).sort((function(t,e){return t.index-e.index})).map((function(t){return{data:t.data,mode:t.mode,length:t.length}}))}function g(t,e){switch(e){case n.NUMERIC:return r.getBitsLength(t);case n.ALPHANUMERIC:return a.getBitsLength(t);case n.KANJI:return s.getBitsLength(t);case n.BYTE:return o.getBitsLength(t)}}function f(t,e){let i;const h=n.getBestModeForData(t);if(i=n.from(e,h),i!==n.BYTE&&i.bit<h.bit)throw new Error('"'+t+'" cannot be encoded with mode '+n.toString(i)+".\n Suggested mode is: "+n.toString(h));switch(i!==n.KANJI||c.isKanjiModeEnabled()||(i=n.BYTE),i){case n.NUMERIC:return new r(t);case n.ALPHANUMERIC:return new a(t);case n.KANJI:return new s(t);case n.BYTE:return new o(t)}}e.fromArray=function(t){return t.reduce((function(t,e){return"string"==typeof e?t.push(f(e,null)):e.data&&t.push(f(e.data,e.mode)),t}),[])},e.fromString=function(t,i){const r=function(t){const e=[];for(let i=0;i<t.length;i++){const r=t[i];switch(r.mode){case n.NUMERIC:e.push([r,{data:r.data,mode:n.ALPHANUMERIC,length:r.length},{data:r.data,mode:n.BYTE,length:r.length}]);break;case n.ALPHANUMERIC:e.push([r,{data:r.data,mode:n.BYTE,length:r.length}]);break;case n.KANJI:e.push([r,{data:r.data,mode:n.BYTE,length:d(r.data)}]);break;case n.BYTE:e.push([{data:r.data,mode:n.BYTE,length:d(r.data)}])}}return e}(p(t,c.isKanjiModeEnabled())),a=function(t,e){const i={},r={start:{}};let a=["start"];for(let o=0;o<t.length;o++){const s=t[o],h=[];for(let t=0;t<s.length;t++){const c=s[t],l=""+o+t;h.push(l),i[l]={node:c,lastCount:0},r[l]={};for(let t=0;t<a.length;t++){const o=a[t];i[o]&&i[o].node.mode===c.mode?(r[o][l]=g(i[o].lastCount+c.length,c.mode)-g(i[o].lastCount,c.mode),i[o].lastCount+=c.length):(i[o]&&(i[o].lastCount=c.length),r[o][l]=g(c.length,c.mode)+4+n.getCharCountIndicator(c.mode,e))}}a=h}for(let t=0;t<a.length;t++)r[a[t]].end=0;return{map:r,table:i}}(r,i),o=l.find_path(a.map,"start","end"),s=[];for(let t=1;t<o.length-1;t++)s.push(a.table[o[t]].node);return e.fromArray(s.reduce((function(t,e){const i=t.length-1>=0?t[t.length-1]:null;return i&&i.mode===e.mode?(t[t.length-1].data+=e.data,t):(t.push(e),t)}),[]))},e.rawSplit=function(t){return e.fromArray(p(t,c.isKanjiModeEnabled()))}},10242:(t,e)=>{let i;const n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return 4*t+17},e.getSymbolTotalCodewords=function(t){return n[t]},e.getBCHDigit=function(t){let e=0;for(;0!==t;)e++,t>>>=1;return e},e.setToSJISFunction=function(t){if("function"!=typeof t)throw new Error('"toSJISFunc" is not a valid function.');i=t},e.isKanjiModeEnabled=function(){return void 0!==i},e.toSJIS=function(t){return i(t)}},43114:(t,e)=>{e.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}},23103:(t,e,i)=>{const n=i(10242),r=i(26245),a=i(64908),o=i(76910),s=i(43114),h=n.getBCHDigit(7973);function c(t,e){return o.getCharCountIndicator(t,e)+4}function l(t,e){let i=0;return t.forEach((function(t){const n=c(t.mode,e);i+=n+t.getBitsLength()})),i}e.from=function(t,e){return s.isValid(t)?parseInt(t,10):e},e.getCapacity=function(t,e,i){if(!s.isValid(t))throw new Error("Invalid QR Code version");void 0===i&&(i=o.BYTE);const a=8*(n.getSymbolTotalCodewords(t)-r.getTotalCodewordsCount(t,e));if(i===o.MIXED)return a;const h=a-c(i,t);switch(i){case o.NUMERIC:return Math.floor(h/10*3);case o.ALPHANUMERIC:return Math.floor(h/11*2);case o.KANJI:return Math.floor(h/13);case o.BYTE:default:return Math.floor(h/8)}},e.getBestVersionForData=function(t,i){let n;const r=a.from(i,a.M);if(Array.isArray(t)){if(t.length>1)return function(t,i){for(let n=1;n<=40;n++)if(l(t,n)<=e.getCapacity(n,i,o.MIXED))return n}(t,r);if(0===t.length)return 1;n=t[0]}else n=t;return function(t,i,n){for(let r=1;r<=40;r++)if(i<=e.getCapacity(r,n,t))return r}(n.mode,n.getLength(),r)},e.getEncodedBits=function(t){if(!s.isValid(t)||t<7)throw new Error("Invalid QR Code version");let e=t<<12;for(;n.getBCHDigit(e)-h>=0;)e^=7973<<n.getBCHDigit(e)-h;return t<<12|e}},6907:(t,e,i)=>{const n=i(89653);e.render=function(t,e,i){let r=i,a=e;void 0!==r||e&&e.getContext||(r=e,e=void 0),e||(a=function(){try{return document.createElement("canvas")}catch(t){throw new Error("You need to specify a canvas element")}}()),r=n.getOptions(r);const o=n.getImageWidth(t.modules.size,r),s=a.getContext("2d"),h=s.createImageData(o,o);return n.qrToImageData(h.data,t,r),function(t,e,i){t.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=i,e.width=i,e.style.height=i+"px",e.style.width=i+"px"}(s,a,o),s.putImageData(h,0,0),a},e.renderToDataURL=function(t,i,n){let r=n;void 0!==r||i&&i.getContext||(r=i,i=void 0),r||(r={});const a=e.render(t,i,r),o=r.type||"image/png",s=r.rendererOpts||{};return a.toDataURL(o,s.quality)}},93776:(t,e,i)=>{const n=i(89653);function r(t,e){const i=t.a/255,n=e+'="'+t.hex+'"';return i<1?n+" "+e+'-opacity="'+i.toFixed(2).slice(1)+'"':n}function a(t,e,i){let n=t+e;return void 0!==i&&(n+=" "+i),n}e.render=function(t,e,i){const o=n.getOptions(e),s=t.modules.size,h=t.modules.data,c=s+2*o.margin,l=o.color.light.a?"<path "+r(o.color.light,"fill")+' d="M0 0h'+c+"v"+c+'H0z"/>':"",d="<path "+r(o.color.dark,"stroke")+' d="'+function(t,e,i){let n="",r=0,o=!1,s=0;for(let h=0;h<t.length;h++){const c=Math.floor(h%e),l=Math.floor(h/e);c||o||(o=!0),t[h]?(s++,h>0&&c>0&&t[h-1]||(n+=o?a("M",c+i,.5+l+i):a("m",r,0),r=0,o=!1),c+1<e&&t[h+1]||(n+=a("h",s),s=0)):r++}return n}(h,s,o.margin)+'"/>',u='viewBox="0 0 '+c+" "+c+'"',p='<svg xmlns="http://www.w3.org/2000/svg" '+(o.width?'width="'+o.width+'" height="'+o.width+'" ':"")+u+' shape-rendering="crispEdges">'+l+d+"</svg>\n";return"function"==typeof i&&i(null,p),p}},89653:(t,e)=>{function i(t){if("number"==typeof t&&(t=t.toString()),"string"!=typeof t)throw new Error("Color should be defined as hex string");let e=t.slice().replace("#","").split("");if(e.length<3||5===e.length||e.length>8)throw new Error("Invalid hex color: "+t);3!==e.length&&4!==e.length||(e=Array.prototype.concat.apply([],e.map((function(t){return[t,t]})))),6===e.length&&e.push("F","F");const i=parseInt(e.join(""),16);return{r:i>>24&255,g:i>>16&255,b:i>>8&255,a:255&i,hex:"#"+e.slice(0,6).join("")}}e.getOptions=function(t){t||(t={}),t.color||(t.color={});const e=void 0===t.margin||null===t.margin||t.margin<0?4:t.margin,n=t.width&&t.width>=21?t.width:void 0,r=t.scale||4;return{width:n,scale:n?4:r,margin:e,color:{dark:i(t.color.dark||"#000000ff"),light:i(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}},e.getScale=function(t,e){return e.width&&e.width>=t+2*e.margin?e.width/(t+2*e.margin):e.scale},e.getImageWidth=function(t,i){const n=e.getScale(t,i);return Math.floor((t+2*i.margin)*n)},e.qrToImageData=function(t,i,n){const r=i.modules.size,a=i.modules.data,o=e.getScale(r,n),s=Math.floor((r+2*n.margin)*o),h=n.margin*o,c=[n.color.light,n.color.dark];for(let e=0;e<s;e++)for(let i=0;i<s;i++){let l=4*(e*s+i),d=n.color.light;e>=h&&i>=h&&e<s-h&&i<s-h&&(d=c[a[Math.floor((e-h)/o)*r+Math.floor((i-h)/o)]?1:0]),t[l++]=d.r,t[l++]=d.g,t[l++]=d.b,t[l]=d.a}}}}]); -//# sourceMappingURL=48.d7e479b200a6c89c4958.js.map -\ No newline at end of file diff --git a/priv/static/static/js/48.d7e479b200a6c89c4958.js.LICENSE.txt b/priv/static/static/js/48.d7e479b200a6c89c4958.js.LICENSE.txt @@ -1,11 +0,0 @@ -/*! - * Cropper.js v1.5.12 - * https://fengyuanchen.github.io/cropperjs - * - * Copyright 2015-present Chen Fengyuan - * Released under the MIT license - * - * Date: 2021-06-12T08:00:17.411Z - */ - -/*! vue-qrcode v2.0.0 | (c) 2018-present Chen Fengyuan | MIT */ diff --git a/priv/static/static/js/48.d7e479b200a6c89c4958.js.map b/priv/static/static/js/48.d7e479b200a6c89c4958.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/48.d7e479b200a6c89c4958.js","mappings":"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","sources":["webpack://pleroma_fe/./node_modules/@chenfengyuan/vue-qrcode/dist/vue-qrcode.esm.js","webpack://pleroma_fe/./node_modules/cropperjs/dist/cropper.js","webpack://pleroma_fe/./node_modules/dijkstrajs/dijkstra.js","webpack://pleroma_fe/./node_modules/encode-utf8/index.js","webpack://pleroma_fe/./node_modules/qrcode/lib/browser.js","webpack://pleroma_fe/./node_modules/qrcode/lib/can-promise.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/alignment-pattern.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/alphanumeric-data.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/bit-buffer.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/bit-matrix.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/byte-data.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/error-correction-code.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/error-correction-level.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/finder-pattern.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/format-info.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/galois-field.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/kanji-data.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/mask-pattern.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/mode.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/numeric-data.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/polynomial.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/qrcode.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/reed-solomon-encoder.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/regex.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/segments.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/utils.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/version-check.js","webpack://pleroma_fe/./node_modules/qrcode/lib/core/version.js","webpack://pleroma_fe/./node_modules/qrcode/lib/renderer/canvas.js","webpack://pleroma_fe/./node_modules/qrcode/lib/renderer/svg-tag.js","webpack://pleroma_fe/./node_modules/qrcode/lib/renderer/utils.js"],"sourcesContent":["/*! vue-qrcode v2.0.0 | (c) 2018-present Chen Fengyuan | MIT */\nimport { defineComponent, h } from 'vue';\nimport { toString, toDataURL, toCanvas } from 'qrcode';\n\nconst EVENT_READY = 'ready';\r\nvar index = defineComponent({\r\n name: 'VueQrcode',\r\n props: {\r\n /**\r\n * The value of the QR code.\r\n */\r\n value: {\r\n type: String,\r\n default: undefined,\r\n },\r\n /**\r\n * The options for the QR code generator.\r\n * {@link https://github.com/soldair/node-qrcode#qr-code-options}\r\n */\r\n options: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n /**\r\n * The tag name of the component's root element.\r\n */\r\n tag: {\r\n type: String,\r\n default: 'canvas',\r\n },\r\n },\r\n emits: [EVENT_READY],\r\n watch: {\r\n $props: {\r\n deep: true,\r\n immediate: true,\r\n /**\r\n * Update the QR code when props changed.\r\n */\r\n handler() {\r\n if (this.$el) {\r\n this.generate();\r\n }\r\n },\r\n },\r\n },\r\n mounted() {\r\n this.generate();\r\n },\r\n methods: {\r\n /**\r\n * Generate QR code.\r\n */\r\n generate() {\r\n const options = this.options || {};\r\n const value = String(this.value);\r\n const done = () => {\r\n this.$emit(EVENT_READY, this.$el);\r\n };\r\n switch (this.tag) {\r\n case 'canvas':\r\n toCanvas(this.$el, value, options, (error) => {\r\n if (error) {\r\n throw error;\r\n }\r\n done();\r\n });\r\n break;\r\n case 'img':\r\n toDataURL(value, options, (error, url) => {\r\n if (error) {\r\n throw error;\r\n }\r\n this.$el.src = url;\r\n this.$el.onload = done;\r\n });\r\n break;\r\n case 'svg':\r\n toString(value, options, (error, string) => {\r\n if (error) {\r\n throw error;\r\n }\r\n const div = document.createElement('div');\r\n div.innerHTML = string;\r\n const svg = div.querySelector('svg');\r\n if (svg) {\r\n const { attributes, childNodes } = svg;\r\n Object.keys(attributes).forEach((key) => {\r\n const attribute = attributes[Number(key)];\r\n this.$el.setAttribute(attribute.name, attribute.value);\r\n });\r\n Object.keys(childNodes).forEach((key) => {\r\n const childNode = childNodes[Number(key)];\r\n this.$el.appendChild(childNode.cloneNode(true));\r\n });\r\n done();\r\n }\r\n });\r\n break;\r\n }\r\n },\r\n },\r\n render() {\r\n return h(this.tag, this.$slots.default);\r\n },\r\n});\n\nexport { index as default };\n","/*!\n * Cropper.js v1.5.12\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2021-06-12T08:00:17.411Z\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Cropper = factory());\n}(this, (function () { 'use strict';\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n }\n\n function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var IS_BROWSER = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var WINDOW = IS_BROWSER ? window : {};\n var IS_TOUCH_DEVICE = IS_BROWSER && WINDOW.document.documentElement ? 'ontouchstart' in WINDOW.document.documentElement : false;\n var HAS_POINTER_EVENT = IS_BROWSER ? 'PointerEvent' in WINDOW : false;\n var NAMESPACE = 'cropper'; // Actions\n\n var ACTION_ALL = 'all';\n var ACTION_CROP = 'crop';\n var ACTION_MOVE = 'move';\n var ACTION_ZOOM = 'zoom';\n var ACTION_EAST = 'e';\n var ACTION_WEST = 'w';\n var ACTION_SOUTH = 's';\n var ACTION_NORTH = 'n';\n var ACTION_NORTH_EAST = 'ne';\n var ACTION_NORTH_WEST = 'nw';\n var ACTION_SOUTH_EAST = 'se';\n var ACTION_SOUTH_WEST = 'sw'; // Classes\n\n var CLASS_CROP = \"\".concat(NAMESPACE, \"-crop\");\n var CLASS_DISABLED = \"\".concat(NAMESPACE, \"-disabled\");\n var CLASS_HIDDEN = \"\".concat(NAMESPACE, \"-hidden\");\n var CLASS_HIDE = \"\".concat(NAMESPACE, \"-hide\");\n var CLASS_INVISIBLE = \"\".concat(NAMESPACE, \"-invisible\");\n var CLASS_MODAL = \"\".concat(NAMESPACE, \"-modal\");\n var CLASS_MOVE = \"\".concat(NAMESPACE, \"-move\"); // Data keys\n\n var DATA_ACTION = \"\".concat(NAMESPACE, \"Action\");\n var DATA_PREVIEW = \"\".concat(NAMESPACE, \"Preview\"); // Drag modes\n\n var DRAG_MODE_CROP = 'crop';\n var DRAG_MODE_MOVE = 'move';\n var DRAG_MODE_NONE = 'none'; // Events\n\n var EVENT_CROP = 'crop';\n var EVENT_CROP_END = 'cropend';\n var EVENT_CROP_MOVE = 'cropmove';\n var EVENT_CROP_START = 'cropstart';\n var EVENT_DBLCLICK = 'dblclick';\n var EVENT_TOUCH_START = IS_TOUCH_DEVICE ? 'touchstart' : 'mousedown';\n var EVENT_TOUCH_MOVE = IS_TOUCH_DEVICE ? 'touchmove' : 'mousemove';\n var EVENT_TOUCH_END = IS_TOUCH_DEVICE ? 'touchend touchcancel' : 'mouseup';\n var EVENT_POINTER_DOWN = HAS_POINTER_EVENT ? 'pointerdown' : EVENT_TOUCH_START;\n var EVENT_POINTER_MOVE = HAS_POINTER_EVENT ? 'pointermove' : EVENT_TOUCH_MOVE;\n var EVENT_POINTER_UP = HAS_POINTER_EVENT ? 'pointerup pointercancel' : EVENT_TOUCH_END;\n var EVENT_READY = 'ready';\n var EVENT_RESIZE = 'resize';\n var EVENT_WHEEL = 'wheel';\n var EVENT_ZOOM = 'zoom'; // Mime types\n\n var MIME_TYPE_JPEG = 'image/jpeg'; // RegExps\n\n var REGEXP_ACTIONS = /^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/;\n var REGEXP_DATA_URL = /^data:/;\n var REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg;base64,/;\n var REGEXP_TAG_NAME = /^img|canvas$/i; // Misc\n // Inspired by the default width and height of a canvas element.\n\n var MIN_CONTAINER_WIDTH = 200;\n var MIN_CONTAINER_HEIGHT = 100;\n\n var DEFAULTS = {\n // Define the view mode of the cropper\n viewMode: 0,\n // 0, 1, 2, 3\n // Define the dragging mode of the cropper\n dragMode: DRAG_MODE_CROP,\n // 'crop', 'move' or 'none'\n // Define the initial aspect ratio of the crop box\n initialAspectRatio: NaN,\n // Define the aspect ratio of the crop box\n aspectRatio: NaN,\n // An object with the previous cropping result data\n data: null,\n // A selector for adding extra containers to preview\n preview: '',\n // Re-render the cropper when resize the window\n responsive: true,\n // Restore the cropped area after resize the window\n restore: true,\n // Check if the current image is a cross-origin image\n checkCrossOrigin: true,\n // Check the current image's Exif Orientation information\n checkOrientation: true,\n // Show the black modal\n modal: true,\n // Show the dashed lines for guiding\n guides: true,\n // Show the center indicator for guiding\n center: true,\n // Show the white modal to highlight the crop box\n highlight: true,\n // Show the grid background\n background: true,\n // Enable to crop the image automatically when initialize\n autoCrop: true,\n // Define the percentage of automatic cropping area when initializes\n autoCropArea: 0.8,\n // Enable to move the image\n movable: true,\n // Enable to rotate the image\n rotatable: true,\n // Enable to scale the image\n scalable: true,\n // Enable to zoom the image\n zoomable: true,\n // Enable to zoom the image by dragging touch\n zoomOnTouch: true,\n // Enable to zoom the image by wheeling mouse\n zoomOnWheel: true,\n // Define zoom ratio when zoom the image by wheeling mouse\n wheelZoomRatio: 0.1,\n // Enable to move the crop box\n cropBoxMovable: true,\n // Enable to resize the crop box\n cropBoxResizable: true,\n // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\n toggleDragModeOnDblclick: true,\n // Size limitation\n minCanvasWidth: 0,\n minCanvasHeight: 0,\n minCropBoxWidth: 0,\n minCropBoxHeight: 0,\n minContainerWidth: MIN_CONTAINER_WIDTH,\n minContainerHeight: MIN_CONTAINER_HEIGHT,\n // Shortcuts of events\n ready: null,\n cropstart: null,\n cropmove: null,\n cropend: null,\n crop: null,\n zoom: null\n };\n\n var TEMPLATE = '<div class=\"cropper-container\" touch-action=\"none\">' + '<div class=\"cropper-wrap-box\">' + '<div class=\"cropper-canvas\"></div>' + '</div>' + '<div class=\"cropper-drag-box\"></div>' + '<div class=\"cropper-crop-box\">' + '<span class=\"cropper-view-box\"></span>' + '<span class=\"cropper-dashed dashed-h\"></span>' + '<span class=\"cropper-dashed dashed-v\"></span>' + '<span class=\"cropper-center\"></span>' + '<span class=\"cropper-face\"></span>' + '<span class=\"cropper-line line-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-line line-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-line line-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-line line-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-e\" data-cropper-action=\"e\"></span>' + '<span class=\"cropper-point point-n\" data-cropper-action=\"n\"></span>' + '<span class=\"cropper-point point-w\" data-cropper-action=\"w\"></span>' + '<span class=\"cropper-point point-s\" data-cropper-action=\"s\"></span>' + '<span class=\"cropper-point point-ne\" data-cropper-action=\"ne\"></span>' + '<span class=\"cropper-point point-nw\" data-cropper-action=\"nw\"></span>' + '<span class=\"cropper-point point-sw\" data-cropper-action=\"sw\"></span>' + '<span class=\"cropper-point point-se\" data-cropper-action=\"se\"></span>' + '</div>' + '</div>';\n\n /**\n * Check if the given value is not a number.\n */\n\n var isNaN = Number.isNaN || WINDOW.isNaN;\n /**\n * Check if the given value is a number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a number, else `false`.\n */\n\n function isNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n }\n /**\n * Check if the given value is a positive number.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a positive number, else `false`.\n */\n\n var isPositiveNumber = function isPositiveNumber(value) {\n return value > 0 && value < Infinity;\n };\n /**\n * Check if the given value is undefined.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is undefined, else `false`.\n */\n\n function isUndefined(value) {\n return typeof value === 'undefined';\n }\n /**\n * Check if the given value is an object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is an object, else `false`.\n */\n\n function isObject(value) {\n return _typeof(value) === 'object' && value !== null;\n }\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n /**\n * Check if the given value is a plain object.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a plain object, else `false`.\n */\n\n function isPlainObject(value) {\n if (!isObject(value)) {\n return false;\n }\n\n try {\n var _constructor = value.constructor;\n var prototype = _constructor.prototype;\n return _constructor && prototype && hasOwnProperty.call(prototype, 'isPrototypeOf');\n } catch (error) {\n return false;\n }\n }\n /**\n * Check if the given value is a function.\n * @param {*} value - The value to check.\n * @returns {boolean} Returns `true` if the given value is a function, else `false`.\n */\n\n function isFunction(value) {\n return typeof value === 'function';\n }\n var slice = Array.prototype.slice;\n /**\n * Convert array-like or iterable object to an array.\n * @param {*} value - The value to convert.\n * @returns {Array} Returns a new array.\n */\n\n function toArray(value) {\n return Array.from ? Array.from(value) : slice.call(value);\n }\n /**\n * Iterate the given data.\n * @param {*} data - The data to iterate.\n * @param {Function} callback - The process function for each element.\n * @returns {*} The original data.\n */\n\n function forEach(data, callback) {\n if (data && isFunction(callback)) {\n if (Array.isArray(data) || isNumber(data.length)\n /* array-like */\n ) {\n toArray(data).forEach(function (value, key) {\n callback.call(data, value, key, data);\n });\n } else if (isObject(data)) {\n Object.keys(data).forEach(function (key) {\n callback.call(data, data[key], key, data);\n });\n }\n }\n\n return data;\n }\n /**\n * Extend the given object.\n * @param {*} target - The target object to extend.\n * @param {*} args - The rest objects for merging to the target object.\n * @returns {Object} The extended object.\n */\n\n var assign = Object.assign || function assign(target) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (isObject(target) && args.length > 0) {\n args.forEach(function (arg) {\n if (isObject(arg)) {\n Object.keys(arg).forEach(function (key) {\n target[key] = arg[key];\n });\n }\n });\n }\n\n return target;\n };\n var REGEXP_DECIMALS = /\\.\\d*(?:0|9){12}\\d*$/;\n /**\n * Normalize decimal number.\n * Check out {@link https://0.30000000000000004.com/}\n * @param {number} value - The value to normalize.\n * @param {number} [times=100000000000] - The times for normalizing.\n * @returns {number} Returns the normalized number.\n */\n\n function normalizeDecimalNumber(value) {\n var times = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100000000000;\n return REGEXP_DECIMALS.test(value) ? Math.round(value * times) / times : value;\n }\n var REGEXP_SUFFIX = /^width|height|left|top|marginLeft|marginTop$/;\n /**\n * Apply styles to the given element.\n * @param {Element} element - The target element.\n * @param {Object} styles - The styles for applying.\n */\n\n function setStyle(element, styles) {\n var style = element.style;\n forEach(styles, function (value, property) {\n if (REGEXP_SUFFIX.test(property) && isNumber(value)) {\n value = \"\".concat(value, \"px\");\n }\n\n style[property] = value;\n });\n }\n /**\n * Check if the given element has a special class.\n * @param {Element} element - The element to check.\n * @param {string} value - The class to search.\n * @returns {boolean} Returns `true` if the special class was found.\n */\n\n function hasClass(element, value) {\n return element.classList ? element.classList.contains(value) : element.className.indexOf(value) > -1;\n }\n /**\n * Add classes to the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be added.\n */\n\n function addClass(element, value) {\n if (!value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n addClass(elem, value);\n });\n return;\n }\n\n if (element.classList) {\n element.classList.add(value);\n return;\n }\n\n var className = element.className.trim();\n\n if (!className) {\n element.className = value;\n } else if (className.indexOf(value) < 0) {\n element.className = \"\".concat(className, \" \").concat(value);\n }\n }\n /**\n * Remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be removed.\n */\n\n function removeClass(element, value) {\n if (!value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n removeClass(elem, value);\n });\n return;\n }\n\n if (element.classList) {\n element.classList.remove(value);\n return;\n }\n\n if (element.className.indexOf(value) >= 0) {\n element.className = element.className.replace(value, '');\n }\n }\n /**\n * Add or remove classes from the given element.\n * @param {Element} element - The target element.\n * @param {string} value - The classes to be toggled.\n * @param {boolean} added - Add only.\n */\n\n function toggleClass(element, value, added) {\n if (!value) {\n return;\n }\n\n if (isNumber(element.length)) {\n forEach(element, function (elem) {\n toggleClass(elem, value, added);\n });\n return;\n } // IE10-11 doesn't support the second parameter of `classList.toggle`\n\n\n if (added) {\n addClass(element, value);\n } else {\n removeClass(element, value);\n }\n }\n var REGEXP_CAMEL_CASE = /([a-z\\d])([A-Z])/g;\n /**\n * Transform the given string from camelCase to kebab-case\n * @param {string} value - The value to transform.\n * @returns {string} The transformed value.\n */\n\n function toParamCase(value) {\n return value.replace(REGEXP_CAMEL_CASE, '$1-$2').toLowerCase();\n }\n /**\n * Get data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to get.\n * @returns {string} The data value.\n */\n\n function getData(element, name) {\n if (isObject(element[name])) {\n return element[name];\n }\n\n if (element.dataset) {\n return element.dataset[name];\n }\n\n return element.getAttribute(\"data-\".concat(toParamCase(name)));\n }\n /**\n * Set data to the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to set.\n * @param {string} data - The data value.\n */\n\n function setData(element, name, data) {\n if (isObject(data)) {\n element[name] = data;\n } else if (element.dataset) {\n element.dataset[name] = data;\n } else {\n element.setAttribute(\"data-\".concat(toParamCase(name)), data);\n }\n }\n /**\n * Remove data from the given element.\n * @param {Element} element - The target element.\n * @param {string} name - The data key to remove.\n */\n\n function removeData(element, name) {\n if (isObject(element[name])) {\n try {\n delete element[name];\n } catch (error) {\n element[name] = undefined;\n }\n } else if (element.dataset) {\n // #128 Safari not allows to delete dataset property\n try {\n delete element.dataset[name];\n } catch (error) {\n element.dataset[name] = undefined;\n }\n } else {\n element.removeAttribute(\"data-\".concat(toParamCase(name)));\n }\n }\n var REGEXP_SPACES = /\\s\\s*/;\n\n var onceSupported = function () {\n var supported = false;\n\n if (IS_BROWSER) {\n var once = false;\n\n var listener = function listener() {};\n\n var options = Object.defineProperty({}, 'once', {\n get: function get() {\n supported = true;\n return once;\n },\n\n /**\n * This setter can fix a `TypeError` in strict mode\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only}\n * @param {boolean} value - The value to set\n */\n set: function set(value) {\n once = value;\n }\n });\n WINDOW.addEventListener('test', listener, options);\n WINDOW.removeEventListener('test', listener, options);\n }\n\n return supported;\n }();\n /**\n * Remove event listener from the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\n\n function removeListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (!onceSupported) {\n var listeners = element.listeners;\n\n if (listeners && listeners[event] && listeners[event][listener]) {\n handler = listeners[event][listener];\n delete listeners[event][listener];\n\n if (Object.keys(listeners[event]).length === 0) {\n delete listeners[event];\n }\n\n if (Object.keys(listeners).length === 0) {\n delete element.listeners;\n }\n }\n }\n\n element.removeEventListener(event, handler, options);\n });\n }\n /**\n * Add event listener to the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Function} listener - The event listener.\n * @param {Object} options - The event options.\n */\n\n function addListener(element, type, listener) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _handler = listener;\n type.trim().split(REGEXP_SPACES).forEach(function (event) {\n if (options.once && !onceSupported) {\n var _element$listeners = element.listeners,\n listeners = _element$listeners === void 0 ? {} : _element$listeners;\n\n _handler = function handler() {\n delete listeners[event][listener];\n element.removeEventListener(event, _handler, options);\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n listener.apply(element, args);\n };\n\n if (!listeners[event]) {\n listeners[event] = {};\n }\n\n if (listeners[event][listener]) {\n element.removeEventListener(event, listeners[event][listener], options);\n }\n\n listeners[event][listener] = _handler;\n element.listeners = listeners;\n }\n\n element.addEventListener(event, _handler, options);\n });\n }\n /**\n * Dispatch event on the target element.\n * @param {Element} element - The event target.\n * @param {string} type - The event type(s).\n * @param {Object} data - The additional event data.\n * @returns {boolean} Indicate if the event is default prevented or not.\n */\n\n function dispatchEvent(element, type, data) {\n var event; // Event and CustomEvent on IE9-11 are global objects, not constructors\n\n if (isFunction(Event) && isFunction(CustomEvent)) {\n event = new CustomEvent(type, {\n detail: data,\n bubbles: true,\n cancelable: true\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(type, true, true, data);\n }\n\n return element.dispatchEvent(event);\n }\n /**\n * Get the offset base on the document.\n * @param {Element} element - The target element.\n * @returns {Object} The offset data.\n */\n\n function getOffset(element) {\n var box = element.getBoundingClientRect();\n return {\n left: box.left + (window.pageXOffset - document.documentElement.clientLeft),\n top: box.top + (window.pageYOffset - document.documentElement.clientTop)\n };\n }\n var location = WINDOW.location;\n var REGEXP_ORIGINS = /^(\\w+:)\\/\\/([^:/?#]*):?(\\d*)/i;\n /**\n * Check if the given URL is a cross origin URL.\n * @param {string} url - The target URL.\n * @returns {boolean} Returns `true` if the given URL is a cross origin URL, else `false`.\n */\n\n function isCrossOriginURL(url) {\n var parts = url.match(REGEXP_ORIGINS);\n return parts !== null && (parts[1] !== location.protocol || parts[2] !== location.hostname || parts[3] !== location.port);\n }\n /**\n * Add timestamp to the given URL.\n * @param {string} url - The target URL.\n * @returns {string} The result URL.\n */\n\n function addTimestamp(url) {\n var timestamp = \"timestamp=\".concat(new Date().getTime());\n return url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp;\n }\n /**\n * Get transforms base on the given object.\n * @param {Object} obj - The target object.\n * @returns {string} A string contains transform values.\n */\n\n function getTransforms(_ref) {\n var rotate = _ref.rotate,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n translateX = _ref.translateX,\n translateY = _ref.translateY;\n var values = [];\n\n if (isNumber(translateX) && translateX !== 0) {\n values.push(\"translateX(\".concat(translateX, \"px)\"));\n }\n\n if (isNumber(translateY) && translateY !== 0) {\n values.push(\"translateY(\".concat(translateY, \"px)\"));\n } // Rotate should come first before scale to match orientation transform\n\n\n if (isNumber(rotate) && rotate !== 0) {\n values.push(\"rotate(\".concat(rotate, \"deg)\"));\n }\n\n if (isNumber(scaleX) && scaleX !== 1) {\n values.push(\"scaleX(\".concat(scaleX, \")\"));\n }\n\n if (isNumber(scaleY) && scaleY !== 1) {\n values.push(\"scaleY(\".concat(scaleY, \")\"));\n }\n\n var transform = values.length ? values.join(' ') : 'none';\n return {\n WebkitTransform: transform,\n msTransform: transform,\n transform: transform\n };\n }\n /**\n * Get the max ratio of a group of pointers.\n * @param {string} pointers - The target pointers.\n * @returns {number} The result ratio.\n */\n\n function getMaxZoomRatio(pointers) {\n var pointers2 = _objectSpread2({}, pointers);\n\n var maxRatio = 0;\n forEach(pointers, function (pointer, pointerId) {\n delete pointers2[pointerId];\n forEach(pointers2, function (pointer2) {\n var x1 = Math.abs(pointer.startX - pointer2.startX);\n var y1 = Math.abs(pointer.startY - pointer2.startY);\n var x2 = Math.abs(pointer.endX - pointer2.endX);\n var y2 = Math.abs(pointer.endY - pointer2.endY);\n var z1 = Math.sqrt(x1 * x1 + y1 * y1);\n var z2 = Math.sqrt(x2 * x2 + y2 * y2);\n var ratio = (z2 - z1) / z1;\n\n if (Math.abs(ratio) > Math.abs(maxRatio)) {\n maxRatio = ratio;\n }\n });\n });\n return maxRatio;\n }\n /**\n * Get a pointer from an event object.\n * @param {Object} event - The target event object.\n * @param {boolean} endOnly - Indicates if only returns the end point coordinate or not.\n * @returns {Object} The result pointer contains start and/or end point coordinates.\n */\n\n function getPointer(_ref2, endOnly) {\n var pageX = _ref2.pageX,\n pageY = _ref2.pageY;\n var end = {\n endX: pageX,\n endY: pageY\n };\n return endOnly ? end : _objectSpread2({\n startX: pageX,\n startY: pageY\n }, end);\n }\n /**\n * Get the center point coordinate of a group of pointers.\n * @param {Object} pointers - The target pointers.\n * @returns {Object} The center point coordinate.\n */\n\n function getPointersCenter(pointers) {\n var pageX = 0;\n var pageY = 0;\n var count = 0;\n forEach(pointers, function (_ref3) {\n var startX = _ref3.startX,\n startY = _ref3.startY;\n pageX += startX;\n pageY += startY;\n count += 1;\n });\n pageX /= count;\n pageY /= count;\n return {\n pageX: pageX,\n pageY: pageY\n };\n }\n /**\n * Get the max sizes in a rectangle under the given aspect ratio.\n * @param {Object} data - The original sizes.\n * @param {string} [type='contain'] - The adjust type.\n * @returns {Object} The result sizes.\n */\n\n function getAdjustedSizes(_ref4) // or 'cover'\n {\n var aspectRatio = _ref4.aspectRatio,\n height = _ref4.height,\n width = _ref4.width;\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'contain';\n var isValidWidth = isPositiveNumber(width);\n var isValidHeight = isPositiveNumber(height);\n\n if (isValidWidth && isValidHeight) {\n var adjustedWidth = height * aspectRatio;\n\n if (type === 'contain' && adjustedWidth > width || type === 'cover' && adjustedWidth < width) {\n height = width / aspectRatio;\n } else {\n width = height * aspectRatio;\n }\n } else if (isValidWidth) {\n height = width / aspectRatio;\n } else if (isValidHeight) {\n width = height * aspectRatio;\n }\n\n return {\n width: width,\n height: height\n };\n }\n /**\n * Get the new sizes of a rectangle after rotated.\n * @param {Object} data - The original sizes.\n * @returns {Object} The result sizes.\n */\n\n function getRotatedSizes(_ref5) {\n var width = _ref5.width,\n height = _ref5.height,\n degree = _ref5.degree;\n degree = Math.abs(degree) % 180;\n\n if (degree === 90) {\n return {\n width: height,\n height: width\n };\n }\n\n var arc = degree % 90 * Math.PI / 180;\n var sinArc = Math.sin(arc);\n var cosArc = Math.cos(arc);\n var newWidth = width * cosArc + height * sinArc;\n var newHeight = width * sinArc + height * cosArc;\n return degree > 90 ? {\n width: newHeight,\n height: newWidth\n } : {\n width: newWidth,\n height: newHeight\n };\n }\n /**\n * Get a canvas which drew the given image.\n * @param {HTMLImageElement} image - The image for drawing.\n * @param {Object} imageData - The image data.\n * @param {Object} canvasData - The canvas data.\n * @param {Object} options - The options.\n * @returns {HTMLCanvasElement} The result canvas.\n */\n\n function getSourceCanvas(image, _ref6, _ref7, _ref8) {\n var imageAspectRatio = _ref6.aspectRatio,\n imageNaturalWidth = _ref6.naturalWidth,\n imageNaturalHeight = _ref6.naturalHeight,\n _ref6$rotate = _ref6.rotate,\n rotate = _ref6$rotate === void 0 ? 0 : _ref6$rotate,\n _ref6$scaleX = _ref6.scaleX,\n scaleX = _ref6$scaleX === void 0 ? 1 : _ref6$scaleX,\n _ref6$scaleY = _ref6.scaleY,\n scaleY = _ref6$scaleY === void 0 ? 1 : _ref6$scaleY;\n var aspectRatio = _ref7.aspectRatio,\n naturalWidth = _ref7.naturalWidth,\n naturalHeight = _ref7.naturalHeight;\n var _ref8$fillColor = _ref8.fillColor,\n fillColor = _ref8$fillColor === void 0 ? 'transparent' : _ref8$fillColor,\n _ref8$imageSmoothingE = _ref8.imageSmoothingEnabled,\n imageSmoothingEnabled = _ref8$imageSmoothingE === void 0 ? true : _ref8$imageSmoothingE,\n _ref8$imageSmoothingQ = _ref8.imageSmoothingQuality,\n imageSmoothingQuality = _ref8$imageSmoothingQ === void 0 ? 'low' : _ref8$imageSmoothingQ,\n _ref8$maxWidth = _ref8.maxWidth,\n maxWidth = _ref8$maxWidth === void 0 ? Infinity : _ref8$maxWidth,\n _ref8$maxHeight = _ref8.maxHeight,\n maxHeight = _ref8$maxHeight === void 0 ? Infinity : _ref8$maxHeight,\n _ref8$minWidth = _ref8.minWidth,\n minWidth = _ref8$minWidth === void 0 ? 0 : _ref8$minWidth,\n _ref8$minHeight = _ref8.minHeight,\n minHeight = _ref8$minHeight === void 0 ? 0 : _ref8$minHeight;\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var maxSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: maxWidth,\n height: maxHeight\n });\n var minSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n var width = Math.min(maxSizes.width, Math.max(minSizes.width, naturalWidth));\n var height = Math.min(maxSizes.height, Math.max(minSizes.height, naturalHeight)); // Note: should always use image's natural sizes for drawing as\n // imageData.naturalWidth === canvasData.naturalHeight when rotate % 180 === 90\n\n var destMaxSizes = getAdjustedSizes({\n aspectRatio: imageAspectRatio,\n width: maxWidth,\n height: maxHeight\n });\n var destMinSizes = getAdjustedSizes({\n aspectRatio: imageAspectRatio,\n width: minWidth,\n height: minHeight\n }, 'cover');\n var destWidth = Math.min(destMaxSizes.width, Math.max(destMinSizes.width, imageNaturalWidth));\n var destHeight = Math.min(destMaxSizes.height, Math.max(destMinSizes.height, imageNaturalHeight));\n var params = [-destWidth / 2, -destHeight / 2, destWidth, destHeight];\n canvas.width = normalizeDecimalNumber(width);\n canvas.height = normalizeDecimalNumber(height);\n context.fillStyle = fillColor;\n context.fillRect(0, 0, width, height);\n context.save();\n context.translate(width / 2, height / 2);\n context.rotate(rotate * Math.PI / 180);\n context.scale(scaleX, scaleY);\n context.imageSmoothingEnabled = imageSmoothingEnabled;\n context.imageSmoothingQuality = imageSmoothingQuality;\n context.drawImage.apply(context, [image].concat(_toConsumableArray(params.map(function (param) {\n return Math.floor(normalizeDecimalNumber(param));\n }))));\n context.restore();\n return canvas;\n }\n var fromCharCode = String.fromCharCode;\n /**\n * Get string from char code in data view.\n * @param {DataView} dataView - The data view for read.\n * @param {number} start - The start index.\n * @param {number} length - The read length.\n * @returns {string} The read result.\n */\n\n function getStringFromCharCode(dataView, start, length) {\n var str = '';\n length += start;\n\n for (var i = start; i < length; i += 1) {\n str += fromCharCode(dataView.getUint8(i));\n }\n\n return str;\n }\n var REGEXP_DATA_URL_HEAD = /^data:.*,/;\n /**\n * Transform Data URL to array buffer.\n * @param {string} dataURL - The Data URL to transform.\n * @returns {ArrayBuffer} The result array buffer.\n */\n\n function dataURLToArrayBuffer(dataURL) {\n var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');\n var binary = atob(base64);\n var arrayBuffer = new ArrayBuffer(binary.length);\n var uint8 = new Uint8Array(arrayBuffer);\n forEach(uint8, function (value, i) {\n uint8[i] = binary.charCodeAt(i);\n });\n return arrayBuffer;\n }\n /**\n * Transform array buffer to Data URL.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to transform.\n * @param {string} mimeType - The mime type of the Data URL.\n * @returns {string} The result Data URL.\n */\n\n function arrayBufferToDataURL(arrayBuffer, mimeType) {\n var chunks = []; // Chunk Typed Array for better performance (#435)\n\n var chunkSize = 8192;\n var uint8 = new Uint8Array(arrayBuffer);\n\n while (uint8.length > 0) {\n // XXX: Babel's `toConsumableArray` helper will throw error in IE or Safari 9\n // eslint-disable-next-line prefer-spread\n chunks.push(fromCharCode.apply(null, toArray(uint8.subarray(0, chunkSize))));\n uint8 = uint8.subarray(chunkSize);\n }\n\n return \"data:\".concat(mimeType, \";base64,\").concat(btoa(chunks.join('')));\n }\n /**\n * Get orientation value from given array buffer.\n * @param {ArrayBuffer} arrayBuffer - The array buffer to read.\n * @returns {number} The read orientation value.\n */\n\n function resetAndGetOrientation(arrayBuffer) {\n var dataView = new DataView(arrayBuffer);\n var orientation; // Ignores range error when the image does not have correct Exif information\n\n try {\n var littleEndian;\n var app1Start;\n var ifdStart; // Only handle JPEG image (start by 0xFFD8)\n\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\n var length = dataView.byteLength;\n var offset = 2;\n\n while (offset + 1 < length) {\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\n app1Start = offset;\n break;\n }\n\n offset += 1;\n }\n }\n\n if (app1Start) {\n var exifIDCode = app1Start + 4;\n var tiffOffset = app1Start + 10;\n\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\n var endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n\n if (littleEndian || endianness === 0x4D4D\n /* bigEndian */\n ) {\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\n var firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n\n if (firstIFDOffset >= 0x00000008) {\n ifdStart = tiffOffset + firstIFDOffset;\n }\n }\n }\n }\n }\n\n if (ifdStart) {\n var _length = dataView.getUint16(ifdStart, littleEndian);\n\n var _offset;\n\n var i;\n\n for (i = 0; i < _length; i += 1) {\n _offset = ifdStart + i * 12 + 2;\n\n if (dataView.getUint16(_offset, littleEndian) === 0x0112\n /* Orientation */\n ) {\n // 8 is the offset of the current tag's value\n _offset += 8; // Get the original orientation value\n\n orientation = dataView.getUint16(_offset, littleEndian); // Override the orientation with its default value\n\n dataView.setUint16(_offset, 1, littleEndian);\n break;\n }\n }\n }\n } catch (error) {\n orientation = 1;\n }\n\n return orientation;\n }\n /**\n * Parse Exif Orientation value.\n * @param {number} orientation - The orientation to parse.\n * @returns {Object} The parsed result.\n */\n\n function parseOrientation(orientation) {\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n\n switch (orientation) {\n // Flip horizontal\n case 2:\n scaleX = -1;\n break;\n // Rotate left 180°\n\n case 3:\n rotate = -180;\n break;\n // Flip vertical\n\n case 4:\n scaleY = -1;\n break;\n // Flip vertical and rotate right 90°\n\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n // Rotate right 90°\n\n case 6:\n rotate = 90;\n break;\n // Flip horizontal and rotate right 90°\n\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n // Rotate left 90°\n\n case 8:\n rotate = -90;\n break;\n }\n\n return {\n rotate: rotate,\n scaleX: scaleX,\n scaleY: scaleY\n };\n }\n\n var render = {\n render: function render() {\n this.initContainer();\n this.initCanvas();\n this.initCropBox();\n this.renderCanvas();\n\n if (this.cropped) {\n this.renderCropBox();\n }\n },\n initContainer: function initContainer() {\n var element = this.element,\n options = this.options,\n container = this.container,\n cropper = this.cropper;\n var minWidth = Number(options.minContainerWidth);\n var minHeight = Number(options.minContainerHeight);\n addClass(cropper, CLASS_HIDDEN);\n removeClass(element, CLASS_HIDDEN);\n var containerData = {\n width: Math.max(container.offsetWidth, minWidth >= 0 ? minWidth : MIN_CONTAINER_WIDTH),\n height: Math.max(container.offsetHeight, minHeight >= 0 ? minHeight : MIN_CONTAINER_HEIGHT)\n };\n this.containerData = containerData;\n setStyle(cropper, {\n width: containerData.width,\n height: containerData.height\n });\n addClass(element, CLASS_HIDDEN);\n removeClass(cropper, CLASS_HIDDEN);\n },\n // Canvas (image wrapper)\n initCanvas: function initCanvas() {\n var containerData = this.containerData,\n imageData = this.imageData;\n var viewMode = this.options.viewMode;\n var rotated = Math.abs(imageData.rotate) % 180 === 90;\n var naturalWidth = rotated ? imageData.naturalHeight : imageData.naturalWidth;\n var naturalHeight = rotated ? imageData.naturalWidth : imageData.naturalHeight;\n var aspectRatio = naturalWidth / naturalHeight;\n var canvasWidth = containerData.width;\n var canvasHeight = containerData.height;\n\n if (containerData.height * aspectRatio > containerData.width) {\n if (viewMode === 3) {\n canvasWidth = containerData.height * aspectRatio;\n } else {\n canvasHeight = containerData.width / aspectRatio;\n }\n } else if (viewMode === 3) {\n canvasHeight = containerData.width / aspectRatio;\n } else {\n canvasWidth = containerData.height * aspectRatio;\n }\n\n var canvasData = {\n aspectRatio: aspectRatio,\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n width: canvasWidth,\n height: canvasHeight\n };\n this.canvasData = canvasData;\n this.limited = viewMode === 1 || viewMode === 2;\n this.limitCanvas(true, true);\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n canvasData.left = (containerData.width - canvasData.width) / 2;\n canvasData.top = (containerData.height - canvasData.height) / 2;\n canvasData.oldLeft = canvasData.left;\n canvasData.oldTop = canvasData.top;\n this.initialCanvasData = assign({}, canvasData);\n },\n limitCanvas: function limitCanvas(sizeLimited, positionLimited) {\n var options = this.options,\n containerData = this.containerData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var viewMode = options.viewMode;\n var aspectRatio = canvasData.aspectRatio;\n var cropped = this.cropped && cropBoxData;\n\n if (sizeLimited) {\n var minCanvasWidth = Number(options.minCanvasWidth) || 0;\n var minCanvasHeight = Number(options.minCanvasHeight) || 0;\n\n if (viewMode > 1) {\n minCanvasWidth = Math.max(minCanvasWidth, containerData.width);\n minCanvasHeight = Math.max(minCanvasHeight, containerData.height);\n\n if (viewMode === 3) {\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n minCanvasWidth = minCanvasHeight * aspectRatio;\n } else {\n minCanvasHeight = minCanvasWidth / aspectRatio;\n }\n }\n } else if (viewMode > 0) {\n if (minCanvasWidth) {\n minCanvasWidth = Math.max(minCanvasWidth, cropped ? cropBoxData.width : 0);\n } else if (minCanvasHeight) {\n minCanvasHeight = Math.max(minCanvasHeight, cropped ? cropBoxData.height : 0);\n } else if (cropped) {\n minCanvasWidth = cropBoxData.width;\n minCanvasHeight = cropBoxData.height;\n\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\n minCanvasWidth = minCanvasHeight * aspectRatio;\n } else {\n minCanvasHeight = minCanvasWidth / aspectRatio;\n }\n }\n }\n\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: minCanvasWidth,\n height: minCanvasHeight\n });\n\n minCanvasWidth = _getAdjustedSizes.width;\n minCanvasHeight = _getAdjustedSizes.height;\n canvasData.minWidth = minCanvasWidth;\n canvasData.minHeight = minCanvasHeight;\n canvasData.maxWidth = Infinity;\n canvasData.maxHeight = Infinity;\n }\n\n if (positionLimited) {\n if (viewMode > (cropped ? 0 : 1)) {\n var newCanvasLeft = containerData.width - canvasData.width;\n var newCanvasTop = containerData.height - canvasData.height;\n canvasData.minLeft = Math.min(0, newCanvasLeft);\n canvasData.minTop = Math.min(0, newCanvasTop);\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\n canvasData.maxTop = Math.max(0, newCanvasTop);\n\n if (cropped && this.limited) {\n canvasData.minLeft = Math.min(cropBoxData.left, cropBoxData.left + (cropBoxData.width - canvasData.width));\n canvasData.minTop = Math.min(cropBoxData.top, cropBoxData.top + (cropBoxData.height - canvasData.height));\n canvasData.maxLeft = cropBoxData.left;\n canvasData.maxTop = cropBoxData.top;\n\n if (viewMode === 2) {\n if (canvasData.width >= containerData.width) {\n canvasData.minLeft = Math.min(0, newCanvasLeft);\n canvasData.maxLeft = Math.max(0, newCanvasLeft);\n }\n\n if (canvasData.height >= containerData.height) {\n canvasData.minTop = Math.min(0, newCanvasTop);\n canvasData.maxTop = Math.max(0, newCanvasTop);\n }\n }\n }\n } else {\n canvasData.minLeft = -canvasData.width;\n canvasData.minTop = -canvasData.height;\n canvasData.maxLeft = containerData.width;\n canvasData.maxTop = containerData.height;\n }\n }\n },\n renderCanvas: function renderCanvas(changed, transformed) {\n var canvasData = this.canvasData,\n imageData = this.imageData;\n\n if (transformed) {\n var _getRotatedSizes = getRotatedSizes({\n width: imageData.naturalWidth * Math.abs(imageData.scaleX || 1),\n height: imageData.naturalHeight * Math.abs(imageData.scaleY || 1),\n degree: imageData.rotate || 0\n }),\n naturalWidth = _getRotatedSizes.width,\n naturalHeight = _getRotatedSizes.height;\n\n var width = canvasData.width * (naturalWidth / canvasData.naturalWidth);\n var height = canvasData.height * (naturalHeight / canvasData.naturalHeight);\n canvasData.left -= (width - canvasData.width) / 2;\n canvasData.top -= (height - canvasData.height) / 2;\n canvasData.width = width;\n canvasData.height = height;\n canvasData.aspectRatio = naturalWidth / naturalHeight;\n canvasData.naturalWidth = naturalWidth;\n canvasData.naturalHeight = naturalHeight;\n this.limitCanvas(true, false);\n }\n\n if (canvasData.width > canvasData.maxWidth || canvasData.width < canvasData.minWidth) {\n canvasData.left = canvasData.oldLeft;\n }\n\n if (canvasData.height > canvasData.maxHeight || canvasData.height < canvasData.minHeight) {\n canvasData.top = canvasData.oldTop;\n }\n\n canvasData.width = Math.min(Math.max(canvasData.width, canvasData.minWidth), canvasData.maxWidth);\n canvasData.height = Math.min(Math.max(canvasData.height, canvasData.minHeight), canvasData.maxHeight);\n this.limitCanvas(false, true);\n canvasData.left = Math.min(Math.max(canvasData.left, canvasData.minLeft), canvasData.maxLeft);\n canvasData.top = Math.min(Math.max(canvasData.top, canvasData.minTop), canvasData.maxTop);\n canvasData.oldLeft = canvasData.left;\n canvasData.oldTop = canvasData.top;\n setStyle(this.canvas, assign({\n width: canvasData.width,\n height: canvasData.height\n }, getTransforms({\n translateX: canvasData.left,\n translateY: canvasData.top\n })));\n this.renderImage(changed);\n\n if (this.cropped && this.limited) {\n this.limitCropBox(true, true);\n }\n },\n renderImage: function renderImage(changed) {\n var canvasData = this.canvasData,\n imageData = this.imageData;\n var width = imageData.naturalWidth * (canvasData.width / canvasData.naturalWidth);\n var height = imageData.naturalHeight * (canvasData.height / canvasData.naturalHeight);\n assign(imageData, {\n width: width,\n height: height,\n left: (canvasData.width - width) / 2,\n top: (canvasData.height - height) / 2\n });\n setStyle(this.image, assign({\n width: imageData.width,\n height: imageData.height\n }, getTransforms(assign({\n translateX: imageData.left,\n translateY: imageData.top\n }, imageData))));\n\n if (changed) {\n this.output();\n }\n },\n initCropBox: function initCropBox() {\n var options = this.options,\n canvasData = this.canvasData;\n var aspectRatio = options.aspectRatio || options.initialAspectRatio;\n var autoCropArea = Number(options.autoCropArea) || 0.8;\n var cropBoxData = {\n width: canvasData.width,\n height: canvasData.height\n };\n\n if (aspectRatio) {\n if (canvasData.height * aspectRatio > canvasData.width) {\n cropBoxData.height = cropBoxData.width / aspectRatio;\n } else {\n cropBoxData.width = cropBoxData.height * aspectRatio;\n }\n }\n\n this.cropBoxData = cropBoxData;\n this.limitCropBox(true, true); // Initialize auto crop area\n\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight); // The width/height of auto crop area must large than \"minWidth/Height\"\n\n cropBoxData.width = Math.max(cropBoxData.minWidth, cropBoxData.width * autoCropArea);\n cropBoxData.height = Math.max(cropBoxData.minHeight, cropBoxData.height * autoCropArea);\n cropBoxData.left = canvasData.left + (canvasData.width - cropBoxData.width) / 2;\n cropBoxData.top = canvasData.top + (canvasData.height - cropBoxData.height) / 2;\n cropBoxData.oldLeft = cropBoxData.left;\n cropBoxData.oldTop = cropBoxData.top;\n this.initialCropBoxData = assign({}, cropBoxData);\n },\n limitCropBox: function limitCropBox(sizeLimited, positionLimited) {\n var options = this.options,\n containerData = this.containerData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData,\n limited = this.limited;\n var aspectRatio = options.aspectRatio;\n\n if (sizeLimited) {\n var minCropBoxWidth = Number(options.minCropBoxWidth) || 0;\n var minCropBoxHeight = Number(options.minCropBoxHeight) || 0;\n var maxCropBoxWidth = limited ? Math.min(containerData.width, canvasData.width, canvasData.width + canvasData.left, containerData.width - canvasData.left) : containerData.width;\n var maxCropBoxHeight = limited ? Math.min(containerData.height, canvasData.height, canvasData.height + canvasData.top, containerData.height - canvasData.top) : containerData.height; // The min/maxCropBoxWidth/Height must be less than container's width/height\n\n minCropBoxWidth = Math.min(minCropBoxWidth, containerData.width);\n minCropBoxHeight = Math.min(minCropBoxHeight, containerData.height);\n\n if (aspectRatio) {\n if (minCropBoxWidth && minCropBoxHeight) {\n if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\n } else {\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\n }\n } else if (minCropBoxWidth) {\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\n } else if (minCropBoxHeight) {\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\n }\n\n if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {\n maxCropBoxHeight = maxCropBoxWidth / aspectRatio;\n } else {\n maxCropBoxWidth = maxCropBoxHeight * aspectRatio;\n }\n } // The minWidth/Height must be less than maxWidth/Height\n\n\n cropBoxData.minWidth = Math.min(minCropBoxWidth, maxCropBoxWidth);\n cropBoxData.minHeight = Math.min(minCropBoxHeight, maxCropBoxHeight);\n cropBoxData.maxWidth = maxCropBoxWidth;\n cropBoxData.maxHeight = maxCropBoxHeight;\n }\n\n if (positionLimited) {\n if (limited) {\n cropBoxData.minLeft = Math.max(0, canvasData.left);\n cropBoxData.minTop = Math.max(0, canvasData.top);\n cropBoxData.maxLeft = Math.min(containerData.width, canvasData.left + canvasData.width) - cropBoxData.width;\n cropBoxData.maxTop = Math.min(containerData.height, canvasData.top + canvasData.height) - cropBoxData.height;\n } else {\n cropBoxData.minLeft = 0;\n cropBoxData.minTop = 0;\n cropBoxData.maxLeft = containerData.width - cropBoxData.width;\n cropBoxData.maxTop = containerData.height - cropBoxData.height;\n }\n }\n },\n renderCropBox: function renderCropBox() {\n var options = this.options,\n containerData = this.containerData,\n cropBoxData = this.cropBoxData;\n\n if (cropBoxData.width > cropBoxData.maxWidth || cropBoxData.width < cropBoxData.minWidth) {\n cropBoxData.left = cropBoxData.oldLeft;\n }\n\n if (cropBoxData.height > cropBoxData.maxHeight || cropBoxData.height < cropBoxData.minHeight) {\n cropBoxData.top = cropBoxData.oldTop;\n }\n\n cropBoxData.width = Math.min(Math.max(cropBoxData.width, cropBoxData.minWidth), cropBoxData.maxWidth);\n cropBoxData.height = Math.min(Math.max(cropBoxData.height, cropBoxData.minHeight), cropBoxData.maxHeight);\n this.limitCropBox(false, true);\n cropBoxData.left = Math.min(Math.max(cropBoxData.left, cropBoxData.minLeft), cropBoxData.maxLeft);\n cropBoxData.top = Math.min(Math.max(cropBoxData.top, cropBoxData.minTop), cropBoxData.maxTop);\n cropBoxData.oldLeft = cropBoxData.left;\n cropBoxData.oldTop = cropBoxData.top;\n\n if (options.movable && options.cropBoxMovable) {\n // Turn to move the canvas when the crop box is equal to the container\n setData(this.face, DATA_ACTION, cropBoxData.width >= containerData.width && cropBoxData.height >= containerData.height ? ACTION_MOVE : ACTION_ALL);\n }\n\n setStyle(this.cropBox, assign({\n width: cropBoxData.width,\n height: cropBoxData.height\n }, getTransforms({\n translateX: cropBoxData.left,\n translateY: cropBoxData.top\n })));\n\n if (this.cropped && this.limited) {\n this.limitCanvas(true, true);\n }\n\n if (!this.disabled) {\n this.output();\n }\n },\n output: function output() {\n this.preview();\n dispatchEvent(this.element, EVENT_CROP, this.getData());\n }\n };\n\n var preview = {\n initPreview: function initPreview() {\n var element = this.element,\n crossOrigin = this.crossOrigin;\n var preview = this.options.preview;\n var url = crossOrigin ? this.crossOriginUrl : this.url;\n var alt = element.alt || 'The image to preview';\n var image = document.createElement('img');\n\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n\n image.src = url;\n image.alt = alt;\n this.viewBox.appendChild(image);\n this.viewBoxImage = image;\n\n if (!preview) {\n return;\n }\n\n var previews = preview;\n\n if (typeof preview === 'string') {\n previews = element.ownerDocument.querySelectorAll(preview);\n } else if (preview.querySelector) {\n previews = [preview];\n }\n\n this.previews = previews;\n forEach(previews, function (el) {\n var img = document.createElement('img'); // Save the original size for recover\n\n setData(el, DATA_PREVIEW, {\n width: el.offsetWidth,\n height: el.offsetHeight,\n html: el.innerHTML\n });\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n\n img.src = url;\n img.alt = alt;\n /**\n * Override img element styles\n * Add `display:block` to avoid margin top issue\n * Add `height:auto` to override `height` attribute on IE8\n * (Occur only when margin-top <= -height)\n */\n\n img.style.cssText = 'display:block;' + 'width:100%;' + 'height:auto;' + 'min-width:0!important;' + 'min-height:0!important;' + 'max-width:none!important;' + 'max-height:none!important;' + 'image-orientation:0deg!important;\"';\n el.innerHTML = '';\n el.appendChild(img);\n });\n },\n resetPreview: function resetPreview() {\n forEach(this.previews, function (element) {\n var data = getData(element, DATA_PREVIEW);\n setStyle(element, {\n width: data.width,\n height: data.height\n });\n element.innerHTML = data.html;\n removeData(element, DATA_PREVIEW);\n });\n },\n preview: function preview() {\n var imageData = this.imageData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var cropBoxWidth = cropBoxData.width,\n cropBoxHeight = cropBoxData.height;\n var width = imageData.width,\n height = imageData.height;\n var left = cropBoxData.left - canvasData.left - imageData.left;\n var top = cropBoxData.top - canvasData.top - imageData.top;\n\n if (!this.cropped || this.disabled) {\n return;\n }\n\n setStyle(this.viewBoxImage, assign({\n width: width,\n height: height\n }, getTransforms(assign({\n translateX: -left,\n translateY: -top\n }, imageData))));\n forEach(this.previews, function (element) {\n var data = getData(element, DATA_PREVIEW);\n var originalWidth = data.width;\n var originalHeight = data.height;\n var newWidth = originalWidth;\n var newHeight = originalHeight;\n var ratio = 1;\n\n if (cropBoxWidth) {\n ratio = originalWidth / cropBoxWidth;\n newHeight = cropBoxHeight * ratio;\n }\n\n if (cropBoxHeight && newHeight > originalHeight) {\n ratio = originalHeight / cropBoxHeight;\n newWidth = cropBoxWidth * ratio;\n newHeight = originalHeight;\n }\n\n setStyle(element, {\n width: newWidth,\n height: newHeight\n });\n setStyle(element.getElementsByTagName('img')[0], assign({\n width: width * ratio,\n height: height * ratio\n }, getTransforms(assign({\n translateX: -left * ratio,\n translateY: -top * ratio\n }, imageData))));\n });\n }\n };\n\n var events = {\n bind: function bind() {\n var element = this.element,\n options = this.options,\n cropper = this.cropper;\n\n if (isFunction(options.cropstart)) {\n addListener(element, EVENT_CROP_START, options.cropstart);\n }\n\n if (isFunction(options.cropmove)) {\n addListener(element, EVENT_CROP_MOVE, options.cropmove);\n }\n\n if (isFunction(options.cropend)) {\n addListener(element, EVENT_CROP_END, options.cropend);\n }\n\n if (isFunction(options.crop)) {\n addListener(element, EVENT_CROP, options.crop);\n }\n\n if (isFunction(options.zoom)) {\n addListener(element, EVENT_ZOOM, options.zoom);\n }\n\n addListener(cropper, EVENT_POINTER_DOWN, this.onCropStart = this.cropStart.bind(this));\n\n if (options.zoomable && options.zoomOnWheel) {\n addListener(cropper, EVENT_WHEEL, this.onWheel = this.wheel.bind(this), {\n passive: false,\n capture: true\n });\n }\n\n if (options.toggleDragModeOnDblclick) {\n addListener(cropper, EVENT_DBLCLICK, this.onDblclick = this.dblclick.bind(this));\n }\n\n addListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove = this.cropMove.bind(this));\n addListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd = this.cropEnd.bind(this));\n\n if (options.responsive) {\n addListener(window, EVENT_RESIZE, this.onResize = this.resize.bind(this));\n }\n },\n unbind: function unbind() {\n var element = this.element,\n options = this.options,\n cropper = this.cropper;\n\n if (isFunction(options.cropstart)) {\n removeListener(element, EVENT_CROP_START, options.cropstart);\n }\n\n if (isFunction(options.cropmove)) {\n removeListener(element, EVENT_CROP_MOVE, options.cropmove);\n }\n\n if (isFunction(options.cropend)) {\n removeListener(element, EVENT_CROP_END, options.cropend);\n }\n\n if (isFunction(options.crop)) {\n removeListener(element, EVENT_CROP, options.crop);\n }\n\n if (isFunction(options.zoom)) {\n removeListener(element, EVENT_ZOOM, options.zoom);\n }\n\n removeListener(cropper, EVENT_POINTER_DOWN, this.onCropStart);\n\n if (options.zoomable && options.zoomOnWheel) {\n removeListener(cropper, EVENT_WHEEL, this.onWheel, {\n passive: false,\n capture: true\n });\n }\n\n if (options.toggleDragModeOnDblclick) {\n removeListener(cropper, EVENT_DBLCLICK, this.onDblclick);\n }\n\n removeListener(element.ownerDocument, EVENT_POINTER_MOVE, this.onCropMove);\n removeListener(element.ownerDocument, EVENT_POINTER_UP, this.onCropEnd);\n\n if (options.responsive) {\n removeListener(window, EVENT_RESIZE, this.onResize);\n }\n }\n };\n\n var handlers = {\n resize: function resize() {\n if (this.disabled) {\n return;\n }\n\n var options = this.options,\n container = this.container,\n containerData = this.containerData;\n var ratioX = container.offsetWidth / containerData.width;\n var ratioY = container.offsetHeight / containerData.height;\n var ratio = Math.abs(ratioX - 1) > Math.abs(ratioY - 1) ? ratioX : ratioY; // Resize when width changed or height changed\n\n if (ratio !== 1) {\n var canvasData;\n var cropBoxData;\n\n if (options.restore) {\n canvasData = this.getCanvasData();\n cropBoxData = this.getCropBoxData();\n }\n\n this.render();\n\n if (options.restore) {\n this.setCanvasData(forEach(canvasData, function (n, i) {\n canvasData[i] = n * ratio;\n }));\n this.setCropBoxData(forEach(cropBoxData, function (n, i) {\n cropBoxData[i] = n * ratio;\n }));\n }\n }\n },\n dblclick: function dblclick() {\n if (this.disabled || this.options.dragMode === DRAG_MODE_NONE) {\n return;\n }\n\n this.setDragMode(hasClass(this.dragBox, CLASS_CROP) ? DRAG_MODE_MOVE : DRAG_MODE_CROP);\n },\n wheel: function wheel(event) {\n var _this = this;\n\n var ratio = Number(this.options.wheelZoomRatio) || 0.1;\n var delta = 1;\n\n if (this.disabled) {\n return;\n }\n\n event.preventDefault(); // Limit wheel speed to prevent zoom too fast (#21)\n\n if (this.wheeling) {\n return;\n }\n\n this.wheeling = true;\n setTimeout(function () {\n _this.wheeling = false;\n }, 50);\n\n if (event.deltaY) {\n delta = event.deltaY > 0 ? 1 : -1;\n } else if (event.wheelDelta) {\n delta = -event.wheelDelta / 120;\n } else if (event.detail) {\n delta = event.detail > 0 ? 1 : -1;\n }\n\n this.zoom(-delta * ratio, event);\n },\n cropStart: function cropStart(event) {\n var buttons = event.buttons,\n button = event.button;\n\n if (this.disabled // Handle mouse event and pointer event and ignore touch event\n || (event.type === 'mousedown' || event.type === 'pointerdown' && event.pointerType === 'mouse') && ( // No primary button (Usually the left button)\n isNumber(buttons) && buttons !== 1 || isNumber(button) && button !== 0 // Open context menu\n || event.ctrlKey)) {\n return;\n }\n\n var options = this.options,\n pointers = this.pointers;\n var action;\n\n if (event.changedTouches) {\n // Handle touch event\n forEach(event.changedTouches, function (touch) {\n pointers[touch.identifier] = getPointer(touch);\n });\n } else {\n // Handle mouse event and pointer event\n pointers[event.pointerId || 0] = getPointer(event);\n }\n\n if (Object.keys(pointers).length > 1 && options.zoomable && options.zoomOnTouch) {\n action = ACTION_ZOOM;\n } else {\n action = getData(event.target, DATA_ACTION);\n }\n\n if (!REGEXP_ACTIONS.test(action)) {\n return;\n }\n\n if (dispatchEvent(this.element, EVENT_CROP_START, {\n originalEvent: event,\n action: action\n }) === false) {\n return;\n } // This line is required for preventing page zooming in iOS browsers\n\n\n event.preventDefault();\n this.action = action;\n this.cropping = false;\n\n if (action === ACTION_CROP) {\n this.cropping = true;\n addClass(this.dragBox, CLASS_MODAL);\n }\n },\n cropMove: function cropMove(event) {\n var action = this.action;\n\n if (this.disabled || !action) {\n return;\n }\n\n var pointers = this.pointers;\n event.preventDefault();\n\n if (dispatchEvent(this.element, EVENT_CROP_MOVE, {\n originalEvent: event,\n action: action\n }) === false) {\n return;\n }\n\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n // The first parameter should not be undefined (#432)\n assign(pointers[touch.identifier] || {}, getPointer(touch, true));\n });\n } else {\n assign(pointers[event.pointerId || 0] || {}, getPointer(event, true));\n }\n\n this.change(event);\n },\n cropEnd: function cropEnd(event) {\n if (this.disabled) {\n return;\n }\n\n var action = this.action,\n pointers = this.pointers;\n\n if (event.changedTouches) {\n forEach(event.changedTouches, function (touch) {\n delete pointers[touch.identifier];\n });\n } else {\n delete pointers[event.pointerId || 0];\n }\n\n if (!action) {\n return;\n }\n\n event.preventDefault();\n\n if (!Object.keys(pointers).length) {\n this.action = '';\n }\n\n if (this.cropping) {\n this.cropping = false;\n toggleClass(this.dragBox, CLASS_MODAL, this.cropped && this.options.modal);\n }\n\n dispatchEvent(this.element, EVENT_CROP_END, {\n originalEvent: event,\n action: action\n });\n }\n };\n\n var change = {\n change: function change(event) {\n var options = this.options,\n canvasData = this.canvasData,\n containerData = this.containerData,\n cropBoxData = this.cropBoxData,\n pointers = this.pointers;\n var action = this.action;\n var aspectRatio = options.aspectRatio;\n var left = cropBoxData.left,\n top = cropBoxData.top,\n width = cropBoxData.width,\n height = cropBoxData.height;\n var right = left + width;\n var bottom = top + height;\n var minLeft = 0;\n var minTop = 0;\n var maxWidth = containerData.width;\n var maxHeight = containerData.height;\n var renderable = true;\n var offset; // Locking aspect ratio in \"free mode\" by holding shift key\n\n if (!aspectRatio && event.shiftKey) {\n aspectRatio = width && height ? width / height : 1;\n }\n\n if (this.limited) {\n minLeft = cropBoxData.minLeft;\n minTop = cropBoxData.minTop;\n maxWidth = minLeft + Math.min(containerData.width, canvasData.width, canvasData.left + canvasData.width);\n maxHeight = minTop + Math.min(containerData.height, canvasData.height, canvasData.top + canvasData.height);\n }\n\n var pointer = pointers[Object.keys(pointers)[0]];\n var range = {\n x: pointer.endX - pointer.startX,\n y: pointer.endY - pointer.startY\n };\n\n var check = function check(side) {\n switch (side) {\n case ACTION_EAST:\n if (right + range.x > maxWidth) {\n range.x = maxWidth - right;\n }\n\n break;\n\n case ACTION_WEST:\n if (left + range.x < minLeft) {\n range.x = minLeft - left;\n }\n\n break;\n\n case ACTION_NORTH:\n if (top + range.y < minTop) {\n range.y = minTop - top;\n }\n\n break;\n\n case ACTION_SOUTH:\n if (bottom + range.y > maxHeight) {\n range.y = maxHeight - bottom;\n }\n\n break;\n }\n };\n\n switch (action) {\n // Move crop box\n case ACTION_ALL:\n left += range.x;\n top += range.y;\n break;\n // Resize crop box\n\n case ACTION_EAST:\n if (range.x >= 0 && (right >= maxWidth || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n renderable = false;\n break;\n }\n\n check(ACTION_EAST);\n width += range.x;\n\n if (width < 0) {\n action = ACTION_WEST;\n width = -width;\n left -= width;\n }\n\n if (aspectRatio) {\n height = width / aspectRatio;\n top += (cropBoxData.height - height) / 2;\n }\n\n break;\n\n case ACTION_NORTH:\n if (range.y <= 0 && (top <= minTop || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n renderable = false;\n break;\n }\n\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n\n if (height < 0) {\n action = ACTION_SOUTH;\n height = -height;\n top -= height;\n }\n\n if (aspectRatio) {\n width = height * aspectRatio;\n left += (cropBoxData.width - width) / 2;\n }\n\n break;\n\n case ACTION_WEST:\n if (range.x <= 0 && (left <= minLeft || aspectRatio && (top <= minTop || bottom >= maxHeight))) {\n renderable = false;\n break;\n }\n\n check(ACTION_WEST);\n width -= range.x;\n left += range.x;\n\n if (width < 0) {\n action = ACTION_EAST;\n width = -width;\n left -= width;\n }\n\n if (aspectRatio) {\n height = width / aspectRatio;\n top += (cropBoxData.height - height) / 2;\n }\n\n break;\n\n case ACTION_SOUTH:\n if (range.y >= 0 && (bottom >= maxHeight || aspectRatio && (left <= minLeft || right >= maxWidth))) {\n renderable = false;\n break;\n }\n\n check(ACTION_SOUTH);\n height += range.y;\n\n if (height < 0) {\n action = ACTION_NORTH;\n height = -height;\n top -= height;\n }\n\n if (aspectRatio) {\n width = height * aspectRatio;\n left += (cropBoxData.width - width) / 2;\n }\n\n break;\n\n case ACTION_NORTH_EAST:\n if (aspectRatio) {\n if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {\n renderable = false;\n break;\n }\n\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\n } else {\n check(ACTION_NORTH);\n check(ACTION_EAST);\n\n if (range.x >= 0) {\n if (right < maxWidth) {\n width += range.x;\n } else if (range.y <= 0 && top <= minTop) {\n renderable = false;\n }\n } else {\n width += range.x;\n }\n\n if (range.y <= 0) {\n if (top > minTop) {\n height -= range.y;\n top += range.y;\n }\n } else {\n height -= range.y;\n top += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_SOUTH_WEST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_NORTH_WEST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_SOUTH_EAST;\n height = -height;\n top -= height;\n }\n\n break;\n\n case ACTION_NORTH_WEST:\n if (aspectRatio) {\n if (range.y <= 0 && (top <= minTop || left <= minLeft)) {\n renderable = false;\n break;\n }\n\n check(ACTION_NORTH);\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\n left += cropBoxData.width - width;\n } else {\n check(ACTION_NORTH);\n check(ACTION_WEST);\n\n if (range.x <= 0) {\n if (left > minLeft) {\n width -= range.x;\n left += range.x;\n } else if (range.y <= 0 && top <= minTop) {\n renderable = false;\n }\n } else {\n width -= range.x;\n left += range.x;\n }\n\n if (range.y <= 0) {\n if (top > minTop) {\n height -= range.y;\n top += range.y;\n }\n } else {\n height -= range.y;\n top += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_SOUTH_EAST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_NORTH_EAST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_SOUTH_WEST;\n height = -height;\n top -= height;\n }\n\n break;\n\n case ACTION_SOUTH_WEST:\n if (aspectRatio) {\n if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {\n renderable = false;\n break;\n }\n\n check(ACTION_WEST);\n width -= range.x;\n left += range.x;\n height = width / aspectRatio;\n } else {\n check(ACTION_SOUTH);\n check(ACTION_WEST);\n\n if (range.x <= 0) {\n if (left > minLeft) {\n width -= range.x;\n left += range.x;\n } else if (range.y >= 0 && bottom >= maxHeight) {\n renderable = false;\n }\n } else {\n width -= range.x;\n left += range.x;\n }\n\n if (range.y >= 0) {\n if (bottom < maxHeight) {\n height += range.y;\n }\n } else {\n height += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_NORTH_EAST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_SOUTH_EAST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_NORTH_WEST;\n height = -height;\n top -= height;\n }\n\n break;\n\n case ACTION_SOUTH_EAST:\n if (aspectRatio) {\n if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {\n renderable = false;\n break;\n }\n\n check(ACTION_EAST);\n width += range.x;\n height = width / aspectRatio;\n } else {\n check(ACTION_SOUTH);\n check(ACTION_EAST);\n\n if (range.x >= 0) {\n if (right < maxWidth) {\n width += range.x;\n } else if (range.y >= 0 && bottom >= maxHeight) {\n renderable = false;\n }\n } else {\n width += range.x;\n }\n\n if (range.y >= 0) {\n if (bottom < maxHeight) {\n height += range.y;\n }\n } else {\n height += range.y;\n }\n }\n\n if (width < 0 && height < 0) {\n action = ACTION_NORTH_WEST;\n height = -height;\n width = -width;\n top -= height;\n left -= width;\n } else if (width < 0) {\n action = ACTION_SOUTH_WEST;\n width = -width;\n left -= width;\n } else if (height < 0) {\n action = ACTION_NORTH_EAST;\n height = -height;\n top -= height;\n }\n\n break;\n // Move canvas\n\n case ACTION_MOVE:\n this.move(range.x, range.y);\n renderable = false;\n break;\n // Zoom canvas\n\n case ACTION_ZOOM:\n this.zoom(getMaxZoomRatio(pointers), event);\n renderable = false;\n break;\n // Create crop box\n\n case ACTION_CROP:\n if (!range.x || !range.y) {\n renderable = false;\n break;\n }\n\n offset = getOffset(this.cropper);\n left = pointer.startX - offset.left;\n top = pointer.startY - offset.top;\n width = cropBoxData.minWidth;\n height = cropBoxData.minHeight;\n\n if (range.x > 0) {\n action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;\n } else if (range.x < 0) {\n left -= width;\n action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;\n }\n\n if (range.y < 0) {\n top -= height;\n } // Show the crop box if is hidden\n\n\n if (!this.cropped) {\n removeClass(this.cropBox, CLASS_HIDDEN);\n this.cropped = true;\n\n if (this.limited) {\n this.limitCropBox(true, true);\n }\n }\n\n break;\n }\n\n if (renderable) {\n cropBoxData.width = width;\n cropBoxData.height = height;\n cropBoxData.left = left;\n cropBoxData.top = top;\n this.action = action;\n this.renderCropBox();\n } // Override\n\n\n forEach(pointers, function (p) {\n p.startX = p.endX;\n p.startY = p.endY;\n });\n }\n };\n\n var methods = {\n // Show the crop box manually\n crop: function crop() {\n if (this.ready && !this.cropped && !this.disabled) {\n this.cropped = true;\n this.limitCropBox(true, true);\n\n if (this.options.modal) {\n addClass(this.dragBox, CLASS_MODAL);\n }\n\n removeClass(this.cropBox, CLASS_HIDDEN);\n this.setCropBoxData(this.initialCropBoxData);\n }\n\n return this;\n },\n // Reset the image and crop box to their initial states\n reset: function reset() {\n if (this.ready && !this.disabled) {\n this.imageData = assign({}, this.initialImageData);\n this.canvasData = assign({}, this.initialCanvasData);\n this.cropBoxData = assign({}, this.initialCropBoxData);\n this.renderCanvas();\n\n if (this.cropped) {\n this.renderCropBox();\n }\n }\n\n return this;\n },\n // Clear the crop box\n clear: function clear() {\n if (this.cropped && !this.disabled) {\n assign(this.cropBoxData, {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n });\n this.cropped = false;\n this.renderCropBox();\n this.limitCanvas(true, true); // Render canvas after crop box rendered\n\n this.renderCanvas();\n removeClass(this.dragBox, CLASS_MODAL);\n addClass(this.cropBox, CLASS_HIDDEN);\n }\n\n return this;\n },\n\n /**\n * Replace the image's src and rebuild the cropper\n * @param {string} url - The new URL.\n * @param {boolean} [hasSameSize] - Indicate if the new image has the same size as the old one.\n * @returns {Cropper} this\n */\n replace: function replace(url) {\n var hasSameSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!this.disabled && url) {\n if (this.isImg) {\n this.element.src = url;\n }\n\n if (hasSameSize) {\n this.url = url;\n this.image.src = url;\n\n if (this.ready) {\n this.viewBoxImage.src = url;\n forEach(this.previews, function (element) {\n element.getElementsByTagName('img')[0].src = url;\n });\n }\n } else {\n if (this.isImg) {\n this.replaced = true;\n }\n\n this.options.data = null;\n this.uncreate();\n this.load(url);\n }\n }\n\n return this;\n },\n // Enable (unfreeze) the cropper\n enable: function enable() {\n if (this.ready && this.disabled) {\n this.disabled = false;\n removeClass(this.cropper, CLASS_DISABLED);\n }\n\n return this;\n },\n // Disable (freeze) the cropper\n disable: function disable() {\n if (this.ready && !this.disabled) {\n this.disabled = true;\n addClass(this.cropper, CLASS_DISABLED);\n }\n\n return this;\n },\n\n /**\n * Destroy the cropper and remove the instance from the image\n * @returns {Cropper} this\n */\n destroy: function destroy() {\n var element = this.element;\n\n if (!element[NAMESPACE]) {\n return this;\n }\n\n element[NAMESPACE] = undefined;\n\n if (this.isImg && this.replaced) {\n element.src = this.originalUrl;\n }\n\n this.uncreate();\n return this;\n },\n\n /**\n * Move the canvas with relative offsets\n * @param {number} offsetX - The relative offset distance on the x-axis.\n * @param {number} [offsetY=offsetX] - The relative offset distance on the y-axis.\n * @returns {Cropper} this\n */\n move: function move(offsetX) {\n var offsetY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : offsetX;\n var _this$canvasData = this.canvasData,\n left = _this$canvasData.left,\n top = _this$canvasData.top;\n return this.moveTo(isUndefined(offsetX) ? offsetX : left + Number(offsetX), isUndefined(offsetY) ? offsetY : top + Number(offsetY));\n },\n\n /**\n * Move the canvas to an absolute point\n * @param {number} x - The x-axis coordinate.\n * @param {number} [y=x] - The y-axis coordinate.\n * @returns {Cropper} this\n */\n moveTo: function moveTo(x) {\n var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : x;\n var canvasData = this.canvasData;\n var changed = false;\n x = Number(x);\n y = Number(y);\n\n if (this.ready && !this.disabled && this.options.movable) {\n if (isNumber(x)) {\n canvasData.left = x;\n changed = true;\n }\n\n if (isNumber(y)) {\n canvasData.top = y;\n changed = true;\n }\n\n if (changed) {\n this.renderCanvas(true);\n }\n }\n\n return this;\n },\n\n /**\n * Zoom the canvas with a relative ratio\n * @param {number} ratio - The target ratio.\n * @param {Event} _originalEvent - The original event if any.\n * @returns {Cropper} this\n */\n zoom: function zoom(ratio, _originalEvent) {\n var canvasData = this.canvasData;\n ratio = Number(ratio);\n\n if (ratio < 0) {\n ratio = 1 / (1 - ratio);\n } else {\n ratio = 1 + ratio;\n }\n\n return this.zoomTo(canvasData.width * ratio / canvasData.naturalWidth, null, _originalEvent);\n },\n\n /**\n * Zoom the canvas to an absolute ratio\n * @param {number} ratio - The target ratio.\n * @param {Object} pivot - The zoom pivot point coordinate.\n * @param {Event} _originalEvent - The original event if any.\n * @returns {Cropper} this\n */\n zoomTo: function zoomTo(ratio, pivot, _originalEvent) {\n var options = this.options,\n canvasData = this.canvasData;\n var width = canvasData.width,\n height = canvasData.height,\n naturalWidth = canvasData.naturalWidth,\n naturalHeight = canvasData.naturalHeight;\n ratio = Number(ratio);\n\n if (ratio >= 0 && this.ready && !this.disabled && options.zoomable) {\n var newWidth = naturalWidth * ratio;\n var newHeight = naturalHeight * ratio;\n\n if (dispatchEvent(this.element, EVENT_ZOOM, {\n ratio: ratio,\n oldRatio: width / naturalWidth,\n originalEvent: _originalEvent\n }) === false) {\n return this;\n }\n\n if (_originalEvent) {\n var pointers = this.pointers;\n var offset = getOffset(this.cropper);\n var center = pointers && Object.keys(pointers).length ? getPointersCenter(pointers) : {\n pageX: _originalEvent.pageX,\n pageY: _originalEvent.pageY\n }; // Zoom from the triggering point of the event\n\n canvasData.left -= (newWidth - width) * ((center.pageX - offset.left - canvasData.left) / width);\n canvasData.top -= (newHeight - height) * ((center.pageY - offset.top - canvasData.top) / height);\n } else if (isPlainObject(pivot) && isNumber(pivot.x) && isNumber(pivot.y)) {\n canvasData.left -= (newWidth - width) * ((pivot.x - canvasData.left) / width);\n canvasData.top -= (newHeight - height) * ((pivot.y - canvasData.top) / height);\n } else {\n // Zoom from the center of the canvas\n canvasData.left -= (newWidth - width) / 2;\n canvasData.top -= (newHeight - height) / 2;\n }\n\n canvasData.width = newWidth;\n canvasData.height = newHeight;\n this.renderCanvas(true);\n }\n\n return this;\n },\n\n /**\n * Rotate the canvas with a relative degree\n * @param {number} degree - The rotate degree.\n * @returns {Cropper} this\n */\n rotate: function rotate(degree) {\n return this.rotateTo((this.imageData.rotate || 0) + Number(degree));\n },\n\n /**\n * Rotate the canvas to an absolute degree\n * @param {number} degree - The rotate degree.\n * @returns {Cropper} this\n */\n rotateTo: function rotateTo(degree) {\n degree = Number(degree);\n\n if (isNumber(degree) && this.ready && !this.disabled && this.options.rotatable) {\n this.imageData.rotate = degree % 360;\n this.renderCanvas(true, true);\n }\n\n return this;\n },\n\n /**\n * Scale the image on the x-axis.\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @returns {Cropper} this\n */\n scaleX: function scaleX(_scaleX) {\n var scaleY = this.imageData.scaleY;\n return this.scale(_scaleX, isNumber(scaleY) ? scaleY : 1);\n },\n\n /**\n * Scale the image on the y-axis.\n * @param {number} scaleY - The scale ratio on the y-axis.\n * @returns {Cropper} this\n */\n scaleY: function scaleY(_scaleY) {\n var scaleX = this.imageData.scaleX;\n return this.scale(isNumber(scaleX) ? scaleX : 1, _scaleY);\n },\n\n /**\n * Scale the image\n * @param {number} scaleX - The scale ratio on the x-axis.\n * @param {number} [scaleY=scaleX] - The scale ratio on the y-axis.\n * @returns {Cropper} this\n */\n scale: function scale(scaleX) {\n var scaleY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : scaleX;\n var imageData = this.imageData;\n var transformed = false;\n scaleX = Number(scaleX);\n scaleY = Number(scaleY);\n\n if (this.ready && !this.disabled && this.options.scalable) {\n if (isNumber(scaleX)) {\n imageData.scaleX = scaleX;\n transformed = true;\n }\n\n if (isNumber(scaleY)) {\n imageData.scaleY = scaleY;\n transformed = true;\n }\n\n if (transformed) {\n this.renderCanvas(true, true);\n }\n }\n\n return this;\n },\n\n /**\n * Get the cropped area position and size data (base on the original image)\n * @param {boolean} [rounded=false] - Indicate if round the data values or not.\n * @returns {Object} The result cropped data.\n */\n getData: function getData() {\n var rounded = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var options = this.options,\n imageData = this.imageData,\n canvasData = this.canvasData,\n cropBoxData = this.cropBoxData;\n var data;\n\n if (this.ready && this.cropped) {\n data = {\n x: cropBoxData.left - canvasData.left,\n y: cropBoxData.top - canvasData.top,\n width: cropBoxData.width,\n height: cropBoxData.height\n };\n var ratio = imageData.width / imageData.naturalWidth;\n forEach(data, function (n, i) {\n data[i] = n / ratio;\n });\n\n if (rounded) {\n // In case rounding off leads to extra 1px in right or bottom border\n // we should round the top-left corner and the dimension (#343).\n var bottom = Math.round(data.y + data.height);\n var right = Math.round(data.x + data.width);\n data.x = Math.round(data.x);\n data.y = Math.round(data.y);\n data.width = right - data.x;\n data.height = bottom - data.y;\n }\n } else {\n data = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n\n if (options.rotatable) {\n data.rotate = imageData.rotate || 0;\n }\n\n if (options.scalable) {\n data.scaleX = imageData.scaleX || 1;\n data.scaleY = imageData.scaleY || 1;\n }\n\n return data;\n },\n\n /**\n * Set the cropped area position and size with new data\n * @param {Object} data - The new data.\n * @returns {Cropper} this\n */\n setData: function setData(data) {\n var options = this.options,\n imageData = this.imageData,\n canvasData = this.canvasData;\n var cropBoxData = {};\n\n if (this.ready && !this.disabled && isPlainObject(data)) {\n var transformed = false;\n\n if (options.rotatable) {\n if (isNumber(data.rotate) && data.rotate !== imageData.rotate) {\n imageData.rotate = data.rotate;\n transformed = true;\n }\n }\n\n if (options.scalable) {\n if (isNumber(data.scaleX) && data.scaleX !== imageData.scaleX) {\n imageData.scaleX = data.scaleX;\n transformed = true;\n }\n\n if (isNumber(data.scaleY) && data.scaleY !== imageData.scaleY) {\n imageData.scaleY = data.scaleY;\n transformed = true;\n }\n }\n\n if (transformed) {\n this.renderCanvas(true, true);\n }\n\n var ratio = imageData.width / imageData.naturalWidth;\n\n if (isNumber(data.x)) {\n cropBoxData.left = data.x * ratio + canvasData.left;\n }\n\n if (isNumber(data.y)) {\n cropBoxData.top = data.y * ratio + canvasData.top;\n }\n\n if (isNumber(data.width)) {\n cropBoxData.width = data.width * ratio;\n }\n\n if (isNumber(data.height)) {\n cropBoxData.height = data.height * ratio;\n }\n\n this.setCropBoxData(cropBoxData);\n }\n\n return this;\n },\n\n /**\n * Get the container size data.\n * @returns {Object} The result container data.\n */\n getContainerData: function getContainerData() {\n return this.ready ? assign({}, this.containerData) : {};\n },\n\n /**\n * Get the image position and size data.\n * @returns {Object} The result image data.\n */\n getImageData: function getImageData() {\n return this.sized ? assign({}, this.imageData) : {};\n },\n\n /**\n * Get the canvas position and size data.\n * @returns {Object} The result canvas data.\n */\n getCanvasData: function getCanvasData() {\n var canvasData = this.canvasData;\n var data = {};\n\n if (this.ready) {\n forEach(['left', 'top', 'width', 'height', 'naturalWidth', 'naturalHeight'], function (n) {\n data[n] = canvasData[n];\n });\n }\n\n return data;\n },\n\n /**\n * Set the canvas position and size with new data.\n * @param {Object} data - The new canvas data.\n * @returns {Cropper} this\n */\n setCanvasData: function setCanvasData(data) {\n var canvasData = this.canvasData;\n var aspectRatio = canvasData.aspectRatio;\n\n if (this.ready && !this.disabled && isPlainObject(data)) {\n if (isNumber(data.left)) {\n canvasData.left = data.left;\n }\n\n if (isNumber(data.top)) {\n canvasData.top = data.top;\n }\n\n if (isNumber(data.width)) {\n canvasData.width = data.width;\n canvasData.height = data.width / aspectRatio;\n } else if (isNumber(data.height)) {\n canvasData.height = data.height;\n canvasData.width = data.height * aspectRatio;\n }\n\n this.renderCanvas(true);\n }\n\n return this;\n },\n\n /**\n * Get the crop box position and size data.\n * @returns {Object} The result crop box data.\n */\n getCropBoxData: function getCropBoxData() {\n var cropBoxData = this.cropBoxData;\n var data;\n\n if (this.ready && this.cropped) {\n data = {\n left: cropBoxData.left,\n top: cropBoxData.top,\n width: cropBoxData.width,\n height: cropBoxData.height\n };\n }\n\n return data || {};\n },\n\n /**\n * Set the crop box position and size with new data.\n * @param {Object} data - The new crop box data.\n * @returns {Cropper} this\n */\n setCropBoxData: function setCropBoxData(data) {\n var cropBoxData = this.cropBoxData;\n var aspectRatio = this.options.aspectRatio;\n var widthChanged;\n var heightChanged;\n\n if (this.ready && this.cropped && !this.disabled && isPlainObject(data)) {\n if (isNumber(data.left)) {\n cropBoxData.left = data.left;\n }\n\n if (isNumber(data.top)) {\n cropBoxData.top = data.top;\n }\n\n if (isNumber(data.width) && data.width !== cropBoxData.width) {\n widthChanged = true;\n cropBoxData.width = data.width;\n }\n\n if (isNumber(data.height) && data.height !== cropBoxData.height) {\n heightChanged = true;\n cropBoxData.height = data.height;\n }\n\n if (aspectRatio) {\n if (widthChanged) {\n cropBoxData.height = cropBoxData.width / aspectRatio;\n } else if (heightChanged) {\n cropBoxData.width = cropBoxData.height * aspectRatio;\n }\n }\n\n this.renderCropBox();\n }\n\n return this;\n },\n\n /**\n * Get a canvas drawn the cropped image.\n * @param {Object} [options={}] - The config options.\n * @returns {HTMLCanvasElement} - The result canvas.\n */\n getCroppedCanvas: function getCroppedCanvas() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!this.ready || !window.HTMLCanvasElement) {\n return null;\n }\n\n var canvasData = this.canvasData;\n var source = getSourceCanvas(this.image, this.imageData, canvasData, options); // Returns the source canvas if it is not cropped.\n\n if (!this.cropped) {\n return source;\n }\n\n var _this$getData = this.getData(),\n initialX = _this$getData.x,\n initialY = _this$getData.y,\n initialWidth = _this$getData.width,\n initialHeight = _this$getData.height;\n\n var ratio = source.width / Math.floor(canvasData.naturalWidth);\n\n if (ratio !== 1) {\n initialX *= ratio;\n initialY *= ratio;\n initialWidth *= ratio;\n initialHeight *= ratio;\n }\n\n var aspectRatio = initialWidth / initialHeight;\n var maxSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.maxWidth || Infinity,\n height: options.maxHeight || Infinity\n });\n var minSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.minWidth || 0,\n height: options.minHeight || 0\n }, 'cover');\n\n var _getAdjustedSizes = getAdjustedSizes({\n aspectRatio: aspectRatio,\n width: options.width || (ratio !== 1 ? source.width : initialWidth),\n height: options.height || (ratio !== 1 ? source.height : initialHeight)\n }),\n width = _getAdjustedSizes.width,\n height = _getAdjustedSizes.height;\n\n width = Math.min(maxSizes.width, Math.max(minSizes.width, width));\n height = Math.min(maxSizes.height, Math.max(minSizes.height, height));\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n canvas.width = normalizeDecimalNumber(width);\n canvas.height = normalizeDecimalNumber(height);\n context.fillStyle = options.fillColor || 'transparent';\n context.fillRect(0, 0, width, height);\n var _options$imageSmoothi = options.imageSmoothingEnabled,\n imageSmoothingEnabled = _options$imageSmoothi === void 0 ? true : _options$imageSmoothi,\n imageSmoothingQuality = options.imageSmoothingQuality;\n context.imageSmoothingEnabled = imageSmoothingEnabled;\n\n if (imageSmoothingQuality) {\n context.imageSmoothingQuality = imageSmoothingQuality;\n } // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\n\n\n var sourceWidth = source.width;\n var sourceHeight = source.height; // Source canvas parameters\n\n var srcX = initialX;\n var srcY = initialY;\n var srcWidth;\n var srcHeight; // Destination canvas parameters\n\n var dstX;\n var dstY;\n var dstWidth;\n var dstHeight;\n\n if (srcX <= -initialWidth || srcX > sourceWidth) {\n srcX = 0;\n srcWidth = 0;\n dstX = 0;\n dstWidth = 0;\n } else if (srcX <= 0) {\n dstX = -srcX;\n srcX = 0;\n srcWidth = Math.min(sourceWidth, initialWidth + srcX);\n dstWidth = srcWidth;\n } else if (srcX <= sourceWidth) {\n dstX = 0;\n srcWidth = Math.min(initialWidth, sourceWidth - srcX);\n dstWidth = srcWidth;\n }\n\n if (srcWidth <= 0 || srcY <= -initialHeight || srcY > sourceHeight) {\n srcY = 0;\n srcHeight = 0;\n dstY = 0;\n dstHeight = 0;\n } else if (srcY <= 0) {\n dstY = -srcY;\n srcY = 0;\n srcHeight = Math.min(sourceHeight, initialHeight + srcY);\n dstHeight = srcHeight;\n } else if (srcY <= sourceHeight) {\n dstY = 0;\n srcHeight = Math.min(initialHeight, sourceHeight - srcY);\n dstHeight = srcHeight;\n }\n\n var params = [srcX, srcY, srcWidth, srcHeight]; // Avoid \"IndexSizeError\"\n\n if (dstWidth > 0 && dstHeight > 0) {\n var scale = width / initialWidth;\n params.push(dstX * scale, dstY * scale, dstWidth * scale, dstHeight * scale);\n } // All the numerical parameters should be integer for `drawImage`\n // https://github.com/fengyuanchen/cropper/issues/476\n\n\n context.drawImage.apply(context, [source].concat(_toConsumableArray(params.map(function (param) {\n return Math.floor(normalizeDecimalNumber(param));\n }))));\n return canvas;\n },\n\n /**\n * Change the aspect ratio of the crop box.\n * @param {number} aspectRatio - The new aspect ratio.\n * @returns {Cropper} this\n */\n setAspectRatio: function setAspectRatio(aspectRatio) {\n var options = this.options;\n\n if (!this.disabled && !isUndefined(aspectRatio)) {\n // 0 -> NaN\n options.aspectRatio = Math.max(0, aspectRatio) || NaN;\n\n if (this.ready) {\n this.initCropBox();\n\n if (this.cropped) {\n this.renderCropBox();\n }\n }\n }\n\n return this;\n },\n\n /**\n * Change the drag mode.\n * @param {string} mode - The new drag mode.\n * @returns {Cropper} this\n */\n setDragMode: function setDragMode(mode) {\n var options = this.options,\n dragBox = this.dragBox,\n face = this.face;\n\n if (this.ready && !this.disabled) {\n var croppable = mode === DRAG_MODE_CROP;\n var movable = options.movable && mode === DRAG_MODE_MOVE;\n mode = croppable || movable ? mode : DRAG_MODE_NONE;\n options.dragMode = mode;\n setData(dragBox, DATA_ACTION, mode);\n toggleClass(dragBox, CLASS_CROP, croppable);\n toggleClass(dragBox, CLASS_MOVE, movable);\n\n if (!options.cropBoxMovable) {\n // Sync drag mode to crop box when it is not movable\n setData(face, DATA_ACTION, mode);\n toggleClass(face, CLASS_CROP, croppable);\n toggleClass(face, CLASS_MOVE, movable);\n }\n }\n\n return this;\n }\n };\n\n var AnotherCropper = WINDOW.Cropper;\n\n var Cropper = /*#__PURE__*/function () {\n /**\n * Create a new Cropper.\n * @param {Element} element - The target element for cropping.\n * @param {Object} [options={}] - The configuration options.\n */\n function Cropper(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Cropper);\n\n if (!element || !REGEXP_TAG_NAME.test(element.tagName)) {\n throw new Error('The first argument is required and must be an <img> or <canvas> element.');\n }\n\n this.element = element;\n this.options = assign({}, DEFAULTS, isPlainObject(options) && options);\n this.cropped = false;\n this.disabled = false;\n this.pointers = {};\n this.ready = false;\n this.reloading = false;\n this.replaced = false;\n this.sized = false;\n this.sizing = false;\n this.init();\n }\n\n _createClass(Cropper, [{\n key: \"init\",\n value: function init() {\n var element = this.element;\n var tagName = element.tagName.toLowerCase();\n var url;\n\n if (element[NAMESPACE]) {\n return;\n }\n\n element[NAMESPACE] = this;\n\n if (tagName === 'img') {\n this.isImg = true; // e.g.: \"img/picture.jpg\"\n\n url = element.getAttribute('src') || '';\n this.originalUrl = url; // Stop when it's a blank image\n\n if (!url) {\n return;\n } // e.g.: \"https://example.com/img/picture.jpg\"\n\n\n url = element.src;\n } else if (tagName === 'canvas' && window.HTMLCanvasElement) {\n url = element.toDataURL();\n }\n\n this.load(url);\n }\n }, {\n key: \"load\",\n value: function load(url) {\n var _this = this;\n\n if (!url) {\n return;\n }\n\n this.url = url;\n this.imageData = {};\n var element = this.element,\n options = this.options;\n\n if (!options.rotatable && !options.scalable) {\n options.checkOrientation = false;\n } // Only IE10+ supports Typed Arrays\n\n\n if (!options.checkOrientation || !window.ArrayBuffer) {\n this.clone();\n return;\n } // Detect the mime type of the image directly if it is a Data URL\n\n\n if (REGEXP_DATA_URL.test(url)) {\n // Read ArrayBuffer from Data URL of JPEG images directly for better performance\n if (REGEXP_DATA_URL_JPEG.test(url)) {\n this.read(dataURLToArrayBuffer(url));\n } else {\n // Only a JPEG image may contains Exif Orientation information,\n // the rest types of Data URLs are not necessary to check orientation at all.\n this.clone();\n }\n\n return;\n } // 1. Detect the mime type of the image by a XMLHttpRequest.\n // 2. Load the image as ArrayBuffer for reading orientation if its a JPEG image.\n\n\n var xhr = new XMLHttpRequest();\n var clone = this.clone.bind(this);\n this.reloading = true;\n this.xhr = xhr; // 1. Cross origin requests are only supported for protocol schemes:\n // http, https, data, chrome, chrome-extension.\n // 2. Access to XMLHttpRequest from a Data URL will be blocked by CORS policy\n // in some browsers as IE11 and Safari.\n\n xhr.onabort = clone;\n xhr.onerror = clone;\n xhr.ontimeout = clone;\n\n xhr.onprogress = function () {\n // Abort the request directly if it not a JPEG image for better performance\n if (xhr.getResponseHeader('content-type') !== MIME_TYPE_JPEG) {\n xhr.abort();\n }\n };\n\n xhr.onload = function () {\n _this.read(xhr.response);\n };\n\n xhr.onloadend = function () {\n _this.reloading = false;\n _this.xhr = null;\n }; // Bust cache when there is a \"crossOrigin\" property to avoid browser cache error\n\n\n if (options.checkCrossOrigin && isCrossOriginURL(url) && element.crossOrigin) {\n url = addTimestamp(url);\n } // The third parameter is required for avoiding side-effect (#682)\n\n\n xhr.open('GET', url, true);\n xhr.responseType = 'arraybuffer';\n xhr.withCredentials = element.crossOrigin === 'use-credentials';\n xhr.send();\n }\n }, {\n key: \"read\",\n value: function read(arrayBuffer) {\n var options = this.options,\n imageData = this.imageData; // Reset the orientation value to its default value 1\n // as some iOS browsers will render image with its orientation\n\n var orientation = resetAndGetOrientation(arrayBuffer);\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n\n if (orientation > 1) {\n // Generate a new URL which has the default orientation value\n this.url = arrayBufferToDataURL(arrayBuffer, MIME_TYPE_JPEG);\n\n var _parseOrientation = parseOrientation(orientation);\n\n rotate = _parseOrientation.rotate;\n scaleX = _parseOrientation.scaleX;\n scaleY = _parseOrientation.scaleY;\n }\n\n if (options.rotatable) {\n imageData.rotate = rotate;\n }\n\n if (options.scalable) {\n imageData.scaleX = scaleX;\n imageData.scaleY = scaleY;\n }\n\n this.clone();\n }\n }, {\n key: \"clone\",\n value: function clone() {\n var element = this.element,\n url = this.url;\n var crossOrigin = element.crossOrigin;\n var crossOriginUrl = url;\n\n if (this.options.checkCrossOrigin && isCrossOriginURL(url)) {\n if (!crossOrigin) {\n crossOrigin = 'anonymous';\n } // Bust cache when there is not a \"crossOrigin\" property (#519)\n\n\n crossOriginUrl = addTimestamp(url);\n }\n\n this.crossOrigin = crossOrigin;\n this.crossOriginUrl = crossOriginUrl;\n var image = document.createElement('img');\n\n if (crossOrigin) {\n image.crossOrigin = crossOrigin;\n }\n\n image.src = crossOriginUrl || url;\n image.alt = element.alt || 'The image to crop';\n this.image = image;\n image.onload = this.start.bind(this);\n image.onerror = this.stop.bind(this);\n addClass(image, CLASS_HIDE);\n element.parentNode.insertBefore(image, element.nextSibling);\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this2 = this;\n\n var image = this.image;\n image.onload = null;\n image.onerror = null;\n this.sizing = true; // Match all browsers that use WebKit as the layout engine in iOS devices,\n // such as Safari for iOS, Chrome for iOS, and in-app browsers.\n\n var isIOSWebKit = WINDOW.navigator && /(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(WINDOW.navigator.userAgent);\n\n var done = function done(naturalWidth, naturalHeight) {\n assign(_this2.imageData, {\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n aspectRatio: naturalWidth / naturalHeight\n });\n _this2.initialImageData = assign({}, _this2.imageData);\n _this2.sizing = false;\n _this2.sized = true;\n\n _this2.build();\n }; // Most modern browsers (excepts iOS WebKit)\n\n\n if (image.naturalWidth && !isIOSWebKit) {\n done(image.naturalWidth, image.naturalHeight);\n return;\n }\n\n var sizingImage = document.createElement('img');\n var body = document.body || document.documentElement;\n this.sizingImage = sizingImage;\n\n sizingImage.onload = function () {\n done(sizingImage.width, sizingImage.height);\n\n if (!isIOSWebKit) {\n body.removeChild(sizingImage);\n }\n };\n\n sizingImage.src = image.src; // iOS WebKit will convert the image automatically\n // with its orientation once append it into DOM (#279)\n\n if (!isIOSWebKit) {\n sizingImage.style.cssText = 'left:0;' + 'max-height:none!important;' + 'max-width:none!important;' + 'min-height:0!important;' + 'min-width:0!important;' + 'opacity:0;' + 'position:absolute;' + 'top:0;' + 'z-index:-1;';\n body.appendChild(sizingImage);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n var image = this.image;\n image.onload = null;\n image.onerror = null;\n image.parentNode.removeChild(image);\n this.image = null;\n }\n }, {\n key: \"build\",\n value: function build() {\n if (!this.sized || this.ready) {\n return;\n }\n\n var element = this.element,\n options = this.options,\n image = this.image; // Create cropper elements\n\n var container = element.parentNode;\n var template = document.createElement('div');\n template.innerHTML = TEMPLATE;\n var cropper = template.querySelector(\".\".concat(NAMESPACE, \"-container\"));\n var canvas = cropper.querySelector(\".\".concat(NAMESPACE, \"-canvas\"));\n var dragBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-drag-box\"));\n var cropBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-crop-box\"));\n var face = cropBox.querySelector(\".\".concat(NAMESPACE, \"-face\"));\n this.container = container;\n this.cropper = cropper;\n this.canvas = canvas;\n this.dragBox = dragBox;\n this.cropBox = cropBox;\n this.viewBox = cropper.querySelector(\".\".concat(NAMESPACE, \"-view-box\"));\n this.face = face;\n canvas.appendChild(image); // Hide the original image\n\n addClass(element, CLASS_HIDDEN); // Inserts the cropper after to the current image\n\n container.insertBefore(cropper, element.nextSibling); // Show the image if is hidden\n\n if (!this.isImg) {\n removeClass(image, CLASS_HIDE);\n }\n\n this.initPreview();\n this.bind();\n options.initialAspectRatio = Math.max(0, options.initialAspectRatio) || NaN;\n options.aspectRatio = Math.max(0, options.aspectRatio) || NaN;\n options.viewMode = Math.max(0, Math.min(3, Math.round(options.viewMode))) || 0;\n addClass(cropBox, CLASS_HIDDEN);\n\n if (!options.guides) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-dashed\")), CLASS_HIDDEN);\n }\n\n if (!options.center) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-center\")), CLASS_HIDDEN);\n }\n\n if (options.background) {\n addClass(cropper, \"\".concat(NAMESPACE, \"-bg\"));\n }\n\n if (!options.highlight) {\n addClass(face, CLASS_INVISIBLE);\n }\n\n if (options.cropBoxMovable) {\n addClass(face, CLASS_MOVE);\n setData(face, DATA_ACTION, ACTION_ALL);\n }\n\n if (!options.cropBoxResizable) {\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-line\")), CLASS_HIDDEN);\n addClass(cropBox.getElementsByClassName(\"\".concat(NAMESPACE, \"-point\")), CLASS_HIDDEN);\n }\n\n this.render();\n this.ready = true;\n this.setDragMode(options.dragMode);\n\n if (options.autoCrop) {\n this.crop();\n }\n\n this.setData(options.data);\n\n if (isFunction(options.ready)) {\n addListener(element, EVENT_READY, options.ready, {\n once: true\n });\n }\n\n dispatchEvent(element, EVENT_READY);\n }\n }, {\n key: \"unbuild\",\n value: function unbuild() {\n if (!this.ready) {\n return;\n }\n\n this.ready = false;\n this.unbind();\n this.resetPreview();\n this.cropper.parentNode.removeChild(this.cropper);\n removeClass(this.element, CLASS_HIDDEN);\n }\n }, {\n key: \"uncreate\",\n value: function uncreate() {\n if (this.ready) {\n this.unbuild();\n this.ready = false;\n this.cropped = false;\n } else if (this.sizing) {\n this.sizingImage.onload = null;\n this.sizing = false;\n this.sized = false;\n } else if (this.reloading) {\n this.xhr.onabort = null;\n this.xhr.abort();\n } else if (this.image) {\n this.stop();\n }\n }\n /**\n * Get the no conflict cropper class.\n * @returns {Cropper} The cropper class.\n */\n\n }], [{\n key: \"noConflict\",\n value: function noConflict() {\n window.Cropper = AnotherCropper;\n return Cropper;\n }\n /**\n * Change the default options.\n * @param {Object} options - The new default options.\n */\n\n }, {\n key: \"setDefaults\",\n value: function setDefaults(options) {\n assign(DEFAULTS, isPlainObject(options) && options);\n }\n }]);\n\n return Cropper;\n }();\n\n assign(Cropper.prototype, render, preview, events, handlers, change, methods);\n\n return Cropper;\n\n})));\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin <self@wyattbaldwin.com>\n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","'use strict'\n\nmodule.exports = function encodeUtf8 (input) {\n var result = []\n var size = input.length\n\n for (var index = 0; index < size; index++) {\n var point = input.charCodeAt(index)\n\n if (point >= 0xD800 && point <= 0xDBFF && size > index + 1) {\n var second = input.charCodeAt(index + 1)\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n point = (point - 0xD800) * 0x400 + second - 0xDC00 + 0x10000\n index += 1\n }\n }\n\n // US-ASCII\n if (point < 0x80) {\n result.push(point)\n continue\n }\n\n // 2-byte UTF-8\n if (point < 0x800) {\n result.push((point >> 6) | 192)\n result.push((point & 63) | 128)\n continue\n }\n\n // 3-byte UTF-8\n if (point < 0xD800 || (point >= 0xE000 && point < 0x10000)) {\n result.push((point >> 12) | 224)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // 4-byte UTF-8\n if (point >= 0x10000 && point <= 0x10FFFF) {\n result.push((point >> 18) | 240)\n result.push(((point >> 12) & 63) | 128)\n result.push(((point >> 6) & 63) | 128)\n result.push((point & 63) | 128)\n continue\n }\n\n // Invalid character\n result.push(0xEF, 0xBF, 0xBD)\n }\n\n return new Uint8Array(result).buffer\n}\n","\nconst canPromise = require('./can-promise')\n\nconst QRCode = require('./core/qrcode')\nconst CanvasRenderer = require('./renderer/canvas')\nconst SvgRenderer = require('./renderer/svg-tag.js')\n\nfunction renderCanvas (renderFunc, canvas, text, opts, cb) {\n const args = [].slice.call(arguments, 1)\n const argsNum = args.length\n const isLastArgCb = typeof args[argsNum - 1] === 'function'\n\n if (!isLastArgCb && !canPromise()) {\n throw new Error('Callback required as last argument')\n }\n\n if (isLastArgCb) {\n if (argsNum < 2) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 2) {\n cb = text\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 3) {\n if (canvas.getContext && typeof cb === 'undefined') {\n cb = opts\n opts = undefined\n } else {\n cb = opts\n opts = text\n text = canvas\n canvas = undefined\n }\n }\n } else {\n if (argsNum < 1) {\n throw new Error('Too few arguments provided')\n }\n\n if (argsNum === 1) {\n text = canvas\n canvas = opts = undefined\n } else if (argsNum === 2 && !canvas.getContext) {\n opts = text\n text = canvas\n canvas = undefined\n }\n\n return new Promise(function (resolve, reject) {\n try {\n const data = QRCode.create(text, opts)\n resolve(renderFunc(data, canvas, opts))\n } catch (e) {\n reject(e)\n }\n })\n }\n\n try {\n const data = QRCode.create(text, opts)\n cb(null, renderFunc(data, canvas, opts))\n } catch (e) {\n cb(e)\n }\n}\n\nexports.create = QRCode.create\nexports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)\nexports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)\n\n// only svg for now.\nexports.toString = renderCanvas.bind(null, function (data, _, opts) {\n return SvgRenderer.render(data, opts)\n})\n","// can-promise has a crash in some versions of react native that dont have\n// standard global objects\n// https://github.com/soldair/node-qrcode/issues/157\n\nmodule.exports = function () {\n return typeof Promise === 'function' && Promise.prototype && Promise.prototype.then\n}\n","/**\n * Alignment pattern are fixed reference pattern in defined positions\n * in a matrix symbology, which enables the decode software to re-synchronise\n * the coordinate mapping of the image modules in the event of moderate amounts\n * of distortion of the image.\n *\n * Alignment patterns are present only in QR Code symbols of version 2 or larger\n * and their number depends on the symbol version.\n */\n\nconst getSymbolSize = require('./utils').getSymbolSize\n\n/**\n * Calculate the row/column coordinates of the center module of each alignment pattern\n * for the specified QR Code version.\n *\n * The alignment patterns are positioned symmetrically on either side of the diagonal\n * running from the top left corner of the symbol to the bottom right corner.\n *\n * Since positions are simmetrical only half of the coordinates are returned.\n * Each item of the array will represent in turn the x and y coordinate.\n * @see {@link getPositions}\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinate\n */\nexports.getRowColCoords = function getRowColCoords (version) {\n if (version === 1) return []\n\n const posCount = Math.floor(version / 7) + 2\n const size = getSymbolSize(version)\n const intervals = size === 145 ? 26 : Math.ceil((size - 13) / (2 * posCount - 2)) * 2\n const positions = [size - 7] // Last coord is always (size - 7)\n\n for (let i = 1; i < posCount - 1; i++) {\n positions[i] = positions[i - 1] - intervals\n }\n\n positions.push(6) // First coord is always 6\n\n return positions.reverse()\n}\n\n/**\n * Returns an array containing the positions of each alignment pattern.\n * Each array's element represent the center point of the pattern as (x, y) coordinates\n *\n * Coordinates are calculated expanding the row/column coordinates returned by {@link getRowColCoords}\n * and filtering out the items that overlaps with finder pattern\n *\n * @example\n * For a Version 7 symbol {@link getRowColCoords} returns values 6, 22 and 38.\n * The alignment patterns, therefore, are to be centered on (row, column)\n * positions (6,22), (22,6), (22,22), (22,38), (38,22), (38,38).\n * Note that the coordinates (6,6), (6,38), (38,6) are occupied by finder patterns\n * and are not therefore used for alignment patterns.\n *\n * let pos = getPositions(7)\n * // [[6,22], [22,6], [22,22], [22,38], [38,22], [38,38]]\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const coords = []\n const pos = exports.getRowColCoords(version)\n const posLength = pos.length\n\n for (let i = 0; i < posLength; i++) {\n for (let j = 0; j < posLength; j++) {\n // Skip if position is occupied by finder patterns\n if ((i === 0 && j === 0) || // top-left\n (i === 0 && j === posLength - 1) || // bottom-left\n (i === posLength - 1 && j === 0)) { // top-right\n continue\n }\n\n coords.push([pos[i], pos[j]])\n }\n }\n\n return coords\n}\n","const Mode = require('./mode')\n\n/**\n * Array of characters available in alphanumeric mode\n *\n * As per QR Code specification, to each character\n * is assigned a value from 0 to 44 which in this case coincides\n * with the array index\n *\n * @type {Array}\n */\nconst ALPHA_NUM_CHARS = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n ' ', '$', '%', '*', '+', '-', '.', '/', ':'\n]\n\nfunction AlphanumericData (data) {\n this.mode = Mode.ALPHANUMERIC\n this.data = data\n}\n\nAlphanumericData.getBitsLength = function getBitsLength (length) {\n return 11 * Math.floor(length / 2) + 6 * (length % 2)\n}\n\nAlphanumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nAlphanumericData.prototype.getBitsLength = function getBitsLength () {\n return AlphanumericData.getBitsLength(this.data.length)\n}\n\nAlphanumericData.prototype.write = function write (bitBuffer) {\n let i\n\n // Input data characters are divided into groups of two characters\n // and encoded as 11-bit binary codes.\n for (i = 0; i + 2 <= this.data.length; i += 2) {\n // The character value of the first character is multiplied by 45\n let value = ALPHA_NUM_CHARS.indexOf(this.data[i]) * 45\n\n // The character value of the second digit is added to the product\n value += ALPHA_NUM_CHARS.indexOf(this.data[i + 1])\n\n // The sum is then stored as 11-bit binary number\n bitBuffer.put(value, 11)\n }\n\n // If the number of input data characters is not a multiple of two,\n // the character value of the final character is encoded as a 6-bit binary number.\n if (this.data.length % 2) {\n bitBuffer.put(ALPHA_NUM_CHARS.indexOf(this.data[i]), 6)\n }\n}\n\nmodule.exports = AlphanumericData\n","function BitBuffer () {\n this.buffer = []\n this.length = 0\n}\n\nBitBuffer.prototype = {\n\n get: function (index) {\n const bufIndex = Math.floor(index / 8)\n return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1) === 1\n },\n\n put: function (num, length) {\n for (let i = 0; i < length; i++) {\n this.putBit(((num >>> (length - i - 1)) & 1) === 1)\n }\n },\n\n getLengthInBits: function () {\n return this.length\n },\n\n putBit: function (bit) {\n const bufIndex = Math.floor(this.length / 8)\n if (this.buffer.length <= bufIndex) {\n this.buffer.push(0)\n }\n\n if (bit) {\n this.buffer[bufIndex] |= (0x80 >>> (this.length % 8))\n }\n\n this.length++\n }\n}\n\nmodule.exports = BitBuffer\n","/**\n * Helper class to handle QR Code symbol modules\n *\n * @param {Number} size Symbol size\n */\nfunction BitMatrix (size) {\n if (!size || size < 1) {\n throw new Error('BitMatrix size must be defined and greater than 0')\n }\n\n this.size = size\n this.data = new Uint8Array(size * size)\n this.reservedBit = new Uint8Array(size * size)\n}\n\n/**\n * Set bit value at specified location\n * If reserved flag is set, this bit will be ignored during masking process\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n * @param {Boolean} reserved\n */\nBitMatrix.prototype.set = function (row, col, value, reserved) {\n const index = row * this.size + col\n this.data[index] = value\n if (reserved) this.reservedBit[index] = true\n}\n\n/**\n * Returns bit value at specified location\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.get = function (row, col) {\n return this.data[row * this.size + col]\n}\n\n/**\n * Applies xor operator at specified location\n * (used during masking process)\n *\n * @param {Number} row\n * @param {Number} col\n * @param {Boolean} value\n */\nBitMatrix.prototype.xor = function (row, col, value) {\n this.data[row * this.size + col] ^= value\n}\n\n/**\n * Check if bit at specified location is reserved\n *\n * @param {Number} row\n * @param {Number} col\n * @return {Boolean}\n */\nBitMatrix.prototype.isReserved = function (row, col) {\n return this.reservedBit[row * this.size + col]\n}\n\nmodule.exports = BitMatrix\n","const encodeUtf8 = require('encode-utf8')\nconst Mode = require('./mode')\n\nfunction ByteData (data) {\n this.mode = Mode.BYTE\n this.data = new Uint8Array(encodeUtf8(data))\n}\n\nByteData.getBitsLength = function getBitsLength (length) {\n return length * 8\n}\n\nByteData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nByteData.prototype.getBitsLength = function getBitsLength () {\n return ByteData.getBitsLength(this.data.length)\n}\n\nByteData.prototype.write = function (bitBuffer) {\n for (let i = 0, l = this.data.length; i < l; i++) {\n bitBuffer.put(this.data[i], 8)\n }\n}\n\nmodule.exports = ByteData\n","const ECLevel = require('./error-correction-level')\r\n\r\nconst EC_BLOCKS_TABLE = [\r\n// L M Q H\r\n 1, 1, 1, 1,\r\n 1, 1, 1, 1,\r\n 1, 1, 2, 2,\r\n 1, 2, 2, 4,\r\n 1, 2, 4, 4,\r\n 2, 4, 4, 4,\r\n 2, 4, 6, 5,\r\n 2, 4, 6, 6,\r\n 2, 5, 8, 8,\r\n 4, 5, 8, 8,\r\n 4, 5, 8, 11,\r\n 4, 8, 10, 11,\r\n 4, 9, 12, 16,\r\n 4, 9, 16, 16,\r\n 6, 10, 12, 18,\r\n 6, 10, 17, 16,\r\n 6, 11, 16, 19,\r\n 6, 13, 18, 21,\r\n 7, 14, 21, 25,\r\n 8, 16, 20, 25,\r\n 8, 17, 23, 25,\r\n 9, 17, 23, 34,\r\n 9, 18, 25, 30,\r\n 10, 20, 27, 32,\r\n 12, 21, 29, 35,\r\n 12, 23, 34, 37,\r\n 12, 25, 34, 40,\r\n 13, 26, 35, 42,\r\n 14, 28, 38, 45,\r\n 15, 29, 40, 48,\r\n 16, 31, 43, 51,\r\n 17, 33, 45, 54,\r\n 18, 35, 48, 57,\r\n 19, 37, 51, 60,\r\n 19, 38, 53, 63,\r\n 20, 40, 56, 66,\r\n 21, 43, 59, 70,\r\n 22, 45, 62, 74,\r\n 24, 47, 65, 77,\r\n 25, 49, 68, 81\r\n]\r\n\r\nconst EC_CODEWORDS_TABLE = [\r\n// L M Q H\r\n 7, 10, 13, 17,\r\n 10, 16, 22, 28,\r\n 15, 26, 36, 44,\r\n 20, 36, 52, 64,\r\n 26, 48, 72, 88,\r\n 36, 64, 96, 112,\r\n 40, 72, 108, 130,\r\n 48, 88, 132, 156,\r\n 60, 110, 160, 192,\r\n 72, 130, 192, 224,\r\n 80, 150, 224, 264,\r\n 96, 176, 260, 308,\r\n 104, 198, 288, 352,\r\n 120, 216, 320, 384,\r\n 132, 240, 360, 432,\r\n 144, 280, 408, 480,\r\n 168, 308, 448, 532,\r\n 180, 338, 504, 588,\r\n 196, 364, 546, 650,\r\n 224, 416, 600, 700,\r\n 224, 442, 644, 750,\r\n 252, 476, 690, 816,\r\n 270, 504, 750, 900,\r\n 300, 560, 810, 960,\r\n 312, 588, 870, 1050,\r\n 336, 644, 952, 1110,\r\n 360, 700, 1020, 1200,\r\n 390, 728, 1050, 1260,\r\n 420, 784, 1140, 1350,\r\n 450, 812, 1200, 1440,\r\n 480, 868, 1290, 1530,\r\n 510, 924, 1350, 1620,\r\n 540, 980, 1440, 1710,\r\n 570, 1036, 1530, 1800,\r\n 570, 1064, 1590, 1890,\r\n 600, 1120, 1680, 1980,\r\n 630, 1204, 1770, 2100,\r\n 660, 1260, 1860, 2220,\r\n 720, 1316, 1950, 2310,\r\n 750, 1372, 2040, 2430\r\n]\r\n\r\n/**\r\n * Returns the number of error correction block that the QR Code should contain\r\n * for the specified version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction blocks\r\n */\r\nexports.getBlocksCount = function getBlocksCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_BLOCKS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\n/**\r\n * Returns the number of error correction codewords to use for the specified\r\n * version and error correction level.\r\n *\r\n * @param {Number} version QR Code version\r\n * @param {Number} errorCorrectionLevel Error correction level\r\n * @return {Number} Number of error correction codewords\r\n */\r\nexports.getTotalCodewordsCount = function getTotalCodewordsCount (version, errorCorrectionLevel) {\r\n switch (errorCorrectionLevel) {\r\n case ECLevel.L:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 0]\r\n case ECLevel.M:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 1]\r\n case ECLevel.Q:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 2]\r\n case ECLevel.H:\r\n return EC_CODEWORDS_TABLE[(version - 1) * 4 + 3]\r\n default:\r\n return undefined\r\n }\r\n}\r\n","exports.L = { bit: 1 }\nexports.M = { bit: 0 }\nexports.Q = { bit: 3 }\nexports.H = { bit: 2 }\n\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'l':\n case 'low':\n return exports.L\n\n case 'm':\n case 'medium':\n return exports.M\n\n case 'q':\n case 'quartile':\n return exports.Q\n\n case 'h':\n case 'high':\n return exports.H\n\n default:\n throw new Error('Unknown EC Level: ' + string)\n }\n}\n\nexports.isValid = function isValid (level) {\n return level && typeof level.bit !== 'undefined' &&\n level.bit >= 0 && level.bit < 4\n}\n\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const getSymbolSize = require('./utils').getSymbolSize\nconst FINDER_PATTERN_SIZE = 7\n\n/**\n * Returns an array containing the positions of each finder pattern.\n * Each array's element represent the top-left point of the pattern as (x, y) coordinates\n *\n * @param {Number} version QR Code version\n * @return {Array} Array of coordinates\n */\nexports.getPositions = function getPositions (version) {\n const size = getSymbolSize(version)\n\n return [\n // top-left\n [0, 0],\n // top-right\n [size - FINDER_PATTERN_SIZE, 0],\n // bottom-left\n [0, size - FINDER_PATTERN_SIZE]\n ]\n}\n","const Utils = require('./utils')\n\nconst G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)\nconst G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)\nconst G15_BCH = Utils.getBCHDigit(G15)\n\n/**\n * Returns format information with relative error correction bits\n *\n * The format information is a 15-bit sequence containing 5 data bits,\n * with 10 error correction bits calculated using the (15, 5) BCH code.\n *\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Number} mask Mask pattern\n * @return {Number} Encoded format information bits\n */\nexports.getEncodedBits = function getEncodedBits (errorCorrectionLevel, mask) {\n const data = ((errorCorrectionLevel.bit << 3) | mask)\n let d = data << 10\n\n while (Utils.getBCHDigit(d) - G15_BCH >= 0) {\n d ^= (G15 << (Utils.getBCHDigit(d) - G15_BCH))\n }\n\n // xor final data with mask pattern in order to ensure that\n // no combination of Error Correction Level and data mask pattern\n // will result in an all-zero data string\n return ((data << 10) | d) ^ G15_MASK\n}\n","const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n","const Mode = require('./mode')\nconst Utils = require('./utils')\n\nfunction KanjiData (data) {\n this.mode = Mode.KANJI\n this.data = data\n}\n\nKanjiData.getBitsLength = function getBitsLength (length) {\n return length * 13\n}\n\nKanjiData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nKanjiData.prototype.getBitsLength = function getBitsLength () {\n return KanjiData.getBitsLength(this.data.length)\n}\n\nKanjiData.prototype.write = function (bitBuffer) {\n let i\n\n // In the Shift JIS system, Kanji characters are represented by a two byte combination.\n // These byte values are shifted from the JIS X 0208 values.\n // JIS X 0208 gives details of the shift coded representation.\n for (i = 0; i < this.data.length; i++) {\n let value = Utils.toSJIS(this.data[i])\n\n // For characters with Shift JIS values from 0x8140 to 0x9FFC:\n if (value >= 0x8140 && value <= 0x9FFC) {\n // Subtract 0x8140 from Shift JIS value\n value -= 0x8140\n\n // For characters with Shift JIS values from 0xE040 to 0xEBBF\n } else if (value >= 0xE040 && value <= 0xEBBF) {\n // Subtract 0xC140 from Shift JIS value\n value -= 0xC140\n } else {\n throw new Error(\n 'Invalid SJIS character: ' + this.data[i] + '\\n' +\n 'Make sure your charset is UTF-8')\n }\n\n // Multiply most significant byte of result by 0xC0\n // and add least significant byte to product\n value = (((value >>> 8) & 0xff) * 0xC0) + (value & 0xff)\n\n // Convert result to a 13-bit binary string\n bitBuffer.put(value, 13)\n }\n}\n\nmodule.exports = KanjiData\n","/**\n * Data mask pattern reference\n * @type {Object}\n */\nexports.Patterns = {\n PATTERN000: 0,\n PATTERN001: 1,\n PATTERN010: 2,\n PATTERN011: 3,\n PATTERN100: 4,\n PATTERN101: 5,\n PATTERN110: 6,\n PATTERN111: 7\n}\n\n/**\n * Weighted penalty scores for the undesirable features\n * @type {Object}\n */\nconst PenaltyScores = {\n N1: 3,\n N2: 3,\n N3: 40,\n N4: 10\n}\n\n/**\n * Check if mask pattern value is valid\n *\n * @param {Number} mask Mask pattern\n * @return {Boolean} true if valid, false otherwise\n */\nexports.isValid = function isValid (mask) {\n return mask != null && mask !== '' && !isNaN(mask) && mask >= 0 && mask <= 7\n}\n\n/**\n * Returns mask pattern from a value.\n * If value is not valid, returns undefined\n *\n * @param {Number|String} value Mask pattern value\n * @return {Number} Valid mask pattern or undefined\n */\nexports.from = function from (value) {\n return exports.isValid(value) ? parseInt(value, 10) : undefined\n}\n\n/**\n* Find adjacent modules in row/column with the same color\n* and assign a penalty value.\n*\n* Points: N1 + i\n* i is the amount by which the number of adjacent modules of the same color exceeds 5\n*/\nexports.getPenaltyN1 = function getPenaltyN1 (data) {\n const size = data.size\n let points = 0\n let sameCountCol = 0\n let sameCountRow = 0\n let lastCol = null\n let lastRow = null\n\n for (let row = 0; row < size; row++) {\n sameCountCol = sameCountRow = 0\n lastCol = lastRow = null\n\n for (let col = 0; col < size; col++) {\n let module = data.get(row, col)\n if (module === lastCol) {\n sameCountCol++\n } else {\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n lastCol = module\n sameCountCol = 1\n }\n\n module = data.get(col, row)\n if (module === lastRow) {\n sameCountRow++\n } else {\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n lastRow = module\n sameCountRow = 1\n }\n }\n\n if (sameCountCol >= 5) points += PenaltyScores.N1 + (sameCountCol - 5)\n if (sameCountRow >= 5) points += PenaltyScores.N1 + (sameCountRow - 5)\n }\n\n return points\n}\n\n/**\n * Find 2x2 blocks with the same color and assign a penalty value\n *\n * Points: N2 * (m - 1) * (n - 1)\n */\nexports.getPenaltyN2 = function getPenaltyN2 (data) {\n const size = data.size\n let points = 0\n\n for (let row = 0; row < size - 1; row++) {\n for (let col = 0; col < size - 1; col++) {\n const last = data.get(row, col) +\n data.get(row, col + 1) +\n data.get(row + 1, col) +\n data.get(row + 1, col + 1)\n\n if (last === 4 || last === 0) points++\n }\n }\n\n return points * PenaltyScores.N2\n}\n\n/**\n * Find 1:1:3:1:1 ratio (dark:light:dark:light:dark) pattern in row/column,\n * preceded or followed by light area 4 modules wide\n *\n * Points: N3 * number of pattern found\n */\nexports.getPenaltyN3 = function getPenaltyN3 (data) {\n const size = data.size\n let points = 0\n let bitsCol = 0\n let bitsRow = 0\n\n for (let row = 0; row < size; row++) {\n bitsCol = bitsRow = 0\n for (let col = 0; col < size; col++) {\n bitsCol = ((bitsCol << 1) & 0x7FF) | data.get(row, col)\n if (col >= 10 && (bitsCol === 0x5D0 || bitsCol === 0x05D)) points++\n\n bitsRow = ((bitsRow << 1) & 0x7FF) | data.get(col, row)\n if (col >= 10 && (bitsRow === 0x5D0 || bitsRow === 0x05D)) points++\n }\n }\n\n return points * PenaltyScores.N3\n}\n\n/**\n * Calculate proportion of dark modules in entire symbol\n *\n * Points: N4 * k\n *\n * k is the rating of the deviation of the proportion of dark modules\n * in the symbol from 50% in steps of 5%\n */\nexports.getPenaltyN4 = function getPenaltyN4 (data) {\n let darkCount = 0\n const modulesCount = data.data.length\n\n for (let i = 0; i < modulesCount; i++) darkCount += data.data[i]\n\n const k = Math.abs(Math.ceil((darkCount * 100 / modulesCount) / 5) - 10)\n\n return k * PenaltyScores.N4\n}\n\n/**\n * Return mask value at given position\n *\n * @param {Number} maskPattern Pattern reference value\n * @param {Number} i Row\n * @param {Number} j Column\n * @return {Boolean} Mask value\n */\nfunction getMaskAt (maskPattern, i, j) {\n switch (maskPattern) {\n case exports.Patterns.PATTERN000: return (i + j) % 2 === 0\n case exports.Patterns.PATTERN001: return i % 2 === 0\n case exports.Patterns.PATTERN010: return j % 3 === 0\n case exports.Patterns.PATTERN011: return (i + j) % 3 === 0\n case exports.Patterns.PATTERN100: return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 === 0\n case exports.Patterns.PATTERN101: return (i * j) % 2 + (i * j) % 3 === 0\n case exports.Patterns.PATTERN110: return ((i * j) % 2 + (i * j) % 3) % 2 === 0\n case exports.Patterns.PATTERN111: return ((i * j) % 3 + (i + j) % 2) % 2 === 0\n\n default: throw new Error('bad maskPattern:' + maskPattern)\n }\n}\n\n/**\n * Apply a mask pattern to a BitMatrix\n *\n * @param {Number} pattern Pattern reference number\n * @param {BitMatrix} data BitMatrix data\n */\nexports.applyMask = function applyMask (pattern, data) {\n const size = data.size\n\n for (let col = 0; col < size; col++) {\n for (let row = 0; row < size; row++) {\n if (data.isReserved(row, col)) continue\n data.xor(row, col, getMaskAt(pattern, row, col))\n }\n }\n}\n\n/**\n * Returns the best mask pattern for data\n *\n * @param {BitMatrix} data\n * @return {Number} Mask pattern reference number\n */\nexports.getBestMask = function getBestMask (data, setupFormatFunc) {\n const numPatterns = Object.keys(exports.Patterns).length\n let bestPattern = 0\n let lowerPenalty = Infinity\n\n for (let p = 0; p < numPatterns; p++) {\n setupFormatFunc(p)\n exports.applyMask(p, data)\n\n // Calculate penalty\n const penalty =\n exports.getPenaltyN1(data) +\n exports.getPenaltyN2(data) +\n exports.getPenaltyN3(data) +\n exports.getPenaltyN4(data)\n\n // Undo previously applied mask\n exports.applyMask(p, data)\n\n if (penalty < lowerPenalty) {\n lowerPenalty = penalty\n bestPattern = p\n }\n }\n\n return bestPattern\n}\n","const VersionCheck = require('./version-check')\nconst Regex = require('./regex')\n\n/**\n * Numeric mode encodes data from the decimal digit set (0 - 9)\n * (byte values 30HEX to 39HEX).\n * Normally, 3 data characters are represented by 10 bits.\n *\n * @type {Object}\n */\nexports.NUMERIC = {\n id: 'Numeric',\n bit: 1 << 0,\n ccBits: [10, 12, 14]\n}\n\n/**\n * Alphanumeric mode encodes data from a set of 45 characters,\n * i.e. 10 numeric digits (0 - 9),\n * 26 alphabetic characters (A - Z),\n * and 9 symbols (SP, $, %, *, +, -, ., /, :).\n * Normally, two input characters are represented by 11 bits.\n *\n * @type {Object}\n */\nexports.ALPHANUMERIC = {\n id: 'Alphanumeric',\n bit: 1 << 1,\n ccBits: [9, 11, 13]\n}\n\n/**\n * In byte mode, data is encoded at 8 bits per character.\n *\n * @type {Object}\n */\nexports.BYTE = {\n id: 'Byte',\n bit: 1 << 2,\n ccBits: [8, 16, 16]\n}\n\n/**\n * The Kanji mode efficiently encodes Kanji characters in accordance with\n * the Shift JIS system based on JIS X 0208.\n * The Shift JIS values are shifted from the JIS X 0208 values.\n * JIS X 0208 gives details of the shift coded representation.\n * Each two-byte character value is compacted to a 13-bit binary codeword.\n *\n * @type {Object}\n */\nexports.KANJI = {\n id: 'Kanji',\n bit: 1 << 3,\n ccBits: [8, 10, 12]\n}\n\n/**\n * Mixed mode will contain a sequences of data in a combination of any of\n * the modes described above\n *\n * @type {Object}\n */\nexports.MIXED = {\n bit: -1\n}\n\n/**\n * Returns the number of bits needed to store the data length\n * according to QR Code specifications.\n *\n * @param {Mode} mode Data mode\n * @param {Number} version QR Code version\n * @return {Number} Number of bits\n */\nexports.getCharCountIndicator = function getCharCountIndicator (mode, version) {\n if (!mode.ccBits) throw new Error('Invalid mode: ' + mode)\n\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid version: ' + version)\n }\n\n if (version >= 1 && version < 10) return mode.ccBits[0]\n else if (version < 27) return mode.ccBits[1]\n return mode.ccBits[2]\n}\n\n/**\n * Returns the most efficient mode to store the specified data\n *\n * @param {String} dataStr Input data string\n * @return {Mode} Best mode\n */\nexports.getBestModeForData = function getBestModeForData (dataStr) {\n if (Regex.testNumeric(dataStr)) return exports.NUMERIC\n else if (Regex.testAlphanumeric(dataStr)) return exports.ALPHANUMERIC\n else if (Regex.testKanji(dataStr)) return exports.KANJI\n else return exports.BYTE\n}\n\n/**\n * Return mode name as string\n *\n * @param {Mode} mode Mode object\n * @returns {String} Mode name\n */\nexports.toString = function toString (mode) {\n if (mode && mode.id) return mode.id\n throw new Error('Invalid mode')\n}\n\n/**\n * Check if input param is a valid mode object\n *\n * @param {Mode} mode Mode object\n * @returns {Boolean} True if valid mode, false otherwise\n */\nexports.isValid = function isValid (mode) {\n return mode && mode.bit && mode.ccBits\n}\n\n/**\n * Get mode object from its name\n *\n * @param {String} string Mode name\n * @returns {Mode} Mode object\n */\nfunction fromString (string) {\n if (typeof string !== 'string') {\n throw new Error('Param is not a string')\n }\n\n const lcStr = string.toLowerCase()\n\n switch (lcStr) {\n case 'numeric':\n return exports.NUMERIC\n case 'alphanumeric':\n return exports.ALPHANUMERIC\n case 'kanji':\n return exports.KANJI\n case 'byte':\n return exports.BYTE\n default:\n throw new Error('Unknown mode: ' + string)\n }\n}\n\n/**\n * Returns mode from a value.\n * If value is not a valid mode, returns defaultValue\n *\n * @param {Mode|String} value Encoding mode\n * @param {Mode} defaultValue Fallback value\n * @return {Mode} Encoding mode\n */\nexports.from = function from (value, defaultValue) {\n if (exports.isValid(value)) {\n return value\n }\n\n try {\n return fromString(value)\n } catch (e) {\n return defaultValue\n }\n}\n","const Mode = require('./mode')\n\nfunction NumericData (data) {\n this.mode = Mode.NUMERIC\n this.data = data.toString()\n}\n\nNumericData.getBitsLength = function getBitsLength (length) {\n return 10 * Math.floor(length / 3) + ((length % 3) ? ((length % 3) * 3 + 1) : 0)\n}\n\nNumericData.prototype.getLength = function getLength () {\n return this.data.length\n}\n\nNumericData.prototype.getBitsLength = function getBitsLength () {\n return NumericData.getBitsLength(this.data.length)\n}\n\nNumericData.prototype.write = function write (bitBuffer) {\n let i, group, value\n\n // The input data string is divided into groups of three digits,\n // and each group is converted to its 10-bit binary equivalent.\n for (i = 0; i + 3 <= this.data.length; i += 3) {\n group = this.data.substr(i, 3)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, 10)\n }\n\n // If the number of input digits is not an exact multiple of three,\n // the final one or two digits are converted to 4 or 7 bits respectively.\n const remainingNum = this.data.length - i\n if (remainingNum > 0) {\n group = this.data.substr(i)\n value = parseInt(group, 10)\n\n bitBuffer.put(value, remainingNum * 3 + 1)\n }\n}\n\nmodule.exports = NumericData\n","const GF = require('./galois-field')\n\n/**\n * Multiplies two polynomials inside Galois Field\n *\n * @param {Uint8Array} p1 Polynomial\n * @param {Uint8Array} p2 Polynomial\n * @return {Uint8Array} Product of p1 and p2\n */\nexports.mul = function mul (p1, p2) {\n const coeff = new Uint8Array(p1.length + p2.length - 1)\n\n for (let i = 0; i < p1.length; i++) {\n for (let j = 0; j < p2.length; j++) {\n coeff[i + j] ^= GF.mul(p1[i], p2[j])\n }\n }\n\n return coeff\n}\n\n/**\n * Calculate the remainder of polynomials division\n *\n * @param {Uint8Array} divident Polynomial\n * @param {Uint8Array} divisor Polynomial\n * @return {Uint8Array} Remainder\n */\nexports.mod = function mod (divident, divisor) {\n let result = new Uint8Array(divident)\n\n while ((result.length - divisor.length) >= 0) {\n const coeff = result[0]\n\n for (let i = 0; i < divisor.length; i++) {\n result[i] ^= GF.mul(divisor[i], coeff)\n }\n\n // remove all zeros from buffer head\n let offset = 0\n while (offset < result.length && result[offset] === 0) offset++\n result = result.slice(offset)\n }\n\n return result\n}\n\n/**\n * Generate an irreducible generator polynomial of specified degree\n * (used by Reed-Solomon encoder)\n *\n * @param {Number} degree Degree of the generator polynomial\n * @return {Uint8Array} Buffer containing polynomial coefficients\n */\nexports.generateECPolynomial = function generateECPolynomial (degree) {\n let poly = new Uint8Array([1])\n for (let i = 0; i < degree; i++) {\n poly = exports.mul(poly, new Uint8Array([1, GF.exp(i)]))\n }\n\n return poly\n}\n","const Utils = require('./utils')\nconst ECLevel = require('./error-correction-level')\nconst BitBuffer = require('./bit-buffer')\nconst BitMatrix = require('./bit-matrix')\nconst AlignmentPattern = require('./alignment-pattern')\nconst FinderPattern = require('./finder-pattern')\nconst MaskPattern = require('./mask-pattern')\nconst ECCode = require('./error-correction-code')\nconst ReedSolomonEncoder = require('./reed-solomon-encoder')\nconst Version = require('./version')\nconst FormatInfo = require('./format-info')\nconst Mode = require('./mode')\nconst Segments = require('./segments')\n\n/**\n * QRCode for JavaScript\n *\n * modified by Ryan Day for nodejs support\n * Copyright (c) 2011 Ryan Day\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/mit-license.php\n *\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word \"QR Code\" is registered trademark of\n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\n*/\n\n/**\n * Add finder patterns bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupFinderPattern (matrix, version) {\n const size = matrix.size\n const pos = FinderPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -1; r <= 7; r++) {\n if (row + r <= -1 || size <= row + r) continue\n\n for (let c = -1; c <= 7; c++) {\n if (col + c <= -1 || size <= col + c) continue\n\n if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||\n (c >= 0 && c <= 6 && (r === 0 || r === 6)) ||\n (r >= 2 && r <= 4 && c >= 2 && c <= 4)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add timing pattern bits to matrix\n *\n * Note: this function must be called before {@link setupAlignmentPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n */\nfunction setupTimingPattern (matrix) {\n const size = matrix.size\n\n for (let r = 8; r < size - 8; r++) {\n const value = r % 2 === 0\n matrix.set(r, 6, value, true)\n matrix.set(6, r, value, true)\n }\n}\n\n/**\n * Add alignment patterns bits to matrix\n *\n * Note: this function must be called after {@link setupTimingPattern}\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupAlignmentPattern (matrix, version) {\n const pos = AlignmentPattern.getPositions(version)\n\n for (let i = 0; i < pos.length; i++) {\n const row = pos[i][0]\n const col = pos[i][1]\n\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n if (r === -2 || r === 2 || c === -2 || c === 2 ||\n (r === 0 && c === 0)) {\n matrix.set(row + r, col + c, true, true)\n } else {\n matrix.set(row + r, col + c, false, true)\n }\n }\n }\n }\n}\n\n/**\n * Add version info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Number} version QR Code version\n */\nfunction setupVersionInfo (matrix, version) {\n const size = matrix.size\n const bits = Version.getEncodedBits(version)\n let row, col, mod\n\n for (let i = 0; i < 18; i++) {\n row = Math.floor(i / 3)\n col = i % 3 + size - 8 - 3\n mod = ((bits >> i) & 1) === 1\n\n matrix.set(row, col, mod, true)\n matrix.set(col, row, mod, true)\n }\n}\n\n/**\n * Add format info bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {Number} maskPattern Mask pattern reference value\n */\nfunction setupFormatInfo (matrix, errorCorrectionLevel, maskPattern) {\n const size = matrix.size\n const bits = FormatInfo.getEncodedBits(errorCorrectionLevel, maskPattern)\n let i, mod\n\n for (i = 0; i < 15; i++) {\n mod = ((bits >> i) & 1) === 1\n\n // vertical\n if (i < 6) {\n matrix.set(i, 8, mod, true)\n } else if (i < 8) {\n matrix.set(i + 1, 8, mod, true)\n } else {\n matrix.set(size - 15 + i, 8, mod, true)\n }\n\n // horizontal\n if (i < 8) {\n matrix.set(8, size - i - 1, mod, true)\n } else if (i < 9) {\n matrix.set(8, 15 - i - 1 + 1, mod, true)\n } else {\n matrix.set(8, 15 - i - 1, mod, true)\n }\n }\n\n // fixed module\n matrix.set(size - 8, 8, 1, true)\n}\n\n/**\n * Add encoded data bits to matrix\n *\n * @param {BitMatrix} matrix Modules matrix\n * @param {Uint8Array} data Data codewords\n */\nfunction setupData (matrix, data) {\n const size = matrix.size\n let inc = -1\n let row = size - 1\n let bitIndex = 7\n let byteIndex = 0\n\n for (let col = size - 1; col > 0; col -= 2) {\n if (col === 6) col--\n\n while (true) {\n for (let c = 0; c < 2; c++) {\n if (!matrix.isReserved(row, col - c)) {\n let dark = false\n\n if (byteIndex < data.length) {\n dark = (((data[byteIndex] >>> bitIndex) & 1) === 1)\n }\n\n matrix.set(row, col - c, dark)\n bitIndex--\n\n if (bitIndex === -1) {\n byteIndex++\n bitIndex = 7\n }\n }\n }\n\n row += inc\n\n if (row < 0 || size <= row) {\n row -= inc\n inc = -inc\n break\n }\n }\n }\n}\n\n/**\n * Create encoded codewords from data input\n *\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @param {ByteData} data Data input\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createData (version, errorCorrectionLevel, segments) {\n // Prepare data buffer\n const buffer = new BitBuffer()\n\n segments.forEach(function (data) {\n // prefix data with mode indicator (4 bits)\n buffer.put(data.mode.bit, 4)\n\n // Prefix data with character count indicator.\n // The character count indicator is a string of bits that represents the\n // number of characters that are being encoded.\n // The character count indicator must be placed after the mode indicator\n // and must be a certain number of bits long, depending on the QR version\n // and data mode\n // @see {@link Mode.getCharCountIndicator}.\n buffer.put(data.getLength(), Mode.getCharCountIndicator(data.mode, version))\n\n // add binary data sequence to buffer\n data.write(buffer)\n })\n\n // Calculate required number of bits\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n // Add a terminator.\n // If the bit string is shorter than the total number of required bits,\n // a terminator of up to four 0s must be added to the right side of the string.\n // If the bit string is more than four bits shorter than the required number of bits,\n // add four 0s to the end.\n if (buffer.getLengthInBits() + 4 <= dataTotalCodewordsBits) {\n buffer.put(0, 4)\n }\n\n // If the bit string is fewer than four bits shorter, add only the number of 0s that\n // are needed to reach the required number of bits.\n\n // After adding the terminator, if the number of bits in the string is not a multiple of 8,\n // pad the string on the right with 0s to make the string's length a multiple of 8.\n while (buffer.getLengthInBits() % 8 !== 0) {\n buffer.putBit(0)\n }\n\n // Add pad bytes if the string is still shorter than the total number of required bits.\n // Extend the buffer to fill the data capacity of the symbol corresponding to\n // the Version and Error Correction Level by adding the Pad Codewords 11101100 (0xEC)\n // and 00010001 (0x11) alternately.\n const remainingByte = (dataTotalCodewordsBits - buffer.getLengthInBits()) / 8\n for (let i = 0; i < remainingByte; i++) {\n buffer.put(i % 2 ? 0x11 : 0xEC, 8)\n }\n\n return createCodewords(buffer, version, errorCorrectionLevel)\n}\n\n/**\n * Encode input data with Reed-Solomon and return codewords with\n * relative error correction bits\n *\n * @param {BitBuffer} bitBuffer Data to encode\n * @param {Number} version QR Code version\n * @param {ErrorCorrectionLevel} errorCorrectionLevel Error correction level\n * @return {Uint8Array} Buffer containing encoded codewords\n */\nfunction createCodewords (bitBuffer, version, errorCorrectionLevel) {\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewords = totalCodewords - ecTotalCodewords\n\n // Total number of blocks\n const ecTotalBlocks = ECCode.getBlocksCount(version, errorCorrectionLevel)\n\n // Calculate how many blocks each group should contain\n const blocksInGroup2 = totalCodewords % ecTotalBlocks\n const blocksInGroup1 = ecTotalBlocks - blocksInGroup2\n\n const totalCodewordsInGroup1 = Math.floor(totalCodewords / ecTotalBlocks)\n\n const dataCodewordsInGroup1 = Math.floor(dataTotalCodewords / ecTotalBlocks)\n const dataCodewordsInGroup2 = dataCodewordsInGroup1 + 1\n\n // Number of EC codewords is the same for both groups\n const ecCount = totalCodewordsInGroup1 - dataCodewordsInGroup1\n\n // Initialize a Reed-Solomon encoder with a generator polynomial of degree ecCount\n const rs = new ReedSolomonEncoder(ecCount)\n\n let offset = 0\n const dcData = new Array(ecTotalBlocks)\n const ecData = new Array(ecTotalBlocks)\n let maxDataSize = 0\n const buffer = new Uint8Array(bitBuffer.buffer)\n\n // Divide the buffer into the required number of blocks\n for (let b = 0; b < ecTotalBlocks; b++) {\n const dataSize = b < blocksInGroup1 ? dataCodewordsInGroup1 : dataCodewordsInGroup2\n\n // extract a block of data from buffer\n dcData[b] = buffer.slice(offset, offset + dataSize)\n\n // Calculate EC codewords for this data block\n ecData[b] = rs.encode(dcData[b])\n\n offset += dataSize\n maxDataSize = Math.max(maxDataSize, dataSize)\n }\n\n // Create final data\n // Interleave the data and error correction codewords from each block\n const data = new Uint8Array(totalCodewords)\n let index = 0\n let i, r\n\n // Add data codewords\n for (i = 0; i < maxDataSize; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n if (i < dcData[r].length) {\n data[index++] = dcData[r][i]\n }\n }\n }\n\n // Apped EC codewords\n for (i = 0; i < ecCount; i++) {\n for (r = 0; r < ecTotalBlocks; r++) {\n data[index++] = ecData[r][i]\n }\n }\n\n return data\n}\n\n/**\n * Build QR Code symbol\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @param {ErrorCorretionLevel} errorCorrectionLevel Error level\n * @param {MaskPattern} maskPattern Mask pattern\n * @return {Object} Object containing symbol data\n */\nfunction createSymbol (data, version, errorCorrectionLevel, maskPattern) {\n let segments\n\n if (Array.isArray(data)) {\n segments = Segments.fromArray(data)\n } else if (typeof data === 'string') {\n let estimatedVersion = version\n\n if (!estimatedVersion) {\n const rawSegments = Segments.rawSplit(data)\n\n // Estimate best version that can contain raw splitted segments\n estimatedVersion = Version.getBestVersionForData(rawSegments, errorCorrectionLevel)\n }\n\n // Build optimized segments\n // If estimated version is undefined, try with the highest version\n segments = Segments.fromString(data, estimatedVersion || 40)\n } else {\n throw new Error('Invalid data')\n }\n\n // Get the min version that can contain data\n const bestVersion = Version.getBestVersionForData(segments, errorCorrectionLevel)\n\n // If no version is found, data cannot be stored\n if (!bestVersion) {\n throw new Error('The amount of data is too big to be stored in a QR Code')\n }\n\n // If not specified, use min version as default\n if (!version) {\n version = bestVersion\n\n // Check if the specified version can contain the data\n } else if (version < bestVersion) {\n throw new Error('\\n' +\n 'The chosen QR Code version cannot contain this amount of data.\\n' +\n 'Minimum version required to store current data is: ' + bestVersion + '.\\n'\n )\n }\n\n const dataBits = createData(version, errorCorrectionLevel, segments)\n\n // Allocate matrix buffer\n const moduleCount = Utils.getSymbolSize(version)\n const modules = new BitMatrix(moduleCount)\n\n // Add function modules\n setupFinderPattern(modules, version)\n setupTimingPattern(modules)\n setupAlignmentPattern(modules, version)\n\n // Add temporary dummy bits for format info just to set them as reserved.\n // This is needed to prevent these bits from being masked by {@link MaskPattern.applyMask}\n // since the masking operation must be performed only on the encoding region.\n // These blocks will be replaced with correct values later in code.\n setupFormatInfo(modules, errorCorrectionLevel, 0)\n\n if (version >= 7) {\n setupVersionInfo(modules, version)\n }\n\n // Add data codewords\n setupData(modules, dataBits)\n\n if (isNaN(maskPattern)) {\n // Find best mask pattern\n maskPattern = MaskPattern.getBestMask(modules,\n setupFormatInfo.bind(null, modules, errorCorrectionLevel))\n }\n\n // Apply mask pattern\n MaskPattern.applyMask(maskPattern, modules)\n\n // Replace format info bits with correct values\n setupFormatInfo(modules, errorCorrectionLevel, maskPattern)\n\n return {\n modules: modules,\n version: version,\n errorCorrectionLevel: errorCorrectionLevel,\n maskPattern: maskPattern,\n segments: segments\n }\n}\n\n/**\n * QR Code\n *\n * @param {String | Array} data Input data\n * @param {Object} options Optional configurations\n * @param {Number} options.version QR Code version\n * @param {String} options.errorCorrectionLevel Error correction level\n * @param {Function} options.toSJISFunc Helper func to convert utf8 to sjis\n */\nexports.create = function create (data, options) {\n if (typeof data === 'undefined' || data === '') {\n throw new Error('No input text')\n }\n\n let errorCorrectionLevel = ECLevel.M\n let version\n let mask\n\n if (typeof options !== 'undefined') {\n // Use higher error correction level as default\n errorCorrectionLevel = ECLevel.from(options.errorCorrectionLevel, ECLevel.M)\n version = Version.from(options.version)\n mask = MaskPattern.from(options.maskPattern)\n\n if (options.toSJISFunc) {\n Utils.setToSJISFunction(options.toSJISFunc)\n }\n }\n\n return createSymbol(data, version, errorCorrectionLevel, mask)\n}\n","const Polynomial = require('./polynomial')\n\nfunction ReedSolomonEncoder (degree) {\n this.genPoly = undefined\n this.degree = degree\n\n if (this.degree) this.initialize(this.degree)\n}\n\n/**\n * Initialize the encoder.\n * The input param should correspond to the number of error correction codewords.\n *\n * @param {Number} degree\n */\nReedSolomonEncoder.prototype.initialize = function initialize (degree) {\n // create an irreducible generator polynomial\n this.degree = degree\n this.genPoly = Polynomial.generateECPolynomial(this.degree)\n}\n\n/**\n * Encodes a chunk of data\n *\n * @param {Uint8Array} data Buffer containing input data\n * @return {Uint8Array} Buffer containing encoded data\n */\nReedSolomonEncoder.prototype.encode = function encode (data) {\n if (!this.genPoly) {\n throw new Error('Encoder not initialized')\n }\n\n // Calculate EC for this data block\n // extends data size to data+genPoly size\n const paddedData = new Uint8Array(data.length + this.degree)\n paddedData.set(data)\n\n // The error correction codewords are the remainder after dividing the data codewords\n // by a generator polynomial\n const remainder = Polynomial.mod(paddedData, this.genPoly)\n\n // return EC data blocks (last n byte, where n is the degree of genPoly)\n // If coefficients number in remainder are less than genPoly degree,\n // pad with 0s to the left to reach the needed number of coefficients\n const start = this.degree - remainder.length\n if (start > 0) {\n const buff = new Uint8Array(this.degree)\n buff.set(remainder, start)\n\n return buff\n }\n\n return remainder\n}\n\nmodule.exports = ReedSolomonEncoder\n","const numeric = '[0-9]+'\nconst alphanumeric = '[A-Z $%*+\\\\-./:]+'\nlet kanji = '(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|' +\n '[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|' +\n '[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|' +\n '[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+'\nkanji = kanji.replace(/u/g, '\\\\u')\n\nconst byte = '(?:(?![A-Z0-9 $%*+\\\\-./:]|' + kanji + ')(?:.|[\\r\\n]))+'\n\nexports.KANJI = new RegExp(kanji, 'g')\nexports.BYTE_KANJI = new RegExp('[^A-Z0-9 $%*+\\\\-./:]+', 'g')\nexports.BYTE = new RegExp(byte, 'g')\nexports.NUMERIC = new RegExp(numeric, 'g')\nexports.ALPHANUMERIC = new RegExp(alphanumeric, 'g')\n\nconst TEST_KANJI = new RegExp('^' + kanji + '$')\nconst TEST_NUMERIC = new RegExp('^' + numeric + '$')\nconst TEST_ALPHANUMERIC = new RegExp('^[A-Z0-9 $%*+\\\\-./:]+$')\n\nexports.testKanji = function testKanji (str) {\n return TEST_KANJI.test(str)\n}\n\nexports.testNumeric = function testNumeric (str) {\n return TEST_NUMERIC.test(str)\n}\n\nexports.testAlphanumeric = function testAlphanumeric (str) {\n return TEST_ALPHANUMERIC.test(str)\n}\n","const Mode = require('./mode')\nconst NumericData = require('./numeric-data')\nconst AlphanumericData = require('./alphanumeric-data')\nconst ByteData = require('./byte-data')\nconst KanjiData = require('./kanji-data')\nconst Regex = require('./regex')\nconst Utils = require('./utils')\nconst dijkstra = require('dijkstrajs')\n\n/**\n * Returns UTF8 byte length\n *\n * @param {String} str Input string\n * @return {Number} Number of byte\n */\nfunction getStringByteLength (str) {\n return unescape(encodeURIComponent(str)).length\n}\n\n/**\n * Get a list of segments of the specified mode\n * from a string\n *\n * @param {Mode} mode Segment mode\n * @param {String} str String to process\n * @return {Array} Array of object with segments data\n */\nfunction getSegments (regex, mode, str) {\n const segments = []\n let result\n\n while ((result = regex.exec(str)) !== null) {\n segments.push({\n data: result[0],\n index: result.index,\n mode: mode,\n length: result[0].length\n })\n }\n\n return segments\n}\n\n/**\n * Extracts a series of segments with the appropriate\n * modes from a string\n *\n * @param {String} dataStr Input string\n * @return {Array} Array of object with segments data\n */\nfunction getSegmentsFromString (dataStr) {\n const numSegs = getSegments(Regex.NUMERIC, Mode.NUMERIC, dataStr)\n const alphaNumSegs = getSegments(Regex.ALPHANUMERIC, Mode.ALPHANUMERIC, dataStr)\n let byteSegs\n let kanjiSegs\n\n if (Utils.isKanjiModeEnabled()) {\n byteSegs = getSegments(Regex.BYTE, Mode.BYTE, dataStr)\n kanjiSegs = getSegments(Regex.KANJI, Mode.KANJI, dataStr)\n } else {\n byteSegs = getSegments(Regex.BYTE_KANJI, Mode.BYTE, dataStr)\n kanjiSegs = []\n }\n\n const segs = numSegs.concat(alphaNumSegs, byteSegs, kanjiSegs)\n\n return segs\n .sort(function (s1, s2) {\n return s1.index - s2.index\n })\n .map(function (obj) {\n return {\n data: obj.data,\n mode: obj.mode,\n length: obj.length\n }\n })\n}\n\n/**\n * Returns how many bits are needed to encode a string of\n * specified length with the specified mode\n *\n * @param {Number} length String length\n * @param {Mode} mode Segment mode\n * @return {Number} Bit length\n */\nfunction getSegmentBitsLength (length, mode) {\n switch (mode) {\n case Mode.NUMERIC:\n return NumericData.getBitsLength(length)\n case Mode.ALPHANUMERIC:\n return AlphanumericData.getBitsLength(length)\n case Mode.KANJI:\n return KanjiData.getBitsLength(length)\n case Mode.BYTE:\n return ByteData.getBitsLength(length)\n }\n}\n\n/**\n * Merges adjacent segments which have the same mode\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction mergeSegments (segs) {\n return segs.reduce(function (acc, curr) {\n const prevSeg = acc.length - 1 >= 0 ? acc[acc.length - 1] : null\n if (prevSeg && prevSeg.mode === curr.mode) {\n acc[acc.length - 1].data += curr.data\n return acc\n }\n\n acc.push(curr)\n return acc\n }, [])\n}\n\n/**\n * Generates a list of all possible nodes combination which\n * will be used to build a segments graph.\n *\n * Nodes are divided by groups. Each group will contain a list of all the modes\n * in which is possible to encode the given text.\n *\n * For example the text '12345' can be encoded as Numeric, Alphanumeric or Byte.\n * The group for '12345' will contain then 3 objects, one for each\n * possible encoding mode.\n *\n * Each node represents a possible segment.\n *\n * @param {Array} segs Array of object with segments data\n * @return {Array} Array of object with segments data\n */\nfunction buildNodes (segs) {\n const nodes = []\n for (let i = 0; i < segs.length; i++) {\n const seg = segs[i]\n\n switch (seg.mode) {\n case Mode.NUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.ALPHANUMERIC, length: seg.length },\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.ALPHANUMERIC:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: seg.length }\n ])\n break\n case Mode.KANJI:\n nodes.push([seg,\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n break\n case Mode.BYTE:\n nodes.push([\n { data: seg.data, mode: Mode.BYTE, length: getStringByteLength(seg.data) }\n ])\n }\n }\n\n return nodes\n}\n\n/**\n * Builds a graph from a list of nodes.\n * All segments in each node group will be connected with all the segments of\n * the next group and so on.\n *\n * At each connection will be assigned a weight depending on the\n * segment's byte length.\n *\n * @param {Array} nodes Array of object with segments data\n * @param {Number} version QR Code version\n * @return {Object} Graph of all possible segments\n */\nfunction buildGraph (nodes, version) {\n const table = {}\n const graph = { start: {} }\n let prevNodeIds = ['start']\n\n for (let i = 0; i < nodes.length; i++) {\n const nodeGroup = nodes[i]\n const currentNodeIds = []\n\n for (let j = 0; j < nodeGroup.length; j++) {\n const node = nodeGroup[j]\n const key = '' + i + j\n\n currentNodeIds.push(key)\n table[key] = { node: node, lastCount: 0 }\n graph[key] = {}\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n const prevNodeId = prevNodeIds[n]\n\n if (table[prevNodeId] && table[prevNodeId].node.mode === node.mode) {\n graph[prevNodeId][key] =\n getSegmentBitsLength(table[prevNodeId].lastCount + node.length, node.mode) -\n getSegmentBitsLength(table[prevNodeId].lastCount, node.mode)\n\n table[prevNodeId].lastCount += node.length\n } else {\n if (table[prevNodeId]) table[prevNodeId].lastCount = node.length\n\n graph[prevNodeId][key] = getSegmentBitsLength(node.length, node.mode) +\n 4 + Mode.getCharCountIndicator(node.mode, version) // switch cost\n }\n }\n }\n\n prevNodeIds = currentNodeIds\n }\n\n for (let n = 0; n < prevNodeIds.length; n++) {\n graph[prevNodeIds[n]].end = 0\n }\n\n return { map: graph, table: table }\n}\n\n/**\n * Builds a segment from a specified data and mode.\n * If a mode is not specified, the more suitable will be used.\n *\n * @param {String} data Input data\n * @param {Mode | String} modesHint Data mode\n * @return {Segment} Segment\n */\nfunction buildSingleSegment (data, modesHint) {\n let mode\n const bestMode = Mode.getBestModeForData(data)\n\n mode = Mode.from(modesHint, bestMode)\n\n // Make sure data can be encoded\n if (mode !== Mode.BYTE && mode.bit < bestMode.bit) {\n throw new Error('\"' + data + '\"' +\n ' cannot be encoded with mode ' + Mode.toString(mode) +\n '.\\n Suggested mode is: ' + Mode.toString(bestMode))\n }\n\n // Use Mode.BYTE if Kanji support is disabled\n if (mode === Mode.KANJI && !Utils.isKanjiModeEnabled()) {\n mode = Mode.BYTE\n }\n\n switch (mode) {\n case Mode.NUMERIC:\n return new NumericData(data)\n\n case Mode.ALPHANUMERIC:\n return new AlphanumericData(data)\n\n case Mode.KANJI:\n return new KanjiData(data)\n\n case Mode.BYTE:\n return new ByteData(data)\n }\n}\n\n/**\n * Builds a list of segments from an array.\n * Array can contain Strings or Objects with segment's info.\n *\n * For each item which is a string, will be generated a segment with the given\n * string and the more appropriate encoding mode.\n *\n * For each item which is an object, will be generated a segment with the given\n * data and mode.\n * Objects must contain at least the property \"data\".\n * If property \"mode\" is not present, the more suitable mode will be used.\n *\n * @param {Array} array Array of objects with segments data\n * @return {Array} Array of Segments\n */\nexports.fromArray = function fromArray (array) {\n return array.reduce(function (acc, seg) {\n if (typeof seg === 'string') {\n acc.push(buildSingleSegment(seg, null))\n } else if (seg.data) {\n acc.push(buildSingleSegment(seg.data, seg.mode))\n }\n\n return acc\n }, [])\n}\n\n/**\n * Builds an optimized sequence of segments from a string,\n * which will produce the shortest possible bitstream.\n *\n * @param {String} data Input string\n * @param {Number} version QR Code version\n * @return {Array} Array of segments\n */\nexports.fromString = function fromString (data, version) {\n const segs = getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n\n const nodes = buildNodes(segs)\n const graph = buildGraph(nodes, version)\n const path = dijkstra.find_path(graph.map, 'start', 'end')\n\n const optimizedSegs = []\n for (let i = 1; i < path.length - 1; i++) {\n optimizedSegs.push(graph.table[path[i]].node)\n }\n\n return exports.fromArray(mergeSegments(optimizedSegs))\n}\n\n/**\n * Splits a string in various segments with the modes which\n * best represent their content.\n * The produced segments are far from being optimized.\n * The output of this function is only used to estimate a QR Code version\n * which may contain the data.\n *\n * @param {string} data Input string\n * @return {Array} Array of segments\n */\nexports.rawSplit = function rawSplit (data) {\n return exports.fromArray(\n getSegmentsFromString(data, Utils.isKanjiModeEnabled())\n )\n}\n","let toSJISFunction\nconst CODEWORDS_COUNT = [\n 0, // Not used\n 26, 44, 70, 100, 134, 172, 196, 242, 292, 346,\n 404, 466, 532, 581, 655, 733, 815, 901, 991, 1085,\n 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 2185,\n 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 3706\n]\n\n/**\n * Returns the QR Code size for the specified version\n *\n * @param {Number} version QR Code version\n * @return {Number} size of QR code\n */\nexports.getSymbolSize = function getSymbolSize (version) {\n if (!version) throw new Error('\"version\" cannot be null or undefined')\n if (version < 1 || version > 40) throw new Error('\"version\" should be in range from 1 to 40')\n return version * 4 + 17\n}\n\n/**\n * Returns the total number of codewords used to store data and EC information.\n *\n * @param {Number} version QR Code version\n * @return {Number} Data length in bits\n */\nexports.getSymbolTotalCodewords = function getSymbolTotalCodewords (version) {\n return CODEWORDS_COUNT[version]\n}\n\n/**\n * Encode data with Bose-Chaudhuri-Hocquenghem\n *\n * @param {Number} data Value to encode\n * @return {Number} Encoded value\n */\nexports.getBCHDigit = function (data) {\n let digit = 0\n\n while (data !== 0) {\n digit++\n data >>>= 1\n }\n\n return digit\n}\n\nexports.setToSJISFunction = function setToSJISFunction (f) {\n if (typeof f !== 'function') {\n throw new Error('\"toSJISFunc\" is not a valid function.')\n }\n\n toSJISFunction = f\n}\n\nexports.isKanjiModeEnabled = function () {\n return typeof toSJISFunction !== 'undefined'\n}\n\nexports.toSJIS = function toSJIS (kanji) {\n return toSJISFunction(kanji)\n}\n","/**\n * Check if QR Code version is valid\n *\n * @param {Number} version QR Code version\n * @return {Boolean} true if valid version, false otherwise\n */\nexports.isValid = function isValid (version) {\n return !isNaN(version) && version >= 1 && version <= 40\n}\n","const Utils = require('./utils')\nconst ECCode = require('./error-correction-code')\nconst ECLevel = require('./error-correction-level')\nconst Mode = require('./mode')\nconst VersionCheck = require('./version-check')\n\n// Generator polynomial used to encode version information\nconst G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)\nconst G18_BCH = Utils.getBCHDigit(G18)\n\nfunction getBestVersionForDataLength (mode, length, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, mode)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\nfunction getReservedBitsCount (mode, version) {\n // Character count indicator + mode indicator bits\n return Mode.getCharCountIndicator(mode, version) + 4\n}\n\nfunction getTotalBitsFromDataArray (segments, version) {\n let totalBits = 0\n\n segments.forEach(function (data) {\n const reservedBits = getReservedBitsCount(data.mode, version)\n totalBits += reservedBits + data.getBitsLength()\n })\n\n return totalBits\n}\n\nfunction getBestVersionForMixedData (segments, errorCorrectionLevel) {\n for (let currentVersion = 1; currentVersion <= 40; currentVersion++) {\n const length = getTotalBitsFromDataArray(segments, currentVersion)\n if (length <= exports.getCapacity(currentVersion, errorCorrectionLevel, Mode.MIXED)) {\n return currentVersion\n }\n }\n\n return undefined\n}\n\n/**\n * Returns version number from a value.\n * If value is not a valid version, returns defaultValue\n *\n * @param {Number|String} value QR Code version\n * @param {Number} defaultValue Fallback value\n * @return {Number} QR Code version number\n */\nexports.from = function from (value, defaultValue) {\n if (VersionCheck.isValid(value)) {\n return parseInt(value, 10)\n }\n\n return defaultValue\n}\n\n/**\n * Returns how much data can be stored with the specified QR code version\n * and error correction level\n *\n * @param {Number} version QR Code version (1-40)\n * @param {Number} errorCorrectionLevel Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} Quantity of storable data\n */\nexports.getCapacity = function getCapacity (version, errorCorrectionLevel, mode) {\n if (!VersionCheck.isValid(version)) {\n throw new Error('Invalid QR Code version')\n }\n\n // Use Byte mode as default\n if (typeof mode === 'undefined') mode = Mode.BYTE\n\n // Total codewords for this QR code version (Data + Error correction)\n const totalCodewords = Utils.getSymbolTotalCodewords(version)\n\n // Total number of error correction codewords\n const ecTotalCodewords = ECCode.getTotalCodewordsCount(version, errorCorrectionLevel)\n\n // Total number of data codewords\n const dataTotalCodewordsBits = (totalCodewords - ecTotalCodewords) * 8\n\n if (mode === Mode.MIXED) return dataTotalCodewordsBits\n\n const usableBits = dataTotalCodewordsBits - getReservedBitsCount(mode, version)\n\n // Return max number of storable codewords\n switch (mode) {\n case Mode.NUMERIC:\n return Math.floor((usableBits / 10) * 3)\n\n case Mode.ALPHANUMERIC:\n return Math.floor((usableBits / 11) * 2)\n\n case Mode.KANJI:\n return Math.floor(usableBits / 13)\n\n case Mode.BYTE:\n default:\n return Math.floor(usableBits / 8)\n }\n}\n\n/**\n * Returns the minimum version needed to contain the amount of data\n *\n * @param {Segment} data Segment of data\n * @param {Number} [errorCorrectionLevel=H] Error correction level\n * @param {Mode} mode Data mode\n * @return {Number} QR Code version\n */\nexports.getBestVersionForData = function getBestVersionForData (data, errorCorrectionLevel) {\n let seg\n\n const ecl = ECLevel.from(errorCorrectionLevel, ECLevel.M)\n\n if (Array.isArray(data)) {\n if (data.length > 1) {\n return getBestVersionForMixedData(data, ecl)\n }\n\n if (data.length === 0) {\n return 1\n }\n\n seg = data[0]\n } else {\n seg = data\n }\n\n return getBestVersionForDataLength(seg.mode, seg.getLength(), ecl)\n}\n\n/**\n * Returns version information with relative error correction bits\n *\n * The version information is included in QR Code symbols of version 7 or larger.\n * It consists of an 18-bit sequence containing 6 data bits,\n * with 12 error correction bits calculated using the (18, 6) Golay code.\n *\n * @param {Number} version QR Code version\n * @return {Number} Encoded version info bits\n */\nexports.getEncodedBits = function getEncodedBits (version) {\n if (!VersionCheck.isValid(version) || version < 7) {\n throw new Error('Invalid QR Code version')\n }\n\n let d = version << 12\n\n while (Utils.getBCHDigit(d) - G18_BCH >= 0) {\n d ^= (G18 << (Utils.getBCHDigit(d) - G18_BCH))\n }\n\n return (version << 12) | d\n}\n","const Utils = require('./utils')\n\nfunction clearCanvas (ctx, canvas, size) {\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (!canvas.style) canvas.style = {}\n canvas.height = size\n canvas.width = size\n canvas.style.height = size + 'px'\n canvas.style.width = size + 'px'\n}\n\nfunction getCanvasElement () {\n try {\n return document.createElement('canvas')\n } catch (e) {\n throw new Error('You need to specify a canvas element')\n }\n}\n\nexports.render = function render (qrData, canvas, options) {\n let opts = options\n let canvasEl = canvas\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!canvas) {\n canvasEl = getCanvasElement()\n }\n\n opts = Utils.getOptions(opts)\n const size = Utils.getImageWidth(qrData.modules.size, opts)\n\n const ctx = canvasEl.getContext('2d')\n const image = ctx.createImageData(size, size)\n Utils.qrToImageData(image.data, qrData, opts)\n\n clearCanvas(ctx, canvasEl, size)\n ctx.putImageData(image, 0, 0)\n\n return canvasEl\n}\n\nexports.renderToDataURL = function renderToDataURL (qrData, canvas, options) {\n let opts = options\n\n if (typeof opts === 'undefined' && (!canvas || !canvas.getContext)) {\n opts = canvas\n canvas = undefined\n }\n\n if (!opts) opts = {}\n\n const canvasEl = exports.render(qrData, canvas, opts)\n\n const type = opts.type || 'image/png'\n const rendererOpts = opts.rendererOpts || {}\n\n return canvasEl.toDataURL(type, rendererOpts.quality)\n}\n","const Utils = require('./utils')\n\nfunction getColorAttrib (color, attrib) {\n const alpha = color.a / 255\n const str = attrib + '=\"' + color.hex + '\"'\n\n return alpha < 1\n ? str + ' ' + attrib + '-opacity=\"' + alpha.toFixed(2).slice(1) + '\"'\n : str\n}\n\nfunction svgCmd (cmd, x, y) {\n let str = cmd + x\n if (typeof y !== 'undefined') str += ' ' + y\n\n return str\n}\n\nfunction qrToPath (data, size, margin) {\n let path = ''\n let moveBy = 0\n let newRow = false\n let lineLength = 0\n\n for (let i = 0; i < data.length; i++) {\n const col = Math.floor(i % size)\n const row = Math.floor(i / size)\n\n if (!col && !newRow) newRow = true\n\n if (data[i]) {\n lineLength++\n\n if (!(i > 0 && col > 0 && data[i - 1])) {\n path += newRow\n ? svgCmd('M', col + margin, 0.5 + row + margin)\n : svgCmd('m', moveBy, 0)\n\n moveBy = 0\n newRow = false\n }\n\n if (!(col + 1 < size && data[i + 1])) {\n path += svgCmd('h', lineLength)\n lineLength = 0\n }\n } else {\n moveBy++\n }\n }\n\n return path\n}\n\nexports.render = function render (qrData, options, cb) {\n const opts = Utils.getOptions(options)\n const size = qrData.modules.size\n const data = qrData.modules.data\n const qrcodesize = size + opts.margin * 2\n\n const bg = !opts.color.light.a\n ? ''\n : '<path ' + getColorAttrib(opts.color.light, 'fill') +\n ' d=\"M0 0h' + qrcodesize + 'v' + qrcodesize + 'H0z\"/>'\n\n const path =\n '<path ' + getColorAttrib(opts.color.dark, 'stroke') +\n ' d=\"' + qrToPath(data, size, opts.margin) + '\"/>'\n\n const viewBox = 'viewBox=\"' + '0 0 ' + qrcodesize + ' ' + qrcodesize + '\"'\n\n const width = !opts.width ? '' : 'width=\"' + opts.width + '\" height=\"' + opts.width + '\" '\n\n const svgTag = '<svg xmlns=\"http://www.w3.org/2000/svg\" ' + width + viewBox + ' shape-rendering=\"crispEdges\">' + bg + path + '</svg>\\n'\n\n if (typeof cb === 'function') {\n cb(null, svgTag)\n }\n\n return svgTag\n}\n","function hex2rgba (hex) {\n if (typeof hex === 'number') {\n hex = hex.toString()\n }\n\n if (typeof hex !== 'string') {\n throw new Error('Color should be defined as hex string')\n }\n\n let hexCode = hex.slice().replace('#', '').split('')\n if (hexCode.length < 3 || hexCode.length === 5 || hexCode.length > 8) {\n throw new Error('Invalid hex color: ' + hex)\n }\n\n // Convert from short to long form (fff -> ffffff)\n if (hexCode.length === 3 || hexCode.length === 4) {\n hexCode = Array.prototype.concat.apply([], hexCode.map(function (c) {\n return [c, c]\n }))\n }\n\n // Add default alpha value\n if (hexCode.length === 6) hexCode.push('F', 'F')\n\n const hexValue = parseInt(hexCode.join(''), 16)\n\n return {\n r: (hexValue >> 24) & 255,\n g: (hexValue >> 16) & 255,\n b: (hexValue >> 8) & 255,\n a: hexValue & 255,\n hex: '#' + hexCode.slice(0, 6).join('')\n }\n}\n\nexports.getOptions = function getOptions (options) {\n if (!options) options = {}\n if (!options.color) options.color = {}\n\n const margin = typeof options.margin === 'undefined' ||\n options.margin === null ||\n options.margin < 0\n ? 4\n : options.margin\n\n const width = options.width && options.width >= 21 ? options.width : undefined\n const scale = options.scale || 4\n\n return {\n width: width,\n scale: width ? 4 : scale,\n margin: margin,\n color: {\n dark: hex2rgba(options.color.dark || '#000000ff'),\n light: hex2rgba(options.color.light || '#ffffffff')\n },\n type: options.type,\n rendererOpts: options.rendererOpts || {}\n }\n}\n\nexports.getScale = function getScale (qrSize, opts) {\n return opts.width && opts.width >= qrSize + opts.margin * 2\n ? opts.width / (qrSize + opts.margin * 2)\n : opts.scale\n}\n\nexports.getImageWidth = function getImageWidth (qrSize, opts) {\n const scale = exports.getScale(qrSize, opts)\n return Math.floor((qrSize + opts.margin * 2) * scale)\n}\n\nexports.qrToImageData = function qrToImageData (imgData, qr, opts) {\n const size = qr.modules.size\n const data = qr.modules.data\n const scale = exports.getScale(size, opts)\n const symbolSize = Math.floor((size + opts.margin * 2) * scale)\n const scaledMargin = opts.margin * scale\n const palette = [opts.color.light, opts.color.dark]\n\n for (let i = 0; i < symbolSize; i++) {\n for (let j = 0; j < symbolSize; j++) {\n let posDst = (i * symbolSize + j) * 4\n let pxColor = opts.color.light\n\n if (i >= scaledMargin && j >= scaledMargin &&\n i < symbolSize - scaledMargin && j < symbolSize - scaledMargin) {\n const iSrc = Math.floor((i - scaledMargin) / scale)\n const jSrc = Math.floor((j - scaledMargin) / scale)\n pxColor = palette[data[iSrc * size + jSrc] ? 1 : 0]\n }\n\n imgData[posDst++] = pxColor.r\n imgData[posDst++] = pxColor.g\n imgData[posDst++] = pxColor.b\n imgData[posDst] = pxColor.a\n }\n }\n}\n"],"names":["EVENT_READY","index","name","props","value","type","String","default","undefined","options","Object","tag","emits","watch","$props","deep","immediate","handler","this","$el","generate","mounted","methods","done","$emit","error","url","src","onload","toString","string","div","document","createElement","innerHTML","svg","querySelector","attributes","childNodes","keys","forEach","key","attribute","Number","setAttribute","childNode","appendChild","cloneNode","render","h","$slots","module","exports","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","descriptor","configurable","writable","_toConsumableArray","arr","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","o","minLen","n","call","slice","test","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","IS_BROWSER","window","WINDOW","IS_TOUCH_DEVICE","documentElement","HAS_POINTER_EVENT","NAMESPACE","ACTION_ALL","ACTION_CROP","ACTION_MOVE","ACTION_ZOOM","ACTION_EAST","ACTION_WEST","ACTION_SOUTH","ACTION_NORTH","ACTION_NORTH_EAST","ACTION_NORTH_WEST","ACTION_SOUTH_EAST","ACTION_SOUTH_WEST","CLASS_CROP","concat","CLASS_DISABLED","CLASS_HIDDEN","CLASS_HIDE","CLASS_INVISIBLE","CLASS_MODAL","CLASS_MOVE","DATA_ACTION","DATA_PREVIEW","DRAG_MODE_CROP","DRAG_MODE_MOVE","DRAG_MODE_NONE","EVENT_CROP","EVENT_CROP_END","EVENT_CROP_MOVE","EVENT_CROP_START","EVENT_DBLCLICK","EVENT_POINTER_DOWN","EVENT_POINTER_MOVE","EVENT_POINTER_UP","EVENT_RESIZE","EVENT_WHEEL","EVENT_ZOOM","MIME_TYPE_JPEG","REGEXP_ACTIONS","REGEXP_DATA_URL","REGEXP_DATA_URL_JPEG","REGEXP_TAG_NAME","DEFAULTS","viewMode","dragMode","initialAspectRatio","NaN","aspectRatio","data","preview","responsive","restore","checkCrossOrigin","checkOrientation","modal","guides","center","highlight","background","autoCrop","autoCropArea","movable","rotatable","scalable","zoomable","zoomOnTouch","zoomOnWheel","wheelZoomRatio","cropBoxMovable","cropBoxResizable","toggleDragModeOnDblclick","minCanvasWidth","minCanvasHeight","minCropBoxWidth","minCropBoxHeight","minContainerWidth","minContainerHeight","ready","cropstart","cropmove","cropend","crop","zoom","isNaN","isNumber","isPositiveNumber","Infinity","isUndefined","isObject","hasOwnProperty","isPlainObject","_constructor","isFunction","toArray","callback","assign","_len","args","_key","arg","REGEXP_DECIMALS","normalizeDecimalNumber","times","Math","round","REGEXP_SUFFIX","setStyle","element","styles","style","property","addClass","elem","classList","add","className","trim","indexOf","removeClass","remove","replace","toggleClass","added","REGEXP_CAMEL_CASE","toParamCase","toLowerCase","getData","dataset","getAttribute","setData","REGEXP_SPACES","onceSupported","supported","once","listener","get","set","addEventListener","removeEventListener","removeListener","split","event","listeners","addListener","_handler","_element$listeners","_len2","_key2","dispatchEvent","Event","CustomEvent","detail","bubbles","cancelable","createEvent","initCustomEvent","getOffset","box","getBoundingClientRect","left","pageXOffset","clientLeft","top","pageYOffset","clientTop","location","REGEXP_ORIGINS","isCrossOriginURL","parts","match","protocol","hostname","port","addTimestamp","timestamp","Date","getTime","getTransforms","_ref","rotate","scaleX","scaleY","translateX","translateY","values","transform","join","WebkitTransform","msTransform","getPointer","_ref2","endOnly","pageX","pageY","end","endX","endY","startX","startY","getAdjustedSizes","_ref4","height","width","isValidWidth","isValidHeight","adjustedWidth","getSourceCanvas","image","_ref6","_ref7","_ref8","imageAspectRatio","imageNaturalWidth","naturalWidth","imageNaturalHeight","naturalHeight","_ref6$rotate","_ref6$scaleX","_ref6$scaleY","_ref8$fillColor","fillColor","_ref8$imageSmoothingE","imageSmoothingEnabled","_ref8$imageSmoothingQ","imageSmoothingQuality","_ref8$maxWidth","maxWidth","_ref8$maxHeight","maxHeight","_ref8$minWidth","minWidth","_ref8$minHeight","minHeight","canvas","context","getContext","maxSizes","minSizes","min","max","destMaxSizes","destMinSizes","destWidth","destHeight","params","fillStyle","fillRect","save","translate","PI","scale","drawImage","map","param","floor","fromCharCode","REGEXP_DATA_URL_HEAD","resetAndGetOrientation","arrayBuffer","orientation","dataView","DataView","littleEndian","app1Start","ifdStart","getUint8","byteLength","offset","tiffOffset","start","str","getStringFromCharCode","endianness","getUint16","firstIFDOffset","getUint32","_offset","_length","setUint16","initContainer","initCanvas","initCropBox","renderCanvas","cropped","renderCropBox","container","cropper","containerData","offsetWidth","offsetHeight","imageData","rotated","abs","canvasWidth","canvasHeight","canvasData","limited","limitCanvas","oldLeft","oldTop","initialCanvasData","sizeLimited","positionLimited","cropBoxData","_getAdjustedSizes","newCanvasLeft","newCanvasTop","minLeft","minTop","maxLeft","maxTop","changed","transformed","_getRotatedSizes","_ref5","degree","arc","sinArc","sin","cosArc","cos","newWidth","newHeight","getRotatedSizes","renderImage","limitCropBox","output","initialCropBoxData","maxCropBoxWidth","maxCropBoxHeight","face","cropBox","disabled","initPreview","crossOrigin","crossOriginUrl","alt","viewBox","viewBoxImage","previews","ownerDocument","querySelectorAll","el","img","html","cssText","resetPreview","removeAttribute","removeData","cropBoxWidth","cropBoxHeight","originalWidth","originalHeight","ratio","getElementsByTagName","events","bind","onCropStart","cropStart","onWheel","wheel","passive","capture","onDblclick","dblclick","onCropMove","cropMove","onCropEnd","cropEnd","onResize","resize","unbind","handlers","ratioX","ratioY","getCanvasData","getCropBoxData","setCanvasData","setCropBoxData","setDragMode","dragBox","contains","_this","delta","preventDefault","wheeling","setTimeout","deltaY","wheelDelta","buttons","button","pointerType","ctrlKey","action","pointers","changedTouches","touch","identifier","pointerId","originalEvent","cropping","change","right","bottom","renderable","shiftKey","pointer","range","x","y","check","side","move","pointers2","maxRatio","pointer2","x1","y1","x2","y2","z1","sqrt","getMaxZoomRatio","p","reset","initialImageData","clear","hasSameSize","isImg","replaced","uncreate","load","enable","disable","destroy","originalUrl","offsetX","offsetY","_this$canvasData","moveTo","_originalEvent","zoomTo","pivot","oldRatio","count","_ref3","getPointersCenter","rotateTo","_scaleX","_scaleY","rounded","getContainerData","getImageData","sized","widthChanged","heightChanged","getCroppedCanvas","HTMLCanvasElement","_this$getData","initialX","initialY","initialWidth","initialHeight","_options$imageSmoothi","srcWidth","srcHeight","dstX","dstY","dstWidth","dstHeight","sourceWidth","sourceHeight","srcX","srcY","setAspectRatio","mode","croppable","AnotherCropper","Cropper","tagName","Error","reloading","sizing","init","staticProps","protoProps","toDataURL","base64","binary","uint8","ArrayBuffer","read","atob","Uint8Array","charCodeAt","clone","xhr","XMLHttpRequest","onabort","onerror","ontimeout","onprogress","getResponseHeader","abort","response","onloadend","open","responseType","withCredentials","send","mimeType","chunks","subarray","btoa","arrayBufferToDataURL","_parseOrientation","parseOrientation","stop","parentNode","insertBefore","nextSibling","_this2","isIOSWebKit","navigator","userAgent","build","sizingImage","body","removeChild","template","getElementsByClassName","unbuild","factory","dijkstra","single_source_shortest_paths","graph","s","d","predecessors","costs","closest","u","v","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","PriorityQueue","make","empty","pop","cost","msg","extract_shortest_path_from_predecessor_list","nodes","reverse","find_path","opts","T","t","queue","sorter","default_sorter","a","b","item","sort","shift","input","result","size","point","second","buffer","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderFunc","text","cb","argsNum","isLastArgCb","Promise","resolve","reject","create","e","renderToDataURL","_","then","getSymbolSize","getRowColCoords","version","posCount","intervals","ceil","positions","getPositions","coords","pos","posLength","j","Mode","ALPHA_NUM_CHARS","AlphanumericData","ALPHANUMERIC","getBitsLength","getLength","write","bitBuffer","put","BitBuffer","bufIndex","num","putBit","getLengthInBits","bit","BitMatrix","reservedBit","row","col","reserved","xor","isReserved","encodeUtf8","ByteData","BYTE","l","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","L","M","Q","H","getTotalCodewordsCount","isValid","level","defaultValue","fromString","Utils","G15_BCH","getBCHDigit","getEncodedBits","mask","EXP_TABLE","LOG_TABLE","log","exp","mul","KanjiData","KANJI","toSJIS","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","getMaskAt","maskPattern","parseInt","getPenaltyN1","points","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","last","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","applyMask","pattern","getBestMask","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","penalty","VersionCheck","Regex","NUMERIC","id","ccBits","MIXED","getCharCountIndicator","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","NumericData","group","substr","remainingNum","GF","p1","p2","coeff","mod","divident","divisor","generateECPolynomial","poly","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","setupFormatInfo","matrix","bits","createSymbol","segments","fromArray","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","dataTotalCodewordsBits","getSymbolTotalCodewords","remainingByte","totalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","ecData","maxDataSize","dataSize","encode","r","createCodewords","createData","moduleCount","modules","c","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","dark","setupData","toSJISFunc","setToSJISFunction","Polynomial","genPoly","initialize","paddedData","remainder","buff","kanji","byte","RegExp","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","getStringByteLength","unescape","encodeURIComponent","getSegments","regex","exec","getSegmentsFromString","numSegs","alphaNumSegs","byteSegs","kanjiSegs","isKanjiModeEnabled","s1","s2","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","array","reduce","acc","seg","segs","buildNodes","table","prevNodeIds","nodeGroup","currentNodeIds","node","lastCount","prevNodeId","buildGraph","path","optimizedSegs","curr","prevSeg","toSJISFunction","CODEWORDS_COUNT","digit","f","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getCapacity","usableBits","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","qrData","canvasEl","getCanvasElement","getOptions","getImageWidth","ctx","createImageData","qrToImageData","clearRect","clearCanvas","putImageData","rendererOpts","quality","getColorAttrib","color","attrib","alpha","hex","toFixed","svgCmd","cmd","qrcodesize","margin","bg","light","moveBy","newRow","lineLength","qrToPath","svgTag","hex2rgba","hexCode","hexValue","g","getScale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/5948.2b7b4e97487f2539eb44.js b/priv/static/static/js/5948.2b7b4e97487f2539eb44.js @@ -1,2 +0,0 @@ -(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[5948],{25771:(e,t,r)=>{"use strict";r.d(t,{M:()=>i,i:()=>a});var n=r(57458),o=r.n(n),i=function(e){var t=e.filename,r=void 0===t?"data":t,n=e.getExportedObject;return{exportData:function(){var e=o().encode(JSON.stringify(n(),null,2)),t=document.createElement("a");t.setAttribute("download","".concat(r,".json")),t.setAttribute("href","data:application/json;base64,"+window.btoa(e)),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}}},a=function(e){var t=e.onImport,r=e.onImportFailure,n=e.validator,o=void 0===n?function(){return!0}:n;return{importData:function(){var e=document.createElement("input");e.setAttribute("type","file"),e.setAttribute("accept",".json"),e.addEventListener("change",(function(e){if(e.target.files[0]){var n=new FileReader;n.onload=function(e){var n=e.target;try{var i=JSON.parse(n.result),a=o(i);!0===a?t(i):r({validationResult:a})}catch(e){r({error:e})}},n.readAsText(e.target.files[0])}})),document.body.appendChild(e),e.click(),document.body.removeChild(e)}}}},57458:(e,t)=>{!function(e){var t,r,n,o=String.fromCharCode;function i(e){for(var t,r,n=[],o=0,i=e.length;o<i;)(t=e.charCodeAt(o++))>=55296&&t<=56319&&o<i?56320==(64512&(r=e.charCodeAt(o++)))?n.push(((1023&t)<<10)+(1023&r)+65536):(n.push(t),o--):n.push(t);return n}function a(e){if(e>=55296&&e<=57343)throw Error("Lone surrogate U+"+e.toString(16).toUpperCase()+" is not a scalar value")}function s(e,t){return o(e>>t&63|128)}function c(e){if(0==(4294967168&e))return o(e);var t="";return 0==(4294965248&e)?t=o(e>>6&31|192):0==(4294901760&e)?(a(e),t=o(e>>12&15|224),t+=s(e,6)):0==(4292870144&e)&&(t=o(e>>18&7|240),t+=s(e,12),t+=s(e,6)),t+o(63&e|128)}function l(){if(n>=r)throw Error("Invalid byte index");var e=255&t[n];if(n++,128==(192&e))return 63&e;throw Error("Invalid continuation byte")}function u(){var e,o;if(n>r)throw Error("Invalid byte index");if(n==r)return!1;if(e=255&t[n],n++,0==(128&e))return e;if(192==(224&e)){if((o=(31&e)<<6|l())>=128)return o;throw Error("Invalid continuation byte")}if(224==(240&e)){if((o=(15&e)<<12|l()<<6|l())>=2048)return a(o),o;throw Error("Invalid continuation byte")}if(240==(248&e)&&(o=(7&e)<<18|l()<<12|l()<<6|l())>=65536&&o<=1114111)return o;throw Error("Invalid UTF-8 detected")}e.version="3.0.0",e.encode=function(e){for(var t=i(e),r=t.length,n=-1,o="";++n<r;)o+=c(t[n]);return o},e.decode=function(e){t=i(e),r=t.length,n=0;for(var a,s=[];!1!==(a=u());)s.push(a);return function(e){for(var t,r=e.length,n=-1,i="";++n<r;)(t=e[n])>65535&&(i+=o((t-=65536)>>>10&1023|55296),t=56320|1023&t),i+=o(t);return i}(s)}}(t)},75948:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>L});var n=r(66252),o=r(3577),i=r(49963),a={class:"settings-modal-panel panel"},s={class:"panel-heading"},c={class:"title"},l=["title"],u=["title"],d={class:"panel-body"},p={class:"panel-footer settings-footer"},f=["title"],m={class:"dropdown-menu"},g=["onClick"],v=["onClick"],h=["onClick"],b=(0,n._)("span",{id:"unscrolled-content",class:"extra-content"},null,-1),_=r(4942),w=r(29439),y=r(50361),k=r.n(y),O=r(48328),x=r(29187),j={class:"async-component-error"};const C={emits:["resetAsyncComponent"],methods:{retry:function(){this.$emit("resetAsyncComponent")}}};var S=r(83744);const $=(0,S.Z)(C,[["render",function(e,t,r,i,a,s){return(0,n.wg)(),(0,n.iD)("div",j,[(0,n._)("div",null,[(0,n._)("h4",null,(0,o.zw)(e.$t("general.generic_error")),1),(0,n._)("p",null,(0,o.zw)(e.$t("general.error_retry")),1),(0,n._)("button",{class:"btn button-default",onClick:t[0]||(t[0]=function(){return s.retry&&s.retry.apply(s,arguments)})},(0,o.zw)(e.$t("general.retry")),1)])])}]]);var M=r(2262);function E(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var P=r(91447),I=r(90350),A=r(9382),D=r(25771),z=r(84131),N=r(5737);function W(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function T(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?W(Object(r),!0).forEach((function(t){(0,_.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):W(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}A.vI.add(z.NBC,N.IQi,z.Y9i,z.kwI,z.ptq);const Z={data:function(){var e=this;return{dataImporter:(0,D.i)({validator:this.importValidator,onImport:this.onImport,onImportFailure:this.onImportFailure}),dataThemeExporter:(0,D.M)({filename:"pleromafe_settings.full",getExportedObject:function(){return e.generateExport(!0)}}),dataExporter:(0,D.M)({filename:"pleromafe_settings",getExportedObject:function(){return e.generateExport()}})}},components:{Modal:O.Z,Popover:P.default,Checkbox:I.Z,SettingsModalContent:(F=function(){return Promise.all([r.e(48),r.e(9114)]).then(r.bind(r,9114))},U={loadingComponent:x.Z,errorComponent:$,delay:0},K=function(){return function(){return(0,n.RC)(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?E(Object(r),!0).forEach((function(t){(0,_.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):E(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({loader:F},U))}},R=(0,M.Um)({c:K()}),{render:function(){return(0,n.h)(R.c(),{onResetAsyncComponent:function(){R.c=K()}})}})},methods:{closeModal:function(){this.$store.dispatch("closeSettingsModal")},peekModal:function(){this.$store.dispatch("togglePeekSettingsModal")},importValidator:function(e){if(!Array.isArray(e._pleroma_settings_version))return{messageKey:"settings.file_import_export.invalid_file"};var t=(0,w.Z)(e._pleroma_settings_version,2),r=t[0],n=t[1];return r>1?{messageKey:"settings.file_export_import.errors.file_too_new",messageArgs:{fileMajor:r,feMajor:1}}:r<1?{messageKey:"settings.file_export_import.errors.file_too_old",messageArgs:{fileMajor:r,feMajor:1}}:(n>0&&this.$store.dispatch("pushGlobalNotice",{level:"warning",messageKey:"settings.file_export_import.errors.file_slightly_new"}),!0)},onImportFailure:function(e){e.error?this.$store.dispatch("pushGlobalNotice",{messageKey:"settings.invalid_settings_imported",level:"error"}):this.$store.dispatch("pushGlobalNotice",T(T({},e.validationResult),{},{level:"error"}))},onImport:function(e){e&&this.$store.dispatch("loadSettings",e)},restore:function(){this.dataImporter.importData()},backup:function(){this.dataExporter.exportData()},backupWithTheme:function(){this.dataThemeExporter.exportData()},generateExport:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.$store.state.config,r=t;if(!e){var n=new Set(["customTheme","customThemeSource","colors"]);r=Object.fromEntries(Object.entries(r).filter((function(e){var t=(0,w.Z)(e,1)[0];return!n.has(t)})))}var o=k()(r);return o._pleroma_settings_version=[1,0],o}},computed:{currentSaveStateNotice:function(){return this.$store.state.interface.settings.currentSaveStateNotice},modalActivated:function(){return"hidden"!==this.$store.state.interface.settingsModalState},modalOpenedOnce:function(){return this.$store.state.interface.settingsModalLoaded},modalPeeked:function(){return"minimized"===this.$store.state.interface.settingsModalState},expertLevel:{get:function(){return this.$store.state.config.expertLevel>0},set:function(e){console.log(e),this.$store.dispatch("setOption",{name:"expertLevel",value:e?1:0})}}}},L=(0,S.Z)(Z,[["render",function(e,t,r,_,w,y){var k=(0,n.up)("FAIcon"),O=(0,n.up)("SettingsModalContent"),x=(0,n.up)("Popover"),j=(0,n.up)("Checkbox"),C=(0,n.up)("Modal");return(0,n.wg)(),(0,n.j4)(C,{"is-open":e.modalActivated,class:(0,o.C_)(["settings-modal",{peek:e.modalPeeked}]),"no-background":e.modalPeeked},{default:(0,n.w5)((function(){return[(0,n._)("div",a,[(0,n._)("div",s,[(0,n._)("span",c,(0,o.zw)(e.$t("settings.settings")),1),(0,n.Wm)(i.uT,{name:"fade"},{default:(0,n.w5)((function(){return[e.currentSaveStateNotice?((0,n.wg)(),(0,n.iD)("div",{key:0,class:(0,o.C_)(["alert",{transparent:!e.currentSaveStateNotice.error,error:e.currentSaveStateNotice.error}]),onClick:t[0]||(t[0]=(0,i.iM)((function(){}),["prevent"]))},(0,o.zw)(e.currentSaveStateNotice.error?e.$t("settings.saving_err"):e.$t("settings.saving_ok")),3)):(0,n.kq)("",!0)]})),_:1}),(0,n._)("button",{class:"btn button-default",title:e.$t("general.peek"),onClick:t[1]||(t[1]=function(){return e.peekModal&&e.peekModal.apply(e,arguments)})},[(0,n.Wm)(k,{icon:["far","window-minimize"],"fixed-width":""})],8,l),(0,n._)("button",{class:"btn button-default",title:e.$t("general.close"),onClick:t[2]||(t[2]=function(){return e.closeModal&&e.closeModal.apply(e,arguments)})},[(0,n.Wm)(k,{icon:"times","fixed-width":""})],8,u)]),(0,n._)("div",d,[e.modalOpenedOnce?((0,n.wg)(),(0,n.j4)(O,{key:0})):(0,n.kq)("",!0)]),(0,n._)("div",p,[(0,n.Wm)(x,{class:"export",trigger:"click",placement:"top",offset:{y:5,x:5},"bound-to":{x:"container"},"remove-padding":""},{trigger:(0,n.w5)((function(){return[(0,n._)("button",{class:"btn button-default",title:e.$t("general.close")},[(0,n._)("span",null,(0,o.zw)(e.$t("settings.file_export_import.backup_restore")),1),(0,n.Uk)(" "+(0,o.zw)(" ")+" "),(0,n.Wm)(k,{icon:"chevron-down"})],8,f)]})),content:(0,n.w5)((function(r){var a=r.close;return[(0,n._)("div",m,[(0,n._)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[3]||(t[3]=(0,i.iM)((function(){return e.backup&&e.backup.apply(e,arguments)}),["prevent"])),a]},[(0,n.Wm)(k,{icon:"file-download","fixed-width":""}),(0,n._)("span",null,(0,o.zw)(e.$t("settings.file_export_import.backup_settings")),1)],8,g),(0,n._)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[4]||(t[4]=(0,i.iM)((function(){return e.backupWithTheme&&e.backupWithTheme.apply(e,arguments)}),["prevent"])),a]},[(0,n.Wm)(k,{icon:"file-download","fixed-width":""}),(0,n._)("span",null,(0,o.zw)(e.$t("settings.file_export_import.backup_settings_theme")),1)],8,v),(0,n._)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[5]||(t[5]=(0,i.iM)((function(){return e.restore&&e.restore.apply(e,arguments)}),["prevent"])),a]},[(0,n.Wm)(k,{icon:"file-upload","fixed-width":""}),(0,n._)("span",null,(0,o.zw)(e.$t("settings.file_export_import.restore_settings")),1)],8,h)])]})),_:1}),(0,n.Wm)(j,{"model-value":!!e.expertLevel,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.expertLevel=Number(t)})},{default:(0,n.w5)((function(){return[(0,n.Uk)((0,o.zw)(e.$t("settings.expert_mode")),1)]})),_:1},8,["model-value"]),b])])]})),_:1},8,["is-open","class","no-background"])}]]);var F,U,K,R}}]); -//# sourceMappingURL=5948.2b7b4e97487f2539eb44.js.map -\ No newline at end of file diff --git a/priv/static/static/js/5948.2b7b4e97487f2539eb44.js.map b/priv/static/static/js/5948.2b7b4e97487f2539eb44.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/5948.2b7b4e97487f2539eb44.js","mappings":"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","sources":["webpack://pleroma_fe/./src/services/export_import/export_import.js","webpack://pleroma_fe/./node_modules/utf8/utf8.js","webpack://pleroma_fe/./src/components/settings_modal/settings_modal.vue","webpack://pleroma_fe/./src/components/async_component_error/async_component_error.vue","webpack://pleroma_fe/./src/components/async_component_error/async_component_error.vue?c151","webpack://pleroma_fe/./src/components/settings_modal/settings_modal.js","webpack://pleroma_fe/./src/services/resettable_async_component.js","webpack://pleroma_fe/./src/components/settings_modal/settings_modal.vue?2a2f"],"sourcesContent":["import utf8 from 'utf8'\n\nexport const newExporter = ({\n filename = 'data',\n getExportedObject\n}) => ({\n exportData () {\n const stringified = utf8.encode(JSON.stringify(getExportedObject(), null, 2)) // Pretty-print and indent with 2 spaces\n\n // Create an invisible link with a data url and simulate a click\n const e = document.createElement('a')\n e.setAttribute('download', `${filename}.json`)\n e.setAttribute('href', 'data:application/json;base64,' + window.btoa(stringified))\n e.style.display = 'none'\n\n document.body.appendChild(e)\n e.click()\n document.body.removeChild(e)\n }\n})\n\nexport const newImporter = ({\n onImport,\n onImportFailure,\n validator = () => true\n}) => ({\n importData () {\n const filePicker = document.createElement('input')\n filePicker.setAttribute('type', 'file')\n filePicker.setAttribute('accept', '.json')\n\n filePicker.addEventListener('change', event => {\n if (event.target.files[0]) {\n // eslint-disable-next-line no-undef\n const reader = new FileReader()\n reader.onload = ({ target }) => {\n try {\n const parsed = JSON.parse(target.result)\n const validationResult = validator(parsed)\n if (validationResult === true) {\n onImport(parsed)\n } else {\n onImportFailure({ validationResult })\n }\n } catch (error) {\n onImportFailure({ error })\n }\n }\n reader.readAsText(event.target.files[0])\n }\n })\n\n document.body.appendChild(filePicker)\n filePicker.click()\n document.body.removeChild(filePicker)\n }\n})\n","/*! https://mths.be/utf8js v3.0.0 by @mathias */\n;(function(root) {\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\troot.version = '3.0.0';\n\troot.encode = utf8encode;\n\troot.decode = utf8decode;\n\n}(typeof exports === 'undefined' ? this.utf8 = {} : exports));\n","<template>\n <Modal\n :is-open=\"modalActivated\"\n class=\"settings-modal\"\n :class=\"{ peek: modalPeeked }\"\n :no-background=\"modalPeeked\"\n >\n <div class=\"settings-modal-panel panel\">\n <div class=\"panel-heading\">\n <span class=\"title\">\n {{ $t('settings.settings') }}\n </span>\n <transition name=\"fade\">\n <div\n v-if=\"currentSaveStateNotice\"\n class=\"alert\"\n :class=\"{ transparent: !currentSaveStateNotice.error, error: currentSaveStateNotice.error}\"\n @click.prevent\n >\n {{ currentSaveStateNotice.error ? $t('settings.saving_err') : $t('settings.saving_ok') }}\n </div>\n </transition>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.peek')\"\n @click=\"peekModal\"\n >\n <FAIcon\n :icon=\"['far', 'window-minimize']\"\n fixed-width\n />\n </button>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.close')\"\n @click=\"closeModal\"\n >\n <FAIcon\n icon=\"times\"\n fixed-width\n />\n </button>\n </div>\n <div class=\"panel-body\">\n <SettingsModalContent v-if=\"modalOpenedOnce\" />\n </div>\n <div class=\"panel-footer settings-footer\">\n <Popover\n class=\"export\"\n trigger=\"click\"\n placement=\"top\"\n :offset=\"{ y: 5, x: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n >\n <template #trigger>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.close')\"\n >\n <span>{{ $t(\"settings.file_export_import.backup_restore\") }}</span>\n {{ ' ' }}\n <FAIcon\n icon=\"chevron-down\"\n />\n </button>\n </template>\n <template #content=\"{close}\">\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"backup\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-download\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.backup_settings\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"backupWithTheme\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-download\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.backup_settings_theme\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"restore\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-upload\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.restore_settings\") }}</span>\n </button>\n </div>\n </template>\n </Popover>\n\n <Checkbox\n :model-value=\"!!expertLevel\"\n @update:modelValue=\"expertLevel = Number($event)\"\n >\n {{ $t(\"settings.expert_mode\") }}\n </Checkbox>\n <span\n id=\"unscrolled-content\"\n class=\"extra-content\"\n />\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./settings_modal.js\"></script>\n\n<style src=\"./settings_modal.scss\" lang=\"scss\"></style>\n","<template>\n <div class=\"async-component-error\">\n <div>\n <h4>\n {{ $t('general.generic_error') }}\n </h4>\n <p>\n {{ $t('general.error_retry') }}\n </p>\n <button\n class=\"btn button-default\"\n @click=\"retry\"\n >\n {{ $t('general.retry') }}\n </button>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n emits: ['resetAsyncComponent'],\n methods: {\n retry () {\n this.$emit('resetAsyncComponent')\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n\n .btn {\n margin: 0.5em;\n padding: 0.5em 2em;\n }\n}\n</style>\n","import { render } from \"./async_component_error.vue?vue&type=template&id=0e326028\"\nimport script from \"./async_component_error.vue?vue&type=script&lang=js\"\nexport * from \"./async_component_error.vue?vue&type=script&lang=js\"\n\nimport \"./async_component_error.vue?vue&type=style&index=0&id=0e326028&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Modal from 'src/components/modal/modal.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport AsyncComponentError from 'src/components/async_component_error/async_component_error.vue'\nimport getResettableAsyncComponent from 'src/services/resettable_async_component.js'\nimport Popover from '../popover/popover.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { cloneDeep } from 'lodash'\nimport {\n newImporter,\n newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n faTimes,\n faFileUpload,\n faFileDownload,\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faWindowMinimize\n} from '@fortawesome/free-regular-svg-icons'\n\nconst PLEROMAFE_SETTINGS_MAJOR_VERSION = 1\nconst PLEROMAFE_SETTINGS_MINOR_VERSION = 0\n\nlibrary.add(\n faTimes,\n faWindowMinimize,\n faFileUpload,\n faFileDownload,\n faChevronDown\n)\n\nconst SettingsModal = {\n data () {\n return {\n dataImporter: newImporter({\n validator: this.importValidator,\n onImport: this.onImport,\n onImportFailure: this.onImportFailure\n }),\n dataThemeExporter: newExporter({\n filename: 'pleromafe_settings.full',\n getExportedObject: () => this.generateExport(true)\n }),\n dataExporter: newExporter({\n filename: 'pleromafe_settings',\n getExportedObject: () => this.generateExport()\n })\n }\n },\n components: {\n Modal,\n Popover,\n Checkbox,\n SettingsModalContent: getResettableAsyncComponent(\n () => import('./settings_modal_content.vue'),\n {\n loadingComponent: PanelLoading,\n errorComponent: AsyncComponentError,\n delay: 0\n }\n )\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closeSettingsModal')\n },\n peekModal () {\n this.$store.dispatch('togglePeekSettingsModal')\n },\n importValidator (data) {\n if (!Array.isArray(data._pleroma_settings_version)) {\n return {\n messageKey: 'settings.file_import_export.invalid_file'\n }\n }\n\n const [major, minor] = data._pleroma_settings_version\n\n if (major > PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n return {\n messageKey: 'settings.file_export_import.errors.file_too_new',\n messageArgs: {\n fileMajor: major,\n feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n }\n }\n }\n\n if (major < PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n return {\n messageKey: 'settings.file_export_import.errors.file_too_old',\n messageArgs: {\n fileMajor: major,\n feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n }\n }\n }\n\n if (minor > PLEROMAFE_SETTINGS_MINOR_VERSION) {\n this.$store.dispatch('pushGlobalNotice', {\n level: 'warning',\n messageKey: 'settings.file_export_import.errors.file_slightly_new'\n })\n }\n\n return true\n },\n onImportFailure (result) {\n if (result.error) {\n this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_settings_imported', level: 'error' })\n } else {\n this.$store.dispatch('pushGlobalNotice', { ...result.validationResult, level: 'error' })\n }\n },\n onImport (data) {\n if (data) { this.$store.dispatch('loadSettings', data) }\n },\n restore () {\n this.dataImporter.importData()\n },\n backup () {\n this.dataExporter.exportData()\n },\n backupWithTheme () {\n this.dataThemeExporter.exportData()\n },\n generateExport (theme = false) {\n const { config } = this.$store.state\n let sample = config\n if (!theme) {\n const ignoreList = new Set([\n 'customTheme',\n 'customThemeSource',\n 'colors'\n ])\n sample = Object.fromEntries(\n Object\n .entries(sample)\n .filter(([key]) => !ignoreList.has(key))\n )\n }\n const clone = cloneDeep(sample)\n clone._pleroma_settings_version = [\n PLEROMAFE_SETTINGS_MAJOR_VERSION,\n PLEROMAFE_SETTINGS_MINOR_VERSION\n ]\n return clone\n }\n },\n computed: {\n currentSaveStateNotice () {\n return this.$store.state.interface.settings.currentSaveStateNotice\n },\n modalActivated () {\n return this.$store.state.interface.settingsModalState !== 'hidden'\n },\n modalOpenedOnce () {\n return this.$store.state.interface.settingsModalLoaded\n },\n modalPeeked () {\n return this.$store.state.interface.settingsModalState === 'minimized'\n },\n expertLevel: {\n get () {\n return this.$store.state.config.expertLevel > 0\n },\n set (value) {\n console.log(value)\n this.$store.dispatch('setOption', { name: 'expertLevel', value: value ? 1 : 0 })\n }\n }\n }\n}\n\nexport default SettingsModal\n","import { defineAsyncComponent, shallowReactive, h } from 'vue'\n\n/* By default async components don't have any way to recover, if component is\n * failed, it is failed forever. This helper tries to remedy that by recreating\n * async component when retry is requested (by user). You need to emit the\n * `resetAsyncComponent` event from child to reset the component. Generally,\n * this should be done from error component but could be done from loading or\n * actual target component itself if needs to be.\n */\nfunction getResettableAsyncComponent (asyncComponent, options) {\n const asyncComponentFactory = () => () => defineAsyncComponent({\n loader: asyncComponent,\n ...options\n })\n\n const observe = shallowReactive({ c: asyncComponentFactory() })\n\n return {\n render () {\n // emit event resetAsyncComponent to reloading\n return h(observe.c(), {\n onResetAsyncComponent () {\n observe.c = asyncComponentFactory()\n }\n })\n }\n }\n}\n\nexport default getResettableAsyncComponent\n","import { render } from \"./settings_modal.vue?vue&type=template&id=068fd1f8\"\nimport script from \"./settings_modal.js?vue&type=script&lang=js\"\nexport * from \"./settings_modal.js?vue&type=script&lang=js\"\n\nimport \"./settings_modal.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["newExporter","filename","getExportedObject","exportData","stringified","utf8","JSON","stringify","e","document","createElement","setAttribute","window","btoa","style","display","body","appendChild","click","removeChild","newImporter","onImport","onImportFailure","validator","importData","filePicker","addEventListener","event","target","files","reader","FileReader","onload","parsed","parse","result","validationResult","error","readAsText","root","byteArray","byteCount","byteIndex","stringFromCharCode","String","fromCharCode","ucs2decode","string","value","extra","output","counter","length","charCodeAt","push","checkScalarValue","codePoint","Error","toString","toUpperCase","createByte","shift","encodeCodePoint","symbol","readContinuationByte","continuationByte","decodeSymbol","byte1","version","encode","codePoints","index","byteString","decode","tmp","array","ucs2encode","exports","class","_createElementVNode","id","emits","methods","retry","this","$emit","_createElementBlock","_hoisted_1","_ctx","onClick","$options","library","faTimes","faWindowMinimize","faFileUpload","faFileDownload","faChevronDown","data","dataImporter","importValidator","dataThemeExporter","generateExport","dataExporter","components","Modal","Popover","Checkbox","SettingsModalContent","asyncComponent","options","loadingComponent","PanelLoading","errorComponent","AsyncComponentError","delay","asyncComponentFactory","defineAsyncComponent","loader","observe","shallowReactive","c","render","h","onResetAsyncComponent","closeModal","$store","dispatch","peekModal","Array","isArray","_pleroma_settings_version","messageKey","major","minor","messageArgs","fileMajor","feMajor","level","restore","backup","backupWithTheme","theme","config","state","sample","ignoreList","Set","Object","fromEntries","entries","filter","key","has","clone","computed","currentSaveStateNotice","settings","modalActivated","settingsModalState","modalOpenedOnce","settingsModalLoaded","modalPeeked","expertLevel","get","set","console","log","name","_createBlock","_component_Modal","_normalizeClass","peek","_hoisted_2","_hoisted_3","_createVNode","_Transition","transparent","title","_component_FAIcon","icon","_hoisted_6","_component_SettingsModalContent","_hoisted_7","_component_Popover","trigger","placement","offset","y","x","content","close","_hoisted_9","_component_Checkbox","Number","$event","_hoisted_13"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/6464.eb9c90a1c948cde554e9.js b/priv/static/static/js/6464.eb9c90a1c948cde554e9.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[6464],{16464:(t,e,a)=>{a.r(e),a.d(e,{CURRENT_UPDATE_COUNTER:()=>T,default:()=>N});var n=a(66252),o=a(3577),s=a(49963),i={class:"panel-heading"},r={class:"title"},l={class:"panel-body"},u=["src"],p=(0,n._)("div",{class:"spacer-top"},null,-1),c={class:"text"},d={ref:"animatedText",class:"extra-info-group"},g={target:"_blank",href:"https://git.pleroma.social/"},h={target:"_blank",href:"https://pleroma.social/announcements/"},m={class:"art-credit"},_=(0,n._)("a",{target:"_blank",href:"https://post.ebin.club/users/pipivovott"},"pipivovott",-1),f=(0,n._)("div",{class:"spacer-bottom"},null,-1),w={class:"panel-footer"},v=a(48328),S=a(9382),b=a(31934),k=a(95326),$=a(43011),C=a(68789),y=a(84131);S.vI.add(y.NBC);var T=1;const M={data:function(){return{showingImage:!1,pleromaTanVariant:Math.random()>.5?b:k,showingMore:!1}},components:{Modal:v.Z},computed:{pleromaTanStyles:function(){return{"shape-outside":"url("+(this.pleromaTanVariant===b?$:C)+")"}},shouldShow:function(){return!this.$store.state.instance.disableUpdateNotification&&this.$store.state.users.currentUser&&this.$store.state.serverSideStorage.flagStorage.updateCounter<T&&!this.$store.state.serverSideStorage.prefsStorage.simple.dontShowUpdateNotifs}},methods:{toggleShow:function(){this.showingMore=!this.showingMore},neverShowAgain:function(){this.toggleShow(),this.$store.commit("setFlag",{flag:"updateCounter",value:T}),this.$store.commit("setPreference",{path:"simple.dontShowUpdateNotifs",value:!0}),this.$store.dispatch("pushServerSideStorage")},dismiss:function(){this.$store.commit("setFlag",{flag:"updateCounter",value:T}),this.$store.dispatch("pushServerSideStorage")}},mounted:function(){var t=this;this.contentHeightNoImage=this.$refs.animatedText.scrollHeight;var e=new Image;e.onload=function(){setTimeout((function(){t.showingImage=!0}),100)},e.src=this.pleromaTanVariant===b?$:C}},N=(0,a(83744).Z)(M,[["render",function(t,e,a,v,S,b){var k=(0,n.up)("i18n-t"),$=(0,n.up)("Modal");return(0,n.wg)(),(0,n.j4)($,{"is-open":!!t.shouldShow,class:"UpdateNotification","no-background":!0},{default:(0,n.w5)((function(){return[(0,n._)("div",{class:(0,o.C_)(["UpdateNotificationModal panel",{"-peek":!t.showingMore}])},[(0,n._)("div",i,[(0,n._)("span",r,(0,o.zw)(t.$t("update.big_update_title")),1)]),(0,n._)("div",l,[(0,n._)("div",{class:(0,o.C_)(["content",{"-noImage":!t.showingImage}])},[t.showingImage?((0,n.wg)(),(0,n.iD)("img",{key:0,class:"pleroma-tan",src:t.pleromaTanVariant,style:(0,o.j5)(t.pleromaTanStyles)},null,12,u)):(0,n.kq)("",!0),p,(0,n._)("div",c,[(0,n._)("p",null,(0,o.zw)(t.$t("update.big_update_content")),1),(0,n._)("div",d,[(0,n.Wm)(k,{keypath:"update.update_bugs",tag:"p"},{pleromaGitlab:(0,n.w5)((function(){return[(0,n._)("a",g,(0,o.zw)(t.$t("update.update_bugs_gitlab")),1)]})),_:1}),(0,n.Wm)(k,{keypath:"update.update_changelog",tag:"p"},{theFullChangelog:(0,n.w5)((function(){return[(0,n._)("a",h,(0,o.zw)(t.$t("update.update_changelog_here")),1)]})),_:1}),(0,n._)("p",m,[(0,n.Wm)(k,{keypath:"update.art_by",tag:"small"},{linkToArtist:(0,n.w5)((function(){return[_]})),_:1})])],512)]),f],2)]),(0,n._)("div",w,[(0,n._)("button",{class:"button-default",onClick:e[0]||(e[0]=(0,s.iM)((function(){return t.neverShowAgain&&t.neverShowAgain.apply(t,arguments)}),["prevent"]))},(0,o.zw)(t.$t("general.never_show_again")),1),t.showingMore?(0,n.kq)("",!0):((0,n.wg)(),(0,n.iD)("button",{key:0,class:"button-default",onClick:e[1]||(e[1]=(0,s.iM)((function(){return t.toggleShow&&t.toggleShow.apply(t,arguments)}),["prevent"]))},(0,o.zw)(t.$t("general.show_more")),1)),(0,n._)("button",{class:"button-default",onClick:e[2]||(e[2]=(0,s.iM)((function(){return t.dismiss&&t.dismiss.apply(t,arguments)}),["prevent"]))},(0,o.zw)(t.$t("general.dismiss")),1)])],2)]})),_:1},8,["is-open"])}]])}}]); +//# sourceMappingURL=6464.eb9c90a1c948cde554e9.js.map +\ No newline at end of file diff --git a/priv/static/static/js/6464.eb9c90a1c948cde554e9.js.map b/priv/static/static/js/6464.eb9c90a1c948cde554e9.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/6464.eb9c90a1c948cde554e9.js","mappings":"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","sources":["webpack://pleroma_fe/./src/components/update_notification/update_notification.vue","webpack://pleroma_fe/./src/components/update_notification/update_notification.js","webpack://pleroma_fe/./src/components/update_notification/update_notification.vue?27aa"],"sourcesContent":["<template>\n <Modal\n :is-open=\"!!shouldShow\"\n class=\"UpdateNotification\"\n :no-background=\"true\"\n >\n <div\n class=\"UpdateNotificationModal panel\"\n :class=\"{ '-peek': !showingMore }\"\n >\n <div class=\"panel-heading\">\n <span class=\"title\">\n {{ $t('update.big_update_title') }}\n </span>\n </div>\n <div class=\"panel-body\">\n <div\n class=\"content\"\n :class=\"{ '-noImage': !showingImage }\"\n >\n <img\n v-if=\"showingImage\"\n class=\"pleroma-tan\"\n :src=\"pleromaTanVariant\"\n :style=\"pleromaTanStyles\"\n >\n <div class=\"spacer-top\" />\n <div class=\"text\">\n <p>\n {{ $t('update.big_update_content') }}\n </p>\n <div\n ref=\"animatedText\"\n class=\"extra-info-group\"\n >\n <i18n-t\n keypath=\"update.update_bugs\"\n tag=\"p\"\n >\n <template #pleromaGitlab>\n <a\n target=\"_blank\"\n href=\"https://git.pleroma.social/\"\n >{{ $t('update.update_bugs_gitlab') }}</a>\n </template>\n </i18n-t>\n <i18n-t\n keypath=\"update.update_changelog\"\n tag=\"p\"\n >\n <template #theFullChangelog>\n <a\n target=\"_blank\"\n href=\"https://pleroma.social/announcements/\"\n >{{ $t('update.update_changelog_here') }}</a>\n </template>\n </i18n-t>\n <p class=\"art-credit\">\n <i18n-t\n keypath=\"update.art_by\"\n tag=\"small\"\n >\n <template #linkToArtist>\n <a\n target=\"_blank\"\n href=\"https://post.ebin.club/users/pipivovott\"\n >pipivovott</a>\n </template>\n </i18n-t>\n </p>\n </div>\n </div>\n <div class=\"spacer-bottom\" />\n </div>\n </div>\n <div class=\"panel-footer\">\n <button\n class=\"button-default\"\n @click.prevent=\"neverShowAgain\"\n >\n {{ $t(\"general.never_show_again\") }}\n </button>\n <button\n v-if=\"!showingMore\"\n class=\"button-default\"\n @click.prevent=\"toggleShow\"\n >\n {{ $t(\"general.show_more\") }}\n </button>\n <button\n class=\"button-default\"\n @click.prevent=\"dismiss\"\n >\n {{ $t(\"general.dismiss\") }}\n </button>\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./update_notification.js\"></script>\n\n<style src=\"./update_notification.scss\" lang=\"scss\"></style>\n","import Modal from 'src/components/modal/modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport pleromaTan from 'src/assets/pleromatan_apology.png'\nimport pleromaTanFox from 'src/assets/pleromatan_apology_fox.png'\nimport pleromaTanMask from 'src/assets/pleromatan_apology_mask.png'\nimport pleromaTanFoxMask from 'src/assets/pleromatan_apology_fox_mask.png'\n\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\nlibrary.add(\n faTimes\n)\n\nexport const CURRENT_UPDATE_COUNTER = 1\n\nconst UpdateNotification = {\n data () {\n return {\n showingImage: false,\n pleromaTanVariant: Math.random() > 0.5 ? pleromaTan : pleromaTanFox,\n showingMore: false\n }\n },\n components: {\n Modal\n },\n computed: {\n pleromaTanStyles () {\n const mask = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n return {\n 'shape-outside': 'url(' + mask + ')'\n }\n },\n shouldShow () {\n return !this.$store.state.instance.disableUpdateNotification &&\n this.$store.state.users.currentUser &&\n this.$store.state.serverSideStorage.flagStorage.updateCounter < CURRENT_UPDATE_COUNTER &&\n !this.$store.state.serverSideStorage.prefsStorage.simple.dontShowUpdateNotifs\n }\n },\n methods: {\n toggleShow () {\n this.showingMore = !this.showingMore\n },\n neverShowAgain () {\n this.toggleShow()\n this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n this.$store.commit('setPreference', { path: 'simple.dontShowUpdateNotifs', value: true })\n this.$store.dispatch('pushServerSideStorage')\n },\n dismiss () {\n this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n this.$store.dispatch('pushServerSideStorage')\n }\n },\n mounted () {\n this.contentHeightNoImage = this.$refs.animatedText.scrollHeight\n\n // Workaround to get the text height only after mask loaded. A bit hacky.\n const newImg = new Image()\n newImg.onload = () => {\n setTimeout(() => { this.showingImage = true }, 100)\n }\n newImg.src = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n }\n}\n\nexport default UpdateNotification\n","import { render } from \"./update_notification.vue?vue&type=template&id=653a2178\"\nimport script from \"./update_notification.js?vue&type=script&lang=js\"\nexport * from \"./update_notification.js?vue&type=script&lang=js\"\n\nimport \"./update_notification.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","_createElementVNode","ref","target","href","library","faTimes","CURRENT_UPDATE_COUNTER","data","showingImage","pleromaTanVariant","Math","random","pleromaTan","pleromaTanFox","showingMore","components","Modal","computed","pleromaTanStyles","this","pleromaTanMask","pleromaTanFoxMask","shouldShow","$store","state","instance","disableUpdateNotification","users","currentUser","serverSideStorage","flagStorage","updateCounter","prefsStorage","simple","dontShowUpdateNotifs","methods","toggleShow","neverShowAgain","commit","flag","value","path","dispatch","dismiss","mounted","_this","contentHeightNoImage","$refs","animatedText","scrollHeight","newImg","Image","onload","setTimeout","src","_createBlock","_component_Modal","_ctx","_normalizeClass","_hoisted_1","_hoisted_2","_toDisplayString","$t","_hoisted_3","_createElementBlock","style","_normalizeStyle","_hoisted_5","_hoisted_6","_hoisted_7","_createVNode","_component_i18n_t","keypath","tag","pleromaGitlab","_withCtx","_hoisted_8","theFullChangelog","_hoisted_9","_hoisted_10","linkToArtist","_hoisted_11","_hoisted_12","_hoisted_13","onClick","_cache","_withModifiers","apply","arguments"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/6464.fea96fa80a7373e4e5f8.js b/priv/static/static/js/6464.fea96fa80a7373e4e5f8.js @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[6464],{16464:(t,e,a)=>{a.r(e),a.d(e,{CURRENT_UPDATE_COUNTER:()=>T,default:()=>N});var n=a(66252),o=a(3577),s=a(49963),i={class:"panel-heading"},r={class:"title"},l={class:"panel-body"},u=["src"],p=(0,n._)("div",{class:"spacer-top"},null,-1),c={class:"text"},d={ref:"animatedText",class:"extra-info-group"},g={target:"_blank",href:"https://git.pleroma.social/"},h={target:"_blank",href:"https://pleroma.social/announcements/"},m={class:"art-credit"},_=(0,n._)("a",{target:"_blank",href:"https://post.ebin.club/users/pipivovott"},"pipivovott",-1),f=(0,n._)("div",{class:"spacer-bottom"},null,-1),w={class:"panel-footer"},v=a(48328),S=a(9382),b=a(31934),k=a(95326),$=a(43011),C=a(68789),y=a(84131);S.vI.add(y.NBC);var T=1;const M={data:function(){return{showingImage:!1,pleromaTanVariant:Math.random()>.5?b:k,showingMore:!1}},components:{Modal:v.Z},computed:{pleromaTanStyles:function(){return{"shape-outside":"url("+(this.pleromaTanVariant===b?$:C)+")"}},shouldShow:function(){return!this.$store.state.instance.disableUpdateNotification&&this.$store.state.users.currentUser&&this.$store.state.serverSideStorage.flagStorage.updateCounter<T&&!this.$store.state.serverSideStorage.prefsStorage.simple.dontShowUpdateNotifs}},methods:{toggleShow:function(){this.showingMore=!this.showingMore},neverShowAgain:function(){this.toggleShow(),this.$store.commit("setFlag",{flag:"updateCounter",value:T}),this.$store.commit("setPreference",{path:"simple.dontShowUpdateNotifs",value:!0}),this.$store.dispatch("pushServerSideStorage")},dismiss:function(){this.$store.commit("setFlag",{flag:"updateCounter",value:T}),this.$store.dispatch("pushServerSideStorage")}},mounted:function(){var t=this;this.contentHeightNoImage=this.$refs.animatedText.scrollHeight;var e=new Image;e.onload=function(){setTimeout((function(){t.showingImage=!0}),100)},e.src=this.pleromaTanVariant===b?$:C}},N=(0,a(83744).Z)(M,[["render",function(t,e,a,v,S,b){var k=(0,n.up)("i18n-t"),$=(0,n.up)("Modal");return(0,n.wg)(),(0,n.j4)($,{"is-open":!!t.shouldShow,class:"UpdateNotification","no-background":!0},{default:(0,n.w5)((function(){return[(0,n._)("div",{class:(0,o.C_)(["UpdateNotificationModal panel",{"-peek":!t.showingMore}])},[(0,n._)("div",i,[(0,n._)("span",r,(0,o.zw)(t.$t("update.big_update_title")),1)]),(0,n._)("div",l,[(0,n._)("div",{class:(0,o.C_)(["content",{"-noImage":!t.showingImage}])},[t.showingImage?((0,n.wg)(),(0,n.iD)("img",{key:0,class:"pleroma-tan",src:t.pleromaTanVariant,style:(0,o.j5)(t.pleromaTanStyles)},null,12,u)):(0,n.kq)("",!0),p,(0,n._)("div",c,[(0,n._)("p",null,(0,o.zw)(t.$t("update.big_update_content")),1),(0,n._)("div",d,[(0,n.Wm)(k,{keypath:"update.update_bugs",tag:"p"},{pleromaGitlab:(0,n.w5)((function(){return[(0,n._)("a",g,(0,o.zw)(t.$t("update.update_bugs_gitlab")),1)]})),_:1}),(0,n.Wm)(k,{keypath:"update.update_changelog",tag:"p"},{theFullChangelog:(0,n.w5)((function(){return[(0,n._)("a",h,(0,o.zw)(t.$t("update.update_changelog_here")),1)]})),_:1}),(0,n._)("p",m,[(0,n.Wm)(k,{keypath:"update.art_by",tag:"small"},{linkToArtist:(0,n.w5)((function(){return[_]})),_:1})])],512)]),f],2)]),(0,n._)("div",w,[(0,n._)("button",{class:"button-default",onClick:e[0]||(e[0]=(0,s.iM)((function(){return t.neverShowAgain&&t.neverShowAgain.apply(t,arguments)}),["prevent"]))},(0,o.zw)(t.$t("general.never_show_again")),1),t.showingMore?(0,n.kq)("",!0):((0,n.wg)(),(0,n.iD)("button",{key:0,class:"button-default",onClick:e[1]||(e[1]=(0,s.iM)((function(){return t.toggleShow&&t.toggleShow.apply(t,arguments)}),["prevent"]))},(0,o.zw)(t.$t("general.show_more")),1)),(0,n._)("button",{class:"button-default",onClick:e[2]||(e[2]=(0,s.iM)((function(){return t.dismiss&&t.dismiss.apply(t,arguments)}),["prevent"]))},(0,o.zw)(t.$t("general.dismiss")),1)])],2)]})),_:1},8,["is-open"])}]])}}]); -//# sourceMappingURL=6464.fea96fa80a7373e4e5f8.js.map -\ No newline at end of file diff --git a/priv/static/static/js/6464.fea96fa80a7373e4e5f8.js.map b/priv/static/static/js/6464.fea96fa80a7373e4e5f8.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/6464.fea96fa80a7373e4e5f8.js","mappings":"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","sources":["webpack://pleroma_fe/./src/components/update_notification/update_notification.vue","webpack://pleroma_fe/./src/components/update_notification/update_notification.js","webpack://pleroma_fe/./src/components/update_notification/update_notification.vue?27aa"],"sourcesContent":["<template>\n <Modal\n :is-open=\"!!shouldShow\"\n class=\"UpdateNotification\"\n :no-background=\"true\"\n >\n <div\n class=\"UpdateNotificationModal panel\"\n :class=\"{ '-peek': !showingMore }\"\n >\n <div class=\"panel-heading\">\n <span class=\"title\">\n {{ $t('update.big_update_title') }}\n </span>\n </div>\n <div class=\"panel-body\">\n <div\n class=\"content\"\n :class=\"{ '-noImage': !showingImage }\"\n >\n <img\n v-if=\"showingImage\"\n class=\"pleroma-tan\"\n :src=\"pleromaTanVariant\"\n :style=\"pleromaTanStyles\"\n >\n <div class=\"spacer-top\" />\n <div class=\"text\">\n <p>\n {{ $t('update.big_update_content') }}\n </p>\n <div\n ref=\"animatedText\"\n class=\"extra-info-group\"\n >\n <i18n-t\n keypath=\"update.update_bugs\"\n tag=\"p\"\n >\n <template #pleromaGitlab>\n <a\n target=\"_blank\"\n href=\"https://git.pleroma.social/\"\n >{{ $t('update.update_bugs_gitlab') }}</a>\n </template>\n </i18n-t>\n <i18n-t\n keypath=\"update.update_changelog\"\n tag=\"p\"\n >\n <template #theFullChangelog>\n <a\n target=\"_blank\"\n href=\"https://pleroma.social/announcements/\"\n >{{ $t('update.update_changelog_here') }}</a>\n </template>\n </i18n-t>\n <p class=\"art-credit\">\n <i18n-t\n keypath=\"update.art_by\"\n tag=\"small\"\n >\n <template #linkToArtist>\n <a\n target=\"_blank\"\n href=\"https://post.ebin.club/users/pipivovott\"\n >pipivovott</a>\n </template>\n </i18n-t>\n </p>\n </div>\n </div>\n <div class=\"spacer-bottom\" />\n </div>\n </div>\n <div class=\"panel-footer\">\n <button\n class=\"button-default\"\n @click.prevent=\"neverShowAgain\"\n >\n {{ $t(\"general.never_show_again\") }}\n </button>\n <button\n v-if=\"!showingMore\"\n class=\"button-default\"\n @click.prevent=\"toggleShow\"\n >\n {{ $t(\"general.show_more\") }}\n </button>\n <button\n class=\"button-default\"\n @click.prevent=\"dismiss\"\n >\n {{ $t(\"general.dismiss\") }}\n </button>\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./update_notification.js\"></script>\n\n<style src=\"./update_notification.scss\" lang=\"scss\"></style>\n","import Modal from 'src/components/modal/modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport pleromaTan from 'src/assets/pleromatan_apology.png'\nimport pleromaTanFox from 'src/assets/pleromatan_apology_fox.png'\nimport pleromaTanMask from 'src/assets/pleromatan_apology_mask.png'\nimport pleromaTanFoxMask from 'src/assets/pleromatan_apology_fox_mask.png'\n\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\nlibrary.add(\n faTimes\n)\n\nexport const CURRENT_UPDATE_COUNTER = 1\n\nconst UpdateNotification = {\n data () {\n return {\n showingImage: false,\n pleromaTanVariant: Math.random() > 0.5 ? pleromaTan : pleromaTanFox,\n showingMore: false\n }\n },\n components: {\n Modal\n },\n computed: {\n pleromaTanStyles () {\n const mask = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n return {\n 'shape-outside': 'url(' + mask + ')'\n }\n },\n shouldShow () {\n return !this.$store.state.instance.disableUpdateNotification &&\n this.$store.state.users.currentUser &&\n this.$store.state.serverSideStorage.flagStorage.updateCounter < CURRENT_UPDATE_COUNTER &&\n !this.$store.state.serverSideStorage.prefsStorage.simple.dontShowUpdateNotifs\n }\n },\n methods: {\n toggleShow () {\n this.showingMore = !this.showingMore\n },\n neverShowAgain () {\n this.toggleShow()\n this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n this.$store.commit('setPreference', { path: 'simple.dontShowUpdateNotifs', value: true })\n this.$store.dispatch('pushServerSideStorage')\n },\n dismiss () {\n this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n this.$store.dispatch('pushServerSideStorage')\n }\n },\n mounted () {\n this.contentHeightNoImage = this.$refs.animatedText.scrollHeight\n\n // Workaround to get the text height only after mask loaded. A bit hacky.\n const newImg = new Image()\n newImg.onload = () => {\n setTimeout(() => { this.showingImage = true }, 100)\n }\n newImg.src = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n }\n}\n\nexport default UpdateNotification\n","import { render } from \"./update_notification.vue?vue&type=template&id=653a2178\"\nimport script from \"./update_notification.js?vue&type=script&lang=js\"\nexport * from \"./update_notification.js?vue&type=script&lang=js\"\n\nimport \"./update_notification.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","_createElementVNode","ref","target","href","library","faTimes","CURRENT_UPDATE_COUNTER","data","showingImage","pleromaTanVariant","Math","random","pleromaTan","pleromaTanFox","showingMore","components","Modal","computed","pleromaTanStyles","this","pleromaTanMask","pleromaTanFoxMask","shouldShow","$store","state","instance","disableUpdateNotification","users","currentUser","serverSideStorage","flagStorage","updateCounter","prefsStorage","simple","dontShowUpdateNotifs","methods","toggleShow","neverShowAgain","commit","flag","value","path","dispatch","dismiss","mounted","contentHeightNoImage","$refs","animatedText","scrollHeight","newImg","Image","onload","setTimeout","src","_createBlock","_component_Modal","_ctx","_normalizeClass","_hoisted_1","_hoisted_2","_hoisted_3","_createElementBlock","style","_hoisted_5","_hoisted_6","_hoisted_7","_createVNode","_component_i18n_t","keypath","tag","pleromaGitlab","_hoisted_8","theFullChangelog","_hoisted_9","_hoisted_10","linkToArtist","_hoisted_11","_hoisted_12","_hoisted_13","onClick"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/7586.628f729b9c8b2e6f4e1f.js b/priv/static/static/js/7586.628f729b9c8b2e6f4e1f.js @@ -0,0 +1,2 @@ +(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[7586],{25771:(t,e,n)=>{"use strict";n.d(e,{M:()=>i,i:()=>a});var r=n(57458),o=n.n(r),i=function(t){var e=t.filename,n=void 0===e?"data":e,r=t.getExportedObject;return{exportData:function(){var t=o().encode(JSON.stringify(r(),null,2)),e=document.createElement("a");e.setAttribute("download","".concat(n,".json")),e.setAttribute("href","data:application/json;base64,"+window.btoa(t)),e.style.display="none",document.body.appendChild(e),e.click(),document.body.removeChild(e)}}},a=function(t){var e=t.onImport,n=t.onImportFailure,r=t.validator,o=void 0===r?function(){return!0}:r;return{importData:function(){var t=document.createElement("input");t.setAttribute("type","file"),t.setAttribute("accept",".json"),t.addEventListener("change",(function(t){if(t.target.files[0]){var r=new FileReader;r.onload=function(t){var r=t.target;try{var i=JSON.parse(r.result),a=o(i);!0===a?e(i):n({validationResult:a})}catch(t){n({error:t})}},r.readAsText(t.target.files[0])}})),document.body.appendChild(t),t.click(),document.body.removeChild(t)}}}},57458:(t,e)=>{!function(t){var e,n,r,o=String.fromCharCode;function i(t){for(var e,n,r=[],o=0,i=t.length;o<i;)(e=t.charCodeAt(o++))>=55296&&e<=56319&&o<i?56320==(64512&(n=t.charCodeAt(o++)))?r.push(((1023&e)<<10)+(1023&n)+65536):(r.push(e),o--):r.push(e);return r}function a(t){if(t>=55296&&t<=57343)throw Error("Lone surrogate U+"+t.toString(16).toUpperCase()+" is not a scalar value")}function s(t,e){return o(t>>e&63|128)}function l(t){if(0==(4294967168&t))return o(t);var e="";return 0==(4294965248&t)?e=o(t>>6&31|192):0==(4294901760&t)?(a(t),e=o(t>>12&15|224),e+=s(t,6)):0==(4292870144&t)&&(e=o(t>>18&7|240),e+=s(t,12),e+=s(t,6)),e+o(63&t|128)}function c(){if(r>=n)throw Error("Invalid byte index");var t=255&e[r];if(r++,128==(192&t))return 63&t;throw Error("Invalid continuation byte")}function d(){var t,o;if(r>n)throw Error("Invalid byte index");if(r==n)return!1;if(t=255&e[r],r++,0==(128&t))return t;if(192==(224&t)){if((o=(31&t)<<6|c())>=128)return o;throw Error("Invalid continuation byte")}if(224==(240&t)){if((o=(15&t)<<12|c()<<6|c())>=2048)return a(o),o;throw Error("Invalid continuation byte")}if(240==(248&t)&&(o=(7&t)<<18|c()<<12|c()<<6|c())>=65536&&o<=1114111)return o;throw Error("Invalid UTF-8 detected")}t.version="3.0.0",t.encode=function(t){for(var e=i(t),n=e.length,r=-1,o="";++r<n;)o+=l(e[r]);return o},t.decode=function(t){e=i(t),n=e.length,r=0;for(var a,s=[];!1!==(a=d());)s.push(a);return function(t){for(var e,n=t.length,r=-1,i="";++r<n;)(e=t[r])>65535&&(i+=o((e-=65536)>>>10&1023|55296),e=56320|1023&e),i+=o(e);return i}(s)}}(e)},27586:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>J});var r=n(66252),o=n(3577),i=n(49963),a={class:"settings-modal-panel panel"},s={class:"panel-heading"},l={class:"title"},c=["title"],d=["title"],u={class:"panel-body"},p={class:"panel-footer settings-footer -flexible-height"},f=["title"],m={class:"dropdown-menu"},g=["onClick"],h=["onClick"],b=["onClick"],v={key:1},_={href:"/pleroma/admin/#/login-pleroma",target:"_blank"},w=(0,r._)("span",{id:"unscrolled-content",class:"extra-content"},null,-1),y={key:2,class:"admin-buttons"},k=["disabled"],O=["disabled"],x=n(4942),C=n(29439),j=n(18446),M=n.n(j),$=n(50361),A=n.n($),S=n(48328),D=n(29187),E={class:"async-component-error"};const P={emits:["resetAsyncComponent"],methods:{retry:function(){this.$emit("resetAsyncComponent")}}};var I=n(83744);const z=(0,I.Z)(P,[["render",function(t,e,n,i,a,s){return(0,r.wg)(),(0,r.iD)("div",E,[(0,r._)("div",null,[(0,r._)("h4",null,(0,o.zw)(t.$t("general.generic_error")),1),(0,r._)("p",null,(0,o.zw)(t.$t("general.error_retry")),1),(0,r._)("button",{class:"btn button-default",onClick:e[0]||(e[0]=function(){return s.retry&&s.retry.apply(s,arguments)})},(0,o.zw)(t.$t("general.retry")),1)])])}]]);var N=n(2262);function U(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}const W=function(t,e){var n=function(){return function(){return(0,r.RC)(function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?U(Object(n),!0).forEach((function(e){(0,x.Z)(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):U(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({loader:t},e))}},o=(0,N.Um)({c:n()});return{render:function(){return(0,r.h)(o.c(),{onResetAsyncComponent:function(){o.c=n()}})}}};var L=n(84535),T=n(66141),Z=n(9382),F=n(25771),q=n(84131),K=n(5737);function R(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function G(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?R(Object(n),!0).forEach((function(e){(0,x.Z)(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):R(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}Z.vI.add(q.NBC,K.IQi,q.Y9i,q.kwI,q.ptq);const V={data:function(){var t=this;return{dataImporter:(0,F.i)({validator:this.importValidator,onImport:this.onImport,onImportFailure:this.onImportFailure}),dataThemeExporter:(0,F.M)({filename:"pleromafe_settings.full",getExportedObject:function(){return t.generateExport(!0)}}),dataExporter:(0,F.M)({filename:"pleromafe_settings",getExportedObject:function(){return t.generateExport()}})}},components:{Modal:S.Z,Popover:L.default,Checkbox:T.Z,SettingsModalUserContent:W((function(){return Promise.all([n.e(48),n.e(9060),n.e(7962)]).then(n.bind(n,62691))}),{loadingComponent:D.Z,errorComponent:z,delay:0}),SettingsModalAdminContent:W((function(){return Promise.all([n.e(9060),n.e(8859)]).then(n.bind(n,17135))}),{loadingComponent:D.Z,errorComponent:z,delay:0})},methods:{closeModal:function(){this.$store.dispatch("closeSettingsModal")},peekModal:function(){this.$store.dispatch("togglePeekSettingsModal")},importValidator:function(t){if(!Array.isArray(t._pleroma_settings_version))return{messageKey:"settings.file_import_export.invalid_file"};var e=(0,C.Z)(t._pleroma_settings_version,2),n=e[0],r=e[1];return n>1?{messageKey:"settings.file_export_import.errors.file_too_new",messageArgs:{fileMajor:n,feMajor:1}}:n<1?{messageKey:"settings.file_export_import.errors.file_too_old",messageArgs:{fileMajor:n,feMajor:1}}:(r>0&&this.$store.dispatch("pushGlobalNotice",{level:"warning",messageKey:"settings.file_export_import.errors.file_slightly_new"}),!0)},onImportFailure:function(t){t.error?this.$store.dispatch("pushGlobalNotice",{messageKey:"settings.invalid_settings_imported",level:"error"}):this.$store.dispatch("pushGlobalNotice",G(G({},t.validationResult),{},{level:"error"}))},onImport:function(t){t&&this.$store.dispatch("loadSettings",t)},restore:function(){this.dataImporter.importData()},backup:function(){this.dataExporter.exportData()},backupWithTheme:function(){this.dataThemeExporter.exportData()},generateExport:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.$store.state.config,n=e;if(!t){var r=new Set(["customTheme","customThemeSource","colors"]);n=Object.fromEntries(Object.entries(n).filter((function(t){var e=(0,C.Z)(t,1)[0];return!r.has(e)})))}var o=A()(n);return o._pleroma_settings_version=[1,0],o},resetAdminDraft:function(){this.$store.commit("resetAdminDraft")},pushAdminDraft:function(){this.$store.dispatch("pushAdminDraft")}},computed:{currentSaveStateNotice:function(){return this.$store.state.interface.settings.currentSaveStateNotice},modalActivated:function(){return"hidden"!==this.$store.state.interface.settingsModalState},modalMode:function(){return this.$store.state.interface.settingsModalMode},modalOpenedOnceUser:function(){return this.$store.state.interface.settingsModalLoadedUser},modalOpenedOnceAdmin:function(){return this.$store.state.interface.settingsModalLoadedAdmin},modalPeeked:function(){return"minimized"===this.$store.state.interface.settingsModalState},expertLevel:{get:function(){return this.$store.state.config.expertLevel>0},set:function(t){this.$store.dispatch("setOption",{name:"expertLevel",value:t?1:0})}},adminDraftAny:function(){return!M()(this.$store.state.adminSettings.config,this.$store.state.adminSettings.draft)}}},J=(0,I.Z)(V,[["render",function(t,e,n,x,C,j){var M=(0,r.up)("FAIcon"),$=(0,r.up)("SettingsModalUserContent"),A=(0,r.up)("SettingsModalAdminContent"),S=(0,r.up)("Popover"),D=(0,r.up)("Checkbox"),E=(0,r.up)("i18n-t"),P=(0,r.up)("Modal");return(0,r.wg)(),(0,r.j4)(P,{"is-open":t.modalActivated,class:(0,o.C_)(["settings-modal",{peek:t.modalPeeked}]),"no-background":t.modalPeeked},{default:(0,r.w5)((function(){return[(0,r._)("div",a,[(0,r._)("div",s,[(0,r._)("span",l,(0,o.zw)("user"===t.modalMode?t.$t("settings.settings"):t.$t("admin_dash.window_title")),1),(0,r.Wm)(i.uT,{name:"fade"},{default:(0,r.w5)((function(){return[t.currentSaveStateNotice?((0,r.wg)(),(0,r.iD)("div",{key:0,class:(0,o.C_)(["alert",{transparent:!t.currentSaveStateNotice.error,error:t.currentSaveStateNotice.error}]),onClick:e[0]||(e[0]=(0,i.iM)((function(){}),["prevent"]))},(0,o.zw)(t.currentSaveStateNotice.error?t.$t("settings.saving_err"):t.$t("settings.saving_ok")),3)):(0,r.kq)("",!0)]})),_:1}),(0,r._)("button",{class:"btn button-default",title:t.$t("general.peek"),onClick:e[1]||(e[1]=function(){return t.peekModal&&t.peekModal.apply(t,arguments)})},[(0,r.Wm)(M,{icon:["far","window-minimize"],"fixed-width":""})],8,c),(0,r._)("button",{class:"btn button-default",title:t.$t("general.close"),onClick:e[2]||(e[2]=function(){return t.closeModal&&t.closeModal.apply(t,arguments)})},[(0,r.Wm)(M,{icon:"times","fixed-width":""})],8,d)]),(0,r._)("div",u,["user"===t.modalMode&&t.modalOpenedOnceUser?((0,r.wg)(),(0,r.j4)($,{key:0})):(0,r.kq)("",!0),"admin"===t.modalMode&&t.modalOpenedOnceAdmin?((0,r.wg)(),(0,r.j4)(A,{key:1})):(0,r.kq)("",!0)]),(0,r._)("div",p,["user"===t.modalMode?((0,r.wg)(),(0,r.j4)(S,{key:0,class:"export",trigger:"click",placement:"top",offset:{y:5,x:5},"bound-to":{x:"container"},"remove-padding":""},{trigger:(0,r.w5)((function(){return[(0,r._)("button",{class:"btn button-default",title:t.$t("general.close")},[(0,r._)("span",null,(0,o.zw)(t.$t("settings.file_export_import.backup_restore")),1),(0,r.Uk)(" "+(0,o.zw)(" ")+" "),(0,r.Wm)(M,{icon:"chevron-down"})],8,f)]})),content:(0,r.w5)((function(n){var a=n.close;return[(0,r._)("div",m,[(0,r._)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[e[3]||(e[3]=(0,i.iM)((function(){return t.backup&&t.backup.apply(t,arguments)}),["prevent"])),a]},[(0,r.Wm)(M,{icon:"file-download","fixed-width":""}),(0,r._)("span",null,(0,o.zw)(t.$t("settings.file_export_import.backup_settings")),1)],8,g),(0,r._)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[e[4]||(e[4]=(0,i.iM)((function(){return t.backupWithTheme&&t.backupWithTheme.apply(t,arguments)}),["prevent"])),a]},[(0,r.Wm)(M,{icon:"file-download","fixed-width":""}),(0,r._)("span",null,(0,o.zw)(t.$t("settings.file_export_import.backup_settings_theme")),1)],8,h),(0,r._)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[e[5]||(e[5]=(0,i.iM)((function(){return t.restore&&t.restore.apply(t,arguments)}),["prevent"])),a]},[(0,r.Wm)(M,{icon:"file-upload","fixed-width":""}),(0,r._)("span",null,(0,o.zw)(t.$t("settings.file_export_import.restore_settings")),1)],8,b)])]})),_:1})):(0,r.kq)("",!0),(0,r.Wm)(D,{"model-value":!!t.expertLevel,"onUpdate:modelValue":e[6]||(e[6]=function(e){return t.expertLevel=Number(e)})},{default:(0,r.w5)((function(){return[(0,r.Uk)((0,o.zw)(t.$t("settings.expert_mode")),1)]})),_:1},8,["model-value"]),"admin"===t.modalMode?((0,r.wg)(),(0,r.iD)("span",v,[(0,r.Wm)(E,{keypath:"admin_dash.wip_notice"},{adminFeLink:(0,r.w5)((function(){return[(0,r._)("a",_,(0,o.zw)(t.$t("admin_dash.old_ui_link")),1)]})),_:1})])):(0,r.kq)("",!0),w,"admin"===t.modalMode?((0,r.wg)(),(0,r.iD)("span",y,[(0,r._)("button",{class:"button-default btn",disabled:!t.adminDraftAny,onClick:e[7]||(e[7]=function(){return t.resetAdminDraft&&t.resetAdminDraft.apply(t,arguments)})},(0,o.zw)(t.$t("admin_dash.reset_all")),9,k),(0,r.Uk)(" "+(0,o.zw)(" ")+" "),(0,r._)("button",{class:"button-default btn",disabled:!t.adminDraftAny,onClick:e[8]||(e[8]=function(){return t.pushAdminDraft&&t.pushAdminDraft.apply(t,arguments)})},(0,o.zw)(t.$t("admin_dash.commit_all")),9,O)])):(0,r.kq)("",!0)])])]})),_:1},8,["is-open","class","no-background"])}]])}}]); +//# sourceMappingURL=7586.628f729b9c8b2e6f4e1f.js.map +\ No newline at end of file diff --git a/priv/static/static/js/7586.628f729b9c8b2e6f4e1f.js.map b/priv/static/static/js/7586.628f729b9c8b2e6f4e1f.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/7586.628f729b9c8b2e6f4e1f.js","mappings":"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","sources":["webpack://pleroma_fe/./src/services/export_import/export_import.js","webpack://pleroma_fe/./node_modules/utf8/utf8.js","webpack://pleroma_fe/./src/components/settings_modal/settings_modal.vue","webpack://pleroma_fe/./src/components/async_component_error/async_component_error.vue","webpack://pleroma_fe/./src/components/async_component_error/async_component_error.vue?c151","webpack://pleroma_fe/./src/services/resettable_async_component.js","webpack://pleroma_fe/./src/components/settings_modal/settings_modal.js","webpack://pleroma_fe/./src/components/settings_modal/settings_modal.vue?2a2f"],"sourcesContent":["import utf8 from 'utf8'\n\nexport const newExporter = ({\n filename = 'data',\n getExportedObject\n}) => ({\n exportData () {\n const stringified = utf8.encode(JSON.stringify(getExportedObject(), null, 2)) // Pretty-print and indent with 2 spaces\n\n // Create an invisible link with a data url and simulate a click\n const e = document.createElement('a')\n e.setAttribute('download', `${filename}.json`)\n e.setAttribute('href', 'data:application/json;base64,' + window.btoa(stringified))\n e.style.display = 'none'\n\n document.body.appendChild(e)\n e.click()\n document.body.removeChild(e)\n }\n})\n\nexport const newImporter = ({\n onImport,\n onImportFailure,\n validator = () => true\n}) => ({\n importData () {\n const filePicker = document.createElement('input')\n filePicker.setAttribute('type', 'file')\n filePicker.setAttribute('accept', '.json')\n\n filePicker.addEventListener('change', event => {\n if (event.target.files[0]) {\n // eslint-disable-next-line no-undef\n const reader = new FileReader()\n reader.onload = ({ target }) => {\n try {\n const parsed = JSON.parse(target.result)\n const validationResult = validator(parsed)\n if (validationResult === true) {\n onImport(parsed)\n } else {\n onImportFailure({ validationResult })\n }\n } catch (error) {\n onImportFailure({ error })\n }\n }\n reader.readAsText(event.target.files[0])\n }\n })\n\n document.body.appendChild(filePicker)\n filePicker.click()\n document.body.removeChild(filePicker)\n }\n})\n","/*! https://mths.be/utf8js v3.0.0 by @mathias */\n;(function(root) {\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\troot.version = '3.0.0';\n\troot.encode = utf8encode;\n\troot.decode = utf8decode;\n\n}(typeof exports === 'undefined' ? this.utf8 = {} : exports));\n","<template>\n <Modal\n :is-open=\"modalActivated\"\n class=\"settings-modal\"\n :class=\"{ peek: modalPeeked }\"\n :no-background=\"modalPeeked\"\n >\n <div class=\"settings-modal-panel panel\">\n <div class=\"panel-heading\">\n <span class=\"title\">\n {{ modalMode === 'user' ? $t('settings.settings') : $t('admin_dash.window_title') }}\n </span>\n <transition name=\"fade\">\n <div\n v-if=\"currentSaveStateNotice\"\n class=\"alert\"\n :class=\"{ transparent: !currentSaveStateNotice.error, error: currentSaveStateNotice.error}\"\n @click.prevent\n >\n {{ currentSaveStateNotice.error ? $t('settings.saving_err') : $t('settings.saving_ok') }}\n </div>\n </transition>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.peek')\"\n @click=\"peekModal\"\n >\n <FAIcon\n :icon=\"['far', 'window-minimize']\"\n fixed-width\n />\n </button>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.close')\"\n @click=\"closeModal\"\n >\n <FAIcon\n icon=\"times\"\n fixed-width\n />\n </button>\n </div>\n <div class=\"panel-body\">\n <SettingsModalUserContent v-if=\"modalMode === 'user' && modalOpenedOnceUser\" />\n <SettingsModalAdminContent v-if=\"modalMode === 'admin' && modalOpenedOnceAdmin\" />\n </div>\n <div class=\"panel-footer settings-footer -flexible-height\">\n <Popover\n v-if=\"modalMode === 'user'\"\n class=\"export\"\n trigger=\"click\"\n placement=\"top\"\n :offset=\"{ y: 5, x: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n >\n <template #trigger>\n <button\n class=\"btn button-default\"\n :title=\"$t('general.close')\"\n >\n <span>{{ $t(\"settings.file_export_import.backup_restore\") }}</span>\n {{ ' ' }}\n <FAIcon\n icon=\"chevron-down\"\n />\n </button>\n </template>\n <template #content=\"{close}\">\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"backup\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-download\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.backup_settings\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"backupWithTheme\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-download\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.backup_settings_theme\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"restore\"\n @click=\"close\"\n >\n <FAIcon\n icon=\"file-upload\"\n fixed-width\n /><span>{{ $t(\"settings.file_export_import.restore_settings\") }}</span>\n </button>\n </div>\n </template>\n </Popover>\n\n <Checkbox\n :model-value=\"!!expertLevel\"\n @update:modelValue=\"expertLevel = Number($event)\"\n >\n {{ $t(\"settings.expert_mode\") }}\n </Checkbox>\n <span v-if=\"modalMode === 'admin'\">\n <i18n-t keypath=\"admin_dash.wip_notice\">\n <template #adminFeLink>\n <a\n href=\"/pleroma/admin/#/login-pleroma\"\n target=\"_blank\"\n >\n {{ $t(\"admin_dash.old_ui_link\") }}\n </a>\n </template>\n </i18n-t>\n </span>\n <span\n id=\"unscrolled-content\"\n class=\"extra-content\"\n />\n <span\n v-if=\"modalMode === 'admin'\"\n class=\"admin-buttons\"\n >\n <button\n class=\"button-default btn\"\n :disabled=\"!adminDraftAny\"\n @click=\"resetAdminDraft\"\n >\n {{ $t(\"admin_dash.reset_all\") }}\n </button>\n {{ ' ' }}\n <button\n class=\"button-default btn\"\n :disabled=\"!adminDraftAny\"\n @click=\"pushAdminDraft\"\n >\n {{ $t(\"admin_dash.commit_all\") }}\n </button>\n </span>\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./settings_modal.js\"></script>\n\n<style src=\"./settings_modal.scss\" lang=\"scss\"></style>\n","<template>\n <div class=\"async-component-error\">\n <div>\n <h4>\n {{ $t('general.generic_error') }}\n </h4>\n <p>\n {{ $t('general.error_retry') }}\n </p>\n <button\n class=\"btn button-default\"\n @click=\"retry\"\n >\n {{ $t('general.retry') }}\n </button>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n emits: ['resetAsyncComponent'],\n methods: {\n retry () {\n this.$emit('resetAsyncComponent')\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n\n .btn {\n margin: 0.5em;\n padding: 0.5em 2em;\n }\n}\n</style>\n","import { render } from \"./async_component_error.vue?vue&type=template&id=0e326028\"\nimport script from \"./async_component_error.vue?vue&type=script&lang=js\"\nexport * from \"./async_component_error.vue?vue&type=script&lang=js\"\n\nimport \"./async_component_error.vue?vue&type=style&index=0&id=0e326028&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defineAsyncComponent, shallowReactive, h } from 'vue'\n\n/* By default async components don't have any way to recover, if component is\n * failed, it is failed forever. This helper tries to remedy that by recreating\n * async component when retry is requested (by user). You need to emit the\n * `resetAsyncComponent` event from child to reset the component. Generally,\n * this should be done from error component but could be done from loading or\n * actual target component itself if needs to be.\n */\nfunction getResettableAsyncComponent (asyncComponent, options) {\n const asyncComponentFactory = () => () => defineAsyncComponent({\n loader: asyncComponent,\n ...options\n })\n\n const observe = shallowReactive({ c: asyncComponentFactory() })\n\n return {\n render () {\n // emit event resetAsyncComponent to reloading\n return h(observe.c(), {\n onResetAsyncComponent () {\n observe.c = asyncComponentFactory()\n }\n })\n }\n }\n}\n\nexport default getResettableAsyncComponent\n","import Modal from 'src/components/modal/modal.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport AsyncComponentError from 'src/components/async_component_error/async_component_error.vue'\nimport getResettableAsyncComponent from 'src/services/resettable_async_component.js'\nimport Popover from '../popover/popover.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { cloneDeep, isEqual } from 'lodash'\nimport {\n newImporter,\n newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n faTimes,\n faFileUpload,\n faFileDownload,\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faWindowMinimize\n} from '@fortawesome/free-regular-svg-icons'\n\nconst PLEROMAFE_SETTINGS_MAJOR_VERSION = 1\nconst PLEROMAFE_SETTINGS_MINOR_VERSION = 0\n\nlibrary.add(\n faTimes,\n faWindowMinimize,\n faFileUpload,\n faFileDownload,\n faChevronDown\n)\n\nconst SettingsModal = {\n data () {\n return {\n dataImporter: newImporter({\n validator: this.importValidator,\n onImport: this.onImport,\n onImportFailure: this.onImportFailure\n }),\n dataThemeExporter: newExporter({\n filename: 'pleromafe_settings.full',\n getExportedObject: () => this.generateExport(true)\n }),\n dataExporter: newExporter({\n filename: 'pleromafe_settings',\n getExportedObject: () => this.generateExport()\n })\n }\n },\n components: {\n Modal,\n Popover,\n Checkbox,\n SettingsModalUserContent: getResettableAsyncComponent(\n () => import('./settings_modal_user_content.vue'),\n {\n loadingComponent: PanelLoading,\n errorComponent: AsyncComponentError,\n delay: 0\n }\n ),\n SettingsModalAdminContent: getResettableAsyncComponent(\n () => import('./settings_modal_admin_content.vue'),\n {\n loadingComponent: PanelLoading,\n errorComponent: AsyncComponentError,\n delay: 0\n }\n )\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closeSettingsModal')\n },\n peekModal () {\n this.$store.dispatch('togglePeekSettingsModal')\n },\n importValidator (data) {\n if (!Array.isArray(data._pleroma_settings_version)) {\n return {\n messageKey: 'settings.file_import_export.invalid_file'\n }\n }\n\n const [major, minor] = data._pleroma_settings_version\n\n if (major > PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n return {\n messageKey: 'settings.file_export_import.errors.file_too_new',\n messageArgs: {\n fileMajor: major,\n feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n }\n }\n }\n\n if (major < PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n return {\n messageKey: 'settings.file_export_import.errors.file_too_old',\n messageArgs: {\n fileMajor: major,\n feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n }\n }\n }\n\n if (minor > PLEROMAFE_SETTINGS_MINOR_VERSION) {\n this.$store.dispatch('pushGlobalNotice', {\n level: 'warning',\n messageKey: 'settings.file_export_import.errors.file_slightly_new'\n })\n }\n\n return true\n },\n onImportFailure (result) {\n if (result.error) {\n this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_settings_imported', level: 'error' })\n } else {\n this.$store.dispatch('pushGlobalNotice', { ...result.validationResult, level: 'error' })\n }\n },\n onImport (data) {\n if (data) { this.$store.dispatch('loadSettings', data) }\n },\n restore () {\n this.dataImporter.importData()\n },\n backup () {\n this.dataExporter.exportData()\n },\n backupWithTheme () {\n this.dataThemeExporter.exportData()\n },\n generateExport (theme = false) {\n const { config } = this.$store.state\n let sample = config\n if (!theme) {\n const ignoreList = new Set([\n 'customTheme',\n 'customThemeSource',\n 'colors'\n ])\n sample = Object.fromEntries(\n Object\n .entries(sample)\n .filter(([key]) => !ignoreList.has(key))\n )\n }\n const clone = cloneDeep(sample)\n clone._pleroma_settings_version = [\n PLEROMAFE_SETTINGS_MAJOR_VERSION,\n PLEROMAFE_SETTINGS_MINOR_VERSION\n ]\n return clone\n },\n resetAdminDraft () {\n this.$store.commit('resetAdminDraft')\n },\n pushAdminDraft () {\n this.$store.dispatch('pushAdminDraft')\n }\n },\n computed: {\n currentSaveStateNotice () {\n return this.$store.state.interface.settings.currentSaveStateNotice\n },\n modalActivated () {\n return this.$store.state.interface.settingsModalState !== 'hidden'\n },\n modalMode () {\n return this.$store.state.interface.settingsModalMode\n },\n modalOpenedOnceUser () {\n return this.$store.state.interface.settingsModalLoadedUser\n },\n modalOpenedOnceAdmin () {\n return this.$store.state.interface.settingsModalLoadedAdmin\n },\n modalPeeked () {\n return this.$store.state.interface.settingsModalState === 'minimized'\n },\n expertLevel: {\n get () {\n return this.$store.state.config.expertLevel > 0\n },\n set (value) {\n this.$store.dispatch('setOption', { name: 'expertLevel', value: value ? 1 : 0 })\n }\n },\n adminDraftAny () {\n return !isEqual(\n this.$store.state.adminSettings.config,\n this.$store.state.adminSettings.draft\n )\n }\n }\n}\n\nexport default SettingsModal\n","import { render } from \"./settings_modal.vue?vue&type=template&id=e07b3cd0\"\nimport script from \"./settings_modal.js?vue&type=script&lang=js\"\nexport * from \"./settings_modal.js?vue&type=script&lang=js\"\n\nimport \"./settings_modal.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["newExporter","_ref","_ref$filename","filename","getExportedObject","exportData","stringified","utf8","JSON","stringify","e","document","createElement","setAttribute","concat","window","btoa","style","display","body","appendChild","click","removeChild","newImporter","_ref2","onImport","onImportFailure","_ref2$validator","validator","importData","filePicker","addEventListener","event","target","files","reader","FileReader","onload","_ref3","parsed","parse","result","validationResult","error","readAsText","root","byteArray","byteCount","byteIndex","stringFromCharCode","String","fromCharCode","ucs2decode","string","value","extra","output","counter","length","charCodeAt","push","checkScalarValue","codePoint","Error","toString","toUpperCase","createByte","shift","encodeCodePoint","symbol","readContinuationByte","continuationByte","decodeSymbol","byte1","version","encode","codePoints","index","byteString","decode","tmp","array","ucs2encode","exports","class","href","_createElementVNode","id","emits","methods","retry","this","$emit","_createElementBlock","_hoisted_1","_toDisplayString","_ctx","$t","onClick","_cache","$options","apply","arguments","asyncComponent","options","asyncComponentFactory","defineAsyncComponent","_objectSpread","loader","observe","shallowReactive","c","render","h","onResetAsyncComponent","library","faTimes","faWindowMinimize","faFileUpload","faFileDownload","faChevronDown","data","_this","dataImporter","importValidator","dataThemeExporter","generateExport","dataExporter","components","Modal","Popover","Checkbox","SettingsModalUserContent","getResettableAsyncComponent","loadingComponent","PanelLoading","errorComponent","AsyncComponentError","delay","SettingsModalAdminContent","closeModal","$store","dispatch","peekModal","Array","isArray","_pleroma_settings_version","messageKey","_data$_pleroma_settin","_slicedToArray","major","minor","messageArgs","fileMajor","feMajor","level","restore","backup","backupWithTheme","theme","undefined","config","state","sample","ignoreList","Set","Object","fromEntries","entries","filter","key","has","clone","_cloneDeep","resetAdminDraft","commit","pushAdminDraft","computed","currentSaveStateNotice","settings","modalActivated","settingsModalState","modalMode","settingsModalMode","modalOpenedOnceUser","settingsModalLoadedUser","modalOpenedOnceAdmin","settingsModalLoadedAdmin","modalPeeked","expertLevel","get","set","name","adminDraftAny","_isEqual","adminSettings","draft","_createBlock","_component_Modal","_normalizeClass","peek","_hoisted_2","_hoisted_3","_createVNode","_Transition","transparent","_withModifiers","title","_component_FAIcon","icon","_hoisted_6","_component_SettingsModalUserContent","_component_SettingsModalAdminContent","_hoisted_7","_component_Popover","trigger","placement","offset","y","x","_withCtx","content","close","_hoisted_9","_component_Checkbox","$event","Number","_hoisted_13","_component_i18n_t","keypath","adminFeLink","_hoisted_14","_hoisted_15","_hoisted_16","disabled","_hoisted_17","_hoisted_18"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/7962.e25d40b042f8ee7389c3.js b/priv/static/static/js/7962.e25d40b042f8ee7389c3.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[7962],{62691:(e,t,n)=>{n.r(t),n.d(t,{default:()=>_i});var l=n(66252),o=["label"],a=["label"],s=["label"],r=["label"],i=["label"],u=["label"],c=["label"],d=["label"],p=["label"],m=n(79354),f=n(3577),h=["label"],g={class:"setting-item"},b={class:"setting-item"},w={class:"setting-item"},_={class:"setting-item"},k={class:"setting-item"},v={class:"setting-item"},y={class:"setting-item"},$=(0,l._)("th",null,null,-1),C={class:"actions"},V=["href"],T={key:1},U={key:2},x={key:3},L={key:0,class:"alert error"},O=["title"],W={key:1},z={key:2},P=n(4942),D={class:"importer"},S={key:2},j={key:3},I=n(9382),B=n(84131);I.vI.add(B.IJ7,B.NBC);const A={props:{submitHandler:{type:Function,required:!0},submitButtonLabel:{type:String},successMessage:{type:String},errorMessage:{type:String}},data:function(){return{file:null,error:!1,success:!1,submitting:!1}},methods:{change:function(){this.file=this.$refs.input.files[0]},submit:function(){var e=this;this.dismiss(),this.submitting=!0,this.submitHandler(this.file).then((function(){e.success=!0})).catch((function(){e.error=!0})).finally((function(){e.submitting=!1}))},dismiss:function(){this.success=!1,this.error=!1}}};var E=n(83744);const F=(0,E.Z)(A,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("FAIcon");return(0,l.wg)(),(0,l.iD)("div",D,[(0,l._)("form",null,[(0,l._)("input",{ref:"input",type:"file",onChange:t[0]||(t[0]=function(){return e.change&&e.change.apply(e,arguments)})},null,544)]),e.submitting?((0,l.wg)(),(0,l.j4)(r,{key:0,class:"importer-uploading",spin:"",icon:"circle-notch"})):((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.submit&&e.submit.apply(e,arguments)})},(0,f.zw)(e.submitButtonLabel||e.$t("importer.submit")),1)),e.success?((0,l.wg)(),(0,l.iD)("div",S,[(0,l._)("button",{class:"button-unstyled",onClick:t[2]||(t[2]=function(){return e.dismiss&&e.dismiss.apply(e,arguments)})},[(0,l.Wm)(r,{icon:"times"})]),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l._)("span",null,(0,f.zw)(e.successMessage||e.$t("importer.success")),1)])):e.error?((0,l.wg)(),(0,l.iD)("div",j,[(0,l._)("button",{class:"button-unstyled",onClick:t[3]||(t[3]=function(){return e.dismiss&&e.dismiss.apply(e,arguments)})},[(0,l.Wm)(r,{icon:"times"})]),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l._)("span",null,(0,f.zw)(e.errorMessage||e.$t("importer.error")),1)])):(0,l.kq)("",!0)])}]]);var q={class:"exporter"},Z={key:0};I.vI.add(B.IJ7);const M={props:{getContent:{type:Function,required:!0},filename:{type:String,default:"export.csv"},exportButtonLabel:{type:String},processingMessage:{type:String}},data:function(){return{processing:!1}},methods:{process:function(){var e=this;this.processing=!0,this.getContent().then((function(t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),n.setAttribute("download",e.filename),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),setTimeout((function(){e.processing=!1}),2e3)}))}}},R=(0,E.Z)(M,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("FAIcon");return(0,l.wg)(),(0,l.iD)("div",q,[e.processing?((0,l.wg)(),(0,l.iD)("div",Z,[(0,l.Wm)(r,{icon:"circle-notch",size:"lg",spin:""}),(0,l._)("span",null,(0,f.zw)(e.processingMessage||e.$t("exporter.processing")),1)])):((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",onClick:t[0]||(t[0]=function(){return e.process&&e.process.apply(e,arguments)})},(0,f.zw)(e.exportButtonLabel||e.$t("exporter.export")),1))])}]]);var N=n(66141),H=n(989);function Y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}const K={data:function(){return{activeTab:"profile",newDomainToMute:"",listBackupsError:!1,addBackupError:!1,addedBackup:!1,backups:[]}},created:function(){this.$store.dispatch("fetchTokens"),this.fetchBackups()},components:{Importer:F,Exporter:R,Checkbox:N.Z},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Y(Object(n),!0).forEach((function(t){(0,P.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Y(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},(0,H.rn)({backendInteractor:function(e){return e.api.backendInteractor},user:function(e){return e.users.currentUser}})),methods:{getFollowsContent:function(){return this.backendInteractor.exportFriends({id:this.user.id}).then(this.generateExportableUsersContent)},getBlocksContent:function(){return this.backendInteractor.fetchBlocks().then(this.generateExportableUsersContent)},getMutesContent:function(){return this.backendInteractor.fetchMutes().then(this.generateExportableUsersContent)},importFollows:function(e){return this.backendInteractor.importFollows({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importBlocks:function(e){return this.backendInteractor.importBlocks({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importMutes:function(e){return this.backendInteractor.importMutes({file:e}).then((function(e){if(!e)throw new Error("failed")}))},generateExportableUsersContent:function(e){return e.map((function(e){return e&&e.is_local?e.screen_name+"@"+location.hostname:e.screen_name})).join("\n")},addBackup:function(){var e=this;this.$store.state.api.backendInteractor.addBackup().then((function(t){e.addedBackup=!0,e.addBackupError=!1})).catch((function(t){e.addedBackup=!1,e.addBackupError=t})).then((function(){return e.fetchBackups()}))},fetchBackups:function(){var e=this;this.$store.state.api.backendInteractor.listBackups().then((function(t){e.backups=t,e.listBackupsError=!1})).catch((function(t){e.listBackupsError=t.error}))}}},G=(0,E.Z)(K,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("Importer"),i=(0,l.up)("Exporter"),u=(0,l.up)("FAIcon");return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.data_import_export_tab")},[(0,l._)("div",g,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.follow_import")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.import_followers_from_a_csv_file")),1),(0,l.Wm)(r,{"submit-handler":e.importFollows,"success-message":e.$t("settings.follows_imported"),"error-message":e.$t("settings.follow_import_error")},null,8,["submit-handler","success-message","error-message"])]),(0,l._)("div",b,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.follow_export")),1),(0,l.Wm)(i,{"get-content":e.getFollowsContent,filename:"friends.csv","export-button-label":e.$t("settings.follow_export_button")},null,8,["get-content","export-button-label"])]),(0,l._)("div",w,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.block_import")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.import_blocks_from_a_csv_file")),1),(0,l.Wm)(r,{"submit-handler":e.importBlocks,"success-message":e.$t("settings.blocks_imported"),"error-message":e.$t("settings.block_import_error")},null,8,["submit-handler","success-message","error-message"])]),(0,l._)("div",_,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.block_export")),1),(0,l.Wm)(i,{"get-content":e.getBlocksContent,filename:"blocks.csv","export-button-label":e.$t("settings.block_export_button")},null,8,["get-content","export-button-label"])]),(0,l._)("div",k,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.mute_import")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.import_mutes_from_a_csv_file")),1),(0,l.Wm)(r,{"submit-handler":e.importMutes,"success-message":e.$t("settings.mutes_imported"),"error-message":e.$t("settings.mute_import_error")},null,8,["submit-handler","success-message","error-message"])]),(0,l._)("div",v,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.mute_export")),1),(0,l.Wm)(i,{"get-content":e.getMutesContent,filename:"mutes.csv","export-button-label":e.$t("settings.mute_export_button")},null,8,["get-content","export-button-label"])]),(0,l._)("div",y,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.account_backup")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.account_backup_description")),1),(0,l._)("table",null,[(0,l._)("thead",null,[(0,l._)("tr",null,[(0,l._)("th",null,(0,f.zw)(e.$t("settings.account_backup_table_head")),1),$])]),(0,l._)("tbody",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.backups,(function(t){return(0,l.wg)(),(0,l.iD)("tr",{key:t.id},[(0,l._)("td",null,(0,f.zw)(t.inserted_at),1),(0,l._)("td",C,[t.processed?((0,l.wg)(),(0,l.iD)("a",{key:0,target:"_blank",href:t.url},(0,f.zw)(e.$t("settings.download_backup")),9,V)):"running"===t.state?((0,l.wg)(),(0,l.iD)("span",T,(0,f.zw)(e.$tc("settings.backup_running",t.processed_number,{number:t.processed_number})),1)):"failed"===t.state?((0,l.wg)(),(0,l.iD)("span",U,(0,f.zw)(e.$t("settings.backup_failed")),1)):((0,l.wg)(),(0,l.iD)("span",x,(0,f.zw)(e.$t("settings.backup_not_ready")),1))])])})),128))])]),e.listBackupsError?((0,l.wg)(),(0,l.iD)("div",L,[(0,l.Uk)((0,f.zw)(e.$t("settings.list_backups_error",{error:e.error}))+" ",1),(0,l._)("button",{title:e.$t("settings.hide_list_backups_error_action"),onClick:t[0]||(t[0]=function(t){return e.listBackupsError=!1})},[(0,l.Wm)(u,{class:"fa-scale-110 fa-old-padding",icon:"times"})],8,O)])):(0,l.kq)("",!0),(0,l._)("button",{class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.addBackup&&e.addBackup.apply(e,arguments)})},(0,f.zw)(e.$t("settings.add_backup")),1),e.addedBackup?((0,l.wg)(),(0,l.iD)("p",W,(0,f.zw)(e.$t("settings.added_backup")),1)):(0,l.kq)("",!0),!1!==e.addBackupError?((0,l.wg)(),(0,l.iD)("p",z,(0,f.zw)(e.$t("settings.add_backup_error",{error:e.addBackupError})),1)):(0,l.kq)("",!0)])],8,h)}]]);var J=["label"],Q={class:"usersearch-wrapper"},X={class:"bulk-actions"},ee=["label"],te=["label"],ne={class:"usersearch-wrapper"},le={class:"bulk-actions"},oe=["label"],ae={class:"domain-mute-form"},se={class:"bulk-actions"},re=n(27361),ie=n.n(re),ue=n(35161),ce=n.n(ue),de=n(43063),pe=n.n(de),me=n(49963),fe={class:"autosuggest"},he=["placeholder"],ge={key:0,class:"autosuggest-results"};const be={props:{query:{type:Function,required:!0},filter:{type:Function},placeholder:{type:String,default:"Search..."}},data:function(){return{term:"",timeout:null,results:[],resultsVisible:!1}},computed:{filtered:function(){return this.filter?this.filter(this.results):this.results}},watch:{term:function(e){this.fetchResults(e)}},methods:{fetchResults:function(e){var t=this;clearTimeout(this.timeout),this.timeout=setTimeout((function(){t.results=[],e&&t.query(e).then((function(e){t.results=e}))}),500)},onInputClick:function(){this.resultsVisible=!0},onClickOutside:function(){this.resultsVisible=!1}}},we=(0,E.Z)(be,[["render",function(e,t,n,o,a,s){var r=(0,l.Q2)("click-outside");return(0,l.wy)(((0,l.wg)(),(0,l.iD)("div",fe,[(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.term=t}),placeholder:e.placeholder,class:"autosuggest-input",onClick:t[1]||(t[1]=function(){return e.onInputClick&&e.onInputClick.apply(e,arguments)})},null,8,he),[[me.nr,e.term]]),e.resultsVisible&&e.filtered.length>0?((0,l.wg)(),(0,l.iD)("div",ge,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.filtered,(function(t){return(0,l.WI)(e.$slots,"default",{item:t})})),256))])):(0,l.kq)("",!0)])),[[r,e.onClickOutside]])}]]);var _e={class:"block-card-content-container"},ke=["disabled"],ve=["disabled"],ye=n(29076);const $e={props:["userId"],data:function(){return{progress:!1}},computed:{user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},blocked:function(){return this.relationship.blocking}},components:{BasicUserCard:ye.Z},methods:{unblockUser:function(){var e=this;this.progress=!0,this.$store.dispatch("unblockUser",this.user.id).then((function(){e.progress=!1}))},blockUser:function(){var e=this;this.progress=!0,this.$store.dispatch("blockUser",this.user.id).then((function(){e.progress=!1}))}}},Ce=(0,E.Z)($e,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("basic-user-card");return(0,l.wg)(),(0,l.j4)(r,{user:e.user},{default:(0,l.w5)((function(){return[(0,l._)("div",_e,[e.blocked?((0,l.wg)(),(0,l.iD)("button",{key:0,class:"btn button-default",disabled:e.progress,onClick:t[0]||(t[0]=function(){return e.unblockUser&&e.unblockUser.apply(e,arguments)})},[e.progress?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Uk)((0,f.zw)(e.$t("user_card.unblock_progress")),1)],64)):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Uk)((0,f.zw)(e.$t("user_card.unblock")),1)],64))],8,ke)):((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",disabled:e.progress,onClick:t[1]||(t[1]=function(){return e.blockUser&&e.blockUser.apply(e,arguments)})},[e.progress?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Uk)((0,f.zw)(e.$t("user_card.block_progress")),1)],64)):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Uk)((0,f.zw)(e.$t("user_card.block")),1)],64))],8,ve))])]})),_:1},8,["user"])}]]);var Ve={class:"mute-card-content-container"},Te=["disabled"],Ue=["disabled"];const xe={props:["userId"],data:function(){return{progress:!1}},computed:{user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},muted:function(){return this.relationship.muting}},components:{BasicUserCard:ye.Z},methods:{unmuteUser:function(){var e=this;this.progress=!0,this.$store.dispatch("unmuteUser",this.userId).then((function(){e.progress=!1}))},muteUser:function(){var e=this;this.progress=!0,this.$store.dispatch("muteUser",this.userId).then((function(){e.progress=!1}))}}},Le=(0,E.Z)(xe,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("basic-user-card");return(0,l.wg)(),(0,l.j4)(r,{user:e.user},{default:(0,l.w5)((function(){return[(0,l._)("div",Ve,[e.muted?((0,l.wg)(),(0,l.iD)("button",{key:0,class:"btn button-default",disabled:e.progress,onClick:t[0]||(t[0]=function(){return e.unmuteUser&&e.unmuteUser.apply(e,arguments)})},[e.progress?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Uk)((0,f.zw)(e.$t("user_card.unmute_progress")),1)],64)):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Uk)((0,f.zw)(e.$t("user_card.unmute")),1)],64))],8,Te)):((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",disabled:e.progress,onClick:t[1]||(t[1]=function(){return e.muteUser&&e.muteUser.apply(e,arguments)})},[e.progress?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Uk)((0,f.zw)(e.$t("user_card.mute_progress")),1)],64)):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Uk)((0,f.zw)(e.$t("user_card.mute")),1)],64))],8,Ue))])]})),_:1},8,["user"])}]]);var Oe={class:"domain-mute-card"},We={class:"domain-mute-card-domain"},ze=n(99507);const Pe={props:["domain"],components:{ProgressButton:ze.Z},computed:{user:function(){return this.$store.state.users.currentUser},muted:function(){return this.user.domainMutes.includes(this.domain)}},methods:{unmuteDomain:function(){return this.$store.dispatch("unmuteDomain",this.domain)},muteDomain:function(){return this.$store.dispatch("muteDomain",this.domain)}}},De=(0,E.Z)(Pe,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("ProgressButton");return(0,l.wg)(),(0,l.iD)("div",Oe,[(0,l._)("div",We,(0,f.zw)(e.domain),1),e.muted?((0,l.wg)(),(0,l.j4)(r,{key:0,click:e.unmuteDomain,class:"btn button-default"},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.unmute_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.unmute"))+" ",1)]})),_:1},8,["click"])):((0,l.wg)(),(0,l.j4)(r,{key:1,click:e.muteDomain,class:"btn button-default"},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.mute_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.mute"))+" ",1)]})),_:1},8,["click"]))])}]]);var Se={class:"selectable-list"},je={key:0,class:"selectable-list-header"},Ie={class:"selectable-list-checkbox-wrapper"},Be={class:"selectable-list-header-actions"},Ae={class:"selectable-list-checkbox-wrapper"};const Ee={components:{List:n(88369).Z,Checkbox:N.Z},props:{items:{type:Array,default:function(){return[]}},getKey:{type:Function,default:function(e){return e.id}}},data:function(){return{selected:[]}},computed:{allKeys:function(){return this.items.map(this.getKey)},filteredSelected:function(){var e=this;return this.allKeys.filter((function(t){return-1!==e.selected.indexOf(t)}))},allSelected:function(){return this.filteredSelected.length===this.items.length},noneSelected:function(){return 0===this.filteredSelected.length},someSelected:function(){return!this.allSelected&&!this.noneSelected}},methods:{isSelected:function(e){return-1!==this.filteredSelected.indexOf(this.getKey(e))},toggle:function(e,t){var n=this.getKey(t);e!==this.isSelected(n)&&(e?this.selected.push(n):this.selected.splice(this.selected.indexOf(n),1))},toggleAll:function(e){this.selected=e?this.allKeys.slice(0):[]}}},Fe=(0,E.Z)(Ee,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("Checkbox"),i=(0,l.up)("List");return(0,l.wg)(),(0,l.iD)("div",Se,[e.items.length>0?((0,l.wg)(),(0,l.iD)("div",je,[(0,l._)("div",Ie,[(0,l.Wm)(r,{"model-value":e.allSelected,indeterminate:e.someSelected,"onUpdate:modelValue":e.toggleAll},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("selectable_list.select_all")),1)]})),_:1},8,["model-value","indeterminate","onUpdate:modelValue"])]),(0,l._)("div",Be,[(0,l.WI)(e.$slots,"header",{selected:e.filteredSelected})])])):(0,l.kq)("",!0),(0,l.Wm)(i,{items:e.items,"get-key":e.getKey},{item:(0,l.w5)((function(t){var n=t.item;return[(0,l._)("div",{class:(0,f.C_)(["selectable-list-item-inner",{"selectable-list-item-selected-inner":e.isSelected(n)}])},[(0,l._)("div",Ae,[(0,l.Wm)(r,{"model-value":e.isSelected(n),"onUpdate:modelValue":function(t){return e.toggle(t,n)}},null,8,["model-value","onUpdate:modelValue"])]),(0,l.WI)(e.$slots,"item",{item:n})],2)]})),empty:(0,l.w5)((function(){return[(0,l.WI)(e.$slots,"empty")]})),_:3},8,["items","get-key"])])}]]);var qe=n(93433),Ze=n(41609),Me=n.n(Ze),Re=n(13562),Ne=n(57810);function He(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function Ye(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?He(Object(n),!0).forEach((function(t){(0,P.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):He(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}I.vI.add(B.IJ7);var Ke,Ge,Je,Qe,Xe,et,tt,nt=n(98027),lt=(0,nt.Z)({fetch:function(e,t){return t.dispatch("fetchBlocks")},select:function(e,t){return ie()(t.state.users.currentUser,"blockIds",[])},destroy:function(){},childPropName:"items"})(Fe),ot=(0,nt.Z)({fetch:function(e,t){return t.dispatch("fetchMutes")},select:function(e,t){return ie()(t.state.users.currentUser,"muteIds",[])},destroy:function(){},childPropName:"items"})(Fe),at=(Ge=(Ke={fetch:function(e,t){return t.dispatch("fetchDomainMutes")},select:function(e,t){return ie()(t.state.users.currentUser,"domainMutes",[])},childPropName:"items"}).fetch,Je=Ke.select,Qe=Ke.childPropName,Xe=void 0===Qe?"content":Qe,et=Ke.additionalPropNames,tt=void 0===et?[]:et,function(e){var t=Object.keys((0,Re.g)(e)).filter((function(e){return e!==Xe})).concat(tt);return{props:[].concat((0,qe.Z)(t),["refresh"]),data:function(){return{loading:!1,error:!1}},computed:{fetchedData:function(){return Je(this.$props,this.$store)}},created:function(){(this.refresh||Me()(this.fetchedData))&&this.fetchData()},methods:{fetchData:function(){var e=this;this.loading||(this.loading=!0,this.error=!1,Ge(this.$props,this.$store).then((function(){e.loading=!1})).catch((function(){e.error=!0,e.loading=!1})))}},render:function(){if(this.error||this.loading)return(0,l.Wm)("div",{class:"with-subscription-loading"},[this.error?(0,l.Wm)("a",{onClick:this.fetchData,class:"alert error"},[this.$t("general.generic_error")]):(0,l.Wm)(Ne.GN,{spin:!0,icon:"circle-notch"},null)]);var t,n=Ye(Ye({},this.$props),{},(0,P.Z)({},Xe,this.fetchedData)),o=this.$slots;return(0,l.Wm)("div",{class:"with-subscription"},[(0,l.Wm)(e,n,(t=o,"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!(0,l.lA)(t)?o:{default:function(){return[o]}}))])}}})(Fe);const st={data:function(){return{activeTab:"profile"}},created:function(){this.$store.dispatch("fetchTokens"),this.$store.dispatch("getKnownDomains")},components:{TabSwitcher:m.Z,BlockList:lt,MuteList:ot,DomainMuteList:at,BlockCard:Ce,MuteCard:Le,DomainMuteCard:De,ProgressButton:ze.Z,Autosuggest:we,Checkbox:N.Z},computed:{knownDomains:function(){return this.$store.state.instance.knownDomains},user:function(){return this.$store.state.users.currentUser}},methods:{importFollows:function(e){return this.$store.state.api.backendInteractor.importFollows({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importBlocks:function(e){return this.$store.state.api.backendInteractor.importBlocks({file:e}).then((function(e){if(!e)throw new Error("failed")}))},generateExportableUsersContent:function(e){return e.map((function(e){return e&&e.is_local?e.screen_name+"@"+location.hostname:e.screen_name})).join("\n")},activateTab:function(e){this.activeTab=e},filterUnblockedUsers:function(e){var t=this;return pe()(e,(function(e){return t.$store.getters.relationship(t.userId).blocking||e===t.user.id}))},filterUnMutedUsers:function(e){var t=this;return pe()(e,(function(e){return t.$store.getters.relationship(t.userId).muting||e===t.user.id}))},queryUserIds:function(e){return this.$store.dispatch("searchUsers",{query:e}).then((function(e){return ce()(e,"id")}))},blockUsers:function(e){return this.$store.dispatch("blockUsers",e)},unblockUsers:function(e){return this.$store.dispatch("unblockUsers",e)},muteUsers:function(e){return this.$store.dispatch("muteUsers",e)},unmuteUsers:function(e){return this.$store.dispatch("unmuteUsers",e)},filterUnMutedDomains:function(e){var t=this;return e.filter((function(e){return!t.user.domainMutes.includes(e)}))},queryKnownDomains:function(e){var t=this;return new Promise((function(n,l){n(t.knownDomains.filter((function(t){return t.toLowerCase().includes(e)})))}))},unmuteDomains:function(e){return this.$store.dispatch("unmuteDomains",e)}}},rt=(0,E.Z)(st,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("BlockCard"),i=(0,l.up)("Autosuggest"),u=(0,l.up)("ProgressButton"),c=(0,l.up)("BlockList"),d=(0,l.up)("MuteCard"),p=(0,l.up)("MuteList"),m=(0,l.up)("DomainMuteCard"),h=(0,l.up)("DomainMuteList"),g=(0,l.up)("tab-switcher");return(0,l.wg)(),(0,l.j4)(g,{"scrollable-tabs":!0,class:"mutes-and-blocks-tab"},{default:(0,l.w5)((function(){return[(0,l._)("div",{label:e.$t("settings.blocks_tab")},[(0,l._)("div",Q,[(0,l.Wm)(i,{filter:e.filterUnblockedUsers,query:e.queryUserIds,placeholder:e.$t("settings.search_user_to_block")},{default:(0,l.w5)((function(e){return[(0,l.Wm)(r,{"user-id":e.item},null,8,["user-id"])]})),_:1},8,["filter","query","placeholder"])]),(0,l.Wm)(c,{refresh:!0,"get-key":function(e){return e}},{header:(0,l.w5)((function(t){var n=t.selected;return[(0,l._)("div",X,[n.length>0?((0,l.wg)(),(0,l.j4)(u,{key:0,class:"btn button-default bulk-action-button",click:function(){return e.blockUsers(n)}},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.block_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.block"))+" ",1)]})),_:2},1032,["click"])):(0,l.kq)("",!0),n.length>0?((0,l.wg)(),(0,l.j4)(u,{key:1,class:"btn button-default",click:function(){return e.unblockUsers(n)}},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.unblock_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.unblock"))+" ",1)]})),_:2},1032,["click"])):(0,l.kq)("",!0)])]})),item:(0,l.w5)((function(e){var t=e.item;return[(0,l.Wm)(r,{"user-id":t},null,8,["user-id"])]})),empty:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.no_blocks")),1)]})),_:1},8,["get-key"])],8,J),(0,l._)("div",{label:e.$t("settings.mutes_tab")},[(0,l.Wm)(g,null,{default:(0,l.w5)((function(){return[(0,l._)("div",{label:e.$t("settings.user_mutes")},[(0,l._)("div",ne,[(0,l.Wm)(i,{filter:e.filterUnMutedUsers,query:e.queryUserIds,placeholder:e.$t("settings.search_user_to_mute")},{default:(0,l.w5)((function(e){return[(0,l.Wm)(d,{"user-id":e.item},null,8,["user-id"])]})),_:1},8,["filter","query","placeholder"])]),(0,l.Wm)(p,{refresh:!0,"get-key":function(e){return e}},{header:(0,l.w5)((function(t){var n=t.selected;return[(0,l._)("div",le,[n.length>0?((0,l.wg)(),(0,l.j4)(u,{key:0,class:"btn button-default",click:function(){return e.muteUsers(n)}},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.mute_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.mute"))+" ",1)]})),_:2},1032,["click"])):(0,l.kq)("",!0),n.length>0?((0,l.wg)(),(0,l.j4)(u,{key:1,class:"btn button-default",click:function(){return e.unmuteUsers(n)}},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.unmute_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.unmute"))+" ",1)]})),_:2},1032,["click"])):(0,l.kq)("",!0)])]})),item:(0,l.w5)((function(e){var t=e.item;return[(0,l.Wm)(d,{"user-id":t},null,8,["user-id"])]})),empty:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.no_mutes")),1)]})),_:1},8,["get-key"])],8,te),(0,l._)("div",{label:e.$t("settings.domain_mutes")},[(0,l._)("div",ae,[(0,l.Wm)(i,{filter:e.filterUnMutedDomains,query:e.queryKnownDomains,placeholder:e.$t("settings.type_domains_to_mute")},{default:(0,l.w5)((function(e){return[(0,l.Wm)(m,{domain:e.item},null,8,["domain"])]})),_:1},8,["filter","query","placeholder"])]),(0,l.Wm)(h,{refresh:!0,"get-key":function(e){return e}},{header:(0,l.w5)((function(t){var n=t.selected;return[(0,l._)("div",se,[n.length>0?((0,l.wg)(),(0,l.j4)(u,{key:0,class:"btn button-default",click:function(){return e.unmuteDomains(n)}},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.unmute_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.unmute"))+" ",1)]})),_:2},1032,["click"])):(0,l.kq)("",!0)])]})),item:(0,l.w5)((function(e){var t=e.item;return[(0,l.Wm)(m,{domain:t},null,8,["domain"])]})),empty:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.no_mutes")),1)]})),_:1},8,["get-key"])],8,oe)]})),_:1})],8,ee)]})),_:1})}]]);var it=["label"],ut={class:"setting-item"},ct={class:"setting-list"},dt={class:"select-multiple"},pt={class:"label"},mt={class:"option-list"},ft={key:0,class:"setting-item"},ht={class:"setting-list"},gt={class:"setting-item"},bt=n(59236),wt=n(76875);function _t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}const kt={data:function(){return{activeTab:"profile",notificationSettings:this.$store.state.users.currentUser.notification_settings,newDomainToMute:""}},components:{BooleanSetting:bt.Z},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?_t(Object(n),!0).forEach((function(t){(0,P.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_t(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({user:function(){return this.$store.state.users.currentUser}},(0,wt.Z)()),methods:{updateNotificationSettings:function(){this.$store.state.api.backendInteractor.updateNotificationSettings({settings:this.notificationSettings})}}},vt=(0,E.Z)(kt,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("BooleanSetting");return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.notifications")},[(0,l._)("div",ut,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.notification_setting_filters")),1),(0,l._)("ul",ct,[(0,l._)("li",null,[(0,l.Wm)(r,{source:"profile",path:"blockNotificationsFromStrangers"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_setting_block_from_strangers")),1)]})),_:1})]),(0,l._)("li",dt,[(0,l._)("span",pt,(0,f.zw)(e.$t("settings.notification_visibility")),1),(0,l._)("ul",mt,[(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.likes"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_likes")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.repeats"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_repeats")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.follows"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_follows")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.mentions"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_mentions")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.moves"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_moves")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.emojiReactions"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_emoji_reactions")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.polls"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_polls")),1)]})),_:1})])])])])]),e.expertLevel>0?((0,l.wg)(),(0,l.iD)("div",ft,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.notification_setting_privacy")),1),(0,l._)("ul",ht,[(0,l._)("li",null,[(0,l.Wm)(r,{path:"webPushNotifications",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.enable_web_push_notifications")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{source:"profile",path:"webPushHideContents",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_setting_hide_notification_contents")),1)]})),_:1})])])])):(0,l.kq)("",!0),(0,l._)("div",gt,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.notification_mutes")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.notification_blocks")),1)])],8,it)}]]);var yt=["label"],$t={class:"setting-item"},Ct={class:"setting-list"},Vt={class:"setting-list suboptions"},Tt={key:0,class:"setting-item"},Ut={class:"setting-list"},xt=n(23279),Lt=n.n(xt),Ot=n(92742),Wt=n.n(Ot),zt=n(63105),Pt=n.n(zt),Dt=n(77218),St=n(87449);function jt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function It(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?jt(Object(n),!0).forEach((function(t){(0,P.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):jt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const Bt={data:function(){var e=this;return{muteWordsStringLocal:this.$store.getters.mergedConfig.muteWords.join("\n"),replyVisibilityOptions:["all","following","self"].map((function(t){return{key:t,value:t,label:e.$t("settings.reply_visibility_".concat(t))}}))}},components:{BooleanSetting:bt.Z,ChoiceSetting:Dt.Z,IntegerSetting:St.Z},computed:It(It({},(0,wt.Z)()),{},{muteWordsString:{get:function(){return this.muteWordsStringLocal},set:function(e){this.muteWordsStringLocal=e,this.debouncedSetMuteWords(e)}},debouncedSetMuteWords:function(){var e=this;return Lt()((function(t){e.$store.dispatch("setOption",{name:"muteWords",value:Pt()(t.split("\n"),(function(e){return Wt()(e).length>0}))})}),1e3)}}),watch:{replyVisibility:function(){this.$store.dispatch("queueFlushAll")}}},At=(0,E.Z)(Bt,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("BooleanSetting"),i=(0,l.up)("ChoiceSetting"),u=(0,l.up)("IntegerSetting");return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.filtering")},[(0,l._)("div",$t,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.posts")),1),(0,l._)("ul",Ct,[(0,l._)("li",null,[(0,l.Wm)(r,{path:"hideFilteredStatuses"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_filtered_statuses")),1)]})),_:1}),(0,l._)("ul",Vt,[(0,l._)("li",null,[(0,l.Wm)(r,{"parent-path":"hideFilteredStatuses","parent-invert":!0,path:"hideWordFilteredPosts"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_wordfiltered_statuses")),1)]})),_:1})]),(0,l._)("li",null,[e.user?((0,l.wg)(),(0,l.j4)(r,{key:0,"parent-path":"hideFilteredStatuses","parent-invert":!0,path:"hideMutedThreads"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_muted_threads")),1)]})),_:1})):(0,l.kq)("",!0)]),(0,l._)("li",null,[e.user?((0,l.wg)(),(0,l.j4)(r,{key:0,"parent-path":"hideFilteredStatuses","parent-invert":!0,path:"hideMutedPosts"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_muted_posts")),1)]})),_:1})):(0,l.kq)("",!0)])])]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"muteBotStatuses"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mute_bot_posts")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"hidePostStats"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_post_stats")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"hideBotIndication"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_bot_indication")),1)]})),_:1})]),e.user?((0,l.wg)(),(0,l.j4)(i,{key:0,id:"replyVisibility",path:"replyVisibility",options:e.replyVisibilityOptions},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.replies_in_timeline")),1)]})),_:1},8,["options"])):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l._)("h3",null,(0,f.zw)(e.$t("settings.wordfilter")),1),(0,l.wy)((0,l._)("textarea",{id:"muteWords","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.muteWordsString=t}),class:"resize-height"},null,512),[[me.nr,e.muteWordsString]]),(0,l._)("div",null,(0,f.zw)(e.$t("settings.filtering_explanation")),1)]),(0,l._)("h3",null,(0,f.zw)(e.$t("settings.attachments")),1),(0,l._)("li",null,[(0,l.Wm)(u,{path:"maxThumbnails",expert:"1",min:0},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.max_thumbnails")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"hideAttachments"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_attachments_in_tl")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"hideAttachmentsInConv"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_attachments_in_convo")),1)]})),_:1})])])]),e.expertLevel>0?((0,l.wg)(),(0,l.iD)("div",Tt,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.user_profiles")),1),(0,l._)("ul",Ut,[(0,l._)("li",null,[(0,l.Wm)(r,{path:"hideUserStats"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_user_stats")),1)]})),_:1})])])])):(0,l.kq)("",!0)],8,yt)}]]);var Et=["label"],Ft={class:"setting-item"},qt={key:0},Zt={class:"setting-item"},Mt={key:0},Rt={key:1},Nt={key:2},Ht={class:"setting-item"},Yt={class:"oauth-tokens"},Kt=(0,l._)("th",null,null,-1),Gt={class:"actions"},Jt=["onClick"],Qt={class:"setting-item"},Xt=(0,l._)("th",null,null,-1),en={class:"actions"},tn=["onClick"],nn={key:0,class:"alert error"},ln=(0,l._)("code",{place:"example"}," foo@example.org ",-1),on={key:1},an={key:2},sn={class:"setting-item"},rn=(0,l._)("code",null," foo@example.org ",-1),un={key:0},cn={key:1},dn={class:"setting-item"},pn={key:0},mn={key:1},fn={key:2},hn={key:3},gn={key:0,class:"setting-item mfa-settings"},bn={class:"mfa-heading"},wn={key:0,class:"setting-item"},_n=(0,l._)("br",null,null,-1),kn={key:0},vn={key:2},yn={class:"warning"},$n={key:1},Cn={key:0},Vn={key:1},Tn={class:"setup-otp"},Un={class:"qr-code"},xn={class:"verify"},Ln={class:"confirm-otp-actions"},On={key:0,class:"alert error"},Wn=n(15861),zn=n(64687),Pn=n.n(zn),Dn={class:"mfa-backup-codes"},Sn={key:0},jn={key:1},In={class:"alert warning"},Bn={class:"backup-codes"};const An={props:{backupCodes:{type:Object,default:function(){return{inProgress:!1,codes:[]}}}},data:function(){return{}},computed:{inProgress:function(){return this.backupCodes.inProgress},ready:function(){return this.backupCodes.codes.length>0},displayTitle:function(){return this.inProgress||this.ready}}},En=(0,E.Z)(An,[["render",function(e,t,n,o,a,s){return(0,l.wg)(),(0,l.iD)("div",Dn,[e.displayTitle?((0,l.wg)(),(0,l.iD)("h4",Sn,(0,f.zw)(e.$t("settings.mfa.recovery_codes")),1)):(0,l.kq)("",!0),e.inProgress?((0,l.wg)(),(0,l.iD)("i",jn,(0,f.zw)(e.$t("settings.mfa.waiting_a_recovery_codes")),1)):(0,l.kq)("",!0),e.ready?((0,l.wg)(),(0,l.iD)(l.HY,{key:2},[(0,l._)("p",In,(0,f.zw)(e.$t("settings.mfa.recovery_codes_warning")),1),(0,l._)("ul",Bn,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.backupCodes.codes,(function(e){return(0,l.wg)(),(0,l.iD)("li",{key:e},(0,f.zw)(e),1)})),128))])],64)):(0,l.kq)("",!0)])}]]);var Fn={class:"method-item"},qn=["disabled"],Zn={key:1,class:"alert error"},Mn=["disabled"],Rn=["disabled"];const Nn={props:["disabled"],data:function(){return{}},methods:{confirm:function(){this.$emit("confirm")},cancel:function(){this.$emit("cancel")}}},Hn=(0,E.Z)(Nn,[["render",function(e,t,n,o,a,s){return(0,l.wg)(),(0,l.iD)("div",null,[(0,l.WI)(e.$slots,"default"),(0,l._)("button",{class:"btn button-default",disabled:e.disabled,onClick:t[0]||(t[0]=function(){return e.confirm&&e.confirm.apply(e,arguments)})},(0,f.zw)(e.$t("general.confirm")),9,Mn),(0,l._)("button",{class:"btn button-default",disabled:e.disabled,onClick:t[1]||(t[1]=function(){return e.cancel&&e.cancel.apply(e,arguments)})},(0,f.zw)(e.$t("general.cancel")),9,Rn)])}]]);function Yn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}const Kn={props:["settings"],data:function(){return{error:!1,currentPassword:"",deactivate:!1,inProgress:!1}},components:{confirm:Hn},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yn(Object(n),!0).forEach((function(t){(0,P.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({isActivated:function(){return this.settings.totp}},(0,H.rn)({backendInteractor:function(e){return e.api.backendInteractor}})),methods:{doActivate:function(){this.$emit("activate")},cancelDeactivate:function(){this.deactivate=!1},doDeactivate:function(){this.error=null,this.deactivate=!0},confirmDeactivate:function(){var e=this;this.error=null,this.inProgress=!0,this.backendInteractor.mfaDisableOTP({password:this.currentPassword}).then((function(t){e.inProgress=!1,t.error?e.error=t.error:(e.deactivate=!1,e.$emit("deactivate"))}))}}};function Gn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}const Jn={data:function(){return{settings:{available:!1,enabled:!1,totp:!1},setupState:{state:"",setupOTPState:""},backupCodes:{getNewCodes:!1,inProgress:!1,codes:[]},otpSettings:{provisioning_uri:"",key:""},currentPassword:null,otpConfirmToken:null,error:null,readyInit:!1}},components:{"recovery-codes":En,"totp-item":(0,E.Z)(Kn,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("confirm");return(0,l.wg)(),(0,l.iD)("div",null,[(0,l._)("div",Fn,[(0,l._)("strong",null,(0,f.zw)(e.$t("settings.mfa.otp")),1),e.isActivated?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"btn button-default",onClick:t[0]||(t[0]=function(){return e.doActivate&&e.doActivate.apply(e,arguments)})},(0,f.zw)(e.$t("general.enable")),1)),e.isActivated?((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",disabled:e.deactivate,onClick:t[1]||(t[1]=function(){return e.doDeactivate&&e.doDeactivate.apply(e,arguments)})},(0,f.zw)(e.$t("general.disable")),9,qn)):(0,l.kq)("",!0)]),e.deactivate?((0,l.wg)(),(0,l.j4)(r,{key:0,disabled:e.inProgress,onConfirm:e.confirmDeactivate,onCancel:e.cancelDeactivate},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.enter_current_password_to_confirm"))+": ",1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.currentPassword=t}),type:"password"},null,512),[[me.nr,e.currentPassword]])]})),_:1},8,["disabled","onConfirm","onCancel"])):(0,l.kq)("",!0),e.error?((0,l.wg)(),(0,l.iD)("div",Zn,(0,f.zw)(e.error),1)):(0,l.kq)("",!0)])}]]),qrcode:n(99990).Z,confirm:Hn},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Gn(Object(n),!0).forEach((function(t){(0,P.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Gn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({canSetupOTP:function(){return(this.setupInProgress&&this.backupCodesPrepared||this.settings.enabled)&&!this.settings.totp&&!this.setupOTPInProgress},setupInProgress:function(){return""!==this.setupState.state&&"complete"!==this.setupState.state},setupOTPInProgress:function(){return"setupOTP"===this.setupState.state&&!this.completedOTP},prepareOTP:function(){return"prepare"===this.setupState.setupOTPState},confirmOTP:function(){return"confirm"===this.setupState.setupOTPState},completedOTP:function(){return"completed"===this.setupState.setupOTPState},backupCodesPrepared:function(){return!this.backupCodes.inProgress&&this.backupCodes.codes.length>0},confirmNewBackupCodes:function(){return this.backupCodes.getNewCodes}},(0,H.rn)({backendInteractor:function(e){return e.api.backendInteractor}})),methods:{activateOTP:function(){this.settings.enabled||(this.setupState.state="getBackupcodes",this.fetchBackupCodes())},fetchBackupCodes:function(){var e=this;return this.backupCodes.inProgress=!0,this.backupCodes.codes=[],this.backendInteractor.generateMfaBackupCodes().then((function(t){e.backupCodes.codes=t.codes,e.backupCodes.inProgress=!1}))},getBackupCodes:function(){this.backupCodes.getNewCodes=!0},confirmBackupCodes:function(){var e=this;this.fetchBackupCodes().then((function(t){e.backupCodes.getNewCodes=!1}))},cancelBackupCodes:function(){this.backupCodes.getNewCodes=!1},setupOTP:function(){var e=this;this.setupState.state="setupOTP",this.setupState.setupOTPState="prepare",this.backendInteractor.mfaSetupOTP().then((function(t){e.otpSettings=t,e.setupState.setupOTPState="confirm"}))},doConfirmOTP:function(){var e=this;this.error=null,this.backendInteractor.mfaConfirmOTP({token:this.otpConfirmToken,password:this.currentPassword}).then((function(t){t.error?e.error=t.error:e.completeSetup()}))},completeSetup:function(){this.setupState.setupOTPState="complete",this.setupState.state="complete",this.currentPassword=null,this.error=null,this.fetchSettings()},cancelSetup:function(){this.setupState.setupOTPState="",this.setupState.state="",this.currentPassword=null,this.error=null},fetchSettings:function(){var e=this;return(0,Wn.Z)(Pn().mark((function t(){var n;return Pn().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.backendInteractor.settingsMFA();case 2:if(!(n=t.sent).error){t.next=5;break}return t.abrupt("return");case 5:return e.settings=n.settings,e.settings.available=!0,t.abrupt("return",n);case 8:case"end":return t.stop()}}),t)})))()}},mounted:function(){var e=this;this.fetchSettings().then((function(){e.readyInit=!0}))}},Qn=(0,E.Z)(Jn,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("totp-item"),i=(0,l.up)("recovery-codes"),u=(0,l.up)("confirm"),c=(0,l.up)("qrcode");return e.readyInit&&e.settings.available?((0,l.wg)(),(0,l.iD)("div",gn,[(0,l._)("div",bn,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.mfa.title")),1)]),(0,l._)("div",null,[e.setupInProgress?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("div",wn,[(0,l._)("h3",null,(0,f.zw)(e.$t("settings.mfa.authentication_methods")),1),(0,l.Wm)(r,{settings:e.settings,onDeactivate:e.fetchSettings,onActivate:e.activateOTP},null,8,["settings","onDeactivate","onActivate"]),_n,e.settings.enabled?((0,l.wg)(),(0,l.iD)("div",kn,[e.confirmNewBackupCodes?(0,l.kq)("",!0):((0,l.wg)(),(0,l.j4)(i,{key:0,"backup-codes":e.backupCodes},null,8,["backup-codes"])),e.confirmNewBackupCodes?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",onClick:t[0]||(t[0]=function(){return e.getBackupCodes&&e.getBackupCodes.apply(e,arguments)})},(0,f.zw)(e.$t("settings.mfa.generate_new_recovery_codes")),1)),e.confirmNewBackupCodes?((0,l.wg)(),(0,l.iD)("div",vn,[(0,l.Wm)(u,{disabled:e.backupCodes.inProgress,onConfirm:e.confirmBackupCodes,onCancel:e.cancelBackupCodes},{default:(0,l.w5)((function(){return[(0,l._)("p",yn,(0,f.zw)(e.$t("settings.mfa.warning_of_generate_new_codes")),1)]})),_:1},8,["disabled","onConfirm","onCancel"])])):(0,l.kq)("",!0)])):(0,l.kq)("",!0)])),e.setupInProgress?((0,l.wg)(),(0,l.iD)("div",$n,[(0,l._)("h3",null,(0,f.zw)(e.$t("settings.mfa.setup_otp")),1),e.setupOTPInProgress?(0,l.kq)("",!0):((0,l.wg)(),(0,l.j4)(i,{key:0,"backup-codes":e.backupCodes},null,8,["backup-codes"])),e.canSetupOTP?((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.cancelSetup&&e.cancelSetup.apply(e,arguments)})},(0,f.zw)(e.$t("general.cancel")),1)):(0,l.kq)("",!0),e.canSetupOTP?((0,l.wg)(),(0,l.iD)("button",{key:2,class:"btn button-default",onClick:t[2]||(t[2]=function(){return e.setupOTP&&e.setupOTP.apply(e,arguments)})},(0,f.zw)(e.$t("settings.mfa.setup_otp")),1)):(0,l.kq)("",!0),e.setupOTPInProgress?((0,l.wg)(),(0,l.iD)(l.HY,{key:3},[e.prepareOTP?((0,l.wg)(),(0,l.iD)("i",Cn,(0,f.zw)(e.$t("settings.mfa.wait_pre_setup_otp")),1)):(0,l.kq)("",!0),e.confirmOTP?((0,l.wg)(),(0,l.iD)("div",Vn,[(0,l._)("div",Tn,[(0,l._)("div",Un,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.mfa.scan.title")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.mfa.scan.desc")),1),(0,l.Wm)(c,{value:e.otpSettings.provisioning_uri,options:{width:200}},null,8,["value"]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.mfa.scan.secret_code"))+": "+(0,f.zw)(e.otpSettings.key),1)]),(0,l._)("div",xn,[(0,l._)("h4",null,(0,f.zw)(e.$t("general.verify")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.mfa.verify.desc")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.otpConfirmToken=t}),type:"text"},null,512),[[me.nr,e.otpConfirmToken]]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.enter_current_password_to_confirm"))+":",1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.currentPassword=t}),type:"password"},null,512),[[me.nr,e.currentPassword]]),(0,l._)("div",Ln,[(0,l._)("button",{class:"btn button-default",onClick:t[5]||(t[5]=function(){return e.doConfirmOTP&&e.doConfirmOTP.apply(e,arguments)})},(0,f.zw)(e.$t("settings.mfa.confirm_and_enable")),1),(0,l._)("button",{class:"btn button-default",onClick:t[6]||(t[6]=function(){return e.cancelSetup&&e.cancelSetup.apply(e,arguments)})},(0,f.zw)(e.$t("general.cancel")),1)]),e.error?((0,l.wg)(),(0,l.iD)("div",On,(0,f.zw)(e.error),1)):(0,l.kq)("",!0)])])])):(0,l.kq)("",!0)],64)):(0,l.kq)("",!0)])):(0,l.kq)("",!0)])])):(0,l.kq)("",!0)}]]);var Xn=n(39776);const el={data:function(){return{newEmail:"",changeEmailError:!1,changeEmailPassword:"",changedEmail:!1,deletingAccount:!1,deleteAccountConfirmPasswordInput:"",deleteAccountError:!1,changePasswordInputs:["","",""],changedPassword:!1,changePasswordError:!1,moveAccountTarget:"",moveAccountPassword:"",movedAccount:!1,moveAccountError:!1,aliases:[],listAliasesError:!1,addAliasTarget:"",addedAlias:!1,addAliasError:!1}},created:function(){this.$store.dispatch("fetchTokens"),this.fetchAliases()},components:{ProgressButton:ze.Z,Mfa:Qn,Checkbox:N.Z},computed:{user:function(){return this.$store.state.users.currentUser},pleromaBackend:function(){return this.$store.state.instance.pleromaBackend},oauthTokens:function(){var e=this;return this.$store.state.oauthTokens.tokens.map((function(t){return{id:t.id,appName:t.app_name,validUntil:new Date(t.valid_until).toLocaleDateString(Xn.Z.internalToBrowserLocale(e.$i18n.locale))}}))}},methods:{confirmDelete:function(){this.deletingAccount=!0},deleteAccount:function(){var e=this;this.$store.state.api.backendInteractor.deleteAccount({password:this.deleteAccountConfirmPasswordInput}).then((function(t){"success"===t.status?(e.$store.dispatch("logout"),e.$router.push({name:"root"})):e.deleteAccountError=t.error}))},changePassword:function(){var e=this,t={password:this.changePasswordInputs[0],newPassword:this.changePasswordInputs[1],newPasswordConfirmation:this.changePasswordInputs[2]};this.$store.state.api.backendInteractor.changePassword(t).then((function(t){"success"===t.status?(e.changedPassword=!0,e.changePasswordError=!1,e.logout()):(e.changedPassword=!1,e.changePasswordError=t.error)}))},changeEmail:function(){var e=this,t={email:this.newEmail,password:this.changeEmailPassword};this.$store.state.api.backendInteractor.changeEmail(t).then((function(t){"success"===t.status?(e.changedEmail=!0,e.changeEmailError=!1):(e.changedEmail=!1,e.changeEmailError=t.error)}))},moveAccount:function(){var e=this,t={targetAccount:this.moveAccountTarget,password:this.moveAccountPassword};this.$store.state.api.backendInteractor.moveAccount(t).then((function(t){"success"===t.status?(e.movedAccount=!0,e.moveAccountError=!1):(e.movedAccount=!1,e.moveAccountError=t.error)}))},removeAlias:function(e){var t=this;this.$store.state.api.backendInteractor.deleteAlias({alias:e}).then((function(){return t.fetchAliases()}))},addAlias:function(){var e=this;this.$store.state.api.backendInteractor.addAlias({alias:this.addAliasTarget}).then((function(t){e.addedAlias=!0,e.addAliasError=!1,e.addAliasTarget=""})).catch((function(t){e.addedAlias=!1,e.addAliasError=t})).then((function(){return e.fetchAliases()}))},fetchAliases:function(){var e=this;this.$store.state.api.backendInteractor.listAliases().then((function(t){e.aliases=t.aliases,e.listAliasesError=!1})).catch((function(t){e.listAliasesError=t.error}))},logout:function(){this.$store.dispatch("logout"),this.$router.replace("/")},revokeToken:function(e){window.confirm("".concat(this.$i18n.t("settings.revoke_token"),"?"))&&this.$store.dispatch("revokeToken",e)}}},tl=(0,E.Z)(el,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("mfa"),i=(0,l.up)("FAIcon"),u=(0,l.up)("i18n-t");return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.security_tab")},[(0,l._)("div",Ft,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.change_email")),1),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.new_email")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.newEmail=t}),type:"email",autocomplete:"email"},null,512),[[me.nr,e.newEmail]])]),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.current_password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.changeEmailPassword=t}),type:"password",autocomplete:"current-password"},null,512),[[me.nr,e.changeEmailPassword]])]),(0,l._)("button",{class:"btn button-default",onClick:t[2]||(t[2]=function(){return e.changeEmail&&e.changeEmail.apply(e,arguments)})},(0,f.zw)(e.$t("settings.save")),1),e.changedEmail?((0,l.wg)(),(0,l.iD)("p",qt,(0,f.zw)(e.$t("settings.changed_email")),1)):(0,l.kq)("",!0),!1!==e.changeEmailError?((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l._)("p",null,(0,f.zw)(e.$t("settings.change_email_error")),1),(0,l._)("p",null,(0,f.zw)(e.changeEmailError),1)],64)):(0,l.kq)("",!0)]),(0,l._)("div",Zt,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.change_password")),1),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.current_password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.changePasswordInputs[0]=t}),type:"password"},null,512),[[me.nr,e.changePasswordInputs[0]]])]),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.new_password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.changePasswordInputs[1]=t}),type:"password"},null,512),[[me.nr,e.changePasswordInputs[1]]])]),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.confirm_new_password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.changePasswordInputs[2]=t}),type:"password"},null,512),[[me.nr,e.changePasswordInputs[2]]])]),(0,l._)("button",{class:"btn button-default",onClick:t[6]||(t[6]=function(){return e.changePassword&&e.changePassword.apply(e,arguments)})},(0,f.zw)(e.$t("settings.save")),1),e.changedPassword?((0,l.wg)(),(0,l.iD)("p",Mt,(0,f.zw)(e.$t("settings.changed_password")),1)):!1!==e.changePasswordError?((0,l.wg)(),(0,l.iD)("p",Rt,(0,f.zw)(e.$t("settings.change_password_error")),1)):(0,l.kq)("",!0),e.changePasswordError?((0,l.wg)(),(0,l.iD)("p",Nt,(0,f.zw)(e.changePasswordError),1)):(0,l.kq)("",!0)]),(0,l._)("div",Ht,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.oauth_tokens")),1),(0,l._)("table",Yt,[(0,l._)("thead",null,[(0,l._)("tr",null,[(0,l._)("th",null,(0,f.zw)(e.$t("settings.app_name")),1),(0,l._)("th",null,(0,f.zw)(e.$t("settings.valid_until")),1),Kt])]),(0,l._)("tbody",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.oauthTokens,(function(t){return(0,l.wg)(),(0,l.iD)("tr",{key:t.id},[(0,l._)("td",null,(0,f.zw)(t.appName),1),(0,l._)("td",null,(0,f.zw)(t.validUntil),1),(0,l._)("td",Gt,[(0,l._)("button",{class:"btn button-default",onClick:function(n){return e.revokeToken(t.id)}},(0,f.zw)(e.$t("settings.revoke_token")),9,Jt)])])})),128))])])]),(0,l.Wm)(r),(0,l._)("div",Qt,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.account_alias")),1),(0,l._)("table",null,[(0,l._)("thead",null,[(0,l._)("tr",null,[(0,l._)("th",null,(0,f.zw)(e.$t("settings.account_alias_table_head")),1),Xt])]),(0,l._)("tbody",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.aliases,(function(t){return(0,l.wg)(),(0,l.iD)("tr",{key:t},[(0,l._)("td",null,(0,f.zw)(t),1),(0,l._)("td",en,[(0,l._)("button",{class:"btn button-default",onClick:function(n){return e.removeAlias(t)}},(0,f.zw)(e.$t("settings.remove_alias")),9,tn)])])})),128))])]),e.listAliasesError?((0,l.wg)(),(0,l.iD)("div",nn,[(0,l.Uk)((0,f.zw)(e.$t("settings.list_aliases_error",{error:e.error}))+" ",1),(0,l.Wm)(i,{class:"fa-scale-110 fa-old-padding",icon:"times",title:e.$t("settings.hide_list_aliases_error_action"),onClick:t[7]||(t[7]=function(t){return e.listAliasesError=!1})},null,8,["title"])])):(0,l.kq)("",!0),(0,l._)("div",null,[(0,l.Wm)(u,{keypath:"settings.new_alias_target",tag:"p"},{default:(0,l.w5)((function(){return[ln]})),_:1}),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.addAliasTarget=t})},null,512),[[me.nr,e.addAliasTarget]])]),(0,l._)("button",{class:"btn button-default",onClick:t[9]||(t[9]=function(){return e.addAlias&&e.addAlias.apply(e,arguments)})},(0,f.zw)(e.$t("settings.save")),1),e.addedAlias?((0,l.wg)(),(0,l.iD)("p",on,(0,f.zw)(e.$t("settings.added_alias")),1)):(0,l.kq)("",!0),!1!==e.addAliasError?((0,l.wg)(),(0,l.iD)("p",an,(0,f.zw)(e.$t("settings.add_alias_error",{error:e.addAliasError})),1)):(0,l.kq)("",!0)]),(0,l._)("div",sn,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.move_account")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.move_account_notes")),1),(0,l._)("div",null,[(0,l.Wm)(u,{keypath:"settings.move_account_target",tag:"p"},{example:(0,l.w5)((function(){return[rn]})),_:1}),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[10]||(t[10]=function(t){return e.moveAccountTarget=t})},null,512),[[me.nr,e.moveAccountTarget]])]),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.current_password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.moveAccountPassword=t}),type:"password",autocomplete:"current-password"},null,512),[[me.nr,e.moveAccountPassword]])]),(0,l._)("button",{class:"btn button-default",onClick:t[12]||(t[12]=function(){return e.moveAccount&&e.moveAccount.apply(e,arguments)})},(0,f.zw)(e.$t("settings.save")),1),e.movedAccount?((0,l.wg)(),(0,l.iD)("p",un,(0,f.zw)(e.$t("settings.moved_account")),1)):(0,l.kq)("",!0),!1!==e.moveAccountError?((0,l.wg)(),(0,l.iD)("p",cn,(0,f.zw)(e.$t("settings.move_account_error",{error:e.moveAccountError})),1)):(0,l.kq)("",!0)]),(0,l._)("div",dn,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.delete_account")),1),e.deletingAccount?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("p",pn,(0,f.zw)(e.$t("settings.delete_account_description")),1)),e.deletingAccount?((0,l.wg)(),(0,l.iD)("div",mn,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.delete_account_instructions")),1),(0,l._)("p",null,(0,f.zw)(e.$t("login.password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.deleteAccountConfirmPasswordInput=t}),type:"password"},null,512),[[me.nr,e.deleteAccountConfirmPasswordInput]]),(0,l._)("button",{class:"btn button-default",onClick:t[14]||(t[14]=function(){return e.deleteAccount&&e.deleteAccount.apply(e,arguments)})},(0,f.zw)(e.$t("settings.delete_account")),1)])):(0,l.kq)("",!0),!1!==e.deleteAccountError?((0,l.wg)(),(0,l.iD)("p",fn,(0,f.zw)(e.$t("settings.delete_account_error")),1)):(0,l.kq)("",!0),e.deleteAccountError?((0,l.wg)(),(0,l.iD)("p",hn,(0,f.zw)(e.deleteAccountError),1)):(0,l.kq)("",!0),e.deletingAccount?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:4,class:"btn button-default",onClick:t[15]||(t[15]=function(){return e.confirmDelete&&e.confirmDelete.apply(e,arguments)})},(0,f.zw)(e.$t("settings.delete_account")),1))])],8,Et)}]]);var nl={class:"profile-tab"},ll={class:"setting-item"},ol={key:0},al={key:1},sl=["onUpdate:modelValue","placeholder"],rl=["onUpdate:modelValue","placeholder"],il=["onClick"],ul=["disabled"],cl={class:"setting-item"},dl={class:"visibility-notice"},pl={class:"current-avatar-container"},ml=["src"],fl=["title"],hl={class:"setting-item"},gl={class:"banner-background-preview"},bl=["src"],wl=["title"],_l=["src"],kl={class:"setting-item"},vl={class:"banner-background-preview"},yl=["src"],$l=["title"],Cl=["src"],Vl={class:"setting-item"},Tl={class:"setting-list"},Ul={class:"setting-list suboptions"},xl={class:"setting-list suboptions"},Ll=n(27955),Ol=n.n(Ll),Wl=n(82492),zl=n.n(Wl),Pl={class:"image-cropper"},Dl={key:0},Sl={class:"image-cropper-image-container"},jl=["src"],Il={class:"image-cropper-buttons-wrapper"},Bl=["disabled","textContent"],Al=["disabled","textContent"],El=["disabled","textContent"],Fl=["accept"],ql=n(71002),Zl=n(33129),Ml=n.n(Zl);I.vI.add(B.IJ7);const Rl={props:{trigger:{type:[String,window.Element],required:!0},submitHandler:{type:Function,required:!0},cropperOptions:{type:Object,default:function(){return{aspectRatio:1,autoCropArea:1,viewMode:1,movable:!1,zoomable:!1,guides:!1}}},mimes:{type:String,default:"image/png, image/gif, image/jpeg, image/bmp, image/x-icon"},saveButtonLabel:{type:String},saveWithoutCroppingButtonlabel:{type:String},cancelButtonLabel:{type:String}},data:function(){return{cropper:void 0,dataUrl:void 0,filename:void 0,submitting:!1}},computed:{saveText:function(){return this.saveButtonLabel||this.$t("image_cropper.save")},saveWithoutCroppingText:function(){return this.saveWithoutCroppingButtonlabel||this.$t("image_cropper.save_without_cropping")},cancelText:function(){return this.cancelButtonLabel||this.$t("image_cropper.cancel")}},methods:{destroy:function(){this.cropper&&this.cropper.destroy(),this.$refs.input.value="",this.dataUrl=void 0,this.$emit("close")},submit:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.submitting=!0,this.submitHandler(t&&this.cropper,this.file).then((function(){return e.destroy()})).finally((function(){e.submitting=!1}))},pickImage:function(){this.$refs.input.click()},createCropper:function(){this.cropper=new(Ml())(this.$refs.img,this.cropperOptions)},getTriggerDOM:function(){return"object"===(0,ql.Z)(this.trigger)?this.trigger:document.querySelector(this.trigger)},readFile:function(){var e=this,t=this.$refs.input;if(null!=t.files&&null!=t.files[0]){this.file=t.files[0];var n=new window.FileReader;n.onload=function(t){e.dataUrl=t.target.result,e.$emit("open")},n.readAsDataURL(this.file),this.$emit("changed",this.file,n)}}},mounted:function(){var e=this.getTriggerDOM();e?e.addEventListener("click",this.pickImage):this.$emit("error","No image make trigger found.","user"),this.$refs.input.addEventListener("change",this.readFile)},beforeUnmount:function(){var e=this.getTriggerDOM();e&&e.removeEventListener("click",this.pickImage),this.$refs.input.removeEventListener("change",this.readFile)}},Nl=(0,E.Z)(Rl,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("FAIcon");return(0,l.wg)(),(0,l.iD)("div",Pl,[e.dataUrl?((0,l.wg)(),(0,l.iD)("div",Dl,[(0,l._)("div",Sl,[(0,l._)("img",{ref:"img",src:e.dataUrl,alt:"",onLoad:t[0]||(t[0]=(0,me.iM)((function(){return e.createCropper&&e.createCropper.apply(e,arguments)}),["stop"]))},null,40,jl)]),(0,l._)("div",Il,[(0,l._)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[1]||(t[1]=function(t){return e.submit()}),textContent:(0,f.zw)(e.saveText)},null,8,Bl),(0,l._)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[2]||(t[2]=function(){return e.destroy&&e.destroy.apply(e,arguments)}),textContent:(0,f.zw)(e.cancelText)},null,8,Al),(0,l._)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[3]||(t[3]=function(t){return e.submit(!1)}),textContent:(0,f.zw)(e.saveWithoutCroppingText)},null,8,El),e.submitting?((0,l.wg)(),(0,l.j4)(r,{key:0,spin:"",icon:"circle-notch"})):(0,l.kq)("",!0)])])):(0,l.kq)("",!0),(0,l._)("input",{ref:"input",type:"file",class:"image-cropper-img-input",accept:e.mimes},null,8,Fl)])}]]);var Hl=n(54110),Yl=n(65079),Kl=n(88671),Gl=n(19003),Jl=n(86269),Ql=n(37230);function Xl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function eo(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xl(Object(n),!0).forEach((function(t){(0,P.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}I.vI.add(B.NBC,B.r8p,B.IJ7);var to={data:function(){return{newName:this.$store.state.users.currentUser.name_unescaped,newBio:Ol()(this.$store.state.users.currentUser.description),newLocked:this.$store.state.users.currentUser.locked,newBirthday:this.$store.state.users.currentUser.birthday,showBirthday:this.$store.state.users.currentUser.show_birthday,newFields:this.$store.state.users.currentUser.fields.map((function(e){return{name:e.name,value:e.value}})),showRole:this.$store.state.users.currentUser.show_role,role:this.$store.state.users.currentUser.role,bot:this.$store.state.users.currentUser.bot,pickAvatarBtnVisible:!0,bannerUploading:!1,backgroundUploading:!1,banner:null,bannerPreview:null,background:null,backgroundPreview:null,emailLanguage:this.$store.state.users.currentUser.language||[""]}},components:{ScopeSelector:Hl.Z,ImageCropper:Nl,EmojiInput:Kl.Z,Autosuggest:we,ProgressButton:ze.Z,Checkbox:N.Z,BooleanSetting:bt.Z,InterfaceLanguageSwitcher:Jl.Z},computed:eo(eo({user:function(){return this.$store.state.users.currentUser}},(0,wt.Z)()),{},{emojiUserSuggestor:function(){return(0,Gl.ZP)({emoji:[].concat((0,qe.Z)(this.$store.getters.standardEmojiList),(0,qe.Z)(this.$store.state.instance.customEmoji)),store:this.$store})},emojiSuggestor:function(){return(0,Gl.ZP)({emoji:[].concat((0,qe.Z)(this.$store.getters.standardEmojiList),(0,qe.Z)(this.$store.state.instance.customEmoji))})},userSuggestor:function(){return(0,Gl.ZP)({store:this.$store})},fieldsLimits:function(){return this.$store.state.instance.fieldsLimits},maxFields:function(){return this.fieldsLimits?this.fieldsLimits.maxFields:0},defaultAvatar:function(){return this.$store.state.instance.server+this.$store.state.instance.defaultAvatar},defaultBanner:function(){return this.$store.state.instance.server+this.$store.state.instance.defaultBanner},isDefaultAvatar:function(){var e=this.$store.state.instance.defaultAvatar;return!this.$store.state.users.currentUser.profile_image_url||this.$store.state.users.currentUser.profile_image_url.includes(e)},isDefaultBanner:function(){var e=this.$store.state.instance.defaultBanner;return!this.$store.state.users.currentUser.cover_photo||this.$store.state.users.currentUser.cover_photo.includes(e)},isDefaultBackground:function(){return!this.$store.state.users.currentUser.background_image},avatarImgSrc:function(){return this.$store.state.users.currentUser.profile_image_url_original||this.defaultAvatar},bannerImgSrc:function(){return this.$store.state.users.currentUser.cover_photo||this.defaultBanner}}),methods:{updateProfile:function(){var e=this,t={note:this.newBio,locked:this.newLocked,display_name:this.newName,fields_attributes:this.newFields.filter((function(e){return null!=e})),bot:this.bot,show_role:this.showRole,birthday:this.newBirthday||"",show_birthday:this.showBirthday};this.emailLanguage&&(t.language=Xn.Z.internalToBackendLocaleMulti(this.emailLanguage)),this.$store.state.api.backendInteractor.updateProfile({params:t}).then((function(t){e.newFields.splice(t.fields.length),zl()(e.newFields,t.fields),e.$store.commit("addNewUsers",[t]),e.$store.commit("setCurrentUser",t)}))},changeVis:function(e){this.newDefaultScope=e},addField:function(){return this.newFields.length<this.maxFields&&(this.newFields.push({name:"",value:""}),!0)},deleteField:function(e,t){this.newFields.splice(e,1)},uploadFile:function(e,t){var n=this,l=t.target.files[0];if(l)if(l.size>this.$store.state.instance[e+"limit"]){var o=Yl.Z.fileSizeFormat(l.size),a=Yl.Z.fileSizeFormat(this.$store.state.instance[e+"limit"]);this.$store.dispatch("pushGlobalNotice",{messageKey:"upload.error.message",messageArgs:[this.$t("upload.error.file_too_big",{filesize:o.num,filesizeunit:o.unit,allowedsize:a.num,allowedsizeunit:a.unit})],level:"error"})}else{var s=new FileReader;s.onload=function(t){var o=t.target.result;n[e+"Preview"]=o,n[e]=l},s.readAsDataURL(l)}},resetAvatar:function(){window.confirm(this.$t("settings.reset_avatar_confirm"))&&this.submitAvatar(void 0,"")},resetBanner:function(){window.confirm(this.$t("settings.reset_banner_confirm"))&&this.submitBanner("")},resetBackground:function(){window.confirm(this.$t("settings.reset_background_confirm"))&&this.submitBackground("")},submitAvatar:function(e,t){var n=this;return new Promise((function(l,o){function a(e,t){n.$store.state.api.backendInteractor.updateProfileImages({avatar:e,avatarName:t}).then((function(e){n.$store.commit("addNewUsers",[e]),n.$store.commit("setCurrentUser",e),l()})).catch((function(e){n.displayUploadError(e),o(e)}))}e?e.getCroppedCanvas().toBlob((function(e){return a(e,t.name)}),t.type):a(t,t.name)}))},submitBanner:function(e){var t=this;(this.bannerPreview||""===e)&&(this.bannerUploading=!0,this.$store.state.api.backendInteractor.updateProfileImages({banner:e}).then((function(e){t.$store.commit("addNewUsers",[e]),t.$store.commit("setCurrentUser",e),t.bannerPreview=null})).catch(this.displayUploadError).finally((function(){t.bannerUploading=!1})))},submitBackground:function(e){var t=this;(this.backgroundPreview||""===e)&&(this.backgroundUploading=!0,this.$store.state.api.backendInteractor.updateProfileImages({background:e}).then((function(e){t.$store.commit("addNewUsers",[e]),t.$store.commit("setCurrentUser",e),t.backgroundPreview=null})).catch(this.displayUploadError).finally((function(){t.backgroundUploading=!1})))},displayUploadError:function(e){this.$store.dispatch("pushGlobalNotice",{messageKey:"upload.error.message",messageArgs:[e.message],level:"error"})},propsToNative:function(e){return(0,Ql.X)(e)}}};const no=to,lo=(0,E.Z)(no,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("EmojiInput"),i=(0,l.up)("Checkbox"),u=(0,l.up)("FAIcon"),c=(0,l.up)("interface-language-switcher"),d=(0,l.up)("image-cropper"),p=(0,l.up)("BooleanSetting");return(0,l.wg)(),(0,l.iD)("div",nl,[(0,l._)("div",ll,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.name_bio")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.name")),1),(0,l.Wm)(r,{modelValue:e.newName,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.newName=t}),"enable-emoji-picker":"",suggest:e.emojiSuggestor},{default:(0,l.w5)((function(n){return[(0,l.wy)((0,l._)("input",(0,l.dG)({id:"username","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.newName=t}),class:"name-changer"},e.propsToNative(n)),null,16),[[me.YZ,e.newName]])]})),_:1},8,["modelValue","suggest"]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.bio")),1),(0,l.Wm)(r,{modelValue:e.newBio,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.newBio=t}),"enable-emoji-picker":"",suggest:e.emojiUserSuggestor},{default:(0,l.w5)((function(n){return[(0,l.wy)((0,l._)("textarea",(0,l.dG)({"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.newBio=t}),class:"bio resize-height"},e.propsToNative(n)),null,16),[[me.nr,e.newBio]])]})),_:1},8,["modelValue","suggest"]),"admin"===e.role||"moderator"===e.role?((0,l.wg)(),(0,l.iD)("p",ol,[(0,l.Wm)(i,{modelValue:e.showRole,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.showRole=t})},{default:(0,l.w5)((function(){return["admin"===e.role?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Uk)((0,f.zw)(e.$t("settings.show_admin_badge")),1)],64)):(0,l.kq)("",!0),"moderator"===e.role?((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Uk)((0,f.zw)(e.$t("settings.show_moderator_badge")),1)],64)):(0,l.kq)("",!0)]})),_:1},8,["modelValue"])])):(0,l.kq)("",!0),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.birthday.label")),1),(0,l.wy)((0,l._)("input",{id:"birthday","onUpdate:modelValue":t[5]||(t[5]=function(t){return e.newBirthday=t}),type:"date",class:"birthday-input"},null,512),[[me.nr,e.newBirthday]]),(0,l.Wm)(i,{modelValue:e.showBirthday,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.showBirthday=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.birthday.show_birthday")),1)]})),_:1},8,["modelValue"])]),e.maxFields>0?((0,l.wg)(),(0,l.iD)("div",al,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.profile_fields.label")),1),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.newFields,(function(t,n){return(0,l.wg)(),(0,l.iD)("div",{key:n,class:"profile-fields"},[(0,l.Wm)(r,{modelValue:e.newFields[n].name,"onUpdate:modelValue":function(t){return e.newFields[n].name=t},"enable-emoji-picker":"","hide-emoji-button":"",suggest:e.userSuggestor},{default:(0,l.w5)((function(t){return[(0,l.wy)((0,l._)("input",(0,l.dG)({"onUpdate:modelValue":function(t){return e.newFields[n].name=t},placeholder:e.$t("settings.profile_fields.name")},e.propsToNative(t)),null,16,sl),[[me.YZ,e.newFields[n].name]])]})),_:2},1032,["modelValue","onUpdate:modelValue","suggest"]),(0,l.Wm)(r,{modelValue:e.newFields[n].value,"onUpdate:modelValue":function(t){return e.newFields[n].value=t},"enable-emoji-picker":"","hide-emoji-button":"",suggest:e.userSuggestor},{default:(0,l.w5)((function(t){return[(0,l.wy)((0,l._)("input",(0,l.dG)({"onUpdate:modelValue":function(t){return e.newFields[n].value=t},placeholder:e.$t("settings.profile_fields.value")},e.propsToNative(t)),null,16,rl),[[me.YZ,e.newFields[n].value]])]})),_:2},1032,["modelValue","onUpdate:modelValue","suggest"]),(0,l._)("button",{class:"delete-field button-unstyled -hover-highlight",onClick:function(t){return e.deleteField(n)}},[e.newFields.length>1?((0,l.wg)(),(0,l.j4)(u,{key:0,icon:"times"})):(0,l.kq)("",!0)],8,il)])})),128)),e.newFields.length<e.maxFields?((0,l.wg)(),(0,l.iD)("button",{key:0,class:"add-field faint button-unstyled -hover-highlight",onClick:t[7]||(t[7]=function(){return e.addField&&e.addField.apply(e,arguments)})},[(0,l.Wm)(u,{icon:"plus"}),(0,l.Uk)(" "+(0,f.zw)(e.$t("settings.profile_fields.add_field")),1)])):(0,l.kq)("",!0)])):(0,l.kq)("",!0),(0,l._)("p",null,[(0,l.Wm)(i,{modelValue:e.bot,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.bot=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.bot")),1)]})),_:1},8,["modelValue"])]),(0,l._)("p",null,[(0,l.Wm)(c,{"prompt-text":e.$t("settings.email_language"),language:e.emailLanguage,"set-language":function(t){return e.emailLanguage=t}},null,8,["prompt-text","language","set-language"])]),(0,l._)("button",{disabled:e.newName&&0===e.newName.length,class:"btn button-default",onClick:t[9]||(t[9]=function(){return e.updateProfile&&e.updateProfile.apply(e,arguments)})},(0,f.zw)(e.$t("settings.save")),9,ul)]),(0,l._)("div",cl,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.avatar")),1),(0,l._)("p",dl,(0,f.zw)(e.$t("settings.avatar_size_instruction")),1),(0,l._)("div",pl,[(0,l._)("img",{src:e.user.profile_image_url_original,class:"current-avatar"},null,8,ml),!e.isDefaultAvatar&&e.pickAvatarBtnVisible?((0,l.wg)(),(0,l.iD)("button",{key:0,title:e.$t("settings.reset_avatar"),class:"button-unstyled reset-button",onClick:t[10]||(t[10]=function(){return e.resetAvatar&&e.resetAvatar.apply(e,arguments)})},[(0,l.Wm)(u,{icon:"times",type:"button"})],8,fl)):(0,l.kq)("",!0)]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.set_new_avatar")),1),(0,l.wy)((0,l._)("button",{id:"pick-avatar",class:"button-default btn",type:"button"},(0,f.zw)(e.$t("settings.upload_a_photo")),513),[[me.F8,e.pickAvatarBtnVisible]]),(0,l.Wm)(d,{trigger:"#pick-avatar","submit-handler":e.submitAvatar,onOpen:t[11]||(t[11]=function(t){return e.pickAvatarBtnVisible=!1}),onClose:t[12]||(t[12]=function(t){return e.pickAvatarBtnVisible=!0})},null,8,["submit-handler"])]),(0,l._)("div",hl,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.profile_banner")),1),(0,l._)("div",gl,[(0,l._)("img",{src:e.user.cover_photo},null,8,bl),e.isDefaultBanner?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"button-unstyled reset-button",title:e.$t("settings.reset_profile_banner"),onClick:t[13]||(t[13]=function(){return e.resetBanner&&e.resetBanner.apply(e,arguments)})},[(0,l.Wm)(u,{icon:"times",type:"button"})],8,wl))]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.set_new_profile_banner")),1),e.bannerPreview?((0,l.wg)(),(0,l.iD)("img",{key:0,class:"banner-background-preview",src:e.bannerPreview},null,8,_l)):(0,l.kq)("",!0),(0,l._)("div",null,[(0,l._)("input",{type:"file",onChange:t[14]||(t[14]=function(t){return e.uploadFile("banner",t)})},null,32)]),e.bannerUploading?((0,l.wg)(),(0,l.j4)(u,{key:1,class:"uploading",spin:"",icon:"circle-notch"})):e.bannerPreview?((0,l.wg)(),(0,l.iD)("button",{key:2,class:"btn button-default",onClick:t[15]||(t[15]=function(t){return e.submitBanner(e.banner)})},(0,f.zw)(e.$t("settings.save")),1)):(0,l.kq)("",!0)]),(0,l._)("div",kl,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.profile_background")),1),(0,l._)("div",vl,[(0,l._)("img",{src:e.user.background_image},null,8,yl),e.isDefaultBackground?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"button-unstyled reset-button",title:e.$t("settings.reset_profile_background"),onClick:t[16]||(t[16]=function(){return e.resetBackground&&e.resetBackground.apply(e,arguments)})},[(0,l.Wm)(u,{icon:"times",type:"button"})],8,$l))]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.set_new_profile_background")),1),e.backgroundPreview?((0,l.wg)(),(0,l.iD)("img",{key:0,class:"banner-background-preview",src:e.backgroundPreview},null,8,Cl)):(0,l.kq)("",!0),(0,l._)("div",null,[(0,l._)("input",{type:"file",onChange:t[17]||(t[17]=function(t){return e.uploadFile("background",t)})},null,32)]),e.backgroundUploading?((0,l.wg)(),(0,l.j4)(u,{key:1,class:"uploading",spin:"",icon:"circle-notch"})):e.backgroundPreview?((0,l.wg)(),(0,l.iD)("button",{key:2,class:"btn button-default",onClick:t[18]||(t[18]=function(t){return e.submitBackground(e.background)})},(0,f.zw)(e.$t("settings.save")),1)):(0,l.kq)("",!0)]),(0,l._)("div",Vl,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.account_privacy")),1),(0,l._)("ul",Tl,[(0,l._)("li",null,[(0,l.Wm)(p,{source:"profile",path:"locked"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.lock_account_description")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(p,{source:"profile",path:"discoverable"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.discoverable")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(p,{source:"profile",path:"allowFollowingMove"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.allow_following_move")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(p,{source:"profile",path:"hideFavorites"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_favorites_description")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(p,{source:"profile",path:"hideFollowers"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_followers_description")),1)]})),_:1}),(0,l._)("ul",Ul,[(0,l._)("li",null,[(0,l.Wm)(p,{source:"profile",path:"hideFollowersCount","parent-path":"hideFollowers"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_followers_count_description")),1)]})),_:1})])])]),(0,l._)("li",null,[(0,l.Wm)(p,{source:"profile",path:"hideFollows"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_follows_description")),1)]})),_:1}),(0,l._)("ul",xl,[(0,l._)("li",null,[(0,l.Wm)(p,{source:"profile",path:"hideFollowsCount","parent-path":"hideFollows"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_follows_count_description")),1)]})),_:1})])])])])])])}]]);var oo=["label"],ao={class:"setting-item"},so={class:"setting-list"},ro={key:0},io={key:1},uo={class:"setting-list suboptions"},co={key:2},po={key:3},mo={class:"column-settings"},fo={class:"select-multiple"},ho={class:"label"},go={class:"option-list"},bo={class:"setting-item"},wo={class:"setting-list"},_o={key:0,class:"setting-list suboptions"},ko={class:"setting-list suboptions"},vo={class:"setting-list suboptions"},yo={key:0,class:"unavailable"},$o={key:1},Co={key:2},Vo={key:3},To={key:0,class:"setting-item"},Uo={class:"setting-list"},xo={for:"default-vis"},Lo={key:0};const Oo={components:{NumberSetting:n(20445).Z}},Wo=(0,E.Z)(Oo,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("NumberSetting");return(0,l.wg)(),(0,l.j4)(r,(0,f.vs)((0,l.F4)(e.$attrs)),{default:(0,l.w5)((function(){return[(0,l.WI)(e.$slots,"default")]})),_:3},16)}]]);var zo={key:0,class:"SizeSetting"},Po=["for"],Do=["id","disabled","min","value"],So=["value"],jo=n(76990),Io=n(7761);function Bo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function Ao(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Bo(Object(n),!0).forEach((function(t){(0,P.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Bo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Eo=["cm","mm","in","px","pt","pc","em","ex","ch","rem","vw","vh","vmin","vmax","%"],Fo=["px","rem","vw"];const qo=Ao(Ao({},Io.Z),{},{components:Ao(Ao({},Io.Z.components),{},{Select:jo.Z}),props:Ao(Ao({},Io.Z.props),{},{min:Number,units:{type:Array,default:function(){return Eo}}}),computed:Ao(Ao({},Io.Z.computed),{},{stateUnit:function(){return this.state.replace(/\d+/,"")},stateValue:function(){return this.state.replace(/\D+/,"")}}),methods:Ao(Ao({},Io.Z.methods),{},{updateValue:function(e){this.configSink(this.path,parseInt(e.target.value)+this.stateUnit)},updateUnit:function(e){this.configSink(this.path,this.stateValue+e.target.value)}})}),Zo=(0,E.Z)(qo,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("Select"),i=(0,l.up)("ModifiedIndicator");return e.matchesExpertLevel?((0,l.wg)(),(0,l.iD)("span",zo,[(0,l._)("label",{for:e.path,class:"size-label"},[(0,l.WI)(e.$slots,"default")],8,Po),(0,l._)("input",{id:e.path,class:"number-input",type:"number",step:"1",disabled:e.disabled,min:e.min||0,value:e.stateValue,onChange:t[0]||(t[0]=function(){return e.updateValue&&e.updateValue.apply(e,arguments)})},null,40,Do),(0,l.Wm)(r,{id:e.path,"model-value":e.stateUnit,disabled:e.disabled,class:"css-unit-input",onChange:e.updateUnit},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.units,(function(e){return(0,l.wg)(),(0,l.iD)("option",{key:e,value:e},(0,f.zw)(e),9,So)})),128))]})),_:1},8,["id","model-value","disabled","onChange"]),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l.Wm)(i,{changed:e.isChanged,onclick:e.reset},null,8,["changed","onclick"])])):(0,l.kq)("",!0)}]]);var Mo=n(29376);function Ro(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}I.vI.add(B.g4A);const No={data:function(){var e=this;return{subjectLineOptions:["email","noop","masto"].map((function(t){return{key:t,value:t,label:e.$t("settings.subject_line_".concat("masto"===t?"mastodon":t))}})),conversationDisplayOptions:["tree","linear"].map((function(t){return{key:t,value:t,label:e.$t("settings.conversation_display_".concat(t))}})),conversationOtherRepliesButtonOptions:["below","inside"].map((function(t){return{key:t,value:t,label:e.$t("settings.conversation_other_replies_button_".concat(t))}})),mentionLinkDisplayOptions:["short","full_for_remote","full"].map((function(t){return{key:t,value:t,label:e.$t("settings.mention_link_display_".concat(t))}})),thirdColumnModeOptions:["none","notifications","postform"].map((function(t){return{key:t,value:t,label:e.$t("settings.third_column_mode_".concat(t))}})),userPopoverAvatarActionOptions:["close","zoom","open"].map((function(t){return{key:t,value:t,label:e.$t("settings.user_popover_avatar_action_".concat(t))}})),loopSilentAvailable:Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype,"mozHasAudio")||Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype,"webkitAudioDecodedByteCount")||Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype,"audioTracks")}},components:{BooleanSetting:bt.Z,ChoiceSetting:Dt.Z,IntegerSetting:St.Z,FloatSetting:Wo,SizeSetting:Zo,InterfaceLanguageSwitcher:Jl.Z,ScopeSelector:Hl.Z,ProfileSettingIndicator:Mo.Z},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ro(Object(n),!0).forEach((function(t){(0,P.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ro(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({horizontalUnits:function(){return Fo},postFormats:function(){return this.$store.state.instance.postFormats||[]},postContentOptions:function(){var e=this;return this.postFormats.map((function(t){return{key:t,value:t,label:e.$t('post_status.content_type["'.concat(t,'"]'))}}))},columns:function(){var e=this.$store.getters.mergedConfig.thirdColumnMode,t="none"===e?[]:["notifs"];return this.$store.getters.mergedConfig.sidebarRight||"postform"===e?[].concat(t,["content","sidebar"]):["sidebar","content"].concat(t)},instanceSpecificPanelPresent:function(){return this.$store.state.instance.showInstanceSpecificPanel},instanceWallpaperUsed:function(){return this.$store.state.instance.background&&!this.$store.state.users.currentUser.background_image},instanceShoutboxPresent:function(){return this.$store.state.instance.shoutAvailable},language:{get:function(){return this.$store.getters.mergedConfig.interfaceLanguage},set:function(e){this.$store.dispatch("setOption",{name:"interfaceLanguage",value:e})}}},(0,wt.Z)()),methods:{changeDefaultScope:function(e){this.$store.dispatch("setProfileOption",{name:"defaultScope",value:e})}}},Ho=(0,E.Z)(No,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("interface-language-switcher"),i=(0,l.up)("BooleanSetting"),u=(0,l.up)("ChoiceSetting"),c=(0,l.up)("SizeSetting"),d=(0,l.up)("IntegerSetting"),p=(0,l.up)("FloatSetting"),m=(0,l.up)("FAIcon"),h=(0,l.up)("ProfileSettingIndicator"),g=(0,l.up)("ScopeSelector");return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.general")},[(0,l._)("div",ao,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.interface")),1),(0,l._)("ul",so,[(0,l._)("li",null,[(0,l.Wm)(r,{"prompt-text":e.$t("settings.interfaceLanguage"),language:e.language,"set-language":function(t){return e.language=t}},null,8,["prompt-text","language","set-language"])]),e.instanceSpecificPanelPresent?((0,l.wg)(),(0,l.iD)("li",ro,[(0,l.Wm)(i,{path:"hideISP"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_isp")),1)]})),_:1})])):(0,l.kq)("",!0),e.instanceWallpaperUsed?((0,l.wg)(),(0,l.iD)("li",io,[(0,l.Wm)(i,{path:"hideInstanceWallpaper"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_wallpaper")),1)]})),_:1})])):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l.Wm)(i,{path:"stopGifs"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.stop_gifs")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"streaming"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.streaming")),1)]})),_:1}),(0,l._)("ul",uo,[(0,l._)("li",null,[(0,l.Wm)(i,{path:"pauseOnUnfocused","parent-path":"streaming"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.pause_on_unfocused")),1)]})),_:1})])])]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"useStreamingApi",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.useStreamingApi")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"virtualScrolling",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.virtual_scrolling")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(u,{id:"userPopoverAvatarAction",path:"userPopoverAvatarAction",options:e.userPopoverAvatarActionOptions,expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.user_popover_avatar_action")),1)]})),_:1},8,["options"])]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"userPopoverOverlay",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.user_popover_avatar_overlay")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"alwaysShowNewPostButton",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.always_show_post_button")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"autohideFloatingPostButton",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.autohide_floating_post_button")),1)]})),_:1})]),e.instanceShoutboxPresent?((0,l.wg)(),(0,l.iD)("li",co,[(0,l.Wm)(i,{path:"hideShoutbox",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_shoutbox")),1)]})),_:1})])):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l._)("h3",null,(0,f.zw)(e.$t("settings.columns")),1)]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"disableStickyHeaders"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.disable_sticky_headers")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"showScrollbars"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.show_scrollbars")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"sidebarRight"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.right_sidebar")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"navbarColumnStretch"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.navbar_column_stretch")),1)]})),_:1})]),(0,l._)("li",null,[e.user?((0,l.wg)(),(0,l.j4)(u,{key:0,id:"thirdColumnMode",path:"thirdColumnMode",options:e.thirdColumnModeOptions},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.third_column_mode")),1)]})),_:1},8,["options"])):(0,l.kq)("",!0)]),e.expertLevel>0?((0,l.wg)(),(0,l.iD)("li",po,[(0,l.Uk)((0,f.zw)(e.$t("settings.column_sizes"))+" ",1),(0,l._)("div",mo,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.columns,(function(t){return(0,l.wg)(),(0,l.j4)(c,{key:t,path:t+"ColumnWidth",units:e.horizontalUnits,expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.column_sizes_"+t)),1)]})),_:2},1032,["path","units"])})),128))])])):(0,l.kq)("",!0),(0,l._)("li",fo,[(0,l._)("span",ho,(0,f.zw)(e.$t("settings.confirm_dialogs")),1),(0,l._)("ul",go,[(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnRepeat"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_repeat")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnUnfollow"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_unfollow")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnBlock"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_block")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnMute"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_mute")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnDelete"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_delete")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnLogout"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_logout")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnApproveFollow"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_approve_follow")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnDenyFollow"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_deny_follow")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnRemoveUserFromFollowers"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_remove_follower")),1)]})),_:1})])])])])]),(0,l._)("div",bo,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.post_look_feel")),1),(0,l._)("ul",wo,[(0,l._)("li",null,[(0,l.Wm)(u,{id:"conversationDisplay",path:"conversationDisplay",options:e.conversationDisplayOptions},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.conversation_display")),1)]})),_:1},8,["options"])]),"linear"!==e.mergedConfig.conversationDisplay?((0,l.wg)(),(0,l.iD)("ul",_o,[(0,l._)("li",null,[(0,l.Wm)(i,{path:"conversationTreeAdvanced"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.tree_advanced")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"conversationTreeFadeAncestors",expert:1},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.tree_fade_ancestors")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(d,{path:"maxDepthInThread",min:3,expert:1},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.max_depth_in_thread")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(u,{id:"conversationOtherRepliesButton",path:"conversationOtherRepliesButton",options:e.conversationOtherRepliesButtonOptions,expert:1},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.conversation_other_replies_button")),1)]})),_:1},8,["options"])])])):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l.Wm)(i,{path:"collapseMessageWithSubject"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.collapse_subject")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"emojiReactionsOnTimeline",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.emoji_reactions_on_timeline")),1)]})),_:1})]),(0,l._)("li",null,[e.user?((0,l.wg)(),(0,l.j4)(i,{key:0,source:"profile",path:"stripRichContent",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.no_rich_text_description")),1)]})),_:1})):(0,l.kq)("",!0)]),(0,l._)("li",null,[e.user?((0,l.wg)(),(0,l.j4)(p,{key:0,path:"emojiReactionsScale",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.emoji_reactions_scale")),1)]})),_:1})):(0,l.kq)("",!0)]),(0,l._)("h3",null,(0,f.zw)(e.$t("settings.attachments")),1),(0,l._)("li",null,[(0,l.Wm)(i,{path:"useContainFit",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.use_contain_fit")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"hideNsfw"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.nsfw_clickthrough")),1)]})),_:1})]),(0,l._)("ul",ko,[(0,l._)("li",null,[(0,l.Wm)(i,{path:"preloadImage",expert:"1","parent-path":"hideNsfw"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.preload_images")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"useOneClickNsfw",expert:"1","parent-path":"hideNsfw"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.use_one_click_nsfw")),1)]})),_:1})])]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"loopVideo",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.loop_video")),1)]})),_:1}),(0,l._)("ul",vo,[(0,l._)("li",null,[(0,l.Wm)(i,{path:"loopVideoSilentOnly",expert:"1","parent-path":"loopVideo",disabled:!e.loopSilentAvailable},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.loop_video_silent_only")),1)]})),_:1},8,["disabled"]),e.loopSilentAvailable?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("div",yo,[(0,l.Wm)(m,{icon:"globe"}),(0,l.Uk)("! "+(0,f.zw)(e.$t("settings.limited_availability")),1)]))])])]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"playVideosInModal",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.play_videos_in_modal")),1)]})),_:1})]),(0,l._)("h3",null,(0,f.zw)(e.$t("settings.mention_links")),1),(0,l._)("li",null,[(0,l.Wm)(u,{id:"mentionLinkDisplay",path:"mentionLinkDisplay",options:e.mentionLinkDisplayOptions},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mention_link_display")),1)]})),_:1},8,["options"])]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"mentionLinkShowTooltip",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mention_link_use_tooltip")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"useAtIcon",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.use_at_icon")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"mentionLinkShowAvatar"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mention_link_show_avatar")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"mentionLinkFadeDomain",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mention_link_fade_domain")),1)]})),_:1})]),e.user?((0,l.wg)(),(0,l.iD)("li",$o,[(0,l.Wm)(i,{path:"mentionLinkBoldenYou",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mention_link_bolden_you")),1)]})),_:1})])):(0,l.kq)("",!0),e.expertLevel>0?((0,l.wg)(),(0,l.iD)("h3",Co,(0,f.zw)(e.$t("settings.fun")),1)):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l.Wm)(i,{path:"greentext",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.greentext")),1)]})),_:1})]),e.user?((0,l.wg)(),(0,l.iD)("li",Vo,[(0,l.Wm)(i,{path:"mentionLinkShowYous",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.show_yous")),1)]})),_:1})])):(0,l.kq)("",!0)])]),e.user?((0,l.wg)(),(0,l.iD)("div",To,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.composing")),1),(0,l._)("ul",Uo,[(0,l._)("li",null,[(0,l._)("label",xo,[(0,l.Uk)((0,f.zw)(e.$t("settings.default_vis"))+" ",1),(0,l.Wm)(h,{"is-profile":!0}),(0,l.Wm)(g,{class:"scope-selector","show-all":!0,"user-default":e.$store.state.profileConfig.defaultScope,"initial-scope":e.$store.state.profileConfig.defaultScope,"on-scope-change":e.changeDefaultScope},null,8,["user-default","initial-scope","on-scope-change"])])]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"sensitiveByDefault"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.sensitive_by_default")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"scopeCopy",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.scope_copy")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"alwaysShowSubjectInput",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.subject_input_always_show")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(u,{id:"subjectLineBehavior",path:"subjectLineBehavior",options:e.subjectLineOptions,expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.subject_line_behavior")),1)]})),_:1},8,["options"])]),e.postFormats.length>0?((0,l.wg)(),(0,l.iD)("li",Lo,[(0,l.Wm)(u,{id:"postContentType",path:"postContentType",options:e.postContentOptions},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.post_status_content_type")),1)]})),_:1},8,["options"])])):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l.Wm)(i,{path:"minimalScopesMode",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.minimal_scopes_mode")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"alwaysShowNewPostButton",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.always_show_post_button")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"autohideFloatingPostButton",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.autohide_floating_post_button")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"padEmoji",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.pad_emoji")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"autocompleteSelect",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.autocomplete_select_first")),1)]})),_:1})])])])):(0,l.kq)("",!0)],8,oo)}]]);var Yo=["label"],Ko={class:"setting-item"},Go={class:"setting-list"},Jo={class:"option-list"},Qo=["href"],Xo={class:"option-list"},ea=["href"];const ta={data:function(){var e=this.$store.state.instance;return{backendVersion:e.backendVersion,frontendVersion:e.frontendVersion}},computed:{frontendVersionLink:function(){return"https://git.pleroma.social/pleroma/pleroma-fe/commit/"+this.frontendVersion},backendVersionLink:function(){return"https://git.pleroma.social/pleroma/pleroma/commit/"+((e=this.backendVersion.match(/-g(\w+)/i))?e[1]:"");var e}}},na=(0,E.Z)(ta,[["render",function(e,t,n,o,a,s){return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.version.title")},[(0,l._)("div",Ko,[(0,l._)("ul",Go,[(0,l._)("li",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.version.backend_version")),1),(0,l._)("ul",Jo,[(0,l._)("li",null,[(0,l._)("a",{href:e.backendVersionLink,target:"_blank"},(0,f.zw)(e.backendVersion),9,Qo)])])]),(0,l._)("li",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.version.frontend_version")),1),(0,l._)("ul",Xo,[(0,l._)("li",null,[(0,l._)("a",{href:e.frontendVersionLink,target:"_blank"},(0,f.zw)(e.frontendVersion),9,ea)])])])])])],8,Yo)}]]);var la={class:"theme-tab"},oa={class:"presets-container"},aa={class:"save-load"},sa={key:0,class:"theme-warning"},ra={class:"alert warning"},ia={class:"buttons"},ua={class:"top"},ca={class:"presets"},da={for:"preset-switcher",class:"select"},pa=["value"],ma={class:"export-import"},fa={class:"save-load-options"},ha={class:"keep-option"},ga={class:"keep-option"},ba={class:"keep-option"},wa={class:"keep-option"},_a={class:"keep-option"},ka=["label"],va={class:"tab-header"},ya={class:"tab-header-buttons"},$a={class:"color-item"},Ca={class:"color-item"},Va={class:"color-item"},Ta={class:"color-item"},Ua=["label"],xa={class:"tab-header"},La={class:"color-item"},Oa={class:"color-item"},Wa={class:"color-item"},za={class:"color-item"},Pa={class:"color-item"},Da={class:"color-item"},Sa={class:"color-item"},ja={class:"color-item"},Ia={class:"color-item"},Ba={class:"color-item"},Aa={class:"color-item"},Ea={class:"color-item"},Fa={class:"color-item"},qa={class:"color-item"},Za={class:"color-item"},Ma={class:"color-item"},Ra={class:"color-item"},Na={class:"color-item"},Ha=["label"],Ya={class:"tab-header"},Ka=["label"],Ga={class:"tab-header shadow-selector"},Ja={class:"select-container"},Qa=["value"],Xa={class:"override"},es={for:"override",class:"label"},ts=(0,l._)("label",{class:"checkbox-label",for:"override"},null,-1),ns={key:0},ls=(0,l._)("code",null,"filter: drop-shadow()",-1),os=(0,l._)("code",null,"drop-shadow",-1),as=(0,l._)("code",null,"spread-radius",-1),ss=(0,l._)("code",null,"inset",-1),rs=(0,l._)("code",null,"box-shadow",-1),is=["label"],us={class:"tab-header"},cs={class:"apply-container"},ds=["disabled"],ps=n(29439),ms=n(21865),fs=n(77394),hs=n(25771),gs=n(44551),bs=n(40454),ws=["for"],_s={class:"input color-input-field"},ks=["id","value","disabled"],vs=["id","value","disabled"],ys={key:1,class:"transparentIndicator"};const $s={components:{Checkbox:N.Z},props:{name:{required:!0,type:String},label:{required:!0,type:String},modelValue:{required:!1,type:String,default:void 0},fallback:{required:!1,type:String,default:void 0},disabled:{required:!1,type:Boolean,default:!1},showOptionalTickbox:{required:!1,type:Boolean,default:!0}},emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue},validColor:function(){return(0,ms.wK)(this.modelValue||this.fallback)},transparentColor:function(){return"transparent"===this.modelValue},computedColor:function(){return this.modelValue&&this.modelValue.startsWith("--")}}},Cs=(0,E.Z)($s,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("Checkbox");return(0,l.wg)(),(0,l.iD)("div",{class:(0,f.C_)(["color-input style-control",{disabled:!s.present||n.disabled}])},[(0,l._)("label",{for:n.name,class:"label"},(0,f.zw)(n.label),9,ws),void 0!==n.fallback&&n.showOptionalTickbox?((0,l.wg)(),(0,l.j4)(r,{key:0,"model-value":s.present,disabled:n.disabled,class:"opt","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.$emit("update:modelValue",void 0===n.modelValue?n.fallback:void 0)})},null,8,["model-value","disabled"])):(0,l.kq)("",!0),(0,l._)("div",_s,[(0,l._)("input",{id:n.name+"-t",class:"textColor unstyled",type:"text",value:n.modelValue||n.fallback,disabled:!s.present||n.disabled,onInput:t[1]||(t[1]=function(t){return e.$emit("update:modelValue",t.target.value)})},null,40,ks),s.validColor?((0,l.wg)(),(0,l.iD)("input",{key:0,id:n.name,class:"nativeColor unstyled",type:"color",value:n.modelValue||n.fallback,disabled:!s.present||n.disabled,onInput:t[2]||(t[2]=function(t){return e.$emit("update:modelValue",t.target.value)})},null,40,vs)):(0,l.kq)("",!0),s.transparentColor?((0,l.wg)(),(0,l.iD)("div",ys)):(0,l.kq)("",!0),s.computedColor?((0,l.wg)(),(0,l.iD)("div",{key:2,class:"computedIndicator",style:(0,f.j5)({backgroundColor:n.fallback})},null,4)):(0,l.kq)("",!0)])],2)}]]);var Vs=["id","for"],Ts=["id","aria-labelledby","checked"],Us=["for"],xs=["id","value","disabled","max","min","step"],Ls=["id","aria-labelledby","value","disabled","max","min","step"];const Os={props:["name","modelValue","fallback","disabled","label","max","min","step","hardMin","hardMax"],emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue}}},Ws=(0,E.Z)(Os,[["render",function(e,t,n,o,a,s){return(0,l.wg)(),(0,l.iD)("div",{class:(0,f.C_)(["range-control style-control",{disabled:!s.present||n.disabled}])},[(0,l._)("label",{id:n.name+"-label",for:n.name,class:"label"},(0,f.zw)(n.label),9,Vs),void 0!==n.fallback?((0,l.wg)(),(0,l.iD)("input",{key:0,id:n.name+"-o","aria-labelledby":n.name+"-label",class:"opt visible-for-screenreader-only",type:"checkbox",checked:s.present,onChange:t[0]||(t[0]=function(t){return e.$emit("update:modelValue",s.present?void 0:n.fallback)})},null,40,Ts)):(0,l.kq)("",!0),void 0!==n.fallback?((0,l.wg)(),(0,l.iD)("label",{key:1,class:"opt-l",for:n.name+"-o","aria-hidden":!0},null,8,Us)):(0,l.kq)("",!0),(0,l._)("input",{id:n.name,class:"input-number",type:"range",value:n.modelValue||n.fallback,disabled:!s.present||n.disabled,max:n.max||n.hardMax||100,min:n.min||n.hardMin||0,step:n.step||1,onInput:t[1]||(t[1]=function(t){return e.$emit("update:modelValue",t.target.value)})},null,40,xs),(0,l._)("input",{id:n.name+"-numeric",class:"input-number",type:"number","aria-labelledby":n.name+"-label",value:n.modelValue||n.fallback,disabled:!s.present||n.disabled,max:n.hardMax,min:n.hardMin,step:n.step||1,onInput:t[2]||(t[2]=function(t){return e.$emit("update:modelValue",t.target.value)})},null,40,Ls)],2)}]]);var zs=["for"],Ps=["id","value","disabled"];const Ds={components:{Checkbox:N.Z},props:["name","modelValue","fallback","disabled"],emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue}}},Ss=(0,E.Z)(Ds,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("Checkbox");return(0,l.wg)(),(0,l.iD)("div",{class:(0,f.C_)(["opacity-control style-control",{disabled:!s.present||n.disabled}])},[(0,l._)("label",{for:n.name,class:"label"},(0,f.zw)(e.$t("settings.style.common.opacity")),9,zs),void 0!==n.fallback?((0,l.wg)(),(0,l.j4)(r,{key:0,"model-value":s.present,disabled:n.disabled,class:"opt","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.$emit("update:modelValue",s.present?void 0:n.fallback)})},null,8,["model-value","disabled"])):(0,l.kq)("",!0),(0,l._)("input",{id:n.name,class:"input-number",type:"number",value:n.modelValue||n.fallback,disabled:!s.present||n.disabled,max:"1",min:"0",step:".05",onInput:t[1]||(t[1]=function(t){return e.$emit("update:modelValue",t.target.value)})},null,40,Ps)],2)}]]);var js={class:"shadow-preview-container"},Is=["disabled"],Bs=["disabled"],As={class:"wrap"},Es=["disabled"],Fs={class:"preview-window"},qs=["disabled"],Zs=["disabled"],Ms={class:"wrap"},Rs=["disabled"],Ns={class:"shadow-tweak"},Hs=["disabled"],Ys=["value"],Ks=["disabled"],Gs=["disabled"],Js=["disabled"],Qs=["disabled"],Xs=["disabled"],er={for:"inset",class:"label"},tr=["disabled"],nr=(0,l._)("label",{class:"checkbox-label",for:"inset","aria-hidden":!0},null,-1),lr=["disabled"],or={for:"spread",class:"label"},ar=["disabled"],sr=["disabled"],rr=["disabled"],ir={for:"spread",class:"label"},ur=["disabled"],cr=["disabled"],dr=(0,l._)("code",null,"--variable,mod",-1);function pr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function mr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?pr(Object(n),!0).forEach((function(t){(0,P.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):pr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}I.vI.add(B.ptq,B.mTx,B.NBC,B.r8p);var fr=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return mr({x:0,y:0,blur:0,spread:0,inset:!1,color:"#000000",alpha:1},e)};const hr={props:["modelValue","fallback","ready"],emits:["update:modelValue"],data:function(){return{selectedId:0,cValue:(this.modelValue||this.fallback||[]).map(fr)}},components:{ColorInput:Cs,OpacityInput:Ss,Select:jo.Z},methods:{add:function(){this.cValue.push(fr(this.selected)),this.selectedId=this.cValue.length-1},del:function(){this.cValue.splice(this.selectedId,1),this.selectedId=0===this.cValue.length?void 0:Math.max(this.selectedId-1,0)},moveUp:function(){var e=this.cValue.splice(this.selectedId,1)[0];this.cValue.splice(this.selectedId-1,0,e),this.selectedId-=1},moveDn:function(){var e=this.cValue.splice(this.selectedId,1)[0];this.cValue.splice(this.selectedId+1,0,e),this.selectedId+=1}},beforeUpdate:function(){this.cValue=this.modelValue||this.fallback},computed:{anyShadows:function(){return this.cValue.length>0},anyShadowsFallback:function(){return this.fallback.length>0},selected:function(){return this.ready&&this.anyShadows?this.cValue[this.selectedId]:fr({})},currentFallback:function(){return this.ready&&this.anyShadowsFallback?this.fallback[this.selectedId]:fr({})},moveUpValid:function(){return this.ready&&this.selectedId>0},moveDnValid:function(){return this.ready&&this.selectedId<this.cValue.length-1},present:function(){return this.ready&&void 0!==this.cValue[this.selectedId]&&!this.usingFallback},usingFallback:function(){return void 0===this.modelValue},rgb:function(){return(0,ms.wK)(this.selected.color)},style:function(){return this.ready?{boxShadow:(0,fs.Ot)(this.fallback)}:{}}}},gr=(0,E.Z)(hr,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("Select"),i=(0,l.up)("FAIcon"),u=(0,l.up)("ColorInput"),c=(0,l.up)("OpacityInput"),d=(0,l.up)("i18n-t");return(0,l.wg)(),(0,l.iD)("div",{class:(0,f.C_)(["shadow-control",{disabled:!e.present}])},[(0,l._)("div",js,[(0,l._)("div",{disabled:!e.present,class:"y-shift-control"},[(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.selected.y=t}),disabled:!e.present,class:"input-number",type:"number"},null,8,Bs),[[me.nr,e.selected.y]]),(0,l._)("div",As,[(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.selected.y=t}),disabled:!e.present,class:"input-range",type:"range",max:"20",min:"-20"},null,8,Es),[[me.nr,e.selected.y]])])],8,Is),(0,l._)("div",Fs,[(0,l._)("div",{class:"preview-block",style:(0,f.j5)(e.style)},null,4)]),(0,l._)("div",{disabled:!e.present,class:"x-shift-control"},[(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.selected.x=t}),disabled:!e.present,class:"input-number",type:"number"},null,8,Zs),[[me.nr,e.selected.x]]),(0,l._)("div",Ms,[(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.selected.x=t}),disabled:!e.present,class:"input-range",type:"range",max:"20",min:"-20"},null,8,Rs),[[me.nr,e.selected.x]])])],8,qs)]),(0,l._)("div",Ns,[(0,l._)("div",{disabled:e.usingFallback,class:"id-control style-control"},[(0,l.Wm)(r,{id:"shadow-switcher",modelValue:e.selectedId,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.selectedId=t}),class:"shadow-switcher",disabled:!e.ready||e.usingFallback},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.cValue,(function(t,n){return(0,l.wg)(),(0,l.iD)("option",{key:n,value:n},(0,f.zw)(e.$t("settings.style.shadows.shadow_id",{value:n})),9,Ys)})),128))]})),_:1},8,["modelValue","disabled"]),(0,l._)("button",{class:"btn button-default",disabled:!e.ready||!e.present,onClick:t[5]||(t[5]=function(){return e.del&&e.del.apply(e,arguments)})},[(0,l.Wm)(i,{"fixed-width":"",icon:"times"})],8,Ks),(0,l._)("button",{class:"btn button-default",disabled:!e.moveUpValid,onClick:t[6]||(t[6]=function(){return e.moveUp&&e.moveUp.apply(e,arguments)})},[(0,l.Wm)(i,{"fixed-width":"",icon:"chevron-up"})],8,Gs),(0,l._)("button",{class:"btn button-default",disabled:!e.moveDnValid,onClick:t[7]||(t[7]=function(){return e.moveDn&&e.moveDn.apply(e,arguments)})},[(0,l.Wm)(i,{"fixed-width":"",icon:"chevron-down"})],8,Js),(0,l._)("button",{class:"btn button-default",disabled:e.usingFallback,onClick:t[8]||(t[8]=function(){return e.add&&e.add.apply(e,arguments)})},[(0,l.Wm)(i,{"fixed-width":"",icon:"plus"})],8,Qs)],8,Hs),(0,l._)("div",{disabled:!e.present,class:"inset-control style-control"},[(0,l._)("label",er,(0,f.zw)(e.$t("settings.style.shadows.inset")),1),(0,l.wy)((0,l._)("input",{id:"inset","onUpdate:modelValue":t[9]||(t[9]=function(t){return e.selected.inset=t}),disabled:!e.present,name:"inset",class:"input-inset visible-for-screenreader-only",type:"checkbox"},null,8,tr),[[me.e8,e.selected.inset]]),nr],8,Xs),(0,l._)("div",{disabled:!e.present,class:"blur-control style-control"},[(0,l._)("label",or,(0,f.zw)(e.$t("settings.style.shadows.blur")),1),(0,l.wy)((0,l._)("input",{id:"blur","onUpdate:modelValue":t[10]||(t[10]=function(t){return e.selected.blur=t}),disabled:!e.present,name:"blur",class:"input-range",type:"range",max:"20",min:"0"},null,8,ar),[[me.nr,e.selected.blur]]),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.selected.blur=t}),disabled:!e.present,class:"input-number",type:"number",min:"0"},null,8,sr),[[me.nr,e.selected.blur]])],8,lr),(0,l._)("div",{disabled:!e.present,class:"spread-control style-control"},[(0,l._)("label",ir,(0,f.zw)(e.$t("settings.style.shadows.spread")),1),(0,l.wy)((0,l._)("input",{id:"spread","onUpdate:modelValue":t[12]||(t[12]=function(t){return e.selected.spread=t}),disabled:!e.present,name:"spread",class:"input-range",type:"range",max:"20",min:"-20"},null,8,ur),[[me.nr,e.selected.spread]]),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.selected.spread=t}),disabled:!e.present,class:"input-number",type:"number"},null,8,cr),[[me.nr,e.selected.spread]])],8,rr),(0,l.Wm)(u,{modelValue:e.selected.color,"onUpdate:modelValue":t[14]||(t[14]=function(t){return e.selected.color=t}),disabled:!e.present,label:e.$t("settings.style.common.color"),fallback:e.currentFallback.color,"show-optional-tickbox":!1,name:"shadow"},null,8,["modelValue","disabled","label","fallback"]),(0,l.Wm)(c,{modelValue:e.selected.alpha,"onUpdate:modelValue":t[15]||(t[15]=function(t){return e.selected.alpha=t}),disabled:!e.present},null,8,["modelValue","disabled"]),(0,l.Wm)(d,{scope:"global",keypath:"settings.style.shadows.hintV3",tag:"p"},{default:(0,l.w5)((function(){return[dr]})),_:1})])],2)}]]);var br=["id","for"],wr=["id","aria-labelledby","checked"],_r=["for"],kr=["value"],vr=["id"],yr=n(36968),$r=n.n(yr);const Cr={components:{Select:jo.Z},props:["name","label","modelValue","fallback","options","no-inherit"],emits:["update:modelValue"],data:function(){return{lValue:this.modelValue,availableOptions:[this.noInherit?"":"inherit","custom"].concat((0,qe.Z)(this.options||[]),["serif","monospace","sans-serif"]).filter((function(e){return e}))}},beforeUpdate:function(){this.lValue=this.modelValue},computed:{present:function(){return void 0!==this.lValue},dValue:function(){return this.lValue||this.fallback||{}},family:{get:function(){return this.dValue.family},set:function(e){$r()(this.lValue,"family",e),this.$emit("update:modelValue",this.lValue)}},isCustom:function(){return"custom"===this.preset},preset:{get:function(){return"serif"===this.family||"sans-serif"===this.family||"monospace"===this.family||"inherit"===this.family?this.family:"custom"},set:function(e){this.family="custom"===e?"":e}}}},Vr=(0,E.Z)(Cr,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("Select");return(0,l.wg)(),(0,l.iD)("div",{class:(0,f.C_)(["font-control style-control",{custom:e.isCustom}])},[(0,l._)("label",{id:e.name+"-label",for:"custom"===e.preset?e.name:e.name+"-font-switcher",class:"label"},(0,f.zw)(e.label),9,br),void 0!==e.fallback?((0,l.wg)(),(0,l.iD)("input",{key:0,id:e.name+"-o","aria-labelledby":e.name+"-label",class:"opt exlcude-disabled visible-for-screenreader-only",type:"checkbox",checked:e.present,onChange:t[0]||(t[0]=function(t){return e.$emit("update:modelValue",void 0===e.modelValue?e.fallback:void 0)})},null,40,wr)):(0,l.kq)("",!0),void 0!==e.fallback?((0,l.wg)(),(0,l.iD)("label",{key:1,class:"opt-l",for:e.name+"-o","aria-hidden":!0},null,8,_r)):(0,l.kq)("",!0),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l.Wm)(r,{id:e.name+"-font-switcher",modelValue:e.preset,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.preset=t}),disabled:!e.present,class:"font-switcher"},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.availableOptions,(function(t){return(0,l.wg)(),(0,l.iD)("option",{key:t,value:t},(0,f.zw)("custom"===t?e.$t("settings.style.fonts.custom"):t),9,kr)})),128))]})),_:1},8,["id","modelValue","disabled"]),e.isCustom?(0,l.wy)(((0,l.wg)(),(0,l.iD)("input",{key:2,id:e.name,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.family=t}),class:"custom-font",type:"text"},null,8,vr)),[[me.nr,e.family]]):(0,l.kq)("",!0)],2)}]]);var Tr={key:0,class:"contrast-ratio"},Ur=["title"],xr={key:0},Lr={key:1},Or={key:2},Wr=["title"],zr={key:0},Pr={key:1},Dr={key:2};I.vI.add(B.OwZ,B.eHv,B.u8Q);const Sr={props:{large:{required:!1,type:Boolean,default:!1},contrast:{required:!1,type:Object,default:function(){return{}}}},computed:{hint:function(){var e=this.contrast.aaa?"aaa":this.contrast.aa?"aa":"bad",t=this.$t("settings.style.common.contrast.level.".concat(e)),n=this.$t("settings.style.common.contrast.context.text"),l=this.contrast.text;return this.$t("settings.style.common.contrast.hint",{level:t,context:n,ratio:l})},hint_18pt:function(){var e=this.contrast.laaa?"aaa":this.contrast.laa?"aa":"bad",t=this.$t("settings.style.common.contrast.level.".concat(e)),n=this.$t("settings.style.common.contrast.context.18pt"),l=this.contrast.text;return this.$t("settings.style.common.contrast.hint",{level:t,context:n,ratio:l})}}},jr=(0,E.Z)(Sr,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("FAIcon");return n.contrast?((0,l.wg)(),(0,l.iD)("span",Tr,[(0,l._)("span",{title:s.hint,class:"rating"},[n.contrast.aaa?((0,l.wg)(),(0,l.iD)("span",xr,[(0,l.Wm)(r,{icon:"thumbs-up"})])):(0,l.kq)("",!0),!n.contrast.aaa&&n.contrast.aa?((0,l.wg)(),(0,l.iD)("span",Lr,[(0,l.Wm)(r,{icon:"adjust"})])):(0,l.kq)("",!0),n.contrast.aaa||n.contrast.aa?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("span",Or,[(0,l.Wm)(r,{icon:"exclamation-triangle"})]))],8,Ur),n.contrast&&n.large?((0,l.wg)(),(0,l.iD)("span",{key:0,class:"rating",title:s.hint_18pt},[n.contrast.laaa?((0,l.wg)(),(0,l.iD)("span",zr,[(0,l.Wm)(r,{icon:"thumbs-up"})])):(0,l.kq)("",!0),!n.contrast.laaa&&n.contrast.laa?((0,l.wg)(),(0,l.iD)("span",Pr,[(0,l.Wm)(r,{icon:"adjust"})])):(0,l.kq)("",!0),n.contrast.laaa||n.contrast.laa?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("span",Dr,[(0,l.Wm)(r,{icon:"exclamation-triangle"})]))],8,Wr)):(0,l.kq)("",!0)])):(0,l.kq)("",!0)}]]);var Ir={class:"preview-container"},Br=(0,l._)("div",{class:"underlay underlay-preview"},null,-1),Ar={class:"panel dummy"},Er={class:"panel-heading"},Fr={class:"title"},qr=(0,l._)("span",{class:"badge badge-notification"}," 99 ",-1),Zr={class:"faint"},Mr={class:"alert error"},Rr={class:"btn button-default"},Nr={class:"panel-body theme-preview-content"},Hr={class:"post"},Yr=(0,l._)("div",{class:"avatar still-image"}," ( ͡° ͜ʖ ͡°) ",-1),Kr={class:"content"},Gr={style:{"font-family":"var(--postCodeFont)"}},Jr={style:{color:"var(--link)"}},Qr={class:"icons"},Xr={class:"after-post"},ei=(0,l._)("div",{class:"avatar-alt"}," :^) ",-1),ti={class:"content"},ni={style:{color:"var(--faintLink)"}},li=(0,l._)("div",{class:"separator"},null,-1),oi={class:"alert error"},ai=["value"],si={class:"actions"},ri={class:"checkbox"},ii=(0,l._)("input",{id:"preview_checkbox",checked:"very yes",type:"checkbox"},null,-1),ui={for:"preview_checkbox"},ci={class:"btn button-default"};I.vI.add(B.NBC,B.Tab,B.x5v,B.Lh7);const di={},pi=(0,E.Z)(di,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("i18n-t"),i=(0,l.up)("FAIcon");return(0,l.wg)(),(0,l.iD)("div",Ir,[Br,(0,l._)("div",Ar,[(0,l._)("div",Er,[(0,l._)("div",Fr,[(0,l.Uk)((0,f.zw)(e.$t("settings.style.preview.header"))+" ",1),qr]),(0,l._)("span",Zr,(0,f.zw)(e.$t("settings.style.preview.header_faint")),1),(0,l._)("span",Mr,(0,f.zw)(e.$t("settings.style.preview.error")),1),(0,l._)("button",Rr,(0,f.zw)(e.$t("settings.style.preview.button")),1)]),(0,l._)("div",Nr,[(0,l._)("div",Hr,[Yr,(0,l._)("div",Kr,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.preview.content")),1),(0,l.Wm)(r,{scope:"global",keypath:"settings.style.preview.text"},{default:(0,l.w5)((function(){return[(0,l._)("code",Gr,(0,f.zw)(e.$t("settings.style.preview.mono")),1),(0,l._)("a",Jr,(0,f.zw)(e.$t("settings.style.preview.link")),1)]})),_:1}),(0,l._)("div",Qr,[(0,l.Wm)(i,{"fixed-width":"",style:{color:"var(--cBlue)"},class:"fa-scale-110 fa-old-padding",icon:"reply"}),(0,l.Wm)(i,{"fixed-width":"",style:{color:"var(--cGreen)"},class:"fa-scale-110 fa-old-padding",icon:"retweet"}),(0,l.Wm)(i,{"fixed-width":"",style:{color:"var(--cOrange)"},class:"fa-scale-110 fa-old-padding",icon:"star"}),(0,l.Wm)(i,{"fixed-width":"",style:{color:"var(--cRed)"},class:"fa-scale-110 fa-old-padding",icon:"times"})])])]),(0,l._)("div",Xr,[ei,(0,l._)("div",ti,[(0,l.Wm)(r,{keypath:"settings.style.preview.fine_print",tag:"span",class:"faint",scope:"global"},{default:(0,l.w5)((function(){return[(0,l._)("a",ni,(0,f.zw)(e.$t("settings.style.preview.faint_link")),1)]})),_:1})])]),li,(0,l._)("span",oi,(0,f.zw)(e.$t("settings.style.preview.error")),1),(0,l._)("input",{value:e.$t("settings.style.preview.input"),type:"text"},null,8,ai),(0,l._)("div",si,[(0,l._)("span",ri,[ii,(0,l._)("label",ui,(0,f.zw)(e.$t("settings.style.preview.checkbox")),1)]),(0,l._)("button",ci,(0,f.zw)(e.$t("settings.style.preview.button")),1)])])])])}]]);function mi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function fi(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mi(Object(n),!0).forEach((function(t){(0,P.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mi(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var hi=["bg","fg","text","link","cRed","cGreen","cBlue","cOrange"].map((function(e){return e+"ColorLocal"}));const gi={data:function(){var e=this;return fi(fi(fi({themeImporter:(0,hs.i)({validator:this.importValidator,onImport:this.onImport,onImportFailure:this.onImportFailure}),themeExporter:(0,hs.M)({filename:"pleroma_theme",getExportedObject:function(){return e.exportedTheme}}),availableStyles:[],selected:"",selectedTheme:this.$store.getters.mergedConfig.theme,themeWarning:void 0,tempImportFile:void 0,engineVersion:0,previewShadows:{},previewColors:{},previewRadii:{},previewFonts:{},shadowsInvalid:!0,colorsInvalid:!0,radiiInvalid:!0,keepColor:!1,keepShadows:!1,keepOpacity:!1,keepRoundness:!1,keepFonts:!1},Object.keys(gs.em).map((function(e){return[e,""]})).reduce((function(e,t){var n=(0,ps.Z)(t,2),l=n[0],o=n[1];return fi(fi({},e),{},(0,P.Z)({},l+"ColorLocal",o))}),{})),Object.keys(bs.AQ).map((function(e){return[e,""]})).reduce((function(e,t){var n=(0,ps.Z)(t,2),l=n[0],o=n[1];return fi(fi({},e),{},(0,P.Z)({},l+"OpacityLocal",o))}),{})),{},{shadowSelected:void 0,shadowsLocal:{},fontsLocal:{},btnRadiusLocal:"",inputRadiusLocal:"",checkboxRadiusLocal:"",panelRadiusLocal:"",avatarRadiusLocal:"",avatarAltRadiusLocal:"",attachmentRadiusLocal:"",tooltipRadiusLocal:"",chatMessageRadiusLocal:""})},created:function(){var e=this;(0,fs.RC)().then((function(e){return Promise.all(Object.entries(e).map((function(e){var t=(0,ps.Z)(e,2),n=t[0];return t[1].then((function(e){return[n,e]}))})))})).then((function(e){return e.reduce((function(e,t){var n=(0,ps.Z)(t,2),l=n[0],o=n[1];return o?fi(fi({},e),{},(0,P.Z)({},l,o)):e}),{})})).then((function(t){e.availableStyles=t}))},mounted:function(){this.loadThemeFromLocalStorage(),void 0===this.shadowSelected&&(this.shadowSelected=this.shadowsAvailable[0])},computed:{themeWarningHelp:function(){if(this.themeWarning){var e=this.$t,t="settings.style.switcher.help.",n=this.themeWarning,l=n.origin,o=n.themeEngineVersion,a=n.type,s=n.noActionsPossible;if("file"===l){if(2===o&&"wrong_version"===a)return e(t+"v2_imported");if(o>bs.we)return e(t+"future_version_imported")+" "+e(s?t+"snapshot_missing":t+"snapshot_present");if(o<bs.we)return e(t+"future_version_imported")+" "+e(s?t+"snapshot_missing":t+"snapshot_present")}else if("localStorage"===l){if("snapshot_source_mismatch"===a)return e(t+"snapshot_source_mismatch");if(2===o)return e(t+"upgraded_from_v2");if(o>bs.we)return e(t+"fe_downgraded")+" "+e(s?t+"migration_snapshot_ok":t+"migration_snapshot_gone");if(o<bs.we)return e(t+"fe_upgraded")+" "+e(s?t+"migration_snapshot_ok":t+"migration_snapshot_gone")}}},selectedVersion:function(){return Array.isArray(this.selectedTheme)?1:2},currentColors:function(){var e=this;return Object.keys(gs.em).map((function(t){return[t,e[t+"ColorLocal"]]})).reduce((function(e,t){var n=(0,ps.Z)(t,2),l=n[0],o=n[1];return fi(fi({},e),{},(0,P.Z)({},l,o))}),{})},currentOpacity:function(){var e=this;return Object.keys(bs.AQ).map((function(t){return[t,e[t+"OpacityLocal"]]})).reduce((function(e,t){var n=(0,ps.Z)(t,2),l=n[0],o=n[1];return fi(fi({},e),{},(0,P.Z)({},l,o))}),{})},currentRadii:function(){return{btn:this.btnRadiusLocal,input:this.inputRadiusLocal,checkbox:this.checkboxRadiusLocal,panel:this.panelRadiusLocal,avatar:this.avatarRadiusLocal,avatarAlt:this.avatarAltRadiusLocal,tooltip:this.tooltipRadiusLocal,attachment:this.attachmentRadiusLocal,chatMessage:this.chatMessageRadiusLocal}},preview:function(){return(0,fs.gm)(this.previewColors,this.previewRadii,this.previewShadows,this.previewFonts)},previewTheme:function(){return this.preview.theme.colors?this.preview.theme:{colors:{},opacity:{},radii:{},shadows:{},fonts:{}}},previewContrast:function(){try{if(!this.previewTheme.colors.bg)return{};var e=this.previewTheme.colors,t=this.previewTheme.opacity;if(!e.bg)return{};var n=Object.entries(e).reduce((function(e,t){var n,l=(0,ps.Z)(t,2),o=l[0],a=l[1];return fi(fi({},e),{},(0,P.Z)({},o,(n=a).startsWith("--")||"transparent"===n?n:(0,ms.wK)(n)))}),{}),l=Object.entries(gs.em).reduce((function(e,l){var o=(0,ps.Z)(l,2),a=o[0],s=o[1],r="text"===a||"link"===a;if(!(r||"object"===(0,ql.Z)(s)&&null!==s&&s.textColor))return e;var i=r?{layer:"bg"}:s,u=i.layer,c=i.variant,d=c||u,p=(0,bs.AV)(d),m=[a].concat((0,qe.Z)("bg"===d?["cRed","cGreen","cBlue","cOrange"]:[])),f=(0,bs.xb)(u,c||u,p,n,t);return f.flat().some((function(e){return null==e}))?e:fi(fi({},e),m.reduce((function(e,t){var l=r?"bg"+t[0].toUpperCase()+t.slice(1):t;return fi(fi({},e),{},(0,P.Z)({},l,(0,ms.aj)(n[t],f,n[t])))}),{}))}),{});return Object.entries(l).reduce((function(e,t){var n,l=(0,ps.Z)(t,2),o=l[0],a=l[1];return e[o]={text:(n=a).toPrecision(3)+":1",aa:n>=4.5,aaa:n>=7,laa:n>=3,laaa:n>=4.5},e}),{})}catch(e){return console.warn("Failure computing contrasts",e),{}}},previewRules:function(){return this.preview.rules?[].concat((0,qe.Z)(Object.values(this.preview.rules)),["color: var(--text)","font-family: var(--interfaceFont, sans-serif)"]).join(";"):""},shadowsAvailable:function(){return Object.keys(fs.vp).sort()},currentShadowOverriden:{get:function(){return!!this.currentShadow},set:function(e){e?this.shadowsLocal[this.shadowSelected]=this.currentShadowFallback.map((function(e){return Object.assign({},e)})):delete this.shadowsLocal[this.shadowSelected]}},currentShadowFallback:function(){return(this.previewTheme.shadows||{})[this.shadowSelected]},currentShadow:{get:function(){return this.shadowsLocal[this.shadowSelected]},set:function(e){this.shadowsLocal[this.shadowSelected]=e}},themeValid:function(){return!this.shadowsInvalid&&!this.colorsInvalid&&!this.radiiInvalid},exportedTheme:function(){var e=!(this.keepFonts||this.keepShadows||this.keepOpacity||this.keepRoundness||this.keepColor),t={themeEngineVersion:bs.we};return(this.keepFonts||e)&&(t.fonts=this.fontsLocal),(this.keepShadows||e)&&(t.shadows=this.shadowsLocal),(this.keepOpacity||e)&&(t.opacity=this.currentOpacity),(this.keepColor||e)&&(t.colors=this.currentColors),(this.keepRoundness||e)&&(t.radii=this.currentRadii),{_pleroma_theme_version:2,theme:fi({themeEngineVersion:bs.we},this.previewTheme),source:t}},isActive:function(){var e=this.$parent;return!!e&&e.isActive("theme")}},components:{ColorInput:Cs,OpacityInput:Ss,RangeInput:Ws,ContrastRatio:jr,ShadowControl:gr,FontControl:Vr,TabSwitcher:m.Z,Preview:pi,Checkbox:N.Z,Select:jo.Z},methods:{loadTheme:function(e,t){var n=e.theme,l=e.source,o=e._pleroma_theme_version,a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.dismissWarning(),!l&&!n)throw new Error("Can't load theme: empty");var s="localStorage"!==t||n.colors?o:"l1",r=(n||{}).themeEngineVersion,i=(l||{}).themeEngineVersion||2,u=i===bs.we,c=void 0!==n&&void 0!==l&&i!==r,d=l&&a||!n;u&&!c||d||"l1"===s||"defaults"===t||(c&&"localStorage"===t?this.themeWarning={origin:t,themeEngineVersion:i,type:"snapshot_source_mismatch"}:n?u||(this.themeWarning={origin:t,noActionsPossible:!l,themeEngineVersion:i,type:"wrong_version"}):this.themeWarning={origin:t,noActionsPossible:!0,themeEngineVersion:i,type:"no_snapshot_old_version"}),this.normalizeLocalState(n,s,l,d)},forceLoadLocalStorage:function(){this.loadThemeFromLocalStorage(!0)},dismissWarning:function(){this.themeWarning=void 0,this.tempImportFile=void 0},forceLoad:function(){switch(this.themeWarning.origin){case"localStorage":this.loadThemeFromLocalStorage(!0);break;case"file":this.onImport(this.tempImportFile,!0)}this.dismissWarning()},forceSnapshot:function(){switch(this.themeWarning.origin){case"localStorage":this.loadThemeFromLocalStorage(!1,!0);break;case"file":console.error("Forcing snapshot from file is not supported yet")}this.dismissWarning()},loadThemeFromLocalStorage:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.$store.getters.mergedConfig,l=n.customTheme,o=n.customThemeSource;l||o?this.loadTheme({theme:l,source:t?l:o},"localStorage",e):this.loadTheme(this.$store.state.instance.themeData,"defaults",e)},setCustomTheme:function(){this.$store.dispatch("setOption",{name:"customTheme",value:fi({themeEngineVersion:bs.we},this.previewTheme)}),this.$store.dispatch("setOption",{name:"customThemeSource",value:{themeEngineVersion:bs.we,shadows:this.shadowsLocal,fonts:this.fontsLocal,opacity:this.currentOpacity,colors:this.currentColors,radii:this.currentRadii}})},updatePreviewColorsAndShadows:function(){this.previewColors=(0,fs.LP)({opacity:this.currentOpacity,colors:this.currentColors}),this.previewShadows=(0,fs.H2)({shadows:this.shadowsLocal,opacity:this.previewTheme.opacity,themeEngineVersion:this.engineVersion},this.previewColors.theme.colors,this.previewColors.mod)},importTheme:function(){this.themeImporter.importData()},exportTheme:function(){this.themeExporter.exportData()},onImport:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.tempImportFile=e,this.loadTheme(e,"file",t)},onImportFailure:function(e){this.$store.dispatch("pushGlobalNotice",{messageKey:"settings.invalid_theme_imported",level:"error"})},importValidator:function(e){var t=e._pleroma_theme_version;return t>=1||t<=2},clearAll:function(){this.loadThemeFromLocalStorage()},clearV1:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("ColorLocal")||e.endsWith("OpacityLocal")})).filter((function(e){return!hi.includes(e)})).forEach((function(t){e.$data[t]=void 0}))},clearRoundness:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("RadiusLocal")})).forEach((function(t){e.$data[t]=void 0}))},clearOpacity:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("OpacityLocal")})).forEach((function(t){e.$data[t]=void 0}))},clearShadows:function(){this.shadowsLocal={}},clearFonts:function(){this.fontsLocal={}},normalizeLocalState:function(e){var t,n=this,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=arguments.length>2?arguments[2]:void 0,a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];void 0===o||!a&&o.themeEngineVersion!==bs.we?t=e:(t=o,l=o.themeEngineVersion);var s=t.radii||t,r=t.opacity,i=t.shadows||{},u=t.fonts||{},c=t.themeEngineVersion?t.colors||t:(0,fs.dE)(t.colors||t);if(0===l&&(t.version&&(l=t.version),void 0===c.text&&void 0!==c.fg&&(l=1),void 0!==c.text&&void 0!==c.fg&&(l=2)),this.engineVersion=l,1===l&&(this.fgColorLocal=(0,ms.CO)(c.btn),this.textColorLocal=(0,ms.CO)(c.fg)),!this.keepColor){this.clearV1();var d=new Set(1!==l?Object.keys(gs.em):[]);1!==l&&"l1"!==l||d.add("bg").add("link").add("cRed").add("cBlue").add("cGreen").add("cOrange"),d.forEach((function(e){var t=c[e],l=(0,ms.CO)(c[e]);n[e+"ColorLocal"]="#aN"===l?t:l}))}r&&!this.keepOpacity&&(this.clearOpacity(),Object.entries(r).forEach((function(e){var t=(0,ps.Z)(e,2),l=t[0],o=t[1];null==o||Number.isNaN(o)||(n[l+"OpacityLocal"]=o)}))),this.keepRoundness||(this.clearRoundness(),Object.entries(s).forEach((function(e){var t=(0,ps.Z)(e,2),l=t[0],o=t[1],a=l.endsWith("Radius")?l.split("Radius")[0]:l;n[a+"RadiusLocal"]=o}))),this.keepShadows||(this.clearShadows(),this.shadowsLocal=2===l?(0,fs.l9)(i,this.previewTheme.opacity):i,this.shadowSelected=this.shadowsAvailable[0]),this.keepFonts||(this.clearFonts(),this.fontsLocal=u)}},watch:{currentRadii:function(){try{this.previewRadii=(0,fs.lD)({radii:this.currentRadii}),this.radiiInvalid=!1}catch(e){this.radiiInvalid=!0,console.warn(e)}},shadowsLocal:{handler:function(){if(1!==Object.getOwnPropertyNames(this.previewColors).length)try{this.updatePreviewColorsAndShadows(),this.shadowsInvalid=!1}catch(e){this.shadowsInvalid=!0,console.warn(e)}},deep:!0},fontsLocal:{handler:function(){try{this.previewFonts=(0,fs.m)({fonts:this.fontsLocal}),this.fontsInvalid=!1}catch(e){this.fontsInvalid=!0,console.warn(e)}},deep:!0},currentColors:function(){try{this.updatePreviewColorsAndShadows(),this.colorsInvalid=!1,this.shadowsInvalid=!1}catch(e){this.colorsInvalid=!0,this.shadowsInvalid=!0,console.warn(e)}},currentOpacity:function(){try{this.updatePreviewColorsAndShadows()}catch(e){console.warn(e)}},selected:function(){var e=this;this.selectedTheme=Object.entries(this.availableStyles).find((function(t){var n=(0,ps.Z)(t,2),l=(n[0],n[1]);return Array.isArray(l)?(console.log(l[0]===e.selected,e.selected),l[0]===e.selected):l.name===e.selected}))[1]},selectedTheme:function(){this.dismissWarning(),1===this.selectedVersion?(this.keepRoundness||this.clearRoundness(),this.keepShadows||this.clearShadows(),this.keepOpacity||this.clearOpacity(),this.keepColor||(this.clearV1(),this.bgColorLocal=this.selectedTheme[1],this.fgColorLocal=this.selectedTheme[2],this.textColorLocal=this.selectedTheme[3],this.linkColorLocal=this.selectedTheme[4],this.cRedColorLocal=this.selectedTheme[5],this.cGreenColorLocal=this.selectedTheme[6],this.cBlueColorLocal=this.selectedTheme[7],this.cOrangeColorLocal=this.selectedTheme[8])):this.selectedVersion>=2&&this.normalizeLocalState(this.selectedTheme.theme,2,this.selectedTheme.source)}}},bi=(0,E.Z)(gi,[["render",function(e,t,n,o,a,s){var r=(0,l.up)("Select"),i=(0,l.up)("Checkbox"),u=(0,l.up)("preview"),c=(0,l.up)("ColorInput"),d=(0,l.up)("OpacityInput"),p=(0,l.up)("ContrastRatio"),m=(0,l.up)("RangeInput"),h=(0,l.up)("ShadowControl"),g=(0,l.up)("i18n-t"),b=(0,l.up)("FontControl"),w=(0,l.up)("tab-switcher");return(0,l.wg)(),(0,l.iD)("div",la,[(0,l._)("div",oa,[(0,l._)("div",aa,[e.themeWarning?((0,l.wg)(),(0,l.iD)("div",sa,[(0,l._)("div",ra,(0,f.zw)(e.themeWarningHelp),1),(0,l._)("div",ia,["snapshot_source_mismatch"===e.themeWarning.type?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l._)("button",{class:"btn button-default",onClick:t[0]||(t[0]=function(){return e.forceLoad&&e.forceLoad.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.use_source")),1),(0,l._)("button",{class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.forceSnapshot&&e.forceSnapshot.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.use_snapshot")),1)],64)):e.themeWarning.noActionsPossible?((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",onClick:t[2]||(t[2]=function(){return e.dismissWarning&&e.dismissWarning.apply(e,arguments)})},(0,f.zw)(e.$t("general.dismiss")),1)):((0,l.wg)(),(0,l.iD)(l.HY,{key:2},[(0,l._)("button",{class:"btn button-default",onClick:t[3]||(t[3]=function(){return e.forceLoad&&e.forceLoad.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.load_theme")),1),(0,l._)("button",{class:"btn button-default",onClick:t[4]||(t[4]=function(){return e.dismissWarning&&e.dismissWarning.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.keep_as_is")),1)],64))])])):(0,l.kq)("",!0),(0,l._)("div",ua,[(0,l._)("div",ca,[(0,l.Uk)((0,f.zw)(e.$t("settings.presets"))+" ",1),(0,l._)("label",da,[(0,l.Wm)(r,{id:"preset-switcher",modelValue:e.selected,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.selected=t}),class:"preset-switcher"},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.availableStyles,(function(e){return(0,l.wg)(),(0,l.iD)("option",{key:e.name,value:e.name||e[0],style:(0,f.j5)({backgroundColor:e[1]||(e.theme||e.source).colors.bg,color:e[3]||(e.theme||e.source).colors.text})},(0,f.zw)(e[0]||e.name),13,pa)})),128))]})),_:1},8,["modelValue"])])]),(0,l._)("div",ma,[(0,l._)("button",{class:"btn button-default",onClick:t[6]||(t[6]=function(){return e.importTheme&&e.importTheme.apply(e,arguments)})},(0,f.zw)(e.$t("settings.import_theme")),1),(0,l._)("button",{class:"btn button-default",onClick:t[7]||(t[7]=function(){return e.exportTheme&&e.exportTheme.apply(e,arguments)})},(0,f.zw)(e.$t("settings.export_theme")),1)])])]),(0,l._)("div",fa,[(0,l._)("span",ha,[(0,l.Wm)(i,{modelValue:e.keepColor,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.keepColor=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.style.switcher.keep_color")),1)]})),_:1},8,["modelValue"])]),(0,l._)("span",ga,[(0,l.Wm)(i,{modelValue:e.keepShadows,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.keepShadows=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.style.switcher.keep_shadows")),1)]})),_:1},8,["modelValue"])]),(0,l._)("span",ba,[(0,l.Wm)(i,{modelValue:e.keepOpacity,"onUpdate:modelValue":t[10]||(t[10]=function(t){return e.keepOpacity=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.style.switcher.keep_opacity")),1)]})),_:1},8,["modelValue"])]),(0,l._)("span",wa,[(0,l.Wm)(i,{modelValue:e.keepRoundness,"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.keepRoundness=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.style.switcher.keep_roundness")),1)]})),_:1},8,["modelValue"])]),(0,l._)("span",_a,[(0,l.Wm)(i,{modelValue:e.keepFonts,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.keepFonts=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.style.switcher.keep_fonts")),1)]})),_:1},8,["modelValue"])]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.style.switcher.save_load_hint")),1)])]),(0,l.Wm)(u,{style:(0,f.j5)(e.previewRules)},null,8,["style"]),((0,l.wg)(),(0,l.j4)(l.Ob,null,[(0,l.Wm)(w,{key:"style-tweak"},{default:(0,l.w5)((function(){return[(0,l._)("div",{label:e.$t("settings.style.common_colors._tab_label"),class:"color-container"},[(0,l._)("div",va,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.theme_help")),1),(0,l._)("div",ya,[(0,l._)("button",{class:"btn button-default",onClick:t[13]||(t[13]=function(){return e.clearOpacity&&e.clearOpacity.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_opacity")),1),(0,l._)("button",{class:"btn button-default",onClick:t[14]||(t[14]=function(){return e.clearV1&&e.clearV1.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_all")),1)])]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.theme_help_v2_1")),1),(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.common_colors.main")),1),(0,l._)("div",$a,[(0,l.Wm)(c,{modelValue:e.bgColorLocal,"onUpdate:modelValue":t[15]||(t[15]=function(t){return e.bgColorLocal=t}),name:"bgColor",label:e.$t("settings.background")},null,8,["modelValue","label"]),(0,l.Wm)(d,{modelValue:e.bgOpacityLocal,"onUpdate:modelValue":t[16]||(t[16]=function(t){return e.bgOpacityLocal=t}),name:"bgOpacity",fallback:e.previewTheme.opacity.bg},null,8,["modelValue","fallback"]),(0,l.Wm)(c,{modelValue:e.textColorLocal,"onUpdate:modelValue":t[17]||(t[17]=function(t){return e.textColorLocal=t}),name:"textColor",label:e.$t("settings.text")},null,8,["modelValue","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.accentColorLocal,"onUpdate:modelValue":t[18]||(t[18]=function(t){return e.accentColorLocal=t}),name:"accentColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.accent"),"show-optional-tickbox":void 0!==e.linkColorLocal},null,8,["modelValue","fallback","label","show-optional-tickbox"]),(0,l.Wm)(c,{modelValue:e.linkColorLocal,"onUpdate:modelValue":t[19]||(t[19]=function(t){return e.linkColorLocal=t}),name:"linkColor",fallback:e.previewTheme.colors.accent,label:e.$t("settings.links"),"show-optional-tickbox":void 0!==e.accentColorLocal},null,8,["modelValue","fallback","label","show-optional-tickbox"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgLink},null,8,["contrast"])]),(0,l._)("div",Ca,[(0,l.Wm)(c,{modelValue:e.fgColorLocal,"onUpdate:modelValue":t[20]||(t[20]=function(t){return e.fgColorLocal=t}),name:"fgColor",label:e.$t("settings.foreground")},null,8,["modelValue","label"]),(0,l.Wm)(c,{modelValue:e.fgTextColorLocal,"onUpdate:modelValue":t[21]||(t[21]=function(t){return e.fgTextColorLocal=t}),name:"fgTextColor",label:e.$t("settings.text"),fallback:e.previewTheme.colors.fgText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.fgLinkColorLocal,"onUpdate:modelValue":t[22]||(t[22]=function(t){return e.fgLinkColorLocal=t}),name:"fgLinkColor",label:e.$t("settings.links"),fallback:e.previewTheme.colors.fgLink},null,8,["modelValue","label","fallback"]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.style.common_colors.foreground_hint")),1)]),(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.common_colors.rgbo")),1),(0,l._)("div",Va,[(0,l.Wm)(c,{modelValue:e.cRedColorLocal,"onUpdate:modelValue":t[23]||(t[23]=function(t){return e.cRedColorLocal=t}),name:"cRedColor",label:e.$t("settings.cRed")},null,8,["modelValue","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgCRed},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.cBlueColorLocal,"onUpdate:modelValue":t[24]||(t[24]=function(t){return e.cBlueColorLocal=t}),name:"cBlueColor",label:e.$t("settings.cBlue")},null,8,["modelValue","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgCBlue},null,8,["contrast"])]),(0,l._)("div",Ta,[(0,l.Wm)(c,{modelValue:e.cGreenColorLocal,"onUpdate:modelValue":t[25]||(t[25]=function(t){return e.cGreenColorLocal=t}),name:"cGreenColor",label:e.$t("settings.cGreen")},null,8,["modelValue","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgCGreen},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.cOrangeColorLocal,"onUpdate:modelValue":t[26]||(t[26]=function(t){return e.cOrangeColorLocal=t}),name:"cOrangeColor",label:e.$t("settings.cOrange")},null,8,["modelValue","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgCOrange},null,8,["contrast"])]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.theme_help_v2_2")),1)],8,ka),(0,l._)("div",{label:e.$t("settings.style.advanced_colors._tab_label"),class:"color-container"},[(0,l._)("div",xa,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.theme_help")),1),(0,l._)("button",{class:"btn button-default",onClick:t[27]||(t[27]=function(){return e.clearOpacity&&e.clearOpacity.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_opacity")),1),(0,l._)("button",{class:"btn button-default",onClick:t[28]||(t[28]=function(){return e.clearV1&&e.clearV1.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_all")),1)]),(0,l._)("div",La,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.post")),1),(0,l.Wm)(c,{modelValue:e.postLinkColorLocal,"onUpdate:modelValue":t[29]||(t[29]=function(t){return e.postLinkColorLocal=t}),name:"postLinkColor",fallback:e.previewTheme.colors.accent,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.postLink},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.postGreentextColorLocal,"onUpdate:modelValue":t[30]||(t[30]=function(t){return e.postGreentextColorLocal=t}),name:"postGreentextColor",fallback:e.previewTheme.colors.cGreen,label:e.$t("settings.greentext")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.postGreentext},null,8,["contrast"]),(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.alert")),1),(0,l.Wm)(c,{modelValue:e.alertErrorColorLocal,"onUpdate:modelValue":t[31]||(t[31]=function(t){return e.alertErrorColorLocal=t}),name:"alertError",label:e.$t("settings.style.advanced_colors.alert_error"),fallback:e.previewTheme.colors.alertError},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.alertErrorTextColorLocal,"onUpdate:modelValue":t[32]||(t[32]=function(t){return e.alertErrorTextColorLocal=t}),name:"alertErrorText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertErrorText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.alertErrorText,large:""},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.alertWarningColorLocal,"onUpdate:modelValue":t[33]||(t[33]=function(t){return e.alertWarningColorLocal=t}),name:"alertWarning",label:e.$t("settings.style.advanced_colors.alert_warning"),fallback:e.previewTheme.colors.alertWarning},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.alertWarningTextColorLocal,"onUpdate:modelValue":t[34]||(t[34]=function(t){return e.alertWarningTextColorLocal=t}),name:"alertWarningText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertWarningText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.alertWarningText,large:""},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.alertNeutralColorLocal,"onUpdate:modelValue":t[35]||(t[35]=function(t){return e.alertNeutralColorLocal=t}),name:"alertNeutral",label:e.$t("settings.style.advanced_colors.alert_neutral"),fallback:e.previewTheme.colors.alertNeutral},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.alertNeutralTextColorLocal,"onUpdate:modelValue":t[36]||(t[36]=function(t){return e.alertNeutralTextColorLocal=t}),name:"alertNeutralText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertNeutralText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.alertNeutralText,large:""},null,8,["contrast"]),(0,l.Wm)(d,{modelValue:e.alertOpacityLocal,"onUpdate:modelValue":t[37]||(t[37]=function(t){return e.alertOpacityLocal=t}),name:"alertOpacity",fallback:e.previewTheme.opacity.alert},null,8,["modelValue","fallback"])]),(0,l._)("div",Oa,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.badge")),1),(0,l.Wm)(c,{modelValue:e.badgeNotificationColorLocal,"onUpdate:modelValue":t[38]||(t[38]=function(t){return e.badgeNotificationColorLocal=t}),name:"badgeNotification",label:e.$t("settings.style.advanced_colors.badge_notification"),fallback:e.previewTheme.colors.badgeNotification},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.badgeNotificationTextColorLocal,"onUpdate:modelValue":t[39]||(t[39]=function(t){return e.badgeNotificationTextColorLocal=t}),name:"badgeNotificationText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.badgeNotificationText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.badgeNotificationText,large:""},null,8,["contrast"])]),(0,l._)("div",Wa,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.panel_header")),1),(0,l.Wm)(c,{modelValue:e.panelColorLocal,"onUpdate:modelValue":t[40]||(t[40]=function(t){return e.panelColorLocal=t}),name:"panelColor",fallback:e.previewTheme.colors.panel,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(d,{modelValue:e.panelOpacityLocal,"onUpdate:modelValue":t[41]||(t[41]=function(t){return e.panelOpacityLocal=t}),name:"panelOpacity",fallback:e.previewTheme.opacity.panel,disabled:"transparent"===e.panelColorLocal},null,8,["modelValue","fallback","disabled"]),(0,l.Wm)(c,{modelValue:e.panelTextColorLocal,"onUpdate:modelValue":t[42]||(t[42]=function(t){return e.panelTextColorLocal=t}),name:"panelTextColor",fallback:e.previewTheme.colors.panelText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.panelText,large:""},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.panelLinkColorLocal,"onUpdate:modelValue":t[43]||(t[43]=function(t){return e.panelLinkColorLocal=t}),name:"panelLinkColor",fallback:e.previewTheme.colors.panelLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.panelLink,large:""},null,8,["contrast"])]),(0,l._)("div",za,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.top_bar")),1),(0,l.Wm)(c,{modelValue:e.topBarColorLocal,"onUpdate:modelValue":t[44]||(t[44]=function(t){return e.topBarColorLocal=t}),name:"topBarColor",fallback:e.previewTheme.colors.topBar,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.topBarTextColorLocal,"onUpdate:modelValue":t[45]||(t[45]=function(t){return e.topBarTextColorLocal=t}),name:"topBarTextColor",fallback:e.previewTheme.colors.topBarText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.topBarText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.topBarLinkColorLocal,"onUpdate:modelValue":t[46]||(t[46]=function(t){return e.topBarLinkColorLocal=t}),name:"topBarLinkColor",fallback:e.previewTheme.colors.topBarLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.topBarLink},null,8,["contrast"])]),(0,l._)("div",Pa,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.inputs")),1),(0,l.Wm)(c,{modelValue:e.inputColorLocal,"onUpdate:modelValue":t[47]||(t[47]=function(t){return e.inputColorLocal=t}),name:"inputColor",fallback:e.previewTheme.colors.input,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(d,{modelValue:e.inputOpacityLocal,"onUpdate:modelValue":t[48]||(t[48]=function(t){return e.inputOpacityLocal=t}),name:"inputOpacity",fallback:e.previewTheme.opacity.input,disabled:"transparent"===e.inputColorLocal},null,8,["modelValue","fallback","disabled"]),(0,l.Wm)(c,{modelValue:e.inputTextColorLocal,"onUpdate:modelValue":t[49]||(t[49]=function(t){return e.inputTextColorLocal=t}),name:"inputTextColor",fallback:e.previewTheme.colors.inputText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.inputText},null,8,["contrast"])]),(0,l._)("div",Da,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.buttons")),1),(0,l.Wm)(c,{modelValue:e.btnColorLocal,"onUpdate:modelValue":t[50]||(t[50]=function(t){return e.btnColorLocal=t}),name:"btnColor",fallback:e.previewTheme.colors.btn,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(d,{modelValue:e.btnOpacityLocal,"onUpdate:modelValue":t[51]||(t[51]=function(t){return e.btnOpacityLocal=t}),name:"btnOpacity",fallback:e.previewTheme.opacity.btn,disabled:"transparent"===e.btnColorLocal},null,8,["modelValue","fallback","disabled"]),(0,l.Wm)(c,{modelValue:e.btnTextColorLocal,"onUpdate:modelValue":t[52]||(t[52]=function(t){return e.btnTextColorLocal=t}),name:"btnTextColor",fallback:e.previewTheme.colors.btnText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnPanelTextColorLocal,"onUpdate:modelValue":t[53]||(t[53]=function(t){return e.btnPanelTextColorLocal=t}),name:"btnPanelTextColor",fallback:e.previewTheme.colors.btnPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnPanelText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnTopBarTextColorLocal,"onUpdate:modelValue":t[54]||(t[54]=function(t){return e.btnTopBarTextColorLocal=t}),name:"btnTopBarTextColor",fallback:e.previewTheme.colors.btnTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnTopBarText},null,8,["contrast"]),(0,l._)("h5",null,(0,f.zw)(e.$t("settings.style.advanced_colors.pressed")),1),(0,l.Wm)(c,{modelValue:e.btnPressedColorLocal,"onUpdate:modelValue":t[55]||(t[55]=function(t){return e.btnPressedColorLocal=t}),name:"btnPressedColor",fallback:e.previewTheme.colors.btnPressed,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.btnPressedTextColorLocal,"onUpdate:modelValue":t[56]||(t[56]=function(t){return e.btnPressedTextColorLocal=t}),name:"btnPressedTextColor",fallback:e.previewTheme.colors.btnPressedText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnPressedText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnPressedPanelTextColorLocal,"onUpdate:modelValue":t[57]||(t[57]=function(t){return e.btnPressedPanelTextColorLocal=t}),name:"btnPressedPanelTextColor",fallback:e.previewTheme.colors.btnPressedPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnPressedPanelText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnPressedTopBarTextColorLocal,"onUpdate:modelValue":t[58]||(t[58]=function(t){return e.btnPressedTopBarTextColorLocal=t}),name:"btnPressedTopBarTextColor",fallback:e.previewTheme.colors.btnPressedTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnPressedTopBarText},null,8,["contrast"]),(0,l._)("h5",null,(0,f.zw)(e.$t("settings.style.advanced_colors.disabled")),1),(0,l.Wm)(c,{modelValue:e.btnDisabledColorLocal,"onUpdate:modelValue":t[59]||(t[59]=function(t){return e.btnDisabledColorLocal=t}),name:"btnDisabledColor",fallback:e.previewTheme.colors.btnDisabled,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.btnDisabledTextColorLocal,"onUpdate:modelValue":t[60]||(t[60]=function(t){return e.btnDisabledTextColorLocal=t}),name:"btnDisabledTextColor",fallback:e.previewTheme.colors.btnDisabledText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.btnDisabledPanelTextColorLocal,"onUpdate:modelValue":t[61]||(t[61]=function(t){return e.btnDisabledPanelTextColorLocal=t}),name:"btnDisabledPanelTextColor",fallback:e.previewTheme.colors.btnDisabledPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.btnDisabledTopBarTextColorLocal,"onUpdate:modelValue":t[62]||(t[62]=function(t){return e.btnDisabledTopBarTextColorLocal=t}),name:"btnDisabledTopBarTextColor",fallback:e.previewTheme.colors.btnDisabledTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),(0,l._)("h5",null,(0,f.zw)(e.$t("settings.style.advanced_colors.toggled")),1),(0,l.Wm)(c,{modelValue:e.btnToggledColorLocal,"onUpdate:modelValue":t[63]||(t[63]=function(t){return e.btnToggledColorLocal=t}),name:"btnToggledColor",fallback:e.previewTheme.colors.btnToggled,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.btnToggledTextColorLocal,"onUpdate:modelValue":t[64]||(t[64]=function(t){return e.btnToggledTextColorLocal=t}),name:"btnToggledTextColor",fallback:e.previewTheme.colors.btnToggledText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnToggledText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnToggledPanelTextColorLocal,"onUpdate:modelValue":t[65]||(t[65]=function(t){return e.btnToggledPanelTextColorLocal=t}),name:"btnToggledPanelTextColor",fallback:e.previewTheme.colors.btnToggledPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnToggledPanelText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnToggledTopBarTextColorLocal,"onUpdate:modelValue":t[66]||(t[66]=function(t){return e.btnToggledTopBarTextColorLocal=t}),name:"btnToggledTopBarTextColor",fallback:e.previewTheme.colors.btnToggledTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnToggledTopBarText},null,8,["contrast"])]),(0,l._)("div",Sa,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.tabs")),1),(0,l.Wm)(c,{modelValue:e.tabColorLocal,"onUpdate:modelValue":t[67]||(t[67]=function(t){return e.tabColorLocal=t}),name:"tabColor",fallback:e.previewTheme.colors.tab,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.tabTextColorLocal,"onUpdate:modelValue":t[68]||(t[68]=function(t){return e.tabTextColorLocal=t}),name:"tabTextColor",fallback:e.previewTheme.colors.tabText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.tabText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.tabActiveTextColorLocal,"onUpdate:modelValue":t[69]||(t[69]=function(t){return e.tabActiveTextColorLocal=t}),name:"tabActiveTextColor",fallback:e.previewTheme.colors.tabActiveText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.tabActiveText},null,8,["contrast"])]),(0,l._)("div",ja,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.borders")),1),(0,l.Wm)(c,{modelValue:e.borderColorLocal,"onUpdate:modelValue":t[70]||(t[70]=function(t){return e.borderColorLocal=t}),name:"borderColor",fallback:e.previewTheme.colors.border,label:e.$t("settings.style.common.color")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(d,{modelValue:e.borderOpacityLocal,"onUpdate:modelValue":t[71]||(t[71]=function(t){return e.borderOpacityLocal=t}),name:"borderOpacity",fallback:e.previewTheme.opacity.border,disabled:"transparent"===e.borderColorLocal},null,8,["modelValue","fallback","disabled"])]),(0,l._)("div",Ia,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.faint_text")),1),(0,l.Wm)(c,{modelValue:e.faintColorLocal,"onUpdate:modelValue":t[72]||(t[72]=function(t){return e.faintColorLocal=t}),name:"faintColor",fallback:e.previewTheme.colors.faint,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.faintLinkColorLocal,"onUpdate:modelValue":t[73]||(t[73]=function(t){return e.faintLinkColorLocal=t}),name:"faintLinkColor",fallback:e.previewTheme.colors.faintLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.panelFaintColorLocal,"onUpdate:modelValue":t[74]||(t[74]=function(t){return e.panelFaintColorLocal=t}),name:"panelFaintColor",fallback:e.previewTheme.colors.panelFaint,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(d,{modelValue:e.faintOpacityLocal,"onUpdate:modelValue":t[75]||(t[75]=function(t){return e.faintOpacityLocal=t}),name:"faintOpacity",fallback:e.previewTheme.opacity.faint},null,8,["modelValue","fallback"])]),(0,l._)("div",Ba,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.underlay")),1),(0,l.Wm)(c,{modelValue:e.underlayColorLocal,"onUpdate:modelValue":t[76]||(t[76]=function(t){return e.underlayColorLocal=t}),name:"underlay",label:e.$t("settings.style.advanced_colors.underlay"),fallback:e.previewTheme.colors.underlay},null,8,["modelValue","label","fallback"]),(0,l.Wm)(d,{modelValue:e.underlayOpacityLocal,"onUpdate:modelValue":t[77]||(t[77]=function(t){return e.underlayOpacityLocal=t}),name:"underlayOpacity",fallback:e.previewTheme.opacity.underlay,disabled:"transparent"===e.underlayOpacityLocal},null,8,["modelValue","fallback","disabled"])]),(0,l._)("div",Aa,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.wallpaper")),1),(0,l.Wm)(c,{modelValue:e.wallpaperColorLocal,"onUpdate:modelValue":t[78]||(t[78]=function(t){return e.wallpaperColorLocal=t}),name:"wallpaper",label:e.$t("settings.style.advanced_colors.wallpaper"),fallback:e.previewTheme.colors.wallpaper},null,8,["modelValue","label","fallback"])]),(0,l._)("div",Ea,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.poll")),1),(0,l.Wm)(c,{modelValue:e.pollColorLocal,"onUpdate:modelValue":t[79]||(t[79]=function(t){return e.pollColorLocal=t}),name:"poll",label:e.$t("settings.background"),fallback:e.previewTheme.colors.poll},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.pollTextColorLocal,"onUpdate:modelValue":t[80]||(t[80]=function(t){return e.pollTextColorLocal=t}),name:"pollText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.pollText},null,8,["modelValue","label","fallback"])]),(0,l._)("div",Fa,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.icons")),1),(0,l.Wm)(c,{modelValue:e.iconColorLocal,"onUpdate:modelValue":t[81]||(t[81]=function(t){return e.iconColorLocal=t}),name:"icon",label:e.$t("settings.style.advanced_colors.icons"),fallback:e.previewTheme.colors.icon},null,8,["modelValue","label","fallback"])]),(0,l._)("div",qa,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.highlight")),1),(0,l.Wm)(c,{modelValue:e.highlightColorLocal,"onUpdate:modelValue":t[82]||(t[82]=function(t){return e.highlightColorLocal=t}),name:"highlight",label:e.$t("settings.background"),fallback:e.previewTheme.colors.highlight},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.highlightTextColorLocal,"onUpdate:modelValue":t[83]||(t[83]=function(t){return e.highlightTextColorLocal=t}),name:"highlightText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.highlightText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.highlightText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.highlightLinkColorLocal,"onUpdate:modelValue":t[84]||(t[84]=function(t){return e.highlightLinkColorLocal=t}),name:"highlightLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.highlightLink},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.highlightLink},null,8,["contrast"])]),(0,l._)("div",Za,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.popover")),1),(0,l.Wm)(c,{modelValue:e.popoverColorLocal,"onUpdate:modelValue":t[85]||(t[85]=function(t){return e.popoverColorLocal=t}),name:"popover",label:e.$t("settings.background"),fallback:e.previewTheme.colors.popover},null,8,["modelValue","label","fallback"]),(0,l.Wm)(d,{modelValue:e.popoverOpacityLocal,"onUpdate:modelValue":t[86]||(t[86]=function(t){return e.popoverOpacityLocal=t}),name:"popoverOpacity",fallback:e.previewTheme.opacity.popover,disabled:"transparent"===e.popoverOpacityLocal},null,8,["modelValue","fallback","disabled"]),(0,l.Wm)(c,{modelValue:e.popoverTextColorLocal,"onUpdate:modelValue":t[87]||(t[87]=function(t){return e.popoverTextColorLocal=t}),name:"popoverText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.popoverText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.popoverText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.popoverLinkColorLocal,"onUpdate:modelValue":t[88]||(t[88]=function(t){return e.popoverLinkColorLocal=t}),name:"popoverLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.popoverLink},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.popoverLink},null,8,["contrast"])]),(0,l._)("div",Ma,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.selectedPost")),1),(0,l.Wm)(c,{modelValue:e.selectedPostColorLocal,"onUpdate:modelValue":t[89]||(t[89]=function(t){return e.selectedPostColorLocal=t}),name:"selectedPost",label:e.$t("settings.background"),fallback:e.previewTheme.colors.selectedPost},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.selectedPostTextColorLocal,"onUpdate:modelValue":t[90]||(t[90]=function(t){return e.selectedPostTextColorLocal=t}),name:"selectedPostText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.selectedPostText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.selectedPostText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.selectedPostLinkColorLocal,"onUpdate:modelValue":t[91]||(t[91]=function(t){return e.selectedPostLinkColorLocal=t}),name:"selectedPostLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.selectedPostLink},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.selectedPostLink},null,8,["contrast"])]),(0,l._)("div",Ra,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.selectedMenu")),1),(0,l.Wm)(c,{modelValue:e.selectedMenuColorLocal,"onUpdate:modelValue":t[92]||(t[92]=function(t){return e.selectedMenuColorLocal=t}),name:"selectedMenu",label:e.$t("settings.background"),fallback:e.previewTheme.colors.selectedMenu},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.selectedMenuTextColorLocal,"onUpdate:modelValue":t[93]||(t[93]=function(t){return e.selectedMenuTextColorLocal=t}),name:"selectedMenuText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.selectedMenuText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.selectedMenuText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.selectedMenuLinkColorLocal,"onUpdate:modelValue":t[94]||(t[94]=function(t){return e.selectedMenuLinkColorLocal=t}),name:"selectedMenuLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.selectedMenuLink},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.selectedMenuLink},null,8,["contrast"])]),(0,l._)("div",Na,[(0,l._)("h4",null,(0,f.zw)(e.$t("chats.chats")),1),(0,l.Wm)(c,{modelValue:e.chatBgColorLocal,"onUpdate:modelValue":t[95]||(t[95]=function(t){return e.chatBgColorLocal=t}),name:"chatBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l._)("h5",null,(0,f.zw)(e.$t("settings.style.advanced_colors.chat.incoming")),1),(0,l.Wm)(c,{modelValue:e.chatMessageIncomingBgColorLocal,"onUpdate:modelValue":t[96]||(t[96]=function(t){return e.chatMessageIncomingBgColorLocal=t}),name:"chatMessageIncomingBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageIncomingTextColorLocal,"onUpdate:modelValue":t[97]||(t[97]=function(t){return e.chatMessageIncomingTextColorLocal=t}),name:"chatMessageIncomingTextColor",fallback:e.previewTheme.colors.text,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageIncomingLinkColorLocal,"onUpdate:modelValue":t[98]||(t[98]=function(t){return e.chatMessageIncomingLinkColorLocal=t}),name:"chatMessageIncomingLinkColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageIncomingBorderColorLocal,"onUpdate:modelValue":t[99]||(t[99]=function(t){return e.chatMessageIncomingBorderColorLocal=t}),name:"chatMessageIncomingBorderLinkColor",fallback:e.previewTheme.colors.fg,label:e.$t("settings.style.advanced_colors.chat.border")},null,8,["modelValue","fallback","label"]),(0,l._)("h5",null,(0,f.zw)(e.$t("settings.style.advanced_colors.chat.outgoing")),1),(0,l.Wm)(c,{modelValue:e.chatMessageOutgoingBgColorLocal,"onUpdate:modelValue":t[100]||(t[100]=function(t){return e.chatMessageOutgoingBgColorLocal=t}),name:"chatMessageOutgoingBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageOutgoingTextColorLocal,"onUpdate:modelValue":t[101]||(t[101]=function(t){return e.chatMessageOutgoingTextColorLocal=t}),name:"chatMessageOutgoingTextColor",fallback:e.previewTheme.colors.text,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageOutgoingLinkColorLocal,"onUpdate:modelValue":t[102]||(t[102]=function(t){return e.chatMessageOutgoingLinkColorLocal=t}),name:"chatMessageOutgoingLinkColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageOutgoingBorderColorLocal,"onUpdate:modelValue":t[103]||(t[103]=function(t){return e.chatMessageOutgoingBorderColorLocal=t}),name:"chatMessageOutgoingBorderLinkColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.style.advanced_colors.chat.border")},null,8,["modelValue","fallback","label"])])],8,Ua),(0,l._)("div",{label:e.$t("settings.style.radii._tab_label"),class:"radius-container"},[(0,l._)("div",Ya,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.radii_help")),1),(0,l._)("button",{class:"btn button-default",onClick:t[104]||(t[104]=function(){return e.clearRoundness&&e.clearRoundness.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_all")),1)]),(0,l.Wm)(m,{modelValue:e.btnRadiusLocal,"onUpdate:modelValue":t[105]||(t[105]=function(t){return e.btnRadiusLocal=t}),name:"btnRadius",label:e.$t("settings.btnRadius"),fallback:e.previewTheme.radii.btn,max:"16","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.inputRadiusLocal,"onUpdate:modelValue":t[106]||(t[106]=function(t){return e.inputRadiusLocal=t}),name:"inputRadius",label:e.$t("settings.inputRadius"),fallback:e.previewTheme.radii.input,max:"9","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.checkboxRadiusLocal,"onUpdate:modelValue":t[107]||(t[107]=function(t){return e.checkboxRadiusLocal=t}),name:"checkboxRadius",label:e.$t("settings.checkboxRadius"),fallback:e.previewTheme.radii.checkbox,max:"16","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.panelRadiusLocal,"onUpdate:modelValue":t[108]||(t[108]=function(t){return e.panelRadiusLocal=t}),name:"panelRadius",label:e.$t("settings.panelRadius"),fallback:e.previewTheme.radii.panel,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.avatarRadiusLocal,"onUpdate:modelValue":t[109]||(t[109]=function(t){return e.avatarRadiusLocal=t}),name:"avatarRadius",label:e.$t("settings.avatarRadius"),fallback:e.previewTheme.radii.avatar,max:"28","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.avatarAltRadiusLocal,"onUpdate:modelValue":t[110]||(t[110]=function(t){return e.avatarAltRadiusLocal=t}),name:"avatarAltRadius",label:e.$t("settings.avatarAltRadius"),fallback:e.previewTheme.radii.avatarAlt,max:"28","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.attachmentRadiusLocal,"onUpdate:modelValue":t[111]||(t[111]=function(t){return e.attachmentRadiusLocal=t}),name:"attachmentRadius",label:e.$t("settings.attachmentRadius"),fallback:e.previewTheme.radii.attachment,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.tooltipRadiusLocal,"onUpdate:modelValue":t[112]||(t[112]=function(t){return e.tooltipRadiusLocal=t}),name:"tooltipRadius",label:e.$t("settings.tooltipRadius"),fallback:e.previewTheme.radii.tooltip,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.chatMessageRadiusLocal,"onUpdate:modelValue":t[113]||(t[113]=function(t){return e.chatMessageRadiusLocal=t}),name:"chatMessageRadius",label:e.$t("settings.chatMessageRadius"),fallback:e.previewTheme.radii.chatMessage||2,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"])],8,Ha),(0,l._)("div",{label:e.$t("settings.style.shadows._tab_label"),class:"shadow-container"},[(0,l._)("div",Ga,[(0,l._)("div",Ja,[(0,l.Uk)((0,f.zw)(e.$t("settings.style.shadows.component"))+" "+(0,f.zw)(" ")+" ",1),(0,l.Wm)(r,{id:"shadow-switcher",modelValue:e.shadowSelected,"onUpdate:modelValue":t[114]||(t[114]=function(t){return e.shadowSelected=t}),class:"shadow-switcher"},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.shadowsAvailable,(function(t){return(0,l.wg)(),(0,l.iD)("option",{key:t,value:t},(0,f.zw)(e.$t("settings.style.shadows.components."+t)),9,Qa)})),128))]})),_:1},8,["modelValue"])]),(0,l._)("div",Xa,[(0,l._)("label",es,(0,f.zw)(e.$t("settings.style.shadows.override")),1),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l.wy)((0,l._)("input",{id:"override","onUpdate:modelValue":t[115]||(t[115]=function(t){return e.currentShadowOverriden=t}),name:"override",class:"input-override",type:"checkbox"},null,512),[[me.e8,e.currentShadowOverriden]]),ts]),(0,l._)("button",{class:"btn button-default",onClick:t[116]||(t[116]=function(){return e.clearShadows&&e.clearShadows.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_all")),1)]),(0,l.Wm)(h,{modelValue:e.currentShadow,"onUpdate:modelValue":t[117]||(t[117]=function(t){return e.currentShadow=t}),ready:!!e.currentShadowFallback,fallback:e.currentShadowFallback},null,8,["modelValue","ready","fallback"]),"avatar"===e.shadowSelected||"avatarStatus"===e.shadowSelected?((0,l.wg)(),(0,l.iD)("div",ns,[(0,l.Wm)(g,{scope:"global",keypath:"settings.style.shadows.filter_hint.always_drop_shadow",tag:"p"},{default:(0,l.w5)((function(){return[ls]})),_:1}),(0,l._)("p",null,(0,f.zw)(e.$t("settings.style.shadows.filter_hint.avatar_inset")),1),(0,l.Wm)(g,{scope:"global",keypath:"settings.style.shadows.filter_hint.drop_shadow_syntax",tag:"p"},{default:(0,l.w5)((function(){return[os,as,ss]})),_:1}),(0,l.Wm)(g,{scope:"global",keypath:"settings.style.shadows.filter_hint.inset_classic",tag:"p"},{default:(0,l.w5)((function(){return[rs]})),_:1}),(0,l._)("p",null,(0,f.zw)(e.$t("settings.style.shadows.filter_hint.spread_zero")),1)])):(0,l.kq)("",!0)],8,Ka),(0,l._)("div",{label:e.$t("settings.style.fonts._tab_label"),class:"fonts-container"},[(0,l._)("div",us,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.style.fonts.help")),1),(0,l._)("button",{class:"btn button-default",onClick:t[118]||(t[118]=function(){return e.clearFonts&&e.clearFonts.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_all")),1)]),(0,l.Wm)(b,{modelValue:e.fontsLocal.interface,"onUpdate:modelValue":t[119]||(t[119]=function(t){return e.fontsLocal.interface=t}),name:"ui",label:e.$t("settings.style.fonts.components.interface"),fallback:e.previewTheme.fonts.interface,"no-inherit":"1"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(b,{modelValue:e.fontsLocal.input,"onUpdate:modelValue":t[120]||(t[120]=function(t){return e.fontsLocal.input=t}),name:"input",label:e.$t("settings.style.fonts.components.input"),fallback:e.previewTheme.fonts.input},null,8,["modelValue","label","fallback"]),(0,l.Wm)(b,{modelValue:e.fontsLocal.post,"onUpdate:modelValue":t[121]||(t[121]=function(t){return e.fontsLocal.post=t}),name:"post",label:e.$t("settings.style.fonts.components.post"),fallback:e.previewTheme.fonts.post},null,8,["modelValue","label","fallback"]),(0,l.Wm)(b,{modelValue:e.fontsLocal.postCode,"onUpdate:modelValue":t[122]||(t[122]=function(t){return e.fontsLocal.postCode=t}),name:"postCode",label:e.$t("settings.style.fonts.components.postCode"),fallback:e.previewTheme.fonts.postCode},null,8,["modelValue","label","fallback"])],8,is)]})),_:1})],1024)),e.isActive?((0,l.wg)(),(0,l.j4)(l.lR,{key:0,to:"#unscrolled-content"},[(0,l._)("div",cs,[(0,l._)("button",{class:"btn button-default submit",disabled:!e.themeValid,onClick:t[123]||(t[123]=function(){return e.setCustomTheme&&e.setCustomTheme.apply(e,arguments)})},(0,f.zw)(e.$t("general.apply")),9,ds),(0,l._)("button",{class:"btn button-default",onClick:t[124]||(t[124]=function(){return e.clearAll&&e.clearAll.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.reset")),1)])])):(0,l.kq)("",!0)])}]]);I.vI.add(B.klh,B.ILF,B.G_j,B.XsY,B.qmU,B.q7m,B.Aq,B.YHc);const wi={components:{TabSwitcher:m.Z,DataImportExportTab:G,MutesAndBlocksTab:rt,NotificationsTab:vt,FilteringTab:At,SecurityTab:tl,ProfileTab:lo,GeneralTab:Ho,VersionTab:na,ThemeTab:bi},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},open:function(){return"hidden"!==this.$store.state.interface.settingsModalState},bodyLock:function(){return"visible"===this.$store.state.interface.settingsModalState}},methods:{onOpen:function(){var e=this.$store.state.interface.settingsModalTargetTab;if(e){var t=this.$refs.tabSwitcher.$slots.default().findIndex((function(t){return t.props&&t.props["data-tab-name"]===e}));t>=0&&this.$refs.tabSwitcher.setTab(t)}this.$store.dispatch("clearSettingsModalTargetTab")}},mounted:function(){this.onOpen()},watch:{open:function(e){e&&this.onOpen()}}},_i=(0,E.Z)(wi,[["render",function(e,t,n,m,f,h){var g=(0,l.up)("GeneralTab"),b=(0,l.up)("ProfileTab"),w=(0,l.up)("SecurityTab"),_=(0,l.up)("FilteringTab"),k=(0,l.up)("ThemeTab"),v=(0,l.up)("NotificationsTab"),y=(0,l.up)("DataImportExportTab"),$=(0,l.up)("MutesAndBlocksTab"),C=(0,l.up)("VersionTab"),V=(0,l.up)("tab-switcher");return(0,l.wg)(),(0,l.j4)(V,{ref:"tabSwitcher",class:"settings_tab-switcher","side-tab-bar":!0,"scrollable-tabs":!0,"body-scroll-lock":e.bodyLock},{default:(0,l.w5)((function(){return[(0,l._)("div",{label:e.$t("settings.general"),icon:"wrench","data-tab-name":"general"},[(0,l.Wm)(g)],8,o),e.isLoggedIn?((0,l.wg)(),(0,l.iD)("div",{key:0,label:e.$t("settings.profile_tab"),icon:"user","data-tab-name":"profile"},[(0,l.Wm)(b)],8,a)):(0,l.kq)("",!0),e.isLoggedIn?((0,l.wg)(),(0,l.iD)("div",{key:1,label:e.$t("settings.security_tab"),icon:"lock","data-tab-name":"security"},[(0,l.Wm)(w)],8,s)):(0,l.kq)("",!0),(0,l._)("div",{label:e.$t("settings.filtering"),icon:"filter","data-tab-name":"filtering"},[(0,l.Wm)(_)],8,r),(0,l._)("div",{label:e.$t("settings.theme"),icon:"paint-brush","data-tab-name":"theme"},[(0,l.Wm)(k)],8,i),e.isLoggedIn?((0,l.wg)(),(0,l.iD)("div",{key:2,label:e.$t("settings.notifications"),icon:"bell","data-tab-name":"notifications"},[(0,l.Wm)(v)],8,u)):(0,l.kq)("",!0),e.isLoggedIn?((0,l.wg)(),(0,l.iD)("div",{key:3,label:e.$t("settings.data_import_export_tab"),icon:"download","data-tab-name":"dataImportExport"},[(0,l.Wm)(y)],8,c)):(0,l.kq)("",!0),e.isLoggedIn?((0,l.wg)(),(0,l.iD)("div",{key:4,label:e.$t("settings.mutes_and_blocks"),fullHeight:!0,icon:"eye-slash","data-tab-name":"mutesAndBlocks"},[(0,l.Wm)($)],8,d)):(0,l.kq)("",!0),(0,l._)("div",{label:e.$t("settings.version.title"),icon:"info","data-tab-name":"version"},[(0,l.Wm)(C)],8,p)]})),_:1},8,["body-scroll-lock"])}]])}}]); +//# sourceMappingURL=7962.e25d40b042f8ee7389c3.js.map +\ No newline at end of file diff --git a/priv/static/static/js/7962.e25d40b042f8ee7389c3.js.map b/priv/static/static/js/7962.e25d40b042f8ee7389c3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/7962.e25d40b042f8ee7389c3.js","mappings":"uSAISA,MAAM,gB,GASNA,MAAM,gB,GAQNA,MAAM,gB,GASNA,MAAM,gB,GAQNA,MAAM,gB,GASNA,MAAM,gB,GAQNA,MAAM,gB,GAOHC,EAAAA,EAAAA,GAAM,mB,GASFD,MAAM,W,kDA6BdA,MAAM,e,6CCnGPA,MAAM,Y,yCCKbE,EAAAA,GAAAA,IACEC,EAAAA,IACAC,EAAAA,KAwCF,QArCiB,CACfC,MAAO,CACLC,cAAe,CACbC,KAAMC,SACNC,UAAU,GAEZC,kBAAmB,CAAEH,KAAMI,QAC3BC,eAAgB,CAAEL,KAAMI,QACxBE,aAAc,CAAEN,KAAMI,SAExBG,KAAI,WACF,MAAO,CACLC,KAAM,KACNC,OAAO,EACPC,SAAS,EACTC,YAAY,EAEhB,EACAC,QAAS,CACPC,OAAM,WACJC,KAAKN,KAAOM,KAAKC,MAAMC,MAAMC,MAAM,EACrC,EACAC,OAAM,WAAI,IAAAC,EAAA,KACRL,KAAKM,UACLN,KAAKH,YAAa,EAClBG,KAAKf,cAAce,KAAKN,MACrBa,MAAK,WAAQF,EAAKT,SAAU,CAAK,IAAE,OAC7B,WAAQS,EAAKV,OAAQ,CAAK,IAAE,SAC1B,WAAQU,EAAKR,YAAa,CAAM,GAC7C,EACAS,QAAO,WACLN,KAAKJ,SAAU,EACfI,KAAKL,OAAQ,CACf,I,eCrCJ,MAEA,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,iEFNzDa,EAAAA,EAAAA,IA6CM,MA7CNC,EA6CM,EA5CJ7B,EAAAA,EAAAA,GAMO,cALLA,EAAAA,EAAAA,GAIC,SAHC8B,IAAI,QACJxB,KAAK,OACJyB,SAAMC,EAAA,KAAAA,EAAA,qBAAEC,EAAAd,QAAAc,EAAAd,OAAAe,MAAAD,EAAAE,UAAM,I,YAIXF,EAAAhB,aAAU,WADlBmB,EAAAA,EAAAA,IAKEC,EAAA,C,MAHAtC,MAAM,qBACNuC,KAAA,GACAC,KAAK,oB,WAEPX,EAAAA,EAAAA,IAMS,U,MAJP7B,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAT,QAAAS,EAAAT,OAAAU,MAAAD,EAAAE,UAAM,K,QAEXF,EAAAxB,mBAAqBwB,EAAAQ,GAAG,oBAAD,IAEjBR,EAAAjB,UAAO,WAAlBY,EAAAA,EAAAA,IAWM,MAAAc,EAAA,EAVJ1C,EAAAA,EAAAA,GAOS,UANPD,MAAM,kBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAP,SAAAO,EAAAP,QAAAQ,MAAAD,EAAAE,UAAO,I,EAEfQ,EAAAA,EAAAA,IAEEN,EAAA,CADAE,KAAK,aAAO,QAEP,KACTK,EAAAA,EAAAA,IAAG,KAAM,MACT5C,EAAAA,EAAAA,GAA2D,aAAA4C,EAAAA,EAAAA,IAAlDX,EAAAtB,gBAAkBsB,EAAAQ,GAAG,qBAAD,MAEfR,EAAAlB,QAAK,WAArBa,EAAAA,EAAAA,IAWM,MAAAiB,EAAA,EAVJ7C,EAAAA,EAAAA,GAOS,UANPD,MAAM,kBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAP,SAAAO,EAAAP,QAAAQ,MAAAD,EAAAE,UAAO,I,EAEfQ,EAAAA,EAAAA,IAEEN,EAAA,CADAE,KAAK,aAAO,QAEP,KACTK,EAAAA,EAAAA,IAAG,KAAM,MACT5C,EAAAA,EAAAA,GAAuD,aAAA4C,EAAAA,EAAAA,IAA9CX,EAAArB,cAAgBqB,EAAAQ,GAAG,mBAAD,uB,YG3C1B1C,MAAM,Y,UCEbE,EAAAA,GAAAA,IACEC,EAAAA,KAwCF,QArCiB,CACfE,MAAO,CACL0C,WAAY,CACVxC,KAAMC,SACNC,UAAU,GAEZuC,SAAU,CACRzC,KAAMI,OACNsC,QAAS,cAEXC,kBAAmB,CAAE3C,KAAMI,QAC3BwC,kBAAmB,CAAE5C,KAAMI,SAE7BG,KAAI,WACF,MAAO,CACLsC,YAAY,EAEhB,EACAjC,QAAS,CACPkC,QAAO,WAAI,IAAA3B,EAAA,KACTL,KAAK+B,YAAa,EAClB/B,KAAK0B,aACFnB,MAAK,SAAC0B,GACL,IAAMC,EAAiBC,SAASC,cAAc,KAC9CF,EAAeG,aAAa,OAAQ,iCAAmCC,mBAAmBL,IAC1FC,EAAeG,aAAa,WAAYhC,EAAKsB,UAC7CO,EAAeK,MAAMC,QAAU,OAC/BL,SAASM,KAAKC,YAAYR,GAC1BA,EAAeS,QACfR,SAASM,KAAKG,YAAYV,GAE1BW,YAAW,WAAQxC,EAAK0B,YAAa,CAAM,GAAG,IAChD,GACJ,IC/BJ,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,iEFNzDvB,EAAAA,EAAAA,IAiBM,MAjBNC,EAiBM,CAhBOI,EAAAkB,aAAU,WAArBvB,EAAAA,EAAAA,IAQM,MAAAc,EAAA,EAPJC,EAAAA,EAAAA,IAIEN,EAAA,CAHAE,KAAK,eACL2B,KAAK,KACL5B,KAAA,MAGFtC,EAAAA,EAAAA,GAAiE,aAAA4C,EAAAA,EAAAA,IAAxDX,EAAAiB,mBAAqBjB,EAAAQ,GAAG,wBAAD,mBAElCb,EAAAA,EAAAA,IAMS,U,MAJP7B,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAmB,SAAAnB,EAAAmB,QAAAlB,MAAAD,EAAAE,UAAO,K,QAEZF,EAAAgB,mBAAqBhB,EAAAQ,GAAG,oBAAD,K,2PGyFhC,QApG4B,CAC1B5B,KAAI,WACF,MAAO,CACLsD,UAAW,UACXC,gBAAiB,GACjBC,kBAAkB,EAClBC,gBAAgB,EAChBC,aAAa,EACbC,QAAS,GAEb,EACAC,QAAO,WACLrD,KAAKsD,OAAOC,SAAS,eACrBvD,KAAKwD,cACP,EACAC,WAAY,CACVC,SAAAA,EACAC,SAAAA,EACAC,SAAAA,EAAAA,GAEFC,S,qWAAQC,CAAA,IACHC,EAAAA,EAAAA,IAAS,CACVC,kBAAmB,SAACC,GAAK,OAAKA,EAAMC,IAAIF,iBAAiB,EACzDG,KAAM,SAACF,GAAK,OAAKA,EAAMG,MAAMC,WAAW,KAG5CvE,QAAS,CACPwE,kBAAiB,WACf,OAAOtE,KAAKgE,kBAAkBO,cAAc,CAAEC,GAAIxE,KAAKmE,KAAKK,KACzDjE,KAAKP,KAAKyE,+BACf,EACAC,iBAAgB,WACd,OAAO1E,KAAKgE,kBAAkBW,cAC3BpE,KAAKP,KAAKyE,+BACf,EACAG,gBAAe,WACb,OAAO5E,KAAKgE,kBAAkBa,aAC3BtE,KAAKP,KAAKyE,+BACf,EACAK,cAAa,SAAEpF,GACb,OAAOM,KAAKgE,kBAAkBc,cAAc,CAAEpF,KAAAA,IAC3Ca,MAAK,SAACwE,GACL,IAAKA,EACH,MAAM,IAAIC,MAAM,SAEpB,GACJ,EACAC,aAAY,SAAEvF,GACZ,OAAOM,KAAKgE,kBAAkBiB,aAAa,CAAEvF,KAAAA,IAC1Ca,MAAK,SAACwE,GACL,IAAKA,EACH,MAAM,IAAIC,MAAM,SAEpB,GACJ,EACAE,YAAW,SAAExF,GACX,OAAOM,KAAKgE,kBAAkBkB,YAAY,CAAExF,KAAAA,IACzCa,MAAK,SAACwE,GACL,IAAKA,EACH,MAAM,IAAIC,MAAM,SAEpB,GACJ,EACAP,+BAA8B,SAAEL,GAE9B,OAAOA,EAAMe,KAAI,SAAChB,GAEhB,OAAIA,GAAQA,EAAKiB,SAGRjB,EAAKkB,YAAc,IAAMC,SAASC,SAEpCpB,EAAKkB,WACd,IAAGG,KAAK,KACV,EACAC,UAAS,WAAI,IAAApF,EAAA,KACXL,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkByB,YACrClF,MAAK,SAACmF,GACLrF,EAAK8C,aAAc,EACnB9C,EAAK6C,gBAAiB,CACxB,IAAE,OACK,SAACvD,GACNU,EAAK8C,aAAc,EACnB9C,EAAK6C,eAAiBvD,CACxB,IACCY,MAAK,kBAAMF,EAAKmD,cAAc,GACnC,EACAA,aAAY,WAAI,IAAAmC,EAAA,KACd3F,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkB4B,cACrCrF,MAAK,SAACmF,GACLC,EAAKvC,QAAUsC,EACfC,EAAK1C,kBAAmB,CAC1B,IAAE,OACK,SAACtD,GACNgG,EAAK1C,iBAAmBtD,EAAMA,KAChC,GACJ,IC9FJ,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,+GRJzDa,EAAAA,EAAAA,IA6HM,OA5HHqF,MAAOhF,EAAAQ,GAAG,oC,EAEXzC,EAAAA,EAAAA,GAQM,MARN0C,EAQM,EAPJ1C,EAAAA,EAAAA,GAA2C,WAAA4C,EAAAA,EAAAA,IAApCX,EAAAQ,GAAG,2BAAD,IACTzC,EAAAA,EAAAA,GAA4D,UAAA4C,EAAAA,EAAAA,IAAtDX,EAAAQ,GAAG,8CAAD,IACRE,EAAAA,EAAAA,IAIEuE,EAAA,CAHC,iBAAgBjF,EAAAiE,cAChB,kBAAiBjE,EAAAQ,GAAG,6BACpB,gBAAeR,EAAAQ,GAAG,iC,gEAGvBzC,EAAAA,EAAAA,GAOM,MAPN6C,EAOM,EANJ7C,EAAAA,EAAAA,GAA2C,WAAA4C,EAAAA,EAAAA,IAApCX,EAAAQ,GAAG,2BAAD,IACTE,EAAAA,EAAAA,IAIEwE,EAAA,CAHC,cAAalF,EAAAyD,kBACd3C,SAAS,cACR,sBAAqBd,EAAAQ,GAAG,kC,iDAG7BzC,EAAAA,EAAAA,GAQM,MARNoH,EAQM,EAPJpH,EAAAA,EAAAA,GAA0C,WAAA4C,EAAAA,EAAAA,IAAnCX,EAAAQ,GAAG,0BAAD,IACTzC,EAAAA,EAAAA,GAAyD,UAAA4C,EAAAA,EAAAA,IAAnDX,EAAAQ,GAAG,2CAAD,IACRE,EAAAA,EAAAA,IAIEuE,EAAA,CAHC,iBAAgBjF,EAAAoE,aAChB,kBAAiBpE,EAAAQ,GAAG,4BACpB,gBAAeR,EAAAQ,GAAG,gC,gEAGvBzC,EAAAA,EAAAA,GAOM,MAPNqH,EAOM,EANJrH,EAAAA,EAAAA,GAA0C,WAAA4C,EAAAA,EAAAA,IAAnCX,EAAAQ,GAAG,0BAAD,IACTE,EAAAA,EAAAA,IAIEwE,EAAA,CAHC,cAAalF,EAAA6D,iBACd/C,SAAS,aACR,sBAAqBd,EAAAQ,GAAG,iC,iDAG7BzC,EAAAA,EAAAA,GAQM,MARNsH,EAQM,EAPJtH,EAAAA,EAAAA,GAAyC,WAAA4C,EAAAA,EAAAA,IAAlCX,EAAAQ,GAAG,yBAAD,IACTzC,EAAAA,EAAAA,GAAwD,UAAA4C,EAAAA,EAAAA,IAAlDX,EAAAQ,GAAG,0CAAD,IACRE,EAAAA,EAAAA,IAIEuE,EAAA,CAHC,iBAAgBjF,EAAAqE,YAChB,kBAAiBrE,EAAAQ,GAAG,2BACpB,gBAAeR,EAAAQ,GAAG,+B,gEAGvBzC,EAAAA,EAAAA,GAOM,MAPNuH,EAOM,EANJvH,EAAAA,EAAAA,GAAyC,WAAA4C,EAAAA,EAAAA,IAAlCX,EAAAQ,GAAG,yBAAD,IACTE,EAAAA,EAAAA,IAIEwE,EAAA,CAHC,cAAalF,EAAA+D,gBACdjD,SAAS,YACR,sBAAqBd,EAAAQ,GAAG,gC,iDAG7BzC,EAAAA,EAAAA,GAsEM,MAtENwH,EAsEM,EArEJxH,EAAAA,EAAAA,GAA4C,WAAA4C,EAAAA,EAAAA,IAArCX,EAAAQ,GAAG,4BAAD,IACTzC,EAAAA,EAAAA,GAAsD,UAAA4C,EAAAA,EAAAA,IAAhDX,EAAAQ,GAAG,wCAAD,IACRzC,EAAAA,EAAAA,GAuCQ,eAtCNA,EAAAA,EAAAA,GAKQ,eAJNA,EAAAA,EAAAA,GAGK,YAFHA,EAAAA,EAAAA,GAAuD,WAAA4C,EAAAA,EAAAA,IAAhDX,EAAAQ,GAAG,uCAAD,GACTgF,OAGJzH,EAAAA,EAAAA,GA+BQ,6BA9BN4B,EAAAA,EAAAA,IA6BK8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IA5Bc1F,EAAAuC,SAAO,SAAjBoD,G,kBADThG,EAAAA,EAAAA,IA6BK,MA3BFiG,IAAKD,EAAOhC,I,EAEb5F,EAAAA,EAAAA,GAAiC,WAAA4C,EAAAA,EAAAA,IAA1BgF,EAAOE,aAAW,IACzB9H,EAAAA,EAAAA,GAuBK,KAvBL+H,EAuBK,CArBKH,EAAOI,YAAS,WADxBpG,EAAAA,EAAAA,IAMI,K,MAJFqG,OAAO,SACNC,KAAMN,EAAOO,M,QAEXlG,EAAAQ,GAAG,6BAAD,EAAA2F,IAGuB,YAAjBR,EAAOvC,QAAK,WADzBzD,EAAAA,EAAAA,IAIO,OAAAyG,GAAAzF,EAAAA,EAAAA,IADFX,EAAAqG,IAAI,0BAA2BV,EAAOW,iBAAkB,CAAFC,OAAYZ,EAAOW,oBAAgB,IAGhE,WAAjBX,EAAOvC,QAAK,WADzBzD,EAAAA,EAAAA,IAIO,OAAA6G,GAAA7F,EAAAA,EAAAA,IADFX,EAAAQ,GAAG,2BAAD,iBAEPb,EAAAA,EAAAA,IAIO,OAAA8G,GAAA9F,EAAAA,EAAAA,IADFX,EAAAQ,GAAG,8BAAD,O,cAOPR,EAAAoC,mBAAgB,WADxBzC,EAAAA,EAAAA,IAcM,MAdN+G,EAcM,mBAVD1G,EAAAQ,GAAG,8BAA+B,CAAhC1B,MAAkCkB,EAAAlB,SAAW,IAClD,IAAAf,EAAAA,EAAAA,GAQS,UAPN4I,MAAO3G,EAAAQ,GAAG,2CACVD,QAAKR,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAAoC,kBAAmB,CAAH,I,EAExB1B,EAAAA,EAAAA,IAGEN,EAAA,CAFAtC,MAAM,8BACNwC,KAAK,W,yBAIXvC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA4E,WAAA5E,EAAA4E,UAAA3E,MAAAD,EAAAE,UAAS,K,QAEdF,EAAAQ,GAAG,wBAAD,GAEER,EAAAsC,cAAW,WAApB3C,EAAAA,EAAAA,IAEI,IAAAkH,GAAAlG,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,0BAAD,qBAE4B,IAAnBR,EAAAqC,iBAAc,WAC5B1C,EAAAA,EAAAA,IAAuE,IAAAmH,GAAAnG,EAAAA,EAAAA,IAAjEX,EAAAQ,GAAG,4BAA6B,CAA9B1B,MAAuCkB,EAAAqC,kBAAc,2B,wBSrH1DvE,MAAM,sB,GAkBFA,MAAM,gB,8BAmCNA,MAAM,sB,IAkBFA,MAAM,gB,iBAiCVA,MAAM,oB,IAkBFA,MAAM,gB,qFC7HrBA,MAAM,e,6BAUJA,MAAM,uBCXZ,UACEK,MAAO,CACL4I,MAAO,CACL1I,KAAMC,SACNC,UAAU,GAEZyI,OAAQ,CACN3I,KAAMC,UAER2I,YAAa,CACX5I,KAAMI,OACNsC,QAAS,cAGbnC,KAAI,WACF,MAAO,CACLsI,KAAM,GACNC,QAAS,KACTC,QAAS,GACTC,gBAAgB,EAEpB,EACArE,SAAU,CACRsE,SAAQ,WACN,OAAOnI,KAAK6H,OAAS7H,KAAK6H,OAAO7H,KAAKiI,SAAWjI,KAAKiI,OACxD,GAEFG,MAAO,CACLL,KAAI,SAAEM,GACJrI,KAAKsI,aAAaD,EACpB,GAEFvI,QAAS,CACPwI,aAAY,SAAEP,GAAM,IAAA1H,EAAA,KAClBkI,aAAavI,KAAKgI,SAClBhI,KAAKgI,QAAUnF,YAAW,WACxBxC,EAAK4H,QAAU,GACXF,GACF1H,EAAKuH,MAAMG,GAAMxH,MAAK,SAAC0H,GAAc5H,EAAK4H,QAAUA,CAAQ,GAEhE,GA1CuB,IA2CzB,EACAO,aAAY,WACVxI,KAAKkI,gBAAiB,CACxB,EACAO,eAAc,WACZzI,KAAKkI,gBAAiB,CACxB,ICxCJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,kFFNzD1H,EAAAA,EAAAA,IAmBM,MAnBNC,GAmBM,WAfJ7B,EAAAA,EAAAA,GAKC,S,qDAJUiC,EAAAkH,KAAIN,CAAA,GACZK,YAAajH,EAAAiH,YACdnJ,MAAM,oBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA2H,cAAA3H,EAAA2H,aAAA1H,MAAAD,EAAAE,UAAY,I,mBAHXF,EAAAkH,QAMHlH,EAAAqH,gBAAkBrH,EAAAsH,SAASO,OAAS,IAAH,WADzClI,EAAAA,EAAAA,IAQM,MARNiB,GAQM,gBAJJjB,EAAAA,EAAAA,IAGE8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAFe1F,EAAAsH,UAAQ,SAAhBQ,G,OADTC,EAAAA,EAAAA,IAGE/H,EAAAgI,OAAA,WADCF,KAAMA,G,oCAfM9H,EAAA4H,iB,aGAZ9J,MAAM,gC,4CCqCf,SArCkB,CAChBK,MAAO,CAAC,UACRS,KAAI,WACF,MAAO,CACLqJ,UAAU,EAEd,EACAjF,SAAU,CACRM,KAAI,WACF,OAAOnE,KAAKsD,OAAOyF,QAAQC,SAAShJ,KAAKiJ,OAC3C,EACAC,aAAY,WACV,OAAOlJ,KAAKsD,OAAOyF,QAAQG,aAAalJ,KAAKiJ,OAC/C,EACAE,QAAO,WACL,OAAOnJ,KAAKkJ,aAAaE,QAC3B,GAEF3F,WAAY,CACV4F,cAAAA,GAAAA,GAEFvJ,QAAS,CACPwJ,YAAW,WAAI,IAAAjJ,EAAA,KACbL,KAAK8I,UAAW,EAChB9I,KAAKsD,OAAOC,SAAS,cAAevD,KAAKmE,KAAKK,IAAIjE,MAAK,WACrDF,EAAKyI,UAAW,CAClB,GACF,EACAS,UAAS,WAAI,IAAA5D,EAAA,KACX3F,KAAK8I,UAAW,EAChB9I,KAAKsD,OAAOC,SAAS,YAAavD,KAAKmE,KAAKK,IAAIjE,MAAK,WACnDoF,EAAKmD,UAAW,CAClB,GACF,IC1BJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,0EFNzD9H,EAAAA,EAAAA,IA6BkBwI,EAAA,CA7BArF,KAAMtD,EAAAsD,MAAI,C,kBAC1B,iBA2BM,EA3BNvF,EAAAA,EAAAA,GA2BM,MA3BN6B,GA2BM,CAzBII,EAAAsI,UAAO,WADf3I,EAAAA,EAAAA,IAYS,U,MAVP7B,MAAM,qBACL8K,SAAU5I,EAAAiI,SACV1H,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAyI,aAAAzI,EAAAyI,YAAAxI,MAAAD,EAAAE,UAAW,I,CAEHF,EAAAiI,WAAQ,WAAxBtI,EAAAA,EAAAA,IAEW8F,EAAAA,GAAA,CAAAG,IAAA,sBADN5F,EAAAQ,GAAG,+BAAD,sBAEPb,EAAAA,EAAAA,IAEW8F,EAAAA,GAAA,CAAAG,IAAA,sBADN5F,EAAAQ,GAAG,sBAAD,8BAGTb,EAAAA,EAAAA,IAYS,U,MAVP7B,MAAM,qBACL8K,SAAU5I,EAAAiI,SACV1H,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA0I,WAAA1I,EAAA0I,UAAAzI,MAAAD,EAAAE,UAAS,I,CAEDF,EAAAiI,WAAQ,WAAxBtI,EAAAA,EAAAA,IAEW8F,EAAAA,GAAA,CAAAG,IAAA,sBADN5F,EAAAQ,GAAG,6BAAD,sBAEPb,EAAAA,EAAAA,IAEW8F,EAAAA,GAAA,CAAAG,IAAA,sBADN5F,EAAAQ,GAAG,oBAAD,mB,iCGxBN1C,MAAM,+B,gCCqCf,SArCiB,CACfK,MAAO,CAAC,UACRS,KAAI,WACF,MAAO,CACLqJ,UAAU,EAEd,EACAjF,SAAU,CACRM,KAAI,WACF,OAAOnE,KAAKsD,OAAOyF,QAAQC,SAAShJ,KAAKiJ,OAC3C,EACAC,aAAY,WACV,OAAOlJ,KAAKsD,OAAOyF,QAAQG,aAAalJ,KAAKiJ,OAC/C,EACAS,MAAK,WACH,OAAO1J,KAAKkJ,aAAaS,MAC3B,GAEFlG,WAAY,CACV4F,cAAAA,GAAAA,GAEFvJ,QAAS,CACP8J,WAAU,WAAI,IAAAvJ,EAAA,KACZL,KAAK8I,UAAW,EAChB9I,KAAKsD,OAAOC,SAAS,aAAcvD,KAAKiJ,QAAQ1I,MAAK,WACnDF,EAAKyI,UAAW,CAClB,GACF,EACAe,SAAQ,WAAI,IAAAlE,EAAA,KACV3F,KAAK8I,UAAW,EAChB9I,KAAKsD,OAAOC,SAAS,WAAYvD,KAAKiJ,QAAQ1I,MAAK,WACjDoF,EAAKmD,UAAW,CAClB,GACF,IC1BJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,0EFNzD9H,EAAAA,EAAAA,IA6BkBwI,EAAA,CA7BArF,KAAMtD,EAAAsD,MAAI,C,kBAC1B,iBA2BM,EA3BNvF,EAAAA,EAAAA,GA2BM,MA3BN6B,GA2BM,CAzBII,EAAA6I,QAAK,WADblJ,EAAAA,EAAAA,IAYS,U,MAVP7B,MAAM,qBACL8K,SAAU5I,EAAAiI,SACV1H,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA+I,YAAA/I,EAAA+I,WAAA9I,MAAAD,EAAAE,UAAU,I,CAEFF,EAAAiI,WAAQ,WAAxBtI,EAAAA,EAAAA,IAEW8F,EAAAA,GAAA,CAAAG,IAAA,sBADN5F,EAAAQ,GAAG,8BAAD,sBAEPb,EAAAA,EAAAA,IAEW8F,EAAAA,GAAA,CAAAG,IAAA,sBADN5F,EAAAQ,GAAG,qBAAD,8BAGTb,EAAAA,EAAAA,IAYS,U,MAVP7B,MAAM,qBACL8K,SAAU5I,EAAAiI,SACV1H,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAgJ,UAAAhJ,EAAAgJ,SAAA/I,MAAAD,EAAAE,UAAQ,I,CAEAF,EAAAiI,WAAQ,WAAxBtI,EAAAA,EAAAA,IAEW8F,EAAAA,GAAA,CAAAG,IAAA,sBADN5F,EAAAQ,GAAG,4BAAD,sBAEPb,EAAAA,EAAAA,IAEW8F,EAAAA,GAAA,CAAAG,IAAA,sBADN5F,EAAAQ,GAAG,mBAAD,mB,iCGzBR1C,MAAM,oB,IACJA,MAAM,2B,YCuBf,SAvBuB,CACrBK,MAAO,CAAC,UACRyE,WAAY,CACVqG,eAAAA,GAAAA,GAEFjG,SAAU,CACRM,KAAI,WACF,OAAOnE,KAAKsD,OAAOW,MAAMG,MAAMC,WACjC,EACAqF,MAAK,WACH,OAAO1J,KAAKmE,KAAK4F,YAAYC,SAAShK,KAAKiK,OAC7C,GAEFnK,QAAS,CACPoK,aAAY,WACV,OAAOlK,KAAKsD,OAAOC,SAAS,eAAgBvD,KAAKiK,OACnD,EACAE,WAAU,WACR,OAAOnK,KAAKsD,OAAOC,SAAS,aAAcvD,KAAKiK,OACjD,ICZJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,yEFNzDzJ,EAAAA,EAAAA,IAwBM,MAxBNC,GAwBM,EAvBJ7B,EAAAA,EAAAA,GAEM,MAFN0C,IAEME,EAAAA,EAAAA,IADDX,EAAAoJ,QAAM,GAGHpJ,EAAA6I,QAAK,WADb1I,EAAAA,EAAAA,IASiBoJ,EAAA,C,MAPdzH,MAAO9B,EAAAqJ,aACRvL,MAAM,sB,CAGKmK,UAAQuB,EAAAA,EAAAA,KACjB,iBAA4C,mBAAzCxJ,EAAAQ,GAAG,qCAAD,G,sBAFP,iBAAmC,mBAAhCR,EAAAQ,GAAG,4BAA6B,IACnC,G,oCAIFL,EAAAA,EAAAA,IASiBoJ,EAAA,C,MAPdzH,MAAO9B,EAAAsJ,WACRxL,MAAM,sB,CAGKmK,UAAQuB,EAAAA,EAAAA,KACjB,iBAA0C,mBAAvCxJ,EAAAQ,GAAG,mCAAD,G,sBAFP,iBAAiC,mBAA9BR,EAAAQ,GAAG,0BAA2B,IACjC,G,qCGpBC1C,MAAM,mB,UAGPA,MAAM,0B,IAEDA,MAAM,oC,IASNA,MAAM,kC,IAgBFA,MAAM,oCCkCrB,SA9DuB,CACrB8E,WAAY,CACV6G,K,SAAAA,EACA1G,SAAAA,EAAAA,GAEF5E,MAAO,CACLuL,MAAO,CACLrL,KAAMsL,MACN5I,QAAS,iBAAM,EAAE,GAEnB6I,OAAQ,CACNvL,KAAMC,SACNyC,QAAS,SAAA+G,GAAI,OAAIA,EAAKnE,EAAE,IAG5B/E,KAAI,WACF,MAAO,CACLiL,SAAU,GAEd,EACA7G,SAAU,CACR8G,QAAO,WACL,OAAO3K,KAAKuK,MAAMpF,IAAInF,KAAKyK,OAC7B,EACAG,iBAAgB,WAAI,IAAAvK,EAAA,KAClB,OAAOL,KAAK2K,QAAQ9C,QAAO,SAAApB,GAAG,OAAoC,IAAhCpG,EAAKqK,SAASG,QAAQpE,EAAW,GACrE,EACAqE,YAAW,WACT,OAAO9K,KAAK4K,iBAAiBlC,SAAW1I,KAAKuK,MAAM7B,MACrD,EACAqC,aAAY,WACV,OAAwC,IAAjC/K,KAAK4K,iBAAiBlC,MAC/B,EACAsC,aAAY,WACV,OAAQhL,KAAK8K,cAAgB9K,KAAK+K,YACpC,GAEFjL,QAAS,CACPmL,WAAU,SAAEtC,GACV,OAA6D,IAAtD3I,KAAK4K,iBAAiBC,QAAQ7K,KAAKyK,OAAO9B,GACnD,EACAuC,OAAM,SAAEC,EAASxC,GACf,IAAMlC,EAAMzG,KAAKyK,OAAO9B,GAEpBwC,IADenL,KAAKiL,WAAWxE,KAE7B0E,EACFnL,KAAK0K,SAASU,KAAK3E,GAEnBzG,KAAK0K,SAASW,OAAOrL,KAAK0K,SAASG,QAAQpE,GAAM,GAGvD,EACA6E,UAAS,SAAEC,GAEPvL,KAAK0K,SADHa,EACcvL,KAAK2K,QAAQa,MAAM,GAEnB,EAEpB,ICpDJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,sFFNzDhL,EAAAA,EAAAA,IA8CM,MA9CNC,GA8CM,CA5CII,EAAA0J,MAAM7B,OAAS,IAAH,WADpBlI,EAAAA,EAAAA,IAmBM,MAnBNc,GAmBM,EAfJ1C,EAAAA,EAAAA,GAQM,MARN6C,GAQM,EAPJF,EAAAA,EAAAA,IAMWkK,EAAA,CALR,cAAa5K,EAAAiK,YACbY,cAAe7K,EAAAmK,aACf,sBAAoBnK,EAAAyK,W,mBAErB,iBAAsC,mBAAnCzK,EAAAQ,GAAG,+BAAD,G,qEAGTzC,EAAAA,EAAAA,GAKM,MALNoH,GAKM,EAJJ4C,EAAAA,EAAAA,IAGE/H,EAAAgI,OAAA,UADC6B,SAAU7J,EAAA+J,yBAAgB,gBAIjCrJ,EAAAA,EAAAA,IAwBOoK,EAAA,CAvBJpB,MAAO1J,EAAA0J,MACP,UAAS1J,EAAA4J,Q,CAEC9B,MAAI0B,EAAAA,EAAAA,KACb,SAAAuB,GAAA,IADgBjD,EAAIiD,EAAJjD,KAAI,QACpB/J,EAAAA,EAAAA,GAcM,OAbJD,OAAKkN,EAAAA,EAAAA,IAAA,CAAC,6BAA4B,uCACehL,EAAAoK,WAAWtC,O,EAE5D/J,EAAAA,EAAAA,GAKM,MALNqH,GAKM,EAJJ1E,EAAAA,EAAAA,IAGEkK,EAAA,CAFC,cAAa5K,EAAAoK,WAAWtC,GACxB,sBAAoB,SAAAwC,GAAO,OAAItK,EAAAqK,OAAOC,EAASxC,EAAI,G,iDAGxDC,EAAAA,EAAAA,IAGE/H,EAAAgI,OAAA,QADCF,KAAMA,KAAI,G,IAINmD,OAAKzB,EAAAA,EAAAA,KACd,iBAAqB,EAArBzB,EAAAA,EAAAA,IAAqB/H,EAAAgI,OAAA,S,8qBGhC7BhK,EAAAA,GAAAA,IACEC,EAAAA,K,IAGoB8M,GACpBG,GACAC,GAAMC,GACNC,GAAyBC,GACzBC,G,YCNIC,IAAYC,EAAAA,GAAAA,GAAa,CAC7BP,MAAO,SAAC/M,EAAOsE,GAAM,OAAKA,EAAOC,SAAS,cAAc,EACxDyI,OAAQ,SAAChN,EAAOsE,GAAM,OAAKiJ,KAAIjJ,EAAOW,MAAMG,MAAMC,YAAa,WAAY,GAAG,EAC9EmI,QAAS,WAAO,EAChBN,cAAe,SAJCI,CAKfG,IAEGC,IAAWJ,EAAAA,GAAAA,GAAa,CAC5BP,MAAO,SAAC/M,EAAOsE,GAAM,OAAKA,EAAOC,SAAS,aAAa,EACvDyI,OAAQ,SAAChN,EAAOsE,GAAM,OAAKiJ,KAAIjJ,EAAOW,MAAMG,MAAMC,YAAa,UAAW,GAAG,EAC7EmI,QAAS,WAAO,EAChBN,cAAe,SAJAI,CAKdG,IAEGE,IDXJZ,IADoBH,GCYkB,CACtCG,MAAO,SAAC/M,EAAOsE,GAAM,OAAKA,EAAOC,SAAS,mBAAmB,EAC7DyI,OAAQ,SAAChN,EAAOsE,GAAM,OAAKiJ,KAAIjJ,EAAOW,MAAMG,MAAMC,YAAa,cAAe,GAAG,EACjF6H,cAAe,UDdfH,MACAC,GAAMJ,GAANI,OAAMC,GAAAL,GACNM,cAAAA,QAAa,IAAAD,GAAG,UAASA,GAAAE,GAAAP,GACzBQ,oBAAAA,QAAmB,IAAAD,GAAG,GAAEA,GACpB,SAACS,GACL,IACM5N,EADgB6N,OAAOC,MAAKC,EAAAA,GAAAA,GAAkBH,IACxB/E,QAAO,SAAAmF,GAAC,OAAIA,IAAMd,EAAa,IAAEe,OAAOb,IAEpE,MAAO,CACLpN,MAAO,GAAFiO,QAAAC,EAAAA,GAAAA,GACAlO,GAAK,CACR,YAEFS,KAAI,WACF,MAAO,CACL0N,SAAS,EACTxN,OAAO,EAEX,EACAkE,SAAU,CACRuJ,YAAW,WACT,OAAOpB,GAAOhM,KAAKqN,OAAQrN,KAAKsD,OAClC,GAEFD,QAAO,YACDrD,KAAKsN,SAAWC,KAAQvN,KAAKoN,eAC/BpN,KAAKwN,WAET,EACA1N,QAAS,CACP0N,UAAS,WAAI,IAAAnN,EAAA,KACNL,KAAKmN,UACRnN,KAAKmN,SAAU,EACfnN,KAAKL,OAAQ,EACboM,GAAM/L,KAAKqN,OAAQrN,KAAKsD,QACrB/C,MAAK,WACJF,EAAK8M,SAAU,CACjB,IAAE,OACK,WACL9M,EAAKV,OAAQ,EACbU,EAAK8M,SAAU,CACjB,IAEN,GAEFM,OAAM,WACJ,GAAKzN,KAAKL,OAAUK,KAAKmN,QAcvB,OAAA5L,EAAAA,EAAAA,IAAA,aACa,6BAA2B,CACnCvB,KAAKL,OAAK4B,EAAAA,EAAAA,IAAA,aACKvB,KAAKwN,UAAS,MAAQ,eAAa,CAAExN,KAAKqB,GAAG,4BAAwBE,EAAAA,EAAAA,IAAAmM,GAAAA,GAAA,cAC/D,gBAAc,QAjBxC,IAtDkCC,EAsD5B3O,EAAK8E,GAAAA,GAAA,GACN9D,KAAKqN,QAAM,IAAAO,EAAAA,EAAAA,GAAA,GACb1B,GAAgBlM,KAAKoN,cAElBS,EAAW7N,KAAK6I,OACtB,OAAAtH,EAAAA,EAAAA,IAAA,aACa,qBAAmB,EAAAA,EAAAA,EAAAA,IAAAqL,EACN5N,GA7DQ2O,EA8D3BE,EA9D2B,mBAAAF,GAAA,oBAAAd,OAAAiB,UAAAC,SAAAC,KAAAL,MAAAM,EAAAA,EAAAA,IAAAN,GA8D3BE,EAAQ,2BAARA,EAAQ,MAcnB,EAEJ,GCxDGpB,IA0GH,SAxGuB,CACrBhN,KAAI,WACF,MAAO,CACLsD,UAAW,UAEf,EACAM,QAAO,WACLrD,KAAKsD,OAAOC,SAAS,eACrBvD,KAAKsD,OAAOC,SAAS,kBACvB,EACAE,WAAY,CACVyK,YAAAA,EAAAA,EACA7B,UAAAA,GACAK,SAAAA,GACAC,eAAAA,GACAwB,UAAAA,GACAC,SAAAA,GACAC,eAAAA,GACAvE,eAAAA,GAAAA,EACAwE,YAAAA,GACA1K,SAAAA,EAAAA,GAEFC,SAAU,CACR0K,aAAY,WACV,OAAOvO,KAAKsD,OAAOW,MAAMuK,SAASD,YACpC,EACApK,KAAI,WACF,OAAOnE,KAAKsD,OAAOW,MAAMG,MAAMC,WACjC,GAEFvE,QAAS,CACPgF,cAAa,SAAEpF,GACb,OAAOM,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkBc,cAAc,CAAEpF,KAAAA,IAC5Da,MAAK,SAACwE,GACL,IAAKA,EACH,MAAM,IAAIC,MAAM,SAEpB,GACJ,EACAC,aAAY,SAAEvF,GACZ,OAAOM,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkBiB,aAAa,CAAEvF,KAAAA,IAC3Da,MAAK,SAACwE,GACL,IAAKA,EACH,MAAM,IAAIC,MAAM,SAEpB,GACJ,EACAP,+BAA8B,SAAEL,GAE9B,OAAOA,EAAMe,KAAI,SAAChB,GAEhB,OAAIA,GAAQA,EAAKiB,SAGRjB,EAAKkB,YAAc,IAAMC,SAASC,SAEpCpB,EAAKkB,WACd,IAAGG,KAAK,KACV,EACAiJ,YAAW,SAAEC,GACX1O,KAAK+C,UAAY2L,CACnB,EACAC,qBAAoB,SAAEC,GAAS,IAAAvO,EAAA,KAC7B,OAAOwO,KAAOD,GAAS,SAAC3F,GAEtB,OADqB5I,EAAKiD,OAAOyF,QAAQG,aAAa7I,EAAK4I,QACvCG,UAAYH,IAAW5I,EAAK8D,KAAKK,EACvD,GACF,EACAsK,mBAAkB,SAAEF,GAAS,IAAAjJ,EAAA,KAC3B,OAAOkJ,KAAOD,GAAS,SAAC3F,GAEtB,OADqBtD,EAAKrC,OAAOyF,QAAQG,aAAavD,EAAKsD,QACvCU,QAAUV,IAAWtD,EAAKxB,KAAKK,EACrD,GACF,EACAuK,aAAY,SAAEnH,GACZ,OAAO5H,KAAKsD,OAAOC,SAAS,cAAe,CAAEqE,MAAAA,IAC1CrH,MAAK,SAAC6D,GAAK,OAAKe,KAAIf,EAAO,KAAK,GACrC,EACA4K,WAAU,SAAEC,GACV,OAAOjP,KAAKsD,OAAOC,SAAS,aAAc0L,EAC5C,EACAC,aAAY,SAAED,GACZ,OAAOjP,KAAKsD,OAAOC,SAAS,eAAgB0L,EAC9C,EACAE,UAAS,SAAEF,GACT,OAAOjP,KAAKsD,OAAOC,SAAS,YAAa0L,EAC3C,EACAG,YAAW,SAAEH,GACX,OAAOjP,KAAKsD,OAAOC,SAAS,cAAe0L,EAC7C,EACAI,qBAAoB,SAAEC,GAAM,IAAAC,EAAA,KAC1B,OAAOD,EAAKzH,QAAO,SAAAd,GAAG,OAAKwI,EAAKpL,KAAK4F,YAAYC,SAASjD,EAAI,GAChE,EACAyI,kBAAiB,SAAE5H,GAAO,IAAA6H,EAAA,KACxB,OAAO,IAAIC,SAAQ,SAACC,EAASd,GAC3Bc,EAAQF,EAAKlB,aAAa1G,QAAO,SAAAd,GAAG,OAAIA,EAAI6I,cAAc5F,SAASpC,EAAM,IAC3E,GACF,EACAiI,cAAa,SAAEC,GACb,OAAO9P,KAAKsD,OAAOC,SAAS,gBAAiBuM,EAC/C,IC7HJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,sRlBNzD9O,EAAAA,EAAAA,IAsJe+O,EAAA,CArJZ,mBAAiB,EAClBpR,MAAM,wB,mBAEN,iBAiDM,EAjDNC,EAAAA,EAAAA,GAiDM,OAjDAiH,MAAOhF,EAAAQ,GAAG,wB,EACdzC,EAAAA,EAAAA,GAYM,MAZN0C,EAYM,EAXJC,EAAAA,EAAAA,IAUcyO,EAAA,CATXnI,OAAQhH,EAAA8N,qBACR/G,MAAO/G,EAAAkO,aACPjH,YAAajH,EAAAQ,GAAG,kC,CAENO,SAAOyI,EAAAA,EAAAA,KAChB,SADkB4F,GAAG,QACrB1O,EAAAA,EAAAA,IAEE2O,EAAA,CADC,UAASD,EAAItH,M,oEAKtBpH,EAAAA,EAAAA,IAkCY4O,EAAA,CAjCT7C,SAAS,EACT,UAAS,SAAA8C,GAAC,OAAIA,CAAC,G,CAELC,QAAMhG,EAAAA,EAAAA,KACf,SAAAuB,GAAA,IADkBlB,EAAQkB,EAARlB,SAAQ,QAC1B9L,EAAAA,EAAAA,GAqBM,MArBN6C,EAqBM,CAnBIiJ,EAAShC,OAAS,IAAH,WADvB1H,EAAAA,EAAAA,IASiBoJ,EAAA,C,MAPfzL,MAAM,wCACLgE,MAAK,kBAAQ9B,EAAAmO,WAAWtE,EAAQ,G,CAGtB5B,UAAQuB,EAAAA,EAAAA,KACjB,iBAAoC,mBAAjCxJ,EAAAQ,GAAG,6BAAD,G,sBAFP,iBAA2B,mBAAxBR,EAAAQ,GAAG,oBAAqB,IAC3B,G,0CAKMqJ,EAAShC,OAAS,IAAH,WADvB1H,EAAAA,EAAAA,IASiBoJ,EAAA,C,MAPfzL,MAAM,qBACLgE,MAAK,kBAAQ9B,EAAAqO,aAAaxE,EAAQ,G,CAGxB5B,UAAQuB,EAAAA,EAAAA,KACjB,iBAAsC,mBAAnCxJ,EAAAQ,GAAG,+BAAD,G,sBAFP,iBAA6B,mBAA1BR,EAAAQ,GAAG,sBAAuB,IAC7B,G,gDAMKsH,MAAI0B,EAAAA,EAAAA,KACb,SAAAiG,GAAA,IADgB3H,EAAI2H,EAAJ3H,KAAI,QACpBpH,EAAAA,EAAAA,IAA6B2O,EAAA,CAAjB,UAASvH,GAAI,oB,IAEhBmD,OAAKzB,EAAAA,EAAAA,KACd,iBAA8B,mBAA3BxJ,EAAAQ,GAAG,uBAAD,G,+BAKXzC,EAAAA,EAAAA,GA8FM,OA9FAiH,MAAOhF,EAAAQ,GAAG,uB,EACdE,EAAAA,EAAAA,IA4FewO,EAAA,M,kBA3Fb,iBAiDM,EAjDNnR,EAAAA,EAAAA,GAiDM,OAjDAiH,MAAOhF,EAAAQ,GAAG,wB,EACdzC,EAAAA,EAAAA,GAYM,MAZNsH,GAYM,EAXJ3E,EAAAA,EAAAA,IAUcyO,EAAA,CATXnI,OAAQhH,EAAAiO,mBACRlH,MAAO/G,EAAAkO,aACPjH,YAAajH,EAAAQ,GAAG,iC,CAENO,SAAOyI,EAAAA,EAAAA,KAChB,SADkB4F,GAAG,QACrB1O,EAAAA,EAAAA,IAEEgP,EAAA,CADC,UAASN,EAAItH,M,oEAKtBpH,EAAAA,EAAAA,IAkCWiP,EAAA,CAjCRlD,SAAS,EACT,UAAS,SAAA8C,GAAC,OAAIA,CAAC,G,CAELC,QAAMhG,EAAAA,EAAAA,KACf,SAAAoG,GAAA,IADkB/F,EAAQ+F,EAAR/F,SAAQ,QAC1B9L,EAAAA,EAAAA,GAqBM,MArBNuH,GAqBM,CAnBIuE,EAAShC,OAAS,IAAH,WADvB1H,EAAAA,EAAAA,IASiBoJ,EAAA,C,MAPfzL,MAAM,qBACLgE,MAAK,kBAAQ9B,EAAAsO,UAAUzE,EAAQ,G,CAGrB5B,UAAQuB,EAAAA,EAAAA,KACjB,iBAAmC,mBAAhCxJ,EAAAQ,GAAG,4BAAD,G,sBAFP,iBAA0B,mBAAvBR,EAAAQ,GAAG,mBAAoB,IAC1B,G,0CAKMqJ,EAAShC,OAAS,IAAH,WADvB1H,EAAAA,EAAAA,IASiBoJ,EAAA,C,MAPfzL,MAAM,qBACLgE,MAAK,kBAAQ9B,EAAAuO,YAAY1E,EAAQ,G,CAGvB5B,UAAQuB,EAAAA,EAAAA,KACjB,iBAAqC,mBAAlCxJ,EAAAQ,GAAG,8BAAD,G,sBAFP,iBAA4B,mBAAzBR,EAAAQ,GAAG,qBAAsB,IAC5B,G,gDAMKsH,MAAI0B,EAAAA,EAAAA,KACb,SAAAqG,GAAA,IADgB/H,EAAI+H,EAAJ/H,KAAI,QACpBpH,EAAAA,EAAAA,IAA4BgP,EAAA,CAAjB,UAAS5H,GAAI,oB,IAEfmD,OAAKzB,EAAAA,EAAAA,KACd,iBAA6B,mBAA1BxJ,EAAAQ,GAAG,sBAAD,G,gCAKXzC,EAAAA,EAAAA,GAuCM,OAvCAiH,MAAOhF,EAAAQ,GAAG,0B,EACdzC,EAAAA,EAAAA,GAYM,MAZNyH,GAYM,EAXJ9E,EAAAA,EAAAA,IAUcyO,EAAA,CATXnI,OAAQhH,EAAAwO,qBACRzH,MAAO/G,EAAA2O,kBACP1H,YAAajH,EAAAQ,GAAG,kC,CAENO,SAAOyI,EAAAA,EAAAA,KAChB,SADkB4F,GAAG,QACrB1O,EAAAA,EAAAA,IAEEoP,EAAA,CADC1G,OAAQgG,EAAItH,M,mEAKrBpH,EAAAA,EAAAA,IAwBiBqP,EAAA,CAvBdtD,SAAS,EACT,UAAS,SAAA8C,GAAC,OAAIA,CAAC,G,CAELC,QAAMhG,EAAAA,EAAAA,KACf,SAAAwG,GAAA,IADkBnG,EAAQmG,EAARnG,SAAQ,QAC1B9L,EAAAA,EAAAA,GAWM,MAXN+H,GAWM,CATI+D,EAAShC,OAAS,IAAH,WADvB1H,EAAAA,EAAAA,IASiBoJ,EAAA,C,MAPfzL,MAAM,qBACLgE,MAAK,kBAAQ9B,EAAAgP,cAAcnF,EAAQ,G,CAGzB5B,UAAQuB,EAAAA,EAAAA,KACjB,iBAA4C,mBAAzCxJ,EAAAQ,GAAG,qCAAD,G,sBAFP,iBAAmC,mBAAhCR,EAAAQ,GAAG,4BAA6B,IACnC,G,gDAMKsH,MAAI0B,EAAAA,EAAAA,KACb,SAAAyG,GAAA,IADgBnI,EAAImI,EAAJnI,KAAI,QACpBpH,EAAAA,EAAAA,IAAiCoP,EAAA,CAAhB1G,OAAQtB,GAAI,mB,IAEpBmD,OAAKzB,EAAAA,EAAAA,KACd,iBAA6B,mBAA1BxJ,EAAAQ,GAAG,sBAAD,G,mFmB/IV1C,MAAM,gB,IAELA,MAAM,gB,IASJA,MAAM,mB,IACFA,MAAM,S,IACRA,MAAM,e,UA2CdA,MAAM,gB,IAGFA,MAAM,gB,IAoBPA,MAAM,gB,uPCrDf,SAzByB,CACvBc,KAAI,WACF,MAAO,CACLsD,UAAW,UACXgO,qBAAsB/Q,KAAKsD,OAAOW,MAAMG,MAAMC,YAAY2M,sBAC1DhO,gBAAiB,GAErB,EACAS,WAAY,CACVwN,eAAAA,GAAAA,GAEFpN,S,uWAAQC,CAAA,CACNK,KAAI,WACF,OAAOnE,KAAKsD,OAAOW,MAAMG,MAAMC,WACjC,IACG6M,EAAAA,GAAAA,MAELpR,QAAS,CACPqR,2BAA0B,WACxBnR,KAAKsD,OAAOW,MAAMC,IAAIF,kBACnBmN,2BAA2B,CAAEC,SAAUpR,KAAK+Q,sBACjD,ICjBJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,yEFJzDvQ,EAAAA,EAAAA,IAoFM,OApFAqF,MAAOhF,EAAAQ,GAAG,2B,EACdzC,EAAAA,EAAAA,GAoDM,MApDN0C,GAoDM,EAnDJ1C,EAAAA,EAAAA,GAA0D,WAAA4C,EAAAA,EAAAA,IAAnDX,EAAAQ,GAAG,0CAAD,IACTzC,EAAAA,EAAAA,GAiDK,KAjDL6C,GAiDK,EAhDH7C,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfC,OAAO,UACPC,KAAK,mC,mBAEL,iBAA8D,mBAA3D1Q,EAAAQ,GAAG,uDAAD,G,aAGTzC,EAAAA,EAAAA,GAuCK,KAvCLoH,GAuCK,EAtCHpH,EAAAA,EAAAA,GAAuE,OAAvEqH,IAAuEzE,EAAAA,EAAAA,IAAhDX,EAAAQ,GAAG,qCAAD,IACzBzC,EAAAA,EAAAA,GAoCK,KApCLsH,GAoCK,EAnCHtH,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,gCAA8B,C,kBACjD,iBAAkD,mBAA/C1Q,EAAAQ,GAAG,2CAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,kCAAgC,C,kBACnD,iBAAoD,mBAAjD1Q,EAAAQ,GAAG,6CAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,kCAAgC,C,kBACnD,iBAAoD,mBAAjD1Q,EAAAQ,GAAG,6CAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,mCAAiC,C,kBACpD,iBAAqD,mBAAlD1Q,EAAAQ,GAAG,8CAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,gCAA8B,C,kBACjD,iBAAkD,mBAA/C1Q,EAAAQ,GAAG,2CAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,yCAAuC,C,kBAC1D,iBAA4D,mBAAzD1Q,EAAAQ,GAAG,qDAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,gCAA8B,C,kBACjD,iBAAkD,mBAA/C1Q,EAAAQ,GAAG,2CAAD,G,oBASTR,EAAA2Q,YAAc,IAAH,WADnBhR,EAAAA,EAAAA,IAwBM,MAxBN2F,GAwBM,EApBJvH,EAAAA,EAAAA,GAA0D,WAAA4C,EAAAA,EAAAA,IAAnDX,EAAAQ,GAAG,0CAAD,IACTzC,EAAAA,EAAAA,GAkBK,KAlBLwH,GAkBK,EAjBHxH,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,uBACLE,OAAO,K,mBAEP,iBAAkD,mBAA/C5Q,EAAAQ,GAAG,2CAAD,G,aAGTzC,EAAAA,EAAAA,GAQK,YAPH2C,EAAAA,EAAAA,IAMiB8P,EAAA,CALfC,OAAO,UACPC,KAAK,sBACLE,OAAO,K,mBAEP,iBAAoE,mBAAjE5Q,EAAAQ,GAAG,6DAAD,G,kCAKbzC,EAAAA,EAAAA,GAGM,MAHNyH,GAGM,EAFJzH,EAAAA,EAAAA,GAA8C,UAAA4C,EAAAA,EAAAA,IAAxCX,EAAAQ,GAAG,gCAAD,IACRzC,EAAAA,EAAAA,GAA+C,UAAA4C,EAAAA,EAAAA,IAAzCX,EAAAQ,GAAG,iCAAD,W,0BGjFL1C,MAAM,gB,IAELA,MAAM,gB,IAKFA,MAAM,2B,UAwFdA,MAAM,gB,IAGFA,MAAM,gB,sqBCjDhB,SA5CqB,CACnBc,KAAI,WAAI,IAAAY,EAAA,KACN,MAAO,CACLqR,qBAAsB1R,KAAKsD,OAAOyF,QAAQ4I,aAAaC,UAAUpM,KAAK,MACtEqM,uBAAwB,CAAC,MAAO,YAAa,QAAQ1M,KAAI,SAAA2M,GAAI,MAAK,CAChErL,IAAKqL,EACLvG,MAAOuG,EACPjM,MAAOxF,EAAKgB,GAAG,6BAAD4L,OAA8B6E,IAC7C,IAEL,EACArO,WAAY,CACVwN,eAAAA,GAAAA,EACAc,cAAAA,GAAAA,EACAC,eAAAA,GAAAA,GAEFnO,SAAQC,GAAAA,GAAA,IACHoN,EAAAA,GAAAA,MAAsB,IACzBe,gBAAiB,CACf1F,IAAG,WACD,OAAOvM,KAAK0R,oBACd,EACAQ,IAAG,SAAE3G,GACHvL,KAAK0R,qBAAuBnG,EAC5BvL,KAAKmS,sBAAsB5G,EAC7B,GAEF4G,sBAAqB,WAAI,IAAAxM,EAAA,KACvB,OAAOyM,MAAS,SAAC7G,GACf5F,EAAKrC,OAAOC,SAAS,YAAa,CAChC8O,KAAM,YACN9G,MAAO+G,KAAO/G,EAAMgH,MAAM,OAAO,SAACC,GAAI,OAAKC,KAAKD,GAAM9J,OAAS,CAAC,KAEpE,GAAG,IACL,IAGFN,MAAO,CACLsK,gBAAe,WACb1S,KAAKsD,OAAOC,SAAS,gBACvB,ICxCJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,kIFJzD/C,EAAAA,EAAAA,IA2GM,OA3GAqF,MAAOhF,EAAAQ,GAAG,uB,EACdzC,EAAAA,EAAAA,GA4FM,MA5FN0C,GA4FM,EA3FJ1C,EAAAA,EAAAA,GAAmC,WAAA4C,EAAAA,EAAAA,IAA5BX,EAAAQ,GAAG,mBAAD,IACTzC,EAAAA,EAAAA,GAyFK,KAzFL6C,GAyFK,EAxFH7C,EAAAA,EAAAA,GAmCK,YAlCH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,wBAAsB,C,kBACzC,iBAA2C,mBAAxC1Q,EAAAQ,GAAG,oCAAD,G,WAEPzC,EAAAA,EAAAA,GA8BK,KA9BLoH,GA8BK,EA7BHpH,EAAAA,EAAAA,GAQK,YAPH2C,EAAAA,EAAAA,IAMiB8P,EAAA,CALf,cAAY,uBACX,iBAAe,EAChBE,KAAK,yB,mBAEL,iBAA+C,mBAA5C1Q,EAAAQ,GAAG,wCAAD,G,aAGTzC,EAAAA,EAAAA,GASK,WAPKiC,EAAAsD,OAAI,WADZnD,EAAAA,EAAAA,IAOiBqQ,EAAA,C,MALf,cAAY,uBACX,iBAAe,EAChBE,KAAK,oB,mBAEL,iBAAuC,mBAApC1Q,EAAAQ,GAAG,gCAAD,G,8BAGTzC,EAAAA,EAAAA,GASK,WAPKiC,EAAAsD,OAAI,WADZnD,EAAAA,EAAAA,IAOiBqQ,EAAA,C,MALf,cAAY,uBACX,iBAAe,EAChBE,KAAK,kB,mBAEL,iBAAqC,mBAAlC1Q,EAAAQ,GAAG,8BAAD,G,kCAKbzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,mBAAiB,C,kBACpC,iBAAmC,mBAAhC1Q,EAAAQ,GAAG,4BAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,iBAAe,C,kBAClC,iBAAoC,mBAAjC1Q,EAAAQ,GAAG,6BAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,qBAAmB,C,kBACtC,iBAAwC,mBAArC1Q,EAAAQ,GAAG,iCAAD,G,YAIDR,EAAAsD,OAAI,WADZnD,EAAAA,EAAAA,IAOgB2R,EAAA,C,MALdnO,GAAG,kBACH+M,KAAK,kBACJqB,QAAS/R,EAAAgR,wB,mBAEV,iBAAwC,mBAArChR,EAAAQ,GAAG,iCAAD,G,0CAEPzC,EAAAA,EAAAA,GAQK,YAPHA,EAAAA,EAAAA,GAAwC,WAAA4C,EAAAA,EAAAA,IAAjCX,EAAAQ,GAAG,wBAAD,aACTzC,EAAAA,EAAAA,GAIE,YAHA4F,GAAG,Y,qDACM3D,EAAAoR,gBAAexK,CAAA,GACxB9I,MAAM,iB,kBADGkC,EAAAoR,oBAGXrT,EAAAA,EAAAA,GAAqD,YAAA4C,EAAAA,EAAAA,IAA7CX,EAAAQ,GAAG,mCAAD,MAEZzC,EAAAA,EAAAA,GAAyC,WAAA4C,EAAAA,EAAAA,IAAlCX,EAAAQ,GAAG,yBAAD,IACTzC,EAAAA,EAAAA,GAQK,YAPH2C,EAAAA,EAAAA,IAMiBsR,EAAA,CALftB,KAAK,gBACLE,OAAO,IACNqB,IAAK,G,mBAEN,iBAAmC,mBAAhCjS,EAAAQ,GAAG,4BAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,mBAAiB,C,kBACpC,iBAA2C,mBAAxC1Q,EAAAQ,GAAG,oCAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,yBAAuB,C,kBAC1C,iBAA8C,mBAA3C1Q,EAAAQ,GAAG,uCAAD,G,gBAMLR,EAAA2Q,YAAc,IAAH,WADnBhR,EAAAA,EAAAA,IAYM,MAZNyF,GAYM,EARJrH,EAAAA,EAAAA,GAA2C,WAAA4C,EAAAA,EAAAA,IAApCX,EAAAQ,GAAG,2BAAD,IACTzC,EAAAA,EAAAA,GAMK,KANLsH,GAMK,EALHtH,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,iBAAe,C,kBAClC,iBAAoC,mBAAjC1Q,EAAAQ,GAAG,6BAAD,G,iEGrGR1C,MAAM,gB,eAiCNA,MAAM,gB,qCAwCNA,MAAM,gB,IAEFA,MAAM,gB,IAKPC,EAAAA,EAAAA,GAAM,mB,IAUFD,MAAM,W,mBAcbA,MAAM,gB,IAMHC,EAAAA,EAAAA,GAAM,mB,IASFD,MAAM,W,yBAadA,MAAM,e,IAeJC,EAAAA,EAAAA,GAIO,QAHLmU,MAAM,WACP,qBAED,G,0BAoBDpU,MAAM,gB,IASHC,EAAAA,EAAAA,GAEO,YAFD,qBAEN,G,0BA6BHD,MAAM,gB,sDClNXA,MAAM,6B,IAEDA,MAAM,e,UAOPA,MAAM,gB,IASNC,EAAAA,EAAAA,GAAI,mB,0BAsBKD,MAAM,W,qCAsCNA,MAAM,a,IACJA,MAAM,W,IAaNA,MAAM,U,IAaJA,MAAM,uB,UAgBTA,MAAM,e,uCC3HjBA,MAAM,oB,0BAMJA,MAAM,iB,IAGLA,MAAM,gBCVhB,UACEK,MAAO,CACLgU,YAAa,CACX9T,KAAM2N,OACNjL,QAAS,iBAAO,CACdqR,YAAY,EACZC,MAAO,GACR,IAGLzT,KAAM,iBAAO,CAAC,CAAC,EACfoE,SAAU,CACRoP,WAAU,WAAM,OAAOjT,KAAKgT,YAAYC,UAAW,EACnDE,MAAK,WAAM,OAAOnT,KAAKgT,YAAYE,MAAMxK,OAAS,CAAE,EACpD0K,aAAY,WAAM,OAAOpT,KAAKiT,YAAcjT,KAAKmT,KAAM,ICL3D,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,wCFNzD3S,EAAAA,EAAAA,IAkBM,MAlBNC,GAkBM,CAjBMI,EAAAuS,eAAY,WAAtB5S,EAAAA,EAAAA,IAEK,KAAAc,IAAAE,EAAAA,EAAAA,IADAX,EAAAQ,GAAG,gCAAD,oBAEER,EAAAoS,aAAU,WAAnBzS,EAAAA,EAAAA,IAA0E,IAAAiB,IAAAD,EAAAA,EAAAA,IAAlDX,EAAAQ,GAAG,0CAAD,oBACVR,EAAAsS,QAAK,WAArB3S,EAAAA,EAAAA,IAYW8F,EAAAA,GAAA,CAAAG,IAAA,KAXT7H,EAAAA,EAAAA,GAEI,IAFJoH,IAEIxE,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,wCAAD,IAEPzC,EAAAA,EAAAA,GAOK,KAPLqH,GAOK,gBANHzF,EAAAA,EAAAA,IAKK8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAJY1F,EAAAmS,YAAYE,OAAK,SAAzBG,G,kBADT7S,EAAAA,EAAAA,IAKK,MAHFiG,IAAK4M,IAAI7R,EAAAA,EAAAA,IAEP6R,GAAI,E,gDGbR1U,MAAM,e,0BAkCTA,MAAM,e,gCC5BZ,SARgB,CACdK,MAAO,CAAC,YACRS,KAAM,iBAAO,CAAC,CAAC,EACfK,QAAS,CACPwT,QAAO,WAAMtT,KAAKuT,MAAM,UAAW,EACnCC,OAAM,WAAMxT,KAAKuT,MAAM,SAAU,ICErC,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,wCCJzD/S,EAAAA,EAAAA,IAgBM,aAfJoI,EAAAA,EAAAA,IAAQ/H,EAAAgI,OAAA,YACRjK,EAAAA,EAAAA,GAMS,UALPD,MAAM,qBACL8K,SAAU5I,EAAA4I,SACVrI,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAyS,SAAAzS,EAAAyS,QAAAxS,MAAAD,EAAAE,UAAO,K,QAEZF,EAAAQ,GAAG,oBAAD,EAAAZ,KAEP7B,EAAAA,EAAAA,GAMS,UALPD,MAAM,qBACL8K,SAAU5I,EAAA4I,SACVrI,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA2S,QAAA3S,EAAA2S,OAAA1S,MAAAD,EAAAE,UAAM,K,QAEXF,EAAAQ,GAAG,mBAAD,EAAAC,K,oOCZX,UACEtC,MAAO,CAAC,YACRS,KAAM,iBAAO,CACXE,OAAO,EACP8T,gBAAiB,GACjBC,YAAY,EACZT,YAAY,EACb,EACDxP,WAAY,CACV6P,QAASK,IAEX9P,S,uWAAQC,CAAA,CACN8P,YAAW,WACT,OAAO5T,KAAKoR,SAASyC,IACvB,IACG9P,EAAAA,EAAAA,IAAS,CACVC,kBAAmB,SAACC,GAAK,OAAKA,EAAMC,IAAIF,iBAAiB,KAG7DlE,QAAS,CACPgU,WAAU,WACR9T,KAAKuT,MAAM,WACb,EACAQ,iBAAgB,WAAM/T,KAAK0T,YAAa,CAAM,EAC9CM,aAAY,WACVhU,KAAKL,MAAQ,KACbK,KAAK0T,YAAa,CACpB,EACAO,kBAAiB,WAAI,IAAA5T,EAAA,KACnBL,KAAKL,MAAQ,KACbK,KAAKiT,YAAa,EAClBjT,KAAKgE,kBAAkBkQ,cAAc,CACnCC,SAAUnU,KAAKyT,kBAEdlT,MAAK,SAACmF,GACLrF,EAAK4S,YAAa,EACdvN,EAAI/F,MACNU,EAAKV,MAAQ+F,EAAI/F,OAGnBU,EAAKqT,YAAa,EAClBrT,EAAKkT,MAAM,cACb,GACJ,I,+NC4GJ,SApJY,CACV9T,KAAM,iBAAO,CACX2R,SAAU,CACRgD,WAAW,EACXC,SAAS,EACTR,MAAM,GAERS,WAAY,CACVrQ,MAAO,GACPsQ,cAAe,IAEjBvB,YAAa,CACXwB,aAAa,EACbvB,YAAY,EACZC,MAAO,IAETuB,YAAa,CACXC,iBAAkB,GAClBjO,IAAK,IAEPgN,gBAAiB,KACjBkB,gBAAiB,KACjBhV,MAAO,KACPiV,WAAW,EACZ,EACDnR,WAAY,CACV,iBAAkBoR,GAClB,aC5B6B,OAAgB,GAAQ,CAAC,CAAC,S,kENJzDrU,EAAAA,EAAAA,IAuCM,aAtCJ5B,EAAAA,EAAAA,GAkBM,MAlBN6B,GAkBM,EAjBJ7B,EAAAA,EAAAA,GAA6C,eAAA4C,EAAAA,EAAAA,IAAlCX,EAAAQ,GAAG,qBAAD,GAEJR,EAAA+S,aAIF,iBAJa,WADpBpT,EAAAA,EAAAA,IAMS,U,MAJP7B,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAiT,YAAAjT,EAAAiT,WAAAhT,MAAAD,EAAAE,UAAU,K,QAEfF,EAAAQ,GAAG,mBAAD,IAICR,EAAA+S,cAAW,WADnBpT,EAAAA,EAAAA,IAOS,U,MALP7B,MAAM,qBACL8K,SAAU5I,EAAA6S,WACVtS,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAmT,cAAAnT,EAAAmT,aAAAlT,MAAAD,EAAAE,UAAY,K,QAEjBF,EAAAQ,GAAG,oBAAD,EAAAC,MAAA,iBAKDT,EAAA6S,aAAU,WADlB1S,EAAAA,EAAAA,IAWU8T,EAAA,C,MATPrL,SAAU5I,EAAAoS,WACV8B,UAASlU,EAAAoT,kBACTe,SAAQnU,EAAAkT,kB,mBAET,iBAAsD,mBAAnDlT,EAAAQ,GAAG,+CAAgD,KACtD,aAAAzC,EAAAA,EAAAA,GAGC,S,qDAFUiC,EAAA4S,gBAAehM,CAAA,GACxBvI,KAAK,Y,kBADI2B,EAAA4S,mB,iEAKL5S,EAAAlB,QAAK,WADba,EAAAA,EAAAA,IAKM,MALNiB,IAKMD,EAAAA,EAAAA,IADDX,EAAAlB,OAAK,qB,KKJVsV,O,SAAQC,EACR5B,QAASK,IAEX9P,S,uWAAQC,CAAA,CACNqR,YAAW,WACT,OACGnV,KAAKoV,iBAAmBpV,KAAKqV,qBAC5BrV,KAAKoR,SAASiD,WACZrU,KAAKoR,SAASyC,OAAS7T,KAAKsV,kBACpC,EACAF,gBAAe,WACb,MAAiC,KAA1BpV,KAAKsU,WAAWrQ,OAA0C,aAA1BjE,KAAKsU,WAAWrQ,KACzD,EACAqR,mBAAkB,WAChB,MAAiC,aAA1BtV,KAAKsU,WAAWrQ,QAAyBjE,KAAKuV,YACvD,EACAC,WAAU,WACR,MAAyC,YAAlCxV,KAAKsU,WAAWC,aACzB,EACAkB,WAAU,WACR,MAAyC,YAAlCzV,KAAKsU,WAAWC,aACzB,EACAgB,aAAY,WACV,MAAyC,cAAlCvV,KAAKsU,WAAWC,aACzB,EACAc,oBAAmB,WACjB,OAAQrV,KAAKgT,YAAYC,YAAcjT,KAAKgT,YAAYE,MAAMxK,OAAS,CACzE,EACAgN,sBAAqB,WACnB,OAAO1V,KAAKgT,YAAYwB,WAC1B,IACGzQ,EAAAA,EAAAA,IAAS,CACVC,kBAAmB,SAACC,GAAK,OAAKA,EAAMC,IAAIF,iBAAiB,KAI7DlE,QAAS,CACP6V,YAAW,WACJ3V,KAAKoR,SAASiD,UACjBrU,KAAKsU,WAAWrQ,MAAQ,iBACxBjE,KAAK4V,mBAET,EACAA,iBAAgB,WAAI,IAAAvV,EAAA,KAIlB,OAHAL,KAAKgT,YAAYC,YAAa,EAC9BjT,KAAKgT,YAAYE,MAAQ,GAElBlT,KAAKgE,kBAAkB6R,yBAC3BtV,MAAK,SAACmF,GACLrF,EAAK2S,YAAYE,MAAQxN,EAAIwN,MAC7B7S,EAAK2S,YAAYC,YAAa,CAChC,GACJ,EACA6C,eAAc,WACZ9V,KAAKgT,YAAYwB,aAAc,CACjC,EACAuB,mBAAkB,WAAI,IAAApQ,EAAA,KACpB3F,KAAK4V,mBAAmBrV,MAAK,SAACmF,GAC5BC,EAAKqN,YAAYwB,aAAc,CACjC,GACF,EACAwB,kBAAiB,WACfhW,KAAKgT,YAAYwB,aAAc,CACjC,EAGAyB,SAAQ,WAAI,IAAA1G,EAAA,KACVvP,KAAKsU,WAAWrQ,MAAQ,WACxBjE,KAAKsU,WAAWC,cAAgB,UAChCvU,KAAKgE,kBAAkBkS,cACpB3V,MAAK,SAACmF,GACL6J,EAAKkF,YAAc/O,EACnB6J,EAAK+E,WAAWC,cAAgB,SAClC,GACJ,EACA4B,aAAY,WAAI,IAAA1G,EAAA,KACdzP,KAAKL,MAAQ,KACbK,KAAKgE,kBAAkBoS,cAAc,CACnCC,MAAOrW,KAAK2U,gBACZR,SAAUnU,KAAKyT,kBAEdlT,MAAK,SAACmF,GACDA,EAAI/F,MACN8P,EAAK9P,MAAQ+F,EAAI/F,MAGnB8P,EAAK6G,eACP,GACJ,EAEAA,cAAa,WACXtW,KAAKsU,WAAWC,cAAgB,WAChCvU,KAAKsU,WAAWrQ,MAAQ,WACxBjE,KAAKyT,gBAAkB,KACvBzT,KAAKL,MAAQ,KACbK,KAAKuW,eACP,EACAC,YAAW,WACTxW,KAAKsU,WAAWC,cAAgB,GAChCvU,KAAKsU,WAAWrQ,MAAQ,GACxBjE,KAAKyT,gBAAkB,KACvBzT,KAAKL,MAAQ,IACf,EAIM4W,cAAa,WAAI,IAAAE,EAAA,YAAAC,EAAAA,GAAAA,GAAAC,KAAAA,MAAA,SAAAC,IAAA,IAAAC,EAAA,OAAAF,KAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACAP,EAAKzS,kBAAkBiT,cAAa,OAA7C,KAANJ,EAAMC,EAAAI,MACDvX,MAAO,CAAFmX,EAAAE,KAAA,eAAAF,EAAAK,OAAA,iBAEc,OAD9BV,EAAKrF,SAAWyF,EAAOzF,SACvBqF,EAAKrF,SAASgD,WAAY,EAAI0C,EAAAK,OAAA,SACvBN,GAAM,wBAAAC,EAAAM,OAAA,GAAAR,EAAA,IALQF,EAMvB,GAEFW,QAAO,WAAI,IAAAC,EAAA,KACTtX,KAAKuW,gBAAgBhW,MAAK,WACxB+W,EAAK1C,WAAY,CACnB,GACF,GE/IF,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,iIXLjD/T,EAAA+T,WAAa/T,EAAAuQ,SAASgD,YAAS,WADvC5T,EAAAA,EAAAA,IAqIM,MArINC,GAqIM,EAjIJ7B,EAAAA,EAAAA,GAEM,MAFN0C,GAEM,EADJ1C,EAAAA,EAAAA,GAAuC,WAAA4C,EAAAA,EAAAA,IAAhCX,EAAAQ,GAAG,uBAAD,MAGXzC,EAAAA,EAAAA,GA4HM,YA1HKiC,EAAAuU,iB,iBAAe,WADxB5U,EAAAA,EAAAA,IAuCM,MAvCNiB,GAuCM,EAlCJ7C,EAAAA,EAAAA,GAAwD,WAAA4C,EAAAA,EAAAA,IAAjDX,EAAAQ,GAAG,wCAAD,IACTE,EAAAA,EAAAA,IAIEgW,EAAA,CAHCnG,SAAUvQ,EAAAuQ,SACVoG,aAAY3W,EAAA0V,cACZkB,WAAU5W,EAAA8U,a,iDAEb3P,GAEWnF,EAAAuQ,SAASiD,UAAO,WAA3B7T,EAAAA,EAAAA,IAyBM,MAAAyF,GAAA,CAtBKpF,EAAA6U,uB,iBAAqB,WAD9B1U,EAAAA,EAAAA,IAGE0W,EAAA,C,MADC,eAAc7W,EAAAmS,a,0BAGRnS,EAAA6U,uBAIF,iBAJuB,WAD9BlV,EAAAA,EAAAA,IAMS,U,MAJP7B,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAiV,gBAAAjV,EAAAiV,eAAAhV,MAAAD,EAAAE,UAAc,K,QAEnBF,EAAAQ,GAAG,6CAAD,IAGIR,EAAA6U,wBAAqB,WAAhClV,EAAAA,EAAAA,IAUM,MAAA0F,GAAA,EATJ3E,EAAAA,EAAAA,IAQUuT,EAAA,CAPPrL,SAAU5I,EAAAmS,YAAYC,WACtB8B,UAASlU,EAAAkV,mBACTf,SAAQnU,EAAAmV,mB,mBAET,iBAEI,EAFJpX,EAAAA,EAAAA,GAEI,IAFJuH,IAEI3E,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,+CAAD,G,yFAOJR,EAAAuU,kBAAe,WAA1B5U,EAAAA,EAAAA,IAiFM,MAAA4F,GAAA,EA9EJxH,EAAAA,EAAAA,GAA2C,WAAA4C,EAAAA,EAAAA,IAApCX,EAAAQ,GAAG,2BAAD,GAGAR,EAAAyU,oB,iBAAkB,WAD3BtU,EAAAA,EAAAA,IAGE0W,EAAA,C,MADC,eAAc7W,EAAAmS,a,0BAITnS,EAAAsU,cAAW,WADnB3U,EAAAA,EAAAA,IAMS,U,MAJP7B,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA2V,aAAA3V,EAAA2V,YAAA1V,MAAAD,EAAAE,UAAW,K,QAEhBF,EAAAQ,GAAG,mBAAD,oBAICR,EAAAsU,cAAW,WADnB3U,EAAAA,EAAAA,IAMS,U,MAJP7B,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAoV,UAAApV,EAAAoV,SAAAnV,MAAAD,EAAAE,UAAQ,K,QAEbF,EAAAQ,GAAG,2BAAD,oBAGSR,EAAAyU,qBAAkB,WAAlC9U,EAAAA,EAAAA,IAsDW8F,EAAAA,GAAA,CAAAG,IAAA,IArDA5F,EAAA2U,aAAU,WAAnBhV,EAAAA,EAAAA,IAAoE,IAAA6F,IAAA7E,EAAAA,EAAAA,IAA5CX,EAAAQ,GAAG,oCAAD,oBAEfR,EAAA4U,aAAU,WAArBjV,EAAAA,EAAAA,IAkDM,MAAAmG,GAAA,EAjDJ/H,EAAAA,EAAAA,GAgDM,MAhDNoI,GAgDM,EA/CJpI,EAAAA,EAAAA,GAWM,MAXNqI,GAWM,EAVJrI,EAAAA,EAAAA,GAA4C,WAAA4C,EAAAA,EAAAA,IAArCX,EAAAQ,GAAG,4BAAD,IACTzC,EAAAA,EAAAA,GAAyC,UAAA4C,EAAAA,EAAAA,IAAnCX,EAAAQ,GAAG,2BAAD,IACRE,EAAAA,EAAAA,IAGEoW,EAAA,CAFCpM,MAAO1K,EAAA4T,YAAYC,iBACnB9B,QAAS,CAAAgF,MAAA,M,mBAEZhZ,EAAAA,EAAAA,GAGI,UAAA4C,EAAAA,EAAAA,IAFCX,EAAAQ,GAAG,kCAAmC,MACzCG,EAAAA,EAAAA,IAAGX,EAAA4T,YAAYhO,KAAG,MAItB7H,EAAAA,EAAAA,GAiCM,MAjCNyI,GAiCM,EAhCJzI,EAAAA,EAAAA,GAAmC,WAAA4C,EAAAA,EAAAA,IAA5BX,EAAAQ,GAAG,mBAAD,IACTzC,EAAAA,EAAAA,GAA2C,UAAA4C,EAAAA,EAAAA,IAArCX,EAAAQ,GAAG,6BAAD,aACRzC,EAAAA,EAAAA,GAGC,S,qDAFUiC,EAAA8T,gBAAelN,CAAA,GACxBvI,KAAK,Q,kBADI2B,EAAA8T,oBAIX/V,EAAAA,EAAAA,GAA8D,UAAA4C,EAAAA,EAAAA,IAAxDX,EAAAQ,GAAG,+CAAgD,IAAC,aAC1DzC,EAAAA,EAAAA,GAGC,S,qDAFUiC,EAAA4S,gBAAehM,CAAA,GACxBvI,KAAK,Y,kBADI2B,EAAA4S,oBAGX7U,EAAAA,EAAAA,GAaM,MAbN0I,GAaM,EAZJ1I,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAsV,cAAAtV,EAAAsV,aAAArV,MAAAD,EAAAE,UAAY,K,QAEjBF,EAAAQ,GAAG,oCAAD,IAEPzC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA2V,aAAA3V,EAAA2V,YAAA1V,MAAAD,EAAAE,UAAW,K,QAEhBF,EAAAQ,GAAG,mBAAD,KAIDR,EAAAlB,QAAK,WADba,EAAAA,EAAAA,IAKM,MALN+G,IAKM/F,EAAAA,EAAAA,IADDX,EAAAlB,OAAK,wG,qBYiC1B,SA1JoB,CAClBF,KAAI,WACF,MAAO,CACLoY,SAAU,GACVC,kBAAkB,EAClBC,oBAAqB,GACrBC,cAAc,EACdC,iBAAiB,EACjBC,kCAAmC,GACnCC,oBAAoB,EACpBC,qBAAsB,CAAC,GAAI,GAAI,IAC/BC,iBAAiB,EACjBC,qBAAqB,EACrBC,kBAAmB,GACnBC,oBAAqB,GACrBC,cAAc,EACdC,kBAAkB,EAClBC,QAAS,GACTC,kBAAkB,EAClBC,eAAgB,GAChBC,YAAY,EACZC,eAAe,EAEnB,EACA1V,QAAO,WACLrD,KAAKsD,OAAOC,SAAS,eACrBvD,KAAKgZ,cACP,EACAvV,WAAY,CACVqG,eAAAA,GAAAA,EACAmP,IAAAA,GACArV,SAAAA,EAAAA,GAEFC,SAAU,CACRM,KAAI,WACF,OAAOnE,KAAKsD,OAAOW,MAAMG,MAAMC,WACjC,EACA6U,eAAc,WACZ,OAAOlZ,KAAKsD,OAAOW,MAAMuK,SAAS0K,cACpC,EACAC,YAAW,WAAI,IAAA9Y,EAAA,KACb,OAAOL,KAAKsD,OAAOW,MAAMkV,YAAYC,OAAOjU,KAAI,SAAAkU,GAC9C,MAAO,CACL7U,GAAI6U,EAAW7U,GACf8U,QAASD,EAAWE,SACpBC,WAAY,IAAIC,KAAKJ,EAAWK,aAAaC,mBAAmBC,GAAAA,EAAAA,wBAAsCvZ,EAAKwZ,MAAMC,SAErH,GACF,GAEFha,QAAS,CACPia,cAAa,WACX/Z,KAAKiY,iBAAkB,CACzB,EACA+B,cAAa,WAAI,IAAArU,EAAA,KACf3F,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkBgW,cAAc,CAAE7F,SAAUnU,KAAKkY,oCACpE3X,MAAK,SAACmF,GACc,YAAfA,EAAIX,QACNY,EAAKrC,OAAOC,SAAS,UACrBoC,EAAKsU,QAAQ7O,KAAK,CAAEiH,KAAM,UAE1B1M,EAAKwS,mBAAqBzS,EAAI/F,KAElC,GACJ,EACAua,eAAc,WAAI,IAAA3K,EAAA,KACV4K,EAAS,CACbhG,SAAUnU,KAAKoY,qBAAqB,GACpCgC,YAAapa,KAAKoY,qBAAqB,GACvCiC,wBAAyBra,KAAKoY,qBAAqB,IAErDpY,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkBkW,eAAeC,GACpD5Z,MAAK,SAACmF,GACc,YAAfA,EAAIX,QACNwK,EAAK8I,iBAAkB,EACvB9I,EAAK+I,qBAAsB,EAC3B/I,EAAK+K,WAEL/K,EAAK8I,iBAAkB,EACvB9I,EAAK+I,oBAAsB5S,EAAI/F,MAEnC,GACJ,EACA4a,YAAW,WAAI,IAAA9K,EAAA,KACP0K,EAAS,CACbK,MAAOxa,KAAK6X,SACZ1D,SAAUnU,KAAK+X,qBAEjB/X,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkBuW,YAAYJ,GACjD5Z,MAAK,SAACmF,GACc,YAAfA,EAAIX,QACN0K,EAAKuI,cAAe,EACpBvI,EAAKqI,kBAAmB,IAExBrI,EAAKuI,cAAe,EACpBvI,EAAKqI,iBAAmBpS,EAAI/F,MAEhC,GACJ,EACA8a,YAAW,WAAI,IAAAhE,EAAA,KACP0D,EAAS,CACbO,cAAe1a,KAAKuY,kBACpBpE,SAAUnU,KAAKwY,qBAEjBxY,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkByW,YAAYN,GACjD5Z,MAAK,SAACmF,GACc,YAAfA,EAAIX,QACN0R,EAAKgC,cAAe,EACpBhC,EAAKiC,kBAAmB,IAExBjC,EAAKgC,cAAe,EACpBhC,EAAKiC,iBAAmBhT,EAAI/F,MAEhC,GACJ,EACAgb,YAAW,SAAEC,GAAO,IAAAtD,EAAA,KAClBtX,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkB6W,YAAY,CAAED,MAAAA,IACnDra,MAAK,kBAAM+W,EAAK0B,cAAc,GACnC,EACA8B,SAAQ,WAAI,IAAAC,EAAA,KACV/a,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkB8W,SAAS,CAAEF,MAAO5a,KAAK6Y,iBAC5DtY,MAAK,SAACmF,GACLqV,EAAKjC,YAAa,EAClBiC,EAAKhC,eAAgB,EACrBgC,EAAKlC,eAAiB,EACxB,IAAE,OACK,SAAClZ,GACNob,EAAKjC,YAAa,EAClBiC,EAAKhC,cAAgBpZ,CACvB,IACCY,MAAK,kBAAMwa,EAAK/B,cAAc,GACnC,EACAA,aAAY,WAAI,IAAAgC,EAAA,KACdhb,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkBiX,cACrC1a,MAAK,SAACmF,GACLsV,EAAKrC,QAAUjT,EAAIiT,QACnBqC,EAAKpC,kBAAmB,CAC1B,IAAE,OACK,SAACjZ,GACNqb,EAAKpC,iBAAmBjZ,EAAMA,KAChC,GACJ,EACA2a,OAAM,WACJta,KAAKsD,OAAOC,SAAS,UACrBvD,KAAKia,QAAQiB,QAAQ,IACvB,EACAC,YAAW,SAAE3W,GACP4W,OAAO9H,QAAQ,GAADrG,OAAIjN,KAAK6Z,MAAMwB,EAAE,yBAAwB,OACzDrb,KAAKsD,OAAOC,SAAS,cAAeiB,EAExC,ICpJJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,wGdJzDhE,EAAAA,EAAAA,IAqPM,OArPAqF,MAAOhF,EAAAQ,GAAG,0B,EACdzC,EAAAA,EAAAA,GA+BM,MA/BN0C,GA+BM,EA9BJ1C,EAAAA,EAAAA,GAA0C,WAAA4C,EAAAA,EAAAA,IAAnCX,EAAAQ,GAAG,0BAAD,IACTzC,EAAAA,EAAAA,GAOM,aANJA,EAAAA,EAAAA,GAAqC,UAAA4C,EAAAA,EAAAA,IAA/BX,EAAAQ,GAAG,uBAAD,aACRzC,EAAAA,EAAAA,GAIC,S,qDAHUiC,EAAAgX,SAAQpQ,CAAA,GACjBvI,KAAK,QACLoc,aAAa,S,kBAFJza,EAAAgX,eAKbjZ,EAAAA,EAAAA,GAOM,aANJA,EAAAA,EAAAA,GAA4C,UAAA4C,EAAAA,EAAAA,IAAtCX,EAAAQ,GAAG,8BAAD,aACRzC,EAAAA,EAAAA,GAIC,S,qDAHUiC,EAAAkX,oBAAmBtQ,CAAA,GAC5BvI,KAAK,WACLoc,aAAa,oB,kBAFJza,EAAAkX,0BAKbnZ,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA0Z,aAAA1Z,EAAA0Z,YAAAzZ,MAAAD,EAAAE,UAAW,K,QAEhBF,EAAAQ,GAAG,kBAAD,GAEER,EAAAmX,eAAY,WAArBxX,EAAAA,EAAAA,IAEI,IAAAiB,IAAAD,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,2BAAD,qBAE8B,IAArBR,EAAAiX,mBAAgB,WAAhCtX,EAAAA,EAAAA,IAGW8F,EAAAA,GAAA,CAAAG,IAAA,KAFT7H,EAAAA,EAAAA,GAA8C,UAAA4C,EAAAA,EAAAA,IAAxCX,EAAAQ,GAAG,gCAAD,IACRzC,EAAAA,EAAAA,GAA6B,UAAA4C,EAAAA,EAAAA,IAAvBX,EAAAiX,kBAAgB,4BAI1BlZ,EAAAA,EAAAA,GAsCM,MAtCNoH,GAsCM,EArCJpH,EAAAA,EAAAA,GAA6C,WAAA4C,EAAAA,EAAAA,IAAtCX,EAAAQ,GAAG,6BAAD,IACTzC,EAAAA,EAAAA,GAMM,aALJA,EAAAA,EAAAA,GAA4C,UAAA4C,EAAAA,EAAAA,IAAtCX,EAAAQ,GAAG,8BAAD,aACRzC,EAAAA,EAAAA,GAGC,S,qDAFUiC,EAAAuX,qBAAqB,GAAD3Q,CAAA,GAC7BvI,KAAK,Y,kBADI2B,EAAAuX,qBAAqB,SAIlCxZ,EAAAA,EAAAA,GAMM,aALJA,EAAAA,EAAAA,GAAwC,UAAA4C,EAAAA,EAAAA,IAAlCX,EAAAQ,GAAG,0BAAD,aACRzC,EAAAA,EAAAA,GAGC,S,qDAFUiC,EAAAuX,qBAAqB,GAAD3Q,CAAA,GAC7BvI,KAAK,Y,kBADI2B,EAAAuX,qBAAqB,SAIlCxZ,EAAAA,EAAAA,GAMM,aALJA,EAAAA,EAAAA,GAAgD,UAAA4C,EAAAA,EAAAA,IAA1CX,EAAAQ,GAAG,kCAAD,aACRzC,EAAAA,EAAAA,GAGC,S,qDAFUiC,EAAAuX,qBAAqB,GAAD3Q,CAAA,GAC7BvI,KAAK,Y,kBADI2B,EAAAuX,qBAAqB,SAIlCxZ,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAqZ,gBAAArZ,EAAAqZ,eAAApZ,MAAAD,EAAAE,UAAc,K,QAEnBF,EAAAQ,GAAG,kBAAD,GAEER,EAAAwX,kBAAe,WAAxB7X,EAAAA,EAAAA,IAEI,IAAAyF,IAAAzE,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,8BAAD,KAE+B,IAAxBR,EAAAyX,sBAAmB,WAAjC9X,EAAAA,EAAAA,IAEI,IAAA0F,IAAA1E,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,mCAAD,oBAEER,EAAAyX,sBAAmB,WAA5B9X,EAAAA,EAAAA,IAEI,IAAA2F,IAAA3E,EAAAA,EAAAA,IADCX,EAAAyX,qBAAmB,uBAI1B1Z,EAAAA,EAAAA,GA4BM,MA5BNwH,GA4BM,EA3BJxH,EAAAA,EAAAA,GAA0C,WAAA4C,EAAAA,EAAAA,IAAnCX,EAAAQ,GAAG,0BAAD,IACTzC,EAAAA,EAAAA,GAyBQ,QAzBRyH,GAyBQ,EAxBNzH,EAAAA,EAAAA,GAMQ,eALNA,EAAAA,EAAAA,GAIK,YAHHA,EAAAA,EAAAA,GAAsC,WAAA4C,EAAAA,EAAAA,IAA/BX,EAAAQ,GAAG,sBAAD,IACTzC,EAAAA,EAAAA,GAAyC,WAAA4C,EAAAA,EAAAA,IAAlCX,EAAAQ,GAAG,yBAAD,GACTsF,QAGJ/H,EAAAA,EAAAA,GAgBQ,6BAfN4B,EAAAA,EAAAA,IAcK8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAbkB1F,EAAAsY,aAAW,SAAzBE,G,kBADT7Y,EAAAA,EAAAA,IAcK,MAZFiG,IAAK4S,EAAW7U,I,EAEjB5F,EAAAA,EAAAA,GAAiC,WAAA4C,EAAAA,EAAAA,IAA1B6X,EAAWC,SAAO,IACzB1a,EAAAA,EAAAA,GAAoC,WAAA4C,EAAAA,EAAAA,IAA7B6X,EAAWG,YAAU,IAC5B5a,EAAAA,EAAAA,GAOK,KAPLoI,GAOK,EANHpI,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAK,SAAAqG,GAAA,OAAE5G,EAAAsa,YAAY9B,EAAW7U,GAAE,I,QAE9B3D,EAAAQ,GAAG,0BAAD,EAAA4F,O,iBAOjB1F,EAAAA,EAAAA,IAAOga,IAEP3c,EAAAA,EAAAA,GAiEM,MAjENyI,GAiEM,EAhEJzI,EAAAA,EAAAA,GAA2C,WAAA4C,EAAAA,EAAAA,IAApCX,EAAAQ,GAAG,2BAAD,IACTzC,EAAAA,EAAAA,GAuBQ,eAtBNA,EAAAA,EAAAA,GAKQ,eAJNA,EAAAA,EAAAA,GAGK,YAFHA,EAAAA,EAAAA,GAAsD,WAAA4C,EAAAA,EAAAA,IAA/CX,EAAAQ,GAAG,sCAAD,GACTiG,QAGJ1I,EAAAA,EAAAA,GAeQ,6BAdN4B,EAAAA,EAAAA,IAaK8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAZa1F,EAAA8X,SAAO,SAAhBiC,G,kBADTpa,EAAAA,EAAAA,IAaK,MAXFiG,IAAKmU,GAAK,EAEXhc,EAAAA,EAAAA,GAAoB,WAAA4C,EAAAA,EAAAA,IAAboZ,GAAK,IACZhc,EAAAA,EAAAA,GAOK,KAPL2I,GAOK,EANH3I,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAK,SAAAqG,GAAA,OAAE5G,EAAA8Z,YAAYC,EAAK,I,QAEtB/Z,EAAAQ,GAAG,0BAAD,EAAAma,O,cAOP3a,EAAA+X,mBAAgB,WADxBpY,EAAAA,EAAAA,IAWM,MAXNkH,GAWM,mBAPD7G,EAAAQ,GAAG,8BAA+B,CAAhC1B,MAAkCkB,EAAAlB,SAAW,IAClD,IAAA4B,EAAAA,EAAAA,IAKEN,EAAA,CAJAtC,MAAM,8BACNwC,KAAK,QACJqG,MAAO3G,EAAAQ,GAAG,2CACVD,QAAKR,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAA+X,kBAAmB,CAAH,I,sCAG5Bha,EAAAA,EAAAA,GAcM,aAbJ2C,EAAAA,EAAAA,IASSka,EAAA,CARPC,QAAQ,4BACRC,IAAI,K,mBAEJ,iBAIO,CAJPhU,G,oBAMF/I,EAAAA,EAAAA,GAEC,S,qDADUiC,EAAAgY,eAAcpR,CAAA,I,kBAAd5G,EAAAgY,qBAGbja,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAia,UAAAja,EAAAia,SAAAha,MAAAD,EAAAE,UAAQ,K,QAEbF,EAAAQ,GAAG,kBAAD,GAEER,EAAAiY,aAAU,WAAnBtY,EAAAA,EAAAA,IAEI,IAAAob,IAAApa,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,yBAAD,qBAE2B,IAAlBR,EAAAkY,gBAAa,WAC3BvY,EAAAA,EAAAA,IAAqE,IAAAqb,IAAAra,EAAAA,EAAAA,IAA/DX,EAAAQ,GAAG,2BAA4B,CAA7B1B,MAAsCkB,EAAAkY,iBAAa,uBAI/Dna,EAAAA,EAAAA,GAsCM,MAtCNkd,GAsCM,EArCJld,EAAAA,EAAAA,GAA0C,WAAA4C,EAAAA,EAAAA,IAAnCX,EAAAQ,GAAG,0BAAD,IACTzC,EAAAA,EAAAA,GAA8C,UAAA4C,EAAAA,EAAAA,IAAxCX,EAAAQ,GAAG,gCAAD,IACRzC,EAAAA,EAAAA,GAcM,aAbJ2C,EAAAA,EAAAA,IASSka,EAAA,CARPC,QAAQ,+BACRC,IAAI,K,CAEOI,SAAO1R,EAAAA,EAAAA,KAChB,iBAEO,CAFP2R,G,oBAKJpd,EAAAA,EAAAA,GAEC,S,uDADUiC,EAAA0X,kBAAiB9Q,CAAA,I,kBAAjB5G,EAAA0X,wBAGb3Z,EAAAA,EAAAA,GAOM,aANJA,EAAAA,EAAAA,GAA4C,UAAA4C,EAAAA,EAAAA,IAAtCX,EAAAQ,GAAG,8BAAD,aACRzC,EAAAA,EAAAA,GAIC,S,uDAHUiC,EAAA2X,oBAAmB/Q,CAAA,GAC5BvI,KAAK,WACLoc,aAAa,oB,kBAFJza,EAAA2X,0BAKb5Z,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,MAAAA,EAAA,sBAAEC,EAAA4Z,aAAA5Z,EAAA4Z,YAAA3Z,MAAAD,EAAAE,UAAW,K,QAEhBF,EAAAQ,GAAG,kBAAD,GAEER,EAAA4X,eAAY,WAArBjY,EAAAA,EAAAA,IAEI,IAAAyb,IAAAza,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,2BAAD,qBAE8B,IAArBR,EAAA6X,mBAAgB,WAC9BlY,EAAAA,EAAAA,IAA2E,IAAA0b,IAAA1a,EAAAA,EAAAA,IAArEX,EAAAQ,GAAG,8BAA+B,CAAhC1B,MAAyCkB,EAAA6X,oBAAgB,uBAIrE9Z,EAAAA,EAAAA,GAgCM,MAhCNud,GAgCM,EA/BJvd,EAAAA,EAAAA,GAA4C,WAAA4C,EAAAA,EAAAA,IAArCX,EAAAQ,GAAG,4BAAD,GACCR,EAAAoX,iBACH,iBADkB,WAAzBzX,EAAAA,EAAAA,IAEI,IAAA4b,IAAA5a,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,wCAAD,IAEIR,EAAAoX,kBAAe,WAA1BzX,EAAAA,EAAAA,IAaM,MAAA6b,GAAA,EAZJzd,EAAAA,EAAAA,GAAuD,UAAA4C,EAAAA,EAAAA,IAAjDX,EAAAQ,GAAG,yCAAD,IACRzC,EAAAA,EAAAA,GAAiC,UAAA4C,EAAAA,EAAAA,IAA3BX,EAAAQ,GAAG,mBAAD,aACRzC,EAAAA,EAAAA,GAGC,S,uDAFUiC,EAAAqX,kCAAiCzQ,CAAA,GAC1CvI,KAAK,Y,kBADI2B,EAAAqX,sCAGXtZ,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,MAAAA,EAAA,sBAAEC,EAAAmZ,eAAAnZ,EAAAmZ,cAAAlZ,MAAAD,EAAAE,UAAa,K,QAElBF,EAAAQ,GAAG,4BAAD,uBAGuB,IAAvBR,EAAAsX,qBAAkB,WAA3B3X,EAAAA,EAAAA,IAEI,IAAA8b,IAAA9a,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,kCAAD,oBAEER,EAAAsX,qBAAkB,WAA3B3X,EAAAA,EAAAA,IAEI,IAAA+b,IAAA/a,EAAAA,EAAAA,IADCX,EAAAsX,oBAAkB,oBAGdtX,EAAAoX,iBAIF,iBAJiB,WADxBzX,EAAAA,EAAAA,IAMS,U,MAJP7B,MAAM,qBACLyC,QAAKR,EAAA,MAAAA,EAAA,sBAAEC,EAAAkZ,eAAAlZ,EAAAkZ,cAAAjZ,MAAAD,EAAAE,UAAa,K,QAElBF,EAAAQ,GAAG,4BAAD,Y,aelPN1C,MAAM,e,IACJA,MAAM,gB,2IAgINA,MAAM,gB,IAENA,MAAM,qB,IAGJA,MAAM,4B,4BAiCRA,MAAM,gB,IAEJA,MAAM,6B,uCAwCRA,MAAM,gB,IAEJA,MAAM,6B,uCAwCRA,MAAM,gB,IAELA,MAAM,gB,IAwCFA,MAAM,2B,IAmBNA,MAAM,2B,kDCxTbA,MAAM,iB,eAEFA,MAAM,iC,eAQNA,MAAM,iC,2ICJjBE,EAAAA,GAAAA,IACEC,EAAAA,KA0HF,SAvHqB,CACnBE,MAAO,CACLwd,QAAS,CACPtd,KAAM,CAACI,OAAQ8b,OAAOqB,SACtBrd,UAAU,GAEZH,cAAe,CACbC,KAAMC,SACNC,UAAU,GAEZsd,eAAgB,CACdxd,KAAM2N,OAAM,mBAEV,MAAO,CACL8P,YAAa,EACbC,aAAc,EACdC,SAAU,EACVC,SAAS,EACTC,UAAU,EACVC,QAAQ,EAEZ,GAEFC,MAAO,CACL/d,KAAMI,OACNsC,QAAS,6DAEXsb,gBAAiB,CACfhe,KAAMI,QAER6d,+BAAgC,CAC9Bje,KAAMI,QAER8d,kBAAmB,CACjBle,KAAMI,SAGVG,KAAI,WACF,MAAO,CACL4d,aAASC,EACTC,aAASD,EACT3b,cAAU2b,EACVzd,YAAY,EAEhB,EACAgE,SAAU,CACR2Z,SAAQ,WACN,OAAOxd,KAAKkd,iBAAmBld,KAAKqB,GAAG,qBACzC,EACAoc,wBAAuB,WACrB,OAAOzd,KAAKmd,gCAAkCnd,KAAKqB,GAAG,sCACxD,EACAqc,WAAU,WACR,OAAO1d,KAAKod,mBAAqBpd,KAAKqB,GAAG,uBAC3C,GAEFvB,QAAS,CACP0M,QAAO,WACDxM,KAAKqd,SACPrd,KAAKqd,QAAQ7Q,UAEfxM,KAAKC,MAAMC,MAAMqL,MAAQ,GACzBvL,KAAKud,aAAUD,EACftd,KAAKuT,MAAM,QACb,EACAnT,OAAM,WAAmB,IAAAC,EAAA,KAAjBsd,IAAQ5c,UAAA2H,OAAA,QAAA4U,IAAAvc,UAAA,KAAAA,UAAA,GACdf,KAAKH,YAAa,EAClBG,KAAKf,cAAc0e,GAAY3d,KAAKqd,QAASrd,KAAKN,MAC/Ca,MAAK,kBAAMF,EAAKmM,SAAS,IAAC,SAClB,WACPnM,EAAKR,YAAa,CACpB,GACJ,EACA+d,UAAS,WACP5d,KAAKC,MAAMC,MAAMyC,OACnB,EACAkb,cAAa,WACX7d,KAAKqd,QAAU,IAAIS,KAAJ,CAAY9d,KAAKC,MAAM8d,IAAK/d,KAAK0c,eAClD,EACAsB,cAAa,WACX,MAA+B,YAAxBC,EAAAA,GAAAA,GAAOje,KAAKwc,SAAuBxc,KAAKwc,QAAUra,SAAS+b,cAAcle,KAAKwc,QACvF,EACA2B,SAAQ,WAAI,IAAAxY,EAAA,KACJyY,EAAYpe,KAAKC,MAAMC,MAC7B,GAAuB,MAAnBke,EAAUje,OAAuC,MAAtBie,EAAUje,MAAM,GAAY,CACzDH,KAAKN,KAAO0e,EAAUje,MAAM,GAC5B,IAAMke,EAAS,IAAIjD,OAAOkD,WAC1BD,EAAOE,OAAS,SAACC,GACf7Y,EAAK4X,QAAUiB,EAAE3X,OAAOgQ,OACxBlR,EAAK4N,MAAM,OACb,EACA8K,EAAOI,cAAcze,KAAKN,MAC1BM,KAAKuT,MAAM,UAAWvT,KAAKN,KAAM2e,EACnC,CACF,GAEFhH,QAAO,WAEL,IAAMmF,EAAUxc,KAAKge,gBAChBxB,EAGHA,EAAQkC,iBAAiB,QAAS1e,KAAK4d,WAFvC5d,KAAKuT,MAAM,QAAS,+BAAgC,QAKpCvT,KAAKC,MAAMC,MACnBwe,iBAAiB,SAAU1e,KAAKme,SAC5C,EACAQ,cAAe,WAEb,IAAMnC,EAAUxc,KAAKge,gBACjBxB,GACFA,EAAQoC,oBAAoB,QAAS5e,KAAK4d,WAE1B5d,KAAKC,MAAMC,MACnB0e,oBAAoB,SAAU5e,KAAKme,SAC/C,GCtHF,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,iEFNzD3d,EAAAA,EAAAA,IA6CM,MA7CNC,GA6CM,CA5COI,EAAA0c,UAAO,WAAlB/c,EAAAA,EAAAA,IAqCM,MAAAc,GAAA,EApCJ1C,EAAAA,EAAAA,GAOM,MAPN6C,GAOM,EANJ7C,EAAAA,EAAAA,GAKC,OAJC8B,IAAI,MACHme,IAAKhe,EAAA0c,QACNuB,IAAI,GACHC,OAAIne,EAAA,KAAAA,EAAA,IAAAoe,EAAAA,GAAAA,KAAA,kBAAOne,EAAAgd,eAAAhd,EAAAgd,cAAA/c,MAAAD,EAAAE,UAAa,e,eAG7BnC,EAAAA,EAAAA,GA2BM,MA3BNqH,GA2BM,EA1BJrH,EAAAA,EAAAA,GAME,UALAD,MAAM,qBACNO,KAAK,SACJuK,SAAU5I,EAAAhB,WACVuB,QAAKR,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAAT,QAAM,G,aACdoB,EAAAA,EAAAA,IAAQX,EAAS2c,W,YAEnB5e,EAAAA,EAAAA,GAME,UALAD,MAAM,qBACNO,KAAK,SACJuK,SAAU5I,EAAAhB,WACVuB,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA2L,SAAA3L,EAAA2L,QAAA1L,MAAAD,EAAAE,UAAO,G,aACfS,EAAAA,EAAAA,IAAQX,EAAW6c,a,YAErB9e,EAAAA,EAAAA,GAME,UALAD,MAAM,qBACNO,KAAK,SACJuK,SAAU5I,EAAAhB,WACVuB,QAAKR,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAAT,QAAO,EAAD,G,aACdoB,EAAAA,EAAAA,IAAQX,EAAwB4c,0B,WAG1B5c,EAAAhB,aAAU,WADlBmB,EAAAA,EAAAA,IAIEC,EAAA,C,MAFAC,KAAA,GACAC,KAAK,mB,qCAIXvC,EAAAA,EAAAA,GAKC,SAJC8B,IAAI,QACJxB,KAAK,OACLP,MAAM,0BACLsgB,OAAQpe,EAAAoc,O,sqBGrBfpe,EAAAA,GAAAA,IACEE,EAAAA,IACAmgB,EAAAA,IACApgB,EAAAA,KAGF,IAAMqgB,GAAa,CACjB1f,KAAI,WACF,MAAO,CACL2f,QAASpf,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYgb,eAC7CC,OAAQC,KAASvf,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYmb,aACrDC,UAAWzf,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYqb,OAC/CC,YAAa3f,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYub,SACjDC,aAAc7f,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYyb,cAClDC,UAAW/f,KAAKsD,OAAOW,MAAMG,MAAMC,YAAY2b,OAAO7a,KAAI,SAAA8a,GAAK,MAAK,CAAE5N,KAAM4N,EAAM5N,KAAM9G,MAAO0U,EAAM1U,MAAO,IAC5G2U,SAAUlgB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAY8b,UAC9CC,KAAMpgB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAY+b,KAC1CC,IAAKrgB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYgc,IACzCC,sBAAsB,EACtBC,iBAAiB,EACjBC,qBAAqB,EACrBC,OAAQ,KACRC,cAAe,KACfC,WAAY,KACZC,kBAAmB,KACnBC,cAAe7gB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYyc,UAAY,CAAC,IAEpE,EACArd,WAAY,CACVsd,cAAAA,GAAAA,EACAC,aAAAA,GACAC,WAAAA,GAAAA,EACA3S,YAAAA,GACAxE,eAAAA,GAAAA,EACAlG,SAAAA,EAAAA,EACAqN,eAAAA,GAAAA,EACAiQ,0BAAAA,GAAAA,GAEFrd,SAAQC,GAAAA,GAAA,CACNK,KAAI,WACF,OAAOnE,KAAKsD,OAAOW,MAAMG,MAAMC,WACjC,IACG6M,EAAAA,GAAAA,MAAsB,IACzBiQ,mBAAkB,WAChB,OAAOC,EAAAA,GAAAA,IAAU,CACfC,MAAO,GAAFpU,QAAAC,EAAAA,GAAAA,GACAlN,KAAKsD,OAAOyF,QAAQuY,oBAAiBpU,EAAAA,GAAAA,GACrClN,KAAKsD,OAAOW,MAAMuK,SAAS+S,cAEhCC,MAAOxhB,KAAKsD,QAEhB,EACAme,eAAc,WACZ,OAAOL,EAAAA,GAAAA,IAAU,CACfC,MAAO,GAAFpU,QAAAC,EAAAA,GAAAA,GACAlN,KAAKsD,OAAOyF,QAAQuY,oBAAiBpU,EAAAA,GAAAA,GACrClN,KAAKsD,OAAOW,MAAMuK,SAAS+S,eAGpC,EACAG,cAAa,WACX,OAAON,EAAAA,GAAAA,IAAU,CAAEI,MAAOxhB,KAAKsD,QACjC,EACAqe,aAAY,WACV,OAAO3hB,KAAKsD,OAAOW,MAAMuK,SAASmT,YACpC,EACAC,UAAS,WACP,OAAO5hB,KAAK2hB,aAAe3hB,KAAK2hB,aAAaC,UAAY,CAC3D,EACAC,cAAa,WACX,OAAO7hB,KAAKsD,OAAOW,MAAMuK,SAASsT,OAAS9hB,KAAKsD,OAAOW,MAAMuK,SAASqT,aACxE,EACAE,cAAa,WACX,OAAO/hB,KAAKsD,OAAOW,MAAMuK,SAASsT,OAAS9hB,KAAKsD,OAAOW,MAAMuK,SAASuT,aACxE,EACAC,gBAAe,WACb,IAAMC,EAAajiB,KAAKsD,OAAOW,MAAMuK,SAASqT,cAC9C,OAAS7hB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAY6d,mBAC7CliB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAY6d,kBAAkBlY,SAASiY,EACjE,EACAE,gBAAe,WACb,IAAMC,EAAapiB,KAAKsD,OAAOW,MAAMuK,SAASuT,cAC9C,OAAS/hB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYge,aAC7CriB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYge,YAAYrY,SAASoY,EAC3D,EACAE,oBAAmB,WACjB,OAAStiB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYke,gBAC/C,EACAC,aAAY,WAEV,OADYxiB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYoe,4BAChCziB,KAAK6hB,aACvB,EACAa,aAAY,WAEV,OADY1iB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYge,aAChCriB,KAAK+hB,aACvB,IAEFjiB,QAAS,CACP6iB,cAAa,WAAI,IAAAtiB,EAAA,KACT8Z,EAAS,CACbyI,KAAM5iB,KAAKsf,OACXI,OAAQ1f,KAAKyf,UAGboD,aAAc7iB,KAAKof,QACnB0D,kBAAmB9iB,KAAK+f,UAAUlY,QAAO,SAAAkb,GAAE,OAAU,MAANA,CAAU,IACzD1C,IAAKrgB,KAAKqgB,IACVF,UAAWngB,KAAKkgB,SAChBN,SAAU5f,KAAK2f,aAAe,GAC9BG,cAAe9f,KAAK6f,cAIlB7f,KAAK6gB,gBACP1G,EAAO2G,SAAWlH,GAAAA,EAAAA,6BAA2C5Z,KAAK6gB,gBAGpE7gB,KAAKsD,OAAOW,MAAMC,IAAIF,kBACnB2e,cAAc,CAAExI,OAAAA,IAChB5Z,MAAK,SAAC4D,GACL9D,EAAK0f,UAAU1U,OAAOlH,EAAK6b,OAAOtX,QAClCsa,KAAM3iB,EAAK0f,UAAW5b,EAAK6b,QAC3B3f,EAAKiD,OAAO2f,OAAO,cAAe,CAAC9e,IACnC9D,EAAKiD,OAAO2f,OAAO,iBAAkB9e,EACvC,GACJ,EACA+e,UAAS,SAAEC,GACTnjB,KAAKojB,gBAAkBD,CACzB,EACAE,SAAQ,WACN,OAAIrjB,KAAK+f,UAAUrX,OAAS1I,KAAK4hB,YAC/B5hB,KAAK+f,UAAU3U,KAAK,CAAEiH,KAAM,GAAI9G,MAAO,MAChC,EAGX,EACA+X,YAAW,SAAEC,EAAOC,GAClBxjB,KAAK+f,UAAU1U,OAAOkY,EAAO,EAC/B,EACAE,WAAU,SAAEC,EAAMlF,GAAG,IAAA7Y,EAAA,KACbjG,EAAO8e,EAAE3X,OAAO1G,MAAM,GAC5B,GAAKT,EACL,GAAIA,EAAKoD,KAAO9C,KAAKsD,OAAOW,MAAMuK,SAASkV,EAAO,SAAlD,CACE,IAAMC,EAAWC,GAAAA,EAAAA,eAAqClkB,EAAKoD,MACrD+gB,EAAcD,GAAAA,EAAAA,eAAqC5jB,KAAKsD,OAAOW,MAAMuK,SAASkV,EAAO,UAC3F1jB,KAAKsD,OAAOC,SAAS,mBAAoB,CACvCugB,WAAY,uBACZC,YAAa,CACX/jB,KAAKqB,GAAG,4BAA6B,CACnCsiB,SAAUA,EAASK,IACnBC,aAAcN,EAASO,KACvBL,YAAaA,EAAYG,IACzBG,gBAAiBN,EAAYK,QAGjCE,MAAO,SAGX,KAhBA,CAkBA,IAAM/F,EAAS,IAAIC,WACnBD,EAAOE,OAAS,SAAA3S,GAAgB,IACxBmS,EADiBnS,EAAN/E,OACEgQ,OACnBlR,EAAK+d,EAAO,WAAa3F,EACzBpY,EAAK+d,GAAQhkB,CACf,EACA2e,EAAOI,cAAc/e,EARrB,CASF,EACA2kB,YAAW,WACSjJ,OAAO9H,QAAQtT,KAAKqB,GAAG,mCAEvCrB,KAAKskB,kBAAahH,EAAW,GAEjC,EACAiH,YAAW,WACSnJ,OAAO9H,QAAQtT,KAAKqB,GAAG,mCAEvCrB,KAAKwkB,aAAa,GAEtB,EACAC,gBAAe,WACKrJ,OAAO9H,QAAQtT,KAAKqB,GAAG,uCAEvCrB,KAAK0kB,iBAAiB,GAE1B,EACAJ,aAAY,SAAEjH,EAAS3d,GACrB,IAAMilB,EAAO3kB,KACb,OAAO,IAAI0P,SAAQ,SAACC,EAASd,GAC3B,SAAS+V,EAAcC,EAAQC,GAC7BH,EAAKrhB,OAAOW,MAAMC,IAAIF,kBAAkB+gB,oBAAoB,CAAEF,OAAAA,EAAQC,WAAAA,IACnEvkB,MAAK,SAAC4D,GACLwgB,EAAKrhB,OAAO2f,OAAO,cAAe,CAAC9e,IACnCwgB,EAAKrhB,OAAO2f,OAAO,iBAAkB9e,GACrCwL,GACF,IAAE,OACK,SAAChQ,GACNglB,EAAKK,mBAAmBrlB,GACxBkP,EAAOlP,EACT,GACJ,CAEI0d,EACFA,EAAQ4H,mBAAmBC,QAAO,SAACzlB,GAAI,OAAKmlB,EAAanlB,EAAMC,EAAK2S,KAAK,GAAE3S,EAAKR,MAEhF0lB,EAAallB,EAAMA,EAAK2S,KAE5B,GACF,EACAmS,aAAY,SAAE/D,GAAQ,IAAAlR,EAAA,MACfvP,KAAK0gB,eAA4B,KAAXD,KAE3BzgB,KAAKugB,iBAAkB,EACvBvgB,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkB+gB,oBAAoB,CAAEtE,OAAAA,IAC3DlgB,MAAK,SAAC4D,GACLoL,EAAKjM,OAAO2f,OAAO,cAAe,CAAC9e,IACnCoL,EAAKjM,OAAO2f,OAAO,iBAAkB9e,GACrCoL,EAAKmR,cAAgB,IACvB,IAAE,MACK1gB,KAAKglB,oBAAmB,SACtB,WAAQzV,EAAKgR,iBAAkB,CAAM,IAClD,EACAmE,iBAAgB,SAAE/D,GAAY,IAAAlR,EAAA,MACvBzP,KAAK4gB,mBAAoC,KAAfD,KAE/B3gB,KAAKwgB,qBAAsB,EAC3BxgB,KAAKsD,OAAOW,MAAMC,IAAIF,kBAAkB+gB,oBAAoB,CAAEpE,WAAAA,IAC3DpgB,MAAK,SAACd,GACLgQ,EAAKnM,OAAO2f,OAAO,cAAe,CAACxjB,IACnCgQ,EAAKnM,OAAO2f,OAAO,iBAAkBxjB,GACrCgQ,EAAKmR,kBAAoB,IAC3B,IAAE,MACK5gB,KAAKglB,oBAAmB,SACtB,WAAQvV,EAAK+Q,qBAAsB,CAAM,IACtD,EACAwE,mBAAkB,SAAErlB,GAClBK,KAAKsD,OAAOC,SAAS,mBAAoB,CACvCugB,WAAY,uBACZC,YAAa,CAACpkB,EAAMwlB,SACpBf,MAAO,SAEX,EACAgB,cAAa,SAAEpmB,GACb,OAAOomB,EAAAA,GAAAA,GAAcpmB,EACvB,IAIJ,YCtQA,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,oNLNzDwB,EAAAA,EAAAA,IAsUM,MAtUNC,GAsUM,EArUJ7B,EAAAA,EAAAA,GA+HM,MA/HN0C,GA+HM,EA9HJ1C,EAAAA,EAAAA,GAAsC,WAAA4C,EAAAA,EAAAA,IAA/BX,EAAAQ,GAAG,sBAAD,IACTzC,EAAAA,EAAAA,GAAgC,UAAA4C,EAAAA,EAAAA,IAA1BX,EAAAQ,GAAG,kBAAD,IACRE,EAAAA,EAAAA,IAaa8jB,EAAA,C,WAZFxkB,EAAAue,Q,qDAAAve,EAAAue,QAAO3X,CAAA,GAChB,yBACC6d,QAASzkB,EAAA4gB,gB,CAEC7f,SAAOyI,EAAAA,EAAAA,KAChB,SADkBkb,GAAU,iBAC5B3mB,EAAAA,EAAAA,GAKC,SALD4mB,EAAAA,EAAAA,IAKC,CAJChhB,GAAG,W,qDACM3D,EAAAue,QAAO3X,CAAA,GAChB9I,MAAM,gBACEkC,EAAAukB,cAAcG,IAAU,iBAFvB1kB,EAAAue,W,sCAMfxgB,EAAAA,EAAAA,GAA+B,UAAA4C,EAAAA,EAAAA,IAAzBX,EAAAQ,GAAG,iBAAD,IACRE,EAAAA,EAAAA,IAYa8jB,EAAA,C,WAXFxkB,EAAAye,O,qDAAAze,EAAAye,OAAM7X,CAAA,GACf,yBACC6d,QAASzkB,EAAAsgB,oB,CAECvf,SAAOyI,EAAAA,EAAAA,KAChB,SADkBkb,GAAU,iBAC5B3mB,EAAAA,EAAAA,GAIE,YAJF4mB,EAAAA,EAAAA,IAIE,C,qDAHS3kB,EAAAye,OAAM7X,CAAA,GACf9I,MAAM,qBACEkC,EAAAukB,cAAcG,IAAU,iBAFvB1kB,EAAAye,U,qCAMG,UAATze,EAAAuf,MAA6B,cAATvf,EAAAuf,OAAI,WAAjC5f,EAAAA,EAAAA,IASI,IAAAiB,GAAA,EARFF,EAAAA,EAAAA,IAOWkK,EAAA,C,WAPQ5K,EAAAqf,S,qDAAArf,EAAAqf,SAAQzY,CAAA,I,mBACzB,iBAEW,CAFc,UAAT5G,EAAAuf,OAAI,WAApB5f,EAAAA,EAAAA,IAEW8F,EAAAA,GAAA,CAAAG,IAAA,sBADN5F,EAAAQ,GAAG,8BAAD,yBAEkB,cAATR,EAAAuf,OAAI,WAApB5f,EAAAA,EAAAA,IAEW8F,EAAAA,GAAA,CAAAG,IAAA,sBADN5F,EAAAQ,GAAG,kCAAD,yB,+CAIXzC,EAAAA,EAAAA,GAWM,aAVJA,EAAAA,EAAAA,GAA0C,UAAA4C,EAAAA,EAAAA,IAApCX,EAAAQ,GAAG,4BAAD,aACRzC,EAAAA,EAAAA,GAKC,SAJC4F,GAAG,W,qDACM3D,EAAA8e,YAAWlY,CAAA,GACpBvI,KAAK,OACLP,MAAM,kB,kBAFGkC,EAAA8e,gBAIXpe,EAAAA,EAAAA,IAEWkK,EAAA,C,WAFQ5K,EAAAgf,a,qDAAAhf,EAAAgf,aAAYpY,CAAA,I,mBAC7B,iBAA2C,mBAAxC5G,EAAAQ,GAAG,oCAAD,G,6BAGER,EAAA+gB,UAAY,IAAH,WAApBphB,EAAAA,EAAAA,IAsDM,MAAAwF,GAAA,EArDJpH,EAAAA,EAAAA,GAAgD,UAAA4C,EAAAA,EAAAA,IAA1CX,EAAAQ,GAAG,kCAAD,kBACRb,EAAAA,EAAAA,IA2CM8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IA1Ca1F,EAAAkf,WAAS,SAAlB0F,EAAGrV,G,kBADb5P,EAAAA,EAAAA,IA2CM,OAzCHiG,IAAK2J,EACNzR,MAAM,kB,EAEN4C,EAAAA,EAAAA,IAaa8jB,EAAA,C,WAZFxkB,EAAAkf,UAAU3P,GAAGiC,K,yCAAbxR,EAAAkf,UAAU3P,GAAGiC,KAAI5K,CAAA,EAC1B,yBACA,uBACC6d,QAASzkB,EAAA6gB,e,CAEC9f,SAAOyI,EAAAA,EAAAA,KAChB,SADkBkb,GAAU,iBAC5B3mB,EAAAA,EAAAA,GAIC,SAJD4mB,EAAAA,EAAAA,IAIC,C,yCAHU3kB,EAAAkf,UAAU3P,GAAGiC,KAAI5K,CAAA,EACzBK,YAAajH,EAAAQ,GAAG,iCACTR,EAAAukB,cAAcG,IAAU,QAAAtf,IAAA,QAFvBpF,EAAAkf,UAAU3P,GAAGiC,Q,+DAM5B9Q,EAAAA,EAAAA,IAaa8jB,EAAA,C,WAZFxkB,EAAAkf,UAAU3P,GAAG7E,M,yCAAb1K,EAAAkf,UAAU3P,GAAG7E,MAAK9D,CAAA,EAC3B,yBACA,uBACC6d,QAASzkB,EAAA6gB,e,CAEC9f,SAAOyI,EAAAA,EAAAA,KAChB,SADkBkb,GAAU,iBAC5B3mB,EAAAA,EAAAA,GAIC,SAJD4mB,EAAAA,EAAAA,IAIC,C,yCAHU3kB,EAAAkf,UAAU3P,GAAG7E,MAAK9D,CAAA,EAC1BK,YAAajH,EAAAQ,GAAG,kCACTR,EAAAukB,cAAcG,IAAU,QAAArf,IAAA,QAFvBrF,EAAAkf,UAAU3P,GAAG7E,S,+DAM5B3M,EAAAA,EAAAA,GASS,UARPD,MAAM,gDACLyC,QAAK,SAAAqG,GAAA,OAAE5G,EAAAyiB,YAAYlT,EAAC,G,CAIbvP,EAAAkf,UAAUrX,OAAS,IAAH,WADxB1H,EAAAA,EAAAA,IAGEC,EAAA,C,MADAE,KAAK,Y,iCAKHN,EAAAkf,UAAUrX,OAAS7H,EAAA+gB,YAAS,WADpCphB,EAAAA,EAAAA,IAOS,U,MALP7B,MAAM,mDACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAwiB,UAAAxiB,EAAAwiB,SAAAviB,MAAAD,EAAAE,UAAQ,I,EAEhBQ,EAAAA,EAAAA,IAAsBN,EAAA,CAAdE,KAAK,UAAM,QAAG,KACtBK,EAAAA,EAAAA,IAAGX,EAAAQ,GAAG,sCAAD,0CAGTzC,EAAAA,EAAAA,GAII,WAHF2C,EAAAA,EAAAA,IAEWkK,EAAA,C,WAFQ5K,EAAAwf,I,qDAAAxf,EAAAwf,IAAG5Y,CAAA,I,mBACpB,iBAAwB,mBAArB5G,EAAAQ,GAAG,iBAAD,G,8BAGTzC,EAAAA,EAAAA,GAMI,WALF2C,EAAAA,EAAAA,IAIEmkB,EAAA,CAHC,cAAa7kB,EAAAQ,GAAG,2BAChByf,SAAUjgB,EAAAggB,cACV,eAAc,SAAAxY,GAAG,OAAIxH,EAAAggB,cAAgBxY,CAAG,G,qDAG7CzJ,EAAAA,EAAAA,GAMS,UALN6K,SAAU5I,EAAAue,SAA8B,IAAnBve,EAAAue,QAAQ1W,OAC9B/J,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA8hB,eAAA9hB,EAAA8hB,cAAA7hB,MAAAD,EAAAE,UAAa,K,QAElBF,EAAAQ,GAAG,kBAAD,EAAA+E,OAGTxH,EAAAA,EAAAA,GAqCM,MArCNyH,GAqCM,EApCJzH,EAAAA,EAAAA,GAAoC,WAAA4C,EAAAA,EAAAA,IAA7BX,EAAAQ,GAAG,oBAAD,IACTzC,EAAAA,EAAAA,GAEI,IAFJ+H,IAEInF,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,qCAAD,IAEPzC,EAAAA,EAAAA,GAgBM,MAhBNoI,GAgBM,EAfJpI,EAAAA,EAAAA,GAGC,OAFEigB,IAAKhe,EAAAsD,KAAKse,2BACX9jB,MAAM,kB,YAGCkC,EAAAmhB,iBAAmBnhB,EAAAyf,uBAAoB,WADhD9f,EAAAA,EAAAA,IAUS,U,MARNgH,MAAO3G,EAAAQ,GAAG,yBACX1C,MAAM,+BACLyC,QAAKR,EAAA,MAAAA,EAAA,sBAAEC,EAAAwjB,aAAAxjB,EAAAwjB,YAAAvjB,MAAAD,EAAAE,UAAW,I,EAEnBQ,EAAAA,EAAAA,IAGEN,EAAA,CAFAE,KAAK,QACLjC,KAAK,Y,0BAIXN,EAAAA,EAAAA,GAA0C,UAAA4C,EAAAA,EAAAA,IAApCX,EAAAQ,GAAG,4BAAD,aACRzC,EAAAA,EAAAA,GAOS,UALP4F,GAAG,cACH7F,MAAM,qBACNO,KAAK,W,QAEF2B,EAAAQ,GAAG,4BAAD,aALGR,EAAAyf,yBAOV/e,EAAAA,EAAAA,IAKEokB,EAAA,CAJAnJ,QAAQ,eACP,iBAAgB3b,EAAAyjB,aAChBsB,OAAIhlB,EAAA,MAAAA,EAAA,aAAA6G,GAAA,OAAE5G,EAAAyf,sBAAoB,IAC1BuF,QAAKjlB,EAAA,MAAAA,EAAA,aAAA6G,GAAA,OAAE5G,EAAAyf,sBAAoB,K,8BAGhC1hB,EAAAA,EAAAA,GAyCM,MAzCN0I,GAyCM,EAxCJ1I,EAAAA,EAAAA,GAA4C,WAAA4C,EAAAA,EAAAA,IAArCX,EAAAQ,GAAG,4BAAD,IACTzC,EAAAA,EAAAA,GAaM,MAbN2I,GAaM,EAZJ3I,EAAAA,EAAAA,GAA6B,OAAvBigB,IAAKhe,EAAAsD,KAAKke,a,WAEPxhB,EAAAshB,iB,iBAAe,WADxB3hB,EAAAA,EAAAA,IAUS,U,MARP7B,MAAM,+BACL6I,MAAO3G,EAAAQ,GAAG,iCACVD,QAAKR,EAAA,MAAAA,EAAA,sBAAEC,EAAA0jB,aAAA1jB,EAAA0jB,YAAAzjB,MAAAD,EAAAE,UAAW,I,EAEnBQ,EAAAA,EAAAA,IAGEN,EAAA,CAFAE,KAAK,QACLjC,KAAK,Y,UAIXN,EAAAA,EAAAA,GAAkD,UAAA4C,EAAAA,EAAAA,IAA5CX,EAAAQ,GAAG,oCAAD,GAEAR,EAAA6f,gBAAa,WADrBlgB,EAAAA,EAAAA,IAIC,O,MAFC7B,MAAM,4BACLkgB,IAAKhe,EAAA6f,e,6BAER9hB,EAAAA,EAAAA,GAKM,aAJJA,EAAAA,EAAAA,GAGC,SAFCM,KAAK,OACJyB,SAAMC,EAAA,MAAAA,EAAA,aAAA6G,GAAA,OAAE5G,EAAA4iB,WAAW,SAAUhc,EAAM,I,WAIhC5G,EAAA0f,kBAAe,WADvBvf,EAAAA,EAAAA,IAKEC,EAAA,C,MAHAtC,MAAM,YACNuC,KAAA,GACAC,KAAK,kBAGMN,EAAA6f,gBAAa,WAD1BlgB,EAAAA,EAAAA,IAMS,U,MAJP7B,MAAM,qBACLyC,QAAKR,EAAA,MAAAA,EAAA,aAAA6G,GAAA,OAAE5G,EAAA2jB,aAAa3jB,EAAA4f,OAAM,K,QAExB5f,EAAAQ,GAAG,kBAAD,uBAGTzC,EAAAA,EAAAA,GAyCM,MAzCNgd,GAyCM,EAxCJhd,EAAAA,EAAAA,GAAgD,WAAA4C,EAAAA,EAAAA,IAAzCX,EAAAQ,GAAG,gCAAD,IACTzC,EAAAA,EAAAA,GAaM,MAbNid,GAaM,EAZJjd,EAAAA,EAAAA,GAAkC,OAA5BigB,IAAKhe,EAAAsD,KAAKoe,kB,WAEP1hB,EAAAyhB,qB,iBAAmB,WAD5B9hB,EAAAA,EAAAA,IAUS,U,MARP7B,MAAM,+BACL6I,MAAO3G,EAAAQ,GAAG,qCACVD,QAAKR,EAAA,MAAAA,EAAA,sBAAEC,EAAA4jB,iBAAA5jB,EAAA4jB,gBAAA3jB,MAAAD,EAAAE,UAAe,I,EAEvBQ,EAAAA,EAAAA,IAGEN,EAAA,CAFAE,KAAK,QACLjC,KAAK,Y,UAIXN,EAAAA,EAAAA,GAAsD,UAAA4C,EAAAA,EAAAA,IAAhDX,EAAAQ,GAAG,wCAAD,GAEAR,EAAA+f,oBAAiB,WADzBpgB,EAAAA,EAAAA,IAIC,O,MAFC7B,MAAM,4BACLkgB,IAAKhe,EAAA+f,mB,6BAERhiB,EAAAA,EAAAA,GAKM,aAJJA,EAAAA,EAAAA,GAGC,SAFCM,KAAK,OACJyB,SAAMC,EAAA,MAAAA,EAAA,aAAA6G,GAAA,OAAE5G,EAAA4iB,WAAW,aAAchc,EAAM,I,WAIpC5G,EAAA2f,sBAAmB,WAD3Bxf,EAAAA,EAAAA,IAKEC,EAAA,C,MAHAtC,MAAM,YACNuC,KAAA,GACAC,KAAK,kBAGMN,EAAA+f,oBAAiB,WAD9BpgB,EAAAA,EAAAA,IAMS,U,MAJP7B,MAAM,qBACLyC,QAAKR,EAAA,MAAAA,EAAA,aAAA6G,GAAA,OAAE5G,EAAA6jB,iBAAiB7jB,EAAA8f,WAAU,K,QAEhC9f,EAAAQ,GAAG,kBAAD,uBAGTzC,EAAAA,EAAAA,GA0EM,MA1ENsd,GA0EM,EAzEJtd,EAAAA,EAAAA,GAA6C,WAAA4C,EAAAA,EAAAA,IAAtCX,EAAAQ,GAAG,6BAAD,IACTzC,EAAAA,EAAAA,GAuEK,KAvELud,GAuEK,EAtEHvd,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfC,OAAO,UACPC,KAAK,U,mBAEL,iBAA6C,mBAA1C1Q,EAAAQ,GAAG,sCAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfC,OAAO,UACPC,KAAK,gB,mBAEL,iBAAiC,mBAA9B1Q,EAAAQ,GAAG,0BAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfC,OAAO,UACPC,KAAK,sB,mBAEL,iBAAyC,mBAAtC1Q,EAAAQ,GAAG,kCAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfC,OAAO,UACPC,KAAK,iB,mBAEL,iBAA+C,mBAA5C1Q,EAAAQ,GAAG,wCAAD,G,aAGTzC,EAAAA,EAAAA,GAkBK,YAjBH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfC,OAAO,UACPC,KAAK,iB,mBAEL,iBAA+C,mBAA5C1Q,EAAAQ,GAAG,wCAAD,G,WAEPzC,EAAAA,EAAAA,GAUK,KAVLwd,GAUK,EATHxd,EAAAA,EAAAA,GAQK,YAPH2C,EAAAA,EAAAA,IAMiB8P,EAAA,CALfC,OAAO,UACPC,KAAK,qBACL,cAAY,iB,mBAEZ,iBAAqD,mBAAlD1Q,EAAAQ,GAAG,8CAAD,G,iBAKbzC,EAAAA,EAAAA,GAkBK,YAjBH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfC,OAAO,UACPC,KAAK,e,mBAEL,iBAA6C,mBAA1C1Q,EAAAQ,GAAG,sCAAD,G,WAEPzC,EAAAA,EAAAA,GAUK,KAVLyd,GAUK,EATHzd,EAAAA,EAAAA,GAQK,YAPH2C,EAAAA,EAAAA,IAMiB8P,EAAA,CALfC,OAAO,UACPC,KAAK,mBACL,cAAY,e,mBAEZ,iBAAmD,mBAAhD1Q,EAAAQ,GAAG,4CAAD,G,+CM9TZ1C,MAAM,gB,IAELA,MAAM,gB,0BA2BFA,MAAM,2B,0BAwGLA,MAAM,mB,IAYTA,MAAM,mB,IACFA,MAAM,S,IACRA,MAAM,e,IAkDXA,MAAM,gB,IAELA,MAAM,gB,UAYNA,MAAM,2B,IAiFJA,MAAM,2B,IA2BJA,MAAM,2B,UAYJA,MAAM,e,2CAsFhBA,MAAM,gB,IAGFA,MAAM,gB,IAECmnB,IAAI,e,WC9ZrB,UACEriB,WAAY,CACVsiB,c,SAAAA,ICLJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,wEDJzD/kB,EAAAA,EAAAA,IAIgBglB,GAAAC,EAAAA,EAAAA,KAAAC,EAAAA,EAAAA,IAHNrlB,EAAAslB,SAAM,C,kBAEd,iBAAQ,EAARvd,EAAAA,EAAAA,IAAQ/H,EAAAgI,OAAA,W,+BEDRlK,MAAM,e,2pBCAH,IAAMynB,GAAc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,OAAQ,OAAQ,KACxGC,GAAyB,CAAC,KAAM,MAAO,MAGpD,SAAAviB,GAAAA,GAAA,GACKwiB,GAAAA,GAAO,IACV7iB,WAAUK,GAAAA,GAAA,GACLwiB,GAAAA,EAAAA,YAAkB,IACrBC,OAAAA,GAAAA,IAEFvnB,MAAK8E,GAAAA,GAAA,GACAwiB,GAAAA,EAAAA,OAAa,IAChBxT,IAAK0T,OACLC,MAAO,CACLvnB,KAAMsL,MACN5I,QAAS,kBAAMwkB,EAAW,KAG9BviB,SAAQC,GAAAA,GAAA,GACHwiB,GAAAA,EAAAA,UAAgB,IACnBI,UAAS,WACP,OAAO1mB,KAAKiE,MAAMiX,QAAQ,MAAO,GACnC,EACAyL,WAAU,WACR,OAAO3mB,KAAKiE,MAAMiX,QAAQ,MAAO,GACnC,IAEFpb,QAAOgE,GAAAA,GAAA,GACFwiB,GAAAA,EAAAA,SAAe,IAClBM,YAAW,SAAEpI,GACXxe,KAAK6mB,WAAW7mB,KAAKuR,KAAMuV,SAAStI,EAAE3X,OAAO0E,OAASvL,KAAK0mB,UAC7D,EACAK,WAAU,SAAEvI,GACVxe,KAAK6mB,WAAW7mB,KAAKuR,KAAMvR,KAAK2mB,WAAanI,EAAE3X,OAAO0E,MACxD,MC5BJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,sFFLjD1K,EAAAmmB,qBAAkB,WAD1BxmB,EAAAA,EAAAA,IAwCO,OAxCPC,GAwCO,EApCL7B,EAAAA,EAAAA,GAKQ,SAJLknB,IAAKjlB,EAAA0Q,KACN5S,MAAM,c,EAENiK,EAAAA,EAAAA,IAAQ/H,EAAAgI,OAAA,mBAEVjK,EAAAA,EAAAA,GASC,SARE4F,GAAI3D,EAAA0Q,KACL5S,MAAM,eACNO,KAAK,SACL+nB,KAAK,IACJxd,SAAU5I,EAAA4I,SACVqJ,IAAKjS,EAAAiS,KAAO,EACZvH,MAAO1K,EAAA8lB,WACPhmB,SAAMC,EAAA,KAAAA,EAAA,qBAAEC,EAAA+lB,aAAA/lB,EAAA+lB,YAAA9lB,MAAAD,EAAAE,UAAW,I,aAEtBQ,EAAAA,EAAAA,IAcS2lB,EAAA,CAbN1iB,GAAI3D,EAAA0Q,KACJ,cAAa1Q,EAAA6lB,UACbjd,SAAU5I,EAAA4I,SACX9K,MAAM,iBACLgC,SAAQE,EAAAkmB,Y,mBAGP,iBAAuB,gBADzBvmB,EAAAA,EAAAA,IAMS8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IALU1F,EAAA4lB,OAAK,SAAfU,G,kBADT3mB,EAAAA,EAAAA,IAMS,UAJNiG,IAAK0gB,EACL5b,MAAO4b,I,QAELA,GAAM,EAAAnhB,G,0EAEJ,KACTxE,EAAAA,EAAAA,IAAG,KAAM,MACTD,EAAAA,EAAAA,IAGE6lB,EAAA,CAFCC,QAASxmB,EAAAymB,UACTC,QAAS1mB,EAAA2mB,O,oSGxBhB3oB,EAAAA,GAAAA,IACE4oB,EAAAA,KAqGF,SAlGmB,CACjBhoB,KAAI,WAAI,IAAAY,EAAA,KACN,MAAO,CACLqnB,mBAAoB,CAAC,QAAS,OAAQ,SAASviB,KAAI,SAAA2M,GAAI,MAAK,CAC1DrL,IAAKqL,EACLvG,MAAOuG,EACPjM,MAAOxF,EAAKgB,GAAG,yBAAD4L,OAAmC,UAAT6E,EAAmB,WAAaA,IACzE,IACD6V,2BAA4B,CAAC,OAAQ,UAAUxiB,KAAI,SAAA2M,GAAI,MAAK,CAC1DrL,IAAKqL,EACLvG,MAAOuG,EACPjM,MAAOxF,EAAKgB,GAAG,iCAAD4L,OAAkC6E,IACjD,IACD8V,sCAAuC,CAAC,QAAS,UAAUziB,KAAI,SAAA2M,GAAI,MAAK,CACtErL,IAAKqL,EACLvG,MAAOuG,EACPjM,MAAOxF,EAAKgB,GAAG,8CAAD4L,OAA+C6E,IAC9D,IACD+V,0BAA2B,CAAC,QAAS,kBAAmB,QAAQ1iB,KAAI,SAAA2M,GAAI,MAAK,CAC3ErL,IAAKqL,EACLvG,MAAOuG,EACPjM,MAAOxF,EAAKgB,GAAG,iCAAD4L,OAAkC6E,IACjD,IACDgW,uBAAwB,CAAC,OAAQ,gBAAiB,YAAY3iB,KAAI,SAAA2M,GAAI,MAAK,CACzErL,IAAKqL,EACLvG,MAAOuG,EACPjM,MAAOxF,EAAKgB,GAAG,8BAAD4L,OAA+B6E,IAC9C,IACDiW,+BAAgC,CAAC,QAAS,OAAQ,QAAQ5iB,KAAI,SAAA2M,GAAI,MAAK,CACrErL,IAAKqL,EACLvG,MAAOuG,EACPjM,MAAOxF,EAAKgB,GAAG,uCAAD4L,OAAwC6E,IACvD,IACDkW,oBAEAnb,OAAOob,yBAAyBC,iBAAiBpa,UAAW,gBAE5DjB,OAAOob,yBAAyBE,iBAAiBra,UAAW,gCAE5DjB,OAAOob,yBAAyBE,iBAAiBra,UAAW,eAEhE,EACArK,WAAY,CACVwN,eAAAA,GAAAA,EACAc,cAAAA,GAAAA,EACAC,eAAAA,GAAAA,EACAoW,aAAAA,GACAC,YAAAA,GACAnH,0BAAAA,GAAAA,EACAH,cAAAA,GAAAA,EACAuH,wBAAAA,GAAAA,GAEFzkB,S,uWAAQC,CAAA,CACNykB,gBAAe,WACb,OAAOlC,EACT,EACAmC,YAAW,WACT,OAAOxoB,KAAKsD,OAAOW,MAAMuK,SAASga,aAAe,EACnD,EACAC,mBAAkB,WAAI,IAAA9iB,EAAA,KACpB,OAAO3F,KAAKwoB,YAAYrjB,KAAI,SAAAujB,GAAM,MAAK,CACrCjiB,IAAKiiB,EACLnd,MAAOmd,EACP7iB,MAAOF,EAAKtE,GAAG,6BAAD4L,OAA8Byb,EAAM,OACnD,GACH,EACAC,QAAO,WACL,IAAM7W,EAAO9R,KAAKsD,OAAOyF,QAAQ4I,aAAaiX,gBAExCC,EAAiB,SAAT/W,EAAkB,GAAK,CAAC,UAEtC,OAAI9R,KAAKsD,OAAOyF,QAAQ4I,aAAamX,cAAyB,aAAThX,EAC5C,GAAP7E,OAAW4b,EAAO,WAAW,YAEtB,CAAC,UAAW,WAAS5b,OAAK4b,EAErC,EACAE,6BAA4B,WAAM,OAAO/oB,KAAKsD,OAAOW,MAAMuK,SAASwa,yBAA0B,EAC9FC,sBAAqB,WACnB,OAAOjpB,KAAKsD,OAAOW,MAAMuK,SAASmS,aAC/B3gB,KAAKsD,OAAOW,MAAMG,MAAMC,YAAYke,gBACzC,EACA2G,wBAAuB,WAAM,OAAOlpB,KAAKsD,OAAOW,MAAMuK,SAAS2a,cAAe,EAC9ErI,SAAU,CACRvU,IAAK,WAAc,OAAOvM,KAAKsD,OAAOyF,QAAQ4I,aAAayX,iBAAkB,EAC7ElX,IAAK,SAAU7J,GACbrI,KAAKsD,OAAOC,SAAS,YAAa,CAAE8O,KAAM,oBAAqB9G,MAAOlD,GACxE,KAEC6I,EAAAA,GAAAA,MAELpR,QAAS,CACPupB,mBAAkB,SAAE9d,GAClBvL,KAAKsD,OAAOC,SAAS,mBAAoB,CAAE8O,KAAM,eAAgB9G,MAAAA,GACnE,ICxGJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,wTPNzD/K,EAAAA,EAAAA,IAqgBM,OArgBAqF,MAAOhF,EAAAQ,GAAG,qB,EACdzC,EAAAA,EAAAA,GAoMM,MApMN0C,GAoMM,EAnMJ1C,EAAAA,EAAAA,GAAuC,WAAA4C,EAAAA,EAAAA,IAAhCX,EAAAQ,GAAG,uBAAD,IACTzC,EAAAA,EAAAA,GAiMK,KAjML6C,GAiMK,EAhMH7C,EAAAA,EAAAA,GAMK,YALH2C,EAAAA,EAAAA,IAIEmkB,EAAA,CAHC,cAAa7kB,EAAAQ,GAAG,8BAChByf,SAAUjgB,EAAAigB,SACV,eAAc,SAAAzY,GAAG,OAAIxH,EAAAigB,SAAWzY,CAAG,G,oDAG9BxH,EAAAkoB,+BAA4B,WAAtCvoB,EAAAA,EAAAA,IAIK,KAAAwF,GAAA,EAHHzE,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,WAAS,C,kBAC5B,iBAA6B,mBAA1B1Q,EAAAQ,GAAG,sBAAD,G,6BAGCR,EAAAooB,wBAAqB,WAA/BzoB,EAAAA,EAAAA,IAIK,KAAAyF,GAAA,EAHH1E,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,yBAAuB,C,kBAC1C,iBAAmC,mBAAhC1Q,EAAAQ,GAAG,4BAAD,G,8BAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,YAAU,C,kBAC7B,iBAA8B,mBAA3B1Q,EAAAQ,GAAG,uBAAD,G,aAGTzC,EAAAA,EAAAA,GAcK,YAbH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,aAAW,C,kBAC9B,iBAA8B,mBAA3B1Q,EAAAQ,GAAG,uBAAD,G,WAEPzC,EAAAA,EAAAA,GASK,KATLsH,GASK,EARHtH,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,mBACL,cAAY,a,mBAEZ,iBAAuC,mBAApC1Q,EAAAQ,GAAG,gCAAD,G,iBAKbzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,kBACLE,OAAO,K,mBAEP,iBAAoC,mBAAjC5Q,EAAAQ,GAAG,6BAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,mBACLE,OAAO,K,mBAEP,iBAAsC,mBAAnC5Q,EAAAQ,GAAG,+BAAD,G,aAGTzC,EAAAA,EAAAA,GASK,YARH2C,EAAAA,EAAAA,IAOgBoR,EAAA,CANdnO,GAAG,0BACH+M,KAAK,0BACJqB,QAAS/R,EAAAknB,+BACVtW,OAAO,K,mBAEP,iBAA+C,mBAA5C5Q,EAAAQ,GAAG,wCAAD,G,2BAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,qBACLE,OAAO,K,mBAEP,iBAAgD,mBAA7C5Q,EAAAQ,GAAG,yCAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,0BACLE,OAAO,K,mBAEP,iBAA4C,mBAAzC5Q,EAAAQ,GAAG,qCAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,6BACLE,OAAO,K,mBAEP,iBAAkD,mBAA/C5Q,EAAAQ,GAAG,2CAAD,G,YAGCR,EAAAqoB,0BAAuB,WAAjC1oB,EAAAA,EAAAA,IAOK,KAAA2F,GAAA,EANH5E,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,eACLE,OAAO,K,mBAEP,iBAAkC,mBAA/B5Q,EAAAQ,GAAG,2BAAD,G,8BAGTzC,EAAAA,EAAAA,GAEK,YADHA,EAAAA,EAAAA,GAAqC,WAAA4C,EAAAA,EAAAA,IAA9BX,EAAAQ,GAAG,qBAAD,MAEXzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,wBAAsB,C,kBACzC,iBAA2C,mBAAxC1Q,EAAAQ,GAAG,oCAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,kBAAgB,C,kBACnC,iBAAoC,mBAAjC1Q,EAAAQ,GAAG,6BAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,gBAAc,C,kBACjC,iBAAkC,mBAA/B1Q,EAAAQ,GAAG,2BAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,uBAAqB,C,kBACxC,iBAA0C,mBAAvC1Q,EAAAQ,GAAG,mCAAD,G,aAGTzC,EAAAA,EAAAA,GASK,WAPKiC,EAAAsD,OAAI,WADZnD,EAAAA,EAAAA,IAOgB2R,EAAA,C,MALdnO,GAAG,kBACH+M,KAAK,kBACJqB,QAAS/R,EAAAinB,wB,mBAEV,iBAAsC,mBAAnCjnB,EAAAQ,GAAG,+BAAD,G,2CAGCR,EAAA2Q,YAAc,IAAH,WAArBhR,EAAAA,EAAAA,IAaK,KAAA4F,GAAA,mBAZAvF,EAAAQ,GAAG,0BAA2B,IACjC,IAAAzC,EAAAA,EAAAA,GAUM,MAVNyH,GAUM,gBATJ7F,EAAAA,EAAAA,IAQc8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IAPK1F,EAAA8nB,SAAO,SAAjBW,G,kBADTtoB,EAAAA,EAAAA,IAQcuoB,EAAA,CANX9iB,IAAK6iB,EACL/X,KAAM+X,EAAS,cACf7C,MAAO5lB,EAAA0nB,gBACR9W,OAAO,K,mBAEP,iBAA2C,mBAAxC5Q,EAAAQ,GAAG,yBAA2BioB,IAAM,G,+DAI7C1qB,EAAAA,EAAAA,GAiDK,KAjDL+H,GAiDK,EAhDH/H,EAAAA,EAAAA,GAA+D,OAA/DoI,IAA+DxF,EAAAA,EAAAA,IAAxCX,EAAAQ,GAAG,6BAAD,IACzBzC,EAAAA,EAAAA,GA8CK,KA9CLqI,GA8CK,EA7CHrI,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,iBAAe,C,kBAClC,iBAA2C,mBAAxC1Q,EAAAQ,GAAG,oCAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,mBAAiB,C,kBACpC,iBAA6C,mBAA1C1Q,EAAAQ,GAAG,sCAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,gBAAc,C,kBACjC,iBAA0C,mBAAvC1Q,EAAAQ,GAAG,mCAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,eAAa,C,kBAChC,iBAAyC,mBAAtC1Q,EAAAQ,GAAG,kCAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,iBAAe,C,kBAClC,iBAA2C,mBAAxC1Q,EAAAQ,GAAG,oCAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,iBAAe,C,kBAClC,iBAA2C,mBAAxC1Q,EAAAQ,GAAG,oCAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,wBAAsB,C,kBACzC,iBAAmD,mBAAhD1Q,EAAAQ,GAAG,4CAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,qBAAmB,C,kBACtC,iBAAgD,mBAA7C1Q,EAAAQ,GAAG,yCAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,kCAAgC,C,kBACnD,iBAAoD,mBAAjD1Q,EAAAQ,GAAG,6CAAD,G,qBAOjBzC,EAAAA,EAAAA,GAwNM,MAxNNyI,GAwNM,EAvNJzI,EAAAA,EAAAA,GAA4C,WAAA4C,EAAAA,EAAAA,IAArCX,EAAAQ,GAAG,4BAAD,IACTzC,EAAAA,EAAAA,GAqNK,KArNL0I,GAqNK,EApNH1I,EAAAA,EAAAA,GAQK,YAPH2C,EAAAA,EAAAA,IAMgBoR,EAAA,CALdnO,GAAG,sBACH+M,KAAK,sBACJqB,QAAS/R,EAAA8mB,4B,mBAEV,iBAAyC,mBAAtC9mB,EAAAQ,GAAG,kCAAD,G,0BAIoC,WAArCR,EAAA8Q,aAAa6X,sBAAmB,WADxChpB,EAAAA,EAAAA,IAoCK,KApCL+G,GAoCK,EAhCH3I,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,4BAA0B,C,kBAC7C,iBAAkC,mBAA/B1Q,EAAAQ,GAAG,2BAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,gCACJE,OAAQ,G,mBAET,iBAAwC,mBAArC5Q,EAAAQ,GAAG,iCAAD,G,aAGTzC,EAAAA,EAAAA,GAQK,YAPH2C,EAAAA,EAAAA,IAMiBsR,EAAA,CALftB,KAAK,mBACJuB,IAAK,EACLrB,OAAQ,G,mBAET,iBAAwC,mBAArC5Q,EAAAQ,GAAG,iCAAD,G,aAGTzC,EAAAA,EAAAA,GASK,YARH2C,EAAAA,EAAAA,IAOgBoR,EAAA,CANdnO,GAAG,iCACH+M,KAAK,iCACJqB,QAAS/R,EAAA+mB,sCACTnW,OAAQ,G,mBAET,iBAAsD,mBAAnD5Q,EAAAQ,GAAG,+CAAD,G,8CAIXzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,8BAA4B,C,kBAC/C,iBAAqC,mBAAlC1Q,EAAAQ,GAAG,8BAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,2BACLE,OAAO,K,mBAEP,iBAAgD,mBAA7C5Q,EAAAQ,GAAG,yCAAD,G,aAGTzC,EAAAA,EAAAA,GASK,WAPKiC,EAAAsD,OAAI,WADZnD,EAAAA,EAAAA,IAOiBqQ,EAAA,C,MALfC,OAAO,UACPC,KAAK,mBACLE,OAAO,K,mBAEP,iBAA6C,mBAA1C5Q,EAAAQ,GAAG,sCAAD,G,8BAGTzC,EAAAA,EAAAA,GAQK,WANKiC,EAAAsD,OAAI,WADZnD,EAAAA,EAAAA,IAMeyoB,EAAA,C,MAJblY,KAAK,sBACLE,OAAO,K,mBAEP,iBAA0C,mBAAvC5Q,EAAAQ,GAAG,mCAAD,G,8BAGTzC,EAAAA,EAAAA,GAAyC,WAAA4C,EAAAA,EAAAA,IAAlCX,EAAAQ,GAAG,yBAAD,IACTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,gBACLE,OAAO,K,mBAEP,iBAAoC,mBAAjC5Q,EAAAQ,GAAG,6BAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,YAAU,C,kBAC7B,iBAAsC,mBAAnC1Q,EAAAQ,GAAG,+BAAD,G,aAGTzC,EAAAA,EAAAA,GAmBK,KAnBL4c,GAmBK,EAlBH5c,EAAAA,EAAAA,GAQK,YAPH2C,EAAAA,EAAAA,IAMiB8P,EAAA,CALfE,KAAK,eACLE,OAAO,IACP,cAAY,Y,mBAEZ,iBAAmC,mBAAhC5Q,EAAAQ,GAAG,4BAAD,G,aAGTzC,EAAAA,EAAAA,GAQK,YAPH2C,EAAAA,EAAAA,IAMiB8P,EAAA,CALfE,KAAK,kBACLE,OAAO,IACP,cAAY,Y,mBAEZ,iBAAuC,mBAApC5Q,EAAAQ,GAAG,gCAAD,G,eAIXzC,EAAAA,EAAAA,GAyBK,YAxBH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,YACLE,OAAO,K,mBAEP,iBAA+B,mBAA5B5Q,EAAAQ,GAAG,wBAAD,G,WAEPzC,EAAAA,EAAAA,GAiBK,KAjBL8I,GAiBK,EAhBH9I,EAAAA,EAAAA,GAeK,YAdH2C,EAAAA,EAAAA,IAOiB8P,EAAA,CANfE,KAAK,sBACLE,OAAO,IACP,cAAY,YACXhI,UAAW5I,EAAAmnB,qB,mBAEZ,iBAA2C,mBAAxCnnB,EAAAQ,GAAG,oCAAD,G,yBAGER,EAAAmnB,qBAGuB,iBAHJ,WAD5BxnB,EAAAA,EAAAA,IAKM,MALNmH,GAKM,EADJpG,EAAAA,EAAAA,IAAuBN,EAAA,CAAfE,KAAK,WAAO,QAAG,MAAEK,EAAAA,EAAAA,IAAGX,EAAAQ,GAAG,kCAAD,aAKtCzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,oBACLE,OAAO,K,mBAEP,iBAAyC,mBAAtC5Q,EAAAQ,GAAG,kCAAD,G,aAGTzC,EAAAA,EAAAA,GAA2C,WAAA4C,EAAAA,EAAAA,IAApCX,EAAAQ,GAAG,2BAAD,IACTzC,EAAAA,EAAAA,GAQK,YAPH2C,EAAAA,EAAAA,IAMgBoR,EAAA,CALdnO,GAAG,qBACH+M,KAAK,qBACJqB,QAAS/R,EAAAgnB,2B,mBAEV,iBAAyC,mBAAtChnB,EAAAQ,GAAG,kCAAD,G,2BAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,yBACLE,OAAO,K,mBAEP,iBAA6C,mBAA1C5Q,EAAAQ,GAAG,sCAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,YACLE,OAAO,K,mBAEP,iBAAgC,mBAA7B5Q,EAAAQ,GAAG,yBAAD,G,aAGTzC,EAAAA,EAAAA,GAIK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,yBAAuB,C,kBAC1C,iBAA6C,mBAA1C1Q,EAAAQ,GAAG,sCAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,wBACLE,OAAO,K,mBAEP,iBAA6C,mBAA1C5Q,EAAAQ,GAAG,sCAAD,G,YAGCR,EAAAsD,OAAI,WAAd3D,EAAAA,EAAAA,IAOK,KAAAob,GAAA,EANHra,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,uBACLE,OAAO,K,mBAEP,iBAA4C,mBAAzC5Q,EAAAQ,GAAG,qCAAD,G,6BAGCR,EAAA2Q,YAAc,IAAH,WAArBhR,EAAAA,EAAAA,IAEK,KAAAqb,IAAAra,EAAAA,EAAAA,IADAX,EAAAQ,GAAG,iBAAD,qBAEPzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,YACLE,OAAO,K,mBAEP,iBAA8B,mBAA3B5Q,EAAAQ,GAAG,uBAAD,G,YAGCR,EAAAsD,OAAI,WAAd3D,EAAAA,EAAAA,IAOK,KAAAsb,GAAA,EANHva,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,sBACLE,OAAO,K,mBAEP,iBAA8B,mBAA3B5Q,EAAAQ,GAAG,uBAAD,G,iCAOLR,EAAAsD,OAAI,WADZ3D,EAAAA,EAAAA,IAoGM,MApGNwb,GAoGM,EAhGJpd,EAAAA,EAAAA,GAAuC,WAAA4C,EAAAA,EAAAA,IAAhCX,EAAAQ,GAAG,uBAAD,IACTzC,EAAAA,EAAAA,GA8FK,KA9FLqd,GA8FK,EA7FHrd,EAAAA,EAAAA,GAWK,YAVHA,EAAAA,EAAAA,GASQ,QATRsd,GASQ,mBARHrb,EAAAQ,GAAG,yBAA0B,IAAC,IAAAE,EAAAA,EAAAA,IAA8CmoB,EAAA,CAApB,cAAY,KACvEnoB,EAAAA,EAAAA,IAMEooB,EAAA,CALAhrB,MAAM,iBACL,YAAU,EACV,eAAckC,EAAAyC,OAAOW,MAAM2lB,cAAcC,aACzC,gBAAehpB,EAAAyC,OAAOW,MAAM2lB,cAAcC,aAC1C,kBAAiBhpB,EAAAwoB,oB,gEAIxBzqB,EAAAA,EAAAA,GAKK,YAHH2C,EAAAA,EAAAA,IAEiB8P,EAAA,CAFDE,KAAK,sBAAoB,C,kBACvC,iBAAyC,mBAAtC1Q,EAAAQ,GAAG,kCAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,YACLE,OAAO,K,mBAEP,iBAA+B,mBAA5B5Q,EAAAQ,GAAG,wBAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,yBACLE,OAAO,K,mBAEP,iBAA8C,mBAA3C5Q,EAAAQ,GAAG,uCAAD,G,aAGTzC,EAAAA,EAAAA,GASK,YARH2C,EAAAA,EAAAA,IAOgBoR,EAAA,CANdnO,GAAG,sBACH+M,KAAK,sBACJqB,QAAS/R,EAAA6mB,mBACVjW,OAAO,K,mBAEP,iBAA0C,mBAAvC5Q,EAAAQ,GAAG,mCAAD,G,0BAGCR,EAAA2nB,YAAY9f,OAAS,IAAH,WAA5BlI,EAAAA,EAAAA,IAQK,KAAA2b,GAAA,EAPH5a,EAAAA,EAAAA,IAMgBoR,EAAA,CALdnO,GAAG,kBACH+M,KAAK,kBACJqB,QAAS/R,EAAA4nB,oB,mBAEV,iBAA6C,mBAA1C5nB,EAAAQ,GAAG,sCAAD,G,4CAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,oBACLE,OAAO,K,mBAEP,iBAAwC,mBAArC5Q,EAAAQ,GAAG,iCAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,0BACLE,OAAO,K,mBAEP,iBAA4C,mBAAzC5Q,EAAAQ,GAAG,qCAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,6BACLE,OAAO,K,mBAEP,iBAAkD,mBAA/C5Q,EAAAQ,GAAG,2CAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,WACLE,OAAO,K,mBAEP,iBAA8B,mBAA3B5Q,EAAAQ,GAAG,uBAAD,G,aAGTzC,EAAAA,EAAAA,GAOK,YANH2C,EAAAA,EAAAA,IAKiB8P,EAAA,CAJfE,KAAK,qBACLE,OAAO,K,mBAEP,iBAA8C,mBAA3C5Q,EAAAQ,GAAG,uCAAD,G,iEQ/fR1C,MAAM,gB,IACLA,MAAM,gB,IAGFA,MAAM,e,gBAWNA,MAAM,e,YCMpB,SAlBmB,CACjBc,KAAI,WACF,IAAM+O,EAAWxO,KAAKsD,OAAOW,MAAMuK,SACnC,MAAO,CACLsb,eAAgBtb,EAASsb,eACzBC,gBAAiBvb,EAASub,gBAE9B,EACAlmB,SAAU,CACRmmB,oBAAmB,WACjB,MAbqB,wDAaOhqB,KAAK+pB,eACnC,EACAE,mBAAkB,WAChB,MAfqB,uDCAnBC,EDewClqB,KAAK8pB,eCfrBK,MADhB,aAEGD,EAAQ,GAAK,IAHH,IAErBA,CDgBJ,IEZJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,wCHJzD1pB,EAAAA,EAAAA,IA2BM,OA3BAqF,MAAOhF,EAAAQ,GAAG,2B,EACdzC,EAAAA,EAAAA,GAyBM,MAzBN0C,GAyBM,EAxBJ1C,EAAAA,EAAAA,GAuBK,KAvBL6C,GAuBK,EAtBH7C,EAAAA,EAAAA,GAUK,YATHA,EAAAA,EAAAA,GAAmD,UAAA4C,EAAAA,EAAAA,IAA7CX,EAAAQ,GAAG,qCAAD,IACRzC,EAAAA,EAAAA,GAOK,KAPLoH,GAOK,EANHpH,EAAAA,EAAAA,GAKK,YAJHA,EAAAA,EAAAA,GAGyB,KAFtBkI,KAAMjG,EAAAopB,mBACPpjB,OAAO,W,QACLhG,EAAAipB,gBAAc,EAAA7jB,WAIxBrH,EAAAA,EAAAA,GAUK,YATHA,EAAAA,EAAAA,GAAoD,UAAA4C,EAAAA,EAAAA,IAA9CX,EAAAQ,GAAG,sCAAD,IACRzC,EAAAA,EAAAA,GAOK,KAPLsH,GAOK,EANHtH,EAAAA,EAAAA,GAKK,YAJHA,EAAAA,EAAAA,GAG0B,KAFvBkI,KAAMjG,EAAAmpB,oBACPnjB,OAAO,W,QACLhG,EAAAkpB,iBAAe,EAAA5jB,eAAA,K,aIrB1BxH,MAAM,a,IACJA,MAAM,qB,IACJA,MAAM,a,UAGPA,MAAM,iB,IAEDA,MAAM,iB,IAGNA,MAAM,W,IAuCRA,MAAM,O,IACJA,MAAM,W,IAGPmnB,IAAI,kBACJnnB,MAAM,U,iBAqBLA,MAAM,iB,IAgBVA,MAAM,qB,IACHA,MAAM,e,IAKNA,MAAM,e,IAKNA,MAAM,e,IAKNA,MAAM,e,IAKNA,MAAM,e,iBAiBLA,MAAM,c,IAEJA,MAAM,sB,IAiBRA,MAAM,c,IAiCNA,MAAM,c,IAqBNA,MAAM,c,IAcNA,MAAM,c,iBAqBNA,MAAM,c,IAeNA,MAAM,c,IAuENA,MAAM,c,IAmBNA,MAAM,c,IAmCNA,MAAM,c,IAuBNA,MAAM,c,IAsBNA,MAAM,c,IAqHNA,MAAM,c,IAuBNA,MAAM,c,IAeNA,MAAM,c,IA0BNA,MAAM,c,IAeNA,MAAM,c,IASNA,MAAM,c,IAeNA,MAAM,c,IASNA,MAAM,c,IAuBNA,MAAM,c,IA6BNA,MAAM,c,IAuBNA,MAAM,c,IAuBNA,MAAM,c,iBAiENA,MAAM,c,iBAuFNA,MAAM,8B,IACJA,MAAM,oB,iBAiBNA,MAAM,Y,IAEPmnB,IAAI,WACJnnB,MAAM,S,IAYRC,EAAAA,EAAAA,GAGE,SAFAD,MAAM,iBACNmnB,IAAI,Y,wBAqBNlnB,EAAAA,EAAAA,GAAkC,YAA5B,yBAAqB,G,IAQ3BA,EAAAA,EAAAA,GAAwB,YAAlB,eAAW,G,IACjBA,EAAAA,EAAAA,GAA0B,YAApB,iBAAa,G,IACnBA,EAAAA,EAAAA,GAAkB,YAAZ,SAAK,G,IAOXA,EAAAA,EAAAA,GAAuB,YAAjB,cAAU,G,iBAUfD,MAAM,c,IA0CVA,MAAM,mB,uGCj/BRA,MAAM,2B,oEAoBPA,MAAM,wBAad,UACE8E,WAAY,CACVG,SAAAA,EAAAA,GAEF5E,MAAO,CAELqT,KAAM,CACJjT,UAAU,EACVF,KAAMI,QAGRuG,MAAO,CACLzG,UAAU,EACVF,KAAMI,QAIR8qB,WAAY,CACVhrB,UAAU,EACVF,KAAMI,OACNsC,aAAS0b,GAGX+M,SAAU,CACRjrB,UAAU,EACVF,KAAMI,OACNsC,aAAS0b,GAGX7T,SAAU,CACRrK,UAAU,EACVF,KAAMorB,QACN1oB,SAAS,GAGX2oB,oBAAqB,CACnBnrB,UAAU,EACVF,KAAMorB,QACN1oB,SAAS,IAGb4oB,MAAO,CAAC,qBACR3mB,SAAU,CACR4mB,QAAM,WACJ,YAAkC,IAApBzqB,KAAKoqB,UACrB,EACAM,WAAS,WACP,OAAOC,EAAAA,GAAAA,IAAQ3qB,KAAKoqB,YAAcpqB,KAAKqqB,SACzC,EACAO,iBAAe,WACb,MAA2B,gBAApB5qB,KAAKoqB,UACd,EACAS,cAAY,WACV,OAAO7qB,KAAKoqB,YAAcpqB,KAAKoqB,WAAWU,WAAW,KACvD,IC/FJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,mEDPzDtqB,EAAAA,EAAAA,IA6CM,OA5CJ7B,OAAKkN,EAAAA,EAAAA,IAAA,CAAC,4BAA2B,CAAApC,UACZshB,EAAAN,SAAWpd,EAAA5D,a,EAEhC7K,EAAAA,EAAAA,GAKQ,SAJLknB,IAAKzY,EAAAgF,KACN1T,MAAM,U,QAEH0O,EAAAxH,OAAK,EAAApF,SAGkB,IAAb4M,EAAAgd,UAA4Bhd,EAAAkd,sBAAmB,WAD9DvpB,EAAAA,EAAAA,IAMEyK,EAAA,C,MAJC,cAAasf,EAAAN,QACbhhB,SAAU4D,EAAA5D,SACX9K,MAAM,MACL,sBAAiBiC,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAA0S,MAAM,yBAA2C,IAAflG,EAAA+c,WAA6B/c,EAAAgd,cAAW/M,EAAS,I,qDAEzG1e,EAAAA,EAAAA,GA2BM,MA3BN0C,GA2BM,EA1BJ1C,EAAAA,EAAAA,GAOC,SANE4F,GAAI6I,EAAAgF,KAAO,KACZ1T,MAAM,qBACNO,KAAK,OACJqM,MAAO8B,EAAA+c,YAAc/c,EAAAgd,SACrB5gB,UAAWshB,EAAAN,SAAWpd,EAAA5D,SACtBuhB,QAAKpqB,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAA0S,MAAM,oBAAqB9L,EAAOZ,OAAO0E,MAAK,I,YAGhDwf,EAAAL,aAAU,WADlBlqB,EAAAA,EAAAA,IAQC,S,MANEgE,GAAI6I,EAAAgF,KACL1T,MAAM,uBACNO,KAAK,QACJqM,MAAO8B,EAAA+c,YAAc/c,EAAAgd,SACrB5gB,UAAWshB,EAAAN,SAAWpd,EAAA5D,SACtBuhB,QAAKpqB,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAA0S,MAAM,oBAAqB9L,EAAOZ,OAAO0E,MAAK,I,6BAGhDwf,EAAAH,mBAAgB,WADxBpqB,EAAAA,EAAAA,IAGE,MAHFyF,MAGE,eAEM8kB,EAAAF,gBAAa,WADrBrqB,EAAAA,EAAAA,IAIE,O,MAFA7B,MAAM,oBACL4D,OAAK0oB,EAAAA,EAAAA,IAAA,CAAAC,gBAAoB7d,EAAAgd,Y,0NEWlC,UACErrB,MAAO,CACL,OAAQ,aAAc,WAAY,WAAY,QAAS,MAAO,MAAO,OAAQ,UAAW,WAE1FwrB,MAAO,CAAC,qBACR3mB,SAAU,CACR4mB,QAAM,WACJ,YAAkC,IAApBzqB,KAAKoqB,UACrB,ICvDJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,wCDJzD5pB,EAAAA,EAAAA,IAiDM,OAhDJ7B,OAAKkN,EAAAA,EAAAA,IAAA,CAAC,8BAA6B,CAAApC,UACdshB,EAAAN,SAAWpd,EAAA5D,a,EAEhC7K,EAAAA,EAAAA,GAMQ,SALL4F,GAAI6I,EAAAgF,KAAO,SACXyT,IAAKzY,EAAAgF,KACN1T,MAAM,U,QAEH0O,EAAAxH,OAAK,EAAApF,SAGkB,IAAb4M,EAAAgd,WAAQ,WADvB7pB,EAAAA,EAAAA,IAQC,S,MANEgE,GAAI6I,EAAAgF,KAAO,KACX,kBAAiBhF,EAAAgF,KAAO,SACzB1T,MAAM,oCACNO,KAAK,WACJiM,QAAS4f,EAAAN,QACT9pB,SAAMC,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAA0S,MAAM,oBAAsBwX,EAAAN,aAAqBnN,EAAXjQ,EAAAgd,SAAoB,I,kCAGzC,IAAbhd,EAAAgd,WAAQ,WADvB7pB,EAAAA,EAAAA,IAKE,S,MAHA7B,MAAM,QACLmnB,IAAKzY,EAAAgF,KAAO,KACZ,eAAa,G,6BAEhBzT,EAAAA,EAAAA,GAUC,SATE4F,GAAI6I,EAAAgF,KACL1T,MAAM,eACNO,KAAK,QACJqM,MAAO8B,EAAA+c,YAAc/c,EAAAgd,SACrB5gB,UAAWshB,EAAAN,SAAWpd,EAAA5D,SACtB0hB,IAAK9d,EAAA8d,KAAO9d,EAAA+d,SAAW,IACvBtY,IAAKzF,EAAAyF,KAAOzF,EAAAge,SAAW,EACvBpE,KAAM5Z,EAAA4Z,MAAQ,EACd+D,QAAKpqB,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAA0S,MAAM,oBAAqB9L,EAAOZ,OAAO0E,MAAK,I,aAExD3M,EAAAA,EAAAA,GAWC,SAVE4F,GAAI6I,EAAAgF,KAAO,WACZ1T,MAAM,eACNO,KAAK,SACJ,kBAAiBmO,EAAAgF,KAAO,SACxB9G,MAAO8B,EAAA+c,YAAc/c,EAAAgd,SACrB5gB,UAAWshB,EAAAN,SAAWpd,EAAA5D,SACtB0hB,IAAK9d,EAAA+d,QACLtY,IAAKzF,EAAAge,QACLpE,KAAM5Z,EAAA4Z,MAAQ,EACd+D,QAAKpqB,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAA0S,MAAM,oBAAqB9L,EAAOZ,OAAO0E,MAAK,I,gEEd5D,UACE9H,WAAY,CACVG,SAAAA,EAAAA,GAEF5E,MAAO,CACL,OAAQ,aAAc,WAAY,YAEpCwrB,MAAO,CAAC,qBACR3mB,SAAU,CACR4mB,QAAM,WACJ,YAAkC,IAApBzqB,KAAKoqB,UACrB,ICtCJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,mEDJzD5pB,EAAAA,EAAAA,IA4BM,OA3BJ7B,OAAKkN,EAAAA,EAAAA,IAAA,CAAC,gCAA+B,CAAApC,UAChBshB,EAAAN,SAAWpd,EAAA5D,a,EAEhC7K,EAAAA,EAAAA,GAKQ,SAJLknB,IAAKzY,EAAAgF,KACN1T,MAAM,U,QAEHkC,EAAAQ,GAAG,kCAAD,EAAAZ,SAGqB,IAAb4M,EAAAgd,WAAQ,WADvBrpB,EAAAA,EAAAA,IAMEyK,EAAA,C,MAJC,cAAasf,EAAAN,QACbhhB,SAAU4D,EAAA5D,SACX9K,MAAM,MACL,sBAAiBiC,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAA0S,MAAM,oBAAsBwX,EAAAN,aAAqBnN,EAAXjQ,EAAAgd,SAAoB,I,qDAEhFzrB,EAAAA,EAAAA,GAUC,SATE4F,GAAI6I,EAAAgF,KACL1T,MAAM,eACNO,KAAK,SACJqM,MAAO8B,EAAA+c,YAAc/c,EAAAgd,SACrB5gB,UAAWshB,EAAAN,SAAWpd,EAAA5D,SACvB0hB,IAAI,IACJrY,IAAI,IACJmU,KAAK,MACJ+D,QAAKpqB,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAA0S,MAAM,oBAAqB9L,EAAOZ,OAAO0E,MAAK,I,4BEtBnD5M,MAAM,4B,oCAWFA,MAAM,Q,oBAWRA,MAAM,kB,oCAgBJA,MAAM,Q,oBAaVA,MAAM,gB,iHAiELmnB,IAAI,QACJnnB,MAAM,S,oBAYRC,EAAAA,EAAAA,GAIE,SAHAD,MAAM,iBACNmnB,IAAI,QACH,eAAa,G,6BAQdA,IAAI,SACJnnB,MAAM,S,oDA2BNmnB,IAAI,SACJnnB,MAAM,S,oCAsCRC,EAAAA,EAAAA,GAA2B,YAArB,kBAAc,G,ykBCvM5BC,EAAAA,GAAAA,IACEysB,EAAAA,IACAC,EAAAA,IACAxsB,EAAAA,IACAmgB,EAAAA,KAGF,IAAMsM,GAAU,WAAH,IAAIC,EAAM1qB,UAAA2H,OAAA,QAAA4U,IAAAvc,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OAAA+C,GAAA,CAC1B4nB,EAAG,EACHC,EAAG,EACHC,KAAM,EACNC,OAAQ,EACRC,OAAO,EACPC,MAAO,UACPC,MAAO,GACJP,EAAM,EAGX,UAKEzsB,MAAO,CACL,aAAc,WAAY,SAE5BwrB,MAAO,CAAC,qBACR/qB,KAAI,WACF,MAAO,CACLwsB,WAAY,EAEZC,QAASlsB,KAAKoqB,YAAcpqB,KAAKqqB,UAAY,IAAIllB,IAAIqmB,IAEzD,EACA/nB,WAAY,CACV0oB,WAAAA,GACAC,aAAAA,GACA7F,OAAAA,GAAAA,GAEFzmB,QAAS,CACPusB,IAAG,WACDrsB,KAAKksB,OAAO9gB,KAAKogB,GAAQxrB,KAAK0K,WAC9B1K,KAAKisB,WAAajsB,KAAKksB,OAAOxjB,OAAS,CACzC,EACA4jB,IAAG,WACDtsB,KAAKksB,OAAO7gB,OAAOrL,KAAKisB,WAAY,GACpCjsB,KAAKisB,WAAoC,IAAvBjsB,KAAKksB,OAAOxjB,YAAe4U,EAAYiP,KAAKpB,IAAInrB,KAAKisB,WAAa,EAAG,EACzF,EACAO,OAAM,WACJ,IAAM1P,EAAU9c,KAAKksB,OAAO7gB,OAAOrL,KAAKisB,WAAY,GAAG,GACvDjsB,KAAKksB,OAAO7gB,OAAOrL,KAAKisB,WAAa,EAAG,EAAGnP,GAC3C9c,KAAKisB,YAAc,CACrB,EACAQ,OAAM,WACJ,IAAM3P,EAAU9c,KAAKksB,OAAO7gB,OAAOrL,KAAKisB,WAAY,GAAG,GACvDjsB,KAAKksB,OAAO7gB,OAAOrL,KAAKisB,WAAa,EAAG,EAAGnP,GAC3C9c,KAAKisB,YAAc,CACrB,GAEFS,aAAY,WACV1sB,KAAKksB,OAASlsB,KAAKoqB,YAAcpqB,KAAKqqB,QACxC,EACAxmB,SAAU,CACR8oB,WAAU,WACR,OAAO3sB,KAAKksB,OAAOxjB,OAAS,CAC9B,EACAkkB,mBAAkB,WAChB,OAAO5sB,KAAKqqB,SAAS3hB,OAAS,CAChC,EACAgC,SAAQ,WACN,OAAI1K,KAAKmT,OAASnT,KAAK2sB,WACd3sB,KAAKksB,OAAOlsB,KAAKisB,YAEjBT,GAAQ,CAAC,EAEpB,EACAqB,gBAAe,WACb,OAAI7sB,KAAKmT,OAASnT,KAAK4sB,mBACd5sB,KAAKqqB,SAASrqB,KAAKisB,YAEnBT,GAAQ,CAAC,EAEpB,EACAsB,YAAW,WACT,OAAO9sB,KAAKmT,OAASnT,KAAKisB,WAAa,CACzC,EACAc,YAAW,WACT,OAAO/sB,KAAKmT,OAASnT,KAAKisB,WAAajsB,KAAKksB,OAAOxjB,OAAS,CAC9D,EACA+hB,QAAO,WACL,OAAOzqB,KAAKmT,YAC8B,IAAjCnT,KAAKksB,OAAOlsB,KAAKisB,cACvBjsB,KAAKgtB,aACV,EACAA,cAAa,WACX,YAAkC,IAApBhtB,KAAKoqB,UACrB,EACA6C,IAAG,WACD,OAAOtC,EAAAA,GAAAA,IAAQ3qB,KAAK0K,SAASqhB,MAC/B,EACAxpB,MAAK,WACH,OAAOvC,KAAKmT,MACR,CACE+Z,WAAWC,EAAAA,GAAAA,IAAantB,KAAKqqB,WAE/B,CAAC,CACP,IC9GJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,+JFNzD7pB,EAAAA,EAAAA,IAsNM,OArNJ7B,OAAKkN,EAAAA,EAAAA,IAAA,CAAC,iBAAgB,CAAApC,UACD5I,EAAA4pB,Y,EAErB7rB,EAAAA,EAAAA,GAiDM,MAjDN6B,GAiDM,EAhDJ7B,EAAAA,EAAAA,GAoBM,OAnBH6K,UAAW5I,EAAA4pB,QACZ9rB,MAAM,mB,WAENC,EAAAA,EAAAA,GAKC,S,qDAJUiC,EAAA6J,SAASihB,EAAClkB,CAAA,GAClBgC,UAAW5I,EAAA4pB,QACZ9rB,MAAM,eACNO,KAAK,U,mBAHI2B,EAAA6J,SAASihB,MAKpB/sB,EAAAA,EAAAA,GASM,MATNoH,GASM,WARJpH,EAAAA,EAAAA,GAOC,S,qDANUiC,EAAA6J,SAASihB,EAAClkB,CAAA,GAClBgC,UAAW5I,EAAA4pB,QACZ9rB,MAAM,cACNO,KAAK,QACLisB,IAAI,KACJrY,IAAI,O,mBALKjS,EAAA6J,SAASihB,QAAC,OASzB/sB,EAAAA,EAAAA,GAKM,MALNsH,GAKM,EAJJtH,EAAAA,EAAAA,GAGE,OAFAD,MAAM,gBACL4D,OAAK0oB,EAAAA,EAAAA,IAAEpqB,EAAA0B,Q,WAGZ3D,EAAAA,EAAAA,GAoBM,OAnBH6K,UAAW5I,EAAA4pB,QACZ9rB,MAAM,mB,WAENC,EAAAA,EAAAA,GAKC,S,qDAJUiC,EAAA6J,SAASghB,EAACjkB,CAAA,GAClBgC,UAAW5I,EAAA4pB,QACZ9rB,MAAM,eACNO,KAAK,U,mBAHI2B,EAAA6J,SAASghB,MAKpB9sB,EAAAA,EAAAA,GASM,MATNyH,GASM,WARJzH,EAAAA,EAAAA,GAOC,S,qDANUiC,EAAA6J,SAASghB,EAACjkB,CAAA,GAClBgC,UAAW5I,EAAA4pB,QACZ9rB,MAAM,cACNO,KAAK,QACLisB,IAAI,KACJrY,IAAI,O,mBALKjS,EAAA6J,SAASghB,QAAC,SAW3B9sB,EAAAA,EAAAA,GA8JM,MA9JNoI,GA8JM,EA7JJpI,EAAAA,EAAAA,GA0DM,OAzDH6K,SAAU5I,EAAAmsB,cACXruB,MAAM,4B,EAEN4C,EAAAA,EAAAA,IAaS2lB,EAAA,CAZP1iB,GAAG,kB,WACM3D,EAAAorB,W,qDAAAprB,EAAAorB,WAAUxkB,CAAA,GACnB9I,MAAM,kBACL8K,UAAW5I,EAAAsS,OAAStS,EAAAmsB,e,mBAGnB,iBAAiC,gBADnCxsB,EAAAA,EAAAA,IAMS8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IALmB1F,EAAAqrB,QAAM,SAAxBkB,EAAQ7J,G,kBADlB/iB,EAAAA,EAAAA,IAMS,UAJNiG,IAAK8c,EACLhY,MAAOgY,I,QAEL1iB,EAAAQ,GAAG,mCAAoC,CAArCkK,MAA8CgY,KAAK,EAAAlc,G,iDAG5DzI,EAAAA,EAAAA,GASS,UARPD,MAAM,qBACL8K,UAAW5I,EAAAsS,QAAUtS,EAAA4pB,QACrBrpB,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAyrB,KAAAzrB,EAAAyrB,IAAAxrB,MAAAD,EAAAE,UAAG,I,EAEXQ,EAAAA,EAAAA,IAGEN,EAAA,CAFA,iBACAE,KAAK,W,OAGTvC,EAAAA,EAAAA,GASS,UARPD,MAAM,qBACL8K,UAAW5I,EAAAisB,YACX1rB,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA2rB,QAAA3rB,EAAA2rB,OAAA1rB,MAAAD,EAAAE,UAAM,I,EAEdQ,EAAAA,EAAAA,IAGEN,EAAA,CAFA,iBACAE,KAAK,gB,OAGTvC,EAAAA,EAAAA,GASS,UARPD,MAAM,qBACL8K,UAAW5I,EAAAksB,YACX3rB,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA4rB,QAAA5rB,EAAA4rB,OAAA3rB,MAAAD,EAAAE,UAAM,I,EAEdQ,EAAAA,EAAAA,IAGEN,EAAA,CAFA,iBACAE,KAAK,kB,OAGTvC,EAAAA,EAAAA,GASS,UARPD,MAAM,qBACL8K,SAAU5I,EAAAmsB,cACV5rB,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAwrB,KAAAxrB,EAAAwrB,IAAAvrB,MAAAD,EAAAE,UAAG,I,EAEXQ,EAAAA,EAAAA,IAGEN,EAAA,CAFA,iBACAE,KAAK,U,cAIXvC,EAAAA,EAAAA,GAuBM,OAtBH6K,UAAW5I,EAAA4pB,QACZ9rB,MAAM,+B,EAENC,EAAAA,EAAAA,GAKQ,QALRgd,IAKQpa,EAAAA,EAAAA,IADHX,EAAAQ,GAAG,iCAAD,aAEPzC,EAAAA,EAAAA,GAOC,SANC4F,GAAG,Q,qDACM3D,EAAA6J,SAASohB,MAAKrkB,CAAA,GACtBgC,UAAW5I,EAAA4pB,QACZpY,KAAK,QACL1T,MAAM,4CACNO,KAAK,Y,mBAJI2B,EAAA6J,SAASohB,SAMpBhQ,IAIE,OAEJld,EAAAA,EAAAA,GA2BM,OA1BH6K,UAAW5I,EAAA4pB,QACZ9rB,MAAM,8B,EAENC,EAAAA,EAAAA,GAKQ,QALRqd,IAKQza,EAAAA,EAAAA,IADHX,EAAAQ,GAAG,gCAAD,aAEPzC,EAAAA,EAAAA,GASC,SARC4F,GAAG,O,uDACM3D,EAAA6J,SAASkhB,KAAInkB,CAAA,GACrBgC,UAAW5I,EAAA4pB,QACZpY,KAAK,OACL1T,MAAM,cACNO,KAAK,QACLisB,IAAI,KACJrY,IAAI,K,mBANKjS,EAAA6J,SAASkhB,SAAI,SAQxBhtB,EAAAA,EAAAA,GAMC,S,uDALUiC,EAAA6J,SAASkhB,KAAInkB,CAAA,GACrBgC,UAAW5I,EAAA4pB,QACZ9rB,MAAM,eACNO,KAAK,SACL4T,IAAI,K,mBAJKjS,EAAA6J,SAASkhB,SAAI,OAO1BhtB,EAAAA,EAAAA,GA0BM,OAzBH6K,UAAW5I,EAAA4pB,QACZ9rB,MAAM,gC,EAENC,EAAAA,EAAAA,GAKQ,QALRyd,IAKQ7a,EAAAA,EAAAA,IADHX,EAAAQ,GAAG,kCAAD,aAEPzC,EAAAA,EAAAA,GASC,SARC4F,GAAG,S,uDACM3D,EAAA6J,SAASmhB,OAAMpkB,CAAA,GACvBgC,UAAW5I,EAAA4pB,QACZpY,KAAK,SACL1T,MAAM,cACNO,KAAK,QACLisB,IAAI,KACJrY,IAAI,O,mBANKjS,EAAA6J,SAASmhB,WAAM,SAQ1BjtB,EAAAA,EAAAA,GAKC,S,uDAJUiC,EAAA6J,SAASmhB,OAAMpkB,CAAA,GACvBgC,UAAW5I,EAAA4pB,QACZ9rB,MAAM,eACNO,KAAK,U,mBAHI2B,EAAA6J,SAASmhB,WAAM,OAM5BtqB,EAAAA,EAAAA,IAOE8rB,EAAA,C,WANSxsB,EAAA6J,SAASqhB,M,uDAATlrB,EAAA6J,SAASqhB,MAAKtkB,CAAA,GACtBgC,UAAW5I,EAAA4pB,QACX5kB,MAAOhF,EAAAQ,GAAG,+BACVgpB,SAAUxpB,EAAAgsB,gBAAgBd,MAC1B,yBAAuB,EACxB1Z,KAAK,U,sDAEP9Q,EAAAA,EAAAA,IAGE+rB,EAAA,C,WAFSzsB,EAAA6J,SAASshB,M,uDAATnrB,EAAA6J,SAASshB,MAAKvkB,CAAA,GACtBgC,UAAW5I,EAAA4pB,S,mCAEdlpB,EAAAA,EAAAA,IAMSka,EAAA,CALP8R,MAAM,SACN7R,QAAQ,gCACRC,IAAI,K,mBAEJ,iBAA2B,CAA3B6R,G,uIGjNR,UACE/pB,WAAY,CACV8iB,OAAAA,GAAAA,GAEFvnB,MAAO,CACL,OAAQ,QAAS,aAAc,WAAY,UAAW,cAExDwrB,MAAO,CAAC,qBACR/qB,KAAI,WACF,MAAO,CACLguB,OAAQztB,KAAKoqB,WACbsD,iBAAkB,CAChB1tB,KAAK2tB,UAAY,GAAK,UACtB,UAAQ1gB,QAAAC,EAAAA,GAAAA,GACJlN,KAAK4S,SAAW,IAAE,CACtB,QACA,YACA,eACA/K,QAAO,SAAA4d,GAAC,OAAIA,CAAC,IAEnB,EACAiH,aAAY,WACV1sB,KAAKytB,OAASztB,KAAKoqB,UACrB,EACAvmB,SAAU,CACR4mB,QAAO,WACL,YAA8B,IAAhBzqB,KAAKytB,MACrB,EACAG,OAAM,WACJ,OAAO5tB,KAAKytB,QAAUztB,KAAKqqB,UAAY,CAAC,CAC1C,EACAwD,OAAQ,CACNthB,IAAG,WACD,OAAOvM,KAAK4tB,OAAOC,MACrB,EACA3b,IAAG,SAAElF,GACH8gB,KAAI9tB,KAAKytB,OAAQ,SAAUzgB,GAC3BhN,KAAKuT,MAAM,oBAAqBvT,KAAKytB,OACvC,GAEFM,SAAQ,WACN,MAAuB,WAAhB/tB,KAAKguB,MACd,EACAA,OAAQ,CACNzhB,IAAG,WACD,MAAoB,UAAhBvM,KAAK6tB,QACW,eAAhB7tB,KAAK6tB,QACW,cAAhB7tB,KAAK6tB,QACW,YAAhB7tB,KAAK6tB,OACA7tB,KAAK6tB,OAEL,QAEX,EACA3b,IAAG,SAAElF,GACHhN,KAAK6tB,OAAe,WAAN7gB,EAAiB,GAAKA,CACtC,KClDN,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,iECNzDxM,EAAAA,EAAAA,IAgDM,OA/CJ7B,OAAKkN,EAAAA,EAAAA,IAAA,CAAC,6BAA4B,CAAAoiB,OAChBptB,EAAAktB,a,EAElBnvB,EAAAA,EAAAA,GAMQ,SALL4F,GAAI3D,EAAAwR,KAAO,SACXyT,IAAgB,WAAXjlB,EAAAmtB,OAAsBntB,EAAAwR,KAAOxR,EAAAwR,KAAO,iBAC1C1T,MAAM,U,QAEHkC,EAAAgF,OAAK,EAAApF,SAGkB,IAAbI,EAAAwpB,WAAQ,WADvB7pB,EAAAA,EAAAA,IAQC,S,MANEgE,GAAI3D,EAAAwR,KAAO,KACX,kBAAiBxR,EAAAwR,KAAO,SACzB1T,MAAM,qDACNO,KAAK,WACJiM,QAAStK,EAAA4pB,QACT9pB,SAAMC,EAAA,KAAAA,EAAA,YAAA6G,GAAA,OAAE5G,EAAA0S,MAAM,yBAA2C,IAAf1S,EAAAupB,WAA6BvpB,EAAAwpB,cAAW/M,EAAS,I,kCAGlE,IAAbzc,EAAAwpB,WAAQ,WADvB7pB,EAAAA,EAAAA,IAKE,S,MAHA7B,MAAM,QACLmnB,IAAKjlB,EAAAwR,KAAO,KACZ,eAAa,G,qCACd,KACF7Q,EAAAA,EAAAA,IAAG,KAAM,MACTD,EAAAA,EAAAA,IAaS2lB,EAAA,CAZN1iB,GAAI3D,EAAAwR,KAAO,iB,WACHxR,EAAAmtB,O,qDAAAntB,EAAAmtB,OAAMvmB,CAAA,GACdgC,UAAW5I,EAAA4pB,QACZ9rB,MAAM,iB,mBAGJ,iBAAkC,gBADpC6B,EAAAA,EAAAA,IAMS8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IALU1F,EAAA6sB,kBAAgB,SAA1BvG,G,kBADT3mB,EAAAA,EAAAA,IAMS,UAJNiG,IAAK0gB,EACL5b,MAAO4b,I,QAEM,WAAXA,EAAsBtmB,EAAAQ,GAAG,+BAAiC8lB,GAAM,EAAAnhB,G,qDAI/DnF,EAAAktB,UAAQ,qBADhBvtB,EAAAA,EAAAA,IAMC,S,MAJEgE,GAAI3D,EAAAwR,K,qDACIxR,EAAAgtB,OAAMpmB,CAAA,GACf9I,MAAM,cACNO,KAAK,Q,oBAFI2B,EAAAgtB,WAAM,kB,mBC1CjBlvB,MAAM,kB,4FA0CVE,EAAAA,GAAAA,IACEqvB,EAAAA,IACAC,EAAAA,IACAC,EAAAA,KAGF,UACEpvB,MAAO,CACLqvB,MAAO,CACLjvB,UAAU,EACVF,KAAMorB,QACN1oB,SAAS,GAIX0sB,SAAU,CACRlvB,UAAU,EACVF,KAAM2N,OACNjL,QAAS,iBAAO,CAAC,CAAC,IAGtBiC,SAAU,CACR0qB,KAAG,WACD,IAAMC,EAAWxuB,KAAKsuB,SAASG,IAAM,MAASzuB,KAAKsuB,SAASI,GAAK,KAAO,MAClEtK,EAAQpkB,KAAKqB,GAAG,wCAAD4L,OAAyCuhB,IACxDG,EAAU3uB,KAAKqB,GAAG,+CAClButB,EAAQ5uB,KAAKsuB,SAASO,KAC5B,OAAO7uB,KAAKqB,GAAG,sCAAuC,CAAE+iB,MAAAA,EAAOuK,QAAAA,EAASC,MAAAA,GAC1E,EACAE,UAAQ,WACN,IAAMN,EAAWxuB,KAAKsuB,SAASS,KAAO,MAAS/uB,KAAKsuB,SAASU,IAAM,KAAO,MACpE5K,EAAQpkB,KAAKqB,GAAG,wCAAD4L,OAAyCuhB,IACxDG,EAAU3uB,KAAKqB,GAAG,+CAClButB,EAAQ5uB,KAAKsuB,SAASO,KAC5B,OAAO7uB,KAAKqB,GAAG,sCAAuC,CAAE+iB,MAAAA,EAAOuK,QAAAA,EAASC,MAAAA,GAC1E,ICvEJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,sDDLjDvhB,EAAAihB,WAAQ,WADhB9tB,EAAAA,EAAAA,IAiCO,OAjCPC,GAiCO,EA7BL7B,EAAAA,EAAAA,GAaO,QAZJ4I,MAAOujB,EAAAwD,KACR5vB,MAAM,U,CAEM0O,EAAAihB,SAASG,MAAG,WAAxBjuB,EAAAA,EAAAA,IAEO,OAAAiB,GAAA,EADLF,EAAAA,EAAAA,IAA2BN,EAAA,CAAnBE,KAAK,kBAAW,gBAEbkM,EAAAihB,SAASG,KAAOphB,EAAAihB,SAASI,KAAE,WAAxCluB,EAAAA,EAAAA,IAEO,OAAAwF,GAAA,EADLzE,EAAAA,EAAAA,IAAwBN,EAAA,CAAhBE,KAAK,eAAQ,eAEVkM,EAAAihB,SAASG,KAAQphB,EAAAihB,SAASI,IACF,iBADI,WAAzCluB,EAAAA,EAAAA,IAEO,OAAAyF,GAAA,EADL1E,EAAAA,EAAAA,IAAsCN,EAAA,CAA9BE,KAAK,6BAAsB,MAI/BkM,EAAAihB,UAAYjhB,EAAAghB,QAAK,WADzB7tB,EAAAA,EAAAA,IAcO,Q,MAZL7B,MAAM,SACL6I,MAAOujB,EAAA+D,W,CAEIzhB,EAAAihB,SAASS,OAAI,WAAzBvuB,EAAAA,EAAAA,IAEO,OAAA2F,GAAA,EADL5E,EAAAA,EAAAA,IAA2BN,EAAA,CAAnBE,KAAK,kBAAW,gBAEbkM,EAAAihB,SAASS,MAAQ1hB,EAAAihB,SAASU,MAAG,WAA1CxuB,EAAAA,EAAAA,IAEO,OAAA4F,GAAA,EADL7E,EAAAA,EAAAA,IAAwBN,EAAA,CAAhBE,KAAK,eAAQ,eAEVkM,EAAAihB,SAASS,MAAS1hB,EAAAihB,SAASU,KACH,iBADM,WAA3CxuB,EAAAA,EAAAA,IAEO,OAAA6F,GAAA,EADL9E,EAAAA,EAAAA,IAAsCN,EAAA,CAA9BE,KAAK,6BAAsB,yC,aE9BpCxC,MAAM,qB,IACTC,EAAAA,EAAAA,GAAyC,OAApCD,MAAM,6BAA2B,S,IACjCA,MAAM,e,IACJA,MAAM,iB,IACJA,MAAM,S,IAETC,EAAAA,EAAAA,GAEO,QAFDD,MAAM,4BAA2B,QAEvC,G,IAEIA,MAAM,S,IAGNA,MAAM,e,IAGJA,MAAM,sB,IAIXA,MAAM,oC,IACJA,MAAM,Q,IACTC,EAAAA,EAAAA,GAEM,OAFDD,MAAM,sBAAqB,iBAEhC,G,IACKA,MAAM,W,IASD4D,MAAA,uC,IAGHA,MAAA,uB,IAKA5D,MAAM,S,IA6BVA,MAAM,c,IACTC,EAAAA,EAAAA,GAEM,OAFDD,MAAM,cAAa,SAExB,G,IACKA,MAAM,W,IAOJ4D,MAAA,4B,IAMT3D,EAAAA,EAAAA,GAAyB,OAApBD,MAAM,aAAW,S,IAEhBA,MAAM,e,iBAQPA,MAAM,W,IACHA,MAAM,Y,IACVC,EAAAA,EAAAA,GAIC,SAHC4F,GAAG,mBACH2G,QAAQ,WACRjM,KAAK,Y,aAEA4mB,IAAI,oB,IAELnnB,MAAM,sBAkBxBE,EAAAA,GAAAA,IACEE,EAAAA,IACAkwB,EAAAA,IACAC,EAAAA,IACAC,EAAAA,KAGF,UAAiB,EC5HjB,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,sFDNzD3uB,EAAAA,EAAAA,IAiHM,MAjHNC,GAiHM,CAhHJa,IACA1C,EAAAA,EAAAA,GA8GM,MA9GN6C,GA8GM,EA7GJ7C,EAAAA,EAAAA,GAgBM,MAhBNoH,GAgBM,EAfJpH,EAAAA,EAAAA,GAKM,MALNqH,GAKM,mBAJDpF,EAAAQ,GAAG,kCAAmC,IACzC,GAAA6E,MAIFtH,EAAAA,EAAAA,GAEO,OAFPuH,IAEO3E,EAAAA,EAAAA,IADFX,EAAAQ,GAAG,wCAAD,IAEPzC,EAAAA,EAAAA,GAEO,OAFPwH,IAEO5E,EAAAA,EAAAA,IADFX,EAAAQ,GAAG,iCAAD,IAEPzC,EAAAA,EAAAA,GAES,SAFTyH,IAES7E,EAAAA,EAAAA,IADJX,EAAAQ,GAAG,kCAAD,MAGTzC,EAAAA,EAAAA,GA2FM,MA3FN+H,GA2FM,EA1FJ/H,EAAAA,EAAAA,GAgDM,MAhDNoI,GAgDM,CA/CJC,IAGArI,EAAAA,EAAAA,GA2CM,MA3CNyI,GA2CM,EA1CJzI,EAAAA,EAAAA,GAEK,WAAA4C,EAAAA,EAAAA,IADAX,EAAAQ,GAAG,mCAAD,IAGPE,EAAAA,EAAAA,IAUSka,EAAA,CATP8R,MAAM,SACN7R,QAAQ,+B,mBAER,iBAEO,EAFP9c,EAAAA,EAAAA,GAEO,OAFP0I,IAEO9F,EAAAA,EAAAA,IADFX,EAAAQ,GAAG,gCAAD,IAEPzC,EAAAA,EAAAA,GAEI,IAFJ2I,IAEI/F,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,gCAAD,G,WAITzC,EAAAA,EAAAA,GAyBM,MAzBN4c,GAyBM,EAxBJja,EAAAA,EAAAA,IAKEN,EAAA,CAJA,iBACAsB,MAAA,uBACA5D,MAAM,8BACNwC,KAAK,WAEPI,EAAAA,EAAAA,IAKEN,EAAA,CAJA,iBACAsB,MAAA,wBACA5D,MAAM,8BACNwC,KAAK,aAEPI,EAAAA,EAAAA,IAKEN,EAAA,CAJA,iBACAsB,MAAA,yBACA5D,MAAM,8BACNwC,KAAK,UAEPI,EAAAA,EAAAA,IAKEN,EAAA,CAJA,iBACAsB,MAAA,sBACA5D,MAAM,8BACNwC,KAAK,iBAMbvC,EAAAA,EAAAA,GAgBM,MAhBN8I,GAgBM,CAfJC,IAGA/I,EAAAA,EAAAA,GAWM,MAXNgd,GAWM,EAVJra,EAAAA,EAAAA,IASSka,EAAA,CARPC,QAAQ,oCACRC,IAAI,OACJhd,MAAM,QACN4uB,MAAM,U,mBAEN,iBAEI,EAFJ3uB,EAAAA,EAAAA,GAEI,IAFJid,IAEIra,EAAAA,EAAAA,IADCX,EAAAQ,GAAG,sCAAD,G,cAKbya,IAEAld,EAAAA,EAAAA,GAEO,OAFPod,IAEOxa,EAAAA,EAAAA,IADFX,EAAAQ,GAAG,iCAAD,IAEPzC,EAAAA,EAAAA,GAGC,SAFE2M,MAAO1K,EAAAQ,GAAG,gCACXnC,KAAK,Q,YAGPN,EAAAA,EAAAA,GAYM,MAZNsd,GAYM,EAXJtd,EAAAA,EAAAA,GAOO,OAPPud,GAOO,CANLC,IAKAxd,EAAAA,EAAAA,GAAiF,QAAjFyd,IAAiF7a,EAAAA,EAAAA,IAAhDX,EAAAQ,GAAG,oCAAD,MAErCzC,EAAAA,EAAAA,GAES,SAFT0d,IAES9a,EAAAA,EAAAA,IADJX,EAAAQ,GAAG,kCAAD,U,8kBEnEjB,IAAM+tB,GAAc,CAClB,KACA,KACA,OACA,OACA,OACA,SACA,QACA,WACAjqB,KAAI,SAAAsgB,GAAC,OAAIA,EAAI,YAAY,IAU3B,UACEhmB,KAAI,WAAI,IAAAY,EAAA,KACN,OAAAyD,GAAAA,GAAAA,GAAA,CACEurB,eAAeC,EAAAA,GAAAA,GAAY,CACzBC,UAAWvvB,KAAKwvB,gBAChBC,SAAUzvB,KAAKyvB,SACfC,gBAAiB1vB,KAAK0vB,kBAExBC,eAAeC,EAAAA,GAAAA,GAAY,CACzBjuB,SAAU,gBACVkuB,kBAAmB,kBAAMxvB,EAAKyvB,aAAa,IAE7CC,gBAAiB,GACjBrlB,SAAU,GACVslB,cAAehwB,KAAKsD,OAAOyF,QAAQ4I,aAAase,MAChDC,kBAAc5S,EACd6S,oBAAgB7S,EAChB8S,cAAe,EAEfC,eAAgB,CAAC,EACjBC,cAAe,CAAC,EAChBC,aAAc,CAAC,EACfC,aAAc,CAAC,EAEfC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,EAEdC,WAAW,EACXC,aAAa,EACbC,aAAa,EACbC,eAAe,EACfC,WAAW,GAERnkB,OAAOC,KAAKmkB,GAAAA,IACZ9rB,KAAI,SAAAsB,GAAG,MAAI,CAACA,EAAK,GAAG,IACpByqB,QAAO,SAACC,EAAGvlB,GAAA,IAAA0E,GAAA8gB,EAAAA,GAAAA,GAAAxlB,EAAE,GAACnF,EAAG6J,EAAA,GAAEjI,EAAGiI,EAAA,UAAAxM,GAAAA,GAAA,GAAYqtB,GAAG,IAAAvjB,EAAAA,EAAAA,GAAA,GAAGnH,EAAM,aAAe4B,GAAG,GAAK,CAAC,IAEtEwE,OAAOC,KAAKukB,GAAAA,IACZlsB,KAAI,SAAAsB,GAAG,MAAI,CAACA,EAAK,GAAG,IACpByqB,QAAO,SAACC,EAAG1gB,GAAA,IAAAC,GAAA0gB,EAAAA,GAAAA,GAAA3gB,EAAE,GAAChK,EAAGiK,EAAA,GAAErI,EAAGqI,EAAA,UAAA5M,GAAAA,GAAA,GAAYqtB,GAAG,IAAAvjB,EAAAA,EAAAA,GAAA,GAAGnH,EAAM,eAAiB4B,GAAG,GAAK,CAAC,IAAE,IAE7EipB,oBAAgBhU,EAChBiU,aAAc,CAAC,EACfC,WAAY,CAAC,EAEbC,eAAgB,GAChBC,iBAAkB,GAClBC,oBAAqB,GACrBC,iBAAkB,GAClBC,kBAAmB,GACnBC,qBAAsB,GACtBC,sBAAuB,GACvBC,mBAAoB,GACpBC,uBAAwB,IAE5B,EACA5uB,QAAO,WACL,IAAM6uB,EAAOlyB,MAEbmyB,EAAAA,GAAAA,MACG5xB,MAAK,SAAC6xB,GACL,OAAO1iB,QAAQ2iB,IACbxlB,OAAOylB,QAAQF,GACZjtB,KAAI,SAAA0L,GAAA,IAAAC,GAAAsgB,EAAAA,GAAAA,GAAAvgB,EAAA,GAAE0hB,EAACzhB,EAAA,GAAG,OAAAA,EAAA,GAAQvQ,MAAK,SAAAmF,GAAG,MAAI,CAAC6sB,EAAG7sB,EAAI,GAAC,IAE9C,IACCnF,MAAK,SAAAiyB,GAAM,OAAIA,EAAOtB,QAAO,SAACC,EAAGsB,GAAa,IAAAC,GAAAtB,EAAAA,GAAAA,GAAAqB,EAAA,GAAVF,EAACG,EAAA,GAAE1lB,EAAC0lB,EAAA,GACvC,OAAI1lB,EACFlJ,GAAAA,GAAA,GACKqtB,GAAG,IAAAvjB,EAAAA,EAAAA,GAAA,GACL2kB,EAAIvlB,IAGAmkB,CAEX,GAAG,CAAC,EAAE,IACL5wB,MAAK,SAACoyB,GACLT,EAAKnC,gBAAkB4C,CACzB,GACJ,EACAtb,QAAO,WACLrX,KAAK4yB,iCAC8B,IAAxB5yB,KAAKsxB,iBACdtxB,KAAKsxB,eAAiBtxB,KAAK6yB,iBAAiB,GAEhD,EACAhvB,SAAU,CACRivB,iBAAgB,WACd,GAAK9yB,KAAKkwB,aAAV,CACA,IAAM7U,EAAIrb,KAAKqB,GACT0xB,EAAM,gCACZC,EAKIhzB,KAAKkwB,aAJP+C,EAAMD,EAANC,OACAC,EAAkBF,EAAlBE,mBACAh0B,EAAI8zB,EAAJ9zB,KACAi0B,EAAiBH,EAAjBG,kBAEF,GAAe,SAAXF,EAAmB,CAErB,GAA2B,IAAvBC,GAAqC,kBAATh0B,EAC9B,OAAOmc,EAAE0X,EAAM,eAEjB,GAAIG,EAAqBE,GAAAA,GACvB,OAAO/X,EAAE0X,EAAM,2BAA6B,IAGpC1X,EADJ8X,EACMJ,EAAM,mBACNA,EAAM,oBAGlB,GAAIG,EAAqBE,GAAAA,GACvB,OAAO/X,EAAE0X,EAAM,2BAA6B,IAGpC1X,EADJ8X,EACMJ,EAAM,mBACNA,EAAM,mBAGpB,MAAO,GAAe,iBAAXE,EAA2B,CACpC,GAAa,6BAAT/zB,EACF,OAAOmc,EAAE0X,EAAM,4BAGjB,GAA2B,IAAvBG,EACF,OAAO7X,EAAE0X,EAAM,oBAGjB,GAAIG,EAAqBE,GAAAA,GACvB,OAAO/X,EAAE0X,EAAM,iBAAmB,IAG1B1X,EADJ8X,EACMJ,EAAM,wBACNA,EAAM,2BAIlB,GAAIG,EAAqBE,GAAAA,GACvB,OAAO/X,EAAE0X,EAAM,eAAiB,IAGxB1X,EADJ8X,EACMJ,EAAM,wBACNA,EAAM,0BAGpB,CAxD8B,CAyDhC,EACAM,gBAAe,WACb,OAAO7oB,MAAM8oB,QAAQtzB,KAAKgwB,eAAiB,EAAI,CACjD,EACAuD,cAAa,WAAI,IAAA5tB,EAAA,KACf,OAAOkH,OAAOC,KAAKmkB,GAAAA,IAChB9rB,KAAI,SAAAsB,GAAG,MAAI,CAACA,EAAKd,EAAKc,EAAM,cAAc,IAC1CyqB,QAAO,SAACC,EAAGqC,GAAA,IAAAC,GAAArC,EAAAA,GAAAA,GAAAoC,EAAE,GAAC/sB,EAAGgtB,EAAA,GAAEprB,EAAGorB,EAAA,UAAA3vB,GAAAA,GAAA,GAAYqtB,GAAG,IAAAvjB,EAAAA,EAAAA,GAAA,GAAGnH,EAAM4B,GAAG,GAAK,CAAC,EAC5D,EACAqrB,eAAc,WAAI,IAAAnkB,EAAA,KAChB,OAAO1C,OAAOC,KAAKukB,GAAAA,IAChBlsB,KAAI,SAAAsB,GAAG,MAAI,CAACA,EAAK8I,EAAK9I,EAAM,gBAAgB,IAC5CyqB,QAAO,SAACC,EAAGwC,GAAA,IAAAC,GAAAxC,EAAAA,GAAAA,GAAAuC,EAAE,GAACltB,EAAGmtB,EAAA,GAAEvrB,EAAGurB,EAAA,UAAA9vB,GAAAA,GAAA,GAAYqtB,GAAG,IAAAvjB,EAAAA,EAAAA,GAAA,GAAGnH,EAAM4B,GAAG,GAAK,CAAC,EAC5D,EACAwrB,aAAY,WACV,MAAO,CACLC,IAAK9zB,KAAKyxB,eACVvxB,MAAOF,KAAK0xB,iBACZqC,SAAU/zB,KAAK2xB,oBACfqC,MAAOh0B,KAAK4xB,iBACZ/M,OAAQ7kB,KAAK6xB,kBACboC,UAAWj0B,KAAK8xB,qBAChBoC,QAASl0B,KAAKgyB,mBACdmC,WAAYn0B,KAAK+xB,sBACjBqC,YAAap0B,KAAKiyB,uBAEtB,EACAoC,QAAO,WACL,OAAOC,EAAAA,GAAAA,IAAct0B,KAAKswB,cAAetwB,KAAKuwB,aAAcvwB,KAAKqwB,eAAgBrwB,KAAKwwB,aACxF,EACA+D,aAAY,WACV,OAAKv0B,KAAKq0B,QAAQpE,MAAMuE,OACjBx0B,KAAKq0B,QAAQpE,MADmB,CAAEuE,OAAQ,CAAC,EAAGC,QAAS,CAAC,EAAGC,MAAO,CAAC,EAAGC,QAAS,CAAC,EAAGC,MAAO,CAAC,EAEpG,EAEAC,gBAAe,WACb,IACE,IAAK70B,KAAKu0B,aAAaC,OAAOM,GAAI,MAAO,CAAC,EAC1C,IAAMN,EAASx0B,KAAKu0B,aAAaC,OAC3BC,EAAUz0B,KAAKu0B,aAAaE,QAClC,IAAKD,EAAOM,GAAI,MAAO,CAAC,EACxB,IASMC,EAAkBloB,OAAOylB,QAAQkC,GAAQtD,QAAO,SAACC,EAAG6D,GAAA,IA5M5CjJ,EA4M4CkJ,GAAA7D,EAAAA,GAAAA,GAAA4D,EAAE,GAACvuB,EAAGwuB,EAAA,GAAE1pB,EAAK0pB,EAAA,UAAAnxB,GAAAA,GAAA,GAAYqtB,GAAG,IAAAvjB,EAAAA,EAAAA,GAAA,GAAGnH,GA5M3EslB,EA4M8FxgB,GA3MxGuf,WAAW,OAAmB,gBAAViB,EACrBA,GAEApB,EAAAA,GAAAA,IAAQoB,IAwMuG,GAAK,CAAC,GAElHmJ,EAASroB,OAAOylB,QAAQrB,GAAAA,IAAkBC,QAAO,SAACC,EAAGgE,GAAmB,IAAAC,GAAAhE,EAAAA,GAAAA,GAAA+D,EAAA,GAAhB1uB,EAAG2uB,EAAA,GAAE7pB,EAAK6pB,EAAA,GAChEC,EAAyB,SAAR5uB,GAA0B,SAARA,EAIzC,KAHmB4uB,GACA,YAAjBpX,EAAAA,GAAAA,GAAO1S,IAAgC,OAAVA,GAAkBA,EAAM+pB,WAEtC,OAAOnE,EACxB,IAAAoE,EAA2BF,EAAiB,CAAEG,MAAO,MAASjqB,EAAtDiqB,EAAKD,EAALC,MAAOC,EAAOF,EAAPE,QACT9U,EAAa8U,GAAWD,EACxBE,GAAcC,EAAAA,GAAAA,IAAehV,GAC7BiV,EAAa,CACjBnvB,GAAGwG,QAAAC,EAAAA,GAAAA,GACgB,OAAfyT,EAAsB,CAAC,OAAQ,SAAU,QAAS,WAAa,KAG/DkV,GAASC,EAAAA,GAAAA,IACbN,EACAC,GAAWD,EACXE,EACAX,EACAN,GAIF,OAAIoB,EAAOE,OAAOC,MAAK,SAAAhpB,GAAC,OAAS,MAALA,CAAS,IAAUmkB,EAE/CrtB,GAAAA,GAAA,GACKqtB,GACAyE,EAAW1E,QAAO,SAACC,EAAK8E,GACzB,IAAMC,EAASb,EACX,KAAOY,EAAa,GAAGE,cAAgBF,EAAazqB,MAAM,GAC1DyqB,EACJ,OAAAnyB,GAAAA,GAAA,GACKqtB,GAAG,IAAAvjB,EAAAA,EAAAA,GAAA,GACLsoB,GAASE,EAAAA,GAAAA,IACRrB,EAAgBkB,GAChBJ,EACAd,EAAgBkB,KAGtB,GAAG,CAAC,GAER,GAAG,CAAC,GAEJ,OAAOppB,OAAOylB,QAAQ4C,GAAQhE,QAAO,SAACC,EAAGkF,GAAa,IAtDvCzH,EAsDuC0H,GAAAlF,EAAAA,GAAAA,GAAAiF,EAAA,GAAV9D,EAAC+D,EAAA,GAAEtpB,EAACspB,EAAA,GAA2B,OAAnBnF,EAAIoB,GAtDlC,CACxB1D,MADaD,EAsDwD5hB,GArDzDupB,YAAY,GAAK,KAE7B7H,GAAIE,GAAS,IACbH,IAAKG,GAAS,EAEdI,IAAKJ,GAAS,EACdG,KAAMH,GAAS,KA+CiEuC,CAAI,GAAG,CAAC,EAI5F,CAHE,MAAO3S,GAEP,OADAgY,QAAQC,KAAK,8BAA+BjY,GACrC,CAAC,CACV,CACF,EACAkY,aAAY,WACV,OAAK12B,KAAKq0B,QAAQsC,MACX,GAAA1pB,QAAAC,EAAAA,GAAAA,GACFL,OAAO+pB,OAAO52B,KAAKq0B,QAAQsC,QAAM,CACpC,qBACA,kDACAnxB,KAAK,KALyB,EAMlC,EACAqtB,iBAAgB,WACd,OAAOhmB,OAAOC,KAAK+pB,GAAAA,IAAiBC,MACtC,EACAC,uBAAwB,CACtBxqB,IAAG,WACD,QAASvM,KAAKg3B,aAChB,EACA9kB,IAAG,SAAE7J,GACCA,EACFrI,KAAKuxB,aAAavxB,KAAKsxB,gBAAkBtxB,KAAKi3B,sBAAsB9xB,KAAI,SAAAsgB,GAAC,OAAI5Y,OAAOqqB,OAAO,CAAC,EAAGzR,EAAE,WAE1FzlB,KAAKuxB,aAAavxB,KAAKsxB,eAElC,GAEF2F,sBAAqB,WACnB,OAAQj3B,KAAKu0B,aAAaI,SAAW,CAAC,GAAG30B,KAAKsxB,eAChD,EACA0F,cAAe,CACbzqB,IAAG,WACD,OAAOvM,KAAKuxB,aAAavxB,KAAKsxB,eAChC,EACApf,IAAG,SAAElF,GACHhN,KAAKuxB,aAAavxB,KAAKsxB,gBAAkBtkB,CAC3C,GAEFmqB,WAAU,WACR,OAAQn3B,KAAKywB,iBAAmBzwB,KAAK0wB,gBAAkB1wB,KAAK2wB,YAC9D,EACAb,cAAa,WACX,IAAMsH,IACHp3B,KAAKgxB,WACLhxB,KAAK6wB,aACL7wB,KAAK8wB,aACL9wB,KAAK+wB,eACL/wB,KAAK4wB,WAGFtf,EAAS,CACb4hB,mBAAoBE,GAAAA,IAwBtB,OArBIpzB,KAAKgxB,WAAaoG,KACpB9lB,EAAOsjB,MAAQ50B,KAAKwxB,aAElBxxB,KAAK6wB,aAAeuG,KACtB9lB,EAAOqjB,QAAU30B,KAAKuxB,eAEpBvxB,KAAK8wB,aAAesG,KACtB9lB,EAAOmjB,QAAUz0B,KAAK0zB,iBAEpB1zB,KAAK4wB,WAAawG,KACpB9lB,EAAOkjB,OAASx0B,KAAKuzB,gBAEnBvzB,KAAK+wB,eAAiBqG,KACxB9lB,EAAOojB,MAAQ10B,KAAK6zB,cAQf,CAELwD,uBAAwB,EAAGpH,MAPlBnsB,GAAA,CACTovB,mBAAoBE,GAAAA,IACjBpzB,KAAKu0B,cAK0BjjB,OAAAA,EAEtC,EACAgmB,SAAQ,WACN,IAAMC,EAAcv3B,KAAKw3B,QACzB,QAAOD,GAAcA,EAAYD,SAAS,QAC5C,GAEF7zB,WAAY,CACV0oB,WAAAA,GACAC,aAAAA,GACAqL,WAAAA,GACAC,cAAAA,GACAC,cAAAA,GACAC,YAAAA,GACA1pB,YAAAA,EAAAA,EACA2pB,QAAAA,GACAj0B,SAAAA,EAAAA,EACA2iB,OAAAA,GAAAA,GAEFzmB,QAAS,CACPg4B,UAAS,SAAAC,EAMP9E,GAEA,IANEhD,EAAK8H,EAAL9H,MACA3e,EAAMymB,EAANzmB,OACwB0mB,EAAWD,EAAnCV,uBAGFY,EAAcl3B,UAAA2H,OAAA,QAAA4U,IAAAvc,UAAA,IAAAA,UAAA,GAGd,GADAf,KAAKk4B,kBACA5mB,IAAW2e,EACd,MAAM,IAAIjrB,MAAM,2BAElB,IAAMmzB,EAAsB,iBAAXlF,GAA8BhD,EAAMuE,OAEjDwD,EADA,KAEEI,GAAyBnI,GAAS,CAAC,GAAGiD,mBACtCA,GAAsB5hB,GAAU,CAAC,GAAG4hB,oBAAsB,EAC1DmF,EAAgBnF,IAAuBE,GAAAA,GACvCkF,OACMhb,IAAV2S,QACa3S,IAAXhM,GACA4hB,IAAuBkF,EAIrBG,EAAoBjnB,GAAU2mB,IAAoBhI,EAClDoI,IAAkBC,GACnBC,GACW,OAAZJ,GACW,aAAXlF,IAEEqF,GAAqC,iBAAXrF,EAC5BjzB,KAAKkwB,aAAe,CAClB+C,OAAAA,EACAC,mBAAAA,EACAh0B,KAAM,4BAEE+wB,EAOAoI,IACVr4B,KAAKkwB,aAAe,CAClB+C,OAAAA,EACAE,mBAAoB7hB,EACpB4hB,mBAAAA,EACAh0B,KAAM,kBAXRc,KAAKkwB,aAAe,CAClB+C,OAAAA,EACAE,mBAAmB,EACnBD,mBAAAA,EACAh0B,KAAM,4BAWZc,KAAKw4B,oBAAoBvI,EAAOkI,EAAS7mB,EAAQinB,EACnD,EACAE,sBAAqB,WACnBz4B,KAAK4yB,2BAA0B,EACjC,EACAsF,eAAc,WACZl4B,KAAKkwB,kBAAe5S,EACpBtd,KAAKmwB,oBAAiB7S,CACxB,EACAob,UAAS,WAEP,OADmB14B,KAAKkwB,aAAhB+C,QAEN,IAAK,eACHjzB,KAAK4yB,2BAA0B,GAC/B,MACF,IAAK,OACH5yB,KAAKyvB,SAASzvB,KAAKmwB,gBAAgB,GAGvCnwB,KAAKk4B,gBACP,EACAS,cAAa,WAEX,OADmB34B,KAAKkwB,aAAhB+C,QAEN,IAAK,eACHjzB,KAAK4yB,2BAA0B,GAAO,GACtC,MACF,IAAK,OACH4D,QAAQ72B,MAAM,mDAGlBK,KAAKk4B,gBACP,EACAtF,0BAAyB,WAAoD,IAAlDgG,EAAiB73B,UAAA2H,OAAA,QAAA4U,IAAAvc,UAAA,IAAAA,UAAA,GAAU43B,EAAa53B,UAAA2H,OAAA,QAAA4U,IAAAvc,UAAA,IAAAA,UAAA,GACjE83B,EAGI74B,KAAKsD,OAAOyF,QAAQ4I,aAFTse,EAAK4I,EAAlBC,YACmBxnB,EAAMunB,EAAzBE,kBAEG9I,GAAU3e,EAQbtR,KAAK83B,UACH,CACE7H,MAAAA,EACA3e,OAAQqnB,EAAgB1I,EAAQ3e,GAElC,eACAsnB,GAZF54B,KAAK83B,UACH93B,KAAKsD,OAAOW,MAAMuK,SAASwqB,UAC3B,WACAJ,EAYN,EACAK,eAAc,WACZj5B,KAAKsD,OAAOC,SAAS,YAAa,CAChC8O,KAAM,cACN9G,MAAKzH,GAAA,CACHovB,mBAAoBE,GAAAA,IACjBpzB,KAAKu0B,gBAGZv0B,KAAKsD,OAAOC,SAAS,YAAa,CAChC8O,KAAM,oBACN9G,MAAO,CACL2nB,mBAAoBE,GAAAA,GACpBuB,QAAS30B,KAAKuxB,aACdqD,MAAO50B,KAAKwxB,WACZiD,QAASz0B,KAAK0zB,eACdc,OAAQx0B,KAAKuzB,cACbmB,MAAO10B,KAAK6zB,eAGlB,EACAqF,8BAA6B,WAC3Bl5B,KAAKswB,eAAgB6I,EAAAA,GAAAA,IAAe,CAClC1E,QAASz0B,KAAK0zB,eACdc,OAAQx0B,KAAKuzB,gBAEfvzB,KAAKqwB,gBAAiB+I,EAAAA,GAAAA,IACpB,CAAEzE,QAAS30B,KAAKuxB,aAAckD,QAASz0B,KAAKu0B,aAAaE,QAASvB,mBAAoBlzB,KAAKowB,eAC3FpwB,KAAKswB,cAAcL,MAAMuE,OACzBx0B,KAAKswB,cAAc+I,IAEvB,EACAC,YAAW,WAAMt5B,KAAKqvB,cAAckK,YAAa,EACjDC,YAAW,WAAMx5B,KAAK2vB,cAAc8J,YAAa,EACjDhK,SAAQ,SAAEiK,GAA6B,IAArBC,EAAW54B,UAAA2H,OAAA,QAAA4U,IAAAvc,UAAA,IAAAA,UAAA,GAC3Bf,KAAKmwB,eAAiBuJ,EACtB15B,KAAK83B,UAAU4B,EAAQ,OAAQC,EACjC,EACAjK,gBAAe,SAAE7Y,GACf7W,KAAKsD,OAAOC,SAAS,mBAAoB,CAAEugB,WAAY,kCAAmCM,MAAO,SACnG,EACAoL,gBAAe,SAAEkK,GACf,IAAMvB,EAAUuB,EAAOrC,uBACvB,OAAOc,GAAW,GAAKA,GAAW,CACpC,EACAyB,SAAQ,WACN55B,KAAK4yB,2BACP,EAGAiH,QAAO,WAAI,IAAApqB,EAAA,KACT5C,OAAOC,KAAK9M,KAAK85B,OACdjyB,QAAO,SAAA4d,GAAC,OAAIA,EAAEsU,SAAS,eAAiBtU,EAAEsU,SAAS,eAAe,IAClElyB,QAAO,SAAA4d,GAAC,OAAK2J,GAAYplB,SAASyb,EAAE,IACpCuU,SAAQ,SAAAvzB,GACPgJ,EAAKqqB,MAAMrzB,QAAO6W,CACpB,GACJ,EAEA2c,eAAc,WAAI,IAAAxjB,EAAA,KAChB5J,OAAOC,KAAK9M,KAAK85B,OACdjyB,QAAO,SAAA4d,GAAC,OAAIA,EAAEsU,SAAS,cAAc,IACrCC,SAAQ,SAAAvzB,GACPgQ,EAAKqjB,MAAMrzB,QAAO6W,CACpB,GACJ,EAEA4c,aAAY,WAAI,IAAA5iB,EAAA,KACdzK,OAAOC,KAAK9M,KAAK85B,OACdjyB,QAAO,SAAA4d,GAAC,OAAIA,EAAEsU,SAAS,eAAe,IACtCC,SAAQ,SAAAvzB,GACP6Q,EAAKwiB,MAAMrzB,QAAO6W,CACpB,GACJ,EAEA6c,aAAY,WACVn6B,KAAKuxB,aAAe,CAAC,CACvB,EAEA6I,WAAU,WACRp6B,KAAKwxB,WAAa,CAAC,CACrB,EAeAgH,oBAAmB,SAAEvI,GAAiD,IAChE/vB,EADgE6a,EAAA,KAA1Cod,EAAOp3B,UAAA2H,OAAA,QAAA4U,IAAAvc,UAAA,GAAAA,UAAA,GAAG,EAAGuQ,EAAMvQ,UAAA2H,OAAA,EAAA3H,UAAA,QAAAuc,EAAEqc,EAAW54B,UAAA2H,OAAA,QAAA4U,IAAAvc,UAAA,IAAAA,UAAA,QAEpC,IAAXuQ,IACLqoB,GAAeroB,EAAO4hB,qBAAuBE,GAAAA,GAOjDlzB,EAAQ+vB,GANN/vB,EAAQoR,EACR6mB,EAAU7mB,EAAO4hB,oBAQrB,IAAMwB,EAAQx0B,EAAMw0B,OAASx0B,EACvBu0B,EAAUv0B,EAAMu0B,QAChBE,EAAUz0B,EAAMy0B,SAAW,CAAC,EAC5BC,EAAQ10B,EAAM00B,OAAS,CAAC,EACxBJ,EAAUt0B,EAAMgzB,mBAElBhzB,EAAMs0B,QAAUt0B,GADhBm6B,EAAAA,GAAAA,IAAWn6B,EAAMs0B,QAAUt0B,GAuB/B,GApBgB,IAAZi4B,IACEj4B,EAAMi4B,UAASA,EAAUj4B,EAAMi4B,cAER,IAAhB3D,EAAO3F,WAA6C,IAAd2F,EAAO8F,KACtDnC,EAAU,QAGe,IAAhB3D,EAAO3F,WAA6C,IAAd2F,EAAO8F,KACtDnC,EAAU,IAIdn4B,KAAKowB,cAAgB+H,EAGL,IAAZA,IACFn4B,KAAKu6B,cAAeC,EAAAA,GAAAA,IAAQhG,EAAOV,KACnC9zB,KAAKy6B,gBAAiBD,EAAAA,GAAAA,IAAQhG,EAAO8F,MAGlCt6B,KAAK4wB,UAAW,CACnB5wB,KAAK65B,UACL,IAAM/sB,EAAO,IAAI4tB,IAAgB,IAAZvC,EAAgBtrB,OAAOC,KAAKmkB,GAAAA,IAAoB,IACrD,IAAZkH,GAA6B,OAAZA,GACnBrrB,EACGuf,IAAI,MACJA,IAAI,QACJA,IAAI,QACJA,IAAI,SACJA,IAAI,UACJA,IAAI,WAGTvf,EAAKktB,SAAQ,SAAAvzB,GACX,IAAMslB,EAAQyI,EAAO/tB,GACfk0B,GAAMH,EAAAA,GAAAA,IAAQhG,EAAO/tB,IAC3BsU,EAAKtU,EAAM,cAAwB,QAARk0B,EAAgB5O,EAAQ4O,CACrD,GACF,CAEIlG,IAAYz0B,KAAK8wB,cACnB9wB,KAAKk6B,eACLrtB,OAAOylB,QAAQmC,GAASuF,SAAQ,SAAAY,GAAY,IAAAC,GAAAzJ,EAAAA,GAAAA,GAAAwJ,EAAA,GAAVrI,EAACsI,EAAA,GAAE7tB,EAAC6tB,EAAA,GAChC,MAAO7tB,GAAmCwZ,OAAOsU,MAAM9tB,KAC3D+N,EAAKwX,EAAI,gBAAkBvlB,EAC7B,KAGGhN,KAAK+wB,gBACR/wB,KAAKi6B,iBACLptB,OAAOylB,QAAQoC,GAAOsF,SAAQ,SAAAe,GAAY,IAAAC,GAAA5J,EAAAA,GAAAA,GAAA2J,EAAA,GAAVxI,EAACyI,EAAA,GAAEhuB,EAACguB,EAAA,GAE5Bv0B,EAAM8rB,EAAEwH,SAAS,UAAYxH,EAAEhgB,MAAM,UAAU,GAAKggB,EAC1DxX,EAAKtU,EAAM,eAAiBuG,CAC9B,KAGGhN,KAAK6wB,cACR7wB,KAAKm6B,eAEHn6B,KAAKuxB,aADS,IAAZ4G,GACkB8C,EAAAA,GAAAA,IAAYtG,EAAS30B,KAAKu0B,aAAaE,SAEvCE,EAEtB30B,KAAKsxB,eAAiBtxB,KAAK6yB,iBAAiB,IAGzC7yB,KAAKgxB,YACRhxB,KAAKo6B,aACLp6B,KAAKwxB,WAAaoD,EAEtB,GAEFxsB,MAAO,CACLyrB,aAAY,WACV,IACE7zB,KAAKuwB,cAAe2K,EAAAA,GAAAA,IAAc,CAAExG,MAAO10B,KAAK6zB,eAChD7zB,KAAK2wB,cAAe,CAItB,CAHE,MAAOnS,GACPxe,KAAK2wB,cAAe,EACpB6F,QAAQC,KAAKjY,EACf,CACF,EACA+S,aAAc,CACZ4J,QAAO,WACL,GAA8D,IAA1DtuB,OAAOuuB,oBAAoBp7B,KAAKswB,eAAe5nB,OACnD,IACE1I,KAAKk5B,gCACLl5B,KAAKywB,gBAAiB,CAIxB,CAHE,MAAOjS,GACPxe,KAAKywB,gBAAiB,EACtB+F,QAAQC,KAAKjY,EACf,CACF,EACA6c,MAAM,GAER7J,WAAY,CACV2J,QAAO,WACL,IACEn7B,KAAKwwB,cAAe8K,EAAAA,GAAAA,GAAc,CAAE1G,MAAO50B,KAAKwxB,aAChDxxB,KAAKu7B,cAAe,CAItB,CAHE,MAAO/c,GACPxe,KAAKu7B,cAAe,EACpB/E,QAAQC,KAAKjY,EACf,CACF,EACA6c,MAAM,GAER9H,cAAa,WACX,IACEvzB,KAAKk5B,gCACLl5B,KAAK0wB,eAAgB,EACrB1wB,KAAKywB,gBAAiB,CAKxB,CAJE,MAAOjS,GACPxe,KAAK0wB,eAAgB,EACrB1wB,KAAKywB,gBAAiB,EACtB+F,QAAQC,KAAKjY,EACf,CACF,EACAkV,eAAc,WACZ,IACE1zB,KAAKk5B,+BAGP,CAFE,MAAO1a,GACPgY,QAAQC,KAAKjY,EACf,CACF,EACA9T,SAAQ,WAAI,IAAAsQ,EAAA,KACVhb,KAAKgwB,cAAgBnjB,OAAOylB,QAAQtyB,KAAK+vB,iBAAiByL,MAAK,SAAAC,GAAY,IAAAC,GAAAtK,EAAAA,GAAAA,GAAAqK,EAAA,GAAP9tB,GAAF+tB,EAAA,GAAGA,EAAA,IACnE,OAAIlxB,MAAM8oB,QAAQ3lB,IAChB6oB,QAAQmF,IAAIhuB,EAAE,KAAOqN,EAAKtQ,SAAUsQ,EAAKtQ,UAClCiD,EAAE,KAAOqN,EAAKtQ,UAEdiD,EAAE0E,OAAS2I,EAAKtQ,QAE3B,IAAG,EACL,EACAslB,cAAa,WACXhwB,KAAKk4B,iBACwB,IAAzBl4B,KAAKqzB,iBACFrzB,KAAK+wB,eACR/wB,KAAKi6B,iBAGFj6B,KAAK6wB,aACR7wB,KAAKm6B,eAGFn6B,KAAK8wB,aACR9wB,KAAKk6B,eAGFl6B,KAAK4wB,YACR5wB,KAAK65B,UAEL75B,KAAK47B,aAAe57B,KAAKgwB,cAAc,GACvChwB,KAAKu6B,aAAev6B,KAAKgwB,cAAc,GACvChwB,KAAKy6B,eAAiBz6B,KAAKgwB,cAAc,GACzChwB,KAAK67B,eAAiB77B,KAAKgwB,cAAc,GACzChwB,KAAK87B,eAAiB97B,KAAKgwB,cAAc,GACzChwB,KAAK+7B,iBAAmB/7B,KAAKgwB,cAAc,GAC3ChwB,KAAKg8B,gBAAkBh8B,KAAKgwB,cAAc,GAC1ChwB,KAAKi8B,kBAAoBj8B,KAAKgwB,cAAc,KAErChwB,KAAKqzB,iBAAmB,GACjCrzB,KAAKw4B,oBAAoBx4B,KAAKgwB,cAAcC,MAAO,EAAGjwB,KAAKgwB,cAAc1e,OAE7E,ICjxBJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,6TlBNzD9Q,EAAAA,EAAAA,IAkhCM,MAlhCNC,GAkhCM,EAjhCJ7B,EAAAA,EAAAA,GAsHM,MAtHN0C,GAsHM,EArHJ1C,EAAAA,EAAAA,GAwFM,MAxFN6C,GAwFM,CAtFIZ,EAAAqvB,eAAY,WADpB1vB,EAAAA,EAAAA,IA6CM,MA7CNwF,GA6CM,EAzCJpH,EAAAA,EAAAA,GAEM,MAFNqH,IAEMzE,EAAAA,EAAAA,IADDX,EAAAiyB,kBAAgB,IAErBl0B,EAAAA,EAAAA,GAqCM,MArCNsH,GAqCM,CApCkC,6BAAtBrF,EAAAqvB,aAAahxB,OAAI,WAAjCsB,EAAAA,EAAAA,IAaW8F,EAAAA,GAAA,CAAAG,IAAA,KAZT7H,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA63B,WAAA73B,EAAA63B,UAAA53B,MAAAD,EAAAE,UAAS,K,QAEdF,EAAAQ,GAAG,uCAAD,IAEPzC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA83B,eAAA93B,EAAA83B,cAAA73B,MAAAD,EAAAE,UAAa,K,QAElBF,EAAAQ,GAAG,yCAAD,SAGYR,EAAAqvB,aAAaiD,oBAAiB,WACjD3yB,EAAAA,EAAAA,IAKS,U,MAJP7B,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAq3B,gBAAAr3B,EAAAq3B,eAAAp3B,MAAAD,EAAAE,UAAc,K,QAEnBF,EAAAQ,GAAG,oBAAD,iBAGTb,EAAAA,EAAAA,IAaW8F,EAAAA,GAAA,CAAAG,IAAA,KAZT7H,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA63B,WAAA73B,EAAA63B,UAAA53B,MAAAD,EAAAE,UAAS,K,QAEdF,EAAAQ,GAAG,uCAAD,IAEPzC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAq3B,gBAAAr3B,EAAAq3B,eAAAp3B,MAAAD,EAAAE,UAAc,K,QAEnBF,EAAAQ,GAAG,uCAAD,+BAKbzC,EAAAA,EAAAA,GAwCM,MAxCNuH,GAwCM,EAvCJvH,EAAAA,EAAAA,GAwBM,MAxBNwH,GAwBM,mBAvBDvF,EAAAQ,GAAG,qBAAsB,IAC5B,IAAAzC,EAAAA,EAAAA,GAqBQ,QArBRyH,GAqBQ,EAjBN9E,EAAAA,EAAAA,IAgBS2lB,EAAA,CAfP1iB,GAAG,kB,WACM3D,EAAA6J,S,qDAAA7J,EAAA6J,SAAQjD,CAAA,GACjB9I,MAAM,mB,mBAGJ,iBAAgC,gBADlC6B,EAAAA,EAAAA,IAUS8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IATS1F,EAAAkvB,iBAAe,SAAxBxtB,G,kBADT/B,EAAAA,EAAAA,IAUS,UARNiG,IAAKlE,EAAM8P,KACX9G,MAAOhJ,EAAM8P,MAAQ9P,EAAM,GAC3BA,OAAK0oB,EAAAA,EAAAA,IAAA,C,gBAAyC1oB,EAAK,KAAQA,EAAM0tB,OAAS1tB,EAAM+O,QAAQkjB,OAAOM,G,MAA+BvyB,EAAK,KAAQA,EAAM0tB,OAAS1tB,EAAM+O,QAAQkjB,OAAO3F,S,QAK7KtsB,EAAM,IAAMA,EAAM8P,MAAI,GAAA1L,G,0CAKjC/H,EAAAA,EAAAA,GAaM,MAbNoI,GAaM,EAZJpI,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAAy4B,aAAAz4B,EAAAy4B,YAAAx4B,MAAAD,EAAAE,UAAW,K,QAEhBF,EAAAQ,GAAG,0BAAD,IAEPzC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,KAAAA,EAAA,qBAAEC,EAAA24B,aAAA34B,EAAA24B,YAAA14B,MAAAD,EAAAE,UAAW,K,QAEhBF,EAAAQ,GAAG,0BAAD,UAKbzC,EAAAA,EAAAA,GA2BM,MA3BNqI,GA2BM,EA1BJrI,EAAAA,EAAAA,GAIO,OAJPyI,GAIO,EAHL9F,EAAAA,EAAAA,IAEWkK,EAAA,C,WAFQ5K,EAAA+vB,U,qDAAA/vB,EAAA+vB,UAASnpB,CAAA,I,mBAC1B,iBAA8C,mBAA3C5G,EAAAQ,GAAG,uCAAD,G,8BAGTzC,EAAAA,EAAAA,GAIO,OAJP0I,GAIO,EAHL/F,EAAAA,EAAAA,IAEWkK,EAAA,C,WAFQ5K,EAAAgwB,Y,qDAAAhwB,EAAAgwB,YAAWppB,CAAA,I,mBAC5B,iBAAgD,mBAA7C5G,EAAAQ,GAAG,yCAAD,G,8BAGTzC,EAAAA,EAAAA,GAIO,OAJP2I,GAIO,EAHLhG,EAAAA,EAAAA,IAEWkK,EAAA,C,WAFQ5K,EAAAiwB,Y,uDAAAjwB,EAAAiwB,YAAWrpB,CAAA,I,mBAC5B,iBAAgD,mBAA7C5G,EAAAQ,GAAG,yCAAD,G,8BAGTzC,EAAAA,EAAAA,GAIO,OAJP4c,GAIO,EAHLja,EAAAA,EAAAA,IAEWkK,EAAA,C,WAFQ5K,EAAAkwB,c,uDAAAlwB,EAAAkwB,cAAatpB,CAAA,I,mBAC9B,iBAAkD,mBAA/C5G,EAAAQ,GAAG,2CAAD,G,8BAGTzC,EAAAA,EAAAA,GAIO,OAJP8I,GAIO,EAHLnG,EAAAA,EAAAA,IAEWkK,EAAA,C,WAFQ5K,EAAAmwB,U,uDAAAnwB,EAAAmwB,UAASvpB,CAAA,I,mBAC1B,iBAA8C,mBAA3C5G,EAAAQ,GAAG,uCAAD,G,8BAGTzC,EAAAA,EAAAA,GAAyD,UAAA4C,EAAAA,EAAAA,IAAnDX,EAAAQ,GAAG,2CAAD,QAIZE,EAAAA,EAAAA,IAAiC26B,EAAA,CAAvB35B,OAAK0oB,EAAAA,EAAAA,IAAEpqB,EAAA61B,e,+BAEjB11B,EAAAA,EAAAA,IAi4Bam7B,EAAAA,GAAA,OAh4BX56B,EAAAA,EAAAA,IA+3BewO,EAAA,CA/3BDtJ,IAAI,eAAa,C,kBAC7B,iBA0GM,EA1GN7H,EAAAA,EAAAA,GA0GM,OAzGHiH,MAAOhF,EAAAQ,GAAG,2CACX1C,MAAM,mB,EAENC,EAAAA,EAAAA,GAgBM,MAhBNgd,GAgBM,EAfJhd,EAAAA,EAAAA,GAAsC,UAAA4C,EAAAA,EAAAA,IAAhCX,EAAAQ,GAAG,wBAAD,IACRzC,EAAAA,EAAAA,GAaM,MAbNid,GAaM,EAZJjd,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,MAAAA,EAAA,sBAAEC,EAAAq5B,cAAAr5B,EAAAq5B,aAAAp5B,MAAAD,EAAAE,UAAY,K,QAEjBF,EAAAQ,GAAG,0CAAD,IAEPzC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,MAAAA,EAAA,sBAAEC,EAAAg5B,SAAAh5B,EAAAg5B,QAAA/4B,MAAAD,EAAAE,UAAO,K,QAEZF,EAAAQ,GAAG,sCAAD,QAIXzC,EAAAA,EAAAA,GAA2C,UAAA4C,EAAAA,EAAAA,IAArCX,EAAAQ,GAAG,6BAAD,IACRzC,EAAAA,EAAAA,GAAsD,WAAA4C,EAAAA,EAAAA,IAA/CX,EAAAQ,GAAG,sCAAD,IACTzC,EAAAA,EAAAA,GAgCM,MAhCNkd,GAgCM,EA/BJva,EAAAA,EAAAA,IAIE8rB,EAAA,C,WAHSxsB,EAAA+6B,a,uDAAA/6B,EAAA+6B,aAAYn0B,CAAA,GACrB4K,KAAK,UACJxM,MAAOhF,EAAAQ,GAAG,wB,gCAEbE,EAAAA,EAAAA,IAIE+rB,EAAA,C,WAHSzsB,EAAAu7B,e,uDAAAv7B,EAAAu7B,eAAc30B,CAAA,GACvB4K,KAAK,YACJgY,SAAUxpB,EAAA0zB,aAAaE,QAAQK,I,mCAElCvzB,EAAAA,EAAAA,IAIE8rB,EAAA,C,WAHSxsB,EAAA45B,e,uDAAA55B,EAAA45B,eAAchzB,CAAA,GACvB4K,KAAK,YACJxM,MAAOhF,EAAAQ,GAAG,kB,gCAEbE,EAAAA,EAAAA,IAAoD86B,EAAA,CAApC/N,SAAUztB,EAAAg0B,gBAAgByH,Q,sBAC1C/6B,EAAAA,EAAAA,IAME8rB,EAAA,C,WALSxsB,EAAA07B,iB,uDAAA17B,EAAA07B,iBAAgB90B,CAAA,GACzB4K,KAAK,cACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOgI,KAC9B32B,MAAOhF,EAAAQ,GAAG,mBACV,6BAAiD,IAAnBR,EAAAg7B,gB,mEAEjCt6B,EAAAA,EAAAA,IAME8rB,EAAA,C,WALSxsB,EAAAg7B,e,uDAAAh7B,EAAAg7B,eAAcp0B,CAAA,GACvB4K,KAAK,YACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOiI,OAC9B52B,MAAOhF,EAAAQ,GAAG,kBACV,6BAAmD,IAArBR,EAAA07B,kB,mEAEjCh7B,EAAAA,EAAAA,IAAoD86B,EAAA,CAApC/N,SAAUztB,EAAAg0B,gBAAgB6H,Q,wBAE5C99B,EAAAA,EAAAA,GAmBM,MAnBNod,GAmBM,EAlBJza,EAAAA,EAAAA,IAIE8rB,EAAA,C,WAHSxsB,EAAA05B,a,uDAAA15B,EAAA05B,aAAY9yB,CAAA,GACrB4K,KAAK,UACJxM,MAAOhF,EAAAQ,GAAG,wB,gCAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA87B,iB,uDAAA97B,EAAA87B,iBAAgBl1B,CAAA,GACzB4K,KAAK,cACJxM,MAAOhF,EAAAQ,GAAG,iBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOoI,Q,2CAEjCr7B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAg8B,iB,uDAAAh8B,EAAAg8B,iBAAgBp1B,CAAA,GACzB4K,KAAK,cACJxM,MAAOhF,EAAAQ,GAAG,kBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOsI,Q,2CAEjCl+B,EAAAA,EAAAA,GAA+D,UAAA4C,EAAAA,EAAAA,IAAzDX,EAAAQ,GAAG,iDAAD,MAEVzC,EAAAA,EAAAA,GAAsD,WAAA4C,EAAAA,EAAAA,IAA/CX,EAAAQ,GAAG,sCAAD,IACTzC,EAAAA,EAAAA,GAaM,MAbNqd,GAaM,EAZJ1a,EAAAA,EAAAA,IAIE8rB,EAAA,C,WAHSxsB,EAAAi7B,e,uDAAAj7B,EAAAi7B,eAAcr0B,CAAA,GACvB4K,KAAK,YACJxM,MAAOhF,EAAAQ,GAAG,kB,gCAEbE,EAAAA,EAAAA,IAAoD86B,EAAA,CAApC/N,SAAUztB,EAAAg0B,gBAAgBkI,Q,sBAC1Cx7B,EAAAA,EAAAA,IAIE8rB,EAAA,C,WAHSxsB,EAAAm7B,gB,uDAAAn7B,EAAAm7B,gBAAev0B,CAAA,GACxB4K,KAAK,aACJxM,MAAOhF,EAAAQ,GAAG,mB,gCAEbE,EAAAA,EAAAA,IAAqD86B,EAAA,CAArC/N,SAAUztB,EAAAg0B,gBAAgBmI,S,wBAE5Cp+B,EAAAA,EAAAA,GAaM,MAbNsd,GAaM,EAZJ3a,EAAAA,EAAAA,IAIE8rB,EAAA,C,WAHSxsB,EAAAk7B,iB,uDAAAl7B,EAAAk7B,iBAAgBt0B,CAAA,GACzB4K,KAAK,cACJxM,MAAOhF,EAAAQ,GAAG,oB,gCAEbE,EAAAA,EAAAA,IAAsD86B,EAAA,CAAtC/N,SAAUztB,EAAAg0B,gBAAgBoI,U,sBAC1C17B,EAAAA,EAAAA,IAIE8rB,EAAA,C,WAHSxsB,EAAAo7B,kB,uDAAAp7B,EAAAo7B,kBAAiBx0B,CAAA,GAC1B4K,KAAK,eACJxM,MAAOhF,EAAAQ,GAAG,qB,gCAEbE,EAAAA,EAAAA,IAAuD86B,EAAA,CAAvC/N,SAAUztB,EAAAg0B,gBAAgBqI,W,wBAE5Ct+B,EAAAA,EAAAA,GAA2C,UAAA4C,EAAAA,EAAAA,IAArCX,EAAAQ,GAAG,6BAAD,WAGVzC,EAAAA,EAAAA,GA+jBM,OA9jBHiH,MAAOhF,EAAAQ,GAAG,6CACX1C,MAAM,mB,EAENC,EAAAA,EAAAA,GAcM,MAdNwd,GAcM,EAbJxd,EAAAA,EAAAA,GAAsC,UAAA4C,EAAAA,EAAAA,IAAhCX,EAAAQ,GAAG,wBAAD,IACRzC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,MAAAA,EAAA,sBAAEC,EAAAq5B,cAAAr5B,EAAAq5B,aAAAp5B,MAAAD,EAAAE,UAAY,K,QAEjBF,EAAAQ,GAAG,0CAAD,IAEPzC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,MAAAA,EAAA,sBAAEC,EAAAg5B,SAAAh5B,EAAAg5B,QAAA/4B,MAAAD,EAAAE,UAAO,K,QAEZF,EAAAQ,GAAG,sCAAD,MAGTzC,EAAAA,EAAAA,GAsEM,MAtENyd,GAsEM,EArEJzd,EAAAA,EAAAA,GAAwD,WAAA4C,EAAAA,EAAAA,IAAjDX,EAAAQ,GAAG,wCAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAs8B,mB,uDAAAt8B,EAAAs8B,mBAAkB11B,CAAA,GAC3B4K,KAAK,gBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOiI,OAC9B52B,MAAOhF,EAAAQ,GAAG,mB,2CAEbE,EAAAA,EAAAA,IAAsD86B,EAAA,CAAtC/N,SAAUztB,EAAAg0B,gBAAgBuI,U,sBAC1C77B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAw8B,wB,uDAAAx8B,EAAAw8B,wBAAuB51B,CAAA,GAChC4K,KAAK,qBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO8I,OAC9Bz3B,MAAOhF,EAAAQ,GAAG,uB,2CAEbE,EAAAA,EAAAA,IAA2D86B,EAAA,CAA3C/N,SAAUztB,EAAAg0B,gBAAgB0I,e,sBAC1C3+B,EAAAA,EAAAA,GAAyD,WAAA4C,EAAAA,EAAAA,IAAlDX,EAAAQ,GAAG,yCAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA28B,qB,uDAAA38B,EAAA28B,qBAAoB/1B,CAAA,GAC7B4K,KAAK,aACJxM,MAAOhF,EAAAQ,GAAG,8CACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOiJ,Y,2CAEjCl8B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA68B,yB,uDAAA78B,EAAA68B,yBAAwBj2B,CAAA,GACjC4K,KAAK,iBACJxM,MAAOhF,EAAAQ,GAAG,iBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOmJ,gB,2CAEjCp8B,EAAAA,EAAAA,IAGE86B,EAAA,CAFC/N,SAAUztB,EAAAg0B,gBAAgB8I,eAC3BtP,MAAA,I,sBAEF9sB,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA+8B,uB,uDAAA/8B,EAAA+8B,uBAAsBn2B,CAAA,GAC/B4K,KAAK,eACJxM,MAAOhF,EAAAQ,GAAG,gDACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOqJ,c,2CAEjCt8B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAi9B,2B,uDAAAj9B,EAAAi9B,2BAA0Br2B,CAAA,GACnC4K,KAAK,mBACJxM,MAAOhF,EAAAQ,GAAG,iBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOuJ,kB,2CAEjCx8B,EAAAA,EAAAA,IAGE86B,EAAA,CAFC/N,SAAUztB,EAAAg0B,gBAAgBkJ,iBAC3B1P,MAAA,I,sBAEF9sB,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAm9B,uB,uDAAAn9B,EAAAm9B,uBAAsBv2B,CAAA,GAC/B4K,KAAK,eACJxM,MAAOhF,EAAAQ,GAAG,gDACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOyJ,c,2CAEjC18B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAq9B,2B,uDAAAr9B,EAAAq9B,2BAA0Bz2B,CAAA,GACnC4K,KAAK,mBACJxM,MAAOhF,EAAAQ,GAAG,iBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAO2J,kB,2CAEjC58B,EAAAA,EAAAA,IAGE86B,EAAA,CAFC/N,SAAUztB,EAAAg0B,gBAAgBsJ,iBAC3B9P,MAAA,I,sBAEF9sB,EAAAA,EAAAA,IAIE+rB,EAAA,C,WAHSzsB,EAAAu9B,kB,uDAAAv9B,EAAAu9B,kBAAiB32B,CAAA,GAC1B4K,KAAK,eACJgY,SAAUxpB,EAAA0zB,aAAaE,QAAQ4J,O,qCAGpCz/B,EAAAA,EAAAA,GAkBM,MAlBN0d,GAkBM,EAjBJ1d,EAAAA,EAAAA,GAAyD,WAAA4C,EAAAA,EAAAA,IAAlDX,EAAAQ,GAAG,yCAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAy9B,4B,uDAAAz9B,EAAAy9B,4BAA2B72B,CAAA,GACpC4K,KAAK,oBACJxM,MAAOhF,EAAAQ,GAAG,qDACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAO+J,mB,2CAEjCh9B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA29B,gC,uDAAA39B,EAAA29B,gCAA+B/2B,CAAA,GACxC4K,KAAK,wBACJxM,MAAOhF,EAAAQ,GAAG,iBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOiK,uB,2CAEjCl9B,EAAAA,EAAAA,IAGE86B,EAAA,CAFC/N,SAAUztB,EAAAg0B,gBAAgB4J,sBAC3BpQ,MAAA,I,wBAGJzvB,EAAAA,EAAAA,GAkCM,MAlCN2d,GAkCM,EAjCJ3d,EAAAA,EAAAA,GAAgE,WAAA4C,EAAAA,EAAAA,IAAzDX,EAAAQ,GAAG,gDAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA69B,gB,uDAAA79B,EAAA69B,gBAAej3B,CAAA,GACxB4K,KAAK,aACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOR,MAC9BnuB,MAAOhF,EAAAQ,GAAG,wB,2CAEbE,EAAAA,EAAAA,IAKE+rB,EAAA,C,WAJSzsB,EAAA89B,kB,uDAAA99B,EAAA89B,kBAAiBl3B,CAAA,GAC1B4K,KAAK,eACJgY,SAAUxpB,EAAA0zB,aAAaE,QAAQT,MAC/BvqB,SAA8B,gBAApB5I,EAAA69B,iB,8CAEbn9B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA+9B,oB,uDAAA/9B,EAAA+9B,oBAAmBn3B,CAAA,GAC5B4K,KAAK,iBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOqK,UAC9Bh5B,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAGE86B,EAAA,CAFC/N,SAAUztB,EAAAg0B,gBAAgBgK,UAC3BxQ,MAAA,I,sBAEF9sB,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAi+B,oB,uDAAAj+B,EAAAi+B,oBAAmBr3B,CAAA,GAC5B4K,KAAK,iBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOuK,UAC9Bl5B,MAAOhF,EAAAQ,GAAG,mB,2CAEbE,EAAAA,EAAAA,IAGE86B,EAAA,CAFC/N,SAAUztB,EAAAg0B,gBAAgBkK,UAC3B1Q,MAAA,I,wBAGJzvB,EAAAA,EAAAA,GAsBM,MAtBN4uB,GAsBM,EArBJ5uB,EAAAA,EAAAA,GAA2D,WAAA4C,EAAAA,EAAAA,IAApDX,EAAAQ,GAAG,2CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAm+B,iB,uDAAAn+B,EAAAm+B,iBAAgBv3B,CAAA,GACzB4K,KAAK,cACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOyK,OAC9Bp5B,MAAOhF,EAAAQ,GAAG,wB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAq+B,qB,uDAAAr+B,EAAAq+B,qBAAoBz3B,CAAA,GAC7B4K,KAAK,kBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO2K,WAC9Bt5B,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAAwD86B,EAAA,CAAxC/N,SAAUztB,EAAAg0B,gBAAgBsK,Y,sBAC1C59B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAu+B,qB,uDAAAv+B,EAAAu+B,qBAAoB33B,CAAA,GAC7B4K,KAAK,kBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO6K,WAC9Bx5B,MAAOhF,EAAAQ,GAAG,mB,2CAEbE,EAAAA,EAAAA,IAAwD86B,EAAA,CAAxC/N,SAAUztB,EAAAg0B,gBAAgBwK,Y,wBAE5CzgC,EAAAA,EAAAA,GAqBM,MArBN0gC,GAqBM,EApBJ1gC,EAAAA,EAAAA,GAA0D,WAAA4C,EAAAA,EAAAA,IAAnDX,EAAAQ,GAAG,0CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA0+B,gB,uDAAA1+B,EAAA0+B,gBAAe93B,CAAA,GACxB4K,KAAK,aACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOt0B,MAC9B2F,MAAOhF,EAAAQ,GAAG,wB,2CAEbE,EAAAA,EAAAA,IAKE+rB,EAAA,C,WAJSzsB,EAAA2+B,kB,uDAAA3+B,EAAA2+B,kBAAiB/3B,CAAA,GAC1B4K,KAAK,eACJgY,SAAUxpB,EAAA0zB,aAAaE,QAAQv0B,MAC/BuJ,SAA8B,gBAApB5I,EAAA0+B,iB,8CAEbh+B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA4+B,oB,uDAAA5+B,EAAA4+B,oBAAmBh4B,CAAA,GAC5B4K,KAAK,iBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOkL,UAC9B75B,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAAuD86B,EAAA,CAAvC/N,SAAUztB,EAAAg0B,gBAAgB6K,W,wBAE5C9gC,EAAAA,EAAAA,GAoHM,MApHN+gC,GAoHM,EAnHJ/gC,EAAAA,EAAAA,GAA2D,WAAA4C,EAAAA,EAAAA,IAApDX,EAAAQ,GAAG,2CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA++B,c,uDAAA/+B,EAAA++B,cAAan4B,CAAA,GACtB4K,KAAK,WACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOV,IAC9BjuB,MAAOhF,EAAAQ,GAAG,wB,2CAEbE,EAAAA,EAAAA,IAKE+rB,EAAA,C,WAJSzsB,EAAAg/B,gB,uDAAAh/B,EAAAg/B,gBAAep4B,CAAA,GACxB4K,KAAK,aACJgY,SAAUxpB,EAAA0zB,aAAaE,QAAQX,IAC/BrqB,SAA4B,gBAAlB5I,EAAA++B,e,8CAEbr+B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAi/B,kB,uDAAAj/B,EAAAi/B,kBAAiBr4B,CAAA,GAC1B4K,KAAK,eACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOuL,QAC9Bl6B,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAAqD86B,EAAA,CAArC/N,SAAUztB,EAAAg0B,gBAAgBkL,S,sBAC1Cx+B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAm/B,uB,uDAAAn/B,EAAAm/B,uBAAsBv4B,CAAA,GAC/B4K,KAAK,oBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOyL,aAC9Bp6B,MAAOhF,EAAAQ,GAAG,gD,2CAEbE,EAAAA,EAAAA,IAA0D86B,EAAA,CAA1C/N,SAAUztB,EAAAg0B,gBAAgBoL,c,sBAC1C1+B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAq/B,wB,uDAAAr/B,EAAAq/B,wBAAuBz4B,CAAA,GAChC4K,KAAK,qBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO2L,cAC9Bt6B,MAAOhF,EAAAQ,GAAG,2C,2CAEbE,EAAAA,EAAAA,IAA2D86B,EAAA,CAA3C/N,SAAUztB,EAAAg0B,gBAAgBsL,e,sBAC1CvhC,EAAAA,EAAAA,GAA2D,WAAA4C,EAAAA,EAAAA,IAApDX,EAAAQ,GAAG,2CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAu/B,qB,uDAAAv/B,EAAAu/B,qBAAoB34B,CAAA,GAC7B4K,KAAK,kBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO6L,WAC9Bx6B,MAAOhF,EAAAQ,GAAG,wB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAy/B,yB,uDAAAz/B,EAAAy/B,yBAAwB74B,CAAA,GACjC4K,KAAK,sBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO+L,eAC9B16B,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAA4D86B,EAAA,CAA5C/N,SAAUztB,EAAAg0B,gBAAgB0L,gB,sBAC1Ch/B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA2/B,8B,uDAAA3/B,EAAA2/B,8BAA6B/4B,CAAA,GACtC4K,KAAK,2BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOiM,oBAC9B56B,MAAOhF,EAAAQ,GAAG,gD,2CAEbE,EAAAA,EAAAA,IAAiE86B,EAAA,CAAjD/N,SAAUztB,EAAAg0B,gBAAgB4L,qB,sBAC1Cl/B,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA6/B,+B,uDAAA7/B,EAAA6/B,+BAA8Bj5B,CAAA,GACvC4K,KAAK,4BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOmM,qBAC9B96B,MAAOhF,EAAAQ,GAAG,2C,2CAEbE,EAAAA,EAAAA,IAAkE86B,EAAA,CAAlD/N,SAAUztB,EAAAg0B,gBAAgB8L,sB,sBAC1C/hC,EAAAA,EAAAA,GAA4D,WAAA4C,EAAAA,EAAAA,IAArDX,EAAAQ,GAAG,4CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA+/B,sB,uDAAA//B,EAAA+/B,sBAAqBn5B,CAAA,GAC9B4K,KAAK,mBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOqM,YAC9Bh7B,MAAOhF,EAAAQ,GAAG,wB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAigC,0B,uDAAAjgC,EAAAigC,0BAAyBr5B,CAAA,GAClC4K,KAAK,uBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOuM,gBAC9Bl7B,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAmgC,+B,uDAAAngC,EAAAmgC,+BAA8Bv5B,CAAA,GACvC4K,KAAK,4BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOyM,qBAC9Bp7B,MAAOhF,EAAAQ,GAAG,gD,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAqgC,gC,uDAAArgC,EAAAqgC,gCAA+Bz5B,CAAA,GACxC4K,KAAK,6BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO2M,sBAC9Bt7B,MAAOhF,EAAAQ,GAAG,2C,2CAEbzC,EAAAA,EAAAA,GAA2D,WAAA4C,EAAAA,EAAAA,IAApDX,EAAAQ,GAAG,2CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAugC,qB,uDAAAvgC,EAAAugC,qBAAoB35B,CAAA,GAC7B4K,KAAK,kBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO6M,WAC9Bx7B,MAAOhF,EAAAQ,GAAG,wB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAygC,yB,uDAAAzgC,EAAAygC,yBAAwB75B,CAAA,GACjC4K,KAAK,sBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO+M,eAC9B17B,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAA4D86B,EAAA,CAA5C/N,SAAUztB,EAAAg0B,gBAAgB0M,gB,sBAC1ChgC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA2gC,8B,uDAAA3gC,EAAA2gC,8BAA6B/5B,CAAA,GACtC4K,KAAK,2BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOiN,oBAC9B57B,MAAOhF,EAAAQ,GAAG,gD,2CAEbE,EAAAA,EAAAA,IAAiE86B,EAAA,CAAjD/N,SAAUztB,EAAAg0B,gBAAgB4M,qB,sBAC1ClgC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA6gC,+B,uDAAA7gC,EAAA6gC,+BAA8Bj6B,CAAA,GACvC4K,KAAK,4BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOmN,qBAC9B97B,MAAOhF,EAAAQ,GAAG,2C,2CAEbE,EAAAA,EAAAA,IAAkE86B,EAAA,CAAlD/N,SAAUztB,EAAAg0B,gBAAgB8M,sB,wBAE5C/iC,EAAAA,EAAAA,GAsBM,MAtBNgjC,GAsBM,EArBJhjC,EAAAA,EAAAA,GAAwD,WAAA4C,EAAAA,EAAAA,IAAjDX,EAAAQ,GAAG,wCAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAghC,c,uDAAAhhC,EAAAghC,cAAap6B,CAAA,GACtB4K,KAAK,WACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOsN,IAC9Bj8B,MAAOhF,EAAAQ,GAAG,wB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAkhC,kB,uDAAAlhC,EAAAkhC,kBAAiBt6B,CAAA,GAC1B4K,KAAK,eACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOwN,QAC9Bn8B,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAAqD86B,EAAA,CAArC/N,SAAUztB,EAAAg0B,gBAAgBmN,S,sBAC1CzgC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAohC,wB,uDAAAphC,EAAAohC,wBAAuBx6B,CAAA,GAChC4K,KAAK,qBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO0N,cAC9Br8B,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAA2D86B,EAAA,CAA3C/N,SAAUztB,EAAAg0B,gBAAgBqN,e,wBAE5CtjC,EAAAA,EAAAA,GAcM,MAdNujC,GAcM,EAbJvjC,EAAAA,EAAAA,GAA2D,WAAA4C,EAAAA,EAAAA,IAApDX,EAAAQ,GAAG,2CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAuhC,iB,uDAAAvhC,EAAAuhC,iBAAgB36B,CAAA,GACzB4K,KAAK,cACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO6N,OAC9Bx8B,MAAOhF,EAAAQ,GAAG,gC,2CAEbE,EAAAA,EAAAA,IAKE+rB,EAAA,C,WAJSzsB,EAAAyhC,mB,uDAAAzhC,EAAAyhC,mBAAkB76B,CAAA,GAC3B4K,KAAK,gBACJgY,SAAUxpB,EAAA0zB,aAAaE,QAAQ4N,OAC/B54B,SAA+B,gBAArB5I,EAAAuhC,kB,gDAGfxjC,EAAAA,EAAAA,GAyBM,MAzBN2jC,GAyBM,EAxBJ3jC,EAAAA,EAAAA,GAA8D,WAAA4C,EAAAA,EAAAA,IAAvDX,EAAAQ,GAAG,8CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA2hC,gB,uDAAA3hC,EAAA2hC,gBAAe/6B,CAAA,GACxB4K,KAAK,aACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOiO,MAC9B58B,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA6hC,oB,uDAAA7hC,EAAA6hC,oBAAmBj7B,CAAA,GAC5B4K,KAAK,iBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOmO,UAC9B98B,MAAOhF,EAAAQ,GAAG,mB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA+hC,qB,uDAAA/hC,EAAA+hC,qBAAoBn7B,CAAA,GAC7B4K,KAAK,kBACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOqO,WAC9Bh9B,MAAOhF,EAAAQ,GAAG,gD,2CAEbE,EAAAA,EAAAA,IAIE+rB,EAAA,C,WAHSzsB,EAAAiiC,kB,uDAAAjiC,EAAAiiC,kBAAiBr7B,CAAA,GAC1B4K,KAAK,eACJgY,SAAUxpB,EAAA0zB,aAAaE,QAAQgO,O,qCAGpC7jC,EAAAA,EAAAA,GAcM,MAdNmkC,GAcM,EAbJnkC,EAAAA,EAAAA,GAA4D,WAAA4C,EAAAA,EAAAA,IAArDX,EAAAQ,GAAG,4CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAmiC,mB,uDAAAniC,EAAAmiC,mBAAkBv7B,CAAA,GAC3B4K,KAAK,WACJxM,MAAOhF,EAAAQ,GAAG,2CACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOyO,U,2CAEjC1hC,EAAAA,EAAAA,IAKE+rB,EAAA,C,WAJSzsB,EAAAqiC,qB,uDAAAriC,EAAAqiC,qBAAoBz7B,CAAA,GAC7B4K,KAAK,kBACJgY,SAAUxpB,EAAA0zB,aAAaE,QAAQwO,SAC/Bx5B,SAAmC,gBAAzB5I,EAAAqiC,sB,gDAGftkC,EAAAA,EAAAA,GAQM,MARNukC,GAQM,EAPJvkC,EAAAA,EAAAA,GAA6D,WAAA4C,EAAAA,EAAAA,IAAtDX,EAAAQ,GAAG,6CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAuiC,oB,uDAAAviC,EAAAuiC,oBAAmB37B,CAAA,GAC5B4K,KAAK,YACJxM,MAAOhF,EAAAQ,GAAG,4CACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAO6O,W,6CAGnCzkC,EAAAA,EAAAA,GAcM,MAdN0kC,GAcM,EAbJ1kC,EAAAA,EAAAA,GAAwD,WAAA4C,EAAAA,EAAAA,IAAjDX,EAAAQ,GAAG,wCAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA0iC,e,uDAAA1iC,EAAA0iC,eAAc97B,CAAA,GACvB4K,KAAK,OACJxM,MAAOhF,EAAAQ,GAAG,uBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOgP,M,2CAEjCjiC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA4iC,mB,uDAAA5iC,EAAA4iC,mBAAkBh8B,CAAA,GAC3B4K,KAAK,WACJxM,MAAOhF,EAAAQ,GAAG,iBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOkP,U,6CAGnC9kC,EAAAA,EAAAA,GAQM,MARN+kC,GAQM,EAPJ/kC,EAAAA,EAAAA,GAAyD,WAAA4C,EAAAA,EAAAA,IAAlDX,EAAAQ,GAAG,yCAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA+iC,e,uDAAA/iC,EAAA+iC,eAAcn8B,CAAA,GACvB4K,KAAK,OACJxM,MAAOhF,EAAAQ,GAAG,wCACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOrzB,M,6CAGnCvC,EAAAA,EAAAA,GAsBM,MAtBNilC,GAsBM,EArBJjlC,EAAAA,EAAAA,GAA6D,WAAA4C,EAAAA,EAAAA,IAAtDX,EAAAQ,GAAG,6CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAijC,oB,uDAAAjjC,EAAAijC,oBAAmBr8B,CAAA,GAC5B4K,KAAK,YACJxM,MAAOhF,EAAAQ,GAAG,uBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOuP,W,2CAEjCxiC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAmjC,wB,uDAAAnjC,EAAAmjC,wBAAuBv8B,CAAA,GAChC4K,KAAK,gBACJxM,MAAOhF,EAAAQ,GAAG,iBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOyP,e,2CAEjC1iC,EAAAA,EAAAA,IAA2D86B,EAAA,CAA3C/N,SAAUztB,EAAAg0B,gBAAgBoP,e,sBAC1C1iC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAqjC,wB,uDAAArjC,EAAAqjC,wBAAuBz8B,CAAA,GAChC4K,KAAK,gBACJxM,MAAOhF,EAAAQ,GAAG,kBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAO2P,e,2CAEjC5iC,EAAAA,EAAAA,IAA2D86B,EAAA,CAA3C/N,SAAUztB,EAAAg0B,gBAAgBsP,e,wBAE5CvlC,EAAAA,EAAAA,GA4BM,MA5BNwlC,GA4BM,EA3BJxlC,EAAAA,EAAAA,GAA2D,WAAA4C,EAAAA,EAAAA,IAApDX,EAAAQ,GAAG,2CAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAwjC,kB,uDAAAxjC,EAAAwjC,kBAAiB58B,CAAA,GAC1B4K,KAAK,UACJxM,MAAOhF,EAAAQ,GAAG,uBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAO8P,S,2CAEjC/iC,EAAAA,EAAAA,IAKE+rB,EAAA,C,WAJSzsB,EAAA0jC,oB,uDAAA1jC,EAAA0jC,oBAAmB98B,CAAA,GAC5B4K,KAAK,iBACJgY,SAAUxpB,EAAA0zB,aAAaE,QAAQ6P,QAC/B76B,SAAkC,gBAAxB5I,EAAA0jC,qB,8CAEbhjC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA2jC,sB,uDAAA3jC,EAAA2jC,sBAAqB/8B,CAAA,GAC9B4K,KAAK,cACJxM,MAAOhF,EAAAQ,GAAG,iBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOiQ,a,2CAEjCljC,EAAAA,EAAAA,IAAyD86B,EAAA,CAAzC/N,SAAUztB,EAAAg0B,gBAAgB4P,a,sBAC1CljC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA6jC,sB,uDAAA7jC,EAAA6jC,sBAAqBj9B,CAAA,GAC9B4K,KAAK,cACJxM,MAAOhF,EAAAQ,GAAG,kBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOmQ,a,2CAEjCpjC,EAAAA,EAAAA,IAAyD86B,EAAA,CAAzC/N,SAAUztB,EAAAg0B,gBAAgB8P,a,wBAE5C/lC,EAAAA,EAAAA,GAsBM,MAtBNgmC,GAsBM,EArBJhmC,EAAAA,EAAAA,GAAgE,WAAA4C,EAAAA,EAAAA,IAAzDX,EAAAQ,GAAG,gDAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAgkC,uB,uDAAAhkC,EAAAgkC,uBAAsBp9B,CAAA,GAC/B4K,KAAK,eACJxM,MAAOhF,EAAAQ,GAAG,uBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOsQ,c,2CAEjCvjC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAkkC,2B,uDAAAlkC,EAAAkkC,2BAA0Bt9B,CAAA,GACnC4K,KAAK,mBACJxM,MAAOhF,EAAAQ,GAAG,iBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOwQ,kB,2CAEjCzjC,EAAAA,EAAAA,IAA8D86B,EAAA,CAA9C/N,SAAUztB,EAAAg0B,gBAAgBmQ,kB,sBAC1CzjC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAokC,2B,uDAAApkC,EAAAokC,2BAA0Bx9B,CAAA,GACnC4K,KAAK,mBACJxM,MAAOhF,EAAAQ,GAAG,kBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAO0Q,kB,2CAEjC3jC,EAAAA,EAAAA,IAA8D86B,EAAA,CAA9C/N,SAAUztB,EAAAg0B,gBAAgBqQ,kB,wBAE5CtmC,EAAAA,EAAAA,GAsBM,MAtBNumC,GAsBM,EArBJvmC,EAAAA,EAAAA,GAAgE,WAAA4C,EAAAA,EAAAA,IAAzDX,EAAAQ,GAAG,gDAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAukC,uB,uDAAAvkC,EAAAukC,uBAAsB39B,CAAA,GAC/B4K,KAAK,eACJxM,MAAOhF,EAAAQ,GAAG,uBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAO6Q,c,2CAEjC9jC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAykC,2B,uDAAAzkC,EAAAykC,2BAA0B79B,CAAA,GACnC4K,KAAK,mBACJxM,MAAOhF,EAAAQ,GAAG,iBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAO+Q,kB,2CAEjChkC,EAAAA,EAAAA,IAA8D86B,EAAA,CAA9C/N,SAAUztB,EAAAg0B,gBAAgB0Q,kB,sBAC1ChkC,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA2kC,2B,uDAAA3kC,EAAA2kC,2BAA0B/9B,CAAA,GACnC4K,KAAK,mBACJxM,MAAOhF,EAAAQ,GAAG,kBACVgpB,SAAUxpB,EAAA0zB,aAAaC,OAAOiR,kB,2CAEjClkC,EAAAA,EAAAA,IAA8D86B,EAAA,CAA9C/N,SAAUztB,EAAAg0B,gBAAgB4Q,kB,wBAE5C7mC,EAAAA,EAAAA,GA0DM,MA1DN8mC,GA0DM,EAzDJ9mC,EAAAA,EAAAA,GAAgC,WAAA4C,EAAAA,EAAAA,IAAzBX,EAAAQ,GAAG,gBAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA8kC,iB,uDAAA9kC,EAAA8kC,iBAAgBl+B,CAAA,GACzB4K,KAAK,cACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOM,GAC9BjvB,MAAOhF,EAAAQ,GAAG,wB,2CAEbzC,EAAAA,EAAAA,GAAiE,WAAA4C,EAAAA,EAAAA,IAA1DX,EAAAQ,GAAG,iDAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAA+kC,gC,uDAAA/kC,EAAA+kC,gCAA+Bn+B,CAAA,GACxC4K,KAAK,6BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOM,GAC9BjvB,MAAOhF,EAAAQ,GAAG,wB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAglC,kC,uDAAAhlC,EAAAglC,kCAAiCp+B,CAAA,GAC1C4K,KAAK,+BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO3F,KAC9BhpB,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAilC,kC,uDAAAjlC,EAAAilC,kCAAiCr+B,CAAA,GAC1C4K,KAAK,+BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOgI,KAC9B32B,MAAOhF,EAAAQ,GAAG,mB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAklC,oC,uDAAAllC,EAAAklC,oCAAmCt+B,CAAA,GAC5C4K,KAAK,qCACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO8F,GAC9Bz0B,MAAOhF,EAAAQ,GAAG,+C,2CAEbzC,EAAAA,EAAAA,GAAiE,WAAA4C,EAAAA,EAAAA,IAA1DX,EAAAQ,GAAG,iDAAD,IACTE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAmlC,gC,yDAAAnlC,EAAAmlC,gCAA+Bv+B,CAAA,GACxC4K,KAAK,6BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOM,GAC9BjvB,MAAOhF,EAAAQ,GAAG,wB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAolC,kC,yDAAAplC,EAAAolC,kCAAiCx+B,CAAA,GAC1C4K,KAAK,+BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAO3F,KAC9BhpB,MAAOhF,EAAAQ,GAAG,kB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAqlC,kC,yDAAArlC,EAAAqlC,kCAAiCz+B,CAAA,GAC1C4K,KAAK,+BACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOgI,KAC9B32B,MAAOhF,EAAAQ,GAAG,mB,2CAEbE,EAAAA,EAAAA,IAKE8rB,EAAA,C,WAJSxsB,EAAAslC,oC,yDAAAtlC,EAAAslC,oCAAmC1+B,CAAA,GAC5C4K,KAAK,qCACJgY,SAAUxpB,EAAA0zB,aAAaC,OAAOM,GAC9BjvB,MAAOhF,EAAAQ,GAAG,+C,oDAKjBzC,EAAAA,EAAAA,GAqFM,OApFHiH,MAAOhF,EAAAQ,GAAG,mCACX1C,MAAM,oB,EAENC,EAAAA,EAAAA,GAQM,MARNwnC,GAQM,EAPJxnC,EAAAA,EAAAA,GAAsC,UAAA4C,EAAAA,EAAAA,IAAhCX,EAAAQ,GAAG,wBAAD,IACRzC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,OAAAA,EAAA,uBAAEC,EAAAo5B,gBAAAp5B,EAAAo5B,eAAAn5B,MAAAD,EAAAE,UAAc,K,QAEnBF,EAAAQ,GAAG,sCAAD,MAGTE,EAAAA,EAAAA,IAOE8kC,EAAA,C,WANSxlC,EAAA4wB,e,yDAAA5wB,EAAA4wB,eAAchqB,CAAA,GACvB4K,KAAK,YACJxM,MAAOhF,EAAAQ,GAAG,sBACVgpB,SAAUxpB,EAAA0zB,aAAaG,MAAMZ,IAC9B3I,IAAI,KACJ,WAAS,K,2CAEX5pB,EAAAA,EAAAA,IAOE8kC,EAAA,C,WANSxlC,EAAA6wB,iB,yDAAA7wB,EAAA6wB,iBAAgBjqB,CAAA,GACzB4K,KAAK,cACJxM,MAAOhF,EAAAQ,GAAG,wBACVgpB,SAAUxpB,EAAA0zB,aAAaG,MAAMx0B,MAC9BirB,IAAI,IACJ,WAAS,K,2CAEX5pB,EAAAA,EAAAA,IAOE8kC,EAAA,C,WANSxlC,EAAA8wB,oB,yDAAA9wB,EAAA8wB,oBAAmBlqB,CAAA,GAC5B4K,KAAK,iBACJxM,MAAOhF,EAAAQ,GAAG,2BACVgpB,SAAUxpB,EAAA0zB,aAAaG,MAAMX,SAC9B5I,IAAI,KACJ,WAAS,K,2CAEX5pB,EAAAA,EAAAA,IAOE8kC,EAAA,C,WANSxlC,EAAA+wB,iB,yDAAA/wB,EAAA+wB,iBAAgBnqB,CAAA,GACzB4K,KAAK,cACJxM,MAAOhF,EAAAQ,GAAG,wBACVgpB,SAAUxpB,EAAA0zB,aAAaG,MAAMV,MAC9B7I,IAAI,KACJ,WAAS,K,2CAEX5pB,EAAAA,EAAAA,IAOE8kC,EAAA,C,WANSxlC,EAAAgxB,kB,yDAAAhxB,EAAAgxB,kBAAiBpqB,CAAA,GAC1B4K,KAAK,eACJxM,MAAOhF,EAAAQ,GAAG,yBACVgpB,SAAUxpB,EAAA0zB,aAAaG,MAAM7P,OAC9BsG,IAAI,KACJ,WAAS,K,2CAEX5pB,EAAAA,EAAAA,IAOE8kC,EAAA,C,WANSxlC,EAAAixB,qB,yDAAAjxB,EAAAixB,qBAAoBrqB,CAAA,GAC7B4K,KAAK,kBACJxM,MAAOhF,EAAAQ,GAAG,4BACVgpB,SAAUxpB,EAAA0zB,aAAaG,MAAMT,UAC9B9I,IAAI,KACJ,WAAS,K,2CAEX5pB,EAAAA,EAAAA,IAOE8kC,EAAA,C,WANSxlC,EAAAkxB,sB,yDAAAlxB,EAAAkxB,sBAAqBtqB,CAAA,GAC9B4K,KAAK,mBACJxM,MAAOhF,EAAAQ,GAAG,6BACVgpB,SAAUxpB,EAAA0zB,aAAaG,MAAMP,WAC9BhJ,IAAI,KACJ,WAAS,K,2CAEX5pB,EAAAA,EAAAA,IAOE8kC,EAAA,C,WANSxlC,EAAAmxB,mB,yDAAAnxB,EAAAmxB,mBAAkBvqB,CAAA,GAC3B4K,KAAK,gBACJxM,MAAOhF,EAAAQ,GAAG,0BACVgpB,SAAUxpB,EAAA0zB,aAAaG,MAAMR,QAC9B/I,IAAI,KACJ,WAAS,K,2CAEX5pB,EAAAA,EAAAA,IAOE8kC,EAAA,C,WANSxlC,EAAAoxB,uB,yDAAApxB,EAAAoxB,uBAAsBxqB,CAAA,GAC/B4K,KAAK,oBACJxM,MAAOhF,EAAAQ,GAAG,8BACVgpB,SAAUxpB,EAAA0zB,aAAaG,MAAMN,aAAe,EAC7CjJ,IAAI,KACJ,WAAS,K,kDAIbvsB,EAAAA,EAAAA,GAiFM,OAhFHiH,MAAOhF,EAAAQ,GAAG,qCACX1C,MAAM,oB,EAENC,EAAAA,EAAAA,GA4CM,MA5CN0nC,GA4CM,EA3CJ1nC,EAAAA,EAAAA,GAgBM,MAhBN2nC,GAgBM,mBAfD1lC,EAAAQ,GAAG,qCAAsC,KAC5CG,EAAAA,EAAAA,IAAG,KAAM,IACT,IAAAD,EAAAA,EAAAA,IAYS2lB,EAAA,CAXP1iB,GAAG,kB,WACM3D,EAAAywB,e,yDAAAzwB,EAAAywB,eAAc7pB,CAAA,GACvB9I,MAAM,mB,mBAGJ,iBAAkC,gBADpC6B,EAAAA,EAAAA,IAMS8F,EAAAA,GAAA,MAAAC,EAAAA,EAAAA,IALU1F,EAAAgyB,kBAAgB,SAA1BzF,G,kBADT5sB,EAAAA,EAAAA,IAMS,UAJNiG,IAAK2mB,EACL7hB,MAAO6hB,I,QAELvsB,EAAAQ,GAAG,qCAAuC+rB,IAAM,EAAAoZ,G,wCAIzD5nC,EAAAA,EAAAA,GAmBM,MAnBN6nC,GAmBM,EAlBJ7nC,EAAAA,EAAAA,GAKQ,QALR8nC,IAKQllC,EAAAA,EAAAA,IADHX,EAAAQ,GAAG,oCAAD,YACC,KACRG,EAAAA,EAAAA,IAAG,KAAM,MACT,SAAA5C,EAAAA,EAAAA,GAMC,SALC4F,GAAG,W,yDACM3D,EAAAk2B,uBAAsBtvB,CAAA,GAC/B4K,KAAK,WACL1T,MAAM,iBACNO,KAAK,Y,kBAHI2B,EAAAk2B,0BAKX4P,MAKF/nC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,OAAAA,EAAA,uBAAEC,EAAAs5B,cAAAt5B,EAAAs5B,aAAAr5B,MAAAD,EAAAE,UAAY,K,QAEjBF,EAAAQ,GAAG,sCAAD,MAGTE,EAAAA,EAAAA,IAIEqlC,EAAA,C,WAHS/lC,EAAAm2B,c,yDAAAn2B,EAAAm2B,cAAavvB,CAAA,GACrB0L,QAAStS,EAAAo2B,sBACT5M,SAAUxpB,EAAAo2B,uB,0CAEiB,WAAnBp2B,EAAAywB,gBAAkD,iBAAnBzwB,EAAAywB,iBAAc,WAAxD9wB,EAAAA,EAAAA,IA0BM,MAAAqmC,GAAA,EAzBJtlC,EAAAA,EAAAA,IAMSka,EAAA,CALP8R,MAAM,SACN7R,QAAQ,wDACRC,IAAI,K,mBAEJ,iBAAkC,CAAlCmrB,G,WAEFloC,EAAAA,EAAAA,GAAkE,UAAA4C,EAAAA,EAAAA,IAA5DX,EAAAQ,GAAG,oDAAD,IACRE,EAAAA,EAAAA,IAQSka,EAAA,CAPP8R,MAAM,SACN7R,QAAQ,wDACRC,IAAI,K,mBAEJ,iBAAwB,CAAxBorB,GACAC,GACAC,G,WAEF1lC,EAAAA,EAAAA,IAMSka,EAAA,CALP8R,MAAM,SACN7R,QAAQ,mDACRC,IAAI,K,mBAEJ,iBAAuB,CAAvBurB,G,WAEFtoC,EAAAA,EAAAA,GAAiE,UAAA4C,EAAAA,EAAAA,IAA3DX,EAAAQ,GAAG,mDAAD,8BAIZzC,EAAAA,EAAAA,GAsCM,OArCHiH,MAAOhF,EAAAQ,GAAG,mCACX1C,MAAM,mB,EAENC,EAAAA,EAAAA,GAQM,MARNuoC,GAQM,EAPJvoC,EAAAA,EAAAA,GAA4C,UAAA4C,EAAAA,EAAAA,IAAtCX,EAAAQ,GAAG,8BAAD,IACRzC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,OAAAA,EAAA,uBAAEC,EAAAu5B,YAAAv5B,EAAAu5B,WAAAt5B,MAAAD,EAAAE,UAAU,K,QAEfF,EAAAQ,GAAG,sCAAD,MAGTE,EAAAA,EAAAA,IAME6lC,EAAA,C,WALSvmC,EAAA2wB,WAAU,U,yDAAV3wB,EAAA2wB,WAAU,UAAU/pB,CAAA,GAC7B4K,KAAK,KACJxM,MAAOhF,EAAAQ,GAAG,6CACVgpB,SAAUxpB,EAAA0zB,aAAaK,MAAK,UAC7B,aAAW,K,2CAEbrzB,EAAAA,EAAAA,IAKE6lC,EAAA,C,WAJSvmC,EAAA2wB,WAAWtxB,M,yDAAXW,EAAA2wB,WAAWtxB,MAAKuH,CAAA,GACzB4K,KAAK,QACJxM,MAAOhF,EAAAQ,GAAG,yCACVgpB,SAAUxpB,EAAA0zB,aAAaK,MAAM10B,O,2CAEhCqB,EAAAA,EAAAA,IAKE6lC,EAAA,C,WAJSvmC,EAAA2wB,WAAW6V,K,yDAAXxmC,EAAA2wB,WAAW6V,KAAI5/B,CAAA,GACxB4K,KAAK,OACJxM,MAAOhF,EAAAQ,GAAG,wCACVgpB,SAAUxpB,EAAA0zB,aAAaK,MAAMyS,M,2CAEhC9lC,EAAAA,EAAAA,IAKE6lC,EAAA,C,WAJSvmC,EAAA2wB,WAAW8V,S,yDAAXzmC,EAAA2wB,WAAW8V,SAAQ7/B,CAAA,GAC5B4K,KAAK,WACJxM,MAAOhF,EAAAQ,GAAG,4CACVgpB,SAAUxpB,EAAA0zB,aAAaK,MAAM0S,U,mEAO9BzmC,EAAAy2B,WAAQ,WADhBt2B,EAAAA,EAAAA,IAmBWumC,EAAAA,GAAA,C,MAjBTC,GAAG,uB,EAEH5oC,EAAAA,EAAAA,GAcM,MAdN6oC,GAcM,EAbJ7oC,EAAAA,EAAAA,GAMS,UALPD,MAAM,4BACL8K,UAAW5I,EAAAs2B,WACX/1B,QAAKR,EAAA,OAAAA,EAAA,uBAAEC,EAAAo4B,gBAAAp4B,EAAAo4B,eAAAn4B,MAAAD,EAAAE,UAAc,K,QAEnBF,EAAAQ,GAAG,kBAAD,EAAAqmC,KAEP9oC,EAAAA,EAAAA,GAKS,UAJPD,MAAM,qBACLyC,QAAKR,EAAA,OAAAA,EAAA,uBAAEC,EAAA+4B,UAAA/4B,EAAA+4B,SAAA94B,MAAAD,EAAAE,UAAQ,K,QAEbF,EAAAQ,GAAG,kCAAD,yB,KmBv/BfxC,EAAAA,GAAAA,IACE8oC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,GACAC,EAAAA,KAuDF,SApD6B,CAC3BzkC,WAAY,CACVyK,YAAAA,EAAAA,EAEAi6B,oBAAAA,EACAC,kBAAAA,GACAC,iBAAAA,GACAC,aAAAA,GACAC,YAAAA,GACAppB,WAAAA,GACAqpB,WAAAA,GACAC,WAAAA,GACAC,SAAAA,IAEF7kC,SAAU,CACR8kC,WAAU,WACR,QAAS3oC,KAAKsD,OAAOW,MAAMG,MAAMC,WACnC,EACAukC,KAAI,WACF,MAA0D,WAAnD5oC,KAAKsD,OAAOW,MAAK,UAAW4kC,kBACrC,EACAC,SAAQ,WACN,MAA0D,YAAnD9oC,KAAKsD,OAAOW,MAAK,UAAW4kC,kBACrC,GAEF/oC,QAAS,CACP8lB,OAAM,WACJ,IAAMmjB,EAAY/oC,KAAKsD,OAAOW,MAAK,UAAW+kC,uBAE9C,GAAID,EAAW,CACb,IAAME,EAAWjpC,KAAKC,MAAMs3B,YAAY1uB,OAAM,UAAWqgC,WAAU,SAAAC,GACjE,OAAOA,EAAInqC,OAASmqC,EAAInqC,MAAM,mBAAqB+pC,CACrD,IACIE,GAAY,GACdjpC,KAAKC,MAAMs3B,YAAY6R,OAAOH,EAElC,CAGAjpC,KAAKsD,OAAOC,SAAS,8BACvB,GAEF8T,QAAO,WACLrX,KAAK4lB,QACP,EACAxd,MAAO,CACLwgC,KAAM,SAAUr9B,GACVA,GAAOvL,KAAK4lB,QAClB,IC1EJ,IAFiC,OAAgB,GAAQ,CAAC,CAAC,S,+TCNzD5kB,EAAAA,EAAAA,IA4Ee+O,EAAA,CA3EbrP,IAAI,cACJ/B,MAAM,wBACL,gBAAc,EACd,mBAAiB,EACjB,mBAAkBkC,EAAAioC,U,mBAEnB,iBAMM,EANNlqC,EAAAA,EAAAA,GAMM,OALHiH,MAAOhF,EAAAQ,GAAG,oBACXF,KAAK,SACL,gBAAc,W,EAEdI,EAAAA,EAAAA,IAAc8nC,IAAA,KAGRxoC,EAAA8nC,aAAU,WADlBnoC,EAAAA,EAAAA,IAOM,O,MALHqF,MAAOhF,EAAAQ,GAAG,wBACXF,KAAK,OACL,gBAAc,W,EAEdI,EAAAA,EAAAA,IAAc+nC,IAAA,sBAGRzoC,EAAA8nC,aAAU,WADlBnoC,EAAAA,EAAAA,IAOM,O,MALHqF,MAAOhF,EAAAQ,GAAG,yBACXF,KAAK,OACL,gBAAc,Y,EAEdI,EAAAA,EAAAA,IAAegoC,IAAA,uBAEjB3qC,EAAAA,EAAAA,GAMM,OALHiH,MAAOhF,EAAAQ,GAAG,sBACXF,KAAK,SACL,gBAAc,a,EAEdI,EAAAA,EAAAA,IAAgBioC,IAAA,MAElB5qC,EAAAA,EAAAA,GAMM,OALHiH,MAAOhF,EAAAQ,GAAG,kBACXF,KAAK,cACL,gBAAc,S,EAEdI,EAAAA,EAAAA,IAAYkoC,IAAA,KAGN5oC,EAAA8nC,aAAU,WADlBnoC,EAAAA,EAAAA,IAOM,O,MALHqF,MAAOhF,EAAAQ,GAAG,0BACXF,KAAK,OACL,gBAAc,iB,EAEdI,EAAAA,EAAAA,IAAoBmoC,IAAA,sBAGd7oC,EAAA8nC,aAAU,WADlBnoC,EAAAA,EAAAA,IAOM,O,MALHqF,MAAOhF,EAAAQ,GAAG,mCACXF,KAAK,WACL,gBAAc,oB,EAEdI,EAAAA,EAAAA,IAAuBooC,IAAA,sBAGjB9oC,EAAA8nC,aAAU,WADlBnoC,EAAAA,EAAAA,IAQM,O,MANHqF,MAAOhF,EAAAQ,GAAG,6BACVuoC,YAAY,EACbzoC,KAAK,YACL,gBAAc,kB,EAEdI,EAAAA,EAAAA,IAAqBsoC,IAAA,uBAEvBjrC,EAAAA,EAAAA,GAMM,OALHiH,MAAOhF,EAAAQ,GAAG,0BACXF,KAAK,OACL,gBAAc,W,EAEdI,EAAAA,EAAAA,IAAcuoC,IAAA,K","sources":["webpack://pleroma_fe/./src/components/settings_modal/tabs/data_import_export_tab.vue","webpack://pleroma_fe/./src/components/importer/importer.vue","webpack://pleroma_fe/./src/components/importer/importer.js","webpack://pleroma_fe/./src/components/importer/importer.vue?a48c","webpack://pleroma_fe/./src/components/exporter/exporter.vue","webpack://pleroma_fe/./src/components/exporter/exporter.js","webpack://pleroma_fe/./src/components/exporter/exporter.vue?49d4","webpack://pleroma_fe/./src/components/settings_modal/tabs/data_import_export_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/data_import_export_tab.vue?3b3e","webpack://pleroma_fe/./src/components/settings_modal/tabs/mutes_and_blocks_tab.vue","webpack://pleroma_fe/./src/components/autosuggest/autosuggest.vue","webpack://pleroma_fe/./src/components/autosuggest/autosuggest.js","webpack://pleroma_fe/./src/components/autosuggest/autosuggest.vue?ed00","webpack://pleroma_fe/./src/components/block_card/block_card.vue","webpack://pleroma_fe/./src/components/block_card/block_card.js","webpack://pleroma_fe/./src/components/block_card/block_card.vue?98f0","webpack://pleroma_fe/./src/components/mute_card/mute_card.vue","webpack://pleroma_fe/./src/components/mute_card/mute_card.js","webpack://pleroma_fe/./src/components/mute_card/mute_card.vue?716e","webpack://pleroma_fe/./src/components/domain_mute_card/domain_mute_card.vue","webpack://pleroma_fe/./src/components/domain_mute_card/domain_mute_card.js","webpack://pleroma_fe/./src/components/domain_mute_card/domain_mute_card.vue?06f5","webpack://pleroma_fe/./src/components/selectable_list/selectable_list.vue","webpack://pleroma_fe/./src/components/selectable_list/selectable_list.js","webpack://pleroma_fe/./src/components/selectable_list/selectable_list.vue?5249","webpack://pleroma_fe/./src/hocs/with_subscription/with_subscription.jsx","webpack://pleroma_fe/./src/components/settings_modal/tabs/mutes_and_blocks_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/mutes_and_blocks_tab.vue?8a44","webpack://pleroma_fe/./src/components/settings_modal/tabs/notifications_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/notifications_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/notifications_tab.vue?6ae7","webpack://pleroma_fe/./src/components/settings_modal/tabs/filtering_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/filtering_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/filtering_tab.vue?d491","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/security_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue?d03b","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_totp.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/confirm.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/confirm.vue?c451","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/confirm.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_totp.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_totp.vue?33f3","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa.vue?eb32","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/security_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/security_tab.vue?9c71","webpack://pleroma_fe/./src/components/settings_modal/tabs/profile_tab.vue","webpack://pleroma_fe/./src/components/image_cropper/image_cropper.vue","webpack://pleroma_fe/./src/components/image_cropper/image_cropper.js","webpack://pleroma_fe/./src/components/image_cropper/image_cropper.vue?4bc2","webpack://pleroma_fe/./src/components/settings_modal/tabs/profile_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/profile_tab.vue?f69a","webpack://pleroma_fe/./src/components/settings_modal/tabs/general_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/float_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/float_setting.vue?78cc","webpack://pleroma_fe/./src/components/settings_modal/helpers/size_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/size_setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/size_setting.vue?9e8f","webpack://pleroma_fe/./src/components/settings_modal/tabs/general_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/general_tab.vue?ba77","webpack://pleroma_fe/./src/components/settings_modal/tabs/version_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/version_tab.js","webpack://pleroma_fe/./src/services/version/version.service.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/version_tab.vue?9b58","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/theme_tab.vue","webpack://pleroma_fe/./src/components/color_input/color_input.vue","webpack://pleroma_fe/./src/components/color_input/color_input.vue?ea8c","webpack://pleroma_fe/./src/components/range_input/range_input.vue","webpack://pleroma_fe/./src/components/range_input/range_input.vue?9fff","webpack://pleroma_fe/./src/components/opacity_input/opacity_input.vue","webpack://pleroma_fe/./src/components/opacity_input/opacity_input.vue?ed56","webpack://pleroma_fe/./src/components/shadow_control/shadow_control.vue","webpack://pleroma_fe/./src/components/shadow_control/shadow_control.js","webpack://pleroma_fe/./src/components/shadow_control/shadow_control.vue?fe66","webpack://pleroma_fe/./src/components/font_control/font_control.js","webpack://pleroma_fe/./src/components/font_control/font_control.vue?d3f8","webpack://pleroma_fe/./src/components/font_control/font_control.vue","webpack://pleroma_fe/./src/components/contrast_ratio/contrast_ratio.vue","webpack://pleroma_fe/./src/components/contrast_ratio/contrast_ratio.vue?2ae9","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/preview.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/preview.vue?771c","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/theme_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/theme_tab.vue?bfa7","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_user_content.js","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_user_content.vue?9323","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_user_content.vue"],"sourcesContent":["<template>\n <div\n :label=\"$t('settings.data_import_export_tab')\"\n >\n <div class=\"setting-item\">\n <h2>{{ $t('settings.follow_import') }}</h2>\n <p>{{ $t('settings.import_followers_from_a_csv_file') }}</p>\n <Importer\n :submit-handler=\"importFollows\"\n :success-message=\"$t('settings.follows_imported')\"\n :error-message=\"$t('settings.follow_import_error')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.follow_export') }}</h2>\n <Exporter\n :get-content=\"getFollowsContent\"\n filename=\"friends.csv\"\n :export-button-label=\"$t('settings.follow_export_button')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.block_import') }}</h2>\n <p>{{ $t('settings.import_blocks_from_a_csv_file') }}</p>\n <Importer\n :submit-handler=\"importBlocks\"\n :success-message=\"$t('settings.blocks_imported')\"\n :error-message=\"$t('settings.block_import_error')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.block_export') }}</h2>\n <Exporter\n :get-content=\"getBlocksContent\"\n filename=\"blocks.csv\"\n :export-button-label=\"$t('settings.block_export_button')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.mute_import') }}</h2>\n <p>{{ $t('settings.import_mutes_from_a_csv_file') }}</p>\n <Importer\n :submit-handler=\"importMutes\"\n :success-message=\"$t('settings.mutes_imported')\"\n :error-message=\"$t('settings.mute_import_error')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.mute_export') }}</h2>\n <Exporter\n :get-content=\"getMutesContent\"\n filename=\"mutes.csv\"\n :export-button-label=\"$t('settings.mute_export_button')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.account_backup') }}</h2>\n <p>{{ $t('settings.account_backup_description') }}</p>\n <table>\n <thead>\n <tr>\n <th>{{ $t('settings.account_backup_table_head') }}</th>\n <th />\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"backup in backups\"\n :key=\"backup.id\"\n >\n <td>{{ backup.inserted_at }}</td>\n <td class=\"actions\">\n <a\n v-if=\"backup.processed\"\n target=\"_blank\"\n :href=\"backup.url\"\n >\n {{ $t('settings.download_backup') }}\n </a>\n <span\n v-else-if=\"backup.state === 'running'\"\n >\n {{ $tc('settings.backup_running', backup.processed_number, { number: backup.processed_number }) }}\n </span>\n <span\n v-else-if=\"backup.state === 'failed'\"\n >\n {{ $t('settings.backup_failed') }}\n </span>\n <span\n v-else\n >\n {{ $t('settings.backup_not_ready') }}\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n <div\n v-if=\"listBackupsError\"\n class=\"alert error\"\n >\n {{ $t('settings.list_backups_error', { error }) }}\n <button\n :title=\"$t('settings.hide_list_backups_error_action')\"\n @click=\"listBackupsError = false\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n <button\n class=\"btn button-default\"\n @click=\"addBackup\"\n >\n {{ $t('settings.add_backup') }}\n </button>\n <p v-if=\"addedBackup\">\n {{ $t('settings.added_backup') }}\n </p>\n <template v-if=\"addBackupError !== false\">\n <p>{{ $t('settings.add_backup_error', { error: addBackupError }) }}</p>\n </template>\n </div>\n </div>\n</template>\n\n<script src=\"./data_import_export_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","<template>\n <div class=\"importer\">\n <form>\n <input\n ref=\"input\"\n type=\"file\"\n @change=\"change\"\n >\n </form>\n <FAIcon\n v-if=\"submitting\"\n class=\"importer-uploading\"\n spin\n icon=\"circle-notch\"\n />\n <button\n v-else\n class=\"btn button-default\"\n @click=\"submit\"\n >\n {{ submitButtonLabel || $t('importer.submit') }}\n </button>\n <div v-if=\"success\">\n <button\n class=\"button-unstyled\"\n @click=\"dismiss\"\n >\n <FAIcon\n icon=\"times\"\n />\n </button>\n {{ ' ' }}\n <span>{{ successMessage || $t('importer.success') }}</span>\n </div>\n <div v-else-if=\"error\">\n <button\n class=\"button-unstyled\"\n @click=\"dismiss\"\n >\n <FAIcon\n icon=\"times\"\n />\n </button>\n {{ ' ' }}\n <span>{{ errorMessage || $t('importer.error') }}</span>\n </div>\n </div>\n</template>\n\n<script src=\"./importer.js\"></script>\n\n<style lang=\"scss\">\n.importer {\n &-uploading {\n font-size: 1.5em;\n margin: 0.25em;\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faTimes\n)\n\nconst Importer = {\n props: {\n submitHandler: {\n type: Function,\n required: true\n },\n submitButtonLabel: { type: String },\n successMessage: { type: String },\n errorMessage: { type: String }\n },\n data () {\n return {\n file: null,\n error: false,\n success: false,\n submitting: false\n }\n },\n methods: {\n change () {\n this.file = this.$refs.input.files[0]\n },\n submit () {\n this.dismiss()\n this.submitting = true\n this.submitHandler(this.file)\n .then(() => { this.success = true })\n .catch(() => { this.error = true })\n .finally(() => { this.submitting = false })\n },\n dismiss () {\n this.success = false\n this.error = false\n }\n }\n}\n\nexport default Importer\n","import { render } from \"./importer.vue?vue&type=template&id=24f20fa0\"\nimport script from \"./importer.js?vue&type=script&lang=js\"\nexport * from \"./importer.js?vue&type=script&lang=js\"\n\nimport \"./importer.vue?vue&type=style&index=0&id=24f20fa0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"exporter\">\n <div v-if=\"processing\">\n <FAIcon\n icon=\"circle-notch\"\n size=\"lg\"\n spin\n />\n\n <span>{{ processingMessage || $t('exporter.processing') }}</span>\n </div>\n <button\n v-else\n class=\"btn button-default\"\n @click=\"process\"\n >\n {{ exportButtonLabel || $t('exporter.export') }}\n </button>\n </div>\n</template>\n\n<script src=\"./exporter.js\"></script>\n\n<style lang=\"scss\">\n.exporter {\n &-processing {\n margin: 0.25em;\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst Exporter = {\n props: {\n getContent: {\n type: Function,\n required: true\n },\n filename: {\n type: String,\n default: 'export.csv'\n },\n exportButtonLabel: { type: String },\n processingMessage: { type: String }\n },\n data () {\n return {\n processing: false\n }\n },\n methods: {\n process () {\n this.processing = true\n this.getContent()\n .then((content) => {\n const fileToDownload = document.createElement('a')\n fileToDownload.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(content))\n fileToDownload.setAttribute('download', this.filename)\n fileToDownload.style.display = 'none'\n document.body.appendChild(fileToDownload)\n fileToDownload.click()\n document.body.removeChild(fileToDownload)\n // Add delay before hiding processing state since browser takes some time to handle file download\n setTimeout(() => { this.processing = false }, 2000)\n })\n }\n }\n}\n\nexport default Exporter\n","import { render } from \"./exporter.vue?vue&type=template&id=6357fe6a\"\nimport script from \"./exporter.js?vue&type=script&lang=js\"\nexport * from \"./exporter.js?vue&type=script&lang=js\"\n\nimport \"./exporter.vue?vue&type=style&index=0&id=6357fe6a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Importer from 'src/components/importer/importer.vue'\nimport Exporter from 'src/components/exporter/exporter.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport { mapState } from 'vuex'\n\nconst DataImportExportTab = {\n data () {\n return {\n activeTab: 'profile',\n newDomainToMute: '',\n listBackupsError: false,\n addBackupError: false,\n addedBackup: false,\n backups: []\n }\n },\n created () {\n this.$store.dispatch('fetchTokens')\n this.fetchBackups()\n },\n components: {\n Importer,\n Exporter,\n Checkbox\n },\n computed: {\n ...mapState({\n backendInteractor: (state) => state.api.backendInteractor,\n user: (state) => state.users.currentUser\n })\n },\n methods: {\n getFollowsContent () {\n return this.backendInteractor.exportFriends({ id: this.user.id })\n .then(this.generateExportableUsersContent)\n },\n getBlocksContent () {\n return this.backendInteractor.fetchBlocks()\n .then(this.generateExportableUsersContent)\n },\n getMutesContent () {\n return this.backendInteractor.fetchMutes()\n .then(this.generateExportableUsersContent)\n },\n importFollows (file) {\n return this.backendInteractor.importFollows({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n importBlocks (file) {\n return this.backendInteractor.importBlocks({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n importMutes (file) {\n return this.backendInteractor.importMutes({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n generateExportableUsersContent (users) {\n // Get addresses\n return users.map((user) => {\n // check is it's a local user\n if (user && user.is_local) {\n // append the instance address\n // eslint-disable-next-line no-undef\n return user.screen_name + '@' + location.hostname\n }\n return user.screen_name\n }).join('\\n')\n },\n addBackup () {\n this.$store.state.api.backendInteractor.addBackup()\n .then((res) => {\n this.addedBackup = true\n this.addBackupError = false\n })\n .catch((error) => {\n this.addedBackup = false\n this.addBackupError = error\n })\n .then(() => this.fetchBackups())\n },\n fetchBackups () {\n this.$store.state.api.backendInteractor.listBackups()\n .then((res) => {\n this.backups = res\n this.listBackupsError = false\n })\n .catch((error) => {\n this.listBackupsError = error.error\n })\n }\n }\n}\n\nexport default DataImportExportTab\n","import { render } from \"./data_import_export_tab.vue?vue&type=template&id=2a8891ee\"\nimport script from \"./data_import_export_tab.js?vue&type=script&lang=js\"\nexport * from \"./data_import_export_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <tab-switcher\n :scrollable-tabs=\"true\"\n class=\"mutes-and-blocks-tab\"\n >\n <div :label=\"$t('settings.blocks_tab')\">\n <div class=\"usersearch-wrapper\">\n <Autosuggest\n :filter=\"filterUnblockedUsers\"\n :query=\"queryUserIds\"\n :placeholder=\"$t('settings.search_user_to_block')\"\n >\n <template #default=\"row\">\n <BlockCard\n :user-id=\"row.item\"\n />\n </template>\n </Autosuggest>\n </div>\n <BlockList\n :refresh=\"true\"\n :get-key=\"i => i\"\n >\n <template #header=\"{selected}\">\n <div class=\"bulk-actions\">\n <ProgressButton\n v-if=\"selected.length > 0\"\n class=\"btn button-default bulk-action-button\"\n :click=\"() => blockUsers(selected)\"\n >\n {{ $t('user_card.block') }}\n <template #progress>\n {{ $t('user_card.block_progress') }}\n </template>\n </ProgressButton>\n <ProgressButton\n v-if=\"selected.length > 0\"\n class=\"btn button-default\"\n :click=\"() => unblockUsers(selected)\"\n >\n {{ $t('user_card.unblock') }}\n <template #progress>\n {{ $t('user_card.unblock_progress') }}\n </template>\n </ProgressButton>\n </div>\n </template>\n <template #item=\"{item}\">\n <BlockCard :user-id=\"item\" />\n </template>\n <template #empty>\n {{ $t('settings.no_blocks') }}\n </template>\n </BlockList>\n </div>\n\n <div :label=\"$t('settings.mutes_tab')\">\n <tab-switcher>\n <div :label=\"$t('settings.user_mutes')\">\n <div class=\"usersearch-wrapper\">\n <Autosuggest\n :filter=\"filterUnMutedUsers\"\n :query=\"queryUserIds\"\n :placeholder=\"$t('settings.search_user_to_mute')\"\n >\n <template #default=\"row\">\n <MuteCard\n :user-id=\"row.item\"\n />\n </template>\n </Autosuggest>\n </div>\n <MuteList\n :refresh=\"true\"\n :get-key=\"i => i\"\n >\n <template #header=\"{selected}\">\n <div class=\"bulk-actions\">\n <ProgressButton\n v-if=\"selected.length > 0\"\n class=\"btn button-default\"\n :click=\"() => muteUsers(selected)\"\n >\n {{ $t('user_card.mute') }}\n <template #progress>\n {{ $t('user_card.mute_progress') }}\n </template>\n </ProgressButton>\n <ProgressButton\n v-if=\"selected.length > 0\"\n class=\"btn button-default\"\n :click=\"() => unmuteUsers(selected)\"\n >\n {{ $t('user_card.unmute') }}\n <template #progress>\n {{ $t('user_card.unmute_progress') }}\n </template>\n </ProgressButton>\n </div>\n </template>\n <template #item=\"{item}\">\n <MuteCard :user-id=\"item\" />\n </template>\n <template #empty>\n {{ $t('settings.no_mutes') }}\n </template>\n </MuteList>\n </div>\n\n <div :label=\"$t('settings.domain_mutes')\">\n <div class=\"domain-mute-form\">\n <Autosuggest\n :filter=\"filterUnMutedDomains\"\n :query=\"queryKnownDomains\"\n :placeholder=\"$t('settings.type_domains_to_mute')\"\n >\n <template #default=\"row\">\n <DomainMuteCard\n :domain=\"row.item\"\n />\n </template>\n </Autosuggest>\n </div>\n <DomainMuteList\n :refresh=\"true\"\n :get-key=\"i => i\"\n >\n <template #header=\"{selected}\">\n <div class=\"bulk-actions\">\n <ProgressButton\n v-if=\"selected.length > 0\"\n class=\"btn button-default\"\n :click=\"() => unmuteDomains(selected)\"\n >\n {{ $t('domain_mute_card.unmute') }}\n <template #progress>\n {{ $t('domain_mute_card.unmute_progress') }}\n </template>\n </ProgressButton>\n </div>\n </template>\n <template #item=\"{item}\">\n <DomainMuteCard :domain=\"item\" />\n </template>\n <template #empty>\n {{ $t('settings.no_mutes') }}\n </template>\n </DomainMuteList>\n </div>\n </tab-switcher>\n </div>\n </tab-switcher>\n</template>\n\n<script src=\"./mutes_and_blocks_tab.js\"></script>\n<style lang=\"scss\" src=\"./mutes_and_blocks_tab.scss\"></style>\n","<template>\n <div\n v-click-outside=\"onClickOutside\"\n class=\"autosuggest\"\n >\n <input\n v-model=\"term\"\n :placeholder=\"placeholder\"\n class=\"autosuggest-input\"\n @click=\"onInputClick\"\n >\n <div\n v-if=\"resultsVisible && filtered.length > 0\"\n class=\"autosuggest-results\"\n >\n <slot\n v-for=\"item in filtered\"\n :item=\"item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./autosuggest.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.autosuggest {\n position: relative;\n\n &-input {\n display: block;\n width: 100%;\n }\n\n &-results {\n position: absolute;\n left: 0;\n top: 100%;\n right: 0;\n max-height: 400px;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-style: solid;\n border-width: 1px;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n overflow-y: auto;\n z-index: 1;\n }\n}\n</style>\n","const debounceMilliseconds = 500\n\nexport default {\n props: {\n query: { // function to query results and return a promise\n type: Function,\n required: true\n },\n filter: { // function to filter results in real time\n type: Function\n },\n placeholder: {\n type: String,\n default: 'Search...'\n }\n },\n data () {\n return {\n term: '',\n timeout: null,\n results: [],\n resultsVisible: false\n }\n },\n computed: {\n filtered () {\n return this.filter ? this.filter(this.results) : this.results\n }\n },\n watch: {\n term (val) {\n this.fetchResults(val)\n }\n },\n methods: {\n fetchResults (term) {\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n this.results = []\n if (term) {\n this.query(term).then((results) => { this.results = results })\n }\n }, debounceMilliseconds)\n },\n onInputClick () {\n this.resultsVisible = true\n },\n onClickOutside () {\n this.resultsVisible = false\n }\n }\n}\n","import { render } from \"./autosuggest.vue?vue&type=template&id=4e594b36\"\nimport script from \"./autosuggest.js?vue&type=script&lang=js\"\nexport * from \"./autosuggest.js?vue&type=script&lang=js\"\n\nimport \"./autosuggest.vue?vue&type=style&index=0&id=4e594b36&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <basic-user-card :user=\"user\">\n <div class=\"block-card-content-container\">\n <button\n v-if=\"blocked\"\n class=\"btn button-default\"\n :disabled=\"progress\"\n @click=\"unblockUser\"\n >\n <template v-if=\"progress\">\n {{ $t('user_card.unblock_progress') }}\n </template>\n <template v-else>\n {{ $t('user_card.unblock') }}\n </template>\n </button>\n <button\n v-else\n class=\"btn button-default\"\n :disabled=\"progress\"\n @click=\"blockUser\"\n >\n <template v-if=\"progress\">\n {{ $t('user_card.block_progress') }}\n </template>\n <template v-else>\n {{ $t('user_card.block') }}\n </template>\n </button>\n </div>\n </basic-user-card>\n</template>\n\n<script src=\"./block_card.js\"></script>\n\n<style lang=\"scss\">\n.block-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst BlockCard = {\n props: ['userId'],\n data () {\n return {\n progress: false\n }\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n blocked () {\n return this.relationship.blocking\n }\n },\n components: {\n BasicUserCard\n },\n methods: {\n unblockUser () {\n this.progress = true\n this.$store.dispatch('unblockUser', this.user.id).then(() => {\n this.progress = false\n })\n },\n blockUser () {\n this.progress = true\n this.$store.dispatch('blockUser', this.user.id).then(() => {\n this.progress = false\n })\n }\n }\n}\n\nexport default BlockCard\n","import { render } from \"./block_card.vue?vue&type=template&id=1c525ef4\"\nimport script from \"./block_card.js?vue&type=script&lang=js\"\nexport * from \"./block_card.js?vue&type=script&lang=js\"\n\nimport \"./block_card.vue?vue&type=style&index=0&id=1c525ef4&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <basic-user-card :user=\"user\">\n <div class=\"mute-card-content-container\">\n <button\n v-if=\"muted\"\n class=\"btn button-default\"\n :disabled=\"progress\"\n @click=\"unmuteUser\"\n >\n <template v-if=\"progress\">\n {{ $t('user_card.unmute_progress') }}\n </template>\n <template v-else>\n {{ $t('user_card.unmute') }}\n </template>\n </button>\n <button\n v-else\n class=\"btn button-default\"\n :disabled=\"progress\"\n @click=\"muteUser\"\n >\n <template v-if=\"progress\">\n {{ $t('user_card.mute_progress') }}\n </template>\n <template v-else>\n {{ $t('user_card.mute') }}\n </template>\n </button>\n </div>\n </basic-user-card>\n</template>\n\n<script src=\"./mute_card.js\"></script>\n\n<style lang=\"scss\">\n.mute-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst MuteCard = {\n props: ['userId'],\n data () {\n return {\n progress: false\n }\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n muted () {\n return this.relationship.muting\n }\n },\n components: {\n BasicUserCard\n },\n methods: {\n unmuteUser () {\n this.progress = true\n this.$store.dispatch('unmuteUser', this.userId).then(() => {\n this.progress = false\n })\n },\n muteUser () {\n this.progress = true\n this.$store.dispatch('muteUser', this.userId).then(() => {\n this.progress = false\n })\n }\n }\n}\n\nexport default MuteCard\n","import { render } from \"./mute_card.vue?vue&type=template&id=7dda2f25\"\nimport script from \"./mute_card.js?vue&type=script&lang=js\"\nexport * from \"./mute_card.js?vue&type=script&lang=js\"\n\nimport \"./mute_card.vue?vue&type=style&index=0&id=7dda2f25&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"domain-mute-card\">\n <div class=\"domain-mute-card-domain\">\n {{ domain }}\n </div>\n <ProgressButton\n v-if=\"muted\"\n :click=\"unmuteDomain\"\n class=\"btn button-default\"\n >\n {{ $t('domain_mute_card.unmute') }}\n <template #progress>\n {{ $t('domain_mute_card.unmute_progress') }}\n </template>\n </ProgressButton>\n <ProgressButton\n v-else\n :click=\"muteDomain\"\n class=\"btn button-default\"\n >\n {{ $t('domain_mute_card.mute') }}\n <template #progress>\n {{ $t('domain_mute_card.mute_progress') }}\n </template>\n </ProgressButton>\n </div>\n</template>\n\n<script src=\"./domain_mute_card.js\"></script>\n\n<style lang=\"scss\">\n.domain-mute-card {\n flex: 1 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.6em 1em 0.6em 0;\n\n &-domain {\n margin-right: 1em;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n button {\n width: 10em;\n }\n\n .autosuggest-results & {\n padding-left: 1em;\n }\n}\n</style>\n","import ProgressButton from '../progress_button/progress_button.vue'\n\nconst DomainMuteCard = {\n props: ['domain'],\n components: {\n ProgressButton\n },\n computed: {\n user () {\n return this.$store.state.users.currentUser\n },\n muted () {\n return this.user.domainMutes.includes(this.domain)\n }\n },\n methods: {\n unmuteDomain () {\n return this.$store.dispatch('unmuteDomain', this.domain)\n },\n muteDomain () {\n return this.$store.dispatch('muteDomain', this.domain)\n }\n }\n}\n\nexport default DomainMuteCard\n","import { render } from \"./domain_mute_card.vue?vue&type=template&id=2e9027a8\"\nimport script from \"./domain_mute_card.js?vue&type=script&lang=js\"\nexport * from \"./domain_mute_card.js?vue&type=script&lang=js\"\n\nimport \"./domain_mute_card.vue?vue&type=style&index=0&id=2e9027a8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"selectable-list\">\n <div\n v-if=\"items.length > 0\"\n class=\"selectable-list-header\"\n >\n <div class=\"selectable-list-checkbox-wrapper\">\n <Checkbox\n :model-value=\"allSelected\"\n :indeterminate=\"someSelected\"\n @update:model-value=\"toggleAll\"\n >\n {{ $t('selectable_list.select_all') }}\n </Checkbox>\n </div>\n <div class=\"selectable-list-header-actions\">\n <slot\n name=\"header\"\n :selected=\"filteredSelected\"\n />\n </div>\n </div>\n <List\n :items=\"items\"\n :get-key=\"getKey\"\n >\n <template #item=\"{item}\">\n <div\n class=\"selectable-list-item-inner\"\n :class=\"{ 'selectable-list-item-selected-inner': isSelected(item) }\"\n >\n <div class=\"selectable-list-checkbox-wrapper\">\n <Checkbox\n :model-value=\"isSelected(item)\"\n @update:model-value=\"checked => toggle(checked, item)\"\n />\n </div>\n <slot\n name=\"item\"\n :item=\"item\"\n />\n </div>\n </template>\n <template #empty>\n <slot name=\"empty\" />\n </template>\n </List>\n </div>\n</template>\n\n<script src=\"./selectable_list.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.selectable-list {\n &-item-inner {\n display: flex;\n align-items: center;\n\n > * {\n min-width: 0;\n }\n }\n\n &-item-selected-inner {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &-header {\n display: flex;\n align-items: center;\n padding: 0.6em 0;\n border-bottom: 2px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n\n &-actions {\n flex: 1;\n }\n }\n\n &-checkbox-wrapper {\n padding: 0 10px;\n flex: none;\n }\n}\n</style>\n","import List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nconst SelectableList = {\n components: {\n List,\n Checkbox\n },\n props: {\n items: {\n type: Array,\n default: () => []\n },\n getKey: {\n type: Function,\n default: item => item.id\n }\n },\n data () {\n return {\n selected: []\n }\n },\n computed: {\n allKeys () {\n return this.items.map(this.getKey)\n },\n filteredSelected () {\n return this.allKeys.filter(key => this.selected.indexOf(key) !== -1)\n },\n allSelected () {\n return this.filteredSelected.length === this.items.length\n },\n noneSelected () {\n return this.filteredSelected.length === 0\n },\n someSelected () {\n return !this.allSelected && !this.noneSelected\n }\n },\n methods: {\n isSelected (item) {\n return this.filteredSelected.indexOf(this.getKey(item)) !== -1\n },\n toggle (checked, item) {\n const key = this.getKey(item)\n const oldChecked = this.isSelected(key)\n if (checked !== oldChecked) {\n if (checked) {\n this.selected.push(key)\n } else {\n this.selected.splice(this.selected.indexOf(key), 1)\n }\n }\n },\n toggleAll (value) {\n if (value) {\n this.selected = this.allKeys.slice(0)\n } else {\n this.selected = []\n }\n }\n }\n}\n\nexport default SelectableList\n","import { render } from \"./selectable_list.vue?vue&type=template&id=7a94fbea\"\nimport script from \"./selectable_list.js?vue&type=script&lang=js\"\nexport * from \"./selectable_list.js?vue&type=script&lang=js\"\n\nimport \"./selectable_list.vue?vue&type=style&index=0&id=7a94fbea&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_subscription.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst withSubscription = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n childPropName = 'content', // name of the prop to be passed into the wrapped component\n additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n const originalProps = Object.keys(getComponentProps(WrappedComponent))\n const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n return {\n props: [\n ...props,\n 'refresh' // boolean saying to force-fetch data whenever created\n ],\n data () {\n return {\n loading: false,\n error: false\n }\n },\n computed: {\n fetchedData () {\n return select(this.$props, this.$store)\n }\n },\n created () {\n if (this.refresh || isEmpty(this.fetchedData)) {\n this.fetchData()\n }\n },\n methods: {\n fetchData () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then(() => {\n this.loading = false\n })\n .catch(() => {\n this.error = true\n this.loading = false\n })\n }\n }\n },\n render () {\n if (!this.error && !this.loading) {\n const props = {\n ...this.$props,\n [childPropName]: this.fetchedData\n }\n const children = this.$slots\n return (\n <div class=\"with-subscription\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n </div>\n )\n } else {\n return (\n <div class=\"with-subscription-loading\">\n {this.error\n ? <a onClick={this.fetchData} class=\"alert error\">{this.$t('general.generic_error')}</a>\n : <FAIcon spin icon=\"circle-notch\"/>\n }\n </div>\n )\n }\n }\n }\n}\n\nexport default withSubscription\n","import get from 'lodash/get'\nimport map from 'lodash/map'\nimport reject from 'lodash/reject'\nimport Autosuggest from 'src/components/autosuggest/autosuggest.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport BlockCard from 'src/components/block_card/block_card.vue'\nimport MuteCard from 'src/components/mute_card/mute_card.vue'\nimport DomainMuteCard from 'src/components/domain_mute_card/domain_mute_card.vue'\nimport SelectableList from 'src/components/selectable_list/selectable_list.vue'\nimport ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport withSubscription from 'src/components/../hocs/with_subscription/with_subscription'\nimport withLoadMore from 'src/components/../hocs/with_load_more/with_load_more'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\n\nconst BlockList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchBlocks'),\n select: (props, $store) => get($store.state.users.currentUser, 'blockIds', []),\n destroy: () => {},\n childPropName: 'items'\n})(SelectableList)\n\nconst MuteList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchMutes'),\n select: (props, $store) => get($store.state.users.currentUser, 'muteIds', []),\n destroy: () => {},\n childPropName: 'items'\n})(SelectableList)\n\nconst DomainMuteList = withSubscription({\n fetch: (props, $store) => $store.dispatch('fetchDomainMutes'),\n select: (props, $store) => get($store.state.users.currentUser, 'domainMutes', []),\n childPropName: 'items'\n})(SelectableList)\n\nconst MutesAndBlocks = {\n data () {\n return {\n activeTab: 'profile'\n }\n },\n created () {\n this.$store.dispatch('fetchTokens')\n this.$store.dispatch('getKnownDomains')\n },\n components: {\n TabSwitcher,\n BlockList,\n MuteList,\n DomainMuteList,\n BlockCard,\n MuteCard,\n DomainMuteCard,\n ProgressButton,\n Autosuggest,\n Checkbox\n },\n computed: {\n knownDomains () {\n return this.$store.state.instance.knownDomains\n },\n user () {\n return this.$store.state.users.currentUser\n }\n },\n methods: {\n importFollows (file) {\n return this.$store.state.api.backendInteractor.importFollows({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n importBlocks (file) {\n return this.$store.state.api.backendInteractor.importBlocks({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n generateExportableUsersContent (users) {\n // Get addresses\n return users.map((user) => {\n // check is it's a local user\n if (user && user.is_local) {\n // append the instance address\n // eslint-disable-next-line no-undef\n return user.screen_name + '@' + location.hostname\n }\n return user.screen_name\n }).join('\\n')\n },\n activateTab (tabName) {\n this.activeTab = tabName\n },\n filterUnblockedUsers (userIds) {\n return reject(userIds, (userId) => {\n const relationship = this.$store.getters.relationship(this.userId)\n return relationship.blocking || userId === this.user.id\n })\n },\n filterUnMutedUsers (userIds) {\n return reject(userIds, (userId) => {\n const relationship = this.$store.getters.relationship(this.userId)\n return relationship.muting || userId === this.user.id\n })\n },\n queryUserIds (query) {\n return this.$store.dispatch('searchUsers', { query })\n .then((users) => map(users, 'id'))\n },\n blockUsers (ids) {\n return this.$store.dispatch('blockUsers', ids)\n },\n unblockUsers (ids) {\n return this.$store.dispatch('unblockUsers', ids)\n },\n muteUsers (ids) {\n return this.$store.dispatch('muteUsers', ids)\n },\n unmuteUsers (ids) {\n return this.$store.dispatch('unmuteUsers', ids)\n },\n filterUnMutedDomains (urls) {\n return urls.filter(url => !this.user.domainMutes.includes(url))\n },\n queryKnownDomains (query) {\n return new Promise((resolve, reject) => {\n resolve(this.knownDomains.filter(url => url.toLowerCase().includes(query)))\n })\n },\n unmuteDomains (domains) {\n return this.$store.dispatch('unmuteDomains', domains)\n }\n }\n}\n\nexport default MutesAndBlocks\n","import { render } from \"./mutes_and_blocks_tab.vue?vue&type=template&id=41edf664\"\nimport script from \"./mutes_and_blocks_tab.js?vue&type=script&lang=js\"\nexport * from \"./mutes_and_blocks_tab.js?vue&type=script&lang=js\"\n\nimport \"./mutes_and_blocks_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :label=\"$t('settings.notifications')\">\n <div class=\"setting-item\">\n <h2>{{ $t('settings.notification_setting_filters') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting\n source=\"profile\"\n path=\"blockNotificationsFromStrangers\"\n >\n {{ $t('settings.notification_setting_block_from_strangers') }}\n </BooleanSetting>\n </li>\n <li class=\"select-multiple\">\n <span class=\"label\">{{ $t('settings.notification_visibility') }}</span>\n <ul class=\"option-list\">\n <li>\n <BooleanSetting path=\"notificationVisibility.likes\">\n {{ $t('settings.notification_visibility_likes') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.repeats\">\n {{ $t('settings.notification_visibility_repeats') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.follows\">\n {{ $t('settings.notification_visibility_follows') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.mentions\">\n {{ $t('settings.notification_visibility_mentions') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.moves\">\n {{ $t('settings.notification_visibility_moves') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.emojiReactions\">\n {{ $t('settings.notification_visibility_emoji_reactions') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.polls\">\n {{ $t('settings.notification_visibility_polls') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n\n <div\n v-if=\"expertLevel > 0\"\n class=\"setting-item\"\n >\n <h2>{{ $t('settings.notification_setting_privacy') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting\n path=\"webPushNotifications\"\n expert=\"1\"\n >\n {{ $t('settings.enable_web_push_notifications') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n source=\"profile\"\n path=\"webPushHideContents\"\n expert=\"1\"\n >\n {{ $t('settings.notification_setting_hide_notification_contents') }}\n </BooleanSetting>\n </li>\n </ul>\n </div>\n <div class=\"setting-item\">\n <p>{{ $t('settings.notification_mutes') }}</p>\n <p>{{ $t('settings.notification_blocks') }}</p>\n </div>\n </div>\n</template>\n\n<script src=\"./notifications_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","import BooleanSetting from '../helpers/boolean_setting.vue'\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\n\nconst NotificationsTab = {\n data () {\n return {\n activeTab: 'profile',\n notificationSettings: this.$store.state.users.currentUser.notification_settings,\n newDomainToMute: ''\n }\n },\n components: {\n BooleanSetting\n },\n computed: {\n user () {\n return this.$store.state.users.currentUser\n },\n ...SharedComputedObject()\n },\n methods: {\n updateNotificationSettings () {\n this.$store.state.api.backendInteractor\n .updateNotificationSettings({ settings: this.notificationSettings })\n }\n }\n}\n\nexport default NotificationsTab\n","import { render } from \"./notifications_tab.vue?vue&type=template&id=fc8e8d82\"\nimport script from \"./notifications_tab.js?vue&type=script&lang=js\"\nexport * from \"./notifications_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :label=\"$t('settings.filtering')\">\n <div class=\"setting-item\">\n <h2>{{ $t('settings.posts') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting path=\"hideFilteredStatuses\">\n {{ $t('settings.hide_filtered_statuses') }}\n </BooleanSetting>\n <ul class=\"setting-list suboptions\">\n <li>\n <BooleanSetting\n parent-path=\"hideFilteredStatuses\"\n :parent-invert=\"true\"\n path=\"hideWordFilteredPosts\"\n >\n {{ $t('settings.hide_wordfiltered_statuses') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n v-if=\"user\"\n parent-path=\"hideFilteredStatuses\"\n :parent-invert=\"true\"\n path=\"hideMutedThreads\"\n >\n {{ $t('settings.hide_muted_threads') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n v-if=\"user\"\n parent-path=\"hideFilteredStatuses\"\n :parent-invert=\"true\"\n path=\"hideMutedPosts\"\n >\n {{ $t('settings.hide_muted_posts') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n <li>\n <BooleanSetting path=\"muteBotStatuses\">\n {{ $t('settings.mute_bot_posts') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"hidePostStats\">\n {{ $t('settings.hide_post_stats') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"hideBotIndication\">\n {{ $t('settings.hide_bot_indication') }}\n </BooleanSetting>\n </li>\n <ChoiceSetting\n v-if=\"user\"\n id=\"replyVisibility\"\n path=\"replyVisibility\"\n :options=\"replyVisibilityOptions\"\n >\n {{ $t('settings.replies_in_timeline') }}\n </ChoiceSetting>\n <li>\n <h3>{{ $t('settings.wordfilter') }}</h3>\n <textarea\n id=\"muteWords\"\n v-model=\"muteWordsString\"\n class=\"resize-height\"\n />\n <div>{{ $t('settings.filtering_explanation') }}</div>\n </li>\n <h3>{{ $t('settings.attachments') }}</h3>\n <li>\n <IntegerSetting\n path=\"maxThumbnails\"\n expert=\"1\"\n :min=\"0\"\n >\n {{ $t('settings.max_thumbnails') }}\n </IntegerSetting>\n </li>\n <li>\n <BooleanSetting path=\"hideAttachments\">\n {{ $t('settings.hide_attachments_in_tl') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"hideAttachmentsInConv\">\n {{ $t('settings.hide_attachments_in_convo') }}\n </BooleanSetting>\n </li>\n </ul>\n </div>\n <div\n v-if=\"expertLevel > 0\"\n class=\"setting-item\"\n >\n <h2>{{ $t('settings.user_profiles') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting path=\"hideUserStats\">\n {{ $t('settings.hide_user_stats') }}\n </BooleanSetting>\n </li>\n </ul>\n </div>\n </div>\n</template>\n<script src=\"./filtering_tab.js\"></script>\n","import { filter, trim, debounce } from 'lodash'\nimport BooleanSetting from '../helpers/boolean_setting.vue'\nimport ChoiceSetting from '../helpers/choice_setting.vue'\nimport IntegerSetting from '../helpers/integer_setting.vue'\n\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\n\nconst FilteringTab = {\n data () {\n return {\n muteWordsStringLocal: this.$store.getters.mergedConfig.muteWords.join('\\n'),\n replyVisibilityOptions: ['all', 'following', 'self'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.reply_visibility_${mode}`)\n }))\n }\n },\n components: {\n BooleanSetting,\n ChoiceSetting,\n IntegerSetting\n },\n computed: {\n ...SharedComputedObject(),\n muteWordsString: {\n get () {\n return this.muteWordsStringLocal\n },\n set (value) {\n this.muteWordsStringLocal = value\n this.debouncedSetMuteWords(value)\n }\n },\n debouncedSetMuteWords () {\n return debounce((value) => {\n this.$store.dispatch('setOption', {\n name: 'muteWords',\n value: filter(value.split('\\n'), (word) => trim(word).length > 0)\n })\n }, 1000)\n }\n },\n // Updating nested properties\n watch: {\n replyVisibility () {\n this.$store.dispatch('queueFlushAll')\n }\n }\n}\n\nexport default FilteringTab\n","import { render } from \"./filtering_tab.vue?vue&type=template&id=640e09c7\"\nimport script from \"./filtering_tab.js?vue&type=script&lang=js\"\nexport * from \"./filtering_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :label=\"$t('settings.security_tab')\">\n <div class=\"setting-item\">\n <h2>{{ $t('settings.change_email') }}</h2>\n <div>\n <p>{{ $t('settings.new_email') }}</p>\n <input\n v-model=\"newEmail\"\n type=\"email\"\n autocomplete=\"email\"\n >\n </div>\n <div>\n <p>{{ $t('settings.current_password') }}</p>\n <input\n v-model=\"changeEmailPassword\"\n type=\"password\"\n autocomplete=\"current-password\"\n >\n </div>\n <button\n class=\"btn button-default\"\n @click=\"changeEmail\"\n >\n {{ $t('settings.save') }}\n </button>\n <p v-if=\"changedEmail\">\n {{ $t('settings.changed_email') }}\n </p>\n <template v-if=\"changeEmailError !== false\">\n <p>{{ $t('settings.change_email_error') }}</p>\n <p>{{ changeEmailError }}</p>\n </template>\n </div>\n\n <div class=\"setting-item\">\n <h2>{{ $t('settings.change_password') }}</h2>\n <div>\n <p>{{ $t('settings.current_password') }}</p>\n <input\n v-model=\"changePasswordInputs[0]\"\n type=\"password\"\n >\n </div>\n <div>\n <p>{{ $t('settings.new_password') }}</p>\n <input\n v-model=\"changePasswordInputs[1]\"\n type=\"password\"\n >\n </div>\n <div>\n <p>{{ $t('settings.confirm_new_password') }}</p>\n <input\n v-model=\"changePasswordInputs[2]\"\n type=\"password\"\n >\n </div>\n <button\n class=\"btn button-default\"\n @click=\"changePassword\"\n >\n {{ $t('settings.save') }}\n </button>\n <p v-if=\"changedPassword\">\n {{ $t('settings.changed_password') }}\n </p>\n <p v-else-if=\"changePasswordError !== false\">\n {{ $t('settings.change_password_error') }}\n </p>\n <p v-if=\"changePasswordError\">\n {{ changePasswordError }}\n </p>\n </div>\n\n <div class=\"setting-item\">\n <h2>{{ $t('settings.oauth_tokens') }}</h2>\n <table class=\"oauth-tokens\">\n <thead>\n <tr>\n <th>{{ $t('settings.app_name') }}</th>\n <th>{{ $t('settings.valid_until') }}</th>\n <th />\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"oauthToken in oauthTokens\"\n :key=\"oauthToken.id\"\n >\n <td>{{ oauthToken.appName }}</td>\n <td>{{ oauthToken.validUntil }}</td>\n <td class=\"actions\">\n <button\n class=\"btn button-default\"\n @click=\"revokeToken(oauthToken.id)\"\n >\n {{ $t('settings.revoke_token') }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <mfa />\n\n <div class=\"setting-item\">\n <h2>{{ $t('settings.account_alias') }}</h2>\n <table>\n <thead>\n <tr>\n <th>{{ $t('settings.account_alias_table_head') }}</th>\n <th />\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"alias in aliases\"\n :key=\"alias\"\n >\n <td>{{ alias }}</td>\n <td class=\"actions\">\n <button\n class=\"btn button-default\"\n @click=\"removeAlias(alias)\"\n >\n {{ $t('settings.remove_alias') }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <div\n v-if=\"listAliasesError\"\n class=\"alert error\"\n >\n {{ $t('settings.list_aliases_error', { error }) }}\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n :title=\"$t('settings.hide_list_aliases_error_action')\"\n @click=\"listAliasesError = false\"\n />\n </div>\n <div>\n <i18n-t\n keypath=\"settings.new_alias_target\"\n tag=\"p\"\n >\n <code\n place=\"example\"\n >\n foo@example.org\n </code>\n </i18n-t>\n <input\n v-model=\"addAliasTarget\"\n >\n </div>\n <button\n class=\"btn button-default\"\n @click=\"addAlias\"\n >\n {{ $t('settings.save') }}\n </button>\n <p v-if=\"addedAlias\">\n {{ $t('settings.added_alias') }}\n </p>\n <template v-if=\"addAliasError !== false\">\n <p>{{ $t('settings.add_alias_error', { error: addAliasError }) }}</p>\n </template>\n </div>\n\n <div class=\"setting-item\">\n <h2>{{ $t('settings.move_account') }}</h2>\n <p>{{ $t('settings.move_account_notes') }}</p>\n <div>\n <i18n-t\n keypath=\"settings.move_account_target\"\n tag=\"p\"\n >\n <template #example>\n <code>\n foo@example.org\n </code>\n </template>\n </i18n-t>\n <input\n v-model=\"moveAccountTarget\"\n >\n </div>\n <div>\n <p>{{ $t('settings.current_password') }}</p>\n <input\n v-model=\"moveAccountPassword\"\n type=\"password\"\n autocomplete=\"current-password\"\n >\n </div>\n <button\n class=\"btn button-default\"\n @click=\"moveAccount\"\n >\n {{ $t('settings.save') }}\n </button>\n <p v-if=\"movedAccount\">\n {{ $t('settings.moved_account') }}\n </p>\n <template v-if=\"moveAccountError !== false\">\n <p>{{ $t('settings.move_account_error', { error: moveAccountError }) }}</p>\n </template>\n </div>\n\n <div class=\"setting-item\">\n <h2>{{ $t('settings.delete_account') }}</h2>\n <p v-if=\"!deletingAccount\">\n {{ $t('settings.delete_account_description') }}\n </p>\n <div v-if=\"deletingAccount\">\n <p>{{ $t('settings.delete_account_instructions') }}</p>\n <p>{{ $t('login.password') }}</p>\n <input\n v-model=\"deleteAccountConfirmPasswordInput\"\n type=\"password\"\n >\n <button\n class=\"btn button-default\"\n @click=\"deleteAccount\"\n >\n {{ $t('settings.delete_account') }}\n </button>\n </div>\n <p v-if=\"deleteAccountError !== false\">\n {{ $t('settings.delete_account_error') }}\n </p>\n <p v-if=\"deleteAccountError\">\n {{ deleteAccountError }}\n </p>\n <button\n v-if=\"!deletingAccount\"\n class=\"btn button-default\"\n @click=\"confirmDelete\"\n >\n {{ $t('settings.delete_account') }}\n </button>\n </div>\n </div>\n</template>\n\n<script src=\"./security_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","<template>\n <div\n v-if=\"readyInit && settings.available\"\n class=\"setting-item mfa-settings\"\n >\n <div class=\"mfa-heading\">\n <h2>{{ $t('settings.mfa.title') }}</h2>\n </div>\n\n <div>\n <div\n v-if=\"!setupInProgress\"\n class=\"setting-item\"\n >\n <!-- Enabled methods -->\n <h3>{{ $t('settings.mfa.authentication_methods') }}</h3>\n <totp-item\n :settings=\"settings\"\n @deactivate=\"fetchSettings\"\n @activate=\"activateOTP\"\n />\n <br>\n\n <div v-if=\"settings.enabled\">\n <!-- backup codes block-->\n <recovery-codes\n v-if=\"!confirmNewBackupCodes\"\n :backup-codes=\"backupCodes\"\n />\n <button\n v-if=\"!confirmNewBackupCodes\"\n class=\"btn button-default\"\n @click=\"getBackupCodes\"\n >\n {{ $t('settings.mfa.generate_new_recovery_codes') }}\n </button>\n\n <div v-if=\"confirmNewBackupCodes\">\n <confirm\n :disabled=\"backupCodes.inProgress\"\n @confirm=\"confirmBackupCodes\"\n @cancel=\"cancelBackupCodes\"\n >\n <p class=\"warning\">\n {{ $t('settings.mfa.warning_of_generate_new_codes') }}\n </p>\n </confirm>\n </div>\n </div>\n </div>\n\n <div v-if=\"setupInProgress\">\n <!-- setup block-->\n\n <h3>{{ $t('settings.mfa.setup_otp') }}</h3>\n\n <recovery-codes\n v-if=\"!setupOTPInProgress\"\n :backup-codes=\"backupCodes\"\n />\n\n <button\n v-if=\"canSetupOTP\"\n class=\"btn button-default\"\n @click=\"cancelSetup\"\n >\n {{ $t('general.cancel') }}\n </button>\n\n <button\n v-if=\"canSetupOTP\"\n class=\"btn button-default\"\n @click=\"setupOTP\"\n >\n {{ $t('settings.mfa.setup_otp') }}\n </button>\n\n <template v-if=\"setupOTPInProgress\">\n <i v-if=\"prepareOTP\">{{ $t('settings.mfa.wait_pre_setup_otp') }}</i>\n\n <div v-if=\"confirmOTP\">\n <div class=\"setup-otp\">\n <div class=\"qr-code\">\n <h4>{{ $t('settings.mfa.scan.title') }}</h4>\n <p>{{ $t('settings.mfa.scan.desc') }}</p>\n <qrcode\n :value=\"otpSettings.provisioning_uri\"\n :options=\"{ width: 200 }\"\n />\n <p>\n {{ $t('settings.mfa.scan.secret_code') }}:\n {{ otpSettings.key }}\n </p>\n </div>\n\n <div class=\"verify\">\n <h4>{{ $t('general.verify') }}</h4>\n <p>{{ $t('settings.mfa.verify.desc') }}</p>\n <input\n v-model=\"otpConfirmToken\"\n type=\"text\"\n >\n\n <p>{{ $t('settings.enter_current_password_to_confirm') }}:</p>\n <input\n v-model=\"currentPassword\"\n type=\"password\"\n >\n <div class=\"confirm-otp-actions\">\n <button\n class=\"btn button-default\"\n @click=\"doConfirmOTP\"\n >\n {{ $t('settings.mfa.confirm_and_enable') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"cancelSetup\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ error }}\n </div>\n </div>\n </div>\n </div>\n </template>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./mfa.js\"></script>\n<style lang=\"scss\">\n@import \"../../../../variables\";\n\n.mfa-settings {\n .mfa-heading,\n .method-item {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: baseline;\n }\n\n .warning {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n .setup-otp {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n\n .qr-code {\n flex: 1;\n padding-right: 10px;\n }\n .verify { flex: 1; }\n .error { margin: 4px 0 0; }\n\n .confirm-otp-actions {\n button {\n width: 15em;\n margin-top: 5px;\n }\n }\n }\n}\n</style>\n","<template>\n <div class=\"mfa-backup-codes\">\n <h4 v-if=\"displayTitle\">\n {{ $t('settings.mfa.recovery_codes') }}\n </h4>\n <i v-if=\"inProgress\">{{ $t('settings.mfa.waiting_a_recovery_codes') }}</i>\n <template v-if=\"ready\">\n <p class=\"alert warning\">\n {{ $t('settings.mfa.recovery_codes_warning') }}\n </p>\n <ul class=\"backup-codes\">\n <li\n v-for=\"code in backupCodes.codes\"\n :key=\"code\"\n >\n {{ code }}\n </li>\n </ul>\n </template>\n </div>\n</template>\n<script src=\"./mfa_backup_codes.js\"></script>\n<style lang=\"scss\">\n@import \"../../../../variables\";\n\n.mfa-backup-codes {\n .warning {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n .backup-codes {\n font-family: var(--postCodeFont, monospace);\n }\n}\n</style>\n","export default {\n props: {\n backupCodes: {\n type: Object,\n default: () => ({\n inProgress: false,\n codes: []\n })\n }\n },\n data: () => ({}),\n computed: {\n inProgress () { return this.backupCodes.inProgress },\n ready () { return this.backupCodes.codes.length > 0 },\n displayTitle () { return this.inProgress || this.ready }\n }\n}\n","import { render } from \"./mfa_backup_codes.vue?vue&type=template&id=c00de0a2\"\nimport script from \"./mfa_backup_codes.js?vue&type=script&lang=js\"\nexport * from \"./mfa_backup_codes.js?vue&type=script&lang=js\"\n\nimport \"./mfa_backup_codes.vue?vue&type=style&index=0&id=c00de0a2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <div class=\"method-item\">\n <strong>{{ $t('settings.mfa.otp') }}</strong>\n <button\n v-if=\"!isActivated\"\n class=\"btn button-default\"\n @click=\"doActivate\"\n >\n {{ $t('general.enable') }}\n </button>\n\n <button\n v-if=\"isActivated\"\n class=\"btn button-default\"\n :disabled=\"deactivate\"\n @click=\"doDeactivate\"\n >\n {{ $t('general.disable') }}\n </button>\n </div>\n\n <confirm\n v-if=\"deactivate\"\n :disabled=\"inProgress\"\n @confirm=\"confirmDeactivate\"\n @cancel=\"cancelDeactivate\"\n >\n {{ $t('settings.enter_current_password_to_confirm') }}:\n <input\n v-model=\"currentPassword\"\n type=\"password\"\n >\n </confirm>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ error }}\n </div>\n </div>\n</template>\n<script src=\"./mfa_totp.js\"></script>\n","const Confirm = {\n props: ['disabled'],\n data: () => ({}),\n methods: {\n confirm () { this.$emit('confirm') },\n cancel () { this.$emit('cancel') }\n }\n}\nexport default Confirm\n","import { render } from \"./confirm.vue?vue&type=template&id=232a09eb\"\nimport script from \"./confirm.js?vue&type=script&lang=js\"\nexport * from \"./confirm.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <slot />\n <button\n class=\"btn button-default\"\n :disabled=\"disabled\"\n @click=\"confirm\"\n >\n {{ $t('general.confirm') }}\n </button>\n <button\n class=\"btn button-default\"\n :disabled=\"disabled\"\n @click=\"cancel\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n</template>\n\n<script src=\"./confirm.js\">\n</script>\n","import Confirm from './confirm.vue'\nimport { mapState } from 'vuex'\n\nexport default {\n props: ['settings'],\n data: () => ({\n error: false,\n currentPassword: '',\n deactivate: false,\n inProgress: false // progress peform request to disable otp method\n }),\n components: {\n confirm: Confirm\n },\n computed: {\n isActivated () {\n return this.settings.totp\n },\n ...mapState({\n backendInteractor: (state) => state.api.backendInteractor\n })\n },\n methods: {\n doActivate () {\n this.$emit('activate')\n },\n cancelDeactivate () { this.deactivate = false },\n doDeactivate () {\n this.error = null\n this.deactivate = true\n },\n confirmDeactivate () { // confirm deactivate TOTP method\n this.error = null\n this.inProgress = true\n this.backendInteractor.mfaDisableOTP({\n password: this.currentPassword\n })\n .then((res) => {\n this.inProgress = false\n if (res.error) {\n this.error = res.error\n return\n }\n this.deactivate = false\n this.$emit('deactivate')\n })\n }\n }\n}\n","import RecoveryCodes from './mfa_backup_codes.vue'\nimport TOTP from './mfa_totp.vue'\nimport Confirm from './confirm.vue'\nimport VueQrcode from '@chenfengyuan/vue-qrcode'\nimport { mapState } from 'vuex'\n\nconst Mfa = {\n data: () => ({\n settings: { // current settings of MFA\n available: false,\n enabled: false,\n totp: false\n },\n setupState: { // setup mfa\n state: '', // state of setup. '' -> 'getBackupCodes' -> 'setupOTP' -> 'complete'\n setupOTPState: '' // state of setup otp. '' -> 'prepare' -> 'confirm' -> 'complete'\n },\n backupCodes: {\n getNewCodes: false,\n inProgress: false, // progress of fetch codes\n codes: []\n },\n otpSettings: { // pre-setup setting of OTP. secret key, qrcode url.\n provisioning_uri: '',\n key: ''\n },\n currentPassword: null,\n otpConfirmToken: null,\n error: null,\n readyInit: false\n }),\n components: {\n 'recovery-codes': RecoveryCodes,\n 'totp-item': TOTP,\n qrcode: VueQrcode,\n confirm: Confirm\n },\n computed: {\n canSetupOTP () {\n return (\n (this.setupInProgress && this.backupCodesPrepared) ||\n this.settings.enabled\n ) && !this.settings.totp && !this.setupOTPInProgress\n },\n setupInProgress () {\n return this.setupState.state !== '' && this.setupState.state !== 'complete'\n },\n setupOTPInProgress () {\n return this.setupState.state === 'setupOTP' && !this.completedOTP\n },\n prepareOTP () {\n return this.setupState.setupOTPState === 'prepare'\n },\n confirmOTP () {\n return this.setupState.setupOTPState === 'confirm'\n },\n completedOTP () {\n return this.setupState.setupOTPState === 'completed'\n },\n backupCodesPrepared () {\n return !this.backupCodes.inProgress && this.backupCodes.codes.length > 0\n },\n confirmNewBackupCodes () {\n return this.backupCodes.getNewCodes\n },\n ...mapState({\n backendInteractor: (state) => state.api.backendInteractor\n })\n },\n\n methods: {\n activateOTP () {\n if (!this.settings.enabled) {\n this.setupState.state = 'getBackupcodes'\n this.fetchBackupCodes()\n }\n },\n fetchBackupCodes () {\n this.backupCodes.inProgress = true\n this.backupCodes.codes = []\n\n return this.backendInteractor.generateMfaBackupCodes()\n .then((res) => {\n this.backupCodes.codes = res.codes\n this.backupCodes.inProgress = false\n })\n },\n getBackupCodes () { // get a new backup codes\n this.backupCodes.getNewCodes = true\n },\n confirmBackupCodes () { // confirm getting new backup codes\n this.fetchBackupCodes().then((res) => {\n this.backupCodes.getNewCodes = false\n })\n },\n cancelBackupCodes () { // cancel confirm form of new backup codes\n this.backupCodes.getNewCodes = false\n },\n\n // Setup OTP\n setupOTP () { // prepare setup OTP\n this.setupState.state = 'setupOTP'\n this.setupState.setupOTPState = 'prepare'\n this.backendInteractor.mfaSetupOTP()\n .then((res) => {\n this.otpSettings = res\n this.setupState.setupOTPState = 'confirm'\n })\n },\n doConfirmOTP () { // handler confirm enable OTP\n this.error = null\n this.backendInteractor.mfaConfirmOTP({\n token: this.otpConfirmToken,\n password: this.currentPassword\n })\n .then((res) => {\n if (res.error) {\n this.error = res.error\n return\n }\n this.completeSetup()\n })\n },\n\n completeSetup () {\n this.setupState.setupOTPState = 'complete'\n this.setupState.state = 'complete'\n this.currentPassword = null\n this.error = null\n this.fetchSettings()\n },\n cancelSetup () { // cancel setup\n this.setupState.setupOTPState = ''\n this.setupState.state = ''\n this.currentPassword = null\n this.error = null\n },\n // end Setup OTP\n\n // fetch settings from server\n async fetchSettings () {\n const result = await this.backendInteractor.settingsMFA()\n if (result.error) return\n this.settings = result.settings\n this.settings.available = true\n return result\n }\n },\n mounted () {\n this.fetchSettings().then(() => {\n this.readyInit = true\n })\n }\n}\nexport default Mfa\n","import { render } from \"./mfa_totp.vue?vue&type=template&id=5466d3a1\"\nimport script from \"./mfa_totp.js?vue&type=script&lang=js\"\nexport * from \"./mfa_totp.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./mfa.vue?vue&type=template&id=7a1ef7d0\"\nimport script from \"./mfa.js?vue&type=script&lang=js\"\nexport * from \"./mfa.js?vue&type=script&lang=js\"\n\nimport \"./mfa.vue?vue&type=style&index=0&id=7a1ef7d0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport Mfa from './mfa.vue'\nimport localeService from 'src/services/locale/locale.service.js'\n\nconst SecurityTab = {\n data () {\n return {\n newEmail: '',\n changeEmailError: false,\n changeEmailPassword: '',\n changedEmail: false,\n deletingAccount: false,\n deleteAccountConfirmPasswordInput: '',\n deleteAccountError: false,\n changePasswordInputs: ['', '', ''],\n changedPassword: false,\n changePasswordError: false,\n moveAccountTarget: '',\n moveAccountPassword: '',\n movedAccount: false,\n moveAccountError: false,\n aliases: [],\n listAliasesError: false,\n addAliasTarget: '',\n addedAlias: false,\n addAliasError: false\n }\n },\n created () {\n this.$store.dispatch('fetchTokens')\n this.fetchAliases()\n },\n components: {\n ProgressButton,\n Mfa,\n Checkbox\n },\n computed: {\n user () {\n return this.$store.state.users.currentUser\n },\n pleromaBackend () {\n return this.$store.state.instance.pleromaBackend\n },\n oauthTokens () {\n return this.$store.state.oauthTokens.tokens.map(oauthToken => {\n return {\n id: oauthToken.id,\n appName: oauthToken.app_name,\n validUntil: new Date(oauthToken.valid_until).toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale))\n }\n })\n }\n },\n methods: {\n confirmDelete () {\n this.deletingAccount = true\n },\n deleteAccount () {\n this.$store.state.api.backendInteractor.deleteAccount({ password: this.deleteAccountConfirmPasswordInput })\n .then((res) => {\n if (res.status === 'success') {\n this.$store.dispatch('logout')\n this.$router.push({ name: 'root' })\n } else {\n this.deleteAccountError = res.error\n }\n })\n },\n changePassword () {\n const params = {\n password: this.changePasswordInputs[0],\n newPassword: this.changePasswordInputs[1],\n newPasswordConfirmation: this.changePasswordInputs[2]\n }\n this.$store.state.api.backendInteractor.changePassword(params)\n .then((res) => {\n if (res.status === 'success') {\n this.changedPassword = true\n this.changePasswordError = false\n this.logout()\n } else {\n this.changedPassword = false\n this.changePasswordError = res.error\n }\n })\n },\n changeEmail () {\n const params = {\n email: this.newEmail,\n password: this.changeEmailPassword\n }\n this.$store.state.api.backendInteractor.changeEmail(params)\n .then((res) => {\n if (res.status === 'success') {\n this.changedEmail = true\n this.changeEmailError = false\n } else {\n this.changedEmail = false\n this.changeEmailError = res.error\n }\n })\n },\n moveAccount () {\n const params = {\n targetAccount: this.moveAccountTarget,\n password: this.moveAccountPassword\n }\n this.$store.state.api.backendInteractor.moveAccount(params)\n .then((res) => {\n if (res.status === 'success') {\n this.movedAccount = true\n this.moveAccountError = false\n } else {\n this.movedAccount = false\n this.moveAccountError = res.error\n }\n })\n },\n removeAlias (alias) {\n this.$store.state.api.backendInteractor.deleteAlias({ alias })\n .then(() => this.fetchAliases())\n },\n addAlias () {\n this.$store.state.api.backendInteractor.addAlias({ alias: this.addAliasTarget })\n .then((res) => {\n this.addedAlias = true\n this.addAliasError = false\n this.addAliasTarget = ''\n })\n .catch((error) => {\n this.addedAlias = false\n this.addAliasError = error\n })\n .then(() => this.fetchAliases())\n },\n fetchAliases () {\n this.$store.state.api.backendInteractor.listAliases()\n .then((res) => {\n this.aliases = res.aliases\n this.listAliasesError = false\n })\n .catch((error) => {\n this.listAliasesError = error.error\n })\n },\n logout () {\n this.$store.dispatch('logout')\n this.$router.replace('/')\n },\n revokeToken (id) {\n if (window.confirm(`${this.$i18n.t('settings.revoke_token')}?`)) {\n this.$store.dispatch('revokeToken', id)\n }\n }\n }\n}\n\nexport default SecurityTab\n","import { render } from \"./security_tab.vue?vue&type=template&id=f320c45e\"\nimport script from \"./security_tab.js?vue&type=script&lang=js\"\nexport * from \"./security_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"profile-tab\">\n <div class=\"setting-item\">\n <h2>{{ $t('settings.name_bio') }}</h2>\n <p>{{ $t('settings.name') }}</p>\n <EmojiInput\n v-model=\"newName\"\n enable-emoji-picker\n :suggest=\"emojiSuggestor\"\n >\n <template #default=\"inputProps\">\n <input\n id=\"username\"\n v-model=\"newName\"\n class=\"name-changer\"\n v-bind=\"propsToNative(inputProps)\"\n >\n </template>\n </EmojiInput>\n <p>{{ $t('settings.bio') }}</p>\n <EmojiInput\n v-model=\"newBio\"\n enable-emoji-picker\n :suggest=\"emojiUserSuggestor\"\n >\n <template #default=\"inputProps\">\n <textarea\n v-model=\"newBio\"\n class=\"bio resize-height\"\n v-bind=\"propsToNative(inputProps)\"\n />\n </template>\n </EmojiInput>\n <p v-if=\"role === 'admin' || role === 'moderator'\">\n <Checkbox v-model=\"showRole\">\n <template v-if=\"role === 'admin'\">\n {{ $t('settings.show_admin_badge') }}\n </template>\n <template v-if=\"role === 'moderator'\">\n {{ $t('settings.show_moderator_badge') }}\n </template>\n </Checkbox>\n </p>\n <div>\n <p>{{ $t('settings.birthday.label') }}</p>\n <input\n id=\"birthday\"\n v-model=\"newBirthday\"\n type=\"date\"\n class=\"birthday-input\"\n >\n <Checkbox v-model=\"showBirthday\">\n {{ $t('settings.birthday.show_birthday') }}\n </Checkbox>\n </div>\n <div v-if=\"maxFields > 0\">\n <p>{{ $t('settings.profile_fields.label') }}</p>\n <div\n v-for=\"(_, i) in newFields\"\n :key=\"i\"\n class=\"profile-fields\"\n >\n <EmojiInput\n v-model=\"newFields[i].name\"\n enable-emoji-picker\n hide-emoji-button\n :suggest=\"userSuggestor\"\n >\n <template #default=\"inputProps\">\n <input\n v-model=\"newFields[i].name\"\n :placeholder=\"$t('settings.profile_fields.name')\"\n v-bind=\"propsToNative(inputProps)\"\n >\n </template>\n </EmojiInput>\n <EmojiInput\n v-model=\"newFields[i].value\"\n enable-emoji-picker\n hide-emoji-button\n :suggest=\"userSuggestor\"\n >\n <template #default=\"inputProps\">\n <input\n v-model=\"newFields[i].value\"\n :placeholder=\"$t('settings.profile_fields.value')\"\n v-bind=\"propsToNative(inputProps)\"\n >\n </template>\n </EmojiInput>\n <button\n class=\"delete-field button-unstyled -hover-highlight\"\n @click=\"deleteField(i)\"\n >\n <!-- TODO something is wrong with v-show here -->\n <FAIcon\n v-if=\"newFields.length > 1\"\n icon=\"times\"\n />\n </button>\n </div>\n <button\n v-if=\"newFields.length < maxFields\"\n class=\"add-field faint button-unstyled -hover-highlight\"\n @click=\"addField\"\n >\n <FAIcon icon=\"plus\" />\n {{ $t(\"settings.profile_fields.add_field\") }}\n </button>\n </div>\n <p>\n <Checkbox v-model=\"bot\">\n {{ $t('settings.bot') }}\n </Checkbox>\n </p>\n <p>\n <interface-language-switcher\n :prompt-text=\"$t('settings.email_language')\"\n :language=\"emailLanguage\"\n :set-language=\"val => emailLanguage = val\"\n />\n </p>\n <button\n :disabled=\"newName && newName.length === 0\"\n class=\"btn button-default\"\n @click=\"updateProfile\"\n >\n {{ $t('settings.save') }}\n </button>\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.avatar') }}</h2>\n <p class=\"visibility-notice\">\n {{ $t('settings.avatar_size_instruction') }}\n </p>\n <div class=\"current-avatar-container\">\n <img\n :src=\"user.profile_image_url_original\"\n class=\"current-avatar\"\n >\n <button\n v-if=\"!isDefaultAvatar && pickAvatarBtnVisible\"\n :title=\"$t('settings.reset_avatar')\"\n class=\"button-unstyled reset-button\"\n @click=\"resetAvatar\"\n >\n <FAIcon\n icon=\"times\"\n type=\"button\"\n />\n </button>\n </div>\n <p>{{ $t('settings.set_new_avatar') }}</p>\n <button\n v-show=\"pickAvatarBtnVisible\"\n id=\"pick-avatar\"\n class=\"button-default btn\"\n type=\"button\"\n >\n {{ $t('settings.upload_a_photo') }}\n </button>\n <image-cropper\n trigger=\"#pick-avatar\"\n :submit-handler=\"submitAvatar\"\n @open=\"pickAvatarBtnVisible=false\"\n @close=\"pickAvatarBtnVisible=true\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.profile_banner') }}</h2>\n <div class=\"banner-background-preview\">\n <img :src=\"user.cover_photo\">\n <button\n v-if=\"!isDefaultBanner\"\n class=\"button-unstyled reset-button\"\n :title=\"$t('settings.reset_profile_banner')\"\n @click=\"resetBanner\"\n >\n <FAIcon\n icon=\"times\"\n type=\"button\"\n />\n </button>\n </div>\n <p>{{ $t('settings.set_new_profile_banner') }}</p>\n <img\n v-if=\"bannerPreview\"\n class=\"banner-background-preview\"\n :src=\"bannerPreview\"\n >\n <div>\n <input\n type=\"file\"\n @change=\"uploadFile('banner', $event)\"\n >\n </div>\n <FAIcon\n v-if=\"bannerUploading\"\n class=\"uploading\"\n spin\n icon=\"circle-notch\"\n />\n <button\n v-else-if=\"bannerPreview\"\n class=\"btn button-default\"\n @click=\"submitBanner(banner)\"\n >\n {{ $t('settings.save') }}\n </button>\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.profile_background') }}</h2>\n <div class=\"banner-background-preview\">\n <img :src=\"user.background_image\">\n <button\n v-if=\"!isDefaultBackground\"\n class=\"button-unstyled reset-button\"\n :title=\"$t('settings.reset_profile_background')\"\n @click=\"resetBackground\"\n >\n <FAIcon\n icon=\"times\"\n type=\"button\"\n />\n </button>\n </div>\n <p>{{ $t('settings.set_new_profile_background') }}</p>\n <img\n v-if=\"backgroundPreview\"\n class=\"banner-background-preview\"\n :src=\"backgroundPreview\"\n >\n <div>\n <input\n type=\"file\"\n @change=\"uploadFile('background', $event)\"\n >\n </div>\n <FAIcon\n v-if=\"backgroundUploading\"\n class=\"uploading\"\n spin\n icon=\"circle-notch\"\n />\n <button\n v-else-if=\"backgroundPreview\"\n class=\"btn button-default\"\n @click=\"submitBackground(background)\"\n >\n {{ $t('settings.save') }}\n </button>\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.account_privacy') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting\n source=\"profile\"\n path=\"locked\"\n >\n {{ $t('settings.lock_account_description') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n source=\"profile\"\n path=\"discoverable\"\n >\n {{ $t('settings.discoverable') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n source=\"profile\"\n path=\"allowFollowingMove\"\n >\n {{ $t('settings.allow_following_move') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n source=\"profile\"\n path=\"hideFavorites\"\n >\n {{ $t('settings.hide_favorites_description') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n source=\"profile\"\n path=\"hideFollowers\"\n >\n {{ $t('settings.hide_followers_description') }}\n </BooleanSetting>\n <ul class=\"setting-list suboptions\">\n <li>\n <BooleanSetting\n source=\"profile\"\n path=\"hideFollowersCount\"\n parent-path=\"hideFollowers\"\n >\n {{ $t('settings.hide_followers_count_description') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n <li>\n <BooleanSetting\n source=\"profile\"\n path=\"hideFollows\"\n >\n {{ $t('settings.hide_follows_description') }}\n </BooleanSetting>\n <ul class=\"setting-list suboptions\">\n <li>\n <BooleanSetting\n source=\"profile\"\n path=\"hideFollowsCount\"\n parent-path=\"hideFollows\"\n >\n {{ $t('settings.hide_follows_count_description') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n</template>\n\n<script src=\"./profile_tab.js\"></script>\n<style lang=\"scss\" src=\"./profile_tab.scss\"></style>\n","<template>\n <div class=\"image-cropper\">\n <div v-if=\"dataUrl\">\n <div class=\"image-cropper-image-container\">\n <img\n ref=\"img\"\n :src=\"dataUrl\"\n alt=\"\"\n @load.stop=\"createCropper\"\n >\n </div>\n <div class=\"image-cropper-buttons-wrapper\">\n <button\n class=\"button-default btn\"\n type=\"button\"\n :disabled=\"submitting\"\n @click=\"submit()\"\n v-text=\"saveText\"\n />\n <button\n class=\"button-default btn\"\n type=\"button\"\n :disabled=\"submitting\"\n @click=\"destroy\"\n v-text=\"cancelText\"\n />\n <button\n class=\"button-default btn\"\n type=\"button\"\n :disabled=\"submitting\"\n @click=\"submit(false)\"\n v-text=\"saveWithoutCroppingText\"\n />\n <FAIcon\n v-if=\"submitting\"\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n <input\n ref=\"input\"\n type=\"file\"\n class=\"image-cropper-img-input\"\n :accept=\"mimes\"\n >\n </div>\n</template>\n\n<script src=\"./image_cropper.js\"></script>\n\n<style lang=\"scss\">\n.image-cropper {\n &-img-input {\n display: none;\n }\n\n &-image-container {\n position: relative;\n\n img {\n display: block;\n max-width: 100%;\n }\n }\n\n &-buttons-wrapper {\n margin-top: 10px;\n\n button {\n margin-top: 5px;\n }\n }\n}\n</style>\n","import Cropper from 'cropperjs'\nimport 'cropperjs/dist/cropper.css'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst ImageCropper = {\n props: {\n trigger: {\n type: [String, window.Element],\n required: true\n },\n submitHandler: {\n type: Function,\n required: true\n },\n cropperOptions: {\n type: Object,\n default () {\n return {\n aspectRatio: 1,\n autoCropArea: 1,\n viewMode: 1,\n movable: false,\n zoomable: false,\n guides: false\n }\n }\n },\n mimes: {\n type: String,\n default: 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon'\n },\n saveButtonLabel: {\n type: String\n },\n saveWithoutCroppingButtonlabel: {\n type: String\n },\n cancelButtonLabel: {\n type: String\n }\n },\n data () {\n return {\n cropper: undefined,\n dataUrl: undefined,\n filename: undefined,\n submitting: false\n }\n },\n computed: {\n saveText () {\n return this.saveButtonLabel || this.$t('image_cropper.save')\n },\n saveWithoutCroppingText () {\n return this.saveWithoutCroppingButtonlabel || this.$t('image_cropper.save_without_cropping')\n },\n cancelText () {\n return this.cancelButtonLabel || this.$t('image_cropper.cancel')\n }\n },\n methods: {\n destroy () {\n if (this.cropper) {\n this.cropper.destroy()\n }\n this.$refs.input.value = ''\n this.dataUrl = undefined\n this.$emit('close')\n },\n submit (cropping = true) {\n this.submitting = true\n this.submitHandler(cropping && this.cropper, this.file)\n .then(() => this.destroy())\n .finally(() => {\n this.submitting = false\n })\n },\n pickImage () {\n this.$refs.input.click()\n },\n createCropper () {\n this.cropper = new Cropper(this.$refs.img, this.cropperOptions)\n },\n getTriggerDOM () {\n return typeof this.trigger === 'object' ? this.trigger : document.querySelector(this.trigger)\n },\n readFile () {\n const fileInput = this.$refs.input\n if (fileInput.files != null && fileInput.files[0] != null) {\n this.file = fileInput.files[0]\n const reader = new window.FileReader()\n reader.onload = (e) => {\n this.dataUrl = e.target.result\n this.$emit('open')\n }\n reader.readAsDataURL(this.file)\n this.$emit('changed', this.file, reader)\n }\n }\n },\n mounted () {\n // listen for click event on trigger\n const trigger = this.getTriggerDOM()\n if (!trigger) {\n this.$emit('error', 'No image make trigger found.', 'user')\n } else {\n trigger.addEventListener('click', this.pickImage)\n }\n // listen for input file changes\n const fileInput = this.$refs.input\n fileInput.addEventListener('change', this.readFile)\n },\n beforeUnmount: function () {\n // remove the event listeners\n const trigger = this.getTriggerDOM()\n if (trigger) {\n trigger.removeEventListener('click', this.pickImage)\n }\n const fileInput = this.$refs.input\n fileInput.removeEventListener('change', this.readFile)\n }\n}\n\nexport default ImageCropper\n","import { render } from \"./image_cropper.vue?vue&type=template&id=0bac39f0\"\nimport script from \"./image_cropper.js?vue&type=script&lang=js\"\nexport * from \"./image_cropper.js?vue&type=script&lang=js\"\n\nimport \"./image_cropper.vue?vue&type=style&index=0&id=0bac39f0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import unescape from 'lodash/unescape'\nimport merge from 'lodash/merge'\nimport ImageCropper from 'src/components/image_cropper/image_cropper.vue'\nimport ScopeSelector from 'src/components/scope_selector/scope_selector.vue'\nimport fileSizeFormatService from 'src/components/../services/file_size_format/file_size_format.js'\nimport ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport EmojiInput from 'src/components/emoji_input/emoji_input.vue'\nimport suggestor from 'src/components/emoji_input/suggestor.js'\nimport Autosuggest from 'src/components/autosuggest/autosuggest.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'\nimport BooleanSetting from '../helpers/boolean_setting.vue'\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\nimport localeService from 'src/services/locale/locale.service.js'\nimport { propsToNative } from 'src/services/attributes_helper/attributes_helper.service.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faPlus,\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faPlus,\n faCircleNotch\n)\n\nconst ProfileTab = {\n data () {\n return {\n newName: this.$store.state.users.currentUser.name_unescaped,\n newBio: unescape(this.$store.state.users.currentUser.description),\n newLocked: this.$store.state.users.currentUser.locked,\n newBirthday: this.$store.state.users.currentUser.birthday,\n showBirthday: this.$store.state.users.currentUser.show_birthday,\n newFields: this.$store.state.users.currentUser.fields.map(field => ({ name: field.name, value: field.value })),\n showRole: this.$store.state.users.currentUser.show_role,\n role: this.$store.state.users.currentUser.role,\n bot: this.$store.state.users.currentUser.bot,\n pickAvatarBtnVisible: true,\n bannerUploading: false,\n backgroundUploading: false,\n banner: null,\n bannerPreview: null,\n background: null,\n backgroundPreview: null,\n emailLanguage: this.$store.state.users.currentUser.language || ['']\n }\n },\n components: {\n ScopeSelector,\n ImageCropper,\n EmojiInput,\n Autosuggest,\n ProgressButton,\n Checkbox,\n BooleanSetting,\n InterfaceLanguageSwitcher\n },\n computed: {\n user () {\n return this.$store.state.users.currentUser\n },\n ...SharedComputedObject(),\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.getters.standardEmojiList,\n ...this.$store.state.instance.customEmoji\n ],\n store: this.$store\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.getters.standardEmojiList,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n userSuggestor () {\n return suggestor({ store: this.$store })\n },\n fieldsLimits () {\n return this.$store.state.instance.fieldsLimits\n },\n maxFields () {\n return this.fieldsLimits ? this.fieldsLimits.maxFields : 0\n },\n defaultAvatar () {\n return this.$store.state.instance.server + this.$store.state.instance.defaultAvatar\n },\n defaultBanner () {\n return this.$store.state.instance.server + this.$store.state.instance.defaultBanner\n },\n isDefaultAvatar () {\n const baseAvatar = this.$store.state.instance.defaultAvatar\n return !(this.$store.state.users.currentUser.profile_image_url) ||\n this.$store.state.users.currentUser.profile_image_url.includes(baseAvatar)\n },\n isDefaultBanner () {\n const baseBanner = this.$store.state.instance.defaultBanner\n return !(this.$store.state.users.currentUser.cover_photo) ||\n this.$store.state.users.currentUser.cover_photo.includes(baseBanner)\n },\n isDefaultBackground () {\n return !(this.$store.state.users.currentUser.background_image)\n },\n avatarImgSrc () {\n const src = this.$store.state.users.currentUser.profile_image_url_original\n return (!src) ? this.defaultAvatar : src\n },\n bannerImgSrc () {\n const src = this.$store.state.users.currentUser.cover_photo\n return (!src) ? this.defaultBanner : src\n }\n },\n methods: {\n updateProfile () {\n const params = {\n note: this.newBio,\n locked: this.newLocked,\n // Backend notation.\n /* eslint-disable camelcase */\n display_name: this.newName,\n fields_attributes: this.newFields.filter(el => el != null),\n bot: this.bot,\n show_role: this.showRole,\n birthday: this.newBirthday || '',\n show_birthday: this.showBirthday\n /* eslint-enable camelcase */\n }\n\n if (this.emailLanguage) {\n params.language = localeService.internalToBackendLocaleMulti(this.emailLanguage)\n }\n\n this.$store.state.api.backendInteractor\n .updateProfile({ params })\n .then((user) => {\n this.newFields.splice(user.fields.length)\n merge(this.newFields, user.fields)\n this.$store.commit('addNewUsers', [user])\n this.$store.commit('setCurrentUser', user)\n })\n },\n changeVis (visibility) {\n this.newDefaultScope = visibility\n },\n addField () {\n if (this.newFields.length < this.maxFields) {\n this.newFields.push({ name: '', value: '' })\n return true\n }\n return false\n },\n deleteField (index, event) {\n this.newFields.splice(index, 1)\n },\n uploadFile (slot, e) {\n const file = e.target.files[0]\n if (!file) { return }\n if (file.size > this.$store.state.instance[slot + 'limit']) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(this.$store.state.instance[slot + 'limit'])\n this.$store.dispatch('pushGlobalNotice', {\n messageKey: 'upload.error.message',\n messageArgs: [\n this.$t('upload.error.file_too_big', {\n filesize: filesize.num,\n filesizeunit: filesize.unit,\n allowedsize: allowedsize.num,\n allowedsizeunit: allowedsize.unit\n })\n ],\n level: 'error'\n })\n return\n }\n // eslint-disable-next-line no-undef\n const reader = new FileReader()\n reader.onload = ({ target }) => {\n const img = target.result\n this[slot + 'Preview'] = img\n this[slot] = file\n }\n reader.readAsDataURL(file)\n },\n resetAvatar () {\n const confirmed = window.confirm(this.$t('settings.reset_avatar_confirm'))\n if (confirmed) {\n this.submitAvatar(undefined, '')\n }\n },\n resetBanner () {\n const confirmed = window.confirm(this.$t('settings.reset_banner_confirm'))\n if (confirmed) {\n this.submitBanner('')\n }\n },\n resetBackground () {\n const confirmed = window.confirm(this.$t('settings.reset_background_confirm'))\n if (confirmed) {\n this.submitBackground('')\n }\n },\n submitAvatar (cropper, file) {\n const that = this\n return new Promise((resolve, reject) => {\n function updateAvatar (avatar, avatarName) {\n that.$store.state.api.backendInteractor.updateProfileImages({ avatar, avatarName })\n .then((user) => {\n that.$store.commit('addNewUsers', [user])\n that.$store.commit('setCurrentUser', user)\n resolve()\n })\n .catch((error) => {\n that.displayUploadError(error)\n reject(error)\n })\n }\n\n if (cropper) {\n cropper.getCroppedCanvas().toBlob((data) => updateAvatar(data, file.name), file.type)\n } else {\n updateAvatar(file, file.name)\n }\n })\n },\n submitBanner (banner) {\n if (!this.bannerPreview && banner !== '') { return }\n\n this.bannerUploading = true\n this.$store.state.api.backendInteractor.updateProfileImages({ banner })\n .then((user) => {\n this.$store.commit('addNewUsers', [user])\n this.$store.commit('setCurrentUser', user)\n this.bannerPreview = null\n })\n .catch(this.displayUploadError)\n .finally(() => { this.bannerUploading = false })\n },\n submitBackground (background) {\n if (!this.backgroundPreview && background !== '') { return }\n\n this.backgroundUploading = true\n this.$store.state.api.backendInteractor.updateProfileImages({ background })\n .then((data) => {\n this.$store.commit('addNewUsers', [data])\n this.$store.commit('setCurrentUser', data)\n this.backgroundPreview = null\n })\n .catch(this.displayUploadError)\n .finally(() => { this.backgroundUploading = false })\n },\n displayUploadError (error) {\n this.$store.dispatch('pushGlobalNotice', {\n messageKey: 'upload.error.message',\n messageArgs: [error.message],\n level: 'error'\n })\n },\n propsToNative (props) {\n return propsToNative(props)\n }\n }\n}\n\nexport default ProfileTab\n","import { render } from \"./profile_tab.vue?vue&type=template&id=e8fd1bec\"\nimport script from \"./profile_tab.js?vue&type=script&lang=js\"\nexport * from \"./profile_tab.js?vue&type=script&lang=js\"\n\nimport \"./profile_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :label=\"$t('settings.general')\">\n <div class=\"setting-item\">\n <h2>{{ $t('settings.interface') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <interface-language-switcher\n :prompt-text=\"$t('settings.interfaceLanguage')\"\n :language=\"language\"\n :set-language=\"val => language = val\"\n />\n </li>\n <li v-if=\"instanceSpecificPanelPresent\">\n <BooleanSetting path=\"hideISP\">\n {{ $t('settings.hide_isp') }}\n </BooleanSetting>\n </li>\n <li v-if=\"instanceWallpaperUsed\">\n <BooleanSetting path=\"hideInstanceWallpaper\">\n {{ $t('settings.hide_wallpaper') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"stopGifs\">\n {{ $t('settings.stop_gifs') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"streaming\">\n {{ $t('settings.streaming') }}\n </BooleanSetting>\n <ul class=\"setting-list suboptions\">\n <li>\n <BooleanSetting\n path=\"pauseOnUnfocused\"\n parent-path=\"streaming\"\n >\n {{ $t('settings.pause_on_unfocused') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n <li>\n <BooleanSetting\n path=\"useStreamingApi\"\n expert=\"1\"\n >\n {{ $t('settings.useStreamingApi') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"virtualScrolling\"\n expert=\"1\"\n >\n {{ $t('settings.virtual_scrolling') }}\n </BooleanSetting>\n </li>\n <li>\n <ChoiceSetting\n id=\"userPopoverAvatarAction\"\n path=\"userPopoverAvatarAction\"\n :options=\"userPopoverAvatarActionOptions\"\n expert=\"1\"\n >\n {{ $t('settings.user_popover_avatar_action') }}\n </ChoiceSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"userPopoverOverlay\"\n expert=\"1\"\n >\n {{ $t('settings.user_popover_avatar_overlay') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"alwaysShowNewPostButton\"\n expert=\"1\"\n >\n {{ $t('settings.always_show_post_button') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"autohideFloatingPostButton\"\n expert=\"1\"\n >\n {{ $t('settings.autohide_floating_post_button') }}\n </BooleanSetting>\n </li>\n <li v-if=\"instanceShoutboxPresent\">\n <BooleanSetting\n path=\"hideShoutbox\"\n expert=\"1\"\n >\n {{ $t('settings.hide_shoutbox') }}\n </BooleanSetting>\n </li>\n <li>\n <h3>{{ $t('settings.columns') }}</h3>\n </li>\n <li>\n <BooleanSetting path=\"disableStickyHeaders\">\n {{ $t('settings.disable_sticky_headers') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"showScrollbars\">\n {{ $t('settings.show_scrollbars') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"sidebarRight\">\n {{ $t('settings.right_sidebar') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"navbarColumnStretch\">\n {{ $t('settings.navbar_column_stretch') }}\n </BooleanSetting>\n </li>\n <li>\n <ChoiceSetting\n v-if=\"user\"\n id=\"thirdColumnMode\"\n path=\"thirdColumnMode\"\n :options=\"thirdColumnModeOptions\"\n >\n {{ $t('settings.third_column_mode') }}\n </ChoiceSetting>\n </li>\n <li v-if=\"expertLevel > 0\">\n {{ $t('settings.column_sizes') }}\n <div class=\"column-settings\">\n <SizeSetting\n v-for=\"column in columns\"\n :key=\"column\"\n :path=\"column + 'ColumnWidth'\"\n :units=\"horizontalUnits\"\n expert=\"1\"\n >\n {{ $t('settings.column_sizes_' + column) }}\n </SizeSetting>\n </div>\n </li>\n <li class=\"select-multiple\">\n <span class=\"label\">{{ $t('settings.confirm_dialogs') }}</span>\n <ul class=\"option-list\">\n <li>\n <BooleanSetting path=\"modalOnRepeat\">\n {{ $t('settings.confirm_dialogs_repeat') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnUnfollow\">\n {{ $t('settings.confirm_dialogs_unfollow') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnBlock\">\n {{ $t('settings.confirm_dialogs_block') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnMute\">\n {{ $t('settings.confirm_dialogs_mute') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnDelete\">\n {{ $t('settings.confirm_dialogs_delete') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnLogout\">\n {{ $t('settings.confirm_dialogs_logout') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnApproveFollow\">\n {{ $t('settings.confirm_dialogs_approve_follow') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnDenyFollow\">\n {{ $t('settings.confirm_dialogs_deny_follow') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnRemoveUserFromFollowers\">\n {{ $t('settings.confirm_dialogs_remove_follower') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.post_look_feel') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <ChoiceSetting\n id=\"conversationDisplay\"\n path=\"conversationDisplay\"\n :options=\"conversationDisplayOptions\"\n >\n {{ $t('settings.conversation_display') }}\n </ChoiceSetting>\n </li>\n <ul\n v-if=\"mergedConfig.conversationDisplay !== 'linear'\"\n class=\"setting-list suboptions\"\n >\n <li>\n <BooleanSetting path=\"conversationTreeAdvanced\">\n {{ $t('settings.tree_advanced') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"conversationTreeFadeAncestors\"\n :expert=\"1\"\n >\n {{ $t('settings.tree_fade_ancestors') }}\n </BooleanSetting>\n </li>\n <li>\n <IntegerSetting\n path=\"maxDepthInThread\"\n :min=\"3\"\n :expert=\"1\"\n >\n {{ $t('settings.max_depth_in_thread') }}\n </IntegerSetting>\n </li>\n <li>\n <ChoiceSetting\n id=\"conversationOtherRepliesButton\"\n path=\"conversationOtherRepliesButton\"\n :options=\"conversationOtherRepliesButtonOptions\"\n :expert=\"1\"\n >\n {{ $t('settings.conversation_other_replies_button') }}\n </ChoiceSetting>\n </li>\n </ul>\n <li>\n <BooleanSetting path=\"collapseMessageWithSubject\">\n {{ $t('settings.collapse_subject') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"emojiReactionsOnTimeline\"\n expert=\"1\"\n >\n {{ $t('settings.emoji_reactions_on_timeline') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n v-if=\"user\"\n source=\"profile\"\n path=\"stripRichContent\"\n expert=\"1\"\n >\n {{ $t('settings.no_rich_text_description') }}\n </BooleanSetting>\n </li>\n <li>\n <FloatSetting\n v-if=\"user\"\n path=\"emojiReactionsScale\"\n expert=\"1\"\n >\n {{ $t('settings.emoji_reactions_scale') }}\n </FloatSetting>\n </li>\n <h3>{{ $t('settings.attachments') }}</h3>\n <li>\n <BooleanSetting\n path=\"useContainFit\"\n expert=\"1\"\n >\n {{ $t('settings.use_contain_fit') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"hideNsfw\">\n {{ $t('settings.nsfw_clickthrough') }}\n </BooleanSetting>\n </li>\n <ul class=\"setting-list suboptions\">\n <li>\n <BooleanSetting\n path=\"preloadImage\"\n expert=\"1\"\n parent-path=\"hideNsfw\"\n >\n {{ $t('settings.preload_images') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"useOneClickNsfw\"\n expert=\"1\"\n parent-path=\"hideNsfw\"\n >\n {{ $t('settings.use_one_click_nsfw') }}\n </BooleanSetting>\n </li>\n </ul>\n <li>\n <BooleanSetting\n path=\"loopVideo\"\n expert=\"1\"\n >\n {{ $t('settings.loop_video') }}\n </BooleanSetting>\n <ul class=\"setting-list suboptions\">\n <li>\n <BooleanSetting\n path=\"loopVideoSilentOnly\"\n expert=\"1\"\n parent-path=\"loopVideo\"\n :disabled=\"!loopSilentAvailable\"\n >\n {{ $t('settings.loop_video_silent_only') }}\n </BooleanSetting>\n <div\n v-if=\"!loopSilentAvailable\"\n class=\"unavailable\"\n >\n <FAIcon icon=\"globe\" />! {{ $t('settings.limited_availability') }}\n </div>\n </li>\n </ul>\n </li>\n <li>\n <BooleanSetting\n path=\"playVideosInModal\"\n expert=\"1\"\n >\n {{ $t('settings.play_videos_in_modal') }}\n </BooleanSetting>\n </li>\n <h3>{{ $t('settings.mention_links') }}</h3>\n <li>\n <ChoiceSetting\n id=\"mentionLinkDisplay\"\n path=\"mentionLinkDisplay\"\n :options=\"mentionLinkDisplayOptions\"\n >\n {{ $t('settings.mention_link_display') }}\n </ChoiceSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"mentionLinkShowTooltip\"\n expert=\"1\"\n >\n {{ $t('settings.mention_link_use_tooltip') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"useAtIcon\"\n expert=\"1\"\n >\n {{ $t('settings.use_at_icon') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"mentionLinkShowAvatar\">\n {{ $t('settings.mention_link_show_avatar') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"mentionLinkFadeDomain\"\n expert=\"1\"\n >\n {{ $t('settings.mention_link_fade_domain') }}\n </BooleanSetting>\n </li>\n <li v-if=\"user\">\n <BooleanSetting\n path=\"mentionLinkBoldenYou\"\n expert=\"1\"\n >\n {{ $t('settings.mention_link_bolden_you') }}\n </BooleanSetting>\n </li>\n <h3 v-if=\"expertLevel > 0\">\n {{ $t('settings.fun') }}\n </h3>\n <li>\n <BooleanSetting\n path=\"greentext\"\n expert=\"1\"\n >\n {{ $t('settings.greentext') }}\n </BooleanSetting>\n </li>\n <li v-if=\"user\">\n <BooleanSetting\n path=\"mentionLinkShowYous\"\n expert=\"1\"\n >\n {{ $t('settings.show_yous') }}\n </BooleanSetting>\n </li>\n </ul>\n </div>\n\n <div\n v-if=\"user\"\n class=\"setting-item\"\n >\n <h2>{{ $t('settings.composing') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <label for=\"default-vis\">\n {{ $t('settings.default_vis') }} <ProfileSettingIndicator :is-profile=\"true\" />\n <ScopeSelector\n class=\"scope-selector\"\n :show-all=\"true\"\n :user-default=\"$store.state.profileConfig.defaultScope\"\n :initial-scope=\"$store.state.profileConfig.defaultScope\"\n :on-scope-change=\"changeDefaultScope\"\n />\n </label>\n </li>\n <li>\n <!-- <BooleanSetting source=\"profile\" path=\"defaultNSFW\"> -->\n <BooleanSetting path=\"sensitiveByDefault\">\n {{ $t('settings.sensitive_by_default') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"scopeCopy\"\n expert=\"1\"\n >\n {{ $t('settings.scope_copy') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"alwaysShowSubjectInput\"\n expert=\"1\"\n >\n {{ $t('settings.subject_input_always_show') }}\n </BooleanSetting>\n </li>\n <li>\n <ChoiceSetting\n id=\"subjectLineBehavior\"\n path=\"subjectLineBehavior\"\n :options=\"subjectLineOptions\"\n expert=\"1\"\n >\n {{ $t('settings.subject_line_behavior') }}\n </ChoiceSetting>\n </li>\n <li v-if=\"postFormats.length > 0\">\n <ChoiceSetting\n id=\"postContentType\"\n path=\"postContentType\"\n :options=\"postContentOptions\"\n >\n {{ $t('settings.post_status_content_type') }}\n </ChoiceSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"minimalScopesMode\"\n expert=\"1\"\n >\n {{ $t('settings.minimal_scopes_mode') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"alwaysShowNewPostButton\"\n expert=\"1\"\n >\n {{ $t('settings.always_show_post_button') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"autohideFloatingPostButton\"\n expert=\"1\"\n >\n {{ $t('settings.autohide_floating_post_button') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"padEmoji\"\n expert=\"1\"\n >\n {{ $t('settings.pad_emoji') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"autocompleteSelect\"\n expert=\"1\"\n >\n {{ $t('settings.autocomplete_select_first') }}\n </BooleanSetting>\n </li>\n </ul>\n </div>\n </div>\n</template>\n\n<script src=\"./general_tab.js\"></script>\n\n<style lang=\"scss\">\n.column-settings {\n display: flex;\n justify-content: space-evenly;\n flex-wrap: wrap;\n}\n\n.column-settings .size-label {\n display: block;\n margin-bottom: 0.5em;\n margin-top: 0.5em;\n}\n</style>\n","<template>\n <NumberSetting\n v-bind=\"$attrs\"\n >\n <slot />\n </NumberSetting>\n</template>\n\n<script>\nimport NumberSetting from './number_setting.vue'\nexport default {\n components: {\n NumberSetting\n }\n}\n</script>\n","import { render } from \"./float_setting.vue?vue&type=template&id=5d7cfd0a\"\nimport script from \"./float_setting.vue?vue&type=script&lang=js\"\nexport * from \"./float_setting.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n v-if=\"matchesExpertLevel\"\n class=\"SizeSetting\"\n >\n <label\n :for=\"path\"\n class=\"size-label\"\n >\n <slot />\n </label>\n <input\n :id=\"path\"\n class=\"number-input\"\n type=\"number\"\n step=\"1\"\n :disabled=\"disabled\"\n :min=\"min || 0\"\n :value=\"stateValue\"\n @change=\"updateValue\"\n >\n <Select\n :id=\"path\"\n :model-value=\"stateUnit\"\n :disabled=\"disabled\"\n class=\"css-unit-input\"\n @change=\"updateUnit\"\n >\n <option\n v-for=\"option in units\"\n :key=\"option\"\n :value=\"option\"\n >\n {{ option }}\n </option>\n </Select>\n {{ ' ' }}\n <ModifiedIndicator\n :changed=\"isChanged\"\n :onclick=\"reset\"\n />\n </span>\n</template>\n\n<script src=\"./size_setting.js\"></script>\n\n<style lang=\"scss\">\n.SizeSetting {\n .number-input {\n max-width: 6.5em;\n }\n\n .css-unit-input,\n .css-unit-input select {\n margin-left: 0.5em;\n width: 4em;\n max-width: 4em;\n min-width: 4em;\n }\n}\n\n</style>\n","import Select from 'src/components/select/select.vue'\nimport Setting from './setting.js'\n\nexport const allCssUnits = ['cm', 'mm', 'in', 'px', 'pt', 'pc', 'em', 'ex', 'ch', 'rem', 'vw', 'vh', 'vmin', 'vmax', '%']\nexport const defaultHorizontalUnits = ['px', 'rem', 'vw']\nexport const defaultVerticalUnits = ['px', 'rem', 'vh']\n\nexport default {\n ...Setting,\n components: {\n ...Setting.components,\n Select\n },\n props: {\n ...Setting.props,\n min: Number,\n units: {\n type: Array,\n default: () => allCssUnits\n }\n },\n computed: {\n ...Setting.computed,\n stateUnit () {\n return this.state.replace(/\\d+/, '')\n },\n stateValue () {\n return this.state.replace(/\\D+/, '')\n }\n },\n methods: {\n ...Setting.methods,\n updateValue (e) {\n this.configSink(this.path, parseInt(e.target.value) + this.stateUnit)\n },\n updateUnit (e) {\n this.configSink(this.path, this.stateValue + e.target.value)\n }\n }\n}\n","import { render } from \"./size_setting.vue?vue&type=template&id=7cebf1f7\"\nimport script from \"./size_setting.js?vue&type=script&lang=js\"\nexport * from \"./size_setting.js?vue&type=script&lang=js\"\n\nimport \"./size_setting.vue?vue&type=style&index=0&id=7cebf1f7&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import BooleanSetting from '../helpers/boolean_setting.vue'\nimport ChoiceSetting from '../helpers/choice_setting.vue'\nimport ScopeSelector from 'src/components/scope_selector/scope_selector.vue'\nimport IntegerSetting from '../helpers/integer_setting.vue'\nimport FloatSetting from '../helpers/float_setting.vue'\nimport SizeSetting, { defaultHorizontalUnits } from '../helpers/size_setting.vue'\nimport InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'\n\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\nimport ProfileSettingIndicator from '../helpers/profile_setting_indicator.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faGlobe\n)\n\nconst GeneralTab = {\n data () {\n return {\n subjectLineOptions: ['email', 'noop', 'masto'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.subject_line_${mode === 'masto' ? 'mastodon' : mode}`)\n })),\n conversationDisplayOptions: ['tree', 'linear'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.conversation_display_${mode}`)\n })),\n conversationOtherRepliesButtonOptions: ['below', 'inside'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.conversation_other_replies_button_${mode}`)\n })),\n mentionLinkDisplayOptions: ['short', 'full_for_remote', 'full'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.mention_link_display_${mode}`)\n })),\n thirdColumnModeOptions: ['none', 'notifications', 'postform'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.third_column_mode_${mode}`)\n })),\n userPopoverAvatarActionOptions: ['close', 'zoom', 'open'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.user_popover_avatar_action_${mode}`)\n })),\n loopSilentAvailable:\n // Firefox\n Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype, 'mozHasAudio') ||\n // Chrome-likes\n Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'webkitAudioDecodedByteCount') ||\n // Future spec, still not supported in Nightly 63 as of 08/2018\n Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'audioTracks')\n }\n },\n components: {\n BooleanSetting,\n ChoiceSetting,\n IntegerSetting,\n FloatSetting,\n SizeSetting,\n InterfaceLanguageSwitcher,\n ScopeSelector,\n ProfileSettingIndicator\n },\n computed: {\n horizontalUnits () {\n return defaultHorizontalUnits\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n postContentOptions () {\n return this.postFormats.map(format => ({\n key: format,\n value: format,\n label: this.$t(`post_status.content_type[\"${format}\"]`)\n }))\n },\n columns () {\n const mode = this.$store.getters.mergedConfig.thirdColumnMode\n\n const notif = mode === 'none' ? [] : ['notifs']\n\n if (this.$store.getters.mergedConfig.sidebarRight || mode === 'postform') {\n return [...notif, 'content', 'sidebar']\n } else {\n return ['sidebar', 'content', ...notif]\n }\n },\n instanceSpecificPanelPresent () { return this.$store.state.instance.showInstanceSpecificPanel },\n instanceWallpaperUsed () {\n return this.$store.state.instance.background &&\n !this.$store.state.users.currentUser.background_image\n },\n instanceShoutboxPresent () { return this.$store.state.instance.shoutAvailable },\n language: {\n get: function () { return this.$store.getters.mergedConfig.interfaceLanguage },\n set: function (val) {\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n }\n },\n ...SharedComputedObject()\n },\n methods: {\n changeDefaultScope (value) {\n this.$store.dispatch('setProfileOption', { name: 'defaultScope', value })\n }\n }\n}\n\nexport default GeneralTab\n","import { render } from \"./general_tab.vue?vue&type=template&id=d4cef4c6\"\nimport script from \"./general_tab.js?vue&type=script&lang=js\"\nexport * from \"./general_tab.js?vue&type=script&lang=js\"\n\nimport \"./general_tab.vue?vue&type=style&index=0&id=d4cef4c6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :label=\"$t('settings.version.title')\">\n <div class=\"setting-item\">\n <ul class=\"setting-list\">\n <li>\n <p>{{ $t('settings.version.backend_version') }}</p>\n <ul class=\"option-list\">\n <li>\n <a\n :href=\"backendVersionLink\"\n target=\"_blank\"\n >{{ backendVersion }}</a>\n </li>\n </ul>\n </li>\n <li>\n <p>{{ $t('settings.version.frontend_version') }}</p>\n <ul class=\"option-list\">\n <li>\n <a\n :href=\"frontendVersionLink\"\n target=\"_blank\"\n >{{ frontendVersion }}</a>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n</template>\n<script src=\"./version_tab.js\" />\n","import { extractCommit } from 'src/services/version/version.service'\n\nconst pleromaFeCommitUrl = 'https://git.pleroma.social/pleroma/pleroma-fe/commit/'\nconst pleromaBeCommitUrl = 'https://git.pleroma.social/pleroma/pleroma/commit/'\n\nconst VersionTab = {\n data () {\n const instance = this.$store.state.instance\n return {\n backendVersion: instance.backendVersion,\n frontendVersion: instance.frontendVersion\n }\n },\n computed: {\n frontendVersionLink () {\n return pleromaFeCommitUrl + this.frontendVersion\n },\n backendVersionLink () {\n return pleromaBeCommitUrl + extractCommit(this.backendVersion)\n }\n }\n}\n\nexport default VersionTab\n","\nexport const extractCommit = versionString => {\n const regex = /-g(\\w+)/i\n const matches = versionString.match(regex)\n return matches ? matches[1] : ''\n}\n","import { render } from \"./version_tab.vue?vue&type=template&id=1295897c\"\nimport script from \"./version_tab.js?vue&type=script&lang=js\"\nexport * from \"./version_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"theme-tab\">\n <div class=\"presets-container\">\n <div class=\"save-load\">\n <div\n v-if=\"themeWarning\"\n class=\"theme-warning\"\n >\n <div class=\"alert warning\">\n {{ themeWarningHelp }}\n </div>\n <div class=\"buttons\">\n <template v-if=\"themeWarning.type === 'snapshot_source_mismatch'\">\n <button\n class=\"btn button-default\"\n @click=\"forceLoad\"\n >\n {{ $t('settings.style.switcher.use_source') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"forceSnapshot\"\n >\n {{ $t('settings.style.switcher.use_snapshot') }}\n </button>\n </template>\n <template v-else-if=\"themeWarning.noActionsPossible\">\n <button\n class=\"btn button-default\"\n @click=\"dismissWarning\"\n >\n {{ $t('general.dismiss') }}\n </button>\n </template>\n <template v-else>\n <button\n class=\"btn button-default\"\n @click=\"forceLoad\"\n >\n {{ $t('settings.style.switcher.load_theme') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"dismissWarning\"\n >\n {{ $t('settings.style.switcher.keep_as_is') }}\n </button>\n </template>\n </div>\n </div>\n <div class=\"top\">\n <div class=\"presets\">\n {{ $t('settings.presets') }}\n <label\n for=\"preset-switcher\"\n class=\"select\"\n >\n <Select\n id=\"preset-switcher\"\n v-model=\"selected\"\n class=\"preset-switcher\"\n >\n <option\n v-for=\"style in availableStyles\"\n :key=\"style.name\"\n :value=\"style.name || style[0]\"\n :style=\"{\n backgroundColor: style[1] || (style.theme || style.source).colors.bg,\n color: style[3] || (style.theme || style.source).colors.text\n }\"\n >\n {{ style[0] || style.name }}\n </option>\n </Select>\n </label>\n </div>\n <div class=\"export-import\">\n <button\n class=\"btn button-default\"\n @click=\"importTheme\"\n >\n {{ $t(&quot;settings.import_theme&quot;) }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"exportTheme\"\n >\n {{ $t(&quot;settings.export_theme&quot;) }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"save-load-options\">\n <span class=\"keep-option\">\n <Checkbox v-model=\"keepColor\">\n {{ $t('settings.style.switcher.keep_color') }}\n </Checkbox>\n </span>\n <span class=\"keep-option\">\n <Checkbox v-model=\"keepShadows\">\n {{ $t('settings.style.switcher.keep_shadows') }}\n </Checkbox>\n </span>\n <span class=\"keep-option\">\n <Checkbox v-model=\"keepOpacity\">\n {{ $t('settings.style.switcher.keep_opacity') }}\n </Checkbox>\n </span>\n <span class=\"keep-option\">\n <Checkbox v-model=\"keepRoundness\">\n {{ $t('settings.style.switcher.keep_roundness') }}\n </Checkbox>\n </span>\n <span class=\"keep-option\">\n <Checkbox v-model=\"keepFonts\">\n {{ $t('settings.style.switcher.keep_fonts') }}\n </Checkbox>\n </span>\n <p>{{ $t('settings.style.switcher.save_load_hint') }}</p>\n </div>\n </div>\n\n <preview :style=\"previewRules\" />\n\n <keep-alive>\n <tab-switcher key=\"style-tweak\">\n <div\n :label=\"$t('settings.style.common_colors._tab_label')\"\n class=\"color-container\"\n >\n <div class=\"tab-header\">\n <p>{{ $t('settings.theme_help') }}</p>\n <div class=\"tab-header-buttons\">\n <button\n class=\"btn button-default\"\n @click=\"clearOpacity\"\n >\n {{ $t('settings.style.switcher.clear_opacity') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"clearV1\"\n >\n {{ $t('settings.style.switcher.clear_all') }}\n </button>\n </div>\n </div>\n <p>{{ $t('settings.theme_help_v2_1') }}</p>\n <h4>{{ $t('settings.style.common_colors.main') }}</h4>\n <div class=\"color-item\">\n <ColorInput\n v-model=\"bgColorLocal\"\n name=\"bgColor\"\n :label=\"$t('settings.background')\"\n />\n <OpacityInput\n v-model=\"bgOpacityLocal\"\n name=\"bgOpacity\"\n :fallback=\"previewTheme.opacity.bg\"\n />\n <ColorInput\n v-model=\"textColorLocal\"\n name=\"textColor\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgText\" />\n <ColorInput\n v-model=\"accentColorLocal\"\n name=\"accentColor\"\n :fallback=\"previewTheme.colors.link\"\n :label=\"$t('settings.accent')\"\n :show-optional-tickbox=\"typeof linkColorLocal !== 'undefined'\"\n />\n <ColorInput\n v-model=\"linkColorLocal\"\n name=\"linkColor\"\n :fallback=\"previewTheme.colors.accent\"\n :label=\"$t('settings.links')\"\n :show-optional-tickbox=\"typeof accentColorLocal !== 'undefined'\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgLink\" />\n </div>\n <div class=\"color-item\">\n <ColorInput\n v-model=\"fgColorLocal\"\n name=\"fgColor\"\n :label=\"$t('settings.foreground')\"\n />\n <ColorInput\n v-model=\"fgTextColorLocal\"\n name=\"fgTextColor\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.fgText\"\n />\n <ColorInput\n v-model=\"fgLinkColorLocal\"\n name=\"fgLinkColor\"\n :label=\"$t('settings.links')\"\n :fallback=\"previewTheme.colors.fgLink\"\n />\n <p>{{ $t('settings.style.common_colors.foreground_hint') }}</p>\n </div>\n <h4>{{ $t('settings.style.common_colors.rgbo') }}</h4>\n <div class=\"color-item\">\n <ColorInput\n v-model=\"cRedColorLocal\"\n name=\"cRedColor\"\n :label=\"$t('settings.cRed')\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgCRed\" />\n <ColorInput\n v-model=\"cBlueColorLocal\"\n name=\"cBlueColor\"\n :label=\"$t('settings.cBlue')\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgCBlue\" />\n </div>\n <div class=\"color-item\">\n <ColorInput\n v-model=\"cGreenColorLocal\"\n name=\"cGreenColor\"\n :label=\"$t('settings.cGreen')\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgCGreen\" />\n <ColorInput\n v-model=\"cOrangeColorLocal\"\n name=\"cOrangeColor\"\n :label=\"$t('settings.cOrange')\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgCOrange\" />\n </div>\n <p>{{ $t('settings.theme_help_v2_2') }}</p>\n </div>\n\n <div\n :label=\"$t('settings.style.advanced_colors._tab_label')\"\n class=\"color-container\"\n >\n <div class=\"tab-header\">\n <p>{{ $t('settings.theme_help') }}</p>\n <button\n class=\"btn button-default\"\n @click=\"clearOpacity\"\n >\n {{ $t('settings.style.switcher.clear_opacity') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"clearV1\"\n >\n {{ $t('settings.style.switcher.clear_all') }}\n </button>\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.post') }}</h4>\n <ColorInput\n v-model=\"postLinkColorLocal\"\n name=\"postLinkColor\"\n :fallback=\"previewTheme.colors.accent\"\n :label=\"$t('settings.links')\"\n />\n <ContrastRatio :contrast=\"previewContrast.postLink\" />\n <ColorInput\n v-model=\"postGreentextColorLocal\"\n name=\"postGreentextColor\"\n :fallback=\"previewTheme.colors.cGreen\"\n :label=\"$t('settings.greentext')\"\n />\n <ContrastRatio :contrast=\"previewContrast.postGreentext\" />\n <h4>{{ $t('settings.style.advanced_colors.alert') }}</h4>\n <ColorInput\n v-model=\"alertErrorColorLocal\"\n name=\"alertError\"\n :label=\"$t('settings.style.advanced_colors.alert_error')\"\n :fallback=\"previewTheme.colors.alertError\"\n />\n <ColorInput\n v-model=\"alertErrorTextColorLocal\"\n name=\"alertErrorText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.alertErrorText\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.alertErrorText\"\n large\n />\n <ColorInput\n v-model=\"alertWarningColorLocal\"\n name=\"alertWarning\"\n :label=\"$t('settings.style.advanced_colors.alert_warning')\"\n :fallback=\"previewTheme.colors.alertWarning\"\n />\n <ColorInput\n v-model=\"alertWarningTextColorLocal\"\n name=\"alertWarningText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.alertWarningText\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.alertWarningText\"\n large\n />\n <ColorInput\n v-model=\"alertNeutralColorLocal\"\n name=\"alertNeutral\"\n :label=\"$t('settings.style.advanced_colors.alert_neutral')\"\n :fallback=\"previewTheme.colors.alertNeutral\"\n />\n <ColorInput\n v-model=\"alertNeutralTextColorLocal\"\n name=\"alertNeutralText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.alertNeutralText\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.alertNeutralText\"\n large\n />\n <OpacityInput\n v-model=\"alertOpacityLocal\"\n name=\"alertOpacity\"\n :fallback=\"previewTheme.opacity.alert\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.badge') }}</h4>\n <ColorInput\n v-model=\"badgeNotificationColorLocal\"\n name=\"badgeNotification\"\n :label=\"$t('settings.style.advanced_colors.badge_notification')\"\n :fallback=\"previewTheme.colors.badgeNotification\"\n />\n <ColorInput\n v-model=\"badgeNotificationTextColorLocal\"\n name=\"badgeNotificationText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.badgeNotificationText\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.badgeNotificationText\"\n large\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.panel_header') }}</h4>\n <ColorInput\n v-model=\"panelColorLocal\"\n name=\"panelColor\"\n :fallback=\"previewTheme.colors.panel\"\n :label=\"$t('settings.background')\"\n />\n <OpacityInput\n v-model=\"panelOpacityLocal\"\n name=\"panelOpacity\"\n :fallback=\"previewTheme.opacity.panel\"\n :disabled=\"panelColorLocal === 'transparent'\"\n />\n <ColorInput\n v-model=\"panelTextColorLocal\"\n name=\"panelTextColor\"\n :fallback=\"previewTheme.colors.panelText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.panelText\"\n large\n />\n <ColorInput\n v-model=\"panelLinkColorLocal\"\n name=\"panelLinkColor\"\n :fallback=\"previewTheme.colors.panelLink\"\n :label=\"$t('settings.links')\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.panelLink\"\n large\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.top_bar') }}</h4>\n <ColorInput\n v-model=\"topBarColorLocal\"\n name=\"topBarColor\"\n :fallback=\"previewTheme.colors.topBar\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"topBarTextColorLocal\"\n name=\"topBarTextColor\"\n :fallback=\"previewTheme.colors.topBarText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.topBarText\" />\n <ColorInput\n v-model=\"topBarLinkColorLocal\"\n name=\"topBarLinkColor\"\n :fallback=\"previewTheme.colors.topBarLink\"\n :label=\"$t('settings.links')\"\n />\n <ContrastRatio :contrast=\"previewContrast.topBarLink\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.inputs') }}</h4>\n <ColorInput\n v-model=\"inputColorLocal\"\n name=\"inputColor\"\n :fallback=\"previewTheme.colors.input\"\n :label=\"$t('settings.background')\"\n />\n <OpacityInput\n v-model=\"inputOpacityLocal\"\n name=\"inputOpacity\"\n :fallback=\"previewTheme.opacity.input\"\n :disabled=\"inputColorLocal === 'transparent'\"\n />\n <ColorInput\n v-model=\"inputTextColorLocal\"\n name=\"inputTextColor\"\n :fallback=\"previewTheme.colors.inputText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.inputText\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.buttons') }}</h4>\n <ColorInput\n v-model=\"btnColorLocal\"\n name=\"btnColor\"\n :fallback=\"previewTheme.colors.btn\"\n :label=\"$t('settings.background')\"\n />\n <OpacityInput\n v-model=\"btnOpacityLocal\"\n name=\"btnOpacity\"\n :fallback=\"previewTheme.opacity.btn\"\n :disabled=\"btnColorLocal === 'transparent'\"\n />\n <ColorInput\n v-model=\"btnTextColorLocal\"\n name=\"btnTextColor\"\n :fallback=\"previewTheme.colors.btnText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnText\" />\n <ColorInput\n v-model=\"btnPanelTextColorLocal\"\n name=\"btnPanelTextColor\"\n :fallback=\"previewTheme.colors.btnPanelText\"\n :label=\"$t('settings.style.advanced_colors.panel_header')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnPanelText\" />\n <ColorInput\n v-model=\"btnTopBarTextColorLocal\"\n name=\"btnTopBarTextColor\"\n :fallback=\"previewTheme.colors.btnTopBarText\"\n :label=\"$t('settings.style.advanced_colors.top_bar')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnTopBarText\" />\n <h5>{{ $t('settings.style.advanced_colors.pressed') }}</h5>\n <ColorInput\n v-model=\"btnPressedColorLocal\"\n name=\"btnPressedColor\"\n :fallback=\"previewTheme.colors.btnPressed\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"btnPressedTextColorLocal\"\n name=\"btnPressedTextColor\"\n :fallback=\"previewTheme.colors.btnPressedText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnPressedText\" />\n <ColorInput\n v-model=\"btnPressedPanelTextColorLocal\"\n name=\"btnPressedPanelTextColor\"\n :fallback=\"previewTheme.colors.btnPressedPanelText\"\n :label=\"$t('settings.style.advanced_colors.panel_header')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnPressedPanelText\" />\n <ColorInput\n v-model=\"btnPressedTopBarTextColorLocal\"\n name=\"btnPressedTopBarTextColor\"\n :fallback=\"previewTheme.colors.btnPressedTopBarText\"\n :label=\"$t('settings.style.advanced_colors.top_bar')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnPressedTopBarText\" />\n <h5>{{ $t('settings.style.advanced_colors.disabled') }}</h5>\n <ColorInput\n v-model=\"btnDisabledColorLocal\"\n name=\"btnDisabledColor\"\n :fallback=\"previewTheme.colors.btnDisabled\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"btnDisabledTextColorLocal\"\n name=\"btnDisabledTextColor\"\n :fallback=\"previewTheme.colors.btnDisabledText\"\n :label=\"$t('settings.text')\"\n />\n <ColorInput\n v-model=\"btnDisabledPanelTextColorLocal\"\n name=\"btnDisabledPanelTextColor\"\n :fallback=\"previewTheme.colors.btnDisabledPanelText\"\n :label=\"$t('settings.style.advanced_colors.panel_header')\"\n />\n <ColorInput\n v-model=\"btnDisabledTopBarTextColorLocal\"\n name=\"btnDisabledTopBarTextColor\"\n :fallback=\"previewTheme.colors.btnDisabledTopBarText\"\n :label=\"$t('settings.style.advanced_colors.top_bar')\"\n />\n <h5>{{ $t('settings.style.advanced_colors.toggled') }}</h5>\n <ColorInput\n v-model=\"btnToggledColorLocal\"\n name=\"btnToggledColor\"\n :fallback=\"previewTheme.colors.btnToggled\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"btnToggledTextColorLocal\"\n name=\"btnToggledTextColor\"\n :fallback=\"previewTheme.colors.btnToggledText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnToggledText\" />\n <ColorInput\n v-model=\"btnToggledPanelTextColorLocal\"\n name=\"btnToggledPanelTextColor\"\n :fallback=\"previewTheme.colors.btnToggledPanelText\"\n :label=\"$t('settings.style.advanced_colors.panel_header')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnToggledPanelText\" />\n <ColorInput\n v-model=\"btnToggledTopBarTextColorLocal\"\n name=\"btnToggledTopBarTextColor\"\n :fallback=\"previewTheme.colors.btnToggledTopBarText\"\n :label=\"$t('settings.style.advanced_colors.top_bar')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnToggledTopBarText\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.tabs') }}</h4>\n <ColorInput\n v-model=\"tabColorLocal\"\n name=\"tabColor\"\n :fallback=\"previewTheme.colors.tab\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"tabTextColorLocal\"\n name=\"tabTextColor\"\n :fallback=\"previewTheme.colors.tabText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.tabText\" />\n <ColorInput\n v-model=\"tabActiveTextColorLocal\"\n name=\"tabActiveTextColor\"\n :fallback=\"previewTheme.colors.tabActiveText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.tabActiveText\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.borders') }}</h4>\n <ColorInput\n v-model=\"borderColorLocal\"\n name=\"borderColor\"\n :fallback=\"previewTheme.colors.border\"\n :label=\"$t('settings.style.common.color')\"\n />\n <OpacityInput\n v-model=\"borderOpacityLocal\"\n name=\"borderOpacity\"\n :fallback=\"previewTheme.opacity.border\"\n :disabled=\"borderColorLocal === 'transparent'\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.faint_text') }}</h4>\n <ColorInput\n v-model=\"faintColorLocal\"\n name=\"faintColor\"\n :fallback=\"previewTheme.colors.faint\"\n :label=\"$t('settings.text')\"\n />\n <ColorInput\n v-model=\"faintLinkColorLocal\"\n name=\"faintLinkColor\"\n :fallback=\"previewTheme.colors.faintLink\"\n :label=\"$t('settings.links')\"\n />\n <ColorInput\n v-model=\"panelFaintColorLocal\"\n name=\"panelFaintColor\"\n :fallback=\"previewTheme.colors.panelFaint\"\n :label=\"$t('settings.style.advanced_colors.panel_header')\"\n />\n <OpacityInput\n v-model=\"faintOpacityLocal\"\n name=\"faintOpacity\"\n :fallback=\"previewTheme.opacity.faint\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.underlay') }}</h4>\n <ColorInput\n v-model=\"underlayColorLocal\"\n name=\"underlay\"\n :label=\"$t('settings.style.advanced_colors.underlay')\"\n :fallback=\"previewTheme.colors.underlay\"\n />\n <OpacityInput\n v-model=\"underlayOpacityLocal\"\n name=\"underlayOpacity\"\n :fallback=\"previewTheme.opacity.underlay\"\n :disabled=\"underlayOpacityLocal === 'transparent'\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.wallpaper') }}</h4>\n <ColorInput\n v-model=\"wallpaperColorLocal\"\n name=\"wallpaper\"\n :label=\"$t('settings.style.advanced_colors.wallpaper')\"\n :fallback=\"previewTheme.colors.wallpaper\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.poll') }}</h4>\n <ColorInput\n v-model=\"pollColorLocal\"\n name=\"poll\"\n :label=\"$t('settings.background')\"\n :fallback=\"previewTheme.colors.poll\"\n />\n <ColorInput\n v-model=\"pollTextColorLocal\"\n name=\"pollText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.pollText\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.icons') }}</h4>\n <ColorInput\n v-model=\"iconColorLocal\"\n name=\"icon\"\n :label=\"$t('settings.style.advanced_colors.icons')\"\n :fallback=\"previewTheme.colors.icon\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.highlight') }}</h4>\n <ColorInput\n v-model=\"highlightColorLocal\"\n name=\"highlight\"\n :label=\"$t('settings.background')\"\n :fallback=\"previewTheme.colors.highlight\"\n />\n <ColorInput\n v-model=\"highlightTextColorLocal\"\n name=\"highlightText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.highlightText\"\n />\n <ContrastRatio :contrast=\"previewContrast.highlightText\" />\n <ColorInput\n v-model=\"highlightLinkColorLocal\"\n name=\"highlightLink\"\n :label=\"$t('settings.links')\"\n :fallback=\"previewTheme.colors.highlightLink\"\n />\n <ContrastRatio :contrast=\"previewContrast.highlightLink\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.popover') }}</h4>\n <ColorInput\n v-model=\"popoverColorLocal\"\n name=\"popover\"\n :label=\"$t('settings.background')\"\n :fallback=\"previewTheme.colors.popover\"\n />\n <OpacityInput\n v-model=\"popoverOpacityLocal\"\n name=\"popoverOpacity\"\n :fallback=\"previewTheme.opacity.popover\"\n :disabled=\"popoverOpacityLocal === 'transparent'\"\n />\n <ColorInput\n v-model=\"popoverTextColorLocal\"\n name=\"popoverText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.popoverText\"\n />\n <ContrastRatio :contrast=\"previewContrast.popoverText\" />\n <ColorInput\n v-model=\"popoverLinkColorLocal\"\n name=\"popoverLink\"\n :label=\"$t('settings.links')\"\n :fallback=\"previewTheme.colors.popoverLink\"\n />\n <ContrastRatio :contrast=\"previewContrast.popoverLink\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.selectedPost') }}</h4>\n <ColorInput\n v-model=\"selectedPostColorLocal\"\n name=\"selectedPost\"\n :label=\"$t('settings.background')\"\n :fallback=\"previewTheme.colors.selectedPost\"\n />\n <ColorInput\n v-model=\"selectedPostTextColorLocal\"\n name=\"selectedPostText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.selectedPostText\"\n />\n <ContrastRatio :contrast=\"previewContrast.selectedPostText\" />\n <ColorInput\n v-model=\"selectedPostLinkColorLocal\"\n name=\"selectedPostLink\"\n :label=\"$t('settings.links')\"\n :fallback=\"previewTheme.colors.selectedPostLink\"\n />\n <ContrastRatio :contrast=\"previewContrast.selectedPostLink\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.selectedMenu') }}</h4>\n <ColorInput\n v-model=\"selectedMenuColorLocal\"\n name=\"selectedMenu\"\n :label=\"$t('settings.background')\"\n :fallback=\"previewTheme.colors.selectedMenu\"\n />\n <ColorInput\n v-model=\"selectedMenuTextColorLocal\"\n name=\"selectedMenuText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.selectedMenuText\"\n />\n <ContrastRatio :contrast=\"previewContrast.selectedMenuText\" />\n <ColorInput\n v-model=\"selectedMenuLinkColorLocal\"\n name=\"selectedMenuLink\"\n :label=\"$t('settings.links')\"\n :fallback=\"previewTheme.colors.selectedMenuLink\"\n />\n <ContrastRatio :contrast=\"previewContrast.selectedMenuLink\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('chats.chats') }}</h4>\n <ColorInput\n v-model=\"chatBgColorLocal\"\n name=\"chatBgColor\"\n :fallback=\"previewTheme.colors.bg\"\n :label=\"$t('settings.background')\"\n />\n <h5>{{ $t('settings.style.advanced_colors.chat.incoming') }}</h5>\n <ColorInput\n v-model=\"chatMessageIncomingBgColorLocal\"\n name=\"chatMessageIncomingBgColor\"\n :fallback=\"previewTheme.colors.bg\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"chatMessageIncomingTextColorLocal\"\n name=\"chatMessageIncomingTextColor\"\n :fallback=\"previewTheme.colors.text\"\n :label=\"$t('settings.text')\"\n />\n <ColorInput\n v-model=\"chatMessageIncomingLinkColorLocal\"\n name=\"chatMessageIncomingLinkColor\"\n :fallback=\"previewTheme.colors.link\"\n :label=\"$t('settings.links')\"\n />\n <ColorInput\n v-model=\"chatMessageIncomingBorderColorLocal\"\n name=\"chatMessageIncomingBorderLinkColor\"\n :fallback=\"previewTheme.colors.fg\"\n :label=\"$t('settings.style.advanced_colors.chat.border')\"\n />\n <h5>{{ $t('settings.style.advanced_colors.chat.outgoing') }}</h5>\n <ColorInput\n v-model=\"chatMessageOutgoingBgColorLocal\"\n name=\"chatMessageOutgoingBgColor\"\n :fallback=\"previewTheme.colors.bg\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"chatMessageOutgoingTextColorLocal\"\n name=\"chatMessageOutgoingTextColor\"\n :fallback=\"previewTheme.colors.text\"\n :label=\"$t('settings.text')\"\n />\n <ColorInput\n v-model=\"chatMessageOutgoingLinkColorLocal\"\n name=\"chatMessageOutgoingLinkColor\"\n :fallback=\"previewTheme.colors.link\"\n :label=\"$t('settings.links')\"\n />\n <ColorInput\n v-model=\"chatMessageOutgoingBorderColorLocal\"\n name=\"chatMessageOutgoingBorderLinkColor\"\n :fallback=\"previewTheme.colors.bg\"\n :label=\"$t('settings.style.advanced_colors.chat.border')\"\n />\n </div>\n </div>\n\n <div\n :label=\"$t('settings.style.radii._tab_label')\"\n class=\"radius-container\"\n >\n <div class=\"tab-header\">\n <p>{{ $t('settings.radii_help') }}</p>\n <button\n class=\"btn button-default\"\n @click=\"clearRoundness\"\n >\n {{ $t('settings.style.switcher.clear_all') }}\n </button>\n </div>\n <RangeInput\n v-model=\"btnRadiusLocal\"\n name=\"btnRadius\"\n :label=\"$t('settings.btnRadius')\"\n :fallback=\"previewTheme.radii.btn\"\n max=\"16\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"inputRadiusLocal\"\n name=\"inputRadius\"\n :label=\"$t('settings.inputRadius')\"\n :fallback=\"previewTheme.radii.input\"\n max=\"9\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"checkboxRadiusLocal\"\n name=\"checkboxRadius\"\n :label=\"$t('settings.checkboxRadius')\"\n :fallback=\"previewTheme.radii.checkbox\"\n max=\"16\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"panelRadiusLocal\"\n name=\"panelRadius\"\n :label=\"$t('settings.panelRadius')\"\n :fallback=\"previewTheme.radii.panel\"\n max=\"50\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"avatarRadiusLocal\"\n name=\"avatarRadius\"\n :label=\"$t('settings.avatarRadius')\"\n :fallback=\"previewTheme.radii.avatar\"\n max=\"28\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"avatarAltRadiusLocal\"\n name=\"avatarAltRadius\"\n :label=\"$t('settings.avatarAltRadius')\"\n :fallback=\"previewTheme.radii.avatarAlt\"\n max=\"28\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"attachmentRadiusLocal\"\n name=\"attachmentRadius\"\n :label=\"$t('settings.attachmentRadius')\"\n :fallback=\"previewTheme.radii.attachment\"\n max=\"50\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"tooltipRadiusLocal\"\n name=\"tooltipRadius\"\n :label=\"$t('settings.tooltipRadius')\"\n :fallback=\"previewTheme.radii.tooltip\"\n max=\"50\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"chatMessageRadiusLocal\"\n name=\"chatMessageRadius\"\n :label=\"$t('settings.chatMessageRadius')\"\n :fallback=\"previewTheme.radii.chatMessage || 2\"\n max=\"50\"\n hard-min=\"0\"\n />\n </div>\n\n <div\n :label=\"$t('settings.style.shadows._tab_label')\"\n class=\"shadow-container\"\n >\n <div class=\"tab-header shadow-selector\">\n <div class=\"select-container\">\n {{ $t('settings.style.shadows.component') }}\n {{ ' ' }}\n <Select\n id=\"shadow-switcher\"\n v-model=\"shadowSelected\"\n class=\"shadow-switcher\"\n >\n <option\n v-for=\"shadow in shadowsAvailable\"\n :key=\"shadow\"\n :value=\"shadow\"\n >\n {{ $t('settings.style.shadows.components.' + shadow) }}\n </option>\n </Select>\n </div>\n <div class=\"override\">\n <label\n for=\"override\"\n class=\"label\"\n >\n {{ $t('settings.style.shadows.override') }}\n </label>\n {{ ' ' }}\n <input\n id=\"override\"\n v-model=\"currentShadowOverriden\"\n name=\"override\"\n class=\"input-override\"\n type=\"checkbox\"\n >\n <label\n class=\"checkbox-label\"\n for=\"override\"\n />\n </div>\n <button\n class=\"btn button-default\"\n @click=\"clearShadows\"\n >\n {{ $t('settings.style.switcher.clear_all') }}\n </button>\n </div>\n <ShadowControl\n v-model=\"currentShadow\"\n :ready=\"!!currentShadowFallback\"\n :fallback=\"currentShadowFallback\"\n />\n <div v-if=\"shadowSelected === 'avatar' || shadowSelected === 'avatarStatus'\">\n <i18n-t\n scope=\"global\"\n keypath=\"settings.style.shadows.filter_hint.always_drop_shadow\"\n tag=\"p\"\n >\n <code>filter: drop-shadow()</code>\n </i18n-t>\n <p>{{ $t('settings.style.shadows.filter_hint.avatar_inset') }}</p>\n <i18n-t\n scope=\"global\"\n keypath=\"settings.style.shadows.filter_hint.drop_shadow_syntax\"\n tag=\"p\"\n >\n <code>drop-shadow</code>\n <code>spread-radius</code>\n <code>inset</code>\n </i18n-t>\n <i18n-t\n scope=\"global\"\n keypath=\"settings.style.shadows.filter_hint.inset_classic\"\n tag=\"p\"\n >\n <code>box-shadow</code>\n </i18n-t>\n <p>{{ $t('settings.style.shadows.filter_hint.spread_zero') }}</p>\n </div>\n </div>\n\n <div\n :label=\"$t('settings.style.fonts._tab_label')\"\n class=\"fonts-container\"\n >\n <div class=\"tab-header\">\n <p>{{ $t('settings.style.fonts.help') }}</p>\n <button\n class=\"btn button-default\"\n @click=\"clearFonts\"\n >\n {{ $t('settings.style.switcher.clear_all') }}\n </button>\n </div>\n <FontControl\n v-model=\"fontsLocal.interface\"\n name=\"ui\"\n :label=\"$t('settings.style.fonts.components.interface')\"\n :fallback=\"previewTheme.fonts.interface\"\n no-inherit=\"1\"\n />\n <FontControl\n v-model=\"fontsLocal.input\"\n name=\"input\"\n :label=\"$t('settings.style.fonts.components.input')\"\n :fallback=\"previewTheme.fonts.input\"\n />\n <FontControl\n v-model=\"fontsLocal.post\"\n name=\"post\"\n :label=\"$t('settings.style.fonts.components.post')\"\n :fallback=\"previewTheme.fonts.post\"\n />\n <FontControl\n v-model=\"fontsLocal.postCode\"\n name=\"postCode\"\n :label=\"$t('settings.style.fonts.components.postCode')\"\n :fallback=\"previewTheme.fonts.postCode\"\n />\n </div>\n </tab-switcher>\n </keep-alive>\n\n <teleport\n v-if=\"isActive\"\n to=\"#unscrolled-content\"\n >\n <div class=\"apply-container\">\n <button\n class=\"btn button-default submit\"\n :disabled=\"!themeValid\"\n @click=\"setCustomTheme\"\n >\n {{ $t('general.apply') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"clearAll\"\n >\n {{ $t('settings.style.switcher.reset') }}\n </button>\n </div>\n </teleport>\n </div>\n</template>\n\n<script src=\"./theme_tab.js\"></script>\n\n<style src=\"./theme_tab.scss\" lang=\"scss\"></style>\n","<template>\n <div\n class=\"color-input style-control\"\n :class=\"{ disabled: !present || disabled }\"\n >\n <label\n :for=\"name\"\n class=\"label\"\n >\n {{ label }}\n </label>\n <Checkbox\n v-if=\"typeof fallback !== 'undefined' && showOptionalTickbox\"\n :model-value=\"present\"\n :disabled=\"disabled\"\n class=\"opt\"\n @update:modelValue=\"$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)\"\n />\n <div class=\"input color-input-field\">\n <input\n :id=\"name + '-t'\"\n class=\"textColor unstyled\"\n type=\"text\"\n :value=\"modelValue || fallback\"\n :disabled=\"!present || disabled\"\n @input=\"$emit('update:modelValue', $event.target.value)\"\n >\n <input\n v-if=\"validColor\"\n :id=\"name\"\n class=\"nativeColor unstyled\"\n type=\"color\"\n :value=\"modelValue || fallback\"\n :disabled=\"!present || disabled\"\n @input=\"$emit('update:modelValue', $event.target.value)\"\n >\n <div\n v-if=\"transparentColor\"\n class=\"transparentIndicator\"\n />\n <div\n v-if=\"computedColor\"\n class=\"computedIndicator\"\n :style=\"{backgroundColor: fallback}\"\n />\n </div>\n </div>\n</template>\n<script>\nimport Checkbox from '../checkbox/checkbox.vue'\nimport { hex2rgb } from '../../services/color_convert/color_convert.js'\nexport default {\n components: {\n Checkbox\n },\n props: {\n // Name of color, used for identifying\n name: {\n required: true,\n type: String\n },\n // Readable label\n label: {\n required: true,\n type: String\n },\n // Color value, should be required but vue cannot tell the difference\n // between \"property missing\" and \"property set to undefined\"\n modelValue: {\n required: false,\n type: String,\n default: undefined\n },\n // Color fallback to use when value is not defeind\n fallback: {\n required: false,\n type: String,\n default: undefined\n },\n // Disable the control\n disabled: {\n required: false,\n type: Boolean,\n default: false\n },\n // Show \"optional\" tickbox, for when value might become mandatory\n showOptionalTickbox: {\n required: false,\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue'],\n computed: {\n present () {\n return typeof this.modelValue !== 'undefined'\n },\n validColor () {\n return hex2rgb(this.modelValue || this.fallback)\n },\n transparentColor () {\n return this.modelValue === 'transparent'\n },\n computedColor () {\n return this.modelValue && this.modelValue.startsWith('--')\n }\n }\n}\n</script>\n<style lang=\"scss\" src=\"./color_input.scss\"></style>\n\n<style lang=\"scss\">\n.color-control {\n input.text-input {\n max-width: 7em;\n flex: 1;\n }\n}\n</style>\n","import { render } from \"./color_input.vue?vue&type=template&id=a9be5fb8\"\nimport script from \"./color_input.vue?vue&type=script&lang=js\"\nexport * from \"./color_input.vue?vue&type=script&lang=js\"\n\nimport \"./color_input.scss?vue&type=style&index=0&lang=scss\"\nimport \"./color_input.vue?vue&type=style&index=1&id=a9be5fb8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"range-control style-control\"\n :class=\"{ disabled: !present || disabled }\"\n >\n <label\n :id=\"name + '-label'\"\n :for=\"name\"\n class=\"label\"\n >\n {{ label }}\n </label>\n <input\n v-if=\"typeof fallback !== 'undefined'\"\n :id=\"name + '-o'\"\n :aria-labelledby=\"name + '-label'\"\n class=\"opt visible-for-screenreader-only\"\n type=\"checkbox\"\n :checked=\"present\"\n @change=\"$emit('update:modelValue', !present ? fallback : undefined)\"\n >\n <label\n v-if=\"typeof fallback !== 'undefined'\"\n class=\"opt-l\"\n :for=\"name + '-o'\"\n :aria-hidden=\"true\"\n />\n <input\n :id=\"name\"\n class=\"input-number\"\n type=\"range\"\n :value=\"modelValue || fallback\"\n :disabled=\"!present || disabled\"\n :max=\"max || hardMax || 100\"\n :min=\"min || hardMin || 0\"\n :step=\"step || 1\"\n @input=\"$emit('update:modelValue', $event.target.value)\"\n >\n <input\n :id=\"name + '-numeric'\"\n class=\"input-number\"\n type=\"number\"\n :aria-labelledby=\"name + '-label'\"\n :value=\"modelValue || fallback\"\n :disabled=\"!present || disabled\"\n :max=\"hardMax\"\n :min=\"hardMin\"\n :step=\"step || 1\"\n @input=\"$emit('update:modelValue', $event.target.value)\"\n >\n </div>\n</template>\n\n<script>\nexport default {\n props: [\n 'name', 'modelValue', 'fallback', 'disabled', 'label', 'max', 'min', 'step', 'hardMin', 'hardMax'\n ],\n emits: ['update:modelValue'],\n computed: {\n present () {\n return typeof this.modelValue !== 'undefined'\n }\n }\n}\n</script>\n","import { render } from \"./range_input.vue?vue&type=template&id=60085ed6\"\nimport script from \"./range_input.vue?vue&type=script&lang=js\"\nexport * from \"./range_input.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"opacity-control style-control\"\n :class=\"{ disabled: !present || disabled }\"\n >\n <label\n :for=\"name\"\n class=\"label\"\n >\n {{ $t('settings.style.common.opacity') }}\n </label>\n <Checkbox\n v-if=\"typeof fallback !== 'undefined'\"\n :model-value=\"present\"\n :disabled=\"disabled\"\n class=\"opt\"\n @update:modelValue=\"$emit('update:modelValue', !present ? fallback : undefined)\"\n />\n <input\n :id=\"name\"\n class=\"input-number\"\n type=\"number\"\n :value=\"modelValue || fallback\"\n :disabled=\"!present || disabled\"\n max=\"1\"\n min=\"0\"\n step=\".05\"\n @input=\"$emit('update:modelValue', $event.target.value)\"\n >\n </div>\n</template>\n\n<script>\nimport Checkbox from '../checkbox/checkbox.vue'\nexport default {\n components: {\n Checkbox\n },\n props: [\n 'name', 'modelValue', 'fallback', 'disabled'\n ],\n emits: ['update:modelValue'],\n computed: {\n present () {\n return typeof this.modelValue !== 'undefined'\n }\n }\n}\n</script>\n","import { render } from \"./opacity_input.vue?vue&type=template&id=69949f84\"\nimport script from \"./opacity_input.vue?vue&type=script&lang=js\"\nexport * from \"./opacity_input.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"shadow-control\"\n :class=\"{ disabled: !present }\"\n >\n <div class=\"shadow-preview-container\">\n <div\n :disabled=\"!present\"\n class=\"y-shift-control\"\n >\n <input\n v-model=\"selected.y\"\n :disabled=\"!present\"\n class=\"input-number\"\n type=\"number\"\n >\n <div class=\"wrap\">\n <input\n v-model=\"selected.y\"\n :disabled=\"!present\"\n class=\"input-range\"\n type=\"range\"\n max=\"20\"\n min=\"-20\"\n >\n </div>\n </div>\n <div class=\"preview-window\">\n <div\n class=\"preview-block\"\n :style=\"style\"\n />\n </div>\n <div\n :disabled=\"!present\"\n class=\"x-shift-control\"\n >\n <input\n v-model=\"selected.x\"\n :disabled=\"!present\"\n class=\"input-number\"\n type=\"number\"\n >\n <div class=\"wrap\">\n <input\n v-model=\"selected.x\"\n :disabled=\"!present\"\n class=\"input-range\"\n type=\"range\"\n max=\"20\"\n min=\"-20\"\n >\n </div>\n </div>\n </div>\n\n <div class=\"shadow-tweak\">\n <div\n :disabled=\"usingFallback\"\n class=\"id-control style-control\"\n >\n <Select\n id=\"shadow-switcher\"\n v-model=\"selectedId\"\n class=\"shadow-switcher\"\n :disabled=\"!ready || usingFallback\"\n >\n <option\n v-for=\"(shadow, index) in cValue\"\n :key=\"index\"\n :value=\"index\"\n >\n {{ $t('settings.style.shadows.shadow_id', { value: index }) }}\n </option>\n </Select>\n <button\n class=\"btn button-default\"\n :disabled=\"!ready || !present\"\n @click=\"del\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n />\n </button>\n <button\n class=\"btn button-default\"\n :disabled=\"!moveUpValid\"\n @click=\"moveUp\"\n >\n <FAIcon\n fixed-width\n icon=\"chevron-up\"\n />\n </button>\n <button\n class=\"btn button-default\"\n :disabled=\"!moveDnValid\"\n @click=\"moveDn\"\n >\n <FAIcon\n fixed-width\n icon=\"chevron-down\"\n />\n </button>\n <button\n class=\"btn button-default\"\n :disabled=\"usingFallback\"\n @click=\"add\"\n >\n <FAIcon\n fixed-width\n icon=\"plus\"\n />\n </button>\n </div>\n <div\n :disabled=\"!present\"\n class=\"inset-control style-control\"\n >\n <label\n for=\"inset\"\n class=\"label\"\n >\n {{ $t('settings.style.shadows.inset') }}\n </label>\n <input\n id=\"inset\"\n v-model=\"selected.inset\"\n :disabled=\"!present\"\n name=\"inset\"\n class=\"input-inset visible-for-screenreader-only\"\n type=\"checkbox\"\n >\n <label\n class=\"checkbox-label\"\n for=\"inset\"\n :aria-hidden=\"true\"\n />\n </div>\n <div\n :disabled=\"!present\"\n class=\"blur-control style-control\"\n >\n <label\n for=\"spread\"\n class=\"label\"\n >\n {{ $t('settings.style.shadows.blur') }}\n </label>\n <input\n id=\"blur\"\n v-model=\"selected.blur\"\n :disabled=\"!present\"\n name=\"blur\"\n class=\"input-range\"\n type=\"range\"\n max=\"20\"\n min=\"0\"\n >\n <input\n v-model=\"selected.blur\"\n :disabled=\"!present\"\n class=\"input-number\"\n type=\"number\"\n min=\"0\"\n >\n </div>\n <div\n :disabled=\"!present\"\n class=\"spread-control style-control\"\n >\n <label\n for=\"spread\"\n class=\"label\"\n >\n {{ $t('settings.style.shadows.spread') }}\n </label>\n <input\n id=\"spread\"\n v-model=\"selected.spread\"\n :disabled=\"!present\"\n name=\"spread\"\n class=\"input-range\"\n type=\"range\"\n max=\"20\"\n min=\"-20\"\n >\n <input\n v-model=\"selected.spread\"\n :disabled=\"!present\"\n class=\"input-number\"\n type=\"number\"\n >\n </div>\n <ColorInput\n v-model=\"selected.color\"\n :disabled=\"!present\"\n :label=\"$t('settings.style.common.color')\"\n :fallback=\"currentFallback.color\"\n :show-optional-tickbox=\"false\"\n name=\"shadow\"\n />\n <OpacityInput\n v-model=\"selected.alpha\"\n :disabled=\"!present\"\n />\n <i18n-t\n scope=\"global\"\n keypath=\"settings.style.shadows.hintV3\"\n tag=\"p\"\n >\n <code>--variable,mod</code>\n </i18n-t>\n </div>\n </div>\n</template>\n\n<script src=\"./shadow_control.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.shadow-control {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n margin-bottom: 1em;\n\n .shadow-preview-container,\n .shadow-tweak {\n margin: 5px 6px 0 0;\n }\n\n .shadow-preview-container {\n flex: 0;\n display: flex;\n flex-wrap: wrap;\n\n $side: 15em;\n\n input[type=\"number\"] {\n width: 5em;\n min-width: 2em;\n }\n\n .x-shift-control,\n .y-shift-control {\n display: flex;\n flex: 0;\n\n &[disabled=\"disabled\"] * {\n opacity: 0.5;\n }\n }\n\n .x-shift-control {\n align-items: flex-start;\n }\n\n .x-shift-control .wrap,\n input[type=\"range\"] {\n margin: 0;\n width: $side;\n height: 2em;\n }\n\n .y-shift-control {\n flex-direction: column;\n align-items: flex-end;\n\n .wrap {\n width: 2em;\n height: $side;\n }\n\n input[type=\"range\"] {\n transform-origin: 1em 1em;\n transform: rotate(90deg);\n }\n }\n\n .preview-window {\n flex: 1;\n background-color: #999;\n display: flex;\n align-items: center;\n justify-content: center;\n background-image:\n linear-gradient(45deg, #666 25%, transparent 25%),\n linear-gradient(-45deg, #666 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, #666 75%),\n linear-gradient(-45deg, transparent 75%, #666 75%);\n background-size: 20px 20px;\n background-position: 0 0, 0 10px, 10px -10px, -10px 0;\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .preview-block {\n width: 33%;\n height: 33%;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n }\n\n .shadow-tweak {\n flex: 1;\n min-width: 280px;\n\n .id-control {\n align-items: stretch;\n\n .shadow-switcher {\n flex: 1;\n }\n\n .shadow-switcher,\n .btn {\n min-width: 1px;\n margin-right: 5px;\n }\n\n .btn {\n padding: 0 0.4em;\n margin: 0 0.1em;\n }\n }\n }\n}\n</style>\n","import ColorInput from '../color_input/color_input.vue'\nimport OpacityInput from '../opacity_input/opacity_input.vue'\nimport Select from '../select/select.vue'\nimport { getCssShadow } from '../../services/style_setter/style_setter.js'\nimport { hex2rgb } from '../../services/color_convert/color_convert.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faChevronDown,\n faChevronUp,\n faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronDown,\n faChevronUp,\n faTimes,\n faPlus\n)\n\nconst toModel = (object = {}) => ({\n x: 0,\n y: 0,\n blur: 0,\n spread: 0,\n inset: false,\n color: '#000000',\n alpha: 1,\n ...object\n})\n\nexport default {\n // 'modelValue' and 'Fallback' can be undefined, but if they are\n // initially vue won't detect it when they become something else\n // therefore i'm using \"ready\" which should be passed as true when\n // data becomes available\n props: [\n 'modelValue', 'fallback', 'ready'\n ],\n emits: ['update:modelValue'],\n data () {\n return {\n selectedId: 0,\n // TODO there are some bugs regarding display of array (it's not getting updated when deleting for some reason)\n cValue: (this.modelValue || this.fallback || []).map(toModel)\n }\n },\n components: {\n ColorInput,\n OpacityInput,\n Select\n },\n methods: {\n add () {\n this.cValue.push(toModel(this.selected))\n this.selectedId = this.cValue.length - 1\n },\n del () {\n this.cValue.splice(this.selectedId, 1)\n this.selectedId = this.cValue.length === 0 ? undefined : Math.max(this.selectedId - 1, 0)\n },\n moveUp () {\n const movable = this.cValue.splice(this.selectedId, 1)[0]\n this.cValue.splice(this.selectedId - 1, 0, movable)\n this.selectedId -= 1\n },\n moveDn () {\n const movable = this.cValue.splice(this.selectedId, 1)[0]\n this.cValue.splice(this.selectedId + 1, 0, movable)\n this.selectedId += 1\n }\n },\n beforeUpdate () {\n this.cValue = this.modelValue || this.fallback\n },\n computed: {\n anyShadows () {\n return this.cValue.length > 0\n },\n anyShadowsFallback () {\n return this.fallback.length > 0\n },\n selected () {\n if (this.ready && this.anyShadows) {\n return this.cValue[this.selectedId]\n } else {\n return toModel({})\n }\n },\n currentFallback () {\n if (this.ready && this.anyShadowsFallback) {\n return this.fallback[this.selectedId]\n } else {\n return toModel({})\n }\n },\n moveUpValid () {\n return this.ready && this.selectedId > 0\n },\n moveDnValid () {\n return this.ready && this.selectedId < this.cValue.length - 1\n },\n present () {\n return this.ready &&\n typeof this.cValue[this.selectedId] !== 'undefined' &&\n !this.usingFallback\n },\n usingFallback () {\n return typeof this.modelValue === 'undefined'\n },\n rgb () {\n return hex2rgb(this.selected.color)\n },\n style () {\n return this.ready\n ? {\n boxShadow: getCssShadow(this.fallback)\n }\n : {}\n }\n }\n}\n","import { render } from \"./shadow_control.vue?vue&type=template&id=76aed00a\"\nimport script from \"./shadow_control.js?vue&type=script&lang=js\"\nexport * from \"./shadow_control.js?vue&type=script&lang=js\"\n\nimport \"./shadow_control.vue?vue&type=style&index=0&id=76aed00a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { set } from 'lodash'\nimport Select from '../select/select.vue'\n\nexport default {\n components: {\n Select\n },\n props: [\n 'name', 'label', 'modelValue', 'fallback', 'options', 'no-inherit'\n ],\n emits: ['update:modelValue'],\n data () {\n return {\n lValue: this.modelValue,\n availableOptions: [\n this.noInherit ? '' : 'inherit',\n 'custom',\n ...(this.options || []),\n 'serif',\n 'monospace',\n 'sans-serif'\n ].filter(_ => _)\n }\n },\n beforeUpdate () {\n this.lValue = this.modelValue\n },\n computed: {\n present () {\n return typeof this.lValue !== 'undefined'\n },\n dValue () {\n return this.lValue || this.fallback || {}\n },\n family: {\n get () {\n return this.dValue.family\n },\n set (v) {\n set(this.lValue, 'family', v)\n this.$emit('update:modelValue', this.lValue)\n }\n },\n isCustom () {\n return this.preset === 'custom'\n },\n preset: {\n get () {\n if (this.family === 'serif' ||\n this.family === 'sans-serif' ||\n this.family === 'monospace' ||\n this.family === 'inherit') {\n return this.family\n } else {\n return 'custom'\n }\n },\n set (v) {\n this.family = v === 'custom' ? '' : v\n }\n }\n }\n}\n","import { render } from \"./font_control.vue?vue&type=template&id=d3fd5e8e\"\nimport script from \"./font_control.js?vue&type=script&lang=js\"\nexport * from \"./font_control.js?vue&type=script&lang=js\"\n\nimport \"./font_control.vue?vue&type=style&index=0&id=d3fd5e8e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"font-control style-control\"\n :class=\"{ custom: isCustom }\"\n >\n <label\n :id=\"name + '-label'\"\n :for=\"preset === 'custom' ? name : name + '-font-switcher'\"\n class=\"label\"\n >\n {{ label }}\n </label>\n <input\n v-if=\"typeof fallback !== 'undefined'\"\n :id=\"name + '-o'\"\n :aria-labelledby=\"name + '-label'\"\n class=\"opt exlcude-disabled visible-for-screenreader-only\"\n type=\"checkbox\"\n :checked=\"present\"\n @change=\"$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)\"\n >\n <label\n v-if=\"typeof fallback !== 'undefined'\"\n class=\"opt-l\"\n :for=\"name + '-o'\"\n :aria-hidden=\"true\"\n />\n {{ ' ' }}\n <Select\n :id=\"name + '-font-switcher'\"\n v-model=\"preset\"\n :disabled=\"!present\"\n class=\"font-switcher\"\n >\n <option\n v-for=\"option in availableOptions\"\n :key=\"option\"\n :value=\"option\"\n >\n {{ option === 'custom' ? $t('settings.style.fonts.custom') : option }}\n </option>\n </Select>\n <input\n v-if=\"isCustom\"\n :id=\"name\"\n v-model=\"family\"\n class=\"custom-font\"\n type=\"text\"\n >\n </div>\n</template>\n\n<script src=\"./font_control.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.font-control {\n input.custom-font {\n min-width: 10em;\n }\n\n &.custom {\n /* TODO Should make proper joiners... */\n .font-switcher {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .custom-font {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n}\n</style>\n","<template>\n <span\n v-if=\"contrast\"\n class=\"contrast-ratio\"\n >\n <span\n :title=\"hint\"\n class=\"rating\"\n >\n <span v-if=\"contrast.aaa\">\n <FAIcon icon=\"thumbs-up\" />\n </span>\n <span v-if=\"!contrast.aaa && contrast.aa\">\n <FAIcon icon=\"adjust\" />\n </span>\n <span v-if=\"!contrast.aaa && !contrast.aa\">\n <FAIcon icon=\"exclamation-triangle\" />\n </span>\n </span>\n <span\n v-if=\"contrast && large\"\n class=\"rating\"\n :title=\"hint_18pt\"\n >\n <span v-if=\"contrast.laaa\">\n <FAIcon icon=\"thumbs-up\" />\n </span>\n <span v-if=\"!contrast.laaa && contrast.laa\">\n <FAIcon icon=\"adjust\" />\n </span>\n <span v-if=\"!contrast.laaa && !contrast.laa\">\n <FAIcon icon=\"exclamation-triangle\" />\n </span>\n </span>\n </span>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAdjust,\n faExclamationTriangle,\n faThumbsUp\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAdjust,\n faExclamationTriangle,\n faThumbsUp\n)\n\nexport default {\n props: {\n large: {\n required: false,\n type: Boolean,\n default: false\n },\n // TODO: Make theme switcher compute theme initially so that contrast\n // component won't be called without contrast data\n contrast: {\n required: false,\n type: Object,\n default: () => ({})\n }\n },\n computed: {\n hint () {\n const levelVal = this.contrast.aaa ? 'aaa' : (this.contrast.aa ? 'aa' : 'bad')\n const level = this.$t(`settings.style.common.contrast.level.${levelVal}`)\n const context = this.$t('settings.style.common.contrast.context.text')\n const ratio = this.contrast.text\n return this.$t('settings.style.common.contrast.hint', { level, context, ratio })\n },\n hint_18pt () {\n const levelVal = this.contrast.laaa ? 'aaa' : (this.contrast.laa ? 'aa' : 'bad')\n const level = this.$t(`settings.style.common.contrast.level.${levelVal}`)\n const context = this.$t('settings.style.common.contrast.context.18pt')\n const ratio = this.contrast.text\n return this.$t('settings.style.common.contrast.hint', { level, context, ratio })\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.contrast-ratio {\n display: flex;\n justify-content: flex-end;\n margin-top: -4px;\n margin-bottom: 5px;\n\n .label {\n margin-right: 1em;\n }\n\n .rating {\n display: inline-block;\n text-align: center;\n margin-left: 0.5em;\n }\n}\n</style>\n","import { render } from \"./contrast_ratio.vue?vue&type=template&id=1d1df7c6\"\nimport script from \"./contrast_ratio.vue?vue&type=script&lang=js\"\nexport * from \"./contrast_ratio.vue?vue&type=script&lang=js\"\n\nimport \"./contrast_ratio.vue?vue&type=style&index=0&id=1d1df7c6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"preview-container\">\n <div class=\"underlay underlay-preview\" />\n <div class=\"panel dummy\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('settings.style.preview.header') }}\n <span class=\"badge badge-notification\">\n 99\n </span>\n </div>\n <span class=\"faint\">\n {{ $t('settings.style.preview.header_faint') }}\n </span>\n <span class=\"alert error\">\n {{ $t('settings.style.preview.error') }}\n </span>\n <button class=\"btn button-default\">\n {{ $t('settings.style.preview.button') }}\n </button>\n </div>\n <div class=\"panel-body theme-preview-content\">\n <div class=\"post\">\n <div class=\"avatar still-image\">\n ( ͡° ͜ʖ ͡°)\n </div>\n <div class=\"content\">\n <h4>\n {{ $t('settings.style.preview.content') }}\n </h4>\n\n <i18n-t\n scope=\"global\"\n keypath=\"settings.style.preview.text\"\n >\n <code style=\"font-family: var(--postCodeFont);\">\n {{ $t('settings.style.preview.mono') }}\n </code>\n <a style=\"color: var(--link);\">\n {{ $t('settings.style.preview.link') }}\n </a>\n </i18n-t>\n\n <div class=\"icons\">\n <FAIcon\n fixed-width\n style=\"color: var(--cBlue);\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"reply\"\n />\n <FAIcon\n fixed-width\n style=\"color: var(--cGreen);\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"retweet\"\n />\n <FAIcon\n fixed-width\n style=\"color: var(--cOrange);\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"star\"\n />\n <FAIcon\n fixed-width\n style=\"color: var(--cRed);\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </div>\n </div>\n </div>\n\n <div class=\"after-post\">\n <div class=\"avatar-alt\">\n :^)\n </div>\n <div class=\"content\">\n <i18n-t\n keypath=\"settings.style.preview.fine_print\"\n tag=\"span\"\n class=\"faint\"\n scope=\"global\"\n >\n <a style=\"color: var(--faintLink);\">\n {{ $t('settings.style.preview.faint_link') }}\n </a>\n </i18n-t>\n </div>\n </div>\n <div class=\"separator\" />\n\n <span class=\"alert error\">\n {{ $t('settings.style.preview.error') }}\n </span>\n <input\n :value=\"$t('settings.style.preview.input')\"\n type=\"text\"\n >\n\n <div class=\"actions\">\n <span class=\"checkbox\">\n <input\n id=\"preview_checkbox\"\n checked=\"very yes\"\n type=\"checkbox\"\n >\n <label for=\"preview_checkbox\">{{ $t('settings.style.preview.checkbox') }}</label>\n </span>\n <button class=\"btn button-default\">\n {{ $t('settings.style.preview.button') }}\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faStar,\n faRetweet,\n faReply\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faStar,\n faRetweet,\n faReply\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n.preview-container {\n position: relative;\n}\n\n.underlay-preview {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 10px;\n right: 10px;\n}\n</style>\n","import { render } from \"./preview.vue?vue&type=template&id=5454116a\"\nimport script from \"./preview.vue?vue&type=script&lang=js\"\nexport * from \"./preview.vue?vue&type=script&lang=js\"\n\nimport \"./preview.vue?vue&type=style&index=0&id=5454116a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import {\n rgb2hex,\n hex2rgb,\n getContrastRatioLayers\n} from 'src/services/color_convert/color_convert.js'\nimport {\n DEFAULT_SHADOWS,\n generateColors,\n generateShadows,\n generateRadii,\n generateFonts,\n composePreset,\n getThemes,\n shadows2to3,\n colors2to3\n} from 'src/services/style_setter/style_setter.js'\nimport {\n newImporter,\n newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n SLOT_INHERITANCE\n} from 'src/services/theme_data/pleromafe.js'\nimport {\n CURRENT_VERSION,\n OPACITIES,\n getLayers,\n getOpacitySlot\n} from 'src/services/theme_data/theme_data.service.js'\nimport ColorInput from 'src/components/color_input/color_input.vue'\nimport RangeInput from 'src/components/range_input/range_input.vue'\nimport OpacityInput from 'src/components/opacity_input/opacity_input.vue'\nimport ShadowControl from 'src/components/shadow_control/shadow_control.vue'\nimport FontControl from 'src/components/font_control/font_control.vue'\nimport ContrastRatio from 'src/components/contrast_ratio/contrast_ratio.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport Select from 'src/components/select/select.vue'\n\nimport Preview from './preview.vue'\n\n// List of color values used in v1\nconst v1OnlyNames = [\n 'bg',\n 'fg',\n 'text',\n 'link',\n 'cRed',\n 'cGreen',\n 'cBlue',\n 'cOrange'\n].map(_ => _ + 'ColorLocal')\n\nconst colorConvert = (color) => {\n if (color.startsWith('--') || color === 'transparent') {\n return color\n } else {\n return hex2rgb(color)\n }\n}\n\nexport default {\n data () {\n return {\n themeImporter: newImporter({\n validator: this.importValidator,\n onImport: this.onImport,\n onImportFailure: this.onImportFailure\n }),\n themeExporter: newExporter({\n filename: 'pleroma_theme',\n getExportedObject: () => this.exportedTheme\n }),\n availableStyles: [],\n selected: '',\n selectedTheme: this.$store.getters.mergedConfig.theme,\n themeWarning: undefined,\n tempImportFile: undefined,\n engineVersion: 0,\n\n previewShadows: {},\n previewColors: {},\n previewRadii: {},\n previewFonts: {},\n\n shadowsInvalid: true,\n colorsInvalid: true,\n radiiInvalid: true,\n\n keepColor: false,\n keepShadows: false,\n keepOpacity: false,\n keepRoundness: false,\n keepFonts: false,\n\n ...Object.keys(SLOT_INHERITANCE)\n .map(key => [key, ''])\n .reduce((acc, [key, val]) => ({ ...acc, [key + 'ColorLocal']: val }), {}),\n\n ...Object.keys(OPACITIES)\n .map(key => [key, ''])\n .reduce((acc, [key, val]) => ({ ...acc, [key + 'OpacityLocal']: val }), {}),\n\n shadowSelected: undefined,\n shadowsLocal: {},\n fontsLocal: {},\n\n btnRadiusLocal: '',\n inputRadiusLocal: '',\n checkboxRadiusLocal: '',\n panelRadiusLocal: '',\n avatarRadiusLocal: '',\n avatarAltRadiusLocal: '',\n attachmentRadiusLocal: '',\n tooltipRadiusLocal: '',\n chatMessageRadiusLocal: ''\n }\n },\n created () {\n const self = this\n\n getThemes()\n .then((promises) => {\n return Promise.all(\n Object.entries(promises)\n .map(([k, v]) => v.then(res => [k, res]))\n )\n })\n .then(themes => themes.reduce((acc, [k, v]) => {\n if (v) {\n return {\n ...acc,\n [k]: v\n }\n } else {\n return acc\n }\n }, {}))\n .then((themesComplete) => {\n self.availableStyles = themesComplete\n })\n },\n mounted () {\n this.loadThemeFromLocalStorage()\n if (typeof this.shadowSelected === 'undefined') {\n this.shadowSelected = this.shadowsAvailable[0]\n }\n },\n computed: {\n themeWarningHelp () {\n if (!this.themeWarning) return\n const t = this.$t\n const pre = 'settings.style.switcher.help.'\n const {\n origin,\n themeEngineVersion,\n type,\n noActionsPossible\n } = this.themeWarning\n if (origin === 'file') {\n // Loaded v2 theme from file\n if (themeEngineVersion === 2 && type === 'wrong_version') {\n return t(pre + 'v2_imported')\n }\n if (themeEngineVersion > CURRENT_VERSION) {\n return t(pre + 'future_version_imported') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'snapshot_missing')\n : t(pre + 'snapshot_present')\n )\n }\n if (themeEngineVersion < CURRENT_VERSION) {\n return t(pre + 'future_version_imported') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'snapshot_missing')\n : t(pre + 'snapshot_present')\n )\n }\n } else if (origin === 'localStorage') {\n if (type === 'snapshot_source_mismatch') {\n return t(pre + 'snapshot_source_mismatch')\n }\n // FE upgraded from v2\n if (themeEngineVersion === 2) {\n return t(pre + 'upgraded_from_v2')\n }\n // Admin downgraded FE\n if (themeEngineVersion > CURRENT_VERSION) {\n return t(pre + 'fe_downgraded') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'migration_snapshot_ok')\n : t(pre + 'migration_snapshot_gone')\n )\n }\n // Admin upgraded FE\n if (themeEngineVersion < CURRENT_VERSION) {\n return t(pre + 'fe_upgraded') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'migration_snapshot_ok')\n : t(pre + 'migration_snapshot_gone')\n )\n }\n }\n },\n selectedVersion () {\n return Array.isArray(this.selectedTheme) ? 1 : 2\n },\n currentColors () {\n return Object.keys(SLOT_INHERITANCE)\n .map(key => [key, this[key + 'ColorLocal']])\n .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {})\n },\n currentOpacity () {\n return Object.keys(OPACITIES)\n .map(key => [key, this[key + 'OpacityLocal']])\n .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {})\n },\n currentRadii () {\n return {\n btn: this.btnRadiusLocal,\n input: this.inputRadiusLocal,\n checkbox: this.checkboxRadiusLocal,\n panel: this.panelRadiusLocal,\n avatar: this.avatarRadiusLocal,\n avatarAlt: this.avatarAltRadiusLocal,\n tooltip: this.tooltipRadiusLocal,\n attachment: this.attachmentRadiusLocal,\n chatMessage: this.chatMessageRadiusLocal\n }\n },\n preview () {\n return composePreset(this.previewColors, this.previewRadii, this.previewShadows, this.previewFonts)\n },\n previewTheme () {\n if (!this.preview.theme.colors) return { colors: {}, opacity: {}, radii: {}, shadows: {}, fonts: {} }\n return this.preview.theme\n },\n // This needs optimization maybe\n previewContrast () {\n try {\n if (!this.previewTheme.colors.bg) return {}\n const colors = this.previewTheme.colors\n const opacity = this.previewTheme.opacity\n if (!colors.bg) return {}\n const hints = (ratio) => ({\n text: ratio.toPrecision(3) + ':1',\n // AA level, AAA level\n aa: ratio >= 4.5,\n aaa: ratio >= 7,\n // same but for 18pt+ texts\n laa: ratio >= 3,\n laaa: ratio >= 4.5\n })\n const colorsConverted = Object.entries(colors).reduce((acc, [key, value]) => ({ ...acc, [key]: colorConvert(value) }), {})\n\n const ratios = Object.entries(SLOT_INHERITANCE).reduce((acc, [key, value]) => {\n const slotIsBaseText = key === 'text' || key === 'link'\n const slotIsText = slotIsBaseText || (\n typeof value === 'object' && value !== null && value.textColor\n )\n if (!slotIsText) return acc\n const { layer, variant } = slotIsBaseText ? { layer: 'bg' } : value\n const background = variant || layer\n const opacitySlot = getOpacitySlot(background)\n const textColors = [\n key,\n ...(background === 'bg' ? ['cRed', 'cGreen', 'cBlue', 'cOrange'] : [])\n ]\n\n const layers = getLayers(\n layer,\n variant || layer,\n opacitySlot,\n colorsConverted,\n opacity\n )\n\n // Temporary patch for null-y value errors\n if (layers.flat().some(v => v == null)) return acc\n\n return {\n ...acc,\n ...textColors.reduce((acc, textColorKey) => {\n const newKey = slotIsBaseText\n ? 'bg' + textColorKey[0].toUpperCase() + textColorKey.slice(1)\n : textColorKey\n return {\n ...acc,\n [newKey]: getContrastRatioLayers(\n colorsConverted[textColorKey],\n layers,\n colorsConverted[textColorKey]\n )\n }\n }, {})\n }\n }, {})\n\n return Object.entries(ratios).reduce((acc, [k, v]) => { acc[k] = hints(v); return acc }, {})\n } catch (e) {\n console.warn('Failure computing contrasts', e)\n return {}\n }\n },\n previewRules () {\n if (!this.preview.rules) return ''\n return [\n ...Object.values(this.preview.rules),\n 'color: var(--text)',\n 'font-family: var(--interfaceFont, sans-serif)'\n ].join(';')\n },\n shadowsAvailable () {\n return Object.keys(DEFAULT_SHADOWS).sort()\n },\n currentShadowOverriden: {\n get () {\n return !!this.currentShadow\n },\n set (val) {\n if (val) {\n this.shadowsLocal[this.shadowSelected] = this.currentShadowFallback.map(_ => Object.assign({}, _))\n } else {\n delete this.shadowsLocal[this.shadowSelected]\n }\n }\n },\n currentShadowFallback () {\n return (this.previewTheme.shadows || {})[this.shadowSelected]\n },\n currentShadow: {\n get () {\n return this.shadowsLocal[this.shadowSelected]\n },\n set (v) {\n this.shadowsLocal[this.shadowSelected] = v\n }\n },\n themeValid () {\n return !this.shadowsInvalid && !this.colorsInvalid && !this.radiiInvalid\n },\n exportedTheme () {\n const saveEverything = (\n !this.keepFonts &&\n !this.keepShadows &&\n !this.keepOpacity &&\n !this.keepRoundness &&\n !this.keepColor\n )\n\n const source = {\n themeEngineVersion: CURRENT_VERSION\n }\n\n if (this.keepFonts || saveEverything) {\n source.fonts = this.fontsLocal\n }\n if (this.keepShadows || saveEverything) {\n source.shadows = this.shadowsLocal\n }\n if (this.keepOpacity || saveEverything) {\n source.opacity = this.currentOpacity\n }\n if (this.keepColor || saveEverything) {\n source.colors = this.currentColors\n }\n if (this.keepRoundness || saveEverything) {\n source.radii = this.currentRadii\n }\n\n const theme = {\n themeEngineVersion: CURRENT_VERSION,\n ...this.previewTheme\n }\n\n return {\n // To separate from other random JSON files and possible future source formats\n _pleroma_theme_version: 2, theme, source\n }\n },\n isActive () {\n const tabSwitcher = this.$parent\n return tabSwitcher ? tabSwitcher.isActive('theme') : false\n }\n },\n components: {\n ColorInput,\n OpacityInput,\n RangeInput,\n ContrastRatio,\n ShadowControl,\n FontControl,\n TabSwitcher,\n Preview,\n Checkbox,\n Select\n },\n methods: {\n loadTheme (\n {\n theme,\n source,\n _pleroma_theme_version: fileVersion\n },\n origin,\n forceUseSource = false\n ) {\n this.dismissWarning()\n if (!source && !theme) {\n throw new Error('Can\\'t load theme: empty')\n }\n const version = (origin === 'localStorage' && !theme.colors)\n ? 'l1'\n : fileVersion\n const snapshotEngineVersion = (theme || {}).themeEngineVersion\n const themeEngineVersion = (source || {}).themeEngineVersion || 2\n const versionsMatch = themeEngineVersion === CURRENT_VERSION\n const sourceSnapshotMismatch = (\n theme !== undefined &&\n source !== undefined &&\n themeEngineVersion !== snapshotEngineVersion\n )\n // Force loading of source if user requested it or if snapshot\n // is unavailable\n const forcedSourceLoad = (source && forceUseSource) || !theme\n if (!(versionsMatch && !sourceSnapshotMismatch) &&\n !forcedSourceLoad &&\n version !== 'l1' &&\n origin !== 'defaults'\n ) {\n if (sourceSnapshotMismatch && origin === 'localStorage') {\n this.themeWarning = {\n origin,\n themeEngineVersion,\n type: 'snapshot_source_mismatch'\n }\n } else if (!theme) {\n this.themeWarning = {\n origin,\n noActionsPossible: true,\n themeEngineVersion,\n type: 'no_snapshot_old_version'\n }\n } else if (!versionsMatch) {\n this.themeWarning = {\n origin,\n noActionsPossible: !source,\n themeEngineVersion,\n type: 'wrong_version'\n }\n }\n }\n this.normalizeLocalState(theme, version, source, forcedSourceLoad)\n },\n forceLoadLocalStorage () {\n this.loadThemeFromLocalStorage(true)\n },\n dismissWarning () {\n this.themeWarning = undefined\n this.tempImportFile = undefined\n },\n forceLoad () {\n const { origin } = this.themeWarning\n switch (origin) {\n case 'localStorage':\n this.loadThemeFromLocalStorage(true)\n break\n case 'file':\n this.onImport(this.tempImportFile, true)\n break\n }\n this.dismissWarning()\n },\n forceSnapshot () {\n const { origin } = this.themeWarning\n switch (origin) {\n case 'localStorage':\n this.loadThemeFromLocalStorage(false, true)\n break\n case 'file':\n console.error('Forcing snapshot from file is not supported yet')\n break\n }\n this.dismissWarning()\n },\n loadThemeFromLocalStorage (confirmLoadSource = false, forceSnapshot = false) {\n const {\n customTheme: theme,\n customThemeSource: source\n } = this.$store.getters.mergedConfig\n if (!theme && !source) {\n // Anon user or never touched themes\n this.loadTheme(\n this.$store.state.instance.themeData,\n 'defaults',\n confirmLoadSource\n )\n } else {\n this.loadTheme(\n {\n theme,\n source: forceSnapshot ? theme : source\n },\n 'localStorage',\n confirmLoadSource\n )\n }\n },\n setCustomTheme () {\n this.$store.dispatch('setOption', {\n name: 'customTheme',\n value: {\n themeEngineVersion: CURRENT_VERSION,\n ...this.previewTheme\n }\n })\n this.$store.dispatch('setOption', {\n name: 'customThemeSource',\n value: {\n themeEngineVersion: CURRENT_VERSION,\n shadows: this.shadowsLocal,\n fonts: this.fontsLocal,\n opacity: this.currentOpacity,\n colors: this.currentColors,\n radii: this.currentRadii\n }\n })\n },\n updatePreviewColorsAndShadows () {\n this.previewColors = generateColors({\n opacity: this.currentOpacity,\n colors: this.currentColors\n })\n this.previewShadows = generateShadows(\n { shadows: this.shadowsLocal, opacity: this.previewTheme.opacity, themeEngineVersion: this.engineVersion },\n this.previewColors.theme.colors,\n this.previewColors.mod\n )\n },\n importTheme () { this.themeImporter.importData() },\n exportTheme () { this.themeExporter.exportData() },\n onImport (parsed, forceSource = false) {\n this.tempImportFile = parsed\n this.loadTheme(parsed, 'file', forceSource)\n },\n onImportFailure (result) {\n this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_theme_imported', level: 'error' })\n },\n importValidator (parsed) {\n const version = parsed._pleroma_theme_version\n return version >= 1 || version <= 2\n },\n clearAll () {\n this.loadThemeFromLocalStorage()\n },\n\n // Clears all the extra stuff when loading V1 theme\n clearV1 () {\n Object.keys(this.$data)\n .filter(_ => _.endsWith('ColorLocal') || _.endsWith('OpacityLocal'))\n .filter(_ => !v1OnlyNames.includes(_))\n .forEach(key => {\n this.$data[key] = undefined\n })\n },\n\n clearRoundness () {\n Object.keys(this.$data)\n .filter(_ => _.endsWith('RadiusLocal'))\n .forEach(key => {\n this.$data[key] = undefined\n })\n },\n\n clearOpacity () {\n Object.keys(this.$data)\n .filter(_ => _.endsWith('OpacityLocal'))\n .forEach(key => {\n this.$data[key] = undefined\n })\n },\n\n clearShadows () {\n this.shadowsLocal = {}\n },\n\n clearFonts () {\n this.fontsLocal = {}\n },\n\n /**\n * This applies stored theme data onto form. Supports three versions of data:\n * v3 (version >= 3) - newest version of themes which supports snapshots for better compatiblity\n * v2 (version = 2) - newer version of themes.\n * v1 (version = 1) - older version of themes (import from file)\n * v1l (version = l1) - older version of theme (load from local storage)\n * v1 and v1l differ because of way themes were stored/exported.\n * @param {Object} theme - theme data (snapshot)\n * @param {Number} version - version of data. 0 means try to guess based on data. \"l1\" means v1, locastorage type\n * @param {Object} source - theme source - this will be used if compatible\n * @param {Boolean} source - by default source won't be used if version doesn't match since it might render differently\n * this allows importing source anyway\n */\n normalizeLocalState (theme, version = 0, source, forceSource = false) {\n let input\n if (typeof source !== 'undefined') {\n if (forceSource || source.themeEngineVersion === CURRENT_VERSION) {\n input = source\n version = source.themeEngineVersion\n } else {\n input = theme\n }\n } else {\n input = theme\n }\n\n const radii = input.radii || input\n const opacity = input.opacity\n const shadows = input.shadows || {}\n const fonts = input.fonts || {}\n const colors = !input.themeEngineVersion\n ? colors2to3(input.colors || input)\n : input.colors || input\n\n if (version === 0) {\n if (input.version) version = input.version\n // Old v1 naming: fg is text, btn is foreground\n if (typeof colors.text === 'undefined' && typeof colors.fg !== 'undefined') {\n version = 1\n }\n // New v2 naming: text is text, fg is foreground\n if (typeof colors.text !== 'undefined' && typeof colors.fg !== 'undefined') {\n version = 2\n }\n }\n\n this.engineVersion = version\n\n // Stuff that differs between V1 and V2\n if (version === 1) {\n this.fgColorLocal = rgb2hex(colors.btn)\n this.textColorLocal = rgb2hex(colors.fg)\n }\n\n if (!this.keepColor) {\n this.clearV1()\n const keys = new Set(version !== 1 ? Object.keys(SLOT_INHERITANCE) : [])\n if (version === 1 || version === 'l1') {\n keys\n .add('bg')\n .add('link')\n .add('cRed')\n .add('cBlue')\n .add('cGreen')\n .add('cOrange')\n }\n\n keys.forEach(key => {\n const color = colors[key]\n const hex = rgb2hex(colors[key])\n this[key + 'ColorLocal'] = hex === '#aN' ? color : hex\n })\n }\n\n if (opacity && !this.keepOpacity) {\n this.clearOpacity()\n Object.entries(opacity).forEach(([k, v]) => {\n if (typeof v === 'undefined' || v === null || Number.isNaN(v)) return\n this[k + 'OpacityLocal'] = v\n })\n }\n\n if (!this.keepRoundness) {\n this.clearRoundness()\n Object.entries(radii).forEach(([k, v]) => {\n // 'Radius' is kept mostly for v1->v2 localstorage transition\n const key = k.endsWith('Radius') ? k.split('Radius')[0] : k\n this[key + 'RadiusLocal'] = v\n })\n }\n\n if (!this.keepShadows) {\n this.clearShadows()\n if (version === 2) {\n this.shadowsLocal = shadows2to3(shadows, this.previewTheme.opacity)\n } else {\n this.shadowsLocal = shadows\n }\n this.shadowSelected = this.shadowsAvailable[0]\n }\n\n if (!this.keepFonts) {\n this.clearFonts()\n this.fontsLocal = fonts\n }\n }\n },\n watch: {\n currentRadii () {\n try {\n this.previewRadii = generateRadii({ radii: this.currentRadii })\n this.radiiInvalid = false\n } catch (e) {\n this.radiiInvalid = true\n console.warn(e)\n }\n },\n shadowsLocal: {\n handler () {\n if (Object.getOwnPropertyNames(this.previewColors).length === 1) return\n try {\n this.updatePreviewColorsAndShadows()\n this.shadowsInvalid = false\n } catch (e) {\n this.shadowsInvalid = true\n console.warn(e)\n }\n },\n deep: true\n },\n fontsLocal: {\n handler () {\n try {\n this.previewFonts = generateFonts({ fonts: this.fontsLocal })\n this.fontsInvalid = false\n } catch (e) {\n this.fontsInvalid = true\n console.warn(e)\n }\n },\n deep: true\n },\n currentColors () {\n try {\n this.updatePreviewColorsAndShadows()\n this.colorsInvalid = false\n this.shadowsInvalid = false\n } catch (e) {\n this.colorsInvalid = true\n this.shadowsInvalid = true\n console.warn(e)\n }\n },\n currentOpacity () {\n try {\n this.updatePreviewColorsAndShadows()\n } catch (e) {\n console.warn(e)\n }\n },\n selected () {\n this.selectedTheme = Object.entries(this.availableStyles).find(([k, s]) => {\n if (Array.isArray(s)) {\n console.log(s[0] === this.selected, this.selected)\n return s[0] === this.selected\n } else {\n return s.name === this.selected\n }\n })[1]\n },\n selectedTheme () {\n this.dismissWarning()\n if (this.selectedVersion === 1) {\n if (!this.keepRoundness) {\n this.clearRoundness()\n }\n\n if (!this.keepShadows) {\n this.clearShadows()\n }\n\n if (!this.keepOpacity) {\n this.clearOpacity()\n }\n\n if (!this.keepColor) {\n this.clearV1()\n\n this.bgColorLocal = this.selectedTheme[1]\n this.fgColorLocal = this.selectedTheme[2]\n this.textColorLocal = this.selectedTheme[3]\n this.linkColorLocal = this.selectedTheme[4]\n this.cRedColorLocal = this.selectedTheme[5]\n this.cGreenColorLocal = this.selectedTheme[6]\n this.cBlueColorLocal = this.selectedTheme[7]\n this.cOrangeColorLocal = this.selectedTheme[8]\n }\n } else if (this.selectedVersion >= 2) {\n this.normalizeLocalState(this.selectedTheme.theme, 2, this.selectedTheme.source)\n }\n }\n }\n}\n","import { render } from \"./theme_tab.vue?vue&type=template&id=1128449a\"\nimport script from \"./theme_tab.js?vue&type=script&lang=js\"\nexport * from \"./theme_tab.js?vue&type=script&lang=js\"\n\nimport \"./theme_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nimport DataImportExportTab from './tabs/data_import_export_tab.vue'\nimport MutesAndBlocksTab from './tabs/mutes_and_blocks_tab.vue'\nimport NotificationsTab from './tabs/notifications_tab.vue'\nimport FilteringTab from './tabs/filtering_tab.vue'\nimport SecurityTab from './tabs/security_tab/security_tab.vue'\nimport ProfileTab from './tabs/profile_tab.vue'\nimport GeneralTab from './tabs/general_tab.vue'\nimport VersionTab from './tabs/version_tab.vue'\nimport ThemeTab from './tabs/theme_tab/theme_tab.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faWrench,\n faUser,\n faFilter,\n faPaintBrush,\n faBell,\n faDownload,\n faEyeSlash,\n faInfo\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faWrench,\n faUser,\n faFilter,\n faPaintBrush,\n faBell,\n faDownload,\n faEyeSlash,\n faInfo\n)\n\nconst SettingsModalContent = {\n components: {\n TabSwitcher,\n\n DataImportExportTab,\n MutesAndBlocksTab,\n NotificationsTab,\n FilteringTab,\n SecurityTab,\n ProfileTab,\n GeneralTab,\n VersionTab,\n ThemeTab\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n open () {\n return this.$store.state.interface.settingsModalState !== 'hidden'\n },\n bodyLock () {\n return this.$store.state.interface.settingsModalState === 'visible'\n }\n },\n methods: {\n onOpen () {\n const targetTab = this.$store.state.interface.settingsModalTargetTab\n // We're being told to open in specific tab\n if (targetTab) {\n const tabIndex = this.$refs.tabSwitcher.$slots.default().findIndex(elm => {\n return elm.props && elm.props['data-tab-name'] === targetTab\n })\n if (tabIndex >= 0) {\n this.$refs.tabSwitcher.setTab(tabIndex)\n }\n }\n // Clear the state of target tab, so that next time settings is opened\n // it doesn't force it.\n this.$store.dispatch('clearSettingsModalTargetTab')\n }\n },\n mounted () {\n this.onOpen()\n },\n watch: {\n open: function (value) {\n if (value) this.onOpen()\n }\n }\n}\n\nexport default SettingsModalContent\n","import { render } from \"./settings_modal_user_content.vue?vue&type=template&id=477a7dd4\"\nimport script from \"./settings_modal_user_content.js?vue&type=script&lang=js\"\nexport * from \"./settings_modal_user_content.js?vue&type=script&lang=js\"\n\nimport \"./settings_modal_user_content.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <tab-switcher\n ref=\"tabSwitcher\"\n class=\"settings_tab-switcher\"\n :side-tab-bar=\"true\"\n :scrollable-tabs=\"true\"\n :body-scroll-lock=\"bodyLock\"\n >\n <div\n :label=\"$t('settings.general')\"\n icon=\"wrench\"\n data-tab-name=\"general\"\n >\n <GeneralTab />\n </div>\n <div\n v-if=\"isLoggedIn\"\n :label=\"$t('settings.profile_tab')\"\n icon=\"user\"\n data-tab-name=\"profile\"\n >\n <ProfileTab />\n </div>\n <div\n v-if=\"isLoggedIn\"\n :label=\"$t('settings.security_tab')\"\n icon=\"lock\"\n data-tab-name=\"security\"\n >\n <SecurityTab />\n </div>\n <div\n :label=\"$t('settings.filtering')\"\n icon=\"filter\"\n data-tab-name=\"filtering\"\n >\n <FilteringTab />\n </div>\n <div\n :label=\"$t('settings.theme')\"\n icon=\"paint-brush\"\n data-tab-name=\"theme\"\n >\n <ThemeTab />\n </div>\n <div\n v-if=\"isLoggedIn\"\n :label=\"$t('settings.notifications')\"\n icon=\"bell\"\n data-tab-name=\"notifications\"\n >\n <NotificationsTab />\n </div>\n <div\n v-if=\"isLoggedIn\"\n :label=\"$t('settings.data_import_export_tab')\"\n icon=\"download\"\n data-tab-name=\"dataImportExport\"\n >\n <DataImportExportTab />\n </div>\n <div\n v-if=\"isLoggedIn\"\n :label=\"$t('settings.mutes_and_blocks')\"\n :fullHeight=\"true\"\n icon=\"eye-slash\"\n data-tab-name=\"mutesAndBlocks\"\n >\n <MutesAndBlocksTab />\n </div>\n <div\n :label=\"$t('settings.version.title')\"\n icon=\"info\"\n data-tab-name=\"version\"\n >\n <VersionTab />\n </div>\n </tab-switcher>\n</template>\n\n<script src=\"./settings_modal_user_content.js\"></script>\n\n<style src=\"./settings_modal_user_content.scss\" lang=\"scss\"></style>\n"],"names":["class","_createElementVNode","library","faCircleNotch","faTimes","props","submitHandler","type","Function","required","submitButtonLabel","String","successMessage","errorMessage","data","file","error","success","submitting","methods","change","this","$refs","input","files","submit","_this","dismiss","then","_createElementBlock","_hoisted_1","ref","onChange","_cache","_ctx","apply","arguments","_createBlock","_component_FAIcon","spin","icon","onClick","$t","_hoisted_2","_createVNode","_toDisplayString","_hoisted_3","getContent","filename","default","exportButtonLabel","processingMessage","processing","process","content","fileToDownload","document","createElement","setAttribute","encodeURIComponent","style","display","body","appendChild","click","removeChild","setTimeout","size","activeTab","newDomainToMute","listBackupsError","addBackupError","addedBackup","backups","created","$store","dispatch","fetchBackups","components","Importer","Exporter","Checkbox","computed","_objectSpread","mapState","backendInteractor","state","api","user","users","currentUser","getFollowsContent","exportFriends","id","generateExportableUsersContent","getBlocksContent","fetchBlocks","getMutesContent","fetchMutes","importFollows","status","Error","importBlocks","importMutes","map","is_local","screen_name","location","hostname","join","addBackup","res","_this2","listBackups","label","_component_Importer","_component_Exporter","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_Fragment","_renderList","backup","key","inserted_at","_hoisted_10","processed","target","href","url","_hoisted_11","_hoisted_12","$tc","processed_number","number","_hoisted_13","_hoisted_14","_hoisted_15","title","$event","_hoisted_17","_hoisted_18","query","filter","placeholder","term","timeout","results","resultsVisible","filtered","watch","val","fetchResults","clearTimeout","onInputClick","onClickOutside","length","item","_renderSlot","$slots","progress","getters","findUser","userId","relationship","blocked","blocking","BasicUserCard","unblockUser","blockUser","_component_basic_user_card","disabled","muted","muting","unmuteUser","muteUser","ProgressButton","domainMutes","includes","domain","unmuteDomain","muteDomain","_component_ProgressButton","_withCtx","List","items","Array","getKey","selected","allKeys","filteredSelected","indexOf","allSelected","noneSelected","someSelected","isSelected","toggle","checked","push","splice","toggleAll","value","slice","_component_Checkbox","indeterminate","_component_List","_ref","_normalizeClass","empty","fetch","select","_ref$childPropName","childPropName","_ref$additionalPropNa","additionalPropNames","BlockList","withLoadMore","get","destroy","SelectableList","MuteList","DomainMuteList","WrappedComponent","Object","keys","getComponentProps","v","concat","_toConsumableArray","loading","fetchedData","$props","refresh","isEmpty","fetchData","render","FAIcon","s","_defineProperty","children","prototype","toString","call","_isVNode","TabSwitcher","BlockCard","MuteCard","DomainMuteCard","Autosuggest","knownDomains","instance","activateTab","tabName","filterUnblockedUsers","userIds","reject","filterUnMutedUsers","queryUserIds","blockUsers","ids","unblockUsers","muteUsers","unmuteUsers","filterUnMutedDomains","urls","_this3","queryKnownDomains","_this4","Promise","resolve","toLowerCase","unmuteDomains","domains","_component_tab_switcher","_component_Autosuggest","row","_component_BlockCard","_component_BlockList","i","header","_ref2","_component_MuteCard","_component_MuteList","_ref3","_ref4","_component_DomainMuteCard","_component_DomainMuteList","_ref5","_ref6","notificationSettings","notification_settings","BooleanSetting","SharedComputedObject","updateNotificationSettings","settings","_component_BooleanSetting","source","path","expertLevel","expert","muteWordsStringLocal","mergedConfig","muteWords","replyVisibilityOptions","mode","ChoiceSetting","IntegerSetting","muteWordsString","set","debouncedSetMuteWords","_debounce","name","_filter","split","word","_trim","replyVisibility","_component_ChoiceSetting","options","_component_IntegerSetting","min","place","backupCodes","inProgress","codes","ready","displayTitle","code","confirm","$emit","cancel","currentPassword","deactivate","Confirm","isActivated","totp","doActivate","cancelDeactivate","doDeactivate","confirmDeactivate","mfaDisableOTP","password","available","enabled","setupState","setupOTPState","getNewCodes","otpSettings","provisioning_uri","otpConfirmToken","readyInit","RecoveryCodes","_component_confirm","onConfirm","onCancel","qrcode","VueQrcode","canSetupOTP","setupInProgress","backupCodesPrepared","setupOTPInProgress","completedOTP","prepareOTP","confirmOTP","confirmNewBackupCodes","activateOTP","fetchBackupCodes","generateMfaBackupCodes","getBackupCodes","confirmBackupCodes","cancelBackupCodes","setupOTP","mfaSetupOTP","doConfirmOTP","mfaConfirmOTP","token","completeSetup","fetchSettings","cancelSetup","_this5","_asyncToGenerator","_regeneratorRuntime","_callee","result","_context","prev","next","settingsMFA","sent","abrupt","stop","mounted","_this6","_component_totp_item","onDeactivate","onActivate","_component_recovery_codes","_component_qrcode","width","newEmail","changeEmailError","changeEmailPassword","changedEmail","deletingAccount","deleteAccountConfirmPasswordInput","deleteAccountError","changePasswordInputs","changedPassword","changePasswordError","moveAccountTarget","moveAccountPassword","movedAccount","moveAccountError","aliases","listAliasesError","addAliasTarget","addedAlias","addAliasError","fetchAliases","Mfa","pleromaBackend","oauthTokens","tokens","oauthToken","appName","app_name","validUntil","Date","valid_until","toLocaleDateString","localeService","$i18n","locale","confirmDelete","deleteAccount","$router","changePassword","params","newPassword","newPasswordConfirmation","logout","changeEmail","email","moveAccount","targetAccount","removeAlias","alias","deleteAlias","addAlias","_this7","_this8","listAliases","replace","revokeToken","window","t","autocomplete","_component_mfa","_hoisted_16","_component_i18n_t","keypath","tag","_hoisted_19","_hoisted_20","_hoisted_21","example","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","trigger","Element","cropperOptions","aspectRatio","autoCropArea","viewMode","movable","zoomable","guides","mimes","saveButtonLabel","saveWithoutCroppingButtonlabel","cancelButtonLabel","cropper","undefined","dataUrl","saveText","saveWithoutCroppingText","cancelText","cropping","pickImage","createCropper","Cropper","img","getTriggerDOM","_typeof","querySelector","readFile","fileInput","reader","FileReader","onload","e","readAsDataURL","addEventListener","beforeUnmount","removeEventListener","src","alt","onLoad","_withModifiers","accept","faPlus","ProfileTab","newName","name_unescaped","newBio","unescape","description","newLocked","locked","newBirthday","birthday","showBirthday","show_birthday","newFields","fields","field","showRole","show_role","role","bot","pickAvatarBtnVisible","bannerUploading","backgroundUploading","banner","bannerPreview","background","backgroundPreview","emailLanguage","language","ScopeSelector","ImageCropper","EmojiInput","InterfaceLanguageSwitcher","emojiUserSuggestor","suggestor","emoji","standardEmojiList","customEmoji","store","emojiSuggestor","userSuggestor","fieldsLimits","maxFields","defaultAvatar","server","defaultBanner","isDefaultAvatar","baseAvatar","profile_image_url","isDefaultBanner","baseBanner","cover_photo","isDefaultBackground","background_image","avatarImgSrc","profile_image_url_original","bannerImgSrc","updateProfile","note","display_name","fields_attributes","el","merge","commit","changeVis","visibility","newDefaultScope","addField","deleteField","index","event","uploadFile","slot","filesize","fileSizeFormatService","allowedsize","messageKey","messageArgs","num","filesizeunit","unit","allowedsizeunit","level","resetAvatar","submitAvatar","resetBanner","submitBanner","resetBackground","submitBackground","that","updateAvatar","avatar","avatarName","updateProfileImages","displayUploadError","getCroppedCanvas","toBlob","message","propsToNative","_component_EmojiInput","suggest","inputProps","_mergeProps","_","_component_interface_language_switcher","_component_image_cropper","onOpen","onClose","for","NumberSetting","_component_NumberSetting","_normalizeProps","_guardReactiveProps","$attrs","allCssUnits","defaultHorizontalUnits","Setting","Select","Number","units","stateUnit","stateValue","updateValue","configSink","parseInt","updateUnit","matchesExpertLevel","step","_component_Select","option","_component_ModifiedIndicator","changed","isChanged","onclick","reset","faGlobe","subjectLineOptions","conversationDisplayOptions","conversationOtherRepliesButtonOptions","mentionLinkDisplayOptions","thirdColumnModeOptions","userPopoverAvatarActionOptions","loopSilentAvailable","getOwnPropertyDescriptor","HTMLVideoElement","HTMLMediaElement","FloatSetting","SizeSetting","ProfileSettingIndicator","horizontalUnits","postFormats","postContentOptions","format","columns","thirdColumnMode","notif","sidebarRight","instanceSpecificPanelPresent","showInstanceSpecificPanel","instanceWallpaperUsed","instanceShoutboxPresent","shoutAvailable","interfaceLanguage","changeDefaultScope","column","_component_SizeSetting","conversationDisplay","_component_FloatSetting","_component_ProfileSettingIndicator","_component_ScopeSelector","profileConfig","defaultScope","backendVersion","frontendVersion","frontendVersionLink","backendVersionLink","matches","match","modelValue","fallback","Boolean","showOptionalTickbox","emits","present","validColor","hex2rgb","transparentColor","computedColor","startsWith","$options","onInput","_normalizeStyle","backgroundColor","max","hardMax","hardMin","faChevronDown","faChevronUp","toModel","object","x","y","blur","spread","inset","color","alpha","selectedId","cValue","ColorInput","OpacityInput","add","del","Math","moveUp","moveDn","beforeUpdate","anyShadows","anyShadowsFallback","currentFallback","moveUpValid","moveDnValid","usingFallback","rgb","boxShadow","getCssShadow","shadow","_component_ColorInput","_component_OpacityInput","scope","_hoisted_30","lValue","availableOptions","noInherit","dValue","family","_set","isCustom","preset","custom","faAdjust","faExclamationTriangle","faThumbsUp","large","contrast","hint","levelVal","aaa","aa","context","ratio","text","hint_18pt","laaa","laa","faStar","faRetweet","faReply","v1OnlyNames","themeImporter","newImporter","validator","importValidator","onImport","onImportFailure","themeExporter","newExporter","getExportedObject","exportedTheme","availableStyles","selectedTheme","theme","themeWarning","tempImportFile","engineVersion","previewShadows","previewColors","previewRadii","previewFonts","shadowsInvalid","colorsInvalid","radiiInvalid","keepColor","keepShadows","keepOpacity","keepRoundness","keepFonts","SLOT_INHERITANCE","reduce","acc","_slicedToArray","OPACITIES","shadowSelected","shadowsLocal","fontsLocal","btnRadiusLocal","inputRadiusLocal","checkboxRadiusLocal","panelRadiusLocal","avatarRadiusLocal","avatarAltRadiusLocal","attachmentRadiusLocal","tooltipRadiusLocal","chatMessageRadiusLocal","self","getThemes","promises","all","entries","k","themes","_ref7","_ref8","themesComplete","loadThemeFromLocalStorage","shadowsAvailable","themeWarningHelp","pre","_this$themeWarning","origin","themeEngineVersion","noActionsPossible","CURRENT_VERSION","selectedVersion","isArray","currentColors","_ref9","_ref10","currentOpacity","_ref11","_ref12","currentRadii","btn","checkbox","panel","avatarAlt","tooltip","attachment","chatMessage","preview","composePreset","previewTheme","colors","opacity","radii","shadows","fonts","previewContrast","bg","colorsConverted","_ref13","_ref14","ratios","_ref15","_ref16","slotIsBaseText","textColor","_ref17","layer","variant","opacitySlot","getOpacitySlot","textColors","layers","getLayers","flat","some","textColorKey","newKey","toUpperCase","getContrastRatioLayers","_ref18","_ref19","toPrecision","console","warn","previewRules","rules","values","DEFAULT_SHADOWS","sort","currentShadowOverriden","currentShadow","currentShadowFallback","assign","themeValid","saveEverything","_pleroma_theme_version","isActive","tabSwitcher","$parent","RangeInput","ContrastRatio","ShadowControl","FontControl","Preview","loadTheme","_ref20","fileVersion","forceUseSource","dismissWarning","version","snapshotEngineVersion","versionsMatch","sourceSnapshotMismatch","forcedSourceLoad","normalizeLocalState","forceLoadLocalStorage","forceLoad","forceSnapshot","confirmLoadSource","_this$$store$getters$","customTheme","customThemeSource","themeData","setCustomTheme","updatePreviewColorsAndShadows","generateColors","generateShadows","mod","importTheme","importData","exportTheme","exportData","parsed","forceSource","clearAll","clearV1","$data","endsWith","forEach","clearRoundness","clearOpacity","clearShadows","clearFonts","colors2to3","fg","fgColorLocal","rgb2hex","textColorLocal","Set","hex","_ref21","_ref22","isNaN","_ref23","_ref24","shadows2to3","generateRadii","handler","getOwnPropertyNames","deep","generateFonts","fontsInvalid","find","_ref25","_ref26","log","bgColorLocal","linkColorLocal","cRedColorLocal","cGreenColorLocal","cBlueColorLocal","cOrangeColorLocal","_component_preview","_KeepAlive","bgOpacityLocal","_component_ContrastRatio","bgText","accentColorLocal","link","accent","bgLink","fgTextColorLocal","fgText","fgLinkColorLocal","fgLink","bgCRed","bgCBlue","bgCGreen","bgCOrange","postLinkColorLocal","postLink","postGreentextColorLocal","cGreen","postGreentext","alertErrorColorLocal","alertError","alertErrorTextColorLocal","alertErrorText","alertWarningColorLocal","alertWarning","alertWarningTextColorLocal","alertWarningText","alertNeutralColorLocal","alertNeutral","alertNeutralTextColorLocal","alertNeutralText","alertOpacityLocal","alert","badgeNotificationColorLocal","badgeNotification","badgeNotificationTextColorLocal","badgeNotificationText","panelColorLocal","panelOpacityLocal","panelTextColorLocal","panelText","panelLinkColorLocal","panelLink","topBarColorLocal","topBar","topBarTextColorLocal","topBarText","topBarLinkColorLocal","topBarLink","_hoisted_31","inputColorLocal","inputOpacityLocal","inputTextColorLocal","inputText","_hoisted_32","btnColorLocal","btnOpacityLocal","btnTextColorLocal","btnText","btnPanelTextColorLocal","btnPanelText","btnTopBarTextColorLocal","btnTopBarText","btnPressedColorLocal","btnPressed","btnPressedTextColorLocal","btnPressedText","btnPressedPanelTextColorLocal","btnPressedPanelText","btnPressedTopBarTextColorLocal","btnPressedTopBarText","btnDisabledColorLocal","btnDisabled","btnDisabledTextColorLocal","btnDisabledText","btnDisabledPanelTextColorLocal","btnDisabledPanelText","btnDisabledTopBarTextColorLocal","btnDisabledTopBarText","btnToggledColorLocal","btnToggled","btnToggledTextColorLocal","btnToggledText","btnToggledPanelTextColorLocal","btnToggledPanelText","btnToggledTopBarTextColorLocal","btnToggledTopBarText","_hoisted_33","tabColorLocal","tab","tabTextColorLocal","tabText","tabActiveTextColorLocal","tabActiveText","_hoisted_34","borderColorLocal","border","borderOpacityLocal","_hoisted_35","faintColorLocal","faint","faintLinkColorLocal","faintLink","panelFaintColorLocal","panelFaint","faintOpacityLocal","_hoisted_36","underlayColorLocal","underlay","underlayOpacityLocal","_hoisted_37","wallpaperColorLocal","wallpaper","_hoisted_38","pollColorLocal","poll","pollTextColorLocal","pollText","_hoisted_39","iconColorLocal","_hoisted_40","highlightColorLocal","highlight","highlightTextColorLocal","highlightText","highlightLinkColorLocal","highlightLink","_hoisted_41","popoverColorLocal","popover","popoverOpacityLocal","popoverTextColorLocal","popoverText","popoverLinkColorLocal","popoverLink","_hoisted_42","selectedPostColorLocal","selectedPost","selectedPostTextColorLocal","selectedPostText","selectedPostLinkColorLocal","selectedPostLink","_hoisted_43","selectedMenuColorLocal","selectedMenu","selectedMenuTextColorLocal","selectedMenuText","selectedMenuLinkColorLocal","selectedMenuLink","_hoisted_44","chatBgColorLocal","chatMessageIncomingBgColorLocal","chatMessageIncomingTextColorLocal","chatMessageIncomingLinkColorLocal","chatMessageIncomingBorderColorLocal","chatMessageOutgoingBgColorLocal","chatMessageOutgoingTextColorLocal","chatMessageOutgoingLinkColorLocal","chatMessageOutgoingBorderColorLocal","_hoisted_46","_component_RangeInput","_hoisted_48","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_component_ShadowControl","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_61","_component_FontControl","post","postCode","_Teleport","to","_hoisted_62","_hoisted_63","faWrench","faUser","faFilter","faPaintBrush","faBell","faDownload","faEyeSlash","faInfo","DataImportExportTab","MutesAndBlocksTab","NotificationsTab","FilteringTab","SecurityTab","GeneralTab","VersionTab","ThemeTab","isLoggedIn","open","settingsModalState","bodyLock","targetTab","settingsModalTargetTab","tabIndex","findIndex","elm","setTab","_component_GeneralTab","_component_ProfileTab","_component_SecurityTab","_component_FilteringTab","_component_ThemeTab","_component_NotificationsTab","_component_DataImportExportTab","fullHeight","_component_MutesAndBlocksTab","_component_VersionTab"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/8859.c76b0a0c3a4b5acbef11.js b/priv/static/static/js/8859.c76b0a0c3a4b5acbef11.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[8859],{17135:(t,e,n)=>{n.r(e),n.d(e,{default:()=>oe});var a=n(66252),i=n(3577),r=["label"],l=["label"],o={class:"setting-item"},s={href:"https://docs-develop.pleroma.social/backend/configuration/howto_database_config/",target:"_blank"},c=(0,a._)("code",null,"config :pleroma, configurable_from_database",-1),d=(0,a._)("code",null,"true",-1),u=["label"],p=["label"],m=["label"],f=n(79354),h=["label"],_={class:"setting-item"},b={class:"setting-list"},g={key:0},w={class:"setting-item"},v={class:"setting-list"},y={class:"setting-list suboptions"},k={class:"setting-list suboptions"},O={class:"setting-list"},D={class:"setting-list suboptions"},S={key:0},j={class:"setting-list"},P={class:"setting-item"},$={class:"setting-list"},W={key:0},z={class:"setting-list"},Z={class:"setting-list"},C={class:"setting-list"},L={class:"setting-list"},q=n(4942),I=n(59236),M=n(77218),x=n(87449),U={key:0,class:"StringSetting"},E=["for"],A=["id","disabled","value"],B=n(7761);function F(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}const T=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?F(Object(n),!0).forEach((function(e){(0,q.Z)(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):F(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({},B.Z);var Y=n(83744);const H=(0,Y.Z)(T,[["render",function(t,e,n,r,l,o){var s=(0,a.up)("ModifiedIndicator"),c=(0,a.up)("ProfileSettingIndicator"),d=(0,a.up)("DraftButtons");return t.matchesExpertLevel?((0,a.wg)(),(0,a.iD)("label",U,[(0,a._)("label",{for:t.path,class:(0,i.C_)({faint:t.shouldBeDisabled})},[t.backendDescriptionLabel?((0,a.wg)(),(0,a.iD)(a.HY,{key:0},[(0,a.Uk)((0,i.zw)(t.backendDescriptionLabel+" "),1)],64)):"admin"===t.source?((0,a.wg)(),(0,a.iD)(a.HY,{key:1},[(0,a.Uk)(" MISSING LABEL FOR "+(0,i.zw)(t.path),1)],64)):(0,a.WI)(t.$slots,"default",{key:2})],10,E),(0,a._)("input",{id:t.path,class:"string-input",disabled:t.shouldBeDisabled,value:t.realDraftMode?t.draft:t.state,onChange:e[0]||(e[0]=function(){return t.update&&t.update.apply(t,arguments)})},null,40,A),(0,a.Uk)(" "+(0,i.zw)(" ")+" "),(0,a.Wm)(s,{changed:t.isChanged,onclick:t.reset},null,8,["changed","onclick"]),(0,a.Wm)(c,{"is-profile":t.isProfileSetting},null,8,["is-profile"]),(0,a.Wm)(d),t.backendDescriptionDescription?((0,a.wg)(),(0,a.iD)("p",{key:0,class:(0,i.C_)(["setting-description",{faint:t.shouldBeDisabled}])},(0,i.zw)(t.backendDescriptionDescription+" "),3)):(0,a.kq)("",!0)])):(0,a.kq)("",!0)}]]);var G={key:0,class:"GroupSetting"},K=n(18446),N=n.n(K);function R(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function V(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?R(Object(n),!0).forEach((function(e){(0,q.Z)(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):R(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}const X=V(V({},B.Z),{},{computed:V(V({},B.Z.computed),{},{isDirty:function(){return!N()(this.state,this.draft)}})}),J=(0,Y.Z)(X,[["render",function(t,e,n,i,r,l){var o=(0,a.up)("ModifiedIndicator"),s=(0,a.up)("ProfileSettingIndicator"),c=(0,a.up)("DraftButtons");return t.matchesExpertLevel?((0,a.wg)(),(0,a.iD)("span",G,[(0,a.Wm)(o,{changed:t.isChanged,onclick:t.reset},null,8,["changed","onclick"]),(0,a.Wm)(s,{"is-profile":t.isProfileSetting},null,8,["is-profile"]),(0,a.Wm)(c)])):(0,a.kq)("",!0)}]]);var Q=["for"],tt={class:"attachment-input"},et={class:"controls control-field"},nt={for:"path"},at=["id","disabled","value"],it={key:0},rt={class:"controls control-upload"},lt=n(58394),ot=n(37804),st=n(66596);function ct(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function dt(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ct(Object(n),!0).forEach((function(e){(0,q.Z)(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ct(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}const ut=dt(dt({},B.Z),{},{props:dt(dt({},B.Z.props),{},{compact:Boolean,acceptTypes:{type:String,required:!1,default:"image/*"}}),components:dt(dt({},B.Z.components),{},{MediaUpload:ot.Z,Attachment:st.Z}),computed:dt(dt({},B.Z.computed),{},{attachment:function(){var t=this.realDraftMode?this.draft:this.state,e=t.includes("://")?t:this.$store.state.instance.server+t;return{mimetype:(0,lt.iL)(e),url:e}}}),methods:dt(dt({},B.Z.methods),{},{setMediaFile:function(t){this.realDraftMode?this.draft=t.url:this.configSink(this.path,t.url)}})}),pt=(0,Y.Z)(ut,[["render",function(t,e,n,r,l,o){var s=(0,a.up)("ModifiedIndicator"),c=(0,a.up)("ProfileSettingIndicator"),d=(0,a.up)("Attachment"),u=(0,a.up)("MediaUpload"),p=(0,a.up)("DraftButtons");return t.matchesExpertLevel?((0,a.wg)(),(0,a.iD)("span",{key:0,class:(0,i.C_)(["AttachmentSetting",{"-compact":t.compact}])},[(0,a._)("label",{for:t.path,class:(0,i.C_)({faint:t.shouldBeDisabled})},[t.backendDescriptionLabel?((0,a.wg)(),(0,a.iD)(a.HY,{key:0},[(0,a.Uk)((0,i.zw)(t.backendDescriptionLabel+" "),1)],64)):"admin"===t.source?((0,a.wg)(),(0,a.iD)(a.HY,{key:1},[(0,a.Uk)(" MISSING LABEL FOR "+(0,i.zw)(t.path),1)],64)):(0,a.WI)(t.$slots,"default",{key:2})],10,Q),t.backendDescriptionDescription?((0,a.wg)(),(0,a.iD)("p",{key:0,class:(0,i.C_)(["setting-description",{faint:t.shouldBeDisabled}])},(0,i.zw)(t.backendDescriptionDescription+" "),3)):(0,a.kq)("",!0),(0,a._)("div",tt,[(0,a._)("div",et,[(0,a._)("label",nt,(0,i.zw)(t.$t("settings.url")),1),(0,a._)("input",{id:t.path,class:"string-input",disabled:t.shouldBeDisabled,value:t.realDraftMode?t.draft:t.state,onChange:e[0]||(e[0]=function(){return t.update&&t.update.apply(t,arguments)})},null,40,at),(0,a.Uk)(" "+(0,i.zw)(" ")+" "),(0,a.Wm)(s,{changed:t.isChanged,onclick:t.reset},null,8,["changed","onclick"]),(0,a.Wm)(c,{"is-profile":t.isProfileSetting},null,8,["is-profile"])]),t.compact?(0,a.kq)("",!0):((0,a.wg)(),(0,a.iD)("div",it,(0,i.zw)(t.$t("settings.preview")),1)),(0,a.Wm)(d,{class:"attachment",compact:t.compact,attachment:t.attachment,size:"small","hide-description":"",onSetMedia:t.onMedia,onNaturalSizeLoad:t.onNaturalSizeLoad},null,8,["compact","attachment","onSetMedia","onNaturalSizeLoad"]),(0,a._)("div",rt,[(0,a.Wm)(u,{ref:"mediaUpload",class:"media-upload-icon","drop-files":t.dropFiles,"normal-button":"","accept-types":t.acceptTypes,onUploaded:t.setMediaFile,onUploadFailed:t.uploadFailed},null,8,["drop-files","accept-types","onUploaded","onUploadFailed"])])]),(0,a.Wm)(p)],2)):(0,a.kq)("",!0)}]]);var mt=n(76875),ft=n(9382),ht=n(84131);function _t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}ft.vI.add(ht.g4A);const bt={provide:function(){return{defaultDraftMode:!0,defaultSource:"admin"}},components:{BooleanSetting:I.Z,ChoiceSetting:M.Z,IntegerSetting:x.Z,StringSetting:H,AttachmentSetting:pt,GroupSetting:J},computed:function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?_t(Object(n),!0).forEach((function(e){(0,q.Z)(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):_t(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({},(0,mt.Z)())},gt=(0,Y.Z)(bt,[["render",function(t,e,n,r,l,o){var s=(0,a.up)("StringSetting"),c=(0,a.up)("AttachmentSetting"),d=(0,a.up)("BooleanSetting"),u=(0,a.up)("IntegerSetting"),p=(0,a.up)("ChoiceSetting"),m=(0,a.up)("GroupSetting");return(0,a.wg)(),(0,a.iD)("div",{label:t.$t("admin_dash.tabs.instance")},[(0,a._)("div",_,[(0,a._)("h2",null,(0,i.zw)(t.$t("admin_dash.instance.instance")),1),(0,a._)("ul",b,[(0,a._)("li",null,[(0,a.Wm)(s,{path:":pleroma.:instance.:name"})]),void 0!==t.adminDraft[":pleroma"][":instance"][":favicon"]?((0,a.wg)(),(0,a.iD)("li",g,[(0,a.Wm)(c,{compact:"",path:":pleroma.:instance.:favicon"})])):(0,a.kq)("",!0),(0,a._)("li",null,[(0,a.Wm)(s,{path:":pleroma.:instance.:email"})]),(0,a._)("li",null,[(0,a.Wm)(s,{path:":pleroma.:instance.:description"})]),(0,a._)("li",null,[(0,a.Wm)(s,{path:":pleroma.:instance.:short_description"})]),(0,a._)("li",null,[(0,a.Wm)(c,{compact:"",path:":pleroma.:instance.:instance_thumbnail"})]),(0,a._)("li",null,[(0,a.Wm)(c,{path:":pleroma.:instance.:background_image"})])])]),(0,a._)("div",w,[(0,a._)("h2",null,(0,i.zw)(t.$t("admin_dash.instance.registrations")),1),(0,a._)("ul",v,[(0,a._)("li",null,[(0,a.Wm)(d,{path:":pleroma.:instance.:registrations_open"}),(0,a._)("ul",y,[(0,a._)("li",null,[(0,a.Wm)(d,{path:":pleroma.:instance.:invites_enabled","parent-path":":pleroma.:instance.:registrations_open","parent-invert":""})])])]),(0,a._)("li",null,[(0,a.Wm)(d,{path:":pleroma.:instance.:birthday_required"}),(0,a._)("ul",k,[(0,a._)("li",null,[(0,a.Wm)(u,{path:":pleroma.:instance.:birthday_min_age","parent-path":":pleroma.:instance.:birthday_required"})])])]),(0,a._)("li",null,[(0,a.Wm)(d,{path:":pleroma.:instance.:account_activation_required"})]),(0,a._)("li",null,[(0,a.Wm)(d,{path:":pleroma.:instance.:account_approval_required"})]),(0,a._)("li",null,[(0,a._)("h3",null,(0,i.zw)(t.$t("admin_dash.instance.captcha_header")),1),(0,a._)("ul",O,[(0,a._)("li",null,[(0,a.Wm)(d,{path:[":pleroma","Pleroma.Captcha",":enabled"]},null,8,["path"]),(0,a._)("ul",D,[(0,a._)("li",null,[(0,a.Wm)(p,{path:[":pleroma","Pleroma.Captcha",":method"],"parent-path":[":pleroma","Pleroma.Captcha",":enabled"],"option-label-map":{"Pleroma.Captcha.Native":t.$t("admin_dash.captcha.native"),"Pleroma.Captcha.Kocaptcha":t.$t("admin_dash.captcha.kocaptcha")}},null,8,["path","parent-path","option-label-map"]),(0,a.Wm)(u,{path:[":pleroma","Pleroma.Captcha",":seconds_valid"],"parent-path":[":pleroma","Pleroma.Captcha",":enabled"]},null,8,["path","parent-path"])]),t.adminDraft[":pleroma"]["Pleroma.Captcha"][":enabled"]&&"Pleroma.Captcha.Kocaptcha"===t.adminDraft[":pleroma"]["Pleroma.Captcha"][":method"]?((0,a.wg)(),(0,a.iD)("li",S,[(0,a._)("h4",null,(0,i.zw)(t.$t("admin_dash.instance.kocaptcha")),1),(0,a._)("ul",j,[(0,a._)("li",null,[(0,a.Wm)(s,{path:[":pleroma","Pleroma.Captcha.Kocaptcha",":endpoint"]},null,8,["path"])])])])):(0,a.kq)("",!0)])])])])])]),(0,a._)("div",P,[(0,a._)("h2",null,(0,i.zw)(t.$t("admin_dash.instance.access")),1),(0,a._)("ul",$,[(0,a._)("li",null,[(0,a.Wm)(d,{"override-backend-description":"","override-backend-description-label":"",path:":pleroma.:instance.:public"})]),(0,a._)("li",null,[(0,a.Wm)(p,{"override-backend-description":"","override-backend-description-label":"",path:":pleroma.:instance.:limit_to_local_content"})]),t.expertLevel?((0,a.wg)(),(0,a.iD)("li",W,[(0,a._)("h3",null,(0,i.zw)(t.$t("admin_dash.instance.restrict.header")),1),(0,a._)("p",null,(0,i.zw)(t.$t("admin_dash.instance.restrict.description")),1),(0,a._)("ul",z,[(0,a._)("li",null,[(0,a._)("h4",null,(0,i.zw)(t.$t("admin_dash.instance.restrict.timelines")),1),(0,a._)("ul",Z,[(0,a._)("li",null,[(0,a.Wm)(d,{path:":pleroma.:restrict_unauthenticated.:timelines.:local","indeterminate-state":":if_instance_is_private","swap-description-and-label":"","hide-description":""})]),(0,a._)("li",null,[(0,a.Wm)(d,{path:":pleroma.:restrict_unauthenticated.:timelines.:federated","indeterminate-state":":if_instance_is_private","swap-description-and-label":"","hide-description":""})]),(0,a._)("li",null,[(0,a.Wm)(m,{path:":pleroma.:restrict_unauthenticated.:timelines"})])])]),(0,a._)("li",null,[(0,a._)("h4",null,(0,i.zw)(t.$t("admin_dash.instance.restrict.profiles")),1),(0,a._)("ul",C,[(0,a._)("li",null,[(0,a.Wm)(d,{path:":pleroma.:restrict_unauthenticated.:profiles.:local","indeterminate-state":":if_instance_is_private","swap-description-and-label":"","hide-description":""})]),(0,a._)("li",null,[(0,a.Wm)(d,{path:":pleroma.:restrict_unauthenticated.:profiles.:remote","indeterminate-state":":if_instance_is_private","swap-description-and-label":"","hide-description":""})]),(0,a._)("li",null,[(0,a.Wm)(m,{path:":pleroma.:restrict_unauthenticated.:profiles"})])])]),(0,a._)("li",null,[(0,a._)("h4",null,(0,i.zw)(t.$t("admin_dash.instance.restrict.activities")),1),(0,a._)("ul",L,[(0,a._)("li",null,[(0,a.Wm)(d,{path:":pleroma.:restrict_unauthenticated.:activities.:local","indeterminate-state":":if_instance_is_private","swap-description-and-label":"","hide-description":""})]),(0,a._)("li",null,[(0,a.Wm)(d,{path:":pleroma.:restrict_unauthenticated.:activities.:remote","indeterminate-state":":if_instance_is_private","swap-description-and-label":"","hide-description":""})]),(0,a._)("li",null,[(0,a.Wm)(m,{path:":pleroma.:restrict_unauthenticated.:activities"})])])])])])):(0,a.kq)("",!0)])])],8,h)}]]);var wt=["label"],vt={class:"setting-item"},yt={class:"setting-list"},kt={class:"setting-list"},Ot={class:"setting-list"},Dt={class:"setting-list"},St={class:"setting-list"},jt={class:"setting-list"};function Pt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}ft.vI.add(ht.g4A);const $t={data:function(){},components:{BooleanSetting:I.Z,ChoiceSetting:M.Z,IntegerSetting:x.Z,StringSetting:H},computed:function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?Pt(Object(n),!0).forEach((function(e){(0,q.Z)(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):Pt(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({},(0,mt.Z)())},Wt=(0,Y.Z)($t,[["render",function(t,e,n,r,l,o){var s=(0,a.up)("IntegerSetting");return(0,a.wg)(),(0,a.iD)("div",{label:t.$t("admin_dash.tabs.limits")},[(0,a._)("div",vt,[(0,a._)("h2",null,(0,i.zw)(t.$t("admin_dash.limits.arbitrary_limits")),1),(0,a._)("ul",yt,[(0,a._)("li",null,[(0,a._)("h3",null,(0,i.zw)(t.$t("admin_dash.limits.posts")),1),(0,a._)("ul",kt,[(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:limit","draft-mode":""})]),(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:remote_limit",expert:"1","draft-mode":""})])])]),(0,a._)("li",null,[(0,a._)("h3",null,(0,i.zw)(t.$t("admin_dash.limits.uploads")),1),(0,a._)("ul",Ot,[(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:description_limit","draft-mode":""})]),(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:upload_limit","draft-mode":""})]),(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:max_media_attachments","draft-mode":""})])])]),(0,a._)("li",null,[(0,a._)("h3",null,(0,i.zw)(t.$t("admin_dash.limits.users")),1),(0,a._)("ul",Dt,[(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:max_pinned_statuses","draft-mode":""})]),(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:user_bio_length","draft-mode":""})]),(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:user_name_length","draft-mode":""})]),(0,a._)("li",null,[(0,a._)("h4",null,(0,i.zw)(t.$t("admin_dash.limits.profile_fields")),1),(0,a._)("ul",St,[(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:max_account_fields","draft-mode":""})]),(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:max_remote_account_fields","draft-mode":"",expert:"1"})]),(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:account_field_name_length","draft-mode":""})]),(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:account_field_value_length","draft-mode":""})])])]),(0,a._)("li",null,[(0,a._)("h4",null,(0,i.zw)(t.$t("admin_dash.limits.user_uploads")),1),(0,a._)("ul",jt,[(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:avatar_upload_limit","draft-mode":""})]),(0,a._)("li",null,[(0,a.Wm)(s,{source:"admin",path:":pleroma.:instance.:banner_upload_limit","draft-mode":""})])])])])])])])],8,wt)}]]);var zt=n(49963),Zt=["label"],Ct={class:"setting-item"},Lt={class:"setting-list"},qt={class:"setting-list"},It={class:"setting-list relative"},Mt={class:"cards-list"},xt={key:0},Ut=["href"],Et={key:1},At={key:2},Bt=["href"],Ft={class:"btn-group"},Tt=["onClick"],Yt={class:"dropdown-menu"},Ht=["onClick"],Gt=["title"],Kt={key:0,class:"btn-group"},Nt=["disabled","onClick"],Rt={class:"dropdown-menu"},Vt=["onClick"],Xt=["title"],Jt=n(15861),Qt=n(64687),te=n.n(Qt),ee=n(84535),ne=n(29187);function ae(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}ft.vI.add(ht.g4A);const ie={provide:function(){return{defaultDraftMode:!0,defaultSource:"admin"}},data:function(){return{working:!1}},components:{BooleanSetting:I.Z,ChoiceSetting:M.Z,IntegerSetting:x.Z,StringSetting:H,GroupSetting:J,PanelLoading:ne.Z,Popover:ee.default},created:function(){this.user.rights.admin&&this.$store.dispatch("loadFrontendsStuff")},computed:function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ae(Object(n),!0).forEach((function(e){(0,q.Z)(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ae(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({frontends:function(){return this.$store.state.adminSettings.frontends}},(0,mt.Z)()),methods:{canInstall:function(t){var e=this.frontends.find((function(e){return e.name===t.name}));return!!e&&e.refs.includes(t.ref)},getSuggestedRef:function(t){var e=this.adminDraft[":pleroma"][":frontends"][":primary"];return(null==e?void 0:e.name)===t.name&&this.canInstall(e)?e.ref:t.refs[0]},update:function(t,e){var n=this,a=e||this.getSuggestedRef(t),i=t.name,r={name:i,ref:a};this.working=!0,this.$store.state.api.backendInteractor.installFrontend({payload:r}).finally((function(){n.working=!1})).then(function(){var t=(0,Jt.Z)(te().mark((function t(e){var r;return te().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n.$store.dispatch("loadFrontendsStuff"),!e.error){t.next=8;break}return t.next=4,e.error.json();case 4:r=t.sent,n.$store.dispatch("pushGlobalNotice",{level:"error",messageKey:"admin_dash.frontend.failure_installing_frontend",messageArgs:{version:i+"/"+a,reason:r.error},timeout:5e3}),t.next=9;break;case 8:n.$store.dispatch("pushGlobalNotice",{level:"success",messageKey:"admin_dash.frontend.success_installing_frontend",messageArgs:{version:i+"/"+a},timeout:2e3});case 9:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())},setDefault:function(t,e){var n=e||this.getSuggestedRef(t),a=t.name;this.$store.commit("updateAdminDraft",{path:[":pleroma",":frontends",":primary"],value:{name:a,ref:n}})}}},re=(0,Y.Z)(ie,[["render",function(t,e,n,r,l,o){var s=(0,a.up)("StringSetting"),c=(0,a.up)("GroupSetting"),d=(0,a.up)("PanelLoading"),u=(0,a.up)("i18n-t"),p=(0,a.up)("FAIcon"),m=(0,a.up)("Popover");return(0,a.wg)(),(0,a.iD)("div",{class:"frontends-tab",label:t.$t("admin_dash.tabs.frontends")},[(0,a._)("div",Ct,[(0,a._)("h2",null,(0,i.zw)(t.$t("admin_dash.tabs.frontends")),1),(0,a._)("p",null,(0,i.zw)(t.$t("admin_dash.frontend.wip_notice")),1),(0,a._)("ul",Lt,[(0,a._)("li",null,[(0,a._)("h3",null,(0,i.zw)(t.$t("admin_dash.frontend.default_frontend")),1),(0,a._)("p",null,(0,i.zw)(t.$t("admin_dash.frontend.default_frontend_tip")),1),(0,a._)("ul",qt,[(0,a._)("li",null,[(0,a.Wm)(s,{path:":pleroma.:frontends.:primary.name"})]),(0,a._)("li",null,[(0,a.Wm)(s,{path:":pleroma.:frontends.:primary.ref"})]),(0,a._)("li",null,[(0,a.Wm)(c,{path:":pleroma.:frontends.:primary"})])])])]),(0,a._)("div",It,[t.working?((0,a.wg)(),(0,a.j4)(d,{key:0,class:"overlay"})):(0,a.kq)("",!0),(0,a._)("h3",null,(0,i.zw)(t.$t("admin_dash.frontend.available_frontends")),1),(0,a._)("ul",Mt,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(t.frontends,(function(e){var n,r,l,o;return(0,a.wg)(),(0,a.iD)("li",{key:e.name},[(0,a._)("strong",null,(0,i.zw)(e.name),1),(0,a.Uk)(" "+(0,i.zw)(" ")+" "),(null===(n=t.adminDraft[":pleroma"][":frontends"][":primary"])||void 0===n?void 0:n.name)===e.name?((0,a.wg)(),(0,a.iD)("span",xt,[(null===(r=t.adminDraft[":pleroma"][":frontends"][":primary"])||void 0===r?void 0:r.ref)===e.refs[0]?((0,a.wg)(),(0,a.j4)(u,{key:0,keypath:"admin_dash.frontend.is_default"})):((0,a.wg)(),(0,a.j4)(u,{key:1,keypath:"admin_dash.frontend.is_default_custom"},{version:(0,a.w5)((function(){return[(0,a._)("code",null,(0,i.zw)(t.adminDraft[":pleroma"][":frontends"][":primary"].ref),1)]})),_:1}))])):(0,a.kq)("",!0),(0,a._)("dl",null,[(0,a._)("dt",null,(0,i.zw)(t.$t("admin_dash.frontend.repository")),1),(0,a._)("dd",null,[(0,a._)("a",{href:e.git,target:"_blank"},(0,i.zw)(e.git),9,Ut)]),t.expertLevel?((0,a.wg)(),(0,a.iD)(a.HY,{key:0},[(0,a._)("dt",null,(0,i.zw)(t.$t("admin_dash.frontend.versions")),1),((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e.refs,(function(t){return(0,a.wg)(),(0,a.iD)("dd",{key:t},[(0,a._)("code",null,(0,i.zw)(t),1)])})),128))],64)):(0,a.kq)("",!0),t.expertLevel?((0,a.wg)(),(0,a.iD)("dt",Et,(0,i.zw)(t.$t("admin_dash.frontend.build_url")),1)):(0,a.kq)("",!0),t.expertLevel?((0,a.wg)(),(0,a.iD)("dd",At,[(0,a._)("a",{href:e.build_url,target:"_blank"},(0,i.zw)(e.build_url),9,Bt)])):(0,a.kq)("",!0)]),(0,a._)("div",null,[(0,a._)("span",Ft,[(0,a._)("button",{class:"button button-default btn",type:"button",onClick:function(n){return t.update(e)}},[(0,a.Uk)((0,i.zw)(e.installed?t.$t("admin_dash.frontend.reinstall"):t.$t("admin_dash.frontend.install"))+" ",1),(0,a._)("code",null,(0,i.zw)(t.getSuggestedRef(e)),1)],8,Tt),e.refs.length>1?((0,a.wg)(),(0,a.j4)(m,{key:0,trigger:"click",class:"button-dropdown",placement:"bottom"},{content:(0,a.w5)((function(n){var r=n.close;return[(0,a._)("div",Yt,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e.refs,(function(n){return(0,a.wg)(),(0,a.iD)("button",{key:n,class:"button-default dropdown-item",onClick:[(0,zt.iM)((function(a){return t.update(e,n)}),["prevent"]),r]},[(0,a.Wm)(u,{keypath:"admin_dash.frontend.install_version"},{version:(0,a.w5)((function(){return[(0,a._)("code",null,(0,i.zw)(n),1)]})),_:2},1024)],8,Ht)})),128))])]})),trigger:(0,a.w5)((function(){return[(0,a._)("button",{class:"button button-default btn dropdown-button",type:"button",title:t.$t("admin_dash.frontend.more_install_options")},[(0,a.Wm)(p,{icon:"chevron-down"})],8,Gt)]})),_:2},1024)):(0,a.kq)("",!0)]),e.installed&&"admin-fe"!==e.name?((0,a.wg)(),(0,a.iD)("span",Kt,[(0,a._)("button",{class:"button button-default btn",type:"button",disabled:(null===(l=t.adminDraft[":pleroma"][":frontends"][":primary"])||void 0===l?void 0:l.name)===e.name&&(null===(o=t.adminDraft[":pleroma"][":frontends"][":primary"])||void 0===o?void 0:o.ref)===e.refs[0],onClick:function(n){return t.setDefault(e)}},[(0,a.Uk)((0,i.zw)(t.$t("admin_dash.frontend.set_default"))+" ",1),(0,a._)("code",null,(0,i.zw)(t.getSuggestedRef(e)),1)],8,Nt),(0,a.Uk)(" "+(0,i.zw)(" ")+" "),e.refs.length>1?((0,a.wg)(),(0,a.j4)(m,{key:0,trigger:"click",class:"button-dropdown",placement:"bottom"},{content:(0,a.w5)((function(n){var r=n.close;return[(0,a._)("div",Rt,[((0,a.wg)(!0),(0,a.iD)(a.HY,null,(0,a.Ko)(e.installedRefs||e.refs,(function(n){return(0,a.wg)(),(0,a.iD)("button",{key:n,class:"button-default dropdown-item",onClick:[(0,zt.iM)((function(a){return t.setDefault(e,n)}),["prevent"]),r]},[(0,a.Wm)(u,{keypath:"admin_dash.frontend.set_default_version"},{version:(0,a.w5)((function(){return[(0,a._)("code",null,(0,i.zw)(n),1)]})),_:2},1024)],8,Vt)})),128))])]})),trigger:(0,a.w5)((function(){return[(0,a._)("button",{class:"button button-default btn dropdown-button",type:"button",title:t.$t("admin_dash.frontend.more_default_options")},[(0,a.Wm)(p,{icon:"chevron-down"})],8,Xt)]})),_:2},1024)):(0,a.kq)("",!0)])):(0,a.kq)("",!0)])])})),128))])])])],8,Zt)}]]);ft.vI.add(ht.klh,ht.ioV,ht.py1,ht.XsY,ht.qmU,ht.q7m,ht.Aq,ht.YHc);const le={components:{TabSwitcher:f.Z,InstanceTab:gt,LimitsTab:Wt,FrontendsTab:re},computed:{user:function(){return this.$store.state.users.currentUser},isLoggedIn:function(){return!!this.$store.state.users.currentUser},open:function(){return"hidden"!==this.$store.state.interface.settingsModalState},bodyLock:function(){return"visible"===this.$store.state.interface.settingsModalState},adminDbLoaded:function(){return this.$store.state.adminSettings.loaded},adminDescriptionsLoaded:function(){return null!==this.$store.state.adminSettings.descriptions},noDb:function(){return!1===this.$store.state.adminSettings.dbConfigEnabled}},created:function(){this.user.rights.admin&&this.$store.dispatch("loadAdminStuff")},methods:{onOpen:function(){var t=this.$store.state.interface.settingsModalTargetTab;if(t){var e=this.$refs.tabSwitcher.$slots.default().findIndex((function(e){return e.props&&e.props["data-tab-name"]===t}));e>=0&&this.$refs.tabSwitcher.setTab(e)}this.$store.dispatch("clearSettingsModalTargetTab")}},mounted:function(){this.onOpen()},watch:{open:function(t){t&&this.onOpen()}}},oe=(0,Y.Z)(le,[["render",function(t,e,n,f,h,_){var b=(0,a.up)("i18n-t"),g=(0,a.up)("InstanceTab"),w=(0,a.up)("LimitsTab"),v=(0,a.up)("FrontendsTab"),y=(0,a.up)("tab-switcher");return t.adminDescriptionsLoaded&&(t.noDb||t.adminDbLoaded)?((0,a.wg)(),(0,a.j4)(y,{key:0,ref:"tabSwitcher",class:"settings_tab-switcher","side-tab-bar":!0,"scrollable-tabs":!0,"render-only-focused":!0,"body-scroll-lock":t.bodyLock},{default:(0,a.w5)((function(){return[t.noDb?((0,a.wg)(),(0,a.iD)("div",{key:0,label:t.$t("admin_dash.tabs.nodb"),icon:"exclamation-triangle","data-tab-name":"nodb-notice"},[(0,a._)("div",{label:t.$t("admin_dash.tabs.nodb")},[(0,a._)("div",o,[(0,a._)("h2",null,(0,i.zw)(t.$t("admin_dash.nodb.heading")),1),(0,a.Wm)(b,{keypath:"admin_dash.nodb.text"},{documentation:(0,a.w5)((function(){return[(0,a._)("a",s,(0,i.zw)(t.$t("admin_dash.nodb.documentation")),1)]})),property:(0,a.w5)((function(){return[c]})),value:(0,a.w5)((function(){return[d]})),_:1}),(0,a._)("p",null,(0,i.zw)(t.$t("admin_dash.nodb.text2")),1)])],8,l)],8,r)):(0,a.kq)("",!0),t.adminDbLoaded?((0,a.wg)(),(0,a.iD)("div",{key:1,label:t.$t("admin_dash.tabs.instance"),icon:"wrench","data-tab-name":"general"},[(0,a.Wm)(g)],8,u)):(0,a.kq)("",!0),t.adminDbLoaded?((0,a.wg)(),(0,a.iD)("div",{key:2,label:t.$t("admin_dash.tabs.limits"),icon:"hand","data-tab-name":"limits"},[(0,a.Wm)(w)],8,p)):(0,a.kq)("",!0),(0,a._)("div",{label:t.$t("admin_dash.tabs.frontends"),icon:"laptop-code","data-tab-name":"frontends"},[(0,a.Wm)(v)],8,m)]})),_:1},8,["body-scroll-lock"])):(0,a.kq)("",!0)}]])}}]); +//# sourceMappingURL=8859.c76b0a0c3a4b5acbef11.js.map +\ No newline at end of file diff --git a/priv/static/static/js/8859.c76b0a0c3a4b5acbef11.js.map b/priv/static/static/js/8859.c76b0a0c3a4b5acbef11.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/8859.c76b0a0c3a4b5acbef11.js","mappings":"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","sources":["webpack://pleroma_fe/./src/components/settings_modal/settings_modal_admin_content.vue","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/instance_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/string_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/string_setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/string_setting.vue?3ee8","webpack://pleroma_fe/./src/components/settings_modal/helpers/group_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/group_setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/group_setting.vue?7ac1","webpack://pleroma_fe/./src/components/settings_modal/helpers/attachment_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/attachment_setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/attachment_setting.vue?5a3a","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/instance_tab.js","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/instance_tab.vue?14f3","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/limits_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/limits_tab.js","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/limits_tab.vue?14a2","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/frontends_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/frontends_tab.js","webpack://pleroma_fe/./src/components/settings_modal/admin_tabs/frontends_tab.vue?a9d3","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_admin_content.js","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_admin_content.vue?3247"],"sourcesContent":["<template>\n <tab-switcher\n v-if=\"adminDescriptionsLoaded && (noDb || adminDbLoaded)\"\n ref=\"tabSwitcher\"\n class=\"settings_tab-switcher\"\n :side-tab-bar=\"true\"\n :scrollable-tabs=\"true\"\n :render-only-focused=\"true\"\n :body-scroll-lock=\"bodyLock\"\n >\n <div\n v-if=\"noDb\"\n :label=\"$t('admin_dash.tabs.nodb')\"\n icon=\"exclamation-triangle\"\n data-tab-name=\"nodb-notice\"\n >\n <div :label=\"$t('admin_dash.tabs.nodb')\">\n <div class=\"setting-item\">\n <h2>{{ $t('admin_dash.nodb.heading') }}</h2>\n <i18n-t keypath=\"admin_dash.nodb.text\">\n <template #documentation>\n <a\n href=\"https://docs-develop.pleroma.social/backend/configuration/howto_database_config/\"\n target=\"_blank\"\n >\n {{ $t(\"admin_dash.nodb.documentation\") }}\n </a>\n </template>\n <template #property>\n <code>config :pleroma, configurable_from_database</code>\n </template>\n <template #value>\n <code>true</code>\n </template>\n </i18n-t>\n <p>{{ $t('admin_dash.nodb.text2') }}</p>\n </div>\n </div>\n </div>\n <div\n v-if=\"adminDbLoaded\"\n :label=\"$t('admin_dash.tabs.instance')\"\n icon=\"wrench\"\n data-tab-name=\"general\"\n >\n <InstanceTab />\n </div>\n <div\n v-if=\"adminDbLoaded\"\n :label=\"$t('admin_dash.tabs.limits')\"\n icon=\"hand\"\n data-tab-name=\"limits\"\n >\n <LimitsTab />\n </div>\n <div\n :label=\"$t('admin_dash.tabs.frontends')\"\n icon=\"laptop-code\"\n data-tab-name=\"frontends\"\n >\n <FrontendsTab />\n </div>\n </tab-switcher>\n</template>\n\n<script src=\"./settings_modal_admin_content.js\"></script>\n\n<style src=\"./settings_modal_admin_content.scss\" lang=\"scss\"></style>\n","<template>\n <div :label=\"$t('admin_dash.tabs.instance')\">\n <div class=\"setting-item\">\n <h2>{{ $t('admin_dash.instance.instance') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <StringSetting path=\":pleroma.:instance.:name\" />\n </li>\n <!-- See https://git.pleroma.social/pleroma/pleroma/-/merge_requests/3963 -->\n <li v-if=\"adminDraft[':pleroma'][':instance'][':favicon'] !== undefined\">\n <AttachmentSetting compact path=\":pleroma.:instance.:favicon\" />\n </li>\n <li>\n <StringSetting path=\":pleroma.:instance.:email\" />\n </li>\n <li>\n <StringSetting path=\":pleroma.:instance.:description\" />\n </li>\n <li>\n <StringSetting path=\":pleroma.:instance.:short_description\" />\n </li>\n <li>\n <AttachmentSetting compact path=\":pleroma.:instance.:instance_thumbnail\" />\n </li>\n <li>\n <AttachmentSetting path=\":pleroma.:instance.:background_image\" />\n </li>\n </ul>\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('admin_dash.instance.registrations') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting path=\":pleroma.:instance.:registrations_open\" />\n <ul class=\"setting-list suboptions\">\n <li>\n <BooleanSetting\n path=\":pleroma.:instance.:invites_enabled\"\n parent-path=\":pleroma.:instance.:registrations_open\"\n parent-invert\n />\n </li>\n </ul>\n </li>\n <li>\n <BooleanSetting path=\":pleroma.:instance.:birthday_required\" />\n <ul class=\"setting-list suboptions\">\n <li>\n <IntegerSetting\n path=\":pleroma.:instance.:birthday_min_age\"\n parent-path=\":pleroma.:instance.:birthday_required\"\n />\n </li>\n </ul>\n </li>\n <li>\n <BooleanSetting path=\":pleroma.:instance.:account_activation_required\" />\n </li>\n <li>\n <BooleanSetting path=\":pleroma.:instance.:account_approval_required\" />\n </li>\n <li>\n <h3>{{ $t('admin_dash.instance.captcha_header') }}</h3>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting :path=\"[':pleroma', 'Pleroma.Captcha', ':enabled']\" />\n <ul class=\"setting-list suboptions\">\n <li>\n <ChoiceSetting\n :path=\"[':pleroma', 'Pleroma.Captcha', ':method']\"\n :parent-path=\"[':pleroma', 'Pleroma.Captcha', ':enabled']\"\n :option-label-map=\"{\n 'Pleroma.Captcha.Native': $t('admin_dash.captcha.native'),\n 'Pleroma.Captcha.Kocaptcha': $t('admin_dash.captcha.kocaptcha')\n }\"\n />\n <IntegerSetting\n :path=\"[':pleroma', 'Pleroma.Captcha', ':seconds_valid']\"\n :parent-path=\"[':pleroma', 'Pleroma.Captcha', ':enabled']\"\n />\n </li>\n <li\n v-if=\"adminDraft[':pleroma']['Pleroma.Captcha'][':enabled'] && adminDraft[':pleroma']['Pleroma.Captcha'][':method'] === 'Pleroma.Captcha.Kocaptcha'\"\n >\n <h4>{{ $t('admin_dash.instance.kocaptcha') }}</h4>\n <ul class=\"setting-list\">\n <li>\n <StringSetting :path=\"[':pleroma', 'Pleroma.Captcha.Kocaptcha', ':endpoint']\" />\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('admin_dash.instance.access') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting\n override-backend-description\n override-backend-description-label\n path=\":pleroma.:instance.:public\"\n />\n </li>\n <li>\n <ChoiceSetting\n override-backend-description\n override-backend-description-label\n path=\":pleroma.:instance.:limit_to_local_content\"\n />\n </li>\n <li v-if=\"expertLevel\">\n <h3>{{ $t('admin_dash.instance.restrict.header') }}</h3>\n <p>\n {{ $t('admin_dash.instance.restrict.description') }}\n </p>\n <ul class=\"setting-list\">\n <li>\n <h4>{{ $t('admin_dash.instance.restrict.timelines') }}</h4>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting\n path=\":pleroma.:restrict_unauthenticated.:timelines.:local\"\n indeterminate-state=\":if_instance_is_private\"\n swap-description-and-label\n hide-description\n />\n </li>\n <li>\n <BooleanSetting\n path=\":pleroma.:restrict_unauthenticated.:timelines.:federated\"\n indeterminate-state=\":if_instance_is_private\"\n swap-description-and-label\n hide-description\n />\n </li>\n <li>\n <GroupSetting path=\":pleroma.:restrict_unauthenticated.:timelines\" />\n </li>\n </ul>\n </li>\n <li>\n <h4>{{ $t('admin_dash.instance.restrict.profiles') }}</h4>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting\n path=\":pleroma.:restrict_unauthenticated.:profiles.:local\"\n indeterminate-state=\":if_instance_is_private\"\n swap-description-and-label\n hide-description\n />\n </li>\n <li>\n <BooleanSetting\n path=\":pleroma.:restrict_unauthenticated.:profiles.:remote\"\n indeterminate-state=\":if_instance_is_private\"\n swap-description-and-label\n hide-description\n />\n </li>\n <li>\n <GroupSetting path=\":pleroma.:restrict_unauthenticated.:profiles\" />\n </li>\n </ul>\n </li>\n <li>\n <h4>{{ $t('admin_dash.instance.restrict.activities') }}</h4>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting\n path=\":pleroma.:restrict_unauthenticated.:activities.:local\"\n indeterminate-state=\":if_instance_is_private\"\n swap-description-and-label\n hide-description\n />\n </li>\n <li>\n <BooleanSetting\n path=\":pleroma.:restrict_unauthenticated.:activities.:remote\"\n indeterminate-state=\":if_instance_is_private\"\n swap-description-and-label\n hide-description\n />\n </li>\n <li>\n <GroupSetting path=\":pleroma.:restrict_unauthenticated.:activities\" />\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n</template>\n\n<script src=\"./instance_tab.js\"></script>\n","<template>\n <label\n v-if=\"matchesExpertLevel\"\n class=\"StringSetting\"\n >\n <label\n :for=\"path\"\n :class=\"{ 'faint': shouldBeDisabled }\"\n >\n <template v-if=\"backendDescriptionLabel\">\n {{ backendDescriptionLabel + ' ' }}\n </template>\n <template v-else-if=\"source === 'admin'\">\n MISSING LABEL FOR {{ path }}\n </template>\n <slot v-else />\n </label>\n <input\n :id=\"path\"\n class=\"string-input\"\n :disabled=\"shouldBeDisabled\"\n :value=\"realDraftMode ? draft : state\"\n @change=\"update\"\n >\n {{ ' ' }}\n <ModifiedIndicator\n :changed=\"isChanged\"\n :onclick=\"reset\"\n />\n <ProfileSettingIndicator :is-profile=\"isProfileSetting\" />\n <DraftButtons />\n <p\n v-if=\"backendDescriptionDescription\"\n class=\"setting-description\"\n :class=\"{ 'faint': shouldBeDisabled }\"\n >\n {{ backendDescriptionDescription + ' ' }}\n </p>\n </label>\n</template>\n\n<script src=\"./string_setting.js\"></script>\n","import Setting from './setting.js'\n\nexport default {\n ...Setting\n}\n","import { render } from \"./string_setting.vue?vue&type=template&id=77b0b493\"\nimport script from \"./string_setting.js?vue&type=script&lang=js\"\nexport * from \"./string_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n v-if=\"matchesExpertLevel\"\n class=\"GroupSetting\"\n >\n <ModifiedIndicator\n :changed=\"isChanged\"\n :onclick=\"reset\"\n />\n <ProfileSettingIndicator :is-profile=\"isProfileSetting\" />\n <DraftButtons />\n </span>\n</template>\n\n<script src=\"./group_setting.js\"></script>\n","import { isEqual } from 'lodash'\n\nimport Setting from './setting.js'\n\nexport default {\n ...Setting,\n computed: {\n ...Setting.computed,\n isDirty () {\n return !isEqual(this.state, this.draft)\n }\n }\n}\n","import { render } from \"./group_setting.vue?vue&type=template&id=19cb3543\"\nimport script from \"./group_setting.js?vue&type=script&lang=js\"\nexport * from \"./group_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n v-if=\"matchesExpertLevel\"\n class=\"AttachmentSetting\"\n :class=\"{ '-compact': compact }\"\n >\n <label\n :for=\"path\"\n :class=\"{ 'faint': shouldBeDisabled }\"\n >\n <template v-if=\"backendDescriptionLabel\">\n {{ backendDescriptionLabel + ' ' }}\n </template>\n <template v-else-if=\"source === 'admin'\">\n MISSING LABEL FOR {{ path }}\n </template>\n <slot v-else />\n\n </label>\n <p\n v-if=\"backendDescriptionDescription\"\n class=\"setting-description\"\n :class=\"{ 'faint': shouldBeDisabled }\"\n >\n {{ backendDescriptionDescription + ' ' }}\n </p>\n <div class=\"attachment-input\">\n <div class=\"controls control-field\">\n <label for=\"path\">{{ $t('settings.url') }}</label>\n <input\n :id=\"path\"\n class=\"string-input\"\n :disabled=\"shouldBeDisabled\"\n :value=\"realDraftMode ? draft : state\"\n @change=\"update\"\n >\n {{ ' ' }}\n <ModifiedIndicator\n :changed=\"isChanged\"\n :onclick=\"reset\"\n />\n <ProfileSettingIndicator :is-profile=\"isProfileSetting\" />\n </div>\n <div v-if=\"!compact\">{{ $t('settings.preview') }}</div>\n <Attachment\n class=\"attachment\"\n :compact=\"compact\"\n :attachment=\"attachment\"\n size=\"small\"\n hide-description\n @setMedia=\"onMedia\"\n @naturalSizeLoad=\"onNaturalSizeLoad\"\n />\n <div class=\"controls control-upload\">\n <MediaUpload\n ref=\"mediaUpload\"\n class=\"media-upload-icon\"\n :drop-files=\"dropFiles\"\n normal-button\n :accept-types=\"acceptTypes\"\n @uploaded=\"setMediaFile\"\n @upload-failed=\"uploadFailed\"\n />\n </div>\n </div>\n <DraftButtons />\n </span>\n</template>\n\n<script src=\"./attachment_setting.js\"></script>\n\n<style lang=\"scss\">\n.AttachmentSetting {\n .attachment {\n display: block;\n width: 100%;\n height: 15em;\n margin-bottom: 0.5em;\n }\n\n .attachment-input {\n margin-left: 1em;\n display: flex;\n flex-direction: column;\n width: 20em;\n }\n\n &.-compact {\n .attachment-input {\n flex-direction: row;\n align-items: flex-end;\n }\n\n .attachment {\n flex: 0;\n order: 0;\n display: block;\n min-width: 4em;\n height: 4em;\n align-self: center;\n margin-bottom: 0;\n }\n\n .control-field {\n order: 1;\n min-width: 12em;\n margin-left: 0.5em;\n }\n\n .control-upload {\n order: 2;\n min-width: 12em;\n padding: 0 0.5em;\n }\n }\n\n .controls {\n margin-bottom: 0.5em;\n\n input,\n button {\n width: 100%;\n }\n }\n}\n</style>\n","import Setting from './setting.js'\nimport { fileTypeExt } from 'src/services/file_type/file_type.service.js'\nimport MediaUpload from 'src/components/media_upload/media_upload.vue'\nimport Attachment from 'src/components/attachment/attachment.vue'\n\nexport default {\n ...Setting,\n props: {\n ...Setting.props,\n compact: Boolean,\n acceptTypes: {\n type: String,\n required: false,\n default: 'image/*'\n }\n },\n components: {\n ...Setting.components,\n MediaUpload,\n Attachment\n },\n computed: {\n ...Setting.computed,\n attachment () {\n const path = this.realDraftMode ? this.draft : this.state\n // The \"server\" part is primarily for local dev, but could be useful for alt-domain or multiuser usage.\n const url = path.includes('://') ? path : this.$store.state.instance.server + path\n return {\n mimetype: fileTypeExt(url),\n url\n }\n }\n },\n methods: {\n ...Setting.methods,\n setMediaFile (fileInfo) {\n if (this.realDraftMode) {\n this.draft = fileInfo.url\n } else {\n this.configSink(this.path, fileInfo.url)\n }\n }\n }\n}\n","import { render } from \"./attachment_setting.vue?vue&type=template&id=01b5193b\"\nimport script from \"./attachment_setting.js?vue&type=script&lang=js\"\nexport * from \"./attachment_setting.js?vue&type=script&lang=js\"\n\nimport \"./attachment_setting.vue?vue&type=style&index=0&id=01b5193b&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import BooleanSetting from '../helpers/boolean_setting.vue'\nimport ChoiceSetting from '../helpers/choice_setting.vue'\nimport IntegerSetting from '../helpers/integer_setting.vue'\nimport StringSetting from '../helpers/string_setting.vue'\nimport GroupSetting from '../helpers/group_setting.vue'\nimport AttachmentSetting from '../helpers/attachment_setting.vue'\n\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faGlobe\n)\n\nconst InstanceTab = {\n provide () {\n return {\n defaultDraftMode: true,\n defaultSource: 'admin'\n }\n },\n components: {\n BooleanSetting,\n ChoiceSetting,\n IntegerSetting,\n StringSetting,\n AttachmentSetting,\n GroupSetting\n },\n computed: {\n ...SharedComputedObject()\n }\n}\n\nexport default InstanceTab\n","import { render } from \"./instance_tab.vue?vue&type=template&id=a448cf80\"\nimport script from \"./instance_tab.js?vue&type=script&lang=js\"\nexport * from \"./instance_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :label=\"$t('admin_dash.tabs.limits')\">\n <div class=\"setting-item\">\n <h2>{{ $t('admin_dash.limits.arbitrary_limits') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <h3>{{ $t('admin_dash.limits.posts') }}</h3>\n <ul class=\"setting-list\">\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:limit\"\n draft-mode\n />\n </li>\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:remote_limit\"\n expert=\"1\"\n draft-mode\n />\n </li>\n </ul>\n </li>\n <li>\n <h3>{{ $t('admin_dash.limits.uploads') }}</h3>\n <ul class=\"setting-list\">\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:description_limit\"\n draft-mode\n />\n </li>\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:upload_limit\"\n draft-mode\n />\n </li>\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:max_media_attachments\"\n draft-mode\n />\n </li>\n </ul>\n </li>\n <li>\n <h3>{{ $t('admin_dash.limits.users') }}</h3>\n <ul class=\"setting-list\">\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:max_pinned_statuses\"\n draft-mode\n />\n </li>\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:user_bio_length\"\n draft-mode\n />\n </li>\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:user_name_length\"\n draft-mode\n />\n </li>\n <li>\n <h4>{{ $t('admin_dash.limits.profile_fields') }}</h4>\n <ul class=\"setting-list\">\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:max_account_fields\"\n draft-mode\n />\n </li>\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:max_remote_account_fields\"\n draft-mode\n expert=\"1\"\n />\n </li>\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:account_field_name_length\"\n draft-mode\n />\n </li>\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:account_field_value_length\"\n draft-mode\n />\n </li>\n </ul>\n </li>\n <li>\n <h4>{{ $t('admin_dash.limits.user_uploads') }}</h4>\n <ul class=\"setting-list\">\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:avatar_upload_limit\"\n draft-mode\n />\n </li>\n <li>\n <IntegerSetting\n source=\"admin\"\n path=\":pleroma.:instance.:banner_upload_limit\"\n draft-mode\n />\n </li>\n </ul>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n</template>\n\n<script src=\"./limits_tab.js\"></script>\n","import BooleanSetting from '../helpers/boolean_setting.vue'\nimport ChoiceSetting from '../helpers/choice_setting.vue'\nimport IntegerSetting from '../helpers/integer_setting.vue'\nimport StringSetting from '../helpers/string_setting.vue'\n\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faGlobe\n)\n\nconst LimitsTab = {\n data () {},\n components: {\n BooleanSetting,\n ChoiceSetting,\n IntegerSetting,\n StringSetting\n },\n computed: {\n ...SharedComputedObject()\n }\n}\n\nexport default LimitsTab\n","import { render } from \"./limits_tab.vue?vue&type=template&id=04194dfc\"\nimport script from \"./limits_tab.js?vue&type=script&lang=js\"\nexport * from \"./limits_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"frontends-tab\"\n :label=\"$t('admin_dash.tabs.frontends')\"\n >\n <div class=\"setting-item\">\n <h2>{{ $t('admin_dash.tabs.frontends') }}</h2>\n <p>{{ $t('admin_dash.frontend.wip_notice') }}</p>\n <ul class=\"setting-list\">\n <li>\n <h3>{{ $t('admin_dash.frontend.default_frontend') }}</h3>\n <p>{{ $t('admin_dash.frontend.default_frontend_tip') }}</p>\n <ul class=\"setting-list\">\n <li>\n <StringSetting path=\":pleroma.:frontends.:primary.name\" />\n </li>\n <li>\n <StringSetting path=\":pleroma.:frontends.:primary.ref\" />\n </li>\n <li>\n <GroupSetting path=\":pleroma.:frontends.:primary\" />\n </li>\n </ul>\n </li>\n </ul>\n <div class=\"setting-list relative\">\n <PanelLoading class=\"overlay\" v-if=\"working\"/>\n <h3>{{ $t('admin_dash.frontend.available_frontends') }}</h3>\n <ul class=\"cards-list\">\n <li\n v-for=\"frontend in frontends\"\n :key=\"frontend.name\"\n >\n <strong>{{ frontend.name }}</strong>\n {{ ' ' }}\n <span v-if=\"adminDraft[':pleroma'][':frontends'][':primary']?.name === frontend.name\">\n <i18n-t\n v-if=\"adminDraft[':pleroma'][':frontends'][':primary']?.ref === frontend.refs[0]\"\n keypath=\"admin_dash.frontend.is_default\"\n />\n <i18n-t\n v-else\n keypath=\"admin_dash.frontend.is_default_custom\"\n >\n <template #version>\n <code>{{ adminDraft[':pleroma'][':frontends'][':primary'].ref }}</code>\n </template>\n </i18n-t>\n </span>\n <dl>\n <dt>{{ $t('admin_dash.frontend.repository') }}</dt>\n <dd>\n <a\n :href=\"frontend.git\"\n target=\"_blank\"\n >{{ frontend.git }}</a>\n </dd>\n <template v-if=\"expertLevel\">\n <dt>{{ $t('admin_dash.frontend.versions') }}</dt>\n <dd\n v-for=\"ref in frontend.refs\"\n :key=\"ref\"\n >\n <code>{{ ref }}</code>\n </dd>\n </template>\n <dt v-if=\"expertLevel\">\n {{ $t('admin_dash.frontend.build_url') }}\n </dt>\n <dd v-if=\"expertLevel\">\n <a\n :href=\"frontend.build_url\"\n target=\"_blank\"\n >{{ frontend.build_url }}</a>\n </dd>\n </dl>\n <div>\n <span class=\"btn-group\">\n <button\n class=\"button button-default btn\"\n type=\"button\"\n @click=\"update(frontend)\"\n >\n {{\n frontend.installed\n ? $t('admin_dash.frontend.reinstall')\n : $t('admin_dash.frontend.install')\n }}\n <code>\n {{\n getSuggestedRef(frontend)\n }}\n </code>\n </button>\n <Popover\n v-if=\"frontend.refs.length > 1\"\n trigger=\"click\"\n class=\"button-dropdown\"\n placement=\"bottom\"\n >\n <template #content=\"{close}\">\n <div class=\"dropdown-menu\">\n <button\n v-for=\"ref in frontend.refs\"\n :key=\"ref\"\n class=\"button-default dropdown-item\"\n @click.prevent=\"update(frontend, ref)\"\n @click=\"close\"\n >\n <i18n-t keypath=\"admin_dash.frontend.install_version\">\n <template #version>\n <code>{{ ref }}</code>\n </template>\n </i18n-t>\n </button>\n </div>\n </template>\n <template #trigger>\n <button\n class=\"button button-default btn dropdown-button\"\n type=\"button\"\n :title=\"$t('admin_dash.frontend.more_install_options')\"\n >\n <FAIcon icon=\"chevron-down\" />\n </button>\n </template>\n </Popover>\n </span>\n <span\n v-if=\"frontend.installed && frontend.name !== 'admin-fe'\"\n class=\"btn-group\"\n >\n <button\n class=\"button button-default btn\"\n type=\"button\"\n :disabled=\"\n adminDraft[':pleroma'][':frontends'][':primary']?.name === frontend.name &&\n adminDraft[':pleroma'][':frontends'][':primary']?.ref === frontend.refs[0]\n \"\n @click=\"setDefault(frontend)\"\n >\n {{\n $t('admin_dash.frontend.set_default')\n }}\n <code>\n {{\n getSuggestedRef(frontend)\n }}\n </code>\n </button>\n {{ ' ' }}\n <Popover\n v-if=\"frontend.refs.length > 1\"\n trigger=\"click\"\n class=\"button-dropdown\"\n placement=\"bottom\"\n >\n <template #content=\"{close}\">\n <div class=\"dropdown-menu\">\n <button\n v-for=\"ref in frontend.installedRefs || frontend.refs\"\n :key=\"ref\"\n class=\"button-default dropdown-item\"\n @click.prevent=\"setDefault(frontend, ref)\"\n @click=\"close\"\n >\n <i18n-t keypath=\"admin_dash.frontend.set_default_version\">\n <template #version>\n <code>{{ ref }}</code>\n </template>\n </i18n-t>\n </button>\n </div>\n </template>\n <template #trigger>\n <button\n class=\"button button-default btn dropdown-button\"\n type=\"button\"\n :title=\"$t('admin_dash.frontend.more_default_options')\"\n >\n <FAIcon icon=\"chevron-down\" />\n </button>\n </template>\n </Popover>\n </span>\n </div>\n </li>\n </ul>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./frontends_tab.js\"></script>\n\n<style lang=\"scss\" src=\"./frontends_tab.scss\"></style>\n","import BooleanSetting from '../helpers/boolean_setting.vue'\nimport ChoiceSetting from '../helpers/choice_setting.vue'\nimport IntegerSetting from '../helpers/integer_setting.vue'\nimport StringSetting from '../helpers/string_setting.vue'\nimport GroupSetting from '../helpers/group_setting.vue'\nimport Popover from 'src/components/popover/popover.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\n\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faGlobe\n)\n\nconst FrontendsTab = {\n provide () {\n return {\n defaultDraftMode: true,\n defaultSource: 'admin'\n }\n },\n data () {\n return {\n working: false\n }\n },\n components: {\n BooleanSetting,\n ChoiceSetting,\n IntegerSetting,\n StringSetting,\n GroupSetting,\n PanelLoading,\n Popover\n },\n created () {\n if (this.user.rights.admin) {\n this.$store.dispatch('loadFrontendsStuff')\n }\n },\n computed: {\n frontends () {\n return this.$store.state.adminSettings.frontends\n },\n ...SharedComputedObject()\n },\n methods: {\n canInstall (frontend) {\n const fe = this.frontends.find(f => f.name === frontend.name)\n if (!fe) return false\n return fe.refs.includes(frontend.ref)\n },\n getSuggestedRef (frontend) {\n const defaultFe = this.adminDraft[':pleroma'][':frontends'][':primary']\n if (defaultFe?.name === frontend.name && this.canInstall(defaultFe)) {\n return defaultFe.ref\n } else {\n return frontend.refs[0]\n }\n },\n update (frontend, suggestRef) {\n const ref = suggestRef || this.getSuggestedRef(frontend)\n const { name } = frontend\n const payload = { name, ref }\n\n this.working = true\n this.$store.state.api.backendInteractor.installFrontend({ payload })\n .finally(() => {\n this.working = false\n })\n .then(async (response) => {\n this.$store.dispatch('loadFrontendsStuff')\n if (response.error) {\n const reason = await response.error.json()\n this.$store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'admin_dash.frontend.failure_installing_frontend',\n messageArgs: {\n version: name + '/' + ref,\n reason: reason.error\n },\n timeout: 5000\n })\n } else {\n this.$store.dispatch('pushGlobalNotice', {\n level: 'success',\n messageKey: 'admin_dash.frontend.success_installing_frontend',\n messageArgs: {\n version: name + '/' + ref\n },\n timeout: 2000\n })\n }\n })\n },\n setDefault (frontend, suggestRef) {\n const ref = suggestRef || this.getSuggestedRef(frontend)\n const { name } = frontend\n\n this.$store.commit('updateAdminDraft', { path: [':pleroma', ':frontends', ':primary'], value: { name, ref } })\n }\n }\n}\n\nexport default FrontendsTab\n","import { render } from \"./frontends_tab.vue?vue&type=template&id=57d082ef\"\nimport script from \"./frontends_tab.js?vue&type=script&lang=js\"\nexport * from \"./frontends_tab.js?vue&type=script&lang=js\"\n\nimport \"./frontends_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nimport InstanceTab from './admin_tabs/instance_tab.vue'\nimport LimitsTab from './admin_tabs/limits_tab.vue'\nimport FrontendsTab from './admin_tabs/frontends_tab.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faWrench,\n faHand,\n faLaptopCode,\n faPaintBrush,\n faBell,\n faDownload,\n faEyeSlash,\n faInfo\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faWrench,\n faHand,\n faLaptopCode,\n faPaintBrush,\n faBell,\n faDownload,\n faEyeSlash,\n faInfo\n)\n\nconst SettingsModalAdminContent = {\n components: {\n TabSwitcher,\n\n InstanceTab,\n LimitsTab,\n FrontendsTab\n },\n computed: {\n user () {\n return this.$store.state.users.currentUser\n },\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n open () {\n return this.$store.state.interface.settingsModalState !== 'hidden'\n },\n bodyLock () {\n return this.$store.state.interface.settingsModalState === 'visible'\n },\n adminDbLoaded () {\n return this.$store.state.adminSettings.loaded\n },\n adminDescriptionsLoaded () {\n return this.$store.state.adminSettings.descriptions !== null\n },\n noDb () {\n return this.$store.state.adminSettings.dbConfigEnabled === false\n }\n },\n created () {\n if (this.user.rights.admin) {\n this.$store.dispatch('loadAdminStuff')\n }\n },\n methods: {\n onOpen () {\n const targetTab = this.$store.state.interface.settingsModalTargetTab\n // We're being told to open in specific tab\n if (targetTab) {\n const tabIndex = this.$refs.tabSwitcher.$slots.default().findIndex(elm => {\n return elm.props && elm.props['data-tab-name'] === targetTab\n })\n if (tabIndex >= 0) {\n this.$refs.tabSwitcher.setTab(tabIndex)\n }\n }\n // Clear the state of target tab, so that next time settings is opened\n // it doesn't force it.\n this.$store.dispatch('clearSettingsModalTargetTab')\n }\n },\n mounted () {\n this.onOpen()\n },\n watch: {\n open: function (value) {\n if (value) this.onOpen()\n }\n }\n}\n\nexport default SettingsModalAdminContent\n","import { render } from \"./settings_modal_admin_content.vue?vue&type=template&id=43a9ece4\"\nimport script from \"./settings_modal_admin_content.js?vue&type=script&lang=js\"\nexport * from \"./settings_modal_admin_content.js?vue&type=script&lang=js\"\n\nimport \"./settings_modal_admin_content.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","href","target","_createElementVNode","Setting","_ctx","matchesExpertLevel","_createElementBlock","_hoisted_1","for","path","_normalizeClass","shouldBeDisabled","backendDescriptionLabel","_Fragment","key","source","_toDisplayString","_renderSlot","$slots","id","disabled","value","realDraftMode","draft","state","onChange","_cache","update","apply","arguments","_createVNode","_component_ModifiedIndicator","changed","isChanged","onclick","reset","_component_ProfileSettingIndicator","isProfileSetting","_component_DraftButtons","backendDescriptionDescription","_objectSpread","computed","isDirty","_isEqual","this","props","compact","Boolean","acceptTypes","type","String","required","default","components","MediaUpload","Attachment","attachment","url","includes","$store","instance","server","mimetype","fileTypeExt","methods","setMediaFile","fileInfo","configSink","_hoisted_2","_hoisted_3","_hoisted_4","$t","_hoisted_6","_component_Attachment","size","onSetMedia","onMedia","onNaturalSizeLoad","_hoisted_7","_component_MediaUpload","ref","dropFiles","onUploaded","onUploadFailed","uploadFailed","library","faGlobe","provide","defaultDraftMode","defaultSource","BooleanSetting","ChoiceSetting","IntegerSetting","StringSetting","AttachmentSetting","GroupSetting","SharedComputedObject","label","_component_StringSetting","undefined","adminDraft","_component_AttachmentSetting","_hoisted_5","_component_BooleanSetting","_hoisted_8","_component_IntegerSetting","_hoisted_9","_hoisted_10","_component_ChoiceSetting","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","expertLevel","_hoisted_15","_hoisted_16","_hoisted_17","_component_GroupSetting","_hoisted_18","_hoisted_19","data","expert","working","PanelLoading","Popover","created","user","rights","admin","dispatch","frontends","adminSettings","canInstall","frontend","fe","find","f","name","refs","getSuggestedRef","defaultFe","suggestRef","_this","payload","api","backendInteractor","installFrontend","then","_ref","_asyncToGenerator","_regeneratorRuntime","_callee","response","reason","_context","prev","next","error","json","sent","level","messageKey","messageArgs","version","timeout","stop","_x","setDefault","commit","_createBlock","_component_PanelLoading","_renderList","_ctx$adminDraft$Pler","_ctx$adminDraft$Pler2","_ctx$adminDraft$Pler3","_ctx$adminDraft$Pler4","_component_i18n_t","keypath","_withCtx","git","build_url","onClick","$event","installed","length","_component_Popover","trigger","placement","content","close","title","_component_FAIcon","icon","_ref2","installedRefs","faWrench","faHand","faLaptopCode","faPaintBrush","faBell","faDownload","faEyeSlash","faInfo","TabSwitcher","InstanceTab","LimitsTab","FrontendsTab","users","currentUser","isLoggedIn","open","settingsModalState","bodyLock","adminDbLoaded","loaded","adminDescriptionsLoaded","descriptions","noDb","dbConfigEnabled","onOpen","targetTab","settingsModalTargetTab","tabIndex","$refs","tabSwitcher","findIndex","elm","setTab","mounted","watch","_component_tab_switcher","documentation","property","_component_InstanceTab","_component_LimitsTab","_component_FrontendsTab"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/9060.24271e167e0471a1a732.js b/priv/static/static/js/9060.24271e167e0471a1a732.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[9060],{7761:(t,e,r)=>{r.d(e,{Z:()=>P});var n=r(93433),i=r(50361),a=r.n(i),o=r(36968),s=r.n(o),c=r(27361),u=r.n(c),l=r(66252),d=r(3577),p={key:0,class:"ModifiedIndicator"},f={class:"modified-tooltip"},h=r(84535),g=r(9382),m=r(84131);g.vI.add(m.klh);const b={components:{Popover:h.default},props:["changed"]};var v=r(83744);const D=(0,v.Z)(b,[["render",function(t,e,r,n,i,a){var o=(0,l.up)("FAIcon"),s=(0,l.up)("Popover");return r.changed?((0,l.wg)(),(0,l.iD)("span",p,[(0,l.Wm)(s,{trigger:"hover","trigger-attrs":{"aria-label":t.$t("settings.setting_changed")}},{trigger:(0,l.w5)((function(){return[(0,l.Uk)("   "),(0,l.Wm)(o,{icon:"wrench"})]})),content:(0,l.w5)((function(){return[(0,l._)("div",f,(0,d.zw)(t.$t("settings.setting_changed")),1)]})),_:1},8,["trigger-attrs"])])):(0,l.kq)("",!0)}]]);var k=r(29376),w={class:"DraftButtons"},y={class:"modified-tooltip"},S={class:"modified-tooltip"},O={class:"modified-tooltip"};g.vI.add(m.klh);const _={components:{Popover:h.default},props:["changed"]},P={components:{ModifiedIndicator:D,DraftButtons:(0,v.Z)(_,[["render",function(t,e,r,n,i,a){var o=(0,l.up)("Popover");return(0,l.wg)(),(0,l.iD)("span",w,[t.$parent.isDirty?((0,l.wg)(),(0,l.j4)(o,{key:0,trigger:"hover","normal-button":"","trigger-attrs":{"aria-label":t.$t("settings.commit_value_tooltip")},onClick:t.$parent.commitDraft},{trigger:(0,l.w5)((function(){return[(0,l.Uk)((0,d.zw)(t.$t("settings.commit_value")),1)]})),content:(0,l.w5)((function(){return[(0,l._)("div",y,(0,d.zw)(t.$t("settings.commit_value_tooltip")),1)]})),_:1},8,["trigger-attrs","onClick"])):(0,l.kq)("",!0),t.$parent.isDirty?((0,l.wg)(),(0,l.j4)(o,{key:1,trigger:"hover","normal-button":"","trigger-attrs":{"aria-label":t.$t("settings.reset_value_tooltip")},onClick:t.$parent.reset},{trigger:(0,l.w5)((function(){return[(0,l.Uk)((0,d.zw)(t.$t("settings.reset_value")),1)]})),content:(0,l.w5)((function(){return[(0,l._)("div",S,(0,d.zw)(t.$t("settings.reset_value_tooltip")),1)]})),_:1},8,["trigger-attrs","onClick"])):(0,l.kq)("",!0),t.$parent.canHardReset?((0,l.wg)(),(0,l.j4)(o,{key:2,trigger:"hover","normal-button":"","trigger-attrs":{"aria-label":t.$t("settings.hard_reset_value_tooltip")},onClick:t.$parent.hardReset},{trigger:(0,l.w5)((function(){return[(0,l.Uk)((0,d.zw)(t.$t("settings.hard_reset_value")),1)]})),content:(0,l.w5)((function(){return[(0,l._)("div",O,(0,d.zw)(t.$t("settings.hard_reset_value_tooltip")),1)]})),_:1},8,["trigger-attrs","onClick"])):(0,l.kq)("",!0)])}]]),ProfileSettingIndicator:k.Z},props:{path:{type:[String,Array],required:!0},disabled:{type:Boolean,default:!1},parentPath:{type:[String,Array]},parentInvert:{type:Boolean,default:!1},expert:{type:[Number,String],default:0},source:{type:String,default:void 0},hideDescription:{type:Boolean},swapDescriptionAndLabel:{type:Boolean},overrideBackendDescription:{type:Boolean},overrideBackendDescriptionLabel:{type:Boolean},draftMode:{type:Boolean,default:void 0}},inject:{defaultSource:{default:"default"},defaultDraftMode:{default:!1}},data:function(){return{localDraft:null}},created:function(){this.realDraftMode&&"admin"!==this.realSource&&(this.draft=this.state)},computed:{draft:{get:function(){return"admin"===this.realSource?u()(this.$store.state.adminSettings.draft,this.canonPath):this.localDraft},set:function(t){"admin"===this.realSource?this.$store.commit("updateAdminDraft",{path:this.canonPath,value:t}):this.localDraft=t}},state:function(){var t=u()(this.configSource,this.canonPath);return void 0===t?this.defaultState:t},visibleState:function(){return this.realDraftMode?this.draft:this.state},realSource:function(){return this.source||this.defaultSource},realDraftMode:function(){return void 0===this.draftMode?this.defaultDraftMode:this.draftMode},backendDescription:function(){return u()(this.$store.state.adminSettings.descriptions,this.path)},backendDescriptionLabel:function(){return"admin"!==this.realSource?"":!this.backendDescription||this.overrideBackendDescriptionLabel?this.$t(["admin_dash","temp_overrides"].concat((0,n.Z)(this.canonPath.map((function(t){return t.replace(/\./g,"_DOT_")}))),["label"]).join(".")):this.swapDescriptionAndLabel?null===(t=this.backendDescription)||void 0===t?void 0:t.description:null===(e=this.backendDescription)||void 0===e?void 0:e.label;var t,e},backendDescriptionDescription:function(){return"admin"!==this.realSource?"":this.hideDescription?null:!this.backendDescription||this.overrideBackendDescription?this.$t(["admin_dash","temp_overrides"].concat((0,n.Z)(this.canonPath.map((function(t){return t.replace(/\./g,"_DOT_")}))),["description"]).join(".")):this.swapDescriptionAndLabel?null===(t=this.backendDescription)||void 0===t?void 0:t.label:null===(e=this.backendDescription)||void 0===e?void 0:e.description;var t,e},backendDescriptionSuggestions:function(){var t;return null===(t=this.backendDescription)||void 0===t?void 0:t.suggestions},shouldBeDisabled:function(){var t=void 0!==this.parentPath?u()(this.configSource,this.parentPath):null;return this.disabled||null!==t&&(this.parentInvert?t:!t)},configSource:function(){switch(this.realSource){case"profile":return this.$store.state.profileConfig;case"admin":return this.$store.state.adminSettings.config;default:return this.$store.getters.mergedConfig}},configSink:function(){var t=this;switch(this.realSource){case"profile":return function(e,r){return t.$store.dispatch("setProfileOption",{name:e,value:r})};case"admin":return function(e,r){return t.$store.dispatch("pushAdminSetting",{path:e,value:r})};default:return function(e,r){return t.$store.dispatch("setOption",{name:e,value:r})}}},defaultState:function(){return"profile"===this.realSource?{}:u()(this.$store.getters.defaultConfig,this.path)},isProfileSetting:function(){return"profile"===this.realSource},isChanged:function(){switch(this.realSource){case"profile":case"admin":return!1;default:return this.state!==this.defaultState}},canonPath:function(){return Array.isArray(this.path)?this.path:this.path.split(".")},isDirty:function(){return!("admin"===this.realSource&&this.canonPath.length>3)&&this.realDraftMode&&this.draft!==this.state},canHardReset:function(){return"admin"===this.realSource&&this.$store.state.adminSettings.modifiedPaths.has(this.canonPath.join(" -> "))},matchesExpertLevel:function(){return(this.expert||0)<=this.$store.state.config.expertLevel>0}},methods:{getValue:function(t){return t.target.value},update:function(t){this.realDraftMode?this.draft=this.getValue(t):this.configSink(this.path,this.getValue(t))},commitDraft:function(){this.realDraftMode&&this.configSink(this.path,this.draft)},reset:function(){this.realDraftMode?this.draft=a()(this.state):s()(this.$store.getters.mergedConfig,this.path,a()(this.defaultState))},hardReset:function(){var t=this;if("admin"===this.realSource)return this.$store.dispatch("resetAdminSetting",{path:this.path}).then((function(){t.draft=t.state}));console.warn("Hard reset not implemented yet!")}}}},76875:(t,e,r)=>{r.d(e,{Z:()=>n});const n=function(){return{user:function(){return this.$store.state.users.currentUser},expertLevel:function(){return this.$store.getters.mergedConfig.expertLevel>0},mergedConfig:function(){return this.$store.getters.mergedConfig},adminConfig:function(){return this.$store.state.adminSettings.config},adminDraft:function(){return this.$store.state.adminSettings.draft}}}},59236:(t,e,r)=>{r.d(e,{Z:()=>p});var n=r(66252),i=r(3577),a={key:0,class:"BooleanSetting"},o=r(4942),s=r(66141),c=r(7761);function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function l(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?u(Object(r),!0).forEach((function(e){(0,o.Z)(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}const d=l(l({},c.Z),{},{props:l(l({},c.Z.props),{},{indeterminateState:[String,Object]}),components:l(l({},c.Z.components),{},{Checkbox:s.Z}),computed:l(l({},c.Z.computed),{},{isIndeterminate:function(){return this.visibleState===this.indeterminateState}}),methods:l(l({},c.Z.methods),{},{getValue:function(t){return this.indeterminateState&&!t&&!0===this.visibleState?this.indeterminateState:t}})}),p=(0,r(83744).Z)(d,[["render",function(t,e,r,o,s,c){var u=(0,n.up)("Checkbox"),l=(0,n.up)("ModifiedIndicator"),d=(0,n.up)("ProfileSettingIndicator"),p=(0,n.up)("DraftButtons");return t.matchesExpertLevel?((0,n.wg)(),(0,n.iD)("label",a,[(0,n.Wm)(u,{"model-value":t.visibleState,disabled:t.shouldBeDisabled,indeterminate:t.isIndeterminate,"onUpdate:modelValue":t.update},{default:(0,n.w5)((function(){return[(0,n._)("span",{class:(0,i.C_)(["label",{faint:t.shouldBeDisabled}])},[t.backendDescriptionLabel?((0,n.wg)(),(0,n.iD)(n.HY,{key:0},[(0,n.Uk)((0,i.zw)(t.backendDescriptionLabel),1)],64)):"admin"===t.source?((0,n.wg)(),(0,n.iD)(n.HY,{key:1},[(0,n.Uk)(" MISSING LABEL FOR "+(0,i.zw)(t.path),1)],64)):(0,n.WI)(t.$slots,"default",{key:2})],2)]})),_:3},8,["model-value","disabled","indeterminate","onUpdate:modelValue"]),(0,n.Wm)(l,{changed:t.isChanged,onclick:t.reset},null,8,["changed","onclick"]),(0,n.Wm)(d,{"is-profile":t.isProfileSetting},null,8,["is-profile"]),(0,n.Wm)(p),t.backendDescriptionDescription?((0,n.wg)(),(0,n.iD)("p",{key:0,class:(0,i.C_)(["setting-description",{faint:t.shouldBeDisabled}])},(0,i.zw)(t.backendDescriptionDescription+" "),3)):(0,n.kq)("",!0)])):(0,n.kq)("",!0)}]])},77218:(t,e,r)=>{r.d(e,{Z:()=>h});var n=r(66252),i=r(3577),a={key:0,class:"ChoiceSetting"},o=["value"],s={key:2,class:"setting-description"},c=r(4942),u=r(76990),l=r(7761);function d(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function p(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?d(Object(r),!0).forEach((function(e){(0,c.Z)(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):d(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}const f=p(p({},l.Z),{},{components:p(p({},l.Z.components),{},{Select:u.Z}),props:p(p({},l.Z.props),{},{options:{type:Array,required:!1},optionLabelMap:{type:Object,required:!1,default:{}}}),computed:p(p({},l.Z.computed),{},{realOptions:function(){var t=this;return"admin"===this.realSource?this.backendDescriptionSuggestions.map((function(e){return{key:e,value:e,label:t.optionLabelMap[e]||e}})):this.options}}),methods:p(p({},l.Z.methods),{},{getValue:function(t){return t}})}),h=(0,r(83744).Z)(f,[["render",function(t,e,r,c,u,l){var d=(0,n.up)("Select"),p=(0,n.up)("ModifiedIndicator"),f=(0,n.up)("ProfileSettingIndicator"),h=(0,n.up)("DraftButtons");return t.matchesExpertLevel?((0,n.wg)(),(0,n.iD)("label",a,[t.backendDescriptionLabel?((0,n.wg)(),(0,n.iD)(n.HY,{key:0},[(0,n.Uk)((0,i.zw)(t.backendDescriptionLabel),1)],64)):(0,n.WI)(t.$slots,"default",{key:1}),(0,n.Uk)(" "+(0,i.zw)(" ")+" "),(0,n.Wm)(d,{"model-value":t.realDraftMode?t.draft:t.state,disabled:t.disabled,"onUpdate:modelValue":t.update},{default:(0,n.w5)((function(){return[((0,n.wg)(!0),(0,n.iD)(n.HY,null,(0,n.Ko)(t.realOptions,(function(e){return(0,n.wg)(),(0,n.iD)("option",{key:e.key,value:e.value},(0,i.zw)(e.label)+" "+(0,i.zw)(e.value===t.defaultState?t.$t("settings.instance_default_simple"):""),9,o)})),128))]})),_:1},8,["model-value","disabled","onUpdate:modelValue"]),(0,n.Wm)(p,{changed:t.isChanged,onclick:t.reset},null,8,["changed","onclick"]),(0,n.Wm)(f,{"is-profile":t.isProfileSetting},null,8,["is-profile"]),(0,n.Wm)(h),t.backendDescriptionDescription?((0,n.wg)(),(0,n.iD)("p",s,(0,i.zw)(t.backendDescriptionDescription+" "),1)):(0,n.kq)("",!0)])):(0,n.kq)("",!0)}]])},87449:(t,e,r)=>{r.d(e,{Z:()=>a});var n=r(66252);const i={components:{NumberSetting:r(20445).Z}},a=(0,r(83744).Z)(i,[["render",function(t,e,r,i,a,o){var s=(0,n.up)("NumberSetting");return(0,n.wg)(),(0,n.j4)(s,(0,n.dG)(t.$attrs,{truncate:"1"}),{default:(0,n.w5)((function(){return[(0,n.WI)(t.$slots,"default")]})),_:3},16)}]])},20445:(t,e,r)=>{r.d(e,{Z:()=>f});var n=r(66252),i=r(3577),a={key:0,class:"NumberSetting"},o=["for"],s=["id","step","disabled","min","value"],c=r(4942),u=r(7761);function l(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function d(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?l(Object(r),!0).forEach((function(e){(0,c.Z)(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):l(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}const p=d(d({},u.Z),{},{props:d(d({},u.Z.props),{},{truncate:{type:Number,required:!1,default:1}}),methods:d(d({},u.Z.methods),{},{getValue:function(t){return 1===!this.truncate?parseInt(t.target.value):this.truncate>1?Math.trunc(t.target.value/this.truncate)*this.truncate:parseFloat(t.target.value)}})}),f=(0,r(83744).Z)(p,[["render",function(t,e,r,c,u,l){var d=(0,n.up)("ModifiedIndicator"),p=(0,n.up)("ProfileSettingIndicator"),f=(0,n.up)("DraftButtons");return t.matchesExpertLevel?((0,n.wg)(),(0,n.iD)("span",a,[(0,n._)("label",{for:t.path,class:(0,i.C_)({faint:t.shouldBeDisabled})},[t.backendDescriptionLabel?((0,n.wg)(),(0,n.iD)(n.HY,{key:0},[(0,n.Uk)((0,i.zw)(t.backendDescriptionLabel+" "),1)],64)):"admin"===t.source?((0,n.wg)(),(0,n.iD)(n.HY,{key:1},[(0,n.Uk)(" MISSING LABEL FOR "+(0,i.zw)(t.path),1)],64)):(0,n.WI)(t.$slots,"default",{key:2})],10,o),(0,n._)("input",{id:t.path,class:"number-input",type:"number",step:t.step||1,disabled:t.shouldBeDisabled,min:t.min||0,value:t.realDraftMode?t.draft:t.state,onChange:e[0]||(e[0]=function(){return t.update&&t.update.apply(t,arguments)})},null,40,s),(0,n.Uk)(" "+(0,i.zw)(" ")+" "),(0,n.Wm)(d,{changed:t.isChanged,onclick:t.reset},null,8,["changed","onclick"]),(0,n.Wm)(p,{"is-profile":t.isProfileSetting},null,8,["is-profile"]),(0,n.Wm)(f),t.backendDescriptionDescription?((0,n.wg)(),(0,n.iD)("p",{key:0,class:(0,i.C_)(["setting-description",{faint:t.shouldBeDisabled}])},(0,i.zw)(t.backendDescriptionDescription+" "),3)):(0,n.kq)("",!0)])):(0,n.kq)("",!0)}]])},29376:(t,e,r)=>{r.d(e,{Z:()=>d});var n=r(66252),i=r(3577),a={key:0,class:"ProfileSettingIndicator"},o={class:"profilesetting-tooltip"},s=r(84535),c=r(9382),u=r(84131);c.vI.add(u.xf3);const l={components:{Popover:s.default},props:["isProfile"]},d=(0,r(83744).Z)(l,[["render",function(t,e,r,s,c,u){var l=(0,n.up)("FAIcon"),d=(0,n.up)("Popover");return r.isProfile?((0,n.wg)(),(0,n.iD)("span",a,[(0,n.Wm)(d,{trigger:"hover"},{trigger:(0,n.w5)((function(){return[(0,n.Uk)("   "),(0,n.Wm)(l,{icon:"server","aria-label":t.$t("settings.setting_server_side")},null,8,["aria-label"])]})),content:(0,n.w5)((function(){return[(0,n._)("div",o,(0,i.zw)(t.$t("settings.setting_server_side")),1)]})),_:1})])):(0,n.kq)("",!0)}]])}}]); +//# sourceMappingURL=9060.24271e167e0471a1a732.js.map +\ No newline at end of file diff --git a/priv/static/static/js/9060.24271e167e0471a1a732.js.map b/priv/static/static/js/9060.24271e167e0471a1a732.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/9060.24271e167e0471a1a732.js","mappings":"kOAGIA,MAAM,qB,GAaGA,MAAM,oB,gCAanBC,EAAAA,GAAAA,IACEC,EAAAA,KAGF,SACEC,WAAY,CAAEC,QAAAA,EAAAA,SACdC,MAAO,CAAC,Y,eC5BV,MAEA,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,4EDLjDC,EAAAC,UAAO,WADfC,EAAAA,EAAAA,IAoBO,OApBPC,EAoBO,EAhBLC,EAAAA,EAAAA,IAeUC,EAAA,CAdRC,QAAQ,QACP,gBAAa,cAAkBC,EAAAC,GAAG,8B,CAExBF,SAAOG,EAAAA,EAAAA,KAAC,iBAEjB,UAFiB,QAEjBL,EAAAA,EAAAA,IAEEM,EAAA,CADAC,KAAK,W,IAGEC,SAAOH,EAAAA,EAAAA,KAChB,iBAEM,EAFNI,EAAAA,EAAAA,GAEM,MAFNC,GAEMC,EAAAA,EAAAA,IADDR,EAAAC,GAAG,6BAAD,G,uEEbXd,MAAM,gB,GAaGA,MAAM,oB,GAgBNA,MAAM,oB,GAgBNA,MAAM,oBAanBC,EAAAA,GAAAA,IACEC,EAAAA,KAGF,SACEC,WAAY,CAAEC,QAAAA,EAAAA,SACdC,MAAO,CAAC,YC/DV,GACEF,WAAY,CACVmB,kBAAAA,EACAC,cCD6B,OAAgB,EAAQ,CAAC,CAAC,S,kEFJzDf,EAAAA,EAAAA,IAmDO,OAnDPC,EAmDO,CA/CGI,EAAAW,QAAQC,UAAO,WADvBC,EAAAA,EAAAA,IAeUf,EAAA,C,MAbRC,QAAQ,QACR,mBACC,gBAAa,cAAkBC,EAAAC,GAAG,kCAClCa,QAAOd,EAAAW,QAAQI,a,CAELhB,SAAOG,EAAAA,EAAAA,KAChB,iBAAiC,mBAA9BF,EAAAC,GAAG,0BAAD,G,IAEII,SAAOH,EAAAA,EAAAA,KAChB,iBAEM,EAFNI,EAAAA,EAAAA,GAEM,MAFNC,GAEMC,EAAAA,EAAAA,IADDR,EAAAC,GAAG,kCAAD,G,yDAKHD,EAAAW,QAAQC,UAAO,WADvBC,EAAAA,EAAAA,IAeUf,EAAA,C,MAbRC,QAAQ,QACR,mBACC,gBAAa,cAAkBC,EAAAC,GAAG,iCAClCa,QAAOd,EAAAW,QAAQK,O,CAELjB,SAAOG,EAAAA,EAAAA,KAChB,iBAAgC,mBAA7BF,EAAAC,GAAG,yBAAD,G,IAEII,SAAOH,EAAAA,EAAAA,KAChB,iBAEM,EAFNI,EAAAA,EAAAA,GAEM,MAFNW,GAEMT,EAAAA,EAAAA,IADDR,EAAAC,GAAG,iCAAD,G,yDAKHD,EAAAW,QAAQO,eAAY,WAD5BL,EAAAA,EAAAA,IAeUf,EAAA,C,MAbRC,QAAQ,QACR,mBACC,gBAAa,cAAkBC,EAAAC,GAAG,sCAClCa,QAAOd,EAAAW,QAAQQ,W,CAELpB,SAAOG,EAAAA,EAAAA,KAChB,iBAAqC,mBAAlCF,EAAAC,GAAG,8BAAD,G,IAEII,SAAOH,EAAAA,EAAAA,KAChB,iBAEM,EAFNI,EAAAA,EAAAA,GAEM,MAFNc,GAEMZ,EAAAA,EAAAA,IADDR,EAAAC,GAAG,sCAAD,G,+DCzCXoB,wBAAAA,EAAAA,GAEF7B,MAAO,CACL8B,KAAM,CACJC,KAAM,CAACC,OAAQC,OACfC,UAAU,GAEZC,SAAU,CACRJ,KAAMK,QACNC,SAAS,GAEXC,WAAY,CACVP,KAAM,CAACC,OAAQC,QAEjBM,aAAc,CACZR,KAAMK,QACNC,SAAS,GAEXG,OAAQ,CACNT,KAAM,CAACU,OAAQT,QACfK,QAAS,GAEXK,OAAQ,CACNX,KAAMC,OACNK,aAASM,GAEXC,gBAAiB,CACfb,KAAMK,SAERS,wBAAyB,CACvBd,KAAMK,SAERU,2BAA4B,CAC1Bf,KAAMK,SAERW,gCAAiC,CAC/BhB,KAAMK,SAERY,UAAW,CACTjB,KAAMK,QACNC,aAASM,IAGbM,OAAQ,CACNC,cAAe,CACbb,QAAS,WAEXc,iBAAkB,CAChBd,SAAS,IAGbe,KAAI,WACF,MAAO,CACLC,WAAY,KAEhB,EACAC,QAAO,WACDC,KAAKC,eAAqC,UAApBD,KAAKE,aAC7BF,KAAKG,MAAQH,KAAKI,MAEtB,EACAC,SAAU,CACRF,MAAO,CAELG,IAAG,WACD,MAAwB,UAApBN,KAAKE,WACAK,IAAIP,KAAKQ,OAAOJ,MAAMK,cAAcN,MAAOH,KAAKU,WAEhDV,KAAKF,UAEhB,EACAa,IAAG,SAAEC,GACqB,UAApBZ,KAAKE,WACPF,KAAKQ,OAAOK,OAAO,mBAAoB,CAAEtC,KAAMyB,KAAKU,UAAWE,MAAAA,IAE/DZ,KAAKF,WAAac,CAEtB,GAEFR,MAAK,WACH,IAAMQ,EAAQL,IAAIP,KAAKc,aAAcd,KAAKU,WAC1C,YAActB,IAAVwB,EACKZ,KAAKe,aAELH,CAEX,EACAI,aAAY,WACV,OAAOhB,KAAKC,cAAgBD,KAAKG,MAAQH,KAAKI,KAChD,EACAF,WAAU,WACR,OAAOF,KAAKb,QAAUa,KAAKL,aAC7B,EACAM,cAAa,WACX,YAAiC,IAAnBD,KAAKP,UAA4BO,KAAKJ,iBAAmBI,KAAKP,SAC9E,EACAwB,mBAAkB,WAChB,OAAOV,IAAIP,KAAKQ,OAAOJ,MAAMK,cAAcS,aAAclB,KAAKzB,KAChE,EACA4C,wBAAuB,WACrB,MAAwB,UAApBnB,KAAKE,WAA+B,IACnCF,KAAKiB,oBAAsBjB,KAAKR,gCAC5BQ,KAAK9C,GAAG,CACb,aACA,kBAAgBkE,QAAAC,EAAAA,EAAAA,GACbrB,KAAKU,UAAUY,KAAI,SAAAC,GAAC,OAAIA,EAAEC,QAAQ,MAAO,QAAQ,KAAC,CACrD,UACAC,KAAK,MAEAzB,KAAKV,wBACe,QADQoC,EAC/B1B,KAAKiB,0BAAkB,IAAAS,OAAA,EAAvBA,EAAyBC,YACF,QADaC,EACpC5B,KAAKiB,0BAAkB,IAAAW,OAAA,EAAvBA,EAAyBC,MAHxB,IAAAH,EAAAE,CAKT,EACAE,8BAA6B,WAC3B,MAAwB,UAApB9B,KAAKE,WAA+B,GACpCF,KAAKX,gBAAwB,MAC5BW,KAAKiB,oBAAsBjB,KAAKT,2BAC5BS,KAAK9C,GAAG,CACb,aACA,kBAAgBkE,QAAAC,EAAAA,EAAAA,GACbrB,KAAKU,UAAUY,KAAI,SAAAC,GAAC,OAAIA,EAAEC,QAAQ,MAAO,QAAQ,KAAC,CACrD,gBACAC,KAAK,MAEAzB,KAAKV,wBACe,QADQyC,EAC/B/B,KAAKiB,0BAAkB,IAAAc,OAAA,EAAvBA,EAAyBF,MACF,QADOG,EAC9BhC,KAAKiB,0BAAkB,IAAAe,OAAA,EAAvBA,EAAyBL,YAHxB,IAAAI,EAAAC,CAKT,EACAC,8BAA6B,WAAI,IAAAC,EAC/B,OAA8B,QAA9BA,EAAOlC,KAAKiB,0BAAkB,IAAAiB,OAAA,EAAvBA,EAAyBC,WAClC,EACAC,iBAAgB,WACd,IAAMC,OAAkCjD,IAApBY,KAAKjB,WAA2BwB,IAAIP,KAAKc,aAAcd,KAAKjB,YAAc,KAC9F,OAAOiB,KAAKpB,UAA6B,OAAhByD,IAAwBrC,KAAKhB,aAAeqD,GAAeA,EACtF,EACAvB,aAAY,WACV,OAAQd,KAAKE,YACX,IAAK,UACH,OAAOF,KAAKQ,OAAOJ,MAAMkC,cAC3B,IAAK,QACH,OAAOtC,KAAKQ,OAAOJ,MAAMK,cAAc8B,OACzC,QACE,OAAOvC,KAAKQ,OAAOgC,QAAQC,aAEjC,EACAC,WAAU,WAAI,IAAAC,EAAA,KACZ,OAAQ3C,KAAKE,YACX,IAAK,UACH,OAAO,SAAC0C,EAAGC,GAAC,OAAKF,EAAKnC,OAAOsC,SAAS,mBAAoB,CAAEC,KAAMH,EAAGhC,MAAOiC,GAAI,EAClF,IAAK,QACH,OAAO,SAACD,EAAGC,GAAC,OAAKF,EAAKnC,OAAOsC,SAAS,mBAAoB,CAAEvE,KAAMqE,EAAGhC,MAAOiC,GAAI,EAClF,QACE,OAAO,SAACD,EAAGC,GAAC,OAAKF,EAAKnC,OAAOsC,SAAS,YAAa,CAAEC,KAAMH,EAAGhC,MAAOiC,GAAI,EAE/E,EACA9B,aAAY,WACV,MACO,YADCf,KAAKE,WAEF,CAAC,EAEDK,IAAIP,KAAKQ,OAAOgC,QAAQQ,cAAehD,KAAKzB,KAEzD,EACA0E,iBAAgB,WACd,MAA2B,YAApBjD,KAAKE,UACd,EACAgD,UAAS,WACP,OAAQlD,KAAKE,YACX,IAAK,UACL,IAAK,QACH,OAAO,EACT,QACE,OAAOF,KAAKI,QAAUJ,KAAKe,aAEjC,EACAL,UAAS,WACP,OAAOhC,MAAMyE,QAAQnD,KAAKzB,MAAQyB,KAAKzB,KAAOyB,KAAKzB,KAAK6E,MAAM,IAChE,EACAvF,QAAO,WACL,QAAwB,UAApBmC,KAAKE,YAA0BF,KAAKU,UAAU2C,OAAS,IAGlDrD,KAAKC,eAAiBD,KAAKG,QAAUH,KAAKI,KAErD,EACAjC,aAAY,WACV,MAA2B,UAApB6B,KAAKE,YAA0BF,KAAKQ,OAAOJ,MAAMK,cAAc6C,cAAcC,IAAIvD,KAAKU,UAAUe,KAAK,QAC9G,EACA+B,mBAAkB,WAChB,OAAQxD,KAAKf,QAAU,IAAMe,KAAKQ,OAAOJ,MAAMmC,OAAOkB,YAAc,CACtE,GAEFC,QAAS,CACPC,SAAQ,SAAEC,GACR,OAAOA,EAAEC,OAAOjD,KAClB,EACAkD,OAAM,SAAEF,GACF5D,KAAKC,cACPD,KAAKG,MAAQH,KAAK2D,SAASC,GAE3B5D,KAAK0C,WAAW1C,KAAKzB,KAAMyB,KAAK2D,SAASC,GAE7C,EACA5F,YAAW,WACLgC,KAAKC,eACPD,KAAK0C,WAAW1C,KAAKzB,KAAMyB,KAAKG,MAEpC,EACAlC,MAAK,WACC+B,KAAKC,cACPD,KAAKG,MAAQ4D,IAAU/D,KAAKI,OAE5B4D,IAAIhE,KAAKQ,OAAOgC,QAAQC,aAAczC,KAAKzB,KAAMwF,IAAU/D,KAAKe,cAEpE,EACA3C,UAAS,WAAI,IAAA6F,EAAA,KACX,GACO,UADCjE,KAAKE,WAET,OAAOF,KAAKQ,OAAOsC,SAAS,oBAAqB,CAAEvE,KAAMyB,KAAKzB,OAC3D2F,MAAK,WAAQD,EAAK9D,MAAQ8D,EAAK7D,KAAM,IAExC+D,QAAQC,KAAK,kCAEnB,G,mCExNJ,QAlB6B,WAAH,MAAU,CAClCC,KAAI,WACF,OAAOrE,KAAKQ,OAAOJ,MAAMkE,MAAMC,WACjC,EACAd,YAAW,WACT,OAAOzD,KAAKQ,OAAOgC,QAAQC,aAAagB,YAAc,CACxD,EACAhB,aAAY,WACV,OAAOzC,KAAKQ,OAAOgC,QAAQC,YAC7B,EACA+B,YAAW,WACT,OAAOxE,KAAKQ,OAAOJ,MAAMK,cAAc8B,MACzC,EACAkC,WAAU,WACR,OAAOzE,KAAKQ,OAAOJ,MAAMK,cAAcN,KACzC,EACD,C,qECbG/D,MAAM,kB,omBCAV,QAAAsI,EAAAA,EAAA,GACKC,EAAAA,GAAO,IACVlI,MAAKiI,EAAAA,EAAA,GACAC,EAAAA,EAAAA,OAAa,IAChBC,mBAAoB,CAACnG,OAAQoG,UAE/BtI,WAAUmI,EAAAA,EAAA,GACLC,EAAAA,EAAAA,YAAkB,IACrBG,SAAAA,EAAAA,IAEFzE,SAAQqE,EAAAA,EAAA,GACHC,EAAAA,EAAAA,UAAgB,IACnBI,gBAAe,WACb,OAAO/E,KAAKgB,eAAiBhB,KAAK4E,kBACpC,IAEFlB,QAAOgB,EAAAA,EAAA,GACFC,EAAAA,EAAAA,SAAe,IAClBhB,SAAQ,SAAEC,GAER,OAAM5D,KAAK4E,qBAAuBhB,IAA2B,IAAtB5D,KAAKgB,aAEnChB,KAAK4E,mBAEPhB,CACT,MCrBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,yJFHjD3G,EAAAuG,qBAAkB,WAD1B5G,EAAAA,EAAAA,IAoCQ,QApCRC,EAoCQ,EAhCNC,EAAAA,EAAAA,IAkBWkI,EAAA,CAjBR,cAAa/H,EAAA+D,aACbpC,SAAU3B,EAAAmF,iBACV6C,cAAehI,EAAA8H,gBACf,sBAAmB9H,EAAA6G,Q,mBAEpB,iBAWO,EAXPvG,EAAAA,EAAAA,GAWO,QAVLnB,OAAK8I,EAAAA,EAAAA,IAAA,CAAC,QAAO,OACMjI,EAAAmF,qB,CAEHnF,EAAAkE,0BAAuB,WAAvCvE,EAAAA,EAAAA,IAEWuI,EAAAA,GAAA,CAAAC,IAAA,sBADNnI,EAAAkE,yBAAuB,SAEI,UAAXlE,EAAAkC,SAAM,WAA3BvC,EAAAA,EAAAA,IAEWuI,EAAAA,GAAA,CAAAC,IAAA,aAF8B,uBACrB3H,EAAAA,EAAAA,IAAGR,EAAAsB,MAAI,UAE3B8G,EAAAA,EAAAA,IAAepI,EAAAqI,OAAA,WAAAF,IAAA,Q,8EAGnBtI,EAAAA,EAAAA,IAGEyI,EAAA,CAFC5I,QAASM,EAAAiG,UACTsC,QAASvI,EAAAgB,O,+BAEZnB,EAAAA,EAAAA,IAA0D2I,EAAA,CAAhC,aAAYxI,EAAAgG,kBAAgB,wBACtDnG,EAAAA,EAAAA,IAAgB4I,GAERzI,EAAA6E,gCAA6B,WADrClF,EAAAA,EAAAA,IAMI,K,MAJFR,OAAK8I,EAAAA,EAAAA,IAAA,CAAC,sBAAqB,OACRjI,EAAAmF,sB,QAEhBnF,EAAA6E,8BAAgC,KAAH,sC,yEGhClC1F,MAAM,iB,qBA+BJA,MAAM,uB,omBC/BZ,QAAAsI,EAAAA,EAAA,GACKC,EAAAA,GAAO,IACVpI,WAAUmI,EAAAA,EAAA,GACLC,EAAAA,EAAAA,YAAkB,IACrBgB,OAAAA,EAAAA,IAEFlJ,MAAKiI,EAAAA,EAAA,GACAC,EAAAA,EAAAA,OAAa,IAChBiB,QAAS,CACPpH,KAAME,MACNC,UAAU,GAEZkH,eAAgB,CACdrH,KAAMqG,OACNlG,UAAU,EACVG,QAAS,CAAC,KAGduB,SAAQqE,EAAAA,EAAA,GACHC,EAAAA,EAAAA,UAAgB,IACnBmB,YAAW,WAAI,IAAAnD,EAAA,KACb,MAAwB,UAApB3C,KAAKE,WACAF,KAAKiC,8BAA8BX,KAAI,SAAAyE,GAAC,MAAK,CAClDX,IAAKW,EACLnF,MAAOmF,EACPlE,MAAOc,EAAKkD,eAAeE,IAAMA,EAClC,IAEI/F,KAAK4F,OACd,IAEFlC,QAAOgB,EAAAA,EAAA,GACFC,EAAAA,EAAAA,SAAe,IAClBhB,SAAQ,SAAEC,GACR,OAAOA,CACT,MC/BJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,uJFHjD3G,EAAAuG,qBAAkB,WAD1B5G,EAAAA,EAAAA,IAqCQ,QArCRC,EAqCQ,CAjCUI,EAAAkE,0BAAuB,WAAvCvE,EAAAA,EAAAA,IAEWuI,EAAAA,GAAA,CAAAC,IAAA,sBADNnI,EAAAkE,yBAAuB,UAG1BkE,EAAAA,EAAAA,IAAQpI,EAAAqI,OAAA,WAAAF,IAAA,aACC,KACX3H,EAAAA,EAAAA,IAAG,KAAM,MACTX,EAAAA,EAAAA,IAaSkJ,EAAA,CAZN,cAAa/I,EAAAgD,cAAgBhD,EAAAkD,MAAOlD,EAAAmD,MACpCxB,SAAU3B,EAAA2B,SACV,sBAAmB3B,EAAA6G,Q,mBAGlB,iBAA6B,gBAD/BlH,EAAAA,EAAAA,IAOSuI,EAAAA,GAAA,MAAAc,EAAAA,EAAAA,IANUhJ,EAAA6I,aAAW,SAArBI,G,kBADTtJ,EAAAA,EAAAA,IAOS,UALNwI,IAAKc,EAAOd,IACZxE,MAAOsF,EAAOtF,Q,QAEZsF,EAAOrE,OAAQ,KAClBpE,EAAAA,EAAAA,IAAGyI,EAAOtF,QAAU3D,EAAA8D,aAAe9D,EAAAC,GAAG,oCAAsC,IAAvC,EAAAM,E,wEAGzCV,EAAAA,EAAAA,IAGEyI,EAAA,CAFC5I,QAASM,EAAAiG,UACTsC,QAASvI,EAAAgB,O,+BAEZnB,EAAAA,EAAAA,IAA0D2I,EAAA,CAAhC,aAAYxI,EAAAgG,kBAAgB,wBACtDnG,EAAAA,EAAAA,IAAgB4I,GAERzI,EAAA6E,gCAA6B,WADrClF,EAAAA,EAAAA,IAKI,IALJsB,GAKIT,EAAAA,EAAAA,IADCR,EAAA6E,8BAAgC,KAAH,sC,sDGzBtC,SACEvF,WAAY,CACV4J,c,SAAAA,ICNJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wEDJzDrI,EAAAA,EAAAA,IAKgBsI,GALhBC,EAAAA,EAAAA,IACUpJ,EAIMqJ,OAJA,CACdC,SAAS,MAAG,C,kBAEZ,iBAAQ,EAARlB,EAAAA,EAAAA,IAAQpI,EAAAqI,OAAA,W,qFEFRlJ,MAAM,iB,4oBCDV,QAAAsI,EAAAA,EAAA,GACKC,EAAAA,GAAO,IACVlI,MAAKiI,EAAAA,EAAA,GACAC,EAAAA,EAAAA,OAAa,IAChB4B,SAAU,CACR/H,KAAMU,OACNP,UAAU,EACVG,QAAS,KAGb4E,QAAOgB,EAAAA,EAAA,GACFC,EAAAA,EAAAA,SAAe,IAClBhB,SAAQ,SAAEC,GACR,OAAuB,KAAlB5D,KAAKuG,SACDC,SAAS5C,EAAEC,OAAOjD,OAChBZ,KAAKuG,SAAW,EAClBE,KAAKC,MAAM9C,EAAEC,OAAOjD,MAAQZ,KAAKuG,UAAYvG,KAAKuG,SAEpDI,WAAW/C,EAAEC,OAAOjD,MAC7B,MCdJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,kIFHjD3D,EAAAuG,qBAAkB,WAD1B5G,EAAAA,EAAAA,IAwCO,OAxCPC,EAwCO,EApCLU,EAAAA,EAAAA,GAWQ,SAVLqJ,IAAK3J,EAAAsB,KACLnC,OAAK8I,EAAAA,EAAAA,IAAA,OAAajI,EAAAmF,oB,CAEHnF,EAAAkE,0BAAuB,WAAvCvE,EAAAA,EAAAA,IAEWuI,EAAAA,GAAA,CAAAC,IAAA,sBADNnI,EAAAkE,wBAA0B,KAAH,SAEI,UAAXlE,EAAAkC,SAAM,WAA3BvC,EAAAA,EAAAA,IAEWuI,EAAAA,GAAA,CAAAC,IAAA,aAF8B,uBACrB3H,EAAAA,EAAAA,IAAGR,EAAAsB,MAAI,UAE3B8G,EAAAA,EAAAA,IAAepI,EAAAqI,OAAA,WAAAF,IAAA,YAEjB7H,EAAAA,EAAAA,GASC,SAREsJ,GAAI5J,EAAAsB,KACLnC,MAAM,eACNoC,KAAK,SACJsI,KAAM7J,EAAA6J,MAAQ,EACdlI,SAAU3B,EAAAmF,iBACV2E,IAAK9J,EAAA8J,KAAO,EACZnG,MAAO3D,EAAAgD,cAAgBhD,EAAAkD,MAAOlD,EAAAmD,MAC9B4G,SAAMC,EAAA,KAAAA,EAAA,qBAAEhK,EAAA6G,QAAA7G,EAAA6G,OAAAoD,MAAAjK,EAAAkK,UAAM,I,oBAChB,KACD1J,EAAAA,EAAAA,IAAG,KAAM,MACTX,EAAAA,EAAAA,IAGEyI,EAAA,CAFC5I,QAASM,EAAAiG,UACTsC,QAASvI,EAAAgB,O,+BAEZnB,EAAAA,EAAAA,IAA0D2I,EAAA,CAAhC,aAAYxI,EAAAgG,kBAAgB,wBACtDnG,EAAAA,EAAAA,IAAgB4I,GAERzI,EAAA6E,gCAA6B,WADrClF,EAAAA,EAAAA,IAMI,K,MAJFR,OAAK8I,EAAAA,EAAAA,IAAA,CAAC,sBAAqB,OACRjI,EAAAmF,sB,QAEhBnF,EAAA6E,8BAAgC,KAAH,sC,yEGpClC1F,MAAM,2B,GAaGA,MAAM,0B,gCAanBC,EAAAA,GAAAA,IACE+K,EAAAA,KAGF,SACE7K,WAAY,CAAEC,QAAAA,EAAAA,SACdC,MAAO,CAAC,cC1BV,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,4EDLjDC,EAAA2K,YAAS,WADjBzK,EAAAA,EAAAA,IAoBO,OApBPC,EAoBO,EAhBLC,EAAAA,EAAAA,IAeUC,EAAA,CAdRC,QAAQ,SAAO,CAEJA,SAAOG,EAAAA,EAAAA,KAAC,iBAEjB,UAFiB,QAEjBL,EAAAA,EAAAA,IAGEM,EAAA,CAFAC,KAAK,SACJ,aAAYJ,EAAAC,GAAG,iC,2BAGTI,SAAOH,EAAAA,EAAAA,KAChB,iBAEM,EAFNI,EAAAA,EAAAA,GAEM,MAFNC,GAEMC,EAAAA,EAAAA,IADDR,EAAAC,GAAG,iCAAD,G","sources":["webpack://pleroma_fe/./src/components/settings_modal/helpers/modified_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/modified_indicator.vue?d3ff","webpack://pleroma_fe/./src/components/settings_modal/helpers/draft_buttons.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/draft_buttons.vue?91f0","webpack://pleroma_fe/./src/components/settings_modal/helpers/shared_computed_object.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/boolean_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/boolean_setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/boolean_setting.vue?ef04","webpack://pleroma_fe/./src/components/settings_modal/helpers/choice_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/choice_setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/choice_setting.vue?672b","webpack://pleroma_fe/./src/components/settings_modal/helpers/integer_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/integer_setting.vue?de6c","webpack://pleroma_fe/./src/components/settings_modal/helpers/number_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/number_setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/number_setting.vue?23da","webpack://pleroma_fe/./src/components/settings_modal/helpers/profile_setting_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/profile_setting_indicator.vue?c40d"],"sourcesContent":["<template>\n <span\n v-if=\"changed\"\n class=\"ModifiedIndicator\"\n >\n <Popover\n trigger=\"hover\"\n :trigger-attrs=\"{ 'aria-label': $t('settings.setting_changed') }\"\n >\n <template #trigger>\n &nbsp;\n <FAIcon\n icon=\"wrench\"\n />\n </template>\n <template #content>\n <div class=\"modified-tooltip\">\n {{ $t('settings.setting_changed') }}\n </div>\n </template>\n </Popover>\n </span>\n</template>\n\n<script>\nimport Popover from 'src/components/popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faWrench\n)\n\nexport default {\n components: { Popover },\n props: ['changed']\n}\n</script>\n\n<style lang=\"scss\">\n.ModifiedIndicator {\n display: inline-block;\n position: relative;\n}\n\n.modified-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n</style>\n","import { render } from \"./modified_indicator.vue?vue&type=template&id=b12efb1c\"\nimport script from \"./modified_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./modified_indicator.vue?vue&type=script&lang=js\"\n\nimport \"./modified_indicator.vue?vue&type=style&index=0&id=b12efb1c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<!-- this is a helper exclusive to Setting components -->\n<!-- TODO make it reusable -->\n<template>\n <span\n class=\"DraftButtons\"\n >\n <Popover\n v-if=\"$parent.isDirty\"\n trigger=\"hover\"\n normal-button\n :trigger-attrs=\"{ 'aria-label': $t('settings.commit_value_tooltip') }\"\n @click=\"$parent.commitDraft\"\n >\n <template #trigger>\n {{ $t('settings.commit_value') }}\n </template>\n <template #content>\n <div class=\"modified-tooltip\">\n {{ $t('settings.commit_value_tooltip') }}\n </div>\n </template>\n </Popover>\n <Popover\n v-if=\"$parent.isDirty\"\n trigger=\"hover\"\n normal-button\n :trigger-attrs=\"{ 'aria-label': $t('settings.reset_value_tooltip') }\"\n @click=\"$parent.reset\"\n >\n <template #trigger>\n {{ $t('settings.reset_value') }}\n </template>\n <template #content>\n <div class=\"modified-tooltip\">\n {{ $t('settings.reset_value_tooltip') }}\n </div>\n </template>\n </Popover>\n <Popover\n v-if=\"$parent.canHardReset\"\n trigger=\"hover\"\n normal-button\n :trigger-attrs=\"{ 'aria-label': $t('settings.hard_reset_value_tooltip') }\"\n @click=\"$parent.hardReset\"\n >\n <template #trigger>\n {{ $t('settings.hard_reset_value') }}\n </template>\n <template #content>\n <div class=\"modified-tooltip\">\n {{ $t('settings.hard_reset_value_tooltip') }}\n </div>\n </template>\n </Popover>\n </span>\n</template>\n\n<script>\nimport Popover from 'src/components/popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faWrench\n)\n\nexport default {\n components: { Popover },\n props: ['changed']\n}\n</script>\n\n<style lang=\"scss\">\n.DraftButtons {\n display: inline-block;\n position: relative;\n\n .button-default {\n margin-left: 0.5em;\n }\n}\n\n.draft-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n</style>\n","import ModifiedIndicator from './modified_indicator.vue'\nimport ProfileSettingIndicator from './profile_setting_indicator.vue'\nimport DraftButtons from './draft_buttons.vue'\nimport { get, set, cloneDeep } from 'lodash'\n\nexport default {\n components: {\n ModifiedIndicator,\n DraftButtons,\n ProfileSettingIndicator\n },\n props: {\n path: {\n type: [String, Array],\n required: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n parentPath: {\n type: [String, Array]\n },\n parentInvert: {\n type: Boolean,\n default: false\n },\n expert: {\n type: [Number, String],\n default: 0\n },\n source: {\n type: String,\n default: undefined\n },\n hideDescription: {\n type: Boolean\n },\n swapDescriptionAndLabel: {\n type: Boolean\n },\n overrideBackendDescription: {\n type: Boolean\n },\n overrideBackendDescriptionLabel: {\n type: Boolean\n },\n draftMode: {\n type: Boolean,\n default: undefined\n }\n },\n inject: {\n defaultSource: {\n default: 'default'\n },\n defaultDraftMode: {\n default: false\n }\n },\n data () {\n return {\n localDraft: null\n }\n },\n created () {\n if (this.realDraftMode && this.realSource !== 'admin') {\n this.draft = this.state\n }\n },\n computed: {\n draft: {\n // TODO allow passing shared draft object?\n get () {\n if (this.realSource === 'admin') {\n return get(this.$store.state.adminSettings.draft, this.canonPath)\n } else {\n return this.localDraft\n }\n },\n set (value) {\n if (this.realSource === 'admin') {\n this.$store.commit('updateAdminDraft', { path: this.canonPath, value })\n } else {\n this.localDraft = value\n }\n }\n },\n state () {\n const value = get(this.configSource, this.canonPath)\n if (value === undefined) {\n return this.defaultState\n } else {\n return value\n }\n },\n visibleState () {\n return this.realDraftMode ? this.draft : this.state\n },\n realSource () {\n return this.source || this.defaultSource\n },\n realDraftMode () {\n return typeof this.draftMode === 'undefined' ? this.defaultDraftMode : this.draftMode\n },\n backendDescription () {\n return get(this.$store.state.adminSettings.descriptions, this.path)\n },\n backendDescriptionLabel () {\n if (this.realSource !== 'admin') return ''\n if (!this.backendDescription || this.overrideBackendDescriptionLabel) {\n return this.$t([\n 'admin_dash',\n 'temp_overrides',\n ...this.canonPath.map(p => p.replace(/\\./g, '_DOT_')),\n 'label'\n ].join('.'))\n } else {\n return this.swapDescriptionAndLabel\n ? this.backendDescription?.description\n : this.backendDescription?.label\n }\n },\n backendDescriptionDescription () {\n if (this.realSource !== 'admin') return ''\n if (this.hideDescription) return null\n if (!this.backendDescription || this.overrideBackendDescription) {\n return this.$t([\n 'admin_dash',\n 'temp_overrides',\n ...this.canonPath.map(p => p.replace(/\\./g, '_DOT_')),\n 'description'\n ].join('.'))\n } else {\n return this.swapDescriptionAndLabel\n ? this.backendDescription?.label\n : this.backendDescription?.description\n }\n },\n backendDescriptionSuggestions () {\n return this.backendDescription?.suggestions\n },\n shouldBeDisabled () {\n const parentValue = this.parentPath !== undefined ? get(this.configSource, this.parentPath) : null\n return this.disabled || (parentValue !== null ? (this.parentInvert ? parentValue : !parentValue) : false)\n },\n configSource () {\n switch (this.realSource) {\n case 'profile':\n return this.$store.state.profileConfig\n case 'admin':\n return this.$store.state.adminSettings.config\n default:\n return this.$store.getters.mergedConfig\n }\n },\n configSink () {\n switch (this.realSource) {\n case 'profile':\n return (k, v) => this.$store.dispatch('setProfileOption', { name: k, value: v })\n case 'admin':\n return (k, v) => this.$store.dispatch('pushAdminSetting', { path: k, value: v })\n default:\n return (k, v) => this.$store.dispatch('setOption', { name: k, value: v })\n }\n },\n defaultState () {\n switch (this.realSource) {\n case 'profile':\n return {}\n default:\n return get(this.$store.getters.defaultConfig, this.path)\n }\n },\n isProfileSetting () {\n return this.realSource === 'profile'\n },\n isChanged () {\n switch (this.realSource) {\n case 'profile':\n case 'admin':\n return false\n default:\n return this.state !== this.defaultState\n }\n },\n canonPath () {\n return Array.isArray(this.path) ? this.path : this.path.split('.')\n },\n isDirty () {\n if (this.realSource === 'admin' && this.canonPath.length > 3) {\n return false // should not show draft buttons for \"grouped\" values\n } else {\n return this.realDraftMode && this.draft !== this.state\n }\n },\n canHardReset () {\n return this.realSource === 'admin' && this.$store.state.adminSettings.modifiedPaths.has(this.canonPath.join(' -> '))\n },\n matchesExpertLevel () {\n return (this.expert || 0) <= this.$store.state.config.expertLevel > 0\n }\n },\n methods: {\n getValue (e) {\n return e.target.value\n },\n update (e) {\n if (this.realDraftMode) {\n this.draft = this.getValue(e)\n } else {\n this.configSink(this.path, this.getValue(e))\n }\n },\n commitDraft () {\n if (this.realDraftMode) {\n this.configSink(this.path, this.draft)\n }\n },\n reset () {\n if (this.realDraftMode) {\n this.draft = cloneDeep(this.state)\n } else {\n set(this.$store.getters.mergedConfig, this.path, cloneDeep(this.defaultState))\n }\n },\n hardReset () {\n switch (this.realSource) {\n case 'admin':\n return this.$store.dispatch('resetAdminSetting', { path: this.path })\n .then(() => { this.draft = this.state })\n default:\n console.warn('Hard reset not implemented yet!')\n }\n }\n }\n}\n","import { render } from \"./draft_buttons.vue?vue&type=template&id=774d0b13\"\nimport script from \"./draft_buttons.vue?vue&type=script&lang=js\"\nexport * from \"./draft_buttons.vue?vue&type=script&lang=js\"\n\nimport \"./draft_buttons.vue?vue&type=style&index=0&id=774d0b13&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const SharedComputedObject = () => ({\n user () {\n return this.$store.state.users.currentUser\n },\n expertLevel () {\n return this.$store.getters.mergedConfig.expertLevel > 0\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n adminConfig () {\n return this.$store.state.adminSettings.config\n },\n adminDraft () {\n return this.$store.state.adminSettings.draft\n }\n})\n\nexport default SharedComputedObject\n","<template>\n <label\n v-if=\"matchesExpertLevel\"\n class=\"BooleanSetting\"\n >\n <Checkbox\n :model-value=\"visibleState\"\n :disabled=\"shouldBeDisabled\"\n :indeterminate=\"isIndeterminate\"\n @update:modelValue=\"update\"\n >\n <span\n class=\"label\"\n :class=\"{ 'faint': shouldBeDisabled }\"\n >\n <template v-if=\"backendDescriptionLabel\">\n {{ backendDescriptionLabel }}\n </template>\n <template v-else-if=\"source === 'admin'\">\n MISSING LABEL FOR {{ path }}\n </template>\n <slot v-else />\n </span>\n </Checkbox>\n <ModifiedIndicator\n :changed=\"isChanged\"\n :onclick=\"reset\"\n />\n <ProfileSettingIndicator :is-profile=\"isProfileSetting\" />\n <DraftButtons />\n <p\n v-if=\"backendDescriptionDescription\"\n class=\"setting-description\"\n :class=\"{ 'faint': shouldBeDisabled }\"\n >\n {{ backendDescriptionDescription + ' ' }}\n </p>\n </label>\n</template>\n\n<script src=\"./boolean_setting.js\"></script>\n","import Checkbox from 'src/components/checkbox/checkbox.vue'\nimport Setting from './setting.js'\n\nexport default {\n ...Setting,\n props: {\n ...Setting.props,\n indeterminateState: [String, Object]\n },\n components: {\n ...Setting.components,\n Checkbox\n },\n computed: {\n ...Setting.computed,\n isIndeterminate () {\n return this.visibleState === this.indeterminateState\n }\n },\n methods: {\n ...Setting.methods,\n getValue (e) {\n // Basic tri-state toggle implementation\n if (!!this.indeterminateState && !e && this.visibleState === true) {\n // If we have indeterminate state, switching from true to false first goes through indeterminate\n return this.indeterminateState\n }\n return e\n }\n }\n}\n","import { render } from \"./boolean_setting.vue?vue&type=template&id=b37b84f0\"\nimport script from \"./boolean_setting.js?vue&type=script&lang=js\"\nexport * from \"./boolean_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n v-if=\"matchesExpertLevel\"\n class=\"ChoiceSetting\"\n >\n <template v-if=\"backendDescriptionLabel\">\n {{ backendDescriptionLabel }}\n </template>\n <template v-else>\n <slot />\n </template>\n {{ ' ' }}\n <Select\n :model-value=\"realDraftMode ? draft :state\"\n :disabled=\"disabled\"\n @update:modelValue=\"update\"\n >\n <option\n v-for=\"option in realOptions\"\n :key=\"option.key\"\n :value=\"option.value\"\n >\n {{ option.label }}\n {{ option.value === defaultState ? $t('settings.instance_default_simple') : '' }}\n </option>\n </Select>\n <ModifiedIndicator\n :changed=\"isChanged\"\n :onclick=\"reset\"\n />\n <ProfileSettingIndicator :is-profile=\"isProfileSetting\" />\n <DraftButtons />\n <p\n v-if=\"backendDescriptionDescription\"\n class=\"setting-description\"\n >\n {{ backendDescriptionDescription + ' ' }}\n </p>\n </label>\n</template>\n\n<script src=\"./choice_setting.js\"></script>\n","import Select from 'src/components/select/select.vue'\nimport Setting from './setting.js'\n\nexport default {\n ...Setting,\n components: {\n ...Setting.components,\n Select\n },\n props: {\n ...Setting.props,\n options: {\n type: Array,\n required: false\n },\n optionLabelMap: {\n type: Object,\n required: false,\n default: {}\n }\n },\n computed: {\n ...Setting.computed,\n realOptions () {\n if (this.realSource === 'admin') {\n return this.backendDescriptionSuggestions.map(x => ({\n key: x,\n value: x,\n label: this.optionLabelMap[x] || x\n }))\n }\n return this.options\n }\n },\n methods: {\n ...Setting.methods,\n getValue (e) {\n return e\n }\n }\n}\n","import { render } from \"./choice_setting.vue?vue&type=template&id=2d0bcb3b\"\nimport script from \"./choice_setting.js?vue&type=script&lang=js\"\nexport * from \"./choice_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <NumberSetting\n v-bind=\"$attrs\"\n truncate=\"1\"\n >\n <slot />\n </NumberSetting>\n</template>\n\n<script>\nimport NumberSetting from './number_setting.vue'\nexport default {\n components: {\n NumberSetting\n }\n}\n</script>\n","import { render } from \"./integer_setting.vue?vue&type=template&id=0a318fae\"\nimport script from \"./integer_setting.vue?vue&type=script&lang=js\"\nexport * from \"./integer_setting.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n v-if=\"matchesExpertLevel\"\n class=\"NumberSetting\"\n >\n <label\n :for=\"path\"\n :class=\"{ 'faint': shouldBeDisabled }\"\n >\n <template v-if=\"backendDescriptionLabel\">\n {{ backendDescriptionLabel + ' ' }}\n </template>\n <template v-else-if=\"source === 'admin'\">\n MISSING LABEL FOR {{ path }}\n </template>\n <slot v-else />\n </label>\n <input\n :id=\"path\"\n class=\"number-input\"\n type=\"number\"\n :step=\"step || 1\"\n :disabled=\"shouldBeDisabled\"\n :min=\"min || 0\"\n :value=\"realDraftMode ? draft :state\"\n @change=\"update\"\n >\n {{ ' ' }}\n <ModifiedIndicator\n :changed=\"isChanged\"\n :onclick=\"reset\"\n />\n <ProfileSettingIndicator :is-profile=\"isProfileSetting\" />\n <DraftButtons />\n <p\n v-if=\"backendDescriptionDescription\"\n class=\"setting-description\"\n :class=\"{ 'faint': shouldBeDisabled }\"\n >\n {{ backendDescriptionDescription + ' ' }}\n </p>\n </span>\n</template>\n\n<script src=\"./number_setting.js\"></script>\n","import Setting from './setting.js'\n\nexport default {\n ...Setting,\n props: {\n ...Setting.props,\n truncate: {\n type: Number,\n required: false,\n default: 1\n }\n },\n methods: {\n ...Setting.methods,\n getValue (e) {\n if (!this.truncate === 1) {\n return parseInt(e.target.value)\n } else if (this.truncate > 1) {\n return Math.trunc(e.target.value / this.truncate) * this.truncate\n }\n return parseFloat(e.target.value)\n }\n }\n}\n","import { render } from \"./number_setting.vue?vue&type=template&id=7c718ca2\"\nimport script from \"./number_setting.js?vue&type=script&lang=js\"\nexport * from \"./number_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n v-if=\"isProfile\"\n class=\"ProfileSettingIndicator\"\n >\n <Popover\n trigger=\"hover\"\n >\n <template #trigger>\n &nbsp;\n <FAIcon\n icon=\"server\"\n :aria-label=\"$t('settings.setting_server_side')\"\n />\n </template>\n <template #content>\n <div class=\"profilesetting-tooltip\">\n {{ $t('settings.setting_server_side') }}\n </div>\n </template>\n </Popover>\n </span>\n</template>\n\n<script>\nimport Popover from 'src/components/popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faServer } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faServer\n)\n\nexport default {\n components: { Popover },\n props: ['isProfile']\n}\n</script>\n\n<style lang=\"scss\">\n.ProfileSettingIndicator {\n display: inline-block;\n position: relative;\n}\n\n.profilesetting-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n</style>\n","import { render } from \"./profile_setting_indicator.vue?vue&type=template&id=0ce87ea6\"\nimport script from \"./profile_setting_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./profile_setting_indicator.vue?vue&type=script&lang=js\"\n\nimport \"./profile_setting_indicator.vue?vue&type=style&index=0&id=0ce87ea6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"names":["class","library","faWrench","components","Popover","props","$props","changed","_createElementBlock","_hoisted_1","_createVNode","_component_Popover","trigger","_ctx","$t","_withCtx","_component_FAIcon","icon","content","_createElementVNode","_hoisted_2","_toDisplayString","ModifiedIndicator","DraftButtons","$parent","isDirty","_createBlock","onClick","commitDraft","reset","_hoisted_3","canHardReset","hardReset","_hoisted_4","ProfileSettingIndicator","path","type","String","Array","required","disabled","Boolean","default","parentPath","parentInvert","expert","Number","source","undefined","hideDescription","swapDescriptionAndLabel","overrideBackendDescription","overrideBackendDescriptionLabel","draftMode","inject","defaultSource","defaultDraftMode","data","localDraft","created","this","realDraftMode","realSource","draft","state","computed","get","_get","$store","adminSettings","canonPath","set","value","commit","configSource","defaultState","visibleState","backendDescription","descriptions","backendDescriptionLabel","concat","_toConsumableArray","map","p","replace","join","_this$backendDescript","description","_this$backendDescript2","label","backendDescriptionDescription","_this$backendDescript3","_this$backendDescript4","backendDescriptionSuggestions","_this$backendDescript5","suggestions","shouldBeDisabled","parentValue","profileConfig","config","getters","mergedConfig","configSink","_this","k","v","dispatch","name","defaultConfig","isProfileSetting","isChanged","isArray","split","length","modifiedPaths","has","matchesExpertLevel","expertLevel","methods","getValue","e","target","update","_cloneDeep","_set","_this2","then","console","warn","user","users","currentUser","adminConfig","adminDraft","_objectSpread","Setting","indeterminateState","Object","Checkbox","isIndeterminate","_component_Checkbox","indeterminate","_normalizeClass","_Fragment","key","_renderSlot","$slots","_component_ModifiedIndicator","onclick","_component_ProfileSettingIndicator","_component_DraftButtons","Select","options","optionLabelMap","realOptions","x","_component_Select","_renderList","option","NumberSetting","_component_NumberSetting","_mergeProps","$attrs","truncate","parseInt","Math","trunc","parseFloat","for","id","step","min","onChange","_cache","apply","arguments","faServer","isProfile"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/9114.e761a1c6846fea99aaf1.js b/priv/static/static/js/9114.e761a1c6846fea99aaf1.js @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[9114],{9114:(e,t,n)=>{n.r(t),n.d(t,{default:()=>Ti});var l=n(66252),a=["label"],o=["label"],s=["label"],r=["label"],i=["label"],u=["label"],c=["label"],d=["label"],p=["label"],m=n(79354),f=n(3577),h=["label"],g={class:"setting-item"},b={class:"setting-item"},w={class:"setting-item"},_={class:"setting-item"},k={class:"setting-item"},v={class:"setting-item"},y={class:"setting-item"},$=(0,l._)("th",null,null,-1),C={class:"actions"},V=["href"],T={key:1},U={key:2},x={key:3},L={key:0,class:"alert error"},O=["title"],W={key:1},z={key:2},S=n(4942),P={class:"importer"},D={key:2},I={key:3},j=n(9382),B=n(84131);j.vI.add(B.IJ7,B.NBC);const A={props:{submitHandler:{type:Function,required:!0},submitButtonLabel:{type:String},successMessage:{type:String},errorMessage:{type:String}},data:function(){return{file:null,error:!1,success:!1,submitting:!1}},methods:{change:function(){this.file=this.$refs.input.files[0]},submit:function(){var e=this;this.dismiss(),this.submitting=!0,this.submitHandler(this.file).then((function(){e.success=!0})).catch((function(){e.error=!0})).finally((function(){e.submitting=!1}))},dismiss:function(){this.success=!1,this.error=!1}}};var E=n(83744);const F=(0,E.Z)(A,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("FAIcon");return(0,l.wg)(),(0,l.iD)("div",P,[(0,l._)("form",null,[(0,l._)("input",{ref:"input",type:"file",onChange:t[0]||(t[0]=function(){return e.change&&e.change.apply(e,arguments)})},null,544)]),e.submitting?((0,l.wg)(),(0,l.j4)(r,{key:0,class:"importer-uploading",spin:"",icon:"circle-notch"})):((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.submit&&e.submit.apply(e,arguments)})},(0,f.zw)(e.submitButtonLabel||e.$t("importer.submit")),1)),e.success?((0,l.wg)(),(0,l.iD)("div",D,[(0,l._)("button",{class:"button-unstyled",onClick:t[2]||(t[2]=function(){return e.dismiss&&e.dismiss.apply(e,arguments)})},[(0,l.Wm)(r,{icon:"times"})]),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l._)("span",null,(0,f.zw)(e.successMessage||e.$t("importer.success")),1)])):e.error?((0,l.wg)(),(0,l.iD)("div",I,[(0,l._)("button",{class:"button-unstyled",onClick:t[3]||(t[3]=function(){return e.dismiss&&e.dismiss.apply(e,arguments)})},[(0,l.Wm)(r,{icon:"times"})]),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l._)("span",null,(0,f.zw)(e.errorMessage||e.$t("importer.error")),1)])):(0,l.kq)("",!0)])}]]);var q={class:"exporter"},Z={key:0};j.vI.add(B.IJ7);const M={props:{getContent:{type:Function,required:!0},filename:{type:String,default:"export.csv"},exportButtonLabel:{type:String},processingMessage:{type:String}},data:function(){return{processing:!1}},methods:{process:function(){var e=this;this.processing=!0,this.getContent().then((function(t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),n.setAttribute("download",e.filename),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),setTimeout((function(){e.processing=!1}),2e3)}))}}},R=(0,E.Z)(M,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("FAIcon");return(0,l.wg)(),(0,l.iD)("div",q,[e.processing?((0,l.wg)(),(0,l.iD)("div",Z,[(0,l.Wm)(r,{icon:"circle-notch",size:"lg",spin:""}),(0,l._)("span",null,(0,f.zw)(e.processingMessage||e.$t("exporter.processing")),1)])):((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",onClick:t[0]||(t[0]=function(){return e.process&&e.process.apply(e,arguments)})},(0,f.zw)(e.exportButtonLabel||e.$t("exporter.export")),1))])}]]);var N=n(90350),H=n(989);function Y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}const K={data:function(){return{activeTab:"profile",newDomainToMute:"",listBackupsError:!1,addBackupError:!1,addedBackup:!1,backups:[]}},created:function(){this.$store.dispatch("fetchTokens"),this.fetchBackups()},components:{Importer:F,Exporter:R,Checkbox:N.Z},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Y(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Y(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},(0,H.rn)({backendInteractor:function(e){return e.api.backendInteractor},user:function(e){return e.users.currentUser}})),methods:{getFollowsContent:function(){return this.backendInteractor.exportFriends({id:this.user.id}).then(this.generateExportableUsersContent)},getBlocksContent:function(){return this.backendInteractor.fetchBlocks().then(this.generateExportableUsersContent)},getMutesContent:function(){return this.backendInteractor.fetchMutes().then(this.generateExportableUsersContent)},importFollows:function(e){return this.backendInteractor.importFollows({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importBlocks:function(e){return this.backendInteractor.importBlocks({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importMutes:function(e){return this.backendInteractor.importMutes({file:e}).then((function(e){if(!e)throw new Error("failed")}))},generateExportableUsersContent:function(e){return e.map((function(e){return e&&e.is_local?e.screen_name+"@"+location.hostname:e.screen_name})).join("\n")},addBackup:function(){var e=this;this.$store.state.api.backendInteractor.addBackup().then((function(t){e.addedBackup=!0,e.addBackupError=!1})).catch((function(t){e.addedBackup=!1,e.addBackupError=t})).then((function(){return e.fetchBackups()}))},fetchBackups:function(){var e=this;this.$store.state.api.backendInteractor.listBackups().then((function(t){e.backups=t,e.listBackupsError=!1})).catch((function(t){e.listBackupsError=t.error}))}}},G=(0,E.Z)(K,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("Importer"),i=(0,l.up)("Exporter"),u=(0,l.up)("FAIcon");return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.data_import_export_tab")},[(0,l._)("div",g,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.follow_import")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.import_followers_from_a_csv_file")),1),(0,l.Wm)(r,{"submit-handler":e.importFollows,"success-message":e.$t("settings.follows_imported"),"error-message":e.$t("settings.follow_import_error")},null,8,["submit-handler","success-message","error-message"])]),(0,l._)("div",b,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.follow_export")),1),(0,l.Wm)(i,{"get-content":e.getFollowsContent,filename:"friends.csv","export-button-label":e.$t("settings.follow_export_button")},null,8,["get-content","export-button-label"])]),(0,l._)("div",w,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.block_import")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.import_blocks_from_a_csv_file")),1),(0,l.Wm)(r,{"submit-handler":e.importBlocks,"success-message":e.$t("settings.blocks_imported"),"error-message":e.$t("settings.block_import_error")},null,8,["submit-handler","success-message","error-message"])]),(0,l._)("div",_,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.block_export")),1),(0,l.Wm)(i,{"get-content":e.getBlocksContent,filename:"blocks.csv","export-button-label":e.$t("settings.block_export_button")},null,8,["get-content","export-button-label"])]),(0,l._)("div",k,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.mute_import")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.import_mutes_from_a_csv_file")),1),(0,l.Wm)(r,{"submit-handler":e.importMutes,"success-message":e.$t("settings.mutes_imported"),"error-message":e.$t("settings.mute_import_error")},null,8,["submit-handler","success-message","error-message"])]),(0,l._)("div",v,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.mute_export")),1),(0,l.Wm)(i,{"get-content":e.getMutesContent,filename:"mutes.csv","export-button-label":e.$t("settings.mute_export_button")},null,8,["get-content","export-button-label"])]),(0,l._)("div",y,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.account_backup")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.account_backup_description")),1),(0,l._)("table",null,[(0,l._)("thead",null,[(0,l._)("tr",null,[(0,l._)("th",null,(0,f.zw)(e.$t("settings.account_backup_table_head")),1),$])]),(0,l._)("tbody",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.backups,(function(t){return(0,l.wg)(),(0,l.iD)("tr",{key:t.id},[(0,l._)("td",null,(0,f.zw)(t.inserted_at),1),(0,l._)("td",C,[t.processed?((0,l.wg)(),(0,l.iD)("a",{key:0,target:"_blank",href:t.url},(0,f.zw)(e.$t("settings.download_backup")),9,V)):"running"===t.state?((0,l.wg)(),(0,l.iD)("span",T,(0,f.zw)(e.$tc("settings.backup_running",t.processed_number,{number:t.processed_number})),1)):"failed"===t.state?((0,l.wg)(),(0,l.iD)("span",U,(0,f.zw)(e.$t("settings.backup_failed")),1)):((0,l.wg)(),(0,l.iD)("span",x,(0,f.zw)(e.$t("settings.backup_not_ready")),1))])])})),128))])]),e.listBackupsError?((0,l.wg)(),(0,l.iD)("div",L,[(0,l.Uk)((0,f.zw)(e.$t("settings.list_backups_error",{error:e.error}))+" ",1),(0,l._)("button",{title:e.$t("settings.hide_list_backups_error_action"),onClick:t[0]||(t[0]=function(t){return e.listBackupsError=!1})},[(0,l.Wm)(u,{class:"fa-scale-110 fa-old-padding",icon:"times"})],8,O)])):(0,l.kq)("",!0),(0,l._)("button",{class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.addBackup&&e.addBackup.apply(e,arguments)})},(0,f.zw)(e.$t("settings.add_backup")),1),e.addedBackup?((0,l.wg)(),(0,l.iD)("p",W,(0,f.zw)(e.$t("settings.added_backup")),1)):(0,l.kq)("",!0),!1!==e.addBackupError?((0,l.wg)(),(0,l.iD)("p",z,(0,f.zw)(e.$t("settings.add_backup_error",{error:e.addBackupError})),1)):(0,l.kq)("",!0)])],8,h)}]]);var J=["label"],Q={class:"usersearch-wrapper"},X={class:"bulk-actions"},ee=["label"],te=["label"],ne={class:"usersearch-wrapper"},le={class:"bulk-actions"},ae=["label"],oe={class:"domain-mute-form"},se={class:"bulk-actions"},re=n(27361),ie=n.n(re),ue=n(35161),ce=n.n(ue),de=n(43063),pe=n.n(de),me=n(49963),fe={class:"autosuggest"},he=["placeholder"],ge={key:0,class:"autosuggest-results"};const be={props:{query:{type:Function,required:!0},filter:{type:Function},placeholder:{type:String,default:"Search..."}},data:function(){return{term:"",timeout:null,results:[],resultsVisible:!1}},computed:{filtered:function(){return this.filter?this.filter(this.results):this.results}},watch:{term:function(e){this.fetchResults(e)}},methods:{fetchResults:function(e){var t=this;clearTimeout(this.timeout),this.timeout=setTimeout((function(){t.results=[],e&&t.query(e).then((function(e){t.results=e}))}),500)},onInputClick:function(){this.resultsVisible=!0},onClickOutside:function(){this.resultsVisible=!1}}},we=(0,E.Z)(be,[["render",function(e,t,n,a,o,s){var r=(0,l.Q2)("click-outside");return(0,l.wy)(((0,l.wg)(),(0,l.iD)("div",fe,[(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.term=t}),placeholder:e.placeholder,class:"autosuggest-input",onClick:t[1]||(t[1]=function(){return e.onInputClick&&e.onInputClick.apply(e,arguments)})},null,8,he),[[me.nr,e.term]]),e.resultsVisible&&e.filtered.length>0?((0,l.wg)(),(0,l.iD)("div",ge,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.filtered,(function(t){return(0,l.WI)(e.$slots,"default",{item:t})})),256))])):(0,l.kq)("",!0)])),[[r,e.onClickOutside]])}]]);var _e={class:"block-card-content-container"},ke=["disabled"],ve=["disabled"],ye=n(29076);const $e={props:["userId"],data:function(){return{progress:!1}},computed:{user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},blocked:function(){return this.relationship.blocking}},components:{BasicUserCard:ye.Z},methods:{unblockUser:function(){var e=this;this.progress=!0,this.$store.dispatch("unblockUser",this.user.id).then((function(){e.progress=!1}))},blockUser:function(){var e=this;this.progress=!0,this.$store.dispatch("blockUser",this.user.id).then((function(){e.progress=!1}))}}},Ce=(0,E.Z)($e,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("basic-user-card");return(0,l.wg)(),(0,l.j4)(r,{user:e.user},{default:(0,l.w5)((function(){return[(0,l._)("div",_e,[e.blocked?((0,l.wg)(),(0,l.iD)("button",{key:0,class:"btn button-default",disabled:e.progress,onClick:t[0]||(t[0]=function(){return e.unblockUser&&e.unblockUser.apply(e,arguments)})},[e.progress?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Uk)((0,f.zw)(e.$t("user_card.unblock_progress")),1)],64)):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Uk)((0,f.zw)(e.$t("user_card.unblock")),1)],64))],8,ke)):((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",disabled:e.progress,onClick:t[1]||(t[1]=function(){return e.blockUser&&e.blockUser.apply(e,arguments)})},[e.progress?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Uk)((0,f.zw)(e.$t("user_card.block_progress")),1)],64)):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Uk)((0,f.zw)(e.$t("user_card.block")),1)],64))],8,ve))])]})),_:1},8,["user"])}]]);var Ve={class:"mute-card-content-container"},Te=["disabled"],Ue=["disabled"];const xe={props:["userId"],data:function(){return{progress:!1}},computed:{user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},muted:function(){return this.relationship.muting}},components:{BasicUserCard:ye.Z},methods:{unmuteUser:function(){var e=this;this.progress=!0,this.$store.dispatch("unmuteUser",this.userId).then((function(){e.progress=!1}))},muteUser:function(){var e=this;this.progress=!0,this.$store.dispatch("muteUser",this.userId).then((function(){e.progress=!1}))}}},Le=(0,E.Z)(xe,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("basic-user-card");return(0,l.wg)(),(0,l.j4)(r,{user:e.user},{default:(0,l.w5)((function(){return[(0,l._)("div",Ve,[e.muted?((0,l.wg)(),(0,l.iD)("button",{key:0,class:"btn button-default",disabled:e.progress,onClick:t[0]||(t[0]=function(){return e.unmuteUser&&e.unmuteUser.apply(e,arguments)})},[e.progress?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Uk)((0,f.zw)(e.$t("user_card.unmute_progress")),1)],64)):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Uk)((0,f.zw)(e.$t("user_card.unmute")),1)],64))],8,Te)):((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",disabled:e.progress,onClick:t[1]||(t[1]=function(){return e.muteUser&&e.muteUser.apply(e,arguments)})},[e.progress?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Uk)((0,f.zw)(e.$t("user_card.mute_progress")),1)],64)):((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Uk)((0,f.zw)(e.$t("user_card.mute")),1)],64))],8,Ue))])]})),_:1},8,["user"])}]]);var Oe={class:"domain-mute-card"},We={class:"domain-mute-card-domain"},ze=n(99507);const Se={props:["domain"],components:{ProgressButton:ze.Z},computed:{user:function(){return this.$store.state.users.currentUser},muted:function(){return this.user.domainMutes.includes(this.domain)}},methods:{unmuteDomain:function(){return this.$store.dispatch("unmuteDomain",this.domain)},muteDomain:function(){return this.$store.dispatch("muteDomain",this.domain)}}},Pe=(0,E.Z)(Se,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("ProgressButton");return(0,l.wg)(),(0,l.iD)("div",Oe,[(0,l._)("div",We,(0,f.zw)(e.domain),1),e.muted?((0,l.wg)(),(0,l.j4)(r,{key:0,click:e.unmuteDomain,class:"btn button-default"},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.unmute_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.unmute"))+" ",1)]})),_:1},8,["click"])):((0,l.wg)(),(0,l.j4)(r,{key:1,click:e.muteDomain,class:"btn button-default"},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.mute_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.mute"))+" ",1)]})),_:1},8,["click"]))])}]]);var De={class:"selectable-list"},Ie={key:0,class:"selectable-list-header"},je={class:"selectable-list-checkbox-wrapper"},Be={class:"selectable-list-header-actions"},Ae={class:"selectable-list-checkbox-wrapper"};const Ee={components:{List:n(56773).Z,Checkbox:N.Z},props:{items:{type:Array,default:function(){return[]}},getKey:{type:Function,default:function(e){return e.id}}},data:function(){return{selected:[]}},computed:{allKeys:function(){return this.items.map(this.getKey)},filteredSelected:function(){var e=this;return this.allKeys.filter((function(t){return-1!==e.selected.indexOf(t)}))},allSelected:function(){return this.filteredSelected.length===this.items.length},noneSelected:function(){return 0===this.filteredSelected.length},someSelected:function(){return!this.allSelected&&!this.noneSelected}},methods:{isSelected:function(e){return-1!==this.filteredSelected.indexOf(this.getKey(e))},toggle:function(e,t){var n=this.getKey(t);e!==this.isSelected(n)&&(e?this.selected.push(n):this.selected.splice(this.selected.indexOf(n),1))},toggleAll:function(e){this.selected=e?this.allKeys.slice(0):[]}}},Fe=(0,E.Z)(Ee,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("Checkbox"),i=(0,l.up)("List");return(0,l.wg)(),(0,l.iD)("div",De,[e.items.length>0?((0,l.wg)(),(0,l.iD)("div",Ie,[(0,l._)("div",je,[(0,l.Wm)(r,{"model-value":e.allSelected,indeterminate:e.someSelected,"onUpdate:modelValue":e.toggleAll},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("selectable_list.select_all")),1)]})),_:1},8,["model-value","indeterminate","onUpdate:modelValue"])]),(0,l._)("div",Be,[(0,l.WI)(e.$slots,"header",{selected:e.filteredSelected})])])):(0,l.kq)("",!0),(0,l.Wm)(i,{items:e.items,"get-key":e.getKey},{item:(0,l.w5)((function(t){var n=t.item;return[(0,l._)("div",{class:(0,f.C_)(["selectable-list-item-inner",{"selectable-list-item-selected-inner":e.isSelected(n)}])},[(0,l._)("div",Ae,[(0,l.Wm)(r,{"model-value":e.isSelected(n),"onUpdate:modelValue":function(t){return e.toggle(t,n)}},null,8,["model-value","onUpdate:modelValue"])]),(0,l.WI)(e.$slots,"item",{item:n})],2)]})),empty:(0,l.w5)((function(){return[(0,l.WI)(e.$slots,"empty")]})),_:3},8,["items","get-key"])])}]]);var qe=n(93433),Ze=n(41609),Me=n.n(Ze),Re=n(13562),Ne=n(57810);function He(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function Ye(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?He(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):He(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}j.vI.add(B.IJ7);const Ke=function(e){var t=e.fetch,n=e.select,a=e.childPropName,o=void 0===a?"content":a,s=e.additionalPropNames,r=void 0===s?[]:s;return function(e){var a=Object.keys((0,Re.g)(e)).filter((function(e){return e!==o})).concat(r);return{props:[].concat((0,qe.Z)(a),["refresh"]),data:function(){return{loading:!1,error:!1}},computed:{fetchedData:function(){return n(this.$props,this.$store)}},created:function(){(this.refresh||Me()(this.fetchedData))&&this.fetchData()},methods:{fetchData:function(){var e=this;this.loading||(this.loading=!0,this.error=!1,t(this.$props,this.$store).then((function(){e.loading=!1})).catch((function(){e.error=!0,e.loading=!1})))}},render:function(){if(this.error||this.loading)return(0,l.Wm)("div",{class:"with-subscription-loading"},[this.error?(0,l.Wm)("a",{onClick:this.fetchData,class:"alert error"},[this.$t("general.generic_error")]):(0,l.Wm)(Ne.GN,{spin:!0,icon:"circle-notch"},null)]);var t,n=Ye(Ye({},this.$props),{},(0,S.Z)({},o,this.fetchedData)),a=this.$slots;return(0,l.Wm)("div",{class:"with-subscription"},[(0,l.Wm)(e,n,(t=a,"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!(0,l.lA)(t)?a:{default:function(){return[a]}}))])}}}};var Ge=Ke({fetch:function(e,t){return t.dispatch("fetchBlocks")},select:function(e,t){return ie()(t.state.users.currentUser,"blockIds",[])},childPropName:"items"})(Fe),Je=Ke({fetch:function(e,t){return t.dispatch("fetchMutes")},select:function(e,t){return ie()(t.state.users.currentUser,"muteIds",[])},childPropName:"items"})(Fe),Qe=Ke({fetch:function(e,t){return t.dispatch("fetchDomainMutes")},select:function(e,t){return ie()(t.state.users.currentUser,"domainMutes",[])},childPropName:"items"})(Fe);const Xe={data:function(){return{activeTab:"profile"}},created:function(){this.$store.dispatch("fetchTokens"),this.$store.dispatch("getKnownDomains")},components:{TabSwitcher:m.Z,BlockList:Ge,MuteList:Je,DomainMuteList:Qe,BlockCard:Ce,MuteCard:Le,DomainMuteCard:Pe,ProgressButton:ze.Z,Autosuggest:we,Checkbox:N.Z},computed:{knownDomains:function(){return this.$store.state.instance.knownDomains},user:function(){return this.$store.state.users.currentUser}},methods:{importFollows:function(e){return this.$store.state.api.backendInteractor.importFollows({file:e}).then((function(e){if(!e)throw new Error("failed")}))},importBlocks:function(e){return this.$store.state.api.backendInteractor.importBlocks({file:e}).then((function(e){if(!e)throw new Error("failed")}))},generateExportableUsersContent:function(e){return e.map((function(e){return e&&e.is_local?e.screen_name+"@"+location.hostname:e.screen_name})).join("\n")},activateTab:function(e){this.activeTab=e},filterUnblockedUsers:function(e){var t=this;return pe()(e,(function(e){return t.$store.getters.relationship(t.userId).blocking||e===t.user.id}))},filterUnMutedUsers:function(e){var t=this;return pe()(e,(function(e){return t.$store.getters.relationship(t.userId).muting||e===t.user.id}))},queryUserIds:function(e){return this.$store.dispatch("searchUsers",{query:e}).then((function(e){return ce()(e,"id")}))},blockUsers:function(e){return this.$store.dispatch("blockUsers",e)},unblockUsers:function(e){return this.$store.dispatch("unblockUsers",e)},muteUsers:function(e){return this.$store.dispatch("muteUsers",e)},unmuteUsers:function(e){return this.$store.dispatch("unmuteUsers",e)},filterUnMutedDomains:function(e){var t=this;return e.filter((function(e){return!t.user.domainMutes.includes(e)}))},queryKnownDomains:function(e){var t=this;return new Promise((function(n,l){n(t.knownDomains.filter((function(t){return t.toLowerCase().includes(e)})))}))},unmuteDomains:function(e){return this.$store.dispatch("unmuteDomains",e)}}},et=(0,E.Z)(Xe,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("BlockCard"),i=(0,l.up)("Autosuggest"),u=(0,l.up)("ProgressButton"),c=(0,l.up)("BlockList"),d=(0,l.up)("MuteCard"),p=(0,l.up)("MuteList"),m=(0,l.up)("DomainMuteCard"),h=(0,l.up)("DomainMuteList"),g=(0,l.up)("tab-switcher");return(0,l.wg)(),(0,l.j4)(g,{"scrollable-tabs":!0,class:"mutes-and-blocks-tab"},{default:(0,l.w5)((function(){return[(0,l._)("div",{label:e.$t("settings.blocks_tab")},[(0,l._)("div",Q,[(0,l.Wm)(i,{filter:e.filterUnblockedUsers,query:e.queryUserIds,placeholder:e.$t("settings.search_user_to_block")},{default:(0,l.w5)((function(e){return[(0,l.Wm)(r,{"user-id":e.item},null,8,["user-id"])]})),_:1},8,["filter","query","placeholder"])]),(0,l.Wm)(c,{refresh:!0,"get-key":function(e){return e}},{header:(0,l.w5)((function(t){var n=t.selected;return[(0,l._)("div",X,[n.length>0?((0,l.wg)(),(0,l.j4)(u,{key:0,class:"btn button-default bulk-action-button",click:function(){return e.blockUsers(n)}},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.block_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.block"))+" ",1)]})),_:2},1032,["click"])):(0,l.kq)("",!0),n.length>0?((0,l.wg)(),(0,l.j4)(u,{key:1,class:"btn button-default",click:function(){return e.unblockUsers(n)}},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.unblock_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.unblock"))+" ",1)]})),_:2},1032,["click"])):(0,l.kq)("",!0)])]})),item:(0,l.w5)((function(e){var t=e.item;return[(0,l.Wm)(r,{"user-id":t},null,8,["user-id"])]})),empty:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.no_blocks")),1)]})),_:1},8,["get-key"])],8,J),(0,l._)("div",{label:e.$t("settings.mutes_tab")},[(0,l.Wm)(g,null,{default:(0,l.w5)((function(){return[(0,l._)("div",{label:e.$t("settings.user_mutes")},[(0,l._)("div",ne,[(0,l.Wm)(i,{filter:e.filterUnMutedUsers,query:e.queryUserIds,placeholder:e.$t("settings.search_user_to_mute")},{default:(0,l.w5)((function(e){return[(0,l.Wm)(d,{"user-id":e.item},null,8,["user-id"])]})),_:1},8,["filter","query","placeholder"])]),(0,l.Wm)(p,{refresh:!0,"get-key":function(e){return e}},{header:(0,l.w5)((function(t){var n=t.selected;return[(0,l._)("div",le,[n.length>0?((0,l.wg)(),(0,l.j4)(u,{key:0,class:"btn button-default",click:function(){return e.muteUsers(n)}},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.mute_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.mute"))+" ",1)]})),_:2},1032,["click"])):(0,l.kq)("",!0),n.length>0?((0,l.wg)(),(0,l.j4)(u,{key:1,class:"btn button-default",click:function(){return e.unmuteUsers(n)}},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.unmute_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("user_card.unmute"))+" ",1)]})),_:2},1032,["click"])):(0,l.kq)("",!0)])]})),item:(0,l.w5)((function(e){var t=e.item;return[(0,l.Wm)(d,{"user-id":t},null,8,["user-id"])]})),empty:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.no_mutes")),1)]})),_:1},8,["get-key"])],8,te),(0,l._)("div",{label:e.$t("settings.domain_mutes")},[(0,l._)("div",oe,[(0,l.Wm)(i,{filter:e.filterUnMutedDomains,query:e.queryKnownDomains,placeholder:e.$t("settings.type_domains_to_mute")},{default:(0,l.w5)((function(e){return[(0,l.Wm)(m,{domain:e.item},null,8,["domain"])]})),_:1},8,["filter","query","placeholder"])]),(0,l.Wm)(h,{refresh:!0,"get-key":function(e){return e}},{header:(0,l.w5)((function(t){var n=t.selected;return[(0,l._)("div",se,[n.length>0?((0,l.wg)(),(0,l.j4)(u,{key:0,class:"btn button-default",click:function(){return e.unmuteDomains(n)}},{progress:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.unmute_progress")),1)]})),default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("domain_mute_card.unmute"))+" ",1)]})),_:2},1032,["click"])):(0,l.kq)("",!0)])]})),item:(0,l.w5)((function(e){var t=e.item;return[(0,l.Wm)(m,{domain:t},null,8,["domain"])]})),empty:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.no_mutes")),1)]})),_:1},8,["get-key"])],8,ae)]})),_:1})],8,ee)]})),_:1})}]]);var tt=["label"],nt={class:"setting-item"},lt={class:"setting-list"},at={class:"select-multiple"},ot={class:"label"},st={class:"option-list"},rt={key:0,class:"setting-item"},it={class:"setting-list"},ut={class:"setting-item"},ct={key:0,class:"BooleanSetting"},dt={key:0,class:"label"},pt=n(84506),mt=n(36968),ft=n.n(mt),ht={key:0,class:"ModifiedIndicator"},gt={class:"modified-tooltip"},bt=n(91447);j.vI.add(B.klh);const wt={components:{Popover:bt.default},props:["changed"]},_t=(0,E.Z)(wt,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("FAIcon"),i=(0,l.up)("Popover");return n.changed?((0,l.wg)(),(0,l.iD)("span",ht,[(0,l.Wm)(i,{trigger:"hover","trigger-attrs":{"aria-label":e.$t("settings.setting_changed")}},{trigger:(0,l.w5)((function(){return[(0,l.Uk)("   "),(0,l.Wm)(r,{icon:"wrench"})]})),content:(0,l.w5)((function(){return[(0,l._)("div",gt,(0,f.zw)(e.$t("settings.setting_changed")),1)]})),_:1},8,["trigger-attrs"])])):(0,l.kq)("",!0)}]]);var kt={key:0,class:"ServerSideIndicator"},vt={class:"serverside-tooltip"};j.vI.add(B.xf3);const yt={components:{Popover:bt.default},props:["serverSide"]},$t=(0,E.Z)(yt,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("FAIcon"),i=(0,l.up)("Popover");return n.serverSide?((0,l.wg)(),(0,l.iD)("span",kt,[(0,l.Wm)(i,{trigger:"hover"},{trigger:(0,l.w5)((function(){return[(0,l.Uk)("   "),(0,l.Wm)(r,{icon:"server","aria-label":e.$t("settings.setting_server_side")},null,8,["aria-label"])]})),content:(0,l.w5)((function(){return[(0,l._)("div",vt,(0,f.zw)(e.$t("settings.setting_server_side")),1)]})),_:1})])):(0,l.kq)("",!0)}]]);function Ct(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}const Vt={components:{Checkbox:N.Z,ModifiedIndicator:_t,ServerSideIndicator:$t},props:["path","disabled","expert"],computed:{pathDefault:function(){var e=this.path.split("."),t=(0,pt.Z)(e),n=t[0],l=t.slice(1);return[n+"DefaultValue"].concat((0,qe.Z)(l)).join(".")},state:function(){var e=ie()(this.$parent,this.path);return void 0===e?this.defaultState:e},defaultState:function(){return ie()(this.$parent,this.pathDefault)},isServerSide:function(){return this.path.startsWith("serverSide_")},isChanged:function(){return!this.path.startsWith("serverSide_")&&this.state!==this.defaultState},matchesExpertLevel:function(){return(this.expert||0)<=this.$parent.expertLevel}},methods:{update:function(e){var t=this.path.split("."),n=(0,pt.Z)(t),l=n[0],a=n.slice(1);ft()(this.$parent,this.path,e),a.length>0&&ft()(this.$parent,l,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ct(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ct(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},ie()(this.$parent,l)))},reset:function(){ft()(this.$parent,this.path,this.defaultState)}}},Tt=(0,E.Z)(Vt,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("ModifiedIndicator"),i=(0,l.up)("ServerSideIndicator"),u=(0,l.up)("Checkbox");return e.matchesExpertLevel?((0,l.wg)(),(0,l.iD)("label",ct,[(0,l.Wm)(u,{"model-value":e.state,disabled:e.disabled,"onUpdate:modelValue":e.update},{default:(0,l.w5)((function(){return[e.$slots.default?((0,l.wg)(),(0,l.iD)("span",dt,[(0,l.WI)(e.$slots,"default")])):(0,l.kq)("",!0),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l.Wm)(r,{changed:e.isChanged,onclick:e.reset},null,8,["changed","onclick"]),(0,l.Wm)(i,{"server-side":e.isServerSide},null,8,["server-side"])]})),_:3},8,["model-value","disabled","onUpdate:modelValue"])])):(0,l.kq)("",!0)}]]);var Ut=n(29439),xt=n(85565),Lt=n(65405);function Ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function Wt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ot(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ot(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const zt=function(){return Wt(Wt(Wt(Wt({user:function(){return this.$store.state.users.currentUser}},Object.keys(xt.W2).map((function(e){return[e+"DefaultValue",function(){return this.$store.getters.defaultConfig[e]}]})).reduce((function(e,t){var n=(0,Ut.Z)(t,2),l=n[0],a=n[1];return Wt(Wt({},e),{},(0,S.Z)({},l,a))}),{})),Object.keys(xt.W2).map((function(e){return[e,{get:function(){return this.$store.getters.mergedConfig[e]},set:function(t){this.$store.dispatch("setOption",{name:e,value:t})}}]})).reduce((function(e,t){var n=(0,Ut.Z)(t,2),l=n[0],a=n[1];return Wt(Wt({},e),{},(0,S.Z)({},l,a))}),{})),Object.keys(Lt.W2).map((function(e){return["serverSide_"+e,{get:function(){return this.$store.state.serverSideConfig[e]},set:function(t){this.$store.dispatch("setServerSideOption",{name:e,value:t})}}]})).reduce((function(e,t){var n=(0,Ut.Z)(t,2),l=n[0],a=n[1];return Wt(Wt({},e),{},(0,S.Z)({},l,a))}),{})),{},{useStreamingApi:{get:function(){return this.$store.getters.mergedConfig.useStreamingApi},set:function(e){var t=this;(e?this.$store.dispatch("enableMastoSockets"):this.$store.dispatch("disableMastoSockets")).then((function(){t.$store.dispatch("setOption",{name:"useStreamingApi",value:e})})).catch((function(e){console.error("Failed starting MastoAPI Streaming socket",e),t.$store.dispatch("disableMastoSockets"),t.$store.dispatch("setOption",{name:"useStreamingApi",value:!1})}))}}})};function St(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}const Pt={data:function(){return{activeTab:"profile",notificationSettings:this.$store.state.users.currentUser.notification_settings,newDomainToMute:""}},components:{BooleanSetting:Tt},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?St(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):St(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({user:function(){return this.$store.state.users.currentUser}},zt()),methods:{updateNotificationSettings:function(){this.$store.state.api.backendInteractor.updateNotificationSettings({settings:this.notificationSettings})}}},Dt=(0,E.Z)(Pt,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("BooleanSetting");return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.notifications")},[(0,l._)("div",nt,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.notification_setting_filters")),1),(0,l._)("ul",lt,[(0,l._)("li",null,[(0,l.Wm)(r,{path:"serverSide_blockNotificationsFromStrangers"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_setting_block_from_strangers")),1)]})),_:1})]),(0,l._)("li",at,[(0,l._)("span",ot,(0,f.zw)(e.$t("settings.notification_visibility")),1),(0,l._)("ul",st,[(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.likes"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_likes")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.repeats"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_repeats")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.follows"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_follows")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.mentions"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_mentions")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.moves"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_moves")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.emojiReactions"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_emoji_reactions")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"notificationVisibility.polls"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_visibility_polls")),1)]})),_:1})])])])])]),e.expertLevel>0?((0,l.wg)(),(0,l.iD)("div",rt,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.notification_setting_privacy")),1),(0,l._)("ul",it,[(0,l._)("li",null,[(0,l.Wm)(r,{path:"webPushNotifications",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.enable_web_push_notifications")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"serverSide_webPushHideContents",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.notification_setting_hide_notification_contents")),1)]})),_:1})])])])):(0,l.kq)("",!0),(0,l._)("div",ut,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.notification_mutes")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.notification_blocks")),1)])],8,tt)}]]);var It=["label"],jt={class:"setting-item"},Bt={class:"setting-list"},At={key:0,class:"setting-item"},Et={class:"setting-list"},Ft=n(23279),qt=n.n(Ft),Zt=n(92742),Mt=n.n(Zt),Rt=n(63105),Nt=n.n(Rt),Ht={key:0,class:"ChoiceSetting"},Yt=["value"],Kt=n(76990);const Gt={components:{Select:Kt.Z,ModifiedIndicator:_t,ServerSideIndicator:$t},props:["path","disabled","options","expert"],computed:{pathDefault:function(){var e=this.path.split("."),t=(0,pt.Z)(e),n=t[0],l=t.slice(1);return[n+"DefaultValue"].concat((0,qe.Z)(l)).join(".")},state:function(){var e=ie()(this.$parent,this.path);return void 0===e?this.defaultState:e},defaultState:function(){return ie()(this.$parent,this.pathDefault)},isServerSide:function(){return this.path.startsWith("serverSide_")},isChanged:function(){return!this.path.startsWith("serverSide_")&&this.state!==this.defaultState},matchesExpertLevel:function(){return(this.expert||0)<=this.$parent.expertLevel}},methods:{update:function(e){ft()(this.$parent,this.path,e)},reset:function(){ft()(this.$parent,this.path,this.defaultState)}}},Jt=(0,E.Z)(Gt,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("Select"),i=(0,l.up)("ModifiedIndicator"),u=(0,l.up)("ServerSideIndicator");return e.matchesExpertLevel?((0,l.wg)(),(0,l.iD)("label",Ht,[(0,l.WI)(e.$slots,"default"),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l.Wm)(r,{"model-value":e.state,disabled:e.disabled,"onUpdate:modelValue":e.update},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.options,(function(t){return(0,l.wg)(),(0,l.iD)("option",{key:t.key,value:t.value},(0,f.zw)(t.label)+" "+(0,f.zw)(t.value===e.defaultState?e.$t("settings.instance_default_simple"):""),9,Yt)})),128))]})),_:1},8,["model-value","disabled","onUpdate:modelValue"]),(0,l.Wm)(i,{changed:e.isChanged,onclick:e.reset},null,8,["changed","onclick"]),(0,l.Wm)(u,{"server-side":e.isServerSide},null,8,["server-side"])])):(0,l.kq)("",!0)}]]);var Qt={key:0,class:"IntegerSetting"},Xt=["for"],en=["id","disabled","min","value"];const tn={components:{ModifiedIndicator:_t},props:{path:String,disabled:Boolean,min:Number,expert:[Number,String]},computed:{pathDefault:function(){var e=this.path.split("."),t=(0,pt.Z)(e),n=t[0],l=t.slice(1);return[n+"DefaultValue"].concat((0,qe.Z)(l)).join(".")},state:function(){var e=ie()(this.$parent,this.path);return void 0===e?this.defaultState:e},defaultState:function(){return ie()(this.$parent,this.pathDefault)},isChanged:function(){return this.state!==this.defaultState},matchesExpertLevel:function(){return(this.expert||0)<=this.$parent.expertLevel}},methods:{update:function(e){ft()(this.$parent,this.path,parseInt(e.target.value))},reset:function(){ft()(this.$parent,this.path,this.defaultState)}}},nn=(0,E.Z)(tn,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("ModifiedIndicator");return e.matchesExpertLevel?((0,l.wg)(),(0,l.iD)("span",Qt,[(0,l._)("label",{for:e.path},[(0,l.WI)(e.$slots,"default")],8,Xt),(0,l._)("input",{id:e.path,class:"number-input",type:"number",step:"1",disabled:e.disabled,min:e.min||0,value:e.state,onChange:t[0]||(t[0]=function(){return e.update&&e.update.apply(e,arguments)})},null,40,en),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l.Wm)(r,{changed:e.isChanged,onclick:e.reset},null,8,["changed","onclick"])])):(0,l.kq)("",!0)}]]);function ln(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function an(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ln(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ln(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const on={data:function(){var e=this;return{muteWordsStringLocal:this.$store.getters.mergedConfig.muteWords.join("\n"),replyVisibilityOptions:["all","following","self"].map((function(t){return{key:t,value:t,label:e.$t("settings.reply_visibility_".concat(t))}}))}},components:{BooleanSetting:Tt,ChoiceSetting:Jt,IntegerSetting:nn},computed:an(an({},zt()),{},{muteWordsString:{get:function(){return this.muteWordsStringLocal},set:function(e){this.muteWordsStringLocal=e,this.debouncedSetMuteWords(e)}},debouncedSetMuteWords:function(){var e=this;return qt()((function(t){e.$store.dispatch("setOption",{name:"muteWords",value:Nt()(t.split("\n"),(function(e){return Mt()(e).length>0}))})}),1e3)}}),watch:{replyVisibility:function(){this.$store.dispatch("queueFlushAll")}}},sn=(0,E.Z)(on,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("BooleanSetting"),i=(0,l.up)("ChoiceSetting"),u=(0,l.up)("IntegerSetting");return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.filtering")},[(0,l._)("div",jt,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.posts")),1),(0,l._)("ul",Bt,[(0,l._)("li",null,[(0,l.Wm)(r,{path:"hideFilteredStatuses"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_filtered_statuses")),1)]})),_:1}),(0,l._)("ul",{class:(0,f.C_)(["setting-list suboptions",[{disabled:!e.streaming}]])},[(0,l._)("li",null,[(0,l.Wm)(r,{disabled:e.hideFilteredStatuses,path:"hideWordFilteredPosts"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_wordfiltered_statuses")),1)]})),_:1},8,["disabled"])]),(0,l._)("li",null,[e.user?((0,l.wg)(),(0,l.j4)(r,{key:0,disabled:e.hideFilteredStatuses,path:"hideMutedThreads"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_muted_threads")),1)]})),_:1},8,["disabled"])):(0,l.kq)("",!0)]),(0,l._)("li",null,[e.user?((0,l.wg)(),(0,l.j4)(r,{key:0,disabled:e.hideFilteredStatuses,path:"hideMutedPosts"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_muted_posts")),1)]})),_:1},8,["disabled"])):(0,l.kq)("",!0)])],2)]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"muteBotStatuses"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mute_bot_posts")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"hidePostStats"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_post_stats")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"hideBotIndication"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_bot_indication")),1)]})),_:1})]),e.user?((0,l.wg)(),(0,l.j4)(i,{key:0,id:"replyVisibility",path:"replyVisibility",options:e.replyVisibilityOptions},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.replies_in_timeline")),1)]})),_:1},8,["options"])):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l._)("h3",null,(0,f.zw)(e.$t("settings.wordfilter")),1),(0,l.wy)((0,l._)("textarea",{id:"muteWords","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.muteWordsString=t}),class:"resize-height"},null,512),[[me.nr,e.muteWordsString]]),(0,l._)("div",null,(0,f.zw)(e.$t("settings.filtering_explanation")),1)]),(0,l._)("h3",null,(0,f.zw)(e.$t("settings.attachments")),1),(0,l._)("li",null,[(0,l.Wm)(u,{path:"maxThumbnails",expert:"1",min:0},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.max_thumbnails")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"hideAttachments"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_attachments_in_tl")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(r,{path:"hideAttachmentsInConv"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_attachments_in_convo")),1)]})),_:1})])])]),e.expertLevel>0?((0,l.wg)(),(0,l.iD)("div",At,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.user_profiles")),1),(0,l._)("ul",Et,[(0,l._)("li",null,[(0,l.Wm)(r,{path:"hideUserStats"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_user_stats")),1)]})),_:1})])])])):(0,l.kq)("",!0)],8,It)}]]);var rn=["label"],un={class:"setting-item"},cn={key:0},dn={class:"setting-item"},pn={key:0},mn={key:1},fn={key:2},hn={class:"setting-item"},gn={class:"oauth-tokens"},bn=(0,l._)("th",null,null,-1),wn={class:"actions"},_n=["onClick"],kn={class:"setting-item"},vn=(0,l._)("th",null,null,-1),yn={class:"actions"},$n=["onClick"],Cn={key:0,class:"alert error"},Vn=(0,l._)("code",{place:"example"}," foo@example.org ",-1),Tn={key:1},Un={key:2},xn={class:"setting-item"},Ln=(0,l._)("code",{place:"example"}," foo@example.org ",-1),On={key:0},Wn={key:1},zn={class:"setting-item"},Sn={key:0},Pn={key:1},Dn={key:2},In={key:3},jn={key:0,class:"setting-item mfa-settings"},Bn={class:"mfa-heading"},An={key:0,class:"setting-item"},En=(0,l._)("br",null,null,-1),Fn={key:0},qn={key:2},Zn={class:"warning"},Mn={key:1},Rn={key:0},Nn={key:1},Hn={class:"setup-otp"},Yn={class:"qr-code"},Kn={class:"verify"},Gn={class:"confirm-otp-actions"},Jn={key:0,class:"alert error"},Qn=n(15861),Xn=n(64687),el=n.n(Xn),tl={class:"mfa-backup-codes"},nl={key:0},ll={key:1},al={class:"alert warning"},ol={class:"backup-codes"};const sl={props:{backupCodes:{type:Object,default:function(){return{inProgress:!1,codes:[]}}}},data:function(){return{}},computed:{inProgress:function(){return this.backupCodes.inProgress},ready:function(){return this.backupCodes.codes.length>0},displayTitle:function(){return this.inProgress||this.ready}}},rl=(0,E.Z)(sl,[["render",function(e,t,n,a,o,s){return(0,l.wg)(),(0,l.iD)("div",tl,[e.displayTitle?((0,l.wg)(),(0,l.iD)("h4",nl,(0,f.zw)(e.$t("settings.mfa.recovery_codes")),1)):(0,l.kq)("",!0),e.inProgress?((0,l.wg)(),(0,l.iD)("i",ll,(0,f.zw)(e.$t("settings.mfa.waiting_a_recovery_codes")),1)):(0,l.kq)("",!0),e.ready?((0,l.wg)(),(0,l.iD)(l.HY,{key:2},[(0,l._)("p",al,(0,f.zw)(e.$t("settings.mfa.recovery_codes_warning")),1),(0,l._)("ul",ol,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.backupCodes.codes,(function(e){return(0,l.wg)(),(0,l.iD)("li",{key:e},(0,f.zw)(e),1)})),128))])],64)):(0,l.kq)("",!0)])}]]);var il={class:"method-item"},ul=["disabled"],cl={key:1,class:"alert error"},dl=["disabled"],pl=["disabled"];const ml={props:["disabled"],data:function(){return{}},methods:{confirm:function(){this.$emit("confirm")},cancel:function(){this.$emit("cancel")}}},fl=(0,E.Z)(ml,[["render",function(e,t,n,a,o,s){return(0,l.wg)(),(0,l.iD)("div",null,[(0,l.WI)(e.$slots,"default"),(0,l._)("button",{class:"btn button-default",disabled:e.disabled,onClick:t[0]||(t[0]=function(){return e.confirm&&e.confirm.apply(e,arguments)})},(0,f.zw)(e.$t("general.confirm")),9,dl),(0,l._)("button",{class:"btn button-default",disabled:e.disabled,onClick:t[1]||(t[1]=function(){return e.cancel&&e.cancel.apply(e,arguments)})},(0,f.zw)(e.$t("general.cancel")),9,pl)])}]]);function hl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}const gl={props:["settings"],data:function(){return{error:!1,currentPassword:"",deactivate:!1,inProgress:!1}},components:{confirm:fl},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?hl(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):hl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({isActivated:function(){return this.settings.totp}},(0,H.rn)({backendInteractor:function(e){return e.api.backendInteractor}})),methods:{doActivate:function(){this.$emit("activate")},cancelDeactivate:function(){this.deactivate=!1},doDeactivate:function(){this.error=null,this.deactivate=!0},confirmDeactivate:function(){var e=this;this.error=null,this.inProgress=!0,this.backendInteractor.mfaDisableOTP({password:this.currentPassword}).then((function(t){e.inProgress=!1,t.error?e.error=t.error:(e.deactivate=!1,e.$emit("deactivate"))}))}}};function bl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}const wl={data:function(){return{settings:{available:!1,enabled:!1,totp:!1},setupState:{state:"",setupOTPState:""},backupCodes:{getNewCodes:!1,inProgress:!1,codes:[]},otpSettings:{provisioning_uri:"",key:""},currentPassword:null,otpConfirmToken:null,error:null,readyInit:!1}},components:{"recovery-codes":rl,"totp-item":(0,E.Z)(gl,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("confirm");return(0,l.wg)(),(0,l.iD)("div",null,[(0,l._)("div",il,[(0,l._)("strong",null,(0,f.zw)(e.$t("settings.mfa.otp")),1),e.isActivated?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"btn button-default",onClick:t[0]||(t[0]=function(){return e.doActivate&&e.doActivate.apply(e,arguments)})},(0,f.zw)(e.$t("general.enable")),1)),e.isActivated?((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",disabled:e.deactivate,onClick:t[1]||(t[1]=function(){return e.doDeactivate&&e.doDeactivate.apply(e,arguments)})},(0,f.zw)(e.$t("general.disable")),9,ul)):(0,l.kq)("",!0)]),e.deactivate?((0,l.wg)(),(0,l.j4)(r,{key:0,disabled:e.inProgress,onConfirm:e.confirmDeactivate,onCancel:e.cancelDeactivate},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.enter_current_password_to_confirm"))+": ",1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.currentPassword=t}),type:"password"},null,512),[[me.nr,e.currentPassword]])]})),_:1},8,["disabled","onConfirm","onCancel"])):(0,l.kq)("",!0),e.error?((0,l.wg)(),(0,l.iD)("div",cl,(0,f.zw)(e.error),1)):(0,l.kq)("",!0)])}]]),qrcode:n(99990).Z,confirm:fl},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?bl(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):bl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({canSetupOTP:function(){return(this.setupInProgress&&this.backupCodesPrepared||this.settings.enabled)&&!this.settings.totp&&!this.setupOTPInProgress},setupInProgress:function(){return""!==this.setupState.state&&"complete"!==this.setupState.state},setupOTPInProgress:function(){return"setupOTP"===this.setupState.state&&!this.completedOTP},prepareOTP:function(){return"prepare"===this.setupState.setupOTPState},confirmOTP:function(){return"confirm"===this.setupState.setupOTPState},completedOTP:function(){return"completed"===this.setupState.setupOTPState},backupCodesPrepared:function(){return!this.backupCodes.inProgress&&this.backupCodes.codes.length>0},confirmNewBackupCodes:function(){return this.backupCodes.getNewCodes}},(0,H.rn)({backendInteractor:function(e){return e.api.backendInteractor}})),methods:{activateOTP:function(){this.settings.enabled||(this.setupState.state="getBackupcodes",this.fetchBackupCodes())},fetchBackupCodes:function(){var e=this;return this.backupCodes.inProgress=!0,this.backupCodes.codes=[],this.backendInteractor.generateMfaBackupCodes().then((function(t){e.backupCodes.codes=t.codes,e.backupCodes.inProgress=!1}))},getBackupCodes:function(){this.backupCodes.getNewCodes=!0},confirmBackupCodes:function(){var e=this;this.fetchBackupCodes().then((function(t){e.backupCodes.getNewCodes=!1}))},cancelBackupCodes:function(){this.backupCodes.getNewCodes=!1},setupOTP:function(){var e=this;this.setupState.state="setupOTP",this.setupState.setupOTPState="prepare",this.backendInteractor.mfaSetupOTP().then((function(t){e.otpSettings=t,e.setupState.setupOTPState="confirm"}))},doConfirmOTP:function(){var e=this;this.error=null,this.backendInteractor.mfaConfirmOTP({token:this.otpConfirmToken,password:this.currentPassword}).then((function(t){t.error?e.error=t.error:e.completeSetup()}))},completeSetup:function(){this.setupState.setupOTPState="complete",this.setupState.state="complete",this.currentPassword=null,this.error=null,this.fetchSettings()},cancelSetup:function(){this.setupState.setupOTPState="",this.setupState.state="",this.currentPassword=null,this.error=null},fetchSettings:function(){var e=this;return(0,Qn.Z)(el().mark((function t(){var n;return el().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.backendInteractor.settingsMFA();case 2:if(!(n=t.sent).error){t.next=5;break}return t.abrupt("return");case 5:return e.settings=n.settings,e.settings.available=!0,t.abrupt("return",n);case 8:case"end":return t.stop()}}),t)})))()}},mounted:function(){var e=this;this.fetchSettings().then((function(){e.readyInit=!0}))}},_l=(0,E.Z)(wl,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("totp-item"),i=(0,l.up)("recovery-codes"),u=(0,l.up)("confirm"),c=(0,l.up)("qrcode");return e.readyInit&&e.settings.available?((0,l.wg)(),(0,l.iD)("div",jn,[(0,l._)("div",Bn,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.mfa.title")),1)]),(0,l._)("div",null,[e.setupInProgress?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("div",An,[(0,l._)("h3",null,(0,f.zw)(e.$t("settings.mfa.authentication_methods")),1),(0,l.Wm)(r,{settings:e.settings,onDeactivate:e.fetchSettings,onActivate:e.activateOTP},null,8,["settings","onDeactivate","onActivate"]),En,e.settings.enabled?((0,l.wg)(),(0,l.iD)("div",Fn,[e.confirmNewBackupCodes?(0,l.kq)("",!0):((0,l.wg)(),(0,l.j4)(i,{key:0,"backup-codes":e.backupCodes},null,8,["backup-codes"])),e.confirmNewBackupCodes?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",onClick:t[0]||(t[0]=function(){return e.getBackupCodes&&e.getBackupCodes.apply(e,arguments)})},(0,f.zw)(e.$t("settings.mfa.generate_new_recovery_codes")),1)),e.confirmNewBackupCodes?((0,l.wg)(),(0,l.iD)("div",qn,[(0,l.Wm)(u,{disabled:e.backupCodes.inProgress,onConfirm:e.confirmBackupCodes,onCancel:e.cancelBackupCodes},{default:(0,l.w5)((function(){return[(0,l._)("p",Zn,(0,f.zw)(e.$t("settings.mfa.warning_of_generate_new_codes")),1)]})),_:1},8,["disabled","onConfirm","onCancel"])])):(0,l.kq)("",!0)])):(0,l.kq)("",!0)])),e.setupInProgress?((0,l.wg)(),(0,l.iD)("div",Mn,[(0,l._)("h3",null,(0,f.zw)(e.$t("settings.mfa.setup_otp")),1),e.setupOTPInProgress?(0,l.kq)("",!0):((0,l.wg)(),(0,l.j4)(i,{key:0,"backup-codes":e.backupCodes},null,8,["backup-codes"])),e.canSetupOTP?((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.cancelSetup&&e.cancelSetup.apply(e,arguments)})},(0,f.zw)(e.$t("general.cancel")),1)):(0,l.kq)("",!0),e.canSetupOTP?((0,l.wg)(),(0,l.iD)("button",{key:2,class:"btn button-default",onClick:t[2]||(t[2]=function(){return e.setupOTP&&e.setupOTP.apply(e,arguments)})},(0,f.zw)(e.$t("settings.mfa.setup_otp")),1)):(0,l.kq)("",!0),e.setupOTPInProgress?((0,l.wg)(),(0,l.iD)(l.HY,{key:3},[e.prepareOTP?((0,l.wg)(),(0,l.iD)("i",Rn,(0,f.zw)(e.$t("settings.mfa.wait_pre_setup_otp")),1)):(0,l.kq)("",!0),e.confirmOTP?((0,l.wg)(),(0,l.iD)("div",Nn,[(0,l._)("div",Hn,[(0,l._)("div",Yn,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.mfa.scan.title")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.mfa.scan.desc")),1),(0,l.Wm)(c,{value:e.otpSettings.provisioning_uri,options:{width:200}},null,8,["value"]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.mfa.scan.secret_code"))+": "+(0,f.zw)(e.otpSettings.key),1)]),(0,l._)("div",Kn,[(0,l._)("h4",null,(0,f.zw)(e.$t("general.verify")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.mfa.verify.desc")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.otpConfirmToken=t}),type:"text"},null,512),[[me.nr,e.otpConfirmToken]]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.enter_current_password_to_confirm"))+":",1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.currentPassword=t}),type:"password"},null,512),[[me.nr,e.currentPassword]]),(0,l._)("div",Gn,[(0,l._)("button",{class:"btn button-default",onClick:t[5]||(t[5]=function(){return e.doConfirmOTP&&e.doConfirmOTP.apply(e,arguments)})},(0,f.zw)(e.$t("settings.mfa.confirm_and_enable")),1),(0,l._)("button",{class:"btn button-default",onClick:t[6]||(t[6]=function(){return e.cancelSetup&&e.cancelSetup.apply(e,arguments)})},(0,f.zw)(e.$t("general.cancel")),1)]),e.error?((0,l.wg)(),(0,l.iD)("div",Jn,(0,f.zw)(e.error),1)):(0,l.kq)("",!0)])])])):(0,l.kq)("",!0)],64)):(0,l.kq)("",!0)])):(0,l.kq)("",!0)])])):(0,l.kq)("",!0)}]]);var kl=n(39776);const vl={data:function(){return{newEmail:"",changeEmailError:!1,changeEmailPassword:"",changedEmail:!1,deletingAccount:!1,deleteAccountConfirmPasswordInput:"",deleteAccountError:!1,changePasswordInputs:["","",""],changedPassword:!1,changePasswordError:!1,moveAccountTarget:"",moveAccountPassword:"",movedAccount:!1,moveAccountError:!1,aliases:[],listAliasesError:!1,addAliasTarget:"",addedAlias:!1,addAliasError:!1}},created:function(){this.$store.dispatch("fetchTokens"),this.fetchAliases()},components:{ProgressButton:ze.Z,Mfa:_l,Checkbox:N.Z},computed:{user:function(){return this.$store.state.users.currentUser},pleromaBackend:function(){return this.$store.state.instance.pleromaBackend},oauthTokens:function(){var e=this;return this.$store.state.oauthTokens.tokens.map((function(t){return{id:t.id,appName:t.app_name,validUntil:new Date(t.valid_until).toLocaleDateString(kl.Z.internalToBrowserLocale(e.$i18n.locale))}}))}},methods:{confirmDelete:function(){this.deletingAccount=!0},deleteAccount:function(){var e=this;this.$store.state.api.backendInteractor.deleteAccount({password:this.deleteAccountConfirmPasswordInput}).then((function(t){"success"===t.status?(e.$store.dispatch("logout"),e.$router.push({name:"root"})):e.deleteAccountError=t.error}))},changePassword:function(){var e=this,t={password:this.changePasswordInputs[0],newPassword:this.changePasswordInputs[1],newPasswordConfirmation:this.changePasswordInputs[2]};this.$store.state.api.backendInteractor.changePassword(t).then((function(t){"success"===t.status?(e.changedPassword=!0,e.changePasswordError=!1,e.logout()):(e.changedPassword=!1,e.changePasswordError=t.error)}))},changeEmail:function(){var e=this,t={email:this.newEmail,password:this.changeEmailPassword};this.$store.state.api.backendInteractor.changeEmail(t).then((function(t){"success"===t.status?(e.changedEmail=!0,e.changeEmailError=!1):(e.changedEmail=!1,e.changeEmailError=t.error)}))},moveAccount:function(){var e=this,t={targetAccount:this.moveAccountTarget,password:this.moveAccountPassword};this.$store.state.api.backendInteractor.moveAccount(t).then((function(t){"success"===t.status?(e.movedAccount=!0,e.moveAccountError=!1):(e.movedAccount=!1,e.moveAccountError=t.error)}))},removeAlias:function(e){var t=this;this.$store.state.api.backendInteractor.deleteAlias({alias:e}).then((function(){return t.fetchAliases()}))},addAlias:function(){var e=this;this.$store.state.api.backendInteractor.addAlias({alias:this.addAliasTarget}).then((function(t){e.addedAlias=!0,e.addAliasError=!1,e.addAliasTarget=""})).catch((function(t){e.addedAlias=!1,e.addAliasError=t})).then((function(){return e.fetchAliases()}))},fetchAliases:function(){var e=this;this.$store.state.api.backendInteractor.listAliases().then((function(t){e.aliases=t.aliases,e.listAliasesError=!1})).catch((function(t){e.listAliasesError=t.error}))},logout:function(){this.$store.dispatch("logout"),this.$router.replace("/")},revokeToken:function(e){window.confirm("".concat(this.$i18n.t("settings.revoke_token"),"?"))&&this.$store.dispatch("revokeToken",e)}}},yl=(0,E.Z)(vl,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("mfa"),i=(0,l.up)("FAIcon"),u=(0,l.up)("i18n");return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.security_tab")},[(0,l._)("div",un,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.change_email")),1),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.new_email")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.newEmail=t}),type:"email",autocomplete:"email"},null,512),[[me.nr,e.newEmail]])]),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.current_password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.changeEmailPassword=t}),type:"password",autocomplete:"current-password"},null,512),[[me.nr,e.changeEmailPassword]])]),(0,l._)("button",{class:"btn button-default",onClick:t[2]||(t[2]=function(){return e.changeEmail&&e.changeEmail.apply(e,arguments)})},(0,f.zw)(e.$t("settings.save")),1),e.changedEmail?((0,l.wg)(),(0,l.iD)("p",cn,(0,f.zw)(e.$t("settings.changed_email")),1)):(0,l.kq)("",!0),!1!==e.changeEmailError?((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l._)("p",null,(0,f.zw)(e.$t("settings.change_email_error")),1),(0,l._)("p",null,(0,f.zw)(e.changeEmailError),1)],64)):(0,l.kq)("",!0)]),(0,l._)("div",dn,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.change_password")),1),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.current_password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.changePasswordInputs[0]=t}),type:"password"},null,512),[[me.nr,e.changePasswordInputs[0]]])]),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.new_password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.changePasswordInputs[1]=t}),type:"password"},null,512),[[me.nr,e.changePasswordInputs[1]]])]),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.confirm_new_password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.changePasswordInputs[2]=t}),type:"password"},null,512),[[me.nr,e.changePasswordInputs[2]]])]),(0,l._)("button",{class:"btn button-default",onClick:t[6]||(t[6]=function(){return e.changePassword&&e.changePassword.apply(e,arguments)})},(0,f.zw)(e.$t("settings.save")),1),e.changedPassword?((0,l.wg)(),(0,l.iD)("p",pn,(0,f.zw)(e.$t("settings.changed_password")),1)):!1!==e.changePasswordError?((0,l.wg)(),(0,l.iD)("p",mn,(0,f.zw)(e.$t("settings.change_password_error")),1)):(0,l.kq)("",!0),e.changePasswordError?((0,l.wg)(),(0,l.iD)("p",fn,(0,f.zw)(e.changePasswordError),1)):(0,l.kq)("",!0)]),(0,l._)("div",hn,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.oauth_tokens")),1),(0,l._)("table",gn,[(0,l._)("thead",null,[(0,l._)("tr",null,[(0,l._)("th",null,(0,f.zw)(e.$t("settings.app_name")),1),(0,l._)("th",null,(0,f.zw)(e.$t("settings.valid_until")),1),bn])]),(0,l._)("tbody",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.oauthTokens,(function(t){return(0,l.wg)(),(0,l.iD)("tr",{key:t.id},[(0,l._)("td",null,(0,f.zw)(t.appName),1),(0,l._)("td",null,(0,f.zw)(t.validUntil),1),(0,l._)("td",wn,[(0,l._)("button",{class:"btn button-default",onClick:function(n){return e.revokeToken(t.id)}},(0,f.zw)(e.$t("settings.revoke_token")),9,_n)])])})),128))])])]),(0,l.Wm)(r),(0,l._)("div",kn,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.account_alias")),1),(0,l._)("table",null,[(0,l._)("thead",null,[(0,l._)("tr",null,[(0,l._)("th",null,(0,f.zw)(e.$t("settings.account_alias_table_head")),1),vn])]),(0,l._)("tbody",null,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.aliases,(function(t){return(0,l.wg)(),(0,l.iD)("tr",{key:t},[(0,l._)("td",null,(0,f.zw)(t),1),(0,l._)("td",yn,[(0,l._)("button",{class:"btn button-default",onClick:function(n){return e.removeAlias(t)}},(0,f.zw)(e.$t("settings.remove_alias")),9,$n)])])})),128))])]),e.listAliasesError?((0,l.wg)(),(0,l.iD)("div",Cn,[(0,l.Uk)((0,f.zw)(e.$t("settings.list_aliases_error",{error:e.error}))+" ",1),(0,l.Wm)(i,{class:"fa-scale-110 fa-old-padding",icon:"times",title:e.$t("settings.hide_list_aliases_error_action"),onClick:t[7]||(t[7]=function(t){return e.listAliasesError=!1})},null,8,["title"])])):(0,l.kq)("",!0),(0,l._)("div",null,[(0,l.Wm)(u,{path:"settings.new_alias_target",tag:"p"},{default:(0,l.w5)((function(){return[Vn]})),_:1}),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.addAliasTarget=t})},null,512),[[me.nr,e.addAliasTarget]])]),(0,l._)("button",{class:"btn button-default",onClick:t[9]||(t[9]=function(){return e.addAlias&&e.addAlias.apply(e,arguments)})},(0,f.zw)(e.$t("settings.save")),1),e.addedAlias?((0,l.wg)(),(0,l.iD)("p",Tn,(0,f.zw)(e.$t("settings.added_alias")),1)):(0,l.kq)("",!0),!1!==e.addAliasError?((0,l.wg)(),(0,l.iD)("p",Un,(0,f.zw)(e.$t("settings.add_alias_error",{error:e.addAliasError})),1)):(0,l.kq)("",!0)]),(0,l._)("div",xn,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.move_account")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.move_account_notes")),1),(0,l._)("div",null,[(0,l.Wm)(u,{path:"settings.move_account_target",tag:"p"},{default:(0,l.w5)((function(){return[Ln]})),_:1}),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[10]||(t[10]=function(t){return e.moveAccountTarget=t})},null,512),[[me.nr,e.moveAccountTarget]])]),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.current_password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.moveAccountPassword=t}),type:"password",autocomplete:"current-password"},null,512),[[me.nr,e.moveAccountPassword]])]),(0,l._)("button",{class:"btn button-default",onClick:t[12]||(t[12]=function(){return e.moveAccount&&e.moveAccount.apply(e,arguments)})},(0,f.zw)(e.$t("settings.save")),1),e.movedAccount?((0,l.wg)(),(0,l.iD)("p",On,(0,f.zw)(e.$t("settings.moved_account")),1)):(0,l.kq)("",!0),!1!==e.moveAccountError?((0,l.wg)(),(0,l.iD)("p",Wn,(0,f.zw)(e.$t("settings.move_account_error",{error:e.moveAccountError})),1)):(0,l.kq)("",!0)]),(0,l._)("div",zn,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.delete_account")),1),e.deletingAccount?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("p",Sn,(0,f.zw)(e.$t("settings.delete_account_description")),1)),e.deletingAccount?((0,l.wg)(),(0,l.iD)("div",Pn,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.delete_account_instructions")),1),(0,l._)("p",null,(0,f.zw)(e.$t("login.password")),1),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.deleteAccountConfirmPasswordInput=t}),type:"password"},null,512),[[me.nr,e.deleteAccountConfirmPasswordInput]]),(0,l._)("button",{class:"btn button-default",onClick:t[14]||(t[14]=function(){return e.deleteAccount&&e.deleteAccount.apply(e,arguments)})},(0,f.zw)(e.$t("settings.delete_account")),1)])):(0,l.kq)("",!0),!1!==e.deleteAccountError?((0,l.wg)(),(0,l.iD)("p",Dn,(0,f.zw)(e.$t("settings.delete_account_error")),1)):(0,l.kq)("",!0),e.deleteAccountError?((0,l.wg)(),(0,l.iD)("p",In,(0,f.zw)(e.deleteAccountError),1)):(0,l.kq)("",!0),e.deletingAccount?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:4,class:"btn button-default",onClick:t[15]||(t[15]=function(){return e.confirmDelete&&e.confirmDelete.apply(e,arguments)})},(0,f.zw)(e.$t("settings.delete_account")),1))])],8,rn)}]]);var $l={class:"profile-tab"},Cl={class:"setting-item"},Vl={key:0},Tl={key:1},Ul=["onUpdate:modelValue","placeholder"],xl=["onUpdate:modelValue","placeholder"],Ll=["onClick"],Ol=["disabled"],Wl={class:"setting-item"},zl={class:"visibility-notice"},Sl={class:"current-avatar-container"},Pl=["src"],Dl=["title"],Il={class:"setting-item"},jl={class:"banner-background-preview"},Bl=["src"],Al=["title"],El=["src"],Fl={class:"setting-item"},ql={class:"banner-background-preview"},Zl=["src"],Ml=["title"],Rl=["src"],Nl={class:"setting-item"},Hl={class:"setting-list"},Yl=n(27955),Kl=n.n(Yl),Gl=n(82492),Jl=n.n(Gl),Ql={class:"image-cropper"},Xl={key:0},ea={class:"image-cropper-image-container"},ta=["src"],na={class:"image-cropper-buttons-wrapper"},la=["disabled","textContent"],aa=["disabled","textContent"],oa=["disabled","textContent"],sa=["accept"],ra=n(71002),ia=n(33129),ua=n.n(ia);j.vI.add(B.IJ7);const ca={props:{trigger:{type:[String,window.Element],required:!0},submitHandler:{type:Function,required:!0},cropperOptions:{type:Object,default:function(){return{aspectRatio:1,autoCropArea:1,viewMode:1,movable:!1,zoomable:!1,guides:!1}}},mimes:{type:String,default:"image/png, image/gif, image/jpeg, image/bmp, image/x-icon"},saveButtonLabel:{type:String},saveWithoutCroppingButtonlabel:{type:String},cancelButtonLabel:{type:String}},data:function(){return{cropper:void 0,dataUrl:void 0,filename:void 0,submitting:!1}},computed:{saveText:function(){return this.saveButtonLabel||this.$t("image_cropper.save")},saveWithoutCroppingText:function(){return this.saveWithoutCroppingButtonlabel||this.$t("image_cropper.save_without_cropping")},cancelText:function(){return this.cancelButtonLabel||this.$t("image_cropper.cancel")}},methods:{destroy:function(){this.cropper&&this.cropper.destroy(),this.$refs.input.value="",this.dataUrl=void 0,this.$emit("close")},submit:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.submitting=!0,this.submitHandler(t&&this.cropper,this.file).then((function(){return e.destroy()})).finally((function(){e.submitting=!1}))},pickImage:function(){this.$refs.input.click()},createCropper:function(){this.cropper=new(ua())(this.$refs.img,this.cropperOptions)},getTriggerDOM:function(){return"object"===(0,ra.Z)(this.trigger)?this.trigger:document.querySelector(this.trigger)},readFile:function(){var e=this,t=this.$refs.input;if(null!=t.files&&null!=t.files[0]){this.file=t.files[0];var n=new window.FileReader;n.onload=function(t){e.dataUrl=t.target.result,e.$emit("open")},n.readAsDataURL(this.file),this.$emit("changed",this.file,n)}}},mounted:function(){var e=this.getTriggerDOM();e?e.addEventListener("click",this.pickImage):this.$emit("error","No image make trigger found.","user"),this.$refs.input.addEventListener("change",this.readFile)},beforeUnmount:function(){var e=this.getTriggerDOM();e&&e.removeEventListener("click",this.pickImage),this.$refs.input.removeEventListener("change",this.readFile)}},da=(0,E.Z)(ca,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("FAIcon");return(0,l.wg)(),(0,l.iD)("div",Ql,[e.dataUrl?((0,l.wg)(),(0,l.iD)("div",Xl,[(0,l._)("div",ea,[(0,l._)("img",{ref:"img",src:e.dataUrl,alt:"",onLoad:t[0]||(t[0]=(0,me.iM)((function(){return e.createCropper&&e.createCropper.apply(e,arguments)}),["stop"]))},null,40,ta)]),(0,l._)("div",na,[(0,l._)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[1]||(t[1]=function(t){return e.submit()}),textContent:(0,f.zw)(e.saveText)},null,8,la),(0,l._)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[2]||(t[2]=function(){return e.destroy&&e.destroy.apply(e,arguments)}),textContent:(0,f.zw)(e.cancelText)},null,8,aa),(0,l._)("button",{class:"button-default btn",type:"button",disabled:e.submitting,onClick:t[3]||(t[3]=function(t){return e.submit(!1)}),textContent:(0,f.zw)(e.saveWithoutCroppingText)},null,8,oa),e.submitting?((0,l.wg)(),(0,l.j4)(r,{key:0,spin:"",icon:"circle-notch"})):(0,l.kq)("",!0)])])):(0,l.kq)("",!0),(0,l._)("input",{ref:"input",type:"file",class:"image-cropper-img-input",accept:e.mimes},null,8,sa)])}]]);var pa=n(54110),ma=n(65079),fa=n(86319),ha=n(19003),ga=n(73414),ba=n(37230);function wa(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function _a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?wa(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wa(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}j.vI.add(B.NBC,B.r8p,B.IJ7);var ka={data:function(){return{newName:this.$store.state.users.currentUser.name_unescaped,newBio:Kl()(this.$store.state.users.currentUser.description),newLocked:this.$store.state.users.currentUser.locked,newBirthday:this.$store.state.users.currentUser.birthday,showBirthday:this.$store.state.users.currentUser.show_birthday,newFields:this.$store.state.users.currentUser.fields.map((function(e){return{name:e.name,value:e.value}})),showRole:this.$store.state.users.currentUser.show_role,role:this.$store.state.users.currentUser.role,bot:this.$store.state.users.currentUser.bot,pickAvatarBtnVisible:!0,bannerUploading:!1,backgroundUploading:!1,banner:null,bannerPreview:null,background:null,backgroundPreview:null,emailLanguage:this.$store.state.users.currentUser.language||[""]}},components:{ScopeSelector:pa.Z,ImageCropper:da,EmojiInput:fa.Z,Autosuggest:we,ProgressButton:ze.Z,Checkbox:N.Z,BooleanSetting:Tt,InterfaceLanguageSwitcher:ga.Z},computed:_a(_a({user:function(){return this.$store.state.users.currentUser}},zt()),{},{emojiUserSuggestor:function(){return(0,ha.ZP)({emoji:[].concat((0,qe.Z)(this.$store.getters.standardEmojiList),(0,qe.Z)(this.$store.state.instance.customEmoji)),store:this.$store})},emojiSuggestor:function(){return(0,ha.ZP)({emoji:[].concat((0,qe.Z)(this.$store.getters.standardEmojiList),(0,qe.Z)(this.$store.state.instance.customEmoji))})},userSuggestor:function(){return(0,ha.ZP)({store:this.$store})},fieldsLimits:function(){return this.$store.state.instance.fieldsLimits},maxFields:function(){return this.fieldsLimits?this.fieldsLimits.maxFields:0},defaultAvatar:function(){return this.$store.state.instance.server+this.$store.state.instance.defaultAvatar},defaultBanner:function(){return this.$store.state.instance.server+this.$store.state.instance.defaultBanner},isDefaultAvatar:function(){var e=this.$store.state.instance.defaultAvatar;return!this.$store.state.users.currentUser.profile_image_url||this.$store.state.users.currentUser.profile_image_url.includes(e)},isDefaultBanner:function(){var e=this.$store.state.instance.defaultBanner;return!this.$store.state.users.currentUser.cover_photo||this.$store.state.users.currentUser.cover_photo.includes(e)},isDefaultBackground:function(){return!this.$store.state.users.currentUser.background_image},avatarImgSrc:function(){return this.$store.state.users.currentUser.profile_image_url_original||this.defaultAvatar},bannerImgSrc:function(){return this.$store.state.users.currentUser.cover_photo||this.defaultBanner}}),methods:{updateProfile:function(){var e=this,t={note:this.newBio,locked:this.newLocked,display_name:this.newName,fields_attributes:this.newFields.filter((function(e){return null!=e})),bot:this.bot,show_role:this.showRole,birthday:this.newBirthday||"",show_birthday:this.showBirthday};this.emailLanguage&&(t.language=kl.Z.internalToBackendLocaleMulti(this.emailLanguage)),this.$store.state.api.backendInteractor.updateProfile({params:t}).then((function(t){e.newFields.splice(t.fields.length),Jl()(e.newFields,t.fields),e.$store.commit("addNewUsers",[t]),e.$store.commit("setCurrentUser",t)}))},changeVis:function(e){this.newDefaultScope=e},addField:function(){return this.newFields.length<this.maxFields&&(this.newFields.push({name:"",value:""}),!0)},deleteField:function(e,t){this.newFields.splice(e,1)},uploadFile:function(e,t){var n=this,l=t.target.files[0];if(l)if(l.size>this.$store.state.instance[e+"limit"]){var a=ma.Z.fileSizeFormat(l.size),o=ma.Z.fileSizeFormat(this.$store.state.instance[e+"limit"]);this.$store.dispatch("pushGlobalNotice",{messageKey:"upload.error.message",messageArgs:[this.$t("upload.error.file_too_big",{filesize:a.num,filesizeunit:a.unit,allowedsize:o.num,allowedsizeunit:o.unit})],level:"error"})}else{var s=new FileReader;s.onload=function(t){var a=t.target.result;n[e+"Preview"]=a,n[e]=l},s.readAsDataURL(l)}},resetAvatar:function(){window.confirm(this.$t("settings.reset_avatar_confirm"))&&this.submitAvatar(void 0,"")},resetBanner:function(){window.confirm(this.$t("settings.reset_banner_confirm"))&&this.submitBanner("")},resetBackground:function(){window.confirm(this.$t("settings.reset_background_confirm"))&&this.submitBackground("")},submitAvatar:function(e,t){var n=this;return new Promise((function(l,a){function o(e,t){n.$store.state.api.backendInteractor.updateProfileImages({avatar:e,avatarName:t}).then((function(e){n.$store.commit("addNewUsers",[e]),n.$store.commit("setCurrentUser",e),l()})).catch((function(e){n.displayUploadError(e),a(e)}))}e?e.getCroppedCanvas().toBlob((function(e){return o(e,t.name)}),t.type):o(t,t.name)}))},submitBanner:function(e){var t=this;(this.bannerPreview||""===e)&&(this.bannerUploading=!0,this.$store.state.api.backendInteractor.updateProfileImages({banner:e}).then((function(e){t.$store.commit("addNewUsers",[e]),t.$store.commit("setCurrentUser",e),t.bannerPreview=null})).catch(this.displayUploadError).finally((function(){t.bannerUploading=!1})))},submitBackground:function(e){var t=this;(this.backgroundPreview||""===e)&&(this.backgroundUploading=!0,this.$store.state.api.backendInteractor.updateProfileImages({background:e}).then((function(e){t.$store.commit("addNewUsers",[e]),t.$store.commit("setCurrentUser",e),t.backgroundPreview=null})).catch(this.displayUploadError).finally((function(){t.backgroundUploading=!1})))},displayUploadError:function(e){this.$store.dispatch("pushGlobalNotice",{messageKey:"upload.error.message",messageArgs:[e.message],level:"error"})},propsToNative:function(e){return(0,ba.X)(e)}}};const va=ka,ya=(0,E.Z)(va,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("EmojiInput"),i=(0,l.up)("Checkbox"),u=(0,l.up)("FAIcon"),c=(0,l.up)("interface-language-switcher"),d=(0,l.up)("image-cropper"),p=(0,l.up)("BooleanSetting");return(0,l.wg)(),(0,l.iD)("div",$l,[(0,l._)("div",Cl,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.name_bio")),1),(0,l._)("p",null,(0,f.zw)(e.$t("settings.name")),1),(0,l.Wm)(r,{modelValue:e.newName,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.newName=t}),"enable-emoji-picker":"",suggest:e.emojiSuggestor},{default:(0,l.w5)((function(n){return[(0,l.wy)((0,l._)("input",(0,l.dG)({id:"username","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.newName=t}),class:"name-changer"},e.propsToNative(n)),null,16),[[me.YZ,e.newName]])]})),_:1},8,["modelValue","suggest"]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.bio")),1),(0,l.Wm)(r,{modelValue:e.newBio,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.newBio=t}),"enable-emoji-picker":"",suggest:e.emojiUserSuggestor},{default:(0,l.w5)((function(n){return[(0,l.wy)((0,l._)("textarea",(0,l.dG)({"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.newBio=t}),class:"bio resize-height"},e.propsToNative(n)),null,16),[[me.nr,e.newBio]])]})),_:1},8,["modelValue","suggest"]),"admin"===e.role||"moderator"===e.role?((0,l.wg)(),(0,l.iD)("p",Vl,[(0,l.Wm)(i,{modelValue:e.showRole,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.showRole=t})},{default:(0,l.w5)((function(){return["admin"===e.role?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l.Uk)((0,f.zw)(e.$t("settings.show_admin_badge")),1)],64)):(0,l.kq)("",!0),"moderator"===e.role?((0,l.wg)(),(0,l.iD)(l.HY,{key:1},[(0,l.Uk)((0,f.zw)(e.$t("settings.show_moderator_badge")),1)],64)):(0,l.kq)("",!0)]})),_:1},8,["modelValue"])])):(0,l.kq)("",!0),(0,l._)("div",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.birthday.label")),1),(0,l.wy)((0,l._)("input",{id:"birthday","onUpdate:modelValue":t[5]||(t[5]=function(t){return e.newBirthday=t}),type:"date",class:"birthday-input"},null,512),[[me.nr,e.newBirthday]]),(0,l.Wm)(i,{modelValue:e.showBirthday,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.showBirthday=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.birthday.show_birthday")),1)]})),_:1},8,["modelValue"])]),e.maxFields>0?((0,l.wg)(),(0,l.iD)("div",Tl,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.profile_fields.label")),1),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.newFields,(function(t,n){return(0,l.wg)(),(0,l.iD)("div",{key:n,class:"profile-fields"},[(0,l.Wm)(r,{modelValue:e.newFields[n].name,"onUpdate:modelValue":function(t){return e.newFields[n].name=t},"enable-emoji-picker":"","hide-emoji-button":"",suggest:e.userSuggestor},{default:(0,l.w5)((function(t){return[(0,l.wy)((0,l._)("input",(0,l.dG)({"onUpdate:modelValue":function(t){return e.newFields[n].name=t},placeholder:e.$t("settings.profile_fields.name")},e.propsToNative(t)),null,16,Ul),[[me.YZ,e.newFields[n].name]])]})),_:2},1032,["modelValue","onUpdate:modelValue","suggest"]),(0,l.Wm)(r,{modelValue:e.newFields[n].value,"onUpdate:modelValue":function(t){return e.newFields[n].value=t},"enable-emoji-picker":"","hide-emoji-button":"",suggest:e.userSuggestor},{default:(0,l.w5)((function(t){return[(0,l.wy)((0,l._)("input",(0,l.dG)({"onUpdate:modelValue":function(t){return e.newFields[n].value=t},placeholder:e.$t("settings.profile_fields.value")},e.propsToNative(t)),null,16,xl),[[me.YZ,e.newFields[n].value]])]})),_:2},1032,["modelValue","onUpdate:modelValue","suggest"]),(0,l._)("button",{class:"delete-field button-unstyled -hover-highlight",onClick:function(t){return e.deleteField(n)}},[e.newFields.length>1?((0,l.wg)(),(0,l.j4)(u,{key:0,icon:"times"})):(0,l.kq)("",!0)],8,Ll)])})),128)),e.newFields.length<e.maxFields?((0,l.wg)(),(0,l.iD)("button",{key:0,class:"add-field faint button-unstyled -hover-highlight",onClick:t[7]||(t[7]=function(){return e.addField&&e.addField.apply(e,arguments)})},[(0,l.Wm)(u,{icon:"plus"}),(0,l.Uk)(" "+(0,f.zw)(e.$t("settings.profile_fields.add_field")),1)])):(0,l.kq)("",!0)])):(0,l.kq)("",!0),(0,l._)("p",null,[(0,l.Wm)(i,{modelValue:e.bot,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.bot=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.bot")),1)]})),_:1},8,["modelValue"])]),(0,l._)("p",null,[(0,l.Wm)(c,{"prompt-text":e.$t("settings.email_language"),language:e.emailLanguage,"set-language":function(t){return e.emailLanguage=t}},null,8,["prompt-text","language","set-language"])]),(0,l._)("button",{disabled:e.newName&&0===e.newName.length,class:"btn button-default",onClick:t[9]||(t[9]=function(){return e.updateProfile&&e.updateProfile.apply(e,arguments)})},(0,f.zw)(e.$t("settings.save")),9,Ol)]),(0,l._)("div",Wl,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.avatar")),1),(0,l._)("p",zl,(0,f.zw)(e.$t("settings.avatar_size_instruction")),1),(0,l._)("div",Sl,[(0,l._)("img",{src:e.user.profile_image_url_original,class:"current-avatar"},null,8,Pl),!e.isDefaultAvatar&&e.pickAvatarBtnVisible?((0,l.wg)(),(0,l.iD)("button",{key:0,title:e.$t("settings.reset_avatar"),class:"button-unstyled reset-button",onClick:t[10]||(t[10]=function(){return e.resetAvatar&&e.resetAvatar.apply(e,arguments)})},[(0,l.Wm)(u,{icon:"times",type:"button"})],8,Dl)):(0,l.kq)("",!0)]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.set_new_avatar")),1),(0,l.wy)((0,l._)("button",{id:"pick-avatar",class:"button-default btn",type:"button"},(0,f.zw)(e.$t("settings.upload_a_photo")),513),[[me.F8,e.pickAvatarBtnVisible]]),(0,l.Wm)(d,{trigger:"#pick-avatar","submit-handler":e.submitAvatar,onOpen:t[11]||(t[11]=function(t){return e.pickAvatarBtnVisible=!1}),onClose:t[12]||(t[12]=function(t){return e.pickAvatarBtnVisible=!0})},null,8,["submit-handler"])]),(0,l._)("div",Il,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.profile_banner")),1),(0,l._)("div",jl,[(0,l._)("img",{src:e.user.cover_photo},null,8,Bl),e.isDefaultBanner?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"button-unstyled reset-button",title:e.$t("settings.reset_profile_banner"),onClick:t[13]||(t[13]=function(){return e.resetBanner&&e.resetBanner.apply(e,arguments)})},[(0,l.Wm)(u,{icon:"times",type:"button"})],8,Al))]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.set_new_profile_banner")),1),e.bannerPreview?((0,l.wg)(),(0,l.iD)("img",{key:0,class:"banner-background-preview",src:e.bannerPreview},null,8,El)):(0,l.kq)("",!0),(0,l._)("div",null,[(0,l._)("input",{type:"file",onChange:t[14]||(t[14]=function(t){return e.uploadFile("banner",t)})},null,32)]),e.bannerUploading?((0,l.wg)(),(0,l.j4)(u,{key:1,class:"uploading",spin:"",icon:"circle-notch"})):e.bannerPreview?((0,l.wg)(),(0,l.iD)("button",{key:2,class:"btn button-default",onClick:t[15]||(t[15]=function(t){return e.submitBanner(e.banner)})},(0,f.zw)(e.$t("settings.save")),1)):(0,l.kq)("",!0)]),(0,l._)("div",Fl,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.profile_background")),1),(0,l._)("div",ql,[(0,l._)("img",{src:e.user.background_image},null,8,Zl),e.isDefaultBackground?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("button",{key:0,class:"button-unstyled reset-button",title:e.$t("settings.reset_profile_background"),onClick:t[16]||(t[16]=function(){return e.resetBackground&&e.resetBackground.apply(e,arguments)})},[(0,l.Wm)(u,{icon:"times",type:"button"})],8,Ml))]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.set_new_profile_background")),1),e.backgroundPreview?((0,l.wg)(),(0,l.iD)("img",{key:0,class:"banner-background-preview",src:e.backgroundPreview},null,8,Rl)):(0,l.kq)("",!0),(0,l._)("div",null,[(0,l._)("input",{type:"file",onChange:t[17]||(t[17]=function(t){return e.uploadFile("background",t)})},null,32)]),e.backgroundUploading?((0,l.wg)(),(0,l.j4)(u,{key:1,class:"uploading",spin:"",icon:"circle-notch"})):e.backgroundPreview?((0,l.wg)(),(0,l.iD)("button",{key:2,class:"btn button-default",onClick:t[18]||(t[18]=function(t){return e.submitBackground(e.background)})},(0,f.zw)(e.$t("settings.save")),1)):(0,l.kq)("",!0)]),(0,l._)("div",Nl,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.account_privacy")),1),(0,l._)("ul",Hl,[(0,l._)("li",null,[(0,l.Wm)(p,{path:"serverSide_locked"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.lock_account_description")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(p,{path:"serverSide_discoverable"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.discoverable")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(p,{path:"serverSide_allowFollowingMove"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.allow_following_move")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(p,{path:"serverSide_hideFavorites"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_favorites_description")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(p,{path:"serverSide_hideFollowers"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_followers_description")),1)]})),_:1}),(0,l._)("ul",{class:(0,f.C_)(["setting-list suboptions",[{disabled:!e.serverSide_hideFollowers}]])},[(0,l._)("li",null,[(0,l.Wm)(p,{path:"serverSide_hideFollowersCount",disabled:!e.serverSide_hideFollowers},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_followers_count_description")),1)]})),_:1},8,["disabled"])])],2)]),(0,l._)("li",null,[(0,l.Wm)(p,{path:"serverSide_hideFollows"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_follows_description")),1)]})),_:1}),(0,l._)("ul",{class:(0,f.C_)(["setting-list suboptions",[{disabled:!e.serverSide_hideFollows}]])},[(0,l._)("li",null,[(0,l.Wm)(p,{path:"serverSide_hideFollowsCount",disabled:!e.serverSide_hideFollows},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_follows_count_description")),1)]})),_:1},8,["disabled"])])],2)])])])])}]]);var $a=["label"],Ca={class:"setting-item"},Va={class:"setting-list"},Ta={key:0},Ua={key:1},xa={key:2},La={key:3},Oa={class:"column-settings"},Wa={class:"select-multiple"},za={class:"label"},Sa={class:"option-list"},Pa={class:"setting-item"},Da={class:"setting-list"},Ia={key:0,class:"setting-list suboptions"},ja={class:"setting-list suboptions"},Ba={key:0,class:"unavailable"},Aa={key:1},Ea={key:2},Fa={key:3},qa={key:0,class:"setting-item"},Za={class:"setting-list"},Ma={for:"default-vis"},Ra={key:0},Na={key:0,class:"SizeSetting"},Ha=["for"],Ya=["id","disabled","min","value"],Ka=["value"],Ga=["cm","mm","in","px","pt","pc","em","ex","ch","rem","vw","vh","vmin","vmax","%"],Ja=["px","rem","vw"];const Qa={components:{ModifiedIndicator:_t,Select:Kt.Z},props:{path:String,disabled:Boolean,min:Number,units:{type:[String],default:function(){return Ga}},expert:[Number,String]},computed:{pathDefault:function(){var e=this.path.split("."),t=(0,pt.Z)(e),n=t[0],l=t.slice(1);return[n+"DefaultValue"].concat((0,qe.Z)(l)).join(".")},stateUnit:function(){return(this.state||"").replace(/\d+/,"")},stateValue:function(){return(this.state||"").replace(/\D+/,"")},state:function(){var e=ie()(this.$parent,this.path);return void 0===e?this.defaultState:e},defaultState:function(){return ie()(this.$parent,this.pathDefault)},isChanged:function(){return this.state!==this.defaultState},matchesExpertLevel:function(){return(this.expert||0)<=this.$parent.expertLevel}},methods:{update:function(e){ft()(this.$parent,this.path,e)},reset:function(){ft()(this.$parent,this.path,this.defaultState)},updateValue:function(e){ft()(this.$parent,this.path,parseInt(e.target.value)+this.stateUnit)},updateUnit:function(e){ft()(this.$parent,this.path,this.stateValue+e.target.value)}}},Xa=(0,E.Z)(Qa,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("Select"),i=(0,l.up)("ModifiedIndicator");return e.matchesExpertLevel?((0,l.wg)(),(0,l.iD)("span",Na,[(0,l._)("label",{for:e.path,class:"size-label"},[(0,l.WI)(e.$slots,"default")],8,Ha),(0,l._)("input",{id:e.path,class:"number-input",type:"number",step:"1",disabled:e.disabled,min:e.min||0,value:e.stateValue,onChange:t[0]||(t[0]=function(){return e.updateValue&&e.updateValue.apply(e,arguments)})},null,40,Ya),(0,l.Wm)(r,{id:e.path,"model-value":e.stateUnit,disabled:e.disabled,class:"css-unit-input",onChange:e.updateUnit},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.units,(function(e){return(0,l.wg)(),(0,l.iD)("option",{key:e,value:e},(0,f.zw)(e),9,Ka)})),128))]})),_:1},8,["id","model-value","disabled","onChange"]),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l.Wm)(i,{changed:e.isChanged,onclick:e.reset},null,8,["changed","onclick"])])):(0,l.kq)("",!0)}]]);function eo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}j.vI.add(B.g4A);const to={data:function(){var e=this;return{subjectLineOptions:["email","noop","masto"].map((function(t){return{key:t,value:t,label:e.$t("settings.subject_line_".concat("masto"===t?"mastodon":t))}})),conversationDisplayOptions:["tree","linear"].map((function(t){return{key:t,value:t,label:e.$t("settings.conversation_display_".concat(t))}})),conversationOtherRepliesButtonOptions:["below","inside"].map((function(t){return{key:t,value:t,label:e.$t("settings.conversation_other_replies_button_".concat(t))}})),mentionLinkDisplayOptions:["short","full_for_remote","full"].map((function(t){return{key:t,value:t,label:e.$t("settings.mention_link_display_".concat(t))}})),thirdColumnModeOptions:["none","notifications","postform"].map((function(t){return{key:t,value:t,label:e.$t("settings.third_column_mode_".concat(t))}})),userPopoverAvatarActionOptions:["close","zoom","open"].map((function(t){return{key:t,value:t,label:e.$t("settings.user_popover_avatar_action_".concat(t))}})),loopSilentAvailable:Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype,"mozHasAudio")||Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype,"webkitAudioDecodedByteCount")||Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype,"audioTracks")}},components:{BooleanSetting:Tt,ChoiceSetting:Jt,IntegerSetting:nn,SizeSetting:Xa,InterfaceLanguageSwitcher:ga.Z,ScopeSelector:pa.Z,ServerSideIndicator:$t},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?eo(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):eo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({horizontalUnits:function(){return Ja},postFormats:function(){return this.$store.state.instance.postFormats||[]},postContentOptions:function(){var e=this;return this.postFormats.map((function(t){return{key:t,value:t,label:e.$t('post_status.content_type["'.concat(t,'"]'))}}))},columns:function(){var e=this.$store.getters.mergedConfig.thirdColumnMode,t="none"===e?[]:["notifs"];return this.$store.getters.mergedConfig.sidebarRight||"postform"===e?[].concat(t,["content","sidebar"]):["sidebar","content"].concat(t)},instanceSpecificPanelPresent:function(){return this.$store.state.instance.showInstanceSpecificPanel},instanceWallpaperUsed:function(){return this.$store.state.instance.background&&!this.$store.state.users.currentUser.background_image},instanceShoutboxPresent:function(){return this.$store.state.instance.shoutAvailable},language:{get:function(){return this.$store.getters.mergedConfig.interfaceLanguage},set:function(e){this.$store.dispatch("setOption",{name:"interfaceLanguage",value:e})}}},zt()),methods:{changeDefaultScope:function(e){this.$store.dispatch("setServerSideOption",{name:"defaultScope",value:e})}}},no=(0,E.Z)(to,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("interface-language-switcher"),i=(0,l.up)("BooleanSetting"),u=(0,l.up)("ChoiceSetting"),c=(0,l.up)("SizeSetting"),d=(0,l.up)("IntegerSetting"),p=(0,l.up)("FAIcon"),m=(0,l.up)("ServerSideIndicator"),h=(0,l.up)("ScopeSelector");return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.general")},[(0,l._)("div",Ca,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.interface")),1),(0,l._)("ul",Va,[(0,l._)("li",null,[(0,l.Wm)(r,{"prompt-text":e.$t("settings.interfaceLanguage"),language:e.language,"set-language":function(t){return e.language=t}},null,8,["prompt-text","language","set-language"])]),e.instanceSpecificPanelPresent?((0,l.wg)(),(0,l.iD)("li",Ta,[(0,l.Wm)(i,{path:"hideISP"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_isp")),1)]})),_:1})])):(0,l.kq)("",!0),e.instanceWallpaperUsed?((0,l.wg)(),(0,l.iD)("li",Ua,[(0,l.Wm)(i,{path:"hideInstanceWallpaper"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_wallpaper")),1)]})),_:1})])):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l.Wm)(i,{path:"stopGifs"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.stop_gifs")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"streaming"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.streaming")),1)]})),_:1}),(0,l._)("ul",{class:(0,f.C_)(["setting-list suboptions",[{disabled:!e.streaming}]])},[(0,l._)("li",null,[(0,l.Wm)(i,{path:"pauseOnUnfocused",disabled:!e.streaming},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.pause_on_unfocused")),1)]})),_:1},8,["disabled"])])],2)]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"useStreamingApi",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.useStreamingApi")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"virtualScrolling",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.virtual_scrolling")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(u,{id:"userPopoverAvatarAction",path:"userPopoverAvatarAction",options:e.userPopoverAvatarActionOptions,expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.user_popover_avatar_action")),1)]})),_:1},8,["options"])]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"userPopoverOverlay",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.user_popover_avatar_overlay")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"alwaysShowNewPostButton",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.always_show_post_button")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"autohideFloatingPostButton",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.autohide_floating_post_button")),1)]})),_:1})]),e.instanceShoutboxPresent?((0,l.wg)(),(0,l.iD)("li",xa,[(0,l.Wm)(i,{path:"hideShoutbox",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.hide_shoutbox")),1)]})),_:1})])):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l._)("h3",null,(0,f.zw)(e.$t("settings.columns")),1)]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"disableStickyHeaders"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.disable_sticky_headers")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"showScrollbars"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.show_scrollbars")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"sidebarRight"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.right_sidebar")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"navbarColumnStretch"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.navbar_column_stretch")),1)]})),_:1})]),(0,l._)("li",null,[e.user?((0,l.wg)(),(0,l.j4)(u,{key:0,id:"thirdColumnMode",path:"thirdColumnMode",options:e.thirdColumnModeOptions},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.third_column_mode")),1)]})),_:1},8,["options"])):(0,l.kq)("",!0)]),e.expertLevel>0?((0,l.wg)(),(0,l.iD)("li",La,[(0,l.Uk)((0,f.zw)(e.$t("settings.column_sizes"))+" ",1),(0,l._)("div",Oa,[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.columns,(function(t){return(0,l.wg)(),(0,l.j4)(c,{key:t,path:t+"ColumnWidth",units:e.horizontalUnits,expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.column_sizes_"+t)),1)]})),_:2},1032,["path","units"])})),128))])])):(0,l.kq)("",!0),(0,l._)("li",Wa,[(0,l._)("span",za,(0,f.zw)(e.$t("settings.confirm_dialogs")),1),(0,l._)("ul",Sa,[(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnRepeat"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_repeat")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnUnfollow"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_unfollow")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnBlock"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_block")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnMute"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_mute")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnDelete"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_delete")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnLogout"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_logout")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnApproveFollow"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_approve_follow")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnDenyFollow"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_deny_follow")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"modalOnRemoveUserFromFollowers"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.confirm_dialogs_remove_follower")),1)]})),_:1})])])])])]),(0,l._)("div",Pa,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.post_look_feel")),1),(0,l._)("ul",Da,[(0,l._)("li",null,[(0,l.Wm)(u,{id:"conversationDisplay",path:"conversationDisplay",options:e.conversationDisplayOptions},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.conversation_display")),1)]})),_:1},8,["options"])]),"linear"!==e.conversationDisplay?((0,l.wg)(),(0,l.iD)("ul",Ia,[(0,l._)("li",null,[(0,l.Wm)(i,{path:"conversationTreeAdvanced"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.tree_advanced")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"conversationTreeFadeAncestors",expert:1},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.tree_fade_ancestors")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(d,{path:"maxDepthInThread",min:3,expert:1},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.max_depth_in_thread")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(u,{id:"conversationOtherRepliesButton",path:"conversationOtherRepliesButton",options:e.conversationOtherRepliesButtonOptions,expert:1},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.conversation_other_replies_button")),1)]})),_:1},8,["options"])])])):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l.Wm)(i,{path:"collapseMessageWithSubject"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.collapse_subject")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"emojiReactionsOnTimeline",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.emoji_reactions_on_timeline")),1)]})),_:1})]),(0,l._)("li",null,[e.user?((0,l.wg)(),(0,l.j4)(i,{key:0,path:"serverSide_stripRichContent",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.no_rich_text_description")),1)]})),_:1})):(0,l.kq)("",!0)]),(0,l._)("h3",null,(0,f.zw)(e.$t("settings.attachments")),1),(0,l._)("li",null,[(0,l.Wm)(i,{path:"useContainFit",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.use_contain_fit")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"hideNsfw"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.nsfw_clickthrough")),1)]})),_:1})]),(0,l._)("ul",ja,[(0,l._)("li",null,[(0,l.Wm)(i,{path:"preloadImage",expert:"1",disabled:!e.hideNsfw},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.preload_images")),1)]})),_:1},8,["disabled"])]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"useOneClickNsfw",expert:"1",disabled:!e.hideNsfw},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.use_one_click_nsfw")),1)]})),_:1},8,["disabled"])])]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"loopVideo",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.loop_video")),1)]})),_:1}),(0,l._)("ul",{class:(0,f.C_)(["setting-list suboptions",[{disabled:!e.streaming}]])},[(0,l._)("li",null,[(0,l.Wm)(i,{path:"loopVideoSilentOnly",expert:"1",disabled:!e.loopVideo||!e.loopSilentAvailable},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.loop_video_silent_only")),1)]})),_:1},8,["disabled"]),e.loopSilentAvailable?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("div",Ba,[(0,l.Wm)(p,{icon:"globe"}),(0,l.Uk)("! "+(0,f.zw)(e.$t("settings.limited_availability")),1)]))])],2)]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"playVideosInModal",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.play_videos_in_modal")),1)]})),_:1})]),(0,l._)("h3",null,(0,f.zw)(e.$t("settings.mention_links")),1),(0,l._)("li",null,[(0,l.Wm)(u,{id:"mentionLinkDisplay",path:"mentionLinkDisplay",options:e.mentionLinkDisplayOptions},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mention_link_display")),1)]})),_:1},8,["options"])]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"mentionLinkShowTooltip",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mention_link_use_tooltip")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"useAtIcon",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.use_at_icon")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"mentionLinkShowAvatar"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mention_link_show_avatar")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"mentionLinkFadeDomain",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mention_link_fade_domain")),1)]})),_:1})]),e.user?((0,l.wg)(),(0,l.iD)("li",Aa,[(0,l.Wm)(i,{path:"mentionLinkBoldenYou",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.mention_link_bolden_you")),1)]})),_:1})])):(0,l.kq)("",!0),e.expertLevel>0?((0,l.wg)(),(0,l.iD)("h3",Ea,(0,f.zw)(e.$t("settings.fun")),1)):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l.Wm)(i,{path:"greentext",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.greentext")),1)]})),_:1})]),e.user?((0,l.wg)(),(0,l.iD)("li",Fa,[(0,l.Wm)(i,{path:"mentionLinkShowYous",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.show_yous")),1)]})),_:1})])):(0,l.kq)("",!0)])]),e.user?((0,l.wg)(),(0,l.iD)("div",qa,[(0,l._)("h2",null,(0,f.zw)(e.$t("settings.composing")),1),(0,l._)("ul",Za,[(0,l._)("li",null,[(0,l._)("label",Ma,[(0,l.Uk)((0,f.zw)(e.$t("settings.default_vis"))+" ",1),(0,l.Wm)(m,{"server-side":!0}),(0,l.Wm)(h,{class:"scope-selector","show-all":!0,"user-default":e.serverSide_defaultScope,"initial-scope":e.serverSide_defaultScope,"on-scope-change":e.changeDefaultScope},null,8,["user-default","initial-scope","on-scope-change"])])]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"sensitiveByDefault"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.sensitive_by_default")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"scopeCopy",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.scope_copy")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"alwaysShowSubjectInput",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.subject_input_always_show")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(u,{id:"subjectLineBehavior",path:"subjectLineBehavior",options:e.subjectLineOptions,expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.subject_line_behavior")),1)]})),_:1},8,["options"])]),e.postFormats.length>0?((0,l.wg)(),(0,l.iD)("li",Ra,[(0,l.Wm)(u,{id:"postContentType",path:"postContentType",options:e.postContentOptions},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.post_status_content_type")),1)]})),_:1},8,["options"])])):(0,l.kq)("",!0),(0,l._)("li",null,[(0,l.Wm)(i,{path:"minimalScopesMode",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.minimal_scopes_mode")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"alwaysShowNewPostButton",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.always_show_post_button")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"autohideFloatingPostButton",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.autohide_floating_post_button")),1)]})),_:1})]),(0,l._)("li",null,[(0,l.Wm)(i,{path:"padEmoji",expert:"1"},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.pad_emoji")),1)]})),_:1})])])])):(0,l.kq)("",!0)],8,$a)}]]);var lo=["label"],ao={class:"setting-item"},oo={class:"setting-list"},so={class:"option-list"},ro=["href"],io={class:"option-list"},uo=["href"];const co={data:function(){var e=this.$store.state.instance;return{backendVersion:e.backendVersion,frontendVersion:e.frontendVersion}},computed:{frontendVersionLink:function(){return"https://git.pleroma.social/pleroma/pleroma-fe/commit/"+this.frontendVersion},backendVersionLink:function(){return"https://git.pleroma.social/pleroma/pleroma/commit/"+((e=this.backendVersion.match(/-g(\w+)/i))?e[1]:"");var e}}},po=(0,E.Z)(co,[["render",function(e,t,n,a,o,s){return(0,l.wg)(),(0,l.iD)("div",{label:e.$t("settings.version.title")},[(0,l._)("div",ao,[(0,l._)("ul",oo,[(0,l._)("li",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.version.backend_version")),1),(0,l._)("ul",so,[(0,l._)("li",null,[(0,l._)("a",{href:e.backendVersionLink,target:"_blank"},(0,f.zw)(e.backendVersion),9,ro)])])]),(0,l._)("li",null,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.version.frontend_version")),1),(0,l._)("ul",io,[(0,l._)("li",null,[(0,l._)("a",{href:e.frontendVersionLink,target:"_blank"},(0,f.zw)(e.frontendVersion),9,uo)])])])])])],8,lo)}]]);var mo={class:"theme-tab"},fo={class:"presets-container"},ho={class:"save-load"},go={key:0,class:"theme-warning"},bo={class:"alert warning"},wo={class:"buttons"},_o={class:"top"},ko={class:"presets"},vo={for:"preset-switcher",class:"select"},yo=["value"],$o={class:"export-import"},Co={class:"save-load-options"},Vo={class:"keep-option"},To={class:"keep-option"},Uo={class:"keep-option"},xo={class:"keep-option"},Lo={class:"keep-option"},Oo=["label"],Wo={class:"tab-header"},zo={class:"tab-header-buttons"},So={class:"color-item"},Po={class:"color-item"},Do={class:"color-item"},Io={class:"color-item"},jo=["label"],Bo={class:"tab-header"},Ao={class:"color-item"},Eo={class:"color-item"},Fo={class:"color-item"},qo={class:"color-item"},Zo={class:"color-item"},Mo={class:"color-item"},Ro={class:"color-item"},No={class:"color-item"},Ho={class:"color-item"},Yo={class:"color-item"},Ko={class:"color-item"},Go={class:"color-item"},Jo={class:"color-item"},Qo={class:"color-item"},Xo={class:"color-item"},es={class:"color-item"},ts={class:"color-item"},ns={class:"color-item"},ls=["label"],as={class:"tab-header"},os=["label"],ss={class:"tab-header shadow-selector"},rs={class:"select-container"},is=["value"],us={class:"override"},cs={for:"override",class:"label"},ds=(0,l._)("label",{class:"checkbox-label",for:"override"},null,-1),ps={key:0},ms=(0,l._)("code",null,"filter: drop-shadow()",-1),fs=(0,l._)("code",null,"drop-shadow",-1),hs=(0,l._)("code",null,"spread-radius",-1),gs=(0,l._)("code",null,"inset",-1),bs=(0,l._)("code",null,"box-shadow",-1),ws=["label"],_s={class:"tab-header"},ks={class:"apply-container"},vs=["disabled"],ys=n(21865),$s=n(77394),Cs=n(25771),Vs=n(44551),Ts=n(40454),Us=["for"],xs={class:"input color-input-field"},Ls=["id","value","disabled"],Os=["id","value","disabled"],Ws={key:1,class:"transparentIndicator"};const zs={components:{Checkbox:N.Z},props:{name:{required:!0,type:String},label:{required:!0,type:String},modelValue:{required:!1,type:String,default:void 0},fallback:{required:!1,type:String,default:void 0},disabled:{required:!1,type:Boolean,default:!1},showOptionalTickbox:{required:!1,type:Boolean,default:!0}},emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue},validColor:function(){return(0,ys.wK)(this.modelValue||this.fallback)},transparentColor:function(){return"transparent"===this.modelValue},computedColor:function(){return this.modelValue&&this.modelValue.startsWith("--")}}},Ss=(0,E.Z)(zs,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("Checkbox");return(0,l.wg)(),(0,l.iD)("div",{class:(0,f.C_)(["color-input style-control",{disabled:!s.present||n.disabled}])},[(0,l._)("label",{for:n.name,class:"label"},(0,f.zw)(n.label),9,Us),void 0!==n.fallback&&n.showOptionalTickbox?((0,l.wg)(),(0,l.j4)(r,{key:0,"model-value":s.present,disabled:n.disabled,class:"opt","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.$emit("update:modelValue",void 0===n.modelValue?n.fallback:void 0)})},null,8,["model-value","disabled"])):(0,l.kq)("",!0),(0,l._)("div",xs,[(0,l._)("input",{id:n.name+"-t",class:"textColor unstyled",type:"text",value:n.modelValue||n.fallback,disabled:!s.present||n.disabled,onInput:t[1]||(t[1]=function(t){return e.$emit("update:modelValue",t.target.value)})},null,40,Ls),s.validColor?((0,l.wg)(),(0,l.iD)("input",{key:0,id:n.name,class:"nativeColor unstyled",type:"color",value:n.modelValue||n.fallback,disabled:!s.present||n.disabled,onInput:t[2]||(t[2]=function(t){return e.$emit("update:modelValue",t.target.value)})},null,40,Os)):(0,l.kq)("",!0),s.transparentColor?((0,l.wg)(),(0,l.iD)("div",Ws)):(0,l.kq)("",!0),s.computedColor?((0,l.wg)(),(0,l.iD)("div",{key:2,class:"computedIndicator",style:(0,f.j5)({backgroundColor:n.fallback})},null,4)):(0,l.kq)("",!0)])],2)}]]);var Ps=["for"],Ds=["id","checked"],Is=["for"],js=["id","value","disabled","max","min","step"],Bs=["id","value","disabled","max","min","step"];const As={props:["name","modelValue","fallback","disabled","label","max","min","step","hardMin","hardMax"],emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue}}},Es=(0,E.Z)(As,[["render",function(e,t,n,a,o,s){return(0,l.wg)(),(0,l.iD)("div",{class:(0,f.C_)(["range-control style-control",{disabled:!s.present||n.disabled}])},[(0,l._)("label",{for:n.name,class:"label"},(0,f.zw)(n.label),9,Ps),void 0!==n.fallback?((0,l.wg)(),(0,l.iD)("input",{key:0,id:n.name+"-o",class:"opt",type:"checkbox",checked:s.present,onChange:t[0]||(t[0]=function(t){return e.$emit("update:modelValue",s.present?void 0:n.fallback)})},null,40,Ds)):(0,l.kq)("",!0),void 0!==n.fallback?((0,l.wg)(),(0,l.iD)("label",{key:1,class:"opt-l",for:n.name+"-o"},null,8,Is)):(0,l.kq)("",!0),(0,l._)("input",{id:n.name,class:"input-number",type:"range",value:n.modelValue||n.fallback,disabled:!s.present||n.disabled,max:n.max||n.hardMax||100,min:n.min||n.hardMin||0,step:n.step||1,onInput:t[1]||(t[1]=function(t){return e.$emit("update:modelValue",t.target.value)})},null,40,js),(0,l._)("input",{id:n.name,class:"input-number",type:"number",value:n.modelValue||n.fallback,disabled:!s.present||n.disabled,max:n.hardMax,min:n.hardMin,step:n.step||1,onInput:t[2]||(t[2]=function(t){return e.$emit("update:modelValue",t.target.value)})},null,40,Bs)],2)}]]);var Fs=["for"],qs=["id","value","disabled"];const Zs={components:{Checkbox:N.Z},props:["name","modelValue","fallback","disabled"],emits:["update:modelValue"],computed:{present:function(){return void 0!==this.modelValue}}},Ms=(0,E.Z)(Zs,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("Checkbox");return(0,l.wg)(),(0,l.iD)("div",{class:(0,f.C_)(["opacity-control style-control",{disabled:!s.present||n.disabled}])},[(0,l._)("label",{for:n.name,class:"label"},(0,f.zw)(e.$t("settings.style.common.opacity")),9,Fs),void 0!==n.fallback?((0,l.wg)(),(0,l.j4)(r,{key:0,"model-value":s.present,disabled:n.disabled,class:"opt","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.$emit("update:modelValue",s.present?void 0:n.fallback)})},null,8,["model-value","disabled"])):(0,l.kq)("",!0),(0,l._)("input",{id:n.name,class:"input-number",type:"number",value:n.modelValue||n.fallback,disabled:!s.present||n.disabled,max:"1",min:"0",step:".05",onInput:t[1]||(t[1]=function(t){return e.$emit("update:modelValue",t.target.value)})},null,40,qs)],2)}]]);var Rs={class:"shadow-preview-container"},Ns=["disabled"],Hs=["disabled"],Ys={class:"wrap"},Ks=["disabled"],Gs={class:"preview-window"},Js=["disabled"],Qs=["disabled"],Xs={class:"wrap"},er=["disabled"],tr={class:"shadow-tweak"},nr=["disabled"],lr=["value"],ar=["disabled"],or=["disabled"],sr=["disabled"],rr=["disabled"],ir=["disabled"],ur={for:"inset",class:"label"},cr=["disabled"],dr=(0,l._)("label",{class:"checkbox-label",for:"inset"},null,-1),pr=["disabled"],mr={for:"spread",class:"label"},fr=["disabled"],hr=["disabled"],gr=["disabled"],br={for:"spread",class:"label"},wr=["disabled"],_r=["disabled"],kr=(0,l._)("code",null,"--variable,mod",-1);function vr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function yr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?vr(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):vr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}j.vI.add(B.ptq,B.mTx,B.NBC,B.r8p);var $r=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return yr({x:0,y:0,blur:0,spread:0,inset:!1,color:"#000000",alpha:1},e)};const Cr={props:["modelValue","fallback","ready"],emits:["update:modelValue"],data:function(){return{selectedId:0,cValue:(this.modelValue||this.fallback||[]).map($r)}},components:{ColorInput:Ss,OpacityInput:Ms,Select:Kt.Z},methods:{add:function(){this.cValue.push($r(this.selected)),this.selectedId=this.cValue.length-1},del:function(){this.cValue.splice(this.selectedId,1),this.selectedId=0===this.cValue.length?void 0:Math.max(this.selectedId-1,0)},moveUp:function(){var e=this.cValue.splice(this.selectedId,1)[0];this.cValue.splice(this.selectedId-1,0,e),this.selectedId-=1},moveDn:function(){var e=this.cValue.splice(this.selectedId,1)[0];this.cValue.splice(this.selectedId+1,0,e),this.selectedId+=1}},beforeUpdate:function(){this.cValue=this.modelValue||this.fallback},computed:{anyShadows:function(){return this.cValue.length>0},anyShadowsFallback:function(){return this.fallback.length>0},selected:function(){return this.ready&&this.anyShadows?this.cValue[this.selectedId]:$r({})},currentFallback:function(){return this.ready&&this.anyShadowsFallback?this.fallback[this.selectedId]:$r({})},moveUpValid:function(){return this.ready&&this.selectedId>0},moveDnValid:function(){return this.ready&&this.selectedId<this.cValue.length-1},present:function(){return this.ready&&void 0!==this.cValue[this.selectedId]&&!this.usingFallback},usingFallback:function(){return void 0===this.modelValue},rgb:function(){return(0,ys.wK)(this.selected.color)},style:function(){return this.ready?{boxShadow:(0,$s.Ot)(this.fallback)}:{}}}},Vr=(0,E.Z)(Cr,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("Select"),i=(0,l.up)("FAIcon"),u=(0,l.up)("ColorInput"),c=(0,l.up)("OpacityInput"),d=(0,l.up)("i18n-t");return(0,l.wg)(),(0,l.iD)("div",{class:(0,f.C_)(["shadow-control",{disabled:!e.present}])},[(0,l._)("div",Rs,[(0,l._)("div",{disabled:!e.present,class:"y-shift-control"},[(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.selected.y=t}),disabled:!e.present,class:"input-number",type:"number"},null,8,Hs),[[me.nr,e.selected.y]]),(0,l._)("div",Ys,[(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.selected.y=t}),disabled:!e.present,class:"input-range",type:"range",max:"20",min:"-20"},null,8,Ks),[[me.nr,e.selected.y]])])],8,Ns),(0,l._)("div",Gs,[(0,l._)("div",{class:"preview-block",style:(0,f.j5)(e.style)},null,4)]),(0,l._)("div",{disabled:!e.present,class:"x-shift-control"},[(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.selected.x=t}),disabled:!e.present,class:"input-number",type:"number"},null,8,Qs),[[me.nr,e.selected.x]]),(0,l._)("div",Xs,[(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.selected.x=t}),disabled:!e.present,class:"input-range",type:"range",max:"20",min:"-20"},null,8,er),[[me.nr,e.selected.x]])])],8,Js)]),(0,l._)("div",tr,[(0,l._)("div",{disabled:e.usingFallback,class:"id-control style-control"},[(0,l.Wm)(r,{id:"shadow-switcher",modelValue:e.selectedId,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.selectedId=t}),class:"shadow-switcher",disabled:!e.ready||e.usingFallback},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.cValue,(function(t,n){return(0,l.wg)(),(0,l.iD)("option",{key:n,value:n},(0,f.zw)(e.$t("settings.style.shadows.shadow_id",{value:n})),9,lr)})),128))]})),_:1},8,["modelValue","disabled"]),(0,l._)("button",{class:"btn button-default",disabled:!e.ready||!e.present,onClick:t[5]||(t[5]=function(){return e.del&&e.del.apply(e,arguments)})},[(0,l.Wm)(i,{"fixed-width":"",icon:"times"})],8,ar),(0,l._)("button",{class:"btn button-default",disabled:!e.moveUpValid,onClick:t[6]||(t[6]=function(){return e.moveUp&&e.moveUp.apply(e,arguments)})},[(0,l.Wm)(i,{"fixed-width":"",icon:"chevron-up"})],8,or),(0,l._)("button",{class:"btn button-default",disabled:!e.moveDnValid,onClick:t[7]||(t[7]=function(){return e.moveDn&&e.moveDn.apply(e,arguments)})},[(0,l.Wm)(i,{"fixed-width":"",icon:"chevron-down"})],8,sr),(0,l._)("button",{class:"btn button-default",disabled:e.usingFallback,onClick:t[8]||(t[8]=function(){return e.add&&e.add.apply(e,arguments)})},[(0,l.Wm)(i,{"fixed-width":"",icon:"plus"})],8,rr)],8,nr),(0,l._)("div",{disabled:!e.present,class:"inset-control style-control"},[(0,l._)("label",ur,(0,f.zw)(e.$t("settings.style.shadows.inset")),1),(0,l.wy)((0,l._)("input",{id:"inset","onUpdate:modelValue":t[9]||(t[9]=function(t){return e.selected.inset=t}),disabled:!e.present,name:"inset",class:"input-inset",type:"checkbox"},null,8,cr),[[me.e8,e.selected.inset]]),dr],8,ir),(0,l._)("div",{disabled:!e.present,class:"blur-control style-control"},[(0,l._)("label",mr,(0,f.zw)(e.$t("settings.style.shadows.blur")),1),(0,l.wy)((0,l._)("input",{id:"blur","onUpdate:modelValue":t[10]||(t[10]=function(t){return e.selected.blur=t}),disabled:!e.present,name:"blur",class:"input-range",type:"range",max:"20",min:"0"},null,8,fr),[[me.nr,e.selected.blur]]),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.selected.blur=t}),disabled:!e.present,class:"input-number",type:"number",min:"0"},null,8,hr),[[me.nr,e.selected.blur]])],8,pr),(0,l._)("div",{disabled:!e.present,class:"spread-control style-control"},[(0,l._)("label",br,(0,f.zw)(e.$t("settings.style.shadows.spread")),1),(0,l.wy)((0,l._)("input",{id:"spread","onUpdate:modelValue":t[12]||(t[12]=function(t){return e.selected.spread=t}),disabled:!e.present,name:"spread",class:"input-range",type:"range",max:"20",min:"-20"},null,8,wr),[[me.nr,e.selected.spread]]),(0,l.wy)((0,l._)("input",{"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.selected.spread=t}),disabled:!e.present,class:"input-number",type:"number"},null,8,_r),[[me.nr,e.selected.spread]])],8,gr),(0,l.Wm)(u,{modelValue:e.selected.color,"onUpdate:modelValue":t[14]||(t[14]=function(t){return e.selected.color=t}),disabled:!e.present,label:e.$t("settings.style.common.color"),fallback:e.currentFallback.color,"show-optional-tickbox":!1,name:"shadow"},null,8,["modelValue","disabled","label","fallback"]),(0,l.Wm)(c,{modelValue:e.selected.alpha,"onUpdate:modelValue":t[15]||(t[15]=function(t){return e.selected.alpha=t}),disabled:!e.present},null,8,["modelValue","disabled"]),(0,l.Wm)(d,{scope:"global",keypath:"settings.style.shadows.hintV3",tag:"p"},{default:(0,l.w5)((function(){return[kr]})),_:1})])],2)}]]);var Tr=["for"],Ur=["id","checked"],xr=["for"],Lr=["value"],Or=["id"];const Wr={components:{Select:Kt.Z},props:["name","label","modelValue","fallback","options","no-inherit"],emits:["update:modelValue"],data:function(){return{lValue:this.modelValue,availableOptions:[this.noInherit?"":"inherit","custom"].concat((0,qe.Z)(this.options||[]),["serif","monospace","sans-serif"]).filter((function(e){return e}))}},beforeUpdate:function(){this.lValue=this.modelValue},computed:{present:function(){return void 0!==this.lValue},dValue:function(){return this.lValue||this.fallback||{}},family:{get:function(){return this.dValue.family},set:function(e){ft()(this.lValue,"family",e),this.$emit("update:modelValue",this.lValue)}},isCustom:function(){return"custom"===this.preset},preset:{get:function(){return"serif"===this.family||"sans-serif"===this.family||"monospace"===this.family||"inherit"===this.family?this.family:"custom"},set:function(e){this.family="custom"===e?"":e}}}},zr=(0,E.Z)(Wr,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("Select");return(0,l.wg)(),(0,l.iD)("div",{class:(0,f.C_)(["font-control style-control",{custom:e.isCustom}])},[(0,l._)("label",{for:"custom"===e.preset?e.name:e.name+"-font-switcher",class:"label"},(0,f.zw)(e.label),9,Tr),void 0!==e.fallback?((0,l.wg)(),(0,l.iD)("input",{key:0,id:e.name+"-o",class:"opt exlcude-disabled",type:"checkbox",checked:e.present,onChange:t[0]||(t[0]=function(t){return e.$emit("update:modelValue",void 0===e.modelValue?e.fallback:void 0)})},null,40,Ur)):(0,l.kq)("",!0),void 0!==e.fallback?((0,l.wg)(),(0,l.iD)("label",{key:1,class:"opt-l",for:e.name+"-o"},null,8,xr)):(0,l.kq)("",!0),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l.Wm)(r,{id:e.name+"-font-switcher",modelValue:e.preset,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.preset=t}),disabled:!e.present,class:"font-switcher"},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.availableOptions,(function(t){return(0,l.wg)(),(0,l.iD)("option",{key:t,value:t},(0,f.zw)("custom"===t?e.$t("settings.style.fonts.custom"):t),9,Lr)})),128))]})),_:1},8,["id","modelValue","disabled"]),e.isCustom?(0,l.wy)(((0,l.wg)(),(0,l.iD)("input",{key:2,id:e.name,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.family=t}),class:"custom-font",type:"text"},null,8,Or)),[[me.nr,e.family]]):(0,l.kq)("",!0)],2)}]]);var Sr={key:0,class:"contrast-ratio"},Pr=["title"],Dr={key:0},Ir={key:1},jr={key:2},Br=["title"],Ar={key:0},Er={key:1},Fr={key:2};j.vI.add(B.OwZ,B.eHv,B.u8Q);const qr={props:{large:{required:!1,type:Boolean,default:!1},contrast:{required:!1,type:Object,default:function(){return{}}}},computed:{hint:function(){var e=this.contrast.aaa?"aaa":this.contrast.aa?"aa":"bad",t=this.$t("settings.style.common.contrast.level.".concat(e)),n=this.$t("settings.style.common.contrast.context.text"),l=this.contrast.text;return this.$t("settings.style.common.contrast.hint",{level:t,context:n,ratio:l})},hint_18pt:function(){var e=this.contrast.laaa?"aaa":this.contrast.laa?"aa":"bad",t=this.$t("settings.style.common.contrast.level.".concat(e)),n=this.$t("settings.style.common.contrast.context.18pt"),l=this.contrast.text;return this.$t("settings.style.common.contrast.hint",{level:t,context:n,ratio:l})}}},Zr=(0,E.Z)(qr,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("FAIcon");return n.contrast?((0,l.wg)(),(0,l.iD)("span",Sr,[(0,l._)("span",{title:s.hint,class:"rating"},[n.contrast.aaa?((0,l.wg)(),(0,l.iD)("span",Dr,[(0,l.Wm)(r,{icon:"thumbs-up"})])):(0,l.kq)("",!0),!n.contrast.aaa&&n.contrast.aa?((0,l.wg)(),(0,l.iD)("span",Ir,[(0,l.Wm)(r,{icon:"adjust"})])):(0,l.kq)("",!0),n.contrast.aaa||n.contrast.aa?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("span",jr,[(0,l.Wm)(r,{icon:"exclamation-triangle"})]))],8,Pr),n.contrast&&n.large?((0,l.wg)(),(0,l.iD)("span",{key:0,class:"rating",title:s.hint_18pt},[n.contrast.laaa?((0,l.wg)(),(0,l.iD)("span",Ar,[(0,l.Wm)(r,{icon:"thumbs-up"})])):(0,l.kq)("",!0),!n.contrast.laaa&&n.contrast.laa?((0,l.wg)(),(0,l.iD)("span",Er,[(0,l.Wm)(r,{icon:"adjust"})])):(0,l.kq)("",!0),n.contrast.laaa||n.contrast.laa?(0,l.kq)("",!0):((0,l.wg)(),(0,l.iD)("span",Fr,[(0,l.Wm)(r,{icon:"exclamation-triangle"})]))],8,Br)):(0,l.kq)("",!0)])):(0,l.kq)("",!0)}]]);var Mr={class:"preview-container"},Rr=(0,l._)("div",{class:"underlay underlay-preview"},null,-1),Nr={class:"panel dummy"},Hr={class:"panel-heading"},Yr={class:"title"},Kr=(0,l._)("span",{class:"badge badge-notification"}," 99 ",-1),Gr={class:"faint"},Jr={class:"alert error"},Qr={class:"btn button-default"},Xr={class:"panel-body theme-preview-content"},ei={class:"post"},ti=(0,l._)("div",{class:"avatar still-image"}," ( ͡° ͜ʖ ͡°) ",-1),ni={class:"content"},li={style:{"font-family":"var(--postCodeFont)"}},ai={style:{color:"var(--link)"}},oi={class:"icons"},si={class:"after-post"},ri=(0,l._)("div",{class:"avatar-alt"}," :^) ",-1),ii={class:"content"},ui={style:{color:"var(--faintLink)"}},ci=(0,l._)("div",{class:"separator"},null,-1),di={class:"alert error"},pi=["value"],mi={class:"actions"},fi={class:"checkbox"},hi=(0,l._)("input",{id:"preview_checkbox",checked:"very yes",type:"checkbox"},null,-1),gi={for:"preview_checkbox"},bi={class:"btn button-default"};j.vI.add(B.NBC,B.Tab,B.x5v,B.Lh7);const wi={},_i=(0,E.Z)(wi,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("i18n-t"),i=(0,l.up)("FAIcon");return(0,l.wg)(),(0,l.iD)("div",Mr,[Rr,(0,l._)("div",Nr,[(0,l._)("div",Hr,[(0,l._)("div",Yr,[(0,l.Uk)((0,f.zw)(e.$t("settings.style.preview.header"))+" ",1),Kr]),(0,l._)("span",Gr,(0,f.zw)(e.$t("settings.style.preview.header_faint")),1),(0,l._)("span",Jr,(0,f.zw)(e.$t("settings.style.preview.error")),1),(0,l._)("button",Qr,(0,f.zw)(e.$t("settings.style.preview.button")),1)]),(0,l._)("div",Xr,[(0,l._)("div",ei,[ti,(0,l._)("div",ni,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.preview.content")),1),(0,l.Wm)(r,{scope:"global",keypath:"settings.style.preview.text"},{default:(0,l.w5)((function(){return[(0,l._)("code",li,(0,f.zw)(e.$t("settings.style.preview.mono")),1),(0,l._)("a",ai,(0,f.zw)(e.$t("settings.style.preview.link")),1)]})),_:1}),(0,l._)("div",oi,[(0,l.Wm)(i,{"fixed-width":"",style:{color:"var(--cBlue)"},class:"fa-scale-110 fa-old-padding",icon:"reply"}),(0,l.Wm)(i,{"fixed-width":"",style:{color:"var(--cGreen)"},class:"fa-scale-110 fa-old-padding",icon:"retweet"}),(0,l.Wm)(i,{"fixed-width":"",style:{color:"var(--cOrange)"},class:"fa-scale-110 fa-old-padding",icon:"star"}),(0,l.Wm)(i,{"fixed-width":"",style:{color:"var(--cRed)"},class:"fa-scale-110 fa-old-padding",icon:"times"})])])]),(0,l._)("div",si,[ri,(0,l._)("div",ii,[(0,l.Wm)(r,{keypath:"settings.style.preview.fine_print",tag:"span",class:"faint",scope:"global"},{default:(0,l.w5)((function(){return[(0,l._)("a",ui,(0,f.zw)(e.$t("settings.style.preview.faint_link")),1)]})),_:1})])]),ci,(0,l._)("span",di,(0,f.zw)(e.$t("settings.style.preview.error")),1),(0,l._)("input",{value:e.$t("settings.style.preview.input"),type:"text"},null,8,pi),(0,l._)("div",mi,[(0,l._)("span",fi,[hi,(0,l._)("label",gi,(0,f.zw)(e.$t("settings.style.preview.checkbox")),1)]),(0,l._)("button",bi,(0,f.zw)(e.$t("settings.style.preview.button")),1)])])])])}]]);function ki(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);t&&(l=l.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,l)}return n}function vi(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ki(Object(n),!0).forEach((function(t){(0,S.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ki(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var yi=["bg","fg","text","link","cRed","cGreen","cBlue","cOrange"].map((function(e){return e+"ColorLocal"}));const $i={data:function(){var e=this;return vi(vi(vi({themeImporter:(0,Cs.i)({validator:this.importValidator,onImport:this.onImport,onImportFailure:this.onImportFailure}),themeExporter:(0,Cs.M)({filename:"pleroma_theme",getExportedObject:function(){return e.exportedTheme}}),availableStyles:[],selected:"",selectedTheme:this.$store.getters.mergedConfig.theme,themeWarning:void 0,tempImportFile:void 0,engineVersion:0,previewShadows:{},previewColors:{},previewRadii:{},previewFonts:{},shadowsInvalid:!0,colorsInvalid:!0,radiiInvalid:!0,keepColor:!1,keepShadows:!1,keepOpacity:!1,keepRoundness:!1,keepFonts:!1},Object.keys(Vs.em).map((function(e){return[e,""]})).reduce((function(e,t){var n=(0,Ut.Z)(t,2),l=n[0],a=n[1];return vi(vi({},e),{},(0,S.Z)({},l+"ColorLocal",a))}),{})),Object.keys(Ts.AQ).map((function(e){return[e,""]})).reduce((function(e,t){var n=(0,Ut.Z)(t,2),l=n[0],a=n[1];return vi(vi({},e),{},(0,S.Z)({},l+"OpacityLocal",a))}),{})),{},{shadowSelected:void 0,shadowsLocal:{},fontsLocal:{},btnRadiusLocal:"",inputRadiusLocal:"",checkboxRadiusLocal:"",panelRadiusLocal:"",avatarRadiusLocal:"",avatarAltRadiusLocal:"",attachmentRadiusLocal:"",tooltipRadiusLocal:"",chatMessageRadiusLocal:""})},created:function(){var e=this;(0,$s.RC)().then((function(e){return Promise.all(Object.entries(e).map((function(e){var t=(0,Ut.Z)(e,2),n=t[0];return t[1].then((function(e){return[n,e]}))})))})).then((function(e){return e.reduce((function(e,t){var n=(0,Ut.Z)(t,2),l=n[0],a=n[1];return a?vi(vi({},e),{},(0,S.Z)({},l,a)):e}),{})})).then((function(t){e.availableStyles=t}))},mounted:function(){this.loadThemeFromLocalStorage(),void 0===this.shadowSelected&&(this.shadowSelected=this.shadowsAvailable[0])},computed:{themeWarningHelp:function(){if(this.themeWarning){var e=this.$t,t="settings.style.switcher.help.",n=this.themeWarning,l=n.origin,a=n.themeEngineVersion,o=n.type,s=n.noActionsPossible;if("file"===l){if(2===a&&"wrong_version"===o)return e(t+"v2_imported");if(a>Ts.we)return e(t+"future_version_imported")+" "+e(s?t+"snapshot_missing":t+"snapshot_present");if(a<Ts.we)return e(t+"future_version_imported")+" "+e(s?t+"snapshot_missing":t+"snapshot_present")}else if("localStorage"===l){if("snapshot_source_mismatch"===o)return e(t+"snapshot_source_mismatch");if(2===a)return e(t+"upgraded_from_v2");if(a>Ts.we)return e(t+"fe_downgraded")+" "+e(s?t+"migration_snapshot_ok":t+"migration_snapshot_gone");if(a<Ts.we)return e(t+"fe_upgraded")+" "+e(s?t+"migration_snapshot_ok":t+"migration_snapshot_gone")}}},selectedVersion:function(){return Array.isArray(this.selectedTheme)?1:2},currentColors:function(){var e=this;return Object.keys(Vs.em).map((function(t){return[t,e[t+"ColorLocal"]]})).reduce((function(e,t){var n=(0,Ut.Z)(t,2),l=n[0],a=n[1];return vi(vi({},e),{},(0,S.Z)({},l,a))}),{})},currentOpacity:function(){var e=this;return Object.keys(Ts.AQ).map((function(t){return[t,e[t+"OpacityLocal"]]})).reduce((function(e,t){var n=(0,Ut.Z)(t,2),l=n[0],a=n[1];return vi(vi({},e),{},(0,S.Z)({},l,a))}),{})},currentRadii:function(){return{btn:this.btnRadiusLocal,input:this.inputRadiusLocal,checkbox:this.checkboxRadiusLocal,panel:this.panelRadiusLocal,avatar:this.avatarRadiusLocal,avatarAlt:this.avatarAltRadiusLocal,tooltip:this.tooltipRadiusLocal,attachment:this.attachmentRadiusLocal,chatMessage:this.chatMessageRadiusLocal}},preview:function(){return(0,$s.gm)(this.previewColors,this.previewRadii,this.previewShadows,this.previewFonts)},previewTheme:function(){return this.preview.theme.colors?this.preview.theme:{colors:{},opacity:{},radii:{},shadows:{},fonts:{}}},previewContrast:function(){try{if(!this.previewTheme.colors.bg)return{};var e=this.previewTheme.colors,t=this.previewTheme.opacity;if(!e.bg)return{};var n=Object.entries(e).reduce((function(e,t){var n,l=(0,Ut.Z)(t,2),a=l[0],o=l[1];return vi(vi({},e),{},(0,S.Z)({},a,(n=o).startsWith("--")||"transparent"===n?n:(0,ys.wK)(n)))}),{}),l=Object.entries(Vs.em).reduce((function(e,l){var a=(0,Ut.Z)(l,2),o=a[0],s=a[1],r="text"===o||"link"===o;if(!(r||"object"===(0,ra.Z)(s)&&null!==s&&s.textColor))return e;var i=r?{layer:"bg"}:s,u=i.layer,c=i.variant,d=c||u,p=(0,Ts.AV)(d),m=[o].concat((0,qe.Z)("bg"===d?["cRed","cGreen","cBlue","cOrange"]:[])),f=(0,Ts.xb)(u,c||u,p,n,t);return f.flat().some((function(e){return null==e}))?e:vi(vi({},e),m.reduce((function(e,t){var l=r?"bg"+t[0].toUpperCase()+t.slice(1):t;return vi(vi({},e),{},(0,S.Z)({},l,(0,ys.aj)(n[t],f,n[t])))}),{}))}),{});return Object.entries(l).reduce((function(e,t){var n,l=(0,Ut.Z)(t,2),a=l[0],o=l[1];return e[a]={text:(n=o).toPrecision(3)+":1",aa:n>=4.5,aaa:n>=7,laa:n>=3,laaa:n>=4.5},e}),{})}catch(e){return console.warn("Failure computing contrasts",e),{}}},previewRules:function(){return this.preview.rules?[].concat((0,qe.Z)(Object.values(this.preview.rules)),["color: var(--text)","font-family: var(--interfaceFont, sans-serif)"]).join(";"):""},shadowsAvailable:function(){return Object.keys($s.vp).sort()},currentShadowOverriden:{get:function(){return!!this.currentShadow},set:function(e){e?this.shadowsLocal[this.shadowSelected]=this.currentShadowFallback.map((function(e){return Object.assign({},e)})):delete this.shadowsLocal[this.shadowSelected]}},currentShadowFallback:function(){return(this.previewTheme.shadows||{})[this.shadowSelected]},currentShadow:{get:function(){return this.shadowsLocal[this.shadowSelected]},set:function(e){this.shadowsLocal[this.shadowSelected]=e}},themeValid:function(){return!this.shadowsInvalid&&!this.colorsInvalid&&!this.radiiInvalid},exportedTheme:function(){var e=!(this.keepFonts||this.keepShadows||this.keepOpacity||this.keepRoundness||this.keepColor),t={themeEngineVersion:Ts.we};return(this.keepFonts||e)&&(t.fonts=this.fontsLocal),(this.keepShadows||e)&&(t.shadows=this.shadowsLocal),(this.keepOpacity||e)&&(t.opacity=this.currentOpacity),(this.keepColor||e)&&(t.colors=this.currentColors),(this.keepRoundness||e)&&(t.radii=this.currentRadii),{_pleroma_theme_version:2,theme:vi({themeEngineVersion:Ts.we},this.previewTheme),source:t}},isActive:function(){var e=this.$parent;return!!e&&e.isActive("theme")}},components:{ColorInput:Ss,OpacityInput:Ms,RangeInput:Es,ContrastRatio:Zr,ShadowControl:Vr,FontControl:zr,TabSwitcher:m.Z,Preview:_i,Checkbox:N.Z,Select:Kt.Z},methods:{loadTheme:function(e,t){var n=e.theme,l=e.source,a=e._pleroma_theme_version,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.dismissWarning(),!l&&!n)throw new Error("Can't load theme: empty");var s="localStorage"!==t||n.colors?a:"l1",r=(n||{}).themeEngineVersion,i=(l||{}).themeEngineVersion||2,u=i===Ts.we,c=void 0!==n&&void 0!==l&&i!==r,d=l&&o||!n;u&&!c||d||"l1"===s||"defaults"===t||(c&&"localStorage"===t?this.themeWarning={origin:t,themeEngineVersion:i,type:"snapshot_source_mismatch"}:n?u||(this.themeWarning={origin:t,noActionsPossible:!l,themeEngineVersion:i,type:"wrong_version"}):this.themeWarning={origin:t,noActionsPossible:!0,themeEngineVersion:i,type:"no_snapshot_old_version"}),this.normalizeLocalState(n,s,l,d)},forceLoadLocalStorage:function(){this.loadThemeFromLocalStorage(!0)},dismissWarning:function(){this.themeWarning=void 0,this.tempImportFile=void 0},forceLoad:function(){switch(this.themeWarning.origin){case"localStorage":this.loadThemeFromLocalStorage(!0);break;case"file":this.onImport(this.tempImportFile,!0)}this.dismissWarning()},forceSnapshot:function(){switch(this.themeWarning.origin){case"localStorage":this.loadThemeFromLocalStorage(!1,!0);break;case"file":console.error("Forcing snapshot from file is not supported yet")}this.dismissWarning()},loadThemeFromLocalStorage:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.$store.getters.mergedConfig,l=n.customTheme,a=n.customThemeSource;l||a?this.loadTheme({theme:l,source:t?l:a},"localStorage",e):this.loadTheme(this.$store.state.instance.themeData,"defaults",e)},setCustomTheme:function(){this.$store.dispatch("setOption",{name:"customTheme",value:vi({themeEngineVersion:Ts.we},this.previewTheme)}),this.$store.dispatch("setOption",{name:"customThemeSource",value:{themeEngineVersion:Ts.we,shadows:this.shadowsLocal,fonts:this.fontsLocal,opacity:this.currentOpacity,colors:this.currentColors,radii:this.currentRadii}})},updatePreviewColorsAndShadows:function(){this.previewColors=(0,$s.LP)({opacity:this.currentOpacity,colors:this.currentColors}),this.previewShadows=(0,$s.H2)({shadows:this.shadowsLocal,opacity:this.previewTheme.opacity,themeEngineVersion:this.engineVersion},this.previewColors.theme.colors,this.previewColors.mod)},importTheme:function(){this.themeImporter.importData()},exportTheme:function(){this.themeExporter.exportData()},onImport:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.tempImportFile=e,this.loadTheme(e,"file",t)},onImportFailure:function(e){this.$store.dispatch("pushGlobalNotice",{messageKey:"settings.invalid_theme_imported",level:"error"})},importValidator:function(e){var t=e._pleroma_theme_version;return t>=1||t<=2},clearAll:function(){this.loadThemeFromLocalStorage()},clearV1:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("ColorLocal")||e.endsWith("OpacityLocal")})).filter((function(e){return!yi.includes(e)})).forEach((function(t){e.$data[t]=void 0}))},clearRoundness:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("RadiusLocal")})).forEach((function(t){e.$data[t]=void 0}))},clearOpacity:function(){var e=this;Object.keys(this.$data).filter((function(e){return e.endsWith("OpacityLocal")})).forEach((function(t){e.$data[t]=void 0}))},clearShadows:function(){this.shadowsLocal={}},clearFonts:function(){this.fontsLocal={}},normalizeLocalState:function(e){var t,n=this,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2?arguments[2]:void 0,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];void 0===a||!o&&a.themeEngineVersion!==Ts.we?t=e:(t=a,l=a.themeEngineVersion);var s=t.radii||t,r=t.opacity,i=t.shadows||{},u=t.fonts||{},c=t.themeEngineVersion?t.colors||t:(0,$s.dE)(t.colors||t);if(0===l&&(t.version&&(l=t.version),void 0===c.text&&void 0!==c.fg&&(l=1),void 0!==c.text&&void 0!==c.fg&&(l=2)),this.engineVersion=l,1===l&&(this.fgColorLocal=(0,ys.CO)(c.btn),this.textColorLocal=(0,ys.CO)(c.fg)),!this.keepColor){this.clearV1();var d=new Set(1!==l?Object.keys(Vs.em):[]);1!==l&&"l1"!==l||d.add("bg").add("link").add("cRed").add("cBlue").add("cGreen").add("cOrange"),d.forEach((function(e){var t=c[e],l=(0,ys.CO)(c[e]);n[e+"ColorLocal"]="#aN"===l?t:l}))}r&&!this.keepOpacity&&(this.clearOpacity(),Object.entries(r).forEach((function(e){var t=(0,Ut.Z)(e,2),l=t[0],a=t[1];null==a||Number.isNaN(a)||(n[l+"OpacityLocal"]=a)}))),this.keepRoundness||(this.clearRoundness(),Object.entries(s).forEach((function(e){var t=(0,Ut.Z)(e,2),l=t[0],a=t[1],o=l.endsWith("Radius")?l.split("Radius")[0]:l;n[o+"RadiusLocal"]=a}))),this.keepShadows||(this.clearShadows(),this.shadowsLocal=2===l?(0,$s.l9)(i,this.previewTheme.opacity):i,this.shadowSelected=this.shadowsAvailable[0]),this.keepFonts||(this.clearFonts(),this.fontsLocal=u)}},watch:{currentRadii:function(){try{this.previewRadii=(0,$s.lD)({radii:this.currentRadii}),this.radiiInvalid=!1}catch(e){this.radiiInvalid=!0,console.warn(e)}},shadowsLocal:{handler:function(){if(1!==Object.getOwnPropertyNames(this.previewColors).length)try{this.updatePreviewColorsAndShadows(),this.shadowsInvalid=!1}catch(e){this.shadowsInvalid=!0,console.warn(e)}},deep:!0},fontsLocal:{handler:function(){try{this.previewFonts=(0,$s.m)({fonts:this.fontsLocal}),this.fontsInvalid=!1}catch(e){this.fontsInvalid=!0,console.warn(e)}},deep:!0},currentColors:function(){try{this.updatePreviewColorsAndShadows(),this.colorsInvalid=!1,this.shadowsInvalid=!1}catch(e){this.colorsInvalid=!0,this.shadowsInvalid=!0,console.warn(e)}},currentOpacity:function(){try{this.updatePreviewColorsAndShadows()}catch(e){console.warn(e)}},selected:function(){var e=this;this.selectedTheme=Object.entries(this.availableStyles).find((function(t){var n=(0,Ut.Z)(t,2),l=(n[0],n[1]);return Array.isArray(l)?(console.log(l[0]===e.selected,e.selected),l[0]===e.selected):l.name===e.selected}))[1]},selectedTheme:function(){this.dismissWarning(),1===this.selectedVersion?(this.keepRoundness||this.clearRoundness(),this.keepShadows||this.clearShadows(),this.keepOpacity||this.clearOpacity(),this.keepColor||(this.clearV1(),this.bgColorLocal=this.selectedTheme[1],this.fgColorLocal=this.selectedTheme[2],this.textColorLocal=this.selectedTheme[3],this.linkColorLocal=this.selectedTheme[4],this.cRedColorLocal=this.selectedTheme[5],this.cGreenColorLocal=this.selectedTheme[6],this.cBlueColorLocal=this.selectedTheme[7],this.cOrangeColorLocal=this.selectedTheme[8])):this.selectedVersion>=2&&this.normalizeLocalState(this.selectedTheme.theme,2,this.selectedTheme.source)}}},Ci=(0,E.Z)($i,[["render",function(e,t,n,a,o,s){var r=(0,l.up)("Select"),i=(0,l.up)("Checkbox"),u=(0,l.up)("preview"),c=(0,l.up)("ColorInput"),d=(0,l.up)("OpacityInput"),p=(0,l.up)("ContrastRatio"),m=(0,l.up)("RangeInput"),h=(0,l.up)("ShadowControl"),g=(0,l.up)("i18n-t"),b=(0,l.up)("FontControl"),w=(0,l.up)("tab-switcher");return(0,l.wg)(),(0,l.iD)("div",mo,[(0,l._)("div",fo,[(0,l._)("div",ho,[e.themeWarning?((0,l.wg)(),(0,l.iD)("div",go,[(0,l._)("div",bo,(0,f.zw)(e.themeWarningHelp),1),(0,l._)("div",wo,["snapshot_source_mismatch"===e.themeWarning.type?((0,l.wg)(),(0,l.iD)(l.HY,{key:0},[(0,l._)("button",{class:"btn button-default",onClick:t[0]||(t[0]=function(){return e.forceLoad&&e.forceLoad.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.use_source")),1),(0,l._)("button",{class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.forceSnapshot&&e.forceSnapshot.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.use_snapshot")),1)],64)):e.themeWarning.noActionsPossible?((0,l.wg)(),(0,l.iD)("button",{key:1,class:"btn button-default",onClick:t[2]||(t[2]=function(){return e.dismissWarning&&e.dismissWarning.apply(e,arguments)})},(0,f.zw)(e.$t("general.dismiss")),1)):((0,l.wg)(),(0,l.iD)(l.HY,{key:2},[(0,l._)("button",{class:"btn button-default",onClick:t[3]||(t[3]=function(){return e.forceLoad&&e.forceLoad.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.load_theme")),1),(0,l._)("button",{class:"btn button-default",onClick:t[4]||(t[4]=function(){return e.dismissWarning&&e.dismissWarning.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.keep_as_is")),1)],64))])])):(0,l.kq)("",!0),(0,l._)("div",_o,[(0,l._)("div",ko,[(0,l.Uk)((0,f.zw)(e.$t("settings.presets"))+" ",1),(0,l._)("label",vo,[(0,l.Wm)(r,{id:"preset-switcher",modelValue:e.selected,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.selected=t}),class:"preset-switcher"},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.availableStyles,(function(e){return(0,l.wg)(),(0,l.iD)("option",{key:e.name,value:e.name||e[0],style:(0,f.j5)({backgroundColor:e[1]||(e.theme||e.source).colors.bg,color:e[3]||(e.theme||e.source).colors.text})},(0,f.zw)(e[0]||e.name),13,yo)})),128))]})),_:1},8,["modelValue"])])]),(0,l._)("div",$o,[(0,l._)("button",{class:"btn button-default",onClick:t[6]||(t[6]=function(){return e.importTheme&&e.importTheme.apply(e,arguments)})},(0,f.zw)(e.$t("settings.import_theme")),1),(0,l._)("button",{class:"btn button-default",onClick:t[7]||(t[7]=function(){return e.exportTheme&&e.exportTheme.apply(e,arguments)})},(0,f.zw)(e.$t("settings.export_theme")),1)])])]),(0,l._)("div",Co,[(0,l._)("span",Vo,[(0,l.Wm)(i,{modelValue:e.keepColor,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.keepColor=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.style.switcher.keep_color")),1)]})),_:1},8,["modelValue"])]),(0,l._)("span",To,[(0,l.Wm)(i,{modelValue:e.keepShadows,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.keepShadows=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.style.switcher.keep_shadows")),1)]})),_:1},8,["modelValue"])]),(0,l._)("span",Uo,[(0,l.Wm)(i,{modelValue:e.keepOpacity,"onUpdate:modelValue":t[10]||(t[10]=function(t){return e.keepOpacity=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.style.switcher.keep_opacity")),1)]})),_:1},8,["modelValue"])]),(0,l._)("span",xo,[(0,l.Wm)(i,{modelValue:e.keepRoundness,"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.keepRoundness=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.style.switcher.keep_roundness")),1)]})),_:1},8,["modelValue"])]),(0,l._)("span",Lo,[(0,l.Wm)(i,{modelValue:e.keepFonts,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.keepFonts=t})},{default:(0,l.w5)((function(){return[(0,l.Uk)((0,f.zw)(e.$t("settings.style.switcher.keep_fonts")),1)]})),_:1},8,["modelValue"])]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.style.switcher.save_load_hint")),1)])]),(0,l.Wm)(u,{style:(0,f.j5)(e.previewRules)},null,8,["style"]),((0,l.wg)(),(0,l.j4)(l.Ob,null,[(0,l.Wm)(w,{key:"style-tweak"},{default:(0,l.w5)((function(){return[(0,l._)("div",{label:e.$t("settings.style.common_colors._tab_label"),class:"color-container"},[(0,l._)("div",Wo,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.theme_help")),1),(0,l._)("div",zo,[(0,l._)("button",{class:"btn button-default",onClick:t[13]||(t[13]=function(){return e.clearOpacity&&e.clearOpacity.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_opacity")),1),(0,l._)("button",{class:"btn button-default",onClick:t[14]||(t[14]=function(){return e.clearV1&&e.clearV1.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_all")),1)])]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.theme_help_v2_1")),1),(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.common_colors.main")),1),(0,l._)("div",So,[(0,l.Wm)(c,{modelValue:e.bgColorLocal,"onUpdate:modelValue":t[15]||(t[15]=function(t){return e.bgColorLocal=t}),name:"bgColor",label:e.$t("settings.background")},null,8,["modelValue","label"]),(0,l.Wm)(d,{modelValue:e.bgOpacityLocal,"onUpdate:modelValue":t[16]||(t[16]=function(t){return e.bgOpacityLocal=t}),name:"bgOpacity",fallback:e.previewTheme.opacity.bg},null,8,["modelValue","fallback"]),(0,l.Wm)(c,{modelValue:e.textColorLocal,"onUpdate:modelValue":t[17]||(t[17]=function(t){return e.textColorLocal=t}),name:"textColor",label:e.$t("settings.text")},null,8,["modelValue","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.accentColorLocal,"onUpdate:modelValue":t[18]||(t[18]=function(t){return e.accentColorLocal=t}),name:"accentColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.accent"),"show-optional-tickbox":void 0!==e.linkColorLocal},null,8,["modelValue","fallback","label","show-optional-tickbox"]),(0,l.Wm)(c,{modelValue:e.linkColorLocal,"onUpdate:modelValue":t[19]||(t[19]=function(t){return e.linkColorLocal=t}),name:"linkColor",fallback:e.previewTheme.colors.accent,label:e.$t("settings.links"),"show-optional-tickbox":void 0!==e.accentColorLocal},null,8,["modelValue","fallback","label","show-optional-tickbox"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgLink},null,8,["contrast"])]),(0,l._)("div",Po,[(0,l.Wm)(c,{modelValue:e.fgColorLocal,"onUpdate:modelValue":t[20]||(t[20]=function(t){return e.fgColorLocal=t}),name:"fgColor",label:e.$t("settings.foreground")},null,8,["modelValue","label"]),(0,l.Wm)(c,{modelValue:e.fgTextColorLocal,"onUpdate:modelValue":t[21]||(t[21]=function(t){return e.fgTextColorLocal=t}),name:"fgTextColor",label:e.$t("settings.text"),fallback:e.previewTheme.colors.fgText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.fgLinkColorLocal,"onUpdate:modelValue":t[22]||(t[22]=function(t){return e.fgLinkColorLocal=t}),name:"fgLinkColor",label:e.$t("settings.links"),fallback:e.previewTheme.colors.fgLink},null,8,["modelValue","label","fallback"]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.style.common_colors.foreground_hint")),1)]),(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.common_colors.rgbo")),1),(0,l._)("div",Do,[(0,l.Wm)(c,{modelValue:e.cRedColorLocal,"onUpdate:modelValue":t[23]||(t[23]=function(t){return e.cRedColorLocal=t}),name:"cRedColor",label:e.$t("settings.cRed")},null,8,["modelValue","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgCRed},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.cBlueColorLocal,"onUpdate:modelValue":t[24]||(t[24]=function(t){return e.cBlueColorLocal=t}),name:"cBlueColor",label:e.$t("settings.cBlue")},null,8,["modelValue","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgCBlue},null,8,["contrast"])]),(0,l._)("div",Io,[(0,l.Wm)(c,{modelValue:e.cGreenColorLocal,"onUpdate:modelValue":t[25]||(t[25]=function(t){return e.cGreenColorLocal=t}),name:"cGreenColor",label:e.$t("settings.cGreen")},null,8,["modelValue","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgCGreen},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.cOrangeColorLocal,"onUpdate:modelValue":t[26]||(t[26]=function(t){return e.cOrangeColorLocal=t}),name:"cOrangeColor",label:e.$t("settings.cOrange")},null,8,["modelValue","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.bgCOrange},null,8,["contrast"])]),(0,l._)("p",null,(0,f.zw)(e.$t("settings.theme_help_v2_2")),1)],8,Oo),(0,l._)("div",{label:e.$t("settings.style.advanced_colors._tab_label"),class:"color-container"},[(0,l._)("div",Bo,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.theme_help")),1),(0,l._)("button",{class:"btn button-default",onClick:t[27]||(t[27]=function(){return e.clearOpacity&&e.clearOpacity.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_opacity")),1),(0,l._)("button",{class:"btn button-default",onClick:t[28]||(t[28]=function(){return e.clearV1&&e.clearV1.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_all")),1)]),(0,l._)("div",Ao,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.post")),1),(0,l.Wm)(c,{modelValue:e.postLinkColorLocal,"onUpdate:modelValue":t[29]||(t[29]=function(t){return e.postLinkColorLocal=t}),name:"postLinkColor",fallback:e.previewTheme.colors.accent,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.postLink},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.postGreentextColorLocal,"onUpdate:modelValue":t[30]||(t[30]=function(t){return e.postGreentextColorLocal=t}),name:"postGreentextColor",fallback:e.previewTheme.colors.cGreen,label:e.$t("settings.greentext")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.postGreentext},null,8,["contrast"]),(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.alert")),1),(0,l.Wm)(c,{modelValue:e.alertErrorColorLocal,"onUpdate:modelValue":t[31]||(t[31]=function(t){return e.alertErrorColorLocal=t}),name:"alertError",label:e.$t("settings.style.advanced_colors.alert_error"),fallback:e.previewTheme.colors.alertError},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.alertErrorTextColorLocal,"onUpdate:modelValue":t[32]||(t[32]=function(t){return e.alertErrorTextColorLocal=t}),name:"alertErrorText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertErrorText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.alertErrorText,large:""},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.alertWarningColorLocal,"onUpdate:modelValue":t[33]||(t[33]=function(t){return e.alertWarningColorLocal=t}),name:"alertWarning",label:e.$t("settings.style.advanced_colors.alert_warning"),fallback:e.previewTheme.colors.alertWarning},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.alertWarningTextColorLocal,"onUpdate:modelValue":t[34]||(t[34]=function(t){return e.alertWarningTextColorLocal=t}),name:"alertWarningText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertWarningText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.alertWarningText,large:""},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.alertNeutralColorLocal,"onUpdate:modelValue":t[35]||(t[35]=function(t){return e.alertNeutralColorLocal=t}),name:"alertNeutral",label:e.$t("settings.style.advanced_colors.alert_neutral"),fallback:e.previewTheme.colors.alertNeutral},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.alertNeutralTextColorLocal,"onUpdate:modelValue":t[36]||(t[36]=function(t){return e.alertNeutralTextColorLocal=t}),name:"alertNeutralText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.alertNeutralText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.alertNeutralText,large:""},null,8,["contrast"]),(0,l.Wm)(d,{modelValue:e.alertOpacityLocal,"onUpdate:modelValue":t[37]||(t[37]=function(t){return e.alertOpacityLocal=t}),name:"alertOpacity",fallback:e.previewTheme.opacity.alert},null,8,["modelValue","fallback"])]),(0,l._)("div",Eo,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.badge")),1),(0,l.Wm)(c,{modelValue:e.badgeNotificationColorLocal,"onUpdate:modelValue":t[38]||(t[38]=function(t){return e.badgeNotificationColorLocal=t}),name:"badgeNotification",label:e.$t("settings.style.advanced_colors.badge_notification"),fallback:e.previewTheme.colors.badgeNotification},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.badgeNotificationTextColorLocal,"onUpdate:modelValue":t[39]||(t[39]=function(t){return e.badgeNotificationTextColorLocal=t}),name:"badgeNotificationText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.badgeNotificationText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.badgeNotificationText,large:""},null,8,["contrast"])]),(0,l._)("div",Fo,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.panel_header")),1),(0,l.Wm)(c,{modelValue:e.panelColorLocal,"onUpdate:modelValue":t[40]||(t[40]=function(t){return e.panelColorLocal=t}),name:"panelColor",fallback:e.previewTheme.colors.panel,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(d,{modelValue:e.panelOpacityLocal,"onUpdate:modelValue":t[41]||(t[41]=function(t){return e.panelOpacityLocal=t}),name:"panelOpacity",fallback:e.previewTheme.opacity.panel,disabled:"transparent"===e.panelColorLocal},null,8,["modelValue","fallback","disabled"]),(0,l.Wm)(c,{modelValue:e.panelTextColorLocal,"onUpdate:modelValue":t[42]||(t[42]=function(t){return e.panelTextColorLocal=t}),name:"panelTextColor",fallback:e.previewTheme.colors.panelText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.panelText,large:""},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.panelLinkColorLocal,"onUpdate:modelValue":t[43]||(t[43]=function(t){return e.panelLinkColorLocal=t}),name:"panelLinkColor",fallback:e.previewTheme.colors.panelLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.panelLink,large:""},null,8,["contrast"])]),(0,l._)("div",qo,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.top_bar")),1),(0,l.Wm)(c,{modelValue:e.topBarColorLocal,"onUpdate:modelValue":t[44]||(t[44]=function(t){return e.topBarColorLocal=t}),name:"topBarColor",fallback:e.previewTheme.colors.topBar,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.topBarTextColorLocal,"onUpdate:modelValue":t[45]||(t[45]=function(t){return e.topBarTextColorLocal=t}),name:"topBarTextColor",fallback:e.previewTheme.colors.topBarText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.topBarText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.topBarLinkColorLocal,"onUpdate:modelValue":t[46]||(t[46]=function(t){return e.topBarLinkColorLocal=t}),name:"topBarLinkColor",fallback:e.previewTheme.colors.topBarLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.topBarLink},null,8,["contrast"])]),(0,l._)("div",Zo,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.inputs")),1),(0,l.Wm)(c,{modelValue:e.inputColorLocal,"onUpdate:modelValue":t[47]||(t[47]=function(t){return e.inputColorLocal=t}),name:"inputColor",fallback:e.previewTheme.colors.input,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(d,{modelValue:e.inputOpacityLocal,"onUpdate:modelValue":t[48]||(t[48]=function(t){return e.inputOpacityLocal=t}),name:"inputOpacity",fallback:e.previewTheme.opacity.input,disabled:"transparent"===e.inputColorLocal},null,8,["modelValue","fallback","disabled"]),(0,l.Wm)(c,{modelValue:e.inputTextColorLocal,"onUpdate:modelValue":t[49]||(t[49]=function(t){return e.inputTextColorLocal=t}),name:"inputTextColor",fallback:e.previewTheme.colors.inputText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.inputText},null,8,["contrast"])]),(0,l._)("div",Mo,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.buttons")),1),(0,l.Wm)(c,{modelValue:e.btnColorLocal,"onUpdate:modelValue":t[50]||(t[50]=function(t){return e.btnColorLocal=t}),name:"btnColor",fallback:e.previewTheme.colors.btn,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(d,{modelValue:e.btnOpacityLocal,"onUpdate:modelValue":t[51]||(t[51]=function(t){return e.btnOpacityLocal=t}),name:"btnOpacity",fallback:e.previewTheme.opacity.btn,disabled:"transparent"===e.btnColorLocal},null,8,["modelValue","fallback","disabled"]),(0,l.Wm)(c,{modelValue:e.btnTextColorLocal,"onUpdate:modelValue":t[52]||(t[52]=function(t){return e.btnTextColorLocal=t}),name:"btnTextColor",fallback:e.previewTheme.colors.btnText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnPanelTextColorLocal,"onUpdate:modelValue":t[53]||(t[53]=function(t){return e.btnPanelTextColorLocal=t}),name:"btnPanelTextColor",fallback:e.previewTheme.colors.btnPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnPanelText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnTopBarTextColorLocal,"onUpdate:modelValue":t[54]||(t[54]=function(t){return e.btnTopBarTextColorLocal=t}),name:"btnTopBarTextColor",fallback:e.previewTheme.colors.btnTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnTopBarText},null,8,["contrast"]),(0,l._)("h5",null,(0,f.zw)(e.$t("settings.style.advanced_colors.pressed")),1),(0,l.Wm)(c,{modelValue:e.btnPressedColorLocal,"onUpdate:modelValue":t[55]||(t[55]=function(t){return e.btnPressedColorLocal=t}),name:"btnPressedColor",fallback:e.previewTheme.colors.btnPressed,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.btnPressedTextColorLocal,"onUpdate:modelValue":t[56]||(t[56]=function(t){return e.btnPressedTextColorLocal=t}),name:"btnPressedTextColor",fallback:e.previewTheme.colors.btnPressedText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnPressedText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnPressedPanelTextColorLocal,"onUpdate:modelValue":t[57]||(t[57]=function(t){return e.btnPressedPanelTextColorLocal=t}),name:"btnPressedPanelTextColor",fallback:e.previewTheme.colors.btnPressedPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnPressedPanelText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnPressedTopBarTextColorLocal,"onUpdate:modelValue":t[58]||(t[58]=function(t){return e.btnPressedTopBarTextColorLocal=t}),name:"btnPressedTopBarTextColor",fallback:e.previewTheme.colors.btnPressedTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnPressedTopBarText},null,8,["contrast"]),(0,l._)("h5",null,(0,f.zw)(e.$t("settings.style.advanced_colors.disabled")),1),(0,l.Wm)(c,{modelValue:e.btnDisabledColorLocal,"onUpdate:modelValue":t[59]||(t[59]=function(t){return e.btnDisabledColorLocal=t}),name:"btnDisabledColor",fallback:e.previewTheme.colors.btnDisabled,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.btnDisabledTextColorLocal,"onUpdate:modelValue":t[60]||(t[60]=function(t){return e.btnDisabledTextColorLocal=t}),name:"btnDisabledTextColor",fallback:e.previewTheme.colors.btnDisabledText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.btnDisabledPanelTextColorLocal,"onUpdate:modelValue":t[61]||(t[61]=function(t){return e.btnDisabledPanelTextColorLocal=t}),name:"btnDisabledPanelTextColor",fallback:e.previewTheme.colors.btnDisabledPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.btnDisabledTopBarTextColorLocal,"onUpdate:modelValue":t[62]||(t[62]=function(t){return e.btnDisabledTopBarTextColorLocal=t}),name:"btnDisabledTopBarTextColor",fallback:e.previewTheme.colors.btnDisabledTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),(0,l._)("h5",null,(0,f.zw)(e.$t("settings.style.advanced_colors.toggled")),1),(0,l.Wm)(c,{modelValue:e.btnToggledColorLocal,"onUpdate:modelValue":t[63]||(t[63]=function(t){return e.btnToggledColorLocal=t}),name:"btnToggledColor",fallback:e.previewTheme.colors.btnToggled,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.btnToggledTextColorLocal,"onUpdate:modelValue":t[64]||(t[64]=function(t){return e.btnToggledTextColorLocal=t}),name:"btnToggledTextColor",fallback:e.previewTheme.colors.btnToggledText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnToggledText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnToggledPanelTextColorLocal,"onUpdate:modelValue":t[65]||(t[65]=function(t){return e.btnToggledPanelTextColorLocal=t}),name:"btnToggledPanelTextColor",fallback:e.previewTheme.colors.btnToggledPanelText,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnToggledPanelText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.btnToggledTopBarTextColorLocal,"onUpdate:modelValue":t[66]||(t[66]=function(t){return e.btnToggledTopBarTextColorLocal=t}),name:"btnToggledTopBarTextColor",fallback:e.previewTheme.colors.btnToggledTopBarText,label:e.$t("settings.style.advanced_colors.top_bar")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.btnToggledTopBarText},null,8,["contrast"])]),(0,l._)("div",Ro,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.tabs")),1),(0,l.Wm)(c,{modelValue:e.tabColorLocal,"onUpdate:modelValue":t[67]||(t[67]=function(t){return e.tabColorLocal=t}),name:"tabColor",fallback:e.previewTheme.colors.tab,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.tabTextColorLocal,"onUpdate:modelValue":t[68]||(t[68]=function(t){return e.tabTextColorLocal=t}),name:"tabTextColor",fallback:e.previewTheme.colors.tabText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.tabText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.tabActiveTextColorLocal,"onUpdate:modelValue":t[69]||(t[69]=function(t){return e.tabActiveTextColorLocal=t}),name:"tabActiveTextColor",fallback:e.previewTheme.colors.tabActiveText,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(p,{contrast:e.previewContrast.tabActiveText},null,8,["contrast"])]),(0,l._)("div",No,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.borders")),1),(0,l.Wm)(c,{modelValue:e.borderColorLocal,"onUpdate:modelValue":t[70]||(t[70]=function(t){return e.borderColorLocal=t}),name:"borderColor",fallback:e.previewTheme.colors.border,label:e.$t("settings.style.common.color")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(d,{modelValue:e.borderOpacityLocal,"onUpdate:modelValue":t[71]||(t[71]=function(t){return e.borderOpacityLocal=t}),name:"borderOpacity",fallback:e.previewTheme.opacity.border,disabled:"transparent"===e.borderColorLocal},null,8,["modelValue","fallback","disabled"])]),(0,l._)("div",Ho,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.faint_text")),1),(0,l.Wm)(c,{modelValue:e.faintColorLocal,"onUpdate:modelValue":t[72]||(t[72]=function(t){return e.faintColorLocal=t}),name:"faintColor",fallback:e.previewTheme.colors.faint,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.faintLinkColorLocal,"onUpdate:modelValue":t[73]||(t[73]=function(t){return e.faintLinkColorLocal=t}),name:"faintLinkColor",fallback:e.previewTheme.colors.faintLink,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.panelFaintColorLocal,"onUpdate:modelValue":t[74]||(t[74]=function(t){return e.panelFaintColorLocal=t}),name:"panelFaintColor",fallback:e.previewTheme.colors.panelFaint,label:e.$t("settings.style.advanced_colors.panel_header")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(d,{modelValue:e.faintOpacityLocal,"onUpdate:modelValue":t[75]||(t[75]=function(t){return e.faintOpacityLocal=t}),name:"faintOpacity",fallback:e.previewTheme.opacity.faint},null,8,["modelValue","fallback"])]),(0,l._)("div",Yo,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.underlay")),1),(0,l.Wm)(c,{modelValue:e.underlayColorLocal,"onUpdate:modelValue":t[76]||(t[76]=function(t){return e.underlayColorLocal=t}),name:"underlay",label:e.$t("settings.style.advanced_colors.underlay"),fallback:e.previewTheme.colors.underlay},null,8,["modelValue","label","fallback"]),(0,l.Wm)(d,{modelValue:e.underlayOpacityLocal,"onUpdate:modelValue":t[77]||(t[77]=function(t){return e.underlayOpacityLocal=t}),name:"underlayOpacity",fallback:e.previewTheme.opacity.underlay,disabled:"transparent"===e.underlayOpacityLocal},null,8,["modelValue","fallback","disabled"])]),(0,l._)("div",Ko,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.wallpaper")),1),(0,l.Wm)(c,{modelValue:e.wallpaperColorLocal,"onUpdate:modelValue":t[78]||(t[78]=function(t){return e.wallpaperColorLocal=t}),name:"wallpaper",label:e.$t("settings.style.advanced_colors.wallpaper"),fallback:e.previewTheme.colors.wallpaper},null,8,["modelValue","label","fallback"])]),(0,l._)("div",Go,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.poll")),1),(0,l.Wm)(c,{modelValue:e.pollColorLocal,"onUpdate:modelValue":t[79]||(t[79]=function(t){return e.pollColorLocal=t}),name:"poll",label:e.$t("settings.background"),fallback:e.previewTheme.colors.poll},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.pollTextColorLocal,"onUpdate:modelValue":t[80]||(t[80]=function(t){return e.pollTextColorLocal=t}),name:"pollText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.pollText},null,8,["modelValue","label","fallback"])]),(0,l._)("div",Jo,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.icons")),1),(0,l.Wm)(c,{modelValue:e.iconColorLocal,"onUpdate:modelValue":t[81]||(t[81]=function(t){return e.iconColorLocal=t}),name:"icon",label:e.$t("settings.style.advanced_colors.icons"),fallback:e.previewTheme.colors.icon},null,8,["modelValue","label","fallback"])]),(0,l._)("div",Qo,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.highlight")),1),(0,l.Wm)(c,{modelValue:e.highlightColorLocal,"onUpdate:modelValue":t[82]||(t[82]=function(t){return e.highlightColorLocal=t}),name:"highlight",label:e.$t("settings.background"),fallback:e.previewTheme.colors.highlight},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.highlightTextColorLocal,"onUpdate:modelValue":t[83]||(t[83]=function(t){return e.highlightTextColorLocal=t}),name:"highlightText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.highlightText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.highlightText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.highlightLinkColorLocal,"onUpdate:modelValue":t[84]||(t[84]=function(t){return e.highlightLinkColorLocal=t}),name:"highlightLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.highlightLink},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.highlightLink},null,8,["contrast"])]),(0,l._)("div",Xo,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.popover")),1),(0,l.Wm)(c,{modelValue:e.popoverColorLocal,"onUpdate:modelValue":t[85]||(t[85]=function(t){return e.popoverColorLocal=t}),name:"popover",label:e.$t("settings.background"),fallback:e.previewTheme.colors.popover},null,8,["modelValue","label","fallback"]),(0,l.Wm)(d,{modelValue:e.popoverOpacityLocal,"onUpdate:modelValue":t[86]||(t[86]=function(t){return e.popoverOpacityLocal=t}),name:"popoverOpacity",fallback:e.previewTheme.opacity.popover,disabled:"transparent"===e.popoverOpacityLocal},null,8,["modelValue","fallback","disabled"]),(0,l.Wm)(c,{modelValue:e.popoverTextColorLocal,"onUpdate:modelValue":t[87]||(t[87]=function(t){return e.popoverTextColorLocal=t}),name:"popoverText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.popoverText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.popoverText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.popoverLinkColorLocal,"onUpdate:modelValue":t[88]||(t[88]=function(t){return e.popoverLinkColorLocal=t}),name:"popoverLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.popoverLink},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.popoverLink},null,8,["contrast"])]),(0,l._)("div",es,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.selectedPost")),1),(0,l.Wm)(c,{modelValue:e.selectedPostColorLocal,"onUpdate:modelValue":t[89]||(t[89]=function(t){return e.selectedPostColorLocal=t}),name:"selectedPost",label:e.$t("settings.background"),fallback:e.previewTheme.colors.selectedPost},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.selectedPostTextColorLocal,"onUpdate:modelValue":t[90]||(t[90]=function(t){return e.selectedPostTextColorLocal=t}),name:"selectedPostText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.selectedPostText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.selectedPostText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.selectedPostLinkColorLocal,"onUpdate:modelValue":t[91]||(t[91]=function(t){return e.selectedPostLinkColorLocal=t}),name:"selectedPostLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.selectedPostLink},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.selectedPostLink},null,8,["contrast"])]),(0,l._)("div",ts,[(0,l._)("h4",null,(0,f.zw)(e.$t("settings.style.advanced_colors.selectedMenu")),1),(0,l.Wm)(c,{modelValue:e.selectedMenuColorLocal,"onUpdate:modelValue":t[92]||(t[92]=function(t){return e.selectedMenuColorLocal=t}),name:"selectedMenu",label:e.$t("settings.background"),fallback:e.previewTheme.colors.selectedMenu},null,8,["modelValue","label","fallback"]),(0,l.Wm)(c,{modelValue:e.selectedMenuTextColorLocal,"onUpdate:modelValue":t[93]||(t[93]=function(t){return e.selectedMenuTextColorLocal=t}),name:"selectedMenuText",label:e.$t("settings.text"),fallback:e.previewTheme.colors.selectedMenuText},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.selectedMenuText},null,8,["contrast"]),(0,l.Wm)(c,{modelValue:e.selectedMenuLinkColorLocal,"onUpdate:modelValue":t[94]||(t[94]=function(t){return e.selectedMenuLinkColorLocal=t}),name:"selectedMenuLink",label:e.$t("settings.links"),fallback:e.previewTheme.colors.selectedMenuLink},null,8,["modelValue","label","fallback"]),(0,l.Wm)(p,{contrast:e.previewContrast.selectedMenuLink},null,8,["contrast"])]),(0,l._)("div",ns,[(0,l._)("h4",null,(0,f.zw)(e.$t("chats.chats")),1),(0,l.Wm)(c,{modelValue:e.chatBgColorLocal,"onUpdate:modelValue":t[95]||(t[95]=function(t){return e.chatBgColorLocal=t}),name:"chatBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l._)("h5",null,(0,f.zw)(e.$t("settings.style.advanced_colors.chat.incoming")),1),(0,l.Wm)(c,{modelValue:e.chatMessageIncomingBgColorLocal,"onUpdate:modelValue":t[96]||(t[96]=function(t){return e.chatMessageIncomingBgColorLocal=t}),name:"chatMessageIncomingBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageIncomingTextColorLocal,"onUpdate:modelValue":t[97]||(t[97]=function(t){return e.chatMessageIncomingTextColorLocal=t}),name:"chatMessageIncomingTextColor",fallback:e.previewTheme.colors.text,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageIncomingLinkColorLocal,"onUpdate:modelValue":t[98]||(t[98]=function(t){return e.chatMessageIncomingLinkColorLocal=t}),name:"chatMessageIncomingLinkColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageIncomingBorderColorLocal,"onUpdate:modelValue":t[99]||(t[99]=function(t){return e.chatMessageIncomingBorderColorLocal=t}),name:"chatMessageIncomingBorderLinkColor",fallback:e.previewTheme.colors.fg,label:e.$t("settings.style.advanced_colors.chat.border")},null,8,["modelValue","fallback","label"]),(0,l._)("h5",null,(0,f.zw)(e.$t("settings.style.advanced_colors.chat.outgoing")),1),(0,l.Wm)(c,{modelValue:e.chatMessageOutgoingBgColorLocal,"onUpdate:modelValue":t[100]||(t[100]=function(t){return e.chatMessageOutgoingBgColorLocal=t}),name:"chatMessageOutgoingBgColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.background")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageOutgoingTextColorLocal,"onUpdate:modelValue":t[101]||(t[101]=function(t){return e.chatMessageOutgoingTextColorLocal=t}),name:"chatMessageOutgoingTextColor",fallback:e.previewTheme.colors.text,label:e.$t("settings.text")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageOutgoingLinkColorLocal,"onUpdate:modelValue":t[102]||(t[102]=function(t){return e.chatMessageOutgoingLinkColorLocal=t}),name:"chatMessageOutgoingLinkColor",fallback:e.previewTheme.colors.link,label:e.$t("settings.links")},null,8,["modelValue","fallback","label"]),(0,l.Wm)(c,{modelValue:e.chatMessageOutgoingBorderColorLocal,"onUpdate:modelValue":t[103]||(t[103]=function(t){return e.chatMessageOutgoingBorderColorLocal=t}),name:"chatMessageOutgoingBorderLinkColor",fallback:e.previewTheme.colors.bg,label:e.$t("settings.style.advanced_colors.chat.border")},null,8,["modelValue","fallback","label"])])],8,jo),(0,l._)("div",{label:e.$t("settings.style.radii._tab_label"),class:"radius-container"},[(0,l._)("div",as,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.radii_help")),1),(0,l._)("button",{class:"btn button-default",onClick:t[104]||(t[104]=function(){return e.clearRoundness&&e.clearRoundness.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_all")),1)]),(0,l.Wm)(m,{modelValue:e.btnRadiusLocal,"onUpdate:modelValue":t[105]||(t[105]=function(t){return e.btnRadiusLocal=t}),name:"btnRadius",label:e.$t("settings.btnRadius"),fallback:e.previewTheme.radii.btn,max:"16","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.inputRadiusLocal,"onUpdate:modelValue":t[106]||(t[106]=function(t){return e.inputRadiusLocal=t}),name:"inputRadius",label:e.$t("settings.inputRadius"),fallback:e.previewTheme.radii.input,max:"9","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.checkboxRadiusLocal,"onUpdate:modelValue":t[107]||(t[107]=function(t){return e.checkboxRadiusLocal=t}),name:"checkboxRadius",label:e.$t("settings.checkboxRadius"),fallback:e.previewTheme.radii.checkbox,max:"16","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.panelRadiusLocal,"onUpdate:modelValue":t[108]||(t[108]=function(t){return e.panelRadiusLocal=t}),name:"panelRadius",label:e.$t("settings.panelRadius"),fallback:e.previewTheme.radii.panel,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.avatarRadiusLocal,"onUpdate:modelValue":t[109]||(t[109]=function(t){return e.avatarRadiusLocal=t}),name:"avatarRadius",label:e.$t("settings.avatarRadius"),fallback:e.previewTheme.radii.avatar,max:"28","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.avatarAltRadiusLocal,"onUpdate:modelValue":t[110]||(t[110]=function(t){return e.avatarAltRadiusLocal=t}),name:"avatarAltRadius",label:e.$t("settings.avatarAltRadius"),fallback:e.previewTheme.radii.avatarAlt,max:"28","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.attachmentRadiusLocal,"onUpdate:modelValue":t[111]||(t[111]=function(t){return e.attachmentRadiusLocal=t}),name:"attachmentRadius",label:e.$t("settings.attachmentRadius"),fallback:e.previewTheme.radii.attachment,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.tooltipRadiusLocal,"onUpdate:modelValue":t[112]||(t[112]=function(t){return e.tooltipRadiusLocal=t}),name:"tooltipRadius",label:e.$t("settings.tooltipRadius"),fallback:e.previewTheme.radii.tooltip,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(m,{modelValue:e.chatMessageRadiusLocal,"onUpdate:modelValue":t[113]||(t[113]=function(t){return e.chatMessageRadiusLocal=t}),name:"chatMessageRadius",label:e.$t("settings.chatMessageRadius"),fallback:e.previewTheme.radii.chatMessage||2,max:"50","hard-min":"0"},null,8,["modelValue","label","fallback"])],8,ls),(0,l._)("div",{label:e.$t("settings.style.shadows._tab_label"),class:"shadow-container"},[(0,l._)("div",ss,[(0,l._)("div",rs,[(0,l.Uk)((0,f.zw)(e.$t("settings.style.shadows.component"))+" "+(0,f.zw)(" ")+" ",1),(0,l.Wm)(r,{id:"shadow-switcher",modelValue:e.shadowSelected,"onUpdate:modelValue":t[114]||(t[114]=function(t){return e.shadowSelected=t}),class:"shadow-switcher"},{default:(0,l.w5)((function(){return[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.shadowsAvailable,(function(t){return(0,l.wg)(),(0,l.iD)("option",{key:t,value:t},(0,f.zw)(e.$t("settings.style.shadows.components."+t)),9,is)})),128))]})),_:1},8,["modelValue"])]),(0,l._)("div",us,[(0,l._)("label",cs,(0,f.zw)(e.$t("settings.style.shadows.override")),1),(0,l.Uk)(" "+(0,f.zw)(" ")+" "),(0,l.wy)((0,l._)("input",{id:"override","onUpdate:modelValue":t[115]||(t[115]=function(t){return e.currentShadowOverriden=t}),name:"override",class:"input-override",type:"checkbox"},null,512),[[me.e8,e.currentShadowOverriden]]),ds]),(0,l._)("button",{class:"btn button-default",onClick:t[116]||(t[116]=function(){return e.clearShadows&&e.clearShadows.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_all")),1)]),(0,l.Wm)(h,{modelValue:e.currentShadow,"onUpdate:modelValue":t[117]||(t[117]=function(t){return e.currentShadow=t}),ready:!!e.currentShadowFallback,fallback:e.currentShadowFallback},null,8,["modelValue","ready","fallback"]),"avatar"===e.shadowSelected||"avatarStatus"===e.shadowSelected?((0,l.wg)(),(0,l.iD)("div",ps,[(0,l.Wm)(g,{scope:"global",keypath:"settings.style.shadows.filter_hint.always_drop_shadow",tag:"p"},{default:(0,l.w5)((function(){return[ms]})),_:1}),(0,l._)("p",null,(0,f.zw)(e.$t("settings.style.shadows.filter_hint.avatar_inset")),1),(0,l.Wm)(g,{scope:"global",keypath:"settings.style.shadows.filter_hint.drop_shadow_syntax",tag:"p"},{default:(0,l.w5)((function(){return[fs,hs,gs]})),_:1}),(0,l.Wm)(g,{scope:"global",keypath:"settings.style.shadows.filter_hint.inset_classic",tag:"p"},{default:(0,l.w5)((function(){return[bs]})),_:1}),(0,l._)("p",null,(0,f.zw)(e.$t("settings.style.shadows.filter_hint.spread_zero")),1)])):(0,l.kq)("",!0)],8,os),(0,l._)("div",{label:e.$t("settings.style.fonts._tab_label"),class:"fonts-container"},[(0,l._)("div",_s,[(0,l._)("p",null,(0,f.zw)(e.$t("settings.style.fonts.help")),1),(0,l._)("button",{class:"btn button-default",onClick:t[118]||(t[118]=function(){return e.clearFonts&&e.clearFonts.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.clear_all")),1)]),(0,l.Wm)(b,{modelValue:e.fontsLocal.interface,"onUpdate:modelValue":t[119]||(t[119]=function(t){return e.fontsLocal.interface=t}),name:"ui",label:e.$t("settings.style.fonts.components.interface"),fallback:e.previewTheme.fonts.interface,"no-inherit":"1"},null,8,["modelValue","label","fallback"]),(0,l.Wm)(b,{modelValue:e.fontsLocal.input,"onUpdate:modelValue":t[120]||(t[120]=function(t){return e.fontsLocal.input=t}),name:"input",label:e.$t("settings.style.fonts.components.input"),fallback:e.previewTheme.fonts.input},null,8,["modelValue","label","fallback"]),(0,l.Wm)(b,{modelValue:e.fontsLocal.post,"onUpdate:modelValue":t[121]||(t[121]=function(t){return e.fontsLocal.post=t}),name:"post",label:e.$t("settings.style.fonts.components.post"),fallback:e.previewTheme.fonts.post},null,8,["modelValue","label","fallback"]),(0,l.Wm)(b,{modelValue:e.fontsLocal.postCode,"onUpdate:modelValue":t[122]||(t[122]=function(t){return e.fontsLocal.postCode=t}),name:"postCode",label:e.$t("settings.style.fonts.components.postCode"),fallback:e.previewTheme.fonts.postCode},null,8,["modelValue","label","fallback"])],8,ws)]})),_:1})],1024)),e.isActive?((0,l.wg)(),(0,l.j4)(l.lR,{key:0,to:"#unscrolled-content"},[(0,l._)("div",ks,[(0,l._)("button",{class:"btn button-default submit",disabled:!e.themeValid,onClick:t[123]||(t[123]=function(){return e.setCustomTheme&&e.setCustomTheme.apply(e,arguments)})},(0,f.zw)(e.$t("general.apply")),9,vs),(0,l._)("button",{class:"btn button-default",onClick:t[124]||(t[124]=function(){return e.clearAll&&e.clearAll.apply(e,arguments)})},(0,f.zw)(e.$t("settings.style.switcher.reset")),1)])])):(0,l.kq)("",!0)])}]]);j.vI.add(B.klh,B.ILF,B.G_j,B.XsY,B.qmU,B.q7m,B.Aq,B.YHc);const Vi={components:{TabSwitcher:m.Z,DataImportExportTab:G,MutesAndBlocksTab:et,NotificationsTab:Dt,FilteringTab:sn,SecurityTab:yl,ProfileTab:ya,GeneralTab:no,VersionTab:po,ThemeTab:Ci},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},open:function(){return"hidden"!==this.$store.state.interface.settingsModalState},bodyLock:function(){return"visible"===this.$store.state.interface.settingsModalState}},methods:{onOpen:function(){var e=this.$store.state.interface.settingsModalTargetTab;if(e){var t=this.$refs.tabSwitcher.$slots.default().findIndex((function(t){return t.props&&t.props["data-tab-name"]===e}));t>=0&&this.$refs.tabSwitcher.setTab(t)}this.$store.dispatch("clearSettingsModalTargetTab")}},mounted:function(){this.onOpen()},watch:{open:function(e){e&&this.onOpen()}}},Ti=(0,E.Z)(Vi,[["render",function(e,t,n,m,f,h){var g=(0,l.up)("GeneralTab"),b=(0,l.up)("ProfileTab"),w=(0,l.up)("SecurityTab"),_=(0,l.up)("FilteringTab"),k=(0,l.up)("ThemeTab"),v=(0,l.up)("NotificationsTab"),y=(0,l.up)("DataImportExportTab"),$=(0,l.up)("MutesAndBlocksTab"),C=(0,l.up)("VersionTab"),V=(0,l.up)("tab-switcher");return(0,l.wg)(),(0,l.j4)(V,{ref:"tabSwitcher",class:"settings_tab-switcher","side-tab-bar":!0,"scrollable-tabs":!0,"body-scroll-lock":e.bodyLock},{default:(0,l.w5)((function(){return[(0,l._)("div",{label:e.$t("settings.general"),icon:"wrench","data-tab-name":"general"},[(0,l.Wm)(g)],8,a),e.isLoggedIn?((0,l.wg)(),(0,l.iD)("div",{key:0,label:e.$t("settings.profile_tab"),icon:"user","data-tab-name":"profile"},[(0,l.Wm)(b)],8,o)):(0,l.kq)("",!0),e.isLoggedIn?((0,l.wg)(),(0,l.iD)("div",{key:1,label:e.$t("settings.security_tab"),icon:"lock","data-tab-name":"security"},[(0,l.Wm)(w)],8,s)):(0,l.kq)("",!0),(0,l._)("div",{label:e.$t("settings.filtering"),icon:"filter","data-tab-name":"filtering"},[(0,l.Wm)(_)],8,r),(0,l._)("div",{label:e.$t("settings.theme"),icon:"paint-brush","data-tab-name":"theme"},[(0,l.Wm)(k)],8,i),e.isLoggedIn?((0,l.wg)(),(0,l.iD)("div",{key:2,label:e.$t("settings.notifications"),icon:"bell","data-tab-name":"notifications"},[(0,l.Wm)(v)],8,u)):(0,l.kq)("",!0),e.isLoggedIn?((0,l.wg)(),(0,l.iD)("div",{key:3,label:e.$t("settings.data_import_export_tab"),icon:"download","data-tab-name":"dataImportExport"},[(0,l.Wm)(y)],8,c)):(0,l.kq)("",!0),e.isLoggedIn?((0,l.wg)(),(0,l.iD)("div",{key:4,label:e.$t("settings.mutes_and_blocks"),fullHeight:!0,icon:"eye-slash","data-tab-name":"mutesAndBlocks"},[(0,l.Wm)($)],8,d)):(0,l.kq)("",!0),(0,l._)("div",{label:e.$t("settings.version.title"),icon:"info","data-tab-name":"version"},[(0,l.Wm)(C)],8,p)]})),_:1},8,["body-scroll-lock"])}]])}}]); -//# sourceMappingURL=9114.e761a1c6846fea99aaf1.js.map -\ No newline at end of file diff --git a/priv/static/static/js/9114.e761a1c6846fea99aaf1.js.map b/priv/static/static/js/9114.e761a1c6846fea99aaf1.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/9114.e761a1c6846fea99aaf1.js","mappings":"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","sources":["webpack://pleroma_fe/./src/components/settings_modal/tabs/data_import_export_tab.vue","webpack://pleroma_fe/./src/components/importer/importer.vue","webpack://pleroma_fe/./src/components/importer/importer.js","webpack://pleroma_fe/./src/components/importer/importer.vue?a48c","webpack://pleroma_fe/./src/components/exporter/exporter.vue","webpack://pleroma_fe/./src/components/exporter/exporter.js","webpack://pleroma_fe/./src/components/exporter/exporter.vue?49d4","webpack://pleroma_fe/./src/components/settings_modal/tabs/data_import_export_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/data_import_export_tab.vue?3b3e","webpack://pleroma_fe/./src/components/settings_modal/tabs/mutes_and_blocks_tab.vue","webpack://pleroma_fe/./src/components/autosuggest/autosuggest.vue","webpack://pleroma_fe/./src/components/autosuggest/autosuggest.js","webpack://pleroma_fe/./src/components/autosuggest/autosuggest.vue?ed00","webpack://pleroma_fe/./src/components/block_card/block_card.vue","webpack://pleroma_fe/./src/components/block_card/block_card.js","webpack://pleroma_fe/./src/components/block_card/block_card.vue?98f0","webpack://pleroma_fe/./src/components/mute_card/mute_card.vue","webpack://pleroma_fe/./src/components/mute_card/mute_card.js","webpack://pleroma_fe/./src/components/mute_card/mute_card.vue?716e","webpack://pleroma_fe/./src/components/domain_mute_card/domain_mute_card.vue","webpack://pleroma_fe/./src/components/domain_mute_card/domain_mute_card.js","webpack://pleroma_fe/./src/components/domain_mute_card/domain_mute_card.vue?06f5","webpack://pleroma_fe/./src/components/selectable_list/selectable_list.vue","webpack://pleroma_fe/./src/components/selectable_list/selectable_list.js","webpack://pleroma_fe/./src/components/selectable_list/selectable_list.vue?5249","webpack://pleroma_fe/./src/hocs/with_subscription/with_subscription.jsx","webpack://pleroma_fe/./src/components/settings_modal/tabs/mutes_and_blocks_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/mutes_and_blocks_tab.vue?8a44","webpack://pleroma_fe/./src/components/settings_modal/tabs/notifications_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/boolean_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/modified_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/modified_indicator.vue?d3ff","webpack://pleroma_fe/./src/components/settings_modal/helpers/server_side_indicator.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/server_side_indicator.vue?7a7f","webpack://pleroma_fe/./src/components/settings_modal/helpers/boolean_setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/boolean_setting.vue?ef04","webpack://pleroma_fe/./src/components/settings_modal/helpers/shared_computed_object.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/notifications_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/notifications_tab.vue?6ae7","webpack://pleroma_fe/./src/components/settings_modal/tabs/filtering_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/choice_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/choice_setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/choice_setting.vue?672b","webpack://pleroma_fe/./src/components/settings_modal/helpers/integer_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/integer_setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/integer_setting.vue?de6c","webpack://pleroma_fe/./src/components/settings_modal/tabs/filtering_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/filtering_tab.vue?d491","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/security_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_backup_codes.vue?d03b","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_totp.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/confirm.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/confirm.vue?c451","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/confirm.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_totp.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa_totp.vue?33f3","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/mfa.vue?eb32","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/security_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/security_tab/security_tab.vue?9c71","webpack://pleroma_fe/./src/components/settings_modal/tabs/profile_tab.vue","webpack://pleroma_fe/./src/components/image_cropper/image_cropper.vue","webpack://pleroma_fe/./src/components/image_cropper/image_cropper.js","webpack://pleroma_fe/./src/components/image_cropper/image_cropper.vue?4bc2","webpack://pleroma_fe/./src/components/settings_modal/tabs/profile_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/profile_tab.vue?f69a","webpack://pleroma_fe/./src/components/settings_modal/tabs/general_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/size_setting.vue","webpack://pleroma_fe/./src/components/settings_modal/helpers/size_setting.js","webpack://pleroma_fe/./src/components/settings_modal/helpers/size_setting.vue?9e8f","webpack://pleroma_fe/./src/components/settings_modal/tabs/general_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/general_tab.vue?ba77","webpack://pleroma_fe/./src/components/settings_modal/tabs/version_tab.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/version_tab.js","webpack://pleroma_fe/./src/services/version/version.service.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/version_tab.vue?9b58","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/theme_tab.vue","webpack://pleroma_fe/./src/components/color_input/color_input.vue","webpack://pleroma_fe/./src/components/color_input/color_input.vue?ea8c","webpack://pleroma_fe/./src/components/range_input/range_input.vue","webpack://pleroma_fe/./src/components/range_input/range_input.vue?9fff","webpack://pleroma_fe/./src/components/opacity_input/opacity_input.vue","webpack://pleroma_fe/./src/components/opacity_input/opacity_input.vue?ed56","webpack://pleroma_fe/./src/components/shadow_control/shadow_control.vue","webpack://pleroma_fe/./src/components/shadow_control/shadow_control.js","webpack://pleroma_fe/./src/components/shadow_control/shadow_control.vue?fe66","webpack://pleroma_fe/./src/components/font_control/font_control.js","webpack://pleroma_fe/./src/components/font_control/font_control.vue?d3f8","webpack://pleroma_fe/./src/components/font_control/font_control.vue","webpack://pleroma_fe/./src/components/contrast_ratio/contrast_ratio.vue","webpack://pleroma_fe/./src/components/contrast_ratio/contrast_ratio.vue?2ae9","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/preview.vue","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/preview.vue?771c","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/theme_tab.js","webpack://pleroma_fe/./src/components/settings_modal/tabs/theme_tab/theme_tab.vue?bfa7","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_content.js","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_content.vue?6fc2","webpack://pleroma_fe/./src/components/settings_modal/settings_modal_content.vue"],"sourcesContent":["<template>\n <div\n :label=\"$t('settings.data_import_export_tab')\"\n >\n <div class=\"setting-item\">\n <h2>{{ $t('settings.follow_import') }}</h2>\n <p>{{ $t('settings.import_followers_from_a_csv_file') }}</p>\n <Importer\n :submit-handler=\"importFollows\"\n :success-message=\"$t('settings.follows_imported')\"\n :error-message=\"$t('settings.follow_import_error')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.follow_export') }}</h2>\n <Exporter\n :get-content=\"getFollowsContent\"\n filename=\"friends.csv\"\n :export-button-label=\"$t('settings.follow_export_button')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.block_import') }}</h2>\n <p>{{ $t('settings.import_blocks_from_a_csv_file') }}</p>\n <Importer\n :submit-handler=\"importBlocks\"\n :success-message=\"$t('settings.blocks_imported')\"\n :error-message=\"$t('settings.block_import_error')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.block_export') }}</h2>\n <Exporter\n :get-content=\"getBlocksContent\"\n filename=\"blocks.csv\"\n :export-button-label=\"$t('settings.block_export_button')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.mute_import') }}</h2>\n <p>{{ $t('settings.import_mutes_from_a_csv_file') }}</p>\n <Importer\n :submit-handler=\"importMutes\"\n :success-message=\"$t('settings.mutes_imported')\"\n :error-message=\"$t('settings.mute_import_error')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.mute_export') }}</h2>\n <Exporter\n :get-content=\"getMutesContent\"\n filename=\"mutes.csv\"\n :export-button-label=\"$t('settings.mute_export_button')\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.account_backup') }}</h2>\n <p>{{ $t('settings.account_backup_description') }}</p>\n <table>\n <thead>\n <tr>\n <th>{{ $t('settings.account_backup_table_head') }}</th>\n <th />\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"backup in backups\"\n :key=\"backup.id\"\n >\n <td>{{ backup.inserted_at }}</td>\n <td class=\"actions\">\n <a\n v-if=\"backup.processed\"\n target=\"_blank\"\n :href=\"backup.url\"\n >\n {{ $t('settings.download_backup') }}\n </a>\n <span\n v-else-if=\"backup.state === 'running'\"\n >\n {{ $tc('settings.backup_running', backup.processed_number, { number: backup.processed_number }) }}\n </span>\n <span\n v-else-if=\"backup.state === 'failed'\"\n >\n {{ $t('settings.backup_failed') }}\n </span>\n <span\n v-else\n >\n {{ $t('settings.backup_not_ready') }}\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n <div\n v-if=\"listBackupsError\"\n class=\"alert error\"\n >\n {{ $t('settings.list_backups_error', { error }) }}\n <button\n :title=\"$t('settings.hide_list_backups_error_action')\"\n @click=\"listBackupsError = false\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n <button\n class=\"btn button-default\"\n @click=\"addBackup\"\n >\n {{ $t('settings.add_backup') }}\n </button>\n <p v-if=\"addedBackup\">\n {{ $t('settings.added_backup') }}\n </p>\n <template v-if=\"addBackupError !== false\">\n <p>{{ $t('settings.add_backup_error', { error: addBackupError }) }}</p>\n </template>\n </div>\n </div>\n</template>\n\n<script src=\"./data_import_export_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","<template>\n <div class=\"importer\">\n <form>\n <input\n ref=\"input\"\n type=\"file\"\n @change=\"change\"\n >\n </form>\n <FAIcon\n v-if=\"submitting\"\n class=\"importer-uploading\"\n spin\n icon=\"circle-notch\"\n />\n <button\n v-else\n class=\"btn button-default\"\n @click=\"submit\"\n >\n {{ submitButtonLabel || $t('importer.submit') }}\n </button>\n <div v-if=\"success\">\n <button\n class=\"button-unstyled\"\n @click=\"dismiss\"\n >\n <FAIcon\n icon=\"times\"\n />\n </button>\n {{ ' ' }}\n <span>{{ successMessage || $t('importer.success') }}</span>\n </div>\n <div v-else-if=\"error\">\n <button\n class=\"button-unstyled\"\n @click=\"dismiss\"\n >\n <FAIcon\n icon=\"times\"\n />\n </button>\n {{ ' ' }}\n <span>{{ errorMessage || $t('importer.error') }}</span>\n </div>\n </div>\n</template>\n\n<script src=\"./importer.js\"></script>\n\n<style lang=\"scss\">\n.importer {\n &-uploading {\n font-size: 1.5em;\n margin: 0.25em;\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faTimes\n)\n\nconst Importer = {\n props: {\n submitHandler: {\n type: Function,\n required: true\n },\n submitButtonLabel: { type: String },\n successMessage: { type: String },\n errorMessage: { type: String }\n },\n data () {\n return {\n file: null,\n error: false,\n success: false,\n submitting: false\n }\n },\n methods: {\n change () {\n this.file = this.$refs.input.files[0]\n },\n submit () {\n this.dismiss()\n this.submitting = true\n this.submitHandler(this.file)\n .then(() => { this.success = true })\n .catch(() => { this.error = true })\n .finally(() => { this.submitting = false })\n },\n dismiss () {\n this.success = false\n this.error = false\n }\n }\n}\n\nexport default Importer\n","import { render } from \"./importer.vue?vue&type=template&id=24f20fa0\"\nimport script from \"./importer.js?vue&type=script&lang=js\"\nexport * from \"./importer.js?vue&type=script&lang=js\"\n\nimport \"./importer.vue?vue&type=style&index=0&id=24f20fa0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"exporter\">\n <div v-if=\"processing\">\n <FAIcon\n icon=\"circle-notch\"\n size=\"lg\"\n spin\n />\n\n <span>{{ processingMessage || $t('exporter.processing') }}</span>\n </div>\n <button\n v-else\n class=\"btn button-default\"\n @click=\"process\"\n >\n {{ exportButtonLabel || $t('exporter.export') }}\n </button>\n </div>\n</template>\n\n<script src=\"./exporter.js\"></script>\n\n<style lang=\"scss\">\n.exporter {\n &-processing {\n margin: 0.25em;\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst Exporter = {\n props: {\n getContent: {\n type: Function,\n required: true\n },\n filename: {\n type: String,\n default: 'export.csv'\n },\n exportButtonLabel: { type: String },\n processingMessage: { type: String }\n },\n data () {\n return {\n processing: false\n }\n },\n methods: {\n process () {\n this.processing = true\n this.getContent()\n .then((content) => {\n const fileToDownload = document.createElement('a')\n fileToDownload.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(content))\n fileToDownload.setAttribute('download', this.filename)\n fileToDownload.style.display = 'none'\n document.body.appendChild(fileToDownload)\n fileToDownload.click()\n document.body.removeChild(fileToDownload)\n // Add delay before hiding processing state since browser takes some time to handle file download\n setTimeout(() => { this.processing = false }, 2000)\n })\n }\n }\n}\n\nexport default Exporter\n","import { render } from \"./exporter.vue?vue&type=template&id=6357fe6a\"\nimport script from \"./exporter.js?vue&type=script&lang=js\"\nexport * from \"./exporter.js?vue&type=script&lang=js\"\n\nimport \"./exporter.vue?vue&type=style&index=0&id=6357fe6a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Importer from 'src/components/importer/importer.vue'\nimport Exporter from 'src/components/exporter/exporter.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport { mapState } from 'vuex'\n\nconst DataImportExportTab = {\n data () {\n return {\n activeTab: 'profile',\n newDomainToMute: '',\n listBackupsError: false,\n addBackupError: false,\n addedBackup: false,\n backups: []\n }\n },\n created () {\n this.$store.dispatch('fetchTokens')\n this.fetchBackups()\n },\n components: {\n Importer,\n Exporter,\n Checkbox\n },\n computed: {\n ...mapState({\n backendInteractor: (state) => state.api.backendInteractor,\n user: (state) => state.users.currentUser\n })\n },\n methods: {\n getFollowsContent () {\n return this.backendInteractor.exportFriends({ id: this.user.id })\n .then(this.generateExportableUsersContent)\n },\n getBlocksContent () {\n return this.backendInteractor.fetchBlocks()\n .then(this.generateExportableUsersContent)\n },\n getMutesContent () {\n return this.backendInteractor.fetchMutes()\n .then(this.generateExportableUsersContent)\n },\n importFollows (file) {\n return this.backendInteractor.importFollows({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n importBlocks (file) {\n return this.backendInteractor.importBlocks({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n importMutes (file) {\n return this.backendInteractor.importMutes({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n generateExportableUsersContent (users) {\n // Get addresses\n return users.map((user) => {\n // check is it's a local user\n if (user && user.is_local) {\n // append the instance address\n // eslint-disable-next-line no-undef\n return user.screen_name + '@' + location.hostname\n }\n return user.screen_name\n }).join('\\n')\n },\n addBackup () {\n this.$store.state.api.backendInteractor.addBackup()\n .then((res) => {\n this.addedBackup = true\n this.addBackupError = false\n })\n .catch((error) => {\n this.addedBackup = false\n this.addBackupError = error\n })\n .then(() => this.fetchBackups())\n },\n fetchBackups () {\n this.$store.state.api.backendInteractor.listBackups()\n .then((res) => {\n this.backups = res\n this.listBackupsError = false\n })\n .catch((error) => {\n this.listBackupsError = error.error\n })\n }\n }\n}\n\nexport default DataImportExportTab\n","import { render } from \"./data_import_export_tab.vue?vue&type=template&id=2a8891ee\"\nimport script from \"./data_import_export_tab.js?vue&type=script&lang=js\"\nexport * from \"./data_import_export_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <tab-switcher\n :scrollable-tabs=\"true\"\n class=\"mutes-and-blocks-tab\"\n >\n <div :label=\"$t('settings.blocks_tab')\">\n <div class=\"usersearch-wrapper\">\n <Autosuggest\n :filter=\"filterUnblockedUsers\"\n :query=\"queryUserIds\"\n :placeholder=\"$t('settings.search_user_to_block')\"\n >\n <template #default=\"row\">\n <BlockCard\n :user-id=\"row.item\"\n />\n </template>\n </Autosuggest>\n </div>\n <BlockList\n :refresh=\"true\"\n :get-key=\"i => i\"\n >\n <template #header=\"{selected}\">\n <div class=\"bulk-actions\">\n <ProgressButton\n v-if=\"selected.length > 0\"\n class=\"btn button-default bulk-action-button\"\n :click=\"() => blockUsers(selected)\"\n >\n {{ $t('user_card.block') }}\n <template #progress>\n {{ $t('user_card.block_progress') }}\n </template>\n </ProgressButton>\n <ProgressButton\n v-if=\"selected.length > 0\"\n class=\"btn button-default\"\n :click=\"() => unblockUsers(selected)\"\n >\n {{ $t('user_card.unblock') }}\n <template #progress>\n {{ $t('user_card.unblock_progress') }}\n </template>\n </ProgressButton>\n </div>\n </template>\n <template #item=\"{item}\">\n <BlockCard :user-id=\"item\" />\n </template>\n <template #empty>\n {{ $t('settings.no_blocks') }}\n </template>\n </BlockList>\n </div>\n\n <div :label=\"$t('settings.mutes_tab')\">\n <tab-switcher>\n <div :label=\"$t('settings.user_mutes')\">\n <div class=\"usersearch-wrapper\">\n <Autosuggest\n :filter=\"filterUnMutedUsers\"\n :query=\"queryUserIds\"\n :placeholder=\"$t('settings.search_user_to_mute')\"\n >\n <template #default=\"row\">\n <MuteCard\n :user-id=\"row.item\"\n />\n </template>\n </Autosuggest>\n </div>\n <MuteList\n :refresh=\"true\"\n :get-key=\"i => i\"\n >\n <template #header=\"{selected}\">\n <div class=\"bulk-actions\">\n <ProgressButton\n v-if=\"selected.length > 0\"\n class=\"btn button-default\"\n :click=\"() => muteUsers(selected)\"\n >\n {{ $t('user_card.mute') }}\n <template #progress>\n {{ $t('user_card.mute_progress') }}\n </template>\n </ProgressButton>\n <ProgressButton\n v-if=\"selected.length > 0\"\n class=\"btn button-default\"\n :click=\"() => unmuteUsers(selected)\"\n >\n {{ $t('user_card.unmute') }}\n <template #progress>\n {{ $t('user_card.unmute_progress') }}\n </template>\n </ProgressButton>\n </div>\n </template>\n <template #item=\"{item}\">\n <MuteCard :user-id=\"item\" />\n </template>\n <template #empty>\n {{ $t('settings.no_mutes') }}\n </template>\n </MuteList>\n </div>\n\n <div :label=\"$t('settings.domain_mutes')\">\n <div class=\"domain-mute-form\">\n <Autosuggest\n :filter=\"filterUnMutedDomains\"\n :query=\"queryKnownDomains\"\n :placeholder=\"$t('settings.type_domains_to_mute')\"\n >\n <template #default=\"row\">\n <DomainMuteCard\n :domain=\"row.item\"\n />\n </template>\n </Autosuggest>\n </div>\n <DomainMuteList\n :refresh=\"true\"\n :get-key=\"i => i\"\n >\n <template #header=\"{selected}\">\n <div class=\"bulk-actions\">\n <ProgressButton\n v-if=\"selected.length > 0\"\n class=\"btn button-default\"\n :click=\"() => unmuteDomains(selected)\"\n >\n {{ $t('domain_mute_card.unmute') }}\n <template #progress>\n {{ $t('domain_mute_card.unmute_progress') }}\n </template>\n </ProgressButton>\n </div>\n </template>\n <template #item=\"{item}\">\n <DomainMuteCard :domain=\"item\" />\n </template>\n <template #empty>\n {{ $t('settings.no_mutes') }}\n </template>\n </DomainMuteList>\n </div>\n </tab-switcher>\n </div>\n </tab-switcher>\n</template>\n\n<script src=\"./mutes_and_blocks_tab.js\"></script>\n<style lang=\"scss\" src=\"./mutes_and_blocks_tab.scss\"></style>\n","<template>\n <div\n v-click-outside=\"onClickOutside\"\n class=\"autosuggest\"\n >\n <input\n v-model=\"term\"\n :placeholder=\"placeholder\"\n class=\"autosuggest-input\"\n @click=\"onInputClick\"\n >\n <div\n v-if=\"resultsVisible && filtered.length > 0\"\n class=\"autosuggest-results\"\n >\n <slot\n v-for=\"item in filtered\"\n :item=\"item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./autosuggest.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.autosuggest {\n position: relative;\n\n &-input {\n display: block;\n width: 100%;\n }\n\n &-results {\n position: absolute;\n left: 0;\n top: 100%;\n right: 0;\n max-height: 400px;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-style: solid;\n border-width: 1px;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n overflow-y: auto;\n z-index: 1;\n }\n}\n</style>\n","const debounceMilliseconds = 500\n\nexport default {\n props: {\n query: { // function to query results and return a promise\n type: Function,\n required: true\n },\n filter: { // function to filter results in real time\n type: Function\n },\n placeholder: {\n type: String,\n default: 'Search...'\n }\n },\n data () {\n return {\n term: '',\n timeout: null,\n results: [],\n resultsVisible: false\n }\n },\n computed: {\n filtered () {\n return this.filter ? this.filter(this.results) : this.results\n }\n },\n watch: {\n term (val) {\n this.fetchResults(val)\n }\n },\n methods: {\n fetchResults (term) {\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n this.results = []\n if (term) {\n this.query(term).then((results) => { this.results = results })\n }\n }, debounceMilliseconds)\n },\n onInputClick () {\n this.resultsVisible = true\n },\n onClickOutside () {\n this.resultsVisible = false\n }\n }\n}\n","import { render } from \"./autosuggest.vue?vue&type=template&id=4e594b36\"\nimport script from \"./autosuggest.js?vue&type=script&lang=js\"\nexport * from \"./autosuggest.js?vue&type=script&lang=js\"\n\nimport \"./autosuggest.vue?vue&type=style&index=0&id=4e594b36&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <basic-user-card :user=\"user\">\n <div class=\"block-card-content-container\">\n <button\n v-if=\"blocked\"\n class=\"btn button-default\"\n :disabled=\"progress\"\n @click=\"unblockUser\"\n >\n <template v-if=\"progress\">\n {{ $t('user_card.unblock_progress') }}\n </template>\n <template v-else>\n {{ $t('user_card.unblock') }}\n </template>\n </button>\n <button\n v-else\n class=\"btn button-default\"\n :disabled=\"progress\"\n @click=\"blockUser\"\n >\n <template v-if=\"progress\">\n {{ $t('user_card.block_progress') }}\n </template>\n <template v-else>\n {{ $t('user_card.block') }}\n </template>\n </button>\n </div>\n </basic-user-card>\n</template>\n\n<script src=\"./block_card.js\"></script>\n\n<style lang=\"scss\">\n.block-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst BlockCard = {\n props: ['userId'],\n data () {\n return {\n progress: false\n }\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n blocked () {\n return this.relationship.blocking\n }\n },\n components: {\n BasicUserCard\n },\n methods: {\n unblockUser () {\n this.progress = true\n this.$store.dispatch('unblockUser', this.user.id).then(() => {\n this.progress = false\n })\n },\n blockUser () {\n this.progress = true\n this.$store.dispatch('blockUser', this.user.id).then(() => {\n this.progress = false\n })\n }\n }\n}\n\nexport default BlockCard\n","import { render } from \"./block_card.vue?vue&type=template&id=1c525ef4\"\nimport script from \"./block_card.js?vue&type=script&lang=js\"\nexport * from \"./block_card.js?vue&type=script&lang=js\"\n\nimport \"./block_card.vue?vue&type=style&index=0&id=1c525ef4&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <basic-user-card :user=\"user\">\n <div class=\"mute-card-content-container\">\n <button\n v-if=\"muted\"\n class=\"btn button-default\"\n :disabled=\"progress\"\n @click=\"unmuteUser\"\n >\n <template v-if=\"progress\">\n {{ $t('user_card.unmute_progress') }}\n </template>\n <template v-else>\n {{ $t('user_card.unmute') }}\n </template>\n </button>\n <button\n v-else\n class=\"btn button-default\"\n :disabled=\"progress\"\n @click=\"muteUser\"\n >\n <template v-if=\"progress\">\n {{ $t('user_card.mute_progress') }}\n </template>\n <template v-else>\n {{ $t('user_card.mute') }}\n </template>\n </button>\n </div>\n </basic-user-card>\n</template>\n\n<script src=\"./mute_card.js\"></script>\n\n<style lang=\"scss\">\n.mute-card-content-container {\n margin-top: 0.5em;\n text-align: right;\n\n button {\n width: 10em;\n }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst MuteCard = {\n props: ['userId'],\n data () {\n return {\n progress: false\n }\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n muted () {\n return this.relationship.muting\n }\n },\n components: {\n BasicUserCard\n },\n methods: {\n unmuteUser () {\n this.progress = true\n this.$store.dispatch('unmuteUser', this.userId).then(() => {\n this.progress = false\n })\n },\n muteUser () {\n this.progress = true\n this.$store.dispatch('muteUser', this.userId).then(() => {\n this.progress = false\n })\n }\n }\n}\n\nexport default MuteCard\n","import { render } from \"./mute_card.vue?vue&type=template&id=7dda2f25\"\nimport script from \"./mute_card.js?vue&type=script&lang=js\"\nexport * from \"./mute_card.js?vue&type=script&lang=js\"\n\nimport \"./mute_card.vue?vue&type=style&index=0&id=7dda2f25&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"domain-mute-card\">\n <div class=\"domain-mute-card-domain\">\n {{ domain }}\n </div>\n <ProgressButton\n v-if=\"muted\"\n :click=\"unmuteDomain\"\n class=\"btn button-default\"\n >\n {{ $t('domain_mute_card.unmute') }}\n <template #progress>\n {{ $t('domain_mute_card.unmute_progress') }}\n </template>\n </ProgressButton>\n <ProgressButton\n v-else\n :click=\"muteDomain\"\n class=\"btn button-default\"\n >\n {{ $t('domain_mute_card.mute') }}\n <template #progress>\n {{ $t('domain_mute_card.mute_progress') }}\n </template>\n </ProgressButton>\n </div>\n</template>\n\n<script src=\"./domain_mute_card.js\"></script>\n\n<style lang=\"scss\">\n.domain-mute-card {\n flex: 1 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.6em 1em 0.6em 0;\n\n &-domain {\n margin-right: 1em;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n button {\n width: 10em;\n }\n\n .autosuggest-results & {\n padding-left: 1em;\n }\n}\n</style>\n","import ProgressButton from '../progress_button/progress_button.vue'\n\nconst DomainMuteCard = {\n props: ['domain'],\n components: {\n ProgressButton\n },\n computed: {\n user () {\n return this.$store.state.users.currentUser\n },\n muted () {\n return this.user.domainMutes.includes(this.domain)\n }\n },\n methods: {\n unmuteDomain () {\n return this.$store.dispatch('unmuteDomain', this.domain)\n },\n muteDomain () {\n return this.$store.dispatch('muteDomain', this.domain)\n }\n }\n}\n\nexport default DomainMuteCard\n","import { render } from \"./domain_mute_card.vue?vue&type=template&id=2e9027a8\"\nimport script from \"./domain_mute_card.js?vue&type=script&lang=js\"\nexport * from \"./domain_mute_card.js?vue&type=script&lang=js\"\n\nimport \"./domain_mute_card.vue?vue&type=style&index=0&id=2e9027a8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"selectable-list\">\n <div\n v-if=\"items.length > 0\"\n class=\"selectable-list-header\"\n >\n <div class=\"selectable-list-checkbox-wrapper\">\n <Checkbox\n :model-value=\"allSelected\"\n :indeterminate=\"someSelected\"\n @update:model-value=\"toggleAll\"\n >\n {{ $t('selectable_list.select_all') }}\n </Checkbox>\n </div>\n <div class=\"selectable-list-header-actions\">\n <slot\n name=\"header\"\n :selected=\"filteredSelected\"\n />\n </div>\n </div>\n <List\n :items=\"items\"\n :get-key=\"getKey\"\n >\n <template #item=\"{item}\">\n <div\n class=\"selectable-list-item-inner\"\n :class=\"{ 'selectable-list-item-selected-inner': isSelected(item) }\"\n >\n <div class=\"selectable-list-checkbox-wrapper\">\n <Checkbox\n :model-value=\"isSelected(item)\"\n @update:model-value=\"checked => toggle(checked, item)\"\n />\n </div>\n <slot\n name=\"item\"\n :item=\"item\"\n />\n </div>\n </template>\n <template #empty>\n <slot name=\"empty\" />\n </template>\n </List>\n </div>\n</template>\n\n<script src=\"./selectable_list.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.selectable-list {\n &-item-inner {\n display: flex;\n align-items: center;\n\n > * {\n min-width: 0;\n }\n }\n\n &-item-selected-inner {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &-header {\n display: flex;\n align-items: center;\n padding: 0.6em 0;\n border-bottom: 2px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n\n &-actions {\n flex: 1;\n }\n }\n\n &-checkbox-wrapper {\n padding: 0 10px;\n flex: none;\n }\n}\n</style>\n","import List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nconst SelectableList = {\n components: {\n List,\n Checkbox\n },\n props: {\n items: {\n type: Array,\n default: () => []\n },\n getKey: {\n type: Function,\n default: item => item.id\n }\n },\n data () {\n return {\n selected: []\n }\n },\n computed: {\n allKeys () {\n return this.items.map(this.getKey)\n },\n filteredSelected () {\n return this.allKeys.filter(key => this.selected.indexOf(key) !== -1)\n },\n allSelected () {\n return this.filteredSelected.length === this.items.length\n },\n noneSelected () {\n return this.filteredSelected.length === 0\n },\n someSelected () {\n return !this.allSelected && !this.noneSelected\n }\n },\n methods: {\n isSelected (item) {\n return this.filteredSelected.indexOf(this.getKey(item)) !== -1\n },\n toggle (checked, item) {\n const key = this.getKey(item)\n const oldChecked = this.isSelected(key)\n if (checked !== oldChecked) {\n if (checked) {\n this.selected.push(key)\n } else {\n this.selected.splice(this.selected.indexOf(key), 1)\n }\n }\n },\n toggleAll (value) {\n if (value) {\n this.selected = this.allKeys.slice(0)\n } else {\n this.selected = []\n }\n }\n }\n}\n\nexport default SelectableList\n","import { render } from \"./selectable_list.vue?vue&type=template&id=7a94fbea\"\nimport script from \"./selectable_list.js?vue&type=script&lang=js\"\nexport * from \"./selectable_list.js?vue&type=script&lang=js\"\n\nimport \"./selectable_list.vue?vue&type=style&index=0&id=7a94fbea&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_subscription.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst withSubscription = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n childPropName = 'content', // name of the prop to be passed into the wrapped component\n additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n const originalProps = Object.keys(getComponentProps(WrappedComponent))\n const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n return {\n props: [\n ...props,\n 'refresh' // boolean saying to force-fetch data whenever created\n ],\n data () {\n return {\n loading: false,\n error: false\n }\n },\n computed: {\n fetchedData () {\n return select(this.$props, this.$store)\n }\n },\n created () {\n if (this.refresh || isEmpty(this.fetchedData)) {\n this.fetchData()\n }\n },\n methods: {\n fetchData () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then(() => {\n this.loading = false\n })\n .catch(() => {\n this.error = true\n this.loading = false\n })\n }\n }\n },\n render () {\n if (!this.error && !this.loading) {\n const props = {\n ...this.$props,\n [childPropName]: this.fetchedData\n }\n const children = this.$slots\n return (\n <div class=\"with-subscription\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n </div>\n )\n } else {\n return (\n <div class=\"with-subscription-loading\">\n {this.error\n ? <a onClick={this.fetchData} class=\"alert error\">{this.$t('general.generic_error')}</a>\n : <FAIcon spin icon=\"circle-notch\"/>\n }\n </div>\n )\n }\n }\n }\n}\n\nexport default withSubscription\n","import get from 'lodash/get'\nimport map from 'lodash/map'\nimport reject from 'lodash/reject'\nimport Autosuggest from 'src/components/autosuggest/autosuggest.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport BlockCard from 'src/components/block_card/block_card.vue'\nimport MuteCard from 'src/components/mute_card/mute_card.vue'\nimport DomainMuteCard from 'src/components/domain_mute_card/domain_mute_card.vue'\nimport SelectableList from 'src/components/selectable_list/selectable_list.vue'\nimport ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport withSubscription from 'src/components/../hocs/with_subscription/with_subscription'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\n\nconst BlockList = withSubscription({\n fetch: (props, $store) => $store.dispatch('fetchBlocks'),\n select: (props, $store) => get($store.state.users.currentUser, 'blockIds', []),\n childPropName: 'items'\n})(SelectableList)\n\nconst MuteList = withSubscription({\n fetch: (props, $store) => $store.dispatch('fetchMutes'),\n select: (props, $store) => get($store.state.users.currentUser, 'muteIds', []),\n childPropName: 'items'\n})(SelectableList)\n\nconst DomainMuteList = withSubscription({\n fetch: (props, $store) => $store.dispatch('fetchDomainMutes'),\n select: (props, $store) => get($store.state.users.currentUser, 'domainMutes', []),\n childPropName: 'items'\n})(SelectableList)\n\nconst MutesAndBlocks = {\n data () {\n return {\n activeTab: 'profile'\n }\n },\n created () {\n this.$store.dispatch('fetchTokens')\n this.$store.dispatch('getKnownDomains')\n },\n components: {\n TabSwitcher,\n BlockList,\n MuteList,\n DomainMuteList,\n BlockCard,\n MuteCard,\n DomainMuteCard,\n ProgressButton,\n Autosuggest,\n Checkbox\n },\n computed: {\n knownDomains () {\n return this.$store.state.instance.knownDomains\n },\n user () {\n return this.$store.state.users.currentUser\n }\n },\n methods: {\n importFollows (file) {\n return this.$store.state.api.backendInteractor.importFollows({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n importBlocks (file) {\n return this.$store.state.api.backendInteractor.importBlocks({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n generateExportableUsersContent (users) {\n // Get addresses\n return users.map((user) => {\n // check is it's a local user\n if (user && user.is_local) {\n // append the instance address\n // eslint-disable-next-line no-undef\n return user.screen_name + '@' + location.hostname\n }\n return user.screen_name\n }).join('\\n')\n },\n activateTab (tabName) {\n this.activeTab = tabName\n },\n filterUnblockedUsers (userIds) {\n return reject(userIds, (userId) => {\n const relationship = this.$store.getters.relationship(this.userId)\n return relationship.blocking || userId === this.user.id\n })\n },\n filterUnMutedUsers (userIds) {\n return reject(userIds, (userId) => {\n const relationship = this.$store.getters.relationship(this.userId)\n return relationship.muting || userId === this.user.id\n })\n },\n queryUserIds (query) {\n return this.$store.dispatch('searchUsers', { query })\n .then((users) => map(users, 'id'))\n },\n blockUsers (ids) {\n return this.$store.dispatch('blockUsers', ids)\n },\n unblockUsers (ids) {\n return this.$store.dispatch('unblockUsers', ids)\n },\n muteUsers (ids) {\n return this.$store.dispatch('muteUsers', ids)\n },\n unmuteUsers (ids) {\n return this.$store.dispatch('unmuteUsers', ids)\n },\n filterUnMutedDomains (urls) {\n return urls.filter(url => !this.user.domainMutes.includes(url))\n },\n queryKnownDomains (query) {\n return new Promise((resolve, reject) => {\n resolve(this.knownDomains.filter(url => url.toLowerCase().includes(query)))\n })\n },\n unmuteDomains (domains) {\n return this.$store.dispatch('unmuteDomains', domains)\n }\n }\n}\n\nexport default MutesAndBlocks\n","import { render } from \"./mutes_and_blocks_tab.vue?vue&type=template&id=41edf664\"\nimport script from \"./mutes_and_blocks_tab.js?vue&type=script&lang=js\"\nexport * from \"./mutes_and_blocks_tab.js?vue&type=script&lang=js\"\n\nimport \"./mutes_and_blocks_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :label=\"$t('settings.notifications')\">\n <div class=\"setting-item\">\n <h2>{{ $t('settings.notification_setting_filters') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting path=\"serverSide_blockNotificationsFromStrangers\">\n {{ $t('settings.notification_setting_block_from_strangers') }}\n </BooleanSetting>\n </li>\n <li class=\"select-multiple\">\n <span class=\"label\">{{ $t('settings.notification_visibility') }}</span>\n <ul class=\"option-list\">\n <li>\n <BooleanSetting path=\"notificationVisibility.likes\">\n {{ $t('settings.notification_visibility_likes') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.repeats\">\n {{ $t('settings.notification_visibility_repeats') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.follows\">\n {{ $t('settings.notification_visibility_follows') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.mentions\">\n {{ $t('settings.notification_visibility_mentions') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.moves\">\n {{ $t('settings.notification_visibility_moves') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.emojiReactions\">\n {{ $t('settings.notification_visibility_emoji_reactions') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"notificationVisibility.polls\">\n {{ $t('settings.notification_visibility_polls') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n\n <div\n v-if=\"expertLevel > 0\"\n class=\"setting-item\"\n >\n <h2>{{ $t('settings.notification_setting_privacy') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting\n path=\"webPushNotifications\"\n expert=\"1\"\n >\n {{ $t('settings.enable_web_push_notifications') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"serverSide_webPushHideContents\"\n expert=\"1\"\n >\n {{ $t('settings.notification_setting_hide_notification_contents') }}\n </BooleanSetting>\n </li>\n </ul>\n </div>\n <div class=\"setting-item\">\n <p>{{ $t('settings.notification_mutes') }}</p>\n <p>{{ $t('settings.notification_blocks') }}</p>\n </div>\n </div>\n</template>\n\n<script src=\"./notifications_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","<template>\n <label\n v-if=\"matchesExpertLevel\"\n class=\"BooleanSetting\"\n >\n <Checkbox\n :model-value=\"state\"\n :disabled=\"disabled\"\n @update:modelValue=\"update\"\n >\n <span\n v-if=\"!!$slots.default\"\n class=\"label\"\n >\n <slot />\n </span>\n {{ ' ' }}\n <ModifiedIndicator\n :changed=\"isChanged\"\n :onclick=\"reset\"\n />\n <ServerSideIndicator :server-side=\"isServerSide\" />\n </Checkbox>\n </label>\n</template>\n\n<script src=\"./boolean_setting.js\"></script>\n","<template>\n <span\n v-if=\"changed\"\n class=\"ModifiedIndicator\"\n >\n <Popover\n trigger=\"hover\"\n :trigger-attrs=\"{ 'aria-label': $t('settings.setting_changed') }\"\n >\n <template #trigger>\n &nbsp;\n <FAIcon\n icon=\"wrench\"\n />\n </template>\n <template #content>\n <div class=\"modified-tooltip\">\n {{ $t('settings.setting_changed') }}\n </div>\n </template>\n </Popover>\n </span>\n</template>\n\n<script>\nimport Popover from 'src/components/popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faWrench\n)\n\nexport default {\n components: { Popover },\n props: ['changed']\n}\n</script>\n\n<style lang=\"scss\">\n.ModifiedIndicator {\n display: inline-block;\n position: relative;\n}\n\n.modified-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n</style>\n","import { render } from \"./modified_indicator.vue?vue&type=template&id=b12efb1c\"\nimport script from \"./modified_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./modified_indicator.vue?vue&type=script&lang=js\"\n\nimport \"./modified_indicator.vue?vue&type=style&index=0&id=b12efb1c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n v-if=\"serverSide\"\n class=\"ServerSideIndicator\"\n >\n <Popover\n trigger=\"hover\"\n >\n <template #trigger>\n &nbsp;\n <FAIcon\n icon=\"server\"\n :aria-label=\"$t('settings.setting_server_side')\"\n />\n </template>\n <template #content>\n <div class=\"serverside-tooltip\">\n {{ $t('settings.setting_server_side') }}\n </div>\n </template>\n </Popover>\n </span>\n</template>\n\n<script>\nimport Popover from 'src/components/popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faServer } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faServer\n)\n\nexport default {\n components: { Popover },\n props: ['serverSide']\n}\n</script>\n\n<style lang=\"scss\">\n.ServerSideIndicator {\n display: inline-block;\n position: relative;\n}\n\n.serverside-tooltip {\n margin: 0.5em 1em;\n min-width: 10em;\n text-align: center;\n}\n</style>\n","import { render } from \"./server_side_indicator.vue?vue&type=template&id=0363e54b\"\nimport script from \"./server_side_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./server_side_indicator.vue?vue&type=script&lang=js\"\n\nimport \"./server_side_indicator.vue?vue&type=style&index=0&id=0363e54b&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { get, set } from 'lodash'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport ModifiedIndicator from './modified_indicator.vue'\nimport ServerSideIndicator from './server_side_indicator.vue'\nexport default {\n components: {\n Checkbox,\n ModifiedIndicator,\n ServerSideIndicator\n },\n props: [\n 'path',\n 'disabled',\n 'expert'\n ],\n computed: {\n pathDefault () {\n const [firstSegment, ...rest] = this.path.split('.')\n return [firstSegment + 'DefaultValue', ...rest].join('.')\n },\n state () {\n const value = get(this.$parent, this.path)\n if (value === undefined) {\n return this.defaultState\n } else {\n return value\n }\n },\n defaultState () {\n return get(this.$parent, this.pathDefault)\n },\n isServerSide () {\n return this.path.startsWith('serverSide_')\n },\n isChanged () {\n return !this.path.startsWith('serverSide_') && this.state !== this.defaultState\n },\n matchesExpertLevel () {\n return (this.expert || 0) <= this.$parent.expertLevel\n }\n },\n methods: {\n update (e) {\n const [firstSegment, ...rest] = this.path.split('.')\n set(this.$parent, this.path, e)\n // Updating nested properties does not trigger update on its parent.\n // probably still not as reliable, but works for depth=1 at least\n if (rest.length > 0) {\n set(this.$parent, firstSegment, { ...get(this.$parent, firstSegment) })\n }\n },\n reset () {\n set(this.$parent, this.path, this.defaultState)\n }\n }\n}\n","import { render } from \"./boolean_setting.vue?vue&type=template&id=2b40af98\"\nimport script from \"./boolean_setting.js?vue&type=script&lang=js\"\nexport * from \"./boolean_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { defaultState as configDefaultState } from 'src/modules/config.js'\nimport { defaultState as serverSideConfigDefaultState } from 'src/modules/serverSideConfig.js'\n\nconst SharedComputedObject = () => ({\n user () {\n return this.$store.state.users.currentUser\n },\n // Getting values for default properties\n ...Object.keys(configDefaultState)\n .map(key => [\n key + 'DefaultValue',\n function () {\n return this.$store.getters.defaultConfig[key]\n }\n ])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n // Generating computed values for vuex properties\n ...Object.keys(configDefaultState)\n .map(key => [key, {\n get () { return this.$store.getters.mergedConfig[key] },\n set (value) {\n this.$store.dispatch('setOption', { name: key, value })\n }\n }])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n ...Object.keys(serverSideConfigDefaultState)\n .map(key => ['serverSide_' + key, {\n get () { return this.$store.state.serverSideConfig[key] },\n set (value) {\n this.$store.dispatch('setServerSideOption', { name: key, value })\n }\n }])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n // Special cases (need to transform values or perform actions first)\n useStreamingApi: {\n get () { return this.$store.getters.mergedConfig.useStreamingApi },\n set (value) {\n const promise = value\n ? this.$store.dispatch('enableMastoSockets')\n : this.$store.dispatch('disableMastoSockets')\n\n promise.then(() => {\n this.$store.dispatch('setOption', { name: 'useStreamingApi', value })\n }).catch((e) => {\n console.error('Failed starting MastoAPI Streaming socket', e)\n this.$store.dispatch('disableMastoSockets')\n this.$store.dispatch('setOption', { name: 'useStreamingApi', value: false })\n })\n }\n }\n})\n\nexport default SharedComputedObject\n","import BooleanSetting from '../helpers/boolean_setting.vue'\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\n\nconst NotificationsTab = {\n data () {\n return {\n activeTab: 'profile',\n notificationSettings: this.$store.state.users.currentUser.notification_settings,\n newDomainToMute: ''\n }\n },\n components: {\n BooleanSetting\n },\n computed: {\n user () {\n return this.$store.state.users.currentUser\n },\n ...SharedComputedObject()\n },\n methods: {\n updateNotificationSettings () {\n this.$store.state.api.backendInteractor\n .updateNotificationSettings({ settings: this.notificationSettings })\n }\n }\n}\n\nexport default NotificationsTab\n","import { render } from \"./notifications_tab.vue?vue&type=template&id=e4b944ee\"\nimport script from \"./notifications_tab.js?vue&type=script&lang=js\"\nexport * from \"./notifications_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :label=\"$t('settings.filtering')\">\n <div class=\"setting-item\">\n <h2>{{ $t('settings.posts') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting path=\"hideFilteredStatuses\">\n {{ $t('settings.hide_filtered_statuses') }}\n </BooleanSetting>\n <ul\n class=\"setting-list suboptions\"\n :class=\"[{disabled: !streaming}]\"\n >\n <li>\n <BooleanSetting\n :disabled=\"hideFilteredStatuses\"\n path=\"hideWordFilteredPosts\"\n >\n {{ $t('settings.hide_wordfiltered_statuses') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n v-if=\"user\"\n :disabled=\"hideFilteredStatuses\"\n path=\"hideMutedThreads\"\n >\n {{ $t('settings.hide_muted_threads') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n v-if=\"user\"\n :disabled=\"hideFilteredStatuses\"\n path=\"hideMutedPosts\"\n >\n {{ $t('settings.hide_muted_posts') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n <li>\n <BooleanSetting path=\"muteBotStatuses\">\n {{ $t('settings.mute_bot_posts') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"hidePostStats\">\n {{ $t('settings.hide_post_stats') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"hideBotIndication\">\n {{ $t('settings.hide_bot_indication') }}\n </BooleanSetting>\n </li>\n <ChoiceSetting\n v-if=\"user\"\n id=\"replyVisibility\"\n path=\"replyVisibility\"\n :options=\"replyVisibilityOptions\"\n >\n {{ $t('settings.replies_in_timeline') }}\n </ChoiceSetting>\n <li>\n <h3>{{ $t('settings.wordfilter') }}</h3>\n <textarea\n id=\"muteWords\"\n v-model=\"muteWordsString\"\n class=\"resize-height\"\n />\n <div>{{ $t('settings.filtering_explanation') }}</div>\n </li>\n <h3>{{ $t('settings.attachments') }}</h3>\n <li>\n <IntegerSetting\n path=\"maxThumbnails\"\n expert=\"1\"\n :min=\"0\"\n >\n {{ $t('settings.max_thumbnails') }}\n </IntegerSetting>\n </li>\n <li>\n <BooleanSetting path=\"hideAttachments\">\n {{ $t('settings.hide_attachments_in_tl') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"hideAttachmentsInConv\">\n {{ $t('settings.hide_attachments_in_convo') }}\n </BooleanSetting>\n </li>\n </ul>\n </div>\n <div\n v-if=\"expertLevel > 0\"\n class=\"setting-item\"\n >\n <h2>{{ $t('settings.user_profiles') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting path=\"hideUserStats\">\n {{ $t('settings.hide_user_stats') }}\n </BooleanSetting>\n </li>\n </ul>\n </div>\n </div>\n</template>\n<script src=\"./filtering_tab.js\"></script>\n","<template>\n <label\n v-if=\"matchesExpertLevel\"\n class=\"ChoiceSetting\"\n >\n <slot />\n {{ ' ' }}\n <Select\n :model-value=\"state\"\n :disabled=\"disabled\"\n @update:modelValue=\"update\"\n >\n <option\n v-for=\"option in options\"\n :key=\"option.key\"\n :value=\"option.value\"\n >\n {{ option.label }}\n {{ option.value === defaultState ? $t('settings.instance_default_simple') : '' }}\n </option>\n </Select>\n <ModifiedIndicator\n :changed=\"isChanged\"\n :onclick=\"reset\"\n />\n <ServerSideIndicator :server-side=\"isServerSide\" />\n </label>\n</template>\n\n<script src=\"./choice_setting.js\"></script>\n","import { get, set } from 'lodash'\nimport Select from 'src/components/select/select.vue'\nimport ModifiedIndicator from './modified_indicator.vue'\nimport ServerSideIndicator from './server_side_indicator.vue'\nexport default {\n components: {\n Select,\n ModifiedIndicator,\n ServerSideIndicator\n },\n props: [\n 'path',\n 'disabled',\n 'options',\n 'expert'\n ],\n computed: {\n pathDefault () {\n const [firstSegment, ...rest] = this.path.split('.')\n return [firstSegment + 'DefaultValue', ...rest].join('.')\n },\n state () {\n const value = get(this.$parent, this.path)\n if (value === undefined) {\n return this.defaultState\n } else {\n return value\n }\n },\n defaultState () {\n return get(this.$parent, this.pathDefault)\n },\n isServerSide () {\n return this.path.startsWith('serverSide_')\n },\n isChanged () {\n return !this.path.startsWith('serverSide_') && this.state !== this.defaultState\n },\n matchesExpertLevel () {\n return (this.expert || 0) <= this.$parent.expertLevel\n }\n },\n methods: {\n update (e) {\n set(this.$parent, this.path, e)\n },\n reset () {\n set(this.$parent, this.path, this.defaultState)\n }\n }\n}\n","import { render } from \"./choice_setting.vue?vue&type=template&id=0d10f82a\"\nimport script from \"./choice_setting.js?vue&type=script&lang=js\"\nexport * from \"./choice_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n v-if=\"matchesExpertLevel\"\n class=\"IntegerSetting\"\n >\n <label :for=\"path\">\n <slot />\n </label>\n <input\n :id=\"path\"\n class=\"number-input\"\n type=\"number\"\n step=\"1\"\n :disabled=\"disabled\"\n :min=\"min || 0\"\n :value=\"state\"\n @change=\"update\"\n >\n {{ ' ' }}\n <ModifiedIndicator\n :changed=\"isChanged\"\n :onclick=\"reset\"\n />\n </span>\n</template>\n\n<script src=\"./integer_setting.js\"></script>\n","import { get, set } from 'lodash'\nimport ModifiedIndicator from './modified_indicator.vue'\nexport default {\n components: {\n ModifiedIndicator\n },\n props: {\n path: String,\n disabled: Boolean,\n min: Number,\n expert: [Number, String]\n },\n computed: {\n pathDefault () {\n const [firstSegment, ...rest] = this.path.split('.')\n return [firstSegment + 'DefaultValue', ...rest].join('.')\n },\n state () {\n const value = get(this.$parent, this.path)\n if (value === undefined) {\n return this.defaultState\n } else {\n return value\n }\n },\n defaultState () {\n return get(this.$parent, this.pathDefault)\n },\n isChanged () {\n return this.state !== this.defaultState\n },\n matchesExpertLevel () {\n return (this.expert || 0) <= this.$parent.expertLevel\n }\n },\n methods: {\n update (e) {\n set(this.$parent, this.path, parseInt(e.target.value))\n },\n reset () {\n set(this.$parent, this.path, this.defaultState)\n }\n }\n}\n","import { render } from \"./integer_setting.vue?vue&type=template&id=0490fdac\"\nimport script from \"./integer_setting.js?vue&type=script&lang=js\"\nexport * from \"./integer_setting.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { filter, trim, debounce } from 'lodash'\nimport BooleanSetting from '../helpers/boolean_setting.vue'\nimport ChoiceSetting from '../helpers/choice_setting.vue'\nimport IntegerSetting from '../helpers/integer_setting.vue'\n\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\n\nconst FilteringTab = {\n data () {\n return {\n muteWordsStringLocal: this.$store.getters.mergedConfig.muteWords.join('\\n'),\n replyVisibilityOptions: ['all', 'following', 'self'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.reply_visibility_${mode}`)\n }))\n }\n },\n components: {\n BooleanSetting,\n ChoiceSetting,\n IntegerSetting\n },\n computed: {\n ...SharedComputedObject(),\n muteWordsString: {\n get () {\n return this.muteWordsStringLocal\n },\n set (value) {\n this.muteWordsStringLocal = value\n this.debouncedSetMuteWords(value)\n }\n },\n debouncedSetMuteWords () {\n return debounce((value) => {\n this.$store.dispatch('setOption', {\n name: 'muteWords',\n value: filter(value.split('\\n'), (word) => trim(word).length > 0)\n })\n }, 1000)\n }\n },\n // Updating nested properties\n watch: {\n replyVisibility () {\n this.$store.dispatch('queueFlushAll')\n }\n }\n}\n\nexport default FilteringTab\n","import { render } from \"./filtering_tab.vue?vue&type=template&id=19e8a013\"\nimport script from \"./filtering_tab.js?vue&type=script&lang=js\"\nexport * from \"./filtering_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :label=\"$t('settings.security_tab')\">\n <div class=\"setting-item\">\n <h2>{{ $t('settings.change_email') }}</h2>\n <div>\n <p>{{ $t('settings.new_email') }}</p>\n <input\n v-model=\"newEmail\"\n type=\"email\"\n autocomplete=\"email\"\n >\n </div>\n <div>\n <p>{{ $t('settings.current_password') }}</p>\n <input\n v-model=\"changeEmailPassword\"\n type=\"password\"\n autocomplete=\"current-password\"\n >\n </div>\n <button\n class=\"btn button-default\"\n @click=\"changeEmail\"\n >\n {{ $t('settings.save') }}\n </button>\n <p v-if=\"changedEmail\">\n {{ $t('settings.changed_email') }}\n </p>\n <template v-if=\"changeEmailError !== false\">\n <p>{{ $t('settings.change_email_error') }}</p>\n <p>{{ changeEmailError }}</p>\n </template>\n </div>\n\n <div class=\"setting-item\">\n <h2>{{ $t('settings.change_password') }}</h2>\n <div>\n <p>{{ $t('settings.current_password') }}</p>\n <input\n v-model=\"changePasswordInputs[0]\"\n type=\"password\"\n >\n </div>\n <div>\n <p>{{ $t('settings.new_password') }}</p>\n <input\n v-model=\"changePasswordInputs[1]\"\n type=\"password\"\n >\n </div>\n <div>\n <p>{{ $t('settings.confirm_new_password') }}</p>\n <input\n v-model=\"changePasswordInputs[2]\"\n type=\"password\"\n >\n </div>\n <button\n class=\"btn button-default\"\n @click=\"changePassword\"\n >\n {{ $t('settings.save') }}\n </button>\n <p v-if=\"changedPassword\">\n {{ $t('settings.changed_password') }}\n </p>\n <p v-else-if=\"changePasswordError !== false\">\n {{ $t('settings.change_password_error') }}\n </p>\n <p v-if=\"changePasswordError\">\n {{ changePasswordError }}\n </p>\n </div>\n\n <div class=\"setting-item\">\n <h2>{{ $t('settings.oauth_tokens') }}</h2>\n <table class=\"oauth-tokens\">\n <thead>\n <tr>\n <th>{{ $t('settings.app_name') }}</th>\n <th>{{ $t('settings.valid_until') }}</th>\n <th />\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"oauthToken in oauthTokens\"\n :key=\"oauthToken.id\"\n >\n <td>{{ oauthToken.appName }}</td>\n <td>{{ oauthToken.validUntil }}</td>\n <td class=\"actions\">\n <button\n class=\"btn button-default\"\n @click=\"revokeToken(oauthToken.id)\"\n >\n {{ $t('settings.revoke_token') }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <mfa />\n\n <div class=\"setting-item\">\n <h2>{{ $t('settings.account_alias') }}</h2>\n <table>\n <thead>\n <tr>\n <th>{{ $t('settings.account_alias_table_head') }}</th>\n <th />\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"alias in aliases\"\n :key=\"alias\"\n >\n <td>{{ alias }}</td>\n <td class=\"actions\">\n <button\n class=\"btn button-default\"\n @click=\"removeAlias(alias)\"\n >\n {{ $t('settings.remove_alias') }}\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n <div\n v-if=\"listAliasesError\"\n class=\"alert error\"\n >\n {{ $t('settings.list_aliases_error', { error }) }}\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n :title=\"$t('settings.hide_list_aliases_error_action')\"\n @click=\"listAliasesError = false\"\n />\n </div>\n <div>\n <i18n\n path=\"settings.new_alias_target\"\n tag=\"p\"\n >\n <code\n place=\"example\"\n >\n foo@example.org\n </code>\n </i18n>\n <input\n v-model=\"addAliasTarget\"\n >\n </div>\n <button\n class=\"btn button-default\"\n @click=\"addAlias\"\n >\n {{ $t('settings.save') }}\n </button>\n <p v-if=\"addedAlias\">\n {{ $t('settings.added_alias') }}\n </p>\n <template v-if=\"addAliasError !== false\">\n <p>{{ $t('settings.add_alias_error', { error: addAliasError }) }}</p>\n </template>\n </div>\n\n <div class=\"setting-item\">\n <h2>{{ $t('settings.move_account') }}</h2>\n <p>{{ $t('settings.move_account_notes') }}</p>\n <div>\n <i18n\n path=\"settings.move_account_target\"\n tag=\"p\"\n >\n <code\n place=\"example\"\n >\n foo@example.org\n </code>\n </i18n>\n <input\n v-model=\"moveAccountTarget\"\n >\n </div>\n <div>\n <p>{{ $t('settings.current_password') }}</p>\n <input\n v-model=\"moveAccountPassword\"\n type=\"password\"\n autocomplete=\"current-password\"\n >\n </div>\n <button\n class=\"btn button-default\"\n @click=\"moveAccount\"\n >\n {{ $t('settings.save') }}\n </button>\n <p v-if=\"movedAccount\">\n {{ $t('settings.moved_account') }}\n </p>\n <template v-if=\"moveAccountError !== false\">\n <p>{{ $t('settings.move_account_error', { error: moveAccountError }) }}</p>\n </template>\n </div>\n\n <div class=\"setting-item\">\n <h2>{{ $t('settings.delete_account') }}</h2>\n <p v-if=\"!deletingAccount\">\n {{ $t('settings.delete_account_description') }}\n </p>\n <div v-if=\"deletingAccount\">\n <p>{{ $t('settings.delete_account_instructions') }}</p>\n <p>{{ $t('login.password') }}</p>\n <input\n v-model=\"deleteAccountConfirmPasswordInput\"\n type=\"password\"\n >\n <button\n class=\"btn button-default\"\n @click=\"deleteAccount\"\n >\n {{ $t('settings.delete_account') }}\n </button>\n </div>\n <p v-if=\"deleteAccountError !== false\">\n {{ $t('settings.delete_account_error') }}\n </p>\n <p v-if=\"deleteAccountError\">\n {{ deleteAccountError }}\n </p>\n <button\n v-if=\"!deletingAccount\"\n class=\"btn button-default\"\n @click=\"confirmDelete\"\n >\n {{ $t('settings.delete_account') }}\n </button>\n </div>\n </div>\n</template>\n\n<script src=\"./security_tab.js\"></script>\n<!-- <style lang=\"scss\" src=\"./profile.scss\"></style> -->\n","<template>\n <div\n v-if=\"readyInit && settings.available\"\n class=\"setting-item mfa-settings\"\n >\n <div class=\"mfa-heading\">\n <h2>{{ $t('settings.mfa.title') }}</h2>\n </div>\n\n <div>\n <div\n v-if=\"!setupInProgress\"\n class=\"setting-item\"\n >\n <!-- Enabled methods -->\n <h3>{{ $t('settings.mfa.authentication_methods') }}</h3>\n <totp-item\n :settings=\"settings\"\n @deactivate=\"fetchSettings\"\n @activate=\"activateOTP\"\n />\n <br>\n\n <div v-if=\"settings.enabled\">\n <!-- backup codes block-->\n <recovery-codes\n v-if=\"!confirmNewBackupCodes\"\n :backup-codes=\"backupCodes\"\n />\n <button\n v-if=\"!confirmNewBackupCodes\"\n class=\"btn button-default\"\n @click=\"getBackupCodes\"\n >\n {{ $t('settings.mfa.generate_new_recovery_codes') }}\n </button>\n\n <div v-if=\"confirmNewBackupCodes\">\n <confirm\n :disabled=\"backupCodes.inProgress\"\n @confirm=\"confirmBackupCodes\"\n @cancel=\"cancelBackupCodes\"\n >\n <p class=\"warning\">\n {{ $t('settings.mfa.warning_of_generate_new_codes') }}\n </p>\n </confirm>\n </div>\n </div>\n </div>\n\n <div v-if=\"setupInProgress\">\n <!-- setup block-->\n\n <h3>{{ $t('settings.mfa.setup_otp') }}</h3>\n\n <recovery-codes\n v-if=\"!setupOTPInProgress\"\n :backup-codes=\"backupCodes\"\n />\n\n <button\n v-if=\"canSetupOTP\"\n class=\"btn button-default\"\n @click=\"cancelSetup\"\n >\n {{ $t('general.cancel') }}\n </button>\n\n <button\n v-if=\"canSetupOTP\"\n class=\"btn button-default\"\n @click=\"setupOTP\"\n >\n {{ $t('settings.mfa.setup_otp') }}\n </button>\n\n <template v-if=\"setupOTPInProgress\">\n <i v-if=\"prepareOTP\">{{ $t('settings.mfa.wait_pre_setup_otp') }}</i>\n\n <div v-if=\"confirmOTP\">\n <div class=\"setup-otp\">\n <div class=\"qr-code\">\n <h4>{{ $t('settings.mfa.scan.title') }}</h4>\n <p>{{ $t('settings.mfa.scan.desc') }}</p>\n <qrcode\n :value=\"otpSettings.provisioning_uri\"\n :options=\"{ width: 200 }\"\n />\n <p>\n {{ $t('settings.mfa.scan.secret_code') }}:\n {{ otpSettings.key }}\n </p>\n </div>\n\n <div class=\"verify\">\n <h4>{{ $t('general.verify') }}</h4>\n <p>{{ $t('settings.mfa.verify.desc') }}</p>\n <input\n v-model=\"otpConfirmToken\"\n type=\"text\"\n >\n\n <p>{{ $t('settings.enter_current_password_to_confirm') }}:</p>\n <input\n v-model=\"currentPassword\"\n type=\"password\"\n >\n <div class=\"confirm-otp-actions\">\n <button\n class=\"btn button-default\"\n @click=\"doConfirmOTP\"\n >\n {{ $t('settings.mfa.confirm_and_enable') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"cancelSetup\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ error }}\n </div>\n </div>\n </div>\n </div>\n </template>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./mfa.js\"></script>\n<style lang=\"scss\">\n@import \"../../../../variables\";\n\n.mfa-settings {\n .mfa-heading,\n .method-item {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n align-items: baseline;\n }\n\n .warning {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n .setup-otp {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n\n .qr-code {\n flex: 1;\n padding-right: 10px;\n }\n .verify { flex: 1; }\n .error { margin: 4px 0 0; }\n\n .confirm-otp-actions {\n button {\n width: 15em;\n margin-top: 5px;\n }\n }\n }\n}\n</style>\n","<template>\n <div class=\"mfa-backup-codes\">\n <h4 v-if=\"displayTitle\">\n {{ $t('settings.mfa.recovery_codes') }}\n </h4>\n <i v-if=\"inProgress\">{{ $t('settings.mfa.waiting_a_recovery_codes') }}</i>\n <template v-if=\"ready\">\n <p class=\"alert warning\">\n {{ $t('settings.mfa.recovery_codes_warning') }}\n </p>\n <ul class=\"backup-codes\">\n <li\n v-for=\"code in backupCodes.codes\"\n :key=\"code\"\n >\n {{ code }}\n </li>\n </ul>\n </template>\n </div>\n</template>\n<script src=\"./mfa_backup_codes.js\"></script>\n<style lang=\"scss\">\n@import \"../../../../variables\";\n\n.mfa-backup-codes {\n .warning {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n .backup-codes {\n font-family: var(--postCodeFont, monospace);\n }\n}\n</style>\n","export default {\n props: {\n backupCodes: {\n type: Object,\n default: () => ({\n inProgress: false,\n codes: []\n })\n }\n },\n data: () => ({}),\n computed: {\n inProgress () { return this.backupCodes.inProgress },\n ready () { return this.backupCodes.codes.length > 0 },\n displayTitle () { return this.inProgress || this.ready }\n }\n}\n","import { render } from \"./mfa_backup_codes.vue?vue&type=template&id=c00de0a2\"\nimport script from \"./mfa_backup_codes.js?vue&type=script&lang=js\"\nexport * from \"./mfa_backup_codes.js?vue&type=script&lang=js\"\n\nimport \"./mfa_backup_codes.vue?vue&type=style&index=0&id=c00de0a2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <div class=\"method-item\">\n <strong>{{ $t('settings.mfa.otp') }}</strong>\n <button\n v-if=\"!isActivated\"\n class=\"btn button-default\"\n @click=\"doActivate\"\n >\n {{ $t('general.enable') }}\n </button>\n\n <button\n v-if=\"isActivated\"\n class=\"btn button-default\"\n :disabled=\"deactivate\"\n @click=\"doDeactivate\"\n >\n {{ $t('general.disable') }}\n </button>\n </div>\n\n <confirm\n v-if=\"deactivate\"\n :disabled=\"inProgress\"\n @confirm=\"confirmDeactivate\"\n @cancel=\"cancelDeactivate\"\n >\n {{ $t('settings.enter_current_password_to_confirm') }}:\n <input\n v-model=\"currentPassword\"\n type=\"password\"\n >\n </confirm>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ error }}\n </div>\n </div>\n</template>\n<script src=\"./mfa_totp.js\"></script>\n","const Confirm = {\n props: ['disabled'],\n data: () => ({}),\n methods: {\n confirm () { this.$emit('confirm') },\n cancel () { this.$emit('cancel') }\n }\n}\nexport default Confirm\n","import { render } from \"./confirm.vue?vue&type=template&id=232a09eb\"\nimport script from \"./confirm.js?vue&type=script&lang=js\"\nexport * from \"./confirm.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <slot />\n <button\n class=\"btn button-default\"\n :disabled=\"disabled\"\n @click=\"confirm\"\n >\n {{ $t('general.confirm') }}\n </button>\n <button\n class=\"btn button-default\"\n :disabled=\"disabled\"\n @click=\"cancel\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n</template>\n\n<script src=\"./confirm.js\">\n</script>\n","import Confirm from './confirm.vue'\nimport { mapState } from 'vuex'\n\nexport default {\n props: ['settings'],\n data: () => ({\n error: false,\n currentPassword: '',\n deactivate: false,\n inProgress: false // progress peform request to disable otp method\n }),\n components: {\n confirm: Confirm\n },\n computed: {\n isActivated () {\n return this.settings.totp\n },\n ...mapState({\n backendInteractor: (state) => state.api.backendInteractor\n })\n },\n methods: {\n doActivate () {\n this.$emit('activate')\n },\n cancelDeactivate () { this.deactivate = false },\n doDeactivate () {\n this.error = null\n this.deactivate = true\n },\n confirmDeactivate () { // confirm deactivate TOTP method\n this.error = null\n this.inProgress = true\n this.backendInteractor.mfaDisableOTP({\n password: this.currentPassword\n })\n .then((res) => {\n this.inProgress = false\n if (res.error) {\n this.error = res.error\n return\n }\n this.deactivate = false\n this.$emit('deactivate')\n })\n }\n }\n}\n","import RecoveryCodes from './mfa_backup_codes.vue'\nimport TOTP from './mfa_totp.vue'\nimport Confirm from './confirm.vue'\nimport VueQrcode from '@chenfengyuan/vue-qrcode'\nimport { mapState } from 'vuex'\n\nconst Mfa = {\n data: () => ({\n settings: { // current settings of MFA\n available: false,\n enabled: false,\n totp: false\n },\n setupState: { // setup mfa\n state: '', // state of setup. '' -> 'getBackupCodes' -> 'setupOTP' -> 'complete'\n setupOTPState: '' // state of setup otp. '' -> 'prepare' -> 'confirm' -> 'complete'\n },\n backupCodes: {\n getNewCodes: false,\n inProgress: false, // progress of fetch codes\n codes: []\n },\n otpSettings: { // pre-setup setting of OTP. secret key, qrcode url.\n provisioning_uri: '',\n key: ''\n },\n currentPassword: null,\n otpConfirmToken: null,\n error: null,\n readyInit: false\n }),\n components: {\n 'recovery-codes': RecoveryCodes,\n 'totp-item': TOTP,\n qrcode: VueQrcode,\n confirm: Confirm\n },\n computed: {\n canSetupOTP () {\n return (\n (this.setupInProgress && this.backupCodesPrepared) ||\n this.settings.enabled\n ) && !this.settings.totp && !this.setupOTPInProgress\n },\n setupInProgress () {\n return this.setupState.state !== '' && this.setupState.state !== 'complete'\n },\n setupOTPInProgress () {\n return this.setupState.state === 'setupOTP' && !this.completedOTP\n },\n prepareOTP () {\n return this.setupState.setupOTPState === 'prepare'\n },\n confirmOTP () {\n return this.setupState.setupOTPState === 'confirm'\n },\n completedOTP () {\n return this.setupState.setupOTPState === 'completed'\n },\n backupCodesPrepared () {\n return !this.backupCodes.inProgress && this.backupCodes.codes.length > 0\n },\n confirmNewBackupCodes () {\n return this.backupCodes.getNewCodes\n },\n ...mapState({\n backendInteractor: (state) => state.api.backendInteractor\n })\n },\n\n methods: {\n activateOTP () {\n if (!this.settings.enabled) {\n this.setupState.state = 'getBackupcodes'\n this.fetchBackupCodes()\n }\n },\n fetchBackupCodes () {\n this.backupCodes.inProgress = true\n this.backupCodes.codes = []\n\n return this.backendInteractor.generateMfaBackupCodes()\n .then((res) => {\n this.backupCodes.codes = res.codes\n this.backupCodes.inProgress = false\n })\n },\n getBackupCodes () { // get a new backup codes\n this.backupCodes.getNewCodes = true\n },\n confirmBackupCodes () { // confirm getting new backup codes\n this.fetchBackupCodes().then((res) => {\n this.backupCodes.getNewCodes = false\n })\n },\n cancelBackupCodes () { // cancel confirm form of new backup codes\n this.backupCodes.getNewCodes = false\n },\n\n // Setup OTP\n setupOTP () { // prepare setup OTP\n this.setupState.state = 'setupOTP'\n this.setupState.setupOTPState = 'prepare'\n this.backendInteractor.mfaSetupOTP()\n .then((res) => {\n this.otpSettings = res\n this.setupState.setupOTPState = 'confirm'\n })\n },\n doConfirmOTP () { // handler confirm enable OTP\n this.error = null\n this.backendInteractor.mfaConfirmOTP({\n token: this.otpConfirmToken,\n password: this.currentPassword\n })\n .then((res) => {\n if (res.error) {\n this.error = res.error\n return\n }\n this.completeSetup()\n })\n },\n\n completeSetup () {\n this.setupState.setupOTPState = 'complete'\n this.setupState.state = 'complete'\n this.currentPassword = null\n this.error = null\n this.fetchSettings()\n },\n cancelSetup () { // cancel setup\n this.setupState.setupOTPState = ''\n this.setupState.state = ''\n this.currentPassword = null\n this.error = null\n },\n // end Setup OTP\n\n // fetch settings from server\n async fetchSettings () {\n const result = await this.backendInteractor.settingsMFA()\n if (result.error) return\n this.settings = result.settings\n this.settings.available = true\n return result\n }\n },\n mounted () {\n this.fetchSettings().then(() => {\n this.readyInit = true\n })\n }\n}\nexport default Mfa\n","import { render } from \"./mfa_totp.vue?vue&type=template&id=5466d3a1\"\nimport script from \"./mfa_totp.js?vue&type=script&lang=js\"\nexport * from \"./mfa_totp.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./mfa.vue?vue&type=template&id=7a1ef7d0\"\nimport script from \"./mfa.js?vue&type=script&lang=js\"\nexport * from \"./mfa.js?vue&type=script&lang=js\"\n\nimport \"./mfa.vue?vue&type=style&index=0&id=7a1ef7d0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport Mfa from './mfa.vue'\nimport localeService from 'src/services/locale/locale.service.js'\n\nconst SecurityTab = {\n data () {\n return {\n newEmail: '',\n changeEmailError: false,\n changeEmailPassword: '',\n changedEmail: false,\n deletingAccount: false,\n deleteAccountConfirmPasswordInput: '',\n deleteAccountError: false,\n changePasswordInputs: ['', '', ''],\n changedPassword: false,\n changePasswordError: false,\n moveAccountTarget: '',\n moveAccountPassword: '',\n movedAccount: false,\n moveAccountError: false,\n aliases: [],\n listAliasesError: false,\n addAliasTarget: '',\n addedAlias: false,\n addAliasError: false\n }\n },\n created () {\n this.$store.dispatch('fetchTokens')\n this.fetchAliases()\n },\n components: {\n ProgressButton,\n Mfa,\n Checkbox\n },\n computed: {\n user () {\n return this.$store.state.users.currentUser\n },\n pleromaBackend () {\n return this.$store.state.instance.pleromaBackend\n },\n oauthTokens () {\n return this.$store.state.oauthTokens.tokens.map(oauthToken => {\n return {\n id: oauthToken.id,\n appName: oauthToken.app_name,\n validUntil: new Date(oauthToken.valid_until).toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale))\n }\n })\n }\n },\n methods: {\n confirmDelete () {\n this.deletingAccount = true\n },\n deleteAccount () {\n this.$store.state.api.backendInteractor.deleteAccount({ password: this.deleteAccountConfirmPasswordInput })\n .then((res) => {\n if (res.status === 'success') {\n this.$store.dispatch('logout')\n this.$router.push({ name: 'root' })\n } else {\n this.deleteAccountError = res.error\n }\n })\n },\n changePassword () {\n const params = {\n password: this.changePasswordInputs[0],\n newPassword: this.changePasswordInputs[1],\n newPasswordConfirmation: this.changePasswordInputs[2]\n }\n this.$store.state.api.backendInteractor.changePassword(params)\n .then((res) => {\n if (res.status === 'success') {\n this.changedPassword = true\n this.changePasswordError = false\n this.logout()\n } else {\n this.changedPassword = false\n this.changePasswordError = res.error\n }\n })\n },\n changeEmail () {\n const params = {\n email: this.newEmail,\n password: this.changeEmailPassword\n }\n this.$store.state.api.backendInteractor.changeEmail(params)\n .then((res) => {\n if (res.status === 'success') {\n this.changedEmail = true\n this.changeEmailError = false\n } else {\n this.changedEmail = false\n this.changeEmailError = res.error\n }\n })\n },\n moveAccount () {\n const params = {\n targetAccount: this.moveAccountTarget,\n password: this.moveAccountPassword\n }\n this.$store.state.api.backendInteractor.moveAccount(params)\n .then((res) => {\n if (res.status === 'success') {\n this.movedAccount = true\n this.moveAccountError = false\n } else {\n this.movedAccount = false\n this.moveAccountError = res.error\n }\n })\n },\n removeAlias (alias) {\n this.$store.state.api.backendInteractor.deleteAlias({ alias })\n .then(() => this.fetchAliases())\n },\n addAlias () {\n this.$store.state.api.backendInteractor.addAlias({ alias: this.addAliasTarget })\n .then((res) => {\n this.addedAlias = true\n this.addAliasError = false\n this.addAliasTarget = ''\n })\n .catch((error) => {\n this.addedAlias = false\n this.addAliasError = error\n })\n .then(() => this.fetchAliases())\n },\n fetchAliases () {\n this.$store.state.api.backendInteractor.listAliases()\n .then((res) => {\n this.aliases = res.aliases\n this.listAliasesError = false\n })\n .catch((error) => {\n this.listAliasesError = error.error\n })\n },\n logout () {\n this.$store.dispatch('logout')\n this.$router.replace('/')\n },\n revokeToken (id) {\n if (window.confirm(`${this.$i18n.t('settings.revoke_token')}?`)) {\n this.$store.dispatch('revokeToken', id)\n }\n }\n }\n}\n\nexport default SecurityTab\n","import { render } from \"./security_tab.vue?vue&type=template&id=c8181b06\"\nimport script from \"./security_tab.js?vue&type=script&lang=js\"\nexport * from \"./security_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"profile-tab\">\n <div class=\"setting-item\">\n <h2>{{ $t('settings.name_bio') }}</h2>\n <p>{{ $t('settings.name') }}</p>\n <EmojiInput\n v-model=\"newName\"\n enable-emoji-picker\n :suggest=\"emojiSuggestor\"\n >\n <template #default=\"inputProps\">\n <input\n id=\"username\"\n v-model=\"newName\"\n class=\"name-changer\"\n v-bind=\"propsToNative(inputProps)\"\n >\n </template>\n </EmojiInput>\n <p>{{ $t('settings.bio') }}</p>\n <EmojiInput\n v-model=\"newBio\"\n enable-emoji-picker\n :suggest=\"emojiUserSuggestor\"\n >\n <template #default=\"inputProps\">\n <textarea\n v-model=\"newBio\"\n class=\"bio resize-height\"\n v-bind=\"propsToNative(inputProps)\"\n />\n </template>\n </EmojiInput>\n <p v-if=\"role === 'admin' || role === 'moderator'\">\n <Checkbox v-model=\"showRole\">\n <template v-if=\"role === 'admin'\">\n {{ $t('settings.show_admin_badge') }}\n </template>\n <template v-if=\"role === 'moderator'\">\n {{ $t('settings.show_moderator_badge') }}\n </template>\n </Checkbox>\n </p>\n <div>\n <p>{{ $t('settings.birthday.label') }}</p>\n <input\n id=\"birthday\"\n v-model=\"newBirthday\"\n type=\"date\"\n class=\"birthday-input\"\n >\n <Checkbox v-model=\"showBirthday\">\n {{ $t('settings.birthday.show_birthday') }}\n </Checkbox>\n </div>\n <div v-if=\"maxFields > 0\">\n <p>{{ $t('settings.profile_fields.label') }}</p>\n <div\n v-for=\"(_, i) in newFields\"\n :key=\"i\"\n class=\"profile-fields\"\n >\n <EmojiInput\n v-model=\"newFields[i].name\"\n enable-emoji-picker\n hide-emoji-button\n :suggest=\"userSuggestor\"\n >\n <template #default=\"inputProps\">\n <input\n v-model=\"newFields[i].name\"\n :placeholder=\"$t('settings.profile_fields.name')\"\n v-bind=\"propsToNative(inputProps)\"\n >\n </template>\n </EmojiInput>\n <EmojiInput\n v-model=\"newFields[i].value\"\n enable-emoji-picker\n hide-emoji-button\n :suggest=\"userSuggestor\"\n >\n <template #default=\"inputProps\">\n <input\n v-model=\"newFields[i].value\"\n :placeholder=\"$t('settings.profile_fields.value')\"\n v-bind=\"propsToNative(inputProps)\"\n >\n </template>\n </EmojiInput>\n <button\n class=\"delete-field button-unstyled -hover-highlight\"\n @click=\"deleteField(i)\"\n >\n <!-- TODO something is wrong with v-show here -->\n <FAIcon\n v-if=\"newFields.length > 1\"\n icon=\"times\"\n />\n </button>\n </div>\n <button\n v-if=\"newFields.length < maxFields\"\n class=\"add-field faint button-unstyled -hover-highlight\"\n @click=\"addField\"\n >\n <FAIcon icon=\"plus\" />\n {{ $t(\"settings.profile_fields.add_field\") }}\n </button>\n </div>\n <p>\n <Checkbox v-model=\"bot\">\n {{ $t('settings.bot') }}\n </Checkbox>\n </p>\n <p>\n <interface-language-switcher\n :prompt-text=\"$t('settings.email_language')\"\n :language=\"emailLanguage\"\n :set-language=\"val => emailLanguage = val\"\n />\n </p>\n <button\n :disabled=\"newName && newName.length === 0\"\n class=\"btn button-default\"\n @click=\"updateProfile\"\n >\n {{ $t('settings.save') }}\n </button>\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.avatar') }}</h2>\n <p class=\"visibility-notice\">\n {{ $t('settings.avatar_size_instruction') }}\n </p>\n <div class=\"current-avatar-container\">\n <img\n :src=\"user.profile_image_url_original\"\n class=\"current-avatar\"\n >\n <button\n v-if=\"!isDefaultAvatar && pickAvatarBtnVisible\"\n :title=\"$t('settings.reset_avatar')\"\n class=\"button-unstyled reset-button\"\n @click=\"resetAvatar\"\n >\n <FAIcon\n icon=\"times\"\n type=\"button\"\n />\n </button>\n </div>\n <p>{{ $t('settings.set_new_avatar') }}</p>\n <button\n v-show=\"pickAvatarBtnVisible\"\n id=\"pick-avatar\"\n class=\"button-default btn\"\n type=\"button\"\n >\n {{ $t('settings.upload_a_photo') }}\n </button>\n <image-cropper\n trigger=\"#pick-avatar\"\n :submit-handler=\"submitAvatar\"\n @open=\"pickAvatarBtnVisible=false\"\n @close=\"pickAvatarBtnVisible=true\"\n />\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.profile_banner') }}</h2>\n <div class=\"banner-background-preview\">\n <img :src=\"user.cover_photo\">\n <button\n v-if=\"!isDefaultBanner\"\n class=\"button-unstyled reset-button\"\n :title=\"$t('settings.reset_profile_banner')\"\n @click=\"resetBanner\"\n >\n <FAIcon\n icon=\"times\"\n type=\"button\"\n />\n </button>\n </div>\n <p>{{ $t('settings.set_new_profile_banner') }}</p>\n <img\n v-if=\"bannerPreview\"\n class=\"banner-background-preview\"\n :src=\"bannerPreview\"\n >\n <div>\n <input\n type=\"file\"\n @change=\"uploadFile('banner', $event)\"\n >\n </div>\n <FAIcon\n v-if=\"bannerUploading\"\n class=\"uploading\"\n spin\n icon=\"circle-notch\"\n />\n <button\n v-else-if=\"bannerPreview\"\n class=\"btn button-default\"\n @click=\"submitBanner(banner)\"\n >\n {{ $t('settings.save') }}\n </button>\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.profile_background') }}</h2>\n <div class=\"banner-background-preview\">\n <img :src=\"user.background_image\">\n <button\n v-if=\"!isDefaultBackground\"\n class=\"button-unstyled reset-button\"\n :title=\"$t('settings.reset_profile_background')\"\n @click=\"resetBackground\"\n >\n <FAIcon\n icon=\"times\"\n type=\"button\"\n />\n </button>\n </div>\n <p>{{ $t('settings.set_new_profile_background') }}</p>\n <img\n v-if=\"backgroundPreview\"\n class=\"banner-background-preview\"\n :src=\"backgroundPreview\"\n >\n <div>\n <input\n type=\"file\"\n @change=\"uploadFile('background', $event)\"\n >\n </div>\n <FAIcon\n v-if=\"backgroundUploading\"\n class=\"uploading\"\n spin\n icon=\"circle-notch\"\n />\n <button\n v-else-if=\"backgroundPreview\"\n class=\"btn button-default\"\n @click=\"submitBackground(background)\"\n >\n {{ $t('settings.save') }}\n </button>\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.account_privacy') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <BooleanSetting path=\"serverSide_locked\">\n {{ $t('settings.lock_account_description') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"serverSide_discoverable\">\n {{ $t('settings.discoverable') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"serverSide_allowFollowingMove\">\n {{ $t('settings.allow_following_move') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"serverSide_hideFavorites\">\n {{ $t('settings.hide_favorites_description') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"serverSide_hideFollowers\">\n {{ $t('settings.hide_followers_description') }}\n </BooleanSetting>\n <ul\n class=\"setting-list suboptions\"\n :class=\"[{disabled: !serverSide_hideFollowers}]\"\n >\n <li>\n <BooleanSetting\n path=\"serverSide_hideFollowersCount\"\n :disabled=\"!serverSide_hideFollowers\"\n >\n {{ $t('settings.hide_followers_count_description') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n <li>\n <BooleanSetting path=\"serverSide_hideFollows\">\n {{ $t('settings.hide_follows_description') }}\n </BooleanSetting>\n <ul\n class=\"setting-list suboptions\"\n :class=\"[{disabled: !serverSide_hideFollows}]\"\n >\n <li>\n <BooleanSetting\n path=\"serverSide_hideFollowsCount\"\n :disabled=\"!serverSide_hideFollows\"\n >\n {{ $t('settings.hide_follows_count_description') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n</template>\n\n<script src=\"./profile_tab.js\"></script>\n<style lang=\"scss\" src=\"./profile_tab.scss\"></style>\n","<template>\n <div class=\"image-cropper\">\n <div v-if=\"dataUrl\">\n <div class=\"image-cropper-image-container\">\n <img\n ref=\"img\"\n :src=\"dataUrl\"\n alt=\"\"\n @load.stop=\"createCropper\"\n >\n </div>\n <div class=\"image-cropper-buttons-wrapper\">\n <button\n class=\"button-default btn\"\n type=\"button\"\n :disabled=\"submitting\"\n @click=\"submit()\"\n v-text=\"saveText\"\n />\n <button\n class=\"button-default btn\"\n type=\"button\"\n :disabled=\"submitting\"\n @click=\"destroy\"\n v-text=\"cancelText\"\n />\n <button\n class=\"button-default btn\"\n type=\"button\"\n :disabled=\"submitting\"\n @click=\"submit(false)\"\n v-text=\"saveWithoutCroppingText\"\n />\n <FAIcon\n v-if=\"submitting\"\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n <input\n ref=\"input\"\n type=\"file\"\n class=\"image-cropper-img-input\"\n :accept=\"mimes\"\n >\n </div>\n</template>\n\n<script src=\"./image_cropper.js\"></script>\n\n<style lang=\"scss\">\n.image-cropper {\n &-img-input {\n display: none;\n }\n\n &-image-container {\n position: relative;\n\n img {\n display: block;\n max-width: 100%;\n }\n }\n\n &-buttons-wrapper {\n margin-top: 10px;\n\n button {\n margin-top: 5px;\n }\n }\n}\n</style>\n","import Cropper from 'cropperjs'\nimport 'cropperjs/dist/cropper.css'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst ImageCropper = {\n props: {\n trigger: {\n type: [String, window.Element],\n required: true\n },\n submitHandler: {\n type: Function,\n required: true\n },\n cropperOptions: {\n type: Object,\n default () {\n return {\n aspectRatio: 1,\n autoCropArea: 1,\n viewMode: 1,\n movable: false,\n zoomable: false,\n guides: false\n }\n }\n },\n mimes: {\n type: String,\n default: 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon'\n },\n saveButtonLabel: {\n type: String\n },\n saveWithoutCroppingButtonlabel: {\n type: String\n },\n cancelButtonLabel: {\n type: String\n }\n },\n data () {\n return {\n cropper: undefined,\n dataUrl: undefined,\n filename: undefined,\n submitting: false\n }\n },\n computed: {\n saveText () {\n return this.saveButtonLabel || this.$t('image_cropper.save')\n },\n saveWithoutCroppingText () {\n return this.saveWithoutCroppingButtonlabel || this.$t('image_cropper.save_without_cropping')\n },\n cancelText () {\n return this.cancelButtonLabel || this.$t('image_cropper.cancel')\n }\n },\n methods: {\n destroy () {\n if (this.cropper) {\n this.cropper.destroy()\n }\n this.$refs.input.value = ''\n this.dataUrl = undefined\n this.$emit('close')\n },\n submit (cropping = true) {\n this.submitting = true\n this.submitHandler(cropping && this.cropper, this.file)\n .then(() => this.destroy())\n .finally(() => {\n this.submitting = false\n })\n },\n pickImage () {\n this.$refs.input.click()\n },\n createCropper () {\n this.cropper = new Cropper(this.$refs.img, this.cropperOptions)\n },\n getTriggerDOM () {\n return typeof this.trigger === 'object' ? this.trigger : document.querySelector(this.trigger)\n },\n readFile () {\n const fileInput = this.$refs.input\n if (fileInput.files != null && fileInput.files[0] != null) {\n this.file = fileInput.files[0]\n const reader = new window.FileReader()\n reader.onload = (e) => {\n this.dataUrl = e.target.result\n this.$emit('open')\n }\n reader.readAsDataURL(this.file)\n this.$emit('changed', this.file, reader)\n }\n }\n },\n mounted () {\n // listen for click event on trigger\n const trigger = this.getTriggerDOM()\n if (!trigger) {\n this.$emit('error', 'No image make trigger found.', 'user')\n } else {\n trigger.addEventListener('click', this.pickImage)\n }\n // listen for input file changes\n const fileInput = this.$refs.input\n fileInput.addEventListener('change', this.readFile)\n },\n beforeUnmount: function () {\n // remove the event listeners\n const trigger = this.getTriggerDOM()\n if (trigger) {\n trigger.removeEventListener('click', this.pickImage)\n }\n const fileInput = this.$refs.input\n fileInput.removeEventListener('change', this.readFile)\n }\n}\n\nexport default ImageCropper\n","import { render } from \"./image_cropper.vue?vue&type=template&id=0bac39f0\"\nimport script from \"./image_cropper.js?vue&type=script&lang=js\"\nexport * from \"./image_cropper.js?vue&type=script&lang=js\"\n\nimport \"./image_cropper.vue?vue&type=style&index=0&id=0bac39f0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import unescape from 'lodash/unescape'\nimport merge from 'lodash/merge'\nimport ImageCropper from 'src/components/image_cropper/image_cropper.vue'\nimport ScopeSelector from 'src/components/scope_selector/scope_selector.vue'\nimport fileSizeFormatService from 'src/components/../services/file_size_format/file_size_format.js'\nimport ProgressButton from 'src/components/progress_button/progress_button.vue'\nimport EmojiInput from 'src/components/emoji_input/emoji_input.vue'\nimport suggestor from 'src/components/emoji_input/suggestor.js'\nimport Autosuggest from 'src/components/autosuggest/autosuggest.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'\nimport BooleanSetting from '../helpers/boolean_setting.vue'\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\nimport localeService from 'src/services/locale/locale.service.js'\nimport { propsToNative } from 'src/services/attributes_helper/attributes_helper.service.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faPlus,\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faPlus,\n faCircleNotch\n)\n\nconst ProfileTab = {\n data () {\n return {\n newName: this.$store.state.users.currentUser.name_unescaped,\n newBio: unescape(this.$store.state.users.currentUser.description),\n newLocked: this.$store.state.users.currentUser.locked,\n newBirthday: this.$store.state.users.currentUser.birthday,\n showBirthday: this.$store.state.users.currentUser.show_birthday,\n newFields: this.$store.state.users.currentUser.fields.map(field => ({ name: field.name, value: field.value })),\n showRole: this.$store.state.users.currentUser.show_role,\n role: this.$store.state.users.currentUser.role,\n bot: this.$store.state.users.currentUser.bot,\n pickAvatarBtnVisible: true,\n bannerUploading: false,\n backgroundUploading: false,\n banner: null,\n bannerPreview: null,\n background: null,\n backgroundPreview: null,\n emailLanguage: this.$store.state.users.currentUser.language || ['']\n }\n },\n components: {\n ScopeSelector,\n ImageCropper,\n EmojiInput,\n Autosuggest,\n ProgressButton,\n Checkbox,\n BooleanSetting,\n InterfaceLanguageSwitcher\n },\n computed: {\n user () {\n return this.$store.state.users.currentUser\n },\n ...SharedComputedObject(),\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.getters.standardEmojiList,\n ...this.$store.state.instance.customEmoji\n ],\n store: this.$store\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.getters.standardEmojiList,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n userSuggestor () {\n return suggestor({ store: this.$store })\n },\n fieldsLimits () {\n return this.$store.state.instance.fieldsLimits\n },\n maxFields () {\n return this.fieldsLimits ? this.fieldsLimits.maxFields : 0\n },\n defaultAvatar () {\n return this.$store.state.instance.server + this.$store.state.instance.defaultAvatar\n },\n defaultBanner () {\n return this.$store.state.instance.server + this.$store.state.instance.defaultBanner\n },\n isDefaultAvatar () {\n const baseAvatar = this.$store.state.instance.defaultAvatar\n return !(this.$store.state.users.currentUser.profile_image_url) ||\n this.$store.state.users.currentUser.profile_image_url.includes(baseAvatar)\n },\n isDefaultBanner () {\n const baseBanner = this.$store.state.instance.defaultBanner\n return !(this.$store.state.users.currentUser.cover_photo) ||\n this.$store.state.users.currentUser.cover_photo.includes(baseBanner)\n },\n isDefaultBackground () {\n return !(this.$store.state.users.currentUser.background_image)\n },\n avatarImgSrc () {\n const src = this.$store.state.users.currentUser.profile_image_url_original\n return (!src) ? this.defaultAvatar : src\n },\n bannerImgSrc () {\n const src = this.$store.state.users.currentUser.cover_photo\n return (!src) ? this.defaultBanner : src\n }\n },\n methods: {\n updateProfile () {\n const params = {\n note: this.newBio,\n locked: this.newLocked,\n // Backend notation.\n /* eslint-disable camelcase */\n display_name: this.newName,\n fields_attributes: this.newFields.filter(el => el != null),\n bot: this.bot,\n show_role: this.showRole,\n birthday: this.newBirthday || '',\n show_birthday: this.showBirthday\n /* eslint-enable camelcase */\n }\n\n if (this.emailLanguage) {\n params.language = localeService.internalToBackendLocaleMulti(this.emailLanguage)\n }\n\n this.$store.state.api.backendInteractor\n .updateProfile({ params })\n .then((user) => {\n this.newFields.splice(user.fields.length)\n merge(this.newFields, user.fields)\n this.$store.commit('addNewUsers', [user])\n this.$store.commit('setCurrentUser', user)\n })\n },\n changeVis (visibility) {\n this.newDefaultScope = visibility\n },\n addField () {\n if (this.newFields.length < this.maxFields) {\n this.newFields.push({ name: '', value: '' })\n return true\n }\n return false\n },\n deleteField (index, event) {\n this.newFields.splice(index, 1)\n },\n uploadFile (slot, e) {\n const file = e.target.files[0]\n if (!file) { return }\n if (file.size > this.$store.state.instance[slot + 'limit']) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(this.$store.state.instance[slot + 'limit'])\n this.$store.dispatch('pushGlobalNotice', {\n messageKey: 'upload.error.message',\n messageArgs: [\n this.$t('upload.error.file_too_big', {\n filesize: filesize.num,\n filesizeunit: filesize.unit,\n allowedsize: allowedsize.num,\n allowedsizeunit: allowedsize.unit\n })\n ],\n level: 'error'\n })\n return\n }\n // eslint-disable-next-line no-undef\n const reader = new FileReader()\n reader.onload = ({ target }) => {\n const img = target.result\n this[slot + 'Preview'] = img\n this[slot] = file\n }\n reader.readAsDataURL(file)\n },\n resetAvatar () {\n const confirmed = window.confirm(this.$t('settings.reset_avatar_confirm'))\n if (confirmed) {\n this.submitAvatar(undefined, '')\n }\n },\n resetBanner () {\n const confirmed = window.confirm(this.$t('settings.reset_banner_confirm'))\n if (confirmed) {\n this.submitBanner('')\n }\n },\n resetBackground () {\n const confirmed = window.confirm(this.$t('settings.reset_background_confirm'))\n if (confirmed) {\n this.submitBackground('')\n }\n },\n submitAvatar (cropper, file) {\n const that = this\n return new Promise((resolve, reject) => {\n function updateAvatar (avatar, avatarName) {\n that.$store.state.api.backendInteractor.updateProfileImages({ avatar, avatarName })\n .then((user) => {\n that.$store.commit('addNewUsers', [user])\n that.$store.commit('setCurrentUser', user)\n resolve()\n })\n .catch((error) => {\n that.displayUploadError(error)\n reject(error)\n })\n }\n\n if (cropper) {\n cropper.getCroppedCanvas().toBlob((data) => updateAvatar(data, file.name), file.type)\n } else {\n updateAvatar(file, file.name)\n }\n })\n },\n submitBanner (banner) {\n if (!this.bannerPreview && banner !== '') { return }\n\n this.bannerUploading = true\n this.$store.state.api.backendInteractor.updateProfileImages({ banner })\n .then((user) => {\n this.$store.commit('addNewUsers', [user])\n this.$store.commit('setCurrentUser', user)\n this.bannerPreview = null\n })\n .catch(this.displayUploadError)\n .finally(() => { this.bannerUploading = false })\n },\n submitBackground (background) {\n if (!this.backgroundPreview && background !== '') { return }\n\n this.backgroundUploading = true\n this.$store.state.api.backendInteractor.updateProfileImages({ background })\n .then((data) => {\n this.$store.commit('addNewUsers', [data])\n this.$store.commit('setCurrentUser', data)\n this.backgroundPreview = null\n })\n .catch(this.displayUploadError)\n .finally(() => { this.backgroundUploading = false })\n },\n displayUploadError (error) {\n this.$store.dispatch('pushGlobalNotice', {\n messageKey: 'upload.error.message',\n messageArgs: [error.message],\n level: 'error'\n })\n },\n propsToNative (props) {\n return propsToNative(props)\n }\n }\n}\n\nexport default ProfileTab\n","import { render } from \"./profile_tab.vue?vue&type=template&id=574391c1\"\nimport script from \"./profile_tab.js?vue&type=script&lang=js\"\nexport * from \"./profile_tab.js?vue&type=script&lang=js\"\n\nimport \"./profile_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :label=\"$t('settings.general')\">\n <div class=\"setting-item\">\n <h2>{{ $t('settings.interface') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <interface-language-switcher\n :prompt-text=\"$t('settings.interfaceLanguage')\"\n :language=\"language\"\n :set-language=\"val => language = val\"\n />\n </li>\n <li v-if=\"instanceSpecificPanelPresent\">\n <BooleanSetting path=\"hideISP\">\n {{ $t('settings.hide_isp') }}\n </BooleanSetting>\n </li>\n <li v-if=\"instanceWallpaperUsed\">\n <BooleanSetting path=\"hideInstanceWallpaper\">\n {{ $t('settings.hide_wallpaper') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"stopGifs\">\n {{ $t('settings.stop_gifs') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"streaming\">\n {{ $t('settings.streaming') }}\n </BooleanSetting>\n <ul\n class=\"setting-list suboptions\"\n :class=\"[{disabled: !streaming}]\"\n >\n <li>\n <BooleanSetting\n path=\"pauseOnUnfocused\"\n :disabled=\"!streaming\"\n >\n {{ $t('settings.pause_on_unfocused') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n <li>\n <BooleanSetting\n path=\"useStreamingApi\"\n expert=\"1\"\n >\n {{ $t('settings.useStreamingApi') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"virtualScrolling\"\n expert=\"1\"\n >\n {{ $t('settings.virtual_scrolling') }}\n </BooleanSetting>\n </li>\n <li>\n <ChoiceSetting\n id=\"userPopoverAvatarAction\"\n path=\"userPopoverAvatarAction\"\n :options=\"userPopoverAvatarActionOptions\"\n expert=\"1\"\n >\n {{ $t('settings.user_popover_avatar_action') }}\n </ChoiceSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"userPopoverOverlay\"\n expert=\"1\"\n >\n {{ $t('settings.user_popover_avatar_overlay') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"alwaysShowNewPostButton\"\n expert=\"1\"\n >\n {{ $t('settings.always_show_post_button') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"autohideFloatingPostButton\"\n expert=\"1\"\n >\n {{ $t('settings.autohide_floating_post_button') }}\n </BooleanSetting>\n </li>\n <li v-if=\"instanceShoutboxPresent\">\n <BooleanSetting\n path=\"hideShoutbox\"\n expert=\"1\"\n >\n {{ $t('settings.hide_shoutbox') }}\n </BooleanSetting>\n </li>\n <li>\n <h3>{{ $t('settings.columns') }}</h3>\n </li>\n <li>\n <BooleanSetting path=\"disableStickyHeaders\">\n {{ $t('settings.disable_sticky_headers') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"showScrollbars\">\n {{ $t('settings.show_scrollbars') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"sidebarRight\">\n {{ $t('settings.right_sidebar') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"navbarColumnStretch\">\n {{ $t('settings.navbar_column_stretch') }}\n </BooleanSetting>\n </li>\n <li>\n <ChoiceSetting\n v-if=\"user\"\n id=\"thirdColumnMode\"\n path=\"thirdColumnMode\"\n :options=\"thirdColumnModeOptions\"\n >\n {{ $t('settings.third_column_mode') }}\n </ChoiceSetting>\n </li>\n <li v-if=\"expertLevel > 0\">\n {{ $t('settings.column_sizes') }}\n <div class=\"column-settings\">\n <SizeSetting\n v-for=\"column in columns\"\n :key=\"column\"\n :path=\"column + 'ColumnWidth'\"\n :units=\"horizontalUnits\"\n expert=\"1\"\n >\n {{ $t('settings.column_sizes_' + column) }}\n </SizeSetting>\n </div>\n </li>\n <li class=\"select-multiple\">\n <span class=\"label\">{{ $t('settings.confirm_dialogs') }}</span>\n <ul class=\"option-list\">\n <li>\n <BooleanSetting path=\"modalOnRepeat\">\n {{ $t('settings.confirm_dialogs_repeat') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnUnfollow\">\n {{ $t('settings.confirm_dialogs_unfollow') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnBlock\">\n {{ $t('settings.confirm_dialogs_block') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnMute\">\n {{ $t('settings.confirm_dialogs_mute') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnDelete\">\n {{ $t('settings.confirm_dialogs_delete') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnLogout\">\n {{ $t('settings.confirm_dialogs_logout') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnApproveFollow\">\n {{ $t('settings.confirm_dialogs_approve_follow') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnDenyFollow\">\n {{ $t('settings.confirm_dialogs_deny_follow') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"modalOnRemoveUserFromFollowers\">\n {{ $t('settings.confirm_dialogs_remove_follower') }}\n </BooleanSetting>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n <div class=\"setting-item\">\n <h2>{{ $t('settings.post_look_feel') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <ChoiceSetting\n id=\"conversationDisplay\"\n path=\"conversationDisplay\"\n :options=\"conversationDisplayOptions\"\n >\n {{ $t('settings.conversation_display') }}\n </ChoiceSetting>\n </li>\n <ul\n v-if=\"conversationDisplay !== 'linear'\"\n class=\"setting-list suboptions\"\n >\n <li>\n <BooleanSetting path=\"conversationTreeAdvanced\">\n {{ $t('settings.tree_advanced') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"conversationTreeFadeAncestors\"\n :expert=\"1\"\n >\n {{ $t('settings.tree_fade_ancestors') }}\n </BooleanSetting>\n </li>\n <li>\n <IntegerSetting\n path=\"maxDepthInThread\"\n :min=\"3\"\n :expert=\"1\"\n >\n {{ $t('settings.max_depth_in_thread') }}\n </IntegerSetting>\n </li>\n <li>\n <ChoiceSetting\n id=\"conversationOtherRepliesButton\"\n path=\"conversationOtherRepliesButton\"\n :options=\"conversationOtherRepliesButtonOptions\"\n :expert=\"1\"\n >\n {{ $t('settings.conversation_other_replies_button') }}\n </ChoiceSetting>\n </li>\n </ul>\n <li>\n <BooleanSetting path=\"collapseMessageWithSubject\">\n {{ $t('settings.collapse_subject') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"emojiReactionsOnTimeline\"\n expert=\"1\"\n >\n {{ $t('settings.emoji_reactions_on_timeline') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n v-if=\"user\"\n path=\"serverSide_stripRichContent\"\n expert=\"1\"\n >\n {{ $t('settings.no_rich_text_description') }}\n </BooleanSetting>\n </li>\n <h3>{{ $t('settings.attachments') }}</h3>\n <li>\n <BooleanSetting\n path=\"useContainFit\"\n expert=\"1\"\n >\n {{ $t('settings.use_contain_fit') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"hideNsfw\">\n {{ $t('settings.nsfw_clickthrough') }}\n </BooleanSetting>\n </li>\n <ul class=\"setting-list suboptions\">\n <li>\n <BooleanSetting\n path=\"preloadImage\"\n expert=\"1\"\n :disabled=\"!hideNsfw\"\n >\n {{ $t('settings.preload_images') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"useOneClickNsfw\"\n expert=\"1\"\n :disabled=\"!hideNsfw\"\n >\n {{ $t('settings.use_one_click_nsfw') }}\n </BooleanSetting>\n </li>\n </ul>\n <li>\n <BooleanSetting\n path=\"loopVideo\"\n expert=\"1\"\n >\n {{ $t('settings.loop_video') }}\n </BooleanSetting>\n <ul\n class=\"setting-list suboptions\"\n :class=\"[{disabled: !streaming}]\"\n >\n <li>\n <BooleanSetting\n path=\"loopVideoSilentOnly\"\n expert=\"1\"\n :disabled=\"!loopVideo || !loopSilentAvailable\"\n >\n {{ $t('settings.loop_video_silent_only') }}\n </BooleanSetting>\n <div\n v-if=\"!loopSilentAvailable\"\n class=\"unavailable\"\n >\n <FAIcon icon=\"globe\" />! {{ $t('settings.limited_availability') }}\n </div>\n </li>\n </ul>\n </li>\n <li>\n <BooleanSetting\n path=\"playVideosInModal\"\n expert=\"1\"\n >\n {{ $t('settings.play_videos_in_modal') }}\n </BooleanSetting>\n </li>\n <h3>{{ $t('settings.mention_links') }}</h3>\n <li>\n <ChoiceSetting\n id=\"mentionLinkDisplay\"\n path=\"mentionLinkDisplay\"\n :options=\"mentionLinkDisplayOptions\"\n >\n {{ $t('settings.mention_link_display') }}\n </ChoiceSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"mentionLinkShowTooltip\"\n expert=\"1\"\n >\n {{ $t('settings.mention_link_use_tooltip') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"useAtIcon\"\n expert=\"1\"\n >\n {{ $t('settings.use_at_icon') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting path=\"mentionLinkShowAvatar\">\n {{ $t('settings.mention_link_show_avatar') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"mentionLinkFadeDomain\"\n expert=\"1\"\n >\n {{ $t('settings.mention_link_fade_domain') }}\n </BooleanSetting>\n </li>\n <li v-if=\"user\">\n <BooleanSetting\n path=\"mentionLinkBoldenYou\"\n expert=\"1\"\n >\n {{ $t('settings.mention_link_bolden_you') }}\n </BooleanSetting>\n </li>\n <h3 v-if=\"expertLevel > 0\">\n {{ $t('settings.fun') }}\n </h3>\n <li>\n <BooleanSetting\n path=\"greentext\"\n expert=\"1\"\n >\n {{ $t('settings.greentext') }}\n </BooleanSetting>\n </li>\n <li v-if=\"user\">\n <BooleanSetting\n path=\"mentionLinkShowYous\"\n expert=\"1\"\n >\n {{ $t('settings.show_yous') }}\n </BooleanSetting>\n </li>\n </ul>\n </div>\n\n <div\n v-if=\"user\"\n class=\"setting-item\"\n >\n <h2>{{ $t('settings.composing') }}</h2>\n <ul class=\"setting-list\">\n <li>\n <label for=\"default-vis\">\n {{ $t('settings.default_vis') }} <ServerSideIndicator :server-side=\"true\" />\n <ScopeSelector\n class=\"scope-selector\"\n :show-all=\"true\"\n :user-default=\"serverSide_defaultScope\"\n :initial-scope=\"serverSide_defaultScope\"\n :on-scope-change=\"changeDefaultScope\"\n />\n </label>\n </li>\n <li>\n <!-- <BooleanSetting path=\"serverSide_defaultNSFW\"> -->\n <BooleanSetting path=\"sensitiveByDefault\">\n {{ $t('settings.sensitive_by_default') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"scopeCopy\"\n expert=\"1\"\n >\n {{ $t('settings.scope_copy') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"alwaysShowSubjectInput\"\n expert=\"1\"\n >\n {{ $t('settings.subject_input_always_show') }}\n </BooleanSetting>\n </li>\n <li>\n <ChoiceSetting\n id=\"subjectLineBehavior\"\n path=\"subjectLineBehavior\"\n :options=\"subjectLineOptions\"\n expert=\"1\"\n >\n {{ $t('settings.subject_line_behavior') }}\n </ChoiceSetting>\n </li>\n <li v-if=\"postFormats.length > 0\">\n <ChoiceSetting\n id=\"postContentType\"\n path=\"postContentType\"\n :options=\"postContentOptions\"\n >\n {{ $t('settings.post_status_content_type') }}\n </ChoiceSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"minimalScopesMode\"\n expert=\"1\"\n >\n {{ $t('settings.minimal_scopes_mode') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"alwaysShowNewPostButton\"\n expert=\"1\"\n >\n {{ $t('settings.always_show_post_button') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"autohideFloatingPostButton\"\n expert=\"1\"\n >\n {{ $t('settings.autohide_floating_post_button') }}\n </BooleanSetting>\n </li>\n <li>\n <BooleanSetting\n path=\"padEmoji\"\n expert=\"1\"\n >\n {{ $t('settings.pad_emoji') }}\n </BooleanSetting>\n </li>\n </ul>\n </div>\n </div>\n</template>\n\n<script src=\"./general_tab.js\"></script>\n\n<style lang=\"scss\">\n.column-settings {\n display: flex;\n justify-content: space-evenly;\n flex-wrap: wrap;\n}\n\n.column-settings .size-label {\n display: block;\n margin-bottom: 0.5em;\n margin-top: 0.5em;\n}\n</style>\n","<template>\n <span\n v-if=\"matchesExpertLevel\"\n class=\"SizeSetting\"\n >\n <label\n :for=\"path\"\n class=\"size-label\"\n >\n <slot />\n </label>\n <input\n :id=\"path\"\n class=\"number-input\"\n type=\"number\"\n step=\"1\"\n :disabled=\"disabled\"\n :min=\"min || 0\"\n :value=\"stateValue\"\n @change=\"updateValue\"\n >\n <Select\n :id=\"path\"\n :model-value=\"stateUnit\"\n :disabled=\"disabled\"\n class=\"css-unit-input\"\n @change=\"updateUnit\"\n >\n <option\n v-for=\"option in units\"\n :key=\"option\"\n :value=\"option\"\n >\n {{ option }}\n </option>\n </Select>\n {{ ' ' }}\n <ModifiedIndicator\n :changed=\"isChanged\"\n :onclick=\"reset\"\n />\n </span>\n</template>\n\n<script src=\"./size_setting.js\"></script>\n\n<style lang=\"scss\">\n.css-unit-input,\n.css-unit-input select {\n margin-left: 0.5em;\n width: 4em;\n max-width: 4em;\n min-width: 4em;\n}\n</style>\n","import { get, set } from 'lodash'\nimport ModifiedIndicator from './modified_indicator.vue'\nimport Select from 'src/components/select/select.vue'\n\nexport const allCssUnits = ['cm', 'mm', 'in', 'px', 'pt', 'pc', 'em', 'ex', 'ch', 'rem', 'vw', 'vh', 'vmin', 'vmax', '%']\nexport const defaultHorizontalUnits = ['px', 'rem', 'vw']\nexport const defaultVerticalUnits = ['px', 'rem', 'vh']\n\nexport default {\n components: {\n ModifiedIndicator,\n Select\n },\n props: {\n path: String,\n disabled: Boolean,\n min: Number,\n units: {\n type: [String],\n default: () => allCssUnits\n },\n expert: [Number, String]\n },\n computed: {\n pathDefault () {\n const [firstSegment, ...rest] = this.path.split('.')\n return [firstSegment + 'DefaultValue', ...rest].join('.')\n },\n stateUnit () {\n return (this.state || '').replace(/\\d+/, '')\n },\n stateValue () {\n return (this.state || '').replace(/\\D+/, '')\n },\n state () {\n const value = get(this.$parent, this.path)\n if (value === undefined) {\n return this.defaultState\n } else {\n return value\n }\n },\n defaultState () {\n return get(this.$parent, this.pathDefault)\n },\n isChanged () {\n return this.state !== this.defaultState\n },\n matchesExpertLevel () {\n return (this.expert || 0) <= this.$parent.expertLevel\n }\n },\n methods: {\n update (e) {\n set(this.$parent, this.path, e)\n },\n reset () {\n set(this.$parent, this.path, this.defaultState)\n },\n updateValue (e) {\n set(this.$parent, this.path, parseInt(e.target.value) + this.stateUnit)\n },\n updateUnit (e) {\n set(this.$parent, this.path, this.stateValue + e.target.value)\n }\n }\n}\n","import { render } from \"./size_setting.vue?vue&type=template&id=5f9495e3\"\nimport script from \"./size_setting.js?vue&type=script&lang=js\"\nexport * from \"./size_setting.js?vue&type=script&lang=js\"\n\nimport \"./size_setting.vue?vue&type=style&index=0&id=5f9495e3&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import BooleanSetting from '../helpers/boolean_setting.vue'\nimport ChoiceSetting from '../helpers/choice_setting.vue'\nimport ScopeSelector from 'src/components/scope_selector/scope_selector.vue'\nimport IntegerSetting from '../helpers/integer_setting.vue'\nimport SizeSetting, { defaultHorizontalUnits } from '../helpers/size_setting.vue'\nimport InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'\n\nimport SharedComputedObject from '../helpers/shared_computed_object.js'\nimport ServerSideIndicator from '../helpers/server_side_indicator.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faGlobe\n)\n\nconst GeneralTab = {\n data () {\n return {\n subjectLineOptions: ['email', 'noop', 'masto'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.subject_line_${mode === 'masto' ? 'mastodon' : mode}`)\n })),\n conversationDisplayOptions: ['tree', 'linear'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.conversation_display_${mode}`)\n })),\n conversationOtherRepliesButtonOptions: ['below', 'inside'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.conversation_other_replies_button_${mode}`)\n })),\n mentionLinkDisplayOptions: ['short', 'full_for_remote', 'full'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.mention_link_display_${mode}`)\n })),\n thirdColumnModeOptions: ['none', 'notifications', 'postform'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.third_column_mode_${mode}`)\n })),\n userPopoverAvatarActionOptions: ['close', 'zoom', 'open'].map(mode => ({\n key: mode,\n value: mode,\n label: this.$t(`settings.user_popover_avatar_action_${mode}`)\n })),\n loopSilentAvailable:\n // Firefox\n Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype, 'mozHasAudio') ||\n // Chrome-likes\n Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'webkitAudioDecodedByteCount') ||\n // Future spec, still not supported in Nightly 63 as of 08/2018\n Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'audioTracks')\n }\n },\n components: {\n BooleanSetting,\n ChoiceSetting,\n IntegerSetting,\n SizeSetting,\n InterfaceLanguageSwitcher,\n ScopeSelector,\n ServerSideIndicator\n },\n computed: {\n horizontalUnits () {\n return defaultHorizontalUnits\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n postContentOptions () {\n return this.postFormats.map(format => ({\n key: format,\n value: format,\n label: this.$t(`post_status.content_type[\"${format}\"]`)\n }))\n },\n columns () {\n const mode = this.$store.getters.mergedConfig.thirdColumnMode\n\n const notif = mode === 'none' ? [] : ['notifs']\n\n if (this.$store.getters.mergedConfig.sidebarRight || mode === 'postform') {\n return [...notif, 'content', 'sidebar']\n } else {\n return ['sidebar', 'content', ...notif]\n }\n },\n instanceSpecificPanelPresent () { return this.$store.state.instance.showInstanceSpecificPanel },\n instanceWallpaperUsed () {\n return this.$store.state.instance.background &&\n !this.$store.state.users.currentUser.background_image\n },\n instanceShoutboxPresent () { return this.$store.state.instance.shoutAvailable },\n language: {\n get: function () { return this.$store.getters.mergedConfig.interfaceLanguage },\n set: function (val) {\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n }\n },\n ...SharedComputedObject()\n },\n methods: {\n changeDefaultScope (value) {\n this.$store.dispatch('setServerSideOption', { name: 'defaultScope', value })\n }\n }\n}\n\nexport default GeneralTab\n","import { render } from \"./general_tab.vue?vue&type=template&id=f443aacc\"\nimport script from \"./general_tab.js?vue&type=script&lang=js\"\nexport * from \"./general_tab.js?vue&type=script&lang=js\"\n\nimport \"./general_tab.vue?vue&type=style&index=0&id=f443aacc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :label=\"$t('settings.version.title')\">\n <div class=\"setting-item\">\n <ul class=\"setting-list\">\n <li>\n <p>{{ $t('settings.version.backend_version') }}</p>\n <ul class=\"option-list\">\n <li>\n <a\n :href=\"backendVersionLink\"\n target=\"_blank\"\n >{{ backendVersion }}</a>\n </li>\n </ul>\n </li>\n <li>\n <p>{{ $t('settings.version.frontend_version') }}</p>\n <ul class=\"option-list\">\n <li>\n <a\n :href=\"frontendVersionLink\"\n target=\"_blank\"\n >{{ frontendVersion }}</a>\n </li>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n</template>\n<script src=\"./version_tab.js\" />\n","import { extractCommit } from 'src/services/version/version.service'\n\nconst pleromaFeCommitUrl = 'https://git.pleroma.social/pleroma/pleroma-fe/commit/'\nconst pleromaBeCommitUrl = 'https://git.pleroma.social/pleroma/pleroma/commit/'\n\nconst VersionTab = {\n data () {\n const instance = this.$store.state.instance\n return {\n backendVersion: instance.backendVersion,\n frontendVersion: instance.frontendVersion\n }\n },\n computed: {\n frontendVersionLink () {\n return pleromaFeCommitUrl + this.frontendVersion\n },\n backendVersionLink () {\n return pleromaBeCommitUrl + extractCommit(this.backendVersion)\n }\n }\n}\n\nexport default VersionTab\n","\nexport const extractCommit = versionString => {\n const regex = /-g(\\w+)/i\n const matches = versionString.match(regex)\n return matches ? matches[1] : ''\n}\n","import { render } from \"./version_tab.vue?vue&type=template&id=1295897c\"\nimport script from \"./version_tab.js?vue&type=script&lang=js\"\nexport * from \"./version_tab.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"theme-tab\">\n <div class=\"presets-container\">\n <div class=\"save-load\">\n <div\n v-if=\"themeWarning\"\n class=\"theme-warning\"\n >\n <div class=\"alert warning\">\n {{ themeWarningHelp }}\n </div>\n <div class=\"buttons\">\n <template v-if=\"themeWarning.type === 'snapshot_source_mismatch'\">\n <button\n class=\"btn button-default\"\n @click=\"forceLoad\"\n >\n {{ $t('settings.style.switcher.use_source') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"forceSnapshot\"\n >\n {{ $t('settings.style.switcher.use_snapshot') }}\n </button>\n </template>\n <template v-else-if=\"themeWarning.noActionsPossible\">\n <button\n class=\"btn button-default\"\n @click=\"dismissWarning\"\n >\n {{ $t('general.dismiss') }}\n </button>\n </template>\n <template v-else>\n <button\n class=\"btn button-default\"\n @click=\"forceLoad\"\n >\n {{ $t('settings.style.switcher.load_theme') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"dismissWarning\"\n >\n {{ $t('settings.style.switcher.keep_as_is') }}\n </button>\n </template>\n </div>\n </div>\n <div class=\"top\">\n <div class=\"presets\">\n {{ $t('settings.presets') }}\n <label\n for=\"preset-switcher\"\n class=\"select\"\n >\n <Select\n id=\"preset-switcher\"\n v-model=\"selected\"\n class=\"preset-switcher\"\n >\n <option\n v-for=\"style in availableStyles\"\n :key=\"style.name\"\n :value=\"style.name || style[0]\"\n :style=\"{\n backgroundColor: style[1] || (style.theme || style.source).colors.bg,\n color: style[3] || (style.theme || style.source).colors.text\n }\"\n >\n {{ style[0] || style.name }}\n </option>\n </Select>\n </label>\n </div>\n <div class=\"export-import\">\n <button\n class=\"btn button-default\"\n @click=\"importTheme\"\n >\n {{ $t(&quot;settings.import_theme&quot;) }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"exportTheme\"\n >\n {{ $t(&quot;settings.export_theme&quot;) }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"save-load-options\">\n <span class=\"keep-option\">\n <Checkbox v-model=\"keepColor\">\n {{ $t('settings.style.switcher.keep_color') }}\n </Checkbox>\n </span>\n <span class=\"keep-option\">\n <Checkbox v-model=\"keepShadows\">\n {{ $t('settings.style.switcher.keep_shadows') }}\n </Checkbox>\n </span>\n <span class=\"keep-option\">\n <Checkbox v-model=\"keepOpacity\">\n {{ $t('settings.style.switcher.keep_opacity') }}\n </Checkbox>\n </span>\n <span class=\"keep-option\">\n <Checkbox v-model=\"keepRoundness\">\n {{ $t('settings.style.switcher.keep_roundness') }}\n </Checkbox>\n </span>\n <span class=\"keep-option\">\n <Checkbox v-model=\"keepFonts\">\n {{ $t('settings.style.switcher.keep_fonts') }}\n </Checkbox>\n </span>\n <p>{{ $t('settings.style.switcher.save_load_hint') }}</p>\n </div>\n </div>\n\n <preview :style=\"previewRules\" />\n\n <keep-alive>\n <tab-switcher key=\"style-tweak\">\n <div\n :label=\"$t('settings.style.common_colors._tab_label')\"\n class=\"color-container\"\n >\n <div class=\"tab-header\">\n <p>{{ $t('settings.theme_help') }}</p>\n <div class=\"tab-header-buttons\">\n <button\n class=\"btn button-default\"\n @click=\"clearOpacity\"\n >\n {{ $t('settings.style.switcher.clear_opacity') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"clearV1\"\n >\n {{ $t('settings.style.switcher.clear_all') }}\n </button>\n </div>\n </div>\n <p>{{ $t('settings.theme_help_v2_1') }}</p>\n <h4>{{ $t('settings.style.common_colors.main') }}</h4>\n <div class=\"color-item\">\n <ColorInput\n v-model=\"bgColorLocal\"\n name=\"bgColor\"\n :label=\"$t('settings.background')\"\n />\n <OpacityInput\n v-model=\"bgOpacityLocal\"\n name=\"bgOpacity\"\n :fallback=\"previewTheme.opacity.bg\"\n />\n <ColorInput\n v-model=\"textColorLocal\"\n name=\"textColor\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgText\" />\n <ColorInput\n v-model=\"accentColorLocal\"\n name=\"accentColor\"\n :fallback=\"previewTheme.colors.link\"\n :label=\"$t('settings.accent')\"\n :show-optional-tickbox=\"typeof linkColorLocal !== 'undefined'\"\n />\n <ColorInput\n v-model=\"linkColorLocal\"\n name=\"linkColor\"\n :fallback=\"previewTheme.colors.accent\"\n :label=\"$t('settings.links')\"\n :show-optional-tickbox=\"typeof accentColorLocal !== 'undefined'\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgLink\" />\n </div>\n <div class=\"color-item\">\n <ColorInput\n v-model=\"fgColorLocal\"\n name=\"fgColor\"\n :label=\"$t('settings.foreground')\"\n />\n <ColorInput\n v-model=\"fgTextColorLocal\"\n name=\"fgTextColor\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.fgText\"\n />\n <ColorInput\n v-model=\"fgLinkColorLocal\"\n name=\"fgLinkColor\"\n :label=\"$t('settings.links')\"\n :fallback=\"previewTheme.colors.fgLink\"\n />\n <p>{{ $t('settings.style.common_colors.foreground_hint') }}</p>\n </div>\n <h4>{{ $t('settings.style.common_colors.rgbo') }}</h4>\n <div class=\"color-item\">\n <ColorInput\n v-model=\"cRedColorLocal\"\n name=\"cRedColor\"\n :label=\"$t('settings.cRed')\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgCRed\" />\n <ColorInput\n v-model=\"cBlueColorLocal\"\n name=\"cBlueColor\"\n :label=\"$t('settings.cBlue')\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgCBlue\" />\n </div>\n <div class=\"color-item\">\n <ColorInput\n v-model=\"cGreenColorLocal\"\n name=\"cGreenColor\"\n :label=\"$t('settings.cGreen')\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgCGreen\" />\n <ColorInput\n v-model=\"cOrangeColorLocal\"\n name=\"cOrangeColor\"\n :label=\"$t('settings.cOrange')\"\n />\n <ContrastRatio :contrast=\"previewContrast.bgCOrange\" />\n </div>\n <p>{{ $t('settings.theme_help_v2_2') }}</p>\n </div>\n\n <div\n :label=\"$t('settings.style.advanced_colors._tab_label')\"\n class=\"color-container\"\n >\n <div class=\"tab-header\">\n <p>{{ $t('settings.theme_help') }}</p>\n <button\n class=\"btn button-default\"\n @click=\"clearOpacity\"\n >\n {{ $t('settings.style.switcher.clear_opacity') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"clearV1\"\n >\n {{ $t('settings.style.switcher.clear_all') }}\n </button>\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.post') }}</h4>\n <ColorInput\n v-model=\"postLinkColorLocal\"\n name=\"postLinkColor\"\n :fallback=\"previewTheme.colors.accent\"\n :label=\"$t('settings.links')\"\n />\n <ContrastRatio :contrast=\"previewContrast.postLink\" />\n <ColorInput\n v-model=\"postGreentextColorLocal\"\n name=\"postGreentextColor\"\n :fallback=\"previewTheme.colors.cGreen\"\n :label=\"$t('settings.greentext')\"\n />\n <ContrastRatio :contrast=\"previewContrast.postGreentext\" />\n <h4>{{ $t('settings.style.advanced_colors.alert') }}</h4>\n <ColorInput\n v-model=\"alertErrorColorLocal\"\n name=\"alertError\"\n :label=\"$t('settings.style.advanced_colors.alert_error')\"\n :fallback=\"previewTheme.colors.alertError\"\n />\n <ColorInput\n v-model=\"alertErrorTextColorLocal\"\n name=\"alertErrorText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.alertErrorText\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.alertErrorText\"\n large\n />\n <ColorInput\n v-model=\"alertWarningColorLocal\"\n name=\"alertWarning\"\n :label=\"$t('settings.style.advanced_colors.alert_warning')\"\n :fallback=\"previewTheme.colors.alertWarning\"\n />\n <ColorInput\n v-model=\"alertWarningTextColorLocal\"\n name=\"alertWarningText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.alertWarningText\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.alertWarningText\"\n large\n />\n <ColorInput\n v-model=\"alertNeutralColorLocal\"\n name=\"alertNeutral\"\n :label=\"$t('settings.style.advanced_colors.alert_neutral')\"\n :fallback=\"previewTheme.colors.alertNeutral\"\n />\n <ColorInput\n v-model=\"alertNeutralTextColorLocal\"\n name=\"alertNeutralText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.alertNeutralText\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.alertNeutralText\"\n large\n />\n <OpacityInput\n v-model=\"alertOpacityLocal\"\n name=\"alertOpacity\"\n :fallback=\"previewTheme.opacity.alert\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.badge') }}</h4>\n <ColorInput\n v-model=\"badgeNotificationColorLocal\"\n name=\"badgeNotification\"\n :label=\"$t('settings.style.advanced_colors.badge_notification')\"\n :fallback=\"previewTheme.colors.badgeNotification\"\n />\n <ColorInput\n v-model=\"badgeNotificationTextColorLocal\"\n name=\"badgeNotificationText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.badgeNotificationText\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.badgeNotificationText\"\n large\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.panel_header') }}</h4>\n <ColorInput\n v-model=\"panelColorLocal\"\n name=\"panelColor\"\n :fallback=\"previewTheme.colors.panel\"\n :label=\"$t('settings.background')\"\n />\n <OpacityInput\n v-model=\"panelOpacityLocal\"\n name=\"panelOpacity\"\n :fallback=\"previewTheme.opacity.panel\"\n :disabled=\"panelColorLocal === 'transparent'\"\n />\n <ColorInput\n v-model=\"panelTextColorLocal\"\n name=\"panelTextColor\"\n :fallback=\"previewTheme.colors.panelText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.panelText\"\n large\n />\n <ColorInput\n v-model=\"panelLinkColorLocal\"\n name=\"panelLinkColor\"\n :fallback=\"previewTheme.colors.panelLink\"\n :label=\"$t('settings.links')\"\n />\n <ContrastRatio\n :contrast=\"previewContrast.panelLink\"\n large\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.top_bar') }}</h4>\n <ColorInput\n v-model=\"topBarColorLocal\"\n name=\"topBarColor\"\n :fallback=\"previewTheme.colors.topBar\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"topBarTextColorLocal\"\n name=\"topBarTextColor\"\n :fallback=\"previewTheme.colors.topBarText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.topBarText\" />\n <ColorInput\n v-model=\"topBarLinkColorLocal\"\n name=\"topBarLinkColor\"\n :fallback=\"previewTheme.colors.topBarLink\"\n :label=\"$t('settings.links')\"\n />\n <ContrastRatio :contrast=\"previewContrast.topBarLink\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.inputs') }}</h4>\n <ColorInput\n v-model=\"inputColorLocal\"\n name=\"inputColor\"\n :fallback=\"previewTheme.colors.input\"\n :label=\"$t('settings.background')\"\n />\n <OpacityInput\n v-model=\"inputOpacityLocal\"\n name=\"inputOpacity\"\n :fallback=\"previewTheme.opacity.input\"\n :disabled=\"inputColorLocal === 'transparent'\"\n />\n <ColorInput\n v-model=\"inputTextColorLocal\"\n name=\"inputTextColor\"\n :fallback=\"previewTheme.colors.inputText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.inputText\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.buttons') }}</h4>\n <ColorInput\n v-model=\"btnColorLocal\"\n name=\"btnColor\"\n :fallback=\"previewTheme.colors.btn\"\n :label=\"$t('settings.background')\"\n />\n <OpacityInput\n v-model=\"btnOpacityLocal\"\n name=\"btnOpacity\"\n :fallback=\"previewTheme.opacity.btn\"\n :disabled=\"btnColorLocal === 'transparent'\"\n />\n <ColorInput\n v-model=\"btnTextColorLocal\"\n name=\"btnTextColor\"\n :fallback=\"previewTheme.colors.btnText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnText\" />\n <ColorInput\n v-model=\"btnPanelTextColorLocal\"\n name=\"btnPanelTextColor\"\n :fallback=\"previewTheme.colors.btnPanelText\"\n :label=\"$t('settings.style.advanced_colors.panel_header')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnPanelText\" />\n <ColorInput\n v-model=\"btnTopBarTextColorLocal\"\n name=\"btnTopBarTextColor\"\n :fallback=\"previewTheme.colors.btnTopBarText\"\n :label=\"$t('settings.style.advanced_colors.top_bar')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnTopBarText\" />\n <h5>{{ $t('settings.style.advanced_colors.pressed') }}</h5>\n <ColorInput\n v-model=\"btnPressedColorLocal\"\n name=\"btnPressedColor\"\n :fallback=\"previewTheme.colors.btnPressed\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"btnPressedTextColorLocal\"\n name=\"btnPressedTextColor\"\n :fallback=\"previewTheme.colors.btnPressedText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnPressedText\" />\n <ColorInput\n v-model=\"btnPressedPanelTextColorLocal\"\n name=\"btnPressedPanelTextColor\"\n :fallback=\"previewTheme.colors.btnPressedPanelText\"\n :label=\"$t('settings.style.advanced_colors.panel_header')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnPressedPanelText\" />\n <ColorInput\n v-model=\"btnPressedTopBarTextColorLocal\"\n name=\"btnPressedTopBarTextColor\"\n :fallback=\"previewTheme.colors.btnPressedTopBarText\"\n :label=\"$t('settings.style.advanced_colors.top_bar')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnPressedTopBarText\" />\n <h5>{{ $t('settings.style.advanced_colors.disabled') }}</h5>\n <ColorInput\n v-model=\"btnDisabledColorLocal\"\n name=\"btnDisabledColor\"\n :fallback=\"previewTheme.colors.btnDisabled\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"btnDisabledTextColorLocal\"\n name=\"btnDisabledTextColor\"\n :fallback=\"previewTheme.colors.btnDisabledText\"\n :label=\"$t('settings.text')\"\n />\n <ColorInput\n v-model=\"btnDisabledPanelTextColorLocal\"\n name=\"btnDisabledPanelTextColor\"\n :fallback=\"previewTheme.colors.btnDisabledPanelText\"\n :label=\"$t('settings.style.advanced_colors.panel_header')\"\n />\n <ColorInput\n v-model=\"btnDisabledTopBarTextColorLocal\"\n name=\"btnDisabledTopBarTextColor\"\n :fallback=\"previewTheme.colors.btnDisabledTopBarText\"\n :label=\"$t('settings.style.advanced_colors.top_bar')\"\n />\n <h5>{{ $t('settings.style.advanced_colors.toggled') }}</h5>\n <ColorInput\n v-model=\"btnToggledColorLocal\"\n name=\"btnToggledColor\"\n :fallback=\"previewTheme.colors.btnToggled\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"btnToggledTextColorLocal\"\n name=\"btnToggledTextColor\"\n :fallback=\"previewTheme.colors.btnToggledText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnToggledText\" />\n <ColorInput\n v-model=\"btnToggledPanelTextColorLocal\"\n name=\"btnToggledPanelTextColor\"\n :fallback=\"previewTheme.colors.btnToggledPanelText\"\n :label=\"$t('settings.style.advanced_colors.panel_header')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnToggledPanelText\" />\n <ColorInput\n v-model=\"btnToggledTopBarTextColorLocal\"\n name=\"btnToggledTopBarTextColor\"\n :fallback=\"previewTheme.colors.btnToggledTopBarText\"\n :label=\"$t('settings.style.advanced_colors.top_bar')\"\n />\n <ContrastRatio :contrast=\"previewContrast.btnToggledTopBarText\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.tabs') }}</h4>\n <ColorInput\n v-model=\"tabColorLocal\"\n name=\"tabColor\"\n :fallback=\"previewTheme.colors.tab\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"tabTextColorLocal\"\n name=\"tabTextColor\"\n :fallback=\"previewTheme.colors.tabText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.tabText\" />\n <ColorInput\n v-model=\"tabActiveTextColorLocal\"\n name=\"tabActiveTextColor\"\n :fallback=\"previewTheme.colors.tabActiveText\"\n :label=\"$t('settings.text')\"\n />\n <ContrastRatio :contrast=\"previewContrast.tabActiveText\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.borders') }}</h4>\n <ColorInput\n v-model=\"borderColorLocal\"\n name=\"borderColor\"\n :fallback=\"previewTheme.colors.border\"\n :label=\"$t('settings.style.common.color')\"\n />\n <OpacityInput\n v-model=\"borderOpacityLocal\"\n name=\"borderOpacity\"\n :fallback=\"previewTheme.opacity.border\"\n :disabled=\"borderColorLocal === 'transparent'\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.faint_text') }}</h4>\n <ColorInput\n v-model=\"faintColorLocal\"\n name=\"faintColor\"\n :fallback=\"previewTheme.colors.faint\"\n :label=\"$t('settings.text')\"\n />\n <ColorInput\n v-model=\"faintLinkColorLocal\"\n name=\"faintLinkColor\"\n :fallback=\"previewTheme.colors.faintLink\"\n :label=\"$t('settings.links')\"\n />\n <ColorInput\n v-model=\"panelFaintColorLocal\"\n name=\"panelFaintColor\"\n :fallback=\"previewTheme.colors.panelFaint\"\n :label=\"$t('settings.style.advanced_colors.panel_header')\"\n />\n <OpacityInput\n v-model=\"faintOpacityLocal\"\n name=\"faintOpacity\"\n :fallback=\"previewTheme.opacity.faint\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.underlay') }}</h4>\n <ColorInput\n v-model=\"underlayColorLocal\"\n name=\"underlay\"\n :label=\"$t('settings.style.advanced_colors.underlay')\"\n :fallback=\"previewTheme.colors.underlay\"\n />\n <OpacityInput\n v-model=\"underlayOpacityLocal\"\n name=\"underlayOpacity\"\n :fallback=\"previewTheme.opacity.underlay\"\n :disabled=\"underlayOpacityLocal === 'transparent'\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.wallpaper') }}</h4>\n <ColorInput\n v-model=\"wallpaperColorLocal\"\n name=\"wallpaper\"\n :label=\"$t('settings.style.advanced_colors.wallpaper')\"\n :fallback=\"previewTheme.colors.wallpaper\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.poll') }}</h4>\n <ColorInput\n v-model=\"pollColorLocal\"\n name=\"poll\"\n :label=\"$t('settings.background')\"\n :fallback=\"previewTheme.colors.poll\"\n />\n <ColorInput\n v-model=\"pollTextColorLocal\"\n name=\"pollText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.pollText\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.icons') }}</h4>\n <ColorInput\n v-model=\"iconColorLocal\"\n name=\"icon\"\n :label=\"$t('settings.style.advanced_colors.icons')\"\n :fallback=\"previewTheme.colors.icon\"\n />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.highlight') }}</h4>\n <ColorInput\n v-model=\"highlightColorLocal\"\n name=\"highlight\"\n :label=\"$t('settings.background')\"\n :fallback=\"previewTheme.colors.highlight\"\n />\n <ColorInput\n v-model=\"highlightTextColorLocal\"\n name=\"highlightText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.highlightText\"\n />\n <ContrastRatio :contrast=\"previewContrast.highlightText\" />\n <ColorInput\n v-model=\"highlightLinkColorLocal\"\n name=\"highlightLink\"\n :label=\"$t('settings.links')\"\n :fallback=\"previewTheme.colors.highlightLink\"\n />\n <ContrastRatio :contrast=\"previewContrast.highlightLink\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.popover') }}</h4>\n <ColorInput\n v-model=\"popoverColorLocal\"\n name=\"popover\"\n :label=\"$t('settings.background')\"\n :fallback=\"previewTheme.colors.popover\"\n />\n <OpacityInput\n v-model=\"popoverOpacityLocal\"\n name=\"popoverOpacity\"\n :fallback=\"previewTheme.opacity.popover\"\n :disabled=\"popoverOpacityLocal === 'transparent'\"\n />\n <ColorInput\n v-model=\"popoverTextColorLocal\"\n name=\"popoverText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.popoverText\"\n />\n <ContrastRatio :contrast=\"previewContrast.popoverText\" />\n <ColorInput\n v-model=\"popoverLinkColorLocal\"\n name=\"popoverLink\"\n :label=\"$t('settings.links')\"\n :fallback=\"previewTheme.colors.popoverLink\"\n />\n <ContrastRatio :contrast=\"previewContrast.popoverLink\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.selectedPost') }}</h4>\n <ColorInput\n v-model=\"selectedPostColorLocal\"\n name=\"selectedPost\"\n :label=\"$t('settings.background')\"\n :fallback=\"previewTheme.colors.selectedPost\"\n />\n <ColorInput\n v-model=\"selectedPostTextColorLocal\"\n name=\"selectedPostText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.selectedPostText\"\n />\n <ContrastRatio :contrast=\"previewContrast.selectedPostText\" />\n <ColorInput\n v-model=\"selectedPostLinkColorLocal\"\n name=\"selectedPostLink\"\n :label=\"$t('settings.links')\"\n :fallback=\"previewTheme.colors.selectedPostLink\"\n />\n <ContrastRatio :contrast=\"previewContrast.selectedPostLink\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('settings.style.advanced_colors.selectedMenu') }}</h4>\n <ColorInput\n v-model=\"selectedMenuColorLocal\"\n name=\"selectedMenu\"\n :label=\"$t('settings.background')\"\n :fallback=\"previewTheme.colors.selectedMenu\"\n />\n <ColorInput\n v-model=\"selectedMenuTextColorLocal\"\n name=\"selectedMenuText\"\n :label=\"$t('settings.text')\"\n :fallback=\"previewTheme.colors.selectedMenuText\"\n />\n <ContrastRatio :contrast=\"previewContrast.selectedMenuText\" />\n <ColorInput\n v-model=\"selectedMenuLinkColorLocal\"\n name=\"selectedMenuLink\"\n :label=\"$t('settings.links')\"\n :fallback=\"previewTheme.colors.selectedMenuLink\"\n />\n <ContrastRatio :contrast=\"previewContrast.selectedMenuLink\" />\n </div>\n <div class=\"color-item\">\n <h4>{{ $t('chats.chats') }}</h4>\n <ColorInput\n v-model=\"chatBgColorLocal\"\n name=\"chatBgColor\"\n :fallback=\"previewTheme.colors.bg\"\n :label=\"$t('settings.background')\"\n />\n <h5>{{ $t('settings.style.advanced_colors.chat.incoming') }}</h5>\n <ColorInput\n v-model=\"chatMessageIncomingBgColorLocal\"\n name=\"chatMessageIncomingBgColor\"\n :fallback=\"previewTheme.colors.bg\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"chatMessageIncomingTextColorLocal\"\n name=\"chatMessageIncomingTextColor\"\n :fallback=\"previewTheme.colors.text\"\n :label=\"$t('settings.text')\"\n />\n <ColorInput\n v-model=\"chatMessageIncomingLinkColorLocal\"\n name=\"chatMessageIncomingLinkColor\"\n :fallback=\"previewTheme.colors.link\"\n :label=\"$t('settings.links')\"\n />\n <ColorInput\n v-model=\"chatMessageIncomingBorderColorLocal\"\n name=\"chatMessageIncomingBorderLinkColor\"\n :fallback=\"previewTheme.colors.fg\"\n :label=\"$t('settings.style.advanced_colors.chat.border')\"\n />\n <h5>{{ $t('settings.style.advanced_colors.chat.outgoing') }}</h5>\n <ColorInput\n v-model=\"chatMessageOutgoingBgColorLocal\"\n name=\"chatMessageOutgoingBgColor\"\n :fallback=\"previewTheme.colors.bg\"\n :label=\"$t('settings.background')\"\n />\n <ColorInput\n v-model=\"chatMessageOutgoingTextColorLocal\"\n name=\"chatMessageOutgoingTextColor\"\n :fallback=\"previewTheme.colors.text\"\n :label=\"$t('settings.text')\"\n />\n <ColorInput\n v-model=\"chatMessageOutgoingLinkColorLocal\"\n name=\"chatMessageOutgoingLinkColor\"\n :fallback=\"previewTheme.colors.link\"\n :label=\"$t('settings.links')\"\n />\n <ColorInput\n v-model=\"chatMessageOutgoingBorderColorLocal\"\n name=\"chatMessageOutgoingBorderLinkColor\"\n :fallback=\"previewTheme.colors.bg\"\n :label=\"$t('settings.style.advanced_colors.chat.border')\"\n />\n </div>\n </div>\n\n <div\n :label=\"$t('settings.style.radii._tab_label')\"\n class=\"radius-container\"\n >\n <div class=\"tab-header\">\n <p>{{ $t('settings.radii_help') }}</p>\n <button\n class=\"btn button-default\"\n @click=\"clearRoundness\"\n >\n {{ $t('settings.style.switcher.clear_all') }}\n </button>\n </div>\n <RangeInput\n v-model=\"btnRadiusLocal\"\n name=\"btnRadius\"\n :label=\"$t('settings.btnRadius')\"\n :fallback=\"previewTheme.radii.btn\"\n max=\"16\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"inputRadiusLocal\"\n name=\"inputRadius\"\n :label=\"$t('settings.inputRadius')\"\n :fallback=\"previewTheme.radii.input\"\n max=\"9\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"checkboxRadiusLocal\"\n name=\"checkboxRadius\"\n :label=\"$t('settings.checkboxRadius')\"\n :fallback=\"previewTheme.radii.checkbox\"\n max=\"16\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"panelRadiusLocal\"\n name=\"panelRadius\"\n :label=\"$t('settings.panelRadius')\"\n :fallback=\"previewTheme.radii.panel\"\n max=\"50\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"avatarRadiusLocal\"\n name=\"avatarRadius\"\n :label=\"$t('settings.avatarRadius')\"\n :fallback=\"previewTheme.radii.avatar\"\n max=\"28\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"avatarAltRadiusLocal\"\n name=\"avatarAltRadius\"\n :label=\"$t('settings.avatarAltRadius')\"\n :fallback=\"previewTheme.radii.avatarAlt\"\n max=\"28\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"attachmentRadiusLocal\"\n name=\"attachmentRadius\"\n :label=\"$t('settings.attachmentRadius')\"\n :fallback=\"previewTheme.radii.attachment\"\n max=\"50\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"tooltipRadiusLocal\"\n name=\"tooltipRadius\"\n :label=\"$t('settings.tooltipRadius')\"\n :fallback=\"previewTheme.radii.tooltip\"\n max=\"50\"\n hard-min=\"0\"\n />\n <RangeInput\n v-model=\"chatMessageRadiusLocal\"\n name=\"chatMessageRadius\"\n :label=\"$t('settings.chatMessageRadius')\"\n :fallback=\"previewTheme.radii.chatMessage || 2\"\n max=\"50\"\n hard-min=\"0\"\n />\n </div>\n\n <div\n :label=\"$t('settings.style.shadows._tab_label')\"\n class=\"shadow-container\"\n >\n <div class=\"tab-header shadow-selector\">\n <div class=\"select-container\">\n {{ $t('settings.style.shadows.component') }}\n {{ ' ' }}\n <Select\n id=\"shadow-switcher\"\n v-model=\"shadowSelected\"\n class=\"shadow-switcher\"\n >\n <option\n v-for=\"shadow in shadowsAvailable\"\n :key=\"shadow\"\n :value=\"shadow\"\n >\n {{ $t('settings.style.shadows.components.' + shadow) }}\n </option>\n </Select>\n </div>\n <div class=\"override\">\n <label\n for=\"override\"\n class=\"label\"\n >\n {{ $t('settings.style.shadows.override') }}\n </label>\n {{ ' ' }}\n <input\n id=\"override\"\n v-model=\"currentShadowOverriden\"\n name=\"override\"\n class=\"input-override\"\n type=\"checkbox\"\n >\n <label\n class=\"checkbox-label\"\n for=\"override\"\n />\n </div>\n <button\n class=\"btn button-default\"\n @click=\"clearShadows\"\n >\n {{ $t('settings.style.switcher.clear_all') }}\n </button>\n </div>\n <ShadowControl\n v-model=\"currentShadow\"\n :ready=\"!!currentShadowFallback\"\n :fallback=\"currentShadowFallback\"\n />\n <div v-if=\"shadowSelected === 'avatar' || shadowSelected === 'avatarStatus'\">\n <i18n-t\n scope=\"global\"\n keypath=\"settings.style.shadows.filter_hint.always_drop_shadow\"\n tag=\"p\"\n >\n <code>filter: drop-shadow()</code>\n </i18n-t>\n <p>{{ $t('settings.style.shadows.filter_hint.avatar_inset') }}</p>\n <i18n-t\n scope=\"global\"\n keypath=\"settings.style.shadows.filter_hint.drop_shadow_syntax\"\n tag=\"p\"\n >\n <code>drop-shadow</code>\n <code>spread-radius</code>\n <code>inset</code>\n </i18n-t>\n <i18n-t\n scope=\"global\"\n keypath=\"settings.style.shadows.filter_hint.inset_classic\"\n tag=\"p\"\n >\n <code>box-shadow</code>\n </i18n-t>\n <p>{{ $t('settings.style.shadows.filter_hint.spread_zero') }}</p>\n </div>\n </div>\n\n <div\n :label=\"$t('settings.style.fonts._tab_label')\"\n class=\"fonts-container\"\n >\n <div class=\"tab-header\">\n <p>{{ $t('settings.style.fonts.help') }}</p>\n <button\n class=\"btn button-default\"\n @click=\"clearFonts\"\n >\n {{ $t('settings.style.switcher.clear_all') }}\n </button>\n </div>\n <FontControl\n v-model=\"fontsLocal.interface\"\n name=\"ui\"\n :label=\"$t('settings.style.fonts.components.interface')\"\n :fallback=\"previewTheme.fonts.interface\"\n no-inherit=\"1\"\n />\n <FontControl\n v-model=\"fontsLocal.input\"\n name=\"input\"\n :label=\"$t('settings.style.fonts.components.input')\"\n :fallback=\"previewTheme.fonts.input\"\n />\n <FontControl\n v-model=\"fontsLocal.post\"\n name=\"post\"\n :label=\"$t('settings.style.fonts.components.post')\"\n :fallback=\"previewTheme.fonts.post\"\n />\n <FontControl\n v-model=\"fontsLocal.postCode\"\n name=\"postCode\"\n :label=\"$t('settings.style.fonts.components.postCode')\"\n :fallback=\"previewTheme.fonts.postCode\"\n />\n </div>\n </tab-switcher>\n </keep-alive>\n\n <teleport\n v-if=\"isActive\"\n to=\"#unscrolled-content\"\n >\n <div class=\"apply-container\">\n <button\n class=\"btn button-default submit\"\n :disabled=\"!themeValid\"\n @click=\"setCustomTheme\"\n >\n {{ $t('general.apply') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"clearAll\"\n >\n {{ $t('settings.style.switcher.reset') }}\n </button>\n </div>\n </teleport>\n </div>\n</template>\n\n<script src=\"./theme_tab.js\"></script>\n\n<style src=\"./theme_tab.scss\" lang=\"scss\"></style>\n","<template>\n <div\n class=\"color-input style-control\"\n :class=\"{ disabled: !present || disabled }\"\n >\n <label\n :for=\"name\"\n class=\"label\"\n >\n {{ label }}\n </label>\n <Checkbox\n v-if=\"typeof fallback !== 'undefined' && showOptionalTickbox\"\n :model-value=\"present\"\n :disabled=\"disabled\"\n class=\"opt\"\n @update:modelValue=\"$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)\"\n />\n <div class=\"input color-input-field\">\n <input\n :id=\"name + '-t'\"\n class=\"textColor unstyled\"\n type=\"text\"\n :value=\"modelValue || fallback\"\n :disabled=\"!present || disabled\"\n @input=\"$emit('update:modelValue', $event.target.value)\"\n >\n <input\n v-if=\"validColor\"\n :id=\"name\"\n class=\"nativeColor unstyled\"\n type=\"color\"\n :value=\"modelValue || fallback\"\n :disabled=\"!present || disabled\"\n @input=\"$emit('update:modelValue', $event.target.value)\"\n >\n <div\n v-if=\"transparentColor\"\n class=\"transparentIndicator\"\n />\n <div\n v-if=\"computedColor\"\n class=\"computedIndicator\"\n :style=\"{backgroundColor: fallback}\"\n />\n </div>\n </div>\n</template>\n<script>\nimport Checkbox from '../checkbox/checkbox.vue'\nimport { hex2rgb } from '../../services/color_convert/color_convert.js'\nexport default {\n components: {\n Checkbox\n },\n props: {\n // Name of color, used for identifying\n name: {\n required: true,\n type: String\n },\n // Readable label\n label: {\n required: true,\n type: String\n },\n // Color value, should be required but vue cannot tell the difference\n // between \"property missing\" and \"property set to undefined\"\n modelValue: {\n required: false,\n type: String,\n default: undefined\n },\n // Color fallback to use when value is not defeind\n fallback: {\n required: false,\n type: String,\n default: undefined\n },\n // Disable the control\n disabled: {\n required: false,\n type: Boolean,\n default: false\n },\n // Show \"optional\" tickbox, for when value might become mandatory\n showOptionalTickbox: {\n required: false,\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue'],\n computed: {\n present () {\n return typeof this.modelValue !== 'undefined'\n },\n validColor () {\n return hex2rgb(this.modelValue || this.fallback)\n },\n transparentColor () {\n return this.modelValue === 'transparent'\n },\n computedColor () {\n return this.modelValue && this.modelValue.startsWith('--')\n }\n }\n}\n</script>\n<style lang=\"scss\" src=\"./color_input.scss\"></style>\n\n<style lang=\"scss\">\n.color-control {\n input.text-input {\n max-width: 7em;\n flex: 1;\n }\n}\n</style>\n","import { render } from \"./color_input.vue?vue&type=template&id=a9be5fb8\"\nimport script from \"./color_input.vue?vue&type=script&lang=js\"\nexport * from \"./color_input.vue?vue&type=script&lang=js\"\n\nimport \"./color_input.scss?vue&type=style&index=0&lang=scss\"\nimport \"./color_input.vue?vue&type=style&index=1&id=a9be5fb8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"range-control style-control\"\n :class=\"{ disabled: !present || disabled }\"\n >\n <label\n :for=\"name\"\n class=\"label\"\n >\n {{ label }}\n </label>\n <input\n v-if=\"typeof fallback !== 'undefined'\"\n :id=\"name + '-o'\"\n class=\"opt\"\n type=\"checkbox\"\n :checked=\"present\"\n @change=\"$emit('update:modelValue', !present ? fallback : undefined)\"\n >\n <label\n v-if=\"typeof fallback !== 'undefined'\"\n class=\"opt-l\"\n :for=\"name + '-o'\"\n />\n <input\n :id=\"name\"\n class=\"input-number\"\n type=\"range\"\n :value=\"modelValue || fallback\"\n :disabled=\"!present || disabled\"\n :max=\"max || hardMax || 100\"\n :min=\"min || hardMin || 0\"\n :step=\"step || 1\"\n @input=\"$emit('update:modelValue', $event.target.value)\"\n >\n <input\n :id=\"name\"\n class=\"input-number\"\n type=\"number\"\n :value=\"modelValue || fallback\"\n :disabled=\"!present || disabled\"\n :max=\"hardMax\"\n :min=\"hardMin\"\n :step=\"step || 1\"\n @input=\"$emit('update:modelValue', $event.target.value)\"\n >\n </div>\n</template>\n\n<script>\nexport default {\n props: [\n 'name', 'modelValue', 'fallback', 'disabled', 'label', 'max', 'min', 'step', 'hardMin', 'hardMax'\n ],\n emits: ['update:modelValue'],\n computed: {\n present () {\n return typeof this.modelValue !== 'undefined'\n }\n }\n}\n</script>\n","import { render } from \"./range_input.vue?vue&type=template&id=7ecff9e8\"\nimport script from \"./range_input.vue?vue&type=script&lang=js\"\nexport * from \"./range_input.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"opacity-control style-control\"\n :class=\"{ disabled: !present || disabled }\"\n >\n <label\n :for=\"name\"\n class=\"label\"\n >\n {{ $t('settings.style.common.opacity') }}\n </label>\n <Checkbox\n v-if=\"typeof fallback !== 'undefined'\"\n :model-value=\"present\"\n :disabled=\"disabled\"\n class=\"opt\"\n @update:modelValue=\"$emit('update:modelValue', !present ? fallback : undefined)\"\n />\n <input\n :id=\"name\"\n class=\"input-number\"\n type=\"number\"\n :value=\"modelValue || fallback\"\n :disabled=\"!present || disabled\"\n max=\"1\"\n min=\"0\"\n step=\".05\"\n @input=\"$emit('update:modelValue', $event.target.value)\"\n >\n </div>\n</template>\n\n<script>\nimport Checkbox from '../checkbox/checkbox.vue'\nexport default {\n components: {\n Checkbox\n },\n props: [\n 'name', 'modelValue', 'fallback', 'disabled'\n ],\n emits: ['update:modelValue'],\n computed: {\n present () {\n return typeof this.modelValue !== 'undefined'\n }\n }\n}\n</script>\n","import { render } from \"./opacity_input.vue?vue&type=template&id=69949f84\"\nimport script from \"./opacity_input.vue?vue&type=script&lang=js\"\nexport * from \"./opacity_input.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"shadow-control\"\n :class=\"{ disabled: !present }\"\n >\n <div class=\"shadow-preview-container\">\n <div\n :disabled=\"!present\"\n class=\"y-shift-control\"\n >\n <input\n v-model=\"selected.y\"\n :disabled=\"!present\"\n class=\"input-number\"\n type=\"number\"\n >\n <div class=\"wrap\">\n <input\n v-model=\"selected.y\"\n :disabled=\"!present\"\n class=\"input-range\"\n type=\"range\"\n max=\"20\"\n min=\"-20\"\n >\n </div>\n </div>\n <div class=\"preview-window\">\n <div\n class=\"preview-block\"\n :style=\"style\"\n />\n </div>\n <div\n :disabled=\"!present\"\n class=\"x-shift-control\"\n >\n <input\n v-model=\"selected.x\"\n :disabled=\"!present\"\n class=\"input-number\"\n type=\"number\"\n >\n <div class=\"wrap\">\n <input\n v-model=\"selected.x\"\n :disabled=\"!present\"\n class=\"input-range\"\n type=\"range\"\n max=\"20\"\n min=\"-20\"\n >\n </div>\n </div>\n </div>\n\n <div class=\"shadow-tweak\">\n <div\n :disabled=\"usingFallback\"\n class=\"id-control style-control\"\n >\n <Select\n id=\"shadow-switcher\"\n v-model=\"selectedId\"\n class=\"shadow-switcher\"\n :disabled=\"!ready || usingFallback\"\n >\n <option\n v-for=\"(shadow, index) in cValue\"\n :key=\"index\"\n :value=\"index\"\n >\n {{ $t('settings.style.shadows.shadow_id', { value: index }) }}\n </option>\n </Select>\n <button\n class=\"btn button-default\"\n :disabled=\"!ready || !present\"\n @click=\"del\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n />\n </button>\n <button\n class=\"btn button-default\"\n :disabled=\"!moveUpValid\"\n @click=\"moveUp\"\n >\n <FAIcon\n fixed-width\n icon=\"chevron-up\"\n />\n </button>\n <button\n class=\"btn button-default\"\n :disabled=\"!moveDnValid\"\n @click=\"moveDn\"\n >\n <FAIcon\n fixed-width\n icon=\"chevron-down\"\n />\n </button>\n <button\n class=\"btn button-default\"\n :disabled=\"usingFallback\"\n @click=\"add\"\n >\n <FAIcon\n fixed-width\n icon=\"plus\"\n />\n </button>\n </div>\n <div\n :disabled=\"!present\"\n class=\"inset-control style-control\"\n >\n <label\n for=\"inset\"\n class=\"label\"\n >\n {{ $t('settings.style.shadows.inset') }}\n </label>\n <input\n id=\"inset\"\n v-model=\"selected.inset\"\n :disabled=\"!present\"\n name=\"inset\"\n class=\"input-inset\"\n type=\"checkbox\"\n >\n <label\n class=\"checkbox-label\"\n for=\"inset\"\n />\n </div>\n <div\n :disabled=\"!present\"\n class=\"blur-control style-control\"\n >\n <label\n for=\"spread\"\n class=\"label\"\n >\n {{ $t('settings.style.shadows.blur') }}\n </label>\n <input\n id=\"blur\"\n v-model=\"selected.blur\"\n :disabled=\"!present\"\n name=\"blur\"\n class=\"input-range\"\n type=\"range\"\n max=\"20\"\n min=\"0\"\n >\n <input\n v-model=\"selected.blur\"\n :disabled=\"!present\"\n class=\"input-number\"\n type=\"number\"\n min=\"0\"\n >\n </div>\n <div\n :disabled=\"!present\"\n class=\"spread-control style-control\"\n >\n <label\n for=\"spread\"\n class=\"label\"\n >\n {{ $t('settings.style.shadows.spread') }}\n </label>\n <input\n id=\"spread\"\n v-model=\"selected.spread\"\n :disabled=\"!present\"\n name=\"spread\"\n class=\"input-range\"\n type=\"range\"\n max=\"20\"\n min=\"-20\"\n >\n <input\n v-model=\"selected.spread\"\n :disabled=\"!present\"\n class=\"input-number\"\n type=\"number\"\n >\n </div>\n <ColorInput\n v-model=\"selected.color\"\n :disabled=\"!present\"\n :label=\"$t('settings.style.common.color')\"\n :fallback=\"currentFallback.color\"\n :show-optional-tickbox=\"false\"\n name=\"shadow\"\n />\n <OpacityInput\n v-model=\"selected.alpha\"\n :disabled=\"!present\"\n />\n <i18n-t\n scope=\"global\"\n keypath=\"settings.style.shadows.hintV3\"\n tag=\"p\"\n >\n <code>--variable,mod</code>\n </i18n-t>\n </div>\n </div>\n</template>\n\n<script src=\"./shadow_control.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.shadow-control {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n margin-bottom: 1em;\n\n .shadow-preview-container,\n .shadow-tweak {\n margin: 5px 6px 0 0;\n }\n\n .shadow-preview-container {\n flex: 0;\n display: flex;\n flex-wrap: wrap;\n\n $side: 15em;\n\n input[type=\"number\"] {\n width: 5em;\n min-width: 2em;\n }\n\n .x-shift-control,\n .y-shift-control {\n display: flex;\n flex: 0;\n\n &[disabled=\"disabled\"] * {\n opacity: 0.5;\n }\n }\n\n .x-shift-control {\n align-items: flex-start;\n }\n\n .x-shift-control .wrap,\n input[type=\"range\"] {\n margin: 0;\n width: $side;\n height: 2em;\n }\n\n .y-shift-control {\n flex-direction: column;\n align-items: flex-end;\n\n .wrap {\n width: 2em;\n height: $side;\n }\n\n input[type=\"range\"] {\n transform-origin: 1em 1em;\n transform: rotate(90deg);\n }\n }\n\n .preview-window {\n flex: 1;\n background-color: #999;\n display: flex;\n align-items: center;\n justify-content: center;\n background-image:\n linear-gradient(45deg, #666 25%, transparent 25%),\n linear-gradient(-45deg, #666 25%, transparent 25%),\n linear-gradient(45deg, transparent 75%, #666 75%),\n linear-gradient(-45deg, transparent 75%, #666 75%);\n background-size: 20px 20px;\n background-position: 0 0, 0 10px, 10px -10px, -10px 0;\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .preview-block {\n width: 33%;\n height: 33%;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n }\n\n .shadow-tweak {\n flex: 1;\n min-width: 280px;\n\n .id-control {\n align-items: stretch;\n\n .shadow-switcher {\n flex: 1;\n }\n\n .shadow-switcher,\n .btn {\n min-width: 1px;\n margin-right: 5px;\n }\n\n .btn {\n padding: 0 0.4em;\n margin: 0 0.1em;\n }\n }\n }\n}\n</style>\n","import ColorInput from '../color_input/color_input.vue'\nimport OpacityInput from '../opacity_input/opacity_input.vue'\nimport Select from '../select/select.vue'\nimport { getCssShadow } from '../../services/style_setter/style_setter.js'\nimport { hex2rgb } from '../../services/color_convert/color_convert.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faChevronDown,\n faChevronUp,\n faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronDown,\n faChevronUp,\n faTimes,\n faPlus\n)\n\nconst toModel = (object = {}) => ({\n x: 0,\n y: 0,\n blur: 0,\n spread: 0,\n inset: false,\n color: '#000000',\n alpha: 1,\n ...object\n})\n\nexport default {\n // 'modelValue' and 'Fallback' can be undefined, but if they are\n // initially vue won't detect it when they become something else\n // therefore i'm using \"ready\" which should be passed as true when\n // data becomes available\n props: [\n 'modelValue', 'fallback', 'ready'\n ],\n emits: ['update:modelValue'],\n data () {\n return {\n selectedId: 0,\n // TODO there are some bugs regarding display of array (it's not getting updated when deleting for some reason)\n cValue: (this.modelValue || this.fallback || []).map(toModel)\n }\n },\n components: {\n ColorInput,\n OpacityInput,\n Select\n },\n methods: {\n add () {\n this.cValue.push(toModel(this.selected))\n this.selectedId = this.cValue.length - 1\n },\n del () {\n this.cValue.splice(this.selectedId, 1)\n this.selectedId = this.cValue.length === 0 ? undefined : Math.max(this.selectedId - 1, 0)\n },\n moveUp () {\n const movable = this.cValue.splice(this.selectedId, 1)[0]\n this.cValue.splice(this.selectedId - 1, 0, movable)\n this.selectedId -= 1\n },\n moveDn () {\n const movable = this.cValue.splice(this.selectedId, 1)[0]\n this.cValue.splice(this.selectedId + 1, 0, movable)\n this.selectedId += 1\n }\n },\n beforeUpdate () {\n this.cValue = this.modelValue || this.fallback\n },\n computed: {\n anyShadows () {\n return this.cValue.length > 0\n },\n anyShadowsFallback () {\n return this.fallback.length > 0\n },\n selected () {\n if (this.ready && this.anyShadows) {\n return this.cValue[this.selectedId]\n } else {\n return toModel({})\n }\n },\n currentFallback () {\n if (this.ready && this.anyShadowsFallback) {\n return this.fallback[this.selectedId]\n } else {\n return toModel({})\n }\n },\n moveUpValid () {\n return this.ready && this.selectedId > 0\n },\n moveDnValid () {\n return this.ready && this.selectedId < this.cValue.length - 1\n },\n present () {\n return this.ready &&\n typeof this.cValue[this.selectedId] !== 'undefined' &&\n !this.usingFallback\n },\n usingFallback () {\n return typeof this.modelValue === 'undefined'\n },\n rgb () {\n return hex2rgb(this.selected.color)\n },\n style () {\n return this.ready\n ? {\n boxShadow: getCssShadow(this.fallback)\n }\n : {}\n }\n }\n}\n","import { render } from \"./shadow_control.vue?vue&type=template&id=e65a0b78\"\nimport script from \"./shadow_control.js?vue&type=script&lang=js\"\nexport * from \"./shadow_control.js?vue&type=script&lang=js\"\n\nimport \"./shadow_control.vue?vue&type=style&index=0&id=e65a0b78&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { set } from 'lodash'\nimport Select from '../select/select.vue'\n\nexport default {\n components: {\n Select\n },\n props: [\n 'name', 'label', 'modelValue', 'fallback', 'options', 'no-inherit'\n ],\n emits: ['update:modelValue'],\n data () {\n return {\n lValue: this.modelValue,\n availableOptions: [\n this.noInherit ? '' : 'inherit',\n 'custom',\n ...(this.options || []),\n 'serif',\n 'monospace',\n 'sans-serif'\n ].filter(_ => _)\n }\n },\n beforeUpdate () {\n this.lValue = this.modelValue\n },\n computed: {\n present () {\n return typeof this.lValue !== 'undefined'\n },\n dValue () {\n return this.lValue || this.fallback || {}\n },\n family: {\n get () {\n return this.dValue.family\n },\n set (v) {\n set(this.lValue, 'family', v)\n this.$emit('update:modelValue', this.lValue)\n }\n },\n isCustom () {\n return this.preset === 'custom'\n },\n preset: {\n get () {\n if (this.family === 'serif' ||\n this.family === 'sans-serif' ||\n this.family === 'monospace' ||\n this.family === 'inherit') {\n return this.family\n } else {\n return 'custom'\n }\n },\n set (v) {\n this.family = v === 'custom' ? '' : v\n }\n }\n }\n}\n","import { render } from \"./font_control.vue?vue&type=template&id=094b0e70\"\nimport script from \"./font_control.js?vue&type=script&lang=js\"\nexport * from \"./font_control.js?vue&type=script&lang=js\"\n\nimport \"./font_control.vue?vue&type=style&index=0&id=094b0e70&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"font-control style-control\"\n :class=\"{ custom: isCustom }\"\n >\n <label\n :for=\"preset === 'custom' ? name : name + '-font-switcher'\"\n class=\"label\"\n >\n {{ label }}\n </label>\n <input\n v-if=\"typeof fallback !== 'undefined'\"\n :id=\"name + '-o'\"\n class=\"opt exlcude-disabled\"\n type=\"checkbox\"\n :checked=\"present\"\n @change=\"$emit('update:modelValue', typeof modelValue === 'undefined' ? fallback : undefined)\"\n >\n <label\n v-if=\"typeof fallback !== 'undefined'\"\n class=\"opt-l\"\n :for=\"name + '-o'\"\n />\n {{ ' ' }}\n <Select\n :id=\"name + '-font-switcher'\"\n v-model=\"preset\"\n :disabled=\"!present\"\n class=\"font-switcher\"\n >\n <option\n v-for=\"option in availableOptions\"\n :key=\"option\"\n :value=\"option\"\n >\n {{ option === 'custom' ? $t('settings.style.fonts.custom') : option }}\n </option>\n </Select>\n <input\n v-if=\"isCustom\"\n :id=\"name\"\n v-model=\"family\"\n class=\"custom-font\"\n type=\"text\"\n >\n </div>\n</template>\n\n<script src=\"./font_control.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.font-control {\n input.custom-font {\n min-width: 10em;\n }\n\n &.custom {\n /* TODO Should make proper joiners... */\n .font-switcher {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n .custom-font {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n }\n}\n</style>\n","<template>\n <span\n v-if=\"contrast\"\n class=\"contrast-ratio\"\n >\n <span\n :title=\"hint\"\n class=\"rating\"\n >\n <span v-if=\"contrast.aaa\">\n <FAIcon icon=\"thumbs-up\" />\n </span>\n <span v-if=\"!contrast.aaa && contrast.aa\">\n <FAIcon icon=\"adjust\" />\n </span>\n <span v-if=\"!contrast.aaa && !contrast.aa\">\n <FAIcon icon=\"exclamation-triangle\" />\n </span>\n </span>\n <span\n v-if=\"contrast && large\"\n class=\"rating\"\n :title=\"hint_18pt\"\n >\n <span v-if=\"contrast.laaa\">\n <FAIcon icon=\"thumbs-up\" />\n </span>\n <span v-if=\"!contrast.laaa && contrast.laa\">\n <FAIcon icon=\"adjust\" />\n </span>\n <span v-if=\"!contrast.laaa && !contrast.laa\">\n <FAIcon icon=\"exclamation-triangle\" />\n </span>\n </span>\n </span>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAdjust,\n faExclamationTriangle,\n faThumbsUp\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAdjust,\n faExclamationTriangle,\n faThumbsUp\n)\n\nexport default {\n props: {\n large: {\n required: false,\n type: Boolean,\n default: false\n },\n // TODO: Make theme switcher compute theme initially so that contrast\n // component won't be called without contrast data\n contrast: {\n required: false,\n type: Object,\n default: () => ({})\n }\n },\n computed: {\n hint () {\n const levelVal = this.contrast.aaa ? 'aaa' : (this.contrast.aa ? 'aa' : 'bad')\n const level = this.$t(`settings.style.common.contrast.level.${levelVal}`)\n const context = this.$t('settings.style.common.contrast.context.text')\n const ratio = this.contrast.text\n return this.$t('settings.style.common.contrast.hint', { level, context, ratio })\n },\n hint_18pt () {\n const levelVal = this.contrast.laaa ? 'aaa' : (this.contrast.laa ? 'aa' : 'bad')\n const level = this.$t(`settings.style.common.contrast.level.${levelVal}`)\n const context = this.$t('settings.style.common.contrast.context.18pt')\n const ratio = this.contrast.text\n return this.$t('settings.style.common.contrast.hint', { level, context, ratio })\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.contrast-ratio {\n display: flex;\n justify-content: flex-end;\n margin-top: -4px;\n margin-bottom: 5px;\n\n .label {\n margin-right: 1em;\n }\n\n .rating {\n display: inline-block;\n text-align: center;\n margin-left: 0.5em;\n }\n}\n</style>\n","import { render } from \"./contrast_ratio.vue?vue&type=template&id=1d1df7c6\"\nimport script from \"./contrast_ratio.vue?vue&type=script&lang=js\"\nexport * from \"./contrast_ratio.vue?vue&type=script&lang=js\"\n\nimport \"./contrast_ratio.vue?vue&type=style&index=0&id=1d1df7c6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"preview-container\">\n <div class=\"underlay underlay-preview\" />\n <div class=\"panel dummy\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('settings.style.preview.header') }}\n <span class=\"badge badge-notification\">\n 99\n </span>\n </div>\n <span class=\"faint\">\n {{ $t('settings.style.preview.header_faint') }}\n </span>\n <span class=\"alert error\">\n {{ $t('settings.style.preview.error') }}\n </span>\n <button class=\"btn button-default\">\n {{ $t('settings.style.preview.button') }}\n </button>\n </div>\n <div class=\"panel-body theme-preview-content\">\n <div class=\"post\">\n <div class=\"avatar still-image\">\n ( ͡° ͜ʖ ͡°)\n </div>\n <div class=\"content\">\n <h4>\n {{ $t('settings.style.preview.content') }}\n </h4>\n\n <i18n-t\n scope=\"global\"\n keypath=\"settings.style.preview.text\"\n >\n <code style=\"font-family: var(--postCodeFont);\">\n {{ $t('settings.style.preview.mono') }}\n </code>\n <a style=\"color: var(--link);\">\n {{ $t('settings.style.preview.link') }}\n </a>\n </i18n-t>\n\n <div class=\"icons\">\n <FAIcon\n fixed-width\n style=\"color: var(--cBlue);\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"reply\"\n />\n <FAIcon\n fixed-width\n style=\"color: var(--cGreen);\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"retweet\"\n />\n <FAIcon\n fixed-width\n style=\"color: var(--cOrange);\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"star\"\n />\n <FAIcon\n fixed-width\n style=\"color: var(--cRed);\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </div>\n </div>\n </div>\n\n <div class=\"after-post\">\n <div class=\"avatar-alt\">\n :^)\n </div>\n <div class=\"content\">\n <i18n-t\n keypath=\"settings.style.preview.fine_print\"\n tag=\"span\"\n class=\"faint\"\n scope=\"global\"\n >\n <a style=\"color: var(--faintLink);\">\n {{ $t('settings.style.preview.faint_link') }}\n </a>\n </i18n-t>\n </div>\n </div>\n <div class=\"separator\" />\n\n <span class=\"alert error\">\n {{ $t('settings.style.preview.error') }}\n </span>\n <input\n :value=\"$t('settings.style.preview.input')\"\n type=\"text\"\n >\n\n <div class=\"actions\">\n <span class=\"checkbox\">\n <input\n id=\"preview_checkbox\"\n checked=\"very yes\"\n type=\"checkbox\"\n >\n <label for=\"preview_checkbox\">{{ $t('settings.style.preview.checkbox') }}</label>\n </span>\n <button class=\"btn button-default\">\n {{ $t('settings.style.preview.button') }}\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faStar,\n faRetweet,\n faReply\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faStar,\n faRetweet,\n faReply\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n.preview-container {\n position: relative;\n}\n\n.underlay-preview {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 10px;\n right: 10px;\n}\n</style>\n","import { render } from \"./preview.vue?vue&type=template&id=5454116a\"\nimport script from \"./preview.vue?vue&type=script&lang=js\"\nexport * from \"./preview.vue?vue&type=script&lang=js\"\n\nimport \"./preview.vue?vue&type=style&index=0&id=5454116a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import {\n rgb2hex,\n hex2rgb,\n getContrastRatioLayers\n} from 'src/services/color_convert/color_convert.js'\nimport {\n DEFAULT_SHADOWS,\n generateColors,\n generateShadows,\n generateRadii,\n generateFonts,\n composePreset,\n getThemes,\n shadows2to3,\n colors2to3\n} from 'src/services/style_setter/style_setter.js'\nimport {\n newImporter,\n newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n SLOT_INHERITANCE\n} from 'src/services/theme_data/pleromafe.js'\nimport {\n CURRENT_VERSION,\n OPACITIES,\n getLayers,\n getOpacitySlot\n} from 'src/services/theme_data/theme_data.service.js'\nimport ColorInput from 'src/components/color_input/color_input.vue'\nimport RangeInput from 'src/components/range_input/range_input.vue'\nimport OpacityInput from 'src/components/opacity_input/opacity_input.vue'\nimport ShadowControl from 'src/components/shadow_control/shadow_control.vue'\nimport FontControl from 'src/components/font_control/font_control.vue'\nimport ContrastRatio from 'src/components/contrast_ratio/contrast_ratio.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\nimport Select from 'src/components/select/select.vue'\n\nimport Preview from './preview.vue'\n\n// List of color values used in v1\nconst v1OnlyNames = [\n 'bg',\n 'fg',\n 'text',\n 'link',\n 'cRed',\n 'cGreen',\n 'cBlue',\n 'cOrange'\n].map(_ => _ + 'ColorLocal')\n\nconst colorConvert = (color) => {\n if (color.startsWith('--') || color === 'transparent') {\n return color\n } else {\n return hex2rgb(color)\n }\n}\n\nexport default {\n data () {\n return {\n themeImporter: newImporter({\n validator: this.importValidator,\n onImport: this.onImport,\n onImportFailure: this.onImportFailure\n }),\n themeExporter: newExporter({\n filename: 'pleroma_theme',\n getExportedObject: () => this.exportedTheme\n }),\n availableStyles: [],\n selected: '',\n selectedTheme: this.$store.getters.mergedConfig.theme,\n themeWarning: undefined,\n tempImportFile: undefined,\n engineVersion: 0,\n\n previewShadows: {},\n previewColors: {},\n previewRadii: {},\n previewFonts: {},\n\n shadowsInvalid: true,\n colorsInvalid: true,\n radiiInvalid: true,\n\n keepColor: false,\n keepShadows: false,\n keepOpacity: false,\n keepRoundness: false,\n keepFonts: false,\n\n ...Object.keys(SLOT_INHERITANCE)\n .map(key => [key, ''])\n .reduce((acc, [key, val]) => ({ ...acc, [key + 'ColorLocal']: val }), {}),\n\n ...Object.keys(OPACITIES)\n .map(key => [key, ''])\n .reduce((acc, [key, val]) => ({ ...acc, [key + 'OpacityLocal']: val }), {}),\n\n shadowSelected: undefined,\n shadowsLocal: {},\n fontsLocal: {},\n\n btnRadiusLocal: '',\n inputRadiusLocal: '',\n checkboxRadiusLocal: '',\n panelRadiusLocal: '',\n avatarRadiusLocal: '',\n avatarAltRadiusLocal: '',\n attachmentRadiusLocal: '',\n tooltipRadiusLocal: '',\n chatMessageRadiusLocal: ''\n }\n },\n created () {\n const self = this\n\n getThemes()\n .then((promises) => {\n return Promise.all(\n Object.entries(promises)\n .map(([k, v]) => v.then(res => [k, res]))\n )\n })\n .then(themes => themes.reduce((acc, [k, v]) => {\n if (v) {\n return {\n ...acc,\n [k]: v\n }\n } else {\n return acc\n }\n }, {}))\n .then((themesComplete) => {\n self.availableStyles = themesComplete\n })\n },\n mounted () {\n this.loadThemeFromLocalStorage()\n if (typeof this.shadowSelected === 'undefined') {\n this.shadowSelected = this.shadowsAvailable[0]\n }\n },\n computed: {\n themeWarningHelp () {\n if (!this.themeWarning) return\n const t = this.$t\n const pre = 'settings.style.switcher.help.'\n const {\n origin,\n themeEngineVersion,\n type,\n noActionsPossible\n } = this.themeWarning\n if (origin === 'file') {\n // Loaded v2 theme from file\n if (themeEngineVersion === 2 && type === 'wrong_version') {\n return t(pre + 'v2_imported')\n }\n if (themeEngineVersion > CURRENT_VERSION) {\n return t(pre + 'future_version_imported') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'snapshot_missing')\n : t(pre + 'snapshot_present')\n )\n }\n if (themeEngineVersion < CURRENT_VERSION) {\n return t(pre + 'future_version_imported') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'snapshot_missing')\n : t(pre + 'snapshot_present')\n )\n }\n } else if (origin === 'localStorage') {\n if (type === 'snapshot_source_mismatch') {\n return t(pre + 'snapshot_source_mismatch')\n }\n // FE upgraded from v2\n if (themeEngineVersion === 2) {\n return t(pre + 'upgraded_from_v2')\n }\n // Admin downgraded FE\n if (themeEngineVersion > CURRENT_VERSION) {\n return t(pre + 'fe_downgraded') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'migration_snapshot_ok')\n : t(pre + 'migration_snapshot_gone')\n )\n }\n // Admin upgraded FE\n if (themeEngineVersion < CURRENT_VERSION) {\n return t(pre + 'fe_upgraded') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'migration_snapshot_ok')\n : t(pre + 'migration_snapshot_gone')\n )\n }\n }\n },\n selectedVersion () {\n return Array.isArray(this.selectedTheme) ? 1 : 2\n },\n currentColors () {\n return Object.keys(SLOT_INHERITANCE)\n .map(key => [key, this[key + 'ColorLocal']])\n .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {})\n },\n currentOpacity () {\n return Object.keys(OPACITIES)\n .map(key => [key, this[key + 'OpacityLocal']])\n .reduce((acc, [key, val]) => ({ ...acc, [key]: val }), {})\n },\n currentRadii () {\n return {\n btn: this.btnRadiusLocal,\n input: this.inputRadiusLocal,\n checkbox: this.checkboxRadiusLocal,\n panel: this.panelRadiusLocal,\n avatar: this.avatarRadiusLocal,\n avatarAlt: this.avatarAltRadiusLocal,\n tooltip: this.tooltipRadiusLocal,\n attachment: this.attachmentRadiusLocal,\n chatMessage: this.chatMessageRadiusLocal\n }\n },\n preview () {\n return composePreset(this.previewColors, this.previewRadii, this.previewShadows, this.previewFonts)\n },\n previewTheme () {\n if (!this.preview.theme.colors) return { colors: {}, opacity: {}, radii: {}, shadows: {}, fonts: {} }\n return this.preview.theme\n },\n // This needs optimization maybe\n previewContrast () {\n try {\n if (!this.previewTheme.colors.bg) return {}\n const colors = this.previewTheme.colors\n const opacity = this.previewTheme.opacity\n if (!colors.bg) return {}\n const hints = (ratio) => ({\n text: ratio.toPrecision(3) + ':1',\n // AA level, AAA level\n aa: ratio >= 4.5,\n aaa: ratio >= 7,\n // same but for 18pt+ texts\n laa: ratio >= 3,\n laaa: ratio >= 4.5\n })\n const colorsConverted = Object.entries(colors).reduce((acc, [key, value]) => ({ ...acc, [key]: colorConvert(value) }), {})\n\n const ratios = Object.entries(SLOT_INHERITANCE).reduce((acc, [key, value]) => {\n const slotIsBaseText = key === 'text' || key === 'link'\n const slotIsText = slotIsBaseText || (\n typeof value === 'object' && value !== null && value.textColor\n )\n if (!slotIsText) return acc\n const { layer, variant } = slotIsBaseText ? { layer: 'bg' } : value\n const background = variant || layer\n const opacitySlot = getOpacitySlot(background)\n const textColors = [\n key,\n ...(background === 'bg' ? ['cRed', 'cGreen', 'cBlue', 'cOrange'] : [])\n ]\n\n const layers = getLayers(\n layer,\n variant || layer,\n opacitySlot,\n colorsConverted,\n opacity\n )\n\n // Temporary patch for null-y value errors\n if (layers.flat().some(v => v == null)) return acc\n\n return {\n ...acc,\n ...textColors.reduce((acc, textColorKey) => {\n const newKey = slotIsBaseText\n ? 'bg' + textColorKey[0].toUpperCase() + textColorKey.slice(1)\n : textColorKey\n return {\n ...acc,\n [newKey]: getContrastRatioLayers(\n colorsConverted[textColorKey],\n layers,\n colorsConverted[textColorKey]\n )\n }\n }, {})\n }\n }, {})\n\n return Object.entries(ratios).reduce((acc, [k, v]) => { acc[k] = hints(v); return acc }, {})\n } catch (e) {\n console.warn('Failure computing contrasts', e)\n return {}\n }\n },\n previewRules () {\n if (!this.preview.rules) return ''\n return [\n ...Object.values(this.preview.rules),\n 'color: var(--text)',\n 'font-family: var(--interfaceFont, sans-serif)'\n ].join(';')\n },\n shadowsAvailable () {\n return Object.keys(DEFAULT_SHADOWS).sort()\n },\n currentShadowOverriden: {\n get () {\n return !!this.currentShadow\n },\n set (val) {\n if (val) {\n this.shadowsLocal[this.shadowSelected] = this.currentShadowFallback.map(_ => Object.assign({}, _))\n } else {\n delete this.shadowsLocal[this.shadowSelected]\n }\n }\n },\n currentShadowFallback () {\n return (this.previewTheme.shadows || {})[this.shadowSelected]\n },\n currentShadow: {\n get () {\n return this.shadowsLocal[this.shadowSelected]\n },\n set (v) {\n this.shadowsLocal[this.shadowSelected] = v\n }\n },\n themeValid () {\n return !this.shadowsInvalid && !this.colorsInvalid && !this.radiiInvalid\n },\n exportedTheme () {\n const saveEverything = (\n !this.keepFonts &&\n !this.keepShadows &&\n !this.keepOpacity &&\n !this.keepRoundness &&\n !this.keepColor\n )\n\n const source = {\n themeEngineVersion: CURRENT_VERSION\n }\n\n if (this.keepFonts || saveEverything) {\n source.fonts = this.fontsLocal\n }\n if (this.keepShadows || saveEverything) {\n source.shadows = this.shadowsLocal\n }\n if (this.keepOpacity || saveEverything) {\n source.opacity = this.currentOpacity\n }\n if (this.keepColor || saveEverything) {\n source.colors = this.currentColors\n }\n if (this.keepRoundness || saveEverything) {\n source.radii = this.currentRadii\n }\n\n const theme = {\n themeEngineVersion: CURRENT_VERSION,\n ...this.previewTheme\n }\n\n return {\n // To separate from other random JSON files and possible future source formats\n _pleroma_theme_version: 2, theme, source\n }\n },\n isActive () {\n const tabSwitcher = this.$parent\n return tabSwitcher ? tabSwitcher.isActive('theme') : false\n }\n },\n components: {\n ColorInput,\n OpacityInput,\n RangeInput,\n ContrastRatio,\n ShadowControl,\n FontControl,\n TabSwitcher,\n Preview,\n Checkbox,\n Select\n },\n methods: {\n loadTheme (\n {\n theme,\n source,\n _pleroma_theme_version: fileVersion\n },\n origin,\n forceUseSource = false\n ) {\n this.dismissWarning()\n if (!source && !theme) {\n throw new Error('Can\\'t load theme: empty')\n }\n const version = (origin === 'localStorage' && !theme.colors)\n ? 'l1'\n : fileVersion\n const snapshotEngineVersion = (theme || {}).themeEngineVersion\n const themeEngineVersion = (source || {}).themeEngineVersion || 2\n const versionsMatch = themeEngineVersion === CURRENT_VERSION\n const sourceSnapshotMismatch = (\n theme !== undefined &&\n source !== undefined &&\n themeEngineVersion !== snapshotEngineVersion\n )\n // Force loading of source if user requested it or if snapshot\n // is unavailable\n const forcedSourceLoad = (source && forceUseSource) || !theme\n if (!(versionsMatch && !sourceSnapshotMismatch) &&\n !forcedSourceLoad &&\n version !== 'l1' &&\n origin !== 'defaults'\n ) {\n if (sourceSnapshotMismatch && origin === 'localStorage') {\n this.themeWarning = {\n origin,\n themeEngineVersion,\n type: 'snapshot_source_mismatch'\n }\n } else if (!theme) {\n this.themeWarning = {\n origin,\n noActionsPossible: true,\n themeEngineVersion,\n type: 'no_snapshot_old_version'\n }\n } else if (!versionsMatch) {\n this.themeWarning = {\n origin,\n noActionsPossible: !source,\n themeEngineVersion,\n type: 'wrong_version'\n }\n }\n }\n this.normalizeLocalState(theme, version, source, forcedSourceLoad)\n },\n forceLoadLocalStorage () {\n this.loadThemeFromLocalStorage(true)\n },\n dismissWarning () {\n this.themeWarning = undefined\n this.tempImportFile = undefined\n },\n forceLoad () {\n const { origin } = this.themeWarning\n switch (origin) {\n case 'localStorage':\n this.loadThemeFromLocalStorage(true)\n break\n case 'file':\n this.onImport(this.tempImportFile, true)\n break\n }\n this.dismissWarning()\n },\n forceSnapshot () {\n const { origin } = this.themeWarning\n switch (origin) {\n case 'localStorage':\n this.loadThemeFromLocalStorage(false, true)\n break\n case 'file':\n console.error('Forcing snapshot from file is not supported yet')\n break\n }\n this.dismissWarning()\n },\n loadThemeFromLocalStorage (confirmLoadSource = false, forceSnapshot = false) {\n const {\n customTheme: theme,\n customThemeSource: source\n } = this.$store.getters.mergedConfig\n if (!theme && !source) {\n // Anon user or never touched themes\n this.loadTheme(\n this.$store.state.instance.themeData,\n 'defaults',\n confirmLoadSource\n )\n } else {\n this.loadTheme(\n {\n theme,\n source: forceSnapshot ? theme : source\n },\n 'localStorage',\n confirmLoadSource\n )\n }\n },\n setCustomTheme () {\n this.$store.dispatch('setOption', {\n name: 'customTheme',\n value: {\n themeEngineVersion: CURRENT_VERSION,\n ...this.previewTheme\n }\n })\n this.$store.dispatch('setOption', {\n name: 'customThemeSource',\n value: {\n themeEngineVersion: CURRENT_VERSION,\n shadows: this.shadowsLocal,\n fonts: this.fontsLocal,\n opacity: this.currentOpacity,\n colors: this.currentColors,\n radii: this.currentRadii\n }\n })\n },\n updatePreviewColorsAndShadows () {\n this.previewColors = generateColors({\n opacity: this.currentOpacity,\n colors: this.currentColors\n })\n this.previewShadows = generateShadows(\n { shadows: this.shadowsLocal, opacity: this.previewTheme.opacity, themeEngineVersion: this.engineVersion },\n this.previewColors.theme.colors,\n this.previewColors.mod\n )\n },\n importTheme () { this.themeImporter.importData() },\n exportTheme () { this.themeExporter.exportData() },\n onImport (parsed, forceSource = false) {\n this.tempImportFile = parsed\n this.loadTheme(parsed, 'file', forceSource)\n },\n onImportFailure (result) {\n this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_theme_imported', level: 'error' })\n },\n importValidator (parsed) {\n const version = parsed._pleroma_theme_version\n return version >= 1 || version <= 2\n },\n clearAll () {\n this.loadThemeFromLocalStorage()\n },\n\n // Clears all the extra stuff when loading V1 theme\n clearV1 () {\n Object.keys(this.$data)\n .filter(_ => _.endsWith('ColorLocal') || _.endsWith('OpacityLocal'))\n .filter(_ => !v1OnlyNames.includes(_))\n .forEach(key => {\n this.$data[key] = undefined\n })\n },\n\n clearRoundness () {\n Object.keys(this.$data)\n .filter(_ => _.endsWith('RadiusLocal'))\n .forEach(key => {\n this.$data[key] = undefined\n })\n },\n\n clearOpacity () {\n Object.keys(this.$data)\n .filter(_ => _.endsWith('OpacityLocal'))\n .forEach(key => {\n this.$data[key] = undefined\n })\n },\n\n clearShadows () {\n this.shadowsLocal = {}\n },\n\n clearFonts () {\n this.fontsLocal = {}\n },\n\n /**\n * This applies stored theme data onto form. Supports three versions of data:\n * v3 (version >= 3) - newest version of themes which supports snapshots for better compatiblity\n * v2 (version = 2) - newer version of themes.\n * v1 (version = 1) - older version of themes (import from file)\n * v1l (version = l1) - older version of theme (load from local storage)\n * v1 and v1l differ because of way themes were stored/exported.\n * @param {Object} theme - theme data (snapshot)\n * @param {Number} version - version of data. 0 means try to guess based on data. \"l1\" means v1, locastorage type\n * @param {Object} source - theme source - this will be used if compatible\n * @param {Boolean} source - by default source won't be used if version doesn't match since it might render differently\n * this allows importing source anyway\n */\n normalizeLocalState (theme, version = 0, source, forceSource = false) {\n let input\n if (typeof source !== 'undefined') {\n if (forceSource || source.themeEngineVersion === CURRENT_VERSION) {\n input = source\n version = source.themeEngineVersion\n } else {\n input = theme\n }\n } else {\n input = theme\n }\n\n const radii = input.radii || input\n const opacity = input.opacity\n const shadows = input.shadows || {}\n const fonts = input.fonts || {}\n const colors = !input.themeEngineVersion\n ? colors2to3(input.colors || input)\n : input.colors || input\n\n if (version === 0) {\n if (input.version) version = input.version\n // Old v1 naming: fg is text, btn is foreground\n if (typeof colors.text === 'undefined' && typeof colors.fg !== 'undefined') {\n version = 1\n }\n // New v2 naming: text is text, fg is foreground\n if (typeof colors.text !== 'undefined' && typeof colors.fg !== 'undefined') {\n version = 2\n }\n }\n\n this.engineVersion = version\n\n // Stuff that differs between V1 and V2\n if (version === 1) {\n this.fgColorLocal = rgb2hex(colors.btn)\n this.textColorLocal = rgb2hex(colors.fg)\n }\n\n if (!this.keepColor) {\n this.clearV1()\n const keys = new Set(version !== 1 ? Object.keys(SLOT_INHERITANCE) : [])\n if (version === 1 || version === 'l1') {\n keys\n .add('bg')\n .add('link')\n .add('cRed')\n .add('cBlue')\n .add('cGreen')\n .add('cOrange')\n }\n\n keys.forEach(key => {\n const color = colors[key]\n const hex = rgb2hex(colors[key])\n this[key + 'ColorLocal'] = hex === '#aN' ? color : hex\n })\n }\n\n if (opacity && !this.keepOpacity) {\n this.clearOpacity()\n Object.entries(opacity).forEach(([k, v]) => {\n if (typeof v === 'undefined' || v === null || Number.isNaN(v)) return\n this[k + 'OpacityLocal'] = v\n })\n }\n\n if (!this.keepRoundness) {\n this.clearRoundness()\n Object.entries(radii).forEach(([k, v]) => {\n // 'Radius' is kept mostly for v1->v2 localstorage transition\n const key = k.endsWith('Radius') ? k.split('Radius')[0] : k\n this[key + 'RadiusLocal'] = v\n })\n }\n\n if (!this.keepShadows) {\n this.clearShadows()\n if (version === 2) {\n this.shadowsLocal = shadows2to3(shadows, this.previewTheme.opacity)\n } else {\n this.shadowsLocal = shadows\n }\n this.shadowSelected = this.shadowsAvailable[0]\n }\n\n if (!this.keepFonts) {\n this.clearFonts()\n this.fontsLocal = fonts\n }\n }\n },\n watch: {\n currentRadii () {\n try {\n this.previewRadii = generateRadii({ radii: this.currentRadii })\n this.radiiInvalid = false\n } catch (e) {\n this.radiiInvalid = true\n console.warn(e)\n }\n },\n shadowsLocal: {\n handler () {\n if (Object.getOwnPropertyNames(this.previewColors).length === 1) return\n try {\n this.updatePreviewColorsAndShadows()\n this.shadowsInvalid = false\n } catch (e) {\n this.shadowsInvalid = true\n console.warn(e)\n }\n },\n deep: true\n },\n fontsLocal: {\n handler () {\n try {\n this.previewFonts = generateFonts({ fonts: this.fontsLocal })\n this.fontsInvalid = false\n } catch (e) {\n this.fontsInvalid = true\n console.warn(e)\n }\n },\n deep: true\n },\n currentColors () {\n try {\n this.updatePreviewColorsAndShadows()\n this.colorsInvalid = false\n this.shadowsInvalid = false\n } catch (e) {\n this.colorsInvalid = true\n this.shadowsInvalid = true\n console.warn(e)\n }\n },\n currentOpacity () {\n try {\n this.updatePreviewColorsAndShadows()\n } catch (e) {\n console.warn(e)\n }\n },\n selected () {\n this.selectedTheme = Object.entries(this.availableStyles).find(([k, s]) => {\n if (Array.isArray(s)) {\n console.log(s[0] === this.selected, this.selected)\n return s[0] === this.selected\n } else {\n return s.name === this.selected\n }\n })[1]\n },\n selectedTheme () {\n this.dismissWarning()\n if (this.selectedVersion === 1) {\n if (!this.keepRoundness) {\n this.clearRoundness()\n }\n\n if (!this.keepShadows) {\n this.clearShadows()\n }\n\n if (!this.keepOpacity) {\n this.clearOpacity()\n }\n\n if (!this.keepColor) {\n this.clearV1()\n\n this.bgColorLocal = this.selectedTheme[1]\n this.fgColorLocal = this.selectedTheme[2]\n this.textColorLocal = this.selectedTheme[3]\n this.linkColorLocal = this.selectedTheme[4]\n this.cRedColorLocal = this.selectedTheme[5]\n this.cGreenColorLocal = this.selectedTheme[6]\n this.cBlueColorLocal = this.selectedTheme[7]\n this.cOrangeColorLocal = this.selectedTheme[8]\n }\n } else if (this.selectedVersion >= 2) {\n this.normalizeLocalState(this.selectedTheme.theme, 2, this.selectedTheme.source)\n }\n }\n }\n}\n","import { render } from \"./theme_tab.vue?vue&type=template&id=1128449a\"\nimport script from \"./theme_tab.js?vue&type=script&lang=js\"\nexport * from \"./theme_tab.js?vue&type=script&lang=js\"\n\nimport \"./theme_tab.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nimport DataImportExportTab from './tabs/data_import_export_tab.vue'\nimport MutesAndBlocksTab from './tabs/mutes_and_blocks_tab.vue'\nimport NotificationsTab from './tabs/notifications_tab.vue'\nimport FilteringTab from './tabs/filtering_tab.vue'\nimport SecurityTab from './tabs/security_tab/security_tab.vue'\nimport ProfileTab from './tabs/profile_tab.vue'\nimport GeneralTab from './tabs/general_tab.vue'\nimport VersionTab from './tabs/version_tab.vue'\nimport ThemeTab from './tabs/theme_tab/theme_tab.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faWrench,\n faUser,\n faFilter,\n faPaintBrush,\n faBell,\n faDownload,\n faEyeSlash,\n faInfo\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faWrench,\n faUser,\n faFilter,\n faPaintBrush,\n faBell,\n faDownload,\n faEyeSlash,\n faInfo\n)\n\nconst SettingsModalContent = {\n components: {\n TabSwitcher,\n\n DataImportExportTab,\n MutesAndBlocksTab,\n NotificationsTab,\n FilteringTab,\n SecurityTab,\n ProfileTab,\n GeneralTab,\n VersionTab,\n ThemeTab\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n open () {\n return this.$store.state.interface.settingsModalState !== 'hidden'\n },\n bodyLock () {\n return this.$store.state.interface.settingsModalState === 'visible'\n }\n },\n methods: {\n onOpen () {\n const targetTab = this.$store.state.interface.settingsModalTargetTab\n // We're being told to open in specific tab\n if (targetTab) {\n const tabIndex = this.$refs.tabSwitcher.$slots.default().findIndex(elm => {\n return elm.props && elm.props['data-tab-name'] === targetTab\n })\n if (tabIndex >= 0) {\n this.$refs.tabSwitcher.setTab(tabIndex)\n }\n }\n // Clear the state of target tab, so that next time settings is opened\n // it doesn't force it.\n this.$store.dispatch('clearSettingsModalTargetTab')\n }\n },\n mounted () {\n this.onOpen()\n },\n watch: {\n open: function (value) {\n if (value) this.onOpen()\n }\n }\n}\n\nexport default SettingsModalContent\n","import { render } from \"./settings_modal_content.vue?vue&type=template&id=6191ca84\"\nimport script from \"./settings_modal_content.js?vue&type=script&lang=js\"\nexport * from \"./settings_modal_content.js?vue&type=script&lang=js\"\n\nimport \"./settings_modal_content.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <tab-switcher\n ref=\"tabSwitcher\"\n class=\"settings_tab-switcher\"\n :side-tab-bar=\"true\"\n :scrollable-tabs=\"true\"\n :body-scroll-lock=\"bodyLock\"\n >\n <div\n :label=\"$t('settings.general')\"\n icon=\"wrench\"\n data-tab-name=\"general\"\n >\n <GeneralTab />\n </div>\n <div\n v-if=\"isLoggedIn\"\n :label=\"$t('settings.profile_tab')\"\n icon=\"user\"\n data-tab-name=\"profile\"\n >\n <ProfileTab />\n </div>\n <div\n v-if=\"isLoggedIn\"\n :label=\"$t('settings.security_tab')\"\n icon=\"lock\"\n data-tab-name=\"security\"\n >\n <SecurityTab />\n </div>\n <div\n :label=\"$t('settings.filtering')\"\n icon=\"filter\"\n data-tab-name=\"filtering\"\n >\n <FilteringTab />\n </div>\n <div\n :label=\"$t('settings.theme')\"\n icon=\"paint-brush\"\n data-tab-name=\"theme\"\n >\n <ThemeTab />\n </div>\n <div\n v-if=\"isLoggedIn\"\n :label=\"$t('settings.notifications')\"\n icon=\"bell\"\n data-tab-name=\"notifications\"\n >\n <NotificationsTab />\n </div>\n <div\n v-if=\"isLoggedIn\"\n :label=\"$t('settings.data_import_export_tab')\"\n icon=\"download\"\n data-tab-name=\"dataImportExport\"\n >\n <DataImportExportTab />\n </div>\n <div\n v-if=\"isLoggedIn\"\n :label=\"$t('settings.mutes_and_blocks')\"\n :fullHeight=\"true\"\n icon=\"eye-slash\"\n data-tab-name=\"mutesAndBlocks\"\n >\n <MutesAndBlocksTab />\n </div>\n <div\n :label=\"$t('settings.version.title')\"\n icon=\"info\"\n data-tab-name=\"version\"\n >\n <VersionTab />\n </div>\n </tab-switcher>\n</template>\n\n<script src=\"./settings_modal_content.js\"></script>\n\n<style src=\"./settings_modal_content.scss\" lang=\"scss\"></style>\n"],"names":["class","_createElementVNode","library","faCircleNotch","faTimes","props","submitHandler","type","Function","required","submitButtonLabel","String","successMessage","errorMessage","data","file","error","success","submitting","methods","change","this","$refs","input","files","submit","dismiss","then","_createElementBlock","_hoisted_1","ref","onChange","_ctx","_createBlock","_component_FAIcon","spin","icon","onClick","_createVNode","getContent","filename","default","exportButtonLabel","processingMessage","processing","process","content","fileToDownload","document","createElement","setAttribute","encodeURIComponent","style","display","body","appendChild","click","removeChild","setTimeout","size","activeTab","newDomainToMute","listBackupsError","addBackupError","addedBackup","backups","created","$store","dispatch","fetchBackups","components","Importer","Exporter","Checkbox","computed","mapState","backendInteractor","state","api","user","users","currentUser","getFollowsContent","exportFriends","id","generateExportableUsersContent","getBlocksContent","fetchBlocks","getMutesContent","fetchMutes","importFollows","status","Error","importBlocks","importMutes","map","is_local","screen_name","location","hostname","join","addBackup","res","listBackups","label","_hoisted_2","_component_Importer","_hoisted_3","_component_Exporter","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_Fragment","backup","key","inserted_at","_hoisted_10","processed","target","href","url","processed_number","number","_hoisted_15","title","query","filter","placeholder","term","timeout","results","resultsVisible","filtered","watch","val","fetchResults","clearTimeout","onInputClick","onClickOutside","length","item","_renderSlot","progress","getters","findUser","userId","relationship","blocked","blocking","BasicUserCard","unblockUser","blockUser","_component_basic_user_card","disabled","muted","muting","unmuteUser","muteUser","ProgressButton","domainMutes","includes","domain","unmuteDomain","muteDomain","_component_ProgressButton","List","items","Array","getKey","selected","allKeys","filteredSelected","indexOf","allSelected","noneSelected","someSelected","isSelected","toggle","checked","push","splice","toggleAll","value","slice","_component_Checkbox","indeterminate","_component_List","_normalizeClass","empty","fetch","select","childPropName","additionalPropNames","WrappedComponent","Object","keys","getComponentProps","v","concat","loading","fetchedData","$props","refresh","isEmpty","fetchData","render","$t","children","$slots","BlockList","withSubscription","get","SelectableList","MuteList","DomainMuteList","TabSwitcher","BlockCard","MuteCard","DomainMuteCard","Autosuggest","knownDomains","instance","activateTab","tabName","filterUnblockedUsers","userIds","reject","filterUnMutedUsers","queryUserIds","blockUsers","ids","unblockUsers","muteUsers","unmuteUsers","filterUnMutedDomains","urls","queryKnownDomains","Promise","resolve","toLowerCase","unmuteDomains","domains","_component_tab_switcher","_component_Autosuggest","_withCtx","row","_component_BlockCard","_component_BlockList","i","header","_component_MuteCard","_component_MuteList","_component_DomainMuteCard","_component_DomainMuteList","faWrench","Popover","_component_Popover","trigger","faServer","ModifiedIndicator","ServerSideIndicator","pathDefault","path","split","firstSegment","rest","$parent","undefined","defaultState","isServerSide","startsWith","isChanged","matchesExpertLevel","expert","expertLevel","update","e","reset","_component_ModifiedIndicator","changed","onclick","_component_ServerSideIndicator","configDefaultState","defaultConfig","reduce","acc","mergedConfig","set","name","serverSideConfigDefaultState","serverSideConfig","useStreamingApi","console","notificationSettings","notification_settings","BooleanSetting","SharedComputedObject","updateNotificationSettings","settings","_component_BooleanSetting","Select","_component_Select","option","Boolean","min","Number","parseInt","for","step","muteWordsStringLocal","muteWords","replyVisibilityOptions","mode","ChoiceSetting","IntegerSetting","muteWordsString","debouncedSetMuteWords","word","replyVisibility","_component_ChoiceSetting","options","_component_IntegerSetting","place","backupCodes","inProgress","codes","ready","displayTitle","code","confirm","$emit","cancel","currentPassword","deactivate","Confirm","isActivated","totp","doActivate","cancelDeactivate","doDeactivate","confirmDeactivate","mfaDisableOTP","password","available","enabled","setupState","setupOTPState","getNewCodes","otpSettings","provisioning_uri","otpConfirmToken","readyInit","RecoveryCodes","_component_confirm","onConfirm","onCancel","qrcode","VueQrcode","canSetupOTP","setupInProgress","backupCodesPrepared","setupOTPInProgress","completedOTP","prepareOTP","confirmOTP","confirmNewBackupCodes","activateOTP","fetchBackupCodes","generateMfaBackupCodes","getBackupCodes","confirmBackupCodes","cancelBackupCodes","setupOTP","mfaSetupOTP","doConfirmOTP","mfaConfirmOTP","token","completeSetup","fetchSettings","cancelSetup","settingsMFA","result","mounted","_component_totp_item","onDeactivate","onActivate","_component_recovery_codes","_hoisted_11","_hoisted_12","_component_qrcode","width","_hoisted_13","_hoisted_14","newEmail","changeEmailError","changeEmailPassword","changedEmail","deletingAccount","deleteAccountConfirmPasswordInput","deleteAccountError","changePasswordInputs","changedPassword","changePasswordError","moveAccountTarget","moveAccountPassword","movedAccount","moveAccountError","aliases","listAliasesError","addAliasTarget","addedAlias","addAliasError","fetchAliases","Mfa","pleromaBackend","oauthTokens","tokens","oauthToken","appName","app_name","validUntil","Date","valid_until","toLocaleDateString","localeService","$i18n","locale","confirmDelete","deleteAccount","$router","changePassword","params","newPassword","newPasswordConfirmation","logout","changeEmail","email","moveAccount","targetAccount","removeAlias","alias","deleteAlias","addAlias","listAliases","replace","revokeToken","window","t","autocomplete","_component_mfa","_hoisted_17","_component_i18n","tag","_hoisted_18","_hoisted_21","_hoisted_22","_hoisted_25","Element","cropperOptions","aspectRatio","autoCropArea","viewMode","movable","zoomable","guides","mimes","saveButtonLabel","saveWithoutCroppingButtonlabel","cancelButtonLabel","cropper","dataUrl","saveText","saveWithoutCroppingText","cancelText","destroy","cropping","pickImage","createCropper","Cropper","img","getTriggerDOM","querySelector","readFile","fileInput","reader","FileReader","onload","readAsDataURL","addEventListener","beforeUnmount","removeEventListener","src","alt","onLoad","_toDisplayString","accept","faPlus","ProfileTab","newName","name_unescaped","newBio","unescape","description","newLocked","locked","newBirthday","birthday","showBirthday","show_birthday","newFields","fields","field","showRole","show_role","role","bot","pickAvatarBtnVisible","bannerUploading","backgroundUploading","banner","bannerPreview","background","backgroundPreview","emailLanguage","language","ScopeSelector","ImageCropper","EmojiInput","InterfaceLanguageSwitcher","emojiUserSuggestor","suggestor","emoji","standardEmojiList","customEmoji","store","emojiSuggestor","userSuggestor","fieldsLimits","maxFields","defaultAvatar","server","defaultBanner","isDefaultAvatar","baseAvatar","profile_image_url","isDefaultBanner","baseBanner","cover_photo","isDefaultBackground","background_image","avatarImgSrc","profile_image_url_original","bannerImgSrc","updateProfile","note","display_name","fields_attributes","el","merge","commit","changeVis","visibility","newDefaultScope","addField","deleteField","index","event","uploadFile","slot","filesize","fileSizeFormatService","allowedsize","messageKey","messageArgs","num","filesizeunit","unit","allowedsizeunit","level","resetAvatar","submitAvatar","resetBanner","submitBanner","resetBackground","submitBackground","that","updateAvatar","avatar","avatarName","updateProfileImages","displayUploadError","getCroppedCanvas","toBlob","message","propsToNative","_component_EmojiInput","suggest","inputProps","_mergeProps","_","_component_interface_language_switcher","_component_image_cropper","onOpen","onClose","$event","_hoisted_19","_hoisted_20","_hoisted_24","allCssUnits","defaultHorizontalUnits","units","stateUnit","stateValue","updateValue","updateUnit","faGlobe","subjectLineOptions","conversationDisplayOptions","conversationOtherRepliesButtonOptions","mentionLinkDisplayOptions","thirdColumnModeOptions","userPopoverAvatarActionOptions","loopSilentAvailable","getOwnPropertyDescriptor","HTMLVideoElement","prototype","HTMLMediaElement","SizeSetting","horizontalUnits","postFormats","postContentOptions","format","columns","thirdColumnMode","notif","sidebarRight","instanceSpecificPanelPresent","showInstanceSpecificPanel","instanceWallpaperUsed","instanceShoutboxPresent","shoutAvailable","interfaceLanguage","changeDefaultScope","column","_component_SizeSetting","_hoisted_16","_component_ScopeSelector","backendVersion","frontendVersion","frontendVersionLink","backendVersionLink","matches","match","modelValue","fallback","showOptionalTickbox","emits","present","validColor","hex2rgb","transparentColor","computedColor","$options","onInput","backgroundColor","max","faChevronDown","faChevronUp","toModel","object","x","y","blur","spread","inset","color","alpha","selectedId","cValue","ColorInput","OpacityInput","add","del","Math","moveUp","moveDn","beforeUpdate","anyShadows","anyShadowsFallback","currentFallback","moveUpValid","moveDnValid","usingFallback","rgb","boxShadow","getCssShadow","shadow","_hoisted_23","_hoisted_27","_component_ColorInput","_component_OpacityInput","_component_i18n_t","scope","keypath","_hoisted_30","lValue","availableOptions","noInherit","dValue","family","isCustom","preset","custom","faAdjust","faExclamationTriangle","faThumbsUp","large","contrast","hint","levelVal","aaa","aa","context","ratio","text","hint_18pt","laaa","laa","faStar","faRetweet","faReply","_hoisted_26","_hoisted_28","v1OnlyNames","themeImporter","newImporter","validator","importValidator","onImport","onImportFailure","themeExporter","newExporter","getExportedObject","exportedTheme","availableStyles","selectedTheme","theme","themeWarning","tempImportFile","engineVersion","previewShadows","previewColors","previewRadii","previewFonts","shadowsInvalid","colorsInvalid","radiiInvalid","keepColor","keepShadows","keepOpacity","keepRoundness","keepFonts","SLOT_INHERITANCE","OPACITIES","shadowSelected","shadowsLocal","fontsLocal","btnRadiusLocal","inputRadiusLocal","checkboxRadiusLocal","panelRadiusLocal","avatarRadiusLocal","avatarAltRadiusLocal","attachmentRadiusLocal","tooltipRadiusLocal","chatMessageRadiusLocal","self","getThemes","promises","all","entries","k","themes","themesComplete","loadThemeFromLocalStorage","shadowsAvailable","themeWarningHelp","pre","origin","themeEngineVersion","noActionsPossible","CURRENT_VERSION","selectedVersion","isArray","currentColors","currentOpacity","currentRadii","btn","checkbox","panel","avatarAlt","tooltip","attachment","chatMessage","preview","composePreset","previewTheme","colors","opacity","radii","shadows","fonts","previewContrast","bg","colorsConverted","ratios","slotIsBaseText","textColor","layer","variant","opacitySlot","getOpacitySlot","textColors","layers","getLayers","flat","some","textColorKey","newKey","toUpperCase","getContrastRatioLayers","toPrecision","warn","previewRules","rules","values","DEFAULT_SHADOWS","sort","currentShadowOverriden","currentShadow","currentShadowFallback","assign","themeValid","saveEverything","source","_pleroma_theme_version","isActive","tabSwitcher","RangeInput","ContrastRatio","ShadowControl","FontControl","Preview","loadTheme","fileVersion","forceUseSource","dismissWarning","version","snapshotEngineVersion","versionsMatch","sourceSnapshotMismatch","forcedSourceLoad","normalizeLocalState","forceLoadLocalStorage","forceLoad","forceSnapshot","confirmLoadSource","customTheme","customThemeSource","themeData","setCustomTheme","updatePreviewColorsAndShadows","generateColors","generateShadows","mod","importTheme","importData","exportTheme","exportData","parsed","forceSource","clearAll","clearV1","$data","endsWith","forEach","clearRoundness","clearOpacity","clearShadows","clearFonts","colors2to3","fg","fgColorLocal","rgb2hex","textColorLocal","Set","hex","isNaN","shadows2to3","generateRadii","handler","getOwnPropertyNames","deep","generateFonts","fontsInvalid","find","s","log","bgColorLocal","linkColorLocal","cRedColorLocal","cGreenColorLocal","cBlueColorLocal","cOrangeColorLocal","_component_preview","_KeepAlive","_component_ContrastRatio","bgText","link","accent","bgLink","fgText","fgLink","bgCRed","bgCBlue","bgCGreen","bgCOrange","postLink","cGreen","postGreentext","alertError","alertErrorText","alertWarning","alertWarningText","alertNeutral","alertNeutralText","alert","badgeNotification","badgeNotificationText","_hoisted_29","panelText","panelLink","topBar","topBarText","topBarLink","_hoisted_31","inputText","_hoisted_32","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanelText","btnPressedTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","_hoisted_33","tab","tabText","tabActiveText","_hoisted_34","border","_hoisted_35","faint","faintLink","panelFaint","_hoisted_36","underlay","_hoisted_37","wallpaper","_hoisted_38","poll","pollText","_hoisted_39","_hoisted_40","highlight","highlightText","highlightLink","_hoisted_41","popover","popoverText","popoverLink","_hoisted_42","selectedPost","selectedPostText","selectedPostLink","_hoisted_43","selectedMenu","selectedMenuText","selectedMenuLink","_hoisted_44","_hoisted_46","_component_RangeInput","_hoisted_48","_hoisted_49","_hoisted_51","_hoisted_52","_hoisted_53","_component_ShadowControl","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_61","_component_FontControl","post","postCode","_Teleport","to","_hoisted_62","faUser","faFilter","faPaintBrush","faBell","faDownload","faEyeSlash","faInfo","DataImportExportTab","MutesAndBlocksTab","NotificationsTab","FilteringTab","SecurityTab","GeneralTab","VersionTab","ThemeTab","isLoggedIn","open","settingsModalState","bodyLock","targetTab","settingsModalTargetTab","tabIndex","findIndex","elm","setTab","_component_GeneralTab","_component_ProfileTab","_component_SecurityTab","_component_FilteringTab","_component_ThemeTab","_component_NotificationsTab","_component_DataImportExportTab","fullHeight","_component_MutesAndBlocksTab","_component_VersionTab"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/app.8d2126d35dba9482db51.js b/priv/static/static/js/app.8d2126d35dba9482db51.js @@ -1,2 +0,0 @@ -(()=>{var e,t,n,o,r,i={88797:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={about:{mrf:{federation:e=>{const{normalize:t}=e;return t(["Federation"])},keyword:{keyword_policies:e=>{const{normalize:t}=e;return t(["Keyword policies"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "The Whole Known Network" Timeline'])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},replace:e=>{const{normalize:t}=e;return t(["Replace"])},is_replaced_by:e=>{const{normalize:t}=e;return t(["→"])}},mrf_policies:e=>{const{normalize:t}=e;return t(["Enabled MRF policies"])},mrf_policies_desc:e=>{const{normalize:t}=e;return t(["MRF policies manipulate the federation behaviour of the instance. The following policies are enabled:"])},simple:{simple_policies:e=>{const{normalize:t}=e;return t(["Instance-specific policies"])},instance:e=>{const{normalize:t}=e;return t(["Instance"])},reason:e=>{const{normalize:t}=e;return t(["Reason"])},not_applicable:e=>{const{normalize:t}=e;return t(["N/A"])},accept:e=>{const{normalize:t}=e;return t(["Accept"])},accept_desc:e=>{const{normalize:t}=e;return t(["This instance only accepts messages from the following instances:"])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},reject_desc:e=>{const{normalize:t}=e;return t(["This instance will not accept messages from the following instances:"])},quarantine:e=>{const{normalize:t}=e;return t(["Quarantine"])},quarantine_desc:e=>{const{normalize:t}=e;return t(["This instance will send only public posts to the following instances:"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "Known Network" Timeline'])},ftl_removal_desc:e=>{const{normalize:t}=e;return t(['This instance removes these instances from "Known Network" timeline:'])},media_removal:e=>{const{normalize:t}=e;return t(["Media Removal"])},media_removal_desc:e=>{const{normalize:t}=e;return t(["This instance removes media from posts on the following instances:"])},media_nsfw:e=>{const{normalize:t}=e;return t(["Media force-set as sensitive"])},media_nsfw_desc:e=>{const{normalize:t}=e;return t(["This instance forces media to be set sensitive in posts on the following instances:"])}}},staff:e=>{const{normalize:t}=e;return t(["Staff"])}},announcements:{page_header:e=>{const{normalize:t}=e;return t(["Announcements"])},title:e=>{const{normalize:t}=e;return t(["Announcement"])},mark_as_read_action:e=>{const{normalize:t}=e;return t(["Mark as read"])},post_form_header:e=>{const{normalize:t}=e;return t(["Post announcement"])},post_placeholder:e=>{const{normalize:t}=e;return t(["Type your announcement content here..."])},post_action:e=>{const{normalize:t}=e;return t(["Post"])},post_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error: ",n(o("error"))])},close_error:e=>{const{normalize:t}=e;return t(["Close"])},delete_action:e=>{const{normalize:t}=e;return t(["Delete"])},start_time_prompt:e=>{const{normalize:t}=e;return t(["Start time: "])},end_time_prompt:e=>{const{normalize:t}=e;return t(["End time: "])},all_day_prompt:e=>{const{normalize:t}=e;return t(["This is an all-day event"])},published_time_display:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Published at ",n(o("time"))])},start_time_display:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Starts at ",n(o("time"))])},end_time_display:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Ends at ",n(o("time"))])},edit_action:e=>{const{normalize:t}=e;return t(["Edit"])},submit_edit_action:e=>{const{normalize:t}=e;return t(["Submit"])},cancel_edit_action:e=>{const{normalize:t}=e;return t(["Cancel"])},inactive_message:e=>{const{normalize:t}=e;return t(["This announcement is inactive"])}},shoutbox:{title:e=>{const{normalize:t}=e;return t(["Shoutbox"])}},domain_mute_card:{mute:e=>{const{normalize:t}=e;return t(["Mute"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])}},exporter:{export:e=>{const{normalize:t}=e;return t(["Export"])},processing:e=>{const{normalize:t}=e;return t(["Processing, you'll soon be asked to download your file"])}},features_panel:{shout:e=>{const{normalize:t}=e;return t(["Shoutbox"])},pleroma_chat_messages:e=>{const{normalize:t}=e;return t(["Pleroma Chat"])},gopher:e=>{const{normalize:t}=e;return t(["Gopher"])},media_proxy:e=>{const{normalize:t}=e;return t(["Media proxy"])},scope_options:e=>{const{normalize:t}=e;return t(["Scope options"])},text_limit:e=>{const{normalize:t}=e;return t(["Text limit"])},title:e=>{const{normalize:t}=e;return t(["Features"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},upload_limit:e=>{const{normalize:t}=e;return t(["Upload limit"])}},finder:{error_fetching_user:e=>{const{normalize:t}=e;return t(["Error fetching user"])},find_user:e=>{const{normalize:t}=e;return t(["Find user"])}},general:{apply:e=>{const{normalize:t}=e;return t(["Apply"])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},more:e=>{const{normalize:t}=e;return t(["More"])},loading:e=>{const{normalize:t}=e;return t(["Loading…"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occured"])},generic_error_message:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["An error occured: ",n(o(0))])},error_retry:e=>{const{normalize:t}=e;return t(["Please try again"])},retry:e=>{const{normalize:t}=e;return t(["Try again"])},optional:e=>{const{normalize:t}=e;return t(["optional"])},show_more:e=>{const{normalize:t}=e;return t(["Show more"])},show_less:e=>{const{normalize:t}=e;return t(["Show less"])},never_show_again:e=>{const{normalize:t}=e;return t(["Never show again"])},dismiss:e=>{const{normalize:t}=e;return t(["Dismiss"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])},disable:e=>{const{normalize:t}=e;return t(["Disable"])},enable:e=>{const{normalize:t}=e;return t(["Enable"])},confirm:e=>{const{normalize:t}=e;return t(["Confirm"])},verify:e=>{const{normalize:t}=e;return t(["Verify"])},close:e=>{const{normalize:t}=e;return t(["Close"])},undo:e=>{const{normalize:t}=e;return t(["Undo"])},yes:e=>{const{normalize:t}=e;return t(["Yes"])},no:e=>{const{normalize:t}=e;return t(["No"])},peek:e=>{const{normalize:t}=e;return t(["Peek"])},scroll_to_top:e=>{const{normalize:t}=e;return t(["Scroll to top"])},role:{admin:e=>{const{normalize:t}=e;return t(["Admin"])},moderator:e=>{const{normalize:t}=e;return t(["Moderator"])}},unpin:e=>{const{normalize:t}=e;return t(["Unpin item"])},pin:e=>{const{normalize:t}=e;return t(["Pin item"])},flash_content:e=>{const{normalize:t}=e;return t(["Click to show Flash content using Ruffle (Experimental, may not work)."])},flash_security:e=>{const{normalize:t}=e;return t(["Note that this can be potentially dangerous since Flash content is still arbitrary code."])},flash_fail:e=>{const{normalize:t}=e;return t(["Failed to load flash content, see console for details."])},scope_in_timeline:{direct:e=>{const{normalize:t}=e;return t(["Direct"])},private:e=>{const{normalize:t}=e;return t(["Followers-only"])},public:e=>{const{normalize:t}=e;return t(["Public"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted"])}}},image_cropper:{crop_picture:e=>{const{normalize:t}=e;return t(["Crop picture"])},save:e=>{const{normalize:t}=e;return t(["Save"])},save_without_cropping:e=>{const{normalize:t}=e;return t(["Save without cropping"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])}},importer:{submit:e=>{const{normalize:t}=e;return t(["Submit"])},success:e=>{const{normalize:t}=e;return t(["Imported successfully."])},error:e=>{const{normalize:t}=e;return t(["An error occured while importing this file."])}},login:{login:e=>{const{normalize:t}=e;return t(["Log in"])},description:e=>{const{normalize:t}=e;return t(["Log in with OAuth"])},logout:e=>{const{normalize:t}=e;return t(["Log out"])},logout_confirm_title:e=>{const{normalize:t}=e;return t(["Logout confirmation"])},logout_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to logout?"])},logout_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Logout"])},logout_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not logout"])},password:e=>{const{normalize:t}=e;return t(["Password"])},placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},register:e=>{const{normalize:t}=e;return t(["Register"])},username:e=>{const{normalize:t}=e;return t(["Username"])},hint:e=>{const{normalize:t}=e;return t(["Log in to join the discussion"])},authentication_code:e=>{const{normalize:t}=e;return t(["Authentication code"])},enter_recovery_code:e=>{const{normalize:t}=e;return t(["Enter a recovery code"])},enter_two_factor_code:e=>{const{normalize:t}=e;return t(["Enter a two-factor code"])},recovery_code:e=>{const{normalize:t}=e;return t(["Recovery code"])},heading:{totp:e=>{const{normalize:t}=e;return t(["Two-factor authentication"])},recovery:e=>{const{normalize:t}=e;return t(["Two-factor recovery"])}}},media_modal:{previous:e=>{const{normalize:t}=e;return t(["Previous"])},next:e=>{const{normalize:t}=e;return t(["Next"])},counter:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("current"))," / ",n(o("total"))])},hide:e=>{const{normalize:t}=e;return t(["Close media viewer"])}},nav:{about:e=>{const{normalize:t}=e;return t(["About"])},administration:e=>{const{normalize:t}=e;return t(["Administration"])},back:e=>{const{normalize:t}=e;return t(["Back"])},friend_requests:e=>{const{normalize:t}=e;return t(["Follow requests"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},interactions:e=>{const{normalize:t}=e;return t(["Interactions"])},dms:e=>{const{normalize:t}=e;return t(["Direct messages"])},public_tl:e=>{const{normalize:t}=e;return t(["Public timeline"])},timeline:e=>{const{normalize:t}=e;return t(["Timeline"])},home_timeline:e=>{const{normalize:t}=e;return t(["Home timeline"])},twkn:e=>{const{normalize:t}=e;return t(["Known Network"])},bookmarks:e=>{const{normalize:t}=e;return t(["Bookmarks"])},user_search:e=>{const{normalize:t}=e;return t(["User Search"])},search:e=>{const{normalize:t}=e;return t(["Search"])},search_close:e=>{const{normalize:t}=e;return t(["Close search bar"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},preferences:e=>{const{normalize:t}=e;return t(["Preferences"])},timelines:e=>{const{normalize:t}=e;return t(["Timelines"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])},lists:e=>{const{normalize:t}=e;return t(["Lists"])},edit_nav_mobile:e=>{const{normalize:t}=e;return t(["Customize navigation bar"])},edit_pinned:e=>{const{normalize:t}=e;return t(["Edit pinned items"])},edit_finish:e=>{const{normalize:t}=e;return t(["Done editing"])},mobile_sidebar:e=>{const{normalize:t}=e;return t(["Toggle mobile sidebar"])},mobile_notifications:e=>{const{normalize:t}=e;return t(["Open notifications"])},mobile_notifications:e=>{const{normalize:t}=e;return t(["Open notifications (there are unread ones)"])},mobile_notifications_close:e=>{const{normalize:t}=e;return t(["Close notifications"])},announcements:e=>{const{normalize:t}=e;return t(["Announcements"])}},notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Unknown status, searching for it…"])},error:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Error fetching notifications: ",n(o(0))])},favorited_you:e=>{const{normalize:t}=e;return t(["favorited your status"])},followed_you:e=>{const{normalize:t}=e;return t(["followed you"])},follow_request:e=>{const{normalize:t}=e;return t(["wants to follow you"])},load_older:e=>{const{normalize:t}=e;return t(["Load older notifications"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},read:e=>{const{normalize:t}=e;return t(["Read!"])},repeated_you:e=>{const{normalize:t}=e;return t(["repeated your status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No more notifications"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrated to"])},reacted_with:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["reacted with ",n(o(0))])},submitted_report:e=>{const{normalize:t}=e;return t(["submitted a report"])},poll_ended:e=>{const{normalize:t}=e;return t(["poll has ended"])}},polls:{add_poll:e=>{const{normalize:t}=e;return t(["Add poll"])},add_option:e=>{const{normalize:t}=e;return t(["Add option"])},option:e=>{const{normalize:t}=e;return t(["Option"])},votes:e=>{const{normalize:t}=e;return t(["votes"])},people_voted_count:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t([n(o("count"))," person voted"]),t([n(o("count"))," people voted"])])},votes_count:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t([n(o("count"))," vote"]),t([n(o("count"))," votes"])])},vote:e=>{const{normalize:t}=e;return t(["Vote"])},type:e=>{const{normalize:t}=e;return t(["Poll type"])},single_choice:e=>{const{normalize:t}=e;return t(["Single choice"])},multiple_choices:e=>{const{normalize:t}=e;return t(["Multiple choices"])},expiry:e=>{const{normalize:t}=e;return t(["Poll age"])},expires_in:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Poll ends in ",n(o(0))])},expired:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Poll ended ",n(o(0))," ago"])},not_enough_options:e=>{const{normalize:t}=e;return t(["Too few unique options in poll"])}},emoji:{stickers:e=>{const{normalize:t}=e;return t(["Stickers"])},emoji:e=>{const{normalize:t}=e;return t(["Emoji"])},keep_open:e=>{const{normalize:t}=e;return t(["Keep picker open"])},search_emoji:e=>{const{normalize:t}=e;return t(["Search for an emoji"])},add_emoji:e=>{const{normalize:t}=e;return t(["Insert emoji"])},custom:e=>{const{normalize:t}=e;return t(["Custom emoji"])},unpacked:e=>{const{normalize:t}=e;return t(["Unpacked emoji"])},unicode:e=>{const{normalize:t}=e;return t(["Unicode emoji"])},unicode_groups:{activities:e=>{const{normalize:t}=e;return t(["Activities"])},"animals-and-nature":e=>{const{normalize:t}=e;return t(["Animals & Nature"])},flags:e=>{const{normalize:t}=e;return t(["Flags"])},"food-and-drink":e=>{const{normalize:t}=e;return t(["Food & Drink"])},objects:e=>{const{normalize:t}=e;return t(["Objects"])},"people-and-body":e=>{const{normalize:t}=e;return t(["People & Body"])},"smileys-and-emotion":e=>{const{normalize:t}=e;return t(["Smileys & Emotion"])},symbols:e=>{const{normalize:t}=e;return t(["Symbols"])},"travel-and-places":e=>{const{normalize:t}=e;return t(["Travel & Places"])}},load_all_hint:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Loaded first ",n(o("saneAmount"))," emoji, loading all emoji may cause performance issues."])},load_all:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Loading all ",n(o("emojiAmount"))," emoji"])},regional_indicator:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Regional indicator ",n(o("letter"))])}},errors:{storage_unavailable:e=>{const{normalize:t}=e;return t(["Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies."])}},interactions:{favs_repeats:e=>{const{normalize:t}=e;return t(["Repeats and favorites"])},follows:e=>{const{normalize:t}=e;return t(["New follows"])},emoji_reactions:e=>{const{normalize:t}=e;return t(["Emoji Reactions"])},reports:e=>{const{normalize:t}=e;return t(["Reports"])},moves:e=>{const{normalize:t}=e;return t(["User migrates"])},load_older:e=>{const{normalize:t}=e;return t(["Load older interactions"])}},post_status:{edit_status:e=>{const{normalize:t}=e;return t(["Edit status"])},new_status:e=>{const{normalize:t}=e;return t(["Post new status"])},account_not_locked_warning:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Your account is not ",n(o(0)),". Anyone can follow you to view your follower-only posts."])},account_not_locked_warning_link:e=>{const{normalize:t}=e;return t(["locked"])},attachments_sensitive:e=>{const{normalize:t}=e;return t(["Mark attachments as sensitive"])},media_description:e=>{const{normalize:t}=e;return t(["Media description"])},content_type:{"text/plain":e=>{const{normalize:t}=e;return t(["Plain text"])},"text/html":e=>{const{normalize:t}=e;return t(["HTML"])},"text/markdown":e=>{const{normalize:t}=e;return t(["Markdown"])},"text/bbcode":e=>{const{normalize:t}=e;return t(["BBCode"])}},content_type_selection:e=>{const{normalize:t}=e;return t(["Post format"])},content_warning:e=>{const{normalize:t}=e;return t(["Subject (optional)"])},default:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},direct_warning_to_all:e=>{const{normalize:t}=e;return t(["This post will be visible to all the mentioned users."])},direct_warning_to_first_only:e=>{const{normalize:t}=e;return t(["This post will only be visible to the mentioned users at the beginning of the message."])},edit_remote_warning:e=>{const{normalize:t}=e;return t(["Other remote instances may not support editing and unable to receive the latest version of your post."])},edit_unsupported_warning:e=>{const{normalize:t}=e;return t(["Pleroma does not support editing mentions or polls."])},posting:e=>{const{normalize:t}=e;return t(["Posting"])},post:e=>{const{normalize:t}=e;return t(["Post"])},preview:e=>{const{normalize:t}=e;return t(["Preview"])},preview_empty:e=>{const{normalize:t}=e;return t(["Empty"])},empty_status_error:e=>{const{normalize:t}=e;return t(["Can't post an empty status with no files"])},media_description_error:e=>{const{normalize:t}=e;return t(["Failed to update media, try again"])},scope_notice:{public:e=>{const{normalize:t}=e;return t(["This post will be visible to everyone"])},private:e=>{const{normalize:t}=e;return t(["This post will be visible to your followers only"])},unlisted:e=>{const{normalize:t}=e;return t(["This post will not be visible in Public Timeline and The Whole Known Network"])}},scope_notice_dismiss:e=>{const{normalize:t}=e;return t(["Close this notice"])},scope:{direct:e=>{const{normalize:t}=e;return t(["Direct - post to mentioned users only"])},private:e=>{const{normalize:t}=e;return t(["Followers-only - post to followers only"])},public:e=>{const{normalize:t}=e;return t(["Public - post to public timelines"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted - do not post to public timelines"])}}},registration:{bio_optional:e=>{const{normalize:t}=e;return t(["Bio (optional)"])},email:e=>{const{normalize:t}=e;return t(["Email"])},email_optional:e=>{const{normalize:t}=e;return t(["Email (optional)"])},fullname:e=>{const{normalize:t}=e;return t(["Display name"])},password_confirm:e=>{const{normalize:t}=e;return t(["Password confirmation"])},registration:e=>{const{normalize:t}=e;return t(["Registration"])},token:e=>{const{normalize:t}=e;return t(["Invite token"])},captcha:e=>{const{normalize:t}=e;return t(["CAPTCHA"])},new_captcha:e=>{const{normalize:t}=e;return t(["Click the image to get a new captcha"])},username_placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},fullname_placeholder:e=>{const{normalize:t}=e;return t(["e.g. Lain Iwakura"])},bio_placeholder:e=>{const{normalize:t}=e;return t(["e.g.\nHi, I'm Lain.\nI’m an anime girl living in suburban Japan. You may know me from the Wired."])},reason:e=>{const{normalize:t}=e;return t(["Reason to register"])},reason_placeholder:e=>{const{normalize:t}=e;return t(["This instance approves registrations manually.\nLet the administration know why you want to register."])},register:e=>{const{normalize:t}=e;return t(["Register"])},validations:{username_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},fullname_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},email_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_match:e=>{const{normalize:t}=e;return t(["should be the same as password"])},birthday_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},birthday_min_age:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["must be on or before ",n(o("date"))])}},email_language:e=>{const{normalize:t}=e;return t(["In which language do you want to receive emails from the server?"])},birthday:e=>{const{normalize:t}=e;return t(["Birthday:"])},birthday_optional:e=>{const{normalize:t}=e;return t(["Birthday (optional):"])}},remote_user_resolver:{remote_user_resolver:e=>{const{normalize:t}=e;return t(["Remote user resolver"])},searching_for:e=>{const{normalize:t}=e;return t(["Searching for"])},error:e=>{const{normalize:t}=e;return t(["Not found."])}},report:{reporter:e=>{const{normalize:t}=e;return t(["Reporter:"])},reported_user:e=>{const{normalize:t}=e;return t(["Reported user:"])},reported_statuses:e=>{const{normalize:t}=e;return t(["Reported statuses:"])},notes:e=>{const{normalize:t}=e;return t(["Notes:"])},state:e=>{const{normalize:t}=e;return t(["State:"])},state_open:e=>{const{normalize:t}=e;return t(["Open"])},state_closed:e=>{const{normalize:t}=e;return t(["Closed"])},state_resolved:e=>{const{normalize:t}=e;return t(["Resolved"])}},selectable_list:{select_all:e=>{const{normalize:t}=e;return t(["Select all"])}},settings:{add_language:e=>{const{normalize:t}=e;return t(["Add fallback language"])},remove_language:e=>{const{normalize:t}=e;return t(["Remove"])},primary_language:e=>{const{normalize:t}=e;return t(["Primary language:"])},fallback_language:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Fallback language ",n(o("index")),":"])},app_name:e=>{const{normalize:t}=e;return t(["App name"])},expert_mode:e=>{const{normalize:t}=e;return t(["Show advanced"])},save:e=>{const{normalize:t}=e;return t(["Save changes"])},security:e=>{const{normalize:t}=e;return t(["Security"])},setting_changed:e=>{const{normalize:t}=e;return t(["Setting is different from default"])},setting_server_side:e=>{const{normalize:t}=e;return t(["This setting is tied to your profile and affects all sessions and clients"])},enter_current_password_to_confirm:e=>{const{normalize:t}=e;return t(["Enter your current password to confirm your identity"])},post_look_feel:e=>{const{normalize:t}=e;return t(["Posts Look & Feel"])},mention_links:e=>{const{normalize:t}=e;return t(["Mention links"])},mfa:{otp:e=>{const{normalize:t}=e;return t(["OTP"])},setup_otp:e=>{const{normalize:t}=e;return t(["Setup OTP"])},wait_pre_setup_otp:e=>{const{normalize:t}=e;return t(["presetting OTP"])},confirm_and_enable:e=>{const{normalize:t}=e;return t(["Confirm & enable OTP"])},title:e=>{const{normalize:t}=e;return t(["Two-factor Authentication"])},generate_new_recovery_codes:e=>{const{normalize:t}=e;return t(["Generate new recovery codes"])},warning_of_generate_new_codes:e=>{const{normalize:t}=e;return t(["When you generate new recovery codes, your old codes won’t work anymore."])},recovery_codes:e=>{const{normalize:t}=e;return t(["Recovery codes."])},waiting_a_recovery_codes:e=>{const{normalize:t}=e;return t(["Receiving backup codes…"])},recovery_codes_warning:e=>{const{normalize:t}=e;return t(["Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account."])},authentication_methods:e=>{const{normalize:t}=e;return t(["Authentication methods"])},scan:{title:e=>{const{normalize:t}=e;return t(["Scan"])},desc:e=>{const{normalize:t}=e;return t(["Using your two-factor app, scan this QR code or enter text key:"])},secret_code:e=>{const{normalize:t}=e;return t(["Key"])}},verify:{desc:e=>{const{normalize:t}=e;return t(["To enable two-factor authentication, enter the code from your two-factor app:"])}}},lists_navigation:e=>{const{normalize:t}=e;return t(["Show lists in navigation"])},allow_following_move:e=>{const{normalize:t}=e;return t(["Allow auto-follow when following account moves"])},attachmentRadius:e=>{const{normalize:t}=e;return t(["Attachments"])},attachments:e=>{const{normalize:t}=e;return t(["Attachments"])},avatar:e=>{const{normalize:t}=e;return t(["Avatar"])},avatarAltRadius:e=>{const{normalize:t}=e;return t(["Avatars (notifications)"])},avatarRadius:e=>{const{normalize:t}=e;return t(["Avatars"])},background:e=>{const{normalize:t}=e;return t(["Background"])},bio:e=>{const{normalize:t}=e;return t(["Bio"])},email_language:e=>{const{normalize:t}=e;return t(["Language for receiving emails from the server"])},block_export:e=>{const{normalize:t}=e;return t(["Block export"])},block_export_button:e=>{const{normalize:t}=e;return t(["Export your blocks to a csv file"])},block_import:e=>{const{normalize:t}=e;return t(["Block import"])},block_import_error:e=>{const{normalize:t}=e;return t(["Error importing blocks"])},blocks_imported:e=>{const{normalize:t}=e;return t(["Blocks imported! Processing them will take a while."])},mute_export:e=>{const{normalize:t}=e;return t(["Mute export"])},mute_export_button:e=>{const{normalize:t}=e;return t(["Export your mutes to a csv file"])},mute_import:e=>{const{normalize:t}=e;return t(["Mute import"])},mute_import_error:e=>{const{normalize:t}=e;return t(["Error importing mutes"])},mutes_imported:e=>{const{normalize:t}=e;return t(["Mutes imported! Processing them will take a while."])},import_mutes_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import mutes from a csv file"])},account_backup:e=>{const{normalize:t}=e;return t(["Account backup"])},account_backup_description:e=>{const{normalize:t}=e;return t(["This allows you to download an archive of your account information and your posts, but they cannot yet be imported into a Pleroma account."])},account_backup_table_head:e=>{const{normalize:t}=e;return t(["Backup"])},download_backup:e=>{const{normalize:t}=e;return t(["Download"])},backup_not_ready:e=>{const{normalize:t}=e;return t(["This backup is not ready yet."])},backup_running:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["This backup is in progress, processed ",n(o("number"))," record."]),t(["This backup is in progress, processed ",n(o("number"))," records."])])},backup_failed:e=>{const{normalize:t}=e;return t(["This backup has failed."])},remove_backup:e=>{const{normalize:t}=e;return t(["Remove"])},list_backups_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error fetching backup list: ",n(o("error"))])},add_backup:e=>{const{normalize:t}=e;return t(["Create a new backup"])},added_backup:e=>{const{normalize:t}=e;return t(["Added a new backup."])},add_backup_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error adding a new backup: ",n(o("error"))])},blocks_tab:e=>{const{normalize:t}=e;return t(["Blocks"])},bot:e=>{const{normalize:t}=e;return t(["This is a bot account"])},btnRadius:e=>{const{normalize:t}=e;return t(["Buttons"])},cBlue:e=>{const{normalize:t}=e;return t(["Blue (Reply, follow)"])},cGreen:e=>{const{normalize:t}=e;return t(["Green (Retweet)"])},cOrange:e=>{const{normalize:t}=e;return t(["Orange (Favorite)"])},cRed:e=>{const{normalize:t}=e;return t(["Red (Cancel)"])},change_email:e=>{const{normalize:t}=e;return t(["Change email"])},change_email_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your email."])},changed_email:e=>{const{normalize:t}=e;return t(["Email changed successfully!"])},change_password:e=>{const{normalize:t}=e;return t(["Change password"])},change_password_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your password."])},changed_password:e=>{const{normalize:t}=e;return t(["Password changed successfully!"])},chatMessageRadius:e=>{const{normalize:t}=e;return t(["Chat message"])},collapse_subject:e=>{const{normalize:t}=e;return t(["Collapse posts with subjects"])},composing:e=>{const{normalize:t}=e;return t(["Composing"])},confirm_new_password:e=>{const{normalize:t}=e;return t(["Confirm new password"])},current_password:e=>{const{normalize:t}=e;return t(["Current password"])},confirm_dialogs:e=>{const{normalize:t}=e;return t(["Ask for confirmation when"])},confirm_dialogs_repeat:e=>{const{normalize:t}=e;return t(["repeating a status"])},confirm_dialogs_unfollow:e=>{const{normalize:t}=e;return t(["unfollowing a user"])},confirm_dialogs_block:e=>{const{normalize:t}=e;return t(["blocking a user"])},confirm_dialogs_mute:e=>{const{normalize:t}=e;return t(["muting a user"])},confirm_dialogs_delete:e=>{const{normalize:t}=e;return t(["deleting a status"])},confirm_dialogs_logout:e=>{const{normalize:t}=e;return t(["logging out"])},confirm_dialogs_approve_follow:e=>{const{normalize:t}=e;return t(["approving a follower"])},confirm_dialogs_deny_follow:e=>{const{normalize:t}=e;return t(["denying a follower"])},confirm_dialogs_remove_follower:e=>{const{normalize:t}=e;return t(["removing a follower"])},mutes_and_blocks:e=>{const{normalize:t}=e;return t(["Mutes and Blocks"])},data_import_export_tab:e=>{const{normalize:t}=e;return t(["Data import / export"])},default_vis:e=>{const{normalize:t}=e;return t(["Default visibility scope"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},delete_account_description:e=>{const{normalize:t}=e;return t(["Permanently delete your data and deactivate your account."])},delete_account_error:e=>{const{normalize:t}=e;return t(["There was an issue deleting your account. If this persists please contact your instance administrator."])},delete_account_instructions:e=>{const{normalize:t}=e;return t(["Type your password in the input below to confirm account deletion."])},account_alias:e=>{const{normalize:t}=e;return t(["Account aliases"])},account_alias_table_head:e=>{const{normalize:t}=e;return t(["Alias"])},list_aliases_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error fetching aliases: ",n(o("error"))])},hide_list_aliases_error_action:e=>{const{normalize:t}=e;return t(["Close"])},remove_alias:e=>{const{normalize:t}=e;return t(["Remove this alias"])},new_alias_target:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Add a new alias (e.g. ",n(o("example")),")"])},added_alias:e=>{const{normalize:t}=e;return t(["Alias is added."])},add_alias_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error adding alias: ",n(o("error"))])},move_account:e=>{const{normalize:t}=e;return t(["Move account"])},move_account_notes:e=>{const{normalize:t}=e;return t(["If you want to move the account somewhere else, you must go to your target account and add an alias pointing here."])},move_account_target:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Target account (e.g. ",n(o("example")),")"])},moved_account:e=>{const{normalize:t}=e;return t(["Account is moved."])},move_account_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error moving account: ",n(o("error"))])},discoverable:e=>{const{normalize:t}=e;return t(["Allow discovery of this account in search results and other services"])},domain_mutes:e=>{const{normalize:t}=e;return t(["Domains"])},avatar_size_instruction:e=>{const{normalize:t}=e;return t(["The recommended minimum size for avatar images is 150x150 pixels."])},pad_emoji:e=>{const{normalize:t}=e;return t(["Pad emoji with spaces when adding from picker"])},emoji_reactions_on_timeline:e=>{const{normalize:t}=e;return t(["Show emoji reactions on timeline"])},export_theme:e=>{const{normalize:t}=e;return t(["Save preset"])},filtering:e=>{const{normalize:t}=e;return t(["Filtering"])},wordfilter:e=>{const{normalize:t}=e;return t(["Wordfilter"])},filtering_explanation:e=>{const{normalize:t}=e;return t(["All statuses containing these words will be muted, one per line"])},word_filter_and_more:e=>{const{normalize:t}=e;return t(["Word filter and more..."])},follow_export:e=>{const{normalize:t}=e;return t(["Follow export"])},follow_export_button:e=>{const{normalize:t}=e;return t(["Export your follows to a csv file"])},follow_import:e=>{const{normalize:t}=e;return t(["Follow import"])},follow_import_error:e=>{const{normalize:t}=e;return t(["Error importing followers"])},follows_imported:e=>{const{normalize:t}=e;return t(["Follows imported! Processing them will take a while."])},accent:e=>{const{normalize:t}=e;return t(["Accent"])},foreground:e=>{const{normalize:t}=e;return t(["Foreground"])},general:e=>{const{normalize:t}=e;return t(["General"])},hide_attachments_in_convo:e=>{const{normalize:t}=e;return t(["Hide attachments in conversations"])},hide_attachments_in_tl:e=>{const{normalize:t}=e;return t(["Hide attachments in timeline"])},hide_media_previews:e=>{const{normalize:t}=e;return t(["Hide media previews"])},hide_muted_posts:e=>{const{normalize:t}=e;return t(["Hide posts of muted users"])},mute_bot_posts:e=>{const{normalize:t}=e;return t(["Mute bot posts"])},hide_bot_indication:e=>{const{normalize:t}=e;return t(["Hide bot indication in posts"])},hide_all_muted_posts:e=>{const{normalize:t}=e;return t(["Hide muted posts"])},max_thumbnails:e=>{const{normalize:t}=e;return t(["Maximum amount of thumbnails per post (empty = no limit)"])},hide_isp:e=>{const{normalize:t}=e;return t(["Hide instance-specific panel"])},hide_shoutbox:e=>{const{normalize:t}=e;return t(["Hide instance shoutbox"])},right_sidebar:e=>{const{normalize:t}=e;return t(["Reverse order of columns"])},navbar_column_stretch:e=>{const{normalize:t}=e;return t(["Stretch navbar to columns width"])},always_show_post_button:e=>{const{normalize:t}=e;return t(["Always show floating New Post button"])},hide_wallpaper:e=>{const{normalize:t}=e;return t(["Hide instance wallpaper"])},preload_images:e=>{const{normalize:t}=e;return t(["Preload images"])},use_one_click_nsfw:e=>{const{normalize:t}=e;return t(["Open NSFW attachments with just one click"])},hide_post_stats:e=>{const{normalize:t}=e;return t(["Hide post statistics (e.g. the number of favorites)"])},hide_user_stats:e=>{const{normalize:t}=e;return t(["Hide user statistics (e.g. the number of followers)"])},hide_filtered_statuses:e=>{const{normalize:t}=e;return t(["Hide all filtered posts"])},hide_wordfiltered_statuses:e=>{const{normalize:t}=e;return t(["Hide word-filtered statuses"])},hide_muted_threads:e=>{const{normalize:t}=e;return t(["Hide muted threads"])},import_blocks_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import blocks from a csv file"])},import_followers_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import follows from a csv file"])},import_theme:e=>{const{normalize:t}=e;return t(["Load preset"])},inputRadius:e=>{const{normalize:t}=e;return t(["Input fields"])},checkboxRadius:e=>{const{normalize:t}=e;return t(["Checkboxes"])},instance_default:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["(default: ",n(o("value")),")"])},instance_default_simple:e=>{const{normalize:t}=e;return t(["(default)"])},interface:e=>{const{normalize:t}=e;return t(["Interface"])},interfaceLanguage:e=>{const{normalize:t}=e;return t(["Interface language"])},invalid_theme_imported:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma theme. No changes to your theme were made."])},limited_availability:e=>{const{normalize:t}=e;return t(["Unavailable in your browser"])},links:e=>{const{normalize:t}=e;return t(["Links"])},lock_account_description:e=>{const{normalize:t}=e;return t(["Restrict your account to approved followers only"])},loop_video:e=>{const{normalize:t}=e;return t(["Loop videos"])},loop_video_silent_only:e=>{const{normalize:t}=e;return t(['Loop only videos without sound (i.e. Mastodon\'s "gifs")'])},mutes_tab:e=>{const{normalize:t}=e;return t(["Mutes"])},play_videos_in_modal:e=>{const{normalize:t}=e;return t(["Play videos in a popup frame"])},file_export_import:{backup_restore:e=>{const{normalize:t}=e;return t(["Settings backup"])},backup_settings:e=>{const{normalize:t}=e;return t(["Backup settings to file"])},backup_settings_theme:e=>{const{normalize:t}=e;return t(["Backup settings and theme to file"])},restore_settings:e=>{const{normalize:t}=e;return t(["Restore settings from file"])},errors:{invalid_file:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma settings backup. No changes were made."])},file_too_new:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Incompatile major version: ",n(o("fileMajor")),", this PleromaFE (settings ver ",n(o("feMajor")),") is too old to handle it"])},file_too_old:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Incompatile major version: ",n(o("fileMajor")),", file version is too old and not supported (min. set. ver. ",n(o("feMajor")),")"])},file_slightly_new:e=>{const{normalize:t}=e;return t(["File minor version is different, some settings might not load"])}}},profile_fields:{label:e=>{const{normalize:t}=e;return t(["Profile metadata"])},add_field:e=>{const{normalize:t}=e;return t(["Add field"])},name:e=>{const{normalize:t}=e;return t(["Label"])},value:e=>{const{normalize:t}=e;return t(["Content"])}},birthday:{label:e=>{const{normalize:t}=e;return t(["Birthday"])},show_birthday:e=>{const{normalize:t}=e;return t(["Show my birthday"])}},account_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},use_contain_fit:e=>{const{normalize:t}=e;return t(["Don't crop the attachment in thumbnails"])},name:e=>{const{normalize:t}=e;return t(["Name"])},name_bio:e=>{const{normalize:t}=e;return t(["Name & bio"])},new_email:e=>{const{normalize:t}=e;return t(["New email"])},new_password:e=>{const{normalize:t}=e;return t(["New password"])},posts:e=>{const{normalize:t}=e;return t(["Posts"])},user_profiles:e=>{const{normalize:t}=e;return t(["User Profiles"])},notification_visibility:e=>{const{normalize:t}=e;return t(["Types of notifications to show"])},notification_visibility_follows:e=>{const{normalize:t}=e;return t(["Follows"])},notification_visibility_likes:e=>{const{normalize:t}=e;return t(["Favorites"])},notification_visibility_mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},notification_visibility_repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},notification_visibility_moves:e=>{const{normalize:t}=e;return t(["User Migrates"])},notification_visibility_emoji_reactions:e=>{const{normalize:t}=e;return t(["Reactions"])},notification_visibility_polls:e=>{const{normalize:t}=e;return t(["Ends of polls you voted in"])},no_rich_text_description:e=>{const{normalize:t}=e;return t(["Strip rich text formatting from all posts"])},no_blocks:e=>{const{normalize:t}=e;return t(["No blocks"])},no_mutes:e=>{const{normalize:t}=e;return t(["No mutes"])},hide_favorites_description:e=>{const{normalize:t}=e;return t(["Don't show list of my favorites (people still get notified)"])},hide_follows_description:e=>{const{normalize:t}=e;return t(["Don't show who I'm following"])},hide_followers_description:e=>{const{normalize:t}=e;return t(["Don't show who's following me"])},hide_follows_count_description:e=>{const{normalize:t}=e;return t(["Don't show follow count"])},hide_followers_count_description:e=>{const{normalize:t}=e;return t(["Don't show follower count"])},show_admin_badge:e=>{const{normalize:t}=e;return t(['Show "Admin" badge in my profile'])},show_moderator_badge:e=>{const{normalize:t}=e;return t(['Show "Moderator" badge in my profile'])},nsfw_clickthrough:e=>{const{normalize:t}=e;return t(["Hide sensitive/NSFW media"])},oauth_tokens:e=>{const{normalize:t}=e;return t(["OAuth tokens"])},token:e=>{const{normalize:t}=e;return t(["Token"])},refresh_token:e=>{const{normalize:t}=e;return t(["Refresh token"])},valid_until:e=>{const{normalize:t}=e;return t(["Valid until"])},revoke_token:e=>{const{normalize:t}=e;return t(["Revoke"])},panelRadius:e=>{const{normalize:t}=e;return t(["Panels"])},pause_on_unfocused:e=>{const{normalize:t}=e;return t(["Pause when tab is not focused"])},presets:e=>{const{normalize:t}=e;return t(["Presets"])},profile_background:e=>{const{normalize:t}=e;return t(["Profile background"])},profile_banner:e=>{const{normalize:t}=e;return t(["Profile banner"])},profile_tab:e=>{const{normalize:t}=e;return t(["Profile"])},radii_help:e=>{const{normalize:t}=e;return t(["Set up interface edge rounding (in pixels)"])},replies_in_timeline:e=>{const{normalize:t}=e;return t(["Replies in timeline"])},reply_visibility_all:e=>{const{normalize:t}=e;return t(["Show all replies"])},reply_visibility_following:e=>{const{normalize:t}=e;return t(["Only show replies directed at me or users I'm following"])},reply_visibility_self:e=>{const{normalize:t}=e;return t(["Only show replies directed at me"])},reply_visibility_following_short:e=>{const{normalize:t}=e;return t(["Show replies to my follows"])},reply_visibility_self_short:e=>{const{normalize:t}=e;return t(["Show replies to self only"])},autohide_floating_post_button:e=>{const{normalize:t}=e;return t(["Automatically hide New Post button (mobile)"])},saving_err:e=>{const{normalize:t}=e;return t(["Error saving settings"])},saving_ok:e=>{const{normalize:t}=e;return t(["Settings saved"])},search_user_to_block:e=>{const{normalize:t}=e;return t(["Search whom you want to block"])},search_user_to_mute:e=>{const{normalize:t}=e;return t(["Search whom you want to mute"])},security_tab:e=>{const{normalize:t}=e;return t(["Security"])},scope_copy:e=>{const{normalize:t}=e;return t(["Copy scope when replying (DMs are always copied)"])},minimal_scopes_mode:e=>{const{normalize:t}=e;return t(["Minimize post scope selection options"])},set_new_avatar:e=>{const{normalize:t}=e;return t(["Set new avatar"])},set_new_profile_background:e=>{const{normalize:t}=e;return t(["Set new profile background"])},set_new_profile_banner:e=>{const{normalize:t}=e;return t(["Set new profile banner"])},reset_avatar:e=>{const{normalize:t}=e;return t(["Reset avatar"])},reset_profile_background:e=>{const{normalize:t}=e;return t(["Reset profile background"])},reset_profile_banner:e=>{const{normalize:t}=e;return t(["Reset profile banner"])},reset_avatar_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the avatar?"])},reset_banner_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the banner?"])},reset_background_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the background?"])},settings:e=>{const{normalize:t}=e;return t(["Settings"])},subject_input_always_show:e=>{const{normalize:t}=e;return t(["Always show subject field"])},subject_line_behavior:e=>{const{normalize:t}=e;return t(["Copy subject when replying"])},subject_line_email:e=>{const{normalize:t}=e;return t(['Like email: "re: subject"'])},subject_line_mastodon:e=>{const{normalize:t}=e;return t(["Like mastodon: copy as is"])},subject_line_noop:e=>{const{normalize:t}=e;return t(["Do not copy"])},conversation_display:e=>{const{normalize:t}=e;return t(["Conversation display style"])},conversation_display_tree:e=>{const{normalize:t}=e;return t(["Tree-style"])},conversation_display_tree_quick:e=>{const{normalize:t}=e;return t(["Tree view"])},disable_sticky_headers:e=>{const{normalize:t}=e;return t(["Don't stick column headers to top of the screen"])},show_scrollbars:e=>{const{normalize:t}=e;return t(["Show side column's scrollbars"])},third_column_mode:e=>{const{normalize:t}=e;return t(["When there's enough space, show third column containing"])},third_column_mode_none:e=>{const{normalize:t}=e;return t(["Don't show third column at all"])},third_column_mode_notifications:e=>{const{normalize:t}=e;return t(["Notifications column"])},third_column_mode_postform:e=>{const{normalize:t}=e;return t(["Main post form and navigation"])},columns:e=>{const{normalize:t}=e;return t(["Columns"])},column_sizes:e=>{const{normalize:t}=e;return t(["Column sizes"])},column_sizes_sidebar:e=>{const{normalize:t}=e;return t(["Sidebar"])},column_sizes_content:e=>{const{normalize:t}=e;return t(["Content"])},column_sizes_notifs:e=>{const{normalize:t}=e;return t(["Notifications"])},tree_advanced:e=>{const{normalize:t}=e;return t(["Allow more flexible navigation in tree view"])},tree_fade_ancestors:e=>{const{normalize:t}=e;return t(["Display ancestors of the current status in faint text"])},conversation_display_linear:e=>{const{normalize:t}=e;return t(["Linear-style"])},conversation_display_linear_quick:e=>{const{normalize:t}=e;return t(["Linear view"])},conversation_other_replies_button:e=>{const{normalize:t}=e;return t(['Show the "other replies" button'])},conversation_other_replies_button_below:e=>{const{normalize:t}=e;return t(["Below statuses"])},conversation_other_replies_button_inside:e=>{const{normalize:t}=e;return t(["Inside statuses"])},max_depth_in_thread:e=>{const{normalize:t}=e;return t(["Maximum number of levels in thread to display by default"])},post_status_content_type:e=>{const{normalize:t}=e;return t(["Post status content type"])},sensitive_by_default:e=>{const{normalize:t}=e;return t(["Mark posts as sensitive by default"])},stop_gifs:e=>{const{normalize:t}=e;return t(["Pause animated images until you hover on them"])},streaming:e=>{const{normalize:t}=e;return t(["Automatically show new posts when scrolled to the top"])},auto_update:e=>{const{normalize:t}=e;return t(["Show new posts automatically"])},user_mutes:e=>{const{normalize:t}=e;return t(["Users"])},useStreamingApi:e=>{const{normalize:t}=e;return t(["Receive posts and notifications real-time"])},use_websockets:e=>{const{normalize:t}=e;return t(["Use websockets (Realtime updates)"])},text:e=>{const{normalize:t}=e;return t(["Text"])},theme:e=>{const{normalize:t}=e;return t(["Theme"])},theme_help:e=>{const{normalize:t}=e;return t(["Use hex color codes (#rrggbb) to customize your color theme."])},theme_help_v2_1:e=>{const{normalize:t}=e;return t(['You can also override certain component\'s colors and opacity by toggling the checkbox, use "Clear all" button to clear all overrides.'])},theme_help_v2_2:e=>{const{normalize:t}=e;return t(["Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case."])},tooltipRadius:e=>{const{normalize:t}=e;return t(["Tooltips/alerts"])},type_domains_to_mute:e=>{const{normalize:t}=e;return t(["Search domains to mute"])},upload_a_photo:e=>{const{normalize:t}=e;return t(["Upload a photo"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},values:{false:e=>{const{normalize:t}=e;return t(["no"])},true:e=>{const{normalize:t}=e;return t(["yes"])}},virtual_scrolling:e=>{const{normalize:t}=e;return t(["Optimize timeline rendering"])},use_at_icon:e=>{const{normalize:t}=e;return t(["Display ","@"," symbol as an icon instead of text"])},mention_link_display:e=>{const{normalize:t}=e;return t(["Display mention links"])},mention_link_display_short:e=>{const{normalize:t}=e;return t(["always as short names (e.g. ","@","foo)"])},mention_link_display_full_for_remote:e=>{const{normalize:t}=e;return t(["as full names only for remote users (e.g. ","@","foo","@","example.org)"])},mention_link_display_full:e=>{const{normalize:t}=e;return t(["always as full names (e.g. ","@","foo","@","example.org)"])},mention_link_use_tooltip:e=>{const{normalize:t}=e;return t(["Show user card when clicking mention links"])},mention_link_show_avatar:e=>{const{normalize:t}=e;return t(["Show user avatar beside the link"])},mention_link_show_avatar_quick:e=>{const{normalize:t}=e;return t(["Show user avatar next to mentions"])},mention_link_fade_domain:e=>{const{normalize:t}=e;return t(["Fade domains (e.g. ","@","example.org in ","@","foo","@","example.org)"])},mention_link_bolden_you:e=>{const{normalize:t}=e;return t(["Highlight mention of you when you are mentioned"])},user_popover_avatar_action:e=>{const{normalize:t}=e;return t(["Popover avatar click action"])},user_popover_avatar_action_zoom:e=>{const{normalize:t}=e;return t(["Zoom the avatar"])},user_popover_avatar_action_close:e=>{const{normalize:t}=e;return t(["Close the popover"])},user_popover_avatar_action_open:e=>{const{normalize:t}=e;return t(["Open profile"])},user_popover_avatar_overlay:e=>{const{normalize:t}=e;return t(["Show user popover over user avatar"])},fun:e=>{const{normalize:t}=e;return t(["Fun"])},greentext:e=>{const{normalize:t}=e;return t(["Meme arrows"])},show_yous:e=>{const{normalize:t}=e;return t(["Show (You)s"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},notification_setting_filters:e=>{const{normalize:t}=e;return t(["Filters"])},notification_setting_block_from_strangers:e=>{const{normalize:t}=e;return t(["Block notifications from users who you do not follow"])},notification_setting_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},notification_setting_hide_notification_contents:e=>{const{normalize:t}=e;return t(["Hide the sender and contents of push notifications"])},notification_mutes:e=>{const{normalize:t}=e;return t(["To stop receiving notifications from a specific user, use a mute."])},notification_blocks:e=>{const{normalize:t}=e;return t(["Blocking a user stops all notifications as well as unsubscribes them."])},enable_web_push_notifications:e=>{const{normalize:t}=e;return t(["Enable web push notifications"])},more_settings:e=>{const{normalize:t}=e;return t(["More settings"])},style:{switcher:{keep_color:e=>{const{normalize:t}=e;return t(["Keep colors"])},keep_shadows:e=>{const{normalize:t}=e;return t(["Keep shadows"])},keep_opacity:e=>{const{normalize:t}=e;return t(["Keep opacity"])},keep_roundness:e=>{const{normalize:t}=e;return t(["Keep roundness"])},keep_fonts:e=>{const{normalize:t}=e;return t(["Keep fonts"])},save_load_hint:e=>{const{normalize:t}=e;return t(['"Keep" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.'])},reset:e=>{const{normalize:t}=e;return t(["Reset"])},clear_all:e=>{const{normalize:t}=e;return t(["Clear all"])},clear_opacity:e=>{const{normalize:t}=e;return t(["Clear opacity"])},load_theme:e=>{const{normalize:t}=e;return t(["Load theme"])},keep_as_is:e=>{const{normalize:t}=e;return t(["Keep as is"])},use_snapshot:e=>{const{normalize:t}=e;return t(["Old version"])},use_source:e=>{const{normalize:t}=e;return t(["New version"])},help:{upgraded_from_v2:e=>{const{normalize:t}=e;return t(["PleromaFE has been upgraded, theme could look a little bit different than you remember."])},v2_imported:e=>{const{normalize:t}=e;return t(["File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies."])},future_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in newer version of FE."])},older_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in older version of FE."])},snapshot_present:e=>{const{normalize:t}=e;return t(["Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead."])},snapshot_missing:e=>{const{normalize:t}=e;return t(["No theme snapshot was in the file so it could look different than originally envisioned."])},fe_upgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's theme engine upgraded after version update."])},fe_downgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's version rolled back."])},migration_snapshot_ok:e=>{const{normalize:t}=e;return t(["Just to be safe, theme snapshot loaded. You can try loading theme data."])},migration_napshot_gone:e=>{const{normalize:t}=e;return t(["For whatever reason snapshot was missing, some stuff could look different than you remember."])},snapshot_source_mismatch:e=>{const{normalize:t}=e;return t(["Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version."])}}},common:{color:e=>{const{normalize:t}=e;return t(["Color"])},opacity:e=>{const{normalize:t}=e;return t(["Opacity"])},contrast:{hint:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Contrast ratio is ",n(o("ratio")),", it ",n(o("level"))," ",n(o("context"))])},level:{aa:e=>{const{normalize:t}=e;return t(["meets Level AA guideline (minimal)"])},aaa:e=>{const{normalize:t}=e;return t(["meets Level AAA guideline (recommended)"])},bad:e=>{const{normalize:t}=e;return t(["doesn't meet any accessibility guidelines"])}},context:{"18pt":e=>{const{normalize:t}=e;return t(["for large (18pt+) text"])},text:e=>{const{normalize:t}=e;return t(["for text"])}}}},common_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Common"])},main:e=>{const{normalize:t}=e;return t(["Common colors"])},foreground_hint:e=>{const{normalize:t}=e;return t(['See "Advanced" tab for more detailed control'])},rgbo:e=>{const{normalize:t}=e;return t(["Icons, accents, badges"])}},advanced_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Advanced"])},alert:e=>{const{normalize:t}=e;return t(["Alert background"])},alert_error:e=>{const{normalize:t}=e;return t(["Error"])},alert_warning:e=>{const{normalize:t}=e;return t(["Warning"])},alert_neutral:e=>{const{normalize:t}=e;return t(["Neutral"])},post:e=>{const{normalize:t}=e;return t(["Posts/User bios"])},badge:e=>{const{normalize:t}=e;return t(["Badge background"])},popover:e=>{const{normalize:t}=e;return t(["Tooltips, menus, popovers"])},badge_notification:e=>{const{normalize:t}=e;return t(["Notification"])},panel_header:e=>{const{normalize:t}=e;return t(["Panel header"])},top_bar:e=>{const{normalize:t}=e;return t(["Top bar"])},borders:e=>{const{normalize:t}=e;return t(["Borders"])},buttons:e=>{const{normalize:t}=e;return t(["Buttons"])},inputs:e=>{const{normalize:t}=e;return t(["Input fields"])},faint_text:e=>{const{normalize:t}=e;return t(["Faded text"])},underlay:e=>{const{normalize:t}=e;return t(["Underlay"])},wallpaper:e=>{const{normalize:t}=e;return t(["Wallpaper"])},poll:e=>{const{normalize:t}=e;return t(["Poll graph"])},icons:e=>{const{normalize:t}=e;return t(["Icons"])},highlight:e=>{const{normalize:t}=e;return t(["Highlighted elements"])},pressed:e=>{const{normalize:t}=e;return t(["Pressed"])},selectedPost:e=>{const{normalize:t}=e;return t(["Selected post"])},selectedMenu:e=>{const{normalize:t}=e;return t(["Selected menu item"])},disabled:e=>{const{normalize:t}=e;return t(["Disabled"])},toggled:e=>{const{normalize:t}=e;return t(["Toggled"])},tabs:e=>{const{normalize:t}=e;return t(["Tabs"])},chat:{incoming:e=>{const{normalize:t}=e;return t(["Incoming"])},outgoing:e=>{const{normalize:t}=e;return t(["Outgoing"])},border:e=>{const{normalize:t}=e;return t(["Border"])}}},radii:{_tab_label:e=>{const{normalize:t}=e;return t(["Roundness"])}},shadows:{_tab_label:e=>{const{normalize:t}=e;return t(["Shadow and lighting"])},component:e=>{const{normalize:t}=e;return t(["Component"])},override:e=>{const{normalize:t}=e;return t(["Override"])},shadow_id:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Shadow #",n(o("value"))])},blur:e=>{const{normalize:t}=e;return t(["Blur"])},spread:e=>{const{normalize:t}=e;return t(["Spread"])},inset:e=>{const{normalize:t}=e;return t(["Inset"])},hintV3:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["For shadows you can also use the ",n(o(0))," notation to use other color slot."])},filter_hint:{always_drop_shadow:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Warning, this shadow always uses ",n(o(0))," when browser supports it."])},drop_shadow_syntax:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0))," does not support ",n(o(1))," parameter and ",n(o(2))," keyword."])},avatar_inset:e=>{const{normalize:t}=e;return t(["Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars."])},spread_zero:e=>{const{normalize:t}=e;return t(["Shadows with spread > 0 will appear as if it was set to zero"])},inset_classic:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Inset shadows will be using ",n(o(0))])}},components:{panel:e=>{const{normalize:t}=e;return t(["Panel"])},panelHeader:e=>{const{normalize:t}=e;return t(["Panel header"])},topBar:e=>{const{normalize:t}=e;return t(["Top bar"])},avatar:e=>{const{normalize:t}=e;return t(["User avatar (in profile view)"])},avatarStatus:e=>{const{normalize:t}=e;return t(["User avatar (in post display)"])},popup:e=>{const{normalize:t}=e;return t(["Popups and tooltips"])},button:e=>{const{normalize:t}=e;return t(["Button"])},buttonHover:e=>{const{normalize:t}=e;return t(["Button (hover)"])},buttonPressed:e=>{const{normalize:t}=e;return t(["Button (pressed)"])},buttonPressedHover:e=>{const{normalize:t}=e;return t(["Button (pressed+hover)"])},input:e=>{const{normalize:t}=e;return t(["Input field"])}}},fonts:{_tab_label:e=>{const{normalize:t}=e;return t(["Fonts"])},help:e=>{const{normalize:t}=e;return t(['Select font to use for elements of UI. For "custom" you have to enter exact font name as it appears in system.'])},components:{interface:e=>{const{normalize:t}=e;return t(["Interface"])},input:e=>{const{normalize:t}=e;return t(["Input fields"])},post:e=>{const{normalize:t}=e;return t(["Post text"])},postCode:e=>{const{normalize:t}=e;return t(["Monospaced text in a post (rich text)"])}},family:e=>{const{normalize:t}=e;return t(["Font name"])},size:e=>{const{normalize:t}=e;return t(["Size (in px)"])},weight:e=>{const{normalize:t}=e;return t(["Weight (boldness)"])},custom:e=>{const{normalize:t}=e;return t(["Custom"])}},preview:{header:e=>{const{normalize:t}=e;return t(["Preview"])},content:e=>{const{normalize:t}=e;return t(["Content"])},error:e=>{const{normalize:t}=e;return t(["Example error"])},button:e=>{const{normalize:t}=e;return t(["Button"])},text:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["A bunch of more ",n(o(0))," and ",n(o(1))])},mono:e=>{const{normalize:t}=e;return t(["content"])},input:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},faint_link:e=>{const{normalize:t}=e;return t(["helpful manual"])},fine_print:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Read our ",n(o(0))," to learn nothing useful!"])},header_faint:e=>{const{normalize:t}=e;return t(["This is fine"])},checkbox:e=>{const{normalize:t}=e;return t(["I have skimmed over terms and conditions"])},link:e=>{const{normalize:t}=e;return t(["a nice lil' link"])}}},version:{title:e=>{const{normalize:t}=e;return t(["Version"])},backend_version:e=>{const{normalize:t}=e;return t(["Backend version"])},frontend_version:e=>{const{normalize:t}=e;return t(["Frontend version"])}}},time:{unit:{days:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," day"]),t([n(o(0))," days"])])},days_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"d"])},hours:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," hour"]),t([n(o(0))," hours"])])},hours_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"h"])},minutes:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," minute"]),t([n(o(0))," minutes"])])},minutes_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"min"])},months:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," month"]),t([n(o(0))," months"])])},months_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"mo"])},seconds:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," second"]),t([n(o(0))," seconds"])])},seconds_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"s"])},weeks:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," week"]),t([n(o(0))," weeks"])])},weeks_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"w"])},years:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," year"]),t([n(o(0))," years"])])},years_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"y"])}},in_future:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["in ",n(o(0))])},in_past:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0))," ago"])},now:e=>{const{normalize:t}=e;return t(["just now"])},now_short:e=>{const{normalize:t}=e;return t(["now"])}},timeline:{collapse:e=>{const{normalize:t}=e;return t(["Collapse"])},conversation:e=>{const{normalize:t}=e;return t(["Conversation"])},error:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Error fetching timeline: ",n(o(0))])},load_older:e=>{const{normalize:t}=e;return t(["Load older statuses"])},no_retweet_hint:e=>{const{normalize:t}=e;return t(["Post is marked as followers-only or direct and cannot be repeated"])},repeated:e=>{const{normalize:t}=e;return t(["repeated"])},show_new:e=>{const{normalize:t}=e;return t(["Show new"])},reload:e=>{const{normalize:t}=e;return t(["Reload"])},up_to_date:e=>{const{normalize:t}=e;return t(["Up-to-date"])},no_more_statuses:e=>{const{normalize:t}=e;return t(["No more statuses"])},no_statuses:e=>{const{normalize:t}=e;return t(["No statuses"])},socket_reconnected:e=>{const{normalize:t}=e;return t(["Realtime connection established"])},socket_broke:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Realtime connection lost: CloseEvent code ",n(o(0))])},quick_view_settings:e=>{const{normalize:t}=e;return t(["Quick view settings"])},quick_filter_settings:e=>{const{normalize:t}=e;return t(["Quick filter settings"])}},status:{favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},repeat_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to repeat this status?"])},repeat_confirm_title:e=>{const{normalize:t}=e;return t(["Repeat confirmation"])},repeat_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Repeat"])},repeat_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not repeat"])},delete:e=>{const{normalize:t}=e;return t(["Delete status"])},edit:e=>{const{normalize:t}=e;return t(["Edit status"])},edited_at:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["(last edited ",n(o("time")),")"])},pin:e=>{const{normalize:t}=e;return t(["Pin on profile"])},unpin:e=>{const{normalize:t}=e;return t(["Unpin from profile"])},pinned:e=>{const{normalize:t}=e;return t(["Pinned"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])},unbookmark:e=>{const{normalize:t}=e;return t(["Unbookmark"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this status?"])},delete_confirm_title:e=>{const{normalize:t}=e;return t(["Delete confirmation"])},delete_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Delete"])},delete_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Keep"])},reply_to:e=>{const{normalize:t}=e;return t(["Reply to"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},replies_list:e=>{const{normalize:t}=e;return t(["Replies:"])},replies_list_with_others:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["Replies (+",n(o("numReplies"))," other):"]),t(["Replies (+",n(o("numReplies"))," others):"])])},mute_conversation:e=>{const{normalize:t}=e;return t(["Mute conversation"])},unmute_conversation:e=>{const{normalize:t}=e;return t(["Unmute conversation"])},status_unavailable:e=>{const{normalize:t}=e;return t(["Status unavailable"])},copy_link:e=>{const{normalize:t}=e;return t(["Copy link to status"])},external_source:e=>{const{normalize:t}=e;return t(["External source"])},thread_muted:e=>{const{normalize:t}=e;return t(["Thread muted"])},thread_muted_and_words:e=>{const{normalize:t}=e;return t([", has words:"])},show_full_subject:e=>{const{normalize:t}=e;return t(["Show full subject"])},hide_full_subject:e=>{const{normalize:t}=e;return t(["Hide full subject"])},show_content:e=>{const{normalize:t}=e;return t(["Show content"])},hide_content:e=>{const{normalize:t}=e;return t(["Hide content"])},status_deleted:e=>{const{normalize:t}=e;return t(["This post was deleted"])},nsfw:e=>{const{normalize:t}=e;return t(["NSFW"])},expand:e=>{const{normalize:t}=e;return t(["Expand"])},you:e=>{const{normalize:t}=e;return t(["(You)"])},plus_more:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["+",n(o("number"))," more"])},many_attachments:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Post has ",n(o("number"))," attachment(s)"])},collapse_attachments:e=>{const{normalize:t}=e;return t(["Collapse attachments"])},show_all_attachments:e=>{const{normalize:t}=e;return t(["Show all attachments"])},show_attachment_in_modal:e=>{const{normalize:t}=e;return t(["Show in media modal"])},show_attachment_description:e=>{const{normalize:t}=e;return t(["Preview description (open attachment for full description)"])},hide_attachment:e=>{const{normalize:t}=e;return t(["Hide attachment"])},remove_attachment:e=>{const{normalize:t}=e;return t(["Remove attachment"])},attachment_stop_flash:e=>{const{normalize:t}=e;return t(["Stop Flash player"])},move_up:e=>{const{normalize:t}=e;return t(["Shift attachment left"])},move_down:e=>{const{normalize:t}=e;return t(["Shift attachment right"])},open_gallery:e=>{const{normalize:t}=e;return t(["Open gallery"])},thread_hide:e=>{const{normalize:t}=e;return t(["Hide this thread"])},thread_show:e=>{const{normalize:t}=e;return t(["Show this thread"])},thread_show_full:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["Show everything under this thread (",n(o("numStatus"))," status in total, max depth ",n(o("depth")),")"]),t(["Show everything under this thread (",n(o("numStatus"))," statuses in total, max depth ",n(o("depth")),")"])])},thread_show_full_with_icon:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("icon"))," ",n(o("text"))])},thread_follow:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["See the remaining part of this thread (",n(o("numStatus"))," status in total)"]),t(["See the remaining part of this thread (",n(o("numStatus"))," statuses in total)"])])},thread_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("icon"))," ",n(o("text"))])},ancestor_follow:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["See ",n(o("numReplies"))," other reply under this status"]),t(["See ",n(o("numReplies"))," other replies under this status"])])},ancestor_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("icon"))," ",n(o("text"))])},show_all_conversation_with_icon:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("icon"))," ",n(o("text"))])},show_all_conversation:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["Show full conversation (",n(o("numStatus"))," other status)"]),t(["Show full conversation (",n(o("numStatus"))," other statuses)"])])},show_only_conversation_under_this:e=>{const{normalize:t}=e;return t(["Only show replies to this status"])},status_history:e=>{const{normalize:t}=e;return t(["Status history"])}},user_card:{approve:e=>{const{normalize:t}=e;return t(["Approve"])},approve_confirm_title:e=>{const{normalize:t}=e;return t(["Approve confirmation"])},approve_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Approve"])},approve_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not approve"])},approve_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you want to approve ",n(o("user")),"'s follow request?"])},block:e=>{const{normalize:t}=e;return t(["Block"])},blocked:e=>{const{normalize:t}=e;return t(["Blocked!"])},block_confirm_title:e=>{const{normalize:t}=e;return t(["Block confirmation"])},block_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you really want to block ",n(o("user")),"?"])},block_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Block"])},block_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not block"])},deactivated:e=>{const{normalize:t}=e;return t(["Deactivated"])},deny:e=>{const{normalize:t}=e;return t(["Deny"])},deny_confirm_title:e=>{const{normalize:t}=e;return t(["Deny confirmation"])},deny_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Deny"])},deny_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not deny"])},deny_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you want to deny ",n(o("user")),"'s follow request?"])},edit_profile:e=>{const{normalize:t}=e;return t(["Edit profile"])},favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},follow:e=>{const{normalize:t}=e;return t(["Follow"])},follow_cancel:e=>{const{normalize:t}=e;return t(["Cancel request"])},follow_sent:e=>{const{normalize:t}=e;return t(["Request sent!"])},follow_progress:e=>{const{normalize:t}=e;return t(["Requesting…"])},follow_unfollow:e=>{const{normalize:t}=e;return t(["Unfollow"])},unfollow_confirm_title:e=>{const{normalize:t}=e;return t(["Unfollow confirmation"])},unfollow_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you really want to unfollow ",n(o("user")),"?"])},unfollow_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Unfollow"])},unfollow_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not unfollow"])},followees:e=>{const{normalize:t}=e;return t(["Following"])},followers:e=>{const{normalize:t}=e;return t(["Followers"])},following:e=>{const{normalize:t}=e;return t(["Following!"])},follows_you:e=>{const{normalize:t}=e;return t(["Follows you!"])},hidden:e=>{const{normalize:t}=e;return t(["Hidden"])},its_you:e=>{const{normalize:t}=e;return t(["It's you!"])},media:e=>{const{normalize:t}=e;return t(["Media"])},mention:e=>{const{normalize:t}=e;return t(["Mention"])},message:e=>{const{normalize:t}=e;return t(["Message"])},mute:e=>{const{normalize:t}=e;return t(["Mute"])},muted:e=>{const{normalize:t}=e;return t(["Muted"])},mute_confirm_title:e=>{const{normalize:t}=e;return t(["Mute confirmation"])},mute_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you really want to mute ",n(o("user")),"?"])},mute_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Mute"])},mute_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not mute"])},mute_duration_prompt:e=>{const{normalize:t}=e;return t(["Mute this user for (0 for indefinite time):"])},per_day:e=>{const{normalize:t}=e;return t(["per day"])},remote_follow:e=>{const{normalize:t}=e;return t(["Remote follow"])},remove_follower:e=>{const{normalize:t}=e;return t(["Remove follower"])},remove_follower_confirm_title:e=>{const{normalize:t}=e;return t(["Remove follower confirmation"])},remove_follower_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Remove"])},remove_follower_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Keep"])},remove_follower_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you really want to remove ",n(o("user"))," from your followers?"])},report:e=>{const{normalize:t}=e;return t(["Report"])},statuses:e=>{const{normalize:t}=e;return t(["Statuses"])},subscribe:e=>{const{normalize:t}=e;return t(["Subscribe"])},unsubscribe:e=>{const{normalize:t}=e;return t(["Unsubscribe"])},unblock:e=>{const{normalize:t}=e;return t(["Unblock"])},unblock_progress:e=>{const{normalize:t}=e;return t(["Unblocking…"])},block_progress:e=>{const{normalize:t}=e;return t(["Blocking…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},hide_repeats:e=>{const{normalize:t}=e;return t(["Hide repeats"])},show_repeats:e=>{const{normalize:t}=e;return t(["Show repeats"])},bot:e=>{const{normalize:t}=e;return t(["Bot"])},birthday:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Born ",n(o("birthday"))])},admin_menu:{moderation:e=>{const{normalize:t}=e;return t(["Moderation"])},grant_admin:e=>{const{normalize:t}=e;return t(["Grant Admin"])},revoke_admin:e=>{const{normalize:t}=e;return t(["Revoke Admin"])},grant_moderator:e=>{const{normalize:t}=e;return t(["Grant Moderator"])},revoke_moderator:e=>{const{normalize:t}=e;return t(["Revoke Moderator"])},activate_account:e=>{const{normalize:t}=e;return t(["Activate account"])},deactivate_account:e=>{const{normalize:t}=e;return t(["Deactivate account"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},force_nsfw:e=>{const{normalize:t}=e;return t(["Mark all posts as NSFW"])},strip_media:e=>{const{normalize:t}=e;return t(["Remove media from posts"])},force_unlisted:e=>{const{normalize:t}=e;return t(["Force posts to be unlisted"])},sandbox:e=>{const{normalize:t}=e;return t(["Force posts to be followers-only"])},disable_remote_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user from remote instances"])},disable_any_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user at all"])},quarantine:e=>{const{normalize:t}=e;return t(["Disallow user posts from federating"])},delete_user:e=>{const{normalize:t}=e;return t(["Delete user"])},delete_user_data_and_deactivate_confirmation:e=>{const{normalize:t}=e;return t(["This will permanently delete the data from this account and deactivate it. Are you absolutely sure?"])}},highlight:{disabled:e=>{const{normalize:t}=e;return t(["No highlight"])},solid:e=>{const{normalize:t}=e;return t(["Solid bg"])},striped:e=>{const{normalize:t}=e;return t(["Striped bg"])},side:e=>{const{normalize:t}=e;return t(["Side stripe"])}},note:e=>{const{normalize:t}=e;return t(["Note"])},note_blank:e=>{const{normalize:t}=e;return t(["(None)"])},edit_note:e=>{const{normalize:t}=e;return t(["Edit note"])},edit_note_apply:e=>{const{normalize:t}=e;return t(["Apply"])},edit_note_cancel:e=>{const{normalize:t}=e;return t(["Cancel"])}},user_profile:{timeline_title:e=>{const{normalize:t}=e;return t(["User timeline"])},profile_does_not_exist:e=>{const{normalize:t}=e;return t(["Sorry, this profile does not exist."])},profile_loading_error:e=>{const{normalize:t}=e;return t(["Sorry, there was an error loading this profile."])}},user_reporting:{title:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Reporting ",n(o(0))])},add_comment_description:e=>{const{normalize:t}=e;return t(["The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:"])},additional_comments:e=>{const{normalize:t}=e;return t(["Additional comments"])},forward_description:e=>{const{normalize:t}=e;return t(["The account is from another server. Send a copy of the report there as well?"])},forward_to:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Forward to ",n(o(0))])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occurred while processing your request."])}},who_to_follow:{more:e=>{const{normalize:t}=e;return t(["More"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])}},tool_tip:{media_upload:e=>{const{normalize:t}=e;return t(["Upload media"])},repeat:e=>{const{normalize:t}=e;return t(["Repeat"])},reply:e=>{const{normalize:t}=e;return t(["Reply"])},favorite:e=>{const{normalize:t}=e;return t(["Favorite"])},add_reaction:e=>{const{normalize:t}=e;return t(["Add Reaction"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},accept_follow_request:e=>{const{normalize:t}=e;return t(["Accept follow request"])},reject_follow_request:e=>{const{normalize:t}=e;return t(["Reject follow request"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])},toggle_expand:e=>{const{normalize:t}=e;return t(["Expand or collapse notification to show post in full"])},toggle_mute:e=>{const{normalize:t}=e;return t(["Expand or collapse notification to reveal muted content"])},autocomplete_available:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t([n(o("number"))," result is available. Use up and down keys to navigate through them."]),t([n(o("number"))," results are available. Use up and down keys to navigate through them."])])}},upload:{error:{base:e=>{const{normalize:t}=e;return t(["Upload failed."])},message:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Upload failed: ",n(o(0))])},file_too_big:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["File too big [",n(o("filesize")),n(o("filesizeunit"))," / ",n(o("allowedsize")),n(o("allowedsizeunit")),"]"])},default:e=>{const{normalize:t}=e;return t(["Try again later"])}},file_size_units:{B:e=>{const{normalize:t}=e;return t(["B"])},KiB:e=>{const{normalize:t}=e;return t(["KiB"])},MiB:e=>{const{normalize:t}=e;return t(["MiB"])},GiB:e=>{const{normalize:t}=e;return t(["GiB"])},TiB:e=>{const{normalize:t}=e;return t(["TiB"])}}},search:{people:e=>{const{normalize:t}=e;return t(["People"])},hashtags:e=>{const{normalize:t}=e;return t(["Hashtags"])},person_talking:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("count"))," person talking"])},people_talking:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("count"))," people talking"])},no_results:e=>{const{normalize:t}=e;return t(["No results"])},no_more_results:e=>{const{normalize:t}=e;return t(["No more results"])},load_more:e=>{const{normalize:t}=e;return t(["Load more results"])}},password_reset:{forgot_password:e=>{const{normalize:t}=e;return t(["Forgot password?"])},password_reset:e=>{const{normalize:t}=e;return t(["Password reset"])},instruction:e=>{const{normalize:t}=e;return t(["Enter your email address or username. We will send you a link to reset your password."])},placeholder:e=>{const{normalize:t}=e;return t(["Your email or username"])},check_email:e=>{const{normalize:t}=e;return t(["Check your email for a link to reset your password."])},return_home:e=>{const{normalize:t}=e;return t(["Return to the home page"])},too_many_requests:e=>{const{normalize:t}=e;return t(["You have reached the limit of attempts, try again later."])},password_reset_disabled:e=>{const{normalize:t}=e;return t(["Password reset is disabled. Please contact your instance administrator."])},password_reset_required:e=>{const{normalize:t}=e;return t(["You must reset your password to log in."])},password_reset_required_but_mailer_is_disabled:e=>{const{normalize:t}=e;return t(["You must reset your password, but password reset is disabled. Please contact your instance administrator."])}},chats:{you:e=>{const{normalize:t}=e;return t(["You:"])},message_user:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Message ",n(o("nickname"))])},delete:e=>{const{normalize:t}=e;return t(["Delete"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])},new:e=>{const{normalize:t}=e;return t(["New Chat"])},empty_message_error:e=>{const{normalize:t}=e;return t(["Cannot post empty message"])},more:e=>{const{normalize:t}=e;return t(["More"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this message?"])},error_loading_chat:e=>{const{normalize:t}=e;return t(["Something went wrong when loading the chat."])},error_sending_message:e=>{const{normalize:t}=e;return t(["Something went wrong when sending the message."])},empty_chat_list_placeholder:e=>{const{normalize:t}=e;return t(["You don't have any chats yet. Start a new chat!"])}},lists:{lists:e=>{const{normalize:t}=e;return t(["Lists"])},new:e=>{const{normalize:t}=e;return t(["New List"])},title:e=>{const{normalize:t}=e;return t(["List title"])},search:e=>{const{normalize:t}=e;return t(["Search users"])},create:e=>{const{normalize:t}=e;return t(["Create"])},save:e=>{const{normalize:t}=e;return t(["Save changes"])},delete:e=>{const{normalize:t}=e;return t(["Delete list"])},following_only:e=>{const{normalize:t}=e;return t(["Limit to Following"])},manage_lists:e=>{const{normalize:t}=e;return t(["Manage lists"])},manage_members:e=>{const{normalize:t}=e;return t(["Manage list members"])},add_members:e=>{const{normalize:t}=e;return t(["Search for more users"])},remove_from_list:e=>{const{normalize:t}=e;return t(["Remove from list"])},add_to_list:e=>{const{normalize:t}=e;return t(["Add to list"])},is_in_list:e=>{const{normalize:t}=e;return t(["Already in list"])},editing_list:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Editing list ",n(o("listTitle"))])},creating_list:e=>{const{normalize:t}=e;return t(["Creating new list"])},update_title:e=>{const{normalize:t}=e;return t(["Save Title"])},really_delete:e=>{const{normalize:t}=e;return t(["Really delete list?"])},error:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Error manipulating lists: ",n(o(0))])}},file_type:{audio:e=>{const{normalize:t}=e;return t(["Audio"])},video:e=>{const{normalize:t}=e;return t(["Video"])},image:e=>{const{normalize:t}=e;return t(["Image"])},file:e=>{const{normalize:t}=e;return t(["File"])}},display_date:{today:e=>{const{normalize:t}=e;return t(["Today"])}},update:{big_update_title:e=>{const{normalize:t}=e;return t(["Please bear with us"])},big_update_content:e=>{const{normalize:t}=e;return t(["We haven't had a release in a while, so things might look and feel different than what you're used to."])},update_bugs:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Please report any issues and bugs on ",n(o("pleromaGitlab")),", as we have changed a lot, and although we test thoroughly and use development versions ourselves, we may have missed some things. We welcome your feedback and suggestions on issues you might encounter, or how to improve Pleroma and Pleroma-FE."])},update_bugs_gitlab:e=>{const{normalize:t}=e;return t(["Pleroma GitLab"])},update_changelog:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["For more details on what's changed, see ",n(o("theFullChangelog")),"."])},update_changelog_here:e=>{const{normalize:t}=e;return t(["the full changelog"])},art_by:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Art by ",n(o("linkToArtist"))])}},unicode_domain_indicator:{tooltip:e=>{const{normalize:t}=e;return t(["This domain contains non-ascii characters."])}}}},1395:(e,t,n)=>{var o={"./af.json":[44919,6355],"./am.json":[53139,5119],"./ar.json":[44557,9873],"./ar_SA.json":[23450,7360],"./as.json":[44359,3377],"./ast.json":[13764,7569],"./az.json":[86459,2342],"./be.json":[50866,7304],"./bg.json":[26219,3974],"./bn.json":[69178,9064],"./br.json":[67871,6148],"./bs.json":[75340,8134],"./ca.json":[86914,4691],"./ccp.json":[73872,1162],"./ceb.json":[64478,9790],"./chr.json":[61017,6869],"./ckb.json":[56412,2656],"./cs.json":[8888,4710],"./cy.json":[25392,6272],"./da.json":[35042,1596],"./de.json":[35169,6226],"./de_CH.json":[28246,7164],"./doi.json":[59784,4209],"./dsb.json":[60634,1790],"./el.json":[98338,7879],"./en.json":[74990,5728],"./en_001.json":[62736,577],"./en_AU.json":[2597,9360],"./en_CA.json":[1516,4879],"./en_GB.json":[84830,50],"./en_IN.json":[71809,8988],"./es.json":[61148,6831],"./es_419.json":[25696,8873],"./es_MX.json":[11915,2699],"./es_US.json":[87826,3313],"./et.json":[66641,3276],"./eu.json":[6541,2992],"./fa.json":[43305,5521],"./fi.json":[40752,420],"./fil.json":[26843,1236],"./fo.json":[43032,8995],"./fr.json":[80898,2223],"./fr_CA.json":[54515,1821],"./ga.json":[66572,4571],"./gd.json":[9185,6116],"./gl.json":[23840,6126],"./gu.json":[85811,7261],"./ha.json":[91566,227],"./ha_NE.json":[3400,5304],"./he.json":[26260,5548],"./hi.json":[18136,5968],"./hi_Latn.json":[95638,3056],"./hr.json":[77435,2861],"./hsb.json":[15758,8015],"./hu.json":[2727,4902],"./hy.json":[8397,6344],"./ia.json":[49796,6936],"./id.json":[56635,9465],"./ig.json":[26406,9895],"./is.json":[51391,7300],"./it.json":[54879,8970],"./ja.json":[2971,1290],"./jv.json":[18644,2479],"./ka.json":[71255,6068],"./kab.json":[92892,9780],"./kk.json":[46419,2873],"./kl.json":[2227,2397],"./km.json":[65729,1404],"./kn.json":[65611,278],"./ko.json":[67080,2966],"./kok.json":[47209,2599],"./ku.json":[18738,2883],"./ky.json":[89690,4785],"./lb.json":[3929,4770],"./lo.json":[19778,7464],"./lt.json":[41683,7169],"./lv.json":[54873,8898],"./mai.json":[11781,1613],"./mi.json":[11569,6701],"./mk.json":[67589,9921],"./ml.json":[24415,2685],"./mn.json":[50512,4718],"./mni.json":[81597,5401],"./mr.json":[97747,1911],"./ms.json":[81588,9924],"./mt.json":[25081,9399],"./my.json":[8608,6790],"./ne.json":[8572,9377],"./nl.json":[52355,6773],"./nn.json":[52874,9414],"./no.json":[48005,9979],"./or.json":[26728,1012],"./pa.json":[15042,6946],"./pa_Arab.json":[43578,9994],"./pcm.json":[91163,5104],"./pl.json":[61335,1095],"./ps.json":[51828,678],"./pt.json":[38543,5041],"./pt_PT.json":[8063,1546],"./qu.json":[15821,8031],"./rm.json":[5014,5887],"./ro.json":[34064,9864],"./ru.json":[95222,8395],"./rw.json":[12710,346],"./sa.json":[69343,2243],"./sat.json":[51243,7855],"./sc.json":[1319,2874],"./sd.json":[67728,6826],"./si.json":[5044,4354],"./sk.json":[45626,2350],"./sl.json":[76091,1553],"./so.json":[93761,625],"./sq.json":[1230,4368],"./sr.json":[60445,3887],"./sr_Cyrl_BA.json":[38940,6060],"./sr_Latn.json":[21650,8681],"./sr_Latn_BA.json":[78328,5115],"./su.json":[54395,1959],"./sv.json":[3418,3241],"./sw.json":[11958,7585],"./sw_KE.json":[35001,3994],"./ta.json":[92930,7897],"./te.json":[8748,4786],"./tg.json":[20999,313],"./th.json":[23900,3951],"./ti.json":[368,3568],"./tk.json":[88770,1780],"./to.json":[95781,1584],"./tr.json":[92619,9978],"./tt.json":[87782,2569],"./ug.json":[19005,9757],"./uk.json":[82057,9871],"./ur.json":[13889,6797],"./uz.json":[45108,1056],"./vi.json":[97099,5224],"./wo.json":[9923,7303],"./xh.json":[29064,786],"./yo.json":[11971,8732],"./yo_BJ.json":[64533,9926],"./yue.json":[40648,1452],"./yue_Hans.json":[24800,4424],"./zh.json":[34626,457],"./zh_Hant.json":[82560,2767],"./zh_Hant_HK.json":[47677,1044],"./zu.json":[73784,9319]};function r(e){if(!n.o(o,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=o[e],r=t[0];return n.e(t[1]).then((()=>n.t(r,19)))}r.keys=()=>Object.keys(o),r.id=1395,e.exports=r},19003:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>u});var o=n(15861),r=n(93433),i=n(4942),s=n(64687),a=n.n(s);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){(0,i.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const u=function(e){var t=d(e.emoji),n=e.store&&p(e.store);return function(o,r){var i=o[0];return":"===i&&e.emoji?t(o,r):"@"===i&&n?n(o):[]}};var d=function(e){return function(t,n){var o=t.toLowerCase().substr(1);return e.map((function(e){return l(l({},e),n(e))})).filter((function(e){return e.names.concat(e.keywords).filter((function(e){return e.toLowerCase().match(o)})).length})).map((function(e){var t=0;return t+=Math.max.apply(Math,(0,r.Z)(e.names.map((function(e){return e.toLowerCase()===o?200:0}))).concat([0])),t+=e.imageUrl?100:0,t+=Math.max.apply(Math,(0,r.Z)(e.names.map((function(e){return e.toLowerCase().startsWith(o)?10:0}))).concat([0])),t-=e.displayText.length,e.score=t,e})).sort((function(e,t){var n=e.displayText>t.displayText?.5:-.5;return t.score-e.score+n}))}},p=function(e){var t=e.dispatch,n=e.state,r=[],i="",s=null,c=null,l=function(e){return c&&c(),new Promise((function(n,o){s=setTimeout((function(){(function(e){return t("searchUsers",{query:e})})(e).then(n).catch(o)}),300),c=function(){clearTimeout(s),n([])}}))};return function(){var e=(0,o.Z)(a().mark((function e(t){var o,s;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=t.toLowerCase().substr(1),i!==o){e.next=3;break}return e.abrupt("return",r);case 3:if(r=[],i=o,o.includes("@")){e.next=8;break}return e.next=8,l(o);case 8:return s=n.users.users.filter((function(e){return e.screen_name.toLowerCase().startsWith(o)||e.name.toLowerCase().startsWith(o)})).slice(0,20).sort((function(e,t){var n=0,r=0;return n+=e.screen_name.toLowerCase().startsWith(o)?2:0,r+=t.screen_name.toLowerCase().startsWith(o)?2:0,n+=e.name.toLowerCase().startsWith(o)?1:0,10*((r+=t.name.toLowerCase().startsWith(o)?1:0)-n)+(e.name>t.name?1:-1)+(e.screen_name>t.screen_name?1:-1)})).map((function(e){return{user:e,displayText:e.screen_name_ui,detailText:e.name,imageUrl:e.profile_image_url_original,replacement:"@"+e.screen_name+" "}})),r=s||[],e.abrupt("return",r);case 11:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}},92820:(e,t,n)=>{"use strict";n.d(t,{Z:()=>O});var o=n(93433),r=n(29439),i=n(44925),s=n(42348),a=n.n(s),c=n(27955),l=n.n(c),u=n(66252);function d(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var m=function(e){var t=/(?:<\/(\w+)>|<(\w+)\s?.*?\/?>)/gi.exec(e);return t&&(t[1]||t[2])},h=function(e,t){var n=e.substring(1,e.length-1).replace(new RegExp("^"+m(e)),"").replace(/\/?$/,"").trim(),o=Array.from(n.matchAll(/([a-z0-9-]+)(?:=("[^"]+?"|'[^']+?'))?/gi)).map((function(e){var t=(0,r.Z)(e,3);return t[0],[t[1],t[2]]})).map((function(e){var t=(0,r.Z)(e,2),n=t[0],o=t[1];return o?[n,o.substring(1,o.length-1)]:[n,!0]}));return Object.fromEntries(o.filter(t||function(e){var t=(0,r.Z)(e,2),n=t[0],o=t[1],i=n.toLowerCase();return"style"!==i&&("class"!==i||"greentext"===o||"cyantext"===o)}))},f=function(e,t,n){for(var o=[],r="",i=0;i<e.length;i++){var s=e[i];if(":"===s){var a,c=e.slice(i+1),l=!1,u=d(t);try{for(u.s();!(a=u.n()).done;){var p=a.value;if(c.slice(0,p.shortcode.length+1)===p.shortcode+":"){l=p;break}}}catch(e){u.e(e)}finally{u.f()}l?(o.push(r),r="",o.push(n(l)),i+=l.shortcode.length+1):r+=s}else r+=s}return r&&o.push(r),o};function g(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var w=n(32140),b=n(21268),y=n(49963),_={class:"HashtagLink"},k=["href","innerHTML"];const S={name:"HashtagLink",props:{url:{required:!0,type:String},content:{required:!0,type:String},tag:{required:!1,type:String,default:""}},methods:{onClick:function(){var e,t,n=this.tag||(e=this.url,!!(t=/tag[s]*\/(\w+)$/g.exec(e))&&t[1]);if(n){var o=this.generateTagLink(n);this.$router.push(o)}else window.open(this.url,"_blank")},generateTagLink:function(e){return"/tag/".concat(e)}}},j=(0,n(83744).Z)(S,[["render",function(e,t,n,o,r,i){return(0,u.wg)(),(0,u.iD)("span",_,[(0,u._)("a",{href:e.url,class:"original",target:"_blank",onClick:t[0]||(t[0]=(0,y.iM)((function(){return e.onClick&&e.onClick.apply(e,arguments)}),["prevent"])),innerHTML:e.content},null,8,k)])}]]);var C=["index"];const O={name:"RichContent",components:{MentionsLine:b.Z,HashtagLink:j},props:{html:{required:!0,type:String},attentions:{required:!1,default:function(){return[]}},emoji:{required:!0,type:Array},handleLinks:{required:!1,type:Boolean,default:!1},greentext:{required:!1,type:Boolean,default:!1}},render:function(){var e=this,t=z(this.html,this.greentext).newHtml,n=null,s="",a=[],c=[],d=[],p=[],g=0,v=0,y=!1,_=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),n=[],o=[["",n]],r="",i=null,s=function(){return o[o.length-1][1]},a=function(){""!==r&&(s().push(r),r="")},c=function(e){s().push([e])},u=function(e){var t=s(),n=[l()(e),[]];o.push(n),t.push(n)},d=function(e){var t=o[o.length-1];m(o[o.length-1][0])===m(e)?(t.push(e),o.pop()):s().push(e)},p=0;p<e.length;p++){var h=e[p];if("<"===h&&null===i)a(),i=h;else if(">"!==h&&null!==i)i+=h;else if(">"===h&&null!==i){var f=i+=h;i=null;var g=m(f);"/"===f[1]?d(f):t.has(g)||"/"===f[f.length-2]?c(f):u(f)}else r+=h}return i&&(r+=i),a(),n}(t).map((function t(o,i,a,l){if("string"==typeof o){var p=""===o.trim();return o.includes("\n")&&(n=null),p?(s=o,i!==a.length-1&&null!==n?o.trim():o):(n=null,o.includes(":")&&(o=["",f(o,e.emoji,(function(e){var t=e.shortcode,n=e.url;return(0,u.Wm)(w.Z,{class:"emoji img",src:n,title:":".concat(t,":"),alt:":".concat(t,":")},null)}))]),o)}if(Array.isArray(o)){var v=o,y=(0,r.Z)(v,3),_=y[0],k=y[1],S=y[2],j=m(_),C=h(_,(function(){return!0})),O=h(_),z=null===n||k&&"string"==typeof k[0]&&k[0].match(/^\s/)?"":s;switch(j){case"br":n=null;break;case"img":return["",[z,(D=_,(0,u.Wm)(w.Z,(0,u.dG)(h(D),{class:"img"}),null))],""];case"a":if(!e.handleLinks)break;if(C.class&&C.class.includes("mention"))return function(t,o){var r=P(t,o,g++);return r.notifying=e.attentions.some((function(e){return e.statusnet_profile_url===r.url})),c.push(r),null===n&&(n=[]),n.push(r),n.length>b.d&&d.push(r),1===n.length?(0,u.Wm)(b.Z,{mentions:n},null):""}(O,k);n=null;break;case"span":if(e.handleLinks&&C.class&&C.class.includes("h-card"))return["",k.map(t),""]}return void 0!==k?["",[z,[_,k.map(t),S]],""]:["",[z,o],""]}var D})),k=(0,o.Z)(_).reverse().map((function t(n,s,c,d){var f;if("string"==typeof n)return""===n.trim()?n:(y||(y=!0),l()(n));if(Array.isArray(n)){var g=(0,r.Z)(n,2),w=g[0],b=g[1],_=""===w?"":m(w);switch(_){case"a":if(!e.handleLinks)break;var k=h(w,(function(){return!0})),S=h(w,(function(){return!0}));if(k.class&&k.class.includes("hashtag")||"tag"===k.rel)return function(e,t,n){var o=P(e,t,v++),r=(o.index,(0,i.Z)(o,C));p.push(r),n||a.push(r);var s=r.url,c=r.tag,l=r.content;return(0,u.Wm)(j,{url:s,tag:c,content:l},null)}(S,b,y);S.target="_blank";var O=(0,o.Z)(b).reverse().map(t).reverse();return(0,u.Wm)("a",S,[O]);case"":return(0,o.Z)(b).reverse().map(t).reverse()}if(void 0!==b){var z=Array.isArray(b)?(0,o.Z)(b).reverse().map(t).reverse():b;return(0,u.Wm)(_,h(w),"function"==typeof(f=z)||"[object Object]"===Object.prototype.toString.call(f)&&!(0,u.lA)(f)?z:{default:function(){return[z]}})}return(0,u.Wm)(_,null,null)}return n})).reverse(),S=(0,u.Wm)("span",{class:"RichContent"},[k]),O={lastTags:a,writtenMentions:c,writtenTags:p,invisibleMentions:d};return this.$emit("parseReady",O),S}};var P=function(e,t,n){var o=t.map((function e(t){return"string"==typeof t?t:t[1].map(e).join("")})).join("");return{index:n,url:e.href,tag:e["data-tag"],content:a()(t).join(""),textContent:o}},z=function(e,t){var n=new Set(["p","div"]),r=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),r=new Set(["address","article","aside","blockquote","details","dialog","dd","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","ol","p","pre","section","table","ul"]),i=new Set(["br"]),s=new Set([].concat((0,o.Z)(r.values()),(0,o.Z)(i.values()))),a=new Set(s),c=g(n);try{for(c.s();!(e=c.n()).done;){var l=e.value;a.delete(l)}}catch(e){c.e(e)}finally{c.f()}for(var u=new Set([].concat((0,o.Z)(a.values()),(0,o.Z)(n.values()))),d=[],p=[],h="",f=null,v=function(){h.trim().length>0?d.push({level:[].concat(p),text:h}):d.push(h),h=""},w=function(e){v(),d.push(e)},b=function(e){v(),d.push(e),p.unshift(m(e))},y=function(e){p[0]===m(e)?(v(),d.push(e),p.shift()):h+=e},_=0;_<t.length;_++){var k=t[_];if("<"===k&&null===f)f=k;else if(">"!==k&&null!==f)f+=k;else if(">"===k&&null!==f){var S=f+=k;f=null;var j=m(S);u.has(j)?i.has(j)?w(S):a.has(j)?"/"===S[1]?y(S):"/"===S[S.length-2]?w(S):b(S):h+=S:h+=S}else"\n"===k?w(k):h+=k}return f&&(h+=f),v(),d}(e);return{newHtml:r.reverse().map((function(e,o,r){if(!e.text)return e;var i=e.text;if(t&&e.level.every((function(e){return n.has(e)}))&&(i.includes("&gt;")||i.includes("&lt;"))){var s=i.replace(/<[^>]+?>/gi,"").replace(/@\w+/gi,"").trim();if(s.startsWith("&gt;"))return"<span class='greentext'>".concat(i,"</span>");if(s.startsWith("&lt;"))return"<span class='cyantext'>".concat(i,"</span>")}return i})).reverse().join("")}}},79354:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=n(4942),r=n(66252),i=n(989),s=n(57810);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}var c=function(e){return e.findIndex((function(e){return e.props}))};const l={name:"TabSwitcher",props:{renderOnlyFocused:{required:!1,type:Boolean,default:!1},onSwitch:{required:!1,type:Function,default:void 0},activeTab:{required:!1,type:String,default:void 0},scrollableTabs:{required:!1,type:Boolean,default:!1},sideTabBar:{required:!1,type:Boolean,default:!1},bodyScrollLock:{required:!1,type:Boolean,default:!1}},data:function(){return{active:c(this.slots())}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({activeIndex:function(){var e=this;return this.activeTab?this.slots().findIndex((function(t){return t&&t.props&&e.activeTab===t.props.key})):this.active},isActive:function(){var e=this;return function(t){return e.$slots.default().findIndex((function(e){return e.props&&e.props["data-tab-name"]===t}))===e.activeIndex}},settingsModalVisible:function(){return"visible"===this.settingsModalState}},(0,i.rn)({settingsModalState:function(e){return e.interface.settingsModalState}})),beforeUpdate:function(){this.slots()[this.active].props||(this.active=c(this.slots()))},methods:{clickTab:function(e){var t=this;return function(n){n.preventDefault(),t.setTab(e)}},slots:function(){return this.$slots.default()[0].type===r.HY?this.$slots.default()[0].children:this.$slots.default()},setTab:function(e){"function"==typeof this.onSwitch&&this.onSwitch.call(null,this.slots()[e].key),this.active=e,this.scrollableTabs&&(this.$refs.contents.scrollTop=0)}},render:function(){var e=this,t=this.slots().map((function(t,n){var o=t.props;if(o){var i=["tab","button-default"],a=["tab-wrapper"];return e.activeIndex===n&&(i.push("active"),a.push("active")),o.image?(0,r.Wm)("div",{class:a.join(" ")},[(0,r.Wm)("button",{disabled:o.disabled,onClick:e.clickTab(n),class:i.join(" "),type:"button"},[(0,r.Wm)("img",{src:o.image,title:o["image-tooltip"]},null),o.label?"":o.label])]):(0,r.Wm)("div",{class:a.join(" ")},[(0,r.Wm)("button",{disabled:o.disabled,onClick:e.clickTab(n),class:i.join(" "),type:"button"},[o.icon?(0,r.Wm)(s.GN,{class:"tab-icon",size:"2x","fixed-width":!0,icon:o.icon},null):"",(0,r.Wm)("span",{class:"text"},[o.label])])])}})),n=this.slots().map((function(t,n){var o=t.props;if(o){var i=e.activeIndex===n,s=[i?"active":"hidden"];o.fullHeight&&s.push("full-height");var a=!e.renderOnlyFocused||i?t:"";return(0,r.Wm)("div",{class:s},[e.sideTabBar?(0,r.Wm)("h1",{class:"mobile-label"},[o.label]):"",a])}}));return(0,r.Wm)("div",{class:"tab-switcher "+(this.sideTabBar?"side-tabs":"top-tabs")},[(0,r.Wm)("div",{class:"tabs"},[t]),(0,r.wy)((0,r.Wm)("div",{ref:"contents",class:"contents"+(this.scrollableTabs?" scrollable-tabs":"")},[n]),[[(0,r.Q2)("body-scroll-lock"),this.bodyScrollLock]])])}}},8312:e=>{var t={ja:"ja_pedantic"};e.exports={languages:["ar","ca","cs","de","eo","en","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","sk","te","uk","zh","zh_Hant"],langCodeToJsonName:function(e){return t[e]||e},langCodeToCldrName:function(e){return e},ensureFinalFallback:function(e){var t=Array.isArray(e)?e:[e];return t.includes("en")?t:t.concat(["en"])}}},72617:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var o=n(84506),r=n(15861),i=n(18446),s=n.n(i),a=n(64687),c=n.n(a),l=n(8312);function u(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var p,m=function(e){return n(27650)("./".concat((0,l.langCodeToJsonName)(e),".json"))};const h={languages:l.languages,default:{en:n(88797).default},setLanguage:(p=(0,r.Z)(c().mark((function e(t,n){var r,i,a,d,p,h,f,g;return c().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((r=(Array.isArray(n)?n:[n]).filter((function(e){return e}))).includes("en")||r.push("en"),i=(0,o.Z)(r),a=i[0],d=i.slice(1),a!==t.locale||!s()(d,t.fallbackLocale)){e.next=5;break}return e.abrupt("return");case 5:p=u(r),e.prev=6,p.s();case 8:if((h=p.n()).done){e.next=17;break}if(c=f=h.value,!l.languages.includes(c)){e.next=15;break}return e.next=13,m(f);case 13:g=e.sent,t.setLocaleMessage(f,g.default);case 15:e.next=8;break;case 17:e.next=22;break;case 19:e.prev=19,e.t0=e.catch(6),p.e(e.t0);case 22:return e.prev=22,p.f(),e.finish(22);case 25:t.fallbackLocale=d,t.locale=a;case 27:case"end":return e.stop()}var c}),e,null,[[6,19,22,25]])}))),function(e,t){return p.apply(this,arguments)})}},43002:(e,t,n)=>{"use strict";var o=n(15861),r=n(64687),i=n.n(r),s=n(989),a=(n(67810),n(73152));try{new EventTarget}catch(e){window.EventTarget=a.Z}const c={state:{settingsModalState:"hidden",settingsModalLoaded:!1,settingsModalTargetTab:null,settings:{currentSaveStateNotice:null,noticeClearTimeout:null,notificationPermission:null},browserSupport:{cssFilter:window.CSS&&window.CSS.supports&&(window.CSS.supports("filter","drop-shadow(0 0)")||window.CSS.supports("-webkit-filter","drop-shadow(0 0)"))},layoutType:"normal",globalNotices:[],layoutHeight:0,lastTimeline:null},mutations:{settingsSaved:function(e,t){var n=t.success,o=t.error;n?(e.noticeClearTimeout&&clearTimeout(e.noticeClearTimeout),e.settings.currentSaveStateNotice={error:!1,data:n},e.settings.noticeClearTimeout=setTimeout((function(){return delete e.settings.currentSaveStateNotice}),2e3)):e.settings.currentSaveStateNotice={error:!0,errorData:o}},setNotificationPermission:function(e,t){e.notificationPermission=t},setLayoutType:function(e,t){e.layoutType=t},closeSettingsModal:function(e){e.settingsModalState="hidden"},togglePeekSettingsModal:function(e){switch(e.settingsModalState){case"minimized":return void(e.settingsModalState="visible");case"visible":return void(e.settingsModalState="minimized");default:throw new Error("Illegal minimization state of settings modal")}},openSettingsModal:function(e){e.settingsModalState="visible",e.settingsModalLoaded||(e.settingsModalLoaded=!0)},setSettingsModalTargetTab:function(e,t){e.settingsModalTargetTab=t},pushGlobalNotice:function(e,t){e.globalNotices.push(t)},removeGlobalNotice:function(e,t){e.globalNotices=e.globalNotices.filter((function(e){return e!==t}))},setLayoutHeight:function(e,t){e.layoutHeight=t},setLayoutWidth:function(e,t){e.layoutWidth=t},setLastTimeline:function(e,t){e.lastTimeline=t}},actions:{setPageTitle:function(e){var t=e.rootState,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";document.title="".concat(n," ").concat(t.instance.name)},settingsSaved:function(e,t){var n=e.commit;e.dispatch,n("settingsSaved",{success:t.success,error:t.error})},setNotificationPermission:function(e,t){(0,e.commit)("setNotificationPermission",t)},closeSettingsModal:function(e){(0,e.commit)("closeSettingsModal")},openSettingsModal:function(e){(0,e.commit)("openSettingsModal")},togglePeekSettingsModal:function(e){(0,e.commit)("togglePeekSettingsModal")},clearSettingsModalTargetTab:function(e){(0,e.commit)("setSettingsModalTargetTab",null)},openSettingsModalTab:function(e,t){var n=e.commit;n("setSettingsModalTargetTab",t),n("openSettingsModal")},pushGlobalNotice:function(e,t){var n=e.commit,o=e.dispatch,r=e.state,i=t.messageKey,s=t.messageArgs,a=void 0===s?{}:s,c=t.level,l=void 0===c?"error":c,u=t.timeout,d=void 0===u?0:u;n("pushGlobalNotice",{messageKey:i,messageArgs:a,level:l});var p=r.globalNotices[r.globalNotices.length-1];return d&&setTimeout((function(){return o("removeGlobalNotice",p)}),d),p},removeGlobalNotice:function(e,t){(0,e.commit)("removeGlobalNotice",t)},setLayoutHeight:function(e,t){(0,e.commit)("setLayoutHeight",t)},setLayoutWidth:function(e,t){var n=e.commit,o=e.state,r=e.rootGetters,i=e.rootState,s=t;void 0!==t?n("setLayoutWidth",t):s=o.layoutWidth;var a=s<=800?"mobile":"normal";"none"!==r.mergedConfig.thirdColumnMode&&i.users.currentUser?n("setLayoutType",s>=1300?"wide":a):n("setLayoutType",a)},setLastTimeline:function(e,t){(0,e.commit)("setLastTimeline",t)}}};var l=n(29439),u=n(93433),d=n(4942),p=n(77394),m=n(40454),h=n(77776),f=n(85565),g=n(8312);function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function w(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?v(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var b=["smileys-and-emotion","people-and-body","animals-and-nature","food-and-drink","travel-and-places","activities","objects","symbols","flags"],y=function(){for(var e=127462,t="A".codePointAt(0),n=new Array(26),o=e;o<=127487;++o){var r=String.fromCodePoint(t+o-e);n[o-e]={replacement:String.fromCodePoint(o),imageUrl:!1,displayText:"regional_indicator_"+r,displayTextI18n:{key:"emoji.regional_indicator",args:{letter:r}}}}return n}(),_=function(e){return n(1395)("./".concat((0,g.langCodeToCldrName)(e),".json")).then((function(e){return e.default}))},k=function(e,t){var n=Object.keys(t);return w(w({},e),{},{annotations:n.reduce((function(n,o){return n[o]=t[o][e.replacement],n}),{})})};const S={state:{name:"Pleroma FE",registrationOpen:!0,server:"http://localhost:4040/",textlimit:5e3,themeData:void 0,vapidPublicKey:void 0,alwaysShowSubjectInput:!0,defaultAvatar:"/images/avi.png",defaultBanner:"/images/banner.png",background:"/static/aurora_borealis.jpg",collapseMessageWithSubject:!1,greentext:!1,useAtIcon:!1,mentionLinkDisplay:"short",mentionLinkShowTooltip:!0,mentionLinkShowAvatar:!1,mentionLinkFadeDomain:!0,mentionLinkShowYous:!1,mentionLinkBoldenYou:!0,hideFilteredStatuses:!1,hideMutedPosts:!1,hideMutedThreads:!0,hideWordFilteredPosts:!1,hidePostStats:!1,hideBotIndication:!1,hideSitename:!1,hideUserStats:!1,muteBotStatuses:!1,modalOnRepeat:!1,modalOnUnfollow:!1,modalOnBlock:!0,modalOnMute:!1,modalOnDelete:!0,modalOnLogout:!0,modalOnApproveFollow:!1,modalOnDenyFollow:!1,modalOnRemoveUserFromFollowers:!1,loginMethod:"password",logo:"/static/logo.svg",logoMargin:".2em",logoMask:!0,logoLeft:!1,disableUpdateNotification:!1,minimalScopesMode:!1,nsfwCensorImage:void 0,postContentType:"text/plain",redirectRootLogin:"/main/friends",redirectRootNoLogin:"/main/all",scopeCopy:!0,showFeaturesPanel:!0,showInstanceSpecificPanel:!1,sidebarRight:!1,subjectLineBehavior:"email",theme:"pleroma-dark",virtualScrolling:!0,sensitiveByDefault:!1,conversationDisplay:"linear",conversationTreeAdvanced:!1,conversationOtherRepliesButton:"below",conversationTreeFadeAncestors:!1,maxDepthInThread:6,customEmoji:[],customEmojiFetched:!1,emoji:{},emojiFetched:!1,unicodeEmojiAnnotations:{},pleromaBackend:!0,postFormats:[],restrictedNicknames:[],safeDM:!0,knownDomains:[],birthdayRequired:!1,birthdayMinAge:0,shoutAvailable:!1,pleromaChatMessagesAvailable:!1,gopherAvailable:!1,mediaProxyAvailable:!1,suggestionsEnabled:!1,suggestionsWeb:"",instanceSpecificPanelContent:"",tos:"",backendVersion:"",frontendVersion:"",pollsAvailable:!1,pollLimits:{max_options:4,max_option_chars:255,min_expiration:60,max_expiration:86400}},mutations:{setInstanceOption:function(e,t){var n=t.name,o=t.value;void 0!==o&&(e[n]=o)},setKnownDomains:function(e,t){e.knownDomains=t},setUnicodeEmojiAnnotations:function(e,t){var n=t.lang,o=t.annotations;e.unicodeEmojiAnnotations[n]=o}},getters:{instanceDefaultConfig:function(e){return f.Oi.map((function(t){return[t,e[t]]})).reduce((function(e,t){var n=(0,l.Z)(t,2),o=n[0],r=n[1];return w(w({},e),{},(0,d.Z)({},o,r))}),{})},groupedCustomEmojis:function(e){return e.customEmoji.reduce((function(e,t){return function(e){var t=e.tags.filter((function(e){return e.startsWith("pack:")})).map((function(e){var t=e.slice(5);return{id:"custom-".concat(t),text:t}}));return t.length?t:[{id:"unpacked"}]}(t).forEach((function(n){var o=n.id,r=n.text;e[o]||(e[o]={id:o,text:r,image:t.imageUrl,emojis:[]}),e[o].emojis.push(t)})),e}),{})},standardEmojiList:function(e){return b.map((function(t){return(e.emoji[t]||[]).map((function(t){return k(t,e.unicodeEmojiAnnotations)}))})).reduce((function(e,t){return e.concat(t)}),[])},standardEmojiGroupList:function(e){return b.map((function(t){return{id:t,emojis:(e.emoji[t]||[]).map((function(t){return k(t,e.unicodeEmojiAnnotations)}))}}))},instanceDomain:function(e){return new URL(e.server).hostname},remoteInteractionLink:function(e){var t=(e.server.endsWith("/")?e.server.slice(0,-1):e.server)+"/main/ostatus";return function(e){var n=e.statusId,o=e.nickname;return n?"".concat(t,"?status_id=").concat(n):"".concat(t,"?nickname=").concat(o)}}},actions:{setInstanceOption:function(e,t){var n=e.commit,o=e.dispatch,r=t.name,i=t.value;switch(n("setInstanceOption",{name:r,value:i}),r){case"name":o("setPageTitle");break;case"shoutAvailable":i&&o("initializeSocket");break;case"theme":o("setTheme",i)}},getStaticEmoji:function(e){return(0,o.Z)(i().mark((function t(){var o,r,s;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=e.commit,t.prev=1,t.next=4,n.e(3687).then(n.t.bind(n,13315,19));case 4:r=t.sent.default,s=Object.keys(r).reduce((function(e,t){return e[t]=r[t].map((function(e){return{displayText:e.slug,imageUrl:!1,replacement:e.emoji}})),e}),{}),o("setInstanceOption",{name:"emoji",value:(i=s,a=void 0,(a=i.symbols).push.apply(a,(0,u.Z)(y)),i)}),t.next=13;break;case 9:t.prev=9,t.t0=t.catch(1),console.warn("Can't load static emoji"),console.warn(t.t0);case 13:case"end":return t.stop()}var i,a}),t,null,[[1,9]])})))()},loadUnicodeEmojiData:function(e,t){var n=e.commit,r=e.state,s=(0,g.ensureFinalFallback)(t);return Promise.all(s.map(function(){var e=(0,o.Z)(i().mark((function e(t){var o;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r.unicodeEmojiAnnotations[t]){e.next=11;break}return e.prev=1,e.next=4,_(t);case 4:o=e.sent,n("setUnicodeEmojiAnnotations",{lang:t,annotations:o}),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(1),console.warn("Error loading unicode emoji annotations for ".concat(t,": "),e.t0);case 11:case"end":return e.stop()}}),e,null,[[1,8]])})));return function(t){return e.apply(this,arguments)}}()))},getCustomEmoji:function(e){return(0,o.Z)(i().mark((function t(){var n,o,r,s,a,c,d,p,m;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,o=e.state,t.prev=1,t.next=4,window.fetch("/api/pleroma/emoji.json");case 4:if(!(r=t.sent).ok){t.next=17;break}return t.next=8,r.json();case 8:s=t.sent,a=Array.isArray(s)?Object.assign.apply(Object,[{}].concat((0,u.Z)(s))):s,c=function(e,t){var n=e.toLowerCase(),o=t.toLowerCase();return n>o?1:n<o?-1:0},d=function(e,t){var n=""===e,o=""===t;return n===o?0:n&&!o?1:-1},p=function(e,t){var n=function(e){return(e.tags.filter((function(e){return e.startsWith("pack:")}))[0]||"").slice(5)},o=n(e),r=n(t);return d(o,r)||c(o,r)||c(e.displayText,t.displayText)},m=Object.entries(a).map((function(e){var t=(0,l.Z)(e,2),n=t[0],r=t[1],i=r.image_url;return{displayText:n,imageUrl:i?o.server+i:r,tags:i?r.tags.sort((function(e,t){return e>t?1:0})):["utf"],replacement:":".concat(n,": ")}})).sort(p),n("setInstanceOption",{name:"customEmoji",value:m}),t.next=18;break;case 17:throw r;case 18:t.next=24;break;case 20:t.prev=20,t.t0=t.catch(1),console.warn("Can't load custom emojis"),console.warn(t.t0);case 24:case"end":return t.stop()}}),t,null,[[1,20]])})))()},setTheme:function(e,t){var n=e.commit,o=e.rootState;n("setInstanceOption",{name:"theme",value:t}),(0,p.I3)(t).then((function(e){if(n("setInstanceOption",{name:"themeData",value:e}),!o.config.customTheme){var t=e.source;!e.theme||t&&t.themeEngineVersion===m.we?(0,p._v)(t):(0,p._v)(e.theme)}}))},fetchEmoji:function(e){var t=e.dispatch,n=e.state;n.customEmojiFetched||(n.customEmojiFetched=!0,t("getCustomEmoji")),n.emojiFetched||(n.emojiFetched=!0,t("getStaticEmoji"))},getKnownDomains:function(e){return(0,o.Z)(i().mark((function t(){var n,o,r;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,o=e.rootState,t.prev=1,t.next=4,h.ZP.fetchKnownDomains({credentials:o.users.currentUser.credentials});case 4:r=t.sent,n("setKnownDomains",r),t.next=12;break;case 8:t.prev=8,t.t0=t.catch(1),console.warn("Can't load known domains"),console.warn(t.t0);case 12:case"end":return t.stop()}}),t,null,[[1,8]])})))()}}};var j=n(14176),C=n.n(j),O=n(1469),P=n.n(O),z=n(10928),D=n.n(z),I=n(8804),x=n.n(I),T=n(82492),$=n.n(T),U=n(22762),M=n.n(U),A=n(84753),L=n.n(A),E=n(13311),F=n.n(E),R=n(30998),q=n.n(R),N=n(66073),Z=n.n(N),W=n(12571),B=n.n(W),H=n(82729),V=n.n(H),K=n(52230);function G(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?G(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):G(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var J=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return{statuses:[],statusesObject:{},faves:[],visibleStatuses:[],visibleStatusesObject:{},newStatusCount:0,maxId:0,minId:0,minVisibleId:0,loading:!1,followers:[],friends:[],userId:e,flushMarker:0}},Q=function(){return{desktopNotificationSilence:!0,maxId:0,minId:Number.POSITIVE_INFINITY,data:[],idStore:{},loading:!1}},X=function(){return{allStatuses:[],allStatusesObject:{},conversationsObject:{},maxId:0,notifications:Q(),favorites:new Set,timelines:{mentions:J(),public:J(),user:J(),favorites:J(),media:J(),publicAndExternal:J(),friends:J(),tag:J(),dms:J(),bookmarks:J(),list:J()}}},ee=function(e,t,n){var o=t[n.id];return o?($()(o,C()(n,(function(e,t){return null===e||"user"===t}))),o.attachments.splice(o.attachments.length),{item:o,new:!1}):(function(e){e.deleted=!1,e.attachments=e.attachments||[]}(n),e.push(n),t[n.id]=n,{item:n,new:!0})},te=function(e,t){var n=Number(e.id),o=Number(t.id),r=!Number.isNaN(n),i=!Number.isNaN(o);return r&&i?n>o?-1:1:r&&!i?1:!r&&i||e.id>t.id?-1:1},ne=function(e){return e.visibleStatuses=e.visibleStatuses.sort(te),e.statuses=e.statuses.sort(te),e.minVisibleId=(D()(e.visibleStatuses)||{}).id,e},oe=function(e,t){var n=ee(e.allStatuses,e.allStatusesObject,t);if(n.new){var o=n.item,r=e.conversationsObject,i=o.statusnet_conversation_id;r[i]?r[i].push(o):r[i]=[o]}return n},re=function(e,t){e.notifications.maxId=t.id>e.notifications.maxId?t.id:e.notifications.maxId,e.notifications.minId=t.id<e.notifications.minId?t.id:e.notifications.minId},ie={addNewStatuses:function(e,t){var n=t.statuses,o=t.showImmediately,r=void 0!==o&&o,i=t.timeline,s=t.user,a=void 0===s?{}:s,c=t.noIdUpdate,l=void 0!==c&&c,u=t.userId,d=t.pagination,p=void 0===d?{}:d;if(!P()(n))return!1;var m=e.allStatuses,h=e.timelines[i],f=p.maxId||(n.length>0?M()(n,"id").id:0),g=p.minId||(n.length>0?L()(n,"id").id:0),v=i&&(g>h.maxId||0===h.maxId)&&n.length>0,w=i&&(f<h.minId||0===h.minId)&&n.length>0;if(!l&&v&&(h.maxId=g),!l&&w&&(h.minId=f),"user"!==i&&"media"!==i||h.userId===u){var b=function(t,n){var o,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=oe(e,t),c=s.item;if(s.new){if("status"===c.type&&F()(c.attentions,{id:a.id})){var l=e.timelines.mentions;h!==l&&(ee(l.statuses,l.statusesObject,c),l.newStatusCount+=1,ne(l))}if("direct"===c.visibility){var u=e.timelines.dms;ee(u.statuses,u.statusesObject,c),u.newStatusCount+=1,ne(u)}}return i&&r&&(o=ee(h.statuses,h.statusesObject,c)),i&&n?ee(h.visibleStatuses,h.visibleStatusesObject,c):i&&r&&o.new&&(h.newStatusCount+=1),c},y={status:function(e){b(e,r)},edit:function(e){b(e,r)},retweet:function(e){var t=b(e.retweeted_status,!1,!1);(i&&F()(h.statuses,(function(e){return e.retweeted_status?e.id===t.id||e.retweeted_status.id===t.id:e.id===t.id}))?b(e,!1,!1):b(e,r)).retweeted_status=t},favorite:function(t){e.favorites.has(t.id)||(e.favorites.add(t.id),function(e,t){var n=F()(m,{id:e.in_reply_to_status_id});n&&(e.user.id===a.id?n.favorited=!0:n.fave_num+=1)}(t))},deletion:function(t){var n=t.uri,o=F()(m,{uri:n});o&&(function(e,t){V()(e.allStatuses,{id:t.id}),V()(e.notifications.data,(function(e){return e.action.id===t.id}));var n=t.statusnet_conversation_id;e.conversationsObject[n]&&V()(e.conversationsObject[n],{id:t.id})}(e,o),i&&(V()(h.statuses,{uri:n}),V()(h.visibleStatuses,{uri:n})))},follow:function(e){},default:function(e){console.log("unknown status type"),console.log(e)}};Z()(n,(function(e){var t=e.type;(y[t]||y.default)(e)})),i&&"bookmarks"!==i&&ne(h)}},addNewNotifications:function(e,t){var n=t.dispatch,o=t.notifications,r=(t.older,t.visibleNotificationTypes,t.rootGetters,t.newNotificationSideEffects);Z()(o,(function(t){if(!(0,K.nU)(t))return console.error("Invalid notification:",t),void re(e,t);(0,K.Gr)(t.type)&&(t.action=oe(e,t.action).item,t.status=t.status&&oe(e,t.status).item),"pleroma:report"===t.type&&n("addReport",t.report),"pleroma:emoji_reaction"===t.type&&n("fetchEmojiReactionsBy",t.status.id),e.notifications.idStore.hasOwnProperty(t.id)?t.seen&&(e.notifications.idStore[t.id].seen=!0):(re(e,t),e.notifications.data.push(t),e.notifications.idStore[t.id]=t,r(t))}))},removeStatus:function(e,t){var n=t.timeline,o=t.userId,r=e.timelines[n];o&&(V()(r.statuses,{user:{id:o}}),V()(r.visibleStatuses,{user:{id:o}}),r.minVisibleId=r.visibleStatuses.length>0?D()(r.visibleStatuses).id:0,r.maxId=r.statuses.length>0?x()(r.statuses).id:0)},showNewStatuses:function(e,t){var n=t.timeline,o=e.timelines[n];o.newStatusCount=0,o.visibleStatuses=B()(o.statuses,0,50),o.minVisibleId=D()(o.visibleStatuses).id,o.minId=o.minVisibleId,o.visibleStatusesObject={},Z()(o.visibleStatuses,(function(e){o.visibleStatusesObject[e.id]=e}))},resetStatuses:function(e){var t=X();Object.entries(t).forEach((function(t){var n=(0,l.Z)(t,2),o=n[0],r=n[1];e[o]=r}))},clearTimeline:function(e,t){var n=t.timeline,o=t.excludeUserId,r=void 0!==o&&o?e.timelines[n].userId:void 0;e.timelines[n]=J(r)},clearNotifications:function(e){e.notifications=Q()},setFavorited:function(e,t){var n=t.status,o=t.value,r=e.allStatusesObject[n.id];r.favorited!==o&&(o?r.fave_num++:r.fave_num--),r.favorited=o},setFavoritedConfirm:function(e,t){var n=t.status,o=t.user,r=e.allStatusesObject[n.id];r.favorited=n.favorited,r.fave_num=n.fave_num;var i=q()(r.favoritedBy,{id:o.id});-1===i||r.favorited?-1===i&&r.favorited&&r.favoritedBy.push(o):r.favoritedBy.splice(i,1)},setMutedStatus:function(e,t){var n=e.allStatusesObject[t.id];n.thread_muted=t.thread_muted,void 0!==n.thread_muted&&e.conversationsObject[n.statusnet_conversation_id].forEach((function(e){e.thread_muted=n.thread_muted}))},setRetweeted:function(e,t){var n=t.status,o=t.value,r=e.allStatusesObject[n.id];r.repeated!==o&&(o?r.repeat_num++:r.repeat_num--),r.repeated=o},setRetweetedConfirm:function(e,t){var n=t.status,o=t.user,r=e.allStatusesObject[n.id];r.repeated=n.repeated,r.repeat_num=n.repeat_num;var i=q()(r.rebloggedBy,{id:o.id});-1===i||r.repeated?-1===i&&r.repeated&&r.rebloggedBy.push(o):r.rebloggedBy.splice(i,1)},setBookmarked:function(e,t){var n=t.status,o=t.value;e.allStatusesObject[n.id].bookmarked=o},setBookmarkedConfirm:function(e,t){var n=t.status;e.allStatusesObject[n.id].bookmarked=n.bookmarked},setDeleted:function(e,t){var n=t.status,o=e.allStatusesObject[n.id];o&&(o.deleted=!0)},setManyDeleted:function(e,t){Object.values(e.allStatusesObject).forEach((function(e){t(e)&&(e.deleted=!0)}))},setLoading:function(e,t){var n=t.timeline,o=t.value;e.timelines[n].loading=o},setNsfw:function(e,t){var n=t.id,o=t.nsfw;e.allStatusesObject[n].nsfw=o},setNotificationsLoading:function(e,t){var n=t.value;e.notifications.loading=n},setNotificationsSilence:function(e,t){var n=t.value;e.notifications.desktopNotificationSilence=n},markNotificationsAsSeen:function(e){Z()(e.notifications.data,(function(e){e.seen=!0}))},markSingleNotificationAsSeen:function(e,t){var n=t.id,o=F()(e.notifications.data,(function(e){return e.id===n}));o&&(o.seen=!0)},dismissNotification:function(e,t){var n=t.id;e.notifications.data=e.notifications.data.filter((function(e){return e.id!==n}))},dismissNotifications:function(e,t){var n=t.finder;e.notifications.data=e.notifications.data.filter((function(e){return n}))},updateNotification:function(e,t){var n=t.id,o=t.updater,r=F()(e.notifications.data,(function(e){return e.id===n}));r&&o(r)},queueFlush:function(e,t){var n=t.timeline,o=t.id;e.timelines[n].flushMarker=o},queueFlushAll:function(e){Object.keys(e.timelines).forEach((function(t){e.timelines[t].flushMarker=e.timelines[t].maxId}))},addRepeats:function(e,t){var n=t.id,o=t.rebloggedByUsers,r=t.currentUser,i=e.allStatusesObject[n];i.rebloggedBy=o.filter((function(e){return e})),i.repeat_num=i.rebloggedBy.length,i.repeated=!!i.rebloggedBy.find((function(e){var t=e.id;return r.id===t}))},addFavs:function(e,t){var n=t.id,o=t.favoritedByUsers,r=t.currentUser,i=e.allStatusesObject[n];i.favoritedBy=o.filter((function(e){return e})),i.fave_num=i.favoritedBy.length,i.favorited=!!i.favoritedBy.find((function(e){var t=e.id;return r.id===t}))},addEmojiReactionsBy:function(e,t){var n=t.id,o=t.emojiReactions;t.currentUser,e.allStatusesObject[n].emoji_reactions=o},addOwnReaction:function(e,t){var n=t.id,o=t.emoji,r=t.currentUser,i=e.allStatusesObject[n],s=q()(i.emoji_reactions,{name:o}),a=i.emoji_reactions[s]||{name:o,count:0,accounts:[]},c=Y(Y({},a),{},{count:a.count+1,me:!0,accounts:[].concat((0,u.Z)(a.accounts),[r])});s>=0?i.emoji_reactions[s]=c:i.emoji_reactions=[].concat((0,u.Z)(i.emoji_reactions),[c])},removeOwnReaction:function(e,t){var n=t.id,o=t.emoji,r=t.currentUser,i=e.allStatusesObject[n],s=q()(i.emoji_reactions,{name:o});if(!(s<0)){var a=i.emoji_reactions[s],c=a.accounts||[],l=Y(Y({},a),{},{count:a.count-1,me:!1,accounts:c.filter((function(e){return e.id!==r.id}))});l.count>0?i.emoji_reactions[s]=l:i.emoji_reactions=i.emoji_reactions.filter((function(e){return e.name!==o}))}},updateStatusWithPoll:function(e,t){var n=t.id,o=t.poll;e.allStatusesObject[n].poll=o},setVirtualHeight:function(e,t){var n=t.statusId,o=t.height;e.allStatusesObject[n].virtualHeight=o}},se={state:X(),actions:{addNewStatuses:function(e,t){var n=e.rootState,o=e.commit,r=t.statuses,i=t.showImmediately,s=void 0!==i&&i,a=t.timeline,c=void 0!==a&&a,l=t.noIdUpdate,u=void 0!==l&&l,d=t.userId,p=t.pagination;o("addNewStatuses",{statuses:r,showImmediately:s,timeline:c,noIdUpdate:u,user:n.users.currentUser,userId:d,pagination:p})},addNewNotifications:function(e,t){var n=t.notifications,o=t.older;(0,e.commit)("addNewNotifications",{dispatch:e.dispatch,notifications:n,older:o,rootGetters:e.rootGetters,newNotificationSideEffects:function(t){(0,K.nJ)(e,t)}})},setNotificationsLoading:function(e,t){e.rootState,(0,e.commit)("setNotificationsLoading",{value:t.value})},setNotificationsSilence:function(e,t){e.rootState,(0,e.commit)("setNotificationsSilence",{value:t.value})},fetchStatus:function(e,t){var n=e.rootState,o=e.dispatch;return n.api.backendInteractor.fetchStatus({id:t}).then((function(e){return o("addNewStatuses",{statuses:[e]})}))},fetchStatusSource:function(e,t){var n=e.rootState;return e.dispatch,h.ZP.fetchStatusSource({id:t.id,credentials:n.users.currentUser.credentials})},fetchStatusHistory:function(e,t){return e.rootState,e.dispatch,h.ZP.fetchStatusHistory({status:t})},deleteStatus:function(e,t){var n=e.rootState;(0,e.commit)("setDeleted",{status:t}),h.ZP.deleteStatus({id:t.id,credentials:n.users.currentUser.credentials})},deleteStatusById:function(e,t){var n=e.rootState;(0,e.commit)("setDeleted",{status:n.statuses.allStatusesObject[t]})},markStatusesAsDeleted:function(e,t){(0,e.commit)("setManyDeleted",t)},favorite:function(e,t){var n=e.rootState,o=e.commit;o("setFavorited",{status:t,value:!0}),n.api.backendInteractor.favorite({id:t.id}).then((function(e){return o("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},unfavorite:function(e,t){var n=e.rootState,o=e.commit;o("setFavorited",{status:t,value:!1}),n.api.backendInteractor.unfavorite({id:t.id}).then((function(e){return o("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},fetchPinnedStatuses:function(e,t){var n=e.rootState,o=e.dispatch;n.api.backendInteractor.fetchPinnedStatuses({id:t}).then((function(e){return o("addNewStatuses",{statuses:e,timeline:"user",userId:t,showImmediately:!0,noIdUpdate:!0})}))},pinStatus:function(e,t){var n=e.rootState,o=e.dispatch;return n.api.backendInteractor.pinOwnStatus({id:t}).then((function(e){return o("addNewStatuses",{statuses:[e]})}))},unpinStatus:function(e,t){var n=e.rootState,o=e.dispatch;n.api.backendInteractor.unpinOwnStatus({id:t}).then((function(e){return o("addNewStatuses",{statuses:[e]})}))},muteConversation:function(e,t){var n=e.rootState,o=e.commit;return n.api.backendInteractor.muteConversation({id:t}).then((function(e){return o("setMutedStatus",e)}))},unmuteConversation:function(e,t){var n=e.rootState,o=e.commit;return n.api.backendInteractor.unmuteConversation({id:t}).then((function(e){return o("setMutedStatus",e)}))},retweet:function(e,t){var n=e.rootState,o=e.commit;o("setRetweeted",{status:t,value:!0}),n.api.backendInteractor.retweet({id:t.id}).then((function(e){return o("setRetweetedConfirm",{status:e.retweeted_status,user:n.users.currentUser})}))},unretweet:function(e,t){var n=e.rootState,o=e.commit;o("setRetweeted",{status:t,value:!1}),n.api.backendInteractor.unretweet({id:t.id}).then((function(e){return o("setRetweetedConfirm",{status:e,user:n.users.currentUser})}))},bookmark:function(e,t){var n=e.rootState,o=e.commit;o("setBookmarked",{status:t,value:!0}),n.api.backendInteractor.bookmarkStatus({id:t.id}).then((function(e){o("setBookmarkedConfirm",{status:e})}))},unbookmark:function(e,t){var n=e.rootState,o=e.commit;o("setBookmarked",{status:t,value:!1}),n.api.backendInteractor.unbookmarkStatus({id:t.id}).then((function(e){o("setBookmarkedConfirm",{status:e})}))},queueFlush:function(e,t){e.rootState,(0,e.commit)("queueFlush",{timeline:t.timeline,id:t.id})},queueFlushAll:function(e){e.rootState,(0,e.commit)("queueFlushAll")},markNotificationsAsSeen:function(e){var t=e.rootState;(0,e.commit)("markNotificationsAsSeen"),h.ZP.markNotificationsAsSeen({id:t.statuses.notifications.maxId,credentials:t.users.currentUser.credentials})},markSingleNotificationAsSeen:function(e,t){var n=e.rootState,o=e.commit,r=t.id;o("markSingleNotificationAsSeen",{id:r}),h.ZP.markNotificationsAsSeen({single:!0,id:r,credentials:n.users.currentUser.credentials})},dismissNotificationLocal:function(e,t){e.rootState,(0,e.commit)("dismissNotification",{id:t.id})},dismissNotification:function(e,t){var n=e.rootState,o=e.commit,r=t.id;o("dismissNotification",{id:r}),n.api.backendInteractor.dismissNotification({id:r})},updateNotification:function(e,t){e.rootState,(0,e.commit)("updateNotification",{id:t.id,updater:t.updater})},fetchFavsAndRepeats:function(e,t){var n=e.rootState,o=e.commit;Promise.all([n.api.backendInteractor.fetchFavoritedByUsers({id:t}),n.api.backendInteractor.fetchRebloggedByUsers({id:t})]).then((function(e){var r=(0,l.Z)(e,2),i=r[0],s=r[1];o("addFavs",{id:t,favoritedByUsers:i,currentUser:n.users.currentUser}),o("addRepeats",{id:t,rebloggedByUsers:s,currentUser:n.users.currentUser})}))},reactWithEmoji:function(e,t){var n=e.rootState,o=e.dispatch,r=e.commit,i=t.id,s=t.emoji,a=n.users.currentUser;a&&(r("addOwnReaction",{id:i,emoji:s,currentUser:a}),n.api.backendInteractor.reactWithEmoji({id:i,emoji:s}).then((function(e){o("fetchEmojiReactionsBy",i)})))},unreactWithEmoji:function(e,t){var n=e.rootState,o=e.dispatch,r=e.commit,i=t.id,s=t.emoji,a=n.users.currentUser;a&&(r("removeOwnReaction",{id:i,emoji:s,currentUser:a}),n.api.backendInteractor.unreactWithEmoji({id:i,emoji:s}).then((function(e){o("fetchEmojiReactionsBy",i)})))},fetchEmojiReactionsBy:function(e,t){var n=e.rootState,o=e.commit;n.api.backendInteractor.fetchEmojiReactions({id:t}).then((function(e){o("addEmojiReactionsBy",{id:t,emojiReactions:e,currentUser:n.users.currentUser})}))},fetchFavs:function(e,t){var n=e.rootState,o=e.commit;n.api.backendInteractor.fetchFavoritedByUsers({id:t}).then((function(e){return o("addFavs",{id:t,favoritedByUsers:e,currentUser:n.users.currentUser})}))},fetchRepeats:function(e,t){var n=e.rootState,o=e.commit;n.api.backendInteractor.fetchRebloggedByUsers({id:t}).then((function(e){return o("addRepeats",{id:t,rebloggedByUsers:e,currentUser:n.users.currentUser})}))},search:function(e,t){var n=t.q,o=t.resolve,r=t.limit,i=t.offset,s=t.following,a=t.type;return e.rootState.api.backendInteractor.search2({q:n,resolve:o,limit:r,offset:i,following:s,type:a}).then((function(t){return e.commit("addNewUsers",t.accounts),e.commit("addNewUsers",t.statuses.map((function(e){return e.user})).filter((function(e){return e}))),e.commit("addNewStatuses",{statuses:t.statuses}),t}))},setVirtualHeight:function(e,t){(0,e.commit)("setVirtualHeight",{statusId:t.statusId,height:t.height})}},mutations:ie};const ae=se;var ce={setLists:function(e,t){e.allLists=t},setList:function(e,t){var n=t.listId,o=t.title;e.allListsObject[n]||(e.allListsObject[n]={accountIds:[]}),e.allListsObject[n].title=o;var r=F()(e.allLists,{id:n});r?r.title=o:e.allLists.push({id:n,title:o})},setListAccounts:function(e,t){var n=t.listId,o=t.accountIds;e.allListsObject[n]||(e.allListsObject[n]={accountIds:[]}),e.allListsObject[n].accountIds=o},addListAccount:function(e,t){var n=t.listId,o=t.accountId;e.allListsObject[n]||(e.allListsObject[n]={accountIds:[]}),e.allListsObject[n].accountIds.push(o)},removeListAccount:function(e,t){var n=t.listId,o=t.accountId;e.allListsObject[n]||(e.allListsObject[n]={accountIds:[]});var r=e.allListsObject[n].accountIds,i=new Set(r);i.delete(o),e.allListsObject[n].accountIds=(0,u.Z)(i)},deleteList:function(e,t){var n=t.listId;delete e.allListsObject[n],V()(e.allLists,(function(e){return e.id===n}))}},le={state:{allLists:[],allListsObject:{}},mutations:ce,actions:{setLists:function(e,t){(0,e.commit)("setLists",t)},createList:function(e,t){var n=e.rootState,o=e.commit,r=t.title;return n.api.backendInteractor.createList({title:r}).then((function(e){return o("setList",{listId:e.id,title:r}),e}))},fetchList:function(e,t){var n=e.rootState,o=e.commit,r=t.listId;return n.api.backendInteractor.getList({listId:r}).then((function(e){return o("setList",{listId:e.id,title:e.title})}))},fetchListAccounts:function(e,t){var n=e.rootState,o=e.commit,r=t.listId;return n.api.backendInteractor.getListAccounts({listId:r}).then((function(e){return o("setListAccounts",{listId:r,accountIds:e})}))},setList:function(e,t){var n=e.rootState,o=e.commit,r=t.listId,i=t.title;n.api.backendInteractor.updateList({listId:r,title:i}),o("setList",{listId:r,title:i})},setListAccounts:function(e,t){var n=e.rootState,o=e.commit,r=t.listId,i=t.accountIds,s=n.lists.allListsObject[r].accountIds||[],a=i.filter((function(e){return!s.includes(e)})),c=s.filter((function(e){return!i.includes(e)}));o("setListAccounts",{listId:r,accountIds:i}),a.length>0&&n.api.backendInteractor.addAccountsToList({listId:r,accountIds:a}),c.length>0&&n.api.backendInteractor.removeAccountsFromList({listId:r,accountIds:c})},addListAccount:function(e,t){var n=e.rootState,o=e.commit,r=t.listId,i=t.accountId;return n.api.backendInteractor.addAccountsToList({listId:r,accountIds:[i]}).then((function(e){return o("addListAccount",{listId:r,accountId:i}),e}))},removeListAccount:function(e,t){var n=e.rootState,o=e.commit,r=t.listId,i=t.accountId;return n.api.backendInteractor.removeAccountsFromList({listId:r,accountIds:[i]}).then((function(e){return o("removeListAccount",{listId:r,accountId:i}),e}))},deleteList:function(e,t){var n=e.rootState,o=e.commit,r=t.listId;n.api.backendInteractor.deleteList({listId:r}),o("deleteList",{listId:r})}},getters:{findListTitle:function(e){return function(t){if(e.allListsObject[t])return e.allListsObject[t].title}},findListAccounts:function(e){return function(t){return(0,u.Z)(e.allListsObject[t].accountIds)}}}};const ue=le;var de=n(71002),pe=n(44908),me=n.n(pe),he=n(57043),fe=n.n(he),ge=n(30236),ve=n.n(ge),we=n(35161),be=n.n(we),ye=n(39693),_e=n.n(ye),ke=n(68929),Se=n.n(ke),je=n(22626),Ce=function(e){var t=e.store,n=e.credentials,o=e.timeline,r=void 0===o?"friends":o,i=e.older,s=void 0!==i&&i,a=e.showImmediately,c=void 0!==a&&a,l=e.userId,u=void 0!==l&&l,d=e.listId,p=void 0!==d&&d,m=e.tag,f=void 0!==m&&m,g=e.until,v=e.since,w={timeline:r,credentials:n},b=t.rootState||t.state,y=t.getters,_=b.statuses.timelines[Se()(r)],k=y.mergedConfig,S=k.hideMutedPosts,j=k.replyVisibility,C=!!b.users.currentUser;s?w.until=g||_.minId:void 0===v?w.since=_.maxId:null!==v&&(w.since=v),w.userId=u,w.listId=p,w.tag=f,w.withMuted=!S,C&&["friends","public","publicAndExternal"].includes(r)&&(w.replyVisibility=j);var O=_.statuses.length;return h.ZP.fetchTimeline(w).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data,o=e.pagination;return!s&&n.length>=20&&!_.loading&&O>0&&t.dispatch("queueFlush",{timeline:r,id:_.maxId}),function(e){var t=e.store,n=e.statuses,o=e.timeline,r=e.showImmediately,i=e.userId,s=e.listId,a=e.pagination,c=Se()(o);t.dispatch("addNewStatuses",{timeline:c,userId:i,listId:s,statuses:n,showImmediately:r,pagination:a})}({store:t,statuses:n,timeline:r,showImmediately:c,userId:u,listId:p,pagination:o}),{statuses:n,pagination:o}})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"timeline.error",messageArgs:[e.message],timeout:5e3})}))},Oe={fetchAndUpdate:Ce,startFetching:function(e){var t=e.timeline,n=void 0===t?"friends":t,o=e.credentials,r=e.store,i=e.userId,s=void 0!==i&&i,a=e.listId,c=void 0!==a&&a,l=e.tag,u=void 0!==l&&l,d=(r.rootState||r.state).statuses.timelines[Se()(n)],p=0===d.visibleStatuses.length;return d.userId=s,d.listId=c,Ce({timeline:n,credentials:o,store:r,showImmediately:p,userId:s,listId:c,tag:u}),(0,je.F)((function(){return Ce({timeline:n,credentials:o,store:r,userId:s,listId:c,tag:u})}),1e4)}};const Pe=Oe;var ze=n(15568);const De=function(e){var t=e.credentials,n=e.store,o=function(){return function(e){var t=e.store,n=e.credentials;return h.ZP.fetchFollowRequests({credentials:n}).then((function(e){t.commit("setFollowRequests",e),t.commit("addNewUsers",e)}),(function(){})).catch((function(){}))}({credentials:t,store:n})};return o(),(0,je.F)(o,1e4)};var Ie={startFetching:function(e){var t=e.credentials,n=e.store,o=function(){return function(e){var t=e.store,n=e.credentials;return h.ZP.fetchLists({credentials:n}).then((function(e){t.commit("setLists",e)}),(function(){})).catch((function(){}))}({credentials:t,store:n})};return o(),(0,je.F)(o,24e4)}};const xe=Ie;function Te(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function $e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Te(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Te(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const Ue=function(e){return $e($e({startFetchingTimeline:function(t){var n=t.timeline,o=t.store,r=t.userId,i=void 0!==r&&r,s=t.listId,a=void 0!==s&&s,c=t.tag;return Pe.startFetching({timeline:n,store:o,credentials:e,userId:i,listId:a,tag:c})},fetchTimeline:function(t){return Pe.fetchAndUpdate($e($e({},t),{},{credentials:e}))},startFetchingNotifications:function(t){var n=t.store;return ze.Z.startFetching({store:n,credentials:e})},fetchNotifications:function(t){return ze.Z.fetchAndUpdate($e($e({},t),{},{credentials:e}))},startFetchingFollowRequests:function(t){var n=t.store;return De({store:n,credentials:e})},startFetchingLists:function(t){var n=t.store;return xe.startFetching({store:n,credentials:e})},startUserSocket:function(t){var n=t.store.rootState.instance.server.replace("http","ws")+(0,h.pR)({credentials:e,stream:"user"});return(0,h.ro)({url:n,id:"User"})}},Object.entries(h.ZP).reduce((function(t,n){var o=(0,l.Z)(n,2),r=o[0],i=o[1];return $e($e({},t),{},(0,d.Z)({},r,(function(t){return i($e({credentials:e},t))})))}),{})),{},{verifyCredentials:h.ZP.verifyCredentials})};var Me=function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth},Ae=function(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight},Le=n(54061),Ee=n.n(Le),Fe="".concat(window.location.origin,"/oauth-callback"),Re=function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r=e.commit;if(t&&n)return Promise.resolve({clientId:t,clientSecret:n});var i="".concat(o,"/api/v1/apps"),s=new window.FormData;return s.append("client_name","PleromaFE_".concat(window.___pleromafe_commit_hash,"_").concat((new Date).toISOString())),s.append("redirect_uris",Fe),s.append("scopes","read write follow push admin"),window.fetch(i,{method:"POST",body:s}).then((function(e){return e.json()})).then((function(e){return{clientId:e.client_id,clientSecret:e.client_secret}})).then((function(e){return r("setClientData",e)||e}))},qe=function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r="".concat(o,"/oauth/token"),i=new window.FormData;return i.append("client_id",t),i.append("client_secret",n),i.append("grant_type","client_credentials"),i.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(r,{method:"POST",body:i}).then((function(e){return e.json()}))},Ne={login:function(e){var t=e.instance,n={response_type:"code",client_id:e.clientId,redirect_uri:Fe,scope:"read write follow push admin"},o=Ee()(n,(function(e,t,n){var o="".concat(n,"=").concat(encodeURIComponent(t));return e?"".concat(e,"&").concat(o):o}),!1),r="".concat(t,"/oauth/authorize?").concat(o);window.location.href=r},getToken:function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r=e.code,i="".concat(o,"/oauth/token"),s=new window.FormData;return s.append("client_id",t),s.append("client_secret",n),s.append("grant_type","authorization_code"),s.append("code",r),s.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(i,{method:"POST",body:s}).then((function(e){return e.json()}))},getTokenWithCredentials:function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r=e.username,i=e.password,s="".concat(o,"/oauth/token"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("grant_type","password"),a.append("username",r),a.append("password",i),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},getOrCreateApp:Re,verifyOTPCode:function(e){var t=e.app,n=e.instance,o=e.mfaToken,r=e.code,i="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",o),s.append("code",r),s.append("challenge_type","totp"),window.fetch(i,{method:"POST",body:s}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.app,n=e.instance,o=e.mfaToken,r=e.code,i="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",o),s.append("code",r),s.append("challenge_type","recovery"),window.fetch(i,{method:"POST",body:s}).then((function(e){return e.json()}))},revokeToken:function(e){var t=e.app,n=e.instance,o=e.token,r="".concat(n,"/oauth/revoke"),i=new window.FormData;return i.append("client_id",t.clientId),i.append("client_secret",t.clientSecret),i.append("token",o),window.fetch(r,{method:"POST",body:i}).then((function(e){return e.json()}))}};const Ze=Ne;var We=n(56012),Be=n.n(We);function He(){return"serviceWorker"in navigator&&"PushManager"in window}function Ve(){return Be().register().catch((function(e){return console.error("Unable to get or create a service worker.",e)}))}function Ke(e){return window.fetch("/api/v1/push/subscription/",{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e}))}function Ge(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ye(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ge(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ge(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Je=function e(t,n){if(P()(t)&&P()(n))return t.length=n.length,ve()(t,n,e)},Qe=function(e,t){return e.rootState.api.backendInteractor.blockUser({id:t}).then((function(n){e.commit("updateUserRelationship",[n]),e.commit("addBlockId",t),e.commit("removeStatus",{timeline:"friends",userId:t}),e.commit("removeStatus",{timeline:"public",userId:t}),e.commit("removeStatus",{timeline:"publicAndExternal",userId:t})}))},Xe=function(e,t){return e.rootState.api.backendInteractor.unblockUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},et=function(e,t){var n="object"===(0,de.Z)(t)?t.id:t,o="object"===(0,de.Z)(t)?t.expiresIn:0,r=e.state.relationships[n]||{id:n};return r.muting=!0,e.commit("updateUserRelationship",[r]),e.commit("addMuteId",n),e.rootState.api.backendInteractor.muteUser({id:n,expiresIn:o}).then((function(t){e.commit("updateUserRelationship",[t]),e.commit("addMuteId",n)}))},tt=function(e,t){var n=e.state.relationships[t]||{id:t};return n.muting=!1,e.commit("updateUserRelationship",[n]),e.rootState.api.backendInteractor.unmuteUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},nt=function(e,t){return e.rootState.api.backendInteractor.muteDomain({domain:t}).then((function(){return e.commit("addDomainMute",t)}))},ot=function(e,t){return e.rootState.api.backendInteractor.unmuteDomain({domain:t}).then((function(){return e.commit("removeDomainMute",t)}))},rt={tagUser:function(e,t){var n=t.user.id,o=t.tag,r=e.usersObject[n],i=(r.tags||[]).concat([o]);r.tags=i},untagUser:function(e,t){var n=t.user.id,o=t.tag,r=e.usersObject[n],i=(r.tags||[]).filter((function(e){return e!==o}));r.tags=i},updateRight:function(e,t){var n=t.user.id,o=t.right,r=t.value,i=e.usersObject[n],s=i.rights;s[o]=r,i.rights=s},updateActivationStatus:function(e,t){var n=t.user.id,o=t.deactivated;e.usersObject[n].deactivated=o},setCurrentUser:function(e,t){e.lastLoginName=t.screen_name,e.currentUser=ve()(e.currentUser||{},t,Je)},clearCurrentUser:function(e){e.currentUser=!1,e.lastLoginName=!1},beginLogin:function(e){e.loggingIn=!0},endLogin:function(e){e.loggingIn=!1},saveFriendIds:function(e,t){var n=t.id,o=t.friendIds,r=e.usersObject[n];r.friendIds=me()(fe()(r.friendIds||[],o))},saveFollowerIds:function(e,t){var n=t.id,o=t.followerIds,r=e.usersObject[n];r.followerIds=me()(fe()(r.followerIds||[],o))},clearFriends:function(e,t){var n=e.usersObject[t];n&&(n.friendIds=[])},clearFollowers:function(e,t){var n=e.usersObject[t];n&&(n.followerIds=[])},addNewUsers:function(e,t){Z()(t,(function(t){t.relationship&&(e.relationships[t.relationship.id]=t.relationship);var n=function(e,t,n){if(!n)return!1;var o=t[n.id];return o?(ve()(o,n,Je),{item:o,new:!1}):(e.push(n),t[n.id]=n,{item:n,new:!0})}(e.users,e.usersObject,t),o=n.item;n.new&&o.screen_name&&!o.screen_name.includes("@")&&(e.usersByNameObject[o.screen_name.toLowerCase()]=o)}))},updateUserRelationship:function(e,t){t.forEach((function(t){e.relationships[t.id]=t}))},updateUserInLists:function(e,t){var n=t.id,o=t.inLists;e.usersObject[n].inLists=o},saveBlockIds:function(e,t){e.currentUser.blockIds=t},addBlockId:function(e,t){-1===e.currentUser.blockIds.indexOf(t)&&e.currentUser.blockIds.push(t)},saveMuteIds:function(e,t){e.currentUser.muteIds=t},addMuteId:function(e,t){-1===e.currentUser.muteIds.indexOf(t)&&e.currentUser.muteIds.push(t)},saveDomainMutes:function(e,t){e.currentUser.domainMutes=t},addDomainMute:function(e,t){-1===e.currentUser.domainMutes.indexOf(t)&&e.currentUser.domainMutes.push(t)},removeDomainMute:function(e,t){var n=e.currentUser.domainMutes.indexOf(t);-1!==n&&e.currentUser.domainMutes.splice(n,1)},setPinnedToUser:function(e,t){var n=e.usersObject[t.user.id];n.pinnedStatusIds=n.pinnedStatusIds||[];var o=n.pinnedStatusIds.indexOf(t.id);t.pinned&&-1===o?n.pinnedStatusIds.push(t.id):t.pinned||-1===o||n.pinnedStatusIds.splice(o,1)},setUserForStatus:function(e,t){t.user=e.usersObject[t.user.id]},setUserForNotification:function(e,t){"follow"!==t.type&&(t.action.user=e.usersObject[t.action.user.id]),t.from_profile=e.usersObject[t.from_profile.id]},setColor:function(e,t){var n=t.user.id,o=t.highlighted;e.usersObject[n].highlight=o},signUpPending:function(e){e.signUpPending=!0,e.signUpErrors=[]},signUpSuccess:function(e){e.signUpPending=!1},signUpFailure:function(e,t){e.signUpPending=!1,e.signUpErrors=t}},it={state:{loggingIn:!1,lastLoginName:!1,currentUser:!1,users:[],usersObject:{},usersByNameObject:{},signUpPending:!1,signUpErrors:[],relationships:{}},mutations:rt,getters:{findUser:function(e){return function(t){return e.usersObject[t]}},findUserByName:function(e){return function(t){return e.usersByNameObject[t.toLowerCase()]}},findUserByUrl:function(e){return function(t){return e.users.find((function(e){return e.statusnet_profile_url&&e.statusnet_profile_url.toLowerCase()===t.toLowerCase()}))}},relationship:function(e){return function(t){return t&&e.relationships[t]||{id:t,loading:!0}}}},actions:{fetchUserIfMissing:function(e,t){e.getters.findUser(t)||e.dispatch("fetchUser",t)},fetchUser:function(e,t){return e.rootState.api.backendInteractor.fetchUser({id:t}).then((function(t){return e.commit("addNewUsers",[t]),t}))},fetchUserByName:function(e,t){return e.rootState.api.backendInteractor.fetchUserByName({name:t}).then((function(t){return e.commit("addNewUsers",[t]),t}))},fetchUserRelationship:function(e,t){e.state.currentUser&&e.rootState.api.backendInteractor.fetchUserRelationship({id:t}).then((function(t){return e.commit("updateUserRelationship",t)}))},fetchUserInLists:function(e,t){e.state.currentUser&&e.rootState.api.backendInteractor.fetchUserInLists({id:t}).then((function(n){return e.commit("updateUserInLists",{id:t,inLists:n})}))},fetchBlocks:function(e){return e.rootState.api.backendInteractor.fetchBlocks().then((function(t){return e.commit("saveBlockIds",be()(t,"id")),e.commit("addNewUsers",t),t}))},blockUser:function(e,t){return Qe(e,t)},unblockUser:function(e,t){return Xe(e,t)},removeUserFromFollowers:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.removeUserFromFollowers({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))}(e,t)},blockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Qe(e,t)})))},unblockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Xe(e,t)})))},editUserNote:function(e,t){return function(e,t){var n=t.id,o=t.comment;return e.rootState.api.backendInteractor.editUserNote({id:n,comment:o}).then((function(t){return e.commit("updateUserRelationship",[t])}))}(e,t)},fetchMutes:function(e){return e.rootState.api.backendInteractor.fetchMutes().then((function(t){return e.commit("saveMuteIds",be()(t,"id")),e.commit("addNewUsers",t),t}))},muteUser:function(e,t){return et(e,t)},unmuteUser:function(e,t){return tt(e,t)},hideReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!1}).then((function(t){e.commit("updateUserRelationship",[t])}))}(e,t)},showReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!0}).then((function(t){return e.commit("updateUserRelationship",[t])}))}(e,t)},muteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return et(e,t)})))},unmuteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return tt(e,t)})))},fetchDomainMutes:function(e){return e.rootState.api.backendInteractor.fetchDomainMutes().then((function(t){return e.commit("saveDomainMutes",t),t}))},muteDomain:function(e,t){return nt(e,t)},unmuteDomain:function(e,t){return ot(e,t)},muteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return nt(e,t)})))},unmuteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return ot(e,t)})))},fetchFriends:function(e,t){var n=e.rootState,o=e.commit,r=n.users.usersObject[t],i=D()(r.friendIds);return n.api.backendInteractor.fetchFriends({id:t,maxId:i}).then((function(e){return o("addNewUsers",e),o("saveFriendIds",{id:t,friendIds:be()(e,"id")}),e}))},fetchFollowers:function(e,t){var n=e.rootState,o=e.commit,r=n.users.usersObject[t],i=D()(r.followerIds);return n.api.backendInteractor.fetchFollowers({id:t,maxId:i}).then((function(e){return o("addNewUsers",e),o("saveFollowerIds",{id:t,followerIds:be()(e,"id")}),e}))},clearFriends:function(e,t){(0,e.commit)("clearFriends",t)},clearFollowers:function(e,t){(0,e.commit)("clearFollowers",t)},subscribeUser:function(e,t){var n=e.rootState,o=e.commit;return n.api.backendInteractor.subscribeUser({id:t}).then((function(e){return o("updateUserRelationship",[e])}))},unsubscribeUser:function(e,t){var n=e.rootState,o=e.commit;return n.api.backendInteractor.unsubscribeUser({id:t}).then((function(e){return o("updateUserRelationship",[e])}))},toggleActivationStatus:function(e,t){var n=e.rootState,o=e.commit,r=t.user;(r.deactivated?n.api.backendInteractor.activateUser:n.api.backendInteractor.deactivateUser)({user:r}).then((function(e){var t=!e.is_active;o("updateActivationStatus",{user:e,deactivated:t})}))},registerPushNotifications:function(e){var t=e.state.currentUser.credentials,n=e.rootState.instance.vapidPublicKey;!function(e,t,n,o){He()&&Ve().then((function(n){return function(e,t,n){if(!t)return Promise.reject(new Error("Web Push is disabled in config"));if(!n)return Promise.reject(new Error("VAPID public key is not found"));var o,r,i,s={userVisibleOnly:!0,applicationServerKey:(o=n,r=(o+"=".repeat((4-o.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/"),i=window.atob(r),Uint8Array.from((0,u.Z)(i).map((function(e){return e.charCodeAt(0)}))))};return e.pushManager.subscribe(s)}(n,e,t)})).then((function(e){return function(e,t,n){return window.fetch("/api/v1/push/subscription/",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(t)},body:JSON.stringify({subscription:e,data:{alerts:{follow:n.follows,favourite:n.likes,mention:n.mentions,reblog:n.repeats,move:n.moves}}})}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e.json()})).then((function(e){if(!e.id)throw new Error("Bad response from server.");return e}))}(e,n,o)})).catch((function(e){return console.warn("Failed to setup Web Push Notifications: ".concat(e.message))}))}(e.rootState.config.webPushNotifications,n,t,e.rootState.config.notificationVisibility)},unregisterPushNotifications:function(e){var t;t=e.state.currentUser.credentials,He()&&Promise.all([Ke(t),Ve().then((function(e){return function(e){return e.pushManager.getSubscription().then((function(e){if(null!==e)return e.unsubscribe()}))}(e).then((function(t){return[e,t]}))})).then((function(e){var t=(0,l.Z)(e,2),n=t[0];return t[1]||console.warn("Push subscription cancellation wasn't successful, killing SW anyway..."),n.unregister().then((function(e){e||console.warn("Failed to kill SW")}))}))]).catch((function(e){return console.warn("Failed to disable Web Push Notifications: ".concat(e.message))}))},addNewUsers:function(e,t){(0,e.commit)("addNewUsers",t)},addNewStatuses:function(e,t){var n=t.statuses,o=be()(n,"user"),r=_e()(be()(n,"retweeted_status.user"));e.commit("addNewUsers",o),e.commit("addNewUsers",r),Z()(n,(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)})),Z()(_e()(be()(n,"retweeted_status")),(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)}))},addNewNotifications:function(e,t){var n=t.notifications,o=be()(n,"from_profile"),r=be()(n,"target").filter((function(e){return e})),i=n.map((function(e){return e.id}));e.commit("addNewUsers",o),e.commit("addNewUsers",r);var s=e.rootState.statuses.notifications.idStore,a=Object.entries(s).filter((function(e){var t=(0,l.Z)(e,2),n=t[0];return t[1],i.includes(n)})).map((function(e){var t=(0,l.Z)(e,2);return t[0],t[1]}));Z()(a,(function(t){e.commit("setUserForNotification",t)}))},searchUsers:function(e,t){var n=e.rootState,o=e.commit,r=t.query;return n.api.backendInteractor.searchUsers({query:r}).then((function(e){return o("addNewUsers",e),e}))},signUp:function(e,t){return(0,o.Z)(i().mark((function n(){var o,r,s;return i().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.commit("signUpPending"),o=e.rootState,n.prev=2,n.next=5,o.api.backendInteractor.register({params:Ye({},t)});case 5:r=n.sent,e.commit("signUpSuccess"),e.commit("setToken",r.access_token),e.dispatch("loginUser",r.access_token),n.next=16;break;case 11:throw n.prev=11,n.t0=n.catch(2),s=n.t0.message,e.commit("signUpFailure",s),n.t0;case 16:case"end":return n.stop()}}),n,null,[[2,11]])})))()},getCaptcha:function(e){return(0,o.Z)(i().mark((function t(){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",e.rootState.api.backendInteractor.getCaptcha());case 1:case"end":return t.stop()}}),t)})))()},logout:function(e){var t=e.rootState,n=t.oauth,o=t.instance,r=Ye(Ye({},n),{},{commit:e.commit,instance:o.server});return Ze.getOrCreateApp(r).then((function(e){var t={app:e,instance:r.instance,token:n.userToken};return Ze.revokeToken(t)})).then((function(){e.commit("clearCurrentUser"),e.dispatch("disconnectFromSocket"),e.commit("clearToken"),e.dispatch("stopFetchingTimeline","friends"),e.commit("setBackendInteractor",Ue(e.getters.getToken())),e.dispatch("stopFetchingNotifications"),e.dispatch("stopFetchingLists"),e.dispatch("stopFetchingFollowRequests"),e.commit("clearNotifications"),e.commit("resetStatuses"),e.dispatch("resetChats"),e.dispatch("setLastTimeline","public-timeline"),e.dispatch("setLayoutWidth",Me()),e.dispatch("setLayoutHeight",Ae()),e.commit("clearServerSideStorage")}))},loginUser:function(e,t){return new Promise((function(n,o){var r=e.commit;r("beginLogin"),e.rootState.api.backendInteractor.verifyCredentials(t).then((function(i){if(i.error){var s=i.error;r("endLogin"),401===s.status?o(new Error("Wrong username or password")):o(new Error("An error occurred, please try again"))}else{var a=i;a.credentials=t,a.blockIds=[],a.muteIds=[],a.domainMutes=[],r("setCurrentUser",a),r("setServerSideStorage",a),r("addNewUsers",[a]),e.dispatch("fetchEmoji"),(c=window.Notification,c?"default"===c.permission?c.requestPermission():Promise.resolve(c.permission):Promise.resolve(null)).then((function(e){return r("setNotificationPermission",e)})),r("setBackendInteractor",Ue(t)),e.dispatch("pushServerSideStorage"),a.token&&(e.dispatch("setWsToken",a.token),e.dispatch("initializeSocket")),e.dispatch("startFetchingLists"),a.locked&&e.dispatch("startFetchingFollowRequests"),e.getters.mergedConfig.useStreamingApi?(e.dispatch("fetchTimeline",{timeline:"friends",since:null}),e.dispatch("fetchNotifications",{since:null}),e.dispatch("enableMastoSockets",!0).catch((function(e){console.error("Failed initializing MastoAPI Streaming socket",e)})).then((function(){e.dispatch("fetchChats",{latest:!0}),setTimeout((function(){return e.dispatch("setNotificationsSilence",!1)}),1e4)}))):(e.dispatch("startFetchingTimeline",{timeline:"friends"}),e.dispatch("startFetchingNotifications"),e.dispatch("startFetchingChats")),e.dispatch("fetchMutes"),e.dispatch("setLayoutWidth",Me()),e.dispatch("setLayoutHeight",Ae()),e.rootState.api.backendInteractor.fetchFriends({id:a.id}).then((function(e){return r("addNewUsers",e)}))}var c;r("endLogin"),n()})).catch((function(e){console.log(e),r("endLogin"),o(new Error("Failed to connect to server, try again"))}))}))}}};const st=it;var at=n(36459),ct=n(87462),lt=n(44925),ut=n(64689),dt=function(e,t){if(t.lastMessage&&(e.rootState.chats.currentChatId!==t.id||document.hidden)&&e.rootState.users.currentUser.id!==t.lastMessage.account_id){var n={tag:t.lastMessage.id,title:t.account.name,icon:t.account.profile_image_url,body:t.lastMessage.content};t.lastMessage.attachment&&"image"===t.lastMessage.attachment.type&&(n.image=t.lastMessage.attachment.preview_url),(0,ut.w)(e.rootState,n)}},pt=n(90837),mt=["timeline"];function ht(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ft(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ht(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ht(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var gt={state:{retryMultiplier:1,backendInteractor:Ue(),fetchers:{},socket:null,mastoUserSocket:null,mastoUserSocketStatus:null,followRequests:[]},getters:{followRequestCount:function(e){return e.followRequests.length}},mutations:{setBackendInteractor:function(e,t){e.backendInteractor=t},addFetcher:function(e,t){var n=t.fetcherName,o=t.fetcher;e.fetchers[n]=o},removeFetcher:function(e,t){var n=t.fetcherName;t.fetcher,e.fetchers[n].stop(),delete e.fetchers[n]},setWsToken:function(e,t){e.wsToken=t},setSocket:function(e,t){e.socket=t},setFollowRequests:function(e,t){e.followRequests=t},setMastoUserSocketStatus:function(e,t){e.mastoUserSocketStatus=t},incrementRetryMultiplier:function(e){e.retryMultiplier=Math.max(++e.retryMultiplier,3)},resetRetryMultiplier:function(e){e.retryMultiplier=1}},actions:{enableMastoSockets:function(e,t){var n=e.state,o=e.dispatch,r=e.commit;if(!n.mastoUserSocket||[WebSocket.CLOSED,WebSocket.CLOSING].includes(n.mastoUserSocket.getState()))return r("setMastoUserSocketStatus",t?h._z.STARTING_INITIAL:h._z.STARTING),o("startMastoUserSocket")},disableMastoSockets:function(e){var t=e.state,n=e.dispatch,o=e.commit;if(t.mastoUserSocket)return o("setMastoUserSocketStatus",h._z.DISABLED),n("stopMastoUserSocket")},startMastoUserSocket:function(e){return new Promise((function(t,n){try{var o=e.state,r=e.commit,i=e.dispatch,s=e.rootState.statuses.timelines.friends;o.mastoUserSocket=o.backendInteractor.startUserSocket({store:e}),o.mastoUserSocket.addEventListener("message",(function(t){var n=t.detail;n&&("notification"===n.event?i("addNewNotifications",{notifications:[n.notification],older:!1}):"update"===n.event?i("addNewStatuses",{statuses:[n.status],userId:!1,showImmediately:0===s.visibleStatuses.length,timeline:"friends"}):"status.update"===n.event?i("addNewStatuses",{statuses:[n.status],userId:!1,showImmediately:n.status.id in s.visibleStatusesObject,timeline:"friends"}):"delete"===n.event?i("deleteStatusById",n.id):"pleroma:chat_update"===n.event&&setTimeout((function(){i("addChatMessages",{chatId:n.chatUpdate.id,messages:[n.chatUpdate.lastMessage]}),i("updateChat",{chat:n.chatUpdate}),dt(e,n.chatUpdate)}),100))})),o.mastoUserSocket.addEventListener("open",(function(){o.mastoUserSocketStatus!==h._z.STARTING_INITIAL&&i("pushGlobalNotice",{level:"success",messageKey:"timeline.socket_reconnected",timeout:5e3}),new Set([h._z.ERROR,h._z.DISABLED]).has(o.mastoUserSocketStatus)&&(i("stopFetchingTimeline",{timeline:"friends"}),i("stopFetchingNotifications"),i("stopFetchingChats")),r("resetRetryMultiplier"),r("setMastoUserSocketStatus",h._z.JOINED)})),o.mastoUserSocket.addEventListener("error",(function(e){var t=e.detail;console.error("Error in MastoAPI websocket:",t),i("clearOpenedChats")})),o.mastoUserSocket.addEventListener("close",(function(e){var t=e.detail,n=new Set([1e3,1001]),s=t.code;n.has(s)?(console.debug("Not restarting socket becasue of closure code ".concat(s," is in ignore list")),r("setMastoUserSocketStatus",h._z.CLOSED)):(console.warn("MastoAPI websocket disconnected, restarting. CloseEvent code: ".concat(s)),setTimeout((function(){i("startMastoUserSocket")}),1e3*o.retryMultiplier),r("incrementRetryMultiplier"),o.mastoUserSocketStatus!==h._z.ERROR&&(i("startFetchingTimeline",{timeline:"friends"}),i("startFetchingNotifications"),i("startFetchingChats"),i("pushGlobalNotice",{level:"error",messageKey:"timeline.socket_broke",messageArgs:[s],timeout:5e3})),r("setMastoUserSocketStatus",h._z.ERROR)),i("clearOpenedChats")})),t()}catch(e){n(e)}}))},stopMastoUserSocket:function(e){var t=e.state,n=e.dispatch;n("startFetchingTimeline",{timeline:"friends"}),n("startFetchingNotifications"),n("startFetchingChats"),t.mastoUserSocket.close()},startFetchingTimeline:function(e,t){var n=t.timeline,o=void 0===n?"friends":n,r=t.tag,i=void 0!==r&&r,s=t.userId,a=void 0!==s&&s,c=t.listId,l=void 0!==c&&c;if(!e.state.fetchers[o]){var u=e.state.backendInteractor.startFetchingTimeline({timeline:o,store:e,userId:a,listId:l,tag:i});e.commit("addFetcher",{fetcherName:o,fetcher:u})}},stopFetchingTimeline:function(e,t){var n=e.state.fetchers[t];n&&e.commit("removeFetcher",{fetcherName:t,fetcher:n})},fetchTimeline:function(e,t){var n=t.timeline,o=(0,lt.Z)(t,mt);e.state.backendInteractor.fetchTimeline(ft({store:e,timeline:n},o))},startFetchingNotifications:function(e){if(!e.state.fetchers.notifications){var t=e.state.backendInteractor.startFetchingNotifications({store:e});e.commit("addFetcher",{fetcherName:"notifications",fetcher:t})}},stopFetchingNotifications:function(e){var t=e.state.fetchers.notifications;t&&e.commit("removeFetcher",{fetcherName:"notifications",fetcher:t})},fetchNotifications:function(e,t){var n=(0,ct.Z)({},((0,at.Z)(t),t));e.state.backendInteractor.fetchNotifications(ft({store:e},n))},startFetchingFollowRequests:function(e){if(!e.state.fetchers.followRequests){var t=e.state.backendInteractor.startFetchingFollowRequests({store:e});e.commit("addFetcher",{fetcherName:"followRequests",fetcher:t})}},stopFetchingFollowRequests:function(e){var t=e.state.fetchers.followRequests;t&&e.commit("removeFetcher",{fetcherName:"followRequests",fetcher:t})},removeFollowRequest:function(e,t){var n=e.state.followRequests.filter((function(e){return e!==t}));e.commit("setFollowRequests",n)},startFetchingLists:function(e){if(!e.state.fetchers.lists){var t=e.state.backendInteractor.startFetchingLists({store:e});e.commit("addFetcher",{fetcherName:"lists",fetcher:t})}},stopFetchingLists:function(e){var t=e.state.fetchers.lists;t&&e.commit("removeFetcher",{fetcherName:"lists",fetcher:t})},setWsToken:function(e,t){e.commit("setWsToken",t)},initializeSocket:function(e){var t=e.dispatch,n=e.commit,o=e.state,r=e.rootState,i=o.wsToken;if(r.instance.shoutAvailable&&void 0!==i&&null===o.socket){var s=new pt.sk("/socket",{params:{token:i}});s.connect(),n("setSocket",s),t("initializeShout",s)}},disconnectFromSocket:function(e){var t=e.commit,n=e.state;n.socket&&n.socket.disconnect(),t("setSocket",null)}}};const vt=gt;var wt=n(65405),bt=n(87185),yt=n.n(bt),_t=n(69579),kt=n.n(_t),St=n(7436),jt=n.n(St),Ct=n(7739),Ot=n.n(Ct),Pt=n(85564),zt=n.n(Pt),Dt=n(74691),It=n.n(Dt),xt=n(27361),Tt=n.n(xt),$t=n(36968),Ut=n.n($t),Mt=n(50361),At=n.n(Mt),Lt=n(18446),Et=n.n(Lt),Ft=n(2262),Rt=n(48328),qt=n(9382),Nt=(n(31934),n(95326),n(43011),n(68789),n(84131));qt.vI.add(Nt.NBC),Rt.Z;var Zt=["_journal"],Wt=["_timestamp","_version"],Bt=["_timestamp","_version"];function Ht(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Vt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ht(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ht(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Kt=new Date("2022-08-04"),Gt=1001,Yt={dirty:!1,flagStorage:{updateCounter:0,reset:0},prefsStorage:{_journal:[],simple:{dontShowUpdateNotifs:!1,collapseNav:!1},collections:{pinnedNavItems:["home","dms","chats"]}},raw:null,cache:null},Jt=Vt(Vt({},Yt.flagStorage),{},{updateCounter:1}),Qt=function(e,t,n){var o=e.indexOf(t),r=o+n,i=(0,u.Z)(e);return i.splice(o,1),i.splice(It()(r,0,i.length+1),0,t),i},Xt=function(e,t){return Vt(Vt({},e),{},{_user:t,_timestamp:Date.now(),_version:1})},en=function(e){return e._timestamp>0&&e._version>0},tn=function(e){e.prefsStorage=e.prefsStorage||{simple:{},collections:{}},Object.entries(Yt.prefsStorage.simple).forEach((function(t){var n=(0,l.Z)(t,2),o=n[0],r=n[1];"number"!=typeof r&&"boolean"!=typeof r&&(console.warn("Preference simple.".concat(o," as invalid type, reinitializing")),Ut()(e.prefsStorage.simple,o,Yt.prefsStorage.simple[o]))})),Object.entries(Yt.prefsStorage.collections).forEach((function(t){var n=(0,l.Z)(t,2),o=n[0],r=n[1];Array.isArray(r)||(console.warn("Preference collections.".concat(o," as invalid type, reinitializing")),Ut()(e.prefsStorage.collections,o,Yt.prefsStorage.collections[o]))}))},nn=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var o=zt()(t.map((function(e){return Array.isArray(e)?e:[]}))).filter((function(e){return Object.prototype.hasOwnProperty.call(e,"path")&&Object.prototype.hasOwnProperty.call(e,"operation")&&Object.prototype.hasOwnProperty.call(e,"args")&&Object.prototype.hasOwnProperty.call(e,"timestamp")})),r=Ot()(o,"path"),i=Object.entries(r).map((function(e){var t=(0,l.Z)(e,2),n=t[0],o=t[1];if(o.sort((function(e,t){return e.timestamp>t.timestamp?1:-1})),n.startsWith("collections")){var r,i=jt()(o,(function(e){return"removeFromCollection"===e.operation}));return r=i>0?o.slice(i):o,yt()(r,(function(e,t){return e.path===t.path&&e.operation===t.operation&&"addToCollection"===e.operation&&e.args[0]===t.args[0]}))}return n.startsWith("simple")?kt()(o):o}));return zt()(i).sort((function(e,t){return e.timestamp>t.timestamp?1:-1}))},on={clearServerSideStorage:function(e,t){Vt({},At()(Yt))},setServerSideStorage:function(e,t){var n=t.storage;e.raw=n;var o=e.cache;o&&o._user!==t.fqn&&(console.warn("cache belongs to another user! reinitializing local cache!"),o=null);var r=function(e,t){var n={recent:null,stale:null,needUpload:!1},o=en(e||{}),r=en(t||{});return!r&&o?(n.needUpload=!0,console.debug("Nothing valid stored on server, assuming cache to be source of truth"),n.recent=e,n.stale=t):!o&&r?(console.debug("Valid storage on server found, no local cache found, using live as source of truth"),n.recent=t,n.stale=e):o&&r?(console.debug("Both sources have valid data, figuring things out..."),t._timestamp===e._timestamp&&t._version===e._version?(console.debug("Same version/timestamp on both source, source of truth irrelevant"),n.recent=e,n.stale=t):(console.debug("Different timestamp, figuring out which one is more recent"),t._timestamp<e._timestamp?(n.recent=e,n.stale=t):(n.recent=t,n.stale=e))):(console.debug("Both sources are invalid, start from scratch"),n.needUpload=!0),n}(o=function(e){return e?(e._version<1&&(console.debug("Local cached data has older version, seeing if there any migrations that can be applied"),console.debug("No migrations found")),e._version>1&&(console.debug("Local cached data has newer version, seeing if there any reverse migrations that can be applied"),window._PLEROMA_HOTPATCH&&window._PLEROMA_HOTPATCH.reverseMigrations)?(console.debug("Found hotpatch migration, applying"),window._PLEROMA_HOTPATCH.reverseMigrations.call({},"serverSideStorage",{from:e._version,to:1},e)):e):e}(o),n),i=r.recent,s=r.stale,a=r.needsUpload,c=t.created_at>Kt,d=c?Jt:Yt.flagStorage,p=!1;if(null===i&&(console.debug("Data is empty, initializing for ".concat(c?"new":"existing"," user")),i=Xt({flagStorage:Vt({},d),prefsStorage:Vt({},Yt.prefsStorage)})),!a&&i&&s){console.debug("Checking if data needs merging...");var m=i,h=(m._timestamp,m._version,(0,lt.Z)(m,Wt)),f=(s._timestamp,s._version,(0,lt.Z)(s,Bt));p=!Et()(h,f),console.debug("Data ".concat(p?"needs":"doesn't need"," merging"))}var g,v,w=function(e,t){return Array.from(new Set([].concat((0,u.Z)(Object.keys((0,Ft.IU)((e||{}).flagStorage||{}))),(0,u.Z)(Object.keys((0,Ft.IU)((t||{}).flagStorage||{}))))))}(i,s);p?(console.debug("Merging the data..."),g=function(e,t,n){return t.flagStorage?e.flagStorage?Object.fromEntries(n.map((function(n){var o=e.flagStorage[n],r=t.flagStorage[n];return[n,Number((o>r?o:r)||0)]}))):t.flagStorage:e.flagStorage}(i,s,w),tn(i),tn(s),v=function(e,t,n){if(!t)return e;if(!e)return t;var o=e._journal,r=(0,lt.Z)(e,Zt),i=t._journal,s=Vt({},r),a=nn(i,o);return a.forEach((function(e){var t=e.path,n=(e.timestamp,e.operation),o=(e.command,e.args);if(t.startsWith("_"))console.error("journal contains entry to edit internal (starts with _) field '".concat(t,"', something is incorrect here, ignoring."));else switch(n){case"set":Ut()(s,t,o[0]);break;case"addToCollection":Ut()(s,t,Array.from(new Set(Tt()(s,t)).add(o[0])));break;case"removeFromCollection":var r=new Set(Tt()(s,t));r.delete(o[0]),Ut()(s,t,Array.from(r));break;case"reorderCollection":var i=(0,l.Z)(o,2),a=i[0],c=i[1];Ut()(s,t,Qt(Tt()(s,t),a,c));break;default:console.error("Unknown journal operation: '".concat(n,"', did we forget to run reverse migrations beforehand?"))}})),Vt(Vt({},s),{},{_journal:a})}(i.prefsStorage,s.prefsStorage)):(g=i.flagStorage,v=i.prefsStorage),g=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Yt.flagStorage,n=Vt({},e),o=Object.keys(e);if(e.reset>=1e3&&e.reset<=Gt){console.debug("Received command to trim the flags");var r=new Set(Object.keys(t));n={},o.forEach((function(t){r.has(t)&&(n[t]=e[t])})),e.reset===Gt&&(console.debug("Received command to reset the flags"),Object.keys(t).forEach((function(e){n[e]=0})))}else e.reset>0&&e.reset<9e3&&(console.debug("Received command to reset the flags"),o.forEach((function(e){n[e]=0})));return n.reset=0,n}(g),i.flagStorage=Vt(Vt({},d),g),i.prefsStorage=Vt(Vt({},Yt.prefsStorage),v),e.dirty=p||a,e.cache=i,s&&i&&!e.dirty&&(e.cache._timestamp=Math.min(s._timestamp,i._timestamp)),e.flagStorage=e.cache.flagStorage,e.prefsStorage=e.cache.prefsStorage},setFlag:function(e,t){var n=t.flag,o=t.value;e.flagStorage[n]=o,e.dirty=!0},setPreference:function(e,t){var n=t.path,o=t.value;n.startsWith("_")?console.error("tried to edit internal (starts with _) field '".concat(n,"', ignoring.")):(Ut()(e.prefsStorage,n,o),e.prefsStorage._journal=[].concat((0,u.Z)(e.prefsStorage._journal),[{operation:"set",path:n,args:[o],timestamp:Date.now()}]),e.dirty=!0)},addCollectionPreference:function(e,t){var n=t.path,o=t.value;if(n.startsWith("_"))console.error("tried to edit internal (starts with _) field '".concat(n,"', ignoring."));else{var r=new Set(Tt()(e.prefsStorage,n));r.add(o),Ut()(e.prefsStorage,n,(0,u.Z)(r)),e.prefsStorage._journal=[].concat((0,u.Z)(e.prefsStorage._journal),[{operation:"addToCollection",path:n,args:[o],timestamp:Date.now()}]),e.dirty=!0}},removeCollectionPreference:function(e,t){var n=t.path,o=t.value;if(n.startsWith("_"))console.error("tried to edit internal (starts with _) field '".concat(n,"', ignoring."));else{var r=new Set(Tt()(e.prefsStorage,n));r.delete(o),Ut()(e.prefsStorage,n,(0,u.Z)(r)),e.prefsStorage._journal=[].concat((0,u.Z)(e.prefsStorage._journal),[{operation:"removeFromCollection",path:n,args:[o],timestamp:Date.now()}]),e.dirty=!0}},reorderCollectionPreference:function(e,t){var n=t.path,o=t.value,r=t.movement;if(n.startsWith("_"))console.error("tried to edit internal (starts with _) field '".concat(n,"', ignoring."));else{var i=Tt()(e.prefsStorage,n),s=Qt(i,o,r);Ut()(e.prefsStorage,n,s),e.prefsStorage._journal=[].concat((0,u.Z)(e.prefsStorage._journal),[{operation:"arrangeCollection",path:n,args:[o],timestamp:Date.now()}]),e.dirty=!0}},updateCache:function(e,t){var n=t.username;e.prefsStorage._journal=nn(e.prefsStorage._journal),e.cache=Xt({flagStorage:(0,Ft.IU)(e.flagStorage),prefsStorage:(0,Ft.IU)(e.prefsStorage)},n)}};const rn={state:Vt({},At()(Yt)),mutations:on,actions:{pushServerSideStorage:function(e){var t=e.state,n=e.rootState,o=e.commit,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.force,s=void 0!==i&&i,a=t.dirty||s;if(console.log(a),a){o("updateCache",{username:n.users.currentUser.fqn});var c={pleroma_settings_store:{"pleroma-fe":t.cache}};n.api.backendInteractor.updateProfile({params:c}).then((function(e){o("setServerSideStorage",e),t.dirty=!1}))}}}},sn={state:{messages:[],channel:{state:""},joined:!1},mutations:{setChannel:function(e,t){e.channel=t},addMessage:function(e,t){e.messages.push(t),e.messages=e.messages.slice(-19,20)},setMessages:function(e,t){e.messages=t.slice(-19,20)},setJoined:function(e,t){e.joined=t}},actions:{initializeShout:function(e,t){var n=t.channel("chat:public");n.joinPush.receive("ok",(function(){e.commit("setJoined",!0)})),n.onClose((function(){e.commit("setJoined",!1)})),n.onError((function(){e.commit("setJoined",!1)})),n.on("new_msg",(function(t){e.commit("addMessage",t)})),n.on("messages",(function(t){var n=t.messages;e.commit("setMessages",n)})),n.join(),e.commit("setChannel",n)}}},an={state:{clientId:!1,clientSecret:!1,appToken:!1,userToken:!1},mutations:{setClientData:function(e,t){var n=t.clientId,o=t.clientSecret;e.clientId=n,e.clientSecret=o},setAppToken:function(e,t){e.appToken=t},setToken:function(e,t){e.userToken=t},clearToken:function(e){e.userToken=!1,delete e.token}},getters:{getToken:function(e){return function(){return e.userToken||e.token||e.appToken}},getUserToken:function(e){return function(){return e.userToken||e.token}}}};var cn="password",ln="token",un="totp",dn="recovery",pn=function(e){e.strategy=e.initStrategy,e.settings={}};const mn={namespaced:!0,state:{settings:{},strategy:cn,initStrategy:cn},getters:{settings:function(e,t){return e.settings},requiredPassword:function(e,t,n){return e.strategy===cn},requiredToken:function(e,t,n){return e.strategy===ln},requiredTOTP:function(e,t,n){return e.strategy===un},requiredRecovery:function(e,t,n){return e.strategy===dn}},mutations:{setInitialStrategy:function(e,t){t&&(e.initStrategy=t,e.strategy=t)},requirePassword:function(e){e.strategy=cn},requireToken:function(e){e.strategy=ln},requireMFA:function(e,t){var n=t.settings;e.settings=n,e.strategy=un},requireRecovery:function(e){e.strategy=dn},requireTOTP:function(e){e.strategy=un},abortMFA:function(e){pn(e)}},actions:{login:function(e,t){return(0,o.Z)(i().mark((function n(){var o,r,s,a;return i().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=e.state,r=e.dispatch,s=e.commit,a=t.access_token,s("setToken",a,{root:!0}),n.next=5,r("loginUser",a,{root:!0});case 5:pn(o);case 6:case"end":return n.stop()}}),n)})))()}}};var hn=n(58394),fn=new Set(["image","video","audio","flash"]),gn={state:{media:[],currentIndex:0,activated:!1},mutations:{setMedia:function(e,t){e.media=t},setCurrentMedia:function(e,t){e.activated=!0,e.currentIndex=t},close:function(e){e.activated=!1}},actions:{setMedia:function(e,t){var n=e.commit,o=t.filter((function(e){var t=hn.Z.fileType(e.mimetype);return fn.has(t)}));n("setMedia",o)},setCurrentMedia:function(e,t){(0,e.commit)("setCurrentMedia",e.state.media.indexOf(t)||0)},closeMediaViewer:function(e){(0,e.commit)("close")}}};const vn=gn,wn={state:{tokens:[]},actions:{fetchTokens:function(e){var t=e.rootState,n=e.commit;t.api.backendInteractor.fetchOAuthTokens().then((function(e){n("swapTokens",e)}))},revokeToken:function(e,t){var n=e.rootState,o=e.commit,r=e.state;n.api.backendInteractor.revokeOAuthToken({id:t}).then((function(e){201===e.status&&o("swapTokens",r.tokens.filter((function(e){return e.id!==t})))}))}},mutations:{swapTokens:function(e,t){e.tokens=t}}};var bn=n(63105),yn=n.n(bn),_n={state:{reportModal:{userId:null,statuses:[],preTickedIds:[],activated:!1},reports:{}},mutations:{openUserReportingModal:function(e,t){var n=t.userId,o=t.statuses,r=t.preTickedIds;e.reportModal.userId=n,e.reportModal.statuses=o,e.reportModal.preTickedIds=r,e.reportModal.activated=!0},closeUserReportingModal:function(e){e.reportModal.activated=!1},setReportState:function(e,t){var n=t.id,o=t.state;e.reports[n].state=o},addReport:function(e,t){e.reports[t.id]=t}},actions:{openUserReportingModal:function(e,t){var n=e.rootState,o=e.commit,r=t.userId,i=t.statusIds,s=void 0===i?[]:i,a=s.map((function(e){return n.statuses.allStatusesObject[e]})),c=s,l=a.concat(yn()(n.statuses.allStatuses,(function(e){return e.user.id===r&&!c.includes(e.id)})));o("openUserReportingModal",{userId:r,statuses:l,preTickedIds:c})},closeUserReportingModal:function(e){(0,e.commit)("closeUserReportingModal")},setReportState:function(e,t){var n=e.commit,o=e.dispatch,r=e.rootState,i=t.id,s=t.state,a=r.reports.reports[i].state;n("setReportState",{id:i,state:s}),r.api.backendInteractor.setReportState({id:i,state:s}).catch((function(e){console.error("Failed to set report state",e),o("pushGlobalNotice",{level:"error",messageKey:"general.generic_error_message",messageArgs:[e.message],timeout:5e3}),n("setReportState",{id:i,state:a})}))},addReport:function(e,t){(0,e.commit)("addReport",t)}}};const kn=_n;const Sn={state:{trackedPolls:{},pollsObject:{}},mutations:{mergeOrAddPoll:function(e,t){var n=e.pollsObject[t.id];t.expired=Date.now()>Date.parse(t.expires_at),e.pollsObject[t.id]=n?$()(n,t):t},trackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n+1:1},untrackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n-1:0}},actions:{mergeOrAddPoll:function(e,t){(0,e.commit)("mergeOrAddPoll",t)},updateTrackedPoll:function(e,t){var n=e.rootState,o=e.dispatch,r=e.commit;n.api.backendInteractor.fetchPoll({pollId:t}).then((function(e){setTimeout((function(){n.polls.trackedPolls[t]&&o("updateTrackedPoll",t)}),3e4),r("mergeOrAddPoll",e)}))},trackPoll:function(e,t){var n=e.rootState,o=e.commit,r=e.dispatch;n.polls.trackedPolls[t]||setTimeout((function(){return r("updateTrackedPoll",t)}),3e4),o("trackPoll",t)},untrackPoll:function(e,t){(0,e.commit)("untrackPoll",t)},votePoll:function(e,t){var n=e.rootState,o=e.commit,r=(t.id,t.pollId),i=t.choices;return n.api.backendInteractor.vote({pollId:r,choices:i}).then((function(e){return o("mergeOrAddPoll",e),e}))}}},jn={state:{params:null,modalActivated:!1},mutations:{openPostStatusModal:function(e,t){e.params=t,e.modalActivated=!0},closePostStatusModal:function(e){e.modalActivated=!1}},actions:{openPostStatusModal:function(e,t){(0,e.commit)("openPostStatusModal",t)},closePostStatusModal:function(e){(0,e.commit)("closePostStatusModal")}}},Cn={state:{params:null,modalActivated:!1},mutations:{openEditStatusModal:function(e,t){e.params=t,e.modalActivated=!0},closeEditStatusModal:function(e){e.modalActivated=!1}},actions:{openEditStatusModal:function(e,t){(0,e.commit)("openEditStatusModal",t)},closeEditStatusModal:function(e){(0,e.commit)("closeEditStatusModal")}}},On={state:{params:{},modalActivated:!1},mutations:{openStatusHistoryModal:function(e,t){e.params=t,e.modalActivated=!0},closeStatusHistoryModal:function(e){e.modalActivated=!1}},actions:{openStatusHistoryModal:function(e,t){(0,e.commit)("openStatusHistoryModal",t)},closeStatusHistoryModal:function(e){(0,e.commit)("closeStatusHistoryModal")}}};var Pn=n(73303),zn=n.n(Pn),Dn=n(75472),In=n.n(Dn),xn=n(73955),Tn=n.n(xn),$n=n(89734),Un=n.n($n);function Mn(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return An(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?An(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function An(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var Ln={add:function(e,t){var n=t.messages,o=t.updateMaxId,r=void 0===o||o;if(e)for(var i=function(){var t=n[s];if(t.chat_id!==e.chatId)return{v:void 0};if(t.fakeId){var o=e.idIndex[t.fakeId];if(o)return e.idIndex[t.id]&&(delete e.idIndex[t.id],e.messages=e.messages.filter((function(e){return e.id!==t.id}))),Object.assign(o,t,{error:!1}),delete o.fakeId,e.idIndex[o.id]=o,delete e.idIndex[t.fakeId],{v:void 0}}(!e.minId||!t.pending&&t.id<e.minId)&&(e.minId=t.id),(!e.maxId||t.id>e.maxId)&&r&&(e.maxId=t.id),e.idIndex[t.id]||function(e,t){if(t.idempotency_key)return e.idempotencyKeyIndex[t.idempotency_key]}(e,t)||(e.lastSeenMessageId<t.id&&e.newMessageCount++,e.idIndex[t.id]=t,e.messages.push(e.idIndex[t.id]),e.idempotencyKeyIndex[t.idempotency_key]=!0)},s=0;s<n.length;s++){var a=i();if("object"===(0,de.Z)(a))return a.v}},empty:function(e){return{idIndex:{},idempotencyKeyIndex:{},messages:[],newMessageCount:0,lastSeenMessageId:"0",chatId:e,minId:void 0,maxId:void 0}},getView:function(e){if(!e)return[];var t,n=[],o=In()(e.messages,["pending","id"],["asc","asc"]),r=o[0],i=o[o.length-1];if(r){var s=new Date(r.created_at);s.setHours(0,0,0,0),n.push({type:"date",date:s,id:s.getTime().toString()})}for(var a=!1,c=0;c<o.length;c++){var l=o[c],u=o[c+1],d=new Date(l.created_at);d.setHours(0,0,0,0),i&&i.date<d&&(n.push({type:"date",date:d,id:d.getTime().toString()}),i.isTail=!0,t=void 0,a=!0);var p={type:"message",data:l,date:d,id:l.id,messageChainId:t};(u&&u.account_id)!==l.account_id&&(p.isTail=!0,t=void 0),((i&&i.data&&i.data.account_id)!==l.account_id||a)&&(t=Tn()(),p.isHead=!0,p.messageChainId=t),n.push(p),i=p,a=!1}return n},deleteMessage:function(e,t){if(e){if(e.messages=e.messages.filter((function(e){return e.id!==t})),delete e.idIndex[t],e.maxId===t){var n=L()(e.messages,"id");e.maxId=n.id}if(e.minId===t){var o=M()(e.messages,"id");e.minId=o.id}}},cullOlderMessages:function(e){var t=e.messages.length,n=t-50;if(!(t<=50)){e.messages=Un()(e.messages,["id"]),e.minId=e.messages[n].id;var o,r=Mn(e.messages);try{for(r.s();!(o=r.n()).done;){var i=o.value;i.id<e.minId&&(delete e.idIndex[i.id],delete e.idempotencyKeyIndex[i.idempotency_key])}}catch(e){r.e(e)}finally{r.f()}e.messages=e.messages.slice(n,t)}},resetNewMessageCount:function(e){e&&(e.newMessageCount=0,e.lastSeenMessageId=e.maxId)},clear:function(e){var t,n=[],o=Mn(e.messages);try{for(o.s();!(t=o.n()).done;){var r=t.value;r.error?n.push(r.id):(delete e.idIndex[r.id],delete e.idempotencyKeyIndex[r.idempotency_key])}}catch(e){o.e(e)}finally{o.f()}e.messages=e.messages.filter((function(e){return n.includes(e.id)})),e.newMessageCount=0,e.lastSeenMessageId="0",e.minId=void 0,e.maxId=void 0},handleMessageError:function(e,t,n){if(e){var o=e.idIndex[t];if(o&&(o.error=!0,o.pending=!1,!n)){var r=In()(e.messages,["pending","id"],["asc","desc"])[0];if(r){var i=o.id;o.id="".concat(r.id,"-").concat((new Date).getTime()),e.idIndex[o.id]=o,delete e.idIndex[i]}}}}};const En=Ln;var Fn=n(27742);function Rn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function qn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Rn(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Rn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Nn={chatList:{data:[],idStore:{}},chatListFetcher:null,openedChats:(0,Ft.qj)({}),openedChatMessageServices:(0,Ft.qj)({}),fetcher:void 0,currentChatId:null,lastReadMessageId:null},Zn=function(e,t){return F()(e.chatList.data,{id:t})},Wn={state:qn({},Nn),getters:{currentChat:function(e){return e.openedChats[e.currentChatId]},currentChatMessageService:function(e){return e.openedChatMessageServices[e.currentChatId]},findOpenedChatByRecipientId:function(e){return function(t){return F()(e.openedChats,(function(e){return e.account.id===t}))}},sortedChatList:function(e){return In()(e.chatList.data,["updated_at"],["desc"])},unreadChatCount:function(e){return zn()(e.chatList.data,"unread")}},actions:{startFetchingChats:function(e){var t=e.dispatch,n=e.commit,o=function(){return t("fetchChats",{latest:!0})};o(),n("setChatListFetcher",{fetcher:function(){return(0,je.F)(o,5e3)}})},stopFetchingChats:function(e){(0,e.commit)("setChatListFetcher",{fetcher:void 0})},fetchChats:function(e){var t=e.dispatch,n=e.rootState;return e.commit,n.api.backendInteractor.chats().then((function(e){var n=e.chats;return t("addNewChats",{chats:n}),n}))},addNewChats:function(e,t){var n=t.chats;(0,e.commit)("addNewChats",{dispatch:e.dispatch,chats:n,rootGetters:e.rootGetters,newChatMessageSideEffects:function(t){dt(e,t)}})},updateChat:function(e,t){(0,e.commit)("updateChat",{chat:t.chat})},startFetchingCurrentChat:function(e,t){e.commit,(0,e.dispatch)("setCurrentChatFetcher",{fetcher:t.fetcher})},setCurrentChatFetcher:function(e,t){e.rootState,(0,e.commit)("setCurrentChatFetcher",{fetcher:t.fetcher})},addOpenedChat:function(e,t){e.rootState;var n=e.commit,o=e.dispatch,r=t.chat;n("addOpenedChat",{dispatch:o,chat:(0,Fn._J)(r)}),o("addNewUsers",[r.account])},addChatMessages:function(e,t){var n=e.commit;n("addChatMessages",qn({commit:n},t))},resetChatNewMessageCount:function(e,t){(0,e.commit)("resetChatNewMessageCount",t)},clearCurrentChat:function(e,t){e.rootState;var n=e.commit;e.dispatch,n("setCurrentChatId",{chatId:void 0}),n("setCurrentChatFetcher",{fetcher:void 0})},readChat:function(e,t){var n=e.rootState,o=e.commit,r=e.dispatch,i=t.id,s=t.lastReadId,a=n.chats.lastReadMessageId!==s;r("resetChatNewMessageCount"),o("readChat",{id:i,lastReadId:s}),a&&n.api.backendInteractor.readChat({id:i,lastReadId:s})},deleteChatMessage:function(e,t){var n=e.rootState,o=e.commit;n.api.backendInteractor.deleteChatMessage(t),o("deleteChatMessage",qn({commit:o},t))},resetChats:function(e){var t=e.commit;(0,e.dispatch)("clearCurrentChat"),t("resetChats",{commit:t})},clearOpenedChats:function(e){e.rootState;var t=e.commit;e.dispatch,e.rootGetters,t("clearOpenedChats",{commit:t})},handleMessageError:function(e,t){var n=e.commit;n("handleMessageError",qn({commit:n},t))},cullOlderMessages:function(e,t){(0,e.commit)("cullOlderMessages",t)}},mutations:{setChatListFetcher:function(e,t){t.commit;var n=t.fetcher,o=e.chatListFetcher;o&&o.stop(),e.chatListFetcher=n&&n()},setCurrentChatFetcher:function(e,t){var n=t.fetcher,o=e.fetcher;o&&o.stop(),e.fetcher=n&&n()},addOpenedChat:function(e,t){t._dispatch;var n=t.chat;e.currentChatId=n.id,e.openedChats[n.id]=n,e.openedChatMessageServices[n.id]||(e.openedChatMessageServices[n.id]=En.empty(n.id))},setCurrentChatId:function(e,t){var n=t.chatId;e.currentChatId=n},addNewChats:function(e,t){var n=t.chats,o=t.newChatMessageSideEffects;n.forEach((function(t){var n=Zn(e,t.id);if(n){var r=(n.lastMessage&&n.lastMessage.id)!==(t.lastMessage&&t.lastMessage.id);n.lastMessage=t.lastMessage,n.unread=t.unread,n.updated_at=t.updated_at,r&&n.unread&&o(t)}else e.chatList.data.push(t),e.chatList.idStore[t.id]=t}))},updateChat:function(e,t){t._dispatch;var n=t.chat,o=(t._rootGetters,Zn(e,n.id));o&&(o.lastMessage=n.lastMessage,o.unread=n.unread,o.updated_at=n.updated_at),o||e.chatList.data.unshift(n),e.chatList.idStore[n.id]=n},deleteChat:function(e,t){t._dispatch;var n=t.id;t._rootGetters,e.chats.data=e.chats.data.filter((function(e){return e.last_status.id!==n})),e.chats.idStore=C()(e.chats.idStore,(function(e){return e.last_status.id===n}))},resetChats:function(e,t){var n=t.commit;for(var o in e.chatList={data:[],idStore:{}},e.currentChatId=null,n("setChatListFetcher",{fetcher:void 0}),e.openedChats)En.clear(e.openedChatMessageServices[o]),delete e.openedChats[o],delete e.openedChatMessageServices[o]},setChatsLoading:function(e,t){var n=t.value;e.chats.loading=n},addChatMessages:function(e,t){var n=t.chatId,o=t.messages,r=t.updateMaxId,i=e.openedChatMessageServices[n];i&&En.add(i,{messages:o.map(Fn.UB),updateMaxId:r})},deleteChatMessage:function(e,t){var n=t.chatId,o=t.messageId,r=e.openedChatMessageServices[n];r&&En.deleteMessage(r,o)},resetChatNewMessageCount:function(e,t){var n=e.openedChatMessageServices[e.currentChatId];En.resetNewMessageCount(n)},clearOpenedChats:function(e){var t=e.currentChatId;for(var n in e.openedChats)t!==n&&(En.clear(e.openedChatMessageServices[n]),delete e.openedChats[n],delete e.openedChatMessageServices[n])},readChat:function(e,t){var n=t.id,o=t.lastReadId;e.lastReadMessageId=o;var r=Zn(e,n);r&&(r.unread=0)},handleMessageError:function(e,t){var n=t.chatId,o=t.fakeId,r=t.isRetry,i=e.openedChatMessageServices[n];En.handleMessageError(i,o,r)},cullOlderMessages:function(e,t){En.cullOlderMessages(e.openedChatMessageServices[t])}}};const Bn=Wn;const Hn={state:{announcements:[],supportsAnnouncements:!0,fetchAnnouncementsTimer:void 0},mutations:{setAnnouncements:function(e,t){e.announcements=t},setAnnouncementRead:function(e,t){var n=t.id,o=t.read,r=e.announcements.findIndex((function(e){return e.id===n}));r<0||(e.announcements[r].read=o)},setFetchAnnouncementsTimer:function(e,t){e.fetchAnnouncementsTimer=t},setSupportsAnnouncements:function(e,t){e.supportsAnnouncements=t}},getters:{unreadAnnouncementCount:function(e,t,n){return n.users.currentUser?e.announcements.filter((function(e){return!(e.inactive||e.read)})).length:0}},actions:{fetchAnnouncements:function(e){if(!e.state.supportsAnnouncements)return Promise.resolve();var t=e.rootState.users.currentUser,n=t&&t.privileges.includes("announcements_manage_announcements"),r=function(){var t=(0,o.Z)(i().mark((function t(){var o,r,s,a;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n){t.next=2;break}return t.abrupt("return",e.rootState.api.backendInteractor.fetchAnnouncements());case 2:return t.next=4,e.rootState.api.backendInteractor.adminFetchAnnouncements();case 4:return o=t.sent,t.next=7,e.rootState.api.backendInteractor.fetchAnnouncements();case 7:return r=t.sent,s=r.reduce((function(e,t){return e[t.id]=t,e}),{}),a=function(e){return s[e.id]},o.forEach((function(e){var t=a(e);t?e.read=t.read:e.inactive=!0})),t.abrupt("return",o);case 12:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();return r().then((function(t){e.commit("setAnnouncements",t)})).catch((function(t){if(!t||404!==t.statusCode)throw t;e.commit("setSupportsAnnouncements",!1)}))},markAnnouncementAsRead:function(e,t){return e.rootState.api.backendInteractor.dismissAnnouncement({id:t}).then((function(){e.commit("setAnnouncementRead",{id:t,read:!0})}))},startFetchingAnnouncements:function(e){if(!e.state.fetchAnnouncementsTimer){var t=setInterval((function(){return e.dispatch("fetchAnnouncements")}),3e5);return e.commit("setFetchAnnouncementsTimer",t),e.dispatch("fetchAnnouncements")}},stopFetchingAnnouncements:function(e){var t=e.state.fetchAnnouncementsTimer;e.commit("setFetchAnnouncementsTimer",void 0),clearInterval(t)},postAnnouncement:function(e,t){var n=t.content,o=t.startsAt,r=t.endsAt,i=t.allDay;return e.rootState.api.backendInteractor.postAnnouncement({content:n,startsAt:o,endsAt:r,allDay:i}).then((function(){return e.dispatch("fetchAnnouncements")}))},editAnnouncement:function(e,t){var n=t.id,o=t.content,r=t.startsAt,i=t.endsAt,s=t.allDay;return e.rootState.api.backendInteractor.editAnnouncement({id:n,content:o,startsAt:r,endsAt:i,allDay:s}).then((function(){return e.dispatch("fetchAnnouncements")}))},deleteAnnouncement:function(e,t){return e.rootState.api.backendInteractor.deleteAnnouncement({id:t}).then((function(){return e.dispatch("fetchAnnouncements")}))}}};var Vn=n(90308),Kn=n(72378),Gn=n.n(Kn),Yn=n(69483),Jn=!1,Qn=function(e,t){return 0===t.length?e:t.reduce((function(t,n){return Ut()(t,n,Tt()(e,n)),t}),{})},Xn=["markNotificationsAsSeen","clearCurrentUser","setCurrentUser","setServerSideStorage","setHighlight","setOption","setClientData","setToken","clearToken"],eo=n.n(Yn)();function to(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.key,n=void 0===t?"vuex-lz":t,o=e.paths,r=void 0===o?[]:o,i=e.getState,s=void 0===i?function(e,t){return t.getItem(e)}:i,a=e.setState,c=void 0===a?function(e,t,n){return Jn?n.setItem(e,t):(console.log("waiting for old state to be loaded..."),Promise.resolve())}:a,l=e.reducer,u=void 0===l?Qn:l,d=e.storage,p=void 0===d?eo:d,m=e.subscriber,h=void 0===m?function(e){return function(t){return e.subscribe(t)}}:m;return s(n,p).then((function(e){return function(t){try{if(null!==e&&"object"===(0,de.Z)(e)){var o=e.users||{};o.usersObject={};var i=o.users||[];Z()(i,(function(e){o.usersObject[e.id]=e})),e.users=o,t.replaceState(Gn()({},t.state,e))}Jn=!0}catch(e){console.log("Couldn't load state"),console.error(e),Jn=!0}h(t)((function(e,o){try{Xn.includes(e.type)&&c(n,u(At()(o),r),p).then((function(n){void 0!==n&&("setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{success:n}))}),(function(n){"setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{error:n})}))}catch(e){console.log("Couldn't persist state:"),console.log(e)}}))}}))}const no=function(e){e.subscribe((function(t,n){var o=n.instance.vapidPublicKey,r=n.config.webPushNotifications,i="granted"===n.interface.notificationPermission,s=n.users.currentUser,a="setCurrentUser"===t.type,c="setInstanceOption"===t.type&&"vapidPublicKey"===t.payload.name,l="setNotificationPermission"===t.type&&"granted"===t.payload,u="setOption"===t.type&&"webPushNotifications"===t.payload.name,d="setOption"===t.type&&"notificationVisibility"===t.payload.name;if(a||c||l||u||d){if(s&&o&&i&&r)return e.dispatch("registerPushNotifications");if(u&&!r)return e.dispatch("unregisterPushNotifications")}}))};var oo=n(72617),ro=n(49963),io=n(28339),so=n(20425),ao=n.n(so),co=n(42570),lo=n(57810),uo=n(66252),po=n(3577),mo=(0,uo._)("div",{id:"app_bg_wrapper",class:"app-bg-wrapper"},null,-1),ho=(0,uo._)("div",{class:"underlay"},null,-1),fo=(0,uo._)("div",{id:"notifs-sidebar"},null,-1),go={key:0,class:"login-hint panel panel-default"},vo={class:"user-panel"},wo={key:"user-panel-signed",class:"panel panel-default signed-in"},bo={class:"login panel panel-default"},yo={class:"panel-heading"},_o={class:"panel-body"},ko={class:"form-group"},So={for:"username"},jo=["disabled","placeholder"],Co={class:"form-group"},Oo={for:"password"},Po=["disabled"],zo={class:"form-group"},Do={key:1,class:"form-group"},Io={class:"form-group"},xo={class:"login-bottom"},To=["disabled"],$o={key:0,class:"form-group"},Uo={class:"alert error"};function Mo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ao(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Mo(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Mo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.NBC);const Lo={data:function(){return{user:{},error:!1}},computed:Ao(Ao({isPasswordAuth:function(){return this.requiredPassword},isTokenAuth:function(){return this.requiredToken}},(0,s.rn)({registrationOpen:function(e){return e.instance.registrationOpen},instance:function(e){return e.instance},loggingIn:function(e){return e.users.loggingIn},oauth:function(e){return e.oauth}})),(0,s.Se)("authFlow",["requiredPassword","requiredToken","requiredMFA"])),methods:Ao(Ao(Ao({},(0,s.OI)("authFlow",["requireMFA"])),(0,s.nv)({login:"authFlow/login"})),{},{submit:function(){this.isTokenAuth?this.submitToken():this.submitPassword()},submitToken:function(){var e=this.oauth,t={clientId:e.clientId,clientSecret:e.clientSecret,instance:this.instance.server,commit:this.$store.commit};Ze.getOrCreateApp(t).then((function(e){Ze.login(Ao(Ao({},e),t))}))},submitPassword:function(){var e=this,t={clientId:this.oauth.clientId,oauth:this.oauth,instance:this.instance.server,commit:this.$store.commit};this.error=!1,Ze.getOrCreateApp(t).then((function(n){Ze.getTokenWithCredentials(Ao(Ao({},n),{},{instance:t.instance,username:e.user.username,password:e.user.password})).then((function(t){t.error?"mfa_required"===t.error?e.requireMFA({settings:t}):"password_reset_required"===t.identifier?e.$router.push({name:"password-reset",params:{passwordResetRequested:!0}}):(e.error=t.error,e.focusOnPasswordInput()):e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}))},clearError:function(){this.error=!1},focusOnPasswordInput:function(){var e=this.$refs.passwordInput;e.focus(),e.setSelectionRange(0,e.value.length)}})};var Eo=n(83744);const Fo=(0,Eo.Z)(Lo,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("router-link"),a=(0,uo.up)("FAIcon");return(0,uo.wg)(),(0,uo.iD)("div",bo,[(0,uo._)("div",yo,(0,po.zw)(e.$t("login.login")),1),(0,uo._)("div",_o,[(0,uo._)("form",{class:"login-form",onSubmit:t[2]||(t[2]=(0,ro.iM)((function(){return e.submit&&e.submit.apply(e,arguments)}),["prevent"]))},[e.isPasswordAuth?((0,uo.wg)(),(0,uo.iD)(uo.HY,{key:0},[(0,uo._)("div",ko,[(0,uo._)("label",So,(0,po.zw)(e.$t("login.username")),1),(0,uo.wy)((0,uo._)("input",{id:"username","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.user.username=t}),disabled:e.loggingIn,class:"form-control",placeholder:e.$t("login.placeholder")},null,8,jo),[[ro.nr,e.user.username]])]),(0,uo._)("div",Co,[(0,uo._)("label",Oo,(0,po.zw)(e.$t("login.password")),1),(0,uo.wy)((0,uo._)("input",{id:"password",ref:"passwordInput","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.user.password=t}),disabled:e.loggingIn,class:"form-control",type:"password"},null,8,Po),[[ro.nr,e.user.password]])]),(0,uo._)("div",zo,[(0,uo.Wm)(s,{to:{name:"password-reset"}},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("password_reset.forgot_password")),1)]})),_:1})])],64)):(0,uo.kq)("",!0),e.isTokenAuth?((0,uo.wg)(),(0,uo.iD)("div",Do,[(0,uo._)("p",null,(0,po.zw)(e.$t("login.description")),1)])):(0,uo.kq)("",!0),(0,uo._)("div",Io,[(0,uo._)("div",xo,[(0,uo._)("div",null,[e.registrationOpen?((0,uo.wg)(),(0,uo.j4)(s,{key:0,to:{name:"registration"},class:"register"},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("login.register")),1)]})),_:1})):(0,uo.kq)("",!0)]),(0,uo._)("button",{disabled:e.loggingIn,type:"submit",class:"btn button-default"},(0,po.zw)(e.$t("login.login")),9,To)])])],32)]),e.error?((0,uo.wg)(),(0,uo.iD)("div",$o,[(0,uo._)("div",Uo,[(0,uo.Uk)((0,po.zw)(e.error)+" ",1),(0,uo._)("button",{class:"button-unstyled",onClick:t[3]||(t[3]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,uo.Wm)(a,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):(0,uo.kq)("",!0)])}]]);var Ro={class:"login panel panel-default"},qo={class:"panel-heading"},No={class:"panel-body"},Zo={class:"form-group"},Wo={for:"code"},Bo={class:"form-group"},Ho={class:"login-bottom"},Vo=(0,uo._)("br",null,null,-1),Ko={type:"submit",class:"btn button-default"},Go={key:0,class:"form-group"},Yo={class:"alert error"},Jo={verifyOTPCode:function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r=e.mfaToken,i=e.code,s="".concat(o,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",r),a.append("code",i),a.append("challenge_type","totp"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r=e.mfaToken,i=e.code,s="".concat(o,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",r),a.append("code",i),a.append("challenge_type","recovery"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))}};const Qo=Jo;function Xo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function er(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xo(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xo(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.NBC);const tr={data:function(){return{code:null,error:!1}},computed:er(er({},(0,s.Se)({authSettings:"authFlow/settings"})),(0,s.rn)({instance:"instance",oauth:"oauth"})),methods:er(er(er({},(0,s.OI)("authFlow",["requireTOTP","abortMFA"])),(0,s.nv)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};Qo.verifyRecoveryCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})},nr=(0,Eo.Z)(tr,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon");return(0,uo.wg)(),(0,uo.iD)("div",Ro,[(0,uo._)("div",qo,(0,po.zw)(e.$t("login.heading.recovery")),1),(0,uo._)("div",No,[(0,uo._)("form",{class:"login-form",onSubmit:t[3]||(t[3]=(0,ro.iM)((function(){return e.submit&&e.submit.apply(e,arguments)}),["prevent"]))},[(0,uo._)("div",Zo,[(0,uo._)("label",Wo,(0,po.zw)(e.$t("login.recovery_code")),1),(0,uo.wy)((0,uo._)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.code=t}),class:"form-control"},null,512),[[ro.nr,e.code]])]),(0,uo._)("div",Bo,[(0,uo._)("div",Ho,[(0,uo._)("div",null,[(0,uo._)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=(0,ro.iM)((function(){return e.requireTOTP&&e.requireTOTP.apply(e,arguments)}),["prevent"]))},(0,po.zw)(e.$t("login.enter_two_factor_code")),1),Vo,(0,uo._)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=(0,ro.iM)((function(){return e.abortMFA&&e.abortMFA.apply(e,arguments)}),["prevent"]))},(0,po.zw)(e.$t("general.cancel")),1)]),(0,uo._)("button",Ko,(0,po.zw)(e.$t("general.verify")),1)])])],32)]),e.error?((0,uo.wg)(),(0,uo.iD)("div",Go,[(0,uo._)("div",Yo,[(0,uo.Uk)((0,po.zw)(e.error)+" ",1),(0,uo._)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,uo.Wm)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):(0,uo.kq)("",!0)])}]]);var or={class:"login panel panel-default"},rr={class:"panel-heading"},ir={class:"panel-body"},sr={class:"form-group"},ar={for:"code"},cr={class:"form-group"},lr={class:"login-bottom"},ur=(0,uo._)("br",null,null,-1),dr={type:"submit",class:"btn button-default"},pr={key:0,class:"form-group"},mr={class:"alert error"};function hr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function fr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?hr(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):hr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.NBC);const gr={data:function(){return{code:null,error:!1}},computed:fr(fr({},(0,s.Se)({authSettings:"authFlow/settings"})),(0,s.rn)({instance:"instance",oauth:"oauth"})),methods:fr(fr(fr({},(0,s.OI)("authFlow",["requireRecovery","abortMFA"])),(0,s.nv)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};Qo.verifyOTPCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})},vr=(0,Eo.Z)(gr,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon");return(0,uo.wg)(),(0,uo.iD)("div",or,[(0,uo._)("div",rr,(0,po.zw)(e.$t("login.heading.totp")),1),(0,uo._)("div",ir,[(0,uo._)("form",{class:"login-form",onSubmit:t[3]||(t[3]=(0,ro.iM)((function(){return e.submit&&e.submit.apply(e,arguments)}),["prevent"]))},[(0,uo._)("div",sr,[(0,uo._)("label",ar,(0,po.zw)(e.$t("login.authentication_code")),1),(0,uo.wy)((0,uo._)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.code=t}),class:"form-control"},null,512),[[ro.nr,e.code]])]),(0,uo._)("div",cr,[(0,uo._)("div",lr,[(0,uo._)("div",null,[(0,uo._)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=(0,ro.iM)((function(){return e.requireRecovery&&e.requireRecovery.apply(e,arguments)}),["prevent"]))},(0,po.zw)(e.$t("login.enter_recovery_code")),1),ur,(0,uo._)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=(0,ro.iM)((function(){return e.abortMFA&&e.abortMFA.apply(e,arguments)}),["prevent"]))},(0,po.zw)(e.$t("general.cancel")),1)]),(0,uo._)("button",dr,(0,po.zw)(e.$t("general.verify")),1)])])],32)]),e.error?((0,uo.wg)(),(0,uo.iD)("div",pr,[(0,uo._)("div",mr,[(0,uo.Uk)((0,po.zw)(e.error)+" ",1),(0,uo._)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,uo.Wm)(s,{size:"lg",class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):(0,uo.kq)("",!0)])}]]);function wr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const br={name:"AuthForm",render:function(){return(0,uo.h)((0,uo.up)(this.authForm))},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?wr(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({authForm:function(){return this.requiredTOTP?"MFATOTPForm":this.requiredRecovery?"MFARecoveryForm":"LoginForm"}},(0,s.Se)("authFlow",["requiredTOTP","requiredRecovery"])),components:{MFARecoveryForm:nr,MFATOTPForm:vr,LoginForm:Fo}};var yr=n(58508),_r=n(20392);function kr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const Sr={computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?kr(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({signedIn:function(){return this.user}},(0,s.rn)({user:function(e){return e.users.currentUser}})),components:{AuthForm:br,PostStatusForm:yr.Z,UserCard:_r.Z}},jr=(0,Eo.Z)(Sr,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("UserCard"),a=(0,uo.up)("PostStatusForm"),c=(0,uo.up)("auth-form");return(0,uo.wg)(),(0,uo.iD)("aside",vo,[e.signedIn?((0,uo.wg)(),(0,uo.iD)("div",wo,[(0,uo.Wm)(s,{"user-id":e.user.id,"hide-bio":!0,rounded:"top"},null,8,["user-id"]),(0,uo.Wm)(a)])):((0,uo.wg)(),(0,uo.j4)(c,{key:"user-panel"}))])}]]);var Cr={class:"NavPanel"},Or={class:"panel panel-default"},Pr={key:0,class:"panel-heading nav-panel-heading"},zr=(0,uo._)("div",{class:"spacer"},null,-1),Dr={key:1,class:"panel-body"},Ir={class:"timelines-background"},xr={class:"timelines"},Tr={class:"timelines-background"},$r={key:0,class:"icon iconLetter fa-scale-110 menu-icon"},Ur={class:"label"},Mr={key:0,class:"badge badge-notification"},Ar=["title","aria-pressed"],Lr=new Set(["bookmarks","dms","interactions","notifications","chat","chats","user-profile"]),Er={home:{route:"friends",icon:"home",label:"nav.home_timeline",criteria:["!private"]},public:{route:"public-timeline",anon:!0,icon:"users",label:"nav.public_tl",criteria:["!private"]},twkn:{route:"public-external-timeline",anon:!0,icon:"globe",label:"nav.twkn",criteria:["!private","federating"]},bookmarks:{route:"bookmarks",icon:"bookmark",label:"nav.bookmarks"},favorites:{routeObject:{name:"user-profile",query:{tab:"favorites"}},icon:"star",label:"user_card.favorites"},dms:{route:"dms",icon:"envelope",label:"nav.dms"}},Fr={interactions:{route:"interactions",icon:"bell",label:"nav.interactions"},chats:{route:"chats",icon:"comments",label:"nav.chats",badgeGetter:"unreadChatCount",criteria:["chats"]},friendRequests:{route:"friend-requests",icon:"user-plus",label:"nav.friend_requests",criteria:["lockedUser"],badgeGetter:"followRequestCount"},about:{route:"about",anon:!0,icon:"info-circle",label:"nav.about"},announcements:{route:"announcements",icon:"bullhorn",label:"nav.announcements",badgeGetter:"unreadAnnouncementCount",criteria:["announcements"]}};const Rr={props:["to"]},qr=(0,Eo.Z)(Rr,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("router-link");return n.to?((0,uo.wg)(),(0,uo.j4)(s,{key:0,to:n.to,custom:""},{default:(0,uo.w5)((function(t){return[(0,uo.WI)(e.$slots,"default",(0,po.vs)((0,uo.F4)(t)))]})),_:3},8,["to"])):(0,uo.WI)(e.$slots,"default",(0,po.vs)((0,uo.dG)({key:1},{})))}]]);function Nr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}qt.vI.add(Nt.RP7);const Zr={props:["item","showPin"],components:{OptionalRouterLink:qr},methods:{isPinned:function(e){return this.pinnedItems.has(e)},togglePin:function(e){this.isPinned(e)?this.$store.commit("removeCollectionPreference",{path:"collections.pinnedNavItems",value:e}):this.$store.commit("addCollectionPreference",{path:"collections.pinnedNavItems",value:e}),this.$store.dispatch("pushServerSideStorage")}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Nr(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({routeTo:function(){return this.item.route||this.item.routeObject?(e=this.item.routeObject?this.item.routeObject:{name:this.item.anon||this.currentUser?this.item.route:this.item.anonRoute},Lr.has(e.name)&&(e.params={username:this.currentUser.screen_name,name:this.currentUser.screen_name}),e):null;var e},getters:function(){return this.$store.getters}},(0,s.rn)({currentUser:function(e){return e.users.currentUser},pinnedItems:function(e){return new Set(e.serverSideStorage.prefsStorage.collections.pinnedNavItems)}}))},Wr=(0,Eo.Z)(Zr,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon"),a=(0,uo.up)("OptionalRouterLink");return(0,uo.wg)(),(0,uo.j4)(a,{ass:"ass",to:e.routeTo},{default:(0,uo.w5)((function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=n.isActive,r=n.href,i=n.navigate;return[(0,uo._)("li",(0,uo.dG)({class:["NavigationEntry menu-item",{"-active":o}]},e.$attrs),[((0,uo.wg)(),(0,uo.j4)((0,uo.LL)(e.routeTo?"a":"button"),{class:"main-link button-unstyled",href:r,onClick:i},{default:(0,uo.w5)((function(){return[(0,uo._)("span",null,[e.item.icon?((0,uo.wg)(),(0,uo.j4)(s,{key:0,"fixed-width":"",class:"fa-scale-110 menu-icon",icon:e.item.icon},null,8,["icon"])):(0,uo.kq)("",!0)]),e.item.iconLetter?((0,uo.wg)(),(0,uo.iD)("span",$r,(0,po.zw)(e.item.iconLetter),1)):(0,uo.kq)("",!0),(0,uo._)("span",Ur,(0,po.zw)(e.item.labelRaw||e.$t(e.item.label)),1)]})),_:2},1032,["href","onClick"])),(0,uo.WI)(e.$slots,"default"),e.item.badgeGetter&&e.getters[e.item.badgeGetter]?((0,uo.wg)(),(0,uo.iD)("div",Mr,(0,po.zw)(e.getters[e.item.badgeGetter]),1)):(0,uo.kq)("",!0),e.showPin&&e.currentUser?((0,uo.wg)(),(0,uo.iD)("button",{key:1,type:"button",class:"button-unstyled extra-button",title:e.$t(e.isPinned?"general.unpin":"general.pin"),"aria-pressed":!!e.isPinned,onClick:t[0]||(t[0]=(0,ro.iM)((function(t){return e.togglePin(e.item.name)}),["stop","prevent"]))},[e.showPin&&e.currentUser?((0,uo.wg)(),(0,uo.j4)(s,{key:0,"fixed-width":"",class:(0,po.C_)(["fa-scale-110",{veryfaint:!e.isPinned(e.item.name)}]),transform:e.isPinned(e.item.name)?"":"rotate-45",icon:"thumbtack"},null,8,["class","transform"])):(0,uo.kq)("",!0)],8,Ar)):(0,uo.kq)("",!0)],16)]})),_:3},8,["to"])}]]);var Br=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,n=t.hasChats,o=t.hasAnnouncements,r=t.isFederating,i=t.isPrivate,s=t.currentUser;return e.filter((function(e){var t=e.criteria,a=e.anon,c=e.anonRoute,l=new Set(t||[]);return!(!r&&l.has("federating")||!s&&i&&l.has("!private")||!(s||a||c)||!(s&&s.locked||!l.has("lockedUser"))||!n&&l.has("chats")||!o&&l.has("announcements"))}))},Hr=function(e){return e.lists.allLists.map((function(e){return{name:"list-"+e.id,routeObject:{name:"lists-timeline",params:{id:e.id}},labelRaw:e.title,iconLetter:e.title[0]}}))};function Vr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}var Kr={props:["showPin"],components:{NavigationEntry:Wr},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vr(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},(0,s.rn)({lists:Hr,currentUser:function(e){return e.users.currentUser},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating}}))};const Gr=Kr,Yr=(0,Eo.Z)(Gr,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("NavigationEntry");return(0,uo.wg)(),(0,uo.iD)("ul",null,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.lists,(function(t){return(0,uo.wg)(),(0,uo.j4)(s,{key:t.name,"show-pin":e.showPin,item:t},null,8,["show-pin","item"])})),128))])}]]);var Jr={class:"NavigationPins"},Qr={key:1,class:"iconLetter fa-scale-110 fa-old-padding"},Xr={key:2,class:"alert-dot"};function ei(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ti(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ei(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ei(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.FVb,Nt.g4A,Nt.xVw,Nt.FU$,Nt.lXL,Nt.qmU,Nt.sqG,Nt.aC2,Nt.Zrf);const ni={props:["limit"],methods:{getRouteTo:function(e){if(e.routeObject)return e.routeObject;var t={name:e.anon||this.currentUser?e.route:e.anonRoute};return Lr.has(t.name)&&(t.params={username:this.currentUser.screen_name}),t}},computed:ti(ti({getters:function(){return this.$store.getters}},(0,s.rn)({lists:Hr,currentUser:function(e){return e.users.currentUser},followRequestCount:function(e){return e.api.followRequests.length},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating},pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable},pinnedItems:function(e){return new Set(e.serverSideStorage.prefsStorage.collections.pinnedNavItems)}})),{},{pinnedList:function(){var e=this;return this.currentUser?Br([].concat((0,u.Z)(Object.entries(ti({},Er)).filter((function(t){var n=(0,l.Z)(t,1)[0];return e.pinnedItems.has(n)})).map((function(e){var t=(0,l.Z)(e,2),n=t[0];return ti(ti({},t[1]),{},{name:n})}))),(0,u.Z)(this.lists.filter((function(t){return e.pinnedItems.has(t.name)}))),(0,u.Z)(Object.entries(ti({},Fr)).filter((function(t){var n=(0,l.Z)(t,1)[0];return e.pinnedItems.has(n)})).map((function(e){var t=(0,l.Z)(e,2),n=t[0];return ti(ti({},t[1]),{},{name:n})})))),{hasChats:this.pleromaChatMessagesAvailable,isFederating:this.federating,isPrivate:this.privateMode,currentUser:this.currentUser}).slice(0,this.limit):Br([ti(ti({},Er.public),{},{name:"public"}),ti(ti({},Er.twkn),{},{name:"twkn"}),ti(ti({},Fr.about),{},{name:"about"})],{hasChats:this.pleromaChatMessagesAvailable,isFederating:this.federating,isPrivate:this.privateMode,currentUser:this.currentUser})}})},oi=(0,Eo.Z)(ni,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon"),a=(0,uo.up)("router-link");return(0,uo.wg)(),(0,uo.iD)("span",Jr,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.pinnedList,(function(t){return(0,uo.wg)(),(0,uo.j4)(a,{key:t.name,class:"pinned-item",to:e.getRouteTo(t),title:t.labelRaw||e.$t(t.label)},{default:(0,uo.w5)((function(){return[t.icon?((0,uo.wg)(),(0,uo.j4)(s,{key:0,"fixed-width":"",icon:t.icon},null,8,["icon"])):(0,uo.kq)("",!0),t.iconLetter?((0,uo.wg)(),(0,uo.iD)("span",Qr,(0,po.zw)(t.iconLetter),1)):(0,uo.kq)("",!0),t.badgeGetter&&e.getters[t.badgeGetter]?((0,uo.wg)(),(0,uo.iD)("div",Xr)):(0,uo.kq)("",!0)]})),_:2},1032,["to","title"])})),128))])}]]);var ri=n(90350);function ii(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function si(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ii(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ii(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.FVb,Nt.g4A,Nt.xVw,Nt.FU$,Nt.ptq,Nt.mTx,Nt.lXL,Nt.qmU,Nt.sqG,Nt.aC2,Nt.Zrf,Nt.Acd);const ai={props:["forceExpand","forceEditMode"],created:function(){},components:{ListsMenuContent:Yr,NavigationEntry:Wr,NavigationPins:oi,Checkbox:ri.Z},data:function(){return{editMode:!1,showTimelines:!1,showLists:!1,timelinesList:Object.entries(Er).map((function(e){var t=(0,l.Z)(e,2),n=t[0];return si(si({},t[1]),{},{name:n})})),rootList:Object.entries(Fr).map((function(e){var t=(0,l.Z)(e,2),n=t[0];return si(si({},t[1]),{},{name:n})}))}},methods:{toggleTimelines:function(){this.showTimelines=!this.showTimelines},toggleLists:function(){this.showLists=!this.showLists},toggleEditMode:function(){this.editMode=!this.editMode},toggleCollapse:function(){this.$store.commit("setPreference",{path:"simple.collapseNav",value:!this.collapsed}),this.$store.dispatch("pushServerSideStorage")},isPinned:function(e){return this.pinnedItems.has(e)},togglePin:function(e){this.isPinned(e)?this.$store.commit("removeCollectionPreference",{path:"collections.pinnedNavItems",value:e}):this.$store.commit("addCollectionPreference",{path:"collections.pinnedNavItems",value:e}),this.$store.dispatch("pushServerSideStorage")}},computed:si(si({},(0,s.rn)({currentUser:function(e){return e.users.currentUser},followRequestCount:function(e){return e.api.followRequests.length},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating},pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable},supportsAnnouncements:function(e){return e.announcements.supportsAnnouncements},pinnedItems:function(e){return new Set(e.serverSideStorage.prefsStorage.collections.pinnedNavItems)},collapsed:function(e){return e.serverSideStorage.prefsStorage.simple.collapseNav}})),{},{timelinesItems:function(){return Br(Object.entries(si({},Er)).map((function(e){var t=(0,l.Z)(e,2),n=t[0];return si(si({},t[1]),{},{name:n})})),{hasChats:this.pleromaChatMessagesAvailable,hasAnnouncements:this.supportsAnnouncements,isFederating:this.federating,isPrivate:this.privateMode,currentUser:this.currentUser})},rootItems:function(){return Br(Object.entries(si({},Fr)).map((function(e){var t=(0,l.Z)(e,2),n=t[0];return si(si({},t[1]),{},{name:n})})),{hasChats:this.pleromaChatMessagesAvailable,hasAnnouncements:this.supportsAnnouncements,isFederating:this.federating,isPrivate:this.privateMode,currentUser:this.currentUser})}},(0,s.Se)(["unreadChatCount","unreadAnnouncementCount"]))},ci=(0,Eo.Z)(ai,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("NavigationPins"),a=(0,uo.up)("FAIcon"),c=(0,uo.up)("NavigationEntry"),l=(0,uo.up)("router-link"),u=(0,uo.up)("ListsMenuContent");return(0,uo.wg)(),(0,uo.iD)("div",Cr,[(0,uo._)("div",Or,[e.forceExpand?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("div",Pr,[(0,uo.Wm)(s,{limit:6}),zr,(0,uo._)("button",{class:"button-unstyled",onClick:t[0]||(t[0]=function(){return e.toggleCollapse&&e.toggleCollapse.apply(e,arguments)})},[(0,uo.Wm)(a,{class:"navigation-chevron","fixed-width":"",icon:e.collapsed?"chevron-down":"chevron-up"},null,8,["icon"])])])),!e.collapsed||e.forceExpand?((0,uo.wg)(),(0,uo.iD)("ul",Dr,[e.currentUser||!e.privateMode?((0,uo.wg)(),(0,uo.j4)(c,{key:0,"show-pin":!1,item:{icon:"stream",label:"nav.timelines"},"aria-expanded":e.showTimelines?"true":"false",onClick:e.toggleTimelines},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{class:"timelines-chevron","fixed-width":"",icon:e.showTimelines?"chevron-up":"chevron-down"},null,8,["icon"])]})),_:1},8,["item","aria-expanded","onClick"])):(0,uo.kq)("",!0),(0,uo.wy)((0,uo._)("div",Ir,[(0,uo._)("div",xr,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.timelinesItems,(function(t){return(0,uo.wg)(),(0,uo.j4)(c,{key:t.name,"show-pin":e.editMode||e.forceEditMode,item:t},null,8,["show-pin","item"])})),128))])],512),[[ro.F8,e.showTimelines]]),e.currentUser?((0,uo.wg)(),(0,uo.j4)(c,{key:1,"show-pin":!1,item:{icon:"list",label:"nav.lists"},"aria-expanded":e.showLists?"true":"false",onClick:e.toggleLists},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(l,{title:e.$t("lists.manage_lists"),class:"extra-button",to:{name:"lists"},onClick:t[1]||(t[1]=(0,ro.iM)((function(){}),["stop"]))},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{class:"extra-button","fixed-width":"",icon:"wrench"})]})),_:1},8,["title"]),(0,uo.Wm)(a,{class:"timelines-chevron","fixed-width":"",icon:e.showLists?"chevron-up":"chevron-down"},null,8,["icon"])]})),_:1},8,["item","aria-expanded","onClick"])):(0,uo.kq)("",!0),(0,uo.wy)((0,uo._)("div",Tr,[(0,uo.Wm)(u,{"show-pin":e.editMode||e.forceEditMode,class:"timelines"},null,8,["show-pin"])],512),[[ro.F8,e.showLists]]),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.rootItems,(function(t){return(0,uo.wg)(),(0,uo.j4)(c,{key:t.name,"show-pin":e.editMode||e.forceEditMode,item:t},null,8,["show-pin","item"])})),128)),!e.forceEditMode&&e.currentUser?((0,uo.wg)(),(0,uo.j4)(c,{key:2,"show-pin":!1,item:{label:e.editMode?e.$t("nav.edit_finish"):e.$t("nav.edit_pinned"),icon:e.editMode?"check":"wrench"},onClick:e.toggleEditMode},null,8,["item","onClick"])):(0,uo.kq)("",!0)])):(0,uo.kq)("",!0)])])}]]);var li={class:"instance-specific-panel"},ui={class:"panel panel-default"},di={class:"panel-body"},pi=["innerHTML"];const mi={computed:{instanceSpecificPanelContent:function(){return this.$store.state.instance.instanceSpecificPanelContent}}},hi=(0,Eo.Z)(mi,[["render",function(e,t,n,o,r,i){return(0,uo.wg)(),(0,uo.iD)("div",li,[(0,uo._)("div",ui,[(0,uo._)("div",di,[(0,uo._)("div",{innerHTML:e.instanceSpecificPanelContent},null,8,pi)])])])}]]);var fi={class:"features-panel"},gi={class:"panel panel-default base01-background"},vi={class:"panel-heading timeline-heading base02-background base04"},wi={class:"title"},bi={class:"panel-body features-panel"},yi={key:0},_i={key:1},ki={key:2},Si={key:3},ji={key:4},Ci=n(65079);const Oi={computed:{shout:function(){return this.$store.state.instance.shoutAvailable},pleromaChatMessages:function(){return this.$store.state.instance.pleromaChatMessagesAvailable},gopher:function(){return this.$store.state.instance.gopherAvailable},whoToFollow:function(){return this.$store.state.instance.suggestionsEnabled},mediaProxy:function(){return this.$store.state.instance.mediaProxyAvailable},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},textlimit:function(){return this.$store.state.instance.textlimit},uploadlimit:function(){return Ci.Z.fileSizeFormat(this.$store.state.instance.uploadlimit)}}},Pi=(0,Eo.Z)(Oi,[["render",function(e,t,n,o,r,i){return(0,uo.wg)(),(0,uo.iD)("div",fi,[(0,uo._)("div",gi,[(0,uo._)("div",vi,[(0,uo._)("div",wi,(0,po.zw)(e.$t("features_panel.title")),1)]),(0,uo._)("div",bi,[(0,uo._)("ul",null,[e.shout?((0,uo.wg)(),(0,uo.iD)("li",yi,(0,po.zw)(e.$t("features_panel.shout")),1)):(0,uo.kq)("",!0),e.pleromaChatMessages?((0,uo.wg)(),(0,uo.iD)("li",_i,(0,po.zw)(e.$t("features_panel.pleroma_chat_messages")),1)):(0,uo.kq)("",!0),e.gopher?((0,uo.wg)(),(0,uo.iD)("li",ki,(0,po.zw)(e.$t("features_panel.gopher")),1)):(0,uo.kq)("",!0),e.whoToFollow?((0,uo.wg)(),(0,uo.iD)("li",Si,(0,po.zw)(e.$t("features_panel.who_to_follow")),1)):(0,uo.kq)("",!0),e.mediaProxy?((0,uo.wg)(),(0,uo.iD)("li",ji,(0,po.zw)(e.$t("features_panel.media_proxy")),1)):(0,uo.kq)("",!0),(0,uo._)("li",null,(0,po.zw)(e.$t("features_panel.scope_options")),1),(0,uo._)("li",null,(0,po.zw)(e.$t("features_panel.text_limit"))+" = "+(0,po.zw)(e.textlimit),1),(0,uo._)("li",null,(0,po.zw)(e.$t("features_panel.upload_limit"))+" = "+(0,po.zw)(e.uploadlimit.num)+" "+(0,po.zw)(e.$t("upload.file_size_units."+e.uploadlimit.unit)),1)])])])])}]]);var zi={class:"who-to-follow-panel"},Di={class:"panel panel-default base01-background"},Ii={class:"panel-heading timeline-heading base02-background base04"},xi={class:"title"},Ti={class:"who-to-follow"},$i=["src"],Ui=(0,uo._)("br",null,null,-1),Mi={class:"who-to-follow-more"},Ai=n(69983),Li=n.n(Ai),Ei=n(4493);function Fi(e){var t=e.$store.state.users.currentUser.credentials;t&&(e.usersToFollow.forEach((function(e){e.name="Loading..."})),h.ZP.suggestions({credentials:t}).then((function(t){!function(e,t){var n=this,o=Li()(t);e.usersToFollow.forEach((function(t,r){var i=o[r],s=i.avatar||n.$store.state.instance.defaultAvatar,a=i.acct;t.img=s,t.name=a,e.$store.state.api.backendInteractor.fetchUser({id:a}).then((function(n){n.error||(e.$store.commit("addNewUsers",[n]),t.id=n.id)}))}))}(e,t)})))}const Ri={data:function(){return{usersToFollow:[]}},computed:{user:function(){return this.$store.state.users.currentUser.screen_name},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled}},methods:{userProfileLink:function(e,t){return(0,Ei.Z)(e,t,this.$store.state.instance.restrictedNicknames)}},watch:{user:function(e,t){this.suggestionsEnabled&&Fi(this)}},mounted:function(){var e=this;this.usersToFollow=new Array(3).fill().map((function(t){return{img:e.$store.state.instance.defaultAvatar,name:"",id:0}})),this.suggestionsEnabled&&Fi(this)}},qi=(0,Eo.Z)(Ri,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("router-link");return(0,uo.wg)(),(0,uo.iD)("div",zi,[(0,uo._)("div",Di,[(0,uo._)("div",Ii,[(0,uo._)("div",xi,(0,po.zw)(e.$t("who_to_follow.who_to_follow")),1)]),(0,uo._)("div",Ti,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.usersToFollow,(function(t){return(0,uo.wg)(),(0,uo.iD)("p",{key:t.id,class:"who-to-follow-items"},[(0,uo._)("img",{src:t.img},null,8,$i),(0,uo.Wm)(s,{to:e.userProfileLink(t.id,t.name)},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(t.name),1)]})),_:2},1032,["to"]),Ui])})),128)),(0,uo._)("p",Mi,[(0,uo.Wm)(s,{to:{name:"who-to-follow"}},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("who_to_follow.more")),1)]})),_:1})])])])])}]]);var Ni={key:0,class:"shout-panel"},Zi={class:"panel panel-default"},Wi={class:"title"},Bi={class:"shout-window"},Hi={class:"shout-avatar"},Vi=["src"],Ki={class:"shout-content"},Gi=(0,uo._)("br",null,null,-1),Yi={class:"shout-text"},Ji={class:"shout-input"},Qi={key:1,class:"shout-panel"},Xi={class:"panel panel-default"},es={class:"title"};qt.vI.add(Nt.Acd,Nt.NBC);const ts={props:["floating"],data:function(){return{currentMessage:"",channel:null,collapsed:!0}},computed:{messages:function(){return this.$store.state.shout.messages}},methods:{submit:function(e){this.$store.state.shout.channel.push("new_msg",{text:e},1e4),this.currentMessage=""},togglePanel:function(){this.collapsed=!this.collapsed},userProfileLink:function(e){return(0,Ei.Z)(e.id,e.username,this.$store.state.instance.restrictedNicknames)}},watch:{messages:function(e){var t=this.$el.querySelector(".chat-window");t&&t.scrollTop+t.offsetHeight+20>t.scrollHeight&&this.$nextTick((function(){t&&(t.scrollTop=t.scrollHeight-t.offsetHeight)}))}}},ns=(0,Eo.Z)(ts,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon"),a=(0,uo.up)("router-link");return e.collapsed&&e.floating?((0,uo.wg)(),(0,uo.iD)("div",Qi,[(0,uo._)("div",Xi,[(0,uo._)("div",{class:"panel-heading -stub timeline-heading shout-heading",onClick:t[3]||(t[3]=(0,ro.iM)((function(){return e.togglePanel&&e.togglePanel.apply(e,arguments)}),["stop","prevent"]))},[(0,uo._)("div",es,[(0,uo.Wm)(s,{class:"icon",icon:"bullhorn"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("shoutbox.title")),1)])])])])):((0,uo.wg)(),(0,uo.iD)("div",Ni,[(0,uo._)("div",Zi,[(0,uo._)("div",{class:(0,po.C_)(["panel-heading timeline-heading",{"shout-heading":e.floating}]),onClick:t[0]||(t[0]=(0,ro.iM)((function(){return e.togglePanel&&e.togglePanel.apply(e,arguments)}),["stop","prevent"]))},[(0,uo._)("div",Wi,[(0,uo.Uk)((0,po.zw)(e.$t("shoutbox.title"))+" ",1),e.floating?((0,uo.wg)(),(0,uo.j4)(s,{key:0,icon:"times",class:"close-icon"})):(0,uo.kq)("",!0)])],2),(0,uo._)("div",Bi,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.messages,(function(t){return(0,uo.wg)(),(0,uo.iD)("div",{key:t.id,class:"shout-message"},[(0,uo._)("span",Hi,[(0,uo._)("img",{src:t.author.avatar},null,8,Vi)]),(0,uo._)("div",Ki,[(0,uo.Wm)(a,{class:"shout-name",to:e.userProfileLink(t.author)},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(t.author.username),1)]})),_:2},1032,["to"]),Gi,(0,uo._)("span",Yi,(0,po.zw)(t.text),1)])])})),128))]),(0,uo._)("div",Ji,[(0,uo.wy)((0,uo._)("textarea",{"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.currentMessage=t}),class:"shout-input-textarea",rows:"1",onKeyup:t[2]||(t[2]=(0,ro.D2)((function(t){return e.submit(e.currentMessage)}),["enter"]))},null,544),[[ro.nr,e.currentMessage]])])])]))}]]);var os=["src","alt","title"],rs=["src","alt","title"],is=["title"],ss=["title"],as=["title"],cs={key:6,class:"description"},ls={class:"counter"},us={key:7,class:"loading-spinner"},ds=n(32140),ps=n(34133),ms=n(782);const hs={methods:{setTransform:function(e){var t=e.scale,n=e.x,o=e.y;this.$el.setTransform({scale:t,x:n,y:o})}},created:function(){ms.Z}},fs=(0,Eo.Z)(hs,[["render",function(e,t,n,o,r,i){return(0,uo.wg)(),(0,uo.iD)("pinch-zoom",(0,uo.dG)({class:"pinch-zoom-parent"},e.$attrs,(0,uo.mx)(e.$listeners,!0)),[(0,uo.WI)(e.$slots,"default")],16)}]]);var gs=n(15671),vs=n(43144),ws=function(e,t){return[t[0]-e[0],t[1]-e[1]]},bs=function(e){return[(t=e.touches[0]).screenX,t.screenY];var t},ys=function(e){return[e.clientX,e.clientY]},_s=function(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])},ks=function(e){return[e[1],-e[0]]},Ss=function(e,t){return e[0]*t[0]+e[1]*t[1]},js=function(e,t){var n=Ss(e,t)/Ss(t,t);return[n*t[0],n*t[1]]};const Cs={DIRECTION_LEFT:[-1,0],DIRECTION_RIGHT:[1,0],DIRECTION_UP:[0,-1],DIRECTION_DOWN:[0,1],swipeGesture:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{direction:e,onSwipe:t,threshold:n,perpendicularTolerance:o,_startPos:[0,0],_swiping:!1}},beginSwipe:function(e,t){t._startPos=bs(e),t._swiping=!0},updateSwipe:function(e,t){if(t._swiping){var n=ws(t._startPos,bs(e));if(!(_s(n)<t.threshold||Ss(n,t.direction)<0)){var o=js(n,t.direction),r=ks(t.direction),i=js(n,r);_s(o)*t.perpendicularTolerance<_s(i)||(t.onSwipe(),t._swiping=!1)}}},SwipeAndClickGesture:function(){function e(t){var n=t.direction,o=t.swipePreviewCallback,r=t.swipeEndCallback,i=t.swipeCancelCallback,s=t.swipelessClickCallback,a=t.threshold,c=void 0===a?30:a,l=t.perpendicularTolerance,u=void 0===l?1:l,d=t.disableClickThreshold,p=void 0===d?1:d;(0,gs.Z)(this,e);var m=function(){};this.direction=n,this.swipePreviewCallback=o||m,this.swipeEndCallback=r||m,this.swipeCancelCallback=i||m,this.swipelessClickCallback=s||m,this.threshold="function"==typeof c?c:function(){return c},this.disableClickThreshold="function"==typeof p?p:function(){return p},this.perpendicularTolerance=u,this._reset()}return(0,vs.Z)(e,[{key:"_reset",value:function(){this._startPos=[0,0],this._pointerId=-1,this._swiping=!1,this._swiped=!1,this._preventNextClick=!1}},{key:"start",value:function(e){0===e.button&&(this._startPos=ys(e),this._pointerId=e.pointerId,this._swiping=!0,this._swiped=!1)}},{key:"move",value:function(e){if(this._swiping&&this._pointerId===e.pointerId){this._swiped=!0;var t=ys(e),n=ws(this._startPos,t);this.swipePreviewCallback(n)}}},{key:"cancel",value:function(e){this._swiping&&this._pointerId===e.pointerId&&this.swipeCancelCallback()}},{key:"end",value:function(e){var t=this;if(this._swiping&&this._pointerId===e.pointerId){this._swiping=!1;var n=ys(e),o=ws(this._startPos,n),r=function(){if(_s(o)<t.threshold())return 0;var e=Ss(o,t.direction)>0,n=js(o,t.direction),r=ks(t.direction),i=js(o,r);return _s(n)*t.perpendicularTolerance<_s(i)?0:e?1:-1}();this._swiped&&this.swipeEndCallback(r),this._reset(),_s(o)>=this.disableClickThreshold()&&"mouse"===e.pointerType&&(this._preventNextClick=!0)}}},{key:"click",value:function(e){this._preventNextClick||this.swipelessClickCallback(),this._reset()}}]),e}()},Os={props:{direction:{type:Array},threshold:{type:Function,default:function(){return 30}},disableClickThreshold:{type:Function,default:function(){return 1}},perpendicularTolerance:{type:Number,default:1}},methods:{handlePointerDown:function(e){this.$gesture.start(e)},handlePointerMove:function(e){this.$gesture.move(e)},handlePointerUp:function(e){this.$gesture.end(e)},handlePointerCancel:function(e){this.$gesture.cancel(e)},handleNativeClick:function(e){this.$gesture.click(e)},preview:function(e){this.$emit("preview-requested",e)},end:function(e){this.$emit("swipe-finished",e)},click:function(){this.$emit("swipeless-clicked")},cancel:function(){this.$emit("swipe-canceled")}},created:function(){this.$gesture=new Cs.SwipeAndClickGesture({direction:this.direction,threshold:this.threshold,disableClickThreshold:this.disableClickThreshold,perpendicularTolerance:this.perpendicularTolerance,swipePreviewCallback:this.preview,swipeEndCallback:this.end,swipeCancelCallback:this.cancel,swipelessClickCallback:this.click})}},Ps=(0,Eo.Z)(Os,[["render",function(e,t,n,o,r,i){return(0,uo.wg)(),(0,uo.iD)("div",(0,uo.dG)(e.$attrs,{onPointerdown:t[0]||(t[0]=function(){return e.handlePointerDown&&e.handlePointerDown.apply(e,arguments)}),onPointermove:t[1]||(t[1]=function(){return e.handlePointerMove&&e.handlePointerMove.apply(e,arguments)}),onPointerup:t[2]||(t[2]=function(){return e.handlePointerUp&&e.handlePointerUp.apply(e,arguments)}),onPointercancel:t[3]||(t[3]=function(){return e.handlePointerCancel&&e.handlePointerCancel.apply(e,arguments)}),onClick:t[4]||(t[4]=function(){return e.handleNativeClick&&e.handleNativeClick.apply(e,arguments)})}),[(0,uo.WI)(e.$slots,"default")],16)}]]);var zs=n(72884);qt.vI.add(Nt.A35,Nt._tD,Nt.IJ7,Nt.NBC);const Ds={components:{StillImage:ds.Z,VideoAttachment:ps.Z,PinchZoom:fs,SwipeClick:Ps,Modal:Rt.Z,Flash:zs.Z},data:function(){return{loading:!1,swipeDirection:Cs.DIRECTION_LEFT,swipeThreshold:function(){return window.innerWidth*(1/4)},pinchZoomMinScale:1,pinchZoomScaleResetLimit:1.2}},computed:{showing:function(){return this.$store.state.mediaViewer.activated},media:function(){return this.$store.state.mediaViewer.media},description:function(){return this.currentMedia.description},currentIndex:function(){return this.$store.state.mediaViewer.currentIndex},currentMedia:function(){return this.media[this.currentIndex]},canNavigate:function(){return this.media.length>1},type:function(){return this.currentMedia?this.getType(this.currentMedia):null},swipeDisableClickThreshold:function(){var e=this;return function(){return e.canNavigate?1:30}}},methods:{getType:function(e){return hn.Z.fileType(e.mimetype)},hide:function(){var e=this;setTimeout((function(){e.$store.dispatch("closeMediaViewer")}),100)},hideIfNotSwiped:function(e){var t=this.$refs.swipeClick;t?t.$gesture.click(e):this.hide()},goPrev:function(){if(this.canNavigate){var e=0===this.currentIndex?this.media.length-1:this.currentIndex-1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},goNext:function(){if(this.canNavigate){var e=this.currentIndex===this.media.length-1?0:this.currentIndex+1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},onImageLoaded:function(){this.loading=!1},handleSwipePreview:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:e[0],y:0})},handleSwipeEnd:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:0,y:0}),e>0?this.goNext():e<0&&this.goPrev()},handleKeyupEvent:function(e){this.showing&&27===e.keyCode&&this.hide()},handleKeydownEvent:function(e){this.showing&&(39===e.keyCode?this.goNext():37===e.keyCode&&this.goPrev())}},mounted:function(){window.addEventListener("popstate",this.hide),document.addEventListener("keyup",this.handleKeyupEvent),document.addEventListener("keydown",this.handleKeydownEvent)},unmounted:function(){window.removeEventListener("popstate",this.hide),document.removeEventListener("keyup",this.handleKeyupEvent),document.removeEventListener("keydown",this.handleKeydownEvent)}},Is=(0,Eo.Z)(Ds,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("PinchZoom"),a=(0,uo.up)("SwipeClick"),c=(0,uo.up)("VideoAttachment"),l=(0,uo.up)("Flash"),u=(0,uo.up)("FAIcon"),d=(0,uo.up)("Modal");return e.showing?((0,uo.wg)(),(0,uo.j4)(d,{key:0,class:"media-modal-view",onBackdropClicked:e.hideIfNotSwiped},{default:(0,uo.w5)((function(){return["image"===e.type?((0,uo.wg)(),(0,uo.j4)(a,{key:0,ref:"swipeClick",class:"modal-image-container",direction:e.swipeDirection,threshold:e.swipeThreshold,"disable-click-threshold":e.swipeDisableClickThreshold,onPreviewRequested:e.handleSwipePreview,onSwipeFinished:e.handleSwipeEnd,onSwipelessClicked:e.hide},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(s,{ref:"pinchZoom",class:"modal-image-container-inner",selector:".modal-image","reach-min-scale-strategy":"reset","stop-propagate-handled":"stop-propgate-handled","allow-pan-min-scale":e.pinchZoomMinScale,"min-scale":e.pinchZoomMinScale,"reset-to-min-scale-limit":e.pinchZoomScaleResetLimit},{default:(0,uo.w5)((function(){return[(0,uo._)("img",{class:(0,po.C_)([{loading:e.loading},"modal-image"]),src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,onLoad:t[0]||(t[0]=function(){return e.onImageLoaded&&e.onImageLoaded.apply(e,arguments)})},null,42,os)]})),_:1},8,["allow-pan-min-scale","min-scale","reset-to-min-scale-limit"])]})),_:1},8,["direction","threshold","disable-click-threshold","onPreviewRequested","onSwipeFinished","onSwipelessClicked"])):(0,uo.kq)("",!0),"video"===e.type?((0,uo.wg)(),(0,uo.j4)(c,{key:1,class:"modal-image",attachment:e.currentMedia,controls:!0},null,8,["attachment"])):(0,uo.kq)("",!0),"audio"===e.type?((0,uo.wg)(),(0,uo.iD)("audio",{key:2,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,controls:""},null,8,rs)):(0,uo.kq)("",!0),"flash"===e.type?((0,uo.wg)(),(0,uo.j4)(l,{key:3,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description},null,8,["src","alt","title"])):(0,uo.kq)("",!0),e.canNavigate?((0,uo.wg)(),(0,uo.iD)("button",{key:4,title:e.$t("media_modal.previous"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev",onClick:t[1]||(t[1]=(0,ro.iM)((function(){return e.goPrev&&e.goPrev.apply(e,arguments)}),["stop","prevent"]))},[(0,uo.Wm)(u,{class:"button-icon arrow-icon",icon:"chevron-left"})],8,is)):(0,uo.kq)("",!0),e.canNavigate?((0,uo.wg)(),(0,uo.iD)("button",{key:5,title:e.$t("media_modal.next"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--next",onClick:t[2]||(t[2]=(0,ro.iM)((function(){return e.goNext&&e.goNext.apply(e,arguments)}),["stop","prevent"]))},[(0,uo.Wm)(u,{class:"button-icon arrow-icon",icon:"chevron-right"})],8,ss)):(0,uo.kq)("",!0),(0,uo._)("button",{class:"modal-view-button modal-view-button-hide",title:e.$t("media_modal.hide"),onClick:t[3]||(t[3]=(0,ro.iM)((function(){return e.hide&&e.hide.apply(e,arguments)}),["stop","prevent"]))},[(0,uo.Wm)(u,{class:"button-icon",icon:"times"})],8,as),e.description?((0,uo.wg)(),(0,uo.iD)("span",cs,(0,po.zw)(e.description),1)):(0,uo.kq)("",!0),(0,uo._)("span",ls,(0,po.zw)(e.$tc("media_modal.counter",e.currentIndex+1,{current:e.currentIndex+1,total:e.media.length})),1),e.loading?((0,uo.wg)(),(0,uo.iD)("span",us,[(0,uo.Wm)(u,{spin:"",icon:"circle-notch",size:"5x"})])):(0,uo.kq)("",!0)]})),_:1},8,["onBackdropClicked"])):(0,uo.kq)("",!0)}]]);var xs={key:1,class:"side-drawer-logo-wrapper"},Ts=["src"],$s={key:0},Us={key:0,class:"badge badge-notification"},Ms={key:0},As={key:0,class:"badge badge-notification"},Ls={href:"/pleroma/admin/#/login-pleroma",target:"_blank"},Es={key:0,class:"badge badge-notification"};function Fs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Rs(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fs(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.$Wj,Nt.jLD,Nt.J9Y,Nt.lXL,Nt.qmU,Nt.FKd,Nt.Acd,Nt.wn1,Nt.HLz,Nt.b7W,Nt.sqG,Nt.GTN,Nt.Zrf);const qs={props:["logout"],data:function(){return{closed:!0,closeGesture:void 0}},created:function(){this.closeGesture=Cs.swipeGesture(Cs.DIRECTION_LEFT,this.toggleDrawer),this.currentUser&&this.currentUser.locked&&this.$store.dispatch("startFetchingFollowRequests")},components:{UserCard:_r.Z},computed:Rs(Rs({currentUser:function(){return this.$store.state.users.currentUser},shout:function(){return this.$store.state.shout.joined},unseenNotifications:function(){return(0,K.Km)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},logo:function(){return this.$store.state.instance.logo},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},followRequestCount:function(){return this.$store.state.api.followRequests.length},privateMode:function(){return this.$store.state.instance.private},federating:function(){return this.$store.state.instance.federating},timelinesRoute:function(){var e;return this.$store.state.interface.lastTimeline&&(e=this.$store.state.interface.lastTimeline),e=this.currentUser?"friends":"public-timeline",Lr.has(e)?{name:e,params:{username:this.currentUser.screen_name}}:{name:e}}},(0,s.rn)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable},supportsAnnouncements:function(e){return e.announcements.supportsAnnouncements}})),(0,s.Se)(["unreadChatCount","unreadAnnouncementCount"])),methods:{toggleDrawer:function(){this.closed=!this.closed},doLogout:function(){this.logout(),this.toggleDrawer()},touchStart:function(e){Cs.beginSwipe(e,this.closeGesture)},touchMove:function(e){Cs.updateSwipe(e,this.closeGesture)},openSettingsModal:function(){this.$store.dispatch("openSettingsModal")}}},Ns=(0,Eo.Z)(qs,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("UserCard"),a=(0,uo.up)("FAIcon"),c=(0,uo.up)("router-link");return(0,uo.wg)(),(0,uo.iD)("div",{class:(0,po.C_)(["side-drawer-container",{"side-drawer-container-closed":e.closed,"side-drawer-container-open":!e.closed}])},[(0,uo._)("div",{class:(0,po.C_)(["side-drawer-darken",{"side-drawer-darken-closed":e.closed}])},null,2),(0,uo._)("div",{class:(0,po.C_)(["side-drawer",{"side-drawer-closed":e.closed}]),onTouchstart:t[18]||(t[18]=function(){return e.touchStart&&e.touchStart.apply(e,arguments)}),onTouchmove:t[19]||(t[19]=function(){return e.touchMove&&e.touchMove.apply(e,arguments)})},[(0,uo._)("div",{class:"side-drawer-heading",onClick:t[0]||(t[0]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[e.currentUser?((0,uo.wg)(),(0,uo.j4)(s,{key:0,"user-id":e.currentUser.id,"hide-bio":!0},null,8,["user-id"])):((0,uo.wg)(),(0,uo.iD)("div",xs,[(0,uo._)("img",{src:e.logo},null,8,Ts),e.hideSitename?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("span",$s,(0,po.zw)(e.sitename),1))]))]),(0,uo._)("ul",null,[e.currentUser?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("li",{key:0,onClick:t[1]||(t[1]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:{name:"login"}},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-in-alt"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("login.login")),1)]})),_:1})])),e.currentUser||!e.privateMode?((0,uo.wg)(),(0,uo.iD)("li",{key:1,onClick:t[2]||(t[2]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:e.timelinesRoute},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"home"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("nav.timelines")),1)]})),_:1},8,["to"])])):(0,uo.kq)("",!0),e.currentUser?((0,uo.wg)(),(0,uo.iD)("li",{key:2,onClick:t[3]||(t[3]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:{name:"lists"}},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"list"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("nav.lists")),1)]})),_:1})])):(0,uo.kq)("",!0),e.currentUser&&e.pleromaChatMessagesAvailable?((0,uo.wg)(),(0,uo.iD)("li",{key:3,onClick:t[4]||(t[4]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:{name:"chats",params:{username:e.currentUser.screen_name}},style:{position:"relative"}},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"comments"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("nav.chats"))+" ",1),e.unreadChatCount?((0,uo.wg)(),(0,uo.iD)("span",Us,(0,po.zw)(e.unreadChatCount),1)):(0,uo.kq)("",!0)]})),_:1},8,["to"])])):(0,uo.kq)("",!0)]),e.currentUser?((0,uo.wg)(),(0,uo.iD)("ul",Ms,[(0,uo._)("li",{onClick:t[5]||(t[5]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:{name:"interactions",params:{username:e.currentUser.screen_name}}},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bell"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("nav.interactions")),1)]})),_:1},8,["to"])]),e.currentUser.locked?((0,uo.wg)(),(0,uo.iD)("li",{key:0,onClick:t[6]||(t[6]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:"/friend-requests"},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("nav.friend_requests"))+" ",1),e.followRequestCount>0?((0,uo.wg)(),(0,uo.iD)("span",As,(0,po.zw)(e.followRequestCount),1)):(0,uo.kq)("",!0)]})),_:1})])):(0,uo.kq)("",!0),e.shout?((0,uo.wg)(),(0,uo.iD)("li",{key:1,onClick:t[7]||(t[7]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:{name:"shout-panel"}},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bullhorn"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("shoutbox.title")),1)]})),_:1})])):(0,uo.kq)("",!0)])):(0,uo.kq)("",!0),(0,uo._)("ul",null,[e.currentUser||!e.privateMode?((0,uo.wg)(),(0,uo.iD)("li",{key:0,onClick:t[8]||(t[8]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:{name:"search"}},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("nav.search")),1)]})),_:1})])):(0,uo.kq)("",!0),e.currentUser&&e.suggestionsEnabled?((0,uo.wg)(),(0,uo.iD)("li",{key:1,onClick:t[9]||(t[9]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:{name:"who-to-follow"}},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("nav.who_to_follow")),1)]})),_:1})])):(0,uo.kq)("",!0),(0,uo._)("li",{onClick:t[11]||(t[11]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo._)("button",{class:"button-unstyled -link -fullwidth",onClick:t[10]||(t[10]=function(){return e.openSettingsModal&&e.openSettingsModal.apply(e,arguments)})},[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("settings.settings")),1)])]),(0,uo._)("li",{onClick:t[12]||(t[12]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:{name:"about"}},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"info-circle"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("nav.about")),1)]})),_:1})]),e.currentUser&&"admin"===e.currentUser.role?((0,uo.wg)(),(0,uo.iD)("li",{key:2,onClick:t[13]||(t[13]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo._)("a",Ls,[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("nav.administration")),1)])])):(0,uo.kq)("",!0),e.currentUser&&e.supportsAnnouncements?((0,uo.wg)(),(0,uo.iD)("li",{key:3,onClick:t[14]||(t[14]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:{name:"announcements"}},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bullhorn"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("nav.announcements"))+" ",1),e.unreadAnnouncementCount?((0,uo.wg)(),(0,uo.iD)("span",Es,(0,po.zw)(e.unreadAnnouncementCount),1)):(0,uo.kq)("",!0)]})),_:1})])):(0,uo.kq)("",!0),e.currentUser?((0,uo.wg)(),(0,uo.iD)("li",{key:4,onClick:t[15]||(t[15]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo.Wm)(c,{to:{name:"edit-navigation"}},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"compass"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("nav.edit_nav_mobile")),1)]})),_:1})])):(0,uo.kq)("",!0),e.currentUser?((0,uo.wg)(),(0,uo.iD)("li",{key:5,onClick:t[17]||(t[17]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,uo._)("button",{class:"button-unstyled -link -fullwidth",onClick:t[16]||(t[16]=function(){return e.doLogout&&e.doLogout.apply(e,arguments)})},[(0,uo.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("login.logout")),1)])])):(0,uo.kq)("",!0)])],34),(0,uo._)("div",{class:(0,po.C_)(["side-drawer-click-outside",{"side-drawer-click-outside-closed":e.closed}]),onClick:t[20]||(t[20]=(0,ro.iM)((function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)}),["stop","prevent"]))},null,2)],2)}]]);var Zs=["title"],Ws=n(23279),Bs=n.n(Ws);qt.vI.add(Nt.IwR);var Hs=new Set(["chats","chat","lists-edit"]);const Vs={data:function(){return{hidden:!1,scrollingDown:!1,inputActive:!1,oldScrollPos:0,amountScrolled:0}},created:function(){this.autohideFloatingPostButton&&this.activateFloatingPostButtonAutohide(),window.addEventListener("resize",this.handleOSK)},unmounted:function(){this.autohideFloatingPostButton&&this.deactivateFloatingPostButtonAutohide(),window.removeEventListener("resize",this.handleOSK)},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},isHidden:function(){return!!Hs.has(this.$route.name)||this.autohideFloatingPostButton&&(this.hidden||this.inputActive)},isPersistent:function(){return!!this.$store.getters.mergedConfig.alwaysShowNewPostButton},autohideFloatingPostButton:function(){return!!this.$store.getters.mergedConfig.autohideFloatingPostButton}},watch:{autohideFloatingPostButton:function(e){e?this.activateFloatingPostButtonAutohide():this.deactivateFloatingPostButtonAutohide()}},methods:{activateFloatingPostButtonAutohide:function(){window.addEventListener("scroll",this.handleScrollStart),window.addEventListener("scroll",this.handleScrollEnd)},deactivateFloatingPostButtonAutohide:function(){window.removeEventListener("scroll",this.handleScrollStart),window.removeEventListener("scroll",this.handleScrollEnd)},openPostForm:function(){this.$store.dispatch("openPostStatusModal")},handleOSK:function(){var e=window.innerWidth<350,t=e&&window.innerHeight<345,n=!e&&window.innerWidth<450&&window.innerHeight<560;this.inputActive=!(!t&&!n)},handleScrollStart:Bs()((function(){window.scrollY>this.oldScrollPos?this.hidden=!0:this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!0,trailing:!1}),handleScrollEnd:Bs()((function(){this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!1,trailing:!0})}},Ks=(0,Eo.Z)(Vs,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon");return e.isLoggedIn?((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:(0,po.C_)(["MobilePostButton button-default new-status-button",{hidden:e.isHidden,"always-show":e.isPersistent}]),title:e.$t("post_status.new_status"),onClick:t[0]||(t[0]=function(){return e.openPostForm&&e.openPostForm.apply(e,arguments)})},[(0,uo.Wm)(s,{icon:"pen"})],10,Zs)):(0,uo.kq)("",!0)}]]);var Gs={class:"MobileNav"},Ys={class:"item"},Js=["title","aria-expanaded"],Qs={key:0,class:"alert-dot"},Xs={class:"item right"},ea=["title"],ta={key:0,class:"alert-dot"},na={class:"mobile-notifications-header"},oa={class:"title"},ra=(0,uo._)("span",{class:"spacer"},null,-1),ia=["title"],sa=["title"],aa=n(50332),ca=n(1447);function la(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ua(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?la(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):la(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.NBC,Nt.qmU,Nt.xiG,Nt.FPD,Nt.Kl4);const da={components:{SideDrawer:Ns,Notifications:aa.default,NavigationPins:oi,ConfirmModal:ca.Z},data:function(){return{notificationsCloseGesture:void 0,notificationsOpen:!1,notificationsAtTop:!0,showingConfirmLogout:!1}},created:function(){var e=this;this.notificationsCloseGesture=Cs.swipeGesture(Cs.DIRECTION_RIGHT,(function(){return e.closeMobileNotifications(!0)}),50)},computed:ua(ua({currentUser:function(){return this.$store.state.users.currentUser},unseenNotifications:function(){return(0,K.Km)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},isChat:function(){return"chat"===this.$route.name}},(0,s.Se)(["unreadChatCount","unreadAnnouncementCount"])),{},{chatsPinned:function(){return new Set(this.$store.state.serverSideStorage.prefsStorage.collections.pinnedNavItems).has("chats")},shouldConfirmLogout:function(){return this.$store.getters.mergedConfig.modalOnLogout}},(0,s.Se)(["unreadChatCount"])),methods:{toggleMobileSidebar:function(){this.$refs.sideDrawer.toggleDrawer()},openMobileNotifications:function(){this.notificationsOpen=!0},closeMobileNotifications:function(e){this.notificationsOpen&&(this.notificationsOpen=!1,e&&this.markNotificationsAsSeen())},notificationsTouchStart:function(e){Cs.beginSwipe(e,this.notificationsCloseGesture)},notificationsTouchMove:function(e){Cs.updateSwipe(e,this.notificationsCloseGesture)},scrollToTop:function(){window.scrollTo(0,0)},scrollMobileNotificationsToTop:function(){this.$refs.mobileNotifications.scrollTo(0,0)},showConfirmLogout:function(){this.showingConfirmLogout=!0},hideConfirmLogout:function(){this.showingConfirmLogout=!1},logout:function(){this.shouldConfirmLogout?this.showConfirmLogout():this.doLogout()},doLogout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout"),this.hideConfirmLogout()},markNotificationsAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen")},onScroll:function(e){var t=e.target,n=t.scrollTop,o=t.clientHeight,r=t.scrollHeight;this.notificationsAtTop=n>0,n+o>=r&&this.$refs.notifications.fetchOlderNotifications()}},watch:{$route:function(){this.closeMobileNotifications()}}},pa=(0,Eo.Z)(da,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon"),a=(0,uo.up)("NavigationPins"),c=(0,uo.up)("FALayers"),l=(0,uo.up)("SideDrawer"),u=(0,uo.up)("confirm-modal");return(0,uo.wg)(),(0,uo.iD)("div",Gs,[(0,uo._)("nav",{id:"nav",class:"mobile-nav",onClick:t[2]||(t[2]=function(t){return e.scrollToTop()})},[(0,uo._)("div",Ys,[(0,uo._)("button",{class:"button-unstyled mobile-nav-button",title:e.$t("nav.mobile_sidebar"),"aria-expanaded":e.$refs.sideDrawer&&!e.$refs.sideDrawer.closed,onClick:t[0]||(t[0]=(0,ro.iM)((function(t){return e.toggleMobileSidebar()}),["stop","prevent"]))},[(0,uo.Wm)(s,{class:"fa-scale-110 fa-old-padding",icon:"bars"}),e.unreadChatCount&&!e.chatsPinned||e.unreadAnnouncementCount?((0,uo.wg)(),(0,uo.iD)("div",Qs)):(0,uo.kq)("",!0)],8,Js),(0,uo.Wm)(a,{class:"pins"})]),(0,uo.Uk)(),(0,uo._)("div",Xs,[e.currentUser?((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:"button-unstyled mobile-nav-button",title:e.unseenNotificationsCount?e.$t("nav.mobile_notifications_unread_active"):e.$t("nav.mobile_notifications"),onClick:t[1]||(t[1]=(0,ro.iM)((function(t){return e.openMobileNotifications()}),["stop","prevent"]))},[(0,uo.Wm)(s,{class:"fa-scale-110 fa-old-padding",icon:"bell"}),e.unseenNotificationsCount?((0,uo.wg)(),(0,uo.iD)("div",ta)):(0,uo.kq)("",!0)],8,ea)):(0,uo.kq)("",!0)])]),e.currentUser?((0,uo.wg)(),(0,uo.iD)("aside",{key:0,class:(0,po.C_)(["mobile-notifications-drawer",{"-closed":!e.notificationsOpen}]),onTouchstart:t[6]||(t[6]=(0,ro.iM)((function(){return e.notificationsTouchStart&&e.notificationsTouchStart.apply(e,arguments)}),["stop"])),onTouchmove:t[7]||(t[7]=(0,ro.iM)((function(){return e.notificationsTouchMove&&e.notificationsTouchMove.apply(e,arguments)}),["stop"]))},[(0,uo._)("div",na,[(0,uo._)("span",oa,(0,po.zw)(e.$t("notifications.notifications")),1),ra,e.notificationsAtTop?((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:"button-unstyled mobile-nav-button",title:e.$t("general.scroll_to_top"),onClick:t[3]||(t[3]=(0,ro.iM)((function(){return e.scrollMobileNotificationsToTop&&e.scrollMobileNotificationsToTop.apply(e,arguments)}),["stop","prevent"]))},[(0,uo.Wm)(c,{class:"fa-scale-110 fa-old-padding-layer"},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(s,{icon:"arrow-up"}),(0,uo.Wm)(s,{icon:"minus",transform:"up-7"})]})),_:1})],8,ia)):(0,uo.kq)("",!0),(0,uo._)("button",{class:"button-unstyled mobile-nav-button",title:e.$t("nav.mobile_notifications_close"),onClick:t[4]||(t[4]=(0,ro.iM)((function(t){return e.closeMobileNotifications(!0)}),["stop","prevent"]))},[(0,uo.Wm)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})],8,sa)]),(0,uo._)("div",{id:"mobile-notifications",ref:"mobileNotifications",class:"mobile-notifications",onScroll:t[5]||(t[5]=function(){return e.onScroll&&e.onScroll.apply(e,arguments)})},null,544)],34)):(0,uo.kq)("",!0),(0,uo.Wm)(l,{ref:"sideDrawer",logout:e.logout},null,8,["logout"]),((0,uo.wg)(),(0,uo.j4)(uo.lR,{to:"#modal"},[e.showingConfirmLogout?((0,uo.wg)(),(0,uo.j4)(u,{key:0,title:e.$t("login.logout_confirm_title"),"confirm-text":e.$t("login.logout_confirm_accept_button"),"cancel-text":e.$t("login.logout_confirm_cancel_button"),onAccepted:e.doLogout,onCancelled:e.hideConfirmLogout},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("login.logout_confirm")),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,uo.kq)("",!0)]))])}]]);var ma={class:"inner-nav"},ha={class:"item sitename"},fa=["src"],ga={class:"item right actions"},va=["title"],wa=["title"],ba=(0,uo._)("span",{class:"spacer"},null,-1),ya=["title"],_a=["title","aria-expanded"],ka=["placeholder"],Sa=["title"],ja=["title","aria-expanded"],Ca=(0,uo._)("span",{class:"spacer"},null,-1),Oa=(0,uo._)("span",{class:"spacer"},null,-1);qt.vI.add(Nt.NBC,Nt.wn1);const Pa={data:function(){return{searchTerm:void 0,hidden:!0,error:!1}},watch:{$route:function(e){"search"===e.name&&(this.searchTerm=e.query.query)}},methods:{find:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},toggleHidden:function(){var e=this;this.hidden=!this.hidden,this.$emit("toggled",this.hidden),this.$nextTick((function(){e.hidden||e.$refs.searchInput.focus()}))}}},za=(0,Eo.Z)(Pa,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon");return(0,uo.wg)(),(0,uo.iD)("div",{class:(0,po.C_)(["SearchBar",{"-expanded":!e.hidden}])},[e.hidden?((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:"button-unstyled nav-icon",title:e.$t("nav.search"),type:"button","aria-expanded":!e.hidden,onClick:t[0]||(t[0]=(0,ro.iM)((function(){return e.toggleHidden&&e.toggleHidden.apply(e,arguments)}),["prevent","stop"]))},[(0,uo.Wm)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"})],8,_a)):((0,uo.wg)(),(0,uo.iD)(uo.HY,{key:1},[(0,uo.wy)((0,uo._)("input",{id:"search-bar-input",ref:"searchInput","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),class:"search-bar-input",placeholder:e.$t("nav.search"),type:"text",onKeyup:t[2]||(t[2]=(0,ro.D2)((function(t){return e.find(e.searchTerm)}),["enter"]))},null,40,ka),[[ro.nr,e.searchTerm]]),(0,uo._)("button",{class:"button-default search-button",type:"submit",title:e.$t("nav.search"),onClick:t[3]||(t[3]=function(t){return e.find(e.searchTerm)})},[(0,uo.Wm)(s,{"fixed-width":"",icon:"search"})],8,Sa),(0,uo._)("button",{class:"button-unstyled cancel-search",type:"button",title:e.$t("nav.search_close"),"aria-expanded":!e.hidden,onClick:t[4]||(t[4]=(0,ro.iM)((function(){return e.toggleHidden&&e.toggleHidden.apply(e,arguments)}),["prevent","stop"]))},[(0,uo.Wm)(s,{"fixed-width":"",icon:"times",class:"cancel-icon fa-scale-110 fa-old-padding"})],8,ja),Ca,Oa],64))],2)}]]);qt.vI.add(Nt.$Wj,Nt.jLD,Nt.J9Y,Nt.lXL,Nt.qmU,Nt.FKd,Nt.Acd,Nt.wn1,Nt.HLz,Nt.b7W,Nt.sqG);const Da={components:{SearchBar:za,ConfirmModal:ca.Z},data:function(){return{searchBarHidden:!0,supportsMask:window.CSS&&window.CSS.supports&&(window.CSS.supports("mask-size","contain")||window.CSS.supports("-webkit-mask-size","contain")||window.CSS.supports("-moz-mask-size","contain")||window.CSS.supports("-ms-mask-size","contain")||window.CSS.supports("-o-mask-size","contain")),showingConfirmLogout:!1}},computed:{enableMask:function(){return this.supportsMask&&this.$store.state.instance.logoMask},logoStyle:function(){return{visibility:this.enableMask?"hidden":"visible"}},logoMaskStyle:function(){return this.enableMask?{"mask-image":"url(".concat(this.$store.state.instance.logo,")")}:{"background-color":this.enableMask?"":"transparent"}},logoBgStyle:function(){return Object.assign({margin:"".concat(this.$store.state.instance.logoMargin," 0"),opacity:this.searchBarHidden?1:0},this.enableMask?{}:{"background-color":this.enableMask?"":"transparent"})},logo:function(){return this.$store.state.instance.logo},sitename:function(){return this.$store.state.instance.name},hideSitename:function(){return this.$store.state.instance.hideSitename},logoLeft:function(){return this.$store.state.instance.logoLeft},currentUser:function(){return this.$store.state.users.currentUser},privateMode:function(){return this.$store.state.instance.private},shouldConfirmLogout:function(){return this.$store.getters.mergedConfig.modalOnLogout}},methods:{scrollToTop:function(){window.scrollTo(0,0)},showConfirmLogout:function(){this.showingConfirmLogout=!0},hideConfirmLogout:function(){this.showingConfirmLogout=!1},logout:function(){this.shouldConfirmLogout?this.showConfirmLogout():this.doLogout()},doLogout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout"),this.hideConfirmLogout()},onSearchBarToggled:function(e){this.searchBarHidden=e},openSettingsModal:function(){this.$store.dispatch("openSettingsModal")}}},Ia=(0,Eo.Z)(Da,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("router-link"),a=(0,uo.up)("search-bar"),c=(0,uo.up)("FAIcon"),l=(0,uo.up)("confirm-modal");return(0,uo.wg)(),(0,uo.iD)("nav",{id:"nav",class:(0,po.C_)(["DesktopNav",{"-logoLeft":e.logoLeft}]),onClick:t[4]||(t[4]=function(t){return e.scrollToTop()})},[(0,uo._)("div",ma,[(0,uo._)("div",ha,[e.hideSitename?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.j4)(s,{key:0,class:"site-name",to:{name:"root"},"active-class":"home"},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.sitename),1)]})),_:1}))]),(0,uo.Wm)(s,{class:"logo",to:{name:"root"},style:(0,po.j5)(e.logoBgStyle),title:e.sitename},{default:(0,uo.w5)((function(){return[(0,uo._)("div",{class:"mask",style:(0,po.j5)(e.logoMaskStyle)},null,4),(0,uo._)("img",{src:e.logo,style:(0,po.j5)(e.logoStyle)},null,12,fa)]})),_:1},8,["style","title"]),(0,uo._)("div",ga,[e.currentUser||!e.privateMode?((0,uo.wg)(),(0,uo.j4)(a,{key:0,onToggled:e.onSearchBarToggled,onClick:t[0]||(t[0]=(0,ro.iM)((function(){}),["stop"]))},null,8,["onToggled"])):(0,uo.kq)("",!0),(0,uo._)("button",{class:"button-unstyled nav-icon",title:e.$t("nav.preferences"),onClick:t[1]||(t[1]=(0,ro.iM)((function(){return e.openSettingsModal&&e.openSettingsModal.apply(e,arguments)}),["stop"]))},[(0,uo.Wm)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog"})],8,va),e.currentUser&&"admin"===e.currentUser.role?((0,uo.wg)(),(0,uo.iD)("a",{key:1,href:"/pleroma/admin/#/login-pleroma",class:"nav-icon",target:"_blank",title:e.$t("nav.administration"),onClick:t[2]||(t[2]=(0,ro.iM)((function(){}),["stop"]))},[(0,uo.Wm)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt"})],8,wa)):(0,uo.kq)("",!0),ba,e.currentUser?((0,uo.wg)(),(0,uo.iD)("button",{key:2,class:"button-unstyled nav-icon",title:e.$t("login.logout"),onClick:t[3]||(t[3]=(0,ro.iM)((function(){return e.logout&&e.logout.apply(e,arguments)}),["stop","prevent"]))},[(0,uo.Wm)(c,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt"})],8,ya)):(0,uo.kq)("",!0)])]),((0,uo.wg)(),(0,uo.j4)(uo.lR,{to:"#modal"},[e.showingConfirmLogout?((0,uo.wg)(),(0,uo.j4)(l,{key:0,title:e.$t("login.logout_confirm_title"),"confirm-text":e.$t("login.logout_confirm_accept_button"),"cancel-text":e.$t("login.logout_confirm_cancel_button"),onAccepted:e.doLogout,onCancelled:e.hideConfirmLogout},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("login.logout_confirm")),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,uo.kq)("",!0)]))],2)}]]);var xa={class:"user-reporting-panel panel"},Ta={class:"panel-heading"},$a={class:"panel-body"},Ua={class:"user-reporting-panel-left"},Ma=["placeholder"],Aa={key:0},La=["disabled"],Ea={key:0,class:"alert error"},Fa={class:"user-reporting-panel-right"},Ra={class:"status-fadein user-reporting-panel-sitem"},qa=n(75245),Na=n(56773),Za=n(12061);function Wa(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const Ba={components:{Status:qa.default,List:Na.Z,Checkbox:ri.Z,Modal:Rt.Z,UserLink:Za.Z},data:function(){return{comment:"",forward:!1,statusIdsToReport:[],processing:!1,error:!1}},computed:{reportModal:function(){return this.$store.state.reports.reportModal},isLoggedIn:function(){return!!this.$store.state.users.currentUser},isOpen:function(){return this.isLoggedIn&&this.reportModal.activated},userId:function(){return this.reportModal.userId},user:function(){return this.$store.getters.findUser(this.userId)},remoteInstance:function(){return!this.user.is_local&&this.user.screen_name.substr(this.user.screen_name.indexOf("@")+1)},statuses:function(){return this.reportModal.statuses},preTickedIds:function(){return this.reportModal.preTickedIds}},watch:{userId:"resetState",preTickedIds:function(e){this.statusIdsToReport=e}},methods:{resetState:function(){this.comment="",this.forward=!1,this.statusIdsToReport=this.preTickedIds,this.processing=!1,this.error=!1},closeModal:function(){this.$store.dispatch("closeUserReportingModal")},reportUser:function(){var e=this;this.processing=!0,this.error=!1;var t={userId:this.userId,comment:this.comment,forward:this.forward,statusIds:this.statusIdsToReport};this.$store.state.api.backendInteractor.reportUser(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Wa(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Wa(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},t)).then((function(){e.processing=!1,e.resetState(),e.closeModal()})).catch((function(){e.processing=!1,e.error=!0}))},clearError:function(){this.error=!1},isChecked:function(e){return-1!==this.statusIdsToReport.indexOf(e)},toggleStatus:function(e,t){e!==this.isChecked(t)&&(e?this.statusIdsToReport.push(t):this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(t),1))},resize:function(e){var t=e.target||e;t instanceof window.Element&&(t.style.height="auto",t.style.height="".concat(t.scrollHeight,"px"),""===t.value&&(t.style.height=null))}}},Ha=(0,Eo.Z)(Ba,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("UserLink"),a=(0,uo.up)("i18n-t"),c=(0,uo.up)("Checkbox"),l=(0,uo.up)("Status"),u=(0,uo.up)("List"),d=(0,uo.up)("Modal");return e.isOpen?((0,uo.wg)(),(0,uo.j4)(d,{key:0,onBackdropClicked:e.closeModal},{default:(0,uo.w5)((function(){return[(0,uo._)("div",xa,[(0,uo._)("div",Ta,[(0,uo.Wm)(a,{tag:"div",keypath:"user_reporting.title",class:"title"},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(s,{user:e.user},null,8,["user"])]})),_:1})]),(0,uo._)("div",$a,[(0,uo._)("div",Ua,[(0,uo._)("div",null,[(0,uo._)("p",null,(0,po.zw)(e.$t("user_reporting.add_comment_description")),1),(0,uo.wy)((0,uo._)("textarea",{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.comment=t}),class:"form-control",placeholder:e.$t("user_reporting.additional_comments"),rows:"1",onInput:t[1]||(t[1]=function(){return e.resize&&e.resize.apply(e,arguments)})},null,40,Ma),[[ro.nr,e.comment]])]),e.user.is_local?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("div",Aa,[(0,uo._)("p",null,(0,po.zw)(e.$t("user_reporting.forward_description")),1),(0,uo.Wm)(c,{modelValue:e.forward,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.forward=t})},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("user_reporting.forward_to",[e.remoteInstance])),1)]})),_:1},8,["modelValue"])])),(0,uo._)("div",null,[(0,uo._)("button",{class:"btn button-default",disabled:e.processing,onClick:t[3]||(t[3]=function(){return e.reportUser&&e.reportUser.apply(e,arguments)})},(0,po.zw)(e.$t("user_reporting.submit")),9,La),e.error?((0,uo.wg)(),(0,uo.iD)("div",Ea,(0,po.zw)(e.$t("user_reporting.generic_error")),1)):(0,uo.kq)("",!0)])]),(0,uo._)("div",Fa,[(0,uo.Wm)(u,{items:e.statuses},{item:(0,uo.w5)((function(t){var n=t.item;return[(0,uo._)("div",Ra,[(0,uo.Wm)(l,{"in-conversation":!1,focused:!1,statusoid:n},null,8,["statusoid"]),(0,uo.Wm)(c,{"model-value":e.isChecked(n.id),"onUpdate:modelValue":function(t){return e.toggleStatus(t,n.id)}},null,8,["model-value","onUpdate:modelValue"])])]})),_:1},8,["items"])])])])]})),_:1},8,["onBackdropClicked"])):(0,uo.kq)("",!0)}]]);var Va={class:"edit-form-modal-panel panel"},Ka={class:"panel-heading"},Ga=n(7257);const Ya={components:{PostStatusForm:yr.Z,Modal:Rt.Z},data:function(){return{resettingForm:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},modalActivated:function(){return this.$store.state.editStatus.modalActivated},isFormVisible:function(){return this.isLoggedIn&&!this.resettingForm&&this.modalActivated},params:function(){return this.$store.state.editStatus.params||{}}},watch:{params:function(e,t){var n=this;Tt()(e,"statusId")!==Tt()(t,"statusId")&&(this.resettingForm=!0,this.$nextTick((function(){n.resettingForm=!1})))},isFormVisible:function(e){var t=this;e&&this.$nextTick((function(){return t.$el&&t.$el.querySelector("textarea").focus()}))}},methods:{doEditStatus:function(e){var t=e.status,n=e.spoilerText,o=e.sensitive,r=e.media,i=e.contentType,s=e.poll,a={store:this.$store,statusId:this.$store.state.editStatus.params.statusId,status:t,spoilerText:n,sensitive:o,poll:s,media:r,contentType:i};return Ga.Z.editStatus(a).then((function(e){return e})).catch((function(e){return console.error("Error editing status",e),{error:e.message}}))},closeModal:function(){this.$store.dispatch("closeEditStatusModal")}}},Ja=(0,Eo.Z)(Ya,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("PostStatusForm"),a=(0,uo.up)("Modal");return e.isFormVisible?((0,uo.wg)(),(0,uo.j4)(a,{key:0,class:"edit-form-modal-view",onBackdropClicked:e.closeModal},{default:(0,uo.w5)((function(){return[(0,uo._)("div",Va,[(0,uo._)("div",Ka,(0,po.zw)(e.$t("post_status.edit_status")),1),(0,uo.Wm)(s,(0,uo.dG)({class:"panel-body"},e.params,{"post-handler":e.doEditStatus,"disable-polls":!0,"disable-visibility-selector":!0,onPosted:e.closeModal}),null,16,["post-handler","onPosted"])])]})),_:1},8,["onBackdropClicked"])):(0,uo.kq)("",!0)}]]);var Qa={class:"post-form-modal-panel panel"},Xa={class:"panel-heading"};const ec={components:{PostStatusForm:yr.Z,Modal:Rt.Z},data:function(){return{resettingForm:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},modalActivated:function(){return this.$store.state.postStatus.modalActivated},isFormVisible:function(){return this.isLoggedIn&&!this.resettingForm&&this.modalActivated},params:function(){return this.$store.state.postStatus.params||{}}},watch:{params:function(e,t){var n=this;Tt()(e,"repliedUser.id")!==Tt()(t,"repliedUser.id")&&(this.resettingForm=!0,this.$nextTick((function(){n.resettingForm=!1})))},isFormVisible:function(e){var t=this;e&&this.$nextTick((function(){return t.$el&&t.$el.querySelector("textarea").focus()}))}},methods:{closeModal:function(){this.$store.dispatch("closePostStatusModal")}}},tc=(0,Eo.Z)(ec,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("PostStatusForm"),a=(0,uo.up)("Modal");return e.isLoggedIn&&!e.resettingForm?((0,uo.wg)(),(0,uo.j4)(a,{key:0,"is-open":e.modalActivated,class:"post-form-modal-view",onBackdropClicked:e.closeModal},{default:(0,uo.w5)((function(){return[(0,uo._)("div",Qa,[(0,uo._)("div",Xa,(0,po.zw)(e.$t("post_status.new_status")),1),(0,uo.Wm)(s,(0,uo.dG)({class:"panel-body"},e.params,{onPosted:e.closeModal}),null,16,["onPosted"])])]})),_:1},8,["is-open","onBackdropClicked"])):(0,uo.kq)("",!0)}]]);var nc={class:"status-history-modal-panel panel"},oc={class:"panel-heading"},rc={class:"panel-body"},ic={key:0,class:"history-body"};const sc={components:{Modal:Rt.Z,Status:qa.default},data:function(){return{statuses:[]}},computed:{modalActivated:function(){return this.$store.state.statusHistory.modalActivated},params:function(){return this.$store.state.statusHistory.params},statusId:function(){return this.params.id},historyCount:function(){return this.statuses.length},history:function(){return this.statuses}},watch:{params:function(e,t){var n=Tt()(e,"id")!==Tt()(t,"id");n&&this.resetHistory(),(n||Tt()(e,"edited_at")!==Tt()(t,"edited_at"))&&this.fetchStatusHistory()}},methods:{resetHistory:function(){this.statuses=[]},fetchStatusHistory:function(){var e=this;this.$store.dispatch("fetchStatusHistory",this.params).then((function(t){e.statuses=t}))},closeModal:function(){this.$store.dispatch("closeStatusHistoryModal")}}},ac=(0,Eo.Z)(sc,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("status"),a=(0,uo.up)("Modal");return e.modalActivated?((0,uo.wg)(),(0,uo.j4)(a,{key:0,class:"status-history-modal-view",onBackdropClicked:e.closeModal},{default:(0,uo.w5)((function(){return[(0,uo._)("div",nc,[(0,uo._)("div",oc,(0,po.zw)(e.$t("status.status_history"))+" ("+(0,po.zw)(e.historyCount)+") ",1),(0,uo._)("div",rc,[e.historyCount>0?((0,uo.wg)(),(0,uo.iD)("div",ic,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.history,(function(e){return(0,uo.wg)(),(0,uo.j4)(s,{key:e.id,statusoid:e,"is-preview":!0,class:"conversation-status status-fadein panel-body"},null,8,["statusoid"])})),128))])):(0,uo.kq)("",!0)])])]})),_:1},8,["onBackdropClicked"])):(0,uo.kq)("",!0)}]]);var cc={class:"global-notice-list"},lc={class:"notice-message"},uc=["onClick"];qt.vI.add(Nt.NBC);const dc={computed:{notices:function(){return this.$store.state.interface.globalNotices}},methods:{closeNotice:function(e){this.$store.dispatch("removeGlobalNotice",e)}}},pc=(0,Eo.Z)(dc,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon");return(0,uo.wg)(),(0,uo.iD)("div",cc,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.notices,(function(t,n){return(0,uo.wg)(),(0,uo.iD)("div",{key:n,class:(0,po.C_)(["alert global-notice",(0,d.Z)({},"global-"+t.level,!0)])},[(0,uo._)("div",lc,(0,po.zw)(e.$t(t.messageKey,t.messageArgs)),1),(0,uo._)("button",{class:"button-unstyled close-notice",onClick:function(n){return e.closeNotice(t)}},[(0,uo.Wm)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})],8,uc)],2)})),128))])}]]);function mc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const hc={name:"app",components:{UserPanel:jr,NavPanel:ci,Notifications:(0,uo.RC)((function(){return Promise.resolve().then(n.bind(n,50332))})),InstanceSpecificPanel:hi,FeaturesPanel:Pi,WhoToFollowPanel:qi,ShoutPanel:ns,MediaModal:Is,SideDrawer:Ns,MobilePostStatusButton:Ks,MobileNav:pa,DesktopNav:Ia,SettingsModal:(0,uo.RC)((function(){return n.e(5948).then(n.bind(n,75948))})),UpdateNotification:(0,uo.RC)((function(){return n.e(6464).then(n.bind(n,16464))})),UserReportingModal:Ha,PostStatusModal:tc,EditStatusModal:Ja,StatusHistoryModal:ac,GlobalNoticeList:pc},data:function(){return{mobileActivePanel:"timeline"}},created:function(){var e=this.$store.getters.mergedConfig.interfaceLanguage;this.$store.dispatch("setOption",{name:"interfaceLanguage",value:e}),window.addEventListener("resize",this.updateMobileState)},unmounted:function(){window.removeEventListener("resize",this.updateMobileState)},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mc(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classes:function(){return[{"-reverse":this.reverseLayout,"-no-sticky-headers":this.noSticky,"-has-new-post-button":this.newPostButtonShown},"-"+this.layoutType]},navClasses:function(){var e=this.$store.getters.mergedConfig.navbarColumnStretch;return["-"+this.layoutType].concat((0,u.Z)(e?["-column-stretch"]:[]))},currentUser:function(){return this.$store.state.users.currentUser},userBackground:function(){return this.currentUser.background_image},instanceBackground:function(){return this.mergedConfig.hideInstanceWallpaper?null:this.$store.state.instance.background},background:function(){return this.userBackground||this.instanceBackground},bgStyle:function(){if(this.background)return{"--body-background-image":"url(".concat(this.background,")")}},shout:function(){return this.$store.state.shout.joined},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent},isChats:function(){return"chat"===this.$route.name||"chats"===this.$route.name},isListEdit:function(){return"lists-edit"===this.$route.name},newPostButtonShown:function(){return!this.isChats&&!this.isListEdit&&(this.$store.getters.mergedConfig.alwaysShowNewPostButton||"mobile"===this.layoutType)},showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},editingAvailable:function(){return this.$store.state.instance.editingAvailable},shoutboxPosition:function(){return this.$store.getters.mergedConfig.alwaysShowNewPostButton||!1},hideShoutbox:function(){return this.$store.getters.mergedConfig.hideShoutbox},layoutType:function(){return this.$store.state.interface.layoutType},privateMode:function(){return this.$store.state.instance.private},reverseLayout:function(){var e=this.$store.getters.mergedConfig,t=e.thirdColumnMode,n=e.sidebarRight;return"wide"!==this.layoutType||"notifications"===t?n:!n},noSticky:function(){return this.$store.getters.mergedConfig.disableStickyHeaders},showScrollbars:function(){return this.$store.getters.mergedConfig.showScrollbars}},(0,s.Se)(["mergedConfig"])),methods:{updateMobileState:function(){this.$store.dispatch("setLayoutWidth",Me()),this.$store.dispatch("setLayoutHeight",Ae())}}},fc=(0,Eo.Z)(hc,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("MobileNav"),a=(0,uo.up)("DesktopNav"),c=(0,uo.up)("Notifications"),l=(0,uo.up)("user-panel"),u=(0,uo.up)("nav-panel"),d=(0,uo.up)("instance-specific-panel"),p=(0,uo.up)("features-panel"),m=(0,uo.up)("who-to-follow-panel"),h=(0,uo.up)("router-link"),f=(0,uo.up)("router-view"),g=(0,uo.up)("MediaModal"),v=(0,uo.up)("shout-panel"),w=(0,uo.up)("MobilePostStatusButton"),b=(0,uo.up)("UserReportingModal"),y=(0,uo.up)("PostStatusModal"),_=(0,uo.up)("EditStatusModal"),k=(0,uo.up)("StatusHistoryModal"),S=(0,uo.up)("SettingsModal"),j=(0,uo.up)("UpdateNotification"),C=(0,uo.up)("GlobalNoticeList");return(0,uo.wg)(),(0,uo.iD)("div",{id:"app-loaded",style:(0,po.j5)(e.bgStyle)},[mo,"mobile"===e.layoutType?((0,uo.wg)(),(0,uo.j4)(s,{key:0})):((0,uo.wg)(),(0,uo.j4)(a,{key:1,class:(0,po.C_)(e.navClasses)},null,8,["class"])),e.currentUser?((0,uo.wg)(),(0,uo.j4)(c,{key:2})):(0,uo.kq)("",!0),(0,uo._)("div",{id:"content",class:(0,po.C_)(["app-layout container",e.classes])},[ho,(0,uo._)("div",{id:"sidebar",class:(0,po.C_)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},[(0,uo.Wm)(l),"mobile"!==e.layoutType?((0,uo.wg)(),(0,uo.iD)(uo.HY,{key:0},[(0,uo.Wm)(u),e.showInstanceSpecificPanel?((0,uo.wg)(),(0,uo.j4)(d,{key:0})):(0,uo.kq)("",!0),!e.currentUser&&e.showFeaturesPanel?((0,uo.wg)(),(0,uo.j4)(p,{key:1})):(0,uo.kq)("",!0),e.currentUser&&e.suggestionsEnabled?((0,uo.wg)(),(0,uo.j4)(m,{key:2})):(0,uo.kq)("",!0),fo],64)):(0,uo.kq)("",!0)],2),(0,uo._)("main",{id:"main-scroller",class:(0,po.C_)(["column main",{"-full-height":e.isChats||e.isListEdit}])},[e.currentUser?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("div",go,[(0,uo.Wm)(h,{to:{name:"login"},class:"panel-body"},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("login.hint")),1)]})),_:1})])),(0,uo.Wm)(f)],2),(0,uo._)("div",{id:"notifs-column",class:(0,po.C_)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},null,2)],2),(0,uo.Wm)(g),e.currentUser&&e.shout&&!e.hideShoutbox?((0,uo.wg)(),(0,uo.j4)(v,{key:3,floating:!0,class:(0,po.C_)(["floating-shout mobile-hidden",{"-left":e.shoutboxPosition}])},null,8,["class"])):(0,uo.kq)("",!0),(0,uo.Wm)(w),(0,uo.Wm)(b),(0,uo.Wm)(y),e.editingAvailable?((0,uo.wg)(),(0,uo.j4)(_,{key:4})):(0,uo.kq)("",!0),e.editingAvailable?((0,uo.wg)(),(0,uo.j4)(k,{key:5})):(0,uo.kq)("",!0),(0,uo.Wm)(S),(0,uo.Wm)(j),(0,uo.Wm)(C)],4)}]]);var gc={key:1,class:"rightside-button"},vc=["title"],wc={key:0,class:"rightside-button"},bc=["title"],yc={class:"alert-badge"},_c=["title"],kc={ref:"timeline",class:"timeline",role:"feed"},Sc={key:0,class:"new-status-notification text-center faint"},jc={key:1,class:"new-status-notification text-center faint"},Cc={class:"new-status-notification text-center"},Oc={key:3,class:"new-status-notification text-center"},Pc=n(24350),zc=n.n(Pc),Dc=n(23493),Ic=n.n(Dc),xc={key:0,class:"panel-heading conversation-heading -sticky"},Tc={class:"title"},$c={class:"conversation-body panel-body"},Uc={key:0,class:"thread-body"},Mc={key:0,class:"conversation-dive-to-top-level-box"},Ac={key:1,class:"thread-ancestors"},Lc={key:0,class:"thread-ancestor-dive-box"},Ec={class:"thread-ancestor-dive-box-inner"},Fc={key:1,class:"thread-body"},Rc=n(66678),qc=n.n(Rc),Nc={class:"thread-tree"},Zc={key:0,class:"thread-tree-replies"},Wc={key:1,class:"thread-tree-replies thread-tree-replies-hidden"};qt.vI.add(Nt.Sbq,Nt.cLY);const Bc={components:{Status:qa.default},name:"ThreadTree",props:{depth:Number,status:Object,inProfile:Boolean,conversation:Array,collapsable:Boolean,isExpanded:Boolean,pinnedStatusIdsObject:Object,profileUserId:String,focused:Function,highlight:String,getReplies:Function,setHighlight:Function,toggleExpanded:Function,simple:Boolean,toggleThreadDisplay:Function,threadDisplayStatus:Object,showThreadRecursively:Function,totalReplyCount:Object,totalReplyDepth:Object,statusContentProperties:Object,setStatusContentProperty:Function,toggleStatusContentProperty:Function,dive:Function},computed:{suspendable:function(){var e=!this.$refs.statusComponent||this.$refs.statusComponent.suspendable;return this.$refs.childComponent?e&&this.$refs.childComponent.every((function(e){return e.suspendable})):e},reverseLookupTable:function(){return this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{})},currentReplies:function(){var e=this;return this.getReplies(this.status.id).map((function(t){var n=t.id;return e.statusById(n)}))},threadShowing:function(){return"showing"===this.threadDisplayStatus[this.status.id]},currentProp:function(){return this.statusContentProperties[this.status.id]}},methods:{statusById:function(e){return this.conversation[this.reverseLookupTable[e]]},collapseThread:function(){},showThread:function(){},showAllSubthreads:function(){},toggleCurrentProp:function(e){this.toggleStatusContentProperty(this.status.id,e)},setCurrentProp:function(e,t){this.setStatusContentProperty(this.status.id,e)}}},Hc=(0,Eo.Z)(Bc,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("status"),a=(0,uo.up)("thread-tree"),c=(0,uo.up)("FAIcon"),l=(0,uo.up)("i18n-t");return(0,uo.wg)(),(0,uo.iD)("article",Nc,[((0,uo.wg)(),(0,uo.j4)(s,{key:e.status.id,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:e.status,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[e.status.id],focused:e.focused(e.status.id),"in-conversation":e.isExpanded,highlight:e.highlight,replies:e.getReplies(e.status.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status conversation-status-treeview status-fadein panel-body","simple-tree":e.simple,"controlled-thread-display-status":e.threadDisplayStatus[e.status.id],"controlled-toggle-thread-display":function(){return e.toggleThreadDisplay(e.status.id)},"controlled-showing-tall":e.currentProp.showingTall,"controlled-expanding-subject":e.currentProp.expandingSubject,"controlled-showing-long-subject":e.currentProp.showingLongSubject,"controlled-replying":e.currentProp.replying,"controlled-media-playing":e.currentProp.mediaPlaying,"controlled-toggle-showing-tall":function(){return e.toggleCurrentProp("showingTall")},"controlled-toggle-expanding-subject":function(){return e.toggleCurrentProp("expandingSubject")},"controlled-toggle-showing-long-subject":function(){return e.toggleCurrentProp("showingLongSubject")},"controlled-toggle-replying":function(){return e.toggleCurrentProp("replying")},"controlled-set-media-playing":function(t){return e.setCurrentProp("mediaPlaying",t)},dive:e.dive?function(){return e.dive(e.status.id)}:void 0,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","controlled-thread-display-status","controlled-toggle-thread-display","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","dive","onGoto","onToggleExpanded"])),e.currentReplies.length&&e.threadShowing?((0,uo.wg)(),(0,uo.iD)("div",Zc,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.currentReplies,(function(t){return(0,uo.wg)(),(0,uo.j4)(a,{key:t.id,ref_for:!0,ref:"childComponent",depth:e.depth+1,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.highlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.simple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.dive},null,8,["depth","status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"])})),128))])):(0,uo.kq)("",!0),e.currentReplies.length&&!e.threadShowing?((0,uo.wg)(),(0,uo.iD)("div",Wc,[e.simple?((0,uo.wg)(),(0,uo.j4)(l,{key:0,scope:"global",tag:"button",keypath:"status.thread_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[0]||(t[0]=(0,ro.iM)((function(t){return e.dive(e.status.id)}),["prevent"]))},{icon:(0,uo.w5)((function(){return[(0,uo.Wm)(c,{icon:"angle-double-right"})]})),text:(0,uo.w5)((function(){return[(0,uo._)("span",null,(0,po.zw)(e.$tc("status.thread_follow",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id]})),1)]})),_:1})):((0,uo.wg)(),(0,uo.j4)(l,{key:1,scope:"global",tag:"button",keypath:"status.thread_show_full_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[1]||(t[1]=(0,ro.iM)((function(t){return e.showThreadRecursively(e.status.id)}),["prevent"]))},{icon:(0,uo.w5)((function(){return[(0,uo.Wm)(c,{icon:"angle-double-down"})]})),text:(0,uo.w5)((function(){return[(0,uo._)("span",null,(0,po.zw)(e.$tc("status.thread_show_full",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id],depth:e.totalReplyDepth[e.status.id]})),1)]})),_:1}))])):(0,uo.kq)("",!0)])}]]);var Vc={class:"dropdown-menu",role:"menu"},Kc={key:0,role:"group"},Gc=["aria-checked"],Yc=["aria-checked"],Jc=["aria-checked"],Qc={key:3,role:"separator",class:"dropdown-divider"},Xc=["aria-checked"],el=["aria-checked"],tl=["aria-checked"],nl=n(91447);function ol(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function rl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ol(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ol(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.G_j,Nt.yGG,Nt.klh);const il={props:{conversation:Boolean},components:{Popover:nl.default},methods:{setReplyVisibility:function(e){this.$store.dispatch("setOption",{name:"replyVisibility",value:e}),this.$store.dispatch("queueFlushAll")},openTab:function(e){this.$store.dispatch("openSettingsModalTab",e)}},computed:rl(rl({},(0,s.Se)(["mergedConfig"])),{},{loggedIn:function(){return!!this.$store.state.users.currentUser},replyVisibilitySelf:{get:function(){return"self"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("self")}},replyVisibilityFollowing:{get:function(){return"following"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("following")}},replyVisibilityAll:{get:function(){return"all"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("all")}},hideMedia:{get:function(){return this.mergedConfig.hideAttachments||this.mergedConfig.hideAttachmentsInConv},set:function(){var e=!this.hideMedia;this.$store.dispatch("setOption",{name:"hideAttachments",value:e}),this.$store.dispatch("setOption",{name:"hideAttachmentsInConv",value:e})}},hideMutedPosts:{get:function(){return this.mergedConfig.hideFilteredStatuses},set:function(){var e=!this.hideMutedPosts;this.$store.dispatch("setOption",{name:"hideFilteredStatuses",value:e})}},muteBotStatuses:{get:function(){return this.mergedConfig.muteBotStatuses},set:function(){var e=!this.muteBotStatuses;this.$store.dispatch("setOption",{name:"muteBotStatuses",value:e})}}})},sl=(0,Eo.Z)(il,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon"),a=(0,uo.up)("Popover");return(0,uo.wg)(),(0,uo.j4)(a,{trigger:"click",class:"QuickFilterSettings","bound-to":{x:"container"},"trigger-attrs":{title:e.$t("timeline.quick_filter_settings")}},{content:(0,uo.w5)((function(){return[(0,uo._)("div",Vc,[e.loggedIn?((0,uo.wg)(),(0,uo.iD)("div",Kc,[e.conversation?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:"button-default dropdown-item","aria-checked":e.replyVisibilityAll,role:"menuitemradio",onClick:t[0]||(t[0]=function(t){return e.replyVisibilityAll=!0})},[(0,uo._)("span",{class:(0,po.C_)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityAll}]),"aria-hidden":!0},null,2),(0,uo.Uk)((0,po.zw)(e.$t("settings.reply_visibility_all")),1)],8,Gc)),e.conversation?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("button",{key:1,class:"button-default dropdown-item","aria-checked":e.replyVisibilityFollowing,role:"menuitemradio",onClick:t[1]||(t[1]=function(t){return e.replyVisibilityFollowing=!0})},[(0,uo._)("span",{class:(0,po.C_)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityFollowing}]),"aria-hidden":!0},null,2),(0,uo.Uk)((0,po.zw)(e.$t("settings.reply_visibility_following_short")),1)],8,Yc)),e.conversation?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("button",{key:2,class:"button-default dropdown-item","aria-checked":e.replyVisibilitySelf,role:"menuitemradio",onClick:t[2]||(t[2]=function(t){return e.replyVisibilitySelf=!0})},[(0,uo._)("span",{class:(0,po.C_)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilitySelf}]),"aria-hidden":!0},null,2),(0,uo.Uk)((0,po.zw)(e.$t("settings.reply_visibility_self_short")),1)],8,Jc)),e.conversation?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("div",Qc))])):(0,uo.kq)("",!0),(0,uo._)("button",{class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.muteBotStatuses,onClick:t[3]||(t[3]=function(t){return e.muteBotStatuses=!e.muteBotStatuses})},[(0,uo._)("span",{class:(0,po.C_)(["menu-checkbox",{"menu-checkbox-checked":e.muteBotStatuses}]),"aria-hidden":!0},null,2),(0,uo.Uk)((0,po.zw)(e.$t("settings.mute_bot_posts")),1)],8,Xc),(0,uo._)("button",{class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.hideMedia,onClick:t[4]||(t[4]=function(t){return e.hideMedia=!e.hideMedia})},[(0,uo._)("span",{class:(0,po.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hideMedia}]),"aria-hidden":!0},null,2),(0,uo.Uk)((0,po.zw)(e.$t("settings.hide_media_previews")),1)],8,el),(0,uo._)("button",{class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.hideMutedPosts,onClick:t[5]||(t[5]=function(t){return e.hideMutedPosts=!e.hideMutedPosts})},[(0,uo._)("span",{class:(0,po.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hideMutedPosts}]),"aria-hidden":!0},null,2),(0,uo.Uk)((0,po.zw)(e.$t("settings.hide_all_muted_posts")),1)],8,tl),(0,uo._)("button",{class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:t[6]||(t[6]=function(t){return e.openTab("filtering")})},[(0,uo.Wm)(s,{icon:"font"}),(0,uo.Uk)((0,po.zw)(e.$t("settings.word_filter_and_more")),1)])])]})),trigger:(0,uo.w5)((function(){return[(0,uo.Wm)(s,{icon:"filter"})]})),_:1},8,["trigger-attrs"])}]]);var al={class:"dropdown-menu",role:"menu"},cl={role:"group"},ll=["aria-checked"],ul=["aria-checked"],dl=(0,uo._)("div",{role:"separator",class:"dropdown-divider"},null,-1),pl=["aria-checked"],ml=["aria-checked"],hl=["aria-checked"];function fl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function gl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?fl(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):fl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.Zrf,Nt.lCn,Nt.xiG,Nt.klh);const vl={props:{conversation:Boolean},components:{Popover:nl.default},methods:{setConversationDisplay:function(e){this.$store.dispatch("setOption",{name:"conversationDisplay",value:e})},openTab:function(e){this.$store.dispatch("openSettingsModalTab",e)}},computed:gl(gl({},(0,s.Se)(["mergedConfig"])),{},{loggedIn:function(){return!!this.$store.state.users.currentUser},conversationDisplay:{get:function(){return this.mergedConfig.conversationDisplay},set:function(e){this.setConversationDisplay(e)}},autoUpdate:{get:function(){return this.mergedConfig.streaming},set:function(){var e=!this.autoUpdate;this.$store.dispatch("setOption",{name:"streaming",value:e})}},collapseWithSubjects:{get:function(){return this.mergedConfig.collapseMessageWithSubject},set:function(){var e=!this.collapseWithSubjects;this.$store.dispatch("setOption",{name:"collapseMessageWithSubject",value:e})}},showUserAvatars:{get:function(){return this.mergedConfig.mentionLinkShowAvatar},set:function(){var e=!this.showUserAvatars;console.log(e),this.$store.dispatch("setOption",{name:"mentionLinkShowAvatar",value:e})}},muteBotStatuses:{get:function(){return this.mergedConfig.muteBotStatuses},set:function(){var e=!this.muteBotStatuses;this.$store.dispatch("setOption",{name:"muteBotStatuses",value:e})}}})},wl=(0,Eo.Z)(vl,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon"),a=(0,uo.up)("Popover");return(0,uo.wg)(),(0,uo.j4)(a,{trigger:"click",class:"QuickViewSettings","bound-to":{x:"container"},"trigger-attrs":{title:e.$t("timeline.quick_view_settings")}},{content:(0,uo.w5)((function(){return[(0,uo._)("div",al,[(0,uo._)("div",cl,[(0,uo._)("button",{class:"button-default dropdown-item","aria-checked":"tree"===e.conversationDisplay,role:"menuitemradio",onClick:t[0]||(t[0]=function(t){return e.conversationDisplay="tree"})},[(0,uo._)("span",{class:(0,po.C_)(["menu-checkbox -radio",{"menu-checkbox-checked":"tree"===e.conversationDisplay}]),"aria-hidden":!0},null,2),(0,uo.Wm)(s,{icon:"folder-tree","aria-hidden":!0}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("settings.conversation_display_tree_quick")),1)],8,ll),(0,uo._)("button",{class:"button-default dropdown-item","aria-checked":"linear"===e.conversationDisplay,role:"menuitemradio",onClick:t[1]||(t[1]=function(t){return e.conversationDisplay="linear"})},[(0,uo._)("span",{class:(0,po.C_)(["menu-checkbox -radio",{"menu-checkbox-checked":"linear"===e.conversationDisplay}]),"aria-hidden":!0},null,2),(0,uo.Wm)(s,{icon:"list","aria-hidden":!0}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("settings.conversation_display_linear_quick")),1)],8,ul)]),dl,(0,uo._)("button",{class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.showUserAvatars,onClick:t[2]||(t[2]=function(t){return e.showUserAvatars=!e.showUserAvatars})},[(0,uo._)("span",{class:(0,po.C_)(["menu-checkbox",{"menu-checkbox-checked":e.showUserAvatars}]),"aria-hidden":!0},null,2),(0,uo.Uk)((0,po.zw)(e.$t("settings.mention_link_show_avatar_quick")),1)],8,pl),e.conversation?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.autoUpdate,onClick:t[3]||(t[3]=function(t){return e.autoUpdate=!e.autoUpdate})},[(0,uo._)("span",{class:(0,po.C_)(["menu-checkbox",{"menu-checkbox-checked":e.autoUpdate}]),"aria-hidden":!0},null,2),(0,uo.Uk)((0,po.zw)(e.$t("settings.auto_update")),1)],8,ml)),e.conversation?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("button",{key:1,class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.collapseWithSubjects,onClick:t[4]||(t[4]=function(t){return e.collapseWithSubjects=!e.collapseWithSubjects})},[(0,uo._)("span",{class:(0,po.C_)(["menu-checkbox",{"menu-checkbox-checked":e.collapseWithSubjects}]),"aria-hidden":!0},null,2),(0,uo.Uk)((0,po.zw)(e.$t("settings.collapse_subject")),1)],8,hl)),(0,uo._)("button",{class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:t[5]||(t[5]=function(t){return e.openTab("general")})},[(0,uo.Wm)(s,{icon:"wrench"}),(0,uo.Uk)((0,po.zw)(e.$t("settings.more_settings")),1)])])]})),trigger:(0,uo.w5)((function(){return[(0,uo.Wm)(s,{icon:"bars"})]})),_:1},8,["trigger-attrs"])}]]);function bl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function yl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?bl(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):bl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.Sbq,Nt.UXu,Nt.A35);var _l=function(e,t){var n="retweet"===e.type?e.retweeted_status.id:e.id,o="retweet"===t.type?t.retweeted_status.id:t.id,r=Number(n),i=Number(o),s=!Number.isNaN(r),a=!Number.isNaN(i);return s&&a?r<i?-1:1:s&&!a?-1:!s&&a?1:n<o?-1:1};const kl={data:function(){return{highlight:null,expanded:!1,threadDisplayStatusObject:{},statusContentPropertiesObject:{},inlineDivePosition:null}},props:["statusId","collapsable","isPage","pinnedStatusIdsObject","inProfile","profileUserId","virtualHidden"],created:function(){this.isPage&&this.fetchConversation()},computed:yl(yl({maxDepthToShowByDefault:function(){var e=this.$store.getters.mergedConfig.maxDepthInThread-2;return e>=1?e:1},streamingEnabled:function(){return this.mergedConfig.useStreamingApi&&this.mastoUserSocketStatus===h._z.JOINED},displayStyle:function(){return this.$store.getters.mergedConfig.conversationDisplay},isTreeView:function(){return!this.isLinearView},treeViewIsSimple:function(){return!this.$store.getters.mergedConfig.conversationTreeAdvanced},isLinearView:function(){return"linear"===this.displayStyle},shouldFadeAncestors:function(){return this.$store.getters.mergedConfig.conversationTreeFadeAncestors},otherRepliesButtonPosition:function(){return this.$store.getters.mergedConfig.conversationOtherRepliesButton},showOtherRepliesButtonBelowStatus:function(){return"below"===this.otherRepliesButtonPosition},showOtherRepliesButtonInsideStatus:function(){return"inside"===this.otherRepliesButtonPosition},suspendable:function(){return this.isTreeView?Object.entries(this.statusContentProperties).every((function(e){var t=(0,l.Z)(e,2),n=(t[0],t[1]);return!n.replying&&0===n.mediaPlaying.length})):!this.$refs.statusComponent||!this.$refs.statusComponent[0]||this.$refs.statusComponent.every((function(e){return e.suspendable}))},hideStatus:function(){return this.virtualHidden&&this.suspendable},status:function(){return this.$store.state.statuses.allStatusesObject[this.statusId]},originalStatusId:function(){return this.status.retweeted_status?this.status.retweeted_status.id:this.statusId},conversationId:function(){return this.getConversationId(this.statusId)},conversation:function(){if(!this.status)return[];if(!this.isExpanded)return[this.status];var e=qc()(this.$store.state.statuses.conversationsObject[this.conversationId]),t=q()(e,{id:this.originalStatusId});return-1!==t&&(e[t]=this.status),function(e,t){return(e="retweet"===t.type?yn()(e,(function(e){return"retweet"===e.type||e.id!==t.retweeted_status.id})):yn()(e,(function(e){return"retweet"!==e.type}))).filter((function(e){return e})).sort(_l)}(e,this.status)},statusMap:function(){return this.conversation.reduce((function(e,t){return e[t.id]=t,e}),{})},threadTree:function(){var e=this,t=this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{}),n=function n(o,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return r.map((function(r){return s[r]?[]:(s[r]=!0,[{status:e.conversation[t[r]],id:r,depth:i},n(o,o[r],i+1,s)].reduce((function(e,t){return e.concat(t)}),[]))})).reduce((function(e,t){return e.concat(t)}),[])}(this.conversation.reduce((function(t,n){var o=n.id;return t.forest[o]=e.getReplies(o).map((function(e){return e.id})),t}),{forest:{}}).forest,this.topLevel.map((function(e){return e.id})));return n},replyIds:function(){var e=this;return this.conversation.map((function(e){return e.id})).reduce((function(t,n){return t[n]=(e.replies[n]||[]).map((function(e){return e.id})),t}),{})},totalReplyCount:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(o){return t[o]||(t[o]=1+e.replyIds[o].map((function(e){return n(e)})).reduce((function(e,t){return e+t}),0)),t[o]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},totalReplyDepth:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(o){return t[o]||(t[o]=1+e.replyIds[o].map((function(e){return n(e)})).reduce((function(e,t){return e>t?e:t}),0)),t[o]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},depths:function(){return this.threadTree.reduce((function(e,t){return e[t.id]=t.depth,e}),{})},topLevel:function(){var e=this;return this.conversation.reduce((function(t,n){return t.filter((function(t){return-1===e.getReplies(n.id).map((function(e){return e.id})).indexOf(t.id)}))}),this.conversation)},otherTopLevelCount:function(){return this.topLevel.length-1},showingTopLevel:function(){return this.canDive&&this.diveRoot?[this.statusMap[this.diveRoot]]:this.topLevel},diveRoot:function(){var e=this.inlineDivePosition||this.statusId;return this.parentOf(e)?e:null},diveDepth:function(){return this.canDive&&this.diveRoot?this.depths[this.diveRoot]:0},diveMode:function(){return this.canDive&&!!this.diveRoot},shouldShowAllConversationButton:function(){return this.isTreeView&&this.isExpanded&&this.diveMode&&this.topLevel.length>1},shouldShowAncestors:function(){return this.isTreeView&&this.isExpanded&&this.ancestorsOf(this.diveRoot).length},replies:function(){var e=1;return Ee()(this.conversation,(function(t,n){var o=n.id,r=n.in_reply_to_status_id;return r&&(t[r]=t[r]||[],t[r].push({name:"#".concat(e),id:o})),e++,t}),{})},isExpanded:function(){return!(!this.expanded&&!this.isPage)},hiddenStyle:function(){var e=this.status&&this.status.virtualHeight||"120px";return this.virtualHidden?{height:e}:{}},threadDisplayStatus:function(){var e=this;return this.conversation.reduce((function(t,n){var o=n.id,r=e.depths[o],i=e.threadDisplayStatusObject[o]?e.threadDisplayStatusObject[o]:r-e.diveDepth<=e.maxDepthToShowByDefault?"showing":"hidden";return t[o]=i,t}),{})},statusContentProperties:function(){var e=this;return this.conversation.reduce((function(t,n){var o,r=n.id,i=(o={showingTall:!1,expandingSubject:!1,showingLongSubject:!1,isReplying:!1,mediaPlaying:[]},e.statusContentPropertiesObject[r]?yl(yl({},o),e.statusContentPropertiesObject[r]):o);return t[r]=i,t}),{})},canDive:function(){return this.isTreeView&&this.isExpanded},focused:function(){var e=this;return function(t){return e.isExpanded&&t===e.highlight}},maybeHighlight:function(){return this.isExpanded?this.highlight:null}},(0,s.Se)(["mergedConfig"])),(0,s.rn)({mastoUserSocketStatus:function(e){return e.api.mastoUserSocketStatus}})),components:{Status:qa.default,ThreadTree:Hc,QuickFilterSettings:sl,QuickViewSettings:wl},watch:{statusId:function(e,t){var n=this.getConversationId(e),o=this.getConversationId(t);n&&o&&n===o?this.setHighlight(this.originalStatusId):this.fetchConversation()},expanded:function(e){e?this.fetchConversation():this.resetDisplayState()},virtualHidden:function(e){this.$store.dispatch("setVirtualHeight",{statusId:this.statusId,height:"".concat(this.$el.clientHeight,"px")})}},methods:{fetchConversation:function(){var e=this;this.status?this.$store.state.api.backendInteractor.fetchConversation({id:this.statusId}).then((function(t){var n=t.ancestors,o=t.descendants;e.$store.dispatch("addNewStatuses",{statuses:n}),e.$store.dispatch("addNewStatuses",{statuses:o}),e.setHighlight(e.originalStatusId)})):this.$store.state.api.backendInteractor.fetchStatus({id:this.statusId}).then((function(t){e.$store.dispatch("addNewStatuses",{statuses:[t]}),e.fetchConversation()}))},getReplies:function(e){return this.replies[e]||[]},getHighlight:function(){return this.isExpanded?this.highlight:null},setHighlight:function(e){e&&(this.highlight=e,this.streamingEnabled||this.$store.dispatch("fetchStatus",e),this.$store.dispatch("fetchFavsAndRepeats",e),this.$store.dispatch("fetchEmojiReactionsBy",e))},toggleExpanded:function(){this.expanded=!this.expanded},getConversationId:function(e){var t=this.$store.state.statuses.allStatusesObject[e];return Tt()(t,"retweeted_status.statusnet_conversation_id",Tt()(t,"statusnet_conversation_id"))},setThreadDisplay:function(e,t){this.threadDisplayStatusObject=yl(yl({},this.threadDisplayStatusObject),{},(0,d.Z)({},e,t))},toggleThreadDisplay:function(e){var t="showing"===this.threadDisplayStatus[e]?"hidden":"showing";this.setThreadDisplay(e,t)},setThreadDisplayRecursively:function(e,t){var n=this;this.setThreadDisplay(e,t),this.getReplies(e).map((function(e){return e.id})).map((function(e){return n.setThreadDisplayRecursively(e,t)}))},showThreadRecursively:function(e){this.setThreadDisplayRecursively(e,"showing")},setStatusContentProperty:function(e,t,n){this.statusContentPropertiesObject=yl(yl({},this.statusContentPropertiesObject),{},(0,d.Z)({},e,yl(yl({},this.statusContentPropertiesObject[e]),{},(0,d.Z)({},t,n))))},toggleStatusContentProperty:function(e,t){this.setStatusContentProperty(e,t,!this.statusContentProperties[e][t])},leastVisibleAncestor:function(e){for(var t=e,n=this.parentOf(t);t;){if("showing"===this.threadDisplayStatus[n])return t;n=this.parentOf(n),t=this.parentOf(t)}return this.topLevel[0]?this.topLevel[0].id:void 0},diveIntoStatus:function(e,t){this.tryScrollTo(e)},diveToTopLevel:function(){this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot)||this.topLevel[0].id)},undive:function(){this.inlineDivePosition=null,this.setHighlight(this.statusId)},tryScrollTo:function(e){var t=this;e&&(this.isPage?this.$router.push({name:"conversation",params:{id:e}}):this.inlineDivePosition=e,this.$nextTick((function(){t.setHighlight(e)})))},goToCurrent:function(){this.tryScrollTo(this.diveRoot||this.topLevel[0].id)},statusById:function(e){return this.statusMap[e]},parentOf:function(e){var t=this.statusById(e);if(t){var n=t.in_reply_to_status_id;if(this.statusMap[n])return n}},parentOrSelf:function(e){return this.parentOf(e)||e},ancestorsOf:function(e){for(var t=[],n=this.parentOf(e);n;)t.unshift(this.statusMap[n]),n=this.parentOf(n);return t},topLevelAncestorOrSelfId:function(e){for(var t=e,n=this.parentOf(e);n;)t=this.parentOf(t),n=this.parentOf(n);return t},resetDisplayState:function(){this.undive(),this.threadDisplayStatusObject={}}}},Sl=(0,Eo.Z)(kl,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("QuickFilterSettings"),a=(0,uo.up)("QuickViewSettings"),c=(0,uo.up)("FAIcon"),l=(0,uo.up)("i18n-t"),u=(0,uo.up)("status"),d=(0,uo.up)("thread-tree");return e.hideStatus?((0,uo.wg)(),(0,uo.iD)("div",{key:1,style:(0,po.j5)(e.hiddenStyle)},null,4)):((0,uo.wg)(),(0,uo.iD)("div",{key:0,style:(0,po.j5)(e.hiddenStyle),class:(0,po.C_)(["Conversation",{"-expanded":e.isExpanded,panel:e.isExpanded}])},[e.isExpanded?((0,uo.wg)(),(0,uo.iD)("div",xc,[(0,uo._)("span",Tc,(0,po.zw)(e.$t("timeline.conversation")),1),e.collapsable?((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:"button-unstyled -link",onClick:t[0]||(t[0]=(0,ro.iM)((function(){return e.toggleExpanded&&e.toggleExpanded.apply(e,arguments)}),["prevent"]))},(0,po.zw)(e.$t("timeline.collapse")),1)):(0,uo.kq)("",!0),e.collapsable?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.j4)(s,{key:1,conversation:!0,class:"rightside-button"})),e.collapsable?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.j4)(a,{key:2,conversation:!0,class:"rightside-button"}))])):(0,uo.kq)("",!0),(0,uo._)("div",$c,[e.isTreeView?((0,uo.wg)(),(0,uo.iD)("div",Uc,[e.shouldShowAllConversationButton?((0,uo.wg)(),(0,uo.iD)("div",Mc,[(0,uo.Wm)(l,{keypath:"status.show_all_conversation_with_icon",tag:"button",class:"button-unstyled -link",scope:"global",onClick:(0,ro.iM)(e.diveToTopLevel,["prevent"])},{icon:(0,uo.w5)((function(){return[(0,uo.Wm)(c,{icon:"angle-double-left"})]})),text:(0,uo.w5)((function(){return[(0,uo._)("span",null,(0,po.zw)(e.$tc("status.show_all_conversation",e.otherTopLevelCount,{numStatus:e.otherTopLevelCount})),1)]})),_:1},8,["onClick"])])):(0,uo.kq)("",!0),e.shouldShowAncestors?((0,uo.wg)(),(0,uo.iD)("div",Ac,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.ancestorsOf(e.diveRoot),(function(t){return(0,uo.wg)(),(0,uo.iD)("article",{key:t.id,class:(0,po.C_)(["thread-ancestor",{"thread-ancestor-has-other-replies":e.getReplies(t.id).length>1,"-faded":e.shouldFadeAncestors}])},[(0,uo.Wm)(u,{ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","simple-tree":e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"show-other-replies-as-button":e.showOtherRepliesButtonInsideStatus,dive:function(){return e.diveIntoStatus(t.id)},"controlled-showing-tall":e.statusContentProperties[t.id].showingTall,"controlled-expanding-subject":e.statusContentProperties[t.id].expandingSubject,"controlled-showing-long-subject":e.statusContentProperties[t.id].showingLongSubject,"controlled-replying":e.statusContentProperties[t.id].replying,"controlled-media-playing":e.statusContentProperties[t.id].mediaPlaying,"controlled-toggle-showing-tall":function(){return e.toggleStatusContentProperty(t.id,"showingTall")},"controlled-toggle-expanding-subject":function(){return e.toggleStatusContentProperty(t.id,"expandingSubject")},"controlled-toggle-showing-long-subject":function(){return e.toggleStatusContentProperty(t.id,"showingLongSubject")},"controlled-toggle-replying":function(){return e.toggleStatusContentProperty(t.id,"replying")},"controlled-set-media-playing":function(n){return e.toggleStatusContentProperty(t.id,"mediaPlaying",n)},onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","show-other-replies-as-button","dive","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","onGoto","onToggleExpanded"]),e.showOtherRepliesButtonBelowStatus&&e.getReplies(t.id).length>1?((0,uo.wg)(),(0,uo.iD)("div",Lc,[(0,uo._)("div",Ec,[(0,uo.Wm)(l,{tag:"button",scope:"global",keypath:"status.ancestor_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:(0,ro.iM)((function(n){return e.diveIntoStatus(t.id)}),["prevent"])},{icon:(0,uo.w5)((function(){return[(0,uo.Wm)(c,{icon:"angle-double-right"})]})),text:(0,uo.w5)((function(){return[(0,uo._)("span",null,(0,po.zw)(e.$tc("status.ancestor_follow",e.getReplies(t.id).length-1,{numReplies:e.getReplies(t.id).length-1})),1)]})),_:2},1032,["onClick"])])])):(0,uo.kq)("",!0)],2)})),128))])):(0,uo.kq)("",!0),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.showingTopLevel,(function(t){return(0,uo.wg)(),(0,uo.j4)(d,{key:t.id,ref_for:!0,ref:"statusComponent",depth:0,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.maybeHighlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.canDive?e.diveIntoStatus:void 0},null,8,["status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"])})),128))])):(0,uo.kq)("",!0),e.isLinearView?((0,uo.wg)(),(0,uo.iD)("div",Fc,[(0,uo._)("article",null,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.conversation,(function(t){return(0,uo.wg)(),(0,uo.j4)(u,{key:t.id,ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","onGoto","onToggleExpanded"])})),128))])])):(0,uo.kq)("",!0)])],6))}]]);var jl={key:1},Cl={class:"button-unstyled title timeline-menu-title"},Ol={class:"timeline-title"};function Pl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function zl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pl(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.ptq);const Dl={components:{Popover:nl.default,NavigationEntry:Wr,ListsMenuContent:Kr},data:function(){return{isOpen:!1}},created:function(){({friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"})[this.$route.name]&&this.$store.dispatch("setLastTimeline",this.$route.name)},computed:zl(zl({useListsMenu:function(){return"lists-timeline"===this.$route.name}},(0,s.rn)({currentUser:function(e){return e.users.currentUser},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating}})),{},{timelinesList:function(){return Br(Object.entries(Er).map((function(e){var t=(0,l.Z)(e,2),n=t[0];return zl(zl({},t[1]),{},{name:n})})),{hasChats:this.pleromaChatMessagesAvailable,isFederating:this.federating,isPrivate:this.privateMode,currentUser:this.currentUser})}}),methods:{openMenu:function(){var e=this;setTimeout((function(){e.isOpen=!0}),25)},blockOpen:function(e){this.isOpen||e.stopPropagation()},timelineName:function(){var e=this.$route.name;if("tag-timeline"===e)return"#"+this.$route.params.tag;if("lists-timeline"===e)return this.$store.getters.findListTitle(this.$route.params.id);var t={friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"}[this.$route.name];return t?this.$t(t):e}}},Il=(0,Eo.Z)(Dl,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("ListsMenuContent"),a=(0,uo.up)("NavigationEntry"),c=(0,uo.up)("FAIcon"),l=(0,uo.up)("Popover");return(0,uo.wg)(),(0,uo.j4)(l,{trigger:"click",class:(0,po.C_)(["TimelineMenu",{open:e.isOpen}]),"bound-to":{x:"container"},"bound-to-selector":".Timeline","popover-class":"timeline-menu-popover popover-default",onShow:e.openMenu,onClose:t[1]||(t[1]=function(){return e.isOpen=!1})},{content:(0,uo.w5)((function(){return[e.useListsMenu?((0,uo.wg)(),(0,uo.j4)(s,{key:0,"show-pin":!1,class:"timelines"})):((0,uo.wg)(),(0,uo.iD)("ul",jl,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.timelinesList,(function(e){return(0,uo.wg)(),(0,uo.j4)(a,{key:e.name,"show-pin":!1,item:e},null,8,["item"])})),128))]))]})),trigger:(0,uo.w5)((function(){return[(0,uo._)("span",Cl,[(0,uo._)("span",Ol,(0,po.zw)(e.timelineName()),1),(0,uo._)("span",null,[(0,uo.Wm)(c,{size:"sm",icon:"chevron-down"})]),(0,uo._)("span",{class:"click-blocker",onClick:t[0]||(t[0]=function(){return e.blockOpen&&e.blockOpen.apply(e,arguments)})})])]})),_:1},8,["class","onShow"])}]]);function xl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}qt.vI.add(Nt.IJ7,Nt.b7W,Nt.Kl4,Nt.FPD,Nt.EQ8,Nt.LEp);var Tl={props:["timeline","timelineName","title","userId","listId","tag","embedded","count","pinnedStatusIds","inProfile","footerSlipgate"],data:function(){return{showScrollTop:!1,paused:!1,unfocused:!1,bottomedOut:!1,virtualScrollIndex:0,blockingClicks:!1}},components:{Status:qa.default,Conversation:Sl,TimelineMenu:Il,QuickFilterSettings:sl,QuickViewSettings:wl},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?xl(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({filteredVisibleStatuses:function(){var e=this;return this.timeline.visibleStatuses.filter((function(t){return"user"!==e.timelineName||t.id>=e.timeline.minId&&t.id<=e.timeline.maxId}))},filteredPinnedStatusIds:function(){var e=this;return(this.pinnedStatusIds||[]).filter((function(t){return e.timeline.statusesObject[t]}))},newStatusCount:function(){return this.timeline.newStatusCount},showLoadButton:function(){return this.timeline.newStatusCount>0||0!==this.timeline.flushMarker},loadButtonString:function(){return 0!==this.timeline.flushMarker?this.$t("timeline.reload"):"".concat(this.$t("timeline.show_new")," (").concat(this.newStatusCount,")")},mobileLoadButtonString:function(){return 0!==this.timeline.flushMarker?"+":this.newStatusCount>99?"∞":this.newStatusCount},classes:function(){var e=this.embedded?["-nonpanel"]:["panel","panel-default"];return this.blockingClicks&&(e=e.concat(["-blocked","_misclick-prevention"])),{root:e,header:["timeline-heading"].concat(this.embedded?[]:["panel-heading","-sticky"]),body:["timeline-body"].concat(this.embedded?[]:["panel-body"]),footer:["timeline-footer"].concat(this.embedded?[]:["panel-footer"])}},pinnedStatusIdsObject:function(){return zc()(this.pinnedStatusIds)},statusesToDisplay:function(){var e=this.timeline.visibleStatuses.length,t=Math.ceil(Math.max(3,window.innerHeight/80)),n=this.virtualScrollIndex-this.filteredPinnedStatusIds.length,o=Math.max(0,n-t),r=Math.min(e,n+t);return this.timeline.visibleStatuses.slice(o,r).map((function(e){return e.id}))},virtualScrollingEnabled:function(){return this.$store.getters.mergedConfig.virtualScrolling}},(0,s.rn)({mobileLayout:function(e){return"mobile"===e.interface.layoutType}})),created:function(){var e=this.$store,t=e.state.users.currentUser.credentials,n=0===this.timeline.visibleStatuses.length;if(window.addEventListener("scroll",this.handleScroll),e.state.api.fetchers[this.timelineName])return!1;Pe.fetchAndUpdate({store:e,credentials:t,timeline:this.timelineName,showImmediately:n,userId:this.userId,listId:this.listId,tag:this.tag})},mounted:function(){void 0!==document.hidden&&(document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.unfocused=document.hidden),window.addEventListener("keydown",this.handleShortKey),setTimeout(this.determineVisibleStatuses,250)},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),window.removeEventListener("keydown",this.handleShortKey),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.commit("setLoading",{timeline:this.timelineName,value:!1})},methods:{scrollToTop:function(){window.scrollTo({top:this.$el.offsetTop})},stopBlockingClicks:Bs()((function(){this.blockingClicks=!1}),1e3),blockClicksTemporarily:function(){this.blockingClicks||(this.blockingClicks=!0),this.stopBlockingClicks()},handleShortKey:function(e){["textarea","input"].includes(e.target.tagName.toLowerCase())||"."===e.key&&this.showNewStatuses()},showNewStatuses:function(){0!==this.timeline.flushMarker?(this.$store.commit("clearTimeline",{timeline:this.timelineName,excludeUserId:!0}),this.$store.commit("queueFlush",{timeline:this.timelineName,id:0}),this.fetchOlderStatuses()):(this.blockClicksTemporarily(),this.$store.commit("showNewStatuses",{timeline:this.timelineName}),this.paused=!1),window.scrollTo({top:0})},fetchOlderStatuses:Ic()((function(){var e=this,t=this.$store,n=t.state.users.currentUser.credentials;t.commit("setLoading",{timeline:this.timelineName,value:!0}),Pe.fetchAndUpdate({store:t,credentials:n,timeline:this.timelineName,older:!0,showImmediately:!0,userId:this.userId,listId:this.listId,tag:this.tag}).then((function(t){var n=t.statuses;n&&0===n.length&&(e.bottomedOut=!0)})).finally((function(){return t.commit("setLoading",{timeline:e.timelineName,value:!1})}))}),1e3,void 0),determineVisibleStatuses:function(){if(this.$refs.timeline&&this.virtualScrollingEnabled){var e=this.$refs.timeline.children,t=Math.max(0,Math.min(this.virtualScrollIndex,e.length-1));if(0!==e.length){var n=Math.max(document.body.offsetHeight,window.pageYOffset),o=window.pageYOffset+.5*window.innerHeight,r=Math.floor(e.length*(o/n)),i=e[r].getBoundingClientRect().y,s=e[t].getBoundingClientRect().y;for(Math.abs(i)>s&&(r=t,i=s);i<-20&&r<e.length-1;)i+=e[r].offsetHeight,r++;for(;i>window.innerHeight+100&&r>0;)i-=e[--r].offsetHeight;this.virtualScrollIndex=r}}},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.timeline.loading&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchOlderStatuses()},handleScroll:Ic()((function(e){this.showScrollTop=this.$el.offsetTop<window.scrollY,this.determineVisibleStatuses(),this.scrollLoad(e)}),200),handleVisibilityChange:function(){this.unfocused=document.hidden}},watch:{newStatusCount:function(e){if(this.$store.getters.mergedConfig.streaming&&e>0){var t=document.documentElement;!((window.pageYOffset||t.scrollTop)-(t.clientTop||0)<15)||this.paused||this.unfocused&&this.$store.getters.mergedConfig.pauseOnUnfocused?this.paused=!0:this.showNewStatuses()}}}};const $l=Tl,Ul=(0,Eo.Z)($l,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("TimelineMenu"),a=(0,uo.up)("FAIcon"),c=(0,uo.up)("FALayers"),l=(0,uo.up)("QuickFilterSettings"),u=(0,uo.up)("QuickViewSettings"),d=(0,uo.up)("conversation");return(0,uo.wg)(),(0,uo.iD)("div",{class:(0,po.C_)(["Timeline",e.classes.root])},[(0,uo._)("div",{class:(0,po.C_)(e.classes.header)},[e.embedded?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.j4)(s,{key:0,"timeline-name":e.timelineName},null,8,["timeline-name"])),e.showScrollTop&&!e.embedded?((0,uo.wg)(),(0,uo.iD)("div",gc,[(0,uo._)("button",{class:"button-unstyled scroll-to-top-button",type:"button",title:e.$t("general.scroll_to_top"),onClick:t[0]||(t[0]=function(){return e.scrollToTop&&e.scrollToTop.apply(e,arguments)})},[(0,uo.Wm)(c,{class:"fa-scale-110 fa-old-padding-layer"},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{icon:"arrow-up"}),(0,uo.Wm)(a,{icon:"minus",transform:"up-7"})]})),_:1})],8,vc)])):(0,uo.kq)("",!0),e.mobileLayout&&!e.embedded?((0,uo.wg)(),(0,uo.iD)(uo.HY,{key:2},[e.showLoadButton?((0,uo.wg)(),(0,uo.iD)("div",wc,[(0,uo._)("button",{class:"button-unstyled loadmore-button",title:e.loadButtonString,onClick:t[1]||(t[1]=(0,ro.iM)((function(){return e.showNewStatuses&&e.showNewStatuses.apply(e,arguments)}),["prevent"]))},[(0,uo.Wm)(a,{"fixed-width":"",icon:"circle-plus"}),(0,uo._)("div",yc,(0,po.zw)(e.mobileLoadButtonString),1)],8,bc)])):e.embedded?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("div",{key:1,class:"loadmore-text faint veryfaint rightside-icon",title:e.$t("timeline.up_to_date"),"aria-disabled":!0,onClick:t[2]||(t[2]=(0,ro.iM)((function(){}),["prevent"]))},[(0,uo.Wm)(a,{"fixed-width":"",icon:"check"})],8,_c))],64)):((0,uo.wg)(),(0,uo.iD)(uo.HY,{key:3},[e.showLoadButton?((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:"button-default loadmore-button",onClick:t[3]||(t[3]=(0,ro.iM)((function(){return e.showNewStatuses&&e.showNewStatuses.apply(e,arguments)}),["prevent"]))},(0,po.zw)(e.loadButtonString),1)):e.embedded?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("div",{key:1,class:"loadmore-text faint",onClick:t[4]||(t[4]=(0,ro.iM)((function(){}),["prevent"]))},(0,po.zw)(e.$t("timeline.up_to_date")),1))],64)),e.embedded?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.j4)(l,{key:4,class:"rightside-button"})),e.embedded?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.j4)(u,{key:5,class:"rightside-button"}))],2),(0,uo._)("div",{class:(0,po.C_)(e.classes.body)},[(0,uo._)("div",kc,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.filteredPinnedStatusIds,(function(t){return(0,uo.wg)(),(0,uo.j4)(d,{key:t+"-pinned",role:"listitem",class:"status-fadein","status-id":t,collapsable:!0,"pinned-status-ids-object":e.pinnedStatusIdsObject,"in-profile":e.inProfile,"profile-user-id":e.userId},null,8,["status-id","pinned-status-ids-object","in-profile","profile-user-id"])})),128)),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.filteredVisibleStatuses,(function(t){return(0,uo.wg)(),(0,uo.j4)(d,{key:t.id,role:"listitem",class:"status-fadein","status-id":t.id,collapsable:!0,"in-profile":e.inProfile,"profile-user-id":e.userId,"virtual-hidden":e.virtualScrollingEnabled&&!e.statusesToDisplay.includes(t.id)},null,8,["status-id","in-profile","profile-user-id","virtual-hidden"])})),128))],512)],2),(0,uo._)("div",{class:(0,po.C_)(e.classes.footer)},[((0,uo.wg)(),(0,uo.j4)(uo.lR,{to:e.footerSlipgate,disabled:!e.embedded||!e.footerSlipgate},[0===e.count?((0,uo.wg)(),(0,uo.iD)("div",Sc,(0,po.zw)(e.$t("timeline.no_statuses")),1)):e.bottomedOut?((0,uo.wg)(),(0,uo.iD)("div",jc,(0,po.zw)(e.$t("timeline.no_more_statuses")),1)):e.timeline.loading?((0,uo.wg)(),(0,uo.iD)("div",Oc,[(0,uo.Wm)(a,{icon:"circle-notch",spin:"",size:"lg"})])):((0,uo.wg)(),(0,uo.iD)("button",{key:2,class:"button-unstyled -link",onClick:t[5]||(t[5]=(0,ro.iM)((function(t){return e.fetchOlderStatuses()}),["prevent"]))},[(0,uo._)("div",Cc,(0,po.zw)(e.$t("timeline.load_older")),1)]))],8,["to","disabled"]))],2)],2)}]]),Ml={components:{Timeline:Ul},computed:{timeline:function(){return this.$store.state.statuses.timelines.public}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"public"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","public")}},Al=(0,Eo.Z)(Ml,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("Timeline");return(0,uo.wg)(),(0,uo.j4)(s,{title:e.$t("nav.public_tl"),timeline:e.timeline,"timeline-name":"public"},null,8,["title","timeline"])}]]),Ll={components:{Timeline:Ul},computed:{timeline:function(){return this.$store.state.statuses.timelines.publicAndExternal}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"publicAndExternal"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","publicAndExternal")}},El=(0,Eo.Z)(Ll,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("Timeline");return(0,uo.wg)(),(0,uo.j4)(s,{title:e.$t("nav.twkn"),timeline:e.timeline,"timeline-name":"publicAndExternal"},null,8,["title","timeline"])}]]),Fl={components:{Timeline:Ul},computed:{timeline:function(){return this.$store.state.statuses.timelines.friends}}},Rl=(0,Eo.Z)(Fl,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("Timeline");return(0,uo.wg)(),(0,uo.j4)(s,{title:e.$t("nav.timeline"),timeline:e.timeline,"timeline-name":"friends"},null,8,["title","timeline"])}]]),ql={created:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})},components:{Timeline:Ul},computed:{tag:function(){return this.$route.params.tag},timeline:function(){return this.$store.state.statuses.timelines.tag}},watch:{tag:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})}},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","tag")}},Nl=(0,Eo.Z)(ql,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("Timeline");return(0,uo.wg)(),(0,uo.j4)(s,{title:e.tag,timeline:e.timeline,"timeline-name":"tag",tag:e.tag},null,8,["title","timeline","tag"])}]]),Zl={computed:{timeline:function(){return this.$store.state.statuses.timelines.bookmarks}},components:{Timeline:Ul},unmounted:function(){this.$store.commit("clearTimeline",{timeline:"bookmarks"})}},Wl=(0,Eo.Z)(Zl,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("Timeline");return(0,uo.wg)(),(0,uo.j4)(s,{title:e.$t("nav.bookmarks"),timeline:e.timeline,"timeline-name":"bookmarks"},null,8,["title","timeline"])}]]),Bl={components:{Conversation:Sl},computed:{statusId:function(){return this.$route.params.id}}},Hl=(0,Eo.Z)(Bl,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("conversation");return(0,uo.wg)(),(0,uo.j4)(s,{collapsable:!1,"is-page":"true","status-id":e.statusId},null,8,["status-id"])}]]);var Vl={class:"panel panel-default"},Kl={class:"panel-heading"},Gl={class:"title"},Yl=["label"],Jl=["label"],Ql=["label"],Xl=["label"],eu=["label"],tu=["label"],nu=n(79354),ou={mentions:["mention"],"likes+repeats":["repeat","like"],follows:["follow"],reactions:["pleroma:emoji_reaction"],reports:["pleroma:report"],moves:["move"]};const ru={data:function(){return{allowFollowingMove:this.$store.state.users.currentUser.allow_following_move,filterMode:ou.mentions,canSeeReports:this.$store.state.users.currentUser.privileges.includes("reports_manage_reports")}},methods:{onModeSwitch:function(e){this.filterMode=ou[e]}},components:{Notifications:aa.default,TabSwitcher:nu.Z}},iu=(0,Eo.Z)(ru,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("tab-switcher"),a=(0,uo.up)("Notifications");return(0,uo.wg)(),(0,uo.iD)("div",Vl,[(0,uo._)("div",Kl,[(0,uo._)("div",Gl,(0,po.zw)(e.$t("nav.interactions")),1)]),(0,uo.Wm)(s,{ref:"tabSwitcher","on-switch":e.onModeSwitch},{default:(0,uo.w5)((function(){return[(0,uo._)("span",{key:"mentions",label:e.$t("nav.mentions")},null,8,Yl),(0,uo._)("span",{key:"likes+repeats",label:e.$t("interactions.favs_repeats")},null,8,Jl),(0,uo._)("span",{key:"follows",label:e.$t("interactions.follows")},null,8,Ql),(0,uo._)("span",{key:"reactions",label:e.$t("interactions.emoji_reactions")},null,8,Xl),e.canSeeReports?((0,uo.wg)(),(0,uo.iD)("span",{key:"reports",label:e.$t("interactions.reports")},null,8,eu)):(0,uo.kq)("",!0),e.allowFollowingMove?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("span",{key:"moves",label:e.$t("interactions.moves")},null,8,tu))]})),_:1},8,["on-switch"]),(0,uo.Wm)(a,{ref:"notifications","no-heading":!0,"minimal-mode":!0,"filter-mode":e.filterMode},null,8,["filter-mode"])])}]]),su={computed:{timeline:function(){return this.$store.state.statuses.timelines.dms}},components:{Timeline:Ul}},au=(0,Eo.Z)(su,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("Timeline");return(0,uo.wg)(),(0,uo.j4)(s,{title:e.$t("nav.dms"),timeline:e.timeline,"timeline-name":"dms"},null,8,["title","timeline"])}]]);var cu={key:0},lu={key:1,class:"chat-list panel panel-default"},uu={class:"panel-heading -sticky"},du={class:"title"},pu={class:"panel-body"},mu={key:0,class:"timeline"},hu={key:1,class:"emtpy-chat-list-alert"},fu={class:"chat-list-item-left"},gu={class:"chat-list-item-center"},vu={class:"heading"},wu={key:0,class:"name-and-account-name"},bu=(0,uo._)("span",{class:"heading-right"},null,-1),yu={class:"time-wrapper"},_u={class:"chat-preview"},ku={key:0,class:"badge badge-notification unread-chat-count"},Su=n(38146),ju=n(48173),Cu=n(19066),Ou=n(1840),Pu=["title"],zu=n(92820);const Du={name:"ChatTitle",components:{UserAvatar:ju.default,RichContent:zu.Z,UserPopover:(0,uo.RC)((function(){return Promise.resolve().then(n.bind(n,22588))}))},props:["user","withAvatar"],computed:{title:function(){return this.user?this.user.screen_name_ui:""},htmlTitle:function(){return this.user?this.user.name_html:""}}},Iu=(0,Eo.Z)(Du,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("UserAvatar"),a=(0,uo.up)("UserPopover"),c=(0,uo.up)("RichContent");return(0,uo.wg)(),(0,uo.iD)("div",{class:"chat-title",title:e.title},[e.withAvatar&&e.user?((0,uo.wg)(),(0,uo.j4)(a,{key:0,class:"avatar-container","user-id":e.user.id},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(s,{class:"titlebar-avatar",user:e.user},null,8,["user"])]})),_:1},8,["user-id"])):(0,uo.kq)("",!0),e.user?((0,uo.wg)(),(0,uo.j4)(c,{key:1,class:"username",title:"@"+(e.user&&e.user.screen_name_ui),html:e.htmlTitle,emoji:e.user.emoji||[]},null,8,["title","html","emoji"])):(0,uo.kq)("",!0)],8,Pu)}]]);function xu(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Tu(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?xu(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xu(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const $u={name:"ChatListItem",props:["chat"],components:{UserAvatar:ju.default,AvatarList:Cu.Z,Timeago:Ou.Z,ChatTitle:Iu,StatusBody:Su.Z},computed:Tu(Tu({},(0,s.rn)({currentUser:function(e){return e.users.currentUser}})),{},{attachmentInfo:function(){if(0!==this.chat.lastMessage.attachments.length){var e=this.chat.lastMessage.attachments.map((function(e){return hn.Z.fileType(e.mimetype)}));return e.includes("video")?this.$t("file_type.video"):e.includes("audio")?this.$t("file_type.audio"):e.includes("image")?this.$t("file_type.image"):this.$t("file_type.file")}},messageForStatusContent:function(){var e=this.chat.lastMessage,t=e?e.emojis:[],n=e&&e.account_id===this.currentUser.id,o=e?this.attachmentInfo||e.content:"",r=n?"<i>".concat(this.$t("chats.you"),"</i> ").concat(o):o;return{summary:"",emojis:t,raw_html:r,text:r,attachments:[]}}}),methods:{openChat:function(e){this.chat.id&&this.$router.push({name:"chat",params:{username:this.currentUser.screen_name,recipient_id:this.chat.account.id}})}}},Uu=(0,Eo.Z)($u,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("UserAvatar"),a=(0,uo.up)("ChatTitle"),c=(0,uo.up)("Timeago"),l=(0,uo.up)("StatusBody");return(0,uo.wg)(),(0,uo.iD)("div",{class:"chat-list-item",onClickCapture:t[0]||(t[0]=(0,ro.iM)((function(){return e.openChat&&e.openChat.apply(e,arguments)}),["prevent"]))},[(0,uo._)("div",fu,[(0,uo.Wm)(s,{user:e.chat.account,height:"48px",width:"48px"},null,8,["user"])]),(0,uo._)("div",gu,[(0,uo._)("div",vu,[e.chat.account?((0,uo.wg)(),(0,uo.iD)("span",wu,[(0,uo.Wm)(a,{user:e.chat.account},null,8,["user"])])):(0,uo.kq)("",!0),bu,(0,uo._)("div",yu,[(0,uo.Wm)(c,{time:e.chat.updated_at,"auto-update":60},null,8,["time"])])]),(0,uo._)("div",_u,[(0,uo.Wm)(l,{class:"chat-preview-body",status:e.messageForStatusContent,"single-line":!0},null,8,["status"]),e.chat.unread>0?((0,uo.wg)(),(0,uo.iD)("div",ku,(0,po.zw)(e.chat.unread),1)):(0,uo.kq)("",!0)])])],32)}]]);var Mu={class:"panel-default panel chat-new"},Au={ref:"header",class:"panel-heading"},Lu={class:"input-wrap"},Eu={class:"input-search"},Fu={class:"member-list"},Ru=["onClickCapture"],qu=n(29076);function Nu(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Zu(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Nu(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Nu(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.wn1,Nt.A35);var Wu={components:{BasicUserCard:qu.Z,UserAvatar:ju.default},data:function(){return{suggestions:[],userIds:[],loading:!1,query:""}},created:function(){var e=this;return(0,o.Z)(i().mark((function t(){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.backendInteractor.chats();case 2:t.sent.chats.forEach((function(t){return e.suggestions.push(t.account)}));case 5:case"end":return t.stop()}}),t)})))()},computed:Zu(Zu({users:function(){var e=this;return this.userIds.map((function(t){return e.findUser(t)}))},availableUsers:function(){return 0!==this.query.length?this.users:this.suggestions}},(0,s.rn)({currentUser:function(e){return e.users.currentUser},backendInteractor:function(e){return e.api.backendInteractor}})),(0,s.Se)(["findUser"])),methods:{goBack:function(){this.$emit("cancel")},goToChat:function(e){this.$router.push({name:"chat",params:{recipient_id:e.id}})},onInput:function(){this.search(this.query)},addUser:function(e){this.selectedUserIds.push(e.id),this.query=""},removeUser:function(e){this.selectedUserIds=this.selectedUserIds.filter((function(t){return t!==e}))},search:function(e){var t=this;e?(this.loading=!0,this.userIds=[],this.$store.dispatch("search",{q:e,resolve:!0,type:"accounts"}).then((function(e){t.loading=!1,t.userIds=e.accounts.map((function(e){return e.id}))}))):this.loading=!1}}};const Bu=Wu,Hu=(0,Eo.Z)(Bu,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon"),a=(0,uo.up)("BasicUserCard");return(0,uo.wg)(),(0,uo.iD)("div",Mu,[(0,uo._)("div",Au,[(0,uo._)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=function(){return e.goBack&&e.goBack.apply(e,arguments)})},[(0,uo.Wm)(s,{size:"lg",icon:"chevron-left"})])],512),(0,uo._)("div",Lu,[(0,uo._)("div",Eu,[(0,uo.Wm)(s,{class:"search-icon fa-scale-110 fa-old-padding",icon:"search"})]),(0,uo.wy)((0,uo._)("input",{ref:"search","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.query=t}),placeholder:"Search people",onInput:t[2]||(t[2]=function(){return e.onInput&&e.onInput.apply(e,arguments)})},null,544),[[ro.nr,e.query]])]),(0,uo._)("div",Fu,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.availableUsers,(function(t){return(0,uo.wg)(),(0,uo.iD)("div",{key:t.id,class:"member"},[(0,uo._)("div",{onClickCapture:(0,ro.iM)((function(n){return e.goToChat(t)}),["prevent"])},[(0,uo.Wm)(a,{user:t},null,8,["user"])],40,Ru)])})),128))])])}]]);function Vu(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ku(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vu(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vu(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const Gu={components:{ChatListItem:Uu,List:Na.Z,ChatNew:Hu},computed:Ku(Ku({},(0,s.rn)({currentUser:function(e){return e.users.currentUser}})),(0,s.Se)(["sortedChatList"])),data:function(){return{isNew:!1}},created:function(){this.$store.dispatch("fetchChats",{latest:!0})},methods:{cancelNewChat:function(){this.isNew=!1,this.$store.dispatch("fetchChats",{latest:!0})},newChat:function(){this.isNew=!0}}},Yu=(0,Eo.Z)(Gu,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("ChatNew"),a=(0,uo.up)("ChatListItem"),c=(0,uo.up)("List");return e.isNew?((0,uo.wg)(),(0,uo.iD)("div",cu,[(0,uo.Wm)(s,{onCancel:e.cancelNewChat},null,8,["onCancel"])])):((0,uo.wg)(),(0,uo.iD)("div",lu,[(0,uo._)("div",uu,[(0,uo._)("span",du,(0,po.zw)(e.$t("chats.chats")),1),(0,uo._)("button",{class:"button-default",onClick:t[0]||(t[0]=function(){return e.newChat&&e.newChat.apply(e,arguments)})},(0,po.zw)(e.$t("chats.new")),1)]),(0,uo._)("div",pu,[e.sortedChatList.length>0?((0,uo.wg)(),(0,uo.iD)("div",mu,[(0,uo.Wm)(c,{items:e.sortedChatList},{item:(0,uo.w5)((function(e){var t=e.item;return[((0,uo.wg)(),(0,uo.j4)(a,{key:t.id,compact:!1,chat:t},null,8,["chat"]))]})),_:1},8,["items"])])):((0,uo.wg)(),(0,uo.iD)("div",hu,[(0,uo._)("span",null,(0,po.zw)(e.$t("chats.empty_chat_list_placeholder")),1)]))])]))}]]);var Ju={class:"chat-view"},Qu={class:"chat-view-inner"},Xu={ref:"inner",class:"panel-default panel chat-view-body"},ed={ref:"header",class:"panel-heading -sticky chat-view-heading"},td={class:"title text-center"},nd={key:1,class:"chat-loading-error"},od={class:"alert error"},rd={ref:"footer",class:"panel-body footer"},id={key:0,class:"badge badge-notification unread-chat-count unread-message-count"},sd={key:0,class:"avatar-wrapper"},ad={class:"chat-message-inner"},cd={class:"dropdown-menu"},ld=["title"],ud={class:"created-at"},dd={key:1,class:"chat-message-date-separator"},pd=n(66596),md=n(67671),hd=n(92798),fd=n(39776);const gd={name:"Timeago",props:["date"],computed:{displayDate:function(){var e=new Date;return e.setHours(0,0,0,0),this.date.getTime()===e.getTime()?this.$t("display_date.today"):this.date.toLocaleDateString(fd.Z.internalToBrowserLocale(this.$i18n.locale),{day:"numeric",month:"long"})}}},vd=(0,Eo.Z)(gd,[["render",function(e,t,n,o,r,i){return(0,uo.wg)(),(0,uo.iD)("time",null,(0,po.zw)(i.displayDate),1)}]]);function wd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function bd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?wd(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.NBC,Nt.cNd);const yd={name:"ChatMessage",props:["author","edited","noHeading","chatViewItem","hoveredMessageChain"],emits:["hover"],components:{Popover:nl.default,Attachment:pd.Z,StatusContent:Su.Z,UserAvatar:ju.default,Gallery:md.Z,LinkPreview:hd.Z,ChatMessageDate:vd,UserPopover:(0,uo.RC)((function(){return Promise.resolve().then(n.bind(n,22588))}))},computed:bd(bd({createdAt:function(){return this.chatViewItem.data.created_at.toLocaleTimeString("en",{hour:"2-digit",minute:"2-digit",hour12:!1})},isCurrentUser:function(){return this.message.account_id===this.currentUser.id},message:function(){return this.chatViewItem.data},isMessage:function(){return"message"===this.chatViewItem.type},messageForStatusContent:function(){return{summary:"",emojis:this.message.emojis,raw_html:this.message.content||"",text:this.message.content||"",attachments:this.message.attachments}},hasAttachment:function(){return this.message.attachments.length>0}},(0,s.rn)({betterShadow:function(e){return e.interface.browserSupport.cssFilter},currentUser:function(e){return e.users.currentUser},restrictedNicknames:function(e){return e.instance.restrictedNicknames}})),{},{popoverMarginStyle:function(){return this.isCurrentUser?{}:{left:50}}},(0,s.Se)(["mergedConfig","findUser"])),data:function(){return{hovered:!1,menuOpened:!1}},methods:{onHover:function(e){this.$emit("hover",{isHovered:e,messageChainId:this.chatViewItem.messageChainId})},deleteMessage:function(){var e=this;return(0,o.Z)(i().mark((function t(){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!window.confirm(e.$t("chats.delete_confirm"))){t.next=4;break}return t.next=4,e.$store.dispatch("deleteChatMessage",{messageId:e.chatViewItem.data.id,chatId:e.chatViewItem.data.chat_id});case 4:e.hovered=!1,e.menuOpened=!1;case 6:case"end":return t.stop()}}),t)})))()}}},_d=(0,Eo.Z)(yd,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("UserAvatar"),a=(0,uo.up)("UserPopover"),c=(0,uo.up)("FAIcon"),l=(0,uo.up)("Popover"),u=(0,uo.up)("StatusContent"),d=(0,uo.up)("ChatMessageDate");return e.isMessage?((0,uo.wg)(),(0,uo.iD)("div",{key:0,class:(0,po.C_)(["chat-message-wrapper",{"hovered-message-chain":e.hoveredMessageChain}]),onMouseover:t[5]||(t[5]=function(t){return e.onHover(!0)}),onMouseleave:t[6]||(t[6]=function(t){return e.onHover(!1)})},[(0,uo._)("div",{class:(0,po.C_)(["chat-message",[{outgoing:e.isCurrentUser,incoming:!e.isCurrentUser}]])},[e.isCurrentUser?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("div",sd,[e.chatViewItem.isHead?((0,uo.wg)(),(0,uo.j4)(a,{key:0,"user-id":e.author.id},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(s,{compact:!0,"better-shadow":e.betterShadow,user:e.author},null,8,["better-shadow","user"])]})),_:1},8,["user-id"])):(0,uo.kq)("",!0)])),(0,uo._)("div",ad,[(0,uo._)("div",{class:"status-body",style:(0,po.j5)({"min-width":e.message.attachment?"80%":""})},[(0,uo._)("div",{class:(0,po.C_)(["media status",{"without-attachment":!e.hasAttachment,pending:e.chatViewItem.data.pending,error:e.chatViewItem.data.error}]),style:{position:"relative"},onMouseenter:t[3]||(t[3]=function(t){return e.hovered=!0}),onMouseleave:t[4]||(t[4]=function(t){return e.hovered=!1})},[(0,uo._)("div",{class:(0,po.C_)(["chat-message-menu",{visible:e.hovered||e.menuOpened}])},[(0,uo.Wm)(l,{trigger:"click",placement:"top","bound-to-selector":".chat-view-inner","bound-to":{x:"container"},margin:e.popoverMarginStyle,onShow:t[1]||(t[1]=function(t){return e.menuOpened=!0}),onClose:t[2]||(t[2]=function(t){return e.menuOpened=!1})},{content:(0,uo.w5)((function(){return[(0,uo._)("div",cd,[(0,uo._)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[0]||(t[0]=function(){return e.deleteMessage&&e.deleteMessage.apply(e,arguments)})},[(0,uo.Wm)(c,{icon:"times"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("chats.delete")),1)])])]})),trigger:(0,uo.w5)((function(){return[(0,uo._)("button",{class:"button-default menu-icon",title:e.$t("chats.more")},[(0,uo.Wm)(c,{icon:"ellipsis-h"})],8,ld)]})),_:1},8,["margin"])],2),(0,uo.Wm)(u,{class:"message-content",status:e.messageForStatusContent,"full-content":!0},{footer:(0,uo.w5)((function(){return[(0,uo._)("span",ud,(0,po.zw)(e.createdAt),1)]})),_:1},8,["status"])],34)],4)])],2)],34)):((0,uo.wg)(),(0,uo.iD)("div",dd,[(0,uo.Wm)(d,{date:e.chatViewItem.date},null,8,["date"])]))}]]);var kd=function(){return{scrollTop:window.scrollY,scrollHeight:document.documentElement.scrollHeight,offsetHeight:window.innerHeight}};function Sd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function jd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Sd(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Sd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.ptq,Nt.A35);var Cd={components:{ChatMessage:_d,ChatTitle:Iu,PostStatusForm:yr.Z},data:function(){return{jumpToBottomButtonVisible:!1,hoveredMessageChainId:void 0,lastScrollPosition:{},scrollableContainerHeight:"100%",errorLoadingChat:!1,messageRetriers:{}}},created:function(){this.startFetching(),window.addEventListener("resize",this.handleResize)},mounted:function(){var e=this;window.addEventListener("scroll",this.handleScroll),void 0!==document.hidden&&document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$nextTick((function(){e.handleResize()}))},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),window.removeEventListener("resize",this.handleResize),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.dispatch("clearCurrentChat")},computed:jd(jd({recipient:function(){return this.currentChat&&this.currentChat.account},recipientId:function(){return this.$route.params.recipient_id},formPlaceholder:function(){return this.recipient?this.$t("chats.message_user",{nickname:this.recipient.screen_name_ui}):""},chatViewItems:function(){return En.getView(this.currentChatMessageService)},newMessageCount:function(){return this.currentChatMessageService&&this.currentChatMessageService.newMessageCount},streamingEnabled:function(){return this.mergedConfig.useStreamingApi&&this.mastoUserSocketStatus===h._z.JOINED}},(0,s.Se)(["currentChat","currentChatMessageService","findOpenedChatByRecipientId","mergedConfig"])),(0,s.rn)({backendInteractor:function(e){return e.api.backendInteractor},mastoUserSocketStatus:function(e){return e.api.mastoUserSocketStatus},mobileLayout:function(e){return"mobile"===e.interface.layoutType},currentUser:function(e){return e.users.currentUser}})),watch:{chatViewItems:function(){var e=this,t=this.bottomedOut(10);this.$nextTick((function(){t&&e.scrollDown()}))},$route:function(){this.startFetching()},mastoUserSocketStatus:function(e){e===h._z.JOINED&&this.fetchChat({isFirstFetch:!0})}},methods:{onMessageHover:function(e){var t=e.isHovered,n=e.messageChainId;this.hoveredMessageChainId=t?n:void 0},onFilesDropped:function(){var e=this;this.$nextTick((function(){e.handleResize()}))},handleVisibilityChange:function(){var e=this;this.$nextTick((function(){!document.hidden&&e.bottomedOut(10)&&e.scrollDown({forceRead:!0})}))},handleResize:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.delayed,o=void 0!==n&&n;o?setTimeout((function(){e.handleResize(jd(jd({},t),{},{delayed:!1}))}),100):this.$nextTick((function(){var t=kd().offsetHeight,n=(void 0===t?void 0:t)-e.lastScrollPosition.offsetHeight;0===n||e.bottomedOut()||e.$nextTick((function(){window.scrollBy({top:-Math.trunc(n)})})),e.lastScrollPosition=kd()}))},scrollDown:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.behavior,n=void 0===t?"auto":t,o=e.forceRead,r=void 0!==o&&o;this.$nextTick((function(){window.scrollTo({top:document.documentElement.scrollHeight,behavior:n})})),r&&this.readChat()},readChat:function(){if(this.currentChatMessageService&&this.currentChatMessageService.maxId&&!document.hidden){var e=this.currentChatMessageService.maxId;this.$store.dispatch("readChat",{id:this.currentChat.id,lastReadId:e})}},bottomedOut:function(e){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=window.scrollY+e;return document.documentElement.scrollHeight-window.innerHeight<=t}(e)},reachedTop:function(){return window.scrollY<=0},cullOlderCheck:function(){var e=this;window.setTimeout((function(){e.bottomedOut(10)&&e.$store.dispatch("cullOlderMessages",e.currentChatMessageService.chatId)}),5e3)},handleScroll:Ic()((function(){var e=this;this.lastScrollPosition=kd(),this.currentChat&&(this.reachedTop()?this.fetchChat({maxId:this.currentChatMessageService.minId}):this.bottomedOut(10)?(this.jumpToBottomButtonVisible=!1,this.cullOlderCheck(),this.newMessageCount>0&&window.setTimeout((function(){e.$el&&e.readChat()}),1500)):this.jumpToBottomButtonVisible=!0)}),200),handleScrollUp:function(e){var t,n,o=kd();window.scrollTo({top:(t=e,n=o,t.scrollTop+(n.scrollHeight-t.scrollHeight))})},fetchChat:function(e){var t=this,n=e.isFirstFetch,o=void 0!==n&&n,r=e.fetchLatest,i=void 0!==r&&r,s=e.maxId,a=this.currentChatMessageService;if(a&&(!i||!this.streamingEnabled)){var c=a.chatId,l=!!s,u=i&&a.maxId;return this.backendInteractor.chatMessages({id:c,maxId:s,sinceId:u}).then((function(e){o&&En.clear(a);var n=kd();t.$store.dispatch("addChatMessages",{chatId:c,messages:e}).then((function(){t.$nextTick((function(){l&&t.handleScrollUp(n),!(document.documentElement.scrollHeight>window.innerHeight)&&e.length>0&&t.fetchChat({maxId:t.currentChatMessageService.minId})}))}))}))}},startFetching:function(){var e=this;return(0,o.Z)(i().mark((function t(){var n;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.findOpenedChatByRecipientId(e.recipientId)){t.next=12;break}return t.prev=2,t.next=5,e.backendInteractor.getOrCreateChat({accountId:e.recipientId});case 5:n=t.sent,t.next=12;break;case 8:t.prev=8,t.t0=t.catch(2),console.error("Error creating or getting a chat",t.t0),e.errorLoadingChat=!0;case 12:n&&(e.$nextTick((function(){e.scrollDown({forceRead:!0})})),e.$store.dispatch("addOpenedChat",{chat:n}),e.doStartFetching());case 13:case"end":return t.stop()}}),t,null,[[2,8]])})))()},doStartFetching:function(){var e=this;this.$store.dispatch("startFetchingCurrentChat",{fetcher:function(){return(0,je.F)((function(){return e.fetchChat({fetchLatest:!0})}),5e3)}}),this.fetchChat({isFirstFetch:!0})},handleAttachmentPosting:function(){var e=this;this.$nextTick((function(){e.handleResize(),e.scrollDown({forceRead:!0})}))},sendMessage:function(e){var t=this,n=e.status,o=e.media,r=e.idempotencyKey,i={id:this.currentChat.id,content:n,idempotencyKey:r};o[0]&&(i.mediaId=o[0].id);var s=function(e){var t=e.attachments,n=e.userId,o=e.idempotencyKey,r={content:e.content,chat_id:e.chatId,created_at:new Date,id:"".concat((new Date).getTime()),attachments:t,account_id:n,idempotency_key:o,emojis:[],pending:!0,isNormalized:!0};return t[0]&&(r.attachment=t[0]),r}({attachments:o,chatId:this.currentChat.id,content:n,userId:this.currentUser.id,idempotencyKey:r});return this.$store.dispatch("addChatMessages",{chatId:this.currentChat.id,messages:[s]}).then((function(){t.handleAttachmentPosting()})),this.doSendMessage({params:i,fakeMessage:s,retriesLeft:10})},doSendMessage:function(e){var t=this,n=e.params,o=e.fakeMessage,r=e.retriesLeft,i=void 0===r?10:r;if(!(i<=0))return this.backendInteractor.sendChatMessage(n).then((function(e){return t.$store.dispatch("addChatMessages",{chatId:t.currentChat.id,updateMaxId:!1,messages:[jd(jd({},e),{},{fakeId:o.id})]}),e})).catch((function(e){return console.error("Error sending message",e),t.$store.dispatch("handleMessageError",{chatId:t.currentChat.id,fakeId:o.id,isRetry:10!==i}),(e.statusCode>=500&&e.statusCode<600||"Failed to fetch"===e.message)&&(t.messageRetriers[o.id]=setTimeout((function(){t.doSendMessage({params:n,fakeMessage:o,retriesLeft:i-1})}),1e3*Math.pow(2,10-i))),{}})),Promise.resolve(o)},goBack:function(){this.$router.push({name:"chats",params:{username:this.currentUser.screen_name}})}}};const Od=Cd,Pd=(0,Eo.Z)(Od,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon"),a=(0,uo.up)("ChatTitle"),c=(0,uo.up)("ChatMessage"),l=(0,uo.up)("PostStatusForm");return(0,uo.wg)(),(0,uo.iD)("div",Ju,[(0,uo._)("div",Qu,[(0,uo._)("div",Xu,[(0,uo._)("div",ed,[(0,uo._)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=function(){return e.goBack&&e.goBack.apply(e,arguments)})},[(0,uo.Wm)(s,{size:"lg",icon:"chevron-left"})]),(0,uo._)("div",td,[(0,uo.Wm)(a,{user:e.recipient,"with-avatar":!0},null,8,["user"])])],512),(0,uo._)("div",{class:"message-list",style:(0,po.j5)({height:e.scrollableContainerHeight})},[e.errorLoadingChat?((0,uo.wg)(),(0,uo.iD)("div",nd,[(0,uo._)("div",od,(0,po.zw)(e.$t("chats.error_loading_chat")),1)])):((0,uo.wg)(!0),(0,uo.iD)(uo.HY,{key:0},(0,uo.Ko)(e.chatViewItems,(function(t){return(0,uo.wg)(),(0,uo.j4)(c,{key:t.id,author:e.recipient,"chat-view-item":t,"hovered-message-chain":t.messageChainId===e.hoveredMessageChainId,onHover:e.onMessageHover},null,8,["author","chat-view-item","hovered-message-chain","onHover"])})),128))],4),(0,uo._)("div",rd,[(0,uo._)("div",{class:(0,po.C_)(["jump-to-bottom-button",{visible:e.jumpToBottomButtonVisible}]),onClick:t[1]||(t[1]=function(t){return e.scrollDown({behavior:"smooth"})})},[(0,uo._)("span",null,[(0,uo.Wm)(s,{icon:"chevron-down"}),e.newMessageCount?((0,uo.wg)(),(0,uo.iD)("div",id,(0,po.zw)(e.newMessageCount),1)):(0,uo.kq)("",!0)])],2),(0,uo.Wm)(l,{"disable-subject":!0,"disable-scope-selector":!0,"disable-notice":!0,"disable-lock-warning":!0,"disable-polls":!0,"disable-sensitivity-checkbox":!0,"disable-submit":e.errorLoadingChat||!e.currentChat,"disable-preview":!0,"optimistic-posting":!0,"post-handler":e.sendMessage,"submit-on-enter":!e.mobileLayout,"preserve-focus":!e.mobileLayout,"auto-focus":!e.mobileLayout,placeholder:e.formPlaceholder,"file-limit":1,"max-height":"160","emoji-picker-placement":"top",onResize:e.handleResize},null,8,["disable-submit","post-handler","submit-on-enter","preserve-focus","auto-focus","placeholder","onResize"])],512)],512)])])}]]);var zd={key:0,class:"user-profile panel panel-default"},Dd={key:0,class:"user-birthday"},Id={key:1,class:"user-profile-fields"},xd=["title"],Td=["title"],$d=["label","disabled"],Ud=["label","disabled"],Md={key:1,class:"panel user-profile-placeholder"},Ad={class:"panel-heading"},Ld={class:"title"},Ed={class:"panel-body"},Fd={key:0},Rd={class:"follow-card-content-container"},qd={key:0,class:"faint"},Nd={key:0,class:"follow-card-follow-button"},Zd=n(72895),Wd=n(34837),Bd=["disabled","title"],Hd=["textContent"];const Vd={props:["user","relationship"],data:function(){return{inProgress:!1,showingConfirmRemoveFollower:!1}},components:{ConfirmModal:ca.Z},computed:{label:function(){return this.inProgress?this.$t("user_card.follow_progress"):this.$t("user_card.remove_follower")},shouldConfirmRemoveUserFromFollowers:function(){return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers}},methods:{showConfirmRemoveUserFromFollowers:function(){this.showingConfirmRemoveFollower=!0},hideConfirmRemoveUserFromFollowers:function(){this.showingConfirmRemoveFollower=!1},onClick:function(){this.shouldConfirmRemoveUserFromFollowers?this.showConfirmRemoveUserFromFollowers():this.doRemoveUserFromFollowers()},doRemoveUserFromFollowers:function(){var e=this;this.inProgress=!0,this.$store.dispatch("removeUserFromFollowers",this.relationship.id).then((function(){e.inProgress=!1})),this.hideConfirmRemoveUserFromFollowers()}}},Kd=(0,Eo.Z)(Vd,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("i18n-t"),a=(0,uo.up)("confirm-modal");return(0,uo.wg)(),(0,uo.iD)("button",{class:(0,po.C_)(["btn button-default follow-button",{toggled:e.inProgress}]),disabled:e.inProgress,title:e.$t("user_card.remove_follower"),onClick:t[0]||(t[0]=function(){return e.onClick&&e.onClick.apply(e,arguments)})},[(0,uo.Uk)((0,po.zw)(e.label)+" ",1),((0,uo.wg)(),(0,uo.j4)(uo.lR,{to:"#modal"},[e.showingConfirmRemoveFollower?((0,uo.wg)(),(0,uo.j4)(a,{key:0,title:e.$t("user_card.remove_follower_confirm_title"),"confirm-text":e.$t("user_card.remove_follower_confirm_accept_button"),"cancel-text":e.$t("user_card.remove_follower_confirm_cancel_button"),onAccepted:e.doRemoveUserFromFollowers,onCancelled:e.hideConfirmRemoveUserFromFollowers},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(s,{keypath:"user_card.remove_follower_confirm",tag:"span"},{user:(0,uo.w5)((function(){return[(0,uo._)("span",{textContent:(0,po.zw)(e.user.screen_name_ui)},null,8,Hd)]})),_:1})]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,uo.kq)("",!0)]))],10,Bd)}]]),Gd={props:["user","noFollowsYou"],components:{BasicUserCard:qu.Z,RemoteFollow:Zd.Z,FollowButton:Wd.Z,RemoveFollowerButton:Kd},computed:{isMe:function(){return this.$store.state.users.currentUser.id===this.user.id},loggedIn:function(){return this.$store.state.users.currentUser},relationship:function(){return this.$store.getters.relationship(this.user.id)}}},Yd=(0,Eo.Z)(Gd,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("RemoteFollow"),a=(0,uo.up)("FollowButton"),c=(0,uo.up)("RemoveFollowerButton"),l=(0,uo.up)("basic-user-card");return(0,uo.wg)(),(0,uo.j4)(l,{user:e.user},{default:(0,uo.w5)((function(){return[(0,uo._)("div",Rd,[e.isMe||!e.noFollowsYou&&e.relationship.followed_by?((0,uo.wg)(),(0,uo.iD)("span",qd,(0,po.zw)(e.isMe?e.$t("user_card.its_you"):e.$t("user_card.follows_you")),1)):(0,uo.kq)("",!0),e.loggedIn?e.isMe?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)(uo.HY,{key:2},[(0,uo.Wm)(a,{relationship:e.relationship,"label-following":e.$t("user_card.follow_unfollow"),class:"follow-card-follow-button",user:e.user},null,8,["relationship","label-following","user"]),e.noFollowsYou&&e.relationship.followed_by?((0,uo.wg)(),(0,uo.j4)(c,{key:0,user:e.user,relationship:e.relationship,class:"follow-card-button"},null,8,["user","relationship"])):(0,uo.kq)("",!0)],64)):((0,uo.wg)(),(0,uo.iD)(uo.HY,{key:1},[e.relationship.following?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("div",Nd,[(0,uo.Wm)(s,{user:e.user},null,8,["user"])]))],64))])]})),_:1},8,["user"])}]]);var Jd=n(41609),Qd=n.n(Jd),Xd=n(13562);function ep(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function tp(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ep(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ep(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.IJ7);const np=function(e){var t=e.fetch,n=e.select,o=e.unmounted,r=e.childPropName,i=void 0===r?"entries":r,s=e.additionalPropNames,a=void 0===s?[]:s;return function(e){return{props:Object.keys((0,Xd.g)(e)).filter((function(e){return e!==i})).concat(a),data:function(){return{loading:!1,bottomedOut:!1,error:!1,entries:[]}},created:function(){window.addEventListener("scroll",this.scrollLoad),0===this.entries.length&&this.fetchEntries()},unmounted:function(){window.removeEventListener("scroll",this.scrollLoad),o&&o(this.$props,this.$store)},methods:{updateEntries:function(){this.entries=n(this.$props,this.$store)||[]},fetchEntries:function(){var e=this;this.loading||(this.loading=!0,this.error=!1,t(this.$props,this.$store).then((function(t){e.loading=!1,e.bottomedOut=Qd()(t)})).catch((function(){e.loading=!1,e.error=!0})).finally((function(){e.updateEntries()})))},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.loading&&!1===this.bottomedOut&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchEntries()}},render:function(){var t,n=tp(tp({},this.$props),{},(0,d.Z)({},i,this.entries)),o=this.$slots;return(0,uo.Wm)("div",{class:"with-load-more"},[(0,uo.Wm)(e,n,(t=o,"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!(0,uo.lA)(t)?o:{default:function(){return[o]}})),(0,uo.Wm)("div",{class:"with-load-more-footer"},[this.error&&(0,uo.Wm)("button",{onClick:this.fetchEntries,class:"button-unstyled -link -fullwidth alert error"},[this.$t("general.generic_error")]),!this.error&&this.loading&&(0,uo.Wm)(lo.GN,{spin:!0,icon:"circle-notch"},null),!this.error&&!this.loading&&!this.bottomedOut&&(0,uo.Wm)("a",{onClick:this.fetchEntries},[this.$t("general.more")])])])}}}};qt.vI.add(Nt.IJ7,Nt.xiy);var op=np({fetch:function(e,t){return t.dispatch("fetchFollowers",e.userId)},select:function(e,t){return Tt()(t.getters.findUser(e.userId),"followerIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFollowers",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(Na.Z),rp=np({fetch:function(e,t){return t.dispatch("fetchFriends",e.userId)},select:function(e,t){return Tt()(t.getters.findUser(e.userId),"friendIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFriends",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(Na.Z),ip="statuses";const sp={data:function(){return{error:!1,userId:null,tab:ip,footerRef:null}},created:function(){var e=this.$route.params;this.load({name:e.name,id:e.id}),this.tab=Tt()(this.$route,"query.tab",ip)},unmounted:function(){this.stopFetching()},computed:{timeline:function(){return this.$store.state.statuses.timelines.user},favorites:function(){return this.$store.state.statuses.timelines.favorites},media:function(){return this.$store.state.statuses.timelines.media},isUs:function(){return this.userId&&this.$store.state.users.currentUser.id&&this.userId===this.$store.state.users.currentUser.id},user:function(){return this.$store.getters.findUser(this.userId)},isExternal:function(){return"external-user-profile"===this.$route.name},followsTabVisible:function(){return this.isUs||!this.user.hide_follows},followersTabVisible:function(){return this.isUs||!this.user.hide_followers},formattedBirthday:function(){var e=fd.Z.internalToBrowserLocale(this.$i18n.locale);return this.user.birthday&&new Date(Date.parse(this.user.birthday)).toLocaleDateString(e,{timeZone:"UTC",day:"numeric",month:"long",year:"numeric"})}},methods:{setFooterRef:function(e){this.footerRef=e},load:function(e){var t=this,n=function(e,n){n!==t.$store.state.statuses.timelines[e].userId&&t.$store.commit("clearTimeline",{timeline:e}),t.$store.dispatch("startFetchingTimeline",{timeline:e,userId:n})},o=function(e){t.userId=e,n("user",e),n("media",e),t.isUs&&n("favorites",e),t.$store.dispatch("fetchPinnedStatuses",e)};this.userId=null,this.error=!1;var r=e.id,i=e.name,s=r?this.$store.getters.findUser(r):this.$store.getters.findUserByName(i);s?o(s.id):(r?this.$store.dispatch("fetchUser",r):this.$store.dispatch("fetchUserByName",i)).then((function(e){var t=e.id;return o(t)})).catch((function(e){var n=Tt()(e,"error.error");t.error="No user with such user_id"===n?t.$t("user_profile.profile_does_not_exist"):n||t.$t("user_profile.profile_loading_error")}))},stopFetching:function(){this.$store.dispatch("stopFetchingTimeline","user"),this.$store.dispatch("stopFetchingTimeline","favorites"),this.$store.dispatch("stopFetchingTimeline","media")},switchUser:function(e){this.stopFetching(),this.load(e)},onTabSwitch:function(e){this.tab=e,this.$router.replace({query:{tab:e}})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")}},watch:{"$route.params.id":function(e){e&&this.switchUser({id:e})},"$route.params.name":function(e){e&&this.switchUser({name:e})},"$route.query":function(e){this.tab=e.tab||ip}},components:{UserCard:_r.Z,Timeline:Ul,FollowerList:op,FriendList:rp,FollowCard:Yd,TabSwitcher:nu.Z,Conversation:Sl,RichContent:zu.Z}},ap=(0,Eo.Z)(sp,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("UserCard"),a=(0,uo.up)("FAIcon"),c=(0,uo.up)("RichContent"),l=(0,uo.up)("Timeline"),u=(0,uo.up)("FollowCard"),d=(0,uo.up)("FriendList"),p=(0,uo.up)("FollowerList"),m=(0,uo.up)("tab-switcher");return(0,uo.wg)(),(0,uo.iD)("div",null,[e.user?((0,uo.wg)(),(0,uo.iD)("div",zd,[(0,uo.Wm)(s,{"user-id":e.userId,switcher:!0,selected:e.timeline.viewing,"avatar-action":"zoom",rounded:"top","has-note-editor":!0},null,8,["user-id","selected"]),e.user.birthday?((0,uo.wg)(),(0,uo.iD)("span",Dd,[(0,uo.Wm)(a,{class:"fa-old-padding",icon:"birthday-cake"}),(0,uo.Uk)(" "+(0,po.zw)(e.$t("user_card.birthday",{birthday:e.formattedBirthday})),1)])):(0,uo.kq)("",!0),e.user.fields_html&&e.user.fields_html.length>0?((0,uo.wg)(),(0,uo.iD)("div",Id,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.user.fields_html,(function(t,n){return(0,uo.wg)(),(0,uo.iD)("dl",{key:n,class:"user-profile-field"},[(0,uo._)("dt",{title:e.user.fields_text[n].name,class:"user-profile-field-name"},[(0,uo.Wm)(c,{html:t.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,xd),(0,uo._)("dd",{title:e.user.fields_text[n].value,class:"user-profile-field-value"},[(0,uo.Wm)(c,{html:t.value,emoji:e.user.emoji},null,8,["html","emoji"])],8,Td)])})),128))])):(0,uo.kq)("",!0),(0,uo.Wm)(m,{"active-tab":e.tab,"render-only-focused":!0,"on-switch":e.onTabSwitch},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(l,{key:"statuses",label:e.$t("user_card.statuses"),count:e.user.statuses_count,embedded:!0,title:e.$t("user_profile.timeline_title"),timeline:e.timeline,"timeline-name":"user","user-id":e.userId,"pinned-status-ids":e.user.pinnedStatusIds,"in-profile":!0,"footer-slipgate":e.footerRef},null,8,["label","count","title","timeline","user-id","pinned-status-ids","footer-slipgate"]),e.followsTabVisible?((0,uo.wg)(),(0,uo.iD)("div",{key:"followees",label:e.$t("user_card.followees"),disabled:!e.user.friends_count},[(0,uo.Wm)(d,{"user-id":e.userId},{item:(0,uo.w5)((function(e){var t=e.item;return[(0,uo.Wm)(u,{user:t},null,8,["user"])]})),_:1},8,["user-id"])],8,$d)):(0,uo.kq)("",!0),e.followersTabVisible?((0,uo.wg)(),(0,uo.iD)("div",{key:"followers",label:e.$t("user_card.followers"),disabled:!e.user.followers_count},[(0,uo.Wm)(p,{"user-id":e.userId},{item:(0,uo.w5)((function(t){var n=t.item;return[(0,uo.Wm)(u,{user:n,"no-follows-you":e.isUs},null,8,["user","no-follows-you"])]})),_:1},8,["user-id"])],8,Ud)):(0,uo.kq)("",!0),(0,uo.Wm)(l,{key:"media",label:e.$t("user_card.media"),disabled:!e.media.visibleStatuses.length,embedded:!0,title:e.$t("user_card.media"),"timeline-name":"media",timeline:e.media,"user-id":e.userId,"in-profile":!0,"footer-slipgate":e.footerRef},null,8,["label","disabled","title","timeline","user-id","footer-slipgate"]),e.isUs?((0,uo.wg)(),(0,uo.j4)(l,{key:"favorites",label:e.$t("user_card.favorites"),disabled:!e.favorites.visibleStatuses.length,embedded:!0,title:e.$t("user_card.favorites"),"timeline-name":"favorites",timeline:e.favorites,"in-profile":!0,"footer-slipgate":e.footerRef},null,8,["label","disabled","title","timeline","footer-slipgate"])):(0,uo.kq)("",!0)]})),_:1},8,["active-tab","on-switch"]),(0,uo._)("div",{ref:e.setFooterRef,class:"panel-footer"},null,512)])):((0,uo.wg)(),(0,uo.iD)("div",Md,[(0,uo._)("div",Ad,[(0,uo._)("div",Ld,(0,po.zw)(e.$t("settings.profile_tab")),1)]),(0,uo._)("div",Ed,[e.error?((0,uo.wg)(),(0,uo.iD)("span",Fd,(0,po.zw)(e.error),1)):((0,uo.wg)(),(0,uo.j4)(a,{key:1,spin:"",icon:"circle-notch"}))])]))])}]]);var cp={class:"panel panel-default"},lp={class:"panel-heading"},up={class:"title"},dp={class:"search-input-container"},pp=["placeholder"],mp={key:0,class:"text-center loading-icon"},hp={key:1},fp={class:"search-nav-heading"},gp=["label"],vp=["label"],wp=["label"],bp={class:"panel-body"},yp={key:0},_p={class:"new-status-notification text-center"},kp={key:1,class:"text-center loading-icon"},Sp={key:2,class:"search-result-heading"},jp={key:1},Cp={key:0,class:"search-result-heading"},Op={key:2},Pp={key:0,class:"search-result-heading"},zp={class:"hashtag"},Dp={key:0},Ip={key:0},xp={key:1},Tp={key:0,class:"count"},$p=(0,uo._)("div",{class:"search-result-footer text-center panel-footer faint"},null,-1),Up=n(45578),Mp=n.n(Up);qt.vI.add(Nt.IJ7,Nt.wn1);const Ap={components:{FollowCard:Yd,Conversation:Sl,Status:qa.default,TabSwitcher:nu.Z},props:["query"],data:function(){return{loaded:!1,loading:!1,searchTerm:this.query||"",userIds:[],statuses:[],hashtags:[],currenResultTab:"statuses",statusesOffset:0,lastStatusFetchCount:0,lastQuery:""}},computed:{users:function(){var e=this;return this.userIds.map((function(t){return e.$store.getters.findUser(t)}))},visibleStatuses:function(){var e=this.$store.state.statuses.allStatusesObject;return this.statuses.filter((function(t){return e[t.id]&&!e[t.id].deleted}))}},mounted:function(){this.search(this.query)},watch:{query:function(e){this.searchTerm=e,this.search(e)}},methods:{newQuery:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},search:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e?(this.loading=!0,this.$refs.searchInput.blur(),this.lastQuery!==e&&(this.userIds=[],this.hashtags=[],this.statuses=[],this.statusesOffset=0,this.lastStatusFetchCount=0),this.$store.dispatch("search",{q:e,resolve:!0,offset:this.statusesOffset,type:n}).then((function(n){t.loading=!1;var o=t.statuses.length;t.userIds=t.userIds.concat(be()(n.accounts,"id")),t.statuses=Mp()(t.statuses.concat(n.statuses),"id"),t.hashtags=t.hashtags.concat(n.hashtags),t.currenResultTab=t.getActiveTab(),t.loaded=!0,t.statusesOffset=t.statuses.length,t.lastStatusFetchCount=t.statuses.length-o,t.lastQuery=e}))):this.loading=!1},resultCount:function(e){var t=this[e].length;return 0===t?"":" (".concat(t,")")},onResultTabSwitch:function(e){this.currenResultTab=e},getActiveTab:function(){return this.visibleStatuses.length>0?"statuses":this.users.length>0?"people":this.hashtags.length>0?"hashtags":"statuses"},lastHistoryRecord:function(e){return e.history&&e.history[0]}}},Lp=(0,Eo.Z)(Ap,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon"),a=(0,uo.up)("tab-switcher"),c=(0,uo.up)("Status"),l=(0,uo.up)("FollowCard"),u=(0,uo.up)("router-link");return(0,uo.wg)(),(0,uo.iD)("div",cp,[(0,uo._)("div",lp,[(0,uo._)("div",up,(0,po.zw)(e.$t("nav.search")),1)]),(0,uo._)("div",dp,[(0,uo.wy)((0,uo._)("input",{ref:"searchInput","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.searchTerm=t}),class:"search-input",placeholder:e.$t("nav.search"),onKeyup:t[1]||(t[1]=(0,ro.D2)((function(t){return e.newQuery(e.searchTerm)}),["enter"]))},null,40,pp),[[ro.nr,e.searchTerm]]),(0,uo._)("button",{class:"btn button-default search-button",type:"submit",onClick:t[2]||(t[2]=function(t){return e.newQuery(e.searchTerm)})},[(0,uo.Wm)(s,{icon:"search"})])]),e.loading&&0==e.statusesOffset?((0,uo.wg)(),(0,uo.iD)("div",mp,[(0,uo.Wm)(s,{icon:"circle-notch",spin:"",size:"lg"})])):e.loaded?((0,uo.wg)(),(0,uo.iD)("div",hp,[(0,uo._)("div",fp,[(0,uo.Wm)(a,{ref:"tabSwitcher","on-switch":e.onResultTabSwitch,"active-tab":e.currenResultTab},{default:(0,uo.w5)((function(){return[(0,uo._)("span",{key:"statuses",label:e.$t("user_card.statuses")+e.resultCount("visibleStatuses")},null,8,gp),(0,uo._)("span",{key:"people",label:e.$t("search.people")+e.resultCount("users")},null,8,vp),(0,uo._)("span",{key:"hashtags",label:e.$t("search.hashtags")+e.resultCount("hashtags")},null,8,wp)]})),_:1},8,["on-switch","active-tab"])])])):(0,uo.kq)("",!0),(0,uo._)("div",bp,["statuses"===e.currenResultTab?((0,uo.wg)(),(0,uo.iD)("div",yp,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.visibleStatuses,(function(e){return(0,uo.wg)(),(0,uo.j4)(c,{key:e.id,collapsable:!1,expandable:!1,compact:!1,class:"search-result",statusoid:e,"no-heading":!1},null,8,["statusoid"])})),128)),!e.loading&&e.loaded&&e.lastStatusFetchCount>0?((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:"more-statuses-button button-unstyled -link -fullwidth",onClick:t[3]||(t[3]=(0,ro.iM)((function(t){return e.search(e.searchTerm,"statuses")}),["prevent"]))},[(0,uo._)("div",_p,(0,po.zw)(e.$t("search.load_more")),1)])):e.loading&&e.statusesOffset>0?((0,uo.wg)(),(0,uo.iD)("div",kp,[(0,uo.Wm)(s,{icon:"circle-notch",spin:"",size:"lg"})])):(0,uo.kq)("",!0),0!==e.visibleStatuses.length&&0!==e.lastStatusFetchCount||e.loading||!e.loaded?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("div",Sp,[(0,uo._)("h4",null,(0,po.zw)(0===e.visibleStatuses.length?e.$t("search.no_results"):e.$t("search.no_more_results")),1)]))])):"people"===e.currenResultTab?((0,uo.wg)(),(0,uo.iD)("div",jp,[0===e.users.length&&!e.loading&&e.loaded?((0,uo.wg)(),(0,uo.iD)("div",Cp,[(0,uo._)("h4",null,(0,po.zw)(e.$t("search.no_results")),1)])):(0,uo.kq)("",!0),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.users,(function(e){return(0,uo.wg)(),(0,uo.j4)(l,{key:e.id,user:e,class:"list-item search-result"},null,8,["user"])})),128))])):"hashtags"===e.currenResultTab?((0,uo.wg)(),(0,uo.iD)("div",Op,[0===e.hashtags.length&&!e.loading&&e.loaded?((0,uo.wg)(),(0,uo.iD)("div",Pp,[(0,uo._)("h4",null,(0,po.zw)(e.$t("search.no_results")),1)])):(0,uo.kq)("",!0),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.hashtags,(function(t){return(0,uo.wg)(),(0,uo.iD)("div",{key:t.url,class:"status trend search-result"},[(0,uo._)("div",zp,[(0,uo.Wm)(u,{to:{name:"tag-timeline",params:{tag:t.name}}},{default:(0,uo.w5)((function(){return[(0,uo.Uk)(" #"+(0,po.zw)(t.name),1)]})),_:2},1032,["to"]),e.lastHistoryRecord(t)?((0,uo.wg)(),(0,uo.iD)("div",Dp,[1==e.lastHistoryRecord(t).accounts?((0,uo.wg)(),(0,uo.iD)("span",Ip,(0,po.zw)(e.$t("search.person_talking",{count:e.lastHistoryRecord(t).accounts})),1)):((0,uo.wg)(),(0,uo.iD)("span",xp,(0,po.zw)(e.$t("search.people_talking",{count:e.lastHistoryRecord(t).accounts})),1))])):(0,uo.kq)("",!0)]),e.lastHistoryRecord(t)?((0,uo.wg)(),(0,uo.iD)("div",Tp,(0,po.zw)(e.lastHistoryRecord(t).uses),1)):(0,uo.kq)("",!0)])})),128))])):(0,uo.kq)("",!0)]),$p])}]]);var Ep={class:"settings panel panel-default"},Fp={class:"panel-heading"},Rp={class:"panel-body"},qp={class:"container"},Np={class:"text-fields"},Zp={class:"form--label",for:"sign-up-username"},Wp=["disabled","placeholder"],Bp={key:0,class:"form-error"},Hp={key:0},Vp={class:"form--label",for:"sign-up-fullname"},Kp=["disabled","placeholder"],Gp={key:1,class:"form-error"},Yp={key:0},Jp={class:"form--label",for:"email"},Qp=["disabled","aria-required"],Xp={key:2,class:"form-error"},em={key:0},tm={class:"form-group"},nm={class:"form--label",for:"bio"},om=["disabled","placeholder"],rm={class:"form--label",for:"sign-up-password"},im=["disabled"],sm={key:3,class:"form-error"},am={key:0},cm={class:"form--label",for:"sign-up-password-confirmation"},lm=["disabled"],um={key:4,class:"form-error"},dm={key:0},pm={key:1},mm={class:"form--label",for:"sign-up-birthday"},hm=["disabled","max","aria-required"],fm={key:5,class:"form-error"},gm={key:0},vm={key:1},wm={key:6,class:"form-group"},bm={class:"form--label",for:"reason"},ym=["disabled","placeholder"],_m={key:7,id:"captcha-group",class:"form-group"},km={class:"form--label",for:"captcha-label"},Sm=["src"],jm=["disabled"],Cm={key:8,class:"form-group"},Om={for:"token"},Pm={class:"form-group"},zm=["disabled"],Dm=["innerHTML"],Im={key:0,class:"form-group"},xm={class:"alert error"},Tm=n(54028),$m=n(35332),Um=n(73414),Mm=n(27483);function Am(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Lm(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Am(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Am(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const Em={setup:function(){return{v$:(0,Tm.ZP)()}},data:function(){return{user:{email:"",fullname:"",username:"",password:"",confirm:"",birthday:"",reason:"",language:[""]},captcha:{}}},components:{InterfaceLanguageSwitcher:Um.Z},validations:function(){var e=this;return{user:{email:{required:(0,$m.CF)((function(){return e.accountActivationRequired}))},username:{required:$m.C1},fullname:{required:$m.C1},password:{required:$m.C1},confirm:{required:$m.C1,sameAs:(0,$m.sH)(this.user.password)},birthday:{required:(0,$m.CF)((function(){return e.birthdayRequired})),maxValue:function(t){return!e.birthdayRequired||new Date(t).getTime()<=e.birthdayMin.getTime()}},reason:{required:(0,$m.CF)((function(){return e.accountApprovalRequired}))},language:{}}}},created:function(){(!this.registrationOpen&&!this.token||this.signedIn)&&this.$router.push({name:"root"}),this.setCaptcha()},computed:Lm({token:function(){return this.$route.params.token},bioPlaceholder:function(){return this.replaceNewlines(this.$t("registration.bio_placeholder"))},reasonPlaceholder:function(){return this.replaceNewlines(this.$t("registration.reason_placeholder"))},birthdayMin:function(){var e=this.birthdayMinAge,t=new Date;t.setUTCMilliseconds(0),t.setUTCSeconds(0),t.setUTCMinutes(0),t.setUTCHours(0);var n=new Date;return n.setTime(t.getTime()-e*Mm.x4),n},birthdayMinAttr:function(){return this.birthdayMin.toJSON().replace(/T.+$/,"")},birthdayMinFormatted:function(){var e=fd.Z.internalToBrowserLocale(this.$i18n.locale);return this.user.birthday&&new Date(Date.parse(this.birthdayMin)).toLocaleDateString(e,{timeZone:"UTC",day:"numeric",month:"long",year:"numeric"})}},(0,s.rn)({registrationOpen:function(e){return e.instance.registrationOpen},signedIn:function(e){return!!e.users.currentUser},isPending:function(e){return e.users.signUpPending},serverValidationErrors:function(e){return e.users.signUpErrors},termsOfService:function(e){return e.instance.tos},accountActivationRequired:function(e){return e.instance.accountActivationRequired},accountApprovalRequired:function(e){return e.instance.accountApprovalRequired},birthdayRequired:function(e){return e.instance.birthdayRequired},birthdayMinAge:function(e){return e.instance.birthdayMinAge}})),methods:Lm(Lm({},(0,s.nv)(["signUp","getCaptcha"])),{},{submit:function(){var e=this;return(0,o.Z)(i().mark((function t(){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.user.nickname=e.user.username,e.user.token=e.token,e.user.captcha_solution=e.captcha.solution,e.user.captcha_token=e.captcha.token,e.user.captcha_answer_data=e.captcha.answer_data,e.user.language&&(e.user.language=fd.Z.internalToBackendLocaleMulti(e.user.language.filter((function(e){return e})))),e.v$.$touch(),e.v$.$invalid){t.next=18;break}return t.prev=8,t.next=11,e.signUp(e.user);case 11:e.$router.push({name:"friends"}),t.next=18;break;case 14:t.prev=14,t.t0=t.catch(8),console.warn("Registration failed: ",t.t0),e.setCaptcha();case 18:case"end":return t.stop()}}),t,null,[[8,14]])})))()},setCaptcha:function(){var e=this;this.getCaptcha().then((function(t){e.captcha=t}))},replaceNewlines:function(e){return e.replace(/\s*\n\s*/g," \n")}})},Fm=(0,Eo.Z)(Em,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("interface-language-switcher");return(0,uo.wg)(),(0,uo.iD)("div",Ep,[(0,uo._)("div",Fp,(0,po.zw)(e.$t("registration.registration")),1),(0,uo._)("div",Rp,[(0,uo._)("form",{class:"registration-form",onSubmit:t[12]||(t[12]=(0,ro.iM)((function(t){return e.submit(e.user)}),["prevent"]))},[(0,uo._)("div",qp,[(0,uo._)("div",Np,[(0,uo._)("div",{class:(0,po.C_)(["form-group",{"form-group--error":e.v$.user.username.$error}])},[(0,uo._)("label",Zp,(0,po.zw)(e.$t("login.username")),1),(0,uo.wy)((0,uo._)("input",{id:"sign-up-username","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.v$.user.username.$model=t}),disabled:e.isPending,class:"form-control","aria-required":!0,placeholder:e.$t("registration.username_placeholder")},null,8,Wp),[[ro.nr,e.v$.user.username.$model,void 0,{trim:!0}]])],2),e.v$.user.username.$dirty?((0,uo.wg)(),(0,uo.iD)("div",Bp,[(0,uo._)("ul",null,[e.v$.user.username.required?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("li",Hp,[(0,uo._)("span",null,(0,po.zw)(e.$t("registration.validations.username_required")),1)]))])])):(0,uo.kq)("",!0),(0,uo._)("div",{class:(0,po.C_)(["form-group",{"form-group--error":e.v$.user.fullname.$error}])},[(0,uo._)("label",Vp,(0,po.zw)(e.$t("registration.fullname")),1),(0,uo.wy)((0,uo._)("input",{id:"sign-up-fullname","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.v$.user.fullname.$model=t}),disabled:e.isPending,class:"form-control","aria-required":!0,placeholder:e.$t("registration.fullname_placeholder")},null,8,Kp),[[ro.nr,e.v$.user.fullname.$model,void 0,{trim:!0}]])],2),e.v$.user.fullname.$dirty?((0,uo.wg)(),(0,uo.iD)("div",Gp,[(0,uo._)("ul",null,[e.v$.user.fullname.required?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("li",Yp,[(0,uo._)("span",null,(0,po.zw)(e.$t("registration.validations.fullname_required")),1)]))])])):(0,uo.kq)("",!0),(0,uo._)("div",{class:(0,po.C_)(["form-group",{"form-group--error":e.v$.user.email.$error}])},[(0,uo._)("label",Jp,(0,po.zw)(e.accountActivationRequired?e.$t("registration.email"):e.$t("registration.email_optional")),1),(0,uo.wy)((0,uo._)("input",{id:"email","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.v$.user.email.$model=t}),disabled:e.isPending,class:"form-control",type:"email","aria-required":e.accountActivationRequired},null,8,Qp),[[ro.nr,e.v$.user.email.$model]])],2),e.v$.user.email.$dirty?((0,uo.wg)(),(0,uo.iD)("div",Xp,[(0,uo._)("ul",null,[e.v$.user.email.required?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("li",em,[(0,uo._)("span",null,(0,po.zw)(e.$t("registration.validations.email_required")),1)]))])])):(0,uo.kq)("",!0),(0,uo._)("div",tm,[(0,uo._)("label",nm,(0,po.zw)(e.$t("registration.bio_optional")),1),(0,uo.wy)((0,uo._)("textarea",{id:"bio","onUpdate:modelValue":t[3]||(t[3]=function(t){return e.user.bio=t}),disabled:e.isPending,class:"form-control",placeholder:e.bioPlaceholder},null,8,om),[[ro.nr,e.user.bio]])]),(0,uo._)("div",{class:(0,po.C_)(["form-group",{"form-group--error":e.v$.user.password.$error}])},[(0,uo._)("label",rm,(0,po.zw)(e.$t("login.password")),1),(0,uo.wy)((0,uo._)("input",{id:"sign-up-password","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.user.password=t}),disabled:e.isPending,class:"form-control",type:"password","aria-required":!0},null,8,im),[[ro.nr,e.user.password]])],2),e.v$.user.password.$dirty?((0,uo.wg)(),(0,uo.iD)("div",sm,[(0,uo._)("ul",null,[e.v$.user.password.required?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("li",am,[(0,uo._)("span",null,(0,po.zw)(e.$t("registration.validations.password_required")),1)]))])])):(0,uo.kq)("",!0),(0,uo._)("div",{class:(0,po.C_)(["form-group",{"form-group--error":e.v$.user.confirm.$error}])},[(0,uo._)("label",cm,(0,po.zw)(e.$t("registration.password_confirm")),1),(0,uo.wy)((0,uo._)("input",{id:"sign-up-password-confirmation","onUpdate:modelValue":t[5]||(t[5]=function(t){return e.user.confirm=t}),disabled:e.isPending,class:"form-control",type:"password","aria-required":!0},null,8,lm),[[ro.nr,e.user.confirm]])],2),e.v$.user.confirm.$dirty?((0,uo.wg)(),(0,uo.iD)("div",um,[(0,uo._)("ul",null,[e.v$.user.confirm.required.$invalid?((0,uo.wg)(),(0,uo.iD)("li",dm,[(0,uo._)("span",null,(0,po.zw)(e.$t("registration.validations.password_confirmation_required")),1)])):(0,uo.kq)("",!0),e.v$.user.confirm.sameAs.$invalid?((0,uo.wg)(),(0,uo.iD)("li",pm,[(0,uo._)("span",null,(0,po.zw)(e.$t("registration.validations.password_confirmation_match")),1)])):(0,uo.kq)("",!0)])])):(0,uo.kq)("",!0),(0,uo._)("div",{class:(0,po.C_)(["form-group",{"form-group--error":e.v$.user.birthday.$error}])},[(0,uo._)("label",mm,(0,po.zw)(e.birthdayRequired?e.$t("registration.birthday"):e.$t("registration.birthday_optional")),1),(0,uo.wy)((0,uo._)("input",{id:"sign-up-birthday","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.user.birthday=t}),disabled:e.isPending,class:"form-control",type:"date",max:e.birthdayRequired?e.birthdayMinAttr:void 0,"aria-required":e.birthdayRequired},null,8,hm),[[ro.nr,e.user.birthday]])],2),e.v$.user.birthday.$dirty?((0,uo.wg)(),(0,uo.iD)("div",fm,[(0,uo._)("ul",null,[e.v$.user.birthday.required.$invalid?((0,uo.wg)(),(0,uo.iD)("li",gm,[(0,uo._)("span",null,(0,po.zw)(e.$t("registration.validations.birthday_required")),1)])):(0,uo.kq)("",!0),e.v$.user.birthday.maxValue.$invalid?((0,uo.wg)(),(0,uo.iD)("li",vm,[(0,uo._)("span",null,(0,po.zw)(e.$tc("registration.validations.birthday_min_age",{date:e.birthdayMinFormatted})),1)])):(0,uo.kq)("",!0)])])):(0,uo.kq)("",!0),(0,uo._)("div",{class:(0,po.C_)(["form-group",{"form-group--error":e.v$.user.language.$error}])},[(0,uo.Wm)(s,{for:"email-language","prompt-text":e.$t("registration.email_language"),language:e.v$.user.language.$model,"set-language":function(t){return e.v$.user.language.$model=t},onClick:t[7]||(t[7]=(0,ro.iM)((function(){}),["stop","prevent"]))},null,8,["prompt-text","language","set-language"])],2),e.accountApprovalRequired?((0,uo.wg)(),(0,uo.iD)("div",wm,[(0,uo._)("label",bm,(0,po.zw)(e.$t("registration.reason")),1),(0,uo.wy)((0,uo._)("textarea",{id:"reason","onUpdate:modelValue":t[8]||(t[8]=function(t){return e.user.reason=t}),disabled:e.isPending,class:"form-control",placeholder:e.reasonPlaceholder},null,8,ym),[[ro.nr,e.user.reason]])])):(0,uo.kq)("",!0),"none"!=e.captcha.type?((0,uo.wg)(),(0,uo.iD)("div",_m,[(0,uo._)("label",km,(0,po.zw)(e.$t("registration.captcha")),1),["kocaptcha","native"].includes(e.captcha.type)?((0,uo.wg)(),(0,uo.iD)(uo.HY,{key:0},[(0,uo._)("img",{src:e.captcha.url,onClick:t[9]||(t[9]=function(){return e.setCaptcha&&e.setCaptcha.apply(e,arguments)})},null,8,Sm),(0,uo._)("sub",null,(0,po.zw)(e.$t("registration.new_captcha")),1),(0,uo.wy)((0,uo._)("input",{id:"captcha-answer","onUpdate:modelValue":t[10]||(t[10]=function(t){return e.captcha.solution=t}),disabled:e.isPending,class:"form-control",type:"text",autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellcheck:"false"},null,8,jm),[[ro.nr,e.captcha.solution]])],64)):(0,uo.kq)("",!0)])):(0,uo.kq)("",!0),e.token?((0,uo.wg)(),(0,uo.iD)("div",Cm,[(0,uo._)("label",Om,(0,po.zw)(e.$t("registration.token")),1),(0,uo.wy)((0,uo._)("input",{id:"token","onUpdate:modelValue":t[11]||(t[11]=function(t){return e.token=t}),disabled:"true",class:"form-control",type:"text"},null,512),[[ro.nr,e.token]])])):(0,uo.kq)("",!0),(0,uo._)("div",Pm,[(0,uo._)("button",{disabled:e.isPending,type:"submit",class:"btn button-default"},(0,po.zw)(e.$t("registration.register")),9,zm)])]),(0,uo._)("div",{class:"terms-of-service",innerHTML:e.termsOfService},null,8,Dm)]),e.serverValidationErrors.length?((0,uo.wg)(),(0,uo.iD)("div",Im,[(0,uo._)("div",xm,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.serverValidationErrors,(function(e){return(0,uo.wg)(),(0,uo.iD)("span",{key:e},(0,po.zw)(e),1)})),128))])])):(0,uo.kq)("",!0)],32)])])}]]);var Rm={class:"settings panel panel-default"},qm={class:"panel-heading"},Nm={class:"panel-body"},Zm={class:"container"},Wm={key:0},Bm={key:0},Hm={key:1},Vm={key:1},Km={key:0},Gm={class:"form-group text-center"},Ym={key:2},Jm={key:0,class:"password-reset-required error"},Qm={class:"form-group"},Xm=["disabled","placeholder"],eh={class:"form-group"},th=["disabled"],nh={key:3,class:"alert error notice-dismissible"};function oh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function rh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?oh(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):oh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.NBC);var ih={data:function(){return{user:{email:""},isPending:!1,success:!1,throttled:!1,error:null}},computed:rh(rh({},(0,s.rn)({signedIn:function(e){return!!e.users.currentUser},instance:function(e){return e.instance}})),{},{mailerEnabled:function(){return this.instance.mailerEnabled}}),created:function(){this.signedIn&&this.$router.push({name:"root"})},props:{passwordResetRequested:{default:!1,type:Boolean}},methods:{dismissError:function(){this.error=null},submit:function(){var e=this;this.isPending=!0;var t=this.user.email;(function(e){var t=e.instance,n={email:e.email},o=Ee()(n,(function(e,t,n){var o="".concat(n,"=").concat(encodeURIComponent(t));return"".concat(e,"&").concat(o)}),""),r="".concat(t).concat("/auth/password","?").concat(o);return window.fetch(r,{method:"POST"})})({instance:this.instance.server,email:t}).then((function(t){var n=t.status;e.isPending=!1,e.user.email="",204===n?(e.success=!0,e.error=null):429===n&&(e.throttled=!0,e.error=e.$t("password_reset.too_many_requests"))})).catch((function(){e.isPending=!1,e.user.email="",e.error=e.$t("general.generic_error")}))}}};const sh=ih,ah=(0,Eo.Z)(sh,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("router-link"),a=(0,uo.up)("FAIcon");return(0,uo.wg)(),(0,uo.iD)("div",Rm,[(0,uo._)("div",qm,(0,po.zw)(e.$t("password_reset.password_reset")),1),(0,uo._)("div",Nm,[(0,uo._)("form",{class:"password-reset-form",onSubmit:t[2]||(t[2]=(0,ro.iM)((function(){return e.submit&&e.submit.apply(e,arguments)}),["prevent"]))},[(0,uo._)("div",Zm,[e.mailerEnabled?e.success||e.throttled?((0,uo.wg)(),(0,uo.iD)("div",Vm,[e.success?((0,uo.wg)(),(0,uo.iD)("p",Km,(0,po.zw)(e.$t("password_reset.check_email")),1)):(0,uo.kq)("",!0),(0,uo._)("div",Gm,[(0,uo.Wm)(s,{to:{name:"root"}},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("password_reset.return_home")),1)]})),_:1})])])):((0,uo.wg)(),(0,uo.iD)("div",Ym,[e.passwordResetRequested?((0,uo.wg)(),(0,uo.iD)("p",Jm,(0,po.zw)(e.$t("password_reset.password_reset_required")),1)):(0,uo.kq)("",!0),(0,uo._)("p",null,(0,po.zw)(e.$t("password_reset.instruction")),1),(0,uo._)("div",Qm,[(0,uo.wy)((0,uo._)("input",{ref:"email","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.user.email=t}),disabled:e.isPending,placeholder:e.$t("password_reset.placeholder"),class:"form-control",type:"input"},null,8,Xm),[[ro.nr,e.user.email]])]),(0,uo._)("div",eh,[(0,uo._)("button",{disabled:e.isPending,type:"submit",class:"btn button-default btn-block"},(0,po.zw)(e.$t("settings.save")),9,th)])])):((0,uo.wg)(),(0,uo.iD)("div",Wm,[e.passwordResetRequested?((0,uo.wg)(),(0,uo.iD)("p",Bm,(0,po.zw)(e.$t("password_reset.password_reset_required_but_mailer_is_disabled")),1)):((0,uo.wg)(),(0,uo.iD)("p",Hm,(0,po.zw)(e.$t("password_reset.password_reset_disabled")),1))])),e.error?((0,uo.wg)(),(0,uo.iD)("p",nh,[(0,uo._)("span",null,(0,po.zw)(e.error),1),(0,uo._)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[1]||(t[1]=(0,ro.iM)((function(t){return e.dismissError()}),["prevent"]))},[(0,uo.Wm)(a,{icon:"times"})])])):(0,uo.kq)("",!0)])],32)])])}]]);var ch={class:"settings panel panel-default"},lh={class:"panel-heading"},uh={class:"title"},dh={class:"panel-body"},ph={class:"follow-request-card-content-container"};const mh={props:["user"],components:{BasicUserCard:qu.Z,ConfirmModal:ca.Z},data:function(){return{showingApproveConfirmDialog:!1,showingDenyConfirmDialog:!1}},methods:{findFollowRequestNotificationId:function(){var e=this,t=(0,K.Bt)(this.$store).find((function(t){return t.from_profile.id===e.user.id&&"follow_request"===t.type}));return t&&t.id},showApproveConfirmDialog:function(){this.showingApproveConfirmDialog=!0},hideApproveConfirmDialog:function(){this.showingApproveConfirmDialog=!1},showDenyConfirmDialog:function(){this.showingDenyConfirmDialog=!0},hideDenyConfirmDialog:function(){this.showingDenyConfirmDialog=!1},approveUser:function(){this.shouldConfirmApprove?this.showApproveConfirmDialog():this.doApprove()},doApprove:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user);var e=this.findFollowRequestNotificationId();this.$store.dispatch("markSingleNotificationAsSeen",{id:e}),this.$store.dispatch("updateNotification",{id:e,updater:function(e){e.type="follow"}}),this.hideApproveConfirmDialog()},denyUser:function(){this.shouldConfirmDeny?this.showDenyConfirmDialog():this.doDeny()},doDeny:function(){var e=this,t=this.findFollowRequestNotificationId();this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:t}),e.$store.dispatch("removeFollowRequest",e.user)})),this.hideDenyConfirmDialog()}},computed:{mergedConfig:function(){return this.$store.getters.mergedConfig},shouldConfirmApprove:function(){return this.mergedConfig.modalOnApproveFollow},shouldConfirmDeny:function(){return this.mergedConfig.modalOnDenyFollow}}},hh={components:{FollowRequestCard:(0,Eo.Z)(mh,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("confirm-modal"),a=(0,uo.up)("basic-user-card");return(0,uo.wg)(),(0,uo.j4)(a,{user:e.user},{default:(0,uo.w5)((function(){return[(0,uo._)("div",ph,[(0,uo._)("button",{class:"btn button-default",onClick:t[0]||(t[0]=function(){return e.approveUser&&e.approveUser.apply(e,arguments)})},(0,po.zw)(e.$t("user_card.approve")),1),(0,uo._)("button",{class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.denyUser&&e.denyUser.apply(e,arguments)})},(0,po.zw)(e.$t("user_card.deny")),1)]),((0,uo.wg)(),(0,uo.j4)(uo.lR,{to:"#modal"},[e.showingApproveConfirmDialog?((0,uo.wg)(),(0,uo.j4)(s,{key:0,title:e.$t("user_card.approve_confirm_title"),"confirm-text":e.$t("user_card.approve_confirm_accept_button"),"cancel-text":e.$t("user_card.approve_confirm_cancel_button"),onAccepted:e.doApprove,onCancelled:e.hideApproveConfirmDialog},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("user_card.approve_confirm",{user:e.user.screen_name_ui})),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,uo.kq)("",!0),e.showingDenyConfirmDialog?((0,uo.wg)(),(0,uo.j4)(s,{key:1,title:e.$t("user_card.deny_confirm_title"),"confirm-text":e.$t("user_card.deny_confirm_accept_button"),"cancel-text":e.$t("user_card.deny_confirm_cancel_button"),onAccepted:e.doDeny,onCancelled:e.hideDenyConfirmDialog},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("user_card.deny_confirm",{user:e.user.screen_name_ui})),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,uo.kq)("",!0)]))]})),_:1},8,["user"])}]])},computed:{requests:function(){return this.$store.state.api.followRequests}}},fh=(0,Eo.Z)(hh,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FollowRequestCard");return(0,uo.wg)(),(0,uo.iD)("div",ch,[(0,uo._)("div",lh,[(0,uo._)("div",uh,(0,po.zw)(e.$t("nav.friend_requests")),1)]),(0,uo._)("div",dh,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.requests,(function(e){return(0,uo.wg)(),(0,uo.j4)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"])})),128))])])}]]),gh={props:["code"],mounted:function(){var e=this;if(this.code){var t=this.$store.state.oauth,n=t.clientId,o=t.clientSecret;Ze.getToken({clientId:n,clientSecret:o,instance:this.$store.state.instance.server,code:this.code}).then((function(t){e.$store.commit("setToken",t.access_token),e.$store.dispatch("loginUser",t.access_token),e.$router.push({name:"friends"})}))}}},vh=(0,Eo.Z)(gh,[["render",function(e,t,n,o,r,i){return(0,uo.wg)(),(0,uo.iD)("h1",null,"...")}]]);var wh={class:"panel panel-default"},bh={class:"panel-heading"},yh={class:"panel-body"};const _h={components:{FollowCard:Yd},data:function(){return{users:[]}},mounted:function(){this.getWhoToFollow()},methods:{showWhoToFollow:function(e){var t=this;e.forEach((function(e,n){t.$store.state.api.backendInteractor.fetchUser({id:e.acct}).then((function(e){e.error||(t.$store.commit("addNewUsers",[e]),t.users.push(e))}))}))},getWhoToFollow:function(){var e=this,t=this.$store.state.users.currentUser.credentials;t&&h.ZP.suggestions({credentials:t}).then((function(t){e.showWhoToFollow(t)}))}}},kh=(0,Eo.Z)(_h,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FollowCard");return(0,uo.wg)(),(0,uo.iD)("div",wh,[(0,uo._)("div",bh,(0,po.zw)(e.$t("who_to_follow.who_to_follow")),1),(0,uo._)("div",yh,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.users,(function(e){return(0,uo.wg)(),(0,uo.j4)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"])})),128))])])}]]);var Sh={class:"column-inner"},jh={class:"panel panel-default"},Ch={class:"panel-body"},Oh=["innerHTML"];const Ph={computed:{content:function(){return this.$store.state.instance.tos}}},zh=(0,Eo.Z)(Ph,[["render",function(e,t,n,o,r,i){return(0,uo.wg)(),(0,uo.iD)("div",null,[(0,uo._)("div",jh,[(0,uo._)("div",Ch,[(0,uo._)("div",{class:"tos-content",innerHTML:e.content},null,8,Oh)])])])}]]);var Dh={class:"staff-panel"},Ih={class:"panel panel-default base01-background"},xh={class:"panel-heading timeline-heading base02-background"},Th={class:"title"},$h={class:"panel-body"};function Uh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Mh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Uh(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Uh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const Ah={created:function(){var e=this;this.$store.state.instance.staffAccounts.forEach((function(t){return e.$store.dispatch("fetchUserIfMissing",t)}))},components:{BasicUserCard:qu.Z},computed:Mh(Mh({groupedStaffAccounts:function(){var e=be()(this.staffAccounts,this.findUserByName).filter((function(e){return e})),t=Ot()(e,"role");return[{role:"admin",users:t.admin},{role:"moderator",users:t.moderator}].filter((function(e){return e.users}))}},(0,s.Se)(["findUserByName"])),(0,s.rn)({staffAccounts:function(e){return e.instance.staffAccounts}}))},Lh=(0,Eo.Z)(Ah,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("basic-user-card");return(0,uo.wg)(),(0,uo.iD)("div",Dh,[(0,uo._)("div",Ih,[(0,uo._)("div",xh,[(0,uo._)("div",Th,(0,po.zw)(e.$t("about.staff")),1)]),(0,uo._)("div",$h,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.groupedStaffAccounts,(function(t){return(0,uo.wg)(),(0,uo.iD)("div",{key:t.role,class:"staff-group"},[(0,uo._)("h4",null,(0,po.zw)(e.$t("general.role."+t.role)),1),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(t.users,(function(e){return(0,uo.wg)(),(0,uo.j4)(s,{key:e.screen_name,user:e},null,8,["user"])})),128))])})),128))])])])}]]);var Eh={key:0,class:"mrf-transparency-panel"},Fh={class:"panel panel-default base01-background"},Rh={class:"panel-heading timeline-heading base02-background"},qh={class:"title"},Nh={class:"panel-body"},Zh={class:"mrf-section"},Wh=["textContent"],Bh={key:0},Hh={key:1},Vh={key:0},Kh={key:1},Gh={key:2},Yh={key:0},Jh={key:1},Qh={key:3},Xh={key:0},ef={key:1},tf={key:4},nf={key:0},of={key:1},rf={key:5},sf={key:0},af={key:1},cf={key:6},lf={key:0},uf={key:1},df={key:7},pf={key:8},mf=["textContent"],hf={key:9},ff=["textContent"],gf={key:10};function vf(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function wf(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?vf(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):vf(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var bf=function(e,t,n){return e.map((function(e){return t[n]&&t[n][e]&&t[n][e].reason?{instance:e,reason:t[n][e].reason}:{instance:e,reason:""}}))};const yf={computed:wf(wf({},(0,s.rn)({federationPolicy:function(e){return Tt()(e,"instance.federationPolicy")},mrfPolicies:function(e){return Tt()(e,"instance.federationPolicy.mrf_policies",[])},quarantineInstances:function(e){return bf(Tt()(e,"instance.federationPolicy.quarantined_instances",[]),Tt()(e,"instance.federationPolicy.quarantined_instances_info",[]),"quarantined_instances")},acceptInstances:function(e){return bf(Tt()(e,"instance.federationPolicy.mrf_simple.accept",[]),Tt()(e,"instance.federationPolicy.mrf_simple_info",[]),"accept")},rejectInstances:function(e){return bf(Tt()(e,"instance.federationPolicy.mrf_simple.reject",[]),Tt()(e,"instance.federationPolicy.mrf_simple_info",[]),"reject")},ftlRemovalInstances:function(e){return bf(Tt()(e,"instance.federationPolicy.mrf_simple.federated_timeline_removal",[]),Tt()(e,"instance.federationPolicy.mrf_simple_info",[]),"federated_timeline_removal")},mediaNsfwInstances:function(e){return bf(Tt()(e,"instance.federationPolicy.mrf_simple.media_nsfw",[]),Tt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_nsfw")},mediaRemovalInstances:function(e){return bf(Tt()(e,"instance.federationPolicy.mrf_simple.media_removal",[]),Tt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_removal")},keywordsFtlRemoval:function(e){return Tt()(e,"instance.federationPolicy.mrf_keyword.federated_timeline_removal",[])},keywordsReject:function(e){return Tt()(e,"instance.federationPolicy.mrf_keyword.reject",[])},keywordsReplace:function(e){return Tt()(e,"instance.federationPolicy.mrf_keyword.replace",[])}})),{},{hasInstanceSpecificPolicies:function(){return this.quarantineInstances.length||this.acceptInstances.length||this.rejectInstances.length||this.ftlRemovalInstances.length||this.mediaNsfwInstances.length||this.mediaRemovalInstances.length},hasKeywordPolicies:function(){return this.keywordsFtlRemoval.length||this.keywordsReject.length||this.keywordsReplace.length}})},_f={components:{InstanceSpecificPanel:hi,FeaturesPanel:Pi,TermsOfServicePanel:zh,StaffPanel:Lh,MRFTransparencyPanel:(0,Eo.Z)(yf,[["render",function(e,t,n,o,r,i){return e.federationPolicy?((0,uo.wg)(),(0,uo.iD)("div",Eh,[(0,uo._)("div",Fh,[(0,uo._)("div",Rh,[(0,uo._)("div",qh,(0,po.zw)(e.$t("about.mrf.federation")),1)]),(0,uo._)("div",Nh,[(0,uo._)("div",Zh,[(0,uo._)("h2",null,(0,po.zw)(e.$t("about.mrf.mrf_policies")),1),(0,uo._)("p",null,(0,po.zw)(e.$t("about.mrf.mrf_policies_desc")),1),(0,uo._)("ul",null,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.mrfPolicies,(function(e){return(0,uo.wg)(),(0,uo.iD)("li",{key:e,textContent:(0,po.zw)(e)},null,8,Wh)})),128))]),e.hasInstanceSpecificPolicies?((0,uo.wg)(),(0,uo.iD)("h2",Bh,(0,po.zw)(e.$t("about.mrf.simple.simple_policies")),1)):(0,uo.kq)("",!0),e.acceptInstances.length?((0,uo.wg)(),(0,uo.iD)("div",Hh,[(0,uo._)("h4",null,(0,po.zw)(e.$t("about.mrf.simple.accept")),1),(0,uo._)("p",null,(0,po.zw)(e.$t("about.mrf.simple.accept_desc")),1),(0,uo._)("table",null,[(0,uo._)("tr",null,[(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.instance")),1),(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.acceptInstances,(function(t){return(0,uo.wg)(),(0,uo.iD)("tr",{key:t.instance+"_accept"},[(0,uo._)("td",null,(0,po.zw)(t.instance),1),""===t.reason?((0,uo.wg)(),(0,uo.iD)("td",Vh,(0,po.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,uo.wg)(),(0,uo.iD)("td",Kh,(0,po.zw)(t.reason),1))])})),128))])])):(0,uo.kq)("",!0),e.rejectInstances.length?((0,uo.wg)(),(0,uo.iD)("div",Gh,[(0,uo._)("h4",null,(0,po.zw)(e.$t("about.mrf.simple.reject")),1),(0,uo._)("p",null,(0,po.zw)(e.$t("about.mrf.simple.reject_desc")),1),(0,uo._)("table",null,[(0,uo._)("tr",null,[(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.instance")),1),(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.rejectInstances,(function(t){return(0,uo.wg)(),(0,uo.iD)("tr",{key:t.instance+"_reject"},[(0,uo._)("td",null,(0,po.zw)(t.instance),1),""===t.reason?((0,uo.wg)(),(0,uo.iD)("td",Yh,(0,po.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,uo.wg)(),(0,uo.iD)("td",Jh,(0,po.zw)(t.reason),1))])})),128))])])):(0,uo.kq)("",!0),e.quarantineInstances.length?((0,uo.wg)(),(0,uo.iD)("div",Qh,[(0,uo._)("h4",null,(0,po.zw)(e.$t("about.mrf.simple.quarantine")),1),(0,uo._)("p",null,(0,po.zw)(e.$t("about.mrf.simple.quarantine_desc")),1),(0,uo._)("table",null,[(0,uo._)("tr",null,[(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.instance")),1),(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.quarantineInstances,(function(t){return(0,uo.wg)(),(0,uo.iD)("tr",{key:t.instance+"_quarantine"},[(0,uo._)("td",null,(0,po.zw)(t.instance),1),""===t.reason?((0,uo.wg)(),(0,uo.iD)("td",Xh,(0,po.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,uo.wg)(),(0,uo.iD)("td",ef,(0,po.zw)(t.reason),1))])})),128))])])):(0,uo.kq)("",!0),e.ftlRemovalInstances.length?((0,uo.wg)(),(0,uo.iD)("div",tf,[(0,uo._)("h4",null,(0,po.zw)(e.$t("about.mrf.simple.ftl_removal")),1),(0,uo._)("p",null,(0,po.zw)(e.$t("about.mrf.simple.ftl_removal_desc")),1),(0,uo._)("table",null,[(0,uo._)("tr",null,[(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.instance")),1),(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.ftlRemovalInstances,(function(t){return(0,uo.wg)(),(0,uo.iD)("tr",{key:t.instance+"_ftl_removal"},[(0,uo._)("td",null,(0,po.zw)(t.instance),1),""===t.reason?((0,uo.wg)(),(0,uo.iD)("td",nf,(0,po.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,uo.wg)(),(0,uo.iD)("td",of,(0,po.zw)(t.reason),1))])})),128))])])):(0,uo.kq)("",!0),e.mediaNsfwInstances.length?((0,uo.wg)(),(0,uo.iD)("div",rf,[(0,uo._)("h4",null,(0,po.zw)(e.$t("about.mrf.simple.media_nsfw")),1),(0,uo._)("p",null,(0,po.zw)(e.$t("about.mrf.simple.media_nsfw_desc")),1),(0,uo._)("table",null,[(0,uo._)("tr",null,[(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.instance")),1),(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.mediaNsfwInstances,(function(t){return(0,uo.wg)(),(0,uo.iD)("tr",{key:t.instance+"_media_nsfw"},[(0,uo._)("td",null,(0,po.zw)(t.instance),1),""===t.reason?((0,uo.wg)(),(0,uo.iD)("td",sf,(0,po.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,uo.wg)(),(0,uo.iD)("td",af,(0,po.zw)(t.reason),1))])})),128))])])):(0,uo.kq)("",!0),e.mediaRemovalInstances.length?((0,uo.wg)(),(0,uo.iD)("div",cf,[(0,uo._)("h4",null,(0,po.zw)(e.$t("about.mrf.simple.media_removal")),1),(0,uo._)("p",null,(0,po.zw)(e.$t("about.mrf.simple.media_removal_desc")),1),(0,uo._)("table",null,[(0,uo._)("tr",null,[(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.instance")),1),(0,uo._)("th",null,(0,po.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.mediaRemovalInstances,(function(t){return(0,uo.wg)(),(0,uo.iD)("tr",{key:t.instance+"_media_removal"},[(0,uo._)("td",null,(0,po.zw)(t.instance),1),""===t.reason?((0,uo.wg)(),(0,uo.iD)("td",lf,(0,po.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,uo.wg)(),(0,uo.iD)("td",uf,(0,po.zw)(t.reason),1))])})),128))])])):(0,uo.kq)("",!0),e.hasKeywordPolicies?((0,uo.wg)(),(0,uo.iD)("h2",df,(0,po.zw)(e.$t("about.mrf.keyword.keyword_policies")),1)):(0,uo.kq)("",!0),e.keywordsFtlRemoval.length?((0,uo.wg)(),(0,uo.iD)("div",pf,[(0,uo._)("h4",null,(0,po.zw)(e.$t("about.mrf.keyword.ftl_removal")),1),(0,uo._)("ul",null,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.keywordsFtlRemoval,(function(e){return(0,uo.wg)(),(0,uo.iD)("li",{key:e,textContent:(0,po.zw)(e)},null,8,mf)})),128))])])):(0,uo.kq)("",!0),e.keywordsReject.length?((0,uo.wg)(),(0,uo.iD)("div",hf,[(0,uo._)("h4",null,(0,po.zw)(e.$t("about.mrf.keyword.reject")),1),(0,uo._)("ul",null,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.keywordsReject,(function(e){return(0,uo.wg)(),(0,uo.iD)("li",{key:e,textContent:(0,po.zw)(e)},null,8,ff)})),128))])])):(0,uo.kq)("",!0),e.keywordsReplace.length?((0,uo.wg)(),(0,uo.iD)("div",gf,[(0,uo._)("h4",null,(0,po.zw)(e.$t("about.mrf.keyword.replace")),1),(0,uo._)("ul",null,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.keywordsReplace,(function(t){return(0,uo.wg)(),(0,uo.iD)("li",{key:t},(0,po.zw)(t.pattern)+" "+(0,po.zw)(e.$t("about.mrf.keyword.is_replaced_by"))+" "+(0,po.zw)(t.replacement),1)})),128))])])):(0,uo.kq)("",!0)])])])])):(0,uo.kq)("",!0)}]])},computed:{showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent}}},kf=(0,Eo.Z)(_f,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("instance-specific-panel"),a=(0,uo.up)("staff-panel"),c=(0,uo.up)("terms-of-service-panel"),l=(0,uo.up)("MRFTransparencyPanel"),u=(0,uo.up)("features-panel");return(0,uo.wg)(),(0,uo.iD)("div",Sh,[e.showInstanceSpecificPanel?((0,uo.wg)(),(0,uo.j4)(s,{key:0})):(0,uo.kq)("",!0),(0,uo.Wm)(a),(0,uo.Wm)(c),(0,uo.Wm)(l),e.showFeaturesPanel?((0,uo.wg)(),(0,uo.j4)(u,{key:1})):(0,uo.kq)("",!0)])}]]);var Sf={class:"panel panel-default"},jf={class:"panel-heading"},Cf={class:"panel-body"},Of={key:0};const Pf={data:function(){return{error:!1}},mounted:function(){this.redirect()},methods:{redirect:function(){var e=this,t=this.$route.params.username+"@"+this.$route.params.hostname;this.$store.state.api.backendInteractor.fetchUser({id:t}).then((function(t){if(t.error)e.error=!0;else{e.$store.commit("addNewUsers",[t]);var n=t.id;e.$router.replace({name:"external-user-profile",params:{id:n}})}})).catch((function(){e.error=!0}))}}},zf=(0,Eo.Z)(Pf,[["render",function(e,t,n,o,r,i){return(0,uo.wg)(),(0,uo.iD)("div",Sf,[(0,uo._)("div",jf,(0,po.zw)(e.$t("remote_user_resolver.remote_user_resolver")),1),(0,uo._)("div",Cf,[(0,uo._)("p",null,(0,po.zw)(e.$t("remote_user_resolver.searching_for"))+" @"+(0,po.zw)(e.$route.params.username)+"@"+(0,po.zw)(e.$route.params.hostname),1),e.error?((0,uo.wg)(),(0,uo.iD)("p",Of,(0,po.zw)(e.$t("remote_user_resolver.error")),1)):(0,uo.kq)("",!0)])])}]]);var Df={class:"Lists panel panel-default"},If={class:"panel-heading"},xf={class:"title"},Tf={class:"panel-body"},$f={class:"list-card"};qt.vI.add(Nt.cNd);const Uf={props:["list"]},Mf={data:function(){return{isNew:!1}},components:{ListsCard:(0,Eo.Z)(Uf,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("router-link"),a=(0,uo.up)("FAIcon");return(0,uo.wg)(),(0,uo.iD)("div",$f,[(0,uo.Wm)(s,{to:{name:"lists-timeline",params:{id:e.list.id}},class:"list-name"},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.list.title),1)]})),_:1},8,["to"]),(0,uo.Wm)(s,{to:{name:"lists-edit",params:{id:e.list.id}},class:"button-list-edit"},{default:(0,uo.w5)((function(){return[(0,uo.Wm)(a,{class:"fa-scale-110 fa-old-padding",icon:"ellipsis-h"})]})),_:1},8,["to"])])}]])},computed:{lists:function(){return this.$store.state.lists.allLists}},methods:{cancelNewList:function(){this.isNew=!1},newList:function(){this.isNew=!0}}},Af=(0,Eo.Z)(Mf,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("router-link"),a=(0,uo.up)("ListsCard");return(0,uo.wg)(),(0,uo.iD)("div",Df,[(0,uo._)("div",If,[(0,uo._)("div",xf,(0,po.zw)(e.$t("lists.lists")),1),(0,uo.Wm)(s,{to:{name:"lists-new"},class:"button-default btn new-list-button"},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("lists.new")),1)]})),_:1})]),(0,uo._)("div",Tf,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.lists.slice().reverse(),(function(e){return(0,uo.wg)(),(0,uo.j4)(a,{key:e,list:e,class:"list-item"},null,8,["list"])})),128))])])}]]),Lf=Af,Ef={data:function(){return{listId:null}},components:{Timeline:Ul},computed:{timeline:function(){return this.$store.state.statuses.timelines.list}},watch:{$route:function(e){"lists-timeline"===e.name&&e.params.id!==this.listId&&(this.listId=e.params.id,this.$store.dispatch("stopFetchingTimeline","list"),this.$store.commit("clearTimeline",{timeline:"list"}),this.$store.dispatch("fetchList",{listId:this.listId}),this.$store.dispatch("startFetchingTimeline",{timeline:"list",listId:this.listId}))}},created:function(){this.listId=this.$route.params.id,this.$store.dispatch("fetchList",{listId:this.listId}),this.$store.dispatch("startFetchingTimeline",{timeline:"list",listId:this.listId})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","list"),this.$store.commit("clearTimeline",{timeline:"list"})}},Ff=(0,Eo.Z)(Ef,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("Timeline");return(0,uo.wg)(),(0,uo.j4)(s,{title:"list.name",timeline:e.timeline,"list-id":e.listId,"timeline-name":"list"},null,8,["timeline","list-id"])}]]);var Rf={class:"panel-default panel ListEdit"},qf={ref:"header",class:"panel-heading list-edit-heading"},Nf={class:"title"},Zf={class:"panel-body"},Wf={class:"input-wrap"},Bf={for:"list-edit-title"},Hf=["label"],Vf={class:"users-list"},Kf=["onClick"],Gf=["label"],Yf={key:0,class:"loading"},Jf={key:1,class:"users-list"},Qf={key:0},Xf=["onClick"],eg=["onClick"],tg={class:"panel-footer"},ng=(0,uo._)("span",{class:"spacer"},null,-1),og={class:"ListsUserSearch"},rg={class:"input-wrap"},ig={class:"input-search"},sg=["placeholder"],ag={class:"input-wrap"};qt.vI.add(Nt.wn1,Nt.A35);const cg={components:{Checkbox:ri.Z},emits:["loading","loadingDone","results"],data:function(){return{loading:!1,query:"",followingOnly:!0}},methods:{onInput:Bs()((function(){this.search(this.query)}),2e3),search:function(e){var t=this;e?(this.loading=!0,this.$emit("loading"),this.userIds=[],this.$store.dispatch("search",{q:e,resolve:!0,type:"accounts",following:this.followingOnly}).then((function(e){t.$emit("results",e.accounts.map((function(e){return e.id})))})).finally((function(){t.loading=!1,t.$emit("loadingDone")}))):this.loading=!1}}},lg=(0,Eo.Z)(cg,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon"),a=(0,uo.up)("Checkbox");return(0,uo.wg)(),(0,uo.iD)("div",og,[(0,uo._)("div",rg,[(0,uo._)("div",ig,[(0,uo.Wm)(s,{class:"search-icon fa-scale-110 fa-old-padding",icon:"search"})]),(0,uo.wy)((0,uo._)("input",{ref:"search","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.query=t}),placeholder:e.$t("lists.search"),onInput:t[1]||(t[1]=function(){return e.onInput&&e.onInput.apply(e,arguments)})},null,40,sg),[[ro.nr,e.query]])]),(0,uo._)("div",ag,[(0,uo.Wm)(a,{modelValue:e.followingOnly,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.followingOnly=t}),onChange:e.onInput},{default:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.$t("lists.following_only")),1)]})),_:1},8,["modelValue","onChange"])])])}]]);var ug=n(29187);function dg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function pg(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dg(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dg(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}qt.vI.add(Nt.wn1,Nt.A35);var mg={components:{BasicUserCard:qu.Z,UserAvatar:ju.default,ListsUserSearch:lg,TabSwitcher:nu.Z,PanelLoading:ug.Z},data:function(){return{title:"",titleDraft:"",membersUserIds:[],removedUserIds:new Set([]),searchUserIds:[],addedUserIds:new Set([]),searchLoading:!1,reallyDelete:!1}},created:function(){var e=this;this.id&&(this.$store.dispatch("fetchList",{listId:this.id}).then((function(){e.title=e.findListTitle(e.id),e.titleDraft=e.title})),this.$store.dispatch("fetchListAccounts",{listId:this.id}).then((function(){e.membersUserIds=e.findListAccounts(e.id),e.membersUserIds.forEach((function(t){e.$store.dispatch("fetchUserIfMissing",t)}))})))},computed:pg(pg({id:function(){return this.$route.params.id},membersUsers:function(){var e=this;return[].concat((0,u.Z)(this.membersUserIds),(0,u.Z)(this.addedUserIds)).map((function(t){return e.findUser(t)})).filter((function(e){return e}))},searchUsers:function(){var e=this;return this.searchUserIds.map((function(t){return e.findUser(t)})).filter((function(e){return e}))}},(0,s.rn)({currentUser:function(e){return e.users.currentUser}})),(0,s.Se)(["findUser","findListTitle","findListAccounts"])),methods:{onInput:function(){this.search(this.query)},toggleRemoveMember:function(e){this.removedUserIds.has(e.id)?(this.id&&this.addUser(e),this.removedUserIds.delete(e.id)):(this.id&&this.removeUser(e.id),this.removedUserIds.add(e.id))},toggleAddFromSearch:function(e){this.addedUserIds.has(e.id)?(this.id&&this.removeUser(e.id),this.addedUserIds.delete(e.id)):(this.id&&this.addUser(e),this.addedUserIds.add(e.id))},isRemoved:function(e){return this.removedUserIds.has(e.id)},isAdded:function(e){return this.addedUserIds.has(e.id)},addUser:function(e){this.$store.dispatch("addListAccount",{accountId:e.id,listId:this.id})},removeUser:function(e){this.$store.dispatch("removeListAccount",{accountId:e,listId:this.id})},onSearchLoading:function(e){this.searchLoading=!0},onSearchLoadingDone:function(e){this.searchLoading=!1},onSearchResults:function(e){this.searchLoading=!1,this.searchUserIds=e},updateListTitle:function(){var e=this;this.$store.dispatch("setList",{listId:this.id,title:this.titleDraft}).then((function(){e.title=e.findListTitle(e.id)}))},createList:function(){var e=this;this.$store.dispatch("createList",{title:this.titleDraft}).then((function(t){return e.$store.dispatch("setListAccounts",{listId:t.id,accountIds:(0,u.Z)(e.addedUserIds)}).then((function(){return t.id}))})).then((function(t){e.$router.push({name:"lists-timeline",params:{id:t}})})).catch((function(t){e.$store.dispatch("pushGlobalNotice",{messageKey:"lists.error",messageArgs:[t.message],level:"error"})}))},deleteList:function(){this.$store.dispatch("deleteList",{listId:this.id}),this.$router.push({name:"lists"})}}};const hg=mg,fg=(0,Eo.Z)(hg,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("FAIcon"),a=(0,uo.up)("i18n-t"),c=(0,uo.up)("BasicUserCard"),l=(0,uo.up)("ListsUserSearch"),u=(0,uo.up)("PanelLoading"),d=(0,uo.up)("tab-switcher");return(0,uo.wg)(),(0,uo.iD)("div",Rf,[(0,uo._)("div",qf,[(0,uo._)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=function(){var t;return e.$router.back&&(t=e.$router).back.apply(t,arguments)})},[(0,uo.Wm)(s,{size:"lg",icon:"chevron-left"})]),(0,uo._)("div",Nf,[e.id?((0,uo.wg)(),(0,uo.j4)(a,{key:0,keypath:"lists.editing_list"},{listTitle:(0,uo.w5)((function(){return[(0,uo.Uk)((0,po.zw)(e.title),1)]})),_:1})):((0,uo.wg)(),(0,uo.j4)(a,{key:1,keypath:"lists.creating_list"}))])],512),(0,uo._)("div",Zf,[(0,uo._)("div",Wf,[(0,uo._)("label",Bf,(0,po.zw)(e.$t("lists.title")),1),(0,uo.Uk)(" "+(0,po.zw)(" ")+" "),(0,uo.wy)((0,uo._)("input",{id:"list-edit-title",ref:"title","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.titleDraft=t})},null,512),[[ro.nr,e.titleDraft]]),e.id?((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:"btn button-default follow-button",onClick:t[2]||(t[2]=function(){return e.updateListTitle&&e.updateListTitle.apply(e,arguments)})},(0,po.zw)(e.$t("lists.update_title")),1)):(0,uo.kq)("",!0)]),(0,uo.Wm)(d,{class:"list-member-management","scrollable-tabs":!0},{default:(0,uo.w5)((function(){return[e.id||e.addedUserIds.size>0?((0,uo.wg)(),(0,uo.iD)("div",{key:0,label:e.$t("lists.manage_members"),class:"members-list"},[(0,uo._)("div",Vf,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.membersUsers,(function(t){return(0,uo.wg)(),(0,uo.iD)("div",{key:t.id,class:"member"},[(0,uo.Wm)(c,{user:t},{default:(0,uo.w5)((function(){return[(0,uo._)("button",{class:"btn button-default follow-button",onClick:function(n){return e.toggleRemoveMember(t)}},(0,po.zw)(e.isRemoved(t)?e.$t("general.undo"):e.$t("lists.remove_from_list")),9,Kf)]})),_:2},1032,["user"])])})),128))])],8,Hf)):(0,uo.kq)("",!0),(0,uo._)("div",{class:"search-list",label:e.$t("lists.add_members")},[(0,uo.Wm)(l,{onResults:e.onSearchResults,onLoading:e.onSearchLoading,onLoadingDone:e.onSearchLoadingDone},null,8,["onResults","onLoading","onLoadingDone"]),e.searchLoading?((0,uo.wg)(),(0,uo.iD)("div",Yf,[(0,uo.Wm)(u)])):((0,uo.wg)(),(0,uo.iD)("div",Jf,[((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.searchUsers,(function(t){return(0,uo.wg)(),(0,uo.iD)("div",{key:t.id,class:"member"},[(0,uo.Wm)(c,{user:t},{default:(0,uo.w5)((function(){return[e.membersUserIds.includes(t.id)?((0,uo.wg)(),(0,uo.iD)("span",Qf,(0,po.zw)(e.$t("lists.is_in_list")),1)):(0,uo.kq)("",!0),e.membersUserIds.includes(t.id)?((0,uo.wg)(),(0,uo.iD)("button",{key:2,class:"btn button-default follow-button",onClick:function(n){return e.toggleRemoveMember(t)}},(0,po.zw)(e.isRemoved(t)?e.$t("general.undo"):e.$t("lists.remove_from_list")),9,eg)):((0,uo.wg)(),(0,uo.iD)("button",{key:1,class:"btn button-default follow-button",onClick:function(n){return e.toggleAddFromSearch(t)}},(0,po.zw)(e.isAdded(t)?e.$t("general.undo"):e.$t("lists.add_to_list")),9,Xf))]})),_:2},1032,["user"])])})),128))]))],8,Gf)]})),_:1})]),(0,uo._)("div",tg,[ng,e.id?e.reallyDelete?((0,uo.wg)(),(0,uo.iD)(uo.HY,{key:2},[(0,uo.Uk)((0,po.zw)(e.$t("lists.really_delete"))+" ",1),(0,uo._)("button",{class:"btn button-default footer-button",onClick:t[5]||(t[5]=function(){return e.deleteList&&e.deleteList.apply(e,arguments)})},(0,po.zw)(e.$t("general.yes")),1),(0,uo._)("button",{class:"btn button-default footer-button",onClick:t[6]||(t[6]=function(t){return e.reallyDelete=!1})},(0,po.zw)(e.$t("general.no")),1)],64)):((0,uo.wg)(),(0,uo.iD)("button",{key:1,class:"btn button-default footer-button",onClick:t[4]||(t[4]=function(t){return e.reallyDelete=!0})},(0,po.zw)(e.$t("lists.delete")),1)):((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:"btn button-default footer-button",onClick:t[3]||(t[3]=function(){return e.createList&&e.createList.apply(e,arguments)})},(0,po.zw)(e.$t("lists.create")),1))])])}]]);var gg={class:"panel panel-default announcements-page"},vg={class:"panel-heading"},wg={class:"panel-body"},bg={key:0},yg={class:"post-form"},_g={class:"heading"},kg={class:"body"},Sg={class:"footer"},jg=["disabled"],Cg={key:0,class:"alert error"},Og={class:"announcement"},Pg={class:"heading"},zg={class:"body"},Dg={class:"footer"},Ig={key:0,class:"times"},xg={key:0},Tg={key:1},$g={key:2},Ug={key:1,class:"actions"},Mg=["disabled","title"],Ag={key:2,class:"actions"},Lg={key:0,class:"alert error"},Eg={class:"announcement-editor"},Fg=["placeholder","disabled"],Rg={class:"announcement-metadata"},qg={for:"announcement-start-time"},Ng=["type","disabled"],Zg={class:"announcement-metadata"},Wg={for:"announcement-end-time"},Bg=["type","disabled"],Hg={class:"announcement-metadata"},Vg={for:"announcement-all-day"};const Kg={components:{Checkbox:ri.Z},props:{announcement:Object,disabled:Boolean}},Gg=(0,Eo.Z)(Kg,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("Checkbox");return(0,uo.wg)(),(0,uo.iD)("div",Eg,[(0,uo.wy)((0,uo._)("textarea",{ref:"textarea","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.announcement.content=t}),class:"post-textarea",rows:"1",cols:"1",placeholder:e.$t("announcements.post_placeholder"),disabled:e.disabled},null,8,Fg),[[ro.nr,e.announcement.content]]),(0,uo._)("span",Rg,[(0,uo._)("label",qg,(0,po.zw)(e.$t("announcements.start_time_prompt")),1),(0,uo.wy)((0,uo._)("input",{id:"announcement-start-time","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.announcement.startsAt=t}),type:e.announcement.allDay?"date":"datetime-local",disabled:e.disabled},null,8,Ng),[[ro.YZ,e.announcement.startsAt]])]),(0,uo._)("span",Zg,[(0,uo._)("label",Wg,(0,po.zw)(e.$t("announcements.end_time_prompt")),1),(0,uo.wy)((0,uo._)("input",{id:"announcement-end-time","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.announcement.endsAt=t}),type:e.announcement.allDay?"date":"datetime-local",disabled:e.disabled},null,8,Bg),[[ro.YZ,e.announcement.endsAt]])]),(0,uo._)("span",Hg,[(0,uo.Wm)(s,{id:"announcement-all-day",modelValue:e.announcement.allDay,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.announcement.allDay=t}),disabled:e.disabled},null,8,["modelValue","disabled"]),(0,uo._)("label",Vg,(0,po.zw)(e.$t("announcements.all_day_prompt")),1)])])}]]);function Yg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Jg(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yg(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yg(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const Qg={components:{AnnouncementEditor:Gg,RichContent:zu.Z},data:function(){return{editing:!1,editedAnnouncement:{content:"",startsAt:void 0,endsAt:void 0,allDay:void 0},editError:""}},props:{announcement:Object},computed:Jg(Jg({},(0,s.rn)({currentUser:function(e){return e.users.currentUser}})),{},{canEditAnnouncement:function(){return this.currentUser&&this.currentUser.privileges.includes("announcements_manage_announcements")},content:function(){return this.announcement.content},isRead:function(){return this.announcement.read},publishedAt:function(){var e=this.announcement.published_at;if(e)return this.formatTimeOrDate(e,fd.Z.internalToBrowserLocale(this.$i18n.locale))},startsAt:function(){var e=this.announcement.starts_at;if(e)return this.formatTimeOrDate(e,fd.Z.internalToBrowserLocale(this.$i18n.locale))},endsAt:function(){var e=this.announcement.ends_at;if(e)return this.formatTimeOrDate(e,fd.Z.internalToBrowserLocale(this.$i18n.locale))},inactive:function(){return this.announcement.inactive}}),methods:{markAsRead:function(){if(!this.isRead)return this.$store.dispatch("markAnnouncementAsRead",this.announcement.id)},deleteAnnouncement:function(){return this.$store.dispatch("deleteAnnouncement",this.announcement.id)},formatTimeOrDate:function(e,t){var n=new Date(e);return this.announcement.all_day?n.toLocaleDateString(t):n.toLocaleString(t)},enterEditMode:function(){this.editedAnnouncement.content=this.announcement.pleroma.raw_content,this.editedAnnouncement.startsAt=this.announcement.starts_at,this.editedAnnouncement.endsAt=this.announcement.ends_at,this.editedAnnouncement.allDay=this.announcement.all_day,this.editing=!0},submitEdit:function(){var e=this;this.$store.dispatch("editAnnouncement",Jg({id:this.announcement.id},this.editedAnnouncement)).then((function(){e.editing=!1})).catch((function(t){e.editError=t.error}))},cancelEdit:function(){this.editing=!1},clearError:function(){this.editError=void 0}}};function Xg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ev(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xg(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xg(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const tv={components:{Announcement:(0,Eo.Z)(Qg,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("rich-content"),a=(0,uo.up)("announcement-editor"),c=(0,uo.up)("FAIcon");return(0,uo.wg)(),(0,uo.iD)("div",Og,[(0,uo._)("div",Pg,[(0,uo._)("h4",null,(0,po.zw)(e.$t("announcements.title")),1)]),(0,uo._)("div",zg,[e.editing?((0,uo.wg)(),(0,uo.j4)(a,{key:1,announcement:e.editedAnnouncement},null,8,["announcement"])):((0,uo.wg)(),(0,uo.j4)(s,{key:0,html:e.content,emoji:e.announcement.emojis,"handle-links":!0},null,8,["html","emoji"]))]),(0,uo._)("div",Dg,[e.editing?(0,uo.kq)("",!0):((0,uo.wg)(),(0,uo.iD)("div",Ig,[e.publishedAt?((0,uo.wg)(),(0,uo.iD)("span",xg,(0,po.zw)(e.$t("announcements.published_time_display",{time:e.publishedAt})),1)):(0,uo.kq)("",!0),e.startsAt?((0,uo.wg)(),(0,uo.iD)("span",Tg,(0,po.zw)(e.$t("announcements.start_time_display",{time:e.startsAt})),1)):(0,uo.kq)("",!0),e.endsAt?((0,uo.wg)(),(0,uo.iD)("span",$g,(0,po.zw)(e.$t("announcements.end_time_display",{time:e.endsAt})),1)):(0,uo.kq)("",!0)])),e.editing?((0,uo.wg)(),(0,uo.iD)("div",Ag,[(0,uo._)("button",{class:"btn button-default",onClick:t[3]||(t[3]=function(){return e.submitEdit&&e.submitEdit.apply(e,arguments)})},(0,po.zw)(e.$t("announcements.submit_edit_action")),1),(0,uo._)("button",{class:"btn button-default",onClick:t[4]||(t[4]=function(){return e.cancelEdit&&e.cancelEdit.apply(e,arguments)})},(0,po.zw)(e.$t("announcements.cancel_edit_action")),1),e.editing&&e.editError?((0,uo.wg)(),(0,uo.iD)("div",Lg,[(0,uo.Uk)((0,po.zw)(e.$t("announcements.edit_error",{error:e.error}))+" ",1),(0,uo._)("button",{class:"button-unstyled",onClick:t[5]||(t[5]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,uo.Wm)(c,{class:"fa-scale-110 fa-old-padding",icon:"times",title:e.$t("announcements.close_error")},null,8,["title"])])])):(0,uo.kq)("",!0)])):((0,uo.wg)(),(0,uo.iD)("div",Ug,[e.currentUser?((0,uo.wg)(),(0,uo.iD)("button",{key:0,class:(0,po.C_)(["btn button-default",{toggled:e.isRead}]),disabled:e.inactive,title:e.inactive?e.$t("announcements.inactive_message"):"",onClick:t[0]||(t[0]=function(){return e.markAsRead&&e.markAsRead.apply(e,arguments)})},(0,po.zw)(e.$t("announcements.mark_as_read_action")),11,Mg)):(0,uo.kq)("",!0),e.canEditAnnouncement?((0,uo.wg)(),(0,uo.iD)("button",{key:1,class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.enterEditMode&&e.enterEditMode.apply(e,arguments)})},(0,po.zw)(e.$t("announcements.edit_action")),1)):(0,uo.kq)("",!0),e.canEditAnnouncement?((0,uo.wg)(),(0,uo.iD)("button",{key:2,class:"btn button-default",onClick:t[2]||(t[2]=function(){return e.deleteAnnouncement&&e.deleteAnnouncement.apply(e,arguments)})},(0,po.zw)(e.$t("announcements.delete_action")),1)):(0,uo.kq)("",!0)]))])])}]]),AnnouncementEditor:Gg},data:function(){return{newAnnouncement:{content:"",startsAt:void 0,endsAt:void 0,allDay:!1},posting:!1,error:void 0}},mounted:function(){this.$store.dispatch("fetchAnnouncements")},computed:ev(ev({},(0,s.rn)({currentUser:function(e){return e.users.currentUser}})),{},{announcements:function(){return this.$store.state.announcements.announcements},canPostAnnouncement:function(){return this.currentUser&&this.currentUser.privileges.includes("announcements_manage_announcements")}}),methods:{postAnnouncement:function(){var e=this;this.posting=!0,this.$store.dispatch("postAnnouncement",this.newAnnouncement).then((function(){e.newAnnouncement.content="",e.startsAt=void 0,e.endsAt=void 0})).catch((function(t){e.error=t.error})).finally((function(){e.posting=!1}))},clearError:function(){this.error=void 0}}},nv=(0,Eo.Z)(tv,[["render",function(e,t,n,o,r,i){var s=(0,uo.up)("announcement-editor"),a=(0,uo.up)("FAIcon"),c=(0,uo.up)("announcement");return(0,uo.wg)(),(0,uo.iD)("div",gg,[(0,uo._)("div",vg,[(0,uo._)("span",null,(0,po.zw)(e.$t("announcements.page_header")),1)]),(0,uo._)("div",wg,[e.canPostAnnouncement?((0,uo.wg)(),(0,uo.iD)("section",bg,[(0,uo._)("div",yg,[(0,uo._)("div",_g,[(0,uo._)("h4",null,(0,po.zw)(e.$t("announcements.post_form_header")),1)]),(0,uo._)("div",kg,[(0,uo.Wm)(s,{announcement:e.newAnnouncement,disabled:e.posting},null,8,["announcement","disabled"])]),(0,uo._)("div",Sg,[(0,uo._)("button",{class:"btn button-default post-button",disabled:e.posting,onClick:t[0]||(t[0]=(0,ro.iM)((function(){return e.postAnnouncement&&e.postAnnouncement.apply(e,arguments)}),["prevent"]))},(0,po.zw)(e.$t("announcements.post_action")),9,jg),e.error?((0,uo.wg)(),(0,uo.iD)("div",Cg,[(0,uo.Uk)((0,po.zw)(e.$t("announcements.post_error",{error:e.error}))+" ",1),(0,uo._)("button",{class:"button-unstyled",onClick:t[1]||(t[1]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,uo.Wm)(a,{class:"fa-scale-110 fa-old-padding",icon:"times",title:e.$t("announcements.close_error")},null,8,["title"])])])):(0,uo.kq)("",!0)])])])):(0,uo.kq)("",!0),((0,uo.wg)(!0),(0,uo.iD)(uo.HY,null,(0,uo.Ko)(e.announcements,(function(e){return(0,uo.wg)(),(0,uo.iD)("section",{key:e.id},[(0,uo.Wm)(c,{announcement:e},null,8,["announcement"])])})),128))])])}]]),ov=function(e){var t=function(t,n,o){e.state.users.currentUser?o():o(e.state.instance.redirectRootNoLogin||"/main/all")},n=[{name:"root",path:"/",redirect:function(t){return(e.state.users.currentUser?e.state.instance.redirectRootLogin:e.state.instance.redirectRootNoLogin)||"/main/all"}},{name:"public-external-timeline",path:"/main/all",component:El},{name:"public-timeline",path:"/main/public",component:Al},{name:"friends",path:"/main/friends",component:Rl,beforeEnter:t},{name:"tag-timeline",path:"/tag/:tag",component:Nl},{name:"bookmarks",path:"/bookmarks",component:Wl},{name:"conversation",path:"/notice/:id",component:Hl,meta:{dontScroll:!0}},{name:"remote-user-profile-acct",path:"/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)",component:zf,beforeEnter:t},{name:"remote-user-profile",path:"/remote-users/:hostname/:username",component:zf,beforeEnter:t},{name:"external-user-profile",path:"/users/$:id",component:ap},{name:"interactions",path:"/users/:username/interactions",component:iu,beforeEnter:t},{name:"dms",path:"/users/:username/dms",component:au,beforeEnter:t},{name:"registration",path:"/registration",component:Fm},{name:"password-reset",path:"/password-reset",component:ah,props:!0},{name:"registration-token",path:"/registration/:token",component:Fm},{name:"friend-requests",path:"/friend-requests",component:fh,beforeEnter:t},{name:"notifications",path:"/:username/notifications",component:aa.default,props:function(){return{disableTeleport:!0}},beforeEnter:t},{name:"login",path:"/login",component:br},{name:"shout-panel",path:"/shout-panel",component:ns,props:function(){return{floating:!1}}},{name:"oauth-callback",path:"/oauth-callback",component:vh,props:function(e){return{code:e.query.code}}},{name:"search",path:"/search",component:Lp,props:function(e){return{query:e.query.query}}},{name:"who-to-follow",path:"/who-to-follow",component:kh,beforeEnter:t},{name:"about",path:"/about",component:kf},{name:"announcements",path:"/announcements",component:nv},{name:"user-profile",path:"/users/:name",component:ap},{name:"legacy-user-profile",path:"/:name",component:ap},{name:"lists",path:"/lists",component:Lf},{name:"lists-timeline",path:"/lists/:id",component:Ff},{name:"lists-edit",path:"/lists/:id/edit",component:fg},{name:"lists-new",path:"/lists/new",component:fg},{name:"edit-navigation",path:"/nav-edit",component:ci,props:function(){return{forceExpand:!0,forceEditMode:!0}},beforeEnter:t}];return e.state.instance.pleromaChatMessagesAvailable&&(n=n.concat([{name:"chat",path:"/users/:username/chats/:recipient_id",component:Pd,meta:{dontScroll:!1},beforeEnter:t},{name:"chats",path:"/users/:username/chats",component:Yu,meta:{dontScroll:!1},beforeEnter:t}])),n};var rv,iv,sv=n(58509),av=new Set([]),cv=function(e){var t=window.innerWidth-document.documentElement.clientWidth;sv.Qp(e,{reserveScrollBarGap:!0}),av.add(e),setTimeout((function(){if(av.size<=1){if(void 0===rv){var e=document.getElementById("nav");rv=window.getComputedStyle(e).getPropertyValue("padding-right"),e.style.paddingRight=rv?"calc(".concat(rv," + ").concat(t,"px)"):"".concat(t,"px")}if(void 0===iv){var n=document.getElementById("app_bg_wrapper");iv=window.getComputedStyle(n).getPropertyValue("right"),n.style.right=iv?"calc(".concat(iv," + ").concat(t,"px)"):"".concat(t,"px")}document.body.classList.add("scroll-locked")}}))},lv=function(e){av.delete(e),setTimeout((function(){0===av.size&&(void 0!==rv&&(document.getElementById("nav").style.paddingRight=rv,rv=void 0),void 0!==iv&&(document.getElementById("app_bg_wrapper").style.right=iv,iv=void 0),document.body.classList.remove("scroll-locked"))})),sv.tG(e)},uv={mounted:function(e,t){t.value&&cv(e)},updated:function(e,t){t.oldValue!==t.value&&(t.value?cv(e):lv(e))},unmounted:function(e){lv(e)}};const dv=function(e){e.directive("body-scroll-lock",uv)};var pv=n(49753);function mv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function hv(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mv(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mv(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var fv=null,gv=function(e){var t=atob(e),n=Uint8Array.from((0,u.Z)(t).map((function(e){return e.charCodeAt(0)})));return(new TextDecoder).decode(n)},vv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((n=document.getElementById("initial-results")?(fv||(fv=JSON.parse(document.getElementById("initial-results").textContent)),fv):null)&&n[t]){e.next=3;break}return e.abrupt("return",window.fetch(t));case 3:return o=gv(n[t]),r=JSON.parse(o),e.abrupt("return",{ok:!0,json:function(){return r},text:function(){return r}});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),wv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,vv("/api/v1/instance");case 4:if(!(o=e.sent).ok){e.next=18;break}return e.next=8,o.json();case 8:r=e.sent,s=r.max_toot_chars,a=r.pleroma.vapid_public_key,n.dispatch("setInstanceOption",{name:"textlimit",value:s}),n.dispatch("setInstanceOption",{name:"accountApprovalRequired",value:r.approval_required}),n.dispatch("setInstanceOption",{name:"birthdayRequired",value:!!r.pleroma.metadata.birthday_required}),n.dispatch("setInstanceOption",{name:"birthdayMinAge",value:r.pleroma.metadata.birthday_min_age||0}),a&&n.dispatch("setInstanceOption",{name:"vapidPublicKey",value:a}),e.next=19;break;case 18:throw o;case 19:e.next=25;break;case 21:e.prev=21,e.t0=e.catch(1),console.error("Could not load instance config, potentially fatal"),console.error(e.t0);case 25:case"end":return e.stop()}}),e,null,[[1,21]])})));return function(t){return e.apply(this,arguments)}}(),bv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.store,e.prev=1,e.next=4,window.fetch("/api/pleroma/frontend_configurations");case 4:if(!(n=e.sent).ok){e.next=12;break}return e.next=8,n.json();case 8:return o=e.sent,e.abrupt("return",o.pleroma_fe);case 12:throw n;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.error("Could not load backend-provided frontend config, potentially fatal"),console.error(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])})));return function(t){return e.apply(this,arguments)}}(),yv=function(){var e=(0,o.Z)(i().mark((function e(){var t;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,window.fetch("/static/config.json");case 3:if(!(t=e.sent).ok){e.next=8;break}return e.abrupt("return",t.json());case 8:throw t;case 9:e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(0),console.warn("Failed to load static/config.json, continuing without it."),console.warn(e.t0),e.abrupt("return",{});case 16:case"end":return e.stop()}}),e,null,[[0,11]])})));return function(){return e.apply(this,arguments)}}(),_v=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a,c,l;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.apiConfig,o=t.staticConfig,r=t.store,s=window.___pleromafe_dev_overrides||{},a=window.___pleromafe_mode.NODE_ENV,c={},s.staticConfigPreference&&"development"===a?(console.warn("OVERRIDING API CONFIG WITH STATIC CONFIG"),c=Object.assign({},n,o)):c=Object.assign({},o,n),(l=function(e){r.dispatch("setInstanceOption",{name:e,value:c[e]})})("nsfwCensorImage"),l("background"),l("hidePostStats"),l("hideBotIndication"),l("hideUserStats"),l("hideFilteredStatuses"),l("logo"),r.dispatch("setInstanceOption",{name:"logoMask",value:void 0===c.logoMask||c.logoMask}),r.dispatch("setInstanceOption",{name:"logoMargin",value:void 0===c.logoMargin?0:c.logoMargin}),l("logoLeft"),r.commit("authFlow/setInitialStrategy",c.loginMethod),l("redirectRootNoLogin"),l("redirectRootLogin"),l("showInstanceSpecificPanel"),l("minimalScopesMode"),l("hideMutedPosts"),l("collapseMessageWithSubject"),l("scopeCopy"),l("subjectLineBehavior"),l("postContentType"),l("alwaysShowSubjectInput"),l("showFeaturesPanel"),l("hideSitename"),l("sidebarRight"),e.abrupt("return",r.dispatch("setTheme",c.theme));case 31:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),kv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/terms-of-service.html");case 4:if(!(o=e.sent).ok){e.next=12;break}return e.next=8,o.text();case 8:r=e.sent,n.dispatch("setInstanceOption",{name:"tos",value:r}),e.next=13;break;case 12:throw o;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load TOS"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])})));return function(t){return e.apply(this,arguments)}}(),Sv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,vv("/instance/panel.html");case 4:if(!(o=e.sent).ok){e.next=12;break}return e.next=8,o.text();case 8:r=e.sent,n.dispatch("setInstanceOption",{name:"instanceSpecificPanelContent",value:r}),e.next=13;break;case 12:throw o;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load instance panel"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])})));return function(t){return e.apply(this,arguments)}}(),jv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,r,s,a;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/stickers.json");case 4:if(!(r=e.sent).ok){e.next=15;break}return e.next=8,r.json();case 8:return s=e.sent,e.next=11,Promise.all(Object.entries(s).map(function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=(0,l.Z)(t,2),o=n[0],r=n[1],e.next=3,window.fetch(r+"pack.json");case 3:if(s=e.sent,a={},!s.ok){e.next=9;break}return e.next=8,s.json();case 8:a=e.sent;case 9:return e.abrupt("return",{pack:o,path:r,meta:a});case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 11:a=e.sent.sort((function(e,t){return e.meta.title.localeCompare(t.meta.title)})),n.dispatch("setInstanceOption",{name:"stickers",value:a}),e.next=16;break;case 15:throw r;case 16:e.next=22;break;case 18:e.prev=18,e.t0=e.catch(1),console.warn("Can't load stickers"),console.warn(e.t0);case 22:case"end":return e.stop()}}),e,null,[[1,18]])})));return function(t){return e.apply(this,arguments)}}(),Cv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,o=n.state,r=n.commit,s=o.oauth,a=o.instance,e.abrupt("return",Re(hv(hv({},s),{},{instance:a.server,commit:r})).then((function(e){return qe(hv(hv({},e),{},{instance:a.server}))})).then((function(e){r("setAppToken",e.access_token),r("setBackendInteractor",Ue(n.getters.getToken()))})));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Ov=function(e){var t=e.store,n=e.accounts.map((function(e){return e.split("/").pop()}));t.dispatch("setInstanceOption",{name:"staffAccounts",value:n})},Pv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a,c,l,u,d,p,m,h,f;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,vv("/nodeinfo/2.0.json");case 4:if(!(o=e.sent).ok){e.next=50;break}return e.next=8,o.json();case 8:r=e.sent,s=r.metadata,a=s.features,n.dispatch("setInstanceOption",{name:"name",value:s.nodeName}),n.dispatch("setInstanceOption",{name:"registrationOpen",value:r.openRegistrations}),n.dispatch("setInstanceOption",{name:"mediaProxyAvailable",value:a.includes("media_proxy")}),n.dispatch("setInstanceOption",{name:"safeDM",value:a.includes("safe_dm_mentions")}),n.dispatch("setInstanceOption",{name:"shoutAvailable",value:a.includes("chat")}),n.dispatch("setInstanceOption",{name:"pleromaChatMessagesAvailable",value:a.includes("pleroma_chat_messages")}),n.dispatch("setInstanceOption",{name:"gopherAvailable",value:a.includes("gopher")}),n.dispatch("setInstanceOption",{name:"pollsAvailable",value:a.includes("polls")}),n.dispatch("setInstanceOption",{name:"editingAvailable",value:a.includes("editing")}),n.dispatch("setInstanceOption",{name:"pollLimits",value:s.pollLimits}),n.dispatch("setInstanceOption",{name:"mailerEnabled",value:s.mailerEnabled}),c=s.uploadLimits,n.dispatch("setInstanceOption",{name:"uploadlimit",value:parseInt(c.general)}),n.dispatch("setInstanceOption",{name:"avatarlimit",value:parseInt(c.avatar)}),n.dispatch("setInstanceOption",{name:"backgroundlimit",value:parseInt(c.background)}),n.dispatch("setInstanceOption",{name:"bannerlimit",value:parseInt(c.banner)}),n.dispatch("setInstanceOption",{name:"fieldsLimits",value:s.fieldsLimits}),n.dispatch("setInstanceOption",{name:"restrictedNicknames",value:s.restrictedNicknames}),n.dispatch("setInstanceOption",{name:"postFormats",value:s.postFormats}),l=s.suggestions,n.dispatch("setInstanceOption",{name:"suggestionsEnabled",value:l.enabled}),n.dispatch("setInstanceOption",{name:"suggestionsWeb",value:l.web}),u=r.software,n.dispatch("setInstanceOption",{name:"backendVersion",value:u.version}),n.dispatch("setInstanceOption",{name:"pleromaBackend",value:"pleroma"===u.name}),d=s.private,n.dispatch("setInstanceOption",{name:"private",value:d}),p=window.___pleromafe_commit_hash,n.dispatch("setInstanceOption",{name:"frontendVersion",value:p}),m=s.federation,n.dispatch("setInstanceOption",{name:"tagPolicyAvailable",value:void 0!==m.mrf_policies&&s.federation.mrf_policies.includes("TagPolicy")}),n.dispatch("setInstanceOption",{name:"federationPolicy",value:m}),n.dispatch("setInstanceOption",{name:"federating",value:void 0===m.enabled||m.enabled}),h=s.accountActivationRequired,n.dispatch("setInstanceOption",{name:"accountActivationRequired",value:h}),f=s.staffAccounts,Ov({store:n,accounts:f}),e.next=51;break;case 50:throw o;case 51:e.next=57;break;case 53:e.prev=53,e.t0=e.catch(1),console.warn("Could not load nodeinfo"),console.warn(e.t0);case 57:case"end":return e.stop()}}),e,null,[[1,53]])})));return function(t){return e.apply(this,arguments)}}(),zv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.next=3,Promise.all([bv({store:n}),yv()]);case 3:return o=e.sent,r=o[0],s=o[1],e.next=8,_v({store:n,apiConfig:r,staticConfig:s}).then(Cv({store:n}));case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Dv=function(){var e=(0,o.Z)(i().mark((function e(t){var n;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.abrupt("return",new Promise(function(){var e=(0,o.Z)(i().mark((function e(t,o){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.getters.getUserToken()){e.next=9;break}return e.prev=1,e.next=4,n.dispatch("loginUser",n.getters.getUserToken());case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),console.error(e.t0);case 9:t();case 10:case"end":return e.stop()}}),e,null,[[1,6]])})));return function(t,n){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();const Iv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a,c,l,u,d,h;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,o=t.i18n,n.dispatch("setLayoutWidth",Me()),n.dispatch("setLayoutHeight",Ae()),pv.Z.initFaviconService(),r=window.___pleromafe_dev_overrides||{},s=void 0!==r.target?r.target:window.location.origin,n.dispatch("setInstanceOption",{name:"server",value:s}),e.next=9,zv({store:n});case 9:return a=n.state.config,c=a.customTheme,l=a.customThemeSource,u=n.state.instance.theme,l||c?l&&l.themeEngineVersion===m.we?(0,p._v)(l):(0,p._v)(c):u||console.error("Failed to load any theme!"),(0,p.mg)(n.state.config),e.next=16,Promise.all([Dv({store:n}),Sv({store:n}),Pv({store:n}),wv({store:n})]);case 16:return n.dispatch("fetchMutes"),n.dispatch("startFetchingAnnouncements"),kv({store:n}),jv({store:n}),d=(0,io.p7)({history:(0,io.PO)(),routes:ov(n),scrollBehavior:function(e,t,n){return!e.matched.some((function(e){return e.meta.dontScroll}))&&(n||{left:0,top:0})}}),(h=(0,ro.ri)(fc)).use(d),h.use(n),h.use(o),h.use(ao()),h.use(dv),h.use(co.ZP),h.component("FAIcon",lo.GN),h.component("FALayers",lo.NH),h.config.unwrapInjectedRef=!0,h.mount("#app"),e.abrupt("return",h);case 33:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();var xv=(window.navigator.language||"en").split("-")[0],Tv=(0,Vn.o)({locale:"en",fallbackLocale:"en",messages:oo.Z.default});oo.Z.setLanguage(Tv,xv);var $v={paths:["serverSideStorage.cache","config","users.lastLoginName","oauth"]};(0,o.Z)(i().mark((function e(){var t,n,o,r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,n=[no],e.prev=2,e.next=5,to($v);case 5:o=e.sent,n.push(o),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),console.error(e.t0),t=!0;case 13:r=(0,s.MT)({modules:{i18n:{getters:{i18n:function(){return Tv.global}}},interface:c,instance:S,users:st,statuses:ae,lists:ue,api:vt,config:f.ZP,serverSideConfig:wt.ZP,serverSideStorage:rn,shout:sn,oauth:an,authFlow:mn,mediaViewer:vn,oauthTokens:wn,reports:kn,polls:Sn,postStatus:jn,editStatus:Cn,statusHistory:On,chats:Bn,announcements:Hn},plugins:n,strict:!1}),t&&r.dispatch("pushGlobalNotice",{messageKey:"errors.storage_unavailable",level:"error"}),Iv({store:r,i18n:Tv});case 16:case"end":return e.stop()}}),e,null,[[2,9]])})))(),window.___pleromafe_mode={NODE_ENV:"production"},window.___pleromafe_commit_hash="eec27700\n",window.___pleromafe_dev_overrides=void 0},85565:(e,t,n)=>{"use strict";n.d(t,{Oi:()=>m,W2:()=>p,ZP:()=>h});var o=n(4942),r=n(29439),i=n(6258),s=n(77394),a=n(72617),c=n(39776);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var p={expertLevel:0,colors:{},theme:void 0,customTheme:void 0,customThemeSource:void 0,hideISP:!1,hideInstanceWallpaper:!1,hideShoutbox:!1,hideMutedPosts:void 0,hideMutedThreads:void 0,hideWordFilteredPosts:void 0,muteBotStatuses:void 0,collapseMessageWithSubject:void 0,padEmoji:!0,hideAttachments:!1,hideAttachmentsInConv:!1,maxThumbnails:16,hideNsfw:!0,preloadImage:!0,loopVideo:!0,loopVideoSilentOnly:!0,streaming:!1,emojiReactionsOnTimeline:!0,alwaysShowNewPostButton:!1,autohideFloatingPostButton:!1,pauseOnUnfocused:!0,stopGifs:!0,replyVisibility:"all",thirdColumnMode:"notifications",notificationVisibility:{follows:!0,mentions:!0,likes:!0,repeats:!0,moves:!0,emojiReactions:!0,followRequest:!0,reports:!0,chatMention:!0,polls:!0},webPushNotifications:!1,muteWords:[],highlight:{},interfaceLanguage:(window.navigator.language||"en").split("-")[0],hideScopeNotice:!1,useStreamingApi:!1,sidebarRight:void 0,scopeCopy:void 0,subjectLineBehavior:void 0,alwaysShowSubjectInput:void 0,postContentType:void 0,minimalScopesMode:void 0,hideFilteredStatuses:void 0,modalOnRepeat:void 0,modalOnUnfollow:void 0,modalOnBlock:void 0,modalOnMute:void 0,modalOnDelete:void 0,modalOnLogout:void 0,modalOnApproveFollow:void 0,modalOnDenyFollow:void 0,modalOnRemoveUserFromFollowers:void 0,playVideosInModal:!1,useOneClickNsfw:!1,useContainFit:!0,disableStickyHeaders:!1,showScrollbars:!1,userPopoverAvatarAction:"open",userPopoverOverlay:!1,sidebarColumnWidth:"25rem",contentColumnWidth:"45rem",notifsColumnWidth:"25rem",navbarColumnStretch:!1,greentext:void 0,useAtIcon:void 0,mentionLinkDisplay:void 0,mentionLinkShowTooltip:void 0,mentionLinkShowAvatar:void 0,mentionLinkFadeDomain:void 0,mentionLinkShowYous:void 0,mentionLinkBoldenYou:void 0,hidePostStats:void 0,hideBotIndication:void 0,hideUserStats:void 0,virtualScrolling:void 0,sensitiveByDefault:void 0,conversationDisplay:void 0,conversationTreeAdvanced:void 0,conversationOtherRepliesButton:void 0,conversationTreeFadeAncestors:void 0,maxDepthInThread:void 0},m=Object.entries(p).filter((function(e){var t=(0,r.Z)(e,2);return t[0],void 0===t[1]})).map((function(e){var t=(0,r.Z)(e,2),n=t[0];return t[1],n}));const h={state:d({},p),getters:{defaultConfig:function(e,t,n,o){var r=n.instance;return d(d({},p),Object.fromEntries(m.map((function(e){return[e,r[e]]}))))},mergedConfig:function(e,t,n,o){return d(d({},o.defaultConfig),Object.fromEntries(Object.entries(e).filter((function(e){var t=(0,r.Z)(e,2);return t[0],void 0!==t[1]}))))}},mutations:{setOption:function(e,t){var n=t.name,o=t.value;e[n]=o},setHighlight:function(e,t){var n=t.user,o=t.color,r=t.type,i=this.state.config.highlight[n];o||r?e.highlight[n]={color:o||i.color,type:r||i.type}:delete e.highlight[n]}},actions:{loadSettings:function(e,t){var n,o=e.dispatch,r=new Set(Object.keys(p)),i=new Set(Object.keys(t)),s=new Set,a=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}(i);try{for(a.s();!(n=a.n()).done;){var c=n.value;r.has(c)&&s.add(c)}}catch(e){a.e(e)}finally{a.f()}s.forEach((function(e){return o("setOption",{name:e,value:t[e]})}))},setHighlight:function(e,t){var n=e.commit;e.dispatch,n("setHighlight",{user:t.user,color:t.color,type:t.type})},setOption:function(e,t){var n=e.commit,o=e.dispatch,r=e.state,l=t.name,u=t.value;switch(n("setOption",{name:l,value:u}),l){case"theme":(0,s.bY)(u);break;case"sidebarColumnWidth":case"contentColumnWidth":case"notifsColumnWidth":(0,s.mg)(r);break;case"customTheme":case"customThemeSource":(0,s._v)(u);break;case"interfaceLanguage":a.Z.setLanguage(this.getters.i18n,u),o("loadUnicodeEmojiData",u),i.Z.set("userLanguage",c.Z.internalToBackendLocaleMulti(u));break;case"thirdColumnMode":o("setLayoutWidth",void 0)}}}}},65405:(e,t,n)=>{"use strict";n.d(t,{W2:()=>m,ZP:()=>h});var o=n(29439),r=n(4942),i=n(36968),s=n.n(i),a=n(27361),c=n.n(a);function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}var u=function(e,t){var n=e.rootState,o=e.commit,r=t.path,i=t.value,a={};return s()(a,r,i),n.api.backendInteractor.updateProfile({params:a}).then((function(e){o("addNewUsers",[e]),o("setCurrentUser",e)}))},d=function(e,t){var n=e.rootState,o=e.commit,r=t.path,i=t.value,a=t.oldValue,c={};return s()(c,r,i),n.api.backendInteractor.updateNotificationSettings({settings:c}).then((function(e){"success"===e.status?o("confirmServerSideOption",{name,value:i}):o("confirmServerSideOption",{name,value:a})}))},p={defaultScope:"source.privacy",defaultNSFW:"source.sensitive",stripRichContent:{get:"source.pleroma.no_rich_text",set:"no_rich_text"},locked:"locked",acceptChatMessages:{get:"pleroma.accepts_chat_messages",set:"accepts_chat_messages"},allowFollowingMove:{get:"pleroma.allow_following_move",set:"allow_following_move"},discoverable:{get:"source.pleroma.discoverable",set:"discoverable"},hideFavorites:{get:"pleroma.hide_favorites",set:"hide_favorites"},hideFollowers:{get:"pleroma.hide_followers",set:"hide_followers"},hideFollows:{get:"pleroma.hide_follows",set:"hide_follows"},hideFollowersCount:{get:"pleroma.hide_followers_count",set:"hide_followers_count"},hideFollowsCount:{get:"pleroma.hide_follows_count",set:"hide_follows_count"},webPushHideContents:{get:"pleroma.notification_settings.hide_notification_contents",set:"hide_notification_contents",api:d},blockNotificationsFromStrangers:{get:"pleroma.notification_settings.block_from_strangers",set:"block_from_strangers",api:d}},m=Object.fromEntries(Object.keys(p).map((function(e){return[e,null]})));const h={state:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){(0,r.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},m),mutations:{confirmServerSideOption:function(e,t){var n=t.name,o=t.value;s()(e,n,o)},wipeServerSideOption:function(e,t){var n=t.name;s()(e,n,null)},wipeAllServerSideOptions:function(e){Object.keys(p).forEach((function(t){s()(e,t,null)}))},setCurrentUser:function(e,t){Object.entries(p).forEach((function(n){var r=(0,o.Z)(n,2),i=r[0],a=r[1],l=a.get,u=void 0===l?a:l;s()(e,i,c()(t._original,u))}))}},actions:{setServerSideOption:function(e,t){var n=e.rootState,o=e.state,r=e.commit,i=(e.dispatch,t.name),s=t.value,a=c()(o,i),l=p[i];if(!l)throw new Error("Invalid server-side setting");var d=l.set,m=void 0===d?l:d,h=l.api,f=void 0===h?u:h;r("wipeServerSideOption",{name:i}),f({rootState:n,commit:r},{path:m,value:s,oldValue:a}).catch((function(e){console.warn("Error setting server-side option:",e),r("confirmServerSideOption",{name:i,value:a})}))},logout:function(e){(0,e.commit)("wipeAllServerSideOptions")}}}},77776:(e,t,n)=>{"use strict";n.d(t,{ro:()=>Ue,_z:()=>Ae,ZP:()=>Le,pR:()=>xe});var o=n(15861),r=n(44925),i=n(29439),s=n(4942),a=n(27361),c=n.n(a),l=n(10928),u=n.n(l),d=n(57043),p=n.n(d),m=n(35161),h=n.n(m),f=n(66073),g=n.n(f),v=n(64687),w=n.n(v),b=n(27742),y=n(71002),_=n(43144),k=n(15671),S=n(97326),j=n(60136),C=n(82963),O=n(61120),P=n(72407),z=n(93433),D=n(48403),I=n.n(D);function x(e,t,n,o){this.name="StatusCodeError",this.statusCode=e,this.message=e+" - "+(JSON&&JSON.stringify?JSON.stringify(t):t),this.error=t,this.options=n,this.response=o,Error.captureStackTrace&&Error.captureStackTrace(this)}x.prototype=Object.create(Error.prototype),x.prototype.constructor=x;var T=function(e){(0,j.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,o=(0,O.Z)(t);if(n){var r=(0,O.Z)(this).constructor;e=Reflect.construct(o,arguments,r)}else e=o.apply(this,arguments);return(0,C.Z)(this,e)});function r(e){var t,n;(0,k.Z)(this,r),t=o.call(this),Error.captureStackTrace&&Error.captureStackTrace((0,S.Z)(t));try{if("string"==typeof e&&(e=JSON.parse(e)).hasOwnProperty("error")&&(e=JSON.parse(e.error)),"object"===(0,y.Z)(e)){var s=JSON.parse(e.error);s.ap_id&&(s.username=s.ap_id,delete s.ap_id),t.message=(n=s,Object.entries(n).reduce((function(e,t){var n=(0,i.Z)(t,2),o=n[0],r=n[1].reduce((function(e,t){return e+[I()(o.replace(/_/g," ")),t].join(" ")+". "}),"");return[].concat((0,z.Z)(e),[r])}),[]))}else t.message=e}catch(n){t.message=e}return t}return(0,_.Z)(r)}((0,P.Z)(Error)),$=["nickname"],U=["id","credentials"];function M(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function A(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?M(Object(n),!0).forEach((function(t){(0,s.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):M(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var L="/api/pleroma/aliases",E="/api/pleroma/admin/users/tag",F=function(e,t){return"/api/pleroma/admin/users/".concat(e,"/permission_group/").concat(t)},R=function(e){return"/api/v1/notifications/".concat(e,"/dismiss")},q=function(e){return"/api/v1/statuses/".concat(e,"/favourite")},N=function(e){return"/api/v1/statuses/".concat(e,"/unfavourite")},Z=function(e){return"/api/v1/statuses/".concat(e,"/reblog")},W=function(e){return"/api/v1/statuses/".concat(e,"/unreblog")},B="/api/v1/timelines/public",H=function(e){return"/api/v1/statuses/".concat(e)},V=function(e){return"/api/v1/accounts/".concat(e,"/statuses")},K=function(e){return"/api/v1/lists/".concat(e)},G=function(e){return"/api/v1/timelines/list/".concat(e)},Y=function(e){return"/api/v1/lists/".concat(e,"/accounts")},J=function(e){return"/api/v1/timelines/tag/".concat(e)},Q=function(e){return"/api/v1/accounts/".concat(e,"/mute")},X=function(e){return"/api/v1/accounts/".concat(e,"/unmute")},ee=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/subscribe")},te=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/unsubscribe")},ne=function(e){return"/api/v1/accounts/".concat(e,"/note")},oe=function(e){return"/api/v1/statuses/".concat(e,"/bookmark")},re=function(e){return"/api/v1/statuses/".concat(e,"/unbookmark")},ie="/api/v1/media",se=function(e){return"/api/v1/statuses/".concat(e,"/favourited_by")},ae=function(e){return"/api/v1/statuses/".concat(e,"/reblogged_by")},ce="/api/v1/accounts/update_credentials",le=function(e){return"/api/v1/statuses/".concat(e,"/pin")},ue=function(e){return"/api/v1/statuses/".concat(e,"/unpin")},de=function(e){return"/api/v1/statuses/".concat(e,"/mute")},pe=function(e){return"/api/v1/statuses/".concat(e,"/unmute")},me="/api/v1/domain_blocks",he=function(e){return"/api/v1/announcements/".concat(e,"/dismiss")},fe=function(e){return"/api/v1/pleroma/statuses/".concat(e,"/reactions")},ge=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},ve=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},we=function(e){return"/api/v1/pleroma/chats/".concat(e,"/messages")},be=function(e){return"/api/v1/pleroma/chats/".concat(e,"/read")},ye=function(e,t){return"/api/v1/pleroma/chats/".concat(e,"/messages/").concat(t)},_e="/api/v1/pleroma/backups",ke=function(e){return"/api/v1/pleroma/admin/announcements/".concat(e)},Se=function(e){return"/api/v1/pleroma/admin/announcements/".concat(e)},je=window.fetch,Ce=function(e,t){var n=""+e;return(t=t||{}).credentials="same-origin",je(n,t)},Oe=function(e){var t=e.method,n=e.url,o=e.params,r=e.payload,s=e.credentials,a=e.headers,c={method:t,headers:A({Accept:"application/json","Content-Type":"application/json"},void 0===a?{}:a)};return o&&(n+="?"+Object.entries(o).map((function(e){var t=(0,i.Z)(e,2),n=t[0],o=t[1];return encodeURIComponent(n)+"="+encodeURIComponent(o)})).join("&")),r&&(c.body=JSON.stringify(r)),s&&(c.headers=A(A({},c.headers),Pe(s))),Ce(n,c).then((function(e){return new Promise((function(t,o){return e.json().then((function(r){return e.ok?t(r):o(new x(e.status,r,{url:n,options:c},e))})).catch((function(t){return o(new x(e.status,t,{url:n,options:c},e))}))}))}))},Pe=function(e){return e?{Authorization:"Bearer ".concat(e)}:{}},ze=function(e){var t=e.id,n=e.credentials,o="".concat("/api/v1/accounts","/").concat(t);return Oe({url:o,credentials:n}).then((function(e){return(0,b.nL)(e)}))},De=function(e){var t=e.id,n=e.maxId,o=e.sinceId,r=e.limit,i=void 0===r?20:r,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/following")}(t),c=[n&&"max_id=".concat(n),o&&"since_id=".concat(o),i&&"limit=".concat(i),"with_relationships=true"].filter((function(e){return e})).join("&");return Ce(a+=c?"?"+c:"",{headers:Pe(s)}).then((function(e){return e.json()})).then((function(e){return e.map(b.nL)}))},Ie=function(e){var t=e.content,n=e.startsAt,o=e.endsAt,r=e.allDay,i={content:t};return void 0!==n&&(i.starts_at=n?new Date(n).toISOString():null),void 0!==o&&(i.ends_at=o?new Date(o).toISOString():null),void 0!==r&&(i.all_day=r),i},xe=function(e){var t=e.credentials,n=e.stream,o=e.args,r=void 0===o?{}:o;return Object.entries(A(A({},t?{access_token:t}:{}),{},{stream:n},r)).reduce((function(e,t){var n=(0,i.Z)(t,2),o=n[0],r=n[1];return e+"".concat(o,"=").concat(r,"&")}),"/api/v1/streaming?")},Te=new Set(["update","notification","delete","filters_changed","status.update"]),$e=new Set(["pleroma:chat_update"]),Ue=function(e){var t=e.url,n=e.preprocessor,o=void 0===n?Me:n,r=e.id,i=void 0===r?"Unknown":r,s=new EventTarget,a=new WebSocket(t);if(!a)throw new Error("Failed to create socket ".concat(i));var c=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e){return e};e.addEventListener(t,(function(e){s.dispatchEvent(new CustomEvent(t,{detail:n(e)}))}))};return a.addEventListener("open",(function(e){console.debug("[WS][".concat(i,"] Socket connected"),e)})),a.addEventListener("error",(function(e){console.debug("[WS][".concat(i,"] Socket errored"),e)})),a.addEventListener("close",(function(e){console.debug("[WS][".concat(i,"] Socket disconnected with code ").concat(e.code),e)})),c(a,"open"),c(a,"close"),c(a,"message",o),c(a,"error"),s.close=function(){a.close(1e3,"Shutting down socket")},s.getState=function(){return a.readyState},s},Me=function(e){var t=e.data;if(t){var n=JSON.parse(t),o=n.event,r=n.payload;if(!Te.has(o)&&!$e.has(o))return console.warn("Unknown event",e),null;if("delete"===o)return{event:o,id:r};var i=r?JSON.parse(r):null;return"update"===o||"status.update"===o?{event:o,status:(0,b.Wn)(i)}:"notification"===o?{event:o,notification:(0,b.eM)(i)}:"pleroma:chat_update"===o?{event:o,chatUpdate:(0,b._J)(i)}:void 0}},Ae=Object.freeze({JOINED:1,CLOSED:2,ERROR:3,DISABLED:4,STARTING:5,STARTING_INITIAL:6});const Le={verifyCredentials:function(e){return Ce("/api/v1/accounts/verify_credentials",{headers:Pe(e)}).then((function(e){return e.ok?e.json():{error:e}})).then((function(e){return e.error?e:(0,b.nL)(e)}))},fetchTimeline:function(e){var t=e.timeline,n=e.credentials,r=e.since,i=void 0!==r&&r,s=e.until,a=void 0!==s&&s,c=e.userId,l=void 0!==c&&c,u=e.listId,d=void 0!==u&&u,p=e.tag,m=void 0!==p&&p,f=e.withMuted,g=void 0!==f&&f,v=e.replyVisibility,y=void 0===v?"all":v,_=e.includeTypes,k=void 0===_?[]:_,S="notifications"===t,j=[],C={public:B,friends:"/api/v1/timelines/home",dms:"/api/v1/timelines/direct",notifications:"/api/v1/notifications",publicAndExternal:B,user:V,media:V,list:G,favorites:"/api/v1/favourites",tag:J,bookmarks:"/api/v1/bookmarks"}[t];"user"!==t&&"media"!==t||(C=C(l)),"list"===t&&(C=C(d)),i&&j.push(["since_id",i]),a&&j.push(["max_id",a]),m&&(C=C(m)),"media"===t&&j.push(["only_media",1]),"public"===t&&j.push(["local",!0]),"public"!==t&&"publicAndExternal"!==t||j.push(["only_media",!1]),"favorites"!==t&&"bookmarks"!==t&&j.push(["with_muted",g]),"all"!==y&&j.push(["reply_visibility",y]),k.length>0&&k.forEach((function(e){j.push(["include_types[]",e])})),j.push(["limit",20]);var O=h()(j,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");return C+="?".concat(O),Ce(C,{headers:Pe(n)}).then(function(){var e=(0,o.Z)(w().mark((function e(n){var o,r,i;return w().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.ok,e.next=3,n.json();case 3:if(r=e.sent,!o||r.errors){e.next=9;break}return i=(0,b.Nw)(n.headers.get("Link"),{flakeId:"bookmarks"!==t&&"notifications"!==t}),e.abrupt("return",{data:r.map(S?b.eM:b.Wn),pagination:i});case 9:return r.errors||(r.errors=[]),r.status=n.status,r.statusText=n.statusText,e.abrupt("return",r);case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())},fetchPinnedStatuses:function(e){var t=e.id,n=e.credentials,o=V(t)+"?pinned=true";return Oe({url:o,credentials:n}).then((function(e){return e.map(b.Wn)}))},fetchConversation:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/statuses/".concat(e,"/context")}(t);return Ce(o,{headers:Pe(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){var t=e.ancestors,n=e.descendants;return{ancestors:t.map(b.Wn),descendants:n.map(b.Wn)}}))},fetchStatus:function(e){var t=e.id,n=e.credentials,o=H(t);return Ce(o,{headers:Pe(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){return(0,b.Wn)(e)}))},fetchStatusSource:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/statuses/".concat(e,"/source")}(t);return Ce(o,{headers:Pe(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching source",e)})).then((function(e){return e.json()})).then((function(e){return(0,b.P7)(e)}))},fetchStatusHistory:function(e){var t,n=e.status,o=e.credentials,r=(t=n.id,"/api/v1/statuses/".concat(t,"/history"));return Oe({url:r,credentials:o}).then((function(e){return e.reverse(),e.map((function(e){return e.originalStatus=n,(0,b.Wn)(e)}))}))},fetchFriends:De,exportFriends:function(e){var t=e.id,n=e.credentials;return new Promise(function(){var e=(0,o.Z)(w().mark((function e(o,r){var i,s,a,c;return w().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,i=[],s=!0;case 3:if(!s){e.next=12;break}return a=i.length>0?u()(i).id:void 0,e.next=7,De({id:t,maxId:a,credentials:n});case 7:c=e.sent,i=p()(i,c),0===c.length&&(s=!1),e.next=3;break;case 12:o(i),e.next=18;break;case 15:e.prev=15,e.t0=e.catch(0),r(e.t0);case 18:case"end":return e.stop()}}),e,null,[[0,15]])})));return function(t,n){return e.apply(this,arguments)}}())},fetchFollowers:function(e){var t=e.id,n=e.maxId,o=e.sinceId,r=e.limit,i=void 0===r?20:r,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/followers")}(t),c=[n&&"max_id=".concat(n),o&&"since_id=".concat(o),i&&"limit=".concat(i),"with_relationships=true"].filter((function(e){return e})).join("&");return Ce(a+=c?"?"+c:"",{headers:Pe(s)}).then((function(e){return e.json()})).then((function(e){return e.map(b.nL)}))},followUser:function(e){var t=e.id,n=e.credentials,o=(0,r.Z)(e,U),i=function(e){return"/api/v1/accounts/".concat(e,"/follow")}(t),s={};return void 0!==o.reblogs&&(s.reblogs=o.reblogs),Ce(i,{body:JSON.stringify(s),headers:A(A({},Pe(n)),{},{"Content-Type":"application/json"}),method:"POST"}).then((function(e){return e.json()}))},unfollowUser:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/accounts/".concat(e,"/unfollow")}(t);return Ce(o,{headers:Pe(n),method:"POST"}).then((function(e){return e.json()}))},pinOwnStatus:function(e){var t=e.id,n=e.credentials;return Oe({url:le(t),credentials:n,method:"POST"}).then((function(e){return(0,b.Wn)(e)}))},unpinOwnStatus:function(e){var t=e.id,n=e.credentials;return Oe({url:ue(t),credentials:n,method:"POST"}).then((function(e){return(0,b.Wn)(e)}))},muteConversation:function(e){var t=e.id,n=e.credentials;return Oe({url:de(t),credentials:n,method:"POST"}).then((function(e){return(0,b.Wn)(e)}))},unmuteConversation:function(e){var t=e.id,n=e.credentials;return Oe({url:pe(t),credentials:n,method:"POST"}).then((function(e){return(0,b.Wn)(e)}))},blockUser:function(e){var t=e.id,n=e.credentials;return Ce(function(e){return"/api/v1/accounts/".concat(e,"/block")}(t),{headers:Pe(n),method:"POST"}).then((function(e){return e.json()}))},unblockUser:function(e){var t=e.id,n=e.credentials;return Ce(function(e){return"/api/v1/accounts/".concat(e,"/unblock")}(t),{headers:Pe(n),method:"POST"}).then((function(e){return e.json()}))},removeUserFromFollowers:function(e){var t=e.id,n=e.credentials;return Ce(function(e){return"/api/v1/accounts/".concat(e,"/remove_from_followers")}(t),{headers:Pe(n),method:"POST"}).then((function(e){return e.json()}))},editUserNote:function(e){var t=e.id,n=e.credentials,o=e.comment;return Oe({url:ne(t),credentials:n,payload:{comment:o},method:"POST"})},fetchUser:ze,fetchUserByName:function(e){var t=e.name,n=e.credentials;return Oe({url:"/api/v1/accounts/lookup",credentials:n,params:{acct:t}}).then((function(e){return e.id})).catch((function(e){if(e&&404===e.statusCode)return t;throw e})).then((function(e){return ze({id:e,credentials:n})}))},fetchUserRelationship:function(e){var t=e.id,n=e.credentials,o="".concat("/api/v1/accounts/relationships","/?id=").concat(t);return Ce(o,{headers:Pe(n)}).then((function(e){return new Promise((function(t,n){return e.json().then((function(r){return e.ok?t(r):n(new x(e.status,r,{url:o},e))}))}))}))},favorite:function(e){var t=e.id,n=e.credentials;return Oe({url:q(t),method:"POST",credentials:n}).then((function(e){return(0,b.Wn)(e)}))},unfavorite:function(e){var t=e.id,n=e.credentials;return Oe({url:N(t),method:"POST",credentials:n}).then((function(e){return(0,b.Wn)(e)}))},retweet:function(e){var t=e.id,n=e.credentials;return Oe({url:Z(t),method:"POST",credentials:n}).then((function(e){return(0,b.Wn)(e)}))},unretweet:function(e){var t=e.id,n=e.credentials;return Oe({url:W(t),method:"POST",credentials:n}).then((function(e){return(0,b.Wn)(e)}))},bookmarkStatus:function(e){var t=e.id,n=e.credentials;return Oe({url:oe(t),headers:Pe(n),method:"POST"})},unbookmarkStatus:function(e){var t=e.id,n=e.credentials;return Oe({url:re(t),headers:Pe(n),method:"POST"})},postStatus:function(e){var t=e.credentials,n=e.status,o=e.spoilerText,r=e.visibility,i=e.sensitive,s=e.poll,a=e.mediaIds,c=void 0===a?[]:a,l=e.inReplyToStatusId,u=e.contentType,d=e.preview,p=e.idempotencyKey,m=new FormData,h=s.options||[];if(m.append("status",n),m.append("source","Pleroma FE"),o&&m.append("spoiler_text",o),r&&m.append("visibility",r),i&&m.append("sensitive",i),u&&m.append("content_type",u),c.forEach((function(e){m.append("media_ids[]",e)})),h.some((function(e){return""!==e}))){var f={expires_in:s.expiresIn,multiple:s.multiple};Object.keys(f).forEach((function(e){m.append("poll[".concat(e,"]"),f[e])})),h.forEach((function(e){m.append("poll[options][]",e)}))}l&&m.append("in_reply_to_id",l),d&&m.append("preview","true");var g=Pe(t);return p&&(g["idempotency-key"]=p),Ce("/api/v1/statuses",{body:m,method:"POST",headers:g}).then((function(e){return e.json()})).then((function(e){return e.error?e:(0,b.Wn)(e)}))},editStatus:function(e){var t=e.id,n=e.credentials,o=e.status,r=e.spoilerText,i=e.sensitive,s=e.poll,a=e.mediaIds,c=void 0===a?[]:a,l=e.contentType,u=new FormData,d=s.options||[];if(u.append("status",o),r&&u.append("spoiler_text",r),i&&u.append("sensitive",i),l&&u.append("content_type",l),c.forEach((function(e){u.append("media_ids[]",e)})),d.some((function(e){return""!==e}))){var p={expires_in:s.expiresIn,multiple:s.multiple};Object.keys(p).forEach((function(e){u.append("poll[".concat(e,"]"),p[e])})),d.forEach((function(e){u.append("poll[options][]",e)}))}var m=Pe(n);return Ce(H(t),{body:u,method:"PUT",headers:m}).then((function(e){return e.json()})).then((function(e){return e.error?e:(0,b.Wn)(e)}))},deleteStatus:function(e){var t=e.id,n=e.credentials;return Ce(function(e){return"/api/v1/statuses/".concat(e)}(t),{headers:Pe(n),method:"DELETE"})},uploadMedia:function(e){var t=e.formData,n=e.credentials;return Ce(ie,{body:t,method:"POST",headers:Pe(n)}).then((function(e){return e.json()})).then((function(e){return(0,b.cO)(e)}))},setMediaDescription:function(e){var t=e.id,n=e.description,o=e.credentials;return Oe({url:"".concat(ie,"/").concat(t),method:"PUT",headers:Pe(o),payload:{description:n}}).then((function(e){return(0,b.cO)(e)}))},fetchMutes:function(e){var t=e.credentials;return Oe({url:"/api/v1/mutes/",credentials:t}).then((function(e){return e.map(b.nL)}))},muteUser:function(e){var t=e.id,n=e.expiresIn,o=e.credentials,r={};return n&&(r.expires_in=n),Oe({url:Q(t),credentials:o,method:"POST",payload:r})},unmuteUser:function(e){var t=e.id,n=e.credentials;return Oe({url:X(t),credentials:n,method:"POST"})},subscribeUser:function(e){var t=e.id,n=e.credentials;return Oe({url:ee(t),credentials:n,method:"POST"})},unsubscribeUser:function(e){var t=e.id,n=e.credentials;return Oe({url:te(t),credentials:n,method:"POST"})},fetchBlocks:function(e){var t=e.credentials;return Oe({url:"/api/v1/blocks/",credentials:t}).then((function(e){return e.map(b.nL)}))},fetchOAuthTokens:function(e){var t=e.credentials;return Ce("/api/oauth_tokens.json",{headers:Pe(t)}).then((function(e){if(e.ok)return e.json();throw new Error("Error fetching auth tokens",e)}))},revokeOAuthToken:function(e){var t=e.id,n=e.credentials,o="/api/oauth_tokens/".concat(t);return Ce(o,{headers:Pe(n),method:"DELETE"})},tagUser:function(e){var t=e.tag,n=e.credentials,o={nicknames:[e.user.screen_name],tags:[t]},r=Pe(n);return r["Content-Type"]="application/json",Ce(E,{method:"PUT",headers:r,body:JSON.stringify(o)})},untagUser:function(e){var t=e.tag,n=e.credentials,o={nicknames:[e.user.screen_name],tags:[t]},r=Pe(n);return r["Content-Type"]="application/json",Ce(E,{method:"DELETE",headers:r,body:JSON.stringify(o)})},deleteUser:function(e){var t=e.credentials,n=e.user.screen_name,o=Pe(t);return Ce("".concat("/api/pleroma/admin/users","?nickname=").concat(n),{method:"DELETE",headers:o})},addRight:function(e){var t=e.right,n=e.credentials,o=e.user.screen_name;return Ce(F(o,t),{method:"POST",headers:Pe(n),body:{}})},deleteRight:function(e){var t=e.right,n=e.credentials,o=e.user.screen_name;return Ce(F(o,t),{method:"DELETE",headers:Pe(n),body:{}})},activateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Oe({url:"/api/pleroma/admin/users/activate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return c()(e,"users.0")}))},deactivateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Oe({url:"/api/pleroma/admin/users/deactivate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return c()(e,"users.0")}))},register:function(e){var t=e.params,n=e.credentials,o=t.nickname,i=(0,r.Z)(t,$);return Ce("/api/v1/accounts",{method:"POST",headers:A(A({},Pe(n)),{},{"Content-Type":"application/json"}),body:JSON.stringify(A({nickname:o,locale:"en_US",agreement:!0},i))}).then((function(e){return e.ok?e.json():e.json().then((function(e){throw new T(e)}))}))},getCaptcha:function(){return Ce("/api/pleroma/captcha").then((function(e){return e.json()}))},updateProfileImages:function(e){var t=e.credentials,n=e.avatar,o=void 0===n?null:n,r=e.avatarName,i=void 0===r?null:r,s=e.banner,a=void 0===s?null:s,c=e.background,l=void 0===c?null:c,u=new FormData;return null!==o&&(null!==i?u.append("avatar",o,i):u.append("avatar",o)),null!==a&&u.append("header",a),null!==l&&u.append("pleroma_background_image",l),Ce(ce,{headers:Pe(t),method:"PATCH",body:u}).then((function(e){return e.json()})).then((function(e){if(e.error)throw new Error(e.error);return(0,b.nL)(e)}))},updateProfile:function(e){var t=e.credentials,n=e.params;return Oe({url:ce,method:"PATCH",payload:n,credentials:t}).then((function(e){return(0,b.nL)(e)}))},importMutes:function(e){var t=e.file,n=e.credentials,o=new FormData;return o.append("list",t),Ce("/api/pleroma/mutes_import",{body:o,method:"POST",headers:Pe(n)}).then((function(e){return e.ok}))},importBlocks:function(e){var t=e.file,n=e.credentials,o=new FormData;return o.append("list",t),Ce("/api/pleroma/blocks_import",{body:o,method:"POST",headers:Pe(n)}).then((function(e){return e.ok}))},importFollows:function(e){var t=e.file,n=e.credentials,o=new FormData;return o.append("list",t),Ce("/api/pleroma/follow_import",{body:o,method:"POST",headers:Pe(n)}).then((function(e){return e.ok}))},deleteAccount:function(e){var t=e.credentials,n=e.password,o=new FormData;return o.append("password",n),Ce("/api/pleroma/delete_account",{body:o,method:"POST",headers:Pe(t)}).then((function(e){return e.json()}))},changeEmail:function(e){var t=e.credentials,n=e.email,o=e.password,r=new FormData;return r.append("email",n),r.append("password",o),Ce("/api/pleroma/change_email",{body:r,method:"POST",headers:Pe(t)}).then((function(e){return e.json()}))},moveAccount:function(e){var t=e.credentials,n=e.password,o=e.targetAccount,r=new FormData;return r.append("password",n),r.append("target_account",o),Ce("/api/pleroma/move_account",{body:r,method:"POST",headers:Pe(t)}).then((function(e){return e.json()}))},addAlias:function(e){var t=e.credentials,n=e.alias;return Oe({url:L,method:"PUT",credentials:t,payload:{alias:n}})},deleteAlias:function(e){var t=e.credentials,n=e.alias;return Oe({url:L,method:"DELETE",credentials:t,payload:{alias:n}})},listAliases:function(e){var t=e.credentials;return Oe({url:L,method:"GET",credentials:t,params:{_cacheBooster:(new Date).getTime()}})},changePassword:function(e){var t=e.credentials,n=e.password,o=e.newPassword,r=e.newPasswordConfirmation,i=new FormData;return i.append("password",n),i.append("new_password",o),i.append("new_password_confirmation",r),Ce("/api/pleroma/change_password",{body:i,method:"POST",headers:Pe(t)}).then((function(e){return e.json()}))},settingsMFA:function(e){var t=e.credentials;return Ce("/api/pleroma/accounts/mfa",{headers:Pe(t),method:"GET"}).then((function(e){return e.json()}))},mfaDisableOTP:function(e){var t=e.credentials,n=e.password,o=new FormData;return o.append("password",n),Ce("/api/pleroma/accounts/mfa/totp",{body:o,method:"DELETE",headers:Pe(t)}).then((function(e){return e.json()}))},generateMfaBackupCodes:function(e){var t=e.credentials;return Ce("/api/pleroma/accounts/mfa/backup_codes",{headers:Pe(t),method:"GET"}).then((function(e){return e.json()}))},mfaSetupOTP:function(e){var t=e.credentials;return Ce("/api/pleroma/accounts/mfa/setup/totp",{headers:Pe(t),method:"GET"}).then((function(e){return e.json()}))},mfaConfirmOTP:function(e){var t=e.credentials,n=e.password,o=e.token,r=new FormData;return r.append("password",n),r.append("code",o),Ce("/api/pleroma/accounts/mfa/confirm/totp",{body:r,headers:Pe(t),method:"POST"}).then((function(e){return e.json()}))},addBackup:function(e){var t=e.credentials;return Oe({url:_e,method:"POST",credentials:t})},listBackups:function(e){var t=e.credentials;return Oe({url:_e,method:"GET",credentials:t,params:{_cacheBooster:(new Date).getTime()}})},fetchFollowRequests:function(e){var t=e.credentials;return Ce("/api/v1/follow_requests",{headers:Pe(t)}).then((function(e){return e.json()})).then((function(e){return e.map(b.nL)}))},fetchLists:function(e){var t=e.credentials;return Ce("/api/v1/lists",{headers:Pe(t)}).then((function(e){return e.json()}))},createList:function(e){var t=e.title,n=e.credentials,o=Pe(n);return o["Content-Type"]="application/json",Ce("/api/v1/lists",{headers:o,method:"POST",body:JSON.stringify({title:t})}).then((function(e){return e.json()}))},getList:function(e){var t=e.listId,n=e.credentials,o=K(t);return Ce(o,{headers:Pe(n)}).then((function(e){return e.json()}))},updateList:function(e){var t=e.listId,n=e.title,o=e.credentials,r=K(t),i=Pe(o);return i["Content-Type"]="application/json",Ce(r,{headers:i,method:"PUT",body:JSON.stringify({title:n})})},getListAccounts:function(e){var t=e.listId,n=e.credentials,o=Y(t);return Ce(o,{headers:Pe(n)}).then((function(e){return e.json()})).then((function(e){return e.map((function(e){return e.id}))}))},addAccountsToList:function(e){var t=e.listId,n=e.accountIds,o=e.credentials,r=Y(t),i=Pe(o);return i["Content-Type"]="application/json",Ce(r,{headers:i,method:"POST",body:JSON.stringify({account_ids:n})})},removeAccountsFromList:function(e){var t=e.listId,n=e.accountIds,o=e.credentials,r=Y(t),i=Pe(o);return i["Content-Type"]="application/json",Ce(r,{headers:i,method:"DELETE",body:JSON.stringify({account_ids:n})})},deleteList:function(e){var t=e.listId,n=e.credentials,o=K(t);return Ce(o,{method:"DELETE",headers:Pe(n)})},approveUser:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/follow_requests/".concat(e,"/authorize")}(t);return Ce(o,{headers:Pe(n),method:"POST"}).then((function(e){return e.json()}))},denyUser:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/follow_requests/".concat(e,"/reject")}(t);return Ce(o,{headers:Pe(n),method:"POST"}).then((function(e){return e.json()}))},suggestions:function(e){var t=e.credentials;return Ce("/api/v1/suggestions",{headers:Pe(t)}).then((function(e){return e.json()}))},markNotificationsAsSeen:function(e){var t=e.id,n=e.credentials,o=e.single,r=void 0!==o&&o,i=new FormData;return r?i.append("id",t):i.append("max_id",t),Ce("/api/v1/pleroma/notifications/read",{body:i,headers:Pe(n),method:"POST"}).then((function(e){return e.json()}))},dismissNotification:function(e){var t=e.credentials,n=e.id;return Oe({url:R(n),method:"POST",payload:{id:n},credentials:t})},vote:function(e){var t,n=e.pollId,o=e.choices,r=e.credentials;return(new FormData).append("choices",o),Oe({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t,"/votes")),method:"POST",credentials:r,payload:{choices:o}})},fetchPoll:function(e){var t,n=e.pollId,o=e.credentials;return Oe({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t)),method:"GET",credentials:o})},fetchFavoritedByUsers:function(e){var t=e.id,n=e.credentials;return Oe({url:se(t),method:"GET",credentials:n}).then((function(e){return e.map(b.nL)}))},fetchRebloggedByUsers:function(e){var t=e.id,n=e.credentials;return Oe({url:ae(t),method:"GET",credentials:n}).then((function(e){return e.map(b.nL)}))},fetchEmojiReactions:function(e){var t=e.id,n=e.credentials;return Oe({url:fe(t),credentials:n}).then((function(e){return e.map((function(e){return e.accounts=e.accounts.map(b.nL),e}))}))},reactWithEmoji:function(e){var t=e.id,n=e.emoji,o=e.credentials;return Oe({url:ge(t,n),method:"PUT",credentials:o}).then(b.Wn)},unreactWithEmoji:function(e){var t=e.id,n=e.emoji,o=e.credentials;return Oe({url:ve(t,n),method:"DELETE",credentials:o}).then(b.Wn)},reportUser:function(e){var t=e.credentials,n=e.userId,o=e.statusIds,r=e.comment,i=e.forward;return Oe({url:"/api/v1/reports",method:"POST",payload:{account_id:n,status_ids:o,comment:r,forward:i},credentials:t})},updateNotificationSettings:function(e){var t=e.credentials,n=e.settings,o=new FormData;return g()(n,(function(e,t){o.append(t,e)})),Ce("".concat("/api/pleroma/notification_settings","?").concat(new URLSearchParams(n)),{headers:Pe(t),method:"PUT",body:o}).then((function(e){return e.json()}))},search2:function(e){var t=e.credentials,n=e.q,o=e.resolve,r=e.limit,i=e.offset,s=e.following,a=e.type,c="/api/v2/search",l=[];n&&l.push(["q",encodeURIComponent(n)]),o&&l.push(["resolve",o]),r&&l.push(["limit",r]),i&&l.push(["offset",i]),s&&l.push(["following",!0]),a&&l.push(["following",a]),l.push(["with_relationships",!0]);var u=h()(l,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");return c+="?".concat(u),Ce(c,{headers:Pe(t)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching search result",e)})).then((function(e){return e.json()})).then((function(e){return e.accounts=e.accounts.slice(0,r).map((function(e){return(0,b.nL)(e)})),e.statuses=e.statuses.slice(0,r).map((function(e){return(0,b.Wn)(e)})),e}))},searchUsers:function(e){var t=e.credentials,n=e.query;return Oe({url:"/api/v1/accounts/search",params:{q:n,resolve:!0},credentials:t}).then((function(e){return e.map(b.nL)}))},fetchKnownDomains:function(e){var t=e.credentials;return Oe({url:"/api/v1/instance/peers",credentials:t})},fetchDomainMutes:function(e){var t=e.credentials;return Oe({url:me,credentials:t})},muteDomain:function(e){var t=e.domain,n=e.credentials;return Oe({url:me,method:"POST",payload:{domain:t},credentials:n})},unmuteDomain:function(e){var t=e.domain,n=e.credentials;return Oe({url:me,method:"DELETE",payload:{domain:t},credentials:n})},chats:function(e){var t=e.credentials;return Ce("/api/v1/pleroma/chats",{headers:Pe(t)}).then((function(e){return e.json()})).then((function(e){return{chats:e.map(b._J).filter((function(e){return e}))}}))},getOrCreateChat:function(e){var t,n=e.accountId,o=e.credentials;return Oe({url:(t=n,"/api/v1/pleroma/chats/by-account-id/".concat(t)),method:"POST",credentials:o})},chatMessages:function(e){var t=e.id,n=e.credentials,o=e.maxId,r=e.sinceId,i=e.limit,s=void 0===i?20:i,a=we(t),c=[o&&"max_id=".concat(o),r&&"since_id=".concat(r),s&&"limit=".concat(s)].filter((function(e){return e})).join("&");return Oe({url:a+=c?"?"+c:"",method:"GET",credentials:n})},sendChatMessage:function(e){var t=e.id,n=e.content,o=e.mediaId,r=void 0===o?null:o,i=e.idempotencyKey,s=e.credentials,a={content:n};r&&(a.media_id=r);var c={};return i&&(c["idempotency-key"]=i),Oe({url:we(t),method:"POST",payload:a,credentials:s,headers:c})},readChat:function(e){var t=e.id,n=e.lastReadId,o=e.credentials;return Oe({url:be(t),method:"POST",payload:{last_read_id:n},credentials:o})},deleteChatMessage:function(e){var t=e.chatId,n=e.messageId,o=e.credentials;return Oe({url:ye(t,n),method:"DELETE",credentials:o})},setReportState:function(e){var t=e.id,n=e.state,o=e.credentials;return Ce("/api/pleroma/admin/reports",{headers:A(A({},Pe(o)),{},{Accept:"application/json","Content-Type":"application/json"}),method:"PATCH",body:JSON.stringify({reports:[{id:t,state:n}]})}).then((function(e){if(e.status>=500)throw Error(e.statusText);return e.status>=400?e.json():e})).then((function(e){if(e.errors)throw Error(e.errors[0].message)}))},fetchUserInLists:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/accounts/".concat(e,"/lists")}(t);return Ce(o,{headers:Pe(n)}).then((function(e){return e.json()}))},fetchAnnouncements:function(e){var t=e.credentials;return Oe({url:"/api/v1/announcements",credentials:t})},dismissAnnouncement:function(e){var t=e.id,n=e.credentials;return Oe({url:he(t),credentials:n,method:"POST"})},postAnnouncement:function(e){var t=e.credentials,n=e.content,o=e.startsAt,r=e.endsAt,i=e.allDay;return Oe({url:"/api/v1/pleroma/admin/announcements",credentials:t,method:"POST",payload:Ie({content:n,startsAt:o,endsAt:r,allDay:i})})},editAnnouncement:function(e){var t=e.id,n=e.credentials,o=e.content,r=e.startsAt,i=e.endsAt,s=e.allDay;return Oe({url:ke(t),credentials:n,method:"PATCH",payload:Ie({content:o,startsAt:r,endsAt:i,allDay:s})})},deleteAnnouncement:function(e){var t=e.id,n=e.credentials;return Oe({url:Se(t),credentials:n,method:"DELETE"})},adminFetchAnnouncements:function(e){var t=e.credentials;return Oe({url:"/api/v1/pleroma/admin/announcements",credentials:t})}}},37230:(e,t,n)=>{"use strict";n.d(t,{X:()=>i});var o=n(21804),r=n.n(o),i=function(e){return Object.keys(e).reduce((function(t,n){return t[r()(n)]=e[n],t}),{})}},21865:(e,t,n)=>{"use strict";n.d(t,{CO:()=>l,Rx:()=>h,Tj:()=>m,_I:()=>v,a4:()=>g,aj:()=>p,ov:()=>u,pP:()=>b,uu:()=>w,wK:()=>f});var o=n(4942),r=n(29439),i=n(71002),s=n(97332);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var l=function(e,t,n){if(null!=e){if("#"===e[0]||"transparent"===e)return e;if("object"===(0,i.Z)(e)){var o=e;e=o.r,t=o.g,n=o.b}var s=[e,t,n].map((function(e){return(e=(e=Math.ceil(e))<0?0:e)>255?255:e})),a=(0,r.Z)(s,3);return e=a[0],t=a[1],n=a[2],"#".concat(((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1))}},u=function(e){var t=function(e){return"rgb".split("").reduce((function(t,n){return t[n]=function(e){var t=e/255;return t<.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}(e[n]),t}),{})}(e);return.2126*t.r+.7152*t.g+.0722*t.b},d=function(e,t){var n=u(e),o=u(t),i=n>o?[n,o]:[o,n],s=(0,r.Z)(i,2);return(s[0]+.05)/(s[1]+.05)},p=function(e,t,n){return d(h(n,t),e)},m=function(e,t,n){return 1===t||void 0===t?e:"rgb".split("").reduce((function(o,r){return o[r]=e[r]*t+n[r]*(1-t),o}),{})},h=function(e,t){return t.reduce((function(e,t){var n=(0,r.Z)(t,2),o=n[0],i=n[1];return m(o,i,e)}),e)},f=function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},g=function(e,t){return"rgb".split("").reduce((function(n,o){return n[o]=(e[o]+t[o])/2,n}),{})},v=function(e){return"rgba(".concat(Math.floor(e.r),", ").concat(Math.floor(e.g),", ").concat(Math.floor(e.b),", ").concat(e.a,")")},w=function(e,t,n){if(d(e,t)<4.5){var o=void 0!==t.a?{a:t.a}:{},r=Object.assign(o,(0,s.Xp)(t).rgb);return!n&&d(e,r)<4.5?(0,s.wo)(e,t).rgb:r}return t},b=function(e,t){var n={};if("object"===(0,i.Z)(e))n=e;else if("string"==typeof e){if(!e.startsWith("#"))return e;n=f(e)}return v(c(c({},n),{},{a:t}))}},13562:(e,t,n)=>{"use strict";n.d(t,{g:()=>i});var o=n(23560),r=n.n(o),i=function(e){return function(e){return r()(e)?e.options:e}(e).props}},27483:(e,t,n)=>{"use strict";n.d(t,{GV:()=>u,_F:()=>d,cC:()=>p,dX:()=>m,x4:()=>s});var o=1e3,r=6e4,i=36e5,s=24*i,a=7*s,c=30*s,l=365.25*s,u=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;"string"==typeof e&&(e=Date.parse(e));var n=Date.now()>e?Math.floor:Math.ceil,u=Math.abs(Date.now()-e),d={num:n(u/l),key:"time.unit.years"};return u<t*o?(d.num=0,d.key="time.now"):u<r?(d.num=n(u/o),d.key="time.unit.seconds"):u<i?(d.num=n(u/r),d.key="time.unit.minutes"):u<s?(d.num=n(u/i),d.key="time.unit.hours"):u<a?(d.num=n(u/s),d.key="time.unit.days"):u<c?(d.num=n(u/a),d.key="time.unit.weeks"):u<l&&(d.num=n(u/c),d.key="time.unit.months"),d},d=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=u(e,t);return n.key+="_short",n},p=function(e,t){switch(e){case"minutes":return.001*t*r;case"hours":return.001*t*i;case"days":return.001*t*s}},m=function(e,t){switch(e){case"minutes":return 1e3*t/r;case"hours":return 1e3*t/i;case"days":return 1e3*t/s}}},64689:(e,t,n)=>{"use strict";n.d(t,{w:()=>o});var o=function(e,t){if("Notification"in window&&"granted"===window.Notification.permission&&!e.statuses.notifications.desktopNotificationSilence){var n=new window.Notification(t.title,t);setTimeout(n.close.bind(n),5e3)}}},27742:(e,t,n)=>{"use strict";n.d(t,{Nw:()=>w,P7:()=>h,UB:()=>y,Wn:()=>f,_J:()=>b,cO:()=>m,eM:()=>g,nL:()=>p});var o=n(4942),r=n(95573),i=n.n(r),s=n(28490),a=n.n(s),c=n(52230),l=n(35748);function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var p=function(e){var t={},n=Object.prototype.hasOwnProperty.call(e,"acct"),o=n&&!Object.prototype.hasOwnProperty.call(e,"avatar");if(t.inLists=null,t.id=String(e.id),t._original=e,n){if(t.screen_name=e.acct,t.fqn=e.fqn,t.statusnet_profile_url=e.url,o)return t;if(t.emoji=e.emojis,t.name=i()(e.display_name),t.name_html=t.name,t.name_unescaped=e.display_name,t.description=e.note,t.description_html=e.note,t.fields=e.fields,t.fields_html=e.fields.map((function(e){return{name:i()(e.name),value:e.value}})),t.fields_text=e.fields.map((function(e){return{name:unescape(e.name.replace(/<[^>]*>/g,"")),value:unescape(e.value.replace(/<[^>]*>/g,""))}})),t.profile_image_url=e.avatar,t.profile_image_url_original=e.avatar,t.cover_photo=e.header,t.friends_count=e.following_count,t.bot=e.bot,e.pleroma){e.pleroma.settings_store&&(t.storage=e.pleroma.settings_store["pleroma-fe"]);var r=e.pleroma.relationship;t.background_image=e.pleroma.background_image,t.favicon=e.pleroma.favicon,t.token=e.pleroma.chat_token,r&&(t.relationship=r),t.allow_following_move=e.pleroma.allow_following_move,t.hide_follows=e.pleroma.hide_follows,t.hide_followers=e.pleroma.hide_followers,t.hide_follows_count=e.pleroma.hide_follows_count,t.hide_followers_count=e.pleroma.hide_followers_count,t.rights={moderator:e.pleroma.is_moderator,admin:e.pleroma.is_admin},t.rights.admin?t.role="admin":t.rights.moderator?t.role="moderator":t.role="member",t.birthday=e.pleroma.birthday,e.pleroma.privileges?t.privileges=e.pleroma.privileges:e.pleroma.is_admin?t.privileges=["users_read","users_manage_invites","users_manage_activation_state","users_manage_tags","users_manage_credentials","users_delete","messages_read","messages_delete","instances_delete","reports_manage_reports","moderation_log_read","announcements_manage_announcements","emoji_manage_emoji","statistics_read"]:e.pleroma.is_moderator?t.privileges=["messages_delete","reports_manage_reports"]:t.privileges=[]}e.source&&(t.description=e.source.note,t.default_scope=e.source.privacy,t.fields=e.source.fields,e.source.pleroma&&(t.no_rich_text=e.source.pleroma.no_rich_text,t.show_role=e.source.pleroma.show_role,t.discoverable=e.source.pleroma.discoverable,t.show_birthday=e.pleroma.show_birthday)),t.is_local=!t.screen_name.includes("@")}else t.screen_name=e.screen_name,t.name=e.name,t.name_html=e.name_html,t.description=e.description,t.description_html=e.description_html,t.profile_image_url=e.profile_image_url,t.profile_image_url_original=e.profile_image_url_original,t.cover_photo=e.cover_photo,t.friends_count=e.friends_count,t.statusnet_profile_url=e.statusnet_profile_url,t.is_local=e.is_local,t.role=e.role,t.show_role=e.show_role,e.rights&&(t.rights={moderator:e.rights.delete_others_notice,admin:e.rights.admin}),t.no_rich_text=e.no_rich_text,t.default_scope=e.default_scope,t.hide_follows=e.hide_follows,t.hide_followers=e.hide_followers,t.hide_follows_count=e.hide_follows_count,t.hide_followers_count=e.hide_followers_count,t.background_image=e.background_image,t.token=e.token,t.relationship={muting:e.muted,blocking:e.statusnet_blocking,followed_by:e.follows_you,following:e.following};if(t.created_at=new Date(e.created_at),t.locked=e.locked,t.followers_count=e.followers_count,t.statuses_count=e.statuses_count,e.pleroma&&(t.follow_request_count=e.pleroma.follow_request_count,t.tags=e.pleroma.tags,t.deactivated=void 0!==e.pleroma.is_active?!e.pleroma.is_active:e.pleroma.deactivated,t.notification_settings=e.pleroma.notification_settings,t.unread_chat_count=e.pleroma.unread_chat_count),t.tags=t.tags||[],t.rights=t.rights||{},t.notification_settings=t.notification_settings||{},t.screen_name_ui=t.screen_name,t.screen_name&&t.screen_name.includes("@")){var s=t.screen_name.split("@"),a=l.ZP.toUnicode(s[1]);a!==s[1]?(t.screen_name_ui_contains_non_ascii=!0,t.screen_name_ui=[s[0],a].join("@")):t.screen_name_ui_contains_non_ascii=!1}return t},m=function(e){var t={};return Object.prototype.hasOwnProperty.call(e,"oembed")?t.mimetype=e.mimetype:(t.mimetype=e.pleroma?e.pleroma.mime_type:e.type,t.meta=e.meta,t.id=e.id),t.url=e.url,t.large_thumb_url=e.preview_url,t.description=e.description,t},h=function(e){var t={};return t.text=e.text,t.spoiler_text=e.spoiler_text,t.content_type=e.content_type,t},f=function e(t){var n={},o=Object.prototype.hasOwnProperty.call(t,"account");if(o){if(n.favorited=t.favourited,n.fave_num=t.favourites_count,n.repeated=t.reblogged,n.repeat_num=t.reblogs_count,n.bookmarked=t.bookmarked,n.type=t.reblog?"retweet":"status",n.nsfw=t.sensitive,n.raw_html=t.content,n.emojis=t.emojis,n.tags=t.tags,n.edited_at=t.edited_at,t.pleroma){var r=t.pleroma;n.text=r.content?t.pleroma.content["text/plain"]:t.content,n.summary=r.spoiler_text?t.pleroma.spoiler_text["text/plain"]:t.spoiler_text,n.statusnet_conversation_id=t.pleroma.conversation_id,n.is_local=r.local,n.in_reply_to_screen_name=t.pleroma.in_reply_to_account_acct,n.thread_muted=r.thread_muted,n.emoji_reactions=r.emoji_reactions,n.parent_visible=void 0===r.parent_visible||r.parent_visible}else n.text=t.content,n.summary=t.spoiler_text;n.in_reply_to_status_id=t.in_reply_to_id,n.in_reply_to_user_id=t.in_reply_to_account_id,n.replies_count=t.replies_count,"retweet"===n.type&&(n.retweeted_status=e(t.reblog)),n.summary_raw_html=i()(t.spoiler_text),n.external_url=t.url,n.poll=t.poll,n.poll&&(n.poll.options=(n.poll.options||[]).map((function(e){return d(d({},e),{},{title_html:i()(e.title)})}))),n.pinned=t.pinned,n.muted=t.muted}else n.favorited=t.favorited,n.fave_num=t.fave_num,n.repeated=t.repeated,n.repeat_num=t.repeat_num,n.type=function(e){return e.is_post_verb?"status":e.retweeted_status?"retweet":"string"==typeof e.uri&&e.uri.match(/(fave|objectType=Favourite)/)||"string"==typeof e.text&&e.text.match(/favorited/)?"favorite":e.text.match(/deleted notice {{tag/)||e.qvitter_delete_notice?"deletion":e.text.match(/started following/)||"follow"===e.activity_type?"follow":"unknown"}(t),void 0===t.nsfw?(n.nsfw=v(t),t.retweeted_status&&(n.nsfw=t.retweeted_status.nsfw)):n.nsfw=t.nsfw,n.raw_html=t.statusnet_html,n.text=t.text,n.in_reply_to_status_id=t.in_reply_to_status_id,n.in_reply_to_user_id=t.in_reply_to_user_id,n.in_reply_to_screen_name=t.in_reply_to_screen_name,n.statusnet_conversation_id=t.statusnet_conversation_id,"retweet"===n.type&&(n.retweeted_status=e(t.retweeted_status)),n.summary=t.summary,n.summary_html=t.summary_html,n.external_url=t.external_url,n.is_local=t.is_local;n.id=String(t.id),n.visibility=t.visibility,n.card=t.card,n.created_at=new Date(t.created_at),n.in_reply_to_status_id=n.in_reply_to_status_id?String(n.in_reply_to_status_id):null,n.in_reply_to_user_id=n.in_reply_to_user_id?String(n.in_reply_to_user_id):null,n.user=p(o?t.account:t.user),n.attentions=((o?t.mentions:t.attentions)||[]).map(p),n.attachments=((o?t.media_attachments:t.attachments)||[]).map(m);var s=o?t.reblog:t.retweeted_status;return s&&(n.retweeted_status=e(s)),n.favoritedBy=[],n.rebloggedBy=[],Object.prototype.hasOwnProperty.call(t,"originalStatus")&&Object.assign(n,t.originalStatus),n},g=function(e){var t={};if(Object.prototype.hasOwnProperty.call(e,"ntype")){var n=f(e.notice);t.type=e.ntype,t.seen=Boolean(e.is_seen),t.status="like"===t.type?f(e.notice.favorited_status):n,t.action=n,t.from_profile="pleroma:chat_mention"===t.type?p(e.account):p(e.from_profile)}else t.type={favourite:"like",reblog:"repeat"}[e.type]||e.type,t.seen=e.pleroma.is_seen,t.status=(0,c.Gr)(t.type)?f(e.status):null,t.action=t.status,t.target="move"!==t.type?null:p(e.target),t.from_profile=p(e.account),t.emoji=e.emoji,e.report&&(t.report=e.report,t.report.content=e.report.content,t.report.acct=p(e.report.account),t.report.actor=p(e.report.actor),t.report.statuses=e.report.statuses.map(f));return t.created_at=new Date(e.created_at),t.id=parseInt(e.id),t},v=function(e){return(e.tags||[]).includes("nsfw")||!!(e.text||"").match(/#nsfw/i)},w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.flakeId,o=a()(e);if(o){var r=o.next.max_id,i=o.prev.min_id;return{maxId:n?r:parseInt(r,10),minId:n?i:parseInt(i,10)}}},b=function(e){var t={};return t.id=e.id,t.account=p(e.account),t.unread=e.unread,t.lastMessage=y(e.last_message),t.updated_at=new Date(e.updated_at),t},y=function(e){if(e){if(e.isNormalized)return e;var t=e;return t.id=e.id,t.created_at=new Date(e.created_at),t.chat_id=e.chat_id,t.emojis=e.emojis,t.content=e.content,e.attachment?t.attachments=[m(e.attachment)]:t.attachments=[],t.pending=!!e.pending,t.error=!1,t.idempotency_key=e.idempotency_key,t.isNormalized=!0,t}}},49753:(e,t,n)=>{"use strict";var o,r,i,s,a;n.d(t,{Z:()=>c});const c=(o=[],r=128,i=128,s=function(e){return e.complete&&0!==e.naturalHeight},{initFaviconService:function(){document.querySelectorAll('link[rel="icon"]').forEach((function(e){if(e){var t=document.createElement("canvas");t.width=r,t.height=i;var n=new Image;n.crossOrigin="anonymous",n.src=e.href;var s=t.getContext("2d");o.push({favcanvas:t,favimg:n,favcontext:s,favicon:e})}}))},clearFaviconBadge:a=function(){0!==o.length&&o.forEach((function(e){var t=e.favimg,n=e.favcanvas,o=e.favcontext,a=e.favicon;t&&o&&a&&(o.clearRect(0,0,r,i),s(t)&&o.drawImage(t,0,0,t.width,t.height,0,0,r,i),a.href=n.toDataURL("image/png"))}))},drawFaviconBadge:function(){0!==o.length&&(a(),o.forEach((function(e){var t=e.favimg,n=e.favcanvas,o=e.favcontext,a=e.favicon;if(t&&o&&o){var c=getComputedStyle(document.body),l="".concat(c.getPropertyValue("--badgeNotification")||"rgb(240, 100, 100)");s(t)&&o.drawImage(t,0,0,t.width,t.height,0,0,r,i),o.fillStyle=l,o.beginPath(),o.arc(96,32,32,0,2*Math.PI,!1),o.fill(),a.href=n.toDataURL("image/png")}})))}})},65079:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const o={fileSizeFormat:function(e){var t=["B","KiB","MiB","GiB","TiB"],n=e;if(n<1)return n+" "+t[0];var o=Math.min(Math.floor(Math.log(n)/Math.log(1024)),t.length-1);return{num:n=1*(n/Math.pow(1024,o)).toFixed(2),unit:t[o]}}}},58394:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var o=function(e){return e.match(/flash/)?"flash":e.match(/text\/html/)?"html":e.match(/image/)?"image":e.match(/video/)?"video":e.match(/audio/)?"audio":"unknown"};const r={fileType:o,fileMatchesSomeType:function(e,t){return e.some((function(e){return o(t.mimetype)===e}))}}},39776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var o=n(35161),r=n.n(o),i=n(72617),s=n(2900),a={ja_easy:"ja",zh_Hant:"zh-HANT",zh:"zh-Hans"},c=function(e){return a[e]||e},l=function(e){return c(e).replace("_","-")},u=function(e){var t={ja_easy:"やさしいにほんご",zh:"简体中文",zh_Hant:"繁體中文"}[e]||s.Z.getNativeName(e),n=c(e);return t.charAt(0).toLocaleUpperCase(n)+t.slice(1)},d=r()(i.Z.languages,(function(e){return{code:e,name:u(e)}})).sort((function(e,t){return e.name.localeCompare(t.name)}));const p={internalToBrowserLocale:c,internalToBackendLocale:l,internalToBackendLocaleMulti:function(e){return(Array.isArray(e)?e:[e]).map(l).join(",")},languages:d,getLanguageName:u}},52230:(e,t,n)=>{"use strict";n.d(t,{Bt:()=>d,G2:()=>w,Gr:()=>h,Km:()=>b,nJ:()=>v,nU:()=>f});var o=n(64721),r=n.n(o),i=n(89734),s=n.n(i),a=n(63105),c=n.n(a),l=n(67828),u=n(64689),d=function(e){return e.state.statuses.notifications.data},p=function(e){var t=e.rootState||e.state;return[t.config.notificationVisibility.likes&&"like",t.config.notificationVisibility.mentions&&"mention",t.config.notificationVisibility.repeats&&"repeat",t.config.notificationVisibility.follows&&"follow",t.config.notificationVisibility.followRequest&&"follow_request",t.config.notificationVisibility.moves&&"move",t.config.notificationVisibility.emojiReactions&&"pleroma:emoji_reaction",t.config.notificationVisibility.reports&&"pleroma:report",t.config.notificationVisibility.polls&&"poll"].filter((function(e){return e}))},m=["like","mention","repeat","pleroma:emoji_reaction","poll"],h=function(e){return r()(m,e)},f=function(e){return!(h(e.type)&&!e.status)},g=function(e,t){var n=Number(e.id),o=Number(t.id),r=!Number.isNaN(n),i=!Number.isNaN(o);return r&&i?n>o?-1:1:r&&!i?1:!r&&i||e.id>t.id?-1:1},v=function(e,t){var n=e.rootState||e.state;if(!t.seen&&p(e).includes(t.type)&&("mention"!==t.type||!function(e,t){if(t.status)return t.status.muted||(0,l.u)(t.status,e.rootGetters.mergedConfig.muteWords).length>0}(e,t))){var o=y(t,e.rootGetters.i18n);(0,u.w)(n,o)}},w=function(e,t){var n=d(e).map((function(e){return e})).sort(g);return(n=s()(n,"seen")).filter((function(n){return(t||p(e)).includes(n.type)}))},b=function(e){return c()(w(e),(function(e){return!e.seen}))},y=function(e,t){var n,o={tag:e.id},r=e.status,i=e.from_profile.name;switch(o.title=i,o.icon=e.from_profile.profile_image_url,e.type){case"like":n="favorited_you";break;case"repeat":n="repeated_you";break;case"follow":n="followed_you";break;case"move":n="migrated_to";break;case"follow_request":n="follow_request";break;case"pleroma:report":n="submitted_report";break;case"poll":n="poll_ended"}return"pleroma:emoji_reaction"===e.type?o.body=t.t("notifications.reacted_with",[e.emoji]):n?o.body=t.t("notifications."+n):h(e.type)&&(o.body=e.status.text),r&&r.attachments&&r.attachments.length>0&&!r.nsfw&&r.attachments[0].mimetype.startsWith("image/")&&(o.image=r.attachments[0].url),o}},15568:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=n(93433),r=n(77776),i=n(22626),s=["mention","favourite","reblog","follow","move","pleroma:emoji_reaction","pleroma:report"],a=function(e){var t=e.store,n=e.credentials,r=e.older,i=void 0!==r&&r,a=e.since,l={credentials:n},u=t.getters,d=(t.rootState||t.state).statuses.notifications,p=u.mergedConfig.hideMutedPosts;if(l.includeTypes=s,l.withMuted=!p,l.timeline="notifications",i)return d.minId!==Number.POSITIVE_INFINITY&&(l.until=d.minId),c({store:t,args:l,older:i});void 0===a&&d.maxId!==Number.POSITIVE_INFINITY?l.since=d.maxId:null!==a&&(l.since=a);var m=c({store:t,args:l,older:i}),h=d.data,f=h.filter((function(e){return e.seen})).map((function(e){return e.id}));return h.length-f.length>0&&f.length>0&&(l.since=Math.max.apply(Math,(0,o.Z)(f)),c({store:t,args:l,older:i})),m},c=function(e){var t=e.store,n=e.args,o=e.older;return r.ZP.fetchTimeline(n).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data;return function(e){var t=e.notifications,n=e.older;e.store.dispatch("addNewNotifications",{notifications:t,older:n})}({store:t,notifications:n,older:o}),n})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"notifications.error",messageArgs:[e.message],timeout:5e3}),console.error(e)}))};const l={fetchAndUpdate:a,startFetching:function(e){var t=e.credentials,n=e.store;setTimeout((function(){return n.dispatch("setNotificationsSilence",!1)}),1e4);var o=function(){return a({credentials:t,store:n})};return o(),(0,i.F)(o,1e4)}}},67952:(e,t,n)=>{"use strict";n.d(t,{y:()=>o});var o=function e(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=o.top,s=void 0===i?0:i,a=o.left,c=void 0===a?0:a,l=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],u={top:s+t.offsetTop,left:c+t.offsetLeft};if(!l&&t!==window){var d=r(t),p=d.topPadding,m=d.leftPadding;u.top+=l?0:p,u.left+=l?0:m}if(t.offsetParent&&"sticky"!==window.getComputedStyle(t.offsetParent).position&&(n===window||n.contains(t.offsetParent)||n===t.offsetParent))return e(t.offsetParent,n,u,!1);if(n!==window){var h=r(n),f=h.topPadding,g=h.leftPadding;u.top+=f,u.left+=g}return u},r=function(e){var t=window.getComputedStyle(e)["padding-top"],n=Number(t.substring(0,t.length-2)),o=window.getComputedStyle(e)["padding-left"];return{topPadding:n,leftPadding:Number(o.substring(0,o.length-2))}}},22626:(e,t,n)=>{"use strict";n.d(t,{F:()=>o});var o=function(e,t){var n=!1,o=null;return o=window.setTimeout((function r(){var i=e();i&&i.finally?i.finally((function(){n||(o=window.setTimeout(r,t))})):console.warn("promiseInterval: promise call did not return a promise, stopping interval.")}),t),{stop:function(){n=!0,window.clearTimeout(o)}}}},67828:(e,t,n)=>{"use strict";n.d(t,{u:()=>i});var o=n(63105),r=n.n(o),i=function(e,t){var n=e.text.toLowerCase(),o=e.summary.toLowerCase();return r()(t,(function(e){return n.includes(e.toLowerCase())||o.includes(e.toLowerCase())}))}},7257:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var o=n(35161),r=n.n(o),i=n(77776);const s={postStatus:function(e){var t=e.store,n=e.status,o=e.spoilerText,s=e.visibility,a=e.sensitive,c=e.poll,l=e.media,u=void 0===l?[]:l,d=e.inReplyToStatusId,p=void 0===d?void 0:d,m=e.contentType,h=void 0===m?"text/plain":m,f=e.preview,g=void 0!==f&&f,v=e.idempotencyKey,w=void 0===v?"":v,b=r()(u,"id");return i.ZP.postStatus({credentials:t.state.users.currentUser.credentials,status:n,spoilerText:o,visibility:s,sensitive:a,mediaIds:b,inReplyToStatusId:p,contentType:h,poll:c,preview:g,idempotencyKey:w}).then((function(e){return e.error||g||t.dispatch("addNewStatuses",{statuses:[e],timeline:"friends",showImmediately:!0,noIdUpdate:!0}),e})).catch((function(e){return{error:e.message}}))},editStatus:function(e){var t=e.store,n=e.statusId,o=e.status,s=e.spoilerText,a=e.sensitive,c=e.poll,l=e.media,u=void 0===l?[]:l,d=e.contentType,p=void 0===d?"text/plain":d,m=r()(u,"id");return i.ZP.editStatus({id:n,credentials:t.state.users.currentUser.credentials,status:o,spoilerText:s,sensitive:a,poll:c,mediaIds:m,contentType:p}).then((function(e){return e.error||t.dispatch("addNewStatuses",{statuses:[e],timeline:"friends",showImmediately:!0,noIdUpdate:!0}),e})).catch((function(e){return console.error("Error editing status",e),{error:e.message}}))},uploadMedia:function(e){var t=e.store,n=e.formData,o=t.state.users.currentUser.credentials;return i.ZP.uploadMedia({credentials:o,formData:n})},setMediaDescription:function(e){var t=e.store,n=e.id,o=e.description,r=t.state.users.currentUser.credentials;return i.ZP.setMediaDescription({credentials:r,id:n,description:o})}}},77394:(e,t,n)=>{"use strict";n.d(t,{H2:()=>P,I3:()=>$,LP:()=>b,Ot:()=>v,RC:()=>I,_v:()=>m,bY:()=>U,dE:()=>x,gm:()=>z,l9:()=>T,lD:()=>y,m:()=>_,mg:()=>g,vp:()=>O});var o=n(71002),r=n(93433),i=n(4942),s=n(29439),a=n(97332),c=n(21865),l=n(40454),u=n(85565);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){(0,i.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var m=function(e){var t=D(e).rules,n=document.head,o=document.body;o.classList.add("hidden");var r=document.createElement("style");n.appendChild(r);var i=r.sheet;i.toString(),i.insertRule(":root { ".concat(t.radii," }"),"index-max"),i.insertRule(":root { ".concat(t.colors," }"),"index-max"),i.insertRule(":root { ".concat(t.shadows," }"),"index-max"),i.insertRule(":root { ".concat(t.fonts," }"),"index-max"),o.classList.remove("hidden")},h=function(e){return{sidebarColumnWidth:e.sidebarColumnWidth,contentColumnWidth:e.contentColumnWidth,notifsColumnWidth:e.notifsColumnWidth}},f=h(u.W2),g=function(e){var t=h(e);if(t!==f){var n=document.head,o=document.body;o.classList.add("hidden");var r=Object.entries(t).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).map((function(e){var t=(0,s.Z)(e,2),n=t[0],o=t[1];return"--".concat(n,": ").concat(o)})).join(";"),i=document.createElement("style");n.appendChild(i);var a=i.sheet;a.toString(),a.insertRule(":root { ".concat(r," }"),"index-max"),o.classList.remove("hidden")}},v=function(e,t){return 0===e.length?"none":e.filter((function(e){return t?e.inset:e})).map((function(e){return[e.x,e.y,e.blur,e.spread].map((function(e){return e+"px"})).concat([(0,c.pP)(e.color,e.alpha),e.inset?"inset":""]).join(" ")})).join(", ")},w=function(e){return 0===e.length?"none":e.filter((function(e){return!e.inset&&0===Number(e.spread)})).map((function(e){return[e.x,e.y,e.blur/2].map((function(e){return e+"px"})).concat([(0,c.pP)(e.color,e.alpha)]).join(" ")})).map((function(e){return"drop-shadow(".concat(e,")")})).join(" ")},b=function(e){var t=e.themeEngineVersion?e.colors||e:x(e.colors||e),n=(0,l.EC)(t,e.opacity||{}),o=n.colors,r=n.opacity,i=Object.entries(o).reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];return r?(e.solid[o]=(0,c.CO)(r),e.complete[o]=void 0===r.a?(0,c.CO)(r):(0,c._I)(r),e):e}),{complete:{},solid:{}});return{rules:{colors:Object.entries(i.complete).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).map((function(e){var t=(0,s.Z)(e,2),n=t[0],o=t[1];return"--".concat(n,": ").concat(o)})).join(";")},theme:{colors:i.solid,opacity:r}}},y=function(e){var t=e.radii||{};void 0!==e.btnRadius&&(t=Object.entries(e).filter((function(e){var t=(0,s.Z)(e,2),n=t[0];return t[1],n.endsWith("Radius")})).reduce((function(e,t){return e[t[0].split("Radius")[0]]=t[1],e}),{}));var n=Object.entries(t).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];return e[o]=r,e}),{btn:4,input:4,checkbox:2,panel:10,avatar:5,avatarAlt:50,tooltip:2,attachment:5,chatMessage:t.panel});return{rules:{radii:Object.entries(n).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).map((function(e){var t=(0,s.Z)(e,2),n=t[0],o=t[1];return"--".concat(n,"Radius: ").concat(o,"px")})).join(";")},theme:{radii:n}}},_=function(e){var t=Object.entries(e.fonts||{}).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];return e[o]=Object.entries(r).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];return e[o]=r,e}),e[o]),e}),{interface:{family:"sans-serif"},input:{family:"inherit"},post:{family:"inherit"},postCode:{family:"monospace"}});return{rules:{fonts:Object.entries(t).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).map((function(e){var t=(0,s.Z)(e,2),n=t[0],o=t[1];return"--".concat(n,"Font: ").concat(o.family)})).join(";")},theme:{fonts:t}}},k=function(e,t){return{x:0,y:e?1:-1,blur:0,spread:0,color:t?"#000000":"#FFFFFF",alpha:.2,inset:!0}},S=[k(!0,!1),k(!1,!0)],j=[k(!0,!0),k(!1,!1)],C={x:0,y:0,blur:4,spread:0,color:"--faint",alpha:1},O={panel:[{x:1,y:1,blur:4,spread:0,color:"#000000",alpha:.6}],topBar:[{x:0,y:0,blur:4,spread:0,color:"#000000",alpha:.6}],popup:[{x:2,y:2,blur:3,spread:0,color:"#000000",alpha:.5}],avatar:[{x:0,y:1,blur:8,spread:0,color:"#000000",alpha:.7}],avatarStatus:[],panelHeader:[],button:[{x:0,y:0,blur:2,spread:0,color:"#000000",alpha:1}].concat(S),buttonHover:[C].concat(S),buttonPressed:[C].concat(j),input:[].concat(j,[{x:0,y:0,blur:2,inset:!0,spread:0,color:"#000000",alpha:1}])},P=function(e,t){var n={button:"btn",panel:"bg",top:"topBar",popup:"popover",avatar:"bg",panelHeader:"panel",input:"input"},o=Object.fromEntries(Object.entries(e.shadows||{}).map((function(e){var t=(0,s.Z)(e,2);return[t[0],t[1].map((function(e){return p({color:"#000000"},e)}))]}))),u=o&&!e.themeEngineVersion?T(o,e.opacity):o||{},d=Object.entries(p(p({},O),u)).reduce((function(e,o){var u=(0,s.Z)(o,2),d=u[0],m=u[1],h=d.replace(/[A-Z].*$/,""),f=n[h],g=(0,c.ov)((0,a.OQ)(t[f]).rgb)<.5?1:-1,v=m.reduce((function(e,n){return[].concat((0,r.Z)(e),[p(p({},n),{},{color:(0,c.CO)((0,l.NI)(n.color,(function(e){return(0,a.OQ)(t[e]).rgb}),g))})])}),[]);return p(p({},e),{},(0,i.Z)({},d,v))}),{});return{rules:{shadows:Object.entries(d).map((function(e){var t=(0,s.Z)(e,2),n=t[0],o=t[1];return["--".concat(n,"Shadow: ").concat(v(o)),"--".concat(n,"ShadowFilter: ").concat(w(o)),"--".concat(n,"ShadowInset: ").concat(v(o,!0))].join(";")})).join(";")},theme:{shadows:d}}},z=function(e,t,n,o){return{rules:p(p(p(p({},n.rules),e.rules),t.rules),o.rules),theme:p(p(p(p({},n.theme),e.theme),t.theme),o.theme)}},D=function(e){var t=b(e);return z(t,y(e),P(e,t.theme.colors,t.mod),_(e))},I=function(){var e="no-store";return window.fetch("/static/styles.json",{cache:e}).then((function(e){return e.json()})).then((function(t){return Object.entries(t).map((function(t){var n=(0,s.Z)(t,2),r=n[0],i=n[1],a=null;return"object"===(0,o.Z)(i)?a=Promise.resolve(i):"string"==typeof i&&(a=window.fetch(i,{cache:e}).then((function(e){return e.json()})).catch((function(e){return console.error(e),null}))),[r,a]}))})).then((function(e){return e.reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];return e[o]=r,e}),{})}))},x=function(e){return Object.entries(e).reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];switch(o){case"lightBg":return p(p({},e),{},{highlight:r});case"btnText":return p(p({},e),["","Panel","TopBar"].reduce((function(e,t){return p(p({},e),{},(0,i.Z)({},"btn"+t+"Text",r))}),{}));default:return p(p({},e),{},(0,i.Z)({},o,r))}}),{})},T=function(e,t){return Object.entries(e).reduce((function(e,n){var o=(0,s.Z)(n,2),a=o[0],c=o[1].reduce((function(e,n){return[].concat((0,r.Z)(e),[p(p({},n),{},{alpha:(s=n,a=s.color,(void 0===a?"#000000":a).startsWith("--")?(o=n,i=o.color,t[(0,l.AV)(i.substring(2).split(",")[0])]||1):n.alpha)})]);var o,i,s,a}),[]);return p(p({},e),{},(0,i.Z)({},a,c))}),{})},$=function(e){return I().then((function(t){return t[e]?t[e]:t["pleroma-dark"]})).then((function(e){var t=Array.isArray(e),n=t?{}:e.theme;if(t){var o=(0,c.wK)(e[1]),r=(0,c.wK)(e[2]),i=(0,c.wK)(e[3]),s=(0,c.wK)(e[4]),a=(0,c.wK)(e[5]||"#FF0000"),l=(0,c.wK)(e[6]||"#00FF00"),u=(0,c.wK)(e[7]||"#0000FF"),d=(0,c.wK)(e[8]||"#E3FF00");n.colors={bg:o,fg:r,text:i,link:s,cRed:a,cBlue:u,cGreen:l,cOrange:d}}return{theme:n,source:e.source}}))},U=function(e){return $(e).then((function(e){return m(e.theme)}))}},44551:(e,t,n)=>{"use strict";n.d(t,{em:()=>a,k0:()=>i,wB:()=>s});var o=n(97332),r=n(21865),i={undelay:null,topBar:null,badge:null,profileTint:null,fg:null,bg:"underlay",highlight:"bg",panel:"bg",popover:"bg",selectedMenu:"popover",btn:"bg",btnPanel:"panel",btnTopBar:"topBar",input:"bg",inputPanel:"panel",inputTopBar:"topBar",alert:"bg",alertPanel:"panel",poll:"bg",chatBg:"underlay",chatMessage:"chatBg"},s={profileTint:.5,alert:.5,input:.5,faint:.5,underlay:.15,alertPopup:.95},a={bg:{depends:[],opacity:"bg",priority:1},wallpaper:{depends:["bg"],color:function(e,t){return(0,o.Xu)(-2*e,t).rgb}},fg:{depends:[],priority:1},text:{depends:[],layer:"bg",opacity:null,priority:1},underlay:{default:"#000000",opacity:"underlay"},link:{depends:["accent"],priority:1},accent:{depends:["link"],priority:1},faint:{depends:["text"],opacity:"faint"},faintLink:{depends:["link"],opacity:"faint"},postFaintLink:{depends:["postLink"],opacity:"faint"},cBlue:"#0000ff",cRed:"#FF0000",cGreen:"#00FF00",cOrange:"#E3FF00",profileBg:{depends:["bg"],color:function(e,t){return{r:Math.floor(.53*t.r),g:Math.floor(.56*t.g),b:Math.floor(.59*t.b)}}},profileTint:{depends:["bg"],layer:"profileTint",opacity:"profileTint"},highlight:{depends:["bg"],color:function(e,t){return(0,o.Xu)(5*e,t).rgb}},highlightLightText:{depends:["lightText"],layer:"highlight",textColor:!0},highlightPostLink:{depends:["postLink"],layer:"highlight",textColor:"preserve"},highlightFaintText:{depends:["faint"],layer:"highlight",textColor:!0},highlightFaintLink:{depends:["faintLink"],layer:"highlight",textColor:"preserve"},highlightPostFaintLink:{depends:["postFaintLink"],layer:"highlight",textColor:"preserve"},highlightText:{depends:["text"],layer:"highlight",textColor:!0},highlightLink:{depends:["link"],layer:"highlight",textColor:"preserve"},highlightIcon:{depends:["highlight","highlightText"],color:function(e,t,n){return(0,r.a4)(t,n)}},popover:{depends:["bg"],opacity:"popover"},popoverLightText:{depends:["lightText"],layer:"popover",textColor:!0},popoverPostLink:{depends:["postLink"],layer:"popover",textColor:"preserve"},popoverFaintText:{depends:["faint"],layer:"popover",textColor:!0},popoverFaintLink:{depends:["faintLink"],layer:"popover",textColor:"preserve"},popoverPostFaintLink:{depends:["postFaintLink"],layer:"popover",textColor:"preserve"},popoverText:{depends:["text"],layer:"popover",textColor:!0},popoverLink:{depends:["link"],layer:"popover",textColor:"preserve"},popoverIcon:{depends:["popover","popoverText"],color:function(e,t,n){return(0,r.a4)(t,n)}},selectedPost:"--highlight",selectedPostFaintText:{depends:["highlightFaintText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLightText:{depends:["highlightLightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostPostLink:{depends:["highlightPostLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostFaintLink:{depends:["highlightFaintLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostText:{depends:["highlightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLink:{depends:["highlightLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostIcon:{depends:["selectedPost","selectedPostText"],color:function(e,t,n){return(0,r.a4)(t,n)}},selectedMenu:{depends:["bg"],color:function(e,t){return(0,o.Xu)(5*e,t).rgb}},selectedMenuLightText:{depends:["highlightLightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintText:{depends:["highlightFaintText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintLink:{depends:["highlightFaintLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuText:{depends:["highlightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuLink:{depends:["highlightLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuIcon:{depends:["selectedMenu","selectedMenuText"],color:function(e,t,n){return(0,r.a4)(t,n)}},selectedMenuPopover:{depends:["popover"],color:function(e,t){return(0,o.Xu)(5*e,t).rgb}},selectedMenuPopoverLightText:{depends:["selectedMenuLightText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintText:{depends:["selectedMenuFaintText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintLink:{depends:["selectedMenuFaintLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverText:{depends:["selectedMenuText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverLink:{depends:["selectedMenuLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverIcon:{depends:["selectedMenuPopover","selectedMenuText"],color:function(e,t,n){return(0,r.a4)(t,n)}},lightText:{depends:["text"],layer:"bg",textColor:"preserve",color:function(e,t){return(0,o.Xu)(20*e,t).rgb}},postLink:{depends:["link"],layer:"bg",textColor:"preserve"},postGreentext:{depends:["cGreen"],layer:"bg",textColor:"preserve"},postCyantext:{depends:["cBlue"],layer:"bg",textColor:"preserve"},border:{depends:["fg"],opacity:"border",color:function(e,t){return(0,o.Xu)(2*e,t).rgb}},poll:{depends:["accent","bg"],copacity:"poll",color:function(e,t,n){return(0,r.Tj)(t,.4,n)}},pollText:{depends:["text"],layer:"poll",textColor:!0},icon:{depends:["bg","text"],inheritsOpacity:!1,color:function(e,t,n){return(0,r.a4)(t,n)}},fgText:{depends:["text"],layer:"fg",textColor:!0},fgLink:{depends:["link"],layer:"fg",textColor:"preserve"},panel:{depends:["fg"],opacity:"panel"},panelText:{depends:["text"],layer:"panel",textColor:!0},panelFaint:{depends:["fgText"],layer:"panel",opacity:"faint",textColor:!0},panelLink:{depends:["fgLink"],layer:"panel",textColor:"preserve"},topBar:"--fg",topBarText:{depends:["fgText"],layer:"topBar",textColor:!0},topBarLink:{depends:["fgLink"],layer:"topBar",textColor:"preserve"},tab:{depends:["btn"]},tabText:{depends:["btnText"],layer:"btn",textColor:!0},tabActiveText:{depends:["text"],layer:"bg",textColor:!0},btn:{depends:["fg"],variant:"btn",opacity:"btn"},btnText:{depends:["fgText"],layer:"btn",textColor:!0},btnPanelText:{depends:["btnText"],layer:"btnPanel",variant:"btn",textColor:!0},btnTopBarText:{depends:["btnText"],layer:"btnTopBar",variant:"btn",textColor:!0},btnPressed:{depends:["btn"],layer:"btn"},btnPressedText:{depends:["btnText"],layer:"btn",variant:"btnPressed",textColor:!0},btnPressedPanel:{depends:["btnPressed"],layer:"btn"},btnPressedPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnPressed",textColor:!0},btnPressedTopBar:{depends:["btnPressed"],layer:"btn"},btnPressedTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnPressed",textColor:!0},btnToggled:{depends:["btn"],layer:"btn",color:function(e,t){return(0,o.Xu)(20*e,t).rgb}},btnToggledText:{depends:["btnText"],layer:"btn",variant:"btnToggled",textColor:!0},btnToggledPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnToggled",textColor:!0},btnToggledTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnToggled",textColor:!0},btnDisabled:{depends:["btn","bg"],color:function(e,t,n){return(0,r.Tj)(t,.25,n)}},btnDisabledText:{depends:["btnText","btnDisabled"],layer:"btn",variant:"btnDisabled",color:function(e,t,n){return(0,r.Tj)(t,.25,n)}},btnDisabledPanelText:{depends:["btnPanelText","btnDisabled"],layer:"btnPanel",variant:"btnDisabled",color:function(e,t,n){return(0,r.Tj)(t,.25,n)}},btnDisabledTopBarText:{depends:["btnTopBarText","btnDisabled"],layer:"btnTopBar",variant:"btnDisabled",color:function(e,t,n){return(0,r.Tj)(t,.25,n)}},input:{depends:["fg"],opacity:"input"},inputText:{depends:["text"],layer:"input",textColor:!0},inputPanelText:{depends:["panelText"],layer:"inputPanel",variant:"input",textColor:!0},inputTopbarText:{depends:["topBarText"],layer:"inputTopBar",variant:"input",textColor:!0},alertError:{depends:["cRed"],opacity:"alert"},alertErrorText:{depends:["text"],layer:"alert",variant:"alertError",textColor:!0},alertErrorPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertError",textColor:!0},alertWarning:{depends:["cOrange"],opacity:"alert"},alertWarningText:{depends:["text"],layer:"alert",variant:"alertWarning",textColor:!0},alertWarningPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertWarning",textColor:!0},alertSuccess:{depends:["cGreen"],opacity:"alert"},alertSuccessText:{depends:["text"],layer:"alert",variant:"alertSuccess",textColor:!0},alertSuccessPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertSuccess",textColor:!0},alertNeutral:{depends:["text"],opacity:"alert"},alertNeutralText:{depends:["text"],layer:"alert",variant:"alertNeutral",color:function(e,t){return(0,o.Xp)(t).rgb},textColor:!0},alertNeutralPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertNeutral",textColor:!0},alertPopupError:{depends:["alertError"],opacity:"alertPopup"},alertPopupErrorText:{depends:["alertErrorText"],layer:"popover",variant:"alertPopupError",textColor:!0},alertPopupWarning:{depends:["alertWarning"],opacity:"alertPopup"},alertPopupWarningText:{depends:["alertWarningText"],layer:"popover",variant:"alertPopupWarning",textColor:!0},alertPopupSuccess:{depends:["alertSuccess"],opacity:"alertPopup"},alertPopupSuccessText:{depends:["alertSuccessText"],layer:"popover",variant:"alertPopupSuccess",textColor:!0},alertPopupNeutral:{depends:["alertNeutral"],opacity:"alertPopup"},alertPopupNeutralText:{depends:["alertNeutralText"],layer:"popover",variant:"alertPopupNeutral",textColor:!0},badgeNotification:"--cRed",badgeNotificationText:{depends:["text","badgeNotification"],layer:"badge",variant:"badgeNotification",textColor:"bw"},badgeNeutral:"--cGreen",badgeNeutralText:{depends:["text","badgeNeutral"],layer:"badge",variant:"badgeNeutral",textColor:"bw"},chatBg:{depends:["bg"]},chatMessageIncomingBg:{depends:["chatBg"]},chatMessageIncomingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:!0},chatMessageIncomingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:"preserve"},chatMessageIncomingBorder:{depends:["border"],opacity:"border",color:function(e,t){return(0,o.Xu)(2*e,t).rgb}},chatMessageOutgoingBg:{depends:["chatMessageIncomingBg"],color:function(e,t){return(0,o.Xu)(5*e,t).rgb}},chatMessageOutgoingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:!0},chatMessageOutgoingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:"preserve"},chatMessageOutgoingBorder:{depends:["chatMessageOutgoingBg"],opacity:"border",color:function(e,t){return(0,o.Xu)(2*e,t).rgb}}}},40454:(e,t,n)=>{"use strict";n.d(t,{AQ:()=>y,AV:()=>v,EC:()=>k,NI:()=>_,we:()=>p,xb:()=>h});var o=n(4942),r=n(29439),i=n(71002),s=n(93433),a=n(97332),c=n(21865),l=n(44551);function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var p=3,m=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.k0,n=[e],o=t[e];o;)n.unshift(o),o=t[o];return n},h=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0;return m(e).map((function(i){return[i===e?o[t]:o[i],i===e?r[n]||1:r[i]]}))},f=function(e,t){var n=t[e];if("string"==typeof n&&n.startsWith("--"))return[n.substring(2)];if(null===n)return[];var o=n.depends,r=n.layer,i=n.variant,a=r?m(r).map((function(e){return e===r?i||r:e})):[];return Array.isArray(o)?[].concat((0,s.Z)(o),(0,s.Z)(a)):(0,s.Z)(a)},g=function(e){return"object"===(0,i.Z)(e)?e:{depends:e.startsWith("--")?[e.substring(2)]:[],default:e.startsWith("#")?e:void 0}},v=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.em,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:f,o=g(t[e]);if(null!==o.opacity){if(o.opacity)return o.opacity;var r=function o(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],a=n(r,t)[0];if(void 0!==a){var c=t[a];if(void 0!==c)return c.opacity||null===c?c.opacity:c.depends&&i.includes(a)?o(a,[].concat((0,s.Z)(i),[a])):null}};return o.depends?r(e):void 0}},w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.em,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:f,o=g(t[e]);if(l.k0[e])return e;if(null!==o.layer){if(o.layer)return o.layer;var r=function o(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],a=n(r,t)[0];if(void 0!==a){var c=t[a];if(void 0!==c)return c.layer||null===c?c.layer:c.depends?o(c,[].concat((0,s.Z)(i),[a])):null}};return o.depends?r(e):void 0}},b=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l.em,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f,n=Object.keys(e),o=new Set(n),r=new Set,i=new Set,s=[].concat(n),a=[],c=function n(s){if(o.has(s))o.delete(s),r.add(s),t(s,e).forEach(n),r.delete(s),i.add(s),a.push(s);else if(r.has(s))console.debug("Cyclic depenency in topoSort, ignoring"),a.push(s);else if(!i.has(s))throw new Error("Unintended condition in topoSort!")};s.length>0;)c(s.pop());return a.map((function(e,t){return{data:e,index:t}})).sort((function(n,o){var r=n.data,i=n.index,s=o.data,a=o.index,c=t(r,e).length,l=t(s,e).length;return c===l||0!==l&&0!==c?i-a:0===c&&0!==l?-1:0===l&&0!==c?1:0})).map((function(e){return e.data}))}(Object.entries(l.em).sort((function(e,t){var n=(0,r.Z)(e,2),o=(n[0],n[1]),i=(0,r.Z)(t,2),s=(i[0],i[1]);return(o&&o.priority||0)-(s&&s.priority||0)})).reduce((function(e,t){var n=(0,r.Z)(t,2),i=n[0],s=n[1];return d(d({},e),{},(0,o.Z)({},i,s))}),{})),y=Object.entries(l.em).reduce((function(e,t){var n=(0,r.Z)(t,2),i=n[0],a=(n[1],v(i,l.em,f));return a?d(d({},e),{},(0,o.Z)({},a,{defaultValue:l.wB[a]||1,affectedSlots:[].concat((0,s.Z)(e[a]&&e[a].affectedSlots||[]),[i])})):e}),{}),_=function(e,t,n){if("string"!=typeof e||!e.startsWith("--"))return e;var o=null,i=e.split(/,/g).map((function(e){return e.trim()})),s=(0,r.Z)(i,2),c=s[0],l=s[1];return o=t(c.substring(2)),l&&(o=(0,a.Xu)(Number.parseFloat(l)*n,o).rgb),o},k=function(e,t){return b.reduce((function(n,r){var i,u=n.colors,p=n.opacity,m=e[r],b=g(l.em[r]),k=f(r,l.em),S=!!b.textColor,j=b.variant||b.layer;i=S?(0,c.Rx)(d({},u[k[0]]||(0,a.OQ)(e[r]||"#FF00FF").rgb),h(w(r)||"bg",j||"bg",v(j),u,p)):j&&j!==r?u[j]||(0,a.OQ)(e[j]).rgb:u.bg||(0,a.OQ)(e.bg);var C=(0,c.ov)(i)<.5?1:-1,O=null;if(m){var P=m;if("transparent"===P){var z=h(w(r),r,v(r)||r,u,p).slice(0,-1);P=d(d({},(0,c.Rx)((0,a.OQ)("#FF00FF").rgb,z)),{},{a:0})}else"string"==typeof m&&m.startsWith("--")?P=_(m,(function(t){return u[t]||e[t]}),C):"string"==typeof m&&m.startsWith("#")&&(P=(0,a.OQ)(P).rgb);O=d({},P)}else if(b.default)O=(0,a.OQ)(b.default).rgb;else{var D=b.color||function(e,t){return d({},t)};if(b.textColor)if("bw"===b.textColor)O=(0,a.wo)(i).rgb;else{var I=d({},u[k[0]]);b.color&&(I=D.apply(void 0,[C].concat((0,s.Z)(k.map((function(e){return d({},u[e])})))))),O=(0,c.uu)(i,d({},I),"preserve"===b.textColor)}else O=D.apply(void 0,[C].concat((0,s.Z)(k.map((function(e){return d({},u[e])})))))}if(!O)throw new Error("Couldn't generate color for "+r);var x=b.opacity||v(r),T=b.opacity;if(null===T)O.a=1;else if("transparent"===m)O.a=0;else{var $=T&&void 0!==t[x],U=k[0],M=U&&u[U];T||!M||b.textColor||null===T?M||x?M&&0===M.a?O.a=0:O.a=Number($?t[x]:(y[x]||{}).defaultValue):delete O.a:O.a=M.a}return(Number.isNaN(O.a)||void 0===O.a)&&(O.a=1),x?{colors:d(d({},u),{},(0,o.Z)({},r,O)),opacity:d(d({},p),{},(0,o.Z)({},x,O.a))}:{colors:d(d({},u),{},(0,o.Z)({},r,O)),opacity:p}}),{colors:{},opacity:{}})}},95052:(e,t,n)=>{"use strict";n.d(t,{M:()=>c,q:()=>a});var o=n(4942),r=n(21865);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var a=function(e){if(void 0!==e){var t=e.color,n=e.type;if("string"==typeof t){var o=(0,r.wK)(t);if(null!=o){var i="rgb(".concat(Math.floor(o.r),", ").concat(Math.floor(o.g),", ").concat(Math.floor(o.b),")"),a="rgba(".concat(Math.floor(o.r),", ").concat(Math.floor(o.g),", ").concat(Math.floor(o.b),", .1)"),c="rgba(".concat(Math.floor(o.r),", ").concat(Math.floor(o.g),", ").concat(Math.floor(o.b),", .2)"),l={"--____highlight-solidColor":i,"--____highlight-tintColor":a,"--____highlight-tintColor2":c};return"striped"===n?s({backgroundImage:["repeating-linear-gradient(135deg,","".concat(a," ,"),"".concat(a," 20px,"),"".concat(c," 20px,"),"".concat(c," 40px")].join(" "),backgroundPosition:"0 0"},l):"solid"===n?s({backgroundColor:c},l):"side"===n?s({backgroundImage:["linear-gradient(to right,","".concat(i," ,"),"".concat(i," 2px,"),"transparent 6px"].join(" "),backgroundPosition:"0 0"},l):void 0}}}},c=function(e){return"USER____"+e.screen_name.replace(/\./g,"_").replace(/@/g,"_AT_")}},4493:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var o=n(64721),r=n.n(o);const i=function(e,t,n){var o=!t||function(e){return e&&e.includes("@")}(t)||r()(n,t);return{name:o?"external-user-profile":"user-profile",params:o?{id:e}:{name:t}}}},66596:(e,t,n)=>{"use strict";n.d(t,{Z:()=>B});var o=n(66252),r=n(3577),i=n(49963),s=["href","alt","title"],a={key:1,class:"attachment-buttons"},c=["placeholder"],l={key:1},u={class:"attachment-wrapper"},d=["href","alt","title"],p=["src"],m={key:1,class:"attachment-buttons"},h=["title"],f=["title"],g=["title"],v=["title"],w=["title"],b=["title"],y=["title"],_=["href"],k=["href"],S={key:0},j=["href"],C=["src","alt","title"],O={key:0,class:"image"},P=["src"],z={class:"text"},D=["href"],I=["innerHTML"],x=["href"],T=["placeholder"],$={key:1},U=n(4942),M=n(32140),A=n(72884),L=n(34133);const E=n.p+"static/img/nsfw.2958239.png";var F=n(58394),R=n(989),q=n(9382),N=n(84131);function Z(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}q.vI.add(N.gMD,N.Xig,N.VmB,N.IyC,N.aQp,N.NBC,N.Bg$,N.N7g,N.I7k,N.UJf,N.S3c);const W={props:["attachment","compact","description","hideDescription","nsfw","size","setMedia","remove","shiftUp","shiftDn","edit"],data:function(){return{localDescription:this.description||this.attachment.description,nsfwImage:this.$store.state.instance.nsfwCensorImage||E,hideNsfwLocal:this.$store.getters.mergedConfig.hideNsfw,preloadImage:this.$store.getters.mergedConfig.preloadImage,loading:!1,img:"image"===F.Z.fileType(this.attachment.mimetype)&&document.createElement("img"),modalOpen:!1,showHidden:!1,flashLoaded:!1,showDescription:!1}},components:{Flash:A.Z,StillImage:M.Z,VideoAttachment:L.Z},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Z(Object(n),!0).forEach((function(t){(0,U.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Z(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classNames:function(){return[{"-loading":this.loading,"-nsfw-placeholder":this.hidden,"-editable":void 0!==this.edit,"-compact":this.compact},"-type-"+this.type,this.size&&"-size-"+this.size,"-".concat(this.useContainFit?"contain":"cover","-fit")]},usePlaceholder:function(){return"hide"===this.size},useContainFit:function(){return this.$store.getters.mergedConfig.useContainFit},placeholderName:function(){return""!==this.attachment.description&&this.attachment.description?this.attachment.description:this.type.toUpperCase()},placeholderIconClass:function(){return"image"===this.type?"image":"video"===this.type?"video":"audio"===this.type?"music":"file"},referrerpolicy:function(){return this.$store.state.instance.mediaProxyAvailable?"":"no-referrer"},type:function(){return F.Z.fileType(this.attachment.mimetype)},hidden:function(){return this.nsfw&&this.hideNsfwLocal&&!this.showHidden},isEmpty:function(){return"html"===this.type&&!this.attachment.oembed},useModal:function(){var e=[];switch(this.size){case"hide":case"small":e=["image","video","audio","flash"];break;default:e=this.mergedConfig.playVideosInModal?["image","video","flash"]:["image"]}return e.includes(this.type)},videoTag:function(){return this.useModal?"button":"span"}},(0,R.Se)(["mergedConfig"])),watch:{"attachment.description":function(e){this.localDescription=e},localDescription:function(e){this.onEdit(e)}},methods:{linkClicked:function(e){var t=e.target;"A"===t.tagName&&window.open(t.href,"_blank")},openModal:function(e){this.useModal?(this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)):"unknown"===this.type&&window.open(this.attachment.url)},openModalForce:function(e){this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)},onEdit:function(e){this.edit&&this.edit(this.attachment,e)},onRemove:function(){this.remove&&this.remove(this.attachment)},onShiftUp:function(){this.shiftUp&&this.shiftUp(this.attachment)},onShiftDn:function(){this.shiftDn&&this.shiftDn(this.attachment)},stopFlash:function(){this.$refs.flash.closePlayer()},setFlashLoaded:function(e){this.flashLoaded=e},toggleDescription:function(){this.showDescription=!this.showDescription},toggleHidden:function(e){var t=this;!this.mergedConfig.useOneClickNsfw||this.showHidden||"video"===this.type&&!this.mergedConfig.playVideosInModal?this.img&&!this.preloadImage?this.img.onload?this.img.onload():(this.loading=!0,this.img.src=this.attachment.url,this.img.onload=function(){t.loading=!1,t.showHidden=!t.showHidden}):this.showHidden=!this.showHidden:this.openModal(e)},onImageLoad:function(e){var t=e.naturalWidth,n=e.naturalHeight;this.$emit("naturalSizeLoad",{id:this.attachment.id,width:t,height:n})}}},B=(0,n(83744).Z)(W,[["render",function(e,t,n,U,M,A){var L=(0,o.up)("FAIcon"),E=(0,o.up)("StillImage"),F=(0,o.up)("VideoAttachment"),R=(0,o.up)("Flash");return e.usePlaceholder?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,r.C_)(["Attachment -placeholder button-unstyled",e.classNames]),onClick:t[4]||(t[4]=function(){return e.openModal&&e.openModal.apply(e,arguments)})},["html"!==e.type?((0,o.wg)(),(0,o.iD)("a",{key:0,class:"placeholder",target:"_blank",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[0]||(t[0]=(0,i.iM)((function(){}),["prevent"]))},[(0,o.Wm)(L,{icon:e.placeholderIconClass},null,8,["icon"]),(0,o._)("b",null,(0,r.zw)(e.nsfw?"NSFW / ":""),1),(0,o.Uk)((0,r.zw)(e.edit?"":e.placeholderName),1)],8,s)):(0,o.kq)("",!0),e.edit||e.remove?((0,o.wg)(),(0,o.iD)("div",a,[e.remove?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-unstyled attachment-button",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.onRemove&&e.onRemove.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(L,{icon:"trash-alt"})])):(0,o.kq)("",!0)])):(0,o.kq)("",!0),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription||e.showDescription)?((0,o.wg)(),(0,o.iD)("div",{key:2,class:(0,r.C_)(["description-container",{"-static":!e.edit}])},[e.edit?(0,o.wy)(((0,o.wg)(),(0,o.iD)("input",{key:0,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.localDescription=t}),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[3]||(t[3]=(0,i.D2)((0,i.iM)((function(){}),["prevent"]),["enter"]))},null,40,c)),[[i.nr,e.localDescription]]):((0,o.wg)(),(0,o.iD)("p",l,(0,r.zw)(e.localDescription),1))],2)):(0,o.kq)("",!0)],2)):((0,o.wg)(),(0,o.iD)("div",{key:1,class:(0,r.C_)(["Attachment",e.classNames])},[(0,o.wy)((0,o._)("div",u,[e.hidden?((0,o.wg)(),(0,o.iD)("a",{key:0,class:"image-container",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[5]||(t[5]=(0,i.iM)((function(){return e.toggleHidden&&e.toggleHidden.apply(e,arguments)}),["prevent","stop"]))},[((0,o.wg)(),(0,o.iD)("img",{key:e.nsfwImage,class:"nsfw",src:e.nsfwImage},null,8,p)),"video"===e.type?((0,o.wg)(),(0,o.j4)(L,{key:0,class:"play-icon",icon:"play-circle"})):(0,o.kq)("",!0)],8,d)):(0,o.kq)("",!0),e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",m,["flash"===e.type&&e.flashLoaded?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-unstyled attachment-button",title:e.$t("status.attachment_stop_flash"),onClick:t[6]||(t[6]=(0,i.iM)((function(){return e.stopFlash&&e.stopFlash.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(L,{icon:"stop"})],8,h)):(0,o.kq)("",!0),e.attachment.description&&"small"!==e.size&&!e.edit&&"unknown"!==e.type?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_description"),onClick:t[7]||(t[7]=(0,i.iM)((function(){return e.toggleDescription&&e.toggleDescription.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(L,{icon:"align-right"})],8,f)):(0,o.kq)("",!0),e.useModal||"unknown"===e.type?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_in_modal"),onClick:t[8]||(t[8]=(0,i.iM)((function(){return e.openModalForce&&e.openModalForce.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(L,{icon:"search-plus"})],8,g)),e.nsfw&&e.hideNsfwLocal?((0,o.wg)(),(0,o.iD)("button",{key:3,class:"button-unstyled attachment-button",title:e.$t("status.hide_attachment"),onClick:t[9]||(t[9]=(0,i.iM)((function(){return e.toggleHidden&&e.toggleHidden.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(L,{icon:"times"})],8,v)):(0,o.kq)("",!0),e.shiftUp?((0,o.wg)(),(0,o.iD)("button",{key:4,class:"button-unstyled attachment-button",title:e.$t("status.move_up"),onClick:t[10]||(t[10]=(0,i.iM)((function(){return e.onShiftUp&&e.onShiftUp.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(L,{icon:"chevron-left"})],8,w)):(0,o.kq)("",!0),e.shiftDn?((0,o.wg)(),(0,o.iD)("button",{key:5,class:"button-unstyled attachment-button",title:e.$t("status.move_down"),onClick:t[11]||(t[11]=(0,i.iM)((function(){return e.onShiftDn&&e.onShiftDn.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(L,{icon:"chevron-right"})],8,b)):(0,o.kq)("",!0),e.remove?((0,o.wg)(),(0,o.iD)("button",{key:6,class:"button-unstyled attachment-button",title:e.$t("status.remove_attachment"),onClick:t[12]||(t[12]=(0,i.iM)((function(){return e.onRemove&&e.onRemove.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(L,{icon:"trash-alt"})],8,y)):(0,o.kq)("",!0)])),"image"!==e.type||e.hidden&&!e.preloadImage?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("a",{key:2,class:(0,r.C_)(["image-container",{"-hidden":e.hidden&&e.preloadImage}]),href:e.attachment.url,target:"_blank",onClick:t[13]||(t[13]=(0,i.iM)((function(){return e.openModal&&e.openModal.apply(e,arguments)}),["stop","prevent"]))},[(0,o.Wm)(E,{class:"image",referrerpolicy:e.referrerpolicy,mimetype:e.attachment.mimetype,src:e.attachment.large_thumb_url||e.attachment.url,"image-load-handler":e.onImageLoad,alt:e.attachment.description},null,8,["referrerpolicy","mimetype","src","image-load-handler","alt"])],10,_)),"unknown"!==e.type||e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("a",{key:3,class:"placeholder-container",href:e.attachment.url,target:"_blank"},[(0,o.Wm)(L,{size:e.compact?"2x":"5x",icon:e.placeholderIconClass,title:e.localDescription},null,8,["size","icon","title"]),e.compact?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("p",S,(0,r.zw)(e.localDescription),1))],8,k)),"video"!==e.type||e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)((0,o.LL)(e.videoTag),{key:4,class:(0,r.C_)(["video-container",{"button-unstyled":"isModal"}]),href:e.attachment.url,onClick:(0,i.iM)(e.openModal,["stop","prevent"])},{default:(0,o.w5)((function(){return[(0,o.Wm)(F,{class:"video",attachment:e.attachment,controls:!e.useModal,onPlay:t[14]||(t[14]=function(t){return e.$emit("play")}),onPause:t[15]||(t[15]=function(t){return e.$emit("pause")})},null,8,["attachment","controls"]),e.useModal?((0,o.wg)(),(0,o.j4)(L,{key:0,class:"play-icon",icon:"play-circle"})):(0,o.kq)("",!0)]})),_:1},8,["href","onClick"])),"audio"!==e.type||e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("span",{key:5,class:"audio-container",href:e.attachment.url,onClick:t[18]||(t[18]=(0,i.iM)((function(){return e.openModal&&e.openModal.apply(e,arguments)}),["stop","prevent"]))},["audio"===e.type?((0,o.wg)(),(0,o.iD)("audio",{key:0,src:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,controls:"",onPlay:t[16]||(t[16]=function(t){return e.$emit("play")}),onPause:t[17]||(t[17]=function(t){return e.$emit("pause")})},null,40,C)):(0,o.kq)("",!0)],8,j)),"html"===e.type&&e.attachment.oembed?((0,o.wg)(),(0,o.iD)("div",{key:6,class:"oembed-container",onClick:t[19]||(t[19]=(0,i.iM)((function(){return e.linkClicked&&e.linkClicked.apply(e,arguments)}),["prevent"]))},[e.attachment.thumb_url?((0,o.wg)(),(0,o.iD)("div",O,[(0,o._)("img",{src:e.attachment.thumb_url},null,8,P)])):(0,o.kq)("",!0),(0,o._)("div",z,[(0,o._)("h1",null,[(0,o._)("a",{href:e.attachment.url},(0,r.zw)(e.attachment.oembed.title),9,D)]),(0,o._)("div",{innerHTML:e.attachment.oembed.oembedHTML},null,8,I)])])):(0,o.kq)("",!0),"flash"!==e.type||e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("span",{key:7,class:"flash-container",href:e.attachment.url,onClick:t[22]||(t[22]=(0,i.iM)((function(){return e.openModal&&e.openModal.apply(e,arguments)}),["stop","prevent"]))},[(0,o.Wm)(R,{ref:"flash",class:"flash",src:e.attachment.large_thumb_url||e.attachment.url,onPlayerOpened:t[20]||(t[20]=function(t){return e.setFlashLoaded(!0)}),onPlayerClosed:t[21]||(t[21]=function(t){return e.setFlashLoaded(!1)})},null,8,["src"])],8,x))],512),[[i.F8,!e.isEmpty]]),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription&&e.showDescription)?((0,o.wg)(),(0,o.iD)("div",{key:0,class:(0,r.C_)(["description-container",{"-static":!e.edit}])},[e.edit?(0,o.wy)(((0,o.wg)(),(0,o.iD)("input",{key:0,"onUpdate:modelValue":t[23]||(t[23]=function(t){return e.localDescription=t}),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[24]||(t[24]=(0,i.D2)((0,i.iM)((function(){}),["prevent"]),["enter"]))},null,40,T)),[[i.nr,e.localDescription]]):((0,o.wg)(),(0,o.iD)("p",$,(0,r.zw)(e.localDescription),1))],2)):(0,o.kq)("",!0)],2))}]])},19066:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var o=n(66252),r={class:"avatars"},i=n(48173),s=n(4493);const a={props:["users"],computed:{slicedUsers:function(){return this.users?this.users.slice(0,15):[]}},components:{UserAvatar:i.default},methods:{userProfileLink:function(e){return(0,s.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},c=(0,n(83744).Z)(a,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("UserAvatar"),l=(0,o.up)("router-link");return(0,o.wg)(),(0,o.iD)("div",r,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.slicedUsers,(function(t){return(0,o.wg)(),(0,o.j4)(l,{key:t.id,to:e.userProfileLink(t),class:"avatars-item"},{default:(0,o.w5)((function(){return[(0,o.Wm)(c,{user:t,class:"avatar-small"},null,8,["user"])]})),_:2},1032,["to"])})),128))])}]])},29076:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var o=n(66252),r=n(49963),i={class:"basic-user-card"},s={class:"basic-user-card-collapsed-content"},a=["title"],c=n(22588),l=n(48173),u=n(12061),d=n(92820),p=n(4493);const m={props:["user"],components:{UserPopover:c.default,UserAvatar:l.default,RichContent:d.Z,UserLink:u.Z},methods:{userProfileLink:function(e){return(0,p.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},h=(0,n(83744).Z)(m,[["render",function(e,t,n,c,l,u){var d=(0,o.up)("UserAvatar"),p=(0,o.up)("UserPopover"),m=(0,o.up)("router-link"),h=(0,o.up)("RichContent"),f=(0,o.up)("user-link");return(0,o.wg)(),(0,o.iD)("div",i,[(0,o.Wm)(m,{to:e.userProfileLink(e.user),onClick:t[1]||(t[1]=(0,r.iM)((function(){}),["prevent"]))},{default:(0,o.w5)((function(){return[(0,o.Wm)(p,{"user-id":e.user.id,"overlay-centers":!0,"overlay-centers-selector":".avatar"},{default:(0,o.w5)((function(){return[(0,o.Wm)(d,{class:"user-avatar avatar",user:e.user,onClick:t[0]||(t[0]=(0,r.iM)((function(){}),["prevent"]))},null,8,["user"])]})),_:1},8,["user-id"])]})),_:1},8,["to"]),(0,o._)("div",s,[(0,o._)("div",{title:e.user.name,class:"basic-user-card-user-name"},[(0,o.Wm)(h,{class:"basic-user-card-user-name-value",html:e.user.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,a),(0,o._)("div",null,[(0,o.Wm)(f,{class:"basic-user-card-screen-name",user:e.user},null,8,["user"])]),(0,o.WI)(e.$slots,"default")])])}]])},90350:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=n(66252),r=n(3577),i=["disabled","checked","indeterminate"],s=(0,o._)("i",{class:"checkbox-indicator","aria-hidden":!0},null,-1),a={key:0,class:"label"};const c={props:["modelValue","indeterminate","disabled"],emits:["update:modelValue"]},l=(0,n(83744).Z)(c,[["render",function(e,t,n,c,l,u){return(0,o.wg)(),(0,o.iD)("label",{class:(0,r.C_)(["checkbox",{disabled:n.disabled,indeterminate:n.indeterminate}])},[(0,o._)("input",{type:"checkbox",class:"visible-for-screenreader-only",disabled:n.disabled,checked:n.modelValue,indeterminate:n.indeterminate,onChange:t[0]||(t[0]=function(t){return e.$emit("update:modelValue",t.target.checked)})},null,40,i),s,e.$slots.default?((0,o.wg)(),(0,o.iD)("span",a,[(0,o.WI)(e.$slots,"default")])):(0,o.kq)("",!0)],2)}]])},1447:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=n(66252),r=n(3577),i=n(49963),s=["textContent"],a=["textContent"],c=["textContent"];const l={components:{DialogModal:n(71113).Z},props:{title:{type:String},cancelText:{type:String},confirmText:{type:String}},computed:{},methods:{onCancel:function(){this.$emit("cancelled")},onAccept:function(){this.$emit("accepted")}}},u=(0,n(83744).Z)(l,[["render",function(e,t,n,l,u,d){var p=(0,o.up)("dialog-modal"),m=(0,o.Q2)("body-scroll-lock");return(0,o.wy)(((0,o.wg)(),(0,o.j4)(p,{class:"confirm-modal","on-cancel":e.onCancel},{header:(0,o.w5)((function(){return[(0,o._)("span",{textContent:(0,r.zw)(e.title)},null,8,s)]})),footer:(0,o.w5)((function(){return[(0,o._)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.onAccept&&e.onAccept.apply(e,arguments)}),["prevent"])),textContent:(0,r.zw)(e.confirmText)},null,8,a),(0,o._)("button",{class:"btn button-default",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.onCancel&&e.onCancel.apply(e,arguments)}),["prevent"])),textContent:(0,r.zw)(e.cancelText)},null,8,c)]})),default:(0,o.w5)((function(){return[(0,o.WI)(e.$slots,"default")]})),_:3},8,["on-cancel"])),[[m,!0]])}]])},71113:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var o=n(66252),r=n(3577),i=n(49963),s={class:"panel-heading dialog-modal-heading"},a={class:"title"},c={class:"dialog-modal-content"},l={class:"dialog-modal-footer user-interactions panel-footer"};const u={props:{darkOverlay:{default:!0,type:Boolean},onCancel:{default:function(){},type:Function}}},d=(0,n(83744).Z)(u,[["render",function(e,t,n,u,d,p){return(0,o.wg)(),(0,o.iD)("span",{class:(0,r.C_)({"dark-overlay":e.darkOverlay}),onClick:t[1]||(t[1]=(0,i.iM)((function(t){return e.onCancel()}),["self","stop"]))},[(0,o._)("div",{class:"dialog-modal panel panel-default",onClick:t[0]||(t[0]=(0,i.iM)((function(){}),["stop"]))},[(0,o._)("div",s,[(0,o._)("div",a,[(0,o.WI)(e.$slots,"header")])]),(0,o._)("div",c,[(0,o.WI)(e.$slots,"default")]),(0,o._)("div",l,[(0,o.WI)(e.$slots,"footer")])])],2)}]])},86319:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ze});var o=n(66252),r=n(3577),i=n(49963),s={ref:"hiddenOverlayCaret",class:"caret"},a=["title"],c=["id"],l=["id","aria-label","aria-selected","onClick"],u={class:"image"},d=["src"],p={key:1},m={class:"label"},h={key:0,class:"displayText"},f={key:1,class:"displayText"},g={class:"detailText"},v=n(4942),w=n(44925),b=n(15861),y=n(93433),_=n(69572),k=n.n(_),S=n(64687),j=n.n(S),C=n(13311),O=n.n(C),P=n(54061),z=n.n(P),D=function(e){return z()(e,(function(e,t){var n={word:t,start:0,end:t.length};if(e.length>0){var o=e.pop();n.start+=o.end,n.end+=o.end,e.push(o)}return e.push(n),e}),[])},I=function(e){for(var t=[],n="",o=0;o<e.length;o++){var r=e[o];n?!!r.trim()==!!n.trim()?n+=r:(t.push(n),n=r):n=r}return n&&t.push(n),t};const x=function(e,t){var n=I(e),o=D(n);return O()(o,(function(e){var n=e.start,o=e.end;return n<=t&&o>t}))},T=function(e,t,n){return e.slice(0,t.start)+n+e.slice(t.end)};var $={class:"heading"},U={ref:"header",class:"emoji-tabs"},M=["title","onClick"],A={key:0,class:"emoji-picker-header-image"},L={key:0,class:"additional-tabs"},E=["title"],F={key:0,class:"content"},R={class:"emoji-search"},q=["placeholder"],N={class:"emoji-group"},Z={key:0,class:"emoji-group-title"},W=["title","onClick"],B={key:0,class:"emoji-picker-emoji -unicode"},H={class:"keep-open"},V={key:0,class:"stickers-content"},K=n(29439),G=n(8400),Y=n.n(G),J=n(92742),Q=n.n(J),X=n(23279),ee=n.n(X),te=n(90350),ne=n(91447),oe=n(32140),re=n(8312),ie=n(9382),se=n(84131);function ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ce(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ae(Object(n),!0).forEach((function(t){(0,v.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function le(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return ue(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ue(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function ue(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}ie.vI.add(se.IA$,se.L4e,se.RKn,se.ctA,se.ILF,se.kQp,se.E1P,se.k0d,se.Elv,se.X8G,se.dT$,se.RrC);var de={"smileys-and-emotion":"smile","people-and-body":"user","animals-and-nature":"paw","food-and-drink":"ice-cream","travel-and-places":"bus",activities:"basketball-ball",objects:"lightbulb",symbols:"code",flags:"flag"},pe=function(e,t,n){var o=[e.displayText,n(e)];return e.annotations&&t.forEach((function(t){var n,r,i=(null===(n=e.annotations[t])||void 0===n?void 0:n.keywords)||[],s=null===(r=e.annotations[t])||void 0===r?void 0:r.name;o.push.apply(o,(0,y.Z)(i.concat([s]).filter((function(e){return e}))))})),o};const me={props:{enableStickerPicker:{required:!1,type:Boolean,default:!1}},data:function(){return{keyword:"",activeGroup:"custom",showingStickers:!1,groupsScrolledClass:"scrolled-top",keepOpen:!1,customEmojiTimeout:null,contentLoaded:!1,groupRefs:{},emojiRefs:{},filteredEmojiGroups:[],width:0}},components:{StickerPicker:(0,o.RC)((function(){return n.e(159).then(n.bind(n,30159))})),Checkbox:te.Z,StillImage:oe.Z,Popover:ne.default},methods:{showPicker:function(){this.$refs.popover.showPopover(),this.onShowing()},hidePicker:function(){this.$refs.popover.hidePopover()},setAnchorEl:function(e){this.$refs.popover.setAnchorEl(e)},setGroupRef:function(e){var t=this;return function(n){t.groupRefs[e]=n}},onPopoverShown:function(){this.$emit("show")},onPopoverClosed:function(){this.$emit("close")},onStickerUploaded:function(e){this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.$emit("sticker-upload-failed",e)},onEmoji:function(e){var t=e.imageUrl?":".concat(e.displayText,":"):e.replacement;this.keepOpen||this.$refs.popover.hidePopover(),this.$emit("emoji",{insertion:t,keepOpen:this.keepOpen})},onScroll:function(e,t,n,o){var r=this.$refs["emoji-groups"].$el;this.scrolledGroup(r,n,o)},scrolledGroup:function(e,t,n){var o=this,r=e.scrollTop+5;this.$nextTick((function(){o.emojiItems.slice(t,n+1).forEach((function(e){var t=e.id.replace(/^row-\d+-/,""),n=o.groupRefs["group-"+e.id];if(n){var i=n.$el.parentElement;i&&i&&function(e){var t=e.style.transform,n=/translateY\((\d+)px\)/.exec(t);return n?n[1]:0}(i)<=r&&(o.activeGroup=t)}})),o.scrollHeader()}))},scrollHeader:function(){var e=this.groupRefs["group-header-"+this.activeGroup],t=e.offsetLeft,n=t+e.offsetWidth,o=this.$refs.header,r=o.scrollLeft,i=r+o.clientWidth,s=function(e){o.scrollLeft=e};t-7<r?s(t-7):n+7>i&&s(n+7-o.clientWidth)},highlight:function(e){this.setShowStickers(!1);var t=this.emojiItems.findIndex((function(t){return t.id===e}));this.$refs["emoji-groups"].scrollToItem(t)},updateScrolledClass:function(e){e.scrollTop<=5?this.groupsScrolledClass="scrolled-top":e.scrollTop>=e.scrollTopMax-5?this.groupsScrolledClass="scrolled-bottom":this.groupsScrolledClass="scrolled-middle"},toggleStickers:function(){this.showingStickers=!this.showingStickers},setShowStickers:function(e){this.showingStickers=e},filterByKeyword:function(e,t){return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0;if(""===t)return e;var r,i=t.toLowerCase(),s=[],a=le(e);try{for(a.s();!(r=a.n()).done;){var c=r.value,l=pe(c,n,o).map((function(e){return e.toLowerCase().indexOf(i)})).filter((function(e){return e>-1})),u=l.length?Math.min.apply(Math,(0,y.Z)(l)):-1;u>-1&&(Array.isArray(s[u])||(s[u]=[]),s[u].push(c))}}catch(e){a.e(e)}finally{a.f()}return s.flat()}(e,t,this.languages,this.maybeLocalizedEmojiName)},onShowing:function(){var e=this,t=this.contentLoaded;this.recalculateItemPerRow(),this.$nextTick((function(){e.$refs.search.focus()})),this.contentLoaded=!0,this.filteredEmojiGroups=this.getFilteredEmojiGroups(),t||this.$nextTick((function(){e.defaultGroup&&e.highlight(e.defaultGroup)}))},getFilteredEmojiGroups:function(){var e=this;return this.allEmojiGroups.map((function(t){return ce(ce({},t),{},{emojis:e.filterByKeyword(t.emojis,Q()(e.keyword))})})).filter((function(e){return e.emojis.length>0}))},recalculateItemPerRow:function(){var e=this;this.$nextTick((function(){e.$refs["emoji-groups"]&&(e.width=e.$refs["emoji-groups"].$el.clientWidth)}))}},watch:{keyword:function(){this.onScroll(),this.debouncedHandleKeywordChange()},allCustomGroups:function(){this.filteredEmojiGroups=this.getFilteredEmojiGroups()}},computed:{minItemSize:function(){return this.emojiHeight},emojiHeight:function(){return 36},emojiWidth:function(){return 36},itemPerRow:function(){return this.width?Math.floor(this.width/this.emojiWidth-1):6},activeGroupView:function(){return this.showingStickers?"":this.activeGroup},stickersAvailable:function(){return this.$store.state.instance.stickers?this.$store.state.instance.stickers.length>0:0},allCustomGroups:function(){var e=this.$store.getters.groupedCustomEmojis;return e.unpacked&&(e.unpacked.text=this.$t("emoji.unpacked")),e},defaultGroup:function(){return Object.keys(this.allCustomGroups)[0]},unicodeEmojiGroups:function(){var e=this;return this.$store.getters.standardEmojiGroupList.map((function(t){return{id:"standard-".concat(t.id),text:e.$t("emoji.unicode_groups.".concat(t.id)),icon:de[t.id],emojis:t.emojis}}))},allEmojiGroups:function(){return Object.entries(this.allCustomGroups).map((function(e){var t=(0,K.Z)(e,2);return t[0],t[1]})).concat(this.unicodeEmojiGroups)},stickerPickerEnabled:function(){return 0!==(this.$store.state.instance.stickers||[]).length},debouncedHandleKeywordChange:function(){var e=this;return ee()((function(){e.filteredEmojiGroups=e.getFilteredEmojiGroups()}),500)},emojiItems:function(){var e=this;return this.filteredEmojiGroups.map((function(t){return Y()(t.emojis,e.itemPerRow).map((function(e,n){return ce(ce({},t),{},{id:0===n?t.id:"row-".concat(n,"-").concat(t.id),emojis:e,isFirstRow:0===n})}))})).reduce((function(e,t){return e.concat(t)}),[])},languages:function(){return(0,re.ensureFinalFallback)(this.$store.getters.mergedConfig.interfaceLanguage)},maybeLocalizedEmojiName:function(){var e=this;return function(t){if(!t.annotations)return t.displayText;if(t.displayTextI18n)return e.$t(t.displayTextI18n.key,t.displayTextI18n.args);var n,o=le(e.languages);try{for(o.s();!(n=o.n()).done;){var r,i=n.value;if(null!==(r=t.annotations[i])&&void 0!==r&&r.name)return t.annotations[i].name}}catch(e){o.e(e)}finally{o.f()}return t.displayText}}}};var he=n(83744);const fe=(0,he.Z)(me,[["render",function(e,t,n,s,a,c){var l=(0,o.up)("still-image"),u=(0,o.up)("FAIcon"),d=(0,o.up)("DynamicScrollerItem"),p=(0,o.up)("DynamicScroller"),m=(0,o.up)("Checkbox"),h=(0,o.up)("sticker-picker"),f=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(f,{ref:"popover",trigger:"click","popover-class":"emoji-picker popover-default","trigger-attrs":{"aria-hidden":!0},onShow:e.onPopoverShown,onClose:e.onPopoverClosed},{content:(0,o.w5)((function(){return[(0,o._)("div",$,[(0,o._)("span",U,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.filteredEmojiGroups,(function(t){return(0,o.wg)(),(0,o.iD)("span",{ref_for:!0,ref:e.setGroupRef("group-header-"+t.id),key:t.id,class:(0,r.C_)(["emoji-tabs-item",{active:e.activeGroupView===t.id}]),title:t.text,onClick:(0,i.iM)((function(n){return e.highlight(t.id)}),["prevent"])},[t.image?((0,o.wg)(),(0,o.iD)("span",A,[(0,o.Wm)(l,{alt:t.text,src:t.image},null,8,["alt","src"])])):((0,o.wg)(),(0,o.j4)(u,{key:1,icon:t.icon,"fixed-width":""},null,8,["icon"]))],10,M)})),128))],512),e.stickerPickerEnabled?((0,o.wg)(),(0,o.iD)("span",L,[(0,o._)("span",{class:(0,r.C_)(["stickers-tab-icon additional-tabs-item",{active:e.showingStickers}]),title:e.$t("emoji.stickers"),onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.toggleStickers&&e.toggleStickers.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(u,{icon:"sticky-note","fixed-width":""})],10,E)])):(0,o.kq)("",!0)]),e.contentLoaded?((0,o.wg)(),(0,o.iD)("div",F,[(0,o._)("div",{class:(0,r.C_)(["emoji-content",{hidden:e.showingStickers}])},[(0,o._)("div",R,[(0,o.wy)((0,o._)("input",{ref:"search","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.keyword=t}),type:"text",class:"form-control",placeholder:e.$t("emoji.search_emoji"),onInput:t[2]||(t[2]=function(e){return e.target.composing=!1})},null,40,q),[[i.nr,e.keyword]])]),(0,o.Wm)(p,{ref:"emoji-groups",class:(0,r.C_)(["emoji-groups",e.groupsScrolledClass]),"min-item-size":e.minItemSize,items:e.emojiItems,"emit-update":!0,onUpdate:e.onScroll,onVisible:e.recalculateItemPerRow,onResize:e.recalculateItemPerRow},{default:(0,o.w5)((function(t){var n=t.item,s=t.index,a=t.active;return[(0,o.Wm)(d,{ref:e.setGroupRef("group-"+n.id),item:n,active:a,"data-index":s,"size-dependencies":[n.emojis.length]},{default:(0,o.w5)((function(){return[(0,o._)("div",N,[n.isFirstRow?((0,o.wg)(),(0,o.iD)("h6",Z,(0,r.zw)(n.text),1)):(0,o.kq)("",!0),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(n.emojis,(function(t){return(0,o.wg)(),(0,o.iD)("span",{key:n.id+t.displayText,title:e.maybeLocalizedEmojiName(t),class:"emoji-item",onClick:(0,i.iM)((function(n){return e.onEmoji(t)}),["stop","prevent"])},[t.imageUrl?((0,o.wg)(),(0,o.j4)(l,{key:1,class:"emoji-picker-emoji -custom",loading:"lazy",src:t.imageUrl,"data-emoji-name":n.id+t.displayText},null,8,["src","data-emoji-name"])):((0,o.wg)(),(0,o.iD)("span",B,(0,r.zw)(t.replacement),1))],8,W)})),128))])]})),_:2},1032,["item","active","data-index","size-dependencies"])]})),_:1},8,["class","min-item-size","items","onUpdate","onVisible","onResize"]),(0,o._)("div",H,[(0,o.Wm)(m,{modelValue:e.keepOpen,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.keepOpen=t})},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("emoji.keep_open")),1)]})),_:1},8,["modelValue"])])],2),e.showingStickers?((0,o.wg)(),(0,o.iD)("div",V,[(0,o.Wm)(h,{onUploaded:e.onStickerUploaded,onUploadFailed:e.onStickerUploadFailed},null,8,["onUploaded","onUploadFailed"])])):(0,o.kq)("",!0)])):(0,o.kq)("",!0)]})),_:1},8,["onShow","onClose"])}]]);var ge=["aria-live"];const ve={props:{ariaLive:{type:String,defualt:"assertive"}},data:function(){return{currentText:""}},methods:{announce:function(e){var t=this;this.currentText=e,setTimeout((function(){t.currentText=""}),1e3)}}},we=(0,he.Z)(ve,[["render",function(e,t,n,i,s,a){return(0,o.wg)(),(0,o.iD)("div",{class:"visible-for-screenreader-only","aria-live":e.ariaLive},(0,r.zw)(e.currentText),9,ge)}]]);var be,ye=n(42262),_e=n(67952),ke=n(5737),Se=["imageUrl"];function je(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ce(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?je(Object(n),!0).forEach((function(t){(0,v.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):je(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}ie.vI.add(ke.RKn);const Pe={emits:["update:modelValue","shown"],props:{suggest:{required:!0,type:Function},modelValue:{required:!0,type:String},enableEmojiPicker:{required:!1,type:Boolean,default:!1},hideEmojiButton:{required:!1,type:Boolean,default:!1},enableStickerPicker:{required:!1,type:Boolean,default:!1},placement:{required:!1,type:String,default:"auto"},newlineOnCtrlEnter:{required:!1,type:Boolean,default:!1}},data:function(){return{randomSeed:"".concat(Math.random()).replace(".","-"),input:void 0,caretEl:void 0,highlighted:-1,caret:0,focused:!1,blurTimeout:null,temporarilyHideSuggestions:!1,disableClickOutside:!1,suggestions:[],overlayStyle:{},pickerShown:!1}},components:{Popover:ne.default,EmojiPicker:fe,UnicodeDomainIndicator:ye.Z,ScreenReaderNotice:we},computed:{padEmoji:function(){return this.$store.getters.mergedConfig.padEmoji},preText:function(){return this.modelValue.slice(0,this.caret)},postText:function(){return this.modelValue.slice(this.caret)},showSuggestions:function(){return this.focused&&this.suggestions&&this.suggestions.length>0&&!this.pickerShown&&!this.temporarilyHideSuggestions},textAtCaret:function(){var e;return null===(e=this.wordAtCaret)||void 0===e?void 0:e.word},wordAtCaret:function(){if(this.modelValue&&this.caret)return x(this.modelValue,this.caret-1)||{}},languages:function(){return(0,re.ensureFinalFallback)(this.$store.getters.mergedConfig.interfaceLanguage)},maybeLocalizedEmojiNamesAndKeywords:function(){var e=this;return function(t){var n=[t.displayText],o=[];return t.displayTextI18n&&n.push(e.$t(t.displayTextI18n.key,t.displayTextI18n.args)),t.annotations&&e.languages.forEach((function(e){var r,i;n.push(null===(r=t.annotations[e])||void 0===r?void 0:r.name),o.push.apply(o,(0,y.Z)((null===(i=t.annotations[e])||void 0===i?void 0:i.keywords)||[]))})),{names:n.filter((function(e){return e})),keywords:o.filter((function(e){return e}))}}},maybeLocalizedEmojiName:function(){var e=this;return function(t){if(!t.annotations)return t.displayText;if(t.displayTextI18n)return e.$t(t.displayTextI18n.key,t.displayTextI18n.args);var n,o=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Oe(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Oe(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}(e.languages);try{for(o.s();!(n=o.n()).done;){var r,i=n.value;if(null!==(r=t.annotations[i])&&void 0!==r&&r.name)return t.annotations[i].name}}catch(e){o.e(e)}finally{o.f()}return t.displayText}},onInputScroll:function(){this.$refs.hiddenOverlay.scrollTo({top:this.input.scrollTop,left:this.input.scrollLeft})},suggestionListId:function(){return"suggestions-".concat(this.randomSeed)},suggestionItemId:function(){var e=this;return function(t){return"suggestion-item-".concat(t,"-").concat(e.randomSeed)}}},mounted:function(){var e=this.$refs,t=e.root,n=e.hiddenOverlayCaret,o=e.suggestorPopover,r=t.querySelector(".emoji-input > input")||t.querySelector(".emoji-input > textarea");if(r){this.input=r,this.caretEl=n,o.setAnchorEl?(o.setAnchorEl(this.caretEl),this.$refs.picker.setAnchorEl(this.caretEl)):console.warn("setAnchorEl not found, are we in a unit test?");var i=getComputedStyle(this.input);this.overlayStyle.padding=i.padding,this.overlayStyle.border=i.border,this.overlayStyle.margin=i.margin,this.overlayStyle.lineHeight=i.lineHeight,this.overlayStyle.fontFamily=i.fontFamily,this.overlayStyle.fontSize=i.fontSize,this.overlayStyle.wordWrap=i.wordWrap,this.overlayStyle.whiteSpace=i.whiteSpace,this.resize(),r.addEventListener("blur",this.onBlur),r.addEventListener("focus",this.onFocus),r.addEventListener("paste",this.onPaste),r.addEventListener("keyup",this.onKeyUp),r.addEventListener("keydown",this.onKeyDown),r.addEventListener("click",this.onClickInput),r.addEventListener("transitionend",this.onTransition),r.addEventListener("input",this.onInput),r.addEventListener("scroll",this.onInputScroll)}},unmounted:function(){var e=this.input;e&&(e.removeEventListener("blur",this.onBlur),e.removeEventListener("focus",this.onFocus),e.removeEventListener("paste",this.onPaste),e.removeEventListener("keyup",this.onKeyUp),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("click",this.onClickInput),e.removeEventListener("transitionend",this.onTransition),e.removeEventListener("input",this.onInput),e.removeEventListener("scroll",this.onInputScroll))},watch:{showSuggestions:function(e,t){this.$emit("shown",e),e?this.$refs.suggestorPopover.showPopover():this.$refs.suggestorPopover.hidePopover()},textAtCaret:(be=(0,b.Z)(j().mark((function e(t){var n,o;return j().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==t){e.next=2;break}return e.abrupt("return");case 2:if(n=t.charAt(0),t!==n){e.next=6;break}return this.suggestions=[],e.abrupt("return");case 6:return e.next=8,this.suggest(t,this.maybeLocalizedEmojiNamesAndKeywords);case 8:if(o=e.sent,!(this.textAtCaret!==t||o.length<=0)){e.next=12;break}return this.suggestions=[],e.abrupt("return");case 12:this.suggestions=k()(o,5).map((function(e){var t=e.imageUrl;return Ce(Ce({},(0,w.Z)(e,Se)),{},{img:t||""})})),this.highlighted=-1,this.$refs.screenReaderNotice.announce(this.$tc("tool_tip.autocomplete_available",this.suggestions.length,{number:this.suggestions.length}));case 15:case"end":return e.stop()}}),e,this)}))),function(e){return be.apply(this,arguments)})},methods:{triggerShowPicker:function(){var e=this;this.$nextTick((function(){e.$refs.picker.showPicker(),e.scrollIntoView()})),this.disableClickOutside=!0,setTimeout((function(){e.disableClickOutside=!1}),0)},togglePicker:function(){this.input.focus(),this.pickerShown?this.$refs.picker.hidePicker():(this.scrollIntoView(),this.$refs.picker.showPicker(),this.$refs.picker.startEmojiLoad())},replace:function(e){var t=T(this.modelValue,this.wordAtCaret,e);this.$emit("update:modelValue",t),this.caret=0},insert:function(e){var t=e.insertion,n=e.keepOpen,o=e.surroundingSpace,r=void 0===o||o,i=this.modelValue.substring(0,this.caret)||"",s=this.modelValue.substring(this.caret)||"",a=/\s/,c=r&&!a.exec(i.slice(-1))&&i.length&&this.padEmoji>0?" ":"",l=r&&!a.exec(s[0])&&this.padEmoji?" ":"",u=[i,c,t,l,s].join("");this.$emit("update:modelValue",u);var d=this.caret+(t+l+c).length;n||this.input.focus(),this.$nextTick((function(){this.input.setSelectionRange(d,d),this.caret=d}))},replaceText:function(e,t){var n=this.suggestions.length||0;if(1!==this.textAtCaret.length&&(n>0||t)){var o=(t||this.suggestions[this.highlighted]).replacement,r=T(this.modelValue,this.wordAtCaret,o);this.$emit("update:modelValue",r),this.highlighted=0;var i=this.wordAtCaret.start+o.length;this.$nextTick((function(){this.input.focus(),this.input.setSelectionRange(i,i),this.caret=i})),e.preventDefault()}},cycleBackward:function(e){var t=this.suggestions.length||0;this.highlighted-=1,-1===this.highlighted?this.input.focus():this.highlighted<-1&&(this.highlighted=t-1),t>0&&e.preventDefault()},cycleForward:function(e){var t=this.suggestions.length||0;this.highlighted+=1,this.highlighted>=t&&(this.highlighted=-1,this.input.focus()),t>0&&e.preventDefault()},scrollIntoView:function(){var e=this,t=this.$refs.picker.$el,n=this.$el.closest(".sidebar-scroller")||this.$el.closest(".post-form-modal-view")||window,o=n===window?n.scrollY:n.scrollTop,r=o+(n===window?n.innerHeight:n.offsetHeight),i=t.offsetHeight+(0,_e.y)(t,n).top,s=o+Math.max(0,i-r);n===window?n.scroll(0,s):n.scrollTop=s,this.$nextTick((function(){var t=e.input.offsetHeight,n=e.$refs.picker;n.$el.getBoundingClientRect().bottom>window.innerHeight&&(n.$el.style.top="auto",n.$el.style.bottom=t+"px")}))},onPickerShown:function(){this.pickerShown=!0},onPickerClosed:function(){this.pickerShown=!1},onBlur:function(e){var t=this;this.blurTimeout=setTimeout((function(){t.focused=!1,t.setCaret(e)}),200)},onClick:function(e,t){this.replaceText(e,t)},onFocus:function(e){this.blurTimeout&&(clearTimeout(this.blurTimeout),this.blurTimeout=null),this.focused=!0,this.setCaret(e),this.temporarilyHideSuggestions=!1},onKeyUp:function(e){var t=e.key;this.setCaret(e),this.temporarilyHideSuggestions="Escape"===t},onPaste:function(e){this.setCaret(e)},onKeyDown:function(e){var t=this,n=e.ctrlKey,o=e.shiftKey,r=e.key;this.newlineOnCtrlEnter&&n&&"Enter"===r&&(this.insert({insertion:"\n",surroundingSpace:!1}),e.stopPropagation(),e.preventDefault(),this.$nextTick((function(){t.input.blur(),t.input.focus()}))),this.temporarilyHideSuggestions||("Tab"===r&&(o?this.cycleBackward(e):this.cycleForward(e)),"ArrowUp"===r?this.cycleBackward(e):"ArrowDown"===r&&this.cycleForward(e),"Enter"===r&&(n||this.replaceText(e))),"Escape"===r&&(this.temporarilyHideSuggestions||this.input.focus())},onInput:function(e){this.setCaret(e),this.$emit("update:modelValue",e.target.value)},onStickerUploaded:function(e){this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.$emit("sticker-upload-Failed",e)},setCaret:function(e){var t=this,n=e.target.selectionStart;this.caret=n,this.$nextTick((function(){t.$refs.suggestorPopover.updateStyles()}))},resize:function(){},autoCompleteItemLabel:function(e){return e.user?e.displayText+" "+e.detailText:this.maybeLocalizedEmojiName(e)}}},ze=(0,he.Z)(Pe,[["render",function(e,t,n,v,w,b){var y=(0,o.up)("screen-reader-notice"),_=(0,o.up)("FAIcon"),k=(0,o.up)("EmojiPicker"),S=(0,o.up)("UnicodeDomainIndicator"),j=(0,o.up)("Popover");return(0,o.wg)(),(0,o.iD)("div",{ref:"root",class:(0,r.C_)(["emoji-input",{"with-picker":!e.hideEmojiButton}])},[(0,o.WI)(e.$slots,"default",{id:"textbox-"+e.randomSeed,ariaOwns:e.suggestionListId,ariaAutocomplete:"both",ariaExpanded:e.showSuggestions,ariaActivedescendant:e.showSuggestions&&-1!==e.highlighted?e.suggestionItemId(e.highlighted):""}),(0,o._)("div",{ref:"hiddenOverlay",class:"hidden-overlay",style:(0,r.j5)(e.overlayStyle),"aria-hidden":!0},[(0,o._)("span",null,(0,r.zw)(e.preText),1),(0,o._)("span",s,"x",512),(0,o._)("span",null,(0,r.zw)(e.postText),1)],4),(0,o.Wm)(y,{ref:"screenReaderNotice","aria-live":"assertive"},null,512),e.enableEmojiPicker?((0,o.wg)(),(0,o.iD)(o.HY,{key:0},[e.hideEmojiButton?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-unstyled emoji-picker-icon",type:"button",title:e.$t("emoji.add_emoji"),onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.togglePicker&&e.togglePicker.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(_,{icon:["far","smile-beam"]})],8,a)),e.enableEmojiPicker?((0,o.wg)(),(0,o.j4)(k,{key:1,ref:"picker","enable-sticker-picker":e.enableStickerPicker,class:"emoji-picker-panel",onEmoji:e.insert,onStickerUploaded:e.onStickerUploaded,onStickerUploadFailed:e.onStickerUploadFailed,onShow:e.onPickerShown,onClose:e.onPickerClosed},null,8,["enable-sticker-picker","onEmoji","onStickerUploaded","onStickerUploadFailed","onShow","onClose"])):(0,o.kq)("",!0)],64)):(0,o.kq)("",!0),(0,o.Wm)(j,{ref:"suggestorPopover",class:"autocomplete-panel",placement:"bottom","trigger-attrs":{"aria-hidden":!0}},{content:(0,o.w5)((function(){return[(0,o._)("div",{id:e.suggestionListId,ref:"panel-body",class:"autocomplete-panel-body",role:"listbox"},[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.suggestions,(function(t,n){return(0,o.wg)(),(0,o.iD)("div",{id:e.suggestionItemId(n),key:n,class:(0,r.C_)(["autocomplete-item",{highlighted:n===e.highlighted}]),role:"option","aria-label":e.autoCompleteItemLabel(t),"aria-selected":n===e.highlighted,onClick:(0,i.iM)((function(n){return e.onClick(n,t)}),["stop","prevent"])},[(0,o._)("span",u,[t.img?((0,o.wg)(),(0,o.iD)("img",{key:0,src:t.img},null,8,d)):((0,o.wg)(),(0,o.iD)("span",p,(0,r.zw)(t.replacement),1))]),(0,o._)("div",m,[t.user?((0,o.wg)(),(0,o.iD)("span",h,[(0,o.Uk)((0,r.zw)(t.displayText),1),(0,o.Wm)(S,{user:t.user,at:!1},null,8,["user"])])):(0,o.kq)("",!0),t.user?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("span",f,(0,r.zw)(e.maybeLocalizedEmojiName(t)),1)),(0,o._)("span",g,(0,r.zw)(t.detailText),1)])],10,l)})),128))],8,c)]})),_:1},512)],2)}]])},72884:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var o,r=n(66252),i=n(3577),s={class:"Flash"},a={key:0,class:"label"},c={key:1,class:"label"},l={key:2,class:"label"};const u=(o=null,{getRuffle:function(){return new Promise((function(e,t){if(o)e(o);else{window.RufflePlayer={},window.RufflePlayer.config={polyfills:!1,publicPath:"/static/ruffle"};var n=document.createElement("script");n.src="/static/ruffle/ruffle.js",n.type="text/javascript",n.onerror=function(e){t(e)},n.onabort=function(e){t(e)},n.oncancel=function(e){t(e)},n.onload=function(){o=window.RufflePlayer,e(o)},document.body.appendChild(n)}}))}});var d=n(9382),p=n(84131);d.vI.add(p.Bg$,p.eHv);const m={props:["src"],data:function(){return{player:!1,loaded:!1,ruffleInstance:null}},methods:{openPlayer:function(){var e=this;this.player||(this.player="hidden",u.getRuffle().then((function(t){var n=t.newest().createPlayer();n.config={letterbox:"on"},e.$refs.container.appendChild(n),n.style.width="100%",n.style.height="100%",n.load(e.src).then((function(){e.player=!0})).catch((function(t){console.error("Error loading ruffle",t),e.player="error"})),e.ruffleInstance=n,e.$emit("playerOpened")})))},closePlayer:function(){this.ruffleInstance&&this.ruffleInstance.remove(),this.player=!1,this.$emit("playerClosed")}}},h=(0,n(83744).Z)(m,[["render",function(e,t,n,o,u,d){var p=(0,r.up)("FAIcon");return(0,r.wg)(),(0,r.iD)("div",s,[!0===e.player||"hidden"===e.player?((0,r.wg)(),(0,r.iD)("div",{key:0,ref:"container",class:(0,i.C_)(["player",{hidden:"hidden"===e.player}])},null,2)):(0,r.kq)("",!0),!0!==e.player?((0,r.wg)(),(0,r.iD)("button",{key:1,class:"button-unstyled placeholder",onClick:t[0]||(t[0]=function(){return e.openPlayer&&e.openPlayer.apply(e,arguments)})},["hidden"===e.player?((0,r.wg)(),(0,r.iD)("span",a,(0,i.zw)(e.$t("general.loading")),1)):(0,r.kq)("",!0),"error"===e.player?((0,r.wg)(),(0,r.iD)("span",c,(0,i.zw)(e.$t("general.flash_fail")),1)):((0,r.wg)(),(0,r.iD)("span",l,[(0,r._)("p",null,(0,i.zw)(e.$t("general.flash_content")),1),(0,r._)("p",null,[(0,r.Wm)(p,{icon:"exclamation-triangle"}),(0,r.Uk)(" "+(0,i.zw)(e.$t("general.flash_security")),1)])]))])):(0,r.kq)("",!0)])}]])},34837:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var o=n(66252),r=n(3577),i=["disabled","title"],s=["textContent"],a=n(1447),c=n(29439),l=function e(t,n,o){return new Promise((function(e,r){setTimeout((function(){o.state.api.backendInteractor.fetchUserRelationship({id:n}).then((function(e){return o.commit("updateUserRelationship",[e]),e})).then((function(n){return e([n.following,n.requested,n.locked,t])})).catch((function(e){return r(e)}))}),500)})).then((function(t){var r=(0,c.Z)(t,4),i=r[0],s=r[1],a=r[2],l=r[3];i||a&&s||!(l<=3)||e(++l,n,o)}))},u=function(e,t){return new Promise((function(n,o){t.state.api.backendInteractor.followUser({id:e}).then((function(e){if(t.commit("updateUserRelationship",[e]),!(e.following||e.locked&&e.requested))return l(1,e,t).then((function(){n()}));n()}))}))};const d={props:["relationship","user","labelFollowing","buttonClass"],components:{ConfirmModal:a.Z},data:function(){return{inProgress:!1,showingConfirmUnfollow:!1}},computed:{shouldConfirmUnfollow:function(){return this.$store.getters.mergedConfig.modalOnUnfollow},isPressed:function(){return this.inProgress||this.relationship.following},title:function(){return this.inProgress||this.relationship.following?this.$t("user_card.follow_unfollow"):this.relationship.requested?this.$t("user_card.follow_cancel"):this.$t("user_card.follow")},label:function(){return this.inProgress?this.$t("user_card.follow_progress"):this.relationship.following?this.labelFollowing||this.$t("user_card.following"):this.relationship.requested?this.$t("user_card.follow_sent"):this.$t("user_card.follow")},disabled:function(){return this.inProgress||this.user.deactivated}},methods:{showConfirmUnfollow:function(){this.showingConfirmUnfollow=!0},hideConfirmUnfollow:function(){this.showingConfirmUnfollow=!1},onClick:function(){this.relationship.following||this.relationship.requested?this.unfollow():this.follow()},follow:function(){var e=this;this.inProgress=!0,u(this.relationship.id,this.$store).then((function(){e.inProgress=!1}))},unfollow:function(){this.shouldConfirmUnfollow?this.showConfirmUnfollow():this.doUnfollow()},doUnfollow:function(){var e=this,t=this.$store;this.inProgress=!0,function(e,t){return new Promise((function(n,o){t.state.api.backendInteractor.unfollowUser({id:e}).then((function(e){t.commit("updateUserRelationship",[e]),n({updated:e})}))}))}(this.relationship.id,t).then((function(){e.inProgress=!1,t.commit("removeStatus",{timeline:"friends",userId:e.relationship.id})})),this.hideConfirmUnfollow()}}},p=(0,n(83744).Z)(d,[["render",function(e,t,n,a,c,l){var u=(0,o.up)("i18n-t"),d=(0,o.up)("confirm-modal");return(0,o.wg)(),(0,o.iD)("button",{class:(0,r.C_)(["btn button-default follow-button",{toggled:e.isPressed}]),disabled:e.disabled,title:e.title,onClick:t[0]||(t[0]=function(){return e.onClick&&e.onClick.apply(e,arguments)})},[(0,o.Uk)((0,r.zw)(e.label)+" ",1),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingConfirmUnfollow?((0,o.wg)(),(0,o.j4)(d,{key:0,title:e.$t("user_card.unfollow_confirm_title"),"confirm-text":e.$t("user_card.unfollow_confirm_accept_button"),"cancel-text":e.$t("user_card.unfollow_confirm_cancel_button"),onAccepted:e.doUnfollow,onCancelled:e.hideConfirmUnfollow},{default:(0,o.w5)((function(){return[(0,o.Wm)(u,{keypath:"user_card.unfollow_confirm",tag:"span"},{user:(0,o.w5)((function(){return[(0,o._)("span",{textContent:(0,r.zw)(e.user.screen_name_ui)},null,8,s)]})),_:1})]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)]))],10,i)}]])},67671:(e,t,n)=>{"use strict";n.d(t,{Z:()=>w});var o=n(66252),r=n(3577),i={class:"gallery-rows"},s={key:0,class:"many-attachments"},a={class:"many-attachments-text"},c={class:"many-attachments-buttons"},l={key:0,class:"many-attachments-button"},u={key:1,class:"many-attachments-button"},d={key:2,class:"many-attachments-button"},p=n(93433),m=n(36968),h=n.n(m),f=n(73303),g=n.n(f);const v={props:["attachments","compact","limitRows","descriptions","limit","nsfw","setMedia","size","editable","removeAttachment","shiftUpAttachment","shiftDnAttachment","editAttachment","grid"],data:function(){return{sizes:{},hidingLong:!0}},components:{Attachment:n(66596).Z},computed:{rows:function(){var e=this;if(!this.attachments)return[];var t=this.limit>0?this.attachments.slice(0,this.limit):this.attachments;return"hide"===this.size?t.map((function(e){return{minimal:!0,items:[e]}})):this.grid?[{grid:!0,items:t}]:t.reduce((function(t,n,o){if(n.mimetype.includes("audio"))return[].concat((0,p.Z)(t),[{audio:!0,items:[n]},{items:[]}]);if(!(n.mimetype.includes("image")||n.mimetype.includes("video")||n.mimetype.includes("flash")))return[].concat((0,p.Z)(t),[{minimal:!0,items:[n]},{items:[]}]);var r=e.attachments.length-o+1,i=t[t.length-1].items;return i.push(n),i.length>=3&&r>3?[].concat((0,p.Z)(t),[{items:[]}]):t}),[{items:[]}]).filter((function(e){return e.items.length>0}))},attachmentsDimensionalScore:function(){return this.rows.reduce((function(e,t){var n=0;return t.minimal?n+=1/8:t.audio?n+=1/4:n+=1/(t.items.length+.6),e+n}),0)},tooManyAttachments:function(){return!this.editable&&"small"!==this.size&&("hide"===this.size?this.attachments.length>8:this.attachmentsDimensionalScore>1)}},methods:{onNaturalSizeLoad:function(e){var t=e.id,n=e.width,o=e.height;h()(this.sizes,t,{width:n,height:o})},rowStyle:function(e){return e.audio?{"padding-bottom":"25%"}:e.minimal||e.grid?void 0:{"padding-bottom":"".concat(100/(e.items.length+.6),"%")}},itemStyle:function(e,t){var n=this,o=g()(t,(function(e){return n.getAspectRatio(e.id)}));return{flex:"".concat(this.getAspectRatio(e)/o," 1 0%")}},getAspectRatio:function(e){var t=this.sizes[e];return t?t.width/t.height:1},toggleHidingLong:function(e){this.hidingLong=e},openGallery:function(){this.$store.dispatch("setMedia",this.attachments),this.$store.dispatch("setCurrentMedia",this.attachments[0])},onMedia:function(){this.$store.dispatch("setMedia",this.attachments)}}},w=(0,n(83744).Z)(v,[["render",function(e,t,n,p,m,h){var f=(0,o.up)("Attachment");return(0,o.wg)(),(0,o.iD)("div",{ref:"galleryContainer",class:(0,r.C_)(["Gallery",{"-long":e.tooManyAttachments&&e.hidingLong}])},[(0,o._)("div",i,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.rows,(function(t,n){return(0,o.wg)(),(0,o.iD)("div",{key:n,class:(0,r.C_)(["gallery-row",{"-audio":t.audio,"-minimal":t.minimal,"-grid":e.grid}]),style:(0,r.j5)(e.rowStyle(t))},[(0,o._)("div",{class:(0,r.C_)(["gallery-row-inner",{"-grid":e.grid}])},[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(t.items,(function(i,s){return(0,o.wg)(),(0,o.j4)(f,{key:i.id,class:"gallery-item",compact:e.compact,nsfw:e.nsfw,attachment:i,size:e.size,editable:e.editable,remove:e.removeAttachment,"shift-up":!(0===s&&0===n)&&e.shiftUpAttachment,"shift-dn":!(s===t.items.length-1&&n===e.rows.length-1)&&e.shiftDnAttachment,edit:e.editAttachment,description:e.descriptions&&e.descriptions[i.id],"hide-description":"small"===e.size||e.tooManyAttachments&&e.hidingLong,style:(0,r.j5)(e.itemStyle(i.id,t.items)),onSetMedia:e.onMedia,onNaturalSizeLoad:e.onNaturalSizeLoad},null,8,["compact","nsfw","attachment","size","editable","remove","shift-up","shift-dn","edit","description","hide-description","style","onSetMedia","onNaturalSizeLoad"])})),128))],2)],6)})),128))]),e.tooManyAttachments?((0,o.wg)(),(0,o.iD)("div",s,[(0,o._)("div",a,(0,r.zw)(e.$t("status.many_attachments",{number:e.attachments.length})),1),(0,o._)("div",c,[e.hidingLong?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("span",l,[(0,o._)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=function(t){return e.toggleHidingLong(!0)})},(0,r.zw)(e.$t("status.collapse_attachments")),1)])),e.hidingLong?((0,o.wg)(),(0,o.iD)("span",u,[(0,o._)("button",{class:"button-unstyled -link",onClick:t[1]||(t[1]=function(t){return e.toggleHidingLong(!1)})},(0,r.zw)(e.$t("status.show_all_attachments")),1)])):(0,o.kq)("",!0),e.hidingLong?((0,o.wg)(),(0,o.iD)("span",d,[(0,o._)("button",{class:"button-unstyled -link",onClick:t[2]||(t[2]=function(){return e.openGallery&&e.openGallery.apply(e,arguments)})},(0,r.zw)(e.$t("status.open_gallery")),1)])):(0,o.kq)("",!0)])])):(0,o.kq)("",!0)],2)}]])},73414:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var o=n(66252),r=n(3577),i={class:"interface-language-switcher"},s={class:"setting-list"},a=["value"],c=["onClick"],l=n(93433),u=n(39776);const d={components:{Select:n(76990).Z},props:{promptText:{type:String,required:!0},language:{type:[Array,String],required:!0},setLanguage:{type:Function,required:!0}},computed:{languages:function(){return u.Z.languages},controlledLanguage:{get:function(){return Array.isArray(this.language)?this.language:[this.language]},set:function(e){this.setLanguage(e)}}},methods:{getLanguageName:function(e){return u.Z.getLanguageName(e)},addLanguage:function(){this.controlledLanguage=[].concat((0,l.Z)(this.controlledLanguage),[""])},setLanguageAt:function(e,t){var n=(0,l.Z)(this.controlledLanguage);n[e]=t,this.controlledLanguage=n},removeLanguageAt:function(e){var t=(0,l.Z)(this.controlledLanguage);t.splice(e,1),this.controlledLanguage=t}}},p=(0,n(83744).Z)(d,[["render",function(e,t,n,l,u,d){var p=(0,o.up)("Select");return(0,o.wg)(),(0,o.iD)("div",i,[(0,o._)("label",null,(0,r.zw)(n.promptText),1),(0,o._)("ul",s,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(d.controlledLanguage.keys(),(function(t){return(0,o.wg)(),(0,o.iD)("li",{key:t},[(0,o._)("label",null,[(0,o.Uk)((0,r.zw)(0===t?e.$t("settings.primary_language"):e.$tc("settings.fallback_language",t,{index:t}))+" ",1),(0,o.Wm)(p,{class:"language-select","model-value":d.controlledLanguage[t],"onUpdate:modelValue":function(e){return d.setLanguageAt(t,e)}},{default:(0,o.w5)((function(){return[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(d.languages,(function(e){return(0,o.wg)(),(0,o.iD)("option",{key:e.code,value:e.code},(0,r.zw)(e.name),9,a)})),128))]})),_:2},1032,["model-value","onUpdate:modelValue"])]),d.controlledLanguage.length>1&&0!==t?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-default btn",onClick:function(){return d.removeLanguageAt(t)}},(0,r.zw)(e.$t("settings.remove_language")),9,c)):(0,o.kq)("",!0)])})),128)),(0,o._)("li",null,[(0,o._)("button",{class:"button-default btn",onClick:t[0]||(t[0]=function(){return d.addLanguage&&d.addLanguage.apply(d,arguments)})},(0,r.zw)(e.$t("settings.add_language")),1)])])])}]])},92798:(e,t,n)=>{"use strict";n.d(t,{Z:()=>g});var o=n(66252),r=n(3577),i=["href"],s={key:0,class:"card-image"},a=["src"],c={class:"card-content"},l={class:"card-host faint"},u={key:0,class:"nsfw-alert alert warning"},d={class:"card-title"},p={key:0,class:"card-description"},m=n(4942);function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const f={name:"LinkPreview",props:["card","size","nsfw"],data:function(){return{imageLoaded:!1}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(Object(n),!0).forEach((function(t){(0,m.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({useImage:function(){return this.card.image&&!this.censored&&"hide"!==this.size},censored:function(){return this.nsfw&&this.hideNsfwConfig},useDescription:function(){return this.card.description&&/\S/.test(this.card.description)},hideNsfwConfig:function(){return this.mergedConfig.hideNsfw}},(0,n(989).Se)(["mergedConfig"])),created:function(){var e=this;if(this.useImage){var t=new Image;t.onload=function(){e.imageLoaded=!0},t.src=this.card.image}}},g=(0,n(83744).Z)(f,[["render",function(e,t,n,m,h,f){return(0,o.wg)(),(0,o.iD)("div",null,[(0,o._)("a",{class:"link-preview-card",href:e.card.url,target:"_blank",rel:"noopener"},[e.useImage&&e.imageLoaded?((0,o.wg)(),(0,o.iD)("div",s,[(0,o._)("img",{src:e.card.image},null,8,a)])):(0,o.kq)("",!0),(0,o._)("div",c,[(0,o._)("span",l,[e.censored?((0,o.wg)(),(0,o.iD)("span",u,(0,r.zw)(e.$t("status.nsfw")),1)):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(e.card.provider_name),1)]),(0,o._)("h4",d,(0,r.zw)(e.card.title),1),e.useDescription?((0,o.wg)(),(0,o.iD)("p",p,(0,r.zw)(e.card.description),1)):(0,o.kq)("",!0)])],8,i)])}]])},56773:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var o=n(66252),r={class:"list"},i={key:0,class:"list-empty-content faint"};const s={props:{items:{type:Array,default:function(){return[]}},getKey:{type:Function,default:function(e){return e.id}}}},a=(0,n(83744).Z)(s,[["render",function(e,t,n,s,a,c){return(0,o.wg)(),(0,o.iD)("div",r,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(n.items,(function(t){return(0,o.wg)(),(0,o.iD)("div",{key:n.getKey(t),class:"list-item"},[(0,o.WI)(e.$slots,"item",{item:t})])})),128)),0===n.items.length&&e.$slots.empty?((0,o.wg)(),(0,o.iD)("div",i,[(0,o.WI)(e.$slots,"empty")])):(0,o.kq)("",!0)])}]])},20460:(e,t,n)=>{"use strict";n.d(t,{Z:()=>z});var o=n(66252),r=n(3577),i=n(49963),s={class:"MentionLink"},a=["href","innerHTML"],c=["href"],l={class:"shortName"},u=["innerHTML"],d=["innerHTML"],p={ref:"full",class:"full"},m=["innerHTML"],h=["innerHTML"],f=n(44925),g=n(4942),v=n(4493),w=n(989),b=n(95052),y=n(48173),_=n(42262),k=n(9382),S=n(84131),j=["backgroundColor","backgroundPosition","backgroundImage"];function C(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function O(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?C(Object(n),!0).forEach((function(t){(0,g.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):C(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}k.vI.add(S.IBq);const P={name:"MentionLink",components:{UserAvatar:y.default,UnicodeDomainIndicator:_.Z,UserPopover:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,22588))}))},props:{url:{required:!0,type:String},content:{required:!0,type:String},userId:{required:!1,type:String},userScreenName:{required:!1,type:String}},data:function(){return{hasSelection:!1}},methods:{onClick:function(){if(!this.shouldShowTooltip){var e=(0,v.Z)(this.userId||this.user.id,this.userScreenName||this.user.screen_name);this.$router.push(e)}},handleSelection:function(){this.hasSelection=document.getSelection().containsNode(this.$refs.full,!0)}},mounted:function(){document.addEventListener("selectionchange",this.handleSelection)},unmounted:function(){document.removeEventListener("selectionchange",this.handleSelection)},computed:O(O({user:function(){return this.url&&this.$store&&this.$store.getters.findUserByUrl(this.url)},isYou:function(){return this.user&&this.user.id===this.currentUser.id},userName:function(){return this.user&&this.userNameFullUi.split("@")[0]},serverName:function(){return this.user&&(this.userNameFullUi.split("@")[1]||this.$store.getters.instanceDomain)},userNameFull:function(){return this.user&&this.user.screen_name},userNameFullUi:function(){return this.user&&this.user.screen_name_ui},highlight:function(){return this.user&&this.mergedConfig.highlight[this.user.screen_name]},highlightType:function(){return this.highlight&&"-"+this.highlight.type},highlightClass:function(){if(this.highlight)return(0,b.M)(this.user)},style:function(){if(this.highlight){var e=(0,b.q)(this.highlight);return e.backgroundColor,e.backgroundPosition,e.backgroundImage,(0,f.Z)(e,j)}},classnames:function(){return[{"-you":this.isYou&&this.shouldBoldenYou,"-highlighted":this.highlight,"-has-selection":this.hasSelection},this.highlightType]},useAtIcon:function(){return this.mergedConfig.useAtIcon},isRemote:function(){return this.userName!==this.userNameFull},shouldShowFullUserName:function(){var e=this.mergedConfig.mentionLinkDisplay;return"short"!==e&&("full"===e||this.isRemote)},shouldShowTooltip:function(){return this.mergedConfig.mentionLinkShowTooltip},shouldShowAvatar:function(){return this.mergedConfig.mentionLinkShowAvatar},shouldShowYous:function(){return this.mergedConfig.mentionLinkShowYous},shouldBoldenYou:function(){return this.mergedConfig.mentionLinkBoldenYou},shouldFadeDomain:function(){return this.mergedConfig.mentionLinkFadeDomain}},(0,w.Se)(["mergedConfig"])),(0,w.rn)({currentUser:function(e){return e.users.currentUser}}))},z=(0,n(83744).Z)(P,[["render",function(e,t,n,f,g,v){var w=(0,o.up)("UserAvatar"),b=(0,o.up)("FAIcon"),y=(0,o.up)("UnicodeDomainIndicator"),_=(0,o.up)("UserPopover");return(0,o.wg)(),(0,o.iD)("span",s,[e.user?((0,o.wg)(),(0,o.j4)(_,{key:1,"user-id":e.user.id,disabled:!e.shouldShowTooltip},{default:(0,o.w5)((function(){return[e.user?((0,o.wg)(),(0,o.iD)("span",{key:0,class:(0,r.C_)(["new",e.classnames]),style:(0,r.j5)(e.style)},[(0,o._)("a",{class:(0,r.C_)(["short button-unstyled",{"-with-tooltip":e.shouldShowTooltip}]),href:e.url,onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.onClick&&e.onClick.apply(e,arguments)}),["prevent"]))},[e.shouldShowAvatar?((0,o.wg)(),(0,o.j4)(w,{key:0,class:"mention-avatar",user:e.user},null,8,["user"])):(0,o.kq)("",!0),(0,o._)("span",l,[e.useAtIcon?((0,o.wg)(),(0,o.j4)(b,{key:0,size:"sm",icon:"at",class:"at"})):(0,o.kq)("",!0),(0,o.Uk)((0,r.zw)(e.useAtIcon?"":"@"),1),(0,o._)("span",{class:"userName",innerHTML:e.userName},null,8,u),e.shouldShowFullUserName?((0,o.wg)(),(0,o.iD)("span",{key:1,class:(0,r.C_)(["serverName",{"-faded":e.shouldFadeDomain}]),innerHTML:"@"+e.serverName},null,10,d)):(0,o.kq)("",!0),e.shouldShowFullUserName?((0,o.wg)(),(0,o.j4)(y,{key:2,user:e.user},null,8,["user"])):(0,o.kq)("",!0)]),e.isYou&&e.shouldShowYous?((0,o.wg)(),(0,o.iD)("span",{key:1,class:(0,r.C_)({"-you":e.shouldBoldenYou})},(0,r.zw)(" "+e.$t("status.you")),3)):(0,o.kq)("",!0)],10,c),(0,o._)("span",p,[(0,o.Uk)(" @"),(0,o._)("span",{innerHTML:e.userName},null,8,m),(0,o._)("span",{innerHTML:"@"+e.serverName},null,8,h)],512)],6)):(0,o.kq)("",!0)]})),_:1},8,["user-id","disabled"])):((0,o.wg)(),(0,o.iD)("a",{key:0,href:e.url,class:"original",target:"_blank",innerHTML:e.content},null,8,a))])}]])},21268:(e,t,n)=>{"use strict";n.d(t,{d:()=>p,Z:()=>h});var o=n(66252),r=n(3577),i={class:"MentionsLine"},s={key:0,class:"extraMentions"},a={key:0,class:"fullExtraMentions"},c=n(4942),l=n(20460),u=n(989);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}var p=5;const m={name:"MentionsLine",props:{mentions:{required:!0,type:Array}},data:function(){return{expanded:!1}},components:{MentionLink:l.Z},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){(0,c.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mentionsComputed:function(){return this.mentions.slice(0,p)},extraMentions:function(){return this.mentions.slice(p)},manyMentions:function(){return this.extraMentions.length>0}},(0,u.Se)(["mergedConfig"])),methods:{toggleShowMore:function(){this.expanded=!this.expanded}}},h=(0,n(83744).Z)(m,[["render",function(e,t,n,c,l,u){var d=(0,o.up)("MentionLink");return(0,o.wg)(),(0,o.iD)("span",i,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.mentionsComputed,(function(e){return(0,o.wg)(),(0,o.j4)(d,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"])})),128)),e.manyMentions?((0,o.wg)(),(0,o.iD)("span",s,[e.expanded?((0,o.wg)(),(0,o.iD)("span",a,[(0,o.Uk)((0,r.zw)(" ")),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.extraMentions,(function(e){return(0,o.wg)(),(0,o.j4)(d,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"])})),128))])):(0,o.kq)("",!0),e.expanded?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-unstyled showMoreLess",onClick:t[0]||(t[0]=function(){return e.toggleShowMore&&e.toggleShowMore.apply(e,arguments)})},(0,r.zw)(e.$t("status.plus_more",{number:e.extraMentions.length})),1)),e.expanded?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-unstyled showMoreLess",onClick:t[1]||(t[1]=function(){return e.toggleShowMore&&e.toggleShowMore.apply(e,arguments)})},(0,r.zw)(e.$t("general.show_less")),1)):(0,o.kq)("",!0)])):(0,o.kq)("",!0)])}]])},48328:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var o=n(66252),r=n(3577),i=n(49963);const s={provide:{popoversZLayer:"modals"},props:{isOpen:{type:Boolean,default:!0},noBackground:{type:Boolean,default:!1}},computed:{classes:function(){return{"modal-background":!this.noBackground,open:this.isOpen}}}},a=(0,n(83744).Z)(s,[["render",function(e,t,n,s,a,c){var l=(0,o.Q2)("body-scroll-lock");return(0,o.wy)(((0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["modal-view",c.classes]),onClick:t[0]||(t[0]=(0,i.iM)((function(t){return e.$emit("backdropClicked")}),["self"]))},[(0,o.WI)(e.$slots,"default")],2)),[[i.F8,n.isOpen],[l,n.isOpen&&!n.noBackground]])}]])},50332:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Ae});var o=n(66252),r=n(3577),i=n(49963),s={key:0,class:"notifications-heading panel-heading -sticky"},a={class:"title"},c={key:0,class:"badge badge-notification unseen-count"},l={key:0,class:"rightside-button"},u=["title"],d={class:"panel-body",role:"feed"},p=(0,o._)("div",{class:"notification-overlay"},null,-1),m={class:"panel-footer"},h={key:0,class:"new-status-notification text-center faint"},f={class:"new-status-notification text-center"},g={key:2,class:"new-status-notification text-center"},v=n(4942),w=n(989),b={key:0},y={key:1},_={key:0,class:"Notification container -muted"},k=["href"],S={class:"notification-right"},j={class:"notification-details"},C={class:"name-and-action"},O={key:0},P=["title"],z={key:2},D={key:3},I={key:4},x={key:5},T={key:6},$={key:7},U={class:"emoji-reaction-emoji"},M={key:8},A={key:9},L={key:0,class:"timeago"},E=["title","aria-expanded"],F={key:1,class:"timeago"},R={class:"faint"},q=["title","aria-expanded"],N={key:0,class:"follow-text"},Z={key:0,style:{"white-space":"nowrap"}},W=["title"],B=["title"],H={key:1,class:"move-text"},V=n(38146),K=n(75245),G=n(48173),Y=n(20392),J=n(1840),Q={class:"Report"},X={class:"reported-user"},ee={class:"reporter"},te={class:"report-state"},ne=["value"],oe={key:0},re={class:"reported-status-heading"},ie={class:"reported-status-name"},se={key:1},ae=n(76990),ce=n(4493);const le={props:["reportId"],components:{Select:ae.Z,StatusContent:V.Z,Timeago:J.Z},computed:{report:function(){return this.$store.state.reports.reports[this.reportId]||{}},state:{get:function(){return this.report.state},set:function(e){this.setReportState(e)}}},methods:{generateUserProfileLink:function(e){return(0,ce.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},setReportState:function(e){return this.$store.dispatch("setReportState",{id:this.report.id,state:e})}}};var ue=n(83744);const de=(0,ue.Z)(le,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("router-link"),l=(0,o.up)("Select"),u=(0,o.up)("RichContent"),d=(0,o.up)("Timeago"),p=(0,o.up)("status-content");return(0,o.wg)(),(0,o.iD)("div",Q,[(0,o._)("div",X,[(0,o._)("span",null,(0,r.zw)(e.$t("report.reported_user")),1),(0,o.Wm)(c,{to:e.generateUserProfileLink(e.report.acct)},{default:(0,o.w5)((function(){return[(0,o.Uk)(" @"+(0,r.zw)(e.report.acct.screen_name),1)]})),_:1},8,["to"])]),(0,o._)("div",ee,[(0,o._)("span",null,(0,r.zw)(e.$t("report.reporter")),1),(0,o.Wm)(c,{to:e.generateUserProfileLink(e.report.actor)},{default:(0,o.w5)((function(){return[(0,o.Uk)(" @"+(0,r.zw)(e.report.actor.screen_name),1)]})),_:1},8,["to"])]),(0,o._)("div",te,[(0,o._)("span",null,(0,r.zw)(e.$t("report.state")),1),(0,o.Wm)(l,{id:e.report-e.state,modelValue:e.state,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.state=t}),class:"form-control"},{default:(0,o.w5)((function(){return[((0,o.wg)(),(0,o.iD)(o.HY,null,(0,o.Ko)(["open","closed","resolved"],(function(t){return(0,o._)("option",{key:t,value:t},(0,r.zw)(e.$t("report.state_"+t)),9,ne)})),64))]})),_:1},8,["id","modelValue"])]),(0,o.Wm)(u,{class:"report-content",html:e.report.content,emoji:[]},null,8,["html"]),e.report.statuses.length?((0,o.wg)(),(0,o.iD)("div",oe,[(0,o._)("small",null,(0,r.zw)(e.$t("report.reported_statuses")),1),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.report.statuses,(function(e){return(0,o.wg)(),(0,o.j4)(c,{key:e.id,to:{name:"conversation",params:{id:e.id}},class:"reported-status"},{default:(0,o.w5)((function(){return[(0,o._)("div",re,[(0,o._)("span",ie,(0,r.zw)(e.user.name),1),(0,o.Wm)(d,{time:e.created_at,"auto-update":240,class:"faint"},null,8,["time"])]),(0,o.Wm)(p,{status:e},null,8,["status"])]})),_:2},1032,["to"])})),128))])):(0,o.kq)("",!0),e.report.notes.length?((0,o.wg)(),(0,o.iD)("div",se,[(0,o._)("small",null,(0,r.zw)(e.$t("report.notes")),1),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.report.notes,(function(e){return(0,o.wg)(),(0,o.iD)("div",{key:e.id,class:"note"},[(0,o._)("span",null,(0,r.zw)(e.content),1),(0,o.Wm)(d,{time:e.created_at,"auto-update":240,class:"faint"},null,8,["time"])])})),128))])):(0,o.kq)("",!0)])}]]);var pe=n(12061),me=n(92820),he=n(22588),fe=n(1447),ge=n(52230),ve=n(95052),we=n(9382),be=n(84131);function ye(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}we.vI.add(be.LEp,be.NBC,be.Tab,be.x5v,be.FKd,be.ILF,be.Aq,be.gmr,be.TTL,be.V9$);var _e={data:function(){return{statusExpanded:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter,unmuted:!1,showingApproveConfirmDialog:!1,showingDenyConfirmDialog:!1}},props:["notification"],components:{StatusContent:V.Z,UserAvatar:G.default,UserCard:Y.Z,Timeago:J.Z,Status:K.default,Report:de,RichContent:me.Z,UserPopover:he.default,UserLink:pe.Z,ConfirmModal:fe.Z},methods:{toggleStatusExpanded:function(){this.statusExpanded=!this.statusExpanded},generateUserProfileLink:function(e){return(0,ce.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},getUser:function(e){return this.$store.state.users.usersObject[e.from_profile.id]},toggleMute:function(){this.unmuted=!this.unmuted},showApproveConfirmDialog:function(){this.showingApproveConfirmDialog=!0},hideApproveConfirmDialog:function(){this.showingApproveConfirmDialog=!1},showDenyConfirmDialog:function(){this.showingDenyConfirmDialog=!0},hideDenyConfirmDialog:function(){this.showingDenyConfirmDialog=!1},approveUser:function(){this.shouldConfirmApprove?this.showApproveConfirmDialog():this.doApprove()},doApprove:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user),this.$store.dispatch("markSingleNotificationAsSeen",{id:this.notification.id}),this.$store.dispatch("updateNotification",{id:this.notification.id,updater:function(e){e.type="follow"}}),this.hideApproveConfirmDialog()},denyUser:function(){this.shouldConfirmDeny?this.showDenyConfirmDialog():this.doDeny()},doDeny:function(){var e=this;this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:e.notification.id}),e.$store.dispatch("removeFollowRequest",e.user)})),this.hideDenyConfirmDialog()}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ye(Object(n),!0).forEach((function(t){(0,v.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ye(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({userClass:function(){return(0,ve.M)(this.notification.from_profile)},userStyle:function(){var e=this.$store.getters.mergedConfig.highlight,t=this.notification.from_profile;return(0,ve.q)(e[t.screen_name])},user:function(){return this.$store.getters.findUser(this.notification.from_profile.id)},userProfileLink:function(){return this.generateUserProfileLink(this.user)},targetUser:function(){return this.$store.getters.findUser(this.notification.target.id)},targetUserProfileLink:function(){return this.generateUserProfileLink(this.targetUser)},needMute:function(){return this.$store.getters.relationship(this.user.id).muting},isStatusNotification:function(){return(0,ge.Gr)(this.notification.type)},mergedConfig:function(){return this.$store.getters.mergedConfig},shouldConfirmApprove:function(){return this.mergedConfig.modalOnApproveFollow},shouldConfirmDeny:function(){return this.mergedConfig.modalOnDenyFollow}},(0,w.rn)({currentUser:function(e){return e.users.currentUser}}))};const ke=_e,Se=(0,ue.Z)(ke,[["render",function(e,t,n,s,a,c){var l=(0,o.up)("Status"),u=(0,o.up)("user-link"),d=(0,o.up)("FAIcon"),p=(0,o.up)("UserAvatar"),m=(0,o.up)("UserPopover"),h=(0,o.up)("RichContent"),f=(0,o.up)("i18n-t"),g=(0,o.up)("Timeago"),v=(0,o.up)("router-link"),w=(0,o.up)("Report"),V=(0,o.up)("StatusContent"),K=(0,o.up)("confirm-modal");return"mention"===e.notification.type?((0,o.wg)(),(0,o.iD)("article",b,[(0,o.Wm)(l,{class:"Notification",compact:!0,statusoid:e.notification.status},null,8,["statusoid"])])):((0,o.wg)(),(0,o.iD)("article",y,[e.needMute&&!e.unmuted?((0,o.wg)(),(0,o.iD)("div",_,[(0,o._)("small",null,[(0,o.Wm)(u,{user:e.notification.from_profile,at:!1},null,8,["user"])]),(0,o._)("button",{class:"button-unstyled unmute",onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.toggleMute&&e.toggleMute.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(d,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})])])):((0,o.wg)(),(0,o.iD)("div",{key:1,class:(0,r.C_)(["Notification non-mention",[e.userClass,{highlighted:e.userStyle},"-type--"+e.notification.type]]),style:(0,r.j5)([e.userStyle])},[(0,o._)("a",{class:"avatar-container",href:e.$router.resolve(e.userProfileLink).href,onClick:t[1]||(t[1]=(0,i.iM)((function(){}),["prevent"]))},[(0,o.Wm)(m,{"user-id":e.notification.from_profile.id,"overlay-centers":!0},{default:(0,o.w5)((function(){return[(0,o.Wm)(p,{class:"post-avatar",bot:e.botIndicator,compact:!0,"better-shadow":e.betterShadow,user:e.notification.from_profile},null,8,["bot","better-shadow","user"])]})),_:1},8,["user-id"])],8,k),(0,o._)("div",S,[(0,o._)("span",j,[(0,o._)("div",C,[e.notification.from_profile.name_html?((0,o.wg)(),(0,o.iD)("bdi",O,[(0,o.Wm)(h,{class:"username",title:"@"+e.notification.from_profile.screen_name_ui,html:e.notification.from_profile.name_html,emoji:e.notification.from_profile.emoji},null,8,["title","html","emoji"])])):((0,o.wg)(),(0,o.iD)("span",{key:1,class:"username",title:"@"+e.notification.from_profile.screen_name_ui},(0,r.zw)(e.notification.from_profile.name),9,P)),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),"like"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",z,[(0,o.Wm)(d,{class:"type-icon",icon:"star"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.favorited_you")),1)])):(0,o.kq)("",!0),"repeat"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",D,[(0,o.Wm)(d,{class:"type-icon",icon:"retweet",title:e.$t("tool_tip.repeat")},null,8,["title"]),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.repeated_you")),1)])):(0,o.kq)("",!0),"follow"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",I,[(0,o.Wm)(d,{class:"type-icon",icon:"user-plus"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.followed_you")),1)])):(0,o.kq)("",!0),"follow_request"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",x,[(0,o.Wm)(d,{class:"type-icon",icon:"user"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.follow_request")),1)])):(0,o.kq)("",!0),"move"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",T,[(0,o.Wm)(d,{class:"type-icon",icon:"suitcase-rolling"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.migrated_to")),1)])):(0,o.kq)("",!0),"pleroma:emoji_reaction"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",$,[(0,o._)("small",null,[(0,o.Wm)(f,{scope:"global",keypath:"notifications.reacted_with"},{default:(0,o.w5)((function(){return[(0,o._)("span",U,(0,r.zw)(e.notification.emoji),1)]})),_:1})])])):(0,o.kq)("",!0),"pleroma:report"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",M,[(0,o._)("small",null,(0,r.zw)(e.$t("notifications.submitted_report")),1)])):(0,o.kq)("",!0),"poll"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",A,[(0,o.Wm)(d,{class:"type-icon",icon:"poll-h"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.poll_ended")),1)])):(0,o.kq)("",!0)]),e.isStatusNotification?((0,o.wg)(),(0,o.iD)("div",L,[e.notification.status?((0,o.wg)(),(0,o.j4)(v,{key:0,to:{name:"conversation",params:{id:e.notification.status.id}},class:"timeago-link faint-link"},{default:(0,o.w5)((function(){return[(0,o.Wm)(g,{time:e.notification.created_at,"auto-update":240},null,8,["time"])]})),_:1},8,["to"])):(0,o.kq)("",!0),(0,o._)("button",{class:"button-unstyled expand-icon",onClick:t[2]||(t[2]=(0,i.iM)((function(){return e.toggleStatusExpanded&&e.toggleStatusExpanded.apply(e,arguments)}),["prevent"])),title:e.$t("tool_tip.toggle_expand"),"aria-expanded":e.statusExpanded},[(0,o.Wm)(d,{class:"fa-scale-110","fixed-width":"",icon:e.statusExpanded?"compress-alt":"expand-alt"},null,8,["icon"])],8,E)])):((0,o.wg)(),(0,o.iD)("div",F,[(0,o._)("span",R,[(0,o.Wm)(g,{time:e.notification.created_at,"auto-update":240},null,8,["time"])])])),e.needMute?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-unstyled",title:e.$t("tool_tip.toggle_mute"),"aria-expanded":!e.unmuted,onClick:t[3]||(t[3]=(0,i.iM)((function(){return e.toggleMute&&e.toggleMute.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(d,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})],8,q)):(0,o.kq)("",!0)]),"follow"===e.notification.type||"follow_request"===e.notification.type?((0,o.wg)(),(0,o.iD)("div",N,[(0,o.Wm)(u,{class:"follow-name",user:e.notification.from_profile},null,8,["user"]),"follow_request"===e.notification.type?((0,o.wg)(),(0,o.iD)("div",Z,[(0,o._)("button",{class:"button-unstyled",title:e.$t("tool_tip.accept_follow_request"),onClick:t[4]||(t[4]=function(t){return e.approveUser()})},[(0,o.Wm)(d,{icon:"check",class:"fa-scale-110 fa-old-padding follow-request-accept"})],8,W),(0,o._)("button",{class:"button-unstyled",title:e.$t("tool_tip.reject_follow_request"),onClick:t[5]||(t[5]=function(t){return e.denyUser()})},[(0,o.Wm)(d,{icon:"times",class:"fa-scale-110 fa-old-padding follow-request-reject"})],8,B)])):(0,o.kq)("",!0)])):"move"===e.notification.type?((0,o.wg)(),(0,o.iD)("div",H,[(0,o.Wm)(u,{user:e.notification.target},null,8,["user"])])):"pleroma:report"===e.notification.type?((0,o.wg)(),(0,o.j4)(w,{key:2,"report-id":e.notification.report.id},null,8,["report-id"])):((0,o.wg)(),(0,o.j4)(V,{key:3,class:(0,r.C_)({faint:!e.statusExpanded}),compact:!e.statusExpanded,status:e.notification.action},null,8,["class","compact","status"]))])],6)),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingApproveConfirmDialog?((0,o.wg)(),(0,o.j4)(K,{key:0,title:e.$t("user_card.approve_confirm_title"),"confirm-text":e.$t("user_card.approve_confirm_accept_button"),"cancel-text":e.$t("user_card.approve_confirm_cancel_button"),onAccepted:e.doApprove,onCancelled:e.hideApproveConfirmDialog},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("user_card.approve_confirm",{user:e.user.screen_name_ui})),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0),e.showingDenyConfirmDialog?((0,o.wg)(),(0,o.j4)(K,{key:1,title:e.$t("user_card.deny_confirm_title"),"confirm-text":e.$t("user_card.deny_confirm_accept_button"),"cancel-text":e.$t("user_card.deny_confirm_cancel_button"),onAccepted:e.doDeny,onCancelled:e.hideDenyConfirmDialog},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("user_card.deny_confirm",{user:e.user.screen_name_ui})),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)]))]))}]]);var je={class:"dropdown-menu"},Ce={class:"filter-trigger-button button-unstyled"},Oe=n(91447);function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ze(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){(0,v.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}we.vI.add(be.G_j);const De={components:{Popover:Oe.default},computed:{filters:function(){return this.$store.getters.mergedConfig.notificationVisibility}},methods:{toggleNotificationFilter:function(e){this.$store.dispatch("setOption",{name:"notificationVisibility",value:ze(ze({},this.filters),{},(0,v.Z)({},e,!this.filters[e]))})}}},Ie=(0,ue.Z)(De,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("FAIcon"),l=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(l,{trigger:"click",class:"NotificationFilters",placement:"bottom","bound-to":{x:"container"}},{content:(0,o.w5)((function(){return[(0,o._)("div",je,[(0,o._)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=function(e){return a.toggleNotificationFilter("likes")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.likes}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_likes")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=function(e){return a.toggleNotificationFilter("repeats")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.repeats}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_repeats")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=function(e){return a.toggleNotificationFilter("follows")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.follows}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_follows")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=function(e){return a.toggleNotificationFilter("mentions")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.mentions}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_mentions")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=function(e){return a.toggleNotificationFilter("emojiReactions")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.emojiReactions}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_emoji_reactions")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=function(e){return a.toggleNotificationFilter("moves")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.moves}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_moves")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=function(e){return a.toggleNotificationFilter("polls")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.polls}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_polls")),1)])])]})),trigger:(0,o.w5)((function(){return[(0,o._)("button",Ce,[(0,o.Wm)(c,{icon:"filter"})])]})),_:1})}]]);var xe=n(15568),Te=n(49753);function $e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}we.vI.add(be.IJ7,be.FPD,be.Kl4);const Ue={components:{Notification:Se,NotificationFilters:Ie},props:{minimalMode:Boolean,filterMode:Array,disableTeleport:Boolean},data:function(){return{showScrollTop:!1,bottomedOut:!1,seenToDisplayCount:30}},provide:function(){var e=this;return{popoversZLayer:(0,o.Fl)((function(){return e.popoversZLayer}))}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$e(Object(n),!0).forEach((function(t){(0,v.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$e(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mainClass:function(){return this.minimalMode?"":"panel panel-default"},notifications:function(){return(0,ge.Bt)(this.$store)},error:function(){return this.$store.state.statuses.notifications.error},unseenNotifications:function(){return(0,ge.Km)(this.$store)},filteredNotifications:function(){return(0,ge.G2)(this.$store,this.filterMode)},unseenCount:function(){return this.unseenNotifications.length},unseenCountTitle:function(){return this.unseenCount+this.unreadChatCount+this.unreadAnnouncementCount},loading:function(){return this.$store.state.statuses.notifications.loading},noHeading:function(){var e=this.$store.state.interface.layoutType;return this.minimalMode||"mobile"===e},teleportTarget:function(){return{wide:"#notifs-column",mobile:"#mobile-notifications"}[this.$store.state.interface.layoutType]||"#notifs-sidebar"},popoversZLayer:function(){return"mobile"===this.$store.state.interface.layoutType?"navbar":null},notificationsToDisplay:function(){return this.filteredNotifications.slice(0,this.unseenCount+this.seenToDisplayCount)},noSticky:function(){return this.$store.getters.mergedConfig.disableStickyHeaders}},(0,w.Se)(["unreadChatCount","unreadAnnouncementCount"])),mounted:function(){this.scrollerRef=this.$refs.root.closest(".column.-scrollable"),this.scrollerRef||(this.scrollerRef=this.$refs.root.closest(".mobile-notifications")),this.scrollerRef||(this.scrollerRef=this.$refs.root.closest(".column.main")),this.scrollerRef.addEventListener("scroll",this.updateScrollPosition)},unmounted:function(){this.scrollerRef&&this.scrollerRef.removeEventListener("scroll",this.updateScrollPosition)},watch:{unseenCountTitle:function(e){e>0?(Te.Z.drawFaviconBadge(),this.$store.dispatch("setPageTitle","(".concat(e,")"))):(Te.Z.clearFaviconBadge(),this.$store.dispatch("setPageTitle",""))},teleportTarget:function(){var e=this;this.$nextTick((function(){e.scrollerRef.removeEventListener("scroll",e.updateScrollPosition),e.scrollerRef=e.$refs.root.closest(".column.-scrollable"),e.scrollerRef||(e.scrollerRef=e.$refs.root.closest(".mobile-notifications")),e.scrollerRef.addEventListener("scroll",e.updateScrollPosition),e.updateScrollPosition()}))}},methods:{scrollToTop:function(){this.scrollerRef.scrollTo({top:this.$refs.root.offsetTop})},updateScrollPosition:function(){this.showScrollTop=this.$refs.root.offsetTop<this.scrollerRef.scrollTop},markAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen"),this.seenToDisplayCount=30},fetchOlderNotifications:function(){var e=this;if(!this.loading){var t=this.filteredNotifications.length-this.unseenCount;if(this.seenToDisplayCount<t)this.seenToDisplayCount=Math.min(this.seenToDisplayCount+20,t);else{this.seenToDisplayCount>t&&(this.seenToDisplayCount=t);var n=this.$store,o=n.state.users.currentUser.credentials;n.commit("setNotificationsLoading",{value:!0}),xe.Z.fetchAndUpdate({store:n,credentials:o,older:!0}).then((function(t){n.commit("setNotificationsLoading",{value:!1}),0===t.length&&(e.bottomedOut=!0),e.seenToDisplayCount+=t.length}))}}}}},Me=(0,ue.Z)(Ue,[["render",function(e,t,n,v,w,b){var y=(0,o.up)("FAIcon"),_=(0,o.up)("FALayers"),k=(0,o.up)("NotificationFilters"),S=(0,o.up)("notification");return(0,o.wg)(),(0,o.j4)(o.lR,{disabled:e.minimalMode||e.disableTeleport,to:e.teleportTarget},[((0,o.wg)(),(0,o.j4)((0,o.LL)(e.noHeading?"div":"aside"),{ref:"root",class:(0,r.C_)([{minimal:e.minimalMode},"Notifications"])},{default:(0,o.w5)((function(){return[(0,o._)("div",{class:(0,r.C_)(e.mainClass)},[e.noHeading?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",s,[(0,o._)("div",a,[(0,o.Uk)((0,r.zw)(e.$t("notifications.notifications"))+" ",1),e.unseenCount?((0,o.wg)(),(0,o.iD)("span",c,(0,r.zw)(e.unseenCount),1)):(0,o.kq)("",!0)]),e.showScrollTop?((0,o.wg)(),(0,o.iD)("div",l,[(0,o._)("button",{class:"button-unstyled scroll-to-top-button",type:"button",title:e.$t("general.scroll_to_top"),onClick:t[0]||(t[0]=function(){return e.scrollToTop&&e.scrollToTop.apply(e,arguments)})},[(0,o.Wm)(_,{class:"fa-scale-110 fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(y,{icon:"arrow-up"}),(0,o.Wm)(y,{icon:"minus",transform:"up-7"})]})),_:1})],8,u)])):(0,o.kq)("",!0),e.unseenCount?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-default read-button",type:"button",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.markAsSeen&&e.markAsSeen.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.$t("notifications.read")),1)):(0,o.kq)("",!0),(0,o.Wm)(k,{class:"rightside-button"})])),(0,o._)("div",d,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.notificationsToDisplay,(function(t){return(0,o.wg)(),(0,o.iD)("div",{key:t.id,role:"listitem",class:(0,r.C_)(["notification",{unseen:!e.minimalMode&&!t.seen}])},[p,(0,o.Wm)(S,{notification:t},null,8,["notification"])],2)})),128))]),(0,o._)("div",m,[e.bottomedOut?((0,o.wg)(),(0,o.iD)("div",h,(0,r.zw)(e.$t("notifications.no_more_notifications")),1)):e.loading?((0,o.wg)(),(0,o.iD)("div",g,[(0,o.Wm)(y,{icon:"circle-notch",spin:"",size:"lg"})])):((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-unstyled -link -fullwidth",onClick:t[2]||(t[2]=(0,i.iM)((function(t){return e.fetchOlderNotifications()}),["prevent"]))},[(0,o._)("div",f,(0,r.zw)(e.minimalMode?e.$t("interactions.load_older"):e.$t("notifications.load_older")),1)]))])],2)]})),_:1},8,["class"]))],8,["disabled","to"])}]]),Ae=Me},29187:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=n(66252),r=n(3577),i={class:"panel-loading"},s={class:"loading-text"},a=n(9382),c=n(84131);a.vI.add(c.IJ7);const l={},u=(0,n(83744).Z)(l,[["render",function(e,t,n,a,c,l){var u=(0,o.up)("FAIcon");return(0,o.wg)(),(0,o.iD)("div",i,[(0,o._)("span",s,[(0,o.Wm)(u,{icon:"circle-notch",spin:"",size:"3x"}),(0,o.Uk)(" "+(0,r.zw)(e.$t("general.loading")),1)])])}]])},91447:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var o=n(66252),r=n(49963),i=n(3577);const s={name:"Popover",props:{trigger:String,placement:String,boundTo:Object,boundToSelector:String,margin:Object,offset:Object,popoverClass:String,removePadding:Boolean,disabled:Boolean,overlayCenters:Boolean,overlayCentersSelector:String,stayOnClick:Boolean,triggerAttrs:{type:Object,default:{}}},inject:["popoversZLayer"],data:function(){return{anchorEl:null,teleport:!1,lockReEntry:!1,hidden:!0,styles:{},oldSize:{width:0,height:0},scrollable:null,graceTimeout:null,parentPopover:null,disableClickOutside:!1,childrenShown:new Set}},methods:{setAnchorEl:function(e){this.anchorEl=e,this.updateStyles()},containerBoundingClientRect:function(){return(this.boundToSelector?this.$el.closest(this.boundToSelector):this.$el.offsetParent).getBoundingClientRect()},updateStyles:function(){if(this.hidden)this.styles={};else{var e=this.anchorEl||this.$refs.trigger&&this.$refs.trigger.children[0]||this.$el,t=e.offsetHeight||e.clientHeight,n=e.offsetWidth||e.clientWidth,o=e.getBoundingClientRect(),r=getComputedStyle(e),i=parseFloat(r.paddingTop),s=parseFloat(r.paddingBottom),a=parseFloat(r.paddingRight),c=parseFloat(r.paddingLeft),l=o.left+.5*n,u=o.top+.5*t,d=this.$refs.content,p=this.overlayCenters?this.$refs.content.querySelector(this.overlayCentersSelector):null,m=this.boundTo&&("container"===this.boundTo.x||"container"===this.boundTo.y)&&this.containerBoundingClientRect(),h=this.margin||{},f=this.boundTo&&"container"===this.boundTo.x?{min:m.left+(h.left||0),max:m.right-(h.right||0)}:{min:0+(h.left||10),max:window.innerWidth-(h.right||10)},g=this.boundTo&&"container"===this.boundTo.y?{min:m.top+(h.top||0),max:m.bottom-(h.bottom||0)}:{min:0+(h.top||50),max:window.innerHeight-(h.bottom||5)},v=0,w=0;if(p){var b=d.getBoundingClientRect(),y=p.getBoundingClientRect(),_=y.left-b.left,k=y.top-b.top;v=-_-.5*p.offsetWidth,w=-k-.5*p.offsetHeight}else v=-.5*d.offsetWidth,w=-.5*d.offsetHeight;var S=l+v,j=S+d.offsetWidth,C=u+w,O=C+d.offsetHeight;S<f.min&&(v+=f.min-S),j>f.max&&(v-=j-f.max),C<g.min&&(w+=g.min-C),O>g.max&&(w-=O-g.max);var P=0,z=0;if(p)P=l+v,z=u+w;else if("right"!==this.placement&&"left"!==this.placement){var D="bottom"!==this.placement,I=u-.5*t+(this.removePadding?i:0),x=u+.5*t-(this.removePadding?s:0);x+d.offsetHeight>g.max&&(D=!0),I-d.offsetHeight<g.min&&(D=!1);var T=this.offset&&this.offset.y||0;z=D?I-T-d.offsetHeight:x+T,P=l+v+(this.offset&&this.offset.x||0)}else{var $="left"!==this.placement,U=l-.5*n+(this.removePadding?a:0),M=l+.5*n-(this.removePadding?c:0);M+d.offsetWidth>f.max&&($=!0),U-d.offsetWidth<f.min&&($=!1);var A=this.offset&&this.offset.x||0;P=$?U-A-d.offsetWidth:M+A,z=u+w+(this.offset&&this.offset.y||0)}this.styles={left:"".concat(Math.round(P),"px"),top:"".concat(Math.round(z),"px")},this.popoversZLayer&&(this.styles["--ZI_popover_override"]="var(--ZI_".concat(this.popoversZLayer,"_popovers)")),m&&(this.styles.maxWidth="".concat(Math.round(m.width),"px"))}},showPopover:function(){var e=this;if(!this.disabled){this.disableClickOutside=!0,setTimeout((function(){e.disableClickOutside=!1}),0);var t=this.hidden;this.hidden=!1,this.parentPopover&&this.parentPopover.onChildPopoverState(this,!0),("click"===this.trigger||this.stayOnClick)&&document.addEventListener("click",this.onClickOutside),this.scrollable.addEventListener("scroll",this.onScroll),this.scrollable.addEventListener("resize",this.onResize),this.$nextTick((function(){t&&e.$emit("show"),e.updateStyles()}))}},hidePopover:function(){this.disabled||(this.hidden||this.$emit("close"),this.hidden=!0,this.parentPopover&&this.parentPopover.onChildPopoverState(this,!1),"click"===this.trigger&&document.removeEventListener("click",this.onClickOutside),this.scrollable.removeEventListener("scroll",this.onScroll),this.scrollable.removeEventListener("resize",this.onResize))},onMouseenter:function(e){"hover"===this.trigger&&(this.lockReEntry=!1,clearTimeout(this.graceTimeout),this.graceTimeout=null,this.showPopover())},onMouseleave:function(e){var t=this;"hover"===this.trigger&&0===this.childrenShown.size&&(this.graceTimeout=setTimeout((function(){return t.hidePopover()}),1))},onMouseenterContent:function(e){"hover"!==this.trigger||this.lockReEntry||(this.lockReEntry=!0,clearTimeout(this.graceTimeout),this.graceTimeout=null,this.showPopover())},onMouseleaveContent:function(e){var t=this;"hover"===this.trigger&&0===this.childrenShown.size&&(this.graceTimeout=setTimeout((function(){return t.hidePopover()}),1))},onClick:function(e){"click"===this.trigger&&(this.hidden?this.showPopover():this.hidePopover())},onClickOutside:function(e){this.disableClickOutside||this.hidden||this.$refs.content&&this.$refs.content.contains(e.target)||this.$el.contains(e.target)||this.childrenShown.size>0||(this.hidePopover(),this.parentPopover&&this.parentPopover.onClickOutside(e))},onScroll:function(e){this.updateStyles()},onResize:function(e){this.updateStyles()},onChildPopoverState:function(e,t){t?this.childrenShown.add(e):this.childrenShown.delete(e)}},updated:function(){var e=this.$refs.content;e&&(this.oldSize.width===e.offsetWidth&&this.oldSize.height===e.offsetHeight||(this.updateStyles(),this.oldSize={width:e.offsetWidth,height:e.offsetHeight}))},mounted:function(){this.teleport=!0;var e=this.$refs.trigger.closest(".column.-scrollable")||this.$refs.trigger.closest(".mobile-notifications");e||(e=window),this.scrollable=e;for(var t=this.$parent;t&&"Popover"!==t.$.type.name;)t=t.$parent;this.parentPopover=t},beforeUnmount:function(){this.hidePopover()}},a=(0,n(83744).Z)(s,[["render",function(e,t,n,s,a,c){return(0,o.wg)(),(0,o.iD)("span",{onMouseenter:t[4]||(t[4]=function(){return e.onMouseenter&&e.onMouseenter.apply(e,arguments)}),onMouseleave:t[5]||(t[5]=function(){return e.onMouseleave&&e.onMouseleave.apply(e,arguments)})},[(0,o._)("button",(0,o.dG)({ref:"trigger",class:"button-unstyled popover-trigger-button",type:"button"},e.triggerAttrs,{onClick:t[0]||(t[0]=function(){return e.onClick&&e.onClick.apply(e,arguments)})}),[(0,o.WI)(e.$slots,"trigger")],16),((0,o.wg)(),(0,o.j4)(o.lR,{disabled:!e.teleport,to:"#popovers"},[(0,o.Wm)(r.uT,{name:"fade"},{default:(0,o.w5)((function(){return[e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",{key:0,ref:"content",style:(0,i.j5)(e.styles),class:(0,i.C_)(["popover",e.popoverClass||"popover-default"]),onMouseenter:t[1]||(t[1]=function(){return e.onMouseenterContent&&e.onMouseenterContent.apply(e,arguments)}),onMouseleave:t[2]||(t[2]=function(){return e.onMouseleaveContent&&e.onMouseleaveContent.apply(e,arguments)}),onClick:t[3]||(t[3]=function(){return e.onClickContent&&e.onClickContent.apply(e,arguments)})},[(0,o.WI)(e.$slots,"content",{class:"popover-inner",close:e.hidePopover})],38))]})),_:3})],8,["disabled"]))],32)}]])},58508:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Re});var o=n(66252),r=n(49963),i=n(3577),s={ref:"form",class:"post-status-form"},a={class:"form-group"},c={key:1,class:"visibility-notice notice-dismissible"},l=["title"],u={key:2,class:"visibility-notice notice-dismissible"},d=["title"],p={key:3,class:"visibility-notice notice-dismissible"},m=["title"],h={key:4,class:"visibility-notice"},f={key:0},g={key:1},v={key:5,class:"visibility-notice edit-warning"},w={key:6,class:"preview-heading faint"},b={class:"preview-spinner"},y={key:7,class:"preview-container"},_={key:0,class:"preview-status"},k={key:1,class:"preview-status preview-error"},S=["placeholder","disabled"],j=["placeholder","disabled"],C={key:9,class:"visibility-tray"},O={key:1,class:"text-format"},P=["value"],z={key:2,class:"text-format"},D={class:"only-format"},I={ref:"bottom",class:"form-bottom"},x={class:"form-bottom-left"},T=["title"],$=["title"],U={key:0,disabled:"",class:"btn button-default"},M={key:1,disabled:"",class:"btn button-default"},A=["disabled"],L={key:1,class:"alert error"},E={key:3,class:"upload_settings"},F=n(15861),R=n(4942),q=n(93433),N=n(23279),Z=n.n(N),W=n(45578),B=n.n(W),H=n(35161),V=n.n(H),K=n(43063),G=n.n(K),Y=n(64687),J=n.n(Y),Q=n(7257),X=["title"],ee=["disabled"],te=n(65079),ne=n(9382),oe=n(84131);function re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}ne.vI.add(oe.cf$,oe.IJ7);const ie={data:function(){return{uploadCount:0,uploadReady:!0}},computed:{uploading:function(){return this.uploadCount>0}},methods:{uploadFile:function(e){var t=this,n=this.$store;if(e.size>n.state.instance.uploadlimit){var o=te.Z.fileSizeFormat(e.size),r=te.Z.fileSizeFormat(n.state.instance.uploadlimit);t.$emit("upload-failed","file_too_big",{filesize:o.num,filesizeunit:o.unit,allowedsize:r.num,allowedsizeunit:r.unit})}else{var i=new FormData;i.append("file",e),t.$emit("uploading"),t.uploadCount++,Q.Z.uploadMedia({store:n,formData:i}).then((function(e){t.$emit("uploaded",e),t.decreaseUploadCount()}),(function(e){console.error("Error uploading file",e),t.$emit("upload-failed","default"),t.decreaseUploadCount()}))}},decreaseUploadCount:function(){this.uploadCount--,0===this.uploadCount&&this.$emit("all-uploaded")},clearFile:function(){var e=this;this.uploadReady=!1,this.$nextTick((function(){e.uploadReady=!0}))},multiUpload:function(e){var t,n=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return re(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?re(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;this.uploadFile(o)}}catch(e){n.e(e)}finally{n.f()}},change:function(e){var t=e.target;this.multiUpload(t.files)}},props:["dropFiles","disabled"],watch:{dropFiles:function(e){this.uploading||this.multiUpload(e)}}};var se=n(83744);const ae=(0,se.Z)(ie,[["render",function(e,t,n,r,s,a){var c=(0,o.up)("FAIcon");return(0,o.wg)(),(0,o.iD)("label",{class:(0,i.C_)(["media-upload",{disabled:e.disabled}]),title:e.$t("tool_tip.media_upload")},[e.uploading?((0,o.wg)(),(0,o.j4)(c,{key:0,class:"progress-icon",icon:"circle-notch",spin:""})):(0,o.kq)("",!0),e.uploading?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(c,{key:1,class:"new-icon",icon:"upload"})),e.uploadReady?((0,o.wg)(),(0,o.iD)("input",{key:2,class:"hidden-input-file",disabled:e.disabled,type:"file",multiple:"true",onChange:t[0]||(t[0]=function(){return e.change&&e.change.apply(e,arguments)})},null,40,ee)):(0,o.kq)("",!0)],10,X)}]]);var ce=n(54110),le=n(86319),ue={key:0,class:"poll-form"},de={class:"input-container"},pe=["id","onUpdate:modelValue","placeholder","maxlength","onKeydown"],me=["onClick"],he={class:"poll-type-expiry"},fe=["title"],ge={value:"single"},ve={value:"multiple"},we=["title"],be=["min","max"],ye=["value"],_e=n(44908),ke=n.n(_e),Se=n(27483),je=n(76990);ne.vI.add(oe.NBC,oe.r8p);const Ce={components:{Select:je.Z},name:"PollForm",props:["visible"],data:function(){return{pollType:"single",options:["",""],expiryAmount:10,expiryUnit:"minutes"}},computed:{pollLimits:function(){return this.$store.state.instance.pollLimits},maxOptions:function(){return this.pollLimits.max_options},maxLength:function(){return this.pollLimits.max_option_chars},expiryUnits:function(){var e=this,t=this.convertExpiryFromUnit;return["minutes","hours","days"].filter((function(n){return e.pollLimits.max_expiration>=t(n,1)}))},minExpirationInCurrentUnit:function(){return Math.ceil(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.min_expiration))},maxExpirationInCurrentUnit:function(){return Math.floor(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.max_expiration))}},methods:{clear:function(){this.pollType="single",this.options=["",""],this.expiryAmount=10,this.expiryUnit="minutes"},nextOption:function(e){var t=this.$el.querySelector("#poll-".concat(e+1));t?t.focus():this.addOption()&&this.$nextTick((function(){this.nextOption(e)}))},addOption:function(){return this.options.length<this.maxOptions&&(this.options.push(""),!0)},deleteOption:function(e,t){this.options.length>2&&(this.options.splice(e,1),this.updatePollToParent())},convertExpiryToUnit:function(e,t){return Se.dX(e,t)},convertExpiryFromUnit:function(e,t){return Se.cC(e,t)},expiryAmountChange:function(){this.expiryAmount=Math.max(this.minExpirationInCurrentUnit,this.expiryAmount),this.expiryAmount=Math.min(this.maxExpirationInCurrentUnit,this.expiryAmount),this.updatePollToParent()},updatePollToParent:function(){var e=this.convertExpiryFromUnit(this.expiryUnit,this.expiryAmount),t=ke()(this.options.filter((function(e){return""!==e})));t.length<2?this.$emit("update-poll",{error:this.$t("polls.not_enough_options")}):this.$emit("update-poll",{options:t,multiple:"multiple"===this.pollType,expiresIn:e})}}},Oe=(0,se.Z)(Ce,[["render",function(e,t,n,s,a,c){var l=(0,o.up)("FAIcon"),u=(0,o.up)("Select");return e.visible?((0,o.wg)(),(0,o.iD)("div",ue,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.options,(function(n,i){return(0,o.wg)(),(0,o.iD)("div",{key:i,class:"poll-option"},[(0,o._)("div",de,[(0,o.wy)((0,o._)("input",{id:"poll-".concat(i),"onUpdate:modelValue":function(t){return e.options[i]=t},size:"1",class:"poll-option-input",type:"text",placeholder:e.$t("polls.option"),maxlength:e.maxLength,onChange:t[0]||(t[0]=function(){return e.updatePollToParent&&e.updatePollToParent.apply(e,arguments)}),onKeydown:(0,r.D2)((0,r.iM)((function(t){return e.nextOption(i)}),["stop","prevent"]),["enter"])},null,40,pe),[[r.nr,e.options[i]]])]),e.options.length>2?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"delete-option button-unstyled -hover-highlight",onClick:function(t){return e.deleteOption(i)}},[(0,o.Wm)(l,{icon:"times"})],8,me)):(0,o.kq)("",!0)])})),128)),e.options.length<e.maxOptions?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"add-option faint button-unstyled -hover-highlight",onClick:t[1]||(t[1]=function(){return e.addOption&&e.addOption.apply(e,arguments)})},[(0,o.Wm)(l,{icon:"plus",size:"sm"}),(0,o.Uk)(" "+(0,i.zw)(e.$t("polls.add_option")),1)])):(0,o.kq)("",!0),(0,o._)("div",he,[(0,o._)("div",{class:"poll-type",title:e.$t("polls.type")},[(0,o.Wm)(u,{modelValue:e.pollType,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.pollType=t}),class:"poll-type-select",unstyled:"true",onChange:e.updatePollToParent},{default:(0,o.w5)((function(){return[(0,o._)("option",ge,(0,i.zw)(e.$t("polls.single_choice")),1),(0,o._)("option",ve,(0,i.zw)(e.$t("polls.multiple_choices")),1)]})),_:1},8,["modelValue","onChange"])],8,fe),(0,o._)("div",{class:"poll-expiry",title:e.$t("polls.expiry")},[(0,o.wy)((0,o._)("input",{"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.expiryAmount=t}),type:"number",class:"expiry-amount hide-number-spinner",min:e.minExpirationInCurrentUnit,max:e.maxExpirationInCurrentUnit,onChange:t[4]||(t[4]=function(){return e.expiryAmountChange&&e.expiryAmountChange.apply(e,arguments)})},null,40,be),[[r.nr,e.expiryAmount]]),(0,o.Uk)(" "+(0,i.zw)(" ")+" "),(0,o.Wm)(u,{modelValue:e.expiryUnit,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.expiryUnit=t}),unstyled:"true",class:"expiry-unit",onChange:e.expiryAmountChange},{default:(0,o.w5)((function(){return[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.expiryUnits,(function(t){return(0,o.wg)(),(0,o.iD)("option",{key:t,value:t},(0,i.zw)(e.$tc("time.unit.".concat(t,"_short"),e.expiryAmount,[""])),9,ye)})),128))]})),_:1},8,["modelValue","onChange"])],8,we)])])):(0,o.kq)("",!0)}]]);var Pe=n(66596),ze=n(67671),De=n(38146),Ie=n(58394),xe=n(67952),Te=n(37230),$e=n(19003),Ue=n(989),Me=n(90350);function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Le(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(Object(n),!0).forEach((function(t){(0,R.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}ne.vI.add(oe.RKn,oe.Mm7,oe.cf$,oe.gPx,oe.NBC,oe.IJ7);var Ee=function(e){return Number(e.substring(0,e.length-2))};const Fe={props:["statusId","statusText","statusIsSensitive","statusPoll","statusFiles","statusMediaDescriptions","statusScope","statusContentType","replyTo","repliedUser","attentions","copyMessageScope","subject","disableSubject","disableScopeSelector","disableVisibilitySelector","disableNotice","disableLockWarning","disablePolls","disableSensitivityCheckbox","disableSubmit","disablePreview","placeholder","maxHeight","postHandler","preserveFocus","autoFocus","fileLimit","submitOnEnter","emojiPickerPlacement","optimisticPosting"],emits:["posted","resize","mediaplay","mediapause"],components:{MediaUpload:ae,EmojiInput:le.Z,PollForm:Oe,ScopeSelector:ce.Z,Checkbox:Me.Z,Select:je.Z,Attachment:Pe.Z,StatusContent:De.Z,Gallery:ze.Z},mounted:function(){if(this.updateIdempotencyKey(),this.resize(this.$refs.textarea),this.replyTo){var e=this.$refs.textarea.value.length;this.$refs.textarea.setSelectionRange(e,e)}(this.replyTo||this.autoFocus)&&this.$refs.textarea.focus()},data:function(){var e=this.$route.query.message||"",t=this.$store.getters.mergedConfig.scopeCopy;if(this.replyTo){var n=this.$store.state.users.currentUser;e=function(e,t){var n=e.user,o=e.attentions,r=void 0===o?[]:o,i=(0,q.Z)(r);i.unshift(n),i=B()(i,"id"),i=G()(i,{id:t.id});var s=V()(i,(function(e){return"@".concat(e.screen_name)}));return s.length>0?s.join(" ")+" ":""}({user:this.repliedUser,attentions:this.attentions},n)}var o=this.copyMessageScope&&t||"direct"===this.copyMessageScope?this.copyMessageScope:this.$store.state.users.currentUser.default_scope,r=this.$store.getters.mergedConfig,i=r.postContentType,s=r.sensitiveByDefault,a={spoilerText:this.subject||"",status:e,nsfw:!!s,files:[],poll:{},mediaDescriptions:{},visibility:o,contentType:i};if(this.statusId){var c=this.statusContentType||i;a={spoilerText:this.subject||"",status:this.statusText||"",nsfw:this.statusIsSensitive||!!s,files:this.statusFiles||[],poll:this.statusPoll||{},mediaDescriptions:this.statusMediaDescriptions||{},visibility:this.statusScope||o,contentType:c}}return{dropFiles:[],uploadingFiles:!1,error:null,posting:!1,highlighted:0,newStatus:a,caret:0,pollFormVisible:!1,showDropIcon:"hide",dropStopTimeout:null,preview:null,previewLoading:!1,emojiInputShown:!1,idempotencyKey:""}},computed:Le(Le({users:function(){return this.$store.state.users.users},userDefaultScope:function(){return this.$store.state.users.currentUser.default_scope},showAllScopes:function(){return!this.mergedConfig.minimalScopesMode},emojiUserSuggestor:function(){return(0,$e.ZP)({emoji:[].concat((0,q.Z)(this.$store.getters.standardEmojiList),(0,q.Z)(this.$store.state.instance.customEmoji)),store:this.$store})},emojiSuggestor:function(){return(0,$e.ZP)({emoji:[].concat((0,q.Z)(this.$store.getters.standardEmojiList),(0,q.Z)(this.$store.state.instance.customEmoji))})},emoji:function(){return this.$store.getters.standardEmojiList||[]},customEmoji:function(){return this.$store.state.instance.customEmoji||[]},statusLength:function(){return this.newStatus.status.length},spoilerTextLength:function(){return this.newStatus.spoilerText.length},statusLengthLimit:function(){return this.$store.state.instance.textlimit},hasStatusLengthLimit:function(){return this.statusLengthLimit>0},charactersLeft:function(){return this.statusLengthLimit-(this.statusLength+this.spoilerTextLength)},isOverLengthLimit:function(){return this.hasStatusLengthLimit&&this.charactersLeft<0},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},alwaysShowSubject:function(){return this.mergedConfig.alwaysShowSubjectInput},postFormats:function(){return this.$store.state.instance.postFormats||[]},safeDMEnabled:function(){return this.$store.state.instance.safeDM},pollsAvailable:function(){return this.$store.state.instance.pollsAvailable&&this.$store.state.instance.pollLimits.max_options>=2&&!0!==this.disablePolls},hideScopeNotice:function(){return this.disableNotice||this.$store.getters.mergedConfig.hideScopeNotice},pollContentError:function(){return this.pollFormVisible&&this.newStatus.poll&&this.newStatus.poll.error},showPreview:function(){return!this.disablePreview&&(!!this.preview||this.previewLoading)},emptyStatus:function(){return""===this.newStatus.status.trim()&&0===this.newStatus.files.length},uploadFileLimitReached:function(){return this.newStatus.files.length>=this.fileLimit},isEdit:function(){return void 0!==this.statusId&&""!==this.statusId.trim()}},(0,Ue.Se)(["mergedConfig"])),(0,Ue.rn)({mobileLayout:function(e){return e.interface.mobileLayout}})),watch:{newStatus:{deep:!0,handler:function(){this.statusChanged()}}},methods:{statusChanged:function(){this.autoPreview(),this.updateIdempotencyKey()},clearStatus:function(){var e=this,t=this.newStatus;this.newStatus={status:"",spoilerText:"",files:[],visibility:t.visibility,contentType:t.contentType,poll:{},mediaDescriptions:{}},this.pollFormVisible=!1,this.$refs.mediaUpload&&this.$refs.mediaUpload.clearFile(),this.clearPollForm(),this.preserveFocus&&this.$nextTick((function(){e.$refs.textarea.focus()}));var n=this.$el.querySelector("textarea");n.style.height="auto",n.style.height=void 0,this.error=null,this.preview&&this.previewStatus()},postStatus:function(e,t){var n=arguments,o=this;return(0,F.Z)(J().mark((function r(){var i,s;return J().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(n.length>2&&void 0!==n[2]&&n[2],!o.posting||o.optimisticPosting){r.next=3;break}return r.abrupt("return");case 3:if(!o.disableSubmit){r.next=5;break}return r.abrupt("return");case 5:if(!o.emojiInputShown){r.next=7;break}return r.abrupt("return");case 7:if(o.submitOnEnter&&(e.stopPropagation(),e.preventDefault()),!o.optimisticPosting||!o.emptyStatus&&!o.isOverLengthLimit){r.next=10;break}return r.abrupt("return");case 10:if(!o.emptyStatus){r.next=13;break}return o.error=o.$t("post_status.empty_status_error"),r.abrupt("return");case 13:if(i=o.pollFormVisible?o.newStatus.poll:{},!o.pollContentError){r.next=17;break}return o.error=o.pollContentError,r.abrupt("return");case 17:return o.posting=!0,r.prev=18,r.next=21,o.setAllMediaDescriptions();case 21:r.next=28;break;case 23:return r.prev=23,r.t0=r.catch(18),o.error=o.$t("post_status.media_description_error"),o.posting=!1,r.abrupt("return");case 28:s={status:t.status,spoilerText:t.spoilerText||null,visibility:t.visibility,sensitive:t.nsfw,media:t.files,store:o.$store,inReplyToStatusId:o.replyTo,contentType:t.contentType,poll:i,idempotencyKey:o.idempotencyKey},(o.postHandler?o.postHandler:Q.Z.postStatus)(s).then((function(e){e.error?o.error=e.error:(o.clearStatus(),o.$emit("posted",e)),o.posting=!1}));case 31:case"end":return r.stop()}}),r,null,[[18,23]])})))()},previewStatus:function(){var e=this;if(this.emptyStatus&&""===this.newStatus.spoilerText.trim())return this.preview={error:this.$t("post_status.preview_empty")},void(this.previewLoading=!1);var t=this.newStatus;this.previewLoading=!0,Q.Z.postStatus({status:t.status,spoilerText:t.spoilerText||null,visibility:t.visibility,sensitive:t.nsfw,media:[],store:this.$store,inReplyToStatusId:this.replyTo,contentType:t.contentType,poll:{},preview:!0}).then((function(t){e.previewLoading&&(t.error?e.preview={error:t.error}:e.preview=t)})).catch((function(t){e.preview={error:t}})).finally((function(){e.previewLoading=!1}))},debouncePreviewStatus:Z()((function(){this.previewStatus()}),500),autoPreview:function(){this.preview&&(this.previewLoading=!0,this.debouncePreviewStatus())},closePreview:function(){this.preview=null,this.previewLoading=!1},togglePreview:function(){this.showPreview?this.closePreview():this.previewStatus()},addMediaFile:function(e){this.newStatus.files.push(e),this.$emit("resize",{delayed:!0})},removeMediaFile:function(e){var t=this.newStatus.files.indexOf(e);this.newStatus.files.splice(t,1),this.$emit("resize")},editAttachment:function(e,t){this.newStatus.mediaDescriptions[e.id]=t},shiftUpMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n-1,0,e)},shiftDnMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n+1,0,e)},uploadFailed:function(e,t){t=t||{},this.error=this.$t("upload.error.base")+" "+this.$t("upload.error."+e,t)},startedUploadingFiles:function(){this.uploadingFiles=!0},finishedUploadingFiles:function(){this.$emit("resize"),this.uploadingFiles=!1},type:function(e){return Ie.Z.fileType(e.mimetype)},paste:function(e){this.autoPreview(),this.resize(e),e.clipboardData.files.length>0&&(e.preventDefault(),this.dropFiles=[e.clipboardData.files[0]])},fileDrop:function(e){e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(e.preventDefault(),this.dropFiles=e.dataTransfer.files,clearTimeout(this.dropStopTimeout),this.showDropIcon="hide")},fileDragStop:function(e){var t=this;clearTimeout(this.dropStopTimeout),this.showDropIcon="fade",this.dropStopTimeout=setTimeout((function(){return t.showDropIcon="hide"}),500)},fileDrag:function(e){e.dataTransfer.dropEffect=this.uploadFileLimitReached?"none":"copy",e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(clearTimeout(this.dropStopTimeout),this.showDropIcon="show")},onEmojiInputInput:function(e){var t=this;this.$nextTick((function(){t.resize(t.$refs.textarea)}))},resize:function(e){var t=e.target||e;if(t instanceof window.Element){if(""===t.value)return t.style.height=null,void this.$emit("resize");var n=this.$refs.form,o=this.$refs.bottom,r=window.getComputedStyle(o)["padding-bottom"],i=Ee(r),s=this.$el.closest(".column.-scrollable")||this.$el.closest(".post-form-modal-view")||window,a=window.getComputedStyle(t)["padding-top"],c=window.getComputedStyle(t)["padding-bottom"],l=Ee(a)+Ee(c),u=Ee(t.style.height),d=s===window?s.scrollY:s.scrollTop,p=s===window?s.innerHeight:s.offsetHeight,m=d+p;t.style.height="auto";var h=Math.floor(t.scrollHeight-l),f=this.maxHeight?Math.min(h,this.maxHeight):h;Math.abs(f-u)<=1&&(f=u),t.style.height="".concat(f,"px"),this.$emit("resize",f);var g=o.offsetHeight+(0,xe.y)(o,s).top+i,v=m<g,w=p<n.offsetHeight,b=g-m,y=!v||w&&this.$refs.textarea.selectionStart!==this.$refs.textarea.value.length?0:b,_=Math.round(d+y);s===window?s.scroll(0,_):s.scrollTop=_}},showEmojiPicker:function(){this.$refs.textarea.focus(),this.$refs["emoji-input"].triggerShowPicker()},clearError:function(){this.error=null},changeVis:function(e){this.newStatus.visibility=e},togglePollForm:function(){this.pollFormVisible=!this.pollFormVisible},setPoll:function(e){this.newStatus.poll=e},clearPollForm:function(){this.$refs.pollForm&&this.$refs.pollForm.clear()},dismissScopeNotice:function(){this.$store.dispatch("setOption",{name:"hideScopeNotice",value:!0})},setMediaDescription:function(e){var t=this.newStatus.mediaDescriptions[e];if(t&&""!==t.trim())return Q.Z.setMediaDescription({store:this.$store,id:e,description:t})},setAllMediaDescriptions:function(){var e=this,t=this.newStatus.files.map((function(e){return e.id}));return Promise.all(t.map((function(t){return e.setMediaDescription(t)})))},handleEmojiInputShow:function(e){this.emojiInputShown=e},updateIdempotencyKey:function(){this.idempotencyKey=Date.now().toString()},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")},propsToNative:function(e){return(0,Te.X)(e)}}},Re=(0,se.Z)(Fe,[["render",function(e,t,n,F,R,q){var N=(0,o.up)("i18n-t"),Z=(0,o.up)("FAIcon"),W=(0,o.up)("StatusContent"),B=(0,o.up)("EmojiInput"),H=(0,o.up)("scope-selector"),V=(0,o.up)("Select"),K=(0,o.up)("poll-form"),G=(0,o.up)("media-upload"),Y=(0,o.up)("gallery"),J=(0,o.up)("Checkbox");return(0,o.wg)(),(0,o.iD)("div",s,[(0,o._)("form",{autocomplete:"off",onSubmit:t[26]||(t[26]=(0,r.iM)((function(){}),["prevent"])),onDragover:t[27]||(t[27]=(0,r.iM)((function(){return e.fileDrag&&e.fileDrag.apply(e,arguments)}),["prevent"]))},[(0,o._)("div",a,[e.$store.state.users.currentUser.locked||"private"!=e.newStatus.visibility||e.disableLockWarning?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(N,{key:0,keypath:"post_status.account_not_locked_warning",tag:"p",class:"visibility-notice",scope:"global"},{default:(0,o.w5)((function(){return[(0,o._)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=function(){return e.openProfileTab&&e.openProfileTab.apply(e,arguments)})},(0,i.zw)(e.$t("post_status.account_not_locked_warning_link")),1)]})),_:1})),e.hideScopeNotice||"public"!==e.newStatus.visibility?e.hideScopeNotice||"unlisted"!==e.newStatus.visibility?!e.hideScopeNotice&&"private"===e.newStatus.visibility&&e.$store.state.users.currentUser.locked?((0,o.wg)(),(0,o.iD)("p",p,[(0,o._)("span",null,(0,i.zw)(e.$t("post_status.scope_notice.private")),1),(0,o._)("a",{class:"fa-scale-110 fa-old-padding dismiss",title:e.$t("post_status.scope_notice_dismiss"),role:"button",tabindex:"0",onClick:t[3]||(t[3]=(0,r.iM)((function(t){return e.dismissScopeNotice()}),["prevent"]))},[(0,o.Wm)(Z,{icon:"times"})],8,m)])):"direct"===e.newStatus.visibility?((0,o.wg)(),(0,o.iD)("p",h,[e.safeDMEnabled?((0,o.wg)(),(0,o.iD)("span",f,(0,i.zw)(e.$t("post_status.direct_warning_to_first_only")),1)):((0,o.wg)(),(0,o.iD)("span",g,(0,i.zw)(e.$t("post_status.direct_warning_to_all")),1))])):(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("p",u,[(0,o._)("span",null,(0,i.zw)(e.$t("post_status.scope_notice.unlisted")),1),(0,o._)("a",{class:"fa-scale-110 fa-old-padding dismiss",title:e.$t("post_status.scope_notice_dismiss"),role:"button",tabindex:"0",onClick:t[2]||(t[2]=(0,r.iM)((function(t){return e.dismissScopeNotice()}),["prevent"]))},[(0,o.Wm)(Z,{icon:"times"})],8,d)])):((0,o.wg)(),(0,o.iD)("p",c,[(0,o._)("span",null,(0,i.zw)(e.$t("post_status.scope_notice.public")),1),(0,o._)("a",{class:"fa-scale-110 fa-old-padding dismiss",title:e.$t("post_status.scope_notice_dismiss"),role:"button",tabindex:"0",onClick:t[1]||(t[1]=(0,r.iM)((function(t){return e.dismissScopeNotice()}),["prevent"]))},[(0,o.Wm)(Z,{icon:"times"})],8,l)])),e.isEdit?((0,o.wg)(),(0,o.iD)("div",v,[(0,o._)("p",null,(0,i.zw)(e.$t("post_status.edit_remote_warning")),1),(0,o._)("p",null,(0,i.zw)(e.$t("post_status.edit_unsupported_warning")),1)])):(0,o.kq)("",!0),e.disablePreview?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",w,[(0,o._)("a",{class:"preview-toggle faint",onClick:t[4]||(t[4]=(0,r.iM)((function(){return e.togglePreview&&e.togglePreview.apply(e,arguments)}),["stop","prevent"]))},[(0,o.Uk)((0,i.zw)(e.$t("post_status.preview"))+" ",1),(0,o.Wm)(Z,{icon:e.showPreview?"chevron-left":"chevron-right"},null,8,["icon"])]),(0,o.wy)((0,o._)("div",b,[(0,o.Wm)(Z,{class:"fa-old-padding",spin:"",icon:"circle-notch"})],512),[[r.F8,e.previewLoading]])])),e.showPreview?((0,o.wg)(),(0,o.iD)("div",y,[e.preview?e.preview.error?((0,o.wg)(),(0,o.iD)("div",k,(0,i.zw)(e.preview.error),1)):((0,o.wg)(),(0,o.j4)(W,{key:2,status:e.preview,class:"preview-status"},null,8,["status"])):((0,o.wg)(),(0,o.iD)("div",_,(0,i.zw)(e.$t("general.loading")),1))])):(0,o.kq)("",!0),e.disableSubject||!e.newStatus.spoilerText&&!e.alwaysShowSubject?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(B,{key:8,modelValue:e.newStatus.spoilerText,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.newStatus.spoilerText=t}),"enable-emoji-picker":"",suggest:e.emojiSuggestor,class:"form-control"},{default:(0,o.w5)((function(n){return[(0,o.wy)((0,o._)("input",(0,o.dG)({"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.newStatus.spoilerText=t}),type:"text",placeholder:e.$t("post_status.content_warning"),disabled:e.posting&&!e.optimisticPosting},e.propsToNative(n),{size:"1",class:"form-post-subject"}),null,16,S),[[r.nr,e.newStatus.spoilerText]])]})),_:1},8,["modelValue","suggest"])),(0,o.Wm)(B,{ref:"emoji-input",modelValue:e.newStatus.status,"onUpdate:modelValue":t[14]||(t[14]=function(t){return e.newStatus.status=t}),suggest:e.emojiUserSuggestor,placement:e.emojiPickerPlacement,class:"form-control main-input","enable-emoji-picker":"","hide-emoji-button":"","newline-on-ctrl-enter":e.submitOnEnter,"enable-sticker-picker":"",onInput:e.onEmojiInputInput,onStickerUploaded:e.addMediaFile,onStickerUploadFailed:e.uploadFailed,onShown:e.handleEmojiInputShow},{default:(0,o.w5)((function(n){return[(0,o.wy)((0,o._)("textarea",(0,o.dG)({ref:"textarea","onUpdate:modelValue":t[7]||(t[7]=function(t){return e.newStatus.status=t}),placeholder:e.placeholder||e.$t("post_status.default"),rows:"1",cols:"1",disabled:e.posting&&!e.optimisticPosting,class:["form-post-body",{"scrollable-form":!!e.maxHeight}]},e.propsToNative(n),{onKeydown:[t[8]||(t[8]=(0,r.D2)((0,r.iM)((function(t){return e.submitOnEnter&&e.postStatus(t,e.newStatus)}),["exact"]),["enter"])),t[9]||(t[9]=(0,r.D2)((0,r.iM)((function(t){return e.postStatus(t,e.newStatus)}),["meta"]),["enter"])),t[10]||(t[10]=(0,r.D2)((0,r.iM)((function(t){return!e.submitOnEnter&&e.postStatus(t,e.newStatus)}),["ctrl"]),["enter"]))],onInput:t[11]||(t[11]=function(){return e.resize&&e.resize.apply(e,arguments)}),onCompositionupdate:t[12]||(t[12]=function(){return e.resize&&e.resize.apply(e,arguments)}),onPaste:t[13]||(t[13]=function(){return e.paste&&e.paste.apply(e,arguments)})}),null,16,j),[[r.nr,e.newStatus.status]]),e.hasStatusLengthLimit?((0,o.wg)(),(0,o.iD)("p",{key:0,class:(0,i.C_)(["character-counter faint",{error:e.isOverLengthLimit}])},(0,i.zw)(e.charactersLeft),3)):(0,o.kq)("",!0)]})),_:1},8,["modelValue","suggest","placement","newline-on-ctrl-enter","onInput","onStickerUploaded","onStickerUploadFailed","onShown"]),e.disableScopeSelector?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",C,[e.disableVisibilitySelector?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(H,{key:0,"show-all":e.showAllScopes,"user-default":e.userDefaultScope,"original-scope":e.copyMessageScope,"initial-scope":e.newStatus.visibility,"on-scope-change":e.changeVis},null,8,["show-all","user-default","original-scope","initial-scope","on-scope-change"])),e.postFormats.length>1?((0,o.wg)(),(0,o.iD)("div",O,[(0,o.Wm)(V,{id:"post-content-type",modelValue:e.newStatus.contentType,"onUpdate:modelValue":t[15]||(t[15]=function(t){return e.newStatus.contentType=t}),class:"form-control",attrs:{"aria-label":e.$t("post_status.content_type_selection")}},{default:(0,o.w5)((function(){return[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.postFormats,(function(t){return(0,o.wg)(),(0,o.iD)("option",{key:t,value:t},(0,i.zw)(e.$t('post_status.content_type["'.concat(t,'"]'))),9,P)})),128))]})),_:1},8,["modelValue","attrs"])])):(0,o.kq)("",!0),1===e.postFormats.length&&"text/plain"!==e.postFormats[0]?((0,o.wg)(),(0,o.iD)("div",z,[(0,o._)("span",D,(0,i.zw)(e.$t('post_status.content_type["'.concat(e.postFormats[0],'"]'))),1)])):(0,o.kq)("",!0)]))]),e.pollsAvailable?((0,o.wg)(),(0,o.j4)(K,{key:0,ref:"pollForm",visible:e.pollFormVisible,onUpdatePoll:e.setPoll},null,8,["visible","onUpdatePoll"])):(0,o.kq)("",!0),(0,o._)("div",I,[(0,o._)("div",x,[(0,o.Wm)(G,{ref:"mediaUpload",class:"media-upload-icon","drop-files":e.dropFiles,disabled:e.uploadFileLimitReached,onUploading:e.startedUploadingFiles,onUploaded:e.addMediaFile,onUploadFailed:e.uploadFailed,onAllUploaded:e.finishedUploadingFiles},null,8,["drop-files","disabled","onUploading","onUploaded","onUploadFailed","onAllUploaded"]),(0,o._)("button",{class:"emoji-icon button-unstyled",title:e.$t("emoji.add_emoji"),onClick:t[16]||(t[16]=function(){return e.showEmojiPicker&&e.showEmojiPicker.apply(e,arguments)})},[(0,o.Wm)(Z,{icon:"smile-beam"})],8,T),e.pollsAvailable?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,i.C_)(["poll-icon button-unstyled",{selected:e.pollFormVisible}]),title:e.$t("polls.add_poll"),onClick:t[17]||(t[17]=function(){return e.togglePollForm&&e.togglePollForm.apply(e,arguments)})},[(0,o.Wm)(Z,{icon:"poll-h"})],10,$)):(0,o.kq)("",!0)]),e.posting?((0,o.wg)(),(0,o.iD)("button",U,(0,i.zw)(e.$t("post_status.posting")),1)):e.isOverLengthLimit?((0,o.wg)(),(0,o.iD)("button",M,(0,i.zw)(e.$t("post_status.post")),1)):((0,o.wg)(),(0,o.iD)("button",{key:2,disabled:e.uploadingFiles||e.disableSubmit,class:"btn button-default",onTouchstart:t[18]||(t[18]=(0,r.iM)((function(t){return e.postStatus(t,e.newStatus)}),["stop","prevent"])),onClick:t[19]||(t[19]=(0,r.iM)((function(t){return e.postStatus(t,e.newStatus)}),["stop","prevent"]))},(0,i.zw)(e.$t("post_status.post")),41,A))],512),(0,o.wy)((0,o._)("div",{style:(0,i.j5)({animation:"show"===e.showDropIcon?"fade-in 0.25s":"fade-out 0.5s"}),class:"drop-indicator",onDragleave:t[20]||(t[20]=function(){return e.fileDragStop&&e.fileDragStop.apply(e,arguments)}),onDrop:t[21]||(t[21]=(0,r.iM)((function(){return e.fileDrop&&e.fileDrop.apply(e,arguments)}),["stop"]))},[(0,o.Wm)(Z,{icon:e.uploadFileLimitReached?"ban":"upload"},null,8,["icon"])],36),[[r.F8,"hide"!==e.showDropIcon]]),e.error?((0,o.wg)(),(0,o.iD)("div",L,[(0,o.Uk)(" Error: "+(0,i.zw)(e.error)+" ",1),(0,o._)("button",{class:"button-unstyled",onClick:t[22]||(t[22]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,o.Wm)(Z,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])):(0,o.kq)("",!0),e.newStatus.files&&e.newStatus.files.length>0?((0,o.wg)(),(0,o.j4)(Y,{key:2,class:"attachments",grid:!0,nsfw:!1,attachments:e.newStatus.files,descriptions:e.newStatus.mediaDescriptions,"set-media":function(){return e.$store.dispatch("setMedia",e.newStatus.files)},editable:!0,"edit-attachment":e.editAttachment,"remove-attachment":e.removeMediaFile,"shift-up-attachment":e.newStatus.files.length>1&&e.shiftUpMediaFile,"shift-dn-attachment":e.newStatus.files.length>1&&e.shiftDnMediaFile,onPlay:t[23]||(t[23]=function(t){return e.$emit("mediaplay",e.attachment.id)}),onPause:t[24]||(t[24]=function(t){return e.$emit("mediapause",e.attachment.id)})},null,8,["attachments","descriptions","set-media","edit-attachment","remove-attachment","shift-up-attachment","shift-dn-attachment"])):(0,o.kq)("",!0),e.newStatus.files.length>0&&!e.disableSensitivityCheckbox?((0,o.wg)(),(0,o.iD)("div",E,[(0,o.Wm)(J,{modelValue:e.newStatus.nsfw,"onUpdate:modelValue":t[25]||(t[25]=function(t){return e.newStatus.nsfw=t})},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,i.zw)(e.$t("post_status.attachments_sensitive")),1)]})),_:1},8,["modelValue"])])):(0,o.kq)("",!0)],32)],512)}]])},99507:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var o=n(66252),r=["disabled"];const i={props:{disabled:{type:Boolean},click:{type:Function,default:function(){return Promise.resolve()}}},data:function(){return{progress:!1}},methods:{onClick:function(){var e=this;this.progress=!0,this.click().then((function(){e.progress=!1}))}}},s=(0,n(83744).Z)(i,[["render",function(e,t,n,i,s,a){return(0,o.wg)(),(0,o.iD)("button",{disabled:s.progress||n.disabled,onClick:t[0]||(t[0]=function(){return a.onClick&&a.onClick.apply(a,arguments)})},[s.progress&&e.$slots.progress?(0,o.WI)(e.$slots,"progress",{key:0}):(0,o.WI)(e.$slots,"default",{key:1})],8,r)}]])},72895:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var o=n(66252),r=n(3577),i={class:"remote-follow"},s=["action"],a=["value"],c=(0,o._)("input",{type:"hidden",name:"profile",value:""},null,-1),l={click:"submit",class:"button-default remote-button"};const u={props:["user"],computed:{subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")}}},d=(0,n(83744).Z)(u,[["render",function(e,t,n,u,d,p){return(0,o.wg)(),(0,o.iD)("div",i,[(0,o._)("form",{method:"POST",action:e.subscribeUrl},[(0,o._)("input",{type:"hidden",name:"nickname",value:e.user.screen_name},null,8,a),c,(0,o._)("button",l,(0,r.zw)(e.$t("user_card.remote_follow")),1)],8,s)])}]])},54110:(e,t,n)=>{"use strict";n.d(t,{Z:()=>m});var o=n(66252),r=n(3577),i={key:0,class:"ScopeSelector"},s=["title"],a=["title"],c=["title"],l=["title"],u=n(9382),d=n(84131);u.vI.add(d.FU$,d.g4A,d.byT,d._1N);const p={props:["showAll","userDefault","originalScope","initialScope","onScopeChange"],data:function(){return{currentScope:this.initialScope}},computed:{showNothing:function(){return!(this.showPublic||this.showUnlisted||this.showPrivate||this.showDirect)},showPublic:function(){return"direct"!==this.originalScope&&this.shouldShow("public")},showUnlisted:function(){return"direct"!==this.originalScope&&this.shouldShow("unlisted")},showPrivate:function(){return"direct"!==this.originalScope&&this.shouldShow("private")},showDirect:function(){return this.shouldShow("direct")},css:function(){return{public:{selected:"public"===this.currentScope},unlisted:{selected:"unlisted"===this.currentScope},private:{selected:"private"===this.currentScope},direct:{selected:"direct"===this.currentScope}}}},methods:{shouldShow:function(e){return this.showAll||this.currentScope===e||this.originalScope===e||this.userDefault===e||"direct"===e},changeVis:function(e){this.currentScope=e,this.onScopeChange&&this.onScopeChange(e)}}},m=(0,n(83744).Z)(p,[["render",function(e,t,n,u,d,p){var m=(0,o.up)("FAIcon");return e.showNothing?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",i,[e.showDirect?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,r.C_)(["button-unstyled scope",e.css.direct]),title:e.$t("post_status.scope.direct"),type:"button",onClick:t[0]||(t[0]=function(t){return e.changeVis("direct")})},[(0,o.Wm)(m,{icon:"envelope",class:"fa-scale-110 fa-old-padding"})],10,s)):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),e.showPrivate?((0,o.wg)(),(0,o.iD)("button",{key:1,class:(0,r.C_)(["button-unstyled scope",e.css.private]),title:e.$t("post_status.scope.private"),type:"button",onClick:t[1]||(t[1]=function(t){return e.changeVis("private")})},[(0,o.Wm)(m,{icon:"lock",class:"fa-scale-110 fa-old-padding"})],10,a)):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),e.showUnlisted?((0,o.wg)(),(0,o.iD)("button",{key:2,class:(0,r.C_)(["button-unstyled scope",e.css.unlisted]),title:e.$t("post_status.scope.unlisted"),type:"button",onClick:t[2]||(t[2]=function(t){return e.changeVis("unlisted")})},[(0,o.Wm)(m,{icon:"lock-open",class:"fa-scale-110 fa-old-padding"})],10,c)):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),e.showPublic?((0,o.wg)(),(0,o.iD)("button",{key:3,class:(0,r.C_)(["button-unstyled scope",e.css.public]),title:e.$t("post_status.scope.public"),type:"button",onClick:t[3]||(t[3]=function(t){return e.changeVis("public")})},[(0,o.Wm)(m,{icon:"globe",class:"fa-scale-110 fa-old-padding"})],10,l)):(0,o.kq)("",!0)]))}]])},76990:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=n(66252),r=n(3577),i=["disabled","value"],s=n(9382),a=n(84131);s.vI.add(a.ptq);const c={emits:["update:modelValue"],props:["modelValue","disabled","unstyled","kind","attrs"]},l=(0,n(83744).Z)(c,[["render",function(e,t,n,s,a,c){var l=(0,o.up)("FAIcon");return(0,o.wg)(),(0,o.iD)("label",{class:(0,r.C_)(["Select input",{disabled:e.disabled,unstyled:e.unstyled}])},[(0,o._)("select",(0,o.dG)({disabled:e.disabled,value:e.modelValue},e.attrs,{onChange:t[0]||(t[0]=function(t){return e.$emit("update:modelValue",t.target.value)})}),[(0,o.WI)(e.$slots,"default")],16,i),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o.Wm)(l,{class:"select-down-icon",icon:"chevron-down"})],2)}]])},75245:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Qt});var o=n(66252),r=n(3577),i=n(49963),s={key:0,class:"alert error"},a={key:1,class:"status-container muted"},c={class:"status-username"},l={key:0,class:"mute-thread"},u={key:1,class:"mute-thread"},d=["title"],p={key:0,class:"pin"},m={class:"faint"},h={class:"right-side faint"},f=["title"],g=["data-tags"],v={key:0,class:"left-side"},w=["href"],b={class:"right-side"},y={key:0,class:"status-heading"},_={class:"heading-name-row"},k={class:"heading-left"},S=["title"],j=["title"],C=["src"],O={class:"heading-right"},P=["title"],z=["title"],D=["title","aria-expanded"],I=["title"],x={key:0,class:"heading-reply-row"},T={key:0,class:"glued-label reply-glued-label"},$=["aria-label"],U={class:"reply-to-text"},M={key:1,class:"reply-to-no-popover"},A={class:"reply-to-text"},L={key:1,class:"glued-label"},E=["aria-label"],F={class:"mentions-text"},R={key:1,class:"heading-edited-row"},q={key:1,class:"replies"},N=["title"],Z={key:1,class:"faint"},W=["onClick"],B={key:0,class:"favs-repeated-users"},H={class:"stats"},V={class:"stat-count"},K={class:"stat-title"},G={class:"stat-number"},Y={class:"stat-count"},J={class:"stat-title"},Q={class:"stat-number"},X={class:"avatar-row"},ee={key:3,class:"status-actions"},te={key:3,class:"gravestone"},ne={class:"left-side"},oe={class:"right-side"},re={class:"deleted-text"},ie={key:4,class:"status-container reply-form"},se=n(4942),ae=n(45578),ce=n.n(ae),le=n(27955),ue=n.n(le),de={class:"ReplyButton"},pe=["title"],me=["href","title"],he={key:2,class:"action-counter"},fe=n(9382),ge=n(84131);fe.vI.add(ge.Lh7,ge.r8p,ge.NBC);const ve={name:"ReplyButton",props:["status","replying"],computed:{loggedIn:function(){return!!this.$store.state.users.currentUser},remoteInteractionLink:function(){return this.$store.getters.remoteInteractionLink({statusId:this.status.id})}}};var we=n(83744);const be=(0,we.Z)(ve,[["render",function(e,t,n,s,a,c){var l=(0,o.up)("FAIcon"),u=(0,o.up)("FALayers");return(0,o.wg)(),(0,o.iD)("div",de,[e.loggedIn?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,r.C_)(["button-unstyled interactive",{"-active":e.replying}]),title:e.$t("tool_tip.reply"),onClick:t[0]||(t[0]=(0,i.iM)((function(t){return e.$emit("toggle")}),["prevent"]))},[(0,o.Wm)(u,{class:"fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{class:"fa-scale-110",icon:"reply"}),e.replying?((0,o.wg)(),(0,o.j4)(l,{key:1,class:"focus-marker",transform:"shrink-6 up-8 right-11",icon:"times"})):((0,o.wg)(),(0,o.j4)(l,{key:0,class:"focus-marker",transform:"shrink-6 up-8 right-11",icon:"plus"}))]})),_:1})],10,pe)):((0,o.wg)(),(0,o.iD)("a",{key:1,class:"button-unstyled interactive",target:"_blank",role:"button",href:e.remoteInteractionLink,title:e.$t("tool_tip.reply")},[(0,o.Wm)(u,{class:"fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{class:"fa-scale-110",icon:"reply"}),e.replying?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(l,{key:0,class:"focus-marker",transform:"shrink-6 up-8 right-16",icon:"plus"}))]})),_:1})],8,me)),e.status.replies_count>0?((0,o.wg)(),(0,o.iD)("span",he,(0,r.zw)(e.status.replies_count),1)):(0,o.kq)("",!0)])}]]);var ye={class:"FavoriteButton"},_e=["title"],ke=["title","href"],Se={key:2,class:"action-counter"},je=n(989),Ce=n(5737);function Oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Pe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Oe(Object(n),!0).forEach((function(t){(0,se.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Oe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}fe.vI.add(ge.Tab,Ce.Tab,ge.r8p,ge.Kl4,ge.LEp);const ze={props:["status","loggedIn"],data:function(){return{animated:!1}},methods:{favorite:function(){var e=this;this.status.favorited?this.$store.dispatch("unfavorite",{id:this.status.id}):this.$store.dispatch("favorite",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500)}},computed:Pe(Pe({},(0,je.Se)(["mergedConfig"])),{},{remoteInteractionLink:function(){return this.$store.getters.remoteInteractionLink({statusId:this.status.id})}})},De=(0,we.Z)(ze,[["render",function(e,t,n,s,a,c){var l=(0,o.up)("FAIcon"),u=(0,o.up)("FALayers");return(0,o.wg)(),(0,o.iD)("div",ye,[e.loggedIn?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,r.C_)(["button-unstyled interactive",e.status.favorited&&"-favorited"]),title:e.$t("tool_tip.favorite"),onClick:t[0]||(t[0]=(0,i.iM)((function(t){return e.favorite()}),["prevent"]))},[(0,o.Wm)(u,{class:"fa-scale-110 fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{class:"fa-scale-110",icon:[e.status.favorited?"fas":"far","star"],spin:e.animated},null,8,["icon","spin"]),e.status.favorited?((0,o.wg)(),(0,o.j4)(l,{key:0,class:"active-marker",transform:"shrink-6 up-9 right-12",icon:"check"})):(0,o.kq)("",!0),e.status.favorited?((0,o.wg)(),(0,o.j4)(l,{key:2,class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"minus"})):((0,o.wg)(),(0,o.j4)(l,{key:1,class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"plus"}))]})),_:1})],10,_e)):((0,o.wg)(),(0,o.iD)("a",{key:1,class:"button-unstyled interactive",target:"_blank",role:"button",title:e.$t("tool_tip.favorite"),href:e.remoteInteractionLink},[(0,o.Wm)(u,{class:"fa-scale-110 fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{class:"fa-scale-110",icon:["far","star"]}),(0,o.Wm)(l,{class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"plus"})]})),_:1})],8,ke)),!e.mergedConfig.hidePostStats&&e.status.fave_num>0?((0,o.wg)(),(0,o.iD)("span",Se,(0,r.zw)(e.status.fave_num),1)):(0,o.kq)("",!0)])}]]);var Ie={class:"reaction-picker-filter"},xe=["placeholder"],Te={class:"reaction-picker"},$e=["title","onClick"],Ue=(0,o._)("div",{class:"reaction-picker-divider"},null,-1),Me=["title","onClick"],Ae=(0,o._)("div",{class:"reaction-bottom-fader"},null,-1),Le=["title"],Ee=n(93433),Fe=n(92742),Re=n.n(Fe),qe=n(91447),Ne=n(8312);function Ze(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return We(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?We(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function We(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}fe.vI.add(ge.r8p,ge.NBC,Ce.RKn);const Be={props:["status"],data:function(){return{filterWord:"",expanded:!1}},components:{Popover:qe.default},methods:{addReaction:function(e,t,n){var o=this.status.emoji_reactions.find((function(e){return e.name===t}));o&&o.me?this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:t}):this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:t}),n()},onShow:function(){this.expanded=!0,this.focusInput()},onClose:function(){this.expanded=!1},focusInput:function(){this.$nextTick((function(){var e=document.querySelector(".reaction-picker-filter > input");e&&e.focus()}))},maybeLocalizedEmojiNamesAndKeywords:function(e){var t=[e.displayText],n=[];return e.displayTextI18n&&t.push(this.$t(e.displayTextI18n.key,e.displayTextI18n.args)),e.annotations&&this.languages.forEach((function(o){var r,i;t.push(null===(r=e.annotations[o])||void 0===r?void 0:r.name),n.push.apply(n,(0,Ee.Z)((null===(i=e.annotations[o])||void 0===i?void 0:i.keywords)||[]))})),{names:t.filter((function(e){return e})),keywords:n.filter((function(e){return e}))}},maybeLocalizedEmojiName:function(e){if(!e.annotations)return e.displayText;if(e.displayTextI18n)return this.$t(e.displayTextI18n.key,e.displayTextI18n.args);var t,n=Ze(this.languages);try{for(n.s();!(t=n.n()).done;){var o,r=t.value;if(null!==(o=e.annotations[r])&&void 0!==o&&o.name)return e.annotations[r].name}}catch(e){n.e(e)}finally{n.f()}return e.displayText}},computed:{commonEmojis:function(){var e=new Set(["👍","😠","👀","😂","🔥"]);return this.$store.getters.standardEmojiList.filter((function(t){return e.has(t.replacement)}))},languages:function(){return(0,Ne.ensureFinalFallback)(this.$store.getters.mergedConfig.interfaceLanguage)},emojis:function(){if(""!==this.filterWord){var e,t=Re()(this.filterWord.toLowerCase()),n=[],o=Ze(this.$store.getters.standardEmojiList);try{for(o.s();!(e=o.n()).done;){var r=e.value,i=this.maybeLocalizedEmojiNamesAndKeywords(r).keywords.map((function(e){return e.toLowerCase().indexOf(t)})).filter((function(e){return e>-1})),s=i.length?Math.min.apply(Math,(0,Ee.Z)(i)):-1;s>-1&&(Array.isArray(n[s])||(n[s]=[]),n[s].push(r))}}catch(e){o.e(e)}finally{o.f()}return n.flat()}return this.$store.getters.standardEmojiList||[]},mergedConfig:function(){return this.$store.getters.mergedConfig}}},He=(0,we.Z)(Be,[["render",function(e,t,n,s,a,c){var l=(0,o.up)("FAIcon"),u=(0,o.up)("FALayers"),d=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(d,{trigger:"click",class:"ReactButton",placement:"top",offset:{y:5},"bound-to":{x:"container"},"remove-padding":"","popover-class":"ReactButton popover-default",onShow:e.onShow,onClose:e.onClose},{content:(0,o.w5)((function(n){var s=n.close;return[(0,o._)("div",Ie,[(0,o.wy)((0,o._)("input",{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.filterWord=t}),size:"1",placeholder:e.$t("emoji.search_emoji"),onInput:t[1]||(t[1]=function(e){return e.target.composing=!1})},null,40,xe),[[i.nr,e.filterWord]])]),(0,o._)("div",Te,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.commonEmojis,(function(t){return(0,o.wg)(),(0,o.iD)("span",{key:t.replacement,class:"emoji-button",title:e.maybeLocalizedEmojiName(t),onClick:function(n){return e.addReaction(n,t.replacement,s)}},(0,r.zw)(t.replacement),9,$e)})),128)),Ue,((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.emojis,(function(t,n){return(0,o.wg)(),(0,o.iD)("span",{key:n,class:"emoji-button",title:e.maybeLocalizedEmojiName(t),onClick:function(n){return e.addReaction(n,t.replacement,s)}},(0,r.zw)(t.replacement),9,Me)})),128)),Ae])]})),trigger:(0,o.w5)((function(){return[(0,o._)("span",{class:"button-unstyled popover-trigger",title:e.$t("tool_tip.add_reaction")},[(0,o.Wm)(u,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{class:"fa-scale-110 fa-old-padding",icon:["far","smile-beam"]}),(0,o.wy)((0,o.Wm)(l,{class:"focus-marker",transform:"shrink-6 up-9 right-17",icon:"plus"},null,512),[[i.F8,!e.expanded]]),(0,o.wy)((0,o.Wm)(l,{class:"focus-marker",transform:"shrink-6 up-9 right-17",icon:"times"},null,512),[[i.F8,e.expanded]])]})),_:1})],8,Le)]})),_:1},8,["onShow","onClose"])}]]);var Ve={class:"RetweetButton"},Ke=["title"],Ge={key:1},Ye=["title","href"],Je={key:3,class:"no-event"},Qe=n(1447);fe.vI.add(ge.x5v,ge.r8p,ge.Kl4,ge.LEp);const Xe={props:["status","loggedIn","visibility"],components:{ConfirmModal:Qe.Z},data:function(){return{animated:!1,showingConfirmDialog:!1}},methods:{retweet:function(){!this.status.repeated&&this.shouldConfirmRepeat?this.showConfirmDialog():this.doRetweet()},doRetweet:function(){var e=this;this.status.repeated?this.$store.dispatch("unretweet",{id:this.status.id}):this.$store.dispatch("retweet",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500),this.hideConfirmDialog()},showConfirmDialog:function(){this.showingConfirmDialog=!0},hideConfirmDialog:function(){this.showingConfirmDialog=!1}},computed:{mergedConfig:function(){return this.$store.getters.mergedConfig},remoteInteractionLink:function(){return this.$store.getters.remoteInteractionLink({statusId:this.status.id})},shouldConfirmRepeat:function(){return this.mergedConfig.modalOnRepeat}}},et=(0,we.Z)(Xe,[["render",function(e,t,n,s,a,c){var l=(0,o.up)("FAIcon"),u=(0,o.up)("FALayers"),d=(0,o.up)("confirm-modal");return(0,o.wg)(),(0,o.iD)("div",Ve,["private"!==e.visibility&&"direct"!==e.visibility&&e.loggedIn?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,r.C_)(["button-unstyled interactive",e.status.repeated&&"-repeated"]),title:e.$t("tool_tip.repeat"),onClick:t[0]||(t[0]=(0,i.iM)((function(t){return e.retweet()}),["prevent"]))},[(0,o.Wm)(u,{class:"fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{class:"fa-scale-110",icon:"retweet",spin:e.animated},null,8,["spin"]),e.status.repeated?((0,o.wg)(),(0,o.j4)(l,{key:0,class:"active-marker",transform:"shrink-6 up-9 right-12",icon:"check"})):(0,o.kq)("",!0),e.status.repeated?((0,o.wg)(),(0,o.j4)(l,{key:2,class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"minus"})):((0,o.wg)(),(0,o.j4)(l,{key:1,class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"plus"}))]})),_:1})],10,Ke)):e.loggedIn?((0,o.wg)(),(0,o.iD)("span",Ge,[(0,o.Wm)(l,{class:"fa-scale-110 fa-old-padding",icon:"lock",title:e.$t("timeline.no_retweet_hint")},null,8,["title"])])):((0,o.wg)(),(0,o.iD)("a",{key:2,class:"button-unstyled interactive",target:"_blank",role:"button",title:e.$t("tool_tip.repeat"),href:e.remoteInteractionLink},[(0,o.Wm)(u,{class:"fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{class:"fa-scale-110",icon:"retweet"}),(0,o.Wm)(l,{class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"plus"})]})),_:1})],8,Ye)),!e.mergedConfig.hidePostStats&&e.status.repeat_num>0?((0,o.wg)(),(0,o.iD)("span",Je,(0,r.zw)(e.status.repeat_num),1)):(0,o.kq)("",!0),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingConfirmDialog?((0,o.wg)(),(0,o.j4)(d,{key:0,title:e.$t("status.repeat_confirm_title"),"confirm-text":e.$t("status.repeat_confirm_accept_button"),"cancel-text":e.$t("status.repeat_confirm_cancel_button"),onAccepted:e.doRetweet,onCancelled:e.hideConfirmDialog},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("status.repeat_confirm")),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)]))])}]]);var tt={class:"dropdown-menu"},nt=["onClick"],ot=["onClick"],rt=["onClick"],it=["onClick"],st=["onClick"],at=["onClick"],ct=["onClick"],lt=["onClick"],ut=["href"],dt=["onClick"],pt={class:"button-unstyled popover-trigger"};function mt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}fe.vI.add(ge.cNd,ge.xVw,Ce.xVw,ge.Aq,ge.RP7,ge.EfQ,ge.Xjp,Ce.RrC,ge.qO$,ge.r8p,ge.NBC);const ht={props:["status"],components:{Popover:qe.default,ConfirmModal:Qe.Z},data:function(){return{expanded:!1,showingDeleteDialog:!1}},methods:{onShow:function(){this.expanded=!0},onClose:function(){this.expanded=!1},deleteStatus:function(){this.shouldConfirmDelete?this.showDeleteStatusConfirmDialog():this.doDeleteStatus()},doDeleteStatus:function(){this.$store.dispatch("deleteStatus",{id:this.status.id}),this.hideDeleteStatusConfirmDialog()},showDeleteStatusConfirmDialog:function(){this.showingDeleteDialog=!0},hideDeleteStatusConfirmDialog:function(){this.showingDeleteDialog=!1},pinStatus:function(){var e=this;this.$store.dispatch("pinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unpinStatus:function(){var e=this;this.$store.dispatch("unpinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},muteConversation:function(){var e=this;this.$store.dispatch("muteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unmuteConversation:function(){var e=this;this.$store.dispatch("unmuteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},copyLink:function(){var e=this;navigator.clipboard.writeText(this.statusLink).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},bookmarkStatus:function(){var e=this;this.$store.dispatch("bookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unbookmarkStatus:function(){var e=this;this.$store.dispatch("unbookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},reportStatus:function(){this.$store.dispatch("openUserReportingModal",{userId:this.status.user.id,statusIds:[this.status.id]})},editStatus:function(){var e=this;this.$store.dispatch("fetchStatusSource",{id:this.status.id}).then((function(t){return e.$store.dispatch("openEditStatusModal",{statusId:e.status.id,subject:t.spoiler_text,statusText:t.text,statusIsSensitive:e.status.nsfw,statusPoll:e.status.poll,statusFiles:(0,Ee.Z)(e.status.attachments),visibility:e.status.visibility,statusContentType:t.content_type})}))},showStatusHistory:function(){var e=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?mt(Object(n),!0).forEach((function(t){(0,se.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):mt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},this.status);["attachments","created_at","emojis","text","raw_html","nsfw","poll","summary","summary_raw_html"].forEach((function(t){return delete e[t]})),this.$store.dispatch("openStatusHistoryModal",e)}},computed:{currentUser:function(){return this.$store.state.users.currentUser},canDelete:function(){if(this.currentUser)return this.currentUser.privileges.includes("messages_delete")||this.status.user.id===this.currentUser.id},ownStatus:function(){return this.status.user.id===this.currentUser.id},canPin:function(){return this.ownStatus&&("public"===this.status.visibility||"unlisted"===this.status.visibility)},canMute:function(){return!!this.currentUser},canBookmark:function(){return!!this.currentUser},statusLink:function(){return"".concat(this.$store.state.instance.server).concat(this.$router.resolve({name:"conversation",params:{id:this.status.id}}).href)},isEdited:function(){return null!==this.status.edited_at},editingAvailable:function(){return this.$store.state.instance.editingAvailable},shouldConfirmDelete:function(){return this.$store.getters.mergedConfig.modalOnDelete}}},ft=(0,we.Z)(ht,[["render",function(e,t,n,s,a,c){var l=(0,o.up)("FAIcon"),u=(0,o.up)("FALayers"),d=(0,o.up)("ConfirmModal"),p=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(p,{class:"ExtraButtons",trigger:"click",placement:"top",offset:{y:5},"bound-to":{x:"container"},"remove-padding":"",onShow:e.onShow,onClose:e.onClose},{content:(0,o.w5)((function(n){var s=n.close;return[(0,o._)("div",tt,[e.canMute&&!e.status.thread_muted?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-default dropdown-item dropdown-item-icon",onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.muteConversation&&e.muteConversation.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(l,{"fixed-width":"",icon:"eye-slash"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.mute_conversation")),1)])):(0,o.kq)("",!0),e.canMute&&e.status.thread_muted?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-default dropdown-item dropdown-item-icon",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.unmuteConversation&&e.unmuteConversation.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(l,{"fixed-width":"",icon:"eye-slash"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.unmute_conversation")),1)])):(0,o.kq)("",!0),!e.status.pinned&&e.canPin?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[2]||(t[2]=(0,i.iM)((function(){return e.pinStatus&&e.pinStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(l,{"fixed-width":"",icon:"thumbtack"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.pin")),1)],8,nt)):(0,o.kq)("",!0),e.status.pinned&&e.canPin?((0,o.wg)(),(0,o.iD)("button",{key:3,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[3]||(t[3]=(0,i.iM)((function(){return e.unpinStatus&&e.unpinStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(l,{"fixed-width":"",icon:"thumbtack"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.unpin")),1)],8,ot)):(0,o.kq)("",!0),e.canBookmark?((0,o.wg)(),(0,o.iD)(o.HY,{key:4},[e.status.bookmarked?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[4]||(t[4]=(0,i.iM)((function(){return e.bookmarkStatus&&e.bookmarkStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(l,{"fixed-width":"",icon:["far","bookmark"]}),(0,o._)("span",null,(0,r.zw)(e.$t("status.bookmark")),1)],8,rt)),e.status.bookmarked?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[5]||(t[5]=(0,i.iM)((function(){return e.unbookmarkStatus&&e.unbookmarkStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(l,{"fixed-width":"",icon:"bookmark"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.unbookmark")),1)],8,it)):(0,o.kq)("",!0)],64)):(0,o.kq)("",!0),e.ownStatus&&e.editingAvailable?((0,o.wg)(),(0,o.iD)("button",{key:5,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[6]||(t[6]=(0,i.iM)((function(){return e.editStatus&&e.editStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(l,{"fixed-width":"",icon:"pen"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.edit")),1)],8,st)):(0,o.kq)("",!0),e.isEdited&&e.editingAvailable?((0,o.wg)(),(0,o.iD)("button",{key:6,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[7]||(t[7]=(0,i.iM)((function(){return e.showStatusHistory&&e.showStatusHistory.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(l,{"fixed-width":"",icon:"history"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.status_history")),1)],8,at)):(0,o.kq)("",!0),e.canDelete?((0,o.wg)(),(0,o.iD)("button",{key:7,class:"button-default dropdown-item dropdown-item-icon",onClick:[t[8]||(t[8]=(0,i.iM)((function(){return e.deleteStatus&&e.deleteStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(l,{"fixed-width":"",icon:"times"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.delete")),1)],8,ct)):(0,o.kq)("",!0),(0,o._)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[9]||(t[9]=(0,i.iM)((function(){return e.copyLink&&e.copyLink.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(l,{"fixed-width":"",icon:"share-alt"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.copy_link")),1)],8,lt),e.status.is_local?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("a",{key:8,class:"button-default dropdown-item dropdown-item-icon",title:"Source",href:e.status.external_url,target:"_blank"},[(0,o.Wm)(l,{"fixed-width":"",icon:"external-link-alt"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.external_source")),1)],8,ut)),(0,o._)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:[t[10]||(t[10]=(0,i.iM)((function(){return e.reportStatus&&e.reportStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(l,{"fixed-width":"",icon:["far","flag"]}),(0,o._)("span",null,(0,r.zw)(e.$t("user_card.report")),1)],8,dt)])]})),trigger:(0,o.w5)((function(){return[(0,o._)("span",pt,[(0,o.Wm)(u,{class:"fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{class:"fa-scale-110",icon:"ellipsis-h"}),(0,o.wy)((0,o.Wm)(l,{class:"focus-marker",transform:"shrink-6 up-8 right-16",icon:"plus"},null,512),[[i.F8,!e.expanded]]),(0,o.wy)((0,o.Wm)(l,{class:"focus-marker",transform:"shrink-6 up-8 right-16",icon:"times"},null,512),[[i.F8,e.expanded]])]})),_:1})]),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingDeleteDialog?((0,o.wg)(),(0,o.j4)(d,{key:0,title:e.$t("status.delete_confirm_title"),"cancel-text":e.$t("status.delete_confirm_cancel_button"),"confirm-text":e.$t("status.delete_confirm_accept_button"),onCancelled:e.hideDeleteStatusConfirmDialog,onAccepted:e.doDeleteStatus},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("status.delete_confirm")),1)]})),_:1},8,["title","cancel-text","confirm-text","onCancelled","onAccepted"])):(0,o.kq)("",!0)]))]})),_:1},8,["onShow","onClose"])}]]);var gt=n(58508),vt=n(48173),wt=n(19066),bt=n(1840),yt=n(38146),_t=n(92820),kt={key:1,class:"status-preview-no-content faint"},St={key:2,class:"status-preview-no-content"},jt=n(13311),Ct=n.n(jt);fe.vI.add(ge.IJ7);const Ot={name:"StatusPopover",props:["statusId"],data:function(){return{error:!1}},computed:{status:function(){return Ct()(this.$store.state.statuses.allStatuses,{id:this.statusId})}},components:{Status:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,75245))})),Popover:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,91447))}))},methods:{enter:function(){var e=this;if(!this.status){if(!this.statusId)return void(this.error=!0);this.$store.dispatch("fetchStatus",this.statusId).then((function(t){return e.error=!1})).catch((function(t){return e.error=!0}))}}},watch:{status:function(e,t){var n=this;e!==t&&this.$nextTick((function(){return n.$refs.popover.updateStyles()}))}}},Pt=(0,we.Z)(Ot,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("Status"),l=(0,o.up)("FAIcon"),u=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(u,{ref:"popover",trigger:"hover","stay-on-click":!0,"popover-class":"popover-default status-popover","bound-to":{x:"container"},onShow:e.enter},{trigger:(0,o.w5)((function(){return[(0,o.WI)(e.$slots,"default")]})),content:(0,o.w5)((function(){return[e.status?((0,o.wg)(),(0,o.j4)(c,{key:0,"is-preview":!0,statusoid:e.status,compact:!0},null,8,["statusoid"])):e.error?((0,o.wg)(),(0,o.iD)("div",kt,(0,r.zw)(e.$t("status.status_unavailable")),1)):((0,o.wg)(),(0,o.iD)("div",St,[(0,o.Wm)(l,{icon:"circle-notch",spin:"",size:"2x"})]))]})),_:3},8,["onShow"])}]]);var zt=n(22588),Dt={class:"user-list-popover"},It={class:"user-list-names"},xt={class:"user-list-screen-name"},Tt=n(42262);fe.vI.add(ge.IJ7);const $t={name:"UserListPopover",props:["users"],components:{RichContent:_t.Z,UnicodeDomainIndicator:Tt.Z,Popover:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,91447))})),UserAvatar:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,48173))}))},computed:{usersCapped:function(){return this.users.slice(0,16)}}},Ut=(0,we.Z)($t,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("UserAvatar"),l=(0,o.up)("RichContent"),u=(0,o.up)("UnicodeDomainIndicator"),d=(0,o.up)("FAIcon"),p=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(p,{trigger:"hover",placement:"top",offset:{y:5}},{trigger:(0,o.w5)((function(){return[(0,o.WI)(e.$slots,"default")]})),content:(0,o.w5)((function(){return[(0,o._)("div",Dt,[e.users.length?((0,o.wg)(!0),(0,o.iD)(o.HY,{key:0},(0,o.Ko)(e.usersCapped,(function(e){return(0,o.wg)(),(0,o.iD)("div",{key:e.id,class:"user-list-row"},[(0,o.Wm)(c,{user:e,class:"avatar-small",compact:!0},null,8,["user"]),(0,o._)("div",It,[(0,o.Wm)(l,{class:"username",title:"@"+e.screen_name_ui,html:e.name_html,emoji:e.emoji},null,8,["title","html","emoji"]),(0,o._)("span",xt,(0,r.zw)(e.screen_name_ui),1),(0,o.Wm)(u,{user:e},null,8,["user"])])])})),128)):((0,o.wg)(),(0,o.j4)(d,{key:1,icon:"circle-notch",spin:"",size:"3x"}))])]})),_:3})}]]);var Mt={class:"EmojiReactions"},At=["onClick"],Lt={class:"reaction-emoji"};const Et={name:"EmojiReactions",components:{UserAvatar:vt.default,UserListPopover:Ut},props:["status"],data:function(){return{showAll:!1}},computed:{tooManyReactions:function(){return this.status.emoji_reactions.length>12},emojiReactions:function(){return this.showAll?this.status.emoji_reactions:this.status.emoji_reactions.slice(0,12)},showMoreString:function(){return"+".concat(this.status.emoji_reactions.length-12)},accountsForEmoji:function(){return this.status.emoji_reactions.reduce((function(e,t){return e[t.name]=t.accounts||[],e}),{})},loggedIn:function(){return!!this.$store.state.users.currentUser}},methods:{toggleShowAll:function(){this.showAll=!this.showAll},reactedWith:function(e){return this.status.emoji_reactions.find((function(t){return t.name===e})).me},fetchEmojiReactionsByIfMissing:function(){this.status.emoji_reactions.find((function(e){return!e.accounts}))&&this.$store.dispatch("fetchEmojiReactionsBy",this.status.id)},reactWith:function(e){this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:e})},unreact:function(e){this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:e})},emojiOnClick:function(e,t){this.loggedIn&&(this.reactedWith(e)?this.unreact(e):this.reactWith(e))}}},Ft=(0,we.Z)(Et,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("UserListPopover");return(0,o.wg)(),(0,o.iD)("div",Mt,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.emojiReactions,(function(n){return(0,o.wg)(),(0,o.j4)(c,{key:n.name,users:e.accountsForEmoji[n.name]},{default:(0,o.w5)((function(){return[(0,o._)("button",{class:(0,r.C_)(["emoji-reaction btn button-default",{"-picked-reaction":e.reactedWith(n.name),"not-clickable":!e.loggedIn}]),onClick:function(t){return e.emojiOnClick(n.name,t)},onMouseenter:t[0]||(t[0]=function(t){return e.fetchEmojiReactionsByIfMissing()})},[(0,o._)("span",Lt,(0,r.zw)(n.name),1),(0,o._)("span",null,(0,r.zw)(n.count),1)],42,At)]})),_:2},1032,["users"])})),128)),e.tooManyReactions?((0,o.wg)(),(0,o.iD)("a",{key:0,class:"emoji-reaction-expand faint",href:"javascript:void(0)",onClick:t[1]||(t[1]=function(){return e.toggleShowAll&&e.toggleShowAll.apply(e,arguments)})},(0,r.zw)(e.showAll?e.$t("general.show_less"):e.showMoreString),1)):(0,o.kq)("",!0)])}]]);var Rt=n(12061),qt=n(21268),Nt=n(20460),Zt=n(4493),Wt=n(95052),Bt=n(67828);function Ht(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Vt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ht(Object(n),!0).forEach((function(t){(0,se.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ht(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}fe.vI.add(ge.FU$,ge.g4A,ge.byT,ge._1N,ge.NBC,ge.x5v,ge.Lh7,ge.CPW,ge.Tab,ge.RKn,ge.cNd,ge.Aq,ge.Mdf,ge.RP7,ge.mTx,ge.ptq,ge.cLY);var Kt,Gt=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},Yt=function(e,t,n){var o=Gt(t),r="controlledSet".concat(o),i="uncontrolled".concat(o);e[r]?e[r](n):e[i]=n};const Jt={name:"Status",components:{ReplyButton:be,FavoriteButton:De,ReactButton:He,RetweetButton:et,ExtraButtons:ft,PostStatusForm:gt.Z,UserAvatar:vt.default,AvatarList:wt.Z,Timeago:bt.Z,StatusPopover:Pt,UserListPopover:Ut,EmojiReactions:Ft,StatusContent:yt.Z,RichContent:_t.Z,MentionLink:Nt.Z,MentionsLine:qt.Z,UserPopover:zt.default,UserLink:Rt.Z},props:["statusoid","expandable","inConversation","focused","highlight","compact","replies","isPreview","noHeading","inlineExpanded","showPinned","inProfile","profileUserId","simpleTree","controlledThreadDisplayStatus","controlledToggleThreadDisplay","showOtherRepliesAsButton","controlledShowingTall","controlledToggleShowingTall","controlledExpandingSubject","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject","controlledReplying","controlledToggleReplying","controlledMediaPlaying","controlledSetMediaPlaying","dive"],data:function(){return{uncontrolledReplying:!1,unmuted:!1,userExpanded:!1,uncontrolledMediaPlaying:[],suspendable:!0,error:null,headTailLinks:null}},computed:Vt(Vt({},(Kt=["replying","mediaPlaying"],Kt.reduce((function(e,t){var n=Gt(t),o="controlledToggle".concat(n),r="controlled".concat(n),i="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[o]&&void 0===this.$props[o]||!this[o]?this[i]:this[r]},e}),{}))),{},{muteWords:function(){return this.mergedConfig.muteWords},showReasonMutedThread:function(){return(this.status.thread_muted||this.status.reblog&&this.status.reblog.thread_muted)&&!this.inConversation},repeaterClass:function(){var e=this.statusoid.user;return(0,Wt.M)(e)},userClass:function(){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user;return(0,Wt.M)(e)},deleted:function(){return this.statusoid.deleted},repeaterStyle:function(){var e=this.statusoid.user,t=this.mergedConfig.highlight;return(0,Wt.q)(t[e.screen_name])},userStyle:function(){if(!this.noHeading){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user,t=this.mergedConfig.highlight;return(0,Wt.q)(t[e.screen_name])}},userProfileLink:function(){return this.generateUserProfileLink(this.status.user.id,this.status.user.screen_name)},replyProfileLink:function(){if(this.isReply){var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e?e.statusnet_profile_url:"NOT_FOUND"}},retweet:function(){return!!this.statusoid.retweeted_status},retweeterUser:function(){return this.statusoid.user},retweeter:function(){return this.statusoid.user.name||this.statusoid.user.screen_name_ui},retweeterHtml:function(){return this.statusoid.user.name},retweeterProfileLink:function(){return this.generateUserProfileLink(this.statusoid.user.id,this.statusoid.user.screen_name)},status:function(){return this.retweet?this.statusoid.retweeted_status:this.statusoid},statusFromGlobalRepository:function(){return this.$store.state.statuses.allStatusesObject[this.status.id]},loggedIn:function(){return!!this.currentUser},muteWordHits:function(){return(0,Bt.u)(this.status,this.muteWords)},rtBotStatus:function(){return this.statusoid.user.bot},botStatus:function(){return this.status.user.bot},botIndicator:function(){return this.botStatus&&!this.hideBotIndication},rtBotIndicator:function(){return this.rtBotStatus&&!this.hideBotIndication},mentionsLine:function(){var e=this;if(!this.headTailLinks)return[];var t=new Set(this.headTailLinks.writtenMentions.map((function(e){return e.url})));return this.status.attentions.filter((function(n){return n.id!==e.status.in_reply_to_user_id&&n.statusnet_profile_url!==e.status.user.statusnet_profile_url&&!t.has(n.statusnet_profile_url)})).map((function(e){return{url:e.statusnet_profile_url,content:e.screen_name,userId:e.id}}))},hasMentionsLine:function(){return this.mentionsLine.length>0},muted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.userIsMuted||status.thread_muted||this.muteWordHits.length>0||this.muteBotStatuses&&this.botStatus&&!this.compact;return!this.unmuted&&!this.shouldNotMute&&e},userIsMuted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.status,t=e.reblog,n=this.$store.getters.relationship(e.user.id),o=t&&this.$store.getters.relationship(t.user.id);return e.muted||t&&t.muted||n.muting||o&&o.muting},shouldNotMute:function(){var e=this.status,t=e.reblog;return(this.inProfile&&(!t&&e.user.id===this.profileUserId||t&&t.user.id===this.profileUserId)||this.inConversation&&e.thread_muted)&&!this.muteWordHits.length>0},hideMutedUsers:function(){return this.mergedConfig.hideMutedPosts},hideMutedThreads:function(){return this.mergedConfig.hideMutedThreads},hideFilteredStatuses:function(){return this.mergedConfig.hideFilteredStatuses},hideWordFilteredPosts:function(){return this.mergedConfig.hideWordFilteredPosts},hideStatus:function(){return!this.shouldNotMute&&(this.muted&&this.hideFilteredStatuses||this.userIsMuted&&this.hideMutedUsers||this.status.thread_muted&&this.hideMutedThreads||this.muteWordHits.length>0&&this.hideWordFilteredPosts)},isFocused:function(){return!!this.focused||!!this.inConversation&&this.status.id===this.highlight},isReply:function(){return!(!this.status.in_reply_to_status_id||!this.status.in_reply_to_user_id)},replyToName:function(){if(this.status.in_reply_to_screen_name)return this.status.in_reply_to_screen_name;var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e&&e.screen_name_ui},replySubject:function(){if(!this.status.summary)return"";var e=ue()(this.status.summary),t=this.mergedConfig.subjectLineBehavior,n=e.match(/^re[: ]/i);return"noop"!==t&&n||"masto"===t?e:"email"===t?"re: ".concat(e):"noop"===t?"":void 0},combinedFavsAndRepeatsUsers:function(){var e=[].concat(this.statusFromGlobalRepository.favoritedBy,this.statusFromGlobalRepository.rebloggedBy);return ce()(e,"id")},tags:function(){return this.status.tags.filter((function(e){return e.hasOwnProperty("name")})).map((function(e){return e.name})).join(" ")},hidePostStats:function(){return this.mergedConfig.hidePostStats},muteBotStatuses:function(){return this.mergedConfig.muteBotStatuses},hideBotIndication:function(){return this.mergedConfig.hideBotIndication},currentUser:function(){return this.$store.state.users.currentUser},betterShadow:function(){return this.$store.state.interface.browserSupport.cssFilter},mergedConfig:function(){return this.$store.getters.mergedConfig},isSuspendable:function(){return!this.replying&&0===this.mediaPlaying.length},inThreadForest:function(){return!!this.controlledThreadDisplayStatus},threadShowing:function(){return"showing"===this.controlledThreadDisplayStatus},visibilityLocalized:function(){return this.$i18n.t("general.scope_in_timeline."+this.status.visibility)},isEdited:function(){return null!==this.status.edited_at},editingAvailable:function(){return this.$store.state.instance.editingAvailable}}),methods:{visibilityIcon:function(e){switch(e){case"private":return"lock";case"unlisted":return"lock-open";case"direct":return"envelope";default:return"globe"}},showError:function(e){this.error=e},clearError:function(){this.error=void 0},toggleReplying:function(){var e,t,n,o;e=this,t=Gt("replying"),n="controlledToggle".concat(t),o="uncontrolled".concat(t),e[n]?e[n]():e[o]=!e[o]},gotoOriginal:function(e){this.inConversation&&this.$emit("goto",e)},toggleExpanded:function(){this.$emit("toggleExpanded")},toggleMute:function(){this.unmuted=!this.unmuted},toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},generateUserProfileLink:function(e,t){return(0,Zt.Z)(e,t,this.$store.state.instance.restrictedNicknames)},addMediaPlaying:function(e){Yt(this,"mediaPlaying",this.mediaPlaying.concat(e))},removeMediaPlaying:function(e){Yt(this,"mediaPlaying",this.mediaPlaying.filter((function(t){return t!==e})))},setHeadTailLinks:function(e){this.headTailLinks=e},toggleThreadDisplay:function(){this.controlledToggleThreadDisplay()},scrollIfHighlighted:function(e){var t=e;if(this.status.id===t){var n=this.$el.getBoundingClientRect();n.top<100||n.height>=window.innerHeight-50?window.scrollBy(0,n.top-100):n.bottom>window.innerHeight-50&&window.scrollBy(0,n.bottom-window.innerHeight+50)}}},watch:{highlight:function(e){this.scrollIfHighlighted(e)},"status.repeat_num":function(e){this.isFocused&&this.statusFromGlobalRepository.rebloggedBy&&this.statusFromGlobalRepository.rebloggedBy.length!==e&&this.$store.dispatch("fetchRepeats",this.status.id)},"status.fave_num":function(e){this.isFocused&&this.statusFromGlobalRepository.favoritedBy&&this.statusFromGlobalRepository.favoritedBy.length!==e&&this.$store.dispatch("fetchFavs",this.status.id)},isSuspendable:function(e){this.suspendable=e}}},Qt=(0,we.Z)(Jt,[["render",function(e,t,n,se,ae,ce){var le=(0,o.up)("FAIcon"),ue=(0,o.up)("user-link"),de=(0,o.up)("UserAvatar"),pe=(0,o.up)("RichContent"),me=(0,o.up)("router-link"),he=(0,o.up)("UserPopover"),fe=(0,o.up)("Timeago"),ge=(0,o.up)("StatusPopover"),ve=(0,o.up)("MentionLink"),we=(0,o.up)("MentionsLine"),be=(0,o.up)("i18n-t"),ye=(0,o.up)("StatusContent"),_e=(0,o.up)("UserListPopover"),ke=(0,o.up)("AvatarList"),Se=(0,o.up)("EmojiReactions"),je=(0,o.up)("reply-button"),Ce=(0,o.up)("retweet-button"),Oe=(0,o.up)("favorite-button"),Pe=(0,o.up)("ReactButton"),ze=(0,o.up)("extra-buttons"),De=(0,o.up)("PostStatusForm");return e.hideStatus?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",{key:0,ref:"root",class:(0,r.C_)(["Status",[{"-focused":e.isFocused},{"-conversation":e.inlineExpanded}]])},[e.error?((0,o.wg)(),(0,o.iD)("div",s,[(0,o.Uk)((0,r.zw)(e.error)+" ",1),(0,o._)("span",{class:"fa-scale-110 fa-old-padding",onClick:t[0]||(t[0]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,o.Wm)(le,{icon:"times"})])])):(0,o.kq)("",!0),e.muted&&!e.isPreview?((0,o.wg)(),(0,o.iD)("div",a,[(0,o._)("small",c,[e.muted&&e.retweet?((0,o.wg)(),(0,o.j4)(le,{key:0,class:"fa-scale-110 fa-old-padding repeat-icon",icon:"retweet"})):(0,o.kq)("",!0),(0,o.Wm)(ue,{user:e.status.user,at:!1},null,8,["user"])]),e.showReasonMutedThread?((0,o.wg)(),(0,o.iD)("small",l,(0,r.zw)(e.$t("status.thread_muted")),1)):(0,o.kq)("",!0),e.showReasonMutedThread&&e.muteWordHits.length>0?((0,o.wg)(),(0,o.iD)("small",u,(0,r.zw)(e.$t("status.thread_muted_and_words")),1)):(0,o.kq)("",!0),(0,o._)("small",{class:"mute-words",title:e.muteWordHits.join(", ")},(0,r.zw)(e.muteWordHits.join(", ")),9,d),(0,o._)("button",{class:"unmute button-unstyled",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.toggleMute&&e.toggleMute.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(le,{icon:"eye-slash",class:"fa-scale-110 fa-old-padding"})])])):((0,o.wg)(),(0,o.iD)(o.HY,{key:2},[e.showPinned?((0,o.wg)(),(0,o.iD)("div",p,[(0,o.Wm)(le,{icon:"thumbtack",class:"faint"}),(0,o._)("span",m,(0,r.zw)(e.$t("status.pinned")),1)])):(0,o.kq)("",!0),!e.retweet||e.noHeading||e.inConversation?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",{key:1,class:(0,r.C_)([[e.repeaterClass,{highlighted:e.repeaterStyle}],"status-container repeat-info"]),style:(0,r.j5)([e.repeaterStyle])},[e.retweet?((0,o.wg)(),(0,o.j4)(de,{key:0,class:"left-side repeater-avatar",bot:e.rtBotIndicator,"better-shadow":e.betterShadow,user:e.statusoid.user},null,8,["bot","better-shadow","user"])):(0,o.kq)("",!0),(0,o._)("div",h,[(0,o._)("bdi",{class:"status-username repeater-name",title:e.retweeter},[e.retweeterHtml?((0,o.wg)(),(0,o.j4)(me,{key:0,to:e.retweeterProfileLink},{default:(0,o.w5)((function(){return[(0,o.Wm)(pe,{html:e.retweeterHtml,emoji:e.retweeterUser.emoji},null,8,["html","emoji"])]})),_:1},8,["to"])):((0,o.wg)(),(0,o.j4)(me,{key:1,to:e.retweeterProfileLink},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.retweeter),1)]})),_:1},8,["to"]))],8,f),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o.Wm)(le,{icon:"retweet",class:"repeat-icon",title:e.$t("tool_tip.repeat")},null,8,["title"]),(0,o.Uk)(" "+(0,r.zw)(e.$t("timeline.repeated")),1)])],6)),e.deleted?((0,o.wg)(),(0,o.iD)("div",te,[(0,o._)("div",ne,[(0,o.Wm)(de,{class:"post-avatar",compact:e.compact,bot:e.botIndicator},null,8,["compact","bot"])]),(0,o._)("div",oe,[(0,o._)("div",re,(0,r.zw)(e.$t("status.status_deleted")),1),e.replying?((0,o.wg)(),(0,o.j4)(je,{key:0,replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"])):(0,o.kq)("",!0)])])):((0,o.wg)(),(0,o.iD)("div",{key:2,class:(0,r.C_)([[e.userClass,{highlighted:e.userStyle,"-repeat":e.retweet&&!e.inConversation}],"status-container"]),style:(0,r.j5)([e.userStyle]),"data-tags":e.tags},[e.noHeading?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",v,[(0,o._)("a",{href:e.$router.resolve(e.userProfileLink).href,onClick:t[2]||(t[2]=(0,i.iM)((function(){}),["prevent"]))},[(0,o.Wm)(he,{"user-id":e.status.user.id,"overlay-centers":!0},{default:(0,o.w5)((function(){return[(0,o.Wm)(de,{class:"post-avatar",bot:e.botIndicator,compact:e.compact,"better-shadow":e.betterShadow,user:e.status.user},null,8,["bot","compact","better-shadow","user"])]})),_:1},8,["user-id"])],8,w)])),(0,o._)("div",b,[e.noHeading?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",y,[(0,o._)("div",_,[(0,o._)("div",k,[e.status.user.name_html?((0,o.wg)(),(0,o.iD)("h4",{key:0,class:"status-username",title:e.status.user.name},[(0,o.Wm)(pe,{html:e.status.user.name,emoji:e.status.user.emoji},null,8,["html","emoji"])],8,S)):((0,o.wg)(),(0,o.iD)("h4",{key:1,class:"status-username",title:e.status.user.name},(0,r.zw)(e.status.user.name),9,j)),(0,o.Wm)(ue,{class:"account-name",title:e.status.user.screen_name_ui,user:e.status.user,at:!1},null,8,["title","user"]),e.status.user&&e.status.user.favicon?((0,o.wg)(),(0,o.iD)("img",{key:2,class:"status-favicon",src:e.status.user.favicon},null,8,C)):(0,o.kq)("",!0)]),(0,o._)("span",O,[(0,o.Wm)(me,{class:"timeago faint-link",to:{name:"conversation",params:{id:e.status.id}}},{default:(0,o.w5)((function(){return[(0,o.Wm)(fe,{time:e.status.created_at,"auto-update":60},null,8,["time"])]})),_:1},8,["to"]),e.status.visibility?((0,o.wg)(),(0,o.iD)("span",{key:0,class:"visibility-icon",title:e.visibilityLocalized},[(0,o.Wm)(le,{"fixed-width":"",class:"fa-scale-110",icon:e.visibilityIcon(e.status.visibility)},null,8,["icon"])],8,P)):(0,o.kq)("",!0),e.expandable&&!e.isPreview?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-unstyled",title:e.$t("status.expand"),onClick:t[3]||(t[3]=(0,i.iM)((function(){return e.toggleExpanded&&e.toggleExpanded.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(le,{"fixed-width":"",class:"fa-scale-110",icon:"plus-square"})],8,z)):(0,o.kq)("",!0),e.unmuted?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-unstyled",onClick:t[4]||(t[4]=(0,i.iM)((function(){return e.toggleMute&&e.toggleMute.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(le,{"fixed-width":"",icon:"eye-slash",class:"fa-scale-110"})])):(0,o.kq)("",!0),e.inThreadForest&&e.replies&&e.replies.length&&!e.simpleTree?((0,o.wg)(),(0,o.iD)("button",{key:3,class:"button-unstyled",title:e.threadShowing?e.$t("status.thread_hide"):e.$t("status.thread_show"),"aria-expanded":e.threadShowing?"true":"false",onClick:t[5]||(t[5]=(0,i.iM)((function(){return e.toggleThreadDisplay&&e.toggleThreadDisplay.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(le,{"fixed-width":"",class:"fa-scale-110",icon:e.threadShowing?"chevron-up":"chevron-down"},null,8,["icon"])],8,D)):(0,o.kq)("",!0),e.dive&&!e.simpleTree?((0,o.wg)(),(0,o.iD)("button",{key:4,class:"button-unstyled",title:e.$t("status.show_only_conversation_under_this"),onClick:t[6]||(t[6]=(0,i.iM)((function(){return e.dive&&e.dive.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(le,{"fixed-width":"",class:"fa-scale-110",icon:"angle-double-right"})],8,I)):(0,o.kq)("",!0)])]),e.isReply||e.hasMentionsLine?((0,o.wg)(),(0,o.iD)("div",x,[e.isReply?((0,o.wg)(),(0,o.iD)("span",T,[e.isPreview?((0,o.wg)(),(0,o.iD)("span",M,[(0,o._)("span",A,(0,r.zw)(e.$t("status.reply_to")),1)])):((0,o.wg)(),(0,o.j4)(ge,{key:0,"status-id":e.status.parent_visible&&e.status.in_reply_to_status_id,class:(0,r.C_)(["reply-to-popover",{"-strikethrough":!e.status.parent_visible}]),style:{"min-width":"0"}},{default:(0,o.w5)((function(){return[(0,o._)("button",{class:"button-unstyled reply-to","aria-label":e.$t("tool_tip.reply"),onClick:t[7]||(t[7]=(0,i.iM)((function(t){return e.gotoOriginal(e.status.in_reply_to_status_id)}),["prevent"]))},[(0,o.Wm)(le,{class:"fa-scale-110 fa-old-padding",icon:"reply",flip:"horizontal"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("span",U,(0,r.zw)(e.$t("status.reply_to")),1)],8,$)]})),_:1},8,["status-id","class"])),(0,o.Wm)(ve,{content:e.replyToName,url:e.replyProfileLink,"user-id":e.status.in_reply_to_user_id,"user-screen-name":e.status.in_reply_to_screen_name},null,8,["content","url","user-id","user-screen-name"])])):(0,o.kq)("",!0),e.hasMentionsLine?((0,o.wg)(),(0,o.iD)("span",L,[(0,o._)("span",{class:"mentions","aria-label":e.$t("tool_tip.mentions"),onClick:t[8]||(t[8]=(0,i.iM)((function(t){return e.gotoOriginal(e.status.in_reply_to_status_id)}),["prevent"]))},[(0,o._)("span",F,(0,r.zw)(e.$t("status.mentions")),1)],8,E),e.hasMentionsLine?((0,o.wg)(),(0,o.j4)(we,{key:0,mentions:e.mentionsLine.slice(0,1),class:"mentions-line-first"},null,8,["mentions"])):(0,o.kq)("",!0)])):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),e.hasMentionsLine?((0,o.wg)(),(0,o.j4)(we,{key:2,mentions:e.mentionsLine.slice(1),class:"mentions-line"},null,8,["mentions"])):(0,o.kq)("",!0)])):(0,o.kq)("",!0),e.isEdited&&e.editingAvailable&&!e.isPreview?((0,o.wg)(),(0,o.iD)("div",R,[(0,o.Wm)(be,{keypath:"status.edited_at",tag:"span"},{time:(0,o.w5)((function(){return[(0,o.Wm)(fe,{"template-key":"time.in_past",time:e.status.edited_at,"auto-update":60,"long-format":!0},null,8,["time"])]})),_:1})])):(0,o.kq)("",!0)])),(0,o.Wm)(ye,{ref:"content",status:e.status,"no-heading":e.noHeading,highlight:e.highlight,focused:e.isFocused,"controlled-showing-tall":e.controlledShowingTall,"controlled-expanding-subject":e.controlledExpandingSubject,"controlled-showing-long-subject":e.controlledShowingLongSubject,"controlled-toggle-showing-tall":e.controlledToggleShowingTall,"controlled-toggle-expanding-subject":e.controlledToggleExpandingSubject,"controlled-toggle-showing-long-subject":e.controlledToggleShowingLongSubject,onMediaplay:t[9]||(t[9]=function(t){return e.addMediaPlaying(t)}),onMediapause:t[10]||(t[10]=function(t){return e.removeMediaPlaying(t)}),onParseReady:e.setHeadTailLinks},null,8,["status","no-heading","highlight","focused","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","onParseReady"]),e.inConversation&&!e.isPreview&&e.replies&&e.replies.length?((0,o.wg)(),(0,o.iD)("div",q,[e.showOtherRepliesAsButton&&e.replies.length>1?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-unstyled -link faint",title:e.$tc("status.ancestor_follow",e.replies.length-1,{numReplies:e.replies.length-1}),onClick:t[11]||(t[11]=(0,i.iM)((function(){return e.dive&&e.dive.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.$tc("status.replies_list_with_others",e.replies.length-1,{numReplies:e.replies.length-1})),9,N)):((0,o.wg)(),(0,o.iD)("span",Z,(0,r.zw)(e.$t("status.replies_list")),1)),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.replies,(function(t){return(0,o.wg)(),(0,o.j4)(ge,{key:t.id,"status-id":t.id},{default:(0,o.w5)((function(){return[(0,o._)("button",{class:"button-unstyled -link reply-link",onClick:(0,i.iM)((function(n){return e.gotoOriginal(t.id)}),["prevent"])},(0,r.zw)(t.name),9,W)]})),_:2},1032,["status-id"])})),128))])):(0,o.kq)("",!0),(0,o.Wm)(i.uT,{name:"fade"},{default:(0,o.w5)((function(){return[!e.hidePostStats&&e.isFocused&&e.combinedFavsAndRepeatsUsers.length>0?((0,o.wg)(),(0,o.iD)("div",B,[(0,o._)("div",H,[e.statusFromGlobalRepository.rebloggedBy&&e.statusFromGlobalRepository.rebloggedBy.length>0?((0,o.wg)(),(0,o.j4)(_e,{key:0,users:e.statusFromGlobalRepository.rebloggedBy},{default:(0,o.w5)((function(){return[(0,o._)("div",V,[(0,o._)("a",K,(0,r.zw)(e.$t("status.repeats")),1),(0,o._)("div",G,(0,r.zw)(e.statusFromGlobalRepository.rebloggedBy.length),1)])]})),_:1},8,["users"])):(0,o.kq)("",!0),e.statusFromGlobalRepository.favoritedBy&&e.statusFromGlobalRepository.favoritedBy.length>0?((0,o.wg)(),(0,o.j4)(_e,{key:1,users:e.statusFromGlobalRepository.favoritedBy},{default:(0,o.w5)((function(){return[(0,o._)("div",Y,[(0,o._)("a",J,(0,r.zw)(e.$t("status.favorites")),1),(0,o._)("div",Q,(0,r.zw)(e.statusFromGlobalRepository.favoritedBy.length),1)])]})),_:1},8,["users"])):(0,o.kq)("",!0),(0,o._)("div",X,[(0,o.Wm)(ke,{users:e.combinedFavsAndRepeatsUsers},null,8,["users"])])])])):(0,o.kq)("",!0)]})),_:1}),!e.mergedConfig.emojiReactionsOnTimeline&&!e.isFocused||e.noHeading||e.isPreview?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(Se,{key:2,status:e.status},null,8,["status"])),e.noHeading||e.isPreview?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",ee,[(0,o.Wm)(je,{replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"]),(0,o.Wm)(Ce,{visibility:e.status.visibility,"logged-in":e.loggedIn,status:e.status},null,8,["visibility","logged-in","status"]),(0,o.Wm)(Oe,{"logged-in":e.loggedIn,status:e.status},null,8,["logged-in","status"]),e.loggedIn?((0,o.wg)(),(0,o.j4)(Pe,{key:0,status:e.status},null,8,["status"])):(0,o.kq)("",!0),(0,o.Wm)(ze,{status:e.status,onOnError:e.showError,onOnSuccess:e.clearError},null,8,["status","onOnError","onOnSuccess"])]))])],14,g)),e.replying?((0,o.wg)(),(0,o.iD)("div",ie,[(0,o.Wm)(De,{class:"reply-body","reply-to":e.status.id,attentions:e.status.attentions,"replied-user":e.status.user,"copy-message-scope":e.status.visibility,subject:e.replySubject,onPosted:e.toggleReplying},null,8,["reply-to","attentions","replied-user","copy-message-scope","subject","onPosted"])])):(0,o.kq)("",!0)],64))],2))}]])},38146:(e,t,n)=>{"use strict";n.d(t,{Z:()=>V});var o=n(66252),r=n(3577),i={key:0},s={key:1},a={key:3,class:"link-preview media-body"},c=n(4942),l=n(66596),u=["role"],d=["title"],p={class:"option-result-label"},m={class:"result-percentage"},h=["role","aria-labelledby","aria-checked","onClick"],f=["disabled","value"],g=["disabled","value"],v={class:"option-vote"},w={class:"footer faint"},b=["disabled"],y={class:"total"},_=n(35161),k=n.n(_),S=n(84486),j=n.n(S),C=n(1840),O=n(92820);const P={name:"Poll",props:["basePoll","emoji"],components:{Timeago:C.Z,RichContent:O.Z},data:function(){return{loading:!1,choices:[],randomSeed:"".concat(Math.random()).replace(".","-")}},created:function(){this.$store.state.polls.pollsObject[this.pollId]||this.$store.dispatch("mergeOrAddPoll",this.basePoll),this.$store.dispatch("trackPoll",this.pollId)},unmounted:function(){this.$store.dispatch("untrackPoll",this.pollId)},computed:{pollId:function(){return this.basePoll.id},poll:function(){return this.$store.state.polls.pollsObject[this.pollId]||{}},options:function(){return this.poll&&this.poll.options||[]},expiresAt:function(){return this.poll&&this.poll.expires_at||0},expired:function(){return this.poll&&this.poll.expired||!1},loggedIn:function(){return this.$store.state.users.currentUser},showResults:function(){return this.poll.voted||this.expired||!this.loggedIn},totalVotesCount:function(){return this.poll.votes_count},containerClass:function(){return{loading:this.loading}},choiceIndices:function(){return this.choices.map((function(e,t){return e&&t})).filter((function(e){return"number"==typeof e}))},isDisabled:function(){var e=0===this.choiceIndices.length;return this.loading||e}},methods:{percentageForOption:function(e){return 0===this.totalVotesCount?0:Math.round(e/this.totalVotesCount*100)},resultTitle:function(e){return"".concat(e.votes_count,"/").concat(this.totalVotesCount," ").concat(this.$t("polls.votes"))},fetchPoll:function(){this.$store.dispatch("refreshPoll",{id:this.statusId,pollId:this.poll.id})},activateOption:function(e){var t=this.$el.querySelectorAll("input"),n=this.$el.querySelector('input[value="'.concat(e,'"]'));this.poll.multiple?n.checked=!n.checked:(j()(t,(function(e){e.checked=!1})),n.checked=!0),this.choices=k()(t,(function(e){return e.checked}))},optionId:function(e){return"poll".concat(this.poll.id,"-").concat(e)},vote:function(){var e=this;0!==this.choiceIndices.length&&(this.loading=!0,this.$store.dispatch("votePoll",{id:this.statusId,pollId:this.poll.id,choices:this.choiceIndices}).then((function(t){e.loading=!1})))}}};var z=n(83744);const D=(0,z.Z)(P,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("RichContent"),l=(0,o.up)("Timeago"),_=(0,o.up)("i18n-t");return(0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["poll",e.containerClass])},[(0,o._)("div",{role:e.showResults?"section":e.poll.multiple?"group":"radiogroup"},[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.options,(function(t,n){return(0,o.wg)(),(0,o.iD)("div",{key:n,class:"poll-option"},[e.showResults?((0,o.wg)(),(0,o.iD)("div",{key:0,title:e.resultTitle(t),class:"option-result"},[(0,o._)("div",p,[(0,o._)("span",m,(0,r.zw)(e.percentageForOption(t.votes_count))+"% ",1),(0,o.Wm)(c,{html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["html","emoji"])]),(0,o._)("div",{class:"result-fill",style:(0,r.j5)({width:"".concat(e.percentageForOption(t.votes_count),"%")})},null,4)],8,d)):((0,o.wg)(),(0,o.iD)("div",{key:1,tabindex:"0",role:e.poll.multiple?"checkbox":"radio","aria-labelledby":"option-vote-".concat(e.randomSeed,"-").concat(n),"aria-checked":e.choices[n],onClick:function(t){return e.activateOption(n)}},[e.poll.multiple?((0,o.wg)(),(0,o.iD)("input",{key:0,type:"checkbox",class:"poll-checkbox",disabled:e.loading,value:n},null,8,f)):((0,o.wg)(),(0,o.iD)("input",{key:1,type:"radio",disabled:e.loading,value:n},null,8,g)),(0,o._)("label",v,[(0,o.Wm)(c,{id:"option-vote-".concat(e.randomSeed,"-").concat(n),html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["id","html","emoji"])])],8,h))])})),128))],8,u),(0,o._)("div",w,[e.showResults?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:0,class:"btn button-default poll-vote-button",type:"button",disabled:e.isDisabled,onClick:t[0]||(t[0]=function(){return e.vote&&e.vote.apply(e,arguments)})},(0,r.zw)(e.$t("polls.vote")),9,b)),(0,o._)("div",y,["number"==typeof e.poll.voters_count?((0,o.wg)(),(0,o.iD)(o.HY,{key:0},[(0,o.Uk)((0,r.zw)(e.$tc("polls.people_voted_count",e.poll.voters_count,{count:e.poll.voters_count}))+" ·  ",1)],64)):((0,o.wg)(),(0,o.iD)(o.HY,{key:1},[(0,o.Uk)((0,r.zw)(e.$tc("polls.votes_count",e.poll.votes_count,{count:e.poll.votes_count}))+" ·  ",1)],64))]),(0,o._)("span",null,[(0,o.Wm)(_,{scope:"global",keypath:e.expired?"polls.expired":"polls.expires_in"},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{time:e.expiresAt,"auto-update":60,"now-threshold":0},null,8,["time"])]})),_:1},8,["keypath"])])])],2)}]]);var I=n(67671),x=n(49963),T={class:"body"},$=n(58394),U=n(989),M=n(9382),A=n(84131);function L(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}M.vI.add(A.gMD,A.Xig,A.VmB,A.nNP,A.Mm7);const E={name:"StatusContent",props:["compact","status","focused","noHeading","fullContent","singleLine","showingTall","expandingSubject","showingLongSubject","toggleShowingTall","toggleExpandingSubject","toggleShowingLongSubject"],data:function(){return{postLength:this.status.text.length,parseReadyDone:!1}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?L(Object(n),!0).forEach((function(t){(0,c.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):L(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({localCollapseSubjectDefault:function(){return this.mergedConfig.collapseMessageWithSubject},tallStatus:function(){return!this.singleLine&&!this.compact&&this.status.raw_html.split(/<p|<br/).length+this.postLength/80>20},longSubject:function(){return this.status.summary.length>240},mightHideBecauseSubject:function(){return!!this.status.summary&&this.localCollapseSubjectDefault},mightHideBecauseTall:function(){return this.tallStatus&&!(this.status.summary&&this.localCollapseSubjectDefault)},hideSubjectStatus:function(){return this.mightHideBecauseSubject&&!this.expandingSubject},hideTallStatus:function(){return this.mightHideBecauseTall&&!this.showingTall},showingMore:function(){return this.mightHideBecauseTall&&this.showingTall||this.mightHideBecauseSubject&&this.expandingSubject},attachmentTypes:function(){return this.status.attachments.map((function(e){return $.Z.fileType(e.mimetype)}))}},(0,U.Se)(["mergedConfig"])),components:{RichContent:O.Z},mounted:function(){var e=this;this.status.attentions&&this.status.attentions.forEach((function(t){var n=t.id;e.$store.dispatch("fetchUserIfMissing",n)}))},methods:{onParseReady:function(e){var t=this;if(!this.parseReadyDone){this.parseReadyDone=!0,this.$emit("parseReady",e);var n=e.writtenMentions,o=e.invisibleMentions;n.filter((function(e){return!e.notifying})).forEach((function(e){var n=e.content,o=e.url,r=n.replace(/<[^>]+?>/gi,"");if(r.startsWith("@")){var i=r.slice(1),s=o.replace(/^https?:\/\//,"").replace(/\/.+?$/,"");t.$store.dispatch("fetchUserIfMissing","".concat(i,"@").concat(s))}})),this.postLength=o.reduce((function(e,t){return e-t.textContent.length-1}),this.postLength)}},toggleShowMore:function(){this.mightHideBecauseTall?this.toggleShowingTall():this.mightHideBecauseSubject&&this.toggleExpandingSubject()},generateTagLink:function(e){return"/tag/".concat(e)}}},F=(0,z.Z)(E,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("RichContent"),l=(0,o.up)("FAIcon");return(0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["StatusBody",{"-compact":e.compact}])},[(0,o._)("div",T,[e.status.summary_raw_html?((0,o.wg)(),(0,o.iD)("div",{key:0,class:(0,r.C_)(["summary-wrapper",{"-tall":e.longSubject&&!e.showingLongSubject}])},[(0,o.Wm)(c,{class:"media-body summary",html:e.status.summary_raw_html,emoji:e.status.emojis},null,8,["html","emoji"]),(0,o.wy)((0,o._)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[0]||(t[0]=(0,x.iM)((function(){return e.toggleShowingLongSubject&&e.toggleShowingLongSubject.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.$t("status.hide_full_subject")),513),[[x.F8,e.longSubject&&e.showingLongSubject]]),(0,o.wy)((0,o._)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[1]||(t[1]=(0,x.iM)((function(){return e.toggleShowingLongSubject&&e.toggleShowingLongSubject.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.$t("status.show_full_subject")),513),[[x.F8,e.longSubject&&!e.showingLongSubject]])],2)):(0,o.kq)("",!0),(0,o._)("div",{class:(0,r.C_)([{"-tall-status":e.hideTallStatus},"text-wrapper"])},[(0,o.wy)((0,o._)("button",{class:(0,r.C_)(["button-unstyled -link tall-status-hider",{"-focused":e.focused}]),onClick:t[2]||(t[2]=(0,x.iM)((function(){return e.toggleShowMore&&e.toggleShowMore.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.$t("general.show_more")),3),[[x.F8,e.hideTallStatus]]),e.hideSubjectStatus||e.singleLine&&e.status.summary_raw_html?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(c,{key:0,class:(0,r.C_)([{"-single-line":e.singleLine},"text media-body"]),html:e.status.raw_html,emoji:e.status.emojis,"handle-links":!0,greentext:e.mergedConfig.greentext,attentions:e.status.attentions,onParseReady:e.onParseReady},null,8,["class","html","emoji","greentext","attentions","onParseReady"])),(0,o.wy)((0,o._)("button",{class:"button-unstyled -link cw-status-hider",onClick:t[3]||(t[3]=(0,x.iM)((function(){return e.toggleShowMore&&e.toggleShowMore.apply(e,arguments)}),["prevent"]))},[(0,o.Uk)((0,r.zw)(e.$t("status.show_content"))+" ",1),e.attachmentTypes.includes("image")?((0,o.wg)(),(0,o.j4)(l,{key:0,icon:"image"})):(0,o.kq)("",!0),e.attachmentTypes.includes("video")?((0,o.wg)(),(0,o.j4)(l,{key:1,icon:"video"})):(0,o.kq)("",!0),e.attachmentTypes.includes("audio")?((0,o.wg)(),(0,o.j4)(l,{key:2,icon:"music"})):(0,o.kq)("",!0),e.attachmentTypes.includes("unknown")?((0,o.wg)(),(0,o.j4)(l,{key:3,icon:"file"})):(0,o.kq)("",!0),e.status.poll&&e.status.poll.options?((0,o.wg)(),(0,o.j4)(l,{key:4,icon:"poll-h"})):(0,o.kq)("",!0),e.status.card?((0,o.wg)(),(0,o.j4)(l,{key:5,icon:"link"})):(0,o.kq)("",!0)],512),[[x.F8,e.hideSubjectStatus]]),(0,o.wy)((0,o._)("button",{class:"button-unstyled -link status-unhider",onClick:t[4]||(t[4]=(0,x.iM)((function(){return e.toggleShowMore&&e.toggleShowMore.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.tallStatus?e.$t("general.show_less"):e.$t("status.hide_content")),513),[[x.F8,e.showingMore&&!e.fullContent]])],2)]),e.hideSubjectStatus?(0,o.kq)("",!0):(0,o.WI)(e.$slots,"default",{key:0})],2)}]]);var R=n(92798);function q(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function N(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?q(Object(n),!0).forEach((function(t){(0,c.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):q(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}M.vI.add(A.IJ7,A.gMD,A.Xig,A.VmB,A.nNP,A.Mm7);var Z,W=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},B=function(e,t){var n=W(t),o="controlledToggle".concat(n),r="uncontrolled".concat(n);e[o]?e[o]():e[r]=!e[r]};const H={name:"StatusContent",props:["status","compact","focused","noHeading","fullContent","singleLine","controlledShowingTall","controlledExpandingSubject","controlledToggleShowingTall","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject"],data:function(){return{uncontrolledShowingTall:this.fullContent||this.inConversation&&this.focused,uncontrolledShowingLongSubject:!1,uncontrolledExpandingSubject:!this.$store.getters.mergedConfig.collapseMessageWithSubject}},computed:N(N(N({},(Z=["showingTall","expandingSubject","showingLongSubject"],Z.reduce((function(e,t){var n=W(t),o="controlledToggle".concat(n),r="controlled".concat(n),i="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[o]&&void 0===this.$props[o]||!this[o]?this[i]:this[r]},e}),{}))),{},{hideAttachments:function(){return this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation},nsfwClickthrough:function(){return!(!this.status.nsfw||this.status.summary&&this.localCollapseSubjectDefault)},attachmentSize:function(){return this.compact?"small":this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation||this.status.attachments.length>this.maxThumbnails?"hide":"normal"},maxThumbnails:function(){return this.mergedConfig.maxThumbnails}},(0,U.Se)(["mergedConfig"])),(0,U.rn)({currentUser:function(e){return e.users.currentUser}})),components:{Attachment:l.Z,Poll:D,Gallery:I.Z,LinkPreview:R.Z,StatusBody:F},methods:{toggleShowingTall:function(){B(this,"showingTall")},toggleExpandingSubject:function(){B(this,"expandingSubject")},toggleShowingLongSubject:function(){B(this,"showingLongSubject")},setMedia:function(){var e=this,t="hide"===this.attachmentSize?this.status.attachments:this.galleryAttachments;return function(){return e.$store.dispatch("setMedia",t)}}}},V=(0,z.Z)(H,[["render",function(e,t,n,c,l,u){var d=(0,o.up)("Poll"),p=(0,o.up)("FAIcon"),m=(0,o.up)("gallery"),h=(0,o.up)("link-preview"),f=(0,o.up)("StatusBody");return(0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["StatusContent",{"-compact":e.compact}])},[(0,o.WI)(e.$slots,"header"),(0,o.Wm)(f,{status:e.status,compact:e.compact,"single-line":e.singleLine,"showing-tall":e.showingTall,"expanding-subject":e.expandingSubject,"showing-long-subject":e.showingLongSubject,"toggle-showing-tall":e.toggleShowingTall,"toggle-expanding-subject":e.toggleExpandingSubject,"toggle-showing-long-subject":e.toggleShowingLongSubject,onParseReady:t[2]||(t[2]=function(t){return e.$emit("parseReady",t)})},{default:(0,o.w5)((function(){return[e.status.poll&&e.status.poll.options&&!e.compact?((0,o.wg)(),(0,o.iD)("div",i,[(0,o.Wm)(d,{"base-poll":e.status.poll,emoji:e.status.emojis},null,8,["base-poll","emoji"])])):e.status.poll&&e.status.poll.options&&e.compact?((0,o.wg)(),(0,o.iD)("div",s,[(0,o.Wm)(p,{icon:"poll-h",size:"2x"})])):(0,o.kq)("",!0),0!==e.status.attachments.length?((0,o.wg)(),(0,o.j4)(m,{key:2,class:"attachments media-body",compact:e.compact,nsfw:e.nsfwClickthrough,attachments:e.status.attachments,limit:e.compact?1:0,size:e.attachmentSize,onPlay:t[0]||(t[0]=function(t){return e.$emit("mediaplay",e.attachment.id)}),onPause:t[1]||(t[1]=function(t){return e.$emit("mediapause",e.attachment.id)})},null,8,["compact","nsfw","attachments","limit","size"])):(0,o.kq)("",!0),!e.status.card||e.noHeading||e.compact?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",a,[(0,o.Wm)(h,{card:e.status.card,size:e.attachmentSize,nsfw:e.nsfwClickthrough},null,8,["card","size","nsfw"])]))]})),_:1},8,["status","compact","single-line","showing-tall","expanding-subject","showing-long-subject","toggle-showing-tall","toggle-expanding-subject","toggle-showing-long-subject"]),(0,o.WI)(e.$slots,"footer")],2)}]])},32140:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var o=n(66252),r=n(3577),i={key:0,ref:"canvas"},s=["alt","title","data-src","src","referrerpolicy","loading"];const a={props:["src","referrerpolicy","mimetype","imageLoadError","imageLoadHandler","alt","height","width","dataSrc","loading"],data:function(){return{realSrc:this.src,stopGifs:this.$store.getters.mergedConfig.stopGifs}},computed:{animated:function(){return!!this.realSrc&&this.stopGifs&&("image/gif"===this.mimetype||this.realSrc.endsWith(".gif"))},style:function(){var e=function(e){return/\d$/.test(e)?e+"px":e};return{height:this.height?e(this.height):null,width:this.width?e(this.width):null}}},methods:{loadLazy:function(){this.dataSrc&&(this.realSrc=this.dataSrc)},onLoad:function(){if(this.realSrc){var e=this.$refs.src;if(e){this.imageLoadHandler&&this.imageLoadHandler(e);var t=this.$refs.canvas;if(t){var n=e.naturalWidth,o=e.naturalHeight;t.width=n,t.height=o,t.getContext("2d").drawImage(e,0,0,n,o)}}}},onError:function(){this.imageLoadError&&this.imageLoadError()}},watch:{src:function(){this.realSrc=this.src},dataSrc:function(){this.$el.removeAttribute("data-loaded")}}},c=(0,n(83744).Z)(a,[["render",function(e,t,n,a,c,l){return(0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["still-image",{animated:e.animated}]),style:(0,r.j5)(e.style)},[e.animated?((0,o.wg)(),(0,o.iD)("canvas",i,null,512)):(0,o.kq)("",!0),((0,o.wg)(),(0,o.iD)("img",{ref:"src",key:e.realSrc,alt:e.alt,title:e.alt,"data-src":e.dataSrc,src:e.realSrc,referrerpolicy:e.referrerpolicy,loading:e.loading,onLoad:t[0]||(t[0]=function(){return e.onLoad&&e.onLoad.apply(e,arguments)}),onError:t[1]||(t[1]=function(){return e.onError&&e.onError.apply(e,arguments)})},null,40,s)),(0,o.WI)(e.$slots,"default")],6)}]])},1840:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=n(66252),r=n(3577),i=["datetime","title"],s=n(27483),a=n(39776);const c={name:"Timeago",props:["time","autoUpdate","longFormat","nowThreshold","templateKey"],data:function(){return{relativeTime:{key:"time.now",num:0},interval:null}},computed:{localeDateString:function(){var e=a.Z.internalToBrowserLocale(this.$i18n.locale);return"string"==typeof this.time?new Date(Date.parse(this.time)).toLocaleString(e):this.time.toLocaleString(e)},relativeTimeString:function(){var e=this.$i18n.tc(this.relativeTime.key,this.relativeTime.num,[this.relativeTime.num]);return"string"==typeof this.templateKey&&"time.now"!==this.relativeTime.key?this.$i18n.t(this.templateKey,[e]):e}},watch:{time:function(e,t){t!==e&&(clearTimeout(this.interval),this.refreshRelativeTimeObject())}},created:function(){this.refreshRelativeTimeObject()},unmounted:function(){clearTimeout(this.interval)},methods:{refreshRelativeTimeObject:function(){var e="number"==typeof this.nowThreshold?this.nowThreshold:1;this.relativeTime=this.longFormat?s.GV(this.time,e):s._F(this.time,e),this.autoUpdate&&(this.interval=setTimeout(this.refreshRelativeTimeObject,1e3*this.autoUpdate))}}},l=(0,n(83744).Z)(c,[["render",function(e,t,n,s,a,c){return(0,o.wg)(),(0,o.iD)("time",{datetime:n.time,title:c.localeDateString},(0,r.zw)(c.relativeTimeString),9,i)}]])},42262:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var o=n(66252),r=n(9382),i=n(84131);r.vI.add(i.dT$);const s={props:{user:Object}},a=(0,n(83744).Z)(s,[["render",function(e,t,n,r,i,s){var a=(0,o.up)("FAIcon");return e.user&&e.user.screen_name_ui_contains_non_ascii?((0,o.wg)(),(0,o.j4)(a,{key:0,icon:"code",title:e.$t("unicode_domain_indicator.tooltip")},null,8,["title"])):(0,o.kq)("",!0)}]])},48173:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>l});var o=n(66252),r=n(3577),i=n(32140),s=n(9382),a=n(84131);s.vI.add(a.VE0);const c={props:["user","betterShadow","compact","bot"],data:function(){return{showPlaceholder:!1,defaultAvatar:"".concat(this.$store.state.instance.server+this.$store.state.instance.defaultAvatar)}},components:{StillImage:i.Z},methods:{imgSrc:function(e){return!e||this.showPlaceholder?this.defaultAvatar:e},imageLoadError:function(){this.showPlaceholder=!0}}},l=(0,n(83744).Z)(c,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("StillImage"),l=(0,o.up)("FAIcon");return(0,o.wg)(),(0,o.iD)("span",{class:(0,r.C_)(["Avatar",{"-compact":e.compact}])},[e.user?((0,o.wg)(),(0,o.j4)(c,{key:0,class:(0,r.C_)(["avatar",{"-compact":e.compact,"-better-shadow":e.betterShadow}]),alt:e.user.screen_name_ui,title:e.user.screen_name_ui,src:e.imgSrc(e.user.profile_image_url_original),"image-load-error":e.imageLoadError},null,8,["alt","title","src","image-load-error","class"])):((0,o.wg)(),(0,o.iD)("div",{key:1,class:(0,r.C_)(["avatar -placeholder",{"-compact":e.compact}])},null,2)),e.bot?((0,o.wg)(),(0,o.j4)(l,{key:2,icon:"robot",class:"bot-indicator"})):(0,o.kq)("",!0)],2)}]])},20392:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Ae});var o=n(66252),r=n(3577),i=n(49963),s={class:"user-info"},a={class:"container"},c={class:"user-info-avatar -link -overlay"},l={class:"user-summary"},u={class:"top-line"},d=["href"],p={class:"bottom-line"},m={key:0,class:"alert user-role"},h={key:1,class:"alert user-role"},f={key:2,class:"alert user-role"},g={key:1},v={key:2,class:"dailyAvg"},w={class:"user-meta"},b={key:0,class:"following"},y={key:1,class:"highlighter"},_=["id"],k=["id"],S={value:"disabled"},j={value:"solid"},C={value:"striped"},O={value:"side"},P={key:0,class:"user-interactions"},z={class:"btn-group"},D=["disabled"],I=["disabled"],x=["disabled"],T={key:1,class:"user-interactions"},$={key:0,class:"panel-body"},U={key:0,class:"user-counts"},M=(0,o._)("br",null,null,-1),A=["textContent"],L={class:"mute-expiry"},E=["value"],F=n(4942),R=n(27483),q=n(48173),N=n(72895),Z=n(99507),W=n(34837),B={class:"dropdown-menu"},H={key:0},V={key:0,role:"separator",class:"dropdown-divider"},K={key:3,role:"separator",class:"dropdown-divider"},G={key:4},Y=n(9382),J=n(84131),Q=n(71113),X=n(91447);Y.vI.add(J.ptq);const ee={props:["user"],data:function(){return{tags:{FORCE_NSFW:"mrf_tag:media-force-nsfw",STRIP_MEDIA:"mrf_tag:media-strip",FORCE_UNLISTED:"mrf_tag:force-unlisted",DISABLE_REMOTE_SUBSCRIPTION:"mrf_tag:disable-remote-subscription",DISABLE_ANY_SUBSCRIPTION:"mrf_tag:disable-any-subscription",SANDBOX:"mrf_tag:sandbox",QUARANTINE:"mrf_tag:quarantine"},showDeleteUserDialog:!1,toggled:!1}},components:{DialogModal:Q.Z,Popover:X.default},computed:{tagsSet:function(){return new Set(this.user.tags)},canGrantRole:function(){return this.user.is_local&&!this.user.deactivated&&"admin"===this.$store.state.users.currentUser.role},canChangeActivationState:function(){return this.privileged("users_manage_activation_state")},canDeleteAccount:function(){return this.privileged("users_delete")},canUseTagPolicy:function(){return this.$store.state.instance.tagPolicyAvailable&&this.privileged("users_manage_tags")}},methods:{hasTag:function(e){return this.tagsSet.has(e)},privileged:function(e){return this.$store.state.users.currentUser.privileges.includes(e)},toggleTag:function(e){var t=this,n=this.$store;this.tagsSet.has(e)?n.state.api.backendInteractor.untagUser({user:this.user,tag:e}).then((function(o){o.ok&&n.commit("untagUser",{user:t.user,tag:e})})):n.state.api.backendInteractor.tagUser({user:this.user,tag:e}).then((function(o){o.ok&&n.commit("tagUser",{user:t.user,tag:e})}))},toggleRight:function(e){var t=this,n=this.$store;this.user.rights[e]?n.state.api.backendInteractor.deleteRight({user:this.user,right:e}).then((function(o){o.ok&&n.commit("updateRight",{user:t.user,right:e,value:!1})})):n.state.api.backendInteractor.addRight({user:this.user,right:e}).then((function(o){o.ok&&n.commit("updateRight",{user:t.user,right:e,value:!0})}))},toggleActivationStatus:function(){this.$store.dispatch("toggleActivationStatus",{user:this.user})},deleteUserDialog:function(e){this.showDeleteUserDialog=e},deleteUser:function(){var e=this,t=this.$store,n=this.user,o=n.id,r=n.name;t.state.api.backendInteractor.deleteUser({user:n}).then((function(t){e.$store.dispatch("markStatusesAsDeleted",(function(e){return n.id===e.user.id}));var i="external-user-profile"===e.$route.name||"user-profile"===e.$route.name,s=e.$route.params.name===r||e.$route.params.id===o;i&&s&&window.history.back()}))},setToggled:function(e){this.toggled=e}}};var te=n(83744);const ne=(0,te.Z)(ee,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("FAIcon"),l=(0,o.up)("Popover"),u=(0,o.up)("DialogModal");return(0,o.wg)(),(0,o.iD)("div",null,[(0,o.Wm)(l,{trigger:"click",class:"moderation-tools-popover",placement:"bottom",offset:{y:5},onShow:t[11]||(t[11]=function(t){return e.setToggled(!0)}),onClose:t[12]||(t[12]=function(t){return e.setToggled(!1)})},{content:(0,o.w5)((function(){return[(0,o._)("div",B,[e.canGrantRole?((0,o.wg)(),(0,o.iD)("span",H,[(0,o._)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=function(t){return e.toggleRight("admin")})},(0,r.zw)(e.$t(e.user.rights.admin?"user_card.admin_menu.revoke_admin":"user_card.admin_menu.grant_admin")),1),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=function(t){return e.toggleRight("moderator")})},(0,r.zw)(e.$t(e.user.rights.moderator?"user_card.admin_menu.revoke_moderator":"user_card.admin_menu.grant_moderator")),1),e.canChangeActivationState||e.canDeleteAccount?((0,o.wg)(),(0,o.iD)("div",V)):(0,o.kq)("",!0)])):(0,o.kq)("",!0),e.canChangeActivationState?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-default dropdown-item",onClick:t[2]||(t[2]=function(t){return e.toggleActivationStatus()})},(0,r.zw)(e.$t(e.user.deactivated?"user_card.admin_menu.activate_account":"user_card.admin_menu.deactivate_account")),1)):(0,o.kq)("",!0),e.canDeleteAccount?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-default dropdown-item",onClick:t[3]||(t[3]=function(t){return e.deleteUserDialog(!0)})},(0,r.zw)(e.$t("user_card.admin_menu.delete_account")),1)):(0,o.kq)("",!0),e.canUseTagPolicy?((0,o.wg)(),(0,o.iD)("div",K)):(0,o.kq)("",!0),e.canUseTagPolicy?((0,o.wg)(),(0,o.iD)("span",G,[(0,o._)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=function(t){return e.toggleTag(e.tags.FORCE_NSFW)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_NSFW)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.force_nsfw")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=function(t){return e.toggleTag(e.tags.STRIP_MEDIA)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.STRIP_MEDIA)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.strip_media")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=function(t){return e.toggleTag(e.tags.FORCE_UNLISTED)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_UNLISTED)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.force_unlisted")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[7]||(t[7]=function(t){return e.toggleTag(e.tags.SANDBOX)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.SANDBOX)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.sandbox")),1)]),e.user.is_local?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-default dropdown-item",onClick:t[8]||(t[8]=function(t){return e.toggleTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.disable_remote_subscription")),1)])):(0,o.kq)("",!0),e.user.is_local?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-default dropdown-item",onClick:t[9]||(t[9]=function(t){return e.toggleTag(e.tags.DISABLE_ANY_SUBSCRIPTION)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_ANY_SUBSCRIPTION)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.disable_any_subscription")),1)])):(0,o.kq)("",!0),e.user.is_local?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-default dropdown-item",onClick:t[10]||(t[10]=function(t){return e.toggleTag(e.tags.QUARANTINE)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.QUARANTINE)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.quarantine")),1)])):(0,o.kq)("",!0)])):(0,o.kq)("",!0)])]})),trigger:(0,o.w5)((function(){return[(0,o._)("button",{class:(0,r.C_)(["btn button-default btn-block moderation-tools-button",{toggled:e.toggled}])},[(0,o.Uk)((0,r.zw)(e.$t("user_card.admin_menu.moderation"))+" ",1),(0,o.Wm)(c,{icon:"chevron-down"})],2)]})),_:1}),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showDeleteUserDialog?((0,o.wg)(),(0,o.j4)(u,{key:0,"on-cancel":e.deleteUserDialog.bind(this,!1)},{header:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("user_card.admin_menu.delete_user")),1)]})),footer:(0,o.w5)((function(){return[(0,o._)("button",{class:"btn button-default",onClick:t[13]||(t[13]=function(t){return e.deleteUserDialog(!1)})},(0,r.zw)(e.$t("general.cancel")),1),(0,o._)("button",{class:"btn button-default danger",onClick:t[14]||(t[14]=function(t){return e.deleteUser()})},(0,r.zw)(e.$t("user_card.admin_menu.delete_user")),1)]})),default:(0,o.w5)((function(){return[(0,o._)("p",null,(0,r.zw)(e.$t("user_card.admin_menu.delete_user_confirmation")),1)]})),_:1},8,["on-cancel"])):(0,o.kq)("",!0)]))])}]]);var oe={class:"AccountActions"},re={class:"dropdown-menu"},ie=(0,o._)("div",{role:"separator",class:"dropdown-divider"},null,-1),se={class:"button-unstyled ellipsis-button"},ae=["textContent"],ce=["textContent"],le=n(989),ue={class:"UserListMenu"},de={class:"dropdown-menu"},pe=["onClick"],me={class:"btn button-default dropdown-item -has-submenu"};function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function fe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(Object(n),!0).forEach((function(t){(0,F.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Y.vI.add(J._tD);const ge={props:["user"],data:function(){return{}},components:{DialogModal:Q.Z,Popover:X.default},created:function(){this.$store.dispatch("fetchUserInLists",this.user.id)},computed:fe(fe({},(0,le.rn)({allLists:function(e){return e.lists.allLists}})),{},{inListsSet:function(){return new Set(this.user.inLists.map((function(e){return e.id})))},lists:function(){var e=this;return this.user.inLists?this.allLists.map((function(t){return fe(fe({},t),{},{inList:e.inListsSet.has(t.id)})})):[]}}),methods:{toggleList:function(e){var t=this;this.inListsSet.has(e)?this.$store.dispatch("removeListAccount",{accountId:this.user.id,listId:e}).then((function(e){e.ok&&t.$store.dispatch("fetchUserInLists",t.user.id)})):this.$store.dispatch("addListAccount",{accountId:this.user.id,listId:e}).then((function(e){e.ok&&t.$store.dispatch("fetchUserInLists",t.user.id)}))},toggleRight:function(e){var t=this,n=this.$store;this.user.rights[e]?n.state.api.backendInteractor.deleteRight({user:this.user,right:e}).then((function(o){o.ok&&n.commit("updateRight",{user:t.user,right:e,value:!1})})):n.state.api.backendInteractor.addRight({user:this.user,right:e}).then((function(o){o.ok&&n.commit("updateRight",{user:t.user,right:e,value:!0})}))},toggleActivationStatus:function(){this.$store.dispatch("toggleActivationStatus",{user:this.user})},deleteUserDialog:function(e){this.showDeleteUserDialog=e},deleteUser:function(){var e=this,t=this.$store,n=this.user,o=n.id,r=n.name;t.state.api.backendInteractor.deleteUser({user:n}).then((function(t){e.$store.dispatch("markStatusesAsDeleted",(function(e){return n.id===e.user.id}));var i="external-user-profile"===e.$route.name||"user-profile"===e.$route.name,s=e.$route.params.name===r||e.$route.params.id===o;i&&s&&window.history.back()}))},setToggled:function(e){this.toggled=e}}},ve=(0,te.Z)(ge,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("FAIcon"),l=(0,o.up)("Popover");return(0,o.wg)(),(0,o.iD)("div",ue,[(0,o.Wm)(l,{trigger:"hover",placement:"left","remove-padding":""},{content:(0,o.w5)((function(){return[(0,o._)("div",de,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.lists,(function(t){return(0,o.wg)(),(0,o.iD)("button",{key:t.id,class:"button-default dropdown-item",onClick:function(n){return e.toggleList(t.id)}},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":t.inList}])},null,2),(0,o.Uk)(" "+(0,r.zw)(t.title),1)],8,pe)})),128))])]})),trigger:(0,o.w5)((function(){return[(0,o._)("button",me,[(0,o.Uk)((0,r.zw)(e.$t("lists.manage_lists"))+" ",1),(0,o.Wm)(c,{class:"chevron-icon",size:"lg",icon:"chevron-right"})])]})),_:1})])}]]);var we=n(1447);function be(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}Y.vI.add(J.iV1);const ye={props:["user","relationship"],data:function(){return{showingConfirmBlock:!1,showingConfirmRemoveFollower:!1}},components:{ProgressButton:Z.Z,Popover:X.default,UserListMenu:ve,ConfirmModal:we.Z},methods:{showConfirmBlock:function(){this.showingConfirmBlock=!0},hideConfirmBlock:function(){this.showingConfirmBlock=!1},showConfirmRemoveUserFromFollowers:function(){this.showingConfirmRemoveFollower=!0},hideConfirmRemoveUserFromFollowers:function(){this.showingConfirmRemoveFollower=!1},showRepeats:function(){this.$store.dispatch("showReblogs",this.user.id)},hideRepeats:function(){this.$store.dispatch("hideReblogs",this.user.id)},blockUser:function(){this.shouldConfirmBlock?this.showConfirmBlock():this.doBlockUser()},doBlockUser:function(){this.$store.dispatch("blockUser",this.user.id),this.hideConfirmBlock()},unblockUser:function(){this.$store.dispatch("unblockUser",this.user.id)},removeUserFromFollowers:function(){this.shouldConfirmRemoveUserFromFollowers?this.showConfirmRemoveUserFromFollowers():this.doRemoveUserFromFollowers()},doRemoveUserFromFollowers:function(){this.$store.dispatch("removeUserFromFollowers",this.user.id),this.hideConfirmRemoveUserFromFollowers()},reportUser:function(){this.$store.dispatch("openUserReportingModal",{userId:this.user.id})},openChat:function(){this.$router.push({name:"chat",params:{username:this.$store.state.users.currentUser.screen_name,recipient_id:this.user.id}})}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?be(Object(n),!0).forEach((function(t){(0,F.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):be(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({shouldConfirmBlock:function(){return this.$store.getters.mergedConfig.modalOnBlock},shouldConfirmRemoveUserFromFollowers:function(){return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers}},(0,le.rn)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}}))},_e=(0,te.Z)(ye,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("UserListMenu"),l=(0,o.up)("FAIcon"),u=(0,o.up)("Popover"),d=(0,o.up)("i18n-t"),p=(0,o.up)("confirm-modal");return(0,o.wg)(),(0,o.iD)("div",oe,[(0,o.Wm)(u,{trigger:"click",placement:"bottom","bound-to":{x:"container"},"remove-padding":""},{content:(0,o.w5)((function(){return[(0,o._)("div",re,[e.relationship.following?((0,o.wg)(),(0,o.iD)(o.HY,{key:0},[e.relationship.showing_reblogs?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"btn button-default dropdown-item",onClick:t[0]||(t[0]=function(){return e.hideRepeats&&e.hideRepeats.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.hide_repeats")),1)):(0,o.kq)("",!0),e.relationship.showing_reblogs?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:1,class:"btn button-default dropdown-item",onClick:t[1]||(t[1]=function(){return e.showRepeats&&e.showRepeats.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.show_repeats")),1)),ie],64)):(0,o.kq)("",!0),(0,o.Wm)(c,{user:e.user},null,8,["user"]),e.relationship.followed_by?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"btn button-default btn-block dropdown-item",onClick:t[2]||(t[2]=function(){return e.removeUserFromFollowers&&e.removeUserFromFollowers.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.remove_follower")),1)):(0,o.kq)("",!0),e.relationship.blocking?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"btn button-default btn-block dropdown-item",onClick:t[3]||(t[3]=function(){return e.unblockUser&&e.unblockUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.unblock")),1)):((0,o.wg)(),(0,o.iD)("button",{key:3,class:"btn button-default btn-block dropdown-item",onClick:t[4]||(t[4]=function(){return e.blockUser&&e.blockUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.block")),1)),(0,o._)("button",{class:"btn button-default btn-block dropdown-item",onClick:t[5]||(t[5]=function(){return e.reportUser&&e.reportUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.report")),1),e.pleromaChatMessagesAvailable?((0,o.wg)(),(0,o.iD)("button",{key:4,class:"btn button-default btn-block dropdown-item",onClick:t[6]||(t[6]=function(){return e.openChat&&e.openChat.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.message")),1)):(0,o.kq)("",!0)])]})),trigger:(0,o.w5)((function(){return[(0,o._)("button",se,[(0,o.Wm)(l,{class:"icon",icon:"ellipsis-v"})])]})),_:1}),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingConfirmBlock?((0,o.wg)(),(0,o.j4)(p,{key:0,title:e.$t("user_card.block_confirm_title"),"confirm-text":e.$t("user_card.block_confirm_accept_button"),"cancel-text":e.$t("user_card.block_confirm_cancel_button"),onAccepted:e.doBlockUser,onCancelled:e.hideConfirmBlock},{default:(0,o.w5)((function(){return[(0,o.Wm)(d,{keypath:"user_card.block_confirm",tag:"span"},{user:(0,o.w5)((function(){return[(0,o._)("span",{textContent:(0,r.zw)(e.user.screen_name_ui)},null,8,ae)]})),_:1})]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)])),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingConfirmRemoveFollower?((0,o.wg)(),(0,o.j4)(p,{key:0,title:e.$t("user_card.remove_follower_confirm_title"),"confirm-text":e.$t("user_card.remove_follower_confirm_accept_button"),"cancel-text":e.$t("user_card.remove_follower_confirm_cancel_button"),onAccepted:e.doRemoveUserFromFollowers,onCancelled:e.hideConfirmRemoveUserFromFollowers},{default:(0,o.w5)((function(){return[(0,o.Wm)(d,{keypath:"user_card.remove_follower_confirm",tag:"span"},{user:(0,o.w5)((function(){return[(0,o._)("span",{textContent:(0,r.zw)(e.user.screen_name_ui)},null,8,ce)]})),_:1})]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)]))])}]]);var ke={class:"user-note"},Se={class:"heading"},je={class:"buttons"},Ce=["disabled"],Oe=["disabled"];const Pe={props:{user:Object,relationship:Object,editable:Boolean},data:function(){return{localNote:"",editing:!1,frozen:!1}},computed:{shouldShow:function(){return this.relationship.note||this.editing}},methods:{startEditing:function(){this.localNote=this.relationship.note,this.editing=!0},cancelEditing:function(){this.editing=!1},finalizeEditing:function(){var e=this;this.frozen=!0,this.$store.dispatch("editUserNote",{id:this.user.id,comment:this.localNote}).then((function(){e.frozen=!1,e.editing=!1})).catch((function(){e.frozen=!1}))}}},ze=(0,te.Z)(Pe,[["render",function(e,t,n,s,a,c){return(0,o.wg)(),(0,o.iD)("div",ke,[(0,o._)("div",Se,[(0,o._)("span",null,(0,r.zw)(e.$t("user_card.note")),1),(0,o._)("div",je,[(0,o.wy)((0,o._)("button",{class:"button-default btn",onClick:t[0]||(t[0]=function(){return e.startEditing&&e.startEditing.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.edit_note")),513),[[i.F8,!e.editing&&e.editable]]),(0,o.wy)((0,o._)("button",{class:"button-default btn",disabled:e.frozen,onClick:t[1]||(t[1]=function(){return e.finalizeEditing&&e.finalizeEditing.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.edit_note_apply")),9,Ce),[[i.F8,e.editing]]),(0,o.wy)((0,o._)("button",{class:"button-default btn",disabled:e.frozen,onClick:t[2]||(t[2]=function(){return e.cancelEditing&&e.cancelEditing.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.edit_note_cancel")),9,Oe),[[i.F8,e.editing]])])]),(0,o.wy)((0,o._)("textarea",{"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.localNote=t}),class:"note-text"},null,512),[[i.F8,e.editing],[i.nr,e.localNote]]),(0,o.wy)((0,o._)("span",{class:(0,r.C_)(["note-text",{"-blank":!e.relationship.note}])},(0,r.zw)(e.relationship.note||e.$t("user_card.note_blank")),3),[[i.F8,!e.editing]])])}]]);var De=n(76990),Ie=n(12061),xe=n(92820),Te=n(4493);function $e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ue(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$e(Object(n),!0).forEach((function(t){(0,F.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$e(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Y.vI.add(J.Fwd,J.qmU,J.N7g,J.Xjp,J.Xcf,J.NBC,J.TTL);const Me={props:["userId","switcher","selected","hideBio","rounded","bordered","avatarAction","onClose","hasNoteEditor"],data:function(){return{followRequestInProgress:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter,showingConfirmMute:!1,muteExpiryAmount:0,muteExpiryUnit:"minutes"}},created:function(){this.$store.dispatch("fetchUserRelationship",this.user.id)},computed:Ue({user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},classes:function(){return[{"-rounded-t":"top"===this.rounded,"-rounded":!0===this.rounded,"-bordered":!0===this.bordered,"-popover":!!this.onClose}]},style:function(){return{backgroundImage:["linear-gradient(to bottom, var(--profileTint), var(--profileTint))","url(".concat(this.user.cover_photo,")")].join(", ")}},isOtherUser:function(){return this.user.id!==this.$store.state.users.currentUser.id},subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")},loggedIn:function(){return this.$store.state.users.currentUser},dailyAvg:function(){var e=Math.ceil((new Date-new Date(this.user.created_at))/864e5);return Math.round(this.user.statuses_count/e)},userHighlightType:Ue({get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.type||"disabled"},set:function(e){var t=this.$store.getters.mergedConfig.highlight[this.user.screen_name];"disabled"!==e?this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:t&&t.color||"#FFFFFF",type:e}):this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:void 0})}},(0,le.Se)(["mergedConfig"])),userHighlightColor:{get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.color},set:function(e){this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:e})}},visibleRole:function(){var e=this.user.rights;if(e){var t=e.admin||e.moderator,n=e.admin?"admin":"moderator";return t&&n}},hideFollowsCount:function(){return this.isOtherUser&&this.user.hide_follows_count},hideFollowersCount:function(){return this.isOtherUser&&this.user.hide_followers_count},showModerationMenu:function(){var e=this.loggedIn.privileges;return"admin"===this.loggedIn.role||e.includes("users_manage_activation_state")||e.includes("users_delete")||e.includes("users_manage_tags")},hasNote:function(){return this.relationship.note},supportsNote:function(){return"note"in this.relationship},shouldConfirmMute:function(){return this.mergedConfig.modalOnMute},muteExpiryUnits:function(){return["minutes","hours","days"]}},(0,le.Se)(["mergedConfig"])),components:{UserAvatar:q.default,RemoteFollow:N.Z,ModerationTools:ne,AccountActions:_e,ProgressButton:Z.Z,FollowButton:W.Z,Select:De.Z,RichContent:xe.Z,UserLink:Ie.Z,UserNote:ze,ConfirmModal:we.Z},methods:{showConfirmMute:function(){this.showingConfirmMute=!0},hideConfirmMute:function(){this.showingConfirmMute=!1},muteUser:function(){this.shouldConfirmMute?this.showConfirmMute():this.doMuteUser()},doMuteUser:function(){this.$store.dispatch("muteUser",{id:this.user.id,expiresIn:this.shouldConfirmMute?(0,R.cC)(this.muteExpiryUnit,this.muteExpiryAmount):0}),this.hideConfirmMute()},unmuteUser:function(){this.$store.dispatch("unmuteUser",this.user.id)},subscribeUser:function(){return this.$store.dispatch("subscribeUser",this.user.id)},unsubscribeUser:function(){return this.$store.dispatch("unsubscribeUser",this.user.id)},setProfileView:function(e){this.switcher&&this.$store.commit("setProfileView",{v:e})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")},userProfileLink:function(e){return(0,Te.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")},zoomAvatar:function(){var e={url:this.user.profile_image_url_original,mimetype:"image"};this.$store.dispatch("setMedia",[e]),this.$store.dispatch("setCurrentMedia",e)},mentionUser:function(){this.$store.dispatch("openPostStatusModal",{replyTo:!0,repliedUser:this.user})},onAvatarClickHandler:function(e){this.onAvatarClick&&(e.preventDefault(),this.onAvatarClick())}}},Ae=(0,te.Z)(Me,[["render",function(e,t,n,F,R,q){var N=(0,o.up)("UserAvatar"),Z=(0,o.up)("FAIcon"),W=(0,o.up)("router-link"),B=(0,o.up)("RichContent"),H=(0,o.up)("AccountActions"),V=(0,o.up)("user-link"),K=(0,o.up)("Select"),G=(0,o.up)("FollowButton"),Y=(0,o.up)("ProgressButton"),J=(0,o.up)("FALayers"),Q=(0,o.up)("ModerationTools"),X=(0,o.up)("RemoteFollow"),ee=(0,o.up)("UserNote"),te=(0,o.up)("i18n-t"),ne=(0,o.up)("confirm-modal");return(0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["user-card",e.classes])},[(0,o._)("div",{class:(0,r.C_)([{"hide-bio":e.hideBio},"background-image"]),style:(0,r.j5)(e.style)},null,6),(0,o._)("div",{class:(0,r.C_)(e.onClose?"":e.panel-e.heading-e.flexible-e.height)},[(0,o._)("div",s,[(0,o._)("div",a,["zoom"===e.avatarAction?((0,o.wg)(),(0,o.iD)("a",{key:0,class:"user-info-avatar -link",onClick:t[0]||(t[0]=function(){return e.zoomAvatar&&e.zoomAvatar.apply(e,arguments)})},[(0,o.Wm)(N,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"]),(0,o._)("div",c,[(0,o.Wm)(Z,{class:"fa-scale-110 fa-old-padding",icon:"search-plus"})])])):"function"==typeof e.avatarAction?((0,o.wg)(),(0,o.j4)(N,{key:1,class:"user-info-avatar","better-shadow":e.betterShadow,user:e.user,onClick:e.avatarAction},null,8,["better-shadow","user","onClick"])):((0,o.wg)(),(0,o.j4)(W,{key:2,to:e.userProfileLink(e.user)},{default:(0,o.w5)((function(){return[(0,o.Wm)(N,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"])]})),_:1},8,["to"])),(0,o._)("div",l,[(0,o._)("div",u,[(0,o.Wm)(W,{to:e.userProfileLink(e.user),class:"user-name"},{default:(0,o.w5)((function(){return[(0,o.Wm)(B,{title:e.user.name,html:e.user.name,emoji:e.user.emoji},null,8,["title","html","emoji"])]})),_:1},8,["to"]),!e.isOtherUser&&e.user.is_local?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-unstyled edit-profile-button",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.openProfileTab&&e.openProfileTab.apply(e,arguments)}),["stop"]))},[(0,o.Wm)(Z,{"fixed-width":"",class:"icon",icon:"edit",title:e.$t("user_card.edit_profile")},null,8,["title"])])):(0,o.kq)("",!0),e.isOtherUser&&!e.user.is_local?((0,o.wg)(),(0,o.iD)("a",{key:1,href:e.user.statusnet_profile_url,target:"_blank",class:"button-unstyled external-link-button"},[(0,o.Wm)(Z,{class:"icon",icon:"external-link-alt"})],8,d)):(0,o.kq)("",!0),e.isOtherUser&&e.loggedIn?((0,o.wg)(),(0,o.j4)(H,{key:2,user:e.user,relationship:e.relationship},null,8,["user","relationship"])):(0,o.kq)("",!0),e.onClose?((0,o.wg)(),(0,o.j4)(W,{key:3,to:e.userProfileLink(e.user),class:"button-unstyled external-link-button",onClick:e.onClose},{default:(0,o.w5)((function(){return[(0,o.Wm)(Z,{class:"icon",icon:"expand-alt"})]})),_:1},8,["to","onClick"])):(0,o.kq)("",!0),e.onClose?((0,o.wg)(),(0,o.iD)("button",{key:4,class:"button-unstyled external-link-button",onClick:t[2]||(t[2]=function(){return e.onClose&&e.onClose.apply(e,arguments)})},[(0,o.Wm)(Z,{class:"icon",icon:"times"})])):(0,o.kq)("",!0)]),(0,o._)("div",p,[(0,o.Wm)(V,{class:"user-screen-name",user:e.user},null,8,["user"]),e.hideBio?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)(o.HY,{key:0},[e.user.deactivated?((0,o.wg)(),(0,o.iD)("span",m,(0,r.zw)(e.$t("user_card.deactivated")),1)):(0,o.kq)("",!0),e.visibleRole?((0,o.wg)(),(0,o.iD)("span",h,(0,r.zw)(e.$t("general.role.".concat(e.visibleRole))),1)):(0,o.kq)("",!0),e.user.bot?((0,o.wg)(),(0,o.iD)("span",f,(0,r.zw)(e.$t("user_card.bot")),1)):(0,o.kq)("",!0)],64)),e.user.locked?((0,o.wg)(),(0,o.iD)("span",g,[(0,o.Wm)(Z,{class:"lock-icon",icon:"lock",size:"sm"})])):(0,o.kq)("",!0),e.mergedConfig.hideUserStats||e.hideBio?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("span",v,(0,r.zw)(e.dailyAvg)+" "+(0,r.zw)(e.$t("user_card.per_day")),1))])])]),(0,o._)("div",w,[e.relationship.followed_by&&e.loggedIn&&e.isOtherUser?((0,o.wg)(),(0,o.iD)("div",b,(0,r.zw)(e.$t("user_card.follows_you")),1)):(0,o.kq)("",!0),!e.isOtherUser||!e.loggedIn&&e.switcher?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",y,["disabled"!==e.userHighlightType?(0,o.wy)(((0,o.wg)(),(0,o.iD)("input",{key:0,id:"userHighlightColorTx"+e.user.id,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.userHighlightColor=t}),class:"userHighlightText",type:"text"},null,8,_)),[[i.nr,e.userHighlightColor]]):(0,o.kq)("",!0),"disabled"!==e.userHighlightType?(0,o.wy)(((0,o.wg)(),(0,o.iD)("input",{key:1,id:"userHighlightColor"+e.user.id,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.userHighlightColor=t}),class:"userHighlightCl",type:"color"},null,8,k)),[[i.nr,e.userHighlightColor]]):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o.Wm)(K,{id:"userHighlightSel"+e.user.id,modelValue:e.userHighlightType,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.userHighlightType=t}),class:"userHighlightSel"},{default:(0,o.w5)((function(){return[(0,o._)("option",S,(0,r.zw)(e.$t("user_card.highlight.disabled")),1),(0,o._)("option",j,(0,r.zw)(e.$t("user_card.highlight.solid")),1),(0,o._)("option",C,(0,r.zw)(e.$t("user_card.highlight.striped")),1),(0,o._)("option",O,(0,r.zw)(e.$t("user_card.highlight.side")),1)]})),_:1},8,["id","modelValue"])]))]),e.loggedIn&&e.isOtherUser?((0,o.wg)(),(0,o.iD)("div",P,[(0,o._)("div",z,[(0,o.Wm)(G,{relationship:e.relationship,user:e.user},null,8,["relationship","user"]),e.relationship.following?((0,o.wg)(),(0,o.iD)(o.HY,{key:0},[e.relationship.subscribing?((0,o.wg)(),(0,o.j4)(Y,{key:1,class:"btn button-default toggled",click:e.unsubscribeUser,title:e.$t("user_card.unsubscribe")},{default:(0,o.w5)((function(){return[(0,o.Wm)(J,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(Z,{icon:"rss",transform:"left-5 shrink-6 up-3 rotate-20",flip:"horizontal"}),(0,o.Wm)(Z,{icon:"rss",transform:"right-5 shrink-6 up-3 rotate-20"}),(0,o.Wm)(Z,{icon:"bell"})]})),_:1})]})),_:1},8,["click","title"])):((0,o.wg)(),(0,o.j4)(Y,{key:0,class:"btn button-default",click:e.subscribeUser,title:e.$t("user_card.subscribe")},{default:(0,o.w5)((function(){return[(0,o.Wm)(Z,{icon:"bell"})]})),_:1},8,["click","title"]))],64)):(0,o.kq)("",!0)]),(0,o._)("div",null,[e.relationship.muting?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"btn button-default btn-block toggled",disabled:e.user.deactivated,onClick:t[6]||(t[6]=function(){return e.unmuteUser&&e.unmuteUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.muted")),9,D)):((0,o.wg)(),(0,o.iD)("button",{key:1,class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[7]||(t[7]=function(){return e.muteUser&&e.muteUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.mute")),9,I))]),(0,o._)("div",null,[(0,o._)("button",{class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[8]||(t[8]=function(){return e.mentionUser&&e.mentionUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.mention")),9,x)]),e.showModerationMenu?((0,o.wg)(),(0,o.j4)(Q,{key:0,user:e.user},null,8,["user"])):(0,o.kq)("",!0)])):(0,o.kq)("",!0),!e.loggedIn&&e.user.is_local?((0,o.wg)(),(0,o.iD)("div",T,[(0,o.Wm)(X,{user:e.user},null,8,["user"])])):(0,o.kq)("",!0),e.loggedIn&&e.isOtherUser&&(e.hasNote||e.hasNoteEditor&&e.supportsNote)?((0,o.wg)(),(0,o.j4)(ee,{key:2,user:e.user,relationship:e.relationship,editable:e.hasNoteEditor},null,8,["user","relationship","editable"])):(0,o.kq)("",!0)])],2),e.hideBio?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",$,[!e.mergedConfig.hideUserStats&&e.switcher?((0,o.wg)(),(0,o.iD)("div",U,[(0,o._)("div",{class:"user-count",onClick:t[9]||(t[9]=(0,i.iM)((function(t){return e.setProfileView("statuses")}),["prevent"]))},[(0,o._)("h5",null,(0,r.zw)(e.$t("user_card.statuses")),1),(0,o._)("span",null,[(0,o.Uk)((0,r.zw)(e.user.statuses_count)+" ",1),M])]),(0,o._)("div",{class:"user-count",onClick:t[10]||(t[10]=(0,i.iM)((function(t){return e.setProfileView("friends")}),["prevent"]))},[(0,o._)("h5",null,(0,r.zw)(e.$t("user_card.followees")),1),(0,o._)("span",null,(0,r.zw)(e.hideFollowsCount?e.$t("user_card.hidden"):e.user.friends_count),1)]),(0,o._)("div",{class:"user-count",onClick:t[11]||(t[11]=(0,i.iM)((function(t){return e.setProfileView("followers")}),["prevent"]))},[(0,o._)("h5",null,(0,r.zw)(e.$t("user_card.followers")),1),(0,o._)("span",null,(0,r.zw)(e.hideFollowersCount?e.$t("user_card.hidden"):e.user.followers_count),1)])])):(0,o.kq)("",!0),e.hideBio?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(B,{key:1,class:"user-card-bio",html:e.user.description_html,emoji:e.user.emoji,"handle-links":!0},null,8,["html","emoji"]))])),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingConfirmMute?((0,o.wg)(),(0,o.j4)(ne,{key:0,title:e.$t("user_card.mute_confirm_title"),"confirm-text":e.$t("user_card.mute_confirm_accept_button"),"cancel-text":e.$t("user_card.mute_confirm_cancel_button"),onAccepted:e.doMuteUser,onCancelled:e.hideConfirmMute},{default:(0,o.w5)((function(){return[(0,o.Wm)(te,{keypath:"user_card.mute_confirm",tag:"div"},{user:(0,o.w5)((function(){return[(0,o._)("span",{textContent:(0,r.zw)(e.user.screen_name_ui)},null,8,A)]})),_:1}),(0,o._)("div",L,[(0,o._)("label",null,(0,r.zw)(e.$t("user_card.mute_duration_prompt")),1),(0,o.wy)((0,o._)("input",{"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.muteExpiryAmount=t}),type:"number",class:"expiry-amount hide-number-spinner",min:0},null,512),[[i.nr,e.muteExpiryAmount]]),(0,o.Wm)(K,{modelValue:e.muteExpiryUnit,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.muteExpiryUnit=t}),unstyled:"true",class:"expiry-unit"},{default:(0,o.w5)((function(){return[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.muteExpiryUnits,(function(t){return(0,o.wg)(),(0,o.iD)("option",{key:t,value:t},(0,r.zw)(e.$t("time.".concat(t,"_short"),[""])),9,E)})),128))]})),_:1},8,["modelValue"])])]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)]))],2)}]])},12061:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var o=n(66252),r=n(3577),i=n(42262),s=n(4493);const a={props:{user:Object,at:{type:Boolean,default:!0}},components:{UnicodeDomainIndicator:i.Z},methods:{userProfileLink:function(e){return(0,s.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},c=(0,n(83744).Z)(a,[["render",function(e,t,n,i,s,a){var c=(0,o.up)("UnicodeDomainIndicator"),l=(0,o.up)("router-link");return(0,o.wg)(),(0,o.j4)(l,{title:e.user.screen_name_ui,to:e.userProfileLink(e.user)},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.at?"@":"")+(0,r.zw)(e.user.screen_name_ui),1),(0,o.Wm)(c,{user:e.user},null,8,["user"])]})),_:1},8,["title","to"])}]])},22588:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var o=n(66252);const r={name:"UserPopover",props:["userId","overlayCenters","disabled","overlayCentersSelector"],components:{UserCard:n(20392).Z,Popover:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,91447))}))},computed:{userPopoverAvatarAction:function(){return this.$store.getters.mergedConfig.userPopoverAvatarAction},userPopoverOverlay:function(){return this.$store.getters.mergedConfig.userPopoverOverlay}}},i=(0,n(83744).Z)(r,[["render",function(e,t,n,r,i,s){var a=(0,o.up)("UserCard"),c=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(c,{trigger:"click","popover-class":"popover-default user-popover","overlay-centers-selector":e.overlayCentersSelector||".user-info .Avatar","overlay-centers":e.overlayCenters&&e.userPopoverOverlay,disabled:e.disabled},{trigger:(0,o.w5)((function(){return[(0,o.WI)(e.$slots,"default")]})),content:(0,o.w5)((function(t){var n=t.close;return[(0,o.Wm)(a,{class:"user-popover","user-id":e.userId,"hide-bio":!0,"avatar-action":"close"==e.userPopoverAvatarAction?n:e.userPopoverAvatarAction,"on-close":n},null,8,["user-id","avatar-action","on-close"])]})),_:3},8,["overlay-centers-selector","overlay-centers","disabled"])}]])},34133:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var o=n(66252),r=["src","loop","controls","alt","title"];const i={props:["attachment","controls"],data:function(){return{blocksSuspend:!1,hasAudio:!0}},computed:{loopVideo:function(){return this.$store.getters.mergedConfig.loopVideoSilentOnly?!this.hasAudio:this.$store.getters.mergedConfig.loopVideo}},methods:{onPlaying:function(e){this.setHasAudio(e),this.loopVideo?this.$emit("play",{looping:!0}):this.$emit("play")},onPaused:function(e){this.$emit("pause")},setHasAudio:function(e){var t=e.srcElement||e.target;this.hasAudio&&(void 0!==t.webkitAudioDecodedByteCount&&t.webkitAudioDecodedByteCount>0||void 0!==t.mozHasAudio&&t.mozHasAudio||void 0!==t.audioTracks&&t.audioTracks.length>0||(this.hasAudio=!1))}}},s=(0,n(83744).Z)(i,[["render",function(e,t,n,i,s,a){return(0,o.wg)(),(0,o.iD)("video",{class:"video",preload:"metadata",src:e.attachment.url,loop:e.loopVideo,controls:e.controls,alt:e.attachment.description,title:e.attachment.description,playsinline:"",onPlaying:t[0]||(t[0]=function(){return e.onPlaying&&e.onPlaying.apply(e,arguments)}),onPause:t[1]||(t[1]=function(){return e.onPaused&&e.onPaused.apply(e,arguments)})},null,40,r)}]])},27650:(e,t,n)=>{var o={"./ar.json":[36224,7808],"./ca.json":[49394,6234],"./cs.json":[87436,7433],"./de.json":[25195,9459],"./en.json":[88797],"./eo.json":[97898,4646],"./es.json":[98559,3968],"./et.json":[13230,4451],"./eu.json":[84826,4542],"./fa.json":[52006,2953],"./fi.json":[70823,9738],"./fr.json":[61341,3746],"./ga.json":[41647,830],"./he.json":[92215,379],"./hu.json":[95028,5494],"./id.json":[62263,2513],"./it.json":[2533,1159],"./ja_easy.json":[8439,8714],"./ja_pedantic.json":[22838,325],"./ko.json":[10707,9670],"./nb.json":[72358,7845],"./nl.json":[49922,6256],"./oc.json":[47297,617],"./pl.json":[82098,5571],"./pt.json":[94465,4047],"./ro.json":[64367,6342],"./ru.json":[73289,5964],"./sk.json":[31478,1547],"./te.json":[32781,2044],"./uk.json":[8411,5253],"./vi.json":[6294,4975],"./zh.json":[4425,5929],"./zh_Hant.json":[37644,6544]};function r(e){if(!n.o(o,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=o[e],r=t[0];return Promise.all(t.slice(1).map(n.e)).then((()=>n(r)))}r.keys=()=>Object.keys(o),r.id=27650,e.exports=r},31934:(e,t,n)=>{"use strict";e.exports=n.p+"static/img/pleromatan_apology.f9d5180.png"},95326:(e,t,n)=>{"use strict";e.exports=n.p+"static/img/pleromatan_apology_fox.038b0bb.png"},68789:e=>{"use strict";e.exports="data:image/png;base64,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"},43011:e=>{"use strict";e.exports="data:image/png;base64,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"}},s={};function a(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={id:e,loaded:!1,exports:{}};return i[e].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=i,e=[],a.O=(t,n,o,r)=>{if(!n){var i=1/0;for(u=0;u<e.length;u++){for(var[n,o,r]=e[u],s=!0,c=0;c<n.length;c++)(!1&r||i>=r)&&Object.keys(a.O).every((e=>a.O[e](n[c])))?n.splice(c--,1):(s=!1,r<i&&(i=r));if(s){e.splice(u--,1);var l=o();void 0!==l&&(t=l)}}return t}r=r||0;for(var u=e.length;u>0&&e[u-1][2]>r;u--)e[u]=e[u-1];e[u]=[n,o,r]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var r=Object.create(null);a.r(r);var i={};t=t||[null,n({}),n([]),n(n)];for(var s=2&o&&e;"object"==typeof s&&!~t.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((t=>i[t]=()=>e[t]));return i.default=()=>e,a.d(r,i),r},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,n)=>(a.f[n](e,t),t)),[])),a.u=e=>"static/js/"+({50:"emoji-annotations/en_GB-json",227:"emoji-annotations/ha-json",278:"emoji-annotations/kn-json",313:"emoji-annotations/tg-json",325:"i18n/ja_pedantic-json",346:"emoji-annotations/rw-json",379:"i18n/he-json",420:"emoji-annotations/fi-json",457:"emoji-annotations/zh-json",577:"emoji-annotations/en_001-json",617:"i18n/oc-json",625:"emoji-annotations/so-json",678:"emoji-annotations/ps-json",786:"emoji-annotations/xh-json",830:"i18n/ga-json",1012:"emoji-annotations/or-json",1044:"emoji-annotations/zh_Hant_HK-json",1056:"emoji-annotations/uz-json",1095:"emoji-annotations/pl-json",1159:"i18n/it-json",1162:"emoji-annotations/ccp-json",1236:"emoji-annotations/fil-json",1290:"emoji-annotations/ja-json",1404:"emoji-annotations/km-json",1452:"emoji-annotations/yue-json",1546:"emoji-annotations/pt_PT-json",1547:"i18n/sk-json",1553:"emoji-annotations/sl-json",1584:"emoji-annotations/to-json",1596:"emoji-annotations/da-json",1613:"emoji-annotations/mai-json",1780:"emoji-annotations/tk-json",1790:"emoji-annotations/dsb-json",1821:"emoji-annotations/fr_CA-json",1911:"emoji-annotations/mr-json",1959:"emoji-annotations/su-json",2044:"i18n/te-json",2223:"emoji-annotations/fr-json",2243:"emoji-annotations/sa-json",2342:"emoji-annotations/az-json",2350:"emoji-annotations/sk-json",2397:"emoji-annotations/kl-json",2479:"emoji-annotations/jv-json",2513:"i18n/id-json",2569:"emoji-annotations/tt-json",2599:"emoji-annotations/kok-json",2656:"emoji-annotations/ckb-json",2685:"emoji-annotations/ml-json",2699:"emoji-annotations/es_MX-json",2767:"emoji-annotations/zh_Hant-json",2861:"emoji-annotations/hr-json",2873:"emoji-annotations/kk-json",2874:"emoji-annotations/sc-json",2883:"emoji-annotations/ku-json",2953:"i18n/fa-json",2966:"emoji-annotations/ko-json",2992:"emoji-annotations/eu-json",3056:"emoji-annotations/hi_Latn-json",3241:"emoji-annotations/sv-json",3276:"emoji-annotations/et-json",3313:"emoji-annotations/es_US-json",3377:"emoji-annotations/as-json",3568:"emoji-annotations/ti-json",3687:"emoji",3746:"i18n/fr-json",3887:"emoji-annotations/sr-json",3951:"emoji-annotations/th-json",3968:"i18n/es-json",3974:"emoji-annotations/bg-json",3994:"emoji-annotations/sw_KE-json",4047:"i18n/pt-json",4209:"emoji-annotations/doi-json",4354:"emoji-annotations/si-json",4368:"emoji-annotations/sq-json",4424:"emoji-annotations/yue_Hans-json",4451:"i18n/et-json",4542:"i18n/eu-json",4571:"emoji-annotations/ga-json",4646:"i18n/eo-json",4691:"emoji-annotations/ca-json",4710:"emoji-annotations/cs-json",4718:"emoji-annotations/mn-json",4770:"emoji-annotations/lb-json",4785:"emoji-annotations/ky-json",4786:"emoji-annotations/te-json",4879:"emoji-annotations/en_CA-json",4902:"emoji-annotations/hu-json",4975:"i18n/vi-json",5041:"emoji-annotations/pt-json",5104:"emoji-annotations/pcm-json",5115:"emoji-annotations/sr_Latn_BA-json",5119:"emoji-annotations/am-json",5224:"emoji-annotations/vi-json",5253:"i18n/uk-json",5304:"emoji-annotations/ha_NE-json",5401:"emoji-annotations/mni-json",5494:"i18n/hu-json",5521:"emoji-annotations/fa-json",5548:"emoji-annotations/he-json",5571:"i18n/pl-json",5728:"emoji-annotations/en-json",5887:"emoji-annotations/rm-json",5929:"i18n/zh-json",5964:"i18n/ru-json",5968:"emoji-annotations/hi-json",6060:"emoji-annotations/sr_Cyrl_BA-json",6068:"emoji-annotations/ka-json",6116:"emoji-annotations/gd-json",6126:"emoji-annotations/gl-json",6148:"emoji-annotations/br-json",6226:"emoji-annotations/de-json",6234:"i18n/ca-json",6256:"i18n/nl-json",6272:"emoji-annotations/cy-json",6342:"i18n/ro-json",6344:"emoji-annotations/hy-json",6355:"emoji-annotations/af-json",6544:"i18n/zh_Hant-json",6701:"emoji-annotations/mi-json",6773:"emoji-annotations/nl-json",6790:"emoji-annotations/my-json",6797:"emoji-annotations/ur-json",6826:"emoji-annotations/sd-json",6831:"emoji-annotations/es-json",6869:"emoji-annotations/chr-json",6936:"emoji-annotations/ia-json",6946:"emoji-annotations/pa-json",7164:"emoji-annotations/de_CH-json",7169:"emoji-annotations/lt-json",7261:"emoji-annotations/gu-json",7300:"emoji-annotations/is-json",7303:"emoji-annotations/wo-json",7304:"emoji-annotations/be-json",7360:"emoji-annotations/ar_SA-json",7433:"i18n/cs-json",7464:"emoji-annotations/lo-json",7569:"emoji-annotations/ast-json",7585:"emoji-annotations/sw-json",7808:"i18n/ar-json",7845:"i18n/nb-json",7855:"emoji-annotations/sat-json",7879:"emoji-annotations/el-json",7897:"emoji-annotations/ta-json",8015:"emoji-annotations/hsb-json",8031:"emoji-annotations/qu-json",8134:"emoji-annotations/bs-json",8395:"emoji-annotations/ru-json",8681:"emoji-annotations/sr_Latn-json",8714:"i18n/ja_easy-json",8732:"emoji-annotations/yo-json",8873:"emoji-annotations/es_419-json",8898:"emoji-annotations/lv-json",8970:"emoji-annotations/it-json",8988:"emoji-annotations/en_IN-json",8995:"emoji-annotations/fo-json",9064:"emoji-annotations/bn-json",9319:"emoji-annotations/zu-json",9360:"emoji-annotations/en_AU-json",9377:"emoji-annotations/ne-json",9399:"emoji-annotations/mt-json",9414:"emoji-annotations/nn-json",9459:"i18n/de-json",9465:"emoji-annotations/id-json",9670:"i18n/ko-json",9738:"i18n/fi-json",9757:"emoji-annotations/ug-json",9780:"emoji-annotations/kab-json",9790:"emoji-annotations/ceb-json",9864:"emoji-annotations/ro-json",9871:"emoji-annotations/uk-json",9873:"emoji-annotations/ar-json",9895:"emoji-annotations/ig-json",9921:"emoji-annotations/mk-json",9924:"emoji-annotations/ms-json",9926:"emoji-annotations/yo_BJ-json",9978:"emoji-annotations/tr-json",9979:"emoji-annotations/no-json",9994:"emoji-annotations/pa_Arab-json"}[e]||e)+"."+{48:"d7e479b200a6c89c4958",50:"bd687f904492facc81d1",159:"3a9274574f1e33801c4a",227:"2a08912b38925c10f970",278:"efdac8ac0cb00991ba1e",313:"9647f559a4477d7d8e96",325:"b52fa70f0bf89ae01cfb",346:"031838c5374676191131",379:"03c5d271a4034de06e6f",420:"0f254bb4b0faaba4abcc",457:"e42a28127d5c1aff6c85",577:"72d8c47269350f59aa9f",617:"4f52bf1b6e3213acc33c",625:"f75abd16637c8924c075",678:"a0d9eea5b81bcad11e64",786:"21e88c05ad3113dfc7f2",830:"3f1981817977a16f1d7e",1012:"b007c2f6f92dcc95efac",1044:"7eee03c705347a21c612",1056:"ac43f4c54d4587324a20",1095:"e9e8f1ed84dc6c169516",1159:"99a21d5c98376af17141",1162:"02836537ffe2b02291cb",1236:"4fca833f178d1b889b69",1290:"0bd51f8c40c106355b0e",1404:"9bc922b2e0faa64b4c53",1452:"15102c0ddfdf19bdfb4c",1546:"c381b13e323f91b0e6b3",1547:"d8d0eba80f94e6f55145",1553:"a40c5548da34fce6f1d0",1584:"50ac37d101caaf592c94",1596:"8d074e27df71edafc543",1613:"302386b3358f4d34f9c8",1780:"23a9a6229829921704ad",1790:"7635686ffd8d62264466",1821:"59ed6b59e2ca68707292",1911:"cb0a87d9aabf8a52161d",1959:"daff15251020cbecea7d",2044:"ce6db28261b2f824064f",2223:"da49ed0d1a6622fe1c67",2243:"21b06234a08c7469ccb4",2342:"9a32f2941d9c4d1f834c",2350:"5d96bdb4da82655d0314",2397:"87ab8661b4bdecd09faf",2479:"1c8d5ffcff22b46b6214",2513:"3e42564ce7a3a847ecb0",2569:"4c089389ba9983ec8ef7",2599:"116e4f72db3bfb846233",2656:"13dc83db1e15aa76051a",2685:"3f2902a84240faff1b48",2699:"ee359d4b611fdb1aeb33",2767:"9cbb765c181d443828a9",2861:"fe847ade1f18a60e513c",2873:"a20b59d47bdfe99786ad",2874:"c84c9c47d2e104c43e4c",2883:"2173ed87f8d7372ee209",2953:"a19100f6a5a9431e2adb",2966:"d175900fe48f48ce87c8",2992:"931b429f5fcc141549a5",3056:"3cb73c456f31261f1908",3241:"8b0374cbca3a77519876",3276:"c42e3f186a55ecb061cd",3313:"280bdb036dfd651d079a",3377:"34cf67edc1cecd195738",3568:"5b173bd33bb960be805b",3687:"33eab91b64f59431137d",3746:"36ef21ccb1203d3e65ae",3887:"e29a20e59a708df0c6a8",3951:"34709bae223bb9d2587c",3968:"4a302899a65e1f67d8a2",3974:"7c69c52572a7bf87e1db",3994:"f3563cbeac1c158563d5",4047:"3fc5593e030268bcd291",4209:"7841c3f3ceb4e3da0bd1",4354:"841b356da03623c10dbf",4368:"bcf154ed8a6138aa089c",4424:"cc60bb10d32fab3d8207",4451:"580b101d6bb83a8aee75",4542:"d2eab39b0427995fc314",4571:"cb3f9e613a8c445aea23",4646:"d81690d5be30b23e516b",4691:"ce029e860b10b242c6a5",4710:"48d8bba230dc9fe6b3dc",4718:"764169f1168d0432640f",4770:"499c526f3a653618ea9b",4785:"310bda579c819eda9472",4786:"8a69a10f62cdf626244e",4879:"5de965778a6b8a5a4bb4",4902:"1faf52040deda872b416",4975:"703c1e731be6e857bbf3",5041:"2b2512ee44291bdb2ae7",5104:"eac3a5ad0b4b5b33289d",5115:"72933405032b81344754",5119:"94388548f7c18233fec3",5224:"f6a364b2add7f8c8bc67",5253:"003908af9b15becdd382",5304:"e4855d92aaccfdd6ba57",5401:"7db7f76ab1ce34e3683d",5494:"0487899ca7a7a8505ed8",5521:"819c7f263c8594ccf4fa",5548:"a3d7631f32182b0955a2",5571:"c963247822381b05579b",5728:"6c3947f7c49c3952084d",5887:"985d4934f386fd05a75c",5929:"63e4c9fe0197374a5dac",5948:"2b7b4e97487f2539eb44",5964:"b913eb7f7e9f0c642438",5968:"04bc5f73dc2169def97e",6060:"83c7c64b9696ae2339f2",6068:"567e7b051d90a37003f3",6116:"e3d0aea3725be774ad81",6126:"ce89036f0ae72224c994",6148:"c7175423d8965ed10bae",6226:"e1443c01a191af1665e1",6234:"1eb24bc001efa3c0627f",6256:"3fb9758b10c29434b613",6272:"e09dd13da5ad56530ead",6342:"3fd9977ed1c1413059ae",6344:"2d819f7faabfeba8457f",6355:"96c988285a6a2cce6246",6464:"fea96fa80a7373e4e5f8",6544:"bfa569654a5cd74767ce",6701:"9efe6f146ecd8987f80a",6773:"52f4b93b8fa5e22cb585",6790:"8e7dd1485813d15bba7e",6797:"983c02109444c883a18f",6826:"8f2a6a06dc3cf185f79d",6831:"f593b0dc2367a9d7fb30",6869:"e7e542ab5a74167dec10",6936:"8e8365e2bf41779e2beb",6946:"7d60d69762a108270669",7164:"b4a5891ea2f38d616ec0",7169:"ced4d5e70edc60127df6",7261:"8a899f364cf260376905",7300:"62e220c65215b034533d",7303:"e0d689e22cda0dd77e9a",7304:"f92f80669873a4100c69",7360:"4a6f4402931a867070f0",7433:"5eedbe9f7084c349fbe8",7464:"ecb06d61465a355b8157",7569:"7e4da8cb7e539c19a9b9",7585:"d5f350641b9cbcc0e126",7808:"d09609af3224232857d6",7845:"a54af3b1f47d576ad4aa",7855:"71e92700b2aaca8e021c",7879:"b36610f2ea16d56c2314",7897:"675cc6c7607449d4a91b",8015:"438721731b4171bc6fc3",8031:"55f4df57e71076dbad9f",8134:"48ef42da1c7976cf083c",8395:"a81d0df34460837ccacc",8681:"ff27d1f455bf2afb8d70",8714:"1d5ea7e755b066ac2cdd",8732:"ea1150d6bc360dd86f2e",8873:"d81991295392b6ed83bb",8898:"5600c2eb6d59fa0aa2e2",8970:"9c1758f4fd3391f7f61a",8988:"002faa48c09121928fca",8995:"9b060e8009b3a8be4597",9064:"657aac057f36ad06c58d",9114:"e761a1c6846fea99aaf1",9319:"e0cb7cd3890583fd0f6d",9360:"33aac9bbd887273a34b1",9377:"a0118dca2096a101b8e8",9399:"3ddf7dbc114adf90c500",9414:"7293cd5d7205681cf48c",9459:"bfa48615ac92f87ff37a",9465:"55f83c46d753b0b69330",9670:"4bd28b26a7390a09afc2",9738:"d1934c18f12d80493ab1",9757:"bf768bd32e9ff02b0a8a",9780:"1a2de4774f4ddc2b51dd",9790:"9db0336f168aa77ee395",9864:"cb62f86ce78c94d1e813",9871:"af110c8eef232638fc4d",9873:"5527466d349f2954d49b",9895:"f19fa5fe3582463ba73c",9921:"a254cabb8570419cc426",9924:"272ee4735aabc37015dd",9926:"650318c25fe4da92bad8",9978:"6462e8cfd5006cf5b6cf",9979:"22bdbbc77cc3c14ada58",9994:"5ae021308b1c5f6dd8a7"}[e]+".js",a.miniCssF=e=>"static/css/"+e+"."+{159:"1d523a00378ebd68c5b3",5948:"06d2a0d84620cba6a4fb",6464:"169260b661120cc50815",9114:"8def3b2b7fe70b3b3712"}[e]+".css",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o={},r="pleroma_fe:",a.l=(e,t,n,i)=>{if(o[e])o[e].push(t);else{var s,c;if(void 0!==n)for(var l=document.getElementsByTagName("script"),u=0;u<l.length;u++){var d=l[u];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==r+n){s=d;break}}s||(c=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,a.nc&&s.setAttribute("nonce",a.nc),s.setAttribute("data-webpack",r+n),s.src=e),o[e]=[t];var p=(t,n)=>{s.onerror=s.onload=null,clearTimeout(m);var r=o[e];if(delete o[e],s.parentNode&&s.parentNode.removeChild(s),r&&r.forEach((e=>e(n))),t)return t(n)},m=setTimeout(p.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=p.bind(null,s.onerror),s.onload=p.bind(null,s.onload),c&&document.head.appendChild(s)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.p="/",(()=>{if("undefined"!=typeof document){var e={2143:0};a.f.miniCss=(t,n)=>{e[t]?n.push(e[t]):0!==e[t]&&{159:1,5948:1,6464:1,9114:1}[t]&&n.push(e[t]=(e=>new Promise(((t,n)=>{var o=a.miniCssF(e),r=a.p+o;if(((e,t)=>{for(var n=document.getElementsByTagName("link"),o=0;o<n.length;o++){var r=(s=n[o]).getAttribute("data-href")||s.getAttribute("href");if("stylesheet"===s.rel&&(r===e||r===t))return s}var i=document.getElementsByTagName("style");for(o=0;o<i.length;o++){var s;if((r=(s=i[o]).getAttribute("data-href"))===e||r===t)return s}})(o,r))return t();((e,t,n,o,r)=>{var i=document.createElement("link");i.rel="stylesheet",i.type="text/css",i.onerror=i.onload=n=>{if(i.onerror=i.onload=null,"load"===n.type)o();else{var s=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.href||t,c=new Error("Loading CSS chunk "+e+" failed.\n("+a+")");c.code="CSS_CHUNK_LOAD_FAILED",c.type=s,c.request=a,i.parentNode.removeChild(i),r(c)}},i.href=t,document.head.appendChild(i)})(e,r,0,t,n)})))(t).then((()=>{e[t]=0}),(n=>{throw delete e[t],n})))}}})(),(()=>{var e={2143:0};a.f.j=(t,n)=>{var o=a.o(e,t)?e[t]:void 0;if(0!==o)if(o)n.push(o[2]);else{var r=new Promise(((n,r)=>o=e[t]=[n,r]));n.push(o[2]=r);var i=a.p+a.u(t),s=new Error;a.l(i,(n=>{if(a.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var r=n&&("load"===n.type?"missing":n.type),i=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+r+": "+i+")",s.name="ChunkLoadError",s.type=r,s.request=i,o[1](s)}}),"chunk-"+t,t)}},a.O.j=t=>0===e[t];var t=(t,n)=>{var o,r,[i,s,c]=n,l=0;if(i.some((t=>0!==e[t]))){for(o in s)a.o(s,o)&&(a.m[o]=s[o]);if(c)var u=c(a)}for(t&&t(n);l<i.length;l++)r=i[l],a.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return a.O(u)},n=self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var c=a.O(void 0,[2724],(()=>a(43002)));c=a.O(c)})(); -//# sourceMappingURL=app.8d2126d35dba9482db51.js.map -\ No newline at end of file diff --git a/priv/static/static/js/app.8d2126d35dba9482db51.js.map b/priv/static/static/js/app.8d2126d35dba9482db51.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/app.8d2126d35dba9482db51.js","mappings":"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,CACT,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,gBAAiB,CAChB,MACA,KAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,MACA,IAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,gBAAiB,CAChB,MACA,MAED,eAAgB,CACf,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,eAAgB,CACf,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,oBAAqB,CACpB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,YAAa,CACZ,MACA,MAED,YA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,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO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","sources":["webpack://pleroma_fe/webpack/runtime/chunk loaded","webpack://pleroma_fe/webpack/runtime/create fake namespace object","webpack://pleroma_fe/webpack/runtime/load script","webpack://pleroma_fe/./src/i18n/en.json","webpack://pleroma_fe/./node_modules/@kazvmoe-infra/unicode-emoji-json/annotations/ lazy ^\\.\\/.*\\.json$ chunkName: emoji-annotations/[request] namespace object","webpack://pleroma_fe/./src/components/emoji_input/suggestor.js","webpack://pleroma_fe/./src/services/html_converter/utility.service.js","webpack://pleroma_fe/./src/services/html_converter/html_line_converter.service.js","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.vue","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.js","webpack://pleroma_fe/./src/services/matcher/matcher.service.js","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.vue?7c0f","webpack://pleroma_fe/./src/components/rich_content/rich_content.jsx","webpack://pleroma_fe/./src/services/html_converter/html_tree_converter.service.js","webpack://pleroma_fe/./src/components/tab_switcher/tab_switcher.jsx","webpack://pleroma_fe/./src/i18n/languages.js","webpack://pleroma_fe/./src/i18n/messages.js","webpack://pleroma_fe/./src/lib/event_target_polyfill.js","webpack://pleroma_fe/./src/modules/interface.js","webpack://pleroma_fe/./src/modules/instance.js","webpack://pleroma_fe/./src/modules/statuses.js","webpack://pleroma_fe/./src/modules/lists.js","webpack://pleroma_fe/./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack://pleroma_fe/./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack://pleroma_fe/./src/services/lists_fetcher/lists_fetcher.service.js","webpack://pleroma_fe/./src/services/backend_interactor_service/backend_interactor_service.js","webpack://pleroma_fe/./src/services/window_utils/window_utils.js","webpack://pleroma_fe/./src/services/new_api/oauth.js","webpack://pleroma_fe/./src/services/push/push.js","webpack://pleroma_fe/./src/modules/users.js","webpack://pleroma_fe/./src/services/chat_utils/chat_utils.js","webpack://pleroma_fe/./src/modules/api.js","webpack://pleroma_fe/./src/components/update_notification/update_notification.js","webpack://pleroma_fe/./src/modules/serverSideStorage.js","webpack://pleroma_fe/./src/modules/shout.js","webpack://pleroma_fe/./src/modules/oauth.js","webpack://pleroma_fe/./src/modules/auth_flow.js","webpack://pleroma_fe/./src/modules/media_viewer.js","webpack://pleroma_fe/./src/modules/oauth_tokens.js","webpack://pleroma_fe/./src/modules/reports.js","webpack://pleroma_fe/./src/modules/polls.js","webpack://pleroma_fe/./src/modules/postStatus.js","webpack://pleroma_fe/./src/modules/editStatus.js","webpack://pleroma_fe/./src/modules/statusHistory.js","webpack://pleroma_fe/./src/services/chat_service/chat_service.js","webpack://pleroma_fe/./src/modules/chats.js","webpack://pleroma_fe/./src/modules/announcements.js","webpack://pleroma_fe/./src/lib/persisted_state.js","webpack://pleroma_fe/./src/lib/push_notifications_plugin.js","webpack://pleroma_fe/./src/App.vue","webpack://pleroma_fe/./src/components/user_panel/user_panel.vue","webpack://pleroma_fe/./src/components/login_form/login_form.vue","webpack://pleroma_fe/./src/components/login_form/login_form.js","webpack://pleroma_fe/./src/components/login_form/login_form.vue?7e2c","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.vue","webpack://pleroma_fe/./src/services/new_api/mfa.js","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.js","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.vue?75db","webpack://pleroma_fe/./src/components/mfa_form/totp_form.vue","webpack://pleroma_fe/./src/components/mfa_form/totp_form.js","webpack://pleroma_fe/./src/components/mfa_form/totp_form.vue?e31f","webpack://pleroma_fe/./src/components/auth_form/auth_form.js","webpack://pleroma_fe/./src/components/user_panel/user_panel.js","webpack://pleroma_fe/./src/components/user_panel/user_panel.vue?62d1","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.vue","webpack://pleroma_fe/./src/components/navigation/navigation_entry.vue","webpack://pleroma_fe/./src/components/navigation/navigation.js","webpack://pleroma_fe/./src/components/optional_router_link/optional_router_link.vue","webpack://pleroma_fe/./src/components/optional_router_link/optional_router_link.vue?aa8e","webpack://pleroma_fe/./src/components/navigation/navigation_entry.js","webpack://pleroma_fe/./src/components/navigation/navigation_entry.vue?57fe","webpack://pleroma_fe/./src/components/navigation/filter.js","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.js","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.vue?5439","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.vue","webpack://pleroma_fe/./src/components/navigation/navigation_pins.vue","webpack://pleroma_fe/./src/components/navigation/navigation_pins.js","webpack://pleroma_fe/./src/components/navigation/navigation_pins.vue?9359","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.js","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.vue?ec9c","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.vue","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.js","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.vue?b4d3","webpack://pleroma_fe/./src/components/features_panel/features_panel.vue","webpack://pleroma_fe/./src/components/features_panel/features_panel.js","webpack://pleroma_fe/./src/components/features_panel/features_panel.vue?e52c","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.vue?c79e","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.vue","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.js","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.vue?452f","webpack://pleroma_fe/./src/components/media_modal/media_modal.vue","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.js","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.vue?6a4b","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.vue","webpack://pleroma_fe/./src/services/gesture_service/gesture_service.js","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.js","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.vue?cb15","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.vue","webpack://pleroma_fe/./src/components/media_modal/media_modal.js","webpack://pleroma_fe/./src/components/media_modal/media_modal.vue?9f8e","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.vue","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.js","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.vue?c115","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.js","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.vue?cc2d","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.vue","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.js","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.vue?67f1","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.vue","webpack://pleroma_fe/./src/components/search_bar/search_bar.vue","webpack://pleroma_fe/./src/components/search_bar/search_bar.js","webpack://pleroma_fe/./src/components/search_bar/search_bar.vue?d1ca","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.js","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.vue?6641","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.vue","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.js","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.vue?df82","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.vue","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.js","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.vue?03f9","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.vue","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.js","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.vue?9c44","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.vue","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.js","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.vue?4ee0","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.vue","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.js","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.vue?1667","webpack://pleroma_fe/./src/App.js","webpack://pleroma_fe/./src/App.vue?3b2b","webpack://pleroma_fe/./src/components/timeline/timeline.vue","webpack://pleroma_fe/./src/components/conversation/conversation.vue","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.vue","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.js","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.vue?7311","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.vue","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.js","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.vue?f71f","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.vue","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.js","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.vue?4eaf","webpack://pleroma_fe/./src/components/conversation/conversation.js","webpack://pleroma_fe/./src/components/conversation/conversation.vue?6723","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.vue","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.js","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.vue?96c1","webpack://pleroma_fe/./src/components/timeline/timeline.js","webpack://pleroma_fe/./src/components/timeline/timeline.vue?7060","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.js","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.vue?daf2","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.vue","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.vue?9b62","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.js","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.vue?a3f1","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.vue","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.js","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.vue?be7b","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.vue","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.js","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.vue?863c","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.vue","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.js","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.vue?2386","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.vue","webpack://pleroma_fe/./src/components/interactions/interactions.vue","webpack://pleroma_fe/./src/components/interactions/interactions.js","webpack://pleroma_fe/./src/components/interactions/interactions.vue?3dc7","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.js","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.vue?fced","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.vue","webpack://pleroma_fe/./src/components/chat_list/chat_list.vue","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.vue","webpack://pleroma_fe/./src/components/chat_title/chat_title.js","webpack://pleroma_fe/./src/components/chat_title/chat_title.vue?723f","webpack://pleroma_fe/./src/components/chat_title/chat_title.vue","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.js","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.vue?9103","webpack://pleroma_fe/./src/components/chat_new/chat_new.vue","webpack://pleroma_fe/./src/components/chat_new/chat_new.js","webpack://pleroma_fe/./src/components/chat_new/chat_new.vue?e65f","webpack://pleroma_fe/./src/components/chat_list/chat_list.js","webpack://pleroma_fe/./src/components/chat_list/chat_list.vue?39cf","webpack://pleroma_fe/./src/components/chat/chat.vue","webpack://pleroma_fe/./src/components/chat_message/chat_message.vue","webpack://pleroma_fe/./src/components/chat_message_date/chat_message_date.vue","webpack://pleroma_fe/./src/components/chat_message_date/chat_message_date.vue?a1e2","webpack://pleroma_fe/./src/components/chat_message/chat_message.js","webpack://pleroma_fe/./src/components/chat_message/chat_message.vue?38f9","webpack://pleroma_fe/./src/components/chat/chat_layout_utils.js","webpack://pleroma_fe/./src/components/chat/chat.js","webpack://pleroma_fe/./src/components/chat/chat.vue?0265","webpack://pleroma_fe/./src/components/user_profile/user_profile.vue","webpack://pleroma_fe/./src/components/follow_card/follow_card.vue","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.js","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.vue?a06d","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.vue","webpack://pleroma_fe/./src/components/follow_card/follow_card.js","webpack://pleroma_fe/./src/components/follow_card/follow_card.vue?a7d5","webpack://pleroma_fe/./src/hocs/with_load_more/with_load_more.jsx","webpack://pleroma_fe/./src/components/user_profile/user_profile.js","webpack://pleroma_fe/./src/components/user_profile/user_profile.vue?c6a1","webpack://pleroma_fe/./src/components/search/search.vue","webpack://pleroma_fe/./src/components/search/search.js","webpack://pleroma_fe/./src/components/search/search.vue?853e","webpack://pleroma_fe/./src/components/registration/registration.vue","webpack://pleroma_fe/./src/components/registration/registration.js","webpack://pleroma_fe/./src/components/registration/registration.vue?5788","webpack://pleroma_fe/./src/components/password_reset/password_reset.vue","webpack://pleroma_fe/./src/components/password_reset/password_reset.js","webpack://pleroma_fe/./src/services/new_api/password_reset.js","webpack://pleroma_fe/./src/components/password_reset/password_reset.vue?e9fd","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.vue","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.vue","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.js","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.js","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.vue?64bb","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.vue?427b","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.js","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.vue?a7e1","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.vue","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.vue","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.js","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.vue?d712","webpack://pleroma_fe/./src/components/about/about.vue","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.vue?39d2","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.vue","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.js","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.vue?16a1","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack://pleroma_fe/./src/components/about/about.js","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?cbb1","webpack://pleroma_fe/./src/components/about/about.vue?07c3","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.vue","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.js","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.vue?ac33","webpack://pleroma_fe/./src/components/lists/lists.vue","webpack://pleroma_fe/./src/components/lists_card/lists_card.vue","webpack://pleroma_fe/./src/components/lists_card/lists_card.js","webpack://pleroma_fe/./src/components/lists/lists.js","webpack://pleroma_fe/./src/components/lists_card/lists_card.vue?16e6","webpack://pleroma_fe/./src/components/lists/lists.vue?7e21","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.js","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.vue?804f","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.vue","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.vue","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.vue","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.js","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.vue?4447","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.js","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.vue?056b","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.vue","webpack://pleroma_fe/./src/components/announcement/announcement.vue","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.vue","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.js","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.vue?cdb9","webpack://pleroma_fe/./src/components/announcement/announcement.js","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.js","webpack://pleroma_fe/./src/components/announcement/announcement.vue?a400","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.vue?89ce","webpack://pleroma_fe/./src/boot/routes.js","webpack://pleroma_fe/./src/directives/body_scroll_lock.js","webpack://pleroma_fe/./src/boot/after_store.js","webpack://pleroma_fe/./src/main.js","webpack://pleroma_fe/./src/modules/config.js","webpack://pleroma_fe/./src/modules/serverSideConfig.js","webpack://pleroma_fe/./src/services/errors/errors.js","webpack://pleroma_fe/./src/modules/errors.js","webpack://pleroma_fe/./src/services/api/api.service.js","webpack://pleroma_fe/./src/services/attributes_helper/attributes_helper.service.js","webpack://pleroma_fe/./src/services/color_convert/color_convert.js","webpack://pleroma_fe/./src/services/component_utils/component_utils.js","webpack://pleroma_fe/./src/services/date_utils/date_utils.js","webpack://pleroma_fe/./src/services/desktop_notification_utils/desktop_notification_utils.js","webpack://pleroma_fe/./src/services/entity_normalizer/entity_normalizer.service.js","webpack://pleroma_fe/./src/services/favicon_service/favicon_service.js","webpack://pleroma_fe/./src/services/file_size_format/file_size_format.js","webpack://pleroma_fe/./src/services/file_type/file_type.service.js","webpack://pleroma_fe/./src/services/locale/locale.service.js","webpack://pleroma_fe/./src/services/notification_utils/notification_utils.js","webpack://pleroma_fe/./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack://pleroma_fe/./src/services/offset_finder/offset_finder.service.js","webpack://pleroma_fe/./src/services/promise_interval/promise_interval.js","webpack://pleroma_fe/./src/services/status_parser/status_parser.js","webpack://pleroma_fe/./src/services/status_poster/status_poster.service.js","webpack://pleroma_fe/./src/services/style_setter/style_setter.js","webpack://pleroma_fe/./src/services/theme_data/pleromafe.js","webpack://pleroma_fe/./src/services/theme_data/theme_data.service.js","webpack://pleroma_fe/./src/services/user_highlighter/user_highlighter.js","webpack://pleroma_fe/./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack://pleroma_fe/./src/components/attachment/attachment.vue","webpack://pleroma_fe/./src/components/attachment/attachment.js","webpack://pleroma_fe/./src/components/attachment/attachment.vue?6808","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.vue","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.js","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.vue?171c","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.vue","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.js","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.vue?95ff","webpack://pleroma_fe/./src/components/checkbox/checkbox.vue","webpack://pleroma_fe/./src/components/checkbox/checkbox.vue?4d95","webpack://pleroma_fe/./src/components/confirm_modal/confirm_modal.js","webpack://pleroma_fe/./src/components/confirm_modal/confirm_modal.vue?dff7","webpack://pleroma_fe/./src/components/confirm_modal/confirm_modal.vue","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.vue","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.js","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.vue?60df","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.vue","webpack://pleroma_fe/./src/services/completion/completion.js","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.vue","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.js","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.vue?6411","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.js","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.vue?a18c","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.vue","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.js","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.vue?cc95","webpack://pleroma_fe/./src/services/ruffle_service/ruffle_service.js","webpack://pleroma_fe/./src/components/flash/flash.vue","webpack://pleroma_fe/./src/components/flash/flash.js","webpack://pleroma_fe/./src/components/flash/flash.vue?8f01","webpack://pleroma_fe/./src/services/follow_manipulate/follow_manipulate.js","webpack://pleroma_fe/./src/components/follow_button/follow_button.js","webpack://pleroma_fe/./src/components/follow_button/follow_button.vue?fbc0","webpack://pleroma_fe/./src/components/follow_button/follow_button.vue","webpack://pleroma_fe/./src/components/gallery/gallery.vue","webpack://pleroma_fe/./src/components/gallery/gallery.js","webpack://pleroma_fe/./src/components/gallery/gallery.vue?c41d","webpack://pleroma_fe/./src/components/interface_language_switcher/interface_language_switcher.vue","webpack://pleroma_fe/./src/components/interface_language_switcher/interface_language_switcher.vue?f2c7","webpack://pleroma_fe/./src/components/link-preview/link-preview.vue","webpack://pleroma_fe/./src/components/link-preview/link-preview.js","webpack://pleroma_fe/./src/components/link-preview/link-preview.vue?5c9b","webpack://pleroma_fe/./src/components/list/list.vue","webpack://pleroma_fe/./src/components/list/list.vue?b52f","webpack://pleroma_fe/./src/components/mention_link/mention_link.vue","webpack://pleroma_fe/./src/components/mention_link/mention_link.js","webpack://pleroma_fe/./src/components/mention_link/mention_link.vue?f0cb","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.vue","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.js","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.vue?e8e7","webpack://pleroma_fe/./src/components/modal/modal.vue","webpack://pleroma_fe/./src/components/modal/modal.vue?8c58","webpack://pleroma_fe/./src/components/notifications/notifications.vue","webpack://pleroma_fe/./src/components/notification/notification.vue","webpack://pleroma_fe/./src/components/report/report.vue","webpack://pleroma_fe/./src/components/report/report.js","webpack://pleroma_fe/./src/components/report/report.vue?5c84","webpack://pleroma_fe/./src/components/notification/notification.js","webpack://pleroma_fe/./src/components/notification/notification.vue?17c8","webpack://pleroma_fe/./src/components/notifications/notification_filters.vue","webpack://pleroma_fe/./src/components/notifications/notification_filters.vue?4a98","webpack://pleroma_fe/./src/components/notifications/notifications.js","webpack://pleroma_fe/./src/components/notifications/notifications.vue?770b","webpack://pleroma_fe/./src/components/panel_loading/panel_loading.vue","webpack://pleroma_fe/./src/components/panel_loading/panel_loading.vue?50c2","webpack://pleroma_fe/./src/components/popover/popover.js","webpack://pleroma_fe/./src/components/popover/popover.vue?237b","webpack://pleroma_fe/./src/components/popover/popover.vue","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.vue","webpack://pleroma_fe/./src/components/media_upload/media_upload.js","webpack://pleroma_fe/./src/components/media_upload/media_upload.vue?73d1","webpack://pleroma_fe/./src/components/media_upload/media_upload.vue","webpack://pleroma_fe/./src/components/poll/poll_form.vue","webpack://pleroma_fe/./src/components/poll/poll_form.js","webpack://pleroma_fe/./src/components/poll/poll_form.vue?5434","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.js","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.vue?b98e","webpack://pleroma_fe/./src/components/progress_button/progress_button.vue","webpack://pleroma_fe/./src/components/progress_button/progress_button.vue?2d10","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.vue","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.js","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.vue?188a","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.vue","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.js","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.vue?cbff","webpack://pleroma_fe/./src/components/select/select.js","webpack://pleroma_fe/./src/components/select/select.vue?fa00","webpack://pleroma_fe/./src/components/select/select.vue","webpack://pleroma_fe/./src/components/status/status.vue","webpack://pleroma_fe/./src/components/reply_button/reply_button.vue","webpack://pleroma_fe/./src/components/reply_button/reply_button.js","webpack://pleroma_fe/./src/components/reply_button/reply_button.vue?f8cc","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.vue","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.js","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.vue?4c13","webpack://pleroma_fe/./src/components/react_button/react_button.vue","webpack://pleroma_fe/./src/components/react_button/react_button.js","webpack://pleroma_fe/./src/components/react_button/react_button.vue?64d4","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.vue","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.js","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.vue?774a","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.vue","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.js","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.vue?2a14","webpack://pleroma_fe/./src/components/status_popover/status_popover.vue","webpack://pleroma_fe/./src/components/status_popover/status_popover.js","webpack://pleroma_fe/./src/components/status_popover/status_popover.vue?2f31","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.vue","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.js","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.vue?32eb","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.vue","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.js","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.vue?be26","webpack://pleroma_fe/./src/components/status/status.js","webpack://pleroma_fe/./src/components/status/status.vue?f274","webpack://pleroma_fe/./src/components/status_content/status_content.vue","webpack://pleroma_fe/./src/components/poll/poll.vue","webpack://pleroma_fe/./src/components/poll/poll.js","webpack://pleroma_fe/./src/components/poll/poll.vue?09ad","webpack://pleroma_fe/./src/components/status_body/status_body.vue","webpack://pleroma_fe/./src/components/status_body/status_body.js","webpack://pleroma_fe/./src/components/status_body/status_body.vue?a029","webpack://pleroma_fe/./src/components/status_content/status_content.js","webpack://pleroma_fe/./src/components/status_content/status_content.vue?5b7b","webpack://pleroma_fe/./src/components/still-image/still-image.vue","webpack://pleroma_fe/./src/components/still-image/still-image.js","webpack://pleroma_fe/./src/components/still-image/still-image.vue?7a8d","webpack://pleroma_fe/./src/components/timeago/timeago.vue","webpack://pleroma_fe/./src/components/timeago/timeago.vue?3167","webpack://pleroma_fe/./src/components/unicode_domain_indicator/unicode_domain_indicator.vue","webpack://pleroma_fe/./src/components/unicode_domain_indicator/unicode_domain_indicator.vue?760a","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.js","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.vue?84fc","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.vue","webpack://pleroma_fe/./src/components/user_card/user_card.vue","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.vue","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.js","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.vue?98d7","webpack://pleroma_fe/./src/components/account_actions/account_actions.vue","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.vue","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.js","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.vue?e3cb","webpack://pleroma_fe/./src/components/account_actions/account_actions.js","webpack://pleroma_fe/./src/components/account_actions/account_actions.vue?26a0","webpack://pleroma_fe/./src/components/user_note/user_note.vue","webpack://pleroma_fe/./src/components/user_note/user_note.js","webpack://pleroma_fe/./src/components/user_note/user_note.vue?302a","webpack://pleroma_fe/./src/components/user_card/user_card.js","webpack://pleroma_fe/./src/components/user_card/user_card.vue?bb36","webpack://pleroma_fe/./src/components/user_link/user_link.vue","webpack://pleroma_fe/./src/components/user_link/user_link.vue?e5f2","webpack://pleroma_fe/./src/components/user_popover/user_popover.js","webpack://pleroma_fe/./src/components/user_popover/user_popover.vue?dfdb","webpack://pleroma_fe/./src/components/user_popover/user_popover.vue","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.js","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.vue?da03","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.vue","webpack://pleroma_fe/./src/i18n/ lazy ^\\.\\/.*\\.json$ include: \\.json$ chunkName: i18n/[request] namespace object","webpack://pleroma_fe/webpack/bootstrap","webpack://pleroma_fe/webpack/runtime/compat get default export","webpack://pleroma_fe/webpack/runtime/define property getters","webpack://pleroma_fe/webpack/runtime/ensure chunk","webpack://pleroma_fe/webpack/runtime/get javascript chunk filename","webpack://pleroma_fe/webpack/runtime/get mini-css chunk filename","webpack://pleroma_fe/webpack/runtime/global","webpack://pleroma_fe/webpack/runtime/hasOwnProperty shorthand","webpack://pleroma_fe/webpack/runtime/make namespace object","webpack://pleroma_fe/webpack/runtime/node module decorator","webpack://pleroma_fe/webpack/runtime/publicPath","webpack://pleroma_fe/webpack/runtime/css loading","webpack://pleroma_fe/webpack/runtime/jsonp chunk loading","webpack://pleroma_fe/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"pleroma_fe:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","export default {\n \"about\": {\n \"mrf\": {\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federation\"])},\n \"keyword\": {\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keyword policies\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"The Whole Known Network\\\" Timeline\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replace\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])}\n },\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enabled MRF policies\"])},\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF policies manipulate the federation behaviour of the instance. The following policies are enabled:\"])},\n \"simple\": {\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance-specific policies\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason\"])},\n \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N/A\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance only accepts messages from the following instances:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will not accept messages from the following instances:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quarantine\"])},\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will send only public posts to the following instances:\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"Known Network\\\" Timeline\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes these instances from \\\"Known Network\\\" timeline:\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media Removal\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes media from posts on the following instances:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media force-set as sensitive\"])},\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance forces media to be set sensitive in posts on the following instances:\"])}\n }\n },\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Staff\"])}\n },\n \"announcements\": {\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcements\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcement\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark as read\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post announcement\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your announcement content here...\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post\"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error: \", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start time: \"])},\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"End time: \"])},\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is an all-day event\"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Published at \", _interpolate(_named(\"time\"))])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Starts at \", _interpolate(_named(\"time\"))])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ends at \", _interpolate(_named(\"time\"))])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This announcement is inactive\"])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])}\n },\n \"domain_mute_card\": {\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])}\n },\n \"exporter\": {\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export\"])},\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Processing, you'll soon be asked to download your file\"])}\n },\n \"features_panel\": {\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma Chat\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media proxy\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope options\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text limit\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Features\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload limit\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error fetching user\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Find user\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apply\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loading…\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured\"])},\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"An error occured: \", _interpolate(_list(0))])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please try again\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"optional\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show more\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show less\"])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Never show again\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dismiss\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verify\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Undo\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peek\"])},\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scroll to top\"])},\n \"role\": {\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderator\"])}\n },\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin item\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin item\"])},\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click to show Flash content using Ruffle (Experimental, may not work).\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note that this can be potentially dangerous since Flash content is still arbitrary code.\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to load flash content, see console for details.\"])},\n \"scope_in_timeline\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted\"])}\n }\n },\n \"image_cropper\": {\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Crop picture\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save without cropping\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n },\n \"importer\": {\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imported successfully.\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured while importing this file.\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in with OAuth\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log out\"])},\n \"logout_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout confirmation\"])},\n \"logout_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to logout?\"])},\n \"logout_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"logout_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not logout\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in to join the discussion\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication code\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a recovery code\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a two-factor code\"])},\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery code\"])},\n \"heading\": {\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor authentication\"])},\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor recovery\"])}\n }\n },\n \"media_modal\": {\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous\"])},\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close media viewer\"])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow requests\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interactions\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct messages\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public timeline\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timeline\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home timeline\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Known Network\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmarks\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Search\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search\"])},\n \"search_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close search bar\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timelines\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lists\"])},\n \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Customize navigation bar\"])},\n \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit pinned items\"])},\n \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Done editing\"])},\n \"mobile_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggle mobile sidebar\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open notifications\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open notifications (there are unread ones)\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close notifications\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcements\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unknown status, searching for it…\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching notifications: \", _interpolate(_list(0))])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorited your status\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"followed you\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wants to follow you\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older notifications\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Read!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated your status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more notifications\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrated to\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reacted with \", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"submitted a report\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"poll has ended\"])}\n },\n \"polls\": {\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add poll\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add option\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Option\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"votes\"])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" person voted\"]), _normalize([_interpolate(_named(\"count\")), \" people voted\"])])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" vote\"]), _normalize([_interpolate(_named(\"count\")), \" votes\"])])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vote\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll type\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Single choice\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Multiple choices\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll age\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ends in \", _interpolate(_list(0))])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ended \", _interpolate(_list(0)), \" ago\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Too few unique options in poll\"])}\n },\n \"emoji\": {\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stickers\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep picker open\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for an emoji\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insert emoji\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom emoji\"])},\n \"unpacked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpacked emoji\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode emoji\"])},\n \"unicode_groups\": {\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activities\"])},\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Animals & Nature\"])},\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flags\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Food & Drink\"])},\n \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Objects\"])},\n \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"People & Body\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Smileys & Emotion\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Symbols\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Travel & Places\"])}\n },\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loaded first \", _interpolate(_named(\"saneAmount\")), \" emoji, loading all emoji may cause performance issues.\"])},\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loading all \", _interpolate(_named(\"emojiAmount\")), \" emoji\"])},\n \"regional_indicator\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Regional indicator \", _interpolate(_named(\"letter\"))])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies.\"])}\n },\n \"interactions\": {\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats and favorites\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New follows\"])},\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji Reactions\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reports\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User migrates\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older interactions\"])}\n },\n \"post_status\": {\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit status\"])},\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post new status\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your account is not \", _interpolate(_list(0)), \". Anyone can follow you to view your follower-only posts.\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"locked\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark attachments as sensitive\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media description\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Plain text\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])}\n },\n \"content_type_selection\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post format\"])},\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subject (optional)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to all the mentioned users.\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will only be visible to the mentioned users at the beginning of the message.\"])},\n \"edit_remote_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Other remote instances may not support editing and unable to receive the latest version of your post.\"])},\n \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma does not support editing mentions or polls.\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posting\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Empty\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Can't post an empty status with no files\"])},\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to update media, try again\"])},\n \"scope_notice\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to everyone\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to your followers only\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will not be visible in Public Timeline and The Whole Known Network\"])}\n },\n \"scope_notice_dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close this notice\"])},\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct - post to mentioned users only\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only - post to followers only\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public - post to public timelines\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted - do not post to public timelines\"])}\n }\n },\n \"registration\": {\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio (optional)\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email (optional)\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display name\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password confirmation\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invite token\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click the image to get a new captcha\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. Lain Iwakura\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g.\\nHi, I'm Lain.\\nI’m an anime girl living in suburban Japan. You may know me from the Wired.\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason to register\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance approves registrations manually.\\nLet the administration know why you want to register.\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"should be the same as password\"])},\n \"birthday_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"birthday_min_age\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"must be on or before \", _interpolate(_named(\"date\"))])}\n },\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"In which language do you want to receive emails from the server?\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday:\"])},\n \"birthday_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday (optional):\"])}\n },\n \"remote_user_resolver\": {\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote user resolver\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Searching for\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Not found.\"])}\n },\n \"report\": {\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reporter:\"])},\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reported user:\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reported statuses:\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notes:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"State:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open\"])},\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Closed\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resolved\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select all\"])}\n },\n \"settings\": {\n \"add_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add fallback language\"])},\n \"remove_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n \"primary_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Primary language:\"])},\n \"fallback_language\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Fallback language \", _interpolate(_named(\"index\")), \":\"])},\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App name\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show advanced\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setting is different from default\"])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This setting is tied to your profile and affects all sessions and clients\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your current password to confirm your identity\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts Look & Feel\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention links\"])},\n \"mfa\": {\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setup OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"presetting OTP\"])},\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm & enable OTP\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor Authentication\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Generate new recovery codes\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When you generate new recovery codes, your old codes won’t work anymore.\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery codes.\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receiving backup codes…\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.\"])},\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication methods\"])},\n \"scan\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scan\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Using your two-factor app, scan this QR code or enter text key:\"])},\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Key\"])}\n },\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To enable two-factor authentication, enter the code from your two-factor app:\"])}\n }\n },\n \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show lists in navigation\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow auto-follow when following account moves\"])},\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars (notifications)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Background\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language for receiving emails from the server\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block export\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your blocks to a csv file\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block import\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing blocks\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks imported! Processing them will take a while.\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute export\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your mutes to a csv file\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute import\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing mutes\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes imported! Processing them will take a while.\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import mutes from a csv file\"])},\n \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account backup\"])},\n \"account_backup_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This allows you to download an archive of your account information and your posts, but they cannot yet be imported into a Pleroma account.\"])},\n \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup\"])},\n \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Download\"])},\n \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This backup is not ready yet.\"])},\n \"backup_running\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"This backup is in progress, processed \", _interpolate(_named(\"number\")), \" record.\"]), _normalize([\"This backup is in progress, processed \", _interpolate(_named(\"number\")), \" records.\"])])},\n \"backup_failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This backup has failed.\"])},\n \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error fetching backup list: \", _interpolate(_named(\"error\"))])},\n \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Create a new backup\"])},\n \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Added a new backup.\"])},\n \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error adding a new backup: \", _interpolate(_named(\"error\"))])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is a bot account\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blue (Reply, follow)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Green (Retweet)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Orange (Favorite)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Red (Cancel)\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change email\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your email.\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email changed successfully!\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change password\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your password.\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password changed successfully!\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chat message\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse posts with subjects\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Composing\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm new password\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n \"confirm_dialogs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ask for confirmation when\"])},\n \"confirm_dialogs_repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeating a status\"])},\n \"confirm_dialogs_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"unfollowing a user\"])},\n \"confirm_dialogs_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"blocking a user\"])},\n \"confirm_dialogs_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"muting a user\"])},\n \"confirm_dialogs_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"deleting a status\"])},\n \"confirm_dialogs_logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"logging out\"])},\n \"confirm_dialogs_approve_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"approving a follower\"])},\n \"confirm_dialogs_deny_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"denying a follower\"])},\n \"confirm_dialogs_remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"removing a follower\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes and Blocks\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data import / export\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default visibility scope\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permanently delete your data and deactivate your account.\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue deleting your account. If this persists please contact your instance administrator.\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your password in the input below to confirm account deletion.\"])},\n \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account aliases\"])},\n \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alias\"])},\n \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error fetching aliases: \", _interpolate(_named(\"error\"))])},\n \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove this alias\"])},\n \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Add a new alias (e.g. \", _interpolate(_named(\"example\")), \")\"])},\n \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alias is added.\"])},\n \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error adding alias: \", _interpolate(_named(\"error\"))])},\n \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Move account\"])},\n \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If you want to move the account somewhere else, you must go to your target account and add an alias pointing here.\"])},\n \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Target account (e.g. \", _interpolate(_named(\"example\")), \")\"])},\n \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account is moved.\"])},\n \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error moving account: \", _interpolate(_named(\"error\"))])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow discovery of this account in search results and other services\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domains\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The recommended minimum size for avatar images is 150x150 pixels.\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pad emoji with spaces when adding from picker\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show emoji reactions on timeline\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save preset\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtering\"])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordfilter\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All statuses containing these words will be muted, one per line\"])},\n \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Word filter and more...\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow export\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your follows to a csv file\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow import\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing followers\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows imported! Processing them will take a while.\"])},\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accent\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foreground\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"General\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in conversations\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in timeline\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide media previews\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide posts of muted users\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute bot posts\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide bot indication in posts\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted posts\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum amount of thumbnails per post (empty = no limit)\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance-specific panel\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance shoutbox\"])},\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reverse order of columns\"])},\n \"navbar_column_stretch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stretch navbar to columns width\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show floating New Post button\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance wallpaper\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preload images\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open NSFW attachments with just one click\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide post statistics (e.g. the number of favorites)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide user statistics (e.g. the number of followers)\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide all filtered posts\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide word-filtered statuses\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted threads\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import blocks from a csv file\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import follows from a csv file\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load preset\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Checkboxes\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(default: \", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(default)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface language\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma theme. No changes to your theme were made.\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unavailable in your browser\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Links\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restrict your account to approved followers only\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop videos\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop only videos without sound (i.e. Mastodon's \\\"gifs\\\")\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Play videos in a popup frame\"])},\n \"file_export_import\": {\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings backup\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings to file\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings and theme to file\"])},\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restore settings from file\"])},\n \"errors\": {\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma settings backup. No changes were made.\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", this PleromaFE (settings ver \", _interpolate(_named(\"feMajor\")), \") is too old to handle it\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", file version is too old and not supported (min. set. ver. \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File minor version is different, some settings might not load\"])}\n }\n },\n \"profile_fields\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile metadata\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add field\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])}\n },\n \"birthday\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday\"])},\n \"show_birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show my birthday\"])}\n },\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't crop the attachment in thumbnails\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name & bio\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Profiles\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Types of notifications to show\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Migrates\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reactions\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ends of polls you voted in\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Strip rich text formatting from all posts\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No blocks\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No mutes\"])},\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show list of my favorites (people still get notified)\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who I'm following\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who's following me\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follow count\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follower count\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Admin\\\" badge in my profile\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Moderator\\\" badge in my profile\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide sensitive/NSFW media\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth tokens\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Refresh token\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valid until\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panels\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause when tab is not focused\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Presets\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile background\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile banner\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set up interface edge rounding (in pixels)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies in timeline\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all replies\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me or users I'm following\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to my follows\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to self only\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically hide New Post button (mobile)\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error saving settings\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings saved\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to block\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to mute\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy scope when replying (DMs are always copied)\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Minimize post scope selection options\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new avatar\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile background\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile banner\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset avatar\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile background\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile banner\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the avatar?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the banner?\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the background?\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show subject field\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy subject when replying\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like email: \\\"re: subject\\\"\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like mastodon: copy as is\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not copy\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation display style\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree-style\"])},\n \"conversation_display_tree_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree view\"])},\n \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't stick column headers to top of the screen\"])},\n \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show side column's scrollbars\"])},\n \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When there's enough space, show third column containing\"])},\n \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show third column at all\"])},\n \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications column\"])},\n \"third_column_mode_postform\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Main post form and navigation\"])},\n \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Columns\"])},\n \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Column sizes\"])},\n \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sidebar\"])},\n \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow more flexible navigation in tree view\"])},\n \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display ancestors of the current status in faint text\"])},\n \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linear-style\"])},\n \"conversation_display_linear_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linear view\"])},\n \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show the \\\"other replies\\\" button\"])},\n \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Below statuses\"])},\n \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inside statuses\"])},\n \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum number of levels in thread to display by default\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post status content type\"])},\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark posts as sensitive by default\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause animated images until you hover on them\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically show new posts when scrolled to the top\"])},\n \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show new posts automatically\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Users\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receive posts and notifications real-time\"])},\n \"use_websockets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use websockets (Realtime updates)\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use hex color codes (#rrggbb) to customize your color theme.\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can also override certain component's colors and opacity by toggling the checkbox, use \\\"Clear all\\\" button to clear all overrides.\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case.\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips/alerts\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search domains to mute\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload a photo\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"yes\"])}\n },\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Optimize timeline rendering\"])},\n \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display \", \"@\", \" symbol as an icon instead of text\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display mention links\"])},\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as short names (e.g. \", \"@\", \"foo)\"])},\n \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"as full names only for remote users (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as full names (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_use_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user card when clicking mention links\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar beside the link\"])},\n \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar next to mentions\"])},\n \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fade domains (e.g. \", \"@\", \"example.org in \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlight mention of you when you are mentioned\"])},\n \"user_popover_avatar_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popover avatar click action\"])},\n \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zoom the avatar\"])},\n \"user_popover_avatar_action_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close the popover\"])},\n \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open profile\"])},\n \"user_popover_avatar_overlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user popover over user avatar\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fun\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meme arrows\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show (You)s\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filters\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block notifications from users who you do not follow\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide the sender and contents of push notifications\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To stop receiving notifications from a specific user, use a mute.\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking a user stops all notifications as well as unsubscribes them.\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable web push notifications\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More settings\"])},\n \"style\": {\n \"switcher\": {\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep colors\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep shadows\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep opacity\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep roundness\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep fonts\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"Keep\\\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear all\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear opacity\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load theme\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep as is\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Old version\"])},\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New version\"])},\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE has been upgraded, theme could look a little bit different than you remember.\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies.\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in newer version of FE.\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in older version of FE.\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead.\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No theme snapshot was in the file so it could look different than originally envisioned.\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's theme engine upgraded after version update.\"])},\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's version rolled back.\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just to be safe, theme snapshot loaded. You can try loading theme data.\"])},\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"For whatever reason snapshot was missing, some stuff could look different than you remember.\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version.\"])}\n }\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Color\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opacity\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Contrast ratio is \", _interpolate(_named(\"ratio\")), \", it \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n \"level\": {\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AA guideline (minimal)\"])},\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AAA guideline (recommended)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"doesn't meet any accessibility guidelines\"])}\n },\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for large (18pt+) text\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for text\"])}\n }\n }\n },\n \"common_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common colors\"])},\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"See \\\"Advanced\\\" tab for more detailed control\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons, accents, badges\"])}\n },\n \"advanced_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Advanced\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alert background\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warning\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neutral\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts/User bios\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Badge background\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips, menus, popovers\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notification\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Borders\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Faded text\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Underlay\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wallpaper\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll graph\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlighted elements\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pressed\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected post\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected menu item\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disabled\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggled\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tabs\"])},\n \"chat\": {\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Incoming\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Outgoing\"])},\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Border\"])}\n }\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roundness\"])}\n },\n \"shadows\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadow and lighting\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Component\"])},\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Override\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Shadow #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blur\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Spread\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inset\"])},\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"For shadows you can also use the \", _interpolate(_list(0)), \" notation to use other color slot.\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Warning, this shadow always uses \", _interpolate(_list(0)), \" when browser supports it.\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" does not support \", _interpolate(_list(1)), \" parameter and \", _interpolate(_list(2)), \" keyword.\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadows with spread > 0 will appear as if it was set to zero\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Inset shadows will be using \", _interpolate(_list(0))])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in profile view)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in post display)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popups and tooltips\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (hover)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed+hover)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input field\"])}\n }\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fonts\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select font to use for elements of UI. For \\\"custom\\\" you have to enter exact font name as it appears in system.\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post text\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monospaced text in a post (rich text)\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Font name\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Size (in px)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weight (boldness)\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Example error\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"A bunch of more \", _interpolate(_list(0)), \" and \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"content\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"helpful manual\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Read our \", _interpolate(_list(0)), \" to learn nothing useful!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is fine\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I have skimmed over terms and conditions\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a nice lil' link\"])}\n }\n },\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Version\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backend version\"])},\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Frontend version\"])}\n }\n },\n \"time\": {\n \"unit\": {\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" day\"]), _normalize([_interpolate(_list(0)), \" days\"])])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" hour\"]), _normalize([_interpolate(_list(0)), \" hours\"])])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" minute\"]), _normalize([_interpolate(_list(0)), \" minutes\"])])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" month\"]), _normalize([_interpolate(_list(0)), \" months\"])])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" second\"]), _normalize([_interpolate(_list(0)), \" seconds\"])])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" week\"]), _normalize([_interpolate(_list(0)), \" weeks\"])])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" year\"]), _normalize([_interpolate(_list(0)), \" years\"])])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])}\n },\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"in \", _interpolate(_list(0))])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" ago\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"just now\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"now\"])}\n },\n \"timeline\": {\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching timeline: \", _interpolate(_list(0))])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older statuses\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post is marked as followers-only or direct and cannot be repeated\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show new\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reload\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Up-to-date\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more statuses\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No statuses\"])},\n \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Realtime connection established\"])},\n \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Realtime connection lost: CloseEvent code \", _interpolate(_list(0))])},\n \"quick_view_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quick view settings\"])},\n \"quick_filter_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quick filter settings\"])}\n },\n \"status\": {\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n \"repeat_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to repeat this status?\"])},\n \"repeat_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat confirmation\"])},\n \"repeat_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat\"])},\n \"repeat_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not repeat\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete status\"])},\n \"edit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit status\"])},\n \"edited_at\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(last edited \", _interpolate(_named(\"time\")), \")\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin on profile\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin from profile\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pinned\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unbookmark\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this status?\"])},\n \"delete_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete confirmation\"])},\n \"delete_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n \"delete_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply to\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies:\"])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" other):\"]), _normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" others):\"])])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute conversation\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute conversation\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status unavailable\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy link to status\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"External source\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thread muted\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", has words:\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full subject\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide full subject\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show content\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide content\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post was deleted\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(You)\"])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \" more\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Post has \", _interpolate(_named(\"number\")), \" attachment(s)\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse attachments\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all attachments\"])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show in media modal\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview description (open attachment for full description)\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachment\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove attachment\"])},\n \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stop Flash player\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment left\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment right\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open gallery\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide this thread\"])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show this thread\"])},\n \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" status in total, max depth \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total, max depth \", _interpolate(_named(\"depth\")), \")\"])])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" status in total)\"]), _normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total)\"])])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other reply under this status\"]), _normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other replies under this status\"])])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other status)\"]), _normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other statuses)\"])])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies to this status\"])},\n \"status_history\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status history\"])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n \"approve_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve confirmation\"])},\n \"approve_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n \"approve_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not approve\"])},\n \"approve_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you want to approve \", _interpolate(_named(\"user\")), \"'s follow request?\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocked!\"])},\n \"block_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block confirmation\"])},\n \"block_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to block \", _interpolate(_named(\"user\")), \"?\"])},\n \"block_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n \"block_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not block\"])},\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivated\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n \"deny_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny confirmation\"])},\n \"deny_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n \"deny_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not deny\"])},\n \"deny_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you want to deny \", _interpolate(_named(\"user\")), \"'s follow request?\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel request\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request sent!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Requesting…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n \"unfollow_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow confirmation\"])},\n \"unfollow_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to unfollow \", _interpolate(_named(\"user\")), \"?\"])},\n \"unfollow_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n \"unfollow_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not unfollow\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows you!\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's you!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Message\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muted\"])},\n \"mute_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute confirmation\"])},\n \"mute_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to mute \", _interpolate(_named(\"user\")), \"?\"])},\n \"mute_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"mute_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not mute\"])},\n \"mute_duration_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute this user for (0 for indefinite time):\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per day\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote follow\"])},\n \"remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove follower\"])},\n \"remove_follower_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove follower confirmation\"])},\n \"remove_follower_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n \"remove_follower_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep\"])},\n \"remove_follower_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to remove \", _interpolate(_named(\"user\")), \" from your followers?\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Report\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statuses\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subscribe\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unsubscribe\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblock\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblocking…\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide repeats\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show repeats\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bot\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Born \", _interpolate(_named(\"birthday\"))])},\n \"admin_menu\": {\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderation\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Admin\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Admin\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Moderator\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Moderator\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivate account\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark all posts as NSFW\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove media from posts\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be unlisted\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be followers-only\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user from remote instances\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user at all\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow user posts from federating\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"delete_user_data_and_deactivate_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This will permanently delete the data from this account and deactivate it. Are you absolutely sure?\"])}\n },\n \"highlight\": {\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No highlight\"])},\n \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Solid bg\"])},\n \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Striped bg\"])},\n \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Side stripe\"])}\n },\n \"note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note\"])},\n \"note_blank\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(None)\"])},\n \"edit_note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit note\"])},\n \"edit_note_apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apply\"])},\n \"edit_note_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User timeline\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, this profile does not exist.\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, there was an error loading this profile.\"])}\n },\n \"user_reporting\": {\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Reporting \", _interpolate(_list(0))])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Additional comments\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The account is from another server. Send a copy of the report there as well?\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Forward to \", _interpolate(_list(0))])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occurred while processing your request.\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload media\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorite\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add Reaction\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept follow request\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject follow request\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n \"toggle_expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand or collapse notification to show post in full\"])},\n \"toggle_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand or collapse notification to reveal muted content\"])},\n \"autocomplete_available\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"number\")), \" result is available. Use up and down keys to navigate through them.\"]), _normalize([_interpolate(_named(\"number\")), \" results are available. Use up and down keys to navigate through them.\"])])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload failed.\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Upload failed: \", _interpolate(_list(0))])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"File too big [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again later\"])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"People\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hashtags\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" person talking\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" people talking\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No results\"])},\n \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more results\"])},\n \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more results\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your email address or username. We will send you a link to reset your password.\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your email or username\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email for a link to reset your password.\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Return to the home page\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You have reached the limit of attempts, try again later.\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset is disabled. Please contact your instance administrator.\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password to log in.\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password, but password reset is disabled. Please contact your instance administrator.\"])}\n },\n \"chats\": {\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You:\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Message \", _interpolate(_named(\"nickname\"))])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New Chat\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cannot post empty message\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this message?\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when loading the chat.\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when sending the message.\"])},\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You don't have any chats yet. Start a new chat!\"])}\n },\n \"lists\": {\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lists\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New List\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"List title\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search users\"])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Create\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete list\"])},\n \"following_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limit to Following\"])},\n \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Manage lists\"])},\n \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Manage list members\"])},\n \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for more users\"])},\n \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove from list\"])},\n \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add to list\"])},\n \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already in list\"])},\n \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Editing list \", _interpolate(_named(\"listTitle\"))])},\n \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Creating new list\"])},\n \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save Title\"])},\n \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Really delete list?\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error manipulating lists: \", _interpolate(_list(0))])}\n },\n \"file_type\": {\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Audio\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Video\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Today\"])}\n },\n \"update\": {\n \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please bear with us\"])},\n \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We haven't had a release in a while, so things might look and feel different than what you're used to.\"])},\n \"update_bugs\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Please report any issues and bugs on \", _interpolate(_named(\"pleromaGitlab\")), \", as we have changed a lot, and although we test thoroughly and use development versions ourselves, we may have missed some things. We welcome your feedback and suggestions on issues you might encounter, or how to improve Pleroma and Pleroma-FE.\"])},\n \"update_bugs_gitlab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma GitLab\"])},\n \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"For more details on what's changed, see \", _interpolate(_named(\"theFullChangelog\")), \".\"])},\n \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"the full changelog\"])},\n \"art_by\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Art by \", _interpolate(_named(\"linkToArtist\"))])}\n },\n \"unicode_domain_indicator\": {\n \"tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This domain contains non-ascii characters.\"])}\n }\n}","var map = {\n\t\"./af.json\": [\n\t\t44919,\n\t\t6355\n\t],\n\t\"./am.json\": [\n\t\t53139,\n\t\t5119\n\t],\n\t\"./ar.json\": [\n\t\t44557,\n\t\t9873\n\t],\n\t\"./ar_SA.json\": [\n\t\t23450,\n\t\t7360\n\t],\n\t\"./as.json\": [\n\t\t44359,\n\t\t3377\n\t],\n\t\"./ast.json\": [\n\t\t13764,\n\t\t7569\n\t],\n\t\"./az.json\": [\n\t\t86459,\n\t\t2342\n\t],\n\t\"./be.json\": [\n\t\t50866,\n\t\t7304\n\t],\n\t\"./bg.json\": [\n\t\t26219,\n\t\t3974\n\t],\n\t\"./bn.json\": [\n\t\t69178,\n\t\t9064\n\t],\n\t\"./br.json\": [\n\t\t67871,\n\t\t6148\n\t],\n\t\"./bs.json\": [\n\t\t75340,\n\t\t8134\n\t],\n\t\"./ca.json\": [\n\t\t86914,\n\t\t4691\n\t],\n\t\"./ccp.json\": [\n\t\t73872,\n\t\t1162\n\t],\n\t\"./ceb.json\": [\n\t\t64478,\n\t\t9790\n\t],\n\t\"./chr.json\": [\n\t\t61017,\n\t\t6869\n\t],\n\t\"./ckb.json\": [\n\t\t56412,\n\t\t2656\n\t],\n\t\"./cs.json\": [\n\t\t8888,\n\t\t4710\n\t],\n\t\"./cy.json\": [\n\t\t25392,\n\t\t6272\n\t],\n\t\"./da.json\": [\n\t\t35042,\n\t\t1596\n\t],\n\t\"./de.json\": [\n\t\t35169,\n\t\t6226\n\t],\n\t\"./de_CH.json\": [\n\t\t28246,\n\t\t7164\n\t],\n\t\"./doi.json\": [\n\t\t59784,\n\t\t4209\n\t],\n\t\"./dsb.json\": [\n\t\t60634,\n\t\t1790\n\t],\n\t\"./el.json\": [\n\t\t98338,\n\t\t7879\n\t],\n\t\"./en.json\": [\n\t\t74990,\n\t\t5728\n\t],\n\t\"./en_001.json\": [\n\t\t62736,\n\t\t577\n\t],\n\t\"./en_AU.json\": [\n\t\t2597,\n\t\t9360\n\t],\n\t\"./en_CA.json\": [\n\t\t1516,\n\t\t4879\n\t],\n\t\"./en_GB.json\": [\n\t\t84830,\n\t\t50\n\t],\n\t\"./en_IN.json\": [\n\t\t71809,\n\t\t8988\n\t],\n\t\"./es.json\": [\n\t\t61148,\n\t\t6831\n\t],\n\t\"./es_419.json\": [\n\t\t25696,\n\t\t8873\n\t],\n\t\"./es_MX.json\": [\n\t\t11915,\n\t\t2699\n\t],\n\t\"./es_US.json\": [\n\t\t87826,\n\t\t3313\n\t],\n\t\"./et.json\": [\n\t\t66641,\n\t\t3276\n\t],\n\t\"./eu.json\": [\n\t\t6541,\n\t\t2992\n\t],\n\t\"./fa.json\": [\n\t\t43305,\n\t\t5521\n\t],\n\t\"./fi.json\": [\n\t\t40752,\n\t\t420\n\t],\n\t\"./fil.json\": [\n\t\t26843,\n\t\t1236\n\t],\n\t\"./fo.json\": [\n\t\t43032,\n\t\t8995\n\t],\n\t\"./fr.json\": [\n\t\t80898,\n\t\t2223\n\t],\n\t\"./fr_CA.json\": [\n\t\t54515,\n\t\t1821\n\t],\n\t\"./ga.json\": [\n\t\t66572,\n\t\t4571\n\t],\n\t\"./gd.json\": [\n\t\t9185,\n\t\t6116\n\t],\n\t\"./gl.json\": [\n\t\t23840,\n\t\t6126\n\t],\n\t\"./gu.json\": [\n\t\t85811,\n\t\t7261\n\t],\n\t\"./ha.json\": [\n\t\t91566,\n\t\t227\n\t],\n\t\"./ha_NE.json\": [\n\t\t3400,\n\t\t5304\n\t],\n\t\"./he.json\": [\n\t\t26260,\n\t\t5548\n\t],\n\t\"./hi.json\": [\n\t\t18136,\n\t\t5968\n\t],\n\t\"./hi_Latn.json\": [\n\t\t95638,\n\t\t3056\n\t],\n\t\"./hr.json\": [\n\t\t77435,\n\t\t2861\n\t],\n\t\"./hsb.json\": [\n\t\t15758,\n\t\t8015\n\t],\n\t\"./hu.json\": [\n\t\t2727,\n\t\t4902\n\t],\n\t\"./hy.json\": [\n\t\t8397,\n\t\t6344\n\t],\n\t\"./ia.json\": [\n\t\t49796,\n\t\t6936\n\t],\n\t\"./id.json\": [\n\t\t56635,\n\t\t9465\n\t],\n\t\"./ig.json\": [\n\t\t26406,\n\t\t9895\n\t],\n\t\"./is.json\": [\n\t\t51391,\n\t\t7300\n\t],\n\t\"./it.json\": [\n\t\t54879,\n\t\t8970\n\t],\n\t\"./ja.json\": [\n\t\t2971,\n\t\t1290\n\t],\n\t\"./jv.json\": [\n\t\t18644,\n\t\t2479\n\t],\n\t\"./ka.json\": [\n\t\t71255,\n\t\t6068\n\t],\n\t\"./kab.json\": [\n\t\t92892,\n\t\t9780\n\t],\n\t\"./kk.json\": [\n\t\t46419,\n\t\t2873\n\t],\n\t\"./kl.json\": [\n\t\t2227,\n\t\t2397\n\t],\n\t\"./km.json\": [\n\t\t65729,\n\t\t1404\n\t],\n\t\"./kn.json\": [\n\t\t65611,\n\t\t278\n\t],\n\t\"./ko.json\": [\n\t\t67080,\n\t\t2966\n\t],\n\t\"./kok.json\": [\n\t\t47209,\n\t\t2599\n\t],\n\t\"./ku.json\": [\n\t\t18738,\n\t\t2883\n\t],\n\t\"./ky.json\": [\n\t\t89690,\n\t\t4785\n\t],\n\t\"./lb.json\": [\n\t\t3929,\n\t\t4770\n\t],\n\t\"./lo.json\": [\n\t\t19778,\n\t\t7464\n\t],\n\t\"./lt.json\": [\n\t\t41683,\n\t\t7169\n\t],\n\t\"./lv.json\": [\n\t\t54873,\n\t\t8898\n\t],\n\t\"./mai.json\": [\n\t\t11781,\n\t\t1613\n\t],\n\t\"./mi.json\": [\n\t\t11569,\n\t\t6701\n\t],\n\t\"./mk.json\": [\n\t\t67589,\n\t\t9921\n\t],\n\t\"./ml.json\": [\n\t\t24415,\n\t\t2685\n\t],\n\t\"./mn.json\": [\n\t\t50512,\n\t\t4718\n\t],\n\t\"./mni.json\": [\n\t\t81597,\n\t\t5401\n\t],\n\t\"./mr.json\": [\n\t\t97747,\n\t\t1911\n\t],\n\t\"./ms.json\": [\n\t\t81588,\n\t\t9924\n\t],\n\t\"./mt.json\": [\n\t\t25081,\n\t\t9399\n\t],\n\t\"./my.json\": [\n\t\t8608,\n\t\t6790\n\t],\n\t\"./ne.json\": [\n\t\t8572,\n\t\t9377\n\t],\n\t\"./nl.json\": [\n\t\t52355,\n\t\t6773\n\t],\n\t\"./nn.json\": [\n\t\t52874,\n\t\t9414\n\t],\n\t\"./no.json\": [\n\t\t48005,\n\t\t9979\n\t],\n\t\"./or.json\": [\n\t\t26728,\n\t\t1012\n\t],\n\t\"./pa.json\": [\n\t\t15042,\n\t\t6946\n\t],\n\t\"./pa_Arab.json\": [\n\t\t43578,\n\t\t9994\n\t],\n\t\"./pcm.json\": [\n\t\t91163,\n\t\t5104\n\t],\n\t\"./pl.json\": [\n\t\t61335,\n\t\t1095\n\t],\n\t\"./ps.json\": [\n\t\t51828,\n\t\t678\n\t],\n\t\"./pt.json\": [\n\t\t38543,\n\t\t5041\n\t],\n\t\"./pt_PT.json\": [\n\t\t8063,\n\t\t1546\n\t],\n\t\"./qu.json\": [\n\t\t15821,\n\t\t8031\n\t],\n\t\"./rm.json\": [\n\t\t5014,\n\t\t5887\n\t],\n\t\"./ro.json\": [\n\t\t34064,\n\t\t9864\n\t],\n\t\"./ru.json\": [\n\t\t95222,\n\t\t8395\n\t],\n\t\"./rw.json\": [\n\t\t12710,\n\t\t346\n\t],\n\t\"./sa.json\": [\n\t\t69343,\n\t\t2243\n\t],\n\t\"./sat.json\": [\n\t\t51243,\n\t\t7855\n\t],\n\t\"./sc.json\": [\n\t\t1319,\n\t\t2874\n\t],\n\t\"./sd.json\": [\n\t\t67728,\n\t\t6826\n\t],\n\t\"./si.json\": [\n\t\t5044,\n\t\t4354\n\t],\n\t\"./sk.json\": [\n\t\t45626,\n\t\t2350\n\t],\n\t\"./sl.json\": [\n\t\t76091,\n\t\t1553\n\t],\n\t\"./so.json\": [\n\t\t93761,\n\t\t625\n\t],\n\t\"./sq.json\": [\n\t\t1230,\n\t\t4368\n\t],\n\t\"./sr.json\": [\n\t\t60445,\n\t\t3887\n\t],\n\t\"./sr_Cyrl_BA.json\": [\n\t\t38940,\n\t\t6060\n\t],\n\t\"./sr_Latn.json\": [\n\t\t21650,\n\t\t8681\n\t],\n\t\"./sr_Latn_BA.json\": [\n\t\t78328,\n\t\t5115\n\t],\n\t\"./su.json\": [\n\t\t54395,\n\t\t1959\n\t],\n\t\"./sv.json\": [\n\t\t3418,\n\t\t3241\n\t],\n\t\"./sw.json\": [\n\t\t11958,\n\t\t7585\n\t],\n\t\"./sw_KE.json\": [\n\t\t35001,\n\t\t3994\n\t],\n\t\"./ta.json\": [\n\t\t92930,\n\t\t7897\n\t],\n\t\"./te.json\": [\n\t\t8748,\n\t\t4786\n\t],\n\t\"./tg.json\": [\n\t\t20999,\n\t\t313\n\t],\n\t\"./th.json\": [\n\t\t23900,\n\t\t3951\n\t],\n\t\"./ti.json\": [\n\t\t368,\n\t\t3568\n\t],\n\t\"./tk.json\": [\n\t\t88770,\n\t\t1780\n\t],\n\t\"./to.json\": [\n\t\t95781,\n\t\t1584\n\t],\n\t\"./tr.json\": [\n\t\t92619,\n\t\t9978\n\t],\n\t\"./tt.json\": [\n\t\t87782,\n\t\t2569\n\t],\n\t\"./ug.json\": [\n\t\t19005,\n\t\t9757\n\t],\n\t\"./uk.json\": [\n\t\t82057,\n\t\t9871\n\t],\n\t\"./ur.json\": [\n\t\t13889,\n\t\t6797\n\t],\n\t\"./uz.json\": [\n\t\t45108,\n\t\t1056\n\t],\n\t\"./vi.json\": [\n\t\t97099,\n\t\t5224\n\t],\n\t\"./wo.json\": [\n\t\t9923,\n\t\t7303\n\t],\n\t\"./xh.json\": [\n\t\t29064,\n\t\t786\n\t],\n\t\"./yo.json\": [\n\t\t11971,\n\t\t8732\n\t],\n\t\"./yo_BJ.json\": [\n\t\t64533,\n\t\t9926\n\t],\n\t\"./yue.json\": [\n\t\t40648,\n\t\t1452\n\t],\n\t\"./yue_Hans.json\": [\n\t\t24800,\n\t\t4424\n\t],\n\t\"./zh.json\": [\n\t\t34626,\n\t\t457\n\t],\n\t\"./zh_Hant.json\": [\n\t\t82560,\n\t\t2767\n\t],\n\t\"./zh_Hant_HK.json\": [\n\t\t47677,\n\t\t1044\n\t],\n\t\"./zu.json\": [\n\t\t73784,\n\t\t9319\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 1395;\nmodule.exports = webpackAsyncContext;","/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n * (getters.standardEmojiList + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nexport default data => {\n const emojiCurry = suggestEmoji(data.emoji)\n const usersCurry = data.store && suggestUsers(data.store)\n return (input, nameKeywordLocalizer) => {\n const firstChar = input[0]\n if (firstChar === ':' && data.emoji) {\n return emojiCurry(input, nameKeywordLocalizer)\n }\n if (firstChar === '@' && usersCurry) {\n return usersCurry(input)\n }\n return []\n }\n}\n\nexport const suggestEmoji = emojis => (input, nameKeywordLocalizer) => {\n const noPrefix = input.toLowerCase().substr(1)\n return emojis\n .map(emoji => ({ ...emoji, ...nameKeywordLocalizer(emoji) }))\n .filter((emoji) => (emoji.names.concat(emoji.keywords)).filter(kw => kw.toLowerCase().match(noPrefix)).length)\n .map(k => {\n let score = 0\n\n // An exact match always wins\n score += Math.max(...k.names.map(name => name.toLowerCase() === noPrefix ? 200 : 0), 0)\n\n // Prioritize custom emoji a lot\n score += k.imageUrl ? 100 : 0\n\n // Prioritize prefix matches somewhat\n score += Math.max(...k.names.map(kw => kw.toLowerCase().startsWith(noPrefix) ? 10 : 0), 0)\n\n // Sort by length\n score -= k.displayText.length\n\n k.score = score\n return k\n })\n .sort((a, b) => {\n // Break ties alphabetically\n const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n return b.score - a.score + alphabetically\n })\n}\n\nexport const suggestUsers = ({ dispatch, state }) => {\n // Keep some persistent values in closure, most importantly for the\n // custom debounce to work. Lodash debounce does not return a promise.\n let suggestions = []\n let previousQuery = ''\n let timeout = null\n let cancelUserSearch = null\n\n const userSearch = (query) => dispatch('searchUsers', { query })\n const debounceUserSearch = (query) => {\n cancelUserSearch && cancelUserSearch()\n return new Promise((resolve, reject) => {\n timeout = setTimeout(() => {\n userSearch(query).then(resolve).catch(reject)\n }, 300)\n cancelUserSearch = () => {\n clearTimeout(timeout)\n resolve([])\n }\n })\n }\n\n return async input => {\n const noPrefix = input.toLowerCase().substr(1)\n if (previousQuery === noPrefix) return suggestions\n\n suggestions = []\n previousQuery = noPrefix\n // Fetch more and wait, don't fetch if there's the 2nd @ because\n // the backend user search can't deal with it.\n // Reference semantics make it so that we get the updated data after\n // the await.\n if (!noPrefix.includes('@')) {\n await debounceUserSearch(noPrefix)\n }\n\n const newSuggestions = state.users.users.filter(\n user =>\n user.screen_name.toLowerCase().startsWith(noPrefix) ||\n user.name.toLowerCase().startsWith(noPrefix)\n ).slice(0, 20).sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // Matches on screen name (i.e. user@instance) makes a priority\n aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n // Matches on name takes second priority\n aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n const diff = (bScore - aScore) * 10\n\n // Then sort alphabetically\n const nameAlphabetically = a.name > b.name ? 1 : -1\n const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n return diff + nameAlphabetically + screenNameAlphabetically\n /* eslint-disable camelcase */\n }).map((user) => ({\n user,\n displayText: user.screen_name_ui,\n detailText: user.name,\n imageUrl: user.profile_image_url_original,\n replacement: '@' + user.screen_name + ' '\n }))\n /* eslint-enable camelcase */\n\n suggestions = newSuggestions || []\n return suggestions\n }\n}\n","/**\n * Extract tag name from tag opener/closer.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {String} - tagname, i.e. \"div\"\n */\nexport const getTagName = (tag) => {\n const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?.*?\\/?>)/gi.exec(tag)\n return result && (result[1] || result[2])\n}\n\n/**\n * Extract attributes from tag opener.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {Object} - map of attributes key = attribute name, value = attribute value\n * attributes without values represented as boolean true\n */\nexport const getAttrs = (tag, filter) => {\n const innertag = tag\n .substring(1, tag.length - 1)\n .replace(new RegExp('^' + getTagName(tag)), '')\n .replace(/\\/?$/, '')\n .trim()\n const attrs = Array.from(innertag.matchAll(/([a-z0-9-]+)(?:=(\"[^\"]+?\"|'[^']+?'))?/gi))\n .map(([trash, key, value]) => [key, value])\n .map(([k, v]) => {\n if (!v) return [k, true]\n return [k, v.substring(1, v.length - 1)]\n })\n const defaultFilter = ([k, v]) => {\n const attrKey = k.toLowerCase()\n if (attrKey === 'style') return false\n if (attrKey === 'class') {\n return v === 'greentext' || v === 'cyantext'\n }\n return true\n }\n return Object.fromEntries(attrs.filter(filter || defaultFilter))\n}\n\n/**\n * Finds shortcodes in text\n *\n * @param {String} text - original text to find emojis in\n * @param {{ url: String, shortcode: Sring }[]} emoji - list of shortcodes to find\n * @param {Function} processor - function to call on each encountered emoji,\n * function is passed single object containing matching emoji ({ url, shortcode })\n * return value will be inserted into resulting array instead of :shortcode:\n * @return {Array} resulting array with non-emoji parts of text and whatever {processor}\n * returned for emoji\n */\nexport const processTextForEmoji = (text, emojis, processor) => {\n const buffer = []\n let textBuffer = ''\n for (let i = 0; i < text.length; i++) {\n const char = text[i]\n if (char === ':') {\n const next = text.slice(i + 1)\n let found = false\n for (const emoji of emojis) {\n if (next.slice(0, emoji.shortcode.length + 1) === (emoji.shortcode + ':')) {\n found = emoji\n break\n }\n }\n if (found) {\n buffer.push(textBuffer)\n textBuffer = ''\n buffer.push(processor(found))\n i += found.shortcode.length + 1\n } else {\n textBuffer += char\n }\n } else {\n textBuffer += char\n }\n }\n if (textBuffer) buffer.push(textBuffer)\n return buffer\n}\n","import { getTagName } from './utility.service.js'\n\n/**\n * This is a tiny purpose-built HTML parser/processor. This basically detects\n * any type of visual newline and converts entire HTML into a array structure.\n *\n * Text nodes are represented as object with single property - text - containing\n * the visual line. Intended usage is to process the array with .map() in which\n * map function returns a string and resulting array can be converted back to html\n * with a .join('').\n *\n * Generally this isn't very useful except for when you really need to either\n * modify visual lines (greentext i.e. simple quoting) or do something with\n * first/last line.\n *\n * known issue: doesn't handle CDATA so nested CDATA might not work well\n *\n * @param {Object} input - input data\n * @return {(string|{ text: string })[]} processed html in form of a list.\n */\nexport const convertHtmlToLines = (html = '') => {\n // Elements that are implicitly self-closing\n // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n const emptyElements = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n ])\n // Block-level element (they make a visual line)\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n const blockElements = new Set([\n 'address', 'article', 'aside', 'blockquote', 'details', 'dialog', 'dd',\n 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form',\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main',\n 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'\n ])\n // br is very weird in a way that it's technically not block-level, it's\n // essentially converted to a \\n (or \\r\\n). There's also wbr but it doesn't\n // guarantee linebreak, only suggest it.\n const linebreakElements = new Set(['br'])\n\n const visualLineElements = new Set([\n ...blockElements.values(),\n ...linebreakElements.values()\n ])\n\n // All block-level elements that aren't empty elements, i.e. not <hr>\n const nonEmptyElements = new Set(visualLineElements)\n // Difference\n for (const elem of emptyElements) {\n nonEmptyElements.delete(elem)\n }\n\n // All elements that we are recognizing\n const allElements = new Set([\n ...nonEmptyElements.values(),\n ...emptyElements.values()\n ])\n\n const buffer = [] // Current output buffer\n const level = [] // How deep we are in tags and which tags were there\n let textBuffer = '' // Current line content\n let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n const flush = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n if (textBuffer.trim().length > 0) {\n buffer.push({ level: [...level], text: textBuffer })\n } else {\n buffer.push(textBuffer)\n }\n textBuffer = ''\n }\n\n const handleBr = (tag) => { // handles single newlines/linebreaks/selfclosing\n flush()\n buffer.push(tag)\n }\n\n const handleOpen = (tag) => { // handles opening tags\n flush()\n buffer.push(tag)\n level.unshift(getTagName(tag))\n }\n\n const handleClose = (tag) => { // handles closing tags\n if (level[0] === getTagName(tag)) {\n flush()\n buffer.push(tag)\n level.shift()\n } else { // Broken case\n textBuffer += tag\n }\n }\n\n for (let i = 0; i < html.length; i++) {\n const char = html[i]\n if (char === '<' && tagBuffer === null) {\n tagBuffer = char\n } else if (char !== '>' && tagBuffer !== null) {\n tagBuffer += char\n } else if (char === '>' && tagBuffer !== null) {\n tagBuffer += char\n const tagFull = tagBuffer\n tagBuffer = null\n const tagName = getTagName(tagFull)\n if (allElements.has(tagName)) {\n if (linebreakElements.has(tagName)) {\n handleBr(tagFull)\n } else if (nonEmptyElements.has(tagName)) {\n if (tagFull[1] === '/') {\n handleClose(tagFull)\n } else if (tagFull[tagFull.length - 2] === '/') {\n // self-closing\n handleBr(tagFull)\n } else {\n handleOpen(tagFull)\n }\n } else {\n textBuffer += tagFull\n }\n } else {\n textBuffer += tagFull\n }\n } else if (char === '\\n') {\n handleBr(char)\n } else {\n textBuffer += char\n }\n }\n if (tagBuffer) {\n textBuffer += tagBuffer\n }\n\n flush()\n\n return buffer\n}\n","<template>\n <span\n class=\"HashtagLink\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <a\n :href=\"url\"\n class=\"original\"\n target=\"_blank\"\n @click.prevent=\"onClick\"\n v-html=\"content\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </span>\n</template>\n\n<script src=\"./hashtag_link.js\" />\n\n<style lang=\"scss\" src=\"./hashtag_link.scss\" />\n","import { extractTagFromUrl } from 'src/services/matcher/matcher.service.js'\n\nconst HashtagLink = {\n name: 'HashtagLink',\n props: {\n url: {\n required: true,\n type: String\n },\n content: {\n required: true,\n type: String\n },\n tag: {\n required: false,\n type: String,\n default: ''\n }\n },\n methods: {\n onClick () {\n const tag = this.tag || extractTagFromUrl(this.url)\n if (tag) {\n const link = this.generateTagLink(tag)\n this.$router.push(link)\n } else {\n window.open(this.url, '_blank')\n }\n },\n generateTagLink (tag) {\n return `/tag/${tag}`\n }\n }\n}\n\nexport default HashtagLink\n","export const mentionMatchesUrl = (attention, url) => {\n if (url === attention.statusnet_profile_url) {\n return true\n }\n const [namepart, instancepart] = attention.screen_name.split('@')\n const matchstring = new RegExp('://' + instancepart + '/.*' + namepart + '$', 'g')\n\n return !!url.match(matchstring)\n}\n\n/**\n * Extract tag name from pleroma or mastodon url.\n * i.e https://bikeshed.party/tag/photo or https://quey.org/tags/sky\n * @param {string} url\n */\nexport const extractTagFromUrl = (url) => {\n const regex = /tag[s]*\\/(\\w+)$/g\n const result = regex.exec(url)\n if (!result) {\n return false\n }\n return result[1]\n}\n","import { render } from \"./hashtag_link.vue?vue&type=template&id=76a14451\"\nimport script from \"./hashtag_link.js?vue&type=script&lang=js\"\nexport * from \"./hashtag_link.js?vue&type=script&lang=js\"\n\nimport \"./hashtag_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unescape, flattenDeep } from 'lodash'\nimport { getTagName, processTextForEmoji, getAttrs } from 'src/services/html_converter/utility.service.js'\nimport { convertHtmlToTree } from 'src/services/html_converter/html_tree_converter.service.js'\nimport { convertHtmlToLines } from 'src/services/html_converter/html_line_converter.service.js'\nimport StillImage from 'src/components/still-image/still-image.vue'\nimport MentionsLine, { MENTIONS_LIMIT } from 'src/components/mentions_line/mentions_line.vue'\nimport HashtagLink from 'src/components/hashtag_link/hashtag_link.vue'\n\nimport './rich_content.scss'\n\n/**\n * RichContent, The Über-powered component for rendering Post HTML.\n *\n * This takes post HTML and does multiple things to it:\n * - Groups all mentions into <MentionsLine>, this affects all mentions regardles\n * of where they are (beginning/middle/end), even single mentions are converted\n * to a <MentionsLine> containing single <MentionLink>.\n * - Replaces emoji shortcodes with <StillImage>'d images.\n *\n * There are two problems with this component's architecture:\n * 1. Parsing HTML and rendering are inseparable. Attempts to separate the two\n * proven to be a massive overcomplication due to amount of things done here.\n * 2. We need to output both render and some extra data, which seems to be imp-\n * possible in vue. Current solution is to emit 'parseReady' event when parsing\n * is done within render() function.\n *\n * Apart from that one small hiccup with emit in render this _should_ be vue3-ready\n */\nexport default {\n name: 'RichContent',\n components: {\n MentionsLine,\n HashtagLink\n },\n props: {\n // Original html content\n html: {\n required: true,\n type: String\n },\n attentions: {\n required: false,\n default: () => []\n },\n // Emoji object, as in status.emojis, note the \"s\" at the end...\n emoji: {\n required: true,\n type: Array\n },\n // Whether to handle links or not (posts: yes, everything else: no)\n handleLinks: {\n required: false,\n type: Boolean,\n default: false\n },\n // Meme arrows\n greentext: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n // NEVER EVER TOUCH DATA INSIDE RENDER\n render () {\n // Pre-process HTML\n const { newHtml: html } = preProcessPerLine(this.html, this.greentext)\n let currentMentions = null // Current chain of mentions, we group all mentions together\n // This is used to recover spacing removed when parsing mentions\n let lastSpacing = ''\n\n const lastTags = [] // Tags that appear at the end of post body\n const writtenMentions = [] // All mentions that appear in post body\n const invisibleMentions = [] // All mentions that go beyond the limiter (see MentionsLine)\n // to collapse too many mentions in a row\n const writtenTags = [] // All tags that appear in post body\n // unique index for vue \"tag\" property\n let mentionIndex = 0\n let tagsIndex = 0\n\n const renderImage = (tag) => {\n return <StillImage\n {...getAttrs(tag)}\n class=\"img\"\n />\n }\n\n const renderHashtag = (attrs, children, encounteredTextReverse) => {\n const { index, ...linkData } = getLinkData(attrs, children, tagsIndex++)\n writtenTags.push(linkData)\n if (!encounteredTextReverse) {\n lastTags.push(linkData)\n }\n const { url, tag, content } = linkData\n return <HashtagLink url={url} tag={tag} content={content}/>\n }\n\n const renderMention = (attrs, children) => {\n const linkData = getLinkData(attrs, children, mentionIndex++)\n linkData.notifying = this.attentions.some(a => a.statusnet_profile_url === linkData.url)\n writtenMentions.push(linkData)\n if (currentMentions === null) {\n currentMentions = []\n }\n currentMentions.push(linkData)\n if (currentMentions.length > MENTIONS_LIMIT) {\n invisibleMentions.push(linkData)\n }\n if (currentMentions.length === 1) {\n return <MentionsLine mentions={ currentMentions } />\n } else {\n return ''\n }\n }\n\n // Processor to use with html_tree_converter\n const processItem = (item, index, array, what) => {\n // Handle text nodes - just add emoji\n if (typeof item === 'string') {\n const emptyText = item.trim() === ''\n if (item.includes('\\n')) {\n currentMentions = null\n }\n if (emptyText) {\n // don't include spaces when processing mentions - we'll include them\n // in MentionsLine\n lastSpacing = item\n // Don't remove last space in a container (fixes poast mentions)\n return (index !== array.length - 1) && (currentMentions !== null) ? item.trim() : item\n }\n\n currentMentions = null\n if (item.includes(':')) {\n item = ['', processTextForEmoji(\n item,\n this.emoji,\n ({ shortcode, url }) => {\n return <StillImage\n class=\"emoji img\"\n src={url}\n title={`:${shortcode}:`}\n alt={`:${shortcode}:`}\n />\n }\n )]\n }\n return item\n }\n\n // Handle tag nodes\n if (Array.isArray(item)) {\n const [opener, children, closer] = item\n const Tag = getTagName(opener)\n const fullAttrs = getAttrs(opener, () => true)\n const attrs = getAttrs(opener)\n const previouslyMentions = currentMentions !== null\n /* During grouping of mentions we trim all the empty text elements\n * This padding is added to recover last space removed in case\n * we have a tag right next to mentions\n */\n const mentionsLinePadding =\n // Padding is only needed if we just finished parsing mentions\n previouslyMentions &&\n // Don't add padding if content is string and has padding already\n !(children && typeof children[0] === 'string' && children[0].match(/^\\s/))\n ? lastSpacing\n : ''\n switch (Tag) {\n case 'br':\n currentMentions = null\n break\n case 'img': // replace images with StillImage\n return ['', [mentionsLinePadding, renderImage(opener)], '']\n case 'a': // replace mentions with MentionLink\n if (!this.handleLinks) break\n if (fullAttrs.class && fullAttrs.class.includes('mention')) {\n // Handling mentions here\n return renderMention(attrs, children)\n } else {\n currentMentions = null\n break\n }\n case 'span':\n if (this.handleLinks && fullAttrs.class && fullAttrs.class.includes('h-card')) {\n return ['', children.map(processItem), '']\n }\n }\n\n if (children !== undefined) {\n return [\n '',\n [\n mentionsLinePadding,\n [opener, children.map(processItem), closer]\n ],\n ''\n ]\n } else {\n return ['', [mentionsLinePadding, item], '']\n }\n }\n }\n\n // Processor for back direction (for finding \"last\" stuff, just easier this way)\n let encounteredTextReverse = false\n const processItemReverse = (item, index, array, what) => {\n // Handle text nodes - just add emoji\n if (typeof item === 'string') {\n const emptyText = item.trim() === ''\n if (emptyText) return item\n if (!encounteredTextReverse) encounteredTextReverse = true\n return unescape(item)\n } else if (Array.isArray(item)) {\n // Handle tag nodes\n const [opener, children] = item\n const Tag = opener === '' ? '' : getTagName(opener)\n switch (Tag) {\n case 'a': { // replace mentions with MentionLink\n if (!this.handleLinks) break\n const fullAttrs = getAttrs(opener, () => true)\n const attrs = getAttrs(opener, () => true)\n // should only be this\n if (\n (fullAttrs.class && fullAttrs.class.includes('hashtag')) || // Pleroma style\n (fullAttrs.rel === 'tag') // Mastodon style\n ) {\n return renderHashtag(attrs, children, encounteredTextReverse)\n } else {\n attrs.target = '_blank'\n const newChildren = [...children].reverse().map(processItemReverse).reverse()\n\n return <a {...attrs}>\n { newChildren }\n </a>\n }\n }\n case '':\n return [...children].reverse().map(processItemReverse).reverse()\n }\n\n // Render tag as is\n if (children !== undefined) {\n const newChildren = Array.isArray(children)\n ? [...children].reverse().map(processItemReverse).reverse()\n : children\n return <Tag {...getAttrs(opener)}>\n { newChildren }\n </Tag>\n } else {\n return <Tag/>\n }\n }\n return item\n }\n\n const pass1 = convertHtmlToTree(html).map(processItem)\n const pass2 = [...pass1].reverse().map(processItemReverse).reverse()\n // DO NOT USE SLOTS they cause a re-render feedback loop here.\n // slots updated -> rerender -> emit -> update up the tree -> rerender -> ...\n // at least until vue3?\n const result = <span class=\"RichContent\">\n { pass2 }\n </span>\n\n const event = {\n lastTags,\n writtenMentions,\n writtenTags,\n invisibleMentions\n }\n\n // DO NOT MOVE TO UPDATE. BAD IDEA.\n this.$emit('parseReady', event)\n\n return result\n }\n}\n\nconst getLinkData = (attrs, children, index) => {\n const stripTags = (item) => {\n if (typeof item === 'string') {\n return item\n } else {\n return item[1].map(stripTags).join('')\n }\n }\n const textContent = children.map(stripTags).join('')\n return {\n index,\n url: attrs.href,\n tag: attrs['data-tag'],\n content: flattenDeep(children).join(''),\n textContent\n }\n}\n\n/** Pre-processing HTML\n *\n * Currently this does one thing:\n * - add green/cyantexting\n *\n * @param {String} html - raw HTML to process\n * @param {Boolean} greentext - whether to enable greentexting or not\n */\nexport const preProcessPerLine = (html, greentext) => {\n const greentextHandle = new Set(['p', 'div'])\n\n const lines = convertHtmlToLines(html)\n const newHtml = lines.reverse().map((item, index, array) => {\n if (!item.text) return item\n const string = item.text\n\n // Greentext stuff\n if (\n // Only if greentext is engaged\n greentext &&\n // Only handle p's and divs. Don't want to affect blockquotes, code etc\n item.level.every(l => greentextHandle.has(l)) &&\n // Only if line begins with '>' or '<'\n (string.includes('&gt;') || string.includes('&lt;'))\n ) {\n const cleanedString = string.replace(/<[^>]+?>/gi, '') // remove all tags\n .replace(/@\\w+/gi, '') // remove mentions (even failed ones)\n .trim()\n if (cleanedString.startsWith('&gt;')) {\n return `<span class='greentext'>${string}</span>`\n } else if (cleanedString.startsWith('&lt;')) {\n return `<span class='cyantext'>${string}</span>`\n }\n }\n\n return string\n }).reverse().join('')\n\n return { newHtml }\n}\n","import { getTagName } from './utility.service.js'\nimport { unescape } from 'lodash'\n\n/**\n * This is a not-so-tiny purpose-built HTML parser/processor. This parses html\n * and converts it into a tree structure representing tag openers/closers and\n * children.\n *\n * Structure follows this pattern: [opener, [...children], closer] except root\n * node which is just [...children]. Text nodes can only be within children and\n * are represented as strings.\n *\n * Intended use is to convert HTML structure and then recursively iterate over it\n * most likely using a map. Very useful for dynamically rendering html replacing\n * tags with JSX elements in a render function.\n *\n * known issue: doesn't handle CDATA so CDATA might not work well\n * known issue: doesn't handle HTML comments\n *\n * @param {Object} input - input data\n * @return {string} processed html\n */\nexport const convertHtmlToTree = (html = '') => {\n // Elements that are implicitly self-closing\n // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n const emptyElements = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n ])\n // TODO For future - also parse HTML5 multi-source components?\n\n const buffer = [] // Current output buffer\n const levels = [['', buffer]] // How deep we are in tags and which tags were there\n let textBuffer = '' // Current line content\n let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n const getCurrentBuffer = () => {\n return levels[levels.length - 1][1]\n }\n\n const flushText = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n if (textBuffer === '') return\n getCurrentBuffer().push(textBuffer)\n textBuffer = ''\n }\n\n const handleSelfClosing = (tag) => {\n getCurrentBuffer().push([tag])\n }\n\n const handleOpen = (tag) => {\n const curBuf = getCurrentBuffer()\n const newLevel = [unescape(tag), []]\n levels.push(newLevel)\n curBuf.push(newLevel)\n }\n\n const handleClose = (tag) => {\n const currentTag = levels[levels.length - 1]\n if (getTagName(levels[levels.length - 1][0]) === getTagName(tag)) {\n currentTag.push(tag)\n levels.pop()\n } else {\n getCurrentBuffer().push(tag)\n }\n }\n\n for (let i = 0; i < html.length; i++) {\n const char = html[i]\n if (char === '<' && tagBuffer === null) {\n flushText()\n tagBuffer = char\n } else if (char !== '>' && tagBuffer !== null) {\n tagBuffer += char\n } else if (char === '>' && tagBuffer !== null) {\n tagBuffer += char\n const tagFull = tagBuffer\n tagBuffer = null\n const tagName = getTagName(tagFull)\n if (tagFull[1] === '/') {\n handleClose(tagFull)\n } else if (emptyElements.has(tagName) || tagFull[tagFull.length - 2] === '/') {\n // self-closing\n handleSelfClosing(tagFull)\n } else {\n handleOpen(tagFull)\n }\n } else {\n textBuffer += char\n }\n }\n if (tagBuffer) {\n textBuffer += tagBuffer\n }\n\n flushText()\n return buffer\n}\n","// eslint-disable-next-line no-unused\nimport { h, Fragment } from 'vue'\nimport { mapState } from 'vuex'\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\n\nimport './tab_switcher.scss'\n\nconst findFirstUsable = (slots) => slots.findIndex(_ => _.props)\n\nexport default {\n name: 'TabSwitcher',\n props: {\n renderOnlyFocused: {\n required: false,\n type: Boolean,\n default: false\n },\n onSwitch: {\n required: false,\n type: Function,\n default: undefined\n },\n activeTab: {\n required: false,\n type: String,\n default: undefined\n },\n scrollableTabs: {\n required: false,\n type: Boolean,\n default: false\n },\n sideTabBar: {\n required: false,\n type: Boolean,\n default: false\n },\n bodyScrollLock: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n active: findFirstUsable(this.slots())\n }\n },\n computed: {\n activeIndex () {\n // In case of controlled component\n if (this.activeTab) {\n return this.slots().findIndex(slot => slot && slot.props && this.activeTab === slot.props.key)\n } else {\n return this.active\n }\n },\n isActive () {\n return tabName => {\n const isWanted = slot => slot.props && slot.props['data-tab-name'] === tabName\n return this.$slots.default().findIndex(isWanted) === this.activeIndex\n }\n },\n settingsModalVisible () {\n return this.settingsModalState === 'visible'\n },\n ...mapState({\n settingsModalState: state => state.interface.settingsModalState\n })\n },\n beforeUpdate () {\n const currentSlot = this.slots()[this.active]\n if (!currentSlot.props) {\n this.active = findFirstUsable(this.slots())\n }\n },\n methods: {\n clickTab (index) {\n return (e) => {\n e.preventDefault()\n this.setTab(index)\n }\n },\n // DO NOT put it to computed, it doesn't work (caching?)\n slots () {\n if (this.$slots.default()[0].type === Fragment) {\n return this.$slots.default()[0].children\n }\n return this.$slots.default()\n },\n setTab (index) {\n if (typeof this.onSwitch === 'function') {\n this.onSwitch.call(null, this.slots()[index].key)\n }\n this.active = index\n if (this.scrollableTabs) {\n this.$refs.contents.scrollTop = 0\n }\n }\n },\n render () {\n const tabs = this.slots()\n .map((slot, index) => {\n const props = slot.props\n if (!props) return\n const classesTab = ['tab', 'button-default']\n const classesWrapper = ['tab-wrapper']\n if (this.activeIndex === index) {\n classesTab.push('active')\n classesWrapper.push('active')\n }\n if (props.image) {\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={props.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n <img src={props.image} title={props['image-tooltip']}/>\n {props.label ? '' : props.label}\n </button>\n </div>\n )\n }\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={props.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n {!props.icon ? '' : (<FAIcon class=\"tab-icon\" size=\"2x\" fixed-width icon={props.icon}/>)}\n <span class=\"text\">\n {props.label}\n </span>\n </button>\n </div>\n )\n })\n\n const contents = this.slots().map((slot, index) => {\n const props = slot.props\n if (!props) return\n const active = this.activeIndex === index\n const classes = [ active ? 'active' : 'hidden' ]\n if (props.fullHeight) {\n classes.push('full-height')\n }\n const renderSlot = (!this.renderOnlyFocused || active)\n ? slot\n : ''\n\n return (\n <div class={classes}>\n {\n this.sideTabBar\n ? <h1 class=\"mobile-label\">{props.label}</h1>\n : ''\n }\n {renderSlot}\n </div>\n )\n })\n\n return (\n <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n <div class=\"tabs\">\n {tabs}\n </div>\n <div\n ref=\"contents\"\n class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}\n v-body-scroll-lock={this.bodyScrollLock}\n >\n {contents}\n </div>\n </div>\n )\n }\n}\n","\nconst languages = [\n 'ar',\n 'ca',\n 'cs',\n 'de',\n 'eo',\n 'en',\n 'es',\n 'et',\n 'eu',\n 'fi',\n 'fr',\n 'ga',\n 'he',\n 'hu',\n 'it',\n 'ja',\n 'ja_easy',\n 'ko',\n 'nb',\n 'nl',\n 'oc',\n 'pl',\n 'pt',\n 'ro',\n 'ru',\n 'sk',\n 'te',\n 'uk',\n 'zh',\n 'zh_Hant'\n]\n\nconst specialJsonName = {\n ja: 'ja_pedantic'\n}\n\nconst langCodeToJsonName = (code) => specialJsonName[code] || code\n\nconst langCodeToCldrName = (code) => code\n\nconst ensureFinalFallback = codes => {\n const codeList = Array.isArray(codes) ? codes : [codes]\n return codeList.includes('en') ? codeList : codeList.concat(['en'])\n}\n\nmodule.exports = {\n languages,\n langCodeToJsonName,\n langCodeToCldrName,\n ensureFinalFallback\n}\n","// When contributing, please sort JSON before committing so it would be easier to see what's missing and what's being added compared to English and other languages. It's not obligatory, but just an advice.\n// To sort json use jq https://stedolan.github.io/jq and invoke it like `jq -S . xx.json > xx.sorted.json`, AFAIK, there's no inplace edit option like in sed\n// Also, when adding a new language to \"messages\" variable, please do it alphabetically by language code so that users can search or check their custom language easily.\n\n// For anyone contributing to old huge messages.js and in need to quickly convert it to JSON\n// sed command for converting currently formatted JS to JSON:\n// sed -i -e \"s/'//gm\" -e 's/\"/\\\\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\\{?)$/\\1\"\\2\": \"\\4\"/gm' -e 's/\\\"\\{\\\"/{/g' -e 's/,\"$/\",/g' file.json\n// There's only problem that apostrophe character ' gets replaced by \\\\ so you have to fix it manually, sorry.\n\nimport { isEqual } from 'lodash'\nimport { languages, langCodeToJsonName } from './languages.js'\n\nconst ULTIMATE_FALLBACK_LOCALE = 'en'\n\nconst hasLanguageFile = (code) => languages.includes(code)\n\nconst loadLanguageFile = (code) => {\n return import(\n /* webpackInclude: /\\.json$/ */\n /* webpackChunkName: \"i18n/[request]\" */\n `./${langCodeToJsonName(code)}.json`\n )\n}\n\nconst messages = {\n languages,\n default: {\n en: require('./en.json').default\n },\n setLanguage: async (i18n, language) => {\n const languages = (Array.isArray(language) ? language : [language]).filter(k => k)\n\n if (!languages.includes(ULTIMATE_FALLBACK_LOCALE)) {\n languages.push(ULTIMATE_FALLBACK_LOCALE)\n }\n const [first, ...rest] = languages\n\n if (first === i18n.locale && isEqual(rest, i18n.fallbackLocale)) {\n return\n }\n\n for (const lang of languages) {\n if (hasLanguageFile(lang)) {\n const messages = await loadLanguageFile(lang)\n i18n.setLocaleMessage(lang, messages.default)\n }\n }\n\n i18n.fallbackLocale = rest\n i18n.locale = first\n }\n}\n\nexport default messages\n","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n /* eslint-disable no-new */\n new EventTarget()\n /* eslint-enable no-new */\n} catch (e) {\n window.EventTarget = EventTargetPolyfill\n}\n","const defaultState = {\n settingsModalState: 'hidden',\n settingsModalLoaded: false,\n settingsModalTargetTab: null,\n settings: {\n currentSaveStateNotice: null,\n noticeClearTimeout: null,\n notificationPermission: null\n },\n browserSupport: {\n cssFilter: window.CSS && window.CSS.supports && (\n window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n )\n },\n layoutType: 'normal',\n globalNotices: [],\n layoutHeight: 0,\n lastTimeline: null\n}\n\nconst interfaceMod = {\n state: defaultState,\n mutations: {\n settingsSaved (state, { success, error }) {\n if (success) {\n if (state.noticeClearTimeout) {\n clearTimeout(state.noticeClearTimeout)\n }\n state.settings.currentSaveStateNotice = { error: false, data: success }\n state.settings.noticeClearTimeout = setTimeout(() => delete state.settings.currentSaveStateNotice, 2000)\n } else {\n state.settings.currentSaveStateNotice = { error: true, errorData: error }\n }\n },\n setNotificationPermission (state, permission) {\n state.notificationPermission = permission\n },\n setLayoutType (state, value) {\n state.layoutType = value\n },\n closeSettingsModal (state) {\n state.settingsModalState = 'hidden'\n },\n togglePeekSettingsModal (state) {\n switch (state.settingsModalState) {\n case 'minimized':\n state.settingsModalState = 'visible'\n return\n case 'visible':\n state.settingsModalState = 'minimized'\n return\n default:\n throw new Error('Illegal minimization state of settings modal')\n }\n },\n openSettingsModal (state) {\n state.settingsModalState = 'visible'\n if (!state.settingsModalLoaded) {\n state.settingsModalLoaded = true\n }\n },\n setSettingsModalTargetTab (state, value) {\n state.settingsModalTargetTab = value\n },\n pushGlobalNotice (state, notice) {\n state.globalNotices.push(notice)\n },\n removeGlobalNotice (state, notice) {\n state.globalNotices = state.globalNotices.filter(n => n !== notice)\n },\n setLayoutHeight (state, value) {\n state.layoutHeight = value\n },\n setLayoutWidth (state, value) {\n state.layoutWidth = value\n },\n setLastTimeline (state, value) {\n state.lastTimeline = value\n }\n },\n actions: {\n setPageTitle ({ rootState }, option = '') {\n document.title = `${option} ${rootState.instance.name}`\n },\n settingsSaved ({ commit, dispatch }, { success, error }) {\n commit('settingsSaved', { success, error })\n },\n setNotificationPermission ({ commit }, permission) {\n commit('setNotificationPermission', permission)\n },\n closeSettingsModal ({ commit }) {\n commit('closeSettingsModal')\n },\n openSettingsModal ({ commit }) {\n commit('openSettingsModal')\n },\n togglePeekSettingsModal ({ commit }) {\n commit('togglePeekSettingsModal')\n },\n clearSettingsModalTargetTab ({ commit }) {\n commit('setSettingsModalTargetTab', null)\n },\n openSettingsModalTab ({ commit }, value) {\n commit('setSettingsModalTargetTab', value)\n commit('openSettingsModal')\n },\n pushGlobalNotice (\n { commit, dispatch, state },\n {\n messageKey,\n messageArgs = {},\n level = 'error',\n timeout = 0\n }) {\n const notice = {\n messageKey,\n messageArgs,\n level\n }\n commit('pushGlobalNotice', notice)\n // Adding a new element to array wraps it in a Proxy, which breaks the comparison\n // TODO: Generate UUID or something instead or relying on !== operator?\n const newNotice = state.globalNotices[state.globalNotices.length - 1]\n if (timeout) {\n setTimeout(() => dispatch('removeGlobalNotice', newNotice), timeout)\n }\n return newNotice\n },\n removeGlobalNotice ({ commit }, notice) {\n commit('removeGlobalNotice', notice)\n },\n setLayoutHeight ({ commit }, value) {\n commit('setLayoutHeight', value)\n },\n // value is optional, assuming it was cached prior\n setLayoutWidth ({ commit, state, rootGetters, rootState }, value) {\n let width = value\n if (value !== undefined) {\n commit('setLayoutWidth', value)\n } else {\n width = state.layoutWidth\n }\n const mobileLayout = width <= 800\n const normalOrMobile = mobileLayout ? 'mobile' : 'normal'\n const { thirdColumnMode } = rootGetters.mergedConfig\n if (thirdColumnMode === 'none' || !rootState.users.currentUser) {\n commit('setLayoutType', normalOrMobile)\n } else {\n const wideLayout = width >= 1300\n commit('setLayoutType', wideLayout ? 'wide' : normalOrMobile)\n }\n },\n setLastTimeline ({ commit }, value) {\n commit('setLastTimeline', value)\n }\n }\n}\n\nexport default interfaceMod\n","import { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\nimport { langCodeToCldrName, ensureFinalFallback } from '../i18n/languages.js'\n\nconst SORTED_EMOJI_GROUP_IDS = [\n 'smileys-and-emotion',\n 'people-and-body',\n 'animals-and-nature',\n 'food-and-drink',\n 'travel-and-places',\n 'activities',\n 'objects',\n 'symbols',\n 'flags'\n]\n\nconst REGIONAL_INDICATORS = (() => {\n const start = 0x1F1E6\n const end = 0x1F1FF\n const A = 'A'.codePointAt(0)\n const res = new Array(end - start + 1)\n for (let i = start; i <= end; ++i) {\n const letter = String.fromCodePoint(A + i - start)\n res[i - start] = {\n replacement: String.fromCodePoint(i),\n imageUrl: false,\n displayText: 'regional_indicator_' + letter,\n displayTextI18n: {\n key: 'emoji.regional_indicator',\n args: { letter }\n }\n }\n }\n return res\n})()\n\nconst REMOTE_INTERACTION_URL = '/main/ostatus'\n\nconst defaultState = {\n // Stuff from apiConfig\n name: 'Pleroma FE',\n registrationOpen: true,\n server: 'http://localhost:4040/',\n textlimit: 5000,\n themeData: undefined,\n vapidPublicKey: undefined,\n\n // Stuff from static/config.json\n alwaysShowSubjectInput: true,\n defaultAvatar: '/images/avi.png',\n defaultBanner: '/images/banner.png',\n background: '/static/aurora_borealis.jpg',\n collapseMessageWithSubject: false,\n greentext: false,\n useAtIcon: false,\n mentionLinkDisplay: 'short',\n mentionLinkShowTooltip: true,\n mentionLinkShowAvatar: false,\n mentionLinkFadeDomain: true,\n mentionLinkShowYous: false,\n mentionLinkBoldenYou: true,\n hideFilteredStatuses: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: false,\n hideMutedThreads: true,\n hideWordFilteredPosts: false,\n hidePostStats: false,\n hideBotIndication: false,\n hideSitename: false,\n hideUserStats: false,\n muteBotStatuses: false,\n modalOnRepeat: false,\n modalOnUnfollow: false,\n modalOnBlock: true,\n modalOnMute: false,\n modalOnDelete: true,\n modalOnLogout: true,\n modalOnApproveFollow: false,\n modalOnDenyFollow: false,\n modalOnRemoveUserFromFollowers: false,\n loginMethod: 'password',\n logo: '/static/logo.svg',\n logoMargin: '.2em',\n logoMask: true,\n logoLeft: false,\n disableUpdateNotification: false,\n minimalScopesMode: false,\n nsfwCensorImage: undefined,\n postContentType: 'text/plain',\n redirectRootLogin: '/main/friends',\n redirectRootNoLogin: '/main/all',\n scopeCopy: true,\n showFeaturesPanel: true,\n showInstanceSpecificPanel: false,\n sidebarRight: false,\n subjectLineBehavior: 'email',\n theme: 'pleroma-dark',\n virtualScrolling: true,\n sensitiveByDefault: false,\n conversationDisplay: 'linear',\n conversationTreeAdvanced: false,\n conversationOtherRepliesButton: 'below',\n conversationTreeFadeAncestors: false,\n maxDepthInThread: 6,\n\n // Nasty stuff\n customEmoji: [],\n customEmojiFetched: false,\n emoji: {},\n emojiFetched: false,\n unicodeEmojiAnnotations: {},\n pleromaBackend: true,\n postFormats: [],\n restrictedNicknames: [],\n safeDM: true,\n knownDomains: [],\n birthdayRequired: false,\n birthdayMinAge: 0,\n\n // Feature-set, apparently, not everything here is reported...\n shoutAvailable: false,\n pleromaChatMessagesAvailable: false,\n gopherAvailable: false,\n mediaProxyAvailable: false,\n suggestionsEnabled: false,\n suggestionsWeb: '',\n\n // Html stuff\n instanceSpecificPanelContent: '',\n tos: '',\n\n // Version Information\n backendVersion: '',\n frontendVersion: '',\n\n pollsAvailable: false,\n pollLimits: {\n max_options: 4,\n max_option_chars: 255,\n min_expiration: 60,\n max_expiration: 60 * 60 * 24\n }\n}\n\nconst loadAnnotations = (lang) => {\n return import(\n /* webpackChunkName: \"emoji-annotations/[request]\" */\n `@kazvmoe-infra/unicode-emoji-json/annotations/${langCodeToCldrName(lang)}.json`\n )\n .then(k => k.default)\n}\n\nconst injectAnnotations = (emoji, annotations) => {\n const availableLangs = Object.keys(annotations)\n\n return {\n ...emoji,\n annotations: availableLangs.reduce((acc, cur) => {\n acc[cur] = annotations[cur][emoji.replacement]\n return acc\n }, {})\n }\n}\n\nconst injectRegionalIndicators = groups => {\n groups.symbols.push(...REGIONAL_INDICATORS)\n return groups\n}\n\nconst instance = {\n state: defaultState,\n mutations: {\n setInstanceOption (state, { name, value }) {\n if (typeof value !== 'undefined') {\n state[name] = value\n }\n },\n setKnownDomains (state, domains) {\n state.knownDomains = domains\n },\n setUnicodeEmojiAnnotations (state, { lang, annotations }) {\n state.unicodeEmojiAnnotations[lang] = annotations\n }\n },\n getters: {\n instanceDefaultConfig (state) {\n return instanceDefaultProperties\n .map(key => [key, state[key]])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n },\n groupedCustomEmojis (state) {\n const packsOf = emoji => {\n const packs = emoji.tags\n .filter(k => k.startsWith('pack:'))\n .map(k => {\n const packName = k.slice(5) // remove 'pack:' prefix\n return {\n id: `custom-${packName}`,\n text: packName\n }\n })\n\n if (!packs.length) {\n return [{\n id: 'unpacked'\n }]\n } else {\n return packs\n }\n }\n\n return state.customEmoji\n .reduce((res, emoji) => {\n packsOf(emoji).forEach(({ id: packId, text: packName }) => {\n if (!res[packId]) {\n res[packId] = ({\n id: packId,\n text: packName,\n image: emoji.imageUrl,\n emojis: []\n })\n }\n res[packId].emojis.push(emoji)\n })\n return res\n }, {})\n },\n standardEmojiList (state) {\n return SORTED_EMOJI_GROUP_IDS\n .map(groupId => (state.emoji[groupId] || []).map(k => injectAnnotations(k, state.unicodeEmojiAnnotations)))\n .reduce((a, b) => a.concat(b), [])\n },\n standardEmojiGroupList (state) {\n return SORTED_EMOJI_GROUP_IDS.map(groupId => ({\n id: groupId,\n emojis: (state.emoji[groupId] || []).map(k => injectAnnotations(k, state.unicodeEmojiAnnotations))\n }))\n },\n instanceDomain (state) {\n return new URL(state.server).hostname\n },\n remoteInteractionLink (state) {\n const server = state.server.endsWith('/') ? state.server.slice(0, -1) : state.server\n const link = server + REMOTE_INTERACTION_URL\n\n return ({ statusId, nickname }) => {\n if (statusId) {\n return `${link}?status_id=${statusId}`\n } else {\n return `${link}?nickname=${nickname}`\n }\n }\n }\n },\n actions: {\n setInstanceOption ({ commit, dispatch }, { name, value }) {\n commit('setInstanceOption', { name, value })\n switch (name) {\n case 'name':\n dispatch('setPageTitle')\n break\n case 'shoutAvailable':\n if (value) {\n dispatch('initializeSocket')\n }\n break\n case 'theme':\n dispatch('setTheme', value)\n break\n }\n },\n async getStaticEmoji ({ commit }) {\n try {\n const values = (await import(/* webpackChunkName: 'emoji' */ '../../static/emoji.json')).default\n\n const emoji = Object.keys(values).reduce((res, groupId) => {\n res[groupId] = values[groupId].map(e => ({\n displayText: e.slug,\n imageUrl: false,\n replacement: e.emoji\n }))\n return res\n }, {})\n commit('setInstanceOption', { name: 'emoji', value: injectRegionalIndicators(emoji) })\n } catch (e) {\n console.warn(\"Can't load static emoji\")\n console.warn(e)\n }\n },\n\n loadUnicodeEmojiData ({ commit, state }, language) {\n const langList = ensureFinalFallback(language)\n\n return Promise.all(\n langList\n .map(async lang => {\n if (!state.unicodeEmojiAnnotations[lang]) {\n try {\n const annotations = await loadAnnotations(lang)\n commit('setUnicodeEmojiAnnotations', { lang, annotations })\n } catch (e) {\n console.warn(`Error loading unicode emoji annotations for ${lang}: `, e)\n // ignore\n }\n }\n }))\n },\n\n async getCustomEmoji ({ commit, state }) {\n try {\n const res = await window.fetch('/api/pleroma/emoji.json')\n if (res.ok) {\n const result = await res.json()\n const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n const caseInsensitiveStrCmp = (a, b) => {\n const la = a.toLowerCase()\n const lb = b.toLowerCase()\n return la > lb ? 1 : (la < lb ? -1 : 0)\n }\n const noPackLast = (a, b) => {\n const aNull = a === ''\n const bNull = b === ''\n if (aNull === bNull) {\n return 0\n } else if (aNull && !bNull) {\n return 1\n } else {\n return -1\n }\n }\n const byPackThenByName = (a, b) => {\n const packOf = emoji => (emoji.tags.filter(k => k.startsWith('pack:'))[0] || '').slice(5)\n const packOfA = packOf(a)\n const packOfB = packOf(b)\n return noPackLast(packOfA, packOfB) || caseInsensitiveStrCmp(packOfA, packOfB) || caseInsensitiveStrCmp(a.displayText, b.displayText)\n }\n\n const emoji = Object.entries(values).map(([key, value]) => {\n const imageUrl = value.image_url\n return {\n displayText: key,\n imageUrl: imageUrl ? state.server + imageUrl : value,\n tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n replacement: `:${key}: `\n }\n // Technically could use tags but those are kinda useless right now,\n // should have been \"pack\" field, that would be more useful\n }).sort(byPackThenByName)\n commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load custom emojis\")\n console.warn(e)\n }\n },\n\n setTheme ({ commit, rootState }, themeName) {\n commit('setInstanceOption', { name: 'theme', value: themeName })\n getPreset(themeName)\n .then(themeData => {\n commit('setInstanceOption', { name: 'themeData', value: themeData })\n // No need to apply theme if there's user theme already\n const { customTheme } = rootState.config\n if (customTheme) return\n\n // New theme presets don't have 'theme' property, they use 'source'\n const themeSource = themeData.source\n if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n applyTheme(themeSource)\n } else {\n applyTheme(themeData.theme)\n }\n })\n },\n fetchEmoji ({ dispatch, state }) {\n if (!state.customEmojiFetched) {\n state.customEmojiFetched = true\n dispatch('getCustomEmoji')\n }\n if (!state.emojiFetched) {\n state.emojiFetched = true\n dispatch('getStaticEmoji')\n }\n },\n\n async getKnownDomains ({ commit, rootState }) {\n try {\n const result = await apiService.fetchKnownDomains({\n credentials: rootState.users.currentUser.credentials\n })\n commit('setKnownDomains', result)\n } catch (e) {\n console.warn(\"Can't load known domains\")\n console.warn(e)\n }\n }\n }\n}\n\nexport default instance\n","import {\n remove,\n slice,\n each,\n findIndex,\n find,\n maxBy,\n minBy,\n merge,\n first,\n last,\n isArray,\n omitBy\n} from 'lodash'\nimport {\n isStatusNotification,\n isValidNotification,\n maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n statuses: [],\n statusesObject: {},\n faves: [],\n visibleStatuses: [],\n visibleStatusesObject: {},\n newStatusCount: 0,\n maxId: 0,\n minId: 0,\n minVisibleId: 0,\n loading: false,\n followers: [],\n friends: [],\n userId,\n flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n desktopNotificationSilence: true,\n maxId: 0,\n minId: Number.POSITIVE_INFINITY,\n data: [],\n idStore: {},\n loading: false\n})\n\nexport const defaultState = () => ({\n allStatuses: [],\n allStatusesObject: {},\n conversationsObject: {},\n maxId: 0,\n notifications: emptyNotifications(),\n favorites: new Set(),\n timelines: {\n mentions: emptyTl(),\n public: emptyTl(),\n user: emptyTl(),\n favorites: emptyTl(),\n media: emptyTl(),\n publicAndExternal: emptyTl(),\n friends: emptyTl(),\n tag: emptyTl(),\n dms: emptyTl(),\n bookmarks: emptyTl(),\n list: emptyTl()\n }\n})\n\nexport const prepareStatus = (status) => {\n // Set deleted flag\n status.deleted = false\n\n // To make the array reactive\n status.attachments = status.attachments || []\n\n return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n const oldItem = obj[item.id]\n\n if (oldItem) {\n // We already have this, so only merge the new info.\n // We ignore null values to avoid overwriting existing properties with missing data\n // we also skip 'user' because that is handled by users module\n merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n // Reactivity fix.\n oldItem.attachments.splice(oldItem.attachments.length)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n prepareStatus(item)\n arr.push(item)\n obj[item.id] = item\n return { item, new: true }\n }\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst sortTimeline = (timeline) => {\n timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n timeline.statuses = timeline.statuses.sort(sortById)\n timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n if (result.new) {\n // Add to conversation\n const status = result.item\n const conversationsObject = state.conversationsObject\n const conversationId = status.statusnet_conversation_id\n if (conversationsObject[conversationId]) {\n conversationsObject[conversationId].push(status)\n } else {\n conversationsObject[conversationId] = [status]\n }\n }\n return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n remove(state.allStatuses, { id: status.id })\n\n // TODO: Need to remove from allStatusesObject?\n\n // Remove possible notification\n remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n // Remove from conversation\n const conversationId = status.statusnet_conversation_id\n if (state.conversationsObject[conversationId]) {\n remove(state.conversationsObject[conversationId], { id: status.id })\n }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n // Sanity check\n if (!isArray(statuses)) {\n return false\n }\n\n const allStatuses = state.allStatuses\n const timelineObject = state.timelines[timeline]\n\n // Mismatch between API pagination and our internal minId/maxId tracking systems:\n // pagination.maxId is the oldest of the returned statuses when fetching older,\n // and pagination.minId is the newest when fetching newer. The names come directly\n // from the arguments they're supposed to be passed as for the next fetch.\n const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n if (!noIdUpdate && newer) {\n timelineObject.maxId = maxNew\n }\n if (!noIdUpdate && older) {\n timelineObject.minId = minNew\n }\n\n // This makes sure that user timeline won't get data meant for other\n // user. I.e. opening different user profiles makes request which could\n // return data late after user already viewing different user profile\n if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n return\n }\n\n const addStatus = (data, showImmediately, addToTimeline = true) => {\n const result = addStatusToGlobalStorage(state, data)\n const status = result.item\n\n if (result.new) {\n // We are mentioned in a post\n if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n const mentions = state.timelines.mentions\n\n // Add the mention to the mentions timeline\n if (timelineObject !== mentions) {\n mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n mentions.newStatusCount += 1\n\n sortTimeline(mentions)\n }\n }\n if (status.visibility === 'direct') {\n const dms = state.timelines.dms\n\n mergeOrAdd(dms.statuses, dms.statusesObject, status)\n dms.newStatusCount += 1\n\n sortTimeline(dms)\n }\n }\n\n // Decide if we should treat the status as new for this timeline.\n let resultForCurrentTimeline\n // Some statuses should only be added to the global status repository.\n if (timeline && addToTimeline) {\n resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n }\n\n if (timeline && showImmediately) {\n // Add it directly to the visibleStatuses, don't change\n // newStatusCount\n mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n // Just change newStatuscount\n timelineObject.newStatusCount += 1\n }\n\n return status\n }\n\n const favoriteStatus = (favorite, counter) => {\n const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n if (status) {\n // This is our favorite, so the relevant bit.\n if (favorite.user.id === user.id) {\n status.favorited = true\n } else {\n status.fave_num += 1\n }\n }\n return status\n }\n\n const processors = {\n status: (status) => {\n addStatus(status, showImmediately)\n },\n edit: (status) => {\n addStatus(status, showImmediately)\n },\n retweet: (status) => {\n // RetweetedStatuses are never shown immediately\n const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n let retweet\n // If the retweeted status is already there, don't add the retweet\n // to the timeline.\n if (timeline && find(timelineObject.statuses, (s) => {\n if (s.retweeted_status) {\n return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n } else {\n return s.id === retweetedStatus.id\n }\n })) {\n // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n retweet = addStatus(status, false, false)\n } else {\n retweet = addStatus(status, showImmediately)\n }\n\n retweet.retweeted_status = retweetedStatus\n },\n favorite: (favorite) => {\n // Only update if this is a new favorite.\n // Ignore our own favorites because we get info about likes as response to like request\n if (!state.favorites.has(favorite.id)) {\n state.favorites.add(favorite.id)\n favoriteStatus(favorite)\n }\n },\n deletion: (deletion) => {\n const uri = deletion.uri\n const status = find(allStatuses, { uri })\n if (!status) {\n return\n }\n\n removeStatusFromGlobalStorage(state, status)\n\n if (timeline) {\n remove(timelineObject.statuses, { uri })\n remove(timelineObject.visibleStatuses, { uri })\n }\n },\n follow: (follow) => {\n // NOOP, it is known status but we don't do anything about it for now\n },\n default: (unknown) => {\n console.log('unknown status type')\n console.log(unknown)\n }\n }\n\n each(statuses, (status) => {\n const type = status.type\n const processor = processors[type] || processors.default\n processor(status)\n })\n\n // Keep the visible statuses sorted\n if (timeline && !(timeline === 'bookmarks')) {\n sortTimeline(timelineObject)\n }\n}\n\nconst updateNotificationsMinMaxId = (state, notification) => {\n state.notifications.maxId = notification.id > state.notifications.maxId\n ? notification.id\n : state.notifications.maxId\n state.notifications.minId = notification.id < state.notifications.minId\n ? notification.id\n : state.notifications.minId\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\n each(notifications, (notification) => {\n // If invalid notification, update ids but don't add it to store\n if (!isValidNotification(notification)) {\n console.error('Invalid notification:', notification)\n updateNotificationsMinMaxId(state, notification)\n return\n }\n\n if (isStatusNotification(notification.type)) {\n notification.action = addStatusToGlobalStorage(state, notification.action).item\n notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n }\n\n if (notification.type === 'pleroma:report') {\n dispatch('addReport', notification.report)\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n dispatch('fetchEmojiReactionsBy', notification.status.id)\n }\n\n // Only add a new notification if we don't have one for the same action\n // eslint-disable-next-line no-prototype-builtins\n if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n updateNotificationsMinMaxId(state, notification)\n\n state.notifications.data.push(notification)\n state.notifications.idStore[notification.id] = notification\n\n newNotificationSideEffects(notification)\n } else if (notification.seen) {\n state.notifications.idStore[notification.id].seen = true\n }\n })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n const timelineObject = state.timelines[timeline]\n if (userId) {\n remove(timelineObject.statuses, { user: { id: userId } })\n remove(timelineObject.visibleStatuses, { user: { id: userId } })\n timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n }\n}\n\nexport const mutations = {\n addNewStatuses,\n addNewNotifications,\n removeStatus,\n showNewStatuses (state, { timeline }) {\n const oldTimeline = (state.timelines[timeline])\n\n oldTimeline.newStatusCount = 0\n oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n oldTimeline.minId = oldTimeline.minVisibleId\n oldTimeline.visibleStatusesObject = {}\n each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n },\n resetStatuses (state) {\n const emptyState = defaultState()\n Object.entries(emptyState).forEach(([key, value]) => {\n state[key] = value\n })\n },\n clearTimeline (state, { timeline, excludeUserId = false }) {\n const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n state.timelines[timeline] = emptyTl(userId)\n },\n clearNotifications (state) {\n state.notifications = emptyNotifications()\n },\n setFavorited (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.favorited !== value) {\n if (value) {\n newStatus.fave_num++\n } else {\n newStatus.fave_num--\n }\n }\n\n newStatus.favorited = value\n },\n setFavoritedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.favorited = status.favorited\n newStatus.fave_num = status.fave_num\n const index = findIndex(newStatus.favoritedBy, { id: user.id })\n if (index !== -1 && !newStatus.favorited) {\n newStatus.favoritedBy.splice(index, 1)\n } else if (index === -1 && newStatus.favorited) {\n newStatus.favoritedBy.push(user)\n }\n },\n setMutedStatus (state, status) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.thread_muted = status.thread_muted\n\n if (newStatus.thread_muted !== undefined) {\n state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n }\n },\n setRetweeted (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.repeated !== value) {\n if (value) {\n newStatus.repeat_num++\n } else {\n newStatus.repeat_num--\n }\n }\n\n newStatus.repeated = value\n },\n setRetweetedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.repeated = status.repeated\n newStatus.repeat_num = status.repeat_num\n const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n if (index !== -1 && !newStatus.repeated) {\n newStatus.rebloggedBy.splice(index, 1)\n } else if (index === -1 && newStatus.repeated) {\n newStatus.rebloggedBy.push(user)\n }\n },\n setBookmarked (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = value\n },\n setBookmarkedConfirm (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = status.bookmarked\n },\n setDeleted (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n if (newStatus) newStatus.deleted = true\n },\n setManyDeleted (state, condition) {\n Object.values(state.allStatusesObject).forEach(status => {\n if (condition(status)) {\n status.deleted = true\n }\n })\n },\n setLoading (state, { timeline, value }) {\n state.timelines[timeline].loading = value\n },\n setNsfw (state, { id, nsfw }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.nsfw = nsfw\n },\n setNotificationsLoading (state, { value }) {\n state.notifications.loading = value\n },\n setNotificationsSilence (state, { value }) {\n state.notifications.desktopNotificationSilence = value\n },\n markNotificationsAsSeen (state) {\n each(state.notifications.data, (notification) => {\n notification.seen = true\n })\n },\n markSingleNotificationAsSeen (state, { id }) {\n const notification = find(state.notifications.data, n => n.id === id)\n if (notification) notification.seen = true\n },\n dismissNotification (state, { id }) {\n state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n },\n dismissNotifications (state, { finder }) {\n state.notifications.data = state.notifications.data.filter(n => finder)\n },\n updateNotification (state, { id, updater }) {\n const notification = find(state.notifications.data, n => n.id === id)\n notification && updater(notification)\n },\n queueFlush (state, { timeline, id }) {\n state.timelines[timeline].flushMarker = id\n },\n queueFlushAll (state) {\n Object.keys(state.timelines).forEach((timeline) => {\n state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n })\n },\n addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.repeat_num = newStatus.rebloggedBy.length\n newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n },\n addFavs (state, { id, favoritedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.fave_num = newStatus.favoritedBy.length\n newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n },\n addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n const status = state.allStatusesObject[id]\n status.emoji_reactions = emojiReactions\n },\n addOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n const newReaction = {\n ...reaction,\n count: reaction.count + 1,\n me: true,\n accounts: [\n ...reaction.accounts,\n currentUser\n ]\n }\n\n // Update count of existing reaction if it exists, otherwise append at the end\n if (reactionIndex >= 0) {\n status.emoji_reactions[reactionIndex] = newReaction\n } else {\n status.emoji_reactions = [...status.emoji_reactions, newReaction]\n }\n },\n removeOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n if (reactionIndex < 0) return\n\n const reaction = status.emoji_reactions[reactionIndex]\n const accounts = reaction.accounts || []\n\n const newReaction = {\n ...reaction,\n count: reaction.count - 1,\n me: false,\n accounts: accounts.filter(acc => acc.id !== currentUser.id)\n }\n\n if (newReaction.count > 0) {\n status.emoji_reactions[reactionIndex] = newReaction\n } else {\n status.emoji_reactions = status.emoji_reactions.filter(r => r.name !== emoji)\n }\n },\n updateStatusWithPoll (state, { id, poll }) {\n const status = state.allStatusesObject[id]\n status.poll = poll\n },\n setVirtualHeight (state, { statusId, height }) {\n state.allStatusesObject[statusId].virtualHeight = height\n }\n}\n\nconst statuses = {\n state: defaultState(),\n actions: {\n addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n },\n addNewNotifications (store, { notifications, older }) {\n const { commit, dispatch, rootGetters } = store\n\n const newNotificationSideEffects = (notification) => {\n maybeShowNotification(store, notification)\n }\n commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n },\n setNotificationsLoading ({ rootState, commit }, { value }) {\n commit('setNotificationsLoading', { value })\n },\n setNotificationsSilence ({ rootState, commit }, { value }) {\n commit('setNotificationsSilence', { value })\n },\n fetchStatus ({ rootState, dispatch }, id) {\n return rootState.api.backendInteractor.fetchStatus({ id })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n fetchStatusSource ({ rootState, dispatch }, status) {\n return apiService.fetchStatusSource({ id: status.id, credentials: rootState.users.currentUser.credentials })\n },\n fetchStatusHistory ({ rootState, dispatch }, status) {\n return apiService.fetchStatusHistory({ status })\n },\n deleteStatus ({ rootState, commit }, status) {\n commit('setDeleted', { status })\n apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n },\n deleteStatusById ({ rootState, commit }, id) {\n const status = rootState.statuses.allStatusesObject[id]\n commit('setDeleted', { status })\n },\n markStatusesAsDeleted ({ commit }, condition) {\n commit('setManyDeleted', condition)\n },\n favorite ({ rootState, commit }, status) {\n // Optimistic favoriting...\n commit('setFavorited', { status, value: true })\n rootState.api.backendInteractor.favorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n unfavorite ({ rootState, commit }, status) {\n // Optimistic unfavoriting...\n commit('setFavorited', { status, value: false })\n rootState.api.backendInteractor.unfavorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n },\n pinStatus ({ rootState, dispatch }, statusId) {\n return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n unpinStatus ({ rootState, dispatch }, statusId) {\n rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n muteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.muteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n unmuteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n retweet ({ rootState, commit }, status) {\n // Optimistic retweeting...\n commit('setRetweeted', { status, value: true })\n rootState.api.backendInteractor.retweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n },\n unretweet ({ rootState, commit }, status) {\n // Optimistic unretweeting...\n commit('setRetweeted', { status, value: false })\n rootState.api.backendInteractor.unretweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n },\n bookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: true })\n rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n unbookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: false })\n rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n queueFlush ({ rootState, commit }, { timeline, id }) {\n commit('queueFlush', { timeline, id })\n },\n queueFlushAll ({ rootState, commit }) {\n commit('queueFlushAll')\n },\n markNotificationsAsSeen ({ rootState, commit }) {\n commit('markNotificationsAsSeen')\n apiService.markNotificationsAsSeen({\n id: rootState.statuses.notifications.maxId,\n credentials: rootState.users.currentUser.credentials\n })\n },\n markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n commit('markSingleNotificationAsSeen', { id })\n apiService.markNotificationsAsSeen({\n single: true,\n id,\n credentials: rootState.users.currentUser.credentials\n })\n },\n dismissNotificationLocal ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n },\n dismissNotification ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n rootState.api.backendInteractor.dismissNotification({ id })\n },\n updateNotification ({ rootState, commit }, { id, updater }) {\n commit('updateNotification', { id, updater })\n },\n fetchFavsAndRepeats ({ rootState, commit }, id) {\n Promise.all([\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n })\n },\n reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('addOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('removeOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n fetchEmojiReactionsBy ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n emojiReactions => {\n commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n }\n )\n },\n fetchFavs ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n },\n fetchRepeats ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n },\n search (store, { q, resolve, limit, offset, following, type }) {\n return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following, type })\n .then((data) => {\n store.commit('addNewUsers', data.accounts)\n store.commit('addNewUsers', data.statuses.map(s => s.user).filter(u => u))\n store.commit('addNewStatuses', { statuses: data.statuses })\n return data\n })\n },\n setVirtualHeight ({ commit }, { statusId, height }) {\n commit('setVirtualHeight', { statusId, height })\n }\n },\n mutations\n}\n\nexport default statuses\n","import { remove, find } from 'lodash'\n\nexport const defaultState = {\n allLists: [],\n allListsObject: {}\n}\n\nexport const mutations = {\n setLists (state, value) {\n state.allLists = value\n },\n setList (state, { listId, title }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n state.allListsObject[listId].title = title\n\n const entry = find(state.allLists, { id: listId })\n if (!entry) {\n state.allLists.push({ id: listId, title })\n } else {\n entry.title = title\n }\n },\n setListAccounts (state, { listId, accountIds }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n state.allListsObject[listId].accountIds = accountIds\n },\n addListAccount (state, { listId, accountId }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n state.allListsObject[listId].accountIds.push(accountId)\n },\n removeListAccount (state, { listId, accountId }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n const { accountIds } = state.allListsObject[listId]\n const set = new Set(accountIds)\n set.delete(accountId)\n state.allListsObject[listId].accountIds = [...set]\n },\n deleteList (state, { listId }) {\n delete state.allListsObject[listId]\n remove(state.allLists, list => list.id === listId)\n }\n}\n\nconst actions = {\n setLists ({ commit }, value) {\n commit('setLists', value)\n },\n createList ({ rootState, commit }, { title }) {\n return rootState.api.backendInteractor.createList({ title })\n .then((list) => {\n commit('setList', { listId: list.id, title })\n return list\n })\n },\n fetchList ({ rootState, commit }, { listId }) {\n return rootState.api.backendInteractor.getList({ listId })\n .then((list) => commit('setList', { listId: list.id, title: list.title }))\n },\n fetchListAccounts ({ rootState, commit }, { listId }) {\n return rootState.api.backendInteractor.getListAccounts({ listId })\n .then((accountIds) => commit('setListAccounts', { listId, accountIds }))\n },\n setList ({ rootState, commit }, { listId, title }) {\n rootState.api.backendInteractor.updateList({ listId, title })\n commit('setList', { listId, title })\n },\n setListAccounts ({ rootState, commit }, { listId, accountIds }) {\n const saved = rootState.lists.allListsObject[listId].accountIds || []\n const added = accountIds.filter(id => !saved.includes(id))\n const removed = saved.filter(id => !accountIds.includes(id))\n commit('setListAccounts', { listId, accountIds })\n if (added.length > 0) {\n rootState.api.backendInteractor.addAccountsToList({ listId, accountIds: added })\n }\n if (removed.length > 0) {\n rootState.api.backendInteractor.removeAccountsFromList({ listId, accountIds: removed })\n }\n },\n addListAccount ({ rootState, commit }, { listId, accountId }) {\n return rootState\n .api\n .backendInteractor\n .addAccountsToList({ listId, accountIds: [accountId] })\n .then((result) => {\n commit('addListAccount', { listId, accountId })\n return result\n })\n },\n removeListAccount ({ rootState, commit }, { listId, accountId }) {\n return rootState\n .api\n .backendInteractor\n .removeAccountsFromList({ listId, accountIds: [accountId] })\n .then((result) => {\n commit('removeListAccount', { listId, accountId })\n return result\n })\n },\n deleteList ({ rootState, commit }, { listId }) {\n rootState.api.backendInteractor.deleteList({ listId })\n commit('deleteList', { listId })\n }\n}\n\nexport const getters = {\n findListTitle: state => id => {\n if (!state.allListsObject[id]) return\n return state.allListsObject[id].title\n },\n findListAccounts: state => id => {\n return [...state.allListsObject[id].accountIds]\n }\n}\n\nconst lists = {\n state: defaultState,\n mutations,\n actions,\n getters\n}\n\nexport default lists\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, listId, pagination }) => {\n const ccTimeline = camelCase(timeline)\n\n store.dispatch('addNewStatuses', {\n timeline: ccTimeline,\n userId,\n listId,\n statuses,\n showImmediately,\n pagination\n })\n}\n\nconst fetchAndUpdate = ({\n store,\n credentials,\n timeline = 'friends',\n older = false,\n showImmediately = false,\n userId = false,\n listId = false,\n tag = false,\n until,\n since\n}) => {\n const args = { timeline, credentials }\n const rootState = store.rootState || store.state\n const { getters } = store\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n const loggedIn = !!rootState.users.currentUser\n\n if (older) {\n args.until = until || timelineData.minId\n } else {\n if (since === undefined) {\n args.since = timelineData.maxId\n } else if (since !== null) {\n args.since = since\n }\n }\n\n args.userId = userId\n args.listId = listId\n args.tag = tag\n args.withMuted = !hideMutedPosts\n if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n args.replyVisibility = replyVisibility\n }\n\n const numStatusesBeforeFetch = timelineData.statuses.length\n\n return apiService.fetchTimeline(args)\n .then(response => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n\n const { data: statuses, pagination } = response\n if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n store.dispatch('queueFlush', { timeline, id: timelineData.maxId })\n }\n update({ store, statuses, timeline, showImmediately, userId, listId, pagination })\n return { statuses, pagination }\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, listId = false, tag = false }) => {\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const showImmediately = timelineData.visibleStatuses.length === 0\n timelineData.userId = userId\n timelineData.listId = listId\n fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, listId, tag })\n const boundFetchAndUpdate = () =>\n fetchAndUpdate({ timeline, credentials, store, userId, listId, tag })\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\nconst timelineFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n return apiService.fetchFollowRequests({ credentials })\n .then((requests) => {\n store.commit('setFollowRequests', requests)\n store.commit('addNewUsers', requests)\n }, () => {})\n .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst followRequestFetcher = {\n startFetching\n}\n\nexport default followRequestFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n return apiService.fetchLists({ credentials })\n .then(lists => {\n store.commit('setLists', lists)\n }, () => {})\n .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 240000)\n}\n\nconst listsFetcher = {\n startFetching\n}\n\nexport default listsFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcher from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\nimport listsFetcher from '../../services/lists_fetcher/lists_fetcher.service.js'\n\nconst backendInteractorService = credentials => ({\n startFetchingTimeline ({ timeline, store, userId = false, listId = false, tag }) {\n return timelineFetcher.startFetching({ timeline, store, credentials, userId, listId, tag })\n },\n\n fetchTimeline (args) {\n return timelineFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingNotifications ({ store }) {\n return notificationsFetcher.startFetching({ store, credentials })\n },\n\n fetchNotifications (args) {\n return notificationsFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingFollowRequests ({ store }) {\n return followRequestFetcher.startFetching({ store, credentials })\n },\n\n startFetchingLists ({ store }) {\n return listsFetcher.startFetching({ store, credentials })\n },\n\n startUserSocket ({ store }) {\n const serv = store.rootState.instance.server.replace('http', 'ws')\n const url = serv + getMastodonSocketURI({ credentials, stream: 'user' })\n return ProcessedWS({ url, id: 'User' })\n },\n\n ...Object.entries(apiService).reduce((acc, [key, func]) => {\n return {\n ...acc,\n [key]: (args) => func({ credentials, ...args })\n }\n }, {}),\n\n verifyCredentials: apiService.verifyCredentials\n})\n\nexport default backendInteractorService\n","\nexport const windowWidth = () =>\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth\n\nexport const windowHeight = () =>\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight\n","import { reduce } from 'lodash'\n\nconst REDIRECT_URI = `${window.location.origin}/oauth-callback`\n\nexport const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) => {\n if (clientId && clientSecret) {\n return Promise.resolve({ clientId, clientSecret })\n }\n\n const url = `${instance}/api/v1/apps`\n const form = new window.FormData()\n\n form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)\n form.append('redirect_uris', REDIRECT_URI)\n form.append('scopes', 'read write follow push admin')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n .then((app) => ({ clientId: app.client_id, clientSecret: app.client_secret }))\n .then((app) => commit('setClientData', app) || app)\n}\n\nconst login = ({ instance, clientId }) => {\n const data = {\n response_type: 'code',\n client_id: clientId,\n redirect_uri: REDIRECT_URI,\n scope: 'read write follow push admin'\n }\n\n const dataString = reduce(data, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n if (!acc) {\n return encoded\n } else {\n return `${acc}&${encoded}`\n }\n }, false)\n\n // Do the redirect...\n const url = `${instance}/oauth/authorize?${dataString}`\n\n window.location.href = url\n}\n\nconst getTokenWithCredentials = ({ clientId, clientSecret, instance, username, password }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'password')\n form.append('username', username)\n form.append('password', password)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst getToken = ({ clientId, clientSecret, instance, code }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'authorization_code')\n form.append('code', code)\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n}\n\nexport const getClientToken = ({ clientId, clientSecret, instance }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'client_credentials')\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\nconst verifyOTPCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst revokeToken = ({ app, instance, token }) => {\n const url = `${instance}/oauth/revoke`\n const form = new window.FormData()\n\n form.append('client_id', app.clientId)\n form.append('client_secret', app.clientSecret)\n form.append('token', token)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst oauth = {\n login,\n getToken,\n getTokenWithCredentials,\n getOrCreateApp,\n verifyOTPCode,\n verifyRecoveryCode,\n revokeToken\n}\n\nexport default oauth\n","import runtime from 'serviceworker-webpack5-plugin/lib/runtime'\n\nfunction urlBase64ToUint8Array (base64String) {\n const padding = '='.repeat((4 - base64String.length % 4) % 4)\n const base64 = (base64String + padding)\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n\n const rawData = window.atob(base64)\n return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n}\n\nfunction isPushSupported () {\n return 'serviceWorker' in navigator && 'PushManager' in window\n}\n\nfunction getOrCreateServiceWorker () {\n return runtime.register()\n .catch((err) => console.error('Unable to get or create a service worker.', err))\n}\n\nfunction subscribePush (registration, isEnabled, vapidPublicKey) {\n if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))\n if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))\n\n const subscribeOptions = {\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n }\n return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n return registration.pushManager.getSubscription()\n .then((subscribtion) => {\n if (subscribtion === null) { return }\n return subscribtion.unsubscribe()\n })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`\n }\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response\n })\n}\n\nfunction sendSubscriptionToBackEnd (subscription, token, notificationVisibility) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`\n },\n body: JSON.stringify({\n subscription,\n data: {\n alerts: {\n follow: notificationVisibility.follows,\n favourite: notificationVisibility.likes,\n mention: notificationVisibility.mentions,\n reblog: notificationVisibility.repeats,\n move: notificationVisibility.moves\n }\n }\n })\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response.json()\n }).then((responseData) => {\n if (!responseData.id) throw new Error('Bad response from server.')\n return responseData\n })\n}\n\nexport function registerPushNotifications (isEnabled, vapidPublicKey, token, notificationVisibility) {\n if (isPushSupported()) {\n getOrCreateServiceWorker()\n .then((registration) => subscribePush(registration, isEnabled, vapidPublicKey))\n .then((subscription) => sendSubscriptionToBackEnd(subscription, token, notificationVisibility))\n .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))\n }\n}\n\nexport function unregisterPushNotifications (token) {\n if (isPushSupported()) {\n Promise.all([\n deleteSubscriptionFromBackEnd(token),\n getOrCreateServiceWorker()\n .then((registration) => {\n return unsubscribePush(registration).then((result) => [registration, result])\n })\n .then(([registration, unsubResult]) => {\n if (!unsubResult) {\n console.warn('Push subscription cancellation wasn\\'t successful, killing SW anyway...')\n }\n return registration.unregister().then((result) => {\n if (!result) {\n console.warn('Failed to kill SW')\n }\n })\n })\n ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n }\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n if (!item) { return false }\n const oldItem = obj[item.id]\n if (oldItem) {\n // We already have this, so only merge the new info.\n mergeWith(oldItem, item, mergeArrayLength)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n arr.push(item)\n obj[item.id] = item\n return { item, new: true }\n }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n if (isArray(oldValue) && isArray(newValue)) {\n oldValue.length = newValue.length\n return mergeWith(oldValue, newValue, mergeArrayLength)\n }\n}\n\nconst getNotificationPermission = () => {\n const Notification = window.Notification\n\n if (!Notification) return Promise.resolve(null)\n if (Notification.permission === 'default') return Notification.requestPermission()\n return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n return store.rootState.api.backendInteractor.blockUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addBlockId', id)\n store.commit('removeStatus', { timeline: 'friends', userId: id })\n store.commit('removeStatus', { timeline: 'public', userId: id })\n store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n })\n}\n\nconst unblockUser = (store, id) => {\n return store.rootState.api.backendInteractor.unblockUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst removeUserFromFollowers = (store, id) => {\n return store.rootState.api.backendInteractor.removeUserFromFollowers({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst editUserNote = (store, { id, comment }) => {\n return store.rootState.api.backendInteractor.editUserNote({ id, comment })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteUser = (store, args) => {\n const id = typeof args === 'object' ? args.id : args\n const expiresIn = typeof args === 'object' ? args.expiresIn : 0\n\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = true\n store.commit('updateUserRelationship', [predictedRelationship])\n store.commit('addMuteId', id)\n\n return store.rootState.api.backendInteractor.muteUser({ id, expiresIn })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addMuteId', id)\n })\n}\n\nconst unmuteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = false\n store.commit('updateUserRelationship', [predictedRelationship])\n\n return store.rootState.api.backendInteractor.unmuteUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst hideReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: false })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n })\n}\n\nconst showReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: true })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.muteDomain({ domain })\n .then(() => store.commit('addDomainMute', domain))\n}\n\nconst unmuteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.unmuteDomain({ domain })\n .then(() => store.commit('removeDomainMute', domain))\n}\n\nexport const mutations = {\n tagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.concat([tag])\n user.tags = newTags\n },\n untagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.filter(t => t !== tag)\n user.tags = newTags\n },\n updateRight (state, { user: { id }, right, value }) {\n const user = state.usersObject[id]\n const newRights = user.rights\n newRights[right] = value\n user.rights = newRights\n },\n updateActivationStatus (state, { user: { id }, deactivated }) {\n const user = state.usersObject[id]\n user.deactivated = deactivated\n },\n setCurrentUser (state, user) {\n state.lastLoginName = user.screen_name\n state.currentUser = mergeWith(state.currentUser || {}, user, mergeArrayLength)\n },\n clearCurrentUser (state) {\n state.currentUser = false\n state.lastLoginName = false\n },\n beginLogin (state) {\n state.loggingIn = true\n },\n endLogin (state) {\n state.loggingIn = false\n },\n saveFriendIds (state, { id, friendIds }) {\n const user = state.usersObject[id]\n user.friendIds = uniq(concat(user.friendIds || [], friendIds))\n },\n saveFollowerIds (state, { id, followerIds }) {\n const user = state.usersObject[id]\n user.followerIds = uniq(concat(user.followerIds || [], followerIds))\n },\n // Because frontend doesn't have a reason to keep these stuff in memory\n // outside of viewing someones user profile.\n clearFriends (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n user.friendIds = []\n }\n },\n clearFollowers (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n user.followerIds = []\n }\n },\n addNewUsers (state, users) {\n each(users, (user) => {\n if (user.relationship) {\n state.relationships[user.relationship.id] = user.relationship\n }\n const res = mergeOrAdd(state.users, state.usersObject, user)\n const item = res.item\n if (res.new && item.screen_name && !item.screen_name.includes('@')) {\n state.usersByNameObject[item.screen_name.toLowerCase()] = item\n }\n })\n },\n updateUserRelationship (state, relationships) {\n relationships.forEach((relationship) => {\n state.relationships[relationship.id] = relationship\n })\n },\n updateUserInLists (state, { id, inLists }) {\n state.usersObject[id].inLists = inLists\n },\n saveBlockIds (state, blockIds) {\n state.currentUser.blockIds = blockIds\n },\n addBlockId (state, blockId) {\n if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n state.currentUser.blockIds.push(blockId)\n }\n },\n saveMuteIds (state, muteIds) {\n state.currentUser.muteIds = muteIds\n },\n addMuteId (state, muteId) {\n if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n state.currentUser.muteIds.push(muteId)\n }\n },\n saveDomainMutes (state, domainMutes) {\n state.currentUser.domainMutes = domainMutes\n },\n addDomainMute (state, domain) {\n if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n state.currentUser.domainMutes.push(domain)\n }\n },\n removeDomainMute (state, domain) {\n const index = state.currentUser.domainMutes.indexOf(domain)\n if (index !== -1) {\n state.currentUser.domainMutes.splice(index, 1)\n }\n },\n setPinnedToUser (state, status) {\n const user = state.usersObject[status.user.id]\n user.pinnedStatusIds = user.pinnedStatusIds || []\n const index = user.pinnedStatusIds.indexOf(status.id)\n\n if (status.pinned && index === -1) {\n user.pinnedStatusIds.push(status.id)\n } else if (!status.pinned && index !== -1) {\n user.pinnedStatusIds.splice(index, 1)\n }\n },\n setUserForStatus (state, status) {\n status.user = state.usersObject[status.user.id]\n },\n setUserForNotification (state, notification) {\n if (notification.type !== 'follow') {\n notification.action.user = state.usersObject[notification.action.user.id]\n }\n notification.from_profile = state.usersObject[notification.from_profile.id]\n },\n setColor (state, { user: { id }, highlighted }) {\n const user = state.usersObject[id]\n user.highlight = highlighted\n },\n signUpPending (state) {\n state.signUpPending = true\n state.signUpErrors = []\n },\n signUpSuccess (state) {\n state.signUpPending = false\n },\n signUpFailure (state, errors) {\n state.signUpPending = false\n state.signUpErrors = errors\n }\n}\n\nexport const getters = {\n findUser: state => query => {\n return state.usersObject[query]\n },\n findUserByName: state => query => {\n return state.usersByNameObject[query.toLowerCase()]\n },\n findUserByUrl: state => query => {\n return state.users\n .find(u => u.statusnet_profile_url &&\n u.statusnet_profile_url.toLowerCase() === query.toLowerCase())\n },\n relationship: state => id => {\n const rel = id && state.relationships[id]\n return rel || { id, loading: true }\n }\n}\n\nexport const defaultState = {\n loggingIn: false,\n lastLoginName: false,\n currentUser: false,\n users: [],\n usersObject: {},\n usersByNameObject: {},\n signUpPending: false,\n signUpErrors: [],\n relationships: {}\n}\n\nconst users = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchUserIfMissing (store, id) {\n if (!store.getters.findUser(id)) {\n store.dispatch('fetchUser', id)\n }\n },\n fetchUser (store, id) {\n return store.rootState.api.backendInteractor.fetchUser({ id })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserByName (store, name) {\n return store.rootState.api.backendInteractor.fetchUserByName({ name })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserRelationship (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n .then((relationships) => store.commit('updateUserRelationship', relationships))\n }\n },\n fetchUserInLists (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserInLists({ id })\n .then((inLists) => store.commit('updateUserInLists', { id, inLists }))\n }\n },\n fetchBlocks (store) {\n return store.rootState.api.backendInteractor.fetchBlocks()\n .then((blocks) => {\n store.commit('saveBlockIds', map(blocks, 'id'))\n store.commit('addNewUsers', blocks)\n return blocks\n })\n },\n blockUser (store, id) {\n return blockUser(store, id)\n },\n unblockUser (store, id) {\n return unblockUser(store, id)\n },\n removeUserFromFollowers (store, id) {\n return removeUserFromFollowers(store, id)\n },\n blockUsers (store, ids = []) {\n return Promise.all(ids.map(id => blockUser(store, id)))\n },\n unblockUsers (store, ids = []) {\n return Promise.all(ids.map(id => unblockUser(store, id)))\n },\n editUserNote (store, args) {\n return editUserNote(store, args)\n },\n fetchMutes (store) {\n return store.rootState.api.backendInteractor.fetchMutes()\n .then((mutes) => {\n store.commit('saveMuteIds', map(mutes, 'id'))\n store.commit('addNewUsers', mutes)\n return mutes\n })\n },\n muteUser (store, id) {\n return muteUser(store, id)\n },\n unmuteUser (store, id) {\n return unmuteUser(store, id)\n },\n hideReblogs (store, id) {\n return hideReblogs(store, id)\n },\n showReblogs (store, id) {\n return showReblogs(store, id)\n },\n muteUsers (store, ids = []) {\n return Promise.all(ids.map(id => muteUser(store, id)))\n },\n unmuteUsers (store, ids = []) {\n return Promise.all(ids.map(id => unmuteUser(store, id)))\n },\n fetchDomainMutes (store) {\n return store.rootState.api.backendInteractor.fetchDomainMutes()\n .then((domainMutes) => {\n store.commit('saveDomainMutes', domainMutes)\n return domainMutes\n })\n },\n muteDomain (store, domain) {\n return muteDomain(store, domain)\n },\n unmuteDomain (store, domain) {\n return unmuteDomain(store, domain)\n },\n muteDomains (store, domains = []) {\n return Promise.all(domains.map(domain => muteDomain(store, domain)))\n },\n unmuteDomains (store, domain = []) {\n return Promise.all(domain.map(domain => unmuteDomain(store, domain)))\n },\n fetchFriends ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.friendIds)\n return rootState.api.backendInteractor.fetchFriends({ id, maxId })\n .then((friends) => {\n commit('addNewUsers', friends)\n commit('saveFriendIds', { id, friendIds: map(friends, 'id') })\n return friends\n })\n },\n fetchFollowers ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.followerIds)\n return rootState.api.backendInteractor.fetchFollowers({ id, maxId })\n .then((followers) => {\n commit('addNewUsers', followers)\n commit('saveFollowerIds', { id, followerIds: map(followers, 'id') })\n return followers\n })\n },\n clearFriends ({ commit }, userId) {\n commit('clearFriends', userId)\n },\n clearFollowers ({ commit }, userId) {\n commit('clearFollowers', userId)\n },\n subscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.subscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n unsubscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.unsubscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n toggleActivationStatus ({ rootState, commit }, { user }) {\n const api = user.deactivated ? rootState.api.backendInteractor.activateUser : rootState.api.backendInteractor.deactivateUser\n api({ user })\n .then((user) => { const deactivated = !user.is_active; commit('updateActivationStatus', { user, deactivated }) })\n },\n registerPushNotifications (store) {\n const token = store.state.currentUser.credentials\n const vapidPublicKey = store.rootState.instance.vapidPublicKey\n const isEnabled = store.rootState.config.webPushNotifications\n const notificationVisibility = store.rootState.config.notificationVisibility\n\n registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n },\n unregisterPushNotifications (store) {\n const token = store.state.currentUser.credentials\n\n unregisterPushNotifications(token)\n },\n addNewUsers ({ commit }, users) {\n commit('addNewUsers', users)\n },\n addNewStatuses (store, { statuses }) {\n const users = map(statuses, 'user')\n const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', retweetedUsers)\n\n each(statuses, (status) => {\n // Reconnect users to statuses\n store.commit('setUserForStatus', status)\n // Set pinned statuses to user\n store.commit('setPinnedToUser', status)\n })\n each(compact(map(statuses, 'retweeted_status')), (status) => {\n // Reconnect users to retweets\n store.commit('setUserForStatus', status)\n // Set pinned retweets to user\n store.commit('setPinnedToUser', status)\n })\n },\n addNewNotifications (store, { notifications }) {\n const users = map(notifications, 'from_profile')\n const targetUsers = map(notifications, 'target').filter(_ => _)\n const notificationIds = notifications.map(_ => _.id)\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', targetUsers)\n\n const notificationsObject = store.rootState.statuses.notifications.idStore\n const relevantNotifications = Object.entries(notificationsObject)\n .filter(([k, val]) => notificationIds.includes(k))\n .map(([k, val]) => val)\n\n // Reconnect users to notifications\n each(relevantNotifications, (notification) => {\n store.commit('setUserForNotification', notification)\n })\n },\n searchUsers ({ rootState, commit }, { query }) {\n return rootState.api.backendInteractor.searchUsers({ query })\n .then((users) => {\n commit('addNewUsers', users)\n return users\n })\n },\n async signUp (store, userInfo) {\n store.commit('signUpPending')\n\n const rootState = store.rootState\n\n try {\n const data = await rootState.api.backendInteractor.register(\n { params: { ...userInfo } }\n )\n store.commit('signUpSuccess')\n store.commit('setToken', data.access_token)\n store.dispatch('loginUser', data.access_token)\n } catch (e) {\n const errors = e.message\n store.commit('signUpFailure', errors)\n throw e\n }\n },\n async getCaptcha (store) {\n return store.rootState.api.backendInteractor.getCaptcha()\n },\n\n logout (store) {\n const { oauth, instance } = store.rootState\n\n const data = {\n ...oauth,\n commit: store.commit,\n instance: instance.server\n }\n\n return oauthApi.getOrCreateApp(data)\n .then((app) => {\n const params = {\n app,\n instance: data.instance,\n token: oauth.userToken\n }\n\n return oauthApi.revokeToken(params)\n })\n .then(() => {\n store.commit('clearCurrentUser')\n store.dispatch('disconnectFromSocket')\n store.commit('clearToken')\n store.dispatch('stopFetchingTimeline', 'friends')\n store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n store.dispatch('stopFetchingNotifications')\n store.dispatch('stopFetchingLists')\n store.dispatch('stopFetchingFollowRequests')\n store.commit('clearNotifications')\n store.commit('resetStatuses')\n store.dispatch('resetChats')\n store.dispatch('setLastTimeline', 'public-timeline')\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n store.commit('clearServerSideStorage')\n })\n },\n loginUser (store, accessToken) {\n return new Promise((resolve, reject) => {\n const commit = store.commit\n commit('beginLogin')\n store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n .then((data) => {\n if (!data.error) {\n const user = data\n // user.credentials = userCredentials\n user.credentials = accessToken\n user.blockIds = []\n user.muteIds = []\n user.domainMutes = []\n commit('setCurrentUser', user)\n commit('setServerSideStorage', user)\n commit('addNewUsers', [user])\n\n store.dispatch('fetchEmoji')\n\n getNotificationPermission()\n .then(permission => commit('setNotificationPermission', permission))\n\n // Set our new backend interactor\n commit('setBackendInteractor', backendInteractorService(accessToken))\n store.dispatch('pushServerSideStorage')\n\n if (user.token) {\n store.dispatch('setWsToken', user.token)\n\n // Initialize the shout socket.\n store.dispatch('initializeSocket')\n }\n\n const startPolling = () => {\n // Start getting fresh posts.\n store.dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n // Start fetching notifications\n store.dispatch('startFetchingNotifications')\n\n // Start fetching chats\n store.dispatch('startFetchingChats')\n }\n\n store.dispatch('startFetchingLists')\n\n if (user.locked) {\n store.dispatch('startFetchingFollowRequests')\n }\n\n if (store.getters.mergedConfig.useStreamingApi) {\n store.dispatch('fetchTimeline', { timeline: 'friends', since: null })\n store.dispatch('fetchNotifications', { since: null })\n store.dispatch('enableMastoSockets', true).catch((error) => {\n console.error('Failed initializing MastoAPI Streaming socket', error)\n }).then(() => {\n store.dispatch('fetchChats', { latest: true })\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n })\n } else {\n startPolling()\n }\n\n // Get user mutes\n store.dispatch('fetchMutes')\n\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n\n // Fetch our friends\n store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n .then((friends) => commit('addNewUsers', friends))\n } else {\n const response = data.error\n // Authentication failed\n commit('endLogin')\n if (response.status === 401) {\n reject(new Error('Wrong username or password'))\n } else {\n reject(new Error('An error occurred, please try again'))\n }\n }\n commit('endLogin')\n resolve()\n })\n .catch((error) => {\n console.log(error)\n commit('endLogin')\n reject(new Error('Failed to connect to server, try again'))\n })\n })\n }\n }\n}\n\nexport default users\n","import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n if (!chat.lastMessage) return\n if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n const opts = {\n tag: chat.lastMessage.id,\n title: chat.account.name,\n icon: chat.account.profile_image_url,\n body: chat.lastMessage.content\n }\n\n if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n opts.image = chat.lastMessage.attachment.preview_url\n }\n\n showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n const fakeMessage = {\n content,\n chat_id: chatId,\n created_at: new Date(),\n id: `${new Date().getTime()}`,\n attachments,\n account_id: userId,\n idempotency_key: idempotencyKey,\n emojis: [],\n pending: true,\n isNormalized: true\n }\n\n if (attachments[0]) {\n fakeMessage.attachment = attachments[0]\n }\n\n return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst retryTimeout = (multiplier) => 1000 * multiplier\n\nconst api = {\n state: {\n retryMultiplier: 1,\n backendInteractor: backendInteractorService(),\n fetchers: {},\n socket: null,\n mastoUserSocket: null,\n mastoUserSocketStatus: null,\n followRequests: []\n },\n getters: {\n followRequestCount: state => state.followRequests.length\n },\n mutations: {\n setBackendInteractor (state, backendInteractor) {\n state.backendInteractor = backendInteractor\n },\n addFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName] = fetcher\n },\n removeFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName].stop()\n delete state.fetchers[fetcherName]\n },\n setWsToken (state, token) {\n state.wsToken = token\n },\n setSocket (state, socket) {\n state.socket = socket\n },\n setFollowRequests (state, value) {\n state.followRequests = value\n },\n setMastoUserSocketStatus (state, value) {\n state.mastoUserSocketStatus = value\n },\n incrementRetryMultiplier (state) {\n state.retryMultiplier = Math.max(++state.retryMultiplier, 3)\n },\n resetRetryMultiplier (state) {\n state.retryMultiplier = 1\n }\n },\n actions: {\n /**\n * Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n *\n * @param {Boolean} [initial] - whether this enabling happened at boot time or not\n */\n enableMastoSockets (store, initial) {\n const { state, dispatch, commit } = store\n // Do not initialize unless nonexistent or closed\n if (\n state.mastoUserSocket &&\n ![\n WebSocket.CLOSED,\n WebSocket.CLOSING\n ].includes(state.mastoUserSocket.getState())\n ) {\n return\n }\n if (initial) {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING_INITIAL)\n } else {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING)\n }\n return dispatch('startMastoUserSocket')\n },\n disableMastoSockets (store) {\n const { state, dispatch, commit } = store\n if (!state.mastoUserSocket) return\n commit('setMastoUserSocketStatus', WSConnectionStatus.DISABLED)\n return dispatch('stopMastoUserSocket')\n },\n\n // MastoAPI 'User' sockets\n startMastoUserSocket (store) {\n return new Promise((resolve, reject) => {\n try {\n const { state, commit, dispatch, rootState } = store\n const timelineData = rootState.statuses.timelines.friends\n state.mastoUserSocket = state.backendInteractor.startUserSocket({ store })\n state.mastoUserSocket.addEventListener(\n 'message',\n ({ detail: message }) => {\n if (!message) return // pings\n if (message.event === 'notification') {\n dispatch('addNewNotifications', {\n notifications: [message.notification],\n older: false\n })\n } else if (message.event === 'update') {\n dispatch('addNewStatuses', {\n statuses: [message.status],\n userId: false,\n showImmediately: timelineData.visibleStatuses.length === 0,\n timeline: 'friends'\n })\n } else if (message.event === 'status.update') {\n dispatch('addNewStatuses', {\n statuses: [message.status],\n userId: false,\n showImmediately: message.status.id in timelineData.visibleStatusesObject,\n timeline: 'friends'\n })\n } else if (message.event === 'delete') {\n dispatch('deleteStatusById', message.id)\n } else if (message.event === 'pleroma:chat_update') {\n // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n setTimeout(() => {\n dispatch('addChatMessages', {\n chatId: message.chatUpdate.id,\n messages: [message.chatUpdate.lastMessage]\n })\n dispatch('updateChat', { chat: message.chatUpdate })\n maybeShowChatNotification(store, message.chatUpdate)\n }, 100)\n }\n }\n )\n state.mastoUserSocket.addEventListener('open', () => {\n // Do not show notification when we just opened up the page\n if (state.mastoUserSocketStatus !== WSConnectionStatus.STARTING_INITIAL) {\n dispatch('pushGlobalNotice', {\n level: 'success',\n messageKey: 'timeline.socket_reconnected',\n timeout: 5000\n })\n }\n // Stop polling if we were errored or disabled\n if (new Set([\n WSConnectionStatus.ERROR,\n WSConnectionStatus.DISABLED\n ]).has(state.mastoUserSocketStatus)) {\n dispatch('stopFetchingTimeline', { timeline: 'friends' })\n dispatch('stopFetchingNotifications')\n dispatch('stopFetchingChats')\n }\n commit('resetRetryMultiplier')\n commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n })\n state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n console.error('Error in MastoAPI websocket:', error)\n // TODO is this needed?\n dispatch('clearOpenedChats')\n })\n state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n const ignoreCodes = new Set([\n 1000, // Normal (intended) closure\n 1001 // Going away\n ])\n const { code } = closeEvent\n if (ignoreCodes.has(code)) {\n console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n } else {\n console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n setTimeout(() => {\n dispatch('startMastoUserSocket')\n }, retryTimeout(state.retryMultiplier))\n commit('incrementRetryMultiplier')\n if (state.mastoUserSocketStatus !== WSConnectionStatus.ERROR) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.socket_broke',\n messageArgs: [code],\n timeout: 5000\n })\n }\n commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\n }\n dispatch('clearOpenedChats')\n })\n resolve()\n } catch (e) {\n reject(e)\n }\n })\n },\n stopMastoUserSocket ({ state, dispatch }) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n state.mastoUserSocket.close()\n },\n\n // Timelines\n startFetchingTimeline (store, {\n timeline = 'friends',\n tag = false,\n userId = false,\n listId = false\n }) {\n if (store.state.fetchers[timeline]) return\n\n const fetcher = store.state.backendInteractor.startFetchingTimeline({\n timeline, store, userId, listId, tag\n })\n store.commit('addFetcher', { fetcherName: timeline, fetcher })\n },\n stopFetchingTimeline (store, timeline) {\n const fetcher = store.state.fetchers[timeline]\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n },\n fetchTimeline (store, { timeline, ...rest }) {\n store.state.backendInteractor.fetchTimeline({\n store,\n timeline,\n ...rest\n })\n },\n\n // Notifications\n startFetchingNotifications (store) {\n if (store.state.fetchers.notifications) return\n const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n },\n stopFetchingNotifications (store) {\n const fetcher = store.state.fetchers.notifications\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n },\n fetchNotifications (store, { ...rest }) {\n store.state.backendInteractor.fetchNotifications({\n store,\n ...rest\n })\n },\n\n // Follow requests\n startFetchingFollowRequests (store) {\n if (store.state.fetchers.followRequests) return\n const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n },\n stopFetchingFollowRequests (store) {\n const fetcher = store.state.fetchers.followRequests\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n },\n removeFollowRequest (store, request) {\n const requests = store.state.followRequests.filter((it) => it !== request)\n store.commit('setFollowRequests', requests)\n },\n\n // Lists\n startFetchingLists (store) {\n if (store.state.fetchers.lists) return\n const fetcher = store.state.backendInteractor.startFetchingLists({ store })\n store.commit('addFetcher', { fetcherName: 'lists', fetcher })\n },\n stopFetchingLists (store) {\n const fetcher = store.state.fetchers.lists\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'lists', fetcher })\n },\n\n // Pleroma websocket\n setWsToken (store, token) {\n store.commit('setWsToken', token)\n },\n initializeSocket ({ dispatch, commit, state, rootState }) {\n // Set up websocket connection\n const token = state.wsToken\n if (rootState.instance.shoutAvailable && typeof token !== 'undefined' && state.socket === null) {\n const socket = new Socket('/socket', { params: { token } })\n socket.connect()\n\n commit('setSocket', socket)\n dispatch('initializeShout', socket)\n }\n },\n disconnectFromSocket ({ commit, state }) {\n state.socket && state.socket.disconnect()\n commit('setSocket', null)\n }\n }\n}\n\nexport default api\n","import Modal from 'src/components/modal/modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport pleromaTan from 'src/assets/pleromatan_apology.png'\nimport pleromaTanFox from 'src/assets/pleromatan_apology_fox.png'\nimport pleromaTanMask from 'src/assets/pleromatan_apology_mask.png'\nimport pleromaTanFoxMask from 'src/assets/pleromatan_apology_fox_mask.png'\n\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\nlibrary.add(\n faTimes\n)\n\nexport const CURRENT_UPDATE_COUNTER = 1\n\nconst UpdateNotification = {\n data () {\n return {\n showingImage: false,\n pleromaTanVariant: Math.random() > 0.5 ? pleromaTan : pleromaTanFox,\n showingMore: false\n }\n },\n components: {\n Modal\n },\n computed: {\n pleromaTanStyles () {\n const mask = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n return {\n 'shape-outside': 'url(' + mask + ')'\n }\n },\n shouldShow () {\n return !this.$store.state.instance.disableUpdateNotification &&\n this.$store.state.users.currentUser &&\n this.$store.state.serverSideStorage.flagStorage.updateCounter < CURRENT_UPDATE_COUNTER &&\n !this.$store.state.serverSideStorage.prefsStorage.simple.dontShowUpdateNotifs\n }\n },\n methods: {\n toggleShow () {\n this.showingMore = !this.showingMore\n },\n neverShowAgain () {\n this.toggleShow()\n this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n this.$store.commit('setPreference', { path: 'simple.dontShowUpdateNotifs', value: true })\n this.$store.dispatch('pushServerSideStorage')\n },\n dismiss () {\n this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n this.$store.dispatch('pushServerSideStorage')\n }\n },\n mounted () {\n this.contentHeightNoImage = this.$refs.animatedText.scrollHeight\n\n // Workaround to get the text height only after mask loaded. A bit hacky.\n const newImg = new Image()\n newImg.onload = () => {\n setTimeout(() => { this.showingImage = true }, 100)\n }\n newImg.src = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n }\n}\n\nexport default UpdateNotification\n","import { toRaw } from 'vue'\nimport { isEqual, cloneDeep, set, get, clamp, flatten, groupBy, findLastIndex, takeRight, uniqWith } from 'lodash'\nimport { CURRENT_UPDATE_COUNTER } from 'src/components/update_notification/update_notification.js'\n\nexport const VERSION = 1\nexport const NEW_USER_DATE = new Date('2022-08-04') // date of writing this, basically\n\nexport const COMMAND_TRIM_FLAGS = 1000\nexport const COMMAND_TRIM_FLAGS_AND_RESET = 1001\n\nexport const defaultState = {\n // do we need to update data on server?\n dirty: false,\n // storage of flags - stuff that can only be set and incremented\n flagStorage: {\n updateCounter: 0, // Counter for most recent update notification seen\n reset: 0 // special flag that can be used to force-reset all flags, debug purposes only\n // special reset codes:\n // 1000: trim keys to those known by currently running FE\n // 1001: same as above + reset everything to 0\n },\n prefsStorage: {\n _journal: [],\n simple: {\n dontShowUpdateNotifs: false,\n collapseNav: false\n },\n collections: {\n pinnedNavItems: ['home', 'dms', 'chats']\n }\n },\n // raw data\n raw: null,\n // local cache\n cache: null\n}\n\nexport const newUserFlags = {\n ...defaultState.flagStorage,\n updateCounter: CURRENT_UPDATE_COUNTER // new users don't need to see update notification\n}\n\nexport const _moveItemInArray = (array, value, movement) => {\n const oldIndex = array.indexOf(value)\n const newIndex = oldIndex + movement\n const newArray = [...array]\n // remove old\n newArray.splice(oldIndex, 1)\n // add new\n newArray.splice(clamp(newIndex, 0, newArray.length + 1), 0, value)\n return newArray\n}\n\nconst _wrapData = (data, userName) => ({\n ...data,\n _user: userName,\n _timestamp: Date.now(),\n _version: VERSION\n})\n\nconst _checkValidity = (data) => data._timestamp > 0 && data._version > 0\n\nconst _verifyPrefs = (state) => {\n state.prefsStorage = state.prefsStorage || {\n simple: {},\n collections: {}\n }\n Object.entries(defaultState.prefsStorage.simple).forEach(([k, v]) => {\n if (typeof v === 'number' || typeof v === 'boolean') return\n console.warn(`Preference simple.${k} as invalid type, reinitializing`)\n set(state.prefsStorage.simple, k, defaultState.prefsStorage.simple[k])\n })\n Object.entries(defaultState.prefsStorage.collections).forEach(([k, v]) => {\n if (Array.isArray(v)) return\n console.warn(`Preference collections.${k} as invalid type, reinitializing`)\n set(state.prefsStorage.collections, k, defaultState.prefsStorage.collections[k])\n })\n}\n\nexport const _getRecentData = (cache, live) => {\n const result = { recent: null, stale: null, needUpload: false }\n const cacheValid = _checkValidity(cache || {})\n const liveValid = _checkValidity(live || {})\n if (!liveValid && cacheValid) {\n result.needUpload = true\n console.debug('Nothing valid stored on server, assuming cache to be source of truth')\n result.recent = cache\n result.stale = live\n } else if (!cacheValid && liveValid) {\n console.debug('Valid storage on server found, no local cache found, using live as source of truth')\n result.recent = live\n result.stale = cache\n } else if (cacheValid && liveValid) {\n console.debug('Both sources have valid data, figuring things out...')\n if (live._timestamp === cache._timestamp && live._version === cache._version) {\n console.debug('Same version/timestamp on both source, source of truth irrelevant')\n result.recent = cache\n result.stale = live\n } else {\n console.debug('Different timestamp, figuring out which one is more recent')\n if (live._timestamp < cache._timestamp) {\n result.recent = cache\n result.stale = live\n } else {\n result.recent = live\n result.stale = cache\n }\n }\n } else {\n console.debug('Both sources are invalid, start from scratch')\n result.needUpload = true\n }\n return result\n}\n\nexport const _getAllFlags = (recent, stale) => {\n return Array.from(new Set([\n ...Object.keys(toRaw((recent || {}).flagStorage || {})),\n ...Object.keys(toRaw((stale || {}).flagStorage || {}))\n ]))\n}\n\nexport const _mergeFlags = (recent, stale, allFlagKeys) => {\n if (!stale.flagStorage) return recent.flagStorage\n if (!recent.flagStorage) return stale.flagStorage\n return Object.fromEntries(allFlagKeys.map(flag => {\n const recentFlag = recent.flagStorage[flag]\n const staleFlag = stale.flagStorage[flag]\n // use flag that is of higher value\n return [flag, Number((recentFlag > staleFlag ? recentFlag : staleFlag) || 0)]\n }))\n}\n\nconst _mergeJournal = (...journals) => {\n // Ignore invalid journal entries\n const allJournals = flatten(\n journals.map(j => Array.isArray(j) ? j : [])\n ).filter(entry =>\n Object.prototype.hasOwnProperty.call(entry, 'path') &&\n Object.prototype.hasOwnProperty.call(entry, 'operation') &&\n Object.prototype.hasOwnProperty.call(entry, 'args') &&\n Object.prototype.hasOwnProperty.call(entry, 'timestamp')\n )\n const grouped = groupBy(allJournals, 'path')\n const trimmedGrouped = Object.entries(grouped).map(([path, journal]) => {\n // side effect\n journal.sort((a, b) => a.timestamp > b.timestamp ? 1 : -1)\n\n if (path.startsWith('collections')) {\n const lastRemoveIndex = findLastIndex(journal, ({ operation }) => operation === 'removeFromCollection')\n // everything before last remove is unimportant\n let remainder\n if (lastRemoveIndex > 0) {\n remainder = journal.slice(lastRemoveIndex)\n } else {\n // everything else doesn't need trimming\n remainder = journal\n }\n return uniqWith(remainder, (a, b) => {\n if (a.path !== b.path) { return false }\n if (a.operation !== b.operation) { return false }\n if (a.operation === 'addToCollection') {\n return a.args[0] === b.args[0]\n }\n return false\n })\n } else if (path.startsWith('simple')) {\n // Only the last record is important\n return takeRight(journal)\n } else {\n return journal\n }\n })\n return flatten(trimmedGrouped)\n .sort((a, b) => a.timestamp > b.timestamp ? 1 : -1)\n}\n\nexport const _mergePrefs = (recent, stale, allFlagKeys) => {\n if (!stale) return recent\n if (!recent) return stale\n const { _journal: recentJournal, ...recentData } = recent\n const { _journal: staleJournal } = stale\n /** Journal entry format:\n * path: path to entry in prefsStorage\n * timestamp: timestamp of the change\n * operation: operation type\n * arguments: array of arguments, depends on operation type\n *\n * currently only supported operation type is \"set\" which just sets the value\n * to requested one. Intended only to be used with simple preferences (boolean, number)\n * shouldn't be used with collections!\n */\n const resultOutput = { ...recentData }\n const totalJournal = _mergeJournal(staleJournal, recentJournal)\n totalJournal.forEach(({ path, timestamp, operation, command, args }) => {\n if (path.startsWith('_')) {\n console.error(`journal contains entry to edit internal (starts with _) field '${path}', something is incorrect here, ignoring.`)\n return\n }\n switch (operation) {\n case 'set':\n set(resultOutput, path, args[0])\n break\n case 'addToCollection':\n set(resultOutput, path, Array.from(new Set(get(resultOutput, path)).add(args[0])))\n break\n case 'removeFromCollection': {\n const newSet = new Set(get(resultOutput, path))\n newSet.delete(args[0])\n set(resultOutput, path, Array.from(newSet))\n break\n }\n case 'reorderCollection': {\n const [value, movement] = args\n set(resultOutput, path, _moveItemInArray(get(resultOutput, path), value, movement))\n break\n }\n default:\n console.error(`Unknown journal operation: '${operation}', did we forget to run reverse migrations beforehand?`)\n }\n })\n return { ...resultOutput, _journal: totalJournal }\n}\n\nexport const _resetFlags = (totalFlags, knownKeys = defaultState.flagStorage) => {\n let result = { ...totalFlags }\n const allFlagKeys = Object.keys(totalFlags)\n // flag reset functionality\n if (totalFlags.reset >= COMMAND_TRIM_FLAGS && totalFlags.reset <= COMMAND_TRIM_FLAGS_AND_RESET) {\n console.debug('Received command to trim the flags')\n const knownKeysSet = new Set(Object.keys(knownKeys))\n\n // Trim\n result = {}\n allFlagKeys.forEach(flag => {\n if (knownKeysSet.has(flag)) {\n result[flag] = totalFlags[flag]\n }\n })\n\n // Reset\n if (totalFlags.reset === COMMAND_TRIM_FLAGS_AND_RESET) {\n // 1001 - and reset everything to 0\n console.debug('Received command to reset the flags')\n Object.keys(knownKeys).forEach(flag => { result[flag] = 0 })\n }\n } else if (totalFlags.reset > 0 && totalFlags.reset < 9000) {\n console.debug('Received command to reset the flags')\n allFlagKeys.forEach(flag => { result[flag] = 0 })\n }\n result.reset = 0\n return result\n}\n\nexport const _doMigrations = (cache) => {\n if (!cache) return cache\n\n if (cache._version < VERSION) {\n console.debug('Local cached data has older version, seeing if there any migrations that can be applied')\n\n // no migrations right now since we only have one version\n console.debug('No migrations found')\n }\n\n if (cache._version > VERSION) {\n console.debug('Local cached data has newer version, seeing if there any reverse migrations that can be applied')\n\n // no reverse migrations right now but we leave a possibility of loading a hotpatch if need be\n if (window._PLEROMA_HOTPATCH) {\n if (window._PLEROMA_HOTPATCH.reverseMigrations) {\n console.debug('Found hotpatch migration, applying')\n return window._PLEROMA_HOTPATCH.reverseMigrations.call({}, 'serverSideStorage', { from: cache._version, to: VERSION }, cache)\n }\n }\n }\n\n return cache\n}\n\nexport const mutations = {\n clearServerSideStorage (state, userData) {\n state = { ...cloneDeep(defaultState) }\n },\n setServerSideStorage (state, userData) {\n const live = userData.storage\n state.raw = live\n let cache = state.cache\n if (cache && cache._user !== userData.fqn) {\n console.warn('cache belongs to another user! reinitializing local cache!')\n cache = null\n }\n\n cache = _doMigrations(cache)\n\n let { recent, stale, needsUpload } = _getRecentData(cache, live)\n\n const userNew = userData.created_at > NEW_USER_DATE\n const flagsTemplate = userNew ? newUserFlags : defaultState.flagStorage\n let dirty = false\n\n if (recent === null) {\n console.debug(`Data is empty, initializing for ${userNew ? 'new' : 'existing'} user`)\n recent = _wrapData({\n flagStorage: { ...flagsTemplate },\n prefsStorage: { ...defaultState.prefsStorage }\n })\n }\n\n if (!needsUpload && recent && stale) {\n console.debug('Checking if data needs merging...')\n // discarding timestamps and versions\n const { _timestamp: _0, _version: _1, ...recentData } = recent\n const { _timestamp: _2, _version: _3, ...staleData } = stale\n dirty = !isEqual(recentData, staleData)\n console.debug(`Data ${dirty ? 'needs' : 'doesn\\'t need'} merging`)\n }\n\n const allFlagKeys = _getAllFlags(recent, stale)\n let totalFlags\n let totalPrefs\n if (dirty) {\n // Merge the flags\n console.debug('Merging the data...')\n totalFlags = _mergeFlags(recent, stale, allFlagKeys)\n _verifyPrefs(recent)\n _verifyPrefs(stale)\n totalPrefs = _mergePrefs(recent.prefsStorage, stale.prefsStorage)\n } else {\n totalFlags = recent.flagStorage\n totalPrefs = recent.prefsStorage\n }\n\n totalFlags = _resetFlags(totalFlags)\n\n recent.flagStorage = { ...flagsTemplate, ...totalFlags }\n recent.prefsStorage = { ...defaultState.prefsStorage, ...totalPrefs }\n\n state.dirty = dirty || needsUpload\n state.cache = recent\n // set local timestamp to smaller one if we don't have any changes\n if (stale && recent && !state.dirty) {\n state.cache._timestamp = Math.min(stale._timestamp, recent._timestamp)\n }\n state.flagStorage = state.cache.flagStorage\n state.prefsStorage = state.cache.prefsStorage\n },\n setFlag (state, { flag, value }) {\n state.flagStorage[flag] = value\n state.dirty = true\n },\n setPreference (state, { path, value }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n set(state.prefsStorage, path, value)\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'set', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n addCollectionPreference (state, { path, value }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n const collection = new Set(get(state.prefsStorage, path))\n collection.add(value)\n set(state.prefsStorage, path, [...collection])\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'addToCollection', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n removeCollectionPreference (state, { path, value }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n const collection = new Set(get(state.prefsStorage, path))\n collection.delete(value)\n set(state.prefsStorage, path, [...collection])\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'removeFromCollection', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n reorderCollectionPreference (state, { path, value, movement }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n const collection = get(state.prefsStorage, path)\n const newCollection = _moveItemInArray(collection, value, movement)\n set(state.prefsStorage, path, newCollection)\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'arrangeCollection', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n updateCache (state, { username }) {\n state.prefsStorage._journal = _mergeJournal(state.prefsStorage._journal)\n state.cache = _wrapData({\n flagStorage: toRaw(state.flagStorage),\n prefsStorage: toRaw(state.prefsStorage)\n }, username)\n }\n}\n\nconst serverSideStorage = {\n state: {\n ...cloneDeep(defaultState)\n },\n mutations,\n actions: {\n pushServerSideStorage ({ state, rootState, commit }, { force = false } = {}) {\n const needPush = state.dirty || force\n console.log(needPush)\n if (!needPush) return\n commit('updateCache', { username: rootState.users.currentUser.fqn })\n const params = { pleroma_settings_store: { 'pleroma-fe': state.cache } }\n rootState.api.backendInteractor\n .updateProfile({ params })\n .then((user) => {\n commit('setServerSideStorage', user)\n state.dirty = false\n })\n }\n }\n}\n\nexport default serverSideStorage\n","const shout = {\n state: {\n messages: [],\n channel: { state: '' },\n joined: false\n },\n mutations: {\n setChannel (state, channel) {\n state.channel = channel\n },\n addMessage (state, message) {\n state.messages.push(message)\n state.messages = state.messages.slice(-19, 20)\n },\n setMessages (state, messages) {\n state.messages = messages.slice(-19, 20)\n },\n setJoined (state, joined) {\n state.joined = joined\n }\n },\n actions: {\n initializeShout (store, socket) {\n const channel = socket.channel('chat:public')\n channel.joinPush.receive('ok', () => {\n store.commit('setJoined', true)\n })\n channel.onClose(() => {\n store.commit('setJoined', false)\n })\n channel.onError(() => {\n store.commit('setJoined', false)\n })\n channel.on('new_msg', (msg) => {\n store.commit('addMessage', msg)\n })\n channel.on('messages', ({ messages }) => {\n store.commit('setMessages', messages)\n })\n channel.join()\n store.commit('setChannel', channel)\n }\n }\n}\n\nexport default shout\n","const oauth = {\n state: {\n clientId: false,\n clientSecret: false,\n /* App token is authentication for app without any user, used mostly for\n * MastoAPI's registration of new users, stored so that we can fall back to\n * it on logout\n */\n appToken: false,\n /* User token is authentication for app with user, this is for every calls\n * that need authorized user to be successful (i.e. posting, liking etc)\n */\n userToken: false\n },\n mutations: {\n setClientData (state, { clientId, clientSecret }) {\n state.clientId = clientId\n state.clientSecret = clientSecret\n },\n setAppToken (state, token) {\n state.appToken = token\n },\n setToken (state, token) {\n state.userToken = token\n },\n clearToken (state) {\n state.userToken = false\n // state.token is userToken with older name, coming from persistent state\n // let's clear it as well, since it is being used as a fallback of state.userToken\n delete state.token\n }\n },\n getters: {\n getToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token || state.appToken\n },\n getUserToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token\n }\n }\n}\n\nexport default oauth\n","const PASSWORD_STRATEGY = 'password'\nconst TOKEN_STRATEGY = 'token'\n\n// MFA strategies\nconst TOTP_STRATEGY = 'totp'\nconst RECOVERY_STRATEGY = 'recovery'\n\n// initial state\nconst state = {\n settings: {},\n strategy: PASSWORD_STRATEGY,\n initStrategy: PASSWORD_STRATEGY // default strategy from config\n}\n\nconst resetState = (state) => {\n state.strategy = state.initStrategy\n state.settings = {}\n}\n\n// getters\nconst getters = {\n settings: (state, getters) => {\n return state.settings\n },\n requiredPassword: (state, getters, rootState) => {\n return state.strategy === PASSWORD_STRATEGY\n },\n requiredToken: (state, getters, rootState) => {\n return state.strategy === TOKEN_STRATEGY\n },\n requiredTOTP: (state, getters, rootState) => {\n return state.strategy === TOTP_STRATEGY\n },\n requiredRecovery: (state, getters, rootState) => {\n return state.strategy === RECOVERY_STRATEGY\n }\n}\n\n// mutations\nconst mutations = {\n setInitialStrategy (state, strategy) {\n if (strategy) {\n state.initStrategy = strategy\n state.strategy = strategy\n }\n },\n requirePassword (state) {\n state.strategy = PASSWORD_STRATEGY\n },\n requireToken (state) {\n state.strategy = TOKEN_STRATEGY\n },\n requireMFA (state, { settings }) {\n state.settings = settings\n state.strategy = TOTP_STRATEGY // default strategy of MFA\n },\n requireRecovery (state) {\n state.strategy = RECOVERY_STRATEGY\n },\n requireTOTP (state) {\n state.strategy = TOTP_STRATEGY\n },\n abortMFA (state) {\n resetState(state)\n }\n}\n\n// actions\nconst actions = {\n // eslint-disable-next-line camelcase\n async login ({ state, dispatch, commit }, { access_token }) {\n commit('setToken', access_token, { root: true })\n await dispatch('loginUser', access_token, { root: true })\n resetState(state)\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions\n}\n","import fileTypeService from '../services/file_type/file_type.service.js'\nconst supportedTypes = new Set(['image', 'video', 'audio', 'flash'])\n\nconst mediaViewer = {\n state: {\n media: [],\n currentIndex: 0,\n activated: false\n },\n mutations: {\n setMedia (state, media) {\n state.media = media\n },\n setCurrentMedia (state, index) {\n state.activated = true\n state.currentIndex = index\n },\n close (state) {\n state.activated = false\n }\n },\n actions: {\n setMedia ({ commit }, attachments) {\n const media = attachments.filter(attachment => {\n const type = fileTypeService.fileType(attachment.mimetype)\n return supportedTypes.has(type)\n })\n commit('setMedia', media)\n },\n setCurrentMedia ({ commit, state }, current) {\n const index = state.media.indexOf(current)\n commit('setCurrentMedia', index || 0)\n },\n closeMediaViewer ({ commit }) {\n commit('close')\n }\n }\n}\n\nexport default mediaViewer\n","const oauthTokens = {\n state: {\n tokens: []\n },\n actions: {\n fetchTokens ({ rootState, commit }) {\n rootState.api.backendInteractor.fetchOAuthTokens().then((tokens) => {\n commit('swapTokens', tokens)\n })\n },\n revokeToken ({ rootState, commit, state }, id) {\n rootState.api.backendInteractor.revokeOAuthToken({ id }).then((response) => {\n if (response.status === 201) {\n commit('swapTokens', state.tokens.filter(token => token.id !== id))\n }\n })\n }\n },\n mutations: {\n swapTokens (state, tokens) {\n state.tokens = tokens\n }\n }\n}\n\nexport default oauthTokens\n","import filter from 'lodash/filter'\n\nconst reports = {\n state: {\n reportModal: {\n userId: null,\n statuses: [],\n preTickedIds: [],\n activated: false\n },\n reports: {}\n },\n mutations: {\n openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n state.reportModal.userId = userId\n state.reportModal.statuses = statuses\n state.reportModal.preTickedIds = preTickedIds\n state.reportModal.activated = true\n },\n closeUserReportingModal (state) {\n state.reportModal.activated = false\n },\n setReportState (reportsState, { id, state }) {\n reportsState.reports[id].state = state\n },\n addReport (state, report) {\n state.reports[report.id] = report\n }\n },\n actions: {\n openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n const preTickedIds = statusIds\n const statuses = preTickedStatuses.concat(\n filter(rootState.statuses.allStatuses,\n status => status.user.id === userId && !preTickedIds.includes(status.id)\n )\n )\n commit('openUserReportingModal', { userId, statuses, preTickedIds })\n },\n closeUserReportingModal ({ commit }) {\n commit('closeUserReportingModal')\n },\n setReportState ({ commit, dispatch, rootState }, { id, state }) {\n const oldState = rootState.reports.reports[id].state\n commit('setReportState', { id, state })\n rootState.api.backendInteractor.setReportState({ id, state }).catch(e => {\n console.error('Failed to set report state', e)\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'general.generic_error_message',\n messageArgs: [e.message],\n timeout: 5000\n })\n commit('setReportState', { id, state: oldState })\n })\n },\n addReport ({ commit }, report) {\n commit('addReport', report)\n }\n }\n}\n\nexport default reports\n","import { merge } from 'lodash'\n\nconst polls = {\n state: {\n // Contains key = id, value = number of trackers for this poll\n trackedPolls: {},\n pollsObject: {}\n },\n mutations: {\n mergeOrAddPoll (state, poll) {\n const existingPoll = state.pollsObject[poll.id]\n // Make expired-state change trigger re-renders properly\n poll.expired = Date.now() > Date.parse(poll.expires_at)\n if (existingPoll) {\n state.pollsObject[poll.id] = merge(existingPoll, poll)\n } else {\n state.pollsObject[poll.id] = poll\n }\n },\n trackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n state.trackedPolls[pollId] = currentValue + 1\n } else {\n state.trackedPolls[pollId] = 1\n }\n },\n untrackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n state.trackedPolls[pollId] = currentValue - 1\n } else {\n state.trackedPolls[pollId] = 0\n }\n }\n },\n actions: {\n mergeOrAddPoll ({ commit }, poll) {\n commit('mergeOrAddPoll', poll)\n },\n updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n setTimeout(() => {\n if (rootState.polls.trackedPolls[pollId]) {\n dispatch('updateTrackedPoll', pollId)\n }\n }, 30 * 1000)\n commit('mergeOrAddPoll', poll)\n })\n },\n trackPoll ({ rootState, commit, dispatch }, pollId) {\n if (!rootState.polls.trackedPolls[pollId]) {\n setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n }\n commit('trackPoll', pollId)\n },\n untrackPoll ({ commit }, pollId) {\n commit('untrackPoll', pollId)\n },\n votePoll ({ rootState, commit }, { id, pollId, choices }) {\n return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n commit('mergeOrAddPoll', poll)\n return poll\n })\n }\n }\n}\n\nexport default polls\n","const postStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openPostStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closePostStatusModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openPostStatusModal ({ commit }, params) {\n commit('openPostStatusModal', params)\n },\n closePostStatusModal ({ commit }) {\n commit('closePostStatusModal')\n }\n }\n}\n\nexport default postStatus\n","const editStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openEditStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closeEditStatusModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openEditStatusModal ({ commit }, params) {\n commit('openEditStatusModal', params)\n },\n closeEditStatusModal ({ commit }) {\n commit('closeEditStatusModal')\n }\n }\n}\n\nexport default editStatus\n","const statusHistory = {\n state: {\n params: {},\n modalActivated: false\n },\n mutations: {\n openStatusHistoryModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closeStatusHistoryModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openStatusHistoryModal ({ commit }, params) {\n commit('openStatusHistoryModal', params)\n },\n closeStatusHistoryModal ({ commit }) {\n commit('closeStatusHistoryModal')\n }\n }\n}\n\nexport default statusHistory\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n return {\n idIndex: {},\n idempotencyKeyIndex: {},\n messages: [],\n newMessageCount: 0,\n lastSeenMessageId: '0',\n chatId,\n minId: undefined,\n maxId: undefined\n }\n}\n\nconst clear = (storage) => {\n const failedMessageIds = []\n\n for (const message of storage.messages) {\n if (message.error) {\n failedMessageIds.push(message.id)\n } else {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n\n storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n storage.newMessageCount = 0\n storage.lastSeenMessageId = '0'\n storage.minId = undefined\n storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n if (!storage) { return }\n storage.messages = storage.messages.filter(m => m.id !== messageId)\n delete storage.idIndex[messageId]\n\n if (storage.maxId === messageId) {\n const lastMessage = _.maxBy(storage.messages, 'id')\n storage.maxId = lastMessage.id\n }\n\n if (storage.minId === messageId) {\n const firstMessage = _.minBy(storage.messages, 'id')\n storage.minId = firstMessage.id\n }\n}\n\nconst cullOlderMessages = (storage) => {\n const maxIndex = storage.messages.length\n const minIndex = maxIndex - 50\n if (maxIndex <= 50) return\n\n storage.messages = _.sortBy(storage.messages, ['id'])\n storage.minId = storage.messages[minIndex].id\n for (const message of storage.messages) {\n if (message.id < storage.minId) {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n if (!storage) { return }\n const fakeMessage = storage.idIndex[fakeId]\n if (fakeMessage) {\n fakeMessage.error = true\n fakeMessage.pending = false\n if (!isRetry) {\n // Ensure the failed message doesn't stay at the bottom of the list.\n const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n if (lastPersistedMessage) {\n const oldId = fakeMessage.id\n fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[oldId]\n }\n }\n }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n if (!storage) { return }\n for (let i = 0; i < newMessages.length; i++) {\n const message = newMessages[i]\n\n // sanity check\n if (message.chat_id !== storage.chatId) { return }\n\n if (message.fakeId) {\n const fakeMessage = storage.idIndex[message.fakeId]\n if (fakeMessage) {\n // In case the same id exists (chat update before POST response)\n // make sure to remove the older duplicate message.\n if (storage.idIndex[message.id]) {\n delete storage.idIndex[message.id]\n storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n }\n Object.assign(fakeMessage, message, { error: false })\n delete fakeMessage.fakeId\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[message.fakeId]\n\n return\n }\n }\n\n if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n storage.minId = message.id\n }\n\n if (!storage.maxId || message.id > storage.maxId) {\n if (updateMaxId) {\n storage.maxId = message.id\n }\n }\n\n if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n if (storage.lastSeenMessageId < message.id) {\n storage.newMessageCount++\n }\n storage.idIndex[message.id] = message\n storage.messages.push(storage.idIndex[message.id])\n storage.idempotencyKeyIndex[message.idempotency_key] = true\n }\n }\n}\n\nconst isConfirmation = (storage, message) => {\n if (!message.idempotency_key) return\n return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n if (!storage) { return }\n storage.newMessageCount = 0\n storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n if (!storage) { return [] }\n\n const result = []\n const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n const firstMessage = messages[0]\n let previousMessage = messages[messages.length - 1]\n let currentMessageChainId\n\n if (firstMessage) {\n const date = new Date(firstMessage.created_at)\n date.setHours(0, 0, 0, 0)\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n }\n\n let afterDate = false\n\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i]\n const nextMessage = messages[i + 1]\n\n const date = new Date(message.created_at)\n date.setHours(0, 0, 0, 0)\n\n // insert date separator and start a new message chain\n if (previousMessage && previousMessage.date < date) {\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n\n previousMessage.isTail = true\n currentMessageChainId = undefined\n afterDate = true\n }\n\n const object = {\n type: 'message',\n data: message,\n date,\n id: message.id,\n messageChainId: currentMessageChainId\n }\n\n // end a message chian\n if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n object.isTail = true\n currentMessageChainId = undefined\n }\n\n // start a new message chain\n if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n currentMessageChainId = _.uniqueId()\n object.isHead = true\n object.messageChainId = currentMessageChainId\n }\n\n result.push(object)\n previousMessage = object\n afterDate = false\n }\n\n return result\n}\n\nconst ChatService = {\n add,\n empty,\n getView,\n deleteMessage,\n cullOlderMessages,\n resetNewMessageCount,\n clear,\n handleMessageError\n}\n\nexport default ChatService\n","import { reactive } from 'vue'\nimport { find, omitBy, orderBy, sumBy } from 'lodash'\nimport chatService from '../services/chat_service/chat_service.js'\nimport { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { promiseInterval } from '../services/promise_interval/promise_interval.js'\n\nconst emptyChatList = () => ({\n data: [],\n idStore: {}\n})\n\nconst defaultState = {\n chatList: emptyChatList(),\n chatListFetcher: null,\n openedChats: reactive({}),\n openedChatMessageServices: reactive({}),\n fetcher: undefined,\n currentChatId: null,\n lastReadMessageId: null\n}\n\nconst getChatById = (state, id) => {\n return find(state.chatList.data, { id })\n}\n\nconst sortedChatList = (state) => {\n return orderBy(state.chatList.data, ['updated_at'], ['desc'])\n}\n\nconst unreadChatCount = (state) => {\n return sumBy(state.chatList.data, 'unread')\n}\n\nconst chats = {\n state: { ...defaultState },\n getters: {\n currentChat: state => state.openedChats[state.currentChatId],\n currentChatMessageService: state => state.openedChatMessageServices[state.currentChatId],\n findOpenedChatByRecipientId: state => recipientId => find(state.openedChats, c => c.account.id === recipientId),\n sortedChatList,\n unreadChatCount\n },\n actions: {\n // Chat list\n startFetchingChats ({ dispatch, commit }) {\n const fetcher = () => dispatch('fetchChats', { latest: true })\n fetcher()\n commit('setChatListFetcher', {\n fetcher: () => promiseInterval(fetcher, 5000)\n })\n },\n stopFetchingChats ({ commit }) {\n commit('setChatListFetcher', { fetcher: undefined })\n },\n fetchChats ({ dispatch, rootState, commit }, params = {}) {\n return rootState.api.backendInteractor.chats()\n .then(({ chats }) => {\n dispatch('addNewChats', { chats })\n return chats\n })\n },\n addNewChats (store, { chats }) {\n const { commit, dispatch, rootGetters } = store\n const newChatMessageSideEffects = (chat) => {\n maybeShowChatNotification(store, chat)\n }\n commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n },\n updateChat ({ commit }, { chat }) {\n commit('updateChat', { chat })\n },\n\n // Opened Chats\n startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n dispatch('setCurrentChatFetcher', { fetcher })\n },\n setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n commit('setCurrentChatFetcher', { fetcher })\n },\n addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n dispatch('addNewUsers', [chat.account])\n },\n addChatMessages ({ commit }, value) {\n commit('addChatMessages', { commit, ...value })\n },\n resetChatNewMessageCount ({ commit }, value) {\n commit('resetChatNewMessageCount', value)\n },\n clearCurrentChat ({ rootState, commit, dispatch }, value) {\n commit('setCurrentChatId', { chatId: undefined })\n commit('setCurrentChatFetcher', { fetcher: undefined })\n },\n readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n dispatch('resetChatNewMessageCount')\n commit('readChat', { id, lastReadId })\n\n if (isNewMessage) {\n rootState.api.backendInteractor.readChat({ id, lastReadId })\n }\n },\n deleteChatMessage ({ rootState, commit }, value) {\n rootState.api.backendInteractor.deleteChatMessage(value)\n commit('deleteChatMessage', { commit, ...value })\n },\n resetChats ({ commit, dispatch }) {\n dispatch('clearCurrentChat')\n commit('resetChats', { commit })\n },\n clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n commit('clearOpenedChats', { commit })\n },\n handleMessageError ({ commit }, value) {\n commit('handleMessageError', { commit, ...value })\n },\n cullOlderMessages ({ commit }, chatId) {\n commit('cullOlderMessages', chatId)\n }\n },\n mutations: {\n setChatListFetcher (state, { commit, fetcher }) {\n const prevFetcher = state.chatListFetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.chatListFetcher = fetcher && fetcher()\n },\n setCurrentChatFetcher (state, { fetcher }) {\n const prevFetcher = state.fetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.fetcher = fetcher && fetcher()\n },\n addOpenedChat (state, { _dispatch, chat }) {\n state.currentChatId = chat.id\n state.openedChats[chat.id] = chat\n\n if (!state.openedChatMessageServices[chat.id]) {\n state.openedChatMessageServices[chat.id] = chatService.empty(chat.id)\n }\n },\n setCurrentChatId (state, { chatId }) {\n state.currentChatId = chatId\n },\n addNewChats (state, { chats, newChatMessageSideEffects }) {\n chats.forEach((updatedChat) => {\n const chat = getChatById(state, updatedChat.id)\n\n if (chat) {\n const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n if (isNewMessage && chat.unread) {\n newChatMessageSideEffects(updatedChat)\n }\n } else {\n state.chatList.data.push(updatedChat)\n state.chatList.idStore[updatedChat.id] = updatedChat\n }\n })\n },\n updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n const chat = getChatById(state, updatedChat.id)\n if (chat) {\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n }\n if (!chat) { state.chatList.data.unshift(updatedChat) }\n state.chatList.idStore[updatedChat.id] = updatedChat\n },\n deleteChat (state, { _dispatch, id, _rootGetters }) {\n state.chats.data = state.chats.data.filter(conversation =>\n conversation.last_status.id !== id\n )\n state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n },\n resetChats (state, { commit }) {\n state.chatList = emptyChatList()\n state.currentChatId = null\n commit('setChatListFetcher', { fetcher: undefined })\n for (const chatId in state.openedChats) {\n chatService.clear(state.openedChatMessageServices[chatId])\n delete state.openedChats[chatId]\n delete state.openedChatMessageServices[chatId]\n }\n },\n setChatsLoading (state, { value }) {\n state.chats.loading = value\n },\n addChatMessages (state, { chatId, messages, updateMaxId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n }\n },\n deleteChatMessage (state, { chatId, messageId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.deleteMessage(chatMessageService, messageId)\n }\n },\n resetChatNewMessageCount (state, _value) {\n const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n chatService.resetNewMessageCount(chatMessageService)\n },\n // Used when a connection loss occurs\n clearOpenedChats (state) {\n const currentChatId = state.currentChatId\n for (const chatId in state.openedChats) {\n if (currentChatId !== chatId) {\n chatService.clear(state.openedChatMessageServices[chatId])\n delete state.openedChats[chatId]\n delete state.openedChatMessageServices[chatId]\n }\n }\n },\n readChat (state, { id, lastReadId }) {\n state.lastReadMessageId = lastReadId\n const chat = getChatById(state, id)\n if (chat) {\n chat.unread = 0\n }\n },\n handleMessageError (state, { chatId, fakeId, isRetry }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n },\n cullOlderMessages (state, chatId) {\n chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n }\n }\n}\n\nexport default chats\n","const FETCH_ANNOUNCEMENT_INTERVAL_MS = 1000 * 60 * 5\n\nexport const defaultState = {\n announcements: [],\n supportsAnnouncements: true,\n fetchAnnouncementsTimer: undefined\n}\n\nexport const mutations = {\n setAnnouncements (state, announcements) {\n state.announcements = announcements\n },\n setAnnouncementRead (state, { id, read }) {\n const index = state.announcements.findIndex(a => a.id === id)\n\n if (index < 0) {\n return\n }\n\n state.announcements[index].read = read\n },\n setFetchAnnouncementsTimer (state, timer) {\n state.fetchAnnouncementsTimer = timer\n },\n setSupportsAnnouncements (state, supportsAnnouncements) {\n state.supportsAnnouncements = supportsAnnouncements\n }\n}\n\nexport const getters = {\n unreadAnnouncementCount (state, _getters, rootState) {\n if (!rootState.users.currentUser) {\n return 0\n }\n\n const unread = state.announcements.filter(announcement => !(announcement.inactive || announcement.read))\n return unread.length\n }\n}\n\nconst announcements = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchAnnouncements (store) {\n if (!store.state.supportsAnnouncements) {\n return Promise.resolve()\n }\n\n const currentUser = store.rootState.users.currentUser\n const isAdmin = currentUser && currentUser.privileges.includes('announcements_manage_announcements')\n\n const getAnnouncements = async () => {\n if (!isAdmin) {\n return store.rootState.api.backendInteractor.fetchAnnouncements()\n }\n\n const all = await store.rootState.api.backendInteractor.adminFetchAnnouncements()\n const visible = await store.rootState.api.backendInteractor.fetchAnnouncements()\n const visibleObject = visible.reduce((a, c) => {\n a[c.id] = c\n return a\n }, {})\n const getWithinVisible = announcement => visibleObject[announcement.id]\n\n all.forEach(announcement => {\n const visibleAnnouncement = getWithinVisible(announcement)\n if (!visibleAnnouncement) {\n announcement.inactive = true\n } else {\n announcement.read = visibleAnnouncement.read\n }\n })\n\n return all\n }\n\n return getAnnouncements()\n .then(announcements => {\n store.commit('setAnnouncements', announcements)\n })\n .catch(error => {\n // If and only if backend does not support announcements, it would return 404.\n // In this case, silently ignores it.\n if (error && error.statusCode === 404) {\n store.commit('setSupportsAnnouncements', false)\n } else {\n throw error\n }\n })\n },\n markAnnouncementAsRead (store, id) {\n return store.rootState.api.backendInteractor.dismissAnnouncement({ id })\n .then(() => {\n store.commit('setAnnouncementRead', { id, read: true })\n })\n },\n startFetchingAnnouncements (store) {\n if (store.state.fetchAnnouncementsTimer) {\n return\n }\n\n const interval = setInterval(() => store.dispatch('fetchAnnouncements'), FETCH_ANNOUNCEMENT_INTERVAL_MS)\n store.commit('setFetchAnnouncementsTimer', interval)\n\n return store.dispatch('fetchAnnouncements')\n },\n stopFetchingAnnouncements (store) {\n const interval = store.state.fetchAnnouncementsTimer\n store.commit('setFetchAnnouncementsTimer', undefined)\n clearInterval(interval)\n },\n postAnnouncement (store, { content, startsAt, endsAt, allDay }) {\n return store.rootState.api.backendInteractor.postAnnouncement({ content, startsAt, endsAt, allDay })\n .then(() => {\n return store.dispatch('fetchAnnouncements')\n })\n },\n editAnnouncement (store, { id, content, startsAt, endsAt, allDay }) {\n return store.rootState.api.backendInteractor.editAnnouncement({ id, content, startsAt, endsAt, allDay })\n .then(() => {\n return store.dispatch('fetchAnnouncements')\n })\n },\n deleteAnnouncement (store, id) {\n return store.rootState.api.backendInteractor.deleteAnnouncement({ id })\n .then(() => {\n return store.dispatch('fetchAnnouncements')\n })\n }\n }\n}\n\nexport default announcements\n","import merge from 'lodash.merge'\nimport localforage from 'localforage'\nimport { each, get, set, cloneDeep } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n paths.length === 0\n ? state\n : paths.reduce((substate, path) => {\n set(substate, path, get(state, path))\n return substate\n }, {})\n)\n\nconst saveImmedeatelyActions = [\n 'markNotificationsAsSeen',\n 'clearCurrentUser',\n 'setCurrentUser',\n 'setServerSideStorage',\n 'setHighlight',\n 'setOption',\n 'setClientData',\n 'setToken',\n 'clearToken'\n]\n\nconst defaultStorage = (() => {\n return localforage\n})()\n\nexport default function createPersistedState ({\n key = 'vuex-lz',\n paths = [],\n getState = (key, storage) => {\n const value = storage.getItem(key)\n return value\n },\n setState = (key, state, storage) => {\n if (!loaded) {\n console.log('waiting for old state to be loaded...')\n return Promise.resolve()\n } else {\n return storage.setItem(key, state)\n }\n },\n reducer = defaultReducer,\n storage = defaultStorage,\n subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n return getState(key, storage).then((savedState) => {\n return store => {\n try {\n if (savedState !== null && typeof savedState === 'object') {\n // build user cache\n const usersState = savedState.users || {}\n usersState.usersObject = {}\n const users = usersState.users || []\n each(users, (user) => { usersState.usersObject[user.id] = user })\n savedState.users = usersState\n\n store.replaceState(\n merge({}, store.state, savedState)\n )\n }\n loaded = true\n } catch (e) {\n console.log(\"Couldn't load state\")\n console.error(e)\n loaded = true\n }\n subscriber(store)((mutation, state) => {\n try {\n if (saveImmedeatelyActions.includes(mutation.type)) {\n setState(key, reducer(cloneDeep(state), paths), storage)\n .then(success => {\n if (typeof success !== 'undefined') {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { success })\n }\n }\n }, error => {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { error })\n }\n })\n }\n } catch (e) {\n console.log(\"Couldn't persist state:\")\n console.log(e)\n }\n })\n }\n })\n}\n","export default (store) => {\n store.subscribe((mutation, state) => {\n const vapidPublicKey = state.instance.vapidPublicKey\n const webPushNotification = state.config.webPushNotifications\n const permission = state.interface.notificationPermission === 'granted'\n const user = state.users.currentUser\n\n const isUserMutation = mutation.type === 'setCurrentUser'\n const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n if (user && vapidPublicKey && permission && webPushNotification) {\n return store.dispatch('registerPushNotifications')\n } else if (isUserConfigMutation && !webPushNotification) {\n return store.dispatch('unregisterPushNotifications')\n }\n }\n })\n}\n","<template>\n <div\n id=\"app-loaded\"\n :style=\"bgStyle\"\n >\n <div\n id=\"app_bg_wrapper\"\n class=\"app-bg-wrapper\"\n />\n <MobileNav v-if=\"layoutType === 'mobile'\" />\n <DesktopNav\n v-else\n :class=\"navClasses\"\n />\n <Notifications v-if=\"currentUser\" />\n <div\n id=\"content\"\n class=\"app-layout container\"\n :class=\"classes\"\n >\n <div class=\"underlay\" />\n <div\n id=\"sidebar\"\n class=\"column -scrollable\"\n :class=\"{ '-show-scrollbar': showScrollbars }\"\n >\n <user-panel />\n <template v-if=\"layoutType !== 'mobile'\">\n <nav-panel />\n <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n <features-panel v-if=\"!currentUser && showFeaturesPanel\" />\n <who-to-follow-panel v-if=\"currentUser && suggestionsEnabled\" />\n <div id=\"notifs-sidebar\" />\n </template>\n </div>\n <main\n id=\"main-scroller\"\n class=\"column main\"\n :class=\"{ '-full-height': isChats || isListEdit }\"\n >\n <div\n v-if=\"!currentUser\"\n class=\"login-hint panel panel-default\"\n >\n <router-link\n :to=\"{ name: 'login' }\"\n class=\"panel-body\"\n >\n {{ $t(\"login.hint\") }}\n </router-link>\n </div>\n <router-view />\n </main>\n <div\n id=\"notifs-column\"\n class=\"column -scrollable\"\n :class=\"{ '-show-scrollbar': showScrollbars }\"\n />\n </div>\n <MediaModal />\n <shout-panel\n v-if=\"currentUser && shout && !hideShoutbox\"\n :floating=\"true\"\n class=\"floating-shout mobile-hidden\"\n :class=\"{ '-left': shoutboxPosition }\"\n />\n <MobilePostStatusButton />\n <UserReportingModal />\n <PostStatusModal />\n <EditStatusModal v-if=\"editingAvailable\" />\n <StatusHistoryModal v-if=\"editingAvailable\" />\n <SettingsModal />\n <UpdateNotification />\n <GlobalNoticeList />\n </div>\n</template>\n\n<script src=\"./App.js\"></script>\n<style lang=\"scss\" src=\"./App.scss\"></style>\n","<template>\n <aside class=\"user-panel\">\n <div\n v-if=\"signedIn\"\n key=\"user-panel-signed\"\n class=\"panel panel-default signed-in\"\n >\n <UserCard\n :user-id=\"user.id\"\n :hide-bio=\"true\"\n rounded=\"top\"\n />\n <PostStatusForm />\n </div>\n <auth-form\n v-else\n key=\"user-panel\"\n />\n </aside>\n</template>\n\n<script src=\"./user_panel.js\"></script>\n\n<style lang=\"scss\">\n.user-panel .signed-in {\n overflow: visible;\n z-index: 10;\n}\n</style>\n","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.login') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <template v-if=\"isPasswordAuth\">\n <div class=\"form-group\">\n <label for=\"username\">{{ $t('login.username') }}</label>\n <input\n id=\"username\"\n v-model=\"user.username\"\n :disabled=\"loggingIn\"\n class=\"form-control\"\n :placeholder=\"$t('login.placeholder')\"\n >\n </div>\n <div class=\"form-group\">\n <label for=\"password\">{{ $t('login.password') }}</label>\n <input\n id=\"password\"\n ref=\"passwordInput\"\n v-model=\"user.password\"\n :disabled=\"loggingIn\"\n class=\"form-control\"\n type=\"password\"\n >\n </div>\n <div class=\"form-group\">\n <router-link :to=\"{name: 'password-reset'}\">\n {{ $t('password_reset.forgot_password') }}\n </router-link>\n </div>\n </template>\n\n <div\n v-if=\"isTokenAuth\"\n class=\"form-group\"\n >\n <p>{{ $t('login.description') }}</p>\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <router-link\n v-if=\"registrationOpen\"\n :to=\"{name: 'registration'}\"\n class=\"register\"\n >\n {{ $t('login.register') }}\n </router-link>\n </div>\n <button\n :disabled=\"loggingIn\"\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('login.login') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./login_form.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.login-form {\n display: flex;\n flex-direction: column;\n padding: 0.6em;\n\n .btn {\n min-height: 2em;\n width: 10em;\n }\n\n .register {\n flex: 1 1;\n }\n\n .login-bottom {\n margin-top: 1em;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0.5em 0.6em;\n line-height: 24px;\n }\n\n .form-bottom {\n display: flex;\n padding: 0.5em;\n height: 32px;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n}\n</style>\n","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst LoginForm = {\n data: () => ({\n user: {},\n error: false\n }),\n computed: {\n isPasswordAuth () { return this.requiredPassword },\n isTokenAuth () { return this.requiredToken },\n ...mapState({\n registrationOpen: state => state.instance.registrationOpen,\n instance: state => state.instance,\n loggingIn: state => state.users.loggingIn,\n oauth: state => state.oauth\n }),\n ...mapGetters(\n 'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n )\n },\n methods: {\n ...mapMutations('authFlow', ['requireMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n submit () {\n this.isTokenAuth ? this.submitToken() : this.submitPassword()\n },\n submitToken () {\n const { clientId, clientSecret } = this.oauth\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n\n oauthApi.getOrCreateApp(data)\n .then((app) => { oauthApi.login({ ...app, ...data }) })\n },\n submitPassword () {\n const { clientId } = this.oauth\n const data = {\n clientId,\n oauth: this.oauth,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n this.error = false\n\n oauthApi.getOrCreateApp(data).then((app) => {\n oauthApi.getTokenWithCredentials(\n {\n ...app,\n instance: data.instance,\n username: this.user.username,\n password: this.user.password\n }\n ).then((result) => {\n if (result.error) {\n if (result.error === 'mfa_required') {\n this.requireMFA({ settings: result })\n } else if (result.identifier === 'password_reset_required') {\n this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n } else {\n this.error = result.error\n this.focusOnPasswordInput()\n }\n return\n }\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n })\n },\n clearError () { this.error = false },\n focusOnPasswordInput () {\n const passwordInput = this.$refs.passwordInput\n passwordInput.focus()\n passwordInput.setSelectionRange(0, passwordInput.value.length)\n }\n }\n}\n\nexport default LoginForm\n","import { render } from \"./login_form.vue?vue&type=template&id=508f3ec3\"\nimport script from \"./login_form.js?vue&type=script&lang=js\"\nexport * from \"./login_form.js?vue&type=script&lang=js\"\n\nimport \"./login_form.vue?vue&type=style&index=0&id=508f3ec3&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.heading.recovery') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"form-group\">\n <label for=\"code\">{{ $t('login.recovery_code') }}</label>\n <input\n id=\"code\"\n v-model=\"code\"\n class=\"form-control\"\n >\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"requireTOTP\"\n >\n {{ $t('login.enter_two_factor_code') }}\n </button>\n <br>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"abortMFA\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <button\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('general.verify') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n<script src=\"./recovery_form.js\"></script>\n","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst mfa = {\n verifyOTPCode,\n verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyRecoveryCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","import { render } from \"./recovery_form.vue?vue&type=template&id=e18da610\"\nimport script from \"./recovery_form.js?vue&type=script&lang=js\"\nexport * from \"./recovery_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.heading.totp') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"form-group\">\n <label for=\"code\">\n {{ $t('login.authentication_code') }}\n </label>\n <input\n id=\"code\"\n v-model=\"code\"\n class=\"form-control\"\n >\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"requireRecovery\"\n >\n {{ $t('login.enter_recovery_code') }}\n </button>\n <br>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"abortMFA\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <button\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('general.verify') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n size=\"lg\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n<script src=\"./totp_form.js\"></script>\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyOTPCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","import { render } from \"./totp_form.vue?vue&type=template&id=6fb04413\"\nimport script from \"./totp_form.js?vue&type=script&lang=js\"\nexport * from \"./totp_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { h, resolveComponent } from 'vue'\nimport LoginForm from '../login_form/login_form.vue'\nimport MFARecoveryForm from '../mfa_form/recovery_form.vue'\nimport MFATOTPForm from '../mfa_form/totp_form.vue'\nimport { mapGetters } from 'vuex'\n\nconst AuthForm = {\n name: 'AuthForm',\n render () {\n return h(resolveComponent(this.authForm))\n },\n computed: {\n authForm () {\n if (this.requiredTOTP) { return 'MFATOTPForm' }\n if (this.requiredRecovery) { return 'MFARecoveryForm' }\n return 'LoginForm'\n },\n ...mapGetters('authFlow', ['requiredTOTP', 'requiredRecovery'])\n },\n components: {\n MFARecoveryForm,\n MFATOTPForm,\n LoginForm\n }\n}\n\nexport default AuthForm\n","import AuthForm from '../auth_form/auth_form.js'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport { mapState } from 'vuex'\n\nconst UserPanel = {\n computed: {\n signedIn () { return this.user },\n ...mapState({ user: state => state.users.currentUser })\n },\n components: {\n AuthForm,\n PostStatusForm,\n UserCard\n }\n}\n\nexport default UserPanel\n","import { render } from \"./user_panel.vue?vue&type=template&id=1a2cb8e9\"\nimport script from \"./user_panel.js?vue&type=script&lang=js\"\nexport * from \"./user_panel.js?vue&type=script&lang=js\"\n\nimport \"./user_panel.vue?vue&type=style&index=0&id=1a2cb8e9&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"NavPanel\">\n <div class=\"panel panel-default\">\n <div\n v-if=\"!forceExpand\"\n class=\"panel-heading nav-panel-heading\"\n >\n <NavigationPins :limit=\"6\" />\n <div class=\"spacer\" />\n <button\n class=\"button-unstyled\"\n @click=\"toggleCollapse\"\n >\n <FAIcon\n class=\"navigation-chevron\"\n fixed-width\n :icon=\"collapsed ? 'chevron-down' : 'chevron-up'\"\n />\n </button>\n </div>\n <ul\n v-if=\"!collapsed || forceExpand\"\n class=\"panel-body\"\n >\n <NavigationEntry\n v-if=\"currentUser || !privateMode\"\n :show-pin=\"false\"\n :item=\"{ icon: 'stream', label: 'nav.timelines' }\"\n :aria-expanded=\"showTimelines ? 'true' : 'false'\"\n @click=\"toggleTimelines\"\n >\n <FAIcon\n class=\"timelines-chevron\"\n fixed-width\n :icon=\"showTimelines ? 'chevron-up' : 'chevron-down'\"\n />\n </NavigationEntry>\n <div\n v-show=\"showTimelines\"\n class=\"timelines-background\"\n >\n <div class=\"timelines\">\n <NavigationEntry\n v-for=\"item in timelinesItems\"\n :key=\"item.name\"\n :show-pin=\"editMode || forceEditMode\"\n :item=\"item\"\n />\n </div>\n </div>\n <NavigationEntry\n v-if=\"currentUser\"\n :show-pin=\"false\"\n :item=\"{ icon: 'list', label: 'nav.lists' }\"\n :aria-expanded=\"showLists ? 'true' : 'false'\"\n @click=\"toggleLists\"\n >\n <router-link\n :title=\"$t('lists.manage_lists')\"\n class=\"extra-button\"\n :to=\"{ name: 'lists' }\"\n @click.stop\n >\n <FAIcon\n class=\"extra-button\"\n fixed-width\n icon=\"wrench\"\n />\n </router-link>\n <FAIcon\n class=\"timelines-chevron\"\n fixed-width\n :icon=\"showLists ? 'chevron-up' : 'chevron-down'\"\n />\n </NavigationEntry>\n <div\n v-show=\"showLists\"\n class=\"timelines-background\"\n >\n <ListsMenuContent\n :show-pin=\"editMode || forceEditMode\"\n class=\"timelines\"\n />\n </div>\n <NavigationEntry\n v-for=\"item in rootItems\"\n :key=\"item.name\"\n :show-pin=\"editMode || forceEditMode\"\n :item=\"item\"\n />\n <NavigationEntry\n v-if=\"!forceEditMode && currentUser\"\n :show-pin=\"false\"\n :item=\"{ label: editMode ? $t('nav.edit_finish') : $t('nav.edit_pinned'), icon: editMode ? 'check' : 'wrench' }\"\n @click=\"toggleEditMode\"\n />\n </ul>\n </div>\n </div>\n</template>\n\n<script src=\"./nav_panel.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.NavPanel {\n .panel {\n overflow: hidden;\n box-shadow: var(--panelShadow);\n }\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n li {\n position: relative;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n > li {\n &:first-child .menu-item {\n border-top-right-radius: $fallback--panelRadius;\n border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-top-left-radius: $fallback--panelRadius;\n border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child .menu-item {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n\n li:last-child {\n border: none;\n }\n\n .navigation-chevron {\n margin-left: 0.8em;\n margin-right: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-chevron {\n margin-left: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-background {\n padding: 0 0 0 0.6em;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n .timelines {\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n }\n\n .nav-panel-heading {\n // breaks without a unit\n // stylelint-disable-next-line length-zero-no-unit\n --panel-heading-height-padding: 0px;\n }\n}\n</style>\n","<template>\n <OptionalRouterLink\n v-slot=\"{ isActive, href, navigate } = {}\"\n ass=\"ass\"\n :to=\"routeTo\"\n >\n <li\n class=\"NavigationEntry menu-item\"\n :class=\"{ '-active': isActive }\"\n v-bind=\"$attrs\"\n >\n <component\n :is=\"routeTo ? 'a' : 'button'\"\n class=\"main-link button-unstyled\"\n :href=\"href\"\n @click=\"navigate\"\n >\n <span>\n <FAIcon\n v-if=\"item.icon\"\n fixed-width\n class=\"fa-scale-110 menu-icon\"\n :icon=\"item.icon\"\n />\n </span>\n <span\n v-if=\"item.iconLetter\"\n class=\"icon iconLetter fa-scale-110 menu-icon\"\n >{{ item.iconLetter }}\n </span>\n <span class=\"label\">\n {{ item.labelRaw || $t(item.label) }}\n </span>\n </component>\n <slot />\n <div\n v-if=\"item.badgeGetter && getters[item.badgeGetter]\"\n class=\"badge badge-notification\"\n >\n {{ getters[item.badgeGetter] }}\n </div>\n <button\n v-if=\"showPin && currentUser\"\n type=\"button\"\n class=\"button-unstyled extra-button\"\n :title=\"$t(isPinned ? 'general.unpin' : 'general.pin' )\"\n :aria-pressed=\"!!isPinned\"\n @click.stop.prevent=\"togglePin(item.name)\"\n >\n <FAIcon\n v-if=\"showPin && currentUser\"\n fixed-width\n class=\"fa-scale-110\"\n :class=\"{ 'veryfaint': !isPinned(item.name) }\"\n :transform=\"!isPinned(item.name) ? 'rotate-45' : ''\"\n icon=\"thumbtack\"\n />\n </button>\n </li>\n </OptionalRouterLink>\n</template>\n\n<script src=\"./navigation_entry.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.NavigationEntry {\n display: flex;\n box-sizing: border-box;\n align-items: baseline;\n height: 3.5em;\n line-height: 3.5em;\n padding: 0 1em;\n width: 100%;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n .timelines-chevron {\n margin-right: 0;\n }\n\n .main-link {\n flex: 1;\n }\n\n .menu-icon {\n margin-right: 0.8em;\n }\n\n .extra-button {\n width: 3em;\n text-align: center;\n\n &:last-child {\n margin-right: -0.8em;\n }\n }\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n .menu-icon {\n --icon: var(--text, $fallback--icon);\n }\n }\n\n &.-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n .menu-icon {\n --icon: var(--text, $fallback--icon);\n }\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n</style>\n","export const USERNAME_ROUTES = new Set([\n 'bookmarks',\n 'dms',\n 'interactions',\n 'notifications',\n 'chat',\n 'chats',\n 'user-profile'\n])\n\nexport const TIMELINES = {\n home: {\n route: 'friends',\n icon: 'home',\n label: 'nav.home_timeline',\n criteria: ['!private']\n },\n public: {\n route: 'public-timeline',\n anon: true,\n icon: 'users',\n label: 'nav.public_tl',\n criteria: ['!private']\n },\n twkn: {\n route: 'public-external-timeline',\n anon: true,\n icon: 'globe',\n label: 'nav.twkn',\n criteria: ['!private', 'federating']\n },\n bookmarks: {\n route: 'bookmarks',\n icon: 'bookmark',\n label: 'nav.bookmarks'\n },\n favorites: {\n routeObject: { name: 'user-profile', query: { tab: 'favorites' } },\n icon: 'star',\n label: 'user_card.favorites'\n },\n dms: {\n route: 'dms',\n icon: 'envelope',\n label: 'nav.dms'\n }\n}\n\nexport const ROOT_ITEMS = {\n interactions: {\n route: 'interactions',\n icon: 'bell',\n label: 'nav.interactions'\n },\n chats: {\n route: 'chats',\n icon: 'comments',\n label: 'nav.chats',\n badgeGetter: 'unreadChatCount',\n criteria: ['chats']\n },\n friendRequests: {\n route: 'friend-requests',\n icon: 'user-plus',\n label: 'nav.friend_requests',\n criteria: ['lockedUser'],\n badgeGetter: 'followRequestCount'\n },\n about: {\n route: 'about',\n anon: true,\n icon: 'info-circle',\n label: 'nav.about'\n },\n announcements: {\n route: 'announcements',\n icon: 'bullhorn',\n label: 'nav.announcements',\n badgeGetter: 'unreadAnnouncementCount',\n criteria: ['announcements']\n }\n}\n","<template>\n <!-- eslint-disable vue/no-multiple-template-root -->\n <router-link\n v-if=\"to\"\n v-slot=\"props\"\n :to=\"to\"\n custom\n >\n <slot\n v-bind=\"props\"\n />\n </router-link>\n <slot\n v-else\n v-bind=\"{}\"\n />\n</template>\n\n<script>\nexport default {\n props: ['to']\n}\n</script>\n","import { render } from \"./optional_router_link.vue?vue&type=template&id=0ec30c00\"\nimport script from \"./optional_router_link.vue?vue&type=script&lang=js\"\nexport * from \"./optional_router_link.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport { USERNAME_ROUTES } from 'src/components/navigation/navigation.js'\nimport OptionalRouterLink from 'src/components/optional_router_link/optional_router_link.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faThumbtack } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faThumbtack)\n\nconst NavigationEntry = {\n props: ['item', 'showPin'],\n components: {\n OptionalRouterLink\n },\n methods: {\n isPinned (value) {\n return this.pinnedItems.has(value)\n },\n togglePin (value) {\n if (this.isPinned(value)) {\n this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value })\n } else {\n this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value })\n }\n this.$store.dispatch('pushServerSideStorage')\n }\n },\n computed: {\n routeTo () {\n if (!this.item.route && !this.item.routeObject) return null\n let route\n if (this.item.routeObject) {\n route = this.item.routeObject\n } else {\n route = { name: (this.item.anon || this.currentUser) ? this.item.route : this.item.anonRoute }\n }\n if (USERNAME_ROUTES.has(route.name)) {\n route.params = { username: this.currentUser.screen_name, name: this.currentUser.screen_name }\n }\n return route\n },\n getters () {\n return this.$store.getters\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems)\n })\n }\n}\n\nexport default NavigationEntry\n","import { render } from \"./navigation_entry.vue?vue&type=template&id=de2c2c50\"\nimport script from \"./navigation_entry.js?vue&type=script&lang=js\"\nexport * from \"./navigation_entry.js?vue&type=script&lang=js\"\n\nimport \"./navigation_entry.vue?vue&type=style&index=0&id=de2c2c50&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export const filterNavigation = (list = [], { hasChats, hasAnnouncements, isFederating, isPrivate, currentUser }) => {\n return list.filter(({ criteria, anon, anonRoute }) => {\n const set = new Set(criteria || [])\n if (!isFederating && set.has('federating')) return false\n if (!currentUser && isPrivate && set.has('!private')) return false\n if (!currentUser && !(anon || anonRoute)) return false\n if ((!currentUser || !currentUser.locked) && set.has('lockedUser')) return false\n if (!hasChats && set.has('chats')) return false\n if (!hasAnnouncements && set.has('announcements')) return false\n return true\n })\n}\n\nexport const getListEntries = state => state.lists.allLists.map(list => ({\n name: 'list-' + list.id,\n routeObject: { name: 'lists-timeline', params: { id: list.id } },\n labelRaw: list.title,\n iconLetter: list.title[0]\n}))\n","import { mapState } from 'vuex'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport { getListEntries } from 'src/components/navigation/filter.js'\n\nexport const ListsMenuContent = {\n props: [\n 'showPin'\n ],\n components: {\n NavigationEntry\n },\n computed: {\n ...mapState({\n lists: getListEntries,\n currentUser: state => state.users.currentUser,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n })\n }\n}\n\nexport default ListsMenuContent\n","import { render } from \"./lists_menu_content.vue?vue&type=template&id=24f15238\"\nimport script from \"./lists_menu_content.js?vue&type=script&lang=js\"\nexport * from \"./lists_menu_content.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <ul>\n <NavigationEntry\n v-for=\"item in lists\"\n :key=\"item.name\"\n :show-pin=\"showPin\"\n :item=\"item\"\n />\n </ul>\n</template>\n\n<script src=\"./lists_menu_content.js\"></script>\n","<template>\n <span class=\"NavigationPins\">\n <router-link\n v-for=\"item in pinnedList\"\n :key=\"item.name\"\n class=\"pinned-item\"\n :to=\"getRouteTo(item)\"\n :title=\"item.labelRaw || $t(item.label)\"\n >\n <FAIcon\n v-if=\"item.icon\"\n fixed-width\n :icon=\"item.icon\"\n />\n <span\n v-if=\"item.iconLetter\"\n class=\"iconLetter fa-scale-110 fa-old-padding\"\n >{{ item.iconLetter }}</span>\n <div\n v-if=\"item.badgeGetter && getters[item.badgeGetter]\"\n class=\"alert-dot\"\n />\n </router-link>\n </span>\n</template>\n\n<script src=\"./navigation_pins.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.NavigationPins {\n display: flex;\n flex-wrap: wrap;\n overflow: hidden;\n height: 100%;\n\n .alert-dot {\n border-radius: 100%;\n height: 0.5em;\n width: 0.5em;\n position: absolute;\n right: calc(50% - 0.75em);\n top: calc(50% - 0.5em);\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .pinned-item {\n position: relative;\n flex: 1 0 3em;\n min-width: 2em;\n text-align: center;\n overflow: visible;\n box-sizing: border-box;\n height: 100%;\n\n & .svg-inline--fa,\n & .iconLetter {\n margin: 0;\n }\n\n &.router-link-active {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n border-bottom: 4px solid;\n\n & .svg-inline--fa,\n & .iconLetter {\n color: inherit;\n }\n }\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport { TIMELINES, ROOT_ITEMS, USERNAME_ROUTES } from 'src/components/navigation/navigation.js'\nimport { getListEntries, filterNavigation } from 'src/components/navigation/filter.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList\n)\n\nconst NavPanel = {\n props: ['limit'],\n methods: {\n getRouteTo (item) {\n if (item.routeObject) {\n return item.routeObject\n }\n const route = { name: (item.anon || this.currentUser) ? item.route : item.anonRoute }\n if (USERNAME_ROUTES.has(route.name)) {\n route.params = { username: this.currentUser.screen_name }\n }\n return route\n }\n },\n computed: {\n getters () {\n return this.$store.getters\n },\n ...mapState({\n lists: getListEntries,\n currentUser: state => state.users.currentUser,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating,\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems)\n }),\n pinnedList () {\n if (!this.currentUser) {\n return filterNavigation([\n { ...TIMELINES.public, name: 'public' },\n { ...TIMELINES.twkn, name: 'twkn' },\n { ...ROOT_ITEMS.about, name: 'about' }\n ],\n {\n hasChats: this.pleromaChatMessagesAvailable,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n })\n }\n return filterNavigation(\n [\n ...Object\n .entries({ ...TIMELINES })\n .filter(([k]) => this.pinnedItems.has(k))\n .map(([k, v]) => ({ ...v, name: k })),\n ...this.lists.filter((k) => this.pinnedItems.has(k.name)),\n ...Object\n .entries({ ...ROOT_ITEMS })\n .filter(([k]) => this.pinnedItems.has(k))\n .map(([k, v]) => ({ ...v, name: k }))\n ],\n {\n hasChats: this.pleromaChatMessagesAvailable,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n ).slice(0, this.limit)\n }\n }\n}\n\nexport default NavPanel\n","import { render } from \"./navigation_pins.vue?vue&type=template&id=61dbea24\"\nimport script from \"./navigation_pins.js?vue&type=script&lang=js\"\nexport * from \"./navigation_pins.js?vue&type=script&lang=js\"\n\nimport \"./navigation_pins.vue?vue&type=style&index=0&id=61dbea24&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ListsMenuContent from 'src/components/lists_menu/lists_menu_content.vue'\nimport { mapState, mapGetters } from 'vuex'\nimport { TIMELINES, ROOT_ITEMS } from 'src/components/navigation/navigation.js'\nimport { filterNavigation } from 'src/components/navigation/filter.js'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport NavigationPins from 'src/components/navigation/navigation_pins.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList,\n faBullhorn\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList,\n faBullhorn\n)\nconst NavPanel = {\n props: ['forceExpand', 'forceEditMode'],\n created () {\n },\n components: {\n ListsMenuContent,\n NavigationEntry,\n NavigationPins,\n Checkbox\n },\n data () {\n return {\n editMode: false,\n showTimelines: false,\n showLists: false,\n timelinesList: Object.entries(TIMELINES).map(([k, v]) => ({ ...v, name: k })),\n rootList: Object.entries(ROOT_ITEMS).map(([k, v]) => ({ ...v, name: k }))\n }\n },\n methods: {\n toggleTimelines () {\n this.showTimelines = !this.showTimelines\n },\n toggleLists () {\n this.showLists = !this.showLists\n },\n toggleEditMode () {\n this.editMode = !this.editMode\n },\n toggleCollapse () {\n this.$store.commit('setPreference', { path: 'simple.collapseNav', value: !this.collapsed })\n this.$store.dispatch('pushServerSideStorage')\n },\n isPinned (item) {\n return this.pinnedItems.has(item)\n },\n togglePin (item) {\n if (this.isPinned(item)) {\n this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value: item })\n } else {\n this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value: item })\n }\n this.$store.dispatch('pushServerSideStorage')\n }\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating,\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n supportsAnnouncements: state => state.announcements.supportsAnnouncements,\n pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems),\n collapsed: state => state.serverSideStorage.prefsStorage.simple.collapseNav\n }),\n timelinesItems () {\n return filterNavigation(\n Object\n .entries({ ...TIMELINES })\n .map(([k, v]) => ({ ...v, name: k })),\n {\n hasChats: this.pleromaChatMessagesAvailable,\n hasAnnouncements: this.supportsAnnouncements,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n )\n },\n rootItems () {\n return filterNavigation(\n Object\n .entries({ ...ROOT_ITEMS })\n .map(([k, v]) => ({ ...v, name: k })),\n {\n hasChats: this.pleromaChatMessagesAvailable,\n hasAnnouncements: this.supportsAnnouncements,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n )\n },\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n }\n}\n\nexport default NavPanel\n","import { render } from \"./nav_panel.vue?vue&type=template&id=7c761001\"\nimport script from \"./nav_panel.js?vue&type=script&lang=js\"\nexport * from \"./nav_panel.js?vue&type=script&lang=js\"\n\nimport \"./nav_panel.vue?vue&type=style&index=0&id=7c761001&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"instance-specific-panel\">\n <div class=\"panel panel-default\">\n <div class=\"panel-body\">\n <!-- eslint-disable vue/no-v-html -->\n <div v-html=\"instanceSpecificPanelContent\" />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./instance_specific_panel.js\"></script>\n","const InstanceSpecificPanel = {\n computed: {\n instanceSpecificPanelContent () {\n return this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default InstanceSpecificPanel\n","import { render } from \"./instance_specific_panel.vue?vue&type=template&id=707b4e95\"\nimport script from \"./instance_specific_panel.js?vue&type=script&lang=js\"\nexport * from \"./instance_specific_panel.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"features-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background base04\">\n <div class=\"title\">\n {{ $t('features_panel.title') }}\n </div>\n </div>\n <div class=\"panel-body features-panel\">\n <ul>\n <li v-if=\"shout\">\n {{ $t('features_panel.shout') }}\n </li>\n <li v-if=\"pleromaChatMessages\">\n {{ $t('features_panel.pleroma_chat_messages') }}\n </li>\n <li v-if=\"gopher\">\n {{ $t('features_panel.gopher') }}\n </li>\n <li v-if=\"whoToFollow\">\n {{ $t('features_panel.who_to_follow') }}\n </li>\n <li v-if=\"mediaProxy\">\n {{ $t('features_panel.media_proxy') }}\n </li>\n <li>{{ $t('features_panel.scope_options') }}</li>\n <li>{{ $t('features_panel.text_limit') }} = {{ textlimit }}</li>\n <li>{{ $t('features_panel.upload_limit') }} = {{ uploadlimit.num }} {{ $t('upload.file_size_units.' + uploadlimit.unit) }}</li>\n </ul>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./features_panel.js\"></script>\n\n<style lang=\"scss\">\n .features-panel li {\n line-height: 24px;\n }\n</style>\n","import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst FeaturesPanel = {\n computed: {\n shout: function () { return this.$store.state.instance.shoutAvailable },\n pleromaChatMessages: function () { return this.$store.state.instance.pleromaChatMessagesAvailable },\n gopher: function () { return this.$store.state.instance.gopherAvailable },\n whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },\n mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },\n minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },\n textlimit: function () { return this.$store.state.instance.textlimit },\n uploadlimit: function () { return fileSizeFormatService.fileSizeFormat(this.$store.state.instance.uploadlimit) }\n }\n}\n\nexport default FeaturesPanel\n","import { render } from \"./features_panel.vue?vue&type=template&id=76defdfa\"\nimport script from \"./features_panel.js?vue&type=script&lang=js\"\nexport * from \"./features_panel.js?vue&type=script&lang=js\"\n\nimport \"./features_panel.vue?vue&type=style&index=0&id=76defdfa&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"who-to-follow-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background base04\">\n <div class=\"title\">\n {{ $t('who_to_follow.who_to_follow') }}\n </div>\n </div>\n <div class=\"who-to-follow\">\n <p\n v-for=\"user in usersToFollow\"\n :key=\"user.id\"\n class=\"who-to-follow-items\"\n >\n <img :src=\"user.img\">\n <router-link :to=\"userProfileLink(user.id, user.name)\">\n {{ user.name }}\n </router-link><br>\n </p>\n <p class=\"who-to-follow-more\">\n <router-link :to=\"{ name: 'who-to-follow' }\">\n {{ $t('who_to_follow.more') }}\n </router-link>\n </p>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./who_to_follow_panel.js\"></script>\n\n<style lang=\"scss\">\n .who-to-follow * {\n vertical-align: middle;\n }\n\n .who-to-follow img {\n width: 32px;\n height: 32px;\n }\n\n .who-to-follow {\n padding: 0 1em;\n margin: 0;\n }\n\n .who-to-follow-items {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0;\n margin: 1em 0;\n }\n\n .who-to-follow-more {\n padding: 0;\n margin: 1em 0;\n text-align: center;\n }\n</style>\n","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n const shuffled = shuffle(reply)\n\n panel.usersToFollow.forEach((toFollow, index) => {\n const user = shuffled[index]\n const img = user.avatar || this.$store.state.instance.defaultAvatar\n const name = user.acct\n\n toFollow.img = img\n toFollow.name = name\n\n panel.$store.state.api.backendInteractor.fetchUser({ id: name })\n .then((externalUser) => {\n if (!externalUser.error) {\n panel.$store.commit('addNewUsers', [externalUser])\n toFollow.id = externalUser.id\n }\n })\n })\n}\n\nfunction getWhoToFollow (panel) {\n const credentials = panel.$store.state.users.currentUser.credentials\n if (credentials) {\n panel.usersToFollow.forEach(toFollow => {\n toFollow.name = 'Loading...'\n })\n apiService.suggestions({ credentials })\n .then((reply) => {\n showWhoToFollow(panel, reply)\n })\n }\n}\n\nconst WhoToFollowPanel = {\n data: () => ({\n usersToFollow: []\n }),\n computed: {\n user: function () {\n return this.$store.state.users.currentUser.screen_name\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n }\n },\n methods: {\n userProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n user: function (user, oldUser) {\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n },\n mounted:\n function () {\n this.usersToFollow = new Array(3).fill().map(x => (\n {\n img: this.$store.state.instance.defaultAvatar,\n name: '',\n id: 0\n }\n ))\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n}\n\nexport default WhoToFollowPanel\n","import { render } from \"./who_to_follow_panel.vue?vue&type=template&id=f150b2ba\"\nimport script from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\n\nimport \"./who_to_follow_panel.vue?vue&type=style&index=0&id=f150b2ba&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"!collapsed || !floating\"\n class=\"shout-panel\"\n >\n <div class=\"panel panel-default\">\n <div\n class=\"panel-heading timeline-heading\"\n :class=\"{ 'shout-heading': floating }\"\n @click.stop.prevent=\"togglePanel\"\n >\n <div class=\"title\">\n {{ $t('shoutbox.title') }}\n <FAIcon\n v-if=\"floating\"\n icon=\"times\"\n class=\"close-icon\"\n />\n </div>\n </div>\n <div class=\"shout-window\">\n <div\n v-for=\"message in messages\"\n :key=\"message.id\"\n class=\"shout-message\"\n >\n <span class=\"shout-avatar\">\n <img :src=\"message.author.avatar\">\n </span>\n <div class=\"shout-content\">\n <router-link\n class=\"shout-name\"\n :to=\"userProfileLink(message.author)\"\n >\n {{ message.author.username }}\n </router-link>\n <br>\n <span class=\"shout-text\">\n {{ message.text }}\n </span>\n </div>\n </div>\n </div>\n <div class=\"shout-input\">\n <textarea\n v-model=\"currentMessage\"\n class=\"shout-input-textarea\"\n rows=\"1\"\n @keyup.enter=\"submit(currentMessage)\"\n />\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"shout-panel\"\n >\n <div class=\"panel panel-default\">\n <div\n class=\"panel-heading -stub timeline-heading shout-heading\"\n @click.stop.prevent=\"togglePanel\"\n >\n <div class=\"title\">\n <FAIcon\n class=\"icon\"\n icon=\"bullhorn\"\n />\n {{ $t('shoutbox.title') }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./shout_panel.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.floating-shout {\n position: fixed;\n bottom: 0.5em;\n z-index: var(--ZI_popovers);\n max-width: 25em;\n\n &.-left {\n left: 0.5em;\n }\n\n &:not(.-left) {\n right: 0.5em;\n }\n}\n\n.shout-panel {\n .shout-heading {\n cursor: pointer;\n\n .icon {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n margin-right: 0.5em;\n }\n\n .title {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n\n .shout-window {\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 20em;\n }\n\n .shout-window-container {\n height: 100%;\n }\n\n .shout-message {\n display: flex;\n padding: 0.2em 0.5em;\n }\n\n .shout-avatar {\n img {\n height: 24px;\n width: 24px;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n margin-right: 0.5em;\n margin-top: 0.25em;\n }\n }\n\n .shout-input {\n display: flex;\n\n textarea {\n flex: 1;\n margin: 0.6em;\n min-height: 3.5em;\n resize: none;\n }\n }\n\n .shout-panel {\n .title {\n display: flex;\n justify-content: space-between;\n }\n }\n}\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBullhorn,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBullhorn,\n faTimes\n)\n\nconst shoutPanel = {\n props: ['floating'],\n data () {\n return {\n currentMessage: '',\n channel: null,\n collapsed: true\n }\n },\n computed: {\n messages () {\n return this.$store.state.shout.messages\n }\n },\n methods: {\n submit (message) {\n this.$store.state.shout.channel.push('new_msg', { text: message }, 10000)\n this.currentMessage = ''\n },\n togglePanel () {\n this.collapsed = !this.collapsed\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n messages (newVal) {\n const scrollEl = this.$el.querySelector('.chat-window')\n if (!scrollEl) return\n if (scrollEl.scrollTop + scrollEl.offsetHeight + 20 > scrollEl.scrollHeight) {\n this.$nextTick(() => {\n if (!scrollEl) return\n scrollEl.scrollTop = scrollEl.scrollHeight - scrollEl.offsetHeight\n })\n }\n }\n }\n}\n\nexport default shoutPanel\n","import { render } from \"./shout_panel.vue?vue&type=template&id=48f55c04\"\nimport script from \"./shout_panel.js?vue&type=script&lang=js\"\nexport * from \"./shout_panel.js?vue&type=script&lang=js\"\n\nimport \"./shout_panel.vue?vue&type=style&index=0&id=48f55c04&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"showing\"\n class=\"media-modal-view\"\n @backdropClicked=\"hideIfNotSwiped\"\n >\n <SwipeClick\n v-if=\"type === 'image'\"\n ref=\"swipeClick\"\n class=\"modal-image-container\"\n :direction=\"swipeDirection\"\n :threshold=\"swipeThreshold\"\n :disable-click-threshold=\"swipeDisableClickThreshold\"\n @preview-requested=\"handleSwipePreview\"\n @swipe-finished=\"handleSwipeEnd\"\n @swipeless-clicked=\"hide\"\n >\n <PinchZoom\n ref=\"pinchZoom\"\n class=\"modal-image-container-inner\"\n selector=\".modal-image\"\n reach-min-scale-strategy=\"reset\"\n stop-propagate-handled=\"stop-propgate-handled\"\n :allow-pan-min-scale=\"pinchZoomMinScale\"\n :min-scale=\"pinchZoomMinScale\"\n :reset-to-min-scale-limit=\"pinchZoomScaleResetLimit\"\n >\n <img\n :class=\"{ loading }\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n @load=\"onImageLoaded\"\n >\n </PinchZoom>\n </SwipeClick>\n <VideoAttachment\n v-if=\"type === 'video'\"\n class=\"modal-image\"\n :attachment=\"currentMedia\"\n :controls=\"true\"\n />\n <audio\n v-if=\"type === 'audio'\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n controls\n />\n <Flash\n v-if=\"type === 'flash'\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n />\n <button\n v-if=\"canNavigate\"\n :title=\"$t('media_modal.previous')\"\n class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev\"\n @click.stop.prevent=\"goPrev\"\n >\n <FAIcon\n class=\"button-icon arrow-icon\"\n icon=\"chevron-left\"\n />\n </button>\n <button\n v-if=\"canNavigate\"\n :title=\"$t('media_modal.next')\"\n class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--next\"\n @click.stop.prevent=\"goNext\"\n >\n <FAIcon\n class=\"button-icon arrow-icon\"\n icon=\"chevron-right\"\n />\n </button>\n <button\n class=\"modal-view-button modal-view-button-hide\"\n :title=\"$t('media_modal.hide')\"\n @click.stop.prevent=\"hide\"\n >\n <FAIcon\n class=\"button-icon\"\n icon=\"times\"\n />\n </button>\n\n <span\n v-if=\"description\"\n class=\"description\"\n >\n {{ description }}\n </span>\n <span\n class=\"counter\"\n >\n {{ $tc('media_modal.counter', currentIndex + 1, { current: currentIndex + 1, total: media.length }) }}\n </span>\n <span\n v-if=\"loading\"\n class=\"loading-spinner\"\n >\n <FAIcon\n spin\n icon=\"circle-notch\"\n size=\"5x\"\n />\n </span>\n </Modal>\n</template>\n\n<script src=\"./media_modal.js\"></script>\n\n<style lang=\"scss\">\n$modal-view-button-icon-height: 3em;\n$modal-view-button-icon-half-height: calc(#{$modal-view-button-icon-height} / 2);\n$modal-view-button-icon-width: 3em;\n$modal-view-button-icon-margin: 0.5em;\n\n.media-modal-view {\n @keyframes media-fadein {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n .modal-image-container {\n display: flex;\n overflow: hidden;\n align-items: center;\n flex-direction: column;\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n flex-grow: 1;\n justify-content: center;\n\n &-inner {\n width: 100%;\n height: 100%;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n }\n\n .description,\n .counter {\n /* Hardcoded since background is also hardcoded */\n color: white;\n margin-top: 1em;\n text-shadow: 0 0 10px black, 0 0 10px black;\n padding: 0.2em 2em;\n }\n\n .description {\n flex: 0 0 auto;\n overflow-y: auto;\n min-height: 1em;\n max-width: 500px;\n max-height: 9.5em;\n word-break: break-all;\n }\n\n .modal-image {\n max-width: 100%;\n max-height: 100%;\n image-orientation: from-image; // NOTE: only FF supports this\n animation: 0.1s cubic-bezier(0.7, 0, 1, 0.6) media-fadein;\n\n &.loading {\n opacity: 0.5;\n }\n }\n\n .loading-spinner {\n width: 100%;\n height: 100%;\n position: absolute;\n pointer-events: none;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n color: white;\n }\n }\n\n .modal-view-button {\n border: 0;\n padding: 0;\n opacity: 0;\n box-shadow: none;\n background: none;\n appearance: none;\n overflow: visible;\n cursor: pointer;\n transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n\n .button-icon {\n position: absolute;\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n font-size: 1rem;\n line-height: $modal-view-button-icon-height;\n color: #fff;\n text-align: center;\n background-color: rgb(0 0 0 / 30%);\n }\n }\n\n .modal-view-button-arrow {\n position: absolute;\n display: block;\n top: 50%;\n margin-top: $modal-view-button-icon-half-height;\n width: $modal-view-button-icon-width;\n height: $modal-view-button-icon-height;\n\n .arrow-icon {\n position: absolute;\n top: 0;\n line-height: $modal-view-button-icon-height;\n color: #fff;\n text-align: center;\n background-color: rgb(0 0 0 / 30%);\n }\n\n &--prev {\n left: 0;\n\n .arrow-icon {\n left: $modal-view-button-icon-margin;\n }\n }\n\n &--next {\n right: 0;\n\n .arrow-icon {\n right: $modal-view-button-icon-margin;\n }\n }\n }\n\n .modal-view-button-hide {\n position: absolute;\n top: 0;\n right: 0;\n\n .button-icon {\n top: $modal-view-button-icon-margin;\n right: $modal-view-button-icon-margin;\n }\n }\n}\n\n.modal-view.media-modal-view {\n z-index: var(--ZI_media_modal);\n flex-direction: column;\n\n .modal-view-button-arrow,\n .modal-view-button-hide {\n opacity: 0.75;\n\n &:focus,\n &:hover {\n outline: none;\n box-shadow: none;\n }\n\n &:hover {\n opacity: 1;\n }\n }\n\n overflow: hidden;\n}\n</style>\n","import PinchZoom from '@kazvmoe-infra/pinch-zoom-element'\n\nexport default {\n methods: {\n setTransform ({ scale, x, y }) {\n this.$el.setTransform({ scale, x, y })\n }\n },\n created () {\n // Make lint happy\n (() => PinchZoom)()\n }\n}\n","import { render } from \"./pinch_zoom.vue?vue&type=template&id=4608b5bf\"\nimport script from \"./pinch_zoom.js?vue&type=script&lang=js\"\nexport * from \"./pinch_zoom.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <pinch-zoom\n class=\"pinch-zoom-parent\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n >\n <slot />\n </pinch-zoom>\n</template>\n\n<script src=\"./pinch_zoom.js\"></script>\n","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst BUTTON_LEFT = 0\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchCoord = touch => [touch.screenX, touch.screenY]\n\nconst touchEventCoord = e => touchCoord(e.touches[0])\n\nconst pointerEventCoord = e => [e.clientX, e.clientY]\n\nconst vectorLength = v => Math.sqrt(v[0] * v[0] + v[1] * v[1])\n\nconst perpendicular = v => [v[1], -v[0]]\n\nconst dotProduct = (v1, v2) => v1[0] * v2[0] + v1[1] * v2[1]\n\nconst project = (v1, v2) => {\n const scalar = (dotProduct(v1, v2) / dotProduct(v2, v2))\n return [scalar * v2[0], scalar * v2[1]]\n}\n\n// direction: either use the constants above or an arbitrary 2d vector.\n// threshold: how many Px to move from touch origin before checking if the\n// callback should be called.\n// divergentTolerance: a scalar for much of divergent direction we tolerate when\n// above threshold. for example, with 1.0 we only call the callback if\n// divergent component of delta is < 1.0 * direction component of delta.\nconst swipeGesture = (direction, onSwipe, threshold = 30, perpendicularTolerance = 1.0) => {\n return {\n direction,\n onSwipe,\n threshold,\n perpendicularTolerance,\n _startPos: [0, 0],\n _swiping: false\n }\n}\n\nconst beginSwipe = (event, gesture) => {\n gesture._startPos = touchEventCoord(event)\n gesture._swiping = true\n}\n\nconst updateSwipe = (event, gesture) => {\n if (!gesture._swiping) return\n // movement too small\n const delta = deltaCoord(gesture._startPos, touchEventCoord(event))\n if (vectorLength(delta) < gesture.threshold) return\n // movement is opposite from direction\n if (dotProduct(delta, gesture.direction) < 0) return\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, gesture.direction)\n const perpendicularDir = perpendicular(gesture.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * gesture.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) return\n\n gesture.onSwipe()\n gesture._swiping = false\n}\n\nclass SwipeAndClickGesture {\n // swipePreviewCallback(offsets: Array[Number])\n // offsets: the offset vector which the underlying component should move, from the starting position\n // swipeEndCallback(sign: 0|-1|1)\n // sign: if the swipe does not meet the threshold, 0\n // if the swipe meets the threshold in the positive direction, 1\n // if the swipe meets the threshold in the negative direction, -1\n constructor ({\n direction,\n // swipeStartCallback\n swipePreviewCallback,\n swipeEndCallback,\n swipeCancelCallback,\n swipelessClickCallback,\n threshold = 30,\n perpendicularTolerance = 1.0,\n disableClickThreshold = 1\n }) {\n const nop = () => {}\n this.direction = direction\n this.swipePreviewCallback = swipePreviewCallback || nop\n this.swipeEndCallback = swipeEndCallback || nop\n this.swipeCancelCallback = swipeCancelCallback || nop\n this.swipelessClickCallback = swipelessClickCallback || nop\n this.threshold = typeof threshold === 'function' ? threshold : () => threshold\n this.disableClickThreshold = typeof disableClickThreshold === 'function' ? disableClickThreshold : () => disableClickThreshold\n this.perpendicularTolerance = perpendicularTolerance\n this._reset()\n }\n\n _reset () {\n this._startPos = [0, 0]\n this._pointerId = -1\n this._swiping = false\n this._swiped = false\n this._preventNextClick = false\n }\n\n start (event) {\n // Only handle left click\n if (event.button !== BUTTON_LEFT) {\n return\n }\n\n this._startPos = pointerEventCoord(event)\n this._pointerId = event.pointerId\n this._swiping = true\n this._swiped = false\n }\n\n move (event) {\n if (this._swiping && this._pointerId === event.pointerId) {\n this._swiped = true\n\n const coord = pointerEventCoord(event)\n const delta = deltaCoord(this._startPos, coord)\n\n this.swipePreviewCallback(delta)\n }\n }\n\n cancel (event) {\n if (!this._swiping || this._pointerId !== event.pointerId) {\n return\n }\n\n this.swipeCancelCallback()\n }\n\n end (event) {\n if (!this._swiping) {\n return\n }\n\n if (this._pointerId !== event.pointerId) {\n return\n }\n\n this._swiping = false\n\n // movement too small\n const coord = pointerEventCoord(event)\n const delta = deltaCoord(this._startPos, coord)\n\n const sign = (() => {\n if (vectorLength(delta) < this.threshold()) {\n return 0\n }\n // movement is opposite from direction\n const isPositive = dotProduct(delta, this.direction) > 0\n\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, this.direction)\n const perpendicularDir = perpendicular(this.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * this.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) {\n return 0\n }\n\n return isPositive ? 1 : -1\n })()\n\n if (this._swiped) {\n this.swipeEndCallback(sign)\n }\n this._reset()\n // Only a mouse will fire click event when\n // the end point is far from the starting point\n // so for other kinds of pointers do not check\n // whether we have swiped\n if (vectorLength(delta) >= this.disableClickThreshold() && event.pointerType === 'mouse') {\n this._preventNextClick = true\n }\n }\n\n click (event) {\n if (!this._preventNextClick) {\n this.swipelessClickCallback()\n }\n this._reset()\n }\n}\n\nconst GestureService = {\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n swipeGesture,\n beginSwipe,\n updateSwipe,\n SwipeAndClickGesture\n}\n\nexport default GestureService\n","import GestureService from '../../services/gesture_service/gesture_service'\n\n/**\n * props:\n * direction: a vector that indicates the direction of the intended swipe\n * threshold: the minimum distance in pixels the swipe has moved on `direction'\n * for swipe-finished() to have a non-zero sign\n * disableClickThreshold: the minimum distance in pixels for the swipe to\n * not trigger a click\n * perpendicularTolerance: see gesture_service\n *\n * Events:\n * preview-requested(offsets)\n * Emitted when the pointer has moved.\n * offsets: the offsets from the start of the swipe to the current cursor position\n *\n * swipe-canceled()\n * Emitted when the swipe has been canceled due to a pointercancel event.\n *\n * swipe-finished(sign: 0|-1|1)\n * Emitted when the swipe has finished.\n * sign: if the swipe does not meet the threshold, 0\n * if the swipe meets the threshold in the positive direction, 1\n * if the swipe meets the threshold in the negative direction, -1\n *\n * swipeless-clicked()\n * Emitted when there is a click without swipe.\n * This and swipe-finished() cannot be emitted for the same pointerup event.\n */\nconst SwipeClick = {\n props: {\n direction: {\n type: Array\n },\n threshold: {\n type: Function,\n default: () => 30\n },\n disableClickThreshold: {\n type: Function,\n default: () => 1\n },\n perpendicularTolerance: {\n type: Number,\n default: 1.0\n }\n },\n methods: {\n handlePointerDown (event) {\n this.$gesture.start(event)\n },\n handlePointerMove (event) {\n this.$gesture.move(event)\n },\n handlePointerUp (event) {\n this.$gesture.end(event)\n },\n handlePointerCancel (event) {\n this.$gesture.cancel(event)\n },\n handleNativeClick (event) {\n this.$gesture.click(event)\n },\n preview (offsets) {\n this.$emit('preview-requested', offsets)\n },\n end (sign) {\n this.$emit('swipe-finished', sign)\n },\n click () {\n this.$emit('swipeless-clicked')\n },\n cancel () {\n this.$emit('swipe-canceled')\n }\n },\n created () {\n this.$gesture = new GestureService.SwipeAndClickGesture({\n direction: this.direction,\n threshold: this.threshold,\n disableClickThreshold: this.disableClickThreshold,\n perpendicularTolerance: this.perpendicularTolerance,\n swipePreviewCallback: this.preview,\n swipeEndCallback: this.end,\n swipeCancelCallback: this.cancel,\n swipelessClickCallback: this.click\n })\n }\n}\n\nexport default SwipeClick\n","import { render } from \"./swipe_click.vue?vue&type=template&id=4c0f684c\"\nimport script from \"./swipe_click.js?vue&type=script&lang=js\"\nexport * from \"./swipe_click.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-bind=\"$attrs\"\n @pointerdown=\"handlePointerDown\"\n @pointermove=\"handlePointerMove\"\n @pointerup=\"handlePointerUp\"\n @pointercancel=\"handlePointerCancel\"\n @click=\"handleNativeClick\"\n >\n <slot />\n </div>\n</template>\n\n<script src=\"./swipe_click.js\"></script>\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport PinchZoom from '../pinch_zoom/pinch_zoom.vue'\nimport SwipeClick from '../swipe_click/swipe_click.vue'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport Flash from 'src/components/flash/flash.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronLeft,\n faChevronRight,\n faCircleNotch,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronLeft,\n faChevronRight,\n faCircleNotch,\n faTimes\n)\n\nconst MediaModal = {\n components: {\n StillImage,\n VideoAttachment,\n PinchZoom,\n SwipeClick,\n Modal,\n Flash\n },\n data () {\n return {\n loading: false,\n swipeDirection: GestureService.DIRECTION_LEFT,\n swipeThreshold: () => {\n const considerableMoveRatio = 1 / 4\n return window.innerWidth * considerableMoveRatio\n },\n pinchZoomMinScale: 1,\n pinchZoomScaleResetLimit: 1.2\n }\n },\n computed: {\n showing () {\n return this.$store.state.mediaViewer.activated\n },\n media () {\n return this.$store.state.mediaViewer.media\n },\n description () {\n return this.currentMedia.description\n },\n currentIndex () {\n return this.$store.state.mediaViewer.currentIndex\n },\n currentMedia () {\n return this.media[this.currentIndex]\n },\n canNavigate () {\n return this.media.length > 1\n },\n type () {\n return this.currentMedia ? this.getType(this.currentMedia) : null\n },\n swipeDisableClickThreshold () {\n // If there is only one media, allow more mouse movements to close the modal\n // because there is less chance that the user wants to switch to another image\n return () => this.canNavigate ? 1 : 30\n }\n },\n methods: {\n getType (media) {\n return fileTypeService.fileType(media.mimetype)\n },\n hide () {\n // HACK: Closing immediately via a touch will cause the click\n // to be processed on the content below the overlay\n const transitionTime = 100 // ms\n setTimeout(() => {\n this.$store.dispatch('closeMediaViewer')\n }, transitionTime)\n },\n hideIfNotSwiped (event) {\n // If we have swiped over SwipeClick, do not trigger hide\n const comp = this.$refs.swipeClick\n if (!comp) {\n this.hide()\n } else {\n comp.$gesture.click(event)\n }\n },\n goPrev () {\n if (this.canNavigate) {\n const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n const newMedia = this.media[prevIndex]\n if (this.getType(newMedia) === 'image') {\n this.loading = true\n }\n this.$store.dispatch('setCurrentMedia', newMedia)\n }\n },\n goNext () {\n if (this.canNavigate) {\n const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n const newMedia = this.media[nextIndex]\n if (this.getType(newMedia) === 'image') {\n this.loading = true\n }\n this.$store.dispatch('setCurrentMedia', newMedia)\n }\n },\n onImageLoaded () {\n this.loading = false\n },\n handleSwipePreview (offsets) {\n this.$refs.pinchZoom.setTransform({ scale: 1, x: offsets[0], y: 0 })\n },\n handleSwipeEnd (sign) {\n this.$refs.pinchZoom.setTransform({ scale: 1, x: 0, y: 0 })\n if (sign > 0) {\n this.goNext()\n } else if (sign < 0) {\n this.goPrev()\n }\n },\n handleKeyupEvent (e) {\n if (this.showing && e.keyCode === 27) { // escape\n this.hide()\n }\n },\n handleKeydownEvent (e) {\n if (!this.showing) {\n return\n }\n\n if (e.keyCode === 39) { // arrow right\n this.goNext()\n } else if (e.keyCode === 37) { // arrow left\n this.goPrev()\n }\n }\n },\n mounted () {\n window.addEventListener('popstate', this.hide)\n document.addEventListener('keyup', this.handleKeyupEvent)\n document.addEventListener('keydown', this.handleKeydownEvent)\n },\n unmounted () {\n window.removeEventListener('popstate', this.hide)\n document.removeEventListener('keyup', this.handleKeyupEvent)\n document.removeEventListener('keydown', this.handleKeydownEvent)\n }\n}\n\nexport default MediaModal\n","import { render } from \"./media_modal.vue?vue&type=template&id=a080a8e6\"\nimport script from \"./media_modal.js?vue&type=script&lang=js\"\nexport * from \"./media_modal.js?vue&type=script&lang=js\"\n\nimport \"./media_modal.vue?vue&type=style&index=0&id=a080a8e6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"side-drawer-container\"\n :class=\"{ 'side-drawer-container-closed': closed, 'side-drawer-container-open': !closed }\"\n >\n <div\n class=\"side-drawer-darken\"\n :class=\"{ 'side-drawer-darken-closed': closed}\"\n />\n <div\n class=\"side-drawer\"\n :class=\"{'side-drawer-closed': closed}\"\n @touchstart=\"touchStart\"\n @touchmove=\"touchMove\"\n >\n <div\n class=\"side-drawer-heading\"\n @click=\"toggleDrawer\"\n >\n <UserCard\n v-if=\"currentUser\"\n :user-id=\"currentUser.id\"\n :hide-bio=\"true\"\n />\n <div\n v-else\n class=\"side-drawer-logo-wrapper\"\n >\n <img :src=\"logo\">\n <span v-if=\"!hideSitename\">{{ sitename }}</span>\n </div>\n </div>\n <ul>\n <li\n v-if=\"!currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'login' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-in-alt\"\n /> {{ $t(\"login.login\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser || !privateMode\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"timelinesRoute\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"home\"\n /> {{ $t(\"nav.timelines\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'lists' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"list\"\n /> {{ $t(\"nav.lists\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && pleromaChatMessagesAvailable\"\n @click=\"toggleDrawer\"\n >\n <router-link\n :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n style=\"position: relative;\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"comments\"\n /> {{ $t(\"nav.chats\") }}\n <span\n v-if=\"unreadChatCount\"\n class=\"badge badge-notification\"\n >\n {{ unreadChatCount }}\n </span>\n </router-link>\n </li>\n </ul>\n <ul v-if=\"currentUser\">\n <li @click=\"toggleDrawer\">\n <router-link :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bell\"\n /> {{ $t(\"nav.interactions\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser.locked\"\n @click=\"toggleDrawer\"\n >\n <router-link to=\"/friend-requests\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"user-plus\"\n /> {{ $t(\"nav.friend_requests\") }}\n <span\n v-if=\"followRequestCount > 0\"\n class=\"badge badge-notification\"\n >\n {{ followRequestCount }}\n </span>\n </router-link>\n </li>\n <li\n v-if=\"shout\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'shout-panel' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bullhorn\"\n /> {{ $t(\"shoutbox.title\") }}\n </router-link>\n </li>\n </ul>\n <ul>\n <li\n v-if=\"currentUser || !privateMode\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'search' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search\"\n /> {{ $t(\"nav.search\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && suggestionsEnabled\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'who-to-follow' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"user-plus\"\n /> {{ $t(\"nav.who_to_follow\") }}\n </router-link>\n </li>\n <li @click=\"toggleDrawer\">\n <button\n class=\"button-unstyled -link -fullwidth\"\n @click=\"openSettingsModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"cog\"\n /> {{ $t(\"settings.settings\") }}\n </button>\n </li>\n <li @click=\"toggleDrawer\">\n <router-link :to=\"{ name: 'about'}\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"info-circle\"\n /> {{ $t(\"nav.about\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && currentUser.role === 'admin'\"\n @click=\"toggleDrawer\"\n >\n <a\n href=\"/pleroma/admin/#/login-pleroma\"\n target=\"_blank\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n /> {{ $t(\"nav.administration\") }}\n </a>\n </li>\n <li\n v-if=\"currentUser && supportsAnnouncements\"\n @click=\"toggleDrawer\"\n >\n <router-link\n :to=\"{ name: 'announcements' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bullhorn\"\n /> {{ $t(\"nav.announcements\") }}\n <span\n v-if=\"unreadAnnouncementCount\"\n class=\"badge badge-notification\"\n >\n {{ unreadAnnouncementCount }}\n </span>\n </router-link>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'edit-navigation' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"compass\"\n /> {{ $t(\"nav.edit_nav_mobile\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <button\n class=\"button-unstyled -link -fullwidth\"\n @click=\"doLogout\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-out-alt\"\n /> {{ $t(\"login.logout\") }}\n </button>\n </li>\n </ul>\n </div>\n <div\n class=\"side-drawer-click-outside\"\n :class=\"{'side-drawer-click-outside-closed': closed}\"\n @click.stop.prevent=\"toggleDrawer\"\n />\n </div>\n</template>\n\n<script src=\"./side_drawer.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.side-drawer-container {\n position: fixed;\n z-index: var(--ZI_navbar);\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: stretch;\n transition-duration: 0s;\n transition-property: transform;\n}\n\n.side-drawer-container-open {\n transform: translate(0%);\n}\n\n.side-drawer-container-closed {\n transition-delay: 0.35s;\n transform: translate(-100%);\n}\n\n.side-drawer-darken {\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n position: fixed;\n z-index: -1;\n transition: 0.35s;\n transition-property: background-color;\n background-color: rgb(0 0 0 / 50%);\n}\n\n.side-drawer-darken-closed {\n background-color: rgb(0 0 0 / 0%);\n}\n\n.side-drawer-click-outside {\n flex: 1 1 100%;\n}\n\n.side-drawer {\n overflow-x: hidden;\n transition: 0.35s;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n transition-property: transform;\n margin: 0 0 0 -100px;\n padding: 0 0 1em 100px;\n width: 80%;\n max-width: 20em;\n flex: 0 0 80%;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--link;\n color: var(--popoverText, $fallback--link);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --icon: var(--popoverIcon, $fallback--icon);\n\n .badge {\n margin-left: 10px;\n }\n}\n\n.side-drawer-logo-wrapper {\n display: flex;\n align-items: center;\n padding: 0.85em;\n\n img {\n flex: none;\n height: 50px;\n margin-right: 0.85em;\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.side-drawer-click-outside-closed {\n flex: 0 0 0;\n}\n\n.side-drawer-closed {\n transform: translate(-100%);\n}\n\n.side-drawer-heading {\n background: transparent;\n flex-direction: column;\n align-items: stretch;\n display: flex;\n padding: 0;\n margin: 0;\n}\n\n.side-drawer ul {\n list-style: none;\n margin: 0;\n padding: 0;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.side-drawer ul:last-child {\n border: 0;\n}\n\n.side-drawer li {\n padding: 0;\n\n a,\n button {\n box-sizing: border-box;\n display: block;\n height: 3em;\n line-height: 3em;\n padding: 0 0.7em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuPopoverText, $fallback--text);\n\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { USERNAME_ROUTES } from 'src/components/navigation/navigation.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle,\n faCompass,\n faList\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle,\n faCompass,\n faList\n)\n\nconst SideDrawer = {\n props: ['logout'],\n data: () => ({\n closed: true,\n closeGesture: undefined\n }),\n created () {\n this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: { UserCard },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n shout () { return this.$store.state.shout.joined },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n },\n logo () {\n return this.$store.state.instance.logo\n },\n hideSitename () {\n return this.$store.state.instance.hideSitename\n },\n sitename () {\n return this.$store.state.instance.name\n },\n followRequestCount () {\n return this.$store.state.api.followRequests.length\n },\n privateMode () {\n return this.$store.state.instance.private\n },\n federating () {\n return this.$store.state.instance.federating\n },\n timelinesRoute () {\n let name\n if (this.$store.state.interface.lastTimeline) {\n name = this.$store.state.interface.lastTimeline\n }\n name = this.currentUser ? 'friends' : 'public-timeline'\n if (USERNAME_ROUTES.has(name)) {\n return { name, params: { username: this.currentUser.screen_name } }\n } else {\n return { name }\n }\n },\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n supportsAnnouncements: state => state.announcements.supportsAnnouncements\n }),\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n },\n methods: {\n toggleDrawer () {\n this.closed = !this.closed\n },\n doLogout () {\n this.logout()\n this.toggleDrawer()\n },\n touchStart (e) {\n GestureService.beginSwipe(e, this.closeGesture)\n },\n touchMove (e) {\n GestureService.updateSwipe(e, this.closeGesture)\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n\nexport default SideDrawer\n","import { render } from \"./side_drawer.vue?vue&type=template&id=650ad1ba\"\nimport script from \"./side_drawer.js?vue&type=script&lang=js\"\nexport * from \"./side_drawer.js?vue&type=script&lang=js\"\n\nimport \"./side_drawer.vue?vue&type=style&index=0&id=650ad1ba&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { debounce } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faPen\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faPen\n)\n\nconst HIDDEN_FOR_PAGES = new Set([\n 'chats',\n 'chat',\n 'lists-edit'\n])\n\nconst MobilePostStatusButton = {\n data () {\n return {\n hidden: false,\n scrollingDown: false,\n inputActive: false,\n oldScrollPos: 0,\n amountScrolled: 0\n }\n },\n created () {\n if (this.autohideFloatingPostButton) {\n this.activateFloatingPostButtonAutohide()\n }\n window.addEventListener('resize', this.handleOSK)\n },\n unmounted () {\n if (this.autohideFloatingPostButton) {\n this.deactivateFloatingPostButtonAutohide()\n }\n window.removeEventListener('resize', this.handleOSK)\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isHidden () {\n if (HIDDEN_FOR_PAGES.has(this.$route.name)) { return true }\n\n return this.autohideFloatingPostButton && (this.hidden || this.inputActive)\n },\n isPersistent () {\n return !!this.$store.getters.mergedConfig.alwaysShowNewPostButton\n },\n autohideFloatingPostButton () {\n return !!this.$store.getters.mergedConfig.autohideFloatingPostButton\n }\n },\n watch: {\n autohideFloatingPostButton: function (isEnabled) {\n if (isEnabled) {\n this.activateFloatingPostButtonAutohide()\n } else {\n this.deactivateFloatingPostButtonAutohide()\n }\n }\n },\n methods: {\n activateFloatingPostButtonAutohide () {\n window.addEventListener('scroll', this.handleScrollStart)\n window.addEventListener('scroll', this.handleScrollEnd)\n },\n deactivateFloatingPostButtonAutohide () {\n window.removeEventListener('scroll', this.handleScrollStart)\n window.removeEventListener('scroll', this.handleScrollEnd)\n },\n openPostForm () {\n this.$store.dispatch('openPostStatusModal')\n },\n handleOSK () {\n // This is a big hack: we're guessing from changed window sizes if the\n // on-screen keyboard is active or not. This is only really important\n // for phones in portrait mode and it's more important to show the button\n // in normal scenarios on all phones, than it is to hide it when the\n // keyboard is active.\n // Guesswork based on https://www.mydevice.io/#compare-devices\n\n // for example, iphone 4 and android phones from the same time period\n const smallPhone = window.innerWidth < 350\n const smallPhoneKbOpen = smallPhone && window.innerHeight < 345\n\n const biggerPhone = !smallPhone && window.innerWidth < 450\n const biggerPhoneKbOpen = biggerPhone && window.innerHeight < 560\n if (smallPhoneKbOpen || biggerPhoneKbOpen) {\n this.inputActive = true\n } else {\n this.inputActive = false\n }\n },\n handleScrollStart: debounce(function () {\n if (window.scrollY > this.oldScrollPos) {\n this.hidden = true\n } else {\n this.hidden = false\n }\n this.oldScrollPos = window.scrollY\n }, 100, { leading: true, trailing: false }),\n\n handleScrollEnd: debounce(function () {\n this.hidden = false\n this.oldScrollPos = window.scrollY\n }, 100, { leading: false, trailing: true })\n }\n}\n\nexport default MobilePostStatusButton\n","import { render } from \"./mobile_post_status_button.vue?vue&type=template&id=6c0a4c69\"\nimport script from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\nexport * from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\n\nimport \"./mobile_post_status_button.vue?vue&type=style&index=0&id=6c0a4c69&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n v-if=\"isLoggedIn\"\n class=\"MobilePostButton button-default new-status-button\"\n :class=\"{ 'hidden': isHidden, 'always-show': isPersistent }\"\n :title=\"$t('post_status.new_status')\"\n @click=\"openPostForm\"\n >\n <FAIcon icon=\"pen\" />\n </button>\n</template>\n\n<script src=\"./mobile_post_status_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.MobilePostButton {\n &.button-default {\n width: 5em;\n height: 5em;\n border-radius: 100%;\n position: fixed;\n bottom: 1.5em;\n right: 1.5em;\n // TODO: this needs its own color, it has to stand out enough and link color\n // is not very optimal for this particular use.\n background-color: $fallback--fg;\n background-color: var(--btn, $fallback--fg);\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 2px 2px rgb(0 0 0 / 30%), 0 4px 6px rgb(0 0 0 / 30%);\n z-index: 10;\n transition: 0.35s transform;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n }\n\n &.hidden {\n transform: translateY(150%);\n }\n\n svg {\n font-size: 1.5em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n@media all and (min-width: 801px) {\n .new-status-button:not(.always-show) {\n display: none;\n }\n}\n\n</style>\n","<template>\n <div\n class=\"MobileNav\"\n >\n <nav\n id=\"nav\"\n class=\"mobile-nav\"\n @click=\"scrollToTop()\"\n >\n <div class=\"item\">\n <button\n class=\"button-unstyled mobile-nav-button\"\n :title=\"$t('nav.mobile_sidebar')\"\n :aria-expanaded=\"$refs.sideDrawer && !$refs.sideDrawer.closed\"\n @click.stop.prevent=\"toggleMobileSidebar()\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bars\"\n />\n <div\n v-if=\"(unreadChatCount && !chatsPinned) || unreadAnnouncementCount\"\n class=\"alert-dot\"\n />\n </button>\n <NavigationPins class=\"pins\" />\n </div> <div class=\"item right\">\n <button\n v-if=\"currentUser\"\n class=\"button-unstyled mobile-nav-button\"\n :title=\"unseenNotificationsCount ? $t('nav.mobile_notifications_unread_active') : $t('nav.mobile_notifications')\"\n @click.stop.prevent=\"openMobileNotifications()\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bell\"\n />\n <div\n v-if=\"unseenNotificationsCount\"\n class=\"alert-dot\"\n />\n </button>\n </div>\n </nav>\n <aside\n v-if=\"currentUser\"\n class=\"mobile-notifications-drawer\"\n :class=\"{ '-closed': !notificationsOpen }\"\n @touchstart.stop=\"notificationsTouchStart\"\n @touchmove.stop=\"notificationsTouchMove\"\n >\n <div class=\"mobile-notifications-header\">\n <span class=\"title\">{{ $t('notifications.notifications') }}</span>\n <span class=\"spacer\" />\n <button\n v-if=\"notificationsAtTop\"\n class=\"button-unstyled mobile-nav-button\"\n :title=\"$t('general.scroll_to_top')\"\n @click.stop.prevent=\"scrollMobileNotificationsToTop\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon icon=\"arrow-up\" />\n <FAIcon\n icon=\"minus\"\n transform=\"up-7\"\n />\n </FALayers>\n </button>\n <button\n class=\"button-unstyled mobile-nav-button\"\n :title=\"$t('nav.mobile_notifications_close')\"\n @click.stop.prevent=\"closeMobileNotifications(true)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n <div\n id=\"mobile-notifications\"\n ref=\"mobileNotifications\"\n class=\"mobile-notifications\"\n @scroll=\"onScroll\"\n />\n </aside>\n <SideDrawer\n ref=\"sideDrawer\"\n :logout=\"logout\"\n />\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmLogout\"\n :title=\"$t('login.logout_confirm_title')\"\n :confirm-text=\"$t('login.logout_confirm_accept_button')\"\n :cancel-text=\"$t('login.logout_confirm_cancel_button')\"\n @accepted=\"doLogout\"\n @cancelled=\"hideConfirmLogout\"\n >\n {{ $t('login.logout_confirm') }}\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./mobile_nav.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.MobileNav {\n z-index: var(--ZI_navbar);\n\n .mobile-nav {\n display: grid;\n line-height: var(--navbar-height);\n grid-template-rows: 50px;\n grid-template-columns: 2fr auto;\n width: 100%;\n box-sizing: border-box;\n\n a {\n color: var(--topBarLink, $fallback--link);\n }\n }\n\n .mobile-inner-nav {\n width: 100%;\n display: flex;\n align-items: center;\n }\n\n .mobile-nav-button {\n display: inline-block;\n text-align: center;\n padding: 0 1em;\n position: relative;\n cursor: pointer;\n }\n\n .site-name {\n padding: 0 0.3em;\n display: inline-block;\n }\n\n .item {\n /* moslty just to get rid of extra whitespaces */\n display: flex;\n }\n\n .alert-dot {\n border-radius: 100%;\n height: 8px;\n width: 8px;\n position: absolute;\n left: calc(50% - 4px);\n top: calc(50% - 4px);\n margin-left: 6px;\n margin-top: -6px;\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .mobile-notifications-drawer {\n width: 100%;\n height: 100vh;\n overflow-x: hidden;\n position: fixed;\n top: 0;\n left: 0;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n transition-property: transform;\n transition-duration: 0.25s;\n transform: translateX(0);\n z-index: var(--ZI_navbar);\n -webkit-overflow-scrolling: touch;\n\n &.-closed {\n transform: translateX(100%);\n box-shadow: none;\n }\n }\n\n .mobile-notifications-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: calc(var(--ZI_navbar) + 100);\n width: 100%;\n height: 50px;\n line-height: 50px;\n position: absolute;\n color: var(--topBarText);\n background-color: $fallback--fg;\n background-color: var(--topBar, $fallback--fg);\n box-shadow: 0 0 4px rgb(0 0 0 / 60%);\n box-shadow: var(--topBarShadow);\n\n .spacer {\n flex: 1;\n }\n\n .title {\n font-size: 1.3em;\n margin-left: 0.6em;\n }\n }\n\n .pins {\n flex: 1;\n\n .pinned-item {\n flex-grow: 1;\n }\n }\n\n .mobile-notifications {\n margin-top: 50px;\n width: 100vw;\n height: calc(100vh - var(--navbar-height));\n overflow-x: hidden;\n overflow-y: scroll;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .notifications {\n padding: 0;\n border-radius: 0;\n box-shadow: none;\n\n .panel {\n border-radius: 0;\n margin: 0;\n box-shadow: none;\n }\n\n .panel::after {\n border-radius: 0;\n }\n\n .panel .panel-heading {\n border-radius: 0;\n box-shadow: none;\n }\n }\n }\n\n .confirm-modal.dark-overlay {\n &::before {\n z-index: 3000;\n }\n\n .dialog-modal.panel {\n z-index: 3001;\n }\n }\n}\n\n</style>\n","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport NavigationPins from 'src/components/navigation/navigation_pins.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faBell,\n faBars,\n faArrowUp,\n faMinus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faBell,\n faBars,\n faArrowUp,\n faMinus\n)\n\nconst MobileNav = {\n components: {\n SideDrawer,\n Notifications,\n NavigationPins,\n ConfirmModal\n },\n data: () => ({\n notificationsCloseGesture: undefined,\n notificationsOpen: false,\n notificationsAtTop: true,\n showingConfirmLogout: false\n }),\n created () {\n this.notificationsCloseGesture = GestureService.swipeGesture(\n GestureService.DIRECTION_RIGHT,\n () => this.closeMobileNotifications(true),\n 50\n )\n },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n hideSitename () { return this.$store.state.instance.hideSitename },\n sitename () { return this.$store.state.instance.name },\n isChat () {\n return this.$route.name === 'chat'\n },\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount']),\n chatsPinned () {\n return new Set(this.$store.state.serverSideStorage.prefsStorage.collections.pinnedNavItems).has('chats')\n },\n shouldConfirmLogout () {\n return this.$store.getters.mergedConfig.modalOnLogout\n },\n ...mapGetters(['unreadChatCount'])\n },\n methods: {\n toggleMobileSidebar () {\n this.$refs.sideDrawer.toggleDrawer()\n },\n openMobileNotifications () {\n this.notificationsOpen = true\n },\n closeMobileNotifications (markRead) {\n if (this.notificationsOpen) {\n // make sure to mark notifs seen only when the notifs were open and not\n // from close-calls.\n this.notificationsOpen = false\n if (markRead) {\n this.markNotificationsAsSeen()\n }\n }\n },\n notificationsTouchStart (e) {\n GestureService.beginSwipe(e, this.notificationsCloseGesture)\n },\n notificationsTouchMove (e) {\n GestureService.updateSwipe(e, this.notificationsCloseGesture)\n },\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n scrollMobileNotificationsToTop () {\n this.$refs.mobileNotifications.scrollTo(0, 0)\n },\n showConfirmLogout () {\n this.showingConfirmLogout = true\n },\n hideConfirmLogout () {\n this.showingConfirmLogout = false\n },\n logout () {\n if (!this.shouldConfirmLogout) {\n this.doLogout()\n } else {\n this.showConfirmLogout()\n }\n },\n doLogout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n this.hideConfirmLogout()\n },\n markNotificationsAsSeen () {\n // this.$refs.notifications.markAsSeen()\n this.$store.dispatch('markNotificationsAsSeen')\n },\n onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {\n this.notificationsAtTop = scrollTop > 0\n if (scrollTop + clientHeight >= scrollHeight) {\n this.$refs.notifications.fetchOlderNotifications()\n }\n }\n },\n watch: {\n $route () {\n // handles closing notificaitons when you press any router-link on the\n // notifications.\n this.closeMobileNotifications()\n }\n }\n}\n\nexport default MobileNav\n","import { render } from \"./mobile_nav.vue?vue&type=template&id=06094f09\"\nimport script from \"./mobile_nav.js?vue&type=script&lang=js\"\nexport * from \"./mobile_nav.js?vue&type=script&lang=js\"\n\nimport \"./mobile_nav.vue?vue&type=style&index=0&id=06094f09&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <nav\n id=\"nav\"\n class=\"DesktopNav\"\n :class=\"{ '-logoLeft': logoLeft }\"\n @click=\"scrollToTop()\"\n >\n <div class=\"inner-nav\">\n <div class=\"item sitename\">\n <router-link\n v-if=\"!hideSitename\"\n class=\"site-name\"\n :to=\"{ name: 'root' }\"\n active-class=\"home\"\n >\n {{ sitename }}\n </router-link>\n </div>\n <router-link\n class=\"logo\"\n :to=\"{ name: 'root' }\"\n :style=\"logoBgStyle\"\n :title=\"sitename\"\n >\n <div\n class=\"mask\"\n :style=\"logoMaskStyle\"\n />\n <img\n :src=\"logo\"\n :style=\"logoStyle\"\n >\n </router-link>\n <div class=\"item right actions\">\n <search-bar\n v-if=\"currentUser || !privateMode\"\n @toggled=\"onSearchBarToggled\"\n @click.stop\n />\n <button\n class=\"button-unstyled nav-icon\"\n :title=\"$t('nav.preferences')\"\n @click.stop=\"openSettingsModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"cog\"\n />\n </button>\n <a\n v-if=\"currentUser && currentUser.role === 'admin'\"\n href=\"/pleroma/admin/#/login-pleroma\"\n class=\"nav-icon\"\n target=\"_blank\"\n :title=\"$t('nav.administration')\"\n @click.stop\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n />\n </a>\n <span class=\"spacer\" />\n <button\n v-if=\"currentUser\"\n class=\"button-unstyled nav-icon\"\n :title=\"$t('login.logout')\"\n @click.stop.prevent=\"logout\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-out-alt\"\n />\n </button>\n </div>\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmLogout\"\n :title=\"$t('login.logout_confirm_title')\"\n :confirm-text=\"$t('login.logout_confirm_accept_button')\"\n :cancel-text=\"$t('login.logout_confirm_cancel_button')\"\n @accepted=\"doLogout\"\n @cancelled=\"hideConfirmLogout\"\n >\n {{ $t('login.logout_confirm') }}\n </confirm-modal>\n </teleport>\n </nav>\n</template>\n<script src=\"./desktop_nav.js\"></script>\n\n<style src=\"./desktop_nav.scss\" lang=\"scss\"></style>\n","<template>\n <div\n class=\"SearchBar\"\n :class=\"{ '-expanded': !hidden }\"\n >\n <button\n v-if=\"hidden\"\n class=\"button-unstyled nav-icon\"\n :title=\"$t('nav.search')\"\n type=\"button\"\n :aria-expanded=\"!hidden\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </button>\n <template v-else>\n <input\n id=\"search-bar-input\"\n ref=\"searchInput\"\n v-model=\"searchTerm\"\n class=\"search-bar-input\"\n :placeholder=\"$t('nav.search')\"\n type=\"text\"\n @keyup.enter=\"find(searchTerm)\"\n >\n <button\n class=\"button-default search-button\"\n type=\"submit\"\n :title=\"$t('nav.search')\"\n @click=\"find(searchTerm)\"\n >\n <FAIcon\n fixed-width\n icon=\"search\"\n />\n </button>\n <button\n class=\"button-unstyled cancel-search\"\n type=\"button\"\n :title=\"$t('nav.search_close')\"\n :aria-expanded=\"!hidden\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n class=\"cancel-icon fa-scale-110 fa-old-padding\"\n />\n </button>\n <span class=\"spacer\" />\n <span class=\"spacer\" />\n </template>\n </div>\n</template>\n\n<script src=\"./search_bar.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.SearchBar {\n display: inline-flex;\n align-items: baseline;\n vertical-align: baseline;\n justify-content: flex-end;\n\n &.-expanded {\n width: 100%;\n }\n\n .search-bar-input,\n .search-button {\n height: 29px;\n }\n\n .search-bar-input {\n flex: 1 0 auto;\n }\n\n .cancel-search {\n height: 50px;\n }\n\n .cancel-icon {\n color: $fallback--text;\n color: var(--btnTopBarText, $fallback--text);\n }\n}\n\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faSearch\n)\n\nconst SearchBar = {\n data: () => ({\n searchTerm: undefined,\n hidden: true,\n error: false\n }),\n watch: {\n $route: function (route) {\n if (route.name === 'search') {\n this.searchTerm = route.query.query\n }\n }\n },\n methods: {\n find (searchTerm) {\n this.$router.push({ name: 'search', query: { query: searchTerm } })\n this.$refs.searchInput.focus()\n },\n toggleHidden () {\n this.hidden = !this.hidden\n this.$emit('toggled', this.hidden)\n this.$nextTick(() => {\n if (!this.hidden) {\n this.$refs.searchInput.focus()\n }\n })\n }\n }\n}\n\nexport default SearchBar\n","import { render } from \"./search_bar.vue?vue&type=template&id=3ff3b2d5\"\nimport script from \"./search_bar.js?vue&type=script&lang=js\"\nexport * from \"./search_bar.js?vue&type=script&lang=js\"\n\nimport \"./search_bar.vue?vue&type=style&index=0&id=3ff3b2d5&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import SearchBar from 'components/search_bar/search_bar.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nexport default {\n components: {\n SearchBar,\n ConfirmModal\n },\n data: () => ({\n searchBarHidden: true,\n supportsMask: window.CSS && window.CSS.supports && (\n window.CSS.supports('mask-size', 'contain') ||\n window.CSS.supports('-webkit-mask-size', 'contain') ||\n window.CSS.supports('-moz-mask-size', 'contain') ||\n window.CSS.supports('-ms-mask-size', 'contain') ||\n window.CSS.supports('-o-mask-size', 'contain')\n ),\n showingConfirmLogout: false\n }),\n computed: {\n enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n logoStyle () {\n return {\n visibility: this.enableMask ? 'hidden' : 'visible'\n }\n },\n logoMaskStyle () {\n return this.enableMask\n ? {\n 'mask-image': `url(${this.$store.state.instance.logo})`\n }\n : {\n 'background-color': this.enableMask ? '' : 'transparent'\n }\n },\n logoBgStyle () {\n return Object.assign({\n margin: `${this.$store.state.instance.logoMargin} 0`,\n opacity: this.searchBarHidden ? 1 : 0\n }, this.enableMask\n ? {}\n : {\n 'background-color': this.enableMask ? '' : 'transparent'\n })\n },\n logo () { return this.$store.state.instance.logo },\n sitename () { return this.$store.state.instance.name },\n hideSitename () { return this.$store.state.instance.hideSitename },\n logoLeft () { return this.$store.state.instance.logoLeft },\n currentUser () { return this.$store.state.users.currentUser },\n privateMode () { return this.$store.state.instance.private },\n shouldConfirmLogout () {\n return this.$store.getters.mergedConfig.modalOnLogout\n }\n },\n methods: {\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n showConfirmLogout () {\n this.showingConfirmLogout = true\n },\n hideConfirmLogout () {\n this.showingConfirmLogout = false\n },\n logout () {\n if (!this.shouldConfirmLogout) {\n this.doLogout()\n } else {\n this.showConfirmLogout()\n }\n },\n doLogout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n this.hideConfirmLogout()\n },\n onSearchBarToggled (hidden) {\n this.searchBarHidden = hidden\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n","import { render } from \"./desktop_nav.vue?vue&type=template&id=1390197e\"\nimport script from \"./desktop_nav.js?vue&type=script&lang=js\"\nexport * from \"./desktop_nav.js?vue&type=script&lang=js\"\n\nimport \"./desktop_nav.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"isOpen\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"user-reporting-panel panel\">\n <div class=\"panel-heading\">\n <i18n-t\n tag=\"div\"\n keypath=\"user_reporting.title\"\n class=\"title\"\n >\n <UserLink :user=\"user\" />\n </i18n-t>\n </div>\n <div class=\"panel-body\">\n <div class=\"user-reporting-panel-left\">\n <div>\n <p>{{ $t('user_reporting.add_comment_description') }}</p>\n <textarea\n v-model=\"comment\"\n class=\"form-control\"\n :placeholder=\"$t('user_reporting.additional_comments')\"\n rows=\"1\"\n @input=\"resize\"\n />\n </div>\n <div v-if=\"!user.is_local\">\n <p>{{ $t('user_reporting.forward_description') }}</p>\n <Checkbox v-model=\"forward\">\n {{ $t('user_reporting.forward_to', [remoteInstance]) }}\n </Checkbox>\n </div>\n <div>\n <button\n class=\"btn button-default\"\n :disabled=\"processing\"\n @click=\"reportUser\"\n >\n {{ $t('user_reporting.submit') }}\n </button>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ $t('user_reporting.generic_error') }}\n </div>\n </div>\n </div>\n <div class=\"user-reporting-panel-right\">\n <List :items=\"statuses\">\n <template #item=\"{item}\">\n <div class=\"status-fadein user-reporting-panel-sitem\">\n <Status\n :in-conversation=\"false\"\n :focused=\"false\"\n :statusoid=\"item\"\n />\n <Checkbox\n :model-value=\"isChecked(item.id)\"\n @update:model-value=\"checked => toggleStatus(checked, item.id)\"\n />\n </div>\n </template>\n </List>\n </div>\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./user_reporting_modal.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-reporting-panel {\n width: 90vw;\n max-width: 700px;\n min-height: 20vh;\n max-height: 80vh;\n\n .panel-body {\n display: flex;\n flex-direction: column-reverse;\n border-top: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n overflow: hidden;\n }\n\n &-left {\n padding: 1.1em 0.7em 0.7em;\n line-height: var(--post-line-height);\n box-sizing: border-box;\n\n > div {\n margin-bottom: 1em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n p {\n margin-top: 0;\n }\n\n textarea.form-control {\n line-height: 16px;\n resize: none;\n overflow: hidden;\n transition: min-height 200ms 100ms;\n min-height: 44px;\n width: 100%;\n }\n\n .btn {\n min-width: 10em;\n padding: 0 2em;\n }\n\n .alert {\n margin: 1em 0 0;\n line-height: 1.3em;\n }\n }\n\n &-right {\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n }\n\n &-sitem {\n display: flex;\n justify-content: space-between;\n\n /* TODO cleanup this */\n > .Status {\n flex: 1;\n }\n\n > .checkbox {\n margin: 0.75em;\n }\n }\n\n @media all and (min-width: 801px) {\n .panel-body {\n flex-direction: row;\n }\n\n &-left {\n width: 50%;\n max-width: 320px;\n border-right: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 1.1em;\n\n > div {\n margin-bottom: 2em;\n }\n }\n\n &-right {\n width: 50%;\n flex: 1 1 auto;\n margin-bottom: 12px;\n }\n }\n}\n</style>\n","import Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\nimport UserLink from '../user_link/user_link.vue'\n\nconst UserReportingModal = {\n components: {\n Status,\n List,\n Checkbox,\n Modal,\n UserLink\n },\n data () {\n return {\n comment: '',\n forward: false,\n statusIdsToReport: [],\n processing: false,\n error: false\n }\n },\n computed: {\n reportModal () {\n return this.$store.state.reports.reportModal\n },\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isOpen () {\n return this.isLoggedIn && this.reportModal.activated\n },\n userId () {\n return this.reportModal.userId\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n remoteInstance () {\n return !this.user.is_local && this.user.screen_name.substr(this.user.screen_name.indexOf('@') + 1)\n },\n statuses () {\n return this.reportModal.statuses\n },\n preTickedIds () {\n return this.reportModal.preTickedIds\n }\n },\n watch: {\n userId: 'resetState',\n preTickedIds (newValue) {\n this.statusIdsToReport = newValue\n }\n },\n methods: {\n resetState () {\n // Reset state\n this.comment = ''\n this.forward = false\n this.statusIdsToReport = this.preTickedIds\n this.processing = false\n this.error = false\n },\n closeModal () {\n this.$store.dispatch('closeUserReportingModal')\n },\n reportUser () {\n this.processing = true\n this.error = false\n const params = {\n userId: this.userId,\n comment: this.comment,\n forward: this.forward,\n statusIds: this.statusIdsToReport\n }\n this.$store.state.api.backendInteractor.reportUser({ ...params })\n .then(() => {\n this.processing = false\n this.resetState()\n this.closeModal()\n })\n .catch(() => {\n this.processing = false\n this.error = true\n })\n },\n clearError () {\n this.error = false\n },\n isChecked (statusId) {\n return this.statusIdsToReport.indexOf(statusId) !== -1\n },\n toggleStatus (checked, statusId) {\n if (checked === this.isChecked(statusId)) {\n return\n }\n\n if (checked) {\n this.statusIdsToReport.push(statusId)\n } else {\n this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n }\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n // Auto is needed to make textbox shrink when removing lines\n target.style.height = 'auto'\n target.style.height = `${target.scrollHeight}px`\n if (target.value === '') {\n target.style.height = null\n }\n }\n }\n}\n\nexport default UserReportingModal\n","import { render } from \"./user_reporting_modal.vue?vue&type=template&id=b4c54784\"\nimport script from \"./user_reporting_modal.js?vue&type=script&lang=js\"\nexport * from \"./user_reporting_modal.js?vue&type=script&lang=js\"\n\nimport \"./user_reporting_modal.vue?vue&type=style&index=0&id=b4c54784&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"isFormVisible\"\n class=\"edit-form-modal-view\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"edit-form-modal-panel panel\">\n <div class=\"panel-heading\">\n {{ $t('post_status.edit_status') }}\n </div>\n <PostStatusForm\n class=\"panel-body\"\n v-bind=\"params\"\n :post-handler=\"doEditStatus\"\n :disable-polls=\"true\"\n :disable-visibility-selector=\"true\"\n @posted=\"closeModal\"\n />\n </div>\n </Modal>\n</template>\n\n<script src=\"./edit_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.edit-form-modal-view {\n align-items: flex-start;\n}\n\n.edit-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n\n .form-bottom-left {\n max-width: 6.5em;\n\n .emoji-icon {\n justify-content: right;\n }\n }\n}\n</style>\n","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport get from 'lodash/get'\n\nconst EditStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.editStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.editStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'statusId') !== get(oldVal, 'statusId')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n doEditStatus ({ status, spoilerText, sensitive, media, contentType, poll }) {\n const params = {\n store: this.$store,\n statusId: this.$store.state.editStatus.params.statusId,\n status,\n spoilerText,\n sensitive,\n poll,\n media,\n contentType\n }\n\n return statusPosterService.editStatus(params)\n .then((data) => {\n return data\n })\n .catch((err) => {\n console.error('Error editing status', err)\n return {\n error: err.message\n }\n })\n },\n closeModal () {\n this.$store.dispatch('closeEditStatusModal')\n }\n }\n}\n\nexport default EditStatusModal\n","import { render } from \"./edit_status_modal.vue?vue&type=template&id=7e74cdc2\"\nimport script from \"./edit_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./edit_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./edit_status_modal.vue?vue&type=style&index=0&id=7e74cdc2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"isLoggedIn && !resettingForm\"\n :is-open=\"modalActivated\"\n class=\"post-form-modal-view\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"post-form-modal-panel panel\">\n <div class=\"panel-heading\">\n {{ $t('post_status.new_status') }}\n </div>\n <PostStatusForm\n class=\"panel-body\"\n v-bind=\"params\"\n @posted=\"closeModal\"\n />\n </div>\n </Modal>\n</template>\n\n<script src=\"./post_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.post-form-modal-view {\n align-items: flex-start;\n}\n\n.post-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n</style>\n","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.postStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.postStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closePostStatusModal')\n }\n }\n}\n\nexport default PostStatusModal\n","import { render } from \"./post_status_modal.vue?vue&type=template&id=b6b8d3a2\"\nimport script from \"./post_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./post_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./post_status_modal.vue?vue&type=style&index=0&id=b6b8d3a2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"modalActivated\"\n class=\"status-history-modal-view\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"status-history-modal-panel panel\">\n <div class=\"panel-heading\">\n {{ $t('status.status_history') }} ({{ historyCount }})\n </div>\n <div class=\"panel-body\">\n <div\n v-if=\"historyCount > 0\"\n class=\"history-body\"\n >\n <status\n v-for=\"status in history\"\n :key=\"status.id\"\n :statusoid=\"status\"\n :is-preview=\"true\"\n class=\"conversation-status status-fadein panel-body\"\n />\n </div>\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./status_history_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.status-history-modal-view {\n align-items: flex-start;\n}\n\n.status-history-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n</style>\n","import { get } from 'lodash'\nimport Modal from '../modal/modal.vue'\nimport Status from '../status/status.vue'\n\nconst StatusHistoryModal = {\n components: {\n Modal,\n Status\n },\n data () {\n return {\n statuses: []\n }\n },\n computed: {\n modalActivated () {\n return this.$store.state.statusHistory.modalActivated\n },\n params () {\n return this.$store.state.statusHistory.params\n },\n statusId () {\n return this.params.id\n },\n historyCount () {\n return this.statuses.length\n },\n history () {\n return this.statuses\n }\n },\n watch: {\n params (newVal, oldVal) {\n const newStatusId = get(newVal, 'id') !== get(oldVal, 'id')\n if (newStatusId) {\n this.resetHistory()\n }\n\n if (newStatusId || get(newVal, 'edited_at') !== get(oldVal, 'edited_at')) {\n this.fetchStatusHistory()\n }\n }\n },\n methods: {\n resetHistory () {\n this.statuses = []\n },\n fetchStatusHistory () {\n this.$store.dispatch('fetchStatusHistory', this.params)\n .then(data => {\n this.statuses = data\n })\n },\n closeModal () {\n this.$store.dispatch('closeStatusHistoryModal')\n }\n }\n}\n\nexport default StatusHistoryModal\n","import { render } from \"./status_history_modal.vue?vue&type=template&id=16d58712\"\nimport script from \"./status_history_modal.js?vue&type=script&lang=js\"\nexport * from \"./status_history_modal.js?vue&type=script&lang=js\"\n\nimport \"./status_history_modal.vue?vue&type=style&index=0&id=16d58712&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"global-notice-list\">\n <div\n v-for=\"(notice, index) in notices\"\n :key=\"index\"\n class=\"alert global-notice\"\n :class=\"{ ['global-' + notice.level]: true }\"\n >\n <div class=\"notice-message\">\n {{ $t(notice.messageKey, notice.messageArgs) }}\n </div>\n <button\n class=\"button-unstyled close-notice\"\n @click=\"closeNotice(notice)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n</template>\n\n<script src=\"./global_notice_list.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.global-notice-list {\n position: fixed;\n top: calc(var(--navbar-height) + 0.5em);\n width: 100%;\n pointer-events: none;\n z-index: var(--ZI_navbar_popovers);\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .global-notice {\n pointer-events: auto;\n text-align: center;\n width: 40em;\n max-width: calc(100% - 3em);\n display: flex;\n padding-left: 1.5em;\n line-height: 2;\n margin-bottom: 0.5em;\n\n .notice-message {\n flex: 1 1 100%;\n }\n }\n\n .global-error {\n background-color: var(--alertPopupError, $fallback--cRed);\n color: var(--alertPopupErrorText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupErrorText, $fallback--text);\n }\n }\n\n .global-warning {\n background-color: var(--alertPopupWarning, $fallback--cOrange);\n color: var(--alertPopupWarningText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupWarningText, $fallback--text);\n }\n }\n\n .global-success {\n background-color: var(--alertPopupSuccess, $fallback--cGreen);\n color: var(--alertPopupSuccessText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupSuccessText, $fallback--text);\n }\n }\n\n .global-info {\n background-color: var(--alertPopupNeutral, $fallback--fg);\n color: var(--alertPopupNeutralText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupNeutralText, $fallback--text);\n }\n }\n\n .close-notice {\n padding-right: 0.2em;\n\n .svg-inline--fa:hover {\n opacity: 0.6;\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst GlobalNoticeList = {\n computed: {\n notices () {\n return this.$store.state.interface.globalNotices\n }\n },\n methods: {\n closeNotice (notice) {\n this.$store.dispatch('removeGlobalNotice', notice)\n }\n }\n}\n\nexport default GlobalNoticeList\n","import { render } from \"./global_notice_list.vue?vue&type=template&id=f3a7303a\"\nimport script from \"./global_notice_list.js?vue&type=script&lang=js\"\nexport * from \"./global_notice_list.js?vue&type=script&lang=js\"\n\nimport \"./global_notice_list.vue?vue&type=style&index=0&id=f3a7303a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserPanel from './components/user_panel/user_panel.vue'\nimport NavPanel from './components/nav_panel/nav_panel.vue'\nimport InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from './components/features_panel/features_panel.vue'\nimport WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'\nimport ShoutPanel from './components/shout_panel/shout_panel.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport EditStatusModal from './components/edit_status_modal/edit_status_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport StatusHistoryModal from './components/status_history_modal/status_history_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\nimport { defineAsyncComponent } from 'vue'\n\nexport default {\n name: 'app',\n components: {\n UserPanel,\n NavPanel,\n Notifications: defineAsyncComponent(() => import('./components/notifications/notifications.vue')),\n InstanceSpecificPanel,\n FeaturesPanel,\n WhoToFollowPanel,\n ShoutPanel,\n MediaModal,\n SideDrawer,\n MobilePostStatusButton,\n MobileNav,\n DesktopNav,\n SettingsModal: defineAsyncComponent(() => import('./components/settings_modal/settings_modal.vue')),\n UpdateNotification: defineAsyncComponent(() => import('./components/update_notification/update_notification.vue')),\n UserReportingModal,\n PostStatusModal,\n EditStatusModal,\n StatusHistoryModal,\n GlobalNoticeList\n },\n data: () => ({\n mobileActivePanel: 'timeline'\n }),\n created () {\n // Load the locale from the storage\n const val = this.$store.getters.mergedConfig.interfaceLanguage\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n window.addEventListener('resize', this.updateMobileState)\n },\n unmounted () {\n window.removeEventListener('resize', this.updateMobileState)\n },\n computed: {\n classes () {\n return [\n {\n '-reverse': this.reverseLayout,\n '-no-sticky-headers': this.noSticky,\n '-has-new-post-button': this.newPostButtonShown\n },\n '-' + this.layoutType\n ]\n },\n navClasses () {\n const { navbarColumnStretch } = this.$store.getters.mergedConfig\n return [\n '-' + this.layoutType,\n ...(navbarColumnStretch ? ['-column-stretch'] : [])\n ]\n },\n currentUser () { return this.$store.state.users.currentUser },\n userBackground () { return this.currentUser.background_image },\n instanceBackground () {\n return this.mergedConfig.hideInstanceWallpaper\n ? null\n : this.$store.state.instance.background\n },\n background () { return this.userBackground || this.instanceBackground },\n bgStyle () {\n if (this.background) {\n return {\n '--body-background-image': `url(${this.background})`\n }\n }\n },\n shout () { return this.$store.state.shout.joined },\n suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n },\n isChats () {\n return this.$route.name === 'chat' || this.$route.name === 'chats'\n },\n isListEdit () {\n return this.$route.name === 'lists-edit'\n },\n newPostButtonShown () {\n if (this.isChats) return false\n if (this.isListEdit) return false\n return this.$store.getters.mergedConfig.alwaysShowNewPostButton || this.layoutType === 'mobile'\n },\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n editingAvailable () { return this.$store.state.instance.editingAvailable },\n shoutboxPosition () {\n return this.$store.getters.mergedConfig.alwaysShowNewPostButton || false\n },\n hideShoutbox () {\n return this.$store.getters.mergedConfig.hideShoutbox\n },\n layoutType () { return this.$store.state.interface.layoutType },\n privateMode () { return this.$store.state.instance.private },\n reverseLayout () {\n const { thirdColumnMode, sidebarRight: reverseSetting } = this.$store.getters.mergedConfig\n if (this.layoutType !== 'wide') {\n return reverseSetting\n } else {\n return thirdColumnMode === 'notifications' ? reverseSetting : !reverseSetting\n }\n },\n noSticky () { return this.$store.getters.mergedConfig.disableStickyHeaders },\n showScrollbars () { return this.$store.getters.mergedConfig.showScrollbars },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n updateMobileState () {\n this.$store.dispatch('setLayoutWidth', windowWidth())\n this.$store.dispatch('setLayoutHeight', windowHeight())\n }\n }\n}\n","import { render } from \"./App.vue?vue&type=template&id=8323d9fc\"\nimport script from \"./App.js?vue&type=script&lang=js\"\nexport * from \"./App.js?vue&type=script&lang=js\"\n\nimport \"./App.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :class=\"['Timeline', classes.root]\">\n <div :class=\"classes.header\">\n <TimelineMenu\n v-if=\"!embedded\"\n :timeline-name=\"timelineName\"\n />\n <div\n v-if=\"showScrollTop && !embedded\"\n class=\"rightside-button\"\n >\n <button\n class=\"button-unstyled scroll-to-top-button\"\n type=\"button\"\n :title=\"$t('general.scroll_to_top')\"\n @click=\"scrollToTop\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon icon=\"arrow-up\" />\n <FAIcon\n icon=\"minus\"\n transform=\"up-7\"\n />\n </FALayers>\n </button>\n </div>\n <template v-if=\"mobileLayout && !embedded\">\n <div\n v-if=\"showLoadButton\"\n class=\"rightside-button\"\n >\n <button\n class=\"button-unstyled loadmore-button\"\n :title=\"loadButtonString\"\n @click.prevent=\"showNewStatuses\"\n >\n <FAIcon\n fixed-width\n icon=\"circle-plus\"\n />\n <div class=\"alert-badge\">\n {{ mobileLoadButtonString }}\n </div>\n </button>\n </div>\n <div\n v-else-if=\"!embedded\"\n class=\"loadmore-text faint veryfaint rightside-icon\"\n :title=\"$t('timeline.up_to_date')\"\n :aria-disabled=\"true\"\n @click.prevent\n >\n <FAIcon\n fixed-width\n icon=\"check\"\n />\n </div>\n </template>\n <template v-else>\n <button\n v-if=\"showLoadButton\"\n class=\"button-default loadmore-button\"\n @click.prevent=\"showNewStatuses\"\n >\n {{ loadButtonString }}\n </button>\n <div\n v-else-if=\"!embedded\"\n class=\"loadmore-text faint\"\n @click.prevent\n >\n {{ $t('timeline.up_to_date') }}\n </div>\n </template>\n <QuickFilterSettings\n v-if=\"!embedded\"\n class=\"rightside-button\"\n />\n <QuickViewSettings\n v-if=\"!embedded\"\n class=\"rightside-button\"\n />\n </div>\n <div :class=\"classes.body\">\n <div\n ref=\"timeline\"\n class=\"timeline\"\n role=\"feed\"\n >\n <conversation\n v-for=\"statusId in filteredPinnedStatusIds\"\n :key=\"statusId + '-pinned'\"\n role=\"listitem\"\n class=\"status-fadein\"\n :status-id=\"statusId\"\n :collapsable=\"true\"\n :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"userId\"\n />\n <conversation\n v-for=\"status in filteredVisibleStatuses\"\n :key=\"status.id\"\n role=\"listitem\"\n class=\"status-fadein\"\n :status-id=\"status.id\"\n :collapsable=\"true\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"userId\"\n :virtual-hidden=\"virtualScrollingEnabled && !statusesToDisplay.includes(status.id)\"\n />\n </div>\n </div>\n <div :class=\"classes.footer\">\n <teleport\n :to=\"footerSlipgate\"\n :disabled=\"!embedded || !footerSlipgate\"\n >\n <div\n v-if=\"count===0\"\n class=\"new-status-notification text-center faint\"\n >\n {{ $t('timeline.no_statuses') }}\n </div>\n <div\n v-else-if=\"bottomedOut\"\n class=\"new-status-notification text-center faint\"\n >\n {{ $t('timeline.no_more_statuses') }}\n </div>\n <button\n v-else-if=\"!timeline.loading\"\n class=\"button-unstyled -link\"\n @click.prevent=\"fetchOlderStatuses()\"\n >\n <div class=\"new-status-notification text-center\">\n {{ $t('timeline.load_older') }}\n </div>\n </button>\n <div\n v-else\n class=\"new-status-notification text-center\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n </teleport>\n </div>\n </div>\n</template>\n\n<script src=\"./timeline.js\"></script>\n\n<style src=\"./timeline.scss\" lang=\"scss\"> </style>\n","<template>\n <div\n v-if=\"!hideStatus\"\n :style=\"hiddenStyle\"\n class=\"Conversation\"\n :class=\"{ '-expanded' : isExpanded, 'panel' : isExpanded }\"\n >\n <div\n v-if=\"isExpanded\"\n class=\"panel-heading conversation-heading -sticky\"\n >\n <span class=\"title\"> {{ $t('timeline.conversation') }} </span>\n <button\n v-if=\"collapsable\"\n class=\"button-unstyled -link\"\n @click.prevent=\"toggleExpanded\"\n >\n {{ $t('timeline.collapse') }}\n </button>\n <QuickFilterSettings\n v-if=\"!collapsable\"\n :conversation=\"true\"\n class=\"rightside-button\"\n />\n <QuickViewSettings\n v-if=\"!collapsable\"\n :conversation=\"true\"\n class=\"rightside-button\"\n />\n </div>\n <div class=\"conversation-body panel-body\">\n <div\n v-if=\"isTreeView\"\n class=\"thread-body\"\n >\n <div\n v-if=\"shouldShowAllConversationButton\"\n class=\"conversation-dive-to-top-level-box\"\n >\n <i18n-t\n keypath=\"status.show_all_conversation_with_icon\"\n tag=\"button\"\n class=\"button-unstyled -link\"\n scope=\"global\"\n @click.prevent=\"diveToTopLevel\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-left\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.show_all_conversation', otherTopLevelCount, { numStatus: otherTopLevelCount }) }}\n </span>\n </template>\n </i18n-t>\n </div>\n <div\n v-if=\"shouldShowAncestors\"\n class=\"thread-ancestors\"\n >\n <article\n v-for=\"status in ancestorsOf(diveRoot)\"\n :key=\"status.id\"\n class=\"thread-ancestor\"\n :class=\"{'thread-ancestor-has-other-replies': getReplies(status.id).length > 1, '-faded': shouldFadeAncestors}\"\n >\n <status\n ref=\"statusComponent\"\n :inline-expanded=\"collapsable && isExpanded\"\n :statusoid=\"status\"\n :expandable=\"!isExpanded\"\n :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n :focused=\"focused(status.id)\"\n :in-conversation=\"isExpanded\"\n :highlight=\"getHighlight()\"\n :replies=\"getReplies(status.id)\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"profileUserId\"\n class=\"conversation-status status-fadein panel-body\"\n\n :simple-tree=\"treeViewIsSimple\"\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :show-other-replies-as-button=\"showOtherRepliesButtonInsideStatus\"\n :dive=\"() => diveIntoStatus(status.id)\"\n\n :controlled-showing-tall=\"statusContentProperties[status.id].showingTall\"\n :controlled-expanding-subject=\"statusContentProperties[status.id].expandingSubject\"\n :controlled-showing-long-subject=\"statusContentProperties[status.id].showingLongSubject\"\n :controlled-replying=\"statusContentProperties[status.id].replying\"\n :controlled-media-playing=\"statusContentProperties[status.id].mediaPlaying\"\n :controlled-toggle-showing-tall=\"() => toggleStatusContentProperty(status.id, 'showingTall')\"\n :controlled-toggle-expanding-subject=\"() => toggleStatusContentProperty(status.id, 'expandingSubject')\"\n :controlled-toggle-showing-long-subject=\"() => toggleStatusContentProperty(status.id, 'showingLongSubject')\"\n :controlled-toggle-replying=\"() => toggleStatusContentProperty(status.id, 'replying')\"\n :controlled-set-media-playing=\"(newVal) => toggleStatusContentProperty(status.id, 'mediaPlaying', newVal)\"\n\n @goto=\"setHighlight\"\n @toggleExpanded=\"toggleExpanded\"\n />\n <div\n v-if=\"showOtherRepliesButtonBelowStatus && getReplies(status.id).length > 1\"\n class=\"thread-ancestor-dive-box\"\n >\n <div\n class=\"thread-ancestor-dive-box-inner\"\n >\n <i18n-t\n tag=\"button\"\n scope=\"global\"\n keypath=\"status.ancestor_follow_with_icon\"\n class=\"button-unstyled -link thread-tree-show-replies-button\"\n @click.prevent=\"diveIntoStatus(status.id)\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-right\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.ancestor_follow', getReplies(status.id).length - 1, { numReplies: getReplies(status.id).length - 1 }) }}\n </span>\n </template>\n </i18n-t>\n </div>\n </div>\n </article>\n </div>\n <thread-tree\n v-for=\"status in showingTopLevel\"\n :key=\"status.id\"\n ref=\"statusComponent\"\n :depth=\"0\"\n\n :status=\"status\"\n :in-profile=\"inProfile\"\n :conversation=\"conversation\"\n :collapsable=\"collapsable\"\n :is-expanded=\"isExpanded\"\n :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n :profile-user-id=\"profileUserId\"\n\n :focused=\"focused\"\n :get-replies=\"getReplies\"\n :highlight=\"maybeHighlight\"\n :set-highlight=\"setHighlight\"\n :toggle-expanded=\"toggleExpanded\"\n\n :simple=\"treeViewIsSimple\"\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :status-content-properties=\"statusContentProperties\"\n :set-status-content-property=\"setStatusContentProperty\"\n :toggle-status-content-property=\"toggleStatusContentProperty\"\n :dive=\"canDive ? diveIntoStatus : undefined\"\n />\n </div>\n <div\n v-if=\"isLinearView\"\n class=\"thread-body\"\n >\n <article>\n <status\n v-for=\"status in conversation\"\n :key=\"status.id\"\n ref=\"statusComponent\"\n :inline-expanded=\"collapsable && isExpanded\"\n :statusoid=\"status\"\n :expandable=\"!isExpanded\"\n :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n :focused=\"focused(status.id)\"\n :in-conversation=\"isExpanded\"\n :highlight=\"getHighlight()\"\n :replies=\"getReplies(status.id)\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"profileUserId\"\n class=\"conversation-status status-fadein panel-body\"\n\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :status-content-properties=\"statusContentProperties\"\n :set-status-content-property=\"setStatusContentProperty\"\n :toggle-status-content-property=\"toggleStatusContentProperty\"\n\n @goto=\"setHighlight\"\n @toggleExpanded=\"toggleExpanded\"\n />\n </article>\n </div>\n </div>\n </div>\n <div\n v-else\n :style=\"hiddenStyle\"\n />\n</template>\n\n<script src=\"./conversation.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Conversation {\n z-index: 1;\n\n .conversation-dive-to-top-level-box {\n padding: var(--status-margin, $status-margin);\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n\n .thread-ancestors {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n }\n\n .thread-ancestor.-faded .StatusContent {\n --link: var(--faintLink);\n --text: var(--faint);\n\n color: var(--text);\n }\n\n .thread-ancestor-dive-box {\n padding-left: var(--status-margin, $status-margin);\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n\n /* Make the button stretch along the whole row */\n &,\n &-inner {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n }\n\n .thread-ancestor-dive-box-inner {\n padding: var(--status-margin, $status-margin);\n }\n\n .conversation-status {\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n }\n\n .thread-ancestor-has-other-replies .conversation-status,\n &:last-child .conversation-status,\n .thread-ancestor:last-child .conversation-status,\n .thread-ancestor:last-child .thread-ancestor-dive-box,\n &.-expanded .thread-tree .conversation-status {\n border-bottom: none;\n }\n\n .thread-ancestors + .thread-tree > .conversation-status {\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n /* expanded conversation in timeline */\n &.status-fadein.-expanded .thread-body {\n border-left: 4px solid $fallback--cRed;\n border-left-color: var(--cRed, $fallback--cRed);\n border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n border-bottom: 1px solid var(--border, $fallback--border);\n }\n\n &.-expanded.status-fadein {\n margin: calc(var(--status-margin, $status-margin) / 2);\n }\n}\n</style>\n","<template>\n <article class=\"thread-tree\">\n <status\n :key=\"status.id\"\n ref=\"statusComponent\"\n :inline-expanded=\"collapsable && isExpanded\"\n :statusoid=\"status\"\n :expandable=\"!isExpanded\"\n :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n :focused=\"focused(status.id)\"\n :in-conversation=\"isExpanded\"\n :highlight=\"highlight\"\n :replies=\"getReplies(status.id)\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"profileUserId\"\n class=\"conversation-status conversation-status-treeview status-fadein panel-body\"\n\n :simple-tree=\"simple\"\n :controlled-thread-display-status=\"threadDisplayStatus[status.id]\"\n :controlled-toggle-thread-display=\"() => toggleThreadDisplay(status.id)\"\n\n :controlled-showing-tall=\"currentProp.showingTall\"\n :controlled-expanding-subject=\"currentProp.expandingSubject\"\n :controlled-showing-long-subject=\"currentProp.showingLongSubject\"\n :controlled-replying=\"currentProp.replying\"\n :controlled-media-playing=\"currentProp.mediaPlaying\"\n :controlled-toggle-showing-tall=\"() => toggleCurrentProp('showingTall')\"\n :controlled-toggle-expanding-subject=\"() => toggleCurrentProp('expandingSubject')\"\n :controlled-toggle-showing-long-subject=\"() => toggleCurrentProp('showingLongSubject')\"\n :controlled-toggle-replying=\"() => toggleCurrentProp('replying')\"\n :controlled-set-media-playing=\"(newVal) => setCurrentProp('mediaPlaying', newVal)\"\n :dive=\"dive ? () => dive(status.id) : undefined\"\n\n @goto=\"setHighlight\"\n @toggleExpanded=\"toggleExpanded\"\n />\n <div\n v-if=\"currentReplies.length && threadShowing\"\n class=\"thread-tree-replies\"\n >\n <thread-tree\n v-for=\"replyStatus in currentReplies\"\n :key=\"replyStatus.id\"\n ref=\"childComponent\"\n :depth=\"depth + 1\"\n :status=\"replyStatus\"\n\n :in-profile=\"inProfile\"\n :conversation=\"conversation\"\n :collapsable=\"collapsable\"\n :is-expanded=\"isExpanded\"\n :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n :profile-user-id=\"profileUserId\"\n\n :focused=\"focused\"\n :get-replies=\"getReplies\"\n :highlight=\"highlight\"\n :set-highlight=\"setHighlight\"\n :toggle-expanded=\"toggleExpanded\"\n\n :simple=\"simple\"\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :status-content-properties=\"statusContentProperties\"\n :set-status-content-property=\"setStatusContentProperty\"\n :toggle-status-content-property=\"toggleStatusContentProperty\"\n :dive=\"dive\"\n />\n </div>\n <div\n v-if=\"currentReplies.length && !threadShowing\"\n class=\"thread-tree-replies thread-tree-replies-hidden\"\n >\n <i18n-t\n v-if=\"simple\"\n scope=\"global\"\n tag=\"button\"\n keypath=\"status.thread_follow_with_icon\"\n class=\"button-unstyled -link thread-tree-show-replies-button\"\n @click.prevent=\"dive(status.id)\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-right\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.thread_follow', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id] }) }}\n </span>\n </template>\n </i18n-t>\n <i18n-t\n v-else\n scope=\"global\"\n tag=\"button\"\n keypath=\"status.thread_show_full_with_icon\"\n class=\"button-unstyled -link thread-tree-show-replies-button\"\n @click.prevent=\"showThreadRecursively(status.id)\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-down\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.thread_show_full', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id], depth: totalReplyDepth[status.id] }) }}\n </span>\n </template>\n </i18n-t>\n </div>\n </article>\n</template>\n\n<script src=\"./thread_tree.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.thread-tree-replies {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n}\n\n.thread-tree-replies-hidden {\n padding: var(--status-margin, $status-margin);\n\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n}\n</style>\n","import Status from '../status/status.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAngleDoubleDown,\n faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAngleDoubleDown,\n faAngleDoubleRight\n)\n\nconst ThreadTree = {\n components: {\n Status\n },\n name: 'ThreadTree',\n props: {\n depth: Number,\n status: Object,\n inProfile: Boolean,\n conversation: Array,\n collapsable: Boolean,\n isExpanded: Boolean,\n pinnedStatusIdsObject: Object,\n profileUserId: String,\n\n focused: Function,\n highlight: String,\n getReplies: Function,\n setHighlight: Function,\n toggleExpanded: Function,\n\n simple: Boolean,\n // to control display of the whole thread forest\n toggleThreadDisplay: Function,\n threadDisplayStatus: Object,\n showThreadRecursively: Function,\n totalReplyCount: Object,\n totalReplyDepth: Object,\n statusContentProperties: Object,\n setStatusContentProperty: Function,\n toggleStatusContentProperty: Function,\n dive: Function\n },\n computed: {\n suspendable () {\n const selfSuspendable = this.$refs.statusComponent ? this.$refs.statusComponent.suspendable : true\n if (this.$refs.childComponent) {\n return selfSuspendable && this.$refs.childComponent.every(s => s.suspendable)\n }\n return selfSuspendable\n },\n reverseLookupTable () {\n return this.conversation.reduce((table, status, index) => {\n table[status.id] = index\n return table\n }, {})\n },\n currentReplies () {\n return this.getReplies(this.status.id).map(({ id }) => this.statusById(id))\n },\n threadShowing () {\n return this.threadDisplayStatus[this.status.id] === 'showing'\n },\n currentProp () {\n return this.statusContentProperties[this.status.id]\n }\n },\n methods: {\n statusById (id) {\n return this.conversation[this.reverseLookupTable[id]]\n },\n collapseThread () {\n },\n showThread () {\n },\n showAllSubthreads () {\n },\n toggleCurrentProp (name) {\n this.toggleStatusContentProperty(this.status.id, name)\n },\n setCurrentProp (name, newVal) {\n this.setStatusContentProperty(this.status.id, name)\n }\n }\n}\n\nexport default ThreadTree\n","import { render } from \"./thread_tree.vue?vue&type=template&id=061df1d9\"\nimport script from \"./thread_tree.js?vue&type=script&lang=js\"\nexport * from \"./thread_tree.js?vue&type=script&lang=js\"\n\nimport \"./thread_tree.vue?vue&type=style&index=0&id=061df1d9&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"QuickFilterSettings\"\n :bound-to=\"{ x: 'container' }\"\n :trigger-attrs=\"{ title: $t('timeline.quick_filter_settings') }\"\n >\n <template #content>\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n >\n <div\n v-if=\"loggedIn\"\n role=\"group\"\n >\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n :aria-checked=\"replyVisibilityAll\"\n role=\"menuitemradio\"\n @click=\"replyVisibilityAll = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityAll }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.reply_visibility_all') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n :aria-checked=\"replyVisibilityFollowing\"\n role=\"menuitemradio\"\n @click=\"replyVisibilityFollowing = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityFollowing }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.reply_visibility_following_short') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n :aria-checked=\"replyVisibilitySelf\"\n role=\"menuitemradio\"\n @click=\"replyVisibilitySelf = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilitySelf }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.reply_visibility_self_short') }}\n </button>\n <div\n v-if=\"!conversation\"\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </div>\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"muteBotStatuses\"\n @click=\"muteBotStatuses = !muteBotStatuses\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': muteBotStatuses }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.mute_bot_posts') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"hideMedia\"\n @click=\"hideMedia = !hideMedia\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMedia }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.hide_media_previews') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"hideMutedPosts\"\n @click=\"hideMutedPosts = !hideMutedPosts\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMutedPosts }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.hide_all_muted_posts') }}\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click=\"openTab('filtering')\"\n >\n <FAIcon icon=\"font\" />{{ $t('settings.word_filter_and_more') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <FAIcon icon=\"filter\" />\n </template>\n </Popover>\n</template>\n\n<script src=\"./quick_filter_settings.js\"></script>\n","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter, faFont, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFilter,\n faFont,\n faWrench\n)\n\nconst QuickFilterSettings = {\n props: {\n conversation: Boolean\n },\n components: {\n Popover\n },\n methods: {\n setReplyVisibility (visibility) {\n this.$store.dispatch('setOption', { name: 'replyVisibility', value: visibility })\n this.$store.dispatch('queueFlushAll')\n },\n openTab (tab) {\n this.$store.dispatch('openSettingsModalTab', tab)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n replyVisibilitySelf: {\n get () { return this.mergedConfig.replyVisibility === 'self' },\n set () { this.setReplyVisibility('self') }\n },\n replyVisibilityFollowing: {\n get () { return this.mergedConfig.replyVisibility === 'following' },\n set () { this.setReplyVisibility('following') }\n },\n replyVisibilityAll: {\n get () { return this.mergedConfig.replyVisibility === 'all' },\n set () { this.setReplyVisibility('all') }\n },\n hideMedia: {\n get () { return this.mergedConfig.hideAttachments || this.mergedConfig.hideAttachmentsInConv },\n set () {\n const value = !this.hideMedia\n this.$store.dispatch('setOption', { name: 'hideAttachments', value })\n this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })\n }\n },\n hideMutedPosts: {\n get () { return this.mergedConfig.hideFilteredStatuses },\n set () {\n const value = !this.hideMutedPosts\n this.$store.dispatch('setOption', { name: 'hideFilteredStatuses', value })\n }\n },\n muteBotStatuses: {\n get () { return this.mergedConfig.muteBotStatuses },\n set () {\n const value = !this.muteBotStatuses\n this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n }\n }\n }\n}\n\nexport default QuickFilterSettings\n","import { render } from \"./quick_filter_settings.vue?vue&type=template&id=43207d13\"\nimport script from \"./quick_filter_settings.js?vue&type=script&lang=js\"\nexport * from \"./quick_filter_settings.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"QuickViewSettings\"\n :bound-to=\"{ x: 'container' }\"\n :trigger-attrs=\"{ title: $t('timeline.quick_view_settings') }\"\n >\n <template #content>\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n >\n <div role=\"group\">\n <button\n class=\"button-default dropdown-item\"\n :aria-checked=\"conversationDisplay === 'tree'\"\n role=\"menuitemradio\"\n @click=\"conversationDisplay = 'tree'\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :aria-hidden=\"true\"\n :class=\"{ 'menu-checkbox-checked': conversationDisplay === 'tree' }\"\n /><FAIcon\n icon=\"folder-tree\"\n :aria-hidden=\"true\"\n /> {{ $t('settings.conversation_display_tree_quick') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n :aria-checked=\"conversationDisplay === 'linear'\"\n role=\"menuitemradio\"\n @click=\"conversationDisplay = 'linear'\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': conversationDisplay === 'linear' }\"\n :aria-hidden=\"true\"\n /><FAIcon\n icon=\"list\"\n :aria-hidden=\"true\"\n /> {{ $t('settings.conversation_display_linear_quick') }}\n </button>\n </div>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"showUserAvatars\"\n @click=\"showUserAvatars = !showUserAvatars\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': showUserAvatars }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.mention_link_show_avatar_quick') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"autoUpdate\"\n @click=\"autoUpdate = !autoUpdate\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': autoUpdate }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.auto_update') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"collapseWithSubjects\"\n @click=\"collapseWithSubjects = !collapseWithSubjects\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': collapseWithSubjects }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.collapse_subject') }}\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click=\"openTab('general')\"\n >\n <FAIcon icon=\"wrench\" />{{ $t('settings.more_settings') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <FAIcon icon=\"bars\" />\n </template>\n </Popover>\n</template>\n\n<script src=\"./quick_view_settings.js\"></script>\n","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faList, faFolderTree, faBars, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faList,\n faFolderTree,\n faBars,\n faWrench\n)\n\nconst QuickViewSettings = {\n props: {\n conversation: Boolean\n },\n components: {\n Popover\n },\n methods: {\n setConversationDisplay (visibility) {\n this.$store.dispatch('setOption', { name: 'conversationDisplay', value: visibility })\n },\n openTab (tab) {\n this.$store.dispatch('openSettingsModalTab', tab)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n conversationDisplay: {\n get () { return this.mergedConfig.conversationDisplay },\n set (newVal) { this.setConversationDisplay(newVal) }\n },\n autoUpdate: {\n get () { return this.mergedConfig.streaming },\n set () {\n const value = !this.autoUpdate\n this.$store.dispatch('setOption', { name: 'streaming', value })\n }\n },\n collapseWithSubjects: {\n get () { return this.mergedConfig.collapseMessageWithSubject },\n set () {\n const value = !this.collapseWithSubjects\n this.$store.dispatch('setOption', { name: 'collapseMessageWithSubject', value })\n }\n },\n showUserAvatars: {\n get () { return this.mergedConfig.mentionLinkShowAvatar },\n set () {\n const value = !this.showUserAvatars\n console.log(value)\n this.$store.dispatch('setOption', { name: 'mentionLinkShowAvatar', value })\n }\n },\n muteBotStatuses: {\n get () { return this.mergedConfig.muteBotStatuses },\n set () {\n const value = !this.muteBotStatuses\n this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n }\n }\n }\n}\n\nexport default QuickViewSettings\n","import { render } from \"./quick_view_settings.vue?vue&type=template&id=2a929bb0\"\nimport script from \"./quick_view_settings.js?vue&type=script&lang=js\"\nexport * from \"./quick_view_settings.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { reduce, filter, findIndex, clone, get } from 'lodash'\nimport Status from '../status/status.vue'\nimport ThreadTree from '../thread_tree/thread_tree.vue'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport QuickFilterSettings from '../quick_filter_settings/quick_filter_settings.vue'\nimport QuickViewSettings from '../quick_view_settings/quick_view_settings.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAngleDoubleDown,\n faAngleDoubleLeft,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAngleDoubleDown,\n faAngleDoubleLeft,\n faChevronLeft\n)\n\nconst sortById = (a, b) => {\n const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n const seqA = Number(idA)\n const seqB = Number(idB)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA < seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return -1\n } else if (!isSeqA && isSeqB) {\n return 1\n } else {\n return idA < idB ? -1 : 1\n }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n if (statusoid.type === 'retweet') {\n conversation = filter(\n conversation,\n (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n )\n } else {\n conversation = filter(conversation, (status) => status.type !== 'retweet')\n }\n return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n data () {\n return {\n highlight: null,\n expanded: false,\n threadDisplayStatusObject: {}, // id => 'showing' | 'hidden'\n statusContentPropertiesObject: {},\n inlineDivePosition: null\n }\n },\n props: [\n 'statusId',\n 'collapsable',\n 'isPage',\n 'pinnedStatusIdsObject',\n 'inProfile',\n 'profileUserId',\n 'virtualHidden'\n ],\n created () {\n if (this.isPage) {\n this.fetchConversation()\n }\n },\n computed: {\n maxDepthToShowByDefault () {\n // maxDepthInThread = max number of depths that is *visible*\n // since our depth starts with 0 and \"showing\" means \"showing children\"\n // there is a -2 here\n const maxDepth = this.$store.getters.mergedConfig.maxDepthInThread - 2\n return maxDepth >= 1 ? maxDepth : 1\n },\n streamingEnabled () {\n return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n },\n displayStyle () {\n return this.$store.getters.mergedConfig.conversationDisplay\n },\n isTreeView () {\n return !this.isLinearView\n },\n treeViewIsSimple () {\n return !this.$store.getters.mergedConfig.conversationTreeAdvanced\n },\n isLinearView () {\n return this.displayStyle === 'linear'\n },\n shouldFadeAncestors () {\n return this.$store.getters.mergedConfig.conversationTreeFadeAncestors\n },\n otherRepliesButtonPosition () {\n return this.$store.getters.mergedConfig.conversationOtherRepliesButton\n },\n showOtherRepliesButtonBelowStatus () {\n return this.otherRepliesButtonPosition === 'below'\n },\n showOtherRepliesButtonInsideStatus () {\n return this.otherRepliesButtonPosition === 'inside'\n },\n suspendable () {\n if (this.isTreeView) {\n return Object.entries(this.statusContentProperties)\n .every(([k, prop]) => !prop.replying && prop.mediaPlaying.length === 0)\n }\n if (this.$refs.statusComponent && this.$refs.statusComponent[0]) {\n return this.$refs.statusComponent.every(s => s.suspendable)\n } else {\n return true\n }\n },\n hideStatus () {\n return this.virtualHidden && this.suspendable\n },\n status () {\n return this.$store.state.statuses.allStatusesObject[this.statusId]\n },\n originalStatusId () {\n if (this.status.retweeted_status) {\n return this.status.retweeted_status.id\n } else {\n return this.statusId\n }\n },\n conversationId () {\n return this.getConversationId(this.statusId)\n },\n conversation () {\n if (!this.status) {\n return []\n }\n\n if (!this.isExpanded) {\n return [this.status]\n }\n\n const conversation = clone(this.$store.state.statuses.conversationsObject[this.conversationId])\n const statusIndex = findIndex(conversation, { id: this.originalStatusId })\n if (statusIndex !== -1) {\n conversation[statusIndex] = this.status\n }\n\n return sortAndFilterConversation(conversation, this.status)\n },\n statusMap () {\n return this.conversation.reduce((res, s) => {\n res[s.id] = s\n return res\n }, {})\n },\n threadTree () {\n const reverseLookupTable = this.conversation.reduce((table, status, index) => {\n table[status.id] = index\n return table\n }, {})\n\n const threads = this.conversation.reduce((a, cur) => {\n const id = cur.id\n a.forest[id] = this.getReplies(id)\n .map(s => s.id)\n\n return a\n }, {\n forest: {}\n })\n\n const walk = (forest, topLevel, depth = 0, processed = {}) => topLevel.map(id => {\n if (processed[id]) {\n return []\n }\n\n processed[id] = true\n return [{\n status: this.conversation[reverseLookupTable[id]],\n id,\n depth\n }, walk(forest, forest[id], depth + 1, processed)].reduce((a, b) => a.concat(b), [])\n }).reduce((a, b) => a.concat(b), [])\n\n const linearized = walk(threads.forest, this.topLevel.map(k => k.id))\n\n return linearized\n },\n replyIds () {\n return this.conversation.map(k => k.id)\n .reduce((res, id) => {\n res[id] = (this.replies[id] || []).map(k => k.id)\n return res\n }, {})\n },\n totalReplyCount () {\n const sizes = {}\n const subTreeSizeFor = (id) => {\n if (sizes[id]) {\n return sizes[id]\n }\n sizes[id] = 1 + this.replyIds[id].map(cid => subTreeSizeFor(cid)).reduce((a, b) => a + b, 0)\n return sizes[id]\n }\n this.conversation.map(k => k.id).map(subTreeSizeFor)\n return Object.keys(sizes).reduce((res, id) => {\n res[id] = sizes[id] - 1 // exclude itself\n return res\n }, {})\n },\n totalReplyDepth () {\n const depths = {}\n const subTreeDepthFor = (id) => {\n if (depths[id]) {\n return depths[id]\n }\n depths[id] = 1 + this.replyIds[id].map(cid => subTreeDepthFor(cid)).reduce((a, b) => a > b ? a : b, 0)\n return depths[id]\n }\n this.conversation.map(k => k.id).map(subTreeDepthFor)\n return Object.keys(depths).reduce((res, id) => {\n res[id] = depths[id] - 1 // exclude itself\n return res\n }, {})\n },\n depths () {\n return this.threadTree.reduce((a, k) => {\n a[k.id] = k.depth\n return a\n }, {})\n },\n topLevel () {\n const topLevel = this.conversation.reduce((tl, cur) =>\n tl.filter(k => this.getReplies(cur.id).map(v => v.id).indexOf(k.id) === -1), this.conversation)\n return topLevel\n },\n otherTopLevelCount () {\n return this.topLevel.length - 1\n },\n showingTopLevel () {\n if (this.canDive && this.diveRoot) {\n return [this.statusMap[this.diveRoot]]\n }\n return this.topLevel\n },\n diveRoot () {\n const statusId = this.inlineDivePosition || this.statusId\n const isTopLevel = !this.parentOf(statusId)\n return isTopLevel ? null : statusId\n },\n diveDepth () {\n return this.canDive && this.diveRoot ? this.depths[this.diveRoot] : 0\n },\n diveMode () {\n return this.canDive && !!this.diveRoot\n },\n shouldShowAllConversationButton () {\n // The \"show all conversation\" button tells the user that there exist\n // other toplevel statuses, so do not show it if there is only a single root\n return this.isTreeView && this.isExpanded && this.diveMode && this.topLevel.length > 1\n },\n shouldShowAncestors () {\n return this.isTreeView && this.isExpanded && this.ancestorsOf(this.diveRoot).length\n },\n replies () {\n let i = 1\n // eslint-disable-next-line camelcase\n return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {\n /* eslint-disable camelcase */\n const irid = in_reply_to_status_id\n /* eslint-enable camelcase */\n if (irid) {\n result[irid] = result[irid] || []\n result[irid].push({\n name: `#${i}`,\n id\n })\n }\n i++\n return result\n }, {})\n },\n isExpanded () {\n return !!(this.expanded || this.isPage)\n },\n hiddenStyle () {\n const height = (this.status && this.status.virtualHeight) || '120px'\n return this.virtualHidden ? { height } : {}\n },\n threadDisplayStatus () {\n return this.conversation.reduce((a, k) => {\n const id = k.id\n const depth = this.depths[id]\n const status = (() => {\n if (this.threadDisplayStatusObject[id]) {\n return this.threadDisplayStatusObject[id]\n }\n if ((depth - this.diveDepth) <= this.maxDepthToShowByDefault) {\n return 'showing'\n } else {\n return 'hidden'\n }\n })()\n\n a[id] = status\n return a\n }, {})\n },\n statusContentProperties () {\n return this.conversation.reduce((a, k) => {\n const id = k.id\n const props = (() => {\n const def = {\n showingTall: false,\n expandingSubject: false,\n showingLongSubject: false,\n isReplying: false,\n mediaPlaying: []\n }\n\n if (this.statusContentPropertiesObject[id]) {\n return {\n ...def,\n ...this.statusContentPropertiesObject[id]\n }\n }\n return def\n })()\n\n a[id] = props\n return a\n }, {})\n },\n canDive () {\n return this.isTreeView && this.isExpanded\n },\n focused () {\n return (id) => {\n return (this.isExpanded) && id === this.highlight\n }\n },\n maybeHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n mastoUserSocketStatus: state => state.api.mastoUserSocketStatus\n })\n },\n components: {\n Status,\n ThreadTree,\n QuickFilterSettings,\n QuickViewSettings\n },\n watch: {\n statusId (newVal, oldVal) {\n const newConversationId = this.getConversationId(newVal)\n const oldConversationId = this.getConversationId(oldVal)\n if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n this.setHighlight(this.originalStatusId)\n } else {\n this.fetchConversation()\n }\n },\n expanded (value) {\n if (value) {\n this.fetchConversation()\n } else {\n this.resetDisplayState()\n }\n },\n virtualHidden (value) {\n this.$store.dispatch(\n 'setVirtualHeight',\n { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n )\n }\n },\n methods: {\n fetchConversation () {\n if (this.status) {\n this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n .then(({ ancestors, descendants }) => {\n this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n this.$store.dispatch('addNewStatuses', { statuses: descendants })\n this.setHighlight(this.originalStatusId)\n })\n } else {\n this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n .then((status) => {\n this.$store.dispatch('addNewStatuses', { statuses: [status] })\n this.fetchConversation()\n })\n }\n },\n getReplies (id) {\n return this.replies[id] || []\n },\n getHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n setHighlight (id) {\n if (!id) return\n this.highlight = id\n\n if (!this.streamingEnabled) {\n this.$store.dispatch('fetchStatus', id)\n }\n\n this.$store.dispatch('fetchFavsAndRepeats', id)\n this.$store.dispatch('fetchEmojiReactionsBy', id)\n },\n toggleExpanded () {\n this.expanded = !this.expanded\n },\n getConversationId (statusId) {\n const status = this.$store.state.statuses.allStatusesObject[statusId]\n return get(status, 'retweeted_status.statusnet_conversation_id', get(status, 'statusnet_conversation_id'))\n },\n setThreadDisplay (id, nextStatus) {\n this.threadDisplayStatusObject = {\n ...this.threadDisplayStatusObject,\n [id]: nextStatus\n }\n },\n toggleThreadDisplay (id) {\n const curStatus = this.threadDisplayStatus[id]\n const nextStatus = curStatus === 'showing' ? 'hidden' : 'showing'\n this.setThreadDisplay(id, nextStatus)\n },\n setThreadDisplayRecursively (id, nextStatus) {\n this.setThreadDisplay(id, nextStatus)\n this.getReplies(id).map(k => k.id).map(id => this.setThreadDisplayRecursively(id, nextStatus))\n },\n showThreadRecursively (id) {\n this.setThreadDisplayRecursively(id, 'showing')\n },\n setStatusContentProperty (id, name, value) {\n this.statusContentPropertiesObject = {\n ...this.statusContentPropertiesObject,\n [id]: {\n ...this.statusContentPropertiesObject[id],\n [name]: value\n }\n }\n },\n toggleStatusContentProperty (id, name) {\n this.setStatusContentProperty(id, name, !this.statusContentProperties[id][name])\n },\n leastVisibleAncestor (id) {\n let cur = id\n let parent = this.parentOf(cur)\n while (cur) {\n // if the parent is showing it means cur is visible\n if (this.threadDisplayStatus[parent] === 'showing') {\n return cur\n }\n parent = this.parentOf(parent)\n cur = this.parentOf(cur)\n }\n // nothing found, fall back to toplevel\n return this.topLevel[0] ? this.topLevel[0].id : undefined\n },\n diveIntoStatus (id, preventScroll) {\n this.tryScrollTo(id)\n },\n diveToTopLevel () {\n this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot) || this.topLevel[0].id)\n },\n // only used when we are not on a page\n undive () {\n this.inlineDivePosition = null\n this.setHighlight(this.statusId)\n },\n tryScrollTo (id) {\n if (!id) {\n return\n }\n if (this.isPage) {\n // set statusId\n this.$router.push({ name: 'conversation', params: { id } })\n } else {\n this.inlineDivePosition = id\n }\n // Because the conversation can be unmounted when out of sight\n // and mounted again when it comes into sight,\n // the `mounted` or `created` function in `status` should not\n // contain scrolling calls, as we do not want the page to jump\n // when we scroll with an expanded conversation.\n //\n // Now the method is to rely solely on the `highlight` watcher\n // in `status` components.\n // In linear views, all statuses are rendered at all times, but\n // in tree views, it is possible that a change in active status\n // removes and adds status components (e.g. an originally child\n // status becomes an ancestor status, and thus they will be\n // different).\n // Here, let the components be rendered first, in order to trigger\n // the `highlight` watcher.\n this.$nextTick(() => {\n this.setHighlight(id)\n })\n },\n goToCurrent () {\n this.tryScrollTo(this.diveRoot || this.topLevel[0].id)\n },\n statusById (id) {\n return this.statusMap[id]\n },\n parentOf (id) {\n const status = this.statusById(id)\n if (!status) {\n return undefined\n }\n const { in_reply_to_status_id: parentId } = status\n if (!this.statusMap[parentId]) {\n return undefined\n }\n return parentId\n },\n parentOrSelf (id) {\n return this.parentOf(id) || id\n },\n // Ancestors of some status, from top to bottom\n ancestorsOf (id) {\n const ancestors = []\n let cur = this.parentOf(id)\n while (cur) {\n ancestors.unshift(this.statusMap[cur])\n cur = this.parentOf(cur)\n }\n return ancestors\n },\n topLevelAncestorOrSelfId (id) {\n let cur = id\n let parent = this.parentOf(id)\n while (parent) {\n cur = this.parentOf(cur)\n parent = this.parentOf(parent)\n }\n return cur\n },\n resetDisplayState () {\n this.undive()\n this.threadDisplayStatusObject = {}\n }\n }\n}\n\nexport default conversation\n","import { render } from \"./conversation.vue?vue&type=template&id=68e3b9cb\"\nimport script from \"./conversation.js?vue&type=script&lang=js\"\nexport * from \"./conversation.js?vue&type=script&lang=js\"\n\nimport \"./conversation.vue?vue&type=style&index=0&id=68e3b9cb&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"TimelineMenu\"\n :class=\"{ 'open': isOpen }\"\n :bound-to=\"{ x: 'container' }\"\n bound-to-selector=\".Timeline\"\n popover-class=\"timeline-menu-popover popover-default\"\n @show=\"openMenu\"\n @close=\"() => isOpen = false\"\n >\n <template #content>\n <ListsMenuContent\n v-if=\"useListsMenu\"\n :show-pin=\"false\"\n class=\"timelines\"\n />\n <ul v-else>\n <NavigationEntry\n v-for=\"item in timelinesList\"\n :key=\"item.name\"\n :show-pin=\"false\"\n :item=\"item\"\n />\n </ul>\n </template>\n <template #trigger>\n <span class=\"button-unstyled title timeline-menu-title\">\n <span class=\"timeline-title\">{{ timelineName() }}</span>\n <span>\n <FAIcon\n size=\"sm\"\n icon=\"chevron-down\"\n />\n </span>\n <span\n class=\"click-blocker\"\n @click=\"blockOpen\"\n />\n </span>\n </template>\n </Popover>\n</template>\n\n<script src=\"./timeline_menu.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.timeline-menu-popover {\n min-width: 24rem;\n max-width: 100vw;\n margin-top: 0.6rem;\n font-size: 1rem;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n a {\n display: block;\n padding: 0 0.65em;\n height: 3.5em;\n line-height: 3.5em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &.router-link-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n svg {\n margin-right: 0.4em;\n margin-left: -0.2em;\n }\n }\n\n li {\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 0;\n\n &:last-child a {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child {\n border: none;\n }\n }\n}\n\n.TimelineMenu {\n margin-right: auto;\n min-width: 0;\n\n .popover-trigger-button {\n vertical-align: bottom;\n }\n\n .panel::after {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n }\n\n .timeline-menu-title {\n margin: 0;\n cursor: pointer;\n user-select: none;\n width: 100%;\n display: flex;\n\n .timeline-menu-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n svg {\n margin-left: 0.6em;\n transition: transform 100ms;\n }\n\n .click-blocker {\n cursor: default;\n flex-grow: 1;\n }\n }\n\n &.open .timeline-menu-title svg {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n transform: rotate(180deg);\n }\n\n .panel {\n box-shadow: var(--popoverShadow);\n }\n}\n</style>\n","import Popover from '../popover/popover.vue'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport { mapState } from 'vuex'\nimport { ListsMenuContent } from '../lists_menu/lists_menu_content.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { TIMELINES } from 'src/components/navigation/navigation.js'\nimport { filterNavigation } from 'src/components/navigation/filter.js'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faChevronDown)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n return {\n friends: 'nav.home_timeline',\n bookmarks: 'nav.bookmarks',\n dms: 'nav.dms',\n 'public-timeline': 'nav.public_tl',\n 'public-external-timeline': 'nav.twkn'\n }\n}\n\nconst TimelineMenu = {\n components: {\n Popover,\n NavigationEntry,\n ListsMenuContent\n },\n data () {\n return {\n isOpen: false\n }\n },\n created () {\n if (timelineNames()[this.$route.name]) {\n this.$store.dispatch('setLastTimeline', this.$route.name)\n }\n },\n computed: {\n useListsMenu () {\n const route = this.$route.name\n return route === 'lists-timeline'\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n }),\n timelinesList () {\n return filterNavigation(\n Object.entries(TIMELINES).map(([k, v]) => ({ ...v, name: k })),\n {\n hasChats: this.pleromaChatMessagesAvailable,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n )\n }\n },\n methods: {\n openMenu () {\n // $nextTick is too fast, animation won't play back but\n // instead starts in fully open position. Low values\n // like 1-5 work on fast machines but not on mobile, 25\n // seems like a good compromise that plays without significant\n // added lag.\n setTimeout(() => {\n this.isOpen = true\n }, 25)\n },\n blockOpen (event) {\n // For the blank area inside the button element.\n // Just setting @click.stop=\"\" makes unintuitive behavior when\n // menu is open and clicking on the blank area doesn't close it.\n if (!this.isOpen) {\n event.stopPropagation()\n }\n },\n timelineName () {\n const route = this.$route.name\n if (route === 'tag-timeline') {\n return '#' + this.$route.params.tag\n }\n if (route === 'lists-timeline') {\n return this.$store.getters.findListTitle(this.$route.params.id)\n }\n const i18nkey = timelineNames()[this.$route.name]\n return i18nkey ? this.$t(i18nkey) : route\n }\n }\n}\n\nexport default TimelineMenu\n","import { render } from \"./timeline_menu.vue?vue&type=template&id=b7d0cae0\"\nimport script from \"./timeline_menu.js?vue&type=script&lang=js\"\nexport * from \"./timeline_menu.js?vue&type=script&lang=js\"\n\nimport \"./timeline_menu.vue?vue&type=style&index=0&id=b7d0cae0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Status from '../status/status.vue'\nimport { mapState } from 'vuex'\nimport timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport QuickFilterSettings from '../quick_filter_settings/quick_filter_settings.vue'\nimport QuickViewSettings from '../quick_view_settings/quick_view_settings.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faCirclePlus, faCog, faMinus, faArrowUp, faCheck } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faCog,\n faMinus,\n faArrowUp,\n faCirclePlus,\n faCheck\n)\n\nconst Timeline = {\n props: [\n 'timeline',\n 'timelineName',\n 'title',\n 'userId',\n 'listId',\n 'tag',\n 'embedded',\n 'count',\n 'pinnedStatusIds',\n 'inProfile',\n 'footerSlipgate' // reference to an element where we should put our footer\n ],\n data () {\n return {\n showScrollTop: false,\n paused: false,\n unfocused: false,\n bottomedOut: false,\n virtualScrollIndex: 0,\n blockingClicks: false\n }\n },\n components: {\n Status,\n Conversation,\n TimelineMenu,\n QuickFilterSettings,\n QuickViewSettings\n },\n computed: {\n filteredVisibleStatuses () {\n return this.timeline.visibleStatuses.filter(status => this.timelineName !== 'user' || (status.id >= this.timeline.minId && status.id <= this.timeline.maxId))\n },\n filteredPinnedStatusIds () {\n return (this.pinnedStatusIds || []).filter(statusId => this.timeline.statusesObject[statusId])\n },\n newStatusCount () {\n return this.timeline.newStatusCount\n },\n showLoadButton () {\n return this.timeline.newStatusCount > 0 || this.timeline.flushMarker !== 0\n },\n loadButtonString () {\n if (this.timeline.flushMarker !== 0) {\n return this.$t('timeline.reload')\n } else {\n return `${this.$t('timeline.show_new')} (${this.newStatusCount})`\n }\n },\n mobileLoadButtonString () {\n if (this.timeline.flushMarker !== 0) {\n return '+'\n } else {\n return this.newStatusCount > 99 ? '∞' : this.newStatusCount\n }\n },\n classes () {\n let rootClasses = !this.embedded ? ['panel', 'panel-default'] : ['-nonpanel']\n if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n return {\n root: rootClasses,\n header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading', '-sticky'] : []),\n body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n }\n },\n // id map of statuses which need to be hidden in the main list due to pinning logic\n pinnedStatusIdsObject () {\n return keyBy(this.pinnedStatusIds)\n },\n statusesToDisplay () {\n const amount = this.timeline.visibleStatuses.length\n const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n const nonPinnedIndex = this.virtualScrollIndex - this.filteredPinnedStatusIds.length\n const min = Math.max(0, nonPinnedIndex - statusesPerSide)\n const max = Math.min(amount, nonPinnedIndex + statusesPerSide)\n return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n },\n virtualScrollingEnabled () {\n return this.$store.getters.mergedConfig.virtualScrolling\n },\n ...mapState({\n mobileLayout: state => state.interface.layoutType === 'mobile'\n })\n },\n created () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n const showImmediately = this.timeline.visibleStatuses.length === 0\n\n window.addEventListener('scroll', this.handleScroll)\n\n if (store.state.api.fetchers[this.timelineName]) { return false }\n\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n showImmediately,\n userId: this.userId,\n listId: this.listId,\n tag: this.tag\n })\n },\n mounted () {\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.unfocused = document.hidden\n }\n window.addEventListener('keydown', this.handleShortKey)\n setTimeout(this.determineVisibleStatuses, 250)\n },\n unmounted () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('keydown', this.handleShortKey)\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.commit('setLoading', { timeline: this.timelineName, value: false })\n },\n methods: {\n scrollToTop () {\n window.scrollTo({ top: this.$el.offsetTop })\n },\n stopBlockingClicks: debounce(function () {\n this.blockingClicks = false\n }, 1000),\n blockClicksTemporarily () {\n if (!this.blockingClicks) {\n this.blockingClicks = true\n }\n this.stopBlockingClicks()\n },\n handleShortKey (e) {\n // Ignore when input fields are focused\n if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n if (e.key === '.') this.showNewStatuses()\n },\n showNewStatuses () {\n if (this.timeline.flushMarker !== 0) {\n this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n this.fetchOlderStatuses()\n } else {\n this.blockClicksTemporarily()\n this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n this.paused = false\n }\n window.scrollTo({ top: 0 })\n },\n fetchOlderStatuses: throttle(function () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setLoading', { timeline: this.timelineName, value: true })\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n older: true,\n showImmediately: true,\n userId: this.userId,\n listId: this.listId,\n tag: this.tag\n }).then(({ statuses }) => {\n if (statuses && statuses.length === 0) {\n this.bottomedOut = true\n }\n }).finally(() =>\n store.commit('setLoading', { timeline: this.timelineName, value: false })\n )\n }, 1000, this),\n determineVisibleStatuses () {\n if (!this.$refs.timeline) return\n if (!this.virtualScrollingEnabled) return\n\n const statuses = this.$refs.timeline.children\n const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n if (statuses.length === 0) return\n\n const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n // Start from approximating the index of some visible status by using the\n // the center of the screen on the timeline.\n let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n let err = statuses[approxIndex].getBoundingClientRect().y\n\n // if we have a previous scroll index that can be used, test if it's\n // closer than the previous approximation, use it if so\n\n const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n if (Math.abs(err) > virtualScrollIndexY) {\n approxIndex = cappedScrollIndex\n err = virtualScrollIndexY\n }\n\n // if the status is too far from viewport, check the next/previous ones if\n // they happen to be better\n while (err < -20 && approxIndex < statuses.length - 1) {\n err += statuses[approxIndex].offsetHeight\n approxIndex++\n }\n while (err > window.innerHeight + 100 && approxIndex > 0) {\n approxIndex--\n err -= statuses[approxIndex].offsetHeight\n }\n\n // this status is now the center point for virtual scrolling and visible\n // statuses will be nearby statuses before and after it\n this.virtualScrollIndex = approxIndex\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.timeline.loading === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n this.fetchOlderStatuses()\n }\n },\n handleScroll: throttle(function (e) {\n this.showScrollTop = this.$el.offsetTop < window.scrollY\n this.determineVisibleStatuses()\n this.scrollLoad(e)\n }, 200),\n handleVisibilityChange () {\n this.unfocused = document.hidden\n }\n },\n watch: {\n newStatusCount (count) {\n if (!this.$store.getters.mergedConfig.streaming) {\n return\n }\n if (count > 0) {\n // only 'stream' them when you're scrolled to the top\n const doc = document.documentElement\n const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n if (top < 15 &&\n !this.paused &&\n !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n ) {\n this.showNewStatuses()\n } else {\n this.paused = true\n }\n }\n }\n }\n}\n\nexport default Timeline\n","import { render } from \"./timeline.vue?vue&type=template&id=79de750e\"\nimport script from \"./timeline.js?vue&type=script&lang=js\"\nexport * from \"./timeline.js?vue&type=script&lang=js\"\n\nimport \"./timeline.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\nconst PublicTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.public }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'public' })\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'public')\n }\n\n}\n\nexport default PublicTimeline\n","import { render } from \"./public_timeline.vue?vue&type=template&id=5f2a502e\"\nimport script from \"./public_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.public_tl')\"\n :timeline=\"timeline\"\n :timeline-name=\"'public'\"\n />\n</template>\n\n<script src=\"./public_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\nconst PublicAndExternalTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.publicAndExternal }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'publicAndExternal' })\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'publicAndExternal')\n }\n}\n\nexport default PublicAndExternalTimeline\n","import { render } from \"./public_and_external_timeline.vue?vue&type=template&id=f6923484\"\nimport script from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.twkn')\"\n :timeline=\"timeline\"\n :timeline-name=\"'publicAndExternal'\"\n />\n</template>\n\n<script src=\"./public_and_external_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\nconst FriendsTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.friends }\n }\n}\n\nexport default FriendsTimeline\n","import { render } from \"./friends_timeline.vue?vue&type=template&id=22490669\"\nimport script from \"./friends_timeline.js?vue&type=script&lang=js\"\nexport * from \"./friends_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.timeline')\"\n :timeline=\"timeline\"\n :timeline-name=\"'friends'\"\n />\n</template>\n\n<script src=\"./friends_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\n\nconst TagTimeline = {\n created () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n },\n components: {\n Timeline\n },\n computed: {\n tag () { return this.$route.params.tag },\n timeline () { return this.$store.state.statuses.timelines.tag }\n },\n watch: {\n tag () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n }\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'tag')\n }\n}\n\nexport default TagTimeline\n","import { render } from \"./tag_timeline.vue?vue&type=template&id=047310d3\"\nimport script from \"./tag_timeline.js?vue&type=script&lang=js\"\nexport * from \"./tag_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"tag\"\n :timeline=\"timeline\"\n :timeline-name=\"'tag'\"\n :tag=\"tag\"\n />\n</template>\n\n<script src='./tag_timeline.js'></script>\n","import Timeline from '../timeline/timeline.vue'\n\nconst Bookmarks = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.bookmarks\n }\n },\n components: {\n Timeline\n },\n unmounted () {\n this.$store.commit('clearTimeline', { timeline: 'bookmarks' })\n }\n}\n\nexport default Bookmarks\n","import { render } from \"./bookmark_timeline.vue?vue&type=template&id=2b9c8ba0\"\nimport script from \"./bookmark_timeline.js?vue&type=script&lang=js\"\nexport * from \"./bookmark_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.bookmarks')\"\n :timeline=\"timeline\"\n :timeline-name=\"'bookmarks'\"\n />\n</template>\n\n<script src=\"./bookmark_timeline.js\"></script>\n","import Conversation from '../conversation/conversation.vue'\n\nconst conversationPage = {\n components: {\n Conversation\n },\n computed: {\n statusId () {\n return this.$route.params.id\n }\n }\n}\n\nexport default conversationPage\n","import { render } from \"./conversation-page.vue?vue&type=template&id=46654d24\"\nimport script from \"./conversation-page.js?vue&type=script&lang=js\"\nexport * from \"./conversation-page.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <conversation\n :collapsable=\"false\"\n is-page=\"true\"\n :status-id=\"statusId\"\n />\n</template>\n\n<script src=\"./conversation-page.js\"></script>\n","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t(\"nav.interactions\") }}\n </div>\n </div>\n <tab-switcher\n ref=\"tabSwitcher\"\n :on-switch=\"onModeSwitch\"\n >\n <span\n key=\"mentions\"\n :label=\"$t('nav.mentions')\"\n />\n <span\n key=\"likes+repeats\"\n :label=\"$t('interactions.favs_repeats')\"\n />\n <span\n key=\"follows\"\n :label=\"$t('interactions.follows')\"\n />\n <span\n key=\"reactions\"\n :label=\"$t('interactions.emoji_reactions')\"\n />\n <span\n v-if=\"canSeeReports\"\n key=\"reports\"\n :label=\"$t('interactions.reports')\"\n />\n <span\n v-if=\"!allowFollowingMove\"\n key=\"moves\"\n :label=\"$t('interactions.moves')\"\n />\n </tab-switcher>\n <Notifications\n ref=\"notifications\"\n :no-heading=\"true\"\n :minimal-mode=\"true\"\n :filter-mode=\"filterMode\"\n />\n </div>\n</template>\n\n<script src=\"./interactions.js\"></script>\n","import Notifications from '../notifications/notifications.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nconst tabModeDict = {\n mentions: ['mention'],\n 'likes+repeats': ['repeat', 'like'],\n follows: ['follow'],\n reactions: ['pleroma:emoji_reaction'],\n reports: ['pleroma:report'],\n moves: ['move']\n}\n\nconst Interactions = {\n data () {\n return {\n allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n filterMode: tabModeDict.mentions,\n canSeeReports: this.$store.state.users.currentUser.privileges.includes('reports_manage_reports')\n }\n },\n methods: {\n onModeSwitch (key) {\n this.filterMode = tabModeDict[key]\n }\n },\n components: {\n Notifications,\n TabSwitcher\n }\n}\n\nexport default Interactions\n","import { render } from \"./interactions.vue?vue&type=template&id=3b173532\"\nimport script from \"./interactions.js?vue&type=script&lang=js\"\nexport * from \"./interactions.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\n\nconst DMs = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.dms\n }\n },\n components: {\n Timeline\n }\n}\n\nexport default DMs\n","import { render } from \"./dm_timeline.vue?vue&type=template&id=294f8b6d\"\nimport script from \"./dm_timeline.js?vue&type=script&lang=js\"\nexport * from \"./dm_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.dms')\"\n :timeline=\"timeline\"\n :timeline-name=\"'dms'\"\n />\n</template>\n\n<script src=\"./dm_timeline.js\"></script>\n","<template>\n <div v-if=\"isNew\">\n <ChatNew @cancel=\"cancelNewChat\" />\n </div>\n <div\n v-else\n class=\"chat-list panel panel-default\"\n >\n <div class=\"panel-heading -sticky\">\n <span class=\"title\">\n {{ $t(\"chats.chats\") }}\n </span>\n <button\n class=\"button-default\"\n @click=\"newChat\"\n >\n {{ $t(\"chats.new\") }}\n </button>\n </div>\n <div class=\"panel-body\">\n <div\n v-if=\"sortedChatList.length > 0\"\n class=\"timeline\"\n >\n <List :items=\"sortedChatList\">\n <template #item=\"{item}\">\n <ChatListItem\n :key=\"item.id\"\n :compact=\"false\"\n :chat=\"item\"\n />\n </template>\n </List>\n </div>\n <div\n v-else\n class=\"emtpy-chat-list-alert\"\n >\n <span>{{ $t('chats.empty_chat_list_placeholder') }}</span>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_list.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.chat-list {\n min-height: 25em;\n margin-bottom: 0;\n}\n\n.emtpy-chat-list-alert {\n padding: 3em;\n font-size: 1.2em;\n display: flex;\n justify-content: center;\n color: $fallback--text;\n color: var(--faint, $fallback--text);\n}\n\n</style>\n","<template>\n <div\n class=\"chat-list-item\"\n @click.capture.prevent=\"openChat\"\n >\n <div class=\"chat-list-item-left\">\n <UserAvatar\n :user=\"chat.account\"\n height=\"48px\"\n width=\"48px\"\n />\n </div>\n <div class=\"chat-list-item-center\">\n <div class=\"heading\">\n <span\n v-if=\"chat.account\"\n class=\"name-and-account-name\"\n >\n <ChatTitle\n :user=\"chat.account\"\n />\n </span>\n <span class=\"heading-right\" />\n <div class=\"time-wrapper\">\n <Timeago\n :time=\"chat.updated_at\"\n :auto-update=\"60\"\n />\n </div>\n </div>\n <div class=\"chat-preview\">\n <StatusBody\n class=\"chat-preview-body\"\n :status=\"messageForStatusContent\"\n :single-line=\"true\"\n />\n <div\n v-if=\"chat.unread > 0\"\n class=\"badge badge-notification unread-chat-count\"\n >\n {{ chat.unread }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_list_item.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./chat_list_item\";\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { defineAsyncComponent } from 'vue'\n\nexport default {\n name: 'ChatTitle',\n components: {\n UserAvatar,\n RichContent,\n UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n },\n props: [\n 'user', 'withAvatar'\n ],\n computed: {\n title () {\n return this.user ? this.user.screen_name_ui : ''\n },\n htmlTitle () {\n return this.user ? this.user.name_html : ''\n }\n }\n}\n","import { render } from \"./chat_title.vue?vue&type=template&id=e9d70b10\"\nimport script from \"./chat_title.js?vue&type=script&lang=js\"\nexport * from \"./chat_title.js?vue&type=script&lang=js\"\n\nimport \"./chat_title.vue?vue&type=style&index=0&id=e9d70b10&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"chat-title\"\n :title=\"title\"\n >\n <UserPopover\n v-if=\"withAvatar && user\"\n class=\"avatar-container\"\n :user-id=\"user.id\"\n >\n <UserAvatar\n class=\"titlebar-avatar\"\n :user=\"user\"\n />\n </UserPopover>\n <RichContent\n v-if=\"user\"\n class=\"username\"\n :title=\"'@'+(user && user.screen_name_ui)\"\n :html=\"htmlTitle\"\n :emoji=\"user.emoji || []\"\n />\n </div>\n</template>\n\n<script src=\"./chat_title.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.chat-title {\n display: flex;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n --emoji-size: 14px;\n\n .username {\n max-width: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: inline;\n word-wrap: break-word;\n overflow: hidden;\n }\n\n .avatar-container {\n align-self: center;\n line-height: 1;\n }\n\n .titlebar-avatar {\n margin-right: 0.5em;\n height: 1.5em;\n width: 1.5em;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n\n &.animated::before {\n display: none;\n }\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport StatusBody from '../status_content/status_content.vue'\nimport fileType from 'src/services/file_type/file_type.service'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\n\nconst ChatListItem = {\n name: 'ChatListItem',\n props: [\n 'chat'\n ],\n components: {\n UserAvatar,\n AvatarList,\n Timeago,\n ChatTitle,\n StatusBody\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n attachmentInfo () {\n if (this.chat.lastMessage.attachments.length === 0) { return }\n\n const types = this.chat.lastMessage.attachments.map(file => fileType.fileType(file.mimetype))\n if (types.includes('video')) {\n return this.$t('file_type.video')\n } else if (types.includes('audio')) {\n return this.$t('file_type.audio')\n } else if (types.includes('image')) {\n return this.$t('file_type.image')\n } else {\n return this.$t('file_type.file')\n }\n },\n messageForStatusContent () {\n const message = this.chat.lastMessage\n const messageEmojis = message ? message.emojis : []\n const isYou = message && message.account_id === this.currentUser.id\n const content = message ? (this.attachmentInfo || message.content) : ''\n const messagePreview = isYou ? `<i>${this.$t('chats.you')}</i> ${content}` : content\n return {\n summary: '',\n emojis: messageEmojis,\n raw_html: messagePreview,\n text: messagePreview,\n attachments: []\n }\n }\n },\n methods: {\n openChat (_e) {\n if (this.chat.id) {\n this.$router.push({\n name: 'chat',\n params: {\n username: this.currentUser.screen_name,\n recipient_id: this.chat.account.id\n }\n })\n }\n }\n }\n}\n\nexport default ChatListItem\n","import { render } from \"./chat_list_item.vue?vue&type=template&id=a202646c\"\nimport script from \"./chat_list_item.js?vue&type=script&lang=js\"\nexport * from \"./chat_list_item.js?vue&type=script&lang=js\"\n\nimport \"./chat_list_item.vue?vue&type=style&index=0&id=a202646c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"panel-default panel chat-new\"\n >\n <div\n ref=\"header\"\n class=\"panel-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"goBack\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n </div>\n <div class=\"input-wrap\">\n <div class=\"input-search\">\n <FAIcon\n class=\"search-icon fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </div>\n <input\n ref=\"search\"\n v-model=\"query\"\n placeholder=\"Search people\"\n @input=\"onInput\"\n >\n </div>\n <div class=\"member-list\">\n <div\n v-for=\"user in availableUsers\"\n :key=\"user.id\"\n class=\"member\"\n >\n <div @click.capture.prevent=\"goToChat(user)\">\n <BasicUserCard :user=\"user\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_new.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./chat_new\";\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst chatNew = {\n components: {\n BasicUserCard,\n UserAvatar\n },\n data () {\n return {\n suggestions: [],\n userIds: [],\n loading: false,\n query: ''\n }\n },\n async created () {\n const { chats } = await this.backendInteractor.chats()\n chats.forEach(chat => this.suggestions.push(chat.account))\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.findUser(userId))\n },\n availableUsers () {\n if (this.query.length !== 0) {\n return this.users\n } else {\n return this.suggestions\n }\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n backendInteractor: state => state.api.backendInteractor\n }),\n ...mapGetters(['findUser'])\n },\n methods: {\n goBack () {\n this.$emit('cancel')\n },\n goToChat (user) {\n this.$router.push({ name: 'chat', params: { recipient_id: user.id } })\n },\n onInput () {\n this.search(this.query)\n },\n addUser (user) {\n this.selectedUserIds.push(user.id)\n this.query = ''\n },\n removeUser (userId) {\n this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts' })\n .then(data => {\n this.loading = false\n this.userIds = data.accounts.map(a => a.id)\n })\n }\n }\n}\n\nexport default chatNew\n","import { render } from \"./chat_new.vue?vue&type=template&id=527ae593\"\nimport script from \"./chat_new.js?vue&type=script&lang=js\"\nexport * from \"./chat_new.js?vue&type=script&lang=js\"\n\nimport \"./chat_new.vue?vue&type=style&index=0&id=527ae593&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport ChatListItem from '../chat_list_item/chat_list_item.vue'\nimport ChatNew from '../chat_new/chat_new.vue'\nimport List from '../list/list.vue'\n\nconst ChatList = {\n components: {\n ChatListItem,\n List,\n ChatNew\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n ...mapGetters(['sortedChatList'])\n },\n data () {\n return {\n isNew: false\n }\n },\n created () {\n this.$store.dispatch('fetchChats', { latest: true })\n },\n methods: {\n cancelNewChat () {\n this.isNew = false\n this.$store.dispatch('fetchChats', { latest: true })\n },\n newChat () {\n this.isNew = true\n }\n }\n}\n\nexport default ChatList\n","import { render } from \"./chat_list.vue?vue&type=template&id=66fabc09\"\nimport script from \"./chat_list.js?vue&type=script&lang=js\"\nexport * from \"./chat_list.js?vue&type=script&lang=js\"\n\nimport \"./chat_list.vue?vue&type=style&index=0&id=66fabc09&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"chat-view\">\n <div class=\"chat-view-inner\">\n <div\n ref=\"inner\"\n class=\"panel-default panel chat-view-body\"\n >\n <div\n ref=\"header\"\n class=\"panel-heading -sticky chat-view-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"goBack\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n <div class=\"title text-center\">\n <ChatTitle\n :user=\"recipient\"\n :with-avatar=\"true\"\n />\n </div>\n </div>\n <div\n class=\"message-list\"\n :style=\"{ height: scrollableContainerHeight }\"\n >\n <template v-if=\"!errorLoadingChat\">\n <ChatMessage\n v-for=\"chatViewItem in chatViewItems\"\n :key=\"chatViewItem.id\"\n :author=\"recipient\"\n :chat-view-item=\"chatViewItem\"\n :hovered-message-chain=\"chatViewItem.messageChainId === hoveredMessageChainId\"\n @hover=\"onMessageHover\"\n />\n </template>\n <div\n v-else\n class=\"chat-loading-error\"\n >\n <div class=\"alert error\">\n {{ $t('chats.error_loading_chat') }}\n </div>\n </div>\n </div>\n <div\n ref=\"footer\"\n class=\"panel-body footer\"\n >\n <div\n class=\"jump-to-bottom-button\"\n :class=\"{ 'visible': jumpToBottomButtonVisible }\"\n @click=\"scrollDown({ behavior: 'smooth' })\"\n >\n <span>\n <FAIcon icon=\"chevron-down\" />\n <div\n v-if=\"newMessageCount\"\n class=\"badge badge-notification unread-chat-count unread-message-count\"\n >\n {{ newMessageCount }}\n </div>\n </span>\n </div>\n <PostStatusForm\n :disable-subject=\"true\"\n :disable-scope-selector=\"true\"\n :disable-notice=\"true\"\n :disable-lock-warning=\"true\"\n :disable-polls=\"true\"\n :disable-sensitivity-checkbox=\"true\"\n :disable-submit=\"errorLoadingChat || !currentChat\"\n :disable-preview=\"true\"\n :optimistic-posting=\"true\"\n :post-handler=\"sendMessage\"\n :submit-on-enter=\"!mobileLayout\"\n :preserve-focus=\"!mobileLayout\"\n :auto-focus=\"!mobileLayout\"\n :placeholder=\"formPlaceholder\"\n :file-limit=\"1\"\n max-height=\"160\"\n emoji-picker-placement=\"top\"\n @resize=\"handleResize\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./chat\";\n</style>\n","<template>\n <div\n v-if=\"isMessage\"\n class=\"chat-message-wrapper\"\n :class=\"{ 'hovered-message-chain': hoveredMessageChain }\"\n @mouseover=\"onHover(true)\"\n @mouseleave=\"onHover(false)\"\n >\n <div\n class=\"chat-message\"\n :class=\"[{ 'outgoing': isCurrentUser, 'incoming': !isCurrentUser }]\"\n >\n <div\n v-if=\"!isCurrentUser\"\n class=\"avatar-wrapper\"\n >\n <UserPopover\n v-if=\"chatViewItem.isHead\"\n :user-id=\"author.id\"\n >\n <UserAvatar\n :compact=\"true\"\n :better-shadow=\"betterShadow\"\n :user=\"author\"\n />\n </UserPopover>\n </div>\n <div class=\"chat-message-inner\">\n <div\n class=\"status-body\"\n :style=\"{ 'min-width': message.attachment ? '80%' : '' }\"\n >\n <div\n class=\"media status\"\n :class=\"{ 'without-attachment': !hasAttachment, 'pending': chatViewItem.data.pending, 'error': chatViewItem.data.error }\"\n style=\"position: relative;\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n >\n <div\n class=\"chat-message-menu\"\n :class=\"{ 'visible': hovered || menuOpened }\"\n >\n <Popover\n trigger=\"click\"\n placement=\"top\"\n bound-to-selector=\".chat-view-inner\"\n :bound-to=\"{ x: 'container' }\"\n :margin=\"popoverMarginStyle\"\n @show=\"menuOpened = true\"\n @close=\"menuOpened = false\"\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click=\"deleteMessage\"\n >\n <FAIcon icon=\"times\" /> {{ $t(\"chats.delete\") }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button\n class=\"button-default menu-icon\"\n :title=\"$t('chats.more')\"\n >\n <FAIcon icon=\"ellipsis-h\" />\n </button>\n </template>\n </Popover>\n </div>\n <StatusContent\n class=\"message-content\"\n :status=\"messageForStatusContent\"\n :full-content=\"true\"\n >\n <template #footer>\n <span\n class=\"created-at\"\n >\n {{ createdAt }}\n </span>\n </template>\n </StatusContent>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"chat-message-date-separator\"\n >\n <ChatMessageDate :date=\"chatViewItem.date\" />\n </div>\n</template>\n\n<script src=\"./chat_message.js\"></script>\n<style lang=\"scss\">\n@import \"./chat_message\";\n\n</style>\n","<template>\n <time>\n {{ displayDate }}\n </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['date'],\n computed: {\n displayDate () {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n\n if (this.date.getTime() === today.getTime()) {\n return this.$t('display_date.today')\n } else {\n return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n }\n }\n }\n}\n</script>\n","import { render } from \"./chat_message_date.vue?vue&type=template&id=23377998\"\nimport script from \"./chat_message_date.vue?vue&type=script&lang=js\"\nexport * from \"./chat_message_date.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport Popover from '../popover/popover.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport ChatMessageDate from '../chat_message_date/chat_message_date.vue'\nimport { defineAsyncComponent } from 'vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faEllipsisH\n)\n\nconst ChatMessage = {\n name: 'ChatMessage',\n props: [\n 'author',\n 'edited',\n 'noHeading',\n 'chatViewItem',\n 'hoveredMessageChain'\n ],\n emits: ['hover'],\n components: {\n Popover,\n Attachment,\n StatusContent,\n UserAvatar,\n Gallery,\n LinkPreview,\n ChatMessageDate,\n UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n },\n computed: {\n // Returns HH:MM (hours and minutes) in local time.\n createdAt () {\n const time = this.chatViewItem.data.created_at\n return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n },\n isCurrentUser () {\n return this.message.account_id === this.currentUser.id\n },\n message () {\n return this.chatViewItem.data\n },\n isMessage () {\n return this.chatViewItem.type === 'message'\n },\n messageForStatusContent () {\n return {\n summary: '',\n emojis: this.message.emojis,\n raw_html: this.message.content || '',\n text: this.message.content || '',\n attachments: this.message.attachments\n }\n },\n hasAttachment () {\n return this.message.attachments.length > 0\n },\n ...mapState({\n betterShadow: state => state.interface.browserSupport.cssFilter,\n currentUser: state => state.users.currentUser,\n restrictedNicknames: state => state.instance.restrictedNicknames\n }),\n popoverMarginStyle () {\n if (this.isCurrentUser) {\n return {}\n } else {\n return { left: 50 }\n }\n },\n ...mapGetters(['mergedConfig', 'findUser'])\n },\n data () {\n return {\n hovered: false,\n menuOpened: false\n }\n },\n methods: {\n onHover (bool) {\n this.$emit('hover', { isHovered: bool, messageChainId: this.chatViewItem.messageChainId })\n },\n async deleteMessage () {\n const confirmed = window.confirm(this.$t('chats.delete_confirm'))\n if (confirmed) {\n await this.$store.dispatch('deleteChatMessage', {\n messageId: this.chatViewItem.data.id,\n chatId: this.chatViewItem.data.chat_id\n })\n }\n this.hovered = false\n this.menuOpened = false\n }\n }\n}\n\nexport default ChatMessage\n","import { render } from \"./chat_message.vue?vue&type=template&id=e61e03a2\"\nimport script from \"./chat_message.js?vue&type=script&lang=js\"\nexport * from \"./chat_message.js?vue&type=script&lang=js\"\n\nimport \"./chat_message.vue?vue&type=style&index=0&id=e61e03a2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Captures a scroll position\nexport const getScrollPosition = () => {\n return {\n scrollTop: window.scrollY,\n scrollHeight: document.documentElement.scrollHeight,\n offsetHeight: window.innerHeight\n }\n}\n\n// A helper function that is used to keep the scroll position fixed as the new elements are added to the top\n// Takes two scroll positions, before and after the update.\nexport const getNewTopPosition = (previousPosition, newPosition) => {\n return previousPosition.scrollTop + (newPosition.scrollHeight - previousPosition.scrollHeight)\n}\n\nexport const isBottomedOut = (offset = 0) => {\n const scrollHeight = window.scrollY + offset\n const totalHeight = document.documentElement.scrollHeight - window.innerHeight\n return totalHeight <= scrollHeight\n}\n// Returns whether or not the scrollbar is visible.\nexport const isScrollable = () => {\n return document.documentElement.scrollHeight > window.innerHeight\n}\n","import _ from 'lodash'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport ChatMessage from '../chat_message/chat_message.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\nimport chatService from '../../services/chat_service/chat_service.js'\nimport { promiseInterval } from '../../services/promise_interval/promise_interval.js'\nimport { getScrollPosition, getNewTopPosition, isBottomedOut, isScrollable } from './chat_layout_utils.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { buildFakeMessage } from '../../services/chat_utils/chat_utils.js'\n\nlibrary.add(\n faChevronDown,\n faChevronLeft\n)\n\nconst BOTTOMED_OUT_OFFSET = 10\nconst JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 10\nconst SAFE_RESIZE_TIME_OFFSET = 100\nconst MARK_AS_READ_DELAY = 1500\nconst MAX_RETRIES = 10\n\nconst Chat = {\n components: {\n ChatMessage,\n ChatTitle,\n PostStatusForm\n },\n data () {\n return {\n jumpToBottomButtonVisible: false,\n hoveredMessageChainId: undefined,\n lastScrollPosition: {},\n scrollableContainerHeight: '100%',\n errorLoadingChat: false,\n messageRetriers: {}\n }\n },\n created () {\n this.startFetching()\n window.addEventListener('resize', this.handleResize)\n },\n mounted () {\n window.addEventListener('scroll', this.handleScroll)\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n }\n\n this.$nextTick(() => {\n this.handleResize()\n })\n },\n unmounted () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('resize', this.handleResize)\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.dispatch('clearCurrentChat')\n },\n computed: {\n recipient () {\n return this.currentChat && this.currentChat.account\n },\n recipientId () {\n return this.$route.params.recipient_id\n },\n formPlaceholder () {\n if (this.recipient) {\n return this.$t('chats.message_user', { nickname: this.recipient.screen_name_ui })\n } else {\n return ''\n }\n },\n chatViewItems () {\n return chatService.getView(this.currentChatMessageService)\n },\n newMessageCount () {\n return this.currentChatMessageService && this.currentChatMessageService.newMessageCount\n },\n streamingEnabled () {\n return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n },\n ...mapGetters([\n 'currentChat',\n 'currentChatMessageService',\n 'findOpenedChatByRecipientId',\n 'mergedConfig'\n ]),\n ...mapState({\n backendInteractor: state => state.api.backendInteractor,\n mastoUserSocketStatus: state => state.api.mastoUserSocketStatus,\n mobileLayout: state => state.interface.layoutType === 'mobile',\n currentUser: state => state.users.currentUser\n })\n },\n watch: {\n chatViewItems () {\n // We don't want to scroll to the bottom on a new message when the user is viewing older messages.\n // Therefore we need to know whether the scroll position was at the bottom before the DOM update.\n const bottomedOutBeforeUpdate = this.bottomedOut(BOTTOMED_OUT_OFFSET)\n this.$nextTick(() => {\n if (bottomedOutBeforeUpdate) {\n this.scrollDown()\n }\n })\n },\n $route: function () {\n this.startFetching()\n },\n mastoUserSocketStatus (newValue) {\n if (newValue === WSConnectionStatus.JOINED) {\n this.fetchChat({ isFirstFetch: true })\n }\n }\n },\n methods: {\n // Used to animate the avatar near the first message of the message chain when any message belonging to the chain is hovered\n onMessageHover ({ isHovered, messageChainId }) {\n this.hoveredMessageChainId = isHovered ? messageChainId : undefined\n },\n onFilesDropped () {\n this.$nextTick(() => {\n this.handleResize()\n })\n },\n handleVisibilityChange () {\n this.$nextTick(() => {\n if (!document.hidden && this.bottomedOut(BOTTOMED_OUT_OFFSET)) {\n this.scrollDown({ forceRead: true })\n }\n })\n },\n // \"Sticks\" scroll to bottom instead of top, helps with OSK resizing the viewport\n handleResize (opts = {}) {\n const { delayed = false } = opts\n\n if (delayed) {\n setTimeout(() => {\n this.handleResize({ ...opts, delayed: false })\n }, SAFE_RESIZE_TIME_OFFSET)\n return\n }\n\n this.$nextTick(() => {\n const { offsetHeight = undefined } = getScrollPosition()\n const diff = offsetHeight - this.lastScrollPosition.offsetHeight\n if (diff !== 0 && !this.bottomedOut()) {\n this.$nextTick(() => {\n window.scrollBy({ top: -Math.trunc(diff) })\n })\n }\n this.lastScrollPosition = getScrollPosition()\n })\n },\n scrollDown (options = {}) {\n const { behavior = 'auto', forceRead = false } = options\n this.$nextTick(() => {\n window.scrollTo({ top: document.documentElement.scrollHeight, behavior })\n })\n if (forceRead) {\n this.readChat()\n }\n },\n readChat () {\n if (!(this.currentChatMessageService && this.currentChatMessageService.maxId)) { return }\n if (document.hidden) { return }\n const lastReadId = this.currentChatMessageService.maxId\n this.$store.dispatch('readChat', {\n id: this.currentChat.id,\n lastReadId\n })\n },\n bottomedOut (offset) {\n return isBottomedOut(offset)\n },\n reachedTop () {\n return window.scrollY <= 0\n },\n cullOlderCheck () {\n window.setTimeout(() => {\n if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)\n }\n }, 5000)\n },\n handleScroll: _.throttle(function () {\n this.lastScrollPosition = getScrollPosition()\n if (!this.currentChat) { return }\n\n if (this.reachedTop()) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.jumpToBottomButtonVisible = false\n this.cullOlderCheck()\n if (this.newMessageCount > 0) {\n // Use a delay before marking as read to prevent situation where new messages\n // arrive just as you're leaving the view and messages that you didn't actually\n // get to see get marked as read.\n window.setTimeout(() => {\n // Don't mark as read if the element doesn't exist, user has left chat view\n if (this.$el) this.readChat()\n }, MARK_AS_READ_DELAY)\n }\n } else {\n this.jumpToBottomButtonVisible = true\n }\n }, 200),\n handleScrollUp (positionBeforeLoading) {\n const positionAfterLoading = getScrollPosition()\n window.scrollTo({\n top: getNewTopPosition(positionBeforeLoading, positionAfterLoading)\n })\n },\n fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n const chatMessageService = this.currentChatMessageService\n if (!chatMessageService) { return }\n if (fetchLatest && this.streamingEnabled) { return }\n\n const chatId = chatMessageService.chatId\n const fetchOlderMessages = !!maxId\n const sinceId = fetchLatest && chatMessageService.maxId\n\n return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n .then((messages) => {\n // Clear the current chat in case we're recovering from a ws connection loss.\n if (isFirstFetch) {\n chatService.clear(chatMessageService)\n }\n\n const positionBeforeUpdate = getScrollPosition()\n this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n this.$nextTick(() => {\n if (fetchOlderMessages) {\n this.handleScrollUp(positionBeforeUpdate)\n }\n\n // In vertical screens, the first batch of fetched messages may not always take the\n // full height of the scrollable container.\n // If this is the case, we want to fetch the messages until the scrollable container\n // is fully populated so that the user has the ability to scroll up and load the history.\n if (!isScrollable() && messages.length > 0) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n }\n })\n })\n })\n },\n async startFetching () {\n let chat = this.findOpenedChatByRecipientId(this.recipientId)\n if (!chat) {\n try {\n chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n } catch (e) {\n console.error('Error creating or getting a chat', e)\n this.errorLoadingChat = true\n }\n }\n if (chat) {\n this.$nextTick(() => {\n this.scrollDown({ forceRead: true })\n })\n this.$store.dispatch('addOpenedChat', { chat })\n this.doStartFetching()\n }\n },\n doStartFetching () {\n this.$store.dispatch('startFetchingCurrentChat', {\n fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n })\n this.fetchChat({ isFirstFetch: true })\n },\n handleAttachmentPosting () {\n this.$nextTick(() => {\n this.handleResize()\n // When the posting form size changes because of a media attachment, we need an extra resize\n // to account for the potential delay in the DOM update.\n this.scrollDown({ forceRead: true })\n })\n },\n sendMessage ({ status, media, idempotencyKey }) {\n const params = {\n id: this.currentChat.id,\n content: status,\n idempotencyKey\n }\n\n if (media[0]) {\n params.mediaId = media[0].id\n }\n\n const fakeMessage = buildFakeMessage({\n attachments: media,\n chatId: this.currentChat.id,\n content: status,\n userId: this.currentUser.id,\n idempotencyKey\n })\n\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n messages: [fakeMessage]\n }).then(() => {\n this.handleAttachmentPosting()\n })\n\n return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n },\n doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n if (retriesLeft <= 0) return\n\n this.backendInteractor.sendChatMessage(params)\n .then(data => {\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n updateMaxId: false,\n messages: [{ ...data, fakeId: fakeMessage.id }]\n })\n\n return data\n })\n .catch(error => {\n console.error('Error sending message', error)\n this.$store.dispatch('handleMessageError', {\n chatId: this.currentChat.id,\n fakeId: fakeMessage.id,\n isRetry: retriesLeft !== MAX_RETRIES\n })\n if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n }\n return {}\n })\n\n return Promise.resolve(fakeMessage)\n },\n goBack () {\n this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n }\n }\n}\n\nexport default Chat\n","import { render } from \"./chat.vue?vue&type=template&id=796d1749\"\nimport script from \"./chat.js?vue&type=script&lang=js\"\nexport * from \"./chat.js?vue&type=script&lang=js\"\n\nimport \"./chat.vue?vue&type=style&index=0&id=796d1749&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <div\n v-if=\"user\"\n class=\"user-profile panel panel-default\"\n >\n <UserCard\n :user-id=\"userId\"\n :switcher=\"true\"\n :selected=\"timeline.viewing\"\n avatar-action=\"zoom\"\n rounded=\"top\"\n :has-note-editor=\"true\"\n />\n <span\n v-if=\"!!user.birthday\"\n class=\"user-birthday\"\n >\n <FAIcon\n class=\"fa-old-padding\"\n icon=\"birthday-cake\"\n />\n {{ $t('user_card.birthday', { birthday: formattedBirthday }) }}\n </span>\n <div\n v-if=\"user.fields_html && user.fields_html.length > 0\"\n class=\"user-profile-fields\"\n >\n <dl\n v-for=\"(field, index) in user.fields_html\"\n :key=\"index\"\n class=\"user-profile-field\"\n >\n <dt\n :title=\"user.fields_text[index].name\"\n class=\"user-profile-field-name\"\n >\n <RichContent\n :html=\"field.name\"\n :emoji=\"user.emoji\"\n />\n </dt>\n <dd\n :title=\"user.fields_text[index].value\"\n class=\"user-profile-field-value\"\n >\n <RichContent\n :html=\"field.value\"\n :emoji=\"user.emoji\"\n />\n </dd>\n </dl>\n </div>\n <tab-switcher\n :active-tab=\"tab\"\n :render-only-focused=\"true\"\n :on-switch=\"onTabSwitch\"\n >\n <Timeline\n key=\"statuses\"\n :label=\"$t('user_card.statuses')\"\n :count=\"user.statuses_count\"\n :embedded=\"true\"\n :title=\"$t('user_profile.timeline_title')\"\n :timeline=\"timeline\"\n timeline-name=\"user\"\n :user-id=\"userId\"\n :pinned-status-ids=\"user.pinnedStatusIds\"\n :in-profile=\"true\"\n :footer-slipgate=\"footerRef\"\n />\n <div\n v-if=\"followsTabVisible\"\n key=\"followees\"\n :label=\"$t('user_card.followees')\"\n :disabled=\"!user.friends_count\"\n >\n <FriendList :user-id=\"userId\">\n <template #item=\"{item}\">\n <FollowCard :user=\"item\" />\n </template>\n </FriendList>\n </div>\n <div\n v-if=\"followersTabVisible\"\n key=\"followers\"\n :label=\"$t('user_card.followers')\"\n :disabled=\"!user.followers_count\"\n >\n <FollowerList :user-id=\"userId\">\n <template #item=\"{item}\">\n <FollowCard\n :user=\"item\"\n :no-follows-you=\"isUs\"\n />\n </template>\n </FollowerList>\n </div>\n <Timeline\n key=\"media\"\n :label=\"$t('user_card.media')\"\n :disabled=\"!media.visibleStatuses.length\"\n :embedded=\"true\"\n :title=\"$t('user_card.media')\"\n timeline-name=\"media\"\n :timeline=\"media\"\n :user-id=\"userId\"\n :in-profile=\"true\"\n :footer-slipgate=\"footerRef\"\n />\n <Timeline\n v-if=\"isUs\"\n key=\"favorites\"\n :label=\"$t('user_card.favorites')\"\n :disabled=\"!favorites.visibleStatuses.length\"\n :embedded=\"true\"\n :title=\"$t('user_card.favorites')\"\n timeline-name=\"favorites\"\n :timeline=\"favorites\"\n :in-profile=\"true\"\n :footer-slipgate=\"footerRef\"\n />\n </tab-switcher>\n <div\n :ref=\"setFooterRef\"\n class=\"panel-footer\"\n />\n </div>\n <div\n v-else\n class=\"panel user-profile-placeholder\"\n >\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('settings.profile_tab') }}\n </div>\n </div>\n <div class=\"panel-body\">\n <span v-if=\"error\">{{ error }}</span>\n <FAIcon\n v-else\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./user_profile.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-profile {\n flex: 2;\n flex-basis: 500px;\n\n // No sticky header on user profile\n --currentPanelStack: 1;\n\n .user-birthday {\n margin: 0 0.75em 0.5em;\n }\n\n .user-profile-fields {\n margin: 0 0.5em;\n\n img {\n object-fit: contain;\n vertical-align: middle;\n max-width: 100%;\n max-height: 400px;\n\n &.emoji {\n width: 18px;\n height: 18px;\n }\n }\n\n .user-profile-field {\n display: flex;\n margin: 0.25em;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .user-profile-field-name {\n flex: 0 1 30%;\n font-weight: 500;\n text-align: right;\n color: var(--lightText);\n min-width: 120px;\n border-right: 1px solid var(--border, $fallback--border);\n }\n\n .user-profile-field-value {\n flex: 1 1 70%;\n color: var(--text);\n margin: 0 0 0 0.25em;\n }\n\n .user-profile-field-name,\n .user-profile-field-value {\n line-height: 1.3;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n padding: 0.5em 1.5em;\n box-sizing: border-box;\n }\n }\n }\n\n .userlist-placeholder {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 2em;\n }\n}\n\n.user-profile-placeholder {\n .panel-body {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 7em;\n }\n}\n</style>\n","<template>\n <basic-user-card :user=\"user\">\n <div class=\"follow-card-content-container\">\n <span\n v-if=\"isMe || (!noFollowsYou && relationship.followed_by)\"\n class=\"faint\"\n >\n {{ isMe ? $t('user_card.its_you') : $t('user_card.follows_you') }}\n </span>\n <template v-if=\"!loggedIn\">\n <div\n v-if=\"!relationship.following\"\n class=\"follow-card-follow-button\"\n >\n <RemoteFollow :user=\"user\" />\n </div>\n </template>\n <template v-else-if=\"!isMe\">\n <FollowButton\n :relationship=\"relationship\"\n :label-following=\"$t('user_card.follow_unfollow')\"\n class=\"follow-card-follow-button\"\n :user=\"user\"\n />\n <RemoveFollowerButton\n v-if=\"noFollowsYou && relationship.followed_by\"\n :user=\"user\"\n :relationship=\"relationship\"\n class=\"follow-card-button\"\n />\n </template>\n </div>\n </basic-user-card>\n</template>\n\n<script src=\"./follow_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-card {\n &-content-container {\n flex-shrink: 0;\n display: flex;\n flex-flow: row wrap;\n justify-content: space-between;\n line-height: 1.5em;\n }\n\n &-button {\n margin-top: 0.5em;\n padding: 0 1.5em;\n margin-left: 1em;\n }\n\n &-follow-button {\n margin-top: 0.5em;\n margin-left: auto;\n width: 10em;\n }\n}\n</style>\n","import ConfirmModal from '../confirm_modal/confirm_modal.vue'\n\nexport default {\n props: ['user', 'relationship'],\n data () {\n return {\n inProgress: false,\n showingConfirmRemoveFollower: false\n }\n },\n components: {\n ConfirmModal\n },\n computed: {\n label () {\n if (this.inProgress) {\n return this.$t('user_card.follow_progress')\n } else {\n return this.$t('user_card.remove_follower')\n }\n },\n shouldConfirmRemoveUserFromFollowers () {\n return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers\n }\n },\n methods: {\n showConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = true\n },\n hideConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = false\n },\n onClick () {\n if (!this.shouldConfirmRemoveUserFromFollowers) {\n this.doRemoveUserFromFollowers()\n } else {\n this.showConfirmRemoveUserFromFollowers()\n }\n },\n doRemoveUserFromFollowers () {\n this.inProgress = true\n this.$store.dispatch('removeUserFromFollowers', this.relationship.id).then(() => {\n this.inProgress = false\n })\n this.hideConfirmRemoveUserFromFollowers()\n }\n }\n}\n","import { render } from \"./remove_follower_button.vue?vue&type=template&id=bc80064a\"\nimport script from \"./remove_follower_button.js?vue&type=script&lang=js\"\nexport * from \"./remove_follower_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n class=\"btn button-default follow-button\"\n :class=\"{ toggled: inProgress }\"\n :disabled=\"inProgress\"\n :title=\"$t('user_card.remove_follower')\"\n @click=\"onClick\"\n >\n {{ label }}\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmRemoveFollower\"\n :title=\"$t('user_card.remove_follower_confirm_title')\"\n :confirm-text=\"$t('user_card.remove_follower_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.remove_follower_confirm_cancel_button')\"\n @accepted=\"doRemoveUserFromFollowers\"\n @cancelled=\"hideConfirmRemoveUserFromFollowers\"\n >\n <i18n-t\n keypath=\"user_card.remove_follower_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n </button>\n</template>\n\n<script src=\"./remove_follower_button.js\"></script>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport RemoveFollowerButton from '../remove_follower_button/remove_follower_button.vue'\n\nconst FollowCard = {\n props: [\n 'user',\n 'noFollowsYou'\n ],\n components: {\n BasicUserCard,\n RemoteFollow,\n FollowButton,\n RemoveFollowerButton\n },\n computed: {\n isMe () {\n return this.$store.state.users.currentUser.id === this.user.id\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n relationship () {\n return this.$store.getters.relationship(this.user.id)\n }\n }\n}\n\nexport default FollowCard\n","import { render } from \"./follow_card.vue?vue&type=template&id=e6b6839c\"\nimport script from \"./follow_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_card.vue?vue&type=style&index=0&id=e6b6839c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst withLoadMore = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n unmounted, // function called at \"destroyed\" lifecycle\n childPropName = 'entries', // name of the prop to be passed into the wrapped component\n additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n const originalProps = Object.keys(getComponentProps(WrappedComponent))\n const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n return {\n props,\n data () {\n return {\n loading: false,\n bottomedOut: false,\n error: false,\n entries: []\n }\n },\n created () {\n window.addEventListener('scroll', this.scrollLoad)\n if (this.entries.length === 0) {\n this.fetchEntries()\n }\n },\n unmounted () {\n window.removeEventListener('scroll', this.scrollLoad)\n unmounted && unmounted(this.$props, this.$store)\n },\n methods: {\n // Entries is not a computed because computed can't track the dynamic\n // selector for changes and won't trigger after fetch.\n updateEntries () {\n this.entries = select(this.$props, this.$store) || []\n },\n fetchEntries () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then((newEntries) => {\n this.loading = false\n this.bottomedOut = isEmpty(newEntries)\n })\n .catch(() => {\n this.loading = false\n this.error = true\n })\n .finally(() => {\n this.updateEntries()\n })\n }\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.loading === false &&\n this.bottomedOut === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)\n ) {\n this.fetchEntries()\n }\n }\n },\n render () {\n const props = {\n ...this.$props,\n [childPropName]: this.entries\n }\n const children = this.$slots\n return (\n <div class=\"with-load-more\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n <div class=\"with-load-more-footer\">\n {this.error &&\n <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n {this.$t('general.generic_error')}\n </button>\n }\n {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n </div>\n </div>\n )\n }\n }\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\nimport localeService from 'src/services/locale/locale.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faBirthdayCake\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faBirthdayCake\n)\n\nconst FollowerList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n data () {\n return {\n error: false,\n userId: null,\n tab: defaultTabKey,\n footerRef: null\n }\n },\n created () {\n const routeParams = this.$route.params\n this.load({ name: routeParams.name, id: routeParams.id })\n this.tab = get(this.$route, 'query.tab', defaultTabKey)\n },\n unmounted () {\n this.stopFetching()\n },\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.user\n },\n favorites () {\n return this.$store.state.statuses.timelines.favorites\n },\n media () {\n return this.$store.state.statuses.timelines.media\n },\n isUs () {\n return this.userId && this.$store.state.users.currentUser.id &&\n this.userId === this.$store.state.users.currentUser.id\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n isExternal () {\n return this.$route.name === 'external-user-profile'\n },\n followsTabVisible () {\n return this.isUs || !this.user.hide_follows\n },\n followersTabVisible () {\n return this.isUs || !this.user.hide_followers\n },\n formattedBirthday () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return this.user.birthday && new Date(Date.parse(this.user.birthday)).toLocaleDateString(browserLocale, { timeZone: 'UTC', day: 'numeric', month: 'long', year: 'numeric' })\n }\n },\n methods: {\n setFooterRef (el) {\n this.footerRef = el\n },\n load (userNameOrId) {\n const startFetchingTimeline = (timeline, userId) => {\n // Clear timeline only if load another user's profile\n if (userId !== this.$store.state.statuses.timelines[timeline].userId) {\n this.$store.commit('clearTimeline', { timeline })\n }\n this.$store.dispatch('startFetchingTimeline', { timeline, userId })\n }\n\n const loadById = (userId) => {\n this.userId = userId\n startFetchingTimeline('user', userId)\n startFetchingTimeline('media', userId)\n if (this.isUs) {\n startFetchingTimeline('favorites', userId)\n }\n // Fetch all pinned statuses immediately\n this.$store.dispatch('fetchPinnedStatuses', userId)\n }\n\n // Reset view\n this.userId = null\n this.error = false\n\n const maybeId = userNameOrId.id\n const maybeName = userNameOrId.name\n\n // Check if user data is already loaded in store\n const user = maybeId ? this.$store.getters.findUser(maybeId) : this.$store.getters.findUserByName(maybeName)\n if (user) {\n loadById(user.id)\n } else {\n (maybeId\n ? this.$store.dispatch('fetchUser', maybeId)\n : this.$store.dispatch('fetchUserByName', maybeName))\n .then(({ id }) => loadById(id))\n .catch((reason) => {\n const errorMessage = get(reason, 'error.error')\n if (errorMessage === 'No user with such user_id') { // Known error\n this.error = this.$t('user_profile.profile_does_not_exist')\n } else if (errorMessage) {\n this.error = errorMessage\n } else {\n this.error = this.$t('user_profile.profile_loading_error')\n }\n })\n }\n },\n stopFetching () {\n this.$store.dispatch('stopFetchingTimeline', 'user')\n this.$store.dispatch('stopFetchingTimeline', 'favorites')\n this.$store.dispatch('stopFetchingTimeline', 'media')\n },\n switchUser (userNameOrId) {\n this.stopFetching()\n this.load(userNameOrId)\n },\n onTabSwitch (tab) {\n this.tab = tab\n this.$router.replace({ query: { tab } })\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n }\n },\n watch: {\n '$route.params.id': function (newVal) {\n if (newVal) {\n this.switchUser({ id: newVal })\n }\n },\n '$route.params.name': function (newVal) {\n if (newVal) {\n this.switchUser({ name: newVal })\n }\n },\n '$route.query': function (newVal) {\n this.tab = newVal.tab || defaultTabKey\n }\n },\n components: {\n UserCard,\n Timeline,\n FollowerList,\n FriendList,\n FollowCard,\n TabSwitcher,\n Conversation,\n RichContent\n }\n}\n\nexport default UserProfile\n","import { render } from \"./user_profile.vue?vue&type=template&id=3af4c11e\"\nimport script from \"./user_profile.js?vue&type=script&lang=js\"\nexport * from \"./user_profile.js?vue&type=script&lang=js\"\n\nimport \"./user_profile.vue?vue&type=style&index=0&id=3af4c11e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('nav.search') }}\n </div>\n </div>\n <div class=\"search-input-container\">\n <input\n ref=\"searchInput\"\n v-model=\"searchTerm\"\n class=\"search-input\"\n :placeholder=\"$t('nav.search')\"\n @keyup.enter=\"newQuery(searchTerm)\"\n >\n <button\n class=\"btn button-default search-button\"\n type=\"submit\"\n @click=\"newQuery(searchTerm)\"\n >\n <FAIcon icon=\"search\" />\n </button>\n </div>\n <div\n v-if=\"loading && statusesOffset == 0\"\n class=\"text-center loading-icon\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n <div v-else-if=\"loaded\">\n <div class=\"search-nav-heading\">\n <tab-switcher\n ref=\"tabSwitcher\"\n :on-switch=\"onResultTabSwitch\"\n :active-tab=\"currenResultTab\"\n >\n <span\n key=\"statuses\"\n :label=\"$t('user_card.statuses') + resultCount('visibleStatuses')\"\n />\n <span\n key=\"people\"\n :label=\"$t('search.people') + resultCount('users')\"\n />\n <span\n key=\"hashtags\"\n :label=\"$t('search.hashtags') + resultCount('hashtags')\"\n />\n </tab-switcher>\n </div>\n </div>\n <div class=\"panel-body\">\n <div v-if=\"currenResultTab === 'statuses'\">\n <Status\n v-for=\"status in visibleStatuses\"\n :key=\"status.id\"\n :collapsable=\"false\"\n :expandable=\"false\"\n :compact=\"false\"\n class=\"search-result\"\n :statusoid=\"status\"\n :no-heading=\"false\"\n />\n <button\n v-if=\"!loading && loaded && lastStatusFetchCount > 0\"\n class=\"more-statuses-button button-unstyled -link -fullwidth\"\n @click.prevent=\"search(searchTerm, 'statuses')\"\n >\n <div class=\"new-status-notification text-center\">\n {{ $t('search.load_more') }}\n </div>\n </button>\n <div\n v-else-if=\"loading && statusesOffset > 0\"\n class=\"text-center loading-icon\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n <div\n v-if=\"(visibleStatuses.length === 0 || lastStatusFetchCount === 0) && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>\n {{ visibleStatuses.length === 0 ? $t('search.no_results') : $t('search.no_more_results') }}\n </h4>\n </div>\n </div>\n <div v-else-if=\"currenResultTab === 'people'\">\n <div\n v-if=\"users.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\n <FollowCard\n v-for=\"user in users\"\n :key=\"user.id\"\n :user=\"user\"\n class=\"list-item search-result\"\n />\n </div>\n <div v-else-if=\"currenResultTab === 'hashtags'\">\n <div\n v-if=\"hashtags.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\n <div\n v-for=\"hashtag in hashtags\"\n :key=\"hashtag.url\"\n class=\"status trend search-result\"\n >\n <div class=\"hashtag\">\n <router-link :to=\"{ name: 'tag-timeline', params: { tag: hashtag.name } }\">\n #{{ hashtag.name }}\n </router-link>\n <div v-if=\"lastHistoryRecord(hashtag)\">\n <span v-if=\"lastHistoryRecord(hashtag).accounts == 1\">\n {{ $t('search.person_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n </span>\n <span v-else>\n {{ $t('search.people_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n </span>\n </div>\n </div>\n <div\n v-if=\"lastHistoryRecord(hashtag)\"\n class=\"count\"\n >\n {{ lastHistoryRecord(hashtag).uses }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"search-result-footer text-center panel-footer faint\" />\n </div>\n</template>\n\n<script src=\"./search.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.search-result-heading {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n padding: 0.75rem;\n text-align: center;\n}\n\n@media all and (max-width: 800px) {\n .search-nav-heading {\n .tab-switcher .tabs .tab-wrapper {\n display: block;\n justify-content: center;\n flex: 1 1 auto;\n text-align: center;\n }\n }\n}\n\n.search-result {\n box-sizing: border-box;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.search-result-footer {\n border-width: 1px 0 0;\n border-style: solid;\n border-color: var(--border, $fallback--border);\n padding: 10px;\n background-color: $fallback--fg;\n background-color: var(--panel, $fallback--fg);\n}\n\n.search-input-container {\n padding: 0.8rem;\n display: flex;\n justify-content: center;\n\n .search-input {\n width: 100%;\n line-height: 1.125rem;\n font-size: 1rem;\n padding: 0.5rem;\n box-sizing: border-box;\n }\n\n .search-button {\n margin-left: 0.5em;\n }\n}\n\n.loading-icon {\n padding: 1em;\n}\n\n.trend {\n display: flex;\n align-items: center;\n\n .hashtag {\n flex: 1 1 auto;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .count {\n flex: 0 0 auto;\n width: 2rem;\n font-size: 1.5rem;\n line-height: 2.25rem;\n font-weight: 500;\n text-align: center;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n.more-statuses-button {\n height: 3.5em;\n line-height: 3.5em;\n}\n\n</style>\n","import FollowCard from '../follow_card/follow_card.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport Status from '../status/status.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport map from 'lodash/map'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faSearch\n} from '@fortawesome/free-solid-svg-icons'\nimport { uniqBy } from 'lodash'\n\nlibrary.add(\n faCircleNotch,\n faSearch\n)\n\nconst Search = {\n components: {\n FollowCard,\n Conversation,\n Status,\n TabSwitcher\n },\n props: [\n 'query'\n ],\n data () {\n return {\n loaded: false,\n loading: false,\n searchTerm: this.query || '',\n userIds: [],\n statuses: [],\n hashtags: [],\n currenResultTab: 'statuses',\n\n statusesOffset: 0,\n lastStatusFetchCount: 0,\n lastQuery: ''\n }\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.$store.getters.findUser(userId))\n },\n visibleStatuses () {\n const allStatusesObject = this.$store.state.statuses.allStatusesObject\n\n return this.statuses.filter(status =>\n allStatusesObject[status.id] && !allStatusesObject[status.id].deleted\n )\n }\n },\n mounted () {\n this.search(this.query)\n },\n watch: {\n query (newValue) {\n this.searchTerm = newValue\n this.search(newValue)\n }\n },\n methods: {\n newQuery (query) {\n this.$router.push({ name: 'search', query: { query } })\n this.$refs.searchInput.focus()\n },\n search (query, searchType = null) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.$refs.searchInput.blur()\n if (this.lastQuery !== query) {\n this.userIds = []\n this.hashtags = []\n this.statuses = []\n\n this.statusesOffset = 0\n this.lastStatusFetchCount = 0\n }\n\n this.$store.dispatch('search', { q: query, resolve: true, offset: this.statusesOffset, type: searchType })\n .then(data => {\n this.loading = false\n\n const oldLength = this.statuses.length\n\n // Always append to old results. If new results are empty, this doesn't change anything\n this.userIds = this.userIds.concat(map(data.accounts, 'id'))\n this.statuses = uniqBy(this.statuses.concat(data.statuses), 'id')\n this.hashtags = this.hashtags.concat(data.hashtags)\n\n this.currenResultTab = this.getActiveTab()\n this.loaded = true\n\n // Offset from whatever we already have\n this.statusesOffset = this.statuses.length\n // Because the amount of new statuses can actually be zero, compare to old lenght instead\n this.lastStatusFetchCount = this.statuses.length - oldLength\n this.lastQuery = query\n })\n },\n resultCount (tabName) {\n const length = this[tabName].length\n return length === 0 ? '' : ` (${length})`\n },\n onResultTabSwitch (key) {\n this.currenResultTab = key\n },\n getActiveTab () {\n if (this.visibleStatuses.length > 0) {\n return 'statuses'\n } else if (this.users.length > 0) {\n return 'people'\n } else if (this.hashtags.length > 0) {\n return 'hashtags'\n }\n\n return 'statuses'\n },\n lastHistoryRecord (hashtag) {\n return hashtag.history && hashtag.history[0]\n }\n }\n}\n\nexport default Search\n","import { render } from \"./search.vue?vue&type=template&id=29ec17bc\"\nimport script from \"./search.js?vue&type=script&lang=js\"\nexport * from \"./search.js?vue&type=script&lang=js\"\n\nimport \"./search.vue?vue&type=style&index=0&id=29ec17bc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('registration.registration') }}\n </div>\n <div class=\"panel-body\">\n <form\n class=\"registration-form\"\n @submit.prevent=\"submit(user)\"\n >\n <div class=\"container\">\n <div class=\"text-fields\">\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.username.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-username\"\n >{{ $t('login.username') }}</label>\n <input\n id=\"sign-up-username\"\n v-model.trim=\"v$.user.username.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :aria-required=\"true\"\n :placeholder=\"$t('registration.username_placeholder')\"\n >\n </div>\n <div\n v-if=\"v$.user.username.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.username.required\">\n <span>{{ $t('registration.validations.username_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.fullname.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-fullname\"\n >{{ $t('registration.fullname') }}</label>\n <input\n id=\"sign-up-fullname\"\n v-model.trim=\"v$.user.fullname.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :aria-required=\"true\"\n :placeholder=\"$t('registration.fullname_placeholder')\"\n >\n </div>\n <div\n v-if=\"v$.user.fullname.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.fullname.required\">\n <span>{{ $t('registration.validations.fullname_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.email.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"email\"\n >{{ accountActivationRequired ? $t('registration.email') : $t('registration.email_optional') }}</label>\n <input\n id=\"email\"\n v-model=\"v$.user.email.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"email\"\n :aria-required=\"accountActivationRequired\"\n >\n </div>\n <div\n v-if=\"v$.user.email.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.email.required\">\n <span>{{ $t('registration.validations.email_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div class=\"form-group\">\n <label\n class=\"form--label\"\n for=\"bio\"\n >{{ $t('registration.bio_optional') }}</label>\n <textarea\n id=\"bio\"\n v-model=\"user.bio\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"bioPlaceholder\"\n />\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.password.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-password\"\n >{{ $t('login.password') }}</label>\n <input\n id=\"sign-up-password\"\n v-model=\"user.password\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"password\"\n :aria-required=\"true\"\n >\n </div>\n <div\n v-if=\"v$.user.password.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.password.required\">\n <span>{{ $t('registration.validations.password_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.confirm.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-password-confirmation\"\n >{{ $t('registration.password_confirm') }}</label>\n <input\n id=\"sign-up-password-confirmation\"\n v-model=\"user.confirm\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"password\"\n :aria-required=\"true\"\n >\n </div>\n <div\n v-if=\"v$.user.confirm.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"v$.user.confirm.required.$invalid\">\n <span>{{ $t('registration.validations.password_confirmation_required') }}</span>\n </li>\n <li v-if=\"v$.user.confirm.sameAs.$invalid\">\n <span>{{ $t('registration.validations.password_confirmation_match') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.birthday.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-birthday\"\n >\n {{ birthdayRequired ? $t('registration.birthday') : $t('registration.birthday_optional') }}\n </label>\n <input\n id=\"sign-up-birthday\"\n v-model=\"user.birthday\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"date\"\n :max=\"birthdayRequired ? birthdayMinAttr : undefined\"\n :aria-required=\"birthdayRequired\"\n >\n </div>\n <div\n v-if=\"v$.user.birthday.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"v$.user.birthday.required.$invalid\">\n <span>{{ $t('registration.validations.birthday_required') }}</span>\n </li>\n <li v-if=\"v$.user.birthday.maxValue.$invalid\">\n <span>{{ $tc('registration.validations.birthday_min_age', { date: birthdayMinFormatted }) }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.language.$error }\"\n >\n <interface-language-switcher\n for=\"email-language\"\n :prompt-text=\"$t('registration.email_language')\"\n :language=\"v$.user.language.$model\"\n :set-language=\"val => v$.user.language.$model = val\"\n @click.stop.prevent\n />\n </div>\n\n <div\n v-if=\"accountApprovalRequired\"\n class=\"form-group\"\n >\n <label\n class=\"form--label\"\n for=\"reason\"\n >{{ $t('registration.reason') }}</label>\n <textarea\n id=\"reason\"\n v-model=\"user.reason\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"reasonPlaceholder\"\n />\n </div>\n\n <div\n v-if=\"captcha.type != 'none'\"\n id=\"captcha-group\"\n class=\"form-group\"\n >\n <label\n class=\"form--label\"\n for=\"captcha-label\"\n >{{ $t('registration.captcha') }}</label>\n\n <template v-if=\"['kocaptcha', 'native'].includes(captcha.type)\">\n <img\n :src=\"captcha.url\"\n @click=\"setCaptcha\"\n >\n\n <sub>{{ $t('registration.new_captcha') }}</sub>\n\n <input\n id=\"captcha-answer\"\n v-model=\"captcha.solution\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"text\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n >\n </template>\n </div>\n\n <div\n v-if=\"token\"\n class=\"form-group\"\n >\n <label for=\"token\">{{ $t('registration.token') }}</label>\n <input\n id=\"token\"\n v-model=\"token\"\n disabled=\"true\"\n class=\"form-control\"\n type=\"text\"\n >\n </div>\n <div class=\"form-group\">\n <button\n :disabled=\"isPending\"\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('registration.register') }}\n </button>\n </div>\n </div>\n\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"terms-of-service\"\n v-html=\"termsOfService\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n <div\n v-if=\"serverValidationErrors.length\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n <span\n v-for=\"error in serverValidationErrors\"\n :key=\"error\"\n >{{ error }}</span>\n </div>\n </div>\n </form>\n </div>\n </div>\n</template>\n\n<script src=\"./registration.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n$validations-cRed: #f04124;\n\n.registration-form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex-direction: row;\n\n > * {\n min-width: 0;\n }\n }\n\n .terms-of-service {\n flex: 0 1 50%;\n margin: 0.8em;\n }\n\n .text-fields {\n margin-top: 0.6em;\n flex: 1 0;\n display: flex;\n flex-direction: column;\n }\n\n textarea {\n min-height: 100px;\n resize: vertical;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0;\n line-height: 2;\n margin-bottom: 1em;\n }\n\n .form-group--error {\n animation-name: shakeError;\n animation-duration: 0.6s;\n animation-timing-function: ease-in-out;\n }\n\n .form-group--error .form--label {\n color: $validations-cRed;\n color: var(--cRed, $validations-cRed);\n }\n\n .form-error {\n margin-top: -0.7em;\n text-align: left;\n\n span {\n font-size: 0.85em;\n }\n }\n\n .form-error ul {\n list-style: none;\n padding: 0 0 0 5px;\n margin-top: 0;\n\n li::before {\n content: \"• \";\n }\n }\n\n form textarea {\n line-height: 16px;\n resize: vertical;\n }\n\n .captcha {\n max-width: 350px;\n margin-bottom: 0.4em;\n }\n\n .btn {\n margin-top: 0.6em;\n height: 2em;\n }\n\n .error {\n text-align: center;\n }\n}\n\n@media all and (max-width: 800px) {\n .registration-form .container {\n flex-direction: column-reverse;\n }\n}\n</style>\n","import useVuelidate from '@vuelidate/core'\nimport { required, requiredIf, sameAs } from '@vuelidate/validators'\nimport { mapActions, mapState } from 'vuex'\nimport InterfaceLanguageSwitcher from '../interface_language_switcher/interface_language_switcher.vue'\nimport localeService from '../../services/locale/locale.service.js'\nimport { DAY } from 'src/services/date_utils/date_utils.js'\n\nconst registration = {\n setup () { return { v$: useVuelidate() } },\n data: () => ({\n user: {\n email: '',\n fullname: '',\n username: '',\n password: '',\n confirm: '',\n birthday: '',\n reason: '',\n language: ['']\n },\n captcha: {}\n }),\n components: {\n InterfaceLanguageSwitcher\n },\n validations () {\n return {\n user: {\n email: { required: requiredIf(() => this.accountActivationRequired) },\n username: { required },\n fullname: { required },\n password: { required },\n confirm: {\n required,\n sameAs: sameAs(this.user.password)\n },\n birthday: {\n required: requiredIf(() => this.birthdayRequired),\n maxValue: value => {\n return !this.birthdayRequired || new Date(value).getTime() <= this.birthdayMin.getTime()\n }\n },\n reason: { required: requiredIf(() => this.accountApprovalRequired) },\n language: {}\n }\n }\n },\n created () {\n if ((!this.registrationOpen && !this.token) || this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n\n this.setCaptcha()\n },\n computed: {\n token () { return this.$route.params.token },\n bioPlaceholder () {\n return this.replaceNewlines(this.$t('registration.bio_placeholder'))\n },\n reasonPlaceholder () {\n return this.replaceNewlines(this.$t('registration.reason_placeholder'))\n },\n birthdayMin () {\n const minAge = this.birthdayMinAge\n const today = new Date()\n today.setUTCMilliseconds(0)\n today.setUTCSeconds(0)\n today.setUTCMinutes(0)\n today.setUTCHours(0)\n const minDate = new Date()\n minDate.setTime(today.getTime() - minAge * DAY)\n return minDate\n },\n birthdayMinAttr () {\n return this.birthdayMin.toJSON().replace(/T.+$/, '')\n },\n birthdayMinFormatted () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return this.user.birthday && new Date(Date.parse(this.birthdayMin)).toLocaleDateString(browserLocale, { timeZone: 'UTC', day: 'numeric', month: 'long', year: 'numeric' })\n },\n ...mapState({\n registrationOpen: (state) => state.instance.registrationOpen,\n signedIn: (state) => !!state.users.currentUser,\n isPending: (state) => state.users.signUpPending,\n serverValidationErrors: (state) => state.users.signUpErrors,\n termsOfService: (state) => state.instance.tos,\n accountActivationRequired: (state) => state.instance.accountActivationRequired,\n accountApprovalRequired: (state) => state.instance.accountApprovalRequired,\n birthdayRequired: (state) => state.instance.birthdayRequired,\n birthdayMinAge: (state) => state.instance.birthdayMinAge\n })\n },\n methods: {\n ...mapActions(['signUp', 'getCaptcha']),\n async submit () {\n this.user.nickname = this.user.username\n this.user.token = this.token\n\n this.user.captcha_solution = this.captcha.solution\n this.user.captcha_token = this.captcha.token\n this.user.captcha_answer_data = this.captcha.answer_data\n if (this.user.language) {\n this.user.language = localeService.internalToBackendLocaleMulti(this.user.language.filter(k => k))\n }\n\n this.v$.$touch()\n\n if (!this.v$.$invalid) {\n try {\n await this.signUp(this.user)\n this.$router.push({ name: 'friends' })\n } catch (error) {\n console.warn('Registration failed: ', error)\n this.setCaptcha()\n }\n }\n },\n setCaptcha () {\n this.getCaptcha().then(cpt => { this.captcha = cpt })\n },\n replaceNewlines (str) {\n return str.replace(/\\s*\\n\\s*/g, ' \\n')\n }\n }\n}\n\nexport default registration\n","import { render } from \"./registration.vue?vue&type=template&id=f9488ca2\"\nimport script from \"./registration.js?vue&type=script&lang=js\"\nexport * from \"./registration.js?vue&type=script&lang=js\"\n\nimport \"./registration.vue?vue&type=style&index=0&id=f9488ca2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('password_reset.password_reset') }}\n </div>\n <div class=\"panel-body\">\n <form\n class=\"password-reset-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"container\">\n <div v-if=\"!mailerEnabled\">\n <p v-if=\"passwordResetRequested\">\n {{ $t('password_reset.password_reset_required_but_mailer_is_disabled') }}\n </p>\n <p v-else>\n {{ $t('password_reset.password_reset_disabled') }}\n </p>\n </div>\n <div v-else-if=\"success || throttled\">\n <p v-if=\"success\">\n {{ $t('password_reset.check_email') }}\n </p>\n <div class=\"form-group text-center\">\n <router-link :to=\"{name: 'root'}\">\n {{ $t('password_reset.return_home') }}\n </router-link>\n </div>\n </div>\n <div v-else>\n <p\n v-if=\"passwordResetRequested\"\n class=\"password-reset-required error\"\n >\n {{ $t('password_reset.password_reset_required') }}\n </p>\n <p>\n {{ $t('password_reset.instruction') }}\n </p>\n <div class=\"form-group\">\n <input\n ref=\"email\"\n v-model=\"user.email\"\n :disabled=\"isPending\"\n :placeholder=\"$t('password_reset.placeholder')\"\n class=\"form-control\"\n type=\"input\"\n >\n </div>\n <div class=\"form-group\">\n <button\n :disabled=\"isPending\"\n type=\"submit\"\n class=\"btn button-default btn-block\"\n >\n {{ $t('settings.save') }}\n </button>\n </div>\n </div>\n <p\n v-if=\"error\"\n class=\"alert error notice-dismissible\"\n >\n <span>{{ error }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n @click.prevent=\"dismissError()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n </div>\n </form>\n </div>\n </div>\n</template>\n\n<script src=\"./password_reset.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.password-reset-form {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex: 1 0;\n flex-direction: column;\n margin-top: 0.6em;\n max-width: 18rem;\n\n > * {\n min-width: 0;\n }\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n margin-bottom: 1em;\n padding: 0.3em 0;\n line-height: 1.85em;\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n\n .alert {\n padding: 0.5em;\n margin: 0.3em 0 1em;\n }\n\n .password-reset-required {\n background-color: var(--alertError, $fallback--alertError);\n padding: 10px 0;\n }\n\n .notice-dismissible {\n padding-right: 2rem;\n }\n\n .dismiss {\n cursor: pointer;\n }\n}\n\n</style>\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst passwordReset = {\n data: () => ({\n user: {\n email: ''\n },\n isPending: false,\n success: false,\n throttled: false,\n error: null\n }),\n computed: {\n ...mapState({\n signedIn: (state) => !!state.users.currentUser,\n instance: state => state.instance\n }),\n mailerEnabled () {\n return this.instance.mailerEnabled\n }\n },\n created () {\n if (this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n },\n props: {\n passwordResetRequested: {\n default: false,\n type: Boolean\n }\n },\n methods: {\n dismissError () {\n this.error = null\n },\n submit () {\n this.isPending = true\n const email = this.user.email\n const instance = this.instance.server\n\n passwordResetApi({ instance, email }).then(({ status }) => {\n this.isPending = false\n this.user.email = ''\n\n if (status === 204) {\n this.success = true\n this.error = null\n } else if (status === 429) {\n this.throttled = true\n this.error = this.$t('password_reset.too_many_requests')\n }\n }).catch(() => {\n this.isPending = false\n this.user.email = ''\n this.error = this.$t('general.generic_error')\n })\n }\n }\n}\n\nexport default passwordReset\n","import { reduce } from 'lodash'\n\nconst MASTODON_PASSWORD_RESET_URL = '/auth/password'\n\nconst resetPassword = ({ instance, email }) => {\n const params = { email }\n const query = reduce(params, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n return `${acc}&${encoded}`\n }, '')\n const url = `${instance}${MASTODON_PASSWORD_RESET_URL}?${query}`\n\n return window.fetch(url, {\n method: 'POST'\n })\n}\n\nexport default resetPassword\n","import { render } from \"./password_reset.vue?vue&type=template&id=0a88ea38\"\nimport script from \"./password_reset.js?vue&type=script&lang=js\"\nexport * from \"./password_reset.js?vue&type=script&lang=js\"\n\nimport \"./password_reset.vue?vue&type=style&index=0&id=0a88ea38&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('nav.friend_requests') }}\n </div>\n </div>\n <div class=\"panel-body\">\n <FollowRequestCard\n v-for=\"request in requests\"\n :key=\"request.id\"\n :user=\"request\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./follow_requests.js\"></script>\n","<template>\n <basic-user-card :user=\"user\">\n <div class=\"follow-request-card-content-container\">\n <button\n class=\"btn button-default\"\n @click=\"approveUser\"\n >\n {{ $t('user_card.approve') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"denyUser\"\n >\n {{ $t('user_card.deny') }}\n </button>\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingApproveConfirmDialog\"\n :title=\"$t('user_card.approve_confirm_title')\"\n :confirm-text=\"$t('user_card.approve_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.approve_confirm_cancel_button')\"\n @accepted=\"doApprove\"\n @cancelled=\"hideApproveConfirmDialog\"\n >\n {{ $t('user_card.approve_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n <confirm-modal\n v-if=\"showingDenyConfirmDialog\"\n :title=\"$t('user_card.deny_confirm_title')\"\n :confirm-text=\"$t('user_card.deny_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.deny_confirm_cancel_button')\"\n @accepted=\"doDeny\"\n @cancelled=\"hideDenyConfirmDialog\"\n >\n {{ $t('user_card.deny_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n </teleport>\n </basic-user-card>\n</template>\n\n<script src=\"./follow_request_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-request-card-content-container {\n display: flex;\n flex-flow: row wrap;\n\n button {\n margin-top: 0.5em;\n margin-right: 0.5em;\n flex: 1 1;\n max-width: 12em;\n min-width: 8em;\n\n &:last-child {\n margin-right: 0;\n }\n }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n props: ['user'],\n components: {\n BasicUserCard,\n ConfirmModal\n },\n data () {\n return {\n showingApproveConfirmDialog: false,\n showingDenyConfirmDialog: false\n }\n },\n methods: {\n findFollowRequestNotificationId () {\n const notif = notificationsFromStore(this.$store).find(\n (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n )\n return notif && notif.id\n },\n showApproveConfirmDialog () {\n this.showingApproveConfirmDialog = true\n },\n hideApproveConfirmDialog () {\n this.showingApproveConfirmDialog = false\n },\n showDenyConfirmDialog () {\n this.showingDenyConfirmDialog = true\n },\n hideDenyConfirmDialog () {\n this.showingDenyConfirmDialog = false\n },\n approveUser () {\n if (this.shouldConfirmApprove) {\n this.showApproveConfirmDialog()\n } else {\n this.doApprove()\n }\n },\n doApprove () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n\n const notifId = this.findFollowRequestNotificationId()\n this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n this.$store.dispatch('updateNotification', {\n id: notifId,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n this.hideApproveConfirmDialog()\n },\n denyUser () {\n if (this.shouldConfirmDeny) {\n this.showDenyConfirmDialog()\n } else {\n this.doDeny()\n }\n },\n doDeny () {\n const notifId = this.findFollowRequestNotificationId()\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n this.hideDenyConfirmDialog()\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n shouldConfirmApprove () {\n return this.mergedConfig.modalOnApproveFollow\n },\n shouldConfirmDeny () {\n return this.mergedConfig.modalOnDenyFollow\n }\n }\n}\n\nexport default FollowRequestCard\n","import FollowRequestCard from '../follow_request_card/follow_request_card.vue'\n\nconst FollowRequests = {\n components: {\n FollowRequestCard\n },\n computed: {\n requests () {\n return this.$store.state.api.followRequests\n }\n }\n}\n\nexport default FollowRequests\n","import { render } from \"./follow_request_card.vue?vue&type=template&id=3bb26ea8\"\nimport script from \"./follow_request_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_request_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_request_card.vue?vue&type=style&index=0&id=3bb26ea8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./follow_requests.vue?vue&type=template&id=62e19784\"\nimport script from \"./follow_requests.js?vue&type=script&lang=js\"\nexport * from \"./follow_requests.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import oauth from '../../services/new_api/oauth.js'\n\nconst oac = {\n props: ['code'],\n mounted () {\n if (this.code) {\n const { clientId, clientSecret } = this.$store.state.oauth\n\n oauth.getToken({\n clientId,\n clientSecret,\n instance: this.$store.state.instance.server,\n code: this.code\n }).then((result) => {\n this.$store.commit('setToken', result.access_token)\n this.$store.dispatch('loginUser', result.access_token)\n this.$router.push({ name: 'friends' })\n })\n }\n }\n}\n\nexport default oac\n","import { render } from \"./oauth_callback.vue?vue&type=template&id=f514124c\"\nimport script from \"./oauth_callback.js?vue&type=script&lang=js\"\nexport * from \"./oauth_callback.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <h1>...</h1>\n</template>\n\n<script src=\"./oauth_callback.js\"></script>\n","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('who_to_follow.who_to_follow') }}\n </div>\n <div class=\"panel-body\">\n <FollowCard\n v-for=\"user in users\"\n :key=\"user.id\"\n :user=\"user\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./who_to_follow.js\"></script>\n","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n components: {\n FollowCard\n },\n data () {\n return {\n users: []\n }\n },\n mounted () {\n this.getWhoToFollow()\n },\n methods: {\n showWhoToFollow (reply) {\n reply.forEach((i, index) => {\n this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n .then((externalUser) => {\n if (!externalUser.error) {\n this.$store.commit('addNewUsers', [externalUser])\n this.users.push(externalUser)\n }\n })\n })\n },\n getWhoToFollow () {\n const credentials = this.$store.state.users.currentUser.credentials\n if (credentials) {\n apiService.suggestions({ credentials })\n .then((reply) => {\n this.showWhoToFollow(reply)\n })\n }\n }\n }\n}\n\nexport default WhoToFollow\n","import { render } from \"./who_to_follow.vue?vue&type=template&id=1d38a2c8\"\nimport script from \"./who_to_follow.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"column-inner\">\n <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n <staff-panel />\n <terms-of-service-panel />\n <MRFTransparencyPanel />\n <features-panel v-if=\"showFeaturesPanel\" />\n </div>\n</template>\n\n<script src=\"./about.js\"></script>\n","<template>\n <div>\n <div class=\"panel panel-default\">\n <div class=\"panel-body\">\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"tos-content\"\n v-html=\"content\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./terms_of_service_panel.js\"></script>\n\n<style lang=\"scss\">\n.tos-content {\n margin: 1em;\n}\n</style>\n","const TermsOfServicePanel = {\n computed: {\n content () {\n return this.$store.state.instance.tos\n }\n }\n}\n\nexport default TermsOfServicePanel\n","import { render } from \"./terms_of_service_panel.vue?vue&type=template&id=22763f84\"\nimport script from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\nexport * from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\n\nimport \"./terms_of_service_panel.vue?vue&type=style&index=0&id=22763f84&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"staff-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background\">\n <div class=\"title\">\n {{ $t(\"about.staff\") }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div\n v-for=\"group in groupedStaffAccounts\"\n :key=\"group.role\"\n class=\"staff-group\"\n >\n <h4>{{ $t('general.role.' + group.role) }}</h4>\n <basic-user-card\n v-for=\"user in group.users\"\n :key=\"user.screen_name\"\n :user=\"user\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./staff_panel.js\"></script>\n\n<style lang=\"scss\">\n.staff-group {\n padding-left: 1em;\n padding-top: 1em;\n\n .basic-user-card {\n padding-left: 0;\n }\n}\n\n</style>\n","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n created () {\n const nicknames = this.$store.state.instance.staffAccounts\n nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n },\n components: {\n BasicUserCard\n },\n computed: {\n groupedStaffAccounts () {\n const staffAccounts = map(this.staffAccounts, this.findUserByName).filter(_ => _)\n const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n return [\n { role: 'admin', users: groupedStaffAccounts.admin },\n { role: 'moderator', users: groupedStaffAccounts.moderator }\n ].filter(group => group.users)\n },\n ...mapGetters([\n 'findUserByName'\n ]),\n ...mapState({\n staffAccounts: state => state.instance.staffAccounts\n })\n }\n}\n\nexport default StaffPanel\n","import { render } from \"./staff_panel.vue?vue&type=template&id=56c37220\"\nimport script from \"./staff_panel.js?vue&type=script&lang=js\"\nexport * from \"./staff_panel.js?vue&type=script&lang=js\"\n\nimport \"./staff_panel.vue?vue&type=style&index=0&id=56c37220&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"federationPolicy\"\n class=\"mrf-transparency-panel\"\n >\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background\">\n <div class=\"title\">\n {{ $t(\"about.mrf.federation\") }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div class=\"mrf-section\">\n <h2>{{ $t(\"about.mrf.mrf_policies\") }}</h2>\n <p>{{ $t(\"about.mrf.mrf_policies_desc\") }}</p>\n\n <ul>\n <li\n v-for=\"policy in mrfPolicies\"\n :key=\"policy\"\n v-text=\"policy\"\n />\n </ul>\n\n <h2 v-if=\"hasInstanceSpecificPolicies\">\n {{ $t(\"about.mrf.simple.simple_policies\") }}\n </h2>\n\n <div v-if=\"acceptInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.accept\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.accept_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in acceptInstances\"\n :key=\"entry.instance + '_accept'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"rejectInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.reject\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.reject_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in rejectInstances\"\n :key=\"entry.instance + '_reject'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"quarantineInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.quarantine\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.quarantine_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in quarantineInstances\"\n :key=\"entry.instance + '_quarantine'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"ftlRemovalInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.ftl_removal\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.ftl_removal_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in ftlRemovalInstances\"\n :key=\"entry.instance + '_ftl_removal'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"mediaNsfwInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.media_nsfw\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.media_nsfw_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in mediaNsfwInstances\"\n :key=\"entry.instance + '_media_nsfw'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"mediaRemovalInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.media_removal\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.media_removal_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in mediaRemovalInstances\"\n :key=\"entry.instance + '_media_removal'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <h2 v-if=\"hasKeywordPolicies\">\n {{ $t(\"about.mrf.keyword.keyword_policies\") }}\n </h2>\n\n <div v-if=\"keywordsFtlRemoval.length\">\n <h4>{{ $t(\"about.mrf.keyword.ftl_removal\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsFtlRemoval\"\n :key=\"keyword\"\n v-text=\"keyword\"\n />\n </ul>\n </div>\n\n <div v-if=\"keywordsReject.length\">\n <h4>{{ $t(\"about.mrf.keyword.reject\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsReject\"\n :key=\"keyword\"\n v-text=\"keyword\"\n />\n </ul>\n </div>\n\n <div v-if=\"keywordsReplace.length\">\n <h4>{{ $t(\"about.mrf.keyword.replace\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsReplace\"\n :key=\"keyword\"\n >\n {{ keyword.pattern }}\n {{ $t(\"about.mrf.keyword.is_replaced_by\") }}\n {{ keyword.replacement }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./mrf_transparency_panel.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./mrf_transparency_panel\";\n</style>\n","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\n/**\n * This is for backwards compatibility. We originally didn't recieve\n * extra info like a reason why an instance was rejected/quarantined/etc.\n * Because we didn't want to break backwards compatibility it was decided\n * to add an extra \"info\" key.\n */\nconst toInstanceReasonObject = (instances, info, key) => {\n return instances.map(instance => {\n if (info[key] && info[key][instance] && info[key][instance].reason) {\n return { instance, reason: info[key][instance].reason }\n }\n return { instance, reason: '' }\n })\n}\n\nconst MRFTransparencyPanel = {\n computed: {\n ...mapState({\n federationPolicy: state => get(state, 'instance.federationPolicy'),\n mrfPolicies: state => get(state, 'instance.federationPolicy.mrf_policies', []),\n quarantineInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.quarantined_instances', []),\n get(state, 'instance.federationPolicy.quarantined_instances_info', []),\n 'quarantined_instances'\n ),\n acceptInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.accept', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'accept'\n ),\n rejectInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.reject', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'reject'\n ),\n ftlRemovalInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'federated_timeline_removal'\n ),\n mediaNsfwInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'media_nsfw'\n ),\n mediaRemovalInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.media_removal', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'media_removal'\n ),\n keywordsFtlRemoval: state => get(state, 'instance.federationPolicy.mrf_keyword.federated_timeline_removal', []),\n keywordsReject: state => get(state, 'instance.federationPolicy.mrf_keyword.reject', []),\n keywordsReplace: state => get(state, 'instance.federationPolicy.mrf_keyword.replace', [])\n }),\n hasInstanceSpecificPolicies () {\n return this.quarantineInstances.length ||\n this.acceptInstances.length ||\n this.rejectInstances.length ||\n this.ftlRemovalInstances.length ||\n this.mediaNsfwInstances.length ||\n this.mediaRemovalInstances.length\n },\n hasKeywordPolicies () {\n return this.keywordsFtlRemoval.length ||\n this.keywordsReject.length ||\n this.keywordsReplace.length\n }\n }\n}\n\nexport default MRFTransparencyPanel\n","import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from '../features_panel/features_panel.vue'\nimport TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue'\nimport StaffPanel from '../staff_panel/staff_panel.vue'\nimport MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue'\n\nconst About = {\n components: {\n InstanceSpecificPanel,\n FeaturesPanel,\n TermsOfServicePanel,\n StaffPanel,\n MRFTransparencyPanel\n },\n computed: {\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default About\n","import { render } from \"./mrf_transparency_panel.vue?vue&type=template&id=67a05c5c\"\nimport script from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\nexport * from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\n\nimport \"./mrf_transparency_panel.vue?vue&type=style&index=0&id=67a05c5c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./about.vue?vue&type=template&id=4d996902\"\nimport script from \"./about.js?vue&type=script&lang=js\"\nexport * from \"./about.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('remote_user_resolver.remote_user_resolver') }}\n </div>\n <div class=\"panel-body\">\n <p>\n {{ $t('remote_user_resolver.searching_for') }} @{{ $route.params.username }}@{{ $route.params.hostname }}\n </p>\n <p v-if=\"error\">\n {{ $t('remote_user_resolver.error') }}\n </p>\n </div>\n </div>\n</template>\n\n<script src=\"./remote_user_resolver.js\"></script>\n","const RemoteUserResolver = {\n data: () => ({\n error: false\n }),\n mounted () {\n this.redirect()\n },\n methods: {\n redirect () {\n const acct = this.$route.params.username + '@' + this.$route.params.hostname\n this.$store.state.api.backendInteractor.fetchUser({ id: acct })\n .then((externalUser) => {\n if (externalUser.error) {\n this.error = true\n } else {\n this.$store.commit('addNewUsers', [externalUser])\n const id = externalUser.id\n this.$router.replace({\n name: 'external-user-profile',\n params: { id }\n })\n }\n })\n .catch(() => {\n this.error = true\n })\n }\n }\n}\n\nexport default RemoteUserResolver\n","import { render } from \"./remote_user_resolver.vue?vue&type=template&id=147deeb8\"\nimport script from \"./remote_user_resolver.js?vue&type=script&lang=js\"\nexport * from \"./remote_user_resolver.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"Lists panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('lists.lists') }}\n </div>\n <router-link\n :to=\"{ name: 'lists-new' }\"\n class=\"button-default btn new-list-button\"\n >\n {{ $t(\"lists.new\") }}\n </router-link>\n </div>\n <div class=\"panel-body\">\n <ListsCard\n v-for=\"list in lists.slice().reverse()\"\n :key=\"list\"\n :list=\"list\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./lists.js\"></script>\n\n<style lang=\"scss\">\n.Lists {\n .new-list-button {\n padding: 0 0.5em;\n }\n}\n</style>\n","<template>\n <div class=\"list-card\">\n <router-link\n :to=\"{ name: 'lists-timeline', params: { id: list.id } }\"\n class=\"list-name\"\n >\n {{ list.title }}\n </router-link>\n <router-link\n :to=\"{ name: 'lists-edit', params: { id: list.id } }\"\n class=\"button-list-edit\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"ellipsis-h\"\n />\n </router-link>\n </div>\n</template>\n\n<script src=\"./lists_card.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.list-card {\n display: flex;\n}\n\n.list-name {\n flex-grow: 1;\n}\n\n.list-name,\n.button-list-edit {\n margin: 0;\n padding: 1em;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEllipsisH\n)\n\nconst ListsCard = {\n props: [\n 'list'\n ]\n}\n\nexport default ListsCard\n","import ListsCard from '../lists_card/lists_card.vue'\n\nconst Lists = {\n data () {\n return {\n isNew: false\n }\n },\n components: {\n ListsCard\n },\n computed: {\n lists () {\n return this.$store.state.lists.allLists\n }\n },\n methods: {\n cancelNewList () {\n this.isNew = false\n },\n newList () {\n this.isNew = true\n }\n }\n}\n\nexport default Lists\n","import { render } from \"./lists_card.vue?vue&type=template&id=cb7330aa\"\nimport script from \"./lists_card.js?vue&type=script&lang=js\"\nexport * from \"./lists_card.js?vue&type=script&lang=js\"\n\nimport \"./lists_card.vue?vue&type=style&index=0&id=cb7330aa&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./lists.vue?vue&type=template&id=273aca3d\"\nimport script from \"./lists.js?vue&type=script&lang=js\"\nexport * from \"./lists.js?vue&type=script&lang=js\"\n\nimport \"./lists.vue?vue&type=style&index=0&id=273aca3d&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\nconst ListsTimeline = {\n data () {\n return {\n listId: null\n }\n },\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.list }\n },\n watch: {\n $route: function (route) {\n if (route.name === 'lists-timeline' && route.params.id !== this.listId) {\n this.listId = route.params.id\n this.$store.dispatch('stopFetchingTimeline', 'list')\n this.$store.commit('clearTimeline', { timeline: 'list' })\n this.$store.dispatch('fetchList', { listId: this.listId })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'list', listId: this.listId })\n }\n }\n },\n created () {\n this.listId = this.$route.params.id\n this.$store.dispatch('fetchList', { listId: this.listId })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'list', listId: this.listId })\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'list')\n this.$store.commit('clearTimeline', { timeline: 'list' })\n }\n}\n\nexport default ListsTimeline\n","import { render } from \"./lists_timeline.vue?vue&type=template&id=464584d8\"\nimport script from \"./lists_timeline.js?vue&type=script&lang=js\"\nexport * from \"./lists_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n title=\"list.name\"\n :timeline=\"timeline\"\n :list-id=\"listId\"\n timeline-name=\"list\"\n />\n</template>\n\n<script src=\"./lists_timeline.js\"></script>\n","<template>\n <div class=\"panel-default panel ListEdit\">\n <div\n ref=\"header\"\n class=\"panel-heading list-edit-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"$router.back\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n <div class=\"title\">\n <i18n-t\n v-if=\"id\"\n keypath=\"lists.editing_list\"\n >\n <template #listTitle>\n {{ title }}\n </template>\n </i18n-t>\n <i18n-t\n v-else\n keypath=\"lists.creating_list\"\n />\n </div>\n </div>\n <div class=\"panel-body\">\n <div class=\"input-wrap\">\n <label for=\"list-edit-title\">{{ $t('lists.title') }}</label>\n {{ ' ' }}\n <input\n id=\"list-edit-title\"\n ref=\"title\"\n v-model=\"titleDraft\"\n >\n <button\n v-if=\"id\"\n class=\"btn button-default follow-button\"\n @click=\"updateListTitle\"\n >\n {{ $t('lists.update_title') }}\n </button>\n </div>\n <tab-switcher\n class=\"list-member-management\"\n :scrollable-tabs=\"true\"\n >\n <div\n v-if=\"id || addedUserIds.size > 0\"\n :label=\"$t('lists.manage_members')\"\n class=\"members-list\"\n >\n <div class=\"users-list\">\n <div\n v-for=\"user in membersUsers\"\n :key=\"user.id\"\n class=\"member\"\n >\n <BasicUserCard\n :user=\"user\"\n >\n <button\n class=\"btn button-default follow-button\"\n @click=\"toggleRemoveMember(user)\"\n >\n {{ isRemoved(user) ? $t('general.undo') : $t('lists.remove_from_list') }}\n </button>\n </BasicUserCard>\n </div>\n </div>\n </div>\n\n <div\n class=\"search-list\"\n :label=\"$t('lists.add_members')\"\n >\n <ListsUserSearch\n @results=\"onSearchResults\"\n @loading=\"onSearchLoading\"\n @loadingDone=\"onSearchLoadingDone\"\n />\n <div\n v-if=\"searchLoading\"\n class=\"loading\"\n >\n <PanelLoading />\n </div>\n <div\n v-else\n class=\"users-list\"\n >\n <div\n v-for=\"user in searchUsers\"\n :key=\"user.id\"\n class=\"member\"\n >\n <BasicUserCard\n :user=\"user\"\n >\n <span\n v-if=\"membersUserIds.includes(user.id)\"\n >\n {{ $t('lists.is_in_list') }}\n </span>\n <button\n v-if=\"!membersUserIds.includes(user.id)\"\n class=\"btn button-default follow-button\"\n @click=\"toggleAddFromSearch(user)\"\n >\n {{ isAdded(user) ? $t('general.undo') : $t('lists.add_to_list') }}\n </button>\n <button\n v-else\n class=\"btn button-default follow-button\"\n @click=\"toggleRemoveMember(user)\"\n >\n {{ isRemoved(user) ? $t('general.undo') : $t('lists.remove_from_list') }}\n </button>\n </BasicUserCard>\n </div>\n </div>\n </div>\n </tab-switcher>\n </div>\n <div class=\"panel-footer\">\n <span class=\"spacer\" />\n <button\n v-if=\"!id\"\n class=\"btn button-default footer-button\"\n @click=\"createList\"\n >\n {{ $t('lists.create') }}\n </button>\n <button\n v-else-if=\"!reallyDelete\"\n class=\"btn button-default footer-button\"\n @click=\"reallyDelete = true\"\n >\n {{ $t('lists.delete') }}\n </button>\n <template v-else>\n {{ $t('lists.really_delete') }}\n <button\n class=\"btn button-default footer-button\"\n @click=\"deleteList\"\n >\n {{ $t('general.yes') }}\n </button>\n <button\n class=\"btn button-default footer-button\"\n @click=\"reallyDelete = false\"\n >\n {{ $t('general.no') }}\n </button>\n </template>\n </div>\n </div>\n</template>\n\n<script src=\"./lists_edit.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.ListEdit {\n --panel-body-padding: 0.5em;\n\n height: calc(100vh - var(--navbar-height));\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n .list-edit-heading {\n grid-template-columns: auto minmax(50%, 1fr);\n }\n\n .panel-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n overflow: hidden;\n }\n\n .list-member-management {\n flex: 1 0 auto;\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n\n .users-list {\n padding-bottom: 0.7rem;\n overflow-y: auto;\n }\n\n & .search-list,\n & .members-list {\n overflow: hidden;\n flex-direction: column;\n min-height: 0;\n }\n\n .go-back-button {\n text-align: center;\n line-height: 1;\n height: 100%;\n align-self: start;\n width: var(--__panel-heading-height-inner);\n }\n\n .btn {\n margin: 0 0.5em;\n }\n\n .panel-footer {\n grid-template-columns: minmax(10%, 1fr);\n\n .footer-button {\n min-width: 9em;\n }\n }\n}\n</style>\n","<template>\n <div class=\"ListsUserSearch\">\n <div class=\"input-wrap\">\n <div class=\"input-search\">\n <FAIcon\n class=\"search-icon fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </div>\n <input\n ref=\"search\"\n v-model=\"query\"\n :placeholder=\"$t('lists.search')\"\n @input=\"onInput\"\n >\n </div>\n <div class=\"input-wrap\">\n <Checkbox\n v-model=\"followingOnly\"\n @change=\"onInput\"\n >\n {{ $t('lists.following_only') }}\n </Checkbox>\n </div>\n </div>\n</template>\n\n<script src=\"./lists_user_search.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.ListsUserSearch {\n .input-wrap {\n display: flex;\n margin: 0.7em 0.5em;\n\n input {\n width: 100%;\n }\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n}\n\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { debounce } from 'lodash'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst ListsUserSearch = {\n components: {\n Checkbox\n },\n emits: ['loading', 'loadingDone', 'results'],\n data () {\n return {\n loading: false,\n query: '',\n followingOnly: true\n }\n },\n methods: {\n onInput: debounce(function () {\n this.search(this.query)\n }, 2000),\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.$emit('loading')\n this.userIds = []\n this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts', following: this.followingOnly })\n .then(data => {\n this.$emit('results', data.accounts.map(a => a.id))\n })\n .finally(() => {\n this.loading = false\n this.$emit('loadingDone')\n })\n }\n }\n}\n\nexport default ListsUserSearch\n","import { render } from \"./lists_user_search.vue?vue&type=template&id=f65a8ae4\"\nimport script from \"./lists_user_search.js?vue&type=script&lang=js\"\nexport * from \"./lists_user_search.js?vue&type=script&lang=js\"\n\nimport \"./lists_user_search.vue?vue&type=style&index=0&id=f65a8ae4&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport ListsUserSearch from '../lists_user_search/lists_user_search.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst ListsNew = {\n components: {\n BasicUserCard,\n UserAvatar,\n ListsUserSearch,\n TabSwitcher,\n PanelLoading\n },\n data () {\n return {\n title: '',\n titleDraft: '',\n membersUserIds: [],\n removedUserIds: new Set([]), // users we added for members, to undo\n searchUserIds: [],\n addedUserIds: new Set([]), // users we added from search, to undo\n searchLoading: false,\n reallyDelete: false\n }\n },\n created () {\n if (!this.id) return\n this.$store.dispatch('fetchList', { listId: this.id })\n .then(() => {\n this.title = this.findListTitle(this.id)\n this.titleDraft = this.title\n })\n this.$store.dispatch('fetchListAccounts', { listId: this.id })\n .then(() => {\n this.membersUserIds = this.findListAccounts(this.id)\n this.membersUserIds.forEach(userId => {\n this.$store.dispatch('fetchUserIfMissing', userId)\n })\n })\n },\n computed: {\n id () {\n return this.$route.params.id\n },\n membersUsers () {\n return [...this.membersUserIds, ...this.addedUserIds]\n .map(userId => this.findUser(userId)).filter(user => user)\n },\n searchUsers () {\n return this.searchUserIds.map(userId => this.findUser(userId)).filter(user => user)\n },\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n ...mapGetters(['findUser', 'findListTitle', 'findListAccounts'])\n },\n methods: {\n onInput () {\n this.search(this.query)\n },\n toggleRemoveMember (user) {\n if (this.removedUserIds.has(user.id)) {\n this.id && this.addUser(user)\n this.removedUserIds.delete(user.id)\n } else {\n this.id && this.removeUser(user.id)\n this.removedUserIds.add(user.id)\n }\n },\n toggleAddFromSearch (user) {\n if (this.addedUserIds.has(user.id)) {\n this.id && this.removeUser(user.id)\n this.addedUserIds.delete(user.id)\n } else {\n this.id && this.addUser(user)\n this.addedUserIds.add(user.id)\n }\n },\n isRemoved (user) {\n return this.removedUserIds.has(user.id)\n },\n isAdded (user) {\n return this.addedUserIds.has(user.id)\n },\n addUser (user) {\n this.$store.dispatch('addListAccount', { accountId: user.id, listId: this.id })\n },\n removeUser (userId) {\n this.$store.dispatch('removeListAccount', { accountId: userId, listId: this.id })\n },\n onSearchLoading (results) {\n this.searchLoading = true\n },\n onSearchLoadingDone (results) {\n this.searchLoading = false\n },\n onSearchResults (results) {\n this.searchLoading = false\n this.searchUserIds = results\n },\n updateListTitle () {\n this.$store.dispatch('setList', { listId: this.id, title: this.titleDraft })\n .then(() => {\n this.title = this.findListTitle(this.id)\n })\n },\n createList () {\n this.$store.dispatch('createList', { title: this.titleDraft })\n .then((list) => {\n return this\n .$store\n .dispatch('setListAccounts', { listId: list.id, accountIds: [...this.addedUserIds] })\n .then(() => list.id)\n })\n .then((listId) => {\n this.$router.push({ name: 'lists-timeline', params: { id: listId } })\n })\n .catch((e) => {\n this.$store.dispatch('pushGlobalNotice', {\n messageKey: 'lists.error',\n messageArgs: [e.message],\n level: 'error'\n })\n })\n },\n deleteList () {\n this.$store.dispatch('deleteList', { listId: this.id })\n this.$router.push({ name: 'lists' })\n }\n }\n}\n\nexport default ListsNew\n","import { render } from \"./lists_edit.vue?vue&type=template&id=722535f4\"\nimport script from \"./lists_edit.js?vue&type=script&lang=js\"\nexport * from \"./lists_edit.js?vue&type=script&lang=js\"\n\nimport \"./lists_edit.vue?vue&type=style&index=0&id=722535f4&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default announcements-page\">\n <div class=\"panel-heading\">\n <span>\n {{ $t('announcements.page_header') }}\n </span>\n </div>\n <div class=\"panel-body\">\n <section\n v-if=\"canPostAnnouncement\"\n >\n <div class=\"post-form\">\n <div class=\"heading\">\n <h4>{{ $t('announcements.post_form_header') }}</h4>\n </div>\n <div class=\"body\">\n <announcement-editor\n :announcement=\"newAnnouncement\"\n :disabled=\"posting\"\n />\n </div>\n <div class=\"footer\">\n <button\n class=\"btn button-default post-button\"\n :disabled=\"posting\"\n @click.prevent=\"postAnnouncement\"\n >\n {{ $t('announcements.post_action') }}\n </button>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ $t('announcements.post_error', { error }) }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n :title=\"$t('announcements.close_error')\"\n />\n </button>\n </div>\n </div>\n </div>\n </section>\n <section\n v-for=\"announcement in announcements\"\n :key=\"announcement.id\"\n >\n <announcement\n :announcement=\"announcement\"\n />\n </section>\n </div>\n </div>\n</template>\n\n<script src=\"./announcements_page.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.announcements-page {\n .post-form {\n padding: var(--status-margin, $status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .post-button {\n min-width: 10em;\n }\n }\n}\n</style>\n","<template>\n <div class=\"announcement\">\n <div class=\"heading\">\n <h4>{{ $t('announcements.title') }}</h4>\n </div>\n <div class=\"body\">\n <rich-content\n v-if=\"!editing\"\n :html=\"content\"\n :emoji=\"announcement.emojis\"\n :handle-links=\"true\"\n />\n <announcement-editor\n v-else\n :announcement=\"editedAnnouncement\"\n />\n </div>\n <div class=\"footer\">\n <div\n v-if=\"!editing\"\n class=\"times\"\n >\n <span v-if=\"publishedAt\">\n {{ $t('announcements.published_time_display', { time: publishedAt }) }}\n </span>\n <span v-if=\"startsAt\">\n {{ $t('announcements.start_time_display', { time: startsAt }) }}\n </span>\n <span v-if=\"endsAt\">\n {{ $t('announcements.end_time_display', { time: endsAt }) }}\n </span>\n </div>\n <div\n v-if=\"!editing\"\n class=\"actions\"\n >\n <button\n v-if=\"currentUser\"\n class=\"btn button-default\"\n :class=\"{ toggled: isRead }\"\n :disabled=\"inactive\"\n :title=\"inactive ? $t('announcements.inactive_message') : ''\"\n @click=\"markAsRead\"\n >\n {{ $t('announcements.mark_as_read_action') }}\n </button>\n <button\n v-if=\"canEditAnnouncement\"\n class=\"btn button-default\"\n @click=\"enterEditMode\"\n >\n {{ $t('announcements.edit_action') }}\n </button>\n <button\n v-if=\"canEditAnnouncement\"\n class=\"btn button-default\"\n @click=\"deleteAnnouncement\"\n >\n {{ $t('announcements.delete_action') }}\n </button>\n </div>\n <div\n v-else\n class=\"actions\"\n >\n <button\n class=\"btn button-default\"\n @click=\"submitEdit\"\n >\n {{ $t('announcements.submit_edit_action') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"cancelEdit\"\n >\n {{ $t('announcements.cancel_edit_action') }}\n </button>\n <div\n v-if=\"editing && editError\"\n class=\"alert error\"\n >\n {{ $t('announcements.edit_error', { error }) }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n :title=\"$t('announcements.close_error')\"\n />\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./announcement.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.announcement {\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n padding: var(--status-margin, $status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .footer {\n display: flex;\n flex-direction: column;\n\n .times {\n display: flex;\n flex-direction: column;\n }\n }\n\n .footer .actions {\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n\n .btn {\n flex: 1;\n margin: 1em;\n max-width: 10em;\n }\n }\n}\n</style>\n","<template>\n <div class=\"announcement-editor\">\n <textarea\n ref=\"textarea\"\n v-model=\"announcement.content\"\n class=\"post-textarea\"\n rows=\"1\"\n cols=\"1\"\n :placeholder=\"$t('announcements.post_placeholder')\"\n :disabled=\"disabled\"\n />\n <span class=\"announcement-metadata\">\n <label for=\"announcement-start-time\">{{ $t('announcements.start_time_prompt') }}</label>\n <input\n id=\"announcement-start-time\"\n v-model=\"announcement.startsAt\"\n :type=\"announcement.allDay ? 'date' : 'datetime-local'\"\n :disabled=\"disabled\"\n >\n </span>\n <span class=\"announcement-metadata\">\n <label for=\"announcement-end-time\">{{ $t('announcements.end_time_prompt') }}</label>\n <input\n id=\"announcement-end-time\"\n v-model=\"announcement.endsAt\"\n :type=\"announcement.allDay ? 'date' : 'datetime-local'\"\n :disabled=\"disabled\"\n >\n </span>\n <span class=\"announcement-metadata\">\n <Checkbox\n id=\"announcement-all-day\"\n v-model=\"announcement.allDay\"\n :disabled=\"disabled\"\n />\n <label for=\"announcement-all-day\">{{ $t('announcements.all_day_prompt') }}</label>\n </span>\n </div>\n</template>\n\n<script src=\"./announcement_editor.js\"></script>\n\n<style lang=\"scss\">\n.announcement-editor {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n\n .announcement-metadata {\n margin-top: 0.5em;\n }\n\n .post-textarea {\n resize: vertical;\n height: 10em;\n overflow: none;\n box-sizing: content-box;\n }\n}\n</style>\n","import Checkbox from '../checkbox/checkbox.vue'\n\nconst AnnouncementEditor = {\n components: {\n Checkbox\n },\n props: {\n announcement: Object,\n disabled: Boolean\n }\n}\n\nexport default AnnouncementEditor\n","import { render } from \"./announcement_editor.vue?vue&type=template&id=357f0d7c\"\nimport script from \"./announcement_editor.js?vue&type=script&lang=js\"\nexport * from \"./announcement_editor.js?vue&type=script&lang=js\"\n\nimport \"./announcement_editor.vue?vue&type=style&index=0&id=357f0d7c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport AnnouncementEditor from '../announcement_editor/announcement_editor.vue'\nimport RichContent from '../rich_content/rich_content.jsx'\nimport localeService from '../../services/locale/locale.service.js'\n\nconst Announcement = {\n components: {\n AnnouncementEditor,\n RichContent\n },\n data () {\n return {\n editing: false,\n editedAnnouncement: {\n content: '',\n startsAt: undefined,\n endsAt: undefined,\n allDay: undefined\n },\n editError: ''\n }\n },\n props: {\n announcement: Object\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n canEditAnnouncement () {\n return this.currentUser && this.currentUser.privileges.includes('announcements_manage_announcements')\n },\n content () {\n return this.announcement.content\n },\n isRead () {\n return this.announcement.read\n },\n publishedAt () {\n const time = this.announcement.published_at\n if (!time) {\n return\n }\n\n return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n },\n startsAt () {\n const time = this.announcement.starts_at\n if (!time) {\n return\n }\n\n return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n },\n endsAt () {\n const time = this.announcement.ends_at\n if (!time) {\n return\n }\n\n return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n },\n inactive () {\n return this.announcement.inactive\n }\n },\n methods: {\n markAsRead () {\n if (!this.isRead) {\n return this.$store.dispatch('markAnnouncementAsRead', this.announcement.id)\n }\n },\n deleteAnnouncement () {\n return this.$store.dispatch('deleteAnnouncement', this.announcement.id)\n },\n formatTimeOrDate (time, locale) {\n const d = new Date(time)\n return this.announcement.all_day ? d.toLocaleDateString(locale) : d.toLocaleString(locale)\n },\n enterEditMode () {\n this.editedAnnouncement.content = this.announcement.pleroma.raw_content\n this.editedAnnouncement.startsAt = this.announcement.starts_at\n this.editedAnnouncement.endsAt = this.announcement.ends_at\n this.editedAnnouncement.allDay = this.announcement.all_day\n this.editing = true\n },\n submitEdit () {\n this.$store.dispatch('editAnnouncement', {\n id: this.announcement.id,\n ...this.editedAnnouncement\n })\n .then(() => {\n this.editing = false\n })\n .catch(error => {\n this.editError = error.error\n })\n },\n cancelEdit () {\n this.editing = false\n },\n clearError () {\n this.editError = undefined\n }\n }\n}\n\nexport default Announcement\n","import { mapState } from 'vuex'\nimport Announcement from '../announcement/announcement.vue'\nimport AnnouncementEditor from '../announcement_editor/announcement_editor.vue'\n\nconst AnnouncementsPage = {\n components: {\n Announcement,\n AnnouncementEditor\n },\n data () {\n return {\n newAnnouncement: {\n content: '',\n startsAt: undefined,\n endsAt: undefined,\n allDay: false\n },\n posting: false,\n error: undefined\n }\n },\n mounted () {\n this.$store.dispatch('fetchAnnouncements')\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n announcements () {\n return this.$store.state.announcements.announcements\n },\n canPostAnnouncement () {\n return this.currentUser && this.currentUser.privileges.includes('announcements_manage_announcements')\n }\n },\n methods: {\n postAnnouncement () {\n this.posting = true\n this.$store.dispatch('postAnnouncement', this.newAnnouncement)\n .then(() => {\n this.newAnnouncement.content = ''\n this.startsAt = undefined\n this.endsAt = undefined\n })\n .catch(error => {\n this.error = error.error\n })\n .finally(() => {\n this.posting = false\n })\n },\n clearError () {\n this.error = undefined\n }\n }\n}\n\nexport default AnnouncementsPage\n","import { render } from \"./announcement.vue?vue&type=template&id=c07fccd0\"\nimport script from \"./announcement.js?vue&type=script&lang=js\"\nexport * from \"./announcement.js?vue&type=script&lang=js\"\n\nimport \"./announcement.vue?vue&type=style&index=0&id=c07fccd0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./announcements_page.vue?vue&type=template&id=33196ec2\"\nimport script from \"./announcements_page.js?vue&type=script&lang=js\"\nexport * from \"./announcements_page.js?vue&type=script&lang=js\"\n\nimport \"./announcements_page.vue?vue&type=style&index=0&id=33196ec2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import PublicTimeline from 'components/public_timeline/public_timeline.vue'\nimport PublicAndExternalTimeline from 'components/public_and_external_timeline/public_and_external_timeline.vue'\nimport FriendsTimeline from 'components/friends_timeline/friends_timeline.vue'\nimport TagTimeline from 'components/tag_timeline/tag_timeline.vue'\nimport BookmarkTimeline from 'components/bookmark_timeline/bookmark_timeline.vue'\nimport ConversationPage from 'components/conversation-page/conversation-page.vue'\nimport Interactions from 'components/interactions/interactions.vue'\nimport DMs from 'components/dm_timeline/dm_timeline.vue'\nimport ChatList from 'components/chat_list/chat_list.vue'\nimport Chat from 'components/chat/chat.vue'\nimport UserProfile from 'components/user_profile/user_profile.vue'\nimport Search from 'components/search/search.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport FollowRequests from 'components/follow_requests/follow_requests.vue'\nimport OAuthCallback from 'components/oauth_callback/oauth_callback.vue'\nimport Notifications from 'components/notifications/notifications.vue'\nimport AuthForm from 'components/auth_form/auth_form.js'\nimport ShoutPanel from 'components/shout_panel/shout_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\nimport Lists from 'components/lists/lists.vue'\nimport ListsTimeline from 'components/lists_timeline/lists_timeline.vue'\nimport ListsEdit from 'components/lists_edit/lists_edit.vue'\nimport NavPanel from 'src/components/nav_panel/nav_panel.vue'\nimport AnnouncementsPage from 'components/announcements_page/announcements_page.vue'\n\nexport default (store) => {\n const validateAuthenticatedRoute = (to, from, next) => {\n if (store.state.users.currentUser) {\n next()\n } else {\n next(store.state.instance.redirectRootNoLogin || '/main/all')\n }\n }\n\n let routes = [\n {\n name: 'root',\n path: '/',\n redirect: _to => {\n return (store.state.users.currentUser\n ? store.state.instance.redirectRootLogin\n : store.state.instance.redirectRootNoLogin) || '/main/all'\n }\n },\n { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n {\n name: 'remote-user-profile-acct',\n path: '/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n {\n name: 'remote-user-profile',\n path: '/remote-users/:hostname/:username',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'external-user-profile', path: '/users/$:id', component: UserProfile },\n { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n { name: 'registration', path: '/registration', component: Registration },\n { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n { name: 'registration-token', path: '/registration/:token', component: Registration },\n { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n { name: 'notifications', path: '/:username/notifications', component: Notifications, props: () => ({ disableTeleport: true }), beforeEnter: validateAuthenticatedRoute },\n { name: 'login', path: '/login', component: AuthForm },\n { name: 'shout-panel', path: '/shout-panel', component: ShoutPanel, props: () => ({ floating: false }) },\n { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },\n { name: 'search', path: '/search', component: Search, props: (route) => ({ query: route.query.query }) },\n { name: 'who-to-follow', path: '/who-to-follow', component: WhoToFollow, beforeEnter: validateAuthenticatedRoute },\n { name: 'about', path: '/about', component: About },\n { name: 'announcements', path: '/announcements', component: AnnouncementsPage },\n { name: 'user-profile', path: '/users/:name', component: UserProfile },\n { name: 'legacy-user-profile', path: '/:name', component: UserProfile },\n { name: 'lists', path: '/lists', component: Lists },\n { name: 'lists-timeline', path: '/lists/:id', component: ListsTimeline },\n { name: 'lists-edit', path: '/lists/:id/edit', component: ListsEdit },\n { name: 'lists-new', path: '/lists/new', component: ListsEdit },\n { name: 'edit-navigation', path: '/nav-edit', component: NavPanel, props: () => ({ forceExpand: true, forceEditMode: true }), beforeEnter: validateAuthenticatedRoute }\n ]\n\n if (store.state.instance.pleromaChatMessagesAvailable) {\n routes = routes.concat([\n { name: 'chat', path: '/users/:username/chats/:recipient_id', component: Chat, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute },\n { name: 'chats', path: '/users/:username/chats', component: ChatList, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute }\n ])\n }\n\n return routes\n}\n","import * as bodyScrollLock from 'body-scroll-lock'\n\nlet previousNavPaddingRight\nlet previousAppBgWrapperRight\nconst lockerEls = new Set([])\n\nconst disableBodyScroll = (el) => {\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n bodyScrollLock.disableBodyScroll(el, {\n reserveScrollBarGap: true\n })\n lockerEls.add(el)\n setTimeout(() => {\n if (lockerEls.size <= 1) {\n // If previousNavPaddingRight is already set, don't set it again.\n if (previousNavPaddingRight === undefined) {\n const navEl = document.getElementById('nav')\n previousNavPaddingRight = window.getComputedStyle(navEl).getPropertyValue('padding-right')\n navEl.style.paddingRight = previousNavPaddingRight ? `calc(${previousNavPaddingRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n // If previousAppBgWrapeprRight is already set, don't set it again.\n if (previousAppBgWrapperRight === undefined) {\n const appBgWrapperEl = document.getElementById('app_bg_wrapper')\n previousAppBgWrapperRight = window.getComputedStyle(appBgWrapperEl).getPropertyValue('right')\n appBgWrapperEl.style.right = previousAppBgWrapperRight ? `calc(${previousAppBgWrapperRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n document.body.classList.add('scroll-locked')\n }\n })\n}\n\nconst enableBodyScroll = (el) => {\n lockerEls.delete(el)\n setTimeout(() => {\n if (lockerEls.size === 0) {\n if (previousNavPaddingRight !== undefined) {\n document.getElementById('nav').style.paddingRight = previousNavPaddingRight\n // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.\n previousNavPaddingRight = undefined\n }\n if (previousAppBgWrapperRight !== undefined) {\n document.getElementById('app_bg_wrapper').style.right = previousAppBgWrapperRight\n // Restore previousAppBgWrapperRight to undefined so disableBodyScroll knows it can be set again.\n previousAppBgWrapperRight = undefined\n }\n document.body.classList.remove('scroll-locked')\n }\n })\n bodyScrollLock.enableBodyScroll(el)\n}\n\nconst directive = {\n mounted: (el, binding) => {\n if (binding.value) {\n disableBodyScroll(el)\n }\n },\n updated: (el, binding) => {\n if (binding.oldValue === binding.value) {\n return\n }\n\n if (binding.value) {\n disableBodyScroll(el)\n } else {\n enableBodyScroll(el)\n }\n },\n unmounted: (el) => {\n enableBodyScroll(el)\n }\n}\n\nexport default (Vue) => {\n Vue.directive('body-scroll-lock', directive)\n}\n","import { createApp } from 'vue'\nimport { createRouter, createWebHistory } from 'vue-router'\nimport vClickOutside from 'click-outside-vue3'\nimport VueVirtualScroller from 'vue-virtual-scroller'\nimport 'vue-virtual-scroller/dist/vue-virtual-scroller.css'\n\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport App from '../App.vue'\nimport routes from './routes'\nimport VBodyScrollLock from 'src/directives/body_scroll_lock'\n\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport { getOrCreateApp, getClientToken } from '../services/new_api/oauth.js'\nimport backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport { applyTheme, applyConfig } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n if (!document.getElementById('initial-results')) {\n return null\n }\n if (!staticInitialResults) {\n staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n }\n return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n const rawData = atob(data)\n const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n const text = new TextDecoder().decode(array)\n return text\n}\n\nconst preloadFetch = async (request) => {\n const data = parsedInitialResults()\n if (!data || !data[request]) {\n return window.fetch(request)\n }\n const decoded = decodeUTF8Base64(data[request])\n const requestData = JSON.parse(decoded)\n return {\n ok: true,\n json: () => requestData,\n text: () => requestData\n }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n try {\n const res = await preloadFetch('/api/v1/instance')\n if (res.ok) {\n const data = await res.json()\n const textlimit = data.max_toot_chars\n const vapidPublicKey = data.pleroma.vapid_public_key\n\n store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n store.dispatch('setInstanceOption', { name: 'birthdayRequired', value: !!data.pleroma.metadata.birthday_required })\n store.dispatch('setInstanceOption', { name: 'birthdayMinAge', value: data.pleroma.metadata.birthday_min_age || 0 })\n\n if (vapidPublicKey) {\n store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n }\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load instance config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n try {\n const res = await window.fetch('/api/pleroma/frontend_configurations')\n if (res.ok) {\n const data = await res.json()\n return data.pleroma_fe\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load backend-provided frontend config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getStaticConfig = async () => {\n try {\n const res = await window.fetch('/static/config.json')\n if (res.ok) {\n return res.json()\n } else {\n throw (res)\n }\n } catch (error) {\n console.warn('Failed to load static/config.json, continuing without it.')\n console.warn(error)\n return {}\n }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n const overrides = window.___pleromafe_dev_overrides || {}\n const env = window.___pleromafe_mode.NODE_ENV\n\n // This takes static config and overrides properties that are present in apiConfig\n let config = {}\n if (overrides.staticConfigPreference && env === 'development') {\n console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n config = Object.assign({}, apiConfig, staticConfig)\n } else {\n config = Object.assign({}, staticConfig, apiConfig)\n }\n\n const copyInstanceOption = (name) => {\n store.dispatch('setInstanceOption', { name, value: config[name] })\n }\n\n copyInstanceOption('nsfwCensorImage')\n copyInstanceOption('background')\n copyInstanceOption('hidePostStats')\n copyInstanceOption('hideBotIndication')\n copyInstanceOption('hideUserStats')\n copyInstanceOption('hideFilteredStatuses')\n copyInstanceOption('logo')\n\n store.dispatch('setInstanceOption', {\n name: 'logoMask',\n value: typeof config.logoMask === 'undefined'\n ? true\n : config.logoMask\n })\n\n store.dispatch('setInstanceOption', {\n name: 'logoMargin',\n value: typeof config.logoMargin === 'undefined'\n ? 0\n : config.logoMargin\n })\n copyInstanceOption('logoLeft')\n store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n copyInstanceOption('redirectRootNoLogin')\n copyInstanceOption('redirectRootLogin')\n copyInstanceOption('showInstanceSpecificPanel')\n copyInstanceOption('minimalScopesMode')\n copyInstanceOption('hideMutedPosts')\n copyInstanceOption('collapseMessageWithSubject')\n copyInstanceOption('scopeCopy')\n copyInstanceOption('subjectLineBehavior')\n copyInstanceOption('postContentType')\n copyInstanceOption('alwaysShowSubjectInput')\n copyInstanceOption('showFeaturesPanel')\n copyInstanceOption('hideSitename')\n copyInstanceOption('sidebarRight')\n\n return store.dispatch('setTheme', config.theme)\n}\n\nconst getTOS = async ({ store }) => {\n try {\n const res = await window.fetch('/static/terms-of-service.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'tos', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load TOS\")\n console.warn(e)\n }\n}\n\nconst getInstancePanel = async ({ store }) => {\n try {\n const res = await preloadFetch('/instance/panel.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load instance panel\")\n console.warn(e)\n }\n}\n\nconst getStickers = async ({ store }) => {\n try {\n const res = await window.fetch('/static/stickers.json')\n if (res.ok) {\n const values = await res.json()\n const stickers = (await Promise.all(\n Object.entries(values).map(async ([name, path]) => {\n const resPack = await window.fetch(path + 'pack.json')\n let meta = {}\n if (resPack.ok) {\n meta = await resPack.json()\n }\n return {\n pack: name,\n path,\n meta\n }\n })\n )).sort((a, b) => {\n return a.meta.title.localeCompare(b.meta.title)\n })\n store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load stickers\")\n console.warn(e)\n }\n}\n\nconst getAppSecret = async ({ store }) => {\n const { state, commit } = store\n const { oauth, instance } = state\n return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n .then((app) => getClientToken({ ...app, instance: instance.server }))\n .then((token) => {\n commit('setAppToken', token.access_token)\n commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n const nicknames = accounts.map(uri => uri.split('/').pop())\n store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n try {\n const res = await preloadFetch('/nodeinfo/2.0.json')\n if (res.ok) {\n const data = await res.json()\n const metadata = data.metadata\n const features = metadata.features\n store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })\n store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })\n store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n store.dispatch('setInstanceOption', { name: 'editingAvailable', value: features.includes('editing') })\n store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n\n const uploadLimits = metadata.uploadLimits\n store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n const suggestions = metadata.suggestions\n store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n const software = data.software\n store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n const priv = metadata.private\n store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n const frontendVersion = window.___pleromafe_commit_hash\n store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n const federation = metadata.federation\n\n store.dispatch('setInstanceOption', {\n name: 'tagPolicyAvailable',\n value: typeof federation.mrf_policies === 'undefined'\n ? false\n : metadata.federation.mrf_policies.includes('TagPolicy')\n })\n\n store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n store.dispatch('setInstanceOption', {\n name: 'federating',\n value: typeof federation.enabled === 'undefined'\n ? true\n : federation.enabled\n })\n\n const accountActivationRequired = metadata.accountActivationRequired\n store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n const accounts = metadata.staffAccounts\n resolveStaffAccounts({ store, accounts })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn('Could not load nodeinfo')\n console.warn(e)\n }\n}\n\nconst setConfig = async ({ store }) => {\n // apiConfig, staticConfig\n const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n const apiConfig = configInfos[0]\n const staticConfig = configInfos[1]\n\n await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n if (store.getters.getUserToken()) {\n try {\n await store.dispatch('loginUser', store.getters.getUserToken())\n } catch (e) {\n console.error(e)\n }\n }\n resolve()\n })\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n\n FaviconService.initFaviconService()\n\n const overrides = window.___pleromafe_dev_overrides || {}\n const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n await setConfig({ store })\n\n const { customTheme, customThemeSource } = store.state.config\n const { theme } = store.state.instance\n const customThemePresent = customThemeSource || customTheme\n\n if (customThemePresent) {\n if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n applyTheme(customThemeSource)\n } else {\n applyTheme(customTheme)\n }\n } else if (theme) {\n // do nothing, it will load asynchronously\n } else {\n console.error('Failed to load any theme!')\n }\n\n applyConfig(store.state.config)\n\n // Now we can try getting the server settings and logging in\n // Most of these are preloaded into the index.html so blocking is minimized\n await Promise.all([\n checkOAuthToken({ store }),\n getInstancePanel({ store }),\n getNodeInfo({ store }),\n getInstanceConfig({ store })\n ])\n\n // Start fetching things that don't need to block the UI\n store.dispatch('fetchMutes')\n store.dispatch('startFetchingAnnouncements')\n getTOS({ store })\n getStickers({ store })\n\n const router = createRouter({\n history: createWebHistory(),\n routes: routes(store),\n scrollBehavior: (to, _from, savedPosition) => {\n if (to.matched.some(m => m.meta.dontScroll)) {\n return false\n }\n return savedPosition || { left: 0, top: 0 }\n }\n })\n\n const app = createApp(App)\n\n app.use(router)\n app.use(store)\n app.use(i18n)\n\n app.use(vClickOutside)\n app.use(VBodyScrollLock)\n app.use(VueVirtualScroller)\n\n app.component('FAIcon', FontAwesomeIcon)\n app.component('FALayers', FontAwesomeLayers)\n\n // remove after vue 3.3\n app.config.unwrapInjectedRef = true\n\n app.mount('#app')\n\n return app\n}\n\nexport default afterStoreSetup\n","import { createStore } from 'vuex'\n\nimport 'custom-event-polyfill'\nimport './lib/event_target_polyfill.js'\n\nimport interfaceModule from './modules/interface.js'\nimport instanceModule from './modules/instance.js'\nimport statusesModule from './modules/statuses.js'\nimport listsModule from './modules/lists.js'\nimport usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport serverSideConfigModule from './modules/serverSideConfig.js'\nimport serverSideStorageModule from './modules/serverSideStorage.js'\nimport shoutModule from './modules/shout.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\nimport editStatusModule from './modules/editStatus.js'\nimport statusHistoryModule from './modules/statusHistory.js'\n\nimport chatsModule from './modules/chats.js'\nimport announcementsModule from './modules/announcements.js'\n\nimport { createI18n } from 'vue-i18n'\n\nimport createPersistedState from './lib/persisted_state.js'\nimport pushNotifications from './lib/push_notifications_plugin.js'\n\nimport messages from './i18n/messages.js'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nconst i18n = createI18n({\n // By default, use the browser locale, we will update it if neccessary\n locale: 'en',\n fallbackLocale: 'en',\n messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n paths: [\n 'serverSideStorage.cache',\n 'config',\n 'users.lastLoginName',\n 'oauth'\n ]\n};\n\n(async () => {\n let storageError = false\n const plugins = [pushNotifications]\n try {\n const persistedState = await createPersistedState(persistedStateOptions)\n plugins.push(persistedState)\n } catch (e) {\n console.error(e)\n storageError = true\n }\n const store = createStore({\n modules: {\n i18n: {\n getters: {\n i18n: () => i18n.global\n }\n },\n interface: interfaceModule,\n instance: instanceModule,\n // TODO refactor users/statuses modules, they depend on each other\n users: usersModule,\n statuses: statusesModule,\n lists: listsModule,\n api: apiModule,\n config: configModule,\n serverSideConfig: serverSideConfigModule,\n serverSideStorage: serverSideStorageModule,\n shout: shoutModule,\n oauth: oauthModule,\n authFlow: authFlowModule,\n mediaViewer: mediaViewerModule,\n oauthTokens: oauthTokensModule,\n reports: reportsModule,\n polls: pollsModule,\n postStatus: postStatusModule,\n editStatus: editStatusModule,\n statusHistory: statusHistoryModule,\n chats: chatsModule,\n announcements: announcementsModule\n },\n plugins,\n strict: false // Socket modifies itself, let's ignore this for now.\n // strict: process.env.NODE_ENV !== 'production'\n })\n if (storageError) {\n store.dispatch('pushGlobalNotice', { messageKey: 'errors.storage_unavailable', level: 'error' })\n }\n afterStoreSetup({ store, i18n })\n})()\n\n// These are inlined by webpack's DefinePlugin\n/* eslint-disable */\nwindow.___pleromafe_mode = process.env\nwindow.___pleromafe_commit_hash = COMMIT_HASH\nwindow.___pleromafe_dev_overrides = DEV_OVERRIDES\n","import Cookies from 'js-cookie'\nimport { setPreset, applyTheme, applyConfig } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\nimport localeService from '../services/locale/locale.service.js'\n\nconst BACKEND_LANGUAGE_COOKIE_NAME = 'userLanguage'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n 'postContentType',\n 'subjectLineBehavior',\n 'conversationDisplay', // tree | linear\n 'conversationOtherRepliesButton', // below | inside\n 'mentionLinkDisplay', // short | full_for_remote | full\n 'userPopoverAvatarAction' // close | zoom | open\n]\n\nexport const defaultState = {\n expertLevel: 0, // used to track which settings to show and hide\n colors: {},\n theme: undefined,\n customTheme: undefined,\n customThemeSource: undefined,\n hideISP: false,\n hideInstanceWallpaper: false,\n hideShoutbox: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: undefined, // instance default\n hideMutedThreads: undefined, // instance default\n hideWordFilteredPosts: undefined, // instance default\n muteBotStatuses: undefined, // instance default\n collapseMessageWithSubject: undefined, // instance default\n padEmoji: true,\n hideAttachments: false,\n hideAttachmentsInConv: false,\n maxThumbnails: 16,\n hideNsfw: true,\n preloadImage: true,\n loopVideo: true,\n loopVideoSilentOnly: true,\n streaming: false,\n emojiReactionsOnTimeline: true,\n alwaysShowNewPostButton: false,\n autohideFloatingPostButton: false,\n pauseOnUnfocused: true,\n stopGifs: true,\n replyVisibility: 'all',\n thirdColumnMode: 'notifications',\n notificationVisibility: {\n follows: true,\n mentions: true,\n likes: true,\n repeats: true,\n moves: true,\n emojiReactions: true,\n followRequest: true,\n reports: true,\n chatMention: true,\n polls: true\n },\n webPushNotifications: false,\n muteWords: [],\n highlight: {},\n interfaceLanguage: browserLocale,\n hideScopeNotice: false,\n useStreamingApi: false,\n sidebarRight: undefined, // instance default\n scopeCopy: undefined, // instance default\n subjectLineBehavior: undefined, // instance default\n alwaysShowSubjectInput: undefined, // instance default\n postContentType: undefined, // instance default\n minimalScopesMode: undefined, // instance default\n // This hides statuses filtered via a word filter\n hideFilteredStatuses: undefined, // instance default\n modalOnRepeat: undefined, // instance default\n modalOnUnfollow: undefined, // instance default\n modalOnBlock: undefined, // instance default\n modalOnMute: undefined, // instance default\n modalOnDelete: undefined, // instance default\n modalOnLogout: undefined, // instance default\n modalOnApproveFollow: undefined, // instance default\n modalOnDenyFollow: undefined, // instance default\n modalOnRemoveUserFromFollowers: undefined, // instance default\n playVideosInModal: false,\n useOneClickNsfw: false,\n useContainFit: true,\n disableStickyHeaders: false,\n showScrollbars: false,\n userPopoverAvatarAction: 'open',\n userPopoverOverlay: false,\n sidebarColumnWidth: '25rem',\n contentColumnWidth: '45rem',\n notifsColumnWidth: '25rem',\n navbarColumnStretch: false,\n greentext: undefined, // instance default\n useAtIcon: undefined, // instance default\n mentionLinkDisplay: undefined, // instance default\n mentionLinkShowTooltip: undefined, // instance default\n mentionLinkShowAvatar: undefined, // instance default\n mentionLinkFadeDomain: undefined, // instance default\n mentionLinkShowYous: undefined, // instance default\n mentionLinkBoldenYou: undefined, // instance default\n hidePostStats: undefined, // instance default\n hideBotIndication: undefined, // instance default\n hideUserStats: undefined, // instance default\n virtualScrolling: undefined, // instance default\n sensitiveByDefault: undefined, // instance default\n conversationDisplay: undefined, // instance default\n conversationTreeAdvanced: undefined, // instance default\n conversationOtherRepliesButton: undefined, // instance default\n conversationTreeFadeAncestors: undefined, // instance default\n maxDepthInThread: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n .filter(([key, value]) => value === undefined)\n .map(([key, value]) => key)\n\nconst config = {\n state: { ...defaultState },\n getters: {\n defaultConfig (state, getters, rootState, rootGetters) {\n const { instance } = rootState\n return {\n ...defaultState,\n ...Object.fromEntries(\n instanceDefaultProperties.map(key => [key, instance[key]])\n )\n }\n },\n mergedConfig (state, getters, rootState, rootGetters) {\n const { defaultConfig } = rootGetters\n return {\n ...defaultConfig,\n // Do not override with undefined\n ...Object.fromEntries(Object.entries(state).filter(([k, v]) => v !== undefined))\n }\n }\n },\n mutations: {\n setOption (state, { name, value }) {\n state[name] = value\n },\n setHighlight (state, { user, color, type }) {\n const data = this.state.config.highlight[user]\n if (color || type) {\n state.highlight[user] = { color: color || data.color, type: type || data.type }\n } else {\n delete state.highlight[user]\n }\n }\n },\n actions: {\n loadSettings ({ dispatch }, data) {\n const knownKeys = new Set(Object.keys(defaultState))\n const presentKeys = new Set(Object.keys(data))\n const intersection = new Set()\n for (const elem of presentKeys) {\n if (knownKeys.has(elem)) {\n intersection.add(elem)\n }\n }\n\n intersection.forEach(\n name => dispatch('setOption', { name, value: data[name] })\n )\n },\n setHighlight ({ commit, dispatch }, { user, color, type }) {\n commit('setHighlight', { user, color, type })\n },\n setOption ({ commit, dispatch, state }, { name, value }) {\n commit('setOption', { name, value })\n switch (name) {\n case 'theme':\n setPreset(value)\n break\n case 'sidebarColumnWidth':\n case 'contentColumnWidth':\n case 'notifsColumnWidth':\n applyConfig(state)\n break\n case 'customTheme':\n case 'customThemeSource':\n applyTheme(value)\n break\n case 'interfaceLanguage':\n messages.setLanguage(this.getters.i18n, value)\n dispatch('loadUnicodeEmojiData', value)\n Cookies.set(\n BACKEND_LANGUAGE_COOKIE_NAME,\n localeService.internalToBackendLocaleMulti(value)\n )\n break\n case 'thirdColumnMode':\n dispatch('setLayoutWidth', undefined)\n break\n }\n }\n }\n}\n\nexport default config\n","import { get, set } from 'lodash'\n\nconst defaultApi = ({ rootState, commit }, { path, value }) => {\n const params = {}\n set(params, path, value)\n return rootState\n .api\n .backendInteractor\n .updateProfile({ params })\n .then(result => {\n commit('addNewUsers', [result])\n commit('setCurrentUser', result)\n })\n}\n\nconst notificationsApi = ({ rootState, commit }, { path, value, oldValue }) => {\n const settings = {}\n set(settings, path, value)\n return rootState\n .api\n .backendInteractor\n .updateNotificationSettings({ settings })\n .then(result => {\n if (result.status === 'success') {\n commit('confirmServerSideOption', { name, value })\n } else {\n commit('confirmServerSideOption', { name, value: oldValue })\n }\n })\n}\n\n/**\n * Map that stores relation between path for reading (from user profile),\n * for writing (into API) an what API to use.\n *\n * Shorthand - instead of { get, set, api? } object it's possible to use string\n * in case default api is used and get = set\n *\n * If no api is specified, defaultApi is used (see above)\n */\nexport const settingsMap = {\n defaultScope: 'source.privacy',\n defaultNSFW: 'source.sensitive', // BROKEN: pleroma/pleroma#2837\n stripRichContent: {\n get: 'source.pleroma.no_rich_text',\n set: 'no_rich_text'\n },\n // Privacy\n locked: 'locked',\n acceptChatMessages: {\n get: 'pleroma.accepts_chat_messages',\n set: 'accepts_chat_messages'\n },\n allowFollowingMove: {\n get: 'pleroma.allow_following_move',\n set: 'allow_following_move'\n },\n discoverable: {\n get: 'source.pleroma.discoverable',\n set: 'discoverable'\n },\n hideFavorites: {\n get: 'pleroma.hide_favorites',\n set: 'hide_favorites'\n },\n hideFollowers: {\n get: 'pleroma.hide_followers',\n set: 'hide_followers'\n },\n hideFollows: {\n get: 'pleroma.hide_follows',\n set: 'hide_follows'\n },\n hideFollowersCount: {\n get: 'pleroma.hide_followers_count',\n set: 'hide_followers_count'\n },\n hideFollowsCount: {\n get: 'pleroma.hide_follows_count',\n set: 'hide_follows_count'\n },\n // NotificationSettingsAPIs\n webPushHideContents: {\n get: 'pleroma.notification_settings.hide_notification_contents',\n set: 'hide_notification_contents',\n api: notificationsApi\n },\n blockNotificationsFromStrangers: {\n get: 'pleroma.notification_settings.block_from_strangers',\n set: 'block_from_strangers',\n api: notificationsApi\n }\n}\n\nexport const defaultState = Object.fromEntries(Object.keys(settingsMap).map(key => [key, null]))\n\nconst serverSideConfig = {\n state: { ...defaultState },\n mutations: {\n confirmServerSideOption (state, { name, value }) {\n set(state, name, value)\n },\n wipeServerSideOption (state, { name }) {\n set(state, name, null)\n },\n wipeAllServerSideOptions (state) {\n Object.keys(settingsMap).forEach(key => {\n set(state, key, null)\n })\n },\n // Set the settings based on their path location\n setCurrentUser (state, user) {\n Object.entries(settingsMap).forEach((map) => {\n const [name, value] = map\n const { get: path = value } = value\n set(state, name, get(user._original, path))\n })\n }\n },\n actions: {\n setServerSideOption ({ rootState, state, commit, dispatch }, { name, value }) {\n const oldValue = get(state, name)\n const map = settingsMap[name]\n if (!map) throw new Error('Invalid server-side setting')\n const { set: path = map, api = defaultApi } = map\n commit('wipeServerSideOption', { name })\n\n api({ rootState, commit }, { path, value, oldValue })\n .catch((e) => {\n console.warn('Error setting server-side option:', e)\n commit('confirmServerSideOption', { name, value: oldValue })\n })\n },\n logout ({ commit }) {\n commit('wipeAllServerSideOptions')\n }\n }\n}\n\nexport default serverSideConfig\n","import { humanizeErrors } from '../../modules/errors'\n\nexport function StatusCodeError (statusCode, body, options, response) {\n this.name = 'StatusCodeError'\n this.statusCode = statusCode\n this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)\n this.error = body // legacy attribute\n this.options = options\n this.response = response\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this)\n }\n}\nStatusCodeError.prototype = Object.create(Error.prototype)\nStatusCodeError.prototype.constructor = StatusCodeError\n\nexport class RegistrationError extends Error {\n constructor (error) {\n super()\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this)\n }\n\n try {\n // the error is probably a JSON object with a single key, \"errors\", whose value is another JSON object containing the real errors\n if (typeof error === 'string') {\n error = JSON.parse(error)\n // eslint-disable-next-line\n if (error.hasOwnProperty('error')) {\n error = JSON.parse(error.error)\n }\n }\n\n if (typeof error === 'object') {\n const errorContents = JSON.parse(error.error)\n // keys will have the property that has the error, for example 'ap_id',\n // 'email' or 'captcha', the value will be an array of its error\n // like \"ap_id\": [\"has been taken\"] or \"captcha\": [\"Invalid CAPTCHA\"]\n\n // replace ap_id with username\n if (errorContents.ap_id) {\n errorContents.username = errorContents.ap_id\n delete errorContents.ap_id\n }\n\n this.message = humanizeErrors(errorContents)\n } else {\n this.message = error\n }\n } catch (e) {\n // can't parse it, so just treat it like a string\n this.message = error\n }\n }\n}\n","import { capitalize } from 'lodash'\n\nexport function humanizeErrors (errors) {\n return Object.entries(errors).reduce((errs, [k, val]) => {\n const message = val.reduce((acc, message) => {\n const key = capitalize(k.replace(/_/g, ' '))\n return acc + [key, message].join(' ') + '. '\n }, '')\n return [...errs, message]\n }, [])\n}\n","import { each, map, concat, last, get } from 'lodash'\nimport { parseStatus, parseSource, parseUser, parseNotification, parseAttachment, parseChat, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst MOVE_ACCOUNT_URL = '/api/pleroma/move_account'\nconst ALIASES_URL = '/api/pleroma/aliases'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_STATUS_SOURCE_URL = id => `/api/v1/statuses/${id}/source`\nconst MASTODON_STATUS_HISTORY_URL = id => `/api/v1/statuses/${id}/history`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_LOOKUP_URL = '/api/v1/accounts/lookup'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_USER_IN_LISTS = id => `/api/v1/accounts/${id}/lists`\nconst MASTODON_LIST_URL = id => `/api/v1/lists/${id}`\nconst MASTODON_LIST_TIMELINE_URL = id => `/api/v1/timelines/list/${id}`\nconst MASTODON_LIST_ACCOUNTS_URL = id => `/api/v1/lists/${id}/accounts`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_REMOVE_USER_FROM_FOLLOWERS = id => `/api/v1/accounts/${id}/remove_from_followers`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_USER_NOTE_URL = id => `/api/v1/accounts/${id}/note`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = '/api/v2/search'\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_LISTS_URL = '/api/v1/lists'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst MASTODON_ANNOUNCEMENTS_URL = '/api/v1/announcements'\nconst MASTODON_ANNOUNCEMENTS_DISMISS_URL = id => `/api/v1/announcements/${id}/dismiss`\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = '/api/v1/pleroma/chats'\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\nconst PLEROMA_ADMIN_REPORTS = '/api/pleroma/admin/reports'\nconst PLEROMA_BACKUP_URL = '/api/v1/pleroma/backups'\nconst PLEROMA_ANNOUNCEMENTS_URL = '/api/v1/pleroma/admin/announcements'\nconst PLEROMA_POST_ANNOUNCEMENT_URL = '/api/v1/pleroma/admin/announcements'\nconst PLEROMA_EDIT_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}`\nconst PLEROMA_DELETE_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}`\n\nconst oldfetch = window.fetch\n\nconst fetch = (url, options) => {\n options = options || {}\n const baseUrl = ''\n const fullUrl = baseUrl + url\n options.credentials = 'same-origin'\n return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n const options = {\n method,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...headers\n }\n }\n if (params) {\n url += '?' + Object.entries(params)\n .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n .join('&')\n }\n if (payload) {\n options.body = JSON.stringify(payload)\n }\n if (credentials) {\n options.headers = {\n ...options.headers,\n ...authHeaders(credentials)\n }\n }\n return fetch(url, options)\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url, options }, response))\n }\n return resolve(json)\n })\n .catch((error) => {\n return reject(new StatusCodeError(response.status, error, { url, options }, response))\n })\n )\n })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n const form = new FormData()\n\n each(settings, (value, key) => {\n form.append(key, value)\n })\n\n return fetch(`${NOTIFICATION_SETTINGS_URL}?${new URLSearchParams(settings)}`, {\n headers: authHeaders(credentials),\n method: 'PUT',\n body: form\n }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, avatarName = null, banner = null, background = null }) => {\n const form = new FormData()\n if (avatar !== null) {\n if (avatarName !== null) {\n form.append('avatar', avatar, avatarName)\n } else {\n form.append('avatar', avatar)\n }\n }\n if (banner !== null) form.append('header', banner)\n if (background !== null) form.append('pleroma_background_image', background)\n return fetch(MASTODON_PROFILE_UPDATE_URL, {\n headers: authHeaders(credentials),\n method: 'PATCH',\n body: form\n })\n .then((data) => data.json())\n .then((data) => {\n if (data.error) {\n throw new Error(data.error)\n }\n return parseUser(data)\n })\n}\n\nconst updateProfile = ({ credentials, params }) => {\n return promisedRequest({\n url: MASTODON_PROFILE_UPDATE_URL,\n method: 'PATCH',\n payload: params,\n credentials\n }).then((data) => parseUser(data))\n}\n\n// Params needed:\n// nickname\n// email\n// fullname\n// password\n// password_confirm\n//\n// Optional\n// bio\n// homepage\n// location\n// token\n// language\nconst register = ({ params, credentials }) => {\n const { nickname, ...rest } = params\n return fetch(MASTODON_REGISTRATION_URL, {\n method: 'POST',\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n nickname,\n locale: 'en_US',\n agreement: true,\n ...rest\n })\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return response.json().then((error) => { throw new RegistrationError(error) })\n }\n })\n}\n\nconst getCaptcha = () => fetch('/api/pleroma/captcha').then(resp => resp.json())\n\nconst authHeaders = (accessToken) => {\n if (accessToken) {\n return { Authorization: `Bearer ${accessToken}` }\n } else {\n return { }\n }\n}\n\nconst followUser = ({ id, credentials, ...options }) => {\n const url = MASTODON_FOLLOW_URL(id)\n const form = {}\n if (options.reblogs !== undefined) { form.reblogs = options.reblogs }\n return fetch(url, {\n body: JSON.stringify(form),\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n const url = MASTODON_UNFOLLOW_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUserInLists = ({ id, credentials }) => {\n const url = MASTODON_USER_IN_LISTS(id)\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n return fetch(MASTODON_BLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst removeUserFromFollowers = ({ id, credentials }) => {\n return fetch(MASTODON_REMOVE_USER_FROM_FOLLOWERS(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst editUserNote = ({ id, credentials, comment }) => {\n return promisedRequest({\n url: MASTODON_USER_NOTE_URL(id),\n credentials,\n payload: {\n comment\n },\n method: 'POST'\n })\n}\n\nconst approveUser = ({ id, credentials }) => {\n const url = MASTODON_APPROVE_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n const url = MASTODON_DENY_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n const url = `${MASTODON_USER_URL}/${id}`\n return promisedRequest({ url, credentials })\n .then((data) => parseUser(data))\n}\n\nconst fetchUserByName = ({ name, credentials }) => {\n return promisedRequest({\n url: MASTODON_USER_LOOKUP_URL,\n credentials,\n params: { acct: name }\n })\n .then(data => data.id)\n .catch(error => {\n if (error && error.statusCode === 404) {\n // Either the backend does not support lookup endpoint,\n // or there is no user with such name. Fallback and treat name as id.\n return name\n } else {\n throw error\n }\n })\n .then(id => fetchUser({ id, credentials }))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n const url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n return fetch(url, { headers: authHeaders(credentials) })\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url }, response))\n }\n return resolve(json)\n }))\n })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWING_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n 'with_relationships=true'\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n try {\n let friends = []\n let more = true\n while (more) {\n const maxId = friends.length > 0 ? last(friends).id : undefined\n const users = await fetchFriends({ id, maxId, credentials })\n friends = concat(friends, users)\n if (users.length === 0) {\n more = false\n }\n }\n resolve(friends)\n } catch (err) {\n reject(err)\n }\n })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWERS_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n 'with_relationships=true'\n ].filter(_ => _).join('&')\n\n url += args ? '?' + args : ''\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n const url = MASTODON_FOLLOW_REQUESTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchLists = ({ credentials }) => {\n const url = MASTODON_LISTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n}\n\nconst createList = ({ title, credentials }) => {\n const url = MASTODON_LISTS_URL\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({ title })\n }).then((data) => data.json())\n}\n\nconst getList = ({ listId, credentials }) => {\n const url = MASTODON_LIST_URL(listId)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n}\n\nconst updateList = ({ listId, title, credentials }) => {\n const url = MASTODON_LIST_URL(listId)\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'PUT',\n body: JSON.stringify({ title })\n })\n}\n\nconst getListAccounts = ({ listId, credentials }) => {\n const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(({ id }) => id))\n}\n\nconst addAccountsToList = ({ listId, accountIds, credentials }) => {\n const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({ account_ids: accountIds })\n })\n}\n\nconst removeAccountsFromList = ({ listId, accountIds, credentials }) => {\n const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'DELETE',\n body: JSON.stringify({ account_ids: accountIds })\n })\n}\n\nconst deleteList = ({ listId, credentials }) => {\n const url = MASTODON_LIST_URL(listId)\n return fetch(url, {\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n const urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n return fetch(urlContext, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then(({ ancestors, descendants }) => ({\n ancestors: ancestors.map(parseStatus),\n descendants: descendants.map(parseStatus)\n }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n const url = MASTODON_STATUS_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then((data) => parseStatus(data))\n}\n\nconst fetchStatusSource = ({ id, credentials }) => {\n const url = MASTODON_STATUS_SOURCE_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching source', data)\n })\n .then((data) => data.json())\n .then((data) => parseSource(data))\n}\n\nconst fetchStatusHistory = ({ status, credentials }) => {\n const url = MASTODON_STATUS_HISTORY_URL(status.id)\n return promisedRequest({ url, credentials })\n .then((data) => {\n data.reverse()\n return data.map((item) => {\n item.originalStatus = status\n return parseStatus(item)\n })\n })\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const form = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'PUT',\n headers,\n body: JSON.stringify(form)\n })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const body = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'DELETE',\n headers,\n body: JSON.stringify(body)\n })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'POST',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'DELETE',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: ACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: DEACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n const screenName = user.screen_name\n const headers = authHeaders(credentials)\n\n return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n method: 'DELETE',\n headers\n })\n}\n\nconst fetchTimeline = ({\n timeline,\n credentials,\n since = false,\n until = false,\n userId = false,\n listId = false,\n tag = false,\n withMuted = false,\n replyVisibility = 'all',\n includeTypes = []\n}) => {\n const timelineUrls = {\n public: MASTODON_PUBLIC_TIMELINE,\n friends: MASTODON_USER_HOME_TIMELINE_URL,\n dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n notifications: MASTODON_USER_NOTIFICATIONS_URL,\n publicAndExternal: MASTODON_PUBLIC_TIMELINE,\n user: MASTODON_USER_TIMELINE_URL,\n media: MASTODON_USER_TIMELINE_URL,\n list: MASTODON_LIST_TIMELINE_URL,\n favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n tag: MASTODON_TAG_TIMELINE_URL,\n bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n }\n const isNotifications = timeline === 'notifications'\n const params = []\n\n let url = timelineUrls[timeline]\n\n if (timeline === 'user' || timeline === 'media') {\n url = url(userId)\n }\n\n if (timeline === 'list') {\n url = url(listId)\n }\n\n if (since) {\n params.push(['since_id', since])\n }\n if (until) {\n params.push(['max_id', until])\n }\n if (tag) {\n url = url(tag)\n }\n if (timeline === 'media') {\n params.push(['only_media', 1])\n }\n if (timeline === 'public') {\n params.push(['local', true])\n }\n if (timeline === 'public' || timeline === 'publicAndExternal') {\n params.push(['only_media', false])\n }\n if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n params.push(['with_muted', withMuted])\n }\n if (replyVisibility !== 'all') {\n params.push(['reply_visibility', replyVisibility])\n }\n if (includeTypes.length > 0) {\n includeTypes.forEach(type => {\n params.push(['include_types[]', type])\n })\n }\n\n params.push(['limit', 20])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then(async (response) => {\n const success = response.ok\n\n const data = await response.json()\n\n if (success && !data.errors) {\n const pagination = parseLinkHeaderPagination(response.headers.get('Link'), {\n flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n })\n\n return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n } else {\n data.errors ||= []\n data.status = response.status\n data.statusText = response.statusText\n return data\n }\n })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n return promisedRequest({ url, credentials })\n .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n return fetch(MASTODON_LOGIN_URL, {\n headers: authHeaders(user)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_BOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst postStatus = ({\n credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n mediaIds = [],\n inReplyToStatusId,\n contentType,\n preview,\n idempotencyKey\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n form.append('source', 'Pleroma FE')\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (visibility) form.append('visibility', visibility)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: poll.expiresIn,\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n if (inReplyToStatusId) {\n form.append('in_reply_to_id', inReplyToStatusId)\n }\n if (preview) {\n form.append('preview', 'true')\n }\n\n const postHeaders = authHeaders(credentials)\n if (idempotencyKey) {\n postHeaders['idempotency-key'] = idempotencyKey\n }\n\n return fetch(MASTODON_POST_STATUS_URL, {\n body: form,\n method: 'POST',\n headers: postHeaders\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst editStatus = ({\n id,\n credentials,\n status,\n spoilerText,\n sensitive,\n poll,\n mediaIds = [],\n contentType\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: poll.expiresIn,\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n\n const putHeaders = authHeaders(credentials)\n\n return fetch(MASTODON_STATUS_URL(id), {\n body: form,\n method: 'PUT',\n headers: putHeaders\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n return fetch(MASTODON_DELETE_URL(id), {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((data) => data.json())\n .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n return promisedRequest({\n url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n method: 'PUT',\n headers: authHeaders(credentials),\n payload: {\n description\n }\n }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(MUTES_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(BLOCKS_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(FOLLOW_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(DELETE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n const form = new FormData()\n\n form.append('email', email)\n form.append('password', password)\n\n return fetch(CHANGE_EMAIL_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst moveAccount = ({ credentials, password, targetAccount }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('target_account', targetAccount)\n\n return fetch(MOVE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst addAlias = ({ credentials, alias }) => {\n return promisedRequest({\n url: ALIASES_URL,\n method: 'PUT',\n credentials,\n payload: { alias }\n })\n}\n\nconst deleteAlias = ({ credentials, alias }) => {\n return promisedRequest({\n url: ALIASES_URL,\n method: 'DELETE',\n credentials,\n payload: { alias }\n })\n}\n\nconst listAliases = ({ credentials }) => {\n return promisedRequest({\n url: ALIASES_URL,\n method: 'GET',\n credentials,\n params: {\n _cacheBooster: (new Date()).getTime()\n }\n })\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('new_password', newPassword)\n form.append('new_password_confirmation', newPasswordConfirmation)\n\n return fetch(CHANGE_PASSWORD_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n return fetch(MFA_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(MFA_DISABLE_OTP_URL, {\n body: form,\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('code', token)\n\n return fetch(MFA_CONFIRM_OTP_URL, {\n body: form,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n return fetch(MFA_SETUP_OTP_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n return fetch(MFA_BACKUP_CODES_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_MUTES_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, expiresIn, credentials }) => {\n const payload = {}\n if (expiresIn) {\n payload.expires_in = expiresIn\n }\n return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST', payload })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_BLOCKS_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst addBackup = ({ credentials }) => {\n return promisedRequest({\n url: PLEROMA_BACKUP_URL,\n method: 'POST',\n credentials\n })\n}\n\nconst listBackups = ({ credentials }) => {\n return promisedRequest({\n url: PLEROMA_BACKUP_URL,\n method: 'GET',\n credentials,\n params: {\n _cacheBooster: (new Date()).getTime()\n }\n })\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n const url = '/api/oauth_tokens.json'\n\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => {\n if (data.ok) {\n return data.json()\n }\n throw new Error('Error fetching auth tokens', data)\n })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n const url = `/api/oauth_tokens/${id}`\n\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst suggestions = ({ credentials }) => {\n return fetch(SUGGESTIONS_URL, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n const body = new FormData()\n\n if (single) {\n body.append('id', id)\n } else {\n body.append('max_id', id)\n }\n\n return fetch(NOTIFICATION_READ_URL, {\n body,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n const form = new FormData()\n form.append('choices', choices)\n\n return promisedRequest({\n url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n method: 'POST',\n credentials,\n payload: {\n choices\n }\n })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n return promisedRequest(\n {\n url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n method: 'GET',\n credentials\n }\n )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n .then((reactions) => reactions.map(r => {\n r.accounts = r.accounts.map(parseUser)\n return r\n }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n method: 'PUT',\n credentials\n }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n method: 'DELETE',\n credentials\n }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n return promisedRequest({\n url: MASTODON_REPORT_USER_URL,\n method: 'POST',\n payload: {\n account_id: userId,\n status_ids: statusIds,\n comment,\n forward\n },\n credentials\n })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n return promisedRequest({\n url: MASTODON_USER_SEARCH_URL,\n params: {\n q: query,\n resolve: true\n },\n credentials\n })\n .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following, type }) => {\n let url = MASTODON_SEARCH_2\n const params = []\n\n if (q) {\n params.push(['q', encodeURIComponent(q)])\n }\n\n if (resolve) {\n params.push(['resolve', resolve])\n }\n\n if (limit) {\n params.push(['limit', limit])\n }\n\n if (offset) {\n params.push(['offset', offset])\n }\n\n if (following) {\n params.push(['following', true])\n }\n\n if (type) {\n params.push(['following', type])\n }\n\n params.push(['with_relationships', true])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching search result', data)\n })\n .then((data) => { return data.json() })\n .then((data) => {\n data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n return data\n })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'POST',\n payload: { domain },\n credentials\n })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'DELETE',\n payload: { domain },\n credentials\n })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n return promisedRequest({\n url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n method: 'POST',\n payload: { id },\n credentials\n })\n}\n\nconst adminFetchAnnouncements = ({ credentials }) => {\n return promisedRequest({ url: PLEROMA_ANNOUNCEMENTS_URL, credentials })\n}\n\nconst fetchAnnouncements = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_ANNOUNCEMENTS_URL, credentials })\n}\n\nconst dismissAnnouncement = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_ANNOUNCEMENTS_DISMISS_URL(id),\n credentials,\n method: 'POST'\n })\n}\n\nconst announcementToPayload = ({ content, startsAt, endsAt, allDay }) => {\n const payload = { content }\n\n if (typeof startsAt !== 'undefined') {\n payload.starts_at = startsAt ? new Date(startsAt).toISOString() : null\n }\n\n if (typeof endsAt !== 'undefined') {\n payload.ends_at = endsAt ? new Date(endsAt).toISOString() : null\n }\n\n if (typeof allDay !== 'undefined') {\n payload.all_day = allDay\n }\n\n return payload\n}\n\nconst postAnnouncement = ({ credentials, content, startsAt, endsAt, allDay }) => {\n return promisedRequest({\n url: PLEROMA_POST_ANNOUNCEMENT_URL,\n credentials,\n method: 'POST',\n payload: announcementToPayload({ content, startsAt, endsAt, allDay })\n })\n}\n\nconst editAnnouncement = ({ id, credentials, content, startsAt, endsAt, allDay }) => {\n return promisedRequest({\n url: PLEROMA_EDIT_ANNOUNCEMENT_URL(id),\n credentials,\n method: 'PATCH',\n payload: announcementToPayload({ content, startsAt, endsAt, allDay })\n })\n}\n\nconst deleteAnnouncement = ({ id, credentials }) => {\n return promisedRequest({\n url: PLEROMA_DELETE_ANNOUNCEMENT_URL(id),\n credentials,\n method: 'DELETE'\n })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n return Object.entries({\n ...(credentials\n ? { access_token: credentials }\n : {}\n ),\n stream,\n ...args\n }).reduce((acc, [key, val]) => {\n return acc + `${key}=${val}&`\n }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n 'update',\n 'notification',\n 'delete',\n 'filters_changed',\n 'status.update'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n 'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n url,\n preprocessor = handleMastoWS,\n id = 'Unknown'\n}) => {\n const eventTarget = new EventTarget()\n const socket = new WebSocket(url)\n if (!socket) throw new Error(`Failed to create socket ${id}`)\n const proxy = (original, eventName, processor = a => a) => {\n original.addEventListener(eventName, (eventData) => {\n eventTarget.dispatchEvent(new CustomEvent(\n eventName,\n { detail: processor(eventData) }\n ))\n })\n }\n socket.addEventListener('open', (wsEvent) => {\n console.debug(`[WS][${id}] Socket connected`, wsEvent)\n })\n socket.addEventListener('error', (wsEvent) => {\n console.debug(`[WS][${id}] Socket errored`, wsEvent)\n })\n socket.addEventListener('close', (wsEvent) => {\n console.debug(\n `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n wsEvent\n )\n })\n // Commented code reason: very spammy, uncomment to enable message debug logging\n /*\n socket.addEventListener('message', (wsEvent) => {\n console.debug(\n `[WS][${id}] Message received`,\n wsEvent\n )\n })\n /**/\n\n proxy(socket, 'open')\n proxy(socket, 'close')\n proxy(socket, 'message', preprocessor)\n proxy(socket, 'error')\n\n // 1000 = Normal Closure\n eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n eventTarget.getState = () => socket.readyState\n\n return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n const { data } = wsEvent\n if (!data) return\n const parsedEvent = JSON.parse(data)\n const { event, payload } = parsedEvent\n if (MASTODON_STREAMING_EVENTS.has(event) || PLEROMA_STREAMING_EVENTS.has(event)) {\n // MastoBE and PleromaBE both send payload for delete as a PLAIN string\n if (event === 'delete') {\n return { event, id: payload }\n }\n const data = payload ? JSON.parse(payload) : null\n if (event === 'update') {\n return { event, status: parseStatus(data) }\n } else if (event === 'status.update') {\n return { event, status: parseStatus(data) }\n } else if (event === 'notification') {\n return { event, notification: parseNotification(data) }\n } else if (event === 'pleroma:chat_update') {\n return { event, chatUpdate: parseChat(data) }\n }\n } else {\n console.warn('Unknown event', wsEvent)\n return null\n }\n}\n\nexport const WSConnectionStatus = Object.freeze({\n JOINED: 1,\n CLOSED: 2,\n ERROR: 3,\n DISABLED: 4,\n STARTING: 5,\n STARTING_INITIAL: 6\n})\n\nconst chats = ({ credentials }) => {\n return fetch(PLEROMA_CHATS_URL, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => {\n return { chats: data.map(parseChat).filter(c => c) }\n })\n}\n\nconst getOrCreateChat = ({ accountId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_URL(accountId),\n method: 'POST',\n credentials\n })\n}\n\nconst chatMessages = ({ id, credentials, maxId, sinceId, limit = 20 }) => {\n let url = PLEROMA_CHAT_MESSAGES_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n\n return promisedRequest({\n url,\n method: 'GET',\n credentials\n })\n}\n\nconst sendChatMessage = ({ id, content, mediaId = null, idempotencyKey, credentials }) => {\n const payload = {\n content\n }\n\n if (mediaId) {\n payload.media_id = mediaId\n }\n\n const headers = {}\n\n if (idempotencyKey) {\n headers['idempotency-key'] = idempotencyKey\n }\n\n return promisedRequest({\n url: PLEROMA_CHAT_MESSAGES_URL(id),\n method: 'POST',\n payload,\n credentials,\n headers\n })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_READ_URL(id),\n method: 'POST',\n payload: {\n last_read_id: lastReadId\n },\n credentials\n })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n method: 'DELETE',\n credentials\n })\n}\n\nconst setReportState = ({ id, state, credentials }) => {\n // TODO: Can't use promisedRequest because on OK this does not return json\n // See https://git.pleroma.social/pleroma/pleroma-fe/-/merge_requests/1322\n return fetch(PLEROMA_ADMIN_REPORTS, {\n headers: {\n ...authHeaders(credentials),\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n method: 'PATCH',\n body: JSON.stringify({\n reports: [{\n id,\n state\n }]\n })\n })\n .then(data => {\n if (data.status >= 500) {\n throw Error(data.statusText)\n } else if (data.status >= 400) {\n return data.json()\n }\n return data\n })\n .then(data => {\n if (data.errors) {\n throw Error(data.errors[0].message)\n }\n })\n}\n\nconst apiService = {\n verifyCredentials,\n fetchTimeline,\n fetchPinnedStatuses,\n fetchConversation,\n fetchStatus,\n fetchStatusSource,\n fetchStatusHistory,\n fetchFriends,\n exportFriends,\n fetchFollowers,\n followUser,\n unfollowUser,\n pinOwnStatus,\n unpinOwnStatus,\n muteConversation,\n unmuteConversation,\n blockUser,\n unblockUser,\n removeUserFromFollowers,\n editUserNote,\n fetchUser,\n fetchUserByName,\n fetchUserRelationship,\n favorite,\n unfavorite,\n retweet,\n unretweet,\n bookmarkStatus,\n unbookmarkStatus,\n postStatus,\n editStatus,\n deleteStatus,\n uploadMedia,\n setMediaDescription,\n fetchMutes,\n muteUser,\n unmuteUser,\n subscribeUser,\n unsubscribeUser,\n fetchBlocks,\n fetchOAuthTokens,\n revokeOAuthToken,\n tagUser,\n untagUser,\n deleteUser,\n addRight,\n deleteRight,\n activateUser,\n deactivateUser,\n register,\n getCaptcha,\n updateProfileImages,\n updateProfile,\n importMutes,\n importBlocks,\n importFollows,\n deleteAccount,\n changeEmail,\n moveAccount,\n addAlias,\n deleteAlias,\n listAliases,\n changePassword,\n settingsMFA,\n mfaDisableOTP,\n generateMfaBackupCodes,\n mfaSetupOTP,\n mfaConfirmOTP,\n addBackup,\n listBackups,\n fetchFollowRequests,\n fetchLists,\n createList,\n getList,\n updateList,\n getListAccounts,\n addAccountsToList,\n removeAccountsFromList,\n deleteList,\n approveUser,\n denyUser,\n suggestions,\n markNotificationsAsSeen,\n dismissNotification,\n vote,\n fetchPoll,\n fetchFavoritedByUsers,\n fetchRebloggedByUsers,\n fetchEmojiReactions,\n reactWithEmoji,\n unreactWithEmoji,\n reportUser,\n updateNotificationSettings,\n search2,\n searchUsers,\n fetchKnownDomains,\n fetchDomainMutes,\n muteDomain,\n unmuteDomain,\n chats,\n getOrCreateChat,\n chatMessages,\n sendChatMessage,\n readChat,\n deleteChatMessage,\n setReportState,\n fetchUserInLists,\n fetchAnnouncements,\n dismissAnnouncement,\n postAnnouncement,\n editAnnouncement,\n deleteAnnouncement,\n adminFetchAnnouncements\n}\n\nexport default apiService\n","import { kebabCase } from 'lodash'\n\nconst propsToNative = props => Object.keys(props).reduce((acc, cur) => {\n acc[kebabCase(cur)] = props[cur]\n return acc\n}, {})\n\nexport { propsToNative }\n","import { invertLightness, contrastRatio } from 'chromatism'\n\n// useful for visualizing color when debugging\nexport const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color)\n\n/**\n * Convert r, g, b values into hex notation. All components are [0-255]\n *\n * @param {Number|String|Object} r - Either red component, {r,g,b} object, or hex string\n * @param {Number} [g] - Green component\n * @param {Number} [b] - Blue component\n */\nexport const rgb2hex = (r, g, b) => {\n if (r === null || typeof r === 'undefined') {\n return undefined\n }\n // TODO: clean up this mess\n if (r[0] === '#' || r === 'transparent') {\n return r\n }\n if (typeof r === 'object') {\n ({ r, g, b } = r)\n }\n [r, g, b] = [r, g, b].map(val => {\n val = Math.ceil(val)\n val = val < 0 ? 0 : val\n val = val > 255 ? 255 : val\n return val\n })\n return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`\n}\n\n/**\n * Converts 8-bit RGB component into linear component\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n * https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n *\n * @param {Number} bit - color component [0..255]\n * @returns {Number} linear component [0..1]\n */\nconst c2linear = (bit) => {\n // W3C gives 0.03928 while wikipedia states 0.04045\n // what those magical numbers mean - I don't know.\n // something about gamma-correction, i suppose.\n // Sticking with W3C example.\n const c = bit / 255\n if (c < 0.03928) {\n return c / 12.92\n } else {\n return Math.pow((c + 0.055) / 1.055, 2.4)\n }\n}\n\n/**\n * Converts sRGB into linear RGB\n * @param {Object} srgb - sRGB color\n * @returns {Object} linear rgb color\n */\nconst srgbToLinear = (srgb) => {\n return 'rgb'.split('').reduce((acc, c) => { acc[c] = c2linear(srgb[c]); return acc }, {})\n}\n\n/**\n * Calculates relative luminance for given color\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n *\n * @param {Object} srgb - sRGB color\n * @returns {Number} relative luminance\n */\nexport const relativeLuminance = (srgb) => {\n const { r, g, b } = srgbToLinear(srgb)\n return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/**\n * Generates color ratio between two colors. Order is unimporant\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n *\n * @param {Object} a - sRGB color\n * @param {Object} b - sRGB color\n * @returns {Number} color ratio\n */\nexport const getContrastRatio = (a, b) => {\n const la = relativeLuminance(a)\n const lb = relativeLuminance(b)\n const [l1, l2] = la > lb ? [la, lb] : [lb, la]\n\n return (l1 + 0.05) / (l2 + 0.05)\n}\n\n/**\n * Same as `getContrastRatio` but for multiple layers in-between\n *\n * @param {Object} text - text color (topmost layer)\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n * @param {Object} bedrock - layer at the very bottom\n */\nexport const getContrastRatioLayers = (text, layers, bedrock) => {\n return getContrastRatio(alphaBlendLayers(bedrock, layers), text)\n}\n\n/**\n * This performs alpha blending between solid background and semi-transparent foreground\n *\n * @param {Object} fg - top layer color\n * @param {Number} fga - top layer's alpha\n * @param {Object} bg - bottom layer color\n * @returns {Object} sRGB of resulting color\n */\nexport const alphaBlend = (fg, fga, bg) => {\n if (fga === 1 || typeof fga === 'undefined') return fg\n return 'rgb'.split('').reduce((acc, c) => {\n // Simplified https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending\n // for opaque bg and transparent fg\n acc[c] = (fg[c] * fga + bg[c] * (1 - fga))\n return acc\n }, {})\n}\n\n/**\n * Same as `alphaBlend` but for multiple layers in-between\n *\n * @param {Object} bedrock - layer at the very bottom\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n */\nexport const alphaBlendLayers = (bedrock, layers) => layers.reduce((acc, [color, opacity]) => {\n return alphaBlend(color, opacity, acc)\n}, bedrock)\n\nexport const invert = (rgb) => {\n return 'rgb'.split('').reduce((acc, c) => {\n acc[c] = 255 - rgb[c]\n return acc\n }, {})\n}\n\n/**\n * Converts #rrggbb hex notation into an {r, g, b} object\n *\n * @param {String} hex - #rrggbb string\n * @returns {Object} rgb representation of the color, values are 0-255\n */\nexport const hex2rgb = (hex) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n }\n : null\n}\n\n/**\n * Old somewhat weird function for mixing two colors together\n *\n * @param {Object} a - one color (rgb)\n * @param {Object} b - other color (rgb)\n * @returns {Object} result\n */\nexport const mixrgb = (a, b) => {\n return 'rgb'.split('').reduce((acc, k) => {\n acc[k] = (a[k] + b[k]) / 2\n return acc\n }, {})\n}\n/**\n * Converts rgb object into a CSS rgba() color\n *\n * @param {Object} color - rgb\n * @returns {String} CSS rgba() color\n */\nexport const rgba2css = function (rgba) {\n return `rgba(${Math.floor(rgba.r)}, ${Math.floor(rgba.g)}, ${Math.floor(rgba.b)}, ${rgba.a})`\n}\n\n/**\n * Get text color for given background color and intended text color\n * This checks if text and background don't have enough color and inverts\n * text color's lightness if needed. If text color is still not enough it\n * will fall back to black or white\n *\n * @param {Object} bg - background color\n * @param {Object} text - intended text color\n * @param {Boolean} preserve - try to preserve intended text color's hue/saturation (i.e. no BW)\n */\nexport const getTextColor = function (bg, text, preserve) {\n const contrast = getContrastRatio(bg, text)\n\n if (contrast < 4.5) {\n const base = typeof text.a !== 'undefined' ? { a: text.a } : {}\n const result = Object.assign(base, invertLightness(text).rgb)\n if (!preserve && getContrastRatio(bg, result) < 4.5) {\n // B&W\n return contrastRatio(bg, text).rgb\n }\n // Inverted color\n return result\n }\n return text\n}\n\n/**\n * Converts color to CSS Color value\n *\n * @param {Object|String} input - color\n * @param {Number} [a] - alpha value\n * @returns {String} a CSS Color value\n */\nexport const getCssColor = (input, a) => {\n let rgb = {}\n if (typeof input === 'object') {\n rgb = input\n } else if (typeof input === 'string') {\n if (input.startsWith('#')) {\n rgb = hex2rgb(input)\n } else {\n return input\n }\n }\n return rgba2css({ ...rgb, a })\n}\n","import isFunction from 'lodash/isFunction'\n\nconst getComponentOptions = (Component) => (isFunction(Component)) ? Component.options : Component\n\nconst getComponentProps = (Component) => getComponentOptions(Component).props\n\nexport {\n getComponentOptions,\n getComponentProps\n}\n","export const SECOND = 1000\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\nexport const WEEK = 7 * DAY\nexport const MONTH = 30 * DAY\nexport const YEAR = 365.25 * DAY\n\nexport const relativeTime = (date, nowThreshold = 1) => {\n if (typeof date === 'string') date = Date.parse(date)\n const round = Date.now() > date ? Math.floor : Math.ceil\n const d = Math.abs(Date.now() - date)\n const r = { num: round(d / YEAR), key: 'time.unit.years' }\n if (d < nowThreshold * SECOND) {\n r.num = 0\n r.key = 'time.now'\n } else if (d < MINUTE) {\n r.num = round(d / SECOND)\n r.key = 'time.unit.seconds'\n } else if (d < HOUR) {\n r.num = round(d / MINUTE)\n r.key = 'time.unit.minutes'\n } else if (d < DAY) {\n r.num = round(d / HOUR)\n r.key = 'time.unit.hours'\n } else if (d < WEEK) {\n r.num = round(d / DAY)\n r.key = 'time.unit.days'\n } else if (d < MONTH) {\n r.num = round(d / WEEK)\n r.key = 'time.unit.weeks'\n } else if (d < YEAR) {\n r.num = round(d / MONTH)\n r.key = 'time.unit.months'\n }\n return r\n}\n\nexport const relativeTimeShort = (date, nowThreshold = 1) => {\n const r = relativeTime(date, nowThreshold)\n r.key += '_short'\n return r\n}\n\nexport const unitToSeconds = (unit, amount) => {\n switch (unit) {\n case 'minutes': return 0.001 * amount * MINUTE\n case 'hours': return 0.001 * amount * HOUR\n case 'days': return 0.001 * amount * DAY\n }\n}\n\nexport const secondsToUnit = (unit, amount) => {\n switch (unit) {\n case 'minutes': return (1000 * amount) / MINUTE\n case 'hours': return (1000 * amount) / HOUR\n case 'days': return (1000 * amount) / DAY\n }\n}\n","export const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n if (!('Notification' in window && window.Notification.permission === 'granted')) return\n if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n // Chrome is known for not closing notifications automatically\n // according to MDN, anyway.\n setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n if (status.is_post_verb) {\n return 'status'\n }\n\n if (status.retweeted_status) {\n return 'retweet'\n }\n\n if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n (typeof status.text === 'string' && status.text.match(/favorited/))) {\n return 'favorite'\n }\n\n if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n return 'deletion'\n }\n\n if (status.text.match(/started following/) || status.activity_type === 'follow') {\n return 'follow'\n }\n\n return 'unknown'\n}\n\nexport const parseUser = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'acct')\n // case for users in \"mentions\" property for statuses in MastoAPI\n const mastoShort = masto && !Object.prototype.hasOwnProperty.call(data, 'avatar')\n\n output.inLists = null\n output.id = String(data.id)\n output._original = data // used for server-side settings\n\n if (masto) {\n output.screen_name = data.acct\n output.fqn = data.fqn\n output.statusnet_profile_url = data.url\n\n // There's nothing else to get\n if (mastoShort) {\n return output\n }\n\n output.emoji = data.emojis\n output.name = escape(data.display_name)\n output.name_html = output.name\n output.name_unescaped = data.display_name\n\n output.description = data.note\n // TODO cleanup this shit, output.description is overriden with source data\n output.description_html = data.note\n\n output.fields = data.fields\n output.fields_html = data.fields.map(field => {\n return {\n name: escape(field.name),\n value: field.value\n }\n })\n output.fields_text = data.fields.map(field => {\n return {\n name: unescape(field.name.replace(/<[^>]*>/g, '')),\n value: unescape(field.value.replace(/<[^>]*>/g, ''))\n }\n })\n\n // Utilize avatar_static for gif avatars?\n output.profile_image_url = data.avatar\n output.profile_image_url_original = data.avatar\n\n // Same, utilize header_static?\n output.cover_photo = data.header\n\n output.friends_count = data.following_count\n\n output.bot = data.bot\n\n if (data.pleroma) {\n if (data.pleroma.settings_store) {\n output.storage = data.pleroma.settings_store['pleroma-fe']\n }\n const relationship = data.pleroma.relationship\n\n output.background_image = data.pleroma.background_image\n output.favicon = data.pleroma.favicon\n output.token = data.pleroma.chat_token\n\n if (relationship) {\n output.relationship = relationship\n }\n\n output.allow_following_move = data.pleroma.allow_following_move\n\n output.hide_follows = data.pleroma.hide_follows\n output.hide_followers = data.pleroma.hide_followers\n output.hide_follows_count = data.pleroma.hide_follows_count\n output.hide_followers_count = data.pleroma.hide_followers_count\n\n output.rights = {\n moderator: data.pleroma.is_moderator,\n admin: data.pleroma.is_admin\n }\n // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n if (output.rights.admin) {\n output.role = 'admin'\n } else if (output.rights.moderator) {\n output.role = 'moderator'\n } else {\n output.role = 'member'\n }\n\n output.birthday = data.pleroma.birthday\n\n if (data.pleroma.privileges) {\n output.privileges = data.pleroma.privileges\n } else if (data.pleroma.is_admin) {\n output.privileges = [\n 'users_read',\n 'users_manage_invites',\n 'users_manage_activation_state',\n 'users_manage_tags',\n 'users_manage_credentials',\n 'users_delete',\n 'messages_read',\n 'messages_delete',\n 'instances_delete',\n 'reports_manage_reports',\n 'moderation_log_read',\n 'announcements_manage_announcements',\n 'emoji_manage_emoji',\n 'statistics_read'\n ]\n } else if (data.pleroma.is_moderator) {\n output.privileges = [\n 'messages_delete',\n 'reports_manage_reports'\n ]\n } else {\n output.privileges = []\n }\n }\n\n if (data.source) {\n output.description = data.source.note\n output.default_scope = data.source.privacy\n output.fields = data.source.fields\n if (data.source.pleroma) {\n output.no_rich_text = data.source.pleroma.no_rich_text\n output.show_role = data.source.pleroma.show_role\n output.discoverable = data.source.pleroma.discoverable\n output.show_birthday = data.pleroma.show_birthday\n }\n }\n\n // TODO: handle is_local\n output.is_local = !output.screen_name.includes('@')\n } else {\n output.screen_name = data.screen_name\n\n output.name = data.name\n output.name_html = data.name_html\n\n output.description = data.description\n output.description_html = data.description_html\n\n output.profile_image_url = data.profile_image_url\n output.profile_image_url_original = data.profile_image_url_original\n\n output.cover_photo = data.cover_photo\n\n output.friends_count = data.friends_count\n\n // output.bot = ??? missing\n\n output.statusnet_profile_url = data.statusnet_profile_url\n\n output.is_local = data.is_local\n output.role = data.role\n output.show_role = data.show_role\n\n if (data.rights) {\n output.rights = {\n moderator: data.rights.delete_others_notice,\n admin: data.rights.admin\n }\n }\n output.no_rich_text = data.no_rich_text\n output.default_scope = data.default_scope\n output.hide_follows = data.hide_follows\n output.hide_followers = data.hide_followers\n output.hide_follows_count = data.hide_follows_count\n output.hide_followers_count = data.hide_followers_count\n output.background_image = data.background_image\n // Websocket token\n output.token = data.token\n\n // Convert relationsip data to expected format\n output.relationship = {\n muting: data.muted,\n blocking: data.statusnet_blocking,\n followed_by: data.follows_you,\n following: data.following\n }\n }\n\n output.created_at = new Date(data.created_at)\n output.locked = data.locked\n output.followers_count = data.followers_count\n output.statuses_count = data.statuses_count\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n\n // deactivated was changed to is_active in Pleroma 2.3.0\n // so check if is_active is present\n output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n ? !data.pleroma.is_active // new backend\n : data.pleroma.deactivated // old backend\n\n output.notification_settings = data.pleroma.notification_settings\n output.unread_chat_count = data.pleroma.unread_chat_count\n }\n\n output.tags = output.tags || []\n output.rights = output.rights || {}\n output.notification_settings = output.notification_settings || {}\n\n // Convert punycode to unicode for UI\n output.screen_name_ui = output.screen_name\n if (output.screen_name && output.screen_name.includes('@')) {\n const parts = output.screen_name.split('@')\n const unicodeDomain = punycode.toUnicode(parts[1])\n if (unicodeDomain !== parts[1]) {\n // Add some identifier so users can potentially spot spoofing attempts:\n // lain.com and xn--lin-6cd.com would appear identical otherwise.\n output.screen_name_ui_contains_non_ascii = true\n output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n } else {\n output.screen_name_ui_contains_non_ascii = false\n }\n }\n\n return output\n}\n\nexport const parseAttachment = (data) => {\n const output = {}\n const masto = !Object.prototype.hasOwnProperty.call(data, 'oembed')\n\n if (masto) {\n // Not exactly same...\n output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n output.meta = data.meta // not present in BE yet\n output.id = data.id\n } else {\n output.mimetype = data.mimetype\n // output.meta = ??? missing\n }\n\n output.url = data.url\n output.large_thumb_url = data.preview_url\n output.description = data.description\n\n return output\n}\n\nexport const parseSource = (data) => {\n const output = {}\n\n output.text = data.text\n output.spoiler_text = data.spoiler_text\n output.content_type = data.content_type\n\n return output\n}\n\nexport const parseStatus = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'account')\n\n if (masto) {\n output.favorited = data.favourited\n output.fave_num = data.favourites_count\n\n output.repeated = data.reblogged\n output.repeat_num = data.reblogs_count\n\n output.bookmarked = data.bookmarked\n\n output.type = data.reblog ? 'retweet' : 'status'\n output.nsfw = data.sensitive\n\n output.raw_html = data.content\n output.emojis = data.emojis\n\n output.tags = data.tags\n\n output.edited_at = data.edited_at\n\n if (data.pleroma) {\n const { pleroma } = data\n output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n output.statusnet_conversation_id = data.pleroma.conversation_id\n output.is_local = pleroma.local\n output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n output.thread_muted = pleroma.thread_muted\n output.emoji_reactions = pleroma.emoji_reactions\n output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n } else {\n output.text = data.content\n output.summary = data.spoiler_text\n }\n\n output.in_reply_to_status_id = data.in_reply_to_id\n output.in_reply_to_user_id = data.in_reply_to_account_id\n output.replies_count = data.replies_count\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.reblog)\n }\n\n output.summary_raw_html = escape(data.spoiler_text)\n output.external_url = data.url\n output.poll = data.poll\n if (output.poll) {\n output.poll.options = (output.poll.options || []).map(field => ({\n ...field,\n title_html: escape(field.title)\n }))\n }\n output.pinned = data.pinned\n output.muted = data.muted\n } else {\n output.favorited = data.favorited\n output.fave_num = data.fave_num\n\n output.repeated = data.repeated\n output.repeat_num = data.repeat_num\n\n // catchall, temporary\n // Object.assign(output, data)\n\n output.type = qvitterStatusType(data)\n\n if (data.nsfw === undefined) {\n output.nsfw = isNsfw(data)\n if (data.retweeted_status) {\n output.nsfw = data.retweeted_status.nsfw\n }\n } else {\n output.nsfw = data.nsfw\n }\n\n output.raw_html = data.statusnet_html\n output.text = data.text\n\n output.in_reply_to_status_id = data.in_reply_to_status_id\n output.in_reply_to_user_id = data.in_reply_to_user_id\n output.in_reply_to_screen_name = data.in_reply_to_screen_name\n output.statusnet_conversation_id = data.statusnet_conversation_id\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.retweeted_status)\n }\n\n output.summary = data.summary\n output.summary_html = data.summary_html\n output.external_url = data.external_url\n output.is_local = data.is_local\n }\n\n output.id = String(data.id)\n output.visibility = data.visibility\n output.card = data.card\n output.created_at = new Date(data.created_at)\n\n // Converting to string, the right way.\n output.in_reply_to_status_id = output.in_reply_to_status_id\n ? String(output.in_reply_to_status_id)\n : null\n output.in_reply_to_user_id = output.in_reply_to_user_id\n ? String(output.in_reply_to_user_id)\n : null\n\n output.user = parseUser(masto ? data.account : data.user)\n\n output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)\n\n output.attachments = ((masto ? data.media_attachments : data.attachments) || [])\n .map(parseAttachment)\n\n const retweetedStatus = masto ? data.reblog : data.retweeted_status\n if (retweetedStatus) {\n output.retweeted_status = parseStatus(retweetedStatus)\n }\n\n output.favoritedBy = []\n output.rebloggedBy = []\n\n if (Object.prototype.hasOwnProperty.call(data, 'originalStatus')) {\n Object.assign(output, data.originalStatus)\n }\n\n return output\n}\n\nexport const parseNotification = (data) => {\n const mastoDict = {\n favourite: 'like',\n reblog: 'repeat'\n }\n const masto = !Object.prototype.hasOwnProperty.call(data, 'ntype')\n const output = {}\n\n if (masto) {\n output.type = mastoDict[data.type] || data.type\n output.seen = data.pleroma.is_seen\n output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n output.action = output.status // TODO: Refactor, this is unneeded\n output.target = output.type !== 'move'\n ? null\n : parseUser(data.target)\n output.from_profile = parseUser(data.account)\n output.emoji = data.emoji\n if (data.report) {\n output.report = data.report\n output.report.content = data.report.content\n output.report.acct = parseUser(data.report.account)\n output.report.actor = parseUser(data.report.actor)\n output.report.statuses = data.report.statuses.map(parseStatus)\n }\n } else {\n const parsedNotice = parseStatus(data.notice)\n output.type = data.ntype\n output.seen = Boolean(data.is_seen)\n output.status = output.type === 'like'\n ? parseStatus(data.notice.favorited_status)\n : parsedNotice\n output.action = parsedNotice\n output.from_profile = output.type === 'pleroma:chat_mention' ? parseUser(data.account) : parseUser(data.from_profile)\n }\n\n output.created_at = new Date(data.created_at)\n output.id = parseInt(data.id)\n\n return output\n}\n\nconst isNsfw = (status) => {\n const nsfwRegex = /#nsfw/i\n return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)\n}\n\nexport const parseLinkHeaderPagination = (linkHeader, opts = {}) => {\n const flakeId = opts.flakeId\n const parsedLinkHeader = parseLinkHeader(linkHeader)\n if (!parsedLinkHeader) return\n const maxId = parsedLinkHeader.next.max_id\n const minId = parsedLinkHeader.prev.min_id\n\n return {\n maxId: flakeId ? maxId : parseInt(maxId, 10),\n minId: flakeId ? minId : parseInt(minId, 10)\n }\n}\n\nexport const parseChat = (chat) => {\n const output = {}\n output.id = chat.id\n output.account = parseUser(chat.account)\n output.unread = chat.unread\n output.lastMessage = parseChatMessage(chat.last_message)\n output.updated_at = new Date(chat.updated_at)\n return output\n}\n\nexport const parseChatMessage = (message) => {\n if (!message) { return }\n if (message.isNormalized) { return message }\n const output = message\n output.id = message.id\n output.created_at = new Date(message.created_at)\n output.chat_id = message.chat_id\n output.emojis = message.emojis\n output.content = message.content\n if (message.attachment) {\n output.attachments = [parseAttachment(message.attachment)]\n } else {\n output.attachments = []\n }\n output.pending = !!message.pending\n output.error = false\n output.idempotency_key = message.idempotency_key\n output.isNormalized = true\n return output\n}\n","const createFaviconService = () => {\n const favicons = []\n const faviconWidth = 128\n const faviconHeight = 128\n const badgeRadius = 32\n\n const initFaviconService = () => {\n const nodes = document.querySelectorAll('link[rel=\"icon\"]')\n nodes.forEach(favicon => {\n if (favicon) {\n const favcanvas = document.createElement('canvas')\n favcanvas.width = faviconWidth\n favcanvas.height = faviconHeight\n const favimg = new Image()\n favimg.crossOrigin = 'anonymous'\n favimg.src = favicon.href\n const favcontext = favcanvas.getContext('2d')\n favicons.push({ favcanvas, favimg, favcontext, favicon })\n }\n })\n }\n\n const isImageLoaded = (img) => img.complete && img.naturalHeight !== 0\n\n const clearFaviconBadge = () => {\n if (favicons.length === 0) return\n favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n if (!favimg || !favcontext || !favicon) return\n\n favcontext.clearRect(0, 0, faviconWidth, faviconHeight)\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favicon.href = favcanvas.toDataURL('image/png')\n })\n }\n\n const drawFaviconBadge = () => {\n if (favicons.length === 0) return\n clearFaviconBadge()\n favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n if (!favimg || !favcontext || !favcontext) return\n\n const style = getComputedStyle(document.body)\n const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}`\n\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favcontext.fillStyle = badgeColor\n favcontext.beginPath()\n favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false)\n favcontext.fill()\n favicon.href = favcanvas.toDataURL('image/png')\n })\n }\n\n return {\n initFaviconService,\n clearFaviconBadge,\n drawFaviconBadge\n }\n}\n\nconst FaviconService = createFaviconService()\n\nexport default FaviconService\n","const fileSizeFormat = (numArg) => {\n const units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n let num = numArg\n if (num < 1) {\n return num + ' ' + units[0]\n }\n\n const exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n const unit = units[exponent]\n return { num, unit }\n}\nconst fileSizeFormatService = {\n fileSizeFormat\n}\nexport default fileSizeFormatService\n","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n if (mimetype.match(/flash/)) {\n return 'flash'\n }\n\n if (mimetype.match(/text\\/html/)) {\n return 'html'\n }\n\n if (mimetype.match(/image/)) {\n return 'image'\n }\n\n if (mimetype.match(/video/)) {\n return 'video'\n }\n\n if (mimetype.match(/audio/)) {\n return 'audio'\n }\n\n return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n fileType,\n fileMatchesSomeType\n}\n\nexport default fileTypeService\n","import languagesObject from '../../i18n/messages'\nimport ISO6391 from 'iso-639-1'\nimport _ from 'lodash'\n\nconst specialLanguageCodes = {\n ja_easy: 'ja',\n zh_Hant: 'zh-HANT',\n zh: 'zh-Hans'\n}\n\nconst internalToBrowserLocale = code => specialLanguageCodes[code] || code\n\nconst internalToBackendLocale = code => internalToBrowserLocale(code).replace('_', '-')\nconst internalToBackendLocaleMulti = codes => {\n const langs = Array.isArray(codes) ? codes : [codes]\n return langs.map(internalToBackendLocale).join(',')\n}\n\nconst getLanguageName = (code) => {\n const specialLanguageNames = {\n ja_easy: 'やさしいにほんご',\n zh: '简体中文',\n zh_Hant: '繁體中文'\n }\n const languageName = specialLanguageNames[code] || ISO6391.getNativeName(code)\n const browserLocale = internalToBrowserLocale(code)\n return languageName.charAt(0).toLocaleUpperCase(browserLocale) + languageName.slice(1)\n}\n\nconst languages = _.map(languagesObject.languages, (code) => ({ code, name: getLanguageName(code) })).sort((a, b) => a.name.localeCompare(b.name))\n\nconst localeService = {\n internalToBrowserLocale,\n internalToBackendLocale,\n internalToBackendLocaleMulti,\n languages,\n getLanguageName\n}\n\nexport default localeService\n","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n const rootState = store.rootState || store.state\n\n return ([\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.followRequest && 'follow_request',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n rootState.config.notificationVisibility.reports && 'pleroma:report',\n rootState.config.notificationVisibility.polls && 'poll'\n ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n if (isStatusNotification(notification.type) && !notification.status) {\n return false\n }\n return true\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst isMutedNotification = (store, notification) => {\n if (!notification.status) return\n return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n\n if (notification.seen) return\n if (!visibleTypes(store).includes(notification.type)) return\n if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n case 'pleroma:report':\n i18nString = 'submitted_report'\n break\n case 'poll':\n i18nString = 'poll_ended'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\n// For using include_types when fetching notifications.\n// Note: chat_mention excluded as pleroma-fe polls them separately\nconst mastoApiNotificationTypes = [\n 'mention',\n 'favourite',\n 'reblog',\n 'follow',\n 'move',\n 'pleroma:emoji_reaction',\n 'pleroma:report'\n]\n\nconst update = ({ store, notifications, older }) => {\n store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false, since }) => {\n const args = { credentials }\n const { getters } = store\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.notifications\n const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n\n args.includeTypes = mastoApiNotificationTypes\n args.withMuted = !hideMutedPosts\n\n args.timeline = 'notifications'\n if (older) {\n if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n args.until = timelineData.minId\n }\n return fetchNotifications({ store, args, older })\n } else {\n // fetch new notifications\n if (since === undefined && timelineData.maxId !== Number.POSITIVE_INFINITY) {\n args.since = timelineData.maxId\n } else if (since !== null) {\n args.since = since\n }\n const result = fetchNotifications({ store, args, older })\n\n // If there's any unread notifications, try fetch notifications since\n // the newest read notification to check if any of the unread notifs\n // have changed their 'seen' state (marked as read in another session), so\n // we can update the state in this session to mark them as read as well.\n // The normal maxId-check does not tell if older notifications have changed\n const notifications = timelineData.data\n const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n const numUnseenNotifs = notifications.length - readNotifsIds.length\n if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {\n args.since = Math.max(...readNotifsIds)\n fetchNotifications({ store, args, older })\n }\n\n return result\n }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n return apiService.fetchTimeline(args)\n .then((response) => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n const notifications = response.data\n update({ store, notifications, older })\n return notifications\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'notifications.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n console.error(error)\n })\n}\n\nconst startFetching = ({ credentials, store }) => {\n // Initially there's set flag to silence all desktop notifications so\n // that there won't spam of them when user just opened up the FE we\n // reset that flag after a while to show new notifications once again.\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst notificationsFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default notificationsFetcher\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n const result = {\n top: top + child.offsetTop,\n left: left + child.offsetLeft\n }\n if (!ignorePadding && child !== window) {\n const { topPadding, leftPadding } = findPadding(child)\n result.top += ignorePadding ? 0 : topPadding\n result.left += ignorePadding ? 0 : leftPadding\n }\n\n if (child.offsetParent && window.getComputedStyle(child.offsetParent).position !== 'sticky' && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {\n return findOffset(child.offsetParent, parent, result, false)\n } else {\n if (parent !== window) {\n const { topPadding, leftPadding } = findPadding(parent)\n result.top += topPadding\n result.left += leftPadding\n }\n return result\n }\n}\n\nconst findPadding = (el) => {\n const topPaddingStr = window.getComputedStyle(el)['padding-top']\n const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n const leftPaddingStr = window.getComputedStyle(el)['padding-left']\n const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))\n\n return { topPadding, leftPadding }\n}\n","\n// promiseInterval - replacement for setInterval for promises, starts counting\n// the interval only after a promise is done instead of immediately.\n// - promiseCall is a function that returns a promise, it's called the first\n// time after the first interval.\n// - interval is the interval delay in ms.\n\nexport const promiseInterval = (promiseCall, interval) => {\n let stopped = false\n let timeout = null\n\n const func = () => {\n const promise = promiseCall()\n // something unexpected happened and promiseCall did not\n // return a promise, abort the loop.\n if (!(promise && promise.finally)) {\n console.warn('promiseInterval: promise call did not return a promise, stopping interval.')\n return\n }\n promise.finally(() => {\n if (stopped) return\n timeout = window.setTimeout(func, interval)\n })\n }\n\n const stopFetcher = () => {\n stopped = true\n window.clearTimeout(timeout)\n }\n\n timeout = window.setTimeout(func, interval)\n\n return { stop: stopFetcher }\n}\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n const statusText = status.text.toLowerCase()\n const statusSummary = status.summary.toLowerCase()\n const hits = filter(muteWords, (muteWord) => {\n return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n })\n\n return hits\n}\n","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n store,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n media = [],\n inReplyToStatusId = undefined,\n contentType = 'text/plain',\n preview = false,\n idempotencyKey = ''\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.postStatus({\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n mediaIds,\n inReplyToStatusId,\n contentType,\n poll,\n preview,\n idempotencyKey\n })\n .then((data) => {\n if (!data.error && !preview) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n return {\n error: err.message\n }\n })\n}\n\nconst editStatus = ({\n store,\n statusId,\n status,\n spoilerText,\n sensitive,\n poll,\n media = [],\n contentType = 'text/plain'\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.editStatus({\n id: statusId,\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n sensitive,\n poll,\n mediaIds,\n contentType\n })\n .then((data) => {\n if (!data.error) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n console.error('Error editing status', err)\n return {\n error: err.message\n }\n })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n postStatus,\n editStatus,\n uploadMedia,\n setMediaDescription\n}\n\nexport default statusPosterService\n","import { convert } from 'chromatism'\nimport { rgb2hex, hex2rgb, rgba2css, getCssColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { getColors, computeDynamicColor, getOpacitySlot } from '../theme_data/theme_data.service.js'\nimport { defaultState } from '../../modules/config.js'\n\nexport const applyTheme = (input) => {\n const { rules } = generatePreset(input)\n const head = document.head\n const body = document.body\n body.classList.add('hidden')\n\n const styleEl = document.createElement('style')\n head.appendChild(styleEl)\n const styleSheet = styleEl.sheet\n\n styleSheet.toString()\n styleSheet.insertRule(`:root { ${rules.radii} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.colors} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.shadows} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.fonts} }`, 'index-max')\n body.classList.remove('hidden')\n}\n\nconst configColumns = ({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth }) =>\n ({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth })\n\nconst defaultConfigColumns = configColumns(defaultState)\n\nexport const applyConfig = (config) => {\n const columns = configColumns(config)\n\n if (columns === defaultConfigColumns) {\n return\n }\n\n const head = document.head\n const body = document.body\n body.classList.add('hidden')\n\n const rules = Object\n .entries(columns)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}: ${v}`).join(';')\n\n const styleEl = document.createElement('style')\n head.appendChild(styleEl)\n const styleSheet = styleEl.sheet\n\n styleSheet.toString()\n styleSheet.insertRule(`:root { ${rules} }`, 'index-max')\n body.classList.remove('hidden')\n}\n\nexport const getCssShadow = (input, usesDropShadow) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n .filter(_ => usesDropShadow ? _.inset : _)\n .map((shad) => [\n shad.x,\n shad.y,\n shad.blur,\n shad.spread\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha),\n shad.inset ? 'inset' : ''\n ]).join(' ')).join(', ')\n}\n\nconst getCssShadowFilter = (input) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n // drop-shadow doesn't support inset or spread\n .filter((shad) => !shad.inset && Number(shad.spread) === 0)\n .map((shad) => [\n shad.x,\n shad.y,\n // drop-shadow's blur is twice as strong compared to box-shadow\n shad.blur / 2\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha)\n ]).join(' '))\n .map(_ => `drop-shadow(${_})`)\n .join(' ')\n}\n\nexport const generateColors = (themeData) => {\n const sourceColors = !themeData.themeEngineVersion\n ? colors2to3(themeData.colors || themeData)\n : themeData.colors || themeData\n\n const { colors, opacity } = getColors(sourceColors, themeData.opacity || {})\n\n const htmlColors = Object.entries(colors)\n .reduce((acc, [k, v]) => {\n if (!v) return acc\n acc.solid[k] = rgb2hex(v)\n acc.complete[k] = typeof v.a === 'undefined' ? rgb2hex(v) : rgba2css(v)\n return acc\n }, { complete: {}, solid: {} })\n return {\n rules: {\n colors: Object.entries(htmlColors.complete)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}: ${v}`)\n .join(';')\n },\n theme: {\n colors: htmlColors.solid,\n opacity\n }\n }\n}\n\nexport const generateRadii = (input) => {\n let inputRadii = input.radii || {}\n // v1 -> v2\n if (typeof input.btnRadius !== 'undefined') {\n inputRadii = Object\n .entries(input)\n .filter(([k, v]) => k.endsWith('Radius'))\n .reduce((acc, e) => { acc[e[0].split('Radius')[0]] = e[1]; return acc }, {})\n }\n const radii = Object.entries(inputRadii).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {\n btn: 4,\n input: 4,\n checkbox: 2,\n panel: 10,\n avatar: 5,\n avatarAlt: 50,\n tooltip: 2,\n attachment: 5,\n chatMessage: inputRadii.panel\n })\n\n return {\n rules: {\n radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n },\n theme: {\n radii\n }\n }\n}\n\nexport const generateFonts = (input) => {\n const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, acc[k])\n return acc\n }, {\n interface: {\n family: 'sans-serif'\n },\n input: {\n family: 'inherit'\n },\n post: {\n family: 'inherit'\n },\n postCode: {\n family: 'monospace'\n }\n })\n\n return {\n rules: {\n fonts: Object\n .entries(fonts)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n },\n theme: {\n fonts\n }\n }\n}\n\nconst border = (top, shadow) => ({\n x: 0,\n y: top ? 1 : -1,\n blur: 0,\n spread: 0,\n color: shadow ? '#000000' : '#FFFFFF',\n alpha: 0.2,\n inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '--faint',\n alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n panel: [{\n x: 1,\n y: 1,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n topBar: [{\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n popup: [{\n x: 2,\n y: 2,\n blur: 3,\n spread: 0,\n color: '#000000',\n alpha: 0.5\n }],\n avatar: [{\n x: 0,\n y: 1,\n blur: 8,\n spread: 0,\n color: '#000000',\n alpha: 0.7\n }],\n avatarStatus: [],\n panelHeader: [],\n button: [{\n x: 0,\n y: 0,\n blur: 2,\n spread: 0,\n color: '#000000',\n alpha: 1\n }, ...buttonInsetFakeBorders],\n buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n input: [...inputInsetFakeBorders, {\n x: 0,\n y: 0,\n blur: 2,\n inset: true,\n spread: 0,\n color: '#000000',\n alpha: 1\n }]\n}\nexport const generateShadows = (input, colors) => {\n // TODO this is a small hack for `mod` to work with shadows\n // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n const hackContextDict = {\n button: 'btn',\n panel: 'bg',\n top: 'topBar',\n popup: 'popover',\n avatar: 'bg',\n panelHeader: 'panel',\n input: 'input'\n }\n\n const cleanInputShadows = Object.fromEntries(\n Object.entries(input.shadows || {})\n .map(([name, shadowSlot]) => [\n name,\n // defaulting color to black to avoid potential problems\n shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n ])\n )\n const inputShadows = cleanInputShadows && !input.themeEngineVersion\n ? shadows2to3(cleanInputShadows, input.opacity)\n : cleanInputShadows || {}\n const shadows = Object.entries({\n ...DEFAULT_SHADOWS,\n ...inputShadows\n }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n const colorSlotName = hackContextDict[slotFirstWord]\n const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n const mod = isLightOnDark ? 1 : -1\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n color: rgb2hex(computeDynamicColor(\n def.color,\n (variableSlot) => convert(colors[variableSlot]).rgb,\n mod\n ))\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n\n return {\n rules: {\n shadows: Object\n .entries(shadows)\n // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n // convert all non-inset shadows into filter: drop-shadow() to boost performance\n .map(([k, v]) => [\n `--${k}Shadow: ${getCssShadow(v)}`,\n `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n `--${k}ShadowInset: ${getCssShadow(v, true)}`\n ].join(';'))\n .join(';')\n },\n theme: {\n shadows\n }\n }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n return {\n rules: {\n ...shadows.rules,\n ...colors.rules,\n ...radii.rules,\n ...fonts.rules\n },\n theme: {\n ...shadows.theme,\n ...colors.theme,\n ...radii.theme,\n ...fonts.theme\n }\n }\n}\n\nexport const generatePreset = (input) => {\n const colors = generateColors(input)\n return composePreset(\n colors,\n generateRadii(input),\n generateShadows(input, colors.theme.colors, colors.mod),\n generateFonts(input)\n )\n}\n\nexport const getThemes = () => {\n const cache = 'no-store'\n\n return window.fetch('/static/styles.json', { cache })\n .then((data) => data.json())\n .then((themes) => {\n return Object.entries(themes).map(([k, v]) => {\n let promise = null\n if (typeof v === 'object') {\n promise = Promise.resolve(v)\n } else if (typeof v === 'string') {\n promise = window.fetch(v, { cache })\n .then((data) => data.json())\n .catch((e) => {\n console.error(e)\n return null\n })\n }\n return [k, promise]\n })\n })\n .then((promises) => {\n return promises\n .reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {})\n })\n}\nexport const colors2to3 = (colors) => {\n return Object.entries(colors).reduce((acc, [slotName, color]) => {\n const btnPositions = ['', 'Panel', 'TopBar']\n switch (slotName) {\n case 'lightBg':\n return { ...acc, highlight: color }\n case 'btnText':\n return {\n ...acc,\n ...btnPositions\n .reduce(\n (statePositionAcc, position) =>\n ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n , {}\n )\n }\n default:\n return { ...acc, [slotName]: color }\n }\n }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const isDynamic = ({ color = '#000000' }) => color.startsWith('--')\n const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n}\n\nexport const getPreset = (val) => {\n return getThemes()\n .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n .then((theme) => {\n const isV1 = Array.isArray(theme)\n const data = isV1 ? {} : theme.theme\n\n if (isV1) {\n const bg = hex2rgb(theme[1])\n const fg = hex2rgb(theme[2])\n const text = hex2rgb(theme[3])\n const link = hex2rgb(theme[4])\n\n const cRed = hex2rgb(theme[5] || '#FF0000')\n const cGreen = hex2rgb(theme[6] || '#00FF00')\n const cBlue = hex2rgb(theme[7] || '#0000FF')\n const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n }\n\n return { theme: data, source: theme.source }\n })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","import { invertLightness, brightness } from 'chromatism'\nimport { alphaBlend, mixrgb } from '../color_convert/color_convert.js'\n/* This is a definition of all layer combinations\n * each key is a topmost layer, each value represents layer underneath\n * this is essentially a simplified tree\n */\nexport const LAYERS = {\n undelay: null, // root\n topBar: null, // no transparency support\n badge: null, // no transparency support\n profileTint: null, // doesn't matter\n fg: null,\n bg: 'underlay',\n highlight: 'bg',\n panel: 'bg',\n popover: 'bg',\n selectedMenu: 'popover',\n btn: 'bg',\n btnPanel: 'panel',\n btnTopBar: 'topBar',\n input: 'bg',\n inputPanel: 'panel',\n inputTopBar: 'topBar',\n alert: 'bg',\n alertPanel: 'panel',\n poll: 'bg',\n chatBg: 'underlay',\n chatMessage: 'chatBg'\n}\n\n/* By default opacity slots have 1 as default opacity\n * this allows redefining it to something else\n */\nexport const DEFAULT_OPACITY = {\n profileTint: 0.5,\n alert: 0.5,\n input: 0.5,\n faint: 0.5,\n underlay: 0.15,\n alertPopup: 0.95\n}\n\n/** SUBJECT TO CHANGE IN THE FUTURE, this is all beta\n * Color and opacity slots definitions. Each key represents a slot.\n *\n * Short-hands:\n * String beginning with `--` - value after dashes treated as sole\n * dependency - i.e. `--value` equivalent to { depends: ['value']}\n * String beginning with `#` - value would be treated as solid color\n * defined in hexadecimal representation (i.e. #FFFFFF) and will be\n * used as default. `#FFFFFF` is equivalent to { default: '#FFFFFF'}\n *\n * Full definition:\n * @property {String[]} depends - color slot names this color depends ones.\n * cyclic dependencies are supported to some extent but not recommended.\n * @property {String} [opacity] - opacity slot used by this color slot.\n * opacity is inherited from parents. To break inheritance graph use null\n * @property {Number} [priority] - EXPERIMENTAL. used to pre-sort slots so\n * that slots with higher priority come earlier\n * @property {Function(mod, ...colors)} [color] - function that will be\n * used to determine the color. By default it just copies first color in\n * dependency list.\n * @argument {Number} mod - `1` (light-on-dark) or `-1` (dark-on-light)\n * depending on background color (for textColor)/given color.\n * @argument {...Object} deps - each argument after mod represents each\n * color from `depends` array. All colors take user customizations into\n * account and represented by { r, g, b } objects.\n * @returns {Object} resulting color, should be in { r, g, b } form\n *\n * @property {Boolean|String} [textColor] - true to mark color slot as text\n * color. This enables automatic text color generation for the slot. Use\n * 'preserve' string if you don't want text color to fall back to\n * black/white. Use 'bw' to only ever use black or white. This also makes\n * following properties required:\n * @property {String} [layer] - which layer the text sit on top on - used\n * to account for transparency in text color calculation\n * layer is inherited from parents. To break inheritance graph use null\n * @property {String} [variant] - which color slot is background (same as\n * above, used to account for transparency)\n */\nexport const SLOT_INHERITANCE = {\n bg: {\n depends: [],\n opacity: 'bg',\n priority: 1\n },\n wallpaper: {\n depends: ['bg'],\n color: (mod, bg) => brightness(-2 * mod, bg).rgb\n },\n fg: {\n depends: [],\n priority: 1\n },\n text: {\n depends: [],\n layer: 'bg',\n opacity: null,\n priority: 1\n },\n underlay: {\n default: '#000000',\n opacity: 'underlay'\n },\n link: {\n depends: ['accent'],\n priority: 1\n },\n accent: {\n depends: ['link'],\n priority: 1\n },\n faint: {\n depends: ['text'],\n opacity: 'faint'\n },\n faintLink: {\n depends: ['link'],\n opacity: 'faint'\n },\n postFaintLink: {\n depends: ['postLink'],\n opacity: 'faint'\n },\n\n cBlue: '#0000ff',\n cRed: '#FF0000',\n cGreen: '#00FF00',\n cOrange: '#E3FF00',\n\n profileBg: {\n depends: ['bg'],\n color: (mod, bg) => ({\n r: Math.floor(bg.r * 0.53),\n g: Math.floor(bg.g * 0.56),\n b: Math.floor(bg.b * 0.59)\n })\n },\n profileTint: {\n depends: ['bg'],\n layer: 'profileTint',\n opacity: 'profileTint'\n },\n\n highlight: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n highlightLightText: {\n depends: ['lightText'],\n layer: 'highlight',\n textColor: true\n },\n highlightPostLink: {\n depends: ['postLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightFaintText: {\n depends: ['faint'],\n layer: 'highlight',\n textColor: true\n },\n highlightFaintLink: {\n depends: ['faintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightText: {\n depends: ['text'],\n layer: 'highlight',\n textColor: true\n },\n highlightLink: {\n depends: ['link'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightIcon: {\n depends: ['highlight', 'highlightText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n popover: {\n depends: ['bg'],\n opacity: 'popover'\n },\n popoverLightText: {\n depends: ['lightText'],\n layer: 'popover',\n textColor: true\n },\n popoverPostLink: {\n depends: ['postLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverFaintText: {\n depends: ['faint'],\n layer: 'popover',\n textColor: true\n },\n popoverFaintLink: {\n depends: ['faintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverText: {\n depends: ['text'],\n layer: 'popover',\n textColor: true\n },\n popoverLink: {\n depends: ['link'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverIcon: {\n depends: ['popover', 'popoverText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedPost: '--highlight',\n selectedPostFaintText: {\n depends: ['highlightFaintText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLightText: {\n depends: ['highlightLightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostPostLink: {\n depends: ['highlightPostLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostText: {\n depends: ['highlightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLink: {\n depends: ['highlightLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostIcon: {\n depends: ['selectedPost', 'selectedPostText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenu: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuLightText: {\n depends: ['highlightLightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintText: {\n depends: ['highlightFaintText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuText: {\n depends: ['highlightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuLink: {\n depends: ['highlightLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuIcon: {\n depends: ['selectedMenu', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenuPopover: {\n depends: ['popover'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuPopoverLightText: {\n depends: ['selectedMenuLightText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintText: {\n depends: ['selectedMenuFaintText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintLink: {\n depends: ['selectedMenuFaintLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverText: {\n depends: ['selectedMenuText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverLink: {\n depends: ['selectedMenuLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverIcon: {\n depends: ['selectedMenuPopover', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n lightText: {\n depends: ['text'],\n layer: 'bg',\n textColor: 'preserve',\n color: (mod, text) => brightness(20 * mod, text).rgb\n },\n\n postLink: {\n depends: ['link'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n postGreentext: {\n depends: ['cGreen'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n postCyantext: {\n depends: ['cBlue'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n border: {\n depends: ['fg'],\n opacity: 'border',\n color: (mod, fg) => brightness(2 * mod, fg).rgb\n },\n\n poll: {\n depends: ['accent', 'bg'],\n copacity: 'poll',\n color: (mod, accent, bg) => alphaBlend(accent, 0.4, bg)\n },\n pollText: {\n depends: ['text'],\n layer: 'poll',\n textColor: true\n },\n\n icon: {\n depends: ['bg', 'text'],\n inheritsOpacity: false,\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n // Foreground\n fgText: {\n depends: ['text'],\n layer: 'fg',\n textColor: true\n },\n fgLink: {\n depends: ['link'],\n layer: 'fg',\n textColor: 'preserve'\n },\n\n // Panel header\n panel: {\n depends: ['fg'],\n opacity: 'panel'\n },\n panelText: {\n depends: ['text'],\n layer: 'panel',\n textColor: true\n },\n panelFaint: {\n depends: ['fgText'],\n layer: 'panel',\n opacity: 'faint',\n textColor: true\n },\n panelLink: {\n depends: ['fgLink'],\n layer: 'panel',\n textColor: 'preserve'\n },\n\n // Top bar\n topBar: '--fg',\n topBarText: {\n depends: ['fgText'],\n layer: 'topBar',\n textColor: true\n },\n topBarLink: {\n depends: ['fgLink'],\n layer: 'topBar',\n textColor: 'preserve'\n },\n\n // Tabs\n tab: {\n depends: ['btn']\n },\n tabText: {\n depends: ['btnText'],\n layer: 'btn',\n textColor: true\n },\n tabActiveText: {\n depends: ['text'],\n layer: 'bg',\n textColor: true\n },\n\n // Buttons\n btn: {\n depends: ['fg'],\n variant: 'btn',\n opacity: 'btn'\n },\n btnText: {\n depends: ['fgText'],\n layer: 'btn',\n textColor: true\n },\n btnPanelText: {\n depends: ['btnText'],\n layer: 'btnPanel',\n variant: 'btn',\n textColor: true\n },\n btnTopBarText: {\n depends: ['btnText'],\n layer: 'btnTopBar',\n variant: 'btn',\n textColor: true\n },\n\n // Buttons: pressed\n btnPressed: {\n depends: ['btn'],\n layer: 'btn'\n },\n btnPressedText: {\n depends: ['btnText'],\n layer: 'btn',\n variant: 'btnPressed',\n textColor: true\n },\n btnPressedPanel: {\n depends: ['btnPressed'],\n layer: 'btn'\n },\n btnPressedPanelText: {\n depends: ['btnPanelText'],\n layer: 'btnPanel',\n variant: 'btnPressed',\n textColor: true\n },\n btnPressedTopBar: {\n depends: ['btnPressed'],\n layer: 'btn'\n },\n btnPressedTopBarText: {\n depends: ['btnTopBarText'],\n layer: 'btnTopBar',\n variant: 'btnPressed',\n textColor: true\n },\n\n // Buttons: toggled\n btnToggled: {\n depends: ['btn'],\n layer: 'btn',\n color: (mod, btn) => brightness(mod * 20, btn).rgb\n },\n btnToggledText: {\n depends: ['btnText'],\n layer: 'btn',\n variant: 'btnToggled',\n textColor: true\n },\n btnToggledPanelText: {\n depends: ['btnPanelText'],\n layer: 'btnPanel',\n variant: 'btnToggled',\n textColor: true\n },\n btnToggledTopBarText: {\n depends: ['btnTopBarText'],\n layer: 'btnTopBar',\n variant: 'btnToggled',\n textColor: true\n },\n\n // Buttons: disabled\n btnDisabled: {\n depends: ['btn', 'bg'],\n color: (mod, btn, bg) => alphaBlend(btn, 0.25, bg)\n },\n btnDisabledText: {\n depends: ['btnText', 'btnDisabled'],\n layer: 'btn',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n btnDisabledPanelText: {\n depends: ['btnPanelText', 'btnDisabled'],\n layer: 'btnPanel',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n btnDisabledTopBarText: {\n depends: ['btnTopBarText', 'btnDisabled'],\n layer: 'btnTopBar',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n\n // Input fields\n input: {\n depends: ['fg'],\n opacity: 'input'\n },\n inputText: {\n depends: ['text'],\n layer: 'input',\n textColor: true\n },\n inputPanelText: {\n depends: ['panelText'],\n layer: 'inputPanel',\n variant: 'input',\n textColor: true\n },\n inputTopbarText: {\n depends: ['topBarText'],\n layer: 'inputTopBar',\n variant: 'input',\n textColor: true\n },\n\n alertError: {\n depends: ['cRed'],\n opacity: 'alert'\n },\n alertErrorText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertError',\n textColor: true\n },\n alertErrorPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertError',\n textColor: true\n },\n\n alertWarning: {\n depends: ['cOrange'],\n opacity: 'alert'\n },\n alertWarningText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertWarning',\n textColor: true\n },\n alertWarningPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertWarning',\n textColor: true\n },\n\n alertSuccess: {\n depends: ['cGreen'],\n opacity: 'alert'\n },\n alertSuccessText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertSuccess',\n textColor: true\n },\n alertSuccessPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertSuccess',\n textColor: true\n },\n\n alertNeutral: {\n depends: ['text'],\n opacity: 'alert'\n },\n alertNeutralText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertNeutral',\n color: (mod, text) => invertLightness(text).rgb,\n textColor: true\n },\n alertNeutralPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertNeutral',\n textColor: true\n },\n\n alertPopupError: {\n depends: ['alertError'],\n opacity: 'alertPopup'\n },\n alertPopupErrorText: {\n depends: ['alertErrorText'],\n layer: 'popover',\n variant: 'alertPopupError',\n textColor: true\n },\n\n alertPopupWarning: {\n depends: ['alertWarning'],\n opacity: 'alertPopup'\n },\n alertPopupWarningText: {\n depends: ['alertWarningText'],\n layer: 'popover',\n variant: 'alertPopupWarning',\n textColor: true\n },\n\n alertPopupSuccess: {\n depends: ['alertSuccess'],\n opacity: 'alertPopup'\n },\n alertPopupSuccessText: {\n depends: ['alertSuccessText'],\n layer: 'popover',\n variant: 'alertPopupSuccess',\n textColor: true\n },\n\n alertPopupNeutral: {\n depends: ['alertNeutral'],\n opacity: 'alertPopup'\n },\n alertPopupNeutralText: {\n depends: ['alertNeutralText'],\n layer: 'popover',\n variant: 'alertPopupNeutral',\n textColor: true\n },\n\n badgeNotification: '--cRed',\n badgeNotificationText: {\n depends: ['text', 'badgeNotification'],\n layer: 'badge',\n variant: 'badgeNotification',\n textColor: 'bw'\n },\n\n badgeNeutral: '--cGreen',\n badgeNeutralText: {\n depends: ['text', 'badgeNeutral'],\n layer: 'badge',\n variant: 'badgeNeutral',\n textColor: 'bw'\n },\n\n chatBg: {\n depends: ['bg']\n },\n\n chatMessageIncomingBg: {\n depends: ['chatBg']\n },\n\n chatMessageIncomingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: true\n },\n\n chatMessageIncomingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: 'preserve'\n },\n\n chatMessageIncomingBorder: {\n depends: ['border'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n },\n\n chatMessageOutgoingBg: {\n depends: ['chatMessageIncomingBg'],\n color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb\n },\n\n chatMessageOutgoingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: true\n },\n\n chatMessageOutgoingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: 'preserve'\n },\n\n chatMessageOutgoingBorder: {\n depends: ['chatMessageOutgoingBg'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n }\n}\n","import { convert, brightness, contrastRatio } from 'chromatism'\nimport { alphaBlendLayers, getTextColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { LAYERS, DEFAULT_OPACITY, SLOT_INHERITANCE } from './pleromafe.js'\n\n/*\n * # What's all this?\n * Here be theme engine for pleromafe. All of this supposed to ease look\n * and feel customization, making widget styles and make developer's life\n * easier when it comes to supporting themes. Like many other theme systems\n * it operates on color definitions, or \"slots\" - for example you define\n * \"button\" color slot and then in UI component Button's CSS you refer to\n * it as a CSS3 Variable.\n *\n * Some applications allow you to customize colors for certain things.\n * Some UI toolkits allow you to define colors for each type of widget.\n * Most of them are pretty barebones and have no assistance for common\n * problems and cases, and in general themes themselves are very hard to\n * maintain in all aspects. This theme engine tries to solve all of the\n * common problems with themes.\n *\n * You don't have redefine several similar colors if you just want to\n * change one color - all color slots are derived from other ones, so you\n * can have at least one or two \"basic\" colors defined and have all other\n * components inherit and modify basic ones.\n *\n * You don't have to test contrast ratio for colors or pick text color for\n * each element even if you have light-on-dark elements in dark-on-light\n * theme.\n *\n * You don't have to maintain order of code for inheriting slots from othet\n * slots - dependency graph resolving does it for you.\n */\n\n/* This indicates that this version of code outputs similar theme data and\n * should be incremented if output changes - for instance if getTextColor\n * function changes and older themes no longer render text colors as\n * author intended previously.\n */\nexport const CURRENT_VERSION = 3\n\nexport const getLayersArray = (layer, data = LAYERS) => {\n const array = [layer]\n let parent = data[layer]\n while (parent) {\n array.unshift(parent)\n parent = data[parent]\n }\n return array\n}\n\nexport const getLayers = (layer, variant = layer, opacitySlot, colors, opacity) => {\n return getLayersArray(layer).map((currentLayer) => ([\n currentLayer === layer\n ? colors[variant]\n : colors[currentLayer],\n currentLayer === layer\n ? opacity[opacitySlot] || 1\n : opacity[currentLayer]\n ]))\n}\n\nconst getDependencies = (key, inheritance) => {\n const data = inheritance[key]\n if (typeof data === 'string' && data.startsWith('--')) {\n return [data.substring(2)]\n } else {\n if (data === null) return []\n const { depends, layer, variant } = data\n const layerDeps = layer\n ? getLayersArray(layer).map(currentLayer => {\n return currentLayer === layer\n ? variant || layer\n : currentLayer\n })\n : []\n if (Array.isArray(depends)) {\n return [...depends, ...layerDeps]\n } else {\n return [...layerDeps]\n }\n }\n}\n\n/**\n * Sorts inheritance object topologically - dependant slots come after\n * dependencies\n *\n * @property {Object} inheritance - object defining the nodes\n * @property {Function} getDeps - function that returns dependencies for\n * given value and inheritance object.\n * @returns {String[]} keys of inheritance object, sorted in topological\n * order. Additionally, dependency-less nodes will always be first in line\n */\nexport const topoSort = (\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n // This is an implementation of https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n const allKeys = Object.keys(inheritance)\n const whites = new Set(allKeys)\n const grays = new Set()\n const blacks = new Set()\n const unprocessed = [...allKeys]\n const output = []\n\n const step = (node) => {\n if (whites.has(node)) {\n // Make node \"gray\"\n whites.delete(node)\n grays.add(node)\n // Do step for each node connected to it (one way)\n getDeps(node, inheritance).forEach(step)\n // Make node \"black\"\n grays.delete(node)\n blacks.add(node)\n // Put it into the output list\n output.push(node)\n } else if (grays.has(node)) {\n console.debug('Cyclic depenency in topoSort, ignoring')\n output.push(node)\n } else if (blacks.has(node)) {\n // do nothing\n } else {\n throw new Error('Unintended condition in topoSort!')\n }\n }\n while (unprocessed.length > 0) {\n step(unprocessed.pop())\n }\n\n // The index thing is to make sorting stable on browsers\n // where Array.sort() isn't stable\n return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n const depsA = getDeps(a, inheritance).length\n const depsB = getDeps(b, inheritance).length\n\n if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi\n if (depsA === 0 && depsB !== 0) return -1\n if (depsB === 0 && depsA !== 0) return 1\n return 0 // failsafe, shouldn't happen?\n }).map(({ data }) => data)\n}\n\nconst expandSlotValue = (value) => {\n if (typeof value === 'object') return value\n return {\n depends: value.startsWith('--') ? [value.substring(2)] : [],\n default: value.startsWith('#') ? value : undefined\n }\n}\n/**\n * retrieves opacity slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * TODO refactor this\n */\nexport const getOpacitySlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (value.opacity === null) return\n if (value.opacity) return value.opacity\n const findInheritedOpacity = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.opacity || dependency === null) {\n return dependency.opacity\n } else if (dependency.depends && visited.includes(depSlot)) {\n return findInheritedOpacity(depSlot, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedOpacity(k)\n }\n}\n\n/**\n * retrieves layer slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * this is basically copypaste of getOpacitySlot except it checks if key is\n * in LAYERS\n * TODO refactor this\n */\nexport const getLayerSlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (LAYERS[k]) return k\n if (value.layer === null) return\n if (value.layer) return value.layer\n const findInheritedLayer = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.layer || dependency === null) {\n return dependency.layer\n } else if (dependency.depends) {\n return findInheritedLayer(dependency, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedLayer(k)\n }\n}\n\n/**\n * topologically sorted SLOT_INHERITANCE\n */\nexport const SLOT_ORDERED = topoSort(\n Object.entries(SLOT_INHERITANCE)\n .sort(([aK, aV], [bK, bV]) => ((aV && aV.priority) || 0) - ((bV && bV.priority) || 0))\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n)\n\n/**\n * All opacity slots used in color slots, their default values and affected\n * color slots.\n */\nexport const OPACITIES = Object.entries(SLOT_INHERITANCE).reduce((acc, [k, v]) => {\n const opacity = getOpacitySlot(k, SLOT_INHERITANCE, getDependencies)\n if (opacity) {\n return {\n ...acc,\n [opacity]: {\n defaultValue: DEFAULT_OPACITY[opacity] || 1,\n affectedSlots: [...((acc[opacity] && acc[opacity].affectedSlots) || []), k]\n }\n }\n } else {\n return acc\n }\n}, {})\n\n/**\n * Handle dynamic color\n */\nexport const computeDynamicColor = (sourceColor, getColor, mod) => {\n if (typeof sourceColor !== 'string' || !sourceColor.startsWith('--')) return sourceColor\n let targetColor = null\n // Color references other color\n const [variable, modifier] = sourceColor.split(/,/g).map(str => str.trim())\n const variableSlot = variable.substring(2)\n targetColor = getColor(variableSlot)\n if (modifier) {\n targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n }\n return targetColor\n}\n\n/**\n * THE function you want to use. Takes provided colors and opacities\n * value and uses inheritance data to figure out color needed for the slot.\n */\nexport const getColors = (sourceColors, sourceOpacity) => SLOT_ORDERED.reduce(({ colors, opacity }, key) => {\n const sourceColor = sourceColors[key]\n const value = expandSlotValue(SLOT_INHERITANCE[key])\n const deps = getDependencies(key, SLOT_INHERITANCE)\n const isTextColor = !!value.textColor\n const variant = value.variant || value.layer\n\n let backgroundColor = null\n\n if (isTextColor) {\n backgroundColor = alphaBlendLayers(\n { ...(colors[deps[0]] || convert(sourceColors[key] || '#FF00FF').rgb) },\n getLayers(\n getLayerSlot(key) || 'bg',\n variant || 'bg',\n getOpacitySlot(variant),\n colors,\n opacity\n )\n )\n } else if (variant && variant !== key) {\n backgroundColor = colors[variant] || convert(sourceColors[variant]).rgb\n } else {\n backgroundColor = colors.bg || convert(sourceColors.bg)\n }\n\n const isLightOnDark = relativeLuminance(backgroundColor) < 0.5\n const mod = isLightOnDark ? 1 : -1\n\n let outputColor = null\n if (sourceColor) {\n // Color is defined in source color\n let targetColor = sourceColor\n if (targetColor === 'transparent') {\n // We take only layers below current one\n const layers = getLayers(\n getLayerSlot(key),\n key,\n getOpacitySlot(key) || key,\n colors,\n opacity\n ).slice(0, -1)\n targetColor = {\n ...alphaBlendLayers(\n convert('#FF00FF').rgb,\n layers\n ),\n a: 0\n }\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('--')) {\n targetColor = computeDynamicColor(\n sourceColor,\n variableSlot => colors[variableSlot] || sourceColors[variableSlot],\n mod\n )\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('#')) {\n targetColor = convert(targetColor).rgb\n }\n outputColor = { ...targetColor }\n } else if (value.default) {\n // same as above except in object form\n outputColor = convert(value.default).rgb\n } else {\n // calculate color\n const defaultColorFunc = (mod, dep) => ({ ...dep })\n const colorFunc = value.color || defaultColorFunc\n\n if (value.textColor) {\n if (value.textColor === 'bw') {\n outputColor = contrastRatio(backgroundColor).rgb\n } else {\n let color = { ...colors[deps[0]] }\n if (value.color) {\n color = colorFunc(mod, ...deps.map((dep) => ({ ...colors[dep] })))\n }\n outputColor = getTextColor(\n backgroundColor,\n { ...color },\n value.textColor === 'preserve'\n )\n }\n } else {\n // background color case\n outputColor = colorFunc(\n mod,\n ...deps.map((dep) => ({ ...colors[dep] }))\n )\n }\n }\n if (!outputColor) {\n throw new Error('Couldn\\'t generate color for ' + key)\n }\n\n const opacitySlot = value.opacity || getOpacitySlot(key)\n const ownOpacitySlot = value.opacity\n\n if (ownOpacitySlot === null) {\n outputColor.a = 1\n } else if (sourceColor === 'transparent') {\n outputColor.a = 0\n } else {\n const opacityOverriden = ownOpacitySlot && sourceOpacity[opacitySlot] !== undefined\n\n const dependencySlot = deps[0]\n const dependencyColor = dependencySlot && colors[dependencySlot]\n\n if (!ownOpacitySlot && dependencyColor && !value.textColor && ownOpacitySlot !== null) {\n // Inheriting color from dependency (weird, i know)\n // except if it's a text color or opacity slot is set to 'null'\n outputColor.a = dependencyColor.a\n } else if (!dependencyColor && !opacitySlot) {\n // Remove any alpha channel if no dependency and no opacitySlot found\n delete outputColor.a\n } else {\n // Otherwise try to assign opacity\n if (dependencyColor && dependencyColor.a === 0) {\n // transparent dependency shall make dependents transparent too\n outputColor.a = 0\n } else {\n // Otherwise check if opacity is overriden and use that or default value instead\n outputColor.a = Number(\n opacityOverriden\n ? sourceOpacity[opacitySlot]\n : (OPACITIES[opacitySlot] || {}).defaultValue\n )\n }\n }\n }\n\n if (Number.isNaN(outputColor.a) || outputColor.a === undefined) {\n outputColor.a = 1\n }\n\n if (opacitySlot) {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity: { ...opacity, [opacitySlot]: outputColor.a }\n }\n } else {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity\n }\n }\n}, { colors: {}, opacity: {} })\n","import { hex2rgb } from '../color_convert/color_convert.js'\nconst highlightStyle = (prefs) => {\n if (prefs === undefined) return\n const { color, type } = prefs\n if (typeof color !== 'string') return\n const rgb = hex2rgb(color)\n if (rgb == null) return\n const solidColor = `rgb(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)})`\n const tintColor = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .1)`\n const tintColor2 = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .2)`\n const customProps = {\n '--____highlight-solidColor': solidColor,\n '--____highlight-tintColor': tintColor,\n '--____highlight-tintColor2': tintColor2\n }\n if (type === 'striped') {\n return {\n backgroundImage: [\n 'repeating-linear-gradient(135deg,',\n `${tintColor} ,`,\n `${tintColor} 20px,`,\n `${tintColor2} 20px,`,\n `${tintColor2} 40px`\n ].join(' '),\n backgroundPosition: '0 0',\n ...customProps\n }\n } else if (type === 'solid') {\n return {\n backgroundColor: tintColor2,\n ...customProps\n }\n } else if (type === 'side') {\n return {\n backgroundImage: [\n 'linear-gradient(to right,',\n `${solidColor} ,`,\n `${solidColor} 2px,`,\n 'transparent 6px'\n ].join(' '),\n backgroundPosition: '0 0',\n ...customProps\n }\n }\n}\n\nconst highlightClass = (user) => {\n return 'USER____' + user.screen_name\n .replace(/\\./g, '_')\n .replace(/@/g, '_AT_')\n}\n\nexport {\n highlightClass,\n highlightStyle\n}\n","import { includes } from 'lodash'\n\nconst generateProfileLink = (id, screenName, restrictedNicknames) => {\n const complicated = !screenName || (isExternal(screenName) || includes(restrictedNicknames, screenName))\n return {\n name: (complicated ? 'external-user-profile' : 'user-profile'),\n params: (complicated ? { id } : { name: screenName })\n }\n}\n\nconst isExternal = screenName => screenName && screenName.includes('@')\n\nexport default generateProfileLink\n","<template>\n <button\n v-if=\"usePlaceholder\"\n class=\"Attachment -placeholder button-unstyled\"\n :class=\"classNames\"\n @click=\"openModal\"\n >\n <a\n v-if=\"type !== 'html'\"\n class=\"placeholder\"\n target=\"_blank\"\n :href=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n @click.prevent\n >\n <FAIcon :icon=\"placeholderIconClass\" />\n <b>{{ nsfw ? \"NSFW / \" : \"\" }}</b>{{ edit ? '' : placeholderName }}\n </a>\n <div\n v-if=\"edit || remove\"\n class=\"attachment-buttons\"\n >\n <button\n v-if=\"remove\"\n class=\"button-unstyled attachment-button\"\n @click.prevent=\"onRemove\"\n >\n <FAIcon icon=\"trash-alt\" />\n </button>\n </div>\n <div\n v-if=\"size !== 'hide' && !hideDescription && (edit || localDescription || showDescription)\"\n class=\"description-container\"\n :class=\"{ '-static': !edit }\"\n >\n <input\n v-if=\"edit\"\n v-model=\"localDescription\"\n type=\"text\"\n class=\"description-field\"\n :placeholder=\"$t('post_status.media_description')\"\n @keydown.enter.prevent=\"\"\n >\n <p v-else>\n {{ localDescription }}\n </p>\n </div>\n </button>\n <div\n v-else\n class=\"Attachment\"\n :class=\"classNames\"\n >\n <div\n v-show=\"!isEmpty\"\n class=\"attachment-wrapper\"\n >\n <a\n v-if=\"hidden\"\n class=\"image-container\"\n :href=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <img\n :key=\"nsfwImage\"\n class=\"nsfw\"\n :src=\"nsfwImage\"\n >\n <FAIcon\n v-if=\"type === 'video'\"\n class=\"play-icon\"\n icon=\"play-circle\"\n />\n </a>\n <div\n v-if=\"!hidden\"\n class=\"attachment-buttons\"\n >\n <button\n v-if=\"type === 'flash' && flashLoaded\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.attachment_stop_flash')\"\n @click.prevent=\"stopFlash\"\n >\n <FAIcon icon=\"stop\" />\n </button>\n <button\n v-if=\"attachment.description && size !== 'small' && !edit && type !== 'unknown'\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.show_attachment_description')\"\n @click.prevent=\"toggleDescription\"\n >\n <FAIcon icon=\"align-right\" />\n </button>\n <button\n v-if=\"!useModal && type !== 'unknown'\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.show_attachment_in_modal')\"\n @click.prevent=\"openModalForce\"\n >\n <FAIcon icon=\"search-plus\" />\n </button>\n <button\n v-if=\"nsfw && hideNsfwLocal\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.hide_attachment')\"\n @click.prevent=\"toggleHidden\"\n >\n <FAIcon icon=\"times\" />\n </button>\n <button\n v-if=\"shiftUp\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.move_up')\"\n @click.prevent=\"onShiftUp\"\n >\n <FAIcon icon=\"chevron-left\" />\n </button>\n <button\n v-if=\"shiftDn\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.move_down')\"\n @click.prevent=\"onShiftDn\"\n >\n <FAIcon icon=\"chevron-right\" />\n </button>\n <button\n v-if=\"remove\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.remove_attachment')\"\n @click.prevent=\"onRemove\"\n >\n <FAIcon icon=\"trash-alt\" />\n </button>\n </div>\n\n <a\n v-if=\"type === 'image' && (!hidden || preloadImage)\"\n class=\"image-container\"\n :class=\"{'-hidden': hidden && preloadImage }\"\n :href=\"attachment.url\"\n target=\"_blank\"\n @click.stop.prevent=\"openModal\"\n >\n <StillImage\n class=\"image\"\n :referrerpolicy=\"referrerpolicy\"\n :mimetype=\"attachment.mimetype\"\n :src=\"attachment.large_thumb_url || attachment.url\"\n :image-load-handler=\"onImageLoad\"\n :alt=\"attachment.description\"\n />\n </a>\n\n <a\n v-if=\"type === 'unknown' && !hidden\"\n class=\"placeholder-container\"\n :href=\"attachment.url\"\n target=\"_blank\"\n >\n <FAIcon\n :size=\"compact ? '2x' : '5x'\"\n :icon=\"placeholderIconClass\"\n :title=\"localDescription\"\n />\n <p v-if=\"!compact\">\n {{ localDescription }}\n </p>\n </a>\n\n <component\n :is=\"videoTag\"\n v-if=\"type === 'video' && !hidden\"\n class=\"video-container\"\n :class=\"{ 'button-unstyled': 'isModal' }\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <VideoAttachment\n class=\"video\"\n :attachment=\"attachment\"\n :controls=\"!useModal\"\n @play=\"$emit('play')\"\n @pause=\"$emit('pause')\"\n />\n <FAIcon\n v-if=\"useModal\"\n class=\"play-icon\"\n icon=\"play-circle\"\n />\n </component>\n\n <span\n v-if=\"type === 'audio' && !hidden\"\n class=\"audio-container\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <audio\n v-if=\"type === 'audio'\"\n :src=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n controls\n @play=\"$emit('play')\"\n @pause=\"$emit('pause')\"\n />\n </span>\n\n <div\n v-if=\"type === 'html' && attachment.oembed\"\n class=\"oembed-container\"\n @click.prevent=\"linkClicked\"\n >\n <div\n v-if=\"attachment.thumb_url\"\n class=\"image\"\n >\n <img :src=\"attachment.thumb_url\">\n </div>\n <div class=\"text\">\n <!-- eslint-disable vue/no-v-html -->\n <h1><a :href=\"attachment.url\">{{ attachment.oembed.title }}</a></h1>\n <div v-html=\"attachment.oembed.oembedHTML\" />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n\n <span\n v-if=\"type === 'flash' && !hidden\"\n class=\"flash-container\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <Flash\n ref=\"flash\"\n class=\"flash\"\n :src=\"attachment.large_thumb_url || attachment.url\"\n @playerOpened=\"setFlashLoaded(true)\"\n @playerClosed=\"setFlashLoaded(false)\"\n />\n </span>\n </div>\n <div\n v-if=\"size !== 'hide' && !hideDescription && (edit || (localDescription && showDescription))\"\n class=\"description-container\"\n :class=\"{ '-static': !edit }\"\n >\n <input\n v-if=\"edit\"\n v-model=\"localDescription\"\n type=\"text\"\n class=\"description-field\"\n :placeholder=\"$t('post_status.media_description')\"\n @keydown.enter.prevent=\"\"\n >\n <p v-else>\n {{ localDescription }}\n </p>\n </div>\n </div>\n</template>\n\n<script src=\"./attachment.js\"></script>\n\n<style src=\"./attachment.scss\" lang=\"scss\"></style>\n","import StillImage from '../still-image/still-image.vue'\nimport Flash from '../flash/flash.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes,\n faStop,\n faSearchPlus,\n faTrashAlt,\n faPencilAlt,\n faAlignRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes,\n faStop,\n faSearchPlus,\n faTrashAlt,\n faPencilAlt,\n faAlignRight\n)\n\nconst Attachment = {\n props: [\n 'attachment',\n 'compact',\n 'description',\n 'hideDescription',\n 'nsfw',\n 'size',\n 'setMedia',\n 'remove',\n 'shiftUp',\n 'shiftDn',\n 'edit'\n ],\n data () {\n return {\n localDescription: this.description || this.attachment.description,\n nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n preloadImage: this.$store.getters.mergedConfig.preloadImage,\n loading: false,\n img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n modalOpen: false,\n showHidden: false,\n flashLoaded: false,\n showDescription: false\n }\n },\n components: {\n Flash,\n StillImage,\n VideoAttachment\n },\n computed: {\n classNames () {\n return [\n {\n '-loading': this.loading,\n '-nsfw-placeholder': this.hidden,\n '-editable': this.edit !== undefined,\n '-compact': this.compact\n },\n '-type-' + this.type,\n this.size && '-size-' + this.size,\n `-${this.useContainFit ? 'contain' : 'cover'}-fit`\n ]\n },\n usePlaceholder () {\n return this.size === 'hide'\n },\n useContainFit () {\n return this.$store.getters.mergedConfig.useContainFit\n },\n placeholderName () {\n if (this.attachment.description === '' || !this.attachment.description) {\n return this.type.toUpperCase()\n }\n return this.attachment.description\n },\n placeholderIconClass () {\n if (this.type === 'image') return 'image'\n if (this.type === 'video') return 'video'\n if (this.type === 'audio') return 'music'\n return 'file'\n },\n referrerpolicy () {\n return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n },\n type () {\n return fileTypeService.fileType(this.attachment.mimetype)\n },\n hidden () {\n return this.nsfw && this.hideNsfwLocal && !this.showHidden\n },\n isEmpty () {\n return (this.type === 'html' && !this.attachment.oembed)\n },\n useModal () {\n let modalTypes = []\n switch (this.size) {\n case 'hide':\n case 'small':\n modalTypes = ['image', 'video', 'audio', 'flash']\n break\n default:\n modalTypes = this.mergedConfig.playVideosInModal\n ? ['image', 'video', 'flash']\n : ['image']\n break\n }\n return modalTypes.includes(this.type)\n },\n videoTag () {\n return this.useModal ? 'button' : 'span'\n },\n ...mapGetters(['mergedConfig'])\n },\n watch: {\n 'attachment.description' (newVal) {\n this.localDescription = newVal\n },\n localDescription (newVal) {\n this.onEdit(newVal)\n }\n },\n methods: {\n linkClicked ({ target }) {\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n openModal (event) {\n if (this.useModal) {\n this.$emit('setMedia')\n this.$store.dispatch('setCurrentMedia', this.attachment)\n } else if (this.type === 'unknown') {\n window.open(this.attachment.url)\n }\n },\n openModalForce (event) {\n this.$emit('setMedia')\n this.$store.dispatch('setCurrentMedia', this.attachment)\n },\n onEdit (event) {\n this.edit && this.edit(this.attachment, event)\n },\n onRemove () {\n this.remove && this.remove(this.attachment)\n },\n onShiftUp () {\n this.shiftUp && this.shiftUp(this.attachment)\n },\n onShiftDn () {\n this.shiftDn && this.shiftDn(this.attachment)\n },\n stopFlash () {\n this.$refs.flash.closePlayer()\n },\n setFlashLoaded (event) {\n this.flashLoaded = event\n },\n toggleDescription () {\n this.showDescription = !this.showDescription\n },\n toggleHidden (event) {\n if (\n (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n ) {\n this.openModal(event)\n return\n }\n if (this.img && !this.preloadImage) {\n if (this.img.onload) {\n this.img.onload()\n } else {\n this.loading = true\n this.img.src = this.attachment.url\n this.img.onload = () => {\n this.loading = false\n this.showHidden = !this.showHidden\n }\n }\n } else {\n this.showHidden = !this.showHidden\n }\n },\n onImageLoad (image) {\n const width = image.naturalWidth\n const height = image.naturalHeight\n this.$emit('naturalSizeLoad', { id: this.attachment.id, width, height })\n }\n }\n}\n\nexport default Attachment\n","import { render } from \"./attachment.vue?vue&type=template&id=581d66b2\"\nimport script from \"./attachment.js?vue&type=script&lang=js\"\nexport * from \"./attachment.js?vue&type=script&lang=js\"\n\nimport \"./attachment.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"avatars\">\n <router-link\n v-for=\"user in slicedUsers\"\n :key=\"user.id\"\n :to=\"userProfileLink(user)\"\n class=\"avatars-item\"\n >\n <UserAvatar\n :user=\"user\"\n class=\"avatar-small\"\n />\n </router-link>\n </div>\n</template>\n\n<script src=\"./avatar_list.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.avatars {\n display: flex;\n margin: 0;\n padding: 0;\n\n // For hiding overflowing elements\n flex-wrap: wrap;\n height: 24px;\n\n .avatars-item {\n margin: 0 0 5px 5px;\n\n &:first-child {\n padding-left: 5px;\n }\n\n .avatar-small {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n height: 24px;\n width: 24px;\n }\n }\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst AvatarList = {\n props: ['users'],\n computed: {\n slicedUsers () {\n return this.users ? this.users.slice(0, 15) : []\n }\n },\n components: {\n UserAvatar\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default AvatarList\n","import { render } from \"./avatar_list.vue?vue&type=template&id=432beb66\"\nimport script from \"./avatar_list.js?vue&type=script&lang=js\"\nexport * from \"./avatar_list.js?vue&type=script&lang=js\"\n\nimport \"./avatar_list.vue?vue&type=style&index=0&id=432beb66&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"basic-user-card\">\n <router-link\n :to=\"userProfileLink(user)\"\n @click.prevent\n >\n <UserPopover\n :user-id=\"user.id\"\n :overlay-centers=\"true\"\n overlay-centers-selector=\".avatar\"\n >\n <UserAvatar\n class=\"user-avatar avatar\"\n :user=\"user\"\n @click.prevent\n />\n </UserPopover>\n </router-link>\n <div\n class=\"basic-user-card-collapsed-content\"\n >\n <div\n :title=\"user.name\"\n class=\"basic-user-card-user-name\"\n >\n <RichContent\n class=\"basic-user-card-user-name-value\"\n :html=\"user.name\"\n :emoji=\"user.emoji\"\n />\n </div>\n <div>\n <user-link\n class=\"basic-user-card-screen-name\"\n :user=\"user\"\n />\n </div>\n <slot />\n </div>\n </div>\n</template>\n\n<script src=\"./basic_user_card.js\"></script>\n\n<style lang=\"scss\">\n.basic-user-card {\n display: flex;\n flex: 1 0;\n margin: 0;\n padding: 0.6em 1em;\n\n --emoji-size: 14px;\n\n &-collapsed-content {\n margin-left: 0.7em;\n text-align: left;\n flex: 1;\n min-width: 0;\n }\n\n &-user-name {\n img {\n object-fit: contain;\n height: 16px;\n width: 16px;\n vertical-align: middle;\n }\n }\n\n &-user-name-value,\n &-screen-name {\n display: inline-block;\n max-width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n &-expanded-content {\n flex: 1;\n margin-left: 0.7em;\n min-width: 0;\n }\n}\n</style>\n","import UserPopover from '../user_popover/user_popover.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst BasicUserCard = {\n props: [\n 'user'\n ],\n components: {\n UserPopover,\n UserAvatar,\n RichContent,\n UserLink\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default BasicUserCard\n","import { render } from \"./basic_user_card.vue?vue&type=template&id=d8a50982\"\nimport script from \"./basic_user_card.js?vue&type=script&lang=js\"\nexport * from \"./basic_user_card.js?vue&type=script&lang=js\"\n\nimport \"./basic_user_card.vue?vue&type=style&index=0&id=d8a50982&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"checkbox\"\n :class=\"{ disabled, indeterminate }\"\n >\n <input\n type=\"checkbox\"\n class=\"visible-for-screenreader-only\"\n :disabled=\"disabled\"\n :checked=\"modelValue\"\n :indeterminate=\"indeterminate\"\n @change=\"$emit('update:modelValue', $event.target.checked)\"\n >\n <i\n class=\"checkbox-indicator\"\n :aria-hidden=\"true\"\n />\n <span\n v-if=\"!!$slots.default\"\n class=\"label\"\n >\n <slot />\n </span>\n </label>\n</template>\n\n<script>\nexport default {\n props: [\n 'modelValue',\n 'indeterminate',\n 'disabled'\n ],\n emits: ['update:modelValue']\n}\n</script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.checkbox {\n position: relative;\n display: inline-block;\n min-height: 1.2em;\n\n &-indicator {\n position: relative;\n padding-left: 1.2em;\n }\n\n &-indicator::before {\n position: absolute;\n right: 0;\n top: 0;\n display: block;\n content: \"✓\";\n transition: color 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: $fallback--checkboxRadius;\n border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1em;\n font-size: 1.1em;\n color: transparent;\n overflow: hidden;\n box-sizing: border-box;\n }\n\n &.disabled {\n .checkbox-indicator::before,\n .label {\n opacity: 0.5;\n }\n\n .label {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n input[type=\"checkbox\"] {\n &:checked + .checkbox-indicator::before {\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n &:indeterminate + .checkbox-indicator::before {\n content: \"–\";\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n }\n\n & > span {\n margin-left: 0.5em;\n }\n}\n</style>\n","import { render } from \"./checkbox.vue?vue&type=template&id=66e895aa\"\nimport script from \"./checkbox.vue?vue&type=script&lang=js\"\nexport * from \"./checkbox.vue?vue&type=script&lang=js\"\n\nimport \"./checkbox.vue?vue&type=style&index=0&id=66e895aa&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import DialogModal from '../dialog_modal/dialog_modal.vue'\n\n/**\n * This component emits the following events:\n * cancelled, emitted when the action should not be performed;\n * accepted, emitted when the action should be performed;\n *\n * The caller should close this dialog after receiving any of the two events.\n */\nconst ConfirmModal = {\n components: {\n DialogModal\n },\n props: {\n title: {\n type: String\n },\n cancelText: {\n type: String\n },\n confirmText: {\n type: String\n }\n },\n computed: {\n },\n methods: {\n onCancel () {\n this.$emit('cancelled')\n },\n onAccept () {\n this.$emit('accepted')\n }\n }\n}\n\nexport default ConfirmModal\n","import { render } from \"./confirm_modal.vue?vue&type=template&id=c74bcd96\"\nimport script from \"./confirm_modal.js?vue&type=script&lang=js\"\nexport * from \"./confirm_modal.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <dialog-modal\n v-body-scroll-lock=\"true\"\n class=\"confirm-modal\"\n :on-cancel=\"onCancel\"\n >\n <template #header>\n <span v-text=\"title\" />\n </template>\n\n <slot />\n\n <template #footer>\n <button\n class=\"btn button-default\"\n @click.prevent=\"onAccept\"\n v-text=\"confirmText\"\n />\n\n <button\n class=\"btn button-default\"\n @click.prevent=\"onCancel\"\n v-text=\"cancelText\"\n />\n </template>\n </dialog-modal>\n</template>\n\n<script src=\"./confirm_modal.js\"></script>\n","<template>\n <span\n :class=\"{ 'dark-overlay': darkOverlay }\"\n @click.self.stop=\"onCancel()\"\n >\n <div\n class=\"dialog-modal panel panel-default\"\n @click.stop=\"\"\n >\n <div class=\"panel-heading dialog-modal-heading\">\n <div class=\"title\">\n <slot name=\"header\" />\n </div>\n </div>\n <div class=\"dialog-modal-content\">\n <slot name=\"default\" />\n </div>\n <div class=\"dialog-modal-footer user-interactions panel-footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </span>\n</template>\n\n<script src=\"./dialog_modal.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n// TODO: unify with other modals.\n.dark-overlay {\n &::before {\n bottom: 0;\n content: \" \";\n display: block;\n cursor: default;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n background: rgb(27 31 35 / 50%);\n z-index: 2000;\n }\n}\n\n.dialog-modal.panel {\n top: 0;\n left: 50%;\n max-height: 80vh;\n max-width: 90vw;\n margin: 15vh auto;\n position: fixed;\n transform: translateX(-50%);\n z-index: 2001;\n cursor: default;\n display: block;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .dialog-modal-heading {\n .title {\n text-align: center;\n }\n }\n\n .dialog-modal-content {\n margin: 0;\n padding: 1rem;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n white-space: normal;\n }\n\n .dialog-modal-footer {\n margin: 0;\n padding: 0.5em;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n display: flex;\n justify-content: flex-end;\n\n button {\n width: auto;\n margin-left: 0.5rem;\n }\n }\n}\n\n</style>\n","const DialogModal = {\n props: {\n darkOverlay: {\n default: true,\n type: Boolean\n },\n onCancel: {\n default: () => {},\n type: Function\n }\n }\n}\n\nexport default DialogModal\n","import { render } from \"./dialog_modal.vue?vue&type=template&id=5b856fbc\"\nimport script from \"./dialog_modal.js?vue&type=script&lang=js\"\nexport * from \"./dialog_modal.js?vue&type=script&lang=js\"\n\nimport \"./dialog_modal.vue?vue&type=style&index=0&id=5b856fbc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n ref=\"root\"\n class=\"emoji-input\"\n :class=\"{ 'with-picker': !hideEmojiButton }\"\n >\n <slot\n :id=\"'textbox-' + randomSeed\"\n :aria-owns=\"suggestionListId\"\n aria-autocomplete=\"both\"\n :aria-expanded=\"showSuggestions\"\n :aria-activedescendant=\"(!showSuggestions || highlighted === -1) ? '' : suggestionItemId(highlighted)\"\n />\n <!-- TODO: make the 'x' disappear if at the end maybe? -->\n <div\n ref=\"hiddenOverlay\"\n class=\"hidden-overlay\"\n :style=\"overlayStyle\"\n :aria-hidden=\"true\"\n >\n <span>{{ preText }}</span>\n <span\n ref=\"hiddenOverlayCaret\"\n class=\"caret\"\n >x</span>\n <span>{{ postText }}</span>\n </div>\n <screen-reader-notice\n ref=\"screenReaderNotice\"\n aria-live=\"assertive\"\n />\n <template v-if=\"enableEmojiPicker\">\n <button\n v-if=\"!hideEmojiButton\"\n class=\"button-unstyled emoji-picker-icon\"\n type=\"button\"\n :title=\"$t('emoji.add_emoji')\"\n @click.prevent=\"togglePicker\"\n >\n <FAIcon :icon=\"['far', 'smile-beam']\" />\n </button>\n <EmojiPicker\n v-if=\"enableEmojiPicker\"\n ref=\"picker\"\n :enable-sticker-picker=\"enableStickerPicker\"\n class=\"emoji-picker-panel\"\n @emoji=\"insert\"\n @sticker-uploaded=\"onStickerUploaded\"\n @sticker-upload-failed=\"onStickerUploadFailed\"\n @show=\"onPickerShown\"\n @close=\"onPickerClosed\"\n />\n </template>\n <Popover\n ref=\"suggestorPopover\"\n class=\"autocomplete-panel\"\n placement=\"bottom\"\n :trigger-attrs=\"{ 'aria-hidden': true }\"\n >\n <template #content>\n <div\n :id=\"suggestionListId\"\n ref=\"panel-body\"\n class=\"autocomplete-panel-body\"\n role=\"listbox\"\n >\n <div\n v-for=\"(suggestion, index) in suggestions\"\n :id=\"suggestionItemId(index)\"\n :key=\"index\"\n class=\"autocomplete-item\"\n role=\"option\"\n :class=\"{ highlighted: index === highlighted }\"\n :aria-label=\"autoCompleteItemLabel(suggestion)\"\n :aria-selected=\"index === highlighted\"\n @click.stop.prevent=\"onClick($event, suggestion)\"\n >\n <span class=\"image\">\n <img\n v-if=\"suggestion.img\"\n :src=\"suggestion.img\"\n >\n <span v-else>{{ suggestion.replacement }}</span>\n </span>\n <div class=\"label\">\n <span\n v-if=\"suggestion.user\"\n class=\"displayText\"\n >\n {{ suggestion.displayText }}<UnicodeDomainIndicator\n :user=\"suggestion.user\"\n :at=\"false\"\n />\n </span>\n <span\n v-if=\"!suggestion.user\"\n class=\"displayText\"\n >\n {{ maybeLocalizedEmojiName(suggestion) }}\n </span>\n <span class=\"detailText\">{{ suggestion.detailText }}</span>\n </div>\n </div>\n </div>\n </template>\n </Popover>\n </div>\n</template>\n\n<script src=\"./emoji_input.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.emoji-input {\n display: flex;\n flex-direction: column;\n position: relative;\n\n .emoji-picker-icon {\n position: absolute;\n top: 0;\n right: 0;\n margin: 0.2em 0.25em;\n font-size: 1.3em;\n cursor: pointer;\n line-height: 24px;\n\n &:hover i {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .emoji-picker-panel {\n position: absolute;\n z-index: 20;\n margin-top: 2px;\n\n &.hide {\n display: none;\n }\n }\n\n input,\n textarea {\n flex: 1 0 auto;\n }\n\n &.with-picker input {\n padding-right: 30px;\n }\n\n .hidden-overlay {\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n overflow: hidden;\n\n /* DEBUG STUFF */\n color: red;\n\n /* set opacity to non-zero to see the overlay */\n\n .caret {\n width: 0;\n margin-right: calc(-1ch - 1px);\n border: 1px solid red;\n }\n }\n}\n\n.autocomplete {\n &-panel {\n position: absolute;\n }\n\n &-item {\n display: flex;\n cursor: pointer;\n padding: 0.2em 0.4em;\n border-bottom: 1px solid rgb(0 0 0 / 40%);\n height: 32px;\n\n .image {\n width: 32px;\n height: 32px;\n line-height: 32px;\n text-align: center;\n font-size: 32px;\n margin-right: 4px;\n\n img {\n width: 32px;\n height: 32px;\n object-fit: contain;\n }\n }\n\n .label {\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.1em 0 0.2em;\n\n .displayText {\n line-height: 1.5;\n }\n\n .detailText {\n font-size: 9px;\n line-height: 9px;\n }\n }\n\n &.highlighted {\n background-color: $fallback--fg;\n background-color: var(--selectedMenuPopover, $fallback--fg);\n color: var(--selectedMenuPopoverText, $fallback--text);\n\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n</style>\n","import { reduce, find } from 'lodash'\n\nexport const replaceWord = (str, toReplace, replacement) => {\n return str.slice(0, toReplace.start) + replacement + str.slice(toReplace.end)\n}\n\nexport const wordAtPosition = (str, pos) => {\n const words = splitByWhitespaceBoundary(str)\n const wordsWithPosition = addPositionToWords(words)\n\n return find(wordsWithPosition, ({ start, end }) => start <= pos && end > pos)\n}\n\nexport const addPositionToWords = (words) => {\n return reduce(words, (result, word) => {\n const data = {\n word,\n start: 0,\n end: word.length\n }\n\n if (result.length > 0) {\n const previous = result.pop()\n\n data.start += previous.end\n data.end += previous.end\n\n result.push(previous)\n }\n\n result.push(data)\n\n return result\n }, [])\n}\n\nexport const splitByWhitespaceBoundary = (str) => {\n const result = []\n let currentWord = ''\n for (let i = 0; i < str.length; i++) {\n const currentChar = str[i]\n // Starting a new word\n if (!currentWord) {\n currentWord = currentChar\n continue\n }\n // current character is whitespace while word isn't, or vice versa:\n // add our current word to results, start over the current word.\n if (!!currentChar.trim() !== !!currentWord.trim()) {\n result.push(currentWord)\n currentWord = currentChar\n continue\n }\n currentWord += currentChar\n }\n // Add the last word we were working on\n if (currentWord) {\n result.push(currentWord)\n }\n return result\n}\n\nconst completion = {\n wordAtPosition,\n addPositionToWords,\n splitByWhitespaceBoundary,\n replaceWord\n}\n\nexport default completion\n","<template>\n <Popover\n ref=\"popover\"\n trigger=\"click\"\n popover-class=\"emoji-picker popover-default\"\n :trigger-attrs=\"{ 'aria-hidden': true }\"\n @show=\"onPopoverShown\"\n @close=\"onPopoverClosed\"\n >\n <template #content>\n <div class=\"heading\">\n <span\n ref=\"header\"\n class=\"emoji-tabs\"\n >\n <span\n v-for=\"group in filteredEmojiGroups\"\n :ref=\"setGroupRef('group-header-' + group.id)\"\n :key=\"group.id\"\n class=\"emoji-tabs-item\"\n :class=\"{\n active: activeGroupView === group.id\n }\"\n :title=\"group.text\"\n @click.prevent=\"highlight(group.id)\"\n >\n <span\n v-if=\"group.image\"\n class=\"emoji-picker-header-image\"\n >\n <still-image\n :alt=\"group.text\"\n :src=\"group.image\"\n />\n </span>\n <FAIcon\n v-else\n :icon=\"group.icon\"\n fixed-width\n />\n </span>\n </span>\n <span\n v-if=\"stickerPickerEnabled\"\n class=\"additional-tabs\"\n >\n <span\n class=\"stickers-tab-icon additional-tabs-item\"\n :class=\"{active: showingStickers}\"\n :title=\"$t('emoji.stickers')\"\n @click.prevent=\"toggleStickers\"\n >\n <FAIcon\n icon=\"sticky-note\"\n fixed-width\n />\n </span>\n </span>\n </div>\n <div\n v-if=\"contentLoaded\"\n class=\"content\"\n >\n <div\n class=\"emoji-content\"\n :class=\"{hidden: showingStickers}\"\n >\n <div class=\"emoji-search\">\n <input\n ref=\"search\"\n v-model=\"keyword\"\n type=\"text\"\n class=\"form-control\"\n :placeholder=\"$t('emoji.search_emoji')\"\n @input=\"$event.target.composing = false\"\n >\n </div>\n <DynamicScroller\n ref=\"emoji-groups\"\n class=\"emoji-groups\"\n :class=\"groupsScrolledClass\"\n :min-item-size=\"minItemSize\"\n :items=\"emojiItems\"\n :emit-update=\"true\"\n @update=\"onScroll\"\n @visible=\"recalculateItemPerRow\"\n @resize=\"recalculateItemPerRow\"\n >\n <template #default=\"{ item: group, index, active }\">\n <DynamicScrollerItem\n :ref=\"setGroupRef('group-' + group.id)\"\n :item=\"group\"\n :active=\"active\"\n :data-index=\"index\"\n :size-dependencies=\"[group.emojis.length]\"\n >\n <div\n class=\"emoji-group\"\n >\n <h6\n v-if=\"group.isFirstRow\"\n class=\"emoji-group-title\"\n >\n {{ group.text }}\n </h6>\n <span\n v-for=\"emoji in group.emojis\"\n :key=\"group.id + emoji.displayText\"\n :title=\"maybeLocalizedEmojiName(emoji)\"\n class=\"emoji-item\"\n @click.stop.prevent=\"onEmoji(emoji)\"\n >\n <span\n v-if=\"!emoji.imageUrl\"\n class=\"emoji-picker-emoji -unicode\"\n >{{ emoji.replacement }}</span>\n <still-image\n v-else\n class=\"emoji-picker-emoji -custom\"\n loading=\"lazy\"\n :src=\"emoji.imageUrl\"\n :data-emoji-name=\"group.id + emoji.displayText\"\n />\n </span>\n </div>\n </DynamicScrollerItem>\n </template>\n </DynamicScroller>\n <div class=\"keep-open\">\n <Checkbox v-model=\"keepOpen\">\n {{ $t('emoji.keep_open') }}\n </Checkbox>\n </div>\n </div>\n <div\n v-if=\"showingStickers\"\n class=\"stickers-content\"\n >\n <sticker-picker\n @uploaded=\"onStickerUploaded\"\n @upload-failed=\"onStickerUploadFailed\"\n />\n </div>\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./emoji_picker.js\"></script>\n<style lang=\"scss\" src=\"./emoji_picker.scss\"></style>\n","import { defineAsyncComponent } from 'vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Popover from 'src/components/popover/popover.vue'\nimport StillImage from '../still-image/still-image.vue'\nimport { ensureFinalFallback } from '../../i18n/languages.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBoxOpen,\n faStickyNote,\n faSmileBeam,\n faSmile,\n faUser,\n faPaw,\n faIceCream,\n faBus,\n faBasketballBall,\n faLightbulb,\n faCode,\n faFlag\n} from '@fortawesome/free-solid-svg-icons'\nimport { debounce, trim, chunk } from 'lodash'\n\nlibrary.add(\n faBoxOpen,\n faStickyNote,\n faSmileBeam,\n faSmile,\n faUser,\n faPaw,\n faIceCream,\n faBus,\n faBasketballBall,\n faLightbulb,\n faCode,\n faFlag\n)\n\nconst UNICODE_EMOJI_GROUP_ICON = {\n 'smileys-and-emotion': 'smile',\n 'people-and-body': 'user',\n 'animals-and-nature': 'paw',\n 'food-and-drink': 'ice-cream',\n 'travel-and-places': 'bus',\n activities: 'basketball-ball',\n objects: 'lightbulb',\n symbols: 'code',\n flags: 'flag'\n}\n\nconst maybeLocalizedKeywords = (emoji, languages, nameLocalizer) => {\n const res = [emoji.displayText, nameLocalizer(emoji)]\n if (emoji.annotations) {\n languages.forEach(lang => {\n const keywords = emoji.annotations[lang]?.keywords || []\n const name = emoji.annotations[lang]?.name\n res.push(...(keywords.concat([name]).filter(k => k)))\n })\n }\n return res\n}\n\nconst filterByKeyword = (list, keyword = '', languages, nameLocalizer) => {\n if (keyword === '') return list\n\n const keywordLowercase = keyword.toLowerCase()\n const orderedEmojiList = []\n for (const emoji of list) {\n const indices = maybeLocalizedKeywords(emoji, languages, nameLocalizer)\n .map(k => k.toLowerCase().indexOf(keywordLowercase))\n .filter(k => k > -1)\n\n const indexOfKeyword = indices.length ? Math.min(...indices) : -1\n\n if (indexOfKeyword > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n orderedEmojiList[indexOfKeyword] = []\n }\n orderedEmojiList[indexOfKeyword].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n}\n\nconst getOffset = (elem) => {\n const style = elem.style.transform\n const res = /translateY\\((\\d+)px\\)/.exec(style)\n if (!res) { return 0 }\n return res[1]\n}\n\nconst toHeaderId = id => {\n return id.replace(/^row-\\d+-/, '')\n}\n\nconst EmojiPicker = {\n props: {\n enableStickerPicker: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n keyword: '',\n activeGroup: 'custom',\n showingStickers: false,\n groupsScrolledClass: 'scrolled-top',\n keepOpen: false,\n customEmojiTimeout: null,\n // Lazy-load only after the first time `showing` becomes true.\n contentLoaded: false,\n groupRefs: {},\n emojiRefs: {},\n filteredEmojiGroups: [],\n width: 0\n }\n },\n components: {\n StickerPicker: defineAsyncComponent(() => import('../sticker_picker/sticker_picker.vue')),\n Checkbox,\n StillImage,\n Popover\n },\n methods: {\n showPicker () {\n this.$refs.popover.showPopover()\n this.onShowing()\n },\n hidePicker () {\n this.$refs.popover.hidePopover()\n },\n setAnchorEl (el) {\n this.$refs.popover.setAnchorEl(el)\n },\n setGroupRef (name) {\n return el => { this.groupRefs[name] = el }\n },\n onPopoverShown () {\n this.$emit('show')\n },\n onPopoverClosed () {\n this.$emit('close')\n },\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-failed', e)\n },\n onEmoji (emoji) {\n const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n if (!this.keepOpen) {\n this.$refs.popover.hidePopover()\n }\n this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n },\n onScroll (startIndex, endIndex, visibleStartIndex, visibleEndIndex) {\n const target = this.$refs['emoji-groups'].$el\n this.scrolledGroup(target, visibleStartIndex, visibleEndIndex)\n },\n scrolledGroup (target, start, end) {\n const top = target.scrollTop + 5\n this.$nextTick(() => {\n this.emojiItems.slice(start, end + 1).forEach(group => {\n const headerId = toHeaderId(group.id)\n const ref = this.groupRefs['group-' + group.id]\n if (!ref) { return }\n const elem = ref.$el.parentElement\n if (!elem) { return }\n if (elem && getOffset(elem) <= top) {\n this.activeGroup = headerId\n }\n })\n this.scrollHeader()\n })\n },\n scrollHeader () {\n // Scroll the active tab's header into view\n const headerRef = this.groupRefs['group-header-' + this.activeGroup]\n const left = headerRef.offsetLeft\n const right = left + headerRef.offsetWidth\n const headerCont = this.$refs.header\n const currentScroll = headerCont.scrollLeft\n const currentScrollRight = currentScroll + headerCont.clientWidth\n const setScroll = s => { headerCont.scrollLeft = s }\n\n const margin = 7 // .emoji-tabs-item: padding\n if (left - margin < currentScroll) {\n setScroll(left - margin)\n } else if (right + margin > currentScrollRight) {\n setScroll(right + margin - headerCont.clientWidth)\n }\n },\n highlight (groupId) {\n this.setShowStickers(false)\n const indexInList = this.emojiItems.findIndex(k => k.id === groupId)\n this.$refs['emoji-groups'].scrollToItem(indexInList)\n },\n updateScrolledClass (target) {\n if (target.scrollTop <= 5) {\n this.groupsScrolledClass = 'scrolled-top'\n } else if (target.scrollTop >= target.scrollTopMax - 5) {\n this.groupsScrolledClass = 'scrolled-bottom'\n } else {\n this.groupsScrolledClass = 'scrolled-middle'\n }\n },\n toggleStickers () {\n this.showingStickers = !this.showingStickers\n },\n setShowStickers (value) {\n this.showingStickers = value\n },\n filterByKeyword (list, keyword) {\n return filterByKeyword(list, keyword, this.languages, this.maybeLocalizedEmojiName)\n },\n onShowing () {\n const oldContentLoaded = this.contentLoaded\n this.recalculateItemPerRow()\n this.$nextTick(() => {\n this.$refs.search.focus()\n })\n this.contentLoaded = true\n this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n if (!oldContentLoaded) {\n this.$nextTick(() => {\n if (this.defaultGroup) {\n this.highlight(this.defaultGroup)\n }\n })\n }\n },\n getFilteredEmojiGroups () {\n return this.allEmojiGroups\n .map(group => ({\n ...group,\n emojis: this.filterByKeyword(group.emojis, trim(this.keyword))\n }))\n .filter(group => group.emojis.length > 0)\n },\n recalculateItemPerRow () {\n this.$nextTick(() => {\n if (!this.$refs['emoji-groups']) {\n return\n }\n this.width = this.$refs['emoji-groups'].$el.clientWidth\n })\n }\n },\n watch: {\n keyword () {\n this.onScroll()\n this.debouncedHandleKeywordChange()\n },\n allCustomGroups () {\n this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n }\n },\n computed: {\n minItemSize () {\n return this.emojiHeight\n },\n emojiHeight () {\n return 32 + 4\n },\n emojiWidth () {\n return 32 + 4\n },\n itemPerRow () {\n return this.width ? Math.floor(this.width / this.emojiWidth - 1) : 6\n },\n activeGroupView () {\n return this.showingStickers ? '' : this.activeGroup\n },\n stickersAvailable () {\n if (this.$store.state.instance.stickers) {\n return this.$store.state.instance.stickers.length > 0\n }\n return 0\n },\n allCustomGroups () {\n const emojis = this.$store.getters.groupedCustomEmojis\n if (emojis.unpacked) {\n emojis.unpacked.text = this.$t('emoji.unpacked')\n }\n return emojis\n },\n defaultGroup () {\n return Object.keys(this.allCustomGroups)[0]\n },\n unicodeEmojiGroups () {\n return this.$store.getters.standardEmojiGroupList.map(group => ({\n id: `standard-${group.id}`,\n text: this.$t(`emoji.unicode_groups.${group.id}`),\n icon: UNICODE_EMOJI_GROUP_ICON[group.id],\n emojis: group.emojis\n }))\n },\n allEmojiGroups () {\n return Object.entries(this.allCustomGroups)\n .map(([_, v]) => v)\n .concat(this.unicodeEmojiGroups)\n },\n stickerPickerEnabled () {\n return (this.$store.state.instance.stickers || []).length !== 0\n },\n debouncedHandleKeywordChange () {\n return debounce(() => {\n this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n }, 500)\n },\n emojiItems () {\n return this.filteredEmojiGroups.map(group =>\n chunk(group.emojis, this.itemPerRow)\n .map((items, index) => ({\n ...group,\n id: index === 0 ? group.id : `row-${index}-${group.id}`,\n emojis: items,\n isFirstRow: index === 0\n })))\n .reduce((a, c) => a.concat(c), [])\n },\n languages () {\n return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)\n },\n maybeLocalizedEmojiName () {\n return emoji => {\n if (!emoji.annotations) {\n return emoji.displayText\n }\n\n if (emoji.displayTextI18n) {\n return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)\n }\n\n for (const lang of this.languages) {\n if (emoji.annotations[lang]?.name) {\n return emoji.annotations[lang].name\n }\n }\n\n return emoji.displayText\n }\n }\n }\n}\n\nexport default EmojiPicker\n","import { render } from \"./emoji_picker.vue?vue&type=template&id=22e1493a\"\nimport script from \"./emoji_picker.js?vue&type=script&lang=js\"\nexport * from \"./emoji_picker.js?vue&type=script&lang=js\"\n\nimport \"./emoji_picker.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const ScreenReaderNotice = {\n props: {\n ariaLive: {\n type: String,\n defualt: 'assertive'\n }\n },\n data () {\n return {\n currentText: ''\n }\n },\n methods: {\n announce (text) {\n this.currentText = text\n setTimeout(() => { this.currentText = '' }, 1000)\n }\n }\n}\n\nexport default ScreenReaderNotice\n","import { render } from \"./screen_reader_notice.vue?vue&type=template&id=4978e64a\"\nimport script from \"./screen_reader_notice.js?vue&type=script&lang=js\"\nexport * from \"./screen_reader_notice.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"visible-for-screenreader-only\"\n :aria-live=\"ariaLive\"\n >\n {{ currentText }}\n </div>\n</template>\n\n<script src=\"./screen_reader_notice.js\"></script>\n","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport Popover from 'src/components/popover/popover.vue'\nimport ScreenReaderNotice from 'src/components/screen_reader_notice/screen_reader_notice.vue'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { ensureFinalFallback } from '../../i18n/languages.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faSmileBeam\n)\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n * <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n emits: ['update:modelValue', 'shown'],\n props: {\n suggest: {\n /**\n * suggest: function (input: String) => Suggestion[]\n *\n * Function that takes input string which takes string (textAtCaret)\n * and returns an array of Suggestions\n *\n * Suggestion is an object containing following properties:\n * displayText: string. Main display text, what actual suggestion\n * represents (user's screen name/emoji shortcode)\n * replacement: string. Text that should replace the textAtCaret\n * detailText: string, optional. Subtitle text, providing additional info\n * if present (user's nickname)\n * imageUrl: string, optional. Image to display alongside with suggestion,\n * currently if no image is provided, replacement will be used (for\n * unicode emojis)\n *\n * TODO: make it asynchronous when adding proper server-provided user\n * suggestions\n *\n * For commonly used suggestors (emoji, users, both) use suggestor.js\n */\n required: true,\n type: Function\n },\n modelValue: {\n /**\n * Used for v-model\n */\n required: true,\n type: String\n },\n enableEmojiPicker: {\n /**\n * Enables emoji picker support, this implies that custom emoji are supported\n */\n required: false,\n type: Boolean,\n default: false\n },\n hideEmojiButton: {\n /**\n * intended to use with external picker trigger, i.e. you have a button outside\n * input that will open up the picker, see triggerShowPicker()\n */\n required: false,\n type: Boolean,\n default: false\n },\n enableStickerPicker: {\n /**\n * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n */\n required: false,\n type: Boolean,\n default: false\n },\n placement: {\n /**\n * Forces the panel to take a specific position relative to the input element.\n * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n */\n required: false,\n type: String, // 'auto', 'top', 'bottom'\n default: 'auto'\n },\n newlineOnCtrlEnter: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n randomSeed: `${Math.random()}`.replace('.', '-'),\n input: undefined,\n caretEl: undefined,\n highlighted: -1,\n caret: 0,\n focused: false,\n blurTimeout: null,\n temporarilyHideSuggestions: false,\n disableClickOutside: false,\n suggestions: [],\n overlayStyle: {},\n pickerShown: false\n }\n },\n components: {\n Popover,\n EmojiPicker,\n UnicodeDomainIndicator,\n ScreenReaderNotice\n },\n computed: {\n padEmoji () {\n return this.$store.getters.mergedConfig.padEmoji\n },\n preText () {\n return this.modelValue.slice(0, this.caret)\n },\n postText () {\n return this.modelValue.slice(this.caret)\n },\n showSuggestions () {\n return this.focused &&\n this.suggestions &&\n this.suggestions.length > 0 &&\n !this.pickerShown &&\n !this.temporarilyHideSuggestions\n },\n textAtCaret () {\n return this.wordAtCaret?.word\n },\n wordAtCaret () {\n if (this.modelValue && this.caret) {\n const word = Completion.wordAtPosition(this.modelValue, this.caret - 1) || {}\n return word\n }\n },\n languages () {\n return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)\n },\n maybeLocalizedEmojiNamesAndKeywords () {\n return emoji => {\n const names = [emoji.displayText]\n const keywords = []\n\n if (emoji.displayTextI18n) {\n names.push(this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args))\n }\n\n if (emoji.annotations) {\n this.languages.forEach(lang => {\n names.push(emoji.annotations[lang]?.name)\n\n keywords.push(...(emoji.annotations[lang]?.keywords || []))\n })\n }\n\n return {\n names: names.filter(k => k),\n keywords: keywords.filter(k => k)\n }\n }\n },\n maybeLocalizedEmojiName () {\n return emoji => {\n if (!emoji.annotations) {\n return emoji.displayText\n }\n\n if (emoji.displayTextI18n) {\n return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)\n }\n\n for (const lang of this.languages) {\n if (emoji.annotations[lang]?.name) {\n return emoji.annotations[lang].name\n }\n }\n\n return emoji.displayText\n }\n },\n onInputScroll () {\n this.$refs.hiddenOverlay.scrollTo({\n top: this.input.scrollTop,\n left: this.input.scrollLeft\n })\n },\n suggestionListId () {\n return `suggestions-${this.randomSeed}`\n },\n suggestionItemId () {\n return (index) => `suggestion-item-${index}-${this.randomSeed}`\n }\n },\n mounted () {\n const { root, hiddenOverlayCaret, suggestorPopover } = this.$refs\n const input = root.querySelector('.emoji-input > input') || root.querySelector('.emoji-input > textarea')\n if (!input) return\n this.input = input\n this.caretEl = hiddenOverlayCaret\n if (suggestorPopover.setAnchorEl) {\n suggestorPopover.setAnchorEl(this.caretEl) // unit test compat\n this.$refs.picker.setAnchorEl(this.caretEl)\n } else {\n console.warn('setAnchorEl not found, are we in a unit test?')\n }\n const style = getComputedStyle(this.input)\n this.overlayStyle.padding = style.padding\n this.overlayStyle.border = style.border\n this.overlayStyle.margin = style.margin\n this.overlayStyle.lineHeight = style.lineHeight\n this.overlayStyle.fontFamily = style.fontFamily\n this.overlayStyle.fontSize = style.fontSize\n this.overlayStyle.wordWrap = style.wordWrap\n this.overlayStyle.whiteSpace = style.whiteSpace\n this.resize()\n input.addEventListener('blur', this.onBlur)\n input.addEventListener('focus', this.onFocus)\n input.addEventListener('paste', this.onPaste)\n input.addEventListener('keyup', this.onKeyUp)\n input.addEventListener('keydown', this.onKeyDown)\n input.addEventListener('click', this.onClickInput)\n input.addEventListener('transitionend', this.onTransition)\n input.addEventListener('input', this.onInput)\n input.addEventListener('scroll', this.onInputScroll)\n },\n unmounted () {\n const { input } = this\n if (input) {\n input.removeEventListener('blur', this.onBlur)\n input.removeEventListener('focus', this.onFocus)\n input.removeEventListener('paste', this.onPaste)\n input.removeEventListener('keyup', this.onKeyUp)\n input.removeEventListener('keydown', this.onKeyDown)\n input.removeEventListener('click', this.onClickInput)\n input.removeEventListener('transitionend', this.onTransition)\n input.removeEventListener('input', this.onInput)\n input.removeEventListener('scroll', this.onInputScroll)\n }\n },\n watch: {\n showSuggestions: function (newValue, oldValue) {\n this.$emit('shown', newValue)\n if (newValue) {\n this.$refs.suggestorPopover.showPopover()\n } else {\n this.$refs.suggestorPopover.hidePopover()\n }\n },\n textAtCaret: async function (newWord) {\n if (newWord === undefined) return\n const firstchar = newWord.charAt(0)\n if (newWord === firstchar) {\n this.suggestions = []\n return\n }\n const matchedSuggestions = await this.suggest(newWord, this.maybeLocalizedEmojiNamesAndKeywords)\n // Async: cancel if textAtCaret has changed during wait\n if (this.textAtCaret !== newWord || matchedSuggestions.length <= 0) {\n this.suggestions = []\n return\n }\n this.suggestions = take(matchedSuggestions, 5)\n .map(({ imageUrl, ...rest }) => ({\n ...rest,\n img: imageUrl || ''\n }))\n this.highlighted = -1\n this.$refs.screenReaderNotice.announce(\n this.$tc('tool_tip.autocomplete_available',\n this.suggestions.length,\n { number: this.suggestions.length }))\n }\n },\n methods: {\n triggerShowPicker () {\n this.$nextTick(() => {\n this.$refs.picker.showPicker()\n this.scrollIntoView()\n })\n // This temporarily disables \"click outside\" handler\n // since external trigger also means click originates\n // from outside, thus preventing picker from opening\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n },\n togglePicker () {\n this.input.focus()\n if (!this.pickerShown) {\n this.scrollIntoView()\n this.$refs.picker.showPicker()\n this.$refs.picker.startEmojiLoad()\n } else {\n this.$refs.picker.hidePicker()\n }\n },\n replace (replacement) {\n const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n this.$emit('update:modelValue', newValue)\n this.caret = 0\n },\n insert ({ insertion, keepOpen, surroundingSpace = true }) {\n const before = this.modelValue.substring(0, this.caret) || ''\n const after = this.modelValue.substring(this.caret) || ''\n\n /* Using a bit more smart approach to padding emojis with spaces:\n * - put a space before cursor if there isn't one already, unless we\n * are at the beginning of post or in spam mode\n * - put a space after emoji if there isn't one already unless we are\n * in spam mode\n *\n * The idea is that when you put a cursor somewhere in between sentence\n * inserting just ' :emoji: ' will add more spaces to post which might\n * break the flow/spacing, as well as the case where user ends sentence\n * with a space before adding emoji.\n *\n * Spam mode is intended for creating multi-part emojis and overall spamming\n * them, masto seem to be rendering :emoji::emoji: correctly now so why not\n */\n const isSpaceRegex = /\\s/\n const spaceBefore = (surroundingSpace && !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0) ? ' ' : ''\n const spaceAfter = (surroundingSpace && !isSpaceRegex.exec(after[0]) && this.padEmoji) ? ' ' : ''\n\n const newValue = [\n before,\n spaceBefore,\n insertion,\n spaceAfter,\n after\n ].join('')\n this.$emit('update:modelValue', newValue)\n const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n if (!keepOpen) {\n this.input.focus()\n }\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n },\n replaceText (e, suggestion) {\n const len = this.suggestions.length || 0\n if (this.textAtCaret.length === 1) { return }\n if (len > 0 || suggestion) {\n const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n const replacement = chosenSuggestion.replacement\n const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n this.$emit('update:modelValue', newValue)\n this.highlighted = 0\n const position = this.wordAtCaret.start + replacement.length\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n this.input.focus()\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n e.preventDefault()\n }\n },\n cycleBackward (e) {\n const len = this.suggestions.length || 0\n\n this.highlighted -= 1\n if (this.highlighted === -1) {\n this.input.focus()\n } else if (this.highlighted < -1) {\n this.highlighted = len - 1\n }\n if (len > 0) {\n e.preventDefault()\n }\n },\n cycleForward (e) {\n const len = this.suggestions.length || 0\n\n this.highlighted += 1\n if (this.highlighted >= len) {\n this.highlighted = -1\n this.input.focus()\n }\n if (len > 0) {\n e.preventDefault()\n }\n },\n scrollIntoView () {\n const rootRef = this.$refs.picker.$el\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n\n const scrollerBottomBorder = currentScroll + scrollerHeight\n // We check where the bottom border of root element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n // could also check top delta but there's no case for it\n const targetScroll = currentScroll + bottomDelta\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$nextTick(() => {\n const { offsetHeight } = this.input\n const { picker } = this.$refs\n const pickerBottom = picker.$el.getBoundingClientRect().bottom\n if (pickerBottom > window.innerHeight) {\n picker.$el.style.top = 'auto'\n picker.$el.style.bottom = offsetHeight + 'px'\n }\n })\n },\n onPickerShown () {\n this.pickerShown = true\n },\n onPickerClosed () {\n this.pickerShown = false\n },\n onBlur (e) {\n // Clicking on any suggestion removes focus from autocomplete,\n // preventing click handler ever executing.\n this.blurTimeout = setTimeout(() => {\n this.focused = false\n this.setCaret(e)\n }, 200)\n },\n onClick (e, suggestion) {\n this.replaceText(e, suggestion)\n },\n onFocus (e) {\n if (this.blurTimeout) {\n clearTimeout(this.blurTimeout)\n this.blurTimeout = null\n }\n\n this.focused = true\n this.setCaret(e)\n this.temporarilyHideSuggestions = false\n },\n onKeyUp (e) {\n const { key } = e\n this.setCaret(e)\n\n // Setting hider in keyUp to prevent suggestions from blinking\n // when moving away from suggested spot\n if (key === 'Escape') {\n this.temporarilyHideSuggestions = true\n } else {\n this.temporarilyHideSuggestions = false\n }\n },\n onPaste (e) {\n this.setCaret(e)\n },\n onKeyDown (e) {\n const { ctrlKey, shiftKey, key } = e\n if (this.newlineOnCtrlEnter && ctrlKey && key === 'Enter') {\n this.insert({ insertion: '\\n', surroundingSpace: false })\n // Ensure only one new line is added on macos\n e.stopPropagation()\n e.preventDefault()\n\n // Scroll the input element to the position of the cursor\n this.$nextTick(() => {\n this.input.blur()\n this.input.focus()\n })\n }\n // Disable suggestions hotkeys if suggestions are hidden\n if (!this.temporarilyHideSuggestions) {\n if (key === 'Tab') {\n if (shiftKey) {\n this.cycleBackward(e)\n } else {\n this.cycleForward(e)\n }\n }\n if (key === 'ArrowUp') {\n this.cycleBackward(e)\n } else if (key === 'ArrowDown') {\n this.cycleForward(e)\n }\n if (key === 'Enter') {\n if (!ctrlKey) {\n this.replaceText(e)\n }\n }\n }\n // Probably add optional keyboard controls for emoji picker?\n\n // Escape hides suggestions, if suggestions are hidden it\n // de-focuses the element (i.e. default browser behavior)\n if (key === 'Escape') {\n if (!this.temporarilyHideSuggestions) {\n this.input.focus()\n }\n }\n },\n onInput (e) {\n this.setCaret(e)\n this.$emit('update:modelValue', e.target.value)\n },\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-Failed', e)\n },\n setCaret ({ target: { selectionStart } }) {\n this.caret = selectionStart\n this.$nextTick(() => {\n this.$refs.suggestorPopover.updateStyles()\n })\n },\n resize () {\n },\n autoCompleteItemLabel (suggestion) {\n if (suggestion.user) {\n return suggestion.displayText + ' ' + suggestion.detailText\n } else {\n return this.maybeLocalizedEmojiName(suggestion)\n }\n }\n }\n}\n\nexport default EmojiInput\n","import { render } from \"./emoji_input.vue?vue&type=template&id=401ef83a\"\nimport script from \"./emoji_input.js?vue&type=script&lang=js\"\nexport * from \"./emoji_input.js?vue&type=script&lang=js\"\n\nimport \"./emoji_input.vue?vue&type=style&index=0&id=401ef83a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const createRuffleService = () => {\n let ruffleInstance = null\n\n const getRuffle = () => new Promise((resolve, reject) => {\n if (ruffleInstance) {\n resolve(ruffleInstance)\n return\n }\n // Ruffle needs these to be set before it's loaded\n // https://github.com/ruffle-rs/ruffle/issues/3952\n window.RufflePlayer = {}\n window.RufflePlayer.config = {\n polyfills: false,\n publicPath: '/static/ruffle'\n }\n\n // Currently it's seems like a better way of loading ruffle\n // because it needs the wasm publically accessible, but it needs path to it\n // and filename of wasm seems to be pseudo-randomly generated (is it a hash?)\n const script = document.createElement('script')\n // see webpack config, using CopyPlugin to copy it from node_modules\n // provided via ruffle-mirror\n script.src = '/static/ruffle/ruffle.js'\n script.type = 'text/javascript'\n script.onerror = (e) => { reject(e) }\n script.onabort = (e) => { reject(e) }\n script.oncancel = (e) => { reject(e) }\n script.onload = () => {\n ruffleInstance = window.RufflePlayer\n resolve(ruffleInstance)\n }\n document.body.appendChild(script)\n })\n\n return { getRuffle }\n}\n\nconst RuffleService = createRuffleService()\n\nexport default RuffleService\n","<template>\n <div class=\"Flash\">\n <div\n v-if=\"player === true || player === 'hidden'\"\n ref=\"container\"\n class=\"player\"\n :class=\"{ hidden: player === 'hidden' }\"\n />\n <button\n v-if=\"player !== true\"\n class=\"button-unstyled placeholder\"\n @click=\"openPlayer\"\n >\n <span\n v-if=\"player === 'hidden'\"\n class=\"label\"\n >\n {{ $t('general.loading') }}\n </span>\n <span\n v-if=\"player === 'error'\"\n class=\"label\"\n >\n {{ $t('general.flash_fail') }}\n </span>\n <span\n v-else\n class=\"label\"\n >\n <p>\n {{ $t('general.flash_content') }}\n </p>\n <p>\n <FAIcon icon=\"exclamation-triangle\" />\n {{ $t('general.flash_security') }}\n </p>\n </span>\n </button>\n </div>\n</template>\n\n<script src=\"./flash.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Flash {\n display: inline-block;\n width: 100%;\n height: 100%;\n position: relative;\n\n .player {\n height: 100%;\n width: 100%;\n }\n\n .placeholder {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--bg);\n color: var(--link);\n }\n\n .hider {\n top: 0;\n }\n\n .label {\n text-align: center;\n flex: 1 1 0;\n line-height: 1.2;\n white-space: normal;\n word-wrap: normal;\n }\n\n .hidden {\n display: none;\n visibility: \"hidden\";\n }\n}\n</style>\n","import RuffleService from '../../services/ruffle_service/ruffle_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faStop,\n faExclamationTriangle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faStop,\n faExclamationTriangle\n)\n\nconst Flash = {\n props: ['src'],\n data () {\n return {\n player: false, // can be true, \"hidden\", false. hidden = element exists\n loaded: false,\n ruffleInstance: null\n }\n },\n methods: {\n openPlayer () {\n if (this.player) return // prevent double-loading, or re-loading on failure\n this.player = 'hidden'\n RuffleService.getRuffle().then((ruffle) => {\n const player = ruffle.newest().createPlayer()\n player.config = {\n letterbox: 'on'\n }\n const container = this.$refs.container\n container.appendChild(player)\n player.style.width = '100%'\n player.style.height = '100%'\n player.load(this.src).then(() => {\n this.player = true\n }).catch((e) => {\n console.error('Error loading ruffle', e)\n this.player = 'error'\n })\n this.ruffleInstance = player\n this.$emit('playerOpened')\n })\n },\n closePlayer () {\n this.ruffleInstance && this.ruffleInstance.remove()\n this.player = false\n this.$emit('playerClosed')\n }\n }\n}\n\nexport default Flash\n","import { render } from \"./flash.vue?vue&type=template&id=651ce37d\"\nimport script from \"./flash.js?vue&type=script&lang=js\"\nexport * from \"./flash.js?vue&type=script&lang=js\"\n\nimport \"./flash.vue?vue&type=style&index=0&id=651ce37d&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const fetchRelationship = (attempt, userId, store) => new Promise((resolve, reject) => {\n setTimeout(() => {\n store.state.api.backendInteractor.fetchUserRelationship({ id: userId })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n return relationship\n })\n .then((relationship) => resolve([relationship.following, relationship.requested, relationship.locked, attempt]))\n .catch((e) => reject(e))\n }, 500)\n}).then(([following, sent, locked, attempt]) => {\n if (!following && !(locked && sent) && attempt <= 3) {\n // If we BE reports that we still not following that user - retry,\n // increment attempts by one\n fetchRelationship(++attempt, userId, store)\n }\n})\n\nexport const requestFollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.followUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n\n if (updated.following || (updated.locked && updated.requested)) {\n // If we get result immediately or the account is locked, just stop.\n resolve()\n return\n }\n\n // But usually we don't get result immediately, so we ask server\n // for updated user profile to confirm if we are following them\n // Sometimes it takes several tries. Sometimes we end up not following\n // user anyway, probably because they locked themselves and we\n // don't know that yet.\n // Recursive Promise, it will call itself up to 3 times.\n\n return fetchRelationship(1, updated, store)\n .then(() => {\n resolve()\n })\n })\n})\n\nexport const requestUnfollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.unfollowUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n resolve({\n updated\n })\n })\n})\n","import ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n props: ['relationship', 'user', 'labelFollowing', 'buttonClass'],\n components: {\n ConfirmModal\n },\n data () {\n return {\n inProgress: false,\n showingConfirmUnfollow: false\n }\n },\n computed: {\n shouldConfirmUnfollow () {\n return this.$store.getters.mergedConfig.modalOnUnfollow\n },\n isPressed () {\n return this.inProgress || this.relationship.following\n },\n title () {\n if (this.inProgress || this.relationship.following) {\n return this.$t('user_card.follow_unfollow')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_cancel')\n } else {\n return this.$t('user_card.follow')\n }\n },\n label () {\n if (this.inProgress) {\n return this.$t('user_card.follow_progress')\n } else if (this.relationship.following) {\n return this.labelFollowing || this.$t('user_card.following')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_sent')\n } else {\n return this.$t('user_card.follow')\n }\n },\n disabled () {\n return this.inProgress || this.user.deactivated\n }\n },\n methods: {\n showConfirmUnfollow () {\n this.showingConfirmUnfollow = true\n },\n hideConfirmUnfollow () {\n this.showingConfirmUnfollow = false\n },\n onClick () {\n this.relationship.following || this.relationship.requested ? this.unfollow() : this.follow()\n },\n follow () {\n this.inProgress = true\n requestFollow(this.relationship.id, this.$store).then(() => {\n this.inProgress = false\n })\n },\n unfollow () {\n if (this.shouldConfirmUnfollow) {\n this.showConfirmUnfollow()\n } else {\n this.doUnfollow()\n }\n },\n doUnfollow () {\n const store = this.$store\n this.inProgress = true\n requestUnfollow(this.relationship.id, store).then(() => {\n this.inProgress = false\n store.commit('removeStatus', { timeline: 'friends', userId: this.relationship.id })\n })\n\n this.hideConfirmUnfollow()\n }\n }\n}\n","import { render } from \"./follow_button.vue?vue&type=template&id=6a0717e7\"\nimport script from \"./follow_button.js?vue&type=script&lang=js\"\nexport * from \"./follow_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n class=\"btn button-default follow-button\"\n :class=\"{ toggled: isPressed }\"\n :disabled=\"disabled\"\n :title=\"title\"\n @click=\"onClick\"\n >\n {{ label }}\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmUnfollow\"\n :title=\"$t('user_card.unfollow_confirm_title')\"\n :confirm-text=\"$t('user_card.unfollow_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.unfollow_confirm_cancel_button')\"\n @accepted=\"doUnfollow\"\n @cancelled=\"hideConfirmUnfollow\"\n >\n <i18n-t\n keypath=\"user_card.unfollow_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n </button>\n</template>\n\n<script src=\"./follow_button.js\"></script>\n","<template>\n <div\n ref=\"galleryContainer\"\n class=\"Gallery\"\n :class=\"{ '-long': tooManyAttachments && hidingLong }\"\n >\n <div class=\"gallery-rows\">\n <div\n v-for=\"(row, rowIndex) in rows\"\n :key=\"rowIndex\"\n class=\"gallery-row\"\n :style=\"rowStyle(row)\"\n :class=\"{ '-audio': row.audio, '-minimal': row.minimal, '-grid': grid }\"\n >\n <div\n class=\"gallery-row-inner\"\n :class=\"{ '-grid': grid }\"\n >\n <Attachment\n v-for=\"(attachment, attachmentIndex) in row.items\"\n :key=\"attachment.id\"\n class=\"gallery-item\"\n :compact=\"compact\"\n :nsfw=\"nsfw\"\n :attachment=\"attachment\"\n :size=\"size\"\n :editable=\"editable\"\n :remove=\"removeAttachment\"\n :shift-up=\"!(attachmentIndex === 0 && rowIndex === 0) && shiftUpAttachment\"\n :shift-dn=\"!(attachmentIndex === row.items.length - 1 && rowIndex === rows.length - 1) && shiftDnAttachment\"\n :edit=\"editAttachment\"\n :description=\"descriptions && descriptions[attachment.id]\"\n :hide-description=\"size === 'small' || tooManyAttachments && hidingLong\"\n :style=\"itemStyle(attachment.id, row.items)\"\n @setMedia=\"onMedia\"\n @naturalSizeLoad=\"onNaturalSizeLoad\"\n />\n </div>\n </div>\n </div>\n <div\n v-if=\"tooManyAttachments\"\n class=\"many-attachments\"\n >\n <div class=\"many-attachments-text\">\n {{ $t(\"status.many_attachments\", { number: attachments.length }) }}\n </div>\n <div class=\"many-attachments-buttons\">\n <span\n v-if=\"!hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"toggleHidingLong(true)\"\n >\n {{ $t(\"status.collapse_attachments\") }}\n </button>\n </span>\n <span\n v-if=\"hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"toggleHidingLong(false)\"\n >\n {{ $t(\"status.show_all_attachments\") }}\n </button>\n </span>\n <span\n v-if=\"hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"openGallery\"\n >\n {{ $t(\"status.open_gallery\") }}\n </button>\n </span>\n </div>\n </div>\n </div>\n</template>\n\n<script src='./gallery.js'></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Gallery {\n .gallery-rows {\n display: flex;\n flex-direction: column;\n }\n\n .gallery-row {\n position: relative;\n height: 0;\n width: 100%;\n flex-grow: 1;\n\n .gallery-row-inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-flow: row wrap;\n align-content: stretch;\n\n .gallery-item {\n margin: 0 0.5em 0 0;\n flex-grow: 1;\n height: 100%;\n box-sizing: border-box;\n // to make failed images a bit more noticeable on chromium\n min-width: 2em;\n\n &:last-child {\n margin: 0;\n }\n }\n\n &.-grid {\n width: 100%;\n height: auto;\n position: relative;\n display: grid;\n grid-gap: 0.5em;\n grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));\n\n .gallery-item {\n margin: 0;\n height: 200px;\n }\n }\n }\n\n &.-grid,\n &.-minimal {\n height: auto;\n\n .gallery-row-inner {\n position: relative;\n }\n }\n\n &:not(:first-child) {\n margin-top: 0.5em;\n }\n }\n\n &.-long {\n .gallery-rows {\n max-height: 25em;\n overflow: hidden;\n mask:\n linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n linear-gradient(to top, white, white);\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n }\n }\n\n .many-attachments-text {\n text-align: center;\n line-height: 2;\n }\n\n .many-attachments-buttons {\n display: flex;\n }\n\n .many-attachments-button {\n display: flex;\n flex: 1;\n justify-content: center;\n line-height: 2;\n\n button {\n padding: 0 2em;\n }\n }\n}\n</style>\n","import Attachment from '../attachment/attachment.vue'\nimport { sumBy, set } from 'lodash'\n\nconst Gallery = {\n props: [\n 'attachments',\n 'compact',\n 'limitRows',\n 'descriptions',\n 'limit',\n 'nsfw',\n 'setMedia',\n 'size',\n 'editable',\n 'removeAttachment',\n 'shiftUpAttachment',\n 'shiftDnAttachment',\n 'editAttachment',\n 'grid'\n ],\n data () {\n return {\n sizes: {},\n hidingLong: true\n }\n },\n components: { Attachment },\n computed: {\n rows () {\n if (!this.attachments) {\n return []\n }\n const attachments = this.limit > 0\n ? this.attachments.slice(0, this.limit)\n : this.attachments\n if (this.size === 'hide') {\n return attachments.map(item => ({ minimal: true, items: [item] }))\n }\n const rows = this.grid\n ? [{ grid: true, items: attachments }]\n : attachments.reduce((acc, attachment, i) => {\n if (attachment.mimetype.includes('audio')) {\n return [...acc, { audio: true, items: [attachment] }, { items: [] }]\n }\n if (!(\n attachment.mimetype.includes('image') ||\n attachment.mimetype.includes('video') ||\n attachment.mimetype.includes('flash')\n )) {\n return [...acc, { minimal: true, items: [attachment] }, { items: [] }]\n }\n const maxPerRow = 3\n const attachmentsRemaining = this.attachments.length - i + 1\n const currentRow = acc[acc.length - 1].items\n currentRow.push(attachment)\n if (currentRow.length >= maxPerRow && attachmentsRemaining > maxPerRow) {\n return [...acc, { items: [] }]\n } else {\n return acc\n }\n }, [{ items: [] }]).filter(_ => _.items.length > 0)\n return rows\n },\n attachmentsDimensionalScore () {\n return this.rows.reduce((acc, row) => {\n let size = 0\n if (row.minimal) {\n size += 1 / 8\n } else if (row.audio) {\n size += 1 / 4\n } else {\n size += 1 / (row.items.length + 0.6)\n }\n return acc + size\n }, 0)\n },\n tooManyAttachments () {\n if (this.editable || this.size === 'small') {\n return false\n } else if (this.size === 'hide') {\n return this.attachments.length > 8\n } else {\n return this.attachmentsDimensionalScore > 1\n }\n }\n },\n methods: {\n onNaturalSizeLoad ({ id, width, height }) {\n set(this.sizes, id, { width, height })\n },\n rowStyle (row) {\n if (row.audio) {\n return { 'padding-bottom': '25%' } // fixed reduced height for audio\n } else if (!row.minimal && !row.grid) {\n return { 'padding-bottom': `${(100 / (row.items.length + 0.6))}%` }\n }\n },\n itemStyle (id, row) {\n const total = sumBy(row, item => this.getAspectRatio(item.id))\n return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n },\n getAspectRatio (id) {\n const size = this.sizes[id]\n return size ? size.width / size.height : 1\n },\n toggleHidingLong (event) {\n this.hidingLong = event\n },\n openGallery () {\n this.$store.dispatch('setMedia', this.attachments)\n this.$store.dispatch('setCurrentMedia', this.attachments[0])\n },\n onMedia () {\n this.$store.dispatch('setMedia', this.attachments)\n }\n }\n}\n\nexport default Gallery\n","import { render } from \"./gallery.vue?vue&type=template&id=3f62ea7c\"\nimport script from \"./gallery.js?vue&type=script&lang=js\"\nexport * from \"./gallery.js?vue&type=script&lang=js\"\n\nimport \"./gallery.vue?vue&type=style&index=0&id=3f62ea7c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"interface-language-switcher\">\n <label>\n {{ promptText }}\n </label>\n <ul class=\"setting-list\">\n <li\n v-for=\"index of controlledLanguage.keys()\"\n :key=\"index\"\n >\n <label>\n {{ index === 0 ? $t('settings.primary_language') : $tc('settings.fallback_language', index, { index }) }}\n <Select\n class=\"language-select\"\n :model-value=\"controlledLanguage[index]\"\n @update:modelValue=\"val => setLanguageAt(index, val)\"\n >\n <option\n v-for=\"lang in languages\"\n :key=\"lang.code\"\n :value=\"lang.code\"\n >\n {{ lang.name }}\n </option>\n </Select>\n </label>\n <button\n v-if=\"controlledLanguage.length > 1 && index !== 0\"\n class=\"button-default btn\"\n @click=\"() => removeLanguageAt(index)\"\n >\n {{ $t('settings.remove_language') }}\n </button>\n </li>\n <li>\n <button\n class=\"button-default btn\"\n @click=\"addLanguage\"\n >{{ $t('settings.add_language') }}</button>\n </li>\n </ul>\n </div>\n</template>\n\n<script>\nimport localeService from '../../services/locale/locale.service.js'\nimport Select from '../select/select.vue'\n\nexport default {\n components: {\n // eslint-disable-next-line vue/no-reserved-component-names\n Select\n },\n props: {\n promptText: {\n type: String,\n required: true\n },\n language: {\n type: [Array, String],\n required: true\n },\n setLanguage: {\n type: Function,\n required: true\n }\n },\n computed: {\n languages () {\n return localeService.languages\n },\n\n controlledLanguage: {\n get: function () {\n return Array.isArray(this.language) ? this.language : [this.language]\n },\n set: function (val) {\n this.setLanguage(val)\n }\n }\n },\n\n methods: {\n getLanguageName (code) {\n return localeService.getLanguageName(code)\n },\n addLanguage () {\n this.controlledLanguage = [...this.controlledLanguage, '']\n },\n setLanguageAt (index, val) {\n const lang = [...this.controlledLanguage]\n lang[index] = val\n this.controlledLanguage = lang\n },\n removeLanguageAt (index) {\n const lang = [...this.controlledLanguage]\n lang.splice(index, 1)\n this.controlledLanguage = lang\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.interface-language-switcher {\n .language-select {\n margin-right: 1em;\n }\n}\n</style>\n","import { render } from \"./interface_language_switcher.vue?vue&type=template&id=8768357e\"\nimport script from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\nexport * from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\n\nimport \"./interface_language_switcher.vue?vue&type=style&index=0&id=8768357e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <a\n class=\"link-preview-card\"\n :href=\"card.url\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n <div\n v-if=\"useImage && imageLoaded\"\n class=\"card-image\"\n >\n <img :src=\"card.image\">\n </div>\n <div class=\"card-content\">\n <span class=\"card-host faint\">\n <span\n v-if=\"censored\"\n class=\"nsfw-alert alert warning\"\n >{{ $t('status.nsfw') }}</span>\n {{ card.provider_name }}\n </span>\n <h4 class=\"card-title\">{{ card.title }}</h4>\n <p\n v-if=\"useDescription\"\n class=\"card-description\"\n >{{ card.description }}</p>\n </div>\n </a>\n </div>\n</template>\n\n<script src=\"./link-preview.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.link-preview-card {\n display: flex;\n flex-direction: row;\n cursor: pointer;\n overflow: hidden;\n margin-top: 0.5em;\n\n .card-image {\n flex-shrink: 0;\n width: 120px;\n max-width: 25%;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n }\n }\n\n .card-content {\n max-height: 100%;\n margin: 0.5em;\n display: flex;\n flex-direction: column;\n }\n\n .card-host {\n font-size: 0.85em;\n }\n\n .card-description {\n margin: 0.5em 0 0;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-word;\n line-height: 1.2em;\n // cap description at 3 lines, the 1px is to clean up some stray pixels\n // TODO: fancier fade-out at the bottom to show off that it's too long?\n max-height: calc(1.2em * 3 - 1px);\n }\n\n .nsfw-alert {\n margin: 2em 0;\n }\n\n color: $fallback--text;\n color: var(--text, $fallback--text);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n</style>\n","import { mapGetters } from 'vuex'\n\nconst LinkPreview = {\n name: 'LinkPreview',\n props: [\n 'card',\n 'size',\n 'nsfw'\n ],\n data () {\n return {\n imageLoaded: false\n }\n },\n computed: {\n useImage () {\n // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n // as it makes sure to hide the image if somehow NSFW tagged preview can\n // exist.\n return this.card.image && !this.censored && this.size !== 'hide'\n },\n censored () {\n return this.nsfw && this.hideNsfwConfig\n },\n useDescription () {\n return this.card.description && /\\S/.test(this.card.description)\n },\n hideNsfwConfig () {\n return this.mergedConfig.hideNsfw\n },\n ...mapGetters([\n 'mergedConfig'\n ])\n },\n created () {\n if (this.useImage) {\n const newImg = new Image()\n newImg.onload = () => {\n this.imageLoaded = true\n }\n newImg.src = this.card.image\n }\n }\n}\n\nexport default LinkPreview\n","import { render } from \"./link-preview.vue?vue&type=template&id=5bb8ccfc\"\nimport script from \"./link-preview.js?vue&type=script&lang=js\"\nexport * from \"./link-preview.js?vue&type=script&lang=js\"\n\nimport \"./link-preview.vue?vue&type=style&index=0&id=5bb8ccfc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"list\">\n <div\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"list-item\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n />\n </div>\n <div\n v-if=\"items.length === 0 && !!$slots.empty\"\n class=\"list-empty-content faint\"\n >\n <slot name=\"empty\" />\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n items: {\n type: Array,\n default: () => []\n },\n getKey: {\n type: Function,\n default: item => item.id\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.list {\n &-item:not(:last-child) {\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n\n &-empty-content {\n text-align: center;\n padding: 10px;\n }\n}\n</style>\n","import { render } from \"./list.vue?vue&type=template&id=2a928b1c\"\nimport script from \"./list.vue?vue&type=script&lang=js\"\nexport * from \"./list.vue?vue&type=script&lang=js\"\n\nimport \"./list.vue?vue&type=style&index=0&id=2a928b1c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n class=\"MentionLink\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <a\n v-if=\"!user\"\n :href=\"url\"\n class=\"original\"\n target=\"_blank\"\n v-html=\"content\"\n /><!-- eslint-enable vue/no-v-html -->\n <UserPopover\n v-else\n :user-id=\"user.id\"\n :disabled=\"!shouldShowTooltip\"\n >\n <span\n v-if=\"user\"\n class=\"new\"\n :style=\"style\"\n :class=\"classnames\"\n >\n <a\n class=\"short button-unstyled\"\n :class=\"{ '-with-tooltip': shouldShowTooltip }\"\n :href=\"url\"\n @click.prevent=\"onClick\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <UserAvatar\n v-if=\"shouldShowAvatar\"\n class=\"mention-avatar\"\n :user=\"user\"\n /><span\n class=\"shortName\"\n ><FAIcon\n v-if=\"useAtIcon\"\n size=\"sm\"\n icon=\"at\"\n class=\"at\"\n />{{ !useAtIcon ? '@' : '' }}<span\n class=\"userName\"\n v-html=\"userName\"\n /><span\n v-if=\"shouldShowFullUserName\"\n class=\"serverName\"\n :class=\"{ '-faded': shouldFadeDomain }\"\n v-html=\"'@' + serverName\"\n /><UnicodeDomainIndicator\n v-if=\"shouldShowFullUserName\"\n :user=\"user\"\n />\n </span>\n <span\n v-if=\"isYou && shouldShowYous\"\n :class=\"{ '-you': shouldBoldenYou }\"\n > {{ ' ' + $t('status.you') }}</span>\n <!-- eslint-enable vue/no-v-html -->\n </a><span\n ref=\"full\"\n class=\"full\"\n >\n <!-- eslint-disable vue/no-v-html -->\n @<span v-html=\"userName\" /><span v-html=\"'@' + serverName\" />\n <!-- eslint-enable vue/no-v-html -->\n </span>\n </span>\n </UserPopover>\n </span>\n</template>\n\n<script src=\"./mention_link.js\" />\n\n<style lang=\"scss\" src=\"./mention_link.scss\" />\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters, mapState } from 'vuex'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport { defineAsyncComponent } from 'vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAt\n)\n\nconst MentionLink = {\n name: 'MentionLink',\n components: {\n UserAvatar,\n UnicodeDomainIndicator,\n UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n },\n props: {\n url: {\n required: true,\n type: String\n },\n content: {\n required: true,\n type: String\n },\n userId: {\n required: false,\n type: String\n },\n userScreenName: {\n required: false,\n type: String\n }\n },\n data () {\n return {\n hasSelection: false\n }\n },\n methods: {\n onClick () {\n if (this.shouldShowTooltip) return\n const link = generateProfileLink(\n this.userId || this.user.id,\n this.userScreenName || this.user.screen_name\n )\n this.$router.push(link)\n },\n handleSelection () {\n this.hasSelection = document.getSelection().containsNode(this.$refs.full, true)\n }\n },\n mounted () {\n document.addEventListener('selectionchange', this.handleSelection)\n },\n unmounted () {\n document.removeEventListener('selectionchange', this.handleSelection)\n },\n computed: {\n user () {\n return this.url && this.$store && this.$store.getters.findUserByUrl(this.url)\n },\n isYou () {\n // FIXME why user !== currentUser???\n return this.user && this.user.id === this.currentUser.id\n },\n userName () {\n return this.user && this.userNameFullUi.split('@')[0]\n },\n serverName () {\n // XXX assumed that domain does not contain @\n return this.user && (this.userNameFullUi.split('@')[1] || this.$store.getters.instanceDomain)\n },\n userNameFull () {\n return this.user && this.user.screen_name\n },\n userNameFullUi () {\n return this.user && this.user.screen_name_ui\n },\n highlight () {\n return this.user && this.mergedConfig.highlight[this.user.screen_name]\n },\n highlightType () {\n return this.highlight && ('-' + this.highlight.type)\n },\n highlightClass () {\n if (this.highlight) return highlightClass(this.user)\n },\n style () {\n if (this.highlight) {\n const {\n backgroundColor,\n backgroundPosition,\n backgroundImage,\n ...rest\n } = highlightStyle(this.highlight)\n return rest\n }\n },\n classnames () {\n return [\n {\n '-you': this.isYou && this.shouldBoldenYou,\n '-highlighted': this.highlight,\n '-has-selection': this.hasSelection\n },\n this.highlightType\n ]\n },\n useAtIcon () {\n return this.mergedConfig.useAtIcon\n },\n isRemote () {\n return this.userName !== this.userNameFull\n },\n shouldShowFullUserName () {\n const conf = this.mergedConfig.mentionLinkDisplay\n if (conf === 'short') {\n return false\n } else if (conf === 'full') {\n return true\n } else { // full_for_remote\n return this.isRemote\n }\n },\n shouldShowTooltip () {\n return this.mergedConfig.mentionLinkShowTooltip\n },\n shouldShowAvatar () {\n return this.mergedConfig.mentionLinkShowAvatar\n },\n shouldShowYous () {\n return this.mergedConfig.mentionLinkShowYous\n },\n shouldBoldenYou () {\n return this.mergedConfig.mentionLinkBoldenYou\n },\n shouldFadeDomain () {\n return this.mergedConfig.mentionLinkFadeDomain\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n }\n}\n\nexport default MentionLink\n","import { render } from \"./mention_link.vue?vue&type=template&id=11ab9a6c\"\nimport script from \"./mention_link.js?vue&type=script&lang=js\"\nexport * from \"./mention_link.js?vue&type=script&lang=js\"\n\nimport \"./mention_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span class=\"MentionsLine\">\n <MentionLink\n v-for=\"mention in mentionsComputed\"\n :key=\"mention.index\"\n class=\"mention-link\"\n :content=\"mention.content\"\n :url=\"mention.url\"\n /><span\n v-if=\"manyMentions\"\n class=\"extraMentions\"\n >\n <span\n v-if=\"expanded\"\n class=\"fullExtraMentions\"\n >{{ ' ' }}<MentionLink\n v-for=\"mention in extraMentions\"\n :key=\"mention.index\"\n class=\"mention-link\"\n :content=\"mention.content\"\n :url=\"mention.url\"\n />\n </span><button\n v-if=\"!expanded\"\n class=\"button-unstyled showMoreLess\"\n @click=\"toggleShowMore\"\n >\n {{ $t('status.plus_more', { number: extraMentions.length }) }}\n </button><button\n v-if=\"expanded\"\n class=\"button-unstyled showMoreLess\"\n @click=\"toggleShowMore\"\n >\n {{ $t('general.show_less') }}\n </button>\n </span>\n </span>\n</template>\n<script src=\"./mentions_line.js\"></script>\n<style lang=\"scss\" src=\"./mentions_line.scss\" />\n","import MentionLink from 'src/components/mention_link/mention_link.vue'\nimport { mapGetters } from 'vuex'\n\nexport const MENTIONS_LIMIT = 5\n\nconst MentionsLine = {\n name: 'MentionsLine',\n props: {\n mentions: {\n required: true,\n type: Array\n }\n },\n data: () => ({ expanded: false }),\n components: {\n MentionLink\n },\n computed: {\n mentionsComputed () {\n return this.mentions.slice(0, MENTIONS_LIMIT)\n },\n extraMentions () {\n return this.mentions.slice(MENTIONS_LIMIT)\n },\n manyMentions () {\n return this.extraMentions.length > 0\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n toggleShowMore () {\n this.expanded = !this.expanded\n }\n }\n}\n\nexport default MentionsLine\n","import { render } from \"./mentions_line.vue?vue&type=template&id=0e41a1da\"\nimport script from \"./mentions_line.js?vue&type=script&lang=js\"\nexport * from \"./mentions_line.js?vue&type=script&lang=js\"\n\nimport \"./mentions_line.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-show=\"isOpen\"\n v-body-scroll-lock=\"isOpen && !noBackground\"\n class=\"modal-view\"\n :class=\"classes\"\n @click.self=\"$emit('backdropClicked')\"\n >\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n provide: {\n popoversZLayer: 'modals'\n },\n props: {\n isOpen: {\n type: Boolean,\n default: true\n },\n noBackground: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n classes () {\n return {\n 'modal-background': !this.noBackground,\n open: this.isOpen\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n z-index: var(--ZI_modals);\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgb(0 0 0 / 50%);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgb(0 0 0 / 0%);\n }\n\n to {\n background-color: rgb(0 0 0 / 50%);\n }\n}\n</style>\n","import { render } from \"./modal.vue?vue&type=template&id=e92832fc\"\nimport script from \"./modal.vue?vue&type=script&lang=js\"\nexport * from \"./modal.vue?vue&type=script&lang=js\"\n\nimport \"./modal.vue?vue&type=style&index=0&id=e92832fc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <teleport\n :disabled=\"minimalMode || disableTeleport\"\n :to=\"teleportTarget\"\n >\n <component\n :is=\"noHeading ? 'div' : 'aside'\"\n ref=\"root\"\n :class=\"{ minimal: minimalMode }\"\n class=\"Notifications\"\n >\n <div :class=\"mainClass\">\n <div\n v-if=\"!noHeading\"\n class=\"notifications-heading panel-heading -sticky\"\n >\n <div class=\"title\">\n {{ $t('notifications.notifications') }}\n <span\n v-if=\"unseenCount\"\n class=\"badge badge-notification unseen-count\"\n >{{ unseenCount }}</span>\n </div>\n <div\n v-if=\"showScrollTop\"\n class=\"rightside-button\"\n >\n <button\n class=\"button-unstyled scroll-to-top-button\"\n type=\"button\"\n :title=\"$t('general.scroll_to_top')\"\n @click=\"scrollToTop\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon icon=\"arrow-up\" />\n <FAIcon\n icon=\"minus\"\n transform=\"up-7\"\n />\n </FALayers>\n </button>\n </div>\n <button\n v-if=\"unseenCount\"\n class=\"button-default read-button\"\n type=\"button\"\n @click.prevent=\"markAsSeen\"\n >\n {{ $t('notifications.read') }}\n </button>\n <NotificationFilters class=\"rightside-button\" />\n </div>\n <div\n class=\"panel-body\"\n role=\"feed\"\n >\n <div\n v-for=\"notification in notificationsToDisplay\"\n :key=\"notification.id\"\n role=\"listitem\"\n class=\"notification\"\n :class=\"{unseen: !minimalMode && !notification.seen}\"\n >\n <div class=\"notification-overlay\" />\n <notification :notification=\"notification\" />\n </div>\n </div>\n <div class=\"panel-footer\">\n <div\n v-if=\"bottomedOut\"\n class=\"new-status-notification text-center faint\"\n >\n {{ $t('notifications.no_more_notifications') }}\n </div>\n <button\n v-else-if=\"!loading\"\n class=\"button-unstyled -link -fullwidth\"\n @click.prevent=\"fetchOlderNotifications()\"\n >\n <div class=\"new-status-notification text-center\">\n {{ minimalMode ? $t('interactions.load_older') : $t('notifications.load_older') }}\n </div>\n </button>\n <div\n v-else\n class=\"new-status-notification text-center\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n </div>\n </div>\n </component>\n </teleport>\n</template>\n\n<script src=\"./notifications.js\"></script>\n<style lang=\"scss\" src=\"./notifications.scss\"></style>\n","<template>\n <article\n v-if=\"notification.type === 'mention'\"\n >\n <Status\n class=\"Notification\"\n :compact=\"true\"\n :statusoid=\"notification.status\"\n />\n </article>\n <article v-else>\n <div\n v-if=\"needMute && !unmuted\"\n class=\"Notification container -muted\"\n >\n <small>\n <user-link\n :user=\"notification.from_profile\"\n :at=\"false\"\n />\n </small>\n <button\n class=\"button-unstyled unmute\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"eye-slash\"\n />\n </button>\n </div>\n <div\n v-else\n class=\"Notification non-mention\"\n :class=\"[userClass, { highlighted: userStyle }, '-type--' + notification.type]\"\n :style=\"[ userStyle ]\"\n >\n <a\n class=\"avatar-container\"\n :href=\"$router.resolve(userProfileLink).href\"\n @click.prevent\n >\n <UserPopover\n :user-id=\"notification.from_profile.id\"\n :overlay-centers=\"true\"\n >\n <UserAvatar\n class=\"post-avatar\"\n :bot=\"botIndicator\"\n :compact=\"true\"\n :better-shadow=\"betterShadow\"\n :user=\"notification.from_profile\"\n />\n </UserPopover>\n </a>\n <div class=\"notification-right\">\n <span class=\"notification-details\">\n <div class=\"name-and-action\">\n <!-- eslint-disable vue/no-v-html -->\n <bdi v-if=\"!!notification.from_profile.name_html\">\n <RichContent\n class=\"username\"\n :title=\"'@'+notification.from_profile.screen_name_ui\"\n :html=\"notification.from_profile.name_html\"\n :emoji=\"notification.from_profile.emoji\"\n />\n </bdi>\n <!-- eslint-enable vue/no-v-html -->\n <span\n v-else\n class=\"username\"\n :title=\"'@'+notification.from_profile.screen_name_ui\"\n >\n {{ notification.from_profile.name }}\n </span>\n {{ ' ' }}\n <span v-if=\"notification.type === 'like'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"star\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.favorited_you') }}</small>\n </span>\n <span v-if=\"notification.type === 'repeat'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"retweet\"\n :title=\"$t('tool_tip.repeat')\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.repeated_you') }}</small>\n </span>\n <span v-if=\"notification.type === 'follow'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"user-plus\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.followed_you') }}</small>\n </span>\n <span v-if=\"notification.type === 'follow_request'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"user\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.follow_request') }}</small>\n </span>\n <span v-if=\"notification.type === 'move'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"suitcase-rolling\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.migrated_to') }}</small>\n </span>\n <span v-if=\"notification.type === 'pleroma:emoji_reaction'\">\n <small>\n <i18n-t\n scope=\"global\"\n keypath=\"notifications.reacted_with\"\n >\n <span class=\"emoji-reaction-emoji\">{{ notification.emoji }}</span>\n </i18n-t>\n </small>\n </span>\n <span v-if=\"notification.type === 'pleroma:report'\">\n <small>{{ $t('notifications.submitted_report') }}</small>\n </span>\n <span v-if=\"notification.type === 'poll'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"poll-h\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.poll_ended') }}</small>\n </span>\n </div>\n <div\n v-if=\"isStatusNotification\"\n class=\"timeago\"\n >\n <router-link\n v-if=\"notification.status\"\n :to=\"{ name: 'conversation', params: { id: notification.status.id } }\"\n class=\"timeago-link faint-link\"\n >\n <Timeago\n :time=\"notification.created_at\"\n :auto-update=\"240\"\n />\n </router-link>\n <button\n class=\"button-unstyled expand-icon\"\n @click.prevent=\"toggleStatusExpanded\"\n :title=\"$t('tool_tip.toggle_expand')\"\n :aria-expanded=\"statusExpanded\"\n >\n <FAIcon\n class=\"fa-scale-110\"\n fixed-width\n :icon=\"statusExpanded ? 'compress-alt' : 'expand-alt'\"\n />\n </button>\n </div>\n <div\n v-else\n class=\"timeago\"\n >\n <span class=\"faint\">\n <Timeago\n :time=\"notification.created_at\"\n :auto-update=\"240\"\n />\n </span>\n </div>\n <button\n v-if=\"needMute\"\n class=\"button-unstyled\"\n :title=\"$t('tool_tip.toggle_mute')\"\n :aria-expanded=\"!unmuted\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"eye-slash\"\n />\n </button>\n </span>\n <div\n v-if=\"notification.type === 'follow' || notification.type === 'follow_request'\"\n class=\"follow-text\"\n >\n <user-link\n class=\"follow-name\"\n :user=\"notification.from_profile\"\n />\n <div\n v-if=\"notification.type === 'follow_request'\"\n style=\"white-space: nowrap;\"\n >\n <button\n class=\"button-unstyled\"\n :title=\"$t('tool_tip.accept_follow_request')\"\n @click=\"approveUser()\"\n >\n <FAIcon\n icon=\"check\"\n class=\"fa-scale-110 fa-old-padding follow-request-accept\"\n />\n </button>\n <button\n class=\"button-unstyled\"\n :title=\"$t('tool_tip.reject_follow_request')\"\n @click=\"denyUser()\"\n >\n <FAIcon\n icon=\"times\"\n class=\"fa-scale-110 fa-old-padding follow-request-reject\"\n />\n </button>\n </div>\n </div>\n <div\n v-else-if=\"notification.type === 'move'\"\n class=\"move-text\"\n >\n <user-link\n :user=\"notification.target\"\n />\n </div>\n <Report\n v-else-if=\"notification.type === 'pleroma:report'\"\n :report-id=\"notification.report.id\"\n />\n <template v-else>\n <StatusContent\n :class=\"{ faint: !statusExpanded }\"\n :compact=\"!statusExpanded\"\n :status=\"notification.action\"\n />\n </template>\n </div>\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingApproveConfirmDialog\"\n :title=\"$t('user_card.approve_confirm_title')\"\n :confirm-text=\"$t('user_card.approve_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.approve_confirm_cancel_button')\"\n @accepted=\"doApprove\"\n @cancelled=\"hideApproveConfirmDialog\"\n >\n {{ $t('user_card.approve_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n <confirm-modal\n v-if=\"showingDenyConfirmDialog\"\n :title=\"$t('user_card.deny_confirm_title')\"\n :confirm-text=\"$t('user_card.deny_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.deny_confirm_cancel_button')\"\n @accepted=\"doDeny\"\n @cancelled=\"hideDenyConfirmDialog\"\n >\n {{ $t('user_card.deny_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n </teleport>\n </article>\n</template>\n\n<script src=\"./notification.js\"></script>\n<style src=\"./notification.scss\" lang=\"scss\"></style>\n","<template>\n <div class=\"Report\">\n <div class=\"reported-user\">\n <span>{{ $t('report.reported_user') }}</span>\n <router-link :to=\"generateUserProfileLink(report.acct)\">\n @{{ report.acct.screen_name }}\n </router-link>\n </div>\n <div class=\"reporter\">\n <span>{{ $t('report.reporter') }}</span>\n <router-link :to=\"generateUserProfileLink(report.actor)\">\n @{{ report.actor.screen_name }}\n </router-link>\n </div>\n <div class=\"report-state\">\n <span>{{ $t('report.state') }}</span>\n <Select\n :id=\"report-state\"\n v-model=\"state\"\n class=\"form-control\"\n >\n <option\n v-for=\"state in ['open', 'closed', 'resolved']\"\n :key=\"state\"\n :value=\"state\"\n >\n {{ $t('report.state_' + state) }}\n </option>\n </Select>\n </div>\n <RichContent\n class=\"report-content\"\n :html=\"report.content\"\n :emoji=\"[]\"\n />\n <div v-if=\"report.statuses.length\">\n <small>{{ $t('report.reported_statuses') }}</small>\n <router-link\n v-for=\"status in report.statuses\"\n :key=\"status.id\"\n :to=\"{ name: 'conversation', params: { id: status.id } }\"\n class=\"reported-status\"\n >\n <div class=\"reported-status-heading\">\n <span class=\"reported-status-name\">{{ status.user.name }}</span>\n <Timeago\n :time=\"status.created_at\"\n :auto-update=\"240\"\n class=\"faint\"\n />\n </div>\n <status-content :status=\"status\" />\n </router-link>\n </div>\n <div v-if=\"report.notes.length\">\n <small>{{ $t('report.notes') }}</small>\n <div\n v-for=\"note in report.notes\"\n :key=\"note.id\"\n class=\"note\"\n >\n <span>{{ note.content }}</span>\n <Timeago\n :time=\"note.created_at\"\n :auto-update=\"240\"\n class=\"faint\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./report.js\"></script>\n<style src=\"./report.scss\" lang=\"scss\"></style>\n","import Select from '../select/select.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst Report = {\n props: [\n 'reportId'\n ],\n components: {\n Select,\n StatusContent,\n Timeago\n },\n computed: {\n report () {\n return this.$store.state.reports.reports[this.reportId] || {}\n },\n state: {\n get: function () { return this.report.state },\n set: function (val) { this.setReportState(val) }\n }\n },\n methods: {\n generateUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n setReportState (state) {\n return this.$store.dispatch('setReportState', { id: this.report.id, state })\n }\n }\n}\n\nexport default Report\n","import { render } from \"./report.vue?vue&type=template&id=86a2fdce\"\nimport script from \"./report.js?vue&type=script&lang=js\"\nexport * from \"./report.js?vue&type=script&lang=js\"\n\nimport \"./report.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import StatusContent from '../status_content/status_content.vue'\nimport { mapState } from 'vuex'\nimport Status from '../status/status.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport Report from '../report/report.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport UserPopover from '../user_popover/user_popover.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faEyeSlash,\n faUser,\n faSuitcaseRolling,\n faExpandAlt,\n faCompressAlt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faUser,\n faEyeSlash,\n faSuitcaseRolling,\n faExpandAlt,\n faCompressAlt\n)\n\nconst Notification = {\n data () {\n return {\n statusExpanded: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n unmuted: false,\n showingApproveConfirmDialog: false,\n showingDenyConfirmDialog: false\n }\n },\n props: ['notification'],\n components: {\n StatusContent,\n UserAvatar,\n UserCard,\n Timeago,\n Status,\n Report,\n RichContent,\n UserPopover,\n UserLink,\n ConfirmModal\n },\n methods: {\n toggleStatusExpanded () {\n this.statusExpanded = !this.statusExpanded\n },\n generateUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n getUser (notification) {\n return this.$store.state.users.usersObject[notification.from_profile.id]\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n showApproveConfirmDialog () {\n this.showingApproveConfirmDialog = true\n },\n hideApproveConfirmDialog () {\n this.showingApproveConfirmDialog = false\n },\n showDenyConfirmDialog () {\n this.showingDenyConfirmDialog = true\n },\n hideDenyConfirmDialog () {\n this.showingDenyConfirmDialog = false\n },\n approveUser () {\n if (this.shouldConfirmApprove) {\n this.showApproveConfirmDialog()\n } else {\n this.doApprove()\n }\n },\n doApprove () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n this.$store.dispatch('updateNotification', {\n id: this.notification.id,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n this.hideApproveConfirmDialog()\n },\n denyUser () {\n if (this.shouldConfirmDeny) {\n this.showDenyConfirmDialog()\n } else {\n this.doDeny()\n }\n },\n doDeny () {\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n this.hideDenyConfirmDialog()\n }\n },\n computed: {\n userClass () {\n return highlightClass(this.notification.from_profile)\n },\n userStyle () {\n const highlight = this.$store.getters.mergedConfig.highlight\n const user = this.notification.from_profile\n return highlightStyle(highlight[user.screen_name])\n },\n user () {\n return this.$store.getters.findUser(this.notification.from_profile.id)\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.user)\n },\n targetUser () {\n return this.$store.getters.findUser(this.notification.target.id)\n },\n targetUserProfileLink () {\n return this.generateUserProfileLink(this.targetUser)\n },\n needMute () {\n return this.$store.getters.relationship(this.user.id).muting\n },\n isStatusNotification () {\n return isStatusNotification(this.notification.type)\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n shouldConfirmApprove () {\n return this.mergedConfig.modalOnApproveFollow\n },\n shouldConfirmDeny () {\n return this.mergedConfig.modalOnDenyFollow\n },\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n }\n}\n\nexport default Notification\n","import { render } from \"./notification.vue?vue&type=template&id=69ada7ad\"\nimport script from \"./notification.js?vue&type=script&lang=js\"\nexport * from \"./notification.js?vue&type=script&lang=js\"\n\nimport \"./notification.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"NotificationFilters\"\n placement=\"bottom\"\n :bound-to=\"{ x: 'container' }\"\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('likes')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n />{{ $t('settings.notification_visibility_likes') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('repeats')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n />{{ $t('settings.notification_visibility_repeats') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('follows')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n />{{ $t('settings.notification_visibility_follows') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('mentions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n />{{ $t('settings.notification_visibility_mentions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('emojiReactions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n />{{ $t('settings.notification_visibility_emoji_reactions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('moves')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n />{{ $t('settings.notification_visibility_moves') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('polls')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.polls }\"\n />{{ $t('settings.notification_visibility_polls') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button class=\"filter-trigger-button button-unstyled\">\n <FAIcon icon=\"filter\" />\n </button>\n </template>\n </Popover>\n</template>\n\n<script>\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFilter\n)\n\nexport default {\n components: { Popover },\n computed: {\n filters () {\n return this.$store.getters.mergedConfig.notificationVisibility\n }\n },\n methods: {\n toggleNotificationFilter (type) {\n this.$store.dispatch('setOption', {\n name: 'notificationVisibility',\n value: {\n ...this.filters,\n [type]: !this.filters[type]\n }\n })\n }\n }\n}\n</script>\n","import { render } from \"./notification_filters.vue?vue&type=template&id=0ad39446\"\nimport script from \"./notification_filters.vue?vue&type=script&lang=js\"\nexport * from \"./notification_filters.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { computed } from 'vue'\nimport { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.vue'\nimport NotificationFilters from './notification_filters.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n notificationsFromStore,\n filteredNotificationsFromStore,\n unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faArrowUp, faMinus } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faArrowUp,\n faMinus\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n components: {\n Notification,\n NotificationFilters\n },\n props: {\n // Disables panel styles, unread mark, potentially other notification-related actions\n // meant for \"Interactions\" timeline\n minimalMode: Boolean,\n // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n filterMode: Array,\n // Disable teleporting (i.e. for /users/user/notifications)\n disableTeleport: Boolean\n },\n data () {\n return {\n showScrollTop: false,\n bottomedOut: false,\n // How many seen notifications to display in the list. The more there are,\n // the heavier the page becomes. This count is increased when loading\n // older notifications, and cut back to default whenever hitting \"Read!\".\n seenToDisplayCount: DEFAULT_SEEN_TO_DISPLAY_COUNT\n }\n },\n provide () {\n return {\n popoversZLayer: computed(() => this.popoversZLayer)\n }\n },\n computed: {\n mainClass () {\n return this.minimalMode ? '' : 'panel panel-default'\n },\n notifications () {\n return notificationsFromStore(this.$store)\n },\n error () {\n return this.$store.state.statuses.notifications.error\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n filteredNotifications () {\n return filteredNotificationsFromStore(this.$store, this.filterMode)\n },\n unseenCount () {\n return this.unseenNotifications.length\n },\n unseenCountTitle () {\n return this.unseenCount + (this.unreadChatCount) + this.unreadAnnouncementCount\n },\n loading () {\n return this.$store.state.statuses.notifications.loading\n },\n noHeading () {\n const { layoutType } = this.$store.state.interface\n return this.minimalMode || layoutType === 'mobile'\n },\n teleportTarget () {\n const { layoutType } = this.$store.state.interface\n const map = {\n wide: '#notifs-column',\n mobile: '#mobile-notifications'\n }\n return map[layoutType] || '#notifs-sidebar'\n },\n popoversZLayer () {\n const { layoutType } = this.$store.state.interface\n return layoutType === 'mobile' ? 'navbar' : null\n },\n notificationsToDisplay () {\n return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n },\n noSticky () { return this.$store.getters.mergedConfig.disableStickyHeaders },\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n },\n mounted () {\n this.scrollerRef = this.$refs.root.closest('.column.-scrollable')\n if (!this.scrollerRef) {\n this.scrollerRef = this.$refs.root.closest('.mobile-notifications')\n }\n if (!this.scrollerRef) {\n this.scrollerRef = this.$refs.root.closest('.column.main')\n }\n this.scrollerRef.addEventListener('scroll', this.updateScrollPosition)\n },\n unmounted () {\n if (!this.scrollerRef) return\n this.scrollerRef.removeEventListener('scroll', this.updateScrollPosition)\n },\n watch: {\n unseenCountTitle (count) {\n if (count > 0) {\n FaviconService.drawFaviconBadge()\n this.$store.dispatch('setPageTitle', `(${count})`)\n } else {\n FaviconService.clearFaviconBadge()\n this.$store.dispatch('setPageTitle', '')\n }\n },\n teleportTarget () {\n // handle scroller change\n this.$nextTick(() => {\n this.scrollerRef.removeEventListener('scroll', this.updateScrollPosition)\n this.scrollerRef = this.$refs.root.closest('.column.-scrollable')\n if (!this.scrollerRef) {\n this.scrollerRef = this.$refs.root.closest('.mobile-notifications')\n }\n this.scrollerRef.addEventListener('scroll', this.updateScrollPosition)\n this.updateScrollPosition()\n })\n }\n },\n methods: {\n scrollToTop () {\n const scrollable = this.scrollerRef\n scrollable.scrollTo({ top: this.$refs.root.offsetTop })\n // this.$refs.root.scrollIntoView({ behavior: 'smooth', block: 'start' })\n },\n updateScrollPosition () {\n this.showScrollTop = this.$refs.root.offsetTop < this.scrollerRef.scrollTop\n },\n markAsSeen () {\n this.$store.dispatch('markNotificationsAsSeen')\n this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n },\n fetchOlderNotifications () {\n if (this.loading) {\n return\n }\n\n const seenCount = this.filteredNotifications.length - this.unseenCount\n if (this.seenToDisplayCount < seenCount) {\n this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n return\n } else if (this.seenToDisplayCount > seenCount) {\n this.seenToDisplayCount = seenCount\n }\n\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setNotificationsLoading', { value: true })\n notificationsFetcher.fetchAndUpdate({\n store,\n credentials,\n older: true\n }).then(notifs => {\n store.commit('setNotificationsLoading', { value: false })\n if (notifs.length === 0) {\n this.bottomedOut = true\n }\n this.seenToDisplayCount += notifs.length\n })\n }\n }\n}\n\nexport default Notifications\n","import { render } from \"./notifications.vue?vue&type=template&id=fdd5b5f4\"\nimport script from \"./notifications.js?vue&type=script&lang=js\"\nexport * from \"./notifications.js?vue&type=script&lang=js\"\n\nimport \"./notifications.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel-loading\">\n <span class=\"loading-text\">\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n {{ $t('general.loading') }}\n </span>\n </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import \"src/variables\";\n\n.panel-loading {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n\n .loading-text svg {\n line-height: 0;\n vertical-align: middle;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n</style>\n","import { render } from \"./panel_loading.vue?vue&type=template&id=0255a870\"\nimport script from \"./panel_loading.vue?vue&type=script&lang=js\"\nexport * from \"./panel_loading.vue?vue&type=script&lang=js\"\n\nimport \"./panel_loading.vue?vue&type=style&index=0&id=0255a870&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const Popover = {\n name: 'Popover',\n props: {\n // Action to trigger popover: either 'hover' or 'click'\n trigger: String,\n\n // 'top', 'bottom', 'left', 'right'\n placement: String,\n\n // Takes object with properties 'x' and 'y', values of these can be\n // 'container' for using offsetParent as boundaries for either axis\n // or 'viewport'\n boundTo: Object,\n\n // Takes a selector to use as a replacement for the parent container\n // for getting boundaries for x an y axis\n boundToSelector: String,\n\n // Takes a top/bottom/left/right object, how much space to leave\n // between boundary and popover element\n margin: Object,\n\n // Takes a x/y object and tells how many pixels to offset from\n // anchor point on either axis\n offset: Object,\n\n // Replaces the classes you may want for the popover container.\n // Use 'popover-default' in addition to get the default popover\n // styles with your custom class.\n popoverClass: String,\n\n // If true, subtract padding when calculating position for the popover,\n // use it when popover offset looks to be different on top vs bottom.\n removePadding: Boolean,\n\n // self-explanatory (i hope)\n disabled: Boolean,\n\n // Instead of putting popover next to anchor, overlay popover's center on top of anchor's center\n overlayCenters: Boolean,\n\n // What selector (witin popover!) to use for determining center of popover\n overlayCentersSelector: String,\n\n // Lets hover popover stay when clicking inside of it\n stayOnClick: Boolean,\n\n triggerAttrs: {\n type: Object,\n default: {}\n }\n },\n inject: ['popoversZLayer'], // override popover z layer\n data () {\n return {\n // lockReEntry is a flag that is set when mouse cursor is leaving the popover's content\n // so that if mouse goes back into popover it won't be re-shown again to prevent annoyance\n // with popovers refusing to be hidden when user wants to interact with something in below popover\n anchorEl: null,\n // There's an issue where having teleport enabled by default causes things just...\n // not render at all, i.e. main post status form and its emoji inputs\n teleport: false,\n lockReEntry: false,\n hidden: true,\n styles: {},\n oldSize: { width: 0, height: 0 },\n scrollable: null,\n // used to avoid blinking if hovered onto popover\n graceTimeout: null,\n parentPopover: null,\n disableClickOutside: false,\n childrenShown: new Set()\n }\n },\n methods: {\n setAnchorEl (el) {\n this.anchorEl = el\n this.updateStyles()\n },\n containerBoundingClientRect () {\n const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n return container.getBoundingClientRect()\n },\n updateStyles () {\n if (this.hidden) {\n this.styles = {}\n return\n }\n\n // Popover will be anchored around this element, trigger ref is the container, so\n // its children are what are inside the slot. Expect only one v-slot:trigger.\n const anchorEl = this.anchorEl || (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n // SVGs don't have offsetWidth/Height, use fallback\n const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight\n const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth\n const anchorScreenBox = anchorEl.getBoundingClientRect()\n\n const anchorStyle = getComputedStyle(anchorEl)\n const topPadding = parseFloat(anchorStyle.paddingTop)\n const bottomPadding = parseFloat(anchorStyle.paddingBottom)\n const rightPadding = parseFloat(anchorStyle.paddingRight)\n const leftPadding = parseFloat(anchorStyle.paddingLeft)\n\n // Screen position of the origin point for popover = center of the anchor\n const origin = {\n x: anchorScreenBox.left + anchorWidth * 0.5,\n y: anchorScreenBox.top + anchorHeight * 0.5\n }\n const content = this.$refs.content\n const overlayCenter = this.overlayCenters\n ? this.$refs.content.querySelector(this.overlayCentersSelector)\n : null\n\n // Minor optimization, don't call a slow reflow call if we don't have to\n const parentScreenBox = this.boundTo &&\n (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n this.containerBoundingClientRect()\n\n const margin = this.margin || {}\n\n // What are the screen bounds for the popover? Viewport vs container\n // when using viewport, using default margin values to dodge the navbar\n const xBounds = this.boundTo && this.boundTo.x === 'container'\n ? {\n min: parentScreenBox.left + (margin.left || 0),\n max: parentScreenBox.right - (margin.right || 0)\n }\n : {\n min: 0 + (margin.left || 10),\n max: window.innerWidth - (margin.right || 10)\n }\n\n const yBounds = this.boundTo && this.boundTo.y === 'container'\n ? {\n min: parentScreenBox.top + (margin.top || 0),\n max: parentScreenBox.bottom - (margin.bottom || 0)\n }\n : {\n min: 0 + (margin.top || 50),\n max: window.innerHeight - (margin.bottom || 5)\n }\n\n let horizOffset = 0\n let vertOffset = 0\n\n if (overlayCenter) {\n const box = content.getBoundingClientRect()\n const overlayCenterScreenBox = overlayCenter.getBoundingClientRect()\n const leftInnerOffset = overlayCenterScreenBox.left - box.left\n const topInnerOffset = overlayCenterScreenBox.top - box.top\n horizOffset = -leftInnerOffset - overlayCenter.offsetWidth * 0.5\n vertOffset = -topInnerOffset - overlayCenter.offsetHeight * 0.5\n } else {\n horizOffset = content.offsetWidth * -0.5\n vertOffset = content.offsetHeight * -0.5\n }\n\n const leftBorder = origin.x + horizOffset\n const rightBorder = leftBorder + content.offsetWidth\n const topBorder = origin.y + vertOffset\n const bottomBorder = topBorder + content.offsetHeight\n\n // If overflowing from left, move it so that it doesn't\n if (leftBorder < xBounds.min) {\n horizOffset += xBounds.min - leftBorder\n }\n\n // If overflowing from right, move it so that it doesn't\n if (rightBorder > xBounds.max) {\n horizOffset -= rightBorder - xBounds.max\n }\n\n // If overflowing from top, move it so that it doesn't\n if (topBorder < yBounds.min) {\n vertOffset += yBounds.min - topBorder\n }\n\n // If overflowing from bottom, move it so that it doesn't\n if (bottomBorder > yBounds.max) {\n vertOffset -= bottomBorder - yBounds.max\n }\n\n let translateX = 0\n let translateY = 0\n\n if (overlayCenter) {\n translateX = origin.x + horizOffset\n translateY = origin.y + vertOffset\n } else if (this.placement !== 'right' && this.placement !== 'left') {\n // Default to whatever user wished with placement prop\n let usingTop = this.placement !== 'bottom'\n\n // Handle special cases, first force to displaying on top if there's not space on bottom,\n // regardless of what placement value was. Then check if there's not space on top, and\n // force to bottom, again regardless of what placement value was.\n const topBoundary = origin.y - anchorHeight * 0.5 + (this.removePadding ? topPadding : 0)\n const bottomBoundary = origin.y + anchorHeight * 0.5 - (this.removePadding ? bottomPadding : 0)\n if (bottomBoundary + content.offsetHeight > yBounds.max) usingTop = true\n if (topBoundary - content.offsetHeight < yBounds.min) usingTop = false\n\n const yOffset = (this.offset && this.offset.y) || 0\n translateY = usingTop\n ? topBoundary - yOffset - content.offsetHeight\n : bottomBoundary + yOffset\n\n const xOffset = (this.offset && this.offset.x) || 0\n translateX = origin.x + horizOffset + xOffset\n } else {\n // Default to whatever user wished with placement prop\n let usingRight = this.placement !== 'left'\n\n // Handle special cases, first force to displaying on top if there's not space on bottom,\n // regardless of what placement value was. Then check if there's not space on top, and\n // force to bottom, again regardless of what placement value was.\n const rightBoundary = origin.x - anchorWidth * 0.5 + (this.removePadding ? rightPadding : 0)\n const leftBoundary = origin.x + anchorWidth * 0.5 - (this.removePadding ? leftPadding : 0)\n if (leftBoundary + content.offsetWidth > xBounds.max) usingRight = true\n if (rightBoundary - content.offsetWidth < xBounds.min) usingRight = false\n\n const xOffset = (this.offset && this.offset.x) || 0\n translateX = usingRight\n ? rightBoundary - xOffset - content.offsetWidth\n : leftBoundary + xOffset\n\n const yOffset = (this.offset && this.offset.y) || 0\n translateY = origin.y + vertOffset + yOffset\n }\n\n this.styles = {\n left: `${Math.round(translateX)}px`,\n top: `${Math.round(translateY)}px`\n }\n\n if (this.popoversZLayer) {\n this.styles['--ZI_popover_override'] = `var(--ZI_${this.popoversZLayer}_popovers)`\n }\n if (parentScreenBox) {\n this.styles.maxWidth = `${Math.round(parentScreenBox.width)}px`\n }\n },\n showPopover () {\n if (this.disabled) return\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n const wasHidden = this.hidden\n this.hidden = false\n this.parentPopover && this.parentPopover.onChildPopoverState(this, true)\n if (this.trigger === 'click' || this.stayOnClick) {\n document.addEventListener('click', this.onClickOutside)\n }\n this.scrollable.addEventListener('scroll', this.onScroll)\n this.scrollable.addEventListener('resize', this.onResize)\n this.$nextTick(() => {\n if (wasHidden) this.$emit('show')\n this.updateStyles()\n })\n },\n hidePopover () {\n if (this.disabled) return\n if (!this.hidden) this.$emit('close')\n this.hidden = true\n this.parentPopover && this.parentPopover.onChildPopoverState(this, false)\n if (this.trigger === 'click') {\n document.removeEventListener('click', this.onClickOutside)\n }\n this.scrollable.removeEventListener('scroll', this.onScroll)\n this.scrollable.removeEventListener('resize', this.onResize)\n },\n onMouseenter (e) {\n if (this.trigger === 'hover') {\n this.lockReEntry = false\n clearTimeout(this.graceTimeout)\n this.graceTimeout = null\n this.showPopover()\n }\n },\n onMouseleave (e) {\n if (this.trigger === 'hover' && this.childrenShown.size === 0) {\n this.graceTimeout = setTimeout(() => this.hidePopover(), 1)\n }\n },\n onMouseenterContent (e) {\n if (this.trigger === 'hover' && !this.lockReEntry) {\n this.lockReEntry = true\n clearTimeout(this.graceTimeout)\n this.graceTimeout = null\n this.showPopover()\n }\n },\n onMouseleaveContent (e) {\n if (this.trigger === 'hover' && this.childrenShown.size === 0) {\n this.graceTimeout = setTimeout(() => this.hidePopover(), 1)\n }\n },\n onClick (e) {\n if (this.trigger === 'click') {\n if (this.hidden) {\n this.showPopover()\n } else {\n this.hidePopover()\n }\n }\n },\n onClickOutside (e) {\n if (this.disableClickOutside) return\n if (this.hidden) return\n if (this.$refs.content && this.$refs.content.contains(e.target)) return\n if (this.$el.contains(e.target)) return\n if (this.childrenShown.size > 0) return\n this.hidePopover()\n if (this.parentPopover) this.parentPopover.onClickOutside(e)\n },\n onScroll (e) {\n this.updateStyles()\n },\n onResize (e) {\n this.updateStyles()\n },\n onChildPopoverState (childRef, state) {\n if (state) {\n this.childrenShown.add(childRef)\n } else {\n this.childrenShown.delete(childRef)\n }\n }\n },\n updated () {\n // Monitor changes to content size, update styles only when content sizes have changed,\n // that should be the only time we need to move the popover box if we don't care about scroll\n // or resize\n const content = this.$refs.content\n if (!content) return\n if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n this.updateStyles()\n this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n }\n },\n mounted () {\n this.teleport = true\n let scrollable = this.$refs.trigger.closest('.column.-scrollable') ||\n this.$refs.trigger.closest('.mobile-notifications')\n if (!scrollable) scrollable = window\n this.scrollable = scrollable\n let parent = this.$parent\n while (parent && parent.$.type.name !== 'Popover') {\n parent = parent.$parent\n }\n this.parentPopover = parent\n },\n beforeUnmount () {\n this.hidePopover()\n }\n}\n\nexport default Popover\n","import { render } from \"./popover.vue?vue&type=template&id=1de5634b\"\nimport script from \"./popover.js?vue&type=script&lang=js\"\nexport * from \"./popover.js?vue&type=script&lang=js\"\n\nimport \"./popover.vue?vue&type=style&index=0&id=1de5634b&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n @mouseenter=\"onMouseenter\"\n @mouseleave=\"onMouseleave\"\n >\n <button\n ref=\"trigger\"\n class=\"button-unstyled popover-trigger-button\"\n type=\"button\"\n v-bind=\"triggerAttrs\"\n @click=\"onClick\"\n >\n <slot name=\"trigger\" />\n </button>\n <teleport\n :disabled=\"!teleport\"\n to=\"#popovers\"\n >\n <transition name=\"fade\">\n <div\n v-if=\"!hidden\"\n ref=\"content\"\n :style=\"styles\"\n class=\"popover\"\n :class=\"popoverClass || 'popover-default'\"\n @mouseenter=\"onMouseenterContent\"\n @mouseleave=\"onMouseleaveContent\"\n @click=\"onClickContent\"\n >\n <slot\n name=\"content\"\n class=\"popover-inner\"\n :close=\"hidePopover\"\n />\n </div>\n </transition>\n </teleport>\n </span>\n</template>\n\n<script src=\"./popover.js\" />\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.popover-trigger-button {\n display: inline-block;\n}\n\n.popover {\n z-index: var(--ZI_popover_override, var(--ZI_popovers));\n position: fixed;\n min-width: 0;\n max-width: calc(100vw - 20px);\n box-shadow: 2px 2px 3px rgb(0 0 0 / 50%);\n box-shadow: var(--popupShadow);\n}\n\n.popover-default {\n &::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 3;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n pointer-events: none;\n }\n\n border-radius: $fallback--btnRadius;\n border-radius: var(--btnRadius, $fallback--btnRadius);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--text;\n color: var(--popoverText, $fallback--text);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --postLink: var(--popoverPostLink, $fallback--link);\n --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n --icon: var(--popoverIcon, $fallback--icon);\n}\n\n.dropdown-menu {\n display: block;\n padding: 0.5rem 0;\n font-size: 1em;\n text-align: left;\n list-style: none;\n max-width: 100vw;\n z-index: var(--ZI_popover_override, var(--ZI_popovers));\n white-space: nowrap;\n\n .dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n .dropdown-item {\n line-height: 21px;\n overflow: hidden;\n display: block;\n padding: 0.5em 0.75em;\n clear: both;\n font-weight: 400;\n text-align: inherit;\n white-space: nowrap;\n border: none;\n border-radius: 0;\n background-color: transparent;\n box-shadow: none;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n\n --btnText: var(--popoverText, $fallback--text);\n\n &-icon {\n svg {\n width: 22px;\n margin-right: 0.75rem;\n color: var(--menuPopoverIcon, $fallback--icon);\n }\n }\n\n &.-has-submenu {\n .chevron-icon {\n margin-right: 0.25rem;\n margin-left: 2rem;\n }\n }\n\n &:active,\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n box-shadow: none;\n\n --btnText: var(--selectedMenuPopoverText, $fallback--link);\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n\n svg {\n color: var(--selectedMenuPopoverIcon, $fallback--icon);\n\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n\n .menu-checkbox {\n display: inline-block;\n vertical-align: middle;\n min-width: 22px;\n max-width: 22px;\n min-height: 22px;\n max-height: 22px;\n line-height: 22px;\n text-align: center;\n border-radius: 0;\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n margin-right: 0.75em;\n\n &.menu-checkbox-checked::after {\n font-size: 1.25em;\n content: \"✓\";\n }\n\n &.-radio {\n border-radius: 9999px;\n\n &.menu-checkbox-checked::after {\n font-size: 2em;\n content: \"•\";\n }\n }\n }\n }\n\n .button-default.dropdown-item {\n &,\n i[class*=\"icon-\"] {\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n }\n\n &:active {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuPopoverText, $fallback--link);\n }\n\n &:disabled {\n color: $fallback--text;\n color: var(--btnDisabledText, $fallback--text);\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledText, $fallback--text);\n }\n }\n}\n</style>\n","<template>\n <div\n ref=\"form\"\n class=\"post-status-form\"\n >\n <form\n autocomplete=\"off\"\n @submit.prevent\n @dragover.prevent=\"fileDrag\"\n >\n <div class=\"form-group\">\n <i18n-t\n v-if=\"!$store.state.users.currentUser.locked && newStatus.visibility == 'private' && !disableLockWarning\"\n keypath=\"post_status.account_not_locked_warning\"\n tag=\"p\"\n class=\"visibility-notice\"\n scope=\"global\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"openProfileTab\"\n >\n {{ $t('post_status.account_not_locked_warning_link') }}\n </button>\n </i18n-t>\n <p\n v-if=\"!hideScopeNotice && newStatus.visibility === 'public'\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.public') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"!hideScopeNotice && newStatus.visibility === 'unlisted'\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.unlisted') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"!hideScopeNotice && newStatus.visibility === 'private' && $store.state.users.currentUser.locked\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.private') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"newStatus.visibility === 'direct'\"\n class=\"visibility-notice\"\n >\n <span v-if=\"safeDMEnabled\">{{ $t('post_status.direct_warning_to_first_only') }}</span>\n <span v-else>{{ $t('post_status.direct_warning_to_all') }}</span>\n </p>\n <div\n v-if=\"isEdit\"\n class=\"visibility-notice edit-warning\"\n >\n <p>{{ $t('post_status.edit_remote_warning') }}</p>\n <p>{{ $t('post_status.edit_unsupported_warning') }}</p>\n </div>\n <div\n v-if=\"!disablePreview\"\n class=\"preview-heading faint\"\n >\n <a\n class=\"preview-toggle faint\"\n @click.stop.prevent=\"togglePreview\"\n >\n {{ $t('post_status.preview') }}\n <FAIcon :icon=\"showPreview ? 'chevron-left' : 'chevron-right'\" />\n </a>\n <div\n v-show=\"previewLoading\"\n class=\"preview-spinner\"\n >\n <FAIcon\n class=\"fa-old-padding\"\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n <div\n v-if=\"showPreview\"\n class=\"preview-container\"\n >\n <div\n v-if=\"!preview\"\n class=\"preview-status\"\n >\n {{ $t('general.loading') }}\n </div>\n <div\n v-else-if=\"preview.error\"\n class=\"preview-status preview-error\"\n >\n {{ preview.error }}\n </div>\n <StatusContent\n v-else\n :status=\"preview\"\n class=\"preview-status\"\n />\n </div>\n <EmojiInput\n v-if=\"!disableSubject && (newStatus.spoilerText || alwaysShowSubject)\"\n v-model=\"newStatus.spoilerText\"\n enable-emoji-picker\n :suggest=\"emojiSuggestor\"\n class=\"form-control\"\n >\n <template #default=\"inputProps\">\n <input\n v-model=\"newStatus.spoilerText\"\n type=\"text\"\n :placeholder=\"$t('post_status.content_warning')\"\n :disabled=\"posting && !optimisticPosting\"\n v-bind=\"propsToNative(inputProps)\"\n size=\"1\"\n class=\"form-post-subject\"\n >\n </template>\n </EmojiInput>\n <EmojiInput\n ref=\"emoji-input\"\n v-model=\"newStatus.status\"\n :suggest=\"emojiUserSuggestor\"\n :placement=\"emojiPickerPlacement\"\n class=\"form-control main-input\"\n enable-emoji-picker\n hide-emoji-button\n :newline-on-ctrl-enter=\"submitOnEnter\"\n enable-sticker-picker\n @input=\"onEmojiInputInput\"\n @sticker-uploaded=\"addMediaFile\"\n @sticker-upload-failed=\"uploadFailed\"\n @shown=\"handleEmojiInputShow\"\n >\n <template #default=\"inputProps\">\n <textarea\n ref=\"textarea\"\n v-model=\"newStatus.status\"\n :placeholder=\"placeholder || $t('post_status.default')\"\n rows=\"1\"\n cols=\"1\"\n :disabled=\"posting && !optimisticPosting\"\n class=\"form-post-body\"\n :class=\"{ 'scrollable-form': !!maxHeight }\"\n v-bind=\"propsToNative(inputProps)\"\n @keydown.exact.enter=\"submitOnEnter && postStatus($event, newStatus)\"\n @keydown.meta.enter=\"postStatus($event, newStatus)\"\n @keydown.ctrl.enter=\"!submitOnEnter && postStatus($event, newStatus)\"\n @input=\"resize\"\n @compositionupdate=\"resize\"\n @paste=\"paste\"\n />\n <p\n v-if=\"hasStatusLengthLimit\"\n class=\"character-counter faint\"\n :class=\"{ error: isOverLengthLimit }\"\n >\n {{ charactersLeft }}\n </p>\n </template>\n </EmojiInput>\n <div\n v-if=\"!disableScopeSelector\"\n class=\"visibility-tray\"\n >\n <scope-selector\n v-if=\"!disableVisibilitySelector\"\n :show-all=\"showAllScopes\"\n :user-default=\"userDefaultScope\"\n :original-scope=\"copyMessageScope\"\n :initial-scope=\"newStatus.visibility\"\n :on-scope-change=\"changeVis\"\n />\n\n <div\n v-if=\"postFormats.length > 1\"\n class=\"text-format\"\n >\n <Select\n id=\"post-content-type\"\n v-model=\"newStatus.contentType\"\n class=\"form-control\"\n :attrs=\"{ 'aria-label': $t('post_status.content_type_selection') }\"\n >\n <option\n v-for=\"postFormat in postFormats\"\n :key=\"postFormat\"\n :value=\"postFormat\"\n >\n {{ $t(`post_status.content_type[\"${postFormat}\"]`) }}\n </option>\n </Select>\n </div>\n <div\n v-if=\"postFormats.length === 1 && postFormats[0] !== 'text/plain'\"\n class=\"text-format\"\n >\n <span class=\"only-format\">\n {{ $t(`post_status.content_type[\"${postFormats[0]}\"]`) }}\n </span>\n </div>\n </div>\n </div>\n <poll-form\n v-if=\"pollsAvailable\"\n ref=\"pollForm\"\n :visible=\"pollFormVisible\"\n @update-poll=\"setPoll\"\n />\n <div\n ref=\"bottom\"\n class=\"form-bottom\"\n >\n <div class=\"form-bottom-left\">\n <media-upload\n ref=\"mediaUpload\"\n class=\"media-upload-icon\"\n :drop-files=\"dropFiles\"\n :disabled=\"uploadFileLimitReached\"\n @uploading=\"startedUploadingFiles\"\n @uploaded=\"addMediaFile\"\n @upload-failed=\"uploadFailed\"\n @all-uploaded=\"finishedUploadingFiles\"\n />\n <button\n class=\"emoji-icon button-unstyled\"\n :title=\"$t('emoji.add_emoji')\"\n @click=\"showEmojiPicker\"\n >\n <FAIcon icon=\"smile-beam\" />\n </button>\n <button\n v-if=\"pollsAvailable\"\n class=\"poll-icon button-unstyled\"\n :class=\"{ selected: pollFormVisible }\"\n :title=\"$t('polls.add_poll')\"\n @click=\"togglePollForm\"\n >\n <FAIcon icon=\"poll-h\" />\n </button>\n </div>\n <button\n v-if=\"posting\"\n disabled\n class=\"btn button-default\"\n >\n {{ $t('post_status.posting') }}\n </button>\n <button\n v-else-if=\"isOverLengthLimit\"\n disabled\n class=\"btn button-default\"\n >\n {{ $t('post_status.post') }}\n </button>\n <!-- touchstart is used to keep the OSK at the same position after a message send -->\n <button\n v-else\n :disabled=\"uploadingFiles || disableSubmit\"\n class=\"btn button-default\"\n @touchstart.stop.prevent=\"postStatus($event, newStatus)\"\n @click.stop.prevent=\"postStatus($event, newStatus)\"\n >\n {{ $t('post_status.post') }}\n </button>\n </div>\n <div\n v-show=\"showDropIcon !== 'hide'\"\n :style=\"{ animation: showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }\"\n class=\"drop-indicator\"\n @dragleave=\"fileDragStop\"\n @drop.stop=\"fileDrop\"\n >\n <FAIcon :icon=\"uploadFileLimitReached ? 'ban' : 'upload'\" />\n </div>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n Error: {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n <gallery\n v-if=\"newStatus.files && newStatus.files.length > 0\"\n class=\"attachments\"\n :grid=\"true\"\n :nsfw=\"false\"\n :attachments=\"newStatus.files\"\n :descriptions=\"newStatus.mediaDescriptions\"\n :set-media=\"() => $store.dispatch('setMedia', newStatus.files)\"\n :editable=\"true\"\n :edit-attachment=\"editAttachment\"\n :remove-attachment=\"removeMediaFile\"\n :shift-up-attachment=\"newStatus.files.length > 1 && shiftUpMediaFile\"\n :shift-dn-attachment=\"newStatus.files.length > 1 && shiftDnMediaFile\"\n @play=\"$emit('mediaplay', attachment.id)\"\n @pause=\"$emit('mediapause', attachment.id)\"\n />\n <div\n v-if=\"newStatus.files.length > 0 && !disableSensitivityCheckbox\"\n class=\"upload_settings\"\n >\n <Checkbox v-model=\"newStatus.nsfw\">\n {{ $t('post_status.attachments_sensitive') }}\n </Checkbox>\n </div>\n </form>\n </div>\n</template>\n\n<script src=\"./post_status_form.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.post-status-form {\n position: relative;\n\n .attachments {\n margin-bottom: 0.5em;\n }\n\n .form-bottom {\n display: flex;\n justify-content: space-between;\n padding: 0.5em;\n height: 2.5em;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .form-bottom-left {\n display: flex;\n flex: 1;\n padding-right: 7px;\n margin-right: 7px;\n max-width: 10em;\n }\n\n .preview-heading {\n display: flex;\n padding-left: 0.5em;\n }\n\n .preview-toggle {\n flex: 1;\n cursor: pointer;\n user-select: none;\n\n &:hover {\n text-decoration: underline;\n }\n\n svg,\n i {\n margin-left: 0.2em;\n font-size: 0.8em;\n transform: rotate(90deg);\n }\n }\n\n .preview-container {\n margin-bottom: 1em;\n }\n\n .preview-error {\n font-style: italic;\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n\n .preview-status {\n border: 1px solid $fallback--border;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n padding: 0.5em;\n margin: 0;\n }\n\n .text-format {\n .only-format {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n .visibility-tray {\n display: flex;\n justify-content: space-between;\n padding-top: 5px;\n align-items: baseline;\n }\n\n .visibility-notice.edit-warning {\n > :first-child {\n margin-top: 0;\n }\n\n > :last-child {\n margin-bottom: 0;\n }\n }\n\n // Order is not necessary but a good indicator\n .media-upload-icon {\n order: 1;\n justify-content: left;\n }\n\n .emoji-icon {\n order: 2;\n justify-content: center;\n }\n\n .poll-icon {\n order: 3;\n justify-content: right;\n }\n\n .media-upload-icon,\n .poll-icon,\n .emoji-icon {\n font-size: 1.85em;\n line-height: 1.1;\n flex: 1;\n padding: 0 0.1em;\n display: flex;\n align-items: center;\n\n &.selected,\n &:hover {\n // needs to be specific to override icon default color\n svg,\n i,\n label {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n\n &.disabled {\n svg,\n i {\n cursor: not-allowed;\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n\n &:hover {\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n }\n }\n }\n }\n\n .error {\n text-align: center;\n }\n\n .media-upload-wrapper {\n margin-right: 0.2em;\n margin-bottom: 0.5em;\n width: 18em;\n\n img,\n video {\n object-fit: contain;\n max-height: 10em;\n }\n\n .video {\n max-height: 10em;\n }\n\n input {\n flex: 1;\n width: 100%;\n }\n }\n\n .status-input-wrapper {\n display: flex;\n position: relative;\n width: 100%;\n flex-direction: column;\n }\n\n .btn[disabled] {\n cursor: not-allowed;\n }\n\n form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n position: relative;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.25em 0.5em 0.5em;\n line-height: 1.85;\n }\n\n .form-post-body {\n // TODO: make a resizable textarea component?\n box-sizing: content-box; // needed for easier computation of dynamic size\n overflow: hidden;\n transition: min-height 200ms 100ms;\n // stock padding + 1 line of text (for counter)\n padding-bottom: calc(var(--_padding) + var(--post-line-height) * 1em);\n // two lines of text\n height: calc(var(--post-line-height) * 1em);\n min-height: calc(var(--post-line-height) * 1em);\n resize: none;\n\n &.scrollable-form {\n overflow-y: auto;\n }\n }\n\n .main-input {\n position: relative;\n }\n\n .character-counter {\n position: absolute;\n bottom: 0;\n right: 0;\n padding: 0;\n margin: 0 0.5em;\n\n &.error {\n color: $fallback--cRed;\n color: var(--cRed, $fallback--cRed);\n }\n }\n\n @keyframes fade-in {\n from { opacity: 0; }\n to { opacity: 0.6; }\n }\n\n @keyframes fade-out {\n from { opacity: 0.6; }\n to { opacity: 0; }\n }\n\n .drop-indicator {\n position: absolute;\n width: 100%;\n height: 100%;\n font-size: 5em;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.6;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n border: 2px dashed $fallback--text;\n border: 2px dashed var(--text, $fallback--text);\n }\n}\n</style>\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUpload,\n faCircleNotch\n)\n\nconst mediaUpload = {\n data () {\n return {\n uploadCount: 0,\n uploadReady: true\n }\n },\n computed: {\n uploading () {\n return this.uploadCount > 0\n }\n },\n methods: {\n uploadFile (file) {\n const self = this\n const store = this.$store\n if (file.size > store.state.instance.uploadlimit) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n return\n }\n const formData = new FormData()\n formData.append('file', file)\n\n self.$emit('uploading')\n self.uploadCount++\n\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n self.$emit('uploaded', fileData)\n self.decreaseUploadCount()\n }, (error) => {\n console.error('Error uploading file', error)\n self.$emit('upload-failed', 'default')\n self.decreaseUploadCount()\n })\n },\n decreaseUploadCount () {\n this.uploadCount--\n if (this.uploadCount === 0) {\n this.$emit('all-uploaded')\n }\n },\n clearFile () {\n this.uploadReady = false\n this.$nextTick(() => {\n this.uploadReady = true\n })\n },\n multiUpload (files) {\n for (const file of files) {\n this.uploadFile(file)\n }\n },\n change ({ target }) {\n this.multiUpload(target.files)\n }\n },\n props: [\n 'dropFiles',\n 'disabled'\n ],\n watch: {\n dropFiles: function (fileInfos) {\n if (!this.uploading) {\n this.multiUpload(fileInfos)\n }\n }\n }\n}\n\nexport default mediaUpload\n","import { render } from \"./media_upload.vue?vue&type=template&id=6bb23d2c\"\nimport script from \"./media_upload.js?vue&type=script&lang=js\"\nexport * from \"./media_upload.js?vue&type=script&lang=js\"\n\nimport \"./media_upload.vue?vue&type=style&index=0&id=6bb23d2c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"media-upload\"\n :class=\"{ disabled: disabled }\"\n :title=\"$t('tool_tip.media_upload')\"\n >\n <FAIcon\n v-if=\"uploading\"\n class=\"progress-icon\"\n icon=\"circle-notch\"\n spin\n />\n <FAIcon\n v-if=\"!uploading\"\n class=\"new-icon\"\n icon=\"upload\"\n />\n <input\n v-if=\"uploadReady\"\n class=\"hidden-input-file\"\n :disabled=\"disabled\"\n type=\"file\"\n multiple=\"true\"\n @change=\"change\"\n >\n </label>\n</template>\n\n<script src=\"./media_upload.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.media-upload {\n cursor: pointer; // We use <label> for interactivity... i wonder if it's fine\n\n .hidden-input-file {\n display: none;\n }\n}\n </style>\n","<template>\n <div\n v-if=\"visible\"\n class=\"poll-form\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"index\"\n class=\"poll-option\"\n >\n <div class=\"input-container\">\n <input\n :id=\"`poll-${index}`\"\n v-model=\"options[index]\"\n size=\"1\"\n class=\"poll-option-input\"\n type=\"text\"\n :placeholder=\"$t('polls.option')\"\n :maxlength=\"maxLength\"\n @change=\"updatePollToParent\"\n @keydown.enter.stop.prevent=\"nextOption(index)\"\n >\n </div>\n <button\n v-if=\"options.length > 2\"\n class=\"delete-option button-unstyled -hover-highlight\"\n @click=\"deleteOption(index)\"\n >\n <FAIcon icon=\"times\" />\n </button>\n </div>\n <button\n v-if=\"options.length < maxOptions\"\n class=\"add-option faint button-unstyled -hover-highlight\"\n @click=\"addOption\"\n >\n <FAIcon\n icon=\"plus\"\n size=\"sm\"\n />\n\n {{ $t(\"polls.add_option\") }}\n </button>\n <div class=\"poll-type-expiry\">\n <div\n class=\"poll-type\"\n :title=\"$t('polls.type')\"\n >\n <Select\n v-model=\"pollType\"\n class=\"poll-type-select\"\n unstyled=\"true\"\n @change=\"updatePollToParent\"\n >\n <option value=\"single\">\n {{ $t('polls.single_choice') }}\n </option>\n <option value=\"multiple\">\n {{ $t('polls.multiple_choices') }}\n </option>\n </Select>\n </div>\n <div\n class=\"poll-expiry\"\n :title=\"$t('polls.expiry')\"\n >\n <input\n v-model=\"expiryAmount\"\n type=\"number\"\n class=\"expiry-amount hide-number-spinner\"\n :min=\"minExpirationInCurrentUnit\"\n :max=\"maxExpirationInCurrentUnit\"\n @change=\"expiryAmountChange\"\n >\n {{ ' ' }}\n <Select\n v-model=\"expiryUnit\"\n unstyled=\"true\"\n class=\"expiry-unit\"\n @change=\"expiryAmountChange\"\n >\n <option\n v-for=\"unit in expiryUnits\"\n :key=\"unit\"\n :value=\"unit\"\n >\n {{ $tc(`time.unit.${unit}_short`, expiryAmount, ['']) }}\n </option>\n </Select>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./poll_form.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.poll-form {\n display: flex;\n flex-direction: column;\n padding: 0 0.5em 0.5em;\n\n .add-option {\n align-self: flex-start;\n padding-top: 0.25em;\n padding-left: 0.1em;\n }\n\n .poll-option {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n margin-bottom: 0.25em;\n }\n\n .input-container {\n width: 100%;\n\n input {\n // Hack: dodge the floating X icon\n padding-right: 2.5em;\n width: 100%;\n }\n }\n\n .delete-option {\n // Hack: Move the icon over the input box\n width: 1.5em;\n margin-left: -1.5em;\n z-index: 1;\n }\n\n .poll-type-expiry {\n margin-top: 0.5em;\n display: flex;\n width: 100%;\n }\n\n .poll-type {\n margin-right: 0.75em;\n flex: 1 1 60%;\n\n .poll-type-select {\n padding-right: 0.75em;\n }\n }\n\n .poll-expiry {\n display: flex;\n\n .expiry-amount {\n width: 3em;\n text-align: right;\n }\n }\n}\n</style>\n","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport Select from '../select/select.vue'\nimport {\n faTimes,\n faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faPlus\n)\n\nexport default {\n components: {\n Select\n },\n name: 'PollForm',\n props: ['visible'],\n data: () => ({\n pollType: 'single',\n options: ['', ''],\n expiryAmount: 10,\n expiryUnit: 'minutes'\n }),\n computed: {\n pollLimits () {\n return this.$store.state.instance.pollLimits\n },\n maxOptions () {\n return this.pollLimits.max_options\n },\n maxLength () {\n return this.pollLimits.max_option_chars\n },\n expiryUnits () {\n const allUnits = ['minutes', 'hours', 'days']\n const expiry = this.convertExpiryFromUnit\n return allUnits.filter(\n unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n )\n },\n minExpirationInCurrentUnit () {\n return Math.ceil(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.min_expiration\n )\n )\n },\n maxExpirationInCurrentUnit () {\n return Math.floor(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.max_expiration\n )\n )\n }\n },\n methods: {\n clear () {\n this.pollType = 'single'\n this.options = ['', '']\n this.expiryAmount = 10\n this.expiryUnit = 'minutes'\n },\n nextOption (index) {\n const element = this.$el.querySelector(`#poll-${index + 1}`)\n if (element) {\n element.focus()\n } else {\n // Try adding an option and try focusing on it\n const addedOption = this.addOption()\n if (addedOption) {\n this.$nextTick(function () {\n this.nextOption(index)\n })\n }\n }\n },\n addOption () {\n if (this.options.length < this.maxOptions) {\n this.options.push('')\n return true\n }\n return false\n },\n deleteOption (index, event) {\n if (this.options.length > 2) {\n this.options.splice(index, 1)\n this.updatePollToParent()\n }\n },\n convertExpiryToUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n return DateUtils.secondsToUnit(unit, amount)\n },\n convertExpiryFromUnit (unit, amount) {\n return DateUtils.unitToSeconds(unit, amount)\n },\n expiryAmountChange () {\n this.expiryAmount =\n Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n this.expiryAmount =\n Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n this.updatePollToParent()\n },\n updatePollToParent () {\n const expiresIn = this.convertExpiryFromUnit(\n this.expiryUnit,\n this.expiryAmount\n )\n\n const options = uniq(this.options.filter(option => option !== ''))\n if (options.length < 2) {\n this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n return\n }\n this.$emit('update-poll', {\n options,\n multiple: this.pollType === 'multiple',\n expiresIn\n })\n }\n }\n}\n","import { render } from \"./poll_form.vue?vue&type=template&id=24ea52c8\"\nimport script from \"./poll_form.js?vue&type=script&lang=js\"\nexport * from \"./poll_form.js?vue&type=script&lang=js\"\n\nimport \"./poll_form.vue?vue&type=style&index=0&id=24ea52c8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport Gallery from 'src/components/gallery/gallery.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { propsToNative } from '../../services/attributes_helper/attributes_helper.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Select from '../select/select.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n let allAttentions = [...attentions]\n\n allAttentions.unshift(user)\n\n allAttentions = uniqBy(allAttentions, 'id')\n allAttentions = reject(allAttentions, { id: currentUser.id })\n\n const mentions = map(allAttentions, (attention) => {\n return `@${attention.screen_name}`\n })\n\n return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n props: [\n 'statusId',\n 'statusText',\n 'statusIsSensitive',\n 'statusPoll',\n 'statusFiles',\n 'statusMediaDescriptions',\n 'statusScope',\n 'statusContentType',\n 'replyTo',\n 'repliedUser',\n 'attentions',\n 'copyMessageScope',\n 'subject',\n 'disableSubject',\n 'disableScopeSelector',\n 'disableVisibilitySelector',\n 'disableNotice',\n 'disableLockWarning',\n 'disablePolls',\n 'disableSensitivityCheckbox',\n 'disableSubmit',\n 'disablePreview',\n 'placeholder',\n 'maxHeight',\n 'postHandler',\n 'preserveFocus',\n 'autoFocus',\n 'fileLimit',\n 'submitOnEnter',\n 'emojiPickerPlacement',\n 'optimisticPosting'\n ],\n emits: [\n 'posted',\n 'resize',\n 'mediaplay',\n 'mediapause'\n ],\n components: {\n MediaUpload,\n EmojiInput,\n PollForm,\n ScopeSelector,\n Checkbox,\n Select,\n Attachment,\n StatusContent,\n Gallery\n },\n mounted () {\n this.updateIdempotencyKey()\n this.resize(this.$refs.textarea)\n\n if (this.replyTo) {\n const textLength = this.$refs.textarea.value.length\n this.$refs.textarea.setSelectionRange(textLength, textLength)\n }\n\n if (this.replyTo || this.autoFocus) {\n this.$refs.textarea.focus()\n }\n },\n data () {\n const preset = this.$route.query.message\n let statusText = preset || ''\n\n const { scopeCopy } = this.$store.getters.mergedConfig\n\n if (this.replyTo) {\n const currentUser = this.$store.state.users.currentUser\n statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n }\n\n const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n ? this.copyMessageScope\n : this.$store.state.users.currentUser.default_scope\n\n const { postContentType: contentType, sensitiveByDefault } = this.$store.getters.mergedConfig\n\n let statusParams = {\n spoilerText: this.subject || '',\n status: statusText,\n nsfw: !!sensitiveByDefault,\n files: [],\n poll: {},\n mediaDescriptions: {},\n visibility: scope,\n contentType\n }\n\n if (this.statusId) {\n const statusContentType = this.statusContentType || contentType\n statusParams = {\n spoilerText: this.subject || '',\n status: this.statusText || '',\n nsfw: this.statusIsSensitive || !!sensitiveByDefault,\n files: this.statusFiles || [],\n poll: this.statusPoll || {},\n mediaDescriptions: this.statusMediaDescriptions || {},\n visibility: this.statusScope || scope,\n contentType: statusContentType\n }\n }\n\n return {\n dropFiles: [],\n uploadingFiles: false,\n error: null,\n posting: false,\n highlighted: 0,\n newStatus: statusParams,\n caret: 0,\n pollFormVisible: false,\n showDropIcon: 'hide',\n dropStopTimeout: null,\n preview: null,\n previewLoading: false,\n emojiInputShown: false,\n idempotencyKey: ''\n }\n },\n computed: {\n users () {\n return this.$store.state.users.users\n },\n userDefaultScope () {\n return this.$store.state.users.currentUser.default_scope\n },\n showAllScopes () {\n return !this.mergedConfig.minimalScopesMode\n },\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.getters.standardEmojiList,\n ...this.$store.state.instance.customEmoji\n ],\n store: this.$store\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.getters.standardEmojiList,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n emoji () {\n return this.$store.getters.standardEmojiList || []\n },\n customEmoji () {\n return this.$store.state.instance.customEmoji || []\n },\n statusLength () {\n return this.newStatus.status.length\n },\n spoilerTextLength () {\n return this.newStatus.spoilerText.length\n },\n statusLengthLimit () {\n return this.$store.state.instance.textlimit\n },\n hasStatusLengthLimit () {\n return this.statusLengthLimit > 0\n },\n charactersLeft () {\n return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n },\n isOverLengthLimit () {\n return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n },\n minimalScopesMode () {\n return this.$store.state.instance.minimalScopesMode\n },\n alwaysShowSubject () {\n return this.mergedConfig.alwaysShowSubjectInput\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n safeDMEnabled () {\n return this.$store.state.instance.safeDM\n },\n pollsAvailable () {\n return this.$store.state.instance.pollsAvailable &&\n this.$store.state.instance.pollLimits.max_options >= 2 &&\n this.disablePolls !== true\n },\n hideScopeNotice () {\n return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n },\n pollContentError () {\n return this.pollFormVisible &&\n this.newStatus.poll &&\n this.newStatus.poll.error\n },\n showPreview () {\n return !this.disablePreview && (!!this.preview || this.previewLoading)\n },\n emptyStatus () {\n return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n },\n uploadFileLimitReached () {\n return this.newStatus.files.length >= this.fileLimit\n },\n isEdit () {\n return typeof this.statusId !== 'undefined' && this.statusId.trim() !== ''\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n mobileLayout: state => state.interface.mobileLayout\n })\n },\n watch: {\n newStatus: {\n deep: true,\n handler () {\n this.statusChanged()\n }\n }\n },\n methods: {\n statusChanged () {\n this.autoPreview()\n this.updateIdempotencyKey()\n },\n clearStatus () {\n const newStatus = this.newStatus\n this.newStatus = {\n status: '',\n spoilerText: '',\n files: [],\n visibility: newStatus.visibility,\n contentType: newStatus.contentType,\n poll: {},\n mediaDescriptions: {}\n }\n this.pollFormVisible = false\n this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n this.clearPollForm()\n if (this.preserveFocus) {\n this.$nextTick(() => {\n this.$refs.textarea.focus()\n })\n }\n const el = this.$el.querySelector('textarea')\n el.style.height = 'auto'\n el.style.height = undefined\n this.error = null\n if (this.preview) this.previewStatus()\n },\n async postStatus (event, newStatus, opts = {}) {\n if (this.posting && !this.optimisticPosting) { return }\n if (this.disableSubmit) { return }\n if (this.emojiInputShown) { return }\n if (this.submitOnEnter) {\n event.stopPropagation()\n event.preventDefault()\n }\n\n if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n if (this.emptyStatus) {\n this.error = this.$t('post_status.empty_status_error')\n return\n }\n\n const poll = this.pollFormVisible ? this.newStatus.poll : {}\n if (this.pollContentError) {\n this.error = this.pollContentError\n return\n }\n\n this.posting = true\n\n try {\n await this.setAllMediaDescriptions()\n } catch (e) {\n this.error = this.$t('post_status.media_description_error')\n this.posting = false\n return\n }\n\n const postingOptions = {\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: newStatus.files,\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll,\n idempotencyKey: this.idempotencyKey\n }\n\n const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n postHandler(postingOptions).then((data) => {\n if (!data.error) {\n this.clearStatus()\n this.$emit('posted', data)\n } else {\n this.error = data.error\n }\n this.posting = false\n })\n },\n previewStatus () {\n if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n this.preview = { error: this.$t('post_status.preview_empty') }\n this.previewLoading = false\n return\n }\n const newStatus = this.newStatus\n this.previewLoading = true\n statusPoster.postStatus({\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: [],\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll: {},\n preview: true\n }).then((data) => {\n // Don't apply preview if not loading, because it means\n // user has closed the preview manually.\n if (!this.previewLoading) return\n if (!data.error) {\n this.preview = data\n } else {\n this.preview = { error: data.error }\n }\n }).catch((error) => {\n this.preview = { error }\n }).finally(() => {\n this.previewLoading = false\n })\n },\n debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n autoPreview () {\n if (!this.preview) return\n this.previewLoading = true\n this.debouncePreviewStatus()\n },\n closePreview () {\n this.preview = null\n this.previewLoading = false\n },\n togglePreview () {\n if (this.showPreview) {\n this.closePreview()\n } else {\n this.previewStatus()\n }\n },\n addMediaFile (fileInfo) {\n this.newStatus.files.push(fileInfo)\n this.$emit('resize', { delayed: true })\n },\n removeMediaFile (fileInfo) {\n const index = this.newStatus.files.indexOf(fileInfo)\n this.newStatus.files.splice(index, 1)\n this.$emit('resize')\n },\n editAttachment (fileInfo, newText) {\n this.newStatus.mediaDescriptions[fileInfo.id] = newText\n },\n shiftUpMediaFile (fileInfo) {\n const { files } = this.newStatus\n const index = this.newStatus.files.indexOf(fileInfo)\n files.splice(index, 1)\n files.splice(index - 1, 0, fileInfo)\n },\n shiftDnMediaFile (fileInfo) {\n const { files } = this.newStatus\n const index = this.newStatus.files.indexOf(fileInfo)\n files.splice(index, 1)\n files.splice(index + 1, 0, fileInfo)\n },\n uploadFailed (errString, templateArgs) {\n templateArgs = templateArgs || {}\n this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n },\n startedUploadingFiles () {\n this.uploadingFiles = true\n },\n finishedUploadingFiles () {\n this.$emit('resize')\n this.uploadingFiles = false\n },\n type (fileInfo) {\n return fileTypeService.fileType(fileInfo.mimetype)\n },\n paste (e) {\n this.autoPreview()\n this.resize(e)\n if (e.clipboardData.files.length > 0) {\n // prevent pasting of file as text\n e.preventDefault()\n // Strangely, files property gets emptied after event propagation\n // Trying to wrap it in array doesn't work. Plus I doubt it's possible\n // to hold more than one file in clipboard.\n this.dropFiles = [e.clipboardData.files[0]]\n }\n },\n fileDrop (e) {\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n e.preventDefault() // allow dropping text like before\n this.dropFiles = e.dataTransfer.files\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'hide'\n }\n },\n fileDragStop (e) {\n // The false-setting is done with delay because just using leave-events\n // directly caused unwanted flickering, this is not perfect either but\n // much less noticable.\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'fade'\n this.dropStopTimeout = setTimeout(() => (this.showDropIcon = 'hide'), 500)\n },\n fileDrag (e) {\n e.dataTransfer.dropEffect = this.uploadFileLimitReached ? 'none' : 'copy'\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'show'\n }\n },\n onEmojiInputInput (e) {\n this.$nextTick(() => {\n this.resize(this.$refs.textarea)\n })\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n\n // Reset to default height for empty form, nothing else to do here.\n if (target.value === '') {\n target.style.height = null\n this.$emit('resize')\n return\n }\n\n const formRef = this.$refs.form\n const bottomRef = this.$refs.bottom\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n const scrollerRef = this.$el.closest('.column.-scrollable') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n\n // Getting info about padding we have to account for, removing 'px' part\n const topPaddingStr = window.getComputedStyle(target)['padding-top']\n const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']\n const topPadding = pxStringToNumber(topPaddingStr)\n const bottomPadding = pxStringToNumber(bottomPaddingStr)\n const vertPadding = topPadding + bottomPadding\n\n const oldHeight = pxStringToNumber(target.style.height)\n\n /* Explanation:\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n * scrollHeight returns element's scrollable content height, i.e. visible\n * element + overscrolled parts of it. We use it to determine when text\n * inside the textarea exceeded its height, so we can set height to prevent\n * overscroll, i.e. make textarea grow with the text. HOWEVER, since we\n * explicitly set new height, scrollHeight won't go below that, so we can't\n * SHRINK the textarea when there's extra space. To workaround that we set\n * height to 'auto' which makes textarea tiny again, so that scrollHeight\n * will match text height again. HOWEVER, shrinking textarea can screw with\n * the scroll since there might be not enough padding around form-bottom to even\n * warrant a scroll, so it will jump to 0 and refuse to move anywhere,\n * so we check current scroll position before shrinking and then restore it\n * with needed delta.\n */\n\n // this part has to be BEFORE the content size update\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n const scrollerBottomBorder = currentScroll + scrollerHeight\n\n // BEGIN content size update\n target.style.height = 'auto'\n const heightWithoutPadding = Math.floor(target.scrollHeight - vertPadding)\n let newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding\n // This is a bit of a hack to combat target.scrollHeight being different on every other input\n // on some browsers for whatever reason. Don't change the height if difference is 1px or less.\n if (Math.abs(newHeight - oldHeight) <= 1) {\n newHeight = oldHeight\n }\n target.style.height = `${newHeight}px`\n this.$emit('resize', newHeight)\n // END content size update\n\n // We check where the bottom border of form-bottom element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n // The intention is basically this;\n // Keep form-bottom always visible so that submit button is in view EXCEPT\n // if form element bigger than scroller and caret isn't at the end, so that\n // if you scroll up and edit middle of text you won't get scrolled back to bottom\n const shouldScrollToBottom = isBottomObstructed &&\n !(isFormBiggerThanScroller &&\n this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n const targetScroll = Math.round(currentScroll + totalDelta)\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n },\n showEmojiPicker () {\n this.$refs.textarea.focus()\n this.$refs['emoji-input'].triggerShowPicker()\n },\n clearError () {\n this.error = null\n },\n changeVis (visibility) {\n this.newStatus.visibility = visibility\n },\n togglePollForm () {\n this.pollFormVisible = !this.pollFormVisible\n },\n setPoll (poll) {\n this.newStatus.poll = poll\n },\n clearPollForm () {\n if (this.$refs.pollForm) {\n this.$refs.pollForm.clear()\n }\n },\n dismissScopeNotice () {\n this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n },\n setMediaDescription (id) {\n const description = this.newStatus.mediaDescriptions[id]\n if (!description || description.trim() === '') return\n return statusPoster.setMediaDescription({ store: this.$store, id, description })\n },\n setAllMediaDescriptions () {\n const ids = this.newStatus.files.map(file => file.id)\n return Promise.all(ids.map(id => this.setMediaDescription(id)))\n },\n handleEmojiInputShow (value) {\n this.emojiInputShown = value\n },\n updateIdempotencyKey () {\n this.idempotencyKey = Date.now().toString()\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n },\n propsToNative (props) {\n return propsToNative(props)\n }\n }\n}\n\nexport default PostStatusForm\n","import { render } from \"./post_status_form.vue?vue&type=template&id=4cafd28a\"\nimport script from \"./post_status_form.js?vue&type=script&lang=js\"\nexport * from \"./post_status_form.js?vue&type=script&lang=js\"\n\nimport \"./post_status_form.vue?vue&type=style&index=0&id=4cafd28a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n :disabled=\"progress || disabled\"\n @click=\"onClick\"\n >\n <template v-if=\"progress && $slots.progress\">\n <slot name=\"progress\" />\n </template>\n <template v-else>\n <slot />\n </template>\n </button>\n</template>\n\n<script>\nexport default {\n props: {\n disabled: {\n type: Boolean\n },\n click: { // click event handler. Must return a promise\n type: Function,\n default: () => Promise.resolve()\n }\n },\n data () {\n return {\n progress: false\n }\n },\n methods: {\n onClick () {\n this.progress = true\n this.click().then(() => { this.progress = false })\n }\n }\n}\n</script>\n","import { render } from \"./progress_button.vue?vue&type=template&id=9f751ae6\"\nimport script from \"./progress_button.vue?vue&type=script&lang=js\"\nexport * from \"./progress_button.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"remote-follow\">\n <form\n method=\"POST\"\n :action=\"subscribeUrl\"\n >\n <input\n type=\"hidden\"\n name=\"nickname\"\n :value=\"user.screen_name\"\n >\n <input\n type=\"hidden\"\n name=\"profile\"\n value=\"\"\n >\n <button\n click=\"submit\"\n class=\"button-default remote-button\"\n >\n {{ $t('user_card.remote_follow') }}\n </button>\n </form>\n </div>\n</template>\n\n<script src=\"./remote_follow.js\"></script>\n\n<style lang=\"scss\">\n.remote-follow {\n max-width: 220px;\n\n .remote-button {\n width: 100%;\n min-height: 2em;\n }\n}\n</style>\n","export default {\n props: ['user'],\n computed: {\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n }\n }\n}\n","import { render } from \"./remote_follow.vue?vue&type=template&id=2aed8421\"\nimport script from \"./remote_follow.js?vue&type=script&lang=js\"\nexport * from \"./remote_follow.js?vue&type=script&lang=js\"\n\nimport \"./remote_follow.vue?vue&type=style&index=0&id=2aed8421&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"!showNothing\"\n class=\"ScopeSelector\"\n >\n <button\n v-if=\"showDirect\"\n class=\"button-unstyled scope\"\n :class=\"css.direct\"\n :title=\"$t('post_status.scope.direct')\"\n type=\"button\"\n @click=\"changeVis('direct')\"\n >\n <FAIcon\n icon=\"envelope\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n {{ ' ' }}\n <button\n v-if=\"showPrivate\"\n class=\"button-unstyled scope\"\n :class=\"css.private\"\n :title=\"$t('post_status.scope.private')\"\n type=\"button\"\n @click=\"changeVis('private')\"\n >\n <FAIcon\n icon=\"lock\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n {{ ' ' }}\n <button\n v-if=\"showUnlisted\"\n class=\"button-unstyled scope\"\n :class=\"css.unlisted\"\n :title=\"$t('post_status.scope.unlisted')\"\n type=\"button\"\n @click=\"changeVis('unlisted')\"\n >\n <FAIcon\n icon=\"lock-open\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n {{ ' ' }}\n <button\n v-if=\"showPublic\"\n class=\"button-unstyled scope\"\n :class=\"css.public\"\n :title=\"$t('post_status.scope.public')\"\n type=\"button\"\n @click=\"changeVis('public')\"\n >\n <FAIcon\n icon=\"globe\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n </div>\n</template>\n\n<script src=\"./scope_selector.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.ScopeSelector {\n .scope {\n display: inline-block;\n cursor: pointer;\n min-width: 1.3em;\n min-height: 1.3em;\n text-align: center;\n\n &.selected svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen\n)\n\nconst ScopeSelector = {\n props: [\n 'showAll',\n 'userDefault',\n 'originalScope',\n 'initialScope',\n 'onScopeChange'\n ],\n data () {\n return {\n currentScope: this.initialScope\n }\n },\n computed: {\n showNothing () {\n return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n },\n showPublic () {\n return this.originalScope !== 'direct' && this.shouldShow('public')\n },\n showUnlisted () {\n return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n },\n showPrivate () {\n return this.originalScope !== 'direct' && this.shouldShow('private')\n },\n showDirect () {\n return this.shouldShow('direct')\n },\n css () {\n return {\n public: { selected: this.currentScope === 'public' },\n unlisted: { selected: this.currentScope === 'unlisted' },\n private: { selected: this.currentScope === 'private' },\n direct: { selected: this.currentScope === 'direct' }\n }\n }\n },\n methods: {\n shouldShow (scope) {\n return this.showAll ||\n this.currentScope === scope ||\n this.originalScope === scope ||\n this.userDefault === scope ||\n scope === 'direct'\n },\n changeVis (scope) {\n this.currentScope = scope\n this.onScopeChange && this.onScopeChange(scope)\n }\n }\n}\n\nexport default ScopeSelector\n","import { render } from \"./scope_selector.vue?vue&type=template&id=3b2dbc9a\"\nimport script from \"./scope_selector.js?vue&type=script&lang=js\"\nexport * from \"./scope_selector.js?vue&type=script&lang=js\"\n\nimport \"./scope_selector.vue?vue&type=style&index=0&id=3b2dbc9a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronDown\n)\n\nexport default {\n emits: ['update:modelValue'],\n props: [\n 'modelValue',\n 'disabled',\n 'unstyled',\n 'kind',\n 'attrs'\n ]\n}\n","import { render } from \"./select.vue?vue&type=template&id=1f77c9b6\"\nimport script from \"./select.js?vue&type=script&lang=js\"\nexport * from \"./select.js?vue&type=script&lang=js\"\n\nimport \"./select.vue?vue&type=style&index=0&id=1f77c9b6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"Select input\"\n :class=\"{ disabled, unstyled }\"\n >\n <select\n :disabled=\"disabled\"\n :value=\"modelValue\"\n v-bind=\"attrs\"\n @change=\"$emit('update:modelValue', $event.target.value)\"\n >\n <slot />\n </select>\n {{ ' ' }}\n <FAIcon\n class=\"select-down-icon\"\n icon=\"chevron-down\"\n />\n </label>\n</template>\n\n<script src=\"./select.js\"> </script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n/* TODO fix order of styles */\nlabel.Select {\n padding: 0;\n\n select {\n appearance: none;\n background: transparent;\n border: none;\n color: $fallback--text;\n color: var(--inputText, --text, $fallback--text);\n margin: 0;\n padding: 0 2em 0 0.2em;\n font-family: sans-serif;\n font-family: var(--inputFont, sans-serif);\n font-size: 1em;\n width: 100%;\n z-index: 1;\n height: 2em;\n line-height: 16px;\n }\n\n .select-down-icon {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 5px;\n height: 100%;\n width: 0.875em;\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n line-height: 2;\n z-index: 0;\n pointer-events: none;\n }\n}\n</style>\n","<template>\n <div\n v-if=\"!hideStatus\"\n ref=\"root\"\n class=\"Status\"\n :class=\"[{ '-focused': isFocused }, { '-conversation': inlineExpanded }]\"\n >\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ error }}\n <span\n class=\"fa-scale-110 fa-old-padding\"\n @click=\"clearError\"\n >\n <FAIcon icon=\"times\" />\n </span>\n </div>\n <template v-if=\"muted && !isPreview\">\n <div class=\"status-container muted\">\n <small class=\"status-username\">\n <FAIcon\n v-if=\"muted && retweet\"\n class=\"fa-scale-110 fa-old-padding repeat-icon\"\n icon=\"retweet\"\n />\n <user-link\n :user=\"status.user\"\n :at=\"false\"\n />\n </small>\n <small\n v-if=\"showReasonMutedThread\"\n class=\"mute-thread\"\n >\n {{ $t('status.thread_muted') }}\n </small>\n <small\n v-if=\"showReasonMutedThread && muteWordHits.length > 0\"\n class=\"mute-thread\"\n >\n {{ $t('status.thread_muted_and_words') }}\n </small>\n <small\n class=\"mute-words\"\n :title=\"muteWordHits.join(', ')\"\n >\n {{ muteWordHits.join(', ') }}\n </small>\n <button\n class=\"unmute button-unstyled\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n icon=\"eye-slash\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n </div>\n </template>\n <template v-else>\n <div\n v-if=\"showPinned\"\n class=\"pin\"\n >\n <FAIcon\n icon=\"thumbtack\"\n class=\"faint\"\n />\n <span class=\"faint\">{{ $t('status.pinned') }}</span>\n </div>\n <div\n v-if=\"retweet && !noHeading && !inConversation\"\n :class=\"[repeaterClass, { highlighted: repeaterStyle }]\"\n :style=\"[repeaterStyle]\"\n class=\"status-container repeat-info\"\n >\n <UserAvatar\n v-if=\"retweet\"\n class=\"left-side repeater-avatar\"\n :bot=\"rtBotIndicator\"\n :better-shadow=\"betterShadow\"\n :user=\"statusoid.user\"\n />\n <div class=\"right-side faint\">\n <bdi\n class=\"status-username repeater-name\"\n :title=\"retweeter\"\n >\n <router-link\n v-if=\"retweeterHtml\"\n :to=\"retweeterProfileLink\"\n >\n <RichContent\n :html=\"retweeterHtml\"\n :emoji=\"retweeterUser.emoji\"\n />\n </router-link>\n <router-link\n v-else\n :to=\"retweeterProfileLink\"\n >{{ retweeter }}</router-link>\n </bdi>\n {{ ' ' }}\n <FAIcon\n icon=\"retweet\"\n class=\"repeat-icon\"\n :title=\"$t('tool_tip.repeat')\"\n />\n {{ $t('timeline.repeated') }}\n </div>\n </div>\n\n <div\n v-if=\"!deleted\"\n :class=\"[userClass, { highlighted: userStyle, '-repeat': retweet && !inConversation }]\"\n :style=\"[ userStyle ]\"\n class=\"status-container\"\n :data-tags=\"tags\"\n >\n <div\n v-if=\"!noHeading\"\n class=\"left-side\"\n >\n <a\n :href=\"$router.resolve(userProfileLink).href\"\n @click.prevent\n >\n <UserPopover\n :user-id=\"status.user.id\"\n :overlay-centers=\"true\"\n >\n <UserAvatar\n class=\"post-avatar\"\n :bot=\"botIndicator\"\n :compact=\"compact\"\n :better-shadow=\"betterShadow\"\n :user=\"status.user\"\n />\n </UserPopover>\n </a>\n </div>\n <div class=\"right-side\">\n <div\n v-if=\"!noHeading\"\n class=\"status-heading\"\n >\n <div class=\"heading-name-row\">\n <div class=\"heading-left\">\n <h4\n v-if=\"status.user.name_html\"\n class=\"status-username\"\n :title=\"status.user.name\"\n >\n <RichContent\n :html=\"status.user.name\"\n :emoji=\"status.user.emoji\"\n />\n </h4>\n <h4\n v-else\n class=\"status-username\"\n :title=\"status.user.name\"\n >\n {{ status.user.name }}\n </h4>\n <user-link\n class=\"account-name\"\n :title=\"status.user.screen_name_ui\"\n :user=\"status.user\"\n :at=\"false\"\n />\n <img\n v-if=\"!!(status.user && status.user.favicon)\"\n class=\"status-favicon\"\n :src=\"status.user.favicon\"\n >\n </div>\n\n <span class=\"heading-right\">\n <router-link\n class=\"timeago faint-link\"\n :to=\"{ name: 'conversation', params: { id: status.id } }\"\n >\n <Timeago\n :time=\"status.created_at\"\n :auto-update=\"60\"\n />\n </router-link>\n <span\n v-if=\"status.visibility\"\n class=\"visibility-icon\"\n :title=\"visibilityLocalized\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"visibilityIcon(status.visibility)\"\n />\n </span>\n <button\n v-if=\"expandable && !isPreview\"\n class=\"button-unstyled\"\n :title=\"$t('status.expand')\"\n @click.prevent=\"toggleExpanded\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"plus-square\"\n />\n </button>\n <button\n v-if=\"unmuted\"\n class=\"button-unstyled\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n class=\"fa-scale-110\"\n />\n </button>\n <button\n v-if=\"inThreadForest && replies && replies.length && !simpleTree\"\n class=\"button-unstyled\"\n :title=\"threadShowing ? $t('status.thread_hide') : $t('status.thread_show')\"\n :aria-expanded=\"threadShowing ? 'true' : 'false'\"\n @click.prevent=\"toggleThreadDisplay\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"threadShowing ? 'chevron-up' : 'chevron-down'\"\n />\n </button>\n <button\n v-if=\"dive && !simpleTree\"\n class=\"button-unstyled\"\n :title=\"$t('status.show_only_conversation_under_this')\"\n @click.prevent=\"dive\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"'angle-double-right'\"\n />\n </button>\n </span>\n </div>\n <div\n v-if=\"isReply || hasMentionsLine\"\n class=\"heading-reply-row\"\n >\n <span\n v-if=\"isReply\"\n class=\"glued-label reply-glued-label\"\n >\n <StatusPopover\n v-if=\"!isPreview\"\n :status-id=\"status.parent_visible && status.in_reply_to_status_id\"\n class=\"reply-to-popover\"\n style=\"min-width: 0;\"\n :class=\"{ '-strikethrough': !status.parent_visible }\"\n >\n <button\n class=\"button-unstyled reply-to\"\n :aria-label=\"$t('tool_tip.reply')\"\n @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"reply\"\n flip=\"horizontal\"\n />\n {{ ' ' }}\n <span\n class=\"reply-to-text\"\n >\n {{ $t('status.reply_to') }}\n </span>\n </button>\n </StatusPopover>\n\n <span\n v-else\n class=\"reply-to-no-popover\"\n >\n <span class=\"reply-to-text\">{{ $t('status.reply_to') }}</span>\n </span>\n <MentionLink\n :content=\"replyToName\"\n :url=\"replyProfileLink\"\n :user-id=\"status.in_reply_to_user_id\"\n :user-screen-name=\"status.in_reply_to_screen_name\"\n />\n </span>\n\n <!-- This little wrapper is made for sole purpose of \"gluing\" -->\n <!-- \"Mentions\" label to the first mention -->\n <span\n v-if=\"hasMentionsLine\"\n class=\"glued-label\"\n >\n <span\n class=\"mentions\"\n :aria-label=\"$t('tool_tip.mentions')\"\n @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n >\n <span\n class=\"mentions-text\"\n >\n {{ $t('status.mentions') }}\n </span>\n </span>\n <MentionsLine\n v-if=\"hasMentionsLine\"\n :mentions=\"mentionsLine.slice(0, 1)\"\n class=\"mentions-line-first\"\n />\n </span>\n {{ ' ' }}\n <MentionsLine\n v-if=\"hasMentionsLine\"\n :mentions=\"mentionsLine.slice(1)\"\n class=\"mentions-line\"\n />\n </div>\n <div\n v-if=\"isEdited && editingAvailable && !isPreview\"\n class=\"heading-edited-row\"\n >\n <i18n-t\n keypath=\"status.edited_at\"\n tag=\"span\"\n >\n <template #time>\n <Timeago\n template-key=\"time.in_past\"\n :time=\"status.edited_at\"\n :auto-update=\"60\"\n :long-format=\"true\"\n />\n </template>\n </i18n-t>\n </div>\n </div>\n\n <StatusContent\n ref=\"content\"\n :status=\"status\"\n :no-heading=\"noHeading\"\n :highlight=\"highlight\"\n :focused=\"isFocused\"\n :controlled-showing-tall=\"controlledShowingTall\"\n :controlled-expanding-subject=\"controlledExpandingSubject\"\n :controlled-showing-long-subject=\"controlledShowingLongSubject\"\n :controlled-toggle-showing-tall=\"controlledToggleShowingTall\"\n :controlled-toggle-expanding-subject=\"controlledToggleExpandingSubject\"\n :controlled-toggle-showing-long-subject=\"controlledToggleShowingLongSubject\"\n @mediaplay=\"addMediaPlaying($event)\"\n @mediapause=\"removeMediaPlaying($event)\"\n @parseReady=\"setHeadTailLinks\"\n />\n\n <div\n v-if=\"inConversation && !isPreview && replies && replies.length\"\n class=\"replies\"\n >\n <button\n v-if=\"showOtherRepliesAsButton && replies.length > 1\"\n class=\"button-unstyled -link faint\"\n :title=\"$tc('status.ancestor_follow', replies.length - 1, { numReplies: replies.length - 1 })\"\n @click.prevent=\"dive\"\n >\n {{ $tc('status.replies_list_with_others', replies.length - 1, { numReplies: replies.length - 1 }) }}\n </button>\n <span\n v-else\n class=\"faint\"\n >\n {{ $t('status.replies_list') }}\n </span>\n <StatusPopover\n v-for=\"reply in replies\"\n :key=\"reply.id\"\n :status-id=\"reply.id\"\n >\n <button\n class=\"button-unstyled -link reply-link\"\n @click.prevent=\"gotoOriginal(reply.id)\"\n >\n {{ reply.name }}\n </button>\n </StatusPopover>\n </div>\n\n <transition name=\"fade\">\n <div\n v-if=\"!hidePostStats && isFocused && combinedFavsAndRepeatsUsers.length > 0\"\n class=\"favs-repeated-users\"\n >\n <div class=\"stats\">\n <UserListPopover\n v-if=\"statusFromGlobalRepository.rebloggedBy && statusFromGlobalRepository.rebloggedBy.length > 0\"\n :users=\"statusFromGlobalRepository.rebloggedBy\"\n >\n <div class=\"stat-count\">\n <a class=\"stat-title\">{{ $t('status.repeats') }}</a>\n <div class=\"stat-number\">\n {{ statusFromGlobalRepository.rebloggedBy.length }}\n </div>\n </div>\n </UserListPopover>\n <UserListPopover\n v-if=\"statusFromGlobalRepository.favoritedBy && statusFromGlobalRepository.favoritedBy.length > 0\"\n :users=\"statusFromGlobalRepository.favoritedBy\"\n >\n <div\n class=\"stat-count\"\n >\n <a class=\"stat-title\">{{ $t('status.favorites') }}</a>\n <div class=\"stat-number\">\n {{ statusFromGlobalRepository.favoritedBy.length }}\n </div>\n </div>\n </UserListPopover>\n <div class=\"avatar-row\">\n <AvatarList :users=\"combinedFavsAndRepeatsUsers\" />\n </div>\n </div>\n </div>\n </transition>\n\n <EmojiReactions\n v-if=\"(mergedConfig.emojiReactionsOnTimeline || isFocused) && (!noHeading && !isPreview)\"\n :status=\"status\"\n />\n\n <div\n v-if=\"!noHeading && !isPreview\"\n class=\"status-actions\"\n >\n <reply-button\n :replying=\"replying\"\n :status=\"status\"\n @toggle=\"toggleReplying\"\n />\n <retweet-button\n :visibility=\"status.visibility\"\n :logged-in=\"loggedIn\"\n :status=\"status\"\n />\n <favorite-button\n :logged-in=\"loggedIn\"\n :status=\"status\"\n />\n <ReactButton\n v-if=\"loggedIn\"\n :status=\"status\"\n />\n <extra-buttons\n :status=\"status\"\n @onError=\"showError\"\n @onSuccess=\"clearError\"\n />\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"gravestone\"\n >\n <div class=\"left-side\">\n <UserAvatar\n class=\"post-avatar\"\n :compact=\"compact\"\n :bot=\"botIndicator\"\n />\n </div>\n <div class=\"right-side\">\n <div class=\"deleted-text\">\n {{ $t('status.status_deleted') }}\n </div>\n <reply-button\n v-if=\"replying\"\n :replying=\"replying\"\n :status=\"status\"\n @toggle=\"toggleReplying\"\n />\n </div>\n </div>\n <div\n v-if=\"replying\"\n class=\"status-container reply-form\"\n >\n <PostStatusForm\n class=\"reply-body\"\n :reply-to=\"status.id\"\n :attentions=\"status.attentions\"\n :replied-user=\"status.user\"\n :copy-message-scope=\"status.visibility\"\n :subject=\"replySubject\"\n @posted=\"toggleReplying\"\n />\n </div>\n </template>\n </div>\n</template>\n\n<script src=\"./status.js\"></script>\n\n<style src=\"./status.scss\" lang=\"scss\"></style>\n","<template>\n <div class=\"ReplyButton\">\n <button\n v-if=\"loggedIn\"\n class=\"button-unstyled interactive\"\n :class=\"{'-active': replying}\"\n :title=\"$t('tool_tip.reply')\"\n @click.prevent=\"$emit('toggle')\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"reply\"\n />\n <FAIcon\n v-if=\"!replying\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-11\"\n icon=\"plus\"\n />\n <FAIcon\n v-else\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-11\"\n icon=\"times\"\n />\n </FALayers>\n </button>\n <a\n v-else\n class=\"button-unstyled interactive\"\n target=\"_blank\"\n role=\"button\"\n :href=\"remoteInteractionLink\"\n :title=\"$t('tool_tip.reply')\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"reply\"\n />\n <FAIcon\n v-if=\"!replying\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-16\"\n icon=\"plus\"\n />\n </FALayers>\n </a>\n <span\n v-if=\"status.replies_count > 0\"\n class=\"action-counter\"\n >\n {{ status.replies_count }}\n </span>\n </div>\n</template>\n\n<script src=\"./reply_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ReplyButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n &:hover .svg-inline--fa,\n &.-active .svg-inline--fa {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faReply,\n faPlus,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faReply,\n faPlus,\n faTimes\n)\n\nconst ReplyButton = {\n name: 'ReplyButton',\n props: ['status', 'replying'],\n computed: {\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n remoteInteractionLink () {\n return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n }\n }\n}\n\nexport default ReplyButton\n","import { render } from \"./reply_button.vue?vue&type=template&id=a7dc5ddc\"\nimport script from \"./reply_button.js?vue&type=script&lang=js\"\nexport * from \"./reply_button.js?vue&type=script&lang=js\"\n\nimport \"./reply_button.vue?vue&type=style&index=0&id=a7dc5ddc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"FavoriteButton\">\n <button\n v-if=\"loggedIn\"\n class=\"button-unstyled interactive\"\n :class=\"status.favorited && '-favorited'\"\n :title=\"$t('tool_tip.favorite')\"\n @click.prevent=\"favorite()\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n :icon=\"[status.favorited ? 'fas' : 'far', 'star']\"\n :spin=\"animated\"\n />\n <FAIcon\n v-if=\"status.favorited\"\n class=\"active-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"check\"\n />\n <FAIcon\n v-if=\"!status.favorited\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n <FAIcon\n v-else\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"minus\"\n />\n </FALayers>\n </button>\n <a\n v-else\n class=\"button-unstyled interactive\"\n target=\"_blank\"\n role=\"button\"\n :title=\"$t('tool_tip.favorite')\"\n :href=\"remoteInteractionLink\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n :icon=\"['far', 'star']\"\n />\n <FAIcon\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n </FALayers>\n </a>\n <span\n v-if=\"!mergedConfig.hidePostStats && status.fave_num > 0\"\n class=\"action-counter\"\n >\n {{ status.fave_num }}\n </span>\n </div>\n</template>\n\n<script src=\"./favorite_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.FavoriteButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-favorited .svg-inline--fa {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n}\n</style>\n","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faStar,\n faPlus,\n faMinus,\n faCheck\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faStar,\n faStarRegular,\n faPlus,\n faMinus,\n faCheck\n)\n\nconst FavoriteButton = {\n props: ['status', 'loggedIn'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n favorite () {\n if (!this.status.favorited) {\n this.$store.dispatch('favorite', { id: this.status.id })\n } else {\n this.$store.dispatch('unfavorite', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n remoteInteractionLink () {\n return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n }\n }\n}\n\nexport default FavoriteButton\n","import { render } from \"./favorite_button.vue?vue&type=template&id=195db34e\"\nimport script from \"./favorite_button.js?vue&type=script&lang=js\"\nexport * from \"./favorite_button.js?vue&type=script&lang=js\"\n\nimport \"./favorite_button.vue?vue&type=style&index=0&id=195db34e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"ReactButton\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n popover-class=\"ReactButton popover-default\"\n @show=\"onShow\"\n @close=\"onClose\"\n >\n <template #content=\"{close}\">\n <div class=\"reaction-picker-filter\">\n <input\n v-model=\"filterWord\"\n size=\"1\"\n :placeholder=\"$t('emoji.search_emoji')\"\n @input=\"$event.target.composing = false\"\n >\n </div>\n <div class=\"reaction-picker\">\n <span\n v-for=\"emoji in commonEmojis\"\n :key=\"emoji.replacement\"\n class=\"emoji-button\"\n :title=\"maybeLocalizedEmojiName(emoji)\"\n @click=\"addReaction($event, emoji.replacement, close)\"\n >\n {{ emoji.replacement }}\n </span>\n <div class=\"reaction-picker-divider\" />\n <span\n v-for=\"(emoji, key) in emojis\"\n :key=\"key\"\n class=\"emoji-button\"\n :title=\"maybeLocalizedEmojiName(emoji)\"\n @click=\"addReaction($event, emoji.replacement, close)\"\n >\n {{ emoji.replacement }}\n </span>\n <div class=\"reaction-bottom-fader\" />\n </div>\n </template>\n <template #trigger>\n <span\n class=\"button-unstyled popover-trigger\"\n :title=\"$t('tool_tip.add_reaction')\"\n >\n <FALayers>\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n :icon=\"['far', 'smile-beam']\"\n />\n <FAIcon\n v-show=\"!expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-17\"\n icon=\"plus\"\n />\n <FAIcon\n v-show=\"expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-17\"\n icon=\"times\"\n />\n </FALayers>\n </span>\n </template>\n </Popover>\n</template>\n\n<script src=\"./react_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ReactButton {\n .reaction-picker-filter {\n padding: 0.5em;\n display: flex;\n\n input {\n flex: 1;\n }\n }\n\n .reaction-picker-divider {\n height: 1px;\n width: 100%;\n margin: 0.5em;\n background-color: var(--border, $fallback--border);\n }\n\n .reaction-picker {\n width: 10em;\n height: 9em;\n font-size: 1.5em;\n overflow-y: scroll;\n display: flex;\n flex-wrap: wrap;\n padding: 0.5em;\n text-align: center;\n align-content: flex-start;\n user-select: none;\n mask:\n linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n linear-gradient(to top, white, white);\n transition: mask-size 150ms;\n mask-size: 100% 20px, 100% 20px, auto;\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n\n .emoji-button {\n cursor: pointer;\n flex-basis: 20%;\n line-height: 1.5;\n align-content: center;\n\n &:hover {\n transform: scale(1.25);\n }\n }\n }\n\n .popover-trigger {\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .popover-trigger-button {\n /* override of popover internal stuff */\n width: auto;\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport { ensureFinalFallback } from '../../i18n/languages.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faPlus, faTimes } from '@fortawesome/free-solid-svg-icons'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\nimport { trim } from 'lodash'\n\nlibrary.add(\n faPlus,\n faTimes,\n faSmileBeam\n)\n\nconst ReactButton = {\n props: ['status'],\n data () {\n return {\n filterWord: '',\n expanded: false\n }\n },\n components: {\n Popover\n },\n methods: {\n addReaction (event, emoji, close) {\n const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n if (existingReaction && existingReaction.me) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n } else {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n }\n close()\n },\n onShow () {\n this.expanded = true\n this.focusInput()\n },\n onClose () {\n this.expanded = false\n },\n focusInput () {\n this.$nextTick(() => {\n const input = document.querySelector('.reaction-picker-filter > input')\n if (input) input.focus()\n })\n },\n // Vaguely adjusted copypaste from emoji_input and emoji_picker!\n maybeLocalizedEmojiNamesAndKeywords (emoji) {\n const names = [emoji.displayText]\n const keywords = []\n\n if (emoji.displayTextI18n) {\n names.push(this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args))\n }\n\n if (emoji.annotations) {\n this.languages.forEach(lang => {\n names.push(emoji.annotations[lang]?.name)\n\n keywords.push(...(emoji.annotations[lang]?.keywords || []))\n })\n }\n\n return {\n names: names.filter(k => k),\n keywords: keywords.filter(k => k)\n }\n },\n maybeLocalizedEmojiName (emoji) {\n if (!emoji.annotations) {\n return emoji.displayText\n }\n\n if (emoji.displayTextI18n) {\n return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)\n }\n\n for (const lang of this.languages) {\n if (emoji.annotations[lang]?.name) {\n return emoji.annotations[lang].name\n }\n }\n\n return emoji.displayText\n }\n },\n computed: {\n commonEmojis () {\n const hardcodedSet = new Set(['👍', '😠', '👀', '😂', '🔥'])\n return this.$store.getters.standardEmojiList.filter(emoji => hardcodedSet.has(emoji.replacement))\n },\n languages () {\n return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)\n },\n emojis () {\n if (this.filterWord !== '') {\n const keywordLowercase = trim(this.filterWord.toLowerCase())\n\n const orderedEmojiList = []\n for (const emoji of this.$store.getters.standardEmojiList) {\n const indices = this.maybeLocalizedEmojiNamesAndKeywords(emoji)\n .keywords\n .map(k => k.toLowerCase().indexOf(keywordLowercase))\n .filter(k => k > -1)\n\n const indexOfKeyword = indices.length ? Math.min(...indices) : -1\n\n if (indexOfKeyword > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n orderedEmojiList[indexOfKeyword] = []\n }\n orderedEmojiList[indexOfKeyword].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n }\n return this.$store.getters.standardEmojiList || []\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default ReactButton\n","import { render } from \"./react_button.vue?vue&type=template&id=2ab2dac0\"\nimport script from \"./react_button.js?vue&type=script&lang=js\"\nexport * from \"./react_button.js?vue&type=script&lang=js\"\n\nimport \"./react_button.vue?vue&type=style&index=0&id=2ab2dac0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"RetweetButton\">\n <button\n v-if=\"visibility !== 'private' && visibility !== 'direct' && loggedIn\"\n class=\"button-unstyled interactive\"\n :class=\"status.repeated && '-repeated'\"\n :title=\"$t('tool_tip.repeat')\"\n @click.prevent=\"retweet()\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"retweet\"\n :spin=\"animated\"\n />\n <FAIcon\n v-if=\"status.repeated\"\n class=\"active-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"check\"\n />\n <FAIcon\n v-if=\"!status.repeated\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n <FAIcon\n v-else\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"minus\"\n />\n </FALayers>\n </button>\n <span v-else-if=\"loggedIn\">\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"lock\"\n :title=\"$t('timeline.no_retweet_hint')\"\n />\n </span>\n <a\n v-else\n class=\"button-unstyled interactive\"\n target=\"_blank\"\n role=\"button\"\n :title=\"$t('tool_tip.repeat')\"\n :href=\"remoteInteractionLink\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"retweet\"\n />\n <FAIcon\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n </FALayers>\n </a>\n <span\n v-if=\"!mergedConfig.hidePostStats && status.repeat_num > 0\"\n class=\"no-event\"\n >\n {{ status.repeat_num }}\n </span>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmDialog\"\n :title=\"$t('status.repeat_confirm_title')\"\n :confirm-text=\"$t('status.repeat_confirm_accept_button')\"\n :cancel-text=\"$t('status.repeat_confirm_cancel_button')\"\n @accepted=\"doRetweet\"\n @cancelled=\"hideConfirmDialog\"\n >\n {{ $t('status.repeat_confirm') }}\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./retweet_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.RetweetButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-repeated .svg-inline--fa {\n color: $fallback--cGreen;\n color: var(--cGreen, $fallback--cGreen);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n}\n</style>\n","import ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faRetweet,\n faPlus,\n faMinus,\n faCheck\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRetweet,\n faPlus,\n faMinus,\n faCheck\n)\n\nconst RetweetButton = {\n props: ['status', 'loggedIn', 'visibility'],\n components: {\n ConfirmModal\n },\n data () {\n return {\n animated: false,\n showingConfirmDialog: false\n }\n },\n methods: {\n retweet () {\n if (!this.status.repeated && this.shouldConfirmRepeat) {\n this.showConfirmDialog()\n } else {\n this.doRetweet()\n }\n },\n doRetweet () {\n if (!this.status.repeated) {\n this.$store.dispatch('retweet', { id: this.status.id })\n } else {\n this.$store.dispatch('unretweet', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n this.hideConfirmDialog()\n },\n showConfirmDialog () {\n this.showingConfirmDialog = true\n },\n hideConfirmDialog () {\n this.showingConfirmDialog = false\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n remoteInteractionLink () {\n return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n },\n shouldConfirmRepeat () {\n return this.mergedConfig.modalOnRepeat\n }\n }\n}\n\nexport default RetweetButton\n","import { render } from \"./retweet_button.vue?vue&type=template&id=3a6122b4\"\nimport script from \"./retweet_button.js?vue&type=script&lang=js\"\nexport * from \"./retweet_button.js?vue&type=script&lang=js\"\n\nimport \"./retweet_button.vue?vue&type=style&index=0&id=3a6122b4&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n class=\"ExtraButtons\"\n trigger=\"click\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n @show=\"onShow\"\n @close=\"onClose\"\n >\n <template #content=\"{close}\">\n <div class=\"dropdown-menu\">\n <button\n v-if=\"canMute && !status.thread_muted\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"muteConversation\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n /><span>{{ $t(\"status.mute_conversation\") }}</span>\n </button>\n <button\n v-if=\"canMute && status.thread_muted\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unmuteConversation\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n /><span>{{ $t(\"status.unmute_conversation\") }}</span>\n </button>\n <button\n v-if=\"!status.pinned && canPin\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"pinStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"thumbtack\"\n /><span>{{ $t(\"status.pin\") }}</span>\n </button>\n <button\n v-if=\"status.pinned && canPin\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unpinStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"thumbtack\"\n /><span>{{ $t(\"status.unpin\") }}</span>\n </button>\n <template v-if=\"canBookmark\">\n <button\n v-if=\"!status.bookmarked\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"bookmarkStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n :icon=\"['far', 'bookmark']\"\n /><span>{{ $t(\"status.bookmark\") }}</span>\n </button>\n <button\n v-if=\"status.bookmarked\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"unbookmarkStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"bookmark\"\n /><span>{{ $t(\"status.unbookmark\") }}</span>\n </button>\n </template>\n <button\n v-if=\"ownStatus && editingAvailable\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"editStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"pen\"\n /><span>{{ $t(\"status.edit\") }}</span>\n </button>\n <button\n v-if=\"isEdited && editingAvailable\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"showStatusHistory\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"history\"\n /><span>{{ $t(\"status.status_history\") }}</span>\n </button>\n <button\n v-if=\"canDelete\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"deleteStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n /><span>{{ $t(\"status.delete\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"copyLink\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"share-alt\"\n /><span>{{ $t(\"status.copy_link\") }}</span>\n </button>\n <a\n v-if=\"!status.is_local\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n title=\"Source\"\n :href=\"status.external_url\"\n target=\"_blank\"\n >\n <FAIcon\n fixed-width\n icon=\"external-link-alt\"\n /><span>{{ $t(\"status.external_source\") }}</span>\n </a>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click.prevent=\"reportStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n :icon=\"['far', 'flag']\"\n /><span>{{ $t(\"user_card.report\") }}</span>\n </button>\n </div>\n </template>\n <template #trigger>\n <span class=\"button-unstyled popover-trigger\">\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110 \"\n icon=\"ellipsis-h\"\n />\n <FAIcon\n v-show=\"!expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-16\"\n icon=\"plus\"\n />\n <FAIcon\n v-show=\"expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-16\"\n icon=\"times\"\n />\n </FALayers>\n </span>\n <teleport to=\"#modal\">\n <ConfirmModal\n v-if=\"showingDeleteDialog\"\n :title=\"$t('status.delete_confirm_title')\"\n :cancel-text=\"$t('status.delete_confirm_cancel_button')\"\n :confirm-text=\"$t('status.delete_confirm_accept_button')\"\n @cancelled=\"hideDeleteStatusConfirmDialog\"\n @accepted=\"doDeleteStatus\"\n >\n {{ $t('status.delete_confirm') }}\n </ConfirmModal>\n </teleport>\n </template>\n </Popover>\n</template>\n\n<script src=\"./extra_buttons.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ExtraButtons {\n .popover-trigger {\n position: static;\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .popover-trigger-button {\n /* override of popover internal stuff */\n width: auto;\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n</style>\n","import Popover from '../popover/popover.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisH,\n faBookmark,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt,\n faHistory,\n faPlus,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faBookmark as faBookmarkReg,\n faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faEllipsisH,\n faBookmark,\n faBookmarkReg,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt,\n faFlag,\n faHistory,\n faPlus,\n faTimes\n)\n\nconst ExtraButtons = {\n props: ['status'],\n components: {\n Popover,\n ConfirmModal\n },\n data () {\n return {\n expanded: false,\n showingDeleteDialog: false\n }\n },\n methods: {\n onShow () {\n this.expanded = true\n },\n onClose () {\n this.expanded = false\n },\n deleteStatus () {\n if (this.shouldConfirmDelete) {\n this.showDeleteStatusConfirmDialog()\n } else {\n this.doDeleteStatus()\n }\n },\n doDeleteStatus () {\n this.$store.dispatch('deleteStatus', { id: this.status.id })\n this.hideDeleteStatusConfirmDialog()\n },\n showDeleteStatusConfirmDialog () {\n this.showingDeleteDialog = true\n },\n hideDeleteStatusConfirmDialog () {\n this.showingDeleteDialog = false\n },\n pinStatus () {\n this.$store.dispatch('pinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unpinStatus () {\n this.$store.dispatch('unpinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n muteConversation () {\n this.$store.dispatch('muteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unmuteConversation () {\n this.$store.dispatch('unmuteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n copyLink () {\n navigator.clipboard.writeText(this.statusLink)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n bookmarkStatus () {\n this.$store.dispatch('bookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unbookmarkStatus () {\n this.$store.dispatch('unbookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n reportStatus () {\n this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n },\n editStatus () {\n this.$store.dispatch('fetchStatusSource', { id: this.status.id })\n .then(data => this.$store.dispatch('openEditStatusModal', {\n statusId: this.status.id,\n subject: data.spoiler_text,\n statusText: data.text,\n statusIsSensitive: this.status.nsfw,\n statusPoll: this.status.poll,\n statusFiles: [...this.status.attachments],\n visibility: this.status.visibility,\n statusContentType: data.content_type\n }))\n },\n showStatusHistory () {\n const originalStatus = { ...this.status }\n const stripFieldsList = ['attachments', 'created_at', 'emojis', 'text', 'raw_html', 'nsfw', 'poll', 'summary', 'summary_raw_html']\n stripFieldsList.forEach(p => delete originalStatus[p])\n this.$store.dispatch('openStatusHistoryModal', originalStatus)\n }\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n canDelete () {\n if (!this.currentUser) { return }\n return this.currentUser.privileges.includes('messages_delete') || this.status.user.id === this.currentUser.id\n },\n ownStatus () {\n return this.status.user.id === this.currentUser.id\n },\n canPin () {\n return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n },\n canMute () {\n return !!this.currentUser\n },\n canBookmark () {\n return !!this.currentUser\n },\n statusLink () {\n return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n },\n isEdited () {\n return this.status.edited_at !== null\n },\n editingAvailable () { return this.$store.state.instance.editingAvailable },\n shouldConfirmDelete () {\n return this.$store.getters.mergedConfig.modalOnDelete\n }\n }\n}\n\nexport default ExtraButtons\n","import { render } from \"./extra_buttons.vue?vue&type=template&id=6fcf5bb3\"\nimport script from \"./extra_buttons.js?vue&type=script&lang=js\"\nexport * from \"./extra_buttons.js?vue&type=script&lang=js\"\n\nimport \"./extra_buttons.vue?vue&type=style&index=0&id=6fcf5bb3&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n ref=\"popover\"\n trigger=\"hover\"\n :stay-on-click=\"true\"\n popover-class=\"popover-default status-popover\"\n :bound-to=\"{ x: 'container' }\"\n @show=\"enter\"\n >\n <template #trigger>\n <slot />\n </template>\n <template #content>\n <Status\n v-if=\"status\"\n :is-preview=\"true\"\n :statusoid=\"status\"\n :compact=\"true\"\n />\n <div\n v-else-if=\"error\"\n class=\"status-preview-no-content faint\"\n >\n {{ $t('status.status_unavailable') }}\n </div>\n <div\n v-else\n class=\"status-preview-no-content\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"2x\"\n />\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./status_popover.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n/* popover styles load on-demand, so we need to override */\n.status-popover.popover {\n font-size: 1rem;\n min-width: 15em;\n max-width: 95%;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n\n /* TODO cleanup this */\n .Status.Status {\n border: none;\n }\n\n .status-preview-no-content {\n padding: 1em;\n text-align: center;\n\n i {\n font-size: 2em;\n }\n }\n}\n\n</style>\n","import { find } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\nimport { defineAsyncComponent } from 'vue'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst StatusPopover = {\n name: 'StatusPopover',\n props: [\n 'statusId'\n ],\n data () {\n return {\n error: false\n }\n },\n computed: {\n status () {\n return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n }\n },\n components: {\n Status: defineAsyncComponent(() => import('../status/status.vue')),\n Popover: defineAsyncComponent(() => import('../popover/popover.vue'))\n },\n methods: {\n enter () {\n if (!this.status) {\n if (!this.statusId) {\n this.error = true\n return\n }\n this.$store.dispatch('fetchStatus', this.statusId)\n .then(data => (this.error = false))\n .catch(e => (this.error = true))\n }\n }\n },\n watch: {\n status (newStatus, oldStatus) {\n if (newStatus !== oldStatus) {\n this.$nextTick(() => this.$refs.popover.updateStyles())\n }\n }\n }\n}\n\nexport default StatusPopover\n","import { render } from \"./status_popover.vue?vue&type=template&id=0c237860\"\nimport script from \"./status_popover.js?vue&type=script&lang=js\"\nexport * from \"./status_popover.js?vue&type=script&lang=js\"\n\nimport \"./status_popover.vue?vue&type=style&index=0&id=0c237860&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"hover\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n >\n <template #trigger>\n <slot />\n </template>\n <template #content>\n <div class=\"user-list-popover\">\n <template v-if=\"users.length\">\n <div\n v-for=\"(user) in usersCapped\"\n :key=\"user.id\"\n class=\"user-list-row\"\n >\n <UserAvatar\n :user=\"user\"\n class=\"avatar-small\"\n :compact=\"true\"\n />\n <div class=\"user-list-names\">\n <!-- eslint-disable vue/no-v-html -->\n <RichContent\n class=\"username\"\n :title=\"'@'+user.screen_name_ui\"\n :html=\"user.name_html\"\n :emoji=\"user.emoji\"\n />\n <!-- eslint-enable vue/no-v-html -->\n <span class=\"user-list-screen-name\">{{ user.screen_name_ui }}</span><UnicodeDomainIndicator :user=\"user\" />\n </div>\n </div>\n </template>\n <template v-else>\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n </template>\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./user_list_popover.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-list-popover {\n padding: 0.5em;\n\n --emoji-size: 16px;\n\n .user-list-row {\n padding: 0.25em;\n display: flex;\n flex-direction: row;\n\n .user-list-names {\n display: flex;\n flex-direction: column;\n margin-left: 0.5em;\n min-width: 5em;\n\n img {\n width: 1em;\n height: 1em;\n }\n }\n\n .user-list-screen-name {\n font-size: 0.65em;\n }\n }\n}\n\n</style>\n","import { defineAsyncComponent } from 'vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst UserListPopover = {\n name: 'UserListPopover',\n props: [\n 'users'\n ],\n components: {\n RichContent,\n UnicodeDomainIndicator,\n Popover: defineAsyncComponent(() => import('../popover/popover.vue')),\n UserAvatar: defineAsyncComponent(() => import('../user_avatar/user_avatar.vue'))\n },\n computed: {\n usersCapped () {\n return this.users.slice(0, 16)\n }\n }\n}\n\nexport default UserListPopover\n","import { render } from \"./user_list_popover.vue?vue&type=template&id=6fc1c392\"\nimport script from \"./user_list_popover.js?vue&type=script&lang=js\"\nexport * from \"./user_list_popover.js?vue&type=script&lang=js\"\n\nimport \"./user_list_popover.vue?vue&type=style&index=0&id=6fc1c392&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"EmojiReactions\">\n <UserListPopover\n v-for=\"(reaction) in emojiReactions\"\n :key=\"reaction.name\"\n :users=\"accountsForEmoji[reaction.name]\"\n >\n <button\n class=\"emoji-reaction btn button-default\"\n :class=\"{ '-picked-reaction': reactedWith(reaction.name), 'not-clickable': !loggedIn }\"\n @click=\"emojiOnClick(reaction.name, $event)\"\n @mouseenter=\"fetchEmojiReactionsByIfMissing()\"\n >\n <span class=\"reaction-emoji\">{{ reaction.name }}</span>\n <span>{{ reaction.count }}</span>\n </button>\n </UserListPopover>\n <a\n v-if=\"tooManyReactions\"\n class=\"emoji-reaction-expand faint\"\n href=\"javascript:void(0)\"\n @click=\"toggleShowAll\"\n >\n {{ showAll ? $t('general.show_less') : showMoreString }}\n </a>\n </div>\n</template>\n\n<script src=\"./emoji_reactions.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.EmojiReactions {\n display: flex;\n margin-top: 0.25em;\n flex-wrap: wrap;\n\n .emoji-reaction {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n\n .reaction-emoji {\n width: 1.25em;\n margin-right: 0.25em;\n }\n\n &:focus {\n outline: none;\n }\n\n &.not-clickable {\n cursor: default;\n\n &:hover {\n box-shadow: $fallback--buttonShadow;\n box-shadow: var(--buttonShadow);\n }\n }\n\n &.-picked-reaction {\n border: 1px solid var(--accent, $fallback--link);\n margin-left: -1px; // offset the border, can't use inset shadows either\n margin-right: calc(0.5em - 1px);\n }\n }\n\n .emoji-reaction-expand {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n name: 'EmojiReactions',\n components: {\n UserAvatar,\n UserListPopover\n },\n props: ['status'],\n data: () => ({\n showAll: false\n }),\n computed: {\n tooManyReactions () {\n return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n },\n emojiReactions () {\n return this.showAll\n ? this.status.emoji_reactions\n : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n },\n showMoreString () {\n return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n },\n accountsForEmoji () {\n return this.status.emoji_reactions.reduce((acc, reaction) => {\n acc[reaction.name] = reaction.accounts || []\n return acc\n }, {})\n },\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n },\n methods: {\n toggleShowAll () {\n this.showAll = !this.showAll\n },\n reactedWith (emoji) {\n return this.status.emoji_reactions.find(r => r.name === emoji).me\n },\n fetchEmojiReactionsByIfMissing () {\n const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n if (hasNoAccounts) {\n this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n }\n },\n reactWith (emoji) {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n },\n unreact (emoji) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n },\n emojiOnClick (emoji, event) {\n if (!this.loggedIn) return\n\n if (this.reactedWith(emoji)) {\n this.unreact(emoji)\n } else {\n this.reactWith(emoji)\n }\n }\n }\n}\n\nexport default EmojiReactions\n","import { render } from \"./emoji_reactions.vue?vue&type=template&id=07b3d2b1\"\nimport script from \"./emoji_reactions.js?vue&type=script&lang=js\"\nexport * from \"./emoji_reactions.js?vue&type=script&lang=js\"\n\nimport \"./emoji_reactions.vue?vue&type=style&index=0&id=07b3d2b1&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ReplyButton from '../reply_button/reply_button.vue'\nimport FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport UserPopover from '../user_popover/user_popover.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport MentionsLine from 'src/components/mentions_line/mentions_line.vue'\nimport MentionLink from 'src/components/mention_link/mention_link.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faSmileBeam,\n faEllipsisH,\n faStar,\n faEyeSlash,\n faEye,\n faThumbtack,\n faChevronUp,\n faChevronDown,\n faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faStar,\n faSmileBeam,\n faEllipsisH,\n faEyeSlash,\n faEye,\n faThumbtack,\n faChevronUp,\n faChevronDown,\n faAngleDoubleRight\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const controlledName = `controlled${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n res[name] = function () {\n return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n }\n return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[toggle]) {\n obj[toggle]()\n } else {\n obj[uncontrolledName] = !obj[uncontrolledName]\n }\n}\n\nconst controlledOrUncontrolledSet = (obj, name, val) => {\n const camelized = camelCase(name)\n const set = `controlledSet${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[set]) {\n obj[set](val)\n } else {\n obj[uncontrolledName] = val\n }\n}\n\nconst Status = {\n name: 'Status',\n components: {\n ReplyButton,\n FavoriteButton,\n ReactButton,\n RetweetButton,\n ExtraButtons,\n PostStatusForm,\n UserAvatar,\n AvatarList,\n Timeago,\n StatusPopover,\n UserListPopover,\n EmojiReactions,\n StatusContent,\n RichContent,\n MentionLink,\n MentionsLine,\n UserPopover,\n UserLink\n },\n props: [\n 'statusoid',\n 'expandable',\n 'inConversation',\n 'focused',\n 'highlight',\n 'compact',\n 'replies',\n 'isPreview',\n 'noHeading',\n 'inlineExpanded',\n 'showPinned',\n 'inProfile',\n 'profileUserId',\n\n 'simpleTree',\n 'controlledThreadDisplayStatus',\n 'controlledToggleThreadDisplay',\n 'showOtherRepliesAsButton',\n\n 'controlledShowingTall',\n 'controlledToggleShowingTall',\n 'controlledExpandingSubject',\n 'controlledToggleExpandingSubject',\n 'controlledShowingLongSubject',\n 'controlledToggleShowingLongSubject',\n 'controlledReplying',\n 'controlledToggleReplying',\n 'controlledMediaPlaying',\n 'controlledSetMediaPlaying',\n 'dive'\n ],\n data () {\n return {\n uncontrolledReplying: false,\n unmuted: false,\n userExpanded: false,\n uncontrolledMediaPlaying: [],\n suspendable: true,\n error: null,\n headTailLinks: null\n }\n },\n computed: {\n ...controlledOrUncontrolledGetters(['replying', 'mediaPlaying']),\n muteWords () {\n return this.mergedConfig.muteWords\n },\n showReasonMutedThread () {\n return (\n this.status.thread_muted ||\n (this.status.reblog && this.status.reblog.thread_muted)\n ) && !this.inConversation\n },\n repeaterClass () {\n const user = this.statusoid.user\n return highlightClass(user)\n },\n userClass () {\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n return highlightClass(user)\n },\n deleted () {\n return this.statusoid.deleted\n },\n repeaterStyle () {\n const user = this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userStyle () {\n if (this.noHeading) return\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n },\n replyProfileLink () {\n if (this.isReply) {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n // FIXME Why user not found sometimes???\n return user ? user.statusnet_profile_url : 'NOT_FOUND'\n }\n },\n retweet () { return !!this.statusoid.retweeted_status },\n retweeterUser () { return this.statusoid.user },\n retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name_ui },\n retweeterHtml () { return this.statusoid.user.name },\n retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n status () {\n if (this.retweet) {\n return this.statusoid.retweeted_status\n } else {\n return this.statusoid\n }\n },\n statusFromGlobalRepository () {\n // NOTE: Consider to replace status with statusFromGlobalRepository\n return this.$store.state.statuses.allStatusesObject[this.status.id]\n },\n loggedIn () {\n return !!this.currentUser\n },\n muteWordHits () {\n return muteWordHits(this.status, this.muteWords)\n },\n rtBotStatus () {\n return this.statusoid.user.bot\n },\n botStatus () {\n return this.status.user.bot\n },\n botIndicator () {\n return this.botStatus && !this.hideBotIndication\n },\n rtBotIndicator () {\n return this.rtBotStatus && !this.hideBotIndication\n },\n mentionsLine () {\n if (!this.headTailLinks) return []\n const writtenSet = new Set(this.headTailLinks.writtenMentions.map(_ => _.url))\n return this.status.attentions.filter(attn => {\n // no reply user\n return attn.id !== this.status.in_reply_to_user_id &&\n // no self-replies\n attn.statusnet_profile_url !== this.status.user.statusnet_profile_url &&\n // don't include if mentions is written\n !writtenSet.has(attn.statusnet_profile_url)\n }).map(attn => ({\n url: attn.statusnet_profile_url,\n content: attn.screen_name,\n userId: attn.id\n }))\n },\n hasMentionsLine () {\n return this.mentionsLine.length > 0\n },\n muted () {\n if (this.statusoid.user.id === this.currentUser.id) return false\n const reasonsToMute = this.userIsMuted ||\n // Thread is muted\n status.thread_muted ||\n // Wordfiltered\n this.muteWordHits.length > 0 ||\n // bot status\n (this.muteBotStatuses && this.botStatus && !this.compact)\n return !this.unmuted && !this.shouldNotMute && reasonsToMute\n },\n userIsMuted () {\n if (this.statusoid.user.id === this.currentUser.id) return false\n const { status } = this\n const { reblog } = status\n const relationship = this.$store.getters.relationship(status.user.id)\n const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n return status.muted ||\n // Reprööt of a muted post according to BE\n (reblog && reblog.muted) ||\n // Muted user\n relationship.muting ||\n // Muted user of a reprööt\n (relationshipReblog && relationshipReblog.muting)\n },\n shouldNotMute () {\n const { status } = this\n const { reblog } = status\n return (\n (\n this.inProfile && (\n // Don't mute user's posts on user timeline (except reblogs)\n (!reblog && status.user.id === this.profileUserId) ||\n // Same as above but also allow self-reblogs\n (reblog && reblog.user.id === this.profileUserId)\n )\n ) ||\n // Don't mute statuses in muted conversation when said conversation is opened\n (this.inConversation && status.thread_muted)\n // No excuses if post has muted words\n ) && !this.muteWordHits.length > 0\n },\n hideMutedUsers () {\n return this.mergedConfig.hideMutedPosts\n },\n hideMutedThreads () {\n return this.mergedConfig.hideMutedThreads\n },\n hideFilteredStatuses () {\n return this.mergedConfig.hideFilteredStatuses\n },\n hideWordFilteredPosts () {\n return this.mergedConfig.hideWordFilteredPosts\n },\n hideStatus () {\n return (!this.shouldNotMute) && (\n (this.muted && this.hideFilteredStatuses) ||\n (this.userIsMuted && this.hideMutedUsers) ||\n (this.status.thread_muted && this.hideMutedThreads) ||\n (this.muteWordHits.length > 0 && this.hideWordFilteredPosts)\n )\n },\n isFocused () {\n // retweet or root of an expanded conversation\n if (this.focused) {\n return true\n } else if (!this.inConversation) {\n return false\n }\n // use conversation highlight only when in conversation\n return this.status.id === this.highlight\n },\n isReply () {\n return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n },\n replyToName () {\n if (this.status.in_reply_to_screen_name) {\n return this.status.in_reply_to_screen_name\n } else {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n return user && user.screen_name_ui\n }\n },\n replySubject () {\n if (!this.status.summary) return ''\n const decodedSummary = unescape(this.status.summary)\n const behavior = this.mergedConfig.subjectLineBehavior\n const startsWithRe = decodedSummary.match(/^re[: ]/i)\n if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n return decodedSummary\n } else if (behavior === 'email') {\n return 're: '.concat(decodedSummary)\n } else if (behavior === 'noop') {\n return ''\n }\n },\n combinedFavsAndRepeatsUsers () {\n // Use the status from the global status repository since favs and repeats are saved in it\n const combinedUsers = [].concat(\n this.statusFromGlobalRepository.favoritedBy,\n this.statusFromGlobalRepository.rebloggedBy\n )\n return uniqBy(combinedUsers, 'id')\n },\n tags () {\n // eslint-disable-next-line no-prototype-builtins\n return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n },\n hidePostStats () {\n return this.mergedConfig.hidePostStats\n },\n muteBotStatuses () {\n return this.mergedConfig.muteBotStatuses\n },\n hideBotIndication () {\n return this.mergedConfig.hideBotIndication\n },\n currentUser () {\n return this.$store.state.users.currentUser\n },\n betterShadow () {\n return this.$store.state.interface.browserSupport.cssFilter\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n isSuspendable () {\n return !this.replying && this.mediaPlaying.length === 0\n },\n inThreadForest () {\n return !!this.controlledThreadDisplayStatus\n },\n threadShowing () {\n return this.controlledThreadDisplayStatus === 'showing'\n },\n visibilityLocalized () {\n return this.$i18n.t('general.scope_in_timeline.' + this.status.visibility)\n },\n isEdited () {\n return this.status.edited_at !== null\n },\n editingAvailable () {\n return this.$store.state.instance.editingAvailable\n }\n },\n methods: {\n visibilityIcon (visibility) {\n switch (visibility) {\n case 'private':\n return 'lock'\n case 'unlisted':\n return 'lock-open'\n case 'direct':\n return 'envelope'\n default:\n return 'globe'\n }\n },\n showError (error) {\n this.error = error\n },\n clearError () {\n this.error = undefined\n },\n toggleReplying () {\n controlledOrUncontrolledToggle(this, 'replying')\n },\n gotoOriginal (id) {\n if (this.inConversation) {\n this.$emit('goto', id)\n }\n },\n toggleExpanded () {\n this.$emit('toggleExpanded')\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n },\n addMediaPlaying (id) {\n controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.concat(id))\n },\n removeMediaPlaying (id) {\n controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.filter(mediaId => mediaId !== id))\n },\n setHeadTailLinks (headTailLinks) {\n this.headTailLinks = headTailLinks\n },\n toggleThreadDisplay () {\n this.controlledToggleThreadDisplay()\n },\n scrollIfHighlighted (highlightId) {\n const id = highlightId\n if (this.status.id === id) {\n const rect = this.$el.getBoundingClientRect()\n if (rect.top < 100) {\n // Post is above screen, match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.height >= (window.innerHeight - 50)) {\n // Post we want to see is taller than screen so match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.bottom > window.innerHeight - 50) {\n // Post is below screen, match its bottom to screen bottom\n window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n }\n }\n }\n },\n watch: {\n highlight: function (id) {\n this.scrollIfHighlighted(id)\n },\n 'status.repeat_num': function (num) {\n // refetch repeats when repeat_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.rebloggedBy && this.statusFromGlobalRepository.rebloggedBy.length !== num) {\n this.$store.dispatch('fetchRepeats', this.status.id)\n }\n },\n 'status.fave_num': function (num) {\n // refetch favs when fave_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {\n this.$store.dispatch('fetchFavs', this.status.id)\n }\n },\n isSuspendable: function (val) {\n this.suspendable = val\n }\n }\n}\n\nexport default Status\n","import { render } from \"./status.vue?vue&type=template&id=c1ace060\"\nimport script from \"./status.js?vue&type=script&lang=js\"\nexport * from \"./status.js?vue&type=script&lang=js\"\n\nimport \"./status.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"StatusContent\"\n :class=\"{ '-compact': compact }\"\n >\n <slot name=\"header\" />\n <StatusBody\n :status=\"status\"\n :compact=\"compact\"\n :single-line=\"singleLine\"\n :showing-tall=\"showingTall\"\n :expanding-subject=\"expandingSubject\"\n :showing-long-subject=\"showingLongSubject\"\n :toggle-showing-tall=\"toggleShowingTall\"\n :toggle-expanding-subject=\"toggleExpandingSubject\"\n :toggle-showing-long-subject=\"toggleShowingLongSubject\"\n @parseReady=\"$emit('parseReady', $event)\"\n >\n <div v-if=\"status.poll && status.poll.options && !compact\">\n <Poll\n :base-poll=\"status.poll\"\n :emoji=\"status.emojis\"\n />\n </div>\n\n <div v-else-if=\"status.poll && status.poll.options && compact\">\n <FAIcon\n icon=\"poll-h\"\n size=\"2x\"\n />\n </div>\n\n <gallery\n v-if=\"status.attachments.length !== 0\"\n class=\"attachments media-body\"\n :compact=\"compact\"\n :nsfw=\"nsfwClickthrough\"\n :attachments=\"status.attachments\"\n :limit=\"compact ? 1 : 0\"\n :size=\"attachmentSize\"\n @play=\"$emit('mediaplay', attachment.id)\"\n @pause=\"$emit('mediapause', attachment.id)\"\n />\n\n <div\n v-if=\"status.card && !noHeading && !compact\"\n class=\"link-preview media-body\"\n >\n <link-preview\n :card=\"status.card\"\n :size=\"attachmentSize\"\n :nsfw=\"nsfwClickthrough\"\n />\n </div>\n </StatusBody>\n <slot name=\"footer\" />\n </div>\n</template>\n\n<script src=\"./status_content.js\"></script>\n<style lang=\"scss\">\n.StatusContent {\n flex: 1;\n min-width: 0;\n}\n</style>\n","<template>\n <div\n class=\"poll\"\n :class=\"containerClass\"\n >\n <div\n :role=\"showResults ? 'section' : (poll.multiple ? 'group' : 'radiogroup')\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"index\"\n class=\"poll-option\"\n >\n <div\n v-if=\"showResults\"\n :title=\"resultTitle(option)\"\n class=\"option-result\"\n >\n <div class=\"option-result-label\">\n <span class=\"result-percentage\">\n {{ percentageForOption(option.votes_count) }}%\n </span>\n <RichContent\n :html=\"option.title_html\"\n :handle-links=\"false\"\n :emoji=\"emoji\"\n />\n </div>\n <div\n class=\"result-fill\"\n :style=\"{ 'width': `${percentageForOption(option.votes_count)}%` }\"\n />\n </div>\n <div\n v-else\n tabindex=\"0\"\n :role=\"poll.multiple ? 'checkbox' : 'radio'\"\n :aria-labelledby=\"`option-vote-${randomSeed}-${index}`\"\n :aria-checked=\"choices[index]\"\n @click=\"activateOption(index)\"\n >\n <input\n v-if=\"poll.multiple\"\n type=\"checkbox\"\n class=\"poll-checkbox\"\n :disabled=\"loading\"\n :value=\"index\"\n >\n <input\n v-else\n type=\"radio\"\n :disabled=\"loading\"\n :value=\"index\"\n >\n <label class=\"option-vote\">\n <RichContent\n :id=\"`option-vote-${randomSeed}-${index}`\"\n :html=\"option.title_html\"\n :handle-links=\"false\"\n :emoji=\"emoji\"\n />\n </label>\n </div>\n </div>\n </div>\n <div class=\"footer faint\">\n <button\n v-if=\"!showResults\"\n class=\"btn button-default poll-vote-button\"\n type=\"button\"\n :disabled=\"isDisabled\"\n @click=\"vote\"\n >\n {{ $t('polls.vote') }}\n </button>\n <div class=\"total\">\n <template v-if=\"typeof poll.voters_count === 'number'\">\n {{ $tc(\"polls.people_voted_count\", poll.voters_count, { count: poll.voters_count }) }}&nbsp;·&nbsp;\n </template>\n <template v-else>\n {{ $tc(\"polls.votes_count\", poll.votes_count, { count: poll.votes_count }) }}&nbsp;·&nbsp;\n </template>\n </div>\n <span>\n <i18n-t\n scope=\"global\"\n :keypath=\"expired ? 'polls.expired' : 'polls.expires_in'\"\n >\n <Timeago\n :time=\"expiresAt\"\n :auto-update=\"60\"\n :now-threshold=\"0\"\n />\n </i18n-t>\n </span>\n </div>\n </div>\n</template>\n\n<script src=\"./poll.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.poll {\n .votes {\n display: flex;\n flex-direction: column;\n margin: 0 0 0.5em;\n }\n\n .poll-option {\n margin: 0.75em 0.5em;\n }\n\n .option-result {\n height: 100%;\n display: flex;\n flex-direction: row;\n position: relative;\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n\n .option-result-label {\n display: flex;\n align-items: center;\n padding: 0.1em 0.25em;\n z-index: 1;\n word-break: break-word;\n }\n\n .result-percentage {\n width: 3.5em;\n flex-shrink: 0;\n }\n\n .result-fill {\n height: 100%;\n position: absolute;\n color: $fallback--text;\n color: var(--pollText, $fallback--text);\n background-color: $fallback--lightBg;\n background-color: var(--poll, $fallback--lightBg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n top: 0;\n left: 0;\n transition: width 0.5s;\n }\n\n .option-vote {\n display: flex;\n align-items: center;\n }\n\n input {\n width: 3.5em;\n }\n\n .footer {\n display: flex;\n align-items: center;\n }\n\n &.loading * {\n cursor: progress;\n }\n\n .poll-vote-button {\n padding: 0 0.5em;\n margin-right: 0.5em;\n }\n\n .poll-checkbox {\n display: none;\n }\n}\n</style>\n","import Timeago from 'components/timeago/timeago.vue'\nimport RichContent from 'components/rich_content/rich_content.jsx'\nimport { forEach, map } from 'lodash'\n\nexport default {\n name: 'Poll',\n props: ['basePoll', 'emoji'],\n components: {\n Timeago,\n RichContent\n },\n data () {\n return {\n loading: false,\n choices: [],\n randomSeed: `${Math.random()}`.replace('.', '-')\n }\n },\n created () {\n if (!this.$store.state.polls.pollsObject[this.pollId]) {\n this.$store.dispatch('mergeOrAddPoll', this.basePoll)\n }\n this.$store.dispatch('trackPoll', this.pollId)\n },\n unmounted () {\n this.$store.dispatch('untrackPoll', this.pollId)\n },\n computed: {\n pollId () {\n return this.basePoll.id\n },\n poll () {\n const storePoll = this.$store.state.polls.pollsObject[this.pollId]\n return storePoll || {}\n },\n options () {\n return (this.poll && this.poll.options) || []\n },\n expiresAt () {\n return (this.poll && this.poll.expires_at) || 0\n },\n expired () {\n return (this.poll && this.poll.expired) || false\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n showResults () {\n return this.poll.voted || this.expired || !this.loggedIn\n },\n totalVotesCount () {\n return this.poll.votes_count\n },\n containerClass () {\n return {\n loading: this.loading\n }\n },\n choiceIndices () {\n // Convert array of booleans into an array of indices of the\n // items that were 'true', so [true, false, false, true] becomes\n // [0, 3].\n return this.choices\n .map((entry, index) => entry && index)\n .filter(value => typeof value === 'number')\n },\n isDisabled () {\n const noChoice = this.choiceIndices.length === 0\n return this.loading || noChoice\n }\n },\n methods: {\n percentageForOption (count) {\n return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)\n },\n resultTitle (option) {\n return `${option.votes_count}/${this.totalVotesCount} ${this.$t('polls.votes')}`\n },\n fetchPoll () {\n this.$store.dispatch('refreshPoll', { id: this.statusId, pollId: this.poll.id })\n },\n activateOption (index) {\n // forgive me father: doing checking the radio/checkboxes\n // in code because of customized input elements need either\n // a) an extra element for the actual graphic, or b) use a\n // pseudo element for the label. We use b) which mandates\n // using \"for\" and \"id\" matching which isn't nice when the\n // same poll appears multiple times on the site (notifs and\n // timeline for example). With code we can make sure it just\n // works without altering the pseudo element implementation.\n const allElements = this.$el.querySelectorAll('input')\n const clickedElement = this.$el.querySelector(`input[value=\"${index}\"]`)\n if (this.poll.multiple) {\n // Checkboxes, toggle only the clicked one\n clickedElement.checked = !clickedElement.checked\n } else {\n // Radio button, uncheck everything and check the clicked one\n forEach(allElements, element => { element.checked = false })\n clickedElement.checked = true\n }\n this.choices = map(allElements, e => e.checked)\n },\n optionId (index) {\n return `poll${this.poll.id}-${index}`\n },\n vote () {\n if (this.choiceIndices.length === 0) return\n this.loading = true\n this.$store.dispatch(\n 'votePoll',\n { id: this.statusId, pollId: this.poll.id, choices: this.choiceIndices }\n ).then(poll => {\n this.loading = false\n })\n }\n }\n}\n","import { render } from \"./poll.vue?vue&type=template&id=02c7de4c\"\nimport script from \"./poll.js?vue&type=script&lang=js\"\nexport * from \"./poll.js?vue&type=script&lang=js\"\n\nimport \"./poll.vue?vue&type=style&index=0&id=02c7de4c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"StatusBody\"\n :class=\"{ '-compact': compact }\"\n >\n <div class=\"body\">\n <div\n v-if=\"status.summary_raw_html\"\n class=\"summary-wrapper\"\n :class=\"{ '-tall': (longSubject && !showingLongSubject) }\"\n >\n <RichContent\n class=\"media-body summary\"\n :html=\"status.summary_raw_html\"\n :emoji=\"status.emojis\"\n />\n <button\n v-show=\"longSubject && showingLongSubject\"\n class=\"button-unstyled -link tall-subject-hider\"\n @click.prevent=\"toggleShowingLongSubject\"\n >\n {{ $t(\"status.hide_full_subject\") }}\n </button>\n <button\n v-show=\"longSubject && !showingLongSubject\"\n class=\"button-unstyled -link tall-subject-hider\"\n @click.prevent=\"toggleShowingLongSubject\"\n >\n {{ $t(\"status.show_full_subject\") }}\n </button>\n </div>\n <div\n :class=\"{'-tall-status': hideTallStatus}\"\n class=\"text-wrapper\"\n >\n <button\n v-show=\"hideTallStatus\"\n class=\"button-unstyled -link tall-status-hider\"\n :class=\"{ '-focused': focused }\"\n @click.prevent=\"toggleShowMore\"\n >\n {{ $t(\"general.show_more\") }}\n </button>\n <RichContent\n v-if=\"!hideSubjectStatus && !(singleLine && status.summary_raw_html)\"\n :class=\"{ '-single-line': singleLine }\"\n class=\"text media-body\"\n :html=\"status.raw_html\"\n :emoji=\"status.emojis\"\n :handle-links=\"true\"\n :greentext=\"mergedConfig.greentext\"\n :attentions=\"status.attentions\"\n @parseReady=\"onParseReady\"\n />\n\n <button\n v-show=\"hideSubjectStatus\"\n class=\"button-unstyled -link cw-status-hider\"\n @click.prevent=\"toggleShowMore\"\n >\n {{ $t(\"status.show_content\") }}\n <FAIcon\n v-if=\"attachmentTypes.includes('image')\"\n icon=\"image\"\n />\n <FAIcon\n v-if=\"attachmentTypes.includes('video')\"\n icon=\"video\"\n />\n <FAIcon\n v-if=\"attachmentTypes.includes('audio')\"\n icon=\"music\"\n />\n <FAIcon\n v-if=\"attachmentTypes.includes('unknown')\"\n icon=\"file\"\n />\n <FAIcon\n v-if=\"status.poll && status.poll.options\"\n icon=\"poll-h\"\n />\n <FAIcon\n v-if=\"status.card\"\n icon=\"link\"\n />\n </button>\n <button\n v-show=\"showingMore && !fullContent\"\n class=\"button-unstyled -link status-unhider\"\n @click.prevent=\"toggleShowMore\"\n >\n {{ tallStatus ? $t(\"general.show_less\") : $t(\"status.hide_content\") }}\n </button>\n </div>\n </div>\n <slot v-if=\"!hideSubjectStatus\" />\n </div>\n</template>\n<script src=\"./status_body.js\"></script>\n<style lang=\"scss\" src=\"./status_body.scss\" />\n","import fileType from 'src/services/file_type/file_type.service'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n)\n\nconst StatusContent = {\n name: 'StatusContent',\n props: [\n 'compact',\n 'status',\n 'focused',\n 'noHeading',\n 'fullContent',\n 'singleLine',\n 'showingTall',\n 'expandingSubject',\n 'showingLongSubject',\n 'toggleShowingTall',\n 'toggleExpandingSubject',\n 'toggleShowingLongSubject'\n ],\n data () {\n return {\n postLength: this.status.text.length,\n parseReadyDone: false\n }\n },\n computed: {\n localCollapseSubjectDefault () {\n return this.mergedConfig.collapseMessageWithSubject\n },\n // This is a bit hacky, but we want to approximate post height before rendering\n // so we count newlines (masto uses <p> for paragraphs, GS uses <br> between them)\n // as well as approximate line count by counting characters and approximating ~80\n // per line.\n //\n // Using max-height + overflow: auto for status components resulted in false positives\n // very often with japanese characters, and it was very annoying.\n tallStatus () {\n if (this.singleLine || this.compact) return false\n const lengthScore = this.status.raw_html.split(/<p|<br/).length + this.postLength / 80\n return lengthScore > 20\n },\n longSubject () {\n return this.status.summary.length > 240\n },\n // When a status has a subject and is also tall, we should only have one show more/less button. If the default is to collapse statuses with subjects, we just treat it like a status with a subject; otherwise, we just treat it like a tall status.\n mightHideBecauseSubject () {\n return !!this.status.summary && this.localCollapseSubjectDefault\n },\n mightHideBecauseTall () {\n return this.tallStatus && !(this.status.summary && this.localCollapseSubjectDefault)\n },\n hideSubjectStatus () {\n return this.mightHideBecauseSubject && !this.expandingSubject\n },\n hideTallStatus () {\n return this.mightHideBecauseTall && !this.showingTall\n },\n showingMore () {\n return (this.mightHideBecauseTall && this.showingTall) || (this.mightHideBecauseSubject && this.expandingSubject)\n },\n attachmentTypes () {\n return this.status.attachments.map(file => fileType.fileType(file.mimetype))\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n RichContent\n },\n mounted () {\n this.status.attentions && this.status.attentions.forEach(attn => {\n const { id } = attn\n this.$store.dispatch('fetchUserIfMissing', id)\n })\n },\n methods: {\n onParseReady (event) {\n if (this.parseReadyDone) return\n this.parseReadyDone = true\n this.$emit('parseReady', event)\n const { writtenMentions, invisibleMentions } = event\n writtenMentions\n .filter(mention => !mention.notifying)\n .forEach(mention => {\n const { content, url } = mention\n const cleanedString = content.replace(/<[^>]+?>/gi, '') // remove all tags\n if (!cleanedString.startsWith('@')) return\n const handle = cleanedString.slice(1)\n const host = url.replace(/^https?:\\/\\//, '').replace(/\\/.+?$/, '')\n this.$store.dispatch('fetchUserIfMissing', `${handle}@${host}`)\n })\n /* This is a bit of a hack to make current tall status detector work\n * with rich mentions. Invisible mentions are detected at RichContent level\n * and also we generate plaintext version of mentions by stripping tags\n * so here we subtract from post length by each mention that became invisible\n * via MentionsLine\n */\n this.postLength = invisibleMentions.reduce((acc, mention) => {\n return acc - mention.textContent.length - 1\n }, this.postLength)\n },\n toggleShowMore () {\n if (this.mightHideBecauseTall) {\n this.toggleShowingTall()\n } else if (this.mightHideBecauseSubject) {\n this.toggleExpandingSubject()\n }\n },\n generateTagLink (tag) {\n return `/tag/${tag}`\n }\n }\n}\n\nexport default StatusContent\n","import { render } from \"./status_body.vue?vue&type=template&id=7a590a2c\"\nimport script from \"./status_body.js?vue&type=script&lang=js\"\nexport * from \"./status_body.js?vue&type=script&lang=js\"\n\nimport \"./status_body.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport StatusBody from 'src/components/status_body/status_body.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport { mapGetters, mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const controlledName = `controlled${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n res[name] = function () {\n return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n }\n return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[toggle]) {\n obj[toggle]()\n } else {\n obj[uncontrolledName] = !obj[uncontrolledName]\n }\n}\n\nconst StatusContent = {\n name: 'StatusContent',\n props: [\n 'status',\n 'compact',\n 'focused',\n 'noHeading',\n 'fullContent',\n 'singleLine',\n 'controlledShowingTall',\n 'controlledExpandingSubject',\n 'controlledToggleShowingTall',\n 'controlledToggleExpandingSubject',\n 'controlledShowingLongSubject',\n 'controlledToggleShowingLongSubject'\n ],\n data () {\n return {\n uncontrolledShowingTall: this.fullContent || (this.inConversation && this.focused),\n uncontrolledShowingLongSubject: false,\n // not as computed because it sets the initial state which will be changed later\n uncontrolledExpandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject\n }\n },\n computed: {\n ...controlledOrUncontrolledGetters(['showingTall', 'expandingSubject', 'showingLongSubject']),\n hideAttachments () {\n return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\n },\n nsfwClickthrough () {\n if (!this.status.nsfw) {\n return false\n }\n if (this.status.summary && this.localCollapseSubjectDefault) {\n return false\n }\n return true\n },\n attachmentSize () {\n if (this.compact) {\n return 'small'\n } else if ((this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||\n (this.status.attachments.length > this.maxThumbnails)) {\n return 'hide'\n }\n return 'normal'\n },\n maxThumbnails () {\n return this.mergedConfig.maxThumbnails\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n },\n components: {\n Attachment,\n Poll,\n Gallery,\n LinkPreview,\n StatusBody\n },\n methods: {\n toggleShowingTall () {\n controlledOrUncontrolledToggle(this, 'showingTall')\n },\n toggleExpandingSubject () {\n controlledOrUncontrolledToggle(this, 'expandingSubject')\n },\n toggleShowingLongSubject () {\n controlledOrUncontrolledToggle(this, 'showingLongSubject')\n },\n setMedia () {\n const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments\n return () => this.$store.dispatch('setMedia', attachments)\n }\n }\n}\n\nexport default StatusContent\n","import { render } from \"./status_content.vue?vue&type=template&id=33f92051\"\nimport script from \"./status_content.js?vue&type=script&lang=js\"\nexport * from \"./status_content.js?vue&type=script&lang=js\"\n\nimport \"./status_content.vue?vue&type=style&index=0&id=33f92051&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"still-image\"\n :class=\"{ animated: animated }\"\n :style=\"style\"\n >\n <canvas\n v-if=\"animated\"\n ref=\"canvas\"\n />\n <!-- NOTE: key is required to force to re-render img tag when src is changed -->\n <img\n ref=\"src\"\n :key=\"realSrc\"\n :alt=\"alt\"\n :title=\"alt\"\n :data-src=\"dataSrc\"\n :src=\"realSrc\"\n :referrerpolicy=\"referrerpolicy\"\n :loading=\"loading\"\n @load=\"onLoad\"\n @error=\"onError\"\n >\n <slot />\n </div>\n</template>\n\n<script src=\"./still-image.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.still-image {\n position: relative;\n line-height: 0;\n overflow: hidden;\n display: inline-flex;\n align-items: center;\n\n canvas {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n visibility: var(--_still-image-canvas-visibility, visible);\n }\n\n img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n &.animated {\n &::before {\n zoom: var(--_still_image-label-scale, 1);\n content: \"gif\";\n position: absolute;\n line-height: 1;\n font-size: 0.7em;\n top: 0.5em;\n left: 0.5em;\n background: rgb(127 127 127 / 50%);\n color: #fff;\n display: block;\n padding: 2px 4px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n z-index: 2;\n visibility: var(--_still-image-label-visibility, visible);\n }\n\n &:hover canvas {\n display: none;\n }\n\n &:hover::before {\n visibility: var(--_still-image-label-visibility, hidden);\n }\n\n img {\n visibility: var(--_still-image-img-visibility, hidden);\n }\n\n &:hover img {\n visibility: visible;\n }\n }\n}\n</style>\n","const StillImage = {\n props: [\n 'src',\n 'referrerpolicy',\n 'mimetype',\n 'imageLoadError',\n 'imageLoadHandler',\n 'alt',\n 'height',\n 'width',\n 'dataSrc',\n 'loading'\n ],\n data () {\n return {\n // for lazy loading, see loadLazy()\n realSrc: this.src,\n stopGifs: this.$store.getters.mergedConfig.stopGifs\n }\n },\n computed: {\n animated () {\n if (!this.realSrc) {\n return false\n }\n\n return this.stopGifs && (this.mimetype === 'image/gif' || this.realSrc.endsWith('.gif'))\n },\n style () {\n const appendPx = (str) => /\\d$/.test(str) ? str + 'px' : str\n return {\n height: this.height ? appendPx(this.height) : null,\n width: this.width ? appendPx(this.width) : null\n }\n }\n },\n methods: {\n loadLazy () {\n if (this.dataSrc) {\n this.realSrc = this.dataSrc\n }\n },\n onLoad () {\n if (!this.realSrc) {\n return\n }\n const image = this.$refs.src\n if (!image) return\n this.imageLoadHandler && this.imageLoadHandler(image)\n const canvas = this.$refs.canvas\n if (!canvas) return\n const width = image.naturalWidth\n const height = image.naturalHeight\n canvas.width = width\n canvas.height = height\n canvas.getContext('2d').drawImage(image, 0, 0, width, height)\n },\n onError () {\n this.imageLoadError && this.imageLoadError()\n }\n },\n watch: {\n src () {\n this.realSrc = this.src\n },\n dataSrc () {\n this.$el.removeAttribute('data-loaded')\n }\n }\n}\n\nexport default StillImage\n","import { render } from \"./still-image.vue?vue&type=template&id=75385b10\"\nimport script from \"./still-image.js?vue&type=script&lang=js\"\nexport * from \"./still-image.js?vue&type=script&lang=js\"\n\nimport \"./still-image.vue?vue&type=style&index=0&id=75385b10&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <time\n :datetime=\"time\"\n :title=\"localeDateString\"\n >\n {{ relativeTimeString }}\n </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold', 'templateKey'],\n data () {\n return {\n relativeTime: { key: 'time.now', num: 0 },\n interval: null\n }\n },\n computed: {\n localeDateString () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return typeof this.time === 'string'\n ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n : this.time.toLocaleString(browserLocale)\n },\n relativeTimeString () {\n const timeString = this.$i18n.tc(this.relativeTime.key, this.relativeTime.num, [this.relativeTime.num])\n\n if (typeof this.templateKey === 'string' && this.relativeTime.key !== 'time.now') {\n return this.$i18n.t(this.templateKey, [timeString])\n }\n\n return timeString\n }\n },\n watch: {\n time (newVal, oldVal) {\n if (oldVal !== newVal) {\n clearTimeout(this.interval)\n this.refreshRelativeTimeObject()\n }\n }\n },\n created () {\n this.refreshRelativeTimeObject()\n },\n unmounted () {\n clearTimeout(this.interval)\n },\n methods: {\n refreshRelativeTimeObject () {\n const nowThreshold = typeof this.nowThreshold === 'number' ? this.nowThreshold : 1\n this.relativeTime = this.longFormat\n ? DateUtils.relativeTime(this.time, nowThreshold)\n : DateUtils.relativeTimeShort(this.time, nowThreshold)\n\n if (this.autoUpdate) {\n this.interval = setTimeout(\n this.refreshRelativeTimeObject,\n 1000 * this.autoUpdate\n )\n }\n }\n }\n}\n</script>\n","import { render } from \"./timeago.vue?vue&type=template&id=3269671b\"\nimport script from \"./timeago.vue?vue&type=script&lang=js\"\nexport * from \"./timeago.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <FAIcon\n v-if=\"user && user.screen_name_ui_contains_non_ascii\"\n icon=\"code\"\n :title=\"$t('unicode_domain_indicator.tooltip')\"\n />\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCode\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCode\n)\n\nconst UnicodeDomainIndicator = {\n props: {\n user: Object\n }\n}\n\nexport default UnicodeDomainIndicator\n</script>\n","import { render } from \"./unicode_domain_indicator.vue?vue&type=template&id=3e044e46\"\nimport script from \"./unicode_domain_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./unicode_domain_indicator.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import StillImage from '../still-image/still-image.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\n\nimport {\n faRobot\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRobot\n)\n\nconst UserAvatar = {\n props: [\n 'user',\n 'betterShadow',\n 'compact',\n 'bot'\n ],\n data () {\n return {\n showPlaceholder: false,\n defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n }\n },\n components: {\n StillImage\n },\n methods: {\n imgSrc (src) {\n return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n },\n imageLoadError () {\n this.showPlaceholder = true\n }\n }\n}\n\nexport default UserAvatar\n","import { render } from \"./user_avatar.vue?vue&type=template&id=9c4bf79e\"\nimport script from \"./user_avatar.js?vue&type=script&lang=js\"\nexport * from \"./user_avatar.js?vue&type=script&lang=js\"\n\nimport \"./user_avatar.vue?vue&type=style&index=0&id=9c4bf79e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n class=\"Avatar\"\n :class=\"{ '-compact': compact }\"\n >\n <StillImage\n v-if=\"user\"\n class=\"avatar\"\n :alt=\"user.screen_name_ui\"\n :title=\"user.screen_name_ui\"\n :src=\"imgSrc(user.profile_image_url_original)\"\n :image-load-error=\"imageLoadError\"\n :class=\"{ '-compact': compact, '-better-shadow': betterShadow }\"\n />\n <div\n v-else\n class=\"avatar -placeholder\"\n :class=\"{ '-compact': compact }\"\n />\n <FAIcon\n v-if=\"bot\"\n icon=\"robot\"\n class=\"bot-indicator\"\n />\n </span>\n</template>\n\n<script src=\"./user_avatar.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Avatar {\n --_avatarShadowBox: var(--avatarStatusShadow);\n --_avatarShadowFilter: var(--avatarStatusShadowFilter);\n --_avatarShadowInset: var(--avatarStatusShadowInset);\n --_still-image-label-visibility: hidden;\n\n display: inline-block;\n position: relative;\n width: 48px;\n height: 48px;\n\n &.-compact {\n width: 32px;\n height: 32px;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n box-shadow: var(--_avatarShadowBox);\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n\n &.-better-shadow {\n box-shadow: var(--_avatarShadowInset);\n filter: var(--_avatarShadowFilter);\n }\n\n &.-animated::before {\n display: none;\n }\n\n &.-compact {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n &.-placeholder {\n background-color: $fallback--fg;\n background-color: var(--fg, $fallback--fg);\n }\n }\n\n img {\n width: 100%;\n height: 100%;\n }\n\n .bot-indicator {\n position: absolute;\n bottom: 0;\n right: 0;\n margin: -0.2em;\n padding: 0.2em;\n background: rgb(127 127 127 / 50%);\n color: #fff;\n border-radius: var(--tooltipRadius);\n }\n}\n</style>\n","<template>\n <div\n class=\"user-card\"\n :class=\"classes\"\n >\n <div\n :class=\"{ 'hide-bio': hideBio }\"\n :style=\"style\"\n class=\"background-image\"\n />\n <div :class=\"onClose ? '' : panel-heading -flexible-height\">\n <div class=\"user-info\">\n <div class=\"container\">\n <a\n v-if=\"avatarAction === 'zoom'\"\n class=\"user-info-avatar -link\"\n @click=\"zoomAvatar\"\n >\n <UserAvatar\n :better-shadow=\"betterShadow\"\n :user=\"user\"\n />\n <div class=\"user-info-avatar -link -overlay\">\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search-plus\"\n />\n </div>\n </a>\n <UserAvatar\n v-else-if=\"typeof avatarAction === 'function'\"\n class=\"user-info-avatar\"\n :better-shadow=\"betterShadow\"\n :user=\"user\"\n @click=\"avatarAction\"\n />\n <router-link\n v-else\n :to=\"userProfileLink(user)\"\n >\n <UserAvatar\n :better-shadow=\"betterShadow\"\n :user=\"user\"\n />\n </router-link>\n <div class=\"user-summary\">\n <div class=\"top-line\">\n <router-link\n :to=\"userProfileLink(user)\"\n class=\"user-name\"\n >\n <RichContent\n :title=\"user.name\"\n :html=\"user.name\"\n :emoji=\"user.emoji\"\n />\n </router-link>\n <button\n v-if=\"!isOtherUser && user.is_local\"\n class=\"button-unstyled edit-profile-button\"\n @click.stop=\"openProfileTab\"\n >\n <FAIcon\n fixed-width\n class=\"icon\"\n icon=\"edit\"\n :title=\"$t('user_card.edit_profile')\"\n />\n </button>\n <a\n v-if=\"isOtherUser && !user.is_local\"\n :href=\"user.statusnet_profile_url\"\n target=\"_blank\"\n class=\"button-unstyled external-link-button\"\n >\n <FAIcon\n class=\"icon\"\n icon=\"external-link-alt\"\n />\n </a>\n <AccountActions\n v-if=\"isOtherUser && loggedIn\"\n :user=\"user\"\n :relationship=\"relationship\"\n />\n <router-link\n v-if=\"onClose\"\n :to=\"userProfileLink(user)\"\n class=\"button-unstyled external-link-button\"\n @click=\"onClose\"\n >\n <FAIcon\n class=\"icon\"\n icon=\"expand-alt\"\n />\n </router-link>\n <button\n v-if=\"onClose\"\n class=\"button-unstyled external-link-button\"\n @click=\"onClose\"\n >\n <FAIcon\n class=\"icon\"\n icon=\"times\"\n />\n </button>\n </div>\n <div class=\"bottom-line\">\n <user-link\n class=\"user-screen-name\"\n :user=\"user\"\n />\n <template v-if=\"!hideBio\">\n <span\n v-if=\"user.deactivated\"\n class=\"alert user-role\"\n >\n {{ $t('user_card.deactivated') }}\n </span>\n <span\n v-if=\"!!visibleRole\"\n class=\"alert user-role\"\n >\n {{ $t(`general.role.${visibleRole}`) }}\n </span>\n <span\n v-if=\"user.bot\"\n class=\"alert user-role\"\n >\n {{ $t('user_card.bot') }}\n </span>\n </template>\n <span v-if=\"user.locked\">\n <FAIcon\n class=\"lock-icon\"\n icon=\"lock\"\n size=\"sm\"\n />\n </span>\n <span\n v-if=\"!mergedConfig.hideUserStats && !hideBio\"\n class=\"dailyAvg\"\n >{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>\n </div>\n </div>\n </div>\n <div class=\"user-meta\">\n <div\n v-if=\"relationship.followed_by && loggedIn && isOtherUser\"\n class=\"following\"\n >\n {{ $t('user_card.follows_you') }}\n </div>\n <div\n v-if=\"isOtherUser && (loggedIn || !switcher)\"\n class=\"highlighter\"\n >\n <!-- id's need to be unique, otherwise vue confuses which user-card checkbox belongs to -->\n <input\n v-if=\"userHighlightType !== 'disabled'\"\n :id=\"'userHighlightColorTx'+user.id\"\n v-model=\"userHighlightColor\"\n class=\"userHighlightText\"\n type=\"text\"\n >\n <input\n v-if=\"userHighlightType !== 'disabled'\"\n :id=\"'userHighlightColor'+user.id\"\n v-model=\"userHighlightColor\"\n class=\"userHighlightCl\"\n type=\"color\"\n >\n {{ ' ' }}\n <Select\n :id=\"'userHighlightSel'+user.id\"\n v-model=\"userHighlightType\"\n class=\"userHighlightSel\"\n >\n <option value=\"disabled\">\n {{ $t('user_card.highlight.disabled') }}\n </option>\n <option value=\"solid\">\n {{ $t('user_card.highlight.solid') }}\n </option>\n <option value=\"striped\">\n {{ $t('user_card.highlight.striped') }}\n </option>\n <option value=\"side\">\n {{ $t('user_card.highlight.side') }}\n </option>\n </Select>\n </div>\n </div>\n <div\n v-if=\"loggedIn && isOtherUser\"\n class=\"user-interactions\"\n >\n <div class=\"btn-group\">\n <FollowButton\n :relationship=\"relationship\"\n :user=\"user\"\n />\n <template v-if=\"relationship.following\">\n <ProgressButton\n v-if=\"!relationship.subscribing\"\n class=\"btn button-default\"\n :click=\"subscribeUser\"\n :title=\"$t('user_card.subscribe')\"\n >\n <FAIcon icon=\"bell\" />\n </ProgressButton>\n <ProgressButton\n v-else\n class=\"btn button-default toggled\"\n :click=\"unsubscribeUser\"\n :title=\"$t('user_card.unsubscribe')\"\n >\n <FALayers>\n <FAIcon\n icon=\"rss\"\n transform=\"left-5 shrink-6 up-3 rotate-20\"\n flip=\"horizontal\"\n />\n <FAIcon\n icon=\"rss\"\n transform=\"right-5 shrink-6 up-3 rotate-20\"\n />\n <FAIcon icon=\"bell\" />\n </FALayers>\n </ProgressButton>\n </template>\n </div>\n <div>\n <button\n v-if=\"relationship.muting\"\n class=\"btn button-default btn-block toggled\"\n :disabled=\"user.deactivated\"\n @click=\"unmuteUser\"\n >\n {{ $t('user_card.muted') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block\"\n :disabled=\"user.deactivated\"\n @click=\"muteUser\"\n >\n {{ $t('user_card.mute') }}\n </button>\n </div>\n <div>\n <button\n class=\"btn button-default btn-block\"\n :disabled=\"user.deactivated\"\n @click=\"mentionUser\"\n >\n {{ $t('user_card.mention') }}\n </button>\n </div>\n <ModerationTools\n v-if=\"showModerationMenu\"\n :user=\"user\"\n />\n </div>\n <div\n v-if=\"!loggedIn && user.is_local\"\n class=\"user-interactions\"\n >\n <RemoteFollow :user=\"user\" />\n </div>\n <UserNote\n v-if=\"loggedIn && isOtherUser && (hasNote || (hasNoteEditor && supportsNote))\"\n :user=\"user\"\n :relationship=\"relationship\"\n :editable=\"hasNoteEditor\"\n />\n </div>\n </div>\n <div\n v-if=\"!hideBio\"\n class=\"panel-body\"\n >\n <div\n v-if=\"!mergedConfig.hideUserStats && switcher\"\n class=\"user-counts\"\n >\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('statuses')\"\n >\n <h5>{{ $t('user_card.statuses') }}</h5>\n <span>{{ user.statuses_count }} <br></span>\n </div>\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('friends')\"\n >\n <h5>{{ $t('user_card.followees') }}</h5>\n <span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>\n </div>\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('followers')\"\n >\n <h5>{{ $t('user_card.followers') }}</h5>\n <span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>\n </div>\n </div>\n <RichContent\n v-if=\"!hideBio\"\n class=\"user-card-bio\"\n :html=\"user.description_html\"\n :emoji=\"user.emoji\"\n :handle-links=\"true\"\n />\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmMute\"\n :title=\"$t('user_card.mute_confirm_title')\"\n :confirm-text=\"$t('user_card.mute_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.mute_confirm_cancel_button')\"\n @accepted=\"doMuteUser\"\n @cancelled=\"hideConfirmMute\"\n >\n <i18n-t\n keypath=\"user_card.mute_confirm\"\n tag=\"div\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n <div\n class=\"mute-expiry\"\n >\n <label>\n {{ $t('user_card.mute_duration_prompt') }}\n </label>\n <input\n v-model=\"muteExpiryAmount\"\n type=\"number\"\n class=\"expiry-amount hide-number-spinner\"\n :min=\"0\"\n >\n <Select\n v-model=\"muteExpiryUnit\"\n unstyled=\"true\"\n class=\"expiry-unit\"\n >\n <option\n v-for=\"unit in muteExpiryUnits\"\n :key=\"unit\"\n :value=\"unit\"\n >\n {{ $t(`time.${unit}_short`, ['']) }}\n </option>\n </Select>\n </div>\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./user_card.js\"></script>\n\n<style lang=\"scss\" src=\"./user_card.scss\" />\n","<template>\n <div>\n <Popover\n trigger=\"click\"\n class=\"moderation-tools-popover\"\n placement=\"bottom\"\n :offset=\"{ y: 5 }\"\n @show=\"setToggled(true)\"\n @close=\"setToggled(false)\"\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <span v-if=\"canGrantRole\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleRight(&quot;admin&quot;)\"\n >\n {{ $t(!!user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleRight(&quot;moderator&quot;)\"\n >\n {{ $t(!!user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator') }}\n </button>\n <div\n v-if=\"canChangeActivationState || canDeleteAccount\"\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </span>\n <button\n v-if=\"canChangeActivationState\"\n class=\"button-default dropdown-item\"\n @click=\"toggleActivationStatus()\"\n >\n {{ $t(!!user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account') }}\n </button>\n <button\n v-if=\"canDeleteAccount\"\n class=\"button-default dropdown-item\"\n @click=\"deleteUserDialog(true)\"\n >\n {{ $t('user_card.admin_menu.delete_account') }}\n </button>\n <div\n v-if=\"canUseTagPolicy\"\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n <span v-if=\"canUseTagPolicy\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.FORCE_NSFW)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_NSFW) }\"\n />\n {{ $t('user_card.admin_menu.force_nsfw') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.STRIP_MEDIA)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.STRIP_MEDIA) }\"\n />\n {{ $t('user_card.admin_menu.strip_media') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.FORCE_UNLISTED)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_UNLISTED) }\"\n />\n {{ $t('user_card.admin_menu.force_unlisted') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.SANDBOX)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.SANDBOX) }\"\n />\n {{ $t('user_card.admin_menu.sandbox') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.DISABLE_REMOTE_SUBSCRIPTION)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_REMOTE_SUBSCRIPTION) }\"\n />\n {{ $t('user_card.admin_menu.disable_remote_subscription') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.DISABLE_ANY_SUBSCRIPTION)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_ANY_SUBSCRIPTION) }\"\n />\n {{ $t('user_card.admin_menu.disable_any_subscription') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.QUARANTINE)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.QUARANTINE) }\"\n />\n {{ $t('user_card.admin_menu.quarantine') }}\n </button>\n </span>\n </div>\n </template>\n <template #trigger>\n <button\n class=\"btn button-default btn-block moderation-tools-button\"\n :class=\"{ toggled }\"\n >\n {{ $t('user_card.admin_menu.moderation') }}\n <FAIcon icon=\"chevron-down\" />\n </button>\n </template>\n </Popover>\n <teleport to=\"#modal\">\n <DialogModal\n v-if=\"showDeleteUserDialog\"\n :on-cancel=\"deleteUserDialog.bind(this, false)\"\n >\n <template #header>\n {{ $t('user_card.admin_menu.delete_user') }}\n </template>\n <p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>\n <template #footer>\n <button\n class=\"btn button-default\"\n @click=\"deleteUserDialog(false)\"\n >\n {{ $t('general.cancel') }}\n </button>\n <button\n class=\"btn button-default danger\"\n @click=\"deleteUser()\"\n >\n {{ $t('user_card.admin_menu.delete_user') }}\n </button>\n </template>\n </DialogModal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./moderation_tools.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.moderation-tools-popover {\n height: 100%;\n\n .trigger {\n /* stylelint-disable-next-line declaration-no-important */\n display: flex !important;\n height: 100%;\n }\n}\n\n.moderation-tools-button {\n svg,\n i {\n font-size: 0.8em;\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronDown)\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n props: [\n 'user'\n ],\n data () {\n return {\n tags: {\n FORCE_NSFW,\n STRIP_MEDIA,\n FORCE_UNLISTED,\n DISABLE_REMOTE_SUBSCRIPTION,\n DISABLE_ANY_SUBSCRIPTION,\n SANDBOX,\n QUARANTINE\n },\n showDeleteUserDialog: false,\n toggled: false\n }\n },\n components: {\n DialogModal,\n Popover\n },\n computed: {\n tagsSet () {\n return new Set(this.user.tags)\n },\n canGrantRole () {\n return this.user.is_local && !this.user.deactivated && this.$store.state.users.currentUser.role === 'admin'\n },\n canChangeActivationState () {\n return this.privileged('users_manage_activation_state')\n },\n canDeleteAccount () {\n return this.privileged('users_delete')\n },\n canUseTagPolicy () {\n return this.$store.state.instance.tagPolicyAvailable && this.privileged('users_manage_tags')\n }\n },\n methods: {\n hasTag (tagName) {\n return this.tagsSet.has(tagName)\n },\n privileged (privilege) {\n return this.$store.state.users.currentUser.privileges.includes(privilege)\n },\n toggleTag (tag) {\n const store = this.$store\n if (this.tagsSet.has(tag)) {\n store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('untagUser', { user: this.user, tag })\n })\n } else {\n store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('tagUser', { user: this.user, tag })\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n },\n setToggled (value) {\n this.toggled = value\n }\n }\n}\n\nexport default ModerationTools\n","import { render } from \"./moderation_tools.vue?vue&type=template&id=352f537c\"\nimport script from \"./moderation_tools.js?vue&type=script&lang=js\"\nexport * from \"./moderation_tools.js?vue&type=script&lang=js\"\n\nimport \"./moderation_tools.vue?vue&type=style&index=0&id=352f537c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"AccountActions\">\n <Popover\n trigger=\"click\"\n placement=\"bottom\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <template v-if=\"relationship.following\">\n <button\n v-if=\"relationship.showing_reblogs\"\n class=\"btn button-default dropdown-item\"\n @click=\"hideRepeats\"\n >\n {{ $t('user_card.hide_repeats') }}\n </button>\n <button\n v-if=\"!relationship.showing_reblogs\"\n class=\"btn button-default dropdown-item\"\n @click=\"showRepeats\"\n >\n {{ $t('user_card.show_repeats') }}\n </button>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </template>\n <UserListMenu :user=\"user\" />\n <button\n v-if=\"relationship.followed_by\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"removeUserFromFollowers\"\n >\n {{ $t('user_card.remove_follower') }}\n </button>\n <button\n v-if=\"relationship.blocking\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"unblockUser\"\n >\n {{ $t('user_card.unblock') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"blockUser\"\n >\n {{ $t('user_card.block') }}\n </button>\n <button\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"reportUser\"\n >\n {{ $t('user_card.report') }}\n </button>\n <button\n v-if=\"pleromaChatMessagesAvailable\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"openChat\"\n >\n {{ $t('user_card.message') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button class=\"button-unstyled ellipsis-button\">\n <FAIcon\n class=\"icon\"\n icon=\"ellipsis-v\"\n />\n </button>\n </template>\n </Popover>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmBlock\"\n :title=\"$t('user_card.block_confirm_title')\"\n :confirm-text=\"$t('user_card.block_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.block_confirm_cancel_button')\"\n @accepted=\"doBlockUser\"\n @cancelled=\"hideConfirmBlock\"\n >\n <i18n-t\n keypath=\"user_card.block_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmRemoveFollower\"\n :title=\"$t('user_card.remove_follower_confirm_title')\"\n :confirm-text=\"$t('user_card.remove_follower_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.remove_follower_confirm_cancel_button')\"\n @accepted=\"doRemoveUserFromFollowers\"\n @cancelled=\"hideConfirmRemoveUserFromFollowers\"\n >\n <i18n-t\n keypath=\"user_card.remove_follower_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./account_actions.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.AccountActions {\n .ellipsis-button {\n width: 2.5em;\n margin: -0.5em 0;\n padding: 0.5em 0;\n text-align: center;\n\n &:not(:hover) .icon {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n</style>\n","<template>\n <div class=\"UserListMenu\">\n <Popover\n trigger=\"hover\"\n placement=\"left\"\n remove-padding\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <button\n v-for=\"list in lists\"\n :key=\"list.id\"\n class=\"button-default dropdown-item\"\n @click=\"toggleList(list.id)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': list.inList }\"\n />\n {{ list.title }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button class=\"btn button-default dropdown-item -has-submenu\">\n {{ $t('lists.manage_lists') }}\n <FAIcon\n class=\"chevron-icon\"\n size=\"lg\"\n icon=\"chevron-right\"\n />\n </button>\n </template>\n </Popover>\n </div>\n</template>\n\n<script src=\"./user_list_menu.js\"></script>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons'\nimport { mapState } from 'vuex'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronRight)\n\nconst UserListMenu = {\n props: [\n 'user'\n ],\n data () {\n return {}\n },\n components: {\n DialogModal,\n Popover\n },\n created () {\n this.$store.dispatch('fetchUserInLists', this.user.id)\n },\n computed: {\n ...mapState({\n allLists: state => state.lists.allLists\n }),\n inListsSet () {\n return new Set(this.user.inLists.map(x => x.id))\n },\n lists () {\n if (!this.user.inLists) return []\n return this.allLists.map(list => ({\n ...list,\n inList: this.inListsSet.has(list.id)\n }))\n }\n },\n methods: {\n toggleList (listId) {\n if (this.inListsSet.has(listId)) {\n this.$store.dispatch('removeListAccount', { accountId: this.user.id, listId }).then((response) => {\n if (!response.ok) { return }\n this.$store.dispatch('fetchUserInLists', this.user.id)\n })\n } else {\n this.$store.dispatch('addListAccount', { accountId: this.user.id, listId }).then((response) => {\n if (!response.ok) { return }\n this.$store.dispatch('fetchUserInLists', this.user.id)\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n },\n setToggled (value) {\n this.toggled = value\n }\n }\n}\n\nexport default UserListMenu\n","import { render } from \"./user_list_menu.vue?vue&type=template&id=aeea2640\"\nimport script from \"./user_list_menu.js?vue&type=script&lang=js\"\nexport * from \"./user_list_menu.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\nimport UserListMenu from 'src/components/user_list_menu/user_list_menu.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEllipsisV\n)\n\nconst AccountActions = {\n props: [\n 'user', 'relationship'\n ],\n data () {\n return {\n showingConfirmBlock: false,\n showingConfirmRemoveFollower: false\n }\n },\n components: {\n ProgressButton,\n Popover,\n UserListMenu,\n ConfirmModal\n },\n methods: {\n showConfirmBlock () {\n this.showingConfirmBlock = true\n },\n hideConfirmBlock () {\n this.showingConfirmBlock = false\n },\n showConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = true\n },\n hideConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = false\n },\n showRepeats () {\n this.$store.dispatch('showReblogs', this.user.id)\n },\n hideRepeats () {\n this.$store.dispatch('hideReblogs', this.user.id)\n },\n blockUser () {\n if (!this.shouldConfirmBlock) {\n this.doBlockUser()\n } else {\n this.showConfirmBlock()\n }\n },\n doBlockUser () {\n this.$store.dispatch('blockUser', this.user.id)\n this.hideConfirmBlock()\n },\n unblockUser () {\n this.$store.dispatch('unblockUser', this.user.id)\n },\n removeUserFromFollowers () {\n if (!this.shouldConfirmRemoveUserFromFollowers) {\n this.doRemoveUserFromFollowers()\n } else {\n this.showConfirmRemoveUserFromFollowers()\n }\n },\n doRemoveUserFromFollowers () {\n this.$store.dispatch('removeUserFromFollowers', this.user.id)\n this.hideConfirmRemoveUserFromFollowers()\n },\n reportUser () {\n this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n },\n openChat () {\n this.$router.push({\n name: 'chat',\n params: { username: this.$store.state.users.currentUser.screen_name, recipient_id: this.user.id }\n })\n }\n },\n computed: {\n shouldConfirmBlock () {\n return this.$store.getters.mergedConfig.modalOnBlock\n },\n shouldConfirmRemoveUserFromFollowers () {\n return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers\n },\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n })\n }\n}\n\nexport default AccountActions\n","import { render } from \"./account_actions.vue?vue&type=template&id=2d1f537d\"\nimport script from \"./account_actions.js?vue&type=script&lang=js\"\nexport * from \"./account_actions.js?vue&type=script&lang=js\"\n\nimport \"./account_actions.vue?vue&type=style&index=0&id=2d1f537d&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"user-note\"\n >\n <div class=\"heading\">\n <span>{{ $t('user_card.note') }}</span>\n <div class=\"buttons\">\n <button\n v-show=\"!editing && editable\"\n class=\"button-default btn\"\n @click=\"startEditing\"\n >\n {{ $t('user_card.edit_note') }}\n </button>\n <button\n v-show=\"editing\"\n class=\"button-default btn\"\n :disabled=\"frozen\"\n @click=\"finalizeEditing\"\n >\n {{ $t('user_card.edit_note_apply') }}\n </button>\n <button\n v-show=\"editing\"\n class=\"button-default btn\"\n :disabled=\"frozen\"\n @click=\"cancelEditing\"\n >\n {{ $t('user_card.edit_note_cancel') }}\n </button>\n </div>\n </div>\n <textarea\n v-show=\"editing\"\n v-model=\"localNote\"\n class=\"note-text\"\n />\n <span\n v-show=\"!editing\"\n class=\"note-text\"\n :class=\"{ '-blank': !relationship.note }\"\n >\n {{ relationship.note || $t('user_card.note_blank') }}\n </span>\n </div>\n</template>\n\n<script src=\"./user_note.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-note {\n display: flex;\n flex-direction: column;\n\n .heading {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 0.75em;\n\n .btn {\n min-width: 95px;\n }\n\n .buttons {\n display: flex;\n flex-direction: row;\n justify-content: right;\n\n .btn {\n margin-left: 0.5em;\n }\n }\n }\n\n .note-text {\n align-self: stretch;\n }\n\n .note-text.-blank {\n font-style: italic;\n color: var(--faint, $fallback--faint);\n }\n}\n</style>\n","const UserNote = {\n props: {\n user: Object,\n relationship: Object,\n editable: Boolean\n },\n data () {\n return {\n localNote: '',\n editing: false,\n frozen: false\n }\n },\n computed: {\n shouldShow () {\n return this.relationship.note || this.editing\n }\n },\n methods: {\n startEditing () {\n this.localNote = this.relationship.note\n this.editing = true\n },\n cancelEditing () {\n this.editing = false\n },\n finalizeEditing () {\n this.frozen = true\n\n this.$store.dispatch('editUserNote', {\n id: this.user.id,\n comment: this.localNote\n })\n .then(() => {\n this.frozen = false\n this.editing = false\n })\n .catch(() => {\n this.frozen = false\n })\n }\n }\n}\n\nexport default UserNote\n","import { render } from \"./user_note.vue?vue&type=template&id=3c543a1e\"\nimport script from \"./user_note.js?vue&type=script&lang=js\"\nexport * from \"./user_note.js?vue&type=script&lang=js\"\n\nimport \"./user_note.vue?vue&type=style&index=0&id=3c543a1e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unitToSeconds } from 'src/services/date_utils/date_utils.js'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport UserNote from '../user_note/user_note.vue'\nimport Select from '../select/select.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBell,\n faRss,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit,\n faTimes,\n faExpandAlt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRss,\n faBell,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit,\n faTimes,\n faExpandAlt\n)\n\nexport default {\n props: [\n 'userId',\n 'switcher',\n 'selected',\n 'hideBio',\n 'rounded',\n 'bordered',\n 'avatarAction', // default - open profile, 'zoom' - zoom, function - call function\n 'onClose',\n 'hasNoteEditor'\n ],\n data () {\n return {\n followRequestInProgress: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n showingConfirmMute: false,\n muteExpiryAmount: 0,\n muteExpiryUnit: 'minutes'\n }\n },\n created () {\n this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n classes () {\n return [{\n '-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n '-rounded': this.rounded === true, // set border-radius for all sides\n '-bordered': this.bordered === true, // set border for all sides\n '-popover': !!this.onClose // set popover rounding\n }]\n },\n style () {\n return {\n backgroundImage: [\n 'linear-gradient(to bottom, var(--profileTint), var(--profileTint))',\n `url(${this.user.cover_photo})`\n ].join(', ')\n }\n },\n isOtherUser () {\n return this.user.id !== this.$store.state.users.currentUser.id\n },\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n dailyAvg () {\n const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n return Math.round(this.user.statuses_count / days)\n },\n userHighlightType: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return (data && data.type) || 'disabled'\n },\n set (type) {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n if (type !== 'disabled') {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n } else {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n userHighlightColor: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return data && data.color\n },\n set (color) {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n }\n },\n visibleRole () {\n const rights = this.user.rights\n if (!rights) { return }\n const validRole = rights.admin || rights.moderator\n const roleTitle = rights.admin ? 'admin' : 'moderator'\n return validRole && roleTitle\n },\n hideFollowsCount () {\n return this.isOtherUser && this.user.hide_follows_count\n },\n hideFollowersCount () {\n return this.isOtherUser && this.user.hide_followers_count\n },\n showModerationMenu () {\n const privileges = this.loggedIn.privileges\n return this.loggedIn.role === 'admin' || privileges.includes('users_manage_activation_state') || privileges.includes('users_delete') || privileges.includes('users_manage_tags')\n },\n hasNote () {\n return this.relationship.note\n },\n supportsNote () {\n return 'note' in this.relationship\n },\n shouldConfirmMute () {\n return this.mergedConfig.modalOnMute\n },\n muteExpiryUnits () {\n return ['minutes', 'hours', 'days']\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n UserAvatar,\n RemoteFollow,\n ModerationTools,\n AccountActions,\n ProgressButton,\n FollowButton,\n Select,\n RichContent,\n UserLink,\n UserNote,\n ConfirmModal\n },\n methods: {\n showConfirmMute () {\n this.showingConfirmMute = true\n },\n hideConfirmMute () {\n this.showingConfirmMute = false\n },\n muteUser () {\n if (!this.shouldConfirmMute) {\n this.doMuteUser()\n } else {\n this.showConfirmMute()\n }\n },\n doMuteUser () {\n this.$store.dispatch('muteUser', {\n id: this.user.id,\n expiresIn: this.shouldConfirmMute ? unitToSeconds(this.muteExpiryUnit, this.muteExpiryAmount) : 0\n })\n this.hideConfirmMute()\n },\n unmuteUser () {\n this.$store.dispatch('unmuteUser', this.user.id)\n },\n subscribeUser () {\n return this.$store.dispatch('subscribeUser', this.user.id)\n },\n unsubscribeUser () {\n return this.$store.dispatch('unsubscribeUser', this.user.id)\n },\n setProfileView (v) {\n if (this.switcher) {\n const store = this.$store\n store.commit('setProfileView', { v })\n }\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n },\n zoomAvatar () {\n const attachment = {\n url: this.user.profile_image_url_original,\n mimetype: 'image'\n }\n this.$store.dispatch('setMedia', [attachment])\n this.$store.dispatch('setCurrentMedia', attachment)\n },\n mentionUser () {\n this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n },\n onAvatarClickHandler (e) {\n if (this.onAvatarClick) {\n e.preventDefault()\n this.onAvatarClick()\n }\n }\n }\n}\n","import { render } from \"./user_card.vue?vue&type=template&id=bc098958\"\nimport script from \"./user_card.js?vue&type=script&lang=js\"\nexport * from \"./user_card.js?vue&type=script&lang=js\"\n\nimport \"./user_card.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <router-link\n :title=\"user.screen_name_ui\"\n :to=\"userProfileLink(user)\"\n >\n {{ at ? '@' : '' }}{{ user.screen_name_ui }}<UnicodeDomainIndicator\n :user=\"user\"\n />\n </router-link>\n</template>\n\n<script>\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst UserLink = {\n props: {\n user: Object,\n at: {\n type: Boolean,\n default: true\n }\n },\n components: {\n UnicodeDomainIndicator\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n }\n }\n}\n\nexport default UserLink\n</script>\n","import { render } from \"./user_link.vue?vue&type=template&id=2cae9070\"\nimport script from \"./user_link.vue?vue&type=script&lang=js\"\nexport * from \"./user_link.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserCard from '../user_card/user_card.vue'\nimport { defineAsyncComponent } from 'vue'\n\nconst UserPopover = {\n name: 'UserPopover',\n props: [\n 'userId', 'overlayCenters', 'disabled', 'overlayCentersSelector'\n ],\n components: {\n UserCard,\n Popover: defineAsyncComponent(() => import('../popover/popover.vue'))\n },\n computed: {\n userPopoverAvatarAction () {\n return this.$store.getters.mergedConfig.userPopoverAvatarAction\n },\n userPopoverOverlay () {\n return this.$store.getters.mergedConfig.userPopoverOverlay\n }\n }\n}\n\nexport default UserPopover\n","import { render } from \"./user_popover.vue?vue&type=template&id=6d5beeb8\"\nimport script from \"./user_popover.js?vue&type=script&lang=js\"\nexport * from \"./user_popover.js?vue&type=script&lang=js\"\n\nimport \"./user_popover.vue?vue&type=style&index=0&id=6d5beeb8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n popover-class=\"popover-default user-popover\"\n :overlay-centers-selector=\"overlayCentersSelector || '.user-info .Avatar'\"\n :overlay-centers=\"overlayCenters && userPopoverOverlay\"\n :disabled=\"disabled\"\n >\n <template #trigger>\n <slot />\n </template>\n <template #content=\"{close}\">\n <UserCard\n class=\"user-popover\"\n :user-id=\"userId\"\n :hide-bio=\"true\"\n :avatar-action=\"userPopoverAvatarAction == 'close' ? close : userPopoverAvatarAction\"\n :on-close=\"close\"\n />\n </template>\n </Popover>\n</template>\n\n<script src=\"./user_popover.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n/* popover styles load on-demand, so we need to override */\n/* stylelint-disable block-no-empty */\n.user-popover.popover {\n}\n/* stylelint-enable block-no-empty */\n\n</style>\n","\nconst VideoAttachment = {\n props: ['attachment', 'controls'],\n data () {\n return {\n blocksSuspend: false,\n // Start from true because removing \"loop\" property seems buggy in Vue\n hasAudio: true\n }\n },\n computed: {\n loopVideo () {\n if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {\n return !this.hasAudio\n }\n return this.$store.getters.mergedConfig.loopVideo\n }\n },\n methods: {\n onPlaying (e) {\n this.setHasAudio(e)\n if (this.loopVideo) {\n this.$emit('play', { looping: true })\n return\n }\n this.$emit('play')\n },\n onPaused (e) {\n this.$emit('pause')\n },\n setHasAudio (e) {\n const target = e.srcElement || e.target\n // If hasAudio is false, we've already marked this video to not have audio,\n // a video can't gain audio out of nowhere so don't bother checking again.\n if (!this.hasAudio) return\n if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n // non-zero if video has audio track\n if (target.webkitAudioDecodedByteCount > 0) return\n }\n if (typeof target.mozHasAudio !== 'undefined') {\n // true if video has audio track\n if (target.mozHasAudio) return\n }\n if (typeof target.audioTracks !== 'undefined') {\n if (target.audioTracks.length > 0) return\n }\n this.hasAudio = false\n }\n }\n}\n\nexport default VideoAttachment\n","import { render } from \"./video_attachment.vue?vue&type=template&id=dda2841a\"\nimport script from \"./video_attachment.js?vue&type=script&lang=js\"\nexport * from \"./video_attachment.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <video\n class=\"video\"\n preload=\"metadata\"\n :src=\"attachment.url\"\n :loop=\"loopVideo\"\n :controls=\"controls\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n playsinline\n @playing=\"onPlaying\"\n @pause=\"onPaused\"\n />\n</template>\n\n<script src=\"./video_attachment.js\"></script>\n","var map = {\n\t\"./ar.json\": [\n\t\t36224,\n\t\t7808\n\t],\n\t\"./ca.json\": [\n\t\t49394,\n\t\t6234\n\t],\n\t\"./cs.json\": [\n\t\t87436,\n\t\t7433\n\t],\n\t\"./de.json\": [\n\t\t25195,\n\t\t9459\n\t],\n\t\"./en.json\": [\n\t\t88797\n\t],\n\t\"./eo.json\": [\n\t\t97898,\n\t\t4646\n\t],\n\t\"./es.json\": [\n\t\t98559,\n\t\t3968\n\t],\n\t\"./et.json\": [\n\t\t13230,\n\t\t4451\n\t],\n\t\"./eu.json\": [\n\t\t84826,\n\t\t4542\n\t],\n\t\"./fa.json\": [\n\t\t52006,\n\t\t2953\n\t],\n\t\"./fi.json\": [\n\t\t70823,\n\t\t9738\n\t],\n\t\"./fr.json\": [\n\t\t61341,\n\t\t3746\n\t],\n\t\"./ga.json\": [\n\t\t41647,\n\t\t830\n\t],\n\t\"./he.json\": [\n\t\t92215,\n\t\t379\n\t],\n\t\"./hu.json\": [\n\t\t95028,\n\t\t5494\n\t],\n\t\"./id.json\": [\n\t\t62263,\n\t\t2513\n\t],\n\t\"./it.json\": [\n\t\t2533,\n\t\t1159\n\t],\n\t\"./ja_easy.json\": [\n\t\t8439,\n\t\t8714\n\t],\n\t\"./ja_pedantic.json\": [\n\t\t22838,\n\t\t325\n\t],\n\t\"./ko.json\": [\n\t\t10707,\n\t\t9670\n\t],\n\t\"./nb.json\": [\n\t\t72358,\n\t\t7845\n\t],\n\t\"./nl.json\": [\n\t\t49922,\n\t\t6256\n\t],\n\t\"./oc.json\": [\n\t\t47297,\n\t\t617\n\t],\n\t\"./pl.json\": [\n\t\t82098,\n\t\t5571\n\t],\n\t\"./pt.json\": [\n\t\t94465,\n\t\t4047\n\t],\n\t\"./ro.json\": [\n\t\t64367,\n\t\t6342\n\t],\n\t\"./ru.json\": [\n\t\t73289,\n\t\t5964\n\t],\n\t\"./sk.json\": [\n\t\t31478,\n\t\t1547\n\t],\n\t\"./te.json\": [\n\t\t32781,\n\t\t2044\n\t],\n\t\"./uk.json\": [\n\t\t8411,\n\t\t5253\n\t],\n\t\"./vi.json\": [\n\t\t6294,\n\t\t4975\n\t],\n\t\"./zh.json\": [\n\t\t4425,\n\t\t5929\n\t],\n\t\"./zh_Hant.json\": [\n\t\t37644,\n\t\t6544\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 27650;\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"50\":\"emoji-annotations/en_GB-json\",\"227\":\"emoji-annotations/ha-json\",\"278\":\"emoji-annotations/kn-json\",\"313\":\"emoji-annotations/tg-json\",\"325\":\"i18n/ja_pedantic-json\",\"346\":\"emoji-annotations/rw-json\",\"379\":\"i18n/he-json\",\"420\":\"emoji-annotations/fi-json\",\"457\":\"emoji-annotations/zh-json\",\"577\":\"emoji-annotations/en_001-json\",\"617\":\"i18n/oc-json\",\"625\":\"emoji-annotations/so-json\",\"678\":\"emoji-annotations/ps-json\",\"786\":\"emoji-annotations/xh-json\",\"830\":\"i18n/ga-json\",\"1012\":\"emoji-annotations/or-json\",\"1044\":\"emoji-annotations/zh_Hant_HK-json\",\"1056\":\"emoji-annotations/uz-json\",\"1095\":\"emoji-annotations/pl-json\",\"1159\":\"i18n/it-json\",\"1162\":\"emoji-annotations/ccp-json\",\"1236\":\"emoji-annotations/fil-json\",\"1290\":\"emoji-annotations/ja-json\",\"1404\":\"emoji-annotations/km-json\",\"1452\":\"emoji-annotations/yue-json\",\"1546\":\"emoji-annotations/pt_PT-json\",\"1547\":\"i18n/sk-json\",\"1553\":\"emoji-annotations/sl-json\",\"1584\":\"emoji-annotations/to-json\",\"1596\":\"emoji-annotations/da-json\",\"1613\":\"emoji-annotations/mai-json\",\"1780\":\"emoji-annotations/tk-json\",\"1790\":\"emoji-annotations/dsb-json\",\"1821\":\"emoji-annotations/fr_CA-json\",\"1911\":\"emoji-annotations/mr-json\",\"1959\":\"emoji-annotations/su-json\",\"2044\":\"i18n/te-json\",\"2223\":\"emoji-annotations/fr-json\",\"2243\":\"emoji-annotations/sa-json\",\"2342\":\"emoji-annotations/az-json\",\"2350\":\"emoji-annotations/sk-json\",\"2397\":\"emoji-annotations/kl-json\",\"2479\":\"emoji-annotations/jv-json\",\"2513\":\"i18n/id-json\",\"2569\":\"emoji-annotations/tt-json\",\"2599\":\"emoji-annotations/kok-json\",\"2656\":\"emoji-annotations/ckb-json\",\"2685\":\"emoji-annotations/ml-json\",\"2699\":\"emoji-annotations/es_MX-json\",\"2767\":\"emoji-annotations/zh_Hant-json\",\"2861\":\"emoji-annotations/hr-json\",\"2873\":\"emoji-annotations/kk-json\",\"2874\":\"emoji-annotations/sc-json\",\"2883\":\"emoji-annotations/ku-json\",\"2953\":\"i18n/fa-json\",\"2966\":\"emoji-annotations/ko-json\",\"2992\":\"emoji-annotations/eu-json\",\"3056\":\"emoji-annotations/hi_Latn-json\",\"3241\":\"emoji-annotations/sv-json\",\"3276\":\"emoji-annotations/et-json\",\"3313\":\"emoji-annotations/es_US-json\",\"3377\":\"emoji-annotations/as-json\",\"3568\":\"emoji-annotations/ti-json\",\"3687\":\"emoji\",\"3746\":\"i18n/fr-json\",\"3887\":\"emoji-annotations/sr-json\",\"3951\":\"emoji-annotations/th-json\",\"3968\":\"i18n/es-json\",\"3974\":\"emoji-annotations/bg-json\",\"3994\":\"emoji-annotations/sw_KE-json\",\"4047\":\"i18n/pt-json\",\"4209\":\"emoji-annotations/doi-json\",\"4354\":\"emoji-annotations/si-json\",\"4368\":\"emoji-annotations/sq-json\",\"4424\":\"emoji-annotations/yue_Hans-json\",\"4451\":\"i18n/et-json\",\"4542\":\"i18n/eu-json\",\"4571\":\"emoji-annotations/ga-json\",\"4646\":\"i18n/eo-json\",\"4691\":\"emoji-annotations/ca-json\",\"4710\":\"emoji-annotations/cs-json\",\"4718\":\"emoji-annotations/mn-json\",\"4770\":\"emoji-annotations/lb-json\",\"4785\":\"emoji-annotations/ky-json\",\"4786\":\"emoji-annotations/te-json\",\"4879\":\"emoji-annotations/en_CA-json\",\"4902\":\"emoji-annotations/hu-json\",\"4975\":\"i18n/vi-json\",\"5041\":\"emoji-annotations/pt-json\",\"5104\":\"emoji-annotations/pcm-json\",\"5115\":\"emoji-annotations/sr_Latn_BA-json\",\"5119\":\"emoji-annotations/am-json\",\"5224\":\"emoji-annotations/vi-json\",\"5253\":\"i18n/uk-json\",\"5304\":\"emoji-annotations/ha_NE-json\",\"5401\":\"emoji-annotations/mni-json\",\"5494\":\"i18n/hu-json\",\"5521\":\"emoji-annotations/fa-json\",\"5548\":\"emoji-annotations/he-json\",\"5571\":\"i18n/pl-json\",\"5728\":\"emoji-annotations/en-json\",\"5887\":\"emoji-annotations/rm-json\",\"5929\":\"i18n/zh-json\",\"5964\":\"i18n/ru-json\",\"5968\":\"emoji-annotations/hi-json\",\"6060\":\"emoji-annotations/sr_Cyrl_BA-json\",\"6068\":\"emoji-annotations/ka-json\",\"6116\":\"emoji-annotations/gd-json\",\"6126\":\"emoji-annotations/gl-json\",\"6148\":\"emoji-annotations/br-json\",\"6226\":\"emoji-annotations/de-json\",\"6234\":\"i18n/ca-json\",\"6256\":\"i18n/nl-json\",\"6272\":\"emoji-annotations/cy-json\",\"6342\":\"i18n/ro-json\",\"6344\":\"emoji-annotations/hy-json\",\"6355\":\"emoji-annotations/af-json\",\"6544\":\"i18n/zh_Hant-json\",\"6701\":\"emoji-annotations/mi-json\",\"6773\":\"emoji-annotations/nl-json\",\"6790\":\"emoji-annotations/my-json\",\"6797\":\"emoji-annotations/ur-json\",\"6826\":\"emoji-annotations/sd-json\",\"6831\":\"emoji-annotations/es-json\",\"6869\":\"emoji-annotations/chr-json\",\"6936\":\"emoji-annotations/ia-json\",\"6946\":\"emoji-annotations/pa-json\",\"7164\":\"emoji-annotations/de_CH-json\",\"7169\":\"emoji-annotations/lt-json\",\"7261\":\"emoji-annotations/gu-json\",\"7300\":\"emoji-annotations/is-json\",\"7303\":\"emoji-annotations/wo-json\",\"7304\":\"emoji-annotations/be-json\",\"7360\":\"emoji-annotations/ar_SA-json\",\"7433\":\"i18n/cs-json\",\"7464\":\"emoji-annotations/lo-json\",\"7569\":\"emoji-annotations/ast-json\",\"7585\":\"emoji-annotations/sw-json\",\"7808\":\"i18n/ar-json\",\"7845\":\"i18n/nb-json\",\"7855\":\"emoji-annotations/sat-json\",\"7879\":\"emoji-annotations/el-json\",\"7897\":\"emoji-annotations/ta-json\",\"8015\":\"emoji-annotations/hsb-json\",\"8031\":\"emoji-annotations/qu-json\",\"8134\":\"emoji-annotations/bs-json\",\"8395\":\"emoji-annotations/ru-json\",\"8681\":\"emoji-annotations/sr_Latn-json\",\"8714\":\"i18n/ja_easy-json\",\"8732\":\"emoji-annotations/yo-json\",\"8873\":\"emoji-annotations/es_419-json\",\"8898\":\"emoji-annotations/lv-json\",\"8970\":\"emoji-annotations/it-json\",\"8988\":\"emoji-annotations/en_IN-json\",\"8995\":\"emoji-annotations/fo-json\",\"9064\":\"emoji-annotations/bn-json\",\"9319\":\"emoji-annotations/zu-json\",\"9360\":\"emoji-annotations/en_AU-json\",\"9377\":\"emoji-annotations/ne-json\",\"9399\":\"emoji-annotations/mt-json\",\"9414\":\"emoji-annotations/nn-json\",\"9459\":\"i18n/de-json\",\"9465\":\"emoji-annotations/id-json\",\"9670\":\"i18n/ko-json\",\"9738\":\"i18n/fi-json\",\"9757\":\"emoji-annotations/ug-json\",\"9780\":\"emoji-annotations/kab-json\",\"9790\":\"emoji-annotations/ceb-json\",\"9864\":\"emoji-annotations/ro-json\",\"9871\":\"emoji-annotations/uk-json\",\"9873\":\"emoji-annotations/ar-json\",\"9895\":\"emoji-annotations/ig-json\",\"9921\":\"emoji-annotations/mk-json\",\"9924\":\"emoji-annotations/ms-json\",\"9926\":\"emoji-annotations/yo_BJ-json\",\"9978\":\"emoji-annotations/tr-json\",\"9979\":\"emoji-annotations/no-json\",\"9994\":\"emoji-annotations/pa_Arab-json\"}[chunkId] || chunkId) + \".\" + {\"48\":\"d7e479b200a6c89c4958\",\"50\":\"bd687f904492facc81d1\",\"159\":\"3a9274574f1e33801c4a\",\"227\":\"2a08912b38925c10f970\",\"278\":\"efdac8ac0cb00991ba1e\",\"313\":\"9647f559a4477d7d8e96\",\"325\":\"b52fa70f0bf89ae01cfb\",\"346\":\"031838c5374676191131\",\"379\":\"03c5d271a4034de06e6f\",\"420\":\"0f254bb4b0faaba4abcc\",\"457\":\"e42a28127d5c1aff6c85\",\"577\":\"72d8c47269350f59aa9f\",\"617\":\"4f52bf1b6e3213acc33c\",\"625\":\"f75abd16637c8924c075\",\"678\":\"a0d9eea5b81bcad11e64\",\"786\":\"21e88c05ad3113dfc7f2\",\"830\":\"3f1981817977a16f1d7e\",\"1012\":\"b007c2f6f92dcc95efac\",\"1044\":\"7eee03c705347a21c612\",\"1056\":\"ac43f4c54d4587324a20\",\"1095\":\"e9e8f1ed84dc6c169516\",\"1159\":\"99a21d5c98376af17141\",\"1162\":\"02836537ffe2b02291cb\",\"1236\":\"4fca833f178d1b889b69\",\"1290\":\"0bd51f8c40c106355b0e\",\"1404\":\"9bc922b2e0faa64b4c53\",\"1452\":\"15102c0ddfdf19bdfb4c\",\"1546\":\"c381b13e323f91b0e6b3\",\"1547\":\"d8d0eba80f94e6f55145\",\"1553\":\"a40c5548da34fce6f1d0\",\"1584\":\"50ac37d101caaf592c94\",\"1596\":\"8d074e27df71edafc543\",\"1613\":\"302386b3358f4d34f9c8\",\"1780\":\"23a9a6229829921704ad\",\"1790\":\"7635686ffd8d62264466\",\"1821\":\"59ed6b59e2ca68707292\",\"1911\":\"cb0a87d9aabf8a52161d\",\"1959\":\"daff15251020cbecea7d\",\"2044\":\"ce6db28261b2f824064f\",\"2223\":\"da49ed0d1a6622fe1c67\",\"2243\":\"21b06234a08c7469ccb4\",\"2342\":\"9a32f2941d9c4d1f834c\",\"2350\":\"5d96bdb4da82655d0314\",\"2397\":\"87ab8661b4bdecd09faf\",\"2479\":\"1c8d5ffcff22b46b6214\",\"2513\":\"3e42564ce7a3a847ecb0\",\"2569\":\"4c089389ba9983ec8ef7\",\"2599\":\"116e4f72db3bfb846233\",\"2656\":\"13dc83db1e15aa76051a\",\"2685\":\"3f2902a84240faff1b48\",\"2699\":\"ee359d4b611fdb1aeb33\",\"2767\":\"9cbb765c181d443828a9\",\"2861\":\"fe847ade1f18a60e513c\",\"2873\":\"a20b59d47bdfe99786ad\",\"2874\":\"c84c9c47d2e104c43e4c\",\"2883\":\"2173ed87f8d7372ee209\",\"2953\":\"a19100f6a5a9431e2adb\",\"2966\":\"d175900fe48f48ce87c8\",\"2992\":\"931b429f5fcc141549a5\",\"3056\":\"3cb73c456f31261f1908\",\"3241\":\"8b0374cbca3a77519876\",\"3276\":\"c42e3f186a55ecb061cd\",\"3313\":\"280bdb036dfd651d079a\",\"3377\":\"34cf67edc1cecd195738\",\"3568\":\"5b173bd33bb960be805b\",\"3687\":\"33eab91b64f59431137d\",\"3746\":\"36ef21ccb1203d3e65ae\",\"3887\":\"e29a20e59a708df0c6a8\",\"3951\":\"34709bae223bb9d2587c\",\"3968\":\"4a302899a65e1f67d8a2\",\"3974\":\"7c69c52572a7bf87e1db\",\"3994\":\"f3563cbeac1c158563d5\",\"4047\":\"3fc5593e030268bcd291\",\"4209\":\"7841c3f3ceb4e3da0bd1\",\"4354\":\"841b356da03623c10dbf\",\"4368\":\"bcf154ed8a6138aa089c\",\"4424\":\"cc60bb10d32fab3d8207\",\"4451\":\"580b101d6bb83a8aee75\",\"4542\":\"d2eab39b0427995fc314\",\"4571\":\"cb3f9e613a8c445aea23\",\"4646\":\"d81690d5be30b23e516b\",\"4691\":\"ce029e860b10b242c6a5\",\"4710\":\"48d8bba230dc9fe6b3dc\",\"4718\":\"764169f1168d0432640f\",\"4770\":\"499c526f3a653618ea9b\",\"4785\":\"310bda579c819eda9472\",\"4786\":\"8a69a10f62cdf626244e\",\"4879\":\"5de965778a6b8a5a4bb4\",\"4902\":\"1faf52040deda872b416\",\"4975\":\"703c1e731be6e857bbf3\",\"5041\":\"2b2512ee44291bdb2ae7\",\"5104\":\"eac3a5ad0b4b5b33289d\",\"5115\":\"72933405032b81344754\",\"5119\":\"94388548f7c18233fec3\",\"5224\":\"f6a364b2add7f8c8bc67\",\"5253\":\"003908af9b15becdd382\",\"5304\":\"e4855d92aaccfdd6ba57\",\"5401\":\"7db7f76ab1ce34e3683d\",\"5494\":\"0487899ca7a7a8505ed8\",\"5521\":\"819c7f263c8594ccf4fa\",\"5548\":\"a3d7631f32182b0955a2\",\"5571\":\"c963247822381b05579b\",\"5728\":\"6c3947f7c49c3952084d\",\"5887\":\"985d4934f386fd05a75c\",\"5929\":\"63e4c9fe0197374a5dac\",\"5948\":\"2b7b4e97487f2539eb44\",\"5964\":\"b913eb7f7e9f0c642438\",\"5968\":\"04bc5f73dc2169def97e\",\"6060\":\"83c7c64b9696ae2339f2\",\"6068\":\"567e7b051d90a37003f3\",\"6116\":\"e3d0aea3725be774ad81\",\"6126\":\"ce89036f0ae72224c994\",\"6148\":\"c7175423d8965ed10bae\",\"6226\":\"e1443c01a191af1665e1\",\"6234\":\"1eb24bc001efa3c0627f\",\"6256\":\"3fb9758b10c29434b613\",\"6272\":\"e09dd13da5ad56530ead\",\"6342\":\"3fd9977ed1c1413059ae\",\"6344\":\"2d819f7faabfeba8457f\",\"6355\":\"96c988285a6a2cce6246\",\"6464\":\"fea96fa80a7373e4e5f8\",\"6544\":\"bfa569654a5cd74767ce\",\"6701\":\"9efe6f146ecd8987f80a\",\"6773\":\"52f4b93b8fa5e22cb585\",\"6790\":\"8e7dd1485813d15bba7e\",\"6797\":\"983c02109444c883a18f\",\"6826\":\"8f2a6a06dc3cf185f79d\",\"6831\":\"f593b0dc2367a9d7fb30\",\"6869\":\"e7e542ab5a74167dec10\",\"6936\":\"8e8365e2bf41779e2beb\",\"6946\":\"7d60d69762a108270669\",\"7164\":\"b4a5891ea2f38d616ec0\",\"7169\":\"ced4d5e70edc60127df6\",\"7261\":\"8a899f364cf260376905\",\"7300\":\"62e220c65215b034533d\",\"7303\":\"e0d689e22cda0dd77e9a\",\"7304\":\"f92f80669873a4100c69\",\"7360\":\"4a6f4402931a867070f0\",\"7433\":\"5eedbe9f7084c349fbe8\",\"7464\":\"ecb06d61465a355b8157\",\"7569\":\"7e4da8cb7e539c19a9b9\",\"7585\":\"d5f350641b9cbcc0e126\",\"7808\":\"d09609af3224232857d6\",\"7845\":\"a54af3b1f47d576ad4aa\",\"7855\":\"71e92700b2aaca8e021c\",\"7879\":\"b36610f2ea16d56c2314\",\"7897\":\"675cc6c7607449d4a91b\",\"8015\":\"438721731b4171bc6fc3\",\"8031\":\"55f4df57e71076dbad9f\",\"8134\":\"48ef42da1c7976cf083c\",\"8395\":\"a81d0df34460837ccacc\",\"8681\":\"ff27d1f455bf2afb8d70\",\"8714\":\"1d5ea7e755b066ac2cdd\",\"8732\":\"ea1150d6bc360dd86f2e\",\"8873\":\"d81991295392b6ed83bb\",\"8898\":\"5600c2eb6d59fa0aa2e2\",\"8970\":\"9c1758f4fd3391f7f61a\",\"8988\":\"002faa48c09121928fca\",\"8995\":\"9b060e8009b3a8be4597\",\"9064\":\"657aac057f36ad06c58d\",\"9114\":\"e761a1c6846fea99aaf1\",\"9319\":\"e0cb7cd3890583fd0f6d\",\"9360\":\"33aac9bbd887273a34b1\",\"9377\":\"a0118dca2096a101b8e8\",\"9399\":\"3ddf7dbc114adf90c500\",\"9414\":\"7293cd5d7205681cf48c\",\"9459\":\"bfa48615ac92f87ff37a\",\"9465\":\"55f83c46d753b0b69330\",\"9670\":\"4bd28b26a7390a09afc2\",\"9738\":\"d1934c18f12d80493ab1\",\"9757\":\"bf768bd32e9ff02b0a8a\",\"9780\":\"1a2de4774f4ddc2b51dd\",\"9790\":\"9db0336f168aa77ee395\",\"9864\":\"cb62f86ce78c94d1e813\",\"9871\":\"af110c8eef232638fc4d\",\"9873\":\"5527466d349f2954d49b\",\"9895\":\"f19fa5fe3582463ba73c\",\"9921\":\"a254cabb8570419cc426\",\"9924\":\"272ee4735aabc37015dd\",\"9926\":\"650318c25fe4da92bad8\",\"9978\":\"6462e8cfd5006cf5b6cf\",\"9979\":\"22bdbbc77cc3c14ada58\",\"9994\":\"5ae021308b1c5f6dd8a7\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"159\":\"1d523a00378ebd68c5b3\",\"5948\":\"06d2a0d84620cba6a4fb\",\"6464\":\"169260b661120cc50815\",\"9114\":\"8def3b2b7fe70b3b3712\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t2143: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"159\":1,\"5948\":1,\"6464\":1,\"9114\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2143: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpleroma_fe\"] = self[\"webpackChunkpleroma_fe\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [2724], () => (__webpack_require__(43002)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","ctx","normalize","_normalize","interpolate","_interpolate","named","_named","list","_list","plural","_plural","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","module","exports","data","emojiCurry","suggestEmoji","emoji","usersCurry","store","suggestUsers","input","nameKeywordLocalizer","firstChar","emojis","noPrefix","toLowerCase","substr","filter","names","concat","keywords","kw","match","length","k","score","Math","max","name","imageUrl","startsWith","displayText","sort","a","b","alphabetically","dispatch","state","suggestions","previousQuery","timeout","cancelUserSearch","debounceUserSearch","query","reject","setTimeout","userSearch","clearTimeout","includes","newSuggestions","users","user","screen_name","slice","aScore","bScore","screen_name_ui","detailText","profile_image_url_original","replacement","getTagName","tag","result","exec","getAttrs","innertag","substring","replace","RegExp","trim","attrs","Array","from","matchAll","v","fromEntries","attrKey","processTextForEmoji","text","processor","buffer","textBuffer","i","char","next","found","shortcode","push","class","props","url","required","type","String","content","default","methods","onClick","this","link","generateTagLink","$router","window","open","_createElementBlock","_hoisted_1","_createElementVNode","href","_ctx","target","innerHTML","components","MentionsLine","HashtagLink","html","attentions","handleLinks","Boolean","greentext","render","preProcessPerLine","newHtml","currentMentions","lastSpacing","lastTags","writtenMentions","invisibleMentions","writtenTags","mentionIndex","tagsIndex","encounteredTextReverse","pass1","emptyElements","Set","levels","tagBuffer","getCurrentBuffer","flushText","handleSelfClosing","handleOpen","curBuf","newLevel","handleClose","currentTag","pop","tagFull","tagName","has","convertHtmlToTree","processItem","item","index","array","what","emptyText","isArray","opener","children","closer","Tag","fullAttrs","mentionsLinePadding","linkData","getLinkData","notifying","some","statusnet_profile_url","MENTIONS_LIMIT","renderMention","undefined","pass2","reverse","processItemReverse","rel","renderHashtag","newChildren","event","$emit","textContent","stripTags","join","greentextHandle","lines","blockElements","linebreakElements","visualLineElements","values","nonEmptyElements","elem","allElements","level","flush","handleBr","unshift","shift","convertHtmlToLines","string","every","l","cleanedString","findFirstUsable","slots","findIndex","_","renderOnlyFocused","onSwitch","Function","activeTab","scrollableTabs","sideTabBar","bodyScrollLock","active","computed","activeIndex","slot","key","isActive","tabName","$slots","settingsModalVisible","settingsModalState","mapState","beforeUpdate","clickTab","preventDefault","setTab","Fragment","call","$refs","contents","scrollTop","tabs","classesTab","classesWrapper","image","disabled","label","icon","classes","fullHeight","renderSlot","specialJsonName","ja","languages","langCodeToJsonName","langCodeToCldrName","ensureFinalFallback","codes","codeList","loadLanguageFile","en","require","setLanguage","i18n","language","first","rest","locale","fallbackLocale","lang","messages","setLocaleMessage","EventTarget","EventTargetPolyfill","settingsModalLoaded","settingsModalTargetTab","settings","currentSaveStateNotice","noticeClearTimeout","notificationPermission","browserSupport","cssFilter","CSS","supports","layoutType","globalNotices","layoutHeight","lastTimeline","mutations","settingsSaved","success","error","errorData","setNotificationPermission","permission","setLayoutType","value","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","notice","removeGlobalNotice","n","setLayoutHeight","setLayoutWidth","layoutWidth","setLastTimeline","actions","setPageTitle","rootState","option","document","title","instance","commit","clearSettingsModalTargetTab","openSettingsModalTab","messageKey","messageArgs","newNotice","rootGetters","width","normalOrMobile","mergedConfig","thirdColumnMode","currentUser","SORTED_EMOJI_GROUP_IDS","REGIONAL_INDICATORS","start","A","codePointAt","res","end","letter","fromCodePoint","displayTextI18n","args","loadAnnotations","injectAnnotations","annotations","availableLangs","reduce","acc","cur","registrationOpen","server","textlimit","themeData","vapidPublicKey","alwaysShowSubjectInput","defaultAvatar","defaultBanner","background","collapseMessageWithSubject","useAtIcon","mentionLinkDisplay","mentionLinkShowTooltip","mentionLinkShowAvatar","mentionLinkFadeDomain","mentionLinkShowYous","mentionLinkBoldenYou","hideFilteredStatuses","hideMutedPosts","hideMutedThreads","hideWordFilteredPosts","hidePostStats","hideBotIndication","hideSitename","hideUserStats","muteBotStatuses","modalOnRepeat","modalOnUnfollow","modalOnBlock","modalOnMute","modalOnDelete","modalOnLogout","modalOnApproveFollow","modalOnDenyFollow","modalOnRemoveUserFromFollowers","loginMethod","logo","logoMargin","logoMask","logoLeft","disableUpdateNotification","minimalScopesMode","nsfwCensorImage","postContentType","redirectRootLogin","redirectRootNoLogin","scopeCopy","showFeaturesPanel","showInstanceSpecificPanel","sidebarRight","subjectLineBehavior","theme","virtualScrolling","sensitiveByDefault","conversationDisplay","conversationTreeAdvanced","conversationOtherRepliesButton","conversationTreeFadeAncestors","maxDepthInThread","customEmoji","customEmojiFetched","emojiFetched","unicodeEmojiAnnotations","pleromaBackend","postFormats","restrictedNicknames","safeDM","knownDomains","birthdayRequired","birthdayMinAge","shoutAvailable","pleromaChatMessagesAvailable","gopherAvailable","mediaProxyAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","pollsAvailable","pollLimits","max_options","max_option_chars","min_expiration","max_expiration","setInstanceOption","setKnownDomains","domains","setUnicodeEmojiAnnotations","getters","instanceDefaultConfig","instanceDefaultProperties","groupedCustomEmojis","packs","tags","packName","packsOf","forEach","packId","standardEmojiList","groupId","standardEmojiGroupList","instanceDomain","URL","hostname","remoteInteractionLink","endsWith","statusId","nickname","getStaticEmoji","slug","groups","symbols","console","warn","loadUnicodeEmojiData","langList","all","getCustomEmoji","fetch","ok","json","assign","caseInsensitiveStrCmp","la","lb","noPackLast","aNull","bNull","byPackThenByName","packOf","packOfA","packOfB","entries","image_url","setTheme","themeName","getPreset","config","customTheme","themeSource","source","themeEngineVersion","CURRENT_VERSION","applyTheme","fetchEmoji","getKnownDomains","apiService","credentials","emptyTl","userId","statuses","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","maxId","minId","minVisibleId","loading","followers","friends","flushMarker","emptyNotifications","desktopNotificationSilence","Number","POSITIVE_INFINITY","idStore","defaultState","allStatuses","allStatusesObject","conversationsObject","notifications","favorites","timelines","mentions","public","media","publicAndExternal","dms","bookmarks","mergeOrAdd","arr","obj","oldItem","attachments","splice","new","status","deleted","prepareStatus","sortById","seqA","seqB","isSeqA","isNaN","isSeqB","sortTimeline","timeline","addStatusToGlobalStorage","conversationId","statusnet_conversation_id","updateNotificationsMinMaxId","notification","addNewStatuses","showImmediately","noIdUpdate","pagination","timelineObject","minNew","maxNew","newer","older","addStatus","resultForCurrentTimeline","addToTimeline","visibility","processors","edit","retweet","retweetedStatus","retweeted_status","s","favorite","add","counter","in_reply_to_status_id","favorited","fave_num","favoriteStatus","deletion","uri","action","removeStatusFromGlobalStorage","follow","unknown","log","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","isValidNotification","isStatusNotification","report","hasOwnProperty","seen","removeStatus","showNewStatuses","oldTimeline","resetStatuses","emptyState","clearTimeline","excludeUserId","clearNotifications","setFavorited","newStatus","setFavoritedConfirm","favoritedBy","setMutedStatus","thread_muted","setRetweeted","repeated","repeat_num","setRetweetedConfirm","rebloggedBy","setBookmarked","bookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","nsfw","setNotificationsLoading","setNotificationsSilence","markNotificationsAsSeen","markSingleNotificationAsSeen","dismissNotification","dismissNotifications","finder","updateNotification","updater","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","find","addFavs","favoritedByUsers","addEmojiReactionsBy","emojiReactions","emoji_reactions","addOwnReaction","reactionIndex","reaction","count","accounts","newReaction","me","removeOwnReaction","r","updateStatusWithPoll","poll","setVirtualHeight","height","virtualHeight","maybeShowNotification","fetchStatus","api","backendInteractor","fetchStatusSource","fetchStatusHistory","deleteStatus","deleteStatusById","markStatusesAsDeleted","unfavorite","fetchPinnedStatuses","pinStatus","pinOwnStatus","unpinStatus","unpinOwnStatus","muteConversation","unmuteConversation","unretweet","bookmark","bookmarkStatus","unbookmark","unbookmarkStatus","single","dismissNotificationLocal","fetchFavsAndRepeats","fetchFavoritedByUsers","fetchRebloggedByUsers","reactWithEmoji","unreactWithEmoji","fetchEmojiReactionsBy","fetchEmojiReactions","fetchFavs","fetchRepeats","search","q","limit","offset","following","search2","u","setLists","allLists","setList","listId","allListsObject","accountIds","entry","setListAccounts","addListAccount","accountId","removeListAccount","set","deleteList","lists","createList","fetchList","getList","fetchListAccounts","getListAccounts","updateList","saved","added","removed","addAccountsToList","removeAccountsFromList","findListTitle","findListAccounts","fetchAndUpdate","until","since","timelineData","replyVisibility","loggedIn","withMuted","numStatusesBeforeFetch","response","errors","statusText","ccTimeline","update","message","timelineFetcher","startFetching","promiseInterval","boundFetchAndUpdate","requests","listsFetcher","startFetchingTimeline","fetchTimeline","startFetchingNotifications","notificationsFetcher","fetchNotifications","startFetchingFollowRequests","followRequestFetcher","startFetchingLists","startUserSocket","getMastodonSocketURI","stream","ProcessedWS","func","verifyCredentials","windowWidth","innerWidth","documentElement","clientWidth","body","windowHeight","innerHeight","clientHeight","REDIRECT_URI","location","origin","getOrCreateApp","clientId","clientSecret","form","FormData","append","___pleromafe_commit_hash","Date","toISOString","method","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","scope","dataString","encoded","encodeURIComponent","getToken","getTokenWithCredentials","username","password","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","token","isPushSupported","navigator","getOrCreateServiceWorker","runtime","err","deleteSubscriptionFromBackEnd","headers","Authorization","mergeArrayLength","oldValue","newValue","blockUser","relationship","unblockUser","muteUser","expiresIn","predictedRelationship","relationships","muting","unmuteUser","muteDomain","domain","unmuteDomain","tagUser","usersObject","newTags","untagUser","updateRight","right","newRights","rights","updateActivationStatus","deactivated","setCurrentUser","lastLoginName","clearCurrentUser","beginLogin","loggingIn","endLogin","saveFriendIds","friendIds","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","usersByNameObject","updateUserRelationship","updateUserInLists","inLists","saveBlockIds","blockIds","addBlockId","blockId","indexOf","saveMuteIds","muteIds","addMuteId","muteId","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","pinned","setUserForStatus","setUserForNotification","from_profile","setColor","highlighted","highlight","signUpPending","signUpErrors","signUpSuccess","signUpFailure","findUser","findUserByName","findUserByUrl","fetchUserIfMissing","fetchUser","fetchUserByName","fetchUserRelationship","fetchUserInLists","fetchBlocks","blocks","removeUserFromFollowers","blockUsers","unblockUsers","editUserNote","comment","fetchMutes","mutes","hideReblogs","followUser","reblogs","showReblogs","muteUsers","unmuteUsers","fetchDomainMutes","muteDomains","unmuteDomains","fetchFriends","fetchFollowers","subscribeUser","unsubscribeUser","toggleActivationStatus","activateUser","deactivateUser","is_active","registerPushNotifications","isEnabled","notificationVisibility","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","charCodeAt","pushManager","subscribe","subscribePush","subscription","JSON","stringify","alerts","follows","favourite","likes","mention","reblog","repeats","move","moves","responseData","sendSubscriptionToBackEnd","webPushNotifications","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","targetUsers","notificationIds","notificationsObject","relevantNotifications","searchUsers","signUp","userInfo","register","params","access_token","getCaptcha","logout","oauthApi","userToken","backendInteractorService","loginUser","accessToken","Notification","requestPermission","locked","useStreamingApi","latest","maybeShowChatNotification","chat","lastMessage","chats","currentChatId","hidden","account_id","opts","account","profile_image_url","attachment","preview_url","showDesktopNotification","retryMultiplier","fetchers","socket","mastoUserSocket","mastoUserSocketStatus","followRequests","followRequestCount","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","stop","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","WebSocket","CLOSED","CLOSING","getState","WSConnectionStatus","disableMastoSockets","startMastoUserSocket","addEventListener","detail","chatId","chatUpdate","closeEvent","ignoreCodes","debug","stopMastoUserSocket","close","stopFetchingTimeline","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","request","it","stopFetchingLists","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","library","faTimes","Modal","NEW_USER_DATE","COMMAND_TRIM_FLAGS_AND_RESET","dirty","flagStorage","updateCounter","reset","prefsStorage","_journal","simple","dontShowUpdateNotifs","collapseNav","collections","pinnedNavItems","raw","cache","newUserFlags","_moveItemInArray","movement","oldIndex","newIndex","newArray","_wrapData","userName","_user","_timestamp","now","_version","_checkValidity","_verifyPrefs","_mergeJournal","journals","allJournals","j","prototype","grouped","trimmedGrouped","path","journal","timestamp","remainder","lastRemoveIndex","operation","clearServerSideStorage","userData","setServerSideStorage","live","storage","fqn","recent","stale","needUpload","cacheValid","liveValid","_getRecentData","_PLEROMA_HOTPATCH","reverseMigrations","to","_doMigrations","needsUpload","userNew","created_at","flagsTemplate","recentData","staleData","totalFlags","totalPrefs","allFlagKeys","toRaw","_getAllFlags","flag","recentFlag","staleFlag","_mergeFlags","recentJournal","staleJournal","resultOutput","totalJournal","command","newSet","_mergePrefs","knownKeys","knownKeysSet","_resetFlags","min","setFlag","setPreference","addCollectionPreference","collection","removeCollectionPreference","reorderCollectionPreference","newCollection","updateCache","pushServerSideStorage","force","needPush","pleroma_settings_store","updateProfile","channel","joined","setChannel","addMessage","setMessages","setJoined","initializeShout","joinPush","receive","onClose","onError","on","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","PASSWORD_STRATEGY","TOKEN_STRATEGY","TOTP_STRATEGY","RECOVERY_STRATEGY","resetState","strategy","initStrategy","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","root","supportedTypes","mediaViewer","currentIndex","activated","setMedia","setCurrentMedia","fileTypeService","mimetype","current","closeMediaViewer","tokens","fetchTokens","fetchOAuthTokens","revokeOAuthToken","swapTokens","reports","reportModal","preTickedIds","openUserReportingModal","closeUserReportingModal","setReportState","reportsState","addReport","statusIds","preTickedStatuses","oldState","trackedPolls","pollsObject","mergeOrAddPoll","existingPoll","expired","parse","expires_at","trackPoll","pollId","currentValue","untrackPoll","updateTrackedPoll","fetchPoll","polls","votePoll","choices","vote","modalActivated","openPostStatusModal","closePostStatusModal","openEditStatusModal","closeEditStatusModal","openStatusHistoryModal","closeStatusHistoryModal","ChatService","newMessages","updateMaxId","chat_id","fakeId","fakeMessage","idIndex","pending","idempotency_key","idempotencyKeyIndex","isConfirmation","lastSeenMessageId","newMessageCount","empty","getView","currentMessageChainId","firstMessage","previousMessage","date","setHours","getTime","toString","afterDate","nextMessage","isTail","object","messageChainId","isHead","deleteMessage","messageId","m","cullOlderMessages","maxIndex","minIndex","resetNewMessageCount","clear","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","chatList","chatListFetcher","openedChats","reactive","openedChatMessageServices","lastReadMessageId","getChatById","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","c","sortedChatList","unreadChatCount","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","parseChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","readChat","lastReadId","isNewMessage","deleteChatMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","unread","updated_at","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","parseChatMessage","_value","announcements","supportsAnnouncements","fetchAnnouncementsTimer","setAnnouncements","setAnnouncementRead","read","setFetchAnnouncementsTimer","timer","setSupportsAnnouncements","unreadAnnouncementCount","_getters","announcement","inactive","fetchAnnouncements","isAdmin","privileges","getAnnouncements","adminFetchAnnouncements","visible","visibleObject","getWithinVisible","visibleAnnouncement","statusCode","markAnnouncementAsRead","dismissAnnouncement","startFetchingAnnouncements","interval","setInterval","stopFetchingAnnouncements","clearInterval","postAnnouncement","startsAt","endsAt","allDay","editAnnouncement","deleteAnnouncement","loaded","defaultReducer","paths","substate","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","getItem","setState","setItem","reducer","subscriber","handler","savedState","usersState","replaceState","merge","mutation","webPushNotification","isUserMutation","isVapidMutation","payload","isPermMutation","isUserConfigMutation","isVisibilityMutation","for","isPasswordAuth","isTokenAuth","mapGetters","mapMutations","mapActions","submit","submitToken","submitPassword","$store","identifier","passwordResetRequested","focusOnPasswordInput","clearError","passwordInput","focus","setSelectionRange","_hoisted_2","_hoisted_3","onSubmit","_Fragment","_hoisted_4","_hoisted_5","placeholder","_hoisted_7","_hoisted_8","ref","_hoisted_10","_createVNode","_component_router_link","_hoisted_11","_hoisted_12","_hoisted_13","_createBlock","_hoisted_15","_hoisted_16","_component_FAIcon","mfa","authSettings","mfa_token","mfaApi","_hoisted_6","_hoisted_9","size","h","resolveComponent","authForm","MFARecoveryForm","MFATOTPForm","LoginForm","signedIn","AuthForm","PostStatusForm","UserCard","_component_UserCard","rounded","_component_PostStatusForm","_component_auth_form","USERNAME_ROUTES","TIMELINES","home","route","criteria","anon","twkn","routeObject","tab","ROOT_ITEMS","interactions","badgeGetter","friendRequests","about","$props","custom","_renderSlot","faThumbtack","OptionalRouterLink","isPinned","pinnedItems","togglePin","routeTo","anonRoute","serverSideStorage","_component_OptionalRouterLink","ass","navigate","_mergeProps","_resolveDynamicComponent","iconLetter","labelRaw","_normalizeClass","transform","filterNavigation","hasChats","hasAnnouncements","isFederating","isPrivate","getListEntries","ListsMenuContent","NavigationEntry","privateMode","federating","_component_NavigationEntry","faUsers","faGlobe","faBookmark","faEnvelope","faComments","faBell","faInfoCircle","faStream","faList","getRouteTo","pinnedList","faChevronDown","faChevronUp","faBullhorn","created","NavigationPins","Checkbox","editMode","showTimelines","showLists","timelinesList","rootList","toggleTimelines","toggleLists","toggleEditMode","toggleCollapse","collapsed","timelinesItems","rootItems","_component_NavigationPins","_component_ListsMenuContent","shout","pleromaChatMessages","gopher","whoToFollow","mediaProxy","uploadlimit","fileSizeFormatService","num","unit","getWhoToFollow","panel","usersToFollow","toFollow","reply","shuffled","img","avatar","acct","externalUser","showWhoToFollow","userProfileLink","generateProfileLink","watch","oldUser","mounted","fill","x","src","currentMessage","togglePanel","newVal","scrollEl","$el","querySelector","offsetHeight","scrollHeight","$nextTick","author","rows","onKeyup","setTransform","scale","y","PinchZoom","_toHandlers","deltaCoord","oldCoord","newCoord","touchEventCoord","touch","touches","screenX","screenY","pointerEventCoord","clientX","clientY","vectorLength","sqrt","perpendicular","dotProduct","v1","v2","project","scalar","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","direction","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","delta","towardsDir","perpendicularDir","towardsPerpendicular","SwipeAndClickGesture","swipePreviewCallback","swipeEndCallback","swipeCancelCallback","swipelessClickCallback","disableClickThreshold","nop","_reset","_pointerId","_swiped","_preventNextClick","button","pointerId","coord","sign","isPositive","pointerType","handlePointerDown","$gesture","handlePointerMove","handlePointerUp","handlePointerCancel","cancel","handleNativeClick","click","preview","offsets","GestureService","onPointerdown","onPointermove","onPointerup","onPointercancel","faChevronLeft","faChevronRight","faCircleNotch","StillImage","VideoAttachment","SwipeClick","Flash","swipeDirection","swipeThreshold","pinchZoomMinScale","pinchZoomScaleResetLimit","showing","description","currentMedia","canNavigate","getType","swipeDisableClickThreshold","hide","hideIfNotSwiped","comp","swipeClick","goPrev","prevIndex","newMedia","goNext","nextIndex","onImageLoaded","handleSwipePreview","pinchZoom","handleSwipeEnd","handleKeyupEvent","keyCode","handleKeydownEvent","unmounted","removeEventListener","_component_Modal","onBackdropClicked","_component_SwipeClick","onPreviewRequested","onSwipeFinished","onSwipelessClicked","_component_PinchZoom","selector","alt","onLoad","_component_VideoAttachment","controls","_component_Flash","total","spin","faSignInAlt","faSignOutAlt","faHome","faUserPlus","faSearch","faTachometerAlt","faCog","faCompass","closed","closeGesture","toggleDrawer","unseenNotifications","unseenNotificationsFromStore","unseenNotificationsCount","sitename","timelinesRoute","doLogout","touchStart","touchMove","onTouchstart","onTouchmove","style","role","faPen","HIDDEN_FOR_PAGES","scrollingDown","inputActive","oldScrollPos","amountScrolled","autohideFloatingPostButton","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","$route","isPersistent","alwaysShowNewPostButton","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","scrollY","leading","trailing","faBars","faArrowUp","faMinus","SideDrawer","Notifications","ConfirmModal","notificationsCloseGesture","notificationsOpen","notificationsAtTop","showingConfirmLogout","closeMobileNotifications","isChat","chatsPinned","shouldConfirmLogout","toggleMobileSidebar","sideDrawer","openMobileNotifications","markRead","notificationsTouchStart","notificationsTouchMove","scrollToTop","scrollTo","scrollMobileNotificationsToTop","mobileNotifications","showConfirmLogout","hideConfirmLogout","onScroll","fetchOlderNotifications","_component_FALayers","_component_SideDrawer","_Teleport","_component_confirm_modal","onAccepted","onCancelled","searchTerm","searchInput","toggleHidden","SearchBar","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","logoBgStyle","margin","opacity","onSearchBarToggled","_component_search_bar","onToggled","Status","List","UserLink","forward","statusIdsToReport","processing","isOpen","remoteInstance","is_local","closeModal","reportUser","isChecked","toggleStatus","checked","resize","Element","_component_i18n_t","keypath","_component_UserLink","onInput","_component_Checkbox","_component_List","items","_component_Status","focused","statusoid","resettingForm","editStatus","isFormVisible","oldVal","get","val","doEditStatus","spoilerText","sensitive","contentType","statusPosterService","onPosted","postStatus","statusHistory","historyCount","history","newStatusId","resetHistory","_component_status","notices","closeNotice","UserPanel","NavPanel","defineAsyncComponent","InstanceSpecificPanel","FeaturesPanel","WhoToFollowPanel","ShoutPanel","MediaModal","MobilePostStatusButton","MobileNav","DesktopNav","SettingsModal","UpdateNotification","UserReportingModal","PostStatusModal","EditStatusModal","StatusHistoryModal","GlobalNoticeList","mobileActivePanel","interfaceLanguage","updateMobileState","reverseLayout","noSticky","newPostButtonShown","navClasses","navbarColumnStretch","userBackground","background_image","instanceBackground","hideInstanceWallpaper","bgStyle","hideISP","isChats","isListEdit","editingAvailable","shoutboxPosition","hideShoutbox","reverseSetting","disableStickyHeaders","showScrollbars","_component_MobileNav","_component_DesktopNav","_component_Notifications","_component_user_panel","_component_nav_panel","_component_instance_specific_panel","_component_features_panel","_component_who_to_follow_panel","_component_router_view","_component_MediaModal","_component_shout_panel","floating","_component_MobilePostStatusButton","_component_UserReportingModal","_component_PostStatusModal","_component_EditStatusModal","_component_StatusHistoryModal","_component_SettingsModal","_component_UpdateNotification","_component_GlobalNoticeList","faAngleDoubleDown","faAngleDoubleRight","depth","inProfile","collapsable","isExpanded","pinnedStatusIdsObject","profileUserId","getReplies","setHighlight","toggleExpanded","toggleThreadDisplay","threadDisplayStatus","showThreadRecursively","totalReplyCount","totalReplyDepth","statusContentProperties","setStatusContentProperty","toggleStatusContentProperty","dive","suspendable","selfSuspendable","statusComponent","childComponent","reverseLookupTable","table","currentReplies","statusById","threadShowing","currentProp","collapseThread","showThread","showAllSubthreads","toggleCurrentProp","setCurrentProp","expandable","replies","showingTall","expandingSubject","showingLongSubject","replying","mediaPlaying","onGoto","onToggleExpanded","replyStatus","_component_thread_tree","numStatus","faFilter","faFont","faWrench","Popover","setReplyVisibility","openTab","replyVisibilitySelf","replyVisibilityFollowing","replyVisibilityAll","hideMedia","hideAttachments","hideAttachmentsInConv","_component_Popover","trigger","faFolderTree","setConversationDisplay","autoUpdate","streaming","collapseWithSubjects","showUserAvatars","faAngleDoubleLeft","idA","idB","expanded","threadDisplayStatusObject","statusContentPropertiesObject","inlineDivePosition","isPage","fetchConversation","maxDepthToShowByDefault","maxDepth","streamingEnabled","displayStyle","isTreeView","isLinearView","treeViewIsSimple","shouldFadeAncestors","otherRepliesButtonPosition","showOtherRepliesButtonBelowStatus","showOtherRepliesButtonInsideStatus","prop","hideStatus","virtualHidden","originalStatusId","getConversationId","statusIndex","sortAndFilterConversation","statusMap","threadTree","linearized","walk","forest","topLevel","processed","replyIds","sizes","subTreeSizeFor","cid","depths","subTreeDepthFor","tl","otherTopLevelCount","showingTopLevel","canDive","diveRoot","parentOf","diveDepth","diveMode","shouldShowAllConversationButton","shouldShowAncestors","ancestorsOf","irid","hiddenStyle","def","isReplying","maybeHighlight","ThreadTree","QuickFilterSettings","QuickViewSettings","newConversationId","oldConversationId","resetDisplayState","ancestors","descendants","getHighlight","setThreadDisplay","nextStatus","setThreadDisplayRecursively","leastVisibleAncestor","parent","diveIntoStatus","preventScroll","tryScrollTo","diveToTopLevel","topLevelAncestorOrSelfId","undive","goToCurrent","parentId","parentOrSelf","_component_QuickFilterSettings","_component_QuickViewSettings","numReplies","useListsMenu","openMenu","blockOpen","stopPropagation","timelineName","i18nkey","$t","onShow","faCirclePlus","faCheck","Timeline","showScrollTop","paused","unfocused","bottomedOut","virtualScrollIndex","blockingClicks","Conversation","TimelineMenu","filteredVisibleStatuses","filteredPinnedStatusIds","showLoadButton","loadButtonString","mobileLoadButtonString","rootClasses","embedded","header","footer","statusesToDisplay","amount","statusesPerSide","ceil","nonPinnedIndex","virtualScrollingEnabled","mobileLayout","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","top","offsetTop","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","cappedScrollIndex","pageYOffset","centerOfScreen","approxIndex","floor","getBoundingClientRect","virtualScrollIndexY","abs","scrollLoad","bodyBRect","doc","clientTop","pauseOnUnfocused","_component_TimelineMenu","_component_conversation","_component_Timeline","tabModeDict","reactions","allowFollowingMove","allow_following_move","filterMode","canSeeReports","onModeSwitch","TabSwitcher","_component_tab_switcher","UserAvatar","RichContent","UserPopover","htmlTitle","name_html","_component_UserPopover","_component_UserAvatar","_component_RichContent","AvatarList","Timeago","ChatTitle","StatusBody","attachmentInfo","types","file","fileType","messageForStatusContent","messageEmojis","isYou","messagePreview","summary","raw_html","openChat","_e","recipient_id","_component_ChatTitle","_component_Timeago","time","_component_StatusBody","chatNew","BasicUserCard","userIds","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","_component_BasicUserCard","ChatListItem","ChatNew","isNew","cancelNewChat","newChat","_component_ChatNew","onCancel","_component_ChatListItem","compact","displayDate","today","toLocaleDateString","localeService","$i18n","day","month","$options","faEllipsisH","emits","Attachment","StatusContent","Gallery","LinkPreview","ChatMessageDate","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","isMessage","hasAttachment","betterShadow","popoverMarginStyle","left","hovered","menuOpened","onHover","bool","isHovered","confirm","onMouseover","onMouseleave","onMouseenter","placement","_component_StatusContent","_component_ChatMessageDate","getScrollPosition","Chat","ChatMessage","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","messageRetriers","handleResize","recipient","formPlaceholder","chatViewItems","bottomedOutBeforeUpdate","scrollDown","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","delayed","diff","scrollBy","trunc","options","behavior","isBottomedOut","reachedTop","cullOlderCheck","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","fetchLatest","fetchOlderMessages","sinceId","chatMessages","positionBeforeUpdate","getOrCreateChat","doStartFetching","handleAttachmentPosting","sendMessage","idempotencyKey","mediaId","isNormalized","buildFakeMessage","doSendMessage","retriesLeft","sendChatMessage","_component_ChatMessage","onResize","showingConfirmRemoveFollower","shouldConfirmRemoveUserFromFollowers","showConfirmRemoveUserFromFollowers","hideConfirmRemoveUserFromFollowers","doRemoveUserFromFollowers","toggled","_toDisplayString","RemoteFollow","FollowButton","RemoveFollowerButton","isMe","_component_basic_user_card","followed_by","_component_FollowButton","_component_RemoveFollowerButton","_component_RemoteFollow","select","childPropName","additionalPropNames","WrappedComponent","getComponentProps","fetchEntries","updateEntries","newEntries","isEmpty","faBirthdayCake","FollowerList","withLoadMore","destroy","FriendList","defaultTabKey","footerRef","routeParams","load","stopFetching","isUs","isExternal","followsTabVisible","hide_follows","followersTabVisible","hide_followers","formattedBirthday","browserLocale","birthday","timeZone","year","setFooterRef","el","userNameOrId","loadById","maybeId","maybeName","reason","errorMessage","switchUser","onTabSwitch","linkClicked","parentNode","FollowCard","switcher","selected","viewing","fields_html","field","fields_text","statuses_count","friends_count","_component_FriendList","_component_FollowCard","followers_count","_component_FollowerList","hashtags","currenResultTab","statusesOffset","lastStatusFetchCount","lastQuery","newQuery","searchType","blur","oldLength","getActiveTab","resultCount","onResultTabSwitch","lastHistoryRecord","hashtag","_hoisted_14","_hoisted_18","_hoisted_20","_hoisted_21","_hoisted_25","uses","_hoisted_26","setup","v$","useVuelidate","email","fullname","captcha","InterfaceLanguageSwitcher","validations","requiredIf","accountActivationRequired","sameAs","maxValue","birthdayMin","accountApprovalRequired","setCaptcha","bioPlaceholder","replaceNewlines","reasonPlaceholder","minAge","setUTCMilliseconds","setUTCSeconds","setUTCMinutes","setUTCHours","minDate","setTime","DAY","birthdayMinAttr","toJSON","birthdayMinFormatted","isPending","serverValidationErrors","termsOfService","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$touch","$invalid","cpt","str","$error","$model","$dirty","_hoisted_19","bio","_hoisted_23","_hoisted_27","_hoisted_30","_hoisted_32","_component_interface_language_switcher","_hoisted_35","_hoisted_36","_hoisted_38","_hoisted_39","autocomplete","autocorrect","autocapitalize","spellcheck","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_47","_hoisted_48","passwordReset","throttled","mailerEnabled","dismissError","passwordResetApi","_hoisted_17","showingApproveConfirmDialog","showingDenyConfirmDialog","findFollowRequestNotificationId","notif","notificationsFromStore","showApproveConfirmDialog","hideApproveConfirmDialog","showDenyConfirmDialog","hideDenyConfirmDialog","approveUser","shouldConfirmApprove","doApprove","notifId","denyUser","shouldConfirmDeny","doDeny","FollowRequestCard","_component_FollowRequestCard","staffAccounts","groupedStaffAccounts","groupBy","admin","moderator","group","toInstanceReasonObject","instances","info","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","TermsOfServicePanel","StaffPanel","MRFTransparencyPanel","policy","keyword","pattern","_component_staff_panel","_component_terms_of_service_panel","_component_MRFTransparencyPanel","redirect","ListsCard","cancelNewList","newList","_component_ListsCard","followingOnly","onChange","ListsNew","ListsUserSearch","PanelLoading","titleDraft","membersUserIds","removedUserIds","searchUserIds","addedUserIds","searchLoading","reallyDelete","membersUsers","toggleRemoveMember","toggleAddFromSearch","isRemoved","isAdded","onSearchLoading","results","onSearchLoadingDone","onSearchResults","updateListTitle","back","listTitle","_component_ListsUserSearch","onResults","onLoading","onLoadingDone","_component_PanelLoading","cols","AnnouncementEditor","editing","editedAnnouncement","editError","canEditAnnouncement","isRead","publishedAt","published_at","formatTimeOrDate","starts_at","ends_at","markAsRead","d","all_day","toLocaleString","enterEditMode","pleroma","raw_content","submitEdit","cancelEdit","Announcement","_component_announcement_editor","_component_rich_content","newAnnouncement","posting","canPostAnnouncement","_component_announcement","validateAuthenticatedRoute","routes","_to","component","PublicAndExternalTimeline","PublicTimeline","FriendsTimeline","beforeEnter","TagTimeline","BookmarkTimeline","ConversationPage","meta","dontScroll","RemoteUserResolver","UserProfile","Interactions","DMs","Registration","PasswordReset","FollowRequests","disableTeleport","OAuthCallback","Search","WhoToFollow","About","AnnouncementsPage","Lists","ListsTimeline","ListsEdit","forceExpand","forceEditMode","ChatList","previousNavPaddingRight","previousAppBgWrapperRight","lockerEls","disableBodyScroll","scrollBarGap","reserveScrollBarGap","navEl","getElementById","getComputedStyle","getPropertyValue","paddingRight","appBgWrapperEl","classList","enableBodyScroll","remove","directive","binding","updated","Vue","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","metadata","birthday_required","birthday_min_age","getBackendProvidedConfig","pleroma_fe","getStaticConfig","setSettings","apiConfig","staticConfig","overrides","___pleromafe_dev_overrides","env","___pleromafe_mode","NODE_ENV","staticConfigPreference","copyInstanceOption","getTOS","getInstancePanel","getStickers","resPack","pack","stickers","localeCompare","getAppSecret","resolveStaffAccounts","nicknames","split","getNodeInfo","features","nodeName","openRegistrations","uploadLimits","parseInt","general","banner","fieldsLimits","enabled","web","software","version","priv","federation","mrf_policies","setConfig","configInfos","checkOAuthToken","FaviconService","customThemeSource","applyConfig","router","createRouter","createWebHistory","scrollBehavior","_from","savedPosition","matched","createApp","App","use","vClickOutside","VBodyScrollLock","VueVirtualScroller","FontAwesomeIcon","FontAwesomeLayers","unwrapInjectedRef","mount","currentLocale","createI18n","persistedStateOptions","storageError","plugins","pushNotifications","persistedState","createStore","modules","global","interface","interfaceModule","instanceModule","usersModule","statusesModule","listsModule","apiModule","configModule","serverSideConfig","serverSideConfigModule","serverSideStorageModule","shoutModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokens","oauthTokensModule","reportsModule","pollsModule","postStatusModule","editStatusModule","statusHistoryModule","chatsModule","announcementsModule","strict","afterStoreSetup","process","COMMIT_HASH","DEV_OVERRIDES","expertLevel","colors","padEmoji","maxThumbnails","hideNsfw","preloadImage","loopVideo","loopVideoSilentOnly","emojiReactionsOnTimeline","stopGifs","followRequest","chatMention","muteWords","hideScopeNotice","playVideosInModal","useOneClickNsfw","useContainFit","userPopoverAvatarAction","userPopoverOverlay","sidebarColumnWidth","contentColumnWidth","notifsColumnWidth","defaultConfig","setOption","color","loadSettings","presentKeys","intersection","setPreset","Cookies","defaultApi","notificationsApi","updateNotificationSettings","settingsMap","defaultScope","defaultNSFW","stripRichContent","acceptChatMessages","discoverable","hideFavorites","hideFollowers","hideFollows","hideFollowersCount","hideFollowsCount","webPushHideContents","blockNotificationsFromStrangers","confirmServerSideOption","wipeServerSideOption","wipeAllServerSideOptions","_original","setServerSideOption","StatusCodeError","captureStackTrace","create","constructor","RegistrationError","errorContents","ap_id","errs","ALIASES_URL","TAG_USER_URL","PERMISSION_GROUP_URL","screenName","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_PUBLIC_TIMELINE","MASTODON_STATUS_URL","MASTODON_USER_TIMELINE_URL","MASTODON_LIST_URL","MASTODON_LIST_TIMELINE_URL","MASTODON_LIST_ACCOUNTS_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_USER_NOTE_URL","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_MEDIA_UPLOAD_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PROFILE_UPDATE_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","MASTODON_DOMAIN_BLOCKS_URL","MASTODON_ANNOUNCEMENTS_DISMISS_URL","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","PLEROMA_CHAT_MESSAGES_URL","PLEROMA_CHAT_READ_URL","PLEROMA_DELETE_CHAT_MESSAGE_URL","PLEROMA_BACKUP_URL","PLEROMA_EDIT_ANNOUNCEMENT_URL","PLEROMA_DELETE_ANNOUNCEMENT_URL","oldfetch","fullUrl","promisedRequest","Accept","authHeaders","parseUser","MASTODON_FOLLOWING_URL","announcementToPayload","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","PLEROMA_STREAMING_EVENTS","preprocessor","handleMastoWS","eventTarget","proxy","original","eventName","eventData","dispatchEvent","CustomEvent","wsEvent","readyState","parsedEvent","parseStatus","parseNotification","freeze","JOINED","ERROR","DISABLED","STARTING","STARTING_INITIAL","includeTypes","isNotifications","queryString","param","parseLinkHeaderPagination","flakeId","urlContext","MASTODON_STATUS_CONTEXT_URL","MASTODON_STATUS_SOURCE_URL","parseSource","originalStatus","exportFriends","more","MASTODON_FOLLOWERS_URL","MASTODON_FOLLOW_URL","unfollowUser","MASTODON_UNFOLLOW_URL","MASTODON_BLOCK_USER_URL","MASTODON_UNBLOCK_USER_URL","MASTODON_REMOVE_USER_FROM_FOLLOWERS","mediaIds","inReplyToStatusId","pollOptions","normalizedPoll","expires_in","multiple","postHeaders","putHeaders","MASTODON_DELETE_URL","uploadMedia","formData","parseAttachment","setMediaDescription","deleteUser","addRight","deleteRight","agreement","resp","updateProfileImages","avatarName","importMutes","importBlocks","importFollows","deleteAccount","changeEmail","moveAccount","targetAccount","addAlias","alias","deleteAlias","listAliases","_cacheBooster","changePassword","newPassword","newPasswordConfirmation","settingsMFA","mfaDisableOTP","generateMfaBackupCodes","mfaSetupOTP","mfaConfirmOTP","addBackup","listBackups","fetchFollowRequests","fetchLists","MASTODON_LISTS_URL","account_ids","MASTODON_APPROVE_USER_URL","MASTODON_DENY_USER_URL","status_ids","URLSearchParams","fetchKnownDomains","media_id","last_read_id","MASTODON_USER_IN_LISTS","propsToNative","rgb2hex","g","relativeLuminance","srgb","bit","pow","c2linear","srgbToLinear","getContrastRatio","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","hex2rgb","hex","mixrgb","rgba2css","rgba","getTextColor","preserve","base","invertLightness","rgb","contrastRatio","getCssColor","Component","isFunction","getComponentOptions","SECOND","MINUTE","HOUR","WEEK","MONTH","YEAR","relativeTime","nowThreshold","round","relativeTimeShort","unitToSeconds","secondsToUnit","desktopNotificationOpts","desktopNotification","bind","output","masto","mastoShort","escape","display_name","name_unescaped","note","description_html","fields","unescape","cover_photo","following_count","bot","settings_store","favicon","chat_token","hide_follows_count","hide_followers_count","is_moderator","is_admin","default_scope","privacy","no_rich_text","show_role","show_birthday","delete_others_notice","muted","blocking","statusnet_blocking","follows_you","follow_request_count","notification_settings","unread_chat_count","parts","unicodeDomain","punycode","screen_name_ui_contains_non_ascii","mime_type","large_thumb_url","spoiler_text","content_type","favourited","favourites_count","reblogged","reblogs_count","edited_at","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","parent_visible","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","summary_raw_html","external_url","title_html","is_post_verb","qvitter_delete_notice","activity_type","qvitterStatusType","isNsfw","statusnet_html","summary_html","card","media_attachments","parsedNotice","ntype","is_seen","favorited_status","actor","linkHeader","parsedLinkHeader","parseLinkHeader","max_id","prev","min_id","last_message","favicons","faviconWidth","faviconHeight","isImageLoaded","clearFaviconBadge","complete","naturalHeight","initFaviconService","querySelectorAll","favcanvas","createElement","favimg","Image","crossOrigin","favcontext","getContext","clearRect","drawImage","toDataURL","drawFaviconBadge","badgeColor","fillStyle","beginPath","arc","PI","fileSizeFormat","numArg","units","exponent","toFixed","fileMatchesSomeType","specialLanguageCodes","ja_easy","zh_Hant","zh","internalToBrowserLocale","internalToBackendLocale","getLanguageName","languageName","ISO6391","charAt","toLocaleUpperCase","languagesObject","internalToBackendLocaleMulti","visibleTypes","statusNotifications","muteWordHits","isMutedNotification","notificationObject","prepareNotificationObject","filteredNotificationsFromStore","sortedNotifications","i18nString","notifObj","mastoApiNotificationTypes","readNotifsIds","findOffset","child","ignorePadding","offsetLeft","findPadding","topPadding","leftPadding","offsetParent","position","contains","topPaddingStr","leftPaddingStr","promiseCall","stopped","promise","statusSummary","muteWord","rules","generatePreset","head","styleEl","appendChild","styleSheet","sheet","insertRule","radii","shadows","fonts","configColumns","defaultConfigColumns","columns","getCssShadow","usesDropShadow","inset","shad","spread","alpha","getCssShadowFilter","generateColors","sourceColors","colors2to3","getColors","htmlColors","solid","generateRadii","inputRadii","btnRadius","btn","checkbox","avatarAlt","tooltip","chatMessage","generateFonts","family","post","postCode","border","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","topBar","popup","avatarStatus","panelHeader","buttonHover","buttonPressed","generateShadows","hackContextDict","cleanInputShadows","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","mod","convert","newShadow","shadowAcc","computeDynamicColor","variableSlot","composePreset","getThemes","themes","promises","statePositionAcc","getOpacitySlot","isV1","cRed","cGreen","cBlue","cOrange","LAYERS","undelay","badge","profileTint","popover","selectedMenu","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","DEFAULT_OPACITY","faint","underlay","alertPopup","SLOT_INHERITANCE","depends","priority","wallpaper","brightness","layer","accent","faintLink","postFaintLink","profileBg","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","postCyantext","copacity","pollText","inheritsOpacity","fgText","fgLink","panelText","panelFaint","panelLink","topBarText","topBarLink","tabText","tabActiveText","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanel","btnPressedPanelText","btnPressedTopBar","btnPressedTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","inputText","inputPanelText","inputTopbarText","alertError","alertErrorText","alertErrorPanelText","alertWarning","alertWarningText","alertWarningPanelText","alertSuccess","alertSuccessText","alertSuccessPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupSuccess","alertPopupSuccessText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","badgeNeutral","badgeNeutralText","chatMessageIncomingBg","chatMessageIncomingText","chatMessageIncomingLink","chatMessageIncomingBorder","chatMessageOutgoingBg","chatMessageOutgoingText","chatMessageOutgoingLink","chatMessageOutgoingBorder","getLayersArray","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","variable","modifier","parseFloat","sourceOpacity","backgroundColor","deps","isTextColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","highlightStyle","prefs","solidColor","tintColor","tintColor2","customProps","backgroundImage","backgroundPosition","highlightClass","complicated","faFile","faMusic","faImage","faVideo","faPlayCircle","faStop","faSearchPlus","faTrashAlt","faPencilAlt","faAlignRight","localDescription","nsfwImage","hideNsfwLocal","modalOpen","showHidden","flashLoaded","showDescription","classNames","usePlaceholder","placeholderName","toUpperCase","placeholderIconClass","referrerpolicy","oembed","useModal","modalTypes","videoTag","onEdit","openModal","openModalForce","onRemove","onShiftUp","shiftUp","onShiftDn","shiftDn","stopFlash","flash","closePlayer","setFlashLoaded","toggleDescription","onload","onImageLoad","naturalWidth","onKeydown","_component_StillImage","onPlay","onPause","thumb_url","oembedHTML","onPlayerOpened","onPlayerClosed","slicedUsers","_component_user_link","indeterminate","$event","DialogModal","cancelText","confirmText","onAccept","_component_dialog_modal","darkOverlay","addPositionToWords","words","word","previous","splitByWhitespaceBoundary","currentWord","currentChar","pos","wordsWithPosition","toReplace","faBoxOpen","faStickyNote","faSmileBeam","faSmile","faUser","faPaw","faIceCream","faBus","faBasketballBall","faLightbulb","faCode","faFlag","UNICODE_EMOJI_GROUP_ICON","activities","objects","flags","maybeLocalizedKeywords","nameLocalizer","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiTimeout","contentLoaded","groupRefs","emojiRefs","filteredEmojiGroups","StickerPicker","showPicker","showPopover","onShowing","hidePicker","hidePopover","setAnchorEl","setGroupRef","onPopoverShown","onPopoverClosed","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","startIndex","endIndex","visibleStartIndex","visibleEndIndex","scrolledGroup","emojiItems","headerId","parentElement","getOffset","scrollHeader","headerRef","offsetWidth","headerCont","currentScroll","scrollLeft","currentScrollRight","setScroll","setShowStickers","indexInList","scrollToItem","updateScrolledClass","scrollTopMax","toggleStickers","filterByKeyword","keywordLowercase","orderedEmojiList","indices","indexOfKeyword","flat","maybeLocalizedEmojiName","oldContentLoaded","recalculateItemPerRow","getFilteredEmojiGroups","defaultGroup","allEmojiGroups","debouncedHandleKeywordChange","allCustomGroups","minItemSize","emojiHeight","emojiWidth","itemPerRow","activeGroupView","stickersAvailable","unpacked","unicodeEmojiGroups","stickerPickerEnabled","isFirstRow","_component_still_image","composing","_component_DynamicScroller","onUpdate","onVisible","_withCtx","_component_DynamicScrollerItem","_component_sticker_picker","onUploaded","onUploadFailed","ariaLive","defualt","currentText","announce","suggest","modelValue","enableEmojiPicker","hideEmojiButton","newlineOnCtrlEnter","randomSeed","random","caretEl","caret","blurTimeout","temporarilyHideSuggestions","disableClickOutside","overlayStyle","pickerShown","EmojiPicker","UnicodeDomainIndicator","ScreenReaderNotice","preText","postText","showSuggestions","textAtCaret","wordAtCaret","Completion","maybeLocalizedEmojiNamesAndKeywords","onInputScroll","hiddenOverlay","suggestionListId","suggestionItemId","hiddenOverlayCaret","suggestorPopover","picker","padding","lineHeight","fontFamily","fontSize","wordWrap","whiteSpace","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","newWord","firstchar","matchedSuggestions","screenReaderNotice","$tc","number","triggerShowPicker","scrollIntoView","togglePicker","startEmojiLoad","insert","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","scrollerRef","closest","scrollerBottomBorder","rootBottomBorder","targetScroll","scroll","bottom","onPickerShown","onPickerClosed","setCaret","ctrlKey","shiftKey","selectionStart","updateStyles","autoCompleteItemLabel","ariaOwns","ariaAutocomplete","ariaExpanded","ariaActivedescendant","_component_screen_reader_notice","_component_EmojiPicker","_component_UnicodeDomainIndicator","at","ruffleInstance","getRuffle","RufflePlayer","polyfills","publicPath","script","onerror","onabort","oncancel","faExclamationTriangle","player","openPlayer","RuffleService","ruffle","newest","createPlayer","letterbox","container","fetchRelationship","attempt","requested","sent","requestFollow","showingConfirmUnfollow","shouldConfirmUnfollow","isPressed","labelFollowing","showConfirmUnfollow","hideConfirmUnfollow","unfollow","doUnfollow","requestUnfollow","hidingLong","minimal","grid","audio","attachmentsRemaining","currentRow","attachmentsDimensionalScore","row","tooManyAttachments","editable","onNaturalSizeLoad","rowStyle","itemStyle","getAspectRatio","flex","toggleHidingLong","openGallery","onMedia","rowIndex","attachmentIndex","_component_Attachment","onSetMedia","Select","promptText","controlledLanguage","addLanguage","setLanguageAt","removeLanguageAt","_component_Select","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","test","newImg","provider_name","getKey","faAt","userScreenName","hasSelection","shouldShowTooltip","handleSelection","getSelection","containsNode","full","userNameFullUi","serverName","userNameFull","highlightType","classnames","shouldBoldenYou","isRemote","shouldShowFullUserName","conf","shouldShowAvatar","shouldShowYous","shouldFadeDomain","MentionLink","mentionsComputed","extraMentions","manyMentions","toggleShowMore","_component_MentionLink","provide","popoversZLayer","noBackground","reportId","generateUserProfileLink","_component_status_content","notes","faStar","faRetweet","faEyeSlash","faSuitcaseRolling","faExpandAlt","faCompressAlt","statusExpanded","unmuted","Report","toggleStatusExpanded","getUser","toggleMute","userClass","userStyle","targetUser","targetUserProfileLink","needMute","_hoisted_22","_hoisted_24","_hoisted_28","_component_Report","filters","toggleNotificationFilter","NotificationFilters","minimalMode","seenToDisplayCount","mainClass","filteredNotifications","unseenCount","unseenCountTitle","noHeading","teleportTarget","wide","mobile","notificationsToDisplay","updateScrollPosition","markAsSeen","seenCount","notifs","_component_NotificationFilters","unseen","_component_notification","boundTo","boundToSelector","popoverClass","removePadding","overlayCenters","overlayCentersSelector","stayOnClick","triggerAttrs","inject","anchorEl","teleport","lockReEntry","styles","oldSize","scrollable","graceTimeout","parentPopover","childrenShown","containerBoundingClientRect","anchorHeight","anchorWidth","anchorScreenBox","anchorStyle","paddingTop","bottomPadding","paddingBottom","rightPadding","paddingLeft","overlayCenter","parentScreenBox","xBounds","yBounds","horizOffset","vertOffset","box","overlayCenterScreenBox","leftInnerOffset","topInnerOffset","leftBorder","rightBorder","topBorder","bottomBorder","translateX","translateY","usingTop","topBoundary","bottomBoundary","yOffset","usingRight","rightBoundary","leftBoundary","xOffset","maxWidth","wasHidden","onChildPopoverState","onClickOutside","onMouseenterContent","onMouseleaveContent","childRef","$parent","$","beforeUnmount","_Transition","faUpload","uploadCount","uploadReady","uploading","uploadFile","self","filesize","allowedsize","filesizeunit","allowedsizeunit","fileData","decreaseUploadCount","clearFile","multiUpload","files","change","dropFiles","fileInfos","faPlus","pollType","expiryAmount","expiryUnit","maxOptions","maxLength","expiryUnits","expiry","convertExpiryFromUnit","minExpirationInCurrentUnit","convertExpiryToUnit","maxExpirationInCurrentUnit","nextOption","element","addOption","deleteOption","updatePollToParent","DateUtils","expiryAmountChange","maxlength","unstyled","faPollH","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","updateIdempotencyKey","textarea","replyTo","textLength","autoFocus","allAttentions","attention","buildMentionsString","repliedUser","copyMessageScope","statusParams","subject","mediaDescriptions","statusContentType","statusIsSensitive","statusFiles","statusPoll","statusMediaDescriptions","statusScope","uploadingFiles","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","emojiUserSuggestor","suggestor","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","safeDMEnabled","disablePolls","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","isEdit","deep","statusChanged","autoPreview","clearStatus","mediaUpload","clearPollForm","preserveFocus","previewStatus","optimisticPosting","disableSubmit","submitOnEnter","setAllMediaDescriptions","postingOptions","postHandler","statusPoster","debouncePreviewStatus","closePreview","togglePreview","addMediaFile","fileInfo","removeMediaFile","editAttachment","newText","shiftUpMediaFile","shiftDnMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","formRef","bottomRef","bottomBottomPaddingStr","bottomBottomPadding","bottomPaddingStr","vertPadding","oldHeight","scrollerHeight","heightWithoutPadding","newHeight","maxHeight","bottomBottomBorder","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","showEmojiPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","handleEmojiInputShow","openProfileTab","onDragover","tabindex","_component_EmojiInput","inputProps","onShown","onCompositionupdate","_component_scope_selector","postFormat","_component_poll_form","onUpdatePoll","_component_media_upload","onUploading","onAllUploaded","_hoisted_29","animation","onDragleave","onDrop","_component_gallery","descriptions","_hoisted_33","progress","$data","subscribeUrl","serverUrl","protocol","host","faLock","faLockOpen","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","css","unlisted","private","direct","showAll","userDefault","onScopeChange","faReply","faStarRegular","animated","filterWord","addReaction","existingReaction","focusInput","commonEmojis","hardcodedSet","showingConfirmDialog","shouldConfirmRepeat","showConfirmDialog","doRetweet","hideConfirmDialog","faBookmarkReg","faShareAlt","faExternalLinkAlt","faHistory","showingDeleteDialog","shouldConfirmDelete","showDeleteStatusConfirmDialog","doDeleteStatus","hideDeleteStatusConfirmDialog","copyLink","clipboard","writeText","statusLink","reportStatus","showStatusHistory","p","canDelete","ownStatus","canPin","canMute","canBookmark","isEdited","_component_ConfirmModal","enter","oldStatus","usersCapped","UserListPopover","tooManyReactions","showMoreString","accountsForEmoji","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","_component_UserListPopover","faPlusSquare","faEye","camelCase","controlledOrUncontrolledSet","camelized","uncontrolledName","ReplyButton","FavoriteButton","ReactButton","RetweetButton","ExtraButtons","StatusPopover","EmojiReactions","uncontrolledReplying","userExpanded","uncontrolledMediaPlaying","headTailLinks","toggle","controlledName","showReasonMutedThread","inConversation","repeaterClass","repeaterStyle","replyProfileLink","isReply","retweeterUser","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","rtBotStatus","botStatus","botIndicator","rtBotIndicator","mentionsLine","writtenSet","attn","hasMentionsLine","reasonsToMute","userIsMuted","shouldNotMute","relationshipReblog","hideMutedUsers","isFocused","replyToName","replySubject","decodedSummary","startsWithRe","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","isSuspendable","inThreadForest","controlledThreadDisplayStatus","visibilityLocalized","visibilityIcon","showError","toggleReplying","gotoOriginal","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","setHeadTailLinks","controlledToggleThreadDisplay","scrollIfHighlighted","highlightId","rect","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_component_reply_button","onToggle","_hoisted_31","_component_StatusPopover","flip","_hoisted_34","_component_MentionsLine","onMediaplay","onMediapause","onParseReady","_hoisted_40","_hoisted_41","_hoisted_45","_hoisted_46","_component_AvatarList","_component_EmojiReactions","_hoisted_49","_component_retweet_button","_component_favorite_button","_component_ReactButton","_component_extra_buttons","onOnError","onOnSuccess","_hoisted_54","basePoll","expiresAt","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","clickedElement","optionId","voters_count","faLink","postLength","parseReadyDone","localCollapseSubjectDefault","tallStatus","singleLine","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","hideTallStatus","showingMore","attachmentTypes","handle","toggleShowingTall","toggleExpandingSubject","controlledOrUncontrolledToggle","uncontrolledShowingTall","fullContent","uncontrolledShowingLongSubject","uncontrolledExpandingSubject","nsfwClickthrough","attachmentSize","Poll","toggleShowingLongSubject","galleryAttachments","_component_Poll","_component_link_preview","realSrc","appendPx","loadLazy","dataSrc","imageLoadHandler","canvas","imageLoadError","removeAttribute","localeDateString","relativeTimeString","timeString","tc","templateKey","refreshRelativeTimeObject","longFormat","datetime","faRobot","showPlaceholder","imgSrc","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","tagsSet","canGrantRole","canChangeActivationState","privileged","canDeleteAccount","canUseTagPolicy","tagPolicyAvailable","hasTag","privilege","toggleTag","toggleRight","deleteUserDialog","show","isProfile","isTargetUser","setToggled","_component_DialogModal","inListsSet","inList","toggleList","faEllipsisV","showingConfirmBlock","ProgressButton","UserListMenu","showConfirmBlock","hideConfirmBlock","showRepeats","hideRepeats","shouldConfirmBlock","doBlockUser","showing_reblogs","_component_UserListMenu","localNote","frozen","startEditing","cancelEditing","finalizeEditing","faRss","faEdit","followRequestInProgress","showingConfirmMute","muteExpiryAmount","muteExpiryUnit","bordered","isOtherUser","dailyAvg","days","userHighlightType","userHighlightColor","visibleRole","validRole","roleTitle","showModerationMenu","hasNote","supportsNote","shouldConfirmMute","muteExpiryUnits","ModerationTools","AccountActions","UserNote","showConfirmMute","hideConfirmMute","doMuteUser","setProfileView","zoomAvatar","mentionUser","onAvatarClickHandler","onAvatarClick","_component_AccountActions","subscribing","_component_ProgressButton","_component_ModerationTools","_component_UserNote","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","preload","loop","playsinline","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","O","chunkIds","fn","notFulfilled","Infinity","fulfilled","getter","__esModule","getPrototypeOf","mode","ns","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","miniCssF","globalThis","done","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","setAttribute","onScriptComplete","doneFns","removeChild","Symbol","toStringTag","nmd","installedCssChunks","miniCss","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","createStylesheet","loadStylesheet","installedChunks","installedChunkData","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/app.d42ab31e1d50a3265a82.js b/priv/static/static/js/app.d42ab31e1d50a3265a82.js @@ -0,0 +1,2 @@ +(()=>{var e,t,n,o,r,i={88797:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={about:{mrf:{federation:e=>{const{normalize:t}=e;return t(["Federation"])},keyword:{keyword_policies:e=>{const{normalize:t}=e;return t(["Keyword policies"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "The Whole Known Network" Timeline'])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},replace:e=>{const{normalize:t}=e;return t(["Replace"])},is_replaced_by:e=>{const{normalize:t}=e;return t(["→"])}},mrf_policies:e=>{const{normalize:t}=e;return t(["Enabled MRF policies"])},mrf_policies_desc:e=>{const{normalize:t}=e;return t(["MRF policies manipulate the federation behaviour of the instance. The following policies are enabled:"])},simple:{simple_policies:e=>{const{normalize:t}=e;return t(["Instance-specific policies"])},instance:e=>{const{normalize:t}=e;return t(["Instance"])},reason:e=>{const{normalize:t}=e;return t(["Reason"])},not_applicable:e=>{const{normalize:t}=e;return t(["N/A"])},accept:e=>{const{normalize:t}=e;return t(["Accept"])},accept_desc:e=>{const{normalize:t}=e;return t(["This instance only accepts messages from the following instances:"])},reject:e=>{const{normalize:t}=e;return t(["Reject"])},reject_desc:e=>{const{normalize:t}=e;return t(["This instance will not accept messages from the following instances:"])},quarantine:e=>{const{normalize:t}=e;return t(["Quarantine"])},quarantine_desc:e=>{const{normalize:t}=e;return t(["This instance will send only public posts to the following instances:"])},ftl_removal:e=>{const{normalize:t}=e;return t(['Removal from "Known Network" Timeline'])},ftl_removal_desc:e=>{const{normalize:t}=e;return t(['This instance removes these instances from "Known Network" timeline:'])},media_removal:e=>{const{normalize:t}=e;return t(["Media Removal"])},media_removal_desc:e=>{const{normalize:t}=e;return t(["This instance removes media from posts on the following instances:"])},media_nsfw:e=>{const{normalize:t}=e;return t(["Media force-set as sensitive"])},media_nsfw_desc:e=>{const{normalize:t}=e;return t(["This instance forces media to be set sensitive in posts on the following instances:"])}}},staff:e=>{const{normalize:t}=e;return t(["Staff"])}},announcements:{page_header:e=>{const{normalize:t}=e;return t(["Announcements"])},title:e=>{const{normalize:t}=e;return t(["Announcement"])},mark_as_read_action:e=>{const{normalize:t}=e;return t(["Mark as read"])},post_form_header:e=>{const{normalize:t}=e;return t(["Post announcement"])},post_placeholder:e=>{const{normalize:t}=e;return t(["Type your announcement content here..."])},post_action:e=>{const{normalize:t}=e;return t(["Post"])},post_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error: ",n(o("error"))])},close_error:e=>{const{normalize:t}=e;return t(["Close"])},delete_action:e=>{const{normalize:t}=e;return t(["Delete"])},start_time_prompt:e=>{const{normalize:t}=e;return t(["Start time: "])},end_time_prompt:e=>{const{normalize:t}=e;return t(["End time: "])},all_day_prompt:e=>{const{normalize:t}=e;return t(["This is an all-day event"])},published_time_display:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Published at ",n(o("time"))])},start_time_display:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Starts at ",n(o("time"))])},end_time_display:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Ends at ",n(o("time"))])},edit_action:e=>{const{normalize:t}=e;return t(["Edit"])},submit_edit_action:e=>{const{normalize:t}=e;return t(["Submit"])},cancel_edit_action:e=>{const{normalize:t}=e;return t(["Cancel"])},inactive_message:e=>{const{normalize:t}=e;return t(["This announcement is inactive"])}},shoutbox:{title:e=>{const{normalize:t}=e;return t(["Shoutbox"])}},domain_mute_card:{mute:e=>{const{normalize:t}=e;return t(["Mute"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])}},exporter:{export:e=>{const{normalize:t}=e;return t(["Export"])},processing:e=>{const{normalize:t}=e;return t(["Processing, you'll soon be asked to download your file"])}},features_panel:{shout:e=>{const{normalize:t}=e;return t(["Shoutbox"])},pleroma_chat_messages:e=>{const{normalize:t}=e;return t(["Pleroma Chat"])},gopher:e=>{const{normalize:t}=e;return t(["Gopher"])},media_proxy:e=>{const{normalize:t}=e;return t(["Media proxy"])},scope_options:e=>{const{normalize:t}=e;return t(["Scope options"])},text_limit:e=>{const{normalize:t}=e;return t(["Text limit"])},title:e=>{const{normalize:t}=e;return t(["Features"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},upload_limit:e=>{const{normalize:t}=e;return t(["Upload limit"])}},finder:{error_fetching_user:e=>{const{normalize:t}=e;return t(["Error fetching user"])},find_user:e=>{const{normalize:t}=e;return t(["Find user"])}},general:{apply:e=>{const{normalize:t}=e;return t(["Apply"])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},more:e=>{const{normalize:t}=e;return t(["More"])},loading:e=>{const{normalize:t}=e;return t(["Loading…"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occured"])},generic_error_message:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["An error occured: ",n(o(0))])},error_retry:e=>{const{normalize:t}=e;return t(["Please try again"])},retry:e=>{const{normalize:t}=e;return t(["Try again"])},optional:e=>{const{normalize:t}=e;return t(["optional"])},show_more:e=>{const{normalize:t}=e;return t(["Show more"])},show_less:e=>{const{normalize:t}=e;return t(["Show less"])},never_show_again:e=>{const{normalize:t}=e;return t(["Never show again"])},dismiss:e=>{const{normalize:t}=e;return t(["Dismiss"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])},disable:e=>{const{normalize:t}=e;return t(["Disable"])},enable:e=>{const{normalize:t}=e;return t(["Enable"])},confirm:e=>{const{normalize:t}=e;return t(["Confirm"])},verify:e=>{const{normalize:t}=e;return t(["Verify"])},close:e=>{const{normalize:t}=e;return t(["Close"])},undo:e=>{const{normalize:t}=e;return t(["Undo"])},yes:e=>{const{normalize:t}=e;return t(["Yes"])},no:e=>{const{normalize:t}=e;return t(["No"])},peek:e=>{const{normalize:t}=e;return t(["Peek"])},scroll_to_top:e=>{const{normalize:t}=e;return t(["Scroll to top"])},role:{admin:e=>{const{normalize:t}=e;return t(["Admin"])},moderator:e=>{const{normalize:t}=e;return t(["Moderator"])}},unpin:e=>{const{normalize:t}=e;return t(["Unpin item"])},pin:e=>{const{normalize:t}=e;return t(["Pin item"])},flash_content:e=>{const{normalize:t}=e;return t(["Click to show Flash content using Ruffle (Experimental, may not work)."])},flash_security:e=>{const{normalize:t}=e;return t(["Note that this can be potentially dangerous since Flash content is still arbitrary code."])},flash_fail:e=>{const{normalize:t}=e;return t(["Failed to load flash content, see console for details."])},scope_in_timeline:{direct:e=>{const{normalize:t}=e;return t(["Direct"])},private:e=>{const{normalize:t}=e;return t(["Followers-only"])},public:e=>{const{normalize:t}=e;return t(["Public"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted"])}}},image_cropper:{crop_picture:e=>{const{normalize:t}=e;return t(["Crop picture"])},save:e=>{const{normalize:t}=e;return t(["Save"])},save_without_cropping:e=>{const{normalize:t}=e;return t(["Save without cropping"])},cancel:e=>{const{normalize:t}=e;return t(["Cancel"])}},importer:{submit:e=>{const{normalize:t}=e;return t(["Submit"])},success:e=>{const{normalize:t}=e;return t(["Imported successfully."])},error:e=>{const{normalize:t}=e;return t(["An error occured while importing this file."])}},login:{login:e=>{const{normalize:t}=e;return t(["Log in"])},description:e=>{const{normalize:t}=e;return t(["Log in with OAuth"])},logout:e=>{const{normalize:t}=e;return t(["Log out"])},logout_confirm_title:e=>{const{normalize:t}=e;return t(["Logout confirmation"])},logout_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to logout?"])},logout_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Logout"])},logout_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not logout"])},password:e=>{const{normalize:t}=e;return t(["Password"])},placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},register:e=>{const{normalize:t}=e;return t(["Register"])},username:e=>{const{normalize:t}=e;return t(["Username"])},hint:e=>{const{normalize:t}=e;return t(["Log in to join the discussion"])},authentication_code:e=>{const{normalize:t}=e;return t(["Authentication code"])},enter_recovery_code:e=>{const{normalize:t}=e;return t(["Enter a recovery code"])},enter_two_factor_code:e=>{const{normalize:t}=e;return t(["Enter a two-factor code"])},recovery_code:e=>{const{normalize:t}=e;return t(["Recovery code"])},heading:{totp:e=>{const{normalize:t}=e;return t(["Two-factor authentication"])},recovery:e=>{const{normalize:t}=e;return t(["Two-factor recovery"])}}},media_modal:{previous:e=>{const{normalize:t}=e;return t(["Previous"])},next:e=>{const{normalize:t}=e;return t(["Next"])},counter:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("current"))," / ",n(o("total"))])},hide:e=>{const{normalize:t}=e;return t(["Close media viewer"])}},nav:{about:e=>{const{normalize:t}=e;return t(["About"])},administration:e=>{const{normalize:t}=e;return t(["Administration"])},back:e=>{const{normalize:t}=e;return t(["Back"])},friend_requests:e=>{const{normalize:t}=e;return t(["Follow requests"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},interactions:e=>{const{normalize:t}=e;return t(["Interactions"])},dms:e=>{const{normalize:t}=e;return t(["Direct messages"])},public_tl:e=>{const{normalize:t}=e;return t(["Public timeline"])},timeline:e=>{const{normalize:t}=e;return t(["Timeline"])},home_timeline:e=>{const{normalize:t}=e;return t(["Home timeline"])},twkn:e=>{const{normalize:t}=e;return t(["Known Network"])},bookmarks:e=>{const{normalize:t}=e;return t(["Bookmarks"])},user_search:e=>{const{normalize:t}=e;return t(["User Search"])},search:e=>{const{normalize:t}=e;return t(["Search"])},search_close:e=>{const{normalize:t}=e;return t(["Close search bar"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])},preferences:e=>{const{normalize:t}=e;return t(["Preferences"])},timelines:e=>{const{normalize:t}=e;return t(["Timelines"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])},lists:e=>{const{normalize:t}=e;return t(["Lists"])},edit_nav_mobile:e=>{const{normalize:t}=e;return t(["Customize navigation bar"])},edit_pinned:e=>{const{normalize:t}=e;return t(["Edit pinned items"])},edit_finish:e=>{const{normalize:t}=e;return t(["Done editing"])},mobile_sidebar:e=>{const{normalize:t}=e;return t(["Toggle mobile sidebar"])},mobile_notifications:e=>{const{normalize:t}=e;return t(["Open notifications"])},mobile_notifications:e=>{const{normalize:t}=e;return t(["Open notifications (there are unread ones)"])},mobile_notifications_close:e=>{const{normalize:t}=e;return t(["Close notifications"])},announcements:e=>{const{normalize:t}=e;return t(["Announcements"])}},notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Unknown status, searching for it…"])},error:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Error fetching notifications: ",n(o(0))])},favorited_you:e=>{const{normalize:t}=e;return t(["favorited your status"])},followed_you:e=>{const{normalize:t}=e;return t(["followed you"])},follow_request:e=>{const{normalize:t}=e;return t(["wants to follow you"])},load_older:e=>{const{normalize:t}=e;return t(["Load older notifications"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},read:e=>{const{normalize:t}=e;return t(["Read!"])},repeated_you:e=>{const{normalize:t}=e;return t(["repeated your status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No more notifications"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrated to"])},reacted_with:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["reacted with ",n(o(0))])},submitted_report:e=>{const{normalize:t}=e;return t(["submitted a report"])},poll_ended:e=>{const{normalize:t}=e;return t(["poll has ended"])}},polls:{add_poll:e=>{const{normalize:t}=e;return t(["Add poll"])},add_option:e=>{const{normalize:t}=e;return t(["Add option"])},option:e=>{const{normalize:t}=e;return t(["Option"])},votes:e=>{const{normalize:t}=e;return t(["votes"])},people_voted_count:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t([n(o("count"))," person voted"]),t([n(o("count"))," people voted"])])},votes_count:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t([n(o("count"))," vote"]),t([n(o("count"))," votes"])])},vote:e=>{const{normalize:t}=e;return t(["Vote"])},type:e=>{const{normalize:t}=e;return t(["Poll type"])},single_choice:e=>{const{normalize:t}=e;return t(["Single choice"])},multiple_choices:e=>{const{normalize:t}=e;return t(["Multiple choices"])},expiry:e=>{const{normalize:t}=e;return t(["Poll age"])},expires_in:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Poll ends in ",n(o(0))])},expired:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Poll ended ",n(o(0))," ago"])},not_enough_options:e=>{const{normalize:t}=e;return t(["Too few unique options in poll"])}},emoji:{stickers:e=>{const{normalize:t}=e;return t(["Stickers"])},emoji:e=>{const{normalize:t}=e;return t(["Emoji"])},keep_open:e=>{const{normalize:t}=e;return t(["Keep picker open"])},search_emoji:e=>{const{normalize:t}=e;return t(["Search for an emoji"])},add_emoji:e=>{const{normalize:t}=e;return t(["Insert emoji"])},custom:e=>{const{normalize:t}=e;return t(["Custom emoji"])},unpacked:e=>{const{normalize:t}=e;return t(["Unpacked emoji"])},unicode:e=>{const{normalize:t}=e;return t(["Unicode emoji"])},unicode_groups:{activities:e=>{const{normalize:t}=e;return t(["Activities"])},"animals-and-nature":e=>{const{normalize:t}=e;return t(["Animals & Nature"])},flags:e=>{const{normalize:t}=e;return t(["Flags"])},"food-and-drink":e=>{const{normalize:t}=e;return t(["Food & Drink"])},objects:e=>{const{normalize:t}=e;return t(["Objects"])},"people-and-body":e=>{const{normalize:t}=e;return t(["People & Body"])},"smileys-and-emotion":e=>{const{normalize:t}=e;return t(["Smileys & Emotion"])},symbols:e=>{const{normalize:t}=e;return t(["Symbols"])},"travel-and-places":e=>{const{normalize:t}=e;return t(["Travel & Places"])}},load_all_hint:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Loaded first ",n(o("saneAmount"))," emoji, loading all emoji may cause performance issues."])},load_all:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Loading all ",n(o("emojiAmount"))," emoji"])},regional_indicator:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Regional indicator ",n(o("letter"))])}},errors:{storage_unavailable:e=>{const{normalize:t}=e;return t(["Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies."])}},interactions:{favs_repeats:e=>{const{normalize:t}=e;return t(["Repeats and favorites"])},follows:e=>{const{normalize:t}=e;return t(["New follows"])},emoji_reactions:e=>{const{normalize:t}=e;return t(["Emoji Reactions"])},reports:e=>{const{normalize:t}=e;return t(["Reports"])},moves:e=>{const{normalize:t}=e;return t(["User migrates"])},load_older:e=>{const{normalize:t}=e;return t(["Load older interactions"])}},post_status:{edit_status:e=>{const{normalize:t}=e;return t(["Edit status"])},new_status:e=>{const{normalize:t}=e;return t(["Post new status"])},reply_option:e=>{const{normalize:t}=e;return t(["Reply to this status"])},quote_option:e=>{const{normalize:t}=e;return t(["Quote this status"])},account_not_locked_warning:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Your account is not ",n(o(0)),". Anyone can follow you to view your follower-only posts."])},account_not_locked_warning_link:e=>{const{normalize:t}=e;return t(["locked"])},attachments_sensitive:e=>{const{normalize:t}=e;return t(["Mark attachments as sensitive"])},media_description:e=>{const{normalize:t}=e;return t(["Media description"])},content_type:{"text/plain":e=>{const{normalize:t}=e;return t(["Plain text"])},"text/html":e=>{const{normalize:t}=e;return t(["HTML"])},"text/markdown":e=>{const{normalize:t}=e;return t(["Markdown"])},"text/bbcode":e=>{const{normalize:t}=e;return t(["BBCode"])}},content_type_selection:e=>{const{normalize:t}=e;return t(["Post format"])},content_warning:e=>{const{normalize:t}=e;return t(["Subject (optional)"])},default:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},direct_warning_to_all:e=>{const{normalize:t}=e;return t(["This post will be visible to all the mentioned users."])},direct_warning_to_first_only:e=>{const{normalize:t}=e;return t(["This post will only be visible to the mentioned users at the beginning of the message."])},edit_remote_warning:e=>{const{normalize:t}=e;return t(["Other remote instances may not support editing and unable to receive the latest version of your post."])},edit_unsupported_warning:e=>{const{normalize:t}=e;return t(["Pleroma does not support editing mentions or polls."])},posting:e=>{const{normalize:t}=e;return t(["Posting"])},post:e=>{const{normalize:t}=e;return t(["Post"])},preview:e=>{const{normalize:t}=e;return t(["Preview"])},preview_empty:e=>{const{normalize:t}=e;return t(["Empty"])},empty_status_error:e=>{const{normalize:t}=e;return t(["Can't post an empty status with no files"])},media_description_error:e=>{const{normalize:t}=e;return t(["Failed to update media, try again"])},scope_notice:{public:e=>{const{normalize:t}=e;return t(["This post will be visible to everyone"])},private:e=>{const{normalize:t}=e;return t(["This post will be visible to your followers only"])},unlisted:e=>{const{normalize:t}=e;return t(["This post will not be visible in Public Timeline and The Whole Known Network"])}},scope_notice_dismiss:e=>{const{normalize:t}=e;return t(["Close this notice"])},scope:{direct:e=>{const{normalize:t}=e;return t(["Direct - post to mentioned users only"])},private:e=>{const{normalize:t}=e;return t(["Followers-only - post to followers only"])},public:e=>{const{normalize:t}=e;return t(["Public - post to public timelines"])},unlisted:e=>{const{normalize:t}=e;return t(["Unlisted - do not post to public timelines"])}}},registration:{bio_optional:e=>{const{normalize:t}=e;return t(["Bio (optional)"])},email:e=>{const{normalize:t}=e;return t(["Email"])},email_optional:e=>{const{normalize:t}=e;return t(["Email (optional)"])},fullname:e=>{const{normalize:t}=e;return t(["Display name"])},password_confirm:e=>{const{normalize:t}=e;return t(["Password confirmation"])},registration:e=>{const{normalize:t}=e;return t(["Registration"])},token:e=>{const{normalize:t}=e;return t(["Invite token"])},captcha:e=>{const{normalize:t}=e;return t(["CAPTCHA"])},new_captcha:e=>{const{normalize:t}=e;return t(["Click the image to get a new captcha"])},username_placeholder:e=>{const{normalize:t}=e;return t(["e.g. lain"])},fullname_placeholder:e=>{const{normalize:t}=e;return t(["e.g. Lain Iwakura"])},bio_placeholder:e=>{const{normalize:t}=e;return t(["e.g.\nHi, I'm Lain.\nI’m an anime girl living in suburban Japan. You may know me from the Wired."])},reason:e=>{const{normalize:t}=e;return t(["Reason to register"])},reason_placeholder:e=>{const{normalize:t}=e;return t(["This instance approves registrations manually.\nLet the administration know why you want to register."])},register:e=>{const{normalize:t}=e;return t(["Register"])},validations:{username_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},fullname_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},email_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},password_confirmation_match:e=>{const{normalize:t}=e;return t(["should be the same as password"])},birthday_required:e=>{const{normalize:t}=e;return t(["cannot be left blank"])},birthday_min_age:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["must be on or before ",n(o("date"))])}},email_language:e=>{const{normalize:t}=e;return t(["In which language do you want to receive emails from the server?"])},birthday:e=>{const{normalize:t}=e;return t(["Birthday:"])},birthday_optional:e=>{const{normalize:t}=e;return t(["Birthday (optional):"])}},remote_user_resolver:{remote_user_resolver:e=>{const{normalize:t}=e;return t(["Remote user resolver"])},searching_for:e=>{const{normalize:t}=e;return t(["Searching for"])},error:e=>{const{normalize:t}=e;return t(["Not found."])}},report:{reporter:e=>{const{normalize:t}=e;return t(["Reporter:"])},reported_user:e=>{const{normalize:t}=e;return t(["Reported user:"])},reported_statuses:e=>{const{normalize:t}=e;return t(["Reported statuses:"])},notes:e=>{const{normalize:t}=e;return t(["Notes:"])},state:e=>{const{normalize:t}=e;return t(["State:"])},state_open:e=>{const{normalize:t}=e;return t(["Open"])},state_closed:e=>{const{normalize:t}=e;return t(["Closed"])},state_resolved:e=>{const{normalize:t}=e;return t(["Resolved"])}},selectable_list:{select_all:e=>{const{normalize:t}=e;return t(["Select all"])}},settings:{add_language:e=>{const{normalize:t}=e;return t(["Add fallback language"])},remove_language:e=>{const{normalize:t}=e;return t(["Remove"])},primary_language:e=>{const{normalize:t}=e;return t(["Primary language:"])},fallback_language:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Fallback language ",n(o("index")),":"])},app_name:e=>{const{normalize:t}=e;return t(["App name"])},expert_mode:e=>{const{normalize:t}=e;return t(["Show advanced"])},save:e=>{const{normalize:t}=e;return t(["Save changes"])},security:e=>{const{normalize:t}=e;return t(["Security"])},setting_changed:e=>{const{normalize:t}=e;return t(["Setting is different from default"])},setting_server_side:e=>{const{normalize:t}=e;return t(["This setting is tied to your profile and affects all sessions and clients"])},enter_current_password_to_confirm:e=>{const{normalize:t}=e;return t(["Enter your current password to confirm your identity"])},post_look_feel:e=>{const{normalize:t}=e;return t(["Posts Look & Feel"])},mention_links:e=>{const{normalize:t}=e;return t(["Mention links"])},mfa:{otp:e=>{const{normalize:t}=e;return t(["OTP"])},setup_otp:e=>{const{normalize:t}=e;return t(["Setup OTP"])},wait_pre_setup_otp:e=>{const{normalize:t}=e;return t(["presetting OTP"])},confirm_and_enable:e=>{const{normalize:t}=e;return t(["Confirm & enable OTP"])},title:e=>{const{normalize:t}=e;return t(["Two-factor Authentication"])},generate_new_recovery_codes:e=>{const{normalize:t}=e;return t(["Generate new recovery codes"])},warning_of_generate_new_codes:e=>{const{normalize:t}=e;return t(["When you generate new recovery codes, your old codes won’t work anymore."])},recovery_codes:e=>{const{normalize:t}=e;return t(["Recovery codes."])},waiting_a_recovery_codes:e=>{const{normalize:t}=e;return t(["Receiving backup codes…"])},recovery_codes_warning:e=>{const{normalize:t}=e;return t(["Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account."])},authentication_methods:e=>{const{normalize:t}=e;return t(["Authentication methods"])},scan:{title:e=>{const{normalize:t}=e;return t(["Scan"])},desc:e=>{const{normalize:t}=e;return t(["Using your two-factor app, scan this QR code or enter text key:"])},secret_code:e=>{const{normalize:t}=e;return t(["Key"])}},verify:{desc:e=>{const{normalize:t}=e;return t(["To enable two-factor authentication, enter the code from your two-factor app:"])}}},lists_navigation:e=>{const{normalize:t}=e;return t(["Show lists in navigation"])},allow_following_move:e=>{const{normalize:t}=e;return t(["Allow auto-follow when following account moves"])},attachmentRadius:e=>{const{normalize:t}=e;return t(["Attachments"])},attachments:e=>{const{normalize:t}=e;return t(["Attachments"])},avatar:e=>{const{normalize:t}=e;return t(["Avatar"])},avatarAltRadius:e=>{const{normalize:t}=e;return t(["Avatars (notifications)"])},avatarRadius:e=>{const{normalize:t}=e;return t(["Avatars"])},background:e=>{const{normalize:t}=e;return t(["Background"])},bio:e=>{const{normalize:t}=e;return t(["Bio"])},email_language:e=>{const{normalize:t}=e;return t(["Language for receiving emails from the server"])},block_export:e=>{const{normalize:t}=e;return t(["Block export"])},block_export_button:e=>{const{normalize:t}=e;return t(["Export your blocks to a csv file"])},block_import:e=>{const{normalize:t}=e;return t(["Block import"])},block_import_error:e=>{const{normalize:t}=e;return t(["Error importing blocks"])},blocks_imported:e=>{const{normalize:t}=e;return t(["Blocks imported! Processing them will take a while."])},mute_export:e=>{const{normalize:t}=e;return t(["Mute export"])},mute_export_button:e=>{const{normalize:t}=e;return t(["Export your mutes to a csv file"])},mute_import:e=>{const{normalize:t}=e;return t(["Mute import"])},mute_import_error:e=>{const{normalize:t}=e;return t(["Error importing mutes"])},mutes_imported:e=>{const{normalize:t}=e;return t(["Mutes imported! Processing them will take a while."])},import_mutes_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import mutes from a csv file"])},account_backup:e=>{const{normalize:t}=e;return t(["Account backup"])},account_backup_description:e=>{const{normalize:t}=e;return t(["This allows you to download an archive of your account information and your posts, but they cannot yet be imported into a Pleroma account."])},account_backup_table_head:e=>{const{normalize:t}=e;return t(["Backup"])},download_backup:e=>{const{normalize:t}=e;return t(["Download"])},backup_not_ready:e=>{const{normalize:t}=e;return t(["This backup is not ready yet."])},backup_running:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["This backup is in progress, processed ",n(o("number"))," record."]),t(["This backup is in progress, processed ",n(o("number"))," records."])])},backup_failed:e=>{const{normalize:t}=e;return t(["This backup has failed."])},remove_backup:e=>{const{normalize:t}=e;return t(["Remove"])},list_backups_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error fetching backup list: ",n(o("error"))])},add_backup:e=>{const{normalize:t}=e;return t(["Create a new backup"])},added_backup:e=>{const{normalize:t}=e;return t(["Added a new backup."])},add_backup_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error adding a new backup: ",n(o("error"))])},blocks_tab:e=>{const{normalize:t}=e;return t(["Blocks"])},bot:e=>{const{normalize:t}=e;return t(["This is a bot account"])},btnRadius:e=>{const{normalize:t}=e;return t(["Buttons"])},cBlue:e=>{const{normalize:t}=e;return t(["Blue (Reply, follow)"])},cGreen:e=>{const{normalize:t}=e;return t(["Green (Retweet)"])},cOrange:e=>{const{normalize:t}=e;return t(["Orange (Favorite)"])},cRed:e=>{const{normalize:t}=e;return t(["Red (Cancel)"])},change_email:e=>{const{normalize:t}=e;return t(["Change email"])},change_email_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your email."])},changed_email:e=>{const{normalize:t}=e;return t(["Email changed successfully!"])},change_password:e=>{const{normalize:t}=e;return t(["Change password"])},change_password_error:e=>{const{normalize:t}=e;return t(["There was an issue changing your password."])},changed_password:e=>{const{normalize:t}=e;return t(["Password changed successfully!"])},chatMessageRadius:e=>{const{normalize:t}=e;return t(["Chat message"])},collapse_subject:e=>{const{normalize:t}=e;return t(["Collapse posts with subjects"])},composing:e=>{const{normalize:t}=e;return t(["Composing"])},confirm_new_password:e=>{const{normalize:t}=e;return t(["Confirm new password"])},current_password:e=>{const{normalize:t}=e;return t(["Current password"])},confirm_dialogs:e=>{const{normalize:t}=e;return t(["Ask for confirmation when"])},confirm_dialogs_repeat:e=>{const{normalize:t}=e;return t(["repeating a status"])},confirm_dialogs_unfollow:e=>{const{normalize:t}=e;return t(["unfollowing a user"])},confirm_dialogs_block:e=>{const{normalize:t}=e;return t(["blocking a user"])},confirm_dialogs_mute:e=>{const{normalize:t}=e;return t(["muting a user"])},confirm_dialogs_delete:e=>{const{normalize:t}=e;return t(["deleting a status"])},confirm_dialogs_logout:e=>{const{normalize:t}=e;return t(["logging out"])},confirm_dialogs_approve_follow:e=>{const{normalize:t}=e;return t(["approving a follower"])},confirm_dialogs_deny_follow:e=>{const{normalize:t}=e;return t(["denying a follower"])},confirm_dialogs_remove_follower:e=>{const{normalize:t}=e;return t(["removing a follower"])},mutes_and_blocks:e=>{const{normalize:t}=e;return t(["Mutes and Blocks"])},data_import_export_tab:e=>{const{normalize:t}=e;return t(["Data import / export"])},default_vis:e=>{const{normalize:t}=e;return t(["Default visibility scope"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},delete_account_description:e=>{const{normalize:t}=e;return t(["Permanently delete your data and deactivate your account."])},delete_account_error:e=>{const{normalize:t}=e;return t(["There was an issue deleting your account. If this persists please contact your instance administrator."])},delete_account_instructions:e=>{const{normalize:t}=e;return t(["Type your password in the input below to confirm account deletion."])},account_alias:e=>{const{normalize:t}=e;return t(["Account aliases"])},account_alias_table_head:e=>{const{normalize:t}=e;return t(["Alias"])},list_aliases_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error fetching aliases: ",n(o("error"))])},hide_list_aliases_error_action:e=>{const{normalize:t}=e;return t(["Close"])},remove_alias:e=>{const{normalize:t}=e;return t(["Remove this alias"])},new_alias_target:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Add a new alias (e.g. ",n(o("example")),")"])},added_alias:e=>{const{normalize:t}=e;return t(["Alias is added."])},add_alias_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error adding alias: ",n(o("error"))])},move_account:e=>{const{normalize:t}=e;return t(["Move account"])},move_account_notes:e=>{const{normalize:t}=e;return t(["If you want to move the account somewhere else, you must go to your target account and add an alias pointing here."])},move_account_target:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Target account (e.g. ",n(o("example")),")"])},moved_account:e=>{const{normalize:t}=e;return t(["Account is moved."])},move_account_error:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Error moving account: ",n(o("error"))])},discoverable:e=>{const{normalize:t}=e;return t(["Allow discovery of this account in search results and other services"])},domain_mutes:e=>{const{normalize:t}=e;return t(["Domains"])},avatar_size_instruction:e=>{const{normalize:t}=e;return t(["The recommended minimum size for avatar images is 150x150 pixels."])},pad_emoji:e=>{const{normalize:t}=e;return t(["Pad emoji with spaces when adding from picker"])},autocomplete_select_first:e=>{const{normalize:t}=e;return t(["Automatically select the first candidate when autocomplete results are available"])},emoji_reactions_on_timeline:e=>{const{normalize:t}=e;return t(["Show emoji reactions on timeline"])},emoji_reactions_scale:e=>{const{normalize:t}=e;return t(["Reactions scale factor"])},export_theme:e=>{const{normalize:t}=e;return t(["Save preset"])},filtering:e=>{const{normalize:t}=e;return t(["Filtering"])},wordfilter:e=>{const{normalize:t}=e;return t(["Wordfilter"])},filtering_explanation:e=>{const{normalize:t}=e;return t(["All statuses containing these words will be muted, one per line"])},word_filter_and_more:e=>{const{normalize:t}=e;return t(["Word filter and more..."])},follow_export:e=>{const{normalize:t}=e;return t(["Follow export"])},follow_export_button:e=>{const{normalize:t}=e;return t(["Export your follows to a csv file"])},follow_import:e=>{const{normalize:t}=e;return t(["Follow import"])},follow_import_error:e=>{const{normalize:t}=e;return t(["Error importing followers"])},follows_imported:e=>{const{normalize:t}=e;return t(["Follows imported! Processing them will take a while."])},accent:e=>{const{normalize:t}=e;return t(["Accent"])},foreground:e=>{const{normalize:t}=e;return t(["Foreground"])},general:e=>{const{normalize:t}=e;return t(["General"])},hide_attachments_in_convo:e=>{const{normalize:t}=e;return t(["Hide attachments in conversations"])},hide_attachments_in_tl:e=>{const{normalize:t}=e;return t(["Hide attachments in timeline"])},hide_media_previews:e=>{const{normalize:t}=e;return t(["Hide media previews"])},hide_muted_posts:e=>{const{normalize:t}=e;return t(["Hide posts of muted users"])},mute_bot_posts:e=>{const{normalize:t}=e;return t(["Mute bot posts"])},hide_bot_indication:e=>{const{normalize:t}=e;return t(["Hide bot indication in posts"])},hide_all_muted_posts:e=>{const{normalize:t}=e;return t(["Hide muted posts"])},max_thumbnails:e=>{const{normalize:t}=e;return t(["Maximum amount of thumbnails per post (empty = no limit)"])},hide_isp:e=>{const{normalize:t}=e;return t(["Hide instance-specific panel"])},hide_shoutbox:e=>{const{normalize:t}=e;return t(["Hide instance shoutbox"])},right_sidebar:e=>{const{normalize:t}=e;return t(["Reverse order of columns"])},navbar_column_stretch:e=>{const{normalize:t}=e;return t(["Stretch navbar to columns width"])},always_show_post_button:e=>{const{normalize:t}=e;return t(["Always show floating New Post button"])},hide_wallpaper:e=>{const{normalize:t}=e;return t(["Hide instance wallpaper"])},preload_images:e=>{const{normalize:t}=e;return t(["Preload images"])},use_one_click_nsfw:e=>{const{normalize:t}=e;return t(["Open NSFW attachments with just one click"])},hide_post_stats:e=>{const{normalize:t}=e;return t(["Hide post statistics (e.g. the number of favorites)"])},hide_user_stats:e=>{const{normalize:t}=e;return t(["Hide user statistics (e.g. the number of followers)"])},hide_filtered_statuses:e=>{const{normalize:t}=e;return t(["Hide all filtered posts"])},hide_wordfiltered_statuses:e=>{const{normalize:t}=e;return t(["Hide word-filtered statuses"])},hide_muted_threads:e=>{const{normalize:t}=e;return t(["Hide muted threads"])},import_blocks_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import blocks from a csv file"])},import_followers_from_a_csv_file:e=>{const{normalize:t}=e;return t(["Import follows from a csv file"])},import_theme:e=>{const{normalize:t}=e;return t(["Load preset"])},inputRadius:e=>{const{normalize:t}=e;return t(["Input fields"])},checkboxRadius:e=>{const{normalize:t}=e;return t(["Checkboxes"])},instance_default:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["(default: ",n(o("value")),")"])},instance_default_simple:e=>{const{normalize:t}=e;return t(["(default)"])},interface:e=>{const{normalize:t}=e;return t(["Interface"])},interfaceLanguage:e=>{const{normalize:t}=e;return t(["Interface language"])},invalid_theme_imported:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma theme. No changes to your theme were made."])},limited_availability:e=>{const{normalize:t}=e;return t(["Unavailable in your browser"])},links:e=>{const{normalize:t}=e;return t(["Links"])},lock_account_description:e=>{const{normalize:t}=e;return t(["Restrict your account to approved followers only"])},loop_video:e=>{const{normalize:t}=e;return t(["Loop videos"])},loop_video_silent_only:e=>{const{normalize:t}=e;return t(['Loop only videos without sound (i.e. Mastodon\'s "gifs")'])},mutes_tab:e=>{const{normalize:t}=e;return t(["Mutes"])},play_videos_in_modal:e=>{const{normalize:t}=e;return t(["Play videos in a popup frame"])},url:e=>{const{normalize:t}=e;return t(["URL"])},preview:e=>{const{normalize:t}=e;return t(["Preview"])},file_export_import:{backup_restore:e=>{const{normalize:t}=e;return t(["Settings backup"])},backup_settings:e=>{const{normalize:t}=e;return t(["Backup settings to file"])},backup_settings_theme:e=>{const{normalize:t}=e;return t(["Backup settings and theme to file"])},restore_settings:e=>{const{normalize:t}=e;return t(["Restore settings from file"])},errors:{invalid_file:e=>{const{normalize:t}=e;return t(["The selected file is not a supported Pleroma settings backup. No changes were made."])},file_too_new:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Incompatile major version: ",n(o("fileMajor")),", this PleromaFE (settings ver ",n(o("feMajor")),") is too old to handle it"])},file_too_old:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Incompatile major version: ",n(o("fileMajor")),", file version is too old and not supported (min. set. ver. ",n(o("feMajor")),")"])},file_slightly_new:e=>{const{normalize:t}=e;return t(["File minor version is different, some settings might not load"])}}},profile_fields:{label:e=>{const{normalize:t}=e;return t(["Profile metadata"])},add_field:e=>{const{normalize:t}=e;return t(["Add field"])},name:e=>{const{normalize:t}=e;return t(["Label"])},value:e=>{const{normalize:t}=e;return t(["Content"])}},birthday:{label:e=>{const{normalize:t}=e;return t(["Birthday"])},show_birthday:e=>{const{normalize:t}=e;return t(["Show my birthday"])}},account_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},use_contain_fit:e=>{const{normalize:t}=e;return t(["Don't crop the attachment in thumbnails"])},name:e=>{const{normalize:t}=e;return t(["Name"])},name_bio:e=>{const{normalize:t}=e;return t(["Name & bio"])},new_email:e=>{const{normalize:t}=e;return t(["New email"])},new_password:e=>{const{normalize:t}=e;return t(["New password"])},posts:e=>{const{normalize:t}=e;return t(["Posts"])},user_profiles:e=>{const{normalize:t}=e;return t(["User Profiles"])},notification_visibility:e=>{const{normalize:t}=e;return t(["Types of notifications to show"])},notification_visibility_follows:e=>{const{normalize:t}=e;return t(["Follows"])},notification_visibility_likes:e=>{const{normalize:t}=e;return t(["Favorites"])},notification_visibility_mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},notification_visibility_repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},notification_visibility_moves:e=>{const{normalize:t}=e;return t(["User Migrates"])},notification_visibility_emoji_reactions:e=>{const{normalize:t}=e;return t(["Reactions"])},notification_visibility_polls:e=>{const{normalize:t}=e;return t(["Ends of polls you voted in"])},no_rich_text_description:e=>{const{normalize:t}=e;return t(["Strip rich text formatting from all posts"])},no_blocks:e=>{const{normalize:t}=e;return t(["No blocks"])},no_mutes:e=>{const{normalize:t}=e;return t(["No mutes"])},hide_favorites_description:e=>{const{normalize:t}=e;return t(["Don't show list of my favorites (people still get notified)"])},hide_follows_description:e=>{const{normalize:t}=e;return t(["Don't show who I'm following"])},hide_followers_description:e=>{const{normalize:t}=e;return t(["Don't show who's following me"])},hide_follows_count_description:e=>{const{normalize:t}=e;return t(["Don't show follow count"])},hide_followers_count_description:e=>{const{normalize:t}=e;return t(["Don't show follower count"])},show_admin_badge:e=>{const{normalize:t}=e;return t(['Show "Admin" badge in my profile'])},show_moderator_badge:e=>{const{normalize:t}=e;return t(['Show "Moderator" badge in my profile'])},nsfw_clickthrough:e=>{const{normalize:t}=e;return t(["Hide sensitive/NSFW media"])},oauth_tokens:e=>{const{normalize:t}=e;return t(["OAuth tokens"])},token:e=>{const{normalize:t}=e;return t(["Token"])},refresh_token:e=>{const{normalize:t}=e;return t(["Refresh token"])},valid_until:e=>{const{normalize:t}=e;return t(["Valid until"])},revoke_token:e=>{const{normalize:t}=e;return t(["Revoke"])},panelRadius:e=>{const{normalize:t}=e;return t(["Panels"])},pause_on_unfocused:e=>{const{normalize:t}=e;return t(["Pause when tab is not focused"])},presets:e=>{const{normalize:t}=e;return t(["Presets"])},profile_background:e=>{const{normalize:t}=e;return t(["Profile background"])},profile_banner:e=>{const{normalize:t}=e;return t(["Profile banner"])},profile_tab:e=>{const{normalize:t}=e;return t(["Profile"])},radii_help:e=>{const{normalize:t}=e;return t(["Set up interface edge rounding (in pixels)"])},replies_in_timeline:e=>{const{normalize:t}=e;return t(["Replies in timeline"])},reply_visibility_all:e=>{const{normalize:t}=e;return t(["Show all replies"])},reply_visibility_following:e=>{const{normalize:t}=e;return t(["Only show replies directed at me or users I'm following"])},reply_visibility_self:e=>{const{normalize:t}=e;return t(["Only show replies directed at me"])},reply_visibility_following_short:e=>{const{normalize:t}=e;return t(["Show replies to my follows"])},reply_visibility_self_short:e=>{const{normalize:t}=e;return t(["Show replies to self only"])},autohide_floating_post_button:e=>{const{normalize:t}=e;return t(["Automatically hide New Post button (mobile)"])},saving_err:e=>{const{normalize:t}=e;return t(["Error saving settings"])},saving_ok:e=>{const{normalize:t}=e;return t(["Settings saved"])},search_user_to_block:e=>{const{normalize:t}=e;return t(["Search whom you want to block"])},search_user_to_mute:e=>{const{normalize:t}=e;return t(["Search whom you want to mute"])},security_tab:e=>{const{normalize:t}=e;return t(["Security"])},scope_copy:e=>{const{normalize:t}=e;return t(["Copy scope when replying (DMs are always copied)"])},minimal_scopes_mode:e=>{const{normalize:t}=e;return t(["Minimize post scope selection options"])},set_new_avatar:e=>{const{normalize:t}=e;return t(["Set new avatar"])},set_new_profile_background:e=>{const{normalize:t}=e;return t(["Set new profile background"])},set_new_profile_banner:e=>{const{normalize:t}=e;return t(["Set new profile banner"])},reset_avatar:e=>{const{normalize:t}=e;return t(["Reset avatar"])},reset_profile_background:e=>{const{normalize:t}=e;return t(["Reset profile background"])},reset_profile_banner:e=>{const{normalize:t}=e;return t(["Reset profile banner"])},reset_avatar_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the avatar?"])},reset_banner_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the banner?"])},reset_background_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to reset the background?"])},settings:e=>{const{normalize:t}=e;return t(["Settings"])},subject_input_always_show:e=>{const{normalize:t}=e;return t(["Always show subject field"])},subject_line_behavior:e=>{const{normalize:t}=e;return t(["Copy subject when replying"])},subject_line_email:e=>{const{normalize:t}=e;return t(['Like email: "re: subject"'])},subject_line_mastodon:e=>{const{normalize:t}=e;return t(["Like mastodon: copy as is"])},subject_line_noop:e=>{const{normalize:t}=e;return t(["Do not copy"])},conversation_display:e=>{const{normalize:t}=e;return t(["Conversation display style"])},conversation_display_tree:e=>{const{normalize:t}=e;return t(["Tree-style"])},conversation_display_tree_quick:e=>{const{normalize:t}=e;return t(["Tree view"])},disable_sticky_headers:e=>{const{normalize:t}=e;return t(["Don't stick column headers to top of the screen"])},show_scrollbars:e=>{const{normalize:t}=e;return t(["Show side column's scrollbars"])},third_column_mode:e=>{const{normalize:t}=e;return t(["When there's enough space, show third column containing"])},third_column_mode_none:e=>{const{normalize:t}=e;return t(["Don't show third column at all"])},third_column_mode_notifications:e=>{const{normalize:t}=e;return t(["Notifications column"])},third_column_mode_postform:e=>{const{normalize:t}=e;return t(["Main post form and navigation"])},columns:e=>{const{normalize:t}=e;return t(["Columns"])},column_sizes:e=>{const{normalize:t}=e;return t(["Column sizes"])},column_sizes_sidebar:e=>{const{normalize:t}=e;return t(["Sidebar"])},column_sizes_content:e=>{const{normalize:t}=e;return t(["Content"])},column_sizes_notifs:e=>{const{normalize:t}=e;return t(["Notifications"])},tree_advanced:e=>{const{normalize:t}=e;return t(["Allow more flexible navigation in tree view"])},tree_fade_ancestors:e=>{const{normalize:t}=e;return t(["Display ancestors of the current status in faint text"])},conversation_display_linear:e=>{const{normalize:t}=e;return t(["Linear-style"])},conversation_display_linear_quick:e=>{const{normalize:t}=e;return t(["Linear view"])},conversation_other_replies_button:e=>{const{normalize:t}=e;return t(['Show the "other replies" button'])},conversation_other_replies_button_below:e=>{const{normalize:t}=e;return t(["Below statuses"])},conversation_other_replies_button_inside:e=>{const{normalize:t}=e;return t(["Inside statuses"])},max_depth_in_thread:e=>{const{normalize:t}=e;return t(["Maximum number of levels in thread to display by default"])},post_status_content_type:e=>{const{normalize:t}=e;return t(["Post status content type"])},sensitive_by_default:e=>{const{normalize:t}=e;return t(["Mark posts as sensitive by default"])},stop_gifs:e=>{const{normalize:t}=e;return t(["Pause animated images until you hover on them"])},streaming:e=>{const{normalize:t}=e;return t(["Automatically show new posts when scrolled to the top"])},auto_update:e=>{const{normalize:t}=e;return t(["Show new posts automatically"])},user_mutes:e=>{const{normalize:t}=e;return t(["Users"])},useStreamingApi:e=>{const{normalize:t}=e;return t(["Receive posts and notifications real-time"])},use_websockets:e=>{const{normalize:t}=e;return t(["Use websockets (Realtime updates)"])},text:e=>{const{normalize:t}=e;return t(["Text"])},theme:e=>{const{normalize:t}=e;return t(["Theme"])},theme_help:e=>{const{normalize:t}=e;return t(["Use hex color codes (#rrggbb) to customize your color theme."])},theme_help_v2_1:e=>{const{normalize:t}=e;return t(['You can also override certain component\'s colors and opacity by toggling the checkbox, use "Clear all" button to clear all overrides.'])},theme_help_v2_2:e=>{const{normalize:t}=e;return t(["Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case."])},tooltipRadius:e=>{const{normalize:t}=e;return t(["Tooltips/alerts"])},type_domains_to_mute:e=>{const{normalize:t}=e;return t(["Search domains to mute"])},upload_a_photo:e=>{const{normalize:t}=e;return t(["Upload a photo"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},values:{false:e=>{const{normalize:t}=e;return t(["no"])},true:e=>{const{normalize:t}=e;return t(["yes"])}},virtual_scrolling:e=>{const{normalize:t}=e;return t(["Optimize timeline rendering"])},use_at_icon:e=>{const{normalize:t}=e;return t(["Display ","@"," symbol as an icon instead of text"])},mention_link_display:e=>{const{normalize:t}=e;return t(["Display mention links"])},mention_link_display_short:e=>{const{normalize:t}=e;return t(["always as short names (e.g. ","@","foo)"])},mention_link_display_full_for_remote:e=>{const{normalize:t}=e;return t(["as full names only for remote users (e.g. ","@","foo","@","example.org)"])},mention_link_display_full:e=>{const{normalize:t}=e;return t(["always as full names (e.g. ","@","foo","@","example.org)"])},mention_link_use_tooltip:e=>{const{normalize:t}=e;return t(["Show user card when clicking mention links"])},mention_link_show_avatar:e=>{const{normalize:t}=e;return t(["Show user avatar beside the link"])},mention_link_show_avatar_quick:e=>{const{normalize:t}=e;return t(["Show user avatar next to mentions"])},mention_link_fade_domain:e=>{const{normalize:t}=e;return t(["Fade domains (e.g. ","@","example.org in ","@","foo","@","example.org)"])},mention_link_bolden_you:e=>{const{normalize:t}=e;return t(["Highlight mention of you when you are mentioned"])},user_popover_avatar_action:e=>{const{normalize:t}=e;return t(["Popover avatar click action"])},user_popover_avatar_action_zoom:e=>{const{normalize:t}=e;return t(["Zoom the avatar"])},user_popover_avatar_action_close:e=>{const{normalize:t}=e;return t(["Close the popover"])},user_popover_avatar_action_open:e=>{const{normalize:t}=e;return t(["Open profile"])},user_popover_avatar_overlay:e=>{const{normalize:t}=e;return t(["Show user popover over user avatar"])},fun:e=>{const{normalize:t}=e;return t(["Fun"])},greentext:e=>{const{normalize:t}=e;return t(["Meme arrows"])},show_yous:e=>{const{normalize:t}=e;return t(["Show (You)s"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},notification_setting_filters:e=>{const{normalize:t}=e;return t(["Filters"])},notification_setting_block_from_strangers:e=>{const{normalize:t}=e;return t(["Block notifications from users who you do not follow"])},notification_setting_privacy:e=>{const{normalize:t}=e;return t(["Privacy"])},notification_setting_hide_notification_contents:e=>{const{normalize:t}=e;return t(["Hide the sender and contents of push notifications"])},notification_mutes:e=>{const{normalize:t}=e;return t(["To stop receiving notifications from a specific user, use a mute."])},notification_blocks:e=>{const{normalize:t}=e;return t(["Blocking a user stops all notifications as well as unsubscribes them."])},enable_web_push_notifications:e=>{const{normalize:t}=e;return t(["Enable web push notifications"])},more_settings:e=>{const{normalize:t}=e;return t(["More settings"])},style:{switcher:{keep_color:e=>{const{normalize:t}=e;return t(["Keep colors"])},keep_shadows:e=>{const{normalize:t}=e;return t(["Keep shadows"])},keep_opacity:e=>{const{normalize:t}=e;return t(["Keep opacity"])},keep_roundness:e=>{const{normalize:t}=e;return t(["Keep roundness"])},keep_fonts:e=>{const{normalize:t}=e;return t(["Keep fonts"])},save_load_hint:e=>{const{normalize:t}=e;return t(['"Keep" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.'])},reset:e=>{const{normalize:t}=e;return t(["Reset"])},clear_all:e=>{const{normalize:t}=e;return t(["Clear all"])},clear_opacity:e=>{const{normalize:t}=e;return t(["Clear opacity"])},load_theme:e=>{const{normalize:t}=e;return t(["Load theme"])},keep_as_is:e=>{const{normalize:t}=e;return t(["Keep as is"])},use_snapshot:e=>{const{normalize:t}=e;return t(["Old version"])},use_source:e=>{const{normalize:t}=e;return t(["New version"])},help:{upgraded_from_v2:e=>{const{normalize:t}=e;return t(["PleromaFE has been upgraded, theme could look a little bit different than you remember."])},v2_imported:e=>{const{normalize:t}=e;return t(["File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies."])},future_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in newer version of FE."])},older_version_imported:e=>{const{normalize:t}=e;return t(["File you imported was made in older version of FE."])},snapshot_present:e=>{const{normalize:t}=e;return t(["Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead."])},snapshot_missing:e=>{const{normalize:t}=e;return t(["No theme snapshot was in the file so it could look different than originally envisioned."])},fe_upgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's theme engine upgraded after version update."])},fe_downgraded:e=>{const{normalize:t}=e;return t(["PleromaFE's version rolled back."])},migration_snapshot_ok:e=>{const{normalize:t}=e;return t(["Just to be safe, theme snapshot loaded. You can try loading theme data."])},migration_napshot_gone:e=>{const{normalize:t}=e;return t(["For whatever reason snapshot was missing, some stuff could look different than you remember."])},snapshot_source_mismatch:e=>{const{normalize:t}=e;return t(["Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version."])}}},common:{color:e=>{const{normalize:t}=e;return t(["Color"])},opacity:e=>{const{normalize:t}=e;return t(["Opacity"])},contrast:{hint:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Contrast ratio is ",n(o("ratio")),", it ",n(o("level"))," ",n(o("context"))])},level:{aa:e=>{const{normalize:t}=e;return t(["meets Level AA guideline (minimal)"])},aaa:e=>{const{normalize:t}=e;return t(["meets Level AAA guideline (recommended)"])},bad:e=>{const{normalize:t}=e;return t(["doesn't meet any accessibility guidelines"])}},context:{"18pt":e=>{const{normalize:t}=e;return t(["for large (18pt+) text"])},text:e=>{const{normalize:t}=e;return t(["for text"])}}}},common_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Common"])},main:e=>{const{normalize:t}=e;return t(["Common colors"])},foreground_hint:e=>{const{normalize:t}=e;return t(['See "Advanced" tab for more detailed control'])},rgbo:e=>{const{normalize:t}=e;return t(["Icons, accents, badges"])}},advanced_colors:{_tab_label:e=>{const{normalize:t}=e;return t(["Advanced"])},alert:e=>{const{normalize:t}=e;return t(["Alert background"])},alert_error:e=>{const{normalize:t}=e;return t(["Error"])},alert_warning:e=>{const{normalize:t}=e;return t(["Warning"])},alert_neutral:e=>{const{normalize:t}=e;return t(["Neutral"])},post:e=>{const{normalize:t}=e;return t(["Posts/User bios"])},badge:e=>{const{normalize:t}=e;return t(["Badge background"])},popover:e=>{const{normalize:t}=e;return t(["Tooltips, menus, popovers"])},badge_notification:e=>{const{normalize:t}=e;return t(["Notification"])},panel_header:e=>{const{normalize:t}=e;return t(["Panel header"])},top_bar:e=>{const{normalize:t}=e;return t(["Top bar"])},borders:e=>{const{normalize:t}=e;return t(["Borders"])},buttons:e=>{const{normalize:t}=e;return t(["Buttons"])},inputs:e=>{const{normalize:t}=e;return t(["Input fields"])},faint_text:e=>{const{normalize:t}=e;return t(["Faded text"])},underlay:e=>{const{normalize:t}=e;return t(["Underlay"])},wallpaper:e=>{const{normalize:t}=e;return t(["Wallpaper"])},poll:e=>{const{normalize:t}=e;return t(["Poll graph"])},icons:e=>{const{normalize:t}=e;return t(["Icons"])},highlight:e=>{const{normalize:t}=e;return t(["Highlighted elements"])},pressed:e=>{const{normalize:t}=e;return t(["Pressed"])},selectedPost:e=>{const{normalize:t}=e;return t(["Selected post"])},selectedMenu:e=>{const{normalize:t}=e;return t(["Selected menu item"])},disabled:e=>{const{normalize:t}=e;return t(["Disabled"])},toggled:e=>{const{normalize:t}=e;return t(["Toggled"])},tabs:e=>{const{normalize:t}=e;return t(["Tabs"])},chat:{incoming:e=>{const{normalize:t}=e;return t(["Incoming"])},outgoing:e=>{const{normalize:t}=e;return t(["Outgoing"])},border:e=>{const{normalize:t}=e;return t(["Border"])}}},radii:{_tab_label:e=>{const{normalize:t}=e;return t(["Roundness"])}},shadows:{_tab_label:e=>{const{normalize:t}=e;return t(["Shadow and lighting"])},component:e=>{const{normalize:t}=e;return t(["Component"])},override:e=>{const{normalize:t}=e;return t(["Override"])},shadow_id:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Shadow #",n(o("value"))])},blur:e=>{const{normalize:t}=e;return t(["Blur"])},spread:e=>{const{normalize:t}=e;return t(["Spread"])},inset:e=>{const{normalize:t}=e;return t(["Inset"])},hintV3:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["For shadows you can also use the ",n(o(0))," notation to use other color slot."])},filter_hint:{always_drop_shadow:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Warning, this shadow always uses ",n(o(0))," when browser supports it."])},drop_shadow_syntax:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0))," does not support ",n(o(1))," parameter and ",n(o(2))," keyword."])},avatar_inset:e=>{const{normalize:t}=e;return t(["Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars."])},spread_zero:e=>{const{normalize:t}=e;return t(["Shadows with spread > 0 will appear as if it was set to zero"])},inset_classic:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Inset shadows will be using ",n(o(0))])}},components:{panel:e=>{const{normalize:t}=e;return t(["Panel"])},panelHeader:e=>{const{normalize:t}=e;return t(["Panel header"])},topBar:e=>{const{normalize:t}=e;return t(["Top bar"])},avatar:e=>{const{normalize:t}=e;return t(["User avatar (in profile view)"])},avatarStatus:e=>{const{normalize:t}=e;return t(["User avatar (in post display)"])},popup:e=>{const{normalize:t}=e;return t(["Popups and tooltips"])},button:e=>{const{normalize:t}=e;return t(["Button"])},buttonHover:e=>{const{normalize:t}=e;return t(["Button (hover)"])},buttonPressed:e=>{const{normalize:t}=e;return t(["Button (pressed)"])},buttonPressedHover:e=>{const{normalize:t}=e;return t(["Button (pressed+hover)"])},input:e=>{const{normalize:t}=e;return t(["Input field"])}}},fonts:{_tab_label:e=>{const{normalize:t}=e;return t(["Fonts"])},help:e=>{const{normalize:t}=e;return t(['Select font to use for elements of UI. For "custom" you have to enter exact font name as it appears in system.'])},components:{interface:e=>{const{normalize:t}=e;return t(["Interface"])},input:e=>{const{normalize:t}=e;return t(["Input fields"])},post:e=>{const{normalize:t}=e;return t(["Post text"])},postCode:e=>{const{normalize:t}=e;return t(["Monospaced text in a post (rich text)"])}},family:e=>{const{normalize:t}=e;return t(["Font name"])},size:e=>{const{normalize:t}=e;return t(["Size (in px)"])},weight:e=>{const{normalize:t}=e;return t(["Weight (boldness)"])},custom:e=>{const{normalize:t}=e;return t(["Custom"])}},preview:{header:e=>{const{normalize:t}=e;return t(["Preview"])},content:e=>{const{normalize:t}=e;return t(["Content"])},error:e=>{const{normalize:t}=e;return t(["Example error"])},button:e=>{const{normalize:t}=e;return t(["Button"])},text:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["A bunch of more ",n(o(0))," and ",n(o(1))])},mono:e=>{const{normalize:t}=e;return t(["content"])},input:e=>{const{normalize:t}=e;return t(["Just landed in L.A."])},faint_link:e=>{const{normalize:t}=e;return t(["helpful manual"])},fine_print:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Read our ",n(o(0))," to learn nothing useful!"])},header_faint:e=>{const{normalize:t}=e;return t(["This is fine"])},checkbox:e=>{const{normalize:t}=e;return t(["I have skimmed over terms and conditions"])},link:e=>{const{normalize:t}=e;return t(["a nice lil' link"])}}},version:{title:e=>{const{normalize:t}=e;return t(["Version"])},backend_version:e=>{const{normalize:t}=e;return t(["Backend version"])},frontend_version:e=>{const{normalize:t}=e;return t(["Frontend version"])}},commit_value:e=>{const{normalize:t}=e;return t(["Save"])},commit_value_tooltip:e=>{const{normalize:t}=e;return t(["Value is not saved, press this button to commit your changes"])},reset_value:e=>{const{normalize:t}=e;return t(["Reset"])},reset_value_tooltip:e=>{const{normalize:t}=e;return t(["Reset draft"])},hard_reset_value:e=>{const{normalize:t}=e;return t(["Hard reset"])},hard_reset_value_tooltip:e=>{const{normalize:t}=e;return t(["Remove setting from storage, forcing use of default value"])}},admin_dash:{window_title:e=>{const{normalize:t}=e;return t(["Administration"])},wip_notice:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["This admin dashboard is experimental and WIP, ",n(o("adminFeLink")),"."])},old_ui_link:e=>{const{normalize:t}=e;return t(["old admin UI available here"])},reset_all:e=>{const{normalize:t}=e;return t(["Reset all"])},commit_all:e=>{const{normalize:t}=e;return t(["Save all"])},tabs:{nodb:e=>{const{normalize:t}=e;return t(["No DB Config"])},instance:e=>{const{normalize:t}=e;return t(["Instance"])},limits:e=>{const{normalize:t}=e;return t(["Limits"])},frontends:e=>{const{normalize:t}=e;return t(["Front-ends"])}},nodb:{heading:e=>{const{normalize:t}=e;return t(["Database config is disabled"])},text:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["You need to change backend config files so that ",n(o("property"))," is set to ",n(o("value")),", see more in ",n(o("documentation")),"."])},documentation:e=>{const{normalize:t}=e;return t(["documentation"])},text2:e=>{const{normalize:t}=e;return t(["Most configuration options will be unavailable."])}},captcha:{native:e=>{const{normalize:t}=e;return t(["Native"])},kocaptcha:e=>{const{normalize:t}=e;return t(["KoCaptcha"])}},instance:{instance:e=>{const{normalize:t}=e;return t(["Instance information"])},registrations:e=>{const{normalize:t}=e;return t(["User sign-ups"])},captcha_header:e=>{const{normalize:t}=e;return t(["CAPTCHA"])},kocaptcha:e=>{const{normalize:t}=e;return t(["KoCaptcha settings"])},access:e=>{const{normalize:t}=e;return t(["Instance access"])},restrict:{header:e=>{const{normalize:t}=e;return t(["Restrict access for anonymous visitors"])},description:e=>{const{normalize:t}=e;return t(["Detailed setting for allowing/disallowing access to certain aspects of API. By default (indeterminate state) it will disallow if instance is not public, ticked checkbox means disallow access even if instance is public, unticked means allow access even if instance is private. Please note that unexpected behavior might happen if some settings are set, i.e. if profile access is disabled posts will show without profile information."])},timelines:e=>{const{normalize:t}=e;return t(["Timelines access"])},profiles:e=>{const{normalize:t}=e;return t(["User profiles access"])},activities:e=>{const{normalize:t}=e;return t(["Statues/activities access"])}}},limits:{arbitrary_limits:e=>{const{normalize:t}=e;return t(["Arbitrary limits"])},posts:e=>{const{normalize:t}=e;return t(["Post limits"])},uploads:e=>{const{normalize:t}=e;return t(["Attachments limits"])},users:e=>{const{normalize:t}=e;return t(["User profile limits"])},profile_fields:e=>{const{normalize:t}=e;return t(["Profile fields limits"])},user_uploads:e=>{const{normalize:t}=e;return t(["Profile media limits"])}},frontend:{repository:e=>{const{normalize:t}=e;return t(["Repository link"])},versions:e=>{const{normalize:t}=e;return t(["Available versions"])},build_url:e=>{const{normalize:t}=e;return t(["Build URL"])},reinstall:e=>{const{normalize:t}=e;return t(["Reinstall"])},is_default:e=>{const{normalize:t}=e;return t(["(Default)"])},is_default_custom:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["(Default, version: ",n(o("version")),")"])},install:e=>{const{normalize:t}=e;return t(["Install"])},install_version:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Install version ",n(o("version"))])},more_install_options:e=>{const{normalize:t}=e;return t(["More install options"])},more_default_options:e=>{const{normalize:t}=e;return t(["More default setting options"])},set_default:e=>{const{normalize:t}=e;return t(["Set default"])},set_default_version:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Set version ",n(o("version"))," as default"])},wip_notice:e=>{const{normalize:t}=e;return t(["Please note that this section is a WIP and lacks certain features as backend implementation of front-end management is incomplete."])},default_frontend:e=>{const{normalize:t}=e;return t(["Default front-end"])},default_frontend_tip:e=>{const{normalize:t}=e;return t(["Default front-end will be shown to all users. Currently there's no way to for a user to select personal front-end. If you switch away from PleromaFE you'll most likely have to use old and buggy AdminFE to do instance configuration until we replace it."])},available_frontends:e=>{const{normalize:t}=e;return t(["Available for install"])},failure_installing_frontend:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Failed to install frontend ",n(o("version")),": ",n(o("reason"))])},success_installing_frontend:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Frontend ",n(o("version"))," successfully installed"])}},temp_overrides:{":pleroma":{":instance":{":public":{label:e=>{const{normalize:t}=e;return t(["Instance is public"])},description:e=>{const{normalize:t}=e;return t(["Disabling this will make all API accessible only for logged-in users, this will make Public and Federated timelines inaccessible to anonymous visitors."])}},":limit_to_local_content":{label:e=>{const{normalize:t}=e;return t(["Limit search to local content"])},description:e=>{const{normalize:t}=e;return t(["Disables global network search for unauthenticated (default), all users or none"])}},":description_limit":{label:e=>{const{normalize:t}=e;return t(["Limit"])},description:e=>{const{normalize:t}=e;return t(["Character limit for attachment descriptions"])}},":background_image":{label:e=>{const{normalize:t}=e;return t(["Background image"])},description:e=>{const{normalize:t}=e;return t(["Background image (primarily used by PleromaFE)"])}}}}}},time:{unit:{days:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," day"]),t([n(o(0))," days"])])},days_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"d"])},hours:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," hour"]),t([n(o(0))," hours"])])},hours_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"h"])},minutes:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," minute"]),t([n(o(0))," minutes"])])},minutes_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"min"])},months:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," month"]),t([n(o(0))," months"])])},months_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"mo"])},seconds:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," second"]),t([n(o(0))," seconds"])])},seconds_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"s"])},weeks:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," week"]),t([n(o(0))," weeks"])])},weeks_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"w"])},years:e=>{const{normalize:t,interpolate:n,list:o,plural:r}=e;return r([t([n(o(0))," year"]),t([n(o(0))," years"])])},years_short:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0)),"y"])}},in_future:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["in ",n(o(0))])},in_past:e=>{const{normalize:t,interpolate:n,list:o}=e;return t([n(o(0))," ago"])},now:e=>{const{normalize:t}=e;return t(["just now"])},now_short:e=>{const{normalize:t}=e;return t(["now"])}},timeline:{collapse:e=>{const{normalize:t}=e;return t(["Collapse"])},conversation:e=>{const{normalize:t}=e;return t(["Conversation"])},error:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Error fetching timeline: ",n(o(0))])},load_older:e=>{const{normalize:t}=e;return t(["Load older statuses"])},no_retweet_hint:e=>{const{normalize:t}=e;return t(["Post is marked as followers-only or direct and cannot be repeated"])},repeated:e=>{const{normalize:t}=e;return t(["repeated"])},show_new:e=>{const{normalize:t}=e;return t(["Show new"])},reload:e=>{const{normalize:t}=e;return t(["Reload"])},up_to_date:e=>{const{normalize:t}=e;return t(["Up-to-date"])},no_more_statuses:e=>{const{normalize:t}=e;return t(["No more statuses"])},no_statuses:e=>{const{normalize:t}=e;return t(["No statuses"])},socket_reconnected:e=>{const{normalize:t}=e;return t(["Realtime connection established"])},socket_broke:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Realtime connection lost: CloseEvent code ",n(o(0))])},quick_view_settings:e=>{const{normalize:t}=e;return t(["Quick view settings"])},quick_filter_settings:e=>{const{normalize:t}=e;return t(["Quick filter settings"])}},status:{favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},repeats:e=>{const{normalize:t}=e;return t(["Repeats"])},repeat_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to repeat this status?"])},repeat_confirm_title:e=>{const{normalize:t}=e;return t(["Repeat confirmation"])},repeat_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Repeat"])},repeat_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not repeat"])},delete:e=>{const{normalize:t}=e;return t(["Delete status"])},delete_error:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Error deleting status: ",n(o(0))])},edit:e=>{const{normalize:t}=e;return t(["Edit status"])},edited_at:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["(last edited ",n(o("time")),")"])},pin:e=>{const{normalize:t}=e;return t(["Pin on profile"])},unpin:e=>{const{normalize:t}=e;return t(["Unpin from profile"])},pinned:e=>{const{normalize:t}=e;return t(["Pinned"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])},unbookmark:e=>{const{normalize:t}=e;return t(["Unbookmark"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this status?"])},delete_confirm_title:e=>{const{normalize:t}=e;return t(["Delete confirmation"])},delete_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Delete"])},delete_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Keep"])},reply_to:e=>{const{normalize:t}=e;return t(["Reply to"])},mentions:e=>{const{normalize:t}=e;return t(["Mentions"])},replies_list:e=>{const{normalize:t}=e;return t(["Replies:"])},replies_list_with_others:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["Replies (+",n(o("numReplies"))," other):"]),t(["Replies (+",n(o("numReplies"))," others):"])])},mute_conversation:e=>{const{normalize:t}=e;return t(["Mute conversation"])},unmute_conversation:e=>{const{normalize:t}=e;return t(["Unmute conversation"])},status_unavailable:e=>{const{normalize:t}=e;return t(["Status unavailable"])},copy_link:e=>{const{normalize:t}=e;return t(["Copy link to status"])},external_source:e=>{const{normalize:t}=e;return t(["External source"])},thread_muted:e=>{const{normalize:t}=e;return t(["Thread muted"])},thread_muted_and_words:e=>{const{normalize:t}=e;return t([", has words:"])},show_full_subject:e=>{const{normalize:t}=e;return t(["Show full subject"])},hide_full_subject:e=>{const{normalize:t}=e;return t(["Hide full subject"])},show_content:e=>{const{normalize:t}=e;return t(["Show content"])},hide_content:e=>{const{normalize:t}=e;return t(["Hide content"])},status_deleted:e=>{const{normalize:t}=e;return t(["This post was deleted"])},nsfw:e=>{const{normalize:t}=e;return t(["NSFW"])},expand:e=>{const{normalize:t}=e;return t(["Expand"])},you:e=>{const{normalize:t}=e;return t(["(You)"])},plus_more:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["+",n(o("number"))," more"])},many_attachments:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Post has ",n(o("number"))," attachment(s)"])},collapse_attachments:e=>{const{normalize:t}=e;return t(["Collapse attachments"])},show_all_attachments:e=>{const{normalize:t}=e;return t(["Show all attachments"])},show_attachment_in_modal:e=>{const{normalize:t}=e;return t(["Show in media modal"])},show_attachment_description:e=>{const{normalize:t}=e;return t(["Preview description (open attachment for full description)"])},hide_attachment:e=>{const{normalize:t}=e;return t(["Hide attachment"])},remove_attachment:e=>{const{normalize:t}=e;return t(["Remove attachment"])},attachment_stop_flash:e=>{const{normalize:t}=e;return t(["Stop Flash player"])},move_up:e=>{const{normalize:t}=e;return t(["Shift attachment left"])},move_down:e=>{const{normalize:t}=e;return t(["Shift attachment right"])},open_gallery:e=>{const{normalize:t}=e;return t(["Open gallery"])},thread_hide:e=>{const{normalize:t}=e;return t(["Hide this thread"])},thread_show:e=>{const{normalize:t}=e;return t(["Show this thread"])},thread_show_full:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["Show everything under this thread (",n(o("numStatus"))," status in total, max depth ",n(o("depth")),")"]),t(["Show everything under this thread (",n(o("numStatus"))," statuses in total, max depth ",n(o("depth")),")"])])},thread_show_full_with_icon:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("icon"))," ",n(o("text"))])},thread_follow:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["See the remaining part of this thread (",n(o("numStatus"))," status in total)"]),t(["See the remaining part of this thread (",n(o("numStatus"))," statuses in total)"])])},thread_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("icon"))," ",n(o("text"))])},ancestor_follow:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["See ",n(o("numReplies"))," other reply under this status"]),t(["See ",n(o("numReplies"))," other replies under this status"])])},ancestor_follow_with_icon:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("icon"))," ",n(o("text"))])},show_all_conversation_with_icon:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("icon"))," ",n(o("text"))])},show_all_conversation:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t(["Show full conversation (",n(o("numStatus"))," other status)"]),t(["Show full conversation (",n(o("numStatus"))," other statuses)"])])},show_only_conversation_under_this:e=>{const{normalize:t}=e;return t(["Only show replies to this status"])},status_history:e=>{const{normalize:t}=e;return t(["Status history"])},reaction_count_label:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t([n(o("num"))," person reacted"]),t([n(o("num"))," people reacted"])])},hide_quote:e=>{const{normalize:t}=e;return t(["Hide the quoted status"])},display_quote:e=>{const{normalize:t}=e;return t(["Display the quoted status"])},invisible_quote:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Quoted status unavailable: ",n(o("link"))])},more_actions:e=>{const{normalize:t}=e;return t(["More actions on this status"])}},user_card:{approve:e=>{const{normalize:t}=e;return t(["Approve"])},approve_confirm_title:e=>{const{normalize:t}=e;return t(["Approve confirmation"])},approve_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Approve"])},approve_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not approve"])},approve_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you want to approve ",n(o("user")),"'s follow request?"])},block:e=>{const{normalize:t}=e;return t(["Block"])},blocked:e=>{const{normalize:t}=e;return t(["Blocked!"])},block_confirm_title:e=>{const{normalize:t}=e;return t(["Block confirmation"])},block_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you really want to block ",n(o("user")),"?"])},block_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Block"])},block_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not block"])},deactivated:e=>{const{normalize:t}=e;return t(["Deactivated"])},deny:e=>{const{normalize:t}=e;return t(["Deny"])},deny_confirm_title:e=>{const{normalize:t}=e;return t(["Deny confirmation"])},deny_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Deny"])},deny_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not deny"])},deny_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you want to deny ",n(o("user")),"'s follow request?"])},edit_profile:e=>{const{normalize:t}=e;return t(["Edit profile"])},favorites:e=>{const{normalize:t}=e;return t(["Favorites"])},follow:e=>{const{normalize:t}=e;return t(["Follow"])},follow_cancel:e=>{const{normalize:t}=e;return t(["Cancel request"])},follow_sent:e=>{const{normalize:t}=e;return t(["Request sent!"])},follow_progress:e=>{const{normalize:t}=e;return t(["Requesting…"])},follow_unfollow:e=>{const{normalize:t}=e;return t(["Unfollow"])},unfollow_confirm_title:e=>{const{normalize:t}=e;return t(["Unfollow confirmation"])},unfollow_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you really want to unfollow ",n(o("user")),"?"])},unfollow_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Unfollow"])},unfollow_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not unfollow"])},followees:e=>{const{normalize:t}=e;return t(["Following"])},followers:e=>{const{normalize:t}=e;return t(["Followers"])},following:e=>{const{normalize:t}=e;return t(["Following!"])},follows_you:e=>{const{normalize:t}=e;return t(["Follows you!"])},hidden:e=>{const{normalize:t}=e;return t(["Hidden"])},its_you:e=>{const{normalize:t}=e;return t(["It's you!"])},media:e=>{const{normalize:t}=e;return t(["Media"])},mention:e=>{const{normalize:t}=e;return t(["Mention"])},message:e=>{const{normalize:t}=e;return t(["Message"])},mute:e=>{const{normalize:t}=e;return t(["Mute"])},muted:e=>{const{normalize:t}=e;return t(["Muted"])},mute_confirm_title:e=>{const{normalize:t}=e;return t(["Mute confirmation"])},mute_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you really want to mute ",n(o("user")),"?"])},mute_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Mute"])},mute_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Do not mute"])},mute_duration_prompt:e=>{const{normalize:t}=e;return t(["Mute this user for (0 for indefinite time):"])},per_day:e=>{const{normalize:t}=e;return t(["per day"])},remote_follow:e=>{const{normalize:t}=e;return t(["Remote follow"])},remove_follower:e=>{const{normalize:t}=e;return t(["Remove follower"])},remove_follower_confirm_title:e=>{const{normalize:t}=e;return t(["Remove follower confirmation"])},remove_follower_confirm_accept_button:e=>{const{normalize:t}=e;return t(["Remove"])},remove_follower_confirm_cancel_button:e=>{const{normalize:t}=e;return t(["Keep"])},remove_follower_confirm:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Do you really want to remove ",n(o("user"))," from your followers?"])},report:e=>{const{normalize:t}=e;return t(["Report"])},statuses:e=>{const{normalize:t}=e;return t(["Statuses"])},subscribe:e=>{const{normalize:t}=e;return t(["Subscribe"])},unsubscribe:e=>{const{normalize:t}=e;return t(["Unsubscribe"])},unblock:e=>{const{normalize:t}=e;return t(["Unblock"])},unblock_progress:e=>{const{normalize:t}=e;return t(["Unblocking…"])},block_progress:e=>{const{normalize:t}=e;return t(["Blocking…"])},unmute:e=>{const{normalize:t}=e;return t(["Unmute"])},unmute_progress:e=>{const{normalize:t}=e;return t(["Unmuting…"])},mute_progress:e=>{const{normalize:t}=e;return t(["Muting…"])},hide_repeats:e=>{const{normalize:t}=e;return t(["Hide repeats"])},show_repeats:e=>{const{normalize:t}=e;return t(["Show repeats"])},bot:e=>{const{normalize:t}=e;return t(["Bot"])},birthday:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Born ",n(o("birthday"))])},admin_menu:{moderation:e=>{const{normalize:t}=e;return t(["Moderation"])},grant_admin:e=>{const{normalize:t}=e;return t(["Grant Admin"])},revoke_admin:e=>{const{normalize:t}=e;return t(["Revoke Admin"])},grant_moderator:e=>{const{normalize:t}=e;return t(["Grant Moderator"])},revoke_moderator:e=>{const{normalize:t}=e;return t(["Revoke Moderator"])},activate_account:e=>{const{normalize:t}=e;return t(["Activate account"])},deactivate_account:e=>{const{normalize:t}=e;return t(["Deactivate account"])},delete_account:e=>{const{normalize:t}=e;return t(["Delete account"])},force_nsfw:e=>{const{normalize:t}=e;return t(["Mark all posts as NSFW"])},strip_media:e=>{const{normalize:t}=e;return t(["Remove media from posts"])},force_unlisted:e=>{const{normalize:t}=e;return t(["Force posts to be unlisted"])},sandbox:e=>{const{normalize:t}=e;return t(["Force posts to be followers-only"])},disable_remote_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user from remote instances"])},disable_any_subscription:e=>{const{normalize:t}=e;return t(["Disallow following user at all"])},quarantine:e=>{const{normalize:t}=e;return t(["Disallow user posts from federating"])},delete_user:e=>{const{normalize:t}=e;return t(["Delete user"])},delete_user_data_and_deactivate_confirmation:e=>{const{normalize:t}=e;return t(["This will permanently delete the data from this account and deactivate it. Are you absolutely sure?"])}},highlight:{disabled:e=>{const{normalize:t}=e;return t(["No highlight"])},solid:e=>{const{normalize:t}=e;return t(["Solid bg"])},striped:e=>{const{normalize:t}=e;return t(["Striped bg"])},side:e=>{const{normalize:t}=e;return t(["Side stripe"])}},note:e=>{const{normalize:t}=e;return t(["Note"])},note_blank:e=>{const{normalize:t}=e;return t(["(None)"])},edit_note:e=>{const{normalize:t}=e;return t(["Edit note"])},edit_note_apply:e=>{const{normalize:t}=e;return t(["Apply"])},edit_note_cancel:e=>{const{normalize:t}=e;return t(["Cancel"])}},user_profile:{timeline_title:e=>{const{normalize:t}=e;return t(["User timeline"])},profile_does_not_exist:e=>{const{normalize:t}=e;return t(["Sorry, this profile does not exist."])},profile_loading_error:e=>{const{normalize:t}=e;return t(["Sorry, there was an error loading this profile."])}},user_reporting:{title:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Reporting ",n(o(0))])},add_comment_description:e=>{const{normalize:t}=e;return t(["The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:"])},additional_comments:e=>{const{normalize:t}=e;return t(["Additional comments"])},forward_description:e=>{const{normalize:t}=e;return t(["The account is from another server. Send a copy of the report there as well?"])},forward_to:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Forward to ",n(o(0))])},submit:e=>{const{normalize:t}=e;return t(["Submit"])},generic_error:e=>{const{normalize:t}=e;return t(["An error occurred while processing your request."])}},who_to_follow:{more:e=>{const{normalize:t}=e;return t(["More"])},who_to_follow:e=>{const{normalize:t}=e;return t(["Who to follow"])}},tool_tip:{media_upload:e=>{const{normalize:t}=e;return t(["Upload media"])},repeat:e=>{const{normalize:t}=e;return t(["Repeat"])},reply:e=>{const{normalize:t}=e;return t(["Reply"])},favorite:e=>{const{normalize:t}=e;return t(["Favorite"])},add_reaction:e=>{const{normalize:t}=e;return t(["Add Reaction"])},user_settings:e=>{const{normalize:t}=e;return t(["User Settings"])},accept_follow_request:e=>{const{normalize:t}=e;return t(["Accept follow request"])},reject_follow_request:e=>{const{normalize:t}=e;return t(["Reject follow request"])},bookmark:e=>{const{normalize:t}=e;return t(["Bookmark"])},toggle_expand:e=>{const{normalize:t}=e;return t(["Expand or collapse notification to show post in full"])},toggle_mute:e=>{const{normalize:t}=e;return t(["Expand or collapse notification to reveal muted content"])},autocomplete_available:e=>{const{normalize:t,interpolate:n,named:o,plural:r}=e;return r([t([n(o("number"))," result is available. Use up and down keys to navigate through them."]),t([n(o("number"))," results are available. Use up and down keys to navigate through them."])])}},upload:{error:{base:e=>{const{normalize:t}=e;return t(["Upload failed."])},message:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Upload failed: ",n(o(0))])},file_too_big:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["File too big [",n(o("filesize")),n(o("filesizeunit"))," / ",n(o("allowedsize")),n(o("allowedsizeunit")),"]"])},default:e=>{const{normalize:t}=e;return t(["Try again later"])}},file_size_units:{B:e=>{const{normalize:t}=e;return t(["B"])},KiB:e=>{const{normalize:t}=e;return t(["KiB"])},MiB:e=>{const{normalize:t}=e;return t(["MiB"])},GiB:e=>{const{normalize:t}=e;return t(["GiB"])},TiB:e=>{const{normalize:t}=e;return t(["TiB"])}}},search:{people:e=>{const{normalize:t}=e;return t(["People"])},hashtags:e=>{const{normalize:t}=e;return t(["Hashtags"])},person_talking:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("count"))," person talking"])},people_talking:e=>{const{normalize:t,interpolate:n,named:o}=e;return t([n(o("count"))," people talking"])},no_results:e=>{const{normalize:t}=e;return t(["No results"])},no_more_results:e=>{const{normalize:t}=e;return t(["No more results"])},load_more:e=>{const{normalize:t}=e;return t(["Load more results"])}},password_reset:{forgot_password:e=>{const{normalize:t}=e;return t(["Forgot password?"])},password_reset:e=>{const{normalize:t}=e;return t(["Password reset"])},instruction:e=>{const{normalize:t}=e;return t(["Enter your email address or username. We will send you a link to reset your password."])},placeholder:e=>{const{normalize:t}=e;return t(["Your email or username"])},check_email:e=>{const{normalize:t}=e;return t(["Check your email for a link to reset your password."])},return_home:e=>{const{normalize:t}=e;return t(["Return to the home page"])},too_many_requests:e=>{const{normalize:t}=e;return t(["You have reached the limit of attempts, try again later."])},password_reset_disabled:e=>{const{normalize:t}=e;return t(["Password reset is disabled. Please contact your instance administrator."])},password_reset_required:e=>{const{normalize:t}=e;return t(["You must reset your password to log in."])},password_reset_required_but_mailer_is_disabled:e=>{const{normalize:t}=e;return t(["You must reset your password, but password reset is disabled. Please contact your instance administrator."])}},chats:{you:e=>{const{normalize:t}=e;return t(["You:"])},message_user:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Message ",n(o("nickname"))])},delete:e=>{const{normalize:t}=e;return t(["Delete"])},chats:e=>{const{normalize:t}=e;return t(["Chats"])},new:e=>{const{normalize:t}=e;return t(["New Chat"])},empty_message_error:e=>{const{normalize:t}=e;return t(["Cannot post empty message"])},more:e=>{const{normalize:t}=e;return t(["More"])},delete_confirm:e=>{const{normalize:t}=e;return t(["Do you really want to delete this message?"])},error_loading_chat:e=>{const{normalize:t}=e;return t(["Something went wrong when loading the chat."])},error_sending_message:e=>{const{normalize:t}=e;return t(["Something went wrong when sending the message."])},empty_chat_list_placeholder:e=>{const{normalize:t}=e;return t(["You don't have any chats yet. Start a new chat!"])}},lists:{lists:e=>{const{normalize:t}=e;return t(["Lists"])},new:e=>{const{normalize:t}=e;return t(["New List"])},title:e=>{const{normalize:t}=e;return t(["List title"])},search:e=>{const{normalize:t}=e;return t(["Search users"])},create:e=>{const{normalize:t}=e;return t(["Create"])},save:e=>{const{normalize:t}=e;return t(["Save changes"])},delete:e=>{const{normalize:t}=e;return t(["Delete list"])},following_only:e=>{const{normalize:t}=e;return t(["Limit to Following"])},manage_lists:e=>{const{normalize:t}=e;return t(["Manage lists"])},manage_members:e=>{const{normalize:t}=e;return t(["Manage list members"])},add_members:e=>{const{normalize:t}=e;return t(["Search for more users"])},remove_from_list:e=>{const{normalize:t}=e;return t(["Remove from list"])},add_to_list:e=>{const{normalize:t}=e;return t(["Add to list"])},is_in_list:e=>{const{normalize:t}=e;return t(["Already in list"])},editing_list:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Editing list ",n(o("listTitle"))])},creating_list:e=>{const{normalize:t}=e;return t(["Creating new list"])},update_title:e=>{const{normalize:t}=e;return t(["Save Title"])},really_delete:e=>{const{normalize:t}=e;return t(["Really delete list?"])},error:e=>{const{normalize:t,interpolate:n,list:o}=e;return t(["Error manipulating lists: ",n(o(0))])}},file_type:{audio:e=>{const{normalize:t}=e;return t(["Audio"])},video:e=>{const{normalize:t}=e;return t(["Video"])},image:e=>{const{normalize:t}=e;return t(["Image"])},file:e=>{const{normalize:t}=e;return t(["File"])}},display_date:{today:e=>{const{normalize:t}=e;return t(["Today"])}},update:{big_update_title:e=>{const{normalize:t}=e;return t(["Please bear with us"])},big_update_content:e=>{const{normalize:t}=e;return t(["We haven't had a release in a while, so things might look and feel different than what you're used to."])},update_bugs:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Please report any issues and bugs on ",n(o("pleromaGitlab")),", as we have changed a lot, and although we test thoroughly and use development versions ourselves, we may have missed some things. We welcome your feedback and suggestions on issues you might encounter, or how to improve Pleroma and Pleroma-FE."])},update_bugs_gitlab:e=>{const{normalize:t}=e;return t(["Pleroma GitLab"])},update_changelog:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["For more details on what's changed, see ",n(o("theFullChangelog")),"."])},update_changelog_here:e=>{const{normalize:t}=e;return t(["the full changelog"])},art_by:e=>{const{normalize:t,interpolate:n,named:o}=e;return t(["Art by ",n(o("linkToArtist"))])}},unicode_domain_indicator:{tooltip:e=>{const{normalize:t}=e;return t(["This domain contains non-ascii characters."])}}}},1395:(e,t,n)=>{var o={"./af.json":[44919,6355],"./am.json":[53139,5119],"./ar.json":[44557,9873],"./ar_SA.json":[23450,7360],"./as.json":[44359,3377],"./ast.json":[13764,7569],"./az.json":[86459,2342],"./be.json":[50866,7304],"./bg.json":[26219,3974],"./bn.json":[69178,9064],"./br.json":[67871,6148],"./bs.json":[75340,8134],"./ca.json":[86914,4691],"./ccp.json":[73872,1162],"./ceb.json":[64478,9790],"./chr.json":[61017,6869],"./ckb.json":[56412,2656],"./cs.json":[8888,4710],"./cy.json":[25392,6272],"./da.json":[35042,1596],"./de.json":[35169,6226],"./de_CH.json":[28246,7164],"./doi.json":[59784,4209],"./dsb.json":[60634,1790],"./el.json":[98338,7879],"./en.json":[74990,5728],"./en_001.json":[62736,577],"./en_AU.json":[2597,9360],"./en_CA.json":[1516,4879],"./en_GB.json":[84830,50],"./en_IN.json":[71809,8988],"./es.json":[61148,6831],"./es_419.json":[25696,8873],"./es_MX.json":[11915,2699],"./es_US.json":[87826,3313],"./et.json":[66641,3276],"./eu.json":[6541,2992],"./fa.json":[43305,5521],"./fi.json":[40752,420],"./fil.json":[26843,1236],"./fo.json":[43032,8995],"./fr.json":[80898,2223],"./fr_CA.json":[54515,1821],"./ga.json":[66572,4571],"./gd.json":[9185,6116],"./gl.json":[23840,6126],"./gu.json":[85811,7261],"./ha.json":[91566,227],"./ha_NE.json":[3400,5304],"./he.json":[26260,5548],"./hi.json":[18136,5968],"./hi_Latn.json":[95638,3056],"./hr.json":[77435,2861],"./hsb.json":[15758,8015],"./hu.json":[2727,4902],"./hy.json":[8397,6344],"./ia.json":[49796,6936],"./id.json":[56635,9465],"./ig.json":[26406,9895],"./is.json":[51391,7300],"./it.json":[54879,8970],"./ja.json":[2971,1290],"./jv.json":[18644,2479],"./ka.json":[71255,6068],"./kab.json":[92892,9780],"./kk.json":[46419,2873],"./kl.json":[2227,2397],"./km.json":[65729,1404],"./kn.json":[65611,278],"./ko.json":[67080,2966],"./kok.json":[47209,2599],"./ku.json":[18738,2883],"./ky.json":[89690,4785],"./lb.json":[3929,4770],"./lo.json":[19778,7464],"./lt.json":[41683,7169],"./lv.json":[54873,8898],"./mai.json":[11781,1613],"./mi.json":[11569,6701],"./mk.json":[67589,9921],"./ml.json":[24415,2685],"./mn.json":[50512,4718],"./mni.json":[81597,5401],"./mr.json":[97747,1911],"./ms.json":[81588,9924],"./mt.json":[25081,9399],"./my.json":[8608,6790],"./ne.json":[8572,9377],"./nl.json":[52355,6773],"./nn.json":[52874,9414],"./no.json":[48005,9979],"./or.json":[26728,1012],"./pa.json":[15042,6946],"./pa_Arab.json":[43578,9994],"./pcm.json":[91163,5104],"./pl.json":[61335,1095],"./ps.json":[51828,678],"./pt.json":[38543,5041],"./pt_PT.json":[8063,1546],"./qu.json":[15821,8031],"./rm.json":[5014,5887],"./ro.json":[34064,9864],"./ru.json":[95222,8395],"./rw.json":[12710,346],"./sa.json":[69343,2243],"./sat.json":[51243,7855],"./sc.json":[1319,2874],"./sd.json":[67728,6826],"./si.json":[5044,4354],"./sk.json":[45626,2350],"./sl.json":[76091,1553],"./so.json":[93761,625],"./sq.json":[1230,4368],"./sr.json":[60445,3887],"./sr_Cyrl_BA.json":[38940,6060],"./sr_Latn.json":[21650,8681],"./sr_Latn_BA.json":[78328,5115],"./su.json":[54395,1959],"./sv.json":[3418,3241],"./sw.json":[11958,7585],"./sw_KE.json":[35001,3994],"./ta.json":[92930,7897],"./te.json":[8748,4786],"./tg.json":[20999,313],"./th.json":[23900,3951],"./ti.json":[368,3568],"./tk.json":[88770,1780],"./to.json":[95781,1584],"./tr.json":[92619,9978],"./tt.json":[87782,2569],"./ug.json":[19005,9757],"./uk.json":[82057,9871],"./ur.json":[13889,6797],"./uz.json":[45108,1056],"./vi.json":[97099,5224],"./wo.json":[9923,7303],"./xh.json":[29064,786],"./yo.json":[11971,8732],"./yo_BJ.json":[64533,9926],"./yue.json":[40648,1452],"./yue_Hans.json":[24800,4424],"./zh.json":[34626,457],"./zh_Hant.json":[82560,2767],"./zh_Hant_HK.json":[47677,1044],"./zu.json":[73784,9319]};function r(e){if(!n.o(o,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=o[e],r=t[0];return n.e(t[1]).then((()=>n.t(r,19)))}r.keys=()=>Object.keys(o),r.id=1395,e.exports=r},19003:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>l});var o=n(15861),r=n(93433),i=n(4942),s=n(64687),a=n.n(s);function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?u(Object(n),!0).forEach((function(t){(0,i.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const l=function(e){var t=d(e.emoji),n=e.store&&p(e.store);return function(o,r){var i=o[0];return":"===i&&e.emoji?t(o,r):"@"===i&&n?n(o):[]}};var d=function(e){return function(t,n){var o=t.toLowerCase().substr(1);return e.map((function(e){return c(c({},e),n(e))})).filter((function(e){return e.names.concat(e.keywords).filter((function(e){return e.toLowerCase().match(o)})).length})).map((function(e){var t=0;return t+=Math.max.apply(Math,(0,r.Z)(e.names.map((function(e){return e.toLowerCase()===o?200:0}))).concat([0])),t+=e.imageUrl?100:0,t+=Math.max.apply(Math,(0,r.Z)(e.names.map((function(e){return e.toLowerCase().startsWith(o)?10:0}))).concat([0])),t-=e.displayText.length,e.score=t,e})).sort((function(e,t){var n=e.displayText>t.displayText?.5:-.5;return t.score-e.score+n}))}},p=function(e){var t=e.dispatch,n=e.state,r=[],i="",s=null,u=null,c=function(e){return u&&u(),new Promise((function(n,o){s=setTimeout((function(){(function(e){return t("searchUsers",{query:e})})(e).then(n).catch(o)}),300),u=function(){clearTimeout(s),n([])}}))};return function(){var e=(0,o.Z)(a().mark((function e(t){var o,s;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=t.toLowerCase().substr(1),i!==o){e.next=3;break}return e.abrupt("return",r);case 3:if(r=[],i=o,o.includes("@")){e.next=8;break}return e.next=8,c(o);case 8:return s=n.users.users.filter((function(e){return e.screen_name&&e.name&&(e.screen_name.toLowerCase().startsWith(o)||e.name.toLowerCase().startsWith(o))})).slice(0,20).sort((function(e,t){var n=0,r=0;return n+=e.screen_name.toLowerCase().startsWith(o)?2:0,r+=t.screen_name.toLowerCase().startsWith(o)?2:0,n+=e.name.toLowerCase().startsWith(o)?1:0,10*((r+=t.name.toLowerCase().startsWith(o)?1:0)-n)+(e.name>t.name?1:-1)+(e.screen_name>t.screen_name?1:-1)})).map((function(e){return{user:e,displayText:e.screen_name_ui,detailText:e.name,imageUrl:e.profile_image_url_original,replacement:"@"+e.screen_name+" "}})),r=s||[],e.abrupt("return",r);case 11:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}},92820:(e,t,n)=>{"use strict";n.d(t,{Z:()=>F});var o=n(93433),r=n(29439),i=n(44925),s=n(42348),a=n.n(s),u=n(27955),c=n.n(u),l=n(66252);function d(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var m=function(e){var t=/(?:<\/(\w+)>|<(\w+)\s?[\s\S]*?\/?>)/gi.exec(e);return t&&(t[1]||t[2])},h=function(e,t){var n=e.substring(1,e.length-1).replace(new RegExp("^"+m(e)),"").replace(/\/?$/,"").trim(),o=Array.from(n.matchAll(/([a-z]+[a-z0-9-]*)(?:=("[^"]+?"|'[^']+?'))?/gi)).map((function(e){var t=(0,r.Z)(e,3);return t[0],[t[1],t[2]]})).map((function(e){var t=(0,r.Z)(e,2),n=t[0],o=t[1];return o?[n,o.substring(1,o.length-1)]:[n,!0]}));return Object.fromEntries(o.filter(t||function(e){var t=(0,r.Z)(e,2),n=t[0],o=t[1],i=n.toLowerCase();return"style"!==i&&("class"!==i||"greentext"===o||"cyantext"===o)}))},f=function(e,t,n){for(var o=[],r="",i=0;i<e.length;i++){var s=e[i];if(":"===s){var a,u=e.slice(i+1),c=!1,l=d(t);try{for(l.s();!(a=l.n()).done;){var p=a.value;if(u.slice(0,p.shortcode.length+1)===p.shortcode+":"){c=p;break}}}catch(e){l.e(e)}finally{l.f()}c?(o.push(r),r="",o.push(n(c)),i+=c.shortcode.length+1):r+=s}else r+=s}return r&&o.push(r),o};function g(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var w=n(32140),b=n(21268),y=n(49963),D={class:"HashtagLink"},_=["href","innerHTML"];const k={name:"HashtagLink",props:{url:{required:!0,type:String},content:{required:!0,type:String},tag:{required:!1,type:String,default:""}},methods:{onClick:function(){var e,t,n,o=this.tag||(e=this.url,t=decodeURI(e),!!(n=/tags*\/((?:[0-9A-Z_a-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])*(?:[A-Z_a-z\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0345\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05B0-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0657\u0659-\u065F\u066E-\u06D3\u06D5-\u06DC\u06E1-\u06E8\u06ED-\u06EF\u06FA-\u06FC\u06FF\u0710-\u073F\u074D-\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0817\u081A-\u082C\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u08D4-\u08DF\u08E3-\u08E9\u08F0-\u093B\u093D-\u094C\u094E-\u0950\u0955-\u0963\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C4\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09F0\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A42\u0A47\u0A48\u0A4B\u0A4C\u0A51\u0A59-\u0A5C\u0A5E\u0A70-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC5\u0AC7-\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0-\u0AE3\u0AF9-\u0AFC\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D-\u0B44\u0B47\u0B48\u0B4B\u0B4C\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4C\u0C55\u0C56\u0C58-\u0C5A\u0C5D\u0C60-\u0C63\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCC\u0CD5\u0CD6\u0CDD\u0CDE\u0CE0-\u0CE3\u0CF1\u0CF2\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D7A-\u0D7F\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E46\u0E4D\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0ECD\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F71-\u0F81\u0F88-\u0F97\u0F99-\u0FBC\u1000-\u1036\u1038\u103B-\u103F\u1050-\u108F\u109A-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1713\u171F-\u1733\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17B3\u17B6-\u17C8\u17D7\u17DC\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u1938\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A1B\u1A20-\u1A5E\u1A61-\u1A74\u1AA7\u1ABF\u1AC0\u1ACC-\u1ACE\u1B00-\u1B33\u1B35-\u1B43\u1B45-\u1B4C\u1B80-\u1BA9\u1BAC-\u1BAF\u1BBA-\u1BE5\u1BE7-\u1BF1\u1C00-\u1C36\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1DE7-\u1DF4\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u24B6-\u24E9\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA674-\uA67B\uA67F-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA805\uA807-\uA827\uA840-\uA873\uA880-\uA8C3\uA8C5\uA8F2-\uA8F7\uA8FB\uA8FD-\uA8FF\uA90A-\uA92A\uA930-\uA952\uA960-\uA97C\uA980-\uA9B2\uA9B4-\uA9BF\uA9CF\uA9E0-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA60-\uAA76\uAA7A-\uAABE\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABEA\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDE80-\uDEA9\uDEAB\uDEAC\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC45\uDC71-\uDC75\uDC82-\uDCB8\uDCC2\uDCD0-\uDCE8\uDD00-\uDD32\uDD44-\uDD47\uDD50-\uDD72\uDD76\uDD80-\uDDBF\uDDC1-\uDDC4\uDDCE\uDDCF\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE34\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEE8\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D-\uDF44\uDF47\uDF48\uDF4B\uDF4C\uDF50\uDF57\uDF5D-\uDF63]|\uD805[\uDC00-\uDC41\uDC43-\uDC45\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCC1\uDCC4\uDCC5\uDCC7\uDD80-\uDDB5\uDDB8-\uDDBE\uDDD8-\uDDDD\uDE00-\uDE3E\uDE40\uDE44\uDE80-\uDEB5\uDEB8\uDF00-\uDF1A\uDF1D-\uDF2A\uDF40-\uDF46]|\uD806[\uDC00-\uDC38\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD35\uDD37\uDD38\uDD3B\uDD3C\uDD3F-\uDD42\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDDF\uDDE1\uDDE3\uDDE4\uDE00-\uDE32\uDE35-\uDE3E\uDE50-\uDE97\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC3E\uDC40\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD41\uDD43\uDD46\uDD47\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD96\uDD98\uDEE0-\uDEF6\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3\uDFF0\uDFF1]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9E]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD47\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD30-\uDD49\uDD50-\uDD69\uDD70-\uDD89]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])(?:[0-9A-Z_a-z\xAA\xB2\xB3\xB5\xB7\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u052F\u0531-\u0556\u0559\u0560-\u0588\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u07FD\u0800-\u082D\u0840-\u085B\u0860-\u086A\u0870-\u0887\u0889-\u088E\u0898-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09F4-\u09F9\u09FC\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71-\u0B77\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BF2\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3C-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C5D\u0C60-\u0C63\u0C66-\u0C6F\u0C78-\u0C7E\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDD\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D63\u0D66-\u0D78\u0D7A-\u0D7F\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F33\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1715\u171F-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u17F0-\u17F9\u180B-\u180D\u180F-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ACE\u1B00-\u1B4C\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CD0-\u1CD2\u1CD4-\u1CFA\u1D00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u20D0-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA672\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA827\uA82C\uA830-\uA835\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE6\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD27\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEAB\uDEAC\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF54\uDF70-\uDF85\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC00-\uDC46\uDC52-\uDC75\uDC7F-\uDCBA\uDCC2\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD44-\uDD47\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDC9-\uDDCC\uDDCE-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3B-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5E-\uDC61\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC3A\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD35\uDD37\uDD38\uDD3B-\uDD43\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD7\uDDDA-\uDDE1\uDDE3\uDDE4\uDE00-\uDE3E\uDE47\uDE50-\uDE99\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF6\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF4F-\uDF87\uDF8F-\uDF9F\uDFE0\uDFE1\uDFE3\uDFE4\uDFF0\uDFF1]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD833[\uDF00-\uDF2D\uDF30-\uDF46]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD00-\uDD2C\uDD30-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAE\uDEC0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCD6\uDD00-\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]|\uDB40[\uDD00-\uDDEF])*)$/g.exec(t))&&n[1]);if(o){var r=this.generateTagLink(o);this.$router.push(r)}else window.open(this.url,"_blank")},generateTagLink:function(e){return"/tag/".concat(e)}}},C=(0,n(83744).Z)(k,[["render",function(e,t,n,o,r,i){return(0,l.wg)(),(0,l.iD)("span",D,[(0,l._)("a",{href:e.url,class:"original",target:"_blank",onClick:t[0]||(t[0]=(0,y.iM)((function(){return e.onClick&&e.onClick.apply(e,arguments)}),["prevent"])),innerHTML:e.content},null,8,_)])}]]);var S=["index"],j=["blockquote","br","hr","ul","ol","li","p","table","tbody","td","th","thead","tr","h1","h2","h3","h4","h5"];const F={name:"RichContent",components:{MentionsLine:b.Z,HashtagLink:C},props:{html:{required:!0,type:String},attentions:{required:!1,default:function(){return[]}},emoji:{required:!0,type:Array},handleLinks:{required:!1,type:Boolean,default:!1},greentext:{required:!1,type:Boolean,default:!1}},render:function(){var e=this,t=O(this.html,this.greentext).newHtml,n=null,s="",a=[],u=[],d=[],p=[],g=0,v=0,y=!1,D=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),n=[],o=[["",n]],r="",i=null,s=function(){return o[o.length-1][1]},a=function(){""!==r&&(s().push(r),r="")},u=function(e){s().push([e])},l=function(e){var t=s(),n=[c()(e),[]];o.push(n),t.push(n)},d=function(e){var t=o[o.length-1];m(o[o.length-1][0])===m(e)?(t.push(e),o.pop()):s().push(e)},p=0;p<e.length;p++){var h=e[p];if("<"===h&&null===i)a(),i=h;else if(">"!==h&&null!==i)i+=h;else if(">"===h&&null!==i){var f=i+=h;i=null;var g=m(f);"/"===f[1]?d(f):t.has(g)||"/"===f[f.length-2]?u(f):l(f)}else r+=h}return i&&(r+=i),a(),n}(t).map((function t(o,i,a,c){if("string"==typeof o){var p=""===o.trim();return o.includes("\n")&&(n=null),p?(s=o,i!==a.length-1&&null!==n?o.trim():o):(n=null,o.includes(":")&&(o=["",f(o,e.emoji,(function(e){var t=e.shortcode,n=e.url;return(0,l.Wm)(w.Z,{class:"emoji img",src:n,title:":".concat(t,":"),alt:":".concat(t,":")},null)}))]),o)}if(Array.isArray(o)){var v=o,y=(0,r.Z)(v,3),D=y[0],_=y[1],k=y[2],C=m(D);"script"===C.toLowerCase()&&(C="js-exploit"),"style"===C.toLowerCase()&&(C="css-exploit");var S=h(D,(function(){return!0})),F=h(D),O=null===n||_&&"string"==typeof _[0]&&_[0].match(/^\s/)?"":s;if(j.includes(C))n=null;else{if("img"===C)return["",[O,(E=D,(0,l.Wm)(w.Z,(0,l.dG)(h(E),{class:"img"}),null))],""];if("a"===C&&e.handleLinks){if(S.class&&S.class.includes("mention"))return function(t,o){var r=A(t,o,g++);return r.notifying=e.attentions.some((function(e){return e.statusnet_profile_url===r.url})),u.push(r),null===n&&(n=[]),n.push(r),n.length>b.d&&d.push(r),1===n.length?(0,l.Wm)(b.Z,{mentions:n},null):""}(F,_);n=null}else if("span"===C&&e.handleLinks&&S.class&&S.class.includes("h-card"))return["",_.map(t),""]}return void 0!==_?["",[O,[D,_.map(t),k]],""]:["",[O,o],""]}var E})),_=(0,o.Z)(D).reverse().map((function t(n,s,u,d){var f;if("string"==typeof n)return""===n.trim()?n:(y||(y=!0),c()(n));if(Array.isArray(n)){var g=(0,r.Z)(n,2),w=g[0],b=g[1],D=""===w?"":m(w);switch(D){case"a":if(!e.handleLinks)break;var _=h(w,(function(){return!0})),k=h(w,(function(){return!0}));if(_.class&&_.class.includes("hashtag")||"tag"===_.rel)return function(e,t,n){var o=A(e,t,v++),r=(o.index,(0,i.Z)(o,S));p.push(r),n||a.push(r);var s=r.url,u=r.tag,c=r.content;return(0,l.Wm)(C,{url:s,tag:u,content:c},null)}(k,b,y);k.target="_blank";var j=(0,o.Z)(b).reverse().map(t).reverse();return(0,l.Wm)("a",k,[j]);case"":return(0,o.Z)(b).reverse().map(t).reverse()}if(void 0!==b){var F=Array.isArray(b)?(0,o.Z)(b).reverse().map(t).reverse():b;return(0,l.Wm)(D,h(w),"function"==typeof(f=F)||"[object Object]"===Object.prototype.toString.call(f)&&!(0,l.lA)(f)?F:{default:function(){return[F]}})}return(0,l.Wm)(D,null,null)}return n})).reverse(),k=(0,l.Wm)("span",{class:"RichContent"},[_]),F={lastTags:a,writtenMentions:u,writtenTags:p,invisibleMentions:d};return this.$emit("parseReady",F),k}};var A=function(e,t,n){var o=t.map((function e(t){return"string"==typeof t?t:t[1].map(e).join("")})).join("");return{index:n,url:e.href,tag:e["data-tag"],content:a()(t).join(""),textContent:o}},O=function(e,t){var n=new Set(["p","div"]),r=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=new Set(["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"]),r=new Set(["address","article","aside","blockquote","details","dialog","dd","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","ol","p","pre","section","table","ul"]),i=new Set(["br"]),s=new Set([].concat((0,o.Z)(r.values()),(0,o.Z)(i.values()))),a=new Set(s),u=g(n);try{for(u.s();!(e=u.n()).done;){var c=e.value;a.delete(c)}}catch(e){u.e(e)}finally{u.f()}for(var l=new Set([].concat((0,o.Z)(a.values()),(0,o.Z)(n.values()))),d=[],p=[],h="",f=null,v=function(){h.trim().length>0?d.push({level:[].concat(p),text:h}):d.push(h),h=""},w=function(e){v(),d.push(e)},b=function(e){v(),d.push(e),p.unshift(m(e))},y=function(e){p[0]===m(e)?(v(),d.push(e),p.shift()):h+=e},D=0;D<t.length;D++){var _=t[D];if("<"===_&&null===f)f=_;else if(">"!==_&&null!==f)f+=_;else if(">"===_&&null!==f){var k=f+=_;f=null;var C=m(k);l.has(C)?i.has(C)?w(k):a.has(C)?"/"===k[1]?y(k):"/"===k[k.length-2]?w(k):b(k):h+=k:h+=k}else"\n"===_?w(_):h+=_}return f&&(h+=f),v(),d}(e);return{newHtml:r.reverse().map((function(e,o,r){if(!e.text)return e;var i=e.text;if(t&&e.level.every((function(e){return n.has(e)}))&&(i.includes("&gt;")||i.includes("&lt;"))){var s=i.replace(/<[^>]+?>/gi,"").replace(/@\w+/gi,"").trim();if(s.startsWith("&gt;"))return"<span class='greentext'>".concat(i,"</span>");if(s.startsWith("&lt;"))return"<span class='cyantext'>".concat(i,"</span>")}return i})).reverse().join("")}}},79354:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var o=n(66252),r=n(57810),i=function(e){return e.findIndex((function(e){return e.props}))};const s={name:"TabSwitcher",props:{renderOnlyFocused:{required:!1,type:Boolean,default:!1},onSwitch:{required:!1,type:Function,default:void 0},activeTab:{required:!1,type:String,default:void 0},scrollableTabs:{required:!1,type:Boolean,default:!1},sideTabBar:{required:!1,type:Boolean,default:!1},bodyScrollLock:{required:!1,type:Boolean,default:!1}},data:function(){return{active:i(this.slots())}},computed:{activeIndex:function(){var e=this;return this.activeTab?this.slots().findIndex((function(t){return t&&t.props&&e.activeTab===t.props.key})):this.active},isActive:function(){var e=this;return function(t){return e.$slots.default().findIndex((function(e){return e.props&&e.props["data-tab-name"]===t}))===e.activeIndex}}},beforeUpdate:function(){this.slots()[this.active].props||(this.active=i(this.slots()))},methods:{clickTab:function(e){var t=this;return function(n){n.preventDefault(),t.setTab(e)}},slots:function(){return this.$slots.default()[0].type===o.HY?this.$slots.default()[0].children:this.$slots.default()},setTab:function(e){"function"==typeof this.onSwitch&&this.onSwitch.call(null,this.slots()[e].key),this.active=e,this.scrollableTabs&&(this.$refs.contents.scrollTop=0)}},render:function(){var e=this,t=this.slots().map((function(t,n){var i=t.props;if(i){var s=["tab","button-default"],a=["tab-wrapper"];return e.activeIndex===n&&(s.push("active"),a.push("active")),i.image?(0,o.Wm)("div",{class:a.join(" ")},[(0,o.Wm)("button",{disabled:i.disabled,onClick:e.clickTab(n),class:s.join(" "),type:"button",role:"tab"},[(0,o.Wm)("img",{src:i.image,title:i["image-tooltip"]},null),i.label?"":i.label])]):(0,o.Wm)("div",{class:a.join(" ")},[(0,o.Wm)("button",{disabled:i.disabled,onClick:e.clickTab(n),class:s.join(" "),type:"button",role:"tab"},[i.icon?(0,o.Wm)(r.GN,{class:"tab-icon",size:"2x","fixed-width":!0,icon:i.icon},null):"",(0,o.Wm)("span",{class:"text"},[i.label])])])}})),n=this.slots().map((function(t,n){var r=t.props;if(r){var i=e.activeIndex===n,s=[i?"active":"hidden"];r.fullHeight&&s.push("full-height");var a=!e.renderOnlyFocused||i?t:"";return(0,o.Wm)("div",{class:s},[e.sideTabBar?(0,o.Wm)("h1",{class:"mobile-label"},[r.label]):"",a])}}));return(0,o.Wm)("div",{class:"tab-switcher "+(this.sideTabBar?"side-tabs":"top-tabs")},[(0,o.Wm)("div",{class:"tabs",role:"tablist"},[t]),(0,o.wy)((0,o.Wm)("div",{ref:"contents",role:"tabpanel",class:"contents"+(this.scrollableTabs?" scrollable-tabs":"")},[n]),[[(0,o.Q2)("body-scroll-lock"),this.bodyScrollLock]])])}}},98027:(e,t,n)=>{"use strict";n.d(t,{Z:()=>m});var o=n(4942),r=n(66252),i=n(41609),s=n.n(i),a=n(13562),u=n(57810),c=n(9382),l=n(84131);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}c.vI.add(l.IJ7);const m=function(e){var t=e.fetch,n=e.select,i=e.unmounted,c=e.childPropName,l=void 0===c?"entries":c,d=e.additionalPropNames,m=void 0===d?[]:d;return function(e){return{props:Object.keys((0,a.g)(e)).filter((function(e){return e!==l})).concat(m),data:function(){return{loading:!1,bottomedOut:!1,error:!1,entries:[]}},created:function(){window.addEventListener("scroll",this.scrollLoad),0===this.entries.length&&this.fetchEntries()},unmounted:function(){window.removeEventListener("scroll",this.scrollLoad),i&&i(this.$props,this.$store)},methods:{updateEntries:function(){this.entries=n(this.$props,this.$store)||[]},fetchEntries:function(){var e=this;this.loading||(this.loading=!0,this.error=!1,t(this.$props,this.$store).then((function(t){e.loading=!1,e.bottomedOut=s()(t)})).catch((function(){e.loading=!1,e.error=!0})).finally((function(){e.updateEntries()})))},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.loading&&!1===this.bottomedOut&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchEntries()}},render:function(){var t,n=p(p({},this.$props),{},(0,o.Z)({},l,this.entries)),i=this.$slots;return(0,r.Wm)("div",{class:"with-load-more"},[(0,r.Wm)(e,n,(t=i,"function"==typeof t||"[object Object]"===Object.prototype.toString.call(t)&&!(0,r.lA)(t)?i:{default:function(){return[i]}})),(0,r.Wm)("div",{class:"with-load-more-footer"},[this.error&&(0,r.Wm)("button",{onClick:this.fetchEntries,class:"button-unstyled -link -fullwidth alert error"},[this.$t("general.generic_error")]),!this.error&&this.loading&&(0,r.Wm)(u.GN,{spin:!0,icon:"circle-notch"},null),!this.error&&!this.loading&&!this.bottomedOut&&(0,r.Wm)("a",{onClick:this.fetchEntries,role:"button",tabindex:"0"},[this.$t("general.more")])])])}}}}},8312:e=>{var t={ja:"ja_pedantic"};e.exports={languages:["ar","ca","cs","de","eo","en","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nan-TW","nb","nl","oc","pl","pt","ro","ru","sk","te","uk","zh","zh_Hant"],langCodeToJsonName:function(e){return t[e]||e},langCodeToCldrName:function(e){return e},ensureFinalFallback:function(e){var t=Array.isArray(e)?e:[e];return t.includes("en")?t:t.concat(["en"])}}},72617:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var o=n(84506),r=n(15861),i=n(18446),s=n.n(i),a=n(64687),u=n.n(a),c=n(8312);function l(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var p,m=function(e){return n(27650)("./".concat((0,c.langCodeToJsonName)(e),".json"))};const h={languages:c.languages,default:{en:n(88797).default},setLanguage:(p=(0,r.Z)(u().mark((function e(t,n){var r,i,a,d,p,h,f,g;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((r=(Array.isArray(n)?n:[n]).filter((function(e){return e}))).includes("en")||r.push("en"),i=(0,o.Z)(r),a=i[0],d=i.slice(1),a!==t.locale||!s()(d,t.fallbackLocale)){e.next=5;break}return e.abrupt("return");case 5:p=l(r),e.prev=6,p.s();case 8:if((h=p.n()).done){e.next=17;break}if(u=f=h.value,!c.languages.includes(u)){e.next=15;break}return e.next=13,m(f);case 13:g=e.sent,t.setLocaleMessage(f,g.default);case 15:e.next=8;break;case 17:e.next=22;break;case 19:e.prev=19,e.t0=e.catch(6),p.e(e.t0);case 22:return e.prev=22,p.f(),e.finish(22);case 25:t.fallbackLocale=d,t.locale=a;case 27:case"end":return e.stop()}var u}),e,null,[[6,19,22,25]])}))),function(e,t){return p.apply(this,arguments)})}},35930:(e,t,n)=>{"use strict";var o=n(15861),r=n(64687),i=n.n(r),s=n(989),a=(n(67810),n(73152));try{new EventTarget}catch(e){window.EventTarget=a.Z}const u={state:{settingsModalState:"hidden",settingsModalLoadedUser:!1,settingsModalLoadedAdmin:!1,settingsModalTargetTab:null,settingsModalMode:"user",settings:{currentSaveStateNotice:null,noticeClearTimeout:null,notificationPermission:null},browserSupport:{cssFilter:window.CSS&&window.CSS.supports&&(window.CSS.supports("filter","drop-shadow(0 0)")||window.CSS.supports("-webkit-filter","drop-shadow(0 0)"))},layoutType:"normal",globalNotices:[],layoutHeight:0,lastTimeline:null},mutations:{settingsSaved:function(e,t){var n=t.success,o=t.error;n?(e.noticeClearTimeout&&clearTimeout(e.noticeClearTimeout),e.settings.currentSaveStateNotice={error:!1,data:n},e.settings.noticeClearTimeout=setTimeout((function(){return delete e.settings.currentSaveStateNotice}),2e3)):e.settings.currentSaveStateNotice={error:!0,errorData:o}},setNotificationPermission:function(e,t){e.notificationPermission=t},setLayoutType:function(e,t){e.layoutType=t},closeSettingsModal:function(e){e.settingsModalState="hidden"},togglePeekSettingsModal:function(e){switch(e.settingsModalState){case"minimized":return void(e.settingsModalState="visible");case"visible":return void(e.settingsModalState="minimized");default:throw new Error("Illegal minimization state of settings modal")}},openSettingsModal:function(e,t){e.settingsModalMode=t,e.settingsModalState="visible","user"===t?e.settingsModalLoadedUser||(e.settingsModalLoadedUser=!0):"admin"===t&&(e.settingsModalLoadedAdmin||(e.settingsModalLoadedAdmin=!0))},setSettingsModalTargetTab:function(e,t){e.settingsModalTargetTab=t},pushGlobalNotice:function(e,t){e.globalNotices.push(t)},removeGlobalNotice:function(e,t){e.globalNotices=e.globalNotices.filter((function(e){return e!==t}))},setLayoutHeight:function(e,t){e.layoutHeight=t},setLayoutWidth:function(e,t){e.layoutWidth=t},setLastTimeline:function(e,t){e.lastTimeline=t}},actions:{setPageTitle:function(e){var t=e.rootState,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";document.title="".concat(n," ").concat(t.instance.name)},settingsSaved:function(e,t){var n=e.commit;e.dispatch,n("settingsSaved",{success:t.success,error:t.error})},setNotificationPermission:function(e,t){(0,e.commit)("setNotificationPermission",t)},closeSettingsModal:function(e){(0,e.commit)("closeSettingsModal")},openSettingsModal:function(e){var t=e.commit,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"user";t("openSettingsModal",n)},togglePeekSettingsModal:function(e){(0,e.commit)("togglePeekSettingsModal")},clearSettingsModalTargetTab:function(e){(0,e.commit)("setSettingsModalTargetTab",null)},openSettingsModalTab:function(e,t){var n=e.commit;n("setSettingsModalTargetTab",t),n("openSettingsModal","user")},pushGlobalNotice:function(e,t){var n=e.commit,o=e.dispatch,r=e.state,i=t.messageKey,s=t.messageArgs,a=void 0===s?{}:s,u=t.level,c=void 0===u?"error":u,l=t.timeout,d=void 0===l?0:l;n("pushGlobalNotice",{messageKey:i,messageArgs:a,level:c});var p=r.globalNotices[r.globalNotices.length-1];return d&&setTimeout((function(){return o("removeGlobalNotice",p)}),d),p},removeGlobalNotice:function(e,t){(0,e.commit)("removeGlobalNotice",t)},setLayoutHeight:function(e,t){(0,e.commit)("setLayoutHeight",t)},setLayoutWidth:function(e,t){var n=e.commit,o=e.state,r=e.rootGetters,i=e.rootState,s=t;void 0!==t?n("setLayoutWidth",t):s=o.layoutWidth;var a=s<=800?"mobile":"normal";"none"!==r.mergedConfig.thirdColumnMode&&i.users.currentUser?n("setLayoutType",s>=1300?"wide":a):n("setLayoutType",a)},setLastTimeline:function(e,t){(0,e.commit)("setLastTimeline",t)}}};var c=n(29439),l=n(93433),d=n(4942),p=n(77394),m=n(40454),h=n(77776),f=n(85565),g=n(8312);function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function w(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?v(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var b=["smileys-and-emotion","people-and-body","animals-and-nature","food-and-drink","travel-and-places","activities","objects","symbols","flags"],y=function(){for(var e=127462,t="A".codePointAt(0),n=new Array(26),o=e;o<=127487;++o){var r=String.fromCodePoint(t+o-e);n[o-e]={replacement:String.fromCodePoint(o),imageUrl:!1,displayText:"regional_indicator_"+r,displayTextI18n:{key:"emoji.regional_indicator",args:{letter:r}}}}return n}(),D=function(e){return n(1395)("./".concat((0,g.langCodeToCldrName)(e),".json")).then((function(e){return e.default}))},_=function(e,t){var n=Object.keys(t);return w(w({},e),{},{annotations:n.reduce((function(n,o){return n[o]=t[o][e.replacement],n}),{})})};const k={state:{name:"Pleroma FE",registrationOpen:!0,server:"http://localhost:4040/",textlimit:5e3,themeData:void 0,vapidPublicKey:void 0,alwaysShowSubjectInput:!0,defaultAvatar:"/images/avi.png",defaultBanner:"/images/banner.png",background:"/static/aurora_borealis.jpg",collapseMessageWithSubject:!1,greentext:!1,useAtIcon:!1,mentionLinkDisplay:"short",mentionLinkShowTooltip:!0,mentionLinkShowAvatar:!1,mentionLinkFadeDomain:!0,mentionLinkShowYous:!1,mentionLinkBoldenYou:!0,hideFilteredStatuses:!1,hideMutedPosts:!1,hideMutedThreads:!0,hideWordFilteredPosts:!1,hidePostStats:!1,hideBotIndication:!1,hideSitename:!1,hideUserStats:!1,muteBotStatuses:!1,modalOnRepeat:!1,modalOnUnfollow:!1,modalOnBlock:!0,modalOnMute:!1,modalOnDelete:!0,modalOnLogout:!0,modalOnApproveFollow:!1,modalOnDenyFollow:!1,modalOnRemoveUserFromFollowers:!1,loginMethod:"password",logo:"/static/logo.svg",logoMargin:".2em",logoMask:!0,logoLeft:!1,disableUpdateNotification:!1,minimalScopesMode:!1,nsfwCensorImage:void 0,postContentType:"text/plain",redirectRootLogin:"/main/friends",redirectRootNoLogin:"/main/all",scopeCopy:!0,showFeaturesPanel:!0,showInstanceSpecificPanel:!1,sidebarRight:!1,subjectLineBehavior:"email",theme:"pleroma-dark",virtualScrolling:!0,sensitiveByDefault:!1,conversationDisplay:"linear",conversationTreeAdvanced:!1,conversationOtherRepliesButton:"below",conversationTreeFadeAncestors:!1,maxDepthInThread:6,autocompleteSelect:!1,customEmoji:[],customEmojiFetched:!1,emoji:{},emojiFetched:!1,unicodeEmojiAnnotations:{},pleromaBackend:!0,postFormats:[],restrictedNicknames:[],safeDM:!0,knownDomains:[],birthdayRequired:!1,birthdayMinAge:0,shoutAvailable:!1,pleromaChatMessagesAvailable:!1,pleromaCustomEmojiReactionsAvailable:!1,gopherAvailable:!1,mediaProxyAvailable:!1,suggestionsEnabled:!1,suggestionsWeb:"",quotingAvailable:!1,instanceSpecificPanelContent:"",tos:"",backendVersion:"",frontendVersion:"",pollsAvailable:!1,pollLimits:{max_options:4,max_option_chars:255,min_expiration:60,max_expiration:86400}},mutations:{setInstanceOption:function(e,t){var n=t.name,o=t.value;void 0!==o&&(e[n]=o)},setKnownDomains:function(e,t){e.knownDomains=t},setUnicodeEmojiAnnotations:function(e,t){var n=t.lang,o=t.annotations;e.unicodeEmojiAnnotations[n]=o}},getters:{instanceDefaultConfig:function(e){return f.Oi.map((function(t){return[t,e[t]]})).reduce((function(e,t){var n=(0,c.Z)(t,2),o=n[0],r=n[1];return w(w({},e),{},(0,d.Z)({},o,r))}),{})},groupedCustomEmojis:function(e){return e.customEmoji.reduce((function(e,t){return function(e){var t=e.tags.filter((function(e){return e.startsWith("pack:")})).map((function(e){var t=e.slice(5);return{id:"custom-".concat(t),text:t}}));return t.length?t:[{id:"unpacked"}]}(t).forEach((function(n){var o=n.id,r=n.text;e[o]||(e[o]={id:o,text:r,image:t.imageUrl,emojis:[]}),e[o].emojis.push(t)})),e}),{})},standardEmojiList:function(e){return b.map((function(t){return(e.emoji[t]||[]).map((function(t){return _(t,e.unicodeEmojiAnnotations)}))})).reduce((function(e,t){return e.concat(t)}),[])},standardEmojiGroupList:function(e){return b.map((function(t){return{id:t,emojis:(e.emoji[t]||[]).map((function(t){return _(t,e.unicodeEmojiAnnotations)}))}}))},instanceDomain:function(e){return new URL(e.server).hostname},remoteInteractionLink:function(e){var t=(e.server.endsWith("/")?e.server.slice(0,-1):e.server)+"/main/ostatus";return function(e){var n=e.statusId,o=e.nickname;return n?"".concat(t,"?status_id=").concat(n):"".concat(t,"?nickname=").concat(o)}}},actions:{setInstanceOption:function(e,t){var n=e.commit,o=e.dispatch,r=t.name,i=t.value;switch(n("setInstanceOption",{name:r,value:i}),r){case"name":o("setPageTitle");break;case"shoutAvailable":i&&o("initializeSocket");break;case"theme":o("setTheme",i)}},getStaticEmoji:function(e){return(0,o.Z)(i().mark((function t(){var o,r,s;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=e.commit,t.prev=1,t.next=4,n.e(3687).then(n.t.bind(n,13315,19));case 4:r=t.sent.default,s=Object.keys(r).reduce((function(e,t){return e[t]=r[t].map((function(e){return{displayText:e.slug,imageUrl:!1,replacement:e.emoji}})),e}),{}),o("setInstanceOption",{name:"emoji",value:(i=s,a=void 0,(a=i.symbols).push.apply(a,(0,l.Z)(y)),i)}),t.next=13;break;case 9:t.prev=9,t.t0=t.catch(1),console.warn("Can't load static emoji"),console.warn(t.t0);case 13:case"end":return t.stop()}var i,a}),t,null,[[1,9]])})))()},loadUnicodeEmojiData:function(e,t){var n=e.commit,r=e.state,s=(0,g.ensureFinalFallback)(t);return Promise.all(s.map(function(){var e=(0,o.Z)(i().mark((function e(t){var o;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r.unicodeEmojiAnnotations[t]){e.next=11;break}return e.prev=1,e.next=4,D(t);case 4:o=e.sent,n("setUnicodeEmojiAnnotations",{lang:t,annotations:o}),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(1),console.warn("Error loading unicode emoji annotations for ".concat(t,": "),e.t0);case 11:case"end":return e.stop()}}),e,null,[[1,8]])})));return function(t){return e.apply(this,arguments)}}()))},getCustomEmoji:function(e){return(0,o.Z)(i().mark((function t(){var n,o,r,s,a,u,d,p,m;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,o=e.state,t.prev=1,t.next=4,window.fetch("/api/pleroma/emoji.json");case 4:if(!(r=t.sent).ok){t.next=17;break}return t.next=8,r.json();case 8:s=t.sent,a=Array.isArray(s)?Object.assign.apply(Object,[{}].concat((0,l.Z)(s))):s,u=function(e,t){var n=e.toLowerCase(),o=t.toLowerCase();return n>o?1:n<o?-1:0},d=function(e,t){var n=""===e,o=""===t;return n===o?0:n&&!o?1:-1},p=function(e,t){var n=function(e){return(e.tags.filter((function(e){return e.startsWith("pack:")}))[0]||"").slice(5)},o=n(e),r=n(t);return d(o,r)||u(o,r)||u(e.displayText,t.displayText)},m=Object.entries(a).map((function(e){var t=(0,c.Z)(e,2),n=t[0],r=t[1],i=r.image_url;return{displayText:n,imageUrl:i?o.server+i:r,tags:i?r.tags.sort((function(e,t){return e>t?1:0})):["utf"],replacement:":".concat(n,": ")}})).sort(p),n("setInstanceOption",{name:"customEmoji",value:m}),t.next=18;break;case 17:throw r;case 18:t.next=24;break;case 20:t.prev=20,t.t0=t.catch(1),console.warn("Can't load custom emojis"),console.warn(t.t0);case 24:case"end":return t.stop()}}),t,null,[[1,20]])})))()},setTheme:function(e,t){var n=e.commit,o=e.rootState;n("setInstanceOption",{name:"theme",value:t}),(0,p.I3)(t).then((function(e){if(n("setInstanceOption",{name:"themeData",value:e}),!o.config.customTheme){var t=e.source;!e.theme||t&&t.themeEngineVersion===m.we?(0,p._v)(t):(0,p._v)(e.theme)}}))},fetchEmoji:function(e){var t=e.dispatch,n=e.state;n.customEmojiFetched||(n.customEmojiFetched=!0,t("getCustomEmoji")),n.emojiFetched||(n.emojiFetched=!0,t("getStaticEmoji"))},getKnownDomains:function(e){return(0,o.Z)(i().mark((function t(){var n,o,r;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=e.commit,o=e.rootState,t.prev=1,t.next=4,h.ZP.fetchKnownDomains({credentials:o.users.currentUser.credentials});case 4:r=t.sent,n("setKnownDomains",r),t.next=12;break;case 8:t.prev=8,t.t0=t.catch(1),console.warn("Can't load known domains"),console.warn(t.t0);case 12:case"end":return t.stop()}}),t,null,[[1,8]])})))()}}};var C=n(14176),S=n.n(C),j=n(1469),F=n.n(j),A=n(10928),O=n.n(A),E=n(8804),z=n.n(E),P=n(82492),I=n.n(P),x=n(22762),T=n.n(x),$=n(84753),B=n.n($),U=n(13311),M=n.n(U),L=n(30998),R=n.n(L),q=n(66073),N=n.n(q),Z=n(12571),W=n.n(Z),H=n(82729),V=n.n(H),K=n(52230);function G(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Y(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?G(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):G(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var J=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return{statuses:[],statusesObject:{},faves:[],visibleStatuses:[],visibleStatusesObject:{},newStatusCount:0,maxId:0,minId:0,minVisibleId:0,loading:!1,followers:[],friends:[],userId:e,flushMarker:0}},Q=function(){return{desktopNotificationSilence:!0,maxId:0,minId:Number.POSITIVE_INFINITY,data:[],idStore:{},loading:!1}},X=function(){return{allStatuses:[],allStatusesObject:{},conversationsObject:{},maxId:0,notifications:Q(),favorites:new Set,timelines:{mentions:J(),public:J(),user:J(),favorites:J(),media:J(),publicAndExternal:J(),friends:J(),tag:J(),dms:J(),bookmarks:J(),list:J()}}},ee=function(e,t,n){var o=t[n.id];return o?(I()(o,S()(n,(function(e,t){return null===e||"user"===t}))),o.attachments.splice(o.attachments.length),{item:o,new:!1}):(function(e){e.deleted=!1,e.attachments=e.attachments||[]}(n),e.push(n),t[n.id]=n,{item:n,new:!0})},te=function(e,t){var n=Number(e.id),o=Number(t.id),r=!Number.isNaN(n),i=!Number.isNaN(o);return r&&i?n>o?-1:1:r&&!i?1:!r&&i||e.id>t.id?-1:1},ne=function(e){return e.visibleStatuses=e.visibleStatuses.sort(te),e.statuses=e.statuses.sort(te),e.minVisibleId=(O()(e.visibleStatuses)||{}).id,e},oe=function(e,t){var n=ee(e.allStatuses,e.allStatusesObject,t);if(n.new){var o=n.item,r=e.conversationsObject,i=o.statusnet_conversation_id;r[i]?r[i].push(o):r[i]=[o]}return n},re=function(e,t){e.notifications.maxId=t.id>e.notifications.maxId?t.id:e.notifications.maxId,e.notifications.minId=t.id<e.notifications.minId?t.id:e.notifications.minId},ie={addNewStatuses:function(e,t){var n=t.statuses,o=t.showImmediately,r=void 0!==o&&o,i=t.timeline,s=t.user,a=void 0===s?{}:s,u=t.noIdUpdate,c=void 0!==u&&u,l=t.userId,d=t.pagination,p=void 0===d?{}:d;if(!F()(n))return!1;var m=e.allStatuses,h=e.timelines[i],f=p.maxId||(n.length>0?T()(n,"id").id:0),g=p.minId||(n.length>0?B()(n,"id").id:0),v=i&&(g>h.maxId||0===h.maxId)&&n.length>0,w=i&&(f<h.minId||0===h.minId)&&n.length>0;if(!c&&v&&(h.maxId=g),!c&&w&&(h.minId=f),"user"!==i&&"media"!==i||h.userId===l){var b=function t(n,o){var r,s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],u=oe(e,n),c=u.item;if(u.new){if("status"===c.type&&M()(c.attentions,{id:a.id})){var l=e.timelines.mentions;h!==l&&(ee(l.statuses,l.statusesObject,c),l.newStatusCount+=1,ne(l))}if("direct"===c.visibility){var d=e.timelines.dms;ee(d.statuses,d.statusesObject,c),d.newStatusCount+=1,ne(d)}}return i&&s&&(r=ee(h.statuses,h.statusesObject,c)),i&&o?ee(h.visibleStatuses,h.visibleStatusesObject,c):i&&s&&r.new&&(h.newStatusCount+=1),c.quote&&t(c.quote,!1,!1),c},y={status:function(e){b(e,r)},edit:function(e){b(e,r)},retweet:function(e){var t=b(e.retweeted_status,!1,!1);(i&&M()(h.statuses,(function(e){return e.retweeted_status?e.id===t.id||e.retweeted_status.id===t.id:e.id===t.id}))?b(e,!1,!1):b(e,r)).retweeted_status=t},favorite:function(t){e.favorites.has(t.id)||(e.favorites.add(t.id),function(e,t){var n=M()(m,{id:e.in_reply_to_status_id});n&&(e.user.id===a.id?n.favorited=!0:n.fave_num+=1)}(t))},deletion:function(t){var n=t.uri,o=M()(m,{uri:n});o&&(function(e,t){V()(e.allStatuses,{id:t.id}),V()(e.notifications.data,(function(e){return e.action.id===t.id}));var n=t.statusnet_conversation_id;e.conversationsObject[n]&&V()(e.conversationsObject[n],{id:t.id})}(e,o),i&&(V()(h.statuses,{uri:n}),V()(h.visibleStatuses,{uri:n})))},follow:function(e){},default:function(e){console.log("unknown status type"),console.log(e)}};N()(n,(function(e){var t=e.type;(y[t]||y.default)(e)})),i&&"bookmarks"!==i&&ne(h)}},addNewNotifications:function(e,t){var n=t.dispatch,o=t.notifications,r=(t.older,t.visibleNotificationTypes,t.rootGetters,t.newNotificationSideEffects);N()(o,(function(t){if(!(0,K.nU)(t))return console.error("Invalid notification:",t),void re(e,t);(0,K.Gr)(t.type)&&(t.action=oe(e,t.action).item,t.status=t.status&&oe(e,t.status).item),"pleroma:report"===t.type&&n("addReport",t.report),"pleroma:emoji_reaction"===t.type&&n("fetchEmojiReactionsBy",t.status.id),e.notifications.idStore.hasOwnProperty(t.id)?t.seen&&(e.notifications.idStore[t.id].seen=!0):(re(e,t),e.notifications.data.push(t),e.notifications.idStore[t.id]=t,r(t))}))},removeStatus:function(e,t){var n=t.timeline,o=t.userId,r=e.timelines[n];o&&(V()(r.statuses,{user:{id:o}}),V()(r.visibleStatuses,{user:{id:o}}),r.minVisibleId=r.visibleStatuses.length>0?O()(r.visibleStatuses).id:0,r.maxId=r.statuses.length>0?z()(r.statuses).id:0)},showNewStatuses:function(e,t){var n=t.timeline,o=e.timelines[n];o.newStatusCount=0,o.visibleStatuses=W()(o.statuses,0,50),o.minVisibleId=O()(o.visibleStatuses).id,o.minId=o.minVisibleId,o.visibleStatusesObject={},N()(o.visibleStatuses,(function(e){o.visibleStatusesObject[e.id]=e}))},resetStatuses:function(e){var t=X();Object.entries(t).forEach((function(t){var n=(0,c.Z)(t,2),o=n[0],r=n[1];e[o]=r}))},clearTimeline:function(e,t){var n=t.timeline,o=t.excludeUserId,r=void 0!==o&&o?e.timelines[n].userId:void 0;e.timelines[n]=J(r)},clearNotifications:function(e){e.notifications=Q()},setFavorited:function(e,t){var n=t.status,o=t.value,r=e.allStatusesObject[n.id];r.favorited!==o&&(o?r.fave_num++:r.fave_num--),r.favorited=o},setFavoritedConfirm:function(e,t){var n=t.status,o=t.user,r=e.allStatusesObject[n.id];r.favorited=n.favorited,r.fave_num=n.fave_num;var i=R()(r.favoritedBy,{id:o.id});-1===i||r.favorited?-1===i&&r.favorited&&r.favoritedBy.push(o):r.favoritedBy.splice(i,1)},setMutedStatus:function(e,t){var n=e.allStatusesObject[t.id];n.thread_muted=t.thread_muted,void 0!==n.thread_muted&&e.conversationsObject[n.statusnet_conversation_id].forEach((function(e){e.thread_muted=n.thread_muted}))},setRetweeted:function(e,t){var n=t.status,o=t.value,r=e.allStatusesObject[n.id];r.repeated!==o&&(o?r.repeat_num++:r.repeat_num--),r.repeated=o},setRetweetedConfirm:function(e,t){var n=t.status,o=t.user,r=e.allStatusesObject[n.id];r.repeated=n.repeated,r.repeat_num=n.repeat_num;var i=R()(r.rebloggedBy,{id:o.id});-1===i||r.repeated?-1===i&&r.repeated&&r.rebloggedBy.push(o):r.rebloggedBy.splice(i,1)},setBookmarked:function(e,t){var n=t.status,o=t.value;e.allStatusesObject[n.id].bookmarked=o},setBookmarkedConfirm:function(e,t){var n=t.status;e.allStatusesObject[n.id].bookmarked=n.bookmarked},setDeleted:function(e,t){var n=t.status,o=e.allStatusesObject[n.id];o&&(o.deleted=!0)},setManyDeleted:function(e,t){Object.values(e.allStatusesObject).forEach((function(e){t(e)&&(e.deleted=!0)}))},setLoading:function(e,t){var n=t.timeline,o=t.value;e.timelines[n].loading=o},setNsfw:function(e,t){var n=t.id,o=t.nsfw;e.allStatusesObject[n].nsfw=o},setNotificationsLoading:function(e,t){var n=t.value;e.notifications.loading=n},setNotificationsSilence:function(e,t){var n=t.value;e.notifications.desktopNotificationSilence=n},markNotificationsAsSeen:function(e){N()(e.notifications.data,(function(e){e.seen=!0}))},markSingleNotificationAsSeen:function(e,t){var n=t.id,o=M()(e.notifications.data,(function(e){return e.id===n}));o&&(o.seen=!0)},dismissNotification:function(e,t){var n=t.id;e.notifications.data=e.notifications.data.filter((function(e){return e.id!==n}))},dismissNotifications:function(e,t){var n=t.finder;e.notifications.data=e.notifications.data.filter((function(e){return n}))},updateNotification:function(e,t){var n=t.id,o=t.updater,r=M()(e.notifications.data,(function(e){return e.id===n}));r&&o(r)},queueFlush:function(e,t){var n=t.timeline,o=t.id;e.timelines[n].flushMarker=o},queueFlushAll:function(e){Object.keys(e.timelines).forEach((function(t){e.timelines[t].flushMarker=e.timelines[t].maxId}))},addRepeats:function(e,t){var n=t.id,o=t.rebloggedByUsers,r=t.currentUser,i=e.allStatusesObject[n];i.rebloggedBy=o.filter((function(e){return e})),i.repeat_num=i.rebloggedBy.length,i.repeated=!!i.rebloggedBy.find((function(e){var t=e.id;return r.id===t}))},addFavs:function(e,t){var n=t.id,o=t.favoritedByUsers,r=t.currentUser,i=e.allStatusesObject[n];i.favoritedBy=o.filter((function(e){return e})),i.fave_num=i.favoritedBy.length,i.favorited=!!i.favoritedBy.find((function(e){var t=e.id;return r.id===t}))},addEmojiReactionsBy:function(e,t){var n=t.id,o=t.emojiReactions;t.currentUser,e.allStatusesObject[n].emoji_reactions=o},addOwnReaction:function(e,t){var n=t.id,o=t.emoji,r=t.currentUser,i=e.allStatusesObject[n],s=R()(i.emoji_reactions,{name:o}),a=i.emoji_reactions[s]||{name:o,count:0,accounts:[]},u=Y(Y({},a),{},{count:a.count+1,me:!0,accounts:[].concat((0,l.Z)(a.accounts),[r])});s>=0?i.emoji_reactions[s]=u:i.emoji_reactions=[].concat((0,l.Z)(i.emoji_reactions),[u])},removeOwnReaction:function(e,t){var n=t.id,o=t.emoji,r=t.currentUser,i=e.allStatusesObject[n],s=R()(i.emoji_reactions,{name:o});if(!(s<0)){var a=i.emoji_reactions[s],u=a.accounts||[],c=Y(Y({},a),{},{count:a.count-1,me:!1,accounts:u.filter((function(e){return e.id!==r.id}))});c.count>0?i.emoji_reactions[s]=c:i.emoji_reactions=i.emoji_reactions.filter((function(e){return e.name!==o}))}},updateStatusWithPoll:function(e,t){var n=t.id,o=t.poll;e.allStatusesObject[n].poll=o},setVirtualHeight:function(e,t){var n=t.statusId,o=t.height;e.allStatusesObject[n].virtualHeight=o}},se={state:X(),actions:{addNewStatuses:function(e,t){var n=e.rootState,o=e.commit,r=t.statuses,i=t.showImmediately,s=void 0!==i&&i,a=t.timeline,u=void 0!==a&&a,c=t.noIdUpdate,l=void 0!==c&&c,d=t.userId,p=t.pagination;o("addNewStatuses",{statuses:r,showImmediately:s,timeline:u,noIdUpdate:l,user:n.users.currentUser,userId:d,pagination:p})},addNewNotifications:function(e,t){var n=t.notifications,o=t.older;(0,e.commit)("addNewNotifications",{dispatch:e.dispatch,notifications:n,older:o,rootGetters:e.rootGetters,newNotificationSideEffects:function(t){(0,K.nJ)(e,t)}})},setNotificationsLoading:function(e,t){e.rootState,(0,e.commit)("setNotificationsLoading",{value:t.value})},setNotificationsSilence:function(e,t){e.rootState,(0,e.commit)("setNotificationsSilence",{value:t.value})},fetchStatus:function(e,t){var n=e.rootState,o=e.dispatch;return n.api.backendInteractor.fetchStatus({id:t}).then((function(e){return o("addNewStatuses",{statuses:[e]})}))},fetchStatusSource:function(e,t){var n=e.rootState;return e.dispatch,h.ZP.fetchStatusSource({id:t.id,credentials:n.users.currentUser.credentials})},fetchStatusHistory:function(e,t){return e.rootState,e.dispatch,h.ZP.fetchStatusHistory({status:t})},deleteStatus:function(e,t){var n=e.rootState,o=e.commit,r=e.dispatch;h.ZP.deleteStatus({id:t.id,credentials:n.users.currentUser.credentials}).then((function(e){o("setDeleted",{status:t})})).catch((function(e){r("pushGlobalNotice",{level:"error",messageKey:"status.delete_error",messageArgs:[e.message],timeout:5e3})}))},deleteStatusById:function(e,t){var n=e.rootState;(0,e.commit)("setDeleted",{status:n.statuses.allStatusesObject[t]})},markStatusesAsDeleted:function(e,t){(0,e.commit)("setManyDeleted",t)},favorite:function(e,t){var n=e.rootState,o=e.commit;o("setFavorited",{status:t,value:!0}),n.api.backendInteractor.favorite({id:t.id}).then((function(e){return o("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},unfavorite:function(e,t){var n=e.rootState,o=e.commit;o("setFavorited",{status:t,value:!1}),n.api.backendInteractor.unfavorite({id:t.id}).then((function(e){return o("setFavoritedConfirm",{status:e,user:n.users.currentUser})}))},fetchPinnedStatuses:function(e,t){var n=e.rootState,o=e.dispatch;n.api.backendInteractor.fetchPinnedStatuses({id:t}).then((function(e){return o("addNewStatuses",{statuses:e,timeline:"user",userId:t,showImmediately:!0,noIdUpdate:!0})}))},pinStatus:function(e,t){var n=e.rootState,o=e.dispatch;return n.api.backendInteractor.pinOwnStatus({id:t}).then((function(e){return o("addNewStatuses",{statuses:[e]})}))},unpinStatus:function(e,t){var n=e.rootState,o=e.dispatch;n.api.backendInteractor.unpinOwnStatus({id:t}).then((function(e){return o("addNewStatuses",{statuses:[e]})}))},muteConversation:function(e,t){var n=e.rootState,o=e.commit;return n.api.backendInteractor.muteConversation({id:t}).then((function(e){return o("setMutedStatus",e)}))},unmuteConversation:function(e,t){var n=e.rootState,o=e.commit;return n.api.backendInteractor.unmuteConversation({id:t}).then((function(e){return o("setMutedStatus",e)}))},retweet:function(e,t){var n=e.rootState,o=e.commit;o("setRetweeted",{status:t,value:!0}),n.api.backendInteractor.retweet({id:t.id}).then((function(e){return o("setRetweetedConfirm",{status:e.retweeted_status,user:n.users.currentUser})}))},unretweet:function(e,t){var n=e.rootState,o=e.commit;o("setRetweeted",{status:t,value:!1}),n.api.backendInteractor.unretweet({id:t.id}).then((function(e){return o("setRetweetedConfirm",{status:e,user:n.users.currentUser})}))},bookmark:function(e,t){var n=e.rootState,o=e.commit;o("setBookmarked",{status:t,value:!0}),n.api.backendInteractor.bookmarkStatus({id:t.id}).then((function(e){o("setBookmarkedConfirm",{status:e})}))},unbookmark:function(e,t){var n=e.rootState,o=e.commit;o("setBookmarked",{status:t,value:!1}),n.api.backendInteractor.unbookmarkStatus({id:t.id}).then((function(e){o("setBookmarkedConfirm",{status:e})}))},queueFlush:function(e,t){e.rootState,(0,e.commit)("queueFlush",{timeline:t.timeline,id:t.id})},queueFlushAll:function(e){e.rootState,(0,e.commit)("queueFlushAll")},markNotificationsAsSeen:function(e){var t=e.rootState;(0,e.commit)("markNotificationsAsSeen"),h.ZP.markNotificationsAsSeen({id:t.statuses.notifications.maxId,credentials:t.users.currentUser.credentials})},markSingleNotificationAsSeen:function(e,t){var n=e.rootState,o=e.commit,r=t.id;o("markSingleNotificationAsSeen",{id:r}),h.ZP.markNotificationsAsSeen({single:!0,id:r,credentials:n.users.currentUser.credentials})},dismissNotificationLocal:function(e,t){e.rootState,(0,e.commit)("dismissNotification",{id:t.id})},dismissNotification:function(e,t){var n=e.rootState,o=e.commit,r=t.id;o("dismissNotification",{id:r}),n.api.backendInteractor.dismissNotification({id:r})},updateNotification:function(e,t){e.rootState,(0,e.commit)("updateNotification",{id:t.id,updater:t.updater})},fetchFavsAndRepeats:function(e,t){var n=e.rootState,o=e.commit;Promise.all([n.api.backendInteractor.fetchFavoritedByUsers({id:t}),n.api.backendInteractor.fetchRebloggedByUsers({id:t})]).then((function(e){var r=(0,c.Z)(e,2),i=r[0],s=r[1];o("addFavs",{id:t,favoritedByUsers:i,currentUser:n.users.currentUser}),o("addRepeats",{id:t,rebloggedByUsers:s,currentUser:n.users.currentUser})}))},reactWithEmoji:function(e,t){var n=e.rootState,o=e.dispatch,r=e.commit,i=t.id,s=t.emoji,a=n.users.currentUser;a&&(r("addOwnReaction",{id:i,emoji:s,currentUser:a}),n.api.backendInteractor.reactWithEmoji({id:i,emoji:s}).then((function(e){o("fetchEmojiReactionsBy",i)})))},unreactWithEmoji:function(e,t){var n=e.rootState,o=e.dispatch,r=e.commit,i=t.id,s=t.emoji,a=n.users.currentUser;a&&(r("removeOwnReaction",{id:i,emoji:s,currentUser:a}),n.api.backendInteractor.unreactWithEmoji({id:i,emoji:s}).then((function(e){o("fetchEmojiReactionsBy",i)})))},fetchEmojiReactionsBy:function(e,t){var n=e.rootState,o=e.commit;return n.api.backendInteractor.fetchEmojiReactions({id:t}).then((function(e){o("addEmojiReactionsBy",{id:t,emojiReactions:e,currentUser:n.users.currentUser})}))},fetchFavs:function(e,t){var n=e.rootState,o=e.commit;n.api.backendInteractor.fetchFavoritedByUsers({id:t}).then((function(e){return o("addFavs",{id:t,favoritedByUsers:e,currentUser:n.users.currentUser})}))},fetchRepeats:function(e,t){var n=e.rootState,o=e.commit;n.api.backendInteractor.fetchRebloggedByUsers({id:t}).then((function(e){return o("addRepeats",{id:t,rebloggedByUsers:e,currentUser:n.users.currentUser})}))},search:function(e,t){var n=t.q,o=t.resolve,r=t.limit,i=t.offset,s=t.following,a=t.type;return e.rootState.api.backendInteractor.search2({q:n,resolve:o,limit:r,offset:i,following:s,type:a}).then((function(t){return e.commit("addNewUsers",t.accounts),e.commit("addNewUsers",t.statuses.map((function(e){return e.user})).filter((function(e){return e}))),e.commit("addNewStatuses",{statuses:t.statuses}),t}))},setVirtualHeight:function(e,t){(0,e.commit)("setVirtualHeight",{statusId:t.statusId,height:t.height})}},mutations:ie};const ae=se;var ue={setLists:function(e,t){e.allLists=t},setList:function(e,t){var n=t.listId,o=t.title;e.allListsObject[n]||(e.allListsObject[n]={accountIds:[]}),e.allListsObject[n].title=o;var r=M()(e.allLists,{id:n});r?r.title=o:e.allLists.push({id:n,title:o})},setListAccounts:function(e,t){var n=t.listId,o=t.accountIds;e.allListsObject[n]||(e.allListsObject[n]={accountIds:[]}),e.allListsObject[n].accountIds=o},addListAccount:function(e,t){var n=t.listId,o=t.accountId;e.allListsObject[n]||(e.allListsObject[n]={accountIds:[]}),e.allListsObject[n].accountIds.push(o)},removeListAccount:function(e,t){var n=t.listId,o=t.accountId;e.allListsObject[n]||(e.allListsObject[n]={accountIds:[]});var r=e.allListsObject[n].accountIds,i=new Set(r);i.delete(o),e.allListsObject[n].accountIds=(0,l.Z)(i)},deleteList:function(e,t){var n=t.listId;delete e.allListsObject[n],V()(e.allLists,(function(e){return e.id===n}))}},ce={state:{allLists:[],allListsObject:{}},mutations:ue,actions:{setLists:function(e,t){(0,e.commit)("setLists",t)},createList:function(e,t){var n=e.rootState,o=e.commit,r=t.title;return n.api.backendInteractor.createList({title:r}).then((function(e){return o("setList",{listId:e.id,title:r}),e}))},fetchList:function(e,t){var n=e.rootState,o=e.commit,r=t.listId;return n.api.backendInteractor.getList({listId:r}).then((function(e){return o("setList",{listId:e.id,title:e.title})}))},fetchListAccounts:function(e,t){var n=e.rootState,o=e.commit,r=t.listId;return n.api.backendInteractor.getListAccounts({listId:r}).then((function(e){return o("setListAccounts",{listId:r,accountIds:e})}))},setList:function(e,t){var n=e.rootState,o=e.commit,r=t.listId,i=t.title;n.api.backendInteractor.updateList({listId:r,title:i}),o("setList",{listId:r,title:i})},setListAccounts:function(e,t){var n=e.rootState,o=e.commit,r=t.listId,i=t.accountIds,s=n.lists.allListsObject[r].accountIds||[],a=i.filter((function(e){return!s.includes(e)})),u=s.filter((function(e){return!i.includes(e)}));o("setListAccounts",{listId:r,accountIds:i}),a.length>0&&n.api.backendInteractor.addAccountsToList({listId:r,accountIds:a}),u.length>0&&n.api.backendInteractor.removeAccountsFromList({listId:r,accountIds:u})},addListAccount:function(e,t){var n=e.rootState,o=e.commit,r=t.listId,i=t.accountId;return n.api.backendInteractor.addAccountsToList({listId:r,accountIds:[i]}).then((function(e){return o("addListAccount",{listId:r,accountId:i}),e}))},removeListAccount:function(e,t){var n=e.rootState,o=e.commit,r=t.listId,i=t.accountId;return n.api.backendInteractor.removeAccountsFromList({listId:r,accountIds:[i]}).then((function(e){return o("removeListAccount",{listId:r,accountId:i}),e}))},deleteList:function(e,t){var n=e.rootState,o=e.commit,r=t.listId;n.api.backendInteractor.deleteList({listId:r}),o("deleteList",{listId:r})}},getters:{findListTitle:function(e){return function(t){if(e.allListsObject[t])return e.allListsObject[t].title}},findListAccounts:function(e){return function(t){return(0,l.Z)(e.allListsObject[t].accountIds)}}}};const le=ce;var de=n(71002),pe=n(44908),me=n.n(pe),he=n(57043),fe=n.n(he),ge=n(30236),ve=n.n(ge),we=n(35161),be=n.n(we),ye=n(39693),De=n.n(ye),_e=n(68929),ke=n.n(_e),Ce=n(22626),Se=function(e){var t=e.store,n=e.credentials,o=e.timeline,r=void 0===o?"friends":o,i=e.older,s=void 0!==i&&i,a=e.showImmediately,u=void 0!==a&&a,c=e.userId,l=void 0!==c&&c,d=e.listId,p=void 0!==d&&d,m=e.tag,f=void 0!==m&&m,g=e.until,v=e.since,w={timeline:r,credentials:n},b=t.rootState||t.state,y=t.getters,D=b.statuses.timelines[ke()(r)],_=y.mergedConfig,k=_.hideMutedPosts,C=_.replyVisibility,S=!!b.users.currentUser;s?w.until=g||D.minId:void 0===v?w.since=D.maxId:null!==v&&(w.since=v),w.userId=l,w.listId=p,w.tag=f,w.withMuted=!k,S&&["friends","public","publicAndExternal"].includes(r)&&(w.replyVisibility=C);var j=D.statuses.length;return h.ZP.fetchTimeline(w).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data,o=e.pagination;return!s&&n.length>=20&&!D.loading&&j>0&&t.dispatch("queueFlush",{timeline:r,id:D.maxId}),function(e){var t=e.store,n=e.statuses,o=e.timeline,r=e.showImmediately,i=e.userId,s=e.listId,a=e.pagination,u=ke()(o);t.dispatch("addNewStatuses",{timeline:u,userId:i,listId:s,statuses:n,showImmediately:r,pagination:a})}({store:t,statuses:n,timeline:r,showImmediately:u,userId:l,listId:p,pagination:o}),{statuses:n,pagination:o}})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"timeline.error",messageArgs:[e.message],timeout:5e3})}))},je={fetchAndUpdate:Se,startFetching:function(e){var t=e.timeline,n=void 0===t?"friends":t,o=e.credentials,r=e.store,i=e.userId,s=void 0!==i&&i,a=e.listId,u=void 0!==a&&a,c=e.tag,l=void 0!==c&&c,d=(r.rootState||r.state).statuses.timelines[ke()(n)],p=0===d.visibleStatuses.length;return d.userId=s,d.listId=u,Se({timeline:n,credentials:o,store:r,showImmediately:p,userId:s,listId:u,tag:l}),(0,Ce.F)((function(){return Se({timeline:n,credentials:o,store:r,userId:s,listId:u,tag:l})}),1e4)}};const Fe=je;var Ae=n(15568);const Oe=function(e){var t=e.credentials,n=e.store,o=function(){return function(e){var t=e.store,n=e.credentials;return h.ZP.fetchFollowRequests({credentials:n}).then((function(e){t.commit("setFollowRequests",e),t.commit("addNewUsers",e)}),(function(){})).catch((function(){}))}({credentials:t,store:n})};return o(),(0,Ce.F)(o,1e4)};var Ee={startFetching:function(e){var t=e.credentials,n=e.store,o=function(){return function(e){var t=e.store,n=e.credentials;return h.ZP.fetchLists({credentials:n}).then((function(e){t.commit("setLists",e)}),(function(){})).catch((function(){}))}({credentials:t,store:n})};return o(),(0,Ce.F)(o,24e4)}};const ze=Ee;function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const xe=function(e){return Ie(Ie({startFetchingTimeline:function(t){var n=t.timeline,o=t.store,r=t.userId,i=void 0!==r&&r,s=t.listId,a=void 0!==s&&s,u=t.tag;return Fe.startFetching({timeline:n,store:o,credentials:e,userId:i,listId:a,tag:u})},fetchTimeline:function(t){return Fe.fetchAndUpdate(Ie(Ie({},t),{},{credentials:e}))},startFetchingNotifications:function(t){var n=t.store;return Ae.Z.startFetching({store:n,credentials:e})},fetchNotifications:function(t){return Ae.Z.fetchAndUpdate(Ie(Ie({},t),{},{credentials:e}))},startFetchingFollowRequests:function(t){var n=t.store;return Oe({store:n,credentials:e})},startFetchingLists:function(t){var n=t.store;return ze.startFetching({store:n,credentials:e})},startUserSocket:function(t){var n=t.store.rootState.instance.server.replace("http","ws")+(0,h.pR)({credentials:e,stream:"user"});return(0,h.ro)({url:n,id:"User"})}},Object.entries(h.ZP).reduce((function(t,n){var o=(0,c.Z)(n,2),r=o[0],i=o[1];return Ie(Ie({},t),{},(0,d.Z)({},r,(function(t){return i(Ie({credentials:e},t))})))}),{})),{},{verifyCredentials:h.ZP.verifyCredentials})};var Te=function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth},$e=function(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight},Be=n(54061),Ue=n.n(Be),Me="".concat(window.location.origin,"/oauth-callback"),Le=function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r=e.commit;if(t&&n)return Promise.resolve({clientId:t,clientSecret:n});var i="".concat(o,"/api/v1/apps"),s=new window.FormData;return s.append("client_name","PleromaFE_".concat(window.___pleromafe_commit_hash,"_").concat((new Date).toISOString())),s.append("redirect_uris",Me),s.append("scopes","read write follow push admin"),window.fetch(i,{method:"POST",body:s}).then((function(e){return e.json()})).then((function(e){return{clientId:e.client_id,clientSecret:e.client_secret}})).then((function(e){return r("setClientData",e)||e}))},Re=function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r="".concat(o,"/oauth/token"),i=new window.FormData;return i.append("client_id",t),i.append("client_secret",n),i.append("grant_type","client_credentials"),i.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(r,{method:"POST",body:i}).then((function(e){return e.json()}))},qe={login:function(e){var t=e.instance,n={response_type:"code",client_id:e.clientId,redirect_uri:Me,scope:"read write follow push admin"},o=Ue()(n,(function(e,t,n){var o="".concat(n,"=").concat(encodeURIComponent(t));return e?"".concat(e,"&").concat(o):o}),!1),r="".concat(t,"/oauth/authorize?").concat(o);window.location.href=r},getToken:function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r=e.code,i="".concat(o,"/oauth/token"),s=new window.FormData;return s.append("client_id",t),s.append("client_secret",n),s.append("grant_type","authorization_code"),s.append("code",r),s.append("redirect_uri","".concat(window.location.origin,"/oauth-callback")),window.fetch(i,{method:"POST",body:s}).then((function(e){return e.json()}))},getTokenWithCredentials:function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r=e.username,i=e.password,s="".concat(o,"/oauth/token"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("grant_type","password"),a.append("username",r),a.append("password",i),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},getOrCreateApp:Le,verifyOTPCode:function(e){var t=e.app,n=e.instance,o=e.mfaToken,r=e.code,i="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",o),s.append("code",r),s.append("challenge_type","totp"),window.fetch(i,{method:"POST",body:s}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.app,n=e.instance,o=e.mfaToken,r=e.code,i="".concat(n,"/oauth/mfa/challenge"),s=new window.FormData;return s.append("client_id",t.client_id),s.append("client_secret",t.client_secret),s.append("mfa_token",o),s.append("code",r),s.append("challenge_type","recovery"),window.fetch(i,{method:"POST",body:s}).then((function(e){return e.json()}))},revokeToken:function(e){var t=e.app,n=e.instance,o=e.token,r="".concat(n,"/oauth/revoke"),i=new window.FormData;return i.append("client_id",t.clientId),i.append("client_secret",t.clientSecret),i.append("token",o),window.fetch(r,{method:"POST",body:i}).then((function(e){return e.json()}))}};const Ne=qe;var Ze=n(56012),We=n.n(Ze);function He(){return"serviceWorker"in navigator&&"PushManager"in window}function Ve(){return We().register().catch((function(e){return console.error("Unable to get or create a service worker.",e)}))}function Ke(e){return window.fetch("/api/v1/push/subscription/",{method:"DELETE",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(e)}}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e}))}function Ge(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ye(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ge(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ge(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Je=function e(t,n){if(F()(t)&&F()(n))return t.length=n.length,ve()(t,n,e)},Qe=function(e,t){return e.rootState.api.backendInteractor.blockUser({id:t}).then((function(n){e.commit("updateUserRelationship",[n]),e.commit("addBlockId",t),e.commit("removeStatus",{timeline:"friends",userId:t}),e.commit("removeStatus",{timeline:"public",userId:t}),e.commit("removeStatus",{timeline:"publicAndExternal",userId:t})}))},Xe=function(e,t){return e.rootState.api.backendInteractor.unblockUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},et=function(e,t){var n="object"===(0,de.Z)(t)?t.id:t,o="object"===(0,de.Z)(t)?t.expiresIn:0,r=e.state.relationships[n]||{id:n};return r.muting=!0,e.commit("updateUserRelationship",[r]),e.commit("addMuteId",n),e.rootState.api.backendInteractor.muteUser({id:n,expiresIn:o}).then((function(t){e.commit("updateUserRelationship",[t]),e.commit("addMuteId",n)}))},tt=function(e,t){var n=e.state.relationships[t]||{id:t};return n.muting=!1,e.commit("updateUserRelationship",[n]),e.rootState.api.backendInteractor.unmuteUser({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))},nt=function(e,t){return e.rootState.api.backendInteractor.muteDomain({domain:t}).then((function(){return e.commit("addDomainMute",t)}))},ot=function(e,t){return e.rootState.api.backendInteractor.unmuteDomain({domain:t}).then((function(){return e.commit("removeDomainMute",t)}))},rt={tagUser:function(e,t){var n=t.user.id,o=t.tag,r=e.usersObject[n],i=(r.tags||[]).concat([o]);r.tags=i},untagUser:function(e,t){var n=t.user.id,o=t.tag,r=e.usersObject[n],i=(r.tags||[]).filter((function(e){return e!==o}));r.tags=i},updateRight:function(e,t){var n=t.user.id,o=t.right,r=t.value,i=e.usersObject[n],s=i.rights;s[o]=r,i.rights=s},updateActivationStatus:function(e,t){var n=t.user.id,o=t.deactivated;e.usersObject[n].deactivated=o},setCurrentUser:function(e,t){e.lastLoginName=t.screen_name,e.currentUser=ve()(e.currentUser||{},t,Je)},clearCurrentUser:function(e){e.currentUser=!1,e.lastLoginName=!1},beginLogin:function(e){e.loggingIn=!0},endLogin:function(e){e.loggingIn=!1},saveFriendIds:function(e,t){var n=t.id,o=t.friendIds,r=e.usersObject[n];r.friendIds=me()(fe()(r.friendIds||[],o))},saveFollowerIds:function(e,t){var n=t.id,o=t.followerIds,r=e.usersObject[n];r.followerIds=me()(fe()(r.followerIds||[],o))},clearFriends:function(e,t){var n=e.usersObject[t];n&&(n.friendIds=[])},clearFollowers:function(e,t){var n=e.usersObject[t];n&&(n.followerIds=[])},addNewUsers:function(e,t){N()(t,(function(t){t.relationship&&(e.relationships[t.relationship.id]=t.relationship);var n=function(e,t,n){if(!n)return!1;var o=t[n.id];return o?(ve()(o,n,Je),{item:o,new:!1}):(e.push(n),t[n.id]=n,{item:n,new:!0})}(e.users,e.usersObject,t),o=n.item;n.new&&o.screen_name&&!o.screen_name.includes("@")&&(e.usersByNameObject[o.screen_name.toLowerCase()]=o)}))},updateUserRelationship:function(e,t){t.forEach((function(t){e.relationships[t.id]=t}))},updateUserInLists:function(e,t){var n=t.id,o=t.inLists;e.usersObject[n].inLists=o},saveBlockIds:function(e,t){e.currentUser.blockIds=t},addBlockId:function(e,t){-1===e.currentUser.blockIds.indexOf(t)&&e.currentUser.blockIds.push(t)},setBlockIdsMaxId:function(e,t){e.currentUser.blockIdsMaxId=t},saveMuteIds:function(e,t){e.currentUser.muteIds=t},setMuteIdsMaxId:function(e,t){e.currentUser.muteIdsMaxId=t},addMuteId:function(e,t){-1===e.currentUser.muteIds.indexOf(t)&&e.currentUser.muteIds.push(t)},saveDomainMutes:function(e,t){e.currentUser.domainMutes=t},addDomainMute:function(e,t){-1===e.currentUser.domainMutes.indexOf(t)&&e.currentUser.domainMutes.push(t)},removeDomainMute:function(e,t){var n=e.currentUser.domainMutes.indexOf(t);-1!==n&&e.currentUser.domainMutes.splice(n,1)},setPinnedToUser:function(e,t){var n=e.usersObject[t.user.id];n.pinnedStatusIds=n.pinnedStatusIds||[];var o=n.pinnedStatusIds.indexOf(t.id);t.pinned&&-1===o?n.pinnedStatusIds.push(t.id):t.pinned||-1===o||n.pinnedStatusIds.splice(o,1)},setUserForStatus:function(e,t){t.user=e.usersObject[t.user.id]},setUserForNotification:function(e,t){"follow"!==t.type&&(t.action.user=e.usersObject[t.action.user.id]),t.from_profile=e.usersObject[t.from_profile.id]},setColor:function(e,t){var n=t.user.id,o=t.highlighted;e.usersObject[n].highlight=o},signUpPending:function(e){e.signUpPending=!0,e.signUpErrors=[]},signUpSuccess:function(e){e.signUpPending=!1},signUpFailure:function(e,t){e.signUpPending=!1,e.signUpErrors=t}},it={state:{loggingIn:!1,lastLoginName:!1,currentUser:!1,users:[],usersObject:{},usersByNameObject:{},signUpPending:!1,signUpErrors:[],relationships:{}},mutations:rt,getters:{findUser:function(e){return function(t){return e.usersObject[t]}},findUserByName:function(e){return function(t){return e.usersByNameObject[t.toLowerCase()]}},findUserByUrl:function(e){return function(t){return e.users.find((function(e){return e.statusnet_profile_url&&e.statusnet_profile_url.toLowerCase()===t.toLowerCase()}))}},relationship:function(e){return function(t){return t&&e.relationships[t]||{id:t,loading:!0}}}},actions:{fetchUserIfMissing:function(e,t){e.getters.findUser(t)||e.dispatch("fetchUser",t)},fetchUser:function(e,t){return e.rootState.api.backendInteractor.fetchUser({id:t}).then((function(t){return e.commit("addNewUsers",[t]),t}))},fetchUserByName:function(e,t){return e.rootState.api.backendInteractor.fetchUserByName({name:t}).then((function(t){return e.commit("addNewUsers",[t]),t}))},fetchUserRelationship:function(e,t){e.state.currentUser&&e.rootState.api.backendInteractor.fetchUserRelationship({id:t}).then((function(t){return e.commit("updateUserRelationship",t)}))},fetchUserInLists:function(e,t){e.state.currentUser&&e.rootState.api.backendInteractor.fetchUserInLists({id:t}).then((function(n){return e.commit("updateUserInLists",{id:t,inLists:n})}))},fetchBlocks:function(e,t){var n=(t||{}).reset,o=e.state.currentUser.blockIdsMaxId;return e.rootState.api.backendInteractor.fetchBlocks({maxId:o}).then((function(t){return n?e.commit("saveBlockIds",be()(t,"id")):be()(t,"id").map((function(t){return e.commit("addBlockId",t)})),t.length&&e.commit("setBlockIdsMaxId",O()(t).id),e.commit("addNewUsers",t),t}))},blockUser:function(e,t){return Qe(e,t)},unblockUser:function(e,t){return Xe(e,t)},removeUserFromFollowers:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.removeUserFromFollowers({id:t}).then((function(t){return e.commit("updateUserRelationship",[t])}))}(e,t)},blockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Qe(e,t)})))},unblockUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return Xe(e,t)})))},editUserNote:function(e,t){return function(e,t){var n=t.id,o=t.comment;return e.rootState.api.backendInteractor.editUserNote({id:n,comment:o}).then((function(t){return e.commit("updateUserRelationship",[t])}))}(e,t)},fetchMutes:function(e,t){var n=(t||{}).reset,o=e.state.currentUser.muteIdsMaxId;return e.rootState.api.backendInteractor.fetchMutes({maxId:o}).then((function(t){return n?e.commit("saveMuteIds",be()(t,"id")):be()(t,"id").map((function(t){return e.commit("addMuteId",t)})),t.length&&e.commit("setMuteIdsMaxId",O()(t).id),e.commit("addNewUsers",t),t}))},muteUser:function(e,t){return et(e,t)},unmuteUser:function(e,t){return tt(e,t)},hideReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!1}).then((function(t){e.commit("updateUserRelationship",[t])}))}(e,t)},showReblogs:function(e,t){return function(e,t){return e.rootState.api.backendInteractor.followUser({id:t,reblogs:!0}).then((function(t){return e.commit("updateUserRelationship",[t])}))}(e,t)},muteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return et(e,t)})))},unmuteUsers:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return tt(e,t)})))},fetchDomainMutes:function(e){return e.rootState.api.backendInteractor.fetchDomainMutes().then((function(t){return e.commit("saveDomainMutes",t),t}))},muteDomain:function(e,t){return nt(e,t)},unmuteDomain:function(e,t){return ot(e,t)},muteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return nt(e,t)})))},unmuteDomains:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Promise.all(t.map((function(t){return ot(e,t)})))},fetchFriends:function(e,t){var n=e.rootState,o=e.commit,r=n.users.usersObject[t],i=O()(r.friendIds);return n.api.backendInteractor.fetchFriends({id:t,maxId:i}).then((function(e){return o("addNewUsers",e),o("saveFriendIds",{id:t,friendIds:be()(e,"id")}),e}))},fetchFollowers:function(e,t){var n=e.rootState,o=e.commit,r=n.users.usersObject[t],i=O()(r.followerIds);return n.api.backendInteractor.fetchFollowers({id:t,maxId:i}).then((function(e){return o("addNewUsers",e),o("saveFollowerIds",{id:t,followerIds:be()(e,"id")}),e}))},clearFriends:function(e,t){(0,e.commit)("clearFriends",t)},clearFollowers:function(e,t){(0,e.commit)("clearFollowers",t)},subscribeUser:function(e,t){var n=e.rootState,o=e.commit;return n.api.backendInteractor.subscribeUser({id:t}).then((function(e){return o("updateUserRelationship",[e])}))},unsubscribeUser:function(e,t){var n=e.rootState,o=e.commit;return n.api.backendInteractor.unsubscribeUser({id:t}).then((function(e){return o("updateUserRelationship",[e])}))},toggleActivationStatus:function(e,t){var n=e.rootState,o=e.commit,r=t.user;(r.deactivated?n.api.backendInteractor.activateUser:n.api.backendInteractor.deactivateUser)({user:r}).then((function(e){var t=!e.is_active;o("updateActivationStatus",{user:e,deactivated:t})}))},registerPushNotifications:function(e){var t=e.state.currentUser.credentials,n=e.rootState.instance.vapidPublicKey;!function(e,t,n,o){He()&&Ve().then((function(n){return function(e,t,n){if(!t)return Promise.reject(new Error("Web Push is disabled in config"));if(!n)return Promise.reject(new Error("VAPID public key is not found"));var o,r,i,s={userVisibleOnly:!0,applicationServerKey:(o=n,r=(o+"=".repeat((4-o.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/"),i=window.atob(r),Uint8Array.from((0,l.Z)(i).map((function(e){return e.charCodeAt(0)}))))};return e.pushManager.subscribe(s)}(n,e,t)})).then((function(e){return function(e,t,n){return window.fetch("/api/v1/push/subscription/",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer ".concat(t)},body:JSON.stringify({subscription:e,data:{alerts:{follow:n.follows,favourite:n.likes,mention:n.mentions,reblog:n.repeats,move:n.moves}}})}).then((function(e){if(!e.ok)throw new Error("Bad status code from server.");return e.json()})).then((function(e){if(!e.id)throw new Error("Bad response from server.");return e}))}(e,n,o)})).catch((function(e){return console.warn("Failed to setup Web Push Notifications: ".concat(e.message))}))}(e.rootState.config.webPushNotifications,n,t,e.rootState.config.notificationVisibility)},unregisterPushNotifications:function(e){var t;t=e.state.currentUser.credentials,He()&&Promise.all([Ke(t),Ve().then((function(e){return function(e){return e.pushManager.getSubscription().then((function(e){if(null!==e)return e.unsubscribe()}))}(e).then((function(t){return[e,t]}))})).then((function(e){var t=(0,c.Z)(e,2),n=t[0];return t[1]||console.warn("Push subscription cancellation wasn't successful, killing SW anyway..."),n.unregister().then((function(e){e||console.warn("Failed to kill SW")}))}))]).catch((function(e){return console.warn("Failed to disable Web Push Notifications: ".concat(e.message))}))},addNewUsers:function(e,t){(0,e.commit)("addNewUsers",t)},addNewStatuses:function(e,t){var n=t.statuses,o=be()(n,"user"),r=De()(be()(n,"retweeted_status.user"));e.commit("addNewUsers",o),e.commit("addNewUsers",r),N()(n,(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)})),N()(De()(be()(n,"retweeted_status")),(function(t){e.commit("setUserForStatus",t),e.commit("setPinnedToUser",t)}))},addNewNotifications:function(e,t){var n=t.notifications,o=be()(n,"from_profile"),r=be()(n,"target").filter((function(e){return e})),i=n.map((function(e){return e.id}));e.commit("addNewUsers",o),e.commit("addNewUsers",r);var s=e.rootState.statuses.notifications.idStore,a=Object.entries(s).filter((function(e){var t=(0,c.Z)(e,2),n=t[0];return t[1],i.includes(n)})).map((function(e){var t=(0,c.Z)(e,2);return t[0],t[1]}));N()(a,(function(t){e.commit("setUserForNotification",t)}))},searchUsers:function(e,t){var n=e.rootState,o=e.commit,r=t.query;return n.api.backendInteractor.searchUsers({query:r}).then((function(e){return o("addNewUsers",e),e}))},signUp:function(e,t){return(0,o.Z)(i().mark((function n(){var o,r,s;return i().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.commit("signUpPending"),o=e.rootState,n.prev=2,n.next=5,o.api.backendInteractor.register({params:Ye({},t)});case 5:r=n.sent,e.commit("signUpSuccess"),e.commit("setToken",r.access_token),e.dispatch("loginUser",r.access_token),n.next=16;break;case 11:throw n.prev=11,n.t0=n.catch(2),s=n.t0.message,e.commit("signUpFailure",s),n.t0;case 16:case"end":return n.stop()}}),n,null,[[2,11]])})))()},getCaptcha:function(e){return(0,o.Z)(i().mark((function t(){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",e.rootState.api.backendInteractor.getCaptcha());case 1:case"end":return t.stop()}}),t)})))()},logout:function(e){var t=e.rootState,n=t.oauth,o=t.instance,r=Ye(Ye({},n),{},{commit:e.commit,instance:o.server});return Ne.getOrCreateApp(r).then((function(e){var t={app:e,instance:r.instance,token:n.userToken};return Ne.revokeToken(t)})).then((function(){e.commit("clearCurrentUser"),e.dispatch("disconnectFromSocket"),e.commit("clearToken"),e.dispatch("stopFetchingTimeline","friends"),e.commit("setBackendInteractor",xe(e.getters.getToken())),e.dispatch("stopFetchingNotifications"),e.dispatch("stopFetchingLists"),e.dispatch("stopFetchingFollowRequests"),e.commit("clearNotifications"),e.commit("resetStatuses"),e.dispatch("resetChats"),e.dispatch("setLastTimeline","public-timeline"),e.dispatch("setLayoutWidth",Te()),e.dispatch("setLayoutHeight",$e()),e.commit("clearServerSideStorage")}))},loginUser:function(e,t){return new Promise((function(n,o){var r=e.commit,i=e.dispatch;r("beginLogin"),e.rootState.api.backendInteractor.verifyCredentials(t).then((function(s){if(s.error){var a=s.error;r("endLogin"),[400,401,403,422].includes(a.status)&&r("clearToken"),401===a.status?o(new Error("Wrong username or password")):o(new Error("An error occurred, please try again"))}else{var u=s;u.credentials=t,u.blockIds=[],u.muteIds=[],u.domainMutes=[],r("setCurrentUser",u),r("setServerSideStorage",u),r("addNewUsers",[u]),i("fetchEmoji"),(c=window.Notification,c?"default"===c.permission?c.requestPermission():Promise.resolve(c.permission):Promise.resolve(null)).then((function(e){return r("setNotificationPermission",e)})),r("setBackendInteractor",xe(t)),i("pushServerSideStorage"),u.token&&(i("setWsToken",u.token),i("initializeSocket")),i("startFetchingLists"),u.locked&&i("startFetchingFollowRequests"),e.getters.mergedConfig.useStreamingApi?(i("fetchTimeline",{timeline:"friends",since:null}),i("fetchNotifications",{since:null}),i("enableMastoSockets",!0).catch((function(e){console.error("Failed initializing MastoAPI Streaming socket",e)})).then((function(){i("fetchChats",{latest:!0}),setTimeout((function(){return i("setNotificationsSilence",!1)}),1e4)}))):(i("startFetchingTimeline",{timeline:"friends"}),i("startFetchingNotifications"),i("startFetchingChats")),i("fetchMutes"),i("setLayoutWidth",Te()),i("setLayoutHeight",$e()),e.rootState.api.backendInteractor.fetchFriends({id:u.id}).then((function(e){return r("addNewUsers",e)}))}var c;r("endLogin"),n()})).catch((function(e){console.log(e),r("endLogin"),o(new Error("Failed to connect to server, try again"))}))}))}}};const st=it;var at=n(36459),ut=n(87462),ct=n(44925),lt=n(64689),dt=function(e,t){if(t.lastMessage&&(e.rootState.chats.currentChatId!==t.id||document.hidden)&&e.rootState.users.currentUser.id!==t.lastMessage.account_id){var n={tag:t.lastMessage.id,title:t.account.name,icon:t.account.profile_image_url,body:t.lastMessage.content};t.lastMessage.attachment&&"image"===t.lastMessage.attachment.type&&(n.image=t.lastMessage.attachment.preview_url),(0,lt.w)(e.rootState,n)}},pt=n(61796),mt=["timeline"];function ht(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ft(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ht(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ht(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var gt={state:{retryMultiplier:1,backendInteractor:xe(),fetchers:{},socket:null,mastoUserSocket:null,mastoUserSocketStatus:null,followRequests:[]},getters:{followRequestCount:function(e){return e.followRequests.length}},mutations:{setBackendInteractor:function(e,t){e.backendInteractor=t},addFetcher:function(e,t){var n=t.fetcherName,o=t.fetcher;e.fetchers[n]=o},removeFetcher:function(e,t){var n=t.fetcherName;t.fetcher,e.fetchers[n].stop(),delete e.fetchers[n]},setWsToken:function(e,t){e.wsToken=t},setSocket:function(e,t){e.socket=t},setFollowRequests:function(e,t){e.followRequests=t},setMastoUserSocketStatus:function(e,t){e.mastoUserSocketStatus=t},incrementRetryMultiplier:function(e){e.retryMultiplier=Math.max(++e.retryMultiplier,3)},resetRetryMultiplier:function(e){e.retryMultiplier=1}},actions:{enableMastoSockets:function(e,t){var n=e.state,o=e.dispatch,r=e.commit;if(!n.mastoUserSocket||[WebSocket.CLOSED,WebSocket.CLOSING].includes(n.mastoUserSocket.getState()))return r("setMastoUserSocketStatus",t?h._z.STARTING_INITIAL:h._z.STARTING),o("startMastoUserSocket")},disableMastoSockets:function(e){var t=e.state,n=e.dispatch,o=e.commit;if(t.mastoUserSocket)return o("setMastoUserSocketStatus",h._z.DISABLED),n("stopMastoUserSocket")},startMastoUserSocket:function(e){return new Promise((function(t,n){try{var o=e.state,r=e.commit,i=e.dispatch,s=e.rootState.statuses.timelines.friends;o.mastoUserSocket=o.backendInteractor.startUserSocket({store:e}),o.mastoUserSocket.addEventListener("message",(function(t){var n=t.detail;n&&("notification"===n.event?i("addNewNotifications",{notifications:[n.notification],older:!1}):"update"===n.event?i("addNewStatuses",{statuses:[n.status],userId:!1,showImmediately:0===s.visibleStatuses.length,timeline:"friends"}):"status.update"===n.event?i("addNewStatuses",{statuses:[n.status],userId:!1,showImmediately:n.status.id in s.visibleStatusesObject,timeline:"friends"}):"delete"===n.event?i("deleteStatusById",n.id):"pleroma:chat_update"===n.event&&setTimeout((function(){i("addChatMessages",{chatId:n.chatUpdate.id,messages:[n.chatUpdate.lastMessage]}),i("updateChat",{chat:n.chatUpdate}),dt(e,n.chatUpdate)}),100))})),o.mastoUserSocket.addEventListener("open",(function(){o.mastoUserSocketStatus!==h._z.STARTING_INITIAL&&i("pushGlobalNotice",{level:"success",messageKey:"timeline.socket_reconnected",timeout:5e3}),new Set([h._z.ERROR,h._z.DISABLED]).has(o.mastoUserSocketStatus)&&(i("stopFetchingTimeline",{timeline:"friends"}),i("stopFetchingNotifications"),i("stopFetchingChats")),r("resetRetryMultiplier"),r("setMastoUserSocketStatus",h._z.JOINED)})),o.mastoUserSocket.addEventListener("error",(function(e){var t=e.detail;console.error("Error in MastoAPI websocket:",t),i("clearOpenedChats")})),o.mastoUserSocket.addEventListener("close",(function(e){var t=e.detail,n=new Set([1e3,1001]),s=t.code;n.has(s)?(console.debug("Not restarting socket becasue of closure code ".concat(s," is in ignore list")),r("setMastoUserSocketStatus",h._z.CLOSED)):(console.warn("MastoAPI websocket disconnected, restarting. CloseEvent code: ".concat(s)),setTimeout((function(){i("startMastoUserSocket")}),1e3*o.retryMultiplier),r("incrementRetryMultiplier"),o.mastoUserSocketStatus!==h._z.ERROR&&(i("startFetchingTimeline",{timeline:"friends"}),i("startFetchingNotifications"),i("startFetchingChats"),i("pushGlobalNotice",{level:"error",messageKey:"timeline.socket_broke",messageArgs:[s],timeout:5e3})),r("setMastoUserSocketStatus",h._z.ERROR)),i("clearOpenedChats")})),t()}catch(e){n(e)}}))},stopMastoUserSocket:function(e){var t=e.state,n=e.dispatch;n("startFetchingTimeline",{timeline:"friends"}),n("startFetchingNotifications"),n("startFetchingChats"),t.mastoUserSocket.close()},startFetchingTimeline:function(e,t){var n=t.timeline,o=void 0===n?"friends":n,r=t.tag,i=void 0!==r&&r,s=t.userId,a=void 0!==s&&s,u=t.listId,c=void 0!==u&&u;if(!e.state.fetchers[o]){var l=e.state.backendInteractor.startFetchingTimeline({timeline:o,store:e,userId:a,listId:c,tag:i});e.commit("addFetcher",{fetcherName:o,fetcher:l})}},stopFetchingTimeline:function(e,t){var n=e.state.fetchers[t];n&&e.commit("removeFetcher",{fetcherName:t,fetcher:n})},fetchTimeline:function(e,t){var n=t.timeline,o=(0,ct.Z)(t,mt);e.state.backendInteractor.fetchTimeline(ft({store:e,timeline:n},o))},startFetchingNotifications:function(e){if(!e.state.fetchers.notifications){var t=e.state.backendInteractor.startFetchingNotifications({store:e});e.commit("addFetcher",{fetcherName:"notifications",fetcher:t})}},stopFetchingNotifications:function(e){var t=e.state.fetchers.notifications;t&&e.commit("removeFetcher",{fetcherName:"notifications",fetcher:t})},fetchNotifications:function(e,t){var n=(0,ut.Z)({},((0,at.Z)(t),t));e.state.backendInteractor.fetchNotifications(ft({store:e},n))},startFetchingFollowRequests:function(e){if(!e.state.fetchers.followRequests){var t=e.state.backendInteractor.startFetchingFollowRequests({store:e});e.commit("addFetcher",{fetcherName:"followRequests",fetcher:t})}},stopFetchingFollowRequests:function(e){var t=e.state.fetchers.followRequests;t&&e.commit("removeFetcher",{fetcherName:"followRequests",fetcher:t})},removeFollowRequest:function(e,t){var n=e.state.followRequests.filter((function(e){return e!==t}));e.commit("setFollowRequests",n)},startFetchingLists:function(e){if(!e.state.fetchers.lists){var t=e.state.backendInteractor.startFetchingLists({store:e});e.commit("addFetcher",{fetcherName:"lists",fetcher:t})}},stopFetchingLists:function(e){var t=e.state.fetchers.lists;t&&e.commit("removeFetcher",{fetcherName:"lists",fetcher:t})},setWsToken:function(e,t){e.commit("setWsToken",t)},initializeSocket:function(e){var t=e.dispatch,n=e.commit,o=e.state,r=e.rootState,i=o.wsToken;if(r.instance.shoutAvailable&&void 0!==i&&null===o.socket){var s=new pt.sk("/socket",{params:{token:i}});s.connect(),n("setSocket",s),t("initializeShout",s)}},disconnectFromSocket:function(e){var t=e.commit,n=e.state;n.socket&&n.socket.disconnect(),t("setSocket",null)}}};const vt=gt;var wt=n(36968),bt=n.n(wt),yt=n(27361),Dt=n.n(yt);function _t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}var kt=function(e,t){var n=e.rootState,o=e.commit,r=t.path,i=t.value,s={};return bt()(s,r,i),n.api.backendInteractor.updateProfile({params:s}).then((function(e){o("addNewUsers",[e]),o("setCurrentUser",e)}))},Ct=function(e,t){var n=e.rootState,o=e.commit,r=t.path,i=t.value,s=t.oldValue,a={};return bt()(a,r,i),n.api.backendInteractor.updateNotificationSettings({settings:a}).then((function(e){"success"===e.status?o("confirmProfileOption",{name,value:i}):o("confirmProfileOption",{name,value:s})}))},St={defaultScope:"source.privacy",defaultNSFW:"source.sensitive",stripRichContent:{get:"source.pleroma.no_rich_text",set:"no_rich_text"},locked:"locked",acceptChatMessages:{get:"pleroma.accepts_chat_messages",set:"accepts_chat_messages"},allowFollowingMove:{get:"pleroma.allow_following_move",set:"allow_following_move"},discoverable:{get:"source.pleroma.discoverable",set:"discoverable"},hideFavorites:{get:"pleroma.hide_favorites",set:"hide_favorites"},hideFollowers:{get:"pleroma.hide_followers",set:"hide_followers"},hideFollows:{get:"pleroma.hide_follows",set:"hide_follows"},hideFollowersCount:{get:"pleroma.hide_followers_count",set:"hide_followers_count"},hideFollowsCount:{get:"pleroma.hide_follows_count",set:"hide_follows_count"},webPushHideContents:{get:"pleroma.notification_settings.hide_notification_contents",set:"hide_notification_contents",api:Ct},blockNotificationsFromStrangers:{get:"pleroma.notification_settings.block_from_strangers",set:"block_from_strangers",api:Ct}},jt={state:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?_t(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_t(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},Object.fromEntries(Object.keys(St).map((function(e){return[e,null]})))),mutations:{confirmProfileOption:function(e,t){var n=t.name,o=t.value;bt()(e,n,o)},wipeProfileOption:function(e,t){var n=t.name;bt()(e,n,null)},wipeAllProfileOptions:function(e){Object.keys(St).forEach((function(t){bt()(e,t,null)}))},setCurrentUser:function(e,t){Object.entries(St).forEach((function(n){var o=(0,c.Z)(n,2),r=o[0],i=o[1],s=i.get,a=void 0===s?i:s;bt()(e,r,Dt()(t._original,a))}))}},actions:{setProfileOption:function(e,t){var n=e.rootState,o=e.state,r=e.commit,i=(e.dispatch,t.name),s=t.value,a=Dt()(o,i),u=St[i];if(!u)throw new Error("Invalid server-side setting");var c=u.set,l=void 0===c?u:c,d=u.api,p=void 0===d?kt:d;r("wipeProfileOption",{name:i}),p({rootState:n,commit:r},{path:l,value:s,oldValue:a}).catch((function(e){console.warn("Error setting server-side option:",e),r("confirmProfileOption",{name:i,value:a})}))},logout:function(e){(0,e.commit)("wipeAllProfileOptions")}}};const Ft=jt;var At=n(87185),Ot=n.n(At),Et=n(69579),zt=n.n(Et),Pt=n(7436),It=n.n(Pt),xt=n(7739),Tt=n.n(xt),$t=n(85564),Bt=n.n($t),Ut=n(74691),Mt=n.n(Ut),Lt=n(50361),Rt=n.n(Lt),qt=n(18446),Nt=n.n(qt),Zt=n(2262),Wt=n(48328),Ht=n(9382),Vt=(n(31934),n(95326),n(43011),n(68789),n(84131));Ht.vI.add(Vt.NBC),Wt.Z;var Kt=["_journal"],Gt=["_timestamp","_version"],Yt=["_timestamp","_version"];function Jt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Qt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Jt(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Jt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Xt=new Date("2022-08-04"),en=1001,tn={dirty:!1,flagStorage:{updateCounter:0,reset:0},prefsStorage:{_journal:[],simple:{dontShowUpdateNotifs:!1,collapseNav:!1},collections:{pinnedNavItems:["home","dms","chats"]}},raw:null,cache:null},nn=Qt(Qt({},tn.flagStorage),{},{updateCounter:1}),on=function(e,t,n){var o=e.indexOf(t),r=o+n,i=(0,l.Z)(e);return i.splice(o,1),i.splice(Mt()(r,0,i.length+1),0,t),i},rn=function(e,t){return Qt(Qt({},e),{},{_user:t,_timestamp:Date.now(),_version:1})},sn=function(e){return e._timestamp>0&&e._version>0},an=function(e){e.prefsStorage=e.prefsStorage||{simple:{},collections:{}},Object.entries(tn.prefsStorage.simple).forEach((function(t){var n=(0,c.Z)(t,2),o=n[0],r=n[1];"number"!=typeof r&&"boolean"!=typeof r&&(console.warn("Preference simple.".concat(o," as invalid type, reinitializing")),bt()(e.prefsStorage.simple,o,tn.prefsStorage.simple[o]))})),Object.entries(tn.prefsStorage.collections).forEach((function(t){var n=(0,c.Z)(t,2),o=n[0],r=n[1];Array.isArray(r)||(console.warn("Preference collections.".concat(o," as invalid type, reinitializing")),bt()(e.prefsStorage.collections,o,tn.prefsStorage.collections[o]))}))},un=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var o=Bt()(t.map((function(e){return Array.isArray(e)?e:[]}))).filter((function(e){return Object.prototype.hasOwnProperty.call(e,"path")&&Object.prototype.hasOwnProperty.call(e,"operation")&&Object.prototype.hasOwnProperty.call(e,"args")&&Object.prototype.hasOwnProperty.call(e,"timestamp")})),r=Tt()(o,"path"),i=Object.entries(r).map((function(e){var t=(0,c.Z)(e,2),n=t[0],o=t[1];if(o.sort((function(e,t){return e.timestamp>t.timestamp?1:-1})),n.startsWith("collections")){var r,i=It()(o,(function(e){return"removeFromCollection"===e.operation}));return r=i>0?o.slice(i):o,Ot()(r,(function(e,t){return e.path===t.path&&e.operation===t.operation&&"addToCollection"===e.operation&&e.args[0]===t.args[0]}))}return n.startsWith("simple")?zt()(o):o}));return Bt()(i).sort((function(e,t){return e.timestamp>t.timestamp?1:-1}))},cn={clearServerSideStorage:function(e,t){Qt({},Rt()(tn))},setServerSideStorage:function(e,t){var n=t.storage;e.raw=n;var o=e.cache;o&&o._user!==t.fqn&&(console.warn("cache belongs to another user! reinitializing local cache!"),o=null);var r=function(e,t){var n={recent:null,stale:null,needUpload:!1},o=sn(e||{}),r=sn(t||{});return!r&&o?(n.needUpload=!0,console.debug("Nothing valid stored on server, assuming cache to be source of truth"),n.recent=e,n.stale=t):!o&&r?(console.debug("Valid storage on server found, no local cache found, using live as source of truth"),n.recent=t,n.stale=e):o&&r?(console.debug("Both sources have valid data, figuring things out..."),t._timestamp===e._timestamp&&t._version===e._version?(console.debug("Same version/timestamp on both source, source of truth irrelevant"),n.recent=e,n.stale=t):(console.debug("Different timestamp, figuring out which one is more recent"),t._timestamp<e._timestamp?(n.recent=e,n.stale=t):(n.recent=t,n.stale=e))):(console.debug("Both sources are invalid, start from scratch"),n.needUpload=!0),n}(o=function(e){return e?(e._version<1&&(console.debug("Local cached data has older version, seeing if there any migrations that can be applied"),console.debug("No migrations found")),e._version>1&&(console.debug("Local cached data has newer version, seeing if there any reverse migrations that can be applied"),window._PLEROMA_HOTPATCH&&window._PLEROMA_HOTPATCH.reverseMigrations)?(console.debug("Found hotpatch migration, applying"),window._PLEROMA_HOTPATCH.reverseMigrations.call({},"serverSideStorage",{from:e._version,to:1},e)):e):e}(o),n),i=r.recent,s=r.stale,a=r.needsUpload,u=t.created_at>Xt,d=u?nn:tn.flagStorage,p=!1;if(null===i&&(console.debug("Data is empty, initializing for ".concat(u?"new":"existing"," user")),i=rn({flagStorage:Qt({},d),prefsStorage:Qt({},tn.prefsStorage)})),!a&&i&&s){console.debug("Checking if data needs merging...");var m=i,h=(m._timestamp,m._version,(0,ct.Z)(m,Gt)),f=(s._timestamp,s._version,(0,ct.Z)(s,Yt));p=!Nt()(h,f),console.debug("Data ".concat(p?"needs":"doesn't need"," merging"))}var g,v,w=function(e,t){return Array.from(new Set([].concat((0,l.Z)(Object.keys((0,Zt.IU)((e||{}).flagStorage||{}))),(0,l.Z)(Object.keys((0,Zt.IU)((t||{}).flagStorage||{}))))))}(i,s);p?(console.debug("Merging the data..."),g=function(e,t,n){return t.flagStorage?e.flagStorage?Object.fromEntries(n.map((function(n){var o=e.flagStorage[n],r=t.flagStorage[n];return[n,Number((o>r?o:r)||0)]}))):t.flagStorage:e.flagStorage}(i,s,w),an(i),an(s),v=function(e,t,n){if(!t)return e;if(!e)return t;var o=e._journal,r=(0,ct.Z)(e,Kt),i=t._journal,s=Qt({},r),a=un(i,o);return a.forEach((function(e){var t=e.path,n=(e.timestamp,e.operation),o=(e.command,e.args);if(t.startsWith("_"))console.error("journal contains entry to edit internal (starts with _) field '".concat(t,"', something is incorrect here, ignoring."));else switch(n){case"set":bt()(s,t,o[0]);break;case"addToCollection":bt()(s,t,Array.from(new Set(Dt()(s,t)).add(o[0])));break;case"removeFromCollection":var r=new Set(Dt()(s,t));r.delete(o[0]),bt()(s,t,Array.from(r));break;case"reorderCollection":var i=(0,c.Z)(o,2),a=i[0],u=i[1];bt()(s,t,on(Dt()(s,t),a,u));break;default:console.error("Unknown journal operation: '".concat(n,"', did we forget to run reverse migrations beforehand?"))}})),Qt(Qt({},s),{},{_journal:a})}(i.prefsStorage,s.prefsStorage)):(g=i.flagStorage,v=i.prefsStorage),g=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:tn.flagStorage,n=Qt({},e),o=Object.keys(e);if(e.reset>=1e3&&e.reset<=en){console.debug("Received command to trim the flags");var r=new Set(Object.keys(t));n={},o.forEach((function(t){r.has(t)&&(n[t]=e[t])})),e.reset===en&&(console.debug("Received command to reset the flags"),Object.keys(t).forEach((function(e){n[e]=0})))}else e.reset>0&&e.reset<9e3&&(console.debug("Received command to reset the flags"),o.forEach((function(e){n[e]=0})));return n.reset=0,n}(g),i.flagStorage=Qt(Qt({},d),g),i.prefsStorage=Qt(Qt({},tn.prefsStorage),v),e.dirty=p||a,e.cache=i,s&&i&&!e.dirty&&(e.cache._timestamp=Math.min(s._timestamp,i._timestamp)),e.flagStorage=e.cache.flagStorage,e.prefsStorage=e.cache.prefsStorage},setFlag:function(e,t){var n=t.flag,o=t.value;e.flagStorage[n]=o,e.dirty=!0},setPreference:function(e,t){var n=t.path,o=t.value;n.startsWith("_")?console.error("tried to edit internal (starts with _) field '".concat(n,"', ignoring.")):(bt()(e.prefsStorage,n,o),e.prefsStorage._journal=[].concat((0,l.Z)(e.prefsStorage._journal),[{operation:"set",path:n,args:[o],timestamp:Date.now()}]),e.dirty=!0)},addCollectionPreference:function(e,t){var n=t.path,o=t.value;if(n.startsWith("_"))console.error("tried to edit internal (starts with _) field '".concat(n,"', ignoring."));else{var r=new Set(Dt()(e.prefsStorage,n));r.add(o),bt()(e.prefsStorage,n,(0,l.Z)(r)),e.prefsStorage._journal=[].concat((0,l.Z)(e.prefsStorage._journal),[{operation:"addToCollection",path:n,args:[o],timestamp:Date.now()}]),e.dirty=!0}},removeCollectionPreference:function(e,t){var n=t.path,o=t.value;if(n.startsWith("_"))console.error("tried to edit internal (starts with _) field '".concat(n,"', ignoring."));else{var r=new Set(Dt()(e.prefsStorage,n));r.delete(o),bt()(e.prefsStorage,n,(0,l.Z)(r)),e.prefsStorage._journal=[].concat((0,l.Z)(e.prefsStorage._journal),[{operation:"removeFromCollection",path:n,args:[o],timestamp:Date.now()}]),e.dirty=!0}},reorderCollectionPreference:function(e,t){var n=t.path,o=t.value,r=t.movement;if(n.startsWith("_"))console.error("tried to edit internal (starts with _) field '".concat(n,"', ignoring."));else{var i=Dt()(e.prefsStorage,n),s=on(i,o,r);bt()(e.prefsStorage,n,s),e.prefsStorage._journal=[].concat((0,l.Z)(e.prefsStorage._journal),[{operation:"arrangeCollection",path:n,args:[o],timestamp:Date.now()}]),e.dirty=!0}},updateCache:function(e,t){var n=t.username;e.prefsStorage._journal=un(e.prefsStorage._journal),e.cache=rn({flagStorage:(0,Zt.IU)(e.flagStorage),prefsStorage:(0,Zt.IU)(e.prefsStorage)},n)}};const ln={state:Qt({},Rt()(tn)),mutations:cn,actions:{pushServerSideStorage:function(e){var t=e.state,n=e.rootState,o=e.commit,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=r.force,s=void 0!==i&&i,a=t.dirty||s;if(console.log(a),a){o("updateCache",{username:n.users.currentUser.fqn});var u={pleroma_settings_store:{"pleroma-fe":t.cache}};n.api.backendInteractor.updateProfile({params:u}).then((function(e){o("setServerSideStorage",e),t.dirty=!1}))}}}};var dn=n(84506),pn=n(29521),mn=n.n(pn);function hn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function fn(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?hn(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):hn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var gn={frontends:[],loaded:!1,needsReboot:null,config:null,modifiedPaths:null,descriptions:null,draft:null,dbConfigEnabled:null},vn=(fn({},gn.flagStorage),{state:fn({},Rt()(gn)),mutations:{setInstanceAdminNoDbConfig:function(e){e.loaded=!1,e.dbConfigEnabled=!1},setAvailableFrontends:function(e,t){var n=t.frontends;e.frontends=n.map((function(e){return e.installedRefs=e.installed_refs,"pleroma-fe"===e.name?e.refs=["master","develop"]:e.refs=[e.ref],e}))},updateAdminSettings:function(e,t){var n=t.config,o=t.modifiedPaths;e.loaded=!0,e.dbConfigEnabled=!0,e.config=n,e.modifiedPaths=o},updateAdminDescriptions:function(e,t){var n=t.descriptions;e.descriptions=n},updateAdminDraft:function(e,t){var n=t.path,o=t.value,r=(0,c.Z)(n,3),i=[r[0],r[1],r[2]];bt()(e.draft,n,o),n.length>i.length&&bt()(e.draft,i,Rt()(Dt()(e.draft,i)))},resetAdminDraft:function(e){e.draft=Rt()(e.config)}},actions:{loadFrontendsStuff:function(e){e.state;var t=e.rootState,n=(e.dispatch,e.commit);t.api.backendInteractor.fetchAvailableFrontends().then((function(e){return n("setAvailableFrontends",{frontends:e})}))},loadAdminStuff:function(e){var t=e.state,n=e.rootState,o=e.dispatch,r=e.commit;n.api.backendInteractor.fetchInstanceDBConfig().then((function(e){e.error?400===e.error.status&&e.error.json().then((function(e){/configurable_from_database/.test(e.error)&&r("setInstanceAdminNoDbConfig")})):o("setInstanceAdminSettings",{backendDbConfig:e})})),null===t.descriptions&&n.api.backendInteractor.fetchInstanceConfigDescriptions().then((function(e){return o("setInstanceAdminDescriptions",{backendDescriptions:e})}))},setInstanceAdminSettings:function(e,t){var n=e.state,o=e.commit,r=(e.dispatch,t.backendDbConfig),i=n.config||{},s=new Set;r.configs.forEach((function(e){var t=[e.group,e.key];e.db&&e.db.forEach((function(e){return s.add([].concat(t,[e]).join(" -> "))})),bt()(i,t,function e(t){return Array.isArray(t)&&t.length>0&&t[0].tuple?t.reduce((function(t,n){return fn(fn({},t),{},(0,d.Z)({},n.tuple[0],e(n.tuple[1])))}),{}):t}(e.value))})),console.log(i[":pleroma"]),o("updateAdminSettings",{config:i,modifiedPaths:s}),o("resetAdminDraft")},setInstanceAdminDescriptions:function(e,t){e.state;var n=e.commit,o=(e.dispatch,t.backendDescriptions),r=function e(t,n,o){var r=t.children,i=t.description,s=t.label,a=t.key,u=void 0===a?"<ROOT>":a,c=t.group,l=t.suggestions,d=c?[c,u]:[u],p={description:i,label:s,suggestions:l};Array.isArray(r)&&r.forEach((function(t){e(t,0,p)})),bt()(o,d,p)},i={};o.forEach((function(e){return r(e,0,i)})),console.log(i[":pleroma"]["Pleroma.Captcha"]),n("updateAdminDescriptions",{descriptions:i})},pushAdminDraft:function(e){var t=e.rootState,n=e.state,o=(e.commit,e.dispatch),r=function e(t){return"object"!==(0,de.Z)(t)?t:Array.isArray(t)?t.map(e):Object.entries(t).map((function(e){var t=(0,c.Z)(e,2);return{tuple:[t[0],t[1]]}}))},i=Bt()(Object.entries(n.config).map((function(e){var t=(0,c.Z)(e,2),n=t[0],o=t[1];return Object.keys(o).map((function(e){return{group:n,key:e}}))}))).filter((function(e){var t=e.group,o=e.key;return!Nt()(n.config[t][o],n.draft[t][o])})).map((function(e){var t=e.group,o=e.key,i=n.config[t][o],s=n.draft[t][o],a=Object.entries(i),u=Object.entries(s);return{group:t,key:o,value:r(Object.fromEntries(mn()(u,a,Nt())))}}));t.api.backendInteractor.pushInstanceDBConfig({payload:{configs:i}}).then((function(){return t.api.backendInteractor.fetchInstanceDBConfig()})).then((function(e){return o("setInstanceAdminSettings",{backendDbConfig:e})}))},pushAdminSetting:function(e,t){var n=e.rootState,o=(e.state,e.commit,e.dispatch),r=t.path,i=t.value,s=Array.isArray(r)?r:r.split(/\./g),a=(0,dn.Z)(s),u=a[0],l=a[1],d=a.slice(2),p={};bt()(p,d,i),n.api.backendInteractor.pushInstanceDBConfig({payload:{configs:[{group:u,key:l,value:function e(t){return"object"!==(0,de.Z)(t)?t:Array.isArray(t)?t.map(e):Object.entries(t).map((function(e){var t=(0,c.Z)(e,2);return{tuple:[t[0],t[1]]}}))}(p)}]}}).then((function(){return n.api.backendInteractor.fetchInstanceDBConfig()})).then((function(e){return o("setInstanceAdminSettings",{backendDbConfig:e})}))},resetAdminSetting:function(e,t){var n=e.rootState,o=e.state,r=(e.commit,e.dispatch),i=t.path,s=i.split(/\./g),a=(0,c.Z)(s,3),u=a[0],l=a[1],d=a[2];return o.modifiedPaths.delete(i),n.api.backendInteractor.pushInstanceDBConfig({payload:{configs:[{group:u,key:l,delete:!0,subkeys:[d]}]}}).then((function(){return n.api.backendInteractor.fetchInstanceDBConfig()})).then((function(e){return r("setInstanceAdminSettings",{backendDbConfig:e})}))}}});const wn=vn,bn={state:{messages:[],channel:{state:""},joined:!1},mutations:{setChannel:function(e,t){e.channel=t},addMessage:function(e,t){e.messages.push(t),e.messages=e.messages.slice(-19,20)},setMessages:function(e,t){e.messages=t.slice(-19,20)},setJoined:function(e,t){e.joined=t}},actions:{initializeShout:function(e,t){var n=t.channel("chat:public");n.joinPush.receive("ok",(function(){e.commit("setJoined",!0)})),n.onClose((function(){e.commit("setJoined",!1)})),n.onError((function(){e.commit("setJoined",!1)})),n.on("new_msg",(function(t){e.commit("addMessage",t)})),n.on("messages",(function(t){var n=t.messages;e.commit("setMessages",n)})),n.join(),e.commit("setChannel",n)}}},yn={state:{clientId:!1,clientSecret:!1,appToken:!1,userToken:!1},mutations:{setClientData:function(e,t){var n=t.clientId,o=t.clientSecret;e.clientId=n,e.clientSecret=o},setAppToken:function(e,t){e.appToken=t},setToken:function(e,t){e.userToken=t},clearToken:function(e){e.userToken=!1,delete e.token}},getters:{getToken:function(e){return function(){return e.userToken||e.token||e.appToken}},getUserToken:function(e){return function(){return e.userToken||e.token}}}};var Dn="password",_n="token",kn="totp",Cn="recovery",Sn=function(e){e.strategy=e.initStrategy,e.settings={}};const jn={namespaced:!0,state:{settings:{},strategy:Dn,initStrategy:Dn},getters:{settings:function(e,t){return e.settings},requiredPassword:function(e,t,n){return e.strategy===Dn},requiredToken:function(e,t,n){return e.strategy===_n},requiredTOTP:function(e,t,n){return e.strategy===kn},requiredRecovery:function(e,t,n){return e.strategy===Cn}},mutations:{setInitialStrategy:function(e,t){t&&(e.initStrategy=t,e.strategy=t)},requirePassword:function(e){e.strategy=Dn},requireToken:function(e){e.strategy=_n},requireMFA:function(e,t){var n=t.settings;e.settings=n,e.strategy=kn},requireRecovery:function(e){e.strategy=Cn},requireTOTP:function(e){e.strategy=kn},abortMFA:function(e){Sn(e)}},actions:{login:function(e,t){return(0,o.Z)(i().mark((function n(){var o,r,s,a;return i().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=e.state,r=e.dispatch,s=e.commit,a=t.access_token,s("setToken",a,{root:!0}),n.next=5,r("loginUser",a,{root:!0});case 5:Sn(o);case 6:case"end":return n.stop()}}),n)})))()}}};var Fn=n(58394),An=new Set(["image","video","audio","flash"]),On={state:{media:[],currentIndex:0,activated:!1},mutations:{setMedia:function(e,t){e.media=t},setCurrentMedia:function(e,t){e.activated=!0,e.currentIndex=t},close:function(e){e.activated=!1}},actions:{setMedia:function(e,t){var n=e.commit,o=t.filter((function(e){var t=Fn.ZP.fileType(e.mimetype);return An.has(t)}));n("setMedia",o)},setCurrentMedia:function(e,t){(0,e.commit)("setCurrentMedia",e.state.media.indexOf(t)||0)},closeMediaViewer:function(e){(0,e.commit)("close")}}};const En=On,zn={state:{tokens:[]},actions:{fetchTokens:function(e){var t=e.rootState,n=e.commit;t.api.backendInteractor.fetchOAuthTokens().then((function(e){n("swapTokens",e)}))},revokeToken:function(e,t){var n=e.rootState,o=e.commit,r=e.state;n.api.backendInteractor.revokeOAuthToken({id:t}).then((function(e){201===e.status&&o("swapTokens",r.tokens.filter((function(e){return e.id!==t})))}))}},mutations:{swapTokens:function(e,t){e.tokens=t}}};var Pn=n(63105),In=n.n(Pn),xn={state:{reportModal:{userId:null,statuses:[],preTickedIds:[],activated:!1},reports:{}},mutations:{openUserReportingModal:function(e,t){var n=t.userId,o=t.statuses,r=t.preTickedIds;e.reportModal.userId=n,e.reportModal.statuses=o,e.reportModal.preTickedIds=r,e.reportModal.activated=!0},closeUserReportingModal:function(e){e.reportModal.activated=!1},setReportState:function(e,t){var n=t.id,o=t.state;e.reports[n].state=o},addReport:function(e,t){e.reports[t.id]=t}},actions:{openUserReportingModal:function(e,t){var n=e.rootState,o=e.commit,r=t.userId,i=t.statusIds,s=void 0===i?[]:i,a=s.map((function(e){return n.statuses.allStatusesObject[e]})),u=s,c=a.concat(In()(n.statuses.allStatuses,(function(e){return e.user.id===r&&!u.includes(e.id)})));o("openUserReportingModal",{userId:r,statuses:c,preTickedIds:u})},closeUserReportingModal:function(e){(0,e.commit)("closeUserReportingModal")},setReportState:function(e,t){var n=e.commit,o=e.dispatch,r=e.rootState,i=t.id,s=t.state,a=r.reports.reports[i].state;n("setReportState",{id:i,state:s}),r.api.backendInteractor.setReportState({id:i,state:s}).catch((function(e){console.error("Failed to set report state",e),o("pushGlobalNotice",{level:"error",messageKey:"general.generic_error_message",messageArgs:[e.message],timeout:5e3}),n("setReportState",{id:i,state:a})}))},addReport:function(e,t){(0,e.commit)("addReport",t)}}};const Tn=xn;const $n={state:{trackedPolls:{},pollsObject:{}},mutations:{mergeOrAddPoll:function(e,t){var n=e.pollsObject[t.id];t.expired=Date.now()>Date.parse(t.expires_at),e.pollsObject[t.id]=n?I()(n,t):t},trackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n+1:1},untrackPoll:function(e,t){var n=e.trackedPolls[t];e.trackedPolls[t]=n?n-1:0}},actions:{mergeOrAddPoll:function(e,t){(0,e.commit)("mergeOrAddPoll",t)},updateTrackedPoll:function(e,t){var n=e.rootState,o=e.dispatch,r=e.commit;n.api.backendInteractor.fetchPoll({pollId:t}).then((function(e){setTimeout((function(){n.polls.trackedPolls[t]&&o("updateTrackedPoll",t)}),3e4),r("mergeOrAddPoll",e)}))},trackPoll:function(e,t){var n=e.rootState,o=e.commit,r=e.dispatch;n.polls.trackedPolls[t]||setTimeout((function(){return r("updateTrackedPoll",t)}),3e4),o("trackPoll",t)},untrackPoll:function(e,t){(0,e.commit)("untrackPoll",t)},votePoll:function(e,t){var n=e.rootState,o=e.commit,r=(t.id,t.pollId),i=t.choices;return n.api.backendInteractor.vote({pollId:r,choices:i}).then((function(e){return o("mergeOrAddPoll",e),e}))}}},Bn={state:{params:null,modalActivated:!1},mutations:{openPostStatusModal:function(e,t){e.params=t,e.modalActivated=!0},closePostStatusModal:function(e){e.modalActivated=!1},resetPostStatusModal:function(e){e.params=null}},actions:{openPostStatusModal:function(e,t){(0,e.commit)("openPostStatusModal",t)},closePostStatusModal:function(e){(0,e.commit)("closePostStatusModal")},resetPostStatusModal:function(e){(0,e.commit)("resetPostStatusModal")}}},Un={state:{params:null,modalActivated:!1},mutations:{openEditStatusModal:function(e,t){e.params=t,e.modalActivated=!0},closeEditStatusModal:function(e){e.modalActivated=!1}},actions:{openEditStatusModal:function(e,t){(0,e.commit)("openEditStatusModal",t)},closeEditStatusModal:function(e){(0,e.commit)("closeEditStatusModal")}}},Mn={state:{params:{},modalActivated:!1},mutations:{openStatusHistoryModal:function(e,t){e.params=t,e.modalActivated=!0},closeStatusHistoryModal:function(e){e.modalActivated=!1}},actions:{openStatusHistoryModal:function(e,t){(0,e.commit)("openStatusHistoryModal",t)},closeStatusHistoryModal:function(e){(0,e.commit)("closeStatusHistoryModal")}}};var Ln=n(73303),Rn=n.n(Ln),qn=n(75472),Nn=n.n(qn),Zn=n(73955),Wn=n.n(Zn),Hn=n(89734),Vn=n.n(Hn);function Kn(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Gn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Gn(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function Gn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var Yn={add:function(e,t){var n=t.messages,o=t.updateMaxId,r=void 0===o||o;if(e)for(var i=function(){var t=n[s];if(t.chat_id!==e.chatId)return{v:void 0};if(t.fakeId){var o=e.idIndex[t.fakeId];if(o)return e.idIndex[t.id]&&(delete e.idIndex[t.id],e.messages=e.messages.filter((function(e){return e.id!==t.id}))),Object.assign(o,t,{error:!1}),delete o.fakeId,e.idIndex[o.id]=o,delete e.idIndex[t.fakeId],{v:void 0}}(!e.minId||!t.pending&&t.id<e.minId)&&(e.minId=t.id),(!e.maxId||t.id>e.maxId)&&r&&(e.maxId=t.id),e.idIndex[t.id]||function(e,t){if(t.idempotency_key)return e.idempotencyKeyIndex[t.idempotency_key]}(e,t)||(e.lastSeenMessageId<t.id&&e.newMessageCount++,e.idIndex[t.id]=t,e.messages.push(e.idIndex[t.id]),e.idempotencyKeyIndex[t.idempotency_key]=!0)},s=0;s<n.length;s++){var a=i();if("object"===(0,de.Z)(a))return a.v}},empty:function(e){return{idIndex:{},idempotencyKeyIndex:{},messages:[],newMessageCount:0,lastSeenMessageId:"0",chatId:e,minId:void 0,maxId:void 0}},getView:function(e){if(!e)return[];var t,n=[],o=Nn()(e.messages,["pending","id"],["asc","asc"]),r=o[0],i=o[o.length-1];if(r){var s=new Date(r.created_at);s.setHours(0,0,0,0),n.push({type:"date",date:s,id:s.getTime().toString()})}for(var a=!1,u=0;u<o.length;u++){var c=o[u],l=o[u+1],d=new Date(c.created_at);d.setHours(0,0,0,0),i&&i.date<d&&(n.push({type:"date",date:d,id:d.getTime().toString()}),i.isTail=!0,t=void 0,a=!0);var p={type:"message",data:c,date:d,id:c.id,messageChainId:t};(l&&l.account_id)!==c.account_id&&(p.isTail=!0,t=void 0),((i&&i.data&&i.data.account_id)!==c.account_id||a)&&(t=Wn()(),p.isHead=!0,p.messageChainId=t),n.push(p),i=p,a=!1}return n},deleteMessage:function(e,t){if(e){if(e.messages=e.messages.filter((function(e){return e.id!==t})),delete e.idIndex[t],e.maxId===t){var n=B()(e.messages,"id");e.maxId=n.id}if(e.minId===t){var o=T()(e.messages,"id");e.minId=o.id}}},cullOlderMessages:function(e){var t=e.messages.length,n=t-50;if(!(t<=50)){e.messages=Vn()(e.messages,["id"]),e.minId=e.messages[n].id;var o,r=Kn(e.messages);try{for(r.s();!(o=r.n()).done;){var i=o.value;i.id<e.minId&&(delete e.idIndex[i.id],delete e.idempotencyKeyIndex[i.idempotency_key])}}catch(e){r.e(e)}finally{r.f()}e.messages=e.messages.slice(n,t)}},resetNewMessageCount:function(e){e&&(e.newMessageCount=0,e.lastSeenMessageId=e.maxId)},clear:function(e){var t,n=[],o=Kn(e.messages);try{for(o.s();!(t=o.n()).done;){var r=t.value;r.error?n.push(r.id):(delete e.idIndex[r.id],delete e.idempotencyKeyIndex[r.idempotency_key])}}catch(e){o.e(e)}finally{o.f()}e.messages=e.messages.filter((function(e){return n.includes(e.id)})),e.newMessageCount=0,e.lastSeenMessageId="0",e.minId=void 0,e.maxId=void 0},handleMessageError:function(e,t,n){if(e){var o=e.idIndex[t];if(o&&(o.error=!0,o.pending=!1,!n)){var r=Nn()(e.messages,["pending","id"],["asc","desc"])[0];if(r){var i=o.id;o.id="".concat(r.id,"-").concat((new Date).getTime()),e.idIndex[o.id]=o,delete e.idIndex[i]}}}}};const Jn=Yn;var Qn=n(27742);function Xn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function eo(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Xn(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Xn(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var to={chatList:{data:[],idStore:{}},chatListFetcher:null,openedChats:(0,Zt.qj)({}),openedChatMessageServices:(0,Zt.qj)({}),fetcher:void 0,currentChatId:null,lastReadMessageId:null},no=function(e,t){return M()(e.chatList.data,{id:t})},oo={state:eo({},to),getters:{currentChat:function(e){return e.openedChats[e.currentChatId]},currentChatMessageService:function(e){return e.openedChatMessageServices[e.currentChatId]},findOpenedChatByRecipientId:function(e){return function(t){return M()(e.openedChats,(function(e){return e.account.id===t}))}},sortedChatList:function(e){return Nn()(e.chatList.data,["updated_at"],["desc"])},unreadChatCount:function(e){return Rn()(e.chatList.data,"unread")}},actions:{startFetchingChats:function(e){var t=e.dispatch,n=e.commit,o=function(){return t("fetchChats",{latest:!0})};o(),n("setChatListFetcher",{fetcher:function(){return(0,Ce.F)(o,5e3)}})},stopFetchingChats:function(e){(0,e.commit)("setChatListFetcher",{fetcher:void 0})},fetchChats:function(e){var t=e.dispatch,n=e.rootState;return e.commit,n.api.backendInteractor.chats().then((function(e){var n=e.chats;return t("addNewChats",{chats:n}),n}))},addNewChats:function(e,t){var n=t.chats,o=e.commit,r=e.dispatch,i=e.rootGetters;o("addNewUsers",n.map((function(e){return e.account})).filter((function(e){return e}))),o("addNewChats",{dispatch:r,chats:n,rootGetters:i,newChatMessageSideEffects:function(t){dt(e,t)}})},updateChat:function(e,t){(0,e.commit)("updateChat",{chat:t.chat})},startFetchingCurrentChat:function(e,t){e.commit,(0,e.dispatch)("setCurrentChatFetcher",{fetcher:t.fetcher})},setCurrentChatFetcher:function(e,t){e.rootState,(0,e.commit)("setCurrentChatFetcher",{fetcher:t.fetcher})},addOpenedChat:function(e,t){e.rootState;var n=e.commit,o=e.dispatch,r=t.chat;n("addOpenedChat",{dispatch:o,chat:(0,Qn._J)(r)}),o("addNewUsers",[r.account])},addChatMessages:function(e,t){var n=e.commit;n("addChatMessages",eo({commit:n},t))},resetChatNewMessageCount:function(e,t){(0,e.commit)("resetChatNewMessageCount",t)},clearCurrentChat:function(e,t){e.rootState;var n=e.commit;e.dispatch,n("setCurrentChatId",{chatId:void 0}),n("setCurrentChatFetcher",{fetcher:void 0})},readChat:function(e,t){var n=e.rootState,o=e.commit,r=e.dispatch,i=t.id,s=t.lastReadId,a=n.chats.lastReadMessageId!==s;r("resetChatNewMessageCount"),o("readChat",{id:i,lastReadId:s}),a&&n.api.backendInteractor.readChat({id:i,lastReadId:s})},deleteChatMessage:function(e,t){var n=e.rootState,o=e.commit;n.api.backendInteractor.deleteChatMessage(t),o("deleteChatMessage",eo({commit:o},t))},resetChats:function(e){var t=e.commit;(0,e.dispatch)("clearCurrentChat"),t("resetChats",{commit:t})},clearOpenedChats:function(e){e.rootState;var t=e.commit;e.dispatch,e.rootGetters,t("clearOpenedChats",{commit:t})},handleMessageError:function(e,t){var n=e.commit;n("handleMessageError",eo({commit:n},t))},cullOlderMessages:function(e,t){(0,e.commit)("cullOlderMessages",t)}},mutations:{setChatListFetcher:function(e,t){t.commit;var n=t.fetcher,o=e.chatListFetcher;o&&o.stop(),e.chatListFetcher=n&&n()},setCurrentChatFetcher:function(e,t){var n=t.fetcher,o=e.fetcher;o&&o.stop(),e.fetcher=n&&n()},addOpenedChat:function(e,t){t._dispatch;var n=t.chat;e.currentChatId=n.id,e.openedChats[n.id]=n,e.openedChatMessageServices[n.id]||(e.openedChatMessageServices[n.id]=Jn.empty(n.id))},setCurrentChatId:function(e,t){var n=t.chatId;e.currentChatId=n},addNewChats:function(e,t){var n=t.chats,o=t.newChatMessageSideEffects;n.forEach((function(t){var n=no(e,t.id);if(n){var r=(n.lastMessage&&n.lastMessage.id)!==(t.lastMessage&&t.lastMessage.id);n.lastMessage=t.lastMessage,n.unread=t.unread,n.updated_at=t.updated_at,r&&n.unread&&o(t)}else e.chatList.data.push(t),e.chatList.idStore[t.id]=t}))},updateChat:function(e,t){t._dispatch;var n=t.chat,o=(t._rootGetters,no(e,n.id));o&&(o.lastMessage=n.lastMessage,o.unread=n.unread,o.updated_at=n.updated_at),o||e.chatList.data.unshift(n),e.chatList.idStore[n.id]=n},deleteChat:function(e,t){t._dispatch;var n=t.id;t._rootGetters,e.chats.data=e.chats.data.filter((function(e){return e.last_status.id!==n})),e.chats.idStore=S()(e.chats.idStore,(function(e){return e.last_status.id===n}))},resetChats:function(e,t){var n=t.commit;for(var o in e.chatList={data:[],idStore:{}},e.currentChatId=null,n("setChatListFetcher",{fetcher:void 0}),e.openedChats)Jn.clear(e.openedChatMessageServices[o]),delete e.openedChats[o],delete e.openedChatMessageServices[o]},setChatsLoading:function(e,t){var n=t.value;e.chats.loading=n},addChatMessages:function(e,t){var n=t.chatId,o=t.messages,r=t.updateMaxId,i=e.openedChatMessageServices[n];i&&Jn.add(i,{messages:o.map(Qn.UB),updateMaxId:r})},deleteChatMessage:function(e,t){var n=t.chatId,o=t.messageId,r=e.openedChatMessageServices[n];r&&Jn.deleteMessage(r,o)},resetChatNewMessageCount:function(e,t){var n=e.openedChatMessageServices[e.currentChatId];Jn.resetNewMessageCount(n)},clearOpenedChats:function(e){var t=e.currentChatId;for(var n in e.openedChats)t!==n&&(Jn.clear(e.openedChatMessageServices[n]),delete e.openedChats[n],delete e.openedChatMessageServices[n])},readChat:function(e,t){var n=t.id,o=t.lastReadId;e.lastReadMessageId=o;var r=no(e,n);r&&(r.unread=0)},handleMessageError:function(e,t){var n=t.chatId,o=t.fakeId,r=t.isRetry,i=e.openedChatMessageServices[n];Jn.handleMessageError(i,o,r)},cullOlderMessages:function(e,t){Jn.cullOlderMessages(e.openedChatMessageServices[t])}}};const ro=oo;const io={state:{announcements:[],supportsAnnouncements:!0,fetchAnnouncementsTimer:void 0},mutations:{setAnnouncements:function(e,t){e.announcements=t},setAnnouncementRead:function(e,t){var n=t.id,o=t.read,r=e.announcements.findIndex((function(e){return e.id===n}));r<0||(e.announcements[r].read=o)},setFetchAnnouncementsTimer:function(e,t){e.fetchAnnouncementsTimer=t},setSupportsAnnouncements:function(e,t){e.supportsAnnouncements=t}},getters:{unreadAnnouncementCount:function(e,t,n){return n.users.currentUser?e.announcements.filter((function(e){return!(e.inactive||e.read)})).length:0}},actions:{fetchAnnouncements:function(e){if(!e.state.supportsAnnouncements)return Promise.resolve();var t=e.rootState.users.currentUser,n=t&&t.privileges.includes("announcements_manage_announcements"),r=function(){var t=(0,o.Z)(i().mark((function t(){var o,r,s,a;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n){t.next=2;break}return t.abrupt("return",e.rootState.api.backendInteractor.fetchAnnouncements());case 2:return t.next=4,e.rootState.api.backendInteractor.adminFetchAnnouncements();case 4:return o=t.sent,t.next=7,e.rootState.api.backendInteractor.fetchAnnouncements();case 7:return r=t.sent,s=r.reduce((function(e,t){return e[t.id]=t,e}),{}),a=function(e){return s[e.id]},o.forEach((function(e){var t=a(e);t?e.read=t.read:e.inactive=!0})),t.abrupt("return",o);case 12:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();return r().then((function(t){e.commit("setAnnouncements",t)})).catch((function(t){if(!t||404!==t.statusCode)throw t;e.commit("setSupportsAnnouncements",!1)}))},markAnnouncementAsRead:function(e,t){return e.rootState.api.backendInteractor.dismissAnnouncement({id:t}).then((function(){e.commit("setAnnouncementRead",{id:t,read:!0})}))},startFetchingAnnouncements:function(e){if(!e.state.fetchAnnouncementsTimer){var t=setInterval((function(){return e.dispatch("fetchAnnouncements")}),3e5);return e.commit("setFetchAnnouncementsTimer",t),e.dispatch("fetchAnnouncements")}},stopFetchingAnnouncements:function(e){var t=e.state.fetchAnnouncementsTimer;e.commit("setFetchAnnouncementsTimer",void 0),clearInterval(t)},postAnnouncement:function(e,t){var n=t.content,o=t.startsAt,r=t.endsAt,i=t.allDay;return e.rootState.api.backendInteractor.postAnnouncement({content:n,startsAt:o,endsAt:r,allDay:i}).then((function(){return e.dispatch("fetchAnnouncements")}))},editAnnouncement:function(e,t){var n=t.id,o=t.content,r=t.startsAt,i=t.endsAt,s=t.allDay;return e.rootState.api.backendInteractor.editAnnouncement({id:n,content:o,startsAt:r,endsAt:i,allDay:s}).then((function(){return e.dispatch("fetchAnnouncements")}))},deleteAnnouncement:function(e,t){return e.rootState.api.backendInteractor.deleteAnnouncement({id:t}).then((function(){return e.dispatch("fetchAnnouncements")}))}}};var so=n(90308),ao=n(72378),uo=n.n(ao),co=n(69483),lo=!1,po=function(e,t){return 0===t.length?e:t.reduce((function(t,n){return bt()(t,n,Dt()(e,n)),t}),{})},mo=["markNotificationsAsSeen","clearCurrentUser","setCurrentUser","setServerSideStorage","setHighlight","setOption","setClientData","setToken","clearToken"],ho=n.n(co)();function fo(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.key,n=void 0===t?"vuex-lz":t,o=e.paths,r=void 0===o?[]:o,i=e.getState,s=void 0===i?function(e,t){return t.getItem(e)}:i,a=e.setState,u=void 0===a?function(e,t,n){return lo?n.setItem(e,t):(console.log("waiting for old state to be loaded..."),Promise.resolve())}:a,c=e.reducer,l=void 0===c?po:c,d=e.storage,p=void 0===d?ho:d,m=e.subscriber,h=void 0===m?function(e){return function(t){return e.subscribe(t)}}:m;return s(n,p).then((function(e){return function(t){try{if(null!==e&&"object"===(0,de.Z)(e)){var o=e.users||{};o.usersObject={};var i=o.users||[];N()(i,(function(e){o.usersObject[e.id]=e})),e.users=o,t.replaceState(uo()({},t.state,e))}lo=!0}catch(e){console.log("Couldn't load state"),console.error(e),lo=!0}h(t)((function(e,o){try{mo.includes(e.type)&&u(n,l(Rt()(o),r),p).then((function(n){void 0!==n&&("setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{success:n}))}),(function(n){"setOption"!==e.type&&"setCurrentUser"!==e.type||t.dispatch("settingsSaved",{error:n})}))}catch(e){console.log("Couldn't persist state:"),console.log(e)}}))}}))}const go=function(e){e.subscribe((function(t,n){var o=n.instance.vapidPublicKey,r=n.config.webPushNotifications,i="granted"===n.interface.notificationPermission,s=n.users.currentUser,a="setCurrentUser"===t.type,u="setInstanceOption"===t.type&&"vapidPublicKey"===t.payload.name,c="setNotificationPermission"===t.type&&"granted"===t.payload,l="setOption"===t.type&&"webPushNotifications"===t.payload.name,d="setOption"===t.type&&"notificationVisibility"===t.payload.name;if(a||u||c||l||d){if(s&&o&&i&&r)return e.dispatch("registerPushNotifications");if(l&&!r)return e.dispatch("unregisterPushNotifications")}}))};var vo=n(72617),wo=n(49963),bo=n(28339),yo=n(20425),Do=n.n(yo),_o=n(42570),ko=n(57810),Co=n(66252),So=n(3577),jo=(0,Co._)("div",{id:"app_bg_wrapper",class:"app-bg-wrapper"},null,-1),Fo=(0,Co._)("div",{class:"underlay"},null,-1),Ao=(0,Co._)("div",{id:"notifs-sidebar"},null,-1),Oo={key:0,class:"login-hint panel panel-default"},Eo={class:"user-panel"},zo={key:"user-panel-signed",class:"panel panel-default signed-in"},Po={class:"login panel panel-default"},Io={class:"panel-heading"},xo={class:"panel-body"},To={class:"form-group"},$o={for:"username"},Bo=["disabled","placeholder"],Uo={class:"form-group"},Mo={for:"password"},Lo=["disabled"],Ro={class:"form-group"},qo={key:1,class:"form-group"},No={class:"form-group"},Zo={class:"login-bottom"},Wo=["disabled"],Ho={key:0,class:"form-group"},Vo={class:"alert error"};function Ko(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Go(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ko(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ko(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.NBC);const Yo={data:function(){return{user:{},error:!1}},computed:Go(Go({isPasswordAuth:function(){return this.requiredPassword},isTokenAuth:function(){return this.requiredToken}},(0,s.rn)({registrationOpen:function(e){return e.instance.registrationOpen},instance:function(e){return e.instance},loggingIn:function(e){return e.users.loggingIn},oauth:function(e){return e.oauth}})),(0,s.Se)("authFlow",["requiredPassword","requiredToken","requiredMFA"])),methods:Go(Go(Go({},(0,s.OI)("authFlow",["requireMFA"])),(0,s.nv)({login:"authFlow/login"})),{},{submit:function(){this.isTokenAuth?this.submitToken():this.submitPassword()},submitToken:function(){var e=this.oauth,t={clientId:e.clientId,clientSecret:e.clientSecret,instance:this.instance.server,commit:this.$store.commit};Ne.getOrCreateApp(t).then((function(e){Ne.login(Go(Go({},e),t))}))},submitPassword:function(){var e=this,t={clientId:this.oauth.clientId,oauth:this.oauth,instance:this.instance.server,commit:this.$store.commit};this.error=!1,Ne.getOrCreateApp(t).then((function(n){Ne.getTokenWithCredentials(Go(Go({},n),{},{instance:t.instance,username:e.user.username,password:e.user.password})).then((function(t){t.error?"mfa_required"===t.error?e.requireMFA({settings:t}):"password_reset_required"===t.identifier?e.$router.push({name:"password-reset",params:{passwordResetRequested:!0}}):(e.error=t.error,e.focusOnPasswordInput()):e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}))},clearError:function(){this.error=!1},focusOnPasswordInput:function(){var e=this.$refs.passwordInput;e.focus(),e.setSelectionRange(0,e.value.length)}})};var Jo=n(83744);const Qo=(0,Jo.Z)(Yo,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("router-link"),a=(0,Co.up)("FAIcon");return(0,Co.wg)(),(0,Co.iD)("div",Po,[(0,Co._)("div",Io,(0,So.zw)(e.$t("login.login")),1),(0,Co._)("div",xo,[(0,Co._)("form",{class:"login-form",onSubmit:t[2]||(t[2]=(0,wo.iM)((function(){return e.submit&&e.submit.apply(e,arguments)}),["prevent"]))},[e.isPasswordAuth?((0,Co.wg)(),(0,Co.iD)(Co.HY,{key:0},[(0,Co._)("div",To,[(0,Co._)("label",$o,(0,So.zw)(e.$t("login.username")),1),(0,Co.wy)((0,Co._)("input",{id:"username","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.user.username=t}),disabled:e.loggingIn,class:"form-control",placeholder:e.$t("login.placeholder")},null,8,Bo),[[wo.nr,e.user.username]])]),(0,Co._)("div",Uo,[(0,Co._)("label",Mo,(0,So.zw)(e.$t("login.password")),1),(0,Co.wy)((0,Co._)("input",{id:"password",ref:"passwordInput","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.user.password=t}),disabled:e.loggingIn,class:"form-control",type:"password"},null,8,Lo),[[wo.nr,e.user.password]])]),(0,Co._)("div",Ro,[(0,Co.Wm)(s,{to:{name:"password-reset"}},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("password_reset.forgot_password")),1)]})),_:1})])],64)):(0,Co.kq)("",!0),e.isTokenAuth?((0,Co.wg)(),(0,Co.iD)("div",qo,[(0,Co._)("p",null,(0,So.zw)(e.$t("login.description")),1)])):(0,Co.kq)("",!0),(0,Co._)("div",No,[(0,Co._)("div",Zo,[(0,Co._)("div",null,[e.registrationOpen?((0,Co.wg)(),(0,Co.j4)(s,{key:0,to:{name:"registration"},class:"register"},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("login.register")),1)]})),_:1})):(0,Co.kq)("",!0)]),(0,Co._)("button",{disabled:e.loggingIn,type:"submit",class:"btn button-default"},(0,So.zw)(e.$t("login.login")),9,Wo)])])],32)]),e.error?((0,Co.wg)(),(0,Co.iD)("div",Ho,[(0,Co._)("div",Vo,[(0,Co.Uk)((0,So.zw)(e.error)+" ",1),(0,Co._)("button",{class:"button-unstyled",onClick:t[3]||(t[3]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,Co.Wm)(a,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):(0,Co.kq)("",!0)])}]]);var Xo={class:"login panel panel-default"},er={class:"panel-heading"},tr={class:"panel-body"},nr={class:"form-group"},or={for:"code"},rr={class:"form-group"},ir={class:"login-bottom"},sr=(0,Co._)("br",null,null,-1),ar={type:"submit",class:"btn button-default"},ur={key:0,class:"form-group"},cr={class:"alert error"},lr={verifyOTPCode:function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r=e.mfaToken,i=e.code,s="".concat(o,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",r),a.append("code",i),a.append("challenge_type","totp"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))},verifyRecoveryCode:function(e){var t=e.clientId,n=e.clientSecret,o=e.instance,r=e.mfaToken,i=e.code,s="".concat(o,"/oauth/mfa/challenge"),a=new window.FormData;return a.append("client_id",t),a.append("client_secret",n),a.append("mfa_token",r),a.append("code",i),a.append("challenge_type","recovery"),window.fetch(s,{method:"POST",body:a}).then((function(e){return e.json()}))}};const dr=lr;function pr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function mr(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?pr(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):pr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.NBC);const hr={data:function(){return{code:null,error:!1}},computed:mr(mr({},(0,s.Se)({authSettings:"authFlow/settings"})),(0,s.rn)({instance:"instance",oauth:"oauth"})),methods:mr(mr(mr({},(0,s.OI)("authFlow",["requireTOTP","abortMFA"])),(0,s.nv)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};dr.verifyRecoveryCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})},fr=(0,Jo.Z)(hr,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon");return(0,Co.wg)(),(0,Co.iD)("div",Xo,[(0,Co._)("div",er,(0,So.zw)(e.$t("login.heading.recovery")),1),(0,Co._)("div",tr,[(0,Co._)("form",{class:"login-form",onSubmit:t[3]||(t[3]=(0,wo.iM)((function(){return e.submit&&e.submit.apply(e,arguments)}),["prevent"]))},[(0,Co._)("div",nr,[(0,Co._)("label",or,(0,So.zw)(e.$t("login.recovery_code")),1),(0,Co.wy)((0,Co._)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.code=t}),class:"form-control"},null,512),[[wo.nr,e.code]])]),(0,Co._)("div",rr,[(0,Co._)("div",ir,[(0,Co._)("div",null,[(0,Co._)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=(0,wo.iM)((function(){return e.requireTOTP&&e.requireTOTP.apply(e,arguments)}),["prevent"]))},(0,So.zw)(e.$t("login.enter_two_factor_code")),1),sr,(0,Co._)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=(0,wo.iM)((function(){return e.abortMFA&&e.abortMFA.apply(e,arguments)}),["prevent"]))},(0,So.zw)(e.$t("general.cancel")),1)]),(0,Co._)("button",ar,(0,So.zw)(e.$t("general.verify")),1)])])],32)]),e.error?((0,Co.wg)(),(0,Co.iD)("div",ur,[(0,Co._)("div",cr,[(0,Co.Uk)((0,So.zw)(e.error)+" ",1),(0,Co._)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,Co.Wm)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):(0,Co.kq)("",!0)])}]]);var gr={class:"login panel panel-default"},vr={class:"panel-heading"},wr={class:"panel-body"},br={class:"form-group"},yr={for:"code"},Dr={class:"form-group"},_r={class:"login-bottom"},kr=(0,Co._)("br",null,null,-1),Cr={type:"submit",class:"btn button-default"},Sr={key:0,class:"form-group"},jr={class:"alert error"};function Fr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ar(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Fr(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Fr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.NBC);const Or={data:function(){return{code:null,error:!1}},computed:Ar(Ar({},(0,s.Se)({authSettings:"authFlow/settings"})),(0,s.rn)({instance:"instance",oauth:"oauth"})),methods:Ar(Ar(Ar({},(0,s.OI)("authFlow",["requireRecovery","abortMFA"])),(0,s.nv)({login:"authFlow/login"})),{},{clearError:function(){this.error=!1},submit:function(){var e=this,t=this.oauth,n={clientId:t.clientId,clientSecret:t.clientSecret,instance:this.instance.server,mfaToken:this.authSettings.mfa_token,code:this.code};dr.verifyOTPCode(n).then((function(t){if(t.error)return e.error=t.error,void(e.code=null);e.login(t).then((function(){e.$router.push({name:"friends"})}))}))}})},Er=(0,Jo.Z)(Or,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon");return(0,Co.wg)(),(0,Co.iD)("div",gr,[(0,Co._)("div",vr,(0,So.zw)(e.$t("login.heading.totp")),1),(0,Co._)("div",wr,[(0,Co._)("form",{class:"login-form",onSubmit:t[3]||(t[3]=(0,wo.iM)((function(){return e.submit&&e.submit.apply(e,arguments)}),["prevent"]))},[(0,Co._)("div",br,[(0,Co._)("label",yr,(0,So.zw)(e.$t("login.authentication_code")),1),(0,Co.wy)((0,Co._)("input",{id:"code","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.code=t}),class:"form-control"},null,512),[[wo.nr,e.code]])]),(0,Co._)("div",Dr,[(0,Co._)("div",_r,[(0,Co._)("div",null,[(0,Co._)("button",{class:"button-unstyled -link",type:"button",onClick:t[1]||(t[1]=(0,wo.iM)((function(){return e.requireRecovery&&e.requireRecovery.apply(e,arguments)}),["prevent"]))},(0,So.zw)(e.$t("login.enter_recovery_code")),1),kr,(0,Co._)("button",{class:"button-unstyled -link",type:"button",onClick:t[2]||(t[2]=(0,wo.iM)((function(){return e.abortMFA&&e.abortMFA.apply(e,arguments)}),["prevent"]))},(0,So.zw)(e.$t("general.cancel")),1)]),(0,Co._)("button",Cr,(0,So.zw)(e.$t("general.verify")),1)])])],32)]),e.error?((0,Co.wg)(),(0,Co.iD)("div",Sr,[(0,Co._)("div",jr,[(0,Co.Uk)((0,So.zw)(e.error)+" ",1),(0,Co._)("button",{class:"button-unstyled",onClick:t[4]||(t[4]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,Co.Wm)(s,{size:"lg",class:"fa-scale-110 fa-old-padding",icon:"times"})])])])):(0,Co.kq)("",!0)])}]]);function zr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const Pr={name:"AuthForm",render:function(){return(0,Co.h)((0,Co.up)(this.authForm))},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?zr(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):zr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({authForm:function(){return this.requiredTOTP?"MFATOTPForm":this.requiredRecovery?"MFARecoveryForm":"LoginForm"}},(0,s.Se)("authFlow",["requiredTOTP","requiredRecovery"])),components:{MFARecoveryForm:fr,MFATOTPForm:Er,LoginForm:Qo}};var Ir=n(45333),xr=n(20392);function Tr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const $r={computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Tr(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Tr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({signedIn:function(){return this.user}},(0,s.rn)({user:function(e){return e.users.currentUser}})),components:{AuthForm:Pr,PostStatusForm:Ir.Z,UserCard:xr.Z}},Br=(0,Jo.Z)($r,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("UserCard"),a=(0,Co.up)("PostStatusForm"),u=(0,Co.up)("auth-form");return(0,Co.wg)(),(0,Co.iD)("aside",Eo,[e.signedIn?((0,Co.wg)(),(0,Co.iD)("div",zo,[(0,Co.Wm)(s,{"user-id":e.user.id,"hide-bio":!0,rounded:"top"},null,8,["user-id"]),(0,Co.Wm)(a)])):((0,Co.wg)(),(0,Co.j4)(u,{key:"user-panel"}))])}]]);var Ur={class:"NavPanel"},Mr={class:"panel panel-default"},Lr={key:0,class:"panel-heading nav-panel-heading"},Rr=(0,Co._)("div",{class:"spacer"},null,-1),qr={key:1,class:"panel-body"},Nr={class:"timelines-background"},Zr={class:"timelines"},Wr={class:"timelines-background"},Hr={key:0,class:"icon iconLetter fa-scale-110 menu-icon"},Vr={class:"label"},Kr={key:0,class:"badge badge-notification"},Gr=["title","aria-pressed"],Yr=new Set(["bookmarks","dms","interactions","notifications","chat","chats","user-profile"]),Jr={home:{route:"friends",icon:"home",label:"nav.home_timeline",criteria:["!private"]},public:{route:"public-timeline",anon:!0,icon:"users",label:"nav.public_tl",criteria:["!private"]},twkn:{route:"public-external-timeline",anon:!0,icon:"globe",label:"nav.twkn",criteria:["!private","federating"]},bookmarks:{route:"bookmarks",icon:"bookmark",label:"nav.bookmarks"},favorites:{routeObject:{name:"user-profile",query:{tab:"favorites"}},icon:"star",label:"user_card.favorites"},dms:{route:"dms",icon:"envelope",label:"nav.dms"}},Qr={interactions:{route:"interactions",icon:"bell",label:"nav.interactions"},chats:{route:"chats",icon:"comments",label:"nav.chats",badgeGetter:"unreadChatCount",criteria:["chats"]},friendRequests:{route:"friend-requests",icon:"user-plus",label:"nav.friend_requests",criteria:["lockedUser"],badgeGetter:"followRequestCount"},about:{route:"about",anon:!0,icon:"info-circle",label:"nav.about"},announcements:{route:"announcements",icon:"bullhorn",label:"nav.announcements",badgeGetter:"unreadAnnouncementCount",criteria:["announcements"]}};function Xr(e,t){return e.route||e.routeObject?(n=e.routeObject?e.routeObject:{name:e.anon||t?e.route:e.anonRoute},Yr.has(n.name)&&(n.params={username:t.screen_name,name:t.screen_name}),n):null;var n}const ei={props:["to"]},ti=(0,Jo.Z)(ei,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("router-link");return n.to?((0,Co.wg)(),(0,Co.j4)(s,{key:0,to:n.to,custom:""},{default:(0,Co.w5)((function(t){return[(0,Co.WI)(e.$slots,"default",(0,So.vs)((0,Co.F4)(t)))]})),_:3},8,["to"])):(0,Co.WI)(e.$slots,"default",(0,So.vs)((0,Co.dG)({key:1},{})))}]]);function ni(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}Ht.vI.add(Vt.RP7);const oi={props:["item","showPin"],components:{OptionalRouterLink:ti},methods:{isPinned:function(e){return this.pinnedItems.has(e)},togglePin:function(e){this.isPinned(e)?this.$store.commit("removeCollectionPreference",{path:"collections.pinnedNavItems",value:e}):this.$store.commit("addCollectionPreference",{path:"collections.pinnedNavItems",value:e}),this.$store.dispatch("pushServerSideStorage")}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ni(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ni(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({routeTo:function(){return Xr(this.item,this.currentUser)},getters:function(){return this.$store.getters}},(0,s.rn)({currentUser:function(e){return e.users.currentUser},pinnedItems:function(e){return new Set(e.serverSideStorage.prefsStorage.collections.pinnedNavItems)}}))},ri=(0,Jo.Z)(oi,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon"),a=(0,Co.up)("OptionalRouterLink");return(0,Co.wg)(),(0,Co.j4)(a,{ass:"ass",to:e.routeTo},{default:(0,Co.w5)((function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=n.isActive,r=n.href,i=n.navigate;return[(0,Co._)("li",(0,Co.dG)({class:["NavigationEntry menu-item",{"-active":o}]},e.$attrs),[((0,Co.wg)(),(0,Co.j4)((0,Co.LL)(e.routeTo?"a":"button"),{class:"main-link button-unstyled",href:r,onClick:i},{default:(0,Co.w5)((function(){return[(0,Co._)("span",null,[e.item.icon?((0,Co.wg)(),(0,Co.j4)(s,{key:0,"fixed-width":"",class:"fa-scale-110 menu-icon",icon:e.item.icon},null,8,["icon"])):(0,Co.kq)("",!0)]),e.item.iconLetter?((0,Co.wg)(),(0,Co.iD)("span",Hr,(0,So.zw)(e.item.iconLetter),1)):(0,Co.kq)("",!0),(0,Co._)("span",Vr,(0,So.zw)(e.item.labelRaw||e.$t(e.item.label)),1)]})),_:2},1032,["href","onClick"])),(0,Co.WI)(e.$slots,"default"),e.item.badgeGetter&&e.getters[e.item.badgeGetter]?((0,Co.wg)(),(0,Co.iD)("div",Kr,(0,So.zw)(e.getters[e.item.badgeGetter]),1)):(0,Co.kq)("",!0),e.showPin&&e.currentUser?((0,Co.wg)(),(0,Co.iD)("button",{key:1,type:"button",class:"button-unstyled extra-button",title:e.$t(e.isPinned?"general.unpin":"general.pin"),"aria-pressed":!!e.isPinned,onClick:t[0]||(t[0]=(0,wo.iM)((function(t){return e.togglePin(e.item.name)}),["stop","prevent"]))},[e.showPin&&e.currentUser?((0,Co.wg)(),(0,Co.j4)(s,{key:0,"fixed-width":"",class:(0,So.C_)(["fa-scale-110",{veryfaint:!e.isPinned(e.item.name)}]),transform:e.isPinned(e.item.name)?"":"rotate-45",icon:"thumbtack"},null,8,["class","transform"])):(0,Co.kq)("",!0)],8,Gr)):(0,Co.kq)("",!0)],16)]})),_:3},8,["to"])}]]);var ii=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,n=t.hasChats,o=t.hasAnnouncements,r=t.isFederating,i=t.isPrivate,s=t.currentUser;return e.filter((function(e){var t=e.criteria,a=e.anon,u=e.anonRoute,c=new Set(t||[]);return!(!r&&c.has("federating")||!s&&i&&c.has("!private")||!(s||a||u)||!(s&&s.locked||!c.has("lockedUser"))||!n&&c.has("chats")||!o&&c.has("announcements"))}))},si=function(e){return e.lists.allLists.map((function(e){return{name:"list-"+e.id,routeObject:{name:"lists-timeline",params:{id:e.id}},labelRaw:e.title,iconLetter:e.title[0]}}))};function ai(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}var ui={props:["showPin"],components:{NavigationEntry:ri},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ai(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ai(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},(0,s.rn)({lists:si,currentUser:function(e){return e.users.currentUser},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating}}))};const ci=ui,li=(0,Jo.Z)(ci,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("NavigationEntry");return(0,Co.wg)(),(0,Co.iD)("ul",null,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.lists,(function(t){return(0,Co.wg)(),(0,Co.j4)(s,{key:t.name,"show-pin":e.showPin,item:t},null,8,["show-pin","item"])})),128))])}]]);var di={class:"NavigationPins"},pi={key:1,class:"iconLetter fa-scale-110 fa-old-padding"},mi={key:2,class:"alert-dot"};function hi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function fi(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?hi(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):hi(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.FVb,Vt.g4A,Vt.xVw,Vt.FU$,Vt.lXL,Vt.qmU,Vt.sqG,Vt.aC2,Vt.Zrf);const gi={props:["limit"],methods:{getRouteTo:function(e){return Xr(e,this.currentUser)}},computed:fi(fi({getters:function(){return this.$store.getters}},(0,s.rn)({lists:si,currentUser:function(e){return e.users.currentUser},followRequestCount:function(e){return e.api.followRequests.length},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating},pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable},supportsAnnouncements:function(e){return e.announcements.supportsAnnouncements},pinnedItems:function(e){return new Set(e.serverSideStorage.prefsStorage.collections.pinnedNavItems)}})),{},{pinnedList:function(){var e=this;return this.currentUser?ii([].concat((0,l.Z)(Object.entries(fi({},Jr)).filter((function(t){var n=(0,c.Z)(t,1)[0];return e.pinnedItems.has(n)})).map((function(e){var t=(0,c.Z)(e,2),n=t[0];return fi(fi({},t[1]),{},{name:n})}))),(0,l.Z)(this.lists.filter((function(t){return e.pinnedItems.has(t.name)}))),(0,l.Z)(Object.entries(fi({},Qr)).filter((function(t){var n=(0,c.Z)(t,1)[0];return e.pinnedItems.has(n)})).map((function(e){var t=(0,c.Z)(e,2),n=t[0];return fi(fi({},t[1]),{},{name:n})})))),{hasChats:this.pleromaChatMessagesAvailable,hasAnnouncements:this.supportsAnnouncements,isFederating:this.federating,isPrivate:this.privateMode,currentUser:this.currentUser}).slice(0,this.limit):ii([fi(fi({},Jr.public),{},{name:"public"}),fi(fi({},Jr.twkn),{},{name:"twkn"}),fi(fi({},Qr.about),{},{name:"about"})],{hasChats:this.pleromaChatMessagesAvailable,hasAnnouncements:this.supportsAnnouncements,isFederating:this.federating,isPrivate:this.privateMode,currentUser:this.currentUser})}})},vi=(0,Jo.Z)(gi,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon"),a=(0,Co.up)("router-link");return(0,Co.wg)(),(0,Co.iD)("span",di,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.pinnedList,(function(t){return(0,Co.wg)(),(0,Co.j4)(a,{key:t.name,class:"pinned-item",to:e.getRouteTo(t),title:t.labelRaw||e.$t(t.label)},{default:(0,Co.w5)((function(){return[t.icon?((0,Co.wg)(),(0,Co.j4)(s,{key:0,"fixed-width":"",icon:t.icon},null,8,["icon"])):(0,Co.kq)("",!0),t.iconLetter?((0,Co.wg)(),(0,Co.iD)("span",pi,(0,So.zw)(t.iconLetter),1)):(0,Co.kq)("",!0),t.badgeGetter&&e.getters[t.badgeGetter]?((0,Co.wg)(),(0,Co.iD)("div",mi)):(0,Co.kq)("",!0)]})),_:2},1032,["to","title"])})),128))])}]]);var wi=n(66141);function bi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function yi(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?bi(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):bi(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.FVb,Vt.g4A,Vt.xVw,Vt.FU$,Vt.ptq,Vt.mTx,Vt.lXL,Vt.qmU,Vt.sqG,Vt.aC2,Vt.Zrf,Vt.Acd);const Di={props:["forceExpand","forceEditMode"],created:function(){},components:{ListsMenuContent:li,NavigationEntry:ri,NavigationPins:vi,Checkbox:wi.Z},data:function(){return{editMode:!1,showTimelines:!1,showLists:!1,timelinesList:Object.entries(Jr).map((function(e){var t=(0,c.Z)(e,2),n=t[0];return yi(yi({},t[1]),{},{name:n})})),rootList:Object.entries(Qr).map((function(e){var t=(0,c.Z)(e,2),n=t[0];return yi(yi({},t[1]),{},{name:n})}))}},methods:{toggleTimelines:function(){this.showTimelines=!this.showTimelines},toggleLists:function(){this.showLists=!this.showLists},toggleEditMode:function(){this.editMode=!this.editMode},toggleCollapse:function(){this.$store.commit("setPreference",{path:"simple.collapseNav",value:!this.collapsed}),this.$store.dispatch("pushServerSideStorage")},isPinned:function(e){return this.pinnedItems.has(e)},togglePin:function(e){this.isPinned(e)?this.$store.commit("removeCollectionPreference",{path:"collections.pinnedNavItems",value:e}):this.$store.commit("addCollectionPreference",{path:"collections.pinnedNavItems",value:e}),this.$store.dispatch("pushServerSideStorage")}},computed:yi(yi({},(0,s.rn)({currentUser:function(e){return e.users.currentUser},followRequestCount:function(e){return e.api.followRequests.length},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating},pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable},supportsAnnouncements:function(e){return e.announcements.supportsAnnouncements},pinnedItems:function(e){return new Set(e.serverSideStorage.prefsStorage.collections.pinnedNavItems)},collapsed:function(e){return e.serverSideStorage.prefsStorage.simple.collapseNav}})),{},{timelinesItems:function(){return ii(Object.entries(yi({},Jr)).map((function(e){var t=(0,c.Z)(e,2),n=t[0];return yi(yi({},t[1]),{},{name:n})})),{hasChats:this.pleromaChatMessagesAvailable,hasAnnouncements:this.supportsAnnouncements,isFederating:this.federating,isPrivate:this.privateMode,currentUser:this.currentUser})},rootItems:function(){return ii(Object.entries(yi({},Qr)).map((function(e){var t=(0,c.Z)(e,2),n=t[0];return yi(yi({},t[1]),{},{name:n})})),{hasChats:this.pleromaChatMessagesAvailable,hasAnnouncements:this.supportsAnnouncements,isFederating:this.federating,isPrivate:this.privateMode,currentUser:this.currentUser})}},(0,s.Se)(["unreadChatCount","unreadAnnouncementCount"]))},_i=(0,Jo.Z)(Di,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("NavigationPins"),a=(0,Co.up)("FAIcon"),u=(0,Co.up)("NavigationEntry"),c=(0,Co.up)("router-link"),l=(0,Co.up)("ListsMenuContent");return(0,Co.wg)(),(0,Co.iD)("div",Ur,[(0,Co._)("div",Mr,[e.forceExpand?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("div",Lr,[(0,Co.Wm)(s,{limit:6}),Rr,(0,Co._)("button",{class:"button-unstyled",onClick:t[0]||(t[0]=function(){return e.toggleCollapse&&e.toggleCollapse.apply(e,arguments)})},[(0,Co.Wm)(a,{class:"navigation-chevron","fixed-width":"",icon:e.collapsed?"chevron-down":"chevron-up"},null,8,["icon"])])])),!e.collapsed||e.forceExpand?((0,Co.wg)(),(0,Co.iD)("ul",qr,[e.currentUser||!e.privateMode?((0,Co.wg)(),(0,Co.j4)(u,{key:0,"show-pin":!1,item:{icon:"stream",label:"nav.timelines"},"aria-expanded":e.showTimelines?"true":"false",onClick:e.toggleTimelines},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{class:"timelines-chevron","fixed-width":"",icon:e.showTimelines?"chevron-up":"chevron-down"},null,8,["icon"])]})),_:1},8,["item","aria-expanded","onClick"])):(0,Co.kq)("",!0),(0,Co.wy)((0,Co._)("div",Nr,[(0,Co._)("div",Zr,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.timelinesItems,(function(t){return(0,Co.wg)(),(0,Co.j4)(u,{key:t.name,"show-pin":e.editMode||e.forceEditMode,item:t},null,8,["show-pin","item"])})),128))])],512),[[wo.F8,e.showTimelines]]),e.currentUser?((0,Co.wg)(),(0,Co.j4)(u,{key:1,"show-pin":!1,item:{icon:"list",label:"nav.lists"},"aria-expanded":e.showLists?"true":"false",onClick:e.toggleLists},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(c,{title:e.$t("lists.manage_lists"),class:"extra-button",to:{name:"lists"},onClick:t[1]||(t[1]=(0,wo.iM)((function(){}),["stop"]))},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{class:"extra-button","fixed-width":"",icon:"wrench"})]})),_:1},8,["title"]),(0,Co.Wm)(a,{class:"timelines-chevron","fixed-width":"",icon:e.showLists?"chevron-up":"chevron-down"},null,8,["icon"])]})),_:1},8,["item","aria-expanded","onClick"])):(0,Co.kq)("",!0),(0,Co.wy)((0,Co._)("div",Wr,[(0,Co.Wm)(l,{"show-pin":e.editMode||e.forceEditMode,class:"timelines"},null,8,["show-pin"])],512),[[wo.F8,e.showLists]]),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.rootItems,(function(t){return(0,Co.wg)(),(0,Co.j4)(u,{key:t.name,"show-pin":e.editMode||e.forceEditMode,item:t},null,8,["show-pin","item"])})),128)),!e.forceEditMode&&e.currentUser?((0,Co.wg)(),(0,Co.j4)(u,{key:2,"show-pin":!1,item:{label:e.editMode?e.$t("nav.edit_finish"):e.$t("nav.edit_pinned"),icon:e.editMode?"check":"wrench"},onClick:e.toggleEditMode},null,8,["item","onClick"])):(0,Co.kq)("",!0)])):(0,Co.kq)("",!0)])])}]]);var ki={class:"instance-specific-panel"},Ci={class:"panel panel-default"},Si={class:"panel-body"},ji=["innerHTML"];const Fi={computed:{instanceSpecificPanelContent:function(){return this.$store.state.instance.instanceSpecificPanelContent}}},Ai=(0,Jo.Z)(Fi,[["render",function(e,t,n,o,r,i){return(0,Co.wg)(),(0,Co.iD)("div",ki,[(0,Co._)("div",Ci,[(0,Co._)("div",Si,[(0,Co._)("div",{innerHTML:e.instanceSpecificPanelContent},null,8,ji)])])])}]]);var Oi={class:"features-panel"},Ei={class:"panel panel-default base01-background"},zi={class:"panel-heading timeline-heading base02-background base04"},Pi={class:"title"},Ii={class:"panel-body features-panel"},xi={key:0},Ti={key:1},$i={key:2},Bi={key:3},Ui={key:4},Mi=n(65079);const Li={computed:{shout:function(){return this.$store.state.instance.shoutAvailable},pleromaChatMessages:function(){return this.$store.state.instance.pleromaChatMessagesAvailable},gopher:function(){return this.$store.state.instance.gopherAvailable},whoToFollow:function(){return this.$store.state.instance.suggestionsEnabled},mediaProxy:function(){return this.$store.state.instance.mediaProxyAvailable},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},textlimit:function(){return this.$store.state.instance.textlimit},uploadlimit:function(){return Mi.Z.fileSizeFormat(this.$store.state.instance.uploadlimit)}}},Ri=(0,Jo.Z)(Li,[["render",function(e,t,n,o,r,i){return(0,Co.wg)(),(0,Co.iD)("div",Oi,[(0,Co._)("div",Ei,[(0,Co._)("div",zi,[(0,Co._)("div",Pi,(0,So.zw)(e.$t("features_panel.title")),1)]),(0,Co._)("div",Ii,[(0,Co._)("ul",null,[e.shout?((0,Co.wg)(),(0,Co.iD)("li",xi,(0,So.zw)(e.$t("features_panel.shout")),1)):(0,Co.kq)("",!0),e.pleromaChatMessages?((0,Co.wg)(),(0,Co.iD)("li",Ti,(0,So.zw)(e.$t("features_panel.pleroma_chat_messages")),1)):(0,Co.kq)("",!0),e.gopher?((0,Co.wg)(),(0,Co.iD)("li",$i,(0,So.zw)(e.$t("features_panel.gopher")),1)):(0,Co.kq)("",!0),e.whoToFollow?((0,Co.wg)(),(0,Co.iD)("li",Bi,(0,So.zw)(e.$t("features_panel.who_to_follow")),1)):(0,Co.kq)("",!0),e.mediaProxy?((0,Co.wg)(),(0,Co.iD)("li",Ui,(0,So.zw)(e.$t("features_panel.media_proxy")),1)):(0,Co.kq)("",!0),(0,Co._)("li",null,(0,So.zw)(e.$t("features_panel.scope_options")),1),(0,Co._)("li",null,(0,So.zw)(e.$t("features_panel.text_limit"))+" = "+(0,So.zw)(e.textlimit),1),(0,Co._)("li",null,(0,So.zw)(e.$t("features_panel.upload_limit"))+" = "+(0,So.zw)(e.uploadlimit.num)+" "+(0,So.zw)(e.$t("upload.file_size_units."+e.uploadlimit.unit)),1)])])])])}]]);var qi={class:"who-to-follow-panel"},Ni={class:"panel panel-default base01-background"},Zi={class:"panel-heading timeline-heading base02-background base04"},Wi={class:"title"},Hi={class:"who-to-follow"},Vi=["src"],Ki=(0,Co._)("br",null,null,-1),Gi={class:"who-to-follow-more"},Yi=n(69983),Ji=n.n(Yi),Qi=n(4493);function Xi(e){var t=e.$store.state.users.currentUser.credentials;t&&(e.usersToFollow.forEach((function(e){e.name="Loading..."})),h.ZP.suggestions({credentials:t}).then((function(t){!function(e,t){var n=this,o=Ji()(t);e.usersToFollow.forEach((function(t,r){var i=o[r],s=i.avatar||n.$store.state.instance.defaultAvatar,a=i.acct;t.img=s,t.name=a,e.$store.state.api.backendInteractor.fetchUser({id:a}).then((function(n){n.error||(e.$store.commit("addNewUsers",[n]),t.id=n.id)}))}))}(e,t)})))}const es={data:function(){return{usersToFollow:[]}},computed:{user:function(){return this.$store.state.users.currentUser.screen_name},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled}},methods:{userProfileLink:function(e,t){return(0,Qi.Z)(e,t,this.$store.state.instance.restrictedNicknames)}},watch:{user:function(e,t){this.suggestionsEnabled&&Xi(this)}},mounted:function(){var e=this;this.usersToFollow=new Array(3).fill().map((function(t){return{img:e.$store.state.instance.defaultAvatar,name:"",id:0}})),this.suggestionsEnabled&&Xi(this)}},ts=(0,Jo.Z)(es,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("router-link");return(0,Co.wg)(),(0,Co.iD)("div",qi,[(0,Co._)("div",Ni,[(0,Co._)("div",Zi,[(0,Co._)("div",Wi,(0,So.zw)(e.$t("who_to_follow.who_to_follow")),1)]),(0,Co._)("div",Hi,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.usersToFollow,(function(t){return(0,Co.wg)(),(0,Co.iD)("p",{key:t.id,class:"who-to-follow-items"},[(0,Co._)("img",{src:t.img},null,8,Vi),(0,Co.Wm)(s,{to:e.userProfileLink(t.id,t.name)},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(t.name),1)]})),_:2},1032,["to"]),Ki])})),128)),(0,Co._)("p",Gi,[(0,Co.Wm)(s,{to:{name:"who-to-follow"}},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("who_to_follow.more")),1)]})),_:1})])])])])}]]);var ns={key:0,class:"shout-panel"},os={class:"panel panel-default"},rs={class:"title"},is={class:"shout-window"},ss={class:"shout-avatar"},as=["src"],us={class:"shout-content"},cs=(0,Co._)("br",null,null,-1),ls={class:"shout-text"},ds={class:"shout-input"},ps={key:1,class:"shout-panel"},ms={class:"panel panel-default"},hs={class:"title"};Ht.vI.add(Vt.Acd,Vt.NBC);const fs={props:["floating"],data:function(){return{currentMessage:"",channel:null,collapsed:!0}},computed:{messages:function(){return this.$store.state.shout.messages}},methods:{submit:function(e){this.$store.state.shout.channel.push("new_msg",{text:e},1e4),this.currentMessage=""},togglePanel:function(){this.collapsed=!this.collapsed},userProfileLink:function(e){return(0,Qi.Z)(e.id,e.username,this.$store.state.instance.restrictedNicknames)}},watch:{messages:function(e){var t=this.$el.querySelector(".chat-window");t&&t.scrollTop+t.offsetHeight+20>t.scrollHeight&&this.$nextTick((function(){t&&(t.scrollTop=t.scrollHeight-t.offsetHeight)}))}}},gs=(0,Jo.Z)(fs,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon"),a=(0,Co.up)("router-link");return e.collapsed&&e.floating?((0,Co.wg)(),(0,Co.iD)("div",ps,[(0,Co._)("div",ms,[(0,Co._)("div",{class:"panel-heading -stub timeline-heading shout-heading",onClick:t[3]||(t[3]=(0,wo.iM)((function(){return e.togglePanel&&e.togglePanel.apply(e,arguments)}),["stop","prevent"]))},[(0,Co._)("div",hs,[(0,Co.Wm)(s,{class:"icon",icon:"bullhorn"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("shoutbox.title")),1)])])])])):((0,Co.wg)(),(0,Co.iD)("div",ns,[(0,Co._)("div",os,[(0,Co._)("div",{class:(0,So.C_)(["panel-heading timeline-heading",{"shout-heading":e.floating}]),onClick:t[0]||(t[0]=(0,wo.iM)((function(){return e.togglePanel&&e.togglePanel.apply(e,arguments)}),["stop","prevent"]))},[(0,Co._)("div",rs,[(0,Co.Uk)((0,So.zw)(e.$t("shoutbox.title"))+" ",1),e.floating?((0,Co.wg)(),(0,Co.j4)(s,{key:0,icon:"times",class:"close-icon"})):(0,Co.kq)("",!0)])],2),(0,Co._)("div",is,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.messages,(function(t){return(0,Co.wg)(),(0,Co.iD)("div",{key:t.id,class:"shout-message"},[(0,Co._)("span",ss,[(0,Co._)("img",{src:t.author.avatar},null,8,as)]),(0,Co._)("div",us,[(0,Co.Wm)(a,{class:"shout-name",to:e.userProfileLink(t.author)},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(t.author.username),1)]})),_:2},1032,["to"]),cs,(0,Co._)("span",ls,(0,So.zw)(t.text),1)])])})),128))]),(0,Co._)("div",ds,[(0,Co.wy)((0,Co._)("textarea",{"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.currentMessage=t}),class:"shout-input-textarea",rows:"1",onKeyup:t[2]||(t[2]=(0,wo.D2)((function(t){return e.submit(e.currentMessage)}),["enter"]))},null,544),[[wo.nr,e.currentMessage]])])])]))}]]);var vs=["src","alt","title"],ws=["src","alt","title"],bs=["title"],ys=["title"],Ds=["title"],_s={key:6,class:"description"},ks={class:"counter"},Cs={key:7,class:"loading-spinner"},Ss=n(32140),js=n(34133),Fs=n(782);const As={methods:{setTransform:function(e){var t=e.scale,n=e.x,o=e.y;this.$el.setTransform({scale:t,x:n,y:o})}},created:function(){Fs.Z}},Os=(0,Jo.Z)(As,[["render",function(e,t,n,o,r,i){return(0,Co.wg)(),(0,Co.iD)("pinch-zoom",(0,Co.dG)({class:"pinch-zoom-parent"},e.$attrs,(0,Co.mx)(e.$listeners,!0)),[(0,Co.WI)(e.$slots,"default")],16)}]]);var Es=n(15671),zs=n(43144),Ps=function(e,t){return[t[0]-e[0],t[1]-e[1]]},Is=function(e){return[(t=e.touches[0]).screenX,t.screenY];var t},xs=function(e){return[e.clientX,e.clientY]},Ts=function(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1])},$s=function(e){return[e[1],-e[0]]},Bs=function(e,t){return e[0]*t[0]+e[1]*t[1]},Us=function(e,t){var n=Bs(e,t)/Bs(t,t);return[n*t[0],n*t[1]]};const Ms={DIRECTION_LEFT:[-1,0],DIRECTION_RIGHT:[1,0],DIRECTION_UP:[0,-1],DIRECTION_DOWN:[0,1],swipeGesture:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;return{direction:e,onSwipe:t,threshold:n,perpendicularTolerance:o,_startPos:[0,0],_swiping:!1}},beginSwipe:function(e,t){t._startPos=Is(e),t._swiping=!0},updateSwipe:function(e,t){if(t._swiping){var n=Ps(t._startPos,Is(e));if(!(Ts(n)<t.threshold||Bs(n,t.direction)<0)){var o=Us(n,t.direction),r=$s(t.direction),i=Us(n,r);Ts(o)*t.perpendicularTolerance<Ts(i)||(t.onSwipe(),t._swiping=!1)}}},SwipeAndClickGesture:function(){function e(t){var n=t.direction,o=t.swipePreviewCallback,r=t.swipeEndCallback,i=t.swipeCancelCallback,s=t.swipelessClickCallback,a=t.threshold,u=void 0===a?30:a,c=t.perpendicularTolerance,l=void 0===c?1:c,d=t.disableClickThreshold,p=void 0===d?1:d;(0,Es.Z)(this,e);var m=function(){};this.direction=n,this.swipePreviewCallback=o||m,this.swipeEndCallback=r||m,this.swipeCancelCallback=i||m,this.swipelessClickCallback=s||m,this.threshold="function"==typeof u?u:function(){return u},this.disableClickThreshold="function"==typeof p?p:function(){return p},this.perpendicularTolerance=l,this._reset()}return(0,zs.Z)(e,[{key:"_reset",value:function(){this._startPos=[0,0],this._pointerId=-1,this._swiping=!1,this._swiped=!1,this._preventNextClick=!1}},{key:"start",value:function(e){0===e.button&&(this._startPos=xs(e),this._pointerId=e.pointerId,this._swiping=!0,this._swiped=!1)}},{key:"move",value:function(e){if(this._swiping&&this._pointerId===e.pointerId){this._swiped=!0;var t=xs(e),n=Ps(this._startPos,t);this.swipePreviewCallback(n)}}},{key:"cancel",value:function(e){this._swiping&&this._pointerId===e.pointerId&&this.swipeCancelCallback()}},{key:"end",value:function(e){var t=this;if(this._swiping&&this._pointerId===e.pointerId){this._swiping=!1;var n=xs(e),o=Ps(this._startPos,n),r=function(){if(Ts(o)<t.threshold())return 0;var e=Bs(o,t.direction)>0,n=Us(o,t.direction),r=$s(t.direction),i=Us(o,r);return Ts(n)*t.perpendicularTolerance<Ts(i)?0:e?1:-1}();this._swiped&&this.swipeEndCallback(r),this._reset(),Ts(o)>=this.disableClickThreshold()&&"mouse"===e.pointerType&&(this._preventNextClick=!0)}}},{key:"click",value:function(e){this._preventNextClick||this.swipelessClickCallback(),this._reset()}}]),e}()},Ls={props:{direction:{type:Array},threshold:{type:Function,default:function(){return 30}},disableClickThreshold:{type:Function,default:function(){return 1}},perpendicularTolerance:{type:Number,default:1}},methods:{handlePointerDown:function(e){this.$gesture.start(e)},handlePointerMove:function(e){this.$gesture.move(e)},handlePointerUp:function(e){this.$gesture.end(e)},handlePointerCancel:function(e){this.$gesture.cancel(e)},handleNativeClick:function(e){this.$gesture.click(e)},preview:function(e){this.$emit("preview-requested",e)},end:function(e){this.$emit("swipe-finished",e)},click:function(){this.$emit("swipeless-clicked")},cancel:function(){this.$emit("swipe-canceled")}},created:function(){this.$gesture=new Ms.SwipeAndClickGesture({direction:this.direction,threshold:this.threshold,disableClickThreshold:this.disableClickThreshold,perpendicularTolerance:this.perpendicularTolerance,swipePreviewCallback:this.preview,swipeEndCallback:this.end,swipeCancelCallback:this.cancel,swipelessClickCallback:this.click})}},Rs=(0,Jo.Z)(Ls,[["render",function(e,t,n,o,r,i){return(0,Co.wg)(),(0,Co.iD)("div",(0,Co.dG)(e.$attrs,{onPointerdown:t[0]||(t[0]=function(){return e.handlePointerDown&&e.handlePointerDown.apply(e,arguments)}),onPointermove:t[1]||(t[1]=function(){return e.handlePointerMove&&e.handlePointerMove.apply(e,arguments)}),onPointerup:t[2]||(t[2]=function(){return e.handlePointerUp&&e.handlePointerUp.apply(e,arguments)}),onPointercancel:t[3]||(t[3]=function(){return e.handlePointerCancel&&e.handlePointerCancel.apply(e,arguments)}),onClick:t[4]||(t[4]=function(){return e.handleNativeClick&&e.handleNativeClick.apply(e,arguments)})}),[(0,Co.WI)(e.$slots,"default")],16)}]]);var qs=n(72884);Ht.vI.add(Vt.A35,Vt._tD,Vt.IJ7,Vt.NBC);const Ns={components:{StillImage:Ss.Z,VideoAttachment:js.Z,PinchZoom:Os,SwipeClick:Rs,Modal:Wt.Z,Flash:qs.Z},data:function(){return{loading:!1,swipeDirection:Ms.DIRECTION_LEFT,swipeThreshold:function(){return window.innerWidth*(1/4)},pinchZoomMinScale:1,pinchZoomScaleResetLimit:1.2}},computed:{showing:function(){return this.$store.state.mediaViewer.activated},media:function(){return this.$store.state.mediaViewer.media},description:function(){return this.currentMedia.description},currentIndex:function(){return this.$store.state.mediaViewer.currentIndex},currentMedia:function(){return this.media[this.currentIndex]},canNavigate:function(){return this.media.length>1},type:function(){return this.currentMedia?this.getType(this.currentMedia):null},swipeDisableClickThreshold:function(){var e=this;return function(){return e.canNavigate?1:30}}},methods:{getType:function(e){return Fn.ZP.fileType(e.mimetype)},hide:function(){var e=this;setTimeout((function(){e.$store.dispatch("closeMediaViewer")}),100)},hideIfNotSwiped:function(e){var t=this.$refs.swipeClick;t?t.$gesture.click(e):this.hide()},goPrev:function(){if(this.canNavigate){var e=0===this.currentIndex?this.media.length-1:this.currentIndex-1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},goNext:function(){if(this.canNavigate){var e=this.currentIndex===this.media.length-1?0:this.currentIndex+1,t=this.media[e];"image"===this.getType(t)&&(this.loading=!0),this.$store.dispatch("setCurrentMedia",t)}},onImageLoaded:function(){this.loading=!1},handleSwipePreview:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:e[0],y:0})},handleSwipeEnd:function(e){this.$refs.pinchZoom.setTransform({scale:1,x:0,y:0}),e>0?this.goNext():e<0&&this.goPrev()},handleKeyupEvent:function(e){this.showing&&27===e.keyCode&&this.hide()},handleKeydownEvent:function(e){this.showing&&(39===e.keyCode?this.goNext():37===e.keyCode&&this.goPrev())}},mounted:function(){window.addEventListener("popstate",this.hide),document.addEventListener("keyup",this.handleKeyupEvent),document.addEventListener("keydown",this.handleKeydownEvent)},unmounted:function(){window.removeEventListener("popstate",this.hide),document.removeEventListener("keyup",this.handleKeyupEvent),document.removeEventListener("keydown",this.handleKeydownEvent)}},Zs=(0,Jo.Z)(Ns,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("PinchZoom"),a=(0,Co.up)("SwipeClick"),u=(0,Co.up)("VideoAttachment"),c=(0,Co.up)("Flash"),l=(0,Co.up)("FAIcon"),d=(0,Co.up)("Modal");return e.showing?((0,Co.wg)(),(0,Co.j4)(d,{key:0,class:"media-modal-view",onBackdropClicked:e.hideIfNotSwiped},{default:(0,Co.w5)((function(){return["image"===e.type?((0,Co.wg)(),(0,Co.j4)(a,{key:0,ref:"swipeClick",class:"modal-image-container",direction:e.swipeDirection,threshold:e.swipeThreshold,"disable-click-threshold":e.swipeDisableClickThreshold,onPreviewRequested:e.handleSwipePreview,onSwipeFinished:e.handleSwipeEnd,onSwipelessClicked:e.hide},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(s,{ref:"pinchZoom",class:"modal-image-container-inner",selector:".modal-image","reach-min-scale-strategy":"reset","stop-propagate-handled":"stop-propgate-handled","allow-pan-min-scale":e.pinchZoomMinScale,"min-scale":e.pinchZoomMinScale,"reset-to-min-scale-limit":e.pinchZoomScaleResetLimit},{default:(0,Co.w5)((function(){return[(0,Co._)("img",{class:(0,So.C_)([{loading:e.loading},"modal-image"]),src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,onLoad:t[0]||(t[0]=function(){return e.onImageLoaded&&e.onImageLoaded.apply(e,arguments)})},null,42,vs)]})),_:1},8,["allow-pan-min-scale","min-scale","reset-to-min-scale-limit"])]})),_:1},8,["direction","threshold","disable-click-threshold","onPreviewRequested","onSwipeFinished","onSwipelessClicked"])):(0,Co.kq)("",!0),"video"===e.type?((0,Co.wg)(),(0,Co.j4)(u,{key:1,class:"modal-image",attachment:e.currentMedia,controls:!0},null,8,["attachment"])):(0,Co.kq)("",!0),"audio"===e.type?((0,Co.wg)(),(0,Co.iD)("audio",{key:2,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description,controls:""},null,8,ws)):(0,Co.kq)("",!0),"flash"===e.type?((0,Co.wg)(),(0,Co.j4)(c,{key:3,class:"modal-image",src:e.currentMedia.url,alt:e.currentMedia.description,title:e.currentMedia.description},null,8,["src","alt","title"])):(0,Co.kq)("",!0),e.canNavigate?((0,Co.wg)(),(0,Co.iD)("button",{key:4,title:e.$t("media_modal.previous"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev",onClick:t[1]||(t[1]=(0,wo.iM)((function(){return e.goPrev&&e.goPrev.apply(e,arguments)}),["stop","prevent"]))},[(0,Co.Wm)(l,{class:"button-icon arrow-icon",icon:"chevron-left"})],8,bs)):(0,Co.kq)("",!0),e.canNavigate?((0,Co.wg)(),(0,Co.iD)("button",{key:5,title:e.$t("media_modal.next"),class:"modal-view-button modal-view-button-arrow modal-view-button-arrow--next",onClick:t[2]||(t[2]=(0,wo.iM)((function(){return e.goNext&&e.goNext.apply(e,arguments)}),["stop","prevent"]))},[(0,Co.Wm)(l,{class:"button-icon arrow-icon",icon:"chevron-right"})],8,ys)):(0,Co.kq)("",!0),(0,Co._)("button",{class:"modal-view-button modal-view-button-hide",title:e.$t("media_modal.hide"),onClick:t[3]||(t[3]=(0,wo.iM)((function(){return e.hide&&e.hide.apply(e,arguments)}),["stop","prevent"]))},[(0,Co.Wm)(l,{class:"button-icon",icon:"times"})],8,Ds),e.description?((0,Co.wg)(),(0,Co.iD)("span",_s,(0,So.zw)(e.description),1)):(0,Co.kq)("",!0),(0,Co._)("span",ks,(0,So.zw)(e.$tc("media_modal.counter",e.currentIndex+1,{current:e.currentIndex+1,total:e.media.length})),1),e.loading?((0,Co.wg)(),(0,Co.iD)("span",Cs,[(0,Co.Wm)(l,{spin:"",icon:"circle-notch",size:"5x"})])):(0,Co.kq)("",!0)]})),_:1},8,["onBackdropClicked"])):(0,Co.kq)("",!0)}]]);var Ws={key:1,class:"side-drawer-logo-wrapper"},Hs=["src"],Vs={key:0},Ks={key:0,class:"badge badge-notification"},Gs={key:0},Ys={key:0,class:"badge badge-notification"},Js={key:0,class:"badge badge-notification"};function Qs(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Xs(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Qs(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Qs(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.$Wj,Vt.jLD,Vt.J9Y,Vt.lXL,Vt.qmU,Vt.FKd,Vt.Acd,Vt.wn1,Vt.HLz,Vt.b7W,Vt.sqG,Vt.GTN,Vt.Zrf);const ea={props:["logout"],data:function(){return{closed:!0,closeGesture:void 0}},created:function(){this.closeGesture=Ms.swipeGesture(Ms.DIRECTION_LEFT,this.toggleDrawer),this.currentUser&&this.currentUser.locked&&this.$store.dispatch("startFetchingFollowRequests")},components:{UserCard:xr.Z},computed:Xs(Xs({currentUser:function(){return this.$store.state.users.currentUser},shout:function(){return this.$store.state.shout.joined},unseenNotifications:function(){return(0,K.Km)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},logo:function(){return this.$store.state.instance.logo},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},followRequestCount:function(){return this.$store.state.api.followRequests.length},privateMode:function(){return this.$store.state.instance.private},federating:function(){return this.$store.state.instance.federating},timelinesRoute:function(){var e;return this.$store.state.interface.lastTimeline&&(e=this.$store.state.interface.lastTimeline),e=this.currentUser?"friends":"public-timeline",Yr.has(e)?{name:e,params:{username:this.currentUser.screen_name}}:{name:e}}},(0,s.rn)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable},supportsAnnouncements:function(e){return e.announcements.supportsAnnouncements}})),(0,s.Se)(["unreadChatCount","unreadAnnouncementCount"])),methods:{toggleDrawer:function(){this.closed=!this.closed},doLogout:function(){this.logout(),this.toggleDrawer()},touchStart:function(e){Ms.beginSwipe(e,this.closeGesture)},touchMove:function(e){Ms.updateSwipe(e,this.closeGesture)},openSettingsModal:function(){this.$store.dispatch("openSettingsModal","user")},openAdminModal:function(){this.$store.dispatch("openSettingsModal","admin")}}},ta=(0,Jo.Z)(ea,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("UserCard"),a=(0,Co.up)("FAIcon"),u=(0,Co.up)("router-link");return(0,Co.wg)(),(0,Co.iD)("div",{class:(0,So.C_)(["side-drawer-container",{"side-drawer-container-closed":e.closed,"side-drawer-container-open":!e.closed}])},[(0,Co._)("div",{class:(0,So.C_)(["side-drawer-darken",{"side-drawer-darken-closed":e.closed}])},null,2),(0,Co._)("div",{class:(0,So.C_)(["side-drawer",{"side-drawer-closed":e.closed}]),onTouchstart:t[19]||(t[19]=function(){return e.touchStart&&e.touchStart.apply(e,arguments)}),onTouchmove:t[20]||(t[20]=function(){return e.touchMove&&e.touchMove.apply(e,arguments)})},[(0,Co._)("div",{class:"side-drawer-heading",onClick:t[0]||(t[0]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[e.currentUser?((0,Co.wg)(),(0,Co.j4)(s,{key:0,"user-id":e.currentUser.id,"hide-bio":!0},null,8,["user-id"])):((0,Co.wg)(),(0,Co.iD)("div",Ws,[(0,Co._)("img",{src:e.logo},null,8,Hs),e.hideSitename?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("span",Vs,(0,So.zw)(e.sitename),1))]))]),(0,Co._)("ul",null,[e.currentUser?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("li",{key:0,onClick:t[1]||(t[1]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:{name:"login"}},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-in-alt"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("login.login")),1)]})),_:1})])),e.currentUser||!e.privateMode?((0,Co.wg)(),(0,Co.iD)("li",{key:1,onClick:t[2]||(t[2]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:e.timelinesRoute},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"home"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("nav.timelines")),1)]})),_:1},8,["to"])])):(0,Co.kq)("",!0),e.currentUser?((0,Co.wg)(),(0,Co.iD)("li",{key:2,onClick:t[3]||(t[3]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:{name:"lists"}},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"list"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("nav.lists")),1)]})),_:1})])):(0,Co.kq)("",!0),e.currentUser&&e.pleromaChatMessagesAvailable?((0,Co.wg)(),(0,Co.iD)("li",{key:3,onClick:t[4]||(t[4]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:{name:"chats",params:{username:e.currentUser.screen_name}},style:{position:"relative"}},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"comments"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("nav.chats"))+" ",1),e.unreadChatCount?((0,Co.wg)(),(0,Co.iD)("span",Ks,(0,So.zw)(e.unreadChatCount),1)):(0,Co.kq)("",!0)]})),_:1},8,["to"])])):(0,Co.kq)("",!0)]),e.currentUser?((0,Co.wg)(),(0,Co.iD)("ul",Gs,[(0,Co._)("li",{onClick:t[5]||(t[5]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:{name:"interactions",params:{username:e.currentUser.screen_name}}},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bell"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("nav.interactions")),1)]})),_:1},8,["to"])]),e.currentUser.locked?((0,Co.wg)(),(0,Co.iD)("li",{key:0,onClick:t[6]||(t[6]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:"/friend-requests"},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("nav.friend_requests"))+" ",1),e.followRequestCount>0?((0,Co.wg)(),(0,Co.iD)("span",Ys,(0,So.zw)(e.followRequestCount),1)):(0,Co.kq)("",!0)]})),_:1})])):(0,Co.kq)("",!0),e.shout?((0,Co.wg)(),(0,Co.iD)("li",{key:1,onClick:t[7]||(t[7]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:{name:"shout-panel"}},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bullhorn"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("shoutbox.title")),1)]})),_:1})])):(0,Co.kq)("",!0)])):(0,Co.kq)("",!0),(0,Co._)("ul",null,[e.currentUser||!e.privateMode?((0,Co.wg)(),(0,Co.iD)("li",{key:0,onClick:t[8]||(t[8]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:{name:"search"}},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("nav.search")),1)]})),_:1})])):(0,Co.kq)("",!0),e.currentUser&&e.suggestionsEnabled?((0,Co.wg)(),(0,Co.iD)("li",{key:1,onClick:t[9]||(t[9]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:{name:"who-to-follow"}},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"user-plus"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("nav.who_to_follow")),1)]})),_:1})])):(0,Co.kq)("",!0),(0,Co._)("li",{onClick:t[11]||(t[11]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co._)("button",{class:"button-unstyled -link -fullwidth",onClick:t[10]||(t[10]=function(){return e.openSettingsModal&&e.openSettingsModal.apply(e,arguments)})},[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("settings.settings")),1)])]),(0,Co._)("li",{onClick:t[12]||(t[12]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:{name:"about"}},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"info-circle"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("nav.about")),1)]})),_:1})]),e.currentUser&&"admin"===e.currentUser.role?((0,Co.wg)(),(0,Co.iD)("li",{key:2,onClick:t[14]||(t[14]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co._)("button",{class:"button-unstyled -link -fullwidth",onClick:t[13]||(t[13]=(0,wo.iM)((function(){return e.openAdminModal&&e.openAdminModal.apply(e,arguments)}),["stop"]))},[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("nav.administration")),1)])])):(0,Co.kq)("",!0),e.currentUser&&e.supportsAnnouncements?((0,Co.wg)(),(0,Co.iD)("li",{key:3,onClick:t[15]||(t[15]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:{name:"announcements"}},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"bullhorn"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("nav.announcements"))+" ",1),e.unreadAnnouncementCount?((0,Co.wg)(),(0,Co.iD)("span",Js,(0,So.zw)(e.unreadAnnouncementCount),1)):(0,Co.kq)("",!0)]})),_:1})])):(0,Co.kq)("",!0),e.currentUser?((0,Co.wg)(),(0,Co.iD)("li",{key:4,onClick:t[16]||(t[16]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co.Wm)(u,{to:{name:"edit-navigation"}},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"compass"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("nav.edit_nav_mobile")),1)]})),_:1})])):(0,Co.kq)("",!0),e.currentUser?((0,Co.wg)(),(0,Co.iD)("li",{key:5,onClick:t[18]||(t[18]=function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)})},[(0,Co._)("button",{class:"button-unstyled -link -fullwidth",onClick:t[17]||(t[17]=function(){return e.doLogout&&e.doLogout.apply(e,arguments)})},[(0,Co.Wm)(a,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("login.logout")),1)])])):(0,Co.kq)("",!0)])],34),(0,Co._)("div",{class:(0,So.C_)(["side-drawer-click-outside",{"side-drawer-click-outside-closed":e.closed}]),onClick:t[21]||(t[21]=(0,wo.iM)((function(){return e.toggleDrawer&&e.toggleDrawer.apply(e,arguments)}),["stop","prevent"]))},null,2)],2)}]]);var na=["title"],oa=n(23279),ra=n.n(oa);Ht.vI.add(Vt.IwR);var ia=new Set(["chats","chat","lists-edit"]);const sa={data:function(){return{hidden:!1,scrollingDown:!1,inputActive:!1,oldScrollPos:0,amountScrolled:0}},created:function(){this.autohideFloatingPostButton&&this.activateFloatingPostButtonAutohide(),window.addEventListener("resize",this.handleOSK)},unmounted:function(){this.autohideFloatingPostButton&&this.deactivateFloatingPostButtonAutohide(),window.removeEventListener("resize",this.handleOSK)},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},isHidden:function(){return!!ia.has(this.$route.name)||this.autohideFloatingPostButton&&(this.hidden||this.inputActive)},isPersistent:function(){return!!this.$store.getters.mergedConfig.alwaysShowNewPostButton},autohideFloatingPostButton:function(){return!!this.$store.getters.mergedConfig.autohideFloatingPostButton}},watch:{autohideFloatingPostButton:function(e){e?this.activateFloatingPostButtonAutohide():this.deactivateFloatingPostButtonAutohide()}},methods:{activateFloatingPostButtonAutohide:function(){window.addEventListener("scroll",this.handleScrollStart),window.addEventListener("scroll",this.handleScrollEnd)},deactivateFloatingPostButtonAutohide:function(){window.removeEventListener("scroll",this.handleScrollStart),window.removeEventListener("scroll",this.handleScrollEnd)},openPostForm:function(){this.$store.dispatch("openPostStatusModal")},handleOSK:function(){var e=window.innerWidth<350,t=e&&window.innerHeight<345,n=!e&&window.innerWidth<450&&window.innerHeight<560;this.inputActive=!(!t&&!n)},handleScrollStart:ra()((function(){window.scrollY>this.oldScrollPos?this.hidden=!0:this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!0,trailing:!1}),handleScrollEnd:ra()((function(){this.hidden=!1,this.oldScrollPos=window.scrollY}),100,{leading:!1,trailing:!0})}},aa=(0,Jo.Z)(sa,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon");return e.isLoggedIn?((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:(0,So.C_)(["MobilePostButton button-default new-status-button",{hidden:e.isHidden,"always-show":e.isPersistent}]),title:e.$t("post_status.new_status"),onClick:t[0]||(t[0]=function(){return e.openPostForm&&e.openPostForm.apply(e,arguments)})},[(0,Co.Wm)(s,{icon:"pen"})],10,na)):(0,Co.kq)("",!0)}]]);var ua={class:"MobileNav"},ca={class:"item"},la=["title","aria-expanaded"],da={key:0,class:"alert-dot"},pa={class:"item right"},ma=["title"],ha={key:0,class:"alert-dot"},fa={class:"mobile-notifications-header"},ga={class:"title"},va=(0,Co._)("span",{class:"spacer"},null,-1),wa=["title"],ba=["title"],ya=n(93737),Da=n(1447);function _a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ka(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?_a(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.NBC,Vt.qmU,Vt.xiG,Vt.FPD,Vt.Kl4);const Ca={components:{SideDrawer:ta,Notifications:ya.default,NavigationPins:vi,ConfirmModal:Da.Z},data:function(){return{notificationsCloseGesture:void 0,notificationsOpen:!1,notificationsAtTop:!0,showingConfirmLogout:!1}},created:function(){var e=this;this.notificationsCloseGesture=Ms.swipeGesture(Ms.DIRECTION_RIGHT,(function(){return e.closeMobileNotifications(!0)}),50)},computed:ka(ka({currentUser:function(){return this.$store.state.users.currentUser},unseenNotifications:function(){return(0,K.Km)(this.$store)},unseenNotificationsCount:function(){return this.unseenNotifications.length},hideSitename:function(){return this.$store.state.instance.hideSitename},sitename:function(){return this.$store.state.instance.name},isChat:function(){return"chat"===this.$route.name}},(0,s.Se)(["unreadChatCount","unreadAnnouncementCount"])),{},{chatsPinned:function(){return new Set(this.$store.state.serverSideStorage.prefsStorage.collections.pinnedNavItems).has("chats")},shouldConfirmLogout:function(){return this.$store.getters.mergedConfig.modalOnLogout}},(0,s.Se)(["unreadChatCount"])),methods:{toggleMobileSidebar:function(){this.$refs.sideDrawer.toggleDrawer()},openMobileNotifications:function(){this.notificationsOpen=!0},closeMobileNotifications:function(e){this.notificationsOpen&&(this.notificationsOpen=!1,e&&this.markNotificationsAsSeen())},notificationsTouchStart:function(e){Ms.beginSwipe(e,this.notificationsCloseGesture)},notificationsTouchMove:function(e){Ms.updateSwipe(e,this.notificationsCloseGesture)},scrollToTop:function(){window.scrollTo(0,0)},scrollMobileNotificationsToTop:function(){this.$refs.mobileNotifications.scrollTo(0,0)},showConfirmLogout:function(){this.showingConfirmLogout=!0},hideConfirmLogout:function(){this.showingConfirmLogout=!1},logout:function(){this.shouldConfirmLogout?this.showConfirmLogout():this.doLogout()},doLogout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout"),this.hideConfirmLogout()},markNotificationsAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen")},onScroll:function(e){var t=e.target,n=t.scrollTop,o=t.clientHeight,r=t.scrollHeight;this.notificationsAtTop=n>0,n+o>=r&&this.$refs.notifications.fetchOlderNotifications()}},watch:{$route:function(){this.closeMobileNotifications()}}},Sa=(0,Jo.Z)(Ca,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon"),a=(0,Co.up)("NavigationPins"),u=(0,Co.up)("FALayers"),c=(0,Co.up)("SideDrawer"),l=(0,Co.up)("confirm-modal");return(0,Co.wg)(),(0,Co.iD)("div",ua,[(0,Co._)("nav",{id:"nav",class:"mobile-nav",onClick:t[2]||(t[2]=function(t){return e.scrollToTop()})},[(0,Co._)("div",ca,[(0,Co._)("button",{class:"button-unstyled mobile-nav-button",title:e.$t("nav.mobile_sidebar"),"aria-expanaded":e.$refs.sideDrawer&&!e.$refs.sideDrawer.closed,onClick:t[0]||(t[0]=(0,wo.iM)((function(t){return e.toggleMobileSidebar()}),["stop","prevent"]))},[(0,Co.Wm)(s,{class:"fa-scale-110 fa-old-padding",icon:"bars"}),e.unreadChatCount&&!e.chatsPinned||e.unreadAnnouncementCount?((0,Co.wg)(),(0,Co.iD)("div",da)):(0,Co.kq)("",!0)],8,la),(0,Co.Wm)(a,{class:"pins"})]),(0,Co.Uk)(),(0,Co._)("div",pa,[e.currentUser?((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:"button-unstyled mobile-nav-button",title:e.unseenNotificationsCount?e.$t("nav.mobile_notifications_unread_active"):e.$t("nav.mobile_notifications"),onClick:t[1]||(t[1]=(0,wo.iM)((function(t){return e.openMobileNotifications()}),["stop","prevent"]))},[(0,Co.Wm)(s,{class:"fa-scale-110 fa-old-padding",icon:"bell"}),e.unseenNotificationsCount?((0,Co.wg)(),(0,Co.iD)("div",ha)):(0,Co.kq)("",!0)],8,ma)):(0,Co.kq)("",!0)])]),e.currentUser?((0,Co.wg)(),(0,Co.iD)("aside",{key:0,class:(0,So.C_)(["mobile-notifications-drawer",{"-closed":!e.notificationsOpen}]),onTouchstart:t[6]||(t[6]=(0,wo.iM)((function(){return e.notificationsTouchStart&&e.notificationsTouchStart.apply(e,arguments)}),["stop"])),onTouchmove:t[7]||(t[7]=(0,wo.iM)((function(){return e.notificationsTouchMove&&e.notificationsTouchMove.apply(e,arguments)}),["stop"]))},[(0,Co._)("div",fa,[(0,Co._)("span",ga,(0,So.zw)(e.$t("notifications.notifications")),1),va,e.notificationsAtTop?((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:"button-unstyled mobile-nav-button",title:e.$t("general.scroll_to_top"),onClick:t[3]||(t[3]=(0,wo.iM)((function(){return e.scrollMobileNotificationsToTop&&e.scrollMobileNotificationsToTop.apply(e,arguments)}),["stop","prevent"]))},[(0,Co.Wm)(u,{class:"fa-scale-110 fa-old-padding-layer"},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(s,{icon:"arrow-up"}),(0,Co.Wm)(s,{icon:"minus",transform:"up-7"})]})),_:1})],8,wa)):(0,Co.kq)("",!0),(0,Co._)("button",{class:"button-unstyled mobile-nav-button",title:e.$t("nav.mobile_notifications_close"),onClick:t[4]||(t[4]=(0,wo.iM)((function(t){return e.closeMobileNotifications(!0)}),["stop","prevent"]))},[(0,Co.Wm)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})],8,ba)]),(0,Co._)("div",{id:"mobile-notifications",ref:"mobileNotifications",class:"mobile-notifications",onScroll:t[5]||(t[5]=function(){return e.onScroll&&e.onScroll.apply(e,arguments)})},null,544)],34)):(0,Co.kq)("",!0),(0,Co.Wm)(c,{ref:"sideDrawer",logout:e.logout},null,8,["logout"]),((0,Co.wg)(),(0,Co.j4)(Co.lR,{to:"#modal"},[e.showingConfirmLogout?((0,Co.wg)(),(0,Co.j4)(l,{key:0,title:e.$t("login.logout_confirm_title"),"confirm-text":e.$t("login.logout_confirm_accept_button"),"cancel-text":e.$t("login.logout_confirm_cancel_button"),onAccepted:e.doLogout,onCancelled:e.hideConfirmLogout},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("login.logout_confirm")),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,Co.kq)("",!0)]))])}]]);var ja={class:"inner-nav"},Fa={class:"item sitename"},Aa=["src"],Oa={class:"item right actions"},Ea=["title"],za=["title"],Pa=(0,Co._)("span",{class:"spacer"},null,-1),Ia=["title"],xa=["title","aria-expanded"],Ta=["placeholder"],$a=["title"],Ba=["title","aria-expanded"],Ua=(0,Co._)("span",{class:"spacer"},null,-1),Ma=(0,Co._)("span",{class:"spacer"},null,-1);Ht.vI.add(Vt.NBC,Vt.wn1);const La={data:function(){return{searchTerm:void 0,hidden:!0,error:!1}},watch:{$route:function(e){"search"===e.name&&(this.searchTerm=e.query.query)}},methods:{find:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},toggleHidden:function(){var e=this;this.hidden=!this.hidden,this.$emit("toggled",this.hidden),this.$nextTick((function(){e.hidden||e.$refs.searchInput.focus()}))}}},Ra=(0,Jo.Z)(La,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon");return(0,Co.wg)(),(0,Co.iD)("div",{class:(0,So.C_)(["SearchBar",{"-expanded":!e.hidden}])},[e.hidden?((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:"button-unstyled nav-icon",title:e.$t("nav.search"),type:"button","aria-expanded":!e.hidden,onClick:t[0]||(t[0]=(0,wo.iM)((function(){return e.toggleHidden&&e.toggleHidden.apply(e,arguments)}),["prevent","stop"]))},[(0,Co.Wm)(s,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"search"})],8,xa)):((0,Co.wg)(),(0,Co.iD)(Co.HY,{key:1},[(0,Co.wy)((0,Co._)("input",{id:"search-bar-input",ref:"searchInput","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),class:"search-bar-input",placeholder:e.$t("nav.search"),type:"text",onKeyup:t[2]||(t[2]=(0,wo.D2)((function(t){return e.find(e.searchTerm)}),["enter"]))},null,40,Ta),[[wo.nr,e.searchTerm]]),(0,Co._)("button",{class:"button-default search-button",type:"submit",title:e.$t("nav.search"),onClick:t[3]||(t[3]=function(t){return e.find(e.searchTerm)})},[(0,Co.Wm)(s,{"fixed-width":"",icon:"search"})],8,$a),(0,Co._)("button",{class:"button-unstyled cancel-search",type:"button",title:e.$t("nav.search_close"),"aria-expanded":!e.hidden,onClick:t[4]||(t[4]=(0,wo.iM)((function(){return e.toggleHidden&&e.toggleHidden.apply(e,arguments)}),["prevent","stop"]))},[(0,Co.Wm)(s,{"fixed-width":"",icon:"times",class:"cancel-icon fa-scale-110 fa-old-padding"})],8,Ba),Ua,Ma],64))],2)}]]);Ht.vI.add(Vt.$Wj,Vt.jLD,Vt.J9Y,Vt.lXL,Vt.qmU,Vt.FKd,Vt.Acd,Vt.wn1,Vt.HLz,Vt.b7W,Vt.sqG);const qa={components:{SearchBar:Ra,ConfirmModal:Da.Z},data:function(){return{searchBarHidden:!0,supportsMask:window.CSS&&window.CSS.supports&&(window.CSS.supports("mask-size","contain")||window.CSS.supports("-webkit-mask-size","contain")||window.CSS.supports("-moz-mask-size","contain")||window.CSS.supports("-ms-mask-size","contain")||window.CSS.supports("-o-mask-size","contain")),showingConfirmLogout:!1}},computed:{enableMask:function(){return this.supportsMask&&this.$store.state.instance.logoMask},logoStyle:function(){return{visibility:this.enableMask?"hidden":"visible"}},logoMaskStyle:function(){return this.enableMask?{"mask-image":"url(".concat(this.$store.state.instance.logo,")")}:{"background-color":this.enableMask?"":"transparent"}},logoBgStyle:function(){return Object.assign({margin:"".concat(this.$store.state.instance.logoMargin," 0"),opacity:this.searchBarHidden?1:0},this.enableMask?{}:{"background-color":this.enableMask?"":"transparent"})},logo:function(){return this.$store.state.instance.logo},sitename:function(){return this.$store.state.instance.name},hideSitename:function(){return this.$store.state.instance.hideSitename},logoLeft:function(){return this.$store.state.instance.logoLeft},currentUser:function(){return this.$store.state.users.currentUser},privateMode:function(){return this.$store.state.instance.private},shouldConfirmLogout:function(){return this.$store.getters.mergedConfig.modalOnLogout}},methods:{scrollToTop:function(){window.scrollTo(0,0)},showConfirmLogout:function(){this.showingConfirmLogout=!0},hideConfirmLogout:function(){this.showingConfirmLogout=!1},logout:function(){this.shouldConfirmLogout?this.showConfirmLogout():this.doLogout()},doLogout:function(){this.$router.replace("/main/public"),this.$store.dispatch("logout"),this.hideConfirmLogout()},onSearchBarToggled:function(e){this.searchBarHidden=e},openSettingsModal:function(){this.$store.dispatch("openSettingsModal","user")},openAdminModal:function(){this.$store.dispatch("openSettingsModal","admin")}}},Na=(0,Jo.Z)(qa,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("router-link"),a=(0,Co.up)("search-bar"),u=(0,Co.up)("FAIcon"),c=(0,Co.up)("confirm-modal");return(0,Co.wg)(),(0,Co.iD)("nav",{id:"nav",class:(0,So.C_)(["DesktopNav",{"-logoLeft":e.logoLeft}]),onClick:t[4]||(t[4]=function(t){return e.scrollToTop()})},[(0,Co._)("div",ja,[(0,Co._)("div",Fa,[e.hideSitename?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.j4)(s,{key:0,class:"site-name",to:{name:"root"},"active-class":"home"},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.sitename),1)]})),_:1}))]),(0,Co.Wm)(s,{class:"logo",to:{name:"root"},style:(0,So.j5)(e.logoBgStyle),title:e.sitename},{default:(0,Co.w5)((function(){return[(0,Co._)("div",{class:"mask",style:(0,So.j5)(e.logoMaskStyle)},null,4),(0,Co._)("img",{src:e.logo,style:(0,So.j5)(e.logoStyle)},null,12,Aa)]})),_:1},8,["style","title"]),(0,Co._)("div",Oa,[e.currentUser||!e.privateMode?((0,Co.wg)(),(0,Co.j4)(a,{key:0,onToggled:e.onSearchBarToggled,onClick:t[0]||(t[0]=(0,wo.iM)((function(){}),["stop"]))},null,8,["onToggled"])):(0,Co.kq)("",!0),(0,Co._)("button",{class:"button-unstyled nav-icon",title:e.$t("nav.preferences"),onClick:t[1]||(t[1]=(0,wo.iM)((function(){return e.openSettingsModal&&e.openSettingsModal.apply(e,arguments)}),["stop"]))},[(0,Co.Wm)(u,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"cog"})],8,Ea),e.currentUser&&"admin"===e.currentUser.role?((0,Co.wg)(),(0,Co.iD)("button",{key:1,class:"button-unstyled nav-icon",target:"_blank",title:e.$t("nav.administration"),onClick:t[2]||(t[2]=(0,wo.iM)((function(){return e.openAdminModal&&e.openAdminModal.apply(e,arguments)}),["stop"]))},[(0,Co.Wm)(u,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"tachometer-alt"})],8,za)):(0,Co.kq)("",!0),Pa,e.currentUser?((0,Co.wg)(),(0,Co.iD)("button",{key:2,class:"button-unstyled nav-icon",title:e.$t("login.logout"),onClick:t[3]||(t[3]=(0,wo.iM)((function(){return e.logout&&e.logout.apply(e,arguments)}),["stop","prevent"]))},[(0,Co.Wm)(u,{"fixed-width":"",class:"fa-scale-110 fa-old-padding",icon:"sign-out-alt"})],8,Ia)):(0,Co.kq)("",!0)])]),((0,Co.wg)(),(0,Co.j4)(Co.lR,{to:"#modal"},[e.showingConfirmLogout?((0,Co.wg)(),(0,Co.j4)(c,{key:0,title:e.$t("login.logout_confirm_title"),"confirm-text":e.$t("login.logout_confirm_accept_button"),"cancel-text":e.$t("login.logout_confirm_cancel_button"),onAccepted:e.doLogout,onCancelled:e.hideConfirmLogout},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("login.logout_confirm")),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,Co.kq)("",!0)]))],2)}]]);var Za={class:"user-reporting-panel panel"},Wa={class:"panel-heading"},Ha={class:"panel-body"},Va={class:"user-reporting-panel-left"},Ka=["placeholder"],Ga={key:0},Ya=["disabled"],Ja={key:0,class:"alert error"},Qa={class:"user-reporting-panel-right"},Xa={class:"status-fadein user-reporting-panel-sitem"},eu=n(24049),tu=n(88369),nu=n(12061);function ou(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const ru={components:{Status:eu.default,List:tu.Z,Checkbox:wi.Z,Modal:Wt.Z,UserLink:nu.Z},data:function(){return{comment:"",forward:!1,statusIdsToReport:[],processing:!1,error:!1}},computed:{reportModal:function(){return this.$store.state.reports.reportModal},isLoggedIn:function(){return!!this.$store.state.users.currentUser},isOpen:function(){return this.isLoggedIn&&this.reportModal.activated},userId:function(){return this.reportModal.userId},user:function(){return this.$store.getters.findUser(this.userId)},remoteInstance:function(){return!this.user.is_local&&this.user.screen_name.substr(this.user.screen_name.indexOf("@")+1)},statuses:function(){return this.reportModal.statuses},preTickedIds:function(){return this.reportModal.preTickedIds}},watch:{userId:"resetState",preTickedIds:function(e){this.statusIdsToReport=e}},methods:{resetState:function(){this.comment="",this.forward=!1,this.statusIdsToReport=this.preTickedIds,this.processing=!1,this.error=!1},closeModal:function(){this.$store.dispatch("closeUserReportingModal")},reportUser:function(){var e=this;this.processing=!0,this.error=!1;var t={userId:this.userId,comment:this.comment,forward:this.forward,statusIds:this.statusIdsToReport};this.$store.state.api.backendInteractor.reportUser(function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ou(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ou(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},t)).then((function(){e.processing=!1,e.resetState(),e.closeModal()})).catch((function(){e.processing=!1,e.error=!0}))},clearError:function(){this.error=!1},isChecked:function(e){return-1!==this.statusIdsToReport.indexOf(e)},toggleStatus:function(e,t){e!==this.isChecked(t)&&(e?this.statusIdsToReport.push(t):this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(t),1))},resize:function(e){var t=e.target||e;t instanceof window.Element&&(t.style.height="auto",t.style.height="".concat(t.scrollHeight,"px"),""===t.value&&(t.style.height=null))}}},iu=(0,Jo.Z)(ru,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("UserLink"),a=(0,Co.up)("i18n-t"),u=(0,Co.up)("Checkbox"),c=(0,Co.up)("Status"),l=(0,Co.up)("List"),d=(0,Co.up)("Modal");return e.isOpen?((0,Co.wg)(),(0,Co.j4)(d,{key:0,onBackdropClicked:e.closeModal},{default:(0,Co.w5)((function(){return[(0,Co._)("div",Za,[(0,Co._)("div",Wa,[(0,Co.Wm)(a,{tag:"div",keypath:"user_reporting.title",class:"title"},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(s,{user:e.user},null,8,["user"])]})),_:1})]),(0,Co._)("div",Ha,[(0,Co._)("div",Va,[(0,Co._)("div",null,[(0,Co._)("p",null,(0,So.zw)(e.$t("user_reporting.add_comment_description")),1),(0,Co.wy)((0,Co._)("textarea",{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.comment=t}),class:"form-control",placeholder:e.$t("user_reporting.additional_comments"),rows:"1",onInput:t[1]||(t[1]=function(){return e.resize&&e.resize.apply(e,arguments)})},null,40,Ka),[[wo.nr,e.comment]])]),e.user.is_local?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("div",Ga,[(0,Co._)("p",null,(0,So.zw)(e.$t("user_reporting.forward_description")),1),(0,Co.Wm)(u,{modelValue:e.forward,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.forward=t})},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("user_reporting.forward_to",[e.remoteInstance])),1)]})),_:1},8,["modelValue"])])),(0,Co._)("div",null,[(0,Co._)("button",{class:"btn button-default",disabled:e.processing,onClick:t[3]||(t[3]=function(){return e.reportUser&&e.reportUser.apply(e,arguments)})},(0,So.zw)(e.$t("user_reporting.submit")),9,Ya),e.error?((0,Co.wg)(),(0,Co.iD)("div",Ja,(0,So.zw)(e.$t("user_reporting.generic_error")),1)):(0,Co.kq)("",!0)])]),(0,Co._)("div",Qa,[(0,Co.Wm)(l,{items:e.statuses},{item:(0,Co.w5)((function(t){var n=t.item;return[(0,Co._)("div",Xa,[(0,Co.Wm)(c,{"in-conversation":!1,focused:!1,statusoid:n},null,8,["statusoid"]),(0,Co.Wm)(u,{"model-value":e.isChecked(n.id),"onUpdate:modelValue":function(t){return e.toggleStatus(t,n.id)}},null,8,["model-value","onUpdate:modelValue"])])]})),_:1},8,["items"])])])])]})),_:1},8,["onBackdropClicked"])):(0,Co.kq)("",!0)}]]);var su={class:"edit-form-modal-panel panel"},au={class:"panel-heading"},uu=n(7257);const cu={components:{PostStatusForm:Ir.Z,Modal:Wt.Z},data:function(){return{resettingForm:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},modalActivated:function(){return this.$store.state.editStatus.modalActivated},isFormVisible:function(){return this.isLoggedIn&&!this.resettingForm&&this.modalActivated},params:function(){return this.$store.state.editStatus.params||{}}},watch:{params:function(e,t){var n=this;Dt()(e,"statusId")!==Dt()(t,"statusId")&&(this.resettingForm=!0,this.$nextTick((function(){n.resettingForm=!1})))},isFormVisible:function(e){var t=this;e&&this.$nextTick((function(){return t.$el&&t.$el.querySelector("textarea").focus()}))}},methods:{doEditStatus:function(e){var t=e.status,n=e.spoilerText,o=e.sensitive,r=e.media,i=e.contentType,s=e.poll,a={store:this.$store,statusId:this.$store.state.editStatus.params.statusId,status:t,spoilerText:n,sensitive:o,poll:s,media:r,contentType:i};return uu.Z.editStatus(a).then((function(e){return e})).catch((function(e){return console.error("Error editing status",e),{error:e.message}}))},closeModal:function(){this.$store.dispatch("closeEditStatusModal")}}},lu=(0,Jo.Z)(cu,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("PostStatusForm"),a=(0,Co.up)("Modal");return e.isFormVisible?((0,Co.wg)(),(0,Co.j4)(a,{key:0,class:"edit-form-modal-view",onBackdropClicked:e.closeModal},{default:(0,Co.w5)((function(){return[(0,Co._)("div",su,[(0,Co._)("div",au,(0,So.zw)(e.$t("post_status.edit_status")),1),(0,Co.Wm)(s,(0,Co.dG)({class:"panel-body"},e.params,{"post-handler":e.doEditStatus,"disable-polls":!0,"disable-visibility-selector":!0,onPosted:e.closeModal}),null,16,["post-handler","onPosted"])])]})),_:1},8,["onBackdropClicked"])):(0,Co.kq)("",!0)}]]);var du={class:"post-form-modal-panel panel"},pu={class:"panel-heading"};const mu={components:{PostStatusForm:Ir.Z,Modal:Wt.Z},data:function(){return{resettingForm:!1}},computed:{isLoggedIn:function(){return!!this.$store.state.users.currentUser},modalActivated:function(){return this.$store.state.postStatus.modalActivated},isFormVisible:function(){return this.isLoggedIn&&!this.resettingForm&&this.modalActivated},params:function(){return this.$store.state.postStatus.params||{}}},watch:{params:function(e,t){var n=this;Dt()(e,"repliedUser.id")!==Dt()(t,"repliedUser.id")&&(this.resettingForm=!0,this.$nextTick((function(){n.resettingForm=!1})))},isFormVisible:function(e){var t=this;e&&this.$nextTick((function(){return t.$el&&t.$el.querySelector("textarea").focus()}))}},methods:{closeModal:function(){this.$store.dispatch("closePostStatusModal")},resetAndClose:function(){this.$store.dispatch("resetPostStatusModal"),this.$store.dispatch("closePostStatusModal")}}},hu=(0,Jo.Z)(mu,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("PostStatusForm"),a=(0,Co.up)("Modal");return e.isLoggedIn&&!e.resettingForm?((0,Co.wg)(),(0,Co.j4)(a,{key:0,"is-open":e.modalActivated,class:"post-form-modal-view",onBackdropClicked:e.closeModal},{default:(0,Co.w5)((function(){return[(0,Co._)("div",du,[(0,Co._)("div",pu,(0,So.zw)(e.$t("post_status.new_status")),1),(0,Co.Wm)(s,(0,Co.dG)({class:"panel-body"},e.params,{onPosted:e.resetAndClose}),null,16,["onPosted"])])]})),_:1},8,["is-open","onBackdropClicked"])):(0,Co.kq)("",!0)}]]);var fu={class:"status-history-modal-panel panel"},gu={class:"panel-heading"},vu={class:"panel-body"},wu={key:0,class:"history-body"};const bu={components:{Modal:Wt.Z,Status:eu.default},data:function(){return{statuses:[]}},computed:{modalActivated:function(){return this.$store.state.statusHistory.modalActivated},params:function(){return this.$store.state.statusHistory.params},statusId:function(){return this.params.id},historyCount:function(){return this.statuses.length},history:function(){return this.statuses}},watch:{params:function(e,t){var n=Dt()(e,"id")!==Dt()(t,"id");n&&this.resetHistory(),(n||Dt()(e,"edited_at")!==Dt()(t,"edited_at"))&&this.fetchStatusHistory()}},methods:{resetHistory:function(){this.statuses=[]},fetchStatusHistory:function(){var e=this;this.$store.dispatch("fetchStatusHistory",this.params).then((function(t){e.statuses=t}))},closeModal:function(){this.$store.dispatch("closeStatusHistoryModal")}}},yu=(0,Jo.Z)(bu,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("status"),a=(0,Co.up)("Modal");return e.modalActivated?((0,Co.wg)(),(0,Co.j4)(a,{key:0,class:"status-history-modal-view",onBackdropClicked:e.closeModal},{default:(0,Co.w5)((function(){return[(0,Co._)("div",fu,[(0,Co._)("div",gu,(0,So.zw)(e.$t("status.status_history"))+" ("+(0,So.zw)(e.historyCount)+") ",1),(0,Co._)("div",vu,[e.historyCount>0?((0,Co.wg)(),(0,Co.iD)("div",wu,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.history,(function(e){return(0,Co.wg)(),(0,Co.j4)(s,{key:e.id,statusoid:e,"is-preview":!0,class:"conversation-status status-fadein panel-body"},null,8,["statusoid"])})),128))])):(0,Co.kq)("",!0)])])]})),_:1},8,["onBackdropClicked"])):(0,Co.kq)("",!0)}]]);var Du={class:"global-notice-list"},_u={class:"notice-message"},ku=["onClick"];Ht.vI.add(Vt.NBC);const Cu={computed:{notices:function(){return this.$store.state.interface.globalNotices}},methods:{closeNotice:function(e){this.$store.dispatch("removeGlobalNotice",e)}}},Su=(0,Jo.Z)(Cu,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon");return(0,Co.wg)(),(0,Co.iD)("div",Du,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.notices,(function(t,n){return(0,Co.wg)(),(0,Co.iD)("div",{key:n,class:(0,So.C_)(["alert global-notice",(0,d.Z)({},"global-"+t.level,!0)])},[(0,Co._)("div",_u,(0,So.zw)(e.$t(t.messageKey,t.messageArgs)),1),(0,Co._)("button",{class:"button-unstyled close-notice",onClick:function(n){return e.closeNotice(t)}},[(0,Co.Wm)(s,{class:"fa-scale-110 fa-old-padding",icon:"times"})],8,ku)],2)})),128))])}]]);function ju(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const Fu={name:"app",components:{UserPanel:Br,NavPanel:_i,Notifications:(0,Co.RC)((function(){return Promise.resolve().then(n.bind(n,93737))})),InstanceSpecificPanel:Ai,FeaturesPanel:Ri,WhoToFollowPanel:ts,ShoutPanel:gs,MediaModal:Zs,SideDrawer:ta,MobilePostStatusButton:aa,MobileNav:Sa,DesktopNav:Na,SettingsModal:(0,Co.RC)((function(){return n.e(7586).then(n.bind(n,27586))})),UpdateNotification:(0,Co.RC)((function(){return n.e(6464).then(n.bind(n,16464))})),UserReportingModal:iu,PostStatusModal:hu,EditStatusModal:lu,StatusHistoryModal:yu,GlobalNoticeList:Su},data:function(){return{mobileActivePanel:"timeline"}},created:function(){var e=this.$store.getters.mergedConfig.interfaceLanguage;this.$store.dispatch("setOption",{name:"interfaceLanguage",value:e}),window.addEventListener("resize",this.updateMobileState)},unmounted:function(){window.removeEventListener("resize",this.updateMobileState)},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ju(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ju(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classes:function(){return[{"-reverse":this.reverseLayout,"-no-sticky-headers":this.noSticky,"-has-new-post-button":this.newPostButtonShown},"-"+this.layoutType]},navClasses:function(){var e=this.$store.getters.mergedConfig.navbarColumnStretch;return["-"+this.layoutType].concat((0,l.Z)(e?["-column-stretch"]:[]))},currentUser:function(){return this.$store.state.users.currentUser},userBackground:function(){return this.currentUser.background_image},instanceBackground:function(){return this.mergedConfig.hideInstanceWallpaper?null:this.$store.state.instance.background},background:function(){return this.userBackground||this.instanceBackground},bgStyle:function(){if(this.background)return{"--body-background-image":"url(".concat(this.background,")")}},shout:function(){return this.$store.state.shout.joined},suggestionsEnabled:function(){return this.$store.state.instance.suggestionsEnabled},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent},isChats:function(){return"chat"===this.$route.name||"chats"===this.$route.name},isListEdit:function(){return"lists-edit"===this.$route.name},newPostButtonShown:function(){return!this.isChats&&!this.isListEdit&&(this.$store.getters.mergedConfig.alwaysShowNewPostButton||"mobile"===this.layoutType)},showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},editingAvailable:function(){return this.$store.state.instance.editingAvailable},shoutboxPosition:function(){return this.$store.getters.mergedConfig.alwaysShowNewPostButton||!1},hideShoutbox:function(){return this.$store.getters.mergedConfig.hideShoutbox},layoutType:function(){return this.$store.state.interface.layoutType},privateMode:function(){return this.$store.state.instance.private},reverseLayout:function(){var e=this.$store.getters.mergedConfig,t=e.thirdColumnMode,n=e.sidebarRight;return"wide"!==this.layoutType||"notifications"===t?n:!n},noSticky:function(){return this.$store.getters.mergedConfig.disableStickyHeaders},showScrollbars:function(){return this.$store.getters.mergedConfig.showScrollbars}},(0,s.Se)(["mergedConfig"])),methods:{updateMobileState:function(){this.$store.dispatch("setLayoutWidth",Te()),this.$store.dispatch("setLayoutHeight",$e())}}},Au=(0,Jo.Z)(Fu,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("MobileNav"),a=(0,Co.up)("DesktopNav"),u=(0,Co.up)("Notifications"),c=(0,Co.up)("user-panel"),l=(0,Co.up)("nav-panel"),d=(0,Co.up)("instance-specific-panel"),p=(0,Co.up)("features-panel"),m=(0,Co.up)("who-to-follow-panel"),h=(0,Co.up)("router-link"),f=(0,Co.up)("router-view"),g=(0,Co.up)("MediaModal"),v=(0,Co.up)("shout-panel"),w=(0,Co.up)("MobilePostStatusButton"),b=(0,Co.up)("UserReportingModal"),y=(0,Co.up)("PostStatusModal"),D=(0,Co.up)("EditStatusModal"),_=(0,Co.up)("StatusHistoryModal"),k=(0,Co.up)("SettingsModal"),C=(0,Co.up)("UpdateNotification"),S=(0,Co.up)("GlobalNoticeList");return(0,Co.wg)(),(0,Co.iD)("div",{id:"app-loaded",style:(0,So.j5)(e.bgStyle)},[jo,"mobile"===e.layoutType?((0,Co.wg)(),(0,Co.j4)(s,{key:0})):((0,Co.wg)(),(0,Co.j4)(a,{key:1,class:(0,So.C_)(e.navClasses)},null,8,["class"])),e.currentUser?((0,Co.wg)(),(0,Co.j4)(u,{key:2})):(0,Co.kq)("",!0),(0,Co._)("div",{id:"content",class:(0,So.C_)(["app-layout container",e.classes])},[Fo,(0,Co._)("div",{id:"sidebar",class:(0,So.C_)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},[(0,Co.Wm)(c),"mobile"!==e.layoutType?((0,Co.wg)(),(0,Co.iD)(Co.HY,{key:0},[(0,Co.Wm)(l),e.showInstanceSpecificPanel?((0,Co.wg)(),(0,Co.j4)(d,{key:0})):(0,Co.kq)("",!0),!e.currentUser&&e.showFeaturesPanel?((0,Co.wg)(),(0,Co.j4)(p,{key:1})):(0,Co.kq)("",!0),e.currentUser&&e.suggestionsEnabled?((0,Co.wg)(),(0,Co.j4)(m,{key:2})):(0,Co.kq)("",!0),Ao],64)):(0,Co.kq)("",!0)],2),(0,Co._)("main",{id:"main-scroller",class:(0,So.C_)(["column main",{"-full-height":e.isChats||e.isListEdit}])},[e.currentUser?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("div",Oo,[(0,Co.Wm)(h,{to:{name:"login"},class:"panel-body"},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("login.hint")),1)]})),_:1})])),(0,Co.Wm)(f)],2),(0,Co._)("div",{id:"notifs-column",class:(0,So.C_)(["column -scrollable",{"-show-scrollbar":e.showScrollbars}])},null,2)],2),(0,Co.Wm)(g),e.currentUser&&e.shout&&!e.hideShoutbox?((0,Co.wg)(),(0,Co.j4)(v,{key:3,floating:!0,class:(0,So.C_)(["floating-shout mobile-hidden",{"-left":e.shoutboxPosition}])},null,8,["class"])):(0,Co.kq)("",!0),(0,Co.Wm)(w),(0,Co.Wm)(b),(0,Co.Wm)(y),e.editingAvailable?((0,Co.wg)(),(0,Co.j4)(D,{key:4})):(0,Co.kq)("",!0),e.editingAvailable?((0,Co.wg)(),(0,Co.j4)(_,{key:5})):(0,Co.kq)("",!0),(0,Co.Wm)(k),(0,Co.Wm)(C),(0,Co.Wm)(S)],4)}]]);var Ou={key:1,class:"rightside-button"},Eu=["title"],zu={key:0,class:"rightside-button"},Pu=["title"],Iu={class:"alert-badge"},xu=["title"],Tu={ref:"timeline",class:"timeline",role:"feed"},$u={key:0,class:"new-status-notification text-center faint"},Bu={key:1,class:"new-status-notification text-center faint"},Uu={class:"new-status-notification text-center"},Mu={key:3,class:"new-status-notification text-center"},Lu=n(24350),Ru=n.n(Lu),qu=n(23493),Nu=n.n(qu),Zu={key:0,class:"panel-heading conversation-heading -sticky"},Wu={class:"title"},Hu={class:"conversation-body panel-body"},Vu={key:0,class:"thread-body"},Ku={key:0,class:"conversation-dive-to-top-level-box"},Gu={key:1,class:"thread-ancestors"},Yu={key:0,class:"thread-ancestor-dive-box"},Ju={class:"thread-ancestor-dive-box-inner"},Qu={key:1,class:"thread-body"},Xu=n(66678),ec=n.n(Xu),tc={class:"thread-tree"},nc={key:0,class:"thread-tree-replies"},oc={key:1,class:"thread-tree-replies thread-tree-replies-hidden"};Ht.vI.add(Vt.Sbq,Vt.cLY);const rc={components:{Status:eu.default},name:"ThreadTree",props:{depth:Number,status:Object,inProfile:Boolean,conversation:Array,collapsable:Boolean,isExpanded:Boolean,pinnedStatusIdsObject:Object,profileUserId:String,focused:Function,highlight:String,getReplies:Function,setHighlight:Function,toggleExpanded:Function,simple:Boolean,toggleThreadDisplay:Function,threadDisplayStatus:Object,showThreadRecursively:Function,totalReplyCount:Object,totalReplyDepth:Object,statusContentProperties:Object,setStatusContentProperty:Function,toggleStatusContentProperty:Function,dive:Function},computed:{suspendable:function(){var e=!this.$refs.statusComponent||this.$refs.statusComponent.suspendable;return this.$refs.childComponent?e&&this.$refs.childComponent.every((function(e){return e.suspendable})):e},reverseLookupTable:function(){return this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{})},currentReplies:function(){var e=this;return this.getReplies(this.status.id).map((function(t){var n=t.id;return e.statusById(n)}))},threadShowing:function(){return"showing"===this.threadDisplayStatus[this.status.id]},currentProp:function(){return this.statusContentProperties[this.status.id]}},methods:{statusById:function(e){return this.conversation[this.reverseLookupTable[e]]},collapseThread:function(){},showThread:function(){},showAllSubthreads:function(){},toggleCurrentProp:function(e){this.toggleStatusContentProperty(this.status.id,e)},setCurrentProp:function(e,t){this.setStatusContentProperty(this.status.id,e)}}},ic=(0,Jo.Z)(rc,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("status"),a=(0,Co.up)("thread-tree"),u=(0,Co.up)("FAIcon"),c=(0,Co.up)("i18n-t");return(0,Co.wg)(),(0,Co.iD)("article",tc,[((0,Co.wg)(),(0,Co.j4)(s,{key:e.status.id,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:e.status,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[e.status.id],focused:e.focused(e.status.id),"in-conversation":e.isExpanded,highlight:e.highlight,replies:e.getReplies(e.status.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status conversation-status-treeview status-fadein panel-body","simple-tree":e.simple,"controlled-thread-display-status":e.threadDisplayStatus[e.status.id],"controlled-toggle-thread-display":function(){return e.toggleThreadDisplay(e.status.id)},"controlled-showing-tall":e.currentProp.showingTall,"controlled-expanding-subject":e.currentProp.expandingSubject,"controlled-showing-long-subject":e.currentProp.showingLongSubject,"controlled-replying":e.currentProp.replying,"controlled-media-playing":e.currentProp.mediaPlaying,"controlled-toggle-showing-tall":function(){return e.toggleCurrentProp("showingTall")},"controlled-toggle-expanding-subject":function(){return e.toggleCurrentProp("expandingSubject")},"controlled-toggle-showing-long-subject":function(){return e.toggleCurrentProp("showingLongSubject")},"controlled-toggle-replying":function(){return e.toggleCurrentProp("replying")},"controlled-set-media-playing":function(t){return e.setCurrentProp("mediaPlaying",t)},dive:e.dive?function(){return e.dive(e.status.id)}:void 0,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","controlled-thread-display-status","controlled-toggle-thread-display","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","dive","onGoto","onToggleExpanded"])),e.currentReplies.length&&e.threadShowing?((0,Co.wg)(),(0,Co.iD)("div",nc,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.currentReplies,(function(t){return(0,Co.wg)(),(0,Co.j4)(a,{key:t.id,ref_for:!0,ref:"childComponent",depth:e.depth+1,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.highlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.simple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.dive},null,8,["depth","status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"])})),128))])):(0,Co.kq)("",!0),e.currentReplies.length&&!e.threadShowing?((0,Co.wg)(),(0,Co.iD)("div",oc,[e.simple?((0,Co.wg)(),(0,Co.j4)(c,{key:0,scope:"global",tag:"button",keypath:"status.thread_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[0]||(t[0]=(0,wo.iM)((function(t){return e.dive(e.status.id)}),["prevent"]))},{icon:(0,Co.w5)((function(){return[(0,Co.Wm)(u,{icon:"angle-double-right"})]})),text:(0,Co.w5)((function(){return[(0,Co._)("span",null,(0,So.zw)(e.$tc("status.thread_follow",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id]})),1)]})),_:1})):((0,Co.wg)(),(0,Co.j4)(c,{key:1,scope:"global",tag:"button",keypath:"status.thread_show_full_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:t[1]||(t[1]=(0,wo.iM)((function(t){return e.showThreadRecursively(e.status.id)}),["prevent"]))},{icon:(0,Co.w5)((function(){return[(0,Co.Wm)(u,{icon:"angle-double-down"})]})),text:(0,Co.w5)((function(){return[(0,Co._)("span",null,(0,So.zw)(e.$tc("status.thread_show_full",e.totalReplyCount[e.status.id],{numStatus:e.totalReplyCount[e.status.id],depth:e.totalReplyDepth[e.status.id]})),1)]})),_:1}))])):(0,Co.kq)("",!0)])}]]);var sc={class:"dropdown-menu",role:"menu"},ac={key:0,role:"group"},uc=["aria-checked"],cc=["aria-checked"],lc=["aria-checked"],dc={key:3,role:"separator",class:"dropdown-divider"},pc=["aria-checked"],mc=["aria-checked"],hc=["aria-checked"],fc=n(84535);function gc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function vc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?gc(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):gc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.G_j,Vt.yGG,Vt.klh);const wc={props:{conversation:Boolean},components:{Popover:fc.default},methods:{setReplyVisibility:function(e){this.$store.dispatch("setOption",{name:"replyVisibility",value:e}),this.$store.dispatch("queueFlushAll")},openTab:function(e){this.$store.dispatch("openSettingsModalTab",e)}},computed:vc(vc({},(0,s.Se)(["mergedConfig"])),{},{loggedIn:function(){return!!this.$store.state.users.currentUser},replyVisibilitySelf:{get:function(){return"self"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("self")}},replyVisibilityFollowing:{get:function(){return"following"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("following")}},replyVisibilityAll:{get:function(){return"all"===this.mergedConfig.replyVisibility},set:function(){this.setReplyVisibility("all")}},hideMedia:{get:function(){return this.mergedConfig.hideAttachments||this.mergedConfig.hideAttachmentsInConv},set:function(){var e=!this.hideMedia;this.$store.dispatch("setOption",{name:"hideAttachments",value:e}),this.$store.dispatch("setOption",{name:"hideAttachmentsInConv",value:e})}},hideMutedPosts:{get:function(){return this.mergedConfig.hideFilteredStatuses},set:function(){var e=!this.hideMutedPosts;this.$store.dispatch("setOption",{name:"hideFilteredStatuses",value:e})}},muteBotStatuses:{get:function(){return this.mergedConfig.muteBotStatuses},set:function(){var e=!this.muteBotStatuses;this.$store.dispatch("setOption",{name:"muteBotStatuses",value:e})}}})},bc=(0,Jo.Z)(wc,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon"),a=(0,Co.up)("Popover");return(0,Co.wg)(),(0,Co.j4)(a,{trigger:"click",class:"QuickFilterSettings","bound-to":{x:"container"},"trigger-attrs":{title:e.$t("timeline.quick_filter_settings")}},{content:(0,Co.w5)((function(){return[(0,Co._)("div",sc,[e.loggedIn?((0,Co.wg)(),(0,Co.iD)("div",ac,[e.conversation?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:"button-default dropdown-item","aria-checked":e.replyVisibilityAll,role:"menuitemradio",onClick:t[0]||(t[0]=function(t){return e.replyVisibilityAll=!0})},[(0,Co._)("span",{class:(0,So.C_)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityAll}]),"aria-hidden":!0},null,2),(0,Co.Uk)((0,So.zw)(e.$t("settings.reply_visibility_all")),1)],8,uc)),e.conversation?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("button",{key:1,class:"button-default dropdown-item","aria-checked":e.replyVisibilityFollowing,role:"menuitemradio",onClick:t[1]||(t[1]=function(t){return e.replyVisibilityFollowing=!0})},[(0,Co._)("span",{class:(0,So.C_)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilityFollowing}]),"aria-hidden":!0},null,2),(0,Co.Uk)((0,So.zw)(e.$t("settings.reply_visibility_following_short")),1)],8,cc)),e.conversation?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("button",{key:2,class:"button-default dropdown-item","aria-checked":e.replyVisibilitySelf,role:"menuitemradio",onClick:t[2]||(t[2]=function(t){return e.replyVisibilitySelf=!0})},[(0,Co._)("span",{class:(0,So.C_)(["menu-checkbox -radio",{"menu-checkbox-checked":e.replyVisibilitySelf}]),"aria-hidden":!0},null,2),(0,Co.Uk)((0,So.zw)(e.$t("settings.reply_visibility_self_short")),1)],8,lc)),e.conversation?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("div",dc))])):(0,Co.kq)("",!0),(0,Co._)("button",{class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.muteBotStatuses,onClick:t[3]||(t[3]=function(t){return e.muteBotStatuses=!e.muteBotStatuses})},[(0,Co._)("span",{class:(0,So.C_)(["menu-checkbox",{"menu-checkbox-checked":e.muteBotStatuses}]),"aria-hidden":!0},null,2),(0,Co.Uk)((0,So.zw)(e.$t("settings.mute_bot_posts")),1)],8,pc),(0,Co._)("button",{class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.hideMedia,onClick:t[4]||(t[4]=function(t){return e.hideMedia=!e.hideMedia})},[(0,Co._)("span",{class:(0,So.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hideMedia}]),"aria-hidden":!0},null,2),(0,Co.Uk)((0,So.zw)(e.$t("settings.hide_media_previews")),1)],8,mc),(0,Co._)("button",{class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.hideMutedPosts,onClick:t[5]||(t[5]=function(t){return e.hideMutedPosts=!e.hideMutedPosts})},[(0,Co._)("span",{class:(0,So.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hideMutedPosts}]),"aria-hidden":!0},null,2),(0,Co.Uk)((0,So.zw)(e.$t("settings.hide_all_muted_posts")),1)],8,hc),(0,Co._)("button",{class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:t[6]||(t[6]=function(t){return e.openTab("filtering")})},[(0,Co.Wm)(s,{icon:"font"}),(0,Co.Uk)((0,So.zw)(e.$t("settings.word_filter_and_more")),1)])])]})),trigger:(0,Co.w5)((function(){return[(0,Co.Wm)(s,{icon:"filter"})]})),_:1},8,["trigger-attrs"])}]]);var yc={class:"dropdown-menu",role:"menu"},Dc={role:"group"},_c=["aria-checked"],kc=["aria-checked"],Cc=(0,Co._)("div",{role:"separator",class:"dropdown-divider"},null,-1),Sc=["aria-checked"],jc=["aria-checked"],Fc=["aria-checked"];function Ac(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Oc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ac(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ac(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.Zrf,Vt.lCn,Vt.xiG,Vt.klh);const Ec={props:{conversation:Boolean},components:{Popover:fc.default},methods:{setConversationDisplay:function(e){this.$store.dispatch("setOption",{name:"conversationDisplay",value:e})},openTab:function(e){this.$store.dispatch("openSettingsModalTab",e)}},computed:Oc(Oc({},(0,s.Se)(["mergedConfig"])),{},{loggedIn:function(){return!!this.$store.state.users.currentUser},conversationDisplay:{get:function(){return this.mergedConfig.conversationDisplay},set:function(e){this.setConversationDisplay(e)}},autoUpdate:{get:function(){return this.mergedConfig.streaming},set:function(){var e=!this.autoUpdate;this.$store.dispatch("setOption",{name:"streaming",value:e})}},collapseWithSubjects:{get:function(){return this.mergedConfig.collapseMessageWithSubject},set:function(){var e=!this.collapseWithSubjects;this.$store.dispatch("setOption",{name:"collapseMessageWithSubject",value:e})}},showUserAvatars:{get:function(){return this.mergedConfig.mentionLinkShowAvatar},set:function(){var e=!this.showUserAvatars;console.log(e),this.$store.dispatch("setOption",{name:"mentionLinkShowAvatar",value:e})}},muteBotStatuses:{get:function(){return this.mergedConfig.muteBotStatuses},set:function(){var e=!this.muteBotStatuses;this.$store.dispatch("setOption",{name:"muteBotStatuses",value:e})}}})},zc=(0,Jo.Z)(Ec,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon"),a=(0,Co.up)("Popover");return(0,Co.wg)(),(0,Co.j4)(a,{trigger:"click",class:"QuickViewSettings","bound-to":{x:"container"},"trigger-attrs":{title:e.$t("timeline.quick_view_settings")}},{content:(0,Co.w5)((function(){return[(0,Co._)("div",yc,[(0,Co._)("div",Dc,[(0,Co._)("button",{class:"button-default dropdown-item","aria-checked":"tree"===e.conversationDisplay,role:"menuitemradio",onClick:t[0]||(t[0]=function(t){return e.conversationDisplay="tree"})},[(0,Co._)("span",{class:(0,So.C_)(["menu-checkbox -radio",{"menu-checkbox-checked":"tree"===e.conversationDisplay}]),"aria-hidden":!0},null,2),(0,Co.Wm)(s,{icon:"folder-tree","aria-hidden":!0}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("settings.conversation_display_tree_quick")),1)],8,_c),(0,Co._)("button",{class:"button-default dropdown-item","aria-checked":"linear"===e.conversationDisplay,role:"menuitemradio",onClick:t[1]||(t[1]=function(t){return e.conversationDisplay="linear"})},[(0,Co._)("span",{class:(0,So.C_)(["menu-checkbox -radio",{"menu-checkbox-checked":"linear"===e.conversationDisplay}]),"aria-hidden":!0},null,2),(0,Co.Wm)(s,{icon:"list","aria-hidden":!0}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("settings.conversation_display_linear_quick")),1)],8,kc)]),Cc,(0,Co._)("button",{class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.showUserAvatars,onClick:t[2]||(t[2]=function(t){return e.showUserAvatars=!e.showUserAvatars})},[(0,Co._)("span",{class:(0,So.C_)(["menu-checkbox",{"menu-checkbox-checked":e.showUserAvatars}]),"aria-hidden":!0},null,2),(0,Co.Uk)((0,So.zw)(e.$t("settings.mention_link_show_avatar_quick")),1)],8,Sc),e.conversation?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.autoUpdate,onClick:t[3]||(t[3]=function(t){return e.autoUpdate=!e.autoUpdate})},[(0,Co._)("span",{class:(0,So.C_)(["menu-checkbox",{"menu-checkbox-checked":e.autoUpdate}]),"aria-hidden":!0},null,2),(0,Co.Uk)((0,So.zw)(e.$t("settings.auto_update")),1)],8,jc)),e.conversation?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("button",{key:1,class:"button-default dropdown-item",role:"menuitemcheckbox","aria-checked":e.collapseWithSubjects,onClick:t[4]||(t[4]=function(t){return e.collapseWithSubjects=!e.collapseWithSubjects})},[(0,Co._)("span",{class:(0,So.C_)(["menu-checkbox",{"menu-checkbox-checked":e.collapseWithSubjects}]),"aria-hidden":!0},null,2),(0,Co.Uk)((0,So.zw)(e.$t("settings.collapse_subject")),1)],8,Fc)),(0,Co._)("button",{class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:t[5]||(t[5]=function(t){return e.openTab("general")})},[(0,Co.Wm)(s,{icon:"wrench"}),(0,Co.Uk)((0,So.zw)(e.$t("settings.more_settings")),1)])])]})),trigger:(0,Co.w5)((function(){return[(0,Co.Wm)(s,{icon:"bars"})]})),_:1},8,["trigger-attrs"])}]]);function Pc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Ic(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pc(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.Sbq,Vt.UXu,Vt.A35);var xc=function(e,t){var n="retweet"===e.type?e.retweeted_status.id:e.id,o="retweet"===t.type?t.retweeted_status.id:t.id,r=Number(n),i=Number(o),s=!Number.isNaN(r),a=!Number.isNaN(i);return s&&a?r<i?-1:1:s&&!a?-1:!s&&a?1:n<o?-1:1};const Tc={data:function(){return{highlight:null,expanded:!1,threadDisplayStatusObject:{},statusContentPropertiesObject:{},inlineDivePosition:null}},props:["statusId","collapsable","isPage","pinnedStatusIdsObject","inProfile","profileUserId","virtualHidden"],created:function(){this.isPage&&this.fetchConversation()},computed:Ic(Ic({maxDepthToShowByDefault:function(){var e=this.$store.getters.mergedConfig.maxDepthInThread-2;return e>=1?e:1},streamingEnabled:function(){return this.mergedConfig.useStreamingApi&&this.mastoUserSocketStatus===h._z.JOINED},displayStyle:function(){return this.$store.getters.mergedConfig.conversationDisplay},isTreeView:function(){return!this.isLinearView},treeViewIsSimple:function(){return!this.$store.getters.mergedConfig.conversationTreeAdvanced},isLinearView:function(){return"linear"===this.displayStyle},shouldFadeAncestors:function(){return this.$store.getters.mergedConfig.conversationTreeFadeAncestors},otherRepliesButtonPosition:function(){return this.$store.getters.mergedConfig.conversationOtherRepliesButton},showOtherRepliesButtonBelowStatus:function(){return"below"===this.otherRepliesButtonPosition},showOtherRepliesButtonInsideStatus:function(){return"inside"===this.otherRepliesButtonPosition},suspendable:function(){return this.isTreeView?Object.entries(this.statusContentProperties).every((function(e){var t=(0,c.Z)(e,2),n=(t[0],t[1]);return!n.replying&&0===n.mediaPlaying.length})):!this.$refs.statusComponent||!this.$refs.statusComponent[0]||this.$refs.statusComponent.every((function(e){return e.suspendable}))},hideStatus:function(){return this.virtualHidden&&this.suspendable},status:function(){return this.$store.state.statuses.allStatusesObject[this.statusId]},originalStatusId:function(){return this.status.retweeted_status?this.status.retweeted_status.id:this.statusId},conversationId:function(){return this.getConversationId(this.statusId)},conversation:function(){if(!this.status)return[];if(!this.isExpanded)return[this.status];var e=ec()(this.$store.state.statuses.conversationsObject[this.conversationId]),t=R()(e,{id:this.originalStatusId});return-1!==t&&(e[t]=this.status),function(e,t){return(e="retweet"===t.type?In()(e,(function(e){return"retweet"===e.type||e.id!==t.retweeted_status.id})):In()(e,(function(e){return"retweet"!==e.type}))).filter((function(e){return e})).sort(xc)}(e,this.status)},statusMap:function(){return this.conversation.reduce((function(e,t){return e[t.id]=t,e}),{})},threadTree:function(){var e=this,t=this.conversation.reduce((function(e,t,n){return e[t.id]=n,e}),{}),n=function n(o,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return r.map((function(r){return s[r]?[]:(s[r]=!0,[{status:e.conversation[t[r]],id:r,depth:i},n(o,o[r],i+1,s)].reduce((function(e,t){return e.concat(t)}),[]))})).reduce((function(e,t){return e.concat(t)}),[])}(this.conversation.reduce((function(t,n){var o=n.id;return t.forest[o]=e.getReplies(o).map((function(e){return e.id})),t}),{forest:{}}).forest,this.topLevel.map((function(e){return e.id})));return n},replyIds:function(){var e=this;return this.conversation.map((function(e){return e.id})).reduce((function(t,n){return t[n]=(e.replies[n]||[]).map((function(e){return e.id})),t}),{})},totalReplyCount:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(o){return t[o]||(t[o]=1+e.replyIds[o].map((function(e){return n(e)})).reduce((function(e,t){return e+t}),0)),t[o]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},totalReplyDepth:function(){var e=this,t={};return this.conversation.map((function(e){return e.id})).map((function n(o){return t[o]||(t[o]=1+e.replyIds[o].map((function(e){return n(e)})).reduce((function(e,t){return e>t?e:t}),0)),t[o]})),Object.keys(t).reduce((function(e,n){return e[n]=t[n]-1,e}),{})},depths:function(){return this.threadTree.reduce((function(e,t){return e[t.id]=t.depth,e}),{})},topLevel:function(){var e=this;return this.conversation.reduce((function(t,n){return t.filter((function(t){return-1===e.getReplies(n.id).map((function(e){return e.id})).indexOf(t.id)}))}),this.conversation)},otherTopLevelCount:function(){return this.topLevel.length-1},showingTopLevel:function(){return this.canDive&&this.diveRoot?[this.statusMap[this.diveRoot]]:this.topLevel},diveRoot:function(){var e=this.inlineDivePosition||this.statusId;return this.parentOf(e)?e:null},diveDepth:function(){return this.canDive&&this.diveRoot?this.depths[this.diveRoot]:0},diveMode:function(){return this.canDive&&!!this.diveRoot},shouldShowAllConversationButton:function(){return this.isTreeView&&this.isExpanded&&this.diveMode&&this.topLevel.length>1},shouldShowAncestors:function(){return this.isTreeView&&this.isExpanded&&this.ancestorsOf(this.diveRoot).length},replies:function(){var e=1;return Ue()(this.conversation,(function(t,n){var o=n.id,r=n.in_reply_to_status_id;return r&&(t[r]=t[r]||[],t[r].push({name:"#".concat(e),id:o})),e++,t}),{})},isExpanded:function(){return!(!this.expanded&&!this.isPage)},hiddenStyle:function(){var e=this.status&&this.status.virtualHeight||"120px";return this.virtualHidden?{height:e}:{}},threadDisplayStatus:function(){var e=this;return this.conversation.reduce((function(t,n){var o=n.id,r=e.depths[o],i=e.threadDisplayStatusObject[o]?e.threadDisplayStatusObject[o]:r-e.diveDepth<=e.maxDepthToShowByDefault?"showing":"hidden";return t[o]=i,t}),{})},statusContentProperties:function(){var e=this;return this.conversation.reduce((function(t,n){var o,r=n.id,i=(o={showingTall:!1,expandingSubject:!1,showingLongSubject:!1,isReplying:!1,mediaPlaying:[]},e.statusContentPropertiesObject[r]?Ic(Ic({},o),e.statusContentPropertiesObject[r]):o);return t[r]=i,t}),{})},canDive:function(){return this.isTreeView&&this.isExpanded},focused:function(){var e=this;return function(t){return e.isExpanded&&t===e.highlight}},maybeHighlight:function(){return this.isExpanded?this.highlight:null}},(0,s.Se)(["mergedConfig"])),(0,s.rn)({mastoUserSocketStatus:function(e){return e.api.mastoUserSocketStatus}})),components:{Status:eu.default,ThreadTree:ic,QuickFilterSettings:bc,QuickViewSettings:zc},watch:{statusId:function(e,t){var n=this.getConversationId(e),o=this.getConversationId(t);n&&o&&n===o?this.setHighlight(this.originalStatusId):this.fetchConversation()},expanded:function(e){e?this.fetchConversation():this.resetDisplayState()},virtualHidden:function(e){this.$store.dispatch("setVirtualHeight",{statusId:this.statusId,height:"".concat(this.$el.clientHeight,"px")})}},methods:{fetchConversation:function(){var e=this;this.status?this.$store.state.api.backendInteractor.fetchConversation({id:this.statusId}).then((function(t){var n=t.ancestors,o=t.descendants;e.$store.dispatch("addNewStatuses",{statuses:n}),e.$store.dispatch("addNewStatuses",{statuses:o}),e.setHighlight(e.originalStatusId)})):this.$store.state.api.backendInteractor.fetchStatus({id:this.statusId}).then((function(t){e.$store.dispatch("addNewStatuses",{statuses:[t]}),e.fetchConversation()}))},getReplies:function(e){return this.replies[e]||[]},getHighlight:function(){return this.isExpanded?this.highlight:null},setHighlight:function(e){e&&(this.highlight=e,this.streamingEnabled||this.$store.dispatch("fetchStatus",e),this.$store.dispatch("fetchFavsAndRepeats",e),this.$store.dispatch("fetchEmojiReactionsBy",e))},toggleExpanded:function(){this.expanded=!this.expanded},getConversationId:function(e){var t=this.$store.state.statuses.allStatusesObject[e];return Dt()(t,"retweeted_status.statusnet_conversation_id",Dt()(t,"statusnet_conversation_id"))},setThreadDisplay:function(e,t){this.threadDisplayStatusObject=Ic(Ic({},this.threadDisplayStatusObject),{},(0,d.Z)({},e,t))},toggleThreadDisplay:function(e){var t="showing"===this.threadDisplayStatus[e]?"hidden":"showing";this.setThreadDisplay(e,t)},setThreadDisplayRecursively:function(e,t){var n=this;this.setThreadDisplay(e,t),this.getReplies(e).map((function(e){return e.id})).map((function(e){return n.setThreadDisplayRecursively(e,t)}))},showThreadRecursively:function(e){this.setThreadDisplayRecursively(e,"showing")},setStatusContentProperty:function(e,t,n){this.statusContentPropertiesObject=Ic(Ic({},this.statusContentPropertiesObject),{},(0,d.Z)({},e,Ic(Ic({},this.statusContentPropertiesObject[e]),{},(0,d.Z)({},t,n))))},toggleStatusContentProperty:function(e,t){this.setStatusContentProperty(e,t,!this.statusContentProperties[e][t])},leastVisibleAncestor:function(e){for(var t=e,n=this.parentOf(t);t;){if("showing"===this.threadDisplayStatus[n])return t;n=this.parentOf(n),t=this.parentOf(t)}return this.topLevel[0]?this.topLevel[0].id:void 0},diveIntoStatus:function(e,t){this.tryScrollTo(e)},diveToTopLevel:function(){this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot)||this.topLevel[0].id)},undive:function(){this.inlineDivePosition=null,this.setHighlight(this.statusId)},tryScrollTo:function(e){var t=this;e&&(this.isPage?this.$router.push({name:"conversation",params:{id:e}}):this.inlineDivePosition=e,this.$nextTick((function(){t.setHighlight(e)})))},goToCurrent:function(){this.tryScrollTo(this.diveRoot||this.topLevel[0].id)},statusById:function(e){return this.statusMap[e]},parentOf:function(e){var t=this.statusById(e);if(t){var n=t.in_reply_to_status_id;if(this.statusMap[n])return n}},parentOrSelf:function(e){return this.parentOf(e)||e},ancestorsOf:function(e){for(var t=[],n=this.parentOf(e);n;)t.unshift(this.statusMap[n]),n=this.parentOf(n);return t},topLevelAncestorOrSelfId:function(e){for(var t=e,n=this.parentOf(e);n;)t=this.parentOf(t),n=this.parentOf(n);return t},resetDisplayState:function(){this.undive(),this.threadDisplayStatusObject={}}}},$c=(0,Jo.Z)(Tc,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("QuickFilterSettings"),a=(0,Co.up)("QuickViewSettings"),u=(0,Co.up)("FAIcon"),c=(0,Co.up)("i18n-t"),l=(0,Co.up)("status"),d=(0,Co.up)("thread-tree");return e.hideStatus?((0,Co.wg)(),(0,Co.iD)("div",{key:1,style:(0,So.j5)(e.hiddenStyle)},null,4)):((0,Co.wg)(),(0,Co.iD)("div",{key:0,style:(0,So.j5)(e.hiddenStyle),class:(0,So.C_)(["Conversation",{"-expanded":e.isExpanded,panel:e.isExpanded}])},[e.isExpanded?((0,Co.wg)(),(0,Co.iD)("div",Zu,[(0,Co._)("span",Wu,(0,So.zw)(e.$t("timeline.conversation")),1),e.collapsable?((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:"button-unstyled -link",onClick:t[0]||(t[0]=(0,wo.iM)((function(){return e.toggleExpanded&&e.toggleExpanded.apply(e,arguments)}),["prevent"]))},(0,So.zw)(e.$t("timeline.collapse")),1)):(0,Co.kq)("",!0),e.collapsable?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.j4)(s,{key:1,conversation:!0,class:"rightside-button"})),e.collapsable?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.j4)(a,{key:2,conversation:!0,class:"rightside-button"}))])):(0,Co.kq)("",!0),(0,Co._)("div",Hu,[e.isTreeView?((0,Co.wg)(),(0,Co.iD)("div",Vu,[e.shouldShowAllConversationButton?((0,Co.wg)(),(0,Co.iD)("div",Ku,[(0,Co.Wm)(c,{keypath:"status.show_all_conversation_with_icon",tag:"button",class:"button-unstyled -link",scope:"global",onClick:(0,wo.iM)(e.diveToTopLevel,["prevent"])},{icon:(0,Co.w5)((function(){return[(0,Co.Wm)(u,{icon:"angle-double-left"})]})),text:(0,Co.w5)((function(){return[(0,Co._)("span",null,(0,So.zw)(e.$tc("status.show_all_conversation",e.otherTopLevelCount,{numStatus:e.otherTopLevelCount})),1)]})),_:1},8,["onClick"])])):(0,Co.kq)("",!0),e.shouldShowAncestors?((0,Co.wg)(),(0,Co.iD)("div",Gu,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.ancestorsOf(e.diveRoot),(function(t){return(0,Co.wg)(),(0,Co.iD)("article",{key:t.id,class:(0,So.C_)(["thread-ancestor",{"thread-ancestor-has-other-replies":e.getReplies(t.id).length>1,"-faded":e.shouldFadeAncestors}])},[(0,Co.Wm)(l,{ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","simple-tree":e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"show-other-replies-as-button":e.showOtherRepliesButtonInsideStatus,dive:function(){return e.diveIntoStatus(t.id)},"controlled-showing-tall":e.statusContentProperties[t.id].showingTall,"controlled-expanding-subject":e.statusContentProperties[t.id].expandingSubject,"controlled-showing-long-subject":e.statusContentProperties[t.id].showingLongSubject,"controlled-replying":e.statusContentProperties[t.id].replying,"controlled-media-playing":e.statusContentProperties[t.id].mediaPlaying,"controlled-toggle-showing-tall":function(){return e.toggleStatusContentProperty(t.id,"showingTall")},"controlled-toggle-expanding-subject":function(){return e.toggleStatusContentProperty(t.id,"expandingSubject")},"controlled-toggle-showing-long-subject":function(){return e.toggleStatusContentProperty(t.id,"showingLongSubject")},"controlled-toggle-replying":function(){return e.toggleStatusContentProperty(t.id,"replying")},"controlled-set-media-playing":function(n){return e.toggleStatusContentProperty(t.id,"mediaPlaying",n)},onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","simple-tree","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","show-other-replies-as-button","dive","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-replying","controlled-media-playing","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","controlled-toggle-replying","controlled-set-media-playing","onGoto","onToggleExpanded"]),e.showOtherRepliesButtonBelowStatus&&e.getReplies(t.id).length>1?((0,Co.wg)(),(0,Co.iD)("div",Yu,[(0,Co._)("div",Ju,[(0,Co.Wm)(c,{tag:"button",scope:"global",keypath:"status.ancestor_follow_with_icon",class:"button-unstyled -link thread-tree-show-replies-button",onClick:(0,wo.iM)((function(n){return e.diveIntoStatus(t.id)}),["prevent"])},{icon:(0,Co.w5)((function(){return[(0,Co.Wm)(u,{icon:"angle-double-right"})]})),text:(0,Co.w5)((function(){return[(0,Co._)("span",null,(0,So.zw)(e.$tc("status.ancestor_follow",e.getReplies(t.id).length-1,{numReplies:e.getReplies(t.id).length-1})),1)]})),_:2},1032,["onClick"])])])):(0,Co.kq)("",!0)],2)})),128))])):(0,Co.kq)("",!0),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.showingTopLevel,(function(t){return(0,Co.wg)(),(0,Co.j4)(d,{key:t.id,ref_for:!0,ref:"statusComponent",depth:0,status:t,"in-profile":e.inProfile,conversation:e.conversation,collapsable:e.collapsable,"is-expanded":e.isExpanded,"pinned-status-ids-object":e.pinnedStatusIdsObject,"profile-user-id":e.profileUserId,focused:e.focused,"get-replies":e.getReplies,highlight:e.maybeHighlight,"set-highlight":e.setHighlight,"toggle-expanded":e.toggleExpanded,simple:e.treeViewIsSimple,"toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,dive:e.canDive?e.diveIntoStatus:void 0},null,8,["status","in-profile","conversation","collapsable","is-expanded","pinned-status-ids-object","profile-user-id","focused","get-replies","highlight","set-highlight","toggle-expanded","simple","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","dive"])})),128))])):(0,Co.kq)("",!0),e.isLinearView?((0,Co.wg)(),(0,Co.iD)("div",Qu,[(0,Co._)("article",null,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.conversation,(function(t){return(0,Co.wg)(),(0,Co.j4)(l,{key:t.id,ref_for:!0,ref:"statusComponent","inline-expanded":e.collapsable&&e.isExpanded,statusoid:t,expandable:!e.isExpanded,"show-pinned":e.pinnedStatusIdsObject&&e.pinnedStatusIdsObject[t.id],focused:e.focused(t.id),"in-conversation":e.isExpanded,highlight:e.getHighlight(),replies:e.getReplies(t.id),"in-profile":e.inProfile,"profile-user-id":e.profileUserId,class:"conversation-status status-fadein panel-body","toggle-thread-display":e.toggleThreadDisplay,"thread-display-status":e.threadDisplayStatus,"show-thread-recursively":e.showThreadRecursively,"total-reply-count":e.totalReplyCount,"total-reply-depth":e.totalReplyDepth,"status-content-properties":e.statusContentProperties,"set-status-content-property":e.setStatusContentProperty,"toggle-status-content-property":e.toggleStatusContentProperty,onGoto:e.setHighlight,onToggleExpanded:e.toggleExpanded},null,8,["inline-expanded","statusoid","expandable","show-pinned","focused","in-conversation","highlight","replies","in-profile","profile-user-id","toggle-thread-display","thread-display-status","show-thread-recursively","total-reply-count","total-reply-depth","status-content-properties","set-status-content-property","toggle-status-content-property","onGoto","onToggleExpanded"])})),128))])])):(0,Co.kq)("",!0)])],6))}]]);var Bc={key:1},Uc={class:"button-unstyled title timeline-menu-title"},Mc={class:"timeline-title"};function Lc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Rc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Lc(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Lc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.ptq);const qc={components:{Popover:fc.default,NavigationEntry:ri,ListsMenuContent:ui},data:function(){return{isOpen:!1}},created:function(){({friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"})[this.$route.name]&&this.$store.dispatch("setLastTimeline",this.$route.name)},computed:Rc(Rc({useListsMenu:function(){return"lists-timeline"===this.$route.name}},(0,s.rn)({currentUser:function(e){return e.users.currentUser},privateMode:function(e){return e.instance.private},federating:function(e){return e.instance.federating}})),{},{timelinesList:function(){return ii(Object.entries(Jr).map((function(e){var t=(0,c.Z)(e,2),n=t[0];return Rc(Rc({},t[1]),{},{name:n})})),{hasChats:this.pleromaChatMessagesAvailable,isFederating:this.federating,isPrivate:this.privateMode,currentUser:this.currentUser})}}),methods:{openMenu:function(){var e=this;setTimeout((function(){e.isOpen=!0}),25)},blockOpen:function(e){this.isOpen||e.stopPropagation()},timelineName:function(){var e=this.$route.name;if("tag-timeline"===e)return"#"+this.$route.params.tag;if("lists-timeline"===e)return this.$store.getters.findListTitle(this.$route.params.id);var t={friends:"nav.home_timeline",bookmarks:"nav.bookmarks",dms:"nav.dms","public-timeline":"nav.public_tl","public-external-timeline":"nav.twkn"}[this.$route.name];return t?this.$t(t):e}}},Nc=(0,Jo.Z)(qc,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("ListsMenuContent"),a=(0,Co.up)("NavigationEntry"),u=(0,Co.up)("FAIcon"),c=(0,Co.up)("Popover");return(0,Co.wg)(),(0,Co.j4)(c,{trigger:"click",class:(0,So.C_)(["TimelineMenu",{open:e.isOpen}]),"bound-to":{x:"container"},"bound-to-selector":".Timeline","popover-class":"timeline-menu-popover popover-default",onShow:e.openMenu,onClose:t[1]||(t[1]=function(){return e.isOpen=!1})},{content:(0,Co.w5)((function(){return[e.useListsMenu?((0,Co.wg)(),(0,Co.j4)(s,{key:0,"show-pin":!1,class:"timelines"})):((0,Co.wg)(),(0,Co.iD)("ul",Bc,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.timelinesList,(function(e){return(0,Co.wg)(),(0,Co.j4)(a,{key:e.name,"show-pin":!1,item:e},null,8,["item"])})),128))]))]})),trigger:(0,Co.w5)((function(){return[(0,Co._)("span",Uc,[(0,Co._)("span",Mc,(0,So.zw)(e.timelineName()),1),(0,Co._)("span",null,[(0,Co.Wm)(u,{size:"sm",icon:"chevron-down"})]),(0,Co._)("span",{class:"click-blocker",onClick:t[0]||(t[0]=function(){return e.blockOpen&&e.blockOpen.apply(e,arguments)})})])]})),_:1},8,["class","onShow"])}]]);function Zc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}Ht.vI.add(Vt.IJ7,Vt.b7W,Vt.Kl4,Vt.FPD,Vt.EQ8,Vt.LEp);var Wc={props:["timeline","timelineName","title","userId","listId","tag","embedded","count","pinnedStatusIds","inProfile","footerSlipgate"],data:function(){return{showScrollTop:!1,paused:!1,unfocused:!1,bottomedOut:!1,virtualScrollIndex:0,blockingClicks:!1}},components:{Status:eu.default,Conversation:$c,TimelineMenu:Nc,QuickFilterSettings:bc,QuickViewSettings:zc},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zc(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({filteredVisibleStatuses:function(){var e=this;return this.timeline.visibleStatuses.filter((function(t){return"user"!==e.timelineName||t.id>=e.timeline.minId&&t.id<=e.timeline.maxId}))},filteredPinnedStatusIds:function(){var e=this;return(this.pinnedStatusIds||[]).filter((function(t){return e.timeline.statusesObject[t]}))},newStatusCount:function(){return this.timeline.newStatusCount},showLoadButton:function(){return this.timeline.newStatusCount>0||0!==this.timeline.flushMarker},loadButtonString:function(){return 0!==this.timeline.flushMarker?this.$t("timeline.reload"):"".concat(this.$t("timeline.show_new")," (").concat(this.newStatusCount,")")},mobileLoadButtonString:function(){return 0!==this.timeline.flushMarker?"+":this.newStatusCount>99?"∞":this.newStatusCount},classes:function(){var e=this.embedded?["-nonpanel"]:["panel","panel-default"];return this.blockingClicks&&(e=e.concat(["-blocked","_misclick-prevention"])),{root:e,header:["timeline-heading"].concat(this.embedded?[]:["panel-heading","-sticky"]),body:["timeline-body"].concat(this.embedded?[]:["panel-body"]),footer:["timeline-footer"].concat(this.embedded?[]:["panel-footer"])}},pinnedStatusIdsObject:function(){return Ru()(this.pinnedStatusIds)},statusesToDisplay:function(){var e=this.timeline.visibleStatuses.length,t=Math.ceil(Math.max(3,window.innerHeight/80)),n=this.virtualScrollIndex-this.filteredPinnedStatusIds.length,o=Math.max(0,n-t),r=Math.min(e,n+t);return this.timeline.visibleStatuses.slice(o,r).map((function(e){return e.id}))},virtualScrollingEnabled:function(){return this.$store.getters.mergedConfig.virtualScrolling}},(0,s.rn)({mobileLayout:function(e){return"mobile"===e.interface.layoutType}})),created:function(){var e=this.$store,t=e.state.users.currentUser.credentials,n=0===this.timeline.visibleStatuses.length;if(window.addEventListener("scroll",this.handleScroll),e.state.api.fetchers[this.timelineName])return!1;Fe.fetchAndUpdate({store:e,credentials:t,timeline:this.timelineName,showImmediately:n,userId:this.userId,listId:this.listId,tag:this.tag})},mounted:function(){void 0!==document.hidden&&(document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.unfocused=document.hidden),window.addEventListener("keydown",this.handleShortKey),setTimeout(this.determineVisibleStatuses,250)},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),window.removeEventListener("keydown",this.handleShortKey),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.commit("setLoading",{timeline:this.timelineName,value:!1})},methods:{scrollToTop:function(){window.scrollTo({top:this.$el.offsetTop})},stopBlockingClicks:ra()((function(){this.blockingClicks=!1}),1e3),blockClicksTemporarily:function(){this.blockingClicks||(this.blockingClicks=!0),this.stopBlockingClicks()},handleShortKey:function(e){["textarea","input"].includes(e.target.tagName.toLowerCase())||"."===e.key&&this.showNewStatuses()},showNewStatuses:function(){0!==this.timeline.flushMarker?(this.$store.commit("clearTimeline",{timeline:this.timelineName,excludeUserId:!0}),this.$store.commit("queueFlush",{timeline:this.timelineName,id:0}),"user"===this.timelineName&&this.$store.dispatch("fetchPinnedStatuses",this.userId),this.fetchOlderStatuses()):(this.blockClicksTemporarily(),this.$store.commit("showNewStatuses",{timeline:this.timelineName}),this.paused=!1),window.scrollTo({top:0})},fetchOlderStatuses:Nu()((function(){var e=this,t=this.$store,n=t.state.users.currentUser.credentials;t.commit("setLoading",{timeline:this.timelineName,value:!0}),Fe.fetchAndUpdate({store:t,credentials:n,timeline:this.timelineName,older:!0,showImmediately:!0,userId:this.userId,listId:this.listId,tag:this.tag}).then((function(t){var n=t.statuses;n&&0===n.length&&(e.bottomedOut=!0)})).finally((function(){return t.commit("setLoading",{timeline:e.timelineName,value:!1})}))}),1e3,void 0),determineVisibleStatuses:function(){if(this.$refs.timeline&&this.virtualScrollingEnabled){var e=this.$refs.timeline.children,t=Math.max(0,Math.min(this.virtualScrollIndex,e.length-1));if(0!==e.length){var n=Math.max(document.body.offsetHeight,window.pageYOffset),o=window.pageYOffset+.5*window.innerHeight,r=Math.floor(e.length*(o/n)),i=e[r].getBoundingClientRect().y,s=e[t].getBoundingClientRect().y;for(Math.abs(i)>s&&(r=t,i=s);i<-20&&r<e.length-1;)i+=e[r].offsetHeight,r++;for(;i>window.innerHeight+100&&r>0;)i-=e[--r].offsetHeight;this.virtualScrollIndex=r}}},scrollLoad:function(e){var t=document.body.getBoundingClientRect(),n=Math.max(t.height,-t.y);!1===this.timeline.loading&&this.$el.offsetHeight>0&&window.innerHeight+window.pageYOffset>=n-750&&this.fetchOlderStatuses()},handleScroll:Nu()((function(e){this.showScrollTop=this.$el.offsetTop<window.scrollY,this.determineVisibleStatuses(),this.scrollLoad(e)}),200),handleVisibilityChange:function(){this.unfocused=document.hidden}},watch:{newStatusCount:function(e){if(this.$store.getters.mergedConfig.streaming&&e>0){var t=document.documentElement;!((window.pageYOffset||t.scrollTop)-(t.clientTop||0)<15)||this.paused||this.unfocused&&this.$store.getters.mergedConfig.pauseOnUnfocused?this.paused=!0:this.showNewStatuses()}}}};const Hc=Wc,Vc=(0,Jo.Z)(Hc,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("TimelineMenu"),a=(0,Co.up)("FAIcon"),u=(0,Co.up)("FALayers"),c=(0,Co.up)("QuickFilterSettings"),l=(0,Co.up)("QuickViewSettings"),d=(0,Co.up)("conversation");return(0,Co.wg)(),(0,Co.iD)("div",{class:(0,So.C_)(["Timeline",e.classes.root])},[(0,Co._)("div",{class:(0,So.C_)(e.classes.header)},[e.embedded?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.j4)(s,{key:0,"timeline-name":e.timelineName},null,8,["timeline-name"])),e.showScrollTop&&!e.embedded?((0,Co.wg)(),(0,Co.iD)("div",Ou,[(0,Co._)("button",{class:"button-unstyled scroll-to-top-button",type:"button",title:e.$t("general.scroll_to_top"),onClick:t[0]||(t[0]=function(){return e.scrollToTop&&e.scrollToTop.apply(e,arguments)})},[(0,Co.Wm)(u,{class:"fa-scale-110 fa-old-padding-layer"},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{icon:"arrow-up"}),(0,Co.Wm)(a,{icon:"minus",transform:"up-7"})]})),_:1})],8,Eu)])):(0,Co.kq)("",!0),e.mobileLayout&&!e.embedded?((0,Co.wg)(),(0,Co.iD)(Co.HY,{key:2},[e.showLoadButton?((0,Co.wg)(),(0,Co.iD)("div",zu,[(0,Co._)("button",{class:"button-unstyled loadmore-button",title:e.loadButtonString,onClick:t[1]||(t[1]=(0,wo.iM)((function(){return e.showNewStatuses&&e.showNewStatuses.apply(e,arguments)}),["prevent"]))},[(0,Co.Wm)(a,{"fixed-width":"",icon:"circle-plus"}),(0,Co._)("div",Iu,(0,So.zw)(e.mobileLoadButtonString),1)],8,Pu)])):e.embedded?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("div",{key:1,class:"loadmore-text faint veryfaint rightside-icon",title:e.$t("timeline.up_to_date"),"aria-disabled":!0,onClick:t[2]||(t[2]=(0,wo.iM)((function(){}),["prevent"]))},[(0,Co.Wm)(a,{"fixed-width":"",icon:"check"})],8,xu))],64)):((0,Co.wg)(),(0,Co.iD)(Co.HY,{key:3},[e.showLoadButton?((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:"button-default loadmore-button",onClick:t[3]||(t[3]=(0,wo.iM)((function(){return e.showNewStatuses&&e.showNewStatuses.apply(e,arguments)}),["prevent"]))},(0,So.zw)(e.loadButtonString),1)):e.embedded?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("div",{key:1,class:"loadmore-text faint",onClick:t[4]||(t[4]=(0,wo.iM)((function(){}),["prevent"]))},(0,So.zw)(e.$t("timeline.up_to_date")),1))],64)),e.embedded?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.j4)(c,{key:4,class:"rightside-button"})),e.embedded?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.j4)(l,{key:5,class:"rightside-button"}))],2),(0,Co._)("div",{class:(0,So.C_)(e.classes.body)},[(0,Co._)("div",Tu,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.filteredPinnedStatusIds,(function(t){return(0,Co.wg)(),(0,Co.j4)(d,{key:t+"-pinned",role:"listitem",class:"status-fadein","status-id":t,collapsable:!0,"pinned-status-ids-object":e.pinnedStatusIdsObject,"in-profile":e.inProfile,"profile-user-id":e.userId},null,8,["status-id","pinned-status-ids-object","in-profile","profile-user-id"])})),128)),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.filteredVisibleStatuses,(function(t){return(0,Co.wg)(),(0,Co.j4)(d,{key:t.id,role:"listitem",class:"status-fadein","status-id":t.id,collapsable:!0,"in-profile":e.inProfile,"profile-user-id":e.userId,"virtual-hidden":e.virtualScrollingEnabled&&!e.statusesToDisplay.includes(t.id)},null,8,["status-id","in-profile","profile-user-id","virtual-hidden"])})),128))],512)],2),(0,Co._)("div",{class:(0,So.C_)(e.classes.footer)},[((0,Co.wg)(),(0,Co.j4)(Co.lR,{to:e.footerSlipgate,disabled:!e.embedded||!e.footerSlipgate},[0===e.count?((0,Co.wg)(),(0,Co.iD)("div",$u,(0,So.zw)(e.$t("timeline.no_statuses")),1)):e.bottomedOut?((0,Co.wg)(),(0,Co.iD)("div",Bu,(0,So.zw)(e.$t("timeline.no_more_statuses")),1)):e.timeline.loading?((0,Co.wg)(),(0,Co.iD)("div",Mu,[(0,Co.Wm)(a,{icon:"circle-notch",spin:"",size:"lg"})])):((0,Co.wg)(),(0,Co.iD)("button",{key:2,class:"button-unstyled -link",onClick:t[5]||(t[5]=(0,wo.iM)((function(t){return e.fetchOlderStatuses()}),["prevent"]))},[(0,Co._)("div",Uu,(0,So.zw)(e.$t("timeline.load_older")),1)]))],8,["to","disabled"]))],2)],2)}]]),Kc={components:{Timeline:Vc},computed:{timeline:function(){return this.$store.state.statuses.timelines.public}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"public"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","public")}},Gc=(0,Jo.Z)(Kc,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("Timeline");return(0,Co.wg)(),(0,Co.j4)(s,{title:e.$t("nav.public_tl"),timeline:e.timeline,"timeline-name":"public"},null,8,["title","timeline"])}]]),Yc={components:{Timeline:Vc},computed:{timeline:function(){return this.$store.state.statuses.timelines.publicAndExternal}},created:function(){this.$store.dispatch("startFetchingTimeline",{timeline:"publicAndExternal"})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","publicAndExternal")}},Jc=(0,Jo.Z)(Yc,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("Timeline");return(0,Co.wg)(),(0,Co.j4)(s,{title:e.$t("nav.twkn"),timeline:e.timeline,"timeline-name":"publicAndExternal"},null,8,["title","timeline"])}]]),Qc={components:{Timeline:Vc},computed:{timeline:function(){return this.$store.state.statuses.timelines.friends}}},Xc=(0,Jo.Z)(Qc,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("Timeline");return(0,Co.wg)(),(0,Co.j4)(s,{title:e.$t("nav.timeline"),timeline:e.timeline,"timeline-name":"friends"},null,8,["title","timeline"])}]]),el={created:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})},components:{Timeline:Vc},computed:{tag:function(){return this.$route.params.tag},timeline:function(){return this.$store.state.statuses.timelines.tag}},watch:{tag:function(){this.$store.commit("clearTimeline",{timeline:"tag"}),this.$store.dispatch("startFetchingTimeline",{timeline:"tag",tag:this.tag})}},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","tag")}},tl=(0,Jo.Z)(el,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("Timeline");return(0,Co.wg)(),(0,Co.j4)(s,{title:e.tag,timeline:e.timeline,"timeline-name":"tag",tag:e.tag},null,8,["title","timeline","tag"])}]]),nl={computed:{timeline:function(){return this.$store.state.statuses.timelines.bookmarks}},components:{Timeline:Vc},unmounted:function(){this.$store.commit("clearTimeline",{timeline:"bookmarks"})}},ol=(0,Jo.Z)(nl,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("Timeline");return(0,Co.wg)(),(0,Co.j4)(s,{title:e.$t("nav.bookmarks"),timeline:e.timeline,"timeline-name":"bookmarks"},null,8,["title","timeline"])}]]),rl={components:{Conversation:$c},computed:{statusId:function(){return this.$route.params.id}}},il=(0,Jo.Z)(rl,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("conversation");return(0,Co.wg)(),(0,Co.j4)(s,{collapsable:!1,"is-page":"true","status-id":e.statusId},null,8,["status-id"])}]]);var sl={class:"panel panel-default"},al={class:"panel-heading"},ul={class:"title"},cl=["label"],ll=["label"],dl=["label"],pl=["label"],ml=["label"],hl=["label"],fl=n(79354),gl={mentions:["mention"],"likes+repeats":["repeat","like"],follows:["follow"],reactions:["pleroma:emoji_reaction"],reports:["pleroma:report"],moves:["move"]};const vl={data:function(){return{allowFollowingMove:this.$store.state.users.currentUser.allow_following_move,filterMode:gl.mentions,canSeeReports:this.$store.state.users.currentUser.privileges.includes("reports_manage_reports")}},methods:{onModeSwitch:function(e){this.filterMode=gl[e]}},components:{Notifications:ya.default,TabSwitcher:fl.Z}},wl=(0,Jo.Z)(vl,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("tab-switcher"),a=(0,Co.up)("Notifications");return(0,Co.wg)(),(0,Co.iD)("div",sl,[(0,Co._)("div",al,[(0,Co._)("div",ul,(0,So.zw)(e.$t("nav.interactions")),1)]),(0,Co.Wm)(s,{ref:"tabSwitcher","on-switch":e.onModeSwitch},{default:(0,Co.w5)((function(){return[(0,Co._)("span",{key:"mentions",label:e.$t("nav.mentions")},null,8,cl),(0,Co._)("span",{key:"likes+repeats",label:e.$t("interactions.favs_repeats")},null,8,ll),(0,Co._)("span",{key:"follows",label:e.$t("interactions.follows")},null,8,dl),(0,Co._)("span",{key:"reactions",label:e.$t("interactions.emoji_reactions")},null,8,pl),e.canSeeReports?((0,Co.wg)(),(0,Co.iD)("span",{key:"reports",label:e.$t("interactions.reports")},null,8,ml)):(0,Co.kq)("",!0),e.allowFollowingMove?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("span",{key:"moves",label:e.$t("interactions.moves")},null,8,hl))]})),_:1},8,["on-switch"]),(0,Co.Wm)(a,{ref:"notifications","no-heading":!0,"minimal-mode":!0,"filter-mode":e.filterMode},null,8,["filter-mode"])])}]]),bl={computed:{timeline:function(){return this.$store.state.statuses.timelines.dms}},components:{Timeline:Vc}},yl=(0,Jo.Z)(bl,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("Timeline");return(0,Co.wg)(),(0,Co.j4)(s,{title:e.$t("nav.dms"),timeline:e.timeline,"timeline-name":"dms"},null,8,["title","timeline"])}]]);var Dl={key:0},_l={key:1,class:"chat-list panel panel-default"},kl={class:"panel-heading -sticky"},Cl={class:"title"},Sl={class:"panel-body"},jl={key:0,class:"timeline"},Fl={key:1,class:"emtpy-chat-list-alert"},Al={class:"chat-list-item-left"},Ol={class:"chat-list-item-center"},El={class:"heading"},zl={key:0,class:"name-and-account-name"},Pl=(0,Co._)("span",{class:"heading-right"},null,-1),Il={class:"time-wrapper"},xl={class:"chat-preview"},Tl={key:0,class:"badge badge-notification unread-chat-count"},$l=n(10252),Bl=n(48173),Ul=n(19066),Ml=n(1840),Ll=["title"],Rl=n(92820);const ql={name:"ChatTitle",components:{UserAvatar:Bl.default,RichContent:Rl.Z,UserPopover:(0,Co.RC)((function(){return Promise.resolve().then(n.bind(n,22588))}))},props:["user","withAvatar"],computed:{title:function(){return this.user?this.user.screen_name_ui:""},htmlTitle:function(){return this.user?this.user.name_html:""}}},Nl=(0,Jo.Z)(ql,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("UserAvatar"),a=(0,Co.up)("UserPopover"),u=(0,Co.up)("RichContent");return(0,Co.wg)(),(0,Co.iD)("div",{class:"chat-title",title:e.title},[e.withAvatar&&e.user?((0,Co.wg)(),(0,Co.j4)(a,{key:0,class:"avatar-container","user-id":e.user.id},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(s,{class:"titlebar-avatar",user:e.user},null,8,["user"])]})),_:1},8,["user-id"])):(0,Co.kq)("",!0),e.user?((0,Co.wg)(),(0,Co.j4)(u,{key:1,class:"username",title:"@"+(e.user&&e.user.screen_name_ui),html:e.htmlTitle,emoji:e.user.emoji||[]},null,8,["title","html","emoji"])):(0,Co.kq)("",!0)],8,Ll)}]]);function Zl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Wl(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zl(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const Hl={name:"ChatListItem",props:["chat"],components:{UserAvatar:Bl.default,AvatarList:Ul.Z,Timeago:Ml.Z,ChatTitle:Nl,StatusBody:$l.Z},computed:Wl(Wl({},(0,s.rn)({currentUser:function(e){return e.users.currentUser}})),{},{attachmentInfo:function(){if(0!==this.chat.lastMessage.attachments.length){var e=this.chat.lastMessage.attachments.map((function(e){return Fn.ZP.fileType(e.mimetype)}));return e.includes("video")?this.$t("file_type.video"):e.includes("audio")?this.$t("file_type.audio"):e.includes("image")?this.$t("file_type.image"):this.$t("file_type.file")}},messageForStatusContent:function(){var e=this.chat.lastMessage,t=e?e.emojis:[],n=e&&e.account_id===this.currentUser.id,o=e?this.attachmentInfo||e.content:"",r=n?"<i>".concat(this.$t("chats.you"),"</i> ").concat(o):o;return{summary:"",emojis:t,raw_html:r,text:r,attachments:[]}}}),methods:{openChat:function(e){this.chat.id&&this.$router.push({name:"chat",params:{username:this.currentUser.screen_name,recipient_id:this.chat.account.id}})}}},Vl=(0,Jo.Z)(Hl,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("UserAvatar"),a=(0,Co.up)("ChatTitle"),u=(0,Co.up)("Timeago"),c=(0,Co.up)("StatusBody");return(0,Co.wg)(),(0,Co.iD)("div",{class:"chat-list-item",onClickCapture:t[0]||(t[0]=(0,wo.iM)((function(){return e.openChat&&e.openChat.apply(e,arguments)}),["prevent"]))},[(0,Co._)("div",Al,[(0,Co.Wm)(s,{user:e.chat.account,height:"48px",width:"48px"},null,8,["user"])]),(0,Co._)("div",Ol,[(0,Co._)("div",El,[e.chat.account?((0,Co.wg)(),(0,Co.iD)("span",zl,[(0,Co.Wm)(a,{user:e.chat.account},null,8,["user"])])):(0,Co.kq)("",!0),Pl,(0,Co._)("div",Il,[(0,Co.Wm)(u,{time:e.chat.updated_at,"auto-update":60},null,8,["time"])])]),(0,Co._)("div",xl,[(0,Co.Wm)(c,{class:"chat-preview-body",status:e.messageForStatusContent,"single-line":!0},null,8,["status"]),e.chat.unread>0?((0,Co.wg)(),(0,Co.iD)("div",Tl,(0,So.zw)(e.chat.unread),1)):(0,Co.kq)("",!0)])])],32)}]]);var Kl={class:"panel-default panel chat-new"},Gl={ref:"header",class:"panel-heading"},Yl={class:"input-wrap"},Jl={class:"input-search"},Ql={class:"member-list"},Xl=["onClickCapture"],ed=n(29076);function td(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function nd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?td(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):td(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.wn1,Vt.A35);var od={components:{BasicUserCard:ed.Z,UserAvatar:Bl.default},data:function(){return{suggestions:[],userIds:[],loading:!1,query:""}},created:function(){var e=this;return(0,o.Z)(i().mark((function t(){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.backendInteractor.chats();case 2:t.sent.chats.forEach((function(t){return e.suggestions.push(t.account)}));case 5:case"end":return t.stop()}}),t)})))()},computed:nd(nd({users:function(){var e=this;return this.userIds.map((function(t){return e.findUser(t)}))},availableUsers:function(){return 0!==this.query.length?this.users:this.suggestions}},(0,s.rn)({currentUser:function(e){return e.users.currentUser},backendInteractor:function(e){return e.api.backendInteractor}})),(0,s.Se)(["findUser"])),methods:{goBack:function(){this.$emit("cancel")},goToChat:function(e){this.$router.push({name:"chat",params:{recipient_id:e.id}})},onInput:function(){this.search(this.query)},addUser:function(e){this.selectedUserIds.push(e.id),this.query=""},removeUser:function(e){this.selectedUserIds=this.selectedUserIds.filter((function(t){return t!==e}))},search:function(e){var t=this;e?(this.loading=!0,this.userIds=[],this.$store.dispatch("search",{q:e,resolve:!0,type:"accounts"}).then((function(e){t.loading=!1,t.userIds=e.accounts.map((function(e){return e.id}))}))):this.loading=!1}}};const rd=od,id=(0,Jo.Z)(rd,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon"),a=(0,Co.up)("BasicUserCard");return(0,Co.wg)(),(0,Co.iD)("div",Kl,[(0,Co._)("div",Gl,[(0,Co._)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=function(){return e.goBack&&e.goBack.apply(e,arguments)})},[(0,Co.Wm)(s,{size:"lg",icon:"chevron-left"})])],512),(0,Co._)("div",Yl,[(0,Co._)("div",Jl,[(0,Co.Wm)(s,{class:"search-icon fa-scale-110 fa-old-padding",icon:"search"})]),(0,Co.wy)((0,Co._)("input",{ref:"search","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.query=t}),placeholder:"Search people",onInput:t[2]||(t[2]=function(){return e.onInput&&e.onInput.apply(e,arguments)})},null,544),[[wo.nr,e.query]])]),(0,Co._)("div",Ql,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.availableUsers,(function(t){return(0,Co.wg)(),(0,Co.iD)("div",{key:t.id,class:"member"},[(0,Co._)("div",{onClickCapture:(0,wo.iM)((function(n){return e.goToChat(t)}),["prevent"])},[(0,Co.Wm)(a,{user:t},null,8,["user"])],40,Xl)])})),128))])])}]]);function sd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ad(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?sd(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):sd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const ud={components:{ChatListItem:Vl,List:tu.Z,ChatNew:id},computed:ad(ad({},(0,s.rn)({currentUser:function(e){return e.users.currentUser}})),(0,s.Se)(["sortedChatList"])),data:function(){return{isNew:!1}},created:function(){this.$store.dispatch("fetchChats",{latest:!0})},methods:{cancelNewChat:function(){this.isNew=!1,this.$store.dispatch("fetchChats",{latest:!0})},newChat:function(){this.isNew=!0}}},cd=(0,Jo.Z)(ud,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("ChatNew"),a=(0,Co.up)("ChatListItem"),u=(0,Co.up)("List");return e.isNew?((0,Co.wg)(),(0,Co.iD)("div",Dl,[(0,Co.Wm)(s,{onCancel:e.cancelNewChat},null,8,["onCancel"])])):((0,Co.wg)(),(0,Co.iD)("div",_l,[(0,Co._)("div",kl,[(0,Co._)("span",Cl,(0,So.zw)(e.$t("chats.chats")),1),(0,Co._)("button",{class:"button-default",onClick:t[0]||(t[0]=function(){return e.newChat&&e.newChat.apply(e,arguments)})},(0,So.zw)(e.$t("chats.new")),1)]),(0,Co._)("div",Sl,[e.sortedChatList.length>0?((0,Co.wg)(),(0,Co.iD)("div",jl,[(0,Co.Wm)(u,{items:e.sortedChatList},{item:(0,Co.w5)((function(e){var t=e.item;return[((0,Co.wg)(),(0,Co.j4)(a,{key:t.id,compact:!1,chat:t},null,8,["chat"]))]})),_:1},8,["items"])])):((0,Co.wg)(),(0,Co.iD)("div",Fl,[(0,Co._)("span",null,(0,So.zw)(e.$t("chats.empty_chat_list_placeholder")),1)]))])]))}]]);var ld={class:"chat-view"},dd={class:"chat-view-inner"},pd={ref:"inner",class:"panel-default panel chat-view-body"},md={ref:"header",class:"panel-heading -sticky chat-view-heading"},hd={class:"title text-center"},fd={key:1,class:"chat-loading-error"},gd={class:"alert error"},vd={ref:"footer",class:"panel-body footer"},wd={key:0,class:"badge badge-notification unread-chat-count unread-message-count"},bd={key:0,class:"avatar-wrapper"},yd={class:"chat-message-inner"},Dd={class:"dropdown-menu"},_d=["title"],kd={class:"created-at"},Cd={key:1,class:"chat-message-date-separator"},Sd=n(66596),jd=n(67671),Fd=n(92798),Ad=n(39776);const Od={name:"Timeago",props:["date"],computed:{displayDate:function(){var e=new Date;return e.setHours(0,0,0,0),this.date.getTime()===e.getTime()?this.$t("display_date.today"):this.date.toLocaleDateString(Ad.Z.internalToBrowserLocale(this.$i18n.locale),{day:"numeric",month:"long"})}}},Ed=(0,Jo.Z)(Od,[["render",function(e,t,n,o,r,i){return(0,Co.wg)(),(0,Co.iD)("time",null,(0,So.zw)(i.displayDate),1)}]]);function zd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Pd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?zd(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):zd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.NBC,Vt.cNd);const Id={name:"ChatMessage",props:["author","edited","noHeading","chatViewItem","hoveredMessageChain"],emits:["hover"],components:{Popover:fc.default,Attachment:Sd.Z,StatusContent:$l.Z,UserAvatar:Bl.default,Gallery:jd.Z,LinkPreview:Fd.Z,ChatMessageDate:Ed,UserPopover:(0,Co.RC)((function(){return Promise.resolve().then(n.bind(n,22588))}))},computed:Pd(Pd({createdAt:function(){return this.chatViewItem.data.created_at.toLocaleTimeString("en",{hour:"2-digit",minute:"2-digit",hour12:!1})},isCurrentUser:function(){return this.message.account_id===this.currentUser.id},message:function(){return this.chatViewItem.data},isMessage:function(){return"message"===this.chatViewItem.type},messageForStatusContent:function(){return{summary:"",emojis:this.message.emojis,raw_html:this.message.content||"",text:this.message.content||"",attachments:this.message.attachments}},hasAttachment:function(){return this.message.attachments.length>0}},(0,s.rn)({betterShadow:function(e){return e.interface.browserSupport.cssFilter},currentUser:function(e){return e.users.currentUser},restrictedNicknames:function(e){return e.instance.restrictedNicknames}})),{},{popoverMarginStyle:function(){return this.isCurrentUser?{}:{left:50}}},(0,s.Se)(["mergedConfig","findUser"])),data:function(){return{hovered:!1,menuOpened:!1}},methods:{onHover:function(e){this.$emit("hover",{isHovered:e,messageChainId:this.chatViewItem.messageChainId})},deleteMessage:function(){var e=this;return(0,o.Z)(i().mark((function t(){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!window.confirm(e.$t("chats.delete_confirm"))){t.next=4;break}return t.next=4,e.$store.dispatch("deleteChatMessage",{messageId:e.chatViewItem.data.id,chatId:e.chatViewItem.data.chat_id});case 4:e.hovered=!1,e.menuOpened=!1;case 6:case"end":return t.stop()}}),t)})))()}}},xd=(0,Jo.Z)(Id,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("UserAvatar"),a=(0,Co.up)("UserPopover"),u=(0,Co.up)("FAIcon"),c=(0,Co.up)("Popover"),l=(0,Co.up)("StatusContent"),d=(0,Co.up)("ChatMessageDate");return e.isMessage?((0,Co.wg)(),(0,Co.iD)("div",{key:0,class:(0,So.C_)(["chat-message-wrapper",{"hovered-message-chain":e.hoveredMessageChain}]),onMouseover:t[5]||(t[5]=function(t){return e.onHover(!0)}),onMouseleave:t[6]||(t[6]=function(t){return e.onHover(!1)})},[(0,Co._)("div",{class:(0,So.C_)(["chat-message",[{outgoing:e.isCurrentUser,incoming:!e.isCurrentUser}]])},[e.isCurrentUser?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("div",bd,[e.chatViewItem.isHead?((0,Co.wg)(),(0,Co.j4)(a,{key:0,"user-id":e.author.id},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(s,{compact:!0,"better-shadow":e.betterShadow,user:e.author},null,8,["better-shadow","user"])]})),_:1},8,["user-id"])):(0,Co.kq)("",!0)])),(0,Co._)("div",yd,[(0,Co._)("div",{class:"status-body",style:(0,So.j5)({"min-width":e.message.attachment?"80%":""})},[(0,Co._)("div",{class:(0,So.C_)(["media status",{"without-attachment":!e.hasAttachment,pending:e.chatViewItem.data.pending,error:e.chatViewItem.data.error}]),style:{position:"relative"},onMouseenter:t[3]||(t[3]=function(t){return e.hovered=!0}),onMouseleave:t[4]||(t[4]=function(t){return e.hovered=!1})},[(0,Co._)("div",{class:(0,So.C_)(["chat-message-menu",{visible:e.hovered||e.menuOpened}])},[(0,Co.Wm)(c,{trigger:"click",placement:"top","bound-to-selector":".chat-view-inner","bound-to":{x:"container"},margin:e.popoverMarginStyle,onShow:t[1]||(t[1]=function(t){return e.menuOpened=!0}),onClose:t[2]||(t[2]=function(t){return e.menuOpened=!1})},{content:(0,Co.w5)((function(){return[(0,Co._)("div",Dd,[(0,Co._)("button",{class:"button-default dropdown-item dropdown-item-icon",onClick:t[0]||(t[0]=function(){return e.deleteMessage&&e.deleteMessage.apply(e,arguments)})},[(0,Co.Wm)(u,{icon:"times"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("chats.delete")),1)])])]})),trigger:(0,Co.w5)((function(){return[(0,Co._)("button",{class:"button-default menu-icon",title:e.$t("chats.more")},[(0,Co.Wm)(u,{icon:"ellipsis-h"})],8,_d)]})),_:1},8,["margin"])],2),(0,Co.Wm)(l,{class:"message-content",status:e.messageForStatusContent,"full-content":!0},{footer:(0,Co.w5)((function(){return[(0,Co._)("span",kd,(0,So.zw)(e.createdAt),1)]})),_:1},8,["status"])],34)],4)])],2)],34)):((0,Co.wg)(),(0,Co.iD)("div",Cd,[(0,Co.Wm)(d,{date:e.chatViewItem.date},null,8,["date"])]))}]]);var Td=function(){return{scrollTop:window.scrollY,scrollHeight:document.documentElement.scrollHeight,offsetHeight:window.innerHeight}};function $d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Bd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$d(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.ptq,Vt.A35);var Ud={components:{ChatMessage:xd,ChatTitle:Nl,PostStatusForm:Ir.Z},data:function(){return{jumpToBottomButtonVisible:!1,hoveredMessageChainId:void 0,lastScrollPosition:{},scrollableContainerHeight:"100%",errorLoadingChat:!1,messageRetriers:{}}},created:function(){this.startFetching(),window.addEventListener("resize",this.handleResize)},mounted:function(){var e=this;window.addEventListener("scroll",this.handleScroll),void 0!==document.hidden&&document.addEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$nextTick((function(){e.handleResize()}))},unmounted:function(){window.removeEventListener("scroll",this.handleScroll),window.removeEventListener("resize",this.handleResize),void 0!==document.hidden&&document.removeEventListener("visibilitychange",this.handleVisibilityChange,!1),this.$store.dispatch("clearCurrentChat")},computed:Bd(Bd({recipient:function(){return this.currentChat&&this.currentChat.account},recipientId:function(){return this.$route.params.recipient_id},formPlaceholder:function(){return this.recipient?this.$t("chats.message_user",{nickname:this.recipient.screen_name_ui}):""},chatViewItems:function(){return Jn.getView(this.currentChatMessageService)},newMessageCount:function(){return this.currentChatMessageService&&this.currentChatMessageService.newMessageCount},streamingEnabled:function(){return this.mergedConfig.useStreamingApi&&this.mastoUserSocketStatus===h._z.JOINED}},(0,s.Se)(["currentChat","currentChatMessageService","findOpenedChatByRecipientId","mergedConfig"])),(0,s.rn)({backendInteractor:function(e){return e.api.backendInteractor},mastoUserSocketStatus:function(e){return e.api.mastoUserSocketStatus},mobileLayout:function(e){return"mobile"===e.interface.layoutType},currentUser:function(e){return e.users.currentUser}})),watch:{chatViewItems:function(){var e=this,t=this.bottomedOut(10);this.$nextTick((function(){t&&e.scrollDown()}))},$route:function(){this.startFetching()},mastoUserSocketStatus:function(e){e===h._z.JOINED&&this.fetchChat({isFirstFetch:!0})}},methods:{onMessageHover:function(e){var t=e.isHovered,n=e.messageChainId;this.hoveredMessageChainId=t?n:void 0},onFilesDropped:function(){var e=this;this.$nextTick((function(){e.handleResize()}))},handleVisibilityChange:function(){var e=this;this.$nextTick((function(){!document.hidden&&e.bottomedOut(10)&&e.scrollDown({forceRead:!0})}))},handleResize:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.delayed,o=void 0!==n&&n;o?setTimeout((function(){e.handleResize(Bd(Bd({},t),{},{delayed:!1}))}),100):this.$nextTick((function(){var t=Td().offsetHeight,n=(void 0===t?void 0:t)-e.lastScrollPosition.offsetHeight;0===n||e.bottomedOut()||e.$nextTick((function(){window.scrollBy({top:-Math.trunc(n)})})),e.lastScrollPosition=Td()}))},scrollDown:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.behavior,n=void 0===t?"auto":t,o=e.forceRead,r=void 0!==o&&o;this.$nextTick((function(){window.scrollTo({top:document.documentElement.scrollHeight,behavior:n})})),r&&this.readChat()},readChat:function(){if(this.currentChatMessageService&&this.currentChatMessageService.maxId&&!document.hidden){var e=this.currentChatMessageService.maxId;this.$store.dispatch("readChat",{id:this.currentChat.id,lastReadId:e})}},bottomedOut:function(e){return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=window.scrollY+e;return document.documentElement.scrollHeight-window.innerHeight<=t}(e)},reachedTop:function(){return window.scrollY<=0},cullOlderCheck:function(){var e=this;window.setTimeout((function(){e.bottomedOut(10)&&e.$store.dispatch("cullOlderMessages",e.currentChatMessageService.chatId)}),5e3)},handleScroll:Nu()((function(){var e=this;this.lastScrollPosition=Td(),this.currentChat&&(this.reachedTop()?this.fetchChat({maxId:this.currentChatMessageService.minId}):this.bottomedOut(10)?(this.jumpToBottomButtonVisible=!1,this.cullOlderCheck(),this.newMessageCount>0&&window.setTimeout((function(){e.$el&&e.readChat()}),1500)):this.jumpToBottomButtonVisible=!0)}),200),handleScrollUp:function(e){var t,n,o=Td();window.scrollTo({top:(t=e,n=o,t.scrollTop+(n.scrollHeight-t.scrollHeight))})},fetchChat:function(e){var t=this,n=e.isFirstFetch,o=void 0!==n&&n,r=e.fetchLatest,i=void 0!==r&&r,s=e.maxId,a=this.currentChatMessageService;if(a&&(!i||!this.streamingEnabled)){var u=a.chatId,c=!!s,l=i&&a.maxId;return this.backendInteractor.chatMessages({id:u,maxId:s,sinceId:l}).then((function(e){o&&Jn.clear(a);var n=Td();t.$store.dispatch("addChatMessages",{chatId:u,messages:e}).then((function(){t.$nextTick((function(){c&&t.handleScrollUp(n),!(document.documentElement.scrollHeight>window.innerHeight)&&e.length>0&&t.fetchChat({maxId:t.currentChatMessageService.minId})}))}))}))}},startFetching:function(){var e=this;return(0,o.Z)(i().mark((function t(){var n;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.findOpenedChatByRecipientId(e.recipientId)){t.next=12;break}return t.prev=2,t.next=5,e.backendInteractor.getOrCreateChat({accountId:e.recipientId});case 5:n=t.sent,t.next=12;break;case 8:t.prev=8,t.t0=t.catch(2),console.error("Error creating or getting a chat",t.t0),e.errorLoadingChat=!0;case 12:n&&(e.$nextTick((function(){e.scrollDown({forceRead:!0})})),e.$store.dispatch("addOpenedChat",{chat:n}),e.doStartFetching());case 13:case"end":return t.stop()}}),t,null,[[2,8]])})))()},doStartFetching:function(){var e=this;this.$store.dispatch("startFetchingCurrentChat",{fetcher:function(){return(0,Ce.F)((function(){return e.fetchChat({fetchLatest:!0})}),5e3)}}),this.fetchChat({isFirstFetch:!0})},handleAttachmentPosting:function(){var e=this;this.$nextTick((function(){e.handleResize(),e.scrollDown({forceRead:!0})}))},sendMessage:function(e){var t=this,n=e.status,o=e.media,r=e.idempotencyKey,i={id:this.currentChat.id,content:n,idempotencyKey:r};o[0]&&(i.mediaId=o[0].id);var s=function(e){var t=e.attachments,n=e.userId,o=e.idempotencyKey,r={content:e.content,chat_id:e.chatId,created_at:new Date,id:"".concat((new Date).getTime()),attachments:t,account_id:n,idempotency_key:o,emojis:[],pending:!0,isNormalized:!0};return t[0]&&(r.attachment=t[0]),r}({attachments:o,chatId:this.currentChat.id,content:n,userId:this.currentUser.id,idempotencyKey:r});return this.$store.dispatch("addChatMessages",{chatId:this.currentChat.id,messages:[s]}).then((function(){t.handleAttachmentPosting()})),this.doSendMessage({params:i,fakeMessage:s,retriesLeft:10})},doSendMessage:function(e){var t=this,n=e.params,o=e.fakeMessage,r=e.retriesLeft,i=void 0===r?10:r;if(!(i<=0))return this.backendInteractor.sendChatMessage(n).then((function(e){return t.$store.dispatch("addChatMessages",{chatId:t.currentChat.id,updateMaxId:!1,messages:[Bd(Bd({},e),{},{fakeId:o.id})]}),e})).catch((function(e){return console.error("Error sending message",e),t.$store.dispatch("handleMessageError",{chatId:t.currentChat.id,fakeId:o.id,isRetry:10!==i}),(e.statusCode>=500&&e.statusCode<600||"Failed to fetch"===e.message)&&(t.messageRetriers[o.id]=setTimeout((function(){t.doSendMessage({params:n,fakeMessage:o,retriesLeft:i-1})}),1e3*Math.pow(2,10-i))),{}})),Promise.resolve(o)},goBack:function(){this.$router.push({name:"chats",params:{username:this.currentUser.screen_name}})}}};const Md=Ud,Ld=(0,Jo.Z)(Md,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon"),a=(0,Co.up)("ChatTitle"),u=(0,Co.up)("ChatMessage"),c=(0,Co.up)("PostStatusForm");return(0,Co.wg)(),(0,Co.iD)("div",ld,[(0,Co._)("div",dd,[(0,Co._)("div",pd,[(0,Co._)("div",md,[(0,Co._)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=function(){return e.goBack&&e.goBack.apply(e,arguments)})},[(0,Co.Wm)(s,{size:"lg",icon:"chevron-left"})]),(0,Co._)("div",hd,[(0,Co.Wm)(a,{user:e.recipient,"with-avatar":!0},null,8,["user"])])],512),(0,Co._)("div",{class:"message-list",style:(0,So.j5)({height:e.scrollableContainerHeight})},[e.errorLoadingChat?((0,Co.wg)(),(0,Co.iD)("div",fd,[(0,Co._)("div",gd,(0,So.zw)(e.$t("chats.error_loading_chat")),1)])):((0,Co.wg)(!0),(0,Co.iD)(Co.HY,{key:0},(0,Co.Ko)(e.chatViewItems,(function(t){return(0,Co.wg)(),(0,Co.j4)(u,{key:t.id,author:e.recipient,"chat-view-item":t,"hovered-message-chain":t.messageChainId===e.hoveredMessageChainId,onHover:e.onMessageHover},null,8,["author","chat-view-item","hovered-message-chain","onHover"])})),128))],4),(0,Co._)("div",vd,[(0,Co._)("div",{class:(0,So.C_)(["jump-to-bottom-button",{visible:e.jumpToBottomButtonVisible}]),onClick:t[1]||(t[1]=function(t){return e.scrollDown({behavior:"smooth"})})},[(0,Co._)("span",null,[(0,Co.Wm)(s,{icon:"chevron-down"}),e.newMessageCount?((0,Co.wg)(),(0,Co.iD)("div",wd,(0,So.zw)(e.newMessageCount),1)):(0,Co.kq)("",!0)])],2),(0,Co.Wm)(c,{"disable-subject":!0,"disable-scope-selector":!0,"disable-notice":!0,"disable-lock-warning":!0,"disable-polls":!0,"disable-sensitivity-checkbox":!0,"disable-submit":e.errorLoadingChat||!e.currentChat,"disable-preview":!0,"optimistic-posting":!0,"post-handler":e.sendMessage,"submit-on-enter":!e.mobileLayout,"preserve-focus":!e.mobileLayout,"auto-focus":!e.mobileLayout,placeholder:e.formPlaceholder,"file-limit":1,"max-height":"160","emoji-picker-placement":"top",onResize:e.handleResize},null,8,["disable-submit","post-handler","submit-on-enter","preserve-focus","auto-focus","placeholder","onResize"])],512)],512)])])}]]);var Rd={key:0,class:"user-profile panel panel-default"},qd={key:0,class:"user-birthday"},Nd={key:1,class:"user-profile-fields"},Zd=["title"],Wd=["title"],Hd=["label","disabled"],Vd=["label","disabled"],Kd={key:1,class:"panel user-profile-placeholder"},Gd={class:"panel-heading"},Yd={class:"title"},Jd={class:"panel-body"},Qd={key:0},Xd={class:"follow-card-content-container"},ep={key:0,class:"faint"},tp={key:0,class:"follow-card-follow-button"},np=n(72895),op=n(34837),rp=["disabled","title"],ip=["textContent"];const sp={props:["user","relationship"],data:function(){return{inProgress:!1,showingConfirmRemoveFollower:!1}},components:{ConfirmModal:Da.Z},computed:{label:function(){return this.inProgress?this.$t("user_card.follow_progress"):this.$t("user_card.remove_follower")},shouldConfirmRemoveUserFromFollowers:function(){return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers}},methods:{showConfirmRemoveUserFromFollowers:function(){this.showingConfirmRemoveFollower=!0},hideConfirmRemoveUserFromFollowers:function(){this.showingConfirmRemoveFollower=!1},onClick:function(){this.shouldConfirmRemoveUserFromFollowers?this.showConfirmRemoveUserFromFollowers():this.doRemoveUserFromFollowers()},doRemoveUserFromFollowers:function(){var e=this;this.inProgress=!0,this.$store.dispatch("removeUserFromFollowers",this.relationship.id).then((function(){e.inProgress=!1})),this.hideConfirmRemoveUserFromFollowers()}}},ap=(0,Jo.Z)(sp,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("i18n-t"),a=(0,Co.up)("confirm-modal");return(0,Co.wg)(),(0,Co.iD)("button",{class:(0,So.C_)(["btn button-default follow-button",{toggled:e.inProgress}]),disabled:e.inProgress,title:e.$t("user_card.remove_follower"),onClick:t[0]||(t[0]=function(){return e.onClick&&e.onClick.apply(e,arguments)})},[(0,Co.Uk)((0,So.zw)(e.label)+" ",1),((0,Co.wg)(),(0,Co.j4)(Co.lR,{to:"#modal"},[e.showingConfirmRemoveFollower?((0,Co.wg)(),(0,Co.j4)(a,{key:0,title:e.$t("user_card.remove_follower_confirm_title"),"confirm-text":e.$t("user_card.remove_follower_confirm_accept_button"),"cancel-text":e.$t("user_card.remove_follower_confirm_cancel_button"),onAccepted:e.doRemoveUserFromFollowers,onCancelled:e.hideConfirmRemoveUserFromFollowers},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(s,{keypath:"user_card.remove_follower_confirm",tag:"span"},{user:(0,Co.w5)((function(){return[(0,Co._)("span",{textContent:(0,So.zw)(e.user.screen_name_ui)},null,8,ip)]})),_:1})]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,Co.kq)("",!0)]))],10,rp)}]]),up={props:["user","noFollowsYou"],components:{BasicUserCard:ed.Z,RemoteFollow:np.Z,FollowButton:op.Z,RemoveFollowerButton:ap},computed:{isMe:function(){return this.$store.state.users.currentUser.id===this.user.id},loggedIn:function(){return this.$store.state.users.currentUser},relationship:function(){return this.$store.getters.relationship(this.user.id)}}},cp=(0,Jo.Z)(up,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("RemoteFollow"),a=(0,Co.up)("FollowButton"),u=(0,Co.up)("RemoveFollowerButton"),c=(0,Co.up)("basic-user-card");return(0,Co.wg)(),(0,Co.j4)(c,{user:e.user},{default:(0,Co.w5)((function(){return[(0,Co._)("div",Xd,[e.isMe||!e.noFollowsYou&&e.relationship.followed_by?((0,Co.wg)(),(0,Co.iD)("span",ep,(0,So.zw)(e.isMe?e.$t("user_card.its_you"):e.$t("user_card.follows_you")),1)):(0,Co.kq)("",!0),e.loggedIn?e.isMe?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)(Co.HY,{key:2},[(0,Co.Wm)(a,{relationship:e.relationship,"label-following":e.$t("user_card.follow_unfollow"),class:"follow-card-follow-button",user:e.user},null,8,["relationship","label-following","user"]),e.noFollowsYou&&e.relationship.followed_by?((0,Co.wg)(),(0,Co.j4)(u,{key:0,user:e.user,relationship:e.relationship,class:"follow-card-button"},null,8,["user","relationship"])):(0,Co.kq)("",!0)],64)):((0,Co.wg)(),(0,Co.iD)(Co.HY,{key:1},[e.relationship.following?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("div",tp,[(0,Co.Wm)(s,{user:e.user},null,8,["user"])]))],64))])]})),_:1},8,["user"])}]]);var lp=n(98027);Ht.vI.add(Vt.IJ7,Vt.xiy);var dp=(0,lp.Z)({fetch:function(e,t){return t.dispatch("fetchFollowers",e.userId)},select:function(e,t){return Dt()(t.getters.findUser(e.userId),"followerIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFollowers",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(tu.Z),pp=(0,lp.Z)({fetch:function(e,t){return t.dispatch("fetchFriends",e.userId)},select:function(e,t){return Dt()(t.getters.findUser(e.userId),"friendIds",[]).map((function(e){return t.getters.findUser(e)}))},destroy:function(e,t){return t.dispatch("clearFriends",e.userId)},childPropName:"items",additionalPropNames:["userId"]})(tu.Z),mp="statuses";const hp={data:function(){return{error:!1,userId:null,tab:mp,footerRef:null}},created:function(){var e=this.$route.params;this.load({name:e.name,id:e.id}),this.tab=Dt()(this.$route,"query.tab",mp)},unmounted:function(){this.stopFetching()},computed:{timeline:function(){return this.$store.state.statuses.timelines.user},favorites:function(){return this.$store.state.statuses.timelines.favorites},media:function(){return this.$store.state.statuses.timelines.media},isUs:function(){return this.userId&&this.$store.state.users.currentUser.id&&this.userId===this.$store.state.users.currentUser.id},user:function(){return this.$store.getters.findUser(this.userId)},isExternal:function(){return"external-user-profile"===this.$route.name},followsTabVisible:function(){return this.isUs||!this.user.hide_follows},followersTabVisible:function(){return this.isUs||!this.user.hide_followers},formattedBirthday:function(){var e=Ad.Z.internalToBrowserLocale(this.$i18n.locale);return this.user.birthday&&new Date(Date.parse(this.user.birthday)).toLocaleDateString(e,{timeZone:"UTC",day:"numeric",month:"long",year:"numeric"})}},methods:{setFooterRef:function(e){this.footerRef=e},load:function(e){var t=this,n=function(e,n){n!==t.$store.state.statuses.timelines[e].userId&&t.$store.commit("clearTimeline",{timeline:e}),t.$store.dispatch("startFetchingTimeline",{timeline:e,userId:n})},o=function(e){t.userId=e,n("user",e),n("media",e),t.isUs&&n("favorites",e),t.$store.dispatch("fetchPinnedStatuses",e)};this.userId=null,this.error=!1;var r=e.id,i=e.name,s=r?this.$store.getters.findUser(r):this.$store.getters.findUserByName(i);s?o(s.id):(r?this.$store.dispatch("fetchUser",r):this.$store.dispatch("fetchUserByName",i)).then((function(e){var t=e.id;return o(t)})).catch((function(e){var n=Dt()(e,"error.error");t.error="No user with such user_id"===n?t.$t("user_profile.profile_does_not_exist"):n||t.$t("user_profile.profile_loading_error")}))},stopFetching:function(){this.$store.dispatch("stopFetchingTimeline","user"),this.$store.dispatch("stopFetchingTimeline","favorites"),this.$store.dispatch("stopFetchingTimeline","media")},switchUser:function(e){this.stopFetching(),this.load(e)},onTabSwitch:function(e){this.tab=e,this.$router.replace({query:{tab:e}})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")}},watch:{"$route.params.id":function(e){e&&this.switchUser({id:e})},"$route.params.name":function(e){e&&this.switchUser({name:e})},"$route.query":function(e){this.tab=e.tab||mp}},components:{UserCard:xr.Z,Timeline:Vc,FollowerList:dp,FriendList:pp,FollowCard:cp,TabSwitcher:fl.Z,Conversation:$c,RichContent:Rl.Z}},fp=(0,Jo.Z)(hp,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("UserCard"),a=(0,Co.up)("FAIcon"),u=(0,Co.up)("RichContent"),c=(0,Co.up)("Timeline"),l=(0,Co.up)("FollowCard"),d=(0,Co.up)("FriendList"),p=(0,Co.up)("FollowerList"),m=(0,Co.up)("tab-switcher");return(0,Co.wg)(),(0,Co.iD)("div",null,[e.user?((0,Co.wg)(),(0,Co.iD)("div",Rd,[(0,Co.Wm)(s,{"user-id":e.userId,switcher:!0,selected:e.timeline.viewing,"avatar-action":"zoom",rounded:"top","has-note-editor":!0},null,8,["user-id","selected"]),e.user.birthday?((0,Co.wg)(),(0,Co.iD)("span",qd,[(0,Co.Wm)(a,{class:"fa-old-padding",icon:"birthday-cake"}),(0,Co.Uk)(" "+(0,So.zw)(e.$t("user_card.birthday",{birthday:e.formattedBirthday})),1)])):(0,Co.kq)("",!0),e.user.fields_html&&e.user.fields_html.length>0?((0,Co.wg)(),(0,Co.iD)("div",Nd,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.user.fields_html,(function(t,n){return(0,Co.wg)(),(0,Co.iD)("dl",{key:n,class:"user-profile-field"},[(0,Co._)("dt",{title:e.user.fields_text[n].name,class:"user-profile-field-name"},[(0,Co.Wm)(u,{html:t.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,Zd),(0,Co._)("dd",{title:e.user.fields_text[n].value,class:"user-profile-field-value"},[(0,Co.Wm)(u,{html:t.value,emoji:e.user.emoji},null,8,["html","emoji"])],8,Wd)])})),128))])):(0,Co.kq)("",!0),(0,Co.Wm)(m,{"active-tab":e.tab,"render-only-focused":!0,"on-switch":e.onTabSwitch},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(c,{key:"statuses",label:e.$t("user_card.statuses"),count:e.user.statuses_count,embedded:!0,title:e.$t("user_profile.timeline_title"),timeline:e.timeline,"timeline-name":"user","user-id":e.userId,"pinned-status-ids":e.user.pinnedStatusIds,"in-profile":!0,"footer-slipgate":e.footerRef},null,8,["label","count","title","timeline","user-id","pinned-status-ids","footer-slipgate"]),e.followsTabVisible?((0,Co.wg)(),(0,Co.iD)("div",{key:"followees",label:e.$t("user_card.followees"),disabled:!e.user.friends_count},[(0,Co.Wm)(d,{"user-id":e.userId},{item:(0,Co.w5)((function(e){var t=e.item;return[(0,Co.Wm)(l,{user:t},null,8,["user"])]})),_:1},8,["user-id"])],8,Hd)):(0,Co.kq)("",!0),e.followersTabVisible?((0,Co.wg)(),(0,Co.iD)("div",{key:"followers",label:e.$t("user_card.followers"),disabled:!e.user.followers_count},[(0,Co.Wm)(p,{"user-id":e.userId},{item:(0,Co.w5)((function(t){var n=t.item;return[(0,Co.Wm)(l,{user:n,"no-follows-you":e.isUs},null,8,["user","no-follows-you"])]})),_:1},8,["user-id"])],8,Vd)):(0,Co.kq)("",!0),(0,Co.Wm)(c,{key:"media",label:e.$t("user_card.media"),disabled:!e.media.visibleStatuses.length,embedded:!0,title:e.$t("user_card.media"),"timeline-name":"media",timeline:e.media,"user-id":e.userId,"in-profile":!0,"footer-slipgate":e.footerRef},null,8,["label","disabled","title","timeline","user-id","footer-slipgate"]),e.isUs?((0,Co.wg)(),(0,Co.j4)(c,{key:"favorites",label:e.$t("user_card.favorites"),disabled:!e.favorites.visibleStatuses.length,embedded:!0,title:e.$t("user_card.favorites"),"timeline-name":"favorites",timeline:e.favorites,"in-profile":!0,"footer-slipgate":e.footerRef},null,8,["label","disabled","title","timeline","footer-slipgate"])):(0,Co.kq)("",!0)]})),_:1},8,["active-tab","on-switch"]),(0,Co._)("div",{ref:e.setFooterRef,class:"panel-footer"},null,512)])):((0,Co.wg)(),(0,Co.iD)("div",Kd,[(0,Co._)("div",Gd,[(0,Co._)("div",Yd,(0,So.zw)(e.$t("settings.profile_tab")),1)]),(0,Co._)("div",Jd,[e.error?((0,Co.wg)(),(0,Co.iD)("span",Qd,(0,So.zw)(e.error),1)):((0,Co.wg)(),(0,Co.j4)(a,{key:1,spin:"",icon:"circle-notch"}))])]))])}]]);var gp={class:"panel panel-default"},vp={class:"panel-heading"},wp={class:"title"},bp={class:"search-input-container"},yp=["placeholder"],Dp={key:0,class:"text-center loading-icon"},_p={key:1},kp={class:"search-nav-heading"},Cp=["label"],Sp=["label"],jp=["label"],Fp={class:"panel-body"},Ap={key:0},Op={class:"new-status-notification text-center"},Ep={key:1,class:"text-center loading-icon"},zp={key:2,class:"search-result-heading"},Pp={key:1},Ip={key:0,class:"search-result-heading"},xp={key:2},Tp={key:0,class:"search-result-heading"},$p={class:"hashtag"},Bp={key:0},Up={key:0},Mp={key:1},Lp={key:0,class:"count"},Rp=(0,Co._)("div",{class:"search-result-footer text-center panel-footer faint"},null,-1),qp=n(45578),Np=n.n(qp);Ht.vI.add(Vt.IJ7,Vt.wn1);const Zp={components:{FollowCard:cp,Conversation:$c,Status:eu.default,TabSwitcher:fl.Z},props:["query"],data:function(){return{loaded:!1,loading:!1,searchTerm:this.query||"",userIds:[],statuses:[],hashtags:[],currenResultTab:"statuses",statusesOffset:0,lastStatusFetchCount:0,lastQuery:""}},computed:{users:function(){var e=this;return this.userIds.map((function(t){return e.$store.getters.findUser(t)}))},visibleStatuses:function(){var e=this.$store.state.statuses.allStatusesObject;return this.statuses.filter((function(t){return e[t.id]&&!e[t.id].deleted}))}},mounted:function(){this.search(this.query)},watch:{query:function(e){this.searchTerm=e,this.search(e)}},methods:{newQuery:function(e){this.$router.push({name:"search",query:{query:e}}),this.$refs.searchInput.focus()},search:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e?(this.loading=!0,this.$refs.searchInput.blur(),this.lastQuery!==e&&(this.userIds=[],this.hashtags=[],this.statuses=[],this.statusesOffset=0,this.lastStatusFetchCount=0),this.$store.dispatch("search",{q:e,resolve:!0,offset:this.statusesOffset,type:n}).then((function(n){t.loading=!1;var o=t.statuses.length;t.userIds=t.userIds.concat(be()(n.accounts,"id")),t.statuses=Np()(t.statuses.concat(n.statuses),"id"),t.hashtags=t.hashtags.concat(n.hashtags),t.currenResultTab=t.getActiveTab(),t.loaded=!0,t.statusesOffset=t.statuses.length,t.lastStatusFetchCount=t.statuses.length-o,t.lastQuery=e}))):this.loading=!1},resultCount:function(e){var t=this[e].length;return 0===t?"":" (".concat(t,")")},onResultTabSwitch:function(e){this.currenResultTab=e},getActiveTab:function(){return this.visibleStatuses.length>0?"statuses":this.users.length>0?"people":this.hashtags.length>0?"hashtags":"statuses"},lastHistoryRecord:function(e){return e.history&&e.history[0]}}},Wp=(0,Jo.Z)(Zp,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon"),a=(0,Co.up)("tab-switcher"),u=(0,Co.up)("Status"),c=(0,Co.up)("FollowCard"),l=(0,Co.up)("router-link");return(0,Co.wg)(),(0,Co.iD)("div",gp,[(0,Co._)("div",vp,[(0,Co._)("div",wp,(0,So.zw)(e.$t("nav.search")),1)]),(0,Co._)("div",bp,[(0,Co.wy)((0,Co._)("input",{ref:"searchInput","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.searchTerm=t}),class:"search-input",placeholder:e.$t("nav.search"),onKeyup:t[1]||(t[1]=(0,wo.D2)((function(t){return e.newQuery(e.searchTerm)}),["enter"]))},null,40,yp),[[wo.nr,e.searchTerm]]),(0,Co._)("button",{class:"btn button-default search-button",type:"submit",onClick:t[2]||(t[2]=function(t){return e.newQuery(e.searchTerm)})},[(0,Co.Wm)(s,{icon:"search"})])]),e.loading&&0==e.statusesOffset?((0,Co.wg)(),(0,Co.iD)("div",Dp,[(0,Co.Wm)(s,{icon:"circle-notch",spin:"",size:"lg"})])):e.loaded?((0,Co.wg)(),(0,Co.iD)("div",_p,[(0,Co._)("div",kp,[(0,Co.Wm)(a,{ref:"tabSwitcher","on-switch":e.onResultTabSwitch,"active-tab":e.currenResultTab},{default:(0,Co.w5)((function(){return[(0,Co._)("span",{key:"statuses",label:e.$t("user_card.statuses")+e.resultCount("visibleStatuses")},null,8,Cp),(0,Co._)("span",{key:"people",label:e.$t("search.people")+e.resultCount("users")},null,8,Sp),(0,Co._)("span",{key:"hashtags",label:e.$t("search.hashtags")+e.resultCount("hashtags")},null,8,jp)]})),_:1},8,["on-switch","active-tab"])])])):(0,Co.kq)("",!0),(0,Co._)("div",Fp,["statuses"===e.currenResultTab?((0,Co.wg)(),(0,Co.iD)("div",Ap,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.visibleStatuses,(function(e){return(0,Co.wg)(),(0,Co.j4)(u,{key:e.id,collapsable:!1,expandable:!1,compact:!1,class:"search-result",statusoid:e,"no-heading":!1},null,8,["statusoid"])})),128)),!e.loading&&e.loaded&&e.lastStatusFetchCount>0?((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:"more-statuses-button button-unstyled -link -fullwidth",onClick:t[3]||(t[3]=(0,wo.iM)((function(t){return e.search(e.searchTerm,"statuses")}),["prevent"]))},[(0,Co._)("div",Op,(0,So.zw)(e.$t("search.load_more")),1)])):e.loading&&e.statusesOffset>0?((0,Co.wg)(),(0,Co.iD)("div",Ep,[(0,Co.Wm)(s,{icon:"circle-notch",spin:"",size:"lg"})])):(0,Co.kq)("",!0),0!==e.visibleStatuses.length&&0!==e.lastStatusFetchCount||e.loading||!e.loaded?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("div",zp,[(0,Co._)("h4",null,(0,So.zw)(0===e.visibleStatuses.length?e.$t("search.no_results"):e.$t("search.no_more_results")),1)]))])):"people"===e.currenResultTab?((0,Co.wg)(),(0,Co.iD)("div",Pp,[0===e.users.length&&!e.loading&&e.loaded?((0,Co.wg)(),(0,Co.iD)("div",Ip,[(0,Co._)("h4",null,(0,So.zw)(e.$t("search.no_results")),1)])):(0,Co.kq)("",!0),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.users,(function(e){return(0,Co.wg)(),(0,Co.j4)(c,{key:e.id,user:e,class:"list-item search-result"},null,8,["user"])})),128))])):"hashtags"===e.currenResultTab?((0,Co.wg)(),(0,Co.iD)("div",xp,[0===e.hashtags.length&&!e.loading&&e.loaded?((0,Co.wg)(),(0,Co.iD)("div",Tp,[(0,Co._)("h4",null,(0,So.zw)(e.$t("search.no_results")),1)])):(0,Co.kq)("",!0),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.hashtags,(function(t){return(0,Co.wg)(),(0,Co.iD)("div",{key:t.url,class:"status trend search-result"},[(0,Co._)("div",$p,[(0,Co.Wm)(l,{to:{name:"tag-timeline",params:{tag:t.name}}},{default:(0,Co.w5)((function(){return[(0,Co.Uk)(" #"+(0,So.zw)(t.name),1)]})),_:2},1032,["to"]),e.lastHistoryRecord(t)?((0,Co.wg)(),(0,Co.iD)("div",Bp,[1==e.lastHistoryRecord(t).accounts?((0,Co.wg)(),(0,Co.iD)("span",Up,(0,So.zw)(e.$t("search.person_talking",{count:e.lastHistoryRecord(t).accounts})),1)):((0,Co.wg)(),(0,Co.iD)("span",Mp,(0,So.zw)(e.$t("search.people_talking",{count:e.lastHistoryRecord(t).accounts})),1))])):(0,Co.kq)("",!0)]),e.lastHistoryRecord(t)?((0,Co.wg)(),(0,Co.iD)("div",Lp,(0,So.zw)(e.lastHistoryRecord(t).uses),1)):(0,Co.kq)("",!0)])})),128))])):(0,Co.kq)("",!0)]),Rp])}]]);var Hp={class:"settings panel panel-default"},Vp={class:"panel-heading"},Kp={class:"panel-body"},Gp={class:"container"},Yp={class:"text-fields"},Jp={class:"form--label",for:"sign-up-username"},Qp=["disabled","placeholder"],Xp={key:0,class:"form-error"},em={key:0},tm={class:"form--label",for:"sign-up-fullname"},nm=["disabled","placeholder"],om={key:1,class:"form-error"},rm={key:0},im={class:"form--label",for:"email"},sm=["disabled","aria-required"],am={key:2,class:"form-error"},um={key:0},cm={class:"form-group"},lm={class:"form--label",for:"bio"},dm=["disabled","placeholder"],pm={class:"form--label",for:"sign-up-password"},mm=["disabled"],hm={key:3,class:"form-error"},fm={key:0},gm={class:"form--label",for:"sign-up-password-confirmation"},vm=["disabled"],wm={key:4,class:"form-error"},bm={key:0},ym={key:1},Dm={class:"form--label",for:"sign-up-birthday"},_m=["disabled","max","aria-required"],km={key:5,class:"form-error"},Cm={key:0},Sm={key:1},jm={key:6,class:"form-group"},Fm={class:"form--label",for:"reason"},Am=["disabled","placeholder"],Om={key:7,id:"captcha-group",class:"form-group"},Em={class:"form--label",for:"captcha-label"},zm=["src"],Pm=["disabled"],Im={key:8,class:"form-group"},xm={for:"token"},Tm={class:"form-group"},$m=["disabled"],Bm=["innerHTML"],Um={key:0,class:"form-group"},Mm={class:"alert error"},Lm=n(21359),Rm=n(35332),qm=n(86269),Nm=n(27483);function Zm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Wm(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Zm(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Zm(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const Hm={setup:function(){return{v$:(0,Lm.ZP)()}},data:function(){return{user:{email:"",fullname:"",username:"",password:"",confirm:"",birthday:"",reason:"",language:[""]},captcha:{}}},components:{InterfaceLanguageSwitcher:qm.Z},validations:function(){var e=this;return{user:{email:{required:(0,Rm.CF)((function(){return e.accountActivationRequired}))},username:{required:Rm.C1},fullname:{required:Rm.C1},password:{required:Rm.C1},confirm:{required:Rm.C1,sameAs:(0,Rm.sH)(this.user.password)},birthday:{required:(0,Rm.CF)((function(){return e.birthdayRequired})),maxValue:function(t){return!e.birthdayRequired||new Date(t).getTime()<=e.birthdayMin.getTime()}},reason:{required:(0,Rm.CF)((function(){return e.accountApprovalRequired}))},language:{}}}},created:function(){(!this.registrationOpen&&!this.token||this.signedIn)&&this.$router.push({name:"root"}),this.setCaptcha()},computed:Wm({token:function(){return this.$route.params.token},bioPlaceholder:function(){return this.replaceNewlines(this.$t("registration.bio_placeholder"))},reasonPlaceholder:function(){return this.replaceNewlines(this.$t("registration.reason_placeholder"))},birthdayMin:function(){var e=this.birthdayMinAge,t=new Date;t.setUTCMilliseconds(0),t.setUTCSeconds(0),t.setUTCMinutes(0),t.setUTCHours(0);var n=new Date;return n.setTime(t.getTime()-e*Nm.x4),n},birthdayMinAttr:function(){return this.birthdayMin.toJSON().replace(/T.+$/,"")},birthdayMinFormatted:function(){var e=Ad.Z.internalToBrowserLocale(this.$i18n.locale);return this.user.birthday&&new Date(Date.parse(this.birthdayMin)).toLocaleDateString(e,{timeZone:"UTC",day:"numeric",month:"long",year:"numeric"})}},(0,s.rn)({registrationOpen:function(e){return e.instance.registrationOpen},signedIn:function(e){return!!e.users.currentUser},isPending:function(e){return e.users.signUpPending},serverValidationErrors:function(e){return e.users.signUpErrors},termsOfService:function(e){return e.instance.tos},accountActivationRequired:function(e){return e.instance.accountActivationRequired},accountApprovalRequired:function(e){return e.instance.accountApprovalRequired},birthdayRequired:function(e){return e.instance.birthdayRequired},birthdayMinAge:function(e){return e.instance.birthdayMinAge}})),methods:Wm(Wm({},(0,s.nv)(["signUp","getCaptcha"])),{},{submit:function(){var e=this;return(0,o.Z)(i().mark((function t(){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.user.nickname=e.user.username,e.user.token=e.token,e.user.captcha_solution=e.captcha.solution,e.user.captcha_token=e.captcha.token,e.user.captcha_answer_data=e.captcha.answer_data,e.user.language&&(e.user.language=Ad.Z.internalToBackendLocaleMulti(e.user.language.filter((function(e){return e})))),e.v$.$touch(),e.v$.$invalid){t.next=18;break}return t.prev=8,t.next=11,e.signUp(e.user);case 11:e.$router.push({name:"friends"}),t.next=18;break;case 14:t.prev=14,t.t0=t.catch(8),console.warn("Registration failed: ",t.t0),e.setCaptcha();case 18:case"end":return t.stop()}}),t,null,[[8,14]])})))()},setCaptcha:function(){var e=this;this.getCaptcha().then((function(t){e.captcha=t}))},replaceNewlines:function(e){return e.replace(/\s*\n\s*/g," \n")}})},Vm=(0,Jo.Z)(Hm,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("interface-language-switcher");return(0,Co.wg)(),(0,Co.iD)("div",Hp,[(0,Co._)("div",Vp,(0,So.zw)(e.$t("registration.registration")),1),(0,Co._)("div",Kp,[(0,Co._)("form",{class:"registration-form",onSubmit:t[12]||(t[12]=(0,wo.iM)((function(t){return e.submit(e.user)}),["prevent"]))},[(0,Co._)("div",Gp,[(0,Co._)("div",Yp,[(0,Co._)("div",{class:(0,So.C_)(["form-group",{"form-group--error":e.v$.user.username.$error}])},[(0,Co._)("label",Jp,(0,So.zw)(e.$t("login.username")),1),(0,Co.wy)((0,Co._)("input",{id:"sign-up-username","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.v$.user.username.$model=t}),disabled:e.isPending,class:"form-control","aria-required":!0,placeholder:e.$t("registration.username_placeholder")},null,8,Qp),[[wo.nr,e.v$.user.username.$model,void 0,{trim:!0}]])],2),e.v$.user.username.$dirty?((0,Co.wg)(),(0,Co.iD)("div",Xp,[(0,Co._)("ul",null,[e.v$.user.username.required?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("li",em,[(0,Co._)("span",null,(0,So.zw)(e.$t("registration.validations.username_required")),1)]))])])):(0,Co.kq)("",!0),(0,Co._)("div",{class:(0,So.C_)(["form-group",{"form-group--error":e.v$.user.fullname.$error}])},[(0,Co._)("label",tm,(0,So.zw)(e.$t("registration.fullname")),1),(0,Co.wy)((0,Co._)("input",{id:"sign-up-fullname","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.v$.user.fullname.$model=t}),disabled:e.isPending,class:"form-control","aria-required":!0,placeholder:e.$t("registration.fullname_placeholder")},null,8,nm),[[wo.nr,e.v$.user.fullname.$model,void 0,{trim:!0}]])],2),e.v$.user.fullname.$dirty?((0,Co.wg)(),(0,Co.iD)("div",om,[(0,Co._)("ul",null,[e.v$.user.fullname.required?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("li",rm,[(0,Co._)("span",null,(0,So.zw)(e.$t("registration.validations.fullname_required")),1)]))])])):(0,Co.kq)("",!0),(0,Co._)("div",{class:(0,So.C_)(["form-group",{"form-group--error":e.v$.user.email.$error}])},[(0,Co._)("label",im,(0,So.zw)(e.accountActivationRequired?e.$t("registration.email"):e.$t("registration.email_optional")),1),(0,Co.wy)((0,Co._)("input",{id:"email","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.v$.user.email.$model=t}),disabled:e.isPending,class:"form-control",type:"email","aria-required":e.accountActivationRequired},null,8,sm),[[wo.nr,e.v$.user.email.$model]])],2),e.v$.user.email.$dirty?((0,Co.wg)(),(0,Co.iD)("div",am,[(0,Co._)("ul",null,[e.v$.user.email.required?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("li",um,[(0,Co._)("span",null,(0,So.zw)(e.$t("registration.validations.email_required")),1)]))])])):(0,Co.kq)("",!0),(0,Co._)("div",cm,[(0,Co._)("label",lm,(0,So.zw)(e.$t("registration.bio_optional")),1),(0,Co.wy)((0,Co._)("textarea",{id:"bio","onUpdate:modelValue":t[3]||(t[3]=function(t){return e.user.bio=t}),disabled:e.isPending,class:"form-control",placeholder:e.bioPlaceholder},null,8,dm),[[wo.nr,e.user.bio]])]),(0,Co._)("div",{class:(0,So.C_)(["form-group",{"form-group--error":e.v$.user.password.$error}])},[(0,Co._)("label",pm,(0,So.zw)(e.$t("login.password")),1),(0,Co.wy)((0,Co._)("input",{id:"sign-up-password","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.user.password=t}),disabled:e.isPending,class:"form-control",type:"password","aria-required":!0},null,8,mm),[[wo.nr,e.user.password]])],2),e.v$.user.password.$dirty?((0,Co.wg)(),(0,Co.iD)("div",hm,[(0,Co._)("ul",null,[e.v$.user.password.required?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("li",fm,[(0,Co._)("span",null,(0,So.zw)(e.$t("registration.validations.password_required")),1)]))])])):(0,Co.kq)("",!0),(0,Co._)("div",{class:(0,So.C_)(["form-group",{"form-group--error":e.v$.user.confirm.$error}])},[(0,Co._)("label",gm,(0,So.zw)(e.$t("registration.password_confirm")),1),(0,Co.wy)((0,Co._)("input",{id:"sign-up-password-confirmation","onUpdate:modelValue":t[5]||(t[5]=function(t){return e.user.confirm=t}),disabled:e.isPending,class:"form-control",type:"password","aria-required":!0},null,8,vm),[[wo.nr,e.user.confirm]])],2),e.v$.user.confirm.$dirty?((0,Co.wg)(),(0,Co.iD)("div",wm,[(0,Co._)("ul",null,[e.v$.user.confirm.required.$invalid?((0,Co.wg)(),(0,Co.iD)("li",bm,[(0,Co._)("span",null,(0,So.zw)(e.$t("registration.validations.password_confirmation_required")),1)])):(0,Co.kq)("",!0),e.v$.user.confirm.sameAs.$invalid?((0,Co.wg)(),(0,Co.iD)("li",ym,[(0,Co._)("span",null,(0,So.zw)(e.$t("registration.validations.password_confirmation_match")),1)])):(0,Co.kq)("",!0)])])):(0,Co.kq)("",!0),(0,Co._)("div",{class:(0,So.C_)(["form-group",{"form-group--error":e.v$.user.birthday.$error}])},[(0,Co._)("label",Dm,(0,So.zw)(e.birthdayRequired?e.$t("registration.birthday"):e.$t("registration.birthday_optional")),1),(0,Co.wy)((0,Co._)("input",{id:"sign-up-birthday","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.user.birthday=t}),disabled:e.isPending,class:"form-control",type:"date",max:e.birthdayRequired?e.birthdayMinAttr:void 0,"aria-required":e.birthdayRequired},null,8,_m),[[wo.nr,e.user.birthday]])],2),e.v$.user.birthday.$dirty?((0,Co.wg)(),(0,Co.iD)("div",km,[(0,Co._)("ul",null,[e.v$.user.birthday.required.$invalid?((0,Co.wg)(),(0,Co.iD)("li",Cm,[(0,Co._)("span",null,(0,So.zw)(e.$t("registration.validations.birthday_required")),1)])):(0,Co.kq)("",!0),e.v$.user.birthday.maxValue.$invalid?((0,Co.wg)(),(0,Co.iD)("li",Sm,[(0,Co._)("span",null,(0,So.zw)(e.$tc("registration.validations.birthday_min_age",{date:e.birthdayMinFormatted})),1)])):(0,Co.kq)("",!0)])])):(0,Co.kq)("",!0),(0,Co._)("div",{class:(0,So.C_)(["form-group",{"form-group--error":e.v$.user.language.$error}])},[(0,Co.Wm)(s,{for:"email-language","prompt-text":e.$t("registration.email_language"),language:e.v$.user.language.$model,"set-language":function(t){return e.v$.user.language.$model=t},onClick:t[7]||(t[7]=(0,wo.iM)((function(){}),["stop","prevent"]))},null,8,["prompt-text","language","set-language"])],2),e.accountApprovalRequired?((0,Co.wg)(),(0,Co.iD)("div",jm,[(0,Co._)("label",Fm,(0,So.zw)(e.$t("registration.reason")),1),(0,Co.wy)((0,Co._)("textarea",{id:"reason","onUpdate:modelValue":t[8]||(t[8]=function(t){return e.user.reason=t}),disabled:e.isPending,class:"form-control",placeholder:e.reasonPlaceholder},null,8,Am),[[wo.nr,e.user.reason]])])):(0,Co.kq)("",!0),"none"!=e.captcha.type?((0,Co.wg)(),(0,Co.iD)("div",Om,[(0,Co._)("label",Em,(0,So.zw)(e.$t("registration.captcha")),1),["kocaptcha","native"].includes(e.captcha.type)?((0,Co.wg)(),(0,Co.iD)(Co.HY,{key:0},[(0,Co._)("img",{src:e.captcha.url,onClick:t[9]||(t[9]=function(){return e.setCaptcha&&e.setCaptcha.apply(e,arguments)})},null,8,zm),(0,Co._)("sub",null,(0,So.zw)(e.$t("registration.new_captcha")),1),(0,Co.wy)((0,Co._)("input",{id:"captcha-answer","onUpdate:modelValue":t[10]||(t[10]=function(t){return e.captcha.solution=t}),disabled:e.isPending,class:"form-control",type:"text",autocomplete:"off",autocorrect:"off",autocapitalize:"off",spellcheck:"false"},null,8,Pm),[[wo.nr,e.captcha.solution]])],64)):(0,Co.kq)("",!0)])):(0,Co.kq)("",!0),e.token?((0,Co.wg)(),(0,Co.iD)("div",Im,[(0,Co._)("label",xm,(0,So.zw)(e.$t("registration.token")),1),(0,Co.wy)((0,Co._)("input",{id:"token","onUpdate:modelValue":t[11]||(t[11]=function(t){return e.token=t}),disabled:"true",class:"form-control",type:"text"},null,512),[[wo.nr,e.token]])])):(0,Co.kq)("",!0),(0,Co._)("div",Tm,[(0,Co._)("button",{disabled:e.isPending,type:"submit",class:"btn button-default"},(0,So.zw)(e.$t("registration.register")),9,$m)])]),(0,Co._)("div",{class:"terms-of-service",innerHTML:e.termsOfService},null,8,Bm)]),e.serverValidationErrors.length?((0,Co.wg)(),(0,Co.iD)("div",Um,[(0,Co._)("div",Mm,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.serverValidationErrors,(function(e){return(0,Co.wg)(),(0,Co.iD)("span",{key:e},(0,So.zw)(e),1)})),128))])])):(0,Co.kq)("",!0)],32)])])}]]);var Km={class:"settings panel panel-default"},Gm={class:"panel-heading"},Ym={class:"panel-body"},Jm={class:"container"},Qm={key:0},Xm={key:0},eh={key:1},th={key:1},nh={key:0},oh={class:"form-group text-center"},rh={key:2},ih={key:0,class:"password-reset-required error"},sh={class:"form-group"},ah=["disabled","placeholder"],uh={class:"form-group"},ch=["disabled"],lh={key:3,class:"alert error notice-dismissible"};function dh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ph(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dh(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.NBC);var mh={data:function(){return{user:{email:""},isPending:!1,success:!1,throttled:!1,error:null}},computed:ph(ph({},(0,s.rn)({signedIn:function(e){return!!e.users.currentUser},instance:function(e){return e.instance}})),{},{mailerEnabled:function(){return this.instance.mailerEnabled}}),created:function(){this.signedIn&&this.$router.push({name:"root"})},props:{passwordResetRequested:{default:!1,type:Boolean}},methods:{dismissError:function(){this.error=null},submit:function(){var e=this;this.isPending=!0;var t=this.user.email;(function(e){var t=e.instance,n={email:e.email},o=Ue()(n,(function(e,t,n){var o="".concat(n,"=").concat(encodeURIComponent(t));return"".concat(e,"&").concat(o)}),""),r="".concat(t).concat("/auth/password","?").concat(o);return window.fetch(r,{method:"POST"})})({instance:this.instance.server,email:t}).then((function(t){var n=t.status;e.isPending=!1,e.user.email="",204===n?(e.success=!0,e.error=null):429===n&&(e.throttled=!0,e.error=e.$t("password_reset.too_many_requests"))})).catch((function(){e.isPending=!1,e.user.email="",e.error=e.$t("general.generic_error")}))}}};const hh=mh,fh=(0,Jo.Z)(hh,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("router-link"),a=(0,Co.up)("FAIcon");return(0,Co.wg)(),(0,Co.iD)("div",Km,[(0,Co._)("div",Gm,(0,So.zw)(e.$t("password_reset.password_reset")),1),(0,Co._)("div",Ym,[(0,Co._)("form",{class:"password-reset-form",onSubmit:t[2]||(t[2]=(0,wo.iM)((function(){return e.submit&&e.submit.apply(e,arguments)}),["prevent"]))},[(0,Co._)("div",Jm,[e.mailerEnabled?e.success||e.throttled?((0,Co.wg)(),(0,Co.iD)("div",th,[e.success?((0,Co.wg)(),(0,Co.iD)("p",nh,(0,So.zw)(e.$t("password_reset.check_email")),1)):(0,Co.kq)("",!0),(0,Co._)("div",oh,[(0,Co.Wm)(s,{to:{name:"root"}},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("password_reset.return_home")),1)]})),_:1})])])):((0,Co.wg)(),(0,Co.iD)("div",rh,[e.passwordResetRequested?((0,Co.wg)(),(0,Co.iD)("p",ih,(0,So.zw)(e.$t("password_reset.password_reset_required")),1)):(0,Co.kq)("",!0),(0,Co._)("p",null,(0,So.zw)(e.$t("password_reset.instruction")),1),(0,Co._)("div",sh,[(0,Co.wy)((0,Co._)("input",{ref:"email","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.user.email=t}),disabled:e.isPending,placeholder:e.$t("password_reset.placeholder"),class:"form-control",type:"input"},null,8,ah),[[wo.nr,e.user.email]])]),(0,Co._)("div",uh,[(0,Co._)("button",{disabled:e.isPending,type:"submit",class:"btn button-default btn-block"},(0,So.zw)(e.$t("settings.save")),9,ch)])])):((0,Co.wg)(),(0,Co.iD)("div",Qm,[e.passwordResetRequested?((0,Co.wg)(),(0,Co.iD)("p",Xm,(0,So.zw)(e.$t("password_reset.password_reset_required_but_mailer_is_disabled")),1)):((0,Co.wg)(),(0,Co.iD)("p",eh,(0,So.zw)(e.$t("password_reset.password_reset_disabled")),1))])),e.error?((0,Co.wg)(),(0,Co.iD)("p",lh,[(0,Co._)("span",null,(0,So.zw)(e.error),1),(0,Co._)("a",{class:"fa-scale-110 fa-old-padding dismiss",onClick:t[1]||(t[1]=(0,wo.iM)((function(t){return e.dismissError()}),["prevent"]))},[(0,Co.Wm)(a,{icon:"times"})])])):(0,Co.kq)("",!0)])],32)])])}]]);var gh={class:"settings panel panel-default"},vh={class:"panel-heading"},wh={class:"title"},bh={class:"panel-body"},yh={class:"follow-request-card-content-container"};const Dh={props:["user"],components:{BasicUserCard:ed.Z,ConfirmModal:Da.Z},data:function(){return{showingApproveConfirmDialog:!1,showingDenyConfirmDialog:!1}},methods:{findFollowRequestNotificationId:function(){var e=this,t=(0,K.Bt)(this.$store).find((function(t){return t.from_profile.id===e.user.id&&"follow_request"===t.type}));return t&&t.id},showApproveConfirmDialog:function(){this.showingApproveConfirmDialog=!0},hideApproveConfirmDialog:function(){this.showingApproveConfirmDialog=!1},showDenyConfirmDialog:function(){this.showingDenyConfirmDialog=!0},hideDenyConfirmDialog:function(){this.showingDenyConfirmDialog=!1},approveUser:function(){this.shouldConfirmApprove?this.showApproveConfirmDialog():this.doApprove()},doApprove:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user);var e=this.findFollowRequestNotificationId();this.$store.dispatch("markSingleNotificationAsSeen",{id:e}),this.$store.dispatch("updateNotification",{id:e,updater:function(e){e.type="follow"}}),this.hideApproveConfirmDialog()},denyUser:function(){this.shouldConfirmDeny?this.showDenyConfirmDialog():this.doDeny()},doDeny:function(){var e=this,t=this.findFollowRequestNotificationId();this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:t}),e.$store.dispatch("removeFollowRequest",e.user)})),this.hideDenyConfirmDialog()}},computed:{mergedConfig:function(){return this.$store.getters.mergedConfig},shouldConfirmApprove:function(){return this.mergedConfig.modalOnApproveFollow},shouldConfirmDeny:function(){return this.mergedConfig.modalOnDenyFollow}}},_h={components:{FollowRequestCard:(0,Jo.Z)(Dh,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("confirm-modal"),a=(0,Co.up)("basic-user-card");return(0,Co.wg)(),(0,Co.j4)(a,{user:e.user},{default:(0,Co.w5)((function(){return[(0,Co._)("div",yh,[(0,Co._)("button",{class:"btn button-default",onClick:t[0]||(t[0]=function(){return e.approveUser&&e.approveUser.apply(e,arguments)})},(0,So.zw)(e.$t("user_card.approve")),1),(0,Co._)("button",{class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.denyUser&&e.denyUser.apply(e,arguments)})},(0,So.zw)(e.$t("user_card.deny")),1)]),((0,Co.wg)(),(0,Co.j4)(Co.lR,{to:"#modal"},[e.showingApproveConfirmDialog?((0,Co.wg)(),(0,Co.j4)(s,{key:0,title:e.$t("user_card.approve_confirm_title"),"confirm-text":e.$t("user_card.approve_confirm_accept_button"),"cancel-text":e.$t("user_card.approve_confirm_cancel_button"),onAccepted:e.doApprove,onCancelled:e.hideApproveConfirmDialog},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("user_card.approve_confirm",{user:e.user.screen_name_ui})),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,Co.kq)("",!0),e.showingDenyConfirmDialog?((0,Co.wg)(),(0,Co.j4)(s,{key:1,title:e.$t("user_card.deny_confirm_title"),"confirm-text":e.$t("user_card.deny_confirm_accept_button"),"cancel-text":e.$t("user_card.deny_confirm_cancel_button"),onAccepted:e.doDeny,onCancelled:e.hideDenyConfirmDialog},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("user_card.deny_confirm",{user:e.user.screen_name_ui})),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,Co.kq)("",!0)]))]})),_:1},8,["user"])}]])},computed:{requests:function(){return this.$store.state.api.followRequests}}},kh=(0,Jo.Z)(_h,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FollowRequestCard");return(0,Co.wg)(),(0,Co.iD)("div",gh,[(0,Co._)("div",vh,[(0,Co._)("div",wh,(0,So.zw)(e.$t("nav.friend_requests")),1)]),(0,Co._)("div",bh,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.requests,(function(e){return(0,Co.wg)(),(0,Co.j4)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"])})),128))])])}]]),Ch={props:["code"],mounted:function(){var e=this;if(this.code){var t=this.$store.state.oauth,n=t.clientId,o=t.clientSecret;Ne.getToken({clientId:n,clientSecret:o,instance:this.$store.state.instance.server,code:this.code}).then((function(t){e.$store.commit("setToken",t.access_token),e.$store.dispatch("loginUser",t.access_token),e.$router.push({name:"friends"})}))}}},Sh=(0,Jo.Z)(Ch,[["render",function(e,t,n,o,r,i){return(0,Co.wg)(),(0,Co.iD)("h1",null,"...")}]]);var jh={class:"panel panel-default"},Fh={class:"panel-heading"},Ah={class:"panel-body"};const Oh={components:{FollowCard:cp},data:function(){return{users:[]}},mounted:function(){this.getWhoToFollow()},methods:{showWhoToFollow:function(e){var t=this;e.forEach((function(e,n){t.$store.state.api.backendInteractor.fetchUser({id:e.acct}).then((function(e){e.error||(t.$store.commit("addNewUsers",[e]),t.users.push(e))}))}))},getWhoToFollow:function(){var e=this,t=this.$store.state.users.currentUser.credentials;t&&h.ZP.suggestions({credentials:t}).then((function(t){e.showWhoToFollow(t)}))}}},Eh=(0,Jo.Z)(Oh,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FollowCard");return(0,Co.wg)(),(0,Co.iD)("div",jh,[(0,Co._)("div",Fh,(0,So.zw)(e.$t("who_to_follow.who_to_follow")),1),(0,Co._)("div",Ah,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.users,(function(e){return(0,Co.wg)(),(0,Co.j4)(s,{key:e.id,user:e,class:"list-item"},null,8,["user"])})),128))])])}]]);var zh={class:"column-inner"},Ph={class:"panel panel-default"},Ih={class:"panel-body"},xh=["innerHTML"];const Th={computed:{content:function(){return this.$store.state.instance.tos}}},$h=(0,Jo.Z)(Th,[["render",function(e,t,n,o,r,i){return(0,Co.wg)(),(0,Co.iD)("div",null,[(0,Co._)("div",Ph,[(0,Co._)("div",Ih,[(0,Co._)("div",{class:"tos-content",innerHTML:e.content},null,8,xh)])])])}]]);var Bh={class:"staff-panel"},Uh={class:"panel panel-default base01-background"},Mh={class:"panel-heading timeline-heading base02-background"},Lh={class:"title"},Rh={class:"panel-body"};function qh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Nh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?qh(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const Zh={created:function(){var e=this;this.$store.state.instance.staffAccounts.forEach((function(t){return e.$store.dispatch("fetchUserIfMissing",t)}))},components:{BasicUserCard:ed.Z},computed:Nh(Nh({groupedStaffAccounts:function(){var e=be()(this.staffAccounts,this.findUserByName).filter((function(e){return e})),t=Tt()(e,"role");return[{role:"admin",users:t.admin},{role:"moderator",users:t.moderator}].filter((function(e){return e.users}))}},(0,s.Se)(["findUserByName"])),(0,s.rn)({staffAccounts:function(e){return e.instance.staffAccounts}}))},Wh=(0,Jo.Z)(Zh,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("basic-user-card");return(0,Co.wg)(),(0,Co.iD)("div",Bh,[(0,Co._)("div",Uh,[(0,Co._)("div",Mh,[(0,Co._)("div",Lh,(0,So.zw)(e.$t("about.staff")),1)]),(0,Co._)("div",Rh,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.groupedStaffAccounts,(function(t){return(0,Co.wg)(),(0,Co.iD)("div",{key:t.role,class:"staff-group"},[(0,Co._)("h4",null,(0,So.zw)(e.$t("general.role."+t.role)),1),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(t.users,(function(e){return(0,Co.wg)(),(0,Co.j4)(s,{key:e.screen_name,user:e},null,8,["user"])})),128))])})),128))])])])}]]);var Hh={key:0,class:"mrf-transparency-panel"},Vh={class:"panel panel-default base01-background"},Kh={class:"panel-heading timeline-heading base02-background"},Gh={class:"title"},Yh={class:"panel-body"},Jh={class:"mrf-section"},Qh=["textContent"],Xh={key:0},ef={key:1},tf={key:0},nf={key:1},of={key:2},rf={key:0},sf={key:1},af={key:3},uf={key:0},cf={key:1},lf={key:4},df={key:0},pf={key:1},mf={key:5},hf={key:0},ff={key:1},gf={key:6},vf={key:0},wf={key:1},bf={key:7},yf={key:8},Df=["textContent"],_f={key:9},kf=["textContent"],Cf={key:10};function Sf(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function jf(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Sf(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Sf(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Ff=function(e,t,n){return e.map((function(e){return t[n]&&t[n][e]&&t[n][e].reason?{instance:e,reason:t[n][e].reason}:{instance:e,reason:""}}))};const Af={computed:jf(jf({},(0,s.rn)({federationPolicy:function(e){return Dt()(e,"instance.federationPolicy")},mrfPolicies:function(e){return Dt()(e,"instance.federationPolicy.mrf_policies",[])},quarantineInstances:function(e){return Ff(Dt()(e,"instance.federationPolicy.quarantined_instances",[]),Dt()(e,"instance.federationPolicy.quarantined_instances_info",[]),"quarantined_instances")},acceptInstances:function(e){return Ff(Dt()(e,"instance.federationPolicy.mrf_simple.accept",[]),Dt()(e,"instance.federationPolicy.mrf_simple_info",[]),"accept")},rejectInstances:function(e){return Ff(Dt()(e,"instance.federationPolicy.mrf_simple.reject",[]),Dt()(e,"instance.federationPolicy.mrf_simple_info",[]),"reject")},ftlRemovalInstances:function(e){return Ff(Dt()(e,"instance.federationPolicy.mrf_simple.federated_timeline_removal",[]),Dt()(e,"instance.federationPolicy.mrf_simple_info",[]),"federated_timeline_removal")},mediaNsfwInstances:function(e){return Ff(Dt()(e,"instance.federationPolicy.mrf_simple.media_nsfw",[]),Dt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_nsfw")},mediaRemovalInstances:function(e){return Ff(Dt()(e,"instance.federationPolicy.mrf_simple.media_removal",[]),Dt()(e,"instance.federationPolicy.mrf_simple_info",[]),"media_removal")},keywordsFtlRemoval:function(e){return Dt()(e,"instance.federationPolicy.mrf_keyword.federated_timeline_removal",[])},keywordsReject:function(e){return Dt()(e,"instance.federationPolicy.mrf_keyword.reject",[])},keywordsReplace:function(e){return Dt()(e,"instance.federationPolicy.mrf_keyword.replace",[])}})),{},{hasInstanceSpecificPolicies:function(){return this.quarantineInstances.length||this.acceptInstances.length||this.rejectInstances.length||this.ftlRemovalInstances.length||this.mediaNsfwInstances.length||this.mediaRemovalInstances.length},hasKeywordPolicies:function(){return this.keywordsFtlRemoval.length||this.keywordsReject.length||this.keywordsReplace.length}})},Of={components:{InstanceSpecificPanel:Ai,FeaturesPanel:Ri,TermsOfServicePanel:$h,StaffPanel:Wh,MRFTransparencyPanel:(0,Jo.Z)(Af,[["render",function(e,t,n,o,r,i){return e.federationPolicy?((0,Co.wg)(),(0,Co.iD)("div",Hh,[(0,Co._)("div",Vh,[(0,Co._)("div",Kh,[(0,Co._)("div",Gh,(0,So.zw)(e.$t("about.mrf.federation")),1)]),(0,Co._)("div",Yh,[(0,Co._)("div",Jh,[(0,Co._)("h2",null,(0,So.zw)(e.$t("about.mrf.mrf_policies")),1),(0,Co._)("p",null,(0,So.zw)(e.$t("about.mrf.mrf_policies_desc")),1),(0,Co._)("ul",null,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.mrfPolicies,(function(e){return(0,Co.wg)(),(0,Co.iD)("li",{key:e,textContent:(0,So.zw)(e)},null,8,Qh)})),128))]),e.hasInstanceSpecificPolicies?((0,Co.wg)(),(0,Co.iD)("h2",Xh,(0,So.zw)(e.$t("about.mrf.simple.simple_policies")),1)):(0,Co.kq)("",!0),e.acceptInstances.length?((0,Co.wg)(),(0,Co.iD)("div",ef,[(0,Co._)("h4",null,(0,So.zw)(e.$t("about.mrf.simple.accept")),1),(0,Co._)("p",null,(0,So.zw)(e.$t("about.mrf.simple.accept_desc")),1),(0,Co._)("table",null,[(0,Co._)("tr",null,[(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.instance")),1),(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.acceptInstances,(function(t){return(0,Co.wg)(),(0,Co.iD)("tr",{key:t.instance+"_accept"},[(0,Co._)("td",null,(0,So.zw)(t.instance),1),""===t.reason?((0,Co.wg)(),(0,Co.iD)("td",tf,(0,So.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,Co.wg)(),(0,Co.iD)("td",nf,(0,So.zw)(t.reason),1))])})),128))])])):(0,Co.kq)("",!0),e.rejectInstances.length?((0,Co.wg)(),(0,Co.iD)("div",of,[(0,Co._)("h4",null,(0,So.zw)(e.$t("about.mrf.simple.reject")),1),(0,Co._)("p",null,(0,So.zw)(e.$t("about.mrf.simple.reject_desc")),1),(0,Co._)("table",null,[(0,Co._)("tr",null,[(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.instance")),1),(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.rejectInstances,(function(t){return(0,Co.wg)(),(0,Co.iD)("tr",{key:t.instance+"_reject"},[(0,Co._)("td",null,(0,So.zw)(t.instance),1),""===t.reason?((0,Co.wg)(),(0,Co.iD)("td",rf,(0,So.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,Co.wg)(),(0,Co.iD)("td",sf,(0,So.zw)(t.reason),1))])})),128))])])):(0,Co.kq)("",!0),e.quarantineInstances.length?((0,Co.wg)(),(0,Co.iD)("div",af,[(0,Co._)("h4",null,(0,So.zw)(e.$t("about.mrf.simple.quarantine")),1),(0,Co._)("p",null,(0,So.zw)(e.$t("about.mrf.simple.quarantine_desc")),1),(0,Co._)("table",null,[(0,Co._)("tr",null,[(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.instance")),1),(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.quarantineInstances,(function(t){return(0,Co.wg)(),(0,Co.iD)("tr",{key:t.instance+"_quarantine"},[(0,Co._)("td",null,(0,So.zw)(t.instance),1),""===t.reason?((0,Co.wg)(),(0,Co.iD)("td",uf,(0,So.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,Co.wg)(),(0,Co.iD)("td",cf,(0,So.zw)(t.reason),1))])})),128))])])):(0,Co.kq)("",!0),e.ftlRemovalInstances.length?((0,Co.wg)(),(0,Co.iD)("div",lf,[(0,Co._)("h4",null,(0,So.zw)(e.$t("about.mrf.simple.ftl_removal")),1),(0,Co._)("p",null,(0,So.zw)(e.$t("about.mrf.simple.ftl_removal_desc")),1),(0,Co._)("table",null,[(0,Co._)("tr",null,[(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.instance")),1),(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.ftlRemovalInstances,(function(t){return(0,Co.wg)(),(0,Co.iD)("tr",{key:t.instance+"_ftl_removal"},[(0,Co._)("td",null,(0,So.zw)(t.instance),1),""===t.reason?((0,Co.wg)(),(0,Co.iD)("td",df,(0,So.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,Co.wg)(),(0,Co.iD)("td",pf,(0,So.zw)(t.reason),1))])})),128))])])):(0,Co.kq)("",!0),e.mediaNsfwInstances.length?((0,Co.wg)(),(0,Co.iD)("div",mf,[(0,Co._)("h4",null,(0,So.zw)(e.$t("about.mrf.simple.media_nsfw")),1),(0,Co._)("p",null,(0,So.zw)(e.$t("about.mrf.simple.media_nsfw_desc")),1),(0,Co._)("table",null,[(0,Co._)("tr",null,[(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.instance")),1),(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.mediaNsfwInstances,(function(t){return(0,Co.wg)(),(0,Co.iD)("tr",{key:t.instance+"_media_nsfw"},[(0,Co._)("td",null,(0,So.zw)(t.instance),1),""===t.reason?((0,Co.wg)(),(0,Co.iD)("td",hf,(0,So.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,Co.wg)(),(0,Co.iD)("td",ff,(0,So.zw)(t.reason),1))])})),128))])])):(0,Co.kq)("",!0),e.mediaRemovalInstances.length?((0,Co.wg)(),(0,Co.iD)("div",gf,[(0,Co._)("h4",null,(0,So.zw)(e.$t("about.mrf.simple.media_removal")),1),(0,Co._)("p",null,(0,So.zw)(e.$t("about.mrf.simple.media_removal_desc")),1),(0,Co._)("table",null,[(0,Co._)("tr",null,[(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.instance")),1),(0,Co._)("th",null,(0,So.zw)(e.$t("about.mrf.simple.reason")),1)]),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.mediaRemovalInstances,(function(t){return(0,Co.wg)(),(0,Co.iD)("tr",{key:t.instance+"_media_removal"},[(0,Co._)("td",null,(0,So.zw)(t.instance),1),""===t.reason?((0,Co.wg)(),(0,Co.iD)("td",vf,(0,So.zw)(e.$t("about.mrf.simple.not_applicable")),1)):((0,Co.wg)(),(0,Co.iD)("td",wf,(0,So.zw)(t.reason),1))])})),128))])])):(0,Co.kq)("",!0),e.hasKeywordPolicies?((0,Co.wg)(),(0,Co.iD)("h2",bf,(0,So.zw)(e.$t("about.mrf.keyword.keyword_policies")),1)):(0,Co.kq)("",!0),e.keywordsFtlRemoval.length?((0,Co.wg)(),(0,Co.iD)("div",yf,[(0,Co._)("h4",null,(0,So.zw)(e.$t("about.mrf.keyword.ftl_removal")),1),(0,Co._)("ul",null,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.keywordsFtlRemoval,(function(e){return(0,Co.wg)(),(0,Co.iD)("li",{key:e,textContent:(0,So.zw)(e)},null,8,Df)})),128))])])):(0,Co.kq)("",!0),e.keywordsReject.length?((0,Co.wg)(),(0,Co.iD)("div",_f,[(0,Co._)("h4",null,(0,So.zw)(e.$t("about.mrf.keyword.reject")),1),(0,Co._)("ul",null,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.keywordsReject,(function(e){return(0,Co.wg)(),(0,Co.iD)("li",{key:e,textContent:(0,So.zw)(e)},null,8,kf)})),128))])])):(0,Co.kq)("",!0),e.keywordsReplace.length?((0,Co.wg)(),(0,Co.iD)("div",Cf,[(0,Co._)("h4",null,(0,So.zw)(e.$t("about.mrf.keyword.replace")),1),(0,Co._)("ul",null,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.keywordsReplace,(function(t){return(0,Co.wg)(),(0,Co.iD)("li",{key:t},(0,So.zw)(t.pattern)+" "+(0,So.zw)(e.$t("about.mrf.keyword.is_replaced_by"))+" "+(0,So.zw)(t.replacement),1)})),128))])])):(0,Co.kq)("",!0)])])])])):(0,Co.kq)("",!0)}]])},computed:{showFeaturesPanel:function(){return this.$store.state.instance.showFeaturesPanel},showInstanceSpecificPanel:function(){return this.$store.state.instance.showInstanceSpecificPanel&&!this.$store.getters.mergedConfig.hideISP&&this.$store.state.instance.instanceSpecificPanelContent}}},Ef=(0,Jo.Z)(Of,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("instance-specific-panel"),a=(0,Co.up)("staff-panel"),u=(0,Co.up)("terms-of-service-panel"),c=(0,Co.up)("MRFTransparencyPanel"),l=(0,Co.up)("features-panel");return(0,Co.wg)(),(0,Co.iD)("div",zh,[e.showInstanceSpecificPanel?((0,Co.wg)(),(0,Co.j4)(s,{key:0})):(0,Co.kq)("",!0),(0,Co.Wm)(a),(0,Co.Wm)(u),(0,Co.Wm)(c),e.showFeaturesPanel?((0,Co.wg)(),(0,Co.j4)(l,{key:1})):(0,Co.kq)("",!0)])}]]);var zf={class:"panel panel-default"},Pf={class:"panel-heading"},If={class:"panel-body"},xf={key:0};const Tf={data:function(){return{error:!1}},mounted:function(){this.redirect()},methods:{redirect:function(){var e=this,t=this.$route.params.username+"@"+this.$route.params.hostname;this.$store.state.api.backendInteractor.fetchUser({id:t}).then((function(t){if(t.error)e.error=!0;else{e.$store.commit("addNewUsers",[t]);var n=t.id;e.$router.replace({name:"external-user-profile",params:{id:n}})}})).catch((function(){e.error=!0}))}}},$f=(0,Jo.Z)(Tf,[["render",function(e,t,n,o,r,i){return(0,Co.wg)(),(0,Co.iD)("div",zf,[(0,Co._)("div",Pf,(0,So.zw)(e.$t("remote_user_resolver.remote_user_resolver")),1),(0,Co._)("div",If,[(0,Co._)("p",null,(0,So.zw)(e.$t("remote_user_resolver.searching_for"))+" @"+(0,So.zw)(e.$route.params.username)+"@"+(0,So.zw)(e.$route.params.hostname),1),e.error?((0,Co.wg)(),(0,Co.iD)("p",xf,(0,So.zw)(e.$t("remote_user_resolver.error")),1)):(0,Co.kq)("",!0)])])}]]);var Bf={class:"Lists panel panel-default"},Uf={class:"panel-heading"},Mf={class:"title"},Lf={class:"panel-body"},Rf={class:"list-card"};Ht.vI.add(Vt.cNd);const qf={props:["list"]},Nf={data:function(){return{isNew:!1}},components:{ListsCard:(0,Jo.Z)(qf,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("router-link"),a=(0,Co.up)("FAIcon");return(0,Co.wg)(),(0,Co.iD)("div",Rf,[(0,Co.Wm)(s,{to:{name:"lists-timeline",params:{id:e.list.id}},class:"list-name"},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.list.title),1)]})),_:1},8,["to"]),(0,Co.Wm)(s,{to:{name:"lists-edit",params:{id:e.list.id}},class:"button-list-edit"},{default:(0,Co.w5)((function(){return[(0,Co.Wm)(a,{class:"fa-scale-110 fa-old-padding",icon:"ellipsis-h"})]})),_:1},8,["to"])])}]])},computed:{lists:function(){return this.$store.state.lists.allLists}},methods:{cancelNewList:function(){this.isNew=!1},newList:function(){this.isNew=!0}}},Zf=(0,Jo.Z)(Nf,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("router-link"),a=(0,Co.up)("ListsCard");return(0,Co.wg)(),(0,Co.iD)("div",Bf,[(0,Co._)("div",Uf,[(0,Co._)("div",Mf,(0,So.zw)(e.$t("lists.lists")),1),(0,Co.Wm)(s,{to:{name:"lists-new"},class:"button-default btn new-list-button"},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("lists.new")),1)]})),_:1})]),(0,Co._)("div",Lf,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.lists.slice().reverse(),(function(e){return(0,Co.wg)(),(0,Co.j4)(a,{key:e,list:e,class:"list-item"},null,8,["list"])})),128))])])}]]),Wf=Zf,Hf={data:function(){return{listId:null}},components:{Timeline:Vc},computed:{timeline:function(){return this.$store.state.statuses.timelines.list}},watch:{$route:function(e){"lists-timeline"===e.name&&e.params.id!==this.listId&&(this.listId=e.params.id,this.$store.dispatch("stopFetchingTimeline","list"),this.$store.commit("clearTimeline",{timeline:"list"}),this.$store.dispatch("fetchList",{listId:this.listId}),this.$store.dispatch("startFetchingTimeline",{timeline:"list",listId:this.listId}))}},created:function(){this.listId=this.$route.params.id,this.$store.dispatch("fetchList",{listId:this.listId}),this.$store.dispatch("startFetchingTimeline",{timeline:"list",listId:this.listId})},unmounted:function(){this.$store.dispatch("stopFetchingTimeline","list"),this.$store.commit("clearTimeline",{timeline:"list"})}},Vf=(0,Jo.Z)(Hf,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("Timeline");return(0,Co.wg)(),(0,Co.j4)(s,{title:"list.name",timeline:e.timeline,"list-id":e.listId,"timeline-name":"list"},null,8,["timeline","list-id"])}]]);var Kf={class:"panel-default panel ListEdit"},Gf={ref:"header",class:"panel-heading list-edit-heading"},Yf={class:"title"},Jf={class:"panel-body"},Qf={class:"input-wrap"},Xf={for:"list-edit-title"},eg=["label"],tg={class:"users-list"},ng=["onClick"],og=["label"],rg={key:0,class:"loading"},ig={key:1,class:"users-list"},sg={key:0},ag=["onClick"],ug=["onClick"],cg={class:"panel-footer"},lg=(0,Co._)("span",{class:"spacer"},null,-1),dg={class:"ListsUserSearch"},pg={class:"input-wrap"},mg={class:"input-search"},hg=["placeholder"],fg={class:"input-wrap"};Ht.vI.add(Vt.wn1,Vt.A35);const gg={components:{Checkbox:wi.Z},emits:["loading","loadingDone","results"],data:function(){return{loading:!1,query:"",followingOnly:!0}},methods:{onInput:ra()((function(){this.search(this.query)}),2e3),search:function(e){var t=this;e?(this.loading=!0,this.$emit("loading"),this.userIds=[],this.$store.dispatch("search",{q:e,resolve:!0,type:"accounts",following:this.followingOnly}).then((function(e){t.$emit("results",e.accounts.map((function(e){return e.id})))})).finally((function(){t.loading=!1,t.$emit("loadingDone")}))):this.loading=!1}}},vg=(0,Jo.Z)(gg,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon"),a=(0,Co.up)("Checkbox");return(0,Co.wg)(),(0,Co.iD)("div",dg,[(0,Co._)("div",pg,[(0,Co._)("div",mg,[(0,Co.Wm)(s,{class:"search-icon fa-scale-110 fa-old-padding",icon:"search"})]),(0,Co.wy)((0,Co._)("input",{ref:"search","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.query=t}),placeholder:e.$t("lists.search"),onInput:t[1]||(t[1]=function(){return e.onInput&&e.onInput.apply(e,arguments)})},null,40,hg),[[wo.nr,e.query]])]),(0,Co._)("div",fg,[(0,Co.Wm)(a,{modelValue:e.followingOnly,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.followingOnly=t}),onChange:e.onInput},{default:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.$t("lists.following_only")),1)]})),_:1},8,["modelValue","onChange"])])])}]]);var wg=n(29187);function bg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function yg(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?bg(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):bg(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Ht.vI.add(Vt.wn1,Vt.A35);var Dg={components:{BasicUserCard:ed.Z,UserAvatar:Bl.default,ListsUserSearch:vg,TabSwitcher:fl.Z,PanelLoading:wg.Z},data:function(){return{title:"",titleDraft:"",membersUserIds:[],removedUserIds:new Set([]),searchUserIds:[],addedUserIds:new Set([]),searchLoading:!1,reallyDelete:!1}},created:function(){var e=this;this.id&&(this.$store.dispatch("fetchList",{listId:this.id}).then((function(){e.title=e.findListTitle(e.id),e.titleDraft=e.title})),this.$store.dispatch("fetchListAccounts",{listId:this.id}).then((function(){e.membersUserIds=e.findListAccounts(e.id),e.membersUserIds.forEach((function(t){e.$store.dispatch("fetchUserIfMissing",t)}))})))},computed:yg(yg({id:function(){return this.$route.params.id},membersUsers:function(){var e=this;return[].concat((0,l.Z)(this.membersUserIds),(0,l.Z)(this.addedUserIds)).map((function(t){return e.findUser(t)})).filter((function(e){return e}))},searchUsers:function(){var e=this;return this.searchUserIds.map((function(t){return e.findUser(t)})).filter((function(e){return e}))}},(0,s.rn)({currentUser:function(e){return e.users.currentUser}})),(0,s.Se)(["findUser","findListTitle","findListAccounts"])),methods:{onInput:function(){this.search(this.query)},toggleRemoveMember:function(e){this.removedUserIds.has(e.id)?(this.id&&this.addUser(e),this.removedUserIds.delete(e.id)):(this.id&&this.removeUser(e.id),this.removedUserIds.add(e.id))},toggleAddFromSearch:function(e){this.addedUserIds.has(e.id)?(this.id&&this.removeUser(e.id),this.addedUserIds.delete(e.id)):(this.id&&this.addUser(e),this.addedUserIds.add(e.id))},isRemoved:function(e){return this.removedUserIds.has(e.id)},isAdded:function(e){return this.addedUserIds.has(e.id)},addUser:function(e){this.$store.dispatch("addListAccount",{accountId:e.id,listId:this.id})},removeUser:function(e){this.$store.dispatch("removeListAccount",{accountId:e,listId:this.id})},onSearchLoading:function(e){this.searchLoading=!0},onSearchLoadingDone:function(e){this.searchLoading=!1},onSearchResults:function(e){this.searchLoading=!1,this.searchUserIds=e},updateListTitle:function(){var e=this;this.$store.dispatch("setList",{listId:this.id,title:this.titleDraft}).then((function(){e.title=e.findListTitle(e.id)}))},createList:function(){var e=this;this.$store.dispatch("createList",{title:this.titleDraft}).then((function(t){return e.$store.dispatch("setListAccounts",{listId:t.id,accountIds:(0,l.Z)(e.addedUserIds)}).then((function(){return t.id}))})).then((function(t){e.$router.push({name:"lists-timeline",params:{id:t}})})).catch((function(t){e.$store.dispatch("pushGlobalNotice",{messageKey:"lists.error",messageArgs:[t.message],level:"error"})}))},deleteList:function(){this.$store.dispatch("deleteList",{listId:this.id}),this.$router.push({name:"lists"})}}};const _g=Dg,kg=(0,Jo.Z)(_g,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("FAIcon"),a=(0,Co.up)("i18n-t"),u=(0,Co.up)("BasicUserCard"),c=(0,Co.up)("ListsUserSearch"),l=(0,Co.up)("PanelLoading"),d=(0,Co.up)("tab-switcher");return(0,Co.wg)(),(0,Co.iD)("div",Kf,[(0,Co._)("div",Gf,[(0,Co._)("button",{class:"button-unstyled go-back-button",onClick:t[0]||(t[0]=function(){var t;return e.$router.back&&(t=e.$router).back.apply(t,arguments)})},[(0,Co.Wm)(s,{size:"lg",icon:"chevron-left"})]),(0,Co._)("div",Yf,[e.id?((0,Co.wg)(),(0,Co.j4)(a,{key:0,keypath:"lists.editing_list"},{listTitle:(0,Co.w5)((function(){return[(0,Co.Uk)((0,So.zw)(e.title),1)]})),_:1})):((0,Co.wg)(),(0,Co.j4)(a,{key:1,keypath:"lists.creating_list"}))])],512),(0,Co._)("div",Jf,[(0,Co._)("div",Qf,[(0,Co._)("label",Xf,(0,So.zw)(e.$t("lists.title")),1),(0,Co.Uk)(" "+(0,So.zw)(" ")+" "),(0,Co.wy)((0,Co._)("input",{id:"list-edit-title",ref:"title","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.titleDraft=t})},null,512),[[wo.nr,e.titleDraft]]),e.id?((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:"btn button-default follow-button",onClick:t[2]||(t[2]=function(){return e.updateListTitle&&e.updateListTitle.apply(e,arguments)})},(0,So.zw)(e.$t("lists.update_title")),1)):(0,Co.kq)("",!0)]),(0,Co.Wm)(d,{class:"list-member-management","scrollable-tabs":!0},{default:(0,Co.w5)((function(){return[e.id||e.addedUserIds.size>0?((0,Co.wg)(),(0,Co.iD)("div",{key:0,label:e.$t("lists.manage_members"),class:"members-list"},[(0,Co._)("div",tg,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.membersUsers,(function(t){return(0,Co.wg)(),(0,Co.iD)("div",{key:t.id,class:"member"},[(0,Co.Wm)(u,{user:t},{default:(0,Co.w5)((function(){return[(0,Co._)("button",{class:"btn button-default follow-button",onClick:function(n){return e.toggleRemoveMember(t)}},(0,So.zw)(e.isRemoved(t)?e.$t("general.undo"):e.$t("lists.remove_from_list")),9,ng)]})),_:2},1032,["user"])])})),128))])],8,eg)):(0,Co.kq)("",!0),(0,Co._)("div",{class:"search-list",label:e.$t("lists.add_members")},[(0,Co.Wm)(c,{onResults:e.onSearchResults,onLoading:e.onSearchLoading,onLoadingDone:e.onSearchLoadingDone},null,8,["onResults","onLoading","onLoadingDone"]),e.searchLoading?((0,Co.wg)(),(0,Co.iD)("div",rg,[(0,Co.Wm)(l)])):((0,Co.wg)(),(0,Co.iD)("div",ig,[((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.searchUsers,(function(t){return(0,Co.wg)(),(0,Co.iD)("div",{key:t.id,class:"member"},[(0,Co.Wm)(u,{user:t},{default:(0,Co.w5)((function(){return[e.membersUserIds.includes(t.id)?((0,Co.wg)(),(0,Co.iD)("span",sg,(0,So.zw)(e.$t("lists.is_in_list")),1)):(0,Co.kq)("",!0),e.membersUserIds.includes(t.id)?((0,Co.wg)(),(0,Co.iD)("button",{key:2,class:"btn button-default follow-button",onClick:function(n){return e.toggleRemoveMember(t)}},(0,So.zw)(e.isRemoved(t)?e.$t("general.undo"):e.$t("lists.remove_from_list")),9,ug)):((0,Co.wg)(),(0,Co.iD)("button",{key:1,class:"btn button-default follow-button",onClick:function(n){return e.toggleAddFromSearch(t)}},(0,So.zw)(e.isAdded(t)?e.$t("general.undo"):e.$t("lists.add_to_list")),9,ag))]})),_:2},1032,["user"])])})),128))]))],8,og)]})),_:1})]),(0,Co._)("div",cg,[lg,e.id?e.reallyDelete?((0,Co.wg)(),(0,Co.iD)(Co.HY,{key:2},[(0,Co.Uk)((0,So.zw)(e.$t("lists.really_delete"))+" ",1),(0,Co._)("button",{class:"btn button-default footer-button",onClick:t[5]||(t[5]=function(){return e.deleteList&&e.deleteList.apply(e,arguments)})},(0,So.zw)(e.$t("general.yes")),1),(0,Co._)("button",{class:"btn button-default footer-button",onClick:t[6]||(t[6]=function(t){return e.reallyDelete=!1})},(0,So.zw)(e.$t("general.no")),1)],64)):((0,Co.wg)(),(0,Co.iD)("button",{key:1,class:"btn button-default footer-button",onClick:t[4]||(t[4]=function(t){return e.reallyDelete=!0})},(0,So.zw)(e.$t("lists.delete")),1)):((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:"btn button-default footer-button",onClick:t[3]||(t[3]=function(){return e.createList&&e.createList.apply(e,arguments)})},(0,So.zw)(e.$t("lists.create")),1))])])}]]);var Cg={class:"panel panel-default announcements-page"},Sg={class:"panel-heading"},jg={class:"panel-body"},Fg={key:0},Ag={class:"post-form"},Og={class:"heading"},Eg={class:"body"},zg={class:"footer"},Pg=["disabled"],Ig={key:0,class:"alert error"},xg={class:"announcement"},Tg={class:"heading"},$g={class:"body"},Bg={class:"footer"},Ug={key:0,class:"times"},Mg={key:0},Lg={key:1},Rg={key:2},qg={key:1,class:"actions"},Ng=["disabled","title"],Zg={key:2,class:"actions"},Wg={key:0,class:"alert error"},Hg={class:"announcement-editor"},Vg=["placeholder","disabled"],Kg={class:"announcement-metadata"},Gg={for:"announcement-start-time"},Yg=["type","disabled"],Jg={class:"announcement-metadata"},Qg={for:"announcement-end-time"},Xg=["type","disabled"],ev={class:"announcement-metadata"},tv={for:"announcement-all-day"};const nv={components:{Checkbox:wi.Z},props:{announcement:Object,disabled:Boolean}},ov=(0,Jo.Z)(nv,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("Checkbox");return(0,Co.wg)(),(0,Co.iD)("div",Hg,[(0,Co.wy)((0,Co._)("textarea",{ref:"textarea","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.announcement.content=t}),class:"post-textarea",rows:"1",cols:"1",placeholder:e.$t("announcements.post_placeholder"),disabled:e.disabled},null,8,Vg),[[wo.nr,e.announcement.content]]),(0,Co._)("span",Kg,[(0,Co._)("label",Gg,(0,So.zw)(e.$t("announcements.start_time_prompt")),1),(0,Co.wy)((0,Co._)("input",{id:"announcement-start-time","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.announcement.startsAt=t}),type:e.announcement.allDay?"date":"datetime-local",disabled:e.disabled},null,8,Yg),[[wo.YZ,e.announcement.startsAt]])]),(0,Co._)("span",Jg,[(0,Co._)("label",Qg,(0,So.zw)(e.$t("announcements.end_time_prompt")),1),(0,Co.wy)((0,Co._)("input",{id:"announcement-end-time","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.announcement.endsAt=t}),type:e.announcement.allDay?"date":"datetime-local",disabled:e.disabled},null,8,Xg),[[wo.YZ,e.announcement.endsAt]])]),(0,Co._)("span",ev,[(0,Co.Wm)(s,{id:"announcement-all-day",modelValue:e.announcement.allDay,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.announcement.allDay=t}),disabled:e.disabled},null,8,["modelValue","disabled"]),(0,Co._)("label",tv,(0,So.zw)(e.$t("announcements.all_day_prompt")),1)])])}]]);function rv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function iv(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?rv(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):rv(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const sv={components:{AnnouncementEditor:ov,RichContent:Rl.Z},data:function(){return{editing:!1,editedAnnouncement:{content:"",startsAt:void 0,endsAt:void 0,allDay:void 0},editError:""}},props:{announcement:Object},computed:iv(iv({},(0,s.rn)({currentUser:function(e){return e.users.currentUser}})),{},{canEditAnnouncement:function(){return this.currentUser&&this.currentUser.privileges.includes("announcements_manage_announcements")},content:function(){return this.announcement.content},isRead:function(){return this.announcement.read},publishedAt:function(){var e=this.announcement.published_at;if(e)return this.formatTimeOrDate(e,Ad.Z.internalToBrowserLocale(this.$i18n.locale))},startsAt:function(){var e=this.announcement.starts_at;if(e)return this.formatTimeOrDate(e,Ad.Z.internalToBrowserLocale(this.$i18n.locale))},endsAt:function(){var e=this.announcement.ends_at;if(e)return this.formatTimeOrDate(e,Ad.Z.internalToBrowserLocale(this.$i18n.locale))},inactive:function(){return this.announcement.inactive}}),methods:{markAsRead:function(){if(!this.isRead)return this.$store.dispatch("markAnnouncementAsRead",this.announcement.id)},deleteAnnouncement:function(){return this.$store.dispatch("deleteAnnouncement",this.announcement.id)},formatTimeOrDate:function(e,t){var n=new Date(e);return this.announcement.all_day?n.toLocaleDateString(t):n.toLocaleString(t)},enterEditMode:function(){this.editedAnnouncement.content=this.announcement.pleroma.raw_content,this.editedAnnouncement.startsAt=this.announcement.starts_at,this.editedAnnouncement.endsAt=this.announcement.ends_at,this.editedAnnouncement.allDay=this.announcement.all_day,this.editing=!0},submitEdit:function(){var e=this;this.$store.dispatch("editAnnouncement",iv({id:this.announcement.id},this.editedAnnouncement)).then((function(){e.editing=!1})).catch((function(t){e.editError=t.error}))},cancelEdit:function(){this.editing=!1},clearError:function(){this.editError=void 0}}};function av(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function uv(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?av(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):av(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const cv={components:{Announcement:(0,Jo.Z)(sv,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("rich-content"),a=(0,Co.up)("announcement-editor"),u=(0,Co.up)("FAIcon");return(0,Co.wg)(),(0,Co.iD)("div",xg,[(0,Co._)("div",Tg,[(0,Co._)("h4",null,(0,So.zw)(e.$t("announcements.title")),1)]),(0,Co._)("div",$g,[e.editing?((0,Co.wg)(),(0,Co.j4)(a,{key:1,announcement:e.editedAnnouncement},null,8,["announcement"])):((0,Co.wg)(),(0,Co.j4)(s,{key:0,html:e.content,emoji:e.announcement.emojis,"handle-links":!0},null,8,["html","emoji"]))]),(0,Co._)("div",Bg,[e.editing?(0,Co.kq)("",!0):((0,Co.wg)(),(0,Co.iD)("div",Ug,[e.publishedAt?((0,Co.wg)(),(0,Co.iD)("span",Mg,(0,So.zw)(e.$t("announcements.published_time_display",{time:e.publishedAt})),1)):(0,Co.kq)("",!0),e.startsAt?((0,Co.wg)(),(0,Co.iD)("span",Lg,(0,So.zw)(e.$t("announcements.start_time_display",{time:e.startsAt})),1)):(0,Co.kq)("",!0),e.endsAt?((0,Co.wg)(),(0,Co.iD)("span",Rg,(0,So.zw)(e.$t("announcements.end_time_display",{time:e.endsAt})),1)):(0,Co.kq)("",!0)])),e.editing?((0,Co.wg)(),(0,Co.iD)("div",Zg,[(0,Co._)("button",{class:"btn button-default",onClick:t[3]||(t[3]=function(){return e.submitEdit&&e.submitEdit.apply(e,arguments)})},(0,So.zw)(e.$t("announcements.submit_edit_action")),1),(0,Co._)("button",{class:"btn button-default",onClick:t[4]||(t[4]=function(){return e.cancelEdit&&e.cancelEdit.apply(e,arguments)})},(0,So.zw)(e.$t("announcements.cancel_edit_action")),1),e.editing&&e.editError?((0,Co.wg)(),(0,Co.iD)("div",Wg,[(0,Co.Uk)((0,So.zw)(e.$t("announcements.edit_error",{error:e.error}))+" ",1),(0,Co._)("button",{class:"button-unstyled",onClick:t[5]||(t[5]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,Co.Wm)(u,{class:"fa-scale-110 fa-old-padding",icon:"times",title:e.$t("announcements.close_error")},null,8,["title"])])])):(0,Co.kq)("",!0)])):((0,Co.wg)(),(0,Co.iD)("div",qg,[e.currentUser?((0,Co.wg)(),(0,Co.iD)("button",{key:0,class:(0,So.C_)(["btn button-default",{toggled:e.isRead}]),disabled:e.inactive,title:e.inactive?e.$t("announcements.inactive_message"):"",onClick:t[0]||(t[0]=function(){return e.markAsRead&&e.markAsRead.apply(e,arguments)})},(0,So.zw)(e.$t("announcements.mark_as_read_action")),11,Ng)):(0,Co.kq)("",!0),e.canEditAnnouncement?((0,Co.wg)(),(0,Co.iD)("button",{key:1,class:"btn button-default",onClick:t[1]||(t[1]=function(){return e.enterEditMode&&e.enterEditMode.apply(e,arguments)})},(0,So.zw)(e.$t("announcements.edit_action")),1)):(0,Co.kq)("",!0),e.canEditAnnouncement?((0,Co.wg)(),(0,Co.iD)("button",{key:2,class:"btn button-default",onClick:t[2]||(t[2]=function(){return e.deleteAnnouncement&&e.deleteAnnouncement.apply(e,arguments)})},(0,So.zw)(e.$t("announcements.delete_action")),1)):(0,Co.kq)("",!0)]))])])}]]),AnnouncementEditor:ov},data:function(){return{newAnnouncement:{content:"",startsAt:void 0,endsAt:void 0,allDay:!1},posting:!1,error:void 0}},mounted:function(){this.$store.dispatch("fetchAnnouncements")},computed:uv(uv({},(0,s.rn)({currentUser:function(e){return e.users.currentUser}})),{},{announcements:function(){return this.$store.state.announcements.announcements},canPostAnnouncement:function(){return this.currentUser&&this.currentUser.privileges.includes("announcements_manage_announcements")}}),methods:{postAnnouncement:function(){var e=this;this.posting=!0,this.$store.dispatch("postAnnouncement",this.newAnnouncement).then((function(){e.newAnnouncement.content="",e.startsAt=void 0,e.endsAt=void 0})).catch((function(t){e.error=t.error})).finally((function(){e.posting=!1}))},clearError:function(){this.error=void 0}}},lv=(0,Jo.Z)(cv,[["render",function(e,t,n,o,r,i){var s=(0,Co.up)("announcement-editor"),a=(0,Co.up)("FAIcon"),u=(0,Co.up)("announcement");return(0,Co.wg)(),(0,Co.iD)("div",Cg,[(0,Co._)("div",Sg,[(0,Co._)("span",null,(0,So.zw)(e.$t("announcements.page_header")),1)]),(0,Co._)("div",jg,[e.canPostAnnouncement?((0,Co.wg)(),(0,Co.iD)("section",Fg,[(0,Co._)("div",Ag,[(0,Co._)("div",Og,[(0,Co._)("h4",null,(0,So.zw)(e.$t("announcements.post_form_header")),1)]),(0,Co._)("div",Eg,[(0,Co.Wm)(s,{announcement:e.newAnnouncement,disabled:e.posting},null,8,["announcement","disabled"])]),(0,Co._)("div",zg,[(0,Co._)("button",{class:"btn button-default post-button",disabled:e.posting,onClick:t[0]||(t[0]=(0,wo.iM)((function(){return e.postAnnouncement&&e.postAnnouncement.apply(e,arguments)}),["prevent"]))},(0,So.zw)(e.$t("announcements.post_action")),9,Pg),e.error?((0,Co.wg)(),(0,Co.iD)("div",Ig,[(0,Co.Uk)((0,So.zw)(e.$t("announcements.post_error",{error:e.error}))+" ",1),(0,Co._)("button",{class:"button-unstyled",onClick:t[1]||(t[1]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,Co.Wm)(a,{class:"fa-scale-110 fa-old-padding",icon:"times",title:e.$t("announcements.close_error")},null,8,["title"])])])):(0,Co.kq)("",!0)])])])):(0,Co.kq)("",!0),((0,Co.wg)(!0),(0,Co.iD)(Co.HY,null,(0,Co.Ko)(e.announcements,(function(e){return(0,Co.wg)(),(0,Co.iD)("section",{key:e.id},[(0,Co.Wm)(u,{announcement:e},null,8,["announcement"])])})),128))])])}]]),dv=function(e){var t=function(t,n,o){e.state.users.currentUser?o():o(e.state.instance.redirectRootNoLogin||"/main/all")},n=[{name:"root",path:"/",redirect:function(t){return(e.state.users.currentUser?e.state.instance.redirectRootLogin:e.state.instance.redirectRootNoLogin)||"/main/all"}},{name:"public-external-timeline",path:"/main/all",component:Jc},{name:"public-timeline",path:"/main/public",component:Gc},{name:"friends",path:"/main/friends",component:Xc,beforeEnter:t},{name:"tag-timeline",path:"/tag/:tag",component:tl},{name:"bookmarks",path:"/bookmarks",component:ol},{name:"conversation",path:"/notice/:id",component:il,meta:{dontScroll:!0}},{name:"remote-user-profile-acct",path:"/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)",component:$f,beforeEnter:t},{name:"remote-user-profile",path:"/remote-users/:hostname/:username",component:$f,beforeEnter:t},{name:"external-user-profile",path:"/users/$:id",component:fp},{name:"interactions",path:"/users/:username/interactions",component:wl,beforeEnter:t},{name:"dms",path:"/users/:username/dms",component:yl,beforeEnter:t},{name:"registration",path:"/registration",component:Vm},{name:"password-reset",path:"/password-reset",component:fh,props:!0},{name:"registration-token",path:"/registration/:token",component:Vm},{name:"friend-requests",path:"/friend-requests",component:kh,beforeEnter:t},{name:"notifications",path:"/:username/notifications",component:ya.default,props:function(){return{disableTeleport:!0}},beforeEnter:t},{name:"login",path:"/login",component:Pr},{name:"shout-panel",path:"/shout-panel",component:gs,props:function(){return{floating:!1}}},{name:"oauth-callback",path:"/oauth-callback",component:Sh,props:function(e){return{code:e.query.code}}},{name:"search",path:"/search",component:Wp,props:function(e){return{query:e.query.query}}},{name:"who-to-follow",path:"/who-to-follow",component:Eh,beforeEnter:t},{name:"about",path:"/about",component:Ef},{name:"announcements",path:"/announcements",component:lv},{name:"user-profile",path:"/users/:name",component:fp},{name:"legacy-user-profile",path:"/:name",component:fp},{name:"lists",path:"/lists",component:Wf},{name:"lists-timeline",path:"/lists/:id",component:Vf},{name:"lists-edit",path:"/lists/:id/edit",component:kg},{name:"lists-new",path:"/lists/new",component:kg},{name:"edit-navigation",path:"/nav-edit",component:_i,props:function(){return{forceExpand:!0,forceEditMode:!0}},beforeEnter:t}];return e.state.instance.pleromaChatMessagesAvailable&&(n=n.concat([{name:"chat",path:"/users/:username/chats/:recipient_id",component:Ld,meta:{dontScroll:!1},beforeEnter:t},{name:"chats",path:"/users/:username/chats",component:cd,meta:{dontScroll:!1},beforeEnter:t}])),n};var pv,mv,hv=n(58509),fv=new Set([]),gv=function(e){var t=window.innerWidth-document.documentElement.clientWidth;hv.Qp(e,{reserveScrollBarGap:!0}),fv.add(e),setTimeout((function(){if(fv.size<=1){if(void 0===pv){var e=document.getElementById("nav");pv=window.getComputedStyle(e).getPropertyValue("padding-right"),e.style.paddingRight=pv?"calc(".concat(pv," + ").concat(t,"px)"):"".concat(t,"px")}if(void 0===mv){var n=document.getElementById("app_bg_wrapper");mv=window.getComputedStyle(n).getPropertyValue("right"),n.style.right=mv?"calc(".concat(mv," + ").concat(t,"px)"):"".concat(t,"px")}document.body.classList.add("scroll-locked")}}))},vv=function(e){fv.delete(e),setTimeout((function(){0===fv.size&&(void 0!==pv&&(document.getElementById("nav").style.paddingRight=pv,pv=void 0),void 0!==mv&&(document.getElementById("app_bg_wrapper").style.right=mv,mv=void 0),document.body.classList.remove("scroll-locked"))})),hv.tG(e)},wv={mounted:function(e,t){t.value&&gv(e)},updated:function(e,t){t.oldValue!==t.value&&(t.value?gv(e):vv(e))},unmounted:function(e){vv(e)}};const bv=function(e){e.directive("body-scroll-lock",wv)};var yv=n(49753);function Dv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function _v(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Dv(Object(n),!0).forEach((function(t){(0,d.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Dv(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var kv=null,Cv=function(e){var t=atob(e),n=Uint8Array.from((0,l.Z)(t).map((function(e){return e.charCodeAt(0)})));return(new TextDecoder).decode(n)},Sv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((n=document.getElementById("initial-results")?(kv||(kv=JSON.parse(document.getElementById("initial-results").textContent)),kv):null)&&n[t]){e.next=3;break}return e.abrupt("return",window.fetch(t));case 3:return o=Cv(n[t]),r=JSON.parse(o),e.abrupt("return",{ok:!0,json:function(){return r},text:function(){return r}});case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),jv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Sv("/api/v1/instance");case 4:if(!(o=e.sent).ok){e.next=18;break}return e.next=8,o.json();case 8:r=e.sent,s=r.max_toot_chars,a=r.pleroma.vapid_public_key,n.dispatch("setInstanceOption",{name:"textlimit",value:s}),n.dispatch("setInstanceOption",{name:"accountApprovalRequired",value:r.approval_required}),n.dispatch("setInstanceOption",{name:"birthdayRequired",value:!!r.pleroma.metadata.birthday_required}),n.dispatch("setInstanceOption",{name:"birthdayMinAge",value:r.pleroma.metadata.birthday_min_age||0}),a&&n.dispatch("setInstanceOption",{name:"vapidPublicKey",value:a}),e.next=19;break;case 18:throw o;case 19:e.next=25;break;case 21:e.prev=21,e.t0=e.catch(1),console.error("Could not load instance config, potentially fatal"),console.error(e.t0);case 25:case"end":return e.stop()}}),e,null,[[1,21]])})));return function(t){return e.apply(this,arguments)}}(),Fv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.store,e.prev=1,e.next=4,window.fetch("/api/pleroma/frontend_configurations");case 4:if(!(n=e.sent).ok){e.next=12;break}return e.next=8,n.json();case 8:return o=e.sent,e.abrupt("return",o.pleroma_fe);case 12:throw n;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.error("Could not load backend-provided frontend config, potentially fatal"),console.error(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])})));return function(t){return e.apply(this,arguments)}}(),Av=function(){var e=(0,o.Z)(i().mark((function e(){var t;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,window.fetch("/static/config.json");case 3:if(!(t=e.sent).ok){e.next=8;break}return e.abrupt("return",t.json());case 8:throw t;case 9:e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(0),console.warn("Failed to load static/config.json, continuing without it."),console.warn(e.t0),e.abrupt("return",{});case 16:case"end":return e.stop()}}),e,null,[[0,11]])})));return function(){return e.apply(this,arguments)}}(),Ov=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a,u,c;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.apiConfig,o=t.staticConfig,r=t.store,s=window.___pleromafe_dev_overrides||{},a=window.___pleromafe_mode.NODE_ENV,u={},s.staticConfigPreference&&"development"===a?(console.warn("OVERRIDING API CONFIG WITH STATIC CONFIG"),u=Object.assign({},n,o)):u=Object.assign({},o,n),(c=function(e){r.dispatch("setInstanceOption",{name:e,value:u[e]})})("nsfwCensorImage"),c("background"),c("hidePostStats"),c("hideBotIndication"),c("hideUserStats"),c("hideFilteredStatuses"),c("logo"),r.dispatch("setInstanceOption",{name:"logoMask",value:void 0===u.logoMask||u.logoMask}),r.dispatch("setInstanceOption",{name:"logoMargin",value:void 0===u.logoMargin?0:u.logoMargin}),c("logoLeft"),r.commit("authFlow/setInitialStrategy",u.loginMethod),c("redirectRootNoLogin"),c("redirectRootLogin"),c("showInstanceSpecificPanel"),c("minimalScopesMode"),c("hideMutedPosts"),c("collapseMessageWithSubject"),c("scopeCopy"),c("subjectLineBehavior"),c("postContentType"),c("alwaysShowSubjectInput"),c("showFeaturesPanel"),c("hideSitename"),c("sidebarRight"),e.abrupt("return",r.dispatch("setTheme",u.theme));case 31:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Ev=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/terms-of-service.html");case 4:if(!(o=e.sent).ok){e.next=12;break}return e.next=8,o.text();case 8:r=e.sent,n.dispatch("setInstanceOption",{name:"tos",value:r}),e.next=13;break;case 12:throw o;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load TOS"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])})));return function(t){return e.apply(this,arguments)}}(),zv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Sv("/instance/panel.html");case 4:if(!(o=e.sent).ok){e.next=12;break}return e.next=8,o.text();case 8:r=e.sent,n.dispatch("setInstanceOption",{name:"instanceSpecificPanelContent",value:r}),e.next=13;break;case 12:throw o;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(1),console.warn("Can't load instance panel"),console.warn(e.t0);case 19:case"end":return e.stop()}}),e,null,[[1,15]])})));return function(t){return e.apply(this,arguments)}}(),Pv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,r,s,a;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,window.fetch("/static/stickers.json");case 4:if(!(r=e.sent).ok){e.next=15;break}return e.next=8,r.json();case 8:return s=e.sent,e.next=11,Promise.all(Object.entries(s).map(function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=(0,c.Z)(t,2),o=n[0],r=n[1],e.next=3,window.fetch(r+"pack.json");case 3:if(s=e.sent,a={},!s.ok){e.next=9;break}return e.next=8,s.json();case 8:a=e.sent;case 9:return e.abrupt("return",{pack:o,path:r,meta:a});case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 11:a=e.sent.sort((function(e,t){return e.meta.title.localeCompare(t.meta.title)})),n.dispatch("setInstanceOption",{name:"stickers",value:a}),e.next=16;break;case 15:throw r;case 16:e.next=22;break;case 18:e.prev=18,e.t0=e.catch(1),console.warn("Can't load stickers"),console.warn(e.t0);case 22:case"end":return e.stop()}}),e,null,[[1,18]])})));return function(t){return e.apply(this,arguments)}}(),Iv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,o=n.state,r=n.commit,s=o.oauth,a=o.instance,e.abrupt("return",Le(_v(_v({},s),{},{instance:a.server,commit:r})).then((function(e){return Re(_v(_v({},e),{},{instance:a.server}))})).then((function(e){r("setAppToken",e.access_token),r("setBackendInteractor",xe(n.getters.getToken()))})));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),xv=function(e){var t=e.store,n=e.accounts.map((function(e){return e.split("/").pop()}));t.dispatch("setInstanceOption",{name:"staffAccounts",value:n})},Tv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a,u,c,l,d,p,m,h,f;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.prev=1,e.next=4,Sv("/nodeinfo/2.0.json");case 4:if(!(o=e.sent).ok){e.next=52;break}return e.next=8,o.json();case 8:r=e.sent,s=r.metadata,a=s.features,n.dispatch("setInstanceOption",{name:"name",value:s.nodeName}),n.dispatch("setInstanceOption",{name:"registrationOpen",value:r.openRegistrations}),n.dispatch("setInstanceOption",{name:"mediaProxyAvailable",value:a.includes("media_proxy")}),n.dispatch("setInstanceOption",{name:"safeDM",value:a.includes("safe_dm_mentions")}),n.dispatch("setInstanceOption",{name:"shoutAvailable",value:a.includes("chat")}),n.dispatch("setInstanceOption",{name:"pleromaChatMessagesAvailable",value:a.includes("pleroma_chat_messages")}),n.dispatch("setInstanceOption",{name:"pleromaCustomEmojiReactionsAvailable",value:a.includes("pleroma_custom_emoji_reactions")}),n.dispatch("setInstanceOption",{name:"gopherAvailable",value:a.includes("gopher")}),n.dispatch("setInstanceOption",{name:"pollsAvailable",value:a.includes("polls")}),n.dispatch("setInstanceOption",{name:"editingAvailable",value:a.includes("editing")}),n.dispatch("setInstanceOption",{name:"pollLimits",value:s.pollLimits}),n.dispatch("setInstanceOption",{name:"mailerEnabled",value:s.mailerEnabled}),n.dispatch("setInstanceOption",{name:"quotingAvailable",value:a.includes("quote_posting")}),u=s.uploadLimits,n.dispatch("setInstanceOption",{name:"uploadlimit",value:parseInt(u.general)}),n.dispatch("setInstanceOption",{name:"avatarlimit",value:parseInt(u.avatar)}),n.dispatch("setInstanceOption",{name:"backgroundlimit",value:parseInt(u.background)}),n.dispatch("setInstanceOption",{name:"bannerlimit",value:parseInt(u.banner)}),n.dispatch("setInstanceOption",{name:"fieldsLimits",value:s.fieldsLimits}),n.dispatch("setInstanceOption",{name:"restrictedNicknames",value:s.restrictedNicknames}),n.dispatch("setInstanceOption",{name:"postFormats",value:s.postFormats}),c=s.suggestions,n.dispatch("setInstanceOption",{name:"suggestionsEnabled",value:c.enabled}),n.dispatch("setInstanceOption",{name:"suggestionsWeb",value:c.web}),l=r.software,n.dispatch("setInstanceOption",{name:"backendVersion",value:l.version}),n.dispatch("setInstanceOption",{name:"pleromaBackend",value:"pleroma"===l.name}),d=s.private,n.dispatch("setInstanceOption",{name:"private",value:d}),p=window.___pleromafe_commit_hash,n.dispatch("setInstanceOption",{name:"frontendVersion",value:p}),m=s.federation,n.dispatch("setInstanceOption",{name:"tagPolicyAvailable",value:void 0!==m.mrf_policies&&s.federation.mrf_policies.includes("TagPolicy")}),n.dispatch("setInstanceOption",{name:"federationPolicy",value:m}),n.dispatch("setInstanceOption",{name:"federating",value:void 0===m.enabled||m.enabled}),h=s.accountActivationRequired,n.dispatch("setInstanceOption",{name:"accountActivationRequired",value:h}),f=s.staffAccounts,xv({store:n,accounts:f}),e.next=53;break;case 52:throw o;case 53:e.next=59;break;case 55:e.prev=55,e.t0=e.catch(1),console.warn("Could not load nodeinfo"),console.warn(e.t0);case 59:case"end":return e.stop()}}),e,null,[[1,55]])})));return function(t){return e.apply(this,arguments)}}(),$v=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.next=3,Promise.all([Fv({store:n}),Av()]);case 3:return o=e.sent,r=o[0],s=o[1],e.next=8,Ov({store:n,apiConfig:r,staticConfig:s}).then(Iv({store:n}));case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),Bv=function(){var e=(0,o.Z)(i().mark((function e(t){var n;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,e.abrupt("return",new Promise(function(){var e=(0,o.Z)(i().mark((function e(t,o){return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n.getters.getUserToken()){e.next=9;break}return e.prev=1,e.next=4,n.dispatch("loginUser",n.getters.getUserToken());case 4:e.next=9;break;case 6:e.prev=6,e.t0=e.catch(1),console.error(e.t0);case 9:t();case 10:case"end":return e.stop()}}),e,null,[[1,6]])})));return function(t,n){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();const Uv=function(){var e=(0,o.Z)(i().mark((function e(t){var n,o,r,s,a,u,c,l,d,h;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.store,o=t.i18n,n.dispatch("setLayoutWidth",Te()),n.dispatch("setLayoutHeight",$e()),yv.Z.initFaviconService(),r=window.___pleromafe_dev_overrides||{},s=void 0!==r.target?r.target:window.location.origin,n.dispatch("setInstanceOption",{name:"server",value:s}),e.next=9,$v({store:n});case 9:return a=n.state.config,u=a.customTheme,c=a.customThemeSource,l=n.state.instance.theme,c||u?c&&c.themeEngineVersion===m.we?(0,p._v)(c):(0,p._v)(u):l||console.error("Failed to load any theme!"),(0,p.mg)(n.state.config),e.next=16,Promise.all([Bv({store:n}),zv({store:n}),Tv({store:n}),jv({store:n})]);case 16:return n.dispatch("fetchMutes"),n.dispatch("startFetchingAnnouncements"),Ev({store:n}),Pv({store:n}),d=(0,bo.p7)({history:(0,bo.PO)(),routes:dv(n),scrollBehavior:function(e,t,n){return!e.matched.some((function(e){return e.meta.dontScroll}))&&(n||{left:0,top:0})}}),(h=(0,wo.ri)(Au)).use(d),h.use(n),h.use(o),h.use(Do()),h.use(bv),h.use(_o.ZP),h.component("FAIcon",ko.GN),h.component("FALayers",ko.NH),h.config.unwrapInjectedRef=!0,h.mount("#app"),e.abrupt("return",h);case 33:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();var Mv=(window.navigator.language||"en").split("-")[0],Lv=(0,so.o)({locale:"en",fallbackLocale:"en",messages:vo.Z.default});vo.Z.setLanguage(Lv.global,Mv);var Rv={paths:["serverSideStorage.cache","config","users.lastLoginName","oauth"]};(0,o.Z)(i().mark((function e(){var t,n,o,r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,n=[go],e.prev=2,e.next=5,fo(Rv);case 5:o=e.sent,n.push(o),e.next=13;break;case 9:e.prev=9,e.t0=e.catch(2),console.error(e.t0),t=!0;case 13:r=(0,s.MT)({modules:{i18n:{getters:{i18n:function(){return Lv.global}}},interface:u,instance:k,users:st,statuses:ae,lists:le,api:vt,config:f.ZP,profileConfig:Ft,serverSideStorage:ln,adminSettings:wn,shout:bn,oauth:yn,authFlow:jn,mediaViewer:En,oauthTokens:zn,reports:Tn,polls:$n,postStatus:Bn,editStatus:Un,statusHistory:Mn,chats:ro,announcements:io},plugins:n,strict:!1}),t&&r.dispatch("pushGlobalNotice",{messageKey:"errors.storage_unavailable",level:"error"}),Uv({store:r,i18n:Lv});case 16:case"end":return e.stop()}}),e,null,[[2,9]])})))(),window.___pleromafe_mode={NODE_ENV:"production"},window.___pleromafe_commit_hash="6c78b59c\n",window.___pleromafe_dev_overrides=void 0},85565:(e,t,n)=>{"use strict";n.d(t,{Oi:()=>f,W2:()=>h,ZP:()=>g});var o=n(4942),r=n(29439),i=n(36968),s=n.n(i),a=n(6258),u=n(77394),c=n(72617),l=n(39776);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var h={expertLevel:0,colors:{},theme:void 0,customTheme:void 0,customThemeSource:void 0,hideISP:!1,hideInstanceWallpaper:!1,hideShoutbox:!1,hideMutedPosts:void 0,hideMutedThreads:void 0,hideWordFilteredPosts:void 0,muteBotStatuses:void 0,collapseMessageWithSubject:void 0,padEmoji:!0,hideAttachments:!1,hideAttachmentsInConv:!1,maxThumbnails:16,hideNsfw:!0,preloadImage:!0,loopVideo:!0,loopVideoSilentOnly:!0,streaming:!1,emojiReactionsOnTimeline:!0,alwaysShowNewPostButton:!1,autohideFloatingPostButton:!1,pauseOnUnfocused:!0,stopGifs:!0,replyVisibility:"all",thirdColumnMode:"notifications",notificationVisibility:{follows:!0,mentions:!0,likes:!0,repeats:!0,moves:!0,emojiReactions:!0,followRequest:!0,reports:!0,chatMention:!0,polls:!0},webPushNotifications:!1,muteWords:[],highlight:{},interfaceLanguage:(window.navigator.language||"en").split("-")[0],hideScopeNotice:!1,useStreamingApi:!1,sidebarRight:void 0,scopeCopy:void 0,subjectLineBehavior:void 0,alwaysShowSubjectInput:void 0,postContentType:void 0,minimalScopesMode:void 0,hideFilteredStatuses:void 0,modalOnRepeat:void 0,modalOnUnfollow:void 0,modalOnBlock:void 0,modalOnMute:void 0,modalOnDelete:void 0,modalOnLogout:void 0,modalOnApproveFollow:void 0,modalOnDenyFollow:void 0,modalOnRemoveUserFromFollowers:void 0,playVideosInModal:!1,useOneClickNsfw:!1,useContainFit:!0,disableStickyHeaders:!1,showScrollbars:!1,userPopoverAvatarAction:"open",userPopoverOverlay:!1,sidebarColumnWidth:"25rem",contentColumnWidth:"45rem",notifsColumnWidth:"25rem",emojiReactionsScale:1,navbarColumnStretch:!1,greentext:void 0,useAtIcon:void 0,mentionLinkDisplay:void 0,mentionLinkShowTooltip:void 0,mentionLinkShowAvatar:void 0,mentionLinkFadeDomain:void 0,mentionLinkShowYous:void 0,mentionLinkBoldenYou:void 0,hidePostStats:void 0,hideBotIndication:void 0,hideUserStats:void 0,virtualScrolling:void 0,sensitiveByDefault:void 0,conversationDisplay:void 0,conversationTreeAdvanced:void 0,conversationOtherRepliesButton:void 0,conversationTreeFadeAncestors:void 0,maxDepthInThread:void 0,autocompleteSelect:void 0},f=Object.entries(h).filter((function(e){var t=(0,r.Z)(e,2);return t[0],void 0===t[1]})).map((function(e){var t=(0,r.Z)(e,2),n=t[0];return t[1],n}));const g={state:m({},h),getters:{defaultConfig:function(e,t,n,o){var r=n.instance;return m(m({},h),Object.fromEntries(f.map((function(e){return[e,r[e]]}))))},mergedConfig:function(e,t,n,o){return m(m({},o.defaultConfig),Object.fromEntries(Object.entries(e).filter((function(e){var t=(0,r.Z)(e,2);return t[0],void 0!==t[1]}))))}},mutations:{setOption:function(e,t){var n=t.name,o=t.value;s()(e,n,o)},setHighlight:function(e,t){var n=t.user,o=t.color,r=t.type,i=this.state.config.highlight[n];o||r?e.highlight[n]={color:o||i.color,type:r||i.type}:delete e.highlight[n]}},actions:{loadSettings:function(e,t){var n,o=e.dispatch,r=new Set(Object.keys(h)),i=new Set(Object.keys(t)),s=new Set,a=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}(i);try{for(a.s();!(n=a.n()).done;){var u=n.value;r.has(u)&&s.add(u)}}catch(e){a.e(e)}finally{a.f()}s.forEach((function(e){return o("setOption",{name:e,value:t[e]})}))},setHighlight:function(e,t){var n=e.commit;e.dispatch,n("setHighlight",{user:t.user,color:t.color,type:t.type})},setOption:function(e,t){var n=e.commit,o=e.dispatch,r=e.state,i=t.name,s=t.value;if(new Set(["useStreamingApi"]).has(i))"useStreamingApi"===i&&o(s?"enableMastoSockets":"disableMastoSockets").then((function(){n("setOption",{name:"useStreamingApi",value:s})})).catch((function(e){console.error("Failed starting MastoAPI Streaming socket",e),o("disableMastoSockets"),o("setOption",{name:"useStreamingApi",value:!1})}));else switch(n("setOption",{name:i,value:s}),i){case"theme":(0,u.bY)(s);break;case"sidebarColumnWidth":case"contentColumnWidth":case"notifsColumnWidth":case"emojiReactionsScale":(0,u.mg)(r);break;case"customTheme":case"customThemeSource":(0,u._v)(s);break;case"interfaceLanguage":c.Z.setLanguage(this.getters.i18n,s),o("loadUnicodeEmojiData",s),a.Z.set("userLanguage",l.Z.internalToBackendLocaleMulti(s));break;case"thirdColumnMode":o("setLayoutWidth",void 0)}}}}},77776:(e,t,n)=>{"use strict";n.d(t,{ro:()=>$e,_z:()=>Ue,ZP:()=>Me,pR:()=>Ie});var o=n(15861),r=n(44925),i=n(29439),s=n(4942),a=n(27361),u=n.n(a),c=n(10928),l=n.n(c),d=n(57043),p=n.n(d),m=n(35161),h=n.n(m),f=n(66073),g=n.n(f),v=n(64687),w=n.n(v),b=n(27742),y=n(71002),D=n(43144),_=n(15671),k=n(97326),C=n(60136),S=n(82963),j=n(61120),F=n(72407),A=n(93433),O=n(48403),E=n.n(O);function z(e,t,n,o){this.name="StatusCodeError",this.statusCode=e,this.message=e+" - "+(JSON&&JSON.stringify?JSON.stringify(t):t),this.error=t,this.options=n,this.response=o,Error.captureStackTrace&&Error.captureStackTrace(this)}z.prototype=Object.create(Error.prototype),z.prototype.constructor=z;var P=function(e){(0,C.Z)(r,e);var t,n,o=(t=r,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,o=(0,j.Z)(t);if(n){var r=(0,j.Z)(this).constructor;e=Reflect.construct(o,arguments,r)}else e=o.apply(this,arguments);return(0,S.Z)(this,e)});function r(e){var t,n;(0,_.Z)(this,r),t=o.call(this),Error.captureStackTrace&&Error.captureStackTrace((0,k.Z)(t));try{if("string"==typeof e&&(e=JSON.parse(e)).hasOwnProperty("error")&&(e=JSON.parse(e.error)),"object"===(0,y.Z)(e)){var s=JSON.parse(e.error);s.ap_id&&(s.username=s.ap_id,delete s.ap_id),t.message=(n=s,Object.entries(n).reduce((function(e,t){var n=(0,i.Z)(t,2),o=n[0],r=n[1].reduce((function(e,t){return e+[E()(o.replace(/_/g," ")),t].join(" ")+". "}),"");return[].concat((0,A.Z)(e),[r])}),[]))}else t.message=e}catch(n){t.message=e}return t}return(0,D.Z)(r)}((0,F.Z)(Error)),I=["nickname"],x=["id","credentials"];function T(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function $(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?T(Object(n),!0).forEach((function(t){(0,s.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):T(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var B="/api/pleroma/aliases",U="/api/pleroma/admin/users/tag",M=function(e,t){return"/api/pleroma/admin/users/".concat(e,"/permission_group/").concat(t)},L=function(e){return"/api/v1/notifications/".concat(e,"/dismiss")},R=function(e){return"/api/v1/statuses/".concat(e,"/favourite")},q=function(e){return"/api/v1/statuses/".concat(e,"/unfavourite")},N=function(e){return"/api/v1/statuses/".concat(e,"/reblog")},Z=function(e){return"/api/v1/statuses/".concat(e,"/unreblog")},W=function(e){return"/api/v1/statuses/".concat(e)},H="/api/v1/timelines/public",V=function(e){return"/api/v1/statuses/".concat(e)},K=function(e){return"/api/v1/accounts/".concat(e,"/statuses")},G=function(e){return"/api/v1/lists/".concat(e)},Y=function(e){return"/api/v1/timelines/list/".concat(e)},J=function(e){return"/api/v1/lists/".concat(e,"/accounts")},Q=function(e){return"/api/v1/timelines/tag/".concat(e)},X=function(e){return"/api/v1/accounts/".concat(e,"/mute")},ee=function(e){return"/api/v1/accounts/".concat(e,"/unmute")},te=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/subscribe")},ne=function(e){return"/api/v1/pleroma/accounts/".concat(e,"/unsubscribe")},oe=function(e){return"/api/v1/accounts/".concat(e,"/note")},re=function(e){return"/api/v1/statuses/".concat(e,"/bookmark")},ie=function(e){return"/api/v1/statuses/".concat(e,"/unbookmark")},se="/api/v1/media",ae=function(e){return"/api/v1/statuses/".concat(e,"/favourited_by")},ue=function(e){return"/api/v1/statuses/".concat(e,"/reblogged_by")},ce="/api/v1/accounts/update_credentials",le=function(e){return"/api/v1/statuses/".concat(e,"/pin")},de=function(e){return"/api/v1/statuses/".concat(e,"/unpin")},pe=function(e){return"/api/v1/statuses/".concat(e,"/mute")},me=function(e){return"/api/v1/statuses/".concat(e,"/unmute")},he="/api/v1/domain_blocks",fe=function(e){return"/api/v1/announcements/".concat(e,"/dismiss")},ge=function(e){return"/api/v1/pleroma/statuses/".concat(e,"/reactions")},ve=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},we=function(e,t){return"/api/v1/pleroma/statuses/".concat(e,"/reactions/").concat(t)},be=function(e){return"/api/v1/pleroma/chats/".concat(e,"/messages")},ye=function(e){return"/api/v1/pleroma/chats/".concat(e,"/read")},De=function(e,t){return"/api/v1/pleroma/chats/".concat(e,"/messages/").concat(t)},_e="/api/v1/pleroma/backups",ke=function(e){return"/api/v1/pleroma/admin/announcements/".concat(e)},Ce=function(e){return"/api/v1/pleroma/admin/announcements/".concat(e)},Se="/api/pleroma/admin/config",je=window.fetch,Fe=function(e,t){var n=""+e;return(t=t||{}).credentials="same-origin",je(n,t)},Ae=function(e){var t=e.method,n=e.url,o=e.params,r=e.payload,s=e.credentials,a=e.headers,u={method:t,headers:$({Accept:"application/json","Content-Type":"application/json"},void 0===a?{}:a)};return o&&(n+="?"+Object.entries(o).map((function(e){var t=(0,i.Z)(e,2),n=t[0],o=t[1];return encodeURIComponent(n)+"="+encodeURIComponent(o)})).join("&")),r&&(u.body=JSON.stringify(r)),s&&(u.headers=$($({},u.headers),Oe(s))),Fe(n,u).then((function(e){return new Promise((function(t,o){return e.json().then((function(r){return e.ok?t(r):o(new z(e.status,r,{url:n,options:u},e))})).catch((function(t){return o(new z(e.status,t,{url:n,options:u},e))}))}))}))},Oe=function(e){return e?{Authorization:"Bearer ".concat(e)}:{}},Ee=function(e){var t=e.id,n=e.credentials,o="".concat("/api/v1/accounts","/").concat(t);return Ae({url:o,credentials:n}).then((function(e){return(0,b.nL)(e)}))},ze=function(e){var t=e.id,n=e.maxId,o=e.sinceId,r=e.limit,i=void 0===r?20:r,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/following")}(t),u=[n&&"max_id=".concat(n),o&&"since_id=".concat(o),i&&"limit=".concat(i),"with_relationships=true"].filter((function(e){return e})).join("&");return Fe(a+=u?"?"+u:"",{headers:Oe(s)}).then((function(e){return e.json()})).then((function(e){return e.map(b.nL)}))},Pe=function(e){var t=e.content,n=e.startsAt,o=e.endsAt,r=e.allDay,i={content:t};return void 0!==n&&(i.starts_at=n?new Date(n).toISOString():null),void 0!==o&&(i.ends_at=o?new Date(o).toISOString():null),void 0!==r&&(i.all_day=r),i},Ie=function(e){var t=e.credentials,n=e.stream,o=e.args,r=void 0===o?{}:o;return Object.entries($($({},t?{access_token:t}:{}),{},{stream:n},r)).reduce((function(e,t){var n=(0,i.Z)(t,2),o=n[0],r=n[1];return e+"".concat(o,"=").concat(r,"&")}),"/api/v1/streaming?")},xe=new Set(["update","notification","delete","filters_changed","status.update"]),Te=new Set(["pleroma:chat_update"]),$e=function(e){var t=e.url,n=e.preprocessor,o=void 0===n?Be:n,r=e.id,i=void 0===r?"Unknown":r,s=new EventTarget,a=new WebSocket(t);if(!a)throw new Error("Failed to create socket ".concat(i));var u=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(e){return e};e.addEventListener(t,(function(e){s.dispatchEvent(new CustomEvent(t,{detail:n(e)}))}))};return a.addEventListener("open",(function(e){console.debug("[WS][".concat(i,"] Socket connected"),e)})),a.addEventListener("error",(function(e){console.debug("[WS][".concat(i,"] Socket errored"),e)})),a.addEventListener("close",(function(e){console.debug("[WS][".concat(i,"] Socket disconnected with code ").concat(e.code),e)})),u(a,"open"),u(a,"close"),u(a,"message",o),u(a,"error"),s.close=function(){a.close(1e3,"Shutting down socket")},s.getState=function(){return a.readyState},s},Be=function(e){var t=e.data;if(t){var n=JSON.parse(t),o=n.event,r=n.payload;if(!xe.has(o)&&!Te.has(o))return console.warn("Unknown event",e),null;if("delete"===o)return{event:o,id:r};var i=r?JSON.parse(r):null;return"update"===o||"status.update"===o?{event:o,status:(0,b.Wn)(i)}:"notification"===o?{event:o,notification:(0,b.eM)(i)}:"pleroma:chat_update"===o?{event:o,chatUpdate:(0,b._J)(i)}:void 0}},Ue=Object.freeze({JOINED:1,CLOSED:2,ERROR:3,DISABLED:4,STARTING:5,STARTING_INITIAL:6});const Me={verifyCredentials:function(e){return Fe("/api/v1/accounts/verify_credentials",{headers:Oe(e)}).then((function(e){return e.ok?e.json():{error:e}})).then((function(e){return e.error?e:(0,b.nL)(e)}))},fetchTimeline:function(e){var t=e.timeline,n=e.credentials,r=e.since,i=void 0!==r&&r,s=e.until,a=void 0!==s&&s,u=e.userId,c=void 0!==u&&u,l=e.listId,d=void 0!==l&&l,p=e.tag,m=void 0!==p&&p,f=e.withMuted,g=void 0!==f&&f,v=e.replyVisibility,y=void 0===v?"all":v,D=e.includeTypes,_=void 0===D?[]:D,k="notifications"===t,C=[],S={public:H,friends:"/api/v1/timelines/home",dms:"/api/v1/timelines/direct",notifications:"/api/v1/notifications",publicAndExternal:H,user:K,media:K,list:Y,favorites:"/api/v1/favourites",tag:Q,bookmarks:"/api/v1/bookmarks"}[t];"user"!==t&&"media"!==t||(S=S(c)),"list"===t&&(S=S(d)),i&&C.push(["since_id",i]),a&&C.push(["max_id",a]),m&&(S=S(m)),"media"===t&&C.push(["only_media",1]),"public"===t&&C.push(["local",!0]),"public"!==t&&"publicAndExternal"!==t||C.push(["only_media",!1]),"favorites"!==t&&"bookmarks"!==t&&C.push(["with_muted",g]),"all"!==y&&C.push(["reply_visibility",y]),_.length>0&&_.forEach((function(e){C.push(["include_types[]",e])})),C.push(["limit",20]);var j=h()(C,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");return S+="?".concat(j),Fe(S,{headers:Oe(n)}).then(function(){var e=(0,o.Z)(w().mark((function e(n){var o,r,i;return w().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.ok,e.next=3,n.json();case 3:if(r=e.sent,!o||r.errors){e.next=9;break}return i=(0,b.Nw)(n.headers.get("Link"),{flakeId:"bookmarks"!==t&&"notifications"!==t}),e.abrupt("return",{data:r.map(k?b.eM:b.Wn),pagination:i});case 9:return r.errors||(r.errors=[]),r.status=n.status,r.statusText=n.statusText,e.abrupt("return",r);case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())},fetchPinnedStatuses:function(e){var t=e.id,n=e.credentials,o=K(t)+"?pinned=true";return Ae({url:o,credentials:n}).then((function(e){return e.map(b.Wn)}))},fetchConversation:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/statuses/".concat(e,"/context")}(t);return Fe(o,{headers:Oe(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){var t=e.ancestors,n=e.descendants;return{ancestors:t.map(b.Wn),descendants:n.map(b.Wn)}}))},fetchStatus:function(e){var t=e.id,n=e.credentials,o=V(t);return Fe(o,{headers:Oe(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching timeline",e)})).then((function(e){return e.json()})).then((function(e){return(0,b.Wn)(e)}))},fetchStatusSource:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/statuses/".concat(e,"/source")}(t);return Fe(o,{headers:Oe(n)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching source",e)})).then((function(e){return e.json()})).then((function(e){return(0,b.P7)(e)}))},fetchStatusHistory:function(e){var t,n=e.status,o=e.credentials,r=(t=n.id,"/api/v1/statuses/".concat(t,"/history"));return Ae({url:r,credentials:o}).then((function(e){return e.reverse(),e.map((function(e){return e.originalStatus=n,(0,b.Wn)(e)}))}))},fetchFriends:ze,exportFriends:function(e){var t=e.id,n=e.credentials;return new Promise(function(){var e=(0,o.Z)(w().mark((function e(o,r){var i,s,a,u;return w().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,i=[],s=!0;case 3:if(!s){e.next=12;break}return a=i.length>0?l()(i).id:void 0,e.next=7,ze({id:t,maxId:a,credentials:n});case 7:u=e.sent,i=p()(i,u),0===u.length&&(s=!1),e.next=3;break;case 12:o(i),e.next=18;break;case 15:e.prev=15,e.t0=e.catch(0),r(e.t0);case 18:case"end":return e.stop()}}),e,null,[[0,15]])})));return function(t,n){return e.apply(this,arguments)}}())},fetchFollowers:function(e){var t=e.id,n=e.maxId,o=e.sinceId,r=e.limit,i=void 0===r?20:r,s=e.credentials,a=function(e){return"/api/v1/accounts/".concat(e,"/followers")}(t),u=[n&&"max_id=".concat(n),o&&"since_id=".concat(o),i&&"limit=".concat(i),"with_relationships=true"].filter((function(e){return e})).join("&");return Fe(a+=u?"?"+u:"",{headers:Oe(s)}).then((function(e){return e.json()})).then((function(e){return e.map(b.nL)}))},followUser:function(e){var t=e.id,n=e.credentials,o=(0,r.Z)(e,x),i=function(e){return"/api/v1/accounts/".concat(e,"/follow")}(t),s={};return void 0!==o.reblogs&&(s.reblogs=o.reblogs),Fe(i,{body:JSON.stringify(s),headers:$($({},Oe(n)),{},{"Content-Type":"application/json"}),method:"POST"}).then((function(e){return e.json()}))},unfollowUser:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/accounts/".concat(e,"/unfollow")}(t);return Fe(o,{headers:Oe(n),method:"POST"}).then((function(e){return e.json()}))},pinOwnStatus:function(e){var t=e.id,n=e.credentials;return Ae({url:le(t),credentials:n,method:"POST"}).then((function(e){return(0,b.Wn)(e)}))},unpinOwnStatus:function(e){var t=e.id,n=e.credentials;return Ae({url:de(t),credentials:n,method:"POST"}).then((function(e){return(0,b.Wn)(e)}))},muteConversation:function(e){var t=e.id,n=e.credentials;return Ae({url:pe(t),credentials:n,method:"POST"}).then((function(e){return(0,b.Wn)(e)}))},unmuteConversation:function(e){var t=e.id,n=e.credentials;return Ae({url:me(t),credentials:n,method:"POST"}).then((function(e){return(0,b.Wn)(e)}))},blockUser:function(e){var t=e.id,n=e.credentials;return Fe(function(e){return"/api/v1/accounts/".concat(e,"/block")}(t),{headers:Oe(n),method:"POST"}).then((function(e){return e.json()}))},unblockUser:function(e){var t=e.id,n=e.credentials;return Fe(function(e){return"/api/v1/accounts/".concat(e,"/unblock")}(t),{headers:Oe(n),method:"POST"}).then((function(e){return e.json()}))},removeUserFromFollowers:function(e){var t=e.id,n=e.credentials;return Fe(function(e){return"/api/v1/accounts/".concat(e,"/remove_from_followers")}(t),{headers:Oe(n),method:"POST"}).then((function(e){return e.json()}))},editUserNote:function(e){var t=e.id,n=e.credentials,o=e.comment;return Ae({url:oe(t),credentials:n,payload:{comment:o},method:"POST"})},fetchUser:Ee,fetchUserByName:function(e){var t=e.name,n=e.credentials;return Ae({url:"/api/v1/accounts/lookup",credentials:n,params:{acct:t}}).then((function(e){return e.id})).catch((function(e){if(e&&404===e.statusCode)return t;throw e})).then((function(e){return Ee({id:e,credentials:n})}))},fetchUserRelationship:function(e){var t=e.id,n=e.credentials,o="".concat("/api/v1/accounts/relationships","/?id=").concat(t);return Fe(o,{headers:Oe(n)}).then((function(e){return new Promise((function(t,n){return e.json().then((function(r){return e.ok?t(r):n(new z(e.status,r,{url:o},e))}))}))}))},favorite:function(e){var t=e.id,n=e.credentials;return Ae({url:R(t),method:"POST",credentials:n}).then((function(e){return(0,b.Wn)(e)}))},unfavorite:function(e){var t=e.id,n=e.credentials;return Ae({url:q(t),method:"POST",credentials:n}).then((function(e){return(0,b.Wn)(e)}))},retweet:function(e){var t=e.id,n=e.credentials;return Ae({url:N(t),method:"POST",credentials:n}).then((function(e){return(0,b.Wn)(e)}))},unretweet:function(e){var t=e.id,n=e.credentials;return Ae({url:Z(t),method:"POST",credentials:n}).then((function(e){return(0,b.Wn)(e)}))},bookmarkStatus:function(e){var t=e.id,n=e.credentials;return Ae({url:re(t),headers:Oe(n),method:"POST"})},unbookmarkStatus:function(e){var t=e.id,n=e.credentials;return Ae({url:ie(t),headers:Oe(n),method:"POST"})},postStatus:function(e){var t=e.credentials,n=e.status,o=e.spoilerText,r=e.visibility,i=e.sensitive,s=e.poll,a=e.mediaIds,u=void 0===a?[]:a,c=e.inReplyToStatusId,l=e.quoteId,d=e.contentType,p=e.preview,m=e.idempotencyKey,h=new FormData,f=s.options||[];if(h.append("status",n),h.append("source","Pleroma FE"),o&&h.append("spoiler_text",o),r&&h.append("visibility",r),i&&h.append("sensitive",i),d&&h.append("content_type",d),u.forEach((function(e){h.append("media_ids[]",e)})),f.some((function(e){return""!==e}))){var g={expires_in:parseInt(s.expiresIn,10),multiple:s.multiple};Object.keys(g).forEach((function(e){h.append("poll[".concat(e,"]"),g[e])})),f.forEach((function(e){h.append("poll[options][]",e)}))}c&&h.append("in_reply_to_id",c),l&&h.append("quote_id",l),p&&h.append("preview","true");var v=Oe(t);return m&&(v["idempotency-key"]=m),Fe("/api/v1/statuses",{body:h,method:"POST",headers:v}).then((function(e){return e.json()})).then((function(e){return e.error?e:(0,b.Wn)(e)}))},editStatus:function(e){var t=e.id,n=e.credentials,o=e.status,r=e.spoilerText,i=e.sensitive,s=e.poll,a=e.mediaIds,u=void 0===a?[]:a,c=e.contentType,l=new FormData,d=s.options||[];if(l.append("status",o),r&&l.append("spoiler_text",r),i&&l.append("sensitive",i),c&&l.append("content_type",c),u.forEach((function(e){l.append("media_ids[]",e)})),d.some((function(e){return""!==e}))){var p={expires_in:parseInt(s.expiresIn,10),multiple:s.multiple};Object.keys(p).forEach((function(e){l.append("poll[".concat(e,"]"),p[e])})),d.forEach((function(e){l.append("poll[options][]",e)}))}var m=Oe(n);return Fe(V(t),{body:l,method:"PUT",headers:m}).then((function(e){return e.json()})).then((function(e){return e.error?e:(0,b.Wn)(e)}))},deleteStatus:function(e){var t=e.id,n=e.credentials;return Ae({url:W(t),credentials:n,method:"DELETE"})},uploadMedia:function(e){var t=e.formData,n=e.credentials;return Fe(se,{body:t,method:"POST",headers:Oe(n)}).then((function(e){return e.json()})).then((function(e){return(0,b.cO)(e)}))},setMediaDescription:function(e){var t=e.id,n=e.description,o=e.credentials;return Ae({url:"".concat(se,"/").concat(t),method:"PUT",headers:Oe(o),payload:{description:n}}).then((function(e){return(0,b.cO)(e)}))},fetchMutes:function(e){var t=e.maxId,n=e.credentials,o=new URLSearchParams({with_relationships:!0});return t&&o.append("max_id",t),Ae({url:"".concat("/api/v1/mutes/","?").concat(o.toString()),credentials:n}).then((function(e){return e.map(b.nL)}))},muteUser:function(e){var t=e.id,n=e.expiresIn,o=e.credentials,r={};return n&&(r.expires_in=n),Ae({url:X(t),credentials:o,method:"POST",payload:r})},unmuteUser:function(e){var t=e.id,n=e.credentials;return Ae({url:ee(t),credentials:n,method:"POST"})},subscribeUser:function(e){var t=e.id,n=e.credentials;return Ae({url:te(t),credentials:n,method:"POST"})},unsubscribeUser:function(e){var t=e.id,n=e.credentials;return Ae({url:ne(t),credentials:n,method:"POST"})},fetchBlocks:function(e){var t=e.maxId,n=e.credentials,o=new URLSearchParams({with_relationships:!0});return t&&o.append("max_id",t),Ae({url:"".concat("/api/v1/blocks/","?").concat(o.toString()),credentials:n}).then((function(e){return e.map(b.nL)}))},fetchOAuthTokens:function(e){var t=e.credentials;return Fe("/api/oauth_tokens.json",{headers:Oe(t)}).then((function(e){if(e.ok)return e.json();throw new Error("Error fetching auth tokens",e)}))},revokeOAuthToken:function(e){var t=e.id,n=e.credentials,o="/api/oauth_tokens/".concat(t);return Fe(o,{headers:Oe(n),method:"DELETE"})},tagUser:function(e){var t=e.tag,n=e.credentials,o={nicknames:[e.user.screen_name],tags:[t]},r=Oe(n);return r["Content-Type"]="application/json",Fe(U,{method:"PUT",headers:r,body:JSON.stringify(o)})},untagUser:function(e){var t=e.tag,n=e.credentials,o={nicknames:[e.user.screen_name],tags:[t]},r=Oe(n);return r["Content-Type"]="application/json",Fe(U,{method:"DELETE",headers:r,body:JSON.stringify(o)})},deleteUser:function(e){var t=e.credentials,n=e.user.screen_name,o=Oe(t);return Fe("".concat("/api/pleroma/admin/users","?nickname=").concat(n),{method:"DELETE",headers:o})},addRight:function(e){var t=e.right,n=e.credentials,o=e.user.screen_name;return Fe(M(o,t),{method:"POST",headers:Oe(n),body:{}})},deleteRight:function(e){var t=e.right,n=e.credentials,o=e.user.screen_name;return Fe(M(o,t),{method:"DELETE",headers:Oe(n),body:{}})},activateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Ae({url:"/api/pleroma/admin/users/activate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return u()(e,"users.0")}))},deactivateUser:function(e){var t=e.credentials,n=e.user.screen_name;return Ae({url:"/api/pleroma/admin/users/deactivate",method:"PATCH",credentials:t,payload:{nicknames:[n]}}).then((function(e){return u()(e,"users.0")}))},register:function(e){var t=e.params,n=e.credentials,o=t.nickname,i=(0,r.Z)(t,I);return Fe("/api/v1/accounts",{method:"POST",headers:$($({},Oe(n)),{},{"Content-Type":"application/json"}),body:JSON.stringify($({nickname:o,locale:"en_US",agreement:!0},i))}).then((function(e){return e.ok?e.json():e.json().then((function(e){throw new P(e)}))}))},getCaptcha:function(){return Fe("/api/pleroma/captcha").then((function(e){return e.json()}))},updateProfileImages:function(e){var t=e.credentials,n=e.avatar,o=void 0===n?null:n,r=e.avatarName,i=void 0===r?null:r,s=e.banner,a=void 0===s?null:s,u=e.background,c=void 0===u?null:u,l=new FormData;return null!==o&&(null!==i?l.append("avatar",o,i):l.append("avatar",o)),null!==a&&l.append("header",a),null!==c&&l.append("pleroma_background_image",c),Fe(ce,{headers:Oe(t),method:"PATCH",body:l}).then((function(e){return e.json()})).then((function(e){if(e.error)throw new Error(e.error);return(0,b.nL)(e)}))},updateProfile:function(e){var t=e.credentials,n=e.params;return Ae({url:ce,method:"PATCH",payload:n,credentials:t}).then((function(e){return(0,b.nL)(e)}))},importMutes:function(e){var t=e.file,n=e.credentials,o=new FormData;return o.append("list",t),Fe("/api/pleroma/mutes_import",{body:o,method:"POST",headers:Oe(n)}).then((function(e){return e.ok}))},importBlocks:function(e){var t=e.file,n=e.credentials,o=new FormData;return o.append("list",t),Fe("/api/pleroma/blocks_import",{body:o,method:"POST",headers:Oe(n)}).then((function(e){return e.ok}))},importFollows:function(e){var t=e.file,n=e.credentials,o=new FormData;return o.append("list",t),Fe("/api/pleroma/follow_import",{body:o,method:"POST",headers:Oe(n)}).then((function(e){return e.ok}))},deleteAccount:function(e){var t=e.credentials,n=e.password,o=new FormData;return o.append("password",n),Fe("/api/pleroma/delete_account",{body:o,method:"POST",headers:Oe(t)}).then((function(e){return e.json()}))},changeEmail:function(e){var t=e.credentials,n=e.email,o=e.password,r=new FormData;return r.append("email",n),r.append("password",o),Fe("/api/pleroma/change_email",{body:r,method:"POST",headers:Oe(t)}).then((function(e){return e.json()}))},moveAccount:function(e){var t=e.credentials,n=e.password,o=e.targetAccount,r=new FormData;return r.append("password",n),r.append("target_account",o),Fe("/api/pleroma/move_account",{body:r,method:"POST",headers:Oe(t)}).then((function(e){return e.json()}))},addAlias:function(e){var t=e.credentials,n=e.alias;return Ae({url:B,method:"PUT",credentials:t,payload:{alias:n}})},deleteAlias:function(e){var t=e.credentials,n=e.alias;return Ae({url:B,method:"DELETE",credentials:t,payload:{alias:n}})},listAliases:function(e){var t=e.credentials;return Ae({url:B,method:"GET",credentials:t,params:{_cacheBooster:(new Date).getTime()}})},changePassword:function(e){var t=e.credentials,n=e.password,o=e.newPassword,r=e.newPasswordConfirmation,i=new FormData;return i.append("password",n),i.append("new_password",o),i.append("new_password_confirmation",r),Fe("/api/pleroma/change_password",{body:i,method:"POST",headers:Oe(t)}).then((function(e){return e.json()}))},settingsMFA:function(e){var t=e.credentials;return Fe("/api/pleroma/accounts/mfa",{headers:Oe(t),method:"GET"}).then((function(e){return e.json()}))},mfaDisableOTP:function(e){var t=e.credentials,n=e.password,o=new FormData;return o.append("password",n),Fe("/api/pleroma/accounts/mfa/totp",{body:o,method:"DELETE",headers:Oe(t)}).then((function(e){return e.json()}))},generateMfaBackupCodes:function(e){var t=e.credentials;return Fe("/api/pleroma/accounts/mfa/backup_codes",{headers:Oe(t),method:"GET"}).then((function(e){return e.json()}))},mfaSetupOTP:function(e){var t=e.credentials;return Fe("/api/pleroma/accounts/mfa/setup/totp",{headers:Oe(t),method:"GET"}).then((function(e){return e.json()}))},mfaConfirmOTP:function(e){var t=e.credentials,n=e.password,o=e.token,r=new FormData;return r.append("password",n),r.append("code",o),Fe("/api/pleroma/accounts/mfa/confirm/totp",{body:r,headers:Oe(t),method:"POST"}).then((function(e){return e.json()}))},addBackup:function(e){var t=e.credentials;return Ae({url:_e,method:"POST",credentials:t})},listBackups:function(e){var t=e.credentials;return Ae({url:_e,method:"GET",credentials:t,params:{_cacheBooster:(new Date).getTime()}})},fetchFollowRequests:function(e){var t=e.credentials;return Fe("/api/v1/follow_requests",{headers:Oe(t)}).then((function(e){return e.json()})).then((function(e){return e.map(b.nL)}))},fetchLists:function(e){var t=e.credentials;return Fe("/api/v1/lists",{headers:Oe(t)}).then((function(e){return e.json()}))},createList:function(e){var t=e.title,n=e.credentials,o=Oe(n);return o["Content-Type"]="application/json",Fe("/api/v1/lists",{headers:o,method:"POST",body:JSON.stringify({title:t})}).then((function(e){return e.json()}))},getList:function(e){var t=e.listId,n=e.credentials,o=G(t);return Fe(o,{headers:Oe(n)}).then((function(e){return e.json()}))},updateList:function(e){var t=e.listId,n=e.title,o=e.credentials,r=G(t),i=Oe(o);return i["Content-Type"]="application/json",Fe(r,{headers:i,method:"PUT",body:JSON.stringify({title:n})})},getListAccounts:function(e){var t=e.listId,n=e.credentials,o=J(t);return Fe(o,{headers:Oe(n)}).then((function(e){return e.json()})).then((function(e){return e.map((function(e){return e.id}))}))},addAccountsToList:function(e){var t=e.listId,n=e.accountIds,o=e.credentials,r=J(t),i=Oe(o);return i["Content-Type"]="application/json",Fe(r,{headers:i,method:"POST",body:JSON.stringify({account_ids:n})})},removeAccountsFromList:function(e){var t=e.listId,n=e.accountIds,o=e.credentials,r=J(t),i=Oe(o);return i["Content-Type"]="application/json",Fe(r,{headers:i,method:"DELETE",body:JSON.stringify({account_ids:n})})},deleteList:function(e){var t=e.listId,n=e.credentials,o=G(t);return Fe(o,{method:"DELETE",headers:Oe(n)})},approveUser:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/follow_requests/".concat(e,"/authorize")}(t);return Fe(o,{headers:Oe(n),method:"POST"}).then((function(e){return e.json()}))},denyUser:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/follow_requests/".concat(e,"/reject")}(t);return Fe(o,{headers:Oe(n),method:"POST"}).then((function(e){return e.json()}))},suggestions:function(e){var t=e.credentials;return Fe("/api/v1/suggestions",{headers:Oe(t)}).then((function(e){return e.json()}))},markNotificationsAsSeen:function(e){var t=e.id,n=e.credentials,o=e.single,r=void 0!==o&&o,i=new FormData;return r?i.append("id",t):i.append("max_id",t),Fe("/api/v1/pleroma/notifications/read",{body:i,headers:Oe(n),method:"POST"}).then((function(e){return e.json()}))},dismissNotification:function(e){var t=e.credentials,n=e.id;return Ae({url:L(n),method:"POST",payload:{id:n},credentials:t})},vote:function(e){var t,n=e.pollId,o=e.choices,r=e.credentials;return(new FormData).append("choices",o),Ae({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t,"/votes")),method:"POST",credentials:r,payload:{choices:o}})},fetchPoll:function(e){var t,n=e.pollId,o=e.credentials;return Ae({url:(t=encodeURIComponent(n),"/api/v1/polls/".concat(t)),method:"GET",credentials:o})},fetchFavoritedByUsers:function(e){var t=e.id,n=e.credentials;return Ae({url:ae(t),method:"GET",credentials:n}).then((function(e){return e.map(b.nL)}))},fetchRebloggedByUsers:function(e){var t=e.id,n=e.credentials;return Ae({url:ue(t),method:"GET",credentials:n}).then((function(e){return e.map(b.nL)}))},fetchEmojiReactions:function(e){var t=e.id,n=e.credentials;return Ae({url:ge(t),credentials:n}).then((function(e){return e.map((function(e){return e.accounts=e.accounts.map(b.nL),e}))}))},reactWithEmoji:function(e){var t=e.id,n=e.emoji,o=e.credentials;return Ae({url:ve(t,n),method:"PUT",credentials:o}).then(b.Wn)},unreactWithEmoji:function(e){var t=e.id,n=e.emoji,o=e.credentials;return Ae({url:we(t,n),method:"DELETE",credentials:o}).then(b.Wn)},reportUser:function(e){var t=e.credentials,n=e.userId,o=e.statusIds,r=e.comment,i=e.forward;return Ae({url:"/api/v1/reports",method:"POST",payload:{account_id:n,status_ids:o,comment:r,forward:i},credentials:t})},updateNotificationSettings:function(e){var t=e.credentials,n=e.settings,o=new FormData;return g()(n,(function(e,t){o.append(t,e)})),Fe("".concat("/api/pleroma/notification_settings","?").concat(new URLSearchParams(n)),{headers:Oe(t),method:"PUT",body:o}).then((function(e){return e.json()}))},search2:function(e){var t=e.credentials,n=e.q,o=e.resolve,r=e.limit,i=e.offset,s=e.following,a=e.type,u="/api/v2/search",c=[];n&&c.push(["q",encodeURIComponent(n)]),o&&c.push(["resolve",o]),r&&c.push(["limit",r]),i&&c.push(["offset",i]),s&&c.push(["following",!0]),a&&c.push(["following",a]),c.push(["with_relationships",!0]);var l=h()(c,(function(e){return"".concat(e[0],"=").concat(e[1])})).join("&");return u+="?".concat(l),Fe(u,{headers:Oe(t)}).then((function(e){if(e.ok)return e;throw new Error("Error fetching search result",e)})).then((function(e){return e.json()})).then((function(e){return e.accounts=e.accounts.slice(0,r).map((function(e){return(0,b.nL)(e)})),e.statuses=e.statuses.slice(0,r).map((function(e){return(0,b.Wn)(e)})),e}))},searchUsers:function(e){var t=e.credentials,n=e.query;return Ae({url:"/api/v1/accounts/search",params:{q:n,resolve:!0},credentials:t}).then((function(e){return e.map(b.nL)}))},fetchKnownDomains:function(e){var t=e.credentials;return Ae({url:"/api/v1/instance/peers",credentials:t})},fetchDomainMutes:function(e){var t=e.credentials;return Ae({url:he,credentials:t})},muteDomain:function(e){var t=e.domain,n=e.credentials;return Ae({url:he,method:"POST",payload:{domain:t},credentials:n})},unmuteDomain:function(e){var t=e.domain,n=e.credentials;return Ae({url:he,method:"DELETE",payload:{domain:t},credentials:n})},chats:function(e){var t=e.credentials;return Fe("/api/v1/pleroma/chats",{headers:Oe(t)}).then((function(e){return e.json()})).then((function(e){return{chats:e.map(b._J).filter((function(e){return e}))}}))},getOrCreateChat:function(e){var t,n=e.accountId,o=e.credentials;return Ae({url:(t=n,"/api/v1/pleroma/chats/by-account-id/".concat(t)),method:"POST",credentials:o})},chatMessages:function(e){var t=e.id,n=e.credentials,o=e.maxId,r=e.sinceId,i=e.limit,s=void 0===i?20:i,a=be(t),u=[o&&"max_id=".concat(o),r&&"since_id=".concat(r),s&&"limit=".concat(s)].filter((function(e){return e})).join("&");return Ae({url:a+=u?"?"+u:"",method:"GET",credentials:n})},sendChatMessage:function(e){var t=e.id,n=e.content,o=e.mediaId,r=void 0===o?null:o,i=e.idempotencyKey,s=e.credentials,a={content:n};r&&(a.media_id=r);var u={};return i&&(u["idempotency-key"]=i),Ae({url:be(t),method:"POST",payload:a,credentials:s,headers:u})},readChat:function(e){var t=e.id,n=e.lastReadId,o=e.credentials;return Ae({url:ye(t),method:"POST",payload:{last_read_id:n},credentials:o})},deleteChatMessage:function(e){var t=e.chatId,n=e.messageId,o=e.credentials;return Ae({url:De(t,n),method:"DELETE",credentials:o})},setReportState:function(e){var t=e.id,n=e.state,o=e.credentials;return Fe("/api/pleroma/admin/reports",{headers:$($({},Oe(o)),{},{Accept:"application/json","Content-Type":"application/json"}),method:"PATCH",body:JSON.stringify({reports:[{id:t,state:n}]})}).then((function(e){if(e.status>=500)throw Error(e.statusText);return e.status>=400?e.json():e})).then((function(e){if(e.errors)throw Error(e.errors[0].message)}))},fetchUserInLists:function(e){var t=e.id,n=e.credentials,o=function(e){return"/api/v1/accounts/".concat(e,"/lists")}(t);return Fe(o,{headers:Oe(n)}).then((function(e){return e.json()}))},fetchAnnouncements:function(e){var t=e.credentials;return Ae({url:"/api/v1/announcements",credentials:t})},dismissAnnouncement:function(e){var t=e.id,n=e.credentials;return Ae({url:fe(t),credentials:n,method:"POST"})},postAnnouncement:function(e){var t=e.credentials,n=e.content,o=e.startsAt,r=e.endsAt,i=e.allDay;return Ae({url:"/api/v1/pleroma/admin/announcements",credentials:t,method:"POST",payload:Pe({content:n,startsAt:o,endsAt:r,allDay:i})})},editAnnouncement:function(e){var t=e.id,n=e.credentials,o=e.content,r=e.startsAt,i=e.endsAt,s=e.allDay;return Ae({url:ke(t),credentials:n,method:"PATCH",payload:Pe({content:o,startsAt:r,endsAt:i,allDay:s})})},deleteAnnouncement:function(e){var t=e.id,n=e.credentials;return Ae({url:Ce(t),credentials:n,method:"DELETE"})},adminFetchAnnouncements:function(e){var t=e.credentials;return Ae({url:"/api/v1/pleroma/admin/announcements",credentials:t})},fetchInstanceDBConfig:function(e){var t=e.credentials;return Fe(Se,{headers:Oe(t)}).then((function(e){return e.ok?e.json():{error:e}}))},fetchInstanceConfigDescriptions:function(e){var t=e.credentials;return Fe("/api/pleroma/admin/config/descriptions",{headers:Oe(t)}).then((function(e){return e.ok?e.json():{error:e}}))},fetchAvailableFrontends:function(e){var t=e.credentials;return Fe("/api/pleroma/admin/frontends",{headers:Oe(t)}).then((function(e){return e.ok?e.json():{error:e}}))},pushInstanceDBConfig:function(e){var t=e.credentials,n=e.payload;return Fe(Se,{headers:$({Accept:"application/json","Content-Type":"application/json"},Oe(t)),method:"POST",body:JSON.stringify(n)}).then((function(e){return e.ok?e.json():{error:e}}))},installFrontend:function(e){var t=e.credentials,n=e.payload;return Fe("/api/pleroma/admin/frontends/install",{headers:$({Accept:"application/json","Content-Type":"application/json"},Oe(t)),method:"POST",body:JSON.stringify(n)}).then((function(e){return e.ok?e.json():{error:e}}))}}},37230:(e,t,n)=>{"use strict";n.d(t,{X:()=>i});var o=n(21804),r=n.n(o),i=function(e){return Object.keys(e).reduce((function(t,n){return t[r()(n)]=e[n],t}),{})}},21865:(e,t,n)=>{"use strict";n.d(t,{CO:()=>c,Rx:()=>h,Tj:()=>m,_I:()=>v,a4:()=>g,aj:()=>p,ov:()=>l,pP:()=>b,uu:()=>w,wK:()=>f});var o=n(4942),r=n(29439),i=n(71002),s=n(97332);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function u(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var c=function(e,t,n){if(null!=e){if("#"===e[0]||"transparent"===e)return e;if("object"===(0,i.Z)(e)){var o=e;e=o.r,t=o.g,n=o.b}var s=[e,t,n].map((function(e){return(e=(e=Math.ceil(e))<0?0:e)>255?255:e})),a=(0,r.Z)(s,3);return e=a[0],t=a[1],n=a[2],"#".concat(((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1))}},l=function(e){var t=function(e){return"rgb".split("").reduce((function(t,n){return t[n]=function(e){var t=e/255;return t<.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}(e[n]),t}),{})}(e);return.2126*t.r+.7152*t.g+.0722*t.b},d=function(e,t){var n=l(e),o=l(t),i=n>o?[n,o]:[o,n],s=(0,r.Z)(i,2);return(s[0]+.05)/(s[1]+.05)},p=function(e,t,n){return d(h(n,t),e)},m=function(e,t,n){return 1===t||void 0===t?e:"rgb".split("").reduce((function(o,r){return o[r]=e[r]*t+n[r]*(1-t),o}),{})},h=function(e,t){return t.reduce((function(e,t){var n=(0,r.Z)(t,2),o=n[0],i=n[1];return m(o,i,e)}),e)},f=function(e){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},g=function(e,t){return"rgb".split("").reduce((function(n,o){return n[o]=(e[o]+t[o])/2,n}),{})},v=function(e){return"rgba(".concat(Math.floor(e.r),", ").concat(Math.floor(e.g),", ").concat(Math.floor(e.b),", ").concat(e.a,")")},w=function(e,t,n){if(d(e,t)<4.5){var o=void 0!==t.a?{a:t.a}:{},r=Object.assign(o,(0,s.Xp)(t).rgb);return!n&&d(e,r)<4.5?(0,s.wo)(e,t).rgb:r}return t},b=function(e,t){var n={};if("object"===(0,i.Z)(e))n=e;else if("string"==typeof e){if(!e.startsWith("#"))return e;n=f(e)}return v(u(u({},n),{},{a:t}))}},13562:(e,t,n)=>{"use strict";n.d(t,{g:()=>i});var o=n(23560),r=n.n(o),i=function(e){return function(e){return r()(e)?e.options:e}(e).props}},27483:(e,t,n)=>{"use strict";n.d(t,{GV:()=>l,_F:()=>d,cC:()=>p,dX:()=>m,x4:()=>s});var o=1e3,r=6e4,i=36e5,s=24*i,a=7*s,u=30*s,c=365.25*s,l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;"string"==typeof e&&(e=Date.parse(e));var n=Date.now()>e?Math.floor:Math.ceil,l=Math.abs(Date.now()-e),d={num:n(l/c),key:"time.unit.years"};return l<t*o?(d.num=0,d.key="time.now"):l<r?(d.num=n(l/o),d.key="time.unit.seconds"):l<i?(d.num=n(l/r),d.key="time.unit.minutes"):l<s?(d.num=n(l/i),d.key="time.unit.hours"):l<a?(d.num=n(l/s),d.key="time.unit.days"):l<u?(d.num=n(l/a),d.key="time.unit.weeks"):l<c&&(d.num=n(l/u),d.key="time.unit.months"),d},d=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=l(e,t);return n.key+="_short",n},p=function(e,t){switch(e){case"minutes":return.001*t*r;case"hours":return.001*t*i;case"days":return.001*t*s}},m=function(e,t){switch(e){case"minutes":return 1e3*t/r;case"hours":return 1e3*t/i;case"days":return 1e3*t/s}}},64689:(e,t,n)=>{"use strict";n.d(t,{w:()=>o});var o=function(e,t){if("Notification"in window&&"granted"===window.Notification.permission&&!e.statuses.notifications.desktopNotificationSilence){var n=new window.Notification(t.title,t);setTimeout(n.close.bind(n),5e3)}}},27742:(e,t,n)=>{"use strict";n.d(t,{Nw:()=>w,P7:()=>h,UB:()=>y,Wn:()=>f,_J:()=>b,cO:()=>m,eM:()=>g,nL:()=>p});var o=n(4942),r=n(95573),i=n.n(r),s=n(28490),a=n.n(s),u=n(52230),c=n(35748);function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var p=function(e){var t={},n=Object.prototype.hasOwnProperty.call(e,"acct"),o=n&&!Object.prototype.hasOwnProperty.call(e,"avatar");if(t.inLists=null,t.id=String(e.id),t._original=e,n){if(t.screen_name=e.acct,t.fqn=e.fqn,t.statusnet_profile_url=e.url,o)return t;if(t.emoji=e.emojis,t.name=i()(e.display_name),t.name_html=t.name,t.name_unescaped=e.display_name,t.description=e.note,t.description_html=e.note,t.fields=e.fields,t.fields_html=e.fields.map((function(e){return{name:i()(e.name),value:e.value}})),t.fields_text=e.fields.map((function(e){return{name:unescape(e.name.replace(/<[^>]*>/g,"")),value:unescape(e.value.replace(/<[^>]*>/g,""))}})),t.profile_image_url=e.avatar,t.profile_image_url_original=e.avatar,t.cover_photo=e.header,t.friends_count=e.following_count,t.bot=e.bot,e.pleroma){e.pleroma.settings_store&&(t.storage=e.pleroma.settings_store["pleroma-fe"]);var r=e.pleroma.relationship;t.background_image=e.pleroma.background_image,t.favicon=e.pleroma.favicon,t.token=e.pleroma.chat_token,r&&(t.relationship=r),t.allow_following_move=e.pleroma.allow_following_move,t.hide_follows=e.pleroma.hide_follows,t.hide_followers=e.pleroma.hide_followers,t.hide_follows_count=e.pleroma.hide_follows_count,t.hide_followers_count=e.pleroma.hide_followers_count,t.rights={moderator:e.pleroma.is_moderator,admin:e.pleroma.is_admin},t.rights.admin?t.role="admin":t.rights.moderator?t.role="moderator":t.role="member",t.birthday=e.pleroma.birthday,e.pleroma.privileges?t.privileges=e.pleroma.privileges:e.pleroma.is_admin?t.privileges=["users_read","users_manage_invites","users_manage_activation_state","users_manage_tags","users_manage_credentials","users_delete","messages_read","messages_delete","instances_delete","reports_manage_reports","moderation_log_read","announcements_manage_announcements","emoji_manage_emoji","statistics_read"]:e.pleroma.is_moderator?t.privileges=["messages_delete","reports_manage_reports"]:t.privileges=[]}e.source&&(t.description=e.source.note,t.default_scope=e.source.privacy,t.fields=e.source.fields,e.source.pleroma&&(t.no_rich_text=e.source.pleroma.no_rich_text,t.show_role=e.source.pleroma.show_role,t.discoverable=e.source.pleroma.discoverable,t.show_birthday=e.pleroma.show_birthday)),t.is_local=!t.screen_name.includes("@")}else t.screen_name=e.screen_name,t.name=e.name,t.name_html=e.name_html,t.description=e.description,t.description_html=e.description_html,t.profile_image_url=e.profile_image_url,t.profile_image_url_original=e.profile_image_url_original,t.cover_photo=e.cover_photo,t.friends_count=e.friends_count,t.statusnet_profile_url=e.statusnet_profile_url,t.is_local=e.is_local,t.role=e.role,t.show_role=e.show_role,e.rights&&(t.rights={moderator:e.rights.delete_others_notice,admin:e.rights.admin}),t.no_rich_text=e.no_rich_text,t.default_scope=e.default_scope,t.hide_follows=e.hide_follows,t.hide_followers=e.hide_followers,t.hide_follows_count=e.hide_follows_count,t.hide_followers_count=e.hide_followers_count,t.background_image=e.background_image,t.token=e.token,t.relationship={muting:e.muted,blocking:e.statusnet_blocking,followed_by:e.follows_you,following:e.following};if(t.created_at=new Date(e.created_at),t.locked=e.locked,t.followers_count=e.followers_count,t.statuses_count=e.statuses_count,e.pleroma&&(t.follow_request_count=e.pleroma.follow_request_count,t.tags=e.pleroma.tags,t.deactivated=void 0!==e.pleroma.is_active?!e.pleroma.is_active:e.pleroma.deactivated,t.notification_settings=e.pleroma.notification_settings,t.unread_chat_count=e.pleroma.unread_chat_count),t.tags=t.tags||[],t.rights=t.rights||{},t.notification_settings=t.notification_settings||{},t.screen_name_ui=t.screen_name,t.screen_name&&t.screen_name.includes("@")){var s=t.screen_name.split("@"),a=c.ZP.toUnicode(s[1]);a!==s[1]?(t.screen_name_ui_contains_non_ascii=!0,t.screen_name_ui=[s[0],a].join("@")):t.screen_name_ui_contains_non_ascii=!1}return t},m=function(e){var t={};return Object.prototype.hasOwnProperty.call(e,"oembed")?t.mimetype=e.mimetype:(t.mimetype=e.pleroma?e.pleroma.mime_type:e.type,t.meta=e.meta,t.id=e.id),t.url=e.url,t.large_thumb_url=e.preview_url,t.description=e.description,t},h=function(e){var t={};return t.text=e.text,t.spoiler_text=e.spoiler_text,t.content_type=e.content_type,t},f=function e(t){var n={},o=Object.prototype.hasOwnProperty.call(t,"account");if(o){if(n.favorited=t.favourited,n.fave_num=t.favourites_count,n.repeated=t.reblogged,n.repeat_num=t.reblogs_count,n.bookmarked=t.bookmarked,n.type=t.reblog?"retweet":"status",n.nsfw=t.sensitive,n.raw_html=t.content,n.emojis=t.emojis,n.tags=t.tags,n.edited_at=t.edited_at,t.pleroma){var r=t.pleroma;n.text=r.content?t.pleroma.content["text/plain"]:t.content,n.summary=r.spoiler_text?t.pleroma.spoiler_text["text/plain"]:t.spoiler_text,n.statusnet_conversation_id=t.pleroma.conversation_id,n.is_local=r.local,n.in_reply_to_screen_name=t.pleroma.in_reply_to_account_acct,n.thread_muted=r.thread_muted,n.emoji_reactions=r.emoji_reactions,n.parent_visible=void 0===r.parent_visible||r.parent_visible,n.quote=r.quote?e(r.quote):void 0,n.quote_id=r.quote_id?r.quote_id:n.quote?n.quote.id:void 0,n.quote_url=r.quote_url,n.quote_visible=r.quote_visible}else n.text=t.content,n.summary=t.spoiler_text;n.in_reply_to_status_id=t.in_reply_to_id,n.in_reply_to_user_id=t.in_reply_to_account_id,n.replies_count=t.replies_count,"retweet"===n.type&&(n.retweeted_status=e(t.reblog)),n.summary_raw_html=i()(t.spoiler_text),n.external_url=t.url,n.poll=t.poll,n.poll&&(n.poll.options=(n.poll.options||[]).map((function(e){return d(d({},e),{},{title_html:i()(e.title)})}))),n.pinned=t.pinned,n.muted=t.muted}else n.favorited=t.favorited,n.fave_num=t.fave_num,n.repeated=t.repeated,n.repeat_num=t.repeat_num,n.type=function(e){return e.is_post_verb?"status":e.retweeted_status?"retweet":"string"==typeof e.uri&&e.uri.match(/(fave|objectType=Favourite)/)||"string"==typeof e.text&&e.text.match(/favorited/)?"favorite":e.text.match(/deleted notice {{tag/)||e.qvitter_delete_notice?"deletion":e.text.match(/started following/)||"follow"===e.activity_type?"follow":"unknown"}(t),void 0===t.nsfw?(n.nsfw=v(t),t.retweeted_status&&(n.nsfw=t.retweeted_status.nsfw)):n.nsfw=t.nsfw,n.raw_html=t.statusnet_html,n.text=t.text,n.in_reply_to_status_id=t.in_reply_to_status_id,n.in_reply_to_user_id=t.in_reply_to_user_id,n.in_reply_to_screen_name=t.in_reply_to_screen_name,n.statusnet_conversation_id=t.statusnet_conversation_id,"retweet"===n.type&&(n.retweeted_status=e(t.retweeted_status)),n.summary=t.summary,n.summary_html=t.summary_html,n.external_url=t.external_url,n.is_local=t.is_local;n.id=String(t.id),n.visibility=t.visibility,n.card=t.card,n.created_at=new Date(t.created_at),n.in_reply_to_status_id=n.in_reply_to_status_id?String(n.in_reply_to_status_id):null,n.in_reply_to_user_id=n.in_reply_to_user_id?String(n.in_reply_to_user_id):null,n.user=p(o?t.account:t.user),n.attentions=((o?t.mentions:t.attentions)||[]).map(p),n.attachments=((o?t.media_attachments:t.attachments)||[]).map(m);var s=o?t.reblog:t.retweeted_status;return s&&(n.retweeted_status=e(s)),n.favoritedBy=[],n.rebloggedBy=[],Object.prototype.hasOwnProperty.call(t,"originalStatus")&&Object.assign(n,t.originalStatus),n},g=function(e){var t={};if(Object.prototype.hasOwnProperty.call(e,"ntype")){var n=f(e.notice);t.type=e.ntype,t.seen=Boolean(e.is_seen),t.status="like"===t.type?f(e.notice.favorited_status):n,t.action=n,t.from_profile="pleroma:chat_mention"===t.type?p(e.account):p(e.from_profile)}else t.type={favourite:"like",reblog:"repeat"}[e.type]||e.type,t.seen=e.pleroma.is_seen,t.status=(0,u.Gr)(t.type)?f(e.status):null,t.action=t.status,t.target="move"!==t.type?null:p(e.target),t.from_profile=p(e.account),t.emoji=e.emoji,t.emoji_url=e.emoji_url,e.report&&(t.report=e.report,t.report.content=e.report.content,t.report.acct=p(e.report.account),t.report.actor=p(e.report.actor),t.report.statuses=e.report.statuses.map(f));return t.created_at=new Date(e.created_at),t.id=parseInt(e.id),t},v=function(e){return(e.tags||[]).includes("nsfw")||!!(e.text||"").match(/#nsfw/i)},w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.flakeId,o=a()(e);if(o){var r=o.next.max_id,i=o.prev.min_id;return{maxId:n?r:parseInt(r,10),minId:n?i:parseInt(i,10)}}},b=function(e){var t={};return t.id=e.id,t.account=p(e.account),t.unread=e.unread,t.lastMessage=y(e.last_message),t.updated_at=new Date(e.updated_at),t},y=function(e){if(e){if(e.isNormalized)return e;var t=e;return t.id=e.id,t.created_at=new Date(e.created_at),t.chat_id=e.chat_id,t.emojis=e.emojis,t.content=e.content,e.attachment?t.attachments=[m(e.attachment)]:t.attachments=[],t.pending=!!e.pending,t.error=!1,t.idempotency_key=e.idempotency_key,t.isNormalized=!0,t}}},49753:(e,t,n)=>{"use strict";var o,r,i,s,a;n.d(t,{Z:()=>u});const u=(o=[],r=128,i=128,s=function(e){return e.complete&&0!==e.naturalHeight},{initFaviconService:function(){document.querySelectorAll('link[rel="icon"]').forEach((function(e){if(e){var t=document.createElement("canvas");t.width=r,t.height=i;var n=new Image;n.crossOrigin="anonymous",n.src=e.href;var s=t.getContext("2d");o.push({favcanvas:t,favimg:n,favcontext:s,favicon:e})}}))},clearFaviconBadge:a=function(){0!==o.length&&o.forEach((function(e){var t=e.favimg,n=e.favcanvas,o=e.favcontext,a=e.favicon;t&&o&&a&&(o.clearRect(0,0,r,i),s(t)&&o.drawImage(t,0,0,t.width,t.height,0,0,r,i),a.href=n.toDataURL("image/png"))}))},drawFaviconBadge:function(){0!==o.length&&(a(),o.forEach((function(e){var t=e.favimg,n=e.favcanvas,o=e.favcontext,a=e.favicon;if(t&&o&&o){var u=getComputedStyle(document.body),c="".concat(u.getPropertyValue("--badgeNotification")||"rgb(240, 100, 100)");s(t)&&o.drawImage(t,0,0,t.width,t.height,0,0,r,i),o.fillStyle=c,o.beginPath(),o.arc(96,32,32,0,2*Math.PI,!1),o.fill(),a.href=n.toDataURL("image/png")}})))}})},65079:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const o={fileSizeFormat:function(e){var t=["B","KiB","MiB","GiB","TiB"],n=e;if(n<1)return n+" "+t[0];var o=Math.min(Math.floor(Math.log(n)/Math.log(1024)),t.length-1);return{num:n=1*(n/Math.pow(1024,o)).toFixed(2),unit:t[o]}}}},58394:(e,t,n)=>{"use strict";n.d(t,{ZP:()=>i,iL:()=>r});var o=function(e){return e.match(/flash/)?"flash":e.match(/text\/html/)?"html":e.match(/image/)?"image":e.match(/video/)?"video":e.match(/audio/)?"audio":"unknown"},r=function(e){return e.match(/\.(png|jpe?g|gif|webp|avif)$/)?"image":e.match(/\.(ogv|mp4|webm|mov)$/)?"video":e.match(/\.(it|s3m|mod|umx|mp3|aac|m4a|flac|alac|ogg|oga|opus|wav|ape|midi?)$/)?"audio":"unknown"};const i={fileType:o,fileTypeExt:r,fileMatchesSomeType:function(e,t){return e.some((function(e){return o(t.mimetype)===e}))}}},39776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var o=n(35161),r=n.n(o),i=n(72617),s=n(2900),a={ja_easy:"ja",zh_Hant:"zh-HANT",zh:"zh-Hans"},u=function(e){return a[e]||e},c=function(e){return u(e).replace("_","-")},l=function(e){var t={ja_easy:"やさしいにほんご","nan-TW":"臺語(閩南語)",zh:"简体中文",zh_Hant:"繁體中文"}[e]||s.Z.getNativeName(e),n=u(e);return t.charAt(0).toLocaleUpperCase(n)+t.slice(1)},d=r()(i.Z.languages,(function(e){return{code:e,name:l(e)}})).sort((function(e,t){return e.name.localeCompare(t.name)}));const p={internalToBrowserLocale:u,internalToBackendLocale:c,internalToBackendLocaleMulti:function(e){return(Array.isArray(e)?e:[e]).map(c).join(",")},languages:d,getLanguageName:l}},52230:(e,t,n)=>{"use strict";n.d(t,{Bt:()=>d,G2:()=>w,Gr:()=>h,Km:()=>b,nJ:()=>v,nU:()=>f});var o=n(64721),r=n.n(o),i=n(89734),s=n.n(i),a=n(63105),u=n.n(a),c=n(67828),l=n(64689),d=function(e){return e.state.statuses.notifications.data},p=function(e){var t=e.rootState||e.state;return[t.config.notificationVisibility.likes&&"like",t.config.notificationVisibility.mentions&&"mention",t.config.notificationVisibility.repeats&&"repeat",t.config.notificationVisibility.follows&&"follow",t.config.notificationVisibility.followRequest&&"follow_request",t.config.notificationVisibility.moves&&"move",t.config.notificationVisibility.emojiReactions&&"pleroma:emoji_reaction",t.config.notificationVisibility.reports&&"pleroma:report",t.config.notificationVisibility.polls&&"poll"].filter((function(e){return e}))},m=["like","mention","repeat","pleroma:emoji_reaction","poll"],h=function(e){return r()(m,e)},f=function(e){return!(h(e.type)&&!e.status)},g=function(e,t){var n=Number(e.id),o=Number(t.id),r=!Number.isNaN(n),i=!Number.isNaN(o);return r&&i?n>o?-1:1:r&&!i?1:!r&&i||e.id>t.id?-1:1},v=function(e,t){var n=e.rootState||e.state;if(!t.seen&&p(e).includes(t.type)&&("mention"!==t.type||!function(e,t){if(t.status)return t.status.muted||(0,c.u)(t.status,e.rootGetters.mergedConfig.muteWords).length>0}(e,t))){var o=y(t,e.rootGetters.i18n);(0,l.w)(n,o)}},w=function(e,t){var n=d(e).map((function(e){return e})).sort(g);return(n=s()(n,"seen")).filter((function(n){return(t||p(e)).includes(n.type)}))},b=function(e){return u()(w(e),(function(e){return!e.seen}))},y=function(e,t){var n,o={tag:e.id},r=e.status,i=e.from_profile.name;switch(o.title=i,o.icon=e.from_profile.profile_image_url,e.type){case"like":n="favorited_you";break;case"repeat":n="repeated_you";break;case"follow":n="followed_you";break;case"move":n="migrated_to";break;case"follow_request":n="follow_request";break;case"pleroma:report":n="submitted_report";break;case"poll":n="poll_ended"}return"pleroma:emoji_reaction"===e.type?o.body=t.t("notifications.reacted_with",[e.emoji]):n?o.body=t.t("notifications."+n):h(e.type)&&(o.body=e.status.text),r&&r.attachments&&r.attachments.length>0&&!r.nsfw&&r.attachments[0].mimetype.startsWith("image/")&&(o.image=r.attachments[0].url),o}},15568:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var o=n(93433),r=n(77776),i=n(22626),s=["mention","favourite","reblog","follow","move","pleroma:emoji_reaction","pleroma:report"],a=function(e){var t=e.store,n=e.credentials,r=e.older,i=void 0!==r&&r,a=e.since,c={credentials:n},l=t.getters,d=(t.rootState||t.state).statuses.notifications,p=l.mergedConfig.hideMutedPosts;if(c.includeTypes=s,c.withMuted=!p,c.timeline="notifications",i)return d.minId!==Number.POSITIVE_INFINITY&&(c.until=d.minId),u({store:t,args:c,older:i});void 0===a&&d.maxId!==Number.POSITIVE_INFINITY?c.since=d.maxId:null!==a&&(c.since=a);var m=u({store:t,args:c,older:i}),h=d.data,f=h.filter((function(e){return e.seen})).map((function(e){return e.id}));return h.length-f.length>0&&f.length>0&&(c.since=Math.max.apply(Math,(0,o.Z)(f)),u({store:t,args:c,older:i})),m},u=function(e){var t=e.store,n=e.args,o=e.older;return r.ZP.fetchTimeline(n).then((function(e){if(e.errors)throw new Error("".concat(e.status," ").concat(e.statusText));var n=e.data;return function(e){var t=e.notifications,n=e.older;e.store.dispatch("addNewNotifications",{notifications:t,older:n})}({store:t,notifications:n,older:o}),n})).catch((function(e){t.dispatch("pushGlobalNotice",{level:"error",messageKey:"notifications.error",messageArgs:[e.message],timeout:5e3}),console.error(e)}))};const c={fetchAndUpdate:a,startFetching:function(e){var t=e.credentials,n=e.store;setTimeout((function(){return n.dispatch("setNotificationsSilence",!1)}),1e4);var o=function(){return a({credentials:t,store:n})};return o(),(0,i.F)(o,1e4)}}},67952:(e,t,n)=>{"use strict";n.d(t,{y:()=>o});var o=function e(t,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=o.top,s=void 0===i?0:i,a=o.left,u=void 0===a?0:a,c=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],l={top:s+t.offsetTop,left:u+t.offsetLeft};if(!c&&t!==window){var d=r(t),p=d.topPadding,m=d.leftPadding;l.top+=c?0:p,l.left+=c?0:m}if(t.offsetParent&&"sticky"!==window.getComputedStyle(t.offsetParent).position&&(n===window||n.contains(t.offsetParent)||n===t.offsetParent))return e(t.offsetParent,n,l,!1);if(n!==window){var h=r(n),f=h.topPadding,g=h.leftPadding;l.top+=f,l.left+=g}return l},r=function(e){var t=window.getComputedStyle(e)["padding-top"],n=Number(t.substring(0,t.length-2)),o=window.getComputedStyle(e)["padding-left"];return{topPadding:n,leftPadding:Number(o.substring(0,o.length-2))}}},22626:(e,t,n)=>{"use strict";n.d(t,{F:()=>o});var o=function(e,t){var n=!1,o=null;return o=window.setTimeout((function r(){var i=e();i&&i.finally?i.finally((function(){n||(o=window.setTimeout(r,t))})):console.warn("promiseInterval: promise call did not return a promise, stopping interval.")}),t),{stop:function(){n=!0,window.clearTimeout(o)}}}},53599:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const o=function(){return"".concat(Math.random()).replace(".","-")}},67828:(e,t,n)=>{"use strict";n.d(t,{u:()=>i});var o=n(63105),r=n.n(o),i=function(e,t){var n=e.text.toLowerCase(),o=e.summary.toLowerCase();return r()(t,(function(e){return n.includes(e.toLowerCase())||o.includes(e.toLowerCase())}))}},7257:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var o=n(35161),r=n.n(o),i=n(77776);const s={postStatus:function(e){var t=e.store,n=e.status,o=e.spoilerText,s=e.visibility,a=e.sensitive,u=e.poll,c=e.media,l=void 0===c?[]:c,d=e.inReplyToStatusId,p=void 0===d?void 0:d,m=e.quoteId,h=void 0===m?void 0:m,f=e.contentType,g=void 0===f?"text/plain":f,v=e.preview,w=void 0!==v&&v,b=e.idempotencyKey,y=void 0===b?"":b,D=r()(l,"id");return i.ZP.postStatus({credentials:t.state.users.currentUser.credentials,status:n,spoilerText:o,visibility:s,sensitive:a,mediaIds:D,inReplyToStatusId:p,quoteId:h,contentType:g,poll:u,preview:w,idempotencyKey:y}).then((function(e){return e.error||w||t.dispatch("addNewStatuses",{statuses:[e],timeline:"friends",showImmediately:!0,noIdUpdate:!0}),e})).catch((function(e){return{error:e.message}}))},editStatus:function(e){var t=e.store,n=e.statusId,o=e.status,s=e.spoilerText,a=e.sensitive,u=e.poll,c=e.media,l=void 0===c?[]:c,d=e.contentType,p=void 0===d?"text/plain":d,m=r()(l,"id");return i.ZP.editStatus({id:n,credentials:t.state.users.currentUser.credentials,status:o,spoilerText:s,sensitive:a,poll:u,mediaIds:m,contentType:p}).then((function(e){return e.error||t.dispatch("addNewStatuses",{statuses:[e],timeline:"friends",showImmediately:!0,noIdUpdate:!0}),e})).catch((function(e){return console.error("Error editing status",e),{error:e.message}}))},uploadMedia:function(e){var t=e.store,n=e.formData,o=t.state.users.currentUser.credentials;return i.ZP.uploadMedia({credentials:o,formData:n})},setMediaDescription:function(e){var t=e.store,n=e.id,o=e.description,r=t.state.users.currentUser.credentials;return i.ZP.setMediaDescription({credentials:r,id:n,description:o})}}},77394:(e,t,n)=>{"use strict";n.d(t,{H2:()=>F,I3:()=>I,LP:()=>b,Ot:()=>v,RC:()=>E,_v:()=>m,bY:()=>x,dE:()=>z,gm:()=>A,l9:()=>P,lD:()=>y,m:()=>D,mg:()=>g,vp:()=>j});var o=n(71002),r=n(93433),i=n(4942),s=n(29439),a=n(97332),u=n(21865),c=n(40454),l=n(85565);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){(0,i.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var m=function(e){var t=O(e).rules,n=document.head,o=document.body;o.classList.add("hidden");var r=document.createElement("style");n.appendChild(r);var i=r.sheet;i.toString(),i.insertRule(":root { ".concat(t.radii," }"),"index-max"),i.insertRule(":root { ".concat(t.colors," }"),"index-max"),i.insertRule(":root { ".concat(t.shadows," }"),"index-max"),i.insertRule(":root { ".concat(t.fonts," }"),"index-max"),o.classList.remove("hidden")},h=function(e){return{sidebarColumnWidth:e.sidebarColumnWidth,contentColumnWidth:e.contentColumnWidth,notifsColumnWidth:e.notifsColumnWidth,emojiReactionsScale:e.emojiReactionsScale}},f=h(l.W2),g=function(e){var t=h(e);if(t!==f){var n=document.head,o=document.body;o.classList.add("hidden");var r=Object.entries(t).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).map((function(e){var t=(0,s.Z)(e,2),n=t[0],o=t[1];return"--".concat(n,": ").concat(o)})).join(";"),i=document.createElement("style");n.appendChild(i);var a=i.sheet;a.toString(),a.insertRule(":root { ".concat(r," }"),"index-max"),o.classList.remove("hidden")}},v=function(e,t){return 0===e.length?"none":e.filter((function(e){return t?e.inset:e})).map((function(e){return[e.x,e.y,e.blur,e.spread].map((function(e){return e+"px"})).concat([(0,u.pP)(e.color,e.alpha),e.inset?"inset":""]).join(" ")})).join(", ")},w=function(e){return 0===e.length?"none":e.filter((function(e){return!e.inset&&0===Number(e.spread)})).map((function(e){return[e.x,e.y,e.blur/2].map((function(e){return e+"px"})).concat([(0,u.pP)(e.color,e.alpha)]).join(" ")})).map((function(e){return"drop-shadow(".concat(e,")")})).join(" ")},b=function(e){var t=e.themeEngineVersion?e.colors||e:z(e.colors||e),n=(0,c.EC)(t,e.opacity||{}),o=n.colors,r=n.opacity,i=Object.entries(o).reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];return r?(e.solid[o]=(0,u.CO)(r),e.complete[o]=void 0===r.a?(0,u.CO)(r):(0,u._I)(r),e):e}),{complete:{},solid:{}});return{rules:{colors:Object.entries(i.complete).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).map((function(e){var t=(0,s.Z)(e,2),n=t[0],o=t[1];return"--".concat(n,": ").concat(o)})).join(";")},theme:{colors:i.solid,opacity:r}}},y=function(e){var t=e.radii||{};void 0!==e.btnRadius&&(t=Object.entries(e).filter((function(e){var t=(0,s.Z)(e,2),n=t[0];return t[1],n.endsWith("Radius")})).reduce((function(e,t){return e[t[0].split("Radius")[0]]=t[1],e}),{}));var n=Object.entries(t).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];return e[o]=r,e}),{btn:4,input:4,checkbox:2,panel:10,avatar:5,avatarAlt:50,tooltip:2,attachment:5,chatMessage:t.panel});return{rules:{radii:Object.entries(n).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).map((function(e){var t=(0,s.Z)(e,2),n=t[0],o=t[1];return"--".concat(n,"Radius: ").concat(o,"px")})).join(";")},theme:{radii:n}}},D=function(e){var t=Object.entries(e.fonts||{}).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];return e[o]=Object.entries(r).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];return e[o]=r,e}),e[o]),e}),{interface:{family:"sans-serif"},input:{family:"inherit"},post:{family:"inherit"},postCode:{family:"monospace"}});return{rules:{fonts:Object.entries(t).filter((function(e){var t=(0,s.Z)(e,2);return t[0],t[1]})).map((function(e){var t=(0,s.Z)(e,2),n=t[0],o=t[1];return"--".concat(n,"Font: ").concat(o.family)})).join(";")},theme:{fonts:t}}},_=function(e,t){return{x:0,y:e?1:-1,blur:0,spread:0,color:t?"#000000":"#FFFFFF",alpha:.2,inset:!0}},k=[_(!0,!1),_(!1,!0)],C=[_(!0,!0),_(!1,!1)],S={x:0,y:0,blur:4,spread:0,color:"--faint",alpha:1},j={panel:[{x:1,y:1,blur:4,spread:0,color:"#000000",alpha:.6}],topBar:[{x:0,y:0,blur:4,spread:0,color:"#000000",alpha:.6}],popup:[{x:2,y:2,blur:3,spread:0,color:"#000000",alpha:.5}],avatar:[{x:0,y:1,blur:8,spread:0,color:"#000000",alpha:.7}],avatarStatus:[],panelHeader:[],button:[{x:0,y:0,blur:2,spread:0,color:"#000000",alpha:1}].concat(k),buttonHover:[S].concat(k),buttonPressed:[S].concat(C),input:[].concat(C,[{x:0,y:0,blur:2,inset:!0,spread:0,color:"#000000",alpha:1}])},F=function(e,t){var n={button:"btn",panel:"bg",top:"topBar",popup:"popover",avatar:"bg",panelHeader:"panel",input:"input"},o=Object.fromEntries(Object.entries(e.shadows||{}).map((function(e){var t=(0,s.Z)(e,2);return[t[0],t[1].map((function(e){return p({color:"#000000"},e)}))]}))),l=o&&!e.themeEngineVersion?P(o,e.opacity):o||{},d=Object.entries(p(p({},j),l)).reduce((function(e,o){var l=(0,s.Z)(o,2),d=l[0],m=l[1],h=d.replace(/[A-Z].*$/,""),f=n[h],g=(0,u.ov)((0,a.OQ)(t[f]).rgb)<.5?1:-1,v=m.reduce((function(e,n){return[].concat((0,r.Z)(e),[p(p({},n),{},{color:(0,u.CO)((0,c.NI)(n.color,(function(e){return(0,a.OQ)(t[e]).rgb}),g))})])}),[]);return p(p({},e),{},(0,i.Z)({},d,v))}),{});return{rules:{shadows:Object.entries(d).map((function(e){var t=(0,s.Z)(e,2),n=t[0],o=t[1];return["--".concat(n,"Shadow: ").concat(v(o)),"--".concat(n,"ShadowFilter: ").concat(w(o)),"--".concat(n,"ShadowInset: ").concat(v(o,!0))].join(";")})).join(";")},theme:{shadows:d}}},A=function(e,t,n,o){return{rules:p(p(p(p({},n.rules),e.rules),t.rules),o.rules),theme:p(p(p(p({},n.theme),e.theme),t.theme),o.theme)}},O=function(e){var t=b(e);return A(t,y(e),F(e,t.theme.colors,t.mod),D(e))},E=function(){var e="no-store";return window.fetch("/static/styles.json",{cache:e}).then((function(e){return e.json()})).then((function(t){return Object.entries(t).map((function(t){var n=(0,s.Z)(t,2),r=n[0],i=n[1],a=null;return"object"===(0,o.Z)(i)?a=Promise.resolve(i):"string"==typeof i&&(a=window.fetch(i,{cache:e}).then((function(e){return e.json()})).catch((function(e){return console.error(e),null}))),[r,a]}))})).then((function(e){return e.reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];return e[o]=r,e}),{})}))},z=function(e){return Object.entries(e).reduce((function(e,t){var n=(0,s.Z)(t,2),o=n[0],r=n[1];switch(o){case"lightBg":return p(p({},e),{},{highlight:r});case"btnText":return p(p({},e),["","Panel","TopBar"].reduce((function(e,t){return p(p({},e),{},(0,i.Z)({},"btn"+t+"Text",r))}),{}));default:return p(p({},e),{},(0,i.Z)({},o,r))}}),{})},P=function(e,t){return Object.entries(e).reduce((function(e,n){var o=(0,s.Z)(n,2),a=o[0],u=o[1].reduce((function(e,n){return[].concat((0,r.Z)(e),[p(p({},n),{},{alpha:(s=n,a=s.color,(void 0===a?"#000000":a).startsWith("--")?(o=n,i=o.color,t[(0,c.AV)(i.substring(2).split(",")[0])]||1):n.alpha)})]);var o,i,s,a}),[]);return p(p({},e),{},(0,i.Z)({},a,u))}),{})},I=function(e){return E().then((function(t){return t[e]?t[e]:t["pleroma-dark"]})).then((function(e){var t=Array.isArray(e),n=t?{}:e.theme;if(t){var o=(0,u.wK)(e[1]),r=(0,u.wK)(e[2]),i=(0,u.wK)(e[3]),s=(0,u.wK)(e[4]),a=(0,u.wK)(e[5]||"#FF0000"),c=(0,u.wK)(e[6]||"#00FF00"),l=(0,u.wK)(e[7]||"#0000FF"),d=(0,u.wK)(e[8]||"#E3FF00");n.colors={bg:o,fg:r,text:i,link:s,cRed:a,cBlue:l,cGreen:c,cOrange:d}}return{theme:n,source:e.source}}))},x=function(e){return I(e).then((function(e){return m(e.theme)}))}},44551:(e,t,n)=>{"use strict";n.d(t,{em:()=>a,k0:()=>i,wB:()=>s});var o=n(97332),r=n(21865),i={undelay:null,topBar:null,badge:null,profileTint:null,fg:null,bg:"underlay",highlight:"bg",panel:"bg",popover:"bg",selectedMenu:"popover",btn:"bg",btnPanel:"panel",btnTopBar:"topBar",input:"bg",inputPanel:"panel",inputTopBar:"topBar",alert:"bg",alertPanel:"panel",poll:"bg",chatBg:"underlay",chatMessage:"chatBg"},s={profileTint:.5,alert:.5,input:.5,faint:.5,underlay:.15,alertPopup:.95},a={bg:{depends:[],opacity:"bg",priority:1},wallpaper:{depends:["bg"],color:function(e,t){return(0,o.Xu)(-2*e,t).rgb}},fg:{depends:[],priority:1},text:{depends:[],layer:"bg",opacity:null,priority:1},underlay:{default:"#000000",opacity:"underlay"},link:{depends:["accent"],priority:1},accent:{depends:["link"],priority:1},faint:{depends:["text"],opacity:"faint"},faintLink:{depends:["link"],opacity:"faint"},postFaintLink:{depends:["postLink"],opacity:"faint"},cBlue:"#0000ff",cRed:"#FF0000",cGreen:"#00FF00",cOrange:"#E3FF00",profileBg:{depends:["bg"],color:function(e,t){return{r:Math.floor(.53*t.r),g:Math.floor(.56*t.g),b:Math.floor(.59*t.b)}}},profileTint:{depends:["bg"],layer:"profileTint",opacity:"profileTint"},highlight:{depends:["bg"],color:function(e,t){return(0,o.Xu)(5*e,t).rgb}},highlightLightText:{depends:["lightText"],layer:"highlight",textColor:!0},highlightPostLink:{depends:["postLink"],layer:"highlight",textColor:"preserve"},highlightFaintText:{depends:["faint"],layer:"highlight",textColor:!0},highlightFaintLink:{depends:["faintLink"],layer:"highlight",textColor:"preserve"},highlightPostFaintLink:{depends:["postFaintLink"],layer:"highlight",textColor:"preserve"},highlightText:{depends:["text"],layer:"highlight",textColor:!0},highlightLink:{depends:["link"],layer:"highlight",textColor:"preserve"},highlightIcon:{depends:["highlight","highlightText"],color:function(e,t,n){return(0,r.a4)(t,n)}},popover:{depends:["bg"],opacity:"popover"},popoverLightText:{depends:["lightText"],layer:"popover",textColor:!0},popoverPostLink:{depends:["postLink"],layer:"popover",textColor:"preserve"},popoverFaintText:{depends:["faint"],layer:"popover",textColor:!0},popoverFaintLink:{depends:["faintLink"],layer:"popover",textColor:"preserve"},popoverPostFaintLink:{depends:["postFaintLink"],layer:"popover",textColor:"preserve"},popoverText:{depends:["text"],layer:"popover",textColor:!0},popoverLink:{depends:["link"],layer:"popover",textColor:"preserve"},popoverIcon:{depends:["popover","popoverText"],color:function(e,t,n){return(0,r.a4)(t,n)}},selectedPost:"--highlight",selectedPostFaintText:{depends:["highlightFaintText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLightText:{depends:["highlightLightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostPostLink:{depends:["highlightPostLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostFaintLink:{depends:["highlightFaintLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostText:{depends:["highlightText"],layer:"highlight",variant:"selectedPost",textColor:!0},selectedPostLink:{depends:["highlightLink"],layer:"highlight",variant:"selectedPost",textColor:"preserve"},selectedPostIcon:{depends:["selectedPost","selectedPostText"],color:function(e,t,n){return(0,r.a4)(t,n)}},selectedMenu:{depends:["bg"],color:function(e,t){return(0,o.Xu)(5*e,t).rgb}},selectedMenuLightText:{depends:["highlightLightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintText:{depends:["highlightFaintText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuFaintLink:{depends:["highlightFaintLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuText:{depends:["highlightText"],layer:"selectedMenu",variant:"selectedMenu",textColor:!0},selectedMenuLink:{depends:["highlightLink"],layer:"selectedMenu",variant:"selectedMenu",textColor:"preserve"},selectedMenuIcon:{depends:["selectedMenu","selectedMenuText"],color:function(e,t,n){return(0,r.a4)(t,n)}},selectedMenuPopover:{depends:["popover"],color:function(e,t){return(0,o.Xu)(5*e,t).rgb}},selectedMenuPopoverLightText:{depends:["selectedMenuLightText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintText:{depends:["selectedMenuFaintText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverFaintLink:{depends:["selectedMenuFaintLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverText:{depends:["selectedMenuText"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:!0},selectedMenuPopoverLink:{depends:["selectedMenuLink"],layer:"selectedMenuPopover",variant:"selectedMenuPopover",textColor:"preserve"},selectedMenuPopoverIcon:{depends:["selectedMenuPopover","selectedMenuText"],color:function(e,t,n){return(0,r.a4)(t,n)}},lightText:{depends:["text"],layer:"bg",textColor:"preserve",color:function(e,t){return(0,o.Xu)(20*e,t).rgb}},postLink:{depends:["link"],layer:"bg",textColor:"preserve"},postGreentext:{depends:["cGreen"],layer:"bg",textColor:"preserve"},postCyantext:{depends:["cBlue"],layer:"bg",textColor:"preserve"},border:{depends:["fg"],opacity:"border",color:function(e,t){return(0,o.Xu)(2*e,t).rgb}},poll:{depends:["accent","bg"],copacity:"poll",color:function(e,t,n){return(0,r.Tj)(t,.4,n)}},pollText:{depends:["text"],layer:"poll",textColor:!0},icon:{depends:["bg","text"],inheritsOpacity:!1,color:function(e,t,n){return(0,r.a4)(t,n)}},fgText:{depends:["text"],layer:"fg",textColor:!0},fgLink:{depends:["link"],layer:"fg",textColor:"preserve"},panel:{depends:["fg"],opacity:"panel"},panelText:{depends:["text"],layer:"panel",textColor:!0},panelFaint:{depends:["fgText"],layer:"panel",opacity:"faint",textColor:!0},panelLink:{depends:["fgLink"],layer:"panel",textColor:"preserve"},topBar:"--fg",topBarText:{depends:["fgText"],layer:"topBar",textColor:!0},topBarLink:{depends:["fgLink"],layer:"topBar",textColor:"preserve"},tab:{depends:["btn"]},tabText:{depends:["btnText"],layer:"btn",textColor:!0},tabActiveText:{depends:["text"],layer:"bg",textColor:!0},btn:{depends:["fg"],variant:"btn",opacity:"btn"},btnText:{depends:["fgText"],layer:"btn",textColor:!0},btnPanelText:{depends:["btnText"],layer:"btnPanel",variant:"btn",textColor:!0},btnTopBarText:{depends:["btnText"],layer:"btnTopBar",variant:"btn",textColor:!0},btnPressed:{depends:["btn"],layer:"btn"},btnPressedText:{depends:["btnText"],layer:"btn",variant:"btnPressed",textColor:!0},btnPressedPanel:{depends:["btnPressed"],layer:"btn"},btnPressedPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnPressed",textColor:!0},btnPressedTopBar:{depends:["btnPressed"],layer:"btn"},btnPressedTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnPressed",textColor:!0},btnToggled:{depends:["btn"],layer:"btn",color:function(e,t){return(0,o.Xu)(20*e,t).rgb}},btnToggledText:{depends:["btnText"],layer:"btn",variant:"btnToggled",textColor:!0},btnToggledPanelText:{depends:["btnPanelText"],layer:"btnPanel",variant:"btnToggled",textColor:!0},btnToggledTopBarText:{depends:["btnTopBarText"],layer:"btnTopBar",variant:"btnToggled",textColor:!0},btnDisabled:{depends:["btn","bg"],color:function(e,t,n){return(0,r.Tj)(t,.25,n)}},btnDisabledText:{depends:["btnText","btnDisabled"],layer:"btn",variant:"btnDisabled",color:function(e,t,n){return(0,r.Tj)(t,.25,n)}},btnDisabledPanelText:{depends:["btnPanelText","btnDisabled"],layer:"btnPanel",variant:"btnDisabled",color:function(e,t,n){return(0,r.Tj)(t,.25,n)}},btnDisabledTopBarText:{depends:["btnTopBarText","btnDisabled"],layer:"btnTopBar",variant:"btnDisabled",color:function(e,t,n){return(0,r.Tj)(t,.25,n)}},input:{depends:["fg"],opacity:"input"},inputText:{depends:["text"],layer:"input",textColor:!0},inputPanelText:{depends:["panelText"],layer:"inputPanel",variant:"input",textColor:!0},inputTopbarText:{depends:["topBarText"],layer:"inputTopBar",variant:"input",textColor:!0},alertError:{depends:["cRed"],opacity:"alert"},alertErrorText:{depends:["text"],layer:"alert",variant:"alertError",textColor:!0},alertErrorPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertError",textColor:!0},alertWarning:{depends:["cOrange"],opacity:"alert"},alertWarningText:{depends:["text"],layer:"alert",variant:"alertWarning",textColor:!0},alertWarningPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertWarning",textColor:!0},alertSuccess:{depends:["cGreen"],opacity:"alert"},alertSuccessText:{depends:["text"],layer:"alert",variant:"alertSuccess",textColor:!0},alertSuccessPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertSuccess",textColor:!0},alertNeutral:{depends:["text"],opacity:"alert"},alertNeutralText:{depends:["text"],layer:"alert",variant:"alertNeutral",color:function(e,t){return(0,o.Xp)(t).rgb},textColor:!0},alertNeutralPanelText:{depends:["panelText"],layer:"alertPanel",variant:"alertNeutral",textColor:!0},alertPopupError:{depends:["alertError"],opacity:"alertPopup"},alertPopupErrorText:{depends:["alertErrorText"],layer:"popover",variant:"alertPopupError",textColor:!0},alertPopupWarning:{depends:["alertWarning"],opacity:"alertPopup"},alertPopupWarningText:{depends:["alertWarningText"],layer:"popover",variant:"alertPopupWarning",textColor:!0},alertPopupSuccess:{depends:["alertSuccess"],opacity:"alertPopup"},alertPopupSuccessText:{depends:["alertSuccessText"],layer:"popover",variant:"alertPopupSuccess",textColor:!0},alertPopupNeutral:{depends:["alertNeutral"],opacity:"alertPopup"},alertPopupNeutralText:{depends:["alertNeutralText"],layer:"popover",variant:"alertPopupNeutral",textColor:!0},badgeNotification:"--cRed",badgeNotificationText:{depends:["text","badgeNotification"],layer:"badge",variant:"badgeNotification",textColor:"bw"},badgeNeutral:"--cGreen",badgeNeutralText:{depends:["text","badgeNeutral"],layer:"badge",variant:"badgeNeutral",textColor:"bw"},chatBg:{depends:["bg"]},chatMessageIncomingBg:{depends:["chatBg"]},chatMessageIncomingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:!0},chatMessageIncomingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageIncomingBg",textColor:"preserve"},chatMessageIncomingBorder:{depends:["border"],opacity:"border",color:function(e,t){return(0,o.Xu)(2*e,t).rgb}},chatMessageOutgoingBg:{depends:["chatMessageIncomingBg"],color:function(e,t){return(0,o.Xu)(5*e,t).rgb}},chatMessageOutgoingText:{depends:["text"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:!0},chatMessageOutgoingLink:{depends:["link"],layer:"chatMessage",variant:"chatMessageOutgoingBg",textColor:"preserve"},chatMessageOutgoingBorder:{depends:["chatMessageOutgoingBg"],opacity:"border",color:function(e,t){return(0,o.Xu)(2*e,t).rgb}}}},40454:(e,t,n)=>{"use strict";n.d(t,{AQ:()=>y,AV:()=>v,EC:()=>_,NI:()=>D,we:()=>p,xb:()=>h});var o=n(4942),r=n(29439),i=n(71002),s=n(93433),a=n(97332),u=n(21865),c=n(44551);function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function d(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var p=3,m=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.k0,n=[e],o=t[e];o;)n.unshift(o),o=t[o];return n},h=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0;return m(e).map((function(i){return[i===e?o[t]:o[i],i===e?r[n]||1:r[i]]}))},f=function(e,t){var n=t[e];if("string"==typeof n&&n.startsWith("--"))return[n.substring(2)];if(null===n)return[];var o=n.depends,r=n.layer,i=n.variant,a=r?m(r).map((function(e){return e===r?i||r:e})):[];return Array.isArray(o)?[].concat((0,s.Z)(o),(0,s.Z)(a)):(0,s.Z)(a)},g=function(e){return"object"===(0,i.Z)(e)?e:{depends:e.startsWith("--")?[e.substring(2)]:[],default:e.startsWith("#")?e:void 0}},v=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.em,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:f,o=g(t[e]);if(null!==o.opacity){if(o.opacity)return o.opacity;var r=function o(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],a=n(r,t)[0];if(void 0!==a){var u=t[a];if(void 0!==u)return u.opacity||null===u?u.opacity:u.depends&&i.includes(a)?o(a,[].concat((0,s.Z)(i),[a])):null}};return o.depends?r(e):void 0}},w=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.em,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:f,o=g(t[e]);if(c.k0[e])return e;if(null!==o.layer){if(o.layer)return o.layer;var r=function o(r){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[e],a=n(r,t)[0];if(void 0!==a){var u=t[a];if(void 0!==u)return u.layer||null===u?u.layer:u.depends?o(u,[].concat((0,s.Z)(i),[a])):null}};return o.depends?r(e):void 0}},b=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c.em,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f,n=Object.keys(e),o=new Set(n),r=new Set,i=new Set,s=[].concat(n),a=[],u=function n(s){if(o.has(s))o.delete(s),r.add(s),t(s,e).forEach(n),r.delete(s),i.add(s),a.push(s);else if(r.has(s))console.debug("Cyclic depenency in topoSort, ignoring"),a.push(s);else if(!i.has(s))throw new Error("Unintended condition in topoSort!")};s.length>0;)u(s.pop());return a.map((function(e,t){return{data:e,index:t}})).sort((function(n,o){var r=n.data,i=n.index,s=o.data,a=o.index,u=t(r,e).length,c=t(s,e).length;return u===c||0!==c&&0!==u?i-a:0===u&&0!==c?-1:0===c&&0!==u?1:0})).map((function(e){return e.data}))}(Object.entries(c.em).sort((function(e,t){var n=(0,r.Z)(e,2),o=(n[0],n[1]),i=(0,r.Z)(t,2),s=(i[0],i[1]);return(o&&o.priority||0)-(s&&s.priority||0)})).reduce((function(e,t){var n=(0,r.Z)(t,2),i=n[0],s=n[1];return d(d({},e),{},(0,o.Z)({},i,s))}),{})),y=Object.entries(c.em).reduce((function(e,t){var n=(0,r.Z)(t,2),i=n[0],a=(n[1],v(i,c.em,f));return a?d(d({},e),{},(0,o.Z)({},a,{defaultValue:c.wB[a]||1,affectedSlots:[].concat((0,s.Z)(e[a]&&e[a].affectedSlots||[]),[i])})):e}),{}),D=function(e,t,n){if("string"!=typeof e||!e.startsWith("--"))return e;var o=null,i=e.split(/,/g).map((function(e){return e.trim()})),s=(0,r.Z)(i,2),u=s[0],c=s[1];return o=t(u.substring(2)),c&&(o=(0,a.Xu)(Number.parseFloat(c)*n,o).rgb),o},_=function(e,t){return b.reduce((function(n,r){var i,l=n.colors,p=n.opacity,m=e[r],b=g(c.em[r]),_=f(r,c.em),k=!!b.textColor,C=b.variant||b.layer;i=k?(0,u.Rx)(d({},l[_[0]]||(0,a.OQ)(e[r]||"#FF00FF").rgb),h(w(r)||"bg",C||"bg",v(C),l,p)):C&&C!==r?l[C]||(0,a.OQ)(e[C]).rgb:l.bg||(0,a.OQ)(e.bg);var S=(0,u.ov)(i)<.5?1:-1,j=null;if(m){var F=m;if("transparent"===F){var A=h(w(r),r,v(r)||r,l,p).slice(0,-1);F=d(d({},(0,u.Rx)((0,a.OQ)("#FF00FF").rgb,A)),{},{a:0})}else"string"==typeof m&&m.startsWith("--")?F=D(m,(function(t){return l[t]||e[t]}),S):"string"==typeof m&&m.startsWith("#")&&(F=(0,a.OQ)(F).rgb);j=d({},F)}else if(b.default)j=(0,a.OQ)(b.default).rgb;else{var O=b.color||function(e,t){return d({},t)};if(b.textColor)if("bw"===b.textColor)j=(0,a.wo)(i).rgb;else{var E=d({},l[_[0]]);b.color&&(E=O.apply(void 0,[S].concat((0,s.Z)(_.map((function(e){return d({},l[e])})))))),j=(0,u.uu)(i,d({},E),"preserve"===b.textColor)}else j=O.apply(void 0,[S].concat((0,s.Z)(_.map((function(e){return d({},l[e])})))))}if(!j)throw new Error("Couldn't generate color for "+r);var z=b.opacity||v(r),P=b.opacity;if(null===P)j.a=1;else if("transparent"===m)j.a=0;else{var I=P&&void 0!==t[z],x=_[0],T=x&&l[x];P||!T||b.textColor||null===P?T||z?T&&0===T.a?j.a=0:j.a=Number(I?t[z]:(y[z]||{}).defaultValue):delete j.a:j.a=T.a}return(Number.isNaN(j.a)||void 0===j.a)&&(j.a=1),z?{colors:d(d({},l),{},(0,o.Z)({},r,j)),opacity:d(d({},p),{},(0,o.Z)({},z,j.a))}:{colors:d(d({},l),{},(0,o.Z)({},r,j)),opacity:p}}),{colors:{},opacity:{}})}},95052:(e,t,n)=>{"use strict";n.d(t,{M:()=>u,q:()=>a});var o=n(4942),r=n(21865);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var a=function(e){if(void 0!==e){var t=e.color,n=e.type;if("string"==typeof t){var o=(0,r.wK)(t);if(null!=o){var i="rgb(".concat(Math.floor(o.r),", ").concat(Math.floor(o.g),", ").concat(Math.floor(o.b),")"),a="rgba(".concat(Math.floor(o.r),", ").concat(Math.floor(o.g),", ").concat(Math.floor(o.b),", .1)"),u="rgba(".concat(Math.floor(o.r),", ").concat(Math.floor(o.g),", ").concat(Math.floor(o.b),", .2)"),c={"--____highlight-solidColor":i,"--____highlight-tintColor":a,"--____highlight-tintColor2":u};return"striped"===n?s({backgroundImage:["repeating-linear-gradient(135deg,","".concat(a," ,"),"".concat(a," 20px,"),"".concat(u," 20px,"),"".concat(u," 40px")].join(" "),backgroundPosition:"0 0"},c):"solid"===n?s({backgroundColor:u},c):"side"===n?s({backgroundImage:["linear-gradient(to right,","".concat(i," ,"),"".concat(i," 2px,"),"transparent 6px"].join(" "),backgroundPosition:"0 0"},c):void 0}}}},u=function(e){return"USER____"+e.screen_name.replace(/\./g,"_").replace(/@/g,"_AT_")}},4493:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var o=n(64721),r=n.n(o);const i=function(e,t,n){var o=!t||function(e){return e&&e.includes("@")}(t)||r()(n,t);return{name:o?"external-user-profile":"user-profile",params:o?{id:e}:{name:t}}}},66596:(e,t,n)=>{"use strict";n.d(t,{Z:()=>W});var o=n(66252),r=n(3577),i=n(49963),s=["href","alt","title"],a={key:1,class:"attachment-buttons"},u=["placeholder"],c={key:1},l={class:"attachment-wrapper"},d=["href","alt","title"],p=["src"],m={key:1,class:"attachment-buttons"},h=["title"],f=["title"],g=["title"],v=["title"],w=["title"],b=["title"],y=["title"],D=["href"],_=["href"],k={key:0},C=["href"],S=["src","alt","title"],j={key:0,class:"image"},F=["src"],A={class:"text"},O=["href"],E=["innerHTML"],z=["href"],P=["placeholder"],I={key:1},x=n(4942),T=n(32140),$=n(72884),B=n(34133);const U=n.p+"static/img/nsfw.2958239.png";var M=n(58394),L=n(989),R=n(9382),q=n(84131);function N(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}R.vI.add(q.gMD,q.Xig,q.VmB,q.IyC,q.aQp,q.NBC,q.Bg$,q.N7g,q.I7k,q.UJf,q.S3c);const Z={props:["attachment","compact","description","hideDescription","nsfw","size","setMedia","remove","shiftUp","shiftDn","edit"],data:function(){return{localDescription:this.description||this.attachment.description,nsfwImage:this.$store.state.instance.nsfwCensorImage||U,hideNsfwLocal:this.$store.getters.mergedConfig.hideNsfw,preloadImage:this.$store.getters.mergedConfig.preloadImage,loading:!1,img:"image"===M.ZP.fileType(this.attachment.mimetype)&&document.createElement("img"),modalOpen:!1,showHidden:!1,flashLoaded:!1,showDescription:!1}},components:{Flash:$.Z,StillImage:T.Z,VideoAttachment:B.Z},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?N(Object(n),!0).forEach((function(t){(0,x.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):N(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({classNames:function(){return[{"-loading":this.loading,"-nsfw-placeholder":this.hidden,"-editable":void 0!==this.edit,"-compact":this.compact},"-type-"+this.type,this.size&&"-size-"+this.size,"-".concat(this.useContainFit?"contain":"cover","-fit")]},usePlaceholder:function(){return"hide"===this.size},useContainFit:function(){return this.$store.getters.mergedConfig.useContainFit},placeholderName:function(){return""!==this.attachment.description&&this.attachment.description?this.attachment.description:this.type.toUpperCase()},placeholderIconClass:function(){return"image"===this.type?"image":"video"===this.type?"video":"audio"===this.type?"music":"file"},referrerpolicy:function(){return this.$store.state.instance.mediaProxyAvailable?"":"no-referrer"},type:function(){return M.ZP.fileType(this.attachment.mimetype)},hidden:function(){return this.nsfw&&this.hideNsfwLocal&&!this.showHidden},isEmpty:function(){return"html"===this.type&&!this.attachment.oembed},useModal:function(){var e=[];switch(this.size){case"hide":case"small":e=["image","video","audio","flash"];break;default:e=this.mergedConfig.playVideosInModal?["image","video","flash"]:["image"]}return e.includes(this.type)},videoTag:function(){return this.useModal?"button":"span"}},(0,L.Se)(["mergedConfig"])),watch:{"attachment.description":function(e){this.localDescription=e},localDescription:function(e){this.onEdit(e)}},methods:{linkClicked:function(e){var t=e.target;"A"===t.tagName&&window.open(t.href,"_blank")},openModal:function(e){this.useModal?(this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)):"unknown"===this.type&&window.open(this.attachment.url)},openModalForce:function(e){this.$emit("setMedia"),this.$store.dispatch("setCurrentMedia",this.attachment)},onEdit:function(e){this.edit&&this.edit(this.attachment,e)},onRemove:function(){this.remove&&this.remove(this.attachment)},onShiftUp:function(){this.shiftUp&&this.shiftUp(this.attachment)},onShiftDn:function(){this.shiftDn&&this.shiftDn(this.attachment)},stopFlash:function(){this.$refs.flash.closePlayer()},setFlashLoaded:function(e){this.flashLoaded=e},toggleDescription:function(){this.showDescription=!this.showDescription},toggleHidden:function(e){var t=this;!this.mergedConfig.useOneClickNsfw||this.showHidden||"video"===this.type&&!this.mergedConfig.playVideosInModal?this.img&&!this.preloadImage?this.img.onload?this.img.onload():(this.loading=!0,this.img.src=this.attachment.url,this.img.onload=function(){t.loading=!1,t.showHidden=!t.showHidden}):this.showHidden=!this.showHidden:this.openModal(e)},onImageLoad:function(e){var t=e.naturalWidth,n=e.naturalHeight;this.$emit("naturalSizeLoad",{id:this.attachment.id,width:t,height:n})}}},W=(0,n(83744).Z)(Z,[["render",function(e,t,n,x,T,$){var B=(0,o.up)("FAIcon"),U=(0,o.up)("StillImage"),M=(0,o.up)("VideoAttachment"),L=(0,o.up)("Flash");return e.usePlaceholder?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,r.C_)(["Attachment -placeholder button-unstyled",e.classNames]),onClick:t[4]||(t[4]=function(){return e.openModal&&e.openModal.apply(e,arguments)})},["html"!==e.type?((0,o.wg)(),(0,o.iD)("a",{key:0,class:"placeholder",target:"_blank",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[0]||(t[0]=(0,i.iM)((function(){}),["prevent"]))},[(0,o.Wm)(B,{icon:e.placeholderIconClass},null,8,["icon"]),(0,o._)("b",null,(0,r.zw)(e.nsfw?"NSFW / ":""),1),(0,o.Uk)((0,r.zw)(e.edit?"":e.placeholderName),1)],8,s)):(0,o.kq)("",!0),e.edit||e.remove?((0,o.wg)(),(0,o.iD)("div",a,[e.remove?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-unstyled attachment-button",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.onRemove&&e.onRemove.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(B,{icon:"trash-alt"})])):(0,o.kq)("",!0)])):(0,o.kq)("",!0),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription||e.showDescription)?((0,o.wg)(),(0,o.iD)("div",{key:2,class:(0,r.C_)(["description-container",{"-static":!e.edit}])},[e.edit?(0,o.wy)(((0,o.wg)(),(0,o.iD)("input",{key:0,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.localDescription=t}),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[3]||(t[3]=(0,i.D2)((0,i.iM)((function(){}),["prevent"]),["enter"]))},null,40,u)),[[i.nr,e.localDescription]]):((0,o.wg)(),(0,o.iD)("p",c,(0,r.zw)(e.localDescription),1))],2)):(0,o.kq)("",!0)],2)):((0,o.wg)(),(0,o.iD)("div",{key:1,class:(0,r.C_)(["Attachment",e.classNames])},[(0,o.wy)((0,o._)("div",l,[e.hidden?((0,o.wg)(),(0,o.iD)("a",{key:0,class:"image-container",href:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,onClick:t[5]||(t[5]=(0,i.iM)((function(){return e.toggleHidden&&e.toggleHidden.apply(e,arguments)}),["prevent","stop"]))},[((0,o.wg)(),(0,o.iD)("img",{key:e.nsfwImage,class:"nsfw",src:e.nsfwImage},null,8,p)),"video"===e.type?((0,o.wg)(),(0,o.j4)(B,{key:0,class:"play-icon",icon:"play-circle"})):(0,o.kq)("",!0)],8,d)):(0,o.kq)("",!0),e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",m,["flash"===e.type&&e.flashLoaded?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-unstyled attachment-button",title:e.$t("status.attachment_stop_flash"),onClick:t[6]||(t[6]=(0,i.iM)((function(){return e.stopFlash&&e.stopFlash.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(B,{icon:"stop"})],8,h)):(0,o.kq)("",!0),e.attachment.description&&"small"!==e.size&&!e.edit&&"unknown"!==e.type?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_description"),onClick:t[7]||(t[7]=(0,i.iM)((function(){return e.toggleDescription&&e.toggleDescription.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(B,{icon:"align-right"})],8,f)):(0,o.kq)("",!0),e.useModal||"unknown"===e.type?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-unstyled attachment-button",title:e.$t("status.show_attachment_in_modal"),onClick:t[8]||(t[8]=(0,i.iM)((function(){return e.openModalForce&&e.openModalForce.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(B,{icon:"search-plus"})],8,g)),e.nsfw&&e.hideNsfwLocal?((0,o.wg)(),(0,o.iD)("button",{key:3,class:"button-unstyled attachment-button",title:e.$t("status.hide_attachment"),onClick:t[9]||(t[9]=(0,i.iM)((function(){return e.toggleHidden&&e.toggleHidden.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(B,{icon:"times"})],8,v)):(0,o.kq)("",!0),e.shiftUp?((0,o.wg)(),(0,o.iD)("button",{key:4,class:"button-unstyled attachment-button",title:e.$t("status.move_up"),onClick:t[10]||(t[10]=(0,i.iM)((function(){return e.onShiftUp&&e.onShiftUp.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(B,{icon:"chevron-left"})],8,w)):(0,o.kq)("",!0),e.shiftDn?((0,o.wg)(),(0,o.iD)("button",{key:5,class:"button-unstyled attachment-button",title:e.$t("status.move_down"),onClick:t[11]||(t[11]=(0,i.iM)((function(){return e.onShiftDn&&e.onShiftDn.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(B,{icon:"chevron-right"})],8,b)):(0,o.kq)("",!0),e.remove?((0,o.wg)(),(0,o.iD)("button",{key:6,class:"button-unstyled attachment-button",title:e.$t("status.remove_attachment"),onClick:t[12]||(t[12]=(0,i.iM)((function(){return e.onRemove&&e.onRemove.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(B,{icon:"trash-alt"})],8,y)):(0,o.kq)("",!0)])),"image"!==e.type||e.hidden&&!e.preloadImage?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("a",{key:2,class:(0,r.C_)(["image-container",{"-hidden":e.hidden&&e.preloadImage}]),href:e.attachment.url,target:"_blank",onClick:t[13]||(t[13]=(0,i.iM)((function(){return e.openModal&&e.openModal.apply(e,arguments)}),["stop","prevent"]))},[(0,o.Wm)(U,{class:"image",referrerpolicy:e.referrerpolicy,mimetype:e.attachment.mimetype,src:e.attachment.large_thumb_url||e.attachment.url,"image-load-handler":e.onImageLoad,alt:e.attachment.description},null,8,["referrerpolicy","mimetype","src","image-load-handler","alt"])],10,D)),"unknown"!==e.type||e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("a",{key:3,class:"placeholder-container",href:e.attachment.url,target:"_blank"},[(0,o.Wm)(B,{size:e.compact?"2x":"5x",icon:e.placeholderIconClass,title:e.localDescription},null,8,["size","icon","title"]),e.compact?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("p",k,(0,r.zw)(e.localDescription),1))],8,_)),"video"!==e.type||e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)((0,o.LL)(e.videoTag),{key:4,class:(0,r.C_)(["video-container",{"button-unstyled":"isModal"}]),href:e.attachment.url,onClick:(0,i.iM)(e.openModal,["stop","prevent"])},{default:(0,o.w5)((function(){return[(0,o.Wm)(M,{class:"video",attachment:e.attachment,controls:!e.useModal,onPlay:t[14]||(t[14]=function(t){return e.$emit("play")}),onPause:t[15]||(t[15]=function(t){return e.$emit("pause")})},null,8,["attachment","controls"]),e.useModal?((0,o.wg)(),(0,o.j4)(B,{key:0,class:"play-icon",icon:"play-circle"})):(0,o.kq)("",!0)]})),_:1},8,["href","onClick"])),"audio"!==e.type||e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("span",{key:5,class:"audio-container",href:e.attachment.url,onClick:t[18]||(t[18]=(0,i.iM)((function(){return e.openModal&&e.openModal.apply(e,arguments)}),["stop","prevent"]))},["audio"===e.type?((0,o.wg)(),(0,o.iD)("audio",{key:0,src:e.attachment.url,alt:e.attachment.description,title:e.attachment.description,controls:"",onPlay:t[16]||(t[16]=function(t){return e.$emit("play")}),onPause:t[17]||(t[17]=function(t){return e.$emit("pause")})},null,40,S)):(0,o.kq)("",!0)],8,C)),"html"===e.type&&e.attachment.oembed?((0,o.wg)(),(0,o.iD)("div",{key:6,class:"oembed-container",onClick:t[19]||(t[19]=(0,i.iM)((function(){return e.linkClicked&&e.linkClicked.apply(e,arguments)}),["prevent"]))},[e.attachment.thumb_url?((0,o.wg)(),(0,o.iD)("div",j,[(0,o._)("img",{src:e.attachment.thumb_url},null,8,F)])):(0,o.kq)("",!0),(0,o._)("div",A,[(0,o._)("h1",null,[(0,o._)("a",{href:e.attachment.url},(0,r.zw)(e.attachment.oembed.title),9,O)]),(0,o._)("div",{innerHTML:e.attachment.oembed.oembedHTML},null,8,E)])])):(0,o.kq)("",!0),"flash"!==e.type||e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("span",{key:7,class:"flash-container",href:e.attachment.url,onClick:t[22]||(t[22]=(0,i.iM)((function(){return e.openModal&&e.openModal.apply(e,arguments)}),["stop","prevent"]))},[(0,o.Wm)(L,{ref:"flash",class:"flash",src:e.attachment.large_thumb_url||e.attachment.url,onPlayerOpened:t[20]||(t[20]=function(t){return e.setFlashLoaded(!0)}),onPlayerClosed:t[21]||(t[21]=function(t){return e.setFlashLoaded(!1)})},null,8,["src"])],8,z))],512),[[i.F8,!e.isEmpty]]),"hide"!==e.size&&!e.hideDescription&&(e.edit||e.localDescription&&e.showDescription)?((0,o.wg)(),(0,o.iD)("div",{key:0,class:(0,r.C_)(["description-container",{"-static":!e.edit}])},[e.edit?(0,o.wy)(((0,o.wg)(),(0,o.iD)("input",{key:0,"onUpdate:modelValue":t[23]||(t[23]=function(t){return e.localDescription=t}),type:"text",class:"description-field",placeholder:e.$t("post_status.media_description"),onKeydown:t[24]||(t[24]=(0,i.D2)((0,i.iM)((function(){}),["prevent"]),["enter"]))},null,40,P)),[[i.nr,e.localDescription]]):((0,o.wg)(),(0,o.iD)("p",I,(0,r.zw)(e.localDescription),1))],2)):(0,o.kq)("",!0)],2))}]])},19066:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=n(66252),r={class:"avatars"},i=n(48173),s=n(4493);const a={props:["users"],computed:{slicedUsers:function(){return this.users?this.users.slice(0,15):[]}},components:{UserAvatar:i.default},methods:{userProfileLink:function(e){return(0,s.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},u=(0,n(83744).Z)(a,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("UserAvatar"),c=(0,o.up)("router-link");return(0,o.wg)(),(0,o.iD)("div",r,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.slicedUsers,(function(t){return(0,o.wg)(),(0,o.j4)(c,{key:t.id,to:e.userProfileLink(t),class:"avatars-item"},{default:(0,o.w5)((function(){return[(0,o.Wm)(u,{user:t,class:"avatar-small"},null,8,["user"])]})),_:2},1032,["to"])})),128))])}]])},29076:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var o=n(66252),r=n(49963),i={class:"basic-user-card"},s={class:"basic-user-card-collapsed-content"},a=["title"],u=n(22588),c=n(48173),l=n(12061),d=n(92820),p=n(4493);const m={props:["user"],components:{UserPopover:u.default,UserAvatar:c.default,RichContent:d.Z,UserLink:l.Z},methods:{userProfileLink:function(e){return(0,p.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},h=(0,n(83744).Z)(m,[["render",function(e,t,n,u,c,l){var d=(0,o.up)("UserAvatar"),p=(0,o.up)("UserPopover"),m=(0,o.up)("router-link"),h=(0,o.up)("RichContent"),f=(0,o.up)("user-link");return(0,o.wg)(),(0,o.iD)("div",i,[(0,o.Wm)(m,{to:e.userProfileLink(e.user),onClick:t[1]||(t[1]=(0,r.iM)((function(){}),["prevent"]))},{default:(0,o.w5)((function(){return[(0,o.Wm)(p,{"user-id":e.user.id,"overlay-centers":!0,"overlay-centers-selector":".avatar"},{default:(0,o.w5)((function(){return[(0,o.Wm)(d,{class:"user-avatar avatar",user:e.user,onClick:t[0]||(t[0]=(0,r.iM)((function(){}),["prevent"]))},null,8,["user"])]})),_:1},8,["user-id"])]})),_:1},8,["to"]),(0,o._)("div",s,[(0,o._)("div",{title:e.user.name,class:"basic-user-card-user-name"},[(0,o.Wm)(h,{class:"basic-user-card-user-name-value",html:e.user.name,emoji:e.user.emoji},null,8,["html","emoji"])],8,a),(0,o._)("div",null,[(0,o.Wm)(f,{class:"basic-user-card-screen-name",user:e.user},null,8,["user"])]),(0,o.WI)(e.$slots,"default")])])}]])},66141:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=n(66252),r=n(3577),i=["disabled","checked","indeterminate"],s={key:0,class:"label"};const a={props:["modelValue","indeterminate","disabled"],emits:["update:modelValue"],data:function(e){return{indeterminateTransitionFix:e.indeterminate}},watch:{indeterminate:function(e){e&&(this.indeterminateTransitionFix=!0)}},methods:{onTransitionEnd:function(e){this.indeterminate||(this.indeterminateTransitionFix=!1)}}},u=(0,n(83744).Z)(a,[["render",function(e,t,n,a,u,c){return(0,o.wg)(),(0,o.iD)("label",{class:(0,r.C_)(["checkbox",{disabled:n.disabled,indeterminate:n.indeterminate,"indeterminate-fix":e.indeterminateTransitionFix}])},[(0,o._)("input",{type:"checkbox",class:"visible-for-screenreader-only",disabled:n.disabled,checked:n.modelValue,indeterminate:n.indeterminate,onChange:t[0]||(t[0]=function(t){return e.$emit("update:modelValue",t.target.checked)})},null,40,i),(0,o._)("i",{class:"checkbox-indicator","aria-hidden":!0,onTransitionendCapture:t[1]||(t[1]=function(){return c.onTransitionEnd&&c.onTransitionEnd.apply(c,arguments)})},null,32),e.$slots.default?((0,o.wg)(),(0,o.iD)("span",s,[(0,o.WI)(e.$slots,"default")])):(0,o.kq)("",!0)],2)}]])},1447:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=n(66252),r=n(3577),i=n(49963),s=["textContent"],a=["textContent"],u=["textContent"];const c={components:{DialogModal:n(71113).Z},props:{title:{type:String},cancelText:{type:String},confirmText:{type:String}},computed:{},methods:{onCancel:function(){this.$emit("cancelled")},onAccept:function(){this.$emit("accepted")}}},l=(0,n(83744).Z)(c,[["render",function(e,t,n,c,l,d){var p=(0,o.up)("dialog-modal"),m=(0,o.Q2)("body-scroll-lock");return(0,o.wy)(((0,o.wg)(),(0,o.j4)(p,{class:"confirm-modal","on-cancel":e.onCancel},{header:(0,o.w5)((function(){return[(0,o._)("span",{textContent:(0,r.zw)(e.title)},null,8,s)]})),footer:(0,o.w5)((function(){return[(0,o._)("button",{class:"btn button-default",onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.onAccept&&e.onAccept.apply(e,arguments)}),["prevent"])),textContent:(0,r.zw)(e.confirmText)},null,8,a),(0,o._)("button",{class:"btn button-default",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.onCancel&&e.onCancel.apply(e,arguments)}),["prevent"])),textContent:(0,r.zw)(e.cancelText)},null,8,u)]})),default:(0,o.w5)((function(){return[(0,o.WI)(e.$slots,"default")]})),_:3},8,["on-cancel"])),[[m,!0]])}]])},71113:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var o=n(66252),r=n(3577),i=n(49963),s={class:"panel-heading dialog-modal-heading"},a={class:"title"},u={class:"dialog-modal-content"},c={class:"dialog-modal-footer user-interactions panel-footer"};const l={props:{darkOverlay:{default:!0,type:Boolean},onCancel:{default:function(){},type:Function}}},d=(0,n(83744).Z)(l,[["render",function(e,t,n,l,d,p){return(0,o.wg)(),(0,o.iD)("span",{class:(0,r.C_)({"dark-overlay":e.darkOverlay}),onClick:t[1]||(t[1]=(0,i.iM)((function(t){return e.onCancel()}),["self","stop"]))},[(0,o._)("div",{class:"dialog-modal panel panel-default",onClick:t[0]||(t[0]=(0,i.iM)((function(){}),["stop"]))},[(0,o._)("div",s,[(0,o._)("div",a,[(0,o.WI)(e.$slots,"header")])]),(0,o._)("div",u,[(0,o.WI)(e.$slots,"default")]),(0,o._)("div",c,[(0,o.WI)(e.$slots,"footer")])])],2)}]])},88671:(e,t,n)=>{"use strict";n.d(t,{Z:()=>J});var o=n(66252),r=n(3577),i=n(49963),s={ref:"hiddenOverlayCaret",class:"caret"},a=["title"],u=["id"],c=["id","aria-label","aria-selected","onClick"],l={class:"image"},d=["src"],p={key:1},m={class:"label"},h={key:0,class:"displayText"},f={key:1,class:"displayText"},g={class:"detailText"},v=n(4942),w=n(44925),b=n(15861),y=n(93433),D=n(69572),_=n.n(D),k=n(64687),C=n.n(k),S=n(13311),j=n.n(S),F=n(54061),A=n.n(F),O=function(e){return A()(e,(function(e,t){var n={word:t,start:0,end:t.length};if(e.length>0){var o=e.pop();n.start+=o.end,n.end+=o.end,e.push(o)}return e.push(n),e}),[])},E=function(e){for(var t=[],n="",o=0;o<e.length;o++){var r=e[o];n?!!r.trim()==!!n.trim()?n+=r:(t.push(n),n=r):n=r}return n&&t.push(n),t};const z=function(e,t){var n=E(e),o=O(n);return j()(o,(function(e){var n=e.start,o=e.end;return n<=t&&o>t}))},P=function(e,t,n){return e.slice(0,t.start)+n+e.slice(t.end)};var I=n(53599),x=n(91300),T=n(84535),$=["aria-live"];const B={props:{ariaLive:{type:String,defualt:"assertive"}},data:function(){return{currentText:""}},methods:{announce:function(e){var t=this;this.currentText=e,setTimeout((function(){t.currentText=""}),1e3)}}};var U=n(83744);const M=(0,U.Z)(B,[["render",function(e,t,n,i,s,a){return(0,o.wg)(),(0,o.iD)("div",{class:"visible-for-screenreader-only","aria-live":e.ariaLive},(0,r.zw)(e.currentText),9,$)}]]);var L,R=n(42262),q=n(67952),N=n(8312),Z=n(9382),W=n(5737),H=["imageUrl"];function V(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function K(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?V(Object(n),!0).forEach((function(t){(0,v.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):V(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function G(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}Z.vI.add(W.RKn);const Y={emits:["update:modelValue","shown"],props:{suggest:{required:!0,type:Function},modelValue:{required:!0,type:String},enableEmojiPicker:{required:!1,type:Boolean,default:!1},hideEmojiButton:{required:!1,type:Boolean,default:!1},enableStickerPicker:{required:!1,type:Boolean,default:!1},placement:{required:!1,type:String,default:"auto"},newlineOnCtrlEnter:{required:!1,type:Boolean,default:!1}},data:function(){return{randomSeed:(0,I.Z)(),input:void 0,caretEl:void 0,highlighted:-1,caret:0,focused:!1,blurTimeout:null,temporarilyHideSuggestions:!1,disableClickOutside:!1,suggestions:[],overlayStyle:{},pickerShown:!1}},components:{Popover:T.default,EmojiPicker:x.Z,UnicodeDomainIndicator:R.Z,ScreenReaderNotice:M},computed:{padEmoji:function(){return this.$store.getters.mergedConfig.padEmoji},defaultCandidateIndex:function(){return this.$store.getters.mergedConfig.autocompleteSelect?0:-1},preText:function(){return this.modelValue.slice(0,this.caret)},postText:function(){return this.modelValue.slice(this.caret)},showSuggestions:function(){return this.focused&&this.suggestions&&this.suggestions.length>0&&!this.pickerShown&&!this.temporarilyHideSuggestions},textAtCaret:function(){var e;return null===(e=this.wordAtCaret)||void 0===e?void 0:e.word},wordAtCaret:function(){if(this.modelValue&&this.caret)return z(this.modelValue,this.caret-1)||{}},languages:function(){return(0,N.ensureFinalFallback)(this.$store.getters.mergedConfig.interfaceLanguage)},maybeLocalizedEmojiNamesAndKeywords:function(){var e=this;return function(t){var n=[t.displayText],o=[];return t.displayTextI18n&&n.push(e.$t(t.displayTextI18n.key,t.displayTextI18n.args)),t.annotations&&e.languages.forEach((function(e){var r,i;n.push(null===(r=t.annotations[e])||void 0===r?void 0:r.name),o.push.apply(o,(0,y.Z)((null===(i=t.annotations[e])||void 0===i?void 0:i.keywords)||[]))})),{names:n.filter((function(e){return e})),keywords:o.filter((function(e){return e}))}}},maybeLocalizedEmojiName:function(){var e=this;return function(t){if(!t.annotations)return t.displayText;if(t.displayTextI18n)return e.$t(t.displayTextI18n.key,t.displayTextI18n.args);var n,o=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return G(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?G(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}(e.languages);try{for(o.s();!(n=o.n()).done;){var r,i=n.value;if(null!==(r=t.annotations[i])&&void 0!==r&&r.name)return t.annotations[i].name}}catch(e){o.e(e)}finally{o.f()}return t.displayText}},onInputScroll:function(){this.$refs.hiddenOverlay.scrollTo({top:this.input.scrollTop,left:this.input.scrollLeft})},suggestionListId:function(){return"suggestions-".concat(this.randomSeed)},suggestionItemId:function(){var e=this;return function(t){return"suggestion-item-".concat(t,"-").concat(e.randomSeed)}}},mounted:function(){var e=this.$refs,t=e.root,n=e.hiddenOverlayCaret,o=e.suggestorPopover,r=t.querySelector(".emoji-input > input")||t.querySelector(".emoji-input > textarea");if(r){this.input=r,this.caretEl=n,o.setAnchorEl?(o.setAnchorEl(this.caretEl),this.$refs.picker.setAnchorEl(this.caretEl)):console.warn("setAnchorEl not found, are we in a unit test?");var i=getComputedStyle(this.input);this.overlayStyle.padding=i.padding,this.overlayStyle.border=i.border,this.overlayStyle.margin=i.margin,this.overlayStyle.lineHeight=i.lineHeight,this.overlayStyle.fontFamily=i.fontFamily,this.overlayStyle.fontSize=i.fontSize,this.overlayStyle.wordWrap=i.wordWrap,this.overlayStyle.whiteSpace=i.whiteSpace,this.resize(),r.addEventListener("blur",this.onBlur),r.addEventListener("focus",this.onFocus),r.addEventListener("paste",this.onPaste),r.addEventListener("keyup",this.onKeyUp),r.addEventListener("keydown",this.onKeyDown),r.addEventListener("click",this.onClickInput),r.addEventListener("transitionend",this.onTransition),r.addEventListener("input",this.onInput),r.addEventListener("scroll",this.onInputScroll)}},unmounted:function(){var e=this.input;e&&(e.removeEventListener("blur",this.onBlur),e.removeEventListener("focus",this.onFocus),e.removeEventListener("paste",this.onPaste),e.removeEventListener("keyup",this.onKeyUp),e.removeEventListener("keydown",this.onKeyDown),e.removeEventListener("click",this.onClickInput),e.removeEventListener("transitionend",this.onTransition),e.removeEventListener("input",this.onInput),e.removeEventListener("scroll",this.onInputScroll))},watch:{showSuggestions:function(e,t){this.$emit("shown",e),e?this.$refs.suggestorPopover.showPopover():this.$refs.suggestorPopover.hidePopover()},textAtCaret:(L=(0,b.Z)(C().mark((function e(t){var n,o;return C().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==t){e.next=2;break}return e.abrupt("return");case 2:if(n=t.charAt(0),t!==n){e.next=6;break}return this.suggestions=[],e.abrupt("return");case 6:return e.next=8,this.suggest(t,this.maybeLocalizedEmojiNamesAndKeywords);case 8:if(o=e.sent,!(this.textAtCaret!==t||o.length<=0)){e.next=12;break}return this.suggestions=[],e.abrupt("return");case 12:this.suggestions=_()(o,5).map((function(e){var t=e.imageUrl;return K(K({},(0,w.Z)(e,H)),{},{img:t||""})})),this.highlighted=this.defaultCandidateIndex,this.$refs.screenReaderNotice.announce(this.$tc("tool_tip.autocomplete_available",this.suggestions.length,{number:this.suggestions.length}));case 15:case"end":return e.stop()}}),e,this)}))),function(e){return L.apply(this,arguments)})},methods:{triggerShowPicker:function(){var e=this;this.$nextTick((function(){e.$refs.picker.showPicker(),e.scrollIntoView()})),this.disableClickOutside=!0,setTimeout((function(){e.disableClickOutside=!1}),0)},togglePicker:function(){this.input.focus(),this.pickerShown?this.$refs.picker.hidePicker():(this.scrollIntoView(),this.$refs.picker.showPicker(),this.$refs.picker.startEmojiLoad())},replace:function(e){var t=P(this.modelValue,this.wordAtCaret,e);this.$emit("update:modelValue",t),this.caret=0},insert:function(e){var t=e.insertion,n=e.keepOpen,o=e.surroundingSpace,r=void 0===o||o,i=this.modelValue.substring(0,this.caret)||"",s=this.modelValue.substring(this.caret)||"",a=/\s/,u=r&&!a.exec(i.slice(-1))&&i.length&&this.padEmoji>0?" ":"",c=r&&!a.exec(s[0])&&this.padEmoji?" ":"",l=[i,u,t,c,s].join("");this.$emit("update:modelValue",l);var d=this.caret+(t+c+u).length;n||this.input.focus(),this.$nextTick((function(){this.input.setSelectionRange(d,d),this.caret=d}))},replaceText:function(e,t){var n=this.suggestions.length||0;if(1!==this.textAtCaret.length&&(n>0||t)){var o=(t||this.suggestions[this.highlighted]).replacement,r=P(this.modelValue,this.wordAtCaret,o);this.$emit("update:modelValue",r),this.highlighted=0;var i=this.wordAtCaret.start+o.length;this.$nextTick((function(){this.input.focus(),this.input.setSelectionRange(i,i),this.caret=i})),e.preventDefault()}},cycleBackward:function(e){var t=this.suggestions.length||0;this.highlighted-=1,-1===this.highlighted?this.input.focus():this.highlighted<-1&&(this.highlighted=t-1),t>0&&e.preventDefault()},cycleForward:function(e){var t=this.suggestions.length||0;this.highlighted+=1,this.highlighted>=t&&(this.highlighted=-1,this.input.focus()),t>0&&e.preventDefault()},scrollIntoView:function(){var e=this,t=this.$refs.picker.$el,n=this.$el.closest(".sidebar-scroller")||this.$el.closest(".post-form-modal-view")||window,o=n===window?n.scrollY:n.scrollTop,r=o+(n===window?n.innerHeight:n.offsetHeight),i=t.offsetHeight+(0,q.y)(t,n).top,s=o+Math.max(0,i-r);n===window?n.scroll(0,s):n.scrollTop=s,this.$nextTick((function(){var t=e.input.offsetHeight,n=e.$refs.picker;n.$el.getBoundingClientRect().bottom>window.innerHeight&&(n.$el.style.top="auto",n.$el.style.bottom=t+"px")}))},onPickerShown:function(){this.pickerShown=!0},onPickerClosed:function(){this.pickerShown=!1},onBlur:function(e){var t=this;this.blurTimeout=setTimeout((function(){t.focused=!1,t.setCaret(e)}),200)},onClick:function(e,t){this.replaceText(e,t)},onFocus:function(e){this.blurTimeout&&(clearTimeout(this.blurTimeout),this.blurTimeout=null),this.focused=!0,this.setCaret(e),this.temporarilyHideSuggestions=!1},onKeyUp:function(e){var t=e.key;this.setCaret(e),this.temporarilyHideSuggestions="Escape"===t},onPaste:function(e){this.setCaret(e)},onKeyDown:function(e){var t=this,n=e.ctrlKey,o=e.shiftKey,r=e.key;this.newlineOnCtrlEnter&&n&&"Enter"===r&&(this.insert({insertion:"\n",surroundingSpace:!1}),e.stopPropagation(),e.preventDefault(),this.$nextTick((function(){t.input.blur(),t.input.focus()}))),this.temporarilyHideSuggestions||("Tab"===r&&(o?this.cycleBackward(e):this.cycleForward(e)),"ArrowUp"===r?this.cycleBackward(e):"ArrowDown"===r&&this.cycleForward(e),"Enter"===r&&(n||this.replaceText(e))),"Escape"===r&&(this.temporarilyHideSuggestions||this.input.focus())},onInput:function(e){this.setCaret(e),this.$emit("update:modelValue",e.target.value)},onStickerUploaded:function(e){this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.$emit("sticker-upload-Failed",e)},setCaret:function(e){var t=this,n=e.target.selectionStart;this.caret=n,this.$nextTick((function(){t.$refs.suggestorPopover.updateStyles()}))},resize:function(){},autoCompleteItemLabel:function(e){return e.user?e.displayText+" "+e.detailText:this.maybeLocalizedEmojiName(e)}}},J=(0,U.Z)(Y,[["render",function(e,t,n,v,w,b){var y=(0,o.up)("screen-reader-notice"),D=(0,o.up)("FAIcon"),_=(0,o.up)("EmojiPicker"),k=(0,o.up)("UnicodeDomainIndicator"),C=(0,o.up)("Popover");return(0,o.wg)(),(0,o.iD)("div",{ref:"root",class:(0,r.C_)(["emoji-input",{"with-picker":!e.hideEmojiButton}])},[(0,o.WI)(e.$slots,"default",{id:"textbox-"+e.randomSeed,ariaOwns:e.suggestionListId,ariaAutocomplete:"both",ariaExpanded:e.showSuggestions,ariaActivedescendant:e.showSuggestions&&-1!==e.highlighted?e.suggestionItemId(e.highlighted):""}),(0,o._)("div",{ref:"hiddenOverlay",class:"hidden-overlay",style:(0,r.j5)(e.overlayStyle),"aria-hidden":!0},[(0,o._)("span",null,(0,r.zw)(e.preText),1),(0,o._)("span",s,"x",512),(0,o._)("span",null,(0,r.zw)(e.postText),1)],4),(0,o.Wm)(y,{ref:"screenReaderNotice","aria-live":"assertive"},null,512),e.enableEmojiPicker?((0,o.wg)(),(0,o.iD)(o.HY,{key:0},[e.hideEmojiButton?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-unstyled emoji-picker-icon",type:"button",title:e.$t("emoji.add_emoji"),onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.togglePicker&&e.togglePicker.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(D,{icon:["far","smile-beam"]})],8,a)),e.enableEmojiPicker?((0,o.wg)(),(0,o.j4)(_,{key:1,ref:"picker","enable-sticker-picker":e.enableStickerPicker,class:"emoji-picker-panel",onEmoji:e.insert,onStickerUploaded:e.onStickerUploaded,onStickerUploadFailed:e.onStickerUploadFailed,onShow:e.onPickerShown,onClose:e.onPickerClosed},null,8,["enable-sticker-picker","onEmoji","onStickerUploaded","onStickerUploadFailed","onShow","onClose"])):(0,o.kq)("",!0)],64)):(0,o.kq)("",!0),(0,o.Wm)(C,{ref:"suggestorPopover",class:"autocomplete-panel",placement:"bottom","trigger-attrs":{"aria-hidden":!0}},{content:(0,o.w5)((function(){return[(0,o._)("div",{id:e.suggestionListId,ref:"panel-body",class:"autocomplete-panel-body",role:"listbox"},[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.suggestions,(function(t,n){return(0,o.wg)(),(0,o.iD)("div",{id:e.suggestionItemId(n),key:n,class:(0,r.C_)(["autocomplete-item",{highlighted:n===e.highlighted}]),role:"option","aria-label":e.autoCompleteItemLabel(t),"aria-selected":n===e.highlighted,onClick:(0,i.iM)((function(n){return e.onClick(n,t)}),["stop","prevent"])},[(0,o._)("span",l,[t.img?((0,o.wg)(),(0,o.iD)("img",{key:0,src:t.img},null,8,d)):((0,o.wg)(),(0,o.iD)("span",p,(0,r.zw)(t.replacement),1))]),(0,o._)("div",m,[t.user?((0,o.wg)(),(0,o.iD)("span",h,[(0,o.Uk)((0,r.zw)(t.displayText),1),(0,o.Wm)(k,{user:t.user,at:!1},null,8,["user"])])):(0,o.kq)("",!0),t.user?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("span",f,(0,r.zw)(e.maybeLocalizedEmojiName(t)),1)),(0,o._)("span",g,(0,r.zw)(t.detailText),1)])],10,c)})),128))],8,u)]})),_:1},512)],2)}]])},91300:(e,t,n)=>{"use strict";n.d(t,{Z:()=>N});var o=n(66252),r=n(3577),i=n(49963),s={class:"heading"},a={ref:"header",class:"emoji-tabs"},u=["title","onClick"],c={key:0,class:"emoji-picker-header-image"},l={key:0,class:"additional-tabs"},d=["title"],p={key:0,class:"content"},m={class:"emoji-search"},h=["placeholder"],f={class:"emoji-group"},g={key:0,class:"emoji-group-title"},v=["title","onClick"],w={key:0,class:"emoji-picker-emoji -unicode"},b={class:"keep-open"},y={key:0,class:"stickers-content"},D=n(29439),_=n(4942),k=n(93433),C=n(8400),S=n.n(C),j=n(92742),F=n.n(j),A=n(23279),O=n.n(A),E=n(66141),z=n(84535),P=n(32140),I=n(8312),x=n(9382),T=n(84131);function $(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function B(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$(Object(n),!0).forEach((function(t){(0,_.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function U(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return M(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?M(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}function M(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}x.vI.add(T.IA$,T.L4e,T.RKn,T.ctA,T.ILF,T.kQp,T.E1P,T.k0d,T.Elv,T.X8G,T.dT$,T.RrC);var L={"smileys-and-emotion":"smile","people-and-body":"user","animals-and-nature":"paw","food-and-drink":"ice-cream","travel-and-places":"bus",activities:"basketball-ball",objects:"lightbulb",symbols:"code",flags:"flag"},R=function(e,t,n){var o=[e.displayText,n(e)];return e.annotations&&t.forEach((function(t){var n,r,i=(null===(n=e.annotations[t])||void 0===n?void 0:n.keywords)||[],s=null===(r=e.annotations[t])||void 0===r?void 0:r.name;o.push.apply(o,(0,k.Z)(i.concat([s]).filter((function(e){return e}))))})),o};const q={props:{enableStickerPicker:{required:!1,type:Boolean,default:!1},hideCustomEmoji:{required:!1,type:Boolean,default:!1}},inject:["popoversZLayer"],data:function(){return{keyword:"",activeGroup:"custom",showingStickers:!1,groupsScrolledClass:"scrolled-top",keepOpen:!1,customEmojiTimeout:null,contentLoaded:!1,groupRefs:{},emojiRefs:{},filteredEmojiGroups:[],width:0}},components:{StickerPicker:(0,o.RC)((function(){return n.e(159).then(n.bind(n,30159))})),Checkbox:E.Z,StillImage:P.Z,Popover:z.default},methods:{showPicker:function(){this.$refs.popover.showPopover(),this.onShowing()},hidePicker:function(){this.$refs.popover.hidePopover()},setAnchorEl:function(e){this.$refs.popover.setAnchorEl(e)},setGroupRef:function(e){var t=this;return function(n){t.groupRefs[e]=n}},onPopoverShown:function(){this.$emit("show")},onPopoverClosed:function(){this.$emit("close")},onStickerUploaded:function(e){this.$emit("sticker-uploaded",e)},onStickerUploadFailed:function(e){this.$emit("sticker-upload-failed",e)},onEmoji:function(e){var t=e.imageUrl?":".concat(e.displayText,":"):e.replacement;this.keepOpen||this.$refs.popover.hidePopover(),this.$emit("emoji",{insertion:t,keepOpen:this.keepOpen})},onScroll:function(e,t,n,o){var r=this.$refs["emoji-groups"].$el;this.scrolledGroup(r,n,o)},scrolledGroup:function(e,t,n){var o=this,r=e.scrollTop+5;this.$nextTick((function(){o.emojiItems.slice(t,n+1).forEach((function(e){var t=e.id.replace(/^row-\d+-/,""),n=o.groupRefs["group-"+e.id];if(n){var i=n.$el.parentElement;i&&i&&function(e){var t=e.style.transform,n=/translateY\((\d+)px\)/.exec(t);return n?n[1]:0}(i)<=r&&(o.activeGroup=t)}})),o.scrollHeader()}))},scrollHeader:function(){var e=this.groupRefs["group-header-"+this.activeGroup],t=e.offsetLeft,n=t+e.offsetWidth,o=this.$refs.header,r=o.scrollLeft,i=r+o.clientWidth,s=function(e){o.scrollLeft=e};t-7<r?s(t-7):n+7>i&&s(n+7-o.clientWidth)},highlight:function(e){this.setShowStickers(!1);var t=this.emojiItems.findIndex((function(t){return t.id===e}));this.$refs["emoji-groups"].scrollToItem(t)},updateScrolledClass:function(e){e.scrollTop<=5?this.groupsScrolledClass="scrolled-top":e.scrollTop>=e.scrollTopMax-5?this.groupsScrolledClass="scrolled-bottom":this.groupsScrolledClass="scrolled-middle"},toggleStickers:function(){this.showingStickers=!this.showingStickers},setShowStickers:function(e){this.showingStickers=e},filterByKeyword:function(e,t){return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0;if(""===t)return e;var r,i=t.toLowerCase(),s=[],a=U(e);try{for(a.s();!(r=a.n()).done;){var u=r.value,c=R(u,n,o).map((function(e){return e.toLowerCase().indexOf(i)})).filter((function(e){return e>-1})),l=c.length?Math.min.apply(Math,(0,k.Z)(c)):-1;l>-1&&(Array.isArray(s[l])||(s[l]=[]),s[l].push(u))}}catch(e){a.e(e)}finally{a.f()}return s.flat()}(e,t,this.languages,this.maybeLocalizedEmojiName)},onShowing:function(){var e=this,t=this.contentLoaded;this.recalculateItemPerRow(),this.$nextTick((function(){e.$refs.search.focus()})),this.contentLoaded=!0,this.filteredEmojiGroups=this.getFilteredEmojiGroups(),t||this.$nextTick((function(){e.defaultGroup&&e.highlight(e.defaultGroup)}))},getFilteredEmojiGroups:function(){var e=this;return this.allEmojiGroups.map((function(t){return B(B({},t),{},{emojis:e.filterByKeyword(t.emojis,F()(e.keyword))})})).filter((function(e){return e.emojis.length>0}))},recalculateItemPerRow:function(){var e=this;this.$nextTick((function(){e.$refs["emoji-groups"]&&(e.width=e.$refs["emoji-groups"].$el.clientWidth)}))}},watch:{keyword:function(){this.onScroll(),this.debouncedHandleKeywordChange()},allCustomGroups:function(){this.filteredEmojiGroups=this.getFilteredEmojiGroups()}},computed:{minItemSize:function(){return this.emojiHeight},emojiHeight:function(){return 36},emojiWidth:function(){return 36},itemPerRow:function(){return this.width?Math.floor(this.width/this.emojiWidth-1):6},activeGroupView:function(){return this.showingStickers?"":this.activeGroup},stickersAvailable:function(){return this.$store.state.instance.stickers?this.$store.state.instance.stickers.length>0:0},allCustomGroups:function(){if(this.hideCustomEmoji)return{};var e=this.$store.getters.groupedCustomEmojis;return e.unpacked&&(e.unpacked.text=this.$t("emoji.unpacked")),e},defaultGroup:function(){return Object.keys(this.allCustomGroups)[0]},unicodeEmojiGroups:function(){var e=this;return this.$store.getters.standardEmojiGroupList.map((function(t){return{id:"standard-".concat(t.id),text:e.$t("emoji.unicode_groups.".concat(t.id)),icon:L[t.id],emojis:t.emojis}}))},allEmojiGroups:function(){return Object.entries(this.allCustomGroups).map((function(e){var t=(0,D.Z)(e,2);return t[0],t[1]})).concat(this.unicodeEmojiGroups)},stickerPickerEnabled:function(){return 0!==(this.$store.state.instance.stickers||[]).length},debouncedHandleKeywordChange:function(){var e=this;return O()((function(){e.filteredEmojiGroups=e.getFilteredEmojiGroups()}),500)},emojiItems:function(){var e=this;return this.filteredEmojiGroups.map((function(t){return S()(t.emojis,e.itemPerRow).map((function(e,n){return B(B({},t),{},{id:0===n?t.id:"row-".concat(n,"-").concat(t.id),emojis:e,isFirstRow:0===n})}))})).reduce((function(e,t){return e.concat(t)}),[])},languages:function(){return(0,I.ensureFinalFallback)(this.$store.getters.mergedConfig.interfaceLanguage)},maybeLocalizedEmojiName:function(){var e=this;return function(t){if(!t.annotations)return t.displayText;if(t.displayTextI18n)return e.$t(t.displayTextI18n.key,t.displayTextI18n.args);var n,o=U(e.languages);try{for(o.s();!(n=o.n()).done;){var r,i=n.value;if(null!==(r=t.annotations[i])&&void 0!==r&&r.name)return t.annotations[i].name}}catch(e){o.e(e)}finally{o.f()}return t.displayText}},isInModal:function(){return"modals"===this.popoversZLayer}}},N=(0,n(83744).Z)(q,[["render",function(e,t,n,D,_,k){var C=(0,o.up)("still-image"),S=(0,o.up)("FAIcon"),j=(0,o.up)("DynamicScrollerItem"),F=(0,o.up)("DynamicScroller"),A=(0,o.up)("Checkbox"),O=(0,o.up)("sticker-picker"),E=(0,o.up)("Popover"),z=(0,o.Q2)("body-scroll-lock");return(0,o.wg)(),(0,o.j4)(E,{ref:"popover",trigger:"click","popover-class":"emoji-picker popover-default","trigger-attrs":{"aria-hidden":!0,tabindex:-1},onShow:e.onPopoverShown,onClose:e.onPopoverClosed},{content:(0,o.w5)((function(){return[(0,o._)("div",s,[(0,o.wy)(((0,o.wg)(),(0,o.iD)("span",a,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.filteredEmojiGroups,(function(t){return(0,o.wg)(),(0,o.iD)("span",{ref_for:!0,ref:e.setGroupRef("group-header-"+t.id),key:t.id,class:(0,r.C_)(["emoji-tabs-item",{active:e.activeGroupView===t.id}]),title:t.text,role:"button",onClick:(0,i.iM)((function(n){return e.highlight(t.id)}),["prevent"])},[t.image?((0,o.wg)(),(0,o.iD)("span",c,[(0,o.Wm)(C,{alt:t.text,src:t.image},null,8,["alt","src"])])):((0,o.wg)(),(0,o.j4)(S,{key:1,icon:t.icon,"fixed-width":""},null,8,["icon"]))],10,u)})),128))])),[[z,e.isInModal]]),e.stickerPickerEnabled?((0,o.wg)(),(0,o.iD)("span",l,[(0,o._)("span",{class:(0,r.C_)(["stickers-tab-icon additional-tabs-item",{active:e.showingStickers}]),title:e.$t("emoji.stickers"),onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.toggleStickers&&e.toggleStickers.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(S,{icon:"sticky-note","fixed-width":""})],10,d)])):(0,o.kq)("",!0)]),e.contentLoaded?((0,o.wg)(),(0,o.iD)("div",p,[(0,o._)("div",{class:(0,r.C_)(["emoji-content",{hidden:e.showingStickers}])},[(0,o._)("div",m,[(0,o.wy)((0,o._)("input",{ref:"search","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.keyword=t}),type:"text",class:"form-control",placeholder:e.$t("emoji.search_emoji"),onInput:t[2]||(t[2]=function(e){return e.target.composing=!1})},null,40,h),[[i.nr,e.keyword]])]),(0,o.wy)(((0,o.wg)(),(0,o.j4)(F,{ref:"emoji-groups",class:(0,r.C_)(["emoji-groups",e.groupsScrolledClass]),"min-item-size":e.minItemSize,items:e.emojiItems,"emit-update":!0,onUpdate:e.onScroll,onVisible:e.recalculateItemPerRow,onResize:e.recalculateItemPerRow},{default:(0,o.w5)((function(t){var n=t.item,s=t.index,a=t.active;return[(0,o.Wm)(j,{ref:e.setGroupRef("group-"+n.id),item:n,active:a,"data-index":s,"size-dependencies":[n.emojis.length]},{default:(0,o.w5)((function(){return[(0,o._)("div",f,[n.isFirstRow?((0,o.wg)(),(0,o.iD)("h6",g,(0,r.zw)(n.text),1)):(0,o.kq)("",!0),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(n.emojis,(function(t){return(0,o.wg)(),(0,o.iD)("span",{key:n.id+t.displayText,title:e.maybeLocalizedEmojiName(t),class:"emoji-item",role:"button",onClick:(0,i.iM)((function(n){return e.onEmoji(t)}),["stop","prevent"])},[t.imageUrl?((0,o.wg)(),(0,o.j4)(C,{key:1,class:"emoji-picker-emoji -custom",loading:"lazy",alt:e.maybeLocalizedEmojiName(t),src:t.imageUrl,"data-emoji-name":n.id+t.displayText},null,8,["alt","src","data-emoji-name"])):((0,o.wg)(),(0,o.iD)("span",w,(0,r.zw)(t.replacement),1))],8,v)})),128))])]})),_:2},1032,["item","active","data-index","size-dependencies"])]})),_:1},8,["class","min-item-size","items","onUpdate","onVisible","onResize"])),[[z,e.isInModal]]),(0,o._)("div",b,[(0,o.Wm)(A,{modelValue:e.keepOpen,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.keepOpen=t})},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("emoji.keep_open")),1)]})),_:1},8,["modelValue"])])],2),e.showingStickers?((0,o.wg)(),(0,o.iD)("div",y,[(0,o.Wm)(O,{onUploaded:e.onStickerUploaded,onUploadFailed:e.onStickerUploadFailed},null,8,["onUploaded","onUploadFailed"])])):(0,o.kq)("",!0)])):(0,o.kq)("",!0)]})),_:1},8,["onShow","onClose"])}]])},72884:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var o,r=n(66252),i=n(3577),s={class:"Flash"},a={key:0,class:"label"},u={key:1,class:"label"},c={key:2,class:"label"};const l=(o=null,{getRuffle:function(){return new Promise((function(e,t){if(o)e(o);else{window.RufflePlayer={},window.RufflePlayer.config={polyfills:!1,publicPath:"/static/ruffle"};var n=document.createElement("script");n.src="/static/ruffle/ruffle.js",n.type="text/javascript",n.onerror=function(e){t(e)},n.onabort=function(e){t(e)},n.oncancel=function(e){t(e)},n.onload=function(){o=window.RufflePlayer,e(o)},document.body.appendChild(n)}}))}});var d=n(9382),p=n(84131);d.vI.add(p.Bg$,p.eHv);const m={props:["src"],data:function(){return{player:!1,loaded:!1,ruffleInstance:null}},methods:{openPlayer:function(){var e=this;this.player||(this.player="hidden",l.getRuffle().then((function(t){var n=t.newest().createPlayer();n.config={letterbox:"on"},e.$refs.container.appendChild(n),n.style.width="100%",n.style.height="100%",n.load(e.src).then((function(){e.player=!0})).catch((function(t){console.error("Error loading ruffle",t),e.player="error"})),e.ruffleInstance=n,e.$emit("playerOpened")})))},closePlayer:function(){this.ruffleInstance&&this.ruffleInstance.remove(),this.player=!1,this.$emit("playerClosed")}}},h=(0,n(83744).Z)(m,[["render",function(e,t,n,o,l,d){var p=(0,r.up)("FAIcon");return(0,r.wg)(),(0,r.iD)("div",s,[!0===e.player||"hidden"===e.player?((0,r.wg)(),(0,r.iD)("div",{key:0,ref:"container",class:(0,i.C_)(["player",{hidden:"hidden"===e.player}])},null,2)):(0,r.kq)("",!0),!0!==e.player?((0,r.wg)(),(0,r.iD)("button",{key:1,class:"button-unstyled placeholder",onClick:t[0]||(t[0]=function(){return e.openPlayer&&e.openPlayer.apply(e,arguments)})},["hidden"===e.player?((0,r.wg)(),(0,r.iD)("span",a,(0,i.zw)(e.$t("general.loading")),1)):(0,r.kq)("",!0),"error"===e.player?((0,r.wg)(),(0,r.iD)("span",u,(0,i.zw)(e.$t("general.flash_fail")),1)):((0,r.wg)(),(0,r.iD)("span",c,[(0,r._)("p",null,(0,i.zw)(e.$t("general.flash_content")),1),(0,r._)("p",null,[(0,r.Wm)(p,{icon:"exclamation-triangle"}),(0,r.Uk)(" "+(0,i.zw)(e.$t("general.flash_security")),1)])]))])):(0,r.kq)("",!0)])}]])},34837:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var o=n(66252),r=n(3577),i=["disabled","title"],s=["textContent"],a=n(1447),u=n(29439),c=function e(t,n,o){return new Promise((function(e,r){setTimeout((function(){o.state.api.backendInteractor.fetchUserRelationship({id:n}).then((function(e){return o.commit("updateUserRelationship",[e]),e})).then((function(n){return e([n.following,n.requested,n.locked,t])})).catch((function(e){return r(e)}))}),500)})).then((function(t){var r=(0,u.Z)(t,4),i=r[0],s=r[1],a=r[2],c=r[3];i||a&&s||!(c<=3)||e(++c,n,o)}))},l=function(e,t){return new Promise((function(n,o){t.state.api.backendInteractor.followUser({id:e}).then((function(e){if(t.commit("updateUserRelationship",[e]),!(e.following||e.locked&&e.requested))return c(1,e,t).then((function(){n()}));n()}))}))};const d={props:["relationship","user","labelFollowing","buttonClass"],components:{ConfirmModal:a.Z},data:function(){return{inProgress:!1,showingConfirmUnfollow:!1}},computed:{shouldConfirmUnfollow:function(){return this.$store.getters.mergedConfig.modalOnUnfollow},isPressed:function(){return this.inProgress||this.relationship.following},title:function(){return this.inProgress||this.relationship.following?this.$t("user_card.follow_unfollow"):this.relationship.requested?this.$t("user_card.follow_cancel"):this.$t("user_card.follow")},label:function(){return this.inProgress?this.$t("user_card.follow_progress"):this.relationship.following?this.labelFollowing||this.$t("user_card.following"):this.relationship.requested?this.$t("user_card.follow_sent"):this.$t("user_card.follow")},disabled:function(){return this.inProgress||this.user.deactivated}},methods:{showConfirmUnfollow:function(){this.showingConfirmUnfollow=!0},hideConfirmUnfollow:function(){this.showingConfirmUnfollow=!1},onClick:function(){this.relationship.following||this.relationship.requested?this.unfollow():this.follow()},follow:function(){var e=this;this.inProgress=!0,l(this.relationship.id,this.$store).then((function(){e.inProgress=!1}))},unfollow:function(){this.shouldConfirmUnfollow?this.showConfirmUnfollow():this.doUnfollow()},doUnfollow:function(){var e=this,t=this.$store;this.inProgress=!0,function(e,t){return new Promise((function(n,o){t.state.api.backendInteractor.unfollowUser({id:e}).then((function(e){t.commit("updateUserRelationship",[e]),n({updated:e})}))}))}(this.relationship.id,t).then((function(){e.inProgress=!1,t.commit("removeStatus",{timeline:"friends",userId:e.relationship.id})})),this.hideConfirmUnfollow()}}},p=(0,n(83744).Z)(d,[["render",function(e,t,n,a,u,c){var l=(0,o.up)("i18n-t"),d=(0,o.up)("confirm-modal");return(0,o.wg)(),(0,o.iD)("button",{class:(0,r.C_)(["btn button-default follow-button",{toggled:e.isPressed}]),disabled:e.disabled,title:e.title,onClick:t[0]||(t[0]=function(){return e.onClick&&e.onClick.apply(e,arguments)})},[(0,o.Uk)((0,r.zw)(e.label)+" ",1),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingConfirmUnfollow?((0,o.wg)(),(0,o.j4)(d,{key:0,title:e.$t("user_card.unfollow_confirm_title"),"confirm-text":e.$t("user_card.unfollow_confirm_accept_button"),"cancel-text":e.$t("user_card.unfollow_confirm_cancel_button"),onAccepted:e.doUnfollow,onCancelled:e.hideConfirmUnfollow},{default:(0,o.w5)((function(){return[(0,o.Wm)(l,{keypath:"user_card.unfollow_confirm",tag:"span"},{user:(0,o.w5)((function(){return[(0,o._)("span",{textContent:(0,r.zw)(e.user.screen_name_ui)},null,8,s)]})),_:1})]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)]))],10,i)}]])},67671:(e,t,n)=>{"use strict";n.d(t,{Z:()=>w});var o=n(66252),r=n(3577),i={class:"gallery-rows"},s={key:0,class:"many-attachments"},a={class:"many-attachments-text"},u={class:"many-attachments-buttons"},c={key:0,class:"many-attachments-button"},l={key:1,class:"many-attachments-button"},d={key:2,class:"many-attachments-button"},p=n(93433),m=n(36968),h=n.n(m),f=n(73303),g=n.n(f);const v={props:["attachments","compact","limitRows","descriptions","limit","nsfw","setMedia","size","editable","removeAttachment","shiftUpAttachment","shiftDnAttachment","editAttachment","grid"],data:function(){return{sizes:{},hidingLong:!0}},components:{Attachment:n(66596).Z},computed:{rows:function(){var e=this;if(!this.attachments)return[];var t=this.limit>0?this.attachments.slice(0,this.limit):this.attachments;return"hide"===this.size?t.map((function(e){return{minimal:!0,items:[e]}})):this.grid?[{grid:!0,items:t}]:t.reduce((function(t,n,o){if(n.mimetype.includes("audio"))return[].concat((0,p.Z)(t),[{audio:!0,items:[n]},{items:[]}]);if(!(n.mimetype.includes("image")||n.mimetype.includes("video")||n.mimetype.includes("flash")))return[].concat((0,p.Z)(t),[{minimal:!0,items:[n]},{items:[]}]);var r=e.attachments.length-o+1,i=t[t.length-1].items;return i.push(n),i.length>=3&&r>3?[].concat((0,p.Z)(t),[{items:[]}]):t}),[{items:[]}]).filter((function(e){return e.items.length>0}))},attachmentsDimensionalScore:function(){return this.rows.reduce((function(e,t){var n=0;return t.minimal?n+=1/8:t.audio?n+=1/4:n+=1/(t.items.length+.6),e+n}),0)},tooManyAttachments:function(){return!this.editable&&"small"!==this.size&&("hide"===this.size?this.attachments.length>8:this.attachmentsDimensionalScore>1)}},methods:{onNaturalSizeLoad:function(e){var t=e.id,n=e.width,o=e.height;h()(this.sizes,t,{width:n,height:o})},rowStyle:function(e){return e.audio?{"padding-bottom":"25%"}:e.minimal||e.grid?void 0:{"padding-bottom":"".concat(100/(e.items.length+.6),"%")}},itemStyle:function(e,t){var n=this,o=g()(t,(function(e){return n.getAspectRatio(e.id)}));return{flex:"".concat(this.getAspectRatio(e)/o," 1 0%")}},getAspectRatio:function(e){var t=this.sizes[e];return t?t.width/t.height:1},toggleHidingLong:function(e){this.hidingLong=e},openGallery:function(){this.$store.dispatch("setMedia",this.attachments),this.$store.dispatch("setCurrentMedia",this.attachments[0])},onMedia:function(){this.$store.dispatch("setMedia",this.attachments)}}},w=(0,n(83744).Z)(v,[["render",function(e,t,n,p,m,h){var f=(0,o.up)("Attachment");return(0,o.wg)(),(0,o.iD)("div",{ref:"galleryContainer",class:(0,r.C_)(["Gallery",{"-long":e.tooManyAttachments&&e.hidingLong}])},[(0,o._)("div",i,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.rows,(function(t,n){return(0,o.wg)(),(0,o.iD)("div",{key:n,class:(0,r.C_)(["gallery-row",{"-audio":t.audio,"-minimal":t.minimal,"-grid":e.grid}]),style:(0,r.j5)(e.rowStyle(t))},[(0,o._)("div",{class:(0,r.C_)(["gallery-row-inner",{"-grid":e.grid}])},[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(t.items,(function(i,s){return(0,o.wg)(),(0,o.j4)(f,{key:i.id,class:"gallery-item",compact:e.compact,nsfw:e.nsfw,attachment:i,size:e.size,editable:e.editable,remove:e.removeAttachment,"shift-up":!(0===s&&0===n)&&e.shiftUpAttachment,"shift-dn":!(s===t.items.length-1&&n===e.rows.length-1)&&e.shiftDnAttachment,edit:e.editAttachment,description:e.descriptions&&e.descriptions[i.id],"hide-description":"small"===e.size||e.tooManyAttachments&&e.hidingLong,style:(0,r.j5)(e.itemStyle(i.id,t.items)),onSetMedia:e.onMedia,onNaturalSizeLoad:e.onNaturalSizeLoad},null,8,["compact","nsfw","attachment","size","editable","remove","shift-up","shift-dn","edit","description","hide-description","style","onSetMedia","onNaturalSizeLoad"])})),128))],2)],6)})),128))]),e.tooManyAttachments?((0,o.wg)(),(0,o.iD)("div",s,[(0,o._)("div",a,(0,r.zw)(e.$t("status.many_attachments",{number:e.attachments.length})),1),(0,o._)("div",u,[e.hidingLong?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("span",c,[(0,o._)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=function(t){return e.toggleHidingLong(!0)})},(0,r.zw)(e.$t("status.collapse_attachments")),1)])),e.hidingLong?((0,o.wg)(),(0,o.iD)("span",l,[(0,o._)("button",{class:"button-unstyled -link",onClick:t[1]||(t[1]=function(t){return e.toggleHidingLong(!1)})},(0,r.zw)(e.$t("status.show_all_attachments")),1)])):(0,o.kq)("",!0),e.hidingLong?((0,o.wg)(),(0,o.iD)("span",d,[(0,o._)("button",{class:"button-unstyled -link",onClick:t[2]||(t[2]=function(){return e.openGallery&&e.openGallery.apply(e,arguments)})},(0,r.zw)(e.$t("status.open_gallery")),1)])):(0,o.kq)("",!0)])])):(0,o.kq)("",!0)],2)}]])},86269:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var o=n(66252),r=n(3577),i={class:"interface-language-switcher"},s={class:"setting-list"},a=["value"],u=["onClick"],c=n(93433),l=n(39776);const d={components:{Select:n(76990).Z},props:{promptText:{type:String,required:!0},language:{type:[Array,String],required:!0},setLanguage:{type:Function,required:!0}},computed:{languages:function(){return l.Z.languages},controlledLanguage:{get:function(){return Array.isArray(this.language)?this.language:[this.language]},set:function(e){this.setLanguage(e)}}},methods:{getLanguageName:function(e){return l.Z.getLanguageName(e)},addLanguage:function(){this.controlledLanguage=[].concat((0,c.Z)(this.controlledLanguage),[""])},setLanguageAt:function(e,t){var n=(0,c.Z)(this.controlledLanguage);n[e]=t,this.controlledLanguage=n},removeLanguageAt:function(e){var t=(0,c.Z)(this.controlledLanguage);t.splice(e,1),this.controlledLanguage=t}}},p=(0,n(83744).Z)(d,[["render",function(e,t,n,c,l,d){var p=(0,o.up)("Select");return(0,o.wg)(),(0,o.iD)("div",i,[(0,o._)("label",null,(0,r.zw)(n.promptText),1),(0,o._)("ul",s,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(d.controlledLanguage.keys(),(function(t){return(0,o.wg)(),(0,o.iD)("li",{key:t},[(0,o._)("label",null,[(0,o.Uk)((0,r.zw)(0===t?e.$t("settings.primary_language"):e.$tc("settings.fallback_language",t,{index:t}))+" ",1),(0,o.Wm)(p,{class:"language-select","model-value":d.controlledLanguage[t],"onUpdate:modelValue":function(e){return d.setLanguageAt(t,e)}},{default:(0,o.w5)((function(){return[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(d.languages,(function(e){return(0,o.wg)(),(0,o.iD)("option",{key:e.code,value:e.code},(0,r.zw)(e.name),9,a)})),128))]})),_:2},1032,["model-value","onUpdate:modelValue"])]),d.controlledLanguage.length>1&&0!==t?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-default btn",onClick:function(){return d.removeLanguageAt(t)}},(0,r.zw)(e.$t("settings.remove_language")),9,u)):(0,o.kq)("",!0)])})),128)),(0,o._)("li",null,[(0,o._)("button",{class:"button-default btn",onClick:t[0]||(t[0]=function(){return d.addLanguage&&d.addLanguage.apply(d,arguments)})},(0,r.zw)(e.$t("settings.add_language")),1)])])])}]])},92798:(e,t,n)=>{"use strict";n.d(t,{Z:()=>g});var o=n(66252),r=n(3577),i=["href"],s={key:0,class:"card-image"},a=["src"],u={class:"card-content"},c={class:"card-host faint"},l={key:0,class:"nsfw-alert alert warning"},d={class:"card-title"},p={key:0,class:"card-description"},m=n(4942);function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const f={name:"LinkPreview",props:["card","size","nsfw"],data:function(){return{imageLoaded:!1}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(Object(n),!0).forEach((function(t){(0,m.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({useImage:function(){return this.card.image&&!this.censored&&"hide"!==this.size},censored:function(){return this.nsfw&&this.hideNsfwConfig},useDescription:function(){return this.card.description&&/\S/.test(this.card.description)},hideNsfwConfig:function(){return this.mergedConfig.hideNsfw}},(0,n(989).Se)(["mergedConfig"])),created:function(){var e=this;if(this.useImage){var t=new Image;t.onload=function(){e.imageLoaded=!0},t.src=this.card.image}}},g=(0,n(83744).Z)(f,[["render",function(e,t,n,m,h,f){return(0,o.wg)(),(0,o.iD)("div",null,[(0,o._)("a",{class:"link-preview-card",href:e.card.url,target:"_blank",rel:"noopener"},[e.useImage&&e.imageLoaded?((0,o.wg)(),(0,o.iD)("div",s,[(0,o._)("img",{src:e.card.image},null,8,a)])):(0,o.kq)("",!0),(0,o._)("div",u,[(0,o._)("span",c,[e.censored?((0,o.wg)(),(0,o.iD)("span",l,(0,r.zw)(e.$t("status.nsfw")),1)):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(e.card.provider_name),1)]),(0,o._)("h4",d,(0,r.zw)(e.card.title),1),e.useDescription?((0,o.wg)(),(0,o.iD)("p",p,(0,r.zw)(e.card.description),1)):(0,o.kq)("",!0)])],8,i)])}]])},88369:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var o=n(66252),r={class:"list",role:"list"},i={key:0,class:"list-empty-content faint"};const s={props:{items:{type:Array,default:function(){return[]}},getKey:{type:Function,default:function(e){return e.id}}}},a=(0,n(83744).Z)(s,[["render",function(e,t,n,s,a,u){return(0,o.wg)(),(0,o.iD)("div",r,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(n.items,(function(t){return(0,o.wg)(),(0,o.iD)("div",{key:n.getKey(t),class:"list-item",role:"listitem"},[(0,o.WI)(e.$slots,"item",{item:t})])})),128)),0===n.items.length&&e.$slots.empty?((0,o.wg)(),(0,o.iD)("div",i,[(0,o.WI)(e.$slots,"empty")])):(0,o.kq)("",!0)])}]])},37804:(e,t,n)=>{"use strict";n.d(t,{Z:()=>m});var o=n(66252),r=n(3577),i=["title"],s=["disabled","accept"],a=n(7257),u=n(65079),c=n(9382),l=n(84131);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}c.vI.add(l.cf$,l.IJ7);const p={data:function(){return{uploadCount:0,uploadReady:!0}},computed:{uploading:function(){return this.uploadCount>0}},methods:{onClick:function(){this.uploadReady&&this.$refs.input.click()},uploadFile:function(e){var t=this,n=this.$store;if(e.size>n.state.instance.uploadlimit){var o=u.Z.fileSizeFormat(e.size),r=u.Z.fileSizeFormat(n.state.instance.uploadlimit);t.$emit("upload-failed","file_too_big",{filesize:o.num,filesizeunit:o.unit,allowedsize:r.num,allowedsizeunit:r.unit})}else{var i=new FormData;i.append("file",e),t.$emit("uploading"),t.uploadCount++,a.Z.uploadMedia({store:n,formData:i}).then((function(e){t.$emit("uploaded",e),t.decreaseUploadCount()}),(function(e){console.error("Error uploading file",e),t.$emit("upload-failed","default"),t.decreaseUploadCount()}))}},decreaseUploadCount:function(){this.uploadCount--,0===this.uploadCount&&this.$emit("all-uploaded")},clearFile:function(){var e=this;this.uploadReady=!1,this.$nextTick((function(){e.uploadReady=!0}))},multiUpload:function(e){var t,n=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var o=0,r=function(){};return{s:r,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){a=!0,i=e},f:function(){try{s||null==n.return||n.return()}finally{if(a)throw i}}}}(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;this.uploadFile(o)}}catch(e){n.e(e)}finally{n.f()}},change:function(e){var t=e.target;this.multiUpload(t.files)}},props:{dropFiles:Object,disabled:Boolean,normalButton:Boolean,acceptTypes:{type:String,default:"*/*"}},watch:{dropFiles:function(e){this.uploading||this.multiUpload(e)}}},m=(0,n(83744).Z)(p,[["render",function(e,t,n,a,u,c){var l=(0,o.up)("FAIcon");return(0,o.wg)(),(0,o.iD)("button",{class:(0,r.C_)(["media-upload",[e.normalButton?"button-default btn":"button-unstyled",{disabled:e.disabled}]]),title:e.$t("tool_tip.media_upload"),onClick:t[1]||(t[1]=function(){return e.onClick&&e.onClick.apply(e,arguments)})},[e.uploading?((0,o.wg)(),(0,o.j4)(l,{key:0,class:"progress-icon",icon:"circle-notch",spin:""})):(0,o.kq)("",!0),e.uploading?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(l,{key:1,class:"new-icon",icon:"upload"})),e.normalButton?((0,o.wg)(),(0,o.iD)(o.HY,{key:2},[(0,o.Uk)((0,r.zw)(" ")+" "+(0,r.zw)(e.uploading?e.$t("general.loading"):e.$t("tool_tip.media_upload")),1)],64)):(0,o.kq)("",!0),e.uploadReady?((0,o.wg)(),(0,o.iD)("input",{key:3,ref:"input",class:"hidden-input-file",disabled:e.disabled,type:"file",multiple:"true",accept:e.acceptTypes,onChange:t[0]||(t[0]=function(){return e.change&&e.change.apply(e,arguments)})},null,40,s)):(0,o.kq)("",!0)],10,i)}]])},20460:(e,t,n)=>{"use strict";n.d(t,{Z:()=>A});var o=n(66252),r=n(3577),i=n(49963),s={class:"MentionLink"},a=["href","innerHTML"],u=["href"],c={class:"shortName"},l=["innerHTML"],d=["innerHTML"],p={ref:"full",class:"full"},m=["innerHTML"],h=["innerHTML"],f=n(44925),g=n(4942),v=n(4493),w=n(989),b=n(95052),y=n(48173),D=n(42262),_=n(9382),k=n(84131),C=["backgroundColor","backgroundPosition","backgroundImage"];function S(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function j(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?S(Object(n),!0).forEach((function(t){(0,g.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):S(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}_.vI.add(k.IBq);const F={name:"MentionLink",components:{UserAvatar:y.default,UnicodeDomainIndicator:D.Z,UserPopover:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,22588))}))},props:{url:{required:!0,type:String},content:{required:!0,type:String},userId:{required:!1,type:String},userScreenName:{required:!1,type:String}},data:function(){return{hasSelection:!1}},methods:{onClick:function(){if(!this.shouldShowTooltip){var e=(0,v.Z)(this.userId||this.user.id,this.userScreenName||this.user.screen_name);this.$router.push(e)}},handleSelection:function(){this.hasSelection=document.getSelection().containsNode(this.$refs.full,!0)}},mounted:function(){document.addEventListener("selectionchange",this.handleSelection)},unmounted:function(){document.removeEventListener("selectionchange",this.handleSelection)},computed:j(j({user:function(){return this.url&&this.$store&&this.$store.getters.findUserByUrl(this.url)},isYou:function(){return this.user&&this.user.id===this.currentUser.id},userName:function(){return this.user&&this.userNameFullUi.split("@")[0]},serverName:function(){return this.user&&(this.userNameFullUi.split("@")[1]||this.$store.getters.instanceDomain)},userNameFull:function(){return this.user&&this.user.screen_name},userNameFullUi:function(){return this.user&&this.user.screen_name_ui},highlight:function(){return this.user&&this.mergedConfig.highlight[this.user.screen_name]},highlightType:function(){return this.highlight&&"-"+this.highlight.type},highlightClass:function(){if(this.highlight)return(0,b.M)(this.user)},style:function(){if(this.highlight){var e=(0,b.q)(this.highlight);return e.backgroundColor,e.backgroundPosition,e.backgroundImage,(0,f.Z)(e,C)}},classnames:function(){return[{"-you":this.isYou&&this.shouldBoldenYou,"-highlighted":this.highlight,"-has-selection":this.hasSelection},this.highlightType]},useAtIcon:function(){return this.mergedConfig.useAtIcon},isRemote:function(){return this.userName!==this.userNameFull},shouldShowFullUserName:function(){var e=this.mergedConfig.mentionLinkDisplay;return"short"!==e&&("full"===e||this.isRemote)},shouldShowTooltip:function(){return this.mergedConfig.mentionLinkShowTooltip},shouldShowAvatar:function(){return this.mergedConfig.mentionLinkShowAvatar},shouldShowYous:function(){return this.mergedConfig.mentionLinkShowYous},shouldBoldenYou:function(){return this.mergedConfig.mentionLinkBoldenYou},shouldFadeDomain:function(){return this.mergedConfig.mentionLinkFadeDomain}},(0,w.Se)(["mergedConfig"])),(0,w.rn)({currentUser:function(e){return e.users.currentUser}}))},A=(0,n(83744).Z)(F,[["render",function(e,t,n,f,g,v){var w=(0,o.up)("UserAvatar"),b=(0,o.up)("FAIcon"),y=(0,o.up)("UnicodeDomainIndicator"),D=(0,o.up)("UserPopover");return(0,o.wg)(),(0,o.iD)("span",s,[e.user?((0,o.wg)(),(0,o.j4)(D,{key:1,"user-id":e.user.id,disabled:!e.shouldShowTooltip},{default:(0,o.w5)((function(){return[e.user?((0,o.wg)(),(0,o.iD)("span",{key:0,class:(0,r.C_)(["new",e.classnames]),style:(0,r.j5)(e.style)},[(0,o._)("a",{class:(0,r.C_)(["short button-unstyled",{"-with-tooltip":e.shouldShowTooltip}]),href:e.url,onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.onClick&&e.onClick.apply(e,arguments)}),["prevent"]))},[e.shouldShowAvatar?((0,o.wg)(),(0,o.j4)(w,{key:0,class:"mention-avatar",user:e.user},null,8,["user"])):(0,o.kq)("",!0),(0,o._)("span",c,[e.useAtIcon?((0,o.wg)(),(0,o.j4)(b,{key:0,size:"sm",icon:"at",class:"at"})):(0,o.kq)("",!0),(0,o.Uk)((0,r.zw)(e.useAtIcon?"":"@"),1),(0,o._)("span",{class:"userName",innerHTML:e.userName},null,8,l),e.shouldShowFullUserName?((0,o.wg)(),(0,o.iD)("span",{key:1,class:(0,r.C_)(["serverName",{"-faded":e.shouldFadeDomain}]),innerHTML:"@"+e.serverName},null,10,d)):(0,o.kq)("",!0),e.shouldShowFullUserName?((0,o.wg)(),(0,o.j4)(y,{key:2,user:e.user},null,8,["user"])):(0,o.kq)("",!0)]),e.isYou&&e.shouldShowYous?((0,o.wg)(),(0,o.iD)("span",{key:1,class:(0,r.C_)({"-you":e.shouldBoldenYou})},(0,r.zw)(" "+e.$t("status.you")),3)):(0,o.kq)("",!0)],10,u),(0,o._)("span",p,[(0,o.Uk)(" @"),(0,o._)("span",{innerHTML:e.userName},null,8,m),(0,o._)("span",{innerHTML:"@"+e.serverName},null,8,h)],512)],6)):(0,o.kq)("",!0)]})),_:1},8,["user-id","disabled"])):((0,o.wg)(),(0,o.iD)("a",{key:0,href:e.url,class:"original",target:"_blank",innerHTML:e.content},null,8,a))])}]])},21268:(e,t,n)=>{"use strict";n.d(t,{d:()=>p,Z:()=>h});var o=n(66252),r=n(3577),i={class:"MentionsLine"},s={key:0,class:"extraMentions"},a={key:0,class:"fullExtraMentions"},u=n(4942),c=n(20460),l=n(989);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}var p=5;const m={name:"MentionsLine",props:{mentions:{required:!0,type:Array}},data:function(){return{expanded:!1}},components:{MentionLink:c.Z},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){(0,u.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mentionsComputed:function(){return this.mentions.slice(0,p)},extraMentions:function(){return this.mentions.slice(p)},manyMentions:function(){return this.extraMentions.length>0}},(0,l.Se)(["mergedConfig"])),methods:{toggleShowMore:function(){this.expanded=!this.expanded}}},h=(0,n(83744).Z)(m,[["render",function(e,t,n,u,c,l){var d=(0,o.up)("MentionLink");return(0,o.wg)(),(0,o.iD)("span",i,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.mentionsComputed,(function(e){return(0,o.wg)(),(0,o.j4)(d,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"])})),128)),e.manyMentions?((0,o.wg)(),(0,o.iD)("span",s,[e.expanded?((0,o.wg)(),(0,o.iD)("span",a,[(0,o.Uk)((0,r.zw)(" ")),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.extraMentions,(function(e){return(0,o.wg)(),(0,o.j4)(d,{key:e.index,class:"mention-link",content:e.content,url:e.url},null,8,["content","url"])})),128))])):(0,o.kq)("",!0),e.expanded?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-unstyled showMoreLess",onClick:t[0]||(t[0]=function(){return e.toggleShowMore&&e.toggleShowMore.apply(e,arguments)})},(0,r.zw)(e.$t("status.plus_more",{number:e.extraMentions.length})),1)),e.expanded?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-unstyled showMoreLess",onClick:t[1]||(t[1]=function(){return e.toggleShowMore&&e.toggleShowMore.apply(e,arguments)})},(0,r.zw)(e.$t("general.show_less")),1)):(0,o.kq)("",!0)])):(0,o.kq)("",!0)])}]])},48328:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var o=n(66252),r=n(3577),i=n(49963);const s={provide:{popoversZLayer:"modals"},props:{isOpen:{type:Boolean,default:!0},noBackground:{type:Boolean,default:!1}},computed:{classes:function(){return{"modal-background":!this.noBackground,open:this.isOpen}}}},a=(0,n(83744).Z)(s,[["render",function(e,t,n,s,a,u){var c=(0,o.Q2)("body-scroll-lock");return(0,o.wy)(((0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["modal-view",u.classes]),onClick:t[0]||(t[0]=(0,i.iM)((function(t){return e.$emit("backdropClicked")}),["self"]))},[(0,o.WI)(e.$slots,"default")],2)),[[i.F8,n.isOpen],[c,n.isOpen&&!n.noBackground]])}]])},93737:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Be});var o=n(66252),r=n(3577),i=n(49963),s={key:0,class:"notifications-heading panel-heading -sticky"},a={class:"title"},u={key:0,class:"badge badge-notification unseen-count"},c={key:0,class:"rightside-button"},l=["title"],d={class:"panel-body",role:"feed"},p=(0,o._)("div",{class:"notification-overlay"},null,-1),m={class:"panel-footer"},h={key:0,class:"new-status-notification text-center faint"},f={class:"new-status-notification text-center"},g={key:2,class:"new-status-notification text-center"},v=n(4942),w=n(989),b={key:0},y={key:1},D={key:0,class:"Notification container -muted"},_=["href"],k={class:"notification-right"},C={class:"notification-details"},S={class:"name-and-action"},j={key:0},F=["title"],A={key:2},O={key:3},E={key:4},z={key:5},P={key:6},I={key:7},x=["src","alt","title"],T={key:1,class:"emoji-reaction-emoji"},$={key:8},B={key:9},U={key:0,class:"timeago"},M=["title","aria-expanded"],L={key:1,class:"timeago"},R={class:"faint"},q=["title","aria-expanded"],N={key:0,class:"follow-text"},Z={key:0,style:{"white-space":"nowrap"}},W=["title"],H=["title"],V={key:1,class:"move-text"},K=n(10252),G=n(24049),Y=n(48173),J=n(20392),Q=n(1840),X={class:"Report"},ee={class:"reported-user"},te={class:"reporter"},ne={class:"report-state"},oe=["value"],re={key:0},ie={class:"reported-status-heading"},se={class:"reported-status-name"},ae={key:1},ue=n(76990),ce=n(92820),le=n(4493);const de={props:["reportId"],components:{Select:ue.Z,StatusContent:K.Z,Timeago:Q.Z,RichContent:ce.Z},computed:{report:function(){return console.log(this.$store.state.reports.reports[this.reportId]||{}),this.$store.state.reports.reports[this.reportId]||{}},state:{get:function(){return this.report.state},set:function(e){this.setReportState(e)}}},methods:{generateUserProfileLink:function(e){return(0,le.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},setReportState:function(e){return this.$store.dispatch("setReportState",{id:this.report.id,state:e})}}};var pe=n(83744);const me=(0,pe.Z)(de,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("router-link"),c=(0,o.up)("Select"),l=(0,o.up)("RichContent"),d=(0,o.up)("Timeago"),p=(0,o.up)("status-content");return(0,o.wg)(),(0,o.iD)("div",X,[(0,o._)("div",ee,[(0,o._)("span",null,(0,r.zw)(e.$t("report.reported_user")),1),(0,o.Wm)(u,{to:e.generateUserProfileLink(e.report.acct)},{default:(0,o.w5)((function(){return[(0,o.Uk)(" @"+(0,r.zw)(e.report.acct.screen_name),1)]})),_:1},8,["to"])]),(0,o._)("div",te,[(0,o._)("span",null,(0,r.zw)(e.$t("report.reporter")),1),(0,o.Wm)(u,{to:e.generateUserProfileLink(e.report.actor)},{default:(0,o.w5)((function(){return[(0,o.Uk)(" @"+(0,r.zw)(e.report.actor.screen_name),1)]})),_:1},8,["to"])]),(0,o._)("div",ne,[(0,o._)("span",null,(0,r.zw)(e.$t("report.state")),1),(0,o.Wm)(c,{id:e.report-e.state,modelValue:e.state,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.state=t}),class:"form-control"},{default:(0,o.w5)((function(){return[((0,o.wg)(),(0,o.iD)(o.HY,null,(0,o.Ko)(["open","closed","resolved"],(function(t){return(0,o._)("option",{key:t,value:t},(0,r.zw)(e.$t("report.state_"+t)),9,oe)})),64))]})),_:1},8,["id","modelValue"])]),(0,o.Wm)(l,{class:"report-content",html:e.report.content,emoji:[]},null,8,["html"]),e.report.statuses.length?((0,o.wg)(),(0,o.iD)("div",re,[(0,o._)("small",null,(0,r.zw)(e.$t("report.reported_statuses")),1),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.report.statuses,(function(e){return(0,o.wg)(),(0,o.j4)(u,{key:e.id,to:{name:"conversation",params:{id:e.id}},class:"reported-status"},{default:(0,o.w5)((function(){return[(0,o._)("div",ie,[(0,o._)("span",se,(0,r.zw)(e.user.name),1),(0,o.Wm)(d,{time:e.created_at,"auto-update":240,class:"faint"},null,8,["time"])]),(0,o.Wm)(p,{status:e},null,8,["status"])]})),_:2},1032,["to"])})),128))])):(0,o.kq)("",!0),e.report.notes.length?((0,o.wg)(),(0,o.iD)("div",ae,[(0,o._)("small",null,(0,r.zw)(e.$t("report.notes")),1),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.report.notes,(function(e){return(0,o.wg)(),(0,o.iD)("div",{key:e.id,class:"note"},[(0,o._)("span",null,(0,r.zw)(e.content),1),(0,o.Wm)(d,{time:e.created_at,"auto-update":240,class:"faint"},null,8,["time"])])})),128))])):(0,o.kq)("",!0)])}]]);var he=n(12061),fe=n(22588),ge=n(1447),ve=n(52230),we=n(95052),be=n(9382),ye=n(84131);function De(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}be.vI.add(ye.LEp,ye.NBC,ye.Tab,ye.x5v,ye.FKd,ye.ILF,ye.Aq,ye.gmr,ye.TTL,ye.V9$);var _e={data:function(){return{statusExpanded:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter,unmuted:!1,showingApproveConfirmDialog:!1,showingDenyConfirmDialog:!1}},props:["notification"],components:{StatusContent:K.Z,UserAvatar:Y.default,UserCard:J.Z,Timeago:Q.Z,Status:G.default,Report:me,RichContent:ce.Z,UserPopover:fe.default,UserLink:he.Z,ConfirmModal:ge.Z},methods:{toggleStatusExpanded:function(){this.statusExpanded=!this.statusExpanded},generateUserProfileLink:function(e){return(0,le.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},getUser:function(e){return this.$store.state.users.usersObject[e.from_profile.id]},toggleMute:function(){this.unmuted=!this.unmuted},showApproveConfirmDialog:function(){this.showingApproveConfirmDialog=!0},hideApproveConfirmDialog:function(){this.showingApproveConfirmDialog=!1},showDenyConfirmDialog:function(){this.showingDenyConfirmDialog=!0},hideDenyConfirmDialog:function(){this.showingDenyConfirmDialog=!1},approveUser:function(){this.shouldConfirmApprove?this.showApproveConfirmDialog():this.doApprove()},doApprove:function(){this.$store.state.api.backendInteractor.approveUser({id:this.user.id}),this.$store.dispatch("removeFollowRequest",this.user),this.$store.dispatch("markSingleNotificationAsSeen",{id:this.notification.id}),this.$store.dispatch("updateNotification",{id:this.notification.id,updater:function(e){e.type="follow"}}),this.hideApproveConfirmDialog()},denyUser:function(){this.shouldConfirmDeny?this.showDenyConfirmDialog():this.doDeny()},doDeny:function(){var e=this;this.$store.state.api.backendInteractor.denyUser({id:this.user.id}).then((function(){e.$store.dispatch("dismissNotificationLocal",{id:e.notification.id}),e.$store.dispatch("removeFollowRequest",e.user)})),this.hideDenyConfirmDialog()}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?De(Object(n),!0).forEach((function(t){(0,v.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):De(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({userClass:function(){return(0,we.M)(this.notification.from_profile)},userStyle:function(){var e=this.$store.getters.mergedConfig.highlight,t=this.notification.from_profile;return(0,we.q)(e[t.screen_name])},user:function(){return this.$store.getters.findUser(this.notification.from_profile.id)},userProfileLink:function(){return this.generateUserProfileLink(this.user)},targetUser:function(){return this.$store.getters.findUser(this.notification.target.id)},targetUserProfileLink:function(){return this.generateUserProfileLink(this.targetUser)},needMute:function(){return this.$store.getters.relationship(this.user.id).muting},isStatusNotification:function(){return(0,ve.Gr)(this.notification.type)},mergedConfig:function(){return this.$store.getters.mergedConfig},shouldConfirmApprove:function(){return this.mergedConfig.modalOnApproveFollow},shouldConfirmDeny:function(){return this.mergedConfig.modalOnDenyFollow}},(0,w.rn)({currentUser:function(e){return e.users.currentUser}}))};const ke=_e,Ce=(0,pe.Z)(ke,[["render",function(e,t,n,s,a,u){var c=(0,o.up)("Status"),l=(0,o.up)("user-link"),d=(0,o.up)("FAIcon"),p=(0,o.up)("UserAvatar"),m=(0,o.up)("UserPopover"),h=(0,o.up)("RichContent"),f=(0,o.up)("i18n-t"),g=(0,o.up)("Timeago"),v=(0,o.up)("router-link"),w=(0,o.up)("Report"),K=(0,o.up)("StatusContent"),G=(0,o.up)("confirm-modal");return"mention"===e.notification.type?((0,o.wg)(),(0,o.iD)("article",b,[(0,o.Wm)(c,{class:"Notification",compact:!0,statusoid:e.notification.status},null,8,["statusoid"])])):((0,o.wg)(),(0,o.iD)("article",y,[e.needMute&&!e.unmuted?((0,o.wg)(),(0,o.iD)("div",D,[(0,o._)("small",null,[(0,o.Wm)(l,{user:e.notification.from_profile,at:!1},null,8,["user"])]),(0,o._)("button",{class:"button-unstyled unmute",onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.toggleMute&&e.toggleMute.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(d,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})])])):((0,o.wg)(),(0,o.iD)("div",{key:1,class:(0,r.C_)(["Notification non-mention",[e.userClass,{highlighted:e.userStyle},"-type--"+e.notification.type]]),style:(0,r.j5)([e.userStyle])},[(0,o._)("a",{class:"avatar-container",href:e.$router.resolve(e.userProfileLink).href,onClick:t[1]||(t[1]=(0,i.iM)((function(){}),["prevent"]))},[(0,o.Wm)(m,{"user-id":e.notification.from_profile.id,"overlay-centers":!0},{default:(0,o.w5)((function(){return[(0,o.Wm)(p,{class:"post-avatar",bot:e.botIndicator,compact:!0,"better-shadow":e.betterShadow,user:e.notification.from_profile},null,8,["bot","better-shadow","user"])]})),_:1},8,["user-id"])],8,_),(0,o._)("div",k,[(0,o._)("span",C,[(0,o._)("div",S,[e.notification.from_profile.name_html?((0,o.wg)(),(0,o.iD)("bdi",j,[(0,o.Wm)(h,{class:"username",title:"@"+e.notification.from_profile.screen_name_ui,html:e.notification.from_profile.name_html,emoji:e.notification.from_profile.emoji},null,8,["title","html","emoji"])])):((0,o.wg)(),(0,o.iD)("span",{key:1,class:"username",title:"@"+e.notification.from_profile.screen_name_ui},(0,r.zw)(e.notification.from_profile.name),9,F)),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),"like"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",A,[(0,o.Wm)(d,{class:"type-icon",icon:"star"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.favorited_you")),1)])):(0,o.kq)("",!0),"repeat"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",O,[(0,o.Wm)(d,{class:"type-icon",icon:"retweet",title:e.$t("tool_tip.repeat")},null,8,["title"]),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.repeated_you")),1)])):(0,o.kq)("",!0),"follow"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",E,[(0,o.Wm)(d,{class:"type-icon",icon:"user-plus"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.followed_you")),1)])):(0,o.kq)("",!0),"follow_request"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",z,[(0,o.Wm)(d,{class:"type-icon",icon:"user"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.follow_request")),1)])):(0,o.kq)("",!0),"move"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",P,[(0,o.Wm)(d,{class:"type-icon",icon:"suitcase-rolling"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.migrated_to")),1)])):(0,o.kq)("",!0),"pleroma:emoji_reaction"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",I,[(0,o._)("small",null,[(0,o.Wm)(f,{scope:"global",keypath:"notifications.reacted_with"},{default:(0,o.w5)((function(){return[e.notification.emoji_url?((0,o.wg)(),(0,o.iD)("img",{key:0,class:"emoji-reaction-emoji emoji-reaction-emoji-image",src:e.notification.emoji_url,alt:e.notification.emoji,title:e.notification.emoji},null,8,x)):((0,o.wg)(),(0,o.iD)("span",T,(0,r.zw)(e.notification.emoji),1))]})),_:1})])])):(0,o.kq)("",!0),"pleroma:report"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",$,[(0,o._)("small",null,(0,r.zw)(e.$t("notifications.submitted_report")),1)])):(0,o.kq)("",!0),"poll"===e.notification.type?((0,o.wg)(),(0,o.iD)("span",B,[(0,o.Wm)(d,{class:"type-icon",icon:"poll-h"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("small",null,(0,r.zw)(e.$t("notifications.poll_ended")),1)])):(0,o.kq)("",!0)]),e.isStatusNotification?((0,o.wg)(),(0,o.iD)("div",U,[e.notification.status?((0,o.wg)(),(0,o.j4)(v,{key:0,to:{name:"conversation",params:{id:e.notification.status.id}},class:"timeago-link faint-link"},{default:(0,o.w5)((function(){return[(0,o.Wm)(g,{time:e.notification.created_at,"auto-update":240},null,8,["time"])]})),_:1},8,["to"])):(0,o.kq)("",!0),(0,o._)("button",{class:"button-unstyled expand-icon",title:e.$t("tool_tip.toggle_expand"),"aria-expanded":e.statusExpanded,onClick:t[2]||(t[2]=(0,i.iM)((function(){return e.toggleStatusExpanded&&e.toggleStatusExpanded.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(d,{class:"fa-scale-110","fixed-width":"",icon:e.statusExpanded?"compress-alt":"expand-alt"},null,8,["icon"])],8,M)])):((0,o.wg)(),(0,o.iD)("div",L,[(0,o._)("span",R,[(0,o.Wm)(g,{time:e.notification.created_at,"auto-update":240},null,8,["time"])])])),e.needMute?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-unstyled",title:e.$t("tool_tip.toggle_mute"),"aria-expanded":!e.unmuted,onClick:t[3]||(t[3]=(0,i.iM)((function(){return e.toggleMute&&e.toggleMute.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(d,{class:"fa-scale-110 fa-old-padding",icon:"eye-slash"})],8,q)):(0,o.kq)("",!0)]),"follow"===e.notification.type||"follow_request"===e.notification.type?((0,o.wg)(),(0,o.iD)("div",N,[(0,o.Wm)(l,{class:"follow-name",user:e.notification.from_profile},null,8,["user"]),"follow_request"===e.notification.type?((0,o.wg)(),(0,o.iD)("div",Z,[(0,o._)("button",{class:"button-unstyled",title:e.$t("tool_tip.accept_follow_request"),onClick:t[4]||(t[4]=function(t){return e.approveUser()})},[(0,o.Wm)(d,{icon:"check",class:"fa-scale-110 fa-old-padding follow-request-accept"})],8,W),(0,o._)("button",{class:"button-unstyled",title:e.$t("tool_tip.reject_follow_request"),onClick:t[5]||(t[5]=function(t){return e.denyUser()})},[(0,o.Wm)(d,{icon:"times",class:"fa-scale-110 fa-old-padding follow-request-reject"})],8,H)])):(0,o.kq)("",!0)])):"move"===e.notification.type?((0,o.wg)(),(0,o.iD)("div",V,[(0,o.Wm)(l,{user:e.notification.target},null,8,["user"])])):"pleroma:report"===e.notification.type?((0,o.wg)(),(0,o.j4)(w,{key:2,"report-id":e.notification.report.id},null,8,["report-id"])):((0,o.wg)(),(0,o.j4)(K,{key:3,class:(0,r.C_)({faint:!e.statusExpanded}),compact:!e.statusExpanded,status:e.notification.action},null,8,["class","compact","status"]))])],6)),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingApproveConfirmDialog?((0,o.wg)(),(0,o.j4)(G,{key:0,title:e.$t("user_card.approve_confirm_title"),"confirm-text":e.$t("user_card.approve_confirm_accept_button"),"cancel-text":e.$t("user_card.approve_confirm_cancel_button"),onAccepted:e.doApprove,onCancelled:e.hideApproveConfirmDialog},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("user_card.approve_confirm",{user:e.user.screen_name_ui})),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0),e.showingDenyConfirmDialog?((0,o.wg)(),(0,o.j4)(G,{key:1,title:e.$t("user_card.deny_confirm_title"),"confirm-text":e.$t("user_card.deny_confirm_accept_button"),"cancel-text":e.$t("user_card.deny_confirm_cancel_button"),onAccepted:e.doDeny,onCancelled:e.hideDenyConfirmDialog},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("user_card.deny_confirm",{user:e.user.screen_name_ui})),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)]))]))}]]);var Se={class:"dropdown-menu"},je={class:"filter-trigger-button button-unstyled"},Fe=n(84535);function Ae(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Oe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ae(Object(n),!0).forEach((function(t){(0,v.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ae(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}be.vI.add(ye.G_j);const Ee={components:{Popover:Fe.default},computed:{filters:function(){return this.$store.getters.mergedConfig.notificationVisibility}},methods:{toggleNotificationFilter:function(e){this.$store.dispatch("setOption",{name:"notificationVisibility",value:Oe(Oe({},this.filters),{},(0,v.Z)({},e,!this.filters[e]))})}}},ze=(0,pe.Z)(Ee,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("FAIcon"),c=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(c,{trigger:"click",class:"NotificationFilters",placement:"bottom","bound-to":{x:"container"}},{content:(0,o.w5)((function(){return[(0,o._)("div",Se,[(0,o._)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=function(e){return a.toggleNotificationFilter("likes")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.likes}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_likes")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=function(e){return a.toggleNotificationFilter("repeats")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.repeats}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_repeats")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[2]||(t[2]=function(e){return a.toggleNotificationFilter("follows")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.follows}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_follows")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[3]||(t[3]=function(e){return a.toggleNotificationFilter("mentions")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.mentions}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_mentions")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=function(e){return a.toggleNotificationFilter("emojiReactions")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.emojiReactions}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_emoji_reactions")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=function(e){return a.toggleNotificationFilter("moves")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.moves}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_moves")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=function(e){return a.toggleNotificationFilter("polls")})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":a.filters.polls}])},null,2),(0,o.Uk)((0,r.zw)(e.$t("settings.notification_visibility_polls")),1)])])]})),trigger:(0,o.w5)((function(){return[(0,o._)("button",je,[(0,o.Wm)(u,{icon:"filter"})])]})),_:1})}]]);var Pe=n(15568),Ie=n(49753);function xe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}be.vI.add(ye.IJ7,ye.FPD,ye.Kl4);const Te={components:{Notification:Ce,NotificationFilters:ze},props:{minimalMode:Boolean,filterMode:Array,disableTeleport:Boolean},data:function(){return{showScrollTop:!1,bottomedOut:!1,seenToDisplayCount:30}},provide:function(){var e=this;return{popoversZLayer:(0,o.Fl)((function(){return e.popoversZLayer}))}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?xe(Object(n),!0).forEach((function(t){(0,v.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):xe(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({mainClass:function(){return this.minimalMode?"":"panel panel-default"},notifications:function(){return(0,ve.Bt)(this.$store)},error:function(){return this.$store.state.statuses.notifications.error},unseenNotifications:function(){return(0,ve.Km)(this.$store)},filteredNotifications:function(){return(0,ve.G2)(this.$store,this.filterMode)},unseenCount:function(){return this.unseenNotifications.length},unseenCountTitle:function(){return this.unseenCount+this.unreadChatCount+this.unreadAnnouncementCount},loading:function(){return this.$store.state.statuses.notifications.loading},noHeading:function(){var e=this.$store.state.interface.layoutType;return this.minimalMode||"mobile"===e},teleportTarget:function(){return{wide:"#notifs-column",mobile:"#mobile-notifications"}[this.$store.state.interface.layoutType]||"#notifs-sidebar"},popoversZLayer:function(){return"mobile"===this.$store.state.interface.layoutType?"navbar":null},notificationsToDisplay:function(){return this.filteredNotifications.slice(0,this.unseenCount+this.seenToDisplayCount)},noSticky:function(){return this.$store.getters.mergedConfig.disableStickyHeaders}},(0,w.Se)(["unreadChatCount","unreadAnnouncementCount"])),mounted:function(){this.scrollerRef=this.$refs.root.closest(".column.-scrollable"),this.scrollerRef||(this.scrollerRef=this.$refs.root.closest(".mobile-notifications")),this.scrollerRef||(this.scrollerRef=this.$refs.root.closest(".column.main")),this.scrollerRef.addEventListener("scroll",this.updateScrollPosition)},unmounted:function(){this.scrollerRef&&this.scrollerRef.removeEventListener("scroll",this.updateScrollPosition)},watch:{unseenCountTitle:function(e){e>0?(Ie.Z.drawFaviconBadge(),this.$store.dispatch("setPageTitle","(".concat(e,")"))):(Ie.Z.clearFaviconBadge(),this.$store.dispatch("setPageTitle",""))},teleportTarget:function(){var e=this;this.$nextTick((function(){e.scrollerRef.removeEventListener("scroll",e.updateScrollPosition),e.scrollerRef=e.$refs.root.closest(".column.-scrollable"),e.scrollerRef||(e.scrollerRef=e.$refs.root.closest(".mobile-notifications")),e.scrollerRef.addEventListener("scroll",e.updateScrollPosition),e.updateScrollPosition()}))}},methods:{scrollToTop:function(){this.scrollerRef.scrollTo({top:this.$refs.root.offsetTop})},updateScrollPosition:function(){this.showScrollTop=this.$refs.root.offsetTop<this.scrollerRef.scrollTop},markAsSeen:function(){this.$store.dispatch("markNotificationsAsSeen"),this.seenToDisplayCount=30},fetchOlderNotifications:function(){var e=this;if(!this.loading){var t=this.filteredNotifications.length-this.unseenCount;if(this.seenToDisplayCount<t)this.seenToDisplayCount=Math.min(this.seenToDisplayCount+20,t);else{this.seenToDisplayCount>t&&(this.seenToDisplayCount=t);var n=this.$store,o=n.state.users.currentUser.credentials;n.commit("setNotificationsLoading",{value:!0}),Pe.Z.fetchAndUpdate({store:n,credentials:o,older:!0}).then((function(t){n.commit("setNotificationsLoading",{value:!1}),0===t.length&&(e.bottomedOut=!0),e.seenToDisplayCount+=t.length}))}}}}},$e=(0,pe.Z)(Te,[["render",function(e,t,n,v,w,b){var y=(0,o.up)("FAIcon"),D=(0,o.up)("FALayers"),_=(0,o.up)("NotificationFilters"),k=(0,o.up)("notification");return(0,o.wg)(),(0,o.j4)(o.lR,{disabled:e.minimalMode||e.disableTeleport,to:e.teleportTarget},[((0,o.wg)(),(0,o.j4)((0,o.LL)(e.noHeading?"div":"aside"),{ref:"root",class:(0,r.C_)([{minimal:e.minimalMode},"Notifications"])},{default:(0,o.w5)((function(){return[(0,o._)("div",{class:(0,r.C_)(e.mainClass)},[e.noHeading?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",s,[(0,o._)("div",a,[(0,o.Uk)((0,r.zw)(e.$t("notifications.notifications"))+" ",1),e.unseenCount?((0,o.wg)(),(0,o.iD)("span",u,(0,r.zw)(e.unseenCount),1)):(0,o.kq)("",!0)]),e.showScrollTop?((0,o.wg)(),(0,o.iD)("div",c,[(0,o._)("button",{class:"button-unstyled scroll-to-top-button",type:"button",title:e.$t("general.scroll_to_top"),onClick:t[0]||(t[0]=function(){return e.scrollToTop&&e.scrollToTop.apply(e,arguments)})},[(0,o.Wm)(D,{class:"fa-scale-110 fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(y,{icon:"arrow-up"}),(0,o.Wm)(y,{icon:"minus",transform:"up-7"})]})),_:1})],8,l)])):(0,o.kq)("",!0),e.unseenCount?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-default read-button",type:"button",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.markAsSeen&&e.markAsSeen.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.$t("notifications.read")),1)):(0,o.kq)("",!0),(0,o.Wm)(_,{class:"rightside-button"})])),(0,o._)("div",d,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.notificationsToDisplay,(function(t){return(0,o.wg)(),(0,o.iD)("div",{key:t.id,role:"listitem",class:(0,r.C_)(["notification",{unseen:!e.minimalMode&&!t.seen}])},[p,(0,o.Wm)(k,{notification:t},null,8,["notification"])],2)})),128))]),(0,o._)("div",m,[e.bottomedOut?((0,o.wg)(),(0,o.iD)("div",h,(0,r.zw)(e.$t("notifications.no_more_notifications")),1)):e.loading?((0,o.wg)(),(0,o.iD)("div",g,[(0,o.Wm)(y,{icon:"circle-notch",spin:"",size:"lg"})])):((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-unstyled -link -fullwidth",onClick:t[2]||(t[2]=(0,i.iM)((function(t){return e.fetchOlderNotifications()}),["prevent"]))},[(0,o._)("div",f,(0,r.zw)(e.minimalMode?e.$t("interactions.load_older"):e.$t("notifications.load_older")),1)]))])],2)]})),_:1},8,["class"]))],8,["disabled","to"])}]]),Be=$e},29187:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var o=n(66252),r=n(3577),i={class:"panel-loading"},s={class:"loading-text"},a=n(9382),u=n(84131);a.vI.add(u.IJ7);const c={},l=(0,n(83744).Z)(c,[["render",function(e,t,n,a,u,c){var l=(0,o.up)("FAIcon");return(0,o.wg)(),(0,o.iD)("div",i,[(0,o._)("span",s,[(0,o.Wm)(l,{icon:"circle-notch",spin:"",size:"3x"}),(0,o.Uk)(" "+(0,r.zw)(e.$t("general.loading")),1)])])}]])},84535:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var o=n(66252),r=n(49963),i=n(3577);const s={name:"Popover",props:{trigger:String,placement:String,boundTo:Object,boundToSelector:String,margin:Object,offset:Object,popoverClass:String,removePadding:Boolean,disabled:Boolean,overlayCenters:Boolean,overlayCentersSelector:String,stayOnClick:Boolean,normalButton:Boolean,triggerAttrs:{type:Object,default:{}}},inject:["popoversZLayer"],data:function(){return{anchorEl:null,teleport:!1,lockReEntry:!1,hidden:!0,styles:{},oldSize:{width:0,height:0},scrollable:null,graceTimeout:null,parentPopover:null,disableClickOutside:!1,childrenShown:new Set}},methods:{setAnchorEl:function(e){this.anchorEl=e,this.updateStyles()},containerBoundingClientRect:function(){return(this.boundToSelector?this.$el.closest(this.boundToSelector):this.$el.offsetParent).getBoundingClientRect()},updateStyles:function(){if(this.hidden)this.styles={};else{var e=this.anchorEl||this.$refs.trigger&&this.$refs.trigger.children[0]||this.$el,t=e.offsetHeight||e.clientHeight,n=e.offsetWidth||e.clientWidth,o=e.getBoundingClientRect(),r=getComputedStyle(e),i=parseFloat(r.paddingTop),s=parseFloat(r.paddingBottom),a=parseFloat(r.paddingRight),u=parseFloat(r.paddingLeft),c=o.left+.5*n,l=o.top+.5*t,d=this.$refs.content,p=this.overlayCenters?this.$refs.content.querySelector(this.overlayCentersSelector):null,m=this.boundTo&&("container"===this.boundTo.x||"container"===this.boundTo.y)&&this.containerBoundingClientRect(),h=this.margin||{},f=this.boundTo&&"container"===this.boundTo.x?{min:m.left+(h.left||0),max:m.right-(h.right||0)}:{min:0+(h.left||10),max:window.innerWidth-(h.right||10)},g=this.boundTo&&"container"===this.boundTo.y?{min:m.top+(h.top||0),max:m.bottom-(h.bottom||0)}:{min:0+(h.top||50),max:window.innerHeight-(h.bottom||5)},v=0,w=0;if(p){var b=d.getBoundingClientRect(),y=p.getBoundingClientRect(),D=y.left-b.left,_=y.top-b.top;v=-D-.5*p.offsetWidth,w=-_-.5*p.offsetHeight}else v=-.5*d.offsetWidth,w=-.5*d.offsetHeight;var k=c+v,C=k+d.offsetWidth,S=l+w,j=S+d.offsetHeight;k<f.min&&(v+=f.min-k),C>f.max&&(v-=C-f.max),S<g.min&&(w+=g.min-S),j>g.max&&(w-=j-g.max);var F=0,A=0;if(p)F=c+v,A=l+w;else if("right"!==this.placement&&"left"!==this.placement){var O="bottom"!==this.placement,E=l-.5*t+(this.removePadding?i:0),z=l+.5*t-(this.removePadding?s:0);z+d.offsetHeight>g.max&&(O=!0),E-d.offsetHeight<g.min&&(O=!1);var P=this.offset&&this.offset.y||0;A=O?E-P-d.offsetHeight:z+P,F=c+v+(this.offset&&this.offset.x||0)}else{var I="left"!==this.placement,x=c-.5*n+(this.removePadding?a:0),T=c+.5*n-(this.removePadding?u:0);T+d.offsetWidth>f.max&&(I=!0),x-d.offsetWidth<f.min&&(I=!1);var $=this.offset&&this.offset.x||0;F=I?x-$-d.offsetWidth:T+$,A=l+w+(this.offset&&this.offset.y||0)}this.styles={left:"".concat(Math.round(F),"px"),top:"".concat(Math.round(A),"px")},this.popoversZLayer&&(this.styles["--ZI_popover_override"]="var(--ZI_".concat(this.popoversZLayer,"_popovers)")),m&&(this.styles.maxWidth="".concat(Math.round(m.width),"px"))}},showPopover:function(){var e=this;if(!this.disabled){this.disableClickOutside=!0,setTimeout((function(){e.disableClickOutside=!1}),0);var t=this.hidden;this.hidden=!1,this.parentPopover&&this.parentPopover.onChildPopoverState(this,!0),("click"===this.trigger||this.stayOnClick)&&document.addEventListener("click",this.onClickOutside),this.scrollable.addEventListener("scroll",this.onScroll),this.scrollable.addEventListener("resize",this.onResize),this.$nextTick((function(){t&&e.$emit("show"),e.updateStyles()}))}},hidePopover:function(){this.disabled||(this.hidden||this.$emit("close"),this.hidden=!0,this.parentPopover&&this.parentPopover.onChildPopoverState(this,!1),"click"===this.trigger&&document.removeEventListener("click",this.onClickOutside),this.scrollable.removeEventListener("scroll",this.onScroll),this.scrollable.removeEventListener("resize",this.onResize))},onMouseenter:function(e){"hover"===this.trigger&&(this.lockReEntry=!1,clearTimeout(this.graceTimeout),this.graceTimeout=null,this.showPopover())},onMouseleave:function(e){var t=this;"hover"===this.trigger&&0===this.childrenShown.size&&(this.graceTimeout=setTimeout((function(){return t.hidePopover()}),1))},onMouseenterContent:function(e){"hover"!==this.trigger||this.lockReEntry||(this.lockReEntry=!0,clearTimeout(this.graceTimeout),this.graceTimeout=null,this.showPopover())},onMouseleaveContent:function(e){var t=this;"hover"===this.trigger&&0===this.childrenShown.size&&(this.graceTimeout=setTimeout((function(){return t.hidePopover()}),1))},onClick:function(e){"click"===this.trigger&&(this.hidden?this.showPopover():this.hidePopover())},onClickOutside:function(e){this.disableClickOutside||this.hidden||this.$refs.content&&this.$refs.content.contains(e.target)||this.$el.contains(e.target)||this.childrenShown.size>0||(this.hidePopover(),this.parentPopover&&this.parentPopover.onClickOutside(e))},onScroll:function(e){this.updateStyles()},onResize:function(e){this.updateStyles()},onChildPopoverState:function(e,t){t?this.childrenShown.add(e):this.childrenShown.delete(e)}},updated:function(){var e=this.$refs.content;e&&(this.oldSize.width===e.offsetWidth&&this.oldSize.height===e.offsetHeight||(this.updateStyles(),this.oldSize={width:e.offsetWidth,height:e.offsetHeight}))},mounted:function(){this.teleport=!0;var e=this.$refs.trigger.closest(".column.-scrollable")||this.$refs.trigger.closest(".mobile-notifications");e||(e=window),this.scrollable=e;for(var t=this.$parent;t&&"Popover"!==t.$.type.name;)t=t.$parent;this.parentPopover=t},beforeUnmount:function(){this.hidePopover()}},a=(0,n(83744).Z)(s,[["render",function(e,t,n,s,a,u){return(0,o.wg)(),(0,o.iD)("span",{onMouseenter:t[4]||(t[4]=function(){return e.onMouseenter&&e.onMouseenter.apply(e,arguments)}),onMouseleave:t[5]||(t[5]=function(){return e.onMouseleave&&e.onMouseleave.apply(e,arguments)})},[(0,o._)("button",(0,o.dG)({ref:"trigger",class:["popover-trigger-button",e.normalButton?"button-default btn":"button-unstyled"],type:"button"},e.triggerAttrs,{onClick:t[0]||(t[0]=function(){return e.onClick&&e.onClick.apply(e,arguments)})}),[(0,o.WI)(e.$slots,"trigger")],16),((0,o.wg)(),(0,o.j4)(o.lR,{disabled:!e.teleport,to:"#popovers"},[(0,o.Wm)(r.uT,{name:"fade"},{default:(0,o.w5)((function(){return[e.hidden?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",{key:0,ref:"content",style:(0,i.j5)(e.styles),class:(0,i.C_)(["popover",e.popoverClass||"popover-default"]),onMouseenter:t[1]||(t[1]=function(){return e.onMouseenterContent&&e.onMouseenterContent.apply(e,arguments)}),onMouseleave:t[2]||(t[2]=function(){return e.onMouseleaveContent&&e.onMouseleaveContent.apply(e,arguments)}),onClick:t[3]||(t[3]=function(){return e.onClickContent&&e.onClickContent.apply(e,arguments)})},[(0,o.WI)(e.$slots,"content",{class:"popover-inner",close:e.hidePopover})],38))]})),_:3})],8,["disabled"]))],32)}]])},45333:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Me});var o=n(66252),r=n(49963),i=n(3577),s={ref:"form",class:"post-status-form"},a={class:"form-group"},u={key:1,class:"visibility-notice notice-dismissible"},c=["title"],l={key:2,class:"visibility-notice notice-dismissible"},d=["title"],p={key:3,class:"visibility-notice notice-dismissible"},m=["title"],h={key:4,class:"visibility-notice"},f={key:0},g={key:1},v={key:5,class:"visibility-notice edit-warning"},w={key:6,class:"preview-heading faint"},b={class:"preview-spinner"},y={key:7,class:"preview-container"},D={key:0,class:"preview-status"},_={key:1,class:"preview-status preview-error"},k={key:8,role:"radiogroup",class:"btn-group reply-or-quote-selector"},C=["id","aria-labelledby","aria-checked"],S=["id","aria-labelledby","aria-checked"],j=["placeholder","disabled"],F=["placeholder","disabled"],A={key:10,class:"visibility-tray"},O={key:1,class:"text-format"},E=["value"],z={key:2,class:"text-format"},P={class:"only-format"},I={ref:"bottom",class:"form-bottom"},x={class:"form-bottom-left"},T=["title"],$=["title"],B={key:0,disabled:"",class:"btn button-default"},U={key:1,disabled:"",class:"btn button-default"},M=["disabled"],L={key:1,class:"alert error"},R={key:3,class:"upload_settings"},q=n(15861),N=n(4942),Z=n(93433),W=n(23279),H=n.n(W),V=n(45578),K=n.n(V),G=n(35161),Y=n.n(G),J=n(43063),Q=n.n(J),X=n(64687),ee=n.n(X),te=n(7257),ne=n(53599),oe=n(37804),re=n(54110),ie=n(88671),se={key:0,class:"poll-form"},ae={class:"input-container"},ue=["id","onUpdate:modelValue","placeholder","maxlength","onKeydown"],ce=["onClick"],le={class:"poll-type-expiry"},de=["title"],pe={value:"single"},me={value:"multiple"},he=["title"],fe=["min","max"],ge=["value"],ve=n(44908),we=n.n(ve),be=n(27483),ye=n(9382),De=n(76990),_e=n(84131);ye.vI.add(_e.NBC,_e.r8p);const ke={components:{Select:De.Z},name:"PollForm",props:["visible"],data:function(){return{pollType:"single",options:["",""],expiryAmount:10,expiryUnit:"minutes"}},computed:{pollLimits:function(){return this.$store.state.instance.pollLimits},maxOptions:function(){return this.pollLimits.max_options},maxLength:function(){return this.pollLimits.max_option_chars},expiryUnits:function(){var e=this,t=this.convertExpiryFromUnit;return["minutes","hours","days"].filter((function(n){return e.pollLimits.max_expiration>=t(n,1)}))},minExpirationInCurrentUnit:function(){return Math.ceil(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.min_expiration))},maxExpirationInCurrentUnit:function(){return Math.floor(this.convertExpiryToUnit(this.expiryUnit,this.pollLimits.max_expiration))}},methods:{clear:function(){this.pollType="single",this.options=["",""],this.expiryAmount=10,this.expiryUnit="minutes"},nextOption:function(e){var t=this.$el.querySelector("#poll-".concat(e+1));t?t.focus():this.addOption()&&this.$nextTick((function(){this.nextOption(e)}))},addOption:function(){return this.options.length<this.maxOptions&&(this.options.push(""),!0)},deleteOption:function(e,t){this.options.length>2&&(this.options.splice(e,1),this.updatePollToParent())},convertExpiryToUnit:function(e,t){return be.dX(e,t)},convertExpiryFromUnit:function(e,t){return be.cC(e,t)},expiryAmountChange:function(){this.expiryAmount=Math.max(this.minExpirationInCurrentUnit,this.expiryAmount),this.expiryAmount=Math.min(this.maxExpirationInCurrentUnit,this.expiryAmount),this.updatePollToParent()},updatePollToParent:function(){var e=this.convertExpiryFromUnit(this.expiryUnit,this.expiryAmount),t=we()(this.options.filter((function(e){return""!==e})));t.length<2?this.$emit("update-poll",{error:this.$t("polls.not_enough_options")}):this.$emit("update-poll",{options:t,multiple:"multiple"===this.pollType,expiresIn:e})}}};var Ce=n(83744);const Se=(0,Ce.Z)(ke,[["render",function(e,t,n,s,a,u){var c=(0,o.up)("FAIcon"),l=(0,o.up)("Select");return e.visible?((0,o.wg)(),(0,o.iD)("div",se,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.options,(function(n,i){return(0,o.wg)(),(0,o.iD)("div",{key:i,class:"poll-option"},[(0,o._)("div",ae,[(0,o.wy)((0,o._)("input",{id:"poll-".concat(i),"onUpdate:modelValue":function(t){return e.options[i]=t},size:"1",class:"poll-option-input",type:"text",placeholder:e.$t("polls.option"),maxlength:e.maxLength,onChange:t[0]||(t[0]=function(){return e.updatePollToParent&&e.updatePollToParent.apply(e,arguments)}),onKeydown:(0,r.D2)((0,r.iM)((function(t){return e.nextOption(i)}),["stop","prevent"]),["enter"])},null,40,ue),[[r.nr,e.options[i]]])]),e.options.length>2?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"delete-option button-unstyled -hover-highlight",onClick:function(t){return e.deleteOption(i)}},[(0,o.Wm)(c,{icon:"times"})],8,ce)):(0,o.kq)("",!0)])})),128)),e.options.length<e.maxOptions?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"add-option faint button-unstyled -hover-highlight",onClick:t[1]||(t[1]=function(){return e.addOption&&e.addOption.apply(e,arguments)})},[(0,o.Wm)(c,{icon:"plus",size:"sm"}),(0,o.Uk)(" "+(0,i.zw)(e.$t("polls.add_option")),1)])):(0,o.kq)("",!0),(0,o._)("div",le,[(0,o._)("div",{class:"poll-type",title:e.$t("polls.type")},[(0,o.Wm)(l,{modelValue:e.pollType,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.pollType=t}),class:"poll-type-select",unstyled:"true",onChange:e.updatePollToParent},{default:(0,o.w5)((function(){return[(0,o._)("option",pe,(0,i.zw)(e.$t("polls.single_choice")),1),(0,o._)("option",me,(0,i.zw)(e.$t("polls.multiple_choices")),1)]})),_:1},8,["modelValue","onChange"])],8,de),(0,o._)("div",{class:"poll-expiry",title:e.$t("polls.expiry")},[(0,o.wy)((0,o._)("input",{"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.expiryAmount=t}),type:"number",class:"expiry-amount hide-number-spinner",min:e.minExpirationInCurrentUnit,max:e.maxExpirationInCurrentUnit,onChange:t[4]||(t[4]=function(){return e.expiryAmountChange&&e.expiryAmountChange.apply(e,arguments)})},null,40,fe),[[r.nr,e.expiryAmount]]),(0,o.Uk)(" "+(0,i.zw)(" ")+" "),(0,o.Wm)(l,{modelValue:e.expiryUnit,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.expiryUnit=t}),unstyled:"true",class:"expiry-unit",onChange:e.expiryAmountChange},{default:(0,o.w5)((function(){return[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.expiryUnits,(function(t){return(0,o.wg)(),(0,o.iD)("option",{key:t,value:t},(0,i.zw)(e.$tc("time.unit.".concat(t,"_short"),e.expiryAmount,[""])),9,ge)})),128))]})),_:1},8,["modelValue","onChange"])],8,he)])])):(0,o.kq)("",!0)}]]);var je=n(66596),Fe=n(67671),Ae=n(10252),Oe=n(58394),Ee=n(67952),ze=n(37230),Pe=n(19003),Ie=n(989),xe=n(66141);function Te(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function $e(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Te(Object(n),!0).forEach((function(t){(0,N.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Te(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}ye.vI.add(_e.RKn,_e.Mm7,_e.cf$,_e.gPx,_e.NBC,_e.IJ7);var Be=function(e){return Number(e.substring(0,e.length-2))};const Ue={props:["statusId","statusText","statusIsSensitive","statusPoll","statusFiles","statusMediaDescriptions","statusScope","statusContentType","replyTo","repliedUser","attentions","copyMessageScope","subject","disableSubject","disableScopeSelector","disableVisibilitySelector","disableNotice","disableLockWarning","disablePolls","disableSensitivityCheckbox","disableSubmit","disablePreview","placeholder","maxHeight","postHandler","preserveFocus","autoFocus","fileLimit","submitOnEnter","emojiPickerPlacement","optimisticPosting"],emits:["posted","resize","mediaplay","mediapause"],components:{MediaUpload:oe.Z,EmojiInput:ie.Z,PollForm:Se,ScopeSelector:re.Z,Checkbox:xe.Z,Select:De.Z,Attachment:je.Z,StatusContent:Ae.Z,Gallery:Fe.Z},mounted:function(){if(this.updateIdempotencyKey(),this.resize(this.$refs.textarea),this.replyTo){var e=this.$refs.textarea.value.length;this.$refs.textarea.setSelectionRange(e,e)}(this.replyTo||this.autoFocus)&&this.$refs.textarea.focus()},data:function(){var e=this.$route.query.message||"",t=this.$store.getters.mergedConfig.scopeCopy;if(this.replyTo){var n=this.$store.state.users.currentUser;e=function(e,t){var n=e.user,o=e.attentions,r=void 0===o?[]:o,i=(0,Z.Z)(r);i.unshift(n),i=K()(i,"id"),i=Q()(i,{id:t.id});var s=Y()(i,(function(e){return"@".concat(e.screen_name)}));return s.length>0?s.join(" ")+" ":""}({user:this.repliedUser,attentions:this.attentions},n)}var o=this.copyMessageScope&&t||"direct"===this.copyMessageScope?this.copyMessageScope:this.$store.state.users.currentUser.default_scope,r=this.$store.getters.mergedConfig,i=r.postContentType,s=r.sensitiveByDefault,a={spoilerText:this.subject||"",status:e,nsfw:!!s,files:[],poll:{},mediaDescriptions:{},visibility:o,contentType:i};if(this.statusId){var u=this.statusContentType||i;a={spoilerText:this.subject||"",status:this.statusText||"",nsfw:this.statusIsSensitive||!!s,files:this.statusFiles||[],poll:this.statusPoll||{},mediaDescriptions:this.statusMediaDescriptions||{},visibility:this.statusScope||o,contentType:u,quoting:!1}}return{randomSeed:(0,ne.Z)(),dropFiles:[],uploadingFiles:!1,error:null,posting:!1,highlighted:0,newStatus:a,caret:0,pollFormVisible:!1,showDropIcon:"hide",dropStopTimeout:null,preview:null,previewLoading:!1,emojiInputShown:!1,idempotencyKey:""}},computed:$e($e({users:function(){return this.$store.state.users.users},userDefaultScope:function(){return this.$store.state.users.currentUser.default_scope},showAllScopes:function(){return!this.mergedConfig.minimalScopesMode},emojiUserSuggestor:function(){return(0,Pe.ZP)({emoji:[].concat((0,Z.Z)(this.$store.getters.standardEmojiList),(0,Z.Z)(this.$store.state.instance.customEmoji)),store:this.$store})},emojiSuggestor:function(){return(0,Pe.ZP)({emoji:[].concat((0,Z.Z)(this.$store.getters.standardEmojiList),(0,Z.Z)(this.$store.state.instance.customEmoji))})},emoji:function(){return this.$store.getters.standardEmojiList||[]},customEmoji:function(){return this.$store.state.instance.customEmoji||[]},statusLength:function(){return this.newStatus.status.length},spoilerTextLength:function(){return this.newStatus.spoilerText.length},statusLengthLimit:function(){return this.$store.state.instance.textlimit},hasStatusLengthLimit:function(){return this.statusLengthLimit>0},charactersLeft:function(){return this.statusLengthLimit-(this.statusLength+this.spoilerTextLength)},isOverLengthLimit:function(){return this.hasStatusLengthLimit&&this.charactersLeft<0},minimalScopesMode:function(){return this.$store.state.instance.minimalScopesMode},alwaysShowSubject:function(){return this.mergedConfig.alwaysShowSubjectInput},postFormats:function(){return this.$store.state.instance.postFormats||[]},safeDMEnabled:function(){return this.$store.state.instance.safeDM},pollsAvailable:function(){return this.$store.state.instance.pollsAvailable&&this.$store.state.instance.pollLimits.max_options>=2&&!0!==this.disablePolls},hideScopeNotice:function(){return this.disableNotice||this.$store.getters.mergedConfig.hideScopeNotice},pollContentError:function(){return this.pollFormVisible&&this.newStatus.poll&&this.newStatus.poll.error},showPreview:function(){return!this.disablePreview&&(!!this.preview||this.previewLoading)},emptyStatus:function(){return""===this.newStatus.status.trim()&&0===this.newStatus.files.length},uploadFileLimitReached:function(){return this.newStatus.files.length>=this.fileLimit},isEdit:function(){return void 0!==this.statusId&&""!==this.statusId.trim()},quotable:function(){if(!this.$store.state.instance.quotingAvailable)return!1;if(!this.replyTo)return!1;var e=this.$store.state.statuses.allStatusesObject[this.replyTo];return!!e&&("public"===e.visibility||"unlisted"===e.visibility||"local"===e.visibility||"private"===e.visibility&&e.user.id===this.$store.state.users.currentUser.id)}},(0,Ie.Se)(["mergedConfig"])),(0,Ie.rn)({mobileLayout:function(e){return e.interface.mobileLayout}})),watch:{newStatus:{deep:!0,handler:function(){this.statusChanged()}}},methods:{statusChanged:function(){this.autoPreview(),this.updateIdempotencyKey()},clearStatus:function(){var e=this,t=this.newStatus;this.newStatus={status:"",spoilerText:"",files:[],visibility:t.visibility,contentType:t.contentType,poll:{},mediaDescriptions:{},quoting:!1},this.pollFormVisible=!1,this.$refs.mediaUpload&&this.$refs.mediaUpload.clearFile(),this.clearPollForm(),this.preserveFocus&&this.$nextTick((function(){e.$refs.textarea.focus()}));var n=this.$el.querySelector("textarea");n.style.height="auto",n.style.height=void 0,this.error=null,this.preview&&this.previewStatus()},postStatus:function(e,t){var n=arguments,o=this;return(0,q.Z)(ee().mark((function r(){var i,s,a,u;return ee().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(n.length>2&&void 0!==n[2]&&n[2],!o.posting||o.optimisticPosting){r.next=3;break}return r.abrupt("return");case 3:if(!o.disableSubmit){r.next=5;break}return r.abrupt("return");case 5:if(!o.emojiInputShown){r.next=7;break}return r.abrupt("return");case 7:if(o.submitOnEnter&&(e.stopPropagation(),e.preventDefault()),!o.optimisticPosting||!o.emptyStatus&&!o.isOverLengthLimit){r.next=10;break}return r.abrupt("return");case 10:if(!o.emptyStatus){r.next=13;break}return o.error=o.$t("post_status.empty_status_error"),r.abrupt("return");case 13:if(s=o.pollFormVisible?o.newStatus.poll:{},!o.pollContentError){r.next=17;break}return o.error=o.pollContentError,r.abrupt("return");case 17:return o.posting=!0,r.prev=18,r.next=21,o.setAllMediaDescriptions();case 21:r.next=28;break;case 23:return r.prev=23,r.t0=r.catch(18),o.error=o.$t("post_status.media_description_error"),o.posting=!1,r.abrupt("return");case 28:a=t.quoting?"quoteId":"inReplyToStatusId",i={status:t.status,spoilerText:t.spoilerText||null,visibility:t.visibility,sensitive:t.nsfw,media:t.files,store:o.$store},(0,N.Z)(i,a,o.replyTo),(0,N.Z)(i,"contentType",t.contentType),(0,N.Z)(i,"poll",s),(0,N.Z)(i,"idempotencyKey",o.idempotencyKey),u=i,(o.postHandler?o.postHandler:te.Z.postStatus)(u).then((function(e){e.error?o.error=e.error:(o.clearStatus(),o.$emit("posted",e)),o.posting=!1}));case 32:case"end":return r.stop()}}),r,null,[[18,23]])})))()},previewStatus:function(){var e,t=this;if(this.emptyStatus&&""===this.newStatus.spoilerText.trim())return this.preview={error:this.$t("post_status.preview_empty")},void(this.previewLoading=!1);var n=this.newStatus;this.previewLoading=!0;var o=n.quoting?"quoteId":"inReplyToStatusId";te.Z.postStatus((e={status:n.status,spoilerText:n.spoilerText||null,visibility:n.visibility,sensitive:n.nsfw,media:[],store:this.$store},(0,N.Z)(e,o,this.replyTo),(0,N.Z)(e,"contentType",n.contentType),(0,N.Z)(e,"poll",{}),(0,N.Z)(e,"preview",!0),e)).then((function(e){t.previewLoading&&(e.error?t.preview={error:e.error}:t.preview=e)})).catch((function(e){t.preview={error:e}})).finally((function(){t.previewLoading=!1}))},debouncePreviewStatus:H()((function(){this.previewStatus()}),500),autoPreview:function(){this.preview&&(this.previewLoading=!0,this.debouncePreviewStatus())},closePreview:function(){this.preview=null,this.previewLoading=!1},togglePreview:function(){this.showPreview?this.closePreview():this.previewStatus()},addMediaFile:function(e){this.newStatus.files.push(e),this.$emit("resize",{delayed:!0})},removeMediaFile:function(e){var t=this.newStatus.files.indexOf(e);this.newStatus.files.splice(t,1),this.$emit("resize")},editAttachment:function(e,t){this.newStatus.mediaDescriptions[e.id]=t},shiftUpMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n-1,0,e)},shiftDnMediaFile:function(e){var t=this.newStatus.files,n=this.newStatus.files.indexOf(e);t.splice(n,1),t.splice(n+1,0,e)},uploadFailed:function(e,t){t=t||{},this.error=this.$t("upload.error.base")+" "+this.$t("upload.error."+e,t)},startedUploadingFiles:function(){this.uploadingFiles=!0},finishedUploadingFiles:function(){this.$emit("resize"),this.uploadingFiles=!1},type:function(e){return Oe.ZP.fileType(e.mimetype)},paste:function(e){this.autoPreview(),this.resize(e),e.clipboardData.files.length>0&&(e.preventDefault(),this.dropFiles=[e.clipboardData.files[0]])},fileDrop:function(e){e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(e.preventDefault(),this.dropFiles=e.dataTransfer.files,clearTimeout(this.dropStopTimeout),this.showDropIcon="hide")},fileDragStop:function(e){var t=this;clearTimeout(this.dropStopTimeout),this.showDropIcon="fade",this.dropStopTimeout=setTimeout((function(){return t.showDropIcon="hide"}),500)},fileDrag:function(e){e.dataTransfer.dropEffect=this.uploadFileLimitReached?"none":"copy",e.dataTransfer&&e.dataTransfer.types.includes("Files")&&(clearTimeout(this.dropStopTimeout),this.showDropIcon="show")},onEmojiInputInput:function(e){var t=this;this.$nextTick((function(){t.resize(t.$refs.textarea)}))},resize:function(e){var t=e.target||e;if(t instanceof window.Element){if(""===t.value)return t.style.height=null,void this.$emit("resize");var n=this.$refs.form,o=this.$refs.bottom,r=window.getComputedStyle(o)["padding-bottom"],i=Be(r),s=this.$el.closest(".column.-scrollable")||this.$el.closest(".post-form-modal-view")||window,a=window.getComputedStyle(t)["padding-top"],u=window.getComputedStyle(t)["padding-bottom"],c=Be(a)+Be(u),l=Be(t.style.height),d=s===window?s.scrollY:s.scrollTop,p=s===window?s.innerHeight:s.offsetHeight,m=d+p;t.style.height="auto";var h=Math.floor(t.scrollHeight-c),f=this.maxHeight?Math.min(h,this.maxHeight):h;Math.abs(f-l)<=1&&(f=l),t.style.height="".concat(f,"px"),this.$emit("resize",f);var g=o.offsetHeight+(0,Ee.y)(o,s).top+i,v=m<g,w=p<n.offsetHeight,b=g-m,y=!v||w&&this.$refs.textarea.selectionStart!==this.$refs.textarea.value.length?0:b,D=Math.round(d+y);s===window?s.scroll(0,D):s.scrollTop=D}},showEmojiPicker:function(){this.$refs.textarea.focus(),this.$refs["emoji-input"].triggerShowPicker()},clearError:function(){this.error=null},changeVis:function(e){this.newStatus.visibility=e},togglePollForm:function(){this.pollFormVisible=!this.pollFormVisible},setPoll:function(e){this.newStatus.poll=e},clearPollForm:function(){this.$refs.pollForm&&this.$refs.pollForm.clear()},dismissScopeNotice:function(){this.$store.dispatch("setOption",{name:"hideScopeNotice",value:!0})},setMediaDescription:function(e){var t=this.newStatus.mediaDescriptions[e];if(t&&""!==t.trim())return te.Z.setMediaDescription({store:this.$store,id:e,description:t})},setAllMediaDescriptions:function(){var e=this,t=this.newStatus.files.map((function(e){return e.id}));return Promise.all(t.map((function(t){return e.setMediaDescription(t)})))},handleEmojiInputShow:function(e){this.emojiInputShown=e},updateIdempotencyKey:function(){this.idempotencyKey=Date.now().toString()},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")},propsToNative:function(e){return(0,ze.X)(e)}}},Me=(0,Ce.Z)(Ue,[["render",function(e,t,n,q,N,Z){var W=(0,o.up)("i18n-t"),H=(0,o.up)("FAIcon"),V=(0,o.up)("StatusContent"),K=(0,o.up)("EmojiInput"),G=(0,o.up)("scope-selector"),Y=(0,o.up)("Select"),J=(0,o.up)("poll-form"),Q=(0,o.up)("media-upload"),X=(0,o.up)("gallery"),ee=(0,o.up)("Checkbox");return(0,o.wg)(),(0,o.iD)("div",s,[(0,o._)("form",{autocomplete:"off",onSubmit:t[27]||(t[27]=(0,r.iM)((function(){}),["prevent"])),onDragover:t[28]||(t[28]=(0,r.iM)((function(){return e.fileDrag&&e.fileDrag.apply(e,arguments)}),["prevent"]))},[(0,o._)("div",a,[e.$store.state.users.currentUser.locked||"private"!=e.newStatus.visibility||e.disableLockWarning?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(W,{key:0,keypath:"post_status.account_not_locked_warning",tag:"p",class:"visibility-notice",scope:"global"},{default:(0,o.w5)((function(){return[(0,o._)("button",{class:"button-unstyled -link",onClick:t[0]||(t[0]=function(){return e.openProfileTab&&e.openProfileTab.apply(e,arguments)})},(0,i.zw)(e.$t("post_status.account_not_locked_warning_link")),1)]})),_:1})),e.hideScopeNotice||"public"!==e.newStatus.visibility?e.hideScopeNotice||"unlisted"!==e.newStatus.visibility?!e.hideScopeNotice&&"private"===e.newStatus.visibility&&e.$store.state.users.currentUser.locked?((0,o.wg)(),(0,o.iD)("p",p,[(0,o._)("span",null,(0,i.zw)(e.$t("post_status.scope_notice.private")),1),(0,o._)("a",{class:"fa-scale-110 fa-old-padding dismiss",title:e.$t("post_status.scope_notice_dismiss"),role:"button",tabindex:"0",onClick:t[3]||(t[3]=(0,r.iM)((function(t){return e.dismissScopeNotice()}),["prevent"]))},[(0,o.Wm)(H,{icon:"times"})],8,m)])):"direct"===e.newStatus.visibility?((0,o.wg)(),(0,o.iD)("p",h,[e.safeDMEnabled?((0,o.wg)(),(0,o.iD)("span",f,(0,i.zw)(e.$t("post_status.direct_warning_to_first_only")),1)):((0,o.wg)(),(0,o.iD)("span",g,(0,i.zw)(e.$t("post_status.direct_warning_to_all")),1))])):(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("p",l,[(0,o._)("span",null,(0,i.zw)(e.$t("post_status.scope_notice.unlisted")),1),(0,o._)("a",{class:"fa-scale-110 fa-old-padding dismiss",title:e.$t("post_status.scope_notice_dismiss"),role:"button",tabindex:"0",onClick:t[2]||(t[2]=(0,r.iM)((function(t){return e.dismissScopeNotice()}),["prevent"]))},[(0,o.Wm)(H,{icon:"times"})],8,d)])):((0,o.wg)(),(0,o.iD)("p",u,[(0,o._)("span",null,(0,i.zw)(e.$t("post_status.scope_notice.public")),1),(0,o._)("a",{class:"fa-scale-110 fa-old-padding dismiss",title:e.$t("post_status.scope_notice_dismiss"),role:"button",tabindex:"0",onClick:t[1]||(t[1]=(0,r.iM)((function(t){return e.dismissScopeNotice()}),["prevent"]))},[(0,o.Wm)(H,{icon:"times"})],8,c)])),e.isEdit?((0,o.wg)(),(0,o.iD)("div",v,[(0,o._)("p",null,(0,i.zw)(e.$t("post_status.edit_remote_warning")),1),(0,o._)("p",null,(0,i.zw)(e.$t("post_status.edit_unsupported_warning")),1)])):(0,o.kq)("",!0),e.disablePreview?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",w,[(0,o._)("a",{class:"preview-toggle faint",onClick:t[4]||(t[4]=(0,r.iM)((function(){return e.togglePreview&&e.togglePreview.apply(e,arguments)}),["stop","prevent"]))},[(0,o.Uk)((0,i.zw)(e.$t("post_status.preview"))+" ",1),(0,o.Wm)(H,{icon:e.showPreview?"chevron-left":"chevron-right"},null,8,["icon"])]),(0,o.wy)((0,o._)("div",b,[(0,o.Wm)(H,{class:"fa-old-padding",spin:"",icon:"circle-notch"})],512),[[r.F8,e.previewLoading]])])),e.showPreview?((0,o.wg)(),(0,o.iD)("div",y,[e.preview?e.preview.error?((0,o.wg)(),(0,o.iD)("div",_,(0,i.zw)(e.preview.error),1)):((0,o.wg)(),(0,o.j4)(V,{key:2,status:e.preview,class:"preview-status"},null,8,["status"])):((0,o.wg)(),(0,o.iD)("div",D,(0,i.zw)(e.$t("general.loading")),1))])):(0,o.kq)("",!0),e.quotable?((0,o.wg)(),(0,o.iD)("div",k,[(0,o._)("button",{id:"reply-or-quote-option-".concat(e.randomSeed,"-reply"),class:(0,i.C_)(["btn button-default reply-or-quote-option",{toggled:!e.newStatus.quoting}]),tabindex:"0",role:"radio","aria-labelledby":"reply-or-quote-option-".concat(e.randomSeed,"-reply"),"aria-checked":!e.newStatus.quoting,onClick:t[5]||(t[5]=function(t){return e.newStatus.quoting=!1})},(0,i.zw)(e.$t("post_status.reply_option")),11,C),(0,o._)("button",{id:"reply-or-quote-option-".concat(e.randomSeed,"-quote"),class:(0,i.C_)(["btn button-default reply-or-quote-option",{toggled:e.newStatus.quoting}]),tabindex:"0",role:"radio","aria-labelledby":"reply-or-quote-option-".concat(e.randomSeed,"-quote"),"aria-checked":e.newStatus.quoting,onClick:t[6]||(t[6]=function(t){return e.newStatus.quoting=!0})},(0,i.zw)(e.$t("post_status.quote_option")),11,S)])):(0,o.kq)("",!0),e.disableSubject||!e.newStatus.spoilerText&&!e.alwaysShowSubject?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(K,{key:9,modelValue:e.newStatus.spoilerText,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.newStatus.spoilerText=t}),"enable-emoji-picker":"",suggest:e.emojiSuggestor,class:"form-control"},{default:(0,o.w5)((function(n){return[(0,o.wy)((0,o._)("input",(0,o.dG)({"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.newStatus.spoilerText=t}),type:"text",placeholder:e.$t("post_status.content_warning"),disabled:e.posting&&!e.optimisticPosting},e.propsToNative(n),{size:"1",class:"form-post-subject"}),null,16,j),[[r.nr,e.newStatus.spoilerText]])]})),_:1},8,["modelValue","suggest"])),(0,o.Wm)(K,{ref:"emoji-input",modelValue:e.newStatus.status,"onUpdate:modelValue":t[16]||(t[16]=function(t){return e.newStatus.status=t}),suggest:e.emojiUserSuggestor,placement:e.emojiPickerPlacement,class:"form-control main-input","enable-emoji-picker":"","hide-emoji-button":"","newline-on-ctrl-enter":e.submitOnEnter,"enable-sticker-picker":"",onInput:e.onEmojiInputInput,onStickerUploaded:e.addMediaFile,onStickerUploadFailed:e.uploadFailed,onShown:e.handleEmojiInputShow},{default:(0,o.w5)((function(n){return[(0,o.wy)((0,o._)("textarea",(0,o.dG)({ref:"textarea","onUpdate:modelValue":t[9]||(t[9]=function(t){return e.newStatus.status=t}),placeholder:e.placeholder||e.$t("post_status.default"),rows:"1",cols:"1",disabled:e.posting&&!e.optimisticPosting,class:["form-post-body",{"scrollable-form":!!e.maxHeight}]},e.propsToNative(n),{onKeydown:[t[10]||(t[10]=(0,r.D2)((0,r.iM)((function(t){return e.submitOnEnter&&e.postStatus(t,e.newStatus)}),["exact"]),["enter"])),t[11]||(t[11]=(0,r.D2)((0,r.iM)((function(t){return e.postStatus(t,e.newStatus)}),["meta"]),["enter"])),t[12]||(t[12]=(0,r.D2)((0,r.iM)((function(t){return!e.submitOnEnter&&e.postStatus(t,e.newStatus)}),["ctrl"]),["enter"]))],onInput:t[13]||(t[13]=function(){return e.resize&&e.resize.apply(e,arguments)}),onCompositionupdate:t[14]||(t[14]=function(){return e.resize&&e.resize.apply(e,arguments)}),onPaste:t[15]||(t[15]=function(){return e.paste&&e.paste.apply(e,arguments)})}),null,16,F),[[r.nr,e.newStatus.status]]),e.hasStatusLengthLimit?((0,o.wg)(),(0,o.iD)("p",{key:0,class:(0,i.C_)(["character-counter faint",{error:e.isOverLengthLimit}])},(0,i.zw)(e.charactersLeft),3)):(0,o.kq)("",!0)]})),_:1},8,["modelValue","suggest","placement","newline-on-ctrl-enter","onInput","onStickerUploaded","onStickerUploadFailed","onShown"]),e.disableScopeSelector?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",A,[e.disableVisibilitySelector?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(G,{key:0,"show-all":e.showAllScopes,"user-default":e.userDefaultScope,"original-scope":e.copyMessageScope,"initial-scope":e.newStatus.visibility,"on-scope-change":e.changeVis},null,8,["show-all","user-default","original-scope","initial-scope","on-scope-change"])),e.postFormats.length>1?((0,o.wg)(),(0,o.iD)("div",O,[(0,o.Wm)(Y,{id:"post-content-type",modelValue:e.newStatus.contentType,"onUpdate:modelValue":t[17]||(t[17]=function(t){return e.newStatus.contentType=t}),class:"form-control",attrs:{"aria-label":e.$t("post_status.content_type_selection")}},{default:(0,o.w5)((function(){return[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.postFormats,(function(t){return(0,o.wg)(),(0,o.iD)("option",{key:t,value:t},(0,i.zw)(e.$t('post_status.content_type["'.concat(t,'"]'))),9,E)})),128))]})),_:1},8,["modelValue","attrs"])])):(0,o.kq)("",!0),1===e.postFormats.length&&"text/plain"!==e.postFormats[0]?((0,o.wg)(),(0,o.iD)("div",z,[(0,o._)("span",P,(0,i.zw)(e.$t('post_status.content_type["'.concat(e.postFormats[0],'"]'))),1)])):(0,o.kq)("",!0)]))]),e.pollsAvailable?((0,o.wg)(),(0,o.j4)(J,{key:0,ref:"pollForm",visible:e.pollFormVisible,onUpdatePoll:e.setPoll},null,8,["visible","onUpdatePoll"])):(0,o.kq)("",!0),(0,o._)("div",I,[(0,o._)("div",x,[(0,o.Wm)(Q,{ref:"mediaUpload",class:"media-upload-icon","drop-files":e.dropFiles,disabled:e.uploadFileLimitReached,onUploading:e.startedUploadingFiles,onUploaded:e.addMediaFile,onUploadFailed:e.uploadFailed,onAllUploaded:e.finishedUploadingFiles},null,8,["drop-files","disabled","onUploading","onUploaded","onUploadFailed","onAllUploaded"]),(0,o._)("button",{class:"emoji-icon button-unstyled",title:e.$t("emoji.add_emoji"),onClick:t[18]||(t[18]=function(){return e.showEmojiPicker&&e.showEmojiPicker.apply(e,arguments)})},[(0,o.Wm)(H,{icon:"smile-beam"})],8,T),e.pollsAvailable?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,i.C_)(["poll-icon button-unstyled",{selected:e.pollFormVisible}]),title:e.$t("polls.add_poll"),onClick:t[19]||(t[19]=function(){return e.togglePollForm&&e.togglePollForm.apply(e,arguments)})},[(0,o.Wm)(H,{icon:"poll-h"})],10,$)):(0,o.kq)("",!0)]),e.posting?((0,o.wg)(),(0,o.iD)("button",B,(0,i.zw)(e.$t("post_status.posting")),1)):e.isOverLengthLimit?((0,o.wg)(),(0,o.iD)("button",U,(0,i.zw)(e.$t("post_status.post")),1)):((0,o.wg)(),(0,o.iD)("button",{key:2,disabled:e.uploadingFiles||e.disableSubmit,class:"btn button-default",onClick:t[20]||(t[20]=(0,r.iM)((function(t){return e.postStatus(t,e.newStatus)}),["stop","prevent"]))},(0,i.zw)(e.$t("post_status.post")),9,M))],512),(0,o.wy)((0,o._)("div",{style:(0,i.j5)({animation:"show"===e.showDropIcon?"fade-in 0.25s":"fade-out 0.5s"}),class:"drop-indicator",onDragleave:t[21]||(t[21]=function(){return e.fileDragStop&&e.fileDragStop.apply(e,arguments)}),onDrop:t[22]||(t[22]=(0,r.iM)((function(){return e.fileDrop&&e.fileDrop.apply(e,arguments)}),["stop"]))},[(0,o.Wm)(H,{icon:e.uploadFileLimitReached?"ban":"upload"},null,8,["icon"])],36),[[r.F8,"hide"!==e.showDropIcon]]),e.error?((0,o.wg)(),(0,o.iD)("div",L,[(0,o.Uk)(" Error: "+(0,i.zw)(e.error)+" ",1),(0,o._)("button",{class:"button-unstyled",onClick:t[23]||(t[23]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,o.Wm)(H,{class:"fa-scale-110 fa-old-padding",icon:"times"})])])):(0,o.kq)("",!0),e.newStatus.files&&e.newStatus.files.length>0?((0,o.wg)(),(0,o.j4)(X,{key:2,class:"attachments",grid:!0,nsfw:!1,attachments:e.newStatus.files,descriptions:e.newStatus.mediaDescriptions,"set-media":function(){return e.$store.dispatch("setMedia",e.newStatus.files)},editable:!0,"edit-attachment":e.editAttachment,"remove-attachment":e.removeMediaFile,"shift-up-attachment":e.newStatus.files.length>1&&e.shiftUpMediaFile,"shift-dn-attachment":e.newStatus.files.length>1&&e.shiftDnMediaFile,onPlay:t[24]||(t[24]=function(t){return e.$emit("mediaplay",e.attachment.id)}),onPause:t[25]||(t[25]=function(t){return e.$emit("mediapause",e.attachment.id)})},null,8,["attachments","descriptions","set-media","edit-attachment","remove-attachment","shift-up-attachment","shift-dn-attachment"])):(0,o.kq)("",!0),e.newStatus.files.length>0&&!e.disableSensitivityCheckbox?((0,o.wg)(),(0,o.iD)("div",R,[(0,o.Wm)(ee,{modelValue:e.newStatus.nsfw,"onUpdate:modelValue":t[26]||(t[26]=function(t){return e.newStatus.nsfw=t})},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,i.zw)(e.$t("post_status.attachments_sensitive")),1)]})),_:1},8,["modelValue"])])):(0,o.kq)("",!0)],32)],512)}]])},99507:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var o=n(66252),r=["disabled"];const i={props:{disabled:{type:Boolean},click:{type:Function,default:function(){return Promise.resolve()}}},data:function(){return{progress:!1}},methods:{onClick:function(){var e=this;this.progress=!0,this.click().then((function(){e.progress=!1}))}}},s=(0,n(83744).Z)(i,[["render",function(e,t,n,i,s,a){return(0,o.wg)(),(0,o.iD)("button",{disabled:s.progress||n.disabled,onClick:t[0]||(t[0]=function(){return a.onClick&&a.onClick.apply(a,arguments)})},[s.progress&&e.$slots.progress?(0,o.WI)(e.$slots,"progress",{key:0}):(0,o.WI)(e.$slots,"default",{key:1})],8,r)}]])},72895:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var o=n(66252),r=n(3577),i={class:"remote-follow"},s=["action"],a=["value"],u=(0,o._)("input",{type:"hidden",name:"profile",value:""},null,-1),c={click:"submit",class:"button-default remote-button"};const l={props:["user"],computed:{subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")}}},d=(0,n(83744).Z)(l,[["render",function(e,t,n,l,d,p){return(0,o.wg)(),(0,o.iD)("div",i,[(0,o._)("form",{method:"POST",action:e.subscribeUrl},[(0,o._)("input",{type:"hidden",name:"nickname",value:e.user.screen_name},null,8,a),u,(0,o._)("button",c,(0,r.zw)(e.$t("user_card.remote_follow")),1)],8,s)])}]])},54110:(e,t,n)=>{"use strict";n.d(t,{Z:()=>m});var o=n(66252),r=n(3577),i={key:0,class:"ScopeSelector"},s=["title"],a=["title"],u=["title"],c=["title"],l=n(9382),d=n(84131);l.vI.add(d.FU$,d.g4A,d.byT,d._1N);const p={props:["showAll","userDefault","originalScope","initialScope","onScopeChange"],data:function(){return{currentScope:this.initialScope}},computed:{showNothing:function(){return!(this.showPublic||this.showUnlisted||this.showPrivate||this.showDirect)},showPublic:function(){return"direct"!==this.originalScope&&this.shouldShow("public")},showUnlisted:function(){return"direct"!==this.originalScope&&this.shouldShow("unlisted")},showPrivate:function(){return"direct"!==this.originalScope&&this.shouldShow("private")},showDirect:function(){return this.shouldShow("direct")},css:function(){return{public:{selected:"public"===this.currentScope},unlisted:{selected:"unlisted"===this.currentScope},private:{selected:"private"===this.currentScope},direct:{selected:"direct"===this.currentScope}}}},methods:{shouldShow:function(e){return this.showAll||this.currentScope===e||this.originalScope===e||this.userDefault===e||"direct"===e},changeVis:function(e){this.currentScope=e,this.onScopeChange&&this.onScopeChange(e)}}},m=(0,n(83744).Z)(p,[["render",function(e,t,n,l,d,p){var m=(0,o.up)("FAIcon");return e.showNothing?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",i,[e.showDirect?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,r.C_)(["button-unstyled scope",e.css.direct]),title:e.$t("post_status.scope.direct"),type:"button",onClick:t[0]||(t[0]=function(t){return e.changeVis("direct")})},[(0,o.Wm)(m,{icon:"envelope",class:"fa-scale-110 fa-old-padding"})],10,s)):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),e.showPrivate?((0,o.wg)(),(0,o.iD)("button",{key:1,class:(0,r.C_)(["button-unstyled scope",e.css.private]),title:e.$t("post_status.scope.private"),type:"button",onClick:t[1]||(t[1]=function(t){return e.changeVis("private")})},[(0,o.Wm)(m,{icon:"lock",class:"fa-scale-110 fa-old-padding"})],10,a)):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),e.showUnlisted?((0,o.wg)(),(0,o.iD)("button",{key:2,class:(0,r.C_)(["button-unstyled scope",e.css.unlisted]),title:e.$t("post_status.scope.unlisted"),type:"button",onClick:t[2]||(t[2]=function(t){return e.changeVis("unlisted")})},[(0,o.Wm)(m,{icon:"lock-open",class:"fa-scale-110 fa-old-padding"})],10,u)):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),e.showPublic?((0,o.wg)(),(0,o.iD)("button",{key:3,class:(0,r.C_)(["button-unstyled scope",e.css.public]),title:e.$t("post_status.scope.public"),type:"button",onClick:t[3]||(t[3]=function(t){return e.changeVis("public")})},[(0,o.Wm)(m,{icon:"globe",class:"fa-scale-110 fa-old-padding"})],10,c)):(0,o.kq)("",!0)]))}]])},76990:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var o=n(66252),r=n(3577),i=["disabled","value"],s=n(9382),a=n(84131);s.vI.add(a.ptq);const u={emits:["update:modelValue"],props:["modelValue","disabled","unstyled","kind","attrs"]},c=(0,n(83744).Z)(u,[["render",function(e,t,n,s,a,u){var c=(0,o.up)("FAIcon");return(0,o.wg)(),(0,o.iD)("label",{class:(0,r.C_)(["Select input",{disabled:e.disabled,unstyled:e.unstyled}])},[(0,o._)("select",(0,o.dG)({disabled:e.disabled,value:e.modelValue},e.attrs,{onChange:t[0]||(t[0]=function(t){return e.$emit("update:modelValue",t.target.value)})}),[(0,o.WI)(e.$slots,"default")],16,i),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o.Wm)(c,{class:"select-down-icon",icon:"chevron-down"})],2)}]])},24049:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>Qt});var o=n(66252),r=n(3577),i=n(49963),s={key:0,class:"alert error"},a={key:1,class:"status-container muted"},u={class:"status-username"},c={key:0,class:"mute-thread"},l={key:1,class:"mute-thread"},d=["title"],p={key:0,class:"pin"},m={class:"faint"},h={class:"right-side faint"},f=["title"],g=["data-tags"],v={key:0,class:"left-side"},w=["href"],b={class:"right-side"},y={key:0,class:"status-heading"},D={class:"heading-name-row"},_={class:"heading-left"},k=["title"],C=["title"],S=["src"],j={class:"heading-right"},F=["title"],A=["title"],O=["title","aria-expanded"],E=["title"],z={key:0,class:"heading-reply-row"},P={key:0,class:"glued-label reply-glued-label"},I=["aria-label"],x={class:"reply-to-text"},T={key:1,class:"reply-to-no-popover"},$={class:"reply-to-text"},B={key:1,class:"glued-label"},U=["aria-label"],M={class:"mentions-text"},L={key:1,class:"heading-edited-row"},R={key:1,class:"quoted-status"},q=["aria-expanded"],N={key:2,class:"quoted-status -unavailable-prompt"},Z=["href"],W={key:3,class:"replies"},H=["title"],V={key:1,class:"faint"},K=["onClick"],G={key:0,class:"favs-repeated-users"},Y={class:"stats"},J={class:"stat-count"},Q={class:"stat-title"},X={class:"stat-number"},ee={class:"stat-count"},te={class:"stat-title"},ne={class:"stat-number"},oe={class:"avatar-row"},re={key:5,class:"status-actions"},ie={key:3,class:"gravestone"},se={class:"left-side"},ae={class:"right-side"},ue={class:"deleted-text"},ce={key:4,class:"status-container reply-form"},le=n(4942),de=n(45578),pe=n.n(de),me=n(27955),he=n.n(me),fe={class:"ReplyButton"},ge=["title"],ve=["href","title"],we={key:2,class:"action-counter"},be=n(9382),ye=n(84131);be.vI.add(ye.Lh7,ye.r8p,ye.NBC);const De={name:"ReplyButton",props:["status","replying"],computed:{loggedIn:function(){return!!this.$store.state.users.currentUser},remoteInteractionLink:function(){return this.$store.getters.remoteInteractionLink({statusId:this.status.id})}}};var _e=n(83744);const ke=(0,_e.Z)(De,[["render",function(e,t,n,s,a,u){var c=(0,o.up)("FAIcon"),l=(0,o.up)("FALayers");return(0,o.wg)(),(0,o.iD)("div",fe,[e.loggedIn?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,r.C_)(["button-unstyled interactive",{"-active":e.replying}]),title:e.$t("tool_tip.reply"),onClick:t[0]||(t[0]=(0,i.iM)((function(t){return e.$emit("toggle")}),["prevent"]))},[(0,o.Wm)(l,{class:"fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(c,{class:"fa-scale-110",icon:"reply"}),e.replying?((0,o.wg)(),(0,o.j4)(c,{key:1,class:"focus-marker",transform:"shrink-6 up-8 right-11",icon:"times"})):((0,o.wg)(),(0,o.j4)(c,{key:0,class:"focus-marker",transform:"shrink-6 up-8 right-11",icon:"plus"}))]})),_:1})],10,ge)):((0,o.wg)(),(0,o.iD)("a",{key:1,class:"button-unstyled interactive",target:"_blank",role:"button",href:e.remoteInteractionLink,title:e.$t("tool_tip.reply")},[(0,o.Wm)(l,{class:"fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(c,{class:"fa-scale-110",icon:"reply"}),e.replying?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(c,{key:0,class:"focus-marker",transform:"shrink-6 up-8 right-16",icon:"plus"}))]})),_:1})],8,ve)),e.status.replies_count>0?((0,o.wg)(),(0,o.iD)("span",we,(0,r.zw)(e.status.replies_count),1)):(0,o.kq)("",!0)])}]]);var Ce={class:"FavoriteButton"},Se=["title"],je=["title","href"],Fe={key:2,class:"action-counter"},Ae=n(989),Oe=n(5737);function Ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function ze(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ee(Object(n),!0).forEach((function(t){(0,le.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ee(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}be.vI.add(ye.Tab,Oe.Tab,ye.r8p,ye.Kl4,ye.LEp);const Pe={props:["status","loggedIn"],data:function(){return{animated:!1}},methods:{favorite:function(){var e=this;this.status.favorited?this.$store.dispatch("unfavorite",{id:this.status.id}):this.$store.dispatch("favorite",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500)}},computed:ze(ze({},(0,Ae.Se)(["mergedConfig"])),{},{remoteInteractionLink:function(){return this.$store.getters.remoteInteractionLink({statusId:this.status.id})}})},Ie=(0,_e.Z)(Pe,[["render",function(e,t,n,s,a,u){var c=(0,o.up)("FAIcon"),l=(0,o.up)("FALayers");return(0,o.wg)(),(0,o.iD)("div",Ce,[e.loggedIn?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,r.C_)(["button-unstyled interactive",e.status.favorited&&"-favorited"]),title:e.$t("tool_tip.favorite"),onClick:t[0]||(t[0]=(0,i.iM)((function(t){return e.favorite()}),["prevent"]))},[(0,o.Wm)(l,{class:"fa-scale-110 fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(c,{class:"fa-scale-110",icon:[e.status.favorited?"fas":"far","star"],spin:e.animated},null,8,["icon","spin"]),e.status.favorited?((0,o.wg)(),(0,o.j4)(c,{key:0,class:"active-marker",transform:"shrink-6 up-9 right-12",icon:"check"})):(0,o.kq)("",!0),e.status.favorited?((0,o.wg)(),(0,o.j4)(c,{key:2,class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"minus"})):((0,o.wg)(),(0,o.j4)(c,{key:1,class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"plus"}))]})),_:1})],10,Se)):((0,o.wg)(),(0,o.iD)("a",{key:1,class:"button-unstyled interactive",target:"_blank",role:"button",title:e.$t("tool_tip.favorite"),href:e.remoteInteractionLink},[(0,o.Wm)(l,{class:"fa-scale-110 fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(c,{class:"fa-scale-110",icon:["far","star"]}),(0,o.Wm)(c,{class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"plus"})]})),_:1})],8,je)),!e.mergedConfig.hidePostStats&&e.status.fave_num>0?((0,o.wg)(),(0,o.iD)("span",Fe,(0,r.zw)(e.status.fave_num),1)):(0,o.kq)("",!0)])}]]);var xe={class:"ReactButton"},Te=["title"],$e=n(84535),Be=n(91300);be.vI.add(ye.r8p,ye.NBC,Oe.RKn);const Ue={props:["status"],data:function(){return{filterWord:"",expanded:!1}},components:{Popover:$e.default,EmojiPicker:Be.Z},methods:{addReaction:function(e){var t=e.insertion,n=this.status.emoji_reactions.find((function(e){return e.name===t}));n&&n.me?this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:t}):this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:t})},show:function(){this.expanded||this.$refs.picker.showPicker()},onShow:function(){this.expanded=!0},onClose:function(){this.expanded=!1}},computed:{hideCustomEmoji:function(){return!this.$store.state.instance.pleromaCustomEmojiReactionsAvailable}}},Me=(0,_e.Z)(Ue,[["render",function(e,t,n,r,s,a){var u=(0,o.up)("EmojiPicker"),c=(0,o.up)("FAIcon"),l=(0,o.up)("FALayers");return(0,o.wg)(),(0,o.iD)("span",xe,[(0,o.Wm)(u,{ref:"picker","enable-sticker-picker":e.enableStickerPicker,"hide-custom-emoji":e.hideCustomEmoji,class:"emoji-picker-panel",onEmoji:e.addReaction,onShow:e.onShow,onClose:e.onClose},null,8,["enable-sticker-picker","hide-custom-emoji","onEmoji","onShow","onClose"]),(0,o._)("span",{class:"button-unstyled popover-trigger",role:"button",tabindex:0,title:e.$t("tool_tip.add_reaction"),onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.show&&e.show.apply(e,arguments)}),["stop","prevent"]))},[(0,o.Wm)(l,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(c,{class:"fa-scale-110 fa-old-padding",icon:["far","smile-beam"]}),(0,o.wy)((0,o.Wm)(c,{class:"focus-marker",transform:"shrink-6 up-9 right-17",icon:"plus"},null,512),[[i.F8,!e.expanded]]),(0,o.wy)((0,o.Wm)(c,{class:"focus-marker",transform:"shrink-6 up-9 right-17",icon:"times"},null,512),[[i.F8,e.expanded]])]})),_:1})],8,Te)])}]]);var Le={class:"RetweetButton"},Re=["title"],qe={key:1},Ne=["title","href"],Ze={key:3,class:"no-event"},We=n(1447);be.vI.add(ye.x5v,ye.r8p,ye.Kl4,ye.LEp);const He={props:["status","loggedIn","visibility"],components:{ConfirmModal:We.Z},data:function(){return{animated:!1,showingConfirmDialog:!1}},methods:{retweet:function(){!this.status.repeated&&this.shouldConfirmRepeat?this.showConfirmDialog():this.doRetweet()},doRetweet:function(){var e=this;this.status.repeated?this.$store.dispatch("unretweet",{id:this.status.id}):this.$store.dispatch("retweet",{id:this.status.id}),this.animated=!0,setTimeout((function(){e.animated=!1}),500),this.hideConfirmDialog()},showConfirmDialog:function(){this.showingConfirmDialog=!0},hideConfirmDialog:function(){this.showingConfirmDialog=!1}},computed:{mergedConfig:function(){return this.$store.getters.mergedConfig},remoteInteractionLink:function(){return this.$store.getters.remoteInteractionLink({statusId:this.status.id})},shouldConfirmRepeat:function(){return this.mergedConfig.modalOnRepeat}}},Ve=(0,_e.Z)(He,[["render",function(e,t,n,s,a,u){var c=(0,o.up)("FAIcon"),l=(0,o.up)("FALayers"),d=(0,o.up)("confirm-modal");return(0,o.wg)(),(0,o.iD)("div",Le,["private"!==e.visibility&&"direct"!==e.visibility&&e.loggedIn?((0,o.wg)(),(0,o.iD)("button",{key:0,class:(0,r.C_)(["button-unstyled interactive",e.status.repeated&&"-repeated"]),title:e.$t("tool_tip.repeat"),onClick:t[0]||(t[0]=(0,i.iM)((function(t){return e.retweet()}),["prevent"]))},[(0,o.Wm)(l,{class:"fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(c,{class:"fa-scale-110",icon:"retweet",spin:e.animated},null,8,["spin"]),e.status.repeated?((0,o.wg)(),(0,o.j4)(c,{key:0,class:"active-marker",transform:"shrink-6 up-9 right-12",icon:"check"})):(0,o.kq)("",!0),e.status.repeated?((0,o.wg)(),(0,o.j4)(c,{key:2,class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"minus"})):((0,o.wg)(),(0,o.j4)(c,{key:1,class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"plus"}))]})),_:1})],10,Re)):e.loggedIn?((0,o.wg)(),(0,o.iD)("span",qe,[(0,o.Wm)(c,{class:"fa-scale-110 fa-old-padding",icon:"lock",title:e.$t("timeline.no_retweet_hint")},null,8,["title"])])):((0,o.wg)(),(0,o.iD)("a",{key:2,class:"button-unstyled interactive",target:"_blank",role:"button",title:e.$t("tool_tip.repeat"),href:e.remoteInteractionLink},[(0,o.Wm)(l,{class:"fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(c,{class:"fa-scale-110",icon:"retweet"}),(0,o.Wm)(c,{class:"focus-marker",transform:"shrink-6 up-9 right-12",icon:"plus"})]})),_:1})],8,Ne)),!e.mergedConfig.hidePostStats&&e.status.repeat_num>0?((0,o.wg)(),(0,o.iD)("span",Ze,(0,r.zw)(e.status.repeat_num),1)):(0,o.kq)("",!0),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingConfirmDialog?((0,o.wg)(),(0,o.j4)(d,{key:0,title:e.$t("status.repeat_confirm_title"),"confirm-text":e.$t("status.repeat_confirm_accept_button"),"cancel-text":e.$t("status.repeat_confirm_cancel_button"),onAccepted:e.doRetweet,onCancelled:e.hideConfirmDialog},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("status.repeat_confirm")),1)]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)]))])}]]);var Ke=["id"],Ge=["onClick"],Ye=["onClick"],Je=["onClick"],Qe=["onClick"],Xe=["onClick"],et=["onClick"],tt=["onClick"],nt=["onClick"],ot=["href"],rt=["onClick"],it={class:"button-unstyled popover-trigger"},st=n(93433),at=n(53599);function ut(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}be.vI.add(ye.cNd,ye.xVw,Oe.xVw,ye.Aq,ye.RP7,ye.EfQ,ye.Xjp,Oe.RrC,ye.qO$,ye.r8p,ye.NBC);const ct={props:["status"],components:{Popover:$e.default,ConfirmModal:We.Z},data:function(){return{expanded:!1,showingDeleteDialog:!1,randomSeed:(0,at.Z)()}},methods:{onShow:function(){this.expanded=!0},onClose:function(){this.expanded=!1},deleteStatus:function(){this.shouldConfirmDelete?this.showDeleteStatusConfirmDialog():this.doDeleteStatus()},doDeleteStatus:function(){this.$store.dispatch("deleteStatus",{id:this.status.id}),this.hideDeleteStatusConfirmDialog()},showDeleteStatusConfirmDialog:function(){this.showingDeleteDialog=!0},hideDeleteStatusConfirmDialog:function(){this.showingDeleteDialog=!1},pinStatus:function(){var e=this;this.$store.dispatch("pinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unpinStatus:function(){var e=this;this.$store.dispatch("unpinStatus",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},muteConversation:function(){var e=this;this.$store.dispatch("muteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unmuteConversation:function(){var e=this;this.$store.dispatch("unmuteConversation",this.status.id).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},copyLink:function(){var e=this;navigator.clipboard.writeText(this.statusLink).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},bookmarkStatus:function(){var e=this;this.$store.dispatch("bookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},unbookmarkStatus:function(){var e=this;this.$store.dispatch("unbookmark",{id:this.status.id}).then((function(){return e.$emit("onSuccess")})).catch((function(t){return e.$emit("onError",t.error.error)}))},reportStatus:function(){this.$store.dispatch("openUserReportingModal",{userId:this.status.user.id,statusIds:[this.status.id]})},editStatus:function(){var e=this;this.$store.dispatch("fetchStatusSource",{id:this.status.id}).then((function(t){return e.$store.dispatch("openEditStatusModal",{statusId:e.status.id,subject:t.spoiler_text,statusText:t.text,statusIsSensitive:e.status.nsfw,statusPoll:e.status.poll,statusFiles:(0,st.Z)(e.status.attachments),visibility:e.status.visibility,statusContentType:t.content_type})}))},showStatusHistory:function(){var e=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ut(Object(n),!0).forEach((function(t){(0,le.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ut(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},this.status);["attachments","created_at","emojis","text","raw_html","nsfw","poll","summary","summary_raw_html"].forEach((function(t){return delete e[t]})),this.$store.dispatch("openStatusHistoryModal",e)}},computed:{currentUser:function(){return this.$store.state.users.currentUser},canDelete:function(){if(this.currentUser)return this.currentUser.privileges.includes("messages_delete")||this.status.user.id===this.currentUser.id},ownStatus:function(){return this.status.user.id===this.currentUser.id},canPin:function(){return this.ownStatus&&("public"===this.status.visibility||"unlisted"===this.status.visibility)},canMute:function(){return!!this.currentUser},canBookmark:function(){return!!this.currentUser},statusLink:function(){return"".concat(this.$store.state.instance.server).concat(this.$router.resolve({name:"conversation",params:{id:this.status.id}}).href)},isEdited:function(){return null!==this.status.edited_at},editingAvailable:function(){return this.$store.state.instance.editingAvailable},shouldConfirmDelete:function(){return this.$store.getters.mergedConfig.modalOnDelete},triggerAttrs:function(){return{title:this.$t("status.more_actions"),id:"popup-trigger-".concat(this.randomSeed),"aria-controls":"popup-menu-".concat(this.randomSeed),"aria-expanded":this.expanded,"aria-haspopup":"menu"}}}},lt=(0,_e.Z)(ct,[["render",function(e,t,n,s,a,u){var c=(0,o.up)("FAIcon"),l=(0,o.up)("FALayers"),d=(0,o.up)("ConfirmModal"),p=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(p,{class:"ExtraButtons",trigger:"click","trigger-attrs":e.triggerAttrs,placement:"top",offset:{y:5},"bound-to":{x:"container"},"remove-padding":"",onShow:e.onShow,onClose:e.onClose},{content:(0,o.w5)((function(n){var s=n.close;return[(0,o._)("div",{class:"dropdown-menu",role:"menu",id:"popup-menu-".concat(e.randomSeed)},[e.canMute&&!e.status.thread_muted?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:t[0]||(t[0]=(0,i.iM)((function(){return e.muteConversation&&e.muteConversation.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(c,{"fixed-width":"",icon:"eye-slash"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.mute_conversation")),1)])):(0,o.kq)("",!0),e.canMute&&e.status.thread_muted?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.unmuteConversation&&e.unmuteConversation.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(c,{"fixed-width":"",icon:"eye-slash"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.unmute_conversation")),1)])):(0,o.kq)("",!0),!e.status.pinned&&e.canPin?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:[t[2]||(t[2]=(0,i.iM)((function(){return e.pinStatus&&e.pinStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(c,{"fixed-width":"",icon:"thumbtack"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.pin")),1)],8,Ge)):(0,o.kq)("",!0),e.status.pinned&&e.canPin?((0,o.wg)(),(0,o.iD)("button",{key:3,class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:[t[3]||(t[3]=(0,i.iM)((function(){return e.unpinStatus&&e.unpinStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(c,{"fixed-width":"",icon:"thumbtack"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.unpin")),1)],8,Ye)):(0,o.kq)("",!0),e.canBookmark?((0,o.wg)(),(0,o.iD)(o.HY,{key:4},[e.status.bookmarked?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:[t[4]||(t[4]=(0,i.iM)((function(){return e.bookmarkStatus&&e.bookmarkStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(c,{"fixed-width":"",icon:["far","bookmark"]}),(0,o._)("span",null,(0,r.zw)(e.$t("status.bookmark")),1)],8,Je)),e.status.bookmarked?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:[t[5]||(t[5]=(0,i.iM)((function(){return e.unbookmarkStatus&&e.unbookmarkStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(c,{"fixed-width":"",icon:"bookmark"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.unbookmark")),1)],8,Qe)):(0,o.kq)("",!0)],64)):(0,o.kq)("",!0),e.ownStatus&&e.editingAvailable?((0,o.wg)(),(0,o.iD)("button",{key:5,class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:[t[6]||(t[6]=(0,i.iM)((function(){return e.editStatus&&e.editStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(c,{"fixed-width":"",icon:"pen"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.edit")),1)],8,Xe)):(0,o.kq)("",!0),e.isEdited&&e.editingAvailable?((0,o.wg)(),(0,o.iD)("button",{key:6,class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:[t[7]||(t[7]=(0,i.iM)((function(){return e.showStatusHistory&&e.showStatusHistory.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(c,{"fixed-width":"",icon:"history"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.status_history")),1)],8,et)):(0,o.kq)("",!0),e.canDelete?((0,o.wg)(),(0,o.iD)("button",{key:7,class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:[t[8]||(t[8]=(0,i.iM)((function(){return e.deleteStatus&&e.deleteStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(c,{"fixed-width":"",icon:"times"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.delete")),1)],8,tt)):(0,o.kq)("",!0),(0,o._)("button",{class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:[t[9]||(t[9]=(0,i.iM)((function(){return e.copyLink&&e.copyLink.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(c,{"fixed-width":"",icon:"share-alt"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.copy_link")),1)],8,nt),e.status.is_local?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("a",{key:8,class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",title:"Source",href:e.status.external_url,target:"_blank"},[(0,o.Wm)(c,{"fixed-width":"",icon:"external-link-alt"}),(0,o._)("span",null,(0,r.zw)(e.$t("status.external_source")),1)],8,ot)),(0,o._)("button",{class:"button-default dropdown-item dropdown-item-icon",role:"menuitem",onClick:[t[10]||(t[10]=(0,i.iM)((function(){return e.reportStatus&&e.reportStatus.apply(e,arguments)}),["prevent"])),s]},[(0,o.Wm)(c,{"fixed-width":"",icon:["far","flag"]}),(0,o._)("span",null,(0,r.zw)(e.$t("user_card.report")),1)],8,rt)],8,Ke)]})),trigger:(0,o.w5)((function(){return[(0,o._)("span",it,[(0,o.Wm)(l,{class:"fa-old-padding-layer"},{default:(0,o.w5)((function(){return[(0,o.Wm)(c,{class:"fa-scale-110",icon:"ellipsis-h"}),(0,o.wy)((0,o.Wm)(c,{class:"focus-marker",transform:"shrink-6 up-8 right-16",icon:"plus"},null,512),[[i.F8,!e.expanded]]),(0,o.wy)((0,o.Wm)(c,{class:"focus-marker",transform:"shrink-6 up-8 right-16",icon:"times"},null,512),[[i.F8,e.expanded]])]})),_:1})]),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingDeleteDialog?((0,o.wg)(),(0,o.j4)(d,{key:0,title:e.$t("status.delete_confirm_title"),"cancel-text":e.$t("status.delete_confirm_cancel_button"),"confirm-text":e.$t("status.delete_confirm_accept_button"),onCancelled:e.hideDeleteStatusConfirmDialog,onAccepted:e.doDeleteStatus},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("status.delete_confirm")),1)]})),_:1},8,["title","cancel-text","confirm-text","onCancelled","onAccepted"])):(0,o.kq)("",!0)]))]})),_:1},8,["trigger-attrs","onShow","onClose"])}]]);var dt=n(45333),pt=n(48173),mt=n(19066),ht=n(1840),ft=n(10252),gt=n(92820),vt={key:1,class:"status-preview-no-content faint"},wt={key:2,class:"status-preview-no-content"},bt=n(13311),yt=n.n(bt);be.vI.add(ye.IJ7);const Dt={name:"StatusPopover",props:["statusId"],data:function(){return{error:!1}},computed:{status:function(){return yt()(this.$store.state.statuses.allStatuses,{id:this.statusId})}},components:{Status:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,24049))})),Popover:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,84535))}))},methods:{enter:function(){var e=this;if(!this.status){if(!this.statusId)return void(this.error=!0);this.$store.dispatch("fetchStatus",this.statusId).then((function(t){return e.error=!1})).catch((function(t){return e.error=!0}))}}},watch:{status:function(e,t){var n=this;e!==t&&this.$nextTick((function(){return n.$refs.popover.updateStyles()}))}}},_t=(0,_e.Z)(Dt,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("Status"),c=(0,o.up)("FAIcon"),l=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(l,{ref:"popover",trigger:"hover","stay-on-click":!0,"popover-class":"popover-default status-popover","bound-to":{x:"container"},onShow:e.enter},{trigger:(0,o.w5)((function(){return[(0,o.WI)(e.$slots,"default")]})),content:(0,o.w5)((function(){return[e.status?((0,o.wg)(),(0,o.j4)(u,{key:0,"is-preview":!0,statusoid:e.status,compact:!0},null,8,["statusoid"])):e.error?((0,o.wg)(),(0,o.iD)("div",vt,(0,r.zw)(e.$t("status.status_unavailable")),1)):((0,o.wg)(),(0,o.iD)("div",wt,[(0,o.Wm)(c,{icon:"circle-notch",spin:"",size:"2x"})]))]})),_:3},8,["onShow"])}]]);var kt=n(22588),Ct={class:"user-list-popover"},St={class:"user-list-names"},jt={class:"user-list-screen-name"},Ft=n(42262);be.vI.add(ye.IJ7);const At={name:"UserListPopover",props:["users"],components:{RichContent:gt.Z,UnicodeDomainIndicator:Ft.Z,Popover:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,84535))})),UserAvatar:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,48173))}))},computed:{usersCapped:function(){return this.users.slice(0,16)}}},Ot=(0,_e.Z)(At,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("UserAvatar"),c=(0,o.up)("RichContent"),l=(0,o.up)("UnicodeDomainIndicator"),d=(0,o.up)("FAIcon"),p=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(p,{trigger:"hover",placement:"top",offset:{y:5}},{trigger:(0,o.w5)((function(){return[(0,o.WI)(e.$slots,"default")]})),content:(0,o.w5)((function(){return[(0,o._)("div",Ct,[e.users.length?((0,o.wg)(!0),(0,o.iD)(o.HY,{key:0},(0,o.Ko)(e.usersCapped,(function(e){return(0,o.wg)(),(0,o.iD)("div",{key:e.id,class:"user-list-row"},[(0,o.Wm)(u,{user:e,class:"avatar-small",compact:!0},null,8,["user"]),(0,o._)("div",St,[(0,o.Wm)(c,{class:"username",title:"@"+e.screen_name_ui,html:e.name_html,emoji:e.emoji},null,8,["title","html","emoji"]),(0,o._)("span",jt,(0,r.zw)(e.screen_name_ui),1),(0,o.Wm)(l,{user:e},null,8,["user"])])])})),128)):((0,o.wg)(),(0,o.j4)(d,{key:1,icon:"circle-notch",spin:"",size:"3x"}))])]})),_:3})}]]);var Et={class:"EmojiReactions"},zt={class:"reaction-emoji"},Pt=["src"],It={key:1,class:"reaction-emoji reaction-emoji-content"},xt={class:"emoji-reaction-counts"},Tt=n(15861),$t=n(64687),Bt=n.n($t);be.vI.add(ye.r8p,ye.Kl4,ye.LEp);const Ut={name:"EmojiReactions",components:{UserAvatar:pt.default,UserListPopover:Ot},props:["status"],data:function(){return{showAll:!1}},computed:{tooManyReactions:function(){return this.status.emoji_reactions.length>12},emojiReactions:function(){return this.showAll?this.status.emoji_reactions:this.status.emoji_reactions.slice(0,12)},showMoreString:function(){return"+".concat(this.status.emoji_reactions.length-12)},accountsForEmoji:function(){return this.status.emoji_reactions.reduce((function(e,t){return e[t.name]=t.accounts||[],e}),{})},loggedIn:function(){return!!this.$store.state.users.currentUser},remoteInteractionLink:function(){return this.$store.getters.remoteInteractionLink({statusId:this.status.id})}},methods:{toggleShowAll:function(){this.showAll=!this.showAll},reactedWith:function(e){return this.status.emoji_reactions.find((function(t){return t.name===e})).me},fetchEmojiReactionsByIfMissing:function(){var e=this;return(0,Tt.Z)(Bt().mark((function t(){return Bt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e.status.emoji_reactions.find((function(e){return!e.accounts}))){t.next=5;break}return t.next=4,e.$store.dispatch("fetchEmojiReactionsBy",e.status.id);case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t)})))()},reactWith:function(e){this.$store.dispatch("reactWithEmoji",{id:this.status.id,emoji:e})},unreact:function(e){this.$store.dispatch("unreactWithEmoji",{id:this.status.id,emoji:e})},emojiOnClick:function(e,t){var n=this;return(0,Tt.Z)(Bt().mark((function t(){return Bt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n.loggedIn){t.next=2;break}return t.abrupt("return");case 2:return t.next=4,n.fetchEmojiReactionsByIfMissing();case 4:n.reactedWith(e)?n.unreact(e):n.reactWith(e);case 5:case"end":return t.stop()}}),t)})))()},counterTriggerAttrs:function(e){return{class:["btn","button-default","emoji-reaction-count-button",{"-picked-reaction":this.reactedWith(e.name)}],"aria-label":this.$tc("status.reaction_count_label",e.count,{num:e.count})}}}},Mt=(0,_e.Z)(Ut,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("FAIcon"),c=(0,o.up)("FALayers"),l=(0,o.up)("UserListPopover");return(0,o.wg)(),(0,o.iD)("div",Et,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.emojiReactions,(function(n){return(0,o.wg)(),(0,o.iD)("span",{key:n.url||n.name,class:"emoji-reaction-container btn-group"},[((0,o.wg)(),(0,o.j4)((0,o.LL)(e.loggedIn?"button":"a"),(0,o.dG)(e.loggedIn?{}:{href:e.remoteInteractionLink},{role:"button",class:["emoji-reaction btn button-default",{"-picked-reaction":e.reactedWith(n.name)}],title:n.url?n.name:void 0,"aria-pressed":e.reactedWith(n.name),onClick:function(t){return e.emojiOnClick(n.name,t)}}),{default:(0,o.w5)((function(){return[(0,o._)("span",zt,[n.url?((0,o.wg)(),(0,o.iD)("img",{key:0,src:n.url,class:"reaction-emoji-content",width:"1em"},null,8,Pt)):((0,o.wg)(),(0,o.iD)("span",It,(0,r.zw)(n.name),1))]),(0,o.Wm)(c,null,{default:(0,o.w5)((function(){return[e.reactedWith(n.name)?((0,o.wg)(),(0,o.j4)(u,{key:0,class:"active-marker",transform:"shrink-6 up-9",icon:"check"})):(0,o.kq)("",!0),e.reactedWith(n.name)?((0,o.wg)(),(0,o.j4)(u,{key:2,class:"focus-marker",transform:"shrink-6 up-9",icon:"minus"})):((0,o.wg)(),(0,o.j4)(u,{key:1,class:"focus-marker",transform:"shrink-6 up-9",icon:"plus"}))]})),_:2},1024)]})),_:2},1040,["class","title","aria-pressed","onClick"])),(0,o.Wm)(l,{users:e.accountsForEmoji[n.name],class:"emoji-reaction-popover","trigger-attrs":e.counterTriggerAttrs(n),onShow:t[0]||(t[0]=function(t){return e.fetchEmojiReactionsByIfMissing()})},{default:(0,o.w5)((function(){return[(0,o._)("span",xt,(0,r.zw)(n.count),1)]})),_:2},1032,["users","trigger-attrs"])])})),128)),e.tooManyReactions?((0,o.wg)(),(0,o.iD)("a",{key:0,class:"emoji-reaction-expand faint",href:"javascript:void(0)",onClick:t[1]||(t[1]=function(){return e.toggleShowAll&&e.toggleShowAll.apply(e,arguments)})},(0,r.zw)(e.showAll?e.$t("general.show_less"):e.showMoreString),1)):(0,o.kq)("",!0)])}]]);var Lt=n(12061),Rt=n(21268),qt=n(20460),Nt=n(4493),Zt=n(95052),Wt=n(67828);function Ht(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function Vt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ht(Object(n),!0).forEach((function(t){(0,le.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ht(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}be.vI.add(ye.FU$,ye.g4A,ye.byT,ye._1N,ye.NBC,ye.x5v,ye.Lh7,ye.CPW,ye.Tab,ye.RKn,ye.cNd,ye.Aq,ye.Mdf,ye.RP7,ye.mTx,ye.ptq,ye.cLY);var Kt,Gt=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},Yt=function(e,t,n){var o=Gt(t),r="controlledSet".concat(o),i="uncontrolled".concat(o);e[r]?e[r](n):e[i]=n};const Jt={name:"Status",components:{ReplyButton:ke,FavoriteButton:Ie,ReactButton:Me,RetweetButton:Ve,ExtraButtons:lt,PostStatusForm:dt.Z,UserAvatar:pt.default,AvatarList:mt.Z,Timeago:ht.Z,StatusPopover:_t,UserListPopover:Ot,EmojiReactions:Mt,StatusContent:ft.Z,RichContent:gt.Z,MentionLink:qt.Z,MentionsLine:Rt.Z,UserPopover:kt.default,UserLink:Lt.Z},props:["statusoid","expandable","inConversation","focused","highlight","compact","replies","isPreview","noHeading","inlineExpanded","showPinned","inProfile","profileUserId","inQuote","simpleTree","controlledThreadDisplayStatus","controlledToggleThreadDisplay","showOtherRepliesAsButton","controlledShowingTall","controlledToggleShowingTall","controlledExpandingSubject","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject","controlledReplying","controlledToggleReplying","controlledMediaPlaying","controlledSetMediaPlaying","dive"],data:function(){return{uncontrolledReplying:!1,unmuted:!1,userExpanded:!1,uncontrolledMediaPlaying:[],suspendable:!0,error:null,headTailLinks:null,displayQuote:!this.inQuote}},computed:Vt(Vt({},(Kt=["replying","mediaPlaying"],Kt.reduce((function(e,t){var n=Gt(t),o="controlledToggle".concat(n),r="controlled".concat(n),i="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[o]&&void 0===this.$props[o]||!this[o]?this[i]:this[r]},e}),{}))),{},{muteWords:function(){return this.mergedConfig.muteWords},showReasonMutedThread:function(){return(this.status.thread_muted||this.status.reblog&&this.status.reblog.thread_muted)&&!this.inConversation},repeaterClass:function(){var e=this.statusoid.user;return(0,Zt.M)(e)},userClass:function(){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user;return(0,Zt.M)(e)},deleted:function(){return this.statusoid.deleted},repeaterStyle:function(){var e=this.statusoid.user,t=this.mergedConfig.highlight;return(0,Zt.q)(t[e.screen_name])},userStyle:function(){if(!this.noHeading){var e=this.retweet?this.statusoid.retweeted_status.user:this.statusoid.user,t=this.mergedConfig.highlight;return(0,Zt.q)(t[e.screen_name])}},userProfileLink:function(){return this.generateUserProfileLink(this.status.user.id,this.status.user.screen_name)},replyProfileLink:function(){if(this.isReply){var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e?e.statusnet_profile_url:"NOT_FOUND"}},retweet:function(){return!!this.statusoid.retweeted_status},retweeterUser:function(){return this.statusoid.user},retweeter:function(){return this.statusoid.user.name||this.statusoid.user.screen_name_ui},retweeterHtml:function(){return this.statusoid.user.name},retweeterProfileLink:function(){return this.generateUserProfileLink(this.statusoid.user.id,this.statusoid.user.screen_name)},status:function(){return this.retweet?this.statusoid.retweeted_status:this.statusoid},statusFromGlobalRepository:function(){return this.$store.state.statuses.allStatusesObject[this.status.id]},loggedIn:function(){return!!this.currentUser},muteWordHits:function(){return(0,Wt.u)(this.status,this.muteWords)},rtBotStatus:function(){return this.statusoid.user.bot},botStatus:function(){return this.status.user.bot},botIndicator:function(){return this.botStatus&&!this.hideBotIndication},rtBotIndicator:function(){return this.rtBotStatus&&!this.hideBotIndication},mentionsLine:function(){var e=this;if(!this.headTailLinks)return[];var t=new Set(this.headTailLinks.writtenMentions.map((function(e){return e.url})));return this.status.attentions.filter((function(n){return n.id!==e.status.in_reply_to_user_id&&n.statusnet_profile_url!==e.status.user.statusnet_profile_url&&!t.has(n.statusnet_profile_url)})).map((function(e){return{url:e.statusnet_profile_url,content:e.screen_name,userId:e.id}}))},hasMentionsLine:function(){return this.mentionsLine.length>0},muted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.userIsMuted||status.thread_muted||this.muteWordHits.length>0||this.muteBotStatuses&&this.botStatus&&!this.compact;return!this.unmuted&&!this.shouldNotMute&&e},userIsMuted:function(){if(this.statusoid.user.id===this.currentUser.id)return!1;var e=this.status,t=e.reblog,n=this.$store.getters.relationship(e.user.id),o=t&&this.$store.getters.relationship(t.user.id);return e.muted||t&&t.muted||n.muting||o&&o.muting},shouldNotMute:function(){var e=this.status,t=e.reblog;return(this.inProfile&&(!t&&e.user.id===this.profileUserId||t&&t.user.id===this.profileUserId)||this.inConversation&&e.thread_muted)&&!this.muteWordHits.length>0},hideMutedUsers:function(){return this.mergedConfig.hideMutedPosts},hideMutedThreads:function(){return this.mergedConfig.hideMutedThreads},hideFilteredStatuses:function(){return this.mergedConfig.hideFilteredStatuses},hideWordFilteredPosts:function(){return this.mergedConfig.hideWordFilteredPosts},hideStatus:function(){return!this.shouldNotMute&&(this.muted&&this.hideFilteredStatuses||this.userIsMuted&&this.hideMutedUsers||this.status.thread_muted&&this.hideMutedThreads||this.muteWordHits.length>0&&this.hideWordFilteredPosts)},isFocused:function(){return!!this.focused||!!this.inConversation&&this.status.id===this.highlight},isReply:function(){return!(!this.status.in_reply_to_status_id||!this.status.in_reply_to_user_id)},replyToName:function(){if(this.status.in_reply_to_screen_name)return this.status.in_reply_to_screen_name;var e=this.$store.getters.findUser(this.status.in_reply_to_user_id);return e&&e.screen_name_ui},replySubject:function(){if(!this.status.summary)return"";var e=he()(this.status.summary),t=this.mergedConfig.subjectLineBehavior,n=e.match(/^re[: ]/i);return"noop"!==t&&n||"masto"===t?e:"email"===t?"re: ".concat(e):"noop"===t?"":void 0},combinedFavsAndRepeatsUsers:function(){var e=[].concat(this.statusFromGlobalRepository.favoritedBy,this.statusFromGlobalRepository.rebloggedBy);return pe()(e,"id")},tags:function(){return this.status.tags.filter((function(e){return e.hasOwnProperty("name")})).map((function(e){return e.name})).join(" ")},hidePostStats:function(){return this.mergedConfig.hidePostStats},muteBotStatuses:function(){return this.mergedConfig.muteBotStatuses},hideBotIndication:function(){return this.mergedConfig.hideBotIndication},currentUser:function(){return this.$store.state.users.currentUser},betterShadow:function(){return this.$store.state.interface.browserSupport.cssFilter},mergedConfig:function(){return this.$store.getters.mergedConfig},isSuspendable:function(){return!this.replying&&0===this.mediaPlaying.length},inThreadForest:function(){return!!this.controlledThreadDisplayStatus},threadShowing:function(){return"showing"===this.controlledThreadDisplayStatus},visibilityLocalized:function(){return this.$i18n.t("general.scope_in_timeline."+this.status.visibility)},isEdited:function(){return null!==this.status.edited_at},editingAvailable:function(){return this.$store.state.instance.editingAvailable},hasVisibleQuote:function(){return this.status.quote_url&&this.status.quote_visible},hasInvisibleQuote:function(){return this.status.quote_url&&!this.status.quote_visible},quotedStatus:function(){return this.status.quote_id?this.$store.state.statuses.allStatusesObject[this.status.quote_id]:void 0},shouldDisplayQuote:function(){return this.quotedStatus&&this.displayQuote}}),methods:{visibilityIcon:function(e){switch(e){case"private":return"lock";case"unlisted":return"lock-open";case"direct":return"envelope";default:return"globe"}},showError:function(e){this.error=e},clearError:function(){this.error=void 0},toggleReplying:function(){var e,t,n,o;e=this,t=Gt("replying"),n="controlledToggle".concat(t),o="uncontrolled".concat(t),e[n]?e[n]():e[o]=!e[o]},gotoOriginal:function(e){this.inConversation&&this.$emit("goto",e)},toggleExpanded:function(){this.$emit("toggleExpanded")},toggleMute:function(){this.unmuted=!this.unmuted},toggleUserExpanded:function(){this.userExpanded=!this.userExpanded},generateUserProfileLink:function(e,t){return(0,Nt.Z)(e,t,this.$store.state.instance.restrictedNicknames)},addMediaPlaying:function(e){Yt(this,"mediaPlaying",this.mediaPlaying.concat(e))},removeMediaPlaying:function(e){Yt(this,"mediaPlaying",this.mediaPlaying.filter((function(t){return t!==e})))},setHeadTailLinks:function(e){this.headTailLinks=e},toggleThreadDisplay:function(){this.controlledToggleThreadDisplay()},scrollIfHighlighted:function(e){var t=e;if(this.status.id===t){var n=this.$el.getBoundingClientRect();n.top<100||n.height>=window.innerHeight-50?window.scrollBy(0,n.top-100):n.bottom>window.innerHeight-50&&window.scrollBy(0,n.bottom-window.innerHeight+50)}},toggleDisplayQuote:function(){var e=this;this.shouldDisplayQuote?this.displayQuote=!1:this.quotedStatus?this.displayQuote=!0:this.$store.dispatch("fetchStatus",this.status.quote_id).then((function(){e.displayQuote=!0}))}},watch:{highlight:function(e){this.scrollIfHighlighted(e)},"status.repeat_num":function(e){this.isFocused&&this.statusFromGlobalRepository.rebloggedBy&&this.statusFromGlobalRepository.rebloggedBy.length!==e&&this.$store.dispatch("fetchRepeats",this.status.id)},"status.fave_num":function(e){this.isFocused&&this.statusFromGlobalRepository.favoritedBy&&this.statusFromGlobalRepository.favoritedBy.length!==e&&this.$store.dispatch("fetchFavs",this.status.id)},isSuspendable:function(e){this.suspendable=e}}},Qt=(0,_e.Z)(Jt,[["render",function(e,t,n,le,de,pe){var me=(0,o.up)("FAIcon"),he=(0,o.up)("user-link"),fe=(0,o.up)("UserAvatar"),ge=(0,o.up)("RichContent"),ve=(0,o.up)("router-link"),we=(0,o.up)("UserPopover"),be=(0,o.up)("Timeago"),ye=(0,o.up)("StatusPopover"),De=(0,o.up)("MentionLink"),_e=(0,o.up)("MentionsLine"),ke=(0,o.up)("i18n-t"),Ce=(0,o.up)("StatusContent"),Se=(0,o.up)("Status",!0),je=(0,o.up)("UserListPopover"),Fe=(0,o.up)("AvatarList"),Ae=(0,o.up)("EmojiReactions"),Oe=(0,o.up)("reply-button"),Ee=(0,o.up)("retweet-button"),ze=(0,o.up)("favorite-button"),Pe=(0,o.up)("ReactButton"),Ie=(0,o.up)("extra-buttons"),xe=(0,o.up)("PostStatusForm");return e.hideStatus?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",{key:0,ref:"root",class:(0,r.C_)(["Status",[{"-focused":e.isFocused},{"-conversation":e.inlineExpanded}]])},[e.error?((0,o.wg)(),(0,o.iD)("div",s,[(0,o.Uk)((0,r.zw)(e.error)+" ",1),(0,o._)("span",{class:"fa-scale-110 fa-old-padding",onClick:t[0]||(t[0]=function(){return e.clearError&&e.clearError.apply(e,arguments)})},[(0,o.Wm)(me,{icon:"times"})])])):(0,o.kq)("",!0),e.muted&&!e.isPreview?((0,o.wg)(),(0,o.iD)("div",a,[(0,o._)("small",u,[e.muted&&e.retweet?((0,o.wg)(),(0,o.j4)(me,{key:0,class:"fa-scale-110 fa-old-padding repeat-icon",icon:"retweet"})):(0,o.kq)("",!0),(0,o.Wm)(he,{user:e.status.user,at:!1},null,8,["user"])]),e.showReasonMutedThread?((0,o.wg)(),(0,o.iD)("small",c,(0,r.zw)(e.$t("status.thread_muted")),1)):(0,o.kq)("",!0),e.showReasonMutedThread&&e.muteWordHits.length>0?((0,o.wg)(),(0,o.iD)("small",l,(0,r.zw)(e.$t("status.thread_muted_and_words")),1)):(0,o.kq)("",!0),(0,o._)("small",{class:"mute-words",title:e.muteWordHits.join(", ")},(0,r.zw)(e.muteWordHits.join(", ")),9,d),(0,o._)("button",{class:"unmute button-unstyled",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.toggleMute&&e.toggleMute.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(me,{icon:"eye-slash",class:"fa-scale-110 fa-old-padding"})])])):((0,o.wg)(),(0,o.iD)(o.HY,{key:2},[e.showPinned?((0,o.wg)(),(0,o.iD)("div",p,[(0,o.Wm)(me,{icon:"thumbtack",class:"faint"}),(0,o._)("span",m,(0,r.zw)(e.$t("status.pinned")),1)])):(0,o.kq)("",!0),!e.retweet||e.noHeading||e.inConversation?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",{key:1,class:(0,r.C_)([[e.repeaterClass,{highlighted:e.repeaterStyle}],"status-container repeat-info"]),style:(0,r.j5)([e.repeaterStyle])},[e.retweet?((0,o.wg)(),(0,o.j4)(fe,{key:0,class:"left-side repeater-avatar",bot:e.rtBotIndicator,"better-shadow":e.betterShadow,user:e.statusoid.user},null,8,["bot","better-shadow","user"])):(0,o.kq)("",!0),(0,o._)("div",h,[(0,o._)("bdi",{class:"status-username repeater-name",title:e.retweeter},[e.retweeterHtml?((0,o.wg)(),(0,o.j4)(ve,{key:0,to:e.retweeterProfileLink},{default:(0,o.w5)((function(){return[(0,o.Wm)(ge,{html:e.retweeterHtml,emoji:e.retweeterUser.emoji},null,8,["html","emoji"])]})),_:1},8,["to"])):((0,o.wg)(),(0,o.j4)(ve,{key:1,to:e.retweeterProfileLink},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.retweeter),1)]})),_:1},8,["to"]))],8,f),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o.Wm)(me,{icon:"retweet",class:"repeat-icon",title:e.$t("tool_tip.repeat")},null,8,["title"]),(0,o.Uk)(" "+(0,r.zw)(e.$t("timeline.repeated")),1)])],6)),e.deleted?((0,o.wg)(),(0,o.iD)("div",ie,[(0,o._)("div",se,[(0,o.Wm)(fe,{class:"post-avatar",compact:e.compact,bot:e.botIndicator},null,8,["compact","bot"])]),(0,o._)("div",ae,[(0,o._)("div",ue,(0,r.zw)(e.$t("status.status_deleted")),1),e.replying?((0,o.wg)(),(0,o.j4)(Oe,{key:0,replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"])):(0,o.kq)("",!0)])])):((0,o.wg)(),(0,o.iD)("div",{key:2,class:(0,r.C_)([[e.userClass,{highlighted:e.userStyle,"-repeat":e.retweet&&!e.inConversation}],"status-container"]),style:(0,r.j5)([e.userStyle]),"data-tags":e.tags},[e.noHeading?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",v,[(0,o._)("a",{href:e.$router.resolve(e.userProfileLink).href,onClick:t[2]||(t[2]=(0,i.iM)((function(){}),["prevent"]))},[(0,o.Wm)(we,{"user-id":e.status.user.id,"overlay-centers":!0},{default:(0,o.w5)((function(){return[(0,o.Wm)(fe,{class:"post-avatar",bot:e.botIndicator,compact:e.compact,"better-shadow":e.betterShadow,user:e.status.user},null,8,["bot","compact","better-shadow","user"])]})),_:1},8,["user-id"])],8,w)])),(0,o._)("div",b,[e.noHeading?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",y,[(0,o._)("div",D,[(0,o._)("div",_,[e.status.user.name_html?((0,o.wg)(),(0,o.iD)("h4",{key:0,class:"status-username",title:e.status.user.name},[(0,o.Wm)(ge,{html:e.status.user.name,emoji:e.status.user.emoji},null,8,["html","emoji"])],8,k)):((0,o.wg)(),(0,o.iD)("h4",{key:1,class:"status-username",title:e.status.user.name},(0,r.zw)(e.status.user.name),9,C)),(0,o.Wm)(he,{class:"account-name",title:e.status.user.screen_name_ui,user:e.status.user,at:!1},null,8,["title","user"]),e.status.user&&e.status.user.favicon?((0,o.wg)(),(0,o.iD)("img",{key:2,class:"status-favicon",src:e.status.user.favicon},null,8,S)):(0,o.kq)("",!0)]),(0,o._)("span",j,[(0,o.Wm)(ve,{class:"timeago faint-link",to:{name:"conversation",params:{id:e.status.id}}},{default:(0,o.w5)((function(){return[(0,o.Wm)(be,{time:e.status.created_at,"auto-update":60},null,8,["time"])]})),_:1},8,["to"]),e.status.visibility?((0,o.wg)(),(0,o.iD)("span",{key:0,class:"visibility-icon",title:e.visibilityLocalized},[(0,o.Wm)(me,{"fixed-width":"",class:"fa-scale-110",icon:e.visibilityIcon(e.status.visibility)},null,8,["icon"])],8,F)):(0,o.kq)("",!0),e.expandable&&!e.isPreview?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-unstyled",title:e.$t("status.expand"),onClick:t[3]||(t[3]=(0,i.iM)((function(){return e.toggleExpanded&&e.toggleExpanded.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(me,{"fixed-width":"",class:"fa-scale-110",icon:"plus-square"})],8,A)):(0,o.kq)("",!0),e.unmuted?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-unstyled",onClick:t[4]||(t[4]=(0,i.iM)((function(){return e.toggleMute&&e.toggleMute.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(me,{"fixed-width":"",icon:"eye-slash",class:"fa-scale-110"})])):(0,o.kq)("",!0),e.inThreadForest&&e.replies&&e.replies.length&&!e.simpleTree?((0,o.wg)(),(0,o.iD)("button",{key:3,class:"button-unstyled",title:e.threadShowing?e.$t("status.thread_hide"):e.$t("status.thread_show"),"aria-expanded":e.threadShowing?"true":"false",onClick:t[5]||(t[5]=(0,i.iM)((function(){return e.toggleThreadDisplay&&e.toggleThreadDisplay.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(me,{"fixed-width":"",class:"fa-scale-110",icon:e.threadShowing?"chevron-up":"chevron-down"},null,8,["icon"])],8,O)):(0,o.kq)("",!0),e.dive&&!e.simpleTree?((0,o.wg)(),(0,o.iD)("button",{key:4,class:"button-unstyled",title:e.$t("status.show_only_conversation_under_this"),onClick:t[6]||(t[6]=(0,i.iM)((function(){return e.dive&&e.dive.apply(e,arguments)}),["prevent"]))},[(0,o.Wm)(me,{"fixed-width":"",class:"fa-scale-110",icon:"angle-double-right"})],8,E)):(0,o.kq)("",!0)])]),e.isReply||e.hasMentionsLine?((0,o.wg)(),(0,o.iD)("div",z,[e.isReply?((0,o.wg)(),(0,o.iD)("span",P,[e.isPreview?((0,o.wg)(),(0,o.iD)("span",T,[(0,o._)("span",$,(0,r.zw)(e.$t("status.reply_to")),1)])):((0,o.wg)(),(0,o.j4)(ye,{key:0,"status-id":e.status.parent_visible&&e.status.in_reply_to_status_id,class:(0,r.C_)(["reply-to-popover",{"-strikethrough":!e.status.parent_visible}]),style:{"min-width":"0"}},{default:(0,o.w5)((function(){return[(0,o._)("button",{class:"button-unstyled reply-to","aria-label":e.$t("tool_tip.reply"),onClick:t[7]||(t[7]=(0,i.iM)((function(t){return e.gotoOriginal(e.status.in_reply_to_status_id)}),["prevent"]))},[(0,o.Wm)(me,{class:"fa-scale-110 fa-old-padding",icon:"reply",flip:"horizontal"}),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o._)("span",x,(0,r.zw)(e.$t("status.reply_to")),1)],8,I)]})),_:1},8,["status-id","class"])),(0,o.Wm)(De,{content:e.replyToName,url:e.replyProfileLink,"user-id":e.status.in_reply_to_user_id,"user-screen-name":e.status.in_reply_to_screen_name},null,8,["content","url","user-id","user-screen-name"])])):(0,o.kq)("",!0),e.hasMentionsLine?((0,o.wg)(),(0,o.iD)("span",B,[(0,o._)("span",{class:"mentions","aria-label":e.$t("tool_tip.mentions"),onClick:t[8]||(t[8]=(0,i.iM)((function(t){return e.gotoOriginal(e.status.in_reply_to_status_id)}),["prevent"]))},[(0,o._)("span",M,(0,r.zw)(e.$t("status.mentions")),1)],8,U),e.hasMentionsLine?((0,o.wg)(),(0,o.j4)(_e,{key:0,mentions:e.mentionsLine.slice(0,1),class:"mentions-line-first"},null,8,["mentions"])):(0,o.kq)("",!0)])):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),e.hasMentionsLine?((0,o.wg)(),(0,o.j4)(_e,{key:2,mentions:e.mentionsLine.slice(1),class:"mentions-line"},null,8,["mentions"])):(0,o.kq)("",!0)])):(0,o.kq)("",!0),e.isEdited&&e.editingAvailable&&!e.isPreview?((0,o.wg)(),(0,o.iD)("div",L,[(0,o.Wm)(ke,{keypath:"status.edited_at",tag:"span"},{time:(0,o.w5)((function(){return[(0,o.Wm)(be,{"template-key":"time.in_past",time:e.status.edited_at,"auto-update":60,"long-format":!0},null,8,["time"])]})),_:1})])):(0,o.kq)("",!0)])),(0,o.Wm)(Ce,{ref:"content",status:e.status,"no-heading":e.noHeading,highlight:e.highlight,focused:e.isFocused,"controlled-showing-tall":e.controlledShowingTall,"controlled-expanding-subject":e.controlledExpandingSubject,"controlled-showing-long-subject":e.controlledShowingLongSubject,"controlled-toggle-showing-tall":e.controlledToggleShowingTall,"controlled-toggle-expanding-subject":e.controlledToggleExpandingSubject,"controlled-toggle-showing-long-subject":e.controlledToggleShowingLongSubject,onMediaplay:t[9]||(t[9]=function(t){return e.addMediaPlaying(t)}),onMediapause:t[10]||(t[10]=function(t){return e.removeMediaPlaying(t)}),onParseReady:e.setHeadTailLinks},null,8,["status","no-heading","highlight","focused","controlled-showing-tall","controlled-expanding-subject","controlled-showing-long-subject","controlled-toggle-showing-tall","controlled-toggle-expanding-subject","controlled-toggle-showing-long-subject","onParseReady"]),e.hasVisibleQuote?((0,o.wg)(),(0,o.iD)("article",R,[(0,o._)("button",{class:"button-unstyled -link display-quoted-status-button","aria-expanded":e.shouldDisplayQuote,onClick:t[11]||(t[11]=function(){return e.toggleDisplayQuote&&e.toggleDisplayQuote.apply(e,arguments)})},[(0,o.Uk)((0,r.zw)(e.shouldDisplayQuote?e.$t("status.hide_quote"):e.$t("status.display_quote"))+" ",1),(0,o.Wm)(me,{class:"display-quoted-status-button-icon",icon:e.shouldDisplayQuote?"chevron-up":"chevron-down"},null,8,["icon"])],8,q),e.shouldDisplayQuote?((0,o.wg)(),(0,o.j4)(Se,{key:0,statusoid:e.quotedStatus,"in-quote":!0},null,8,["statusoid"])):(0,o.kq)("",!0)])):e.hasInvisibleQuote?((0,o.wg)(),(0,o.iD)("p",N,[(0,o.Wm)(ke,{keypath:"status.invisible_quote"},{link:(0,o.w5)((function(){return[(0,o._)("bdi",null,[(0,o._)("a",{href:e.status.quote_url,target:"_blank"},(0,r.zw)(e.status.quote_url),9,Z)])]})),_:1})])):(0,o.kq)("",!0),e.inConversation&&!e.isPreview&&e.replies&&e.replies.length?((0,o.wg)(),(0,o.iD)("div",W,[e.showOtherRepliesAsButton&&e.replies.length>1?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-unstyled -link faint",title:e.$tc("status.ancestor_follow",e.replies.length-1,{numReplies:e.replies.length-1}),onClick:t[12]||(t[12]=(0,i.iM)((function(){return e.dive&&e.dive.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.$tc("status.replies_list_with_others",e.replies.length-1,{numReplies:e.replies.length-1})),9,H)):((0,o.wg)(),(0,o.iD)("span",V,(0,r.zw)(e.$t("status.replies_list")),1)),((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.replies,(function(t){return(0,o.wg)(),(0,o.j4)(ye,{key:t.id,"status-id":t.id},{default:(0,o.w5)((function(){return[(0,o._)("button",{class:"button-unstyled -link reply-link",onClick:(0,i.iM)((function(n){return e.gotoOriginal(t.id)}),["prevent"])},(0,r.zw)(t.name),9,K)]})),_:2},1032,["status-id"])})),128))])):(0,o.kq)("",!0),(0,o.Wm)(i.uT,{name:"fade"},{default:(0,o.w5)((function(){return[!e.hidePostStats&&e.isFocused&&e.combinedFavsAndRepeatsUsers.length>0?((0,o.wg)(),(0,o.iD)("div",G,[(0,o._)("div",Y,[e.statusFromGlobalRepository.rebloggedBy&&e.statusFromGlobalRepository.rebloggedBy.length>0?((0,o.wg)(),(0,o.j4)(je,{key:0,users:e.statusFromGlobalRepository.rebloggedBy},{default:(0,o.w5)((function(){return[(0,o._)("div",J,[(0,o._)("a",Q,(0,r.zw)(e.$t("status.repeats")),1),(0,o._)("div",X,(0,r.zw)(e.statusFromGlobalRepository.rebloggedBy.length),1)])]})),_:1},8,["users"])):(0,o.kq)("",!0),e.statusFromGlobalRepository.favoritedBy&&e.statusFromGlobalRepository.favoritedBy.length>0?((0,o.wg)(),(0,o.j4)(je,{key:1,users:e.statusFromGlobalRepository.favoritedBy},{default:(0,o.w5)((function(){return[(0,o._)("div",ee,[(0,o._)("a",te,(0,r.zw)(e.$t("status.favorites")),1),(0,o._)("div",ne,(0,r.zw)(e.statusFromGlobalRepository.favoritedBy.length),1)])]})),_:1},8,["users"])):(0,o.kq)("",!0),(0,o._)("div",oe,[(0,o.Wm)(Fe,{users:e.combinedFavsAndRepeatsUsers},null,8,["users"])])])])):(0,o.kq)("",!0)]})),_:1}),!e.mergedConfig.emojiReactionsOnTimeline&&!e.isFocused||e.noHeading||e.isPreview?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(Ae,{key:4,status:e.status},null,8,["status"])),e.noHeading||e.isPreview?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",re,[(0,o.Wm)(Oe,{replying:e.replying,status:e.status,onToggle:e.toggleReplying},null,8,["replying","status","onToggle"]),(0,o.Wm)(Ee,{visibility:e.status.visibility,"logged-in":e.loggedIn,status:e.status},null,8,["visibility","logged-in","status"]),(0,o.Wm)(ze,{"logged-in":e.loggedIn,status:e.status},null,8,["logged-in","status"]),e.loggedIn?((0,o.wg)(),(0,o.j4)(Pe,{key:0,status:e.status},null,8,["status"])):(0,o.kq)("",!0),(0,o.Wm)(Ie,{status:e.status,onOnError:e.showError,onOnSuccess:e.clearError},null,8,["status","onOnError","onOnSuccess"])]))])],14,g)),e.replying?((0,o.wg)(),(0,o.iD)("div",ce,[(0,o.Wm)(xe,{class:"reply-body","reply-to":e.status.id,attentions:e.status.attentions,"replied-user":e.status.user,"copy-message-scope":e.status.visibility,subject:e.replySubject,onPosted:e.toggleReplying},null,8,["reply-to","attentions","replied-user","copy-message-scope","subject","onPosted"])])):(0,o.kq)("",!0)],64))],2))}]])},10252:(e,t,n)=>{"use strict";n.d(t,{Z:()=>K});var o=n(66252),r=n(3577),i={key:0},s={key:1},a={key:3,class:"link-preview media-body"},u=n(4942),c=n(66596),l=["role"],d=["title"],p={class:"option-result-label"},m={class:"result-percentage"},h=["role","aria-labelledby","aria-checked","onClick"],f=["disabled","value"],g=["disabled","value"],v={class:"option-vote"},w={class:"footer faint"},b=["disabled"],y={class:"total"},D=n(35161),_=n.n(D),k=n(84486),C=n.n(k),S=n(1840),j=n(53599),F=n(92820);const A={name:"Poll",props:["basePoll","emoji"],components:{Timeago:S.Z,RichContent:F.Z},data:function(){return{loading:!1,choices:[],randomSeed:(0,j.Z)()}},created:function(){this.$store.state.polls.pollsObject[this.pollId]||this.$store.dispatch("mergeOrAddPoll",this.basePoll),this.$store.dispatch("trackPoll",this.pollId)},unmounted:function(){this.$store.dispatch("untrackPoll",this.pollId)},computed:{pollId:function(){return this.basePoll.id},poll:function(){return this.$store.state.polls.pollsObject[this.pollId]||{}},options:function(){return this.poll&&this.poll.options||[]},expiresAt:function(){return this.poll&&this.poll.expires_at||0},expired:function(){return this.poll&&this.poll.expired||!1},loggedIn:function(){return this.$store.state.users.currentUser},showResults:function(){return this.poll.voted||this.expired||!this.loggedIn},totalVotesCount:function(){return this.poll.votes_count},containerClass:function(){return{loading:this.loading}},choiceIndices:function(){return this.choices.map((function(e,t){return e&&t})).filter((function(e){return"number"==typeof e}))},isDisabled:function(){var e=0===this.choiceIndices.length;return this.loading||e}},methods:{percentageForOption:function(e){return 0===this.totalVotesCount?0:Math.round(e/this.totalVotesCount*100)},resultTitle:function(e){return"".concat(e.votes_count,"/").concat(this.totalVotesCount," ").concat(this.$t("polls.votes"))},fetchPoll:function(){this.$store.dispatch("refreshPoll",{id:this.statusId,pollId:this.poll.id})},activateOption:function(e){var t=this.$el.querySelectorAll("input"),n=this.$el.querySelector('input[value="'.concat(e,'"]'));this.poll.multiple?n.checked=!n.checked:(C()(t,(function(e){e.checked=!1})),n.checked=!0),this.choices=_()(t,(function(e){return e.checked}))},optionId:function(e){return"poll".concat(this.poll.id,"-").concat(e)},vote:function(){var e=this;0!==this.choiceIndices.length&&(this.loading=!0,this.$store.dispatch("votePoll",{id:this.statusId,pollId:this.poll.id,choices:this.choiceIndices}).then((function(t){e.loading=!1})))}}};var O=n(83744);const E=(0,O.Z)(A,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("RichContent"),c=(0,o.up)("Timeago"),D=(0,o.up)("i18n-t");return(0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["poll",e.containerClass])},[(0,o._)("div",{role:e.showResults?"section":e.poll.multiple?"group":"radiogroup"},[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.options,(function(t,n){return(0,o.wg)(),(0,o.iD)("div",{key:n,class:"poll-option"},[e.showResults?((0,o.wg)(),(0,o.iD)("div",{key:0,title:e.resultTitle(t),class:"option-result"},[(0,o._)("div",p,[(0,o._)("span",m,(0,r.zw)(e.percentageForOption(t.votes_count))+"% ",1),(0,o.Wm)(u,{html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["html","emoji"])]),(0,o._)("div",{class:"result-fill",style:(0,r.j5)({width:"".concat(e.percentageForOption(t.votes_count),"%")})},null,4)],8,d)):((0,o.wg)(),(0,o.iD)("div",{key:1,tabindex:"0",role:e.poll.multiple?"checkbox":"radio","aria-labelledby":"option-vote-".concat(e.randomSeed,"-").concat(n),"aria-checked":e.choices[n],onClick:function(t){return e.activateOption(n)}},[e.poll.multiple?((0,o.wg)(),(0,o.iD)("input",{key:0,type:"checkbox",class:"poll-checkbox",disabled:e.loading,value:n},null,8,f)):((0,o.wg)(),(0,o.iD)("input",{key:1,type:"radio",disabled:e.loading,value:n},null,8,g)),(0,o._)("label",v,[(0,o.Wm)(u,{id:"option-vote-".concat(e.randomSeed,"-").concat(n),html:t.title_html,"handle-links":!1,emoji:e.emoji},null,8,["id","html","emoji"])])],8,h))])})),128))],8,l),(0,o._)("div",w,[e.showResults?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:0,class:"btn button-default poll-vote-button",type:"button",disabled:e.isDisabled,onClick:t[0]||(t[0]=function(){return e.vote&&e.vote.apply(e,arguments)})},(0,r.zw)(e.$t("polls.vote")),9,b)),(0,o._)("div",y,["number"==typeof e.poll.voters_count?((0,o.wg)(),(0,o.iD)(o.HY,{key:0},[(0,o.Uk)((0,r.zw)(e.$tc("polls.people_voted_count",e.poll.voters_count,{count:e.poll.voters_count}))+" ·  ",1)],64)):((0,o.wg)(),(0,o.iD)(o.HY,{key:1},[(0,o.Uk)((0,r.zw)(e.$tc("polls.votes_count",e.poll.votes_count,{count:e.poll.votes_count}))+" ·  ",1)],64))]),(0,o._)("span",null,[(0,o.Wm)(D,{scope:"global",keypath:e.expired?"polls.expired":"polls.expires_in"},{default:(0,o.w5)((function(){return[(0,o.Wm)(c,{time:e.expiresAt,"auto-update":60,"now-threshold":0},null,8,["time"])]})),_:1},8,["keypath"])])])],2)}]]);var z=n(67671),P=n(49963),I={class:"body"},x=n(58394),T=n(989),$=n(9382),B=n(84131);function U(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}$.vI.add(B.gMD,B.Xig,B.VmB,B.nNP,B.Mm7);const M={name:"StatusContent",props:["compact","status","focused","noHeading","fullContent","singleLine","showingTall","expandingSubject","showingLongSubject","toggleShowingTall","toggleExpandingSubject","toggleShowingLongSubject"],data:function(){return{postLength:this.status.text.length,parseReadyDone:!1}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?U(Object(n),!0).forEach((function(t){(0,u.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):U(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({localCollapseSubjectDefault:function(){return this.mergedConfig.collapseMessageWithSubject},tallStatus:function(){return!this.singleLine&&!this.compact&&this.status.raw_html.split(/<p|<br/).length+this.postLength/80>20},longSubject:function(){return this.status.summary.length>240},mightHideBecauseSubject:function(){return!!this.status.summary&&this.localCollapseSubjectDefault},mightHideBecauseTall:function(){return this.tallStatus&&!(this.status.summary&&this.localCollapseSubjectDefault)},hideSubjectStatus:function(){return this.mightHideBecauseSubject&&!this.expandingSubject},hideTallStatus:function(){return this.mightHideBecauseTall&&!this.showingTall},showingMore:function(){return this.mightHideBecauseTall&&this.showingTall||this.mightHideBecauseSubject&&this.expandingSubject},attachmentTypes:function(){return this.status.attachments.map((function(e){return x.ZP.fileType(e.mimetype)}))}},(0,T.Se)(["mergedConfig"])),components:{RichContent:F.Z},mounted:function(){var e=this;this.status.attentions&&this.status.attentions.forEach((function(t){var n=t.id;e.$store.dispatch("fetchUserIfMissing",n)}))},methods:{onParseReady:function(e){var t=this;if(!this.parseReadyDone){this.parseReadyDone=!0,this.$emit("parseReady",e);var n=e.writtenMentions,o=e.invisibleMentions;n.filter((function(e){return!e.notifying})).forEach((function(e){var n=e.content,o=e.url,r=n.replace(/<[^>]+?>/gi,"");if(r.startsWith("@")){var i=r.slice(1),s=o.replace(/^https?:\/\//,"").replace(/\/.+?$/,"");t.$store.dispatch("fetchUserIfMissing","".concat(i,"@").concat(s))}})),this.postLength=o.reduce((function(e,t){return e-t.textContent.length-1}),this.postLength)}},toggleShowMore:function(){this.mightHideBecauseTall?this.toggleShowingTall():this.mightHideBecauseSubject&&this.toggleExpandingSubject()},generateTagLink:function(e){return"/tag/".concat(e)}}},L=(0,O.Z)(M,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("RichContent"),c=(0,o.up)("FAIcon");return(0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["StatusBody",{"-compact":e.compact}])},[(0,o._)("div",I,[e.status.summary_raw_html?((0,o.wg)(),(0,o.iD)("div",{key:0,class:(0,r.C_)(["summary-wrapper",{"-tall":e.longSubject&&!e.showingLongSubject}])},[(0,o.Wm)(u,{class:"media-body summary",html:e.status.summary_raw_html,emoji:e.status.emojis},null,8,["html","emoji"]),(0,o.wy)((0,o._)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[0]||(t[0]=(0,P.iM)((function(){return e.toggleShowingLongSubject&&e.toggleShowingLongSubject.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.$t("status.hide_full_subject")),513),[[P.F8,e.longSubject&&e.showingLongSubject]]),(0,o.wy)((0,o._)("button",{class:"button-unstyled -link tall-subject-hider",onClick:t[1]||(t[1]=(0,P.iM)((function(){return e.toggleShowingLongSubject&&e.toggleShowingLongSubject.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.$t("status.show_full_subject")),513),[[P.F8,e.longSubject&&!e.showingLongSubject]])],2)):(0,o.kq)("",!0),(0,o._)("div",{class:(0,r.C_)([{"-tall-status":e.hideTallStatus},"text-wrapper"])},[(0,o.wy)((0,o._)("button",{class:(0,r.C_)(["button-unstyled -link tall-status-hider",{"-focused":e.focused}]),onClick:t[2]||(t[2]=(0,P.iM)((function(){return e.toggleShowMore&&e.toggleShowMore.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.$t("general.show_more")),3),[[P.F8,e.hideTallStatus]]),e.hideSubjectStatus||e.singleLine&&e.status.summary_raw_html?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(u,{key:0,class:(0,r.C_)([{"-single-line":e.singleLine},"text media-body"]),html:e.status.raw_html,emoji:e.status.emojis,"handle-links":!0,greentext:e.mergedConfig.greentext,attentions:e.status.attentions,onParseReady:e.onParseReady},null,8,["class","html","emoji","greentext","attentions","onParseReady"])),(0,o.wy)((0,o._)("button",{class:"button-unstyled -link cw-status-hider",onClick:t[3]||(t[3]=(0,P.iM)((function(){return e.toggleShowMore&&e.toggleShowMore.apply(e,arguments)}),["prevent"]))},[(0,o.Uk)((0,r.zw)(e.$t("status.show_content"))+" ",1),e.attachmentTypes.includes("image")?((0,o.wg)(),(0,o.j4)(c,{key:0,icon:"image"})):(0,o.kq)("",!0),e.attachmentTypes.includes("video")?((0,o.wg)(),(0,o.j4)(c,{key:1,icon:"video"})):(0,o.kq)("",!0),e.attachmentTypes.includes("audio")?((0,o.wg)(),(0,o.j4)(c,{key:2,icon:"music"})):(0,o.kq)("",!0),e.attachmentTypes.includes("unknown")?((0,o.wg)(),(0,o.j4)(c,{key:3,icon:"file"})):(0,o.kq)("",!0),e.status.poll&&e.status.poll.options?((0,o.wg)(),(0,o.j4)(c,{key:4,icon:"poll-h"})):(0,o.kq)("",!0),e.status.card?((0,o.wg)(),(0,o.j4)(c,{key:5,icon:"link"})):(0,o.kq)("",!0)],512),[[P.F8,e.hideSubjectStatus]]),(0,o.wy)((0,o._)("button",{class:"button-unstyled -link status-unhider",onClick:t[4]||(t[4]=(0,P.iM)((function(){return e.toggleShowMore&&e.toggleShowMore.apply(e,arguments)}),["prevent"]))},(0,r.zw)(e.tallStatus?e.$t("general.show_less"):e.$t("status.hide_content")),513),[[P.F8,e.showingMore&&!e.fullContent]])],2)]),e.hideSubjectStatus?(0,o.kq)("",!0):(0,o.WI)(e.$slots,"default",{key:0})],2)}]]);var R=n(92798);function q(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function N(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?q(Object(n),!0).forEach((function(t){(0,u.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):q(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}$.vI.add(B.IJ7,B.gMD,B.Xig,B.VmB,B.nNP,B.Mm7);var Z,W=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},H=function(e,t){var n=W(t),o="controlledToggle".concat(n),r="uncontrolled".concat(n);e[o]?e[o]():e[r]=!e[r]};const V={name:"StatusContent",props:["status","compact","focused","noHeading","fullContent","singleLine","controlledShowingTall","controlledExpandingSubject","controlledToggleShowingTall","controlledToggleExpandingSubject","controlledShowingLongSubject","controlledToggleShowingLongSubject"],data:function(){return{uncontrolledShowingTall:this.fullContent||this.inConversation&&this.focused,uncontrolledShowingLongSubject:!1,uncontrolledExpandingSubject:!this.$store.getters.mergedConfig.collapseMessageWithSubject}},computed:N(N(N({},(Z=["showingTall","expandingSubject","showingLongSubject"],Z.reduce((function(e,t){var n=W(t),o="controlledToggle".concat(n),r="controlled".concat(n),i="uncontrolled".concat(n);return e[t]=function(){return void 0===this.$data[o]&&void 0===this.$props[o]||!this[o]?this[i]:this[r]},e}),{}))),{},{statusCard:function(){return this.status.card?this.status.card.url===this.status.quote_url?null:this.status.card:null},hideAttachments:function(){return this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation},nsfwClickthrough:function(){return!(!this.status.nsfw||this.status.summary&&this.localCollapseSubjectDefault)},attachmentSize:function(){return this.compact?"small":this.mergedConfig.hideAttachments&&!this.inConversation||this.mergedConfig.hideAttachmentsInConv&&this.inConversation||this.status.attachments.length>this.maxThumbnails?"hide":"normal"},maxThumbnails:function(){return this.mergedConfig.maxThumbnails}},(0,T.Se)(["mergedConfig"])),(0,T.rn)({currentUser:function(e){return e.users.currentUser}})),components:{Attachment:c.Z,Poll:E,Gallery:z.Z,LinkPreview:R.Z,StatusBody:L},methods:{toggleShowingTall:function(){H(this,"showingTall")},toggleExpandingSubject:function(){H(this,"expandingSubject")},toggleShowingLongSubject:function(){H(this,"showingLongSubject")},setMedia:function(){var e=this,t="hide"===this.attachmentSize?this.status.attachments:this.galleryAttachments;return function(){return e.$store.dispatch("setMedia",t)}}}},K=(0,O.Z)(V,[["render",function(e,t,n,u,c,l){var d=(0,o.up)("Poll"),p=(0,o.up)("FAIcon"),m=(0,o.up)("gallery"),h=(0,o.up)("link-preview"),f=(0,o.up)("StatusBody");return(0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["StatusContent",{"-compact":e.compact}])},[(0,o.WI)(e.$slots,"header"),(0,o.Wm)(f,{status:e.status,compact:e.compact,"single-line":e.singleLine,"showing-tall":e.showingTall,"expanding-subject":e.expandingSubject,"showing-long-subject":e.showingLongSubject,"toggle-showing-tall":e.toggleShowingTall,"toggle-expanding-subject":e.toggleExpandingSubject,"toggle-showing-long-subject":e.toggleShowingLongSubject,onParseReady:t[2]||(t[2]=function(t){return e.$emit("parseReady",t)})},{default:(0,o.w5)((function(){return[e.status.poll&&e.status.poll.options&&!e.compact?((0,o.wg)(),(0,o.iD)("div",i,[(0,o.Wm)(d,{"base-poll":e.status.poll,emoji:e.status.emojis},null,8,["base-poll","emoji"])])):e.status.poll&&e.status.poll.options&&e.compact?((0,o.wg)(),(0,o.iD)("div",s,[(0,o.Wm)(p,{icon:"poll-h",size:"2x"})])):(0,o.kq)("",!0),0!==e.status.attachments.length?((0,o.wg)(),(0,o.j4)(m,{key:2,class:"attachments media-body",compact:e.compact,nsfw:e.nsfwClickthrough,attachments:e.status.attachments,limit:e.compact?1:0,size:e.attachmentSize,onPlay:t[0]||(t[0]=function(t){return e.$emit("mediaplay",e.attachment.id)}),onPause:t[1]||(t[1]=function(t){return e.$emit("mediapause",e.attachment.id)})},null,8,["compact","nsfw","attachments","limit","size"])):(0,o.kq)("",!0),!e.statusCard||e.noHeading||e.compact?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",a,[(0,o.Wm)(h,{card:e.status.card,size:e.attachmentSize,nsfw:e.nsfwClickthrough},null,8,["card","size","nsfw"])]))]})),_:1},8,["status","compact","single-line","showing-tall","expanding-subject","showing-long-subject","toggle-showing-tall","toggle-expanding-subject","toggle-showing-long-subject"]),(0,o.WI)(e.$slots,"footer")],2)}]])},32140:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=n(66252),r=n(3577),i={key:0,ref:"canvas"},s=["alt","title","data-src","src","referrerpolicy","loading"];const a={props:["src","referrerpolicy","mimetype","imageLoadError","imageLoadHandler","alt","height","width","dataSrc","loading"],data:function(){return{realSrc:this.src,stopGifs:this.$store.getters.mergedConfig.stopGifs}},computed:{animated:function(){return!!this.realSrc&&this.stopGifs&&("image/gif"===this.mimetype||this.realSrc.endsWith(".gif"))},style:function(){var e=function(e){return/\d$/.test(e)?e+"px":e};return{height:this.height?e(this.height):null,width:this.width?e(this.width):null}}},methods:{loadLazy:function(){this.dataSrc&&(this.realSrc=this.dataSrc)},onLoad:function(){if(this.realSrc){var e=this.$refs.src;if(e){this.imageLoadHandler&&this.imageLoadHandler(e);var t=this.$refs.canvas;if(t){var n=e.naturalWidth,o=e.naturalHeight;t.width=n,t.height=o,t.getContext("2d").drawImage(e,0,0,n,o)}}}},onError:function(){this.imageLoadError&&this.imageLoadError()}},watch:{src:function(){this.realSrc=this.src},dataSrc:function(){this.$el.removeAttribute("data-loaded")}}},u=(0,n(83744).Z)(a,[["render",function(e,t,n,a,u,c){return(0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["still-image",{animated:e.animated}]),style:(0,r.j5)(e.style)},[e.animated?((0,o.wg)(),(0,o.iD)("canvas",i,null,512)):(0,o.kq)("",!0),((0,o.wg)(),(0,o.iD)("img",{ref:"src",key:e.realSrc,alt:e.alt,title:e.alt,"data-src":e.dataSrc,src:e.realSrc,referrerpolicy:e.referrerpolicy,loading:e.loading,onLoad:t[0]||(t[0]=function(){return e.onLoad&&e.onLoad.apply(e,arguments)}),onError:t[1]||(t[1]=function(){return e.onError&&e.onError.apply(e,arguments)})},null,40,s)),(0,o.WI)(e.$slots,"default")],6)}]])},1840:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var o=n(66252),r=n(3577),i=["datetime","title"],s=n(27483),a=n(39776);const u={name:"Timeago",props:["time","autoUpdate","longFormat","nowThreshold","templateKey"],data:function(){return{relativeTime:{key:"time.now",num:0},interval:null}},computed:{localeDateString:function(){var e=a.Z.internalToBrowserLocale(this.$i18n.locale);return"string"==typeof this.time?new Date(Date.parse(this.time)).toLocaleString(e):this.time.toLocaleString(e)},relativeTimeString:function(){var e=this.$i18n.tc(this.relativeTime.key,this.relativeTime.num,[this.relativeTime.num]);return"string"==typeof this.templateKey&&"time.now"!==this.relativeTime.key?this.$i18n.t(this.templateKey,[e]):e}},watch:{time:function(e,t){t!==e&&(clearTimeout(this.interval),this.refreshRelativeTimeObject())}},created:function(){this.refreshRelativeTimeObject()},unmounted:function(){clearTimeout(this.interval)},methods:{refreshRelativeTimeObject:function(){var e="number"==typeof this.nowThreshold?this.nowThreshold:1;this.relativeTime=this.longFormat?s.GV(this.time,e):s._F(this.time,e),this.autoUpdate&&(this.interval=setTimeout(this.refreshRelativeTimeObject,1e3*this.autoUpdate))}}},c=(0,n(83744).Z)(u,[["render",function(e,t,n,s,a,u){return(0,o.wg)(),(0,o.iD)("time",{datetime:n.time,title:u.localeDateString},(0,r.zw)(u.relativeTimeString),9,i)}]])},42262:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var o=n(66252),r=n(9382),i=n(84131);r.vI.add(i.dT$);const s={props:{user:Object}},a=(0,n(83744).Z)(s,[["render",function(e,t,n,r,i,s){var a=(0,o.up)("FAIcon");return e.user&&e.user.screen_name_ui_contains_non_ascii?((0,o.wg)(),(0,o.j4)(a,{key:0,icon:"code",title:e.$t("unicode_domain_indicator.tooltip")},null,8,["title"])):(0,o.kq)("",!0)}]])},48173:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>c});var o=n(66252),r=n(3577),i=n(32140),s=n(9382),a=n(84131);s.vI.add(a.VE0);const u={props:["user","betterShadow","compact","bot"],data:function(){return{showPlaceholder:!1,defaultAvatar:"".concat(this.$store.state.instance.server+this.$store.state.instance.defaultAvatar)}},components:{StillImage:i.Z},methods:{imgSrc:function(e){return!e||this.showPlaceholder?this.defaultAvatar:e},imageLoadError:function(){this.showPlaceholder=!0}}},c=(0,n(83744).Z)(u,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("StillImage"),c=(0,o.up)("FAIcon");return(0,o.wg)(),(0,o.iD)("span",{class:(0,r.C_)(["Avatar",{"-compact":e.compact}])},[e.user?((0,o.wg)(),(0,o.j4)(u,{key:0,class:(0,r.C_)(["avatar",{"-compact":e.compact,"-better-shadow":e.betterShadow}]),alt:e.user.screen_name_ui,title:e.user.screen_name_ui,src:e.imgSrc(e.user.profile_image_url_original),"image-load-error":e.imageLoadError},null,8,["alt","title","src","image-load-error","class"])):((0,o.wg)(),(0,o.iD)("div",{key:1,class:(0,r.C_)(["avatar -placeholder",{"-compact":e.compact}])},null,2)),e.bot?((0,o.wg)(),(0,o.j4)(c,{key:2,icon:"robot",class:"bot-indicator"})):(0,o.kq)("",!0)],2)}]])},20392:(e,t,n)=>{"use strict";n.d(t,{Z:()=>$e});var o=n(66252),r=n(3577),i=n(49963),s={class:"user-info"},a={class:"container"},u={class:"user-info-avatar -link -overlay"},c={class:"user-summary"},l={class:"top-line"},d=["href"],p={class:"bottom-line"},m={key:0,class:"alert user-role"},h={key:1,class:"alert user-role"},f={key:2,class:"alert user-role"},g={key:1},v={key:2,class:"dailyAvg"},w={class:"user-meta"},b={key:0,class:"following"},y={key:1,class:"highlighter"},D=["id"],_=["id"],k={value:"disabled"},C={value:"solid"},S={value:"striped"},j={value:"side"},F={key:0,class:"user-interactions"},A={class:"btn-group"},O=["disabled"],E=["disabled"],z=["disabled"],P={key:1,class:"user-interactions"},I={key:0,class:"panel-body"},x={key:0,class:"user-counts"},T=(0,o._)("br",null,null,-1),$=["textContent"],B={class:"mute-expiry"},U=["value"],M=n(4942),L=n(27483),R=n(48173),q=n(72895),N=n(99507),Z=n(34837),W={class:"dropdown-menu"},H={key:0},V={key:0,role:"separator",class:"dropdown-divider"},K={key:3,role:"separator",class:"dropdown-divider"},G={key:4},Y=n(9382),J=n(84131),Q=n(71113),X=n(84535);Y.vI.add(J.ptq);const ee={props:["user"],data:function(){return{tags:{FORCE_NSFW:"mrf_tag:media-force-nsfw",STRIP_MEDIA:"mrf_tag:media-strip",FORCE_UNLISTED:"mrf_tag:force-unlisted",DISABLE_REMOTE_SUBSCRIPTION:"mrf_tag:disable-remote-subscription",DISABLE_ANY_SUBSCRIPTION:"mrf_tag:disable-any-subscription",SANDBOX:"mrf_tag:sandbox",QUARANTINE:"mrf_tag:quarantine"},showDeleteUserDialog:!1,toggled:!1}},components:{DialogModal:Q.Z,Popover:X.default},computed:{tagsSet:function(){return new Set(this.user.tags)},canGrantRole:function(){return this.user.is_local&&!this.user.deactivated&&"admin"===this.$store.state.users.currentUser.role},canChangeActivationState:function(){return this.privileged("users_manage_activation_state")},canDeleteAccount:function(){return this.privileged("users_delete")},canUseTagPolicy:function(){return this.$store.state.instance.tagPolicyAvailable&&this.privileged("users_manage_tags")}},methods:{hasTag:function(e){return this.tagsSet.has(e)},privileged:function(e){return this.$store.state.users.currentUser.privileges.includes(e)},toggleTag:function(e){var t=this,n=this.$store;this.tagsSet.has(e)?n.state.api.backendInteractor.untagUser({user:this.user,tag:e}).then((function(o){o.ok&&n.commit("untagUser",{user:t.user,tag:e})})):n.state.api.backendInteractor.tagUser({user:this.user,tag:e}).then((function(o){o.ok&&n.commit("tagUser",{user:t.user,tag:e})}))},toggleRight:function(e){var t=this,n=this.$store;this.user.rights[e]?n.state.api.backendInteractor.deleteRight({user:this.user,right:e}).then((function(o){o.ok&&n.commit("updateRight",{user:t.user,right:e,value:!1})})):n.state.api.backendInteractor.addRight({user:this.user,right:e}).then((function(o){o.ok&&n.commit("updateRight",{user:t.user,right:e,value:!0})}))},toggleActivationStatus:function(){this.$store.dispatch("toggleActivationStatus",{user:this.user})},deleteUserDialog:function(e){this.showDeleteUserDialog=e},deleteUser:function(){var e=this,t=this.$store,n=this.user,o=n.id,r=n.name;t.state.api.backendInteractor.deleteUser({user:n}).then((function(t){e.$store.dispatch("markStatusesAsDeleted",(function(e){return n.id===e.user.id}));var i="external-user-profile"===e.$route.name||"user-profile"===e.$route.name,s=e.$route.params.name===r||e.$route.params.id===o;i&&s&&window.history.back()}))},setToggled:function(e){this.toggled=e}}};var te=n(83744);const ne=(0,te.Z)(ee,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("FAIcon"),c=(0,o.up)("Popover"),l=(0,o.up)("DialogModal");return(0,o.wg)(),(0,o.iD)("div",null,[(0,o.Wm)(c,{trigger:"click",class:"moderation-tools-popover",placement:"bottom",offset:{y:5},onShow:t[11]||(t[11]=function(t){return e.setToggled(!0)}),onClose:t[12]||(t[12]=function(t){return e.setToggled(!1)})},{content:(0,o.w5)((function(){return[(0,o._)("div",W,[e.canGrantRole?((0,o.wg)(),(0,o.iD)("span",H,[(0,o._)("button",{class:"button-default dropdown-item",onClick:t[0]||(t[0]=function(t){return e.toggleRight("admin")})},(0,r.zw)(e.$t(e.user.rights.admin?"user_card.admin_menu.revoke_admin":"user_card.admin_menu.grant_admin")),1),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[1]||(t[1]=function(t){return e.toggleRight("moderator")})},(0,r.zw)(e.$t(e.user.rights.moderator?"user_card.admin_menu.revoke_moderator":"user_card.admin_menu.grant_moderator")),1),e.canChangeActivationState||e.canDeleteAccount?((0,o.wg)(),(0,o.iD)("div",V)):(0,o.kq)("",!0)])):(0,o.kq)("",!0),e.canChangeActivationState?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-default dropdown-item",onClick:t[2]||(t[2]=function(t){return e.toggleActivationStatus()})},(0,r.zw)(e.$t(e.user.deactivated?"user_card.admin_menu.activate_account":"user_card.admin_menu.deactivate_account")),1)):(0,o.kq)("",!0),e.canDeleteAccount?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-default dropdown-item",onClick:t[3]||(t[3]=function(t){return e.deleteUserDialog(!0)})},(0,r.zw)(e.$t("user_card.admin_menu.delete_account")),1)):(0,o.kq)("",!0),e.canUseTagPolicy?((0,o.wg)(),(0,o.iD)("div",K)):(0,o.kq)("",!0),e.canUseTagPolicy?((0,o.wg)(),(0,o.iD)("span",G,[(0,o._)("button",{class:"button-default dropdown-item",onClick:t[4]||(t[4]=function(t){return e.toggleTag(e.tags.FORCE_NSFW)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_NSFW)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.force_nsfw")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[5]||(t[5]=function(t){return e.toggleTag(e.tags.STRIP_MEDIA)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.STRIP_MEDIA)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.strip_media")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[6]||(t[6]=function(t){return e.toggleTag(e.tags.FORCE_UNLISTED)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.FORCE_UNLISTED)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.force_unlisted")),1)]),(0,o._)("button",{class:"button-default dropdown-item",onClick:t[7]||(t[7]=function(t){return e.toggleTag(e.tags.SANDBOX)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.SANDBOX)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.sandbox")),1)]),e.user.is_local?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-default dropdown-item",onClick:t[8]||(t[8]=function(t){return e.toggleTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_REMOTE_SUBSCRIPTION)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.disable_remote_subscription")),1)])):(0,o.kq)("",!0),e.user.is_local?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"button-default dropdown-item",onClick:t[9]||(t[9]=function(t){return e.toggleTag(e.tags.DISABLE_ANY_SUBSCRIPTION)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.DISABLE_ANY_SUBSCRIPTION)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.disable_any_subscription")),1)])):(0,o.kq)("",!0),e.user.is_local?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"button-default dropdown-item",onClick:t[10]||(t[10]=function(t){return e.toggleTag(e.tags.QUARANTINE)})},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":e.hasTag(e.tags.QUARANTINE)}])},null,2),(0,o.Uk)(" "+(0,r.zw)(e.$t("user_card.admin_menu.quarantine")),1)])):(0,o.kq)("",!0)])):(0,o.kq)("",!0)])]})),trigger:(0,o.w5)((function(){return[(0,o._)("button",{class:(0,r.C_)(["btn button-default btn-block moderation-tools-button",{toggled:e.toggled}])},[(0,o.Uk)((0,r.zw)(e.$t("user_card.admin_menu.moderation"))+" ",1),(0,o.Wm)(u,{icon:"chevron-down"})],2)]})),_:1}),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showDeleteUserDialog?((0,o.wg)(),(0,o.j4)(l,{key:0,"on-cancel":e.deleteUserDialog.bind(this,!1)},{header:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.$t("user_card.admin_menu.delete_user")),1)]})),footer:(0,o.w5)((function(){return[(0,o._)("button",{class:"btn button-default",onClick:t[13]||(t[13]=function(t){return e.deleteUserDialog(!1)})},(0,r.zw)(e.$t("general.cancel")),1),(0,o._)("button",{class:"btn button-default danger",onClick:t[14]||(t[14]=function(t){return e.deleteUser()})},(0,r.zw)(e.$t("user_card.admin_menu.delete_user")),1)]})),default:(0,o.w5)((function(){return[(0,o._)("p",null,(0,r.zw)(e.$t("user_card.admin_menu.delete_user_confirmation")),1)]})),_:1},8,["on-cancel"])):(0,o.kq)("",!0)]))])}]]);var oe={class:"AccountActions"},re={class:"dropdown-menu"},ie=(0,o._)("div",{role:"separator",class:"dropdown-divider"},null,-1),se={class:"button-unstyled ellipsis-button"},ae=["textContent"],ue=["textContent"],ce=n(989),le={class:"UserListMenu"},de={class:"dropdown-menu"},pe=["onClick"],me={class:"btn button-default dropdown-item -has-submenu"};function he(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function fe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?he(Object(n),!0).forEach((function(t){(0,M.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):he(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Y.vI.add(J._tD);const ge={props:["user"],data:function(){return{}},components:{DialogModal:Q.Z,Popover:X.default},created:function(){this.$store.dispatch("fetchUserInLists",this.user.id)},computed:fe(fe({},(0,ce.rn)({allLists:function(e){return e.lists.allLists}})),{},{inListsSet:function(){return new Set(this.user.inLists.map((function(e){return e.id})))},lists:function(){var e=this;return this.user.inLists?this.allLists.map((function(t){return fe(fe({},t),{},{inList:e.inListsSet.has(t.id)})})):[]}}),methods:{toggleList:function(e){var t=this;this.inListsSet.has(e)?this.$store.dispatch("removeListAccount",{accountId:this.user.id,listId:e}).then((function(e){e.ok&&t.$store.dispatch("fetchUserInLists",t.user.id)})):this.$store.dispatch("addListAccount",{accountId:this.user.id,listId:e}).then((function(e){e.ok&&t.$store.dispatch("fetchUserInLists",t.user.id)}))},toggleRight:function(e){var t=this,n=this.$store;this.user.rights[e]?n.state.api.backendInteractor.deleteRight({user:this.user,right:e}).then((function(o){o.ok&&n.commit("updateRight",{user:t.user,right:e,value:!1})})):n.state.api.backendInteractor.addRight({user:this.user,right:e}).then((function(o){o.ok&&n.commit("updateRight",{user:t.user,right:e,value:!0})}))},toggleActivationStatus:function(){this.$store.dispatch("toggleActivationStatus",{user:this.user})},deleteUserDialog:function(e){this.showDeleteUserDialog=e},deleteUser:function(){var e=this,t=this.$store,n=this.user,o=n.id,r=n.name;t.state.api.backendInteractor.deleteUser({user:n}).then((function(t){e.$store.dispatch("markStatusesAsDeleted",(function(e){return n.id===e.user.id}));var i="external-user-profile"===e.$route.name||"user-profile"===e.$route.name,s=e.$route.params.name===r||e.$route.params.id===o;i&&s&&window.history.back()}))},setToggled:function(e){this.toggled=e}}},ve=(0,te.Z)(ge,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("FAIcon"),c=(0,o.up)("Popover");return(0,o.wg)(),(0,o.iD)("div",le,[(0,o.Wm)(c,{trigger:"hover",placement:"left","remove-padding":""},{content:(0,o.w5)((function(){return[(0,o._)("div",de,[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.lists,(function(t){return(0,o.wg)(),(0,o.iD)("button",{key:t.id,class:"button-default dropdown-item",onClick:function(n){return e.toggleList(t.id)}},[(0,o._)("span",{class:(0,r.C_)(["menu-checkbox",{"menu-checkbox-checked":t.inList}])},null,2),(0,o.Uk)(" "+(0,r.zw)(t.title),1)],8,pe)})),128))])]})),trigger:(0,o.w5)((function(){return[(0,o._)("button",me,[(0,o.Uk)((0,r.zw)(e.$t("lists.manage_lists"))+" ",1),(0,o.Wm)(u,{class:"chevron-icon",size:"lg",icon:"chevron-right"})])]})),_:1})])}]]);var we=n(1447);function be(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}Y.vI.add(J.iV1);const ye={props:["user","relationship"],data:function(){return{showingConfirmBlock:!1,showingConfirmRemoveFollower:!1}},components:{ProgressButton:N.Z,Popover:X.default,UserListMenu:ve,ConfirmModal:we.Z},methods:{showConfirmBlock:function(){this.showingConfirmBlock=!0},hideConfirmBlock:function(){this.showingConfirmBlock=!1},showConfirmRemoveUserFromFollowers:function(){this.showingConfirmRemoveFollower=!0},hideConfirmRemoveUserFromFollowers:function(){this.showingConfirmRemoveFollower=!1},showRepeats:function(){this.$store.dispatch("showReblogs",this.user.id)},hideRepeats:function(){this.$store.dispatch("hideReblogs",this.user.id)},blockUser:function(){this.shouldConfirmBlock?this.showConfirmBlock():this.doBlockUser()},doBlockUser:function(){this.$store.dispatch("blockUser",this.user.id),this.hideConfirmBlock()},unblockUser:function(){this.$store.dispatch("unblockUser",this.user.id)},removeUserFromFollowers:function(){this.shouldConfirmRemoveUserFromFollowers?this.showConfirmRemoveUserFromFollowers():this.doRemoveUserFromFollowers()},doRemoveUserFromFollowers:function(){this.$store.dispatch("removeUserFromFollowers",this.user.id),this.hideConfirmRemoveUserFromFollowers()},reportUser:function(){this.$store.dispatch("openUserReportingModal",{userId:this.user.id})},openChat:function(){this.$router.push({name:"chat",params:{username:this.$store.state.users.currentUser.screen_name,recipient_id:this.user.id}})}},computed:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?be(Object(n),!0).forEach((function(t){(0,M.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):be(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({shouldConfirmBlock:function(){return this.$store.getters.mergedConfig.modalOnBlock},shouldConfirmRemoveUserFromFollowers:function(){return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers}},(0,ce.rn)({pleromaChatMessagesAvailable:function(e){return e.instance.pleromaChatMessagesAvailable}}))},De=(0,te.Z)(ye,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("UserListMenu"),c=(0,o.up)("FAIcon"),l=(0,o.up)("Popover"),d=(0,o.up)("i18n-t"),p=(0,o.up)("confirm-modal");return(0,o.wg)(),(0,o.iD)("div",oe,[(0,o.Wm)(l,{trigger:"click",placement:"bottom","bound-to":{x:"container"},"remove-padding":""},{content:(0,o.w5)((function(){return[(0,o._)("div",re,[e.relationship.following?((0,o.wg)(),(0,o.iD)(o.HY,{key:0},[e.relationship.showing_reblogs?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"btn button-default dropdown-item",onClick:t[0]||(t[0]=function(){return e.hideRepeats&&e.hideRepeats.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.hide_repeats")),1)):(0,o.kq)("",!0),e.relationship.showing_reblogs?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("button",{key:1,class:"btn button-default dropdown-item",onClick:t[1]||(t[1]=function(){return e.showRepeats&&e.showRepeats.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.show_repeats")),1)),ie],64)):(0,o.kq)("",!0),(0,o.Wm)(u,{user:e.user},null,8,["user"]),e.relationship.followed_by?((0,o.wg)(),(0,o.iD)("button",{key:1,class:"btn button-default btn-block dropdown-item",onClick:t[2]||(t[2]=function(){return e.removeUserFromFollowers&&e.removeUserFromFollowers.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.remove_follower")),1)):(0,o.kq)("",!0),e.relationship.blocking?((0,o.wg)(),(0,o.iD)("button",{key:2,class:"btn button-default btn-block dropdown-item",onClick:t[3]||(t[3]=function(){return e.unblockUser&&e.unblockUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.unblock")),1)):((0,o.wg)(),(0,o.iD)("button",{key:3,class:"btn button-default btn-block dropdown-item",onClick:t[4]||(t[4]=function(){return e.blockUser&&e.blockUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.block")),1)),(0,o._)("button",{class:"btn button-default btn-block dropdown-item",onClick:t[5]||(t[5]=function(){return e.reportUser&&e.reportUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.report")),1),e.pleromaChatMessagesAvailable?((0,o.wg)(),(0,o.iD)("button",{key:4,class:"btn button-default btn-block dropdown-item",onClick:t[6]||(t[6]=function(){return e.openChat&&e.openChat.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.message")),1)):(0,o.kq)("",!0)])]})),trigger:(0,o.w5)((function(){return[(0,o._)("button",se,[(0,o.Wm)(c,{class:"icon",icon:"ellipsis-v"})])]})),_:1}),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingConfirmBlock?((0,o.wg)(),(0,o.j4)(p,{key:0,title:e.$t("user_card.block_confirm_title"),"confirm-text":e.$t("user_card.block_confirm_accept_button"),"cancel-text":e.$t("user_card.block_confirm_cancel_button"),onAccepted:e.doBlockUser,onCancelled:e.hideConfirmBlock},{default:(0,o.w5)((function(){return[(0,o.Wm)(d,{keypath:"user_card.block_confirm",tag:"span"},{user:(0,o.w5)((function(){return[(0,o._)("span",{textContent:(0,r.zw)(e.user.screen_name_ui)},null,8,ae)]})),_:1})]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)])),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingConfirmRemoveFollower?((0,o.wg)(),(0,o.j4)(p,{key:0,title:e.$t("user_card.remove_follower_confirm_title"),"confirm-text":e.$t("user_card.remove_follower_confirm_accept_button"),"cancel-text":e.$t("user_card.remove_follower_confirm_cancel_button"),onAccepted:e.doRemoveUserFromFollowers,onCancelled:e.hideConfirmRemoveUserFromFollowers},{default:(0,o.w5)((function(){return[(0,o.Wm)(d,{keypath:"user_card.remove_follower_confirm",tag:"span"},{user:(0,o.w5)((function(){return[(0,o._)("span",{textContent:(0,r.zw)(e.user.screen_name_ui)},null,8,ue)]})),_:1})]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)]))])}]]);var _e={class:"user-note"},ke={class:"heading"},Ce={class:"buttons"},Se=["disabled"],je=["disabled"];const Fe={props:{user:Object,relationship:Object,editable:Boolean},data:function(){return{localNote:"",editing:!1,frozen:!1}},computed:{shouldShow:function(){return this.relationship.note||this.editing}},methods:{startEditing:function(){this.localNote=this.relationship.note,this.editing=!0},cancelEditing:function(){this.editing=!1},finalizeEditing:function(){var e=this;this.frozen=!0,this.$store.dispatch("editUserNote",{id:this.user.id,comment:this.localNote}).then((function(){e.frozen=!1,e.editing=!1})).catch((function(){e.frozen=!1}))}}},Ae=(0,te.Z)(Fe,[["render",function(e,t,n,s,a,u){return(0,o.wg)(),(0,o.iD)("div",_e,[(0,o._)("div",ke,[(0,o._)("span",null,(0,r.zw)(e.$t("user_card.note")),1),(0,o._)("div",Ce,[(0,o.wy)((0,o._)("button",{class:"button-default btn",onClick:t[0]||(t[0]=function(){return e.startEditing&&e.startEditing.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.edit_note")),513),[[i.F8,!e.editing&&e.editable]]),(0,o.wy)((0,o._)("button",{class:"button-default btn",disabled:e.frozen,onClick:t[1]||(t[1]=function(){return e.finalizeEditing&&e.finalizeEditing.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.edit_note_apply")),9,Se),[[i.F8,e.editing]]),(0,o.wy)((0,o._)("button",{class:"button-default btn",disabled:e.frozen,onClick:t[2]||(t[2]=function(){return e.cancelEditing&&e.cancelEditing.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.edit_note_cancel")),9,je),[[i.F8,e.editing]])])]),(0,o.wy)((0,o._)("textarea",{"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.localNote=t}),class:"note-text"},null,512),[[i.F8,e.editing],[i.nr,e.localNote]]),(0,o.wy)((0,o._)("span",{class:(0,r.C_)(["note-text",{"-blank":!e.relationship.note}])},(0,r.zw)(e.relationship.note||e.$t("user_card.note_blank")),3),[[i.F8,!e.editing]])])}]]);var Oe=n(76990),Ee=n(12061),ze=n(92820),Pe=n(4493);function Ie(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function xe(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ie(Object(n),!0).forEach((function(t){(0,M.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ie(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}Y.vI.add(J.Fwd,J.qmU,J.N7g,J.Xjp,J.Xcf,J.NBC,J.TTL);const Te={props:["userId","switcher","selected","hideBio","rounded","bordered","avatarAction","onClose","hasNoteEditor"],data:function(){return{followRequestInProgress:!1,betterShadow:this.$store.state.interface.browserSupport.cssFilter,showingConfirmMute:!1,muteExpiryAmount:0,muteExpiryUnit:"minutes"}},created:function(){this.$store.dispatch("fetchUserRelationship",this.user.id)},computed:xe({user:function(){return this.$store.getters.findUser(this.userId)},relationship:function(){return this.$store.getters.relationship(this.userId)},classes:function(){return[{"-rounded-t":"top"===this.rounded,"-rounded":!0===this.rounded,"-bordered":!0===this.bordered,"-popover":!!this.onClose}]},style:function(){return{backgroundImage:["linear-gradient(to bottom, var(--profileTint), var(--profileTint))","url(".concat(this.user.cover_photo,")")].join(", ")}},isOtherUser:function(){return this.user.id!==this.$store.state.users.currentUser.id},subscribeUrl:function(){var e=new URL(this.user.statusnet_profile_url);return"".concat(e.protocol,"//").concat(e.host,"/main/ostatus")},loggedIn:function(){return this.$store.state.users.currentUser},dailyAvg:function(){var e=Math.ceil((new Date-new Date(this.user.created_at))/864e5);return Math.round(this.user.statuses_count/e)},userHighlightType:xe({get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.type||"disabled"},set:function(e){var t=this.$store.getters.mergedConfig.highlight[this.user.screen_name];"disabled"!==e?this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:t&&t.color||"#FFFFFF",type:e}):this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:void 0})}},(0,ce.Se)(["mergedConfig"])),userHighlightColor:{get:function(){var e=this.$store.getters.mergedConfig.highlight[this.user.screen_name];return e&&e.color},set:function(e){this.$store.dispatch("setHighlight",{user:this.user.screen_name,color:e})}},visibleRole:function(){var e=this.user.rights;if(e){var t=e.admin||e.moderator,n=e.admin?"admin":"moderator";return t&&n}},hideFollowsCount:function(){return this.isOtherUser&&this.user.hide_follows_count},hideFollowersCount:function(){return this.isOtherUser&&this.user.hide_followers_count},showModerationMenu:function(){var e=this.loggedIn.privileges;return"admin"===this.loggedIn.role||e.includes("users_manage_activation_state")||e.includes("users_delete")||e.includes("users_manage_tags")},hasNote:function(){return this.relationship.note},supportsNote:function(){return"note"in this.relationship},shouldConfirmMute:function(){return this.mergedConfig.modalOnMute},muteExpiryUnits:function(){return["minutes","hours","days"]}},(0,ce.Se)(["mergedConfig"])),components:{UserAvatar:R.default,RemoteFollow:q.Z,ModerationTools:ne,AccountActions:De,ProgressButton:N.Z,FollowButton:Z.Z,Select:Oe.Z,RichContent:ze.Z,UserLink:Ee.Z,UserNote:Ae,ConfirmModal:we.Z},methods:{showConfirmMute:function(){this.showingConfirmMute=!0},hideConfirmMute:function(){this.showingConfirmMute=!1},muteUser:function(){this.shouldConfirmMute?this.showConfirmMute():this.doMuteUser()},doMuteUser:function(){this.$store.dispatch("muteUser",{id:this.user.id,expiresIn:this.shouldConfirmMute?(0,L.cC)(this.muteExpiryUnit,this.muteExpiryAmount):0}),this.hideConfirmMute()},unmuteUser:function(){this.$store.dispatch("unmuteUser",this.user.id)},subscribeUser:function(){return this.$store.dispatch("subscribeUser",this.user.id)},unsubscribeUser:function(){return this.$store.dispatch("unsubscribeUser",this.user.id)},setProfileView:function(e){this.switcher&&this.$store.commit("setProfileView",{v:e})},linkClicked:function(e){var t=e.target;"SPAN"===t.tagName&&(t=t.parentNode),"A"===t.tagName&&window.open(t.href,"_blank")},userProfileLink:function(e){return(0,Pe.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)},openProfileTab:function(){this.$store.dispatch("openSettingsModalTab","profile")},zoomAvatar:function(){var e={url:this.user.profile_image_url_original,mimetype:"image"};this.$store.dispatch("setMedia",[e]),this.$store.dispatch("setCurrentMedia",e)},mentionUser:function(){this.$store.dispatch("openPostStatusModal",{replyTo:!0,repliedUser:this.user})},onAvatarClickHandler:function(e){this.onAvatarClick&&(e.preventDefault(),this.onAvatarClick())}}},$e=(0,te.Z)(Te,[["render",function(e,t,n,M,L,R){var q=(0,o.up)("UserAvatar"),N=(0,o.up)("FAIcon"),Z=(0,o.up)("router-link"),W=(0,o.up)("RichContent"),H=(0,o.up)("AccountActions"),V=(0,o.up)("user-link"),K=(0,o.up)("Select"),G=(0,o.up)("FollowButton"),Y=(0,o.up)("ProgressButton"),J=(0,o.up)("FALayers"),Q=(0,o.up)("ModerationTools"),X=(0,o.up)("RemoteFollow"),ee=(0,o.up)("UserNote"),te=(0,o.up)("i18n-t"),ne=(0,o.up)("confirm-modal");return(0,o.wg)(),(0,o.iD)("div",{class:(0,r.C_)(["user-card",e.classes])},[(0,o._)("div",{class:(0,r.C_)([{"hide-bio":e.hideBio},"background-image"]),style:(0,r.j5)(e.style)},null,6),(0,o._)("div",{class:(0,r.C_)(e.onClose?"":e.panel-e.heading-e.flexible-e.height)},[(0,o._)("div",s,[(0,o._)("div",a,["zoom"===e.avatarAction?((0,o.wg)(),(0,o.iD)("a",{key:0,class:"user-info-avatar -link",onClick:t[0]||(t[0]=function(){return e.zoomAvatar&&e.zoomAvatar.apply(e,arguments)})},[(0,o.Wm)(q,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"]),(0,o._)("div",u,[(0,o.Wm)(N,{class:"fa-scale-110 fa-old-padding",icon:"search-plus"})])])):"function"==typeof e.avatarAction?((0,o.wg)(),(0,o.j4)(q,{key:1,class:"user-info-avatar","better-shadow":e.betterShadow,user:e.user,onClick:e.avatarAction},null,8,["better-shadow","user","onClick"])):((0,o.wg)(),(0,o.j4)(Z,{key:2,to:e.userProfileLink(e.user)},{default:(0,o.w5)((function(){return[(0,o.Wm)(q,{"better-shadow":e.betterShadow,user:e.user},null,8,["better-shadow","user"])]})),_:1},8,["to"])),(0,o._)("div",c,[(0,o._)("div",l,[(0,o.Wm)(Z,{to:e.userProfileLink(e.user),class:"user-name"},{default:(0,o.w5)((function(){return[(0,o.Wm)(W,{title:e.user.name,html:e.user.name,emoji:e.user.emoji},null,8,["title","html","emoji"])]})),_:1},8,["to"]),!e.isOtherUser&&e.user.is_local?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"button-unstyled edit-profile-button",onClick:t[1]||(t[1]=(0,i.iM)((function(){return e.openProfileTab&&e.openProfileTab.apply(e,arguments)}),["stop"]))},[(0,o.Wm)(N,{"fixed-width":"",class:"icon",icon:"edit",title:e.$t("user_card.edit_profile")},null,8,["title"])])):(0,o.kq)("",!0),e.isOtherUser&&!e.user.is_local?((0,o.wg)(),(0,o.iD)("a",{key:1,href:e.user.statusnet_profile_url,target:"_blank",class:"button-unstyled external-link-button"},[(0,o.Wm)(N,{class:"icon",icon:"external-link-alt"})],8,d)):(0,o.kq)("",!0),e.isOtherUser&&e.loggedIn?((0,o.wg)(),(0,o.j4)(H,{key:2,user:e.user,relationship:e.relationship},null,8,["user","relationship"])):(0,o.kq)("",!0),e.onClose?((0,o.wg)(),(0,o.j4)(Z,{key:3,to:e.userProfileLink(e.user),class:"button-unstyled external-link-button",onClick:e.onClose},{default:(0,o.w5)((function(){return[(0,o.Wm)(N,{class:"icon",icon:"expand-alt"})]})),_:1},8,["to","onClick"])):(0,o.kq)("",!0),e.onClose?((0,o.wg)(),(0,o.iD)("button",{key:4,class:"button-unstyled external-link-button",onClick:t[2]||(t[2]=function(){return e.onClose&&e.onClose.apply(e,arguments)})},[(0,o.Wm)(N,{class:"icon",icon:"times"})])):(0,o.kq)("",!0)]),(0,o._)("div",p,[(0,o.Wm)(V,{class:"user-screen-name",user:e.user},null,8,["user"]),e.hideBio?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)(o.HY,{key:0},[e.user.deactivated?((0,o.wg)(),(0,o.iD)("span",m,(0,r.zw)(e.$t("user_card.deactivated")),1)):(0,o.kq)("",!0),e.visibleRole?((0,o.wg)(),(0,o.iD)("span",h,(0,r.zw)(e.$t("general.role.".concat(e.visibleRole))),1)):(0,o.kq)("",!0),e.user.bot?((0,o.wg)(),(0,o.iD)("span",f,(0,r.zw)(e.$t("user_card.bot")),1)):(0,o.kq)("",!0)],64)),e.user.locked?((0,o.wg)(),(0,o.iD)("span",g,[(0,o.Wm)(N,{class:"lock-icon",icon:"lock",size:"sm"})])):(0,o.kq)("",!0),e.mergedConfig.hideUserStats||e.hideBio?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("span",v,(0,r.zw)(e.dailyAvg)+" "+(0,r.zw)(e.$t("user_card.per_day")),1))])])]),(0,o._)("div",w,[e.relationship.followed_by&&e.loggedIn&&e.isOtherUser?((0,o.wg)(),(0,o.iD)("div",b,(0,r.zw)(e.$t("user_card.follows_you")),1)):(0,o.kq)("",!0),!e.isOtherUser||!e.loggedIn&&e.switcher?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",y,["disabled"!==e.userHighlightType?(0,o.wy)(((0,o.wg)(),(0,o.iD)("input",{key:0,id:"userHighlightColorTx"+e.user.id,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.userHighlightColor=t}),class:"userHighlightText",type:"text"},null,8,D)),[[i.nr,e.userHighlightColor]]):(0,o.kq)("",!0),"disabled"!==e.userHighlightType?(0,o.wy)(((0,o.wg)(),(0,o.iD)("input",{key:1,id:"userHighlightColor"+e.user.id,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.userHighlightColor=t}),class:"userHighlightCl",type:"color"},null,8,_)),[[i.nr,e.userHighlightColor]]):(0,o.kq)("",!0),(0,o.Uk)(" "+(0,r.zw)(" ")+" "),(0,o.Wm)(K,{id:"userHighlightSel"+e.user.id,modelValue:e.userHighlightType,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.userHighlightType=t}),class:"userHighlightSel"},{default:(0,o.w5)((function(){return[(0,o._)("option",k,(0,r.zw)(e.$t("user_card.highlight.disabled")),1),(0,o._)("option",C,(0,r.zw)(e.$t("user_card.highlight.solid")),1),(0,o._)("option",S,(0,r.zw)(e.$t("user_card.highlight.striped")),1),(0,o._)("option",j,(0,r.zw)(e.$t("user_card.highlight.side")),1)]})),_:1},8,["id","modelValue"])]))]),e.loggedIn&&e.isOtherUser?((0,o.wg)(),(0,o.iD)("div",F,[(0,o._)("div",A,[(0,o.Wm)(G,{relationship:e.relationship,user:e.user},null,8,["relationship","user"]),e.relationship.following?((0,o.wg)(),(0,o.iD)(o.HY,{key:0},[e.relationship.subscribing?((0,o.wg)(),(0,o.j4)(Y,{key:1,class:"btn button-default toggled",click:e.unsubscribeUser,title:e.$t("user_card.unsubscribe")},{default:(0,o.w5)((function(){return[(0,o.Wm)(J,null,{default:(0,o.w5)((function(){return[(0,o.Wm)(N,{icon:"rss",transform:"left-5 shrink-6 up-3 rotate-20",flip:"horizontal"}),(0,o.Wm)(N,{icon:"rss",transform:"right-5 shrink-6 up-3 rotate-20"}),(0,o.Wm)(N,{icon:"bell"})]})),_:1})]})),_:1},8,["click","title"])):((0,o.wg)(),(0,o.j4)(Y,{key:0,class:"btn button-default",click:e.subscribeUser,title:e.$t("user_card.subscribe")},{default:(0,o.w5)((function(){return[(0,o.Wm)(N,{icon:"bell"})]})),_:1},8,["click","title"]))],64)):(0,o.kq)("",!0)]),(0,o._)("div",null,[e.relationship.muting?((0,o.wg)(),(0,o.iD)("button",{key:0,class:"btn button-default btn-block toggled",disabled:e.user.deactivated,onClick:t[6]||(t[6]=function(){return e.unmuteUser&&e.unmuteUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.muted")),9,O)):((0,o.wg)(),(0,o.iD)("button",{key:1,class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[7]||(t[7]=function(){return e.muteUser&&e.muteUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.mute")),9,E))]),(0,o._)("div",null,[(0,o._)("button",{class:"btn button-default btn-block",disabled:e.user.deactivated,onClick:t[8]||(t[8]=function(){return e.mentionUser&&e.mentionUser.apply(e,arguments)})},(0,r.zw)(e.$t("user_card.mention")),9,z)]),e.showModerationMenu?((0,o.wg)(),(0,o.j4)(Q,{key:0,user:e.user},null,8,["user"])):(0,o.kq)("",!0)])):(0,o.kq)("",!0),!e.loggedIn&&e.user.is_local?((0,o.wg)(),(0,o.iD)("div",P,[(0,o.Wm)(X,{user:e.user},null,8,["user"])])):(0,o.kq)("",!0),e.loggedIn&&e.isOtherUser&&(e.hasNote||e.hasNoteEditor&&e.supportsNote)?((0,o.wg)(),(0,o.j4)(ee,{key:2,user:e.user,relationship:e.relationship,editable:e.hasNoteEditor},null,8,["user","relationship","editable"])):(0,o.kq)("",!0)])],2),e.hideBio?(0,o.kq)("",!0):((0,o.wg)(),(0,o.iD)("div",I,[!e.mergedConfig.hideUserStats&&e.switcher?((0,o.wg)(),(0,o.iD)("div",x,[(0,o._)("div",{class:"user-count",onClick:t[9]||(t[9]=(0,i.iM)((function(t){return e.setProfileView("statuses")}),["prevent"]))},[(0,o._)("h5",null,(0,r.zw)(e.$t("user_card.statuses")),1),(0,o._)("span",null,[(0,o.Uk)((0,r.zw)(e.user.statuses_count)+" ",1),T])]),(0,o._)("div",{class:"user-count",onClick:t[10]||(t[10]=(0,i.iM)((function(t){return e.setProfileView("friends")}),["prevent"]))},[(0,o._)("h5",null,(0,r.zw)(e.$t("user_card.followees")),1),(0,o._)("span",null,(0,r.zw)(e.hideFollowsCount?e.$t("user_card.hidden"):e.user.friends_count),1)]),(0,o._)("div",{class:"user-count",onClick:t[11]||(t[11]=(0,i.iM)((function(t){return e.setProfileView("followers")}),["prevent"]))},[(0,o._)("h5",null,(0,r.zw)(e.$t("user_card.followers")),1),(0,o._)("span",null,(0,r.zw)(e.hideFollowersCount?e.$t("user_card.hidden"):e.user.followers_count),1)])])):(0,o.kq)("",!0),e.hideBio?(0,o.kq)("",!0):((0,o.wg)(),(0,o.j4)(W,{key:1,class:"user-card-bio",html:e.user.description_html,emoji:e.user.emoji,"handle-links":!0},null,8,["html","emoji"]))])),((0,o.wg)(),(0,o.j4)(o.lR,{to:"#modal"},[e.showingConfirmMute?((0,o.wg)(),(0,o.j4)(ne,{key:0,title:e.$t("user_card.mute_confirm_title"),"confirm-text":e.$t("user_card.mute_confirm_accept_button"),"cancel-text":e.$t("user_card.mute_confirm_cancel_button"),onAccepted:e.doMuteUser,onCancelled:e.hideConfirmMute},{default:(0,o.w5)((function(){return[(0,o.Wm)(te,{keypath:"user_card.mute_confirm",tag:"div"},{user:(0,o.w5)((function(){return[(0,o._)("span",{textContent:(0,r.zw)(e.user.screen_name_ui)},null,8,$)]})),_:1}),(0,o._)("div",B,[(0,o._)("label",null,(0,r.zw)(e.$t("user_card.mute_duration_prompt")),1),(0,o.wy)((0,o._)("input",{"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.muteExpiryAmount=t}),type:"number",class:"expiry-amount hide-number-spinner",min:0},null,512),[[i.nr,e.muteExpiryAmount]]),(0,o.Wm)(K,{modelValue:e.muteExpiryUnit,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.muteExpiryUnit=t}),unstyled:"true",class:"expiry-unit"},{default:(0,o.w5)((function(){return[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(e.muteExpiryUnits,(function(t){return(0,o.wg)(),(0,o.iD)("option",{key:t,value:t},(0,r.zw)(e.$t("time.".concat(t,"_short"),[""])),9,U)})),128))]})),_:1},8,["modelValue"])])]})),_:1},8,["title","confirm-text","cancel-text","onAccepted","onCancelled"])):(0,o.kq)("",!0)]))],2)}]])},12061:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=n(66252),r=n(3577),i=n(42262),s=n(4493);const a={props:{user:Object,at:{type:Boolean,default:!0}},components:{UnicodeDomainIndicator:i.Z},methods:{userProfileLink:function(e){return(0,s.Z)(e.id,e.screen_name,this.$store.state.instance.restrictedNicknames)}}},u=(0,n(83744).Z)(a,[["render",function(e,t,n,i,s,a){var u=(0,o.up)("UnicodeDomainIndicator"),c=(0,o.up)("router-link");return(0,o.wg)(),(0,o.j4)(c,{title:e.user.screen_name_ui,to:e.userProfileLink(e.user)},{default:(0,o.w5)((function(){return[(0,o.Uk)((0,r.zw)(e.at?"@":"")+(0,r.zw)(e.user.screen_name_ui),1),(0,o.Wm)(u,{user:e.user},null,8,["user"])]})),_:1},8,["title","to"])}]])},22588:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var o=n(66252);const r={name:"UserPopover",props:["userId","overlayCenters","disabled","overlayCentersSelector"],components:{UserCard:n(20392).Z,Popover:(0,o.RC)((function(){return Promise.resolve().then(n.bind(n,84535))}))},computed:{userPopoverAvatarAction:function(){return this.$store.getters.mergedConfig.userPopoverAvatarAction},userPopoverOverlay:function(){return this.$store.getters.mergedConfig.userPopoverOverlay}}},i=(0,n(83744).Z)(r,[["render",function(e,t,n,r,i,s){var a=(0,o.up)("UserCard"),u=(0,o.up)("Popover");return(0,o.wg)(),(0,o.j4)(u,{trigger:"click","popover-class":"popover-default user-popover","overlay-centers-selector":e.overlayCentersSelector||".user-info .Avatar","overlay-centers":e.overlayCenters&&e.userPopoverOverlay,disabled:e.disabled},{trigger:(0,o.w5)((function(){return[(0,o.WI)(e.$slots,"default")]})),content:(0,o.w5)((function(t){var n=t.close;return[(0,o.Wm)(a,{class:"user-popover","user-id":e.userId,"hide-bio":!0,"avatar-action":"close"==e.userPopoverAvatarAction?n:e.userPopoverAvatarAction,"on-close":n},null,8,["user-id","avatar-action","on-close"])]})),_:3},8,["overlay-centers-selector","overlay-centers","disabled"])}]])},34133:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var o=n(66252),r=["src","loop","controls","alt","title"];const i={props:["attachment","controls"],data:function(){return{blocksSuspend:!1,hasAudio:!0}},computed:{loopVideo:function(){return this.$store.getters.mergedConfig.loopVideoSilentOnly?!this.hasAudio:this.$store.getters.mergedConfig.loopVideo}},methods:{onPlaying:function(e){this.setHasAudio(e),this.loopVideo?this.$emit("play",{looping:!0}):this.$emit("play")},onPaused:function(e){this.$emit("pause")},setHasAudio:function(e){var t=e.srcElement||e.target;this.hasAudio&&(void 0!==t.webkitAudioDecodedByteCount&&t.webkitAudioDecodedByteCount>0||void 0!==t.mozHasAudio&&t.mozHasAudio||void 0!==t.audioTracks&&t.audioTracks.length>0||(this.hasAudio=!1))}}},s=(0,n(83744).Z)(i,[["render",function(e,t,n,i,s,a){return(0,o.wg)(),(0,o.iD)("video",{class:"video",preload:"metadata",src:e.attachment.url,loop:e.loopVideo,controls:e.controls,alt:e.attachment.description,title:e.attachment.description,playsinline:"",onPlaying:t[0]||(t[0]=function(){return e.onPlaying&&e.onPlaying.apply(e,arguments)}),onPause:t[1]||(t[1]=function(){return e.onPaused&&e.onPaused.apply(e,arguments)})},null,40,r)}]])},27650:(e,t,n)=>{var o={"./ar.json":[36224,7808],"./ca.json":[49394,6234],"./cs.json":[87436,7433],"./de.json":[25195,9459],"./en.json":[88797],"./eo.json":[97898,4646],"./es.json":[98559,3968],"./et.json":[13230,4451],"./eu.json":[84826,4542],"./fa.json":[52006,2953],"./fi.json":[70823,9738],"./fr.json":[61341,3746],"./ga.json":[41647,830],"./he.json":[92215,379],"./hu.json":[95028,5494],"./id.json":[62263,2513],"./it.json":[2533,1159],"./ja_easy.json":[8439,8714],"./ja_pedantic.json":[22838,325],"./ko.json":[10707,9670],"./nan-TW.json":[42101,9862],"./nb.json":[72358,7845],"./nl.json":[49922,6256],"./oc.json":[47297,617],"./pl.json":[82098,5571],"./pt.json":[94465,4047],"./ro.json":[64367,6342],"./ru.json":[73289,5964],"./sk.json":[31478,1547],"./te.json":[32781,2044],"./uk.json":[8411,5253],"./vi.json":[6294,4975],"./zh.json":[4425,5929],"./zh_Hant.json":[37644,6544]};function r(e){if(!n.o(o,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=o[e],r=t[0];return Promise.all(t.slice(1).map(n.e)).then((()=>n(r)))}r.keys=()=>Object.keys(o),r.id=27650,e.exports=r},31934:(e,t,n)=>{"use strict";e.exports=n.p+"static/img/pleromatan_apology.f9d5180.png"},95326:(e,t,n)=>{"use strict";e.exports=n.p+"static/img/pleromatan_apology_fox.038b0bb.png"},68789:e=>{"use strict";e.exports="data:image/png;base64,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"},43011:e=>{"use strict";e.exports="data:image/png;base64,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"}},s={};function a(e){var t=s[e];if(void 0!==t)return t.exports;var n=s[e]={id:e,loaded:!1,exports:{}};return i[e].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=i,e=[],a.O=(t,n,o,r)=>{if(!n){var i=1/0;for(l=0;l<e.length;l++){for(var[n,o,r]=e[l],s=!0,u=0;u<n.length;u++)(!1&r||i>=r)&&Object.keys(a.O).every((e=>a.O[e](n[u])))?n.splice(u--,1):(s=!1,r<i&&(i=r));if(s){e.splice(l--,1);var c=o();void 0!==c&&(t=c)}}return t}r=r||0;for(var l=e.length;l>0&&e[l-1][2]>r;l--)e[l]=e[l-1];e[l]=[n,o,r]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},n=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(e,o){if(1&o&&(e=this(e)),8&o)return e;if("object"==typeof e&&e){if(4&o&&e.__esModule)return e;if(16&o&&"function"==typeof e.then)return e}var r=Object.create(null);a.r(r);var i={};t=t||[null,n({}),n([]),n(n)];for(var s=2&o&&e;"object"==typeof s&&!~t.indexOf(s);s=n(s))Object.getOwnPropertyNames(s).forEach((t=>i[t]=()=>e[t]));return i.default=()=>e,a.d(r,i),r},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,n)=>(a.f[n](e,t),t)),[])),a.u=e=>"static/js/"+({50:"emoji-annotations/en_GB-json",227:"emoji-annotations/ha-json",278:"emoji-annotations/kn-json",313:"emoji-annotations/tg-json",325:"i18n/ja_pedantic-json",346:"emoji-annotations/rw-json",379:"i18n/he-json",420:"emoji-annotations/fi-json",457:"emoji-annotations/zh-json",577:"emoji-annotations/en_001-json",617:"i18n/oc-json",625:"emoji-annotations/so-json",678:"emoji-annotations/ps-json",786:"emoji-annotations/xh-json",830:"i18n/ga-json",1012:"emoji-annotations/or-json",1044:"emoji-annotations/zh_Hant_HK-json",1056:"emoji-annotations/uz-json",1095:"emoji-annotations/pl-json",1159:"i18n/it-json",1162:"emoji-annotations/ccp-json",1236:"emoji-annotations/fil-json",1290:"emoji-annotations/ja-json",1404:"emoji-annotations/km-json",1452:"emoji-annotations/yue-json",1546:"emoji-annotations/pt_PT-json",1547:"i18n/sk-json",1553:"emoji-annotations/sl-json",1584:"emoji-annotations/to-json",1596:"emoji-annotations/da-json",1613:"emoji-annotations/mai-json",1780:"emoji-annotations/tk-json",1790:"emoji-annotations/dsb-json",1821:"emoji-annotations/fr_CA-json",1911:"emoji-annotations/mr-json",1959:"emoji-annotations/su-json",2044:"i18n/te-json",2223:"emoji-annotations/fr-json",2243:"emoji-annotations/sa-json",2342:"emoji-annotations/az-json",2350:"emoji-annotations/sk-json",2397:"emoji-annotations/kl-json",2479:"emoji-annotations/jv-json",2513:"i18n/id-json",2569:"emoji-annotations/tt-json",2599:"emoji-annotations/kok-json",2656:"emoji-annotations/ckb-json",2685:"emoji-annotations/ml-json",2699:"emoji-annotations/es_MX-json",2767:"emoji-annotations/zh_Hant-json",2861:"emoji-annotations/hr-json",2873:"emoji-annotations/kk-json",2874:"emoji-annotations/sc-json",2883:"emoji-annotations/ku-json",2953:"i18n/fa-json",2966:"emoji-annotations/ko-json",2992:"emoji-annotations/eu-json",3056:"emoji-annotations/hi_Latn-json",3241:"emoji-annotations/sv-json",3276:"emoji-annotations/et-json",3313:"emoji-annotations/es_US-json",3377:"emoji-annotations/as-json",3568:"emoji-annotations/ti-json",3687:"emoji",3746:"i18n/fr-json",3887:"emoji-annotations/sr-json",3951:"emoji-annotations/th-json",3968:"i18n/es-json",3974:"emoji-annotations/bg-json",3994:"emoji-annotations/sw_KE-json",4047:"i18n/pt-json",4209:"emoji-annotations/doi-json",4354:"emoji-annotations/si-json",4368:"emoji-annotations/sq-json",4424:"emoji-annotations/yue_Hans-json",4451:"i18n/et-json",4542:"i18n/eu-json",4571:"emoji-annotations/ga-json",4646:"i18n/eo-json",4691:"emoji-annotations/ca-json",4710:"emoji-annotations/cs-json",4718:"emoji-annotations/mn-json",4770:"emoji-annotations/lb-json",4785:"emoji-annotations/ky-json",4786:"emoji-annotations/te-json",4879:"emoji-annotations/en_CA-json",4902:"emoji-annotations/hu-json",4975:"i18n/vi-json",5041:"emoji-annotations/pt-json",5104:"emoji-annotations/pcm-json",5115:"emoji-annotations/sr_Latn_BA-json",5119:"emoji-annotations/am-json",5224:"emoji-annotations/vi-json",5253:"i18n/uk-json",5304:"emoji-annotations/ha_NE-json",5401:"emoji-annotations/mni-json",5494:"i18n/hu-json",5521:"emoji-annotations/fa-json",5548:"emoji-annotations/he-json",5571:"i18n/pl-json",5728:"emoji-annotations/en-json",5887:"emoji-annotations/rm-json",5929:"i18n/zh-json",5964:"i18n/ru-json",5968:"emoji-annotations/hi-json",6060:"emoji-annotations/sr_Cyrl_BA-json",6068:"emoji-annotations/ka-json",6116:"emoji-annotations/gd-json",6126:"emoji-annotations/gl-json",6148:"emoji-annotations/br-json",6226:"emoji-annotations/de-json",6234:"i18n/ca-json",6256:"i18n/nl-json",6272:"emoji-annotations/cy-json",6342:"i18n/ro-json",6344:"emoji-annotations/hy-json",6355:"emoji-annotations/af-json",6544:"i18n/zh_Hant-json",6701:"emoji-annotations/mi-json",6773:"emoji-annotations/nl-json",6790:"emoji-annotations/my-json",6797:"emoji-annotations/ur-json",6826:"emoji-annotations/sd-json",6831:"emoji-annotations/es-json",6869:"emoji-annotations/chr-json",6936:"emoji-annotations/ia-json",6946:"emoji-annotations/pa-json",7164:"emoji-annotations/de_CH-json",7169:"emoji-annotations/lt-json",7261:"emoji-annotations/gu-json",7300:"emoji-annotations/is-json",7303:"emoji-annotations/wo-json",7304:"emoji-annotations/be-json",7360:"emoji-annotations/ar_SA-json",7433:"i18n/cs-json",7464:"emoji-annotations/lo-json",7569:"emoji-annotations/ast-json",7585:"emoji-annotations/sw-json",7808:"i18n/ar-json",7845:"i18n/nb-json",7855:"emoji-annotations/sat-json",7879:"emoji-annotations/el-json",7897:"emoji-annotations/ta-json",8015:"emoji-annotations/hsb-json",8031:"emoji-annotations/qu-json",8134:"emoji-annotations/bs-json",8395:"emoji-annotations/ru-json",8681:"emoji-annotations/sr_Latn-json",8714:"i18n/ja_easy-json",8732:"emoji-annotations/yo-json",8873:"emoji-annotations/es_419-json",8898:"emoji-annotations/lv-json",8970:"emoji-annotations/it-json",8988:"emoji-annotations/en_IN-json",8995:"emoji-annotations/fo-json",9064:"emoji-annotations/bn-json",9319:"emoji-annotations/zu-json",9360:"emoji-annotations/en_AU-json",9377:"emoji-annotations/ne-json",9399:"emoji-annotations/mt-json",9414:"emoji-annotations/nn-json",9459:"i18n/de-json",9465:"emoji-annotations/id-json",9670:"i18n/ko-json",9738:"i18n/fi-json",9757:"emoji-annotations/ug-json",9780:"emoji-annotations/kab-json",9790:"emoji-annotations/ceb-json",9862:"i18n/nan-TW-json",9864:"emoji-annotations/ro-json",9871:"emoji-annotations/uk-json",9873:"emoji-annotations/ar-json",9895:"emoji-annotations/ig-json",9921:"emoji-annotations/mk-json",9924:"emoji-annotations/ms-json",9926:"emoji-annotations/yo_BJ-json",9978:"emoji-annotations/tr-json",9979:"emoji-annotations/no-json",9994:"emoji-annotations/pa_Arab-json"}[e]||e)+"."+{48:"b5ecdbc517423af07ca4",50:"bd687f904492facc81d1",159:"903e90c9de8ef6c67077",227:"2a08912b38925c10f970",278:"efdac8ac0cb00991ba1e",313:"9647f559a4477d7d8e96",325:"b52fa70f0bf89ae01cfb",346:"031838c5374676191131",379:"03c5d271a4034de06e6f",420:"0f254bb4b0faaba4abcc",457:"e42a28127d5c1aff6c85",577:"72d8c47269350f59aa9f",617:"4f52bf1b6e3213acc33c",625:"f75abd16637c8924c075",678:"a0d9eea5b81bcad11e64",786:"21e88c05ad3113dfc7f2",830:"3f1981817977a16f1d7e",1012:"b007c2f6f92dcc95efac",1044:"7eee03c705347a21c612",1056:"ac43f4c54d4587324a20",1095:"e9e8f1ed84dc6c169516",1159:"99a21d5c98376af17141",1162:"02836537ffe2b02291cb",1236:"4fca833f178d1b889b69",1290:"0bd51f8c40c106355b0e",1404:"9bc922b2e0faa64b4c53",1452:"15102c0ddfdf19bdfb4c",1546:"c381b13e323f91b0e6b3",1547:"d8d0eba80f94e6f55145",1553:"a40c5548da34fce6f1d0",1584:"50ac37d101caaf592c94",1596:"8d074e27df71edafc543",1613:"302386b3358f4d34f9c8",1780:"23a9a6229829921704ad",1790:"7635686ffd8d62264466",1821:"59ed6b59e2ca68707292",1911:"cb0a87d9aabf8a52161d",1959:"daff15251020cbecea7d",2044:"ce6db28261b2f824064f",2223:"da49ed0d1a6622fe1c67",2243:"21b06234a08c7469ccb4",2342:"9a32f2941d9c4d1f834c",2350:"5d96bdb4da82655d0314",2397:"87ab8661b4bdecd09faf",2479:"1c8d5ffcff22b46b6214",2513:"e5c9ee768155f88128b9",2569:"4c089389ba9983ec8ef7",2599:"116e4f72db3bfb846233",2656:"13dc83db1e15aa76051a",2685:"3f2902a84240faff1b48",2699:"ee359d4b611fdb1aeb33",2767:"9cbb765c181d443828a9",2861:"fe847ade1f18a60e513c",2873:"a20b59d47bdfe99786ad",2874:"c84c9c47d2e104c43e4c",2883:"2173ed87f8d7372ee209",2953:"a19100f6a5a9431e2adb",2966:"d175900fe48f48ce87c8",2992:"931b429f5fcc141549a5",3056:"3cb73c456f31261f1908",3241:"8b0374cbca3a77519876",3276:"c42e3f186a55ecb061cd",3313:"280bdb036dfd651d079a",3377:"34cf67edc1cecd195738",3568:"5b173bd33bb960be805b",3687:"33eab91b64f59431137d",3746:"36ef21ccb1203d3e65ae",3887:"e29a20e59a708df0c6a8",3951:"34709bae223bb9d2587c",3968:"4a302899a65e1f67d8a2",3974:"7c69c52572a7bf87e1db",3994:"f3563cbeac1c158563d5",4047:"3fc5593e030268bcd291",4209:"7841c3f3ceb4e3da0bd1",4354:"841b356da03623c10dbf",4368:"bcf154ed8a6138aa089c",4424:"cc60bb10d32fab3d8207",4451:"580b101d6bb83a8aee75",4542:"d2eab39b0427995fc314",4571:"cb3f9e613a8c445aea23",4646:"6c62eef99e850912498b",4691:"ce029e860b10b242c6a5",4710:"48d8bba230dc9fe6b3dc",4718:"764169f1168d0432640f",4770:"499c526f3a653618ea9b",4785:"310bda579c819eda9472",4786:"8a69a10f62cdf626244e",4879:"5de965778a6b8a5a4bb4",4902:"1faf52040deda872b416",4975:"703c1e731be6e857bbf3",5041:"2b2512ee44291bdb2ae7",5104:"eac3a5ad0b4b5b33289d",5115:"72933405032b81344754",5119:"94388548f7c18233fec3",5224:"f6a364b2add7f8c8bc67",5253:"003908af9b15becdd382",5304:"e4855d92aaccfdd6ba57",5401:"7db7f76ab1ce34e3683d",5494:"0487899ca7a7a8505ed8",5521:"819c7f263c8594ccf4fa",5548:"a3d7631f32182b0955a2",5571:"c963247822381b05579b",5728:"6c3947f7c49c3952084d",5887:"985d4934f386fd05a75c",5929:"a0a26f6d62ddbe0b49cc",5964:"b913eb7f7e9f0c642438",5968:"04bc5f73dc2169def97e",6060:"83c7c64b9696ae2339f2",6068:"567e7b051d90a37003f3",6116:"e3d0aea3725be774ad81",6126:"ce89036f0ae72224c994",6148:"c7175423d8965ed10bae",6226:"e1443c01a191af1665e1",6234:"1eb24bc001efa3c0627f",6256:"3fb9758b10c29434b613",6272:"e09dd13da5ad56530ead",6342:"3fd9977ed1c1413059ae",6344:"2d819f7faabfeba8457f",6355:"96c988285a6a2cce6246",6464:"eb9c90a1c948cde554e9",6544:"f7e1d0f4b873c60d6396",6701:"9efe6f146ecd8987f80a",6773:"52f4b93b8fa5e22cb585",6790:"8e7dd1485813d15bba7e",6797:"983c02109444c883a18f",6826:"8f2a6a06dc3cf185f79d",6831:"f593b0dc2367a9d7fb30",6869:"e7e542ab5a74167dec10",6936:"8e8365e2bf41779e2beb",6946:"7d60d69762a108270669",7164:"b4a5891ea2f38d616ec0",7169:"ced4d5e70edc60127df6",7261:"8a899f364cf260376905",7300:"62e220c65215b034533d",7303:"e0d689e22cda0dd77e9a",7304:"f92f80669873a4100c69",7360:"4a6f4402931a867070f0",7433:"5eedbe9f7084c349fbe8",7464:"ecb06d61465a355b8157",7569:"7e4da8cb7e539c19a9b9",7585:"d5f350641b9cbcc0e126",7586:"628f729b9c8b2e6f4e1f",7808:"4916f840147303aa65fe",7845:"a54af3b1f47d576ad4aa",7855:"71e92700b2aaca8e021c",7879:"b36610f2ea16d56c2314",7897:"675cc6c7607449d4a91b",7962:"e25d40b042f8ee7389c3",8015:"438721731b4171bc6fc3",8031:"55f4df57e71076dbad9f",8134:"48ef42da1c7976cf083c",8395:"a81d0df34460837ccacc",8681:"ff27d1f455bf2afb8d70",8714:"1d5ea7e755b066ac2cdd",8732:"ea1150d6bc360dd86f2e",8859:"c76b0a0c3a4b5acbef11",8873:"d81991295392b6ed83bb",8898:"5600c2eb6d59fa0aa2e2",8970:"9c1758f4fd3391f7f61a",8988:"002faa48c09121928fca",8995:"9b060e8009b3a8be4597",9060:"24271e167e0471a1a732",9064:"657aac057f36ad06c58d",9319:"e0cb7cd3890583fd0f6d",9360:"33aac9bbd887273a34b1",9377:"a0118dca2096a101b8e8",9399:"3ddf7dbc114adf90c500",9414:"7293cd5d7205681cf48c",9459:"bfa48615ac92f87ff37a",9465:"55f83c46d753b0b69330",9670:"9029d09084bb22d8b705",9738:"d1934c18f12d80493ab1",9757:"bf768bd32e9ff02b0a8a",9780:"1a2de4774f4ddc2b51dd",9790:"9db0336f168aa77ee395",9862:"7f2789d8a461e86d1734",9864:"cb62f86ce78c94d1e813",9871:"af110c8eef232638fc4d",9873:"5527466d349f2954d49b",9895:"f19fa5fe3582463ba73c",9921:"a254cabb8570419cc426",9924:"272ee4735aabc37015dd",9926:"650318c25fe4da92bad8",9978:"6462e8cfd5006cf5b6cf",9979:"22bdbbc77cc3c14ada58",9994:"5ae021308b1c5f6dd8a7"}[e]+".js",a.miniCssF=e=>"static/css/"+e+"."+{159:"1d523a00378ebd68c5b3",6464:"169260b661120cc50815",7586:"0d43f70bc6240422f179",7962:"76663e78ad5ea0bb0b90",8859:"d26a3b0841a7beb8fd4a"}[e]+".css",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o={},r="pleroma_fe:",a.l=(e,t,n,i)=>{if(o[e])o[e].push(t);else{var s,u;if(void 0!==n)for(var c=document.getElementsByTagName("script"),l=0;l<c.length;l++){var d=c[l];if(d.getAttribute("src")==e||d.getAttribute("data-webpack")==r+n){s=d;break}}s||(u=!0,(s=document.createElement("script")).charset="utf-8",s.timeout=120,a.nc&&s.setAttribute("nonce",a.nc),s.setAttribute("data-webpack",r+n),s.src=e),o[e]=[t];var p=(t,n)=>{s.onerror=s.onload=null,clearTimeout(m);var r=o[e];if(delete o[e],s.parentNode&&s.parentNode.removeChild(s),r&&r.forEach((e=>e(n))),t)return t(n)},m=setTimeout(p.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=p.bind(null,s.onerror),s.onload=p.bind(null,s.onload),u&&document.head.appendChild(s)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),a.p="/",(()=>{if("undefined"!=typeof document){var e={2143:0};a.f.miniCss=(t,n)=>{e[t]?n.push(e[t]):0!==e[t]&&{159:1,6464:1,7586:1,7962:1,8859:1}[t]&&n.push(e[t]=(e=>new Promise(((t,n)=>{var o=a.miniCssF(e),r=a.p+o;if(((e,t)=>{for(var n=document.getElementsByTagName("link"),o=0;o<n.length;o++){var r=(s=n[o]).getAttribute("data-href")||s.getAttribute("href");if("stylesheet"===s.rel&&(r===e||r===t))return s}var i=document.getElementsByTagName("style");for(o=0;o<i.length;o++){var s;if((r=(s=i[o]).getAttribute("data-href"))===e||r===t)return s}})(o,r))return t();((e,t,n,o,r)=>{var i=document.createElement("link");i.rel="stylesheet",i.type="text/css",i.onerror=i.onload=n=>{if(i.onerror=i.onload=null,"load"===n.type)o();else{var s=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.href||t,u=new Error("Loading CSS chunk "+e+" failed.\n("+a+")");u.code="CSS_CHUNK_LOAD_FAILED",u.type=s,u.request=a,i.parentNode&&i.parentNode.removeChild(i),r(u)}},i.href=t,document.head.appendChild(i)})(e,r,0,t,n)})))(t).then((()=>{e[t]=0}),(n=>{throw delete e[t],n})))}}})(),(()=>{var e={2143:0};a.f.j=(t,n)=>{var o=a.o(e,t)?e[t]:void 0;if(0!==o)if(o)n.push(o[2]);else{var r=new Promise(((n,r)=>o=e[t]=[n,r]));n.push(o[2]=r);var i=a.p+a.u(t),s=new Error;a.l(i,(n=>{if(a.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var r=n&&("load"===n.type?"missing":n.type),i=n&&n.target&&n.target.src;s.message="Loading chunk "+t+" failed.\n("+r+": "+i+")",s.name="ChunkLoadError",s.type=r,s.request=i,o[1](s)}}),"chunk-"+t,t)}},a.O.j=t=>0===e[t];var t=(t,n)=>{var o,r,[i,s,u]=n,c=0;if(i.some((t=>0!==e[t]))){for(o in s)a.o(s,o)&&(a.m[o]=s[o]);if(u)var l=u(a)}for(t&&t(n);c<i.length;c++)r=i[c],a.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return a.O(l)},n=self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var u=a.O(void 0,[3733],(()=>a(35930)));u=a.O(u)})(); +//# sourceMappingURL=app.d42ab31e1d50a3265a82.js.map +\ No newline at end of file diff --git a/priv/static/static/js/app.d42ab31e1d50a3265a82.js.map b/priv/static/static/js/app.d42ab31e1d50a3265a82.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/app.d42ab31e1d50a3265a82.js","mappings":"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,CAChB,MACA,KAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,MACA,IAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,gBAAiB,CAChB,MACA,MAED,eAAgB,CACf,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,eAAgB,CACf,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,oBAAqB,CACpB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,IACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,aAAc,CACb,MACA,MAED,kBAAmB,CAClB,MACA,MAED,YAAa,CACZ,MACA,KAED,iBAAkB,CACjB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,YAAa,CACZ,MACA,OAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,KAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF,CAAC,IAIT,IAAIG,EAAMX,EAAIE,GAAMU,EAAKD,EAAI,GAC7B,OAAOR,EAAoBK,EAAEG,EAAI,IAAIJ,MAAK,IAClCJ,EAAoBU,EAAED,EAAI,KAEnC,CACAX,EAAoBa,KAAO,IAAOC,OAAOD,KAAKd,GAC9CC,EAAoBW,GAAK,KACzBI,EAAOC,QAAUhB,C,8qBC1kBjB,iBAAeiB,GACb,IAAMC,EAAaC,EAAaF,EAAKG,OAC/BC,EAAaJ,EAAKK,OAASC,EAAaN,EAAKK,OACnD,OAAO,SAACE,EAAOC,GACb,IAAMC,EAAYF,EAAM,GACxB,MAAkB,MAAdE,GAAqBT,EAAKG,MACrBF,EAAWM,EAAOC,GAET,MAAdC,GAAqBL,EAChBA,EAAWG,GAEb,EACT,CACD,EAEM,IAAML,EAAe,SAAAQ,GAAM,OAAI,SAACH,EAAOC,GAC5C,IAAMG,EAAWJ,EAAMK,cAAcC,OAAO,GAC5C,OAAOH,EACJ5B,KAAI,SAAAqB,GAAK,OAAAW,EAAAA,EAAA,GAAUX,GAAUK,EAAqBL,GAAM,IACxDY,QAAO,SAACZ,GAAK,OAAMA,EAAMa,MAAMC,OAAOd,EAAMe,UAAWH,QAAO,SAAAI,GAAE,OAAIA,EAAGP,cAAcQ,MAAMT,EAAS,IAAEU,MAAM,IAC5GvC,KAAI,SAAAwC,GACH,IAAIC,EAAQ,EAeZ,OAZAA,GAASC,KAAKC,IAAGC,MAARF,MAAIG,EAAAA,EAAAA,GAAQL,EAAEN,MAAMlC,KAAI,SAAA8C,GAAI,OAAIA,EAAKhB,gBAAkBD,EAAW,IAAM,CAAC,KAACM,OAAA,CAAE,KAGrFM,GAASD,EAAEO,SAAW,IAAM,EAG5BN,GAASC,KAAKC,IAAGC,MAARF,MAAIG,EAAAA,EAAAA,GAAQL,EAAEN,MAAMlC,KAAI,SAAAqC,GAAE,OAAIA,EAAGP,cAAckB,WAAWnB,GAAY,GAAK,CAAC,KAACM,OAAA,CAAE,KAGxFM,GAASD,EAAES,YAAYV,OAEvBC,EAAEC,MAAQA,EACHD,CACT,IACCU,MAAK,SAACC,EAAGC,GAER,IAAMC,EAAiBF,EAAEF,YAAcG,EAAEH,YAAc,IAAO,GAE9D,OAAOG,EAAEX,MAAQU,EAAEV,MAAQY,CAC7B,GACJ,CAAC,EAEY7B,EAAe,SAAH8B,GAA4B,IAAtBC,EAAQD,EAARC,SAAUC,EAAKF,EAALE,MAGnCC,EAAc,GACdC,EAAgB,GAChBC,EAAU,KACVC,EAAmB,KAGjBC,EAAqB,SAACC,GAE1B,OADAF,GAAoBA,IACb,IAAIvD,SAAQ,SAACC,EAASyD,GAC3BJ,EAAUK,YAAW,YAJN,SAACF,GAAK,OAAKP,EAAS,cAAe,CAAEO,MAAAA,GAAQ,EAK1DG,CAAWH,GAAOvD,KAAKD,GAAQ,MAAOyD,EACxC,GAAG,KACHH,EAAmB,WACjBM,aAAaP,GACbrD,EAAQ,GACV,CACF,GACF,EAEA,sBAAA6D,GAAAC,EAAAA,EAAAA,GAAAC,IAAAA,MAAO,SAAAC,EAAM7C,GAAK,IAAAI,EAAA0C,EAAA,OAAAF,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAC8B,GAAxC7C,EAAWJ,EAAMK,cAAcC,OAAO,GACxC2B,IAAkB7B,EAAQ,CAAA2C,EAAAE,KAAA,eAAAF,EAAAG,OAAA,SAASlB,GAAW,OAOlD,GALAA,EAAc,GACdC,EAAgB7B,EAKXA,EAAS+C,SAAS,KAAM,CAAFJ,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EACnBb,EAAmBhC,GAAS,OAqCF,OAlC5B0C,EAAiBf,EAAMqB,MAAMA,MAAM5C,QACvC,SAAA6C,GAAI,OACFA,EAAKC,aAAeD,EAAKhC,OACvBgC,EAAKC,YAAYjD,cAAckB,WAAWnB,IACxCiD,EAAKhC,KAAKhB,cAAckB,WAAWnB,GAAU,IACnDmD,MAAM,EAAG,IAAI9B,MAAK,SAACC,EAAGC,GACtB,IAAI6B,EAAS,EACTC,EAAS,EAgBb,OAbAD,GAAU9B,EAAE4B,YAAYjD,cAAckB,WAAWnB,GAAY,EAAI,EACjEqD,GAAU9B,EAAE2B,YAAYjD,cAAckB,WAAWnB,GAAY,EAAI,EAGjEoD,GAAU9B,EAAEL,KAAKhB,cAAckB,WAAWnB,GAAY,EAAI,EAGzB,KAFjCqD,GAAU9B,EAAEN,KAAKhB,cAAckB,WAAWnB,GAAY,EAAI,GAEnCoD,IAGI9B,EAAEL,KAAOM,EAAEN,KAAO,GAAK,IACjBK,EAAE4B,YAAc3B,EAAE2B,YAAc,GAAK,EAIxE,IAAG/E,KAAI,SAAC8E,GAAI,MAAM,CAChBA,KAAAA,EACA7B,YAAa6B,EAAKK,eAClBC,WAAYN,EAAKhC,KACjBC,SAAU+B,EAAKO,2BACfC,YAAa,IAAMR,EAAKC,YAAc,IACvC,IAGDtB,EAAcc,GAAkB,GAAEC,EAAAG,OAAA,SAC3BlB,GAAW,yBAAAe,EAAAe,OAAA,GAAAjB,EAAA,KACnB,gBAAAkB,GAAA,OAAArB,EAAAvB,MAAA,KAAA6C,UAAA,EAlDD,EAmDF,C,+oCC7HO,IAAMC,EAAa,SAACC,GACzB,IAAMC,EAAS,wCAAoCC,KAAKF,GACxD,OAAOC,IAAWA,EAAO,IAAMA,EAAO,GACxC,EASaE,EAAW,SAACH,EAAK1D,GAC5B,IAAM8D,EAAWJ,EACdK,UAAU,EAAGL,EAAIpD,OAAS,GAC1B0D,QAAQ,IAAIC,OAAO,IAAMR,EAAWC,IAAO,IAC3CM,QAAQ,OAAQ,IAChBE,OACGC,EAAQC,MAAMC,KAAKP,EAASQ,SAAS,kDACxCvG,KAAI,SAAAsD,GAAA,IAAAa,GAAAqC,EAAAA,EAAAA,GAAAlD,EAAA,GAAmB,OAAZa,EAAA,GAAkB,CAAbA,EAAA,GAAOA,EAAA,GAAkB,IACzCnE,KAAI,SAAAyG,GAAY,IAAAC,GAAAF,EAAAA,EAAAA,GAAAC,EAAA,GAAVjE,EAACkE,EAAA,GAAEC,EAACD,EAAA,GACT,OAAKC,EACE,CAACnE,EAAGmE,EAAEX,UAAU,EAAGW,EAAEpE,OAAS,IADtB,CAACC,GAAG,EAErB,IASF,OAAOzB,OAAO6F,YAAYR,EAAMnE,OAAOA,GARjB,SAAH4E,GAAe,IAAAC,GAAAN,EAAAA,EAAAA,GAAAK,EAAA,GAAVrE,EAACsE,EAAA,GAAEH,EAACG,EAAA,GACpBC,EAAUvE,EAAEV,cAClB,MAAgB,UAAZiF,IACY,UAAZA,GACW,cAANJ,GAA2B,aAANA,EAGhC,GAEF,EAaaK,EAAsB,SAACC,EAAMrF,EAAQsF,GAGhD,IAFA,IAAMC,EAAS,GACXC,EAAa,GACRC,EAAI,EAAGA,EAAIJ,EAAK1E,OAAQ8E,IAAK,CACpC,IAAMC,EAAOL,EAAKI,GAClB,GAAa,MAATC,EAAc,CAChB,IAE0BC,EAFpB7C,EAAOuC,EAAKjC,MAAMqC,EAAI,GACxBG,GAAQ,EAAKC,EAAAC,EACG9F,GAAM,IAA1B,IAAA6F,EAAAE,MAAAJ,EAAAE,EAAAG,KAAAC,MAA4B,KAAjBxG,EAAKkG,EAAAO,MACd,GAAIpD,EAAKM,MAAM,EAAG3D,EAAM0G,UAAUxF,OAAS,KAAQlB,EAAM0G,UAAY,IAAM,CACzEP,EAAQnG,EACR,KACF,CACF,CAAC,OAAA2G,GAAAP,EAAAjH,EAAAwH,EAAA,SAAAP,EAAAQ,GAAA,CACGT,GACFL,EAAOe,KAAKd,GACZA,EAAa,GACbD,EAAOe,KAAKhB,EAAUM,IACtBH,GAAKG,EAAMO,UAAUxF,OAAS,GAE9B6E,GAAcE,CAElB,MACEF,GAAcE,CAElB,CAEA,OADIF,GAAYD,EAAOe,KAAKd,GACrBD,CACT,E,ugCC5DO,I,oCClBHgB,MAAM,e,uBCiCV,QAjCoB,CAClBrF,KAAM,cACNsF,MAAO,CACLC,IAAK,CACHC,UAAU,EACVC,KAAMC,QAERC,QAAS,CACPH,UAAU,EACVC,KAAMC,QAER7C,IAAK,CACH2C,UAAU,EACVC,KAAMC,OACNE,QAAS,KAGbC,QAAS,CACPC,QAAO,WACL,ICN4BP,EAC1BQ,EAIAjD,EDCID,EAAMmD,KAAKnD,MCNW0C,EDMcS,KAAKT,ICL7CQ,EAAUE,UAAUV,MAIpBzC,EADQ,4r2BACOC,KAAKgD,KAInBjD,EAAO,IDFV,GAAID,EAAK,CACP,IAAMqD,EAAOF,KAAKG,gBAAgBtD,GAClCmD,KAAKI,QAAQhB,KAAKc,EACpB,MACEG,OAAOC,KAAKN,KAAKT,IAAK,SAE1B,EACAY,gBAAe,SAAEtD,GACf,MAAO,QAAPxD,OAAewD,EACjB,IEtBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCHNzD0D,EAAAA,EAAAA,IAYO,OAZPC,EAYO,EARLC,EAAAA,EAAAA,GAME,KALCC,KAAMC,EAAApB,IACPF,MAAM,WACNuB,OAAO,SACNd,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAb,SAAAa,EAAAb,QAAAhG,MAAA6G,EAAAhE,UAAO,iBACvBoE,UAAQJ,EAAAhB,S,gCIARqB,EAA+B,CACnC,aACA,KACA,KACA,KACA,KACA,KACA,IACA,QACA,QACA,KACA,KACA,QACA,KACA,KACA,KACA,KACA,KACA,MAqBF,SACEhH,KAAM,cACNiH,WAAY,CACVC,aAAAA,EAAAA,EACAC,YAAAA,GAEF7B,MAAO,CAEL8B,KAAM,CACJ5B,UAAU,EACVC,KAAMC,QAER2B,WAAY,CACV7B,UAAU,EACVI,QAAS,iBAAM,EAAE,GAGnBrH,MAAO,CACLiH,UAAU,EACVC,KAAMlC,OAGR+D,YAAa,CACX9B,UAAU,EACVC,KAAM8B,QACN3B,SAAS,GAGX4B,UAAW,CACThC,UAAU,EACVC,KAAM8B,QACN3B,SAAS,IAIb6B,OAAM,WAAI,IAAAC,EAAA,KAESN,EAASO,EAAkB3B,KAAKoB,KAAMpB,KAAKwB,WAApDI,QACJC,EAAkB,KAElBC,EAAc,GAEZC,EAAW,GACXC,EAAkB,GAClBC,EAAoB,GAEpBC,EAAc,GAEhBC,EAAe,EACfC,EAAY,EA6HZC,GAAyB,EAmDvBC,EC5PuB,WA6C/B,IA7C8C,IAAdlB,EAAIzE,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GAGjC6F,EAAgB,IAAIC,IAAI,CAC5B,OAAQ,OAAQ,KAAM,MAAO,QAAS,KAAM,MAAO,QACnD,SAAU,OAAQ,OAAQ,QAAS,SAAU,QAAS,QAIlDpE,EAAS,GACTqE,EAAS,CAAC,CAAC,GAAIrE,IACjBC,EAAa,GACbqE,EAAY,KAEVC,EAAmB,WACvB,OAAOF,EAAOA,EAAOjJ,OAAS,GAAG,EACnC,EAEMoJ,EAAY,WACG,KAAfvE,IACJsE,IAAmBxD,KAAKd,GACxBA,EAAa,GACf,EAEMwE,EAAoB,SAACjG,GACzB+F,IAAmBxD,KAAK,CAACvC,GAC3B,EAEMkG,EAAa,SAAClG,GAClB,IAAMmG,EAASJ,IACTK,EAAW,CAACC,IAASrG,GAAM,IACjC6F,EAAOtD,KAAK6D,GACZD,EAAO5D,KAAK6D,EACd,EAEME,EAAc,SAACtG,GACnB,IAAMuG,EAAaV,EAAOA,EAAOjJ,OAAS,GACtCmD,EAAW8F,EAAOA,EAAOjJ,OAAS,GAAG,MAAQmD,EAAWC,IAC1DuG,EAAWhE,KAAKvC,GAChB6F,EAAOW,OAEPT,IAAmBxD,KAAKvC,EAE5B,EAES0B,EAAI,EAAGA,EAAI6C,EAAK3H,OAAQ8E,IAAK,CACpC,IAAMC,EAAO4C,EAAK7C,GAClB,GAAa,MAATC,GAA8B,OAAdmE,EAClBE,IACAF,EAAYnE,OACP,GAAa,MAATA,GAA8B,OAAdmE,EACzBA,GAAanE,OACR,GAAa,MAATA,GAA8B,OAAdmE,EAAoB,CAE7C,IAAMW,EADNX,GAAanE,EAEbmE,EAAY,KACZ,IAAMY,EAAU3G,EAAW0G,GACR,MAAfA,EAAQ,GACVH,EAAYG,GACHd,EAAcgB,IAAID,IAA4C,MAAhCD,EAAQA,EAAQ7J,OAAS,GAEhEqJ,EAAkBQ,GAElBP,EAAWO,EAEf,MACEhF,GAAcE,CAElB,CAMA,OALImE,IACFrE,GAAcqE,GAGhBE,IACOxE,CACT,CDiLkBoF,CAAkBrC,GAAMlK,KA1IlB,SAAdwM,EAAeC,EAAMC,EAAOC,EAAOC,GAEvC,GAAoB,iBAATH,EAAmB,CAC5B,IAAMI,EAA4B,KAAhBJ,EAAKtG,OAIvB,OAHIsG,EAAK7H,SAAS,QAChB+F,EAAkB,MAEhBkC,GAGFjC,EAAc6B,EAENC,IAAUC,EAAMpK,OAAS,GAA2B,OAApBoI,EAA4B8B,EAAKtG,OAASsG,IAGpF9B,EAAkB,KACd8B,EAAK7H,SAAS,OAChB6H,EAAO,CAAC,GAAIzF,EACVyF,EACAjC,EAAKnJ,OACL,SAAAiC,GAAwB,IAArByE,EAASzE,EAATyE,UAAWM,EAAG/E,EAAH+E,IACZ,OAAAyE,EAAAA,EAAAA,IAAAC,EAAAA,EAAA,OACQ,YAAW,IACZ1E,EAAG,UAAAlG,OACG4F,EAAS,aAAA5F,OACX4F,EAAS,WAEtB,MAGG0E,EACT,CAGA,GAAIpG,MAAM2G,QAAQP,GAAO,CACvB,IAAAQ,EAAmCR,EAAIS,GAAA1G,EAAAA,EAAAA,GAAAyG,EAAA,GAAhCE,EAAMD,EAAA,GAAEE,EAAQF,EAAA,GAAEG,EAAMH,EAAA,GAC3BI,EAAM5H,EAAWyH,GACK,WAAtBG,EAAIxL,gBAA4BwL,EAAM,cAChB,UAAtBA,EAAIxL,gBAA2BwL,EAAM,eACzC,IAAMC,EAAYzH,EAASqH,GAAQ,kBAAM,CAAI,IACvC/G,EAAQN,EAASqH,GAMjBK,EALyC,OAApB7C,GASnByC,GAAmC,iBAAhBA,EAAS,IAAmBA,EAAS,GAAG9K,MAAM,OAE/D,GADAsI,EAEV,GAAId,EAA6BlF,SAAS0I,GAExC3C,EAAkB,SACb,IAAY,QAAR2C,EACT,MAAO,CAAC,GAAI,CAACE,GA7FE7H,EA6F+BwH,GA5FlDL,EAAAA,EAAAA,IAAAC,EAAAA,GAAAU,EAAAA,EAAAA,IACM3H,EAASH,GAAI,OACX,QAAK,QA0F+C,IACnD,GAAY,MAAR2H,GAAe9C,EAAKJ,YAAa,CAC1C,GAAImD,EAAS,OAAUA,EAAS,MAAO3I,SAAS,WAE9C,OAhFc,SAACwB,EAAOgH,GAC5B,IAAMM,EAAWC,EAAYvH,EAAOgH,EAAUnC,KAU9C,OATAyC,EAASE,UAAYpD,EAAKL,WAAW0D,MAAK,SAAA1K,GAAC,OAAIA,EAAE2K,wBAA0BJ,EAASrF,GAAG,IACvFyC,EAAgB5C,KAAKwF,GACG,OAApB/C,IACFA,EAAkB,IAEpBA,EAAgBzC,KAAKwF,GACjB/C,EAAgBpI,OAASwL,EAAAA,GAC3BhD,EAAkB7C,KAAKwF,GAEM,IAA3B/C,EAAgBpI,QAClBuK,EAAAA,EAAAA,IAAA9C,EAAAA,EAAA,UAAgCW,GAAe,MAExC,EAEX,CAgEeqD,CAAc5H,EAAOgH,GAE5BzC,EAAkB,IAEtB,MAAO,GAAY,SAAR2C,GACL9C,EAAKJ,aAAemD,EAAS,OAAUA,EAAS,MAAO3I,SAAS,UAClE,MAAO,CAAC,GAAIwI,EAASpN,IAAIwM,GAAc,GAE3C,CAEA,YAAiBnB,IAAb+B,EACK,CACL,GACA,CACEI,EACA,CAACL,EAAQC,EAASpN,IAAIwM,GAAca,IAEtC,IAGK,CAAC,GAAI,CAACG,EAAqBf,GAAO,GAE7C,CAvHkB,IAAC9G,CAwHrB,IAuDMsI,GAAQpL,EAAAA,EAAAA,GAAIuI,GAAO8C,UAAUlO,KAnDR,SAArBmO,EAAsB1B,EAAMC,EAAOC,EAAOC,GAG5C,IA3NoBjF,EA0NtB,GAAoB,iBAAT8E,EAET,MADkC,KAAhBA,EAAKtG,OACDsG,GACjBtB,IAAwBA,GAAyB,GAC/Ca,IAASS,IACX,GAAIpG,MAAM2G,QAAQP,GAAO,CAE9B,IAAA2B,GAAA5H,EAAAA,EAAAA,GAA2BiG,EAAI,GAAxBU,EAAMiB,EAAA,GAAEhB,EAAQgB,EAAA,GACjBd,EAAiB,KAAXH,EAAgB,GAAKzH,EAAWyH,GAC5C,OAAQG,GACN,IAAK,IACH,IAAK9C,EAAKJ,YAAa,MACvB,IAAMmD,EAAYzH,EAASqH,GAAQ,kBAAM,CAAI,IACvC/G,EAAQN,EAASqH,GAAQ,kBAAM,CAAI,IAEzC,GACGI,EAAS,OAAUA,EAAS,MAAO3I,SAAS,YACxB,QAAlB2I,EAAUc,IAEb,OA1IY,SAACjI,EAAOgH,EAAUjC,GACtC,IAAAmD,EAA+BX,EAAYvH,EAAOgH,EAAUlC,KAA1CwC,GAALY,EAAL5B,OAAkB6B,EAAAA,EAAAA,GAAAD,EAAAE,IAC1BxD,EAAY9C,KAAKwF,GACZvC,GACHN,EAAS3C,KAAKwF,GAEhB,IAAQrF,EAAsBqF,EAAtBrF,IAAK1C,EAAiB+H,EAAjB/H,IAAK8C,EAAYiF,EAAZjF,QAClB,OAAAqE,EAAAA,EAAAA,IAAA7C,EAAA,KAAyB5B,EAAG,IAAO1C,EAAG,QAAW8C,GAAO,KAC1D,CAkIiBgG,CAAcrI,EAAOgH,EAAUjC,GAEtC/E,EAAMsD,OAAS,SACf,IAAMgF,GAAc7L,EAAAA,EAAAA,GAAIuK,GAAUc,UAAUlO,IAAImO,GAAoBD,UAEpE,OAAApB,EAAAA,EAAAA,IAAA,IAAc1G,EAAK,CACfsI,IAIR,IAAK,GACH,OAAO7L,EAAAA,EAAAA,GAAIuK,GAAUc,UAAUlO,IAAImO,GAAoBD,UAI3D,QAAiB7C,IAAb+B,EAAwB,CAC1B,IAAMsB,EAAcrI,MAAM2G,QAAQI,IAC9BvK,EAAAA,EAAAA,GAAIuK,GAAUc,UAAUlO,IAAImO,GAAoBD,UAChDd,EACJ,OAAAN,EAAAA,EAAAA,IAAAQ,EAAgBxH,EAASqH,GAhQP,mBAAAxF,EAiQd+G,IAjQc,oBAAA3N,OAAA4N,UAAAC,SAAAC,KAAAlH,MAAAmH,EAAAA,EAAAA,IAAAnH,GAiQd+G,EAAW,2BAAXA,EAAW,GAEjB,CACE,OAAA5B,EAAAA,EAAAA,IAAAQ,EAAA,UAEJ,CACA,OAAOb,CACT,IAG2DyB,UAIrDtI,GAAMkH,EAAAA,EAAAA,IAAA,cAAe,eAAa,CACpCmB,IAGEc,EAAQ,CACZlE,SAAAA,EACAC,gBAAAA,EACAE,YAAAA,EACAD,kBAAAA,GAMF,OAFAjC,KAAKkG,MAAM,aAAcD,GAElBnJ,CACT,GAGF,IAAM+H,EAAc,SAACvH,EAAOgH,EAAUV,GACpC,IAOMuC,EAAc7B,EAASpN,KAPX,SAAZkP,EAAazC,GACjB,MAAoB,iBAATA,EACFA,EAEAA,EAAK,GAAGzM,IAAIkP,GAAWC,KAAK,GAEvC,IAC4CA,KAAK,IACjD,MAAO,CACLzC,MAAAA,EACArE,IAAKjC,EAAMoD,KACX7D,IAAKS,EAAM,YACXqC,QAAS2G,IAAYhC,GAAU+B,KAAK,IACpCF,YAAAA,EAEJ,EAUaxE,EAAoB,SAACP,EAAMI,GACtC,IAAM+E,EAAkB,IAAI9D,IAAI,CAAC,IAAK,QAEhC+D,ELlT0B,WAAe,IA4Bf/H,EA5BC2C,EAAIzE,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GAGlC6F,EAAgB,IAAIC,IAAI,CAC5B,OAAQ,OAAQ,KAAM,MAAO,QAAS,KAAM,MAAO,QACnD,SAAU,OAAQ,OAAQ,QAAS,SAAU,QAAS,QAIlDgE,EAAgB,IAAIhE,IAAI,CAC5B,UAAW,UAAW,QAAS,aAAc,UAAW,SAAU,KAClE,MAAO,KAAM,KAAM,WAAY,aAAc,SAAU,SAAU,OACjE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,SAAU,KAAM,KAAM,OACpE,MAAO,KAAM,IAAK,MAAO,UAAW,QAAS,OAKzCiE,EAAoB,IAAIjE,IAAI,CAAC,OAE7BkE,EAAqB,IAAIlE,IAAI,GAADpJ,QAAAU,EAAAA,EAAAA,GAC7B0M,EAAcG,WAAQ7M,EAAAA,EAAAA,GACtB2M,EAAkBE,YAIjBC,EAAmB,IAAIpE,IAAIkE,GACjChI,EAAAC,EACmB4D,GAAa,IAAhC,IAAA7D,EAAAE,MAAAJ,EAAAE,EAAAG,KAAAC,MAAkC,KAAvB+H,EAAIrI,EAAAO,MACb6H,EAAgB,OAAQC,EAC1B,CAEA,OAAA5H,GAAAP,EAAAjH,EAAAwH,EAAA,SAAAP,EAAAQ,GAAA,CAyCA,IAxCA,IAAM4H,EAAc,IAAItE,IAAI,GAADpJ,QAAAU,EAAAA,EAAAA,GACtB8M,EAAiBD,WAAQ7M,EAAAA,EAAAA,GACzByI,EAAcoE,YAGbvI,EAAS,GACT2I,EAAQ,GACV1I,EAAa,GACbqE,EAAY,KAEVsE,EAAQ,WACR3I,EAAWjB,OAAO5D,OAAS,EAC7B4E,EAAOe,KAAK,CAAE4H,MAAO,GAAF3N,OAAM2N,GAAQ7I,KAAMG,IAEvCD,EAAOe,KAAKd,GAEdA,EAAa,EACf,EAEM4I,EAAW,SAACrK,GAChBoK,IACA5I,EAAOe,KAAKvC,EACd,EAEMkG,EAAa,SAAClG,GAClBoK,IACA5I,EAAOe,KAAKvC,GACZmK,EAAMG,QAAQvK,EAAWC,GAC3B,EAEMsG,EAAc,SAACtG,GACfmK,EAAM,KAAOpK,EAAWC,IAC1BoK,IACA5I,EAAOe,KAAKvC,GACZmK,EAAMI,SAEN9I,GAAczB,CAElB,EAES0B,EAAI,EAAGA,EAAI6C,EAAK3H,OAAQ8E,IAAK,CACpC,IAAMC,EAAO4C,EAAK7C,GAClB,GAAa,MAATC,GAA8B,OAAdmE,EAClBA,EAAYnE,OACP,GAAa,MAATA,GAA8B,OAAdmE,EACzBA,GAAanE,OACR,GAAa,MAATA,GAA8B,OAAdmE,EAAoB,CAE7C,IAAMW,EADNX,GAAanE,EAEbmE,EAAY,KACZ,IAAMY,EAAU3G,EAAW0G,GACvByD,EAAYvD,IAAID,GACdmD,EAAkBlD,IAAID,GACxB2D,EAAS5D,GACAuD,EAAiBrD,IAAID,GACX,MAAfD,EAAQ,GACVH,EAAYG,GAC6B,MAAhCA,EAAQA,EAAQ7J,OAAS,GAElCyN,EAAS5D,GAETP,EAAWO,GAGbhF,GAAcgF,EAGhBhF,GAAcgF,CAElB,KAAoB,OAAT9E,EACT0I,EAAS1I,GAETF,GAAcE,CAElB,CAOA,OANImE,IACFrE,GAAcqE,GAGhBsE,IAEO5I,CACT,CK+LgBgJ,CAAmBjG,GA2BjC,MAAO,CAAEQ,QA1BO4E,EAAMpB,UAAUlO,KAAI,SAACyM,EAAMC,EAAOC,GAChD,IAAKF,EAAKxF,KAAM,OAAOwF,EACvB,IAAM2D,EAAS3D,EAAKxF,KAGpB,GAEEqD,GAEEmC,EAAKqD,MAAMO,OAAM,SAAAC,GAAC,OAAIjB,EAAgB/C,IAAIgE,EAAE,MAE3CF,EAAOxL,SAAS,SAAWwL,EAAOxL,SAAS,SAC9C,CACA,IAAM2L,EAAgBH,EAAOnK,QAAQ,aAAc,IAChDA,QAAQ,SAAU,IAClBE,OACH,GAAIoK,EAAcvN,WAAW,QAC3B,MAAO,2BAAPb,OAAkCiO,EAAM,WACnC,GAAIG,EAAcvN,WAAW,QAClC,MAAO,0BAAPb,OAAiCiO,EAAM,UAE3C,CAEA,OAAOA,CACT,IAAGlC,UAAUiB,KAAK,IAGpB,C,0EE3VMqB,EAAkB,SAACC,GAAK,OAAKA,EAAMC,WAAU,SAAAC,GAAC,OAAIA,EAAEvI,KAAK,GAAC,EAEhE,SACEtF,KAAM,cACNsF,MAAO,CACLwI,kBAAmB,CACjBtI,UAAU,EACVC,KAAM8B,QACN3B,SAAS,GAEXmI,SAAU,CACRvI,UAAU,EACVC,KAAMuI,SACNpI,aAAS2C,GAEX0F,UAAW,CACTzI,UAAU,EACVC,KAAMC,OACNE,aAAS2C,GAEX2F,eAAgB,CACd1I,UAAU,EACVC,KAAM8B,QACN3B,SAAS,GAEXuI,WAAY,CACV3I,UAAU,EACVC,KAAM8B,QACN3B,SAAS,GAEXwI,eAAgB,CACd5I,UAAU,EACVC,KAAM8B,QACN3B,SAAS,IAGbxH,KAAI,WACF,MAAO,CACLiQ,OAAQX,EAAgB1H,KAAK2H,SAEjC,EACAW,SAAU,CACRC,YAAW,WAAI,IAAA7G,EAAA,KAEb,OAAI1B,KAAKiI,UACAjI,KAAK2H,QAAQC,WAAU,SAAAY,GAAI,OAAIA,GAAQA,EAAKlJ,OAASoC,EAAKuG,YAAcO,EAAKlJ,MAAMmJ,GAAG,IAEtFzI,KAAKqI,MAEhB,EACAK,SAAQ,WAAI,IAAAC,EAAA,KACV,OAAO,SAAAC,GAEL,OAAOD,EAAKE,OAAM,UAAWjB,WADZ,SAAAY,GAAI,OAAIA,EAAKlJ,OAASkJ,EAAKlJ,MAAM,mBAAqBsJ,CAAO,MACzBD,EAAKJ,WAC5D,CACF,GAEFO,aAAY,WACU9I,KAAK2H,QAAQ3H,KAAKqI,QACrB/I,QACfU,KAAKqI,OAASX,EAAgB1H,KAAK2H,SAEvC,EACA9H,QAAS,CACPkJ,SAAQ,SAAEnF,GAAO,IAAAoF,EAAA,KACf,OAAO,SAACtR,GACNA,EAAEuR,iBACFD,EAAKE,OAAOtF,EACd,CACF,EAEA+D,MAAK,WACH,OAAI3H,KAAK6I,OAAM,UAAW,GAAGpJ,OAAS0J,EAAAA,GAC7BnJ,KAAK6I,OAAM,UAAW,GAAGvE,SAE3BtE,KAAK6I,OAAM,SACpB,EACAK,OAAM,SAAEtF,GACuB,mBAAlB5D,KAAK+H,UACd/H,KAAK+H,SAAShC,KAAK,KAAM/F,KAAK2H,QAAQ/D,GAAO6E,KAE/CzI,KAAKqI,OAASzE,EACV5D,KAAKkI,iBACPlI,KAAKoJ,MAAMC,SAASC,UAAY,EAEpC,GAEF7H,OAAM,WAAI,IAAA8H,EAAA,KACFC,EAAOxJ,KAAK2H,QACfzQ,KAAI,SAACsR,EAAM5E,GACV,IAAMtE,EAAQkJ,EAAKlJ,MACnB,GAAKA,EAAL,CACA,IAAMmK,EAAa,CAAC,MAAO,kBACrBC,EAAiB,CAAC,eAKxB,OAJIH,EAAKhB,cAAgB3E,IACvB6F,EAAWrK,KAAK,UAChBsK,EAAetK,KAAK,WAElBE,EAAMqK,OACR3F,EAAAA,EAAAA,IAAA,aACc0F,EAAerD,KAAK,MAAI,EAAArC,EAAAA,EAAAA,IAAA,mBAEtB1E,EAAMsK,SAAQ,QACfL,EAAKR,SAASnF,GAAM,MACtB6F,EAAWpD,KAAK,KAAI,KACtB,SAAQ,KACR,OAAK,EAAArC,EAAAA,EAAAA,IAAA,WAEA1E,EAAMqK,MAAK,MAASrK,EAAM,kBAAgB,MACnDA,EAAMuK,MAAQ,GAAKvK,EAAMuK,WAKlC7F,EAAAA,EAAAA,IAAA,aACc0F,EAAerD,KAAK,MAAI,EAAArC,EAAAA,EAAAA,IAAA,mBAEtB1E,EAAMsK,SAAQ,QACfL,EAAKR,SAASnF,GAAM,MACtB6F,EAAWpD,KAAK,KAAI,KACtB,SAAQ,KACR,OAAK,CAER/G,EAAMwK,MAAS9F,EAAAA,EAAAA,IAAA+F,EAAAA,GAAA,OAAkB,WAAU,KAAM,KAAI,sBAAmBzK,EAAMwK,MAAI,MAArE,IAAyE9F,EAAAA,EAAAA,IAAA,cAC5E,QAAM,CACf1E,EAAMuK,WAlCG,CAuCpB,IAEIR,EAAWrJ,KAAK2H,QAAQzQ,KAAI,SAACsR,EAAM5E,GACvC,IAAMtE,EAAQkJ,EAAKlJ,MACnB,GAAKA,EAAL,CACA,IAAM+I,EAASkB,EAAKhB,cAAgB3E,EAC9BoG,EAAU,CAAE3B,EAAS,SAAW,UAClC/I,EAAM2K,YACRD,EAAQ5K,KAAK,eAEf,IAAM8K,GAAeX,EAAKzB,mBAAqBO,EAC3CG,EACA,GAEJ,OAAAxE,EAAAA,EAAAA,IAAA,aACcgG,GAAO,CAEfT,EAAKpB,YAAUnE,EAAAA,EAAAA,IAAA,YACD,gBAAc,CAAE1E,EAAMuK,QAChC,GAELK,GAjBa,CAoBpB,IAEA,OAAAlG,EAAAA,EAAAA,IAAA,aACc,iBAAmBhE,KAAKmI,WAAa,YAAc,aAAW,EAAAnE,EAAAA,EAAAA,IAAA,aAEhE,OAAM,KACP,WAAS,CAEbwF,KAAIW,EAAAA,EAAAA,KAAAnG,EAAAA,EAAAA,IAAA,WAGD,WAAU,KACT,WAAU,MACR,YAAchE,KAAKkI,eAAiB,mBAAqB,KAAG,CAGlEmB,IAAQ,GAAAe,EAAAA,EAAAA,IAAA,oBAFWpK,KAAKoI,mBAMjC,E,6sBCzKFiC,EAAAA,GAAAA,IACEC,EAAAA,KA+FF,QA5FqB,SAAH9P,GAAA,IAChB+P,EAAK/P,EAAL+P,MACAC,EAAMhQ,EAANgQ,OACAC,EAASjQ,EAATiQ,UAASC,EAAAlQ,EACTmQ,cAAAA,OAAa,IAAAD,EAAG,UAASA,EAAAE,EAAApQ,EACzBqQ,oBAAAA,OAAmB,IAAAD,EAAG,GAAEA,EAAA,OACpB,SAACE,GAIL,MAAO,CACLxL,MAJoBrH,OAAOD,MAAK+S,EAAAA,EAAAA,GAAkBD,IACxB3R,QAAO,SAAA0E,GAAC,OAAIA,IAAM8M,CAAa,IAAEtR,OAAOwR,GAIlEzS,KAAI,WACF,MAAO,CACL4S,SAAS,EACTC,aAAa,EACbC,OAAO,EACPC,QAAS,GAEb,EACAC,QAAO,WACL/K,OAAOgL,iBAAiB,SAAUrL,KAAKsL,YACX,IAAxBtL,KAAKmL,QAAQ1R,QACfuG,KAAKuL,cAET,EACAd,UAAS,WACPpK,OAAOmL,oBAAoB,SAAUxL,KAAKsL,YAC1Cb,GAAaA,EAAUzK,KAAKyL,OAAQzL,KAAK0L,OAC3C,EACA7L,QAAS,CAGP8L,cAAa,WACX3L,KAAKmL,QAAUX,EAAOxK,KAAKyL,OAAQzL,KAAK0L,SAAW,EACrD,EACAH,aAAY,WAAI,IAAA7J,EAAA,KACT1B,KAAKgL,UACRhL,KAAKgL,SAAU,EACfhL,KAAKkL,OAAQ,EACbX,EAAMvK,KAAKyL,OAAQzL,KAAK0L,QACrBjU,MAAK,SAACmU,GACLlK,EAAKsJ,SAAU,EACftJ,EAAKuJ,YAAcY,IAAQD,EAC7B,IAAE,OACK,WACLlK,EAAKsJ,SAAU,EACftJ,EAAKwJ,OAAQ,CACf,IAAE,SACO,WACPxJ,EAAKiK,eACP,IAEN,EACAL,WAAU,SAAE5T,GACV,IAAMoU,EAAYC,SAASC,KAAKC,wBAC1BC,EAAStS,KAAKC,IAAIiS,EAAUI,QAAUJ,EAAUK,IACjC,IAAjBnM,KAAKgL,UACc,IAArBhL,KAAKiL,aACLjL,KAAKoM,IAAIC,aAAe,GACvBhM,OAAOiM,YAAcjM,OAAOkM,aAAiBL,EAAS,KAEvDlM,KAAKuL,cAET,GAEF9J,OAAM,WACJ,IAzEoC5C,EAyE9BS,EAAKpG,EAAAA,EAAA,GACN8G,KAAKyL,QAAM,IAAAe,EAAAA,EAAAA,GAAA,GACb7B,EAAgB3K,KAAKmL,UAElB7G,EAAWtE,KAAK6I,OACtB,OAAA7E,EAAAA,EAAAA,IAAA,aACa,kBAAgB,EAAAA,EAAAA,EAAAA,IAAA8G,EACHxL,GAhFUT,EAiF7ByF,EAjF6B,mBAAAzF,GAAA,oBAAA5G,OAAA4N,UAAAC,SAAAC,KAAAlH,MAAAmH,EAAAA,EAAAA,IAAAnH,GAiF7ByF,EAAQ,2BAARA,EAAQ,MAAAN,EAAAA,EAAAA,IAAA,aAEA,yBAAuB,CAC/BhE,KAAKkL,QAAKlH,EAAAA,EAAAA,IAAA,kBACQhE,KAAKuL,aAAY,MAAQ,gDAA8C,CACrFvL,KAAKyM,GAAG,4BAGXzM,KAAKkL,OAASlL,KAAKgL,UAAOhH,EAAAA,EAAAA,IAAA+F,EAAAA,GAAA,cAAsB,gBAAc,OAC9D/J,KAAKkL,QAAUlL,KAAKgL,UAAYhL,KAAKiL,cAAWjH,EAAAA,EAAAA,IAAA,aAAgBhE,KAAKuL,aAAY,KAAO,SAAQ,SAAU,KAAG,CAAEvL,KAAKyM,GAAG,qBAIjI,EAEJ,CAAC,C,WC1GD,IAkCMC,EAAkB,CACtBC,GAAI,eAYNzU,EAAOC,QAAU,CACfyU,UAhDgB,CAChB,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,UACA,KACA,SACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,WAkBAC,mBAXyB,SAACjV,GAAI,OAAK8U,EAAgB9U,IAASA,CAAI,EAYhEkV,mBAVyB,SAAClV,GAAI,OAAKA,CAAI,EAWvCmV,oBAT0B,SAAAC,GAC1B,IAAMC,EAAW1P,MAAM2G,QAAQ8I,GAASA,EAAQ,CAACA,GACjD,OAAOC,EAASnR,SAAS,MAAQmR,EAAWA,EAAS5T,OAAO,CAAC,MAC/D,E,4HCtCA,SAAAuF,EAAAtH,EAAA4V,GAAA,IAAAC,EAAA,oBAAAC,QAAA9V,EAAA8V,OAAAC,WAAA/V,EAAA,kBAAA6V,EAAA,IAAA5P,MAAA2G,QAAA5M,KAAA6V,EAAA,SAAA7V,EAAAgW,GAAA,GAAAhW,EAAA,qBAAAA,EAAA,OAAAiW,EAAAjW,EAAAgW,GAAA,IAAAxO,EAAA7G,OAAA4N,UAAAC,SAAAC,KAAAzO,GAAA4E,MAAA,uBAAA4C,GAAAxH,EAAAkW,cAAA1O,EAAAxH,EAAAkW,YAAAxT,MAAA,QAAA8E,GAAA,QAAAA,EAAAvB,MAAAC,KAAAlG,GAAA,cAAAwH,GAAA,2CAAA2O,KAAA3O,GAAAyO,EAAAjW,EAAAgW,QAAA,GAAAI,CAAApW,KAAA4V,GAAA5V,GAAA,iBAAAA,EAAAmC,OAAA,CAAA0T,IAAA7V,EAAA6V,GAAA,IAAA5O,EAAA,EAAAoP,EAAA,oBAAA9O,EAAA8O,EAAA7O,EAAA,kBAAAP,GAAAjH,EAAAmC,OAAA,CAAAsF,MAAA,IAAAA,MAAA,EAAAC,MAAA1H,EAAAiH,KAAA,EAAA7G,EAAA,SAAAkW,GAAA,MAAAA,CAAA,EAAAzO,EAAAwO,EAAA,WAAAE,UAAA,6IAAA3O,EAAA4O,GAAA,EAAAC,GAAA,SAAAlP,EAAA,WAAAsO,EAAAA,EAAApH,KAAAzO,EAAA,EAAAwH,EAAA,eAAAkP,EAAAb,EAAAvR,OAAA,OAAAkS,EAAAE,EAAAjP,KAAAiP,CAAA,EAAAtW,EAAA,SAAAuW,GAAAF,GAAA,EAAA7O,EAAA+O,CAAA,EAAA9O,EAAA,eAAA2O,GAAA,MAAAX,EAAA,QAAAA,EAAA,oBAAAY,EAAA,MAAA7O,CAAA,aAAAqO,EAAAW,EAAAC,IAAA,MAAAA,GAAAA,EAAAD,EAAAzU,UAAA0U,EAAAD,EAAAzU,QAAA,QAAA8E,EAAA,EAAA6P,EAAA,IAAA7Q,MAAA4Q,GAAA5P,EAAA4P,EAAA5P,IAAA6P,EAAA7P,GAAA2P,EAAA3P,GAAA,OAAA6P,CAAA,CAKA,IAiBaC,EAbPC,EAAmB,SAAC1W,GACxB,OAAO,SAEL,KAAAyB,QACKwT,EAAAA,EAAAA,oBAAmBjV,GAAK,SAEjC,EA+BA,QA7BiB,CACfgV,UAAAA,EAAAA,UACAhN,QAAS,CACP2O,GAAIC,EAAAA,OAAAA,SAENC,aAAWJ,GAAA/S,EAAAA,EAAAA,GAAAC,IAAAA,MAAE,SAAAC,EAAOkT,EAAMC,GAAQ,IAAA/B,EAAAgC,EAAAC,EAAAC,EAAAnQ,EAAAF,EAAAsQ,EAAAC,EAAA,OAAAzT,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAMX,IALfgR,GAAarP,MAAM2G,QAAQyK,GAAYA,EAAW,CAACA,IAAWxV,QAAO,SAAAO,GAAC,OAAIA,CAAC,KAElEoC,SApBc,OAqB3B8Q,EAAUxN,KArBiB,MAsB5BwP,GAAAK,EAAAA,EAAAA,GACwBrC,GAAlBiC,EAAKD,EAAA,GAAKE,EAAIF,EAAA1S,MAAA,GAEjB2S,IAAUH,EAAKQ,SAAUC,IAAQL,EAAMJ,EAAKU,gBAAe,CAAA1T,EAAAE,KAAA,eAAAF,EAAAG,OAAA,iBAAA8C,EAAAC,EAI5CgO,GAASlR,EAAAC,KAAA,EAAAgD,EAAAE,IAAA,WAAAJ,EAAAE,EAAAG,KAAAC,KAAE,CAAFrD,EAAAE,KAAA,SAAb,GA3BMhE,EA2BVmX,EAAItQ,EAAAO,OA3Be4N,EAAAA,UAAAA,SAAmBhV,GA4BpB,CAAF8D,EAAAE,KAAA,gBAAAF,EAAAE,KAAA,GACA0S,EAAiBS,GAAK,QAAvCM,EAAQ3T,EAAA4T,KACdZ,EAAKa,iBAAiBR,EAAMM,EAAQ,SAAS,QAAA3T,EAAAE,KAAA,gBAAAF,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAA8T,GAAA9T,EAAA,SAAAiD,EAAAjH,EAAAgE,EAAA8T,IAAA,eAAA9T,EAAAC,KAAA,GAAAgD,EAAAQ,IAAAzD,EAAA+T,OAAA,YAIjDf,EAAKU,eAAiBN,EACtBJ,EAAKQ,OAASL,EAAK,yBAAAnT,EAAAe,OAnCC,IAAC7E,CAmCF,GAAA4D,EAAA,yBACpB,SAAAkB,EAAAgT,GAAA,OAAArB,EAAAvU,MAAA,KAAA6C,UAAA,G,iGChDH,IAEE,IAAIgT,WAIN,CAFE,MAAOjY,GACP2I,OAAOsP,YAAcC,EAAAA,CACvB,CCgKA,QAjJqB,CACnBlV,MAxBmB,CACnBmV,mBAAoB,SACpBC,yBAAyB,EACzBC,0BAA0B,EAC1BC,uBAAwB,KACxBC,kBAAmB,OACnBC,SAAU,CACRC,uBAAwB,KACxBC,mBAAoB,KACpBC,uBAAwB,MAE1BC,eAAgB,CACdC,UAAWlQ,OAAOmQ,KAAOnQ,OAAOmQ,IAAIC,WAClCpQ,OAAOmQ,IAAIC,SAAS,SAAU,qBAC9BpQ,OAAOmQ,IAAIC,SAAS,iBAAkB,sBAG1CC,WAAY,SACZC,cAAe,GACfC,aAAc,EACdC,aAAc,MAKdC,UAAW,CACTC,cAAa,SAAErW,EAAKF,GAAsB,IAAlBwW,EAAOxW,EAAPwW,QAAS9F,EAAK1Q,EAAL0Q,MAC3B8F,GACEtW,EAAM0V,oBACRhV,aAAaV,EAAM0V,oBAErB1V,EAAMwV,SAASC,uBAAyB,CAAEjF,OAAO,EAAO9S,KAAM4Y,GAC9DtW,EAAMwV,SAASE,mBAAqBlV,YAAW,yBAAaR,EAAMwV,SAASC,sBAAsB,GAAE,MAEnGzV,EAAMwV,SAASC,uBAAyB,CAAEjF,OAAO,EAAM+F,UAAW/F,EAEtE,EACAgG,0BAAyB,SAAExW,EAAOyW,GAChCzW,EAAM2V,uBAAyBc,CACjC,EACAC,cAAa,SAAE1W,EAAOsE,GACpBtE,EAAMgW,WAAa1R,CACrB,EACAqS,mBAAkB,SAAE3W,GAClBA,EAAMmV,mBAAqB,QAC7B,EACAyB,wBAAuB,SAAE5W,GACvB,OAAQA,EAAMmV,oBACZ,IAAK,YAEH,YADAnV,EAAMmV,mBAAqB,WAE7B,IAAK,UAEH,YADAnV,EAAMmV,mBAAqB,aAE7B,QACE,MAAM,IAAIlY,MAAM,gDAEtB,EACA4Z,kBAAiB,SAAE7W,EAAOsE,GACxBtE,EAAMuV,kBAAoBjR,EAC1BtE,EAAMmV,mBAAqB,UACb,SAAV7Q,EACGtE,EAAMoV,0BACTpV,EAAMoV,yBAA0B,GAEf,UAAV9Q,IACJtE,EAAMqV,2BACTrV,EAAMqV,0BAA2B,GAGvC,EACAyB,0BAAyB,SAAE9W,EAAOsE,GAChCtE,EAAMsV,uBAAyBhR,CACjC,EACAyS,iBAAgB,SAAE/W,EAAOgX,GACvBhX,EAAMiW,cAAcvR,KAAKsS,EAC3B,EACAC,mBAAkB,SAAEjX,EAAOgX,GACzBhX,EAAMiW,cAAgBjW,EAAMiW,cAAcxX,QAAO,SAAA2F,GAAC,OAAIA,IAAM4S,CAAM,GACpE,EACAE,gBAAe,SAAElX,EAAOsE,GACtBtE,EAAMkW,aAAe5R,CACvB,EACA6S,eAAc,SAAEnX,EAAOsE,GACrBtE,EAAMoX,YAAc9S,CACtB,EACA+S,gBAAe,SAAErX,EAAOsE,GACtBtE,EAAMmW,aAAe7R,CACvB,GAEFgT,QAAS,CACPC,aAAY,SAAA5W,GAA8B,IAA1B6W,EAAS7W,EAAT6W,UAAaC,EAAMxV,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GACpCoP,SAASqG,MAAQ,GAAH/Y,OAAM8Y,EAAM,KAAA9Y,OAAI6Y,EAAUG,SAASrY,KACnD,EACA+W,cAAa,SAAApT,EAAAC,GAA4C,IAAxC0U,EAAM3U,EAAN2U,OAAgB3U,EAARlD,SACvB6X,EAAO,gBAAiB,CAAEtB,QADkBpT,EAAPoT,QACF9F,MADgBtN,EAALsN,OAEhD,EACAgG,0BAAyB,SAAAnT,EAAcoT,IACrCmB,EADiCvU,EAANuU,QACpB,4BAA6BnB,EACtC,EACAE,mBAAkB,SAAArT,IAChBsU,EAD0BtU,EAANsU,QACb,qBACT,EACAf,kBAAiB,SAAAgB,GAA8B,IAA1BD,EAAMC,EAAND,OAAUtT,EAAKrC,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,OACrC2V,EAAO,oBAAqBtT,EAC9B,EACAsS,wBAAuB,SAAAkB,IACrBF,EAD+BE,EAANF,QAClB,0BACT,EACAG,4BAA2B,SAAAC,IACzBJ,EADmCI,EAANJ,QACtB,4BAA6B,KACtC,EACAK,qBAAoB,SAAAC,EAAc5T,GAAO,IAAjBsT,EAAMM,EAANN,OACtBA,EAAO,4BAA6BtT,GACpCsT,EAAO,oBAAqB,OAC9B,EACAb,iBAAgB,SAAAoB,EAAAC,GAOX,IANDR,EAAMO,EAANP,OAAQ7X,EAAQoY,EAARpY,SAAUC,EAAKmY,EAALnY,MAElBqY,EAAUD,EAAVC,WAAUC,EAAAF,EACVG,YAAAA,OAAW,IAAAD,EAAG,CAAC,EAACA,EAAAE,EAAAJ,EAChB9L,MAAAA,OAAK,IAAAkM,EAAG,QAAOA,EAAAC,EAAAL,EACfjY,QAAAA,OAAO,IAAAsY,EAAG,EAACA,EAObb,EAAO,mBALQ,CACbS,WAAAA,EACAE,YAAAA,EACAjM,MAAAA,IAKF,IAAMoM,EAAY1Y,EAAMiW,cAAcjW,EAAMiW,cAAclX,OAAS,GAInE,OAHIoB,GACFK,YAAW,kBAAMT,EAAS,qBAAsB2Y,EAAU,GAAEvY,GAEvDuY,CACT,EACAzB,mBAAkB,SAAA0B,EAAc3B,IAC9BY,EAD0Be,EAANf,QACb,qBAAsBZ,EAC/B,EACAE,gBAAe,SAAA0B,EAActU,IAC3BsT,EADuBgB,EAANhB,QACV,kBAAmBtT,EAC5B,EAEA6S,eAAc,SAAA0B,EAA6CvU,GAAO,IAAhDsT,EAAMiB,EAANjB,OAAQ5X,EAAK6Y,EAAL7Y,MAAO8Y,EAAWD,EAAXC,YAAatB,EAASqB,EAATrB,UACxCuB,EAAQzU,OACEuD,IAAVvD,EACFsT,EAAO,iBAAkBtT,GAEzByU,EAAQ/Y,EAAMoX,YAEhB,IACM4B,EADeD,GAAS,IACQ,SAAW,SAEzB,SADID,EAAYG,aAAhCC,iBAC2B1B,EAAUnW,MAAM8X,YAIjDvB,EAAO,gBADYmB,GAAS,KACS,OAASC,GAH9CpB,EAAO,gBAAiBoB,EAK5B,EACA3B,gBAAe,SAAA+B,EAAc9U,IAC3BsT,EADuBwB,EAANxB,QACV,kBAAmBtT,EAC5B,I,+pBC9JJ,IAAM+U,EAAyB,CAC7B,sBACA,kBACA,qBACA,iBACA,oBACA,aACA,UACA,UACA,SAGIC,EAAuB,WAK3B,IAJA,IAAMC,EAAQ,OAERC,EAAI,IAAIC,YAAY,GACpBC,EAAM,IAAI7W,MAAM8W,IACb9V,EAAI0V,EAAO1V,GAHR,SAGoBA,EAAG,CACjC,IAAM+V,EAAS5U,OAAO6U,cAAcL,EAAI3V,EAAI0V,GAC5CG,EAAI7V,EAAI0V,GAAS,CACfzX,YAAakD,OAAO6U,cAAchW,GAClCtE,UAAU,EACVE,YAAa,sBAAwBma,EACrCE,gBAAiB,CACf/L,IAAK,2BACLgM,KAAM,CAAEH,OAAAA,IAGd,CACA,OAAOF,CACT,CAlB6B,GAmIvBM,EAAkB,SAAC3F,GACvB,OAAO,QACgD,KAArD1V,QACiDyT,EAAAA,EAAAA,oBAAmBiC,GAAK,UAExEtX,MAAK,SAAAiC,GAAC,OAAIA,EAAC,OAAQ,GACxB,EAEMib,EAAoB,SAACpc,EAAOqc,GAChC,IAAMC,EAAiB5c,OAAOD,KAAK4c,GAEnC,OAAA1b,EAAAA,EAAA,GACKX,GAAK,IACRqc,YAAaC,EAAeC,QAAO,SAACC,EAAKC,GAEvC,OADAD,EAAIC,GAAOJ,EAAYI,GAAKzc,EAAMiE,aAC3BuY,CACT,GAAG,CAAC,IAER,EA+OA,QAxOiB,CACfra,MAvImB,CAEnBV,KAAM,aACNib,kBAAkB,EAClBC,OAAQ,yBACRC,UAAW,IACXC,eAAW7S,EACX8S,oBAAgB9S,EAGhB+S,wBAAwB,EACxBC,cAAe,kBACfC,cAAe,qBACfC,WAAY,8BACZC,4BAA4B,EAC5BlU,WAAW,EACXmU,WAAW,EACXC,mBAAoB,QACpBC,wBAAwB,EACxBC,uBAAuB,EACvBC,uBAAuB,EACvBC,qBAAqB,EACrBC,sBAAsB,EACtBC,sBAAsB,EAEtBC,gBAAgB,EAChBC,kBAAkB,EAClBC,uBAAuB,EACvBC,eAAe,EACfC,mBAAmB,EACnBC,cAAc,EACdC,eAAe,EACfC,iBAAiB,EACjBC,eAAe,EACfC,iBAAiB,EACjBC,cAAc,EACdC,aAAa,EACbC,eAAe,EACfC,eAAe,EACfC,sBAAsB,EACtBC,mBAAmB,EACnBC,gCAAgC,EAChCC,YAAa,WACbC,KAAM,mBACNC,WAAY,OACZC,UAAU,EACVC,UAAU,EACVC,2BAA2B,EAC3BC,mBAAmB,EACnBC,qBAAiBpV,EACjBqV,gBAAiB,aACjBC,kBAAmB,gBACnBC,oBAAqB,YACrBC,WAAW,EACXC,mBAAmB,EACnBC,2BAA2B,EAC3BC,cAAc,EACdC,oBAAqB,QACrBC,MAAO,eACPC,kBAAkB,EAClBC,oBAAoB,EACpBC,oBAAqB,SACrBC,0BAA0B,EAC1BC,+BAAgC,QAChCC,+BAA+B,EAC/BC,iBAAkB,EAClBC,oBAAoB,EAGpBC,YAAa,GACbC,oBAAoB,EACpBvgB,MAAO,CAAC,EACRwgB,cAAc,EACdC,wBAAyB,CAAC,EAC1BC,gBAAgB,EAChBC,YAAa,GACbC,oBAAqB,GACrBC,QAAQ,EACRC,aAAc,GACdC,kBAAkB,EAClBC,eAAgB,EAGhBC,gBAAgB,EAChBC,8BAA8B,EAC9BC,sCAAsC,EACtCC,iBAAiB,EACjBC,qBAAqB,EACrBC,oBAAoB,EACpBC,eAAgB,GAChBC,kBAAkB,EAGlBC,6BAA8B,GAC9BC,IAAK,GAGLC,eAAgB,GAChBC,gBAAiB,GAEjBC,gBAAgB,EAChBC,WAAY,CACVC,YAAa,EACbC,iBAAkB,IAClBC,eAAgB,GAChBC,eAAgB,QA+BlB3J,UAAW,CACT4J,kBAAiB,SAAEhgB,EAAKF,GAAmB,IAAfR,EAAIQ,EAAJR,KAAMgF,EAAKxE,EAALwE,WACX,IAAVA,IACTtE,EAAMV,GAAQgF,EAElB,EACA2b,gBAAe,SAAEjgB,EAAOkgB,GACtBlgB,EAAM2e,aAAeuB,CACvB,EACAC,2BAA0B,SAAEngB,EAAKW,GAAyB,IAArB0T,EAAI1T,EAAJ0T,KAAM6F,EAAWvZ,EAAXuZ,YACzCla,EAAMse,wBAAwBjK,GAAQ6F,CACxC,GAEFkG,QAAS,CACPC,sBAAqB,SAAErgB,GACrB,OAAOsgB,EAAAA,GAAAA,KACA,SAAAvS,GAAG,MAAI,CAACA,EAAK/N,EAAM+N,GAAK,IAC5BqM,QAAO,SAACC,EAAGpX,GAAA,IAAAC,GAAAF,EAAAA,EAAAA,GAAAC,EAAE,GAAC8K,EAAG7K,EAAA,GAAEoB,EAAKpB,EAAA,UAAA1E,EAAAA,EAAA,GAAY6b,GAAG,IAAAvI,EAAAA,EAAAA,GAAA,GAAG/D,EAAMzJ,GAAK,GAAK,CAAC,EAChE,EACAic,oBAAmB,SAAEvgB,GAqBnB,OAAOA,EAAMme,YACV/D,QAAO,SAACV,EAAK7b,GAYZ,OAjCY,SAAAA,GACd,IAAM2iB,EAAQ3iB,EAAM4iB,KACjBhiB,QAAO,SAAAO,GAAC,OAAIA,EAAEQ,WAAW,QAAQ,IACjChD,KAAI,SAAAwC,GACH,IAAM0hB,EAAW1hB,EAAEwC,MAAM,GACzB,MAAO,CACLpE,GAAI,UAAFuB,OAAY+hB,GACdjd,KAAMid,EAEV,IAEF,OAAKF,EAAMzhB,OAKFyhB,EAJA,CAAC,CACNpjB,GAAI,YAKV,CAIIujB,CAAQ9iB,GAAO+iB,SAAQ,SAAAvd,GAAoC,IAA7Bwd,EAAMxd,EAAVjG,GAAkBsjB,EAAQrd,EAAdI,KAC/BiW,EAAImH,KACPnH,EAAImH,GAAW,CACbzjB,GAAIyjB,EACJpd,KAAMid,EACNzR,MAAOpR,EAAM0B,SACbnB,OAAQ,KAGZsb,EAAImH,GAAQziB,OAAOsG,KAAK7G,EAC1B,IACO6b,CACT,GAAG,CAAC,EACR,EACAoH,kBAAiB,SAAE9gB,GACjB,OAAOqZ,EACJ7c,KAAI,SAAAukB,GAAO,OAAK/gB,EAAMnC,MAAMkjB,IAAY,IAAIvkB,KAAI,SAAAwC,GAAC,OAAIib,EAAkBjb,EAAGgB,EAAMse,wBAAwB,GAAC,IACzGlE,QAAO,SAACza,EAAGC,GAAC,OAAKD,EAAEhB,OAAOiB,EAAE,GAAE,GACnC,EACAohB,uBAAsB,SAAEhhB,GACtB,OAAOqZ,EAAuB7c,KAAI,SAAAukB,GAAO,MAAK,CAC5C3jB,GAAI2jB,EACJ3iB,QAAS4B,EAAMnC,MAAMkjB,IAAY,IAAIvkB,KAAI,SAAAwC,GAAC,OAAIib,EAAkBjb,EAAGgB,EAAMse,wBAAwB,IAClG,GACH,EACA2C,eAAc,SAAEjhB,GACd,OAAO,IAAIkhB,IAAIlhB,EAAMwa,QAAQ2G,QAC/B,EACAC,sBAAqB,SAAEphB,GACrB,IACMwF,GADSxF,EAAMwa,OAAO6G,SAAS,KAAOrhB,EAAMwa,OAAOhZ,MAAM,GAAI,GAAKxB,EAAMwa,QAjNrD,gBAoNzB,OAAO,SAAAlX,GAA4B,IAAzBge,EAAQhe,EAARge,SAAUC,EAAQje,EAARie,SAClB,OAAID,EACK,GAAP3iB,OAAU6G,EAAI,eAAA7G,OAAc2iB,GAErB,GAAP3iB,OAAU6G,EAAI,cAAA7G,OAAa4iB,EAE/B,CACF,GAEFjK,QAAS,CACP0I,kBAAiB,SAAAnI,EAAAC,GAAyC,IAArCF,EAAMC,EAAND,OAAQ7X,EAAQ8X,EAAR9X,SAAcT,EAAIwY,EAAJxY,KAAMgF,EAAKwT,EAALxT,MAE/C,OADAsT,EAAO,oBAAqB,CAAEtY,KAAAA,EAAMgF,MAAAA,IAC5BhF,GACN,IAAK,OACHS,EAAS,gBACT,MACF,IAAK,iBACCuE,GACFvE,EAAS,oBAEX,MACF,IAAK,QACHA,EAAS,WAAYuE,GAG3B,EACMkd,eAAc,SAAAxJ,GAAc,OAAApX,EAAAA,EAAAA,GAAAC,IAAAA,MAAA,SAAAC,IAAA,IAAA8W,EAAA1L,EAAArO,EAAA,OAAAgD,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAAJ,OAAN0W,EAAMI,EAANJ,OAAM5W,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEJ,qCAAiE,OAAjFgL,EAAMlL,EAAA4T,KAAA,QAEN/W,EAAQN,OAAOD,KAAK4O,GAAQkO,QAAO,SAACV,EAAKqH,GAM7C,OALArH,EAAIqH,GAAW7U,EAAO6U,GAASvkB,KAAI,SAAAQ,GAAC,MAAK,CACvCyC,YAAazC,EAAEykB,KACfliB,UAAU,EACVuC,YAAa9E,EAAEa,MAChB,IACM6b,CACT,GAAG,CAAC,GACJ9B,EAAO,oBAAqB,CAAEtY,KAAM,QAASgF,OAvHpBod,EAuHoD7jB,EAvH1C8jB,UACzCA,EAAAD,EAAOE,SAAQld,KAAItF,MAAAuiB,GAAAtiB,EAAAA,EAAAA,GAAIia,IAChBoI,KAqHqF1gB,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,EAAAD,EAAA8T,GAAA9T,EAAA,SAEtF6gB,QAAQC,KAAK,2BACbD,QAAQC,KAAI9gB,EAAA8T,IAAG,yBAAA9T,EAAAe,OA1HU,IAAA2f,EAAUC,CA0HpB,GAAA7gB,EAAA,iBAfeF,EAiBlC,EAEAmhB,qBAAoB,SAAA7J,EAAqBjE,GAAU,IAA3B2D,EAAMM,EAANN,OAAQ5X,EAAKkY,EAALlY,MACxBgiB,GAAW3P,EAAAA,EAAAA,qBAAoB4B,GAErC,OAAOpX,QAAQolB,IACbD,EACGxlB,IAAG,eAAA2b,GAAAvX,EAAAA,EAAAA,GAAAC,IAAAA,MAAC,SAAAqhB,EAAM7N,GAAI,IAAA6F,EAAA,OAAArZ,IAAAA,MAAA,SAAAshB,GAAA,cAAAA,EAAAlhB,KAAAkhB,EAAAjhB,MAAA,UACRlB,EAAMse,wBAAwBjK,GAAO,CAAF8N,EAAAjhB,KAAA,gBAAAihB,EAAAlhB,KAAA,EAAAkhB,EAAAjhB,KAAA,EAEV8Y,EAAgB3F,GAAK,OAAzC6F,EAAWiI,EAAAvN,KACjBgD,EAAO,6BAA8B,CAAEvD,KAAAA,EAAM6F,YAAAA,IAAciI,EAAAjhB,KAAA,gBAAAihB,EAAAlhB,KAAA,EAAAkhB,EAAArN,GAAAqN,EAAA,SAE3DN,QAAQC,KAAK,+CAADnjB,OAAgD0V,EAAI,MAAA8N,EAAArN,IAChE,yBAAAqN,EAAApgB,OAAA,GAAAmgB,EAAA,kBAGL,gBAAAlgB,GAAA,OAAAmW,EAAA/Y,MAAA,KAAA6C,UAAA,EAVG,IAWV,EAEMmgB,eAAc,SAAAhK,GAAqB,OAAAxX,EAAAA,EAAAA,GAAAC,IAAAA,MAAA,SAAAwhB,IAAA,IAAAzK,EAAA5X,EAAA0Z,EAAAtX,EAAA8J,EAAAoW,EAAAC,EAAAC,EAAA3kB,EAAA,OAAAgD,IAAAA,MAAA,SAAA4hB,GAAA,cAAAA,EAAAxhB,KAAAwhB,EAAAvhB,MAAA,OAAJ,OAAb0W,EAAMQ,EAANR,OAAQ5X,EAAKoY,EAALpY,MAAKyiB,EAAAxhB,KAAA,EAAAwhB,EAAAvhB,KAAA,EAEfyE,OAAOkK,MAAM,2BAA0B,OAAhD,KAAH6J,EAAG+I,EAAA7N,MACD8N,GAAI,CAAFD,EAAAvhB,KAAA,gBAAAuhB,EAAAvhB,KAAA,EACawY,EAAIiJ,OAAM,OAAzBvgB,EAAMqgB,EAAA7N,KACN1I,EAASrJ,MAAM2G,QAAQpH,GAAU7E,OAAOqlB,OAAMxjB,MAAb7B,OAAM,CAAQ,CAAC,GAACoB,QAAAU,EAAAA,EAAAA,GAAK+C,KAAUA,EAChEkgB,EAAwB,SAAC3iB,EAAGC,GAChC,IAAMijB,EAAKljB,EAAErB,cACPwkB,EAAKljB,EAAEtB,cACb,OAAOukB,EAAKC,EAAK,EAAKD,EAAKC,GAAM,EAAI,CACvC,EACMP,EAAa,SAAC5iB,EAAGC,GACrB,IAAMmjB,EAAc,KAANpjB,EACRqjB,EAAc,KAANpjB,EACd,OAAImjB,IAAUC,EACL,EACED,IAAUC,EACZ,GAEC,CAEZ,EACMR,EAAmB,SAAC7iB,EAAGC,GAC3B,IAAMqjB,EAAS,SAAAplB,GAAK,OAAKA,EAAM4iB,KAAKhiB,QAAO,SAAAO,GAAC,OAAIA,EAAEQ,WAAW,QAAQ,IAAE,IAAM,IAAIgC,MAAM,EAAE,EACnF0hB,EAAUD,EAAOtjB,GACjBwjB,EAAUF,EAAOrjB,GACvB,OAAO2iB,EAAWW,EAASC,IAAYb,EAAsBY,EAASC,IAAYb,EAAsB3iB,EAAEF,YAAaG,EAAEH,YAC3H,EAEM5B,EAAQN,OAAOkT,QAAQvE,GAAQ1P,KAAI,SAAAmc,GAAkB,IAAAC,GAAA5V,EAAAA,EAAAA,GAAA2V,EAAA,GAAhB5K,EAAG6K,EAAA,GAAEtU,EAAKsU,EAAA,GAC7CrZ,EAAW+E,EAAM8e,UACvB,MAAO,CACL3jB,YAAasO,EACbxO,SAAUA,EAAWS,EAAMwa,OAASjb,EAAW+E,EAC/Cmc,KAAMlhB,EAAW+E,EAAMmc,KAAK/gB,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAIC,EAAI,EAAI,CAAC,IAAI,CAAC,OAC7DkC,YAAa,IAAFnD,OAAMoP,EAAG,MAIxB,IAAGrO,KAAK8iB,GACR5K,EAAO,oBAAqB,CAAEtY,KAAM,cAAegF,MAAOzG,IAAQ4kB,EAAAvhB,KAAA,uBAE3DwY,EAAG,QAAA+I,EAAAvhB,KAAA,iBAAAuhB,EAAAxhB,KAAA,GAAAwhB,EAAA3N,GAAA2N,EAAA,SAGZZ,QAAQC,KAAK,4BACbD,QAAQC,KAAIW,EAAA3N,IAAG,yBAAA2N,EAAA1gB,OAAA,GAAAsgB,EAAA,kBA9CsBzhB,EAgDzC,EAEAyiB,SAAQ,SAAAxK,EAAyByK,GAAW,IAAhC1L,EAAMiB,EAANjB,OAAQJ,EAASqB,EAATrB,UAClBI,EAAO,oBAAqB,CAAEtY,KAAM,QAASgF,MAAOgf,KACpDC,EAAAA,EAAAA,IAAUD,GACPvmB,MAAK,SAAA2d,GAIJ,GAHA9C,EAAO,oBAAqB,CAAEtY,KAAM,YAAagF,MAAOoW,KAEhClD,EAAUgM,OAA1BC,YACR,CAGA,IAAMC,EAAchJ,EAAUiJ,QACzBjJ,EAAUgD,OAAUgG,GAAeA,EAAYE,qBAAuBC,EAAAA,IACzEC,EAAAA,EAAAA,IAAWJ,IAEXI,EAAAA,EAAAA,IAAWpJ,EAAUgD,MAPA,CASzB,GACJ,EACAqG,WAAU,SAAA3K,GAAuB,IAAnBrZ,EAAQqZ,EAARrZ,SAAUC,EAAKoZ,EAALpZ,MACjBA,EAAMoe,qBACTpe,EAAMoe,oBAAqB,EAC3Bre,EAAS,mBAENC,EAAMqe,eACTre,EAAMqe,cAAe,EACrBte,EAAS,kBAEb,EAEMikB,gBAAe,SAAAC,GAAyB,OAAArjB,EAAAA,EAAAA,GAAAC,IAAAA,MAAA,SAAAqjB,IAAA,IAAAtM,EAAAJ,EAAApV,EAAA,OAAAvB,IAAAA,MAAA,SAAAsjB,GAAA,cAAAA,EAAAljB,KAAAkjB,EAAAjjB,MAAA,OAAJ,OAAjB0W,EAAMqM,EAANrM,OAAQJ,EAASyM,EAATzM,UAAS2M,EAAAljB,KAAA,EAAAkjB,EAAAjjB,KAAA,EAEjBkjB,EAAAA,GAAAA,kBAA6B,CAChDC,YAAa7M,EAAUnW,MAAM8X,YAAYkL,cACzC,OAFIjiB,EAAM+hB,EAAAvP,KAGZgD,EAAO,kBAAmBxV,GAAO+hB,EAAAjjB,KAAA,gBAAAijB,EAAAljB,KAAA,EAAAkjB,EAAArP,GAAAqP,EAAA,SAEjCtC,QAAQC,KAAK,4BACbD,QAAQC,KAAIqC,EAAArP,IAAG,yBAAAqP,EAAApiB,OAAA,GAAAmiB,EAAA,iBAR2BtjB,EAU9C,I,k0BC7XJ,IAAM0jB,EAAU,WAAH,IAAIC,EAAMtiB,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,EAAC,MAAM,CAC/BuiB,SAAU,GACVC,eAAgB,CAAC,EACjBC,MAAO,GACPC,gBAAiB,GACjBC,sBAAuB,CAAC,EACxBC,eAAgB,EAChBC,MAAO,EACPC,MAAO,EACPC,aAAc,EACd1U,SAAS,EACT2U,UAAW,GACXC,QAAS,GACTX,OAAAA,EACAY,YAAa,EACd,EAEKC,EAAqB,WAAH,MAAU,CAChCC,4BAA4B,EAC5BP,MAAO,EACPC,MAAOO,OAAOC,kBACd7nB,KAAM,GACN8nB,QAAS,CAAC,EACVlV,SAAS,EACV,EAEYmV,EAAe,WAAH,MAAU,CACjCC,YAAa,GACbC,kBAAmB,CAAC,EACpBC,oBAAqB,CAAC,EACtBd,MAAO,EACPe,cAAeT,IACfU,UAAW,IAAI/d,IACfge,UAAW,CACTC,SAAU1B,IACV2B,OAAQ3B,IACRhjB,KAAMgjB,IACNwB,UAAWxB,IACX4B,MAAO5B,IACP6B,kBAAmB7B,IACnBY,QAASZ,IACTniB,IAAKmiB,IACL8B,IAAK9B,IACL+B,UAAW/B,IACXloB,KAAMkoB,KAET,EAYKgC,GAAa,SAAC9S,EAAK+S,EAAKtd,GAC5B,IAAMud,EAAUD,EAAItd,EAAK7L,IAEzB,OAAIopB,GAIFC,IAAMD,EAASE,IAAOzd,GAAM,SAAC9F,EAAGnE,GAAC,OAAW,OAANmE,GAAoB,SAANnE,CAAY,KAEhEwnB,EAAQG,YAAYC,OAAOJ,EAAQG,YAAY5nB,QACxC,CAAEkK,KAAMud,EAASK,KAAK,KApBJ,SAACC,GAE5BA,EAAOC,SAAU,EAGjBD,EAAOH,YAAcG,EAAOH,aAAe,EAG7C,CAeIK,CAAc/d,GACduK,EAAI9O,KAAKuE,GACTsd,EAAItd,EAAK7L,IAAM6L,EACR,CAAEA,KAAAA,EAAM4d,KAAK,GAExB,EAEMI,GAAW,SAACtnB,EAAGC,GACnB,IAAMsnB,EAAO5B,OAAO3lB,EAAEvC,IAChB+pB,EAAO7B,OAAO1lB,EAAExC,IAChBgqB,GAAU9B,OAAO+B,MAAMH,GACvBI,GAAUhC,OAAO+B,MAAMF,GAC7B,OAAIC,GAAUE,EACLJ,EAAOC,GAAQ,EAAI,EACjBC,IAAWE,EACb,GACGF,GAAUE,GAGb3nB,EAAEvC,GAAKwC,EAAExC,IAFR,EAEkB,CAE9B,EAEMmqB,GAAe,SAACC,GAIpB,OAHAA,EAAS7C,gBAAkB6C,EAAS7C,gBAAgBjlB,KAAKunB,IACzDO,EAAShD,SAAWgD,EAAShD,SAAS9kB,KAAKunB,IAC3CO,EAASxC,cAAgByC,IAAKD,EAAS7C,kBAAoB,CAAC,GAAGvnB,GACxDoqB,CACT,EAGME,GAA2B,SAAC1nB,EAAOtC,GACvC,IAAM0E,EAASkkB,GAAWtmB,EAAM0lB,YAAa1lB,EAAM2lB,kBAAmBjoB,GACtE,GAAI0E,EAAM,IAAM,CAEd,IAAM0kB,EAAS1kB,EAAO6G,KAChB2c,EAAsB5lB,EAAM4lB,oBAC5B+B,EAAiBb,EAAOc,0BAC1BhC,EAAoB+B,GACtB/B,EAAoB+B,GAAgBjjB,KAAKoiB,GAEzClB,EAAoB+B,GAAkB,CAACb,EAE3C,CACA,OAAO1kB,CACT,EA0LMylB,GAA8B,SAAC7nB,EAAO8nB,GAC1C9nB,EAAM6lB,cAAcf,MAAQgD,EAAa1qB,GAAK4C,EAAM6lB,cAAcf,MAC9DgD,EAAa1qB,GACb4C,EAAM6lB,cAAcf,MACxB9kB,EAAM6lB,cAAcd,MAAQ+C,EAAa1qB,GAAK4C,EAAM6lB,cAAcd,MAC9D+C,EAAa1qB,GACb4C,EAAM6lB,cAAcd,KAC1B,EAiDa3O,GAAY,CACvB2R,eAjOqB,SAAC/nB,EAAKW,GAA8G,IAA1G6jB,EAAQ7jB,EAAR6jB,SAAQwD,EAAArnB,EAAEsnB,gBAAAA,OAAe,IAAAD,GAAQA,EAAER,EAAQ7mB,EAAR6mB,SAAQU,EAAAvnB,EAAEW,KAAAA,OAAI,IAAA4mB,EAAG,CAAC,EAACA,EAAAC,EAAAxnB,EAAEynB,WAAAA,OAAU,IAAAD,GAAQA,EAAE5D,EAAM5jB,EAAN4jB,OAAM8D,EAAA1nB,EAAE2nB,WAAAA,OAAU,IAAAD,EAAG,CAAC,EAACA,EAElI,IAAKE,IAAQ/D,GACX,OAAO,EAGT,IAAMkB,EAAc1lB,EAAM0lB,YACpB8C,EAAiBxoB,EAAM+lB,UAAUyB,GAMjCiB,EAASH,EAAWxD,QAAUN,EAASzlB,OAAS,EAAI2pB,IAAMlE,EAAU,MAAMpnB,GAAK,GAC/EurB,EAASL,EAAWvD,QAAUP,EAASzlB,OAAS,EAAI6pB,IAAMpE,EAAU,MAAMpnB,GAAK,GAE/EyrB,EAAQrB,IAAamB,EAASH,EAAe1D,OAAkC,IAAzB0D,EAAe1D,QAAgBN,EAASzlB,OAAS,EACvG+pB,EAAQtB,IAAaiB,EAASD,EAAezD,OAAkC,IAAzByD,EAAezD,QAAgBP,EAASzlB,OAAS,EAY7G,IAVKqpB,GAAcS,IACjBL,EAAe1D,MAAQ6D,IAEpBP,GAAcU,IACjBN,EAAezD,MAAQ0D,GAMP,SAAbjB,GAAoC,UAAbA,GAAyBgB,EAAejE,SAAWA,EAA/E,CAIA,IAAMwE,EAAY,SAAZA,EAAarrB,EAAMuqB,GAA0C,IA4B7De,EA5BoCC,IAAahnB,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,KAAAA,UAAA,GAC/CG,EAASslB,GAAyB1nB,EAAOtC,GACzCopB,EAAS1kB,EAAO6G,KAEtB,GAAI7G,EAAM,IAAM,CAEd,GAAoB,WAAhB0kB,EAAO/hB,MAAqBmkB,IAAKpC,EAAOngB,WAAY,CAAEvJ,GAAIkE,EAAKlE,KAAO,CACxE,IAAM4oB,EAAWhmB,EAAM+lB,UAAUC,SAG7BwC,IAAmBxC,IACrBM,GAAWN,EAASxB,SAAUwB,EAASvB,eAAgBqC,GACvDd,EAASnB,gBAAkB,EAE3B0C,GAAavB,GAEjB,CACA,GAA0B,WAAtBc,EAAOqC,WAAyB,CAClC,IAAM/C,EAAMpmB,EAAM+lB,UAAUK,IAE5BE,GAAWF,EAAI5B,SAAU4B,EAAI3B,eAAgBqC,GAC7CV,EAAIvB,gBAAkB,EAEtB0C,GAAanB,EACf,CACF,CAsBA,OAjBIoB,GAAYyB,IACdD,EAA2B1C,GAAWkC,EAAehE,SAAUgE,EAAe/D,eAAgBqC,IAG5FU,GAAYS,EAGd3B,GAAWkC,EAAe7D,gBAAiB6D,EAAe5D,sBAAuBkC,GACxEU,GAAYyB,GAAiBD,EAAwB,MAE9DR,EAAe3D,gBAAkB,GAG/BiC,EAAOsC,OACTL,EAAUjC,EAAOsC,OAA+B,GAA6B,GAGxEtC,CACT,EAeMuC,EAAa,CACjBvC,OAAQ,SAACA,GACPiC,EAAUjC,EAAQmB,EACpB,EACAqB,KAAM,SAACxC,GACLiC,EAAUjC,EAAQmB,EACpB,EACAsB,QAAS,SAACzC,GAER,IAAM0C,EAAkBT,EAAUjC,EAAO2C,kBAAkB,GAAO,IAK9DjC,GAAY0B,IAAKV,EAAehE,UAAU,SAACrgB,GAC7C,OAAIA,EAAEslB,iBACGtlB,EAAE/G,KAAOosB,EAAgBpsB,IAAM+G,EAAEslB,iBAAiBrsB,KAAOosB,EAAgBpsB,GAEzE+G,EAAE/G,KAAOosB,EAAgBpsB,EAEpC,IAEY2rB,EAAUjC,GAAQ,GAAO,GAEzBiC,EAAUjC,EAAQmB,IAGtBwB,iBAAmBD,CAC7B,EACAE,SAAU,SAACA,GAGJ1pB,EAAM8lB,UAAUhd,IAAI4gB,EAAStsB,MAChC4C,EAAM8lB,UAAU6D,IAAID,EAAStsB,IA9CZ,SAACssB,EAAUE,GAChC,IAAM9C,EAASoC,IAAKxD,EAAa,CAAEtoB,GAAIssB,EAASG,wBAC5C/C,IAEE4C,EAASpoB,KAAKlE,KAAOkE,EAAKlE,GAC5B0pB,EAAOgD,WAAY,EAEnBhD,EAAOiD,UAAY,EAIzB,CAoCMC,CAAeN,GAEnB,EACAO,SAAU,SAACA,GACT,IAAMC,EAAMD,EAASC,IACfpD,EAASoC,IAAKxD,EAAa,CAAEwE,IAAAA,IAC9BpD,IAvJ2B,SAAC9mB,EAAO8mB,GAC5CqD,IAAOnqB,EAAM0lB,YAAa,CAAEtoB,GAAI0pB,EAAO1pB,KAKvC+sB,IAAOnqB,EAAM6lB,cAAcnoB,MAAM,SAAAoC,GAAe,OAAAA,EAAZsqB,OAAUhtB,KAAkB0pB,EAAO1pB,EAAE,IAGzE,IAAMuqB,EAAiBb,EAAOc,0BAC1B5nB,EAAM4lB,oBAAoB+B,IAC5BwC,IAAOnqB,EAAM4lB,oBAAoB+B,GAAiB,CAAEvqB,GAAI0pB,EAAO1pB,IAEnE,CA8IMitB,CAA8BrqB,EAAO8mB,GAEjCU,IACF2C,IAAO3B,EAAehE,SAAU,CAAE0F,IAAAA,IAClCC,IAAO3B,EAAe7D,gBAAiB,CAAEuF,IAAAA,KAE7C,EACAI,OAAQ,SAACA,GACP,EAEFplB,QAAS,SAACqlB,GACR1I,QAAQ2I,IAAI,uBACZ3I,QAAQ2I,IAAID,EACd,GAGFE,IAAKjG,GAAU,SAACsC,GACd,IAAM/hB,EAAO+hB,EAAO/hB,MACFskB,EAAWtkB,IAASskB,EAAU,SACtCvC,EACZ,IAGIU,GAA2B,cAAbA,GAChBD,GAAaiB,EArIf,CAuIF,EA4DEkC,oBAjD0B,SAAC1qB,EAAKiD,GAA4G,IAAxGlD,EAAQkD,EAARlD,SAAU8lB,EAAa5iB,EAAb4iB,cAA6D8E,GAAzC1nB,EAAL6lB,MAA+B7lB,EAAxB2nB,yBAAqC3nB,EAAX6V,YAAuC7V,EAA1B0nB,4BAC3GF,IAAK5E,GAAe,SAACiC,GAEnB,KAAK+C,EAAAA,EAAAA,IAAoB/C,GAGvB,OAFAjG,QAAQrR,MAAM,wBAAyBsX,QACvCD,GAA4B7nB,EAAO8nB,IAIjCgD,EAAAA,EAAAA,IAAqBhD,EAAa/iB,QACpC+iB,EAAasC,OAAS1C,GAAyB1nB,EAAO8nB,EAAasC,QAAQnhB,KAC3E6e,EAAahB,OAASgB,EAAahB,QAAUY,GAAyB1nB,EAAO8nB,EAAahB,QAAQ7d,MAG1E,mBAAtB6e,EAAa/iB,MACfhF,EAAS,YAAa+nB,EAAaiD,QAGX,2BAAtBjD,EAAa/iB,MACfhF,EAAS,wBAAyB+nB,EAAahB,OAAO1pB,IAKnD4C,EAAM6lB,cAAcL,QAAQwF,eAAelD,EAAa1qB,IAOlD0qB,EAAamD,OACtBjrB,EAAM6lB,cAAcL,QAAQsC,EAAa1qB,IAAI6tB,MAAO,IAPpDpD,GAA4B7nB,EAAO8nB,GAEnC9nB,EAAM6lB,cAAcnoB,KAAKgH,KAAKojB,GAC9B9nB,EAAM6lB,cAAcL,QAAQsC,EAAa1qB,IAAM0qB,EAE/C6C,EAA2B7C,GAI/B,GACF,EAeEoD,aAbmB,SAAClrB,EAAKkD,GAA2B,IAAvBskB,EAAQtkB,EAARskB,SAAUjD,EAAMrhB,EAANqhB,OACjCiE,EAAiBxoB,EAAM+lB,UAAUyB,GACnCjD,IACF4F,IAAO3B,EAAehE,SAAU,CAAEljB,KAAM,CAAElE,GAAImnB,KAC9C4F,IAAO3B,EAAe7D,gBAAiB,CAAErjB,KAAM,CAAElE,GAAImnB,KACrDiE,EAAexD,aAAewD,EAAe7D,gBAAgB5lB,OAAS,EAAI0oB,IAAKe,EAAe7D,iBAAiBvnB,GAAK,EACpHorB,EAAe1D,MAAQ0D,EAAehE,SAASzlB,OAAS,EAAIosB,IAAM3C,EAAehE,UAAUpnB,GAAK,EAEpG,EAMEguB,gBAAe,SAAEprB,EAAKqD,GAAgB,IAAZmkB,EAAQnkB,EAARmkB,SAClB6D,EAAerrB,EAAM+lB,UAAUyB,GAErC6D,EAAYxG,eAAiB,EAC7BwG,EAAY1G,gBAAkB2G,IAAMD,EAAY7G,SAAU,EAAG,IAC7D6G,EAAYrG,aAAeyC,IAAK4D,EAAY1G,iBAAiBvnB,GAC7DiuB,EAAYtG,MAAQsG,EAAYrG,aAChCqG,EAAYzG,sBAAwB,CAAC,EACrC6F,IAAKY,EAAY1G,iBAAiB,SAACmC,GAAauE,EAAYzG,sBAAsBkC,EAAO1pB,IAAM0pB,CAAO,GACxG,EACAyE,cAAa,SAAEvrB,GACb,IAAMwrB,EAAa/F,IACnBloB,OAAOkT,QAAQ+a,GAAY5K,SAAQ,SAAAtd,GAAkB,IAAAuU,GAAA7U,EAAAA,EAAAA,GAAAM,EAAA,GAAhByK,EAAG8J,EAAA,GAAEvT,EAAKuT,EAAA,GAC7C7X,EAAM+N,GAAOzJ,CACf,GACF,EACAmnB,cAAa,SAAEzrB,EAAK8X,GAAuC,IAAnC0P,EAAQ1P,EAAR0P,SAAQkE,EAAA5T,EAAE6T,cAC1BpH,OADuC,IAAAmH,GAAQA,EACtB1rB,EAAM+lB,UAAUyB,GAAUjD,YAAS1c,EAClE7H,EAAM+lB,UAAUyB,GAAYlD,EAAQC,EACtC,EACAqH,mBAAkB,SAAE5rB,GAClBA,EAAM6lB,cAAgBT,GACxB,EACAyG,aAAY,SAAE7rB,EAAKgY,GAAqB,IAAjB8O,EAAM9O,EAAN8O,OAAQxiB,EAAK0T,EAAL1T,MACvBwnB,EAAY9rB,EAAM2lB,kBAAkBmB,EAAO1pB,IAE7C0uB,EAAUhC,YAAcxlB,IACtBA,EACFwnB,EAAU/B,WAEV+B,EAAU/B,YAId+B,EAAUhC,UAAYxlB,CACxB,EACAynB,oBAAmB,SAAE/rB,EAAKkY,GAAoB,IAAhB4O,EAAM5O,EAAN4O,OAAQxlB,EAAI4W,EAAJ5W,KAC9BwqB,EAAY9rB,EAAM2lB,kBAAkBmB,EAAO1pB,IACjD0uB,EAAUhC,UAAYhD,EAAOgD,UAC7BgC,EAAU/B,SAAWjD,EAAOiD,SAC5B,IAAM7gB,EAAQ8iB,IAAUF,EAAUG,YAAa,CAAE7uB,GAAIkE,EAAKlE,MAC3C,IAAX8L,GAAiB4iB,EAAUhC,WAET,IAAX5gB,GAAgB4iB,EAAUhC,WACnCgC,EAAUG,YAAYvnB,KAAKpD,GAF3BwqB,EAAUG,YAAYrF,OAAO1d,EAAO,EAIxC,EACAgjB,eAAc,SAAElsB,EAAO8mB,GACrB,IAAMgF,EAAY9rB,EAAM2lB,kBAAkBmB,EAAO1pB,IACjD0uB,EAAUK,aAAerF,EAAOqF,kBAEDtkB,IAA3BikB,EAAUK,cACZnsB,EAAM4lB,oBAAoBkG,EAAUlE,2BAA2BhH,SAAQ,SAAAkG,GAAYA,EAAOqF,aAAeL,EAAUK,YAAa,GAEpI,EACAC,aAAY,SAAEpsB,EAAKmY,GAAqB,IAAjB2O,EAAM3O,EAAN2O,OAAQxiB,EAAK6T,EAAL7T,MACvBwnB,EAAY9rB,EAAM2lB,kBAAkBmB,EAAO1pB,IAE7C0uB,EAAUO,WAAa/nB,IACrBA,EACFwnB,EAAUQ,aAEVR,EAAUQ,cAIdR,EAAUO,SAAW/nB,CACvB,EACAioB,oBAAmB,SAAEvsB,EAAKoY,GAAoB,IAAhB0O,EAAM1O,EAAN0O,OAAQxlB,EAAI8W,EAAJ9W,KAC9BwqB,EAAY9rB,EAAM2lB,kBAAkBmB,EAAO1pB,IACjD0uB,EAAUO,SAAWvF,EAAOuF,SAC5BP,EAAUQ,WAAaxF,EAAOwF,WAC9B,IAAMpjB,EAAQ8iB,IAAUF,EAAUU,YAAa,CAAEpvB,GAAIkE,EAAKlE,MAC3C,IAAX8L,GAAiB4iB,EAAUO,UAET,IAAXnjB,GAAgB4iB,EAAUO,UACnCP,EAAUU,YAAY9nB,KAAKpD,GAF3BwqB,EAAUU,YAAY5F,OAAO1d,EAAO,EAIxC,EACAujB,cAAa,SAAEzsB,EAAK2Y,GAAqB,IAAjBmO,EAAMnO,EAANmO,OAAQxiB,EAAKqU,EAALrU,MACZtE,EAAM2lB,kBAAkBmB,EAAO1pB,IACvCsvB,WAAapoB,CACzB,EACAqoB,qBAAoB,SAAE3sB,EAAK4Y,GAAc,IAAVkO,EAAMlO,EAANkO,OACX9mB,EAAM2lB,kBAAkBmB,EAAO1pB,IACvCsvB,WAAa5F,EAAO4F,UAChC,EACAE,WAAU,SAAE5sB,EAAK6Y,GAAc,IAAViO,EAAMjO,EAANiO,OACbgF,EAAY9rB,EAAM2lB,kBAAkBmB,EAAO1pB,IAC7C0uB,IAAWA,EAAU/E,SAAU,EACrC,EACA8F,eAAc,SAAE7sB,EAAO8sB,GACrBvvB,OAAO2O,OAAOlM,EAAM2lB,mBAAmB/E,SAAQ,SAAAkG,GACzCgG,EAAUhG,KACZA,EAAOC,SAAU,EAErB,GACF,EACAgG,WAAU,SAAE/sB,EAAKoZ,GAAuB,IAAnBoO,EAAQpO,EAARoO,SAAUljB,EAAK8U,EAAL9U,MAC7BtE,EAAM+lB,UAAUyB,GAAUlX,QAAUhM,CACtC,EACA0oB,QAAO,SAAEhtB,EAAKikB,GAAgB,IAAZ7mB,EAAE6mB,EAAF7mB,GAAI6vB,EAAIhJ,EAAJgJ,KACFjtB,EAAM2lB,kBAAkBvoB,GAChC6vB,KAAOA,CACnB,EACAC,wBAAuB,SAAEltB,EAAKmtB,GAAa,IAAT7oB,EAAK6oB,EAAL7oB,MAChCtE,EAAM6lB,cAAcvV,QAAUhM,CAChC,EACA8oB,wBAAuB,SAAEptB,EAAKqtB,GAAa,IAAT/oB,EAAK+oB,EAAL/oB,MAChCtE,EAAM6lB,cAAcR,2BAA6B/gB,CACnD,EACAgpB,wBAAuB,SAAEttB,GACvByqB,IAAKzqB,EAAM6lB,cAAcnoB,MAAM,SAACoqB,GAC9BA,EAAamD,MAAO,CACtB,GACF,EACAsC,6BAA4B,SAAEvtB,EAAKwtB,GAAU,IAANpwB,EAAEowB,EAAFpwB,GAC/B0qB,EAAeoB,IAAKlpB,EAAM6lB,cAAcnoB,MAAM,SAAA0G,GAAC,OAAIA,EAAEhH,KAAOA,CAAE,IAChE0qB,IAAcA,EAAamD,MAAO,EACxC,EACAwC,oBAAmB,SAAEztB,EAAK0tB,GAAU,IAANtwB,EAAEswB,EAAFtwB,GAC5B4C,EAAM6lB,cAAcnoB,KAAOsC,EAAM6lB,cAAcnoB,KAAKe,QAAO,SAAA2F,GAAC,OAAIA,EAAEhH,KAAOA,CAAE,GAC7E,EACAuwB,qBAAoB,SAAE3tB,EAAK4tB,GAAc,IAAVC,EAAMD,EAANC,OAC7B7tB,EAAM6lB,cAAcnoB,KAAOsC,EAAM6lB,cAAcnoB,KAAKe,QAAO,SAAA2F,GAAC,OAAIypB,CAAM,GACxE,EACAC,mBAAkB,SAAE9tB,EAAK+tB,GAAmB,IAAf3wB,EAAE2wB,EAAF3wB,GAAI4wB,EAAOD,EAAPC,QACzBlG,EAAeoB,IAAKlpB,EAAM6lB,cAAcnoB,MAAM,SAAA0G,GAAC,OAAIA,EAAEhH,KAAOA,CAAE,IACpE0qB,GAAgBkG,EAAQlG,EAC1B,EACAmG,WAAU,SAAEjuB,EAAKkuB,GAAoB,IAAhB1G,EAAQ0G,EAAR1G,SAAUpqB,EAAE8wB,EAAF9wB,GAC7B4C,EAAM+lB,UAAUyB,GAAUrC,YAAc/nB,CAC1C,EACA+wB,cAAa,SAAEnuB,GACbzC,OAAOD,KAAK0C,EAAM+lB,WAAWnF,SAAQ,SAAC4G,GACpCxnB,EAAM+lB,UAAUyB,GAAUrC,YAAcnlB,EAAM+lB,UAAUyB,GAAU1C,KACpE,GACF,EACAsJ,WAAU,SAAEpuB,EAAKquB,GAAyC,IAArCjxB,EAAEixB,EAAFjxB,GAAIkxB,EAAgBD,EAAhBC,iBAAkBnV,EAAWkV,EAAXlV,YACnC2S,EAAY9rB,EAAM2lB,kBAAkBvoB,GAC1C0uB,EAAUU,YAAc8B,EAAiB7vB,QAAO,SAAA0O,GAAC,OAAIA,CAAC,IAEtD2e,EAAUQ,WAAaR,EAAUU,YAAYztB,OAC7C+sB,EAAUO,WAAaP,EAAUU,YAAY+B,MAAK,SAAAC,GAAA,IAAGpxB,EAAEoxB,EAAFpxB,GAAE,OAAO+b,EAAY/b,KAAOA,CAAE,GACrF,EACAqxB,QAAO,SAAEzuB,EAAK0uB,GAAyC,IAArCtxB,EAAEsxB,EAAFtxB,GAAIuxB,EAAgBD,EAAhBC,iBAAkBxV,EAAWuV,EAAXvV,YAChC2S,EAAY9rB,EAAM2lB,kBAAkBvoB,GAC1C0uB,EAAUG,YAAc0C,EAAiBlwB,QAAO,SAAA0O,GAAC,OAAIA,CAAC,IAEtD2e,EAAU/B,SAAW+B,EAAUG,YAAYltB,OAC3C+sB,EAAUhC,YAAcgC,EAAUG,YAAYsC,MAAK,SAAAK,GAAA,IAAGxxB,EAAEwxB,EAAFxxB,GAAE,OAAO+b,EAAY/b,KAAOA,CAAE,GACtF,EACAyxB,oBAAmB,SAAE7uB,EAAK8uB,GAAuC,IAAnC1xB,EAAE0xB,EAAF1xB,GAAI2xB,EAAcD,EAAdC,eAA2BD,EAAX3V,YACjCnZ,EAAM2lB,kBAAkBvoB,GAChC4xB,gBAAkBD,CAC3B,EACAE,eAAc,SAAEjvB,EAAKkvB,GAA8B,IAA1B9xB,EAAE8xB,EAAF9xB,GAAIS,EAAKqxB,EAALrxB,MAAOsb,EAAW+V,EAAX/V,YAC5B2N,EAAS9mB,EAAM2lB,kBAAkBvoB,GACjC+xB,EAAgBnD,IAAUlF,EAAOkI,gBAAiB,CAAE1vB,KAAMzB,IAC1DuxB,EAAWtI,EAAOkI,gBAAgBG,IAAkB,CAAE7vB,KAAMzB,EAAOwxB,MAAO,EAAGC,SAAU,IAEvFC,EAAW/wB,EAAAA,EAAA,GACZ4wB,GAAQ,IACXC,MAAOD,EAASC,MAAQ,EACxBG,IAAI,EACJF,SAAU,GAAF3wB,QAAAU,EAAAA,EAAAA,GACH+vB,EAASE,UAAQ,CACpBnW,MAKAgW,GAAiB,EACnBrI,EAAOkI,gBAAgBG,GAAiBI,EAExCzI,EAAOkI,gBAAkB,GAAHrwB,QAAAU,EAAAA,EAAAA,GAAOynB,EAAOkI,iBAAe,CAAEO,GAEzD,EACAE,kBAAiB,SAAEzvB,EAAK0vB,GAA8B,IAA1BtyB,EAAEsyB,EAAFtyB,GAAIS,EAAK6xB,EAAL7xB,MAAOsb,EAAWuW,EAAXvW,YAC/B2N,EAAS9mB,EAAM2lB,kBAAkBvoB,GACjC+xB,EAAgBnD,IAAUlF,EAAOkI,gBAAiB,CAAE1vB,KAAMzB,IAChE,KAAIsxB,EAAgB,GAApB,CAEA,IAAMC,EAAWtI,EAAOkI,gBAAgBG,GAClCG,EAAWF,EAASE,UAAY,GAEhCC,EAAW/wB,EAAAA,EAAA,GACZ4wB,GAAQ,IACXC,MAAOD,EAASC,MAAQ,EACxBG,IAAI,EACJF,SAAUA,EAAS7wB,QAAO,SAAA4b,GAAG,OAAIA,EAAIjd,KAAO+b,EAAY/b,EAAE,MAGxDmyB,EAAYF,MAAQ,EACtBvI,EAAOkI,gBAAgBG,GAAiBI,EAExCzI,EAAOkI,gBAAkBlI,EAAOkI,gBAAgBvwB,QAAO,SAAAkxB,GAAC,OAAIA,EAAErwB,OAASzB,CAAK,GAfjD,CAiB/B,EACA+xB,qBAAoB,SAAE5vB,EAAK6vB,GAAgB,IAAZzyB,EAAEyyB,EAAFzyB,GAAI0yB,EAAID,EAAJC,KAClB9vB,EAAM2lB,kBAAkBvoB,GAChC0yB,KAAOA,CAChB,EACAC,iBAAgB,SAAE/vB,EAAKgwB,GAAwB,IAApB1O,EAAQ0O,EAAR1O,SAAU9P,EAAMwe,EAANxe,OACnCxR,EAAM2lB,kBAAkBrE,GAAU2O,cAAgBze,CACpD,GAGIgT,GAAW,CACfxkB,MAAOylB,IACPnO,QAAS,CACPyQ,eAAc,SAAAmI,EAAAC,GAA0H,IAAtH3Y,EAAS0Y,EAAT1Y,UAAWI,EAAMsY,EAANtY,OAAY4M,EAAQ2L,EAAR3L,SAAQ4L,EAAAD,EAAElI,gBAAAA,OAAe,IAAAmI,GAAQA,EAAAC,EAAAF,EAAE3I,SAAAA,OAAQ,IAAA6I,GAAQA,EAAAC,EAAAH,EAAE/H,WAAAA,OAAU,IAAAkI,GAAQA,EAAE/L,EAAM4L,EAAN5L,OAAQ+D,EAAU6H,EAAV7H,WACxH1Q,EAAO,iBAAkB,CAAE4M,SAAAA,EAAUyD,gBAAAA,EAAiBT,SAAAA,EAAUY,WAAAA,EAAY9mB,KAAMkW,EAAUnW,MAAM8X,YAAaoL,OAAAA,EAAQ+D,WAAAA,GACzH,EACAoC,oBAAmB,SAAE3sB,EAAKwyB,GAA4B,IAAxB1K,EAAa0K,EAAb1K,cAAeiD,EAAKyH,EAALzH,OAM3ClR,EAL0C7Z,EAAlC6Z,QAKD,sBAAuB,CAAE7X,SALUhC,EAA1BgC,SAK0B8lB,cAAAA,EAAeiD,MAAAA,EAAOhQ,YALtB/a,EAAhB+a,YAKmD6R,2BAH1C,SAAC7C,IAClC0I,EAAAA,EAAAA,IAAsBzyB,EAAO+pB,EAC/B,GAEF,EACAoF,wBAAuB,SAAAuD,EAAAC,GAAaD,EAATjZ,WACzBI,EAD0C6Y,EAAN7Y,QAC7B,0BAA2B,CAAEtT,MADiBosB,EAALpsB,OAElD,EACA8oB,wBAAuB,SAAAuD,EAAAC,GAAaD,EAATnZ,WACzBI,EAD0C+Y,EAAN/Y,QAC7B,0BAA2B,CAAEtT,MADiBssB,EAALtsB,OAElD,EACAusB,YAAW,SAAAC,EAA2B1zB,GAAI,IAA3Boa,EAASsZ,EAATtZ,UAAWzX,EAAQ+wB,EAAR/wB,SACxB,OAAOyX,EAAUuZ,IAAIC,kBAAkBH,YAAY,CAAEzzB,GAAAA,IAClDL,MAAK,SAAC+pB,GAAM,OAAK/mB,EAAS,iBAAkB,CAAEykB,SAAU,CAACsC,IAAU,GACxE,EACAmK,kBAAiB,SAAAC,EAA2BpK,GAAQ,IAA/BtP,EAAS0Z,EAAT1Z,UACnB,OADsC0Z,EAARnxB,SACvBqkB,EAAAA,GAAAA,kBAA6B,CAAEhnB,GAAI0pB,EAAO1pB,GAAIinB,YAAa7M,EAAUnW,MAAM8X,YAAYkL,aAChG,EACA8M,mBAAkB,SAAAC,EAA2BtK,GAC3C,OAD6BsK,EAAT5Z,UAAmB4Z,EAARrxB,SACxBqkB,EAAAA,GAAAA,mBAA8B,CAAE0C,OAAAA,GACzC,EACAuK,aAAY,SAAAC,EAAmCxK,GAAQ,IAAvCtP,EAAS8Z,EAAT9Z,UAAWI,EAAM0Z,EAAN1Z,OAAQ7X,EAAQuxB,EAARvxB,SACjCqkB,EAAAA,GAAAA,aAAwB,CAAEhnB,GAAI0pB,EAAO1pB,GAAIinB,YAAa7M,EAAUnW,MAAM8X,YAAYkL,cAC/EtnB,MAAK,SAACoQ,GACLyK,EAAO,aAAc,CAAEkP,OAAAA,GACzB,IAAE,OACK,SAAC9pB,GACN+C,EAAS,mBAAoB,CAC3BuM,MAAO,QACP+L,WAAY,sBACZE,YAAa,CAACvb,EAAEu0B,SAChBpxB,QAAS,KAEb,GACJ,EACAqxB,iBAAgB,SAAAC,EAAyBr0B,GAAI,IAAzBoa,EAASia,EAATja,WAElBI,EAFmC6Z,EAAN7Z,QAEtB,aAAc,CAAEkP,OADRtP,EAAUgN,SAASmB,kBAAkBvoB,IAEtD,EACAs0B,sBAAqB,SAAAC,EAAc7E,IACjClV,EAD6B+Z,EAAN/Z,QAChB,iBAAkBkV,EAC3B,EACApD,SAAQ,SAAAkI,EAAyB9K,GAAQ,IAA7BtP,EAASoa,EAATpa,UAAWI,EAAMga,EAANha,OAErBA,EAAO,eAAgB,CAAEkP,OAAAA,EAAQxiB,OAAO,IACxCkT,EAAUuZ,IAAIC,kBAAkBtH,SAAS,CAAEtsB,GAAI0pB,EAAO1pB,KACnDL,MAAK,SAAA+pB,GAAM,OAAIlP,EAAO,sBAAuB,CAAEkP,OAAAA,EAAQxlB,KAAMkW,EAAUnW,MAAM8X,aAAc,GAChG,EACA0Y,WAAU,SAAAC,EAAyBhL,GAAQ,IAA7BtP,EAASsa,EAATta,UAAWI,EAAMka,EAANla,OAEvBA,EAAO,eAAgB,CAAEkP,OAAAA,EAAQxiB,OAAO,IACxCkT,EAAUuZ,IAAIC,kBAAkBa,WAAW,CAAEz0B,GAAI0pB,EAAO1pB,KACrDL,MAAK,SAAA+pB,GAAM,OAAIlP,EAAO,sBAAuB,CAAEkP,OAAAA,EAAQxlB,KAAMkW,EAAUnW,MAAM8X,aAAc,GAChG,EACA4Y,oBAAmB,SAAAC,EAA2BzN,GAAQ,IAA/B/M,EAASwa,EAATxa,UAAWzX,EAAQiyB,EAARjyB,SAChCyX,EAAUuZ,IAAIC,kBAAkBe,oBAAoB,CAAE30B,GAAImnB,IACvDxnB,MAAK,SAAAynB,GAAQ,OAAIzkB,EAAS,iBAAkB,CAAEykB,SAAAA,EAAUgD,SAAU,OAAQjD,OAAAA,EAAQ0D,iBAAiB,EAAMG,YAAY,GAAO,GACjI,EACA6J,UAAS,SAAAC,EAA2B5Q,GAAU,IAAjC9J,EAAS0a,EAAT1a,UAAWzX,EAAQmyB,EAARnyB,SACtB,OAAOyX,EAAUuZ,IAAIC,kBAAkBmB,aAAa,CAAE/0B,GAAIkkB,IACvDvkB,MAAK,SAAC+pB,GAAM,OAAK/mB,EAAS,iBAAkB,CAAEykB,SAAU,CAACsC,IAAU,GACxE,EACAsL,YAAW,SAAAC,EAA2B/Q,GAAU,IAAjC9J,EAAS6a,EAAT7a,UAAWzX,EAAQsyB,EAARtyB,SACxByX,EAAUuZ,IAAIC,kBAAkBsB,eAAe,CAAEl1B,GAAIkkB,IAClDvkB,MAAK,SAAC+pB,GAAM,OAAK/mB,EAAS,iBAAkB,CAAEykB,SAAU,CAACsC,IAAU,GACxE,EACAyL,iBAAgB,SAAAC,EAAyBlR,GAAU,IAA/B9J,EAASgb,EAAThb,UAAWI,EAAM4a,EAAN5a,OAC7B,OAAOJ,EAAUuZ,IAAIC,kBAAkBuB,iBAAiB,CAAEn1B,GAAIkkB,IAC3DvkB,MAAK,SAAC+pB,GAAM,OAAKlP,EAAO,iBAAkBkP,EAAO,GACtD,EACA2L,mBAAkB,SAAAC,EAAyBpR,GAAU,IAA/B9J,EAASkb,EAATlb,UAAWI,EAAM8a,EAAN9a,OAC/B,OAAOJ,EAAUuZ,IAAIC,kBAAkByB,mBAAmB,CAAEr1B,GAAIkkB,IAC7DvkB,MAAK,SAAC+pB,GAAM,OAAKlP,EAAO,iBAAkBkP,EAAO,GACtD,EACAyC,QAAO,SAAAoJ,EAAyB7L,GAAQ,IAA7BtP,EAASmb,EAATnb,UAAWI,EAAM+a,EAAN/a,OAEpBA,EAAO,eAAgB,CAAEkP,OAAAA,EAAQxiB,OAAO,IACxCkT,EAAUuZ,IAAIC,kBAAkBzH,QAAQ,CAAEnsB,GAAI0pB,EAAO1pB,KAClDL,MAAK,SAAA+pB,GAAM,OAAIlP,EAAO,sBAAuB,CAAEkP,OAAQA,EAAO2C,iBAAkBnoB,KAAMkW,EAAUnW,MAAM8X,aAAc,GACzH,EACAyZ,UAAS,SAAAC,EAAyB/L,GAAQ,IAA7BtP,EAASqb,EAATrb,UAAWI,EAAMib,EAANjb,OAEtBA,EAAO,eAAgB,CAAEkP,OAAAA,EAAQxiB,OAAO,IACxCkT,EAAUuZ,IAAIC,kBAAkB4B,UAAU,CAAEx1B,GAAI0pB,EAAO1pB,KACpDL,MAAK,SAAA+pB,GAAM,OAAIlP,EAAO,sBAAuB,CAAEkP,OAAAA,EAAQxlB,KAAMkW,EAAUnW,MAAM8X,aAAc,GAChG,EACA2Z,SAAQ,SAAAC,EAAyBjM,GAAQ,IAA7BtP,EAASub,EAATvb,UAAWI,EAAMmb,EAANnb,OACrBA,EAAO,gBAAiB,CAAEkP,OAAAA,EAAQxiB,OAAO,IACzCkT,EAAUuZ,IAAIC,kBAAkBgC,eAAe,CAAE51B,GAAI0pB,EAAO1pB,KACzDL,MAAK,SAAA+pB,GACJlP,EAAO,uBAAwB,CAAEkP,OAAAA,GACnC,GACJ,EACAmM,WAAU,SAAAC,EAAyBpM,GAAQ,IAA7BtP,EAAS0b,EAAT1b,UAAWI,EAAMsb,EAANtb,OACvBA,EAAO,gBAAiB,CAAEkP,OAAAA,EAAQxiB,OAAO,IACzCkT,EAAUuZ,IAAIC,kBAAkBmC,iBAAiB,CAAE/1B,GAAI0pB,EAAO1pB,KAC3DL,MAAK,SAAA+pB,GACJlP,EAAO,uBAAwB,CAAEkP,OAAAA,GACnC,GACJ,EACAmH,WAAU,SAAAmF,EAAAC,GAAaD,EAAT5b,WACZI,EAD6Bwb,EAANxb,QAChB,aAAc,CAAE4P,SADoB6L,EAAR7L,SACFpqB,GADci2B,EAAFj2B,IAE/C,EACA+wB,cAAa,SAAAmF,GAAaA,EAAT9b,WACfI,EADgC0b,EAAN1b,QACnB,gBACT,EACA0V,wBAAuB,SAAAiG,GAAyB,IAArB/b,EAAS+b,EAAT/b,WACzBI,EAD0C2b,EAAN3b,QAC7B,2BACPwM,EAAAA,GAAAA,wBAAmC,CACjChnB,GAAIoa,EAAUgN,SAASqB,cAAcf,MACrCT,YAAa7M,EAAUnW,MAAM8X,YAAYkL,aAE7C,EACAkJ,6BAA4B,SAAAiG,EAAAC,GAAiC,IAA7Bjc,EAASgc,EAAThc,UAAWI,EAAM4b,EAAN5b,OAAYxa,EAAEq2B,EAAFr2B,GACrDwa,EAAO,+BAAgC,CAAExa,GAAAA,IACzCgnB,EAAAA,GAAAA,wBAAmC,CACjCsP,QAAQ,EACRt2B,GAAAA,EACAinB,YAAa7M,EAAUnW,MAAM8X,YAAYkL,aAE7C,EACAsP,yBAAwB,SAAAC,EAAAC,GAAaD,EAATpc,WAC1BI,EAD2Cgc,EAANhc,QAC9B,sBAAuB,CAAExa,GADmBy2B,EAAFz2B,IAEnD,EACAqwB,oBAAmB,SAAAqG,EAAAC,GAAiC,IAA7Bvc,EAASsc,EAATtc,UAAWI,EAAMkc,EAANlc,OAAYxa,EAAE22B,EAAF32B,GAC5Cwa,EAAO,sBAAuB,CAAExa,GAAAA,IAChCoa,EAAUuZ,IAAIC,kBAAkBvD,oBAAoB,CAAErwB,GAAAA,GACxD,EACA0wB,mBAAkB,SAAAkG,EAAAC,GAAaD,EAATxc,WACpBI,EADqCoc,EAANpc,QACxB,qBAAsB,CAAExa,GADc62B,EAAF72B,GACR4wB,QADmBiG,EAAPjG,SAEjD,EACAkG,oBAAmB,SAAAC,EAAyB/2B,GAAI,IAAzBoa,EAAS2c,EAAT3c,UAAWI,EAAMuc,EAANvc,OAChC/a,QAAQolB,IAAI,CACVzK,EAAUuZ,IAAIC,kBAAkBoD,sBAAsB,CAAEh3B,GAAAA,IACxDoa,EAAUuZ,IAAIC,kBAAkBqD,sBAAsB,CAAEj3B,GAAAA,MACvDL,MAAK,SAAAu3B,GAA0C,IAAAC,GAAAvxB,EAAAA,EAAAA,GAAAsxB,EAAA,GAAxC3F,EAAgB4F,EAAA,GAAEjG,EAAgBiG,EAAA,GAC1C3c,EAAO,UAAW,CAAExa,GAAAA,EAAIuxB,iBAAAA,EAAkBxV,YAAa3B,EAAUnW,MAAM8X,cACvEvB,EAAO,aAAc,CAAExa,GAAAA,EAAIkxB,iBAAAA,EAAkBnV,YAAa3B,EAAUnW,MAAM8X,aAC5E,GACF,EACAqb,eAAc,SAAAC,EAAAC,GAAkD,IAA9Cld,EAASid,EAATjd,UAAWzX,EAAQ00B,EAAR10B,SAAU6X,EAAM6c,EAAN7c,OAAYxa,EAAEs3B,EAAFt3B,GAAIS,EAAK62B,EAAL72B,MAC/Csb,EAAc3B,EAAUnW,MAAM8X,YAC/BA,IAELvB,EAAO,iBAAkB,CAAExa,GAAAA,EAAIS,MAAAA,EAAOsb,YAAAA,IACtC3B,EAAUuZ,IAAIC,kBAAkBwD,eAAe,CAAEp3B,GAAAA,EAAIS,MAAAA,IAASd,MAC5D,SAAA2lB,GACE3iB,EAAS,wBAAyB3C,EACpC,IAEJ,EACAu3B,iBAAgB,SAAAC,EAAAC,GAAkD,IAA9Crd,EAASod,EAATpd,UAAWzX,EAAQ60B,EAAR70B,SAAU6X,EAAMgd,EAANhd,OAAYxa,EAAEy3B,EAAFz3B,GAAIS,EAAKg3B,EAALh3B,MACjDsb,EAAc3B,EAAUnW,MAAM8X,YAC/BA,IAELvB,EAAO,oBAAqB,CAAExa,GAAAA,EAAIS,MAAAA,EAAOsb,YAAAA,IACzC3B,EAAUuZ,IAAIC,kBAAkB2D,iBAAiB,CAAEv3B,GAAAA,EAAIS,MAAAA,IAASd,MAC9D,SAAA2lB,GACE3iB,EAAS,wBAAyB3C,EACpC,IAEJ,EACA03B,sBAAqB,SAAAC,EAAyB33B,GAAI,IAAzBoa,EAASud,EAATvd,UAAWI,EAAMmd,EAANnd,OAClC,OAAOJ,EAAUuZ,IAAIC,kBAAkBgE,oBAAoB,CAAE53B,GAAAA,IAAML,MACjE,SAAAgyB,GACEnX,EAAO,sBAAuB,CAAExa,GAAAA,EAAI2xB,eAAAA,EAAgB5V,YAAa3B,EAAUnW,MAAM8X,aACnF,GAEJ,EACA8b,UAAS,SAAAC,EAAyB93B,GAAI,IAAzBoa,EAAS0d,EAAT1d,UAAWI,EAAMsd,EAANtd,OACtBJ,EAAUuZ,IAAIC,kBAAkBoD,sBAAsB,CAAEh3B,GAAAA,IACrDL,MAAK,SAAA4xB,GAAgB,OAAI/W,EAAO,UAAW,CAAExa,GAAAA,EAAIuxB,iBAAAA,EAAkBxV,YAAa3B,EAAUnW,MAAM8X,aAAc,GACnH,EACAgc,aAAY,SAAAC,EAAyBh4B,GAAI,IAAzBoa,EAAS4d,EAAT5d,UAAWI,EAAMwd,EAANxd,OACzBJ,EAAUuZ,IAAIC,kBAAkBqD,sBAAsB,CAAEj3B,GAAAA,IACrDL,MAAK,SAAAuxB,GAAgB,OAAI1W,EAAO,aAAc,CAAExa,GAAAA,EAAIkxB,iBAAAA,EAAkBnV,YAAa3B,EAAUnW,MAAM8X,aAAc,GACtH,EACAkc,OAAM,SAAEt3B,EAAKu3B,GAAkD,IAA9CC,EAACD,EAADC,EAAGz4B,EAAOw4B,EAAPx4B,QAAS04B,EAAKF,EAALE,MAAOC,EAAMH,EAANG,OAAQC,EAASJ,EAATI,UAAW3wB,EAAIuwB,EAAJvwB,KACrD,OAAOhH,EAAMyZ,UAAUuZ,IAAIC,kBAAkB2E,QAAQ,CAAEJ,EAAAA,EAAGz4B,QAAAA,EAAS04B,MAAAA,EAAOC,OAAAA,EAAQC,UAAAA,EAAW3wB,KAAAA,IAC1FhI,MAAK,SAACW,GAIL,OAHAK,EAAM6Z,OAAO,cAAela,EAAK4xB,UACjCvxB,EAAM6Z,OAAO,cAAela,EAAK8mB,SAAShoB,KAAI,SAAA2H,GAAC,OAAIA,EAAE7C,IAAI,IAAE7C,QAAO,SAAAm3B,GAAC,OAAIA,CAAC,KACxE73B,EAAM6Z,OAAO,iBAAkB,CAAE4M,SAAU9mB,EAAK8mB,WACzC9mB,CACT,GACJ,EACAqyB,iBAAgB,SAAA8F,EAAAC,IACdle,EADwBie,EAANje,QACX,mBAAoB,CAAE0J,SADSwU,EAARxU,SACS9P,OADOskB,EAANtkB,QAE1C,GAEF4E,UAAAA,IAGF,YCvxBO,IAKMA,GAAY,CACvB2f,SAAQ,SAAE/1B,EAAOsE,GACftE,EAAMg2B,SAAW1xB,CACnB,EACA2xB,QAAO,SAAEj2B,EAAKF,GAAqB,IAAjBo2B,EAAMp2B,EAANo2B,OAAQxe,EAAK5X,EAAL4X,MACnB1X,EAAMm2B,eAAeD,KACxBl2B,EAAMm2B,eAAeD,GAAU,CAAEE,WAAY,KAE/Cp2B,EAAMm2B,eAAeD,GAAQxe,MAAQA,EAErC,IAAM2e,EAAQnN,IAAKlpB,EAAMg2B,SAAU,CAAE54B,GAAI84B,IACpCG,EAGHA,EAAM3e,MAAQA,EAFd1X,EAAMg2B,SAAStxB,KAAK,CAAEtH,GAAI84B,EAAQxe,MAAAA,GAItC,EACA4e,gBAAe,SAAEt2B,EAAKW,GAA0B,IAAtBu1B,EAAMv1B,EAANu1B,OAAQE,EAAUz1B,EAAVy1B,WAC3Bp2B,EAAMm2B,eAAeD,KACxBl2B,EAAMm2B,eAAeD,GAAU,CAAEE,WAAY,KAE/Cp2B,EAAMm2B,eAAeD,GAAQE,WAAaA,CAC5C,EACAG,eAAc,SAAEv2B,EAAKiD,GAAyB,IAArBizB,EAAMjzB,EAANizB,OAAQM,EAASvzB,EAATuzB,UAC1Bx2B,EAAMm2B,eAAeD,KACxBl2B,EAAMm2B,eAAeD,GAAU,CAAEE,WAAY,KAE/Cp2B,EAAMm2B,eAAeD,GAAQE,WAAW1xB,KAAK8xB,EAC/C,EACAC,kBAAiB,SAAEz2B,EAAKkD,GAAyB,IAArBgzB,EAAMhzB,EAANgzB,OAAQM,EAAStzB,EAATszB,UAC7Bx2B,EAAMm2B,eAAeD,KACxBl2B,EAAMm2B,eAAeD,GAAU,CAAEE,WAAY,KAE/C,IAAQA,EAAep2B,EAAMm2B,eAAeD,GAApCE,WACFM,EAAM,IAAI3uB,IAAIquB,GACpBM,EAAG,OAAQF,GACXx2B,EAAMm2B,eAAeD,GAAQE,YAAU/2B,EAAAA,EAAAA,GAAOq3B,EAChD,EACAC,WAAU,SAAE32B,EAAKqD,GAAc,IAAV6yB,EAAM7yB,EAAN6yB,cACZl2B,EAAMm2B,eAAeD,GAC5B/L,IAAOnqB,EAAMg2B,UAAU,SAAA55B,GAAI,OAAIA,EAAKgB,KAAO84B,CAAM,GACnD,GA0EIU,GAAQ,CACZ52B,MAzH0B,CAC1Bg2B,SAAU,GACVG,eAAgB,CAAC,GAwHjB/f,UAAAA,GACAkB,QA1Ec,CACdye,SAAQ,SAAAzyB,EAAcgB,IACpBsT,EADgBtU,EAANsU,QACH,WAAYtT,EACrB,EACAuyB,WAAU,SAAAhf,EAAAC,GAAoC,IAAhCN,EAASK,EAATL,UAAWI,EAAMC,EAAND,OAAYF,EAAKI,EAALJ,MACnC,OAAOF,EAAUuZ,IAAIC,kBAAkB6F,WAAW,CAAEnf,MAAAA,IACjD3a,MAAK,SAACX,GAEL,OADAwb,EAAO,UAAW,CAAEse,OAAQ95B,EAAKgB,GAAIsa,MAAAA,IAC9Btb,CACT,GACJ,EACA06B,UAAS,SAAA9e,EAAAE,GAAqC,IAAjCV,EAASQ,EAATR,UAAWI,EAAMI,EAANJ,OAAYse,EAAMhe,EAANge,OAClC,OAAO1e,EAAUuZ,IAAIC,kBAAkB+F,QAAQ,CAAEb,OAAAA,IAC9Cn5B,MAAK,SAACX,GAAI,OAAKwb,EAAO,UAAW,CAAEse,OAAQ95B,EAAKgB,GAAIsa,MAAOtb,EAAKsb,OAAQ,GAC7E,EACAsf,kBAAiB,SAAA7e,EAAAC,GAAqC,IAAjCZ,EAASW,EAATX,UAAWI,EAAMO,EAANP,OAAYse,EAAM9d,EAAN8d,OAC1C,OAAO1e,EAAUuZ,IAAIC,kBAAkBiG,gBAAgB,CAAEf,OAAAA,IACtDn5B,MAAK,SAACq5B,GAAU,OAAKxe,EAAO,kBAAmB,CAAEse,OAAAA,EAAQE,WAAAA,GAAa,GAC3E,EACAH,QAAO,SAAAtd,EAAAC,GAA4C,IAAxCpB,EAASmB,EAATnB,UAAWI,EAAMe,EAANf,OAAYse,EAAMtd,EAANsd,OAAQxe,EAAKkB,EAALlB,MACxCF,EAAUuZ,IAAIC,kBAAkBkG,WAAW,CAAEhB,OAAAA,EAAQxe,MAAAA,IACrDE,EAAO,UAAW,CAAEse,OAAAA,EAAQxe,MAAAA,GAC9B,EACA4e,gBAAe,SAAAzd,EAAAO,GAAiD,IAA7C5B,EAASqB,EAATrB,UAAWI,EAAMiB,EAANjB,OAAYse,EAAM9c,EAAN8c,OAAQE,EAAUhd,EAAVgd,WAC1Ce,EAAQ3f,EAAUof,MAAMT,eAAeD,GAAQE,YAAc,GAC7DgB,EAAQhB,EAAW33B,QAAO,SAAArB,GAAE,OAAK+5B,EAAM/1B,SAAShE,EAAG,IACnDi6B,EAAUF,EAAM14B,QAAO,SAAArB,GAAE,OAAKg5B,EAAWh1B,SAAShE,EAAG,IAC3Dwa,EAAO,kBAAmB,CAAEse,OAAAA,EAAQE,WAAAA,IAChCgB,EAAMr4B,OAAS,GACjByY,EAAUuZ,IAAIC,kBAAkBsG,kBAAkB,CAAEpB,OAAAA,EAAQE,WAAYgB,IAEtEC,EAAQt4B,OAAS,GACnByY,EAAUuZ,IAAIC,kBAAkBuG,uBAAuB,CAAErB,OAAAA,EAAQE,WAAYiB,GAEjF,EACAd,eAAc,SAAAtS,EAAAkJ,GAAgD,IAA5C3V,EAASyM,EAATzM,UAAWI,EAAMqM,EAANrM,OAAYse,EAAM/I,EAAN+I,OAAQM,EAASrJ,EAATqJ,UAC/C,OAAOhf,EACJuZ,IACAC,kBACAsG,kBAAkB,CAAEpB,OAAAA,EAAQE,WAAY,CAACI,KACzCz5B,MAAK,SAACqF,GAEL,OADAwV,EAAO,iBAAkB,CAAEse,OAAAA,EAAQM,UAAAA,IAC5Bp0B,CACT,GACJ,EACAq0B,kBAAiB,SAAApJ,EAAAG,GAAgD,IAA5ChW,EAAS6V,EAAT7V,UAAWI,EAAMyV,EAANzV,OAAYse,EAAM1I,EAAN0I,OAAQM,EAAShJ,EAATgJ,UAClD,OAAOhf,EACJuZ,IACAC,kBACAuG,uBAAuB,CAAErB,OAAAA,EAAQE,WAAY,CAACI,KAC9Cz5B,MAAK,SAACqF,GAEL,OADAwV,EAAO,oBAAqB,CAAEse,OAAAA,EAAQM,UAAAA,IAC/Bp0B,CACT,GACJ,EACAu0B,WAAU,SAAAjJ,EAAAE,GAAqC,IAAjCpW,EAASkW,EAATlW,UAAWI,EAAM8V,EAAN9V,OAAYse,EAAMtI,EAANsI,OACnC1e,EAAUuZ,IAAIC,kBAAkB2F,WAAW,CAAET,OAAAA,IAC7Cte,EAAO,aAAc,CAAEse,OAAAA,GACzB,GAiBA9V,QAdqB,CACrBoX,cAAe,SAAAx3B,GAAK,OAAI,SAAA5C,GACtB,GAAK4C,EAAMm2B,eAAe/4B,GAC1B,OAAO4C,EAAMm2B,eAAe/4B,GAAIsa,KAClC,CAAC,EACD+f,iBAAkB,SAAAz3B,GAAK,OAAI,SAAA5C,GACzB,OAAAiC,EAAAA,EAAAA,GAAWW,EAAMm2B,eAAe/4B,GAAIg5B,WACtC,CAAC,IAUH,Y,sKC/GMsB,GAAiB,SAAH/2B,GAWd,IAVJ5C,EAAK4C,EAAL5C,MACAsmB,EAAW1jB,EAAX0jB,YAAWsT,EAAAh3B,EACX6mB,SAAAA,OAAQ,IAAAmQ,EAAG,UAASA,EAAAC,EAAAj3B,EACpBmoB,MAAAA,OAAK,IAAA8O,GAAQA,EAAA5P,EAAArnB,EACbsnB,gBAAAA,OAAe,IAAAD,GAAQA,EAAA6P,EAAAl3B,EACvB4jB,OAAAA,OAAM,IAAAsT,GAAQA,EAAAC,EAAAn3B,EACdu1B,OAAAA,OAAM,IAAA4B,GAAQA,EAAAC,EAAAp3B,EACdwB,IAAAA,OAAG,IAAA41B,GAAQA,EACXC,EAAKr3B,EAALq3B,MACAC,EAAKt3B,EAALs3B,MAEMle,EAAO,CAAEyN,SAAAA,EAAUnD,YAAAA,GACnB7M,EAAYzZ,EAAMyZ,WAAazZ,EAAMiC,MACnCogB,EAAYriB,EAAZqiB,QACF8X,EAAe1gB,EAAUgN,SAASuB,UAAUoS,KAAU3Q,IAC5D4Q,EAA4ChY,EAAQnH,aAA5CwC,EAAc2c,EAAd3c,eAAgB4c,EAAeD,EAAfC,gBAClBC,IAAa9gB,EAAUnW,MAAM8X,YAE/B2P,EACF/O,EAAKie,MAAQA,GAASE,EAAanT,WAErBld,IAAVowB,EACFle,EAAKke,MAAQC,EAAapT,MACP,OAAVmT,IACTle,EAAKke,MAAQA,GAIjBle,EAAKwK,OAASA,EACdxK,EAAKmc,OAASA,EACdnc,EAAK5X,IAAMA,EACX4X,EAAKwe,WAAa9c,EACd6c,GAAY,CAAC,UAAW,SAAU,qBAAqBl3B,SAASomB,KAClEzN,EAAKse,gBAAkBA,GAGzB,IAAMG,EAAyBN,EAAa1T,SAASzlB,OAErD,OAAOqlB,EAAAA,GAAAA,cAAyBrK,GAC7Bhd,MAAK,SAAA07B,GACJ,GAAIA,EAASC,OACX,MAAM,IAAIz7B,MAAM,GAAD0B,OAAI85B,EAAS3R,OAAM,KAAAnoB,OAAI85B,EAASE,aAGjD,IAAcnU,EAAyBiU,EAA/B/6B,KAAgB4qB,EAAemQ,EAAfnQ,WAKxB,OAJKQ,GAAStE,EAASzlB,QAAU,KAAOm5B,EAAa5nB,SAAWkoB,EAAyB,GACvFz6B,EAAMgC,SAAS,aAAc,CAAEynB,SAAAA,EAAUpqB,GAAI86B,EAAapT,QA5DnD,SAAHhlB,GAAmF,IAA7E/B,EAAK+B,EAAL/B,MAAOymB,EAAQ1kB,EAAR0kB,SAAUgD,EAAQ1nB,EAAR0nB,SAAUS,EAAenoB,EAAfmoB,gBAAiB1D,EAAMzkB,EAANykB,OAAQ2R,EAAMp2B,EAANo2B,OAAQ5N,EAAUxoB,EAAVwoB,WACtEsQ,EAAaT,KAAU3Q,GAE7BzpB,EAAMgC,SAAS,iBAAkB,CAC/BynB,SAAUoR,EACVrU,OAAAA,EACA2R,OAAAA,EACA1R,SAAAA,EACAyD,gBAAAA,EACAK,WAAAA,GAEJ,CAmDMuQ,CAAO,CAAE96B,MAAAA,EAAOymB,SAAAA,EAAUgD,SAAAA,EAAUS,gBAAAA,EAAiB1D,OAAAA,EAAQ2R,OAAAA,EAAQ5N,WAAAA,IAC9D,CAAE9D,SAAAA,EAAU8D,WAAAA,EACrB,IAAE,OACK,SAAC9X,GACNzS,EAAMgC,SAAS,mBAAoB,CACjCuM,MAAO,QACP+L,WAAY,iBACZE,YAAa,CAAC/H,EAAM+gB,SACpBpxB,QAAS,KAEb,GACJ,EAaM24B,GAAkB,CACtBpB,eAAAA,GACAqB,cAboB,SAAH91B,GAAkG,IAAA+1B,EAAA/1B,EAA5FukB,SAAAA,OAAQ,IAAAwR,EAAG,UAASA,EAAE3U,EAAWphB,EAAXohB,YAAatmB,EAAKkF,EAALlF,MAAKk7B,EAAAh2B,EAAEshB,OAAAA,OAAM,IAAA0U,GAAQA,EAAAC,EAAAj2B,EAAEizB,OAAAA,OAAM,IAAAgD,GAAQA,EAAAC,EAAAl2B,EAAEd,IAAAA,OAAG,IAAAg3B,GAAQA,EAEtGjB,GADYn6B,EAAMyZ,WAAazZ,EAAMiC,OACZwkB,SAASuB,UAAUoS,KAAU3Q,IACtDS,EAA0D,IAAxCiQ,EAAavT,gBAAgB5lB,OAMrD,OALAm5B,EAAa3T,OAASA,EACtB2T,EAAahC,OAASA,EACtBwB,GAAe,CAAElQ,SAAAA,EAAUnD,YAAAA,EAAatmB,MAAAA,EAAOkqB,gBAAAA,EAAiB1D,OAAAA,EAAQ2R,OAAAA,EAAQ/zB,IAAAA,KAGzEi3B,EAAAA,GAAAA,IAFqB,WAAH,OACvB1B,GAAe,CAAElQ,SAAAA,EAAUnD,YAAAA,EAAatmB,MAAAA,EAAOwmB,OAAAA,EAAQ2R,OAAAA,EAAQ/zB,IAAAA,GAAM,GAC3B,IAC9C,GAMA,Y,gBC1EA,SAVsB,SAAHxB,GAA+B,IAAzB0jB,EAAW1jB,EAAX0jB,YAAatmB,EAAK4C,EAAL5C,MAC9Bs7B,EAAsB,WAAH,OAVJ,SAAHv5B,GAA+B,IAAzB/B,EAAK+B,EAAL/B,MAAOsmB,EAAWvkB,EAAXukB,YAC/B,OAAOD,EAAAA,GAAAA,oBAA+B,CAAEC,YAAAA,IACrCtnB,MAAK,SAACu8B,GACLv7B,EAAM6Z,OAAO,oBAAqB0hB,GAClCv7B,EAAM6Z,OAAO,cAAe0hB,EAC9B,IAAG,WAAO,IAAE,OACL,WAAO,GAClB,CAGoC5B,CAAe,CAAErT,YAAAA,EAAatmB,MAAAA,GAAQ,EAExE,OADAs7B,KACOD,EAAAA,GAAAA,GAAgBC,EAAqB,IAC9C,ECbA,IAcME,GAAe,CACnBR,cAPoB,SAAHp4B,GAA+B,IAAzB0jB,EAAW1jB,EAAX0jB,YAAatmB,EAAK4C,EAAL5C,MAC9Bs7B,EAAsB,WAAH,OATJ,SAAHv5B,GAA+B,IAAzB/B,EAAK+B,EAAL/B,MAAOsmB,EAAWvkB,EAAXukB,YAC/B,OAAOD,EAAAA,GAAAA,WAAsB,CAAEC,YAAAA,IAC5BtnB,MAAK,SAAA65B,GACJ74B,EAAM6Z,OAAO,WAAYgf,EAC3B,IAAG,WAAO,IAAE,OACL,WAAO,GAClB,CAGoCc,CAAe,CAAErT,YAAAA,EAAatmB,MAAAA,GAAQ,EAExE,OADAs7B,KACOD,EAAAA,GAAAA,GAAgBC,EAAqB,KAC9C,GAMA,Y,ykBC0BA,SAzCiC,SAAAhV,GAAW,OAAA7lB,GAAAA,GAAA,CAC1Cg7B,sBAAqB,SAAA15B,GAA4D,IAAxD0nB,EAAQ1nB,EAAR0nB,SAAUzpB,EAAK+B,EAAL/B,MAAK07B,EAAA35B,EAAEykB,OAAAA,OAAM,IAAAkV,GAAQA,EAAAC,EAAA55B,EAAEo2B,OAAAA,OAAM,IAAAwD,GAAQA,EAAEv3B,EAAGrC,EAAHqC,IACxE,OAAO22B,GAAAA,cAA8B,CAAEtR,SAAAA,EAAUzpB,MAAAA,EAAOsmB,YAAAA,EAAaE,OAAAA,EAAQ2R,OAAAA,EAAQ/zB,IAAAA,GACvF,EAEAw3B,cAAa,SAAE5f,GACb,OAAO+e,GAAAA,eAA8Bt6B,GAAAA,GAAC,CAAC,EAAIub,GAAI,IAAEsK,YAAAA,IACnD,EAEAuV,2BAA0B,SAAAj5B,GAAa,IAAT5C,EAAK4C,EAAL5C,MAC5B,OAAO87B,GAAAA,EAAAA,cAAmC,CAAE97B,MAAAA,EAAOsmB,YAAAA,GACrD,EAEAyV,mBAAkB,SAAE/f,GAClB,OAAO8f,GAAAA,EAAAA,eAAmCr7B,GAAAA,GAAC,CAAC,EAAIub,GAAI,IAAEsK,YAAAA,IACxD,EAEA0V,4BAA2B,SAAA92B,GAAa,IAATlF,EAAKkF,EAALlF,MAC7B,OAAOi8B,GAAmC,CAAEj8B,MAAAA,EAAOsmB,YAAAA,GACrD,EAEA4V,mBAAkB,SAAA/2B,GAAa,IAATnF,EAAKmF,EAALnF,MACpB,OAAOw7B,GAAAA,cAA2B,CAAEx7B,MAAAA,EAAOsmB,YAAAA,GAC7C,EAEA6V,gBAAe,SAAA72B,GAAa,IAEpBwB,EAFgBxB,EAALtF,MACEyZ,UAAUG,SAAS6C,OAAO/X,QAAQ,OAAQ,OAC1C03B,EAAAA,EAAAA,IAAqB,CAAE9V,YAAAA,EAAa+V,OAAQ,SAC/D,OAAOC,EAAAA,EAAAA,IAAY,CAAEx1B,IAAAA,EAAKzH,GAAI,QAChC,GAEGG,OAAOkT,QAAQ2T,EAAAA,IAAYhK,QAAO,SAACC,EAAG/W,GAAkB,IAAAuU,GAAA7U,EAAAA,EAAAA,GAAAM,EAAA,GAAfyK,EAAG8J,EAAA,GAAEyiB,EAAIziB,EAAA,GACnD,OAAArZ,GAAAA,GAAA,GACK6b,GAAG,IAAAvI,EAAAA,EAAAA,GAAA,GACL/D,GAAM,SAACgM,GAAI,OAAKugB,EAAI97B,GAAC,CAAE6lB,YAAAA,GAAgBtK,GAAO,IAEnD,GAAG,CAAC,IAAE,IAENwgB,kBAAmBnW,EAAAA,GAAAA,mBAA4B,EC3C1C,IAAMoW,GAAc,WAAH,OACtB70B,OAAO80B,YACPppB,SAASqpB,gBAAgBC,aACzBtpB,SAASC,KAAKqpB,WAAW,EAEdC,GAAe,WAAH,OACvBj1B,OAAOiM,aACPP,SAASqpB,gBAAgBG,cACzBxpB,SAASC,KAAKupB,YAAY,E,uBCPtBC,GAAe,GAAHn8B,OAAMgH,OAAOo1B,SAASC,OAAM,mBAEjCC,GAAiB,SAAHn7B,GAAqD,IAA/Co7B,EAAQp7B,EAARo7B,SAAUC,EAAYr7B,EAAZq7B,aAAcxjB,EAAQ7X,EAAR6X,SAAUC,EAAM9X,EAAN8X,OACjE,GAAIsjB,GAAYC,EACd,OAAOt+B,QAAQC,QAAQ,CAAEo+B,SAAAA,EAAUC,aAAAA,IAGrC,IAAMt2B,EAAM,GAAHlG,OAAMgZ,EAAQ,gBACjByjB,EAAO,IAAIz1B,OAAO01B,SAMxB,OAJAD,EAAKE,OAAO,cAAe,aAAF38B,OAAegH,OAAO41B,yBAAwB,KAAA58B,QAAK,IAAI68B,MAAQC,gBACxFL,EAAKE,OAAO,gBAAiBR,IAC7BM,EAAKE,OAAO,SAAU,gCAEf31B,OAAOkK,MAAMhL,EAAK,CACvB62B,OAAQ,OACRpqB,KAAM8pB,IAELr+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAAC4+B,GAAG,MAAM,CAAET,SAAUS,EAAIC,UAAWT,aAAcQ,EAAIE,cAAe,IAC3E9+B,MAAK,SAAC4+B,GAAG,OAAK/jB,EAAO,gBAAiB+jB,IAAQA,CAAG,GACtD,EA0DaG,GAAiB,SAAHz4B,GAA6C,IAAvC63B,EAAQ73B,EAAR63B,SAAUC,EAAY93B,EAAZ83B,aAAcxjB,EAAQtU,EAARsU,SACjD9S,EAAM,GAAHlG,OAAMgZ,EAAQ,gBACjByjB,EAAO,IAAIz1B,OAAO01B,SAOxB,OALAD,EAAKE,OAAO,YAAaJ,GACzBE,EAAKE,OAAO,gBAAiBH,GAC7BC,EAAKE,OAAO,aAAc,sBAC1BF,EAAKE,OAAO,eAAgB,GAAF38B,OAAKgH,OAAOo1B,SAASC,OAAM,oBAE9Cr1B,OAAOkK,MAAMhL,EAAK,CACvB62B,OAAQ,OACRpqB,KAAM8pB,IACLr+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EA+CMoZ,GAAQ,CACZC,MArHY,SAAHr7B,GAA+B,IAAzBgX,EAAQhX,EAARgX,SACTja,EAAO,CACXu+B,cAAe,OACfL,UAH+Bj7B,EAARu6B,SAIvBgB,aAAcpB,GACdqB,MAAO,gCAGHC,EAAaC,KAAO3+B,GAAM,SAAC2c,EAAKlX,EAAGnE,GACvC,IAAMs9B,EAAU,GAAH39B,OAAMK,EAAC,KAAAL,OAAI49B,mBAAmBp5B,IAC3C,OAAKkX,EAGI,GAAP1b,OAAU0b,EAAG,KAAA1b,OAAI29B,GAFVA,CAIX,IAAG,GAGGz3B,EAAM,GAAHlG,OAAMgZ,EAAQ,qBAAAhZ,OAAoBy9B,GAE3Cz2B,OAAOo1B,SAAS/0B,KAAOnB,CACzB,EAiGE23B,SA/Ee,SAAHt5B,GAAmD,IAA7Cg4B,EAAQh4B,EAARg4B,SAAUC,EAAYj4B,EAAZi4B,aAAcxjB,EAAQzU,EAARyU,SAAUza,EAAIgG,EAAJhG,KAC9C2H,EAAM,GAAHlG,OAAMgZ,EAAQ,gBACjByjB,EAAO,IAAIz1B,OAAO01B,SAQxB,OANAD,EAAKE,OAAO,YAAaJ,GACzBE,EAAKE,OAAO,gBAAiBH,GAC7BC,EAAKE,OAAO,aAAc,sBAC1BF,EAAKE,OAAO,OAAQp+B,GACpBk+B,EAAKE,OAAO,eAAgB,GAAF38B,OAAKgH,OAAOo1B,SAASC,OAAM,oBAE9Cr1B,OAAOkK,MAAMhL,EAAK,CACvB62B,OAAQ,OACRpqB,KAAM8pB,IAELr+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAiEE8Z,wBAhG8B,SAAHx5B,GAAiE,IAA3Di4B,EAAQj4B,EAARi4B,SAAUC,EAAYl4B,EAAZk4B,aAAcxjB,EAAQ1U,EAAR0U,SAAU+kB,EAAQz5B,EAARy5B,SAAUC,EAAQ15B,EAAR05B,SACvE93B,EAAM,GAAHlG,OAAMgZ,EAAQ,gBACjByjB,EAAO,IAAIz1B,OAAO01B,SAQxB,OANAD,EAAKE,OAAO,YAAaJ,GACzBE,EAAKE,OAAO,gBAAiBH,GAC7BC,EAAKE,OAAO,aAAc,YAC1BF,EAAKE,OAAO,WAAYoB,GACxBtB,EAAKE,OAAO,WAAYqB,GAEjBh3B,OAAOkK,MAAMhL,EAAK,CACvB62B,OAAQ,OACRpqB,KAAM8pB,IACLr+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAmFEsY,eAAAA,GACA2B,cAnDoB,SAAHt5B,GAA0C,IAApCq4B,EAAGr4B,EAAHq4B,IAAKhkB,EAAQrU,EAARqU,SAAUklB,EAAQv5B,EAARu5B,SAAU3/B,EAAIoG,EAAJpG,KAC1C2H,EAAM,GAAHlG,OAAMgZ,EAAQ,wBACjByjB,EAAO,IAAIz1B,OAAO01B,SAQxB,OANAD,EAAKE,OAAO,YAAaK,EAAIC,WAC7BR,EAAKE,OAAO,gBAAiBK,EAAIE,eACjCT,EAAKE,OAAO,YAAauB,GACzBzB,EAAKE,OAAO,OAAQp+B,GACpBk+B,EAAKE,OAAO,iBAAkB,QAEvB31B,OAAOkK,MAAMhL,EAAK,CACvB62B,OAAQ,OACRpqB,KAAM8pB,IACLr+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAsCEma,mBApCyB,SAAHjlB,GAA0C,IAApC8jB,EAAG9jB,EAAH8jB,IAAKhkB,EAAQE,EAARF,SAAUklB,EAAQhlB,EAARglB,SAAU3/B,EAAI2a,EAAJ3a,KAC/C2H,EAAM,GAAHlG,OAAMgZ,EAAQ,wBACjByjB,EAAO,IAAIz1B,OAAO01B,SAQxB,OANAD,EAAKE,OAAO,YAAaK,EAAIC,WAC7BR,EAAKE,OAAO,gBAAiBK,EAAIE,eACjCT,EAAKE,OAAO,YAAauB,GACzBzB,EAAKE,OAAO,OAAQp+B,GACpBk+B,EAAKE,OAAO,iBAAkB,YAEvB31B,OAAOkK,MAAMhL,EAAK,CACvB62B,OAAQ,OACRpqB,KAAM8pB,IACLr+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAuBEoa,YArBkB,SAAHjlB,GAAiC,IAA3B6jB,EAAG7jB,EAAH6jB,IAAKhkB,EAAQG,EAARH,SAAUqlB,EAAKllB,EAALklB,MAC9Bn4B,EAAM,GAAHlG,OAAMgZ,EAAQ,iBACjByjB,EAAO,IAAIz1B,OAAO01B,SAMxB,OAJAD,EAAKE,OAAO,YAAaK,EAAIT,UAC7BE,EAAKE,OAAO,gBAAiBK,EAAIR,cACjCC,EAAKE,OAAO,QAAS0B,GAEdr3B,OAAOkK,MAAMhL,EAAK,CACvB62B,OAAQ,OACRpqB,KAAM8pB,IACLr+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,GAYA,Y,2BC3IA,SAASsa,KACP,MAAO,kBAAmBC,WAAa,gBAAiBv3B,MAC1D,CAEA,SAASw3B,KACP,OAAOC,KAAAA,WAAkB,OAChB,SAAC54B,GAAG,OAAKqd,QAAQrR,MAAM,4CAA6ChM,EAAI,GACnF,CAqBA,SAAS64B,GAA+BL,GACtC,OAAOr3B,OAAOkK,MAAM,6BAA8B,CAChD6rB,OAAQ,SACR4B,QAAS,CACP,eAAgB,mBAChBC,cAAe,UAAF5+B,OAAYq+B,MAE1BjgC,MAAK,SAAC07B,GACP,IAAKA,EAAS/V,GAAI,MAAM,IAAIzlB,MAAM,gCAClC,OAAOw7B,CACT,GACF,C,ykBC5CO,IAeD+E,GAAmB,SAAnBA,EAAoBC,EAAUC,GAClC,GAAInV,IAAQkV,IAAalV,IAAQmV,GAE/B,OADAD,EAAS1+B,OAAS2+B,EAAS3+B,OACpB4+B,KAAUF,EAAUC,EAAUF,EAEzC,EAUMI,GAAY,SAAC7/B,EAAOX,GACxB,OAAOW,EAAMyZ,UAAUuZ,IAAIC,kBAAkB4M,UAAU,CAAExgC,GAAAA,IACtDL,MAAK,SAAC8gC,GACL9/B,EAAM6Z,OAAO,yBAA0B,CAACimB,IACxC9/B,EAAM6Z,OAAO,aAAcxa,GAC3BW,EAAM6Z,OAAO,eAAgB,CAAE4P,SAAU,UAAWjD,OAAQnnB,IAC5DW,EAAM6Z,OAAO,eAAgB,CAAE4P,SAAU,SAAUjD,OAAQnnB,IAC3DW,EAAM6Z,OAAO,eAAgB,CAAE4P,SAAU,oBAAqBjD,OAAQnnB,GACxE,GACJ,EAEM0gC,GAAc,SAAC//B,EAAOX,GAC1B,OAAOW,EAAMyZ,UAAUuZ,IAAIC,kBAAkB8M,YAAY,CAAE1gC,GAAAA,IACxDL,MAAK,SAAC8gC,GAAY,OAAK9/B,EAAM6Z,OAAO,yBAA0B,CAACimB,GAAc,GAClF,EAYME,GAAW,SAAChgC,EAAOgc,GACvB,IAAM3c,EAAqB,YAAhB4gC,EAAAA,GAAAA,GAAOjkB,GAAoBA,EAAK3c,GAAK2c,EAC1CkkB,EAA4B,YAAhBD,EAAAA,GAAAA,GAAOjkB,GAAoBA,EAAKkkB,UAAY,EAExDC,EAAwBngC,EAAMiC,MAAMm+B,cAAc/gC,IAAO,CAAEA,GAAAA,GAKjE,OAJA8gC,EAAsBE,QAAS,EAC/BrgC,EAAM6Z,OAAO,yBAA0B,CAACsmB,IACxCngC,EAAM6Z,OAAO,YAAaxa,GAEnBW,EAAMyZ,UAAUuZ,IAAIC,kBAAkB+M,SAAS,CAAE3gC,GAAAA,EAAI6gC,UAAAA,IACzDlhC,MAAK,SAAC8gC,GACL9/B,EAAM6Z,OAAO,yBAA0B,CAACimB,IACxC9/B,EAAM6Z,OAAO,YAAaxa,EAC5B,GACJ,EAEMihC,GAAa,SAACtgC,EAAOX,GACzB,IAAM8gC,EAAwBngC,EAAMiC,MAAMm+B,cAAc/gC,IAAO,CAAEA,GAAAA,GAIjE,OAHA8gC,EAAsBE,QAAS,EAC/BrgC,EAAM6Z,OAAO,yBAA0B,CAACsmB,IAEjCngC,EAAMyZ,UAAUuZ,IAAIC,kBAAkBqN,WAAW,CAAEjhC,GAAAA,IACvDL,MAAK,SAAC8gC,GAAY,OAAK9/B,EAAM6Z,OAAO,yBAA0B,CAACimB,GAAc,GAClF,EAcMS,GAAa,SAACvgC,EAAOwgC,GACzB,OAAOxgC,EAAMyZ,UAAUuZ,IAAIC,kBAAkBsN,WAAW,CAAEC,OAAAA,IACvDxhC,MAAK,kBAAMgB,EAAM6Z,OAAO,gBAAiB2mB,EAAO,GACrD,EAEMC,GAAe,SAACzgC,EAAOwgC,GAC3B,OAAOxgC,EAAMyZ,UAAUuZ,IAAIC,kBAAkBwN,aAAa,CAAED,OAAAA,IACzDxhC,MAAK,kBAAMgB,EAAM6Z,OAAO,mBAAoB2mB,EAAO,GACxD,EAEanoB,GAAY,CACvBqoB,QAAO,SAAEz+B,EAAKW,GAAyB,IAAbvD,EAAEuD,EAAVW,KAAQlE,GAAM+E,EAAGxB,EAAHwB,IACxBb,EAAOtB,EAAM0+B,YAAYthC,GAEzBuhC,GADOr9B,EAAKmf,MAAQ,IACL9hB,OAAO,CAACwD,IAC7Bb,EAAKmf,KAAOke,CACd,EACAC,UAAS,SAAE5+B,EAAKiD,GAAyB,IAAb7F,EAAE6F,EAAV3B,KAAQlE,GAAM+E,EAAGc,EAAHd,IAC1Bb,EAAOtB,EAAM0+B,YAAYthC,GAEzBuhC,GADOr9B,EAAKmf,MAAQ,IACLhiB,QAAO,SAAApB,GAAC,OAAIA,IAAM8E,CAAG,IAC1Cb,EAAKmf,KAAOke,CACd,EACAE,YAAW,SAAE7+B,EAAKkD,GAAkC,IAAtB9F,EAAE8F,EAAV5B,KAAQlE,GAAM0hC,EAAK57B,EAAL47B,MAAOx6B,EAAKpB,EAALoB,MACnChD,EAAOtB,EAAM0+B,YAAYthC,GACzB2hC,EAAYz9B,EAAK09B,OACvBD,EAAUD,GAASx6B,EACnBhD,EAAK09B,OAASD,CAChB,EACAE,uBAAsB,SAAEj/B,EAAKqD,GAAiC,IAArBjG,EAAEiG,EAAV/B,KAAQlE,GAAM8hC,EAAW77B,EAAX67B,YAChCl/B,EAAM0+B,YAAYthC,GAC1B8hC,YAAcA,CACrB,EACAC,eAAc,SAAEn/B,EAAOsB,GACrBtB,EAAMo/B,cAAgB99B,EAAKC,YAC3BvB,EAAMmZ,YAAcwkB,KAAU39B,EAAMmZ,aAAe,CAAC,EAAG7X,EAAMk8B,GAC/D,EACA6B,iBAAgB,SAAEr/B,GAChBA,EAAMmZ,aAAc,EACpBnZ,EAAMo/B,eAAgB,CACxB,EACAE,WAAU,SAAEt/B,GACVA,EAAMu/B,WAAY,CACpB,EACAC,SAAQ,SAAEx/B,GACRA,EAAMu/B,WAAY,CACpB,EACAE,cAAa,SAAEz/B,EAAKsD,GAAqB,IAAjBlG,EAAEkG,EAAFlG,GAAIsiC,EAASp8B,EAATo8B,UACpBp+B,EAAOtB,EAAM0+B,YAAYthC,GAC/BkE,EAAKo+B,UAAYC,KAAKC,KAAOt+B,EAAKo+B,WAAa,GAAIA,GACrD,EACAG,gBAAe,SAAE7/B,EAAK6X,GAAuB,IAAnBza,EAAEya,EAAFza,GAAI0iC,EAAWjoB,EAAXioB,YACtBx+B,EAAOtB,EAAM0+B,YAAYthC,GAC/BkE,EAAKw+B,YAAcH,KAAKC,KAAOt+B,EAAKw+B,aAAe,GAAIA,GACzD,EAGAC,aAAY,SAAE//B,EAAOukB,GACnB,IAAMjjB,EAAOtB,EAAM0+B,YAAYna,GAC3BjjB,IACFA,EAAKo+B,UAAY,GAErB,EACAM,eAAc,SAAEhgC,EAAOukB,GACrB,IAAMjjB,EAAOtB,EAAM0+B,YAAYna,GAC3BjjB,IACFA,EAAKw+B,YAAc,GAEvB,EACAG,YAAW,SAAEjgC,EAAOqB,GAClBopB,IAAKppB,GAAO,SAACC,GACPA,EAAKu8B,eACP79B,EAAMm+B,cAAc78B,EAAKu8B,aAAazgC,IAAMkE,EAAKu8B,cAEnD,IAAMnkB,EAvKc,SAAClG,EAAK+S,EAAKtd,GACnC,IAAKA,EAAQ,OAAO,EACpB,IAAMud,EAAUD,EAAItd,EAAK7L,IACzB,OAAIopB,GAEFmX,KAAUnX,EAASvd,EAAMu0B,IAClB,CAAEv0B,KAAMud,EAASK,KAAK,KAG7BrT,EAAI9O,KAAKuE,GACTsd,EAAItd,EAAK7L,IAAM6L,EACR,CAAEA,KAAAA,EAAM4d,KAAK,GAExB,CA0JkBP,CAAWtmB,EAAMqB,MAAOrB,EAAM0+B,YAAap9B,GACjD2H,EAAOyQ,EAAIzQ,KACbyQ,EAAG,KAAQzQ,EAAK1H,cAAgB0H,EAAK1H,YAAYH,SAAS,OAC5DpB,EAAMkgC,kBAAkBj3B,EAAK1H,YAAYjD,eAAiB2K,EAE9D,GACF,EACAk3B,uBAAsB,SAAEngC,EAAOm+B,GAC7BA,EAAcvd,SAAQ,SAACid,GACrB79B,EAAMm+B,cAAcN,EAAazgC,IAAMygC,CACzC,GACF,EACAuC,kBAAiB,SAAEpgC,EAAK8X,GAAmB,IAAf1a,EAAE0a,EAAF1a,GAAIijC,EAAOvoB,EAAPuoB,QAC9BrgC,EAAM0+B,YAAYthC,GAAIijC,QAAUA,CAClC,EACAC,aAAY,SAAEtgC,EAAOugC,GACnBvgC,EAAMmZ,YAAYonB,SAAWA,CAC/B,EACAC,WAAU,SAAExgC,EAAOygC,IACoC,IAAjDzgC,EAAMmZ,YAAYonB,SAASG,QAAQD,IACrCzgC,EAAMmZ,YAAYonB,SAAS77B,KAAK+7B,EAEpC,EACAE,iBAAgB,SAAE3gC,EAAO4gC,GACvB5gC,EAAMmZ,YAAYynB,cAAgBA,CACpC,EACAC,YAAW,SAAE7gC,EAAO8gC,GAClB9gC,EAAMmZ,YAAY2nB,QAAUA,CAC9B,EACAC,gBAAe,SAAE/gC,EAAOghC,GACtBhhC,EAAMmZ,YAAY6nB,aAAeA,CACnC,EACAC,UAAS,SAAEjhC,EAAOkhC,IACmC,IAA/ClhC,EAAMmZ,YAAY2nB,QAAQJ,QAAQQ,IACpClhC,EAAMmZ,YAAY2nB,QAAQp8B,KAAKw8B,EAEnC,EACAC,gBAAe,SAAEnhC,EAAOohC,GACtBphC,EAAMmZ,YAAYioB,YAAcA,CAClC,EACAC,cAAa,SAAErhC,EAAOu+B,IACmC,IAAnDv+B,EAAMmZ,YAAYioB,YAAYV,QAAQnC,IACxCv+B,EAAMmZ,YAAYioB,YAAY18B,KAAK65B,EAEvC,EACA+C,iBAAgB,SAAEthC,EAAOu+B,GACvB,IAAMr1B,EAAQlJ,EAAMmZ,YAAYioB,YAAYV,QAAQnC,IACrC,IAAXr1B,GACFlJ,EAAMmZ,YAAYioB,YAAYxa,OAAO1d,EAAO,EAEhD,EACAq4B,gBAAe,SAAEvhC,EAAO8mB,GACtB,IAAMxlB,EAAOtB,EAAM0+B,YAAY5X,EAAOxlB,KAAKlE,IAC3CkE,EAAKkgC,gBAAkBlgC,EAAKkgC,iBAAmB,GAC/C,IAAMt4B,EAAQ5H,EAAKkgC,gBAAgBd,QAAQ5Z,EAAO1pB,IAE9C0pB,EAAO2a,SAAqB,IAAXv4B,EACnB5H,EAAKkgC,gBAAgB98B,KAAKoiB,EAAO1pB,IACvB0pB,EAAO2a,SAAqB,IAAXv4B,GAC3B5H,EAAKkgC,gBAAgB5a,OAAO1d,EAAO,EAEvC,EACAw4B,iBAAgB,SAAE1hC,EAAO8mB,GACvBA,EAAOxlB,KAAOtB,EAAM0+B,YAAY5X,EAAOxlB,KAAKlE,GAC9C,EACAukC,uBAAsB,SAAE3hC,EAAO8nB,GACH,WAAtBA,EAAa/iB,OACf+iB,EAAasC,OAAO9oB,KAAOtB,EAAM0+B,YAAY5W,EAAasC,OAAO9oB,KAAKlE,KAExE0qB,EAAa8Z,aAAe5hC,EAAM0+B,YAAY5W,EAAa8Z,aAAaxkC,GAC1E,EACAykC,SAAQ,SAAE7hC,EAAKgY,GAAiC,IAArB5a,EAAE4a,EAAV1W,KAAQlE,GAAM0kC,EAAW9pB,EAAX8pB,YAClB9hC,EAAM0+B,YAAYthC,GAC1B2kC,UAAYD,CACnB,EACAE,cAAa,SAAEhiC,GACbA,EAAMgiC,eAAgB,EACtBhiC,EAAMiiC,aAAe,EACvB,EACAC,cAAa,SAAEliC,GACbA,EAAMgiC,eAAgB,CACxB,EACAG,cAAa,SAAEniC,EAAO04B,GACpB14B,EAAMgiC,eAAgB,EACtBhiC,EAAMiiC,aAAevJ,CACvB,GAiCIr3B,GAAQ,CACZrB,MAb0B,CAC1Bu/B,WAAW,EACXH,eAAe,EACfjmB,aAAa,EACb9X,MAAO,GACPq9B,YAAa,CAAC,EACdwB,kBAAmB,CAAC,EACpB8B,eAAe,EACfC,aAAc,GACd9D,cAAe,CAAC,GAKhB/nB,UAAAA,GACAgK,QAjCqB,CACrBgiB,SAAU,SAAApiC,GAAK,OAAI,SAAAM,GACjB,OAAON,EAAM0+B,YAAYp+B,EAC3B,CAAC,EACD+hC,eAAgB,SAAAriC,GAAK,OAAI,SAAAM,GACvB,OAAON,EAAMkgC,kBAAkB5/B,EAAMhC,cACvC,CAAC,EACDgkC,cAAe,SAAAtiC,GAAK,OAAI,SAAAM,GACtB,OAAON,EAAMqB,MACVktB,MAAK,SAAAqH,GAAC,OAAIA,EAAEtrB,uBACPsrB,EAAEtrB,sBAAsBhM,gBAAkBgC,EAAMhC,aAAa,GACvE,CAAC,EACDu/B,aAAc,SAAA79B,GAAK,OAAI,SAAA5C,GAErB,OADYA,GAAM4C,EAAMm+B,cAAc/gC,IACxB,CAAEA,GAAAA,EAAIkT,SAAS,EAC/B,CAAC,GAmBDgH,QAAS,CACPirB,mBAAkB,SAAExkC,EAAOX,GACpBW,EAAMqiB,QAAQgiB,SAAShlC,IAC1BW,EAAMgC,SAAS,YAAa3C,EAEhC,EACAolC,UAAS,SAAEzkC,EAAOX,GAChB,OAAOW,EAAMyZ,UAAUuZ,IAAIC,kBAAkBwR,UAAU,CAAEplC,GAAAA,IACtDL,MAAK,SAACuE,GAEL,OADAvD,EAAM6Z,OAAO,cAAe,CAACtW,IACtBA,CACT,GACJ,EACAmhC,gBAAe,SAAE1kC,EAAOuB,GACtB,OAAOvB,EAAMyZ,UAAUuZ,IAAIC,kBAAkByR,gBAAgB,CAAEnjC,KAAAA,IAC5DvC,MAAK,SAACuE,GAEL,OADAvD,EAAM6Z,OAAO,cAAe,CAACtW,IACtBA,CACT,GACJ,EACAohC,sBAAqB,SAAE3kC,EAAOX,GACxBW,EAAMiC,MAAMmZ,aACdpb,EAAMyZ,UAAUuZ,IAAIC,kBAAkB0R,sBAAsB,CAAEtlC,GAAAA,IAC3DL,MAAK,SAACohC,GAAa,OAAKpgC,EAAM6Z,OAAO,yBAA0BumB,EAAc,GAEpF,EACAwE,iBAAgB,SAAE5kC,EAAOX,GACnBW,EAAMiC,MAAMmZ,aACdpb,EAAMyZ,UAAUuZ,IAAIC,kBAAkB2R,iBAAiB,CAAEvlC,GAAAA,IACtDL,MAAK,SAACsjC,GAAO,OAAKtiC,EAAM6Z,OAAO,oBAAqB,CAAExa,GAAAA,EAAIijC,QAAAA,GAAU,GAE3E,EACAuC,YAAW,SAAE7kC,EAAOgc,GAClB,IAAQ8oB,GAAU9oB,GAAQ,CAAC,GAAnB8oB,MAEF/d,EAAQ/mB,EAAMiC,MAAMmZ,YAAYynB,cACtC,OAAO7iC,EAAMyZ,UAAUuZ,IAAIC,kBAAkB4R,YAAY,CAAE9d,MAAAA,IACxD/nB,MAAK,SAAC+lC,GAUL,OATID,EACF9kC,EAAM6Z,OAAO,eAAgBmrB,KAAID,EAAQ,OAEzCC,KAAID,EAAQ,MAAMtmC,KAAI,SAAAY,GAAE,OAAIW,EAAM6Z,OAAO,aAAcxa,EAAG,IAExD0lC,EAAO/jC,QACThB,EAAM6Z,OAAO,mBAAoB6P,IAAKqb,GAAQ1lC,IAEhDW,EAAM6Z,OAAO,cAAekrB,GACrBA,CACT,GACJ,EACAlF,UAAS,SAAE7/B,EAAOX,GAChB,OAAOwgC,GAAU7/B,EAAOX,EAC1B,EACA0gC,YAAW,SAAE//B,EAAOX,GAClB,OAAO0gC,GAAY//B,EAAOX,EAC5B,EACA4lC,wBAAuB,SAAEjlC,EAAOX,GAC9B,OA5S0B,SAACW,EAAOX,GACtC,OAAOW,EAAMyZ,UAAUuZ,IAAIC,kBAAkBgS,wBAAwB,CAAE5lC,GAAAA,IACpEL,MAAK,SAAC8gC,GAAY,OAAK9/B,EAAM6Z,OAAO,yBAA0B,CAACimB,GAAc,GAClF,CAySamF,CAAwBjlC,EAAOX,EACxC,EACA6lC,WAAU,SAAEllC,GAAiB,IAAVZ,EAAG8E,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GACvB,OAAOpF,QAAQolB,IAAI9kB,EAAIX,KAAI,SAAAY,GAAE,OAAIwgC,GAAU7/B,EAAOX,EAAG,IACvD,EACA8lC,aAAY,SAAEnlC,GAAiB,IAAVZ,EAAG8E,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GACzB,OAAOpF,QAAQolB,IAAI9kB,EAAIX,KAAI,SAAAY,GAAE,OAAI0gC,GAAY//B,EAAOX,EAAG,IACzD,EACA+lC,aAAY,SAAEplC,EAAOgc,GACnB,OAhTe,SAAChc,EAAK+B,GAAsB,IAAlB1C,EAAE0C,EAAF1C,GAAIgmC,EAAOtjC,EAAPsjC,QACjC,OAAOrlC,EAAMyZ,UAAUuZ,IAAIC,kBAAkBmS,aAAa,CAAE/lC,GAAAA,EAAIgmC,QAAAA,IAC7DrmC,MAAK,SAAC8gC,GAAY,OAAK9/B,EAAM6Z,OAAO,yBAA0B,CAACimB,GAAc,GAClF,CA6SasF,CAAaplC,EAAOgc,EAC7B,EACAspB,WAAU,SAAEtlC,EAAOgc,GACjB,IAAQ8oB,GAAU9oB,GAAQ,CAAC,GAAnB8oB,MAEF/d,EAAQ/mB,EAAMiC,MAAMmZ,YAAY6nB,aACtC,OAAOjjC,EAAMyZ,UAAUuZ,IAAIC,kBAAkBqS,WAAW,CAAEve,MAAAA,IACvD/nB,MAAK,SAACumC,GAUL,OATIT,EACF9kC,EAAM6Z,OAAO,cAAemrB,KAAIO,EAAO,OAEvCP,KAAIO,EAAO,MAAM9mC,KAAI,SAAAY,GAAE,OAAIW,EAAM6Z,OAAO,YAAaxa,EAAG,IAEtDkmC,EAAMvkC,QACRhB,EAAM6Z,OAAO,kBAAmB6P,IAAK6b,GAAOlmC,IAE9CW,EAAM6Z,OAAO,cAAe0rB,GACrBA,CACT,GACJ,EACAvF,SAAQ,SAAEhgC,EAAOX,GACf,OAAO2gC,GAAShgC,EAAOX,EACzB,EACAihC,WAAU,SAAEtgC,EAAOX,GACjB,OAAOihC,GAAWtgC,EAAOX,EAC3B,EACAmmC,YAAW,SAAExlC,EAAOX,GAClB,OA7Sc,SAACW,EAAOwmB,GAC1B,OAAOxmB,EAAMyZ,UAAUuZ,IAAIC,kBAAkBwS,WAAW,CAAEpmC,GAAImnB,EAAQkf,SAAS,IAC5E1mC,MAAK,SAAC8gC,GACL9/B,EAAM6Z,OAAO,yBAA0B,CAACimB,GAC1C,GACJ,CAwSa0F,CAAYxlC,EAAOX,EAC5B,EACAsmC,YAAW,SAAE3lC,EAAOX,GAClB,OAzSc,SAACW,EAAOwmB,GAC1B,OAAOxmB,EAAMyZ,UAAUuZ,IAAIC,kBAAkBwS,WAAW,CAAEpmC,GAAImnB,EAAQkf,SAAS,IAC5E1mC,MAAK,SAAC8gC,GAAY,OAAK9/B,EAAM6Z,OAAO,yBAA0B,CAACimB,GAAc,GAClF,CAsSa6F,CAAY3lC,EAAOX,EAC5B,EACAumC,UAAS,SAAE5lC,GAAiB,IAAVZ,EAAG8E,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GACtB,OAAOpF,QAAQolB,IAAI9kB,EAAIX,KAAI,SAAAY,GAAE,OAAI2gC,GAAShgC,EAAOX,EAAG,IACtD,EACAwmC,YAAW,SAAE7lC,GAAiB,IAAVZ,EAAG8E,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GACxB,OAAOpF,QAAQolB,IAAI9kB,EAAIX,KAAI,SAAAY,GAAE,OAAIihC,GAAWtgC,EAAOX,EAAG,IACxD,EACAymC,iBAAgB,SAAE9lC,GAChB,OAAOA,EAAMyZ,UAAUuZ,IAAIC,kBAAkB6S,mBAC1C9mC,MAAK,SAACqkC,GAEL,OADArjC,EAAM6Z,OAAO,kBAAmBwpB,GACzBA,CACT,GACJ,EACA9C,WAAU,SAAEvgC,EAAOwgC,GACjB,OAAOD,GAAWvgC,EAAOwgC,EAC3B,EACAC,aAAY,SAAEzgC,EAAOwgC,GACnB,OAAOC,GAAazgC,EAAOwgC,EAC7B,EACAuF,YAAW,SAAE/lC,GAAqB,IAAdmiB,EAAOje,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GAC5B,OAAOpF,QAAQolB,IAAI/B,EAAQ1jB,KAAI,SAAA+hC,GAAM,OAAID,GAAWvgC,EAAOwgC,EAAO,IACpE,EACAwF,cAAa,SAAEhmC,GAAoB,IAAbwgC,EAAMt8B,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GAC7B,OAAOpF,QAAQolB,IAAIsc,EAAO/hC,KAAI,SAAA+hC,GAAM,OAAIC,GAAazgC,EAAOwgC,EAAO,IACrE,EACAyF,aAAY,SAAA5rB,EAAyBhb,GAAI,IAAzBoa,EAASY,EAATZ,UAAWI,EAAMQ,EAANR,OACnBtW,EAAOkW,EAAUnW,MAAMq9B,YAAYthC,GACnC0nB,EAAQ2C,IAAKnmB,EAAKo+B,WACxB,OAAOloB,EAAUuZ,IAAIC,kBAAkBgT,aAAa,CAAE5mC,GAAAA,EAAI0nB,MAAAA,IACvD/nB,MAAK,SAACmoB,GAGL,OAFAtN,EAAO,cAAesN,GACtBtN,EAAO,gBAAiB,CAAExa,GAAAA,EAAIsiC,UAAWqD,KAAI7d,EAAS,QAC/CA,CACT,GACJ,EACA+e,eAAc,SAAAtrB,EAAyBvb,GAAI,IAAzBoa,EAASmB,EAATnB,UAAWI,EAAMe,EAANf,OACrBtW,EAAOkW,EAAUnW,MAAMq9B,YAAYthC,GACnC0nB,EAAQ2C,IAAKnmB,EAAKw+B,aACxB,OAAOtoB,EAAUuZ,IAAIC,kBAAkBiT,eAAe,CAAE7mC,GAAAA,EAAI0nB,MAAAA,IACzD/nB,MAAK,SAACkoB,GAGL,OAFArN,EAAO,cAAeqN,GACtBrN,EAAO,kBAAmB,CAAExa,GAAAA,EAAI0iC,YAAaiD,KAAI9d,EAAW,QACrDA,CACT,GACJ,EACA8a,aAAY,SAAAnnB,EAAc2L,IACxB3M,EADoBgB,EAANhB,QACP,eAAgB2M,EACzB,EACAyb,eAAc,SAAAnnB,EAAc0L,IAC1B3M,EADsBiB,EAANjB,QACT,iBAAkB2M,EAC3B,EACA2f,cAAa,SAAA9qB,EAAyBhc,GAAI,IAAzBoa,EAAS4B,EAAT5B,UAAWI,EAAMwB,EAANxB,OAC1B,OAAOJ,EAAUuZ,IAAIC,kBAAkBkT,cAAc,CAAE9mC,GAAAA,IACpDL,MAAK,SAAC8gC,GAAY,OAAKjmB,EAAO,yBAA0B,CAACimB,GAAc,GAC5E,EACAsG,gBAAe,SAAAlgB,EAAyB7mB,GAAI,IAAzBoa,EAASyM,EAATzM,UAAWI,EAAMqM,EAANrM,OAC5B,OAAOJ,EAAUuZ,IAAIC,kBAAkBmT,gBAAgB,CAAE/mC,GAAAA,IACtDL,MAAK,SAAC8gC,GAAY,OAAKjmB,EAAO,yBAA0B,CAACimB,GAAc,GAC5E,EACAuG,uBAAsB,SAAAjX,EAAAE,GAAmC,IAA/B7V,EAAS2V,EAAT3V,UAAWI,EAAMuV,EAANvV,OAAYtW,EAAI+rB,EAAJ/rB,MACnCA,EAAK49B,YAAc1nB,EAAUuZ,IAAIC,kBAAkBqT,aAAe7sB,EAAUuZ,IAAIC,kBAAkBsT,gBAC1G,CAAEhjC,KAAAA,IACHvE,MAAK,SAACuE,GAAW,IAAM49B,GAAe59B,EAAKijC,UAAW3sB,EAAO,yBAA0B,CAAEtW,KAAAA,EAAM49B,YAAAA,GAAe,GACnH,EACAsF,0BAAyB,SAAEzmC,GACzB,IAAMi/B,EAAQj/B,EAAMiC,MAAMmZ,YAAYkL,YAChC1J,EAAiB5c,EAAMyZ,UAAUG,SAASgD,gBD3X/C,SAAoC8pB,EAAW9pB,EAAgBqiB,EAAO0H,GACvEzH,MACFE,KACGpgC,MAAK,SAAC4nC,GAAY,OA/DzB,SAAwBA,EAAcF,EAAW9pB,GAC/C,IAAK8pB,EAAW,OAAO5nC,QAAQ0D,OAAO,IAAItD,MAAM,mCAChD,IAAK0d,EAAgB,OAAO9d,QAAQ0D,OAAO,IAAItD,MAAM,kCAErD,IAvB8B2nC,EAExBC,EAIAC,EAiBAC,EAAmB,CACvBC,iBAAiB,EACjBC,sBAzB4BL,EAyBgBjqB,EAvBxCkqB,GAAUD,EADA,IAAIM,QAAQ,EAAIN,EAAa7lC,OAAS,GAAK,IAExD0D,QAAQ,KAAM,KACdA,QAAQ,KAAM,KAEXqiC,EAAUn/B,OAAOw/B,KAAKN,GACrBO,WAAWtiC,MAAKzD,EAAAA,EAAAA,GAAIylC,GAAStoC,KAAI,SAACsH,GAAI,OAAKA,EAAKuhC,WAAW,EAAE,OAoBpE,OAAOV,EAAaW,YAAYC,UAAUR,EAC5C,CAsD8BS,CAAcb,EAAcF,EAAW9pB,EAAe,IAC7E5d,MAAK,SAAC0oC,GAAY,OAhCzB,SAAoCA,EAAczI,EAAO0H,GACvD,OAAO/+B,OAAOkK,MAAM,6BAA8B,CAChD6rB,OAAQ,OACR4B,QAAS,CACP,eAAgB,mBAChBC,cAAe,UAAF5+B,OAAYq+B,IAE3B1rB,KAAMo0B,KAAKC,UAAU,CACnBF,aAAAA,EACA/nC,KAAM,CACJkoC,OAAQ,CACNtb,OAAQoa,EAAuBmB,QAC/BC,UAAWpB,EAAuBqB,MAClCC,QAAStB,EAAuB1e,SAChCigB,OAAQvB,EAAuBwB,QAC/BC,KAAMzB,EAAuB0B,YAIlCrpC,MAAK,SAAC07B,GACP,IAAKA,EAAS/V,GAAI,MAAM,IAAIzlB,MAAM,gCAClC,OAAOw7B,EAAS9V,MAClB,IAAG5lB,MAAK,SAACspC,GACP,IAAKA,EAAajpC,GAAI,MAAM,IAAIH,MAAM,6BACtC,OAAOopC,CACT,GACF,CAM8BC,CAA0Bb,EAAczI,EAAO0H,EAAuB,IAAC,OACxF,SAAC1nC,GAAC,OAAK6kB,QAAQC,KAAK,2CAADnjB,OAA4C3B,EAAEu0B,SAAU,GAExF,CCwXMiT,CAHkBzmC,EAAMyZ,UAAUgM,OAAO+iB,qBAGJ5rB,EAAgBqiB,EAFtBj/B,EAAMyZ,UAAUgM,OAAOkhB,uBAGxD,EACA8B,4BAA2B,SAAEzoC,GDxX1B,IAAsCi/B,ICyXzBj/B,EAAMiC,MAAMmZ,YAAYkL,YDxXtC4Y,MACFpgC,QAAQolB,IAAI,CACVob,GAA8BL,GAC9BG,KACGpgC,MAAK,SAAC4nC,GACL,OAhEV,SAA0BA,GACxB,OAAOA,EAAaW,YAAYmB,kBAC7B1pC,MAAK,SAAC2pC,GACL,GAAqB,OAAjBA,EACJ,OAAOA,EAAaC,aACtB,GACJ,CA0DiBC,CAAgBjC,GAAc5nC,MAAK,SAACqF,GAAM,MAAK,CAACuiC,EAAcviC,EAAO,GAC9E,IACCrF,MAAK,SAAA+C,GAAiC,IAAAa,GAAAqC,EAAAA,EAAAA,GAAAlD,EAAA,GAA/B6kC,EAAYhkC,EAAA,GAIlB,OAJ+BA,EAAA,IAE7BkhB,QAAQC,KAAK,0EAER6iB,EAAakC,aAAa9pC,MAAK,SAACqF,GAChCA,GACHyf,QAAQC,KAAK,oBAEjB,GACF,MACF,OAAO,SAAC9kB,GAAC,OAAK6kB,QAAQC,KAAK,6CAADnjB,OAA8C3B,EAAEu0B,SAAU,GC0WtF,EACA0O,YAAW,SAAAzS,EAAcnsB,IACvBuW,EADmB4V,EAAN5V,QACN,cAAevW,EACxB,EACA0mB,eAAc,SAAEhqB,EAAK2vB,GAAgB,IAAZlJ,EAAQkJ,EAARlJ,SACjBnjB,EAAQ0hC,KAAIve,EAAU,QACtBsiB,EAAiBC,KAAQhE,KAAIve,EAAU,0BAC7CzmB,EAAM6Z,OAAO,cAAevW,GAC5BtD,EAAM6Z,OAAO,cAAekvB,GAE5Brc,IAAKjG,GAAU,SAACsC,GAEd/oB,EAAM6Z,OAAO,mBAAoBkP,GAEjC/oB,EAAM6Z,OAAO,kBAAmBkP,EAClC,IACA2D,IAAKsc,KAAQhE,KAAIve,EAAU,sBAAsB,SAACsC,GAEhD/oB,EAAM6Z,OAAO,mBAAoBkP,GAEjC/oB,EAAM6Z,OAAO,kBAAmBkP,EAClC,GACF,EACA4D,oBAAmB,SAAE3sB,EAAK6vB,GAAqB,IAAjB/H,EAAa+H,EAAb/H,cACtBxkB,EAAQ0hC,KAAIld,EAAe,gBAC3BmhB,EAAcjE,KAAIld,EAAe,UAAUpnB,QAAO,SAAA0O,GAAC,OAAIA,CAAC,IACxD85B,EAAkBphB,EAAcrpB,KAAI,SAAA2Q,GAAC,OAAIA,EAAE/P,EAAE,IACnDW,EAAM6Z,OAAO,cAAevW,GAC5BtD,EAAM6Z,OAAO,cAAeovB,GAE5B,IAAME,EAAsBnpC,EAAMyZ,UAAUgN,SAASqB,cAAcL,QAC7D2hB,EAAwB5pC,OAAOkT,QAAQy2B,GAC1CzoC,QAAO,SAAAsvB,GAAA,IAAAG,GAAAlrB,EAAAA,EAAAA,GAAA+qB,EAAA,GAAE/uB,EAACkvB,EAAA,GAAK,OAAAA,EAAA,GAAM+Y,EAAgB7lC,SAASpC,EAAE,IAChDxC,KAAI,SAAA6xB,GAAA,IAAAG,GAAAxrB,EAAAA,EAAAA,GAAAqrB,EAAA,GAAQ,OAALG,EAAA,GAAKA,EAAA,EAAS,IAGxB/D,IAAK0c,GAAuB,SAACrf,GAC3B/pB,EAAM6Z,OAAO,yBAA0BkQ,EACzC,GACF,EACAsf,YAAW,SAAA1Y,EAAAE,GAAoC,IAAhCpX,EAASkX,EAATlX,UAAWI,EAAM8W,EAAN9W,OAAYtX,EAAKsuB,EAALtuB,MACpC,OAAOkX,EAAUuZ,IAAIC,kBAAkBoW,YAAY,CAAE9mC,MAAAA,IAClDvD,MAAK,SAACsE,GAEL,OADAuW,EAAO,cAAevW,GACfA,CACT,GACJ,EACMgmC,OAAM,SAAEtpC,EAAOupC,GAAU,OAAA1mC,EAAAA,EAAAA,GAAAC,IAAAA,MAAA,SAAAC,IAAA,IAAA0W,EAAA9Z,EAAAg7B,EAAA,OAAA73B,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAGI,OAFjCnD,EAAM6Z,OAAO,iBAEPJ,EAAYzZ,EAAMyZ,UAASxW,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAGZsW,EAAUuZ,IAAIC,kBAAkBuW,SACjD,CAAEC,OAAMhpC,GAAA,GAAO8oC,KAChB,OAFK5pC,EAAIsD,EAAA4T,KAGV7W,EAAM6Z,OAAO,iBACb7Z,EAAM6Z,OAAO,WAAYla,EAAK+pC,cAC9B1pC,EAAMgC,SAAS,YAAarC,EAAK+pC,cAAazmC,EAAAE,KAAA,iBAGT,MAHSF,EAAAC,KAAA,GAAAD,EAAA8T,GAAA9T,EAAA,SAExC03B,EAAS13B,EAAA8T,GAAEyc,QACjBxzB,EAAM6Z,OAAO,gBAAiB8gB,GAAO13B,EAAA8T,GAAA,yBAAA9T,EAAAe,OAAA,GAAAjB,EAAA,kBAdVF,EAiB/B,EACM8mC,WAAU,SAAE3pC,GAAO,OAAA6C,EAAAA,EAAAA,GAAAC,IAAAA,MAAA,SAAAqhB,IAAA,OAAArhB,IAAAA,MAAA,SAAAshB,GAAA,cAAAA,EAAAlhB,KAAAkhB,EAAAjhB,MAAA,cAAAihB,EAAAhhB,OAAA,SAChBpD,EAAMyZ,UAAUuZ,IAAIC,kBAAkB0W,cAAY,wBAAAvlB,EAAApgB,OAAA,GAAAmgB,EAAA,IADlCthB,EAEzB,EAEA+mC,OAAM,SAAE5pC,GACN,IAAA6pC,EAA4B7pC,EAAMyZ,UAA1BukB,EAAK6L,EAAL7L,MAAOpkB,EAAQiwB,EAARjwB,SAETja,EAAIc,GAAAA,GAAA,GACLu9B,GAAK,IACRnkB,OAAQ7Z,EAAM6Z,OACdD,SAAUA,EAAS6C,SAGrB,OAAOqtB,GAAAA,eAAwBnqC,GAC5BX,MAAK,SAAC4+B,GACL,IAAM6L,EAAS,CACb7L,IAAAA,EACAhkB,SAAUja,EAAKia,SACfqlB,MAAOjB,EAAM+L,WAGf,OAAOD,GAAAA,YAAqBL,EAC9B,IACCzqC,MAAK,WACJgB,EAAM6Z,OAAO,oBACb7Z,EAAMgC,SAAS,wBACfhC,EAAM6Z,OAAO,cACb7Z,EAAMgC,SAAS,uBAAwB,WACvChC,EAAM6Z,OAAO,uBAAwBmwB,GAAyBhqC,EAAMqiB,QAAQoc,aAC5Ez+B,EAAMgC,SAAS,6BACfhC,EAAMgC,SAAS,qBACfhC,EAAMgC,SAAS,8BACfhC,EAAM6Z,OAAO,sBACb7Z,EAAM6Z,OAAO,iBACb7Z,EAAMgC,SAAS,cACfhC,EAAMgC,SAAS,kBAAmB,mBAClChC,EAAMgC,SAAS,iBAAkBy6B,MACjCz8B,EAAMgC,SAAS,kBAAmB66B,MAClC78B,EAAM6Z,OAAO,yBACf,GACJ,EACAowB,UAAS,SAAEjqC,EAAOkqC,GAChB,OAAO,IAAIprC,SAAQ,SAACC,EAASyD,GAC3B,IAAMqX,EAAS7Z,EAAM6Z,OACf7X,EAAWhC,EAAMgC,SACvB6X,EAAO,cACP7Z,EAAMyZ,UAAUuZ,IAAIC,kBAAkBuJ,kBAAkB0N,GACrDlrC,MAAK,SAACW,GACL,GAAKA,EAAK8S,MAkEH,CACL,IAAMioB,EAAW/6B,EAAK8S,MAEtBoH,EAAO,YAGH,CAAC,IAAK,IAAK,IAAK,KAAKxW,SAASq3B,EAAS3R,SACzClP,EAAO,cAGe,MAApB6gB,EAAS3R,OACXvmB,EAAO,IAAItD,MAAM,+BAEjBsD,EAAO,IAAItD,MAAM,uCAErB,KAjFiB,CACf,IAAMqE,EAAO5D,EAEb4D,EAAK+iB,YAAc4jB,EACnB3mC,EAAKi/B,SAAW,GAChBj/B,EAAKw/B,QAAU,GACfx/B,EAAK8/B,YAAc,GACnBxpB,EAAO,iBAAkBtW,GACzBsW,EAAO,uBAAwBtW,GAC/BsW,EAAO,cAAe,CAACtW,IAEvBvB,EAAS,eApjBfmoC,EAAeviC,OAAOuiC,aAEvBA,EAC2B,YAA5BA,EAAazxB,WAAiCyxB,EAAaC,oBACxDtrC,QAAQC,QAAQorC,EAAazxB,YAFV5Z,QAAQC,QAAQ,OAqjB3BC,MAAK,SAAA0Z,GAAU,OAAImB,EAAO,4BAA6BnB,EAAW,IAGrEmB,EAAO,uBAAwBmwB,GAAyBE,IACxDloC,EAAS,yBAELuB,EAAK07B,QACPj9B,EAAS,aAAcuB,EAAK07B,OAG5Bj9B,EAAS,qBAcXA,EAAS,sBAELuB,EAAK8mC,QACProC,EAAS,+BAGPhC,EAAMqiB,QAAQnH,aAAaovB,iBAC7BtoC,EAAS,gBAAiB,CAAEynB,SAAU,UAAWyQ,MAAO,OACxDl4B,EAAS,qBAAsB,CAAEk4B,MAAO,OACxCl4B,EAAS,sBAAsB,GAAK,OAAO,SAACyQ,GAC1CqR,QAAQrR,MAAM,gDAAiDA,EACjE,IAAGzT,MAAK,WACNgD,EAAS,aAAc,CAAEuoC,QAAQ,IACjC9nC,YAAW,kBAAMT,EAAS,2BAA2B,EAAM,GAAE,IAC/D,MAvBAA,EAAS,wBAAyB,CAAEynB,SAAU,YAG9CznB,EAAS,8BAGTA,EAAS,uBAuBXA,EAAS,cAETA,EAAS,iBAAkBy6B,MAC3Bz6B,EAAS,kBAAmB66B,MAG5B78B,EAAMyZ,UAAUuZ,IAAIC,kBAAkBgT,aAAa,CAAE5mC,GAAIkE,EAAKlE,KAC3DL,MAAK,SAACmoB,GAAO,OAAKtN,EAAO,cAAesN,EAAQ,GACrD,CA5mBsB,IAC1BgjB,EA2nBItwB,EAAO,YACP9a,GACF,IAAE,OACK,SAAC0T,GACNqR,QAAQ2I,IAAIha,GACZoH,EAAO,YACPrX,EAAO,IAAItD,MAAM,0CACnB,GACJ,GACF,IAIJ,Y,oDCpqBasrC,GAA4B,SAACxqC,EAAOyqC,GAC/C,GAAKA,EAAKC,cACN1qC,EAAMyZ,UAAUkxB,MAAMC,gBAAkBH,EAAKprC,IAAOiU,SAASu3B,SAC7D7qC,EAAMyZ,UAAUnW,MAAM8X,YAAY/b,KAAOorC,EAAKC,YAAYI,WAA9D,CAEA,IAAMC,EAAO,CACX3mC,IAAKqmC,EAAKC,YAAYrrC,GACtBsa,MAAO8wB,EAAKO,QAAQzpC,KACpB8P,KAAMo5B,EAAKO,QAAQC,kBACnB13B,KAAMk3B,EAAKC,YAAYxjC,SAGrBujC,EAAKC,YAAYQ,YAAmD,UAArCT,EAAKC,YAAYQ,WAAWlkC,OAC7D+jC,EAAK75B,MAAQu5B,EAAKC,YAAYQ,WAAWC,cAG3CC,EAAAA,GAAAA,GAAwBprC,EAAMyZ,UAAWsxB,EAbuC,CAclF,E,qmBCdA,IAEM/X,GAAM,CACV/wB,MAAO,CACLopC,gBAAiB,EACjBpY,kBAAmB+W,KACnBsB,SAAU,CAAC,EACXC,OAAQ,KACRC,gBAAiB,KACjBC,sBAAuB,KACvBC,eAAgB,IAElBrpB,QAAS,CACPspB,mBAAoB,SAAA1pC,GAAK,OAAIA,EAAMypC,eAAe1qC,MAAM,GAE1DqX,UAAW,CACTuzB,qBAAoB,SAAE3pC,EAAOgxB,GAC3BhxB,EAAMgxB,kBAAoBA,CAC5B,EACA4Y,WAAU,SAAE5pC,EAAKF,GAA4B,IAAxB+pC,EAAW/pC,EAAX+pC,YAAaC,EAAOhqC,EAAPgqC,QAChC9pC,EAAMqpC,SAASQ,GAAeC,CAChC,EACAC,cAAa,SAAE/pC,EAAKW,GAA4B,IAAxBkpC,EAAWlpC,EAAXkpC,YAAoBlpC,EAAPmpC,QACnC9pC,EAAMqpC,SAASQ,GAAa9nC,cACrB/B,EAAMqpC,SAASQ,EACxB,EACAG,WAAU,SAAEhqC,EAAOg9B,GACjBh9B,EAAMiqC,QAAUjN,CAClB,EACAkN,UAAS,SAAElqC,EAAOspC,GAChBtpC,EAAMspC,OAASA,CACjB,EACAa,kBAAiB,SAAEnqC,EAAOsE,GACxBtE,EAAMypC,eAAiBnlC,CACzB,EACA8lC,yBAAwB,SAAEpqC,EAAOsE,GAC/BtE,EAAMwpC,sBAAwBllC,CAChC,EACA+lC,yBAAwB,SAAErqC,GACxBA,EAAMopC,gBAAkBlqC,KAAKC,MAAMa,EAAMopC,gBAAiB,EAC5D,EACAkB,qBAAoB,SAAEtqC,GACpBA,EAAMopC,gBAAkB,CAC1B,GAEF9xB,QAAS,CAMPizB,mBAAkB,SAAExsC,EAAOysC,GACzB,IAAQxqC,EAA4BjC,EAA5BiC,MAAOD,EAAqBhC,EAArBgC,SAAU6X,EAAW7Z,EAAX6Z,OAEzB,IACE5X,EAAMupC,iBACH,CACCkB,UAAUC,OACVD,UAAUE,SACVvpC,SAASpB,EAAMupC,gBAAgBqB,YASrC,OAJEhzB,EAAO,2BADL4yB,EACiCK,EAAAA,GAAAA,iBAEAA,EAAAA,GAAAA,UAE9B9qC,EAAS,uBAClB,EACA+qC,oBAAmB,SAAE/sC,GACnB,IAAQiC,EAA4BjC,EAA5BiC,MAAOD,EAAqBhC,EAArBgC,SAAU6X,EAAW7Z,EAAX6Z,OACzB,GAAK5X,EAAMupC,gBAEX,OADA3xB,EAAO,2BAA4BizB,EAAAA,GAAAA,UAC5B9qC,EAAS,sBAClB,EAGAgrC,qBAAoB,SAAEhtC,GACpB,OAAO,IAAIlB,SAAQ,SAACC,EAASyD,GAC3B,IACE,IAAQP,EAAuCjC,EAAvCiC,MAAO4X,EAAgC7Z,EAAhC6Z,OAAQ7X,EAAwBhC,EAAxBgC,SACjBm4B,EADyCn6B,EAAdyZ,UACFgN,SAASuB,UAAUb,QAClDllB,EAAMupC,gBAAkBvpC,EAAMgxB,kBAAkBkJ,gBAAgB,CAAEn8B,MAAAA,IAClEiC,EAAMupC,gBAAgB54B,iBACpB,WACA,SAAA1N,GAAyB,IAAdsuB,EAAOtuB,EAAf+nC,OACIzZ,IACiB,iBAAlBA,EAAQhmB,MACVxL,EAAS,sBAAuB,CAC9B8lB,cAAe,CAAC0L,EAAQzJ,cACxBgB,OAAO,IAEkB,WAAlByI,EAAQhmB,MACjBxL,EAAS,iBAAkB,CACzBykB,SAAU,CAAC+M,EAAQzK,QACnBvC,QAAQ,EACR0D,gBAAyD,IAAxCiQ,EAAavT,gBAAgB5lB,OAC9CyoB,SAAU,YAEe,kBAAlB+J,EAAQhmB,MACjBxL,EAAS,iBAAkB,CACzBykB,SAAU,CAAC+M,EAAQzK,QACnBvC,QAAQ,EACR0D,gBAAiBsJ,EAAQzK,OAAO1pB,MAAM86B,EAAatT,sBACnD4C,SAAU,YAEe,WAAlB+J,EAAQhmB,MACjBxL,EAAS,mBAAoBwxB,EAAQn0B,IACV,wBAAlBm0B,EAAQhmB,OAKjB/K,YAAW,WACTT,EAAS,kBAAmB,CAC1BkrC,OAAQ1Z,EAAQ2Z,WAAW9tC,GAC3BuX,SAAU,CAAC4c,EAAQ2Z,WAAWzC,eAEhC1oC,EAAS,aAAc,CAAEyoC,KAAMjX,EAAQ2Z,aACvC3C,GAA0BxqC,EAAOwzB,EAAQ2Z,WAC3C,GAAG,KAEP,IAEFlrC,EAAMupC,gBAAgB54B,iBAAiB,QAAQ,WAEzC3Q,EAAMwpC,wBAA0BqB,EAAAA,GAAAA,kBAClC9qC,EAAS,mBAAoB,CAC3BuM,MAAO,UACP+L,WAAY,8BACZlY,QAAS,MAIT,IAAI4H,IAAI,CACV8iC,EAAAA,GAAAA,MACAA,EAAAA,GAAAA,WACC/hC,IAAI9I,EAAMwpC,yBACXzpC,EAAS,uBAAwB,CAAEynB,SAAU,YAC7CznB,EAAS,6BACTA,EAAS,sBAEX6X,EAAO,wBACPA,EAAO,2BAA4BizB,EAAAA,GAAAA,OACrC,IACA7qC,EAAMupC,gBAAgB54B,iBAAiB,SAAS,SAAAzN,GAAuB,IAAZsN,EAAKtN,EAAb8nC,OACjDnpB,QAAQrR,MAAM,+BAAgCA,GAE9CzQ,EAAS,mBACX,IACAC,EAAMupC,gBAAgB54B,iBAAiB,SAAS,SAAAtN,GAA4B,IAAjB8nC,EAAU9nC,EAAlB2nC,OAC3CI,EAAc,IAAIrjC,IAAI,CAC1B,IACA,OAEM7K,EAASiuC,EAATjuC,KACJkuC,EAAYtiC,IAAI5L,IAClB2kB,QAAQwpB,MAAM,iDAAD1sC,OAAkDzB,EAAI,uBACnE0a,EAAO,2BAA4BizB,EAAAA,GAAAA,UAEnChpB,QAAQC,KAAK,iEAADnjB,OAAkEzB,IAC9EsD,YAAW,WACTT,EAAS,uBACX,GApKuB,IAoKPC,EAAMopC,iBACtBxxB,EAAO,4BACH5X,EAAMwpC,wBAA0BqB,EAAAA,GAAAA,QAClC9qC,EAAS,wBAAyB,CAAEynB,SAAU,YAC9CznB,EAAS,8BACTA,EAAS,sBACTA,EAAS,mBAAoB,CAC3BuM,MAAO,QACP+L,WAAY,wBACZE,YAAa,CAACrb,GACdiD,QAAS,OAGbyX,EAAO,2BAA4BizB,EAAAA,GAAAA,QAErC9qC,EAAS,mBACX,IACAjD,GAGF,CAFE,MAAOE,GACPuD,EAAOvD,EACT,CACF,GACF,EACAsuC,oBAAmB,SAAAhoC,GAAuB,IAAnBtD,EAAKsD,EAALtD,MAAOD,EAAQuD,EAARvD,SAC5BA,EAAS,wBAAyB,CAAEynB,SAAU,YAC9CznB,EAAS,8BACTA,EAAS,sBACTC,EAAMupC,gBAAgBgC,OACxB,EAGA/R,sBAAqB,SAAEz7B,EAAK8Z,GAKzB,IAAA2zB,EAAA3zB,EAJD2P,SAAAA,OAAQ,IAAAgkB,EAAG,UAASA,EAAAC,EAAA5zB,EACpB1V,IAAAA,OAAG,IAAAspC,GAAQA,EAAAC,EAAA7zB,EACX0M,OAAAA,OAAM,IAAAmnB,GAAQA,EAAAC,EAAA9zB,EACdqe,OAAAA,OAAM,IAAAyV,GAAQA,EAEd,IAAI5tC,EAAMiC,MAAMqpC,SAAS7hB,GAAzB,CAEA,IAAMsiB,EAAU/rC,EAAMiC,MAAMgxB,kBAAkBwI,sBAAsB,CAClEhS,SAAAA,EAAUzpB,MAAAA,EAAOwmB,OAAAA,EAAQ2R,OAAAA,EAAQ/zB,IAAAA,IAEnCpE,EAAM6Z,OAAO,aAAc,CAAEiyB,YAAariB,EAAUsiB,QAAAA,GALV,CAM5C,EACA8B,qBAAoB,SAAE7tC,EAAOypB,GAC3B,IAAMsiB,EAAU/rC,EAAMiC,MAAMqpC,SAAS7hB,GAChCsiB,GACL/rC,EAAM6Z,OAAO,gBAAiB,CAAEiyB,YAAariB,EAAUsiB,QAAAA,GACzD,EACAnQ,cAAa,SAAE57B,EAAK+Z,GAAyB,IAArB0P,EAAQ1P,EAAR0P,SAAapT,GAAIrJ,EAAAA,GAAAA,GAAA+M,EAAA9M,IACvCjN,EAAMiC,MAAMgxB,kBAAkB2I,cAAan7B,GAAC,CAC1CT,MAAAA,EACAypB,SAAAA,GACGpT,GAEP,EAGAwlB,2BAA0B,SAAE77B,GAC1B,IAAIA,EAAMiC,MAAMqpC,SAASxjB,cAAzB,CACA,IAAMikB,EAAU/rC,EAAMiC,MAAMgxB,kBAAkB4I,2BAA2B,CAAE77B,MAAAA,IAC3EA,EAAM6Z,OAAO,aAAc,CAAEiyB,YAAa,gBAAiBC,QAAAA,GAFb,CAGhD,EACA+B,0BAAyB,SAAE9tC,GACzB,IAAM+rC,EAAU/rC,EAAMiC,MAAMqpC,SAASxjB,cAChCikB,GACL/rC,EAAM6Z,OAAO,gBAAiB,CAAEiyB,YAAa,gBAAiBC,QAAAA,GAChE,EACAhQ,mBAAkB,SAAE/7B,EAAKia,GAAe,IAAR5D,GAAI03B,EAAAA,GAAAA,GAAA,KAAAC,EAAAA,GAAAA,GAAA/zB,GAAAA,IAClCja,EAAMiC,MAAMgxB,kBAAkB8I,mBAAkBt7B,GAAC,CAC/CT,MAAAA,GACGqW,GAEP,EAGA2lB,4BAA2B,SAAEh8B,GAC3B,IAAIA,EAAMiC,MAAMqpC,SAASI,eAAzB,CACA,IAAMK,EAAU/rC,EAAMiC,MAAMgxB,kBAAkB+I,4BAA4B,CAAEh8B,MAAAA,IAE5EA,EAAM6Z,OAAO,aAAc,CAAEiyB,YAAa,iBAAkBC,QAAAA,GAHb,CAIjD,EACAkC,2BAA0B,SAAEjuC,GAC1B,IAAM+rC,EAAU/rC,EAAMiC,MAAMqpC,SAASI,eAChCK,GACL/rC,EAAM6Z,OAAO,gBAAiB,CAAEiyB,YAAa,iBAAkBC,QAAAA,GACjE,EACAmC,oBAAmB,SAAEluC,EAAOmuC,GAC1B,IAAM5S,EAAWv7B,EAAMiC,MAAMypC,eAAehrC,QAAO,SAACgU,GAAE,OAAKA,IAAOy5B,CAAO,IACzEnuC,EAAM6Z,OAAO,oBAAqB0hB,EACpC,EAGAW,mBAAkB,SAAEl8B,GAClB,IAAIA,EAAMiC,MAAMqpC,SAASzS,MAAzB,CACA,IAAMkT,EAAU/rC,EAAMiC,MAAMgxB,kBAAkBiJ,mBAAmB,CAAEl8B,MAAAA,IACnEA,EAAM6Z,OAAO,aAAc,CAAEiyB,YAAa,QAASC,QAAAA,GAFb,CAGxC,EACAqC,kBAAiB,SAAEpuC,GACjB,IAAM+rC,EAAU/rC,EAAMiC,MAAMqpC,SAASzS,MAChCkT,GACL/rC,EAAM6Z,OAAO,gBAAiB,CAAEiyB,YAAa,QAASC,QAAAA,GACxD,EAGAE,WAAU,SAAEjsC,EAAOi/B,GACjBj/B,EAAM6Z,OAAO,aAAcolB,EAC7B,EACAoP,iBAAgB,SAAAl0B,GAA0C,IAAtCnY,EAAQmY,EAARnY,SAAU6X,EAAMM,EAANN,OAAQ5X,EAAKkY,EAALlY,MAAOwX,EAASU,EAATV,UAErCwlB,EAAQh9B,EAAMiqC,QACpB,GAAIzyB,EAAUG,SAASmH,qBAAmC,IAAVke,GAA0C,OAAjBh9B,EAAMspC,OAAiB,CAC9F,IAAMA,EAAS,IAAI+C,GAAAA,GAAO,UAAW,CAAE7E,OAAQ,CAAExK,MAAAA,KACjDsM,EAAOgD,UAEP10B,EAAO,YAAa0xB,GACpBvpC,EAAS,kBAAmBupC,EAC9B,CACF,EACAiD,qBAAoB,SAAAp0B,GAAqB,IAAjBP,EAAMO,EAANP,OAAQ5X,EAAKmY,EAALnY,MAC9BA,EAAMspC,QAAUtpC,EAAMspC,OAAOkD,aAC7B50B,EAAO,YAAa,KACtB,IAIJ,Y,iRCrSA,IAAM60B,GAAa,SAAH3sC,EAAAa,GAA+C,IAAzC6W,EAAS1X,EAAT0X,UAAWI,EAAM9X,EAAN8X,OAAY80B,EAAI/rC,EAAJ+rC,KAAMpoC,EAAK3D,EAAL2D,MAC3CkjC,EAAS,CAAC,EAEhB,OADAmF,KAAInF,EAAQkF,EAAMpoC,GACXkT,EACJuZ,IACAC,kBACA4b,cAAc,CAAEpF,OAAAA,IAChBzqC,MAAK,SAAAqF,GACJwV,EAAO,cAAe,CAACxV,IACvBwV,EAAO,iBAAkBxV,EAC3B,GACJ,EAEMyqC,GAAmB,SAAH5pC,EAAAC,GAAyD,IAAnDsU,EAASvU,EAATuU,UAAWI,EAAM3U,EAAN2U,OAAY80B,EAAIxpC,EAAJwpC,KAAMpoC,EAAKpB,EAALoB,MAAOm5B,EAAQv6B,EAARu6B,SACxDjoB,EAAW,CAAC,EAElB,OADAm3B,KAAIn3B,EAAUk3B,EAAMpoC,GACbkT,EACJuZ,IACAC,kBACA8b,2BAA2B,CAAEt3B,SAAAA,IAC7BzY,MAAK,SAAAqF,GACkB,YAAlBA,EAAO0kB,OACTlP,EAAO,uBAAwB,CAAEtY,KAAMgF,MAAAA,IAEvCsT,EAAO,uBAAwB,CAAEtY,KAAMgF,MAAOm5B,GAElD,GACJ,EAWasP,GAAc,CACzBC,aAAc,iBACdC,YAAa,mBACbC,iBAAkB,CAChBC,IAAK,8BACLzW,IAAK,gBAGP0R,OAAQ,SACRgF,mBAAoB,CAClBD,IAAK,gCACLzW,IAAK,yBAEP2W,mBAAoB,CAClBF,IAAK,+BACLzW,IAAK,wBAEP4W,aAAc,CACZH,IAAK,8BACLzW,IAAK,gBAEP6W,cAAe,CACbJ,IAAK,yBACLzW,IAAK,kBAEP8W,cAAe,CACbL,IAAK,yBACLzW,IAAK,kBAEP+W,YAAa,CACXN,IAAK,uBACLzW,IAAK,gBAEPgX,mBAAoB,CAClBP,IAAK,+BACLzW,IAAK,wBAEPiX,iBAAkB,CAChBR,IAAK,6BACLzW,IAAK,sBAGPkX,oBAAqB,CACnBT,IAAK,2DACLzW,IAAK,6BACL3F,IAAK8b,IAEPgB,gCAAiC,CAC/BV,IAAK,qDACLzW,IAAK,uBACL3F,IAAK8b,KAMHiB,GAAgB,CACpB9tC,M,uWAAKxB,CAAA,GAHqBjB,OAAO6F,YAAY7F,OAAOD,KAAKyvC,IAAavwC,KAAI,SAAAuR,GAAG,MAAI,CAACA,EAAK,KAAK,MAI5FqI,UAAW,CACT23B,qBAAoB,SAAE/tC,EAAKqD,GAAmB,IAAf/D,EAAI+D,EAAJ/D,KAAMgF,EAAKjB,EAALiB,MACnCqoC,KAAI3sC,EAAOV,EAAMgF,EACnB,EACA0pC,kBAAiB,SAAEhuC,EAAKsD,GAAY,IAARhE,EAAIgE,EAAJhE,KAC1BqtC,KAAI3sC,EAAOV,EAAM,KACnB,EACA2uC,sBAAqB,SAAEjuC,GACrBzC,OAAOD,KAAKyvC,IAAansB,SAAQ,SAAA7S,GAC/B4+B,KAAI3sC,EAAO+N,EAAK,KAClB,GACF,EAEAoxB,eAAc,SAAEn/B,EAAOsB,GACrB/D,OAAOkT,QAAQs8B,IAAansB,SAAQ,SAACpkB,GACnC,IAAAumC,GAAA//B,EAAAA,EAAAA,GAAsBxG,EAAG,GAAlB8C,EAAIyjC,EAAA,GAAEz+B,EAAKy+B,EAAA,GAClBmL,EAA8B5pC,EAAtB6oC,IAAKT,OAAI,IAAAwB,EAAG5pC,EAAK4pC,EACzBvB,KAAI3sC,EAAOV,EAAM6uC,KAAI7sC,EAAK8sC,UAAW1B,GACvC,GACF,GAEFp1B,QAAS,CACP+2B,iBAAgB,SAAAx2B,EAAAC,GAA2D,IAAvDN,EAASK,EAATL,UAAWxX,EAAK6X,EAAL7X,MAAO4X,EAAMC,EAAND,OAAsBtY,GAANuY,EAAR9X,SAAkB+X,EAAJxY,MAAMgF,EAAKwT,EAALxT,MAC1Dm5B,EAAW0Q,KAAInuC,EAAOV,GACtB9C,EAAMuwC,GAAYztC,GACxB,IAAK9C,EAAK,MAAM,IAAIS,MAAM,+BAC1B,IAAAqxC,EAA8C9xC,EAAtCk6B,IAAKgW,OAAI,IAAA4B,EAAG9xC,EAAG8xC,EAAAC,EAAuB/xC,EAArBu0B,IAAAA,OAAG,IAAAwd,EAAG9B,GAAU8B,EACzC32B,EAAO,oBAAqB,CAAEtY,KAAAA,IAE9ByxB,EAAI,CAAEvZ,UAAAA,EAAWI,OAAAA,GAAU,CAAE80B,KAAAA,EAAMpoC,MAAAA,EAAOm5B,SAAAA,IAAW,OAC5C,SAACzgC,GACN6kB,QAAQC,KAAK,oCAAqC9kB,GAClD4a,EAAO,uBAAwB,CAAEtY,KAAAA,EAAMgF,MAAOm5B,GAChD,GACJ,EACAkK,OAAM,SAAA3vB,IACJJ,EADcI,EAANJ,QACD,wBACT,IAIJ,Y,8QCjIAjI,GAAAA,GAAAA,IACE6+B,GAAAA,KAcEC,GAAAA,E,upBCrBG,IACMC,GAAgB,IAAIlT,KAAK,cAGzBmT,GAA+B,KAE/BlpB,GAAe,CAE1BmpB,OAAO,EAEPC,YAAa,CACXC,cAAe,EACfjM,MAAO,GAKTkM,aAAc,CACZC,SAAU,GACVC,OAAQ,CACNC,sBAAsB,EACtBC,aAAa,GAEfC,YAAa,CACXC,eAAgB,CAAC,OAAQ,MAAO,WAIpCC,IAAK,KAELC,MAAO,MAGIC,GAAYhxC,GAAAA,GAAA,GACpBinB,GAAaopB,aAAW,IAC3BC,cDzBoC,IC4BzBW,GAAmB,SAACtmC,EAAO7E,EAAOorC,GAC7C,IAAMC,EAAWxmC,EAAMu3B,QAAQp8B,GACzBsrC,EAAWD,EAAWD,EACtBG,GAAQxwC,EAAAA,EAAAA,GAAO8J,GAKrB,OAHA0mC,EAASjpB,OAAO+oB,EAAU,GAE1BE,EAASjpB,OAAOkpB,KAAMF,EAAU,EAAGC,EAAS9wC,OAAS,GAAI,EAAGuF,GACrDurC,CACT,EAEME,GAAY,SAACryC,EAAMsyC,GAAQ,OAAAxxC,GAAAA,GAAA,GAC5Bd,GAAI,IACPuyC,MAAOD,EACPE,WAAY1U,KAAK2U,MACjBC,SArDqB,GAqDJ,EAGbC,GAAiB,SAAC3yC,GAAI,OAAKA,EAAKwyC,WAAa,GAAKxyC,EAAK0yC,SAAW,CAAC,EAEnEE,GAAe,SAACtwC,GACpBA,EAAM+uC,aAAe/uC,EAAM+uC,cAAgB,CACzCE,OAAQ,CAAC,EACTG,YAAa,CAAC,GAEhB7xC,OAAOkT,QAAQgV,GAAaspB,aAAaE,QAAQruB,SAAQ,SAAA9gB,GAAY,IAAAa,GAAAqC,EAAAA,EAAAA,GAAAlD,EAAA,GAAVd,EAAC2B,EAAA,GAAEwC,EAACxC,EAAA,GAC5C,iBAANwC,GAA+B,kBAANA,IACpC0e,QAAQC,KAAK,qBAADnjB,OAAsBK,EAAC,qCACnC2tC,KAAI3sC,EAAM+uC,aAAaE,OAAQjwC,EAAGymB,GAAaspB,aAAaE,OAAOjwC,IACrE,IACAzB,OAAOkT,QAAQgV,GAAaspB,aAAaK,aAAaxuB,SAAQ,SAAA3d,GAAY,IAAAC,GAAAF,EAAAA,EAAAA,GAAAC,EAAA,GAAVjE,EAACkE,EAAA,GAAEC,EAACD,EAAA,GAC9DL,MAAM2G,QAAQrG,KAClB0e,QAAQC,KAAK,0BAADnjB,OAA2BK,EAAC,qCACxC2tC,KAAI3sC,EAAM+uC,aAAaK,YAAapwC,EAAGymB,GAAaspB,aAAaK,YAAYpwC,IAC/E,GACF,EAwDMuxC,GAAgB,WAAiB,QAAAC,EAAAvuC,UAAAlD,OAAb0xC,EAAQ,IAAA5tC,MAAA2tC,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAARD,EAAQC,GAAAzuC,UAAAyuC,GAEhC,IAAMC,EAAcC,KAClBH,EAASj0C,KAAI,SAAAq0C,GAAC,OAAIhuC,MAAM2G,QAAQqnC,GAAKA,EAAI,EAAE,KAC3CpyC,QAAO,SAAA43B,GAAK,OACZ94B,OAAO4N,UAAU6f,eAAe3f,KAAKgrB,EAAO,SAC5C94B,OAAO4N,UAAU6f,eAAe3f,KAAKgrB,EAAO,cAC5C94B,OAAO4N,UAAU6f,eAAe3f,KAAKgrB,EAAO,SAC5C94B,OAAO4N,UAAU6f,eAAe3f,KAAKgrB,EAAO,YAAY,IAEpDya,EAAUC,KAAQJ,EAAa,QAC/BK,EAAiBzzC,OAAOkT,QAAQqgC,GAASt0C,KAAI,SAAA6G,GAAqB,IAAAC,GAAAN,EAAAA,EAAAA,GAAAK,EAAA,GAAnBqpC,EAAIppC,EAAA,GAAE2tC,EAAO3tC,EAAA,GAIhE,GAFA2tC,EAAQvxC,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEuxC,UAAYtxC,EAAEsxC,UAAY,GAAK,CAAC,IAErDxE,EAAKltC,WAAW,eAAgB,CAClC,IAEI2xC,EAFEC,EAAkBC,KAAcJ,GAAS,SAAAp5B,GAAY,MAAqB,yBAArBA,EAATy5B,SAAoD,IAStG,OALEH,EADEC,EAAkB,EACRH,EAAQzvC,MAAM4vC,GAGdH,EAEPM,KAASJ,GAAW,SAACxxC,EAAGC,GAC7B,OAAID,EAAE+sC,OAAS9sC,EAAE8sC,MACb/sC,EAAE2xC,YAAc1xC,EAAE0xC,WACF,oBAAhB3xC,EAAE2xC,WACG3xC,EAAEoa,KAAK,KAAOna,EAAEma,KAAK,EAGhC,GACF,CAAO,OAAI2yB,EAAKltC,WAAW,UAElBgyC,KAAUP,GAEVA,CAEX,IACA,OAAOL,KAAQI,GACZtxC,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEuxC,UAAYtxC,EAAEsxC,UAAY,GAAK,CAAC,GACtD,EAwGa96B,GAAY,CACvBq7B,uBAAsB,SAAEzxC,EAAO0xC,GACxBlzC,GAAA,GAAQmzC,KAAUlsB,IACzB,EACAmsB,qBAAoB,SAAE5xC,EAAO0xC,GAC3B,IAAMG,EAAOH,EAASI,QACtB9xC,EAAMsvC,IAAMuC,EACZ,IAAItC,EAAQvvC,EAAMuvC,MACdA,GAASA,EAAMU,QAAUyB,EAASK,MACpClwB,QAAQC,KAAK,8DACbytB,EAAQ,MAKV,IAAAyC,EAvN0B,SAACzC,EAAOsC,GACpC,IAAMzvC,EAAS,CAAE6vC,OAAQ,KAAMC,MAAO,KAAMC,YAAY,GAClDC,EAAa/B,GAAed,GAAS,CAAC,GACtC8C,EAAYhC,GAAewB,GAAQ,CAAC,GA8B1C,OA7BKQ,GAAaD,GAChBhwC,EAAO+vC,YAAa,EACpBtwB,QAAQwpB,MAAM,wEACdjpC,EAAO6vC,OAAS1C,EAChBntC,EAAO8vC,MAAQL,IACLO,GAAcC,GACxBxwB,QAAQwpB,MAAM,sFACdjpC,EAAO6vC,OAASJ,EAChBzvC,EAAO8vC,MAAQ3C,GACN6C,GAAcC,GACvBxwB,QAAQwpB,MAAM,wDACVwG,EAAK3B,aAAeX,EAAMW,YAAc2B,EAAKzB,WAAab,EAAMa,UAClEvuB,QAAQwpB,MAAM,qEACdjpC,EAAO6vC,OAAS1C,EAChBntC,EAAO8vC,MAAQL,IAEfhwB,QAAQwpB,MAAM,8DACVwG,EAAK3B,WAAaX,EAAMW,YAC1B9tC,EAAO6vC,OAAS1C,EAChBntC,EAAO8vC,MAAQL,IAEfzvC,EAAO6vC,OAASJ,EAChBzvC,EAAO8vC,MAAQ3C,MAInB1tB,QAAQwpB,MAAM,gDACdjpC,EAAO+vC,YAAa,GAEf/vC,CACT,CAqLyCkwC,CAFrC/C,EAtCyB,SAACA,GAC5B,OAAKA,GAEDA,EAAMa,SA7PW,IA8PnBvuB,QAAQwpB,MAAM,2FAGdxpB,QAAQwpB,MAAM,wBAGZkE,EAAMa,SApQW,IAqQnBvuB,QAAQwpB,MAAM,mGAGV1lC,OAAO4sC,mBACL5sC,OAAO4sC,kBAAkBC,oBAC3B3wB,QAAQwpB,MAAM,sCACP1lC,OAAO4sC,kBAAkBC,kBAAkBnnC,KAAK,CAAC,EAAG,oBAAqB,CAAEvI,KAAMysC,EAAMa,SAAUqC,GA3QzF,GA2QwGlD,IAKtHA,GArBYA,CAsBrB,CAeYmD,CAAcnD,GAEqCsC,GAArDI,EAAMD,EAANC,OAAQC,EAAKF,EAALE,MAAOS,EAAWX,EAAXW,YAEfC,EAAUlB,EAASmB,WAAanE,GAChCoE,EAAgBF,EAAUpD,GAAe/pB,GAAaopB,YACxDD,GAAQ,EAUZ,GARe,OAAXqD,IACFpwB,QAAQwpB,MAAM,mCAAD1sC,OAAoCi0C,EAAU,MAAQ,WAAU,UAC7EX,EAASlC,GAAU,CACjBlB,YAAWrwC,GAAA,GAAOs0C,GAClB/D,aAAYvwC,GAAA,GAAOinB,GAAaspB,kBAI/B4D,GAAeV,GAAUC,EAAO,CACnCrwB,QAAQwpB,MAAM,qCAEd,IAAA0H,EAAwDd,EAAfe,GAAnBD,EAAd7C,WAA4B6C,EAAZ3C,UAA2BrlC,EAAAA,GAAAA,GAAAgoC,EAAAE,KACVC,GAAchB,EAA/ChC,WAA+CgC,EAA/B9B,UAA0BrlC,EAAAA,GAAAA,GAAKmnC,EAAKiB,KAC5DvE,GAASn6B,KAAQu+B,EAAYE,GAC7BrxB,QAAQwpB,MAAM,QAAD1sC,OAASiwC,EAAQ,QAAU,eAAe,YACzD,CAEA,IACIwE,EACAC,EAFEC,EA1MkB,SAACrB,EAAQC,GACnC,OAAOrvC,MAAMC,KAAK,IAAIiF,IAAI,GAADpJ,QAAAU,EAAAA,EAAAA,GACpB9B,OAAOD,MAAKi2C,EAAAA,GAAAA,KAAOtB,GAAU,CAAC,GAAGpD,aAAe,CAAC,MAAGxvC,EAAAA,EAAAA,GACpD9B,OAAOD,MAAKi2C,EAAAA,GAAAA,KAAOrB,GAAS,CAAC,GAAGrD,aAAe,CAAC,OAEvD,CAqMwB2E,CAAavB,EAAQC,GAGrCtD,GAEF/sB,QAAQwpB,MAAM,uBACd+H,EAzMqB,SAACnB,EAAQC,EAAOoB,GACzC,OAAKpB,EAAMrD,YACNoD,EAAOpD,YACLtxC,OAAO6F,YAAYkwC,EAAY92C,KAAI,SAAAi3C,GACxC,IAAMC,EAAazB,EAAOpD,YAAY4E,GAChCE,EAAYzB,EAAMrD,YAAY4E,GAEpC,MAAO,CAACA,EAAMnuB,QAAQouB,EAAaC,EAAYD,EAAaC,IAAc,GAC5E,KANgCzB,EAAMrD,YADPoD,EAAOpD,WAQxC,CAgMmB+E,CAAY3B,EAAQC,EAAOoB,GACxChD,GAAa2B,GACb3B,GAAa4B,GACbmB,EArJqB,SAACpB,EAAQC,EAAOoB,GACzC,IAAKpB,EAAO,OAAOD,EACnB,IAAKA,EAAQ,OAAOC,EACpB,IAAkB2B,EAAiC5B,EAA3CjD,SAA4BgE,GAAUjoC,EAAAA,GAAAA,GAAKknC,EAAMjnC,IACvC8oC,EAAiB5B,EAA3BlD,SAWF+E,EAAYv1C,GAAA,GAAQw0C,GACpBgB,EAAezD,GAAcuD,EAAcD,GA4BjD,OA3BAG,EAAapzB,SAAQ,SAAA9I,GAAmD,IAAhD40B,EAAI50B,EAAJ40B,KAAiB4E,GAAFx5B,EAATo5B,UAAoBp5B,EAATw5B,WAAoBv3B,GAAFjC,EAAPm8B,QAAan8B,EAAJiC,MAC3D,GAAI2yB,EAAKltC,WAAW,KAClBqiB,QAAQrR,MAAM,kEAAD7R,OAAmE+tC,EAAI,mDAGtF,OAAQ4E,GACN,IAAK,MACH3E,KAAIoH,EAAcrH,EAAM3yB,EAAK,IAC7B,MACF,IAAK,kBACH4yB,KAAIoH,EAAcrH,EAAM7pC,MAAMC,KAAK,IAAIiF,IAAIomC,KAAI4F,EAAcrH,IAAO/iB,IAAI5P,EAAK,MAC7E,MACF,IAAK,uBACH,IAAMm6B,EAAS,IAAInsC,IAAIomC,KAAI4F,EAAcrH,IACzCwH,EAAM,OAAQn6B,EAAK,IACnB4yB,KAAIoH,EAAcrH,EAAM7pC,MAAMC,KAAKoxC,IACnC,MAEF,IAAK,oBACH,IAAAC,GAAAnxC,EAAAA,EAAAA,GAA0B+W,EAAI,GAAvBzV,EAAK6vC,EAAA,GAAEzE,EAAQyE,EAAA,GACtBxH,KAAIoH,EAAcrH,EAAM+C,GAAiBtB,KAAI4F,EAAcrH,GAAOpoC,EAAOorC,IACzE,MAEF,QACE7tB,QAAQrR,MAAM,+BAAD7R,OAAgC2yC,EAAS,2DAE5D,IACA9yC,GAAAA,GAAA,GAAYu1C,GAAY,IAAE/E,SAAUgF,GACtC,CAwGmBI,CAAYnC,EAAOlD,aAAcmD,EAAMnD,gBAEpDqE,EAAanB,EAAOpD,YACpBwE,EAAapB,EAAOlD,cAGtBqE,EA5GuB,SAACA,GAAqD,IAAzCiB,EAASpyC,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAGwjB,GAAaopB,YAC3DzsC,EAAM5D,GAAA,GAAQ40C,GACZE,EAAc/1C,OAAOD,KAAK81C,GAEhC,GAAIA,EAAWvQ,OA7NiB,KA6NcuQ,EAAWvQ,OAAS8L,GAA8B,CAC9F9sB,QAAQwpB,MAAM,sCACd,IAAMiJ,EAAe,IAAIvsC,IAAIxK,OAAOD,KAAK+2C,IAGzCjyC,EAAS,CAAC,EACVkxC,EAAY1yB,SAAQ,SAAA6yB,GACda,EAAaxrC,IAAI2qC,KACnBrxC,EAAOqxC,GAAQL,EAAWK,GAE9B,IAGIL,EAAWvQ,QAAU8L,KAEvB9sB,QAAQwpB,MAAM,uCACd9tC,OAAOD,KAAK+2C,GAAWzzB,SAAQ,SAAA6yB,GAAUrxC,EAAOqxC,GAAQ,CAAE,IAE9D,MAAWL,EAAWvQ,MAAQ,GAAKuQ,EAAWvQ,MAAQ,MACpDhhB,QAAQwpB,MAAM,uCACdiI,EAAY1yB,SAAQ,SAAA6yB,GAAUrxC,EAAOqxC,GAAQ,CAAE,KAGjD,OADArxC,EAAOygC,MAAQ,EACRzgC,CACT,CAgFiBmyC,CAAYnB,GAEzBnB,EAAOpD,YAAWrwC,GAAAA,GAAA,GAAQs0C,GAAkBM,GAC5CnB,EAAOlD,aAAYvwC,GAAAA,GAAA,GAAQinB,GAAaspB,cAAiBsE,GAEzDrzC,EAAM4uC,MAAQA,GAAS+D,EACvB3yC,EAAMuvC,MAAQ0C,EAEVC,GAASD,IAAWjyC,EAAM4uC,QAC5B5uC,EAAMuvC,MAAMW,WAAahxC,KAAKs1C,IAAItC,EAAMhC,WAAY+B,EAAO/B,aAE7DlwC,EAAM6uC,YAAc7uC,EAAMuvC,MAAMV,YAChC7uC,EAAM+uC,aAAe/uC,EAAMuvC,MAAMR,YACnC,EACA0F,QAAO,SAAEz0C,EAAKgY,GAAmB,IAAfy7B,EAAIz7B,EAAJy7B,KAAMnvC,EAAK0T,EAAL1T,MACtBtE,EAAM6uC,YAAY4E,GAAQnvC,EAC1BtE,EAAM4uC,OAAQ,CAChB,EACA8F,cAAa,SAAE10C,EAAKkY,GAAmB,IAAfw0B,EAAIx0B,EAAJw0B,KAAMpoC,EAAK4T,EAAL5T,MACxBooC,EAAKltC,WAAW,KAClBqiB,QAAQrR,MAAM,iDAAD7R,OAAkD+tC,EAAI,kBAGrEC,KAAI3sC,EAAM+uC,aAAcrC,EAAMpoC,GAC9BtE,EAAM+uC,aAAaC,SAAW,GAAHrwC,QAAAU,EAAAA,EAAAA,GACtBW,EAAM+uC,aAAaC,UAAQ,CAC9B,CAAEsC,UAAW,MAAO5E,KAAAA,EAAM3yB,KAAM,CAACzV,GAAQ4sC,UAAW1V,KAAK2U,SAE3DnwC,EAAM4uC,OAAQ,EAChB,EACA+F,wBAAuB,SAAE30C,EAAKmY,GAAmB,IAAfu0B,EAAIv0B,EAAJu0B,KAAMpoC,EAAK6T,EAAL7T,MACtC,GAAIooC,EAAKltC,WAAW,KAClBqiB,QAAQrR,MAAM,iDAAD7R,OAAkD+tC,EAAI,qBADrE,CAIA,IAAMkI,EAAa,IAAI7sC,IAAIomC,KAAInuC,EAAM+uC,aAAcrC,IACnDkI,EAAWjrB,IAAIrlB,GACfqoC,KAAI3sC,EAAM+uC,aAAcrC,GAAIrtC,EAAAA,EAAAA,GAAMu1C,IAClC50C,EAAM+uC,aAAaC,SAAW,GAAHrwC,QAAAU,EAAAA,EAAAA,GACtBW,EAAM+uC,aAAaC,UAAQ,CAC9B,CAAEsC,UAAW,kBAAmB5E,KAAAA,EAAM3yB,KAAM,CAACzV,GAAQ4sC,UAAW1V,KAAK2U,SAEvEnwC,EAAM4uC,OAAQ,CARd,CASF,EACAiG,2BAA0B,SAAE70C,EAAKoY,GAAmB,IAAfs0B,EAAIt0B,EAAJs0B,KAAMpoC,EAAK8T,EAAL9T,MACzC,GAAIooC,EAAKltC,WAAW,KAClBqiB,QAAQrR,MAAM,iDAAD7R,OAAkD+tC,EAAI,qBADrE,CAIA,IAAMkI,EAAa,IAAI7sC,IAAIomC,KAAInuC,EAAM+uC,aAAcrC,IACnDkI,EAAU,OAAQtwC,GAClBqoC,KAAI3sC,EAAM+uC,aAAcrC,GAAIrtC,EAAAA,EAAAA,GAAMu1C,IAClC50C,EAAM+uC,aAAaC,SAAW,GAAHrwC,QAAAU,EAAAA,EAAAA,GACtBW,EAAM+uC,aAAaC,UAAQ,CAC9B,CAAEsC,UAAW,uBAAwB5E,KAAAA,EAAM3yB,KAAM,CAACzV,GAAQ4sC,UAAW1V,KAAK2U,SAE5EnwC,EAAM4uC,OAAQ,CARd,CASF,EACAkG,4BAA2B,SAAE90C,EAAK2Y,GAA6B,IAAzB+zB,EAAI/zB,EAAJ+zB,KAAMpoC,EAAKqU,EAALrU,MAAOorC,EAAQ/2B,EAAR+2B,SACjD,GAAIhD,EAAKltC,WAAW,KAClBqiB,QAAQrR,MAAM,iDAAD7R,OAAkD+tC,EAAI,qBADrE,CAIA,IAAMkI,EAAazG,KAAInuC,EAAM+uC,aAAcrC,GACrCqI,EAAgBtF,GAAiBmF,EAAYtwC,EAAOorC,GAC1D/C,KAAI3sC,EAAM+uC,aAAcrC,EAAMqI,GAC9B/0C,EAAM+uC,aAAaC,SAAW,GAAHrwC,QAAAU,EAAAA,EAAAA,GACtBW,EAAM+uC,aAAaC,UAAQ,CAC9B,CAAEsC,UAAW,oBAAqB5E,KAAAA,EAAM3yB,KAAM,CAACzV,GAAQ4sC,UAAW1V,KAAK2U,SAEzEnwC,EAAM4uC,OAAQ,CARd,CASF,EACAoG,YAAW,SAAEh1C,EAAK4Y,GAAgB,IAAZ8jB,EAAQ9jB,EAAR8jB,SACpB18B,EAAM+uC,aAAaC,SAAWuB,GAAcvwC,EAAM+uC,aAAaC,UAC/DhvC,EAAMuvC,MAAQQ,GAAU,CACtBlB,aAAa0E,EAAAA,GAAAA,IAAMvzC,EAAM6uC,aACzBE,cAAcwE,EAAAA,GAAAA,IAAMvzC,EAAM+uC,eACzBrS,EACL,GAyBF,SAtB0B,CACxB18B,MAAKxB,GAAA,GACAmzC,KAAUlsB,KAEfrP,UAAAA,GACAkB,QAAS,CACP29B,sBAAqB,SAAAp8B,GAAwD,IAApD7Y,EAAK6Y,EAAL7Y,MAAOwX,EAASqB,EAATrB,UAAWI,EAAMiB,EAANjB,OAAMwB,EAAAnX,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAwB,CAAC,EAACizC,EAAA97B,EAApB+7B,MAAAA,OAAK,IAAAD,GAAQA,EAC5DE,EAAWp1C,EAAM4uC,OAASuG,EAEhC,GADAtzB,QAAQ2I,IAAI4qB,GACPA,EAAL,CACAx9B,EAAO,cAAe,CAAE8kB,SAAUllB,EAAUnW,MAAM8X,YAAY44B,MAC9D,IAAMvK,EAAS,CAAE6N,uBAAwB,CAAE,aAAcr1C,EAAMuvC,QAC/D/3B,EAAUuZ,IAAIC,kBACX4b,cAAc,CAAEpF,OAAAA,IAChBzqC,MAAK,SAACuE,GACLsW,EAAO,uBAAwBtW,GAC/BtB,EAAM4uC,OAAQ,CAChB,GARmB,CASvB,I,gnBC7aG,IAAMnpB,GAAe,CAC1B6vB,UAAW,GACXC,QAAQ,EACRC,YAAa,KACbhyB,OAAQ,KACRiyB,cAAe,KACfC,aAAc,KACdC,MAAO,KACPC,gBAAiB,MAObC,IAJmBr3C,GAAA,GACpBinB,GAAaopB,aAGW,CAC3B7uC,MAAKxB,GAAA,GACAmzC,KAAUlsB,KAEfrP,UAAW,CACT0/B,2BAA0B,SAAE91C,GAC1BA,EAAMu1C,QAAS,EACfv1C,EAAM41C,iBAAkB,CAC1B,EACAG,sBAAqB,SAAE/1C,EAAKF,GAAiB,IAAbw1C,EAASx1C,EAATw1C,UAC9Bt1C,EAAMs1C,UAAYA,EAAU94C,KAAI,SAAAiI,GAO9B,OANAA,EAAEuxC,cAAgBvxC,EAAEwxC,eACL,eAAXxxC,EAAEnF,KACJmF,EAAEyxC,KAAO,CAAC,SAAU,WAEpBzxC,EAAEyxC,KAAO,CAACzxC,EAAE0xC,KAEP1xC,CACT,GACF,EACA2xC,oBAAmB,SAAEp2C,EAAKW,GAA6B,IAAzB6iB,EAAM7iB,EAAN6iB,OAAQiyB,EAAa90C,EAAb80C,cACpCz1C,EAAMu1C,QAAS,EACfv1C,EAAM41C,iBAAkB,EACxB51C,EAAMwjB,OAASA,EACfxjB,EAAMy1C,cAAgBA,CACxB,EACAY,wBAAuB,SAAEr2C,EAAKiD,GAAoB,IAAhByyC,EAAYzyC,EAAZyyC,aAChC11C,EAAM01C,aAAeA,CACvB,EACAY,iBAAgB,SAAEt2C,EAAKkD,GAAmB,IAAfwpC,EAAIxpC,EAAJwpC,KAAMpoC,EAAKpB,EAALoB,MAC/BiyC,GAAAvzC,EAAAA,EAAAA,GAA6B0pC,EAAI,GAC3B8J,EAAS,CADHD,EAAA,GAAKA,EAAA,GAAQA,EAAA,IAGzB5J,KAAI3sC,EAAM21C,MAAOjJ,EAAMpoC,GAGnBooC,EAAK3tC,OAASy3C,EAAOz3C,QACvB4tC,KAAI3sC,EAAM21C,MAAOa,EAAQ7E,KAAUxD,KAAInuC,EAAM21C,MAAOa,IAExD,EACAC,gBAAe,SAAEz2C,GACfA,EAAM21C,MAAQhE,KAAU3xC,EAAMwjB,OAChC,GAEFlM,QAAS,CACPo/B,mBAAkB,SAAArzC,GAASA,EAALrD,MAAsC,IAA/BwX,EAASnU,EAATmU,UAAqBI,GAAFvU,EAARtD,SAAgBsD,EAANuU,QAChDJ,EAAUuZ,IAAIC,kBAAkB2lB,0BAC7B55C,MAAK,SAAAu4C,GAAS,OAAI19B,EAAO,wBAAyB,CAAE09B,UAAAA,GAAY,GACrE,EACAsB,eAAc,SAAAtzC,GAA0C,IAAtCtD,EAAKsD,EAALtD,MAAOwX,EAASlU,EAATkU,UAAWzX,EAAQuD,EAARvD,SAAU6X,EAAMtU,EAANsU,OAC5CJ,EAAUuZ,IAAIC,kBAAkB6lB,wBAC7B95C,MAAK,SAAA+5C,GACAA,EAAgBtmC,MACmB,MAAjCsmC,EAAgBtmC,MAAMsW,QACxBgwB,EAAgBtmC,MAAMmS,OAAO5lB,MAAK,SAAAg6C,GAC5B,6BAA6BhkC,KAAKgkC,EAAUvmC,QAC9CoH,EAAO,6BAEX,IAGF7X,EAAS,2BAA4B,CAAE+2C,gBAAAA,GAE3C,IACyB,OAAvB92C,EAAM01C,cACRl+B,EAAUuZ,IAAIC,kBAAkBgmB,kCAC7Bj6C,MAAK,SAAAk6C,GAAmB,OAAIl3C,EAAS,+BAAgC,CAAEk3C,oBAAAA,GAAsB,GAEpG,EACAC,yBAAwB,SAAAr/B,EAAAC,GAAoD,IAAhD9X,EAAK6X,EAAL7X,MAAO4X,EAAMC,EAAND,OAAsBk/B,GAANj/B,EAAR9X,SAA6B+X,EAAfg/B,iBACjDtzB,EAASxjB,EAAMwjB,QAAU,CAAC,EAC1BiyB,EAAgB,IAAI1tC,IAC1B+uC,EAAgBK,QAAQv2B,SAAQ,SAAAw2B,GAC9B,IAAM1K,EAAO,CAAC0K,EAAEC,MAAOD,EAAErpC,KACrBqpC,EAAEE,IAGJF,EAAEE,GAAG12B,SAAQ,SAAA22B,GAAC,OAAI9B,EAAc9rB,IAAI,GAAAhrB,OAAI+tC,EAAM,CAAA6K,IAAG5rC,KAAK,QAAQ,IAWhEghC,KAAInpB,EAAQkpB,EATI,SAAV8K,EAAWlzC,GACf,OAAIzB,MAAM2G,QAAQlF,IAAUA,EAAMvF,OAAS,GAAKuF,EAAM,GAAGmzC,MAChDnzC,EAAM8V,QAAO,SAACC,EAAK+8B,GACxB,OAAA54C,GAAAA,GAAA,GAAY6b,GAAG,IAAAvI,EAAAA,EAAAA,GAAA,GAAGslC,EAAEK,MAAM,GAAKD,EAAQJ,EAAEK,MAAM,KACjD,GAAG,CAAC,GAEGnzC,CAEX,CACkBkzC,CAAQJ,EAAE9yC,OAC9B,IACAud,QAAQ2I,IAAIhH,EAAO,aACnB5L,EAAO,sBAAuB,CAAE4L,OAAAA,EAAQiyB,cAAAA,IACxC79B,EAAO,kBACT,EACA8/B,6BAA4B,SAAA1/B,EAAAE,GAASF,EAALhY,MAAoD,IAA7C4X,EAAMI,EAANJ,OAAsBq/B,GAANj/B,EAARjY,SAAiCmY,EAAnB++B,qBACrDO,EAAU,SAAVA,EAAOr/B,EAA0Eu0B,EAAMryB,GAAQ,IAAlFzQ,EAAQuO,EAARvO,SAAU+tC,EAAWx/B,EAAXw/B,YAAaxoC,EAAKgJ,EAALhJ,MAAKyoC,EAAAz/B,EAAEpK,IAAAA,OAAG,IAAA6pC,EAAG,SAAQA,EAAEP,EAAKl/B,EAALk/B,MAAOp3C,EAAWkY,EAAXlY,YAChE43C,EAAUR,EAAQ,CAACA,EAAOtpC,GAAO,CAACA,GAClCwY,EAAM,CAAEoxB,YAAAA,EAAaxoC,MAAAA,EAAOlP,YAAAA,GAC9B4C,MAAM2G,QAAQI,IAChBA,EAASgX,SAAQ,SAAAw2B,GACfI,EAAQJ,EAAGS,EAAStxB,EACtB,IAEFomB,KAAItyB,EAAKw9B,EAAStxB,EACpB,EAEMmvB,EAAe,CAAC,EACtBuB,EAAoBr2B,SAAQ,SAAAk3B,GAAC,OAAIN,EAAQM,EAAG,EAAIpC,EAAa,IAC7D7zB,QAAQ2I,IAAIkrB,EAAa,YAAY,oBACrC99B,EAAO,0BAA2B,CAAE89B,aAAAA,GACtC,EAIAqC,eAAc,SAAA3/B,GAA0C,IAAtCZ,EAASY,EAATZ,UAAWxX,EAAKoY,EAALpY,MAAeD,GAAFqY,EAANR,OAAgBQ,EAARrY,UAEpCy3C,EAAU,SAAVA,EAAWlzC,GACf,MAAqB,YAAjB05B,EAAAA,GAAAA,GAAO15B,GACFA,EACEzB,MAAM2G,QAAQlF,GAChBA,EAAM9H,IAAIg7C,GAEVj6C,OAAOkT,QAAQnM,GAAO9H,KAAI,SAAAmc,GAAA,IAAAC,GAAA5V,EAAAA,EAAAA,GAAA2V,EAAA,GAAM,MAAO,CAAE8+B,MAAO,CAAnB7+B,EAAA,GAAGA,EAAA,IAAwB,GAEnE,EAmBMo/B,EAhBepH,KACnBrzC,OACGkT,QAAQzQ,EAAMwjB,QACdhnB,KACC,SAAAqc,GAAA,IAAAO,GAAApW,EAAAA,EAAAA,GAAA6V,EAAA,GAAEw+B,EAAKj+B,EAAA,GAAE6+B,EAAO7+B,EAAA,UAAM7b,OACnBD,KAAK26C,GACLz7C,KAAI,SAACuR,GAAG,MAAM,CAAEspC,MAAAA,EAAOtpC,IAAAA,EAAK,GAAE,KAKDtP,QAAO,SAAAwlB,GAAoB,IAAjBozB,EAAKpzB,EAALozB,MAAOtpC,EAAGkW,EAAHlW,IACrD,OAAQ0G,KAAQzU,EAAMwjB,OAAO6zB,GAAOtpC,GAAM/N,EAAM21C,MAAM0B,GAAOtpC,GAC/D,IAGiCvR,KAAI,SAAA2wB,GAAoB,IAAjBkqB,EAAKlqB,EAALkqB,MAAOtpC,EAAGof,EAAHpf,IACvCyV,EAASxjB,EAAMwjB,OAAO6zB,GAAOtpC,GAC7B4nC,EAAQ31C,EAAM21C,MAAM0B,GAAOtpC,GAG3BmqC,EAAU36C,OAAOkT,QAAQ+S,GACzB20B,EAAS56C,OAAOkT,QAAQklC,GAI9B,MAAQ,CAAE0B,MAAAA,EAAOtpC,IAAAA,EAAKzJ,MAAOkzC,EAAQj6C,OAAO6F,YAAYg1C,KAAeD,EAAQD,EAAOzjC,QACxF,IAEA+C,EAAUuZ,IAAIC,kBAAkBqnB,qBAAqB,CACnDC,QAAS,CACPnB,QAASa,KAGVj7C,MAAK,kBAAMya,EAAUuZ,IAAIC,kBAAkB6lB,uBAAuB,IAClE95C,MAAK,SAAA+5C,GAAe,OAAI/2C,EAAS,2BAA4B,CAAE+2C,gBAAAA,GAAkB,GACtF,EACAyB,iBAAgB,SAAAlrB,EAAAG,GAA2D,IAAvDhW,EAAS6V,EAAT7V,UAA0BzX,GAAVstB,EAALrtB,MAAaqtB,EAANzV,OAAgByV,EAARttB,UAAc2sC,EAAIlf,EAAJkf,KAAMpoC,EAAKkpB,EAALlpB,MAChEopB,EAA8B7qB,MAAM2G,QAAQkjC,GAAQA,EAAOA,EAAK8L,MAAM,OAAM5qB,GAAArZ,EAAAA,GAAAA,GAAAmZ,GAArE2pB,EAAKzpB,EAAA,GAAE7f,EAAG6f,EAAA,GAAKxZ,EAAIwZ,EAAApsB,MAAA,GACpBi3C,EAAQ,CAAC,EACf9L,KAAI8L,EAAOrkC,EAAM9P,GAajBkT,EAAUuZ,IAAIC,kBAAkBqnB,qBAAqB,CACnDC,QAAS,CACPnB,QAAS,CAAC,CACRE,MAAAA,EACAtpC,IAAAA,EACAzJ,MAfU,SAAVkzC,EAAWlzC,GACf,MAAqB,YAAjB05B,EAAAA,GAAAA,GAAO15B,GACFA,EACEzB,MAAM2G,QAAQlF,GAChBA,EAAM9H,IAAIg7C,GAEVj6C,OAAOkT,QAAQnM,GAAO9H,KAAI,SAAAuxB,GAAA,IAAAG,GAAAlrB,EAAAA,EAAAA,GAAA+qB,EAAA,GAAM,MAAO,CAAE0pB,MAAO,CAAnBvpB,EAAA,GAAGA,EAAA,IAAwB,GAEnE,CAOaspB,CAAQiB,QAIlB17C,MAAK,kBAAMya,EAAUuZ,IAAIC,kBAAkB6lB,uBAAuB,IAClE95C,MAAK,SAAA+5C,GAAe,OAAI/2C,EAAS,2BAA4B,CAAE+2C,gBAAAA,GAAkB,GACtF,EACA4B,kBAAiB,SAAArqB,EAAAG,GAAoD,IAAhDhX,EAAS6W,EAAT7W,UAAWxX,EAAKquB,EAALruB,MAAeD,GAAFsuB,EAANzW,OAAgByW,EAARtuB,UAAc2sC,EAAIle,EAAJke,KAC3DiM,EAA6BjM,EAAK8L,MAAM,OAAMI,GAAA51C,EAAAA,EAAAA,GAAA21C,EAAA,GAAvCtB,EAAKuB,EAAA,GAAE7qC,EAAG6qC,EAAA,GAAEC,EAAMD,EAAA,GAIzB,OAFA54C,EAAMy1C,cAAa,OAAQ/I,GAEpBl1B,EAAUuZ,IAAIC,kBAAkBqnB,qBAAqB,CAC1DC,QAAS,CACPnB,QAAS,CAAC,CACRE,MAAAA,EACAtpC,IAAAA,EACA+qC,QAAQ,EACRC,QAAS,CAACF,QAIb97C,MAAK,kBAAMya,EAAUuZ,IAAIC,kBAAkB6lB,uBAAuB,IAClE95C,MAAK,SAAA+5C,GAAe,OAAI/2C,EAAS,2BAA4B,CAAE+2C,gBAAAA,GAAkB,GACtF,KAIJ,YCzLA,GA7Cc,CACZ92C,MAAO,CACL2U,SAAU,GACVqkC,QAAS,CAAEh5C,MAAO,IAClBi5C,QAAQ,GAEV7iC,UAAW,CACT8iC,WAAU,SAAEl5C,EAAOg5C,GACjBh5C,EAAMg5C,QAAUA,CAClB,EACAG,WAAU,SAAEn5C,EAAOuxB,GACjBvxB,EAAM2U,SAASjQ,KAAK6sB,GACpBvxB,EAAM2U,SAAW3U,EAAM2U,SAASnT,OAAO,GAAI,GAC7C,EACA43C,YAAW,SAAEp5C,EAAO2U,GAClB3U,EAAM2U,SAAWA,EAASnT,OAAO,GAAI,GACvC,EACA63C,UAAS,SAAEr5C,EAAOi5C,GAChBj5C,EAAMi5C,OAASA,CACjB,GAEF3hC,QAAS,CACPgiC,gBAAe,SAAEv7C,EAAOurC,GACtB,IAAM0P,EAAU1P,EAAO0P,QAAQ,eAC/BA,EAAQO,SAASC,QAAQ,MAAM,WAC7Bz7C,EAAM6Z,OAAO,aAAa,EAC5B,IACAohC,EAAQS,SAAQ,WACd17C,EAAM6Z,OAAO,aAAa,EAC5B,IACAohC,EAAQU,SAAQ,WACd37C,EAAM6Z,OAAO,aAAa,EAC5B,IACAohC,EAAQW,GAAG,WAAW,SAACC,GACrB77C,EAAM6Z,OAAO,aAAcgiC,EAC7B,IACAZ,EAAQW,GAAG,YAAY,SAAA75C,GAAkB,IAAf6U,EAAQ7U,EAAR6U,SACxB5W,EAAM6Z,OAAO,cAAejD,EAC9B,IACAqkC,EAAQrtC,OACR5N,EAAM6Z,OAAO,aAAcohC,EAC7B,ICKJ,GA9Cc,CACZh5C,MAAO,CACLk7B,UAAU,EACVC,cAAc,EAKd0e,UAAU,EAIV/R,WAAW,GAEb1xB,UAAW,CACT0jC,cAAa,SAAE95C,EAAKF,GAA8B,IAA1Bo7B,EAAQp7B,EAARo7B,SAAUC,EAAYr7B,EAAZq7B,aAChCn7B,EAAMk7B,SAAWA,EACjBl7B,EAAMm7B,aAAeA,CACvB,EACA4e,YAAW,SAAE/5C,EAAOg9B,GAClBh9B,EAAM65C,SAAW7c,CACnB,EACAgd,SAAQ,SAAEh6C,EAAOg9B,GACfh9B,EAAM8nC,UAAY9K,CACpB,EACAid,WAAU,SAAEj6C,GACVA,EAAM8nC,WAAY,SAGX9nC,EAAMg9B,KACf,GAEF5c,QAAS,CACPoc,SAAU,SAAAx8B,GAAK,OAAI,WAGjB,OAAOA,EAAM8nC,WAAa9nC,EAAMg9B,OAASh9B,EAAM65C,QACjD,CAAC,EACDK,aAAc,SAAAl6C,GAAK,OAAI,WAGrB,OAAOA,EAAM8nC,WAAa9nC,EAAMg9B,KAClC,CAAC,IC1CL,IAAMmd,GAAoB,WACpBC,GAAiB,QAGjBC,GAAgB,OAChBC,GAAoB,WASpBC,GAAa,SAACv6C,GAClBA,EAAMw6C,SAAWx6C,EAAMy6C,aACvBz6C,EAAMwV,SAAW,CAAC,CACpB,EA4DA,UACEklC,YAAY,EACZ16C,MAvEY,CACZwV,SAAU,CAAC,EACXglC,SAAUL,GACVM,aAAcN,IAqEd/5B,QA5Dc,CACd5K,SAAU,SAACxV,EAAOogB,GAChB,OAAOpgB,EAAMwV,QACf,EACAmlC,iBAAkB,SAAC36C,EAAOogB,EAAS5I,GACjC,OAAOxX,EAAMw6C,WAAaL,EAC5B,EACAS,cAAe,SAAC56C,EAAOogB,EAAS5I,GAC9B,OAAOxX,EAAMw6C,WAAaJ,EAC5B,EACAS,aAAc,SAAC76C,EAAOogB,EAAS5I,GAC7B,OAAOxX,EAAMw6C,WAAaH,EAC5B,EACAS,iBAAkB,SAAC96C,EAAOogB,EAAS5I,GACjC,OAAOxX,EAAMw6C,WAAaF,EAC5B,GA8CAlkC,UA1CgB,CAChB2kC,mBAAkB,SAAE/6C,EAAOw6C,GACrBA,IACFx6C,EAAMy6C,aAAeD,EACrBx6C,EAAMw6C,SAAWA,EAErB,EACAQ,gBAAe,SAAEh7C,GACfA,EAAMw6C,SAAWL,EACnB,EACAc,aAAY,SAAEj7C,GACZA,EAAMw6C,SAAWJ,EACnB,EACAc,WAAU,SAAEl7C,EAAKF,GAAgB,IAAZ0V,EAAQ1V,EAAR0V,SACnBxV,EAAMwV,SAAWA,EACjBxV,EAAMw6C,SAAWH,EACnB,EACAc,gBAAe,SAAEn7C,GACfA,EAAMw6C,SAAWF,EACnB,EACAc,YAAW,SAAEp7C,GACXA,EAAMw6C,SAAWH,EACnB,EACAgB,SAAQ,SAAEr7C,GACRu6C,GAAWv6C,EACb,GAkBAsX,QAdc,CAER0kB,MAAK,SAAAr7B,EAAAsC,GAAiD,OAAArC,EAAAA,EAAAA,GAAAC,IAAAA,MAAA,SAAAC,IAAA,IAAAd,EAAAD,EAAA6X,EAAA6vB,EAAA,OAAA5mC,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACV,OADnClB,EAAKW,EAALX,MAAOD,EAAQY,EAARZ,SAAU6X,EAAMjX,EAANiX,OAAY6vB,EAAYxkC,EAAZwkC,aAC1C7vB,EAAO,WAAY6vB,EAAc,CAAE6T,MAAM,IAAOt6C,EAAAE,KAAA,EAC1CnB,EAAS,YAAa0nC,EAAc,CAAE6T,MAAM,IAAO,OACzDf,GAAWv6C,GAAM,wBAAAgB,EAAAe,OAAA,GAAAjB,EAAA,IAHyCF,EAI5D,I,gBCzEI26C,GAAiB,IAAIxzC,IAAI,CAAC,QAAS,QAAS,QAAS,UAErDyzC,GAAc,CAClBx7C,MAAO,CACLkmB,MAAO,GACPu1B,aAAc,EACdC,WAAW,GAEbtlC,UAAW,CACTulC,SAAQ,SAAE37C,EAAOkmB,GACflmB,EAAMkmB,MAAQA,CAChB,EACA01B,gBAAe,SAAE57C,EAAOkJ,GACtBlJ,EAAM07C,WAAY,EAClB17C,EAAMy7C,aAAevyC,CACvB,EACAqiC,MAAK,SAAEvrC,GACLA,EAAM07C,WAAY,CACpB,GAEFpkC,QAAS,CACPqkC,SAAQ,SAAA77C,EAAc6mB,GAAa,IAAvB/O,EAAM9X,EAAN8X,OACJsO,EAAQS,EAAYloB,QAAO,SAAAwqC,GAC/B,IAAMlkC,EAAO82C,GAAAA,GAAAA,SAAyB5S,EAAW6S,UACjD,OAAOP,GAAezyC,IAAI/D,EAC5B,IACA6S,EAAO,WAAYsO,EACrB,EACA01B,gBAAe,SAAAj7C,EAAqBo7C,IAElCnkC,EAFuBjX,EAANiX,QAEV,kBAFuBjX,EAALX,MACLkmB,MAAMwa,QAAQqb,IACC,EACrC,EACAC,iBAAgB,SAAA/4C,IACd2U,EADwB3U,EAAN2U,QACX,QACT,IAIJ,YCdA,GAzBoB,CAClB5X,MAAO,CACLi8C,OAAQ,IAEV3kC,QAAS,CACP4kC,YAAW,SAAAp8C,GAAyB,IAArB0X,EAAS1X,EAAT0X,UAAWI,EAAM9X,EAAN8X,OACxBJ,EAAUuZ,IAAIC,kBAAkBmrB,mBAAmBp/C,MAAK,SAACk/C,GACvDrkC,EAAO,aAAcqkC,EACvB,GACF,EACAlf,YAAW,SAAAp8B,EAAgCvD,GAAI,IAAhCoa,EAAS7W,EAAT6W,UAAWI,EAAMjX,EAANiX,OAAQ5X,EAAKW,EAALX,MAChCwX,EAAUuZ,IAAIC,kBAAkBorB,iBAAiB,CAAEh/C,GAAAA,IAAML,MAAK,SAAC07B,GACrC,MAApBA,EAAS3R,QACXlP,EAAO,aAAc5X,EAAMi8C,OAAOx9C,QAAO,SAAAu+B,GAAK,OAAIA,EAAM5/B,KAAOA,CAAE,IAErE,GACF,GAEFgZ,UAAW,CACTimC,WAAU,SAAEr8C,EAAOi8C,GACjBj8C,EAAMi8C,OAASA,CACjB,I,2BCnBEK,GAAU,CACdt8C,MAAO,CACLu8C,YAAa,CACXh4B,OAAQ,KACRC,SAAU,GACVg4B,aAAc,GACdd,WAAW,GAEbY,QAAS,CAAC,GAEZlmC,UAAW,CACTqmC,uBAAsB,SAAEz8C,EAAKF,GAAsC,IAAlCykB,EAAMzkB,EAANykB,OAAQC,EAAQ1kB,EAAR0kB,SAAUg4B,EAAY18C,EAAZ08C,aACjDx8C,EAAMu8C,YAAYh4B,OAASA,EAC3BvkB,EAAMu8C,YAAY/3B,SAAWA,EAC7BxkB,EAAMu8C,YAAYC,aAAeA,EACjCx8C,EAAMu8C,YAAYb,WAAY,CAChC,EACAgB,wBAAuB,SAAE18C,GACvBA,EAAMu8C,YAAYb,WAAY,CAChC,EACAiB,eAAc,SAAEC,EAAYj8C,GAAiB,IAAbvD,EAAEuD,EAAFvD,GAAI4C,EAAKW,EAALX,MAClC48C,EAAaN,QAAQl/C,GAAI4C,MAAQA,CACnC,EACA68C,UAAS,SAAE78C,EAAO+qB,GAChB/qB,EAAMs8C,QAAQvxB,EAAO3tB,IAAM2tB,CAC7B,GAEFzT,QAAS,CACPmlC,uBAAsB,SAAAx5C,EAAAC,GAAqD,IAAjDsU,EAASvU,EAATuU,UAAWI,EAAM3U,EAAN2U,OAAY2M,EAAMrhB,EAANqhB,OAAMu4B,EAAA55C,EAAE65C,UAAAA,OAAS,IAAAD,EAAG,GAAEA,EAC/DE,EAAoBD,EAAUvgD,KAAI,SAAAY,GAAE,OAAIoa,EAAUgN,SAASmB,kBAAkBvoB,EAAG,IAChFo/C,EAAeO,EACfv4B,EAAWw4B,EAAkBr+C,OACjCF,KAAO+Y,EAAUgN,SAASkB,aACxB,SAAAoB,GAAM,OAAIA,EAAOxlB,KAAKlE,KAAOmnB,IAAWi4B,EAAap7C,SAAS0lB,EAAO1pB,GAAG,KAG5Ewa,EAAO,yBAA0B,CAAE2M,OAAAA,EAAQC,SAAAA,EAAUg4B,aAAAA,GACvD,EACAE,wBAAuB,SAAAr5C,IACrBuU,EAD+BvU,EAANuU,QAClB,0BACT,EACA+kC,eAAc,SAAAr5C,EAAAuU,GAAkD,IAA9CD,EAAMtU,EAANsU,OAAQ7X,EAAQuD,EAARvD,SAAUyX,EAASlU,EAATkU,UAAepa,EAAEya,EAAFza,GAAI4C,EAAK6X,EAAL7X,MAC/Ci9C,EAAWzlC,EAAU8kC,QAAQA,QAAQl/C,GAAI4C,MAC/C4X,EAAO,iBAAkB,CAAExa,GAAAA,EAAI4C,MAAAA,IAC/BwX,EAAUuZ,IAAIC,kBAAkB2rB,eAAe,CAAEv/C,GAAAA,EAAI4C,MAAAA,IAAQ,OAAO,SAAAhD,GAClE6kB,QAAQrR,MAAM,6BAA8BxT,GAC5C+C,EAAS,mBAAoB,CAC3BuM,MAAO,QACP+L,WAAY,gCACZE,YAAa,CAACvb,EAAEu0B,SAChBpxB,QAAS,MAEXyX,EAAO,iBAAkB,CAAExa,GAAAA,EAAI4C,MAAOi9C,GACxC,GACF,EACAJ,UAAS,SAAA/kC,EAAciT,IACrBnT,EADiBE,EAANF,QACJ,YAAamT,EACtB,IAIJ,YCKA,SAlEc,CACZ/qB,MAAO,CAELk9C,aAAc,CAAC,EACfC,YAAa,CAAC,GAEhB/mC,UAAW,CACTgnC,eAAc,SAAEp9C,EAAO8vB,GACrB,IAAMutB,EAAer9C,EAAMm9C,YAAYrtB,EAAK1yB,IAE5C0yB,EAAKwtB,QAAU9hB,KAAK2U,MAAQ3U,KAAK+hB,MAAMztB,EAAK0tB,YAE1Cx9C,EAAMm9C,YAAYrtB,EAAK1yB,IADrBigD,EAC2B52B,IAAM42B,EAAcvtB,GAEpBA,CAEjC,EACA2tB,UAAS,SAAEz9C,EAAO09C,GAChB,IAAMC,EAAe39C,EAAMk9C,aAAaQ,GAEtC19C,EAAMk9C,aAAaQ,GADjBC,EAC2BA,EAAe,EAEf,CAEjC,EACAC,YAAW,SAAE59C,EAAO09C,GAClB,IAAMC,EAAe39C,EAAMk9C,aAAaQ,GAEtC19C,EAAMk9C,aAAaQ,GADjBC,EAC2BA,EAAe,EAEf,CAEjC,GAEFrmC,QAAS,CACP8lC,eAAc,SAAAt9C,EAAcgwB,IAC1BlY,EADsB9X,EAAN8X,QACT,iBAAkBkY,EAC3B,EACA+tB,kBAAiB,SAAAl9C,EAAmC+8C,GAAQ,IAAvClmC,EAAS7W,EAAT6W,UAAWzX,EAAQY,EAARZ,SAAU6X,EAAMjX,EAANiX,OACxCJ,EAAUuZ,IAAIC,kBAAkB8sB,UAAU,CAAEJ,OAAAA,IAAU3gD,MAAK,SAAA+yB,GACzDtvB,YAAW,WACLgX,EAAUumC,MAAMb,aAAaQ,IAC/B39C,EAAS,oBAAqB29C,EAElC,GAAG,KACH9lC,EAAO,iBAAkBkY,EAC3B,GACF,EACA2tB,UAAS,SAAAx6C,EAAmCy6C,GAAQ,IAAvClmC,EAASvU,EAATuU,UAAWI,EAAM3U,EAAN2U,OAAQ7X,EAAQkD,EAARlD,SACzByX,EAAUumC,MAAMb,aAAaQ,IAChCl9C,YAAW,kBAAMT,EAAS,oBAAqB29C,EAAO,GAAE,KAE1D9lC,EAAO,YAAa8lC,EACtB,EACAE,YAAW,SAAA16C,EAAcw6C,IACvB9lC,EADmB1U,EAAN0U,QACN,cAAe8lC,EACxB,EACAM,SAAQ,SAAA36C,EAAAC,GAAkD,IAA9CkU,EAASnU,EAATmU,UAAWI,EAAMvU,EAANuU,OAAgB8lC,GAAFp6C,EAAFlG,GAAUkG,EAANo6C,QAAQO,EAAO36C,EAAP26C,QAC7C,OAAOzmC,EAAUuZ,IAAIC,kBAAkBktB,KAAK,CAAER,OAAAA,EAAQO,QAAAA,IAAWlhD,MAAK,SAAA+yB,GAEpE,OADAlY,EAAO,iBAAkBkY,GAClBA,CACT,GACF,IClCJ,GA9BmB,CACjB9vB,MAAO,CACLwnC,OAAQ,KACR2W,gBAAgB,GAElB/nC,UAAW,CACTgoC,oBAAmB,SAAEp+C,EAAOwnC,GAC1BxnC,EAAMwnC,OAASA,EACfxnC,EAAMm+C,gBAAiB,CACzB,EACAE,qBAAoB,SAAEr+C,GACpBA,EAAMm+C,gBAAiB,CACzB,EACAG,qBAAoB,SAAEt+C,GACpBA,EAAMwnC,OAAS,IACjB,GAEFlwB,QAAS,CACP8mC,oBAAmB,SAAAt+C,EAAc0nC,IAC/B5vB,EAD2B9X,EAAN8X,QACd,sBAAuB4vB,EAChC,EACA6W,qBAAoB,SAAA19C,IAClBiX,EAD4BjX,EAANiX,QACf,uBACT,EACA0mC,qBAAoB,SAAAr7C,IAClB2U,EAD4B3U,EAAN2U,QACf,uBACT,ICFJ,GAxBmB,CACjB5X,MAAO,CACLwnC,OAAQ,KACR2W,gBAAgB,GAElB/nC,UAAW,CACTmoC,oBAAmB,SAAEv+C,EAAOwnC,GAC1BxnC,EAAMwnC,OAASA,EACfxnC,EAAMm+C,gBAAiB,CACzB,EACAK,qBAAoB,SAAEx+C,GACpBA,EAAMm+C,gBAAiB,CACzB,GAEF7mC,QAAS,CACPinC,oBAAmB,SAAAz+C,EAAc0nC,IAC/B5vB,EAD2B9X,EAAN8X,QACd,sBAAuB4vB,EAChC,EACAgX,qBAAoB,SAAA79C,IAClBiX,EAD4BjX,EAANiX,QACf,uBACT,ICIJ,GAxBsB,CACpB5X,MAAO,CACLwnC,OAAQ,CAAC,EACT2W,gBAAgB,GAElB/nC,UAAW,CACTqoC,uBAAsB,SAAEz+C,EAAOwnC,GAC7BxnC,EAAMwnC,OAASA,EACfxnC,EAAMm+C,gBAAiB,CACzB,EACAO,wBAAuB,SAAE1+C,GACvBA,EAAMm+C,gBAAiB,CACzB,GAEF7mC,QAAS,CACPmnC,uBAAsB,SAAA3+C,EAAc0nC,IAClC5vB,EAD8B9X,EAAN8X,QACjB,yBAA0B4vB,EACnC,EACAkX,wBAAuB,SAAA/9C,IACrBiX,EAD+BjX,EAANiX,QAClB,0BACT,I,2mCClBJ,IAoNM+mC,GAAc,CAClBh1B,IAlIU,SAACmoB,EAAOhyC,GAAoD,IAAtC8+C,EAAW9+C,EAArB6U,SAAQkqC,EAAA/+C,EAAeg/C,YAAAA,OAAW,IAAAD,GAAOA,EAC/D,GAAK/M,EACL,IADwB,IAAAiN,EAAA,WAEtB,IAAMxtB,EAAUqtB,EAAY/6C,GAG5B,GAAI0tB,EAAQytB,UAAYlN,EAAQ7G,OAAQ,OAAA9nC,OAAA,GAExC,GAAIouB,EAAQ0tB,OAAQ,CAClB,IAAMC,EAAcpN,EAAQqN,QAAQ5tB,EAAQ0tB,QAC5C,GAAIC,EAUoC,OAPlCpN,EAAQqN,QAAQ5tB,EAAQn0B,aACnB00C,EAAQqN,QAAQ5tB,EAAQn0B,IAC/B00C,EAAQn9B,SAAWm9B,EAAQn9B,SAASlW,QAAO,SAAAm7C,GAAG,OAAIA,EAAIx8C,KAAOm0B,EAAQn0B,EAAE,KAEzEG,OAAOqlB,OAAOs8B,EAAa3tB,EAAS,CAAE/gB,OAAO,WACtC0uC,EAAYD,OACnBnN,EAAQqN,QAAQD,EAAY9hD,IAAM8hD,SAC3BpN,EAAQqN,QAAQ5tB,EAAQ0tB,QAAO,CAAA97C,OAAA,EAI1C,GAEK2uC,EAAQ/sB,QAAWwM,EAAQ6tB,SAAW7tB,EAAQn0B,GAAK00C,EAAQ/sB,SAC9D+sB,EAAQ/sB,MAAQwM,EAAQn0B,MAGrB00C,EAAQhtB,OAASyM,EAAQn0B,GAAK00C,EAAQhtB,QACrCg6B,IACFhN,EAAQhtB,MAAQyM,EAAQn0B,IAIvB00C,EAAQqN,QAAQ5tB,EAAQn0B,KAWV,SAAC00C,EAASvgB,GAC/B,GAAKA,EAAQ8tB,gBACb,OAAOvN,EAAQwN,oBAAoB/tB,EAAQ8tB,gBAC7C,CAdyCE,CAAezN,EAASvgB,KACvDugB,EAAQ0N,kBAAoBjuB,EAAQn0B,IACtC00C,EAAQ2N,kBAEV3N,EAAQqN,QAAQ5tB,EAAQn0B,IAAMm0B,EAC9BugB,EAAQn9B,SAASjQ,KAAKotC,EAAQqN,QAAQ5tB,EAAQn0B,KAC9C00C,EAAQwN,oBAAoB/tB,EAAQ8tB,kBAAmB,EAE3D,EA1CSx7C,EAAI,EAAGA,EAAI+6C,EAAY7/C,OAAQ8E,IAAK,CAAF,IAAA67C,EAAAX,IAAA,eAAA/gB,EAAAA,GAAAA,GAAA0hB,GAAA,OAAAA,EAAAv8C,CAAA,CA2C7C,EAsFEw8C,MAtNY,SAAC1U,GACb,MAAO,CACLkU,QAAS,CAAC,EACVG,oBAAqB,CAAC,EACtB3qC,SAAU,GACV8qC,gBAAiB,EACjBD,kBAAmB,IACnBvU,OAAAA,EACAlmB,WAAOld,EACPid,WAAOjd,EAEX,EA4ME+3C,QAzEc,SAAC9N,GACf,IAAKA,EAAW,MAAO,GAEvB,IAII+N,EAJEz9C,EAAS,GACTuS,EAAWmrC,KAAUhO,EAAQn9B,SAAU,CAAC,UAAW,MAAO,CAAC,MAAO,QAClEorC,EAAeprC,EAAS,GAC1BqrC,EAAkBrrC,EAASA,EAAS5V,OAAS,GAGjD,GAAIghD,EAAc,CAChB,IAAME,EAAO,IAAIzkB,KAAKukB,EAAalN,YACnCoN,EAAKC,SAAS,EAAG,EAAG,EAAG,GACvB99C,EAAOsC,KAAK,CACVK,KAAM,OACNk7C,KAAAA,EACA7iD,GAAI6iD,EAAKE,UAAU/0C,YAEvB,CAIA,IAFA,IAAIg1C,GAAY,EAEPv8C,EAAI,EAAGA,EAAI8Q,EAAS5V,OAAQ8E,IAAK,CACxC,IAAM0tB,EAAU5c,EAAS9Q,GACnBw8C,EAAc1rC,EAAS9Q,EAAI,GAE3Bo8C,EAAO,IAAIzkB,KAAKjK,EAAQshB,YAC9BoN,EAAKC,SAAS,EAAG,EAAG,EAAG,GAGnBF,GAAmBA,EAAgBC,KAAOA,IAC5C79C,EAAOsC,KAAK,CACVK,KAAM,OACNk7C,KAAAA,EACA7iD,GAAI6iD,EAAKE,UAAU/0C,aAGrB40C,EAAgBM,QAAS,EACzBT,OAAwBh4C,EACxBu4C,GAAY,GAGd,IAAMG,EAAS,CACbx7C,KAAM,UACNrH,KAAM6zB,EACN0uB,KAAAA,EACA7iD,GAAIm0B,EAAQn0B,GACZojD,eAAgBX,IAIbQ,GAAeA,EAAYxX,cAAgBtX,EAAQsX,aACtD0X,EAAOD,QAAS,EAChBT,OAAwBh4C,KAIrBm4C,GAAmBA,EAAgBtiD,MAAQsiD,EAAgBtiD,KAAKmrC,cAAgBtX,EAAQsX,YAAcuX,KACzGP,EAAwBY,OACxBF,EAAOG,QAAS,EAChBH,EAAOC,eAAiBX,GAG1Bz9C,EAAOsC,KAAK67C,GACZP,EAAkBO,EAClBH,GAAY,CACd,CAEA,OAAOh+C,CACT,EAMEu+C,cAxLoB,SAAC7O,EAAS8O,GAC9B,GAAK9O,EAAL,CAIA,GAHAA,EAAQn9B,SAAWm9B,EAAQn9B,SAASlW,QAAO,SAAAoiD,GAAC,OAAIA,EAAEzjD,KAAOwjD,CAAS,WAC3D9O,EAAQqN,QAAQyB,GAEnB9O,EAAQhtB,QAAU87B,EAAW,CAC/B,IAAMnY,EAAc7f,IAAQkpB,EAAQn9B,SAAU,MAC9Cm9B,EAAQhtB,MAAQ2jB,EAAYrrC,EAC9B,CAEA,GAAI00C,EAAQ/sB,QAAU67B,EAAW,CAC/B,IAAMb,EAAer3B,IAAQopB,EAAQn9B,SAAU,MAC/Cm9B,EAAQ/sB,MAAQg7B,EAAa3iD,EAC/B,CAZuB,CAazB,EA2KE0jD,kBAzKwB,SAAChP,GACzB,IAAMiP,EAAWjP,EAAQn9B,SAAS5V,OAC5BiiD,EAAWD,EAAW,GAC5B,KAAIA,GAAY,IAAhB,CAEAjP,EAAQn9B,SAAWssC,KAASnP,EAAQn9B,SAAU,CAAC,OAC/Cm9B,EAAQ/sB,MAAQ+sB,EAAQn9B,SAASqsC,GAAU5jD,GAAE,IACP8jD,EADOC,EAAAj9C,GACvB4tC,EAAQn9B,UAAQ,IAAtC,IAAAwsC,EAAAh9C,MAAA+8C,EAAAC,EAAA/8C,KAAAC,MAAwC,KAA7BktB,EAAO2vB,EAAA58C,MACZitB,EAAQn0B,GAAK00C,EAAQ/sB,eAChB+sB,EAAQqN,QAAQ5tB,EAAQn0B,WACxB00C,EAAQwN,oBAAoB/tB,EAAQ8tB,iBAE/C,CAAC,OAAA76C,GAAA28C,EAAAnkD,EAAAwH,EAAA,SAAA28C,EAAA18C,GAAA,CACDqtC,EAAQn9B,SAAWm9B,EAAQn9B,SAASnT,MAAMw/C,EAAUD,EAV1B,CAW5B,EA4JEK,qBAnF2B,SAACtP,GACvBA,IACLA,EAAQ2N,gBAAkB,EAC1B3N,EAAQ0N,kBAAoB1N,EAAQhtB,MACtC,EAgFEu8B,MA9MY,SAACvP,GACb,IAEsC/tC,EAFhCu9C,EAAmB,GAAEr9C,EAAAC,GAEL4tC,EAAQn9B,UAAQ,IAAtC,IAAA1Q,EAAAE,MAAAJ,EAAAE,EAAAG,KAAAC,MAAwC,KAA7BktB,EAAOxtB,EAAAO,MACZitB,EAAQ/gB,MACV8wC,EAAiB58C,KAAK6sB,EAAQn0B,YAEvB00C,EAAQqN,QAAQ5tB,EAAQn0B,WACxB00C,EAAQwN,oBAAoB/tB,EAAQ8tB,iBAE/C,CAAC,OAAA76C,GAAAP,EAAAjH,EAAAwH,EAAA,SAAAP,EAAAQ,GAAA,CAEDqtC,EAAQn9B,SAAWm9B,EAAQn9B,SAASlW,QAAO,SAAAoiD,GAAC,OAAIS,EAAiBlgD,SAASy/C,EAAEzjD,GAAG,IAC/E00C,EAAQ2N,gBAAkB,EAC1B3N,EAAQ0N,kBAAoB,IAC5B1N,EAAQ/sB,WAAQld,EAChBiqC,EAAQhtB,WAAQjd,CAClB,EA8LE05C,mBA5JyB,SAACzP,EAASmN,EAAQuC,GAC3C,GAAK1P,EAAL,CACA,IAAMoN,EAAcpN,EAAQqN,QAAQF,GACpC,GAAIC,IACFA,EAAY1uC,OAAQ,EACpB0uC,EAAYE,SAAU,GACjBoC,GAAS,CAEZ,IAAMC,EAAuB3B,KAAUhO,EAAQn9B,SAAU,CAAC,UAAW,MAAO,CAAC,MAAO,SAAS,GAC7F,GAAI8sC,EAAsB,CACxB,IAAMC,EAAQxC,EAAY9hD,GAC1B8hD,EAAY9hD,GAAK,GAAHuB,OAAM8iD,EAAqBrkD,GAAE,KAAAuB,QAAI,IAAI68B,MAAO2kB,WAC1DrO,EAAQqN,QAAQD,EAAY9hD,IAAM8hD,SAC3BpN,EAAQqN,QAAQuC,EACzB,CACF,CAdqB,CAgBzB,GA8IA,Y,ylBC1NA,IAKMj8B,GAAe,CACnBk8B,SAN2B,CAC3BjkD,KAAM,GACN8nB,QAAS,CAAC,GAKVo8B,gBAAiB,KACjBC,aAAaC,EAAAA,GAAAA,IAAS,CAAC,GACvBC,2BAA2BD,EAAAA,GAAAA,IAAS,CAAC,GACrChY,aAASjiC,EACT8gC,cAAe,KACfqZ,kBAAmB,MAGfC,GAAc,SAACjiD,EAAO5C,GAC1B,OAAO8rB,IAAKlpB,EAAM2hD,SAASjkD,KAAM,CAAEN,GAAAA,GACrC,EAUMsrC,GAAQ,CACZ1oC,MAAKxB,GAAA,GAAOinB,IACZrF,QAAS,CACP8hC,YAAa,SAAAliD,GAAK,OAAIA,EAAM6hD,YAAY7hD,EAAM2oC,cAAc,EAC5DwZ,0BAA2B,SAAAniD,GAAK,OAAIA,EAAM+hD,0BAA0B/hD,EAAM2oC,cAAc,EACxFyZ,4BAA6B,SAAApiD,GAAK,OAAI,SAAAqiD,GAAW,OAAIn5B,IAAKlpB,EAAM6hD,aAAa,SAAAzK,GAAC,OAAIA,EAAErO,QAAQ3rC,KAAOilD,CAAW,GAAC,GAC/GC,eAdmB,SAACtiD,GACtB,OAAO8/C,KAAQ9/C,EAAM2hD,SAASjkD,KAAM,CAAC,cAAe,CAAC,QACvD,EAaI6kD,gBAXoB,SAACviD,GACvB,OAAOwiD,KAAMxiD,EAAM2hD,SAASjkD,KAAM,SACpC,GAWE4Z,QAAS,CAEPmrC,mBAAkB,SAAA3iD,GAAwB,IAApBC,EAAQD,EAARC,SAAU6X,EAAM9X,EAAN8X,OACxBkyB,EAAU,WAAH,OAAS/pC,EAAS,aAAc,CAAEuoC,QAAQ,GAAO,EAC9DwB,IACAlyB,EAAO,qBAAsB,CAC3BkyB,QAAS,kBAAM1Q,EAAAA,GAAAA,GAAgB0Q,EAAS,IAAK,GAEjD,EACA4Y,kBAAiB,SAAA/hD,IACfiX,EADyBjX,EAANiX,QACZ,qBAAsB,CAAEkyB,aAASjiC,GAC1C,EACA86C,WAAU,SAAA1/C,GAAgD,IAA5ClD,EAAQkD,EAARlD,SAAUyX,EAASvU,EAATuU,UACtB,OADuCvU,EAAN2U,OAC1BJ,EAAUuZ,IAAIC,kBAAkB0X,QACpC3rC,MAAK,SAAAmG,GAAe,IAAZwlC,EAAKxlC,EAALwlC,MAEP,OADA3oC,EAAS,cAAe,CAAE2oC,MAAAA,IACnBA,CACT,GACJ,EACAka,YAAW,SAAE7kD,EAAKsF,GAAa,IAATqlC,EAAKrlC,EAALqlC,MACZ9wB,EAAkC7Z,EAAlC6Z,OAAQ7X,EAA0BhC,EAA1BgC,SAAU+Y,EAAgB/a,EAAhB+a,YAI1BlB,EAAO,cAAe8wB,EAAMlsC,KAAI,SAAAwC,GAAC,OAAIA,EAAE+pC,OAAO,IAAEtqC,QAAO,SAAAO,GAAC,OAAIA,CAAC,KAC7D4Y,EAAO,cAAe,CAAE7X,SAAAA,EAAU2oC,MAAAA,EAAO5vB,YAAAA,EAAa+pC,0BAJpB,SAACra,GACjCD,GAA0BxqC,EAAOyqC,EACnC,GAGF,EACAsa,WAAU,SAAAx/C,EAAAuU,IACRD,EADkBtU,EAANsU,QACL,aAAc,CAAE4wB,KADK3wB,EAAJ2wB,MAE1B,EAGAua,yBAAwB,SAAAjrC,EAAAE,GAAUF,EAANF,QAC1B7X,EAD0C+X,EAAR/X,UACzB,wBAAyB,CAAE+pC,QADmB9xB,EAAP8xB,SAElD,EACAkZ,sBAAqB,SAAA9qC,EAAAC,GAAaD,EAATV,WACvBI,EADwCM,EAANN,QAC3B,wBAAyB,CAAEkyB,QADmB3xB,EAAP2xB,SAEhD,EACAmZ,cAAa,SAAA7qC,EAAAO,GAAaP,EAATZ,UAAyC,IAA9BI,EAAMQ,EAANR,OAAQ7X,EAAQqY,EAARrY,SAAcyoC,EAAI7vB,EAAJ6vB,KAChD5wB,EAAO,gBAAiB,CAAE7X,SAAAA,EAAUyoC,MAAM0a,EAAAA,GAAAA,IAAU1a,KACpDzoC,EAAS,cAAe,CAACyoC,EAAKO,SAChC,EACAoa,gBAAe,SAAAvqC,EAActU,GAAO,IAAjBsT,EAAMgB,EAANhB,OACjBA,EAAO,kBAAiBpZ,GAAA,CAAIoZ,OAAAA,GAAWtT,GACzC,EACA8+C,yBAAwB,SAAAvqC,EAAcvU,IACpCsT,EADgCiB,EAANjB,QACnB,2BAA4BtT,EACrC,EACA++C,iBAAgB,SAAAjqC,EAAmC9U,GAAtB8U,EAAT5B,UAAsC,IAA3BI,EAAMwB,EAANxB,OAAgBwB,EAARrZ,SACrC6X,EAAO,mBAAoB,CAAEqzB,YAAQpjC,IACrC+P,EAAO,wBAAyB,CAAEkyB,aAASjiC,GAC7C,EACAy7C,SAAQ,SAAAr/B,EAAAkJ,GAAuD,IAAnD3V,EAASyM,EAATzM,UAAWI,EAAMqM,EAANrM,OAAQ7X,EAAQkkB,EAARlkB,SAAc3C,EAAE+vB,EAAF/vB,GAAImmD,EAAUp2B,EAAVo2B,WACzCC,EAAehsC,EAAUkxB,MAAMsZ,oBAAsBuB,EAE3DxjD,EAAS,4BACT6X,EAAO,WAAY,CAAExa,GAAAA,EAAImmD,WAAAA,IAErBC,GACFhsC,EAAUuZ,IAAIC,kBAAkBsyB,SAAS,CAAElmD,GAAAA,EAAImmD,WAAAA,GAEnD,EACAE,kBAAiB,SAAAp2B,EAAyB/oB,GAAO,IAA5BkT,EAAS6V,EAAT7V,UAAWI,EAAMyV,EAANzV,OAC9BJ,EAAUuZ,IAAIC,kBAAkByyB,kBAAkBn/C,GAClDsT,EAAO,oBAAmBpZ,GAAA,CAAIoZ,OAAAA,GAAWtT,GAC3C,EACAo/C,WAAU,SAAAl2B,GAAwB,IAApB5V,EAAM4V,EAAN5V,QACZ7X,EAD4BytB,EAARztB,UACX,oBACT6X,EAAO,aAAc,CAAEA,OAAAA,GACzB,EACA+rC,iBAAgB,SAAAj2B,GAAaA,EAATlW,UAA4C,IAAjCI,EAAM8V,EAAN9V,OAAgB8V,EAAR3tB,SAAqB2tB,EAAX5U,YAC/ClB,EAAO,mBAAoB,CAAEA,OAAAA,GAC/B,EACA2pC,mBAAkB,SAAA3zB,EAActpB,GAAO,IAAjBsT,EAAMgW,EAANhW,OACpBA,EAAO,qBAAoBpZ,GAAA,CAAIoZ,OAAAA,GAAWtT,GAC5C,EACAw8C,kBAAiB,SAAA/yB,EAAckd,IAC7BrzB,EADyBmW,EAANnW,QACZ,oBAAqBqzB,EAC9B,GAEF70B,UAAW,CACTwtC,mBAAkB,SAAE5jD,EAAKkuB,GAAUA,EAANtW,OAAmB,IAAXkyB,EAAO5b,EAAP4b,QAC7B+Z,EAAc7jD,EAAM4hD,gBACtBiC,GACFA,EAAY9hD,OAEd/B,EAAM4hD,gBAAkB9X,GAAWA,GACrC,EACAkZ,sBAAqB,SAAEhjD,EAAKquB,GAAe,IAAXyb,EAAOzb,EAAPyb,QACxB+Z,EAAc7jD,EAAM8pC,QACtB+Z,GACFA,EAAY9hD,OAEd/B,EAAM8pC,QAAUA,GAAWA,GAC7B,EACAmZ,cAAa,SAAEjjD,EAAKwuB,GAAaA,EAATs1B,UAAmB,IAARtb,EAAIha,EAAJga,KACjCxoC,EAAM2oC,cAAgBH,EAAKprC,GAC3B4C,EAAM6hD,YAAYrZ,EAAKprC,IAAMorC,EAExBxoC,EAAM+hD,0BAA0BvZ,EAAKprC,MACxC4C,EAAM+hD,0BAA0BvZ,EAAKprC,IAAM2mD,GAAAA,MAAkBvb,EAAKprC,IAEtE,EACA4mD,iBAAgB,SAAEhkD,EAAK0uB,GAAc,IAAVuc,EAAMvc,EAANuc,OACzBjrC,EAAM2oC,cAAgBsC,CACxB,EACA2X,YAAW,SAAE5iD,EAAK4uB,GAAwC,IAApC8Z,EAAK9Z,EAAL8Z,MAAOma,EAAyBj0B,EAAzBi0B,0BAC3Bna,EAAM9nB,SAAQ,SAACqjC,GACb,IAAMzb,EAAOyZ,GAAYjiD,EAAOikD,EAAY7mD,IAE5C,GAAIorC,EAAM,CACR,IAAMgb,GAAgBhb,EAAKC,aAAeD,EAAKC,YAAYrrC,OAAS6mD,EAAYxb,aAAewb,EAAYxb,YAAYrrC,IACvHorC,EAAKC,YAAcwb,EAAYxb,YAC/BD,EAAK0b,OAASD,EAAYC,OAC1B1b,EAAK2b,WAAaF,EAAYE,WAC1BX,GAAgBhb,EAAK0b,QACvBrB,EAA0BoB,EAE9B,MACEjkD,EAAM2hD,SAASjkD,KAAKgH,KAAKu/C,GACzBjkD,EAAM2hD,SAASn8B,QAAQy+B,EAAY7mD,IAAM6mD,CAE7C,GACF,EACAnB,WAAU,SAAE9iD,EAAK8uB,GAAaA,EAATg1B,UAA8C,IAA7BG,EAAWn1B,EAAjB0Z,KACxBA,GADuD1Z,EAAZs1B,aACpCnC,GAAYjiD,EAAOikD,EAAY7mD,KACxCorC,IACFA,EAAKC,YAAcwb,EAAYxb,YAC/BD,EAAK0b,OAASD,EAAYC,OAC1B1b,EAAK2b,WAAaF,EAAYE,YAE3B3b,GAAQxoC,EAAM2hD,SAASjkD,KAAK+O,QAAQw3C,GACzCjkD,EAAM2hD,SAASn8B,QAAQy+B,EAAY7mD,IAAM6mD,CAC3C,EACAI,WAAU,SAAErkD,EAAKkvB,GAAaA,EAAT40B,UAA+B,IAApB1mD,EAAE8xB,EAAF9xB,GAAgB8xB,EAAZk1B,aAClCpkD,EAAM0oC,MAAMhrC,KAAOsC,EAAM0oC,MAAMhrC,KAAKe,QAAO,SAAA6lD,GAAY,OACrDA,EAAaC,YAAYnnD,KAAOA,CAAE,IAEpC4C,EAAM0oC,MAAMljB,QAAUkB,IAAO1mB,EAAM0oC,MAAMljB,SAAS,SAAA8+B,GAAY,OAAIA,EAAaC,YAAYnnD,KAAOA,CAAE,GACtG,EACAsmD,WAAU,SAAE1jD,EAAK0vB,GAAc,IAAV9X,EAAM8X,EAAN9X,OAInB,IAAK,IAAMqzB,KAHXjrC,EAAM2hD,SAjLiB,CAC3BjkD,KAAM,GACN8nB,QAAS,CAAC,GAgLNxlB,EAAM2oC,cAAgB,KACtB/wB,EAAO,qBAAsB,CAAEkyB,aAASjiC,IACnB7H,EAAM6hD,YACzBkC,GAAAA,MAAkB/jD,EAAM+hD,0BAA0B9W,WAC3CjrC,EAAM6hD,YAAY5W,UAClBjrC,EAAM+hD,0BAA0B9W,EAE3C,EACAuZ,gBAAe,SAAExkD,EAAK6vB,GAAa,IAATvrB,EAAKurB,EAALvrB,MACxBtE,EAAM0oC,MAAMp4B,QAAUhM,CACxB,EACA6+C,gBAAe,SAAEnjD,EAAKgwB,GAAqC,IAAjCib,EAAMjb,EAANib,OAAQt2B,EAAQqb,EAARrb,SAAUmqC,EAAW9uB,EAAX8uB,YACpC2F,EAAqBzkD,EAAM+hD,0BAA0B9W,GACvDwZ,GACFV,GAAAA,IAAgBU,EAAoB,CAAE9vC,SAAUA,EAASnY,IAAIkoD,GAAAA,IAAmB5F,YAAAA,GAEpF,EACA2E,kBAAiB,SAAEzjD,EAAKkwB,GAAyB,IAArB+a,EAAM/a,EAAN+a,OAAQ2V,EAAS1wB,EAAT0wB,UAC5B6D,EAAqBzkD,EAAM+hD,0BAA0B9W,GACvDwZ,GACFV,GAAAA,cAA0BU,EAAoB7D,EAElD,EACAwC,yBAAwB,SAAEpjD,EAAO2kD,GAC/B,IAAMF,EAAqBzkD,EAAM+hD,0BAA0B/hD,EAAM2oC,eACjEob,GAAAA,qBAAiCU,EACnC,EAEAd,iBAAgB,SAAE3jD,GAChB,IAAM2oC,EAAgB3oC,EAAM2oC,cAC5B,IAAK,IAAMsC,KAAUjrC,EAAM6hD,YACrBlZ,IAAkBsC,IACpB8Y,GAAAA,MAAkB/jD,EAAM+hD,0BAA0B9W,WAC3CjrC,EAAM6hD,YAAY5W,UAClBjrC,EAAM+hD,0BAA0B9W,GAG7C,EACAqY,SAAQ,SAAEtjD,EAAKmwB,GAAsB,IAAlB/yB,EAAE+yB,EAAF/yB,GAAImmD,EAAUpzB,EAAVozB,WACrBvjD,EAAMgiD,kBAAoBuB,EAC1B,IAAM/a,EAAOyZ,GAAYjiD,EAAO5C,GAC5BorC,IACFA,EAAK0b,OAAS,EAElB,EACA3C,mBAAkB,SAAEvhD,EAAKuwB,GAA+B,IAA3B0a,EAAM1a,EAAN0a,OAAQgU,EAAM1uB,EAAN0uB,OAAQuC,EAAOjxB,EAAPixB,QACrCiD,EAAqBzkD,EAAM+hD,0BAA0B9W,GAC3D8Y,GAAAA,mBAA+BU,EAAoBxF,EAAQuC,EAC7D,EACAV,kBAAiB,SAAE9gD,EAAOirC,GACxB8Y,GAAAA,kBAA8B/jD,EAAM+hD,0BAA0B9W,GAChE,IAIJ,YC1GA,SA9FsB,CACpBjrC,MAvC0B,CAC1B4kD,cAAe,GACfC,uBAAuB,EACvBC,6BAAyBj9C,GAqCzBuO,UAlCuB,CACvB2uC,iBAAgB,SAAE/kD,EAAO4kD,GACvB5kD,EAAM4kD,cAAgBA,CACxB,EACAI,oBAAmB,SAAEhlD,EAAKF,GAAgB,IAAZ1C,EAAE0C,EAAF1C,GAAI6nD,EAAInlD,EAAJmlD,KAC1B/7C,EAAQlJ,EAAM4kD,cAAc13C,WAAU,SAAAvN,GAAC,OAAIA,EAAEvC,KAAOA,CAAE,IAExD8L,EAAQ,IAIZlJ,EAAM4kD,cAAc17C,GAAO+7C,KAAOA,EACpC,EACAC,2BAA0B,SAAEllD,EAAOmlD,GACjCnlD,EAAM8kD,wBAA0BK,CAClC,EACAC,yBAAwB,SAAEplD,EAAO6kD,GAC/B7kD,EAAM6kD,sBAAwBA,CAChC,GAiBAzkC,QAdqB,CACrBilC,wBAAuB,SAAErlD,EAAOslD,EAAU9tC,GACxC,OAAKA,EAAUnW,MAAM8X,YAINnZ,EAAM4kD,cAAcnmD,QAAO,SAAA8mD,GAAY,QAAMA,EAAaC,UAAYD,EAAaN,KAAK,IACzFlmD,OAJL,CAKX,GAOAuY,QAAS,CACPmuC,mBAAkB,SAAE1nD,GAClB,IAAKA,EAAMiC,MAAM6kD,sBACf,OAAOhoD,QAAQC,UAGjB,IAAMqc,EAAcpb,EAAMyZ,UAAUnW,MAAM8X,YACpCusC,EAAUvsC,GAAeA,EAAYwsC,WAAWvkD,SAAS,sCAEzDwkD,EAAgB,eAAAjlD,GAAAC,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAAC,IAAA,IAAAmhB,EAAA4jC,EAAAC,EAAAC,EAAA,OAAAllD,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,UAClBwkD,EAAS,CAAF1kD,EAAAE,KAAA,eAAAF,EAAAG,OAAA,SACHpD,EAAMyZ,UAAUuZ,IAAIC,kBAAkBy0B,sBAAoB,cAAAzkD,EAAAE,KAAA,EAGjDnD,EAAMyZ,UAAUuZ,IAAIC,kBAAkBg1B,0BAAyB,OAAxE,OAAH/jC,EAAGjhB,EAAA4T,KAAA5T,EAAAE,KAAG,EACUnD,EAAMyZ,UAAUuZ,IAAIC,kBAAkBy0B,qBAAoB,OAc9E,OAdII,EAAO7kD,EAAA4T,KACPkxC,EAAgBD,EAAQzrC,QAAO,SAACza,EAAGy3C,GAEvC,OADAz3C,EAAEy3C,EAAEh6C,IAAMg6C,EACHz3C,CACT,GAAG,CAAC,GACEomD,EAAmB,SAAAR,GAAY,OAAIO,EAAcP,EAAanoD,GAAG,EAEvE6kB,EAAIrB,SAAQ,SAAA2kC,GACV,IAAMU,EAAsBF,EAAiBR,GACxCU,EAGHV,EAAaN,KAAOgB,EAAoBhB,KAFxCM,EAAaC,UAAW,CAI5B,IAAExkD,EAAAG,OAAA,SAEK8gB,GAAG,yBAAAjhB,EAAAe,OAAA,GAAAjB,EAAA,KACX,kBAvBqB,OAAAH,EAAAvB,MAAA,KAAA6C,UAAA,KAyBtB,OAAO2jD,IACJ7oD,MAAK,SAAA6nD,GACJ7mD,EAAM6Z,OAAO,mBAAoBgtC,EACnC,IAAE,OACK,SAAAp0C,GAGL,IAAIA,GAA8B,MAArBA,EAAM01C,WAGjB,MAAM11C,EAFNzS,EAAM6Z,OAAO,4BAA4B,EAI7C,GACJ,EACAuuC,uBAAsB,SAAEpoD,EAAOX,GAC7B,OAAOW,EAAMyZ,UAAUuZ,IAAIC,kBAAkBo1B,oBAAoB,CAAEhpD,GAAAA,IAChEL,MAAK,WACJgB,EAAM6Z,OAAO,sBAAuB,CAAExa,GAAAA,EAAI6nD,MAAM,GAClD,GACJ,EACAoB,2BAA0B,SAAEtoD,GAC1B,IAAIA,EAAMiC,MAAM8kD,wBAAhB,CAIA,IAAMwB,EAAWC,aAAY,kBAAMxoD,EAAMgC,SAAS,qBAAqB,GAvGtC,KA0GjC,OAFAhC,EAAM6Z,OAAO,6BAA8B0uC,GAEpCvoD,EAAMgC,SAAS,qBALtB,CAMF,EACAymD,0BAAyB,SAAEzoD,GACzB,IAAMuoD,EAAWvoD,EAAMiC,MAAM8kD,wBAC7B/mD,EAAM6Z,OAAO,kCAA8B/P,GAC3C4+C,cAAcH,EAChB,EACAI,iBAAgB,SAAE3oD,EAAKkF,GAAyC,IAArCgC,EAAOhC,EAAPgC,QAAS0hD,EAAQ1jD,EAAR0jD,SAAUC,EAAM3jD,EAAN2jD,OAAQC,EAAM5jD,EAAN4jD,OACpD,OAAO9oD,EAAMyZ,UAAUuZ,IAAIC,kBAAkB01B,iBAAiB,CAAEzhD,QAAAA,EAAS0hD,SAAAA,EAAUC,OAAAA,EAAQC,OAAAA,IACxF9pD,MAAK,WACJ,OAAOgB,EAAMgC,SAAS,qBACxB,GACJ,EACA+mD,iBAAgB,SAAE/oD,EAAKmF,GAA6C,IAAzC9F,EAAE8F,EAAF9F,GAAI6H,EAAO/B,EAAP+B,QAAS0hD,EAAQzjD,EAARyjD,SAAUC,EAAM1jD,EAAN0jD,OAAQC,EAAM3jD,EAAN2jD,OACxD,OAAO9oD,EAAMyZ,UAAUuZ,IAAIC,kBAAkB81B,iBAAiB,CAAE1pD,GAAAA,EAAI6H,QAAAA,EAAS0hD,SAAAA,EAAUC,OAAAA,EAAQC,OAAAA,IAC5F9pD,MAAK,WACJ,OAAOgB,EAAMgC,SAAS,qBACxB,GACJ,EACAgnD,mBAAkB,SAAEhpD,EAAOX,GACzB,OAAOW,EAAMyZ,UAAUuZ,IAAIC,kBAAkB+1B,mBAAmB,CAAE3pD,GAAAA,IAC/DL,MAAK,WACJ,OAAOgB,EAAMgC,SAAS,qBACxB,GACJ,I,mDC9HAw1C,IAAS,EAEPyR,GAAiB,SAAChnD,EAAOinD,GAAK,OACjB,IAAjBA,EAAMloD,OACFiB,EACAinD,EAAM7sC,QAAO,SAAC8sC,EAAUxa,GAExB,OADAC,KAAIua,EAAUxa,EAAMyB,KAAInuC,EAAO0sC,IACxBwa,CACT,GAAG,CAAC,EAAE,EAGJC,GAAyB,CAC7B,0BACA,mBACA,iBACA,uBACA,eACA,YACA,gBACA,WACA,cAGIC,G,OACGC,GAGM,SAASC,KAkBhB,IAAAxnD,EAAAmC,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAJ,CAAC,EAACslD,EAAAznD,EAjBJiO,IAAAA,OAAG,IAAAw5C,EAAG,UAASA,EAAAC,EAAA1nD,EACfmnD,MAAAA,OAAK,IAAAO,EAAG,GAAEA,EAAAC,EAAA3nD,EACV8qC,SAAAA,OAAQ,IAAA6c,EAAG,SAAC15C,EAAK+jC,GAEf,OADcA,EAAQ4V,QAAQ35C,EAEhC,EAAC05C,EAAAE,EAAA7nD,EACD8nD,SAAAA,OAAQ,IAAAD,EAAG,SAAC55C,EAAK/N,EAAO8xC,GACtB,OAAKyD,GAIIzD,EAAQ+V,QAAQ95C,EAAK/N,IAH5B6hB,QAAQ2I,IAAI,yCACL3tB,QAAQC,UAInB,EAAC6qD,EAAAG,EAAAhoD,EACDioD,QAAAA,OAAO,IAAAD,EAAGd,GAAcc,EAAAE,EAAAloD,EACxBgyC,QAAAA,OAAO,IAAAkW,EAAGZ,GAAcY,EAAAC,EAAAnoD,EACxBooD,WAAAA,OAAU,IAAAD,EAAG,SAAAlqD,GAAK,OAAI,SAAAoqD,GAAO,OAAIpqD,EAAMwnC,UAAU4iB,EAAQ,GAAAF,EAEzD,OAAOrd,EAAS78B,EAAK+jC,GAAS/0C,MAAK,SAACqrD,GAClC,OAAO,SAAArqD,GACL,IACE,GAAmB,OAAfqqD,GAA6C,YAAtBpqB,EAAAA,GAAAA,GAAOoqB,GAAyB,CAEzD,IAAMC,EAAaD,EAAW/mD,OAAS,CAAC,EACxCgnD,EAAW3pB,YAAc,CAAC,EAC1B,IAAMr9B,EAAQgnD,EAAWhnD,OAAS,GAClCopB,IAAKppB,GAAO,SAACC,GAAW+mD,EAAW3pB,YAAYp9B,EAAKlE,IAAMkE,CAAK,IAC/D8mD,EAAW/mD,MAAQgnD,EAEnBtqD,EAAMuqD,aACJC,KAAM,CAAC,EAAGxqD,EAAMiC,MAAOooD,GAE3B,CACA7S,IAAS,CAKX,CAJE,MAAOv4C,GACP6kB,QAAQ2I,IAAI,uBACZ3I,QAAQrR,MAAMxT,GACdu4C,IAAS,CACX,CACA2S,EAAWnqD,EAAXmqD,EAAkB,SAACM,EAAUxoD,GAC3B,IACMmnD,GAAuB/lD,SAASonD,EAASzjD,OAC3C6iD,EAAS75C,EAAKg6C,EAAQpW,KAAU3xC,GAAQinD,GAAQnV,GAC7C/0C,MAAK,SAAAuZ,QACmB,IAAZA,IACa,cAAlBkyC,EAASzjD,MAA0C,mBAAlByjD,EAASzjD,MAC5ChH,EAAMgC,SAAS,gBAAiB,CAAEuW,QAAAA,IAGxC,IAAG,SAAA9F,GACqB,cAAlBg4C,EAASzjD,MAA0C,mBAAlByjD,EAASzjD,MAC5ChH,EAAMgC,SAAS,gBAAiB,CAAEyQ,MAAAA,GAEtC,GAKN,CAHE,MAAOxT,GACP6kB,QAAQ2I,IAAI,2BACZ3I,QAAQ2I,IAAIxtB,EACd,CACF,GACF,CACF,GACF,CC9FA,kBAAgBe,GACdA,EAAMwnC,WAAU,SAACijB,EAAUxoD,GACzB,IAAM2a,EAAiB3a,EAAM2X,SAASgD,eAChC8tC,EAAsBzoD,EAAMwjB,OAAO+iB,qBACnC9vB,EAAwD,YAA3CzW,EAAK,UAAW2V,uBAC7BrU,EAAOtB,EAAMqB,MAAM8X,YAEnBuvC,EAAmC,mBAAlBF,EAASzjD,KAC1B4jD,EAAoC,sBAAlBH,EAASzjD,MAA0D,mBAA1ByjD,EAASlQ,QAAQh5C,KAC5EspD,EAAmC,8BAAlBJ,EAASzjD,MAA6D,YAArByjD,EAASlQ,QAC3EuQ,EAAyC,cAAlBL,EAASzjD,MAAkD,yBAA1ByjD,EAASlQ,QAAQh5C,KACzEwpD,EAAyC,cAAlBN,EAASzjD,MAAkD,2BAA1ByjD,EAASlQ,QAAQh5C,KAE/E,GAAIopD,GAAkBC,GAAmBC,GAAkBC,GAAwBC,EAAsB,CACvG,GAAIxnD,GAAQqZ,GAAkBlE,GAAcgyC,EAC1C,OAAO1qD,EAAMgC,SAAS,6BACjB,GAAI8oD,IAAyBJ,EAClC,OAAO1qD,EAAMgC,SAAS,8BAE1B,CACF,GACD,E,kHChBGgG,EAAAA,GAAAA,GAGE,OAFA3I,GAAG,iBACHuH,MAAM,kB,aAaNoB,EAAAA,GAAAA,GAAwB,OAAnBpB,MAAM,YAAU,S,IAYjBoB,EAAAA,GAAAA,GAA2B,OAAtB3I,GAAG,kBAAgB,S,UAUxBuH,MAAM,kC,ICzCPA,MAAM,c,IAGToJ,IAAI,oBACJpJ,MAAM,iC,ICJLA,MAAM,6B,IAGJA,MAAM,iB,IAINA,MAAM,c,IAMAA,MAAM,c,IACFokD,IAAI,Y,kCASRpkD,MAAM,c,IACFokD,IAAI,Y,oBAURpkD,MAAM,c,UASXA,MAAM,c,IAKHA,MAAM,c,IACJA,MAAM,gB,0BAwBfA,MAAM,c,IAEDA,MAAM,e,ykBCrEjBgL,GAAAA,GAAAA,IACE6+B,GAAAA,KAoFF,SAjFkB,CAChB9wC,KAAM,iBAAO,CACX4D,KAAM,CAAC,EACPkP,OAAO,EACR,EACD5C,SAAQpP,GAAAA,GAAA,CACNwqD,eAAc,WAAM,OAAO1jD,KAAKq1C,gBAAiB,EACjDsO,YAAW,WAAM,OAAO3jD,KAAKs1C,aAAc,IACxCsO,EAAAA,EAAAA,IAAS,CACV3uC,iBAAkB,SAAAva,GAAK,OAAIA,EAAM2X,SAAS4C,gBAAgB,EAC1D5C,SAAU,SAAA3X,GAAK,OAAIA,EAAM2X,QAAQ,EACjC4nB,UAAW,SAAAv/B,GAAK,OAAIA,EAAMqB,MAAMk+B,SAAS,EACzCxD,MAAO,SAAA/7B,GAAK,OAAIA,EAAM+7B,KAAK,MAE1BotB,EAAAA,EAAAA,IACD,WAAY,CAAC,mBAAoB,gBAAiB,iBAGtDhkD,QAAO3G,GAAAA,GAAAA,GAAA,IACF4qD,EAAAA,EAAAA,IAAa,WAAY,CAAC,iBAC1BC,EAAAA,EAAAA,IAAW,CAAErtB,MAAO,oBAAmB,IAC1CstB,OAAM,WACJhkD,KAAK2jD,YAAc3jD,KAAKikD,cAAgBjkD,KAAKkkD,gBAC/C,EACAD,YAAW,WACT,IAAAE,EAAmCnkD,KAAKy2B,MAClCr+B,EAAO,CACXw9B,SAFcuuB,EAARvuB,SAGNC,aAH4BsuB,EAAZtuB,aAIhBxjB,SAAUrS,KAAKqS,SAAS6C,OACxB5C,OAAQtS,KAAK0L,OAAO4G,QAGtBiwB,GAAAA,eAAwBnqC,GACrBX,MAAK,SAAC4+B,GAAUkM,GAAAA,MAAcrpC,GAAAA,GAAC,CAAC,EAAIm9B,GAAQj+B,GAAQ,GACzD,EACA8rD,eAAc,WAAI,IAAAxiD,EAAA,KAEVtJ,EAAO,CACXw9B,SAFmB51B,KAAKy2B,MAAlBb,SAGNa,MAAOz2B,KAAKy2B,MACZpkB,SAAUrS,KAAKqS,SAAS6C,OACxB5C,OAAQtS,KAAK0L,OAAO4G,QAEtBtS,KAAKkL,OAAQ,EAEbq3B,GAAAA,eAAwBnqC,GAAMX,MAAK,SAAC4+B,GAClCkM,GAAAA,wBAAgCrpC,GAAAA,GAAC,CAAD,EAEzBm9B,GAAG,IACNhkB,SAAUja,EAAKia,SACf+kB,SAAU11B,EAAK1F,KAAKo7B,SACpBC,SAAU31B,EAAK1F,KAAKq7B,YAEtB5/B,MAAK,SAACqF,GACFA,EAAOoO,MACY,iBAAjBpO,EAAOoO,MACTxJ,EAAKk0C,WAAW,CAAE1lC,SAAUpT,IACG,4BAAtBA,EAAOsnD,WAChB1iD,EAAKtB,QAAQhB,KAAK,CAAEpF,KAAM,iBAAkBkoC,OAAQ,CAAEmiB,wBAAwB,MAE9E3iD,EAAKwJ,MAAQpO,EAAOoO,MACpBxJ,EAAK4iD,wBAIT5iD,EAAKg1B,MAAM55B,GAAQrF,MAAK,WACtBiK,EAAKtB,QAAQhB,KAAK,CAAEpF,KAAM,WAC5B,GACF,GACF,GACF,EACAuqD,WAAU,WAAMvkD,KAAKkL,OAAQ,CAAM,EACnCo5C,qBAAoB,WAClB,IAAME,EAAgBxkD,KAAKoJ,MAAMo7C,cACjCA,EAAcC,QACdD,EAAcE,kBAAkB,EAAGF,EAAcxlD,MAAMvF,OACzD,K,gBCjFJ,MAEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,8FFNzD8G,EAAAA,GAAAA,IAwFM,MAxFNC,GAwFM,EArFJC,EAAAA,GAAAA,GAEM,MAFNkkD,IAEMC,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,gBAAD,IAGPhM,EAAAA,GAAAA,GA8DM,MA9DNokD,GA8DM,EA7DJpkD,EAAAA,GAAAA,GA4DO,QA3DLpB,MAAM,aACLylD,SAAMjkD,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAqjD,QAAArjD,EAAAqjD,OAAAlqD,MAAA6G,EAAAhE,UAAM,kB,CAEPgE,EAAA+iD,iBAAc,YAA9BnjD,EAAAA,GAAAA,IA2BWwkD,GAAAA,GAAA,CAAAt8C,IAAA,KA1BThI,EAAAA,GAAAA,GASM,MATNukD,GASM,EARJvkD,EAAAA,GAAAA,GAAwD,QAAxDwkD,IAAwDL,EAAAA,GAAAA,IAA/BjkD,EAAA8L,GAAG,mBAAD,cAC3BhM,EAAAA,GAAAA,GAMC,SALC3I,GAAG,W,qDACM6I,EAAA3E,KAAKo7B,SAAQ8tB,CAAA,GACrBt7C,SAAUjJ,EAAAs5B,UACX56B,MAAM,eACL8lD,YAAaxkD,EAAA8L,GAAG,sB,mBAHR9L,EAAA3E,KAAKo7B,eAMlB32B,EAAAA,GAAAA,GAUM,MAVN2kD,GAUM,EATJ3kD,EAAAA,GAAAA,GAAwD,QAAxD4kD,IAAwDT,EAAAA,GAAAA,IAA/BjkD,EAAA8L,GAAG,mBAAD,cAC3BhM,EAAAA,GAAAA,GAOC,SANC3I,GAAG,WACH+4C,IAAI,gB,qDACKlwC,EAAA3E,KAAKq7B,SAAQ6tB,CAAA,GACrBt7C,SAAUjJ,EAAAs5B,UACX56B,MAAM,eACNI,KAAK,Y,mBAHIkB,EAAA3E,KAAKq7B,eAMlB52B,EAAAA,GAAAA,GAIM,MAJN6kD,GAIM,EAHJthD,EAAAA,GAAAA,IAEcuhD,EAAA,CAFApY,GAAI,CAAAnzC,KAAA,mBAAwB,C,mBACxC,iBAA0C,qBAAvC2G,EAAA8L,GAAG,mCAAD,G,mCAMH9L,EAAAgjD,cAAW,YADnBpjD,EAAAA,GAAAA,IAKM,MALNilD,GAKM,EADJ/kD,EAAAA,GAAAA,GAAoC,UAAAmkD,EAAAA,GAAAA,IAA9BjkD,EAAA8L,GAAG,sBAAD,wBAGVhM,EAAAA,GAAAA,GAmBM,MAnBNglD,GAmBM,EAlBJhlD,EAAAA,GAAAA,GAiBM,MAjBNilD,GAiBM,EAhBJjlD,EAAAA,GAAAA,GAQM,YANIE,EAAAsU,mBAAgB,YADxB0wC,EAAAA,GAAAA,IAMcJ,EAAA,C,MAJXpY,GAAI,CAAAnzC,KAAA,gBACLqF,MAAM,Y,oBAEN,iBAA0B,qBAAvBsB,EAAA8L,GAAG,mBAAD,G,+BAGThM,EAAAA,GAAAA,GAMS,UALNmJ,SAAUjJ,EAAAs5B,UACXx6B,KAAK,SACLJ,MAAM,uB,SAEHsB,EAAA8L,GAAG,gBAAD,EAAAm5C,SAAA,MAQPjlD,EAAAuK,QAAK,YADb3K,EAAAA,GAAAA,IAgBM,MAhBNslD,GAgBM,EAZJplD,EAAAA,GAAAA,GAWM,MAXNqlD,GAWM,qBAVDnlD,EAAAuK,OAAQ,IACX,IAAAzK,EAAAA,GAAAA,GAQS,UAPPpB,MAAM,kBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA4jD,YAAA5jD,EAAA4jD,WAAAzqD,MAAA6G,EAAAhE,UAAU,I,EAElBqH,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACNyK,KAAK,kB,8BGnFVzK,MAAM,6B,IAGJA,MAAM,iB,IAINA,MAAM,c,IAKFA,MAAM,c,IACFokD,IAAI,Q,IAQRpkD,MAAM,c,IACJA,MAAM,gB,IASPoB,EAAAA,GAAAA,GAAI,mB,IAUJhB,KAAK,SACLJ,MAAM,sB,UAWdA,MAAM,c,IAEDA,MAAM,eCxBX2mD,GAAM,CACV1uB,cAjCoB,SAAH98B,GAA6D,IAAvDo7B,EAAQp7B,EAARo7B,SAAUC,EAAYr7B,EAAZq7B,aAAcxjB,EAAQ7X,EAAR6X,SAAUklB,EAAQ/8B,EAAR+8B,SAAU3/B,EAAI4C,EAAJ5C,KAC7D2H,EAAM,GAAHlG,OAAMgZ,EAAQ,wBACjByjB,EAAO,IAAIz1B,OAAO01B,SAQxB,OANAD,EAAKE,OAAO,YAAaJ,GACzBE,EAAKE,OAAO,gBAAiBH,GAC7BC,EAAKE,OAAO,YAAauB,GACzBzB,EAAKE,OAAO,OAAQp+B,GACpBk+B,EAAKE,OAAO,iBAAkB,QAEvB31B,OAAOkK,MAAMhL,EAAK,CACvB62B,OAAQ,OACRpqB,KAAM8pB,IACLr+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAoBEma,mBAlByB,SAAHn8B,GAA6D,IAAvDu6B,EAAQv6B,EAARu6B,SAAUC,EAAYx6B,EAAZw6B,aAAcxjB,EAAQhX,EAARgX,SAAUklB,EAAQl8B,EAARk8B,SAAU3/B,EAAIyD,EAAJzD,KAClE2H,EAAM,GAAHlG,OAAMgZ,EAAQ,wBACjByjB,EAAO,IAAIz1B,OAAO01B,SAQxB,OANAD,EAAKE,OAAO,YAAaJ,GACzBE,EAAKE,OAAO,gBAAiBH,GAC7BC,EAAKE,OAAO,YAAauB,GACzBzB,EAAKE,OAAO,OAAQp+B,GACpBk+B,EAAKE,OAAO,iBAAkB,YAEvB31B,OAAOkK,MAAMhL,EAAK,CACvB62B,OAAQ,OACRpqB,KAAM8pB,IACLr+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,GAOA,Y,ykBC9BAhT,GAAAA,GAAAA,IACE6+B,GAAAA,KAGF,UACE9wC,KAAM,iBAAO,CACXR,KAAM,KACNsT,OAAO,EACR,EACD5C,SAAQpP,GAAAA,GAAA,IACH2qD,EAAAA,EAAAA,IAAW,CACZoC,aAAc,wBAEbrC,EAAAA,EAAAA,IAAS,CACVvxC,SAAU,WACVokB,MAAO,WAGX52B,QAAO3G,GAAAA,GAAAA,GAAA,IACF4qD,EAAAA,EAAAA,IAAa,WAAY,CAAC,cAAe,eACzCC,EAAAA,EAAAA,IAAW,CAAErtB,MAAO,oBAAmB,IAC1C6tB,WAAU,WAAMvkD,KAAKkL,OAAQ,CAAM,EACnC84C,OAAM,WAAI,IAAAtiD,EAAA,KACRyiD,EAAmCnkD,KAAKy2B,MAElCr+B,EAAO,CACXw9B,SAHcuuB,EAARvuB,SAINC,aAJ4BsuB,EAAZtuB,aAKhBxjB,SAAUrS,KAAKqS,SAAS6C,OACxBqiB,SAAUv3B,KAAKimD,aAAaC,UAC5BtuD,KAAMoI,KAAKpI,MAGbuuD,GAAAA,mBAA0B/tD,GAAMX,MAAK,SAACqF,GACpC,GAAIA,EAAOoO,MAGT,OAFAxJ,EAAKwJ,MAAQpO,EAAOoO,WACpBxJ,EAAK9J,KAAO,MAId8J,EAAKg1B,MAAM55B,GAAQrF,MAAK,WACtBiK,EAAKtB,QAAQhB,KAAK,CAAEpF,KAAM,WAC5B,GACF,GACF,KC5CJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mEHJzDuG,EAAAA,GAAAA,IAoEM,MApENC,GAoEM,EAjEJC,EAAAA,GAAAA,GAEM,MAFNkkD,IAEMC,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,2BAAD,IAGPhM,EAAAA,GAAAA,GA0CM,MA1CNokD,GA0CM,EAzCJpkD,EAAAA,GAAAA,GAwCO,QAvCLpB,MAAM,aACLylD,SAAMjkD,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAqjD,QAAArjD,EAAAqjD,OAAAlqD,MAAA6G,EAAAhE,UAAM,kB,EAEvB8D,EAAAA,GAAAA,GAOM,MAPNukD,GAOM,EANJvkD,EAAAA,GAAAA,GAAyD,QAAzDwkD,IAAyDL,EAAAA,GAAAA,IAApCjkD,EAAA8L,GAAG,wBAAD,cACvBhM,EAAAA,GAAAA,GAIC,SAHC3I,GAAG,O,qDACM6I,EAAA/I,KAAIstD,CAAA,GACb7lD,MAAM,gB,kBADGsB,EAAA/I,WAKb6I,EAAAA,GAAAA,GA0BM,MA1BN2lD,GA0BM,EAzBJ3lD,EAAAA,GAAAA,GAwBM,MAxBN2kD,GAwBM,EAvBJ3kD,EAAAA,GAAAA,GAgBM,aAfJA,EAAAA,GAAAA,GAMS,UALPpB,MAAM,wBACNI,KAAK,SACJK,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAm1C,aAAAn1C,EAAAm1C,YAAAh8C,MAAA6G,EAAAhE,UAAW,mB,SAExBgE,EAAA8L,GAAG,gCAAD,GAEP44C,IACA5kD,EAAAA,GAAAA,GAMS,UALPpB,MAAM,wBACNI,KAAK,SACJK,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAo1C,UAAAp1C,EAAAo1C,SAAAj8C,MAAA6G,EAAAhE,UAAQ,mB,SAErBgE,EAAA8L,GAAG,mBAAD,MAGThM,EAAAA,GAAAA,GAKS,SALT4lD,IAKSzB,EAAAA,GAAAA,IADJjkD,EAAA8L,GAAG,mBAAD,cAQP9L,EAAAuK,QAAK,YADb3K,EAAAA,GAAAA,IAgBM,MAhBN+kD,GAgBM,EAZJ7kD,EAAAA,GAAAA,GAWM,MAXN+kD,GAWM,qBAVD7kD,EAAAuK,OAAQ,IACX,IAAAzK,EAAAA,GAAAA,GAQS,UAPPpB,MAAM,kBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA4jD,YAAA5jD,EAAA4jD,WAAAzqD,MAAA6G,EAAAhE,UAAU,I,EAElBqH,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACNyK,KAAK,kB,8BI/DVzK,MAAM,6B,IAGJA,MAAM,iB,IAINA,MAAM,c,IAKFA,MAAM,c,IACFokD,IAAI,Q,IAURpkD,MAAM,c,IACJA,MAAM,gB,IASPoB,EAAAA,GAAAA,GAAI,mB,IAUJhB,KAAK,SACLJ,MAAM,sB,UAWdA,MAAM,c,IAEDA,MAAM,e,ykBCnDjBgL,GAAAA,GAAAA,IACE6+B,GAAAA,KAGF,UACE9wC,KAAM,iBAAO,CACXR,KAAM,KACNsT,OAAO,EACR,EACD5C,SAAQpP,GAAAA,GAAA,IACH2qD,EAAAA,EAAAA,IAAW,CACZoC,aAAc,wBAEbrC,EAAAA,EAAAA,IAAS,CACVvxC,SAAU,WACVokB,MAAO,WAGX52B,QAAO3G,GAAAA,GAAAA,GAAA,IACF4qD,EAAAA,EAAAA,IAAa,WAAY,CAAC,kBAAmB,eAC7CC,EAAAA,EAAAA,IAAW,CAAErtB,MAAO,oBAAmB,IAC1C6tB,WAAU,WAAMvkD,KAAKkL,OAAQ,CAAM,EACnC84C,OAAM,WAAI,IAAAtiD,EAAA,KACRyiD,EAAmCnkD,KAAKy2B,MAElCr+B,EAAO,CACXw9B,SAHcuuB,EAARvuB,SAINC,aAJ4BsuB,EAAZtuB,aAKhBxjB,SAAUrS,KAAKqS,SAAS6C,OACxBqiB,SAAUv3B,KAAKimD,aAAaC,UAC5BtuD,KAAMoI,KAAKpI,MAGbuuD,GAAAA,cAAqB/tD,GAAMX,MAAK,SAACqF,GAC/B,GAAIA,EAAOoO,MAGT,OAFAxJ,EAAKwJ,MAAQpO,EAAOoO,WACpBxJ,EAAK9J,KAAO,MAId8J,EAAKg1B,MAAM55B,GAAQrF,MAAK,WACtBiK,EAAKtB,QAAQhB,KAAK,CAAEpF,KAAM,WAC5B,GACF,GACF,KC5CJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mEFJzDuG,EAAAA,GAAAA,IAuEM,MAvENC,GAuEM,EApEJC,EAAAA,GAAAA,GAEM,MAFNkkD,IAEMC,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,uBAAD,IAGPhM,EAAAA,GAAAA,GA4CM,MA5CNokD,GA4CM,EA3CJpkD,EAAAA,GAAAA,GA0CO,QAzCLpB,MAAM,aACLylD,SAAMjkD,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAqjD,QAAArjD,EAAAqjD,OAAAlqD,MAAA6G,EAAAhE,UAAM,kB,EAEvB8D,EAAAA,GAAAA,GASM,MATNukD,GASM,EARJvkD,EAAAA,GAAAA,GAEQ,QAFRwkD,IAEQL,EAAAA,GAAAA,IADHjkD,EAAA8L,GAAG,8BAAD,cAEPhM,EAAAA,GAAAA,GAIC,SAHC3I,GAAG,O,qDACM6I,EAAA/I,KAAIstD,CAAA,GACb7lD,MAAM,gB,kBADGsB,EAAA/I,WAKb6I,EAAAA,GAAAA,GA0BM,MA1BN2lD,GA0BM,EAzBJ3lD,EAAAA,GAAAA,GAwBM,MAxBN2kD,GAwBM,EAvBJ3kD,EAAAA,GAAAA,GAgBM,aAfJA,EAAAA,GAAAA,GAMS,UALPpB,MAAM,wBACNI,KAAK,SACJK,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAk1C,iBAAAl1C,EAAAk1C,gBAAA/7C,MAAA6G,EAAAhE,UAAe,mB,SAE5BgE,EAAA8L,GAAG,8BAAD,GAEP44C,IACA5kD,EAAAA,GAAAA,GAMS,UALPpB,MAAM,wBACNI,KAAK,SACJK,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAo1C,UAAAp1C,EAAAo1C,SAAAj8C,MAAA6G,EAAAhE,UAAQ,mB,SAErBgE,EAAA8L,GAAG,mBAAD,MAGThM,EAAAA,GAAAA,GAKS,SALT4lD,IAKSzB,EAAAA,GAAAA,IADJjkD,EAAA8L,GAAG,mBAAD,cAQP9L,EAAAuK,QAAK,YADb3K,EAAAA,GAAAA,IAiBM,MAjBN+kD,GAiBM,EAbJ7kD,EAAAA,GAAAA,GAYM,MAZN+kD,GAYM,qBAXD7kD,EAAAuK,OAAQ,IACX,IAAAzK,EAAAA,GAAAA,GASS,UARPpB,MAAM,kBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA4jD,YAAA5jD,EAAA4jD,WAAAzqD,MAAA6G,EAAAhE,UAAU,I,EAElBqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHAO,KAAK,KACLjnD,MAAM,8BACNyK,KAAK,kB,qPGzCjB,SApBiB,CACf9P,KAAM,WACNyH,OAAM,WACJ,OAAO8kD,EAAAA,GAAAA,IAAEC,EAAAA,GAAAA,IAAiBxmD,KAAKymD,UACjC,EACAn+C,S,uWAAQpP,CAAA,CACNutD,SAAQ,WACN,OAAIzmD,KAAKu1C,aAAuB,cAC5Bv1C,KAAKw1C,iBAA2B,kBAC7B,WACT,IACGqO,EAAAA,EAAAA,IAAW,WAAY,CAAC,eAAgB,sBAE7C5iD,WAAY,CACVylD,gBAAAA,GACAC,YAAAA,GACAC,UAAAA,K,2PCLJ,SAZkB,CAChBt+C,S,uWAAQpP,CAAA,CACN2tD,SAAQ,WAAM,OAAO7mD,KAAKhE,IAAK,IAC5B4nD,EAAAA,EAAAA,IAAS,CAAE5nD,KAAM,SAAAtB,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,KAEtD5S,WAAY,CACV6lD,SAAAA,GACAC,eAAAA,GAAAA,EACAC,SAAAA,GAAAA,ICJJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4HbNzDzmD,EAAAA,GAAAA,IAiBQ,QAjBRC,GAiBQ,CAfEG,EAAAkmD,WAAQ,YADhBtmD,EAAAA,GAAAA,IAWM,MAXNokD,GAWM,EANJ3gD,EAAAA,GAAAA,IAIEijD,EAAA,CAHC,UAAStmD,EAAA3E,KAAKlE,GACd,YAAU,EACXovD,QAAQ,O,qBAEVljD,EAAAA,GAAAA,IAAkBmjD,QAAA,YAEpBxB,EAAAA,GAAAA,IAGEyB,EAAA,CADA3+C,IAAI,iB,acfHpJ,MAAM,Y,IACJA,MAAM,uB,UAGPA,MAAM,mC,IAGNoB,EAAAA,GAAAA,GAAsB,OAAjBpB,MAAM,UAAQ,S,UAcnBA,MAAM,c,IAiBJA,MAAM,wB,IAEDA,MAAM,a,IAoCXA,MAAM,wB,UClDNA,MAAM,0C,IAGFA,MAAM,S,UAOZA,MAAM,4B,4BCrCDgoD,GAAkB,IAAI5kD,IAAI,CACrC,YACA,MACA,eACA,gBACA,OACA,QACA,iBAGW6kD,GAAY,CACvBC,KAAM,CACJC,MAAO,UACP19C,KAAM,OACND,MAAO,oBACP49C,SAAU,CAAC,aAEb9mC,OAAQ,CACN6mC,MAAO,kBACPE,MAAM,EACN59C,KAAM,QACND,MAAO,gBACP49C,SAAU,CAAC,aAEbE,KAAM,CACJH,MAAO,2BACPE,MAAM,EACN59C,KAAM,QACND,MAAO,WACP49C,SAAU,CAAC,WAAY,eAEzB1mC,UAAW,CACTymC,MAAO,YACP19C,KAAM,WACND,MAAO,iBAET2W,UAAW,CACTonC,YAAa,CAAE5tD,KAAM,eAAgBgB,MAAO,CAAE6sD,IAAK,cACnD/9C,KAAM,OACND,MAAO,uBAETiX,IAAK,CACH0mC,MAAO,MACP19C,KAAM,WACND,MAAO,YAIEi+C,GAAa,CACxBC,aAAc,CACZP,MAAO,eACP19C,KAAM,OACND,MAAO,oBAETu5B,MAAO,CACLokB,MAAO,QACP19C,KAAM,WACND,MAAO,YACPm+C,YAAa,kBACbP,SAAU,CAAC,UAEbQ,eAAgB,CACdT,MAAO,kBACP19C,KAAM,YACND,MAAO,sBACP49C,SAAU,CAAC,cACXO,YAAa,sBAEfE,MAAO,CACLV,MAAO,QACPE,MAAM,EACN59C,KAAM,cACND,MAAO,aAETy1C,cAAe,CACbkI,MAAO,gBACP19C,KAAM,WACND,MAAO,oBACPm+C,YAAa,0BACbP,SAAU,CAAC,mBAIR,SAASU,GAASxkD,EAAMkQ,GAC7B,OAAKlQ,EAAK6jD,OAAU7jD,EAAKikD,aAKvBJ,EADE7jD,EAAKikD,YACCjkD,EAAKikD,YAEL,CAAE5tD,KAAO2J,EAAK+jD,MAAQ7zC,EAAelQ,EAAK6jD,MAAQ7jD,EAAKykD,WAG7Df,GAAgB7jD,IAAIgkD,EAAMxtD,QAC5BwtD,EAAMtlB,OAAS,CAAE9K,SAAUvjB,EAAY5X,YAAajC,KAAM6Z,EAAY5X,cAGjEurD,GAdsC,KAE7C,IAAIA,CAaN,CChFA,UACEloD,MAAO,CAAC,OCbV,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4DDFjDmM,EAAA0hC,KAAE,YADVwY,EAAAA,GAAAA,IAScJ,EAAA,C,MANXpY,GAAI1hC,EAAA0hC,GACLkb,OAAA,I,oBAEA,SAJQ/oD,GAAK,QAIbgpD,EAAAA,GAAAA,IAEE3nD,EAAAkI,OAAA,WAAA0/C,EAAAA,GAAAA,KAAAC,EAAAA,GAAAA,IADQlpD,K,qBAGZgpD,EAAAA,GAAAA,IAGE3nD,EAAAkI,OAAA,WAAA0/C,EAAAA,GAAAA,KAAA5jD,EAAAA,GAAAA,IAAA,CAAA8D,IAAA,GADQ,CAAC,I,oOERb4B,GAAAA,GAAAA,IAAYo+C,GAAAA,KAkCZ,SAhCwB,CACtBnpD,MAAO,CAAC,OAAQ,WAChB2B,WAAY,CACVynD,mBAAAA,IAEF7oD,QAAS,CACP8oD,SAAQ,SAAE3pD,GACR,OAAOgB,KAAK4oD,YAAYplD,IAAIxE,EAC9B,EACA6pD,UAAS,SAAE7pD,GACLgB,KAAK2oD,SAAS3pD,GAChBgB,KAAK0L,OAAO4G,OAAO,6BAA8B,CAAE80B,KAAM,6BAA8BpoC,MAAAA,IAEvFgB,KAAK0L,OAAO4G,OAAO,0BAA2B,CAAE80B,KAAM,6BAA8BpoC,MAAAA,IAEtFgB,KAAK0L,OAAOjR,SAAS,wBACvB,GAEF6N,S,uWAAQpP,CAAA,CACNivD,QAAO,WACL,OAAOA,GAAQnoD,KAAK2D,KAAM3D,KAAK6T,YACjC,EACAiH,QAAO,WACL,OAAO9a,KAAK0L,OAAOoP,OACrB,IACG8oC,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,EAC7C+0C,YAAa,SAAAluD,GAAK,OAAI,IAAI+H,IAAI/H,EAAMouD,kBAAkBrf,aAAaK,YAAYC,eAAe,MC1BpG,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qGLNzD4b,EAAAA,GAAAA,IA0DqBoD,EAAA,CAxDnBC,IAAI,MACH7b,GAAIxsC,EAAAwnD,S,oBAEL,eAAA3tD,EAAAmC,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAJkC,GAAxB+L,EAAQlO,EAARkO,SAAUhI,EAAIlG,EAAJkG,KAAMuoD,EAAQzuD,EAARyuD,SAAQ,QAIlCxoD,EAAAA,GAAAA,GAoDK,MApDLkE,EAAAA,GAAAA,IAoDK,CAnDHtF,MAAK,CAAC,4BAA2B,WACZqJ,KACb/H,EAAAuoD,QAAM,eAEdvD,EAAAA,GAAAA,KAsBYwD,EAAAA,GAAAA,IArBLxoD,EAAAwnD,QAAU,IAAM,UAAT,CACZ9oD,MAAM,4BACLqB,KAAMA,EACNZ,QAAOmpD,G,oBAER,iBAOO,EAPPxoD,EAAAA,GAAAA,GAOO,aALGE,EAAAgD,KAAKmG,OAAI,YADjB67C,EAAAA,GAAAA,IAKEI,EAAA,C,MAHA,iBACA1mD,MAAM,yBACLyK,KAAMnJ,EAAAgD,KAAKmG,M,qCAIRnJ,EAAAgD,KAAKylD,aAAU,YADvB7oD,EAAAA,GAAAA,IAIO,OAJPC,IAIOokD,EAAAA,GAAAA,IADHjkD,EAAAgD,KAAKylD,YAAU,sBAEnB3oD,EAAAA,GAAAA,GAEO,OAFPkkD,IAEOC,EAAAA,GAAAA,IADFjkD,EAAAgD,KAAK0lD,UAAY1oD,EAAA8L,GAAG9L,EAAAgD,KAAKkG,QAAK,G,oCAGrCy+C,EAAAA,GAAAA,IAAQ3nD,EAAAkI,OAAA,WAEAlI,EAAAgD,KAAKqkD,aAAernD,EAAAma,QAAQna,EAAAgD,KAAKqkD,eAAW,YADpDznD,EAAAA,GAAAA,IAKM,MALNskD,IAKMD,EAAAA,GAAAA,IADDjkD,EAAAma,QAAQna,EAAAgD,KAAKqkD,cAAW,qBAGrBrnD,EAAA2oD,SAAW3oD,EAAAkT,cAAW,YAD9BtT,EAAAA,GAAAA,IAgBS,U,MAdPd,KAAK,SACLJ,MAAM,+BACL+S,MAAOzR,EAAA8L,GAAG9L,EAAAgoD,SAAW,gBAAkB,eACvC,iBAAgBhoD,EAAAgoD,SAChB7oD,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,SAAAokD,GAAA,OAAevkD,EAAAkoD,UAAUloD,EAAAgD,KAAK3J,KAAI,yB,CAGhC2G,EAAA2oD,SAAW3oD,EAAAkT,cAAW,YAD9B8xC,EAAAA,GAAAA,IAOEI,EAAA,C,MALA,iBACA1mD,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,eAAc,YACI5oD,EAAAgoD,SAAShoD,EAAAgD,KAAK3J,SACrCwvD,UAAY7oD,EAAAgoD,SAAShoD,EAAAgD,KAAK3J,MAAsB,GAAd,YACnC8P,KAAK,a,qGMvDR,IAAM2/C,GAAmB,WAAqF,IAApF3yD,EAAI6F,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GAAEnC,EAAAmC,UAAAlD,OAAA,EAAAkD,UAAA,QAAA4F,EAAImnD,EAAQlvD,EAARkvD,SAAUC,EAAgBnvD,EAAhBmvD,iBAAkBC,EAAYpvD,EAAZovD,aAAcC,EAASrvD,EAATqvD,UAAWh2C,EAAWrZ,EAAXqZ,YACjG,OAAO/c,EAAKqC,QAAO,SAAAkC,GAAmC,IAAhCosD,EAAQpsD,EAARosD,SAAUC,EAAIrsD,EAAJqsD,KAAMU,EAAS/sD,EAAT+sD,UAC9Bh3B,EAAM,IAAI3uB,IAAIglD,GAAY,IAChC,SAAKmC,GAAgBx4B,EAAI5tB,IAAI,gBACxBqQ,GAAeg2C,GAAaz4B,EAAI5tB,IAAI,eACpCqQ,GAAiB6zC,GAAQU,MACxBv0C,GAAgBA,EAAYivB,SAAW1R,EAAI5tB,IAAI,iBAChDkmD,GAAYt4B,EAAI5tB,IAAI,WACpBmmD,GAAoBv4B,EAAI5tB,IAAI,iBAEnC,GACF,EAEasmD,GAAiB,SAAApvD,GAAK,OAAIA,EAAM42B,MAAMZ,SAASx5B,KAAI,SAAAJ,GAAI,MAAK,CACvEkD,KAAM,QAAUlD,EAAKgB,GACrB8vD,YAAa,CAAE5tD,KAAM,iBAAkBkoC,OAAQ,CAAEpqC,GAAIhB,EAAKgB,KAC1DuxD,SAAUvyD,EAAKsb,MACfg3C,WAAYtyD,EAAKsb,MAAM,GACxB,GAAE,E,+NCdI,IAAM23C,GAAmB,CAC9BzqD,MAAO,CACL,WAEF2B,WAAY,CACV+oD,gBAAAA,IAEF1hD,S,uWAAQpP,CAAA,IACH0qD,EAAAA,EAAAA,IAAS,CACVtyB,MAAOw4B,GACPj2C,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,EAC7Co2C,YAAa,SAAAvvD,GAAK,OAAIA,EAAM2X,SAAQ,OAAQ,EAC5C63C,WAAY,SAAAxvD,GAAK,OAAIA,EAAM2X,SAAS63C,UAAU,MAKpD,YCdA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4ECJzD3pD,EAAAA,GAAAA,IAOK,2BANHA,EAAAA,GAAAA,IAKEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAJexpD,EAAA2wB,OAAK,SAAb3tB,G,mBADTgiD,EAAAA,GAAAA,IAKEyE,EAAA,CAHC3hD,IAAK9E,EAAK3J,KACV,WAAU2G,EAAA2oD,QACV3lD,KAAMA,G,mDCLLtE,MAAM,kB,UAeNA,MAAM,0C,UAINA,MAAM,a,ykBCHdgL,GAAAA,GAAAA,IACEggD,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,KA+DF,SA5DiB,CACfvrD,MAAO,CAAC,SACRO,QAAS,CACPirD,WAAU,SAAEnnD,GACV,OAAOwkD,GAAQxkD,EAAM3D,KAAK6T,YAC5B,GAEFvL,SAAQpP,GAAAA,GAAA,CACN4hB,QAAO,WACL,OAAO9a,KAAK0L,OAAOoP,OACrB,IACG8oC,EAAAA,EAAAA,IAAS,CACVtyB,MAAOw4B,GACPj2C,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,EAC7CuwB,mBAAoB,SAAA1pC,GAAK,OAAIA,EAAM+wB,IAAI0Y,eAAe1qC,MAAM,EAC5DwwD,YAAa,SAAAvvD,GAAK,OAAIA,EAAM2X,SAAQ,OAAQ,EAC5C63C,WAAY,SAAAxvD,GAAK,OAAIA,EAAM2X,SAAS63C,UAAU,EAC9CzwC,6BAA8B,SAAA/e,GAAK,OAAIA,EAAM2X,SAASoH,4BAA4B,EAClF8lC,sBAAuB,SAAA7kD,GAAK,OAAIA,EAAM4kD,cAAcC,qBAAqB,EACzEqJ,YAAa,SAAAluD,GAAK,OAAI,IAAI+H,IAAI/H,EAAMouD,kBAAkBrf,aAAaK,YAAYC,eAAe,KAC9F,IACFghB,WAAU,WAAI,IAAArpD,EAAA,KACZ,OAAK1B,KAAK6T,YAcH41C,GAAiB,GAADpwD,QAAAU,EAAAA,EAAAA,GAEhB9B,OACAkT,QAAOjS,GAAC,CAAC,EAAIouD,KACbnuD,QAAO,SAAAqB,GAAA,IAAEd,GAAFgE,EAAAA,EAAAA,GAAAlD,EAAA,GAAG,UAAMkH,EAAKknD,YAAYplD,IAAI9J,EAAE,IACvCxC,KAAI,SAAAyG,GAAA,IAAAC,GAAAF,EAAAA,EAAAA,GAAAC,EAAA,GAAEjE,EAACkE,EAAA,GAAG,OAAA1E,GAAAA,GAAA,GAAA0E,EAAA,IAAa,IAAE5D,KAAMN,GAAC,MAAIK,EAAAA,EAAAA,GACpCiG,KAAKsxB,MAAMn4B,QAAO,SAACO,GAAC,OAAKgI,EAAKknD,YAAYplD,IAAI9J,EAAEM,KAAK,MAACD,EAAAA,EAAAA,GACtD9B,OACAkT,QAAOjS,GAAC,CAAC,EAAI4uD,KACb3uD,QAAO,SAAA4E,GAAA,IAAErE,GAAFgE,EAAAA,EAAAA,GAAAK,EAAA,GAAG,UAAM2D,EAAKknD,YAAYplD,IAAI9J,EAAE,IACvCxC,KAAI,SAAAqb,GAAA,IAAAC,GAAA9U,EAAAA,EAAAA,GAAA6U,EAAA,GAAE7Y,EAAC8Y,EAAA,GAAG,OAAAtZ,GAAAA,GAAA,GAAAsZ,EAAA,IAAa,IAAExY,KAAMN,GAAC,MAErC,CACEgwD,SAAU1pD,KAAKyZ,6BACfkwC,iBAAkB3pD,KAAKu/C,sBACvBqK,aAAc5pD,KAAKkqD,WACnBL,UAAW7pD,KAAKiqD,YAChBp2C,YAAa7T,KAAK6T,cAEpB3X,MAAM,EAAG8D,KAAKkwB,OAhCPu5B,GAAiB,CAAAvwD,GAAAA,GAAA,GACjBouD,GAAAA,QAAgB,IAAEttD,KAAM,WAAQd,GAAAA,GAAA,GAChCouD,GAAUK,MAAI,IAAE3tD,KAAM,SAAMd,GAAAA,GAAA,GAC5B4uD,GAAWI,OAAK,IAAEluD,KAAM,WAE/B,CACE0vD,SAAU1pD,KAAKyZ,6BACfkwC,iBAAkB3pD,KAAKu/C,sBACvBqK,aAAc5pD,KAAKkqD,WACnBL,UAAW7pD,KAAKiqD,YAChBp2C,YAAa7T,KAAK6T,aAuBxB,KC5EJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,8FFNzDtT,EAAAA,GAAAA,IAsBO,OAtBPC,GAsBO,iBArBLD,EAAAA,GAAAA,IAoBcwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAnBGxpD,EAAAoqD,YAAU,SAAlBpnD,G,mBADTgiD,EAAAA,GAAAA,IAoBcJ,EAAA,CAlBX98C,IAAK9E,EAAK3J,KACXqF,MAAM,cACL8tC,GAAIxsC,EAAAmqD,WAAWnnD,GACfyO,MAAOzO,EAAK0lD,UAAY1oD,EAAA8L,GAAG9I,EAAKkG,Q,oBAEjC,iBAIE,CAHMlG,EAAKmG,OAAI,YADjB67C,EAAAA,GAAAA,IAIEI,EAAA,C,MAFA,iBACCj8C,KAAMnG,EAAKmG,M,mCAGNnG,EAAKylD,aAAU,YADvB7oD,EAAAA,GAAAA,IAG6B,OAH7BokD,IAG6BC,EAAAA,GAAAA,IAAzBjhD,EAAKylD,YAAU,qBAEXzlD,EAAKqkD,aAAernD,EAAAma,QAAQnX,EAAKqkD,eAAW,YADpDznD,EAAAA,GAAAA,IAGE,MAHFskD,MAGE,gB,soBGGRx6C,GAAAA,GAAAA,IACEggD,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAQ,GAAAA,IACAC,GAAAA,IACAR,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAK,GAAAA,KA0FF,SAxFiB,CACf5rD,MAAO,CAAC,cAAe,iBACvB8L,QAAO,WACP,EACAnK,WAAY,CACV8oD,iBAAAA,GACAC,gBAAAA,GACAmB,eAAAA,GACAC,SAAAA,GAAAA,GAEFhzD,KAAI,WACF,MAAO,CACLizD,UAAU,EACVC,eAAe,EACfC,WAAW,EACXC,cAAevzD,OAAOkT,QAAQm8C,IAAWpwD,KAAI,SAAAsD,GAAA,IAAAa,GAAAqC,EAAAA,EAAAA,GAAAlD,EAAA,GAAEd,EAAC2B,EAAA,GAAG,OAAAnC,GAAAA,GAAA,GAAAmC,EAAA,IAAa,IAAErB,KAAMN,GAAC,IACzE+xD,SAAUxzD,OAAOkT,QAAQ28C,IAAY5wD,KAAI,SAAAyG,GAAA,IAAAC,GAAAF,EAAAA,EAAAA,GAAAC,EAAA,GAAEjE,EAACkE,EAAA,GAAG,OAAA1E,GAAAA,GAAA,GAAA0E,EAAA,IAAa,IAAE5D,KAAMN,GAAC,IAEzE,EACAmG,QAAS,CACP6rD,gBAAe,WACb1rD,KAAKsrD,eAAiBtrD,KAAKsrD,aAC7B,EACAK,YAAW,WACT3rD,KAAKurD,WAAavrD,KAAKurD,SACzB,EACAK,eAAc,WACZ5rD,KAAKqrD,UAAYrrD,KAAKqrD,QACxB,EACAQ,eAAc,WACZ7rD,KAAK0L,OAAO4G,OAAO,gBAAiB,CAAE80B,KAAM,qBAAsBpoC,OAAQgB,KAAK8rD,YAC/E9rD,KAAK0L,OAAOjR,SAAS,wBACvB,EACAkuD,SAAQ,SAAEhlD,GACR,OAAO3D,KAAK4oD,YAAYplD,IAAIG,EAC9B,EACAklD,UAAS,SAAEllD,GACL3D,KAAK2oD,SAAShlD,GAChB3D,KAAK0L,OAAO4G,OAAO,6BAA8B,CAAE80B,KAAM,6BAA8BpoC,MAAO2E,IAE9F3D,KAAK0L,OAAO4G,OAAO,0BAA2B,CAAE80B,KAAM,6BAA8BpoC,MAAO2E,IAE7F3D,KAAK0L,OAAOjR,SAAS,wBACvB,GAEF6N,SAAQpP,GAAAA,GAAA,IACH0qD,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,EAC7CuwB,mBAAoB,SAAA1pC,GAAK,OAAIA,EAAM+wB,IAAI0Y,eAAe1qC,MAAM,EAC5DwwD,YAAa,SAAAvvD,GAAK,OAAIA,EAAM2X,SAAQ,OAAQ,EAC5C63C,WAAY,SAAAxvD,GAAK,OAAIA,EAAM2X,SAAS63C,UAAU,EAC9CzwC,6BAA8B,SAAA/e,GAAK,OAAIA,EAAM2X,SAASoH,4BAA4B,EAClF8lC,sBAAuB,SAAA7kD,GAAK,OAAIA,EAAM4kD,cAAcC,qBAAqB,EACzEqJ,YAAa,SAAAluD,GAAK,OAAI,IAAI+H,IAAI/H,EAAMouD,kBAAkBrf,aAAaK,YAAYC,eAAe,EAC9F+hB,UAAW,SAAApxD,GAAK,OAAIA,EAAMouD,kBAAkBrf,aAAaE,OAAOE,WAAW,KAC3E,IACFkiB,eAAc,WACZ,OAAOtC,GACLxxD,OACGkT,QAAOjS,GAAC,CAAC,EAAIouD,KACbpwD,KAAI,SAAA6G,GAAA,IAAAC,GAAAN,EAAAA,EAAAA,GAAAK,EAAA,GAAErE,EAACsE,EAAA,GAAG,OAAA9E,GAAAA,GAAA,GAAA8E,EAAA,IAAa,IAAEhE,KAAMN,GAAC,IACnC,CACEgwD,SAAU1pD,KAAKyZ,6BACfkwC,iBAAkB3pD,KAAKu/C,sBACvBqK,aAAc5pD,KAAKkqD,WACnBL,UAAW7pD,KAAKiqD,YAChBp2C,YAAa7T,KAAK6T,aAGxB,EACAm4C,UAAS,WACP,OAAOvC,GACLxxD,OACGkT,QAAOjS,GAAC,CAAC,EAAI4uD,KACb5wD,KAAI,SAAAqb,GAAA,IAAAC,GAAA9U,EAAAA,EAAAA,GAAA6U,EAAA,GAAE7Y,EAAC8Y,EAAA,GAAG,OAAAtZ,GAAAA,GAAA,GAAAsZ,EAAA,IAAa,IAAExY,KAAMN,GAAC,IACnC,CACEgwD,SAAU1pD,KAAKyZ,6BACfkwC,iBAAkB3pD,KAAKu/C,sBACvBqK,aAAc5pD,KAAKkqD,WACnBL,UAAW7pD,KAAKiqD,YAChBp2C,YAAa7T,KAAK6T,aAGxB,IACGgwC,EAAAA,EAAAA,IAAW,CAAC,kBAAmB,8BCjHtC,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,2LfNzDtjD,EAAAA,GAAAA,IAiGM,MAjGNC,GAiGM,EAhGJC,EAAAA,GAAAA,GA+FM,MA/FNkkD,GA+FM,CA7FKhkD,EAAAsrD,a,kBAAW,YADpB1rD,EAAAA,GAAAA,IAgBM,MAhBNskD,GAgBM,EAZJ7gD,EAAAA,GAAAA,IAA6BkoD,EAAA,CAAZh8B,MAAO,IACxB80B,IACAvkD,EAAAA,GAAAA,GASS,UARPpB,MAAM,kBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAkrD,gBAAAlrD,EAAAkrD,eAAA/xD,MAAA6G,EAAAhE,UAAc,I,EAEtBqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,qBACN,iBACCyK,KAAMnJ,EAAAmrD,UAAY,eAAiB,c,uBAKjCnrD,EAAAmrD,WAAanrD,EAAAsrD,cAAW,YADjC1rD,EAAAA,GAAAA,IA4EK,KA5EL0kD,GA4EK,CAvEKtkD,EAAAkT,cAAgBlT,EAAAspD,cAAW,YADnCtE,EAAAA,GAAAA,IAYkByE,EAAA,C,MAVf,YAAU,EACVzmD,KAAM,CAAAmG,KAAA,SAAAD,MAAA,iBACN,gBAAelJ,EAAA2qD,cAAgB,OAAS,QACxCxrD,QAAOa,EAAA+qD,iB,oBAER,iBAIE,EAJF1nD,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,oBACN,iBACCyK,KAAMnJ,EAAA2qD,cAAgB,aAAe,gB,6FAG1C7qD,EAAAA,GAAAA,GAYM,MAZN2lD,GAYM,EARJ3lD,EAAAA,GAAAA,GAOM,MAPN2kD,GAOM,iBANJ7kD,EAAAA,GAAAA,IAKEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAJexpD,EAAAorD,gBAAc,SAAtBpoD,G,mBADTgiD,EAAAA,GAAAA,IAKEyE,EAAA,CAHC3hD,IAAK9E,EAAK3J,KACV,WAAU2G,EAAA0qD,UAAY1qD,EAAAwrD,cACtBxoD,KAAMA,G,qDARHhD,EAAA2qD,iBAaF3qD,EAAAkT,cAAW,YADnB8xC,EAAAA,GAAAA,IAwBkByE,EAAA,C,MAtBf,YAAU,EACVzmD,KAAM,CAAAmG,KAAA,OAAAD,MAAA,aACN,gBAAelJ,EAAA4qD,UAAY,OAAS,QACpCzrD,QAAOa,EAAAgrD,a,oBAER,iBAWc,EAXd3nD,EAAAA,GAAAA,IAWcuhD,EAAA,CAVXnzC,MAAOzR,EAAA8L,GAAG,sBACXpN,MAAM,eACL8tC,GAAI,CAAAnzC,KAAA,SACJ8F,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAN,cAAW,Y,oBAEX,iBAIE,EAJFkD,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,eACN,iBACAyK,KAAK,W,uBAGT9F,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,oBACN,iBACCyK,KAAMnJ,EAAA4qD,UAAY,aAAe,gB,6FAGtC9qD,EAAAA,GAAAA,GAQM,MARN4kD,GAQM,EAJJrhD,EAAAA,GAAAA,IAGEooD,EAAA,CAFC,WAAUzrD,EAAA0qD,UAAY1qD,EAAAwrD,cACvB9sD,MAAM,a,mCALAsB,EAAA4qD,eAAS,cAQnBhrD,EAAAA,GAAAA,IAKEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAJexpD,EAAAqrD,WAAS,SAAjBroD,G,mBADTgiD,EAAAA,GAAAA,IAKEyE,EAAA,CAHC3hD,IAAK9E,EAAK3J,KACV,WAAU2G,EAAA0qD,UAAY1qD,EAAAwrD,cACtBxoD,KAAMA,G,sCAGAhD,EAAAwrD,eAAiBxrD,EAAAkT,cAAW,YADrC8xC,EAAAA,GAAAA,IAKEyE,EAAA,C,MAHC,YAAU,EACVzmD,KAAI,CAAAkG,MAAWlJ,EAAA0qD,SAAW1qD,EAAA8L,GAAG,mBAAqB9L,EAAA8L,GAAG,mBAAD3C,KAA2BnJ,EAAA0qD,SAAW,QAAU,UACpGvrD,QAAOa,EAAAirD,gB,iFgB7FXvsD,MAAM,2B,IACJA,MAAM,uB,IACJA,MAAM,c,iBCKjB,SAR8B,CAC5BiJ,SAAU,CACR0R,6BAA4B,WAC1B,OAAOha,KAAK0L,OAAOhR,MAAM2X,SAAS2H,4BACpC,ICGJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCFJzDzZ,EAAAA,GAAAA,IAQM,MARNC,GAQM,EAPJC,EAAAA,GAAAA,GAMM,MANNkkD,GAMM,EALJlkD,EAAAA,GAAAA,GAIM,MAJNokD,GAIM,EAFJpkD,EAAAA,GAAAA,GAA6C,OAAxCM,UAAQJ,EAAAqZ,8BAA4B,OAAAgrC,S,aGJ1C3lD,MAAM,kB,IACJA,MAAM,yC,IACJA,MAAM,2D,IACJA,MAAM,S,IAIRA,MAAM,6B,mECOjB,SAbsB,CACpBiJ,SAAU,CACR+jD,MAAO,WAAc,OAAOrsD,KAAK0L,OAAOhR,MAAM2X,SAASmH,cAAe,EACtE8yC,oBAAqB,WAAc,OAAOtsD,KAAK0L,OAAOhR,MAAM2X,SAASoH,4BAA6B,EAClG8yC,OAAQ,WAAc,OAAOvsD,KAAK0L,OAAOhR,MAAM2X,SAASsH,eAAgB,EACxE6yC,YAAa,WAAc,OAAOxsD,KAAK0L,OAAOhR,MAAM2X,SAASwH,kBAAmB,EAChF4yC,WAAY,WAAc,OAAOzsD,KAAK0L,OAAOhR,MAAM2X,SAASuH,mBAAoB,EAChFlC,kBAAmB,WAAc,OAAO1X,KAAK0L,OAAOhR,MAAM2X,SAASqF,iBAAkB,EACrFvC,UAAW,WAAc,OAAOnV,KAAK0L,OAAOhR,MAAM2X,SAAS8C,SAAU,EACrEu3C,YAAa,WAAc,OAAOC,GAAAA,EAAAA,eAAqC3sD,KAAK0L,OAAOhR,MAAM2X,SAASq6C,YAAa,ICFnH,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCFNzDnsD,EAAAA,GAAAA,IA8BM,MA9BNC,GA8BM,EA7BJC,EAAAA,GAAAA,GA4BM,MA5BNkkD,GA4BM,EA3BJlkD,EAAAA,GAAAA,GAIM,MAJNokD,GAIM,EAHJpkD,EAAAA,GAAAA,GAEM,MAFNukD,IAEMJ,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,yBAAD,MAGThM,EAAAA,GAAAA,GAqBM,MArBNwkD,GAqBM,EApBJxkD,EAAAA,GAAAA,GAmBK,WAlBOE,EAAA0rD,QAAK,YAAf9rD,EAAAA,GAAAA,IAEK,KAAA6lD,IAAAxB,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,yBAAD,qBAEG9L,EAAA2rD,sBAAmB,YAA7B/rD,EAAAA,GAAAA,IAEK,KAAA6kD,IAAAR,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,yCAAD,qBAEG9L,EAAA4rD,SAAM,YAAhBhsD,EAAAA,GAAAA,IAEK,KAAA8kD,IAAAT,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,0BAAD,qBAEG9L,EAAA6rD,cAAW,YAArBjsD,EAAAA,GAAAA,IAEK,KAAA8lD,IAAAzB,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,iCAAD,qBAEG9L,EAAA8rD,aAAU,YAApBlsD,EAAAA,GAAAA,IAEK,KAAA+kD,IAAAV,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,+BAAD,sBAEPhM,EAAAA,GAAAA,GAAiD,WAAAmkD,EAAAA,GAAAA,IAA1CjkD,EAAA8L,GAAG,iCAAD,IACThM,EAAAA,GAAAA,GAAgE,WAAAmkD,EAAAA,GAAAA,IAAzDjkD,EAAA8L,GAAG,8BAA+B,OAAGm4C,EAAAA,GAAAA,IAAGjkD,EAAAwU,WAAS,IACxD1U,EAAAA,GAAAA,GAA+H,WAAAmkD,EAAAA,GAAAA,IAAxHjkD,EAAA8L,GAAG,gCAAiC,OAAGm4C,EAAAA,GAAAA,IAAGjkD,EAAA+rD,YAAYE,KAAM,KAAChI,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,0BAA4B9L,EAAA+rD,YAAYG,OAAI,U,aG1BzHxtD,MAAM,uB,IACJA,MAAM,yC,IACJA,MAAM,2D,IACJA,MAAM,S,IAIRA,MAAM,iB,eASOoB,EAAAA,GAAAA,GAAI,mB,IAEjBpB,MAAM,sB,kCCMjB,SAASytD,GAAgBC,GACvB,IAAMhuC,EAAcguC,EAAMrhD,OAAOhR,MAAMqB,MAAM8X,YAAYkL,YACrDA,IACFguC,EAAMC,cAAc1xC,SAAQ,SAAA2xC,GAC1BA,EAASjzD,KAAO,YAClB,IACA8kB,EAAAA,GAAAA,YAAuB,CAAEC,YAAAA,IACtBtnB,MAAK,SAACy1D,IA5Bb,SAA0BH,EAAOG,GAAO,IAAAxrD,EAAA,KAChCyrD,EAAWC,KAAQF,GAEzBH,EAAMC,cAAc1xC,SAAQ,SAAC2xC,EAAUrpD,GACrC,IAAM5H,EAAOmxD,EAASvpD,GAChBypD,EAAMrxD,EAAKsxD,QAAU5rD,EAAKgK,OAAOhR,MAAM2X,SAASkD,cAChDvb,EAAOgC,EAAKuxD,KAElBN,EAASI,IAAMA,EACfJ,EAASjzD,KAAOA,EAEhB+yD,EAAMrhD,OAAOhR,MAAM+wB,IAAIC,kBAAkBwR,UAAU,CAAEplC,GAAIkC,IACtDvC,MAAK,SAAC+1D,GACAA,EAAatiD,QAChB6hD,EAAMrhD,OAAO4G,OAAO,cAAe,CAACk7C,IACpCP,EAASn1D,GAAK01D,EAAa11D,GAE/B,GACJ,GACF,CAUQ21D,CAAgBV,EAAOG,EACzB,IAEN,CAyCA,SAvCyB,CACvB90D,KAAM,iBAAO,CACX40D,cAAe,GAChB,EACD1kD,SAAU,CACRtM,KAAM,WACJ,OAAOgE,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAY5X,WAC7C,EACA4d,mBAAkB,WAChB,OAAO7Z,KAAK0L,OAAOhR,MAAM2X,SAASwH,kBACpC,GAEFha,QAAS,CACP6tD,gBAAe,SAAE51D,EAAIkC,GACnB,OAAO2zD,EAAAA,GAAAA,GAAoB71D,EAAIkC,EAAMgG,KAAK0L,OAAOhR,MAAM2X,SAAS8G,oBAClE,GAEFy0C,MAAO,CACL5xD,KAAM,SAAUA,EAAM6xD,GAChB7tD,KAAK6Z,oBACPizC,GAAe9sD,KAEnB,GAEF8tD,QACE,WAAY,IAAAnlD,EAAA,KACV3I,KAAKgtD,cAAgB,IAAIzvD,MAAM,GAAGwwD,OAAO72D,KAAI,SAAA+6C,GAAC,MAC5C,CACEob,IAAK1kD,EAAK+C,OAAOhR,MAAM2X,SAASkD,cAChCvb,KAAM,GACNlC,GAAI,EACL,IAECkI,KAAK6Z,oBACPizC,GAAe9sD,KAEnB,GCjEJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wEFNzDO,EAAAA,GAAAA,IAyBM,MAzBNC,GAyBM,EAxBJC,EAAAA,GAAAA,GAuBM,MAvBNkkD,GAuBM,EAtBJlkD,EAAAA,GAAAA,GAIM,MAJNokD,GAIM,EAHJpkD,EAAAA,GAAAA,GAEM,MAFNukD,IAEMJ,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,gCAAD,MAGThM,EAAAA,GAAAA,GAgBM,MAhBNwkD,GAgBM,iBAfJ1kD,EAAAA,GAAAA,IASIwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IARaxpD,EAAAqsD,eAAa,SAArBhxD,G,mBADTuE,EAAAA,GAAAA,IASI,KAPDkI,IAAKzM,EAAKlE,GACXuH,MAAM,uB,EAENoB,EAAAA,GAAAA,GAAqB,OAAfutD,IAAKhyD,EAAKqxD,K,YAChBrpD,EAAAA,GAAAA,IAEcuhD,EAAA,CAFApY,GAAIxsC,EAAA+sD,gBAAgB1xD,EAAKlE,GAAIkE,EAAKhC,O,oBAC9C,iBAAe,qBAAZgC,EAAKhC,MAAI,G,sBACAorD,I,WAEhB3kD,EAAAA,GAAAA,GAII,IAJJ4kD,GAII,EAHFrhD,EAAAA,GAAAA,IAEcuhD,EAAA,CAFApY,GAAI,CAAAnzC,KAAA,kBAAyB,C,mBACzC,iBAA8B,qBAA3B2G,EAAA8L,GAAG,uBAAD,G,oCGlBbpN,MAAM,e,IAEDA,MAAM,uB,IAMFA,MAAM,S,IASRA,MAAM,gB,IAMDA,MAAM,gB,eAGPA,MAAM,iB,IAOToB,EAAAA,GAAAA,GAAI,mB,IACEpB,MAAM,c,IAMbA,MAAM,e,UAYbA,MAAM,e,IAEDA,MAAM,uB,IAKFA,MAAM,SCvDnBgL,GAAAA,GAAAA,IACE6gD,GAAAA,IACAhiB,GAAAA,KA2CF,SAxCmB,CACjB5pC,MAAO,CAAC,YACRlH,KAAI,WACF,MAAO,CACL61D,eAAgB,GAChBva,QAAS,KACToY,WAAW,EAEf,EACAxjD,SAAU,CACR+G,SAAQ,WACN,OAAOrP,KAAK0L,OAAOhR,MAAM2xD,MAAMh9C,QACjC,GAEFxP,QAAS,CACPmkD,OAAM,SAAE/3B,GACNjsB,KAAK0L,OAAOhR,MAAM2xD,MAAM3Y,QAAQt0C,KAAK,UAAW,CAAEjB,KAAM8tB,GAAW,KACnEjsB,KAAKiuD,eAAiB,EACxB,EACAC,YAAW,WACTluD,KAAK8rD,WAAa9rD,KAAK8rD,SACzB,EACA4B,gBAAe,SAAE1xD,GACf,OAAO2xD,EAAAA,GAAAA,GAAoB3xD,EAAKlE,GAAIkE,EAAKo7B,SAAUp3B,KAAK0L,OAAOhR,MAAM2X,SAAS8G,oBAChF,GAEFy0C,MAAO,CACLv+C,SAAQ,SAAE8+C,GACR,IAAMC,EAAWpuD,KAAKoM,IAAIiiD,cAAc,gBACnCD,GACDA,EAAS9kD,UAAY8kD,EAAS/hD,aAAe,GAAK+hD,EAASE,cAC7DtuD,KAAKuuD,WAAU,WACRH,IACLA,EAAS9kD,UAAY8kD,EAASE,aAAeF,EAAS/hD,aACxD,GAEJ,ICvCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,kFFLhD1L,EAAAmrD,WAAcnrD,EAAA6tD,WA2CQ,YAQ/BjuD,EAAAA,GAAAA,IAkBM,MAlBNilD,GAkBM,EAdJ/kD,EAAAA,GAAAA,GAaM,MAbNglD,GAaM,EAZJhlD,EAAAA,GAAAA,GAWM,OAVJpB,MAAM,qDACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAeH,EAAAutD,aAAAvtD,EAAAutD,YAAAp0D,MAAA6G,EAAAhE,UAAW,yB,EAEhC8D,EAAAA,GAAAA,GAMM,MANNilD,GAMM,EALJ1hD,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,OACNyK,KAAK,c,SACL,KACF86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,mBAAD,cAjEkB,YAD/BlM,EAAAA,GAAAA,IAmDM,MAnDNC,GAmDM,EA/CJC,EAAAA,GAAAA,GA8CM,MA9CNkkD,GA8CM,EA7CJlkD,EAAAA,GAAAA,GAaM,OAZJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,iCAAgC,iBACX5oD,EAAA6tD,YAC1B1uD,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAeH,EAAAutD,aAAAvtD,EAAAutD,YAAAp0D,MAAA6G,EAAAhE,UAAW,yB,EAEhC8D,EAAAA,GAAAA,GAOM,MAPNokD,GAOM,qBANDlkD,EAAA8L,GAAG,mBAAoB,IAC1B,GACQ9L,EAAA6tD,WAAQ,YADhB7I,EAAAA,GAAAA,IAIEI,EAAA,C,MAFAj8C,KAAK,QACLzK,MAAM,iB,uBAIZoB,EAAAA,GAAAA,GAsBM,MAtBNukD,GAsBM,iBArBJzkD,EAAAA,GAAAA,IAoBMwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAnBcxpD,EAAA0O,UAAQ,SAAnB4c,G,mBADT1rB,EAAAA,GAAAA,IAoBM,OAlBHkI,IAAKwjB,EAAQn0B,GACduH,MAAM,iB,EAENoB,EAAAA,GAAAA,GAEO,OAFPwkD,GAEO,EADLxkD,EAAAA,GAAAA,GAAkC,OAA5ButD,IAAK/hC,EAAQwiC,OAAOnB,Q,cAE5B7sD,EAAAA,GAAAA,GAWM,MAXN2kD,GAWM,EAVJphD,EAAAA,GAAAA,IAKcuhD,EAAA,CAJZlmD,MAAM,aACL8tC,GAAIxsC,EAAA+sD,gBAAgBzhC,EAAQwiC,S,oBAE7B,iBAA6B,qBAA1BxiC,EAAQwiC,OAAOr3B,UAAQ,G,sBAE5BiuB,IACA5kD,EAAAA,GAAAA,GAEO,OAFP4lD,IAEOzB,EAAAA,GAAAA,IADF34B,EAAQ9tB,MAAI,M,aAKvBsC,EAAAA,GAAAA,GAOM,MAPN6kD,GAOM,YANJ7kD,EAAAA,GAAAA,GAKE,Y,qDAJSE,EAAAstD,eAAc/I,CAAA,GACvB7lD,MAAM,uBACNqvD,KAAK,IACJC,QAAK9tD,EAAA,KAAAA,EAAA,IAAA+tD,EAAAA,GAAAA,KAAA,SAAA1J,GAAA,OAAQvkD,EAAAqjD,OAAOrjD,EAAAstD,eAAc,gB,kBAH1BttD,EAAAstD,wB,4GGgDb5uD,MAAM,e,IAKNA,MAAM,W,UAMNA,MAAM,mB,kCCtGZ,UACEQ,QAAS,CACPgvD,aAAY,SAAAr0D,GAAmB,IAAfs0D,EAAKt0D,EAALs0D,MAAO7c,EAACz3C,EAADy3C,EAAG9lC,EAAC3R,EAAD2R,EACxBnM,KAAKoM,IAAIyiD,aAAa,CAAEC,MAAAA,EAAO7c,EAAAA,EAAG9lC,EAAAA,GACpC,GAEFf,QAAO,WAEE2jD,GAAAA,CACT,GCJF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCCJzDxuD,EAAAA,GAAAA,IAMa,cANboE,EAAAA,GAAAA,IAMa,CALXtF,MAAM,qBACEsB,EAAAuoD,QACR8F,EAAAA,GAAAA,IAAMruD,EAAWsuD,YAAD,MAEhB3G,EAAAA,GAAAA,IAAQ3nD,EAAAkI,OAAA,e,iCCENqmD,GAAa,SAACC,EAAUC,GAAQ,MAAK,CAACA,EAAS,GAAKD,EAAS,GAAIC,EAAS,GAAKD,EAAS,GAAG,EAI3FE,GAAkB,SAAA33D,GAAC,MAFG,EAAT43D,EAEqB53D,EAAE63D,QAAQ,IAFfC,QAASF,EAAMG,SAA/B,IAAAH,CAEkC,EAE/CI,GAAoB,SAAAh4D,GAAC,MAAI,CAACA,EAAEi4D,QAASj4D,EAAEk4D,QAAQ,EAE/CC,GAAe,SAAAhyD,GAAC,OAAIjE,KAAKk2D,KAAKjyD,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAG,EAExDkyD,GAAgB,SAAAlyD,GAAC,MAAI,CAACA,EAAE,IAAKA,EAAE,GAAG,EAElCmyD,GAAa,SAACC,EAAIC,GAAE,OAAKD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,EAAE,EAEtDC,GAAU,SAACF,EAAIC,GACnB,IAAME,EAAUJ,GAAWC,EAAIC,GAAMF,GAAWE,EAAIA,GACpD,MAAO,CAACE,EAASF,EAAG,GAAIE,EAASF,EAAG,GACtC,EAqLA,SAXuB,CACrBG,eAnMqB,EAAE,EAAG,GAoM1BC,gBAnMsB,CAAC,EAAG,GAoM1BC,aAnMmB,CAAC,GAAI,GAoMxBC,eAnMqB,CAAC,EAAG,GAoMzBC,aAvKmB,SAACC,EAAWC,GAA0D,IAAjDC,EAASj0D,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GAAIk0D,EAAsBl0D,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,EACjF,MAAO,CACL+zD,UAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,uBAAAA,EACAC,UAAW,CAAC,EAAG,GACfC,UAAU,EAEd,EA+JEC,WA7JiB,SAAC/qD,EAAOgrD,GACzBA,EAAQH,UAAYzB,GAAgBppD,GACpCgrD,EAAQF,UAAW,CACrB,EA2JEG,YAzJkB,SAACjrD,EAAOgrD,GAC1B,GAAKA,EAAQF,SAAb,CAEA,IAAMI,EAAQjC,GAAW+B,EAAQH,UAAWzB,GAAgBppD,IAC5D,KAAI4pD,GAAasB,GAASF,EAAQL,WAE9BZ,GAAWmB,EAAOF,EAAQP,WAAa,GAA3C,CAEA,IAAMU,EAAajB,GAAQgB,EAAOF,EAAQP,WACpCW,EAAmBtB,GAAckB,EAAQP,WACzCY,EAAuBnB,GAAQgB,EAAOE,GAE1CxB,GAAauB,GAAcH,EAAQJ,uBACnChB,GAAayB,KAGfL,EAAQN,UACRM,EAAQF,UAAW,EAXiC,CALvB,CAiB/B,EAwIEQ,qBAtIwB,WAOxB,SAAAA,EAAA/2D,GAUG,IATDk2D,EAASl2D,EAATk2D,UAEAc,EAAoBh3D,EAApBg3D,qBACAC,EAAgBj3D,EAAhBi3D,iBACAC,EAAmBl3D,EAAnBk3D,oBACAC,EAAsBn3D,EAAtBm3D,uBAAsBC,EAAAp3D,EACtBo2D,UAAAA,OAAS,IAAAgB,EAAG,GAAEA,EAAAC,EAAAr3D,EACdq2D,uBAAAA,OAAsB,IAAAgB,EAAG,EAAGA,EAAAC,EAAAt3D,EAC5Bu3D,sBAAAA,OAAqB,IAAAD,EAAG,EAACA,GAAAE,EAAAA,GAAAA,GAAA,KAAAT,GAEzB,IAAMU,EAAM,WAAO,EACnBjyD,KAAK0wD,UAAYA,EACjB1wD,KAAKwxD,qBAAuBA,GAAwBS,EACpDjyD,KAAKyxD,iBAAmBA,GAAoBQ,EAC5CjyD,KAAK0xD,oBAAsBA,GAAuBO,EAClDjyD,KAAK2xD,uBAAyBA,GAA0BM,EACxDjyD,KAAK4wD,UAAiC,mBAAdA,EAA2BA,EAAY,kBAAMA,CAAS,EAC9E5wD,KAAK+xD,sBAAyD,mBAA1BA,EAAuCA,EAAwB,kBAAMA,CAAqB,EAC9H/xD,KAAK6wD,uBAAyBA,EAC9B7wD,KAAKkyD,QACP,CA+FC,OA/FAC,EAAAA,GAAAA,GAAAZ,EAAA,EAAA9oD,IAAA,SAAAzJ,MAED,WACEgB,KAAK8wD,UAAY,CAAC,EAAG,GACrB9wD,KAAKoyD,YAAc,EACnBpyD,KAAK+wD,UAAW,EAChB/wD,KAAKqyD,SAAU,EACfryD,KAAKsyD,mBAAoB,CAC3B,GAAC,CAAA7pD,IAAA,QAAAzJ,MAED,SAAOiH,GArGW,IAuGZA,EAAMssD,SAIVvyD,KAAK8wD,UAAYpB,GAAkBzpD,GACnCjG,KAAKoyD,WAAansD,EAAMusD,UACxBxyD,KAAK+wD,UAAW,EAChB/wD,KAAKqyD,SAAU,EACjB,GAAC,CAAA5pD,IAAA,OAAAzJ,MAED,SAAMiH,GACJ,GAAIjG,KAAK+wD,UAAY/wD,KAAKoyD,aAAensD,EAAMusD,UAAW,CACxDxyD,KAAKqyD,SAAU,EAEf,IAAMI,EAAQ/C,GAAkBzpD,GAC1BkrD,EAAQjC,GAAWlvD,KAAK8wD,UAAW2B,GAEzCzyD,KAAKwxD,qBAAqBL,EAC5B,CACF,GAAC,CAAA1oD,IAAA,SAAAzJ,MAED,SAAQiH,GACDjG,KAAK+wD,UAAY/wD,KAAKoyD,aAAensD,EAAMusD,WAIhDxyD,KAAK0xD,qBACP,GAAC,CAAAjpD,IAAA,MAAAzJ,MAED,SAAKiH,GAAO,IAAAvE,EAAA,KACV,GAAK1B,KAAK+wD,UAIN/wD,KAAKoyD,aAAensD,EAAMusD,UAA9B,CAIAxyD,KAAK+wD,UAAW,EAGhB,IAAM0B,EAAQ/C,GAAkBzpD,GAC1BkrD,EAAQjC,GAAWlvD,KAAK8wD,UAAW2B,GAEnCC,EAAQ,WACZ,GAAI7C,GAAasB,GAASzvD,EAAKkvD,YAC7B,OAAO,EAGT,IAAM+B,EAAa3C,GAAWmB,EAAOzvD,EAAKgvD,WAAa,EAGjDU,EAAajB,GAAQgB,EAAOzvD,EAAKgvD,WACjCW,EAAmBtB,GAAcruD,EAAKgvD,WACtCY,EAAuBnB,GAAQgB,EAAOE,GAC5C,OACExB,GAAauB,GAAc1vD,EAAKmvD,uBAC9BhB,GAAayB,GAER,EAGFqB,EAAa,GAAK,CAC3B,CAnBc,GAqBV3yD,KAAKqyD,SACPryD,KAAKyxD,iBAAiBiB,GAExB1yD,KAAKkyD,SAKDrC,GAAasB,IAAUnxD,KAAK+xD,yBAAiD,UAAtB9rD,EAAM2sD,cAC/D5yD,KAAKsyD,mBAAoB,EAtC3B,CAwCF,GAAC,CAAA7pD,IAAA,QAAAzJ,MAED,SAAOiH,GACAjG,KAAKsyD,mBACRtyD,KAAK2xD,yBAEP3xD,KAAKkyD,QACP,KAACX,CAAA,CA3HuB,ICqB1B,GA7DmB,CACjBjyD,MAAO,CACLoxD,UAAW,CACTjxD,KAAMlC,OAERqzD,UAAW,CACTnxD,KAAMuI,SACNpI,QAAS,kBAAM,EAAE,GAEnBmyD,sBAAuB,CACrBtyD,KAAMuI,SACNpI,QAAS,kBAAM,CAAC,GAElBixD,uBAAwB,CACtBpxD,KAAMugB,OACNpgB,QAAS,IAGbC,QAAS,CACPgzD,kBAAiB,SAAE5sD,GACjBjG,KAAK8yD,SAAS7+C,MAAMhO,EACtB,EACA8sD,kBAAiB,SAAE9sD,GACjBjG,KAAK8yD,SAASjyB,KAAK56B,EACrB,EACA+sD,gBAAe,SAAE/sD,GACfjG,KAAK8yD,SAASz+C,IAAIpO,EACpB,EACAgtD,oBAAmB,SAAEhtD,GACnBjG,KAAK8yD,SAASI,OAAOjtD,EACvB,EACAktD,kBAAiB,SAAEltD,GACjBjG,KAAK8yD,SAASM,MAAMntD,EACtB,EACAotD,QAAO,SAAEC,GACPtzD,KAAKkG,MAAM,oBAAqBotD,EAClC,EACAj/C,IAAG,SAAEq+C,GACH1yD,KAAKkG,MAAM,iBAAkBwsD,EAC/B,EACAU,MAAK,WACHpzD,KAAKkG,MAAM,oBACb,EACAgtD,OAAM,WACJlzD,KAAKkG,MAAM,iBACb,GAEFkF,QAAO,WACLpL,KAAK8yD,SAAW,IAAIS,GAAAA,qBAAoC,CACtD7C,UAAW1wD,KAAK0wD,UAChBE,UAAW5wD,KAAK4wD,UAChBmB,sBAAuB/xD,KAAK+xD,sBAC5BlB,uBAAwB7wD,KAAK6wD,uBAC7BW,qBAAsBxxD,KAAKqzD,QAC3B5B,iBAAkBzxD,KAAKqU,IACvBq9C,oBAAqB1xD,KAAKkzD,OAC1BvB,uBAAwB3xD,KAAKozD,OAEjC,GChFF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCCJzD7yD,EAAAA,GAAAA,IASM,OATNoE,EAAAA,GAAAA,IACUhE,EAQJuoD,OARU,CACbsK,cAAW3yD,EAAA,KAAAA,EAAA,qBAAEF,EAAAkyD,mBAAAlyD,EAAAkyD,kBAAA/4D,MAAA6G,EAAAhE,UAAiB,GAC9B82D,cAAW5yD,EAAA,KAAAA,EAAA,qBAAEF,EAAAoyD,mBAAApyD,EAAAoyD,kBAAAj5D,MAAA6G,EAAAhE,UAAiB,GAC9B+2D,YAAS7yD,EAAA,KAAAA,EAAA,qBAAEF,EAAAqyD,iBAAAryD,EAAAqyD,gBAAAl5D,MAAA6G,EAAAhE,UAAe,GAC1Bg3D,gBAAa9yD,EAAA,KAAAA,EAAA,qBAAEF,EAAAsyD,qBAAAtyD,EAAAsyD,oBAAAn5D,MAAA6G,EAAAhE,UAAmB,GAClCmD,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAwyD,mBAAAxyD,EAAAwyD,kBAAAr5D,MAAA6G,EAAAhE,UAAiB,K,EAEzB2rD,EAAAA,GAAAA,IAAQ3nD,EAAAkI,OAAA,e,qBCOZwB,GAAAA,GAAAA,IACEupD,GAAAA,IACAC,GAAAA,IACAvpD,GAAAA,IACA4+B,GAAAA,KAwIF,SArImB,CACjBjoC,WAAY,CACVgD,WAAAA,GAAAA,EACA6vD,gBAAAA,GAAAA,EACA/E,UAAAA,GACAgF,WAAAA,GACA5qB,MAAAA,GAAAA,EACA6qB,MAAAA,GAAAA,GAEF57D,KAAI,WACF,MAAO,CACL4S,SAAS,EACTipD,eAAgBV,GAAAA,eAChBW,eAAgB,WAEd,OAAO7zD,OAAO80B,YADgB,EAAI,EAEpC,EACAg/B,kBAAmB,EACnBC,yBAA0B,IAE9B,EACA9rD,SAAU,CACR+rD,QAAO,WACL,OAAOr0D,KAAK0L,OAAOhR,MAAMw7C,YAAYE,SACvC,EACAx1B,MAAK,WACH,OAAO5gB,KAAK0L,OAAOhR,MAAMw7C,YAAYt1B,KACvC,EACAyxB,YAAW,WACT,OAAOryC,KAAKs0D,aAAajiB,WAC3B,EACA8D,aAAY,WACV,OAAOn2C,KAAK0L,OAAOhR,MAAMw7C,YAAYC,YACvC,EACAme,aAAY,WACV,OAAOt0D,KAAK4gB,MAAM5gB,KAAKm2C,aACzB,EACAoe,YAAW,WACT,OAAOv0D,KAAK4gB,MAAMnnB,OAAS,CAC7B,EACAgG,KAAI,WACF,OAAOO,KAAKs0D,aAAet0D,KAAKw0D,QAAQx0D,KAAKs0D,cAAgB,IAC/D,EACAG,2BAA0B,WAAI,IAAA/yD,EAAA,KAG5B,OAAO,kBAAMA,EAAK6yD,YAAc,EAAI,EAAE,CACxC,GAEF10D,QAAS,CACP20D,QAAO,SAAE5zC,GACP,OAAO21B,GAAAA,GAAAA,SAAyB31B,EAAM41B,SACxC,EACAke,KAAI,WAAI,IAAA/rD,EAAA,KAINzN,YAAW,WACTyN,EAAK+C,OAAOjR,SAAS,mBACvB,GAHuB,IAIzB,EACAk6D,gBAAe,SAAE1uD,GAEf,IAAM2uD,EAAO50D,KAAKoJ,MAAMyrD,WACnBD,EAGHA,EAAK9B,SAASM,MAAMntD,GAFpBjG,KAAK00D,MAIT,EACAI,OAAM,WACJ,GAAI90D,KAAKu0D,YAAa,CACpB,IAAMQ,EAAkC,IAAtB/0D,KAAKm2C,aAAqBn2C,KAAK4gB,MAAMnnB,OAAS,EAAKuG,KAAKm2C,aAAe,EACnF6e,EAAWh1D,KAAK4gB,MAAMm0C,GACG,UAA3B/0D,KAAKw0D,QAAQQ,KACfh1D,KAAKgL,SAAU,GAEjBhL,KAAK0L,OAAOjR,SAAS,kBAAmBu6D,EAC1C,CACF,EACAC,OAAM,WACJ,GAAIj1D,KAAKu0D,YAAa,CACpB,IAAMW,EAAYl1D,KAAKm2C,eAAiBn2C,KAAK4gB,MAAMnnB,OAAS,EAAI,EAAKuG,KAAKm2C,aAAe,EACnF6e,EAAWh1D,KAAK4gB,MAAMs0C,GACG,UAA3Bl1D,KAAKw0D,QAAQQ,KACfh1D,KAAKgL,SAAU,GAEjBhL,KAAK0L,OAAOjR,SAAS,kBAAmBu6D,EAC1C,CACF,EACAG,cAAa,WACXn1D,KAAKgL,SAAU,CACjB,EACAoqD,mBAAkB,SAAE9B,GAClBtzD,KAAKoJ,MAAMisD,UAAUxG,aAAa,CAAEC,MAAO,EAAG7c,EAAGqhB,EAAQ,GAAInnD,EAAG,GAClE,EACAmpD,eAAc,SAAE5C,GACd1yD,KAAKoJ,MAAMisD,UAAUxG,aAAa,CAAEC,MAAO,EAAG7c,EAAG,EAAG9lC,EAAG,IACnDumD,EAAO,EACT1yD,KAAKi1D,SACIvC,EAAO,GAChB1yD,KAAK80D,QAET,EACAS,iBAAgB,SAAE79D,GACZsI,KAAKq0D,SAAyB,KAAd38D,EAAE89D,SACpBx1D,KAAK00D,MAET,EACAe,mBAAkB,SAAE/9D,GACbsI,KAAKq0D,UAIQ,KAAd38D,EAAE89D,QACJx1D,KAAKi1D,SACkB,KAAdv9D,EAAE89D,SACXx1D,KAAK80D,SAET,GAEFhH,QAAO,WACLztD,OAAOgL,iBAAiB,WAAYrL,KAAK00D,MACzC3oD,SAASV,iBAAiB,QAASrL,KAAKu1D,kBACxCxpD,SAASV,iBAAiB,UAAWrL,KAAKy1D,mBAC5C,EACAhrD,UAAS,WACPpK,OAAOmL,oBAAoB,WAAYxL,KAAK00D,MAC5C3oD,SAASP,oBAAoB,QAASxL,KAAKu1D,kBAC3CxpD,SAASP,oBAAoB,UAAWxL,KAAKy1D,mBAC/C,GChJF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mLTLjD90D,EAAA0zD,UAAO,YADf1O,EAAAA,GAAAA,IA+GQ+P,EAAA,C,MA7GNr2D,MAAM,mBACLs2D,kBAAiBh1D,EAAAg0D,iB,oBAElB,iBA8Ba,CA7BI,UAATh0D,EAAAlB,OAAI,YADZkmD,EAAAA,GAAAA,IA8BaiQ,EAAA,C,MA5BX/kB,IAAI,aACJxxC,MAAM,wBACLqxD,UAAW/vD,EAAAszD,eACXrD,UAAWjwD,EAAAuzD,eACX,0BAAyBvzD,EAAA8zD,2BACzBoB,mBAAmBl1D,EAAAy0D,mBACnBU,gBAAgBn1D,EAAA20D,eAChBS,mBAAmBp1D,EAAA+zD,M,oBAEpB,iBAkBY,EAlBZ1wD,EAAAA,GAAAA,IAkBYgyD,EAAA,CAjBVnlB,IAAI,YACJxxC,MAAM,8BACN42D,SAAS,eACT,2BAAyB,QACzB,yBAAuB,wBACtB,sBAAqBt1D,EAAAwzD,kBACrB,YAAWxzD,EAAAwzD,kBACX,2BAA0BxzD,EAAAyzD,0B,oBAE3B,iBAOC,EAPD3zD,EAAAA,GAAAA,GAOC,OANEpB,OAAKkqD,EAAAA,GAAAA,IAAA,EAAAv+C,QAAIrK,EAAAqK,SACJ,gBACLgjD,IAAKrtD,EAAA2zD,aAAa/0D,IAClB22D,IAAKv1D,EAAA2zD,aAAajiB,YAClBjgC,MAAOzR,EAAA2zD,aAAajiB,YACpB8jB,OAAIt1D,EAAA,KAAAA,EAAA,qBAAEF,EAAAw0D,eAAAx0D,EAAAw0D,cAAAr7D,MAAA6G,EAAAhE,UAAa,I,qOAKT,UAATgE,EAAAlB,OAAI,YADZkmD,EAAAA,GAAAA,IAKEyQ,EAAA,C,MAHA/2D,MAAM,cACLskC,WAAYhjC,EAAA2zD,aACZ+B,UAAU,G,yCAGI,UAAT11D,EAAAlB,OAAI,YADZc,EAAAA,GAAAA,IAOE,S,MALAlB,MAAM,cACL2uD,IAAKrtD,EAAA2zD,aAAa/0D,IAClB22D,IAAKv1D,EAAA2zD,aAAajiB,YAClBjgC,MAAOzR,EAAA2zD,aAAajiB,YACrBgkB,SAAA,I,6BAGe,UAAT11D,EAAAlB,OAAI,YADZkmD,EAAAA,GAAAA,IAME2Q,EAAA,C,MAJAj3D,MAAM,cACL2uD,IAAKrtD,EAAA2zD,aAAa/0D,IAClB22D,IAAKv1D,EAAA2zD,aAAajiB,YAClBjgC,MAAOzR,EAAA2zD,aAAajiB,a,gDAGf1xC,EAAA4zD,cAAW,YADnBh0D,EAAAA,GAAAA,IAUS,U,MARN6R,MAAOzR,EAAA8L,GAAG,wBACXpN,MAAM,0EACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAeH,EAAAm0D,QAAAn0D,EAAAm0D,OAAAh7D,MAAA6G,EAAAhE,UAAM,yB,EAE3BqH,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,yBACNyK,KAAK,kB,wBAIDnJ,EAAA4zD,cAAW,YADnBh0D,EAAAA,GAAAA,IAUS,U,MARN6R,MAAOzR,EAAA8L,GAAG,oBACXpN,MAAM,0EACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAeH,EAAAs0D,QAAAt0D,EAAAs0D,OAAAn7D,MAAA6G,EAAAhE,UAAM,yB,EAE3BqH,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,yBACNyK,KAAK,mB,yBAGTrJ,EAAAA,GAAAA,GASS,UARPpB,MAAM,2CACL+S,MAAOzR,EAAA8L,GAAG,oBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAeH,EAAA+zD,MAAA/zD,EAAA+zD,KAAA56D,MAAA6G,EAAAhE,UAAI,yB,EAEzBqH,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,cACNyK,KAAK,W,MAKDnJ,EAAA0xC,cAAW,YADnB9xC,EAAAA,GAAAA,IAKO,OALP6lD,IAKOxB,EAAAA,GAAAA,IADFjkD,EAAA0xC,aAAW,sBAEhB5xC,EAAAA,GAAAA,GAIO,OAJP2kD,IAIOR,EAAAA,GAAAA,IADFjkD,EAAA41D,IAAI,sBAAuB51D,EAAAw1C,aAAe,EAAG,CAANM,QAAiB91C,EAAAw1C,aAAe,EAAHqgB,MAAa71D,EAAAigB,MAAMnnB,UAAM,GAG1FkH,EAAAqK,UAAO,YADfzK,EAAAA,GAAAA,IASO,OATP8kD,GASO,EALLrhD,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA0Q,KAAA,GACA3sD,KAAK,eACLw8C,KAAK,W,sFUnFHjnD,MAAM,4B,gCA0DFA,MAAM,4B,qBA6BNA,MAAM,4B,UA8FNA,MAAM,4B,ykBCzLpBgL,GAAAA,GAAAA,IACEqsD,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAnM,GAAAA,IACAC,GAAAA,IACAmM,GAAAA,IACA3L,GAAAA,IACA4L,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACArM,GAAAA,IACAsM,GAAAA,IACApM,GAAAA,KA0FF,SAvFmB,CACjBvrD,MAAO,CAAC,UACRlH,KAAM,iBAAO,CACX8+D,QAAQ,EACRC,kBAAc50D,EACf,EACD6I,QAAO,WACLpL,KAAKm3D,aAAe5D,GAAAA,aAA4BA,GAAAA,eAA+BvzD,KAAKo3D,cAEhFp3D,KAAK6T,aAAe7T,KAAK6T,YAAYivB,QACvC9iC,KAAK0L,OAAOjR,SAAS,8BAEzB,EACAwG,WAAY,CAAE+lD,SAAAA,GAAAA,GACd1+C,SAAQpP,GAAAA,GAAA,CACN2a,YAAW,WACT,OAAO7T,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACjC,EACAw4C,MAAK,WAAM,OAAOrsD,KAAK0L,OAAOhR,MAAM2xD,MAAM1Y,MAAO,EACjD0jB,oBAAmB,WACjB,OAAOC,EAAAA,EAAAA,IAA6Bt3D,KAAK0L,OAC3C,EACA6rD,yBAAwB,WACtB,OAAOv3D,KAAKq3D,oBAAoB59D,MAClC,EACAogB,mBAAkB,WAChB,OAAO7Z,KAAK0L,OAAOhR,MAAM2X,SAASwH,kBACpC,EACAxC,KAAI,WACF,OAAOrX,KAAK0L,OAAOhR,MAAM2X,SAASgF,IACpC,EACAb,aAAY,WACV,OAAOxW,KAAK0L,OAAOhR,MAAM2X,SAASmE,YACpC,EACAghD,SAAQ,WACN,OAAOx3D,KAAK0L,OAAOhR,MAAM2X,SAASrY,IACpC,EACAoqC,mBAAkB,WAChB,OAAOpkC,KAAK0L,OAAOhR,MAAM+wB,IAAI0Y,eAAe1qC,MAC9C,EACAwwD,YAAW,WACT,OAAOjqD,KAAK0L,OAAOhR,MAAM2X,SAAQ,OACnC,EACA63C,WAAU,WACR,OAAOlqD,KAAK0L,OAAOhR,MAAM2X,SAAS63C,UACpC,EACAuN,eAAc,WACZ,IAAIz9D,EAKJ,OAJIgG,KAAK0L,OAAOhR,MAAK,UAAWmW,eAC9B7W,EAAOgG,KAAK0L,OAAOhR,MAAK,UAAWmW,cAErC7W,EAAOgG,KAAK6T,YAAc,UAAY,kBAClCwzC,GAAgB7jD,IAAIxJ,GACf,CAAEA,KAAAA,EAAMkoC,OAAQ,CAAE9K,SAAUp3B,KAAK6T,YAAY5X,cAE7C,CAAEjC,KAAAA,EAEb,IACG4pD,EAAAA,EAAAA,IAAS,CACVnqC,6BAA8B,SAAA/e,GAAK,OAAIA,EAAM2X,SAASoH,4BAA4B,EAClF8lC,sBAAuB,SAAA7kD,GAAK,OAAIA,EAAM4kD,cAAcC,qBAAqB,MAExEsE,EAAAA,EAAAA,IAAW,CAAC,kBAAmB,6BAEpChkD,QAAS,CACPu3D,aAAY,WACVp3D,KAAKk3D,QAAUl3D,KAAKk3D,MACtB,EACAQ,SAAQ,WACN13D,KAAKqiC,SACLriC,KAAKo3D,cACP,EACAO,WAAU,SAAEjgE,GACV67D,GAAAA,WAA0B77D,EAAGsI,KAAKm3D,aACpC,EACAS,UAAS,SAAElgE,GACT67D,GAAAA,YAA2B77D,EAAGsI,KAAKm3D,aACrC,EACA5lD,kBAAiB,WACfvR,KAAK0L,OAAOjR,SAAS,oBAAqB,OAC5C,EACAo9D,eAAc,WACZ73D,KAAK0L,OAAOjR,SAAS,oBAAqB,QAC5C,IChHJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,sHFNzD8F,EAAAA,GAAAA,IAsPM,OArPJlB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,wBAAuB,gCACa5oD,EAAAu2D,OAAM,8BAAiCv2D,EAAAu2D,W,EAEjFz2D,EAAAA,GAAAA,GAGE,OAFApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,qBAAoB,6BACa5oD,EAAAu2D,W,SAEzCz2D,EAAAA,GAAAA,GAwOM,OAvOJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,cAAa,sBACY5oD,EAAAu2D,UAC9BY,aAAUj3D,EAAA,MAAAA,EAAA,sBAAEF,EAAAg3D,YAAAh3D,EAAAg3D,WAAA79D,MAAA6G,EAAAhE,UAAU,GACtBo7D,YAASl3D,EAAA,MAAAA,EAAA,sBAAEF,EAAAi3D,WAAAj3D,EAAAi3D,UAAA99D,MAAA6G,EAAAhE,UAAS,I,EAErB8D,EAAAA,GAAAA,GAgBM,OAfJpB,MAAM,sBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,CAGZgE,EAAAkT,cAAW,YADnB8xC,EAAAA,GAAAA,IAIEsB,EAAA,C,MAFC,UAAStmD,EAAAkT,YAAY/b,GACrB,YAAU,G,mCAEbyI,EAAAA,GAAAA,IAMM,MANNC,GAMM,EAFJC,EAAAA,GAAAA,GAAiB,OAAXutD,IAAKrtD,EAAA0W,MAAI,OAAAstC,IACFhkD,EAAA6V,cAAyB,kBAAb,YAAzBjW,EAAAA,GAAAA,IAAgD,OAAAskD,IAAAD,EAAAA,GAAAA,IAAlBjkD,EAAA62D,UAAQ,UAG1C/2D,EAAAA,GAAAA,GA0DK,WAxDME,EAAAkT,a,kBAAW,YADpBtT,EAAAA,GAAAA,IAWK,M,MATFT,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpBqH,EAAAA,GAAAA,IAMcuhD,EAAA,CANApY,GAAI,CAAAnzC,KAAA,UAAiB,C,mBACjC,iBAIE,EAJFgK,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,iB,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,gBAAD,G,aAIJ9L,EAAAkT,cAAgBlT,EAAAspD,cAAW,YADnC1pD,EAAAA,GAAAA,IAWK,M,MATFT,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpBqH,EAAAA,GAAAA,IAMcuhD,EAAA,CANApY,GAAIxsC,EAAA82D,gBAAc,C,mBAC9B,iBAIE,EAJFzzD,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,U,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,kBAAD,G,uCAIJ9L,EAAAkT,cAAW,YADnBtT,EAAAA,GAAAA,IAWK,M,MATFT,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpBqH,EAAAA,GAAAA,IAMcuhD,EAAA,CANApY,GAAI,CAAAnzC,KAAA,UAAiB,C,mBACjC,iBAIE,EAJFgK,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,U,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,cAAD,G,8BAIJ9L,EAAAkT,aAAelT,EAAA8Y,+BAA4B,YADnDlZ,EAAAA,GAAAA,IAoBK,M,MAlBFT,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpBqH,EAAAA,GAAAA,IAecuhD,EAAA,CAdXpY,GAAE,CAAAnzC,KAAA,QAAAkoC,OAAA,CAAA9K,SAAuCz2B,EAAAkT,YAAY5X,cACtD+7D,MAAA,uB,oBAEA,iBAIE,EAJFh0D,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,c,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,cAAe,IACxB,GACQ9L,EAAAs8C,kBAAe,YADvB18C,EAAAA,GAAAA,IAKO,OALPykD,IAKOJ,EAAAA,GAAAA,IADFjkD,EAAAs8C,iBAAe,qB,yCAKhBt8C,EAAAkT,cAAW,YAArBtT,EAAAA,GAAAA,IAwCK,KAAA0kD,GAAA,EAvCHxkD,EAAAA,GAAAA,GAQK,MARAX,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EACtBqH,EAAAA,GAAAA,IAMcuhD,EAAA,CANApY,GAAE,CAAAnzC,KAAA,eAAAkoC,OAAA,CAAA9K,SAA8Cz2B,EAAAkT,YAAY5X,e,oBACxE,iBAIE,EAJF+H,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,U,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,qBAAD,G,qBAIJ9L,EAAAkT,YAAYivB,SAAM,YAD1BviC,EAAAA,GAAAA,IAiBK,M,MAfFT,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpBqH,EAAAA,GAAAA,IAYcuhD,EAAA,CAZDpY,GAAG,oBAAkB,C,mBAChC,iBAIE,EAJFnpC,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,e,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,wBAAyB,IAClC,GACQ9L,EAAAyjC,mBAAqB,IAAH,YAD1B7jC,EAAAA,GAAAA,IAKO,OALP6lD,IAKOxB,EAAAA,GAAAA,IADFjkD,EAAAyjC,oBAAkB,qB,8BAKnBzjC,EAAA0rD,QAAK,YADb9rD,EAAAA,GAAAA,IAWK,M,MATFT,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpBqH,EAAAA,GAAAA,IAMcuhD,EAAA,CANApY,GAAI,CAAAnzC,KAAA,gBAAuB,C,mBACvC,iBAIE,EAJFgK,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,c,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,mBAAD,G,mDAIdhM,EAAAA,GAAAA,GA4GK,WA1GKE,EAAAkT,cAAgBlT,EAAAspD,cAAW,YADnC1pD,EAAAA,GAAAA,IAWK,M,MATFT,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpBqH,EAAAA,GAAAA,IAMcuhD,EAAA,CANApY,GAAI,CAAAnzC,KAAA,WAAkB,C,mBAClC,iBAIE,EAJFgK,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,Y,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,eAAD,G,8BAIJ9L,EAAAkT,aAAelT,EAAAkZ,qBAAkB,YADzCtZ,EAAAA,GAAAA,IAWK,M,MATFT,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpBqH,EAAAA,GAAAA,IAMcuhD,EAAA,CANApY,GAAI,CAAAnzC,KAAA,kBAAyB,C,mBACzC,iBAIE,EAJFgK,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,e,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,sBAAD,G,+BAGZhM,EAAAA,GAAAA,GAWK,MAXAX,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EACtB8D,EAAAA,GAAAA,GASS,UARPpB,MAAM,mCACLS,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAA4Q,mBAAA5Q,EAAA4Q,kBAAAzX,MAAA6G,EAAAhE,UAAiB,I,EAEzBqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,S,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,sBAAD,QAGZhM,EAAAA,GAAAA,GAQK,MARAX,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EACtBqH,EAAAA,GAAAA,IAMcuhD,EAAA,CANApY,GAAI,CAAAnzC,KAAA,UAAgB,C,mBAChC,iBAIE,EAJFgK,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,iB,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,cAAD,G,YAIJ9L,EAAAkT,aAAoC,UAArBlT,EAAAkT,YAAYokD,OAAI,YADvC13D,EAAAA,GAAAA,IAcK,M,MAZFT,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpB8D,EAAAA,GAAAA,GASS,UARPpB,MAAM,mCACLS,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,GAAAA,KAAA,kBAAOH,EAAAk3D,gBAAAl3D,EAAAk3D,eAAA/9D,MAAA6G,EAAAhE,UAAc,e,EAE3BqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,oB,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,uBAAD,yBAIJ9L,EAAAkT,aAAelT,EAAA4+C,wBAAqB,YAD5Ch/C,EAAAA,GAAAA,IAmBK,M,MAjBFT,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpBqH,EAAAA,GAAAA,IAccuhD,EAAA,CAbXpY,GAAI,CAAAnzC,KAAA,kBAAyB,C,mBAE9B,iBAIE,EAJFgK,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,c,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,sBAAuB,IAChC,GACQ9L,EAAAo/C,0BAAuB,YAD/Bx/C,EAAAA,GAAAA,IAKO,OALP6kD,IAKOR,EAAAA,GAAAA,IADFjkD,EAAAo/C,yBAAuB,qB,8BAKxBp/C,EAAAkT,cAAW,YADnBtT,EAAAA,GAAAA,IAWK,M,MATFT,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpBqH,EAAAA,GAAAA,IAMcuhD,EAAA,CANApY,GAAI,CAAAnzC,KAAA,oBAA2B,C,mBAC3C,iBAIE,EAJFgK,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,a,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,wBAAD,G,8BAIJ9L,EAAAkT,cAAW,YADnBtT,EAAAA,GAAAA,IAcK,M,MAZFT,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,I,EAEpB8D,EAAAA,GAAAA,GASS,UARPpB,MAAM,mCACLS,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAA+2D,UAAA/2D,EAAA+2D,SAAA59D,MAAA6G,EAAAhE,UAAQ,I,EAEhBqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,kB,SACL,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,iBAAD,iCAKhBhM,EAAAA,GAAAA,GAIE,OAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,4BAA2B,oCACY5oD,EAAAu2D,UAC5Cp3D,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,GAAAA,KAAA,kBAAeH,EAAAy2D,cAAAz2D,EAAAy2D,aAAAt9D,MAAA6G,EAAAhE,UAAY,yB,wDG/OvC0N,GAAAA,GAAAA,IACE6tD,GAAAA,KAGF,IAAMC,GAAmB,IAAI11D,IAAI,CAC/B,QACA,OACA,eAkGF,SA/F+B,CAC7BrK,KAAI,WACF,MAAO,CACLkrC,QAAQ,EACR80B,eAAe,EACfC,aAAa,EACbC,aAAc,EACdC,eAAgB,EAEpB,EACAntD,QAAO,WACDpL,KAAKw4D,4BACPx4D,KAAKy4D,qCAEPp4D,OAAOgL,iBAAiB,SAAUrL,KAAK04D,UACzC,EACAjuD,UAAS,WACHzK,KAAKw4D,4BACPx4D,KAAK24D,uCAEPt4D,OAAOmL,oBAAoB,SAAUxL,KAAK04D,UAC5C,EACApwD,SAAU,CACRswD,WAAU,WACR,QAAS54D,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACnC,EACAglD,SAAQ,WACN,QAAIV,GAAiB30D,IAAIxD,KAAK84D,OAAO9+D,OAE9BgG,KAAKw4D,6BAA+Bx4D,KAAKsjC,QAAUtjC,KAAKq4D,YACjE,EACAU,aAAY,WACV,QAAS/4D,KAAK0L,OAAOoP,QAAQnH,aAAaqlD,uBAC5C,EACAR,2BAA0B,WACxB,QAASx4D,KAAK0L,OAAOoP,QAAQnH,aAAa6kD,0BAC5C,GAEF5K,MAAO,CACL4K,2BAA4B,SAAUr5B,GAChCA,EACFn/B,KAAKy4D,qCAELz4D,KAAK24D,sCAET,GAEF94D,QAAS,CACP44D,mCAAkC,WAChCp4D,OAAOgL,iBAAiB,SAAUrL,KAAKi5D,mBACvC54D,OAAOgL,iBAAiB,SAAUrL,KAAKk5D,gBACzC,EACAP,qCAAoC,WAClCt4D,OAAOmL,oBAAoB,SAAUxL,KAAKi5D,mBAC1C54D,OAAOmL,oBAAoB,SAAUxL,KAAKk5D,gBAC5C,EACAC,aAAY,WACVn5D,KAAK0L,OAAOjR,SAAS,sBACvB,EACAi+D,UAAS,WASP,IAAMU,EAAa/4D,OAAO80B,WAAa,IACjCkkC,EAAmBD,GAAc/4D,OAAOiM,YAAc,IAGtDgtD,GADeF,GAAc/4D,OAAO80B,WAAa,KACd90B,OAAOiM,YAAc,IAE5DtM,KAAKq4D,eADHgB,IAAoBC,EAK1B,EACAL,kBAAmBM,MAAS,WACtBl5D,OAAOm5D,QAAUx5D,KAAKs4D,aACxBt4D,KAAKsjC,QAAS,EAEdtjC,KAAKsjC,QAAS,EAEhBtjC,KAAKs4D,aAAej4D,OAAOm5D,OAC7B,GAAG,IAAK,CAAEC,SAAS,EAAMC,UAAU,IAEnCR,gBAAiBK,MAAS,WACxBv5D,KAAKsjC,QAAS,EACdtjC,KAAKs4D,aAAej4D,OAAOm5D,OAC7B,GAAG,IAAK,CAAEC,SAAS,EAAOC,UAAU,MClGxC,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uDCLjD/4D,EAAAi4D,aAAU,YADlBr4D,EAAAA,GAAAA,IAQS,U,MANPlB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,oDAAmD,QACrC5oD,EAAAk4D,SAAQ,cAAiBl4D,EAAAo4D,gBAC5C3mD,MAAOzR,EAAA8L,GAAG,0BACV3M,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAw4D,cAAAx4D,EAAAw4D,aAAAr/D,MAAA6G,EAAAhE,UAAY,I,EAEpBqH,EAAAA,GAAAA,IAAqB+hD,EAAA,CAAbj8C,KAAK,SAAK,wB,aCNlBzK,MAAM,a,IAOCA,MAAM,Q,wCAaLA,MAAM,a,IAIAA,MAAM,c,uBAaZA,MAAM,a,IAYPA,MAAM,+B,IACHA,MAAM,S,IACZoB,EAAAA,GAAAA,GAAuB,QAAjBpB,MAAM,UAAQ,S,0nBCrC5BgL,GAAAA,GAAAA,IACE6+B,GAAAA,IACAwhB,GAAAA,IACAiP,GAAAA,IACAC,GAAAA,IACAC,GAAAA,KAkHF,SA/GkB,CAChB54D,WAAY,CACV64D,WAAAA,GACAC,cAAAA,GAAAA,QACA5O,eAAAA,GACA6O,aAAAA,GAAAA,GAEF5hE,KAAM,iBAAO,CACX6hE,+BAA2B13D,EAC3B23D,mBAAmB,EACnBC,oBAAoB,EACpBC,sBAAsB,EACvB,EACDhvD,QAAO,WAAI,IAAA1J,EAAA,KACT1B,KAAKi6D,0BAA4B1G,GAAAA,aAC/BA,GAAAA,iBACA,kBAAM7xD,EAAK24D,0BAAyB,EAAK,GACzC,GAEJ,EACA/xD,SAAQpP,GAAAA,GAAA,CACN2a,YAAW,WACT,OAAO7T,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACjC,EACAwjD,oBAAmB,WACjB,OAAOC,EAAAA,EAAAA,IAA6Bt3D,KAAK0L,OAC3C,EACA6rD,yBAAwB,WACtB,OAAOv3D,KAAKq3D,oBAAoB59D,MAClC,EACA+c,aAAY,WAAM,OAAOxW,KAAK0L,OAAOhR,MAAM2X,SAASmE,YAAa,EACjEghD,SAAQ,WAAM,OAAOx3D,KAAK0L,OAAOhR,MAAM2X,SAASrY,IAAK,EACrDsgE,OAAM,WACJ,MAA4B,SAArBt6D,KAAK84D,OAAO9+D,IACrB,IACG6pD,EAAAA,EAAAA,IAAW,CAAC,kBAAmB,6BAA2B,IAC7D0W,YAAW,WACT,OAAO,IAAI93D,IAAIzC,KAAK0L,OAAOhR,MAAMouD,kBAAkBrf,aAAaK,YAAYC,gBAAgBvmC,IAAI,QAClG,EACAg3D,oBAAmB,WACjB,OAAOx6D,KAAK0L,OAAOoP,QAAQnH,aAAaqD,aAC1C,IACG6sC,EAAAA,EAAAA,IAAW,CAAC,qBAEjBhkD,QAAS,CACP46D,oBAAmB,WACjBz6D,KAAKoJ,MAAMsxD,WAAWtD,cACxB,EACAuD,wBAAuB,WACrB36D,KAAKk6D,mBAAoB,CAC3B,EACAG,yBAAwB,SAAEO,GACpB56D,KAAKk6D,oBAGPl6D,KAAKk6D,mBAAoB,EACrBU,GACF56D,KAAKgoB,0BAGX,EACA6yC,wBAAuB,SAAEnjE,GACvB67D,GAAAA,WAA0B77D,EAAGsI,KAAKi6D,0BACpC,EACAa,uBAAsB,SAAEpjE,GACtB67D,GAAAA,YAA2B77D,EAAGsI,KAAKi6D,0BACrC,EACAc,YAAW,WACT16D,OAAO26D,SAAS,EAAG,EACrB,EACAC,+BAA8B,WAC5Bj7D,KAAKoJ,MAAM8xD,oBAAoBF,SAAS,EAAG,EAC7C,EACAG,kBAAiB,WACfn7D,KAAKo6D,sBAAuB,CAC9B,EACAgB,kBAAiB,WACfp7D,KAAKo6D,sBAAuB,CAC9B,EACA/3B,OAAM,WACCriC,KAAKw6D,oBAGRx6D,KAAKm7D,oBAFLn7D,KAAK03D,UAIT,EACAA,SAAQ,WACN13D,KAAKI,QAAQjD,QAAQ,gBACrB6C,KAAK0L,OAAOjR,SAAS,UACrBuF,KAAKo7D,mBACP,EACApzC,wBAAuB,WAErBhoB,KAAK0L,OAAOjR,SAAS,0BACvB,EACA4gE,SAAQ,SAAA7gE,GAAyD,IAAA8gE,EAAA9gE,EAArDoG,OAAU0I,EAASgyD,EAAThyD,UAAWisB,EAAY+lC,EAAZ/lC,aAAc+4B,EAAYgN,EAAZhN,aAC7CtuD,KAAKm6D,mBAAqB7wD,EAAY,EAClCA,EAAYisB,GAAgB+4B,GAC9BtuD,KAAKoJ,MAAMmX,cAAcg7C,yBAE7B,GAEF3N,MAAO,CACLkL,OAAM,WAGJ94D,KAAKq6D,0BACP,IC1HJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,gLFNzD95D,EAAAA,GAAAA,IAqGM,MArGNC,GAqGM,EAlGJC,EAAAA,GAAAA,GAuCM,OAtCJ3I,GAAG,MACHuH,MAAM,aACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAo6D,aAAW,I,EAEnBt6D,EAAAA,GAAAA,GAiBM,MAjBNkkD,GAiBM,EAhBJlkD,EAAAA,GAAAA,GAcS,UAbPpB,MAAM,oCACL+S,MAAOzR,EAAA8L,GAAG,sBACV,iBAAgB9L,EAAAyI,MAAMsxD,aAAe/5D,EAAAyI,MAAMsxD,WAAWxD,OACtDp3D,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,SAAAokD,GAAA,OAAevkD,EAAA85D,qBAAmB,yB,EAExCz2D,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACNyK,KAAK,SAGEnJ,EAAAs8C,kBAAoBt8C,EAAA45D,aAAgB55D,EAAAo/C,0BAAuB,YADpEx/C,EAAAA,GAAAA,IAGE,MAHFykD,MAGE,wBAEJhhD,EAAAA,GAAAA,IAA+BkoD,EAAA,CAAf7sD,MAAM,YAAM,YACvBoB,EAAAA,GAAAA,GAgBD,MAhBCwkD,GAgBD,CAdItkD,EAAAkT,cAAW,YADnBtT,EAAAA,GAAAA,IAcS,U,MAZPlB,MAAM,oCACL+S,MAAOzR,EAAA42D,yBAA2B52D,EAAA8L,GAAG,0CAA4C9L,EAAA8L,GAAG,4BACpF3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,SAAAokD,GAAA,OAAevkD,EAAAg6D,yBAAuB,yB,EAE5C32D,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACNyK,KAAK,SAGCnJ,EAAA42D,2BAAwB,YADhCh3D,EAAAA,GAAAA,IAGE,MAHF6kD,MAGE,6CAKAzkD,EAAAkT,cAAW,YADnBtT,EAAAA,GAAAA,IAyCQ,S,MAvCNlB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,8BAA6B,YACb5oD,EAAAu5D,qBACrBpC,aAAUj3D,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAOH,EAAAk6D,yBAAAl6D,EAAAk6D,wBAAA/gE,MAAA6G,EAAAhE,UAAuB,cACxCo7D,YAASl3D,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAOH,EAAAm6D,wBAAAn6D,EAAAm6D,uBAAAhhE,MAAA6G,EAAAhE,UAAsB,e,EAEvC8D,EAAAA,GAAAA,GA2BM,MA3BN4kD,GA2BM,EA1BJ5kD,EAAAA,GAAAA,GAAkE,OAAlE4lD,IAAkEzB,EAAAA,GAAAA,IAA3CjkD,EAAA8L,GAAG,gCAAD,GACzB64C,GAEQ3kD,EAAAw5D,qBAAkB,YAD1B55D,EAAAA,GAAAA,IAaS,U,MAXPlB,MAAM,oCACL+S,MAAOzR,EAAA8L,GAAG,yBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAeH,EAAAs6D,gCAAAt6D,EAAAs6D,+BAAAnhE,MAAA6G,EAAAhE,UAA8B,yB,EAEnDqH,EAAAA,GAAAA,IAMWw3D,EAAA,CANDn8D,MAAM,qCAAmC,C,mBACjD,iBAA0B,EAA1B2E,EAAAA,GAAAA,IAA0B+hD,EAAA,CAAlBj8C,KAAK,cACb9F,EAAAA,GAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,QACL0/C,UAAU,S,oCAIhB/oD,EAAAA,GAAAA,GASS,UARPpB,MAAM,oCACL+S,MAAOzR,EAAA8L,GAAG,kCACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,SAAAokD,GAAA,OAAevkD,EAAA05D,0BAAyB,EAAD,yB,EAE7Cr2D,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACNyK,KAAK,W,SAIXrJ,EAAAA,GAAAA,GAKE,OAJA3I,GAAG,uBACH+4C,IAAI,sBACJxxC,MAAM,uBACLg8D,SAAMx6D,EAAA,KAAAA,EAAA,qBAAEF,EAAA06D,UAAA16D,EAAA06D,SAAAvhE,MAAA6G,EAAAhE,UAAQ,I,kCAGrBqH,EAAAA,GAAAA,IAGEy3D,EAAA,CAFA5qB,IAAI,aACHxO,OAAQ1hC,EAAA0hC,Q,iCAEXsjB,EAAAA,GAAAA,IAWW+V,GAAAA,GAAA,CAXDvuB,GAAG,UAAQ,CAEXxsC,EAAAy5D,uBAAoB,YAD5BzU,EAAAA,GAAAA,IASgBgW,EAAA,C,MAPbvpD,MAAOzR,EAAA8L,GAAG,8BACV,eAAc9L,EAAA8L,GAAG,sCACjB,cAAa9L,EAAA8L,GAAG,sCAChBmvD,WAAUj7D,EAAA+2D,SACVmE,YAAWl7D,EAAAy6D,mB,oBAEZ,iBAAgC,qBAA7Bz6D,EAAA8L,GAAG,yBAAD,G,iHG5FJpN,MAAM,a,IACJA,MAAM,iB,eAyBNA,MAAM,sB,8BA8BToB,EAAAA,GAAAA,GAAuB,QAAjBpB,MAAM,UAAQ,S,2GCVtBoB,EAAAA,GAAAA,GAAuB,QAAjBpB,MAAM,UAAQ,S,IACpBoB,EAAAA,GAAAA,GAAuB,QAAjBpB,MAAM,UAAQ,SChD1BgL,GAAAA,GAAAA,IACE6+B,GAAAA,IACA4tB,GAAAA,KAiCF,SA9BkB,CAChB1+D,KAAM,iBAAO,CACX0jE,gBAAYv5D,EACZ+gC,QAAQ,EACRp4B,OAAO,EACR,EACD0iD,MAAO,CACLkL,OAAQ,SAAUtR,GACG,WAAfA,EAAMxtD,OACRgG,KAAK87D,WAAatU,EAAMxsD,MAAMA,MAElC,GAEF6E,QAAS,CACPopB,KAAI,SAAE6yC,GACJ97D,KAAKI,QAAQhB,KAAK,CAAEpF,KAAM,SAAUgB,MAAO,CAAEA,MAAO8gE,KACpD97D,KAAKoJ,MAAM2yD,YAAYtX,OACzB,EACAuX,aAAY,WAAI,IAAAt6D,EAAA,KACd1B,KAAKsjC,QAAUtjC,KAAKsjC,OACpBtjC,KAAKkG,MAAM,UAAWlG,KAAKsjC,QAC3BtjC,KAAKuuD,WAAU,WACR7sD,EAAK4hC,QACR5hC,EAAK0H,MAAM2yD,YAAYtX,OAE3B,GACF,IC5BJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mEFNzDlkD,EAAAA,GAAAA,IAuDM,OAtDJlB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,YAAW,cACO5oD,EAAA2iC,W,CAGhB3iC,EAAA2iC,SAAM,YADd/iC,EAAAA,GAAAA,IAaS,U,MAXPlB,MAAM,2BACL+S,MAAOzR,EAAA8L,GAAG,cACXhN,KAAK,SACJ,iBAAgBkB,EAAA2iC,OAChBxjC,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAeH,EAAAq7D,cAAAr7D,EAAAq7D,aAAAliE,MAAA6G,EAAAhE,UAAY,yB,EAEjCqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,Y,qBAGTvJ,EAAAA,GAAAA,IAoCWwkD,GAAAA,GAAA,CAAAt8C,IAAA,eAnCThI,EAAAA,GAAAA,GAQC,SAPC3I,GAAG,mBACH+4C,IAAI,c,qDACKlwC,EAAAm7D,WAAU5W,CAAA,GACnB7lD,MAAM,mBACL8lD,YAAaxkD,EAAA8L,GAAG,cACjBhN,KAAK,OACJkvD,QAAK9tD,EAAA,KAAAA,EAAA,IAAA+tD,EAAAA,GAAAA,KAAA,SAAA1J,GAAA,OAAQvkD,EAAAsoB,KAAKtoB,EAAAm7D,WAAU,gB,oBAJpBn7D,EAAAm7D,eAMXr7D,EAAAA,GAAAA,GAUS,UATPpB,MAAM,+BACNI,KAAK,SACJ2S,MAAOzR,EAAA8L,GAAG,cACV3M,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAsoB,KAAKtoB,EAAAm7D,WAAU,I,EAEvB93D,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,Y,OAGTrJ,EAAAA,GAAAA,GAYS,UAXPpB,MAAM,gCACNI,KAAK,SACJ2S,MAAOzR,EAAA8L,GAAG,oBACV,iBAAgB9L,EAAA2iC,OAChBxjC,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAeH,EAAAq7D,cAAAr7D,EAAAq7D,aAAAliE,MAAA6G,EAAAhE,UAAY,yB,EAEjCqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACAj8C,KAAK,QACLzK,MAAM,6C,MAGV4lD,GACAmB,IAAuB,Q,KGrC7B/7C,GAAAA,GAAAA,IACEqsD,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACAnM,GAAAA,IACAC,GAAAA,IACAmM,GAAAA,IACA3L,GAAAA,IACA4L,GAAAA,IACAC,GAAAA,IACAC,GAAAA,IACArM,GAAAA,KAGF,UACE1pD,WAAY,CACVg7D,UAAAA,GACAjC,aAAAA,GAAAA,GAEF5hE,KAAM,iBAAO,CACX8jE,iBAAiB,EACjBC,aAAc97D,OAAOmQ,KAAOnQ,OAAOmQ,IAAIC,WACrCpQ,OAAOmQ,IAAIC,SAAS,YAAa,YAC/BpQ,OAAOmQ,IAAIC,SAAS,oBAAqB,YACzCpQ,OAAOmQ,IAAIC,SAAS,iBAAkB,YACtCpQ,OAAOmQ,IAAIC,SAAS,gBAAiB,YACrCpQ,OAAOmQ,IAAIC,SAAS,eAAgB,YAExC2pD,sBAAsB,EACvB,EACD9xD,SAAU,CACR8zD,WAAU,WAAM,OAAOp8D,KAAKm8D,cAAgBn8D,KAAK0L,OAAOhR,MAAM2X,SAASkF,QAAS,EAChF8kD,UAAS,WACP,MAAO,CACLx4C,WAAY7jB,KAAKo8D,WAAa,SAAW,UAE7C,EACAE,cAAa,WACX,OAAOt8D,KAAKo8D,WACR,CACE,aAAc,OAAF/iE,OAAS2G,KAAK0L,OAAOhR,MAAM2X,SAASgF,KAAI,MAEtD,CACE,mBAAoBrX,KAAKo8D,WAAa,GAAK,cAEnD,EACAG,YAAW,WACT,OAAOtkE,OAAOqlB,OAAO,CACnBk/C,OAAQ,GAAFnjE,OAAK2G,KAAK0L,OAAOhR,MAAM2X,SAASiF,WAAU,MAChDmlD,QAASz8D,KAAKk8D,gBAAkB,EAAI,GACnCl8D,KAAKo8D,WACJ,CAAC,EACD,CACE,mBAAoBp8D,KAAKo8D,WAAa,GAAK,eAEnD,EACA/kD,KAAI,WAAM,OAAOrX,KAAK0L,OAAOhR,MAAM2X,SAASgF,IAAK,EACjDmgD,SAAQ,WAAM,OAAOx3D,KAAK0L,OAAOhR,MAAM2X,SAASrY,IAAK,EACrDwc,aAAY,WAAM,OAAOxW,KAAK0L,OAAOhR,MAAM2X,SAASmE,YAAa,EACjEgB,SAAQ,WAAM,OAAOxX,KAAK0L,OAAOhR,MAAM2X,SAASmF,QAAS,EACzD3D,YAAW,WAAM,OAAO7T,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WAAY,EAC5Do2C,YAAW,WAAM,OAAOjqD,KAAK0L,OAAOhR,MAAM2X,SAAQ,OAAS,EAC3DmoD,oBAAmB,WACjB,OAAOx6D,KAAK0L,OAAOoP,QAAQnH,aAAaqD,aAC1C,GAEFnX,QAAS,CACPk7D,YAAW,WACT16D,OAAO26D,SAAS,EAAG,EACrB,EACAG,kBAAiB,WACfn7D,KAAKo6D,sBAAuB,CAC9B,EACAgB,kBAAiB,WACfp7D,KAAKo6D,sBAAuB,CAC9B,EACA/3B,OAAM,WACCriC,KAAKw6D,oBAGRx6D,KAAKm7D,oBAFLn7D,KAAK03D,UAIT,EACAA,SAAQ,WACN13D,KAAKI,QAAQjD,QAAQ,gBACrB6C,KAAK0L,OAAOjR,SAAS,UACrBuF,KAAKo7D,mBACP,EACAsB,mBAAkB,SAAEp5B,GAClBtjC,KAAKk8D,gBAAkB54B,CACzB,EACA/xB,kBAAiB,WACfvR,KAAK0L,OAAOjR,SAAS,oBAAqB,OAC5C,EACAo9D,eAAc,WACZ73D,KAAK0L,OAAOjR,SAAS,oBAAqB,QAC5C,ICxGJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qJLNzD8F,EAAAA,GAAAA,IAyFM,OAxFJzI,GAAG,MACHuH,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,aAAY,aACK5oD,EAAA6W,YACtB1X,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAo6D,aAAW,I,EAEnBt6D,EAAAA,GAAAA,GAsEM,MAtEND,GAsEM,EArEJC,EAAAA,GAAAA,GASM,MATNkkD,GASM,CAPKhkD,EAAA6V,c,kBAAY,YADrBmvC,EAAAA,GAAAA,IAOcJ,EAAA,C,MALZlmD,MAAM,YACL8tC,GAAI,CAAAnzC,KAAA,QACL,eAAa,Q,oBAEb,iBAAc,qBAAX2G,EAAA62D,UAAQ,G,cAGfxzD,EAAAA,GAAAA,IAccuhD,EAAA,CAbZlmD,MAAM,OACL8tC,GAAI,CAAAnzC,KAAA,QACJg+D,OAAK2E,EAAAA,GAAAA,IAAEh8D,EAAA47D,aACPnqD,MAAOzR,EAAA62D,U,oBAER,iBAGE,EAHF/2D,EAAAA,GAAAA,GAGE,OAFApB,MAAM,OACL24D,OAAK2E,EAAAA,GAAAA,IAAEh8D,EAAA27D,gB,SAEV77D,EAAAA,GAAAA,GAGC,OAFEutD,IAAKrtD,EAAA0W,KACL2gD,OAAK2E,EAAAA,GAAAA,IAAEh8D,EAAA07D,Y,2CAGZ57D,EAAAA,GAAAA,GA2CM,MA3CNukD,GA2CM,CAzCIrkD,EAAAkT,cAAgBlT,EAAAspD,cAAW,YADnCtE,EAAAA,GAAAA,IAIEiX,EAAA,C,MAFCC,UAASl8D,EAAA+7D,mBACT58D,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAN,cAAW,Y,yCAEbL,EAAAA,GAAAA,GAUS,UATPpB,MAAM,2BACL+S,MAAOzR,EAAA8L,GAAG,mBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAOH,EAAA4Q,mBAAA5Q,EAAA4Q,kBAAAzX,MAAA6G,EAAAhE,UAAiB,e,EAE9BqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,S,MAIDnJ,EAAAkT,aAAoC,UAArBlT,EAAAkT,YAAYokD,OAAI,YADvC13D,EAAAA,GAAAA,IAYS,U,MAVPlB,MAAM,2BACNuB,OAAO,SACNwR,MAAOzR,EAAA8L,GAAG,sBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAOH,EAAAk3D,gBAAAl3D,EAAAk3D,eAAA/9D,MAAA6G,EAAAhE,UAAc,e,EAE3BqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,oB,wBAGTs7C,GAEQzkD,EAAAkT,cAAW,YADnBtT,EAAAA,GAAAA,IAWS,U,MATPlB,MAAM,2BACL+S,MAAOzR,EAAA8L,GAAG,gBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAeH,EAAA0hC,QAAA1hC,EAAA0hC,OAAAvoC,MAAA6G,EAAAhE,UAAM,yB,EAE3BqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA,iBACA1mD,MAAM,8BACNyK,KAAK,kB,0CAKb67C,EAAAA,GAAAA,IAWW+V,GAAAA,GAAA,CAXDvuB,GAAG,UAAQ,CAEXxsC,EAAAy5D,uBAAoB,YAD5BzU,EAAAA,GAAAA,IASgBgW,EAAA,C,MAPbvpD,MAAOzR,EAAA8L,GAAG,8BACV,eAAc9L,EAAA8L,GAAG,sCACjB,cAAa9L,EAAA8L,GAAG,sCAChBmvD,WAAUj7D,EAAA+2D,SACVmE,YAAWl7D,EAAAy6D,mB,oBAEZ,iBAAgC,qBAA7Bz6D,EAAA8L,GAAG,yBAAD,G,mHMlFJpN,MAAM,8B,IACJA,MAAM,iB,IASNA,MAAM,c,IACJA,MAAM,6B,wDA2BLA,MAAM,e,IAMPA,MAAM,8B,IAGAA,MAAM,4C,mQCiEzB,SA/G2B,CACzB4B,WAAY,CACV67D,OAAAA,GAAAA,QACAC,KAAAA,GAAAA,EACA3R,SAAAA,GAAAA,EACAjiB,MAAAA,GAAAA,EACA6zB,SAAAA,GAAAA,GAEF5kE,KAAI,WACF,MAAO,CACL0lC,QAAS,GACTm/B,SAAS,EACTC,kBAAmB,GACnBC,YAAY,EACZjyD,OAAO,EAEX,EACA5C,SAAU,CACR2uC,YAAW,WACT,OAAOj3C,KAAK0L,OAAOhR,MAAMs8C,QAAQC,WACnC,EACA2hB,WAAU,WACR,QAAS54D,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACnC,EACAupD,OAAM,WACJ,OAAOp9D,KAAK44D,YAAc54D,KAAKi3C,YAAYb,SAC7C,EACAn3B,OAAM,WACJ,OAAOjf,KAAKi3C,YAAYh4B,MAC1B,EACAjjB,KAAI,WACF,OAAOgE,KAAK0L,OAAOoP,QAAQgiB,SAAS98B,KAAKif,OAC3C,EACAo+C,eAAc,WACZ,OAAQr9D,KAAKhE,KAAKshE,UAAYt9D,KAAKhE,KAAKC,YAAYhD,OAAO+G,KAAKhE,KAAKC,YAAYm/B,QAAQ,KAAO,EAClG,EACAlc,SAAQ,WACN,OAAOlf,KAAKi3C,YAAY/3B,QAC1B,EACAg4B,aAAY,WACV,OAAOl3C,KAAKi3C,YAAYC,YAC1B,GAEF0W,MAAO,CACL3uC,OAAQ,aACRi4B,aAAY,SAAE9e,GACZp4B,KAAKk9D,kBAAoB9kC,CAC3B,GAEFv4B,QAAS,CACPo1C,WAAU,WAERj1C,KAAK89B,QAAU,GACf99B,KAAKi9D,SAAU,EACfj9D,KAAKk9D,kBAAoBl9D,KAAKk3C,aAC9Bl3C,KAAKm9D,YAAa,EAClBn9D,KAAKkL,OAAQ,CACf,EACAqyD,WAAU,WACRv9D,KAAK0L,OAAOjR,SAAS,0BACvB,EACA+iE,WAAU,WAAI,IAAA97D,EAAA,KACZ1B,KAAKm9D,YAAa,EAClBn9D,KAAKkL,OAAQ,EACb,IAAMg3B,EAAS,CACbjjB,OAAQjf,KAAKif,OACb6e,QAAS99B,KAAK89B,QACdm/B,QAASj9D,KAAKi9D,QACdxlB,UAAWz3C,KAAKk9D,mBAElBl9D,KAAK0L,OAAOhR,MAAM+wB,IAAIC,kBAAkB8xC,W,uWAAUtkE,CAAC,CAAC,EAAIgpC,IACrDzqC,MAAK,WACJiK,EAAKy7D,YAAa,EAClBz7D,EAAKuzC,aACLvzC,EAAK67D,YACP,IAAE,OACK,WACL77D,EAAKy7D,YAAa,EAClBz7D,EAAKwJ,OAAQ,CACf,GACJ,EACAq5C,WAAU,WACRvkD,KAAKkL,OAAQ,CACf,EACAuyD,UAAS,SAAEzhD,GACT,OAAqD,IAA9Chc,KAAKk9D,kBAAkB9hC,QAAQpf,EACxC,EACA0hD,aAAY,SAAEC,EAAS3hD,GACjB2hD,IAAY39D,KAAKy9D,UAAUzhD,KAI3B2hD,EACF39D,KAAKk9D,kBAAkB99D,KAAK4c,GAE5Bhc,KAAKk9D,kBAAkB57C,OAAOthB,KAAKk9D,kBAAkB9hC,QAAQpf,GAAW,GAE5E,EACA4hD,OAAM,SAAElmE,GACN,IAAMkJ,EAASlJ,EAAEkJ,QAAUlJ,EACrBkJ,aAAkBP,OAAOw9D,UAE/Bj9D,EAAOo3D,MAAM9rD,OAAS,OACtBtL,EAAOo3D,MAAM9rD,OAAS,GAAH7S,OAAMuH,EAAO0tD,aAAY,MACvB,KAAjB1tD,EAAO5B,QACT4B,EAAOo3D,MAAM9rD,OAAS,MAE1B,ICxGJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,sKFLjDvL,EAAAy8D,SAAM,YADdzX,EAAAA,GAAAA,IAmEQ+P,EAAA,C,MAjELC,kBAAiBh1D,EAAA48D,Y,oBAElB,iBA8DM,EA9DN98D,EAAAA,GAAAA,GA8DM,MA9DND,GA8DM,EA7DJC,EAAAA,GAAAA,GAQM,MARNkkD,GAQM,EAPJ3gD,EAAAA,GAAAA,IAMS85D,EAAA,CALPjhE,IAAI,MACJkhE,QAAQ,uBACR1+D,MAAM,S,oBAEN,iBAAyB,EAAzB2E,EAAAA,GAAAA,IAAyBg6D,EAAA,CAAdhiE,KAAM2E,EAAA3E,MAAI,iB,aAGzByE,EAAAA,GAAAA,GAmDM,MAnDNokD,GAmDM,EAlDJpkD,EAAAA,GAAAA,GAgCM,MAhCNukD,GAgCM,EA/BJvkD,EAAAA,GAAAA,GASM,aARJA,EAAAA,GAAAA,GAAyD,UAAAmkD,EAAAA,GAAAA,IAAnDjkD,EAAA8L,GAAG,2CAAD,cACRhM,EAAAA,GAAAA,GAME,Y,qDALSE,EAAAm9B,QAAOonB,CAAA,GAChB7lD,MAAM,eACL8lD,YAAaxkD,EAAA8L,GAAG,sCACjBiiD,KAAK,IACJuP,QAAKp9D,EAAA,KAAAA,EAAA,qBAAEF,EAAAi9D,QAAAj9D,EAAAi9D,OAAA9jE,MAAA6G,EAAAhE,UAAM,I,oBAJLgE,EAAAm9B,aAODn9B,EAAA3E,KAAKshE,U,kBAAQ,YAAzB/8D,EAAAA,GAAAA,IAKM,MAAA6lD,GAAA,EAJJ3lD,EAAAA,GAAAA,GAAqD,UAAAmkD,EAAAA,GAAAA,IAA/CjkD,EAAA8L,GAAG,uCAAD,IACRzI,EAAAA,GAAAA,IAEWk6D,EAAA,C,WAFQv9D,EAAAs8D,Q,qDAAAt8D,EAAAs8D,QAAO/X,CAAA,I,oBACxB,iBAAuD,qBAApDvkD,EAAA8L,GAAG,4BAA6B,CAAC9L,EAAA08D,kBAAc,G,+BAGtD58D,EAAAA,GAAAA,GAcM,aAbJA,EAAAA,GAAAA,GAMS,UALPpB,MAAM,qBACLuK,SAAUjJ,EAAAw8D,WACVr9D,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA68D,YAAA78D,EAAA68D,WAAA1jE,MAAA6G,EAAAhE,UAAU,K,SAEfgE,EAAA8L,GAAG,0BAAD,EAAA24C,IAGCzkD,EAAAuK,QAAK,YADb3K,EAAAA,GAAAA,IAKM,MALN8kD,IAKMT,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,iCAAD,0BAIXhM,EAAAA,GAAAA,GAgBM,MAhBN4lD,GAgBM,EAfJriD,EAAAA,GAAAA,IAcOm6D,EAAA,CAdAC,MAAOz9D,EAAAue,UAAQ,CACTvb,MAAI06D,EAAAA,GAAAA,KACb,SAAA7jE,GAAA,IADgBmJ,EAAInJ,EAAJmJ,KAAI,QACpBlD,EAAAA,GAAAA,GAUM,MAVN6kD,GAUM,EATJthD,EAAAA,GAAAA,IAIEs6D,EAAA,CAHC,mBAAiB,EACjBC,SAAS,EACTC,UAAW76D,G,uBAEdK,EAAAA,GAAAA,IAGEk6D,EAAA,CAFC,cAAav9D,EAAA88D,UAAU95D,EAAK7L,IAC5B,sBAAoB,SAAA6lE,GAAO,OAAIh9D,EAAA+8D,aAAaC,EAASh6D,EAAK7L,GAAE,G,4IGtDtEuH,MAAM,+B,IACJA,MAAM,iB,WCmEjB,SArEwB,CACtB4B,WAAY,CACV8lD,eAAAA,GAAAA,EACA5d,MAAAA,GAAAA,GAEF/wC,KAAI,WACF,MAAO,CACLqmE,eAAe,EAEnB,EACAn2D,SAAU,CACRswD,WAAU,WACR,QAAS54D,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACnC,EACAglC,eAAc,WACZ,OAAO74C,KAAK0L,OAAOhR,MAAMgkE,WAAW7lB,cACtC,EACA8lB,cAAa,WACX,OAAO3+D,KAAK44D,aAAe54D,KAAKy+D,eAAiBz+D,KAAK64C,cACxD,EACA3W,OAAM,WACJ,OAAOliC,KAAK0L,OAAOhR,MAAMgkE,WAAWx8B,QAAU,CAAC,CACjD,GAEF0rB,MAAO,CACL1rB,OAAM,SAAEisB,EAAQyQ,GAAQ,IAAAl9D,EAAA,KAClBmmC,KAAIsmB,EAAQ,cAAgBtmB,KAAI+2B,EAAQ,cAC1C5+D,KAAKy+D,eAAgB,EACrBz+D,KAAKuuD,WAAU,WACb7sD,EAAK+8D,eAAgB,CACvB,IAEJ,EACAE,cAAa,SAAEE,GAAK,IAAAl2D,EAAA,KACdk2D,GACF7+D,KAAKuuD,WAAU,kBAAM5lD,EAAKyD,KAAOzD,EAAKyD,IAAIiiD,cAAc,YAAY5J,OAAO,GAE/E,GAEF5kD,QAAS,CACPi/D,aAAY,SAAAtkE,GAAgE,IAA5DgnB,EAAMhnB,EAANgnB,OAAQu9C,EAAWvkE,EAAXukE,YAAaC,EAASxkE,EAATwkE,UAAWp+C,EAAKpmB,EAALomB,MAAOq+C,EAAWzkE,EAAXykE,YAAaz0C,EAAIhwB,EAAJgwB,KAC5D0X,EAAS,CACbzpC,MAAOuH,KAAK0L,OACZsQ,SAAUhc,KAAK0L,OAAOhR,MAAMgkE,WAAWx8B,OAAOlmB,SAC9CwF,OAAAA,EACAu9C,YAAAA,EACAC,UAAAA,EACAx0C,KAAAA,EACA5J,MAAAA,EACAq+C,YAAAA,GAGF,OAAOC,GAAAA,EAAAA,WAA+Bh9B,GACnCzqC,MAAK,SAACW,GACL,OAAOA,CACT,IAAE,OACK,SAAC8G,GAEN,OADAqd,QAAQrR,MAAM,uBAAwBhM,GAC/B,CACLgM,MAAOhM,EAAI+sB,QAEf,GACJ,EACAsxC,WAAU,WACRv9D,KAAK0L,OAAOjR,SAAS,uBACvB,IC7DJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,oFFLjDkG,EAAAg+D,gBAAa,YADrBhZ,EAAAA,GAAAA,IAkBQ+P,EAAA,C,MAhBNr2D,MAAM,uBACLs2D,kBAAiBh1D,EAAA48D,Y,oBAElB,iBAYM,EAZN98D,EAAAA,GAAAA,GAYM,MAZND,GAYM,EAXJC,EAAAA,GAAAA,GAEM,MAFNkkD,IAEMC,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,4BAAD,IAEPzI,EAAAA,GAAAA,IAOEmjD,GAPFxiD,EAAAA,GAAAA,IAOE,CANAtF,MAAM,cACEsB,EAAAuhC,OAAM,CACb,eAAcvhC,EAAAm+D,aACd,iBAAe,EACf,+BAA6B,EAC7BK,SAAQx+D,EAAA48D,a,uGGTRl+D,MAAM,+B,IACJA,MAAM,iBC8CjB,SAlDwB,CACtB4B,WAAY,CACV8lD,eAAAA,GAAAA,EACA5d,MAAAA,GAAAA,GAEF/wC,KAAI,WACF,MAAO,CACLqmE,eAAe,EAEnB,EACAn2D,SAAU,CACRswD,WAAU,WACR,QAAS54D,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACnC,EACAglC,eAAc,WACZ,OAAO74C,KAAK0L,OAAOhR,MAAM0kE,WAAWvmB,cACtC,EACA8lB,cAAa,WACX,OAAO3+D,KAAK44D,aAAe54D,KAAKy+D,eAAiBz+D,KAAK64C,cACxD,EACA3W,OAAM,WACJ,OAAOliC,KAAK0L,OAAOhR,MAAM0kE,WAAWl9B,QAAU,CAAC,CACjD,GAEF0rB,MAAO,CACL1rB,OAAM,SAAEisB,EAAQyQ,GAAQ,IAAAl9D,EAAA,KAClBmmC,KAAIsmB,EAAQ,oBAAsBtmB,KAAI+2B,EAAQ,oBAChD5+D,KAAKy+D,eAAgB,EACrBz+D,KAAKuuD,WAAU,WACb7sD,EAAK+8D,eAAgB,CACvB,IAEJ,EACAE,cAAa,SAAEE,GAAK,IAAAl2D,EAAA,KACdk2D,GACF7+D,KAAKuuD,WAAU,kBAAM5lD,EAAKyD,KAAOzD,EAAKyD,IAAIiiD,cAAc,YAAY5J,OAAO,GAE/E,GAEF5kD,QAAS,CACP09D,WAAU,WACRv9D,KAAK0L,OAAOjR,SAAS,uBACvB,EACA4kE,cAAa,WACXr/D,KAAK0L,OAAOjR,SAAS,wBACrBuF,KAAK0L,OAAOjR,SAAS,uBACvB,ICzCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,oFFLjDkG,EAAAi4D,aAAej4D,EAAA89D,gBAAa,YADpC9Y,EAAAA,GAAAA,IAgBQ+P,EAAA,C,MAdL,UAAS/0D,EAAAk4C,eACVx5C,MAAM,uBACLs2D,kBAAiBh1D,EAAA48D,Y,oBAElB,iBASM,EATN98D,EAAAA,GAAAA,GASM,MATND,GASM,EARJC,EAAAA,GAAAA,GAEM,MAFNkkD,IAEMC,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,2BAAD,IAEPzI,EAAAA,GAAAA,IAIEmjD,GAJFxiD,EAAAA,GAAAA,IAIE,CAHAtF,MAAM,cACEsB,EAAAuhC,OAAM,CACbi9B,SAAQx+D,EAAA0+D,gBAAa,wB,0EGRrBhgE,MAAM,oC,IACJA,MAAM,iB,IAGNA,MAAM,c,UAGPA,MAAM,gBC8ChB,SAvD2B,CACzB4B,WAAY,CACVkoC,MAAAA,GAAAA,EACA2zB,OAAAA,GAAAA,SAEF1kE,KAAI,WACF,MAAO,CACL8mB,SAAU,GAEd,EACA5W,SAAU,CACRuwC,eAAc,WACZ,OAAO74C,KAAK0L,OAAOhR,MAAM4kE,cAAczmB,cACzC,EACA3W,OAAM,WACJ,OAAOliC,KAAK0L,OAAOhR,MAAM4kE,cAAcp9B,MACzC,EACAlmB,SAAQ,WACN,OAAOhc,KAAKkiC,OAAOpqC,EACrB,EACAynE,aAAY,WACV,OAAOv/D,KAAKkf,SAASzlB,MACvB,EACA+lE,QAAO,WACL,OAAOx/D,KAAKkf,QACd,GAEF0uC,MAAO,CACL1rB,OAAM,SAAEisB,EAAQyQ,GACd,IAAMa,EAAc52B,KAAIslB,EAAQ,QAAUtlB,KAAI+1B,EAAQ,MAClDa,GACFz/D,KAAK0/D,gBAGHD,GAAe52B,KAAIslB,EAAQ,eAAiBtlB,KAAI+1B,EAAQ,eAC1D5+D,KAAK6rB,oBAET,GAEFhsB,QAAS,CACP6/D,aAAY,WACV1/D,KAAKkf,SAAW,EAClB,EACA2M,mBAAkB,WAAI,IAAAnqB,EAAA,KACpB1B,KAAK0L,OAAOjR,SAAS,qBAAsBuF,KAAKkiC,QAC7CzqC,MAAK,SAAAW,GACJsJ,EAAKwd,SAAW9mB,CAClB,GACJ,EACAmlE,WAAU,WACRv9D,KAAK0L,OAAOjR,SAAS,0BACvB,IC9CJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4EFLjDkG,EAAAk4C,iBAAc,YADtB8M,EAAAA,GAAAA,IAwBQ+P,EAAA,C,MAtBNr2D,MAAM,4BACLs2D,kBAAiBh1D,EAAA48D,Y,oBAElB,iBAkBM,EAlBN98D,EAAAA,GAAAA,GAkBM,MAlBND,GAkBM,EAjBJC,EAAAA,GAAAA,GAEM,MAFNkkD,IAEMC,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,0BAA2B,MAAEm4C,EAAAA,GAAAA,IAAGjkD,EAAA4+D,cAAe,KACvD,IACA9+D,EAAAA,GAAAA,GAaM,MAbNokD,GAaM,CAXIlkD,EAAA4+D,aAAe,IAAH,YADpBh/D,EAAAA,GAAAA,IAWM,MAXNykD,GAWM,iBAPJzkD,EAAAA,GAAAA,IAMEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IALiBxpD,EAAA6+D,SAAO,SAAjBh+C,G,mBADTmkC,EAAAA,GAAAA,IAMEga,EAAA,CAJCl3D,IAAK+Y,EAAO1pB,GACZ0mE,UAAWh9C,EACX,cAAY,EACbniB,MAAM,gD,uHGnBXA,MAAM,sB,IAOFA,MAAM,kB,eCHjBgL,GAAAA,GAAAA,IACE6+B,GAAAA,KAgBF,SAbyB,CACvB5gC,SAAU,CACRs3D,QAAO,WACL,OAAO5/D,KAAK0L,OAAOhR,MAAK,UAAWiW,aACrC,GAEF9Q,QAAS,CACPggE,YAAW,SAAEnuD,GACX1R,KAAK0L,OAAOjR,SAAS,qBAAsBiX,EAC7C,ICTJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mEFNzDnR,EAAAA,GAAAA,IAoBM,MApBNC,GAoBM,iBAnBJD,EAAAA,GAAAA,IAkBMwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAjBsBxpD,EAAAi/D,SAAO,SAAzBluD,EAAQ9N,G,mBADlBrD,EAAAA,GAAAA,IAkBM,OAhBHkI,IAAK7E,EACNvE,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,uBAAqB/8C,EAAAA,EAAAA,GAAA,aACJkF,EAAO1K,OAAK,M,EAEnCvG,EAAAA,GAAAA,GAEM,MAFNkkD,IAEMC,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAGiF,EAAOqB,WAAYrB,EAAOuB,cAAW,IAE7CxS,EAAAA,GAAAA,GAQS,UAPPpB,MAAM,+BACLS,QAAK,SAAAolD,GAAA,OAAEvkD,EAAAk/D,YAAYnuD,EAAM,G,EAE1B1N,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACNyK,KAAK,W,wPGGf,UACE9P,KAAM,MACNiH,WAAY,CACV6+D,UAAAA,GACAC,SAAAA,GACAhG,eAAeiG,EAAAA,GAAAA,KAAqB,kBAAM,uCAAsD,IAChGC,sBAAAA,GACAC,cAAAA,GACAC,iBAAAA,GACAC,WAAAA,GACAC,WAAAA,GACAvG,WAAAA,GACAwG,uBAAAA,GACAC,UAAAA,GACAC,WAAAA,GACAC,eAAeT,EAAAA,GAAAA,KAAqB,kBAAM,+BAAwD,IAClGU,oBAAoBV,EAAAA,GAAAA,KAAqB,kBAAM,+BAAkE,IACjHW,mBAAAA,GACAC,gBAAAA,GACAC,gBAAAA,GACAC,mBAAAA,GACAC,iBAAAA,IAEF3oE,KAAM,iBAAO,CACX4oE,kBAAmB,WACpB,EACD51D,QAAO,WAEL,IAAMyzD,EAAM7+D,KAAK0L,OAAOoP,QAAQnH,aAAastD,kBAC7CjhE,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,oBAAqBgF,MAAO6/D,IACtEx+D,OAAOgL,iBAAiB,SAAUrL,KAAKkhE,kBACzC,EACAz2D,UAAS,WACPpK,OAAOmL,oBAAoB,SAAUxL,KAAKkhE,kBAC5C,EACA54D,S,uWAAQpP,CAAA,CACN8Q,QAAO,WACL,MAAO,CACL,CACE,WAAYhK,KAAKmhE,cACjB,qBAAsBnhE,KAAKohE,SAC3B,uBAAwBphE,KAAKqhE,oBAE/B,IAAMrhE,KAAK0Q,WAEf,EACA4wD,WAAU,WACR,IAAQC,EAAwBvhE,KAAK0L,OAAOoP,QAAQnH,aAA5C4tD,oBACR,MAAO,CACL,IAAMvhE,KAAK0Q,YAAUrX,QAAAU,EAAAA,EAAAA,GACjBwnE,EAAsB,CAAC,mBAAqB,IAEpD,EACA1tD,YAAW,WAAM,OAAO7T,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WAAY,EAC5D2tD,eAAc,WAAM,OAAOxhE,KAAK6T,YAAY4tD,gBAAiB,EAC7DC,mBAAkB,WAChB,OAAO1hE,KAAK2T,aAAaguD,sBACrB,KACA3hE,KAAK0L,OAAOhR,MAAM2X,SAASoD,UACjC,EACAA,WAAU,WAAM,OAAOzV,KAAKwhE,gBAAkBxhE,KAAK0hE,kBAAmB,EACtEE,QAAO,WACL,GAAI5hE,KAAKyV,WACP,MAAO,CACL,0BAA2B,OAAFpc,OAAS2G,KAAKyV,WAAU,KAGvD,EACA42C,MAAK,WAAM,OAAOrsD,KAAK0L,OAAOhR,MAAM2xD,MAAM1Y,MAAO,EACjD95B,mBAAkB,WAAM,OAAO7Z,KAAK0L,OAAOhR,MAAM2X,SAASwH,kBAAmB,EAC7E5B,0BAAyB,WACvB,OAAOjY,KAAK0L,OAAOhR,MAAM2X,SAAS4F,4BAC/BjY,KAAK0L,OAAOoP,QAAQnH,aAAakuD,SAClC7hE,KAAK0L,OAAOhR,MAAM2X,SAAS2H,4BAC/B,EACA8nD,QAAO,WACL,MAA4B,SAArB9hE,KAAK84D,OAAO9+D,MAAwC,UAArBgG,KAAK84D,OAAO9+D,IACpD,EACA+nE,WAAU,WACR,MAA4B,eAArB/hE,KAAK84D,OAAO9+D,IACrB,EACAqnE,mBAAkB,WAChB,OAAIrhE,KAAK8hE,UACL9hE,KAAK+hE,aACF/hE,KAAK0L,OAAOoP,QAAQnH,aAAaqlD,yBAA+C,WAApBh5D,KAAK0Q,WAC1E,EACAsH,kBAAiB,WAAM,OAAOhY,KAAK0L,OAAOhR,MAAM2X,SAAS2F,iBAAkB,EAC3EgqD,iBAAgB,WAAM,OAAOhiE,KAAK0L,OAAOhR,MAAM2X,SAAS2vD,gBAAiB,EACzEC,iBAAgB,WACd,OAAOjiE,KAAK0L,OAAOoP,QAAQnH,aAAaqlD,0BAA2B,CACrE,EACAkJ,aAAY,WACV,OAAOliE,KAAK0L,OAAOoP,QAAQnH,aAAauuD,YAC1C,EACAxxD,WAAU,WAAM,OAAO1Q,KAAK0L,OAAOhR,MAAK,UAAWgW,UAAW,EAC9Du5C,YAAW,WAAM,OAAOjqD,KAAK0L,OAAOhR,MAAM2X,SAAQ,OAAS,EAC3D8uD,cAAa,WACX,IAAAgB,EAA0DniE,KAAK0L,OAAOoP,QAAQnH,aAAtEC,EAAeuuD,EAAfvuD,gBAA+BwuD,EAAcD,EAA5BjqD,aACzB,MAAwB,SAApBlY,KAAK0Q,YAGoB,kBAApBkD,EAFAwuD,GAEwDA,CAEnE,EACAhB,SAAQ,WAAM,OAAOphE,KAAK0L,OAAOoP,QAAQnH,aAAa0uD,oBAAqB,EAC3EC,eAAc,WAAM,OAAOtiE,KAAK0L,OAAOoP,QAAQnH,aAAa2uD,cAAe,IACxEze,EAAAA,EAAAA,IAAW,CAAC,kBAEjBhkD,QAAS,CACPqhE,kBAAiB,WACflhE,KAAK0L,OAAOjR,SAAS,iBAAkBy6B,MACvCl1B,KAAK0L,OAAOjR,SAAS,kBAAmB66B,KAC1C,IC3HJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0oBpFNzD/0B,EAAAA,GAAAA,IAyEM,OAxEJzI,GAAG,aACFkgE,OAAK2E,EAAAA,GAAAA,IAAEh8D,EAAAihE,U,CAERphE,GAIgC,WAAfG,EAAA+P,aAAU,YAA3Bi1C,EAAAA,GAAAA,IAA4C4c,EAAA,CAAA95D,IAAA,mBAC5Ck9C,EAAAA,GAAAA,IAGE6c,EAAA,C,MADCnjE,OAAKkqD,EAAAA,GAAAA,IAAE5oD,EAAA2gE,a,mBAEW3gE,EAAAkT,cAAW,YAAhC8xC,EAAAA,GAAAA,IAAoC8c,EAAA,CAAAh6D,IAAA,uBACpChI,EAAAA,GAAAA,GA2CM,OA1CJ3I,GAAG,UACHuH,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,uBACE5oD,EAAAqJ,W,CAER26C,IACAlkD,EAAAA,GAAAA,GAaM,OAZJ3I,GAAG,UACHuH,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,qBAAoB,mBACG5oD,EAAA2hE,mB,EAE7Bt+D,EAAAA,GAAAA,IAAc0+D,GACiB,WAAf/hE,EAAA+P,aAAU,YAA1BnQ,EAAAA,GAAAA,IAMWwkD,GAAAA,GAAA,CAAAt8C,IAAA,KALTzE,EAAAA,GAAAA,IAAa2+D,GACkBhiE,EAAAsX,4BAAyB,YAAxD0tC,EAAAA,GAAAA,IAA4Did,EAAA,CAAAn6D,IAAA,uBACrC9H,EAAAkT,aAAelT,EAAAqX,oBAAiB,YAAvD2tC,EAAAA,GAAAA,IAA2Dkd,EAAA,CAAAp6D,IAAA,sBAChC9H,EAAAkT,aAAelT,EAAAkZ,qBAAkB,YAA5D8rC,EAAAA,GAAAA,IAAgEmd,EAAA,CAAAr6D,IAAA,sBAChEo8C,IAA2B,2BAG/BpkD,EAAAA,GAAAA,GAiBO,QAhBL3I,GAAG,gBACHuH,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,cAAa,gBACO5oD,EAAAmhE,SAAWnhE,EAAAohE,e,CAG5BphE,EAAAkT,a,kBAAW,YADpBtT,EAAAA,GAAAA,IAUM,MAVNykD,GAUM,EANJhhD,EAAAA,GAAAA,IAKcuhD,EAAA,CAJXpY,GAAI,CAAAnzC,KAAA,SACLqF,MAAM,c,oBAEN,iBAAsB,qBAAnBsB,EAAA8L,GAAG,eAAD,G,cAGTzI,EAAAA,GAAAA,IAAe++D,IAAA,IAEjBtiE,EAAAA,GAAAA,GAIE,OAHA3I,GAAG,gBACHuH,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,qBAAoB,mBACG5oD,EAAA2hE,mB,aAGjCt+D,EAAAA,GAAAA,IAAcg/D,GAENriE,EAAAkT,aAAelT,EAAA0rD,QAAU1rD,EAAAuhE,eAAY,YAD7Cvc,EAAAA,GAAAA,IAKEsd,EAAA,C,MAHCzU,UAAU,EACXnvD,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,+BAA8B,SACjB5oD,EAAAshE,qB,qCAErBj+D,EAAAA,GAAAA,IAA0Bk/D,IAC1Bl/D,EAAAA,GAAAA,IAAsBm/D,IACtBn/D,EAAAA,GAAAA,IAAmBo/D,GACIziE,EAAAqhE,mBAAgB,YAAvCrc,EAAAA,GAAAA,IAA2C0d,EAAA,CAAA56D,IAAA,sBACjB9H,EAAAqhE,mBAAgB,YAA1Crc,EAAAA,GAAAA,IAA8C2d,EAAA,CAAA76D,IAAA,uBAC9CzE,EAAAA,GAAAA,IAAiBu/D,IACjBv/D,EAAAA,GAAAA,IAAsBw/D,IACtBx/D,EAAAA,GAAAA,IAAoBy/D,IAAA,E,mBqFhEhBpkE,MAAM,oB,uBAoBJA,MAAM,oB,iBAWCA,MAAM,e,iBA6CfwxC,IAAI,WACJxxC,MAAM,WACN44D,KAAK,Q,UAiCH54D,MAAM,6C,UAMNA,MAAM,6C,IASDA,MAAM,uC,UAMXA,MAAM,uC,wDCpIVA,MAAM,8C,IAEAA,MAAM,S,IAmBTA,MAAM,gC,UAGPA,MAAM,e,UAIJA,MAAM,sC,UAuBNA,MAAM,oB,UA+CFA,MAAM,4B,IAGJA,MAAM,kC,UA0DdA,MAAM,e,2BCvKHA,MAAM,e,UAqCXA,MAAM,uB,UAoCNA,MAAM,kDClEZgL,GAAAA,GAAAA,IACEq5D,GAAAA,IACAC,GAAAA,KA+EF,SA5EmB,CACjB1iE,WAAY,CACV67D,OAAAA,GAAAA,SAEF9iE,KAAM,aACNsF,MAAO,CACLskE,MAAO5jD,OACPwB,OAAQvpB,OACR4rE,UAAWtiE,QACXy9C,aAAczhD,MACdumE,YAAaviE,QACbwiE,WAAYxiE,QACZyiE,sBAAuB/rE,OACvBgsE,cAAevkE,OAEf6+D,QAASv2D,SACTy0B,UAAW/8B,OACXwkE,WAAYl8D,SACZm8D,aAAcn8D,SACdo8D,eAAgBp8D,SAEhB2hC,OAAQpoC,QAER8iE,oBAAqBr8D,SACrBs8D,oBAAqBrsE,OACrBssE,sBAAuBv8D,SACvBw8D,gBAAiBvsE,OACjBwsE,gBAAiBxsE,OACjBysE,wBAAyBzsE,OACzB0sE,yBAA0B38D,SAC1B48D,4BAA6B58D,SAC7B68D,KAAM78D,UAERM,SAAU,CACRw8D,YAAW,WACT,IAAMC,GAAkB/kE,KAAKoJ,MAAM47D,iBAAkBhlE,KAAKoJ,MAAM47D,gBAAgBF,YAChF,OAAI9kE,KAAKoJ,MAAM67D,eACNF,GAAmB/kE,KAAKoJ,MAAM67D,eAAe19D,OAAM,SAAA1I,GAAC,OAAIA,EAAEimE,WAAW,IAEvEC,CACT,EACAG,mBAAkB,WAChB,OAAOllE,KAAKg/C,aAAalqC,QAAO,SAACqwD,EAAO3jD,EAAQ5d,GAE9C,OADAuhE,EAAM3jD,EAAO1pB,IAAM8L,EACZuhE,CACT,GAAG,CAAC,EACN,EACAC,eAAc,WAAI,IAAA1jE,EAAA,KAChB,OAAO1B,KAAKkkE,WAAWlkE,KAAKwhB,OAAO1pB,IAAIZ,KAAI,SAAAsD,GAAA,IAAG1C,EAAE0C,EAAF1C,GAAE,OAAO4J,EAAK2jE,WAAWvtE,EAAG,GAC5E,EACAwtE,cAAa,WACX,MAAoD,YAA7CtlE,KAAKskE,oBAAoBtkE,KAAKwhB,OAAO1pB,GAC9C,EACAytE,YAAW,WACT,OAAOvlE,KAAK0kE,wBAAwB1kE,KAAKwhB,OAAO1pB,GAClD,GAEF+H,QAAS,CACPwlE,WAAU,SAAEvtE,GACV,OAAOkI,KAAKg/C,aAAah/C,KAAKklE,mBAAmBptE,GACnD,EACA0tE,eAAc,WACd,EACAC,WAAU,WACV,EACAC,kBAAiB,WACjB,EACAC,kBAAiB,SAAE3rE,GACjBgG,KAAK4kE,4BAA4B5kE,KAAKwhB,OAAO1pB,GAAIkC,EACnD,EACA4rE,eAAc,SAAE5rE,EAAMm0D,GACpBnuD,KAAK2kE,yBAAyB3kE,KAAKwhB,OAAO1pB,GAAIkC,EAChD,IC5EJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0IFNzDuG,EAAAA,GAAAA,IAkHU,UAlHVC,GAkHU,eAjHRmlD,EAAAA,GAAAA,IAiCEga,EAAA,CAhCCl3D,IAAK9H,EAAA6gB,OAAO1pB,GACb+4C,IAAI,kBACH,kBAAiBlwC,EAAAmjE,aAAenjE,EAAAojE,WAChCvF,UAAW79D,EAAA6gB,OACXqkD,YAAallE,EAAAojE,WACb,cAAapjE,EAAAqjE,uBAAyBrjE,EAAAqjE,sBAAsBrjE,EAAA6gB,OAAO1pB,IACnEymE,QAAS59D,EAAA49D,QAAQ59D,EAAA6gB,OAAO1pB,IACxB,kBAAiB6I,EAAAojE,WACjBtnC,UAAW97B,EAAA87B,UACXqpC,QAASnlE,EAAAujE,WAAWvjE,EAAA6gB,OAAO1pB,IAC3B,aAAY6I,EAAAkjE,UACZ,kBAAiBljE,EAAAsjE,cAClB5kE,MAAM,4EAEL,cAAasB,EAAAgpC,OACb,mCAAkChpC,EAAA2jE,oBAAoB3jE,EAAA6gB,OAAO1pB,IAC7D,mCAAgC,kBAAQ6I,EAAA0jE,oBAAoB1jE,EAAA6gB,OAAO1pB,GAAE,EAErE,0BAAyB6I,EAAA4kE,YAAYQ,YACrC,+BAA8BplE,EAAA4kE,YAAYS,iBAC1C,kCAAiCrlE,EAAA4kE,YAAYU,mBAC7C,sBAAqBtlE,EAAA4kE,YAAYW,SACjC,2BAA0BvlE,EAAA4kE,YAAYY,aACtC,iCAA8B,kBAAQxlE,EAAAglE,kBAAkB,cAAD,EACvD,sCAAmC,kBAAQhlE,EAAAglE,kBAAkB,mBAAD,EAC5D,yCAAsC,kBAAQhlE,EAAAglE,kBAAkB,qBAAD,EAC/D,6BAA0B,kBAAQhlE,EAAAglE,kBAAkB,WAAD,EACnD,+BAA4B,SAAGxX,GAAM,OAAKxtD,EAAAilE,eAAe,eAAgBzX,EAAM,EAC/E0W,KAAMlkE,EAAAkkE,KAAO,WAAH,OAASlkE,EAAAkkE,KAAKlkE,EAAA6gB,OAAO1pB,GAAE,OAAIyK,EAErC6jE,OAAMzlE,EAAAwjE,aACNkC,iBAAgB1lE,EAAAyjE,gB,okBAGXzjE,EAAAykE,eAAe3rE,QAAUkH,EAAA2kE,gBAAa,YAD9C/kE,EAAAA,GAAAA,IAmCM,MAnCNokD,GAmCM,iBA/BJpkD,EAAAA,GAAAA,IA8BEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IA7BsBxpD,EAAAykE,gBAAc,SAA7BkB,G,mBADT3gB,EAAAA,GAAAA,IA8BE4gB,EAAA,CA5BC99D,IAAK69D,EAAYxuE,G,WAClB+4C,IAAI,iBACH+yB,MAAOjjE,EAAAijE,MAAQ,EACfpiD,OAAQ8kD,EAER,aAAY3lE,EAAAkjE,UACZ7kB,aAAcr+C,EAAAq+C,aACd8kB,YAAanjE,EAAAmjE,YACb,cAAanjE,EAAAojE,WACb,2BAA0BpjE,EAAAqjE,sBAC1B,kBAAiBrjE,EAAAsjE,cAEjB1F,QAAS59D,EAAA49D,QACT,cAAa59D,EAAAujE,WACbznC,UAAW97B,EAAA87B,UACX,gBAAe97B,EAAAwjE,aACf,kBAAiBxjE,EAAAyjE,eAEjBz6B,OAAQhpC,EAAAgpC,OACR,wBAAuBhpC,EAAA0jE,oBACvB,wBAAuB1jE,EAAA2jE,oBACvB,0BAAyB3jE,EAAA4jE,sBACzB,oBAAmB5jE,EAAA6jE,gBACnB,oBAAmB7jE,EAAA8jE,gBACnB,4BAA2B9jE,EAAA+jE,wBAC3B,8BAA6B/jE,EAAAgkE,yBAC7B,iCAAgChkE,EAAAikE,4BAChCC,KAAMlkE,EAAAkkE,M,gcAIHlkE,EAAAykE,eAAe3rE,SAAWkH,EAAA2kE,gBAAa,YAD/C/kE,EAAAA,GAAAA,IA0CM,MA1CNskD,GA0CM,CArCIlkD,EAAAgpC,SAAM,YADdgc,EAAAA,GAAAA,IAkBSmY,EAAA,C,MAhBPjnC,MAAM,SACNh6B,IAAI,SACJkhE,QAAQ,iCACR1+D,MAAM,wDACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAAkkE,KAAKlkE,EAAA6gB,OAAO1pB,GAAE,kB,CAEnBgS,MAAIu0D,EAAAA,GAAAA,KACb,iBAEE,EAFFr6D,EAAAA,GAAAA,IAEE+hD,EAAA,CADAj8C,KAAK,uB,IAGE3L,MAAIkgE,EAAAA,GAAAA,KACb,iBAEO,EAFP59D,EAAAA,GAAAA,GAEO,aAAAmkD,EAAAA,GAAAA,IADFjkD,EAAA41D,IAAI,uBAAwB51D,EAAA6jE,gBAAgB7jE,EAAA6gB,OAAO1pB,IAAK,CAAH0uE,UAAgB7lE,EAAA6jE,gBAAgB7jE,EAAA6gB,OAAO1pB,OAAE,G,yBAIvG6tD,EAAAA,GAAAA,IAkBSmY,EAAA,C,MAhBPjnC,MAAM,SACNh6B,IAAI,SACJkhE,QAAQ,oCACR1+D,MAAM,wDACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAA4jE,sBAAsB5jE,EAAA6gB,OAAO1pB,GAAE,kB,CAEpCgS,MAAIu0D,EAAAA,GAAAA,KACb,iBAEE,EAFFr6D,EAAAA,GAAAA,IAEE+hD,EAAA,CADAj8C,KAAK,sB,IAGE3L,MAAIkgE,EAAAA,GAAAA,KACb,iBAEO,EAFP59D,EAAAA,GAAAA,GAEO,aAAAmkD,EAAAA,GAAAA,IADFjkD,EAAA41D,IAAI,0BAA2B51D,EAAA6jE,gBAAgB7jE,EAAA6gB,OAAO1pB,IAAK,CAAH0uE,UAAgB7lE,EAAA6jE,gBAAgB7jE,EAAA6gB,OAAO1pB,IAAE8rE,MAAUjjE,EAAA8jE,gBAAgB9jE,EAAA6gB,OAAO1pB,OAAE,G,6CGrG3IuH,MAAM,gBACN44D,KAAK,Q,UAIHA,KAAK,S,sEA2CHA,KAAK,YACL54D,MAAM,oB,ipBCrDlBgL,GAAAA,GAAAA,IACEo8D,GAAAA,IACAC,GAAAA,IACAC,GAAAA,KA6DF,SA1D4B,CAC1BrnE,MAAO,CACL0/C,aAAcz9C,SAEhBN,WAAY,CACV2lE,QAAAA,GAAAA,SAEF/mE,QAAS,CACPgnE,mBAAkB,SAAEhjD,GAClB7jB,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,kBAAmBgF,MAAO6kB,IACpE7jB,KAAK0L,OAAOjR,SAAS,gBACvB,EACAqsE,QAAO,SAAEjf,GACP7nD,KAAK0L,OAAOjR,SAAS,uBAAwBotD,EAC/C,GAEFv/C,SAAQpP,GAAAA,GAAA,IACH2qD,EAAAA,EAAAA,IAAW,CAAC,kBAAgB,IAC/B7wB,SAAQ,WACN,QAAShzB,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACnC,EACAkzD,oBAAqB,CACnBl/B,IAAG,WAAM,MAA6C,SAAtC7nC,KAAK2T,aAAaof,eAA2B,EAC7D3B,IAAG,WAAMpxB,KAAK6mE,mBAAmB,OAAQ,GAE3CG,yBAA0B,CACxBn/B,IAAG,WAAM,MAA6C,cAAtC7nC,KAAK2T,aAAaof,eAAgC,EAClE3B,IAAG,WAAMpxB,KAAK6mE,mBAAmB,YAAa,GAEhDI,mBAAoB,CAClBp/B,IAAG,WAAM,MAA6C,QAAtC7nC,KAAK2T,aAAaof,eAA0B,EAC5D3B,IAAG,WAAMpxB,KAAK6mE,mBAAmB,MAAO,GAE1CK,UAAW,CACTr/B,IAAG,WAAM,OAAO7nC,KAAK2T,aAAawzD,iBAAmBnnE,KAAK2T,aAAayzD,qBAAsB,EAC7Fh2C,IAAG,WACD,IAAMpyB,GAASgB,KAAKknE,UACpBlnE,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,kBAAmBgF,MAAAA,IAC7DgB,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,wBAAyBgF,MAAAA,GACrE,GAEFmX,eAAgB,CACd0xB,IAAG,WAAM,OAAO7nC,KAAK2T,aAAauC,oBAAqB,EACvDkb,IAAG,WACD,IAAMpyB,GAASgB,KAAKmW,eACpBnW,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,uBAAwBgF,MAAAA,GACpE,GAEF0X,gBAAiB,CACfmxB,IAAG,WAAM,OAAO7nC,KAAK2T,aAAa+C,eAAgB,EAClD0a,IAAG,WACD,IAAMpyB,GAASgB,KAAK0W,gBACpB1W,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,kBAAmBgF,MAAAA,GAC/D,MCzDN,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0FFJzD2mD,EAAAA,GAAAA,IA4GU0hB,EAAA,CA3GRC,QAAQ,QACRjoE,MAAM,sBACL,WAAU,CAAA4yC,EAAA,aACV,gBAAa,CAAA7/B,MAAWzR,EAAA8L,GAAG,oC,CAEjB9M,SAAO0+D,EAAAA,GAAAA,KAChB,iBAgGM,EAhGN59D,EAAAA,GAAAA,GAgGM,MAhGND,GAgGM,CA3FIG,EAAAqyB,WAAQ,YADhBzyB,EAAAA,GAAAA,IAgDM,MAhDNokD,GAgDM,CA3CKhkD,EAAAq+C,cAUA,kBAVY,YADrBz+C,EAAAA,GAAAA,IAYS,U,MAVPlB,MAAM,+BACL,eAAcsB,EAAAsmE,mBACfhP,KAAK,gBACJn4D,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAsmE,oBAAqB,CAAH,I,EAE1BxmE,EAAAA,GAAAA,GAIE,QAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,uBAAsB,yBACO5oD,EAAAsmE,sBAClC,eAAa,G,4BACXtmE,EAAA8L,GAAG,kCAAD,WAGA9L,EAAAq+C,cAUA,kBAVY,YADrBz+C,EAAAA,GAAAA,IAYS,U,MAVPlB,MAAM,+BACL,eAAcsB,EAAAqmE,yBACf/O,KAAK,gBACJn4D,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAqmE,0BAA2B,CAAH,I,EAEhCvmE,EAAAA,GAAAA,GAIE,QAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,uBAAsB,yBACO5oD,EAAAqmE,4BAClC,eAAa,G,4BACXrmE,EAAA8L,GAAG,8CAAD,WAGA9L,EAAAq+C,cAUA,kBAVY,YADrBz+C,EAAAA,GAAAA,IAYS,U,MAVPlB,MAAM,+BACL,eAAcsB,EAAAomE,oBACf9O,KAAK,gBACJn4D,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAomE,qBAAsB,CAAH,I,EAE3BtmE,EAAAA,GAAAA,GAIE,QAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,uBAAsB,yBACO5oD,EAAAomE,uBAClC,eAAa,G,4BACXpmE,EAAA8L,GAAG,yCAAD,WAGA9L,EAAAq+C,cAGP,kBAHmB,YADrBz+C,EAAAA,GAAAA,IAIE,MAJF6lD,SAIE,iBAEJ3lD,EAAAA,GAAAA,GAWS,UAVPpB,MAAM,+BACN44D,KAAK,mBACJ,eAAct3D,EAAA+V,gBACd5W,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA+V,iBAAmB/V,EAAA+V,eAAe,I,EAE1CjW,EAAAA,GAAAA,GAIE,QAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAA+V,mBAClC,eAAa,G,4BACX/V,EAAA8L,GAAG,4BAAD,WAEThM,EAAAA,GAAAA,GAWS,UAVPpB,MAAM,+BACN44D,KAAK,mBACJ,eAAct3D,EAAAumE,UACdpnE,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAumE,WAAavmE,EAAAumE,SAAS,I,EAE9BzmE,EAAAA,GAAAA,GAIE,QAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAAumE,aAClC,eAAa,G,4BACXvmE,EAAA8L,GAAG,iCAAD,WAEThM,EAAAA,GAAAA,GAWS,UAVPpB,MAAM,+BACN44D,KAAK,mBACJ,eAAct3D,EAAAwV,eACdrW,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAwV,gBAAkBxV,EAAAwV,cAAc,I,EAExC1V,EAAAA,GAAAA,GAIE,QAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAAwV,kBAClC,eAAa,G,4BACXxV,EAAA8L,GAAG,kCAAD,WAEThM,EAAAA,GAAAA,GAMS,UALPpB,MAAM,kDACN44D,KAAK,WACJn4D,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAmmE,QAAQ,YAAD,I,EAEf9iE,EAAAA,GAAAA,IAAsB+hD,EAAA,CAAdj8C,KAAK,UAAM,mBAAMnJ,EAAA8L,GAAG,kCAAD,O,IAItB66D,SAAOjJ,EAAAA,GAAAA,KAChB,iBAAwB,EAAxBr6D,EAAAA,GAAAA,IAAwB+hD,EAAA,CAAhBj8C,KAAK,W,0CGlGXzK,MAAM,gBACN44D,KAAK,Q,IAEAA,KAAK,S,4CAgCVx3D,EAAAA,GAAAA,GAGE,OAFAw3D,KAAK,YACL54D,MAAM,oB,8oBCzChBgL,GAAAA,GAAAA,IACEwgD,GAAAA,IACA0c,GAAAA,IACA5N,GAAAA,IACAgN,GAAAA,KA2DF,SAxD0B,CACxBrnE,MAAO,CACL0/C,aAAcz9C,SAEhBN,WAAY,CACV2lE,QAAAA,GAAAA,SAEF/mE,QAAS,CACP2nE,uBAAsB,SAAE3jD,GACtB7jB,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,sBAAuBgF,MAAO6kB,GAC1E,EACAijD,QAAO,SAAEjf,GACP7nD,KAAK0L,OAAOjR,SAAS,uBAAwBotD,EAC/C,GAEFv/C,SAAQpP,GAAAA,GAAA,IACH2qD,EAAAA,EAAAA,IAAW,CAAC,kBAAgB,IAC/B7wB,SAAQ,WACN,QAAShzB,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACnC,EACA0E,oBAAqB,CACnBsvB,IAAG,WAAM,OAAO7nC,KAAK2T,aAAa4E,mBAAoB,EACtD6Y,IAAG,SAAE+8B,GAAUnuD,KAAKwnE,uBAAuBrZ,EAAQ,GAErDsZ,WAAY,CACV5/B,IAAG,WAAM,OAAO7nC,KAAK2T,aAAa+zD,SAAU,EAC5Ct2C,IAAG,WACD,IAAMpyB,GAASgB,KAAKynE,WACpBznE,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,YAAagF,MAAAA,GACzD,GAEF2oE,qBAAsB,CACpB9/B,IAAG,WAAM,OAAO7nC,KAAK2T,aAAa+B,0BAA2B,EAC7D0b,IAAG,WACD,IAAMpyB,GAASgB,KAAK2nE,qBACpB3nE,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,6BAA8BgF,MAAAA,GAC1E,GAEF4oE,gBAAiB,CACf//B,IAAG,WAAM,OAAO7nC,KAAK2T,aAAamC,qBAAsB,EACxDsb,IAAG,WACD,IAAMpyB,GAASgB,KAAK4nE,gBACpBrrD,QAAQ2I,IAAIlmB,GACZgB,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,wBAAyBgF,MAAAA,GACrE,GAEF0X,gBAAiB,CACfmxB,IAAG,WAAM,OAAO7nC,KAAK2T,aAAa+C,eAAgB,EAClD0a,IAAG,WACD,IAAMpyB,GAASgB,KAAK0W,gBACpB1W,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,kBAAmBgF,MAAAA,GAC/D,MCxDN,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0FFJzD2mD,EAAAA,GAAAA,IAiGU0hB,EAAA,CAhGRC,QAAQ,QACRjoE,MAAM,oBACL,WAAU,CAAA4yC,EAAA,aACV,gBAAa,CAAA7/B,MAAWzR,EAAA8L,GAAG,kC,CAEjB9M,SAAO0+D,EAAAA,GAAAA,KAChB,iBAqFM,EArFN59D,EAAAA,GAAAA,GAqFM,MArFND,GAqFM,EAjFJC,EAAAA,GAAAA,GA+BM,MA/BNkkD,GA+BM,EA9BJlkD,EAAAA,GAAAA,GAcS,UAbPpB,MAAM,+BACL,eAAsC,SAAxBsB,EAAA4X,oBACf0/C,KAAK,gBACJn4D,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA4X,oBAAsB,MAAH,I,EAE3B9X,EAAAA,GAAAA,GAIE,QAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,uBAAsB,yBAE+B,SAAxB5oD,EAAA4X,uBADlC,eAAa,G,SAEdvU,EAAAA,GAAAA,IAGA+hD,EAAA,CAFAj8C,KAAK,cACJ,eAAa,K,SACd,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,6CAAD,WAEVhM,EAAAA,GAAAA,GAcS,UAbPpB,MAAM,+BACL,eAAsC,WAAxBsB,EAAA4X,oBACf0/C,KAAK,gBACJn4D,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA4X,oBAAsB,QAAH,I,EAE3B9X,EAAAA,GAAAA,GAIE,QAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,uBAAsB,yBAC+B,WAAxB5oD,EAAA4X,uBAClC,eAAa,G,SACdvU,EAAAA,GAAAA,IAGA+hD,EAAA,CAFAj8C,KAAK,OACJ,eAAa,K,SACd,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,+CAAD,YAGZw4C,IAIAxkD,EAAAA,GAAAA,GAWS,UAVPpB,MAAM,+BACN44D,KAAK,mBACJ,eAAct3D,EAAAinE,gBACd9nE,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAinE,iBAAmBjnE,EAAAinE,eAAe,I,EAE1CnnE,EAAAA,GAAAA,GAIE,QAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAAinE,mBAClC,eAAa,G,4BACXjnE,EAAA8L,GAAG,4CAAD,UAGA9L,EAAAq+C,cAUA,kBAVY,YADrBz+C,EAAAA,GAAAA,IAYS,U,MAVPlB,MAAM,+BACN44D,KAAK,mBACJ,eAAct3D,EAAA8mE,WACd3nE,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA8mE,YAAc9mE,EAAA8mE,UAAU,I,EAEhChnE,EAAAA,GAAAA,GAIE,QAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAA8mE,cAClC,eAAa,G,4BACX9mE,EAAA8L,GAAG,yBAAD,WAGA9L,EAAAq+C,cAUA,kBAVY,YADrBz+C,EAAAA,GAAAA,IAYS,U,MAVPlB,MAAM,+BACN44D,KAAK,mBACJ,eAAct3D,EAAAgnE,qBACd7nE,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAgnE,sBAAwBhnE,EAAAgnE,oBAAoB,I,EAEpDlnE,EAAAA,GAAAA,GAIE,QAHApB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAAgnE,wBAClC,eAAa,G,4BACXhnE,EAAA8L,GAAG,8BAAD,YAEThM,EAAAA,GAAAA,GAMS,UALPpB,MAAM,kDACN44D,KAAK,WACJn4D,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAmmE,QAAQ,UAAD,I,EAEf9iE,EAAAA,GAAAA,IAAwB+hD,EAAA,CAAhBj8C,KAAK,YAAQ,mBAAMnJ,EAAA8L,GAAG,2BAAD,O,IAIxB66D,SAAOjJ,EAAAA,GAAAA,KAChB,iBAAsB,EAAtBr6D,EAAAA,GAAAA,IAAsB+hD,EAAA,CAAdj8C,KAAK,S,2mBGjFnBO,GAAAA,GAAAA,IACEq5D,GAAAA,IACAmE,GAAAA,IACAjU,GAAAA,KAGF,IAAMjyC,GAAW,SAACtnB,EAAGC,GACnB,IAAMwtE,EAAiB,YAAXztE,EAAEoF,KAAqBpF,EAAE8pB,iBAAiBrsB,GAAKuC,EAAEvC,GACvDiwE,EAAiB,YAAXztE,EAAEmF,KAAqBnF,EAAE6pB,iBAAiBrsB,GAAKwC,EAAExC,GACvD8pB,EAAO5B,OAAO8nD,GACdjmD,EAAO7B,OAAO+nD,GACdjmD,GAAU9B,OAAO+B,MAAMH,GACvBI,GAAUhC,OAAO+B,MAAMF,GAC7B,OAAIC,GAAUE,EACLJ,EAAOC,GAAQ,EAAI,EACjBC,IAAWE,GACZ,GACEF,GAAUE,EACb,EAEA8lD,EAAMC,GAAO,EAAI,CAE5B,EAsgBA,SAxfqB,CACnB3vE,KAAI,WACF,MAAO,CACLqkC,UAAW,KACXurC,UAAU,EACVC,0BAA2B,CAAC,EAC5BC,8BAA+B,CAAC,EAChCC,mBAAoB,KAExB,EACA7oE,MAAO,CACL,WACA,cACA,SACA,wBACA,YACA,gBACA,iBAEF8L,QAAO,WACDpL,KAAKooE,QACPpoE,KAAKqoE,mBAET,EACA//D,SAAQpP,GAAAA,GAAA,CACNovE,wBAAuB,WAIrB,IAAMC,EAAWvoE,KAAK0L,OAAOoP,QAAQnH,aAAagF,iBAAmB,EACrE,OAAO4vD,GAAY,EAAIA,EAAW,CACpC,EACAC,iBAAgB,WACd,OAAOxoE,KAAK2T,aAAaovB,iBAAmB/iC,KAAKkkC,wBAA0BqB,EAAAA,GAAAA,MAC7E,EACAkjC,aAAY,WACV,OAAOzoE,KAAK0L,OAAOoP,QAAQnH,aAAa4E,mBAC1C,EACAmwD,WAAU,WACR,OAAQ1oE,KAAK2oE,YACf,EACAC,iBAAgB,WACd,OAAQ5oE,KAAK0L,OAAOoP,QAAQnH,aAAa6E,wBAC3C,EACAmwD,aAAY,WACV,MAA6B,WAAtB3oE,KAAKyoE,YACd,EACAI,oBAAmB,WACjB,OAAO7oE,KAAK0L,OAAOoP,QAAQnH,aAAa+E,6BAC1C,EACAowD,2BAA0B,WACxB,OAAO9oE,KAAK0L,OAAOoP,QAAQnH,aAAa8E,8BAC1C,EACAswD,kCAAiC,WAC/B,MAA2C,UAApC/oE,KAAK8oE,0BACd,EACAE,mCAAkC,WAChC,MAA2C,WAApChpE,KAAK8oE,0BACd,EACAhE,YAAW,WACT,OAAI9kE,KAAK0oE,WACAzwE,OAAOkT,QAAQnL,KAAK0kE,yBACxBn9D,OAAM,SAAA/M,GAAA,IAAAa,GAAAqC,EAAAA,EAAAA,GAAAlD,EAAA,GAAKyuE,GAAF5tE,EAAA,GAAMA,EAAA,WAAO4tE,EAAK/C,UAAyC,IAA7B+C,EAAK9C,aAAa1sE,MAAY,KAEtEuG,KAAKoJ,MAAM47D,kBAAmBhlE,KAAKoJ,MAAM47D,gBAAgB,IACpDhlE,KAAKoJ,MAAM47D,gBAAgBz9D,OAAM,SAAA1I,GAAC,OAAIA,EAAEimE,WAAW,GAI9D,EACAoE,WAAU,WACR,OAAOlpE,KAAKmpE,eAAiBnpE,KAAK8kE,WACpC,EACAtjD,OAAM,WACJ,OAAOxhB,KAAK0L,OAAOhR,MAAMwkB,SAASmB,kBAAkBrgB,KAAKgc,SAC3D,EACAotD,iBAAgB,WACd,OAAIppE,KAAKwhB,OAAO2C,iBACPnkB,KAAKwhB,OAAO2C,iBAAiBrsB,GAE7BkI,KAAKgc,QAEhB,EACAqG,eAAc,WACZ,OAAOriB,KAAKqpE,kBAAkBrpE,KAAKgc,SACrC,EACAgjC,aAAY,WACV,IAAKh/C,KAAKwhB,OACR,MAAO,GAGT,IAAKxhB,KAAK+jE,WACR,MAAO,CAAC/jE,KAAKwhB,QAGf,IAAMw9B,EAAesqB,KAAMtpE,KAAK0L,OAAOhR,MAAMwkB,SAASoB,oBAAoBtgB,KAAKqiB,iBACzEknD,EAAc7iD,IAAUs4B,EAAc,CAAElnD,GAAIkI,KAAKopE,mBAKvD,OAJqB,IAAjBG,IACFvqB,EAAauqB,GAAevpE,KAAKwhB,QA9GP,SAACw9B,EAAcwf,GAS/C,OAPExf,EADqB,YAAnBwf,EAAU/+D,KACG+pE,KACbxqB,GACA,SAACx9B,GAAM,MAAsB,YAAhBA,EAAO/hB,MAAsB+hB,EAAO1pB,KAAO0mE,EAAUr6C,iBAAiBrsB,EAAE,IAGxE0xE,KAAOxqB,GAAc,SAACx9B,GAAM,MAAqB,YAAhBA,EAAO/hB,IAAkB,KAEvDtG,QAAO,SAAA0O,GAAC,OAAIA,CAAC,IAAEzN,KAAKunB,GAC1C,CAuGa8nD,CAA0BzqB,EAAch/C,KAAKwhB,OACtD,EACAkoD,UAAS,WACP,OAAO1pE,KAAKg/C,aAAalqC,QAAO,SAACV,EAAKvV,GAEpC,OADAuV,EAAIvV,EAAE/G,IAAM+G,EACLuV,CACT,GAAG,CAAC,EACN,EACAu1D,WAAU,WAAI,IAAAjoE,EAAA,KACNwjE,EAAqBllE,KAAKg/C,aAAalqC,QAAO,SAACqwD,EAAO3jD,EAAQ5d,GAElE,OADAuhE,EAAM3jD,EAAO1pB,IAAM8L,EACZuhE,CACT,GAAG,CAAC,GAyBEyE,EAbO,SAAPC,EAAQC,EAAQC,GAAQ,IAAEnG,EAAKjnE,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,EAAGqtE,EAASrtE,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OAAKotE,EAAS7yE,KAAI,SAAAY,GACzE,OAAIkyE,EAAUlyE,GACL,IAGTkyE,EAAUlyE,IAAM,EACT,CAAC,CACN0pB,OAAQ9f,EAAKs9C,aAAakmB,EAAmBptE,IAC7CA,GAAAA,EACA8rE,MAAAA,GACCiG,EAAKC,EAAQA,EAAOhyE,GAAK8rE,EAAQ,EAAGoG,IAAYl1D,QAAO,SAACza,EAAGC,GAAC,OAAKD,EAAEhB,OAAOiB,EAAE,GAAE,IACnF,IAAGwa,QAAO,SAACza,EAAGC,GAAC,OAAKD,EAAEhB,OAAOiB,EAAE,GAAE,GAAG,CAEjBuvE,CAvBH7pE,KAAKg/C,aAAalqC,QAAO,SAACza,EAAG2a,GAC3C,IAAMld,EAAKkd,EAAIld,GAIf,OAHAuC,EAAEyvE,OAAOhyE,GAAM4J,EAAKwiE,WAAWpsE,GAC5BZ,KAAI,SAAA2H,GAAC,OAAIA,EAAE/G,EAAE,IAETuC,CACT,GAAG,CACDyvE,OAAQ,CAAC,IAgBqBA,OAAQ9pE,KAAK+pE,SAAS7yE,KAAI,SAAAwC,GAAC,OAAIA,EAAE5B,EAAE,KAEnE,OAAO8xE,CACT,EACAK,SAAQ,WAAI,IAAAthE,EAAA,KACV,OAAO3I,KAAKg/C,aAAa9nD,KAAI,SAAAwC,GAAC,OAAIA,EAAE5B,EAAE,IACnCgd,QAAO,SAACV,EAAKtc,GAEZ,OADAsc,EAAItc,IAAO6Q,EAAKm9D,QAAQhuE,IAAO,IAAIZ,KAAI,SAAAwC,GAAC,OAAIA,EAAE5B,EAAE,IACzCsc,CACT,GAAG,CAAC,EACR,EACAowD,gBAAe,WAAI,IAAAx7D,EAAA,KACXkhE,EAAQ,CAAC,EASf,OADAlqE,KAAKg/C,aAAa9nD,KAAI,SAAAwC,GAAC,OAAIA,EAAE5B,EAAE,IAAEZ,KAPV,SAAjBizE,EAAkBryE,GACtB,OAAIoyE,EAAMpyE,KAGVoyE,EAAMpyE,GAAM,EAAIkR,EAAKihE,SAASnyE,GAAIZ,KAAI,SAAAkzE,GAAG,OAAID,EAAeC,EAAI,IAAEt1D,QAAO,SAACza,EAAGC,GAAC,OAAKD,EAAIC,CAAC,GAAE,IAFjF4vE,EAAMpyE,EAIjB,IAEOG,OAAOD,KAAKkyE,GAAOp1D,QAAO,SAACV,EAAKtc,GAErC,OADAsc,EAAItc,GAAMoyE,EAAMpyE,GAAM,EACfsc,CACT,GAAG,CAAC,EACN,EACAqwD,gBAAe,WAAI,IAAAl7D,EAAA,KACX8gE,EAAS,CAAC,EAShB,OADArqE,KAAKg/C,aAAa9nD,KAAI,SAAAwC,GAAC,OAAIA,EAAE5B,EAAE,IAAEZ,KAPT,SAAlBozE,EAAmBxyE,GACvB,OAAIuyE,EAAOvyE,KAGXuyE,EAAOvyE,GAAM,EAAIyR,EAAK0gE,SAASnyE,GAAIZ,KAAI,SAAAkzE,GAAG,OAAIE,EAAgBF,EAAI,IAAEt1D,QAAO,SAACza,EAAGC,GAAC,OAAKD,EAAIC,EAAID,EAAIC,CAAC,GAAE,IAF3F+vE,EAAOvyE,EAIlB,IAEOG,OAAOD,KAAKqyE,GAAQv1D,QAAO,SAACV,EAAKtc,GAEtC,OADAsc,EAAItc,GAAMuyE,EAAOvyE,GAAM,EAChBsc,CACT,GAAG,CAAC,EACN,EACAi2D,OAAM,WACJ,OAAOrqE,KAAK2pE,WAAW70D,QAAO,SAACza,EAAGX,GAEhC,OADAW,EAAEX,EAAE5B,IAAM4B,EAAEkqE,MACLvpE,CACT,GAAG,CAAC,EACN,EACA0vE,SAAQ,WAAI,IAAAQ,EAAA,KAGV,OAFiBvqE,KAAKg/C,aAAalqC,QAAO,SAAC01D,EAAIx1D,GAAG,OAChDw1D,EAAGrxE,QAAO,SAAAO,GAAC,OAA8D,IAA1D6wE,EAAKrG,WAAWlvD,EAAIld,IAAIZ,KAAI,SAAA2G,GAAC,OAAIA,EAAE/F,EAAE,IAAEsjC,QAAQ1hC,EAAE5B,GAAU,GAAC,GAAEkI,KAAKg/C,aAEtF,EACAyrB,mBAAkB,WAChB,OAAOzqE,KAAK+pE,SAAStwE,OAAS,CAChC,EACAixE,gBAAe,WACb,OAAI1qE,KAAK2qE,SAAW3qE,KAAK4qE,SAChB,CAAC5qE,KAAK0pE,UAAU1pE,KAAK4qE,WAEvB5qE,KAAK+pE,QACd,EACAa,SAAQ,WACN,IAAM5uD,EAAWhc,KAAKmoE,oBAAsBnoE,KAAKgc,SAEjD,OADoBhc,KAAK6qE,SAAS7uD,GACPA,EAAP,IACtB,EACA8uD,UAAS,WACP,OAAO9qE,KAAK2qE,SAAW3qE,KAAK4qE,SAAW5qE,KAAKqqE,OAAOrqE,KAAK4qE,UAAY,CACtE,EACAG,SAAQ,WACN,OAAO/qE,KAAK2qE,WAAa3qE,KAAK4qE,QAChC,EACAI,gCAA+B,WAG7B,OAAOhrE,KAAK0oE,YAAc1oE,KAAK+jE,YAAc/jE,KAAK+qE,UAAY/qE,KAAK+pE,SAAStwE,OAAS,CACvF,EACAwxE,oBAAmB,WACjB,OAAOjrE,KAAK0oE,YAAc1oE,KAAK+jE,YAAc/jE,KAAKkrE,YAAYlrE,KAAK4qE,UAAUnxE,MAC/E,EACAqsE,QAAO,WACL,IAAIvnE,EAAI,EAER,OAAOw4B,KAAO/2B,KAAKg/C,cAAc,SAACliD,EAAMa,GAAoC,IAAhC7F,EAAE6F,EAAF7F,GAEpCqzE,EAF6DxtE,EAArB4mB,sBAY9C,OARI4mD,IACFruE,EAAOquE,GAAQruE,EAAOquE,IAAS,GAC/BruE,EAAOquE,GAAM/rE,KAAK,CAChBpF,KAAM,IAAFX,OAAMkF,GACVzG,GAAAA,KAGJyG,IACOzB,CACT,GAAG,CAAC,EACN,EACAinE,WAAU,WACR,SAAU/jE,KAAKgoE,WAAYhoE,KAAKooE,OAClC,EACAgD,YAAW,WACT,IAAMl/D,EAAUlM,KAAKwhB,QAAUxhB,KAAKwhB,OAAOmJ,eAAkB,QAC7D,OAAO3qB,KAAKmpE,cAAgB,CAAEj9D,OAAAA,GAAW,CAAC,CAC5C,EACAo4D,oBAAmB,WAAI,IAAA+G,EAAA,KACrB,OAAOrrE,KAAKg/C,aAAalqC,QAAO,SAACza,EAAGX,GAClC,IAAM5B,EAAK4B,EAAE5B,GACP8rE,EAAQyH,EAAKhB,OAAOvyE,GACpB0pB,EACA6pD,EAAKpD,0BAA0BnwE,GAC1BuzE,EAAKpD,0BAA0BnwE,GAEnC8rE,EAAQyH,EAAKP,WAAcO,EAAK/C,wBAC5B,UAEA,SAKX,OADAjuE,EAAEvC,GAAM0pB,EACDnnB,CACT,GAAG,CAAC,EACN,EACAqqE,wBAAuB,WAAI,IAAA4G,EAAA,KACzB,OAAOtrE,KAAKg/C,aAAalqC,QAAO,SAACza,EAAGX,GAClC,IAEQ6xE,EAFFzzE,EAAK4B,EAAE5B,GACPwH,GACEisE,EAAM,CACVxF,aAAa,EACbC,kBAAkB,EAClBC,oBAAoB,EACpBuF,YAAY,EACZrF,aAAc,IAGZmF,EAAKpD,8BAA8BpwE,GACrCoB,GAAAA,GAAA,GACKqyE,GACAD,EAAKpD,8BAA8BpwE,IAGnCyzE,GAIT,OADAlxE,EAAEvC,GAAMwH,EACDjF,CACT,GAAG,CAAC,EACN,EACAswE,QAAO,WACL,OAAO3qE,KAAK0oE,YAAc1oE,KAAK+jE,UACjC,EACAxF,QAAO,WAAI,IAAAkN,EAAA,KACT,OAAO,SAAC3zE,GACN,OAAQ2zE,EAAK1H,YAAejsE,IAAO2zE,EAAKhvC,SAC1C,CACF,EACAivC,eAAc,WACZ,OAAO1rE,KAAK+jE,WAAa/jE,KAAKy8B,UAAY,IAC5C,IACGonB,EAAAA,EAAAA,IAAW,CAAC,mBACZD,EAAAA,EAAAA,IAAS,CACV1f,sBAAuB,SAAAxpC,GAAK,OAAIA,EAAM+wB,IAAIyY,qBAAqB,KAGnEjjC,WAAY,CACV67D,OAAAA,GAAAA,QACA6O,WAAAA,GACAC,oBAAAA,GACAC,kBAAAA,IAEFje,MAAO,CACL5xC,SAAQ,SAAEmyC,EAAQyQ,GAChB,IAAMkN,EAAoB9rE,KAAKqpE,kBAAkBlb,GAC3C4d,EAAoB/rE,KAAKqpE,kBAAkBzK,GAC7CkN,GAAqBC,GAAqBD,IAAsBC,EAClE/rE,KAAKmkE,aAAankE,KAAKopE,kBAEvBppE,KAAKqoE,mBAET,EACAL,SAAQ,SAAEhpE,GACJA,EACFgB,KAAKqoE,oBAELroE,KAAKgsE,mBAET,EACA7C,cAAa,SAAEnqE,GACbgB,KAAK0L,OAAOjR,SACV,mBACA,CAAEuhB,SAAUhc,KAAKgc,SAAU9P,OAAQ,GAAF7S,OAAK2G,KAAKoM,IAAImpB,aAAY,OAE/D,GAEF11B,QAAS,CACPwoE,kBAAiB,WAAI,IAAA4D,EAAA,KACfjsE,KAAKwhB,OACPxhB,KAAK0L,OAAOhR,MAAM+wB,IAAIC,kBAAkB28C,kBAAkB,CAAEvwE,GAAIkI,KAAKgc,WAClEvkB,MAAK,SAAAmG,GAAgC,IAA7BsuE,EAAStuE,EAATsuE,UAAWC,EAAWvuE,EAAXuuE,YAClBF,EAAKvgE,OAAOjR,SAAS,iBAAkB,CAAEykB,SAAUgtD,IACnDD,EAAKvgE,OAAOjR,SAAS,iBAAkB,CAAEykB,SAAUitD,IACnDF,EAAK9H,aAAa8H,EAAK7C,iBACzB,IAEFppE,KAAK0L,OAAOhR,MAAM+wB,IAAIC,kBAAkBH,YAAY,CAAEzzB,GAAIkI,KAAKgc,WAC5DvkB,MAAK,SAAC+pB,GACLyqD,EAAKvgE,OAAOjR,SAAS,iBAAkB,CAAEykB,SAAU,CAACsC,KACpDyqD,EAAK5D,mBACP,GAEN,EACAnE,WAAU,SAAEpsE,GACV,OAAOkI,KAAK8lE,QAAQhuE,IAAO,EAC7B,EACAs0E,aAAY,WACV,OAAOpsE,KAAK+jE,WAAa/jE,KAAKy8B,UAAY,IAC5C,EACA0nC,aAAY,SAAErsE,GACPA,IACLkI,KAAKy8B,UAAY3kC,EAEZkI,KAAKwoE,kBACRxoE,KAAK0L,OAAOjR,SAAS,cAAe3C,GAGtCkI,KAAK0L,OAAOjR,SAAS,sBAAuB3C,GAC5CkI,KAAK0L,OAAOjR,SAAS,wBAAyB3C,GAChD,EACAssE,eAAc,WACZpkE,KAAKgoE,UAAYhoE,KAAKgoE,QACxB,EACAqB,kBAAiB,SAAErtD,GACjB,IAAMwF,EAASxhB,KAAK0L,OAAOhR,MAAMwkB,SAASmB,kBAAkBrE,GAC5D,OAAO6sB,KAAIrnB,EAAQ,6CAA8CqnB,KAAIrnB,EAAQ,6BAC/E,EACA6qD,iBAAgB,SAAEv0E,EAAIw0E,GACpBtsE,KAAKioE,0BAAyB/uE,GAAAA,GAAA,GACzB8G,KAAKioE,2BAAyB,IAAAz7D,EAAAA,EAAAA,GAAA,GAChC1U,EAAKw0E,GAEV,EACAjI,oBAAmB,SAAEvsE,GACnB,IACMw0E,EAA2B,YADftsE,KAAKskE,oBAAoBxsE,GACE,SAAW,UACxDkI,KAAKqsE,iBAAiBv0E,EAAIw0E,EAC5B,EACAC,4BAA2B,SAAEz0E,EAAIw0E,GAAY,IAAAE,EAAA,KAC3CxsE,KAAKqsE,iBAAiBv0E,EAAIw0E,GAC1BtsE,KAAKkkE,WAAWpsE,GAAIZ,KAAI,SAAAwC,GAAC,OAAIA,EAAE5B,EAAE,IAAEZ,KAAI,SAAAY,GAAE,OAAI00E,EAAKD,4BAA4Bz0E,EAAIw0E,EAAW,GAC/F,EACA/H,sBAAqB,SAAEzsE,GACrBkI,KAAKusE,4BAA4Bz0E,EAAI,UACvC,EACA6sE,yBAAwB,SAAE7sE,EAAIkC,EAAMgF,GAClCgB,KAAKkoE,8BAA6BhvE,GAAAA,GAAA,GAC7B8G,KAAKkoE,+BAA6B,IAAA17D,EAAAA,EAAAA,GAAA,GACpC1U,EAAEoB,GAAAA,GAAA,GACE8G,KAAKkoE,8BAA8BpwE,IAAG,IAAA0U,EAAAA,EAAAA,GAAA,GACxCxS,EAAOgF,KAGd,EACA4lE,4BAA2B,SAAE9sE,EAAIkC,GAC/BgG,KAAK2kE,yBAAyB7sE,EAAIkC,GAAOgG,KAAK0kE,wBAAwB5sE,GAAIkC,GAC5E,EACAyyE,qBAAoB,SAAE30E,GAGpB,IAFA,IAAIkd,EAAMld,EACNo5C,EAASlxC,KAAK6qE,SAAS71D,GACpBA,GAAK,CAEV,GAAyC,YAArChV,KAAKskE,oBAAoBpzB,GAC3B,OAAOl8B,EAETk8B,EAASlxC,KAAK6qE,SAAS35B,GACvBl8B,EAAMhV,KAAK6qE,SAAS71D,EACtB,CAEA,OAAOhV,KAAK+pE,SAAS,GAAK/pE,KAAK+pE,SAAS,GAAGjyE,QAAKyK,CAClD,EACAmqE,eAAc,SAAE50E,EAAI60E,GAClB3sE,KAAK4sE,YAAY90E,EACnB,EACA+0E,eAAc,WACZ7sE,KAAK4sE,YAAY5sE,KAAK8sE,yBAAyB9sE,KAAK4qE,WAAa5qE,KAAK+pE,SAAS,GAAGjyE,GACpF,EAEAi1E,OAAM,WACJ/sE,KAAKmoE,mBAAqB,KAC1BnoE,KAAKmkE,aAAankE,KAAKgc,SACzB,EACA4wD,YAAW,SAAE90E,GAAI,IAAAk1E,EAAA,KACVl1E,IAGDkI,KAAKooE,OAEPpoE,KAAKI,QAAQhB,KAAK,CAAEpF,KAAM,eAAgBkoC,OAAQ,CAAEpqC,GAAAA,KAEpDkI,KAAKmoE,mBAAqBrwE,EAiB5BkI,KAAKuuD,WAAU,WACbye,EAAK7I,aAAarsE,EACpB,IACF,EACAm1E,YAAW,WACTjtE,KAAK4sE,YAAY5sE,KAAK4qE,UAAY5qE,KAAK+pE,SAAS,GAAGjyE,GACrD,EACAutE,WAAU,SAAEvtE,GACV,OAAOkI,KAAK0pE,UAAU5xE,EACxB,EACA+yE,SAAQ,SAAE/yE,GACR,IAAM0pB,EAASxhB,KAAKqlE,WAAWvtE,GAC/B,GAAK0pB,EAAL,CAGA,IAA+B0rD,EAAa1rD,EAApC+C,sBACR,GAAKvkB,KAAK0pE,UAAUwD,GAGpB,OAAOA,CALP,CAMF,EACAC,aAAY,SAAEr1E,GACZ,OAAOkI,KAAK6qE,SAAS/yE,IAAOA,CAC9B,EAEAozE,YAAW,SAAEpzE,GAGX,IAFA,IAAMo0E,EAAY,GACdl3D,EAAMhV,KAAK6qE,SAAS/yE,GACjBkd,GACLk3D,EAAU/kE,QAAQnH,KAAK0pE,UAAU10D,IACjCA,EAAMhV,KAAK6qE,SAAS71D,GAEtB,OAAOk3D,CACT,EACAY,yBAAwB,SAAEh1E,GAGxB,IAFA,IAAIkd,EAAMld,EACNo5C,EAASlxC,KAAK6qE,SAAS/yE,GACpBo5C,GACLl8B,EAAMhV,KAAK6qE,SAAS71D,GACpBk8B,EAASlxC,KAAK6qE,SAAS35B,GAEzB,OAAOl8B,CACT,EACAg3D,kBAAiB,WACfhsE,KAAK+sE,SACL/sE,KAAKioE,0BAA4B,CAAC,CACpC,IC9hBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,kMXLhDtnE,EAAAuoE,a,YAyMT3oE,EAAAA,GAAAA,IAGE,O,MADCy3D,OAAK2E,EAAAA,GAAAA,IAAEh8D,EAAAyqE,c,WA3MS,YADnB7qE,EAAAA,GAAAA,IAyMM,O,MAvMHy3D,OAAK2E,EAAAA,GAAAA,IAAEh8D,EAAAyqE,aACR/rE,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,eAAc,aACI5oD,EAAAojE,WAAU,MAAYpjE,EAAAojE,e,CAGtCpjE,EAAAojE,aAAU,YADlBxjE,EAAAA,GAAAA,IAsBM,MAtBNC,GAsBM,EAlBJC,EAAAA,GAAAA,GAA8D,OAA9DkkD,IAA8DC,EAAAA,GAAAA,IAAtCjkD,EAAA8L,GAAG,0BAAD,GAElB9L,EAAAmjE,cAAW,YADnBvjE,EAAAA,GAAAA,IAMS,U,MAJPlB,MAAM,wBACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAyjE,gBAAAzjE,EAAAyjE,eAAAtqE,MAAA6G,EAAAhE,UAAc,mB,SAE3BgE,EAAA8L,GAAG,sBAAD,qBAGE9L,EAAAmjE,a,kBAAW,YADpBne,EAAAA,GAAAA,IAIEynB,EAAA,C,MAFCpuB,cAAc,EACf3/C,MAAM,sBAGCsB,EAAAmjE,a,kBAAW,YADpBne,EAAAA,GAAAA,IAIE0nB,EAAA,C,MAFCruB,cAAc,EACf3/C,MAAM,0B,iBAGVoB,EAAAA,GAAAA,GA2KM,MA3KNokD,GA2KM,CAzKIlkD,EAAA+nE,aAAU,YADlBnoE,EAAAA,GAAAA,IAsIM,MAtINykD,GAsIM,CAjIIrkD,EAAAqqE,kCAA+B,YADvCzqE,EAAAA,GAAAA,IAsBM,MAtBN0kD,GAsBM,EAlBJjhD,EAAAA,GAAAA,IAiBS85D,EAAA,CAhBPC,QAAQ,yCACRlhE,IAAI,SACJwC,MAAM,wBACNw3B,MAAM,SACL/2B,SAAKgB,EAAAA,GAAAA,IAAUH,EAAAksE,eAAc,c,CAEnB/iE,MAAIu0D,EAAAA,GAAAA,KACb,iBAEE,EAFFr6D,EAAAA,GAAAA,IAEE+hD,EAAA,CADAj8C,KAAK,sB,IAGE3L,MAAIkgE,EAAAA,GAAAA,KACb,iBAEO,EAFP59D,EAAAA,GAAAA,GAEO,aAAAmkD,EAAAA,GAAAA,IADFjkD,EAAA41D,IAAI,+BAAgC51D,EAAA8pE,mBAAoB,CAAFjE,UAAe7lE,EAAA8pE,sBAAkB,G,4CAM1F9pE,EAAAsqE,sBAAmB,YAD3B1qE,EAAAA,GAAAA,IA2EM,MA3EN6lD,GA2EM,iBAvEJ7lD,EAAAA,GAAAA,IAsEUwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IArESxpD,EAAAuqE,YAAYvqE,EAAAiqE,WAAQ,SAA9BppD,G,mBADTjhB,EAAAA,GAAAA,IAsEU,WApEPkI,IAAK+Y,EAAO1pB,GACbuH,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,kBAAiB,qCACuB5oD,EAAAujE,WAAW1iD,EAAO1pB,IAAI2B,OAAS,EAAH,SAAgBkH,EAAAkoE,wB,EAE1F7kE,EAAAA,GAAAA,IAoCE27D,EAAA,C,WAnCA9uB,IAAI,kBACH,kBAAiBlwC,EAAAmjE,aAAenjE,EAAAojE,WAChCvF,UAAWh9C,EACXqkD,YAAallE,EAAAojE,WACb,cAAapjE,EAAAqjE,uBAAyBrjE,EAAAqjE,sBAAsBxiD,EAAO1pB,IACnEymE,QAAS59D,EAAA49D,QAAQ/8C,EAAO1pB,IACxB,kBAAiB6I,EAAAojE,WACjBtnC,UAAW97B,EAAAyrE,eACXtG,QAASnlE,EAAAujE,WAAW1iD,EAAO1pB,IAC3B,aAAY6I,EAAAkjE,UACZ,kBAAiBljE,EAAAsjE,cAClB5kE,MAAM,+CAEL,cAAasB,EAAAioE,iBACb,wBAAuBjoE,EAAA0jE,oBACvB,wBAAuB1jE,EAAA2jE,oBACvB,0BAAyB3jE,EAAA4jE,sBACzB,oBAAmB5jE,EAAA6jE,gBACnB,oBAAmB7jE,EAAA8jE,gBACnB,+BAA8B9jE,EAAAqoE,mCAC9BnE,KAAI,kBAAQlkE,EAAA+rE,eAAelrD,EAAO1pB,GAAE,EAEpC,0BAAyB6I,EAAA+jE,wBAAwBljD,EAAO1pB,IAAIiuE,YAC5D,+BAA8BplE,EAAA+jE,wBAAwBljD,EAAO1pB,IAAIkuE,iBACjE,kCAAiCrlE,EAAA+jE,wBAAwBljD,EAAO1pB,IAAImuE,mBACpE,sBAAqBtlE,EAAA+jE,wBAAwBljD,EAAO1pB,IAAIouE,SACxD,2BAA0BvlE,EAAA+jE,wBAAwBljD,EAAO1pB,IAAIquE,aAC7D,iCAA8B,kBAAQxlE,EAAAikE,4BAA4BpjD,EAAO1pB,GAAI,cAAF,EAC3E,sCAAmC,kBAAQ6I,EAAAikE,4BAA4BpjD,EAAO1pB,GAAI,mBAAF,EAChF,yCAAsC,kBAAQ6I,EAAAikE,4BAA4BpjD,EAAO1pB,GAAI,qBAAF,EACnF,6BAA0B,kBAAQ6I,EAAAikE,4BAA4BpjD,EAAO1pB,GAAI,WAAF,EACvE,+BAA4B,SAAGq2D,GAAM,OAAKxtD,EAAAikE,4BAA4BpjD,EAAO1pB,GAAI,eAAgBq2D,EAAM,EAEvGiY,OAAMzlE,EAAAwjE,aACNkC,iBAAgB1lE,EAAAyjE,gB,8oBAGXzjE,EAAAooE,mCAAqCpoE,EAAAujE,WAAW1iD,EAAO1pB,IAAI2B,OAAS,IAAH,YADzE8G,EAAAA,GAAAA,IA0BM,MA1BN6kD,GA0BM,EAtBJ3kD,EAAAA,GAAAA,GAqBM,MArBN4kD,GAqBM,EAlBJrhD,EAAAA,GAAAA,IAiBS85D,EAAA,CAhBPjhE,IAAI,SACJg6B,MAAM,SACNknC,QAAQ,mCACR1+D,MAAM,wDACLS,SAAKgB,EAAAA,GAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAA+rE,eAAelrD,EAAO1pB,GAAE,iB,CAE7BgS,MAAIu0D,EAAAA,GAAAA,KACb,iBAEE,EAFFr6D,EAAAA,GAAAA,IAEE+hD,EAAA,CADAj8C,KAAK,uB,IAGE3L,MAAIkgE,EAAAA,GAAAA,KACb,iBAEO,EAFP59D,EAAAA,GAAAA,GAEO,aAAAmkD,EAAAA,GAAAA,IADFjkD,EAAA41D,IAAI,yBAA0B51D,EAAAujE,WAAW1iD,EAAO1pB,IAAI2B,OAAS,EAAG,CAAN6zE,WAAoB3sE,EAAAujE,WAAW1iD,EAAO1pB,IAAI2B,OAAS,KAAH,G,kGAQ3H8G,EAAAA,GAAAA,IA8BEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IA7BiBxpD,EAAA+pE,iBAAe,SAAzBlpD,G,mBADTmkC,EAAAA,GAAAA,IA8BE4gB,EAAA,CA5BC99D,IAAK+Y,EAAO1pB,G,WACb+4C,IAAI,kBACH+yB,MAAO,EAEPpiD,OAAQA,EACR,aAAY7gB,EAAAkjE,UACZ7kB,aAAcr+C,EAAAq+C,aACd8kB,YAAanjE,EAAAmjE,YACb,cAAanjE,EAAAojE,WACb,2BAA0BpjE,EAAAqjE,sBAC1B,kBAAiBrjE,EAAAsjE,cAEjB1F,QAAS59D,EAAA49D,QACT,cAAa59D,EAAAujE,WACbznC,UAAW97B,EAAA+qE,eACX,gBAAe/qE,EAAAwjE,aACf,kBAAiBxjE,EAAAyjE,eAEjBz6B,OAAQhpC,EAAAioE,iBACR,wBAAuBjoE,EAAA0jE,oBACvB,wBAAuB1jE,EAAA2jE,oBACvB,0BAAyB3jE,EAAA4jE,sBACzB,oBAAmB5jE,EAAA6jE,gBACnB,oBAAmB7jE,EAAA8jE,gBACnB,4BAA2B9jE,EAAA+jE,wBAC3B,8BAA6B/jE,EAAAgkE,yBAC7B,iCAAgChkE,EAAAikE,4BAChCC,KAAMlkE,EAAAgqE,QAAUhqE,EAAA+rE,oBAAiBnqE,G,wbAI9B5B,EAAAgoE,eAAY,YADpBpoE,EAAAA,GAAAA,IAkCM,MAlCN8lD,GAkCM,EA9BJ5lD,EAAAA,GAAAA,GA6BU,gCA5BRF,EAAAA,GAAAA,IA2BEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IA1BiBxpD,EAAAq+C,cAAY,SAAtBx9B,G,mBADTmkC,EAAAA,GAAAA,IA2BEga,EAAA,CAzBCl3D,IAAK+Y,EAAO1pB,G,WACb+4C,IAAI,kBACH,kBAAiBlwC,EAAAmjE,aAAenjE,EAAAojE,WAChCvF,UAAWh9C,EACXqkD,YAAallE,EAAAojE,WACb,cAAapjE,EAAAqjE,uBAAyBrjE,EAAAqjE,sBAAsBxiD,EAAO1pB,IACnEymE,QAAS59D,EAAA49D,QAAQ/8C,EAAO1pB,IACxB,kBAAiB6I,EAAAojE,WACjBtnC,UAAW97B,EAAAyrE,eACXtG,QAASnlE,EAAAujE,WAAW1iD,EAAO1pB,IAC3B,aAAY6I,EAAAkjE,UACZ,kBAAiBljE,EAAAsjE,cAClB5kE,MAAM,+CAEL,wBAAuBsB,EAAA0jE,oBACvB,wBAAuB1jE,EAAA2jE,oBACvB,0BAAyB3jE,EAAA4jE,sBACzB,oBAAmB5jE,EAAA6jE,gBACnB,oBAAmB7jE,EAAA8jE,gBACnB,4BAA2B9jE,EAAA+jE,wBAC3B,8BAA6B/jE,EAAAgkE,yBAC7B,iCAAgChkE,EAAAikE,4BAEhCwB,OAAMzlE,EAAAwjE,aACNkC,iBAAgB1lE,EAAAyjE,gB,0bY1KjB/kE,MAAM,6C,IACJA,MAAM,kB,ykBCjBpBgL,GAAAA,GAAAA,IAAY2gD,GAAAA,KAqFZ,SAvEqB,CACnB/pD,WAAY,CACV2lE,QAAAA,GAAAA,QACA5c,gBAAAA,GACAD,iBAAAA,IAEF3xD,KAAI,WACF,MAAO,CACLglE,QAAQ,EAEZ,EACAhyD,QAAO,YApBA,CACLwU,QAAS,oBACTmB,UAAW,gBACXD,IAAK,UACL,kBAAmB,gBACnB,2BAA4B,aAgBR9gB,KAAK84D,OAAO9+D,OAC9BgG,KAAK0L,OAAOjR,SAAS,kBAAmBuF,KAAK84D,OAAO9+D,KAExD,EACAsO,SAAQpP,GAAAA,GAAA,CACNq0E,aAAY,WAEV,MAAiB,mBADHvtE,KAAK84D,OAAO9+D,IAE5B,IACG4pD,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,EAC7Co2C,YAAa,SAAAvvD,GAAK,OAAIA,EAAM2X,SAAQ,OAAQ,EAC5C63C,WAAY,SAAAxvD,GAAK,OAAIA,EAAM2X,SAAS63C,UAAU,KAC9C,IACFsB,cAAa,WACX,OAAO/B,GACLxxD,OAAOkT,QAAQm8C,IAAWpwD,KAAI,SAAAsD,GAAA,IAAAa,GAAAqC,EAAAA,EAAAA,GAAAlD,EAAA,GAAEd,EAAC2B,EAAA,GAAG,OAAAnC,GAAAA,GAAA,GAAAmC,EAAA,IAAa,IAAErB,KAAMN,GAAC,IAC1D,CACEgwD,SAAU1pD,KAAKyZ,6BACfmwC,aAAc5pD,KAAKkqD,WACnBL,UAAW7pD,KAAKiqD,YAChBp2C,YAAa7T,KAAK6T,aAGxB,IAEFhU,QAAS,CACP2tE,SAAQ,WAAI,IAAA9rE,EAAA,KAMVxG,YAAW,WACTwG,EAAK07D,QAAS,CAChB,GAAG,GACL,EACAqQ,UAAS,SAAExnE,GAIJjG,KAAKo9D,QACRn3D,EAAMynE,iBAEV,EACAC,aAAY,WACV,IAAMnmB,EAAQxnD,KAAK84D,OAAO9+D,KAC1B,GAAc,iBAAVwtD,EACF,MAAO,IAAMxnD,KAAK84D,OAAO52B,OAAOrlC,IAElC,GAAc,mBAAV2qD,EACF,OAAOxnD,KAAK0L,OAAOoP,QAAQoX,cAAclyB,KAAK84D,OAAO52B,OAAOpqC,IAE9D,IAAM81E,EA1EH,CACLhuD,QAAS,oBACTmB,UAAW,gBACXD,IAAK,UACL,kBAAmB,gBACnB,2BAA4B,YAqEM9gB,KAAK84D,OAAO9+D,MAC5C,OAAO4zE,EAAU5tE,KAAKyM,GAAGmhE,GAAWpmB,CACtC,ICnFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yJFNzD7B,EAAAA,GAAAA,IAwCU0hB,EAAA,CAvCRC,QAAQ,QACRjoE,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,eAAc,MACF5oD,EAAAy8D,UACjB,WAAU,CAAAnrB,EAAA,aACX,oBAAkB,YAClB,gBAAc,wCACb47B,OAAMltE,EAAA6sE,SACNr5B,QAAKtzC,EAAA,KAAAA,EAAA,qBAAQF,EAAAy8D,QAAS,CAAH,I,CAETz9D,SAAO0+D,EAAAA,GAAAA,KAChB,iBAIE,CAHM19D,EAAA4sE,eAAY,YADpB5nB,EAAAA,GAAAA,IAIEyG,EAAA,C,MAFC,YAAU,EACX/sD,MAAM,iB,YAERkB,EAAAA,GAAAA,IAOK,KAAAC,GAAA,iBANHD,EAAAA,GAAAA,IAKEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAJexpD,EAAA6qD,eAAa,SAArB7nD,G,mBADTgiD,EAAAA,GAAAA,IAKEyE,EAAA,CAHC3hD,IAAK9E,EAAK3J,KACV,YAAU,EACV2J,KAAMA,G,iCAIF2jE,SAAOjJ,EAAAA,GAAAA,KAChB,iBAYO,EAZP59D,EAAAA,GAAAA,GAYO,OAZPkkD,GAYO,EAXLlkD,EAAAA,GAAAA,GAAwD,OAAxDokD,IAAwDD,EAAAA,GAAAA,IAAxBjkD,EAAAgtE,gBAAY,IAC5CltE,EAAAA,GAAAA,GAKO,cAJLuD,EAAAA,GAAAA,IAGE+hD,EAAA,CAFAO,KAAK,KACLx8C,KAAK,oBAGTrJ,EAAAA,GAAAA,GAGE,QAFApB,MAAM,gBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA8sE,WAAA9sE,EAAA8sE,UAAA3zE,MAAA6G,EAAAhE,UAAS,O,kQG1B3B0N,GAAAA,GAAAA,IACEC,GAAAA,IACA0sD,GAAAA,IACA6C,GAAAA,IACAD,GAAAA,IACAkU,GAAAA,IACAC,GAAAA,KAGF,IAAMC,GAAW,CACf1uE,MAAO,CACL,WACA,eACA,QACA,SACA,SACA,MACA,WACA,QACA,kBACA,YACA,kBAEFlH,KAAI,WACF,MAAO,CACL61E,eAAe,EACfC,QAAQ,EACRC,WAAW,EACXljE,aAAa,EACbmjE,mBAAoB,EACpBC,gBAAgB,EAEpB,EACAptE,WAAY,CACV67D,OAAAA,GAAAA,QACAwR,aAAAA,GACAC,aAAAA,GACA3C,oBAAAA,GACAC,kBAAAA,IAEFvjE,S,uWAAQpP,CAAA,CACNs1E,wBAAuB,WAAI,IAAA9sE,EAAA,KACzB,OAAO1B,KAAKkiB,SAAS7C,gBAAgBlmB,QAAO,SAAAqoB,GAAM,MAA0B,SAAtB9f,EAAKisE,cAA4BnsD,EAAO1pB,IAAM4J,EAAKwgB,SAASzC,OAAS+B,EAAO1pB,IAAM4J,EAAKwgB,SAAS1C,KAAM,GAC9J,EACAivD,wBAAuB,WAAI,IAAA9lE,EAAA,KACzB,OAAQ3I,KAAKk8B,iBAAmB,IAAI/iC,QAAO,SAAA6iB,GAAQ,OAAIrT,EAAKuZ,SAAS/C,eAAenD,EAAS,GAC/F,EACAuD,eAAc,WACZ,OAAOvf,KAAKkiB,SAAS3C,cACvB,EACAmvD,eAAc,WACZ,OAAO1uE,KAAKkiB,SAAS3C,eAAiB,GAAmC,IAA9Bvf,KAAKkiB,SAASrC,WAC3D,EACA8uD,iBAAgB,WACd,OAAkC,IAA9B3uE,KAAKkiB,SAASrC,YACT7f,KAAKyM,GAAG,mBAER,GAAPpT,OAAU2G,KAAKyM,GAAG,qBAAoB,MAAApT,OAAK2G,KAAKuf,eAAc,IAElE,EACAqvD,uBAAsB,WACpB,OAAkC,IAA9B5uE,KAAKkiB,SAASrC,YACT,IAEA7f,KAAKuf,eAAiB,GAAK,IAAMvf,KAAKuf,cAEjD,EACAvV,QAAO,WACL,IAAI6kE,EAAe7uE,KAAK8uE,SAAwC,CAAC,aAA9B,CAAC,QAAS,iBAE7C,OADI9uE,KAAKquE,iBAAgBQ,EAAcA,EAAYx1E,OAAO,CAAC,WAAY,0BAChE,CACL28C,KAAM64B,EACNE,OAAQ,CAAC,oBAAoB11E,OAAQ2G,KAAK8uE,SAA0C,GAA/B,CAAC,gBAAiB,YACvE9iE,KAAM,CAAC,iBAAiB3S,OAAQ2G,KAAK8uE,SAA4B,GAAjB,CAAC,eACjDE,OAAQ,CAAC,mBAAmB31E,OAAQ2G,KAAK8uE,SAA8B,GAAnB,CAAC,iBAEzD,EAEA9K,sBAAqB,WACnB,OAAOiL,KAAMjvE,KAAKk8B,gBACpB,EACAgzC,kBAAiB,WACf,IAAMC,EAASnvE,KAAKkiB,SAAS7C,gBAAgB5lB,OACvC21E,EAAkBx1E,KAAKy1E,KAAKz1E,KAAKC,IAAI,EAAGwG,OAAOiM,YAAc,KAC7DgjE,EAAiBtvE,KAAKouE,mBAAqBpuE,KAAKyuE,wBAAwBh1E,OACxEy1C,EAAMt1C,KAAKC,IAAI,EAAGy1E,EAAiBF,GACnCv1E,EAAMD,KAAKs1C,IAAIigC,EAAQG,EAAiBF,GAC9C,OAAOpvE,KAAKkiB,SAAS7C,gBAAgBnjB,MAAMgzC,EAAKr1C,GAAK3C,KAAI,SAAA2Q,GAAC,OAAIA,EAAE/P,EAAE,GACpE,EACAy3E,wBAAuB,WACrB,OAAOvvE,KAAK0L,OAAOoP,QAAQnH,aAAa0E,gBAC1C,IACGurC,EAAAA,EAAAA,IAAS,CACV4rB,aAAc,SAAA90E,GAAK,MAAmC,WAA/BA,EAAK,UAAWgW,UAAuB,KAGlEtF,QAAO,WACL,IAAM3S,EAAQuH,KAAK0L,OACbqT,EAActmB,EAAMiC,MAAMqB,MAAM8X,YAAYkL,YAC5C4D,EAA2D,IAAzC3iB,KAAKkiB,SAAS7C,gBAAgB5lB,OAItD,GAFA4G,OAAOgL,iBAAiB,SAAUrL,KAAKyvE,cAEnCh3E,EAAMiC,MAAM+wB,IAAIsY,SAAS/jC,KAAK2tE,cAAiB,OAAO,EAE1Dn6C,GAAAA,eAA+B,CAC7B/6B,MAAAA,EACAsmB,YAAAA,EACAmD,SAAUliB,KAAK2tE,aACfhrD,gBAAAA,EACA1D,OAAQjf,KAAKif,OACb2R,OAAQ5wB,KAAK4wB,OACb/zB,IAAKmD,KAAKnD,KAEd,EACAixD,QAAO,gBAC0B,IAApB/hD,SAASu3B,SAClBv3B,SAASV,iBAAiB,mBAAoBrL,KAAK0vE,wBAAwB,GAC3E1vE,KAAKmuE,UAAYpiE,SAASu3B,QAE5BjjC,OAAOgL,iBAAiB,UAAWrL,KAAK2vE,gBACxCz0E,WAAW8E,KAAK4vE,yBAA0B,IAC5C,EACAnlE,UAAS,WACPpK,OAAOmL,oBAAoB,SAAUxL,KAAKyvE,cAC1CpvE,OAAOmL,oBAAoB,UAAWxL,KAAK2vE,qBACZ,IAApB5jE,SAASu3B,QAAwBv3B,SAASP,oBAAoB,mBAAoBxL,KAAK0vE,wBAAwB,GAC1H1vE,KAAK0L,OAAO4G,OAAO,aAAc,CAAE4P,SAAUliB,KAAK2tE,aAAc3uE,OAAO,GACzE,EACAa,QAAS,CACPk7D,YAAW,WACT16D,OAAO26D,SAAS,CAAE6U,IAAK7vE,KAAKoM,IAAI0jE,WAClC,EACAC,mBAAoBxW,MAAS,WAC3Bv5D,KAAKquE,gBAAiB,CACxB,GAAG,KACH2B,uBAAsB,WACfhwE,KAAKquE,iBACRruE,KAAKquE,gBAAiB,GAExBruE,KAAK+vE,oBACP,EACAJ,eAAc,SAAEj4E,GAEV,CAAC,WAAY,SAASoE,SAASpE,EAAEkJ,OAAO2C,QAAQvK,gBACtC,MAAVtB,EAAE+Q,KAAazI,KAAK8lB,iBAC1B,EACAA,gBAAe,WACqB,IAA9B9lB,KAAKkiB,SAASrC,aAChB7f,KAAK0L,OAAO4G,OAAO,gBAAiB,CAAE4P,SAAUliB,KAAK2tE,aAActnD,eAAe,IAClFrmB,KAAK0L,OAAO4G,OAAO,aAAc,CAAE4P,SAAUliB,KAAK2tE,aAAc71E,GAAI,IAC1C,SAAtBkI,KAAK2tE,cACP3tE,KAAK0L,OAAOjR,SAAS,sBAAuBuF,KAAKif,QAEnDjf,KAAKiwE,uBAELjwE,KAAKgwE,yBACLhwE,KAAK0L,OAAO4G,OAAO,kBAAmB,CAAE4P,SAAUliB,KAAK2tE,eACvD3tE,KAAKkuE,QAAS,GAEhB7tE,OAAO26D,SAAS,CAAE6U,IAAK,GACzB,EACAI,mBAAoBC,MAAS,WAAY,IAAAlnE,EAAA,KACjCvQ,EAAQuH,KAAK0L,OACbqT,EAActmB,EAAMiC,MAAMqB,MAAM8X,YAAYkL,YAClDtmB,EAAM6Z,OAAO,aAAc,CAAE4P,SAAUliB,KAAK2tE,aAAc3uE,OAAO,IACjEw0B,GAAAA,eAA+B,CAC7B/6B,MAAAA,EACAsmB,YAAAA,EACAmD,SAAUliB,KAAK2tE,aACfnqD,OAAO,EACPb,iBAAiB,EACjB1D,OAAQjf,KAAKif,OACb2R,OAAQ5wB,KAAK4wB,OACb/zB,IAAKmD,KAAKnD,MACTpF,MAAK,SAAA+C,GAAkB,IAAf0kB,EAAQ1kB,EAAR0kB,SACLA,GAAgC,IAApBA,EAASzlB,SACvBuP,EAAKiC,aAAc,EAEvB,IAAE,SAAS,kBACTxS,EAAM6Z,OAAO,aAAc,CAAE4P,SAAUlZ,EAAK2kE,aAAc3uE,OAAO,GAAQ,GAE7E,GAAG,SAAM,GACT4wE,yBAAwB,WACtB,GAAK5vE,KAAKoJ,MAAM8Y,UACXliB,KAAKuvE,wBAAV,CAEA,IAAMrwD,EAAWlf,KAAKoJ,MAAM8Y,SAAS5d,SAC/B6rE,EAAoBv2E,KAAKC,IAAI,EAAGD,KAAKs1C,IAAIlvC,KAAKouE,mBAAoBlvD,EAASzlB,OAAS,IAE1F,GAAwB,IAApBylB,EAASzlB,OAAb,CAEA,IAAMyS,EAAStS,KAAKC,IAAIkS,SAASC,KAAKK,aAAchM,OAAOkM,aAErD6jE,EAAiB/vE,OAAOkM,YAAoC,GAArBlM,OAAOiM,YAIhD+jE,EAAcz2E,KAAK02E,MAAMpxD,EAASzlB,QAAU22E,EAAiBlkE,IAC7DhN,EAAMggB,EAASmxD,GAAapkE,wBAAwBE,EAKlDokE,EAAsBrxD,EAASixD,GAAmBlkE,wBAAwBE,EAQhF,IAPIvS,KAAK42E,IAAItxE,GAAOqxE,IAClBF,EAAcF,EACdjxE,EAAMqxE,GAKDrxE,GAAO,IAAMmxE,EAAcnxD,EAASzlB,OAAS,GAClDyF,GAAOggB,EAASmxD,GAAahkE,aAC7BgkE,IAEF,KAAOnxE,EAAMmB,OAAOiM,YAAc,KAAO+jE,EAAc,GAErDnxE,GAAOggB,IADPmxD,GAC6BhkE,aAK/BrM,KAAKouE,mBAAqBiC,CAjCO,CALQ,CAuC3C,EACA/kE,WAAU,SAAE5T,GACV,IAAMoU,EAAYC,SAASC,KAAKC,wBAC1BC,EAAStS,KAAKC,IAAIiS,EAAUI,QAAUJ,EAAUK,IACxB,IAA1BnM,KAAKkiB,SAASlX,SACdhL,KAAKoM,IAAIC,aAAe,GACvBhM,OAAOiM,YAAcjM,OAAOkM,aAAiBL,EAAS,KACzDlM,KAAKiwE,oBAET,EACAR,aAAcS,MAAS,SAAUx4E,GAC/BsI,KAAKiuE,cAAgBjuE,KAAKoM,IAAI0jE,UAAYzvE,OAAOm5D,QACjDx5D,KAAK4vE,2BACL5vE,KAAKsL,WAAW5T,EAClB,GAAG,KACHg4E,uBAAsB,WACpB1vE,KAAKmuE,UAAYpiE,SAASu3B,MAC5B,GAEFsqB,MAAO,CACLruC,eAAc,SAAEwK,GACd,GAAK/pB,KAAK0L,OAAOoP,QAAQnH,aAAa+zD,WAGlC39C,EAAQ,EAAG,CAEb,IAAM0mD,EAAM1kE,SAASqpB,mBACR/0B,OAAOkM,aAAekkE,EAAInnE,YAAcmnE,EAAIC,WAAa,GAC5D,KACL1wE,KAAKkuE,QACJluE,KAAKmuE,WAAanuE,KAAK0L,OAAOoP,QAAQnH,aAAag9D,iBAIvD3wE,KAAKkuE,QAAS,EAFdluE,KAAK8lB,iBAIT,CACF,IAIJ,YC3QA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uNjBNzDvlB,EAAAA,GAAAA,IAsJM,OAtJAlB,OAAKkqD,EAAAA,GAAAA,IAAA,YAAe5oD,EAAAqJ,QAAQgsC,Q,EAChCv1C,EAAAA,GAAAA,GAgFM,OAhFApB,OAAKkqD,EAAAA,GAAAA,IAAE5oD,EAAAqJ,QAAQ+kE,S,CAEVpuE,EAAAmuE,U,kBAAQ,YADjBnpB,EAAAA,GAAAA,IAGEirB,EAAA,C,MADC,gBAAejwE,EAAAgtE,c,2BAGVhtE,EAAAstE,gBAAkBttE,EAAAmuE,WAAQ,YADlCvuE,EAAAA,GAAAA,IAkBM,MAlBNC,GAkBM,EAdJC,EAAAA,GAAAA,GAaS,UAZPpB,MAAM,uCACNI,KAAK,SACJ2S,MAAOzR,EAAA8L,GAAG,yBACV3M,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAo6D,aAAAp6D,EAAAo6D,YAAAjhE,MAAA6G,EAAAhE,UAAW,I,EAEnBqH,EAAAA,GAAAA,IAMWw3D,EAAA,CANDn8D,MAAM,qCAAmC,C,mBACjD,iBAA0B,EAA1B2E,EAAAA,GAAAA,IAA0B+hD,EAAA,CAAlBj8C,KAAK,cACb9F,EAAAA,GAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,QACL0/C,UAAU,S,qCAKF7oD,EAAA6uE,eAAiB7uE,EAAAmuE,WAAQ,YAAzCvuE,EAAAA,GAAAA,IA+BWwkD,GAAAA,GAAA,CAAAt8C,IAAA,IA7BD9H,EAAA+tE,iBAAc,YADtBnuE,EAAAA,GAAAA,IAiBM,MAjBNskD,GAiBM,EAbJpkD,EAAAA,GAAAA,GAYS,UAXPpB,MAAM,kCACL+S,MAAOzR,EAAAguE,iBACP7uE,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAmlB,iBAAAnlB,EAAAmlB,gBAAAhsB,MAAA6G,EAAAhE,UAAe,kB,EAE/BqH,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,iBAEPrJ,EAAAA,GAAAA,GAEM,MAFNwkD,IAEML,EAAAA,GAAAA,IADDjkD,EAAAiuE,wBAAsB,aAKjBjuE,EAAAmuE,U,kBAAQ,YADtBvuE,EAAAA,GAAAA,IAWM,O,MATJlB,MAAM,+CACL+S,MAAOzR,EAAA8L,GAAG,uBACV,iBAAe,EACf3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAN,cAAc,e,EAEdkD,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,W,2BAIXvJ,EAAAA,GAAAA,IAeWwkD,GAAAA,GAAA,CAAAt8C,IAAA,IAbD9H,EAAA+tE,iBAAc,YADtBnuE,EAAAA,GAAAA,IAMS,U,MAJPlB,MAAM,iCACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAmlB,iBAAAnlB,EAAAmlB,gBAAAhsB,MAAA6G,EAAAhE,UAAe,mB,SAE5BgE,EAAAguE,kBAAgB,IAGPhuE,EAAAmuE,UAIP,kBAJe,YADtBvuE,EAAAA,GAAAA,IAMM,O,MAJJlB,MAAM,sBACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAN,cAAc,gB,SAEXH,EAAA8L,GAAG,wBAAD,UAIA9L,EAAAmuE,U,kBAAQ,YADjBnpB,EAAAA,GAAAA,IAGEynB,EAAA,C,MADA/tE,MAAM,sBAGCsB,EAAAmuE,U,kBAAQ,YADjBnpB,EAAAA,GAAAA,IAGE0nB,EAAA,C,MADAhuE,MAAM,uB,IAGVoB,EAAAA,GAAAA,GA6BM,OA7BApB,OAAKkqD,EAAAA,GAAAA,IAAE5oD,EAAAqJ,QAAQgC,O,EACnBvL,EAAAA,GAAAA,GA2BM,MA3BN2kD,GA2BM,iBAtBJ7kD,EAAAA,GAAAA,IAUEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IATmBxpD,EAAA8tE,yBAAuB,SAAnCzyD,G,mBADT2pC,EAAAA,GAAAA,IAUEkrB,EAAA,CARCpoE,IAAKuT,EAAW,UACjBi8C,KAAK,WACL54D,MAAM,gBACL,YAAW2c,EACX8nD,aAAa,EACb,2BAA0BnjE,EAAAqjE,sBAC1B,aAAYrjE,EAAAkjE,UACZ,kBAAiBljE,EAAAse,Q,yGAEpB1e,EAAAA,GAAAA,IAUEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IATiBxpD,EAAA6tE,yBAAuB,SAAjChtD,G,mBADTmkC,EAAAA,GAAAA,IAUEkrB,EAAA,CARCpoE,IAAK+Y,EAAO1pB,GACbmgE,KAAK,WACL54D,MAAM,gBACL,YAAWmiB,EAAO1pB,GAClBgsE,aAAa,EACb,aAAYnjE,EAAAkjE,UACZ,kBAAiBljE,EAAAse,OACjB,iBAAgBte,EAAA4uE,0BAA4B5uE,EAAAuuE,kBAAkBpzE,SAAS0lB,EAAO1pB,K,0FAIrF2I,EAAAA,GAAAA,GAqCM,OArCApB,OAAKkqD,EAAAA,GAAAA,IAAE5oD,EAAAqJ,QAAQglE,S,eACnBrpB,EAAAA,GAAAA,IAmCW+V,GAAAA,GAAA,CAlCRvuB,GAAIxsC,EAAAmwE,eACJlnE,UAAWjJ,EAAAmuE,WAAanuE,EAAAmwE,gB,CAGZ,IAALnwE,EAAAopB,QAAK,YADbxpB,EAAAA,GAAAA,IAKM,MALN8kD,IAKMT,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,yBAAD,IAGM9L,EAAAsK,cAAW,YADxB1K,EAAAA,GAAAA,IAKM,MALN8lD,IAKMzB,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,8BAAD,IAGO9L,EAAAuhB,SAASlX,UAKd,YAGTzK,EAAAA,GAAAA,IASM,MATNilD,GASM,EALJxhD,EAAAA,GAAAA,IAIE+hD,EAAA,CAHAj8C,KAAK,eACL2sD,KAAA,GACAnQ,KAAK,YAfqB,YAD9B/lD,EAAAA,GAAAA,IAQS,U,MANPlB,MAAM,wBACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAAsvE,oBAAkB,kB,EAElCxvE,EAAAA,GAAAA,GAEM,MAFN6kD,IAEMV,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,wBAAD,O,kCkBvHjB,GAhBuB,CACrBxL,WAAY,CACV+sE,SAAAA,IAEF1lE,SAAU,CACR4Z,SAAQ,WAAM,OAAOliB,KAAK0L,OAAOhR,MAAMwkB,SAASuB,UAAS,MAAQ,GAEnErV,QAAO,WACLpL,KAAK0L,OAAOjR,SAAS,wBAAyB,CAAEynB,SAAU,UAC5D,EACAzX,UAAS,WACPzK,KAAK0L,OAAOjR,SAAS,uBAAwB,SAC/C,GCNF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzDkrD,EAAAA,GAAAA,IAIEorB,EAAA,CAHC3+D,MAAOzR,EAAA8L,GAAG,iBACVyV,SAAUvhB,EAAAuhB,SACV,gBAAe,U,iCCYpB,GAfkC,CAChCjhB,WAAY,CACV+sE,SAAAA,IAEF1lE,SAAU,CACR4Z,SAAQ,WAAM,OAAOliB,KAAK0L,OAAOhR,MAAMwkB,SAASuB,UAAUI,iBAAkB,GAE9EzV,QAAO,WACLpL,KAAK0L,OAAOjR,SAAS,wBAAyB,CAAEynB,SAAU,qBAC5D,EACAzX,UAAS,WACPzK,KAAK0L,OAAOjR,SAAS,uBAAwB,oBAC/C,GCNF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzDkrD,EAAAA,GAAAA,IAIEorB,EAAA,CAHC3+D,MAAOzR,EAAA8L,GAAG,YACVyV,SAAUvhB,EAAAuhB,SACV,gBAAe,qB,iCCMpB,GATwB,CACtBjhB,WAAY,CACV+sE,SAAAA,IAEF1lE,SAAU,CACR4Z,SAAQ,WAAM,OAAOliB,KAAK0L,OAAOhR,MAAMwkB,SAASuB,UAAUb,OAAQ,ICCtE,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzD+lC,EAAAA,GAAAA,IAIEorB,EAAA,CAHC3+D,MAAOzR,EAAA8L,GAAG,gBACVyV,SAAUvhB,EAAAuhB,SACV,gBAAe,W,iCCqBpB,GAvBoB,CAClB9W,QAAO,WACLpL,KAAK0L,OAAO4G,OAAO,gBAAiB,CAAE4P,SAAU,QAChDliB,KAAK0L,OAAOjR,SAAS,wBAAyB,CAAEynB,SAAU,MAAOrlB,IAAKmD,KAAKnD,KAC7E,EACAoE,WAAY,CACV+sE,SAAAA,IAEF1lE,SAAU,CACRzL,IAAG,WAAM,OAAOmD,KAAK84D,OAAO52B,OAAOrlC,GAAI,EACvCqlB,SAAQ,WAAM,OAAOliB,KAAK0L,OAAOhR,MAAMwkB,SAASuB,UAAU5jB,GAAI,GAEhE+wD,MAAO,CACL/wD,IAAG,WACDmD,KAAK0L,OAAO4G,OAAO,gBAAiB,CAAE4P,SAAU,QAChDliB,KAAK0L,OAAOjR,SAAS,wBAAyB,CAAEynB,SAAU,MAAOrlB,IAAKmD,KAAKnD,KAC7E,GAEF4N,UAAS,WACPzK,KAAK0L,OAAOjR,SAAS,uBAAwB,MAC/C,GCfF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzDkrD,EAAAA,GAAAA,IAKEorB,EAAA,CAJC3+D,MAAOzR,EAAA9D,IACPqlB,SAAUvhB,EAAAuhB,SACV,gBAAe,MACfrlB,IAAK8D,EAAA9D,K,uCCWV,GAdkB,CAChByL,SAAU,CACR4Z,SAAQ,WACN,OAAOliB,KAAK0L,OAAOhR,MAAMwkB,SAASuB,UAAUM,SAC9C,GAEF9f,WAAY,CACV+sE,SAAAA,IAEFvjE,UAAS,WACPzK,KAAK0L,OAAO4G,OAAO,gBAAiB,CAAE4P,SAAU,aAClD,GCNF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzDyjC,EAAAA,GAAAA,IAIEorB,EAAA,CAHC3+D,MAAOzR,EAAA8L,GAAG,iBACVyV,SAAUvhB,EAAAuhB,SACV,gBAAe,a,iCCSpB,GAXyB,CACvBjhB,WAAY,CACVqtE,aAAAA,IAEFhmE,SAAU,CACR0T,SAAQ,WACN,OAAOhc,KAAK84D,OAAO52B,OAAOpqC,EAC5B,ICFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yECJzD6tD,EAAAA,GAAAA,IAIEkrB,EAAA,CAHC/M,aAAa,EACd,UAAQ,OACP,YAAWnjE,EAAAqb,U,kCCHT3c,MAAM,uB,IACJA,MAAM,iB,IACJA,MAAM,S,0FCAX2xE,GAAc,CAClBtwD,SAAU,CAAC,WACX,gBAAiB,CAAC,SAAU,QAC5B6f,QAAS,CAAC,UACV0wC,UAAW,CAAC,0BACZj6B,QAAS,CAAC,kBACVlW,MAAO,CAAC,SAsBV,SAnBqB,CACnB1oC,KAAI,WACF,MAAO,CACL2vC,mBAAoB/nC,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAYq9D,qBACxDC,WAAYH,GAAYtwD,SACxB0wD,cAAepxE,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAYwsC,WAAWvkD,SAAS,0BAE3E,EACA+D,QAAS,CACPwxE,aAAY,SAAE5oE,GACZzI,KAAKmxE,WAAaH,GAAYvoE,EAChC,GAEFxH,WAAY,CACV84D,cAAAA,GAAAA,QACAuX,YAAAA,GAAAA,ICpBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,sGFJzD/wE,EAAAA,GAAAA,IA2CM,MA3CNC,GA2CM,EA1CJC,EAAAA,GAAAA,GAIM,MAJNkkD,GAIM,EAHJlkD,EAAAA,GAAAA,GAEM,MAFNokD,IAEMD,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,qBAAD,MAGTzI,EAAAA,GAAAA,IA8BeutE,EAAA,CA7Bb1gC,IAAI,cACH,YAAWlwC,EAAA0wE,c,oBAEZ,iBAGE,EAHF5wE,EAAAA,GAAAA,GAGE,QAFAgI,IAAI,WACHoB,MAAOlJ,EAAA8L,GAAG,iB,YAEbhM,EAAAA,GAAAA,GAGE,QAFAgI,IAAI,gBACHoB,MAAOlJ,EAAA8L,GAAG,8B,YAEbhM,EAAAA,GAAAA,GAGE,QAFAgI,IAAI,UACHoB,MAAOlJ,EAAA8L,GAAG,yB,YAEbhM,EAAAA,GAAAA,GAGE,QAFAgI,IAAI,YACHoB,MAAOlJ,EAAA8L,GAAG,iC,WAGL9L,EAAAywE,gBAAa,YADrB7wE,EAAAA,GAAAA,IAIE,QAFAkI,IAAI,UACHoB,MAAOlJ,EAAA8L,GAAG,yB,6BAGJ9L,EAAAonC,oB,kBAAkB,YAD3BxnC,EAAAA,GAAAA,IAIE,QAFAkI,IAAI,QACHoB,MAAOlJ,EAAA8L,GAAG,uB,uCAGfzI,EAAAA,GAAAA,IAKEy+D,EAAA,CAJA5xB,IAAI,gBACH,cAAY,EACZ,gBAAc,EACd,cAAalwC,EAAAwwE,Y,8BG7BpB,GAXY,CACV7oE,SAAU,CACR4Z,SAAQ,WACN,OAAOliB,KAAK0L,OAAOhR,MAAMwkB,SAASuB,UAAUK,GAC9C,GAEF7f,WAAY,CACV+sE,SAAAA,KCFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzDroB,EAAAA,GAAAA,IAIEorB,EAAA,CAHC3+D,MAAOzR,EAAA8L,GAAG,WACVyV,SAAUvhB,EAAAuhB,SACV,gBAAe,O,0DCEhB7iB,MAAM,iC,IAEDA,MAAM,yB,IACHA,MAAM,S,IAUTA,MAAM,c,UAGPA,MAAM,Y,UAcNA,MAAM,yB,IC/BLA,MAAM,uB,IAONA,MAAM,yB,IACJA,MAAM,W,UAGPA,MAAM,yB,IAMRoB,EAAAA,GAAAA,GAA8B,QAAxBpB,MAAM,iBAAe,S,IACtBA,MAAM,gB,IAORA,MAAM,gB,UAQPA,MAAM,8C,wEClChB,UACErF,KAAM,YACNiH,WAAY,CACVuwE,WAAAA,GAAAA,QACAC,YAAAA,GAAAA,EACAC,aAAa1R,EAAAA,GAAAA,KAAqB,kBAAM,uCAA0C,KAEpF1gE,MAAO,CACL,OAAQ,cAEVgJ,SAAU,CACR8J,MAAK,WACH,OAAOpS,KAAKhE,KAAOgE,KAAKhE,KAAKK,eAAiB,EAChD,EACAs1E,UAAS,WACP,OAAO3xE,KAAKhE,KAAOgE,KAAKhE,KAAK41E,UAAY,EAC3C,ICXJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,6HCNzDrxE,EAAAA,GAAAA,IAqBM,OApBJlB,MAAM,aACL+S,MAAOzR,EAAAyR,O,CAGAzR,EAAAkxE,YAAclxE,EAAA3E,OAAI,YAD1B2pD,EAAAA,GAAAA,IAScmsB,EAAA,C,MAPZzyE,MAAM,mBACL,UAASsB,EAAA3E,KAAKlE,I,oBAEf,iBAGE,EAHFkM,EAAAA,GAAAA,IAGE+tE,EAAA,CAFA1yE,MAAM,kBACLrD,KAAM2E,EAAA3E,M,2DAIH2E,EAAA3E,OAAI,YADZ2pD,EAAAA,GAAAA,IAMEqsB,EAAA,C,MAJA3yE,MAAM,WACL+S,MAAK,KAAOzR,EAAA3E,MAAQ2E,EAAA3E,KAAKK,gBACzB+E,KAAMT,EAAAgxE,UACNp5E,MAAOoI,EAAA3E,KAAKzD,OAAS,I,uoBCgD5B,SA5DqB,CACnByB,KAAM,eACNsF,MAAO,CACL,QAEF2B,WAAY,CACVuwE,WAAAA,GAAAA,QACAS,WAAAA,GAAAA,EACAC,QAAAA,GAAAA,EACAC,UAAAA,GACAC,WAAAA,GAAAA,GAEF9pE,SAAQpP,GAAAA,GAAA,IACH0qD,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,KAC7C,IACFw+D,eAAc,WACZ,GAAiD,IAA7CryE,KAAKkjC,KAAKC,YAAY9hB,YAAY5nB,OAAtC,CAEA,IAAM64E,EAAQtyE,KAAKkjC,KAAKC,YAAY9hB,YAAYnqB,KAAI,SAAAq7E,GAAI,OAAIC,GAAAA,GAAAA,SAAkBD,EAAK/7B,SAAS,IAC5F,OAAI87B,EAAMx2E,SAAS,SACVkE,KAAKyM,GAAG,mBACN6lE,EAAMx2E,SAAS,SACjBkE,KAAKyM,GAAG,mBACN6lE,EAAMx2E,SAAS,SACjBkE,KAAKyM,GAAG,mBAERzM,KAAKyM,GAAG,iBAV4C,CAY/D,EACAgmE,wBAAuB,WACrB,IAAMxmD,EAAUjsB,KAAKkjC,KAAKC,YACpBuvC,EAAgBzmD,EAAUA,EAAQnzB,OAAS,GAC3C65E,EAAQ1mD,GAAWA,EAAQsX,aAAevjC,KAAK6T,YAAY/b,GAC3D6H,EAAUssB,EAAWjsB,KAAKqyE,gBAAkBpmD,EAAQtsB,QAAW,GAC/DizE,EAAiBD,EAAQ,MAAHt5E,OAAS2G,KAAKyM,GAAG,aAAY,SAAApT,OAAQsG,GAAYA,EAC7E,MAAO,CACLkzE,QAAS,GACT/5E,OAAQ45E,EACRI,SAAUF,EACVz0E,KAAMy0E,EACNvxD,YAAa,GAEjB,IAEFxhB,QAAS,CACPkzE,SAAQ,SAAEnlE,GACJ5N,KAAKkjC,KAAKprC,IACZkI,KAAKI,QAAQhB,KAAK,CAChBpF,KAAM,OACNkoC,OAAQ,CACN9K,SAAUp3B,KAAK6T,YAAY5X,YAC3B+2E,aAAchzE,KAAKkjC,KAAKO,QAAQ3rC,KAIxC,ICvDJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,iJLNzDyI,EAAAA,GAAAA,IA2CM,OA1CJlB,MAAM,iB,wDACkBsB,EAAAoyE,UAAApyE,EAAAoyE,SAAAj5E,MAAA6G,EAAAhE,UAAQ,kB,EAEhC8D,EAAAA,GAAAA,GAMM,MANND,GAMM,EALJwD,EAAAA,GAAAA,IAIE+tE,EAAA,CAHC/1E,KAAM2E,EAAAuiC,KAAKO,QACZv3B,OAAO,OACPuH,MAAM,Q,oBAGVhT,EAAAA,GAAAA,GA+BM,MA/BNkkD,GA+BM,EA9BJlkD,EAAAA,GAAAA,GAgBM,MAhBNokD,GAgBM,CAdIlkD,EAAAuiC,KAAKO,UAAO,YADpBljC,EAAAA,GAAAA,IAOO,OAPPykD,GAOO,EAHLhhD,EAAAA,GAAAA,IAEEivE,EAAA,CADCj3E,KAAM2E,EAAAuiC,KAAKO,S,qCAGhBwhB,IACAxkD,EAAAA,GAAAA,GAKM,MALN2lD,GAKM,EAJJpiD,EAAAA,GAAAA,IAGEkvE,EAAA,CAFCC,KAAMxyE,EAAAuiC,KAAK2b,WACX,cAAa,I,sBAIpBp+C,EAAAA,GAAAA,GAYM,MAZN2kD,GAYM,EAXJphD,EAAAA,GAAAA,IAIEovE,EAAA,CAHA/zE,MAAM,oBACLmiB,OAAQ7gB,EAAA8xE,wBACR,eAAa,G,mBAGR9xE,EAAAuiC,KAAK0b,OAAS,IAAH,YADnBr+C,EAAAA,GAAAA,IAKM,MALN8kD,IAKMT,EAAAA,GAAAA,IADDjkD,EAAAuiC,KAAK0b,QAAM,6B,aMtCpBv/C,MAAM,gC,IAGJwxC,IAAI,SACJxxC,MAAM,iB,IAYHA,MAAM,c,IACJA,MAAM,gB,IAaRA,MAAM,e,2mBCvBfgL,GAAAA,GAAAA,IACEysD,GAAAA,IACAlD,GAAAA,KAGF,IAAMyf,GAAU,CACdpyE,WAAY,CACVqyE,cAAAA,GAAAA,EACA9B,WAAAA,GAAAA,SAEFp5E,KAAI,WACF,MAAO,CACLuC,YAAa,GACb44E,QAAS,GACTvoE,SAAS,EACThQ,MAAO,GAEX,EACMoQ,QAAO,WAAI,IAAA1J,EAAA,YAAApG,EAAAA,EAAAA,GAAAC,IAAAA,MAAA,SAAAC,IAAA,OAAAD,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACS8F,EAAKgqB,kBAAkB0X,QAAO,OAAA1nC,EAAA4T,KAA9C8zB,MACF9nB,SAAQ,SAAA4nB,GAAI,OAAIxhC,EAAK/G,YAAYyE,KAAK8jC,EAAKO,QAAQ,IAAC,wBAAA/nC,EAAAe,OAAA,GAAAjB,EAAA,IAF3CF,EAGjB,EACAgN,SAAQpP,GAAAA,GAAA,CACN6C,MAAK,WAAI,IAAA4M,EAAA,KACP,OAAO3I,KAAKuzE,QAAQr8E,KAAI,SAAA+nB,GAAM,OAAItW,EAAKm0B,SAAS7d,EAAO,GACzD,EACAu0D,eAAc,WACZ,OAA0B,IAAtBxzE,KAAKhF,MAAMvB,OACNuG,KAAKjE,MAELiE,KAAKrF,WAEhB,IACGipD,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,EAC7C6X,kBAAmB,SAAAhxB,GAAK,OAAIA,EAAM+wB,IAAIC,iBAAiB,MAEtDm4B,EAAAA,EAAAA,IAAW,CAAC,cAEjBhkD,QAAS,CACP4zE,OAAM,WACJzzE,KAAKkG,MAAM,SACb,EACAwtE,SAAQ,SAAE13E,GACRgE,KAAKI,QAAQhB,KAAK,CAAEpF,KAAM,OAAQkoC,OAAQ,CAAE8wC,aAAch3E,EAAKlE,KACjE,EACAmmE,QAAO,WACLj+D,KAAK+vB,OAAO/vB,KAAKhF,MACnB,EACA24E,QAAO,SAAE33E,GACPgE,KAAK4zE,gBAAgBx0E,KAAKpD,EAAKlE,IAC/BkI,KAAKhF,MAAQ,EACf,EACA64E,WAAU,SAAE50D,GACVjf,KAAK4zE,gBAAkB5zE,KAAK4zE,gBAAgBz6E,QAAO,SAAArB,GAAE,OAAIA,IAAOmnB,CAAM,GACxE,EACA8Q,OAAM,SAAE/0B,GAAO,IAAAgO,EAAA,KACRhO,GAKLgF,KAAKgL,SAAU,EACfhL,KAAKuzE,QAAU,GACfvzE,KAAK0L,OAAOjR,SAAS,SAAU,CAAEw1B,EAAGj1B,EAAOxD,SAAS,EAAMiI,KAAM,aAC7DhI,MAAK,SAAAW,GACJ4Q,EAAKgC,SAAU,EACfhC,EAAKuqE,QAAUn7E,EAAK4xB,SAAS9yB,KAAI,SAAAmD,GAAC,OAAIA,EAAEvC,EAAE,GAC5C,KAVAkI,KAAKgL,SAAU,CAWnB,IAIJ,YCzEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,gGFNzDzK,EAAAA,GAAAA,IA0CM,MA1CNC,GA0CM,EAvCJC,EAAAA,GAAAA,GAaM,MAbNkkD,GAaM,EATJlkD,EAAAA,GAAAA,GAQS,UAPPpB,MAAM,iCACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA8yE,QAAA9yE,EAAA8yE,OAAA35E,MAAA6G,EAAAhE,UAAM,I,EAEdqH,EAAAA,GAAAA,IAGE+hD,EAAA,CAFAO,KAAK,KACLx8C,KAAK,oB,MAIXrJ,EAAAA,GAAAA,GAaM,MAbNokD,GAaM,EAZJpkD,EAAAA,GAAAA,GAKM,MALNukD,GAKM,EAJJhhD,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,0CACNyK,KAAK,c,UAGTrJ,EAAAA,GAAAA,GAKC,SAJCowC,IAAI,S,qDACKlwC,EAAA3F,MAAKkqD,CAAA,GACdC,YAAY,gBACX8Y,QAAKp9D,EAAA,KAAAA,EAAA,qBAAEF,EAAAs9D,SAAAt9D,EAAAs9D,QAAAnkE,MAAA6G,EAAAhE,UAAO,I,kBAFNgE,EAAA3F,YAKbyF,EAAAA,GAAAA,GAUM,MAVNwkD,GAUM,iBATJ1kD,EAAAA,GAAAA,IAQMwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAPWxpD,EAAA6yE,gBAAc,SAAtBx3E,G,mBADTuE,EAAAA,GAAAA,IAQM,OANHkI,IAAKzM,EAAKlE,GACXuH,MAAM,U,EAENoB,EAAAA,GAAAA,GAEM,O,6CAFuBE,EAAA+yE,SAAS13E,EAAI,iB,EACxCgI,EAAAA,GAAAA,IAA8B8vE,EAAA,CAAd93E,KAAMA,GAAI,0B,2lBGHpC,SA/BiB,CACfiF,WAAY,CACV8yE,aAAAA,GACAhX,KAAAA,GAAAA,EACAiX,QAAAA,IAEF1rE,SAAQpP,GAAAA,GAAA,IACH0qD,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,MAE5CgwC,EAAAA,EAAAA,IAAW,CAAC,oBAEjBzrD,KAAI,WACF,MAAO,CACL67E,OAAO,EAEX,EACA7oE,QAAO,WACLpL,KAAK0L,OAAOjR,SAAS,aAAc,CAAEuoC,QAAQ,GAC/C,EACAnjC,QAAS,CACPq0E,cAAa,WACXl0E,KAAKi0E,OAAQ,EACbj0E,KAAK0L,OAAOjR,SAAS,aAAc,CAAEuoC,QAAQ,GAC/C,EACAmxC,QAAO,WACLn0E,KAAKi0E,OAAQ,CACf,ICvBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wGXN9CtzE,EAAAszE,QAAK,YAAhB1zE,EAAAA,GAAAA,IAEM,MAAAC,GAAA,EADJwD,EAAAA,GAAAA,IAAmCowE,EAAA,CAAzBC,SAAQ1zE,EAAAuzE,eAAa,sCAEjC3zE,EAAAA,GAAAA,IAqCM,MArCNokD,GAqCM,EAjCJlkD,EAAAA,GAAAA,GAUM,MAVNokD,GAUM,EATJpkD,EAAAA,GAAAA,GAEO,OAFPukD,IAEOJ,EAAAA,GAAAA,IADFjkD,EAAA8L,GAAG,gBAAD,IAEPhM,EAAAA,GAAAA,GAKS,UAJPpB,MAAM,iBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAwzE,SAAAxzE,EAAAwzE,QAAAr6E,MAAA6G,EAAAhE,UAAO,K,SAEZgE,EAAA8L,GAAG,cAAD,MAGThM,EAAAA,GAAAA,GAqBM,MArBNwkD,GAqBM,CAnBItkD,EAAAq8C,eAAevjD,OAAS,IAAH,YAD7B8G,EAAAA,GAAAA,IAaM,MAbN6lD,GAaM,EATJpiD,EAAAA,GAAAA,IAQOm6D,EAAA,CARAC,MAAOz9D,EAAAq8C,gBAAc,CACfr5C,MAAI06D,EAAAA,GAAAA,KACb,SAAA7jE,GAAA,IADgBmJ,EAAInJ,EAAJmJ,KAAI,qBACpBgiD,EAAAA,GAAAA,IAIE2uB,EAAA,CAHC7rE,IAAK9E,EAAK7L,GACVy8E,SAAS,EACTrxC,KAAMv/B,G,yDAKfpD,EAAAA,GAAAA,IAKM,MALN6kD,GAKM,EADJ3kD,EAAAA,GAAAA,GAA0D,aAAAmkD,EAAAA,GAAAA,IAAjDjkD,EAAA8L,GAAG,sCAAD,U,aYrCZpN,MAAM,a,IACJA,MAAM,mB,IAEPwxC,IAAI,QACJxxC,MAAM,sC,IAGJwxC,IAAI,SACJxxC,MAAM,2C,IAWDA,MAAM,qB,UAuBTA,MAAM,sB,IAEDA,MAAM,e,IAMbwxC,IAAI,SACJxxC,MAAM,qB,UAWAA,MAAM,mE,UCjDdA,MAAM,kB,IAaHA,MAAM,sB,IA0BMA,MAAM,iB,iBA0BXA,MAAM,c,UAapBA,MAAM,+B,gDCnFV,UACErF,KAAM,UACNsF,MAAO,CAAC,QACRgJ,SAAU,CACRksE,YAAU,WACR,IAAMC,EAAQ,IAAIv+C,KAGlB,OAFAu+C,EAAM75B,SAAS,EAAG,EAAG,EAAG,GAEpB56C,KAAK26C,KAAKE,YAAc45B,EAAM55B,UACzB76C,KAAKyM,GAAG,sBAERzM,KAAK26C,KAAK+5B,mBAAmBC,GAAAA,EAAAA,wBAAsC30E,KAAK40E,MAAM1lE,QAAS,CAAE2lE,IAAK,UAAWC,MAAO,QAE3H,ICfJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCDJzDv0E,EAAAA,GAAAA,IAEO,aAAAqkD,EAAAA,GAAAA,IADFmwB,EAAAP,aAAW,E,8kBEalBnqE,GAAAA,GAAAA,IACE6+B,GAAAA,IACA8rC,GAAAA,KAwFF,SArFoB,CAClBh7E,KAAM,cACNsF,MAAO,CACL,SACA,SACA,YACA,eACA,uBAEF21E,MAAO,CAAC,SACRh0E,WAAY,CACV2lE,QAAAA,GAAAA,QACAsO,WAAAA,GAAAA,EACAC,cAAAA,GAAAA,EACA3D,WAAAA,GAAAA,QACA4D,QAAAA,GAAAA,EACAC,YAAAA,GAAAA,EACAC,gBAAAA,GACA5D,aAAa1R,EAAAA,GAAAA,KAAqB,kBAAM,uCAA0C,KAEpF13D,SAAQpP,GAAAA,GAAA,CAENq8E,UAAS,WAEP,OADav1E,KAAKw1E,aAAap9E,KAAKm1C,WACxBkoC,mBAAmB,KAAM,CAAEC,KAAM,UAAWC,OAAQ,UAAWC,QAAQ,GACrF,EACAC,cAAa,WACX,OAAO71E,KAAKisB,QAAQsX,aAAevjC,KAAK6T,YAAY/b,EACtD,EACAm0B,QAAO,WACL,OAAOjsB,KAAKw1E,aAAap9E,IAC3B,EACA09E,UAAS,WACP,MAAkC,YAA3B91E,KAAKw1E,aAAa/1E,IAC3B,EACAgzE,wBAAuB,WACrB,MAAO,CACLI,QAAS,GACT/5E,OAAQkH,KAAKisB,QAAQnzB,OACrBg6E,SAAU9yE,KAAKisB,QAAQtsB,SAAW,GAClCxB,KAAM6B,KAAKisB,QAAQtsB,SAAW,GAC9B0hB,YAAarhB,KAAKisB,QAAQ5K,YAE9B,EACA00D,cAAa,WACX,OAAO/1E,KAAKisB,QAAQ5K,YAAY5nB,OAAS,CAC3C,IACGmqD,EAAAA,EAAAA,IAAS,CACVoyB,aAAc,SAAAt7E,GAAK,OAAIA,EAAK,UAAW4V,eAAeC,SAAS,EAC/DsD,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,EAC7CsF,oBAAqB,SAAAze,GAAK,OAAIA,EAAM2X,SAAS8G,mBAAmB,KAChE,IACF88D,mBAAkB,WAChB,OAAIj2E,KAAK61E,cACA,CAAC,EAED,CAAEK,KAAM,GAEnB,IACGryB,EAAAA,EAAAA,IAAW,CAAC,eAAgB,cAEjCzrD,KAAI,WACF,MAAO,CACL+9E,SAAS,EACTC,YAAY,EAEhB,EACAv2E,QAAS,CACPw2E,QAAO,SAAEC,GACPt2E,KAAKkG,MAAM,QAAS,CAAEqwE,UAAWD,EAAMp7B,eAAgBl7C,KAAKw1E,aAAat6B,gBAC3E,EACMG,cAAa,WAAI,IAAA35C,EAAA,YAAApG,EAAAA,EAAAA,GAAAC,IAAAA,MAAA,SAAAC,IAAA,OAAAD,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAC4C,IAA/CyE,OAAOm2E,QAAQ90E,EAAK+K,GAAG,yBAC1B,CAAF/Q,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EACL8F,EAAKgK,OAAOjR,SAAS,oBAAqB,CAC9C6gD,UAAW55C,EAAK8zE,aAAap9E,KAAKN,GAClC6tC,OAAQjkC,EAAK8zE,aAAap9E,KAAKshD,UAC/B,OAEJh4C,EAAKy0E,SAAU,EACfz0E,EAAK00E,YAAa,EAAK,wBAAA16E,EAAAe,OAAA,GAAAjB,EAAA,IATFF,EAUvB,IC5FJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,+LJLjDqF,EAAAm1E,YAAS,YADjBv1E,EAAAA,GAAAA,IAwFM,O,MAtFJlB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,uBAAsB,yBACO5oD,EAAA81E,uBAClCC,YAAS71E,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA01E,SAAQ,EAAD,GAClBM,aAAU91E,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA01E,SAAQ,EAAD,I,EAEpB51E,EAAAA,GAAAA,GAgFM,OA/EJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,eAAc,WACG5oD,EAAAk1E,cAAa,UAAel1E,EAAAk1E,mB,CAG1Cl1E,EAAAk1E,e,kBAAa,YADtBt1E,EAAAA,GAAAA,IAcM,MAdNC,GAcM,CATIG,EAAA60E,aAAap6B,SAAM,YAD3BuK,EAAAA,GAAAA,IAScmsB,EAAA,C,MAPX,UAASnxE,EAAA8tD,OAAO32D,I,oBAEjB,iBAIE,EAJFkM,EAAAA,GAAAA,IAIE+tE,EAAA,CAHCwC,SAAS,EACT,gBAAe5zE,EAAAq1E,aACfh6E,KAAM2E,EAAA8tD,Q,+EAIbhuD,EAAAA,GAAAA,GA4DM,MA5DNkkD,GA4DM,EA3DJlkD,EAAAA,GAAAA,GA0DM,OAzDJpB,MAAM,cACL24D,OAAK2E,EAAAA,GAAAA,IAAA,aAAiBh8D,EAAAsrB,QAAQ0X,WAAa,MAAQ,M,EAEpDljC,EAAAA,GAAAA,GAqDM,OApDJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,eAAc,uBACa5oD,EAAAo1E,cAAa,QAAap1E,EAAA60E,aAAap9E,KAAK0hD,QAAO,MAAWn5C,EAAA60E,aAAap9E,KAAK8S,SACjH8sD,MAAA,sBACC4e,aAAU/1E,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAw1E,SAAU,CAAH,GACnBQ,aAAU91E,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAw1E,SAAU,CAAH,I,EAEpB11E,EAAAA,GAAAA,GAgCM,OA/BJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,oBAAmB,SACJ5oD,EAAAw1E,SAAWx1E,EAAAy1E,e,EAEhCpyE,EAAAA,GAAAA,IA2BUqjE,EAAA,CA1BRC,QAAQ,QACRuP,UAAU,MACV,oBAAkB,mBACjB,WAAU,CAAA5kC,EAAA,aACVuqB,OAAQ77D,EAAAs1E,mBACRpI,OAAIhtE,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAy1E,YAAa,CAAH,GAChBjiC,QAAKtzC,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAy1E,YAAa,CAAH,I,CAEPz2E,SAAO0+D,EAAAA,GAAAA,KAChB,iBAOM,EAPN59D,EAAAA,GAAAA,GAOM,MAPNokD,GAOM,EANJpkD,EAAAA,GAAAA,GAKS,UAJPpB,MAAM,kDACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA06C,eAAA16C,EAAA06C,cAAAvhD,MAAA6G,EAAAhE,UAAa,I,EAErBqH,EAAAA,GAAAA,IAAuB+hD,EAAA,CAAfj8C,KAAK,WAAO,SAAG,KAAC86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,iBAAD,O,IAIxB66D,SAAOjJ,EAAAA,GAAAA,KAChB,iBAKS,EALT59D,EAAAA,GAAAA,GAKS,UAJPpB,MAAM,2BACL+S,MAAOzR,EAAA8L,GAAG,e,EAEXzI,EAAAA,GAAAA,IAA4B+hD,EAAA,CAApBj8C,KAAK,gBAAY,M,4BAKjC9F,EAAAA,GAAAA,IAYgB8yE,EAAA,CAXdz3E,MAAM,kBACLmiB,OAAQ7gB,EAAA8xE,wBACR,gBAAc,G,CAEJzD,QAAM3Q,EAAAA,GAAAA,KACf,iBAIO,EAJP59D,EAAAA,GAAAA,GAIO,OAJPwkD,IAIOL,EAAAA,GAAAA,IADFjkD,EAAA40E,WAAS,G,0DAS5Bh1E,EAAAA,GAAAA,IAKM,MALN6lD,GAKM,EADJpiD,EAAAA,GAAAA,IAA6C+yE,EAAA,CAA3Bp8B,KAAMh6C,EAAA60E,aAAa76B,M,wBK7FlC,IAAMq8B,GAAoB,WAC/B,MAAO,CACL1tE,UAAWjJ,OAAOm5D,QAClBlL,aAAcviD,SAASqpB,gBAAgBk5B,aACvCjiD,aAAchM,OAAOiM,YAEzB,E,ykBCSAjC,GAAAA,GAAAA,IACE2gD,GAAAA,IACA4I,GAAAA,KAGF,IAMMqjB,GAAO,CACXh2E,WAAY,CACVi2E,YAAAA,GACA/E,UAAAA,GACAprB,eAAAA,GAAAA,GAEF3uD,KAAI,WACF,MAAO,CACL++E,2BAA2B,EAC3BC,2BAAuB70E,EACvB80E,mBAAoB,CAAC,EACrBC,0BAA2B,OAC3BC,kBAAkB,EAClBC,gBAAiB,CAAC,EAEtB,EACApsE,QAAO,WACLpL,KAAKyzB,gBACLpzB,OAAOgL,iBAAiB,SAAUrL,KAAKy3E,aACzC,EACA3pB,QAAO,WAAI,IAAApsD,EAAA,KACTrB,OAAOgL,iBAAiB,SAAUrL,KAAKyvE,mBACR,IAApB1jE,SAASu3B,QAClBv3B,SAASV,iBAAiB,mBAAoBrL,KAAK0vE,wBAAwB,GAG7E1vE,KAAKuuD,WAAU,WACb7sD,EAAK+1E,cACP,GACF,EACAhtE,UAAS,WACPpK,OAAOmL,oBAAoB,SAAUxL,KAAKyvE,cAC1CpvE,OAAOmL,oBAAoB,SAAUxL,KAAKy3E,mBACX,IAApB1rE,SAASu3B,QAAwBv3B,SAASP,oBAAoB,mBAAoBxL,KAAK0vE,wBAAwB,GAC1H1vE,KAAK0L,OAAOjR,SAAS,mBACvB,EACA6N,SAAQpP,GAAAA,GAAA,CACNw+E,UAAS,WACP,OAAO13E,KAAK48C,aAAe58C,KAAK48C,YAAYnZ,OAC9C,EACAsZ,YAAW,WACT,OAAO/8C,KAAK84D,OAAO52B,OAAO8wC,YAC5B,EACA2E,gBAAe,WACb,OAAI33E,KAAK03E,UACA13E,KAAKyM,GAAG,qBAAsB,CAAEwP,SAAUjc,KAAK03E,UAAUr7E,iBAEzD,EAEX,EACAu7E,cAAa,WACX,OAAOn5B,GAAAA,QAAoBz+C,KAAK68C,0BAClC,EACA1C,gBAAe,WACb,OAAOn6C,KAAK68C,2BAA6B78C,KAAK68C,0BAA0B1C,eAC1E,EACAquB,iBAAgB,WACd,OAAOxoE,KAAK2T,aAAaovB,iBAAmB/iC,KAAKkkC,wBAA0BqB,EAAAA,GAAAA,MAC7E,IACGse,EAAAA,EAAAA,IAAW,CACZ,cACA,4BACA,8BACA,mBAECD,EAAAA,EAAAA,IAAS,CACVl4B,kBAAmB,SAAAhxB,GAAK,OAAIA,EAAM+wB,IAAIC,iBAAiB,EACvDwY,sBAAuB,SAAAxpC,GAAK,OAAIA,EAAM+wB,IAAIyY,qBAAqB,EAC/DsrC,aAAc,SAAA90E,GAAK,MAAmC,WAA/BA,EAAK,UAAWgW,UAAuB,EAC9DmD,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,KAGjD+5C,MAAO,CACLgqB,cAAa,WAAI,IAAAjvE,EAAA,KAGTkvE,EAA0B73E,KAAKiL,YAlFf,IAmFtBjL,KAAKuuD,WAAU,WACTspB,GACFlvE,EAAKmvE,YAET,GACF,EACAhf,OAAQ,WACN94D,KAAKyzB,eACP,EACAyQ,sBAAqB,SAAE9L,GACjBA,IAAamN,EAAAA,GAAAA,QACfvlC,KAAK+3E,UAAU,CAAEC,cAAc,GAEnC,GAEFn4E,QAAS,CAEPo4E,eAAc,SAAAz9E,GAAiC,IAA7B+7E,EAAS/7E,EAAT+7E,UAAWr7B,EAAc1gD,EAAd0gD,eAC3Bl7C,KAAKo3E,sBAAwBb,EAAYr7B,OAAiB34C,CAC5D,EACA21E,eAAc,WAAI,IAAAlvE,EAAA,KAChBhJ,KAAKuuD,WAAU,WACbvlD,EAAKyuE,cACP,GACF,EACA/H,uBAAsB,WAAI,IAAAnmE,EAAA,KACxBvJ,KAAKuuD,WAAU,YACRxiD,SAASu3B,QAAU/5B,EAAK0B,YA9GT,KA+GlB1B,EAAKuuE,WAAW,CAAEK,WAAW,GAEjC,GACF,EAEAV,aAAY,WAAa,IAAAlN,EAAA,KAAX/mC,EAAI7mC,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,CAAC,EACpBy7E,EAA4B50C,EAApB60C,QAAAA,OAAO,IAAAD,GAAQA,EAEnBC,EACFn9E,YAAW,WACTqvE,EAAKkN,aAAYv+E,GAAAA,GAAC,CAAC,EAAIsqC,GAAI,IAAE60C,SAAS,IACxC,GAxHwB,KA4H1Br4E,KAAKuuD,WAAU,WACb,IAAwD+pB,EAAnBtB,KAA7B3qE,aACFksE,QADc,IAAAD,OAAG/1E,EAAS+1E,GACJ/N,EAAK8M,mBAAmBhrE,aACvC,IAATksE,GAAehO,EAAKt/D,eACtBs/D,EAAKhc,WAAU,WACbluD,OAAOm4E,SAAS,CAAE3I,KAAMj2E,KAAK6+E,MAAMF,IACrC,IAEFhO,EAAK8M,mBAAqBL,IAC5B,GACF,EACAc,WAAU,WAAgB,IAAdY,EAAO/7E,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrBg8E,EAAiDD,EAAzCE,SAAAA,OAAQ,IAAAD,EAAG,OAAMA,EAAAE,EAAwBH,EAAtBP,UAAAA,OAAS,IAAAU,GAAQA,EAC5C74E,KAAKuuD,WAAU,WACbluD,OAAO26D,SAAS,CAAE6U,IAAK9jE,SAASqpB,gBAAgBk5B,aAAcsqB,SAAAA,GAChE,IACIT,GACFn4E,KAAKg+C,UAET,EACAA,SAAQ,WACN,GAAMh+C,KAAK68C,2BAA6B78C,KAAK68C,0BAA0Br9B,QACnEzT,SAASu3B,OAAb,CACA,IAAM2a,EAAaj+C,KAAK68C,0BAA0Br9B,MAClDxf,KAAK0L,OAAOjR,SAAS,WAAY,CAC/B3C,GAAIkI,KAAK48C,YAAY9kD,GACrBmmD,WAAAA,GAJ4B,CAMhC,EACAhzC,YAAW,SAAEklB,GACX,ODlKuB,WAAgB,IAAfA,EAAMxzB,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,EAC/B2xD,EAAejuD,OAAOm5D,QAAUrpC,EAEtC,OADoBpkB,SAASqpB,gBAAgBk5B,aAAejuD,OAAOiM,aAC7CgiD,CACxB,CC8JawqB,CAAc3oD,EACvB,EACA4oD,WAAU,WACR,OAAO14E,OAAOm5D,SAAW,CAC3B,EACAwf,eAAc,WAAI,IAAA3N,EAAA,KAChBhrE,OAAOnF,YAAW,WACZmwE,EAAKpgE,YAlK+B,KAmKtCogE,EAAK3/D,OAAOjR,SAAS,oBAAqB4wE,EAAKxuB,0BAA0BlX,OAE7E,GAAG,IACL,EACA8pC,aAAcS,MAAW,WAAY,IAAA5E,EAAA,KACnCtrE,KAAKq3E,mBAAqBL,KACrBh3E,KAAK48C,cAEN58C,KAAK+4E,aACP/4E,KAAK+3E,UAAU,CAAEv4D,MAAOxf,KAAK68C,0BAA0Bp9B,QAC9Czf,KAAKiL,YA7K0B,KA8KxCjL,KAAKm3E,2BAA4B,EACjCn3E,KAAKg5E,iBACDh5E,KAAKm6C,gBAAkB,GAIzB95C,OAAOnF,YAAW,WAEZowE,EAAKl/D,KAAKk/D,EAAKttB,UACrB,GArLiB,OAwLnBh+C,KAAKm3E,2BAA4B,EAErC,GAAG,KACH8B,eAAc,SAAEC,GACd,IDzM4BC,EAAkBC,ECyMxCC,EAAuBrC,KAC7B32E,OAAO26D,SAAS,CACd6U,KD3M0BsJ,EC2MHD,ED3MqBE,EC2MEC,ED1M7CF,EAAiB7vE,WAAa8vE,EAAY9qB,aAAe6qB,EAAiB7qB,gBC4M/E,EACAypB,UAAS,SAAA18E,GAAwD,IAAAowE,EAAA,KAAA6N,EAAAj+E,EAApD28E,aAAAA,OAAY,IAAAsB,GAAQA,EAAAC,EAAAl+E,EAAEm+E,YAAAA,OAAW,IAAAD,GAAQA,EAAE/5D,EAAKnkB,EAALmkB,MAChD2/B,EAAqBn/C,KAAK68C,0BAChC,GAAKsC,KACDq6B,IAAex5E,KAAKwoE,kBAAxB,CAEA,IAAM7iC,EAASwZ,EAAmBxZ,OAC5B8zC,IAAuBj6D,EACvBk6D,EAAUF,GAAer6B,EAAmB3/B,MAElD,OAAOxf,KAAK0rB,kBAAkBiuD,aAAa,CAAE7hF,GAAI6tC,EAAQnmB,MAAAA,EAAOk6D,QAAAA,IAC7DjiF,MAAK,SAAC4X,GAED2oE,GACFv5B,GAAAA,MAAkBU,GAGpB,IAAMy6B,EAAuB5C,KAC7BvL,EAAK//D,OAAOjR,SAAS,kBAAmB,CAAEkrC,OAAAA,EAAQt2B,SAAAA,IAAY5X,MAAK,WACjEg0E,EAAKld,WAAU,WACTkrB,GACFhO,EAAKwN,eAAeW,KDvN3B7tE,SAASqpB,gBAAgBk5B,aAAejuD,OAAOiM,cC8NnB+C,EAAS5V,OAAS,GACvCgyE,EAAKsM,UAAU,CAAEv4D,MAAOisD,EAAK5uB,0BAA0Bp9B,OAE3D,GACF,GACF,GA7BiD,CA8BrD,EACMgU,cAAa,WAAI,IAAAw4C,EAAA,YAAA3wE,EAAAA,EAAAA,GAAAC,IAAAA,MAAA,SAAAC,IAAA,IAAA0nC,EAAA,OAAA3nC,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACwC,GAAzDsnC,EAAO+oC,EAAKnvB,4BAA4BmvB,EAAKlvB,aACtC,CAAFrhD,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEQqwE,EAAKvgD,kBAAkBmuD,gBAAgB,CAAE3oD,UAAW+6C,EAAKlvB,cAAc,OAApF7Z,EAAIxnC,EAAA4T,KAAA5T,EAAAE,KAAG,GAAH,aAAAF,EAAAC,KAAG,EAAHD,EAAA8T,GAAA9T,EAAA,SAEJ6gB,QAAQrR,MAAM,mCAAkCxP,EAAA8T,IAChDy8D,EAAKsL,kBAAmB,EAAI,QAG5Br0C,IACF+oC,EAAK1d,WAAU,WACb0d,EAAK6L,WAAW,CAAEK,WAAW,GAC/B,IACAlM,EAAKvgE,OAAOjR,SAAS,gBAAiB,CAAEyoC,KAAAA,IACxC+oC,EAAK6N,mBACN,yBAAAp+E,EAAAe,OAAA,GAAAjB,EAAA,iBAhBoBF,EAiBvB,EACAw+E,gBAAe,WAAI,IAAAtN,EAAA,KACjBxsE,KAAK0L,OAAOjR,SAAS,2BAA4B,CAC/C+pC,QAAS,kBAAM1Q,EAAAA,GAAAA,IAAgB,kBAAM04C,EAAKuL,UAAU,CAAEyB,aAAa,GAAO,GAAE,IAAK,IAEnFx5E,KAAK+3E,UAAU,CAAEC,cAAc,GACjC,EACA+B,wBAAuB,WAAI,IAAA/M,EAAA,KACzBhtE,KAAKuuD,WAAU,WACbye,EAAKyK,eAGLzK,EAAK8K,WAAW,CAAEK,WAAW,GAC/B,GACF,EACA6B,YAAW,SAAAr8E,GAAqC,IAAAs8E,EAAA,KAAjCz4D,EAAM7jB,EAAN6jB,OAAQZ,EAAKjjB,EAALijB,MAAOs5D,EAAcv8E,EAAdu8E,eACtBh4C,EAAS,CACbpqC,GAAIkI,KAAK48C,YAAY9kD,GACrB6H,QAAS6hB,EACT04D,eAAAA,GAGEt5D,EAAM,KACRshB,EAAOi4C,QAAUv5D,EAAM,GAAG9oB,IAG5B,IAAM8hD,EvKjRoB,SAAHp/C,GAAiE,IAA1C6mB,EAAW7mB,EAAX6mB,YAAapC,EAAMzkB,EAANykB,OAAQi7D,EAAc1/E,EAAd0/E,eACjEtgC,EAAc,CAClBj6C,QAFsCnF,EAAPmF,QAG/B+5C,QAH8Cl/C,EAANmrC,OAIxC4H,WAAY,IAAIrX,KAChBp+B,GAAI,GAAFuB,QAAK,IAAI68B,MAAO2kB,WAClBx5B,YAAAA,EACAkiB,WAAYtkB,EACZ86B,gBAAiBmgC,EACjBphF,OAAQ,GACRghD,SAAS,EACTsgC,cAAc,GAOhB,OAJI/4D,EAAY,KACdu4B,EAAYjW,WAAatiB,EAAY,IAGhCu4B,CACT,CuK8P0BygC,CAAiB,CACnCh5D,YAAaT,EACb+kB,OAAQ3lC,KAAK48C,YAAY9kD,GACzB6H,QAAS6hB,EACTvC,OAAQjf,KAAK6T,YAAY/b,GACzBoiF,eAAAA,IAUF,OAPAl6E,KAAK0L,OAAOjR,SAAS,kBAAmB,CACtCkrC,OAAQ3lC,KAAK48C,YAAY9kD,GACzBuX,SAAU,CAACuqC,KACVniD,MAAK,WACNwiF,EAAKF,yBACP,IAEO/5E,KAAKs6E,cAAc,CAAEp4C,OAAAA,EAAQ0X,YAAAA,EAAa2gC,YA5RnC,IA6RhB,EACAD,cAAa,SAAA18E,GAAsD,IAAA48E,EAAA,KAAlDt4C,EAAMtkC,EAANskC,OAAQ0X,EAAWh8C,EAAXg8C,YAAW6gC,EAAA78E,EAAE28E,YAAAA,OAAW,IAAAE,EA9RjC,GA8R+CA,EAC7D,KAAIF,GAAe,GA2BnB,OAzBAv6E,KAAK0rB,kBAAkBgvD,gBAAgBx4C,GACpCzqC,MAAK,SAAAW,GAOJ,OANAoiF,EAAK9uE,OAAOjR,SAAS,kBAAmB,CACtCkrC,OAAQ60C,EAAK59B,YAAY9kD,GACzB0hD,aAAa,EACbnqC,SAAU,CAAAnW,GAAAA,GAAA,GAAMd,GAAI,IAAEuhD,OAAQC,EAAY9hD,QAGrCM,CACT,IAAE,OACK,SAAA8S,GAYL,OAXAqR,QAAQrR,MAAM,wBAAyBA,GACvCsvE,EAAK9uE,OAAOjR,SAAS,qBAAsB,CACzCkrC,OAAQ60C,EAAK59B,YAAY9kD,GACzB6hD,OAAQC,EAAY9hD,GACpBokD,QAhTQ,KAgTCq+B,KAENrvE,EAAM01C,YAAc,KAAO11C,EAAM01C,WAAa,KAA0B,oBAAlB11C,EAAM+gB,WAC/DuuD,EAAKhD,gBAAgB59B,EAAY9hD,IAAMoD,YAAW,WAChDs/E,EAAKF,cAAc,CAAEp4C,OAAAA,EAAQ0X,YAAAA,EAAa2gC,YAAaA,EAAc,GACvE,GAAG,IAAI3gF,KAAA+gF,IAAI,EArTH,GAqTuBJ,KAE1B,CAAC,CACV,IAEKhjF,QAAQC,QAAQoiD,EACzB,EACA65B,OAAM,WACJzzE,KAAKI,QAAQhB,KAAK,CAAEpF,KAAM,QAASkoC,OAAQ,CAAE9K,SAAUp3B,KAAK6T,YAAY5X,cAC1E,IAIJ,YClVA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qJRNzDsE,EAAAA,GAAAA,IA2FM,MA3FNC,GA2FM,EA1FJC,EAAAA,GAAAA,GAyFM,MAzFNkkD,GAyFM,EAxFJlkD,EAAAA,GAAAA,GAuFM,MAvFNokD,GAuFM,EAnFJpkD,EAAAA,GAAAA,GAmBM,MAnBNukD,GAmBM,EAfJvkD,EAAAA,GAAAA,GAQS,UAPPpB,MAAM,iCACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA8yE,QAAA9yE,EAAA8yE,OAAA35E,MAAA6G,EAAAhE,UAAM,I,EAEdqH,EAAAA,GAAAA,IAGE+hD,EAAA,CAFAO,KAAK,KACLx8C,KAAK,oBAGTrJ,EAAAA,GAAAA,GAKM,MALNwkD,GAKM,EAJJjhD,EAAAA,GAAAA,IAGEivE,EAAA,CAFCj3E,KAAM2E,EAAA+2E,UACN,eAAa,G,0BAIpBj3E,EAAAA,GAAAA,GAsBM,OArBJpB,MAAM,eACL24D,OAAK2E,EAAAA,GAAAA,IAAA,CAAAzwD,OAAYvL,EAAA22E,6B,CAED32E,EAAA42E,mB,YAUjBh3E,EAAAA,GAAAA,IAOM,MAPN6lD,GAOM,EAHJ3lD,EAAAA,GAAAA,GAEM,MAFN2kD,IAEMR,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,6BAAD,QAfwB,cAC/BlM,EAAAA,GAAAA,IAOEwkD,GAAAA,GAAA,CAAAt8C,IAAA,IAAA0hD,EAAAA,GAAAA,IANuBxpD,EAAAi3E,eAAa,SAA7BpC,G,mBADT7vB,EAAAA,GAAAA,IAOEi1B,EAAA,CALCnyE,IAAK+sE,EAAa19E,GAClB22D,OAAQ9tD,EAAA+2E,UACR,iBAAgBlC,EAChB,wBAAuBA,EAAat6B,iBAAmBv6C,EAAAy2E,sBACvDf,QAAO11E,EAAAs3E,gB,gFAQH,IAIXx3E,EAAAA,GAAAA,GAuCM,MAvCN4kD,GAuCM,EAnCJ5kD,EAAAA,GAAAA,GAcM,OAbJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,wBAAuB,SACR5oD,EAAAw2E,6BACpBr3E,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAm3E,WAAW,CAADc,SAAA,c,EAElBn4E,EAAAA,GAAAA,GAQO,cAPLuD,EAAAA,GAAAA,IAA8B+hD,EAAA,CAAtBj8C,KAAK,iBAELnJ,EAAAw5C,kBAAe,YADvB55C,EAAAA,GAAAA,IAKM,MALN8lD,IAKMzB,EAAAA,GAAAA,IADDjkD,EAAAw5C,iBAAe,4BAIxBn2C,EAAAA,GAAAA,IAmBEmjD,EAAA,CAlBC,mBAAiB,EACjB,0BAAwB,EACxB,kBAAgB,EAChB,wBAAsB,EACtB,iBAAe,EACf,gCAA8B,EAC9B,iBAAgBxmD,EAAA42E,mBAAqB52E,EAAAi8C,YACrC,mBAAiB,EACjB,sBAAoB,EACpB,eAAcj8C,EAAAq5E,YACd,mBAAkBr5E,EAAA6uE,aAClB,kBAAiB7uE,EAAA6uE,aACjB,cAAa7uE,EAAA6uE,aACbrqB,YAAaxkD,EAAAg3E,gBACb,aAAY,EACb,aAAW,MACX,yBAAuB,MACtBkD,SAAQl6E,EAAA82E,c,qJSnFfp4E,MAAM,oC,UAYJA,MAAM,iB,UAUNA,MAAM,uB,oFAwGRA,MAAM,kC,IAEDA,MAAM,iB,IACJA,MAAM,S,IAIRA,MAAM,c,eCvIRA,MAAM,iC,UAGPA,MAAM,S,UAOJA,MAAM,6B,mECVhB,UACEC,MAAO,CAAC,OAAQ,gBAChBlH,KAAI,WACF,MAAO,CACL/B,YAAY,EACZykF,8BAA8B,EAElC,EACA75E,WAAY,CACV+4D,aAAAA,GAAAA,GAEF1xD,SAAU,CACRuB,MAAK,WACH,OAAI7J,KAAK3J,WACA2J,KAAKyM,GAAG,6BAERzM,KAAKyM,GAAG,4BAEnB,EACAsuE,qCAAoC,WAClC,OAAO/6E,KAAK0L,OAAOoP,QAAQnH,aAAawD,8BAC1C,GAEFtX,QAAS,CACPm7E,mCAAkC,WAChCh7E,KAAK86E,8BAA+B,CACtC,EACAG,mCAAkC,WAChCj7E,KAAK86E,8BAA+B,CACtC,EACAh7E,QAAO,WACAE,KAAK+6E,qCAGR/6E,KAAKg7E,qCAFLh7E,KAAKk7E,2BAIT,EACAA,0BAAyB,WAAI,IAAAx5E,EAAA,KAC3B1B,KAAK3J,YAAa,EAClB2J,KAAK0L,OAAOjR,SAAS,0BAA2BuF,KAAKu4B,aAAazgC,IAAIL,MAAK,WACzEiK,EAAKrL,YAAa,CACpB,IACA2J,KAAKi7E,oCACP,ICtCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,gGCJzD16E,EAAAA,GAAAA,IA6BS,UA5BPlB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,mCAAkC,CAAA4xB,QACrBx6E,EAAAtK,cAClBuT,SAAUjJ,EAAAtK,WACV+b,MAAOzR,EAAA8L,GAAG,6BACV3M,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAb,SAAAa,EAAAb,QAAAhG,MAAA6G,EAAAhE,UAAO,I,qBAEZgE,EAAAkJ,OAAQ,IACX,iBAAA87C,EAAAA,GAAAA,IAoBW+V,GAAAA,GAAA,CApBDvuB,GAAG,UAAQ,CAEXxsC,EAAAm6E,+BAA4B,YADpCn1B,EAAAA,GAAAA,IAkBgBgW,EAAA,C,MAhBbvpD,MAAOzR,EAAA8L,GAAG,2CACV,eAAc9L,EAAA8L,GAAG,mDACjB,cAAa9L,EAAA8L,GAAG,mDAChBmvD,WAAUj7D,EAAAu6E,0BACVrf,YAAWl7D,EAAAs6E,oC,oBAEZ,iBASS,EATTj3E,EAAAA,GAAAA,IASS85D,EAAA,CARPC,QAAQ,oCACRlhE,IAAI,Q,CAEOb,MAAIqiE,EAAAA,GAAAA,KACb,iBAEE,EAFF59D,EAAAA,GAAAA,GAEE,Q,aADAmkD,EAAAA,GAAAA,IAAQjkD,EAAoB3E,KAAfK,iB,oICK3B,GAxBmB,CACjBiD,MAAO,CACL,OACA,gBAEF2B,WAAY,CACVqyE,cAAAA,GAAAA,EACA8H,aAAAA,GAAAA,EACAC,aAAAA,GAAAA,EACAC,qBAAAA,IAEFhzE,SAAU,CACRizE,KAAI,WACF,OAAOv7E,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAY/b,KAAOkI,KAAKhE,KAAKlE,EAC9D,EACAk7B,SAAQ,WACN,OAAOhzB,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACjC,EACA0kB,aAAY,WACV,OAAOv4B,KAAK0L,OAAOoP,QAAQyd,aAAav4B,KAAKhE,KAAKlE,GACpD,IChBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wKLNzD6tD,EAAAA,GAAAA,IA+BkB61B,EAAA,CA/BAx/E,KAAM2E,EAAA3E,MAAI,C,mBAC1B,iBA6BM,EA7BNyE,EAAAA,GAAAA,GA6BM,MA7BND,GA6BM,CA3BIG,EAAA46E,OAAU56E,EAAA86E,cAAgB96E,EAAA43B,aAAamjD,cAAW,YAD1Dn7E,EAAAA,GAAAA,IAKO,OALPokD,IAKOC,EAAAA,GAAAA,IADFjkD,EAAA46E,KAAO56E,EAAA8L,GAAG,qBAAuB9L,EAAA8L,GAAG,0BAAD,qBAEvB9L,EAAAqyB,SAQKryB,EAAA46E,M,kBAAI,YAA1Bh7E,EAAAA,GAAAA,IAaWwkD,GAAAA,GAAA,CAAAt8C,IAAA,KAZTzE,EAAAA,GAAAA,IAKE23E,EAAA,CAJCpjD,aAAc53B,EAAA43B,aACd,kBAAiB53B,EAAA8L,GAAG,6BACrBpN,MAAM,4BACLrD,KAAM2E,EAAA3E,M,kDAGD2E,EAAA86E,cAAgB96E,EAAA43B,aAAamjD,cAAW,YADhD/1B,EAAAA,GAAAA,IAKEi2B,EAAA,C,MAHC5/E,KAAM2E,EAAA3E,KACNu8B,aAAc53B,EAAA43B,aACfl5B,MAAM,sB,0DAnBe,YAAzBkB,EAAAA,GAAAA,IAOWwkD,GAAAA,GAAA,CAAAt8C,IAAA,IALA9H,EAAA43B,aAAanI,WAGK,kBAHI,YAD/B7vB,EAAAA,GAAAA,IAKM,MALNskD,GAKM,EADJ7gD,EAAAA,GAAAA,IAA6B63E,EAAA,CAAd7/E,KAAM2E,EAAA3E,MAAI,4B,yCMEnCqO,GAAAA,GAAAA,IACEC,GAAAA,IACAwxE,GAAAA,KAGF,IAAMC,IAAeC,EAAAA,GAAAA,GAAa,CAChCzxE,MAAO,SAACjL,EAAOoM,GAAM,OAAKA,EAAOjR,SAAS,iBAAkB6E,EAAM2f,OAAO,EACzEzU,OAAQ,SAAClL,EAAOoM,GAAM,OAAKm8B,KAAIn8B,EAAOoP,QAAQgiB,SAASx9B,EAAM2f,QAAS,cAAe,IAAI/nB,KAAI,SAAAY,GAAE,OAAI4T,EAAOoP,QAAQgiB,SAAShlC,EAAG,GAAC,EAC/HmkF,QAAS,SAAC38E,EAAOoM,GAAM,OAAKA,EAAOjR,SAAS,iBAAkB6E,EAAM2f,OAAO,EAC3EtU,cAAe,QACfE,oBAAqB,CAAC,WALHmxE,CAMlBjf,GAAAA,GAEGmf,IAAaF,EAAAA,GAAAA,GAAa,CAC9BzxE,MAAO,SAACjL,EAAOoM,GAAM,OAAKA,EAAOjR,SAAS,eAAgB6E,EAAM2f,OAAO,EACvEzU,OAAQ,SAAClL,EAAOoM,GAAM,OAAKm8B,KAAIn8B,EAAOoP,QAAQgiB,SAASx9B,EAAM2f,QAAS,YAAa,IAAI/nB,KAAI,SAAAY,GAAE,OAAI4T,EAAOoP,QAAQgiB,SAAShlC,EAAG,GAAC,EAC7HmkF,QAAS,SAAC38E,EAAOoM,GAAM,OAAKA,EAAOjR,SAAS,eAAgB6E,EAAM2f,OAAO,EACzEtU,cAAe,QACfE,oBAAqB,CAAC,WALLmxE,CAMhBjf,GAAAA,GAEGof,GAAgB,WAuJtB,SArJoB,CAClB/jF,KAAI,WACF,MAAO,CACL8S,OAAO,EACP+T,OAAQ,KACR4oC,IAAKs0B,GACLC,UAAW,KAEf,EACAhxE,QAAO,WACL,IAAMixE,EAAcr8E,KAAK84D,OAAO52B,OAChCliC,KAAKs8E,KAAK,CAAEtiF,KAAMqiF,EAAYriF,KAAMlC,GAAIukF,EAAYvkF,KACpDkI,KAAK6nD,IAAMhgB,KAAI7nC,KAAK84D,OAAQ,YAAaqjB,GAC3C,EACA1xE,UAAS,WACPzK,KAAKu8E,cACP,EACAj0E,SAAU,CACR4Z,SAAQ,WACN,OAAOliB,KAAK0L,OAAOhR,MAAMwkB,SAASuB,UAAUzkB,IAC9C,EACAwkB,UAAS,WACP,OAAOxgB,KAAK0L,OAAOhR,MAAMwkB,SAASuB,UAAUD,SAC9C,EACAI,MAAK,WACH,OAAO5gB,KAAK0L,OAAOhR,MAAMwkB,SAASuB,UAAUG,KAC9C,EACA47D,KAAI,WACF,OAAOx8E,KAAKif,QAAUjf,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAY/b,IACxDkI,KAAKif,SAAWjf,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAY/b,EACxD,EACAkE,KAAI,WACF,OAAOgE,KAAK0L,OAAOoP,QAAQgiB,SAAS98B,KAAKif,OAC3C,EACAw9D,WAAU,WACR,MAA4B,0BAArBz8E,KAAK84D,OAAO9+D,IACrB,EACA0iF,kBAAiB,WACf,OAAO18E,KAAKw8E,OAASx8E,KAAKhE,KAAK2gF,YACjC,EACAC,oBAAmB,WACjB,OAAO58E,KAAKw8E,OAASx8E,KAAKhE,KAAK6gF,cACjC,EACAC,kBAAiB,WACf,IAAMC,EAAgBpI,GAAAA,EAAAA,wBAAsC30E,KAAK40E,MAAM1lE,QACvE,OAAOlP,KAAKhE,KAAKghF,UAAY,IAAI9mD,KAAKA,KAAK+hB,MAAMj4C,KAAKhE,KAAKghF,WAAWtI,mBAAmBqI,EAAe,CAAEE,SAAU,MAAOpI,IAAK,UAAWC,MAAO,OAAQoI,KAAM,WAClK,GAEFr9E,QAAS,CACPs9E,aAAY,SAAEC,GACZp9E,KAAKo8E,UAAYgB,CACnB,EACAd,KAAI,SAAEe,GAAc,IAAA37E,EAAA,KACZwyB,EAAwB,SAAChS,EAAUjD,GAEnCA,IAAWvd,EAAKgK,OAAOhR,MAAMwkB,SAASuB,UAAUyB,GAAUjD,QAC5Dvd,EAAKgK,OAAO4G,OAAO,gBAAiB,CAAE4P,SAAAA,IAExCxgB,EAAKgK,OAAOjR,SAAS,wBAAyB,CAAEynB,SAAAA,EAAUjD,OAAAA,GAC5D,EAEMq+D,EAAW,SAACr+D,GAChBvd,EAAKud,OAASA,EACdiV,EAAsB,OAAQjV,GAC9BiV,EAAsB,QAASjV,GAC3Bvd,EAAK86E,MACPtoD,EAAsB,YAAajV,GAGrCvd,EAAKgK,OAAOjR,SAAS,sBAAuBwkB,EAC9C,EAGAjf,KAAKif,OAAS,KACdjf,KAAKkL,OAAQ,EAEb,IAAMqyE,EAAUF,EAAavlF,GACvB0lF,EAAYH,EAAarjF,KAGzBgC,EAAOuhF,EAAUv9E,KAAK0L,OAAOoP,QAAQgiB,SAASygD,GAAWv9E,KAAK0L,OAAOoP,QAAQiiB,eAAeygD,GAC9FxhF,EACFshF,EAASthF,EAAKlE,KAEbylF,EACGv9E,KAAK0L,OAAOjR,SAAS,YAAa8iF,GAClCv9E,KAAK0L,OAAOjR,SAAS,kBAAmB+iF,IACzC/lF,MAAK,SAAA+C,GAAA,IAAG1C,EAAE0C,EAAF1C,GAAE,OAAOwlF,EAASxlF,EAAG,IAAC,OACxB,SAAC2lF,GACN,IAAMC,EAAe71C,KAAI41C,EAAQ,eAE/B/7E,EAAKwJ,MADc,8BAAjBwyE,EACWh8E,EAAK+K,GAAG,uCACZixE,GAGIh8E,EAAK+K,GAAG,qCAEzB,GAEN,EACA8vE,aAAY,WACVv8E,KAAK0L,OAAOjR,SAAS,uBAAwB,QAC7CuF,KAAK0L,OAAOjR,SAAS,uBAAwB,aAC7CuF,KAAK0L,OAAOjR,SAAS,uBAAwB,QAC/C,EACAkjF,WAAU,SAAEN,GACVr9E,KAAKu8E,eACLv8E,KAAKs8E,KAAKe,EACZ,EACAO,YAAW,SAAE/1B,GACX7nD,KAAK6nD,IAAMA,EACX7nD,KAAKI,QAAQjD,QAAQ,CAAEnC,MAAO,CAAE6sD,IAAAA,IAClC,EACAg2B,YAAW,SAAAxiF,GAAc,IAAVuF,EAAMvF,EAANuF,OACU,SAAnBA,EAAO2C,UACT3C,EAASA,EAAOk9E,YAEK,MAAnBl9E,EAAO2C,SACTlD,OAAOC,KAAKM,EAAOF,KAAM,SAE7B,GAEFktD,MAAO,CACL,mBAAoB,SAAUO,GACxBA,GACFnuD,KAAK29E,WAAW,CAAE7lF,GAAIq2D,GAE1B,EACA,qBAAsB,SAAUA,GAC1BA,GACFnuD,KAAK29E,WAAW,CAAE3jF,KAAMm0D,GAE5B,EACA,eAAgB,SAAUA,GACxBnuD,KAAK6nD,IAAMsG,EAAOtG,KAAOs0B,EAC3B,GAEFl7E,WAAY,CACV+lD,SAAAA,GAAAA,EACAgnB,SAAAA,GACA+N,aAAAA,GACAG,WAAAA,GACA6B,WAAAA,GACAzM,YAAAA,GAAAA,EACAhD,aAAAA,GACAmD,YAAAA,GAAAA,IC/KJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0PRNzDlxE,EAAAA,GAAAA,IAiJM,YA/III,EAAA3E,OAAI,YADZuE,EAAAA,GAAAA,IA6HM,MA7HNC,GA6HM,EAzHJwD,EAAAA,GAAAA,IAOEijD,EAAA,CANC,UAAStmD,EAAAse,OACT++D,UAAU,EACVC,SAAUt9E,EAAAuhB,SAASg8D,QACpB,gBAAc,OACdh3B,QAAQ,MACP,mBAAiB,G,+BAGVvmD,EAAA3E,KAAKghF,WAAQ,YADvBz8E,EAAAA,GAAAA,IASO,OATPokD,GASO,EALL3gD,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,iBACNyK,KAAK,mB,SACL,KACF86C,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,qBAAsB,CAAvBuwE,SAAmCr8E,EAAAm8E,qBAAiB,uBAGnDn8E,EAAA3E,KAAKmiF,aAAex9E,EAAA3E,KAAKmiF,YAAY1kF,OAAS,IAAH,YADnD8G,EAAAA,GAAAA,IA4BM,MA5BNskD,GA4BM,iBAxBJtkD,EAAAA,GAAAA,IAuBKwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAtBsBxpD,EAAA3E,KAAKmiF,aAAW,SAAjCC,EAAOx6E,G,mBADjBrD,EAAAA,GAAAA,IAuBK,MArBFkI,IAAK7E,EACNvE,MAAM,sB,EAENoB,EAAAA,GAAAA,GAQK,MAPF2R,MAAOzR,EAAA3E,KAAKqiF,YAAYz6E,GAAO5J,KAChCqF,MAAM,2B,EAEN2E,EAAAA,GAAAA,IAGEguE,EAAA,CAFC5wE,KAAMg9E,EAAMpkF,KACZzB,MAAOoI,EAAA3E,KAAKzD,O,iCAGjBkI,EAAAA,GAAAA,GAQK,MAPF2R,MAAOzR,EAAA3E,KAAKqiF,YAAYz6E,GAAO5E,MAChCK,MAAM,4B,EAEN2E,EAAAA,GAAAA,IAGEguE,EAAA,CAFC5wE,KAAMg9E,EAAMp/E,MACZzG,MAAOoI,EAAA3E,KAAKzD,O,gEAKrByL,EAAAA,GAAAA,IAqEeutE,EAAA,CApEZ,aAAY5wE,EAAAknD,IACZ,uBAAqB,EACrB,YAAWlnD,EAAAi9E,a,oBAEZ,iBAYE,EAZF55E,EAAAA,GAAAA,IAYE+sE,EAAA,CAXAtoE,IAAI,WACHoB,MAAOlJ,EAAA8L,GAAG,sBACVsd,MAAOppB,EAAA3E,KAAKsiF,eACZxP,UAAU,EACV18D,MAAOzR,EAAA8L,GAAG,+BACVyV,SAAUvhB,EAAAuhB,SACX,gBAAc,OACb,UAASvhB,EAAAse,OACT,oBAAmBte,EAAA3E,KAAKkgC,gBACxB,cAAY,EACZ,kBAAiBv7B,EAAAy7E,W,6FAGZz7E,EAAA+7E,oBAAiB,YADzBn8E,EAAAA,GAAAA,IAWM,OATJkI,IAAI,YACHoB,MAAOlJ,EAAA8L,GAAG,uBACV7C,UAAWjJ,EAAA3E,KAAKuiF,e,EAEjBv6E,EAAAA,GAAAA,IAIaw6E,EAAA,CAJA,UAAS79E,EAAAse,QAAM,CACftb,MAAI06D,EAAAA,GAAAA,KACb,SAAA7jE,GAAA,IADgBmJ,EAAInJ,EAAJmJ,KAAI,QACpBK,EAAAA,GAAAA,IAA2By6E,EAAA,CAAdziF,KAAM2H,GAAI,iB,iDAKrBhD,EAAAi8E,sBAAmB,YAD3Br8E,EAAAA,GAAAA,IAcM,OAZJkI,IAAI,YACHoB,MAAOlJ,EAAA8L,GAAG,uBACV7C,UAAWjJ,EAAA3E,KAAK0iF,iB,EAEjB16E,EAAAA,GAAAA,IAOe26E,EAAA,CAPA,UAASh+E,EAAAse,QAAM,CACjBtb,MAAI06D,EAAAA,GAAAA,KACb,SAAAhjE,GAAA,IADgBsI,EAAItI,EAAJsI,KAAI,QACpBK,EAAAA,GAAAA,IAGEy6E,EAAA,CAFCziF,KAAM2H,EACN,iBAAgBhD,EAAA67E,M,oFAKzBx4E,EAAAA,GAAAA,IAWE+sE,EAAA,CAVAtoE,IAAI,QACHoB,MAAOlJ,EAAA8L,GAAG,mBACV7C,UAAWjJ,EAAAigB,MAAMvB,gBAAgB5lB,OACjCq1E,UAAU,EACV18D,MAAOzR,EAAA8L,GAAG,mBACX,gBAAc,QACbyV,SAAUvhB,EAAAigB,MACV,UAASjgB,EAAAse,OACT,cAAY,EACZ,kBAAiBte,EAAAy7E,W,4EAGZz7E,EAAA67E,OAAI,YADZ72B,EAAAA,GAAAA,IAWEorB,EAAA,CATAtoE,IAAI,YACHoB,MAAOlJ,EAAA8L,GAAG,uBACV7C,UAAWjJ,EAAA6f,UAAUnB,gBAAgB5lB,OACrCq1E,UAAU,EACV18D,MAAOzR,EAAA8L,GAAG,uBACX,gBAAc,YACbyV,SAAUvhB,EAAA6f,UACV,cAAY,EACZ,kBAAiB7f,EAAAy7E,W,4HAGtB37E,EAAAA,GAAAA,GAGE,OAFCowC,IAAKlwC,EAAAw8E,aACN99E,MAAM,gB,2BAGVkB,EAAAA,GAAAA,IAiBM,MAjBN8kD,GAiBM,EAbJ5kD,EAAAA,GAAAA,GAIM,MAJN4lD,GAIM,EAHJ5lD,EAAAA,GAAAA,GAEM,MAFN6kD,IAEMV,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,yBAAD,MAGThM,EAAAA,GAAAA,GAOM,MAPN+kD,GAOM,CANQ7kD,EAAAuK,QAAK,YAAjB3K,EAAAA,GAAAA,IAAqC,OAAAklD,IAAAb,EAAAA,GAAAA,IAAfjkD,EAAAuK,OAAK,kBAC3By6C,EAAAA,GAAAA,IAIEI,EAAA,C,MAFA0Q,KAAA,GACA3sD,KAAK,wB,aS7IRzK,MAAM,uB,IACJA,MAAM,iB,IACJA,MAAM,S,IAIRA,MAAM,0B,6BAkBTA,MAAM,4B,eASDA,MAAM,sB,2CAqBRA,MAAM,c,eAiBAA,MAAM,uC,UAMXA,MAAM,4B,UAUNA,MAAM,yB,qBAUNA,MAAM,yB,qBAcNA,MAAM,yB,IASDA,MAAM,W,2CAeTA,MAAM,S,IAOdoB,EAAAA,GAAAA,GAAmE,OAA9DpB,MAAM,uDAAqD,S,uBCnIpEgL,GAAAA,GAAAA,IACEC,GAAAA,IACAwsD,GAAAA,KAoHF,SAjHe,CACb71D,WAAY,CACV88E,WAAAA,GACAzP,aAAAA,GACAxR,OAAAA,GAAAA,QACAwU,YAAAA,GAAAA,GAEFhyE,MAAO,CACL,SAEFlH,KAAI,WACF,MAAO,CACL63C,QAAQ,EACRjlC,SAAS,EACT8wD,WAAY97D,KAAKhF,OAAS,GAC1Bu4E,QAAS,GACTr0D,SAAU,GACV0/D,SAAU,GACVC,gBAAiB,WAEjBC,eAAgB,EAChBC,qBAAsB,EACtBC,UAAW,GAEf,EACA12E,SAAU,CACRvM,MAAK,WAAI,IAAA2F,EAAA,KACP,OAAO1B,KAAKuzE,QAAQr8E,KAAI,SAAA+nB,GAAM,OAAIvd,EAAKgK,OAAOoP,QAAQgiB,SAAS7d,EAAO,GACxE,EACAI,gBAAe,WACb,IAAMgB,EAAoBrgB,KAAK0L,OAAOhR,MAAMwkB,SAASmB,kBAErD,OAAOrgB,KAAKkf,SAAS/lB,QAAO,SAAAqoB,GAAM,OAChCnB,EAAkBmB,EAAO1pB,MAAQuoB,EAAkBmB,EAAO1pB,IAAI2pB,OAAO,GAEzE,GAEFqsC,QAAO,WACL9tD,KAAK+vB,OAAO/vB,KAAKhF,MACnB,EACA4yD,MAAO,CACL5yD,MAAK,SAAEo9B,GACLp4B,KAAK87D,WAAa1jC,EAClBp4B,KAAK+vB,OAAOqI,EACd,GAEFv4B,QAAS,CACPo/E,SAAQ,SAAEjkF,GACRgF,KAAKI,QAAQhB,KAAK,CAAEpF,KAAM,SAAUgB,MAAO,CAAEA,MAAAA,KAC7CgF,KAAKoJ,MAAM2yD,YAAYtX,OACzB,EACA10B,OAAM,SAAE/0B,GAA0B,IAAA2N,EAAA,KAAnBu2E,EAAUviF,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,KACrB3B,GAKLgF,KAAKgL,SAAU,EACfhL,KAAKoJ,MAAM2yD,YAAYojB,OACnBn/E,KAAKg/E,YAAchkF,IACrBgF,KAAKuzE,QAAU,GACfvzE,KAAK4+E,SAAW,GAChB5+E,KAAKkf,SAAW,GAEhBlf,KAAK8+E,eAAiB,EACtB9+E,KAAK++E,qBAAuB,GAG9B/+E,KAAK0L,OAAOjR,SAAS,SAAU,CAAEw1B,EAAGj1B,EAAOxD,SAAS,EAAM24B,OAAQnwB,KAAK8+E,eAAgBr/E,KAAMy/E,IAC1FznF,MAAK,SAAAW,GACJuQ,EAAKqC,SAAU,EAEf,IAAMo0E,EAAYz2E,EAAKuW,SAASzlB,OAGhCkP,EAAK4qE,QAAU5qE,EAAK4qE,QAAQl6E,OAAOnC,KAAIkB,EAAK4xB,SAAU,OACtDrhB,EAAKuW,SAAWmgE,KAAO12E,EAAKuW,SAAS7lB,OAAOjB,EAAK8mB,UAAW,MAC5DvW,EAAKi2E,SAAWj2E,EAAKi2E,SAASvlF,OAAOjB,EAAKwmF,UAE1Cj2E,EAAKk2E,gBAAkBl2E,EAAK22E,eAC5B32E,EAAKsnC,QAAS,EAGdtnC,EAAKm2E,eAAiBn2E,EAAKuW,SAASzlB,OAEpCkP,EAAKo2E,qBAAuBp2E,EAAKuW,SAASzlB,OAAS2lF,EACnDz2E,EAAKq2E,UAAYhkF,CACnB,KAlCAgF,KAAKgL,SAAU,CAmCnB,EACAu0E,YAAW,SAAE32E,GACX,IAAMnP,EAASuG,KAAK4I,GAASnP,OAC7B,OAAkB,IAAXA,EAAe,GAAK,KAAHJ,OAAQI,EAAM,IACxC,EACA+lF,kBAAiB,SAAE/2E,GACjBzI,KAAK6+E,gBAAkBp2E,CACzB,EACA62E,aAAY,WACV,OAAIt/E,KAAKqf,gBAAgB5lB,OAAS,EACzB,WACEuG,KAAKjE,MAAMtC,OAAS,EACtB,SACEuG,KAAK4+E,SAASnlF,OAAS,EACzB,WAGF,UACT,EACAgmF,kBAAiB,SAAEC,GACjB,OAAOA,EAAQlgB,SAAWkgB,EAAQlgB,QAAQ,EAC5C,ICrHJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,0KFNzDj/D,EAAAA,GAAAA,IA+IM,MA/INC,GA+IM,EA9IJC,EAAAA,GAAAA,GAIM,MAJNkkD,GAIM,EAHJlkD,EAAAA,GAAAA,GAEM,MAFNokD,IAEMD,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,eAAD,MAGThM,EAAAA,GAAAA,GAeM,MAfNukD,GAeM,YAdJvkD,EAAAA,GAAAA,GAMC,SALCowC,IAAI,c,qDACKlwC,EAAAm7D,WAAU5W,CAAA,GACnB7lD,MAAM,eACL8lD,YAAaxkD,EAAA8L,GAAG,cAChBkiD,QAAK9tD,EAAA,KAAAA,EAAA,IAAA+tD,EAAAA,GAAAA,KAAA,SAAA1J,GAAA,OAAQvkD,EAAAs+E,SAASt+E,EAAAm7D,WAAU,gB,oBAHxBn7D,EAAAm7D,eAKXr7D,EAAAA,GAAAA,GAMS,UALPpB,MAAM,mCACNI,KAAK,SACJK,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAs+E,SAASt+E,EAAAm7D,WAAU,I,EAE3B93D,EAAAA,GAAAA,IAAwB+hD,EAAA,CAAhBj8C,KAAK,eAITnJ,EAAAqK,SAA6B,GAAlBrK,EAAAm+E,iBAAc,YADjCv+E,EAAAA,GAAAA,IASM,MATN6lD,GASM,EALJpiD,EAAAA,GAAAA,IAIE+hD,EAAA,CAHAj8C,KAAK,eACL2sD,KAAA,GACAnQ,KAAK,UAGO3lD,EAAAsvC,SAAM,YAAtB1vC,EAAAA,GAAAA,IAqBM,MAAA6kD,GAAA,EApBJ3kD,EAAAA,GAAAA,GAmBM,MAnBN4kD,GAmBM,EAlBJrhD,EAAAA,GAAAA,IAiBeutE,EAAA,CAhBb1gC,IAAI,cACH,YAAWlwC,EAAA6+E,kBACX,aAAY7+E,EAAAk+E,iB,oBAEb,iBAGE,EAHFp+E,EAAAA,GAAAA,GAGE,QAFAgI,IAAI,WACHoB,MAAOlJ,EAAA8L,GAAG,sBAAwB9L,EAAA4+E,YAAY,oB,YAEjD9+E,EAAAA,GAAAA,GAGE,QAFAgI,IAAI,SACHoB,MAAOlJ,EAAA8L,GAAG,iBAAmB9L,EAAA4+E,YAAY,U,YAE5C9+E,EAAAA,GAAAA,GAGE,QAFAgI,IAAI,WACHoB,MAAOlJ,EAAA8L,GAAG,mBAAqB9L,EAAA4+E,YAAY,a,yEAKpD9+E,EAAAA,GAAAA,GAuFM,MAvFNglD,GAuFM,CAtF2B,aAApB9kD,EAAAk+E,kBAAe,YAA1Bt+E,EAAAA,GAAAA,IAsCM,MAAAmlD,GAAA,iBArCJnlD,EAAAA,GAAAA,IASEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IARiBxpD,EAAA0e,iBAAe,SAAzBmC,G,mBADTmkC,EAAAA,GAAAA,IASE2Y,EAAA,CAPC71D,IAAK+Y,EAAO1pB,GACZgsE,aAAa,EACb+B,YAAY,EACZ0O,SAAS,EACVl1E,MAAM,gBACLm/D,UAAWh9C,EACX,cAAY,G,gCAGN7gB,EAAAqK,SAAWrK,EAAAsvC,QAAUtvC,EAAAo+E,qBAAuB,IAAH,YADlDx+E,EAAAA,GAAAA,IAQS,U,MANPlB,MAAM,wDACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAAovB,OAAOpvB,EAAAm7D,WAAY,WAAF,kB,EAEjCr7D,EAAAA,GAAAA,GAEM,MAFNmlD,IAEMhB,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,qBAAD,MAII9L,EAAAqK,SAAWrK,EAAAm+E,eAAiB,IAAH,YADtCv+E,EAAAA,GAAAA,IASM,MATNslD,GASM,EALJ7hD,EAAAA,GAAAA,IAIE+hD,EAAA,CAHAj8C,KAAK,eACL2sD,KAAA,GACAnQ,KAAK,W,gBAI2B,IAA3B3lD,EAAA0e,gBAAgB5lB,QAAyC,IAAzBkH,EAAAo+E,sBAAgCp+E,EAAAqK,UAAWrK,EAAAsvC,QAIlB,kBAJwB,YAD1F1vC,EAAAA,GAAAA,IAOM,MAPNulD,GAOM,EAHJrlD,EAAAA,GAAAA,GAEK,WAAAmkD,EAAAA,GAAAA,IAD2B,IAA3BjkD,EAAA0e,gBAAgB5lB,OAAekH,EAAA8L,GAAG,qBAAuB9L,EAAA8L,GAAG,2BAAD,SAIhC,WAApB9L,EAAAk+E,kBAAe,YAA/Bt+E,EAAAA,GAAAA,IAaM,MAAAo/E,GAAA,CAXqB,IAAjBh/E,EAAA5E,MAAMtC,SAAiBkH,EAAAqK,SAAWrK,EAAAsvC,SAAM,YADhD1vC,EAAAA,GAAAA,IAKM,MALNq/E,GAKM,EADJn/E,EAAAA,GAAAA,GAAsC,WAAAmkD,EAAAA,GAAAA,IAA/BjkD,EAAA8L,GAAG,sBAAD,uCAEXlM,EAAAA,GAAAA,IAKEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAJexpD,EAAA5E,OAAK,SAAbC,G,mBADT2pD,EAAAA,GAAAA,IAKE84B,EAAA,CAHCh2E,IAAKzM,EAAKlE,GACVkE,KAAMA,EACPqD,MAAM,2B,6BAG0B,aAApBsB,EAAAk+E,kBAAe,YAA/Bt+E,EAAAA,GAAAA,IAgCM,MAAAs/E,GAAA,CA9BwB,IAApBl/E,EAAAi+E,SAASnlF,SAAiBkH,EAAAqK,SAAWrK,EAAAsvC,SAAM,YADnD1vC,EAAAA,GAAAA,IAKM,MALNu/E,GAKM,EADJr/E,EAAAA,GAAAA,GAAsC,WAAAmkD,EAAAA,GAAAA,IAA/BjkD,EAAA8L,GAAG,sBAAD,uCAEXlM,EAAAA,GAAAA,IAwBMwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAvBcxpD,EAAAi+E,UAAQ,SAAnBc,G,mBADTn/E,EAAAA,GAAAA,IAwBM,OAtBHkI,IAAKi3E,EAAQngF,IACdF,MAAM,8B,EAENoB,EAAAA,GAAAA,GAYM,MAZNs/E,GAYM,EAXJ/7E,EAAAA,GAAAA,IAEcuhD,EAAA,CAFApY,GAAE,CAAAnzC,KAAA,eAAAkoC,OAAA,CAAArlC,IAAyC6iF,EAAQ1lF,Q,oBAAU,iBACxE,WADwE,MACxE4qD,EAAAA,GAAAA,IAAG86B,EAAQ1lF,MAAI,G,sBAEP2G,EAAA8+E,kBAAkBC,KAAO,YAApCn/E,EAAAA,GAAAA,IAOM,MAAAy/E,GAAA,CAN+C,GAAvCr/E,EAAA8+E,kBAAkBC,GAAS11D,WAAQ,YAA/CzpB,EAAAA,GAAAA,IAEO,OAAA0/E,IAAAr7B,EAAAA,GAAAA,IADFjkD,EAAA8L,GAAG,wBAAyB,CAA1Bsd,MAAmCppB,EAAA8+E,kBAAkBC,GAAS11D,YAAQ,kBAE7EzpB,EAAAA,GAAAA,IAEO,OAAA2/E,IAAAt7B,EAAAA,GAAAA,IADFjkD,EAAA8L,GAAG,wBAAyB,CAA1Bsd,MAAmCppB,EAAA8+E,kBAAkBC,GAAS11D,YAAQ,0BAKzErpB,EAAA8+E,kBAAkBC,KAAO,YADjCn/E,EAAAA,GAAAA,IAKM,MALN4/E,IAKMv7B,EAAAA,GAAAA,IADDjkD,EAAA8+E,kBAAkBC,GAASU,MAAI,sB,gCAK1CC,I,aG9IGhhF,MAAM,gC,IACJA,MAAM,iB,IAGNA,MAAM,c,IAKFA,MAAM,a,IACJA,MAAM,e,IAMLA,MAAM,cACNokD,IAAI,oB,wCAaNpkD,MAAM,c,eAcJA,MAAM,cACNokD,IAAI,oB,wCAaNpkD,MAAM,c,eAcJA,MAAM,cACNokD,IAAI,S,0CAaNpkD,MAAM,c,eASHA,MAAM,c,IAEPA,MAAM,cACNokD,IAAI,O,kCAgBJpkD,MAAM,cACNokD,IAAI,oB,0BAaNpkD,MAAM,c,eAcJA,MAAM,cACNokD,IAAI,iC,0BAaNpkD,MAAM,c,0BAiBJA,MAAM,cACNokD,IAAI,oB,gDAgBNpkD,MAAM,c,gCA2BNA,MAAM,c,IAGJA,MAAM,cACNokD,IAAI,U,wCAaN3rD,GAAG,gBACHuH,MAAM,c,IAGJA,MAAM,cACNokD,IAAI,iB,qCA2BNpkD,MAAM,c,IAECokD,IAAI,S,IASRpkD,MAAM,c,2CAoBbA,MAAM,c,IAEDA,MAAM,e,ynBC9KrB,SAvHqB,CACnBihF,MAAK,WAAM,MAAO,CAAEC,IAAIC,EAAAA,GAAAA,MAAiB,EACzCpoF,KAAM,iBAAO,CACX4D,KAAM,CACJykF,MAAO,GACPC,SAAU,GACVtpD,SAAU,GACVC,SAAU,GACVm/C,QAAS,GACTwG,SAAU,GACVS,OAAQ,GACR9uE,SAAU,CAAC,KAEbgyE,QAAS,CAAC,EACX,EACD1/E,WAAY,CACV2/E,0BAAAA,GAAAA,GAEFC,YAAW,WAAI,IAAAn/E,EAAA,KACb,MAAO,CACL1F,KAAM,CACJykF,MAAO,CAAEjhF,UAAUshF,EAAAA,GAAAA,KAAW,kBAAMp/E,EAAKq/E,yBAAyB,KAClE3pD,SAAU,CAAE53B,SAAAA,GAAAA,IACZkhF,SAAU,CAAElhF,SAAAA,GAAAA,IACZ63B,SAAU,CAAE73B,SAAAA,GAAAA,IACZg3E,QAAS,CACPh3E,SAAAA,GAAAA,GACAwhF,QAAQA,EAAAA,GAAAA,IAAOhhF,KAAKhE,KAAKq7B,WAE3B2lD,SAAU,CACRx9E,UAAUshF,EAAAA,GAAAA,KAAW,kBAAMp/E,EAAK4X,gBAAgB,IAChD2nE,SAAU,SAAAjiF,GACR,OAAQ0C,EAAK4X,kBAAoB,IAAI4c,KAAKl3B,GAAO67C,WAAan5C,EAAKw/E,YAAYrmC,SACjF,GAEF4iC,OAAQ,CAAEj+E,UAAUshF,EAAAA,GAAAA,KAAW,kBAAMp/E,EAAKy/E,uBAAuB,KACjExyE,SAAU,CAAC,GAGjB,EACAvD,QAAO,aACCpL,KAAKiV,mBAAqBjV,KAAK03B,OAAU13B,KAAK6mD,WAClD7mD,KAAKI,QAAQhB,KAAK,CAAEpF,KAAM,SAG5BgG,KAAKohF,YACP,EACA94E,SAAQpP,GAAA,CACNw+B,MAAK,WAAM,OAAO13B,KAAK84D,OAAO52B,OAAOxK,KAAM,EAC3C2pD,eAAc,WACZ,OAAOrhF,KAAKshF,gBAAgBthF,KAAKyM,GAAG,gCACtC,EACA80E,kBAAiB,WACf,OAAOvhF,KAAKshF,gBAAgBthF,KAAKyM,GAAG,mCACtC,EACAy0E,YAAW,WACT,IAAMM,EAASxhF,KAAKuZ,eACdk7D,EAAQ,IAAIv+C,KAClBu+C,EAAMgN,mBAAmB,GACzBhN,EAAMiN,cAAc,GACpBjN,EAAMkN,cAAc,GACpBlN,EAAMmN,YAAY,GAClB,IAAMC,EAAU,IAAI3rD,KAEpB,OADA2rD,EAAQC,QAAQrN,EAAM55B,UAAY2mC,EAASO,GAAAA,IACpCF,CACT,EACAG,gBAAe,WACb,OAAOhiF,KAAKkhF,YAAYe,SAAS9kF,QAAQ,OAAQ,GACnD,EACA+kF,qBAAoB,WAClB,IAAMnF,EAAgBpI,GAAAA,EAAAA,wBAAsC30E,KAAK40E,MAAM1lE,QACvE,OAAOlP,KAAKhE,KAAKghF,UAAY,IAAI9mD,KAAKA,KAAK+hB,MAAMj4C,KAAKkhF,cAAcxM,mBAAmBqI,EAAe,CAAEE,SAAU,MAAOpI,IAAK,UAAWC,MAAO,OAAQoI,KAAM,WAChK,IACGt5B,EAAAA,EAAAA,IAAS,CACV3uC,iBAAkB,SAACva,GAAK,OAAKA,EAAM2X,SAAS4C,gBAAgB,EAC5D4xC,SAAU,SAACnsD,GAAK,QAAOA,EAAMqB,MAAM8X,WAAW,EAC9CsuE,UAAW,SAACznF,GAAK,OAAKA,EAAMqB,MAAM2gC,aAAa,EAC/C0lD,uBAAwB,SAAC1nF,GAAK,OAAKA,EAAMqB,MAAM4gC,YAAY,EAC3D0lD,eAAgB,SAAC3nF,GAAK,OAAKA,EAAM2X,SAAS4H,GAAG,EAC7C8mE,0BAA2B,SAACrmF,GAAK,OAAKA,EAAM2X,SAAS0uE,yBAAyB,EAC9EI,wBAAyB,SAACzmF,GAAK,OAAKA,EAAM2X,SAAS8uE,uBAAuB,EAC1E7nE,iBAAkB,SAAC5e,GAAK,OAAKA,EAAM2X,SAASiH,gBAAgB,EAC5DC,eAAgB,SAAC7e,GAAK,OAAKA,EAAM2X,SAASkH,cAAc,KAG5D1Z,QAAO3G,GAAAA,GAAA,IACF6qD,EAAAA,EAAAA,IAAW,CAAC,SAAU,gBAAc,IACjCC,OAAM,WAAI,IAAAr7C,EAAA,YAAArN,EAAAA,EAAAA,GAAAC,IAAAA,MAAA,SAAAC,IAAA,OAAAD,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAWE,GAVhB+M,EAAK3M,KAAKigB,SAAWtT,EAAK3M,KAAKo7B,SAC/BzuB,EAAK3M,KAAK07B,MAAQ/uB,EAAK+uB,MAEvB/uB,EAAK3M,KAAKsmF,iBAAmB35E,EAAKg4E,QAAQ4B,SAC1C55E,EAAK3M,KAAKwmF,cAAgB75E,EAAKg4E,QAAQjpD,MACvC/uB,EAAK3M,KAAKymF,oBAAsB95E,EAAKg4E,QAAQ+B,YACzC/5E,EAAK3M,KAAK2S,WACZhG,EAAK3M,KAAK2S,SAAWgmE,GAAAA,EAAAA,6BAA2ChsE,EAAK3M,KAAK2S,SAASxV,QAAO,SAAAO,GAAC,OAAIA,CAAC,MAGlGiP,EAAK43E,GAAGoC,SAEHh6E,EAAK43E,GAAGqC,SAAU,CAAFlnF,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,EAAAD,EAAAE,KAAA,GAEX+M,EAAKo5B,OAAOp5B,EAAK3M,MAAK,QAC5B2M,EAAKvI,QAAQhB,KAAK,CAAEpF,KAAM,YAAY0B,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAA8T,GAAA9T,EAAA,SAEtC6gB,QAAQC,KAAK,wBAAuB9gB,EAAA8T,IACpC7G,EAAKy4E,aAAY,yBAAA1lF,EAAAe,OAAA,GAAAjB,EAAA,kBAnBPF,EAsBhB,EACA8lF,WAAU,WAAI,IAAAp4E,EAAA,KACZhJ,KAAKoiC,aAAa3qC,MAAK,SAAAorF,GAAS75E,EAAK23E,QAAUkC,CAAI,GACrD,EACAvB,gBAAe,SAAEwB,GACf,OAAOA,EAAI3lF,QAAQ,YAAa,MAClC,KCjHJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wFFNzDoD,EAAAA,GAAAA,IAoTM,MApTNC,GAoTM,EAnTJC,EAAAA,GAAAA,GAEM,MAFNkkD,IAEMC,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,8BAAD,IAEPhM,EAAAA,GAAAA,GA+SM,MA/SNokD,GA+SM,EA9SJpkD,EAAAA,GAAAA,GA6SO,QA5SLpB,MAAM,oBACLylD,SAAMjkD,EAAA,MAAAA,EAAA,KAAAC,EAAAA,GAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAAqjD,OAAOrjD,EAAA3E,KAAI,kB,EAE5ByE,EAAAA,GAAAA,GA6RM,MA7RNukD,GA6RM,EA5RJvkD,EAAAA,GAAAA,GAoRM,MApRNwkD,GAoRM,EAnRJxkD,EAAAA,GAAAA,GAgBM,OAfJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,aAAY,qBACa5oD,EAAA4/E,GAAGvkF,KAAKo7B,SAAS2rD,W,EAEhDtiF,EAAAA,GAAAA,GAGmC,QAHnC2lD,IAGmCxB,EAAAA,GAAAA,IAA/BjkD,EAAA8L,GAAG,mBAAD,cACNhM,EAAAA,GAAAA,GAOC,SANC3I,GAAG,mB,qDACW6I,EAAA4/E,GAAGvkF,KAAKo7B,SAAS4rD,OAAM99B,CAAA,GACpCt7C,SAAUjJ,EAAAwhF,UACX9iF,MAAM,eACL,iBAAe,EACf8lD,YAAaxkD,EAAA8L,GAAG,sC,mBAJH9L,EAAA4/E,GAAGvkF,KAAKo7B,SAAS4rD,YAAM,G,MAArC,OAAsC,GAQlCriF,EAAA4/E,GAAGvkF,KAAKo7B,SAAS6rD,SAAM,YAD/B1iF,EAAAA,GAAAA,IASM,MATN8kD,GASM,EALJ5kD,EAAAA,GAAAA,GAIK,WAHQE,EAAA4/E,GAAGvkF,KAAKo7B,SAAS53B,UACf,kBADuB,YAApCe,EAAAA,GAAAA,IAEK,KAAA8lD,GAAA,EADH5lD,EAAAA,GAAAA,GAAmE,aAAAmkD,EAAAA,GAAAA,IAA1DjkD,EAAA8L,GAAG,+CAAD,6BAKjBhM,EAAAA,GAAAA,GAgBM,OAfJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,aAAY,qBACa5oD,EAAA4/E,GAAGvkF,KAAK0kF,SAASqC,W,EAEhDtiF,EAAAA,GAAAA,GAG0C,QAH1C6kD,IAG0CV,EAAAA,GAAAA,IAAtCjkD,EAAA8L,GAAG,0BAAD,cACNhM,EAAAA,GAAAA,GAOC,SANC3I,GAAG,mB,qDACW6I,EAAA4/E,GAAGvkF,KAAK0kF,SAASsC,OAAM99B,CAAA,GACpCt7C,SAAUjJ,EAAAwhF,UACX9iF,MAAM,eACL,iBAAe,EACf8lD,YAAaxkD,EAAA8L,GAAG,sC,mBAJH9L,EAAA4/E,GAAGvkF,KAAK0kF,SAASsC,YAAM,G,MAArC,OAAsC,GAQlCriF,EAAA4/E,GAAGvkF,KAAK0kF,SAASuC,SAAM,YAD/B1iF,EAAAA,GAAAA,IASM,MATNklD,GASM,EALJhlD,EAAAA,GAAAA,GAIK,WAHQE,EAAA4/E,GAAGvkF,KAAK0kF,SAASlhF,UACf,kBADuB,YAApCe,EAAAA,GAAAA,IAEK,KAAAmlD,GAAA,EADHjlD,EAAAA,GAAAA,GAAmE,aAAAmkD,EAAAA,GAAAA,IAA1DjkD,EAAA8L,GAAG,+CAAD,6BAKjBhM,EAAAA,GAAAA,GAgBM,OAfJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,aAAY,qBACa5oD,EAAA4/E,GAAGvkF,KAAKykF,MAAMsC,W,EAE7CtiF,EAAAA,GAAAA,GAGuG,QAHvGmlD,IAGuGhB,EAAAA,GAAAA,IAAnGjkD,EAAAogF,0BAA4BpgF,EAAA8L,GAAG,sBAAwB9L,EAAA8L,GAAG,gCAAD,cAC7DhM,EAAAA,GAAAA,GAOC,SANC3I,GAAG,Q,qDACM6I,EAAA4/E,GAAGvkF,KAAKykF,MAAMuC,OAAM99B,CAAA,GAC5Bt7C,SAAUjJ,EAAAwhF,UACX9iF,MAAM,eACNI,KAAK,QACJ,gBAAekB,EAAAogF,2B,mBAJPpgF,EAAA4/E,GAAGvkF,KAAKykF,MAAMuC,WAAM,GAQzBriF,EAAA4/E,GAAGvkF,KAAKykF,MAAMwC,SAAM,YAD5B1iF,EAAAA,GAAAA,IASM,MATNulD,GASM,EALJrlD,EAAAA,GAAAA,GAIK,WAHQE,EAAA4/E,GAAGvkF,KAAKykF,MAAMjhF,UACZ,kBADoB,YAAjCe,EAAAA,GAAAA,IAEK,KAAAo/E,GAAA,EADHl/E,EAAAA,GAAAA,GAAgE,aAAAmkD,EAAAA,GAAAA,IAAvDjkD,EAAA8L,GAAG,4CAAD,6BAKjBhM,EAAAA,GAAAA,GAYM,MAZNm/E,GAYM,EAXJn/E,EAAAA,GAAAA,GAG8C,QAH9Co/E,IAG8Cj7B,EAAAA,GAAAA,IAA1CjkD,EAAA8L,GAAG,8BAAD,cACNhM,EAAAA,GAAAA,GAME,YALA3I,GAAG,M,qDACM6I,EAAA3E,KAAKknF,IAAGh+B,CAAA,GAChBt7C,SAAUjJ,EAAAwhF,UACX9iF,MAAM,eACL8lD,YAAaxkD,EAAA0gF,gB,mBAHL1gF,EAAA3E,KAAKknF,UAOlBziF,EAAAA,GAAAA,GAgBM,OAfJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,aAAY,qBACa5oD,EAAA4/E,GAAGvkF,KAAKq7B,SAAS0rD,W,EAEhDtiF,EAAAA,GAAAA,GAGmC,QAHnCs/E,IAGmCn7B,EAAAA,GAAAA,IAA/BjkD,EAAA8L,GAAG,mBAAD,cACNhM,EAAAA,GAAAA,GAOC,SANC3I,GAAG,mB,qDACM6I,EAAA3E,KAAKq7B,SAAQ6tB,CAAA,GACrBt7C,SAAUjJ,EAAAwhF,UACX9iF,MAAM,eACNI,KAAK,WACJ,iBAAe,G,mBAJPkB,EAAA3E,KAAKq7B,aAAQ,GAQlB12B,EAAA4/E,GAAGvkF,KAAKq7B,SAAS4rD,SAAM,YAD/B1iF,EAAAA,GAAAA,IASM,MATN0/E,GASM,EALJx/E,EAAAA,GAAAA,GAIK,WAHQE,EAAA4/E,GAAGvkF,KAAKq7B,SAAS73B,UACf,kBADuB,YAApCe,EAAAA,GAAAA,IAEK,KAAA2/E,GAAA,EADHz/E,EAAAA,GAAAA,GAAmE,aAAAmkD,EAAAA,GAAAA,IAA1DjkD,EAAA8L,GAAG,+CAAD,6BAKjBhM,EAAAA,GAAAA,GAgBM,OAfJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,aAAY,qBACa5oD,EAAA4/E,GAAGvkF,KAAKw6E,QAAQuM,W,EAE/CtiF,EAAAA,GAAAA,GAGkD,QAHlD0/E,IAGkDv7B,EAAAA,GAAAA,IAA9CjkD,EAAA8L,GAAG,kCAAD,cACNhM,EAAAA,GAAAA,GAOC,SANC3I,GAAG,gC,qDACM6I,EAAA3E,KAAKw6E,QAAOtxB,CAAA,GACpBt7C,SAAUjJ,EAAAwhF,UACX9iF,MAAM,eACNI,KAAK,WACJ,iBAAe,G,mBAJPkB,EAAA3E,KAAKw6E,YAAO,GAQjB71E,EAAA4/E,GAAGvkF,KAAKw6E,QAAQyM,SAAM,YAD9B1iF,EAAAA,GAAAA,IAYM,MAZN4iF,GAYM,EARJ1iF,EAAAA,GAAAA,GAOK,WANOE,EAAA4/E,GAAGvkF,KAAKw6E,QAAQh3E,SAASojF,WAAQ,YAA3CriF,EAAAA,GAAAA,IAEK,KAAA6iF,GAAA,EADH3iF,EAAAA,GAAAA,GAAgF,aAAAmkD,EAAAA,GAAAA,IAAvEjkD,EAAA8L,GAAG,4DAAD,uBAEH9L,EAAA4/E,GAAGvkF,KAAKw6E,QAAQwK,OAAO4B,WAAQ,YAAzCriF,EAAAA,GAAAA,IAEK,KAAA8iF,GAAA,EADH5iF,EAAAA,GAAAA,GAA6E,aAAAmkD,EAAAA,GAAAA,IAApEjkD,EAAA8L,GAAG,yDAAD,8CAKjBhM,EAAAA,GAAAA,GAmBM,OAlBJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,aAAY,qBACa5oD,EAAA4/E,GAAGvkF,KAAKghF,SAAS+F,W,EAEhDtiF,EAAAA,GAAAA,GAKQ,QALR6iF,IAKQ1+B,EAAAA,GAAAA,IADHjkD,EAAA2Y,iBAAmB3Y,EAAA8L,GAAG,yBAA2B9L,EAAA8L,GAAG,mCAAD,cAExDhM,EAAAA,GAAAA,GAQC,SAPC3I,GAAG,mB,qDACM6I,EAAA3E,KAAKghF,SAAQ93B,CAAA,GACrBt7C,SAAUjJ,EAAAwhF,UACX9iF,MAAM,eACNI,KAAK,OACJ5F,IAAK8G,EAAA2Y,iBAAmB3Y,EAAAqhF,qBAAkBz/E,EAC1C,gBAAe5B,EAAA2Y,kB,mBALP3Y,EAAA3E,KAAKghF,aAAQ,GASlBr8E,EAAA4/E,GAAGvkF,KAAKghF,SAASiG,SAAM,YAD/B1iF,EAAAA,GAAAA,IAYM,MAZNgjF,GAYM,EARJ9iF,EAAAA,GAAAA,GAOK,WANOE,EAAA4/E,GAAGvkF,KAAKghF,SAASx9E,SAASojF,WAAQ,YAA5CriF,EAAAA,GAAAA,IAEK,KAAAijF,GAAA,EADH/iF,EAAAA,GAAAA,GAAmE,aAAAmkD,EAAAA,GAAAA,IAA1DjkD,EAAA8L,GAAG,+CAAD,uBAEH9L,EAAA4/E,GAAGvkF,KAAKghF,SAASiE,SAAS2B,WAAQ,YAA5CriF,EAAAA,GAAAA,IAEK,KAAAkjF,GAAA,EADHhjF,EAAAA,GAAAA,GAAmG,aAAAmkD,EAAAA,GAAAA,IAA1FjkD,EAAA41D,IAAI,4CAA6C,CAA9C5b,KAAsDh6C,EAAAuhF,wBAAoB,8CAK5FzhF,EAAAA,GAAAA,GAWM,OAVJpB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,aAAY,qBACa5oD,EAAA4/E,GAAGvkF,KAAK2S,SAASo0E,W,EAEhD/+E,EAAAA,GAAAA,IAME0/E,EAAA,CALAjgC,IAAI,iBACH,cAAa9iD,EAAA8L,GAAG,+BAChBkC,SAAUhO,EAAA4/E,GAAGvkF,KAAK2S,SAASq0E,OAC3B,eAAc,SAAAnkB,GAAG,OAAIl+D,EAAA4/E,GAAGvkF,KAAK2S,SAASq0E,OAASnkB,CAAG,EAClD/+D,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAN,cAAmB,sB,sDAKfH,EAAAwgF,0BAAuB,YAD/B5gF,EAAAA,GAAAA,IAeM,MAfNojF,GAeM,EAXJljF,EAAAA,GAAAA,GAGwC,QAHxCmjF,IAGwCh/B,EAAAA,GAAAA,IAApCjkD,EAAA8L,GAAG,wBAAD,cACNhM,EAAAA,GAAAA,GAME,YALA3I,GAAG,S,qDACM6I,EAAA3E,KAAKyhF,OAAMv4B,CAAA,GACnBt7C,SAAUjJ,EAAAwhF,UACX9iF,MAAM,eACL8lD,YAAaxkD,EAAA4gF,mB,mBAHL5gF,EAAA3E,KAAKyhF,cAAM,gBAQA,QAAhB98E,EAAAggF,QAAQlhF,OAAI,YADpBc,EAAAA,GAAAA,IA8BM,MA9BNsjF,GA8BM,EAzBJpjF,EAAAA,GAAAA,GAGyC,QAHzCqjF,IAGyCl/B,EAAAA,GAAAA,IAArCjkD,EAAA8L,GAAG,yBAAD,0BAEkC3Q,SAAS6E,EAAAggF,QAAQlhF,QAAI,YAA7Dc,EAAAA,GAAAA,IAmBWwkD,GAAAA,GAAA,CAAAt8C,IAAA,KAlBThI,EAAAA,GAAAA,GAGC,OAFEutD,IAAKrtD,EAAAggF,QAAQphF,IACbO,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAygF,YAAAzgF,EAAAygF,WAAAtnF,MAAA6G,EAAAhE,UAAU,I,YAGpB8D,EAAAA,GAAAA,GAA+C,YAAAmkD,EAAAA,GAAAA,IAAvCjkD,EAAA8L,GAAG,6BAAD,cAEVhM,EAAAA,GAAAA,GAUC,SATC3I,GAAG,iB,uDACM6I,EAAAggF,QAAQ4B,SAAQr9B,CAAA,GACxBt7C,SAAUjJ,EAAAwhF,UACX9iF,MAAM,eACNI,KAAK,OACLskF,aAAa,MACbC,YAAY,MACZC,eAAe,MACfC,WAAW,S,mBAPFvjF,EAAAggF,QAAQ4B,aAAQ,0CAavB5hF,EAAA+2B,QAAK,YADbn3B,EAAAA,GAAAA,IAYM,MAZN4jF,GAYM,EARJ1jF,EAAAA,GAAAA,GAAyD,QAAzD2jF,IAAyDx/B,EAAAA,GAAAA,IAAnCjkD,EAAA8L,GAAG,uBAAD,cACxBhM,EAAAA,GAAAA,GAMC,SALC3I,GAAG,Q,uDACM6I,EAAA+2B,MAAKwtB,CAAA,GACdt7C,SAAS,OACTvK,MAAM,eACNI,KAAK,Q,kBAHIkB,EAAA+2B,aAAK,iBAMlBj3B,EAAAA,GAAAA,GAQM,MARN4jF,GAQM,EAPJ5jF,EAAAA,GAAAA,GAMS,UALNmJ,SAAUjJ,EAAAwhF,UACX1iF,KAAK,SACLJ,MAAM,uB,SAEHsB,EAAA8L,GAAG,0BAAD,EAAA63E,SAMX7jF,EAAAA,GAAAA,GAGE,OAFApB,MAAM,mBACN0B,UAAQJ,EAAA0hF,gB,aAKJ1hF,EAAAyhF,uBAAuB3oF,SAAM,YADrC8G,EAAAA,GAAAA,IAUM,MAVNgkF,GAUM,EANJ9jF,EAAAA,GAAAA,GAKM,MALN+jF,GAKM,iBAJJjkF,EAAAA,GAAAA,IAGmBwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAFDxpD,EAAAyhF,wBAAsB,SAA/Bl3E,G,mBADT3K,EAAAA,GAAAA,IAGmB,QADhBkI,IAAKyC,IAAK05C,EAAAA,GAAAA,IACT15C,GAAK,E,qDG/Sd7L,MAAM,gC,IACJA,MAAM,iB,IAGNA,MAAM,c,IAKFA,MAAM,a,2DAaFA,MAAM,0B,qBASTA,MAAM,iC,IAOHA,MAAM,c,kCAUNA,MAAM,c,0BAYXA,MAAM,kC,ykBCtDlBgL,GAAAA,GAAAA,IACE6+B,GAAAA,KAGF,IAAMu7C,GAAgB,CACpBrsF,KAAM,iBAAO,CACX4D,KAAM,CACJykF,MAAO,IAET0B,WAAW,EACXnxE,SAAS,EACT0zE,WAAW,EACXx5E,MAAO,KACR,EACD5C,SAAQpP,GAAAA,GAAA,IACH0qD,EAAAA,EAAAA,IAAS,CACViD,SAAU,SAACnsD,GAAK,QAAOA,EAAMqB,MAAM8X,WAAW,EAC9CxB,SAAU,SAAA3X,GAAK,OAAIA,EAAM2X,QAAQ,KACjC,IACFsyE,cAAa,WACX,OAAO3kF,KAAKqS,SAASsyE,aACvB,IAEFv5E,QAAO,WACDpL,KAAK6mD,UACP7mD,KAAKI,QAAQhB,KAAK,CAAEpF,KAAM,QAE9B,EACAsF,MAAO,CACL+kD,uBAAwB,CACtBzkD,SAAS,EACTH,KAAM8B,UAGV1B,QAAS,CACP+kF,aAAY,WACV5kF,KAAKkL,MAAQ,IACf,EACA84C,OAAM,WAAI,IAAAtiD,EAAA,KACR1B,KAAKmiF,WAAY,EACjB,IAAM1B,EAAQzgF,KAAKhE,KAAKykF,OC3CR,SAAHjmF,GAA4B,IAAtB6X,EAAQ7X,EAAR6X,SACjB6vB,EAAS,CAAEu+C,MADqBjmF,EAALimF,OAE3BzlF,EAAQ+7B,KAAOmL,GAAQ,SAACntB,EAAKlX,EAAGnE,GACpC,IAAMs9B,EAAU,GAAH39B,OAAMK,EAAC,KAAAL,OAAI49B,mBAAmBp5B,IAC3C,MAAO,GAAPxE,OAAU0b,EAAG,KAAA1b,OAAI29B,EACnB,GAAG,IACGz3B,EAAM,GAAHlG,OAAMgZ,GAAQhZ,OARW,iBAQmB,KAAAA,OAAI2B,GAEzD,OAAOqF,OAAOkK,MAAMhL,EAAK,CACvB62B,OAAQ,QAEZ,EDmCMyuD,CAAiB,CAAExyE,SAFFrS,KAAKqS,SAAS6C,OAEFurE,MAAAA,IAAShpF,MAAK,SAAA+C,GAAgB,IAAbgnB,EAAMhnB,EAANgnB,OAC5C9f,EAAKygF,WAAY,EACjBzgF,EAAK1F,KAAKykF,MAAQ,GAEH,MAAXj/D,GACF9f,EAAKsP,SAAU,EACftP,EAAKwJ,MAAQ,MACO,MAAXsW,IACT9f,EAAKgjF,WAAY,EACjBhjF,EAAKwJ,MAAQxJ,EAAK+K,GAAG,oCAEzB,IAAE,OAAO,WACP/K,EAAKygF,WAAY,EACjBzgF,EAAK1F,KAAKykF,MAAQ,GAClB/+E,EAAKwJ,MAAQxJ,EAAK+K,GAAG,wBACvB,GACF,IAIJ,YE7DA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,8FHNzDlM,EAAAA,GAAAA,IAyEM,MAzENC,GAyEM,EAxEJC,EAAAA,GAAAA,GAEM,MAFNkkD,IAEMC,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,kCAAD,IAEPhM,EAAAA,GAAAA,GAoEM,MApENokD,GAoEM,EAnEJpkD,EAAAA,GAAAA,GAkEO,QAjELpB,MAAM,sBACLylD,SAAMjkD,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAqjD,QAAArjD,EAAAqjD,OAAAlqD,MAAA6G,EAAAhE,UAAM,kB,EAEvB8D,EAAAA,GAAAA,GA6DM,MA7DNukD,GA6DM,CA5DQrkD,EAAAgkF,cAQIhkF,EAAAqQ,SAAWrQ,EAAA+jF,YAAS,YAApCnkF,EAAAA,GAAAA,IASM,MAAA8kD,GAAA,CARK1kD,EAAAqQ,UAAO,YAAhBzQ,EAAAA,GAAAA,IAEI,IAAA8lD,IAAAzB,EAAAA,GAAAA,IADCjkD,EAAA8L,GAAG,+BAAD,sBAEPhM,EAAAA,GAAAA,GAIM,MAJN6kD,GAIM,EAHJthD,EAAAA,GAAAA,IAEcuhD,EAAA,CAFApY,GAAI,CAAAnzC,KAAA,SAAc,C,mBAC9B,iBAAsC,qBAAnC2G,EAAA8L,GAAG,+BAAD,G,6BAIXlM,EAAAA,GAAAA,IA6BM,MAAAilD,GAAA,CA3BI7kD,EAAA0jD,yBAAsB,YAD9B9jD,EAAAA,GAAAA,IAKI,IALJklD,IAKIb,EAAAA,GAAAA,IADCjkD,EAAA8L,GAAG,2CAAD,sBAEPhM,EAAAA,GAAAA,GAEI,UAAAmkD,EAAAA,GAAAA,IADCjkD,EAAA8L,GAAG,+BAAD,IAEPhM,EAAAA,GAAAA,GASM,MATNilD,GASM,YARJjlD,EAAAA,GAAAA,GAOC,SANCowC,IAAI,Q,qDACKlwC,EAAA3E,KAAKykF,MAAKv7B,CAAA,GAClBt7C,SAAUjJ,EAAAwhF,UACVh9B,YAAaxkD,EAAA8L,GAAG,8BACjBpN,MAAM,eACNI,KAAK,S,mBAJIkB,EAAA3E,KAAKykF,YAOlBhgF,EAAAA,GAAAA,GAQM,MARNolD,GAQM,EAPJplD,EAAAA,GAAAA,GAMS,UALNmJ,SAAUjJ,EAAAwhF,UACX1iF,KAAK,SACLJ,MAAM,iC,SAEHsB,EAAA8L,GAAG,kBAAD,EAAAq5C,WA5Cc,YAAzBvlD,EAAAA,GAAAA,IAOM,MAAA0kD,GAAA,CANKtkD,EAAA0jD,yBAAsB,YAA/B9jD,EAAAA,GAAAA,IAEI,IAAA6lD,IAAAxB,EAAAA,GAAAA,IADCjkD,EAAA8L,GAAG,kEAAD,kBAEPlM,EAAAA,GAAAA,IAEI,IAAA6kD,IAAAR,EAAAA,GAAAA,IADCjkD,EAAA8L,GAAG,2CAAD,OA4CD9L,EAAAuK,QAAK,YADb3K,EAAAA,GAAAA,IAWI,IAXJo/E,GAWI,EAPFl/E,EAAAA,GAAAA,GAAwB,aAAAmkD,EAAAA,GAAAA,IAAfjkD,EAAAuK,OAAK,IACdzK,EAAAA,GAAAA,GAKI,KAJFpB,MAAM,sCACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAAikF,cAAY,kB,EAE5B5gF,EAAAA,GAAAA,IAAuB+hD,EAAA,CAAfj8C,KAAK,gBAAO,0B,aInE3BzK,MAAM,gC,IACJA,MAAM,iB,IACJA,MAAM,S,IAIRA,MAAM,c,ICLNA,MAAM,yCCoFf,SAlF0B,CACxBC,MAAO,CAAC,QACR2B,WAAY,CACVqyE,cAAAA,GAAAA,EACAtZ,aAAAA,GAAAA,GAEF5hE,KAAI,WACF,MAAO,CACL0sF,6BAA6B,EAC7BC,0BAA0B,EAE9B,EACAllF,QAAS,CACPmlF,gCAA+B,WAAI,IAAAtjF,EAAA,KAC3BujF,GAAQC,EAAAA,EAAAA,IAAuBllF,KAAK0L,QAAQud,MAChD,SAACg8D,GAAK,OAAKA,EAAM3oD,aAAaxkC,KAAO4J,EAAK1F,KAAKlE,IAAqB,mBAAfmtF,EAAMxlF,IAAyB,IAEtF,OAAOwlF,GAASA,EAAMntF,EACxB,EACAqtF,yBAAwB,WACtBnlF,KAAK8kF,6BAA8B,CACrC,EACAM,yBAAwB,WACtBplF,KAAK8kF,6BAA8B,CACrC,EACAO,sBAAqB,WACnBrlF,KAAK+kF,0BAA2B,CAClC,EACAO,sBAAqB,WACnBtlF,KAAK+kF,0BAA2B,CAClC,EACAQ,YAAW,WACLvlF,KAAKwlF,qBACPxlF,KAAKmlF,2BAELnlF,KAAKylF,WAET,EACAA,UAAS,WACPzlF,KAAK0L,OAAOhR,MAAM+wB,IAAIC,kBAAkB65D,YAAY,CAAEztF,GAAIkI,KAAKhE,KAAKlE,KACpEkI,KAAK0L,OAAOjR,SAAS,sBAAuBuF,KAAKhE,MAEjD,IAAM0pF,EAAU1lF,KAAKglF,kCACrBhlF,KAAK0L,OAAOjR,SAAS,+BAAgC,CAAE3C,GAAI4tF,IAC3D1lF,KAAK0L,OAAOjR,SAAS,qBAAsB,CACzC3C,GAAI4tF,EACJh9D,QAAS,SAAAlG,GACPA,EAAa/iB,KAAO,QACtB,IAEFO,KAAKolF,0BACP,EACAO,SAAQ,WACF3lF,KAAK4lF,kBACP5lF,KAAKqlF,wBAELrlF,KAAK6lF,QAET,EACAA,OAAM,WAAI,IAAAl9E,EAAA,KACF+8E,EAAU1lF,KAAKglF,kCACrBhlF,KAAK0L,OAAOhR,MAAM+wB,IAAIC,kBAAkBi6D,SAAS,CAAE7tF,GAAIkI,KAAKhE,KAAKlE,KAC9DL,MAAK,WACJkR,EAAK+C,OAAOjR,SAAS,2BAA4B,CAAE3C,GAAI4tF,IACvD/8E,EAAK+C,OAAOjR,SAAS,sBAAuBkO,EAAK3M,KACnD,IACFgE,KAAKslF,uBACP,GAEFh9E,SAAU,CACRqL,aAAY,WACV,OAAO3T,KAAK0L,OAAOoP,QAAQnH,YAC7B,EACA6xE,qBAAoB,WAClB,OAAOxlF,KAAK2T,aAAasD,oBAC3B,EACA2uE,kBAAiB,WACf,OAAO5lF,KAAK2T,aAAauD,iBAC3B,ICrEJ,GAXuB,CACrBjW,WAAY,CACV6kF,mBCG6B,QAAgB,GAAQ,CAAC,CAAC,S,yGHNzDngC,EAAAA,GAAAA,IAqCkB61B,EAAA,CArCAx/E,KAAM2E,EAAA3E,MAAI,C,mBAC1B,iBAaM,EAbNyE,EAAAA,GAAAA,GAaM,MAbND,GAaM,EAZJC,EAAAA,GAAAA,GAKS,UAJPpB,MAAM,qBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA4kF,aAAA5kF,EAAA4kF,YAAAzrF,MAAA6G,EAAAhE,UAAW,K,SAEhBgE,EAAA8L,GAAG,sBAAD,IAEPhM,EAAAA,GAAAA,GAKS,UAJPpB,MAAM,qBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAglF,UAAAhlF,EAAAglF,SAAA7rF,MAAA6G,EAAAhE,UAAQ,K,SAEbgE,EAAA8L,GAAG,mBAAD,mBAGTk5C,EAAAA,GAAAA,IAqBW+V,GAAAA,GAAA,CArBDvuB,GAAG,UAAQ,CAEXxsC,EAAAmkF,8BAA2B,YADnCn/B,EAAAA,GAAAA,IASgBgW,EAAA,C,MAPbvpD,MAAOzR,EAAA8L,GAAG,mCACV,eAAc9L,EAAA8L,GAAG,2CACjB,cAAa9L,EAAA8L,GAAG,2CAChBmvD,WAAUj7D,EAAA8kF,UACV5pB,YAAWl7D,EAAAykF,0B,oBAEZ,iBAAoE,qBAAjEzkF,EAAA8L,GAAG,4BAA6B,CAA9BzQ,KAAsC2E,EAAA3E,KAAKK,kBAAc,G,gGAGxDsE,EAAAokF,2BAAwB,YADhCp/B,EAAAA,GAAAA,IASgBgW,EAAA,C,MAPbvpD,MAAOzR,EAAA8L,GAAG,gCACV,eAAc9L,EAAA8L,GAAG,wCACjB,cAAa9L,EAAA8L,GAAG,wCAChBmvD,WAAUj7D,EAAAklF,OACVhqB,YAAWl7D,EAAA2kF,uB,oBAEZ,iBAAiE,qBAA9D3kF,EAAA8L,GAAG,yBAA0B,CAA3BzQ,KAAmC2E,EAAA3E,KAAKK,kBAAc,G,6HE7BjEiM,SAAU,CACR0rB,SAAQ,WACN,OAAOh0B,KAAK0L,OAAOhR,MAAM+wB,IAAI0Y,cAC/B,IEFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,8ELJzD5jC,EAAAA,GAAAA,IAcM,MAdNC,GAcM,EAbJC,EAAAA,GAAAA,GAIM,MAJNkkD,GAIM,EAHJlkD,EAAAA,GAAAA,GAEM,MAFNokD,IAEMD,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,wBAAD,MAGThM,EAAAA,GAAAA,GAOM,MAPNukD,GAOM,iBANJzkD,EAAAA,GAAAA,IAKEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAJkBxpD,EAAAqzB,UAAQ,SAAnB4S,G,mBADT+e,EAAAA,GAAAA,IAKEogC,EAAA,CAHCt9E,IAAKm+B,EAAQ9uC,GACbkE,KAAM4qC,EACPvnC,MAAM,a,kCMUd,GApBY,CACVC,MAAO,CAAC,QACRwuD,QAAO,WAAI,IAAApsD,EAAA,KACT,GAAI1B,KAAKpI,KAAM,CACb,IAAAouF,EAAmChmF,KAAK0L,OAAOhR,MAAM+7B,MAA7Cb,EAAQowD,EAARpwD,SAAUC,EAAYmwD,EAAZnwD,aAElBY,GAAAA,SAAe,CACbb,SAAAA,EACAC,aAAAA,EACAxjB,SAAUrS,KAAK0L,OAAOhR,MAAM2X,SAAS6C,OACrCtd,KAAMoI,KAAKpI,OACVH,MAAK,SAACqF,GACP4E,EAAKgK,OAAO4G,OAAO,WAAYxV,EAAOqlC,cACtCzgC,EAAKgK,OAAOjR,SAAS,YAAaqC,EAAOqlC,cACzCzgC,EAAKtB,QAAQhB,KAAK,CAAEpF,KAAM,WAC5B,GACF,CACF,GCZF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCCJzDuG,EAAAA,GAAAA,IAAY,UAAR,M,aCAClB,MAAM,uB,IACJA,MAAM,iB,IAGNA,MAAM,cCkCf,SApCoB,CAClB4B,WAAY,CACV88E,WAAAA,IAEF3lF,KAAI,WACF,MAAO,CACL2D,MAAO,GAEX,EACA+xD,QAAO,WACL9tD,KAAK8sD,gBACP,EACAjtD,QAAS,CACP4tD,gBAAe,SAAEP,GAAO,IAAAxrD,EAAA,KACtBwrD,EAAM5xC,SAAQ,SAAC/c,EAAGqF,GAChBlC,EAAKgK,OAAOhR,MAAM+wB,IAAIC,kBAAkBwR,UAAU,CAAEplC,GAAIyG,EAAEgvD,OACvD91D,MAAK,SAAC+1D,GACAA,EAAatiD,QAChBxJ,EAAKgK,OAAO4G,OAAO,cAAe,CAACk7C,IACnC9rD,EAAK3F,MAAMqD,KAAKouD,GAEpB,GACJ,GACF,EACAV,eAAc,WAAI,IAAAnkD,EAAA,KACVoW,EAAc/e,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAYkL,YACpDA,GACFD,EAAAA,GAAAA,YAAuB,CAAEC,YAAAA,IACtBtnB,MAAK,SAACy1D,GACLvkD,EAAK8kD,gBAAgBP,EACvB,GAEN,IC5BJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uEFJzD3sD,EAAAA,GAAAA,IAYM,MAZNC,GAYM,EAXJC,EAAAA,GAAAA,GAEM,MAFNkkD,IAEMC,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,gCAAD,IAEPhM,EAAAA,GAAAA,GAOM,MAPNokD,GAOM,iBANJtkD,EAAAA,GAAAA,IAKEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAJexpD,EAAA5E,OAAK,SAAbC,G,mBADT2pD,EAAAA,GAAAA,IAKE84B,EAAA,CAHCh2E,IAAKzM,EAAKlE,GACVkE,KAAMA,EACPqD,MAAM,a,0CGTPA,MAAM,gB,ICCJA,MAAM,uB,IACJA,MAAM,c,iBCKjB,SAR4B,CAC1BiJ,SAAU,CACR3I,QAAO,WACL,OAAOK,KAAK0L,OAAOhR,MAAM2X,SAAS4H,GACpC,ICKJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCFNzD1Z,EAAAA,GAAAA,IAWM,aAVJE,EAAAA,GAAAA,GASM,MATND,GASM,EARJC,EAAAA,GAAAA,GAOM,MAPNkkD,GAOM,EALJlkD,EAAAA,GAAAA,GAGE,OAFApB,MAAM,cACN0B,UAAQJ,EAAAhB,S,6BGNXN,MAAM,e,IACJA,MAAM,yC,IACJA,MAAM,oD,IACJA,MAAM,S,IAIRA,MAAM,c,ykBCwBjB,SA3BmB,CACjB+L,QAAO,WAAI,IAAA1J,EAAA,KACS1B,KAAK0L,OAAOhR,MAAM2X,SAAS4zE,cACnC3qE,SAAQ,SAAAW,GAAQ,OAAIva,EAAKgK,OAAOjR,SAAS,qBAAsBwhB,EAAS,GACpF,EACAhb,WAAY,CACVqyE,cAAAA,GAAAA,GAEFhrE,SAAQpP,GAAAA,GAAA,CACNgtF,qBAAoB,WAClB,IAAMD,EAAgB/uF,KAAI8I,KAAKimF,cAAejmF,KAAK+8B,gBAAgB5jC,QAAO,SAAA0O,GAAC,OAAIA,CAAC,IAC1Eq+E,EAAuBC,KAAQF,EAAe,QAEpD,MAAO,CACL,CAAEhuB,KAAM,QAASl8D,MAAOmqF,EAAqBE,OAC7C,CAAEnuB,KAAM,YAAal8D,MAAOmqF,EAAqBG,YACjDltF,QAAO,SAAA44C,GAAK,OAAIA,EAAMh2C,KAAK,GAC/B,IACG8nD,EAAAA,EAAAA,IAAW,CACZ,qBAECD,EAAAA,EAAAA,IAAS,CACVqiC,cAAe,SAAAvrF,GAAK,OAAIA,EAAM2X,SAAS4zE,aAAa,MClB1D,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4EFNzD1lF,EAAAA,GAAAA,IAsBM,MAtBNC,GAsBM,EArBJC,EAAAA,GAAAA,GAoBM,MApBNkkD,GAoBM,EAnBJlkD,EAAAA,GAAAA,GAIM,MAJNokD,GAIM,EAHJpkD,EAAAA,GAAAA,GAEM,MAFNukD,IAEMJ,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,gBAAD,MAGThM,EAAAA,GAAAA,GAaM,MAbNwkD,GAaM,iBAZJ1kD,EAAAA,GAAAA,IAWMwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAVYxpD,EAAAulF,sBAAoB,SAA7Bn0C,G,mBADTxxC,EAAAA,GAAAA,IAWM,OATHkI,IAAKspC,EAAMkmB,KACZ54D,MAAM,e,EAENoB,EAAAA,GAAAA,GAA+C,WAAAmkD,EAAAA,GAAAA,IAAxCjkD,EAAA8L,GAAG,gBAAkBslC,EAAMkmB,OAAI,mBACtC13D,EAAAA,GAAAA,IAIEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAHepY,EAAMh2C,OAAK,SAAnBC,G,mBADT2pD,EAAAA,GAAAA,IAIE61B,EAAA,CAFC/yE,IAAKzM,EAAKC,YACVD,KAAMA,G,6DGffqD,MAAM,0B,IAEDA,MAAM,yC,IACJA,MAAM,oD,IACJA,MAAM,S,IAIRA,MAAM,c,IACJA,MAAM,e,g4BCHnB,IAAMinF,GAAyB,SAACC,EAAWC,EAAM/9E,GAC/C,OAAO89E,EAAUrvF,KAAI,SAAAmb,GACnB,OAAIm0E,EAAK/9E,IAAQ+9E,EAAK/9E,GAAK4J,IAAam0E,EAAK/9E,GAAK4J,GAAUorE,OACnD,CAAEprE,SAAAA,EAAUorE,OAAQ+I,EAAK/9E,GAAK4J,GAAUorE,QAE1C,CAAEprE,SAAAA,EAAUorE,OAAQ,GAC7B,GACF,EAyDA,SAvD6B,CAC3Bn1E,SAAQpP,GAAAA,GAAA,IACH0qD,EAAAA,EAAAA,IAAS,CACV6iC,iBAAkB,SAAA/rF,GAAK,OAAImuC,KAAInuC,EAAO,4BAA4B,EAClEgsF,YAAa,SAAAhsF,GAAK,OAAImuC,KAAInuC,EAAO,yCAA0C,GAAG,EAC9EisF,oBAAqB,SAAAjsF,GAAK,OAAI4rF,GAC5Bz9C,KAAInuC,EAAO,kDAAmD,IAC9DmuC,KAAInuC,EAAO,uDAAwD,IACnE,wBACD,EACDksF,gBAAiB,SAAAlsF,GAAK,OAAI4rF,GACxBz9C,KAAInuC,EAAO,8CAA+C,IAC1DmuC,KAAInuC,EAAO,4CAA6C,IACxD,SACD,EACDmsF,gBAAiB,SAAAnsF,GAAK,OAAI4rF,GACxBz9C,KAAInuC,EAAO,8CAA+C,IAC1DmuC,KAAInuC,EAAO,4CAA6C,IACxD,SACD,EACDosF,oBAAqB,SAAApsF,GAAK,OAAI4rF,GAC5Bz9C,KAAInuC,EAAO,kEAAmE,IAC9EmuC,KAAInuC,EAAO,4CAA6C,IACxD,6BACD,EACDqsF,mBAAoB,SAAArsF,GAAK,OAAI4rF,GAC3Bz9C,KAAInuC,EAAO,kDAAmD,IAC9DmuC,KAAInuC,EAAO,4CAA6C,IACxD,aACD,EACDssF,sBAAuB,SAAAtsF,GAAK,OAAI4rF,GAC9Bz9C,KAAInuC,EAAO,qDAAsD,IACjEmuC,KAAInuC,EAAO,4CAA6C,IACxD,gBACD,EACDusF,mBAAoB,SAAAvsF,GAAK,OAAImuC,KAAInuC,EAAO,mEAAoE,GAAG,EAC/GwsF,eAAgB,SAAAxsF,GAAK,OAAImuC,KAAInuC,EAAO,+CAAgD,GAAG,EACvFysF,gBAAiB,SAAAzsF,GAAK,OAAImuC,KAAInuC,EAAO,gDAAiD,GAAG,KACzF,IACF0sF,4BAA2B,WACzB,OAAOpnF,KAAK2mF,oBAAoBltF,QAC9BuG,KAAK4mF,gBAAgBntF,QACrBuG,KAAK6mF,gBAAgBptF,QACrBuG,KAAK8mF,oBAAoBrtF,QACzBuG,KAAK+mF,mBAAmBttF,QACxBuG,KAAKgnF,sBAAsBvtF,MAC/B,EACA4tF,mBAAkB,WAChB,OAAOrnF,KAAKinF,mBAAmBxtF,QAC7BuG,KAAKknF,eAAeztF,QACpBuG,KAAKmnF,gBAAgB1tF,MACzB,KC7CJ,GAlBc,CACZwH,WAAY,CACVg/D,sBAAAA,GACAC,cAAAA,GACAonB,oBAAAA,GACAC,WAAAA,GACAC,sBCL6B,QAAgB,GAAQ,CAAC,CAAC,S,6BHLjD7mF,EAAA8lF,mBAAgB,YADxBlmF,EAAAA,GAAAA,IA8NM,MA9NNC,GA8NM,EA1NJC,EAAAA,GAAAA,GAyNM,MAzNNkkD,GAyNM,EAxNJlkD,EAAAA,GAAAA,GAIM,MAJNokD,GAIM,EAHJpkD,EAAAA,GAAAA,GAEM,MAFNukD,IAEMJ,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,yBAAD,MAGThM,EAAAA,GAAAA,GAkNM,MAlNNwkD,GAkNM,EAjNJxkD,EAAAA,GAAAA,GAgNM,MAhNN2lD,GAgNM,EA/MJ3lD,EAAAA,GAAAA,GAA2C,WAAAmkD,EAAAA,GAAAA,IAApCjkD,EAAA8L,GAAG,2BAAD,IACThM,EAAAA,GAAAA,GAA8C,UAAAmkD,EAAAA,GAAAA,IAAxCjkD,EAAA8L,GAAG,gCAAD,IAERhM,EAAAA,GAAAA,GAMK,2BALHF,EAAAA,GAAAA,IAIEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAHiBxpD,EAAA+lF,aAAW,SAArBe,G,mBADTlnF,EAAAA,GAAAA,IAIE,MAFCkI,IAAKg/E,E,aACN7iC,EAAAA,GAAAA,IAAQ6iC,I,sBAIF9mF,EAAAymF,8BAA2B,YAArC7mF,EAAAA,GAAAA,IAEK,KAAA8kD,IAAAT,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,qCAAD,qBAGI9L,EAAAimF,gBAAgBntF,SAAM,YAAjC8G,EAAAA,GAAAA,IAuBM,MAAA8lD,GAAA,EAtBJ5lD,EAAAA,GAAAA,GAA4C,WAAAmkD,EAAAA,GAAAA,IAArCjkD,EAAA8L,GAAG,4BAAD,IAEThM,EAAAA,GAAAA,GAA+C,UAAAmkD,EAAAA,GAAAA,IAAzCjkD,EAAA8L,GAAG,iCAAD,IAERhM,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,WAAAmkD,EAAAA,GAAAA,IAAvCjkD,EAAA8L,GAAG,8BAAD,IACThM,EAAAA,GAAAA,GAA4C,WAAAmkD,EAAAA,GAAAA,IAArCjkD,EAAA8L,GAAG,4BAAD,qBAEXlM,EAAAA,GAAAA,IAWKwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAVaxpD,EAAAimF,iBAAe,SAAxB71D,G,mBADTxwB,EAAAA,GAAAA,IAWK,MATFkI,IAAKsoB,EAAM1e,SAAW,W,EAEvB5R,EAAAA,GAAAA,GAA6B,WAAAmkD,EAAAA,GAAAA,IAAtB7zB,EAAM1e,UAAQ,GACM,KAAjB0e,EAAM0sD,SAAM,YAAtBl9E,EAAAA,GAAAA,IAEK,KAAA+kD,IAAAV,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,oCAAD,kBAEPlM,EAAAA,GAAAA,IAEK,KAAAilD,IAAAZ,EAAAA,GAAAA,IADA7zB,EAAM0sD,QAAM,K,gCAMZ98E,EAAAkmF,gBAAgBptF,SAAM,YAAjC8G,EAAAA,GAAAA,IAuBM,MAAAklD,GAAA,EAtBJhlD,EAAAA,GAAAA,GAA4C,WAAAmkD,EAAAA,GAAAA,IAArCjkD,EAAA8L,GAAG,4BAAD,IAEThM,EAAAA,GAAAA,GAA+C,UAAAmkD,EAAAA,GAAAA,IAAzCjkD,EAAA8L,GAAG,iCAAD,IAERhM,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,WAAAmkD,EAAAA,GAAAA,IAAvCjkD,EAAA8L,GAAG,8BAAD,IACThM,EAAAA,GAAAA,GAA4C,WAAAmkD,EAAAA,GAAAA,IAArCjkD,EAAA8L,GAAG,4BAAD,qBAEXlM,EAAAA,GAAAA,IAWKwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAVaxpD,EAAAkmF,iBAAe,SAAxB91D,G,mBADTxwB,EAAAA,GAAAA,IAWK,MATFkI,IAAKsoB,EAAM1e,SAAW,W,EAEvB5R,EAAAA,GAAAA,GAA6B,WAAAmkD,EAAAA,GAAAA,IAAtB7zB,EAAM1e,UAAQ,GACM,KAAjB0e,EAAM0sD,SAAM,YAAtBl9E,EAAAA,GAAAA,IAEK,KAAAmlD,IAAAd,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,oCAAD,kBAEPlM,EAAAA,GAAAA,IAEK,KAAAqlD,IAAAhB,EAAAA,GAAAA,IADA7zB,EAAM0sD,QAAM,K,gCAMZ98E,EAAAgmF,oBAAoBltF,SAAM,YAArC8G,EAAAA,GAAAA,IAuBM,MAAAslD,GAAA,EAtBJplD,EAAAA,GAAAA,GAAgD,WAAAmkD,EAAAA,GAAAA,IAAzCjkD,EAAA8L,GAAG,gCAAD,IAEThM,EAAAA,GAAAA,GAAmD,UAAAmkD,EAAAA,GAAAA,IAA7CjkD,EAAA8L,GAAG,qCAAD,IAERhM,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,WAAAmkD,EAAAA,GAAAA,IAAvCjkD,EAAA8L,GAAG,8BAAD,IACThM,EAAAA,GAAAA,GAA4C,WAAAmkD,EAAAA,GAAAA,IAArCjkD,EAAA8L,GAAG,4BAAD,qBAEXlM,EAAAA,GAAAA,IAWKwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAVaxpD,EAAAgmF,qBAAmB,SAA5B51D,G,mBADTxwB,EAAAA,GAAAA,IAWK,MATFkI,IAAKsoB,EAAM1e,SAAW,e,EAEvB5R,EAAAA,GAAAA,GAA6B,WAAAmkD,EAAAA,GAAAA,IAAtB7zB,EAAM1e,UAAQ,GACM,KAAjB0e,EAAM0sD,SAAM,YAAtBl9E,EAAAA,GAAAA,IAEK,KAAAulD,IAAAlB,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,oCAAD,kBAEPlM,EAAAA,GAAAA,IAEK,KAAAo/E,IAAA/6B,EAAAA,GAAAA,IADA7zB,EAAM0sD,QAAM,K,gCAMZ98E,EAAAmmF,oBAAoBrtF,SAAM,YAArC8G,EAAAA,GAAAA,IAuBM,MAAAq/E,GAAA,EAtBJn/E,EAAAA,GAAAA,GAAiD,WAAAmkD,EAAAA,GAAAA,IAA1CjkD,EAAA8L,GAAG,iCAAD,IAEThM,EAAAA,GAAAA,GAAoD,UAAAmkD,EAAAA,GAAAA,IAA9CjkD,EAAA8L,GAAG,sCAAD,IAERhM,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,WAAAmkD,EAAAA,GAAAA,IAAvCjkD,EAAA8L,GAAG,8BAAD,IACThM,EAAAA,GAAAA,GAA4C,WAAAmkD,EAAAA,GAAAA,IAArCjkD,EAAA8L,GAAG,4BAAD,qBAEXlM,EAAAA,GAAAA,IAWKwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAVaxpD,EAAAmmF,qBAAmB,SAA5B/1D,G,mBADTxwB,EAAAA,GAAAA,IAWK,MATFkI,IAAKsoB,EAAM1e,SAAW,gB,EAEvB5R,EAAAA,GAAAA,GAA6B,WAAAmkD,EAAAA,GAAAA,IAAtB7zB,EAAM1e,UAAQ,GACM,KAAjB0e,EAAM0sD,SAAM,YAAtBl9E,EAAAA,GAAAA,IAEK,KAAAs/E,IAAAj7B,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,oCAAD,kBAEPlM,EAAAA,GAAAA,IAEK,KAAAu/E,IAAAl7B,EAAAA,GAAAA,IADA7zB,EAAM0sD,QAAM,K,gCAMZ98E,EAAAomF,mBAAmBttF,SAAM,YAApC8G,EAAAA,GAAAA,IAuBM,MAAAw/E,GAAA,EAtBJt/E,EAAAA,GAAAA,GAAgD,WAAAmkD,EAAAA,GAAAA,IAAzCjkD,EAAA8L,GAAG,gCAAD,IAEThM,EAAAA,GAAAA,GAAmD,UAAAmkD,EAAAA,GAAAA,IAA7CjkD,EAAA8L,GAAG,qCAAD,IAERhM,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,WAAAmkD,EAAAA,GAAAA,IAAvCjkD,EAAA8L,GAAG,8BAAD,IACThM,EAAAA,GAAAA,GAA4C,WAAAmkD,EAAAA,GAAAA,IAArCjkD,EAAA8L,GAAG,4BAAD,qBAEXlM,EAAAA,GAAAA,IAWKwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAVaxpD,EAAAomF,oBAAkB,SAA3Bh2D,G,mBADTxwB,EAAAA,GAAAA,IAWK,MATFkI,IAAKsoB,EAAM1e,SAAW,e,EAEvB5R,EAAAA,GAAAA,GAA6B,WAAAmkD,EAAAA,GAAAA,IAAtB7zB,EAAM1e,UAAQ,GACM,KAAjB0e,EAAM0sD,SAAM,YAAtBl9E,EAAAA,GAAAA,IAEK,KAAAy/E,IAAAp7B,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,oCAAD,kBAEPlM,EAAAA,GAAAA,IAEK,KAAA0/E,IAAAr7B,EAAAA,GAAAA,IADA7zB,EAAM0sD,QAAM,K,gCAMZ98E,EAAAqmF,sBAAsBvtF,SAAM,YAAvC8G,EAAAA,GAAAA,IAuBM,MAAA2/E,GAAA,EAtBJz/E,EAAAA,GAAAA,GAAmD,WAAAmkD,EAAAA,GAAAA,IAA5CjkD,EAAA8L,GAAG,mCAAD,IAEThM,EAAAA,GAAAA,GAAsD,UAAAmkD,EAAAA,GAAAA,IAAhDjkD,EAAA8L,GAAG,wCAAD,IAERhM,EAAAA,GAAAA,GAiBQ,eAhBNA,EAAAA,GAAAA,GAGK,YAFHA,EAAAA,GAAAA,GAA8C,WAAAmkD,EAAAA,GAAAA,IAAvCjkD,EAAA8L,GAAG,8BAAD,IACThM,EAAAA,GAAAA,GAA4C,WAAAmkD,EAAAA,GAAAA,IAArCjkD,EAAA8L,GAAG,4BAAD,qBAEXlM,EAAAA,GAAAA,IAWKwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAVaxpD,EAAAqmF,uBAAqB,SAA9Bj2D,G,mBADTxwB,EAAAA,GAAAA,IAWK,MATFkI,IAAKsoB,EAAM1e,SAAW,kB,EAEvB5R,EAAAA,GAAAA,GAA6B,WAAAmkD,EAAAA,GAAAA,IAAtB7zB,EAAM1e,UAAQ,GACM,KAAjB0e,EAAM0sD,SAAM,YAAtBl9E,EAAAA,GAAAA,IAEK,KAAA4/E,IAAAv7B,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,oCAAD,kBAEPlM,EAAAA,GAAAA,IAEK,KAAA8/E,IAAAz7B,EAAAA,GAAAA,IADA7zB,EAAM0sD,QAAM,K,gCAMb98E,EAAA0mF,qBAAkB,YAA5B9mF,EAAAA,GAAAA,IAEK,KAAA4iF,IAAAv+B,EAAAA,GAAAA,IADAjkD,EAAA8L,GAAG,uCAAD,qBAGI9L,EAAAsmF,mBAAmBxtF,SAAM,YAApC8G,EAAAA,GAAAA,IAUM,MAAA6iF,GAAA,EATJ3iF,EAAAA,GAAAA,GAAkD,WAAAmkD,EAAAA,GAAAA,IAA3CjkD,EAAA8L,GAAG,kCAAD,IAEThM,EAAAA,GAAAA,GAMK,2BALHF,EAAAA,GAAAA,IAIEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAHkBxpD,EAAAsmF,oBAAkB,SAA7BS,G,mBADTnnF,EAAAA,GAAAA,IAIE,MAFCkI,IAAKi/E,E,aACN9iC,EAAAA,GAAAA,IAAQ8iC,I,0CAKH/mF,EAAAumF,eAAeztF,SAAM,YAAhC8G,EAAAA,GAAAA,IAUM,MAAA+iF,GAAA,EATJ7iF,EAAAA,GAAAA,GAA6C,WAAAmkD,EAAAA,GAAAA,IAAtCjkD,EAAA8L,GAAG,6BAAD,IAEThM,EAAAA,GAAAA,GAMK,2BALHF,EAAAA,GAAAA,IAIEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAHkBxpD,EAAAumF,gBAAc,SAAzBQ,G,mBADTnnF,EAAAA,GAAAA,IAIE,MAFCkI,IAAKi/E,E,aACN9iC,EAAAA,GAAAA,IAAQ8iC,I,0CAKH/mF,EAAAwmF,gBAAgB1tF,SAAM,YAAjC8G,EAAAA,GAAAA,IAaM,MAAAgjF,GAAA,EAZJ9iF,EAAAA,GAAAA,GAA8C,WAAAmkD,EAAAA,GAAAA,IAAvCjkD,EAAA8L,GAAG,8BAAD,IAEThM,EAAAA,GAAAA,GASK,2BARHF,EAAAA,GAAAA,IAOKwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IANexpD,EAAAwmF,iBAAe,SAA1BO,G,mBADTnnF,EAAAA,GAAAA,IAOK,MALFkI,IAAKi/E,IAAO9iC,EAAAA,GAAAA,IAEV8iC,EAAQC,SAAU,KACrB/iC,EAAAA,GAAAA,IAAGjkD,EAAA8L,GAAG,qCAAsC,KAC5Cm4C,EAAAA,GAAAA,IAAG8iC,EAAQlrF,aAAW,E,+DE1MpC8L,SAAU,CACR0P,kBAAiB,WAAM,OAAOhY,KAAK0L,OAAOhR,MAAM2X,SAAS2F,iBAAkB,EAC3EC,0BAAyB,WACvB,OAAOjY,KAAK0L,OAAOhR,MAAM2X,SAAS4F,4BAC/BjY,KAAK0L,OAAOoP,QAAQnH,aAAakuD,SAClC7hE,KAAK0L,OAAOhR,MAAM2X,SAAS2H,4BAC/B,IEbJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uNXJzDzZ,EAAAA,GAAAA,IAMM,MANNC,GAMM,CAL2BG,EAAAsX,4BAAyB,YAAxD0tC,EAAAA,GAAAA,IAA4Did,EAAA,CAAAn6D,IAAA,uBAC5DzE,EAAAA,GAAAA,IAAe4jF,IACf5jF,EAAAA,GAAAA,IAA0B6jF,IAC1B7jF,EAAAA,GAAAA,IAAwB8jF,GACFnnF,EAAAqX,oBAAiB,YAAvC2tC,EAAAA,GAAAA,IAA2Ckd,EAAA,CAAAp6D,IAAA,uB,aYLxCpJ,MAAM,uB,IACJA,MAAM,iB,IAGNA,MAAM,c,WCyBf,SA9B2B,CACzBjH,KAAM,iBAAO,CACX8S,OAAO,EACR,EACD4iD,QAAO,WACL9tD,KAAK+nF,UACP,EACAloF,QAAS,CACPkoF,SAAQ,WAAI,IAAArmF,EAAA,KACJ6rD,EAAOvtD,KAAK84D,OAAO52B,OAAO9K,SAAW,IAAMp3B,KAAK84D,OAAO52B,OAAOrmB,SACpE7b,KAAK0L,OAAOhR,MAAM+wB,IAAIC,kBAAkBwR,UAAU,CAAEplC,GAAIy1D,IACrD91D,MAAK,SAAC+1D,GACL,GAAIA,EAAatiD,MACfxJ,EAAKwJ,OAAQ,MACR,CACLxJ,EAAKgK,OAAO4G,OAAO,cAAe,CAACk7C,IACnC,IAAM11D,EAAK01D,EAAa11D,GACxB4J,EAAKtB,QAAQjD,QAAQ,CACnBnD,KAAM,wBACNkoC,OAAQ,CAAEpqC,GAAAA,IAEd,CACF,IAAE,OACK,WACL4J,EAAKwJ,OAAQ,CACf,GACJ,ICnBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yCFJzD3K,EAAAA,GAAAA,IAYM,MAZNC,GAYM,EAXJC,EAAAA,GAAAA,GAEM,MAFNkkD,IAEMC,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,8CAAD,IAEPhM,EAAAA,GAAAA,GAOM,MAPNokD,GAOM,EANJpkD,EAAAA,GAAAA,GAEI,UAAAmkD,EAAAA,GAAAA,IADCjkD,EAAA8L,GAAG,uCAAwC,MAAEm4C,EAAAA,GAAAA,IAAGjkD,EAAAm4D,OAAO52B,OAAO9K,UAAW,KAACwtB,EAAAA,GAAAA,IAAGjkD,EAAAm4D,OAAO52B,OAAOrmB,UAAQ,GAE/Flb,EAAAuK,QAAK,YAAd3K,EAAAA,GAAAA,IAEI,IAAAykD,IAAAJ,EAAAA,GAAAA,IADCjkD,EAAA8L,GAAG,+BAAD,wB,aGTNpN,MAAM,6B,IACJA,MAAM,iB,IACJA,MAAM,S,IAURA,MAAM,c,ICZRA,MAAM,aCIbgL,GAAAA,GAAAA,IACE2qE,GAAAA,KASF,SANkB,CAChB11E,MAAO,CACL,SCeJ,GAxBc,CACZlH,KAAI,WACF,MAAO,CACL67E,OAAO,EAEX,EACAhzE,WAAY,CACV+mF,WCF6B,QAAgB,GAAQ,CAAC,CAAC,S,8FHNzDznF,EAAAA,GAAAA,IAgBM,MAhBNC,GAgBM,EAfJwD,EAAAA,GAAAA,IAKcuhD,EAAA,CAJXpY,GAAE,CAAAnzC,KAAA,iBAAAkoC,OAAA,CAAApqC,GAA0C6I,EAAA7J,KAAKgB,KAClDuH,MAAM,a,oBAEN,iBAAgB,qBAAbsB,EAAA7J,KAAKsb,OAAK,G,oBAEfpO,EAAAA,GAAAA,IAQcuhD,EAAA,CAPXpY,GAAE,CAAAnzC,KAAA,aAAAkoC,OAAA,CAAApqC,GAAsC6I,EAAA7J,KAAKgB,KAC9CuH,MAAM,oB,oBAEN,iBAGE,EAHF2E,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACNyK,KAAK,e,0BEHXxB,SAAU,CACRgpB,MAAK,WACH,OAAOtxB,KAAK0L,OAAOhR,MAAM42B,MAAMZ,QACjC,GAEF7wB,QAAS,CACPooF,cAAa,WACXjoF,KAAKi0E,OAAQ,CACf,EACAiU,QAAO,WACLloF,KAAKi0E,OAAQ,CACf,IEfE,IAA2B,QAAgB,GAAQ,CAAC,CAAC,S,iGLNzD1zE,EAAAA,GAAAA,IAoBM,MApBNC,GAoBM,EAnBJC,EAAAA,GAAAA,GAUM,MAVNkkD,GAUM,EATJlkD,EAAAA,GAAAA,GAEM,MAFNokD,IAEMD,EAAAA,GAAAA,IADDjkD,EAAA8L,GAAG,gBAAD,IAEPzI,EAAAA,GAAAA,IAKcuhD,EAAA,CAJXpY,GAAI,CAAAnzC,KAAA,aACLqF,MAAM,sC,oBAEN,iBAAqB,qBAAlBsB,EAAA8L,GAAG,cAAD,G,aAGThM,EAAAA,GAAAA,GAOM,MAPNukD,GAOM,iBANJzkD,EAAAA,GAAAA,IAKEwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAJexpD,EAAA2wB,MAAMp1B,QAAQkJ,WAAO,SAA7BtO,G,mBADT6uD,EAAAA,GAAAA,IAKEwiC,EAAA,CAHC1/E,IAAK3R,EACLA,KAAMA,EACPuI,MAAM,a,kCKTd,MC0BA,GAlCsB,CACpBjH,KAAI,WACF,MAAO,CACLw4B,OAAQ,KAEZ,EACA3vB,WAAY,CACV+sE,SAAAA,IAEF1lE,SAAU,CACR4Z,SAAQ,WAAM,OAAOliB,KAAK0L,OAAOhR,MAAMwkB,SAASuB,UAAU3pB,IAAK,GAEjE82D,MAAO,CACLkL,OAAQ,SAAUtR,GACG,mBAAfA,EAAMxtD,MAA6BwtD,EAAMtlB,OAAOpqC,KAAOkI,KAAK4wB,SAC9D5wB,KAAK4wB,OAAS42B,EAAMtlB,OAAOpqC,GAC3BkI,KAAK0L,OAAOjR,SAAS,uBAAwB,QAC7CuF,KAAK0L,OAAO4G,OAAO,gBAAiB,CAAE4P,SAAU,SAChDliB,KAAK0L,OAAOjR,SAAS,YAAa,CAAEm2B,OAAQ5wB,KAAK4wB,SACjD5wB,KAAK0L,OAAOjR,SAAS,wBAAyB,CAAEynB,SAAU,OAAQ0O,OAAQ5wB,KAAK4wB,SAEnF,GAEFxlB,QAAO,WACLpL,KAAK4wB,OAAS5wB,KAAK84D,OAAO52B,OAAOpqC,GACjCkI,KAAK0L,OAAOjR,SAAS,YAAa,CAAEm2B,OAAQ5wB,KAAK4wB,SACjD5wB,KAAK0L,OAAOjR,SAAS,wBAAyB,CAAEynB,SAAU,OAAQ0O,OAAQ5wB,KAAK4wB,QACjF,EACAnmB,UAAS,WACPzK,KAAK0L,OAAOjR,SAAS,uBAAwB,QAC7CuF,KAAK0L,OAAO4G,OAAO,gBAAiB,CAAE4P,SAAU,QAClD,GCzBF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qECJzDyjC,EAAAA,GAAAA,IAKEorB,EAAA,CAJA3+D,MAAM,YACL8P,SAAUvhB,EAAAuhB,SACV,UAASvhB,EAAAiwB,OACV,gBAAc,Q,2CCJXvxB,MAAM,gC,IAEPwxC,IAAI,SACJxxC,MAAM,mC,IAWDA,MAAM,S,IAeRA,MAAM,c,IACJA,MAAM,c,IACFokD,IAAI,mB,iBAwBJpkD,MAAM,c,sCA+BTA,MAAM,W,UAMNA,MAAM,c,6CAmCTA,MAAM,gB,IACToB,EAAAA,GAAAA,GAAuB,QAAjBpB,MAAM,UAAQ,S,IChInBA,MAAM,mB,IACJA,MAAM,c,IACJA,MAAM,gB,uBAaRA,MAAM,cCRfgL,GAAAA,GAAAA,IACEysD,GAAAA,IACAlD,GAAAA,KAwCF,SArCwB,CACtB3yD,WAAY,CACVmqD,SAAAA,GAAAA,GAEF6pB,MAAO,CAAC,UAAW,cAAe,WAClC78E,KAAI,WACF,MAAO,CACL4S,SAAS,EACThQ,MAAO,GACPotF,eAAe,EAEnB,EACAvoF,QAAS,CACPo+D,QAAS1E,MAAS,WAChBv5D,KAAK+vB,OAAO/vB,KAAKhF,MACnB,GAAG,KACH+0B,OAAM,SAAE/0B,GAAO,IAAA0G,EAAA,KACR1G,GAKLgF,KAAKgL,SAAU,EACfhL,KAAKkG,MAAM,WACXlG,KAAKuzE,QAAU,GACfvzE,KAAK0L,OAAOjR,SAAS,SAAU,CAAEw1B,EAAGj1B,EAAOxD,SAAS,EAAMiI,KAAM,WAAY2wB,UAAWpwB,KAAKooF,gBACzF3wF,MAAK,SAAAW,GACJsJ,EAAKwE,MAAM,UAAW9N,EAAK4xB,SAAS9yB,KAAI,SAAAmD,GAAC,OAAIA,EAAEvC,EAAE,IACnD,IAAE,SACO,WACP4J,EAAKsJ,SAAU,EACftJ,EAAKwE,MAAM,cACb,KAdAlG,KAAKgL,SAAU,CAenB,ICrCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,2FFNzDzK,EAAAA,GAAAA,IAuBM,MAvBNC,GAuBM,EAtBJC,EAAAA,GAAAA,GAaM,MAbNkkD,GAaM,EAZJlkD,EAAAA,GAAAA,GAKM,MALNokD,GAKM,EAJJ7gD,EAAAA,GAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,0CACNyK,KAAK,c,UAGTrJ,EAAAA,GAAAA,GAKC,SAJCowC,IAAI,S,qDACKlwC,EAAA3F,MAAKkqD,CAAA,GACbC,YAAaxkD,EAAA8L,GAAG,gBAChBwxD,QAAKp9D,EAAA,KAAAA,EAAA,qBAAEF,EAAAs9D,SAAAt9D,EAAAs9D,QAAAnkE,MAAA6G,EAAAhE,UAAO,I,oBAFNgE,EAAA3F,YAKbyF,EAAAA,GAAAA,GAOM,MAPNwkD,GAOM,EANJjhD,EAAAA,GAAAA,IAKWk6D,EAAA,C,WAJAv9D,EAAAynF,c,qDAAAznF,EAAAynF,cAAaljC,CAAA,GACrBmjC,SAAQ1nF,EAAAs9D,S,oBAET,iBAAgC,qBAA7Bt9D,EAAA8L,GAAG,yBAAD,G,uoBGTbpC,GAAAA,GAAAA,IACEysD,GAAAA,IACAlD,GAAAA,KAGF,IAAM00B,GAAW,CACfrnF,WAAY,CACVqyE,cAAAA,GAAAA,EACA9B,WAAAA,GAAAA,QACA+W,gBAAAA,GACAjX,YAAAA,GAAAA,EACAkX,aAAAA,GAAAA,GAEFpwF,KAAI,WACF,MAAO,CACLga,MAAO,GACPq2E,WAAY,GACZC,eAAgB,GAChBC,eAAgB,IAAIlmF,IAAI,IACxBmmF,cAAe,GACfC,aAAc,IAAIpmF,IAAI,IACtBqmF,eAAe,EACfC,cAAc,EAElB,EACA39E,QAAO,WAAI,IAAA1J,EAAA,KACJ1B,KAAKlI,KACVkI,KAAK0L,OAAOjR,SAAS,YAAa,CAAEm2B,OAAQ5wB,KAAKlI,KAC9CL,MAAK,WACJiK,EAAK0Q,MAAQ1Q,EAAKwwB,cAAcxwB,EAAK5J,IACrC4J,EAAK+mF,WAAa/mF,EAAK0Q,KACzB,IACFpS,KAAK0L,OAAOjR,SAAS,oBAAqB,CAAEm2B,OAAQ5wB,KAAKlI,KACtDL,MAAK,WACJiK,EAAKgnF,eAAiBhnF,EAAKywB,iBAAiBzwB,EAAK5J,IACjD4J,EAAKgnF,eAAeptE,SAAQ,SAAA2D,GAC1Bvd,EAAKgK,OAAOjR,SAAS,qBAAsBwkB,EAC7C,GACF,IACJ,EACA3W,SAAQpP,GAAAA,GAAA,CACNpB,GAAE,WACA,OAAOkI,KAAK84D,OAAO52B,OAAOpqC,EAC5B,EACAkxF,aAAY,WAAI,IAAArgF,EAAA,KACd,MAAO,GAAAtP,QAAAU,EAAAA,EAAAA,GAAIiG,KAAK0oF,iBAAc3uF,EAAAA,EAAAA,GAAKiG,KAAK6oF,eACrC3xF,KAAI,SAAA+nB,GAAM,OAAItW,EAAKm0B,SAAS7d,EAAO,IAAE9lB,QAAO,SAAA6C,GAAI,OAAIA,CAAI,GAC7D,EACA8lC,YAAW,WAAI,IAAA94B,EAAA,KACb,OAAOhJ,KAAK4oF,cAAc1xF,KAAI,SAAA+nB,GAAM,OAAIjW,EAAK8zB,SAAS7d,EAAO,IAAE9lB,QAAO,SAAA6C,GAAI,OAAIA,CAAI,GACpF,IACG4nD,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,MAE5CgwC,EAAAA,EAAAA,IAAW,CAAC,WAAY,gBAAiB,sBAE9ChkD,QAAS,CACPo+D,QAAO,WACLj+D,KAAK+vB,OAAO/vB,KAAKhF,MACnB,EACAiuF,mBAAkB,SAAEjtF,GACdgE,KAAK2oF,eAAenlF,IAAIxH,EAAKlE,KAC/BkI,KAAKlI,IAAMkI,KAAK2zE,QAAQ33E,GACxBgE,KAAK2oF,eAAc,OAAQ3sF,EAAKlE,MAEhCkI,KAAKlI,IAAMkI,KAAK6zE,WAAW73E,EAAKlE,IAChCkI,KAAK2oF,eAAetkE,IAAIroB,EAAKlE,IAEjC,EACAoxF,oBAAmB,SAAEltF,GACfgE,KAAK6oF,aAAarlF,IAAIxH,EAAKlE,KAC7BkI,KAAKlI,IAAMkI,KAAK6zE,WAAW73E,EAAKlE,IAChCkI,KAAK6oF,aAAY,OAAQ7sF,EAAKlE,MAE9BkI,KAAKlI,IAAMkI,KAAK2zE,QAAQ33E,GACxBgE,KAAK6oF,aAAaxkE,IAAIroB,EAAKlE,IAE/B,EACAqxF,UAAS,SAAEntF,GACT,OAAOgE,KAAK2oF,eAAenlF,IAAIxH,EAAKlE,GACtC,EACAsxF,QAAO,SAAEptF,GACP,OAAOgE,KAAK6oF,aAAarlF,IAAIxH,EAAKlE,GACpC,EACA67E,QAAO,SAAE33E,GACPgE,KAAK0L,OAAOjR,SAAS,iBAAkB,CAAEy2B,UAAWl1B,EAAKlE,GAAI84B,OAAQ5wB,KAAKlI,IAC5E,EACA+7E,WAAU,SAAE50D,GACVjf,KAAK0L,OAAOjR,SAAS,oBAAqB,CAAEy2B,UAAWjS,EAAQ2R,OAAQ5wB,KAAKlI,IAC9E,EACAuxF,gBAAe,SAAEC,GACftpF,KAAK8oF,eAAgB,CACvB,EACAS,oBAAmB,SAAED,GACnBtpF,KAAK8oF,eAAgB,CACvB,EACAU,gBAAe,SAAEF,GACftpF,KAAK8oF,eAAgB,EACrB9oF,KAAK4oF,cAAgBU,CACvB,EACAG,gBAAe,WAAI,IAAAlgF,EAAA,KACjBvJ,KAAK0L,OAAOjR,SAAS,UAAW,CAAEm2B,OAAQ5wB,KAAKlI,GAAIsa,MAAOpS,KAAKyoF,aAC5DhxF,MAAK,WACJ8R,EAAK6I,MAAQ7I,EAAK2oB,cAAc3oB,EAAKzR,GACvC,GACJ,EACAy5B,WAAU,WAAI,IAAAg5C,EAAA,KACZvqE,KAAK0L,OAAOjR,SAAS,aAAc,CAAE2X,MAAOpS,KAAKyoF,aAC9ChxF,MAAK,SAACX,GACL,OAAOyzE,EACJ7+D,OACAjR,SAAS,kBAAmB,CAAEm2B,OAAQ95B,EAAKgB,GAAIg5B,YAAU/2B,EAAAA,EAAAA,GAAMwwE,EAAKse,gBACpEpxF,MAAK,kBAAMX,EAAKgB,EAAE,GACvB,IACCL,MAAK,SAACm5B,GACL25C,EAAKnqE,QAAQhB,KAAK,CAAEpF,KAAM,iBAAkBkoC,OAAQ,CAAEpqC,GAAI84B,IAC5D,IAAE,OACK,SAACl5B,GACN6yE,EAAK7+D,OAAOjR,SAAS,mBAAoB,CACvCsY,WAAY,cACZE,YAAa,CAACvb,EAAEu0B,SAChBjlB,MAAO,SAEX,GACJ,EACAqqB,WAAU,WACRrxB,KAAK0L,OAAOjR,SAAS,aAAc,CAAEm2B,OAAQ5wB,KAAKlI,KAClDkI,KAAKI,QAAQhB,KAAK,CAAEpF,KAAM,SAC5B,IAIJ,YCvIA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,6MLNzDuG,EAAAA,GAAAA,IA+JM,MA/JNC,GA+JM,EA9JJC,EAAAA,GAAAA,GA2BM,MA3BNkkD,GA2BM,EAvBJlkD,EAAAA,GAAAA,GAQS,UAPPpB,MAAM,iCACLS,QAAKe,EAAA,KAAAA,EAAA,kBAAA6oF,EAAA,OAAE/oF,EAAAP,QAAQupF,OAARD,EAAA/oF,EAAAP,SAAQupF,KAAI7vF,MAAA4vF,EAAA/sF,UAAA,I,EAEpBqH,EAAAA,GAAAA,IAGE+hD,EAAA,CAFAO,KAAK,KACLx8C,KAAK,oBAGTrJ,EAAAA,GAAAA,GAaM,MAbNokD,GAaM,CAXIlkD,EAAA7I,KAAE,YADV6tD,EAAAA,GAAAA,IAOSmY,EAAA,C,MALPC,QAAQ,sB,CAEG6rB,WAASvrB,EAAAA,GAAAA,KAClB,iBAAW,qBAAR19D,EAAAyR,OAAK,G,yBAGZuzC,EAAAA,GAAAA,IAGEmY,EAAA,C,MADAC,QAAQ,4B,MAIdt9D,EAAAA,GAAAA,GAiGM,MAjGNukD,GAiGM,EAhGJvkD,EAAAA,GAAAA,GAeM,MAfNwkD,GAeM,EAdJxkD,EAAAA,GAAAA,GAA4D,QAA5D2lD,IAA4DxB,EAAAA,GAAAA,IAA5BjkD,EAAA8L,GAAG,gBAAD,aAA0B,KAC5Dm4C,EAAAA,GAAAA,IAAG,KAAM,MACT,UAAAnkD,EAAAA,GAAAA,GAIC,SAHC3I,GAAG,kBACH+4C,IAAI,Q,qDACKlwC,EAAA8nF,WAAUvjC,CAAA,I,kBAAVvkD,EAAA8nF,cAGH9nF,EAAA7I,KAAE,YADVyI,EAAAA,GAAAA,IAMS,U,MAJPlB,MAAM,mCACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA8oF,iBAAA9oF,EAAA8oF,gBAAA3vF,MAAA6G,EAAAhE,UAAe,K,SAEpBgE,EAAA8L,GAAG,uBAAD,wBAGTzI,EAAAA,GAAAA,IA+EeutE,EAAA,CA9EblyE,MAAM,yBACL,mBAAiB,G,oBAElB,iBAuBM,CAtBEsB,EAAA7I,IAAM6I,EAAAkoF,aAAaviC,KAAO,IAAH,YAD/B/lD,EAAAA,GAAAA,IAuBM,O,MArBHsJ,MAAOlJ,EAAA8L,GAAG,wBACXpN,MAAM,gB,EAENoB,EAAAA,GAAAA,GAiBM,MAjBN4kD,GAiBM,iBAhBJ9kD,EAAAA,GAAAA,IAeMwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IAdWxpD,EAAAqoF,cAAY,SAApBhtF,G,mBADTuE,EAAAA,GAAAA,IAeM,OAbHkI,IAAKzM,EAAKlE,GACXuH,MAAM,U,EAEN2E,EAAAA,GAAAA,IASgB8vE,EAAA,CARb93E,KAAMA,GAAI,C,mBAEX,iBAKS,EALTyE,EAAAA,GAAAA,GAKS,UAJPpB,MAAM,mCACLS,QAAK,SAAAolD,GAAA,OAAEvkD,EAAAsoF,mBAAmBjtF,EAAI,I,SAE5B2E,EAAAwoF,UAAUntF,GAAQ2E,EAAA8L,GAAG,gBAAkB9L,EAAA8L,GAAG,2BAAD,EAAA45C,I,+DAOtD5lD,EAAAA,GAAAA,GAiDM,OAhDJpB,MAAM,cACLwK,MAAOlJ,EAAA8L,GAAG,sB,EAEXzI,EAAAA,GAAAA,IAIE6lF,EAAA,CAHCC,UAASnpF,EAAA6oF,gBACTO,UAASppF,EAAA0oF,gBACTW,cAAarpF,EAAA4oF,qB,kDAGR5oF,EAAAmoF,gBAAa,YADrBvoF,EAAAA,GAAAA,IAKM,MALNilD,GAKM,EADJxhD,EAAAA,GAAAA,IAAgBimF,QAAA,YAElB1pF,EAAAA,GAAAA,IAiCM,MAjCNklD,GAiCM,iBA7BJllD,EAAAA,GAAAA,IA4BMwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IA3BWxpD,EAAAmhC,aAAW,SAAnB9lC,G,mBADTuE,EAAAA,GAAAA,IA4BM,OA1BHkI,IAAKzM,EAAKlE,GACXuH,MAAM,U,EAEN2E,EAAAA,GAAAA,IAsBgB8vE,EAAA,CArBb93E,KAAMA,GAAI,C,mBAEX,iBAIO,CAHC2E,EAAA+nF,eAAe5sF,SAASE,EAAKlE,MAAE,YADvCyI,EAAAA,GAAAA,IAIO,OAAAmlD,IAAAd,EAAAA,GAAAA,IADFjkD,EAAA8L,GAAG,qBAAD,qBAGE9L,EAAA+nF,eAAe5sF,SAASE,EAAKlE,MAIM,YAE5CyI,EAAAA,GAAAA,IAMS,U,MAJPlB,MAAM,mCACLS,QAAK,SAAAolD,GAAA,OAAEvkD,EAAAsoF,mBAAmBjtF,EAAI,I,SAE5B2E,EAAAwoF,UAAUntF,GAAQ2E,EAAA8L,GAAG,gBAAkB9L,EAAA8L,GAAG,2BAAD,EAAAo5C,OAXN,YADxCtlD,EAAAA,GAAAA,IAMS,U,MAJPlB,MAAM,mCACLS,QAAK,SAAAolD,GAAA,OAAEvkD,EAAAuoF,oBAAoBltF,EAAI,I,SAE7B2E,EAAAyoF,QAAQptF,GAAQ2E,EAAA8L,GAAG,gBAAkB9L,EAAA8L,GAAG,sBAAD,EAAAm5C,K,0DAexDnlD,EAAAA,GAAAA,GA+BM,MA/BNqlD,GA+BM,CA9BJ65B,GAESh/E,EAAA7I,GAOK6I,EAAAooF,eAIP,YAEPxoF,EAAAA,GAAAA,IAcWwkD,GAAAA,GAAA,CAAAt8C,IAAA,wBAbN9H,EAAA8L,GAAG,wBAAyB,IAC/B,IAAAhM,EAAAA,GAAAA,GAKS,UAJPpB,MAAM,mCACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA0wB,YAAA1wB,EAAA0wB,WAAAv3B,MAAA6G,EAAAhE,UAAU,K,SAEfgE,EAAA8L,GAAG,gBAAD,IAEPhM,EAAAA,GAAAA,GAKS,UAJPpB,MAAM,mCACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAooF,cAAe,CAAH,K,SAEjBpoF,EAAA8L,GAAG,eAAD,WAlBiB,YAD1BlM,EAAAA,GAAAA,IAMS,U,MAJPlB,MAAM,mCACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAooF,cAAe,CAAH,K,SAEjBpoF,EAAA8L,GAAG,iBAAD,MAXI,YADXlM,EAAAA,GAAAA,IAMS,U,MAJPlB,MAAM,mCACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA4wB,YAAA5wB,EAAA4wB,WAAAz3B,MAAA6G,EAAAhE,UAAU,K,SAEfgE,EAAA8L,GAAG,iBAAD,O,aMtINpN,MAAM,0C,IACJA,MAAM,iB,IAKNA,MAAM,c,eAIFA,MAAM,a,IACJA,MAAM,W,IAGNA,MAAM,Q,IAMNA,MAAM,U,0BAUPA,MAAM,e,IC9BbA,MAAM,gB,IACJA,MAAM,W,IAGNA,MAAM,Q,IAYNA,MAAM,U,UAGPA,MAAM,S,2CAcNA,MAAM,W,kCA6BNA,MAAM,W,UAgBJA,MAAM,e,IC9ETA,MAAM,uB,kCAUHA,MAAM,yB,IACHokD,IAAI,2B,2BAQPpkD,MAAM,yB,IACHokD,IAAI,yB,2BAQPpkD,MAAM,yB,IAMHokD,IAAI,wBCvBjB,SAV2B,CACzBxiD,WAAY,CACVmqD,SAAAA,GAAAA,GAEF9rD,MAAO,CACL2gD,aAAchoD,OACd2R,SAAUrI,UCCd,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,qEFNzDhB,EAAAA,GAAAA,IAoCM,MApCNC,GAoCM,YAnCJC,EAAAA,GAAAA,GAQE,YAPAowC,IAAI,W,qDACKlwC,EAAAs/C,aAAatgD,QAAOulD,CAAA,GAC7B7lD,MAAM,gBACNqvD,KAAK,IACLw7B,KAAK,IACJ/kC,YAAaxkD,EAAA8L,GAAG,kCAChB7C,SAAUjJ,EAAAiJ,U,mBALFjJ,EAAAs/C,aAAatgD,YAOxBc,EAAAA,GAAAA,GAQO,OARPokD,GAQO,EAPLpkD,EAAAA,GAAAA,GAAwF,QAAxFukD,IAAwFJ,EAAAA,GAAAA,IAAhDjkD,EAAA8L,GAAG,oCAAD,cAC1ChM,EAAAA,GAAAA,GAKC,SAJC3I,GAAG,0B,qDACM6I,EAAAs/C,aAAaoB,SAAQ6D,CAAA,GAC7BzlD,KAAMkB,EAAAs/C,aAAasB,OAAS,OAAS,iBACrC33C,SAAUjJ,EAAAiJ,U,mBAFFjJ,EAAAs/C,aAAaoB,eAK1B5gD,EAAAA,GAAAA,GAQO,OARP2lD,GAQO,EAPL3lD,EAAAA,GAAAA,GAAoF,QAApF2kD,IAAoFR,EAAAA,GAAAA,IAA9CjkD,EAAA8L,GAAG,kCAAD,cACxChM,EAAAA,GAAAA,GAKC,SAJC3I,GAAG,wB,qDACM6I,EAAAs/C,aAAaqB,OAAM4D,CAAA,GAC3BzlD,KAAMkB,EAAAs/C,aAAasB,OAAS,OAAS,iBACrC33C,SAAUjJ,EAAAiJ,U,mBAFFjJ,EAAAs/C,aAAaqB,aAK1B7gD,EAAAA,GAAAA,GAOO,OAPP4lD,GAOO,EANLriD,EAAAA,GAAAA,IAIEk6D,EAAA,CAHApmE,GAAG,uB,WACM6I,EAAAs/C,aAAasB,O,qDAAb5gD,EAAAs/C,aAAasB,OAAM2D,CAAA,GAC3Bt7C,SAAUjJ,EAAAiJ,U,mCAEbnJ,EAAAA,GAAAA,GAAkF,QAAlF6kD,IAAkFV,EAAAA,GAAAA,IAA7CjkD,EAAA8L,GAAG,iCAAD,M,8kBGwE7C,SAtGqB,CACnBxL,WAAY,CACVkpF,mBAAAA,GACA1Y,YAAAA,GAAAA,GAEFr5E,KAAI,WACF,MAAO,CACLgyF,SAAS,EACTC,mBAAoB,CAClB1qF,QAAS,GACT0hD,cAAU9+C,EACV++C,YAAQ/+C,EACRg/C,YAAQh/C,GAEV+nF,UAAW,GAEf,EACAhrF,MAAO,CACL2gD,aAAchoD,QAEhBqQ,SAAQpP,GAAAA,GAAA,IACH0qD,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,KAC7C,IACF02E,oBAAmB,WACjB,OAAOvqF,KAAK6T,aAAe7T,KAAK6T,YAAYwsC,WAAWvkD,SAAS,qCAClE,EACA6D,QAAO,WACL,OAAOK,KAAKigD,aAAatgD,OAC3B,EACA6qF,OAAM,WACJ,OAAOxqF,KAAKigD,aAAaN,IAC3B,EACA8qC,YAAW,WACT,IAAMtX,EAAOnzE,KAAKigD,aAAayqC,aAC/B,GAAKvX,EAIL,OAAOnzE,KAAK2qF,iBAAiBxX,EAAMwB,GAAAA,EAAAA,wBAAsC30E,KAAK40E,MAAM1lE,QACtF,EACAmyC,SAAQ,WACN,IAAM8xB,EAAOnzE,KAAKigD,aAAa2qC,UAC/B,GAAKzX,EAIL,OAAOnzE,KAAK2qF,iBAAiBxX,EAAMwB,GAAAA,EAAAA,wBAAsC30E,KAAK40E,MAAM1lE,QACtF,EACAoyC,OAAM,WACJ,IAAM6xB,EAAOnzE,KAAKigD,aAAa4qC,QAC/B,GAAK1X,EAIL,OAAOnzE,KAAK2qF,iBAAiBxX,EAAMwB,GAAAA,EAAAA,wBAAsC30E,KAAK40E,MAAM1lE,QACtF,EACAgxC,SAAQ,WACN,OAAOlgD,KAAKigD,aAAaC,QAC3B,IAEFrgD,QAAS,CACPirF,WAAU,WACR,IAAK9qF,KAAKwqF,OACR,OAAOxqF,KAAK0L,OAAOjR,SAAS,yBAA0BuF,KAAKigD,aAAanoD,GAE5E,EACA2pD,mBAAkB,WAChB,OAAOzhD,KAAK0L,OAAOjR,SAAS,qBAAsBuF,KAAKigD,aAAanoD,GACtE,EACA6yF,iBAAgB,SAAExX,EAAMjkE,GACtB,IAAMsjC,EAAI,IAAItc,KAAKi9C,GACnB,OAAOnzE,KAAKigD,aAAa8qC,QAAUv4C,EAAEkiC,mBAAmBxlE,GAAUsjC,EAAEw4C,eAAe97E,EACrF,EACA+7E,cAAa,WACXjrF,KAAKqqF,mBAAmB1qF,QAAUK,KAAKigD,aAAairC,QAAQC,YAC5DnrF,KAAKqqF,mBAAmBhpC,SAAWrhD,KAAKigD,aAAa2qC,UACrD5qF,KAAKqqF,mBAAmB/oC,OAASthD,KAAKigD,aAAa4qC,QACnD7qF,KAAKqqF,mBAAmB9oC,OAASvhD,KAAKigD,aAAa8qC,QACnD/qF,KAAKoqF,SAAU,CACjB,EACAgB,WAAU,WAAI,IAAA1pF,EAAA,KACZ1B,KAAK0L,OAAOjR,SAAS,mBAAkBvB,GAAA,CACrCpB,GAAIkI,KAAKigD,aAAanoD,IACnBkI,KAAKqqF,qBAEP5yF,MAAK,WACJiK,EAAK0oF,SAAU,CACjB,IAAE,OACK,SAAAl/E,GACLxJ,EAAK4oF,UAAYp/E,EAAMA,KACzB,GACJ,EACAmgF,WAAU,WACRrrF,KAAKoqF,SAAU,CACjB,EACA7lC,WAAU,WACRvkD,KAAKsqF,eAAY/nF,CACnB,I,ykBC9CJ,SArD0B,CACxBtB,WAAY,CACVqqF,cCC6B,QAAgB,GAAQ,CAAC,CAAC,S,kINNzD/qF,EAAAA,GAAAA,IA8FM,MA9FNC,GA8FM,EA7FJC,EAAAA,GAAAA,GAEM,MAFNkkD,GAEM,EADJlkD,EAAAA,GAAAA,GAAwC,WAAAmkD,EAAAA,GAAAA,IAAjCjkD,EAAA8L,GAAG,wBAAD,MAEXhM,EAAAA,GAAAA,GAWM,MAXNokD,GAWM,CATKlkD,EAAAypF,U,YAKTzkC,EAAAA,GAAAA,IAGE4lC,EAAA,C,MADCtrC,aAAct/C,EAAA0pF,oB,4BAPD,YADhB1kC,EAAAA,GAAAA,IAKE6lC,EAAA,C,MAHCpqF,KAAMT,EAAAhB,QACNpH,MAAOoI,EAAAs/C,aAAannD,OACpB,gBAAc,G,6BAOnB2H,EAAAA,GAAAA,GA6EM,MA7ENukD,GA6EM,CA3EKrkD,EAAAypF,SAUiD,kBAV1C,YADhB7pF,EAAAA,GAAAA,IAaM,MAbN0kD,GAaM,CATQtkD,EAAA8pF,cAAW,YAAvBlqF,EAAAA,GAAAA,IAEO,OAAA6lD,IAAAxB,EAAAA,GAAAA,IADFjkD,EAAA8L,GAAG,uCAAwC,CAAzC0mE,KAAiDxyE,EAAA8pF,eAAW,qBAEvD9pF,EAAA0gD,WAAQ,YAApB9gD,EAAAA,GAAAA,IAEO,OAAA6kD,IAAAR,EAAAA,GAAAA,IADFjkD,EAAA8L,GAAG,mCAAoC,CAArC0mE,KAA6CxyE,EAAA0gD,YAAQ,qBAEhD1gD,EAAA2gD,SAAM,YAAlB/gD,EAAAA,GAAAA,IAEO,OAAA8kD,IAAAT,EAAAA,GAAAA,IADFjkD,EAAA8L,GAAG,iCAAkC,CAAnC0mE,KAA2CxyE,EAAA2gD,UAAM,wBAIjD3gD,EAAAypF,UAyBA,YAGT7pF,EAAAA,GAAAA,IAgCM,MAhCNilD,GAgCM,EA5BJ/kD,EAAAA,GAAAA,GAKS,UAJPpB,MAAM,qBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAyqF,YAAAzqF,EAAAyqF,WAAAtxF,MAAA6G,EAAAhE,UAAU,K,SAEfgE,EAAA8L,GAAG,qCAAD,IAEPhM,EAAAA,GAAAA,GAKS,UAJPpB,MAAM,qBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA0qF,YAAA1qF,EAAA0qF,WAAAvxF,MAAA6G,EAAAhE,UAAU,K,SAEfgE,EAAA8L,GAAG,qCAAD,GAGC9L,EAAAypF,SAAWzpF,EAAA2pF,YAAS,YAD5B/pF,EAAAA,GAAAA,IAeM,MAfNklD,GAeM,qBAXD9kD,EAAA8L,GAAG,2BAA4B,CAA7BvB,MAA+BvK,EAAAuK,SAAW,IAC/C,IAAAzK,EAAAA,GAAAA,GASS,UARPpB,MAAM,kBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA4jD,YAAA5jD,EAAA4jD,WAAAzqD,MAAA6G,EAAAhE,UAAU,I,EAElBqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,8BACNyK,KAAK,QACJsI,MAAOzR,EAAA8L,GAAG,8B,6CAxDH,YADhBlM,EAAAA,GAAAA,IA4BM,MA5BN8lD,GA4BM,CAvBI1lD,EAAAkT,cAAW,YADnBtT,EAAAA,GAAAA,IASS,U,MAPPlB,OAAKkqD,EAAAA,GAAAA,IAAA,CAAC,qBAAoB,CAAA4xB,QACPx6E,EAAA6pF,UAClB5gF,SAAUjJ,EAAAu/C,SACV9tC,MAAOzR,EAAAu/C,SAAWv/C,EAAA8L,GAAG,kCAAoC,GACzD3M,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAmqF,YAAAnqF,EAAAmqF,WAAAhxF,MAAA6G,EAAAhE,UAAU,K,SAEfgE,EAAA8L,GAAG,sCAAD,GAAA64C,MAAA,gBAGC3kD,EAAA4pF,sBAAmB,YAD3BhqF,EAAAA,GAAAA,IAMS,U,MAJPlB,MAAM,qBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAsqF,eAAAtqF,EAAAsqF,cAAAnxF,MAAA6G,EAAAhE,UAAa,K,SAElBgE,EAAA8L,GAAG,8BAAD,qBAGC9L,EAAA4pF,sBAAmB,YAD3BhqF,EAAAA,GAAAA,IAMS,U,MAJPlB,MAAM,qBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA8gD,oBAAA9gD,EAAA8gD,mBAAA3nD,MAAA6G,EAAAhE,UAAkB,K,SAEvBgE,EAAA8L,GAAG,gCAAD,2B,KKnDX09E,mBAAAA,IAEF/xF,KAAI,WACF,MAAO,CACLqzF,gBAAiB,CACf9rF,QAAS,GACT0hD,cAAU9+C,EACV++C,YAAQ/+C,EACRg/C,QAAQ,GAEVmqC,SAAS,EACTxgF,WAAO3I,EAEX,EACAurD,QAAO,WACL9tD,KAAK0L,OAAOjR,SAAS,qBACvB,EACA6N,SAAQpP,GAAAA,GAAA,IACH0qD,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,KAC7C,IACFyrC,cAAa,WACX,OAAOt/C,KAAK0L,OAAOhR,MAAM4kD,cAAcA,aACzC,EACAqsC,oBAAmB,WACjB,OAAO3rF,KAAK6T,aAAe7T,KAAK6T,YAAYwsC,WAAWvkD,SAAS,qCAClE,IAEF+D,QAAS,CACPuhD,iBAAgB,WAAI,IAAA1/C,EAAA,KAClB1B,KAAK0rF,SAAU,EACf1rF,KAAK0L,OAAOjR,SAAS,mBAAoBuF,KAAKyrF,iBAC3Ch0F,MAAK,WACJiK,EAAK+pF,gBAAgB9rF,QAAU,GAC/B+B,EAAK2/C,cAAW9+C,EAChBb,EAAK4/C,YAAS/+C,CAChB,IAAE,OACK,SAAA2I,GACLxJ,EAAKwJ,MAAQA,EAAMA,KACrB,IAAE,SACO,WACPxJ,EAAKgqF,SAAU,CACjB,GACJ,EACAnnC,WAAU,WACRvkD,KAAKkL,WAAQ3I,CACf,IE5CJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,kIRNzDhC,EAAAA,GAAAA,IAwDM,MAxDNC,GAwDM,EAvDJC,EAAAA,GAAAA,GAIM,MAJNkkD,GAIM,EAHJlkD,EAAAA,GAAAA,GAEO,aAAAmkD,EAAAA,GAAAA,IADFjkD,EAAA8L,GAAG,8BAAD,MAGThM,EAAAA,GAAAA,GAiDM,MAjDNokD,GAiDM,CA/CIlkD,EAAAgrF,sBAAmB,YAD3BprF,EAAAA,GAAAA,IAuCU,UAAAykD,GAAA,EApCRvkD,EAAAA,GAAAA,GAmCM,MAnCNwkD,GAmCM,EAlCJxkD,EAAAA,GAAAA,GAEM,MAFN2lD,GAEM,EADJ3lD,EAAAA,GAAAA,GAAmD,WAAAmkD,EAAAA,GAAAA,IAA5CjkD,EAAA8L,GAAG,mCAAD,MAEXhM,EAAAA,GAAAA,GAKM,MALN2kD,GAKM,EAJJphD,EAAAA,GAAAA,IAGEunF,EAAA,CAFCtrC,aAAct/C,EAAA8qF,gBACd7hF,SAAUjJ,EAAA+qF,S,uCAGfjrF,EAAAA,GAAAA,GAwBM,MAxBN4kD,GAwBM,EAvBJ5kD,EAAAA,GAAAA,GAMS,UALPpB,MAAM,iCACLuK,SAAUjJ,EAAA+qF,QACV5rF,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,GAAAA,KAAA,kBAAUH,EAAAygD,kBAAAzgD,EAAAygD,iBAAAtnD,MAAA6G,EAAAhE,UAAgB,mB,SAE7BgE,EAAA8L,GAAG,8BAAD,EAAA45C,IAGC1lD,EAAAuK,QAAK,YADb3K,EAAAA,GAAAA,IAeM,MAfN+kD,GAeM,qBAXD3kD,EAAA8L,GAAG,2BAA4B,CAA7BvB,MAA+BvK,EAAAuK,SAAW,IAC/C,IAAAzK,EAAAA,GAAAA,GASS,UARPpB,MAAM,kBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA4jD,YAAA5jD,EAAA4jD,WAAAzqD,MAAA6G,EAAAhE,UAAU,I,EAElBqH,EAAAA,GAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,8BACNyK,KAAK,QACJsI,MAAOzR,EAAA8L,GAAG,8B,gFAOvBlM,EAAAA,GAAAA,IAOUwkD,GAAAA,GAAA,MAAAoF,EAAAA,GAAAA,IANexpD,EAAA2+C,eAAa,SAA7BW,G,mBADT1/C,EAAAA,GAAAA,IAOU,WALPkI,IAAKw3C,EAAanoD,I,EAEnBkM,EAAAA,GAAAA,IAEE4nF,EAAA,CADC3rC,aAAcA,GAAY,0B,kBSzBrC,YAAgBxnD,GACd,IAAMozF,EAA6B,SAAC1+C,EAAI3vC,EAAM5B,GACxCnD,EAAMiC,MAAMqB,MAAM8X,YACpBjY,IAEAA,EAAKnD,EAAMiC,MAAM2X,SAASyF,qBAAuB,YAErD,EAEIg0E,EAAS,CACX,CACE9xF,KAAM,OACNotC,KAAM,IACN2gD,SAAU,SAAAgE,GACR,OAAQtzF,EAAMiC,MAAMqB,MAAM8X,YACtBpb,EAAMiC,MAAM2X,SAASwF,kBACrBpf,EAAMiC,MAAM2X,SAASyF,sBAAwB,WACnD,GAEF,CAAE9d,KAAM,2BAA4BotC,KAAM,YAAa4kD,UAAWC,IAClE,CAAEjyF,KAAM,kBAAmBotC,KAAM,eAAgB4kD,UAAWE,IAC5D,CAAElyF,KAAM,UAAWotC,KAAM,gBAAiB4kD,UAAWG,GAAiBC,YAAaP,GACnF,CAAE7xF,KAAM,eAAgBotC,KAAM,YAAa4kD,UAAWK,IACtD,CAAEryF,KAAM,YAAaotC,KAAM,aAAc4kD,UAAWM,IACpD,CAAEtyF,KAAM,eAAgBotC,KAAM,cAAe4kD,UAAWO,GAAkBC,KAAM,CAAEC,YAAY,IAC9F,CACEzyF,KAAM,2BACNotC,KAAM,0DACN4kD,UAAWU,GACXN,YAAaP,GAEf,CACE7xF,KAAM,sBACNotC,KAAM,oCACN4kD,UAAWU,GACXN,YAAaP,GAEf,CAAE7xF,KAAM,wBAAyBotC,KAAM,cAAe4kD,UAAWW,IACjE,CAAE3yF,KAAM,eAAgBotC,KAAM,gCAAiC4kD,UAAWY,GAAcR,YAAaP,GACrG,CAAE7xF,KAAM,MAAOotC,KAAM,uBAAwB4kD,UAAWa,GAAKT,YAAaP,GAC1E,CAAE7xF,KAAM,eAAgBotC,KAAM,gBAAiB4kD,UAAWc,IAC1D,CAAE9yF,KAAM,iBAAkBotC,KAAM,kBAAmB4kD,UAAWe,GAAeztF,OAAO,GACpF,CAAEtF,KAAM,qBAAsBotC,KAAM,uBAAwB4kD,UAAWc,IACvE,CAAE9yF,KAAM,kBAAmBotC,KAAM,mBAAoB4kD,UAAWgB,GAAgBZ,YAAaP,GAC7F,CAAE7xF,KAAM,gBAAiBotC,KAAM,2BAA4B4kD,UAAWjyB,GAAAA,QAAez6D,MAAO,iBAAO,CAAE2tF,iBAAiB,EAAM,EAAGb,YAAaP,GAC5I,CAAE7xF,KAAM,QAASotC,KAAM,SAAU4kD,UAAWllC,IAC5C,CAAE9sD,KAAM,cAAeotC,KAAM,eAAgB4kD,UAAW5rB,GAAY9gE,MAAO,iBAAO,CAAEkvD,UAAU,EAAO,GACrG,CAAEx0D,KAAM,iBAAkBotC,KAAM,kBAAmB4kD,UAAWkB,GAAe5tF,MAAO,SAACkoD,GAAK,MAAM,CAAE5vD,KAAM4vD,EAAMxsD,MAAMpD,KAAM,GAC1H,CAAEoC,KAAM,SAAUotC,KAAM,UAAW4kD,UAAWmB,GAAQ7tF,MAAO,SAACkoD,GAAK,MAAM,CAAExsD,MAAOwsD,EAAMxsD,MAAMA,MAAO,GACrG,CAAEhB,KAAM,gBAAiBotC,KAAM,iBAAkB4kD,UAAWoB,GAAahB,YAAaP,GACtF,CAAE7xF,KAAM,QAASotC,KAAM,SAAU4kD,UAAWqB,IAC5C,CAAErzF,KAAM,gBAAiBotC,KAAM,iBAAkB4kD,UAAWsB,IAC5D,CAAEtzF,KAAM,eAAgBotC,KAAM,eAAgB4kD,UAAWW,IACzD,CAAE3yF,KAAM,sBAAuBotC,KAAM,SAAU4kD,UAAWW,IAC1D,CAAE3yF,KAAM,QAASotC,KAAM,SAAU4kD,UAAWuB,IAC5C,CAAEvzF,KAAM,iBAAkBotC,KAAM,aAAc4kD,UAAWwB,IACzD,CAAExzF,KAAM,aAAcotC,KAAM,kBAAmB4kD,UAAWyB,IAC1D,CAAEzzF,KAAM,YAAaotC,KAAM,aAAc4kD,UAAWyB,IACpD,CAAEzzF,KAAM,kBAAmBotC,KAAM,YAAa4kD,UAAWjsB,GAAUzgE,MAAO,iBAAO,CAAE2sD,aAAa,EAAME,eAAe,EAAM,EAAGigC,YAAaP,IAU7I,OAPIpzF,EAAMiC,MAAM2X,SAASoH,+BACvBqyE,EAASA,EAAOzyF,OAAO,CACrB,CAAEW,KAAM,OAAQotC,KAAM,uCAAwC4kD,UAAW/U,GAAMuV,KAAM,CAAEC,YAAY,GAASL,YAAaP,GACzH,CAAE7xF,KAAM,QAASotC,KAAM,yBAA0B4kD,UAAW0B,GAAUlB,KAAM,CAAEC,YAAY,GAASL,YAAaP,MAI7GC,CACR,E,IC/FG6B,GACAC,G,YACEC,GAAY,IAAIprF,IAAI,IAEpBqrF,GAAoB,SAAC1Q,GACzB,IAAM2Q,EAAe1tF,OAAO80B,WAAappB,SAASqpB,gBAAgBC,YAClEjtB,GAAAA,GAAiCg1E,EAAI,CACnC4Q,qBAAqB,IAEvBH,GAAUxpE,IAAI+4D,GACdliF,YAAW,WACT,GAAI2yF,GAAUvnC,MAAQ,EAAG,CAEvB,QAAgC/jD,IAA5BorF,GAAuC,CACzC,IAAMM,EAAQliF,SAASmiF,eAAe,OACtCP,GAA0BttF,OAAO8tF,iBAAiBF,GAAOG,iBAAiB,iBAC1EH,EAAMj2B,MAAMq2B,aAAeV,GAA0B,QAAHt0F,OAAWs0F,GAAuB,OAAAt0F,OAAM00F,EAAY,UAAA10F,OAAW00F,EAAY,KAC/H,CAEA,QAAkCxrF,IAA9BqrF,GAAyC,CAC3C,IAAMU,EAAiBviF,SAASmiF,eAAe,kBAC/CN,GAA4BvtF,OAAO8tF,iBAAiBG,GAAgBF,iBAAiB,SACrFE,EAAet2B,MAAMx+B,MAAQo0D,GAA4B,QAAHv0F,OAAWu0F,GAAyB,OAAAv0F,OAAM00F,EAAY,UAAA10F,OAAW00F,EAAY,KACrI,CACAhiF,SAASC,KAAKuiF,UAAUlqE,IAAI,gBAC9B,CACF,GACF,EAEMmqE,GAAmB,SAACpR,GACxByQ,GAAS,OAAQzQ,GACjBliF,YAAW,WACc,IAAnB2yF,GAAUvnC,YACoB/jD,IAA5BorF,KACF5hF,SAASmiF,eAAe,OAAOl2B,MAAMq2B,aAAeV,GAEpDA,QAA0BprF,QAEMA,IAA9BqrF,KACF7hF,SAASmiF,eAAe,kBAAkBl2B,MAAMx+B,MAAQo0D,GAExDA,QAA4BrrF,GAE9BwJ,SAASC,KAAKuiF,UAAUE,OAAO,iBAEnC,IACArmF,GAAAA,GAAgCg1E,EAClC,EAEMsR,GAAY,CAChB5gC,QAAS,SAACsvB,EAAIuR,GACRA,EAAQ3vF,OACV8uF,GAAkB1Q,EAEtB,EACAwR,QAAS,SAACxR,EAAIuR,GACRA,EAAQx2D,WAAaw2D,EAAQ3vF,QAI7B2vF,EAAQ3vF,MACV8uF,GAAkB1Q,GAElBoR,GAAiBpR,GAErB,EACA3yE,UAAW,SAAC2yE,GACVoR,GAAiBpR,EACnB,GAGF,kBAAgByR,GACdA,EAAIH,UAAU,mBAAoBA,GACnC,E,ylBCxDD,IAAII,GAAuB,KAYrBC,GAAmB,SAAC32F,GACxB,IAAMonC,EAAUK,KAAKznC,GACfyL,EAAQi8B,WAAWtiC,MAAKzD,EAAAA,EAAAA,GAAIylC,GAAStoC,KAAI,SAACsH,GAAI,OAAKA,EAAKuhC,WAAW,EAAE,KAE3E,OADa,IAAIivD,aAAcC,OAAOprF,EAExC,EAEMqrF,GAAY,eAAA10F,GAAAc,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAAC,EAAOorC,GAAO,IAAAxuC,EAAA2H,EAAAovF,EAAA,OAAA5zF,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACE,IAA7BxD,EAjBD2T,SAASmiF,eAAe,oBAGxBY,KACHA,GAAuB1uD,KAAK6X,MAAMlsC,SAASmiF,eAAe,mBAAmB/nF,cAExE2oF,IALE,OAiBK12F,EAAKwuC,GAAQ,CAAAlrC,EAAAE,KAAA,eAAAF,EAAAG,OAAA,SAClBwE,OAAOkK,MAAMq8B,IAAQ,OAGS,OADjC7mC,EAAUgvF,GAAiB32F,EAAKwuC,IAChCuoD,EAAc/uD,KAAK6X,MAAMl4C,GAAQrE,EAAAG,OAAA,SAChC,CACLuhB,IAAI,EACJC,KAAM,kBAAM8xE,CAAW,EACvBhxF,KAAM,kBAAMgxF,CAAW,IACxB,wBAAAzzF,EAAAe,OAAA,GAAAjB,EAAA,KACF,gBAZiBkB,GAAA,OAAAlC,EAAAV,MAAA,KAAA6C,UAAA,KAcZyyF,GAAiB,eAAAzxF,GAAArC,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAAqhB,EAAAvhB,GAAA,IAAA5C,EAAA2b,EAAAhc,EAAA+c,EAAAE,EAAA,OAAA9Z,IAAAA,MAAA,SAAAshB,GAAA,cAAAA,EAAAlhB,KAAAkhB,EAAAjhB,MAAA,OAAc,OAALnD,EAAK4C,EAAL5C,MAAKokB,EAAAlhB,KAAA,EAAAkhB,EAAAjhB,KAAA,EAElBszF,GAAa,oBAAmB,OAAzC,KAAH96E,EAAGyI,EAAAvN,MACD8N,GAAI,CAAFP,EAAAjhB,KAAA,gBAAAihB,EAAAjhB,KAAA,EACWwY,EAAIiJ,OAAM,OAAvBjlB,EAAIykB,EAAAvN,KACJ6F,EAAY/c,EAAKi3F,eACjBh6E,EAAiBjd,EAAK8yF,QAAQoE,iBAEpC72F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,YAAagF,MAAOmW,IAChE1c,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,0BAA2BgF,MAAO5G,EAAKm3F,oBACnF92F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,mBAAoBgF,QAAS5G,EAAK8yF,QAAQsE,SAASC,oBAC/Fh3F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,iBAAkBgF,MAAO5G,EAAK8yF,QAAQsE,SAASE,kBAAoB,IAE3Gr6E,GACF5c,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,iBAAkBgF,MAAOqW,IACtEwH,EAAAjhB,KAAA,uBAEMwY,EAAG,QAAAyI,EAAAjhB,KAAA,iBAAAihB,EAAAlhB,KAAA,GAAAkhB,EAAArN,GAAAqN,EAAA,SAGZN,QAAQrR,MAAM,qDACdqR,QAAQrR,MAAK2R,EAAArN,IAAO,yBAAAqN,EAAApgB,OAAA,GAAAmgB,EAAA,mBAEvB,gBAvBsBlN,GAAA,OAAA/R,EAAA7D,MAAA,KAAA6C,UAAA,KAyBjBgzF,GAAwB,eAAA5xF,GAAAzC,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAAwhB,EAAAnf,GAAA,IAAAwW,EAAAhc,EAAA,OAAAmD,IAAAA,MAAA,SAAA4hB,GAAA,cAAAA,EAAAxhB,KAAAwhB,EAAAvhB,MAAA,OAAc,OAAAgC,EAALnF,MAAK0kB,EAAAxhB,KAAA,EAAAwhB,EAAAvhB,KAAA,EAEzByE,OAAOkK,MAAM,wCAAuC,OAA7D,KAAH6J,EAAG+I,EAAA7N,MACD8N,GAAI,CAAFD,EAAAvhB,KAAA,gBAAAuhB,EAAAvhB,KAAA,EACWwY,EAAIiJ,OAAM,OAAnB,OAAJjlB,EAAI+kB,EAAA7N,KAAA6N,EAAAthB,OAAA,SACHzD,EAAKw3F,YAAU,cAEfx7E,EAAG,QAAA+I,EAAAvhB,KAAA,iBAAAuhB,EAAAxhB,KAAA,GAAAwhB,EAAA3N,GAAA2N,EAAA,SAGZZ,QAAQrR,MAAM,sEACdqR,QAAQrR,MAAKiS,EAAA3N,IAAO,yBAAA2N,EAAA1gB,OAAA,GAAAsgB,EAAA,mBAEvB,gBAb6B8yE,GAAA,OAAA9xF,EAAAjE,MAAA,KAAA6C,UAAA,KAexBmzF,GAAe,eAAA9xF,GAAA1C,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAAqjB,IAAA,IAAAxK,EAAA,OAAA7Y,IAAAA,MAAA,SAAAsjB,GAAA,cAAAA,EAAAljB,KAAAkjB,EAAAjjB,MAAA,cAAAijB,EAAAljB,KAAA,EAAAkjB,EAAAjjB,KAAA,EAEFyE,OAAOkK,MAAM,uBAAsB,OAA5C,KAAH6J,EAAGyK,EAAAvP,MACD8N,GAAI,CAAFyB,EAAAjjB,KAAA,eAAAijB,EAAAhjB,OAAA,SACDuY,EAAIiJ,QAAM,aAEVjJ,EAAG,OAAAyK,EAAAjjB,KAAA,iBAIO,OAJPijB,EAAAljB,KAAA,GAAAkjB,EAAArP,GAAAqP,EAAA,SAGZtC,QAAQC,KAAK,6DACbD,QAAQC,KAAIqC,EAAArP,IAAOqP,EAAAhjB,OAAA,SACZ,CAAC,GAAC,yBAAAgjB,EAAApiB,OAAA,GAAAmiB,EAAA,mBAEZ,kBAboB,OAAA5gB,EAAAlE,MAAA,KAAA6C,UAAA,KAefozF,GAAW,eAAAv9E,GAAAlX,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAAy0F,EAAAz9E,GAAA,IAAA09E,EAAAC,EAAAz3F,EAAA03F,EAAAC,EAAAlyE,EAAAmyE,EAAA,OAAA90F,IAAAA,MAAA,SAAA+0F,GAAA,cAAAA,EAAA30F,KAAA20F,EAAA10F,MAAA,OAqDgB,OArDPq0F,EAAS19E,EAAT09E,UAAWC,EAAY39E,EAAZ29E,aAAcz3F,EAAK8Z,EAAL9Z,MAC9C03F,EAAY9vF,OAAOkwF,4BAA8B,CAAC,EAClDH,EAAM/vF,OAAOmwF,kBAAkBC,SAGjCvyE,EAAS,CAAC,EACViyE,EAAUO,wBAAkC,gBAARN,GACtC7zE,QAAQC,KAAK,4CACb0B,EAASjmB,OAAOqlB,OAAO,CAAC,EAAG2yE,EAAWC,IAEtChyE,EAASjmB,OAAOqlB,OAAO,CAAC,EAAG4yE,EAAcD,IAGrCI,EAAqB,SAACr2F,GAC1BvB,EAAMgC,SAAS,oBAAqB,CAAET,KAAAA,EAAMgF,MAAOkf,EAAOlkB,IAC5D,GAEmB,mBACnBq2F,EAAmB,cACnBA,EAAmB,iBACnBA,EAAmB,qBACnBA,EAAmB,iBACnBA,EAAmB,wBACnBA,EAAmB,QAEnB53F,EAAMgC,SAAS,oBAAqB,CAClCT,KAAM,WACNgF,WAAkC,IAApBkf,EAAO3G,UAEjB2G,EAAO3G,WAGb9e,EAAMgC,SAAS,oBAAqB,CAClCT,KAAM,aACNgF,WAAoC,IAAtBkf,EAAO5G,WACjB,EACA4G,EAAO5G,aAEb+4E,EAAmB,YACnB53F,EAAM6Z,OAAO,8BAA+B4L,EAAO9G,aAEnDi5E,EAAmB,uBACnBA,EAAmB,qBACnBA,EAAmB,6BACnBA,EAAmB,qBACnBA,EAAmB,kBACnBA,EAAmB,8BACnBA,EAAmB,aACnBA,EAAmB,uBACnBA,EAAmB,mBACnBA,EAAmB,0BACnBA,EAAmB,qBACnBA,EAAmB,gBACnBA,EAAmB,gBAAeC,EAAAz0F,OAAA,SAE3BpD,EAAMgC,SAAS,WAAYyjB,EAAO9F,QAAM,yBAAAk4E,EAAA7zF,OAAA,GAAAuzF,EAAA,KAChD,gBAxDgBW,GAAA,OAAAn+E,EAAA1Y,MAAA,KAAA6C,UAAA,KA0DXi0F,GAAM,eAAAh+E,GAAAtX,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAAs1F,EAAAn+E,GAAA,IAAAja,EAAA2b,EAAAhT,EAAA,OAAA7F,IAAAA,MAAA,SAAAu1F,GAAA,cAAAA,EAAAn1F,KAAAm1F,EAAAl1F,MAAA,OAAc,OAALnD,EAAKia,EAALja,MAAKq4F,EAAAn1F,KAAA,EAAAm1F,EAAAl1F,KAAA,EAEPyE,OAAOkK,MAAM,iCAAgC,OAAtD,KAAH6J,EAAG08E,EAAAxhF,MACD8N,GAAI,CAAF0zE,EAAAl1F,KAAA,gBAAAk1F,EAAAl1F,KAAA,EACWwY,EAAIjW,OAAM,OAAvBiD,EAAI0vF,EAAAxhF,KACV7W,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,MAAOgF,MAAOoC,IAAO0vF,EAAAl1F,KAAA,uBAE1DwY,EAAG,QAAA08E,EAAAl1F,KAAA,iBAAAk1F,EAAAn1F,KAAA,GAAAm1F,EAAAthF,GAAAshF,EAAA,SAGZv0E,QAAQC,KAAK,kBACbD,QAAQC,KAAIs0E,EAAAthF,IAAG,yBAAAshF,EAAAr0F,OAAA,GAAAo0F,EAAA,mBAElB,gBAbWE,GAAA,OAAAn+E,EAAA9Y,MAAA,KAAA6C,UAAA,KAeNq0F,GAAgB,eAAAl+E,GAAAxX,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAA01F,EAAAp+E,GAAA,IAAApa,EAAA2b,EAAAhT,EAAA,OAAA7F,IAAAA,MAAA,SAAA21F,GAAA,cAAAA,EAAAv1F,KAAAu1F,EAAAt1F,MAAA,OAAc,OAALnD,EAAKoa,EAALpa,MAAKy4F,EAAAv1F,KAAA,EAAAu1F,EAAAt1F,KAAA,EAEjBszF,GAAa,wBAAuB,OAA7C,KAAH96E,EAAG88E,EAAA5hF,MACD8N,GAAI,CAAF8zE,EAAAt1F,KAAA,gBAAAs1F,EAAAt1F,KAAA,EACWwY,EAAIjW,OAAM,OAAvBiD,EAAI8vF,EAAA5hF,KACV7W,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,+BAAgCgF,MAAOoC,IAAO8vF,EAAAt1F,KAAA,uBAEnFwY,EAAG,QAAA88E,EAAAt1F,KAAA,iBAAAs1F,EAAAv1F,KAAA,GAAAu1F,EAAA1hF,GAAA0hF,EAAA,SAGZ30E,QAAQC,KAAK,6BACbD,QAAQC,KAAI00E,EAAA1hF,IAAG,yBAAA0hF,EAAAz0F,OAAA,GAAAw0F,EAAA,mBAElB,gBAbqBE,GAAA,OAAAr+E,EAAAhZ,MAAA,KAAA6C,UAAA,KAehBy0F,GAAW,eAAA99E,GAAAhY,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAA81F,EAAAh+E,GAAA,IAAA5a,EAAA2b,EAAAxN,EAAA0qF,EAAA,OAAA/1F,IAAAA,MAAA,SAAAg2F,GAAA,cAAAA,EAAA51F,KAAA41F,EAAA31F,MAAA,OAAc,OAALnD,EAAK4a,EAAL5a,MAAK84F,EAAA51F,KAAA,EAAA41F,EAAA31F,KAAA,EAEZyE,OAAOkK,MAAM,yBAAwB,OAA9C,KAAH6J,EAAGm9E,EAAAjiF,MACD8N,GAAI,CAAFm0E,EAAA31F,KAAA,gBAAA21F,EAAA31F,KAAA,EACawY,EAAIiJ,OAAM,OAAnB,OAANzW,EAAM2qF,EAAAjiF,KAAAiiF,EAAA31F,KAAG,GACSrE,QAAQolB,IAC9B1kB,OAAOkT,QAAQvE,GAAQ1P,IAAG,eAAA4c,GAAAxY,EAAAA,EAAAA,GAAAC,IAAAA,MAAC,SAAAi2F,EAAAj+E,GAAA,IAAAoL,EAAA3kB,EAAAotC,EAAAqqD,EAAAjF,EAAA,OAAAjxF,IAAAA,MAAA,SAAAm2F,GAAA,cAAAA,EAAA/1F,KAAA+1F,EAAA91F,MAAA,OAAkB,OAAlB+iB,GAAAjhB,EAAAA,EAAAA,GAAA6V,EAAA,GAAQvZ,EAAI2kB,EAAA,GAAEyoB,EAAIzoB,EAAA,GAAA+yE,EAAA91F,KAAA,EACrByE,OAAOkK,MAAM68B,EAAO,aAAY,OACzC,GADPqqD,EAAOC,EAAApiF,KACTk9E,EAAO,CAAC,GACRiF,EAAQr0E,GAAI,CAAFs0E,EAAA91F,KAAA,eAAA81F,EAAA91F,KAAA,EACC61F,EAAQp0E,OAAM,OAA3BmvE,EAAIkF,EAAApiF,KAAA,cAAAoiF,EAAA71F,OAAA,SAEC,CACL81F,KAAM33F,EACNotC,KAAAA,EACAolD,KAAAA,IACD,yBAAAkF,EAAAj1F,OAAA,GAAA+0F,EAAA,KACF,gBAAAI,GAAA,OAAA99E,EAAAha,MAAA,KAAA6C,UAAA,EAXyB,KAY3B,QAbK20F,EAAQC,EAAAjiF,KAaXlV,MAAK,SAACC,EAAGC,GACV,OAAOD,EAAEmyF,KAAKp6E,MAAMy/E,cAAcv3F,EAAEkyF,KAAKp6E,MAC3C,IACA3Z,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,WAAYgF,MAAOsyF,IAAWC,EAAA31F,KAAA,uBAEnEwY,EAAG,QAAAm9E,EAAA31F,KAAA,iBAAA21F,EAAA51F,KAAA,GAAA41F,EAAA/hF,GAAA+hF,EAAA,SAGZh1E,QAAQC,KAAK,uBACbD,QAAQC,KAAI+0E,EAAA/hF,IAAG,yBAAA+hF,EAAA90F,OAAA,GAAA40F,EAAA,mBAElB,gBA7BgBS,GAAA,OAAAx+E,EAAAxZ,MAAA,KAAA6C,UAAA,KA+BXo1F,GAAY,eAAAhqE,GAAAzsB,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAAy2F,EAAAnqE,GAAA,IAAApvB,EAAAiC,EAAA4X,EAAAmkB,EAAApkB,EAAA,OAAA9W,IAAAA,MAAA,SAAA02F,GAAA,cAAAA,EAAAt2F,KAAAs2F,EAAAr2F,MAAA,OAEI,OAFKnD,EAAKovB,EAALpvB,MACpBiC,EAAkBjC,EAAlBiC,MAAO4X,EAAW7Z,EAAX6Z,OACPmkB,EAAoB/7B,EAApB+7B,MAAOpkB,EAAa3X,EAAb2X,SAAQ4/E,EAAAp2F,OAAA,SAChB85B,GAAcz8B,GAAAA,GAAC,CAAC,EAAIu9B,GAAK,IAAEpkB,SAAUA,EAAS6C,OAAQ5C,OAAAA,KAC1D7a,MAAK,SAAC4+B,GAAG,OAAKG,GAAct9B,GAAAA,GAAC,CAAC,EAAIm9B,GAAG,IAAEhkB,SAAUA,EAAS6C,SAAS,IACnEzd,MAAK,SAACigC,GACLplB,EAAO,cAAeolB,EAAMyK,cAC5B7vB,EAAO,uBAAwBmwB,GAAyBhqC,EAAMqiB,QAAQoc,YACxE,KAAE,wBAAA+6D,EAAAx1F,OAAA,GAAAu1F,EAAA,KACL,gBATiBE,GAAA,OAAAnqE,EAAAjuB,MAAA,KAAA6C,UAAA,KAWZw1F,GAAuB,SAAHjqE,GAA4B,IAAtBzvB,EAAKyvB,EAALzvB,MACxB25F,EADuClqE,EAAR8B,SACV9yB,KAAI,SAAA0tB,GAAG,OAAIA,EAAIsuB,MAAM,KAAK7vC,KAAK,IAC1D5K,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,gBAAiBgF,MAAOozF,GACtE,EAEMC,GAAW,eAAA/pE,GAAAhtB,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAA+2F,EAAAlqE,GAAA,IAAA3vB,EAAA2b,EAAAhc,EAAAo3F,EAAA+C,EAAAC,EAAA73F,EAAA83F,EAAAC,EAAAv4E,EAAAw4E,EAAA5R,EAAA/2D,EAAA,OAAAzuB,IAAAA,MAAA,SAAAq3F,GAAA,cAAAA,EAAAj3F,KAAAi3F,EAAAh3F,MAAA,OAAc,OAALnD,EAAK2vB,EAAL3vB,MAAKm6F,EAAAj3F,KAAA,EAAAi3F,EAAAh3F,KAAA,EAEZszF,GAAa,sBAAqB,OAA3C,KAAH96E,EAAGw+E,EAAAtjF,MACD8N,GAAI,CAAFw1E,EAAAh3F,KAAA,gBAAAg3F,EAAAh3F,KAAA,EACWwY,EAAIiJ,OAAM,OAAvBjlB,EAAIw6F,EAAAtjF,KACJkgF,EAAWp3F,EAAKo3F,SAChB+C,EAAW/C,EAAS+C,SAC1B95F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,OAAQgF,MAAOwwF,EAASqD,WACpEp6F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,mBAAoBgF,MAAO5G,EAAK06F,oBAC5Er6F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,sBAAuBgF,MAAOuzF,EAASz2F,SAAS,iBAC5FrD,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,SAAUgF,MAAOuzF,EAASz2F,SAAS,sBAC/ErD,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,iBAAkBgF,MAAOuzF,EAASz2F,SAAS,UACvFrD,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,+BAAgCgF,MAAOuzF,EAASz2F,SAAS,2BACrGrD,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,uCAAwCgF,MAAOuzF,EAASz2F,SAAS,oCAC7GrD,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,kBAAmBgF,MAAOuzF,EAASz2F,SAAS,YACxFrD,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,iBAAkBgF,MAAOuzF,EAASz2F,SAAS,WACvFrD,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,mBAAoBgF,MAAOuzF,EAASz2F,SAAS,aACzFrD,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,aAAcgF,MAAOwwF,EAASn1E,aAC1E5hB,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,gBAAiBgF,MAAOwwF,EAAS7K,gBAC7ElsF,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,mBAAoBgF,MAAOuzF,EAASz2F,SAAS,mBAEnF02F,EAAehD,EAASgD,aAC9B/5F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,cAAegF,MAAO+zF,SAASP,EAAaQ,WACxFv6F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,cAAegF,MAAO+zF,SAASP,EAAallC,UACxF70D,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,kBAAmBgF,MAAO+zF,SAASP,EAAa/8E,cAC5Fhd,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,cAAegF,MAAO+zF,SAASP,EAAaS,UACxFx6F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,eAAgBgF,MAAOwwF,EAAS0D,eAE5Ez6F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,sBAAuBgF,MAAOwwF,EAASr2E,sBACnF1gB,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,cAAegF,MAAOwwF,EAASt2E,cAErEve,EAAc60F,EAAS70F,YAC7BlC,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,qBAAsBgF,MAAOrE,EAAYw4F,UACrF16F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,iBAAkBgF,MAAOrE,EAAYy4F,MAE3EX,EAAWr6F,EAAKq6F,SACtBh6F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,iBAAkBgF,MAAOyzF,EAASY,UAC9E56F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,iBAAkBgF,MAAyB,YAAlByzF,EAASz4F,OAExE04F,EAAOlD,EAAQ,QACrB/2F,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,UAAWgF,MAAO0zF,IAExDv4E,EAAkB9Z,OAAO41B,yBAC/Bx9B,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,kBAAmBgF,MAAOmb,IAEhEw4E,EAAanD,EAASmD,WAE5Bl6F,EAAMgC,SAAS,oBAAqB,CAClCT,KAAM,qBACNgF,WAA0C,IAA5B2zF,EAAWW,cAErB9D,EAASmD,WAAWW,aAAax3F,SAAS,eAGhDrD,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,mBAAoBgF,MAAO2zF,IACvEl6F,EAAMgC,SAAS,oBAAqB,CAClCT,KAAM,aACNgF,WAAqC,IAAvB2zF,EAAWQ,SAErBR,EAAWQ,UAGXpS,EAA4ByO,EAASzO,0BAC3CtoF,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,4BAA6BgF,MAAO+hF,IAE1E/2D,EAAWwlE,EAASvJ,cAC1BkM,GAAqB,CAAE15F,MAAAA,EAAOuxB,SAAAA,IAAW4oE,EAAAh3F,KAAA,uBAElCwY,EAAG,QAAAw+E,EAAAh3F,KAAA,iBAAAg3F,EAAAj3F,KAAA,GAAAi3F,EAAApjF,GAAAojF,EAAA,SAGZr2E,QAAQC,KAAK,2BACbD,QAAQC,KAAIo2E,EAAApjF,IAAG,yBAAAojF,EAAAn2F,OAAA,GAAA61F,EAAA,mBAElB,gBA1EgBiB,GAAA,OAAAjrE,EAAAxuB,MAAA,KAAA6C,UAAA,KA4EX62F,GAAS,eAAA5qE,GAAAttB,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAAk4F,EAAAhrE,GAAA,IAAAhwB,EAAAi7F,EAAAzD,EAAAC,EAAA,OAAA30F,IAAAA,MAAA,SAAAo4F,GAAA,cAAAA,EAAAh4F,KAAAg4F,EAAA/3F,MAAA,OAAc,OAALnD,EAAKgwB,EAALhwB,MAAKk7F,EAAA/3F,KAAA,EAEJrE,QAAQolB,IAAI,CAACgzE,GAAyB,CAAEl3F,MAAAA,IAAUq3F,OAAmB,OAE5D,OAF7B4D,EAAWC,EAAArkF,KACX2gF,EAAYyD,EAAY,GACxBxD,EAAewD,EAAY,GAAEC,EAAA/3F,KAAA,EAE7Bm0F,GAAY,CAAEt3F,MAAAA,EAAOw3F,UAAAA,EAAWC,aAAAA,IAAgBz4F,KAAKs6F,GAAa,CAAEt5F,MAAAA,KAAS,wBAAAk7F,EAAAl3F,OAAA,GAAAg3F,EAAA,KACpF,gBAPcG,GAAA,OAAAhrE,EAAA9uB,MAAA,KAAA6C,UAAA,KASTk3F,GAAe,eAAA3qE,GAAA5tB,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAAu4F,EAAA/qE,GAAA,IAAAtwB,EAAA,OAAA8C,IAAAA,MAAA,SAAAw4F,GAAA,cAAAA,EAAAp4F,KAAAo4F,EAAAn4F,MAAA,OAAc,OAALnD,EAAKswB,EAALtwB,MAAKs7F,EAAAl4F,OAAA,SAE7B,IAAItE,QAAO,eAAA6xB,GAAA9tB,EAAAA,EAAAA,GAAAC,IAAAA,MAAC,SAAAy4F,EAAOx8F,EAASyD,GAAM,OAAAM,IAAAA,MAAA,SAAA04F,GAAA,cAAAA,EAAAt4F,KAAAs4F,EAAAr4F,MAAA,WACnCnD,EAAMqiB,QAAQ85B,eAAgB,CAAFq/C,EAAAr4F,KAAA,eAAAq4F,EAAAt4F,KAAA,EAAAs4F,EAAAr4F,KAAA,EAEtBnD,EAAMgC,SAAS,YAAahC,EAAMqiB,QAAQ85B,gBAAe,OAAAq/C,EAAAr4F,KAAA,eAAAq4F,EAAAt4F,KAAA,EAAAs4F,EAAAzkF,GAAAykF,EAAA,SAE/D13E,QAAQrR,MAAK+oF,EAAAzkF,IAAG,OAGpBhY,IAAS,yBAAAy8F,EAAAx3F,OAAA,GAAAu3F,EAAA,kBACV,gBAAAE,EAAAC,GAAA,OAAA/qE,EAAAtvB,MAAA,KAAA6C,UAAA,EATiB,KAShB,wBAAAo3F,EAAAt3F,OAAA,GAAAq3F,EAAA,KACH,gBAZoBM,GAAA,OAAAlrE,EAAApvB,MAAA,KAAA6C,UAAA,KA2FrB,SA7EqB,eAAA6sB,GAAAluB,EAAAA,EAAAA,GAAAC,IAAAA,MAAG,SAAA84F,EAAA/qE,GAAA,IAAA7wB,EAAAiW,EAAAyhF,EAAAj7E,EAAAo/E,EAAAn2E,EAAAo2E,EAAAn8E,EAAAo8E,EAAAn+D,EAAA,OAAA96B,IAAAA,MAAA,SAAAk5F,GAAA,cAAAA,EAAA94F,KAAA84F,EAAA74F,MAAA,OAQgD,OARvCnD,EAAK6wB,EAAL7wB,MAAOiW,EAAI4a,EAAJ5a,KACtCjW,EAAMgC,SAAS,iBAAkBy6B,MACjCz8B,EAAMgC,SAAS,kBAAmB66B,MAElCo/D,GAAAA,EAAAA,qBAEMvE,EAAY9vF,OAAOkwF,4BAA8B,CAAC,EAClDr7E,OAAsC,IAArBi7E,EAAUvvF,OAA0BuvF,EAAUvvF,OAASP,OAAOo1B,SAASC,OAC9Fj9B,EAAMgC,SAAS,oBAAqB,CAAET,KAAM,SAAUgF,MAAOkW,IAASu/E,EAAA74F,KAAA,EAEhE43F,GAAU,CAAE/6F,MAAAA,IAAQ,OAqB1B,OArB0B67F,EAEiB77F,EAAMiC,MAAMwjB,OAA/CC,EAAWm2E,EAAXn2E,YAAao2E,EAAiBD,EAAjBC,kBACbn8E,EAAU3f,EAAMiC,MAAM2X,SAAtB+F,MACmBm8E,GAAqBp2E,EAG1Co2E,GAAqBA,EAAkBj2E,qBAAuBC,EAAAA,IAChEC,EAAAA,EAAAA,IAAW+1E,IAEX/1E,EAAAA,EAAAA,IAAWL,GAEJ/F,GAGTmE,QAAQrR,MAAM,8BAGhBypF,EAAAA,EAAAA,IAAYl8F,EAAMiC,MAAMwjB,QAGxBu2E,EAAA74F,KAAA,GACMrE,QAAQolB,IAAI,CAChBk3E,GAAgB,CAAEp7F,MAAAA,IAClBu4F,GAAiB,CAAEv4F,MAAAA,IACnB45F,GAAY,CAAE55F,MAAAA,IACd22F,GAAkB,CAAE32F,MAAAA,MACpB,QAmCe,OAhCjBA,EAAMgC,SAAS,cACfhC,EAAMgC,SAAS,8BACfm2F,GAAO,CAAEn4F,MAAAA,IACT24F,GAAY,CAAE34F,MAAAA,IAER+7F,GAASI,EAAAA,GAAAA,IAAa,CAC1Bp1B,SAASq1B,EAAAA,GAAAA,MACT/I,OAAQA,GAAOrzF,GACfq8F,eAAgB,SAAC3nD,EAAI4nD,EAAOC,GAC1B,OAAI7nD,EAAG8nD,QAAQlwF,MAAK,SAAAw2C,GAAC,OAAIA,EAAEixC,KAAKC,UAAU,MAGnCuI,GAAiB,CAAE9e,KAAM,EAAGrG,IAAK,GAC1C,KAGIx5C,GAAM6+D,EAAAA,GAAAA,IAAUC,KAElBC,IAAIZ,GACRn+D,EAAI++D,IAAI38F,GACR49B,EAAI++D,IAAI1mF,GAER2nB,EAAI++D,IAAIC,MACRh/D,EAAI++D,IAAIE,IACRj/D,EAAI++D,IAAIG,GAAAA,IAERl/D,EAAI21D,UAAU,SAAUwJ,GAAAA,IACxBn/D,EAAI21D,UAAU,WAAYyJ,GAAAA,IAG1Bp/D,EAAInY,OAAOw3E,mBAAoB,EAE/Br/D,EAAIs/D,MAAM,QAAOlB,EAAA54F,OAAA,SAEVw6B,GAAG,yBAAAo+D,EAAAh4F,OAAA,GAAA43F,EAAA,KACX,gBA3EoBuB,GAAA,OAAApsE,EAAA1vB,MAAA,KAAA6C,UAAA,KC/SrB,IAAMk5F,IAAiBx1F,OAAOu3B,UAAUjpB,UAAY,MAAMukC,MAAM,KAAK,GAE/DxkC,IAAOonF,EAAAA,GAAAA,GAAW,CAEtB5mF,OAAQ,KACRE,eAAgB,KAChBC,SAAUA,GAAAA,EAAAA,UAGZA,GAAAA,EAAAA,YAAqBX,GAAKqnF,OAAQF,IAElC,IAAMG,GAAwB,CAC5Br0C,MAAO,CACL,0BACA,SACA,sBACA,WAIJrmD,EAAAA,EAAAA,GAAAC,IAAAA,MAAC,SAAAC,IAAA,IAAAy6F,EAAAC,EAAAC,EAAA19F,EAAA,OAAA8C,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAEoC,OAD/Bq6F,GAAe,EACbC,EAAU,CAACE,IAAkB16F,EAAAC,KAAA,EAAAD,EAAAE,KAAA,EAEJomD,GAAqBg0C,IAAsB,OAAlEG,EAAcz6F,EAAA4T,KACpB4mF,EAAQ92F,KAAK+2F,GAAez6F,EAAAE,KAAA,gBAAAF,EAAAC,KAAA,EAAAD,EAAA8T,GAAA9T,EAAA,SAE5B6gB,QAAQrR,MAAKxP,EAAA8T,IACbymF,GAAe,EAAI,QAEfx9F,GAAQ49F,EAAAA,EAAAA,IAAY,CACxBC,QAAS,CACP5nF,KAAM,CACJoM,QAAS,CACPpM,KAAM,kBAAMA,GAAKqnF,MAAM,IAG3BQ,UAAWC,EACXnkF,SAAUokF,EAEV16F,MAAO26F,GACPx3E,SAAUy3E,GACVrlE,MAAOslE,GACPnrE,IAAKorE,GACL34E,OAAQ44E,EAAAA,GACRtuD,cAAeuuD,GACfjuC,kBAAmBkuC,GACnBC,cAAeC,GACf7qC,MAAO8qC,GACP1gE,MAAO2gE,GACPC,SAAUC,GACVphD,YAAaqhD,GACbC,YAAaC,GACbzgD,QAAS0gD,GACTj/C,MAAOk/C,GACPv4B,WAAYw4B,GACZl5B,WAAYm5B,GACZv4B,cAAew4B,GACf10D,MAAO20D,GACPz4C,cAAe04C,IAEjB9B,QAAAA,EACA+B,QAAQ,IAGNhC,GACFx9F,EAAMgC,SAAS,mBAAoB,CAAEsY,WAAY,6BAA8B/L,MAAO,UAExFkxF,GAAgB,CAAEz/F,MAAAA,EAAOiW,KAAAA,KAAO,yBAAAhT,EAAAe,OAAA,GAAAjB,EAAA,iBAhDlCF,GAqDA+E,OAAOmwF,kBAAoB2H,CAAAA,SAAAA,cAC3B93F,OAAO41B,yBAA2BmiE,aAClC/3F,OAAOkwF,gCAA6B8H,C,00BC3GpC,IAkBal4E,EAAe,CAC1Bm4E,YAAa,EACbC,OAAQ,CAAC,EACTngF,WAAO7V,EACP4b,iBAAa5b,EACbgyF,uBAAmBhyF,EACnBs/D,SAAS,EACTF,uBAAuB,EACvBO,cAAc,EAEd/rD,oBAAgB5T,EAChB6T,sBAAkB7T,EAClB8T,2BAAuB9T,EACvBmU,qBAAiBnU,EACjBmT,gCAA4BnT,EAC5Bi2F,UAAU,EACVrxB,iBAAiB,EACjBC,uBAAuB,EACvBqxB,cAAe,GACfC,UAAU,EACVC,cAAc,EACdC,WAAW,EACXC,qBAAqB,EACrBnxB,WAAW,EACXoxB,0BAA0B,EAC1B9/B,yBAAyB,EACzBR,4BAA4B,EAC5BmY,kBAAkB,EAClBooB,UAAU,EACVhmE,gBAAiB,MACjBnf,gBAAiB,gBACjBwrB,uBAAwB,CACtBmB,SAAS,EACT7f,UAAU,EACV+f,OAAO,EACPG,SAAS,EACTE,OAAO,EACPrX,gBAAgB,EAChBuvE,eAAe,EACfhiD,SAAS,EACTiiD,aAAa,EACbxgD,OAAO,GAETxX,sBAAsB,EACtBi4D,UAAW,GACXz8D,UAAW,CAAC,EACZwkC,mBA9DqB5gE,OAAOu3B,UAAUjpB,UAAY,MAAMukC,MAAM,KAAK,GA+DnEimD,iBAAiB,EACjBp2D,iBAAiB,EACjB7qB,kBAAc3V,EACdwV,eAAWxV,EACX4V,yBAAqB5V,EACrB+S,4BAAwB/S,EACxBqV,qBAAiBrV,EACjBmV,uBAAmBnV,EAEnB2T,0BAAsB3T,EACtBoU,mBAAepU,EACfqU,qBAAiBrU,EACjBsU,kBAActU,EACduU,iBAAavU,EACbwU,mBAAexU,EACfyU,mBAAezU,EACf0U,0BAAsB1U,EACtB2U,uBAAmB3U,EACnB4U,oCAAgC5U,EAChC62F,mBAAmB,EACnBC,iBAAiB,EACjBC,eAAe,EACfj3B,sBAAsB,EACtBC,gBAAgB,EAChBi3B,wBAAyB,OACzBC,oBAAoB,EACpBC,mBAAoB,QACpBC,mBAAoB,QACpBC,kBAAmB,QACnBC,oBAAqB,EACrBr4B,qBAAqB,EACrB//D,eAAWe,EACXoT,eAAWpT,EACXqT,wBAAoBrT,EACpBsT,4BAAwBtT,EACxBuT,2BAAuBvT,EACvBwT,2BAAuBxT,EACvByT,yBAAqBzT,EACrB0T,0BAAsB1T,EACtB+T,mBAAe/T,EACfgU,uBAAmBhU,EACnBkU,mBAAelU,EACf8V,sBAAkB9V,EAClB+V,wBAAoB/V,EACpBgW,yBAAqBhW,EACrBiW,8BAA0BjW,EAC1BkW,oCAAgClW,EAChCmW,mCAA+BnW,EAC/BoW,sBAAkBpW,EAClBqW,wBAAoBrW,GAITyY,EAA4B/iB,OAAOkT,QAAQgV,GACrDhnB,QAAO,SAAAqB,GAAA,IAAAa,GAAAqC,EAAAA,EAAAA,GAAAlD,EAAA,GAAY,OAAPa,EAAA,QAAuBkH,IAAhBlH,EAAA,EAAyB,IAC5CnE,KAAI,SAAAyG,GAAA,IAAAC,GAAAF,EAAAA,EAAAA,GAAAC,EAAA,GAAE8K,EAAG7K,EAAA,GAAO,OAAAA,EAAA,GAAM6K,CAAG,IA0G5B,QAxGe,CACb/N,MAAKxB,EAAA,GAAOinB,GACZrF,QAAS,CACP++E,cAAa,SAAEn/F,EAAOogB,EAAS5I,EAAWsB,GACxC,IAAQnB,EAAaH,EAAbG,SACR,OAAAnZ,EAAAA,EAAA,GACKinB,GACAloB,OAAO6F,YACRkd,EAA0B9jB,KAAI,SAAAuR,GAAG,MAAI,CAACA,EAAK4J,EAAS5J,GAAK,KAG/D,EACAkL,aAAY,SAAEjZ,EAAOogB,EAAS5I,EAAWsB,GAEvC,OAAAta,EAAAA,EAAA,GAD0Bsa,EAAlBqmF,eAIH5hG,OAAO6F,YAAY7F,OAAOkT,QAAQzQ,GAAOvB,QAAO,SAAA4E,GAAA,IAAAC,GAAAN,EAAAA,EAAAA,GAAAK,EAAA,GAAM,OAAHC,EAAA,QAAeuE,IAAZvE,EAAA,EAAqB,KAElF,GAEF8S,UAAW,CACTgpF,UAAS,SAAEp/F,EAAK6X,GAAmB,IAAfvY,EAAIuY,EAAJvY,KAAMgF,EAAKuT,EAALvT,MACxBqoC,IAAI3sC,EAAOV,EAAMgF,EACnB,EACAmlE,aAAY,SAAEzpE,EAAK8X,GAAyB,IAArBxW,EAAIwW,EAAJxW,KAAM+9F,EAAKvnF,EAALunF,MAAOt6F,EAAI+S,EAAJ/S,KAC5BrH,EAAO4H,KAAKtF,MAAMwjB,OAAOue,UAAUzgC,GACrC+9F,GAASt6F,EACX/E,EAAM+hC,UAAUzgC,GAAQ,CAAE+9F,MAAOA,GAAS3hG,EAAK2hG,MAAOt6F,KAAMA,GAAQrH,EAAKqH,aAElE/E,EAAM+hC,UAAUzgC,EAE3B,GAEFgW,QAAS,CACPgoF,aAAY,SAAAtnF,EAAgBta,GAAM,IAIFqG,EAJhBhE,EAAQiY,EAARjY,SACRs0C,EAAY,IAAItsC,IAAIxK,OAAOD,KAAKmoB,IAChC85E,EAAc,IAAIx3F,IAAIxK,OAAOD,KAAKI,IAClC8hG,EAAe,IAAIz3F,IAAK9D,E,25BAAAC,CACXq7F,GAAW,IAA9B,IAAAt7F,EAAAE,MAAAJ,EAAAE,EAAAG,KAAAC,MAAgC,KAArB+H,EAAIrI,EAAAO,MACT+vC,EAAUvrC,IAAIsD,IAChBozF,EAAa71E,IAAIvd,EAErB,CAAC,OAAA5H,GAAAP,EAAAjH,EAAAwH,EAAA,SAAAP,EAAAQ,GAAA,CAED+6F,EAAa5+E,SACX,SAAAthB,GAAI,OAAIS,EAAS,YAAa,CAAET,KAAAA,EAAMgF,MAAO5G,EAAK4B,IAAQ,GAE9D,EACAmqE,aAAY,SAAAvxD,EAAAC,GAA+C,IAA3CP,EAAMM,EAANN,OAAgBM,EAARnY,SACtB6X,EAAO,eAAgB,CAAEtW,KADe6W,EAAJ7W,KACL+9F,MADgBlnF,EAALknF,MACJt6F,KADeoT,EAAJpT,MAEnD,EACAq6F,UAAS,SAAAhnF,EAAAO,GAAgD,IAA5Cf,EAAMQ,EAANR,OAAQ7X,EAAQqY,EAARrY,SAAUC,EAAKoY,EAALpY,MAAWV,EAAIqZ,EAAJrZ,KAAMgF,EAAKqU,EAALrU,MAK9C,GAJmB,IAAIyD,IAAI,CACzB,oBAGae,IAAIxJ,GAEV,oBADCA,GAIJS,EAFeuE,EAAQ,qBAAuB,uBAE7BvH,MAAK,WACpB6a,EAAO,YAAa,CAAEtY,KAAM,kBAAmBgF,MAAAA,GACjD,IAAE,OAAO,SAACtH,GACR6kB,QAAQrR,MAAM,4CAA6CxT,GAC3D+C,EAAS,uBACTA,EAAS,YAAa,CAAET,KAAM,kBAAmBgF,OAAO,GAC1D,SAKJ,OADAsT,EAAO,YAAa,CAAEtY,KAAAA,EAAMgF,MAAAA,IACpBhF,GACN,IAAK,SACHmgG,EAAAA,EAAAA,IAAUn7F,GACV,MACF,IAAK,qBACL,IAAK,qBACL,IAAK,oBACL,IAAK,uBACH21F,EAAAA,EAAAA,IAAYj6F,GACZ,MACF,IAAK,cACL,IAAK,qBACH8jB,EAAAA,EAAAA,IAAWxf,GACX,MACF,IAAK,oBACHqQ,EAAAA,EAAAA,YAAqBrP,KAAK8a,QAAQpM,KAAM1P,GACxCvE,EAAS,uBAAwBuE,GACjCo7F,EAAAA,EAAAA,IApNyB,eAsNvBzlB,EAAAA,EAAAA,6BAA2C31E,IAE7C,MACF,IAAK,kBACHvE,EAAS,sBAAkB8H,GAInC,G,yXClOG,SAAS83F,EAAiBz5C,EAAY50C,EAAM0sE,EAASvlD,GAC1DnzB,KAAKhG,KAAO,kBACZgG,KAAK4gD,WAAaA,EAClB5gD,KAAKisB,QAAU20B,EAAa,OAASxgB,MAAQA,KAAKC,UAAYD,KAAKC,UAAUr0B,GAAQA,GACrFhM,KAAKkL,MAAQc,EACbhM,KAAK04E,QAAUA,EACf14E,KAAKmzB,SAAWA,EAEZx7B,MAAM2iG,mBACR3iG,MAAM2iG,kBAAkBt6F,KAE5B,CACAq6F,EAAgBx0F,UAAY5N,OAAOsiG,OAAO5iG,MAAMkO,WAChDw0F,EAAgBx0F,UAAU2H,YAAc6sF,EAEjC,IAAMG,EAAiB,SAAAC,IAAAC,EAAAA,EAAAA,GAAAF,EAAAC,GAAA,I,IAAAE,G,EAAAH,E,gaAC5B,SAAAA,EAAatvF,GAAO,IAAAxJ,EChBU0xB,GDgBV4+B,EAAAA,EAAAA,GAAA,KAAAwoC,GAClB94F,EAAAi5F,EAAA50F,KAAA,MACIpO,MAAM2iG,mBACR3iG,MAAM2iG,mBAAiBM,EAAAA,EAAAA,GAAAl5F,IAGzB,IAUE,GARqB,iBAAVwJ,IACTA,EAAQk1B,KAAK6X,MAAM/sC,IAETwa,eAAe,WACvBxa,EAAQk1B,KAAK6X,MAAM/sC,EAAMA,QAIR,YAAjBwtB,EAAAA,EAAAA,GAAOxtB,GAAoB,CAC7B,IAAM2vF,EAAgBz6D,KAAK6X,MAAM/sC,EAAMA,OAMnC2vF,EAAcC,QAChBD,EAAczjE,SAAWyjE,EAAcC,aAChCD,EAAcC,OAGvBp5F,EAAKuqB,SC5CmBmH,ED4CMynE,EC3C7B5iG,OAAOkT,QAAQioB,GAAQte,QAAO,SAACimF,EAAIvgG,GAAe,IAAAa,GAAAqC,EAAAA,EAAAA,GAAAlD,EAAA,GAAZd,EAAC2B,EAAA,GACtC4wB,EAD2C5wB,EAAA,GAC7ByZ,QAAO,SAACC,EAAKkX,GAE/B,OAAOlX,EAAM,CADDimF,IAAWthG,EAAEyD,QAAQ,KAAM,MACpB8uB,GAAS5lB,KAAK,KAAO,IAC1C,GAAG,IACH,MAAO,GAAPhN,QAAAU,EAAAA,EAAAA,GAAWghG,GAAI,CAAE9uE,GACnB,GAAG,IDsCC,MACEvqB,EAAKuqB,QAAU/gB,CAKnB,CAHE,MAAOxT,GAEPgK,EAAKuqB,QAAU/gB,CACjB,CAAC,OAAAxJ,CACH,CAAC,OAAAywD,EAAAA,EAAAA,GAAAqoC,EAAA,CArC2B,EAqC3BS,EAAAA,EAAAA,GArCoCtjG,Q,2mBEZvC,IAOMujG,EAAc,uBACdC,EAAe,+BACfC,EAAuB,SAACC,EAAY7hE,GAAK,kCAAAngC,OAAiCgiG,EAAU,sBAAAhiG,OAAqBmgC,EAAK,EAmB9G8hE,EAAoC,SAAAxjG,GAAE,+BAAAuB,OAA6BvB,EAAE,aACrEyjG,EAAwB,SAAAzjG,GAAE,0BAAAuB,OAAwBvB,EAAE,eACpD0jG,EAA0B,SAAA1jG,GAAE,0BAAAuB,OAAwBvB,EAAE,iBACtD2jG,EAAuB,SAAA3jG,GAAE,0BAAAuB,OAAwBvB,EAAE,YACnD4jG,EAAyB,SAAA5jG,GAAE,0BAAAuB,OAAwBvB,EAAE,cACrD6jG,EAAsB,SAAA7jG,GAAE,0BAAAuB,OAAwBvB,EAAE,EASlD8jG,EAA2B,2BAE3BC,EAAsB,SAAA/jG,GAAE,0BAAAuB,OAAwBvB,EAAE,EAOlDgkG,EAA6B,SAAAhkG,GAAE,0BAAAuB,OAAwBvB,EAAE,cAEzDikG,EAAoB,SAAAjkG,GAAE,uBAAAuB,OAAqBvB,EAAE,EAC7CkkG,EAA6B,SAAAlkG,GAAE,gCAAAuB,OAA8BvB,EAAE,EAC/DmkG,EAA6B,SAAAnkG,GAAE,uBAAAuB,OAAqBvB,EAAE,cACtDokG,EAA4B,SAAAr/F,GAAG,+BAAAxD,OAA6BwD,EAAG,EAM/Ds/F,EAAyB,SAAArkG,GAAE,0BAAAuB,OAAwBvB,EAAE,UACrDskG,GAA2B,SAAAtkG,GAAE,0BAAAuB,OAAwBvB,EAAE,YAEvDukG,GAA0B,SAAAvkG,GAAE,kCAAAuB,OAAgCvB,EAAE,eAC9DwkG,GAA4B,SAAAxkG,GAAE,kCAAAuB,OAAgCvB,EAAE,iBAChEykG,GAAyB,SAAAzkG,GAAE,0BAAAuB,OAAwBvB,EAAE,UACrD0kG,GAA+B,SAAA1kG,GAAE,0BAAAuB,OAAwBvB,EAAE,cAC3D2kG,GAAiC,SAAA3kG,GAAE,0BAAAuB,OAAwBvB,EAAE,gBAE7D4kG,GAA4B,gBAG5BC,GAAkC,SAAA7kG,GAAE,0BAAAuB,OAAwBvB,EAAE,mBAC9D8kG,GAAkC,SAAA9kG,GAAE,0BAAAuB,OAAwBvB,EAAE,kBAC9D+kG,GAA8B,sCAE9BC,GAA0B,SAAAhlG,GAAE,0BAAAuB,OAAwBvB,EAAE,SACtDilG,GAA4B,SAAAjlG,GAAE,0BAAAuB,OAAwBvB,EAAE,WACxDklG,GAA6B,SAAAllG,GAAE,0BAAAuB,OAAwBvB,EAAE,UACzDmlG,GAA+B,SAAAnlG,GAAE,0BAAAuB,OAAwBvB,EAAE,YAG3DolG,GAA6B,wBAK7BC,GAAqC,SAAArlG,GAAE,+BAAAuB,OAA6BvB,EAAE,aACtEslG,GAA8B,SAAAtlG,GAAE,kCAAAuB,OAAgCvB,EAAE,eAClEulG,GAA0B,SAACvlG,EAAIS,GAAK,kCAAAc,OAAiCvB,EAAE,eAAAuB,OAAcd,EAAK,EAC1F+kG,GAA4B,SAACxlG,EAAIS,GAAK,kCAAAc,OAAiCvB,EAAE,eAAAuB,OAAcd,EAAK,EAG5FglG,GAA4B,SAAAzlG,GAAE,+BAAAuB,OAA6BvB,EAAE,cAC7D0lG,GAAwB,SAAA1lG,GAAE,+BAAAuB,OAA6BvB,EAAE,UACzD2lG,GAAkC,SAAC93D,EAAQ2V,GAAS,+BAAAjiD,OAA8BssC,EAAM,cAAAtsC,OAAaiiD,EAAS,EAE9GoiD,GAAqB,0BAGrBC,GAAgC,SAAA7lG,GAAE,6CAAAuB,OAA2CvB,EAAE,EAC/E8lG,GAAkC,SAAA9lG,GAAE,6CAAAuB,OAA2CvB,EAAE,EAEjF+lG,GAA2B,4BAK3BC,GAAWz9F,OAAOkK,MAElBA,GAAQ,SAAChL,EAAKm5E,GAElB,IACMqlB,EADU,GACUx+F,EAE1B,OAJAm5E,EAAUA,GAAW,CAAC,GAGd35D,YAAc,cACf++E,GAASC,EAASrlB,EAC3B,EAEMslB,GAAkB,SAAHxjG,GAAoE,IAA9D47B,EAAM57B,EAAN47B,OAAQ72B,EAAG/E,EAAH+E,IAAK2iC,EAAM1nC,EAAN0nC,OAAQ8Q,EAAOx4C,EAAPw4C,QAASj0B,EAAWvkB,EAAXukB,YAAWk/E,EAAAzjG,EAAEw9B,QAC9D0gD,EAAU,CACdtiD,OAAAA,EACA4B,QAAO9+B,EAAA,CACLglG,OAAQ,mBACR,eAAgB,yBALuD,IAAAD,EAAG,CAAC,EAACA,IAuBhF,OAdI/7D,IACF3iC,GAAO,IAAMtH,OAAOkT,QAAQ+2B,GACzBhrC,KAAI,SAAAmE,GAAA,IAAAsC,GAAAD,EAAAA,EAAAA,GAAArC,EAAA,GAAEoN,EAAG9K,EAAA,GAAEqB,EAAKrB,EAAA,UAAMs5B,mBAAmBxuB,GAAO,IAAMwuB,mBAAmBj4B,EAAM,IAC/EqH,KAAK,MAEN2sC,IACF0lC,EAAQ1sE,KAAOo0B,KAAKC,UAAU2S,IAE5Bj0B,IACF25D,EAAQ1gD,QAAO9+B,EAAAA,EAAA,GACVw/E,EAAQ1gD,SACRmmE,GAAYp/E,KAGZxU,GAAMhL,EAAKm5E,GACfjhF,MAAK,SAAC07B,GACL,OAAO,IAAI57B,SAAQ,SAACC,EAASyD,GAAM,OAAKk4B,EAAS9V,OAC9C5lB,MAAK,SAAC4lB,GACL,OAAK8V,EAAS/V,GAGP5lB,EAAQ6lB,GAFNpiB,EAAO,IAAIo/F,EAAgBlnE,EAAS3R,OAAQnE,EAAM,CAAE9d,IAAAA,EAAKm5E,QAAAA,GAAWvlD,GAG/E,IAAE,OACK,SAACjoB,GACN,OAAOjQ,EAAO,IAAIo/F,EAAgBlnE,EAAS3R,OAAQtW,EAAO,CAAE3L,IAAAA,EAAKm5E,QAAAA,GAAWvlD,GAC9E,GAAE,GAEN,GACJ,EAyFMgrE,GAAc,SAACx7D,GACnB,OAAIA,EACK,CAAE1K,cAAe,UAAF5+B,OAAYspC,IAE3B,CAAE,CAEb,EAmGMzF,GAAY,SAAH9U,GAA4B,IAAtBtwB,EAAEswB,EAAFtwB,GAAIinB,EAAWqJ,EAAXrJ,YACjBxf,EAAM,GAAHlG,OAhTe,mBAgTQ,KAAAA,OAAIvB,GACpC,OAAOkmG,GAAgB,CAAEz+F,IAAAA,EAAKwf,YAAAA,IAC3BtnB,MAAK,SAACW,GAAI,OAAKgmG,EAAAA,EAAAA,IAAUhmG,EAAK,GACnC,EAmCMsmC,GAAe,SAAH9V,GAAwD,IAAlD9wB,EAAE8wB,EAAF9wB,GAAI0nB,EAAKoJ,EAALpJ,MAAOk6D,EAAO9wD,EAAP8wD,QAAO2kB,EAAAz1E,EAAEsH,MAAAA,OAAK,IAAAmuE,EAAG,GAAEA,EAAEt/E,EAAW6J,EAAX7J,YAClDxf,EAnWyB,SAAAzH,GAAE,0BAAAuB,OAAwBvB,EAAE,cAmW/CwmG,CAAuBxmG,GAC3B2c,EAAO,CACX+K,GAAS,UAAJnmB,OAAcmmB,GACnBk6D,GAAW,YAAJrgF,OAAgBqgF,GACvBxpD,GAAS,SAAJ72B,OAAa62B,GAClB,2BACA/2B,QAAO,SAAA0O,GAAC,OAAIA,CAAC,IAAExB,KAAK,KAGtB,OAAOkE,GADPhL,GAAakV,EAAO,IAAMA,EAAO,GACf,CAAEujB,QAASmmE,GAAYp/E,KACtCtnB,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAACW,GAAI,OAAKA,EAAKlB,IAAIknG,EAAAA,GAAU,GACvC,EA++BMG,GAAwB,SAAHC,GAA8C,IAAxC7+F,EAAO6+F,EAAP7+F,QAAS0hD,EAAQm9C,EAARn9C,SAAUC,EAAMk9C,EAANl9C,OAAQC,EAAMi9C,EAANj9C,OACpDvO,EAAU,CAAErzC,QAAAA,GAclB,YAZwB,IAAb0hD,IACTrO,EAAQ43C,UAAYvpC,EAAW,IAAInrB,KAAKmrB,GAAUlrB,cAAgB,WAG9C,IAAXmrB,IACTtO,EAAQ63C,QAAUvpC,EAAS,IAAIprB,KAAKorB,GAAQnrB,cAAgB,WAGxC,IAAXorB,IACTvO,EAAQ+3C,QAAUxpC,GAGbvO,CACT,EA4Bane,GAAuB,SAAH4pE,GAA2C,IAArC1/E,EAAW0/E,EAAX1/E,YAAa+V,EAAM2pE,EAAN3pE,OAAM4pE,EAAAD,EAAEhqF,KAAAA,OAAI,IAAAiqF,EAAG,CAAC,EAACA,EACnE,OAAOzmG,OAAOkT,QAAOjS,EAAAA,EAAC,CAAC,EACjB6lB,EACA,CAAEojB,aAAcpjB,GAChB,CAAC,GAAC,IAEN+V,OAAAA,GACGrgB,IACFK,QAAO,SAACC,EAAG4pF,GAAiB,IAAAC,GAAAlhG,EAAAA,EAAAA,GAAAihG,EAAA,GAAdl2F,EAAGm2F,EAAA,GAAE//B,EAAG+/B,EAAA,GACvB,OAAO7pF,EAAM,GAAH1b,OAAMoP,EAAG,KAAApP,OAAIwlE,EAAG,IAC5B,GAAGggC,qBACL,EAEMC,GAA4B,IAAIr8F,IAAI,CACxC,SACA,eACA,SACA,kBACA,kBAGIs8F,GAA2B,IAAIt8F,IAAI,CACvC,wBAKWsyB,GAAc,SAAHiqE,GAIlB,IAHJz/F,EAAGy/F,EAAHz/F,IAAG0/F,EAAAD,EACHE,aAAAA,OAAY,IAAAD,EAAGE,GAAaF,EAAAG,EAAAJ,EAC5BlnG,GAAAA,OAAE,IAAAsnG,EAAG,UAASA,EAERC,EAAc,IAAI1vF,YAClBq0B,EAAS,IAAImB,UAAU5lC,GAC7B,IAAKykC,EAAQ,MAAM,IAAIrsC,MAAM,2BAAD0B,OAA4BvB,IACxD,IAAMwnG,EAAQ,SAACC,EAAUC,GAAkC,IAAvBphG,EAASzB,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,SAAAtC,GAAC,OAAIA,CAAC,EACpDklG,EAASl0F,iBAAiBm0F,GAAW,SAACC,GACpCJ,EAAYK,cAAc,IAAIC,YAC5BH,EACA,CAAE95D,OAAQtnC,EAAUqhG,KAExB,GACF,EAgCA,OA/BAz7D,EAAO34B,iBAAiB,QAAQ,SAACu0F,GAC/BrjF,QAAQwpB,MAAM,QAAD1sC,OAASvB,EAAE,sBAAsB8nG,EAChD,IACA57D,EAAO34B,iBAAiB,SAAS,SAACu0F,GAChCrjF,QAAQwpB,MAAM,QAAD1sC,OAASvB,EAAE,oBAAoB8nG,EAC9C,IACA57D,EAAO34B,iBAAiB,SAAS,SAACu0F,GAChCrjF,QAAQwpB,MAAM,QAAD1sC,OACHvB,EAAE,oCAAAuB,OAAmCumG,EAAQhoG,MACrDgoG,EAEJ,IAWAN,EAAMt7D,EAAQ,QACds7D,EAAMt7D,EAAQ,SACds7D,EAAMt7D,EAAQ,UAAWk7D,GACzBI,EAAMt7D,EAAQ,SAGdq7D,EAAYp5D,MAAQ,WAAQjC,EAAOiC,MAAM,IAAM,uBAAwB,EACvEo5D,EAAY/5D,SAAW,kBAAMtB,EAAO67D,UAAU,EAEvCR,CACT,EAEaF,GAAgB,SAACS,GAC5B,IAAQxnG,EAASwnG,EAATxnG,KACR,GAAKA,EAAL,CACA,IAAM0nG,EAAc1/D,KAAK6X,MAAM7/C,GACvB6N,EAAmB65F,EAAnB75F,MAAO+sC,EAAY8sD,EAAZ9sD,QACf,IAAI8rD,GAA0Bt7F,IAAIyC,KAAU84F,GAAyBv7F,IAAIyC,GAiBvE,OADAsW,QAAQC,KAAK,gBAAiBojF,GACvB,KAfP,GAAc,WAAV35F,EACF,MAAO,CAAEA,MAAAA,EAAOnO,GAAIk7C,GAEtB,IAAM56C,EAAO46C,EAAU5S,KAAK6X,MAAMjF,GAAW,KAC7C,MAAc,WAAV/sC,GAEiB,kBAAVA,EADF,CAAEA,MAAAA,EAAOub,QAAQu+E,EAAAA,EAAAA,IAAY3nG,IAGjB,iBAAV6N,EACF,CAAEA,MAAAA,EAAOuc,cAAcw9E,EAAAA,EAAAA,IAAkB5nG,IAC7B,wBAAV6N,EACF,CAAEA,MAAAA,EAAO2/B,YAAYgY,EAAAA,EAAAA,IAAUxlD,SADjC,CAfQ,CAsBnB,EAEamtC,GAAqBttC,OAAOgoG,OAAO,CAC9CC,OAAQ,EACR96D,OAAQ,EACR+6D,MAAO,EACPC,SAAU,EACVC,SAAU,EACVC,iBAAkB,IAgUpB,SAzHmB,CACjBrrE,kBAx+BwB,SAACj5B,GACzB,OAAOuO,GApuBkB,sCAouBQ,CAC/BytB,QAASmmE,GAAYniG,KAEpBvE,MAAK,SAAC07B,GACL,OAAIA,EAAS/V,GACJ+V,EAAS9V,OAET,CACLnS,MAAOioB,EAGb,IACC17B,MAAK,SAACW,GAAI,OAAKA,EAAK8S,MAAQ9S,GAAOgmG,EAAAA,EAAAA,IAAUhmG,EAAK,GACvD,EA29BEi8B,cA7kCoB,SAAHzH,GAWb,IAVJ1K,EAAQ0K,EAAR1K,SACAnD,EAAW6N,EAAX7N,YAAWwhF,EAAA3zE,EACX+F,MAAAA,OAAK,IAAA4tE,GAAQA,EAAAC,EAAA5zE,EACb8F,MAAAA,OAAK,IAAA8tE,GAAQA,EAAAC,EAAA7zE,EACb3N,OAAAA,OAAM,IAAAwhF,GAAQA,EAAAC,EAAA9zE,EACdgE,OAAAA,OAAM,IAAA8vE,GAAQA,EAAAC,EAAA/zE,EACd/vB,IAAAA,OAAG,IAAA8jG,GAAQA,EAAAC,EAAAh0E,EACXqG,UAAAA,OAAS,IAAA2tE,GAAQA,EAAAC,EAAAj0E,EACjBmG,gBAAAA,OAAe,IAAA8tE,EAAG,MAAKA,EAAAC,EAAAl0E,EACvBm0E,aAAAA,OAAY,IAAAD,EAAG,GAAEA,EAeXE,EAA+B,kBAAb9+E,EAClBggB,EAAS,GAEX3iC,EAhBiB,CACnBohB,OAAQi7E,EACRh8E,QA1nBoC,yBA2nBpCkB,IA7nB0C,2BA8nB1CP,cA5oBoC,wBA6oBpCM,kBAAmB+6E,EACnB5/F,KAAM8/F,EACNl7E,MAAOk7E,EACPhlG,KAAMklG,EACNx7E,UAlpByC,qBAmpBzC3jB,IAAKq/F,EACLn7E,UArnBmC,qBA0nBdmB,GAEN,SAAbA,GAAoC,UAAbA,IACzB3iB,EAAMA,EAAI0f,IAGK,SAAbiD,IACF3iB,EAAMA,EAAIqxB,IAGR+B,GACFuP,EAAO9iC,KAAK,CAAC,WAAYuzB,IAEvBD,GACFwP,EAAO9iC,KAAK,CAAC,SAAUszB,IAErB71B,IACF0C,EAAMA,EAAI1C,IAEK,UAAbqlB,GACFggB,EAAO9iC,KAAK,CAAC,aAAc,IAEZ,WAAb8iB,GACFggB,EAAO9iC,KAAK,CAAC,SAAS,IAEP,WAAb8iB,GAAsC,sBAAbA,GAC3BggB,EAAO9iC,KAAK,CAAC,cAAc,IAEZ,cAAb8iB,GAAyC,cAAbA,GAC9BggB,EAAO9iC,KAAK,CAAC,aAAc6zB,IAEL,QAApBF,GACFmP,EAAO9iC,KAAK,CAAC,mBAAoB2zB,IAE/BguE,EAAatnG,OAAS,GACxBsnG,EAAazlF,SAAQ,SAAA7b,GACnByiC,EAAO9iC,KAAK,CAAC,kBAAmBK,GAClC,IAGFyiC,EAAO9iC,KAAK,CAAC,QAAS,KAEtB,IAAM6hG,EAAcxjE,IAAIyE,GAAQ,SAACg/D,GAAK,SAAA7nG,OAAQ6nG,EAAM,GAAE,KAAA7nG,OAAI6nG,EAAM,GAAE,IAAI76F,KAAK,KAG3E,OAFA9G,GAAO,IAAJlG,OAAQ4nG,GAEJ12F,GAAMhL,EAAK,CAAEy4B,QAASmmE,GAAYp/E,KACtCtnB,KAAI,eAAAs1B,GAAAzxB,EAAAA,EAAAA,GAAAC,IAAAA,MAAC,SAAAqhB,EAAOuW,GAAQ,IAAAniB,EAAA5Y,EAAA4qB,EAAA,OAAAznB,IAAAA,MAAA,SAAAshB,GAAA,cAAAA,EAAAlhB,KAAAkhB,EAAAjhB,MAAA,OACQ,OAArBoV,EAAUmiB,EAAS/V,GAAEP,EAAAjhB,KAAA,EAERu3B,EAAS9V,OAAM,OAAxB,GAAJjlB,EAAIykB,EAAAvN,MAEN0B,GAAY5Y,EAAKg7B,OAAM,CAAAvW,EAAAjhB,KAAA,QAGvB,OAFIonB,GAAam+E,EAAAA,EAAAA,IAA0BhuE,EAAS6E,QAAQ6P,IAAI,QAAS,CACzEu5D,QAAsB,cAAbl/E,GAAyC,kBAAbA,IACrCrF,EAAAhhB,OAAA,SAEK,CAAEzD,KAAMA,EAAKlB,IAAI8pG,EAAkBhB,EAAAA,GAAoBD,EAAAA,IAAc/8E,WAAAA,IAAY,OAInD,OAFrC5qB,EAAKg7B,SAALh7B,EAAKg7B,OAAW,IAChBh7B,EAAKopB,OAAS2R,EAAS3R,OACvBppB,EAAKi7B,WAAaF,EAASE,WAAUxW,EAAAhhB,OAAA,SAC9BzD,GAAI,yBAAAykB,EAAApgB,OAAA,GAAAmgB,EAAA,KAEd,gBAAAizE,GAAA,OAAA9iE,EAAAjzB,MAAA,KAAA6C,UAAA,EAjBI,GAkBT,EAk/BE8vB,oBAh/B0B,SAAHS,GAA4B,IAAtBp1B,EAAEo1B,EAAFp1B,GAAIinB,EAAWmO,EAAXnO,YAC3Bxf,EAAMu8F,EAA2BhkG,GAAM,eAC7C,OAAOkmG,GAAgB,CAAEz+F,IAAAA,EAAKwf,YAAAA,IAC3BtnB,MAAK,SAACW,GAAI,OAAKA,EAAKlB,IAAI6oG,EAAAA,GAAY,GACzC,EA6+BE13B,kBA3tCwB,SAAHj9C,GAA4B,IAAtBtzB,EAAEszB,EAAFtzB,GAAIinB,EAAWqM,EAAXrM,YACzBsiF,EA/d4B,SAAAvpG,GAAE,0BAAAuB,OAAwBvB,EAAE,YA+d3CwpG,CAA4BxpG,GAC/C,OAAOyS,GAAM82F,EAAY,CAAErpE,QAASmmE,GAAYp/E,KAC7CtnB,MAAK,SAACW,GACL,GAAIA,EAAKglB,GACP,OAAOhlB,EAET,MAAM,IAAIT,MAAM,0BAA2BS,EAC7C,IACCX,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAAA4zB,GAAA,IAAG6gD,EAAS7gD,EAAT6gD,UAAWC,EAAW9gD,EAAX8gD,YAAW,MAAQ,CACrCD,UAAWA,EAAUh1E,IAAI6oG,EAAAA,IACzB5zB,YAAaA,EAAYj1E,IAAI6oG,EAAAA,IAC9B,GACL,EA8sCEx0E,YA5sCkB,SAAHD,GAA4B,IAAtBxzB,EAAEwzB,EAAFxzB,GAAIinB,EAAWuM,EAAXvM,YACnBxf,EAAMs8F,EAAoB/jG,GAChC,OAAOyS,GAAMhL,EAAK,CAAEy4B,QAASmmE,GAAYp/E,KACtCtnB,MAAK,SAACW,GACL,GAAIA,EAAKglB,GACP,OAAOhlB,EAET,MAAM,IAAIT,MAAM,0BAA2BS,EAC7C,IACCX,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAACW,GAAI,OAAK2nG,EAAAA,EAAAA,IAAY3nG,EAAK,GACrC,EAksCEuzB,kBAhsCwB,SAAHH,GAA4B,IAAtB1zB,EAAE0zB,EAAF1zB,GAAIinB,EAAWyM,EAAXzM,YACzBxf,EA3f2B,SAAAzH,GAAE,0BAAAuB,OAAwBvB,EAAE,WA2fjDypG,CAA2BzpG,GACvC,OAAOyS,GAAMhL,EAAK,CAAEy4B,QAASmmE,GAAYp/E,KACtCtnB,MAAK,SAACW,GACL,GAAIA,EAAKglB,GACP,OAAOhlB,EAET,MAAM,IAAIT,MAAM,wBAAyBS,EAC3C,IACCX,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAACW,GAAI,OAAKopG,EAAAA,EAAAA,IAAYppG,EAAK,GACrC,EAsrCEyzB,mBAprCyB,SAAHD,GAAgC,IAtgBpB9zB,EAsgBN0pB,EAAMoK,EAANpK,OAAQzC,EAAW6M,EAAX7M,YAC9Bxf,GAvgB4BzH,EAugBM0pB,EAAO1pB,GAvgBX,oBAAAuB,OAAwBvB,EAAE,aAwgB9D,OAAOkmG,GAAgB,CAAEz+F,IAAAA,EAAKwf,YAAAA,IAC3BtnB,MAAK,SAACW,GAEL,OADAA,EAAKgN,UACEhN,EAAKlB,KAAI,SAACyM,GAEf,OADAA,EAAK89F,eAAiBjgF,GACfu+E,EAAAA,EAAAA,IAAYp8F,EACrB,GACF,GACJ,EA2qCE+6B,aAAAA,GACAgjE,cAt1CoB,SAAH34E,GAA4B,IAAtBjxB,EAAEixB,EAAFjxB,GAAIinB,EAAWgK,EAAXhK,YAE3B,OAAO,IAAIxnB,QAAO,eAAA2xB,GAAA5tB,EAAAA,EAAAA,GAAAC,IAAAA,MAAC,SAAAC,EAAOhE,EAASyD,GAAM,IAAA2kB,EAAA+hF,EAAAniF,EAAAzjB,EAAA,OAAAR,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAAAF,EAAAC,KAAA,EAEjCikB,EAAU,GACV+hF,GAAO,EAAI,WACRA,EAAM,CAAFjmG,EAAAE,KAAA,SACsD,OAAzD4jB,EAAQI,EAAQnmB,OAAS,EAAI0oB,IAAKvC,GAAS9nB,QAAKyK,EAAS7G,EAAAE,KAAA,EAC3C8iC,GAAa,CAAE5mC,GAAAA,EAAI0nB,MAAAA,EAAOT,YAAAA,IAAc,OAAtDhjB,EAAKL,EAAA4T,KACXsQ,EAAU0a,IAAO1a,EAAS7jB,GACL,IAAjBA,EAAMtC,SACRkoG,GAAO,GACRjmG,EAAAE,KAAA,gBAEHpE,EAAQooB,GAAQlkB,EAAAE,KAAA,iBAAAF,EAAAC,KAAA,GAAAD,EAAA8T,GAAA9T,EAAA,SAEhBT,EAAMS,EAAA8T,IAAK,yBAAA9T,EAAAe,OAAA,GAAAjB,EAAA,mBAEd,gBAAAkB,EAAAgT,GAAA,OAAAwZ,EAAApvB,MAAA,KAAA6C,UAAA,EAhBiB,GAiBpB,EAo0CEgiC,eAl0CqB,SAAHvV,GAAwD,IAAlDtxB,EAAEsxB,EAAFtxB,GAAI0nB,EAAK4J,EAAL5J,MAAOk6D,EAAOtwD,EAAPswD,QAAOkoB,EAAAx4E,EAAE8G,MAAAA,OAAK,IAAA0xE,EAAG,GAAEA,EAAE7iF,EAAWqK,EAAXrK,YACpDxf,EAtYyB,SAAAzH,GAAE,0BAAAuB,OAAwBvB,EAAE,cAsY/C+pG,CAAuB/pG,GAC3B2c,EAAO,CACX+K,GAAS,UAAJnmB,OAAcmmB,GACnBk6D,GAAW,YAAJrgF,OAAgBqgF,GACvBxpD,GAAS,SAAJ72B,OAAa62B,GAClB,2BACA/2B,QAAO,SAAA0O,GAAC,OAAIA,CAAC,IAAExB,KAAK,KAGtB,OAAOkE,GADPhL,GAAOkV,EAAO,IAAMA,EAAO,GACT,CAAEujB,QAASmmE,GAAYp/E,KACtCtnB,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAACW,GAAI,OAAKA,EAAKlB,IAAIknG,EAAAA,GAAU,GACvC,EAszCElgE,WA/+CiB,SAAH1rB,GAAwC,IAAlC1a,EAAE0a,EAAF1a,GAAIinB,EAAWvM,EAAXuM,YAAgB25D,GAAOjzE,EAAAA,EAAAA,GAAA+M,EAAAm7B,GACzCpuC,EA7NoB,SAAAzH,GAAE,0BAAAuB,OAAwBvB,EAAE,WA6N1CgqG,CAAoBhqG,GAC1Bg+B,EAAO,CAAC,EAEd,YADwBvzB,IAApBm2E,EAAQv6C,UAAyBrI,EAAKqI,QAAUu6C,EAAQv6C,SACrD5zB,GAAMhL,EAAK,CAChByM,KAAMo0B,KAAKC,UAAUvK,GACrBkC,QAAO9+B,EAAAA,EAAA,GACFilG,GAAYp/E,IAAY,IAC3B,eAAgB,qBAElBqX,OAAQ,SACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAo+CE0kF,aAl+CmB,SAAHrvF,GAA4B,IAAtB5a,EAAE4a,EAAF5a,GAAIinB,EAAWrM,EAAXqM,YACpBxf,EA1OsB,SAAAzH,GAAE,0BAAAuB,OAAwBvB,EAAE,aA0O5CkqG,CAAsBlqG,GAClC,OAAOyS,GAAMhL,EAAK,CAChBy4B,QAASmmE,GAAYp/E,GACrBqX,OAAQ,SACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EA69CEwP,aAp9CmB,SAAHha,GAA4B,IAAtB/a,EAAE+a,EAAF/a,GAAIinB,EAAWlM,EAAXkM,YAC1B,OAAOi/E,GAAgB,CAAEz+F,IAAKu9F,GAAwBhlG,GAAKinB,YAAAA,EAAaqX,OAAQ,SAC7E3+B,MAAK,SAACW,GAAI,OAAK2nG,EAAAA,EAAAA,IAAY3nG,EAAK,GACrC,EAk9CE40B,eAh9CqB,SAAHla,GAA4B,IAAtBhb,EAAEgb,EAAFhb,GAAIinB,EAAWjM,EAAXiM,YAC5B,OAAOi/E,GAAgB,CAAEz+F,IAAKw9F,GAA0BjlG,GAAKinB,YAAAA,EAAaqX,OAAQ,SAC/E3+B,MAAK,SAACW,GAAI,OAAK2nG,EAAAA,EAAAA,IAAY3nG,EAAK,GACrC,EA88CE60B,iBA58CuB,SAAH5Z,GAA4B,IAAtBvb,EAAEub,EAAFvb,GAAIinB,EAAW1L,EAAX0L,YAC9B,OAAOi/E,GAAgB,CAAEz+F,IAAKy9F,GAA2BllG,GAAKinB,YAAAA,EAAaqX,OAAQ,SAChF3+B,MAAK,SAACW,GAAI,OAAK2nG,EAAAA,EAAAA,IAAY3nG,EAAK,GACrC,EA08CE+0B,mBAx8CyB,SAAH7Z,GAA4B,IAAtBxb,EAAEwb,EAAFxb,GAAIinB,EAAWzL,EAAXyL,YAChC,OAAOi/E,GAAgB,CAAEz+F,IAAK09F,GAA6BnlG,GAAKinB,YAAAA,EAAaqX,OAAQ,SAClF3+B,MAAK,SAACW,GAAI,OAAK2nG,EAAAA,EAAAA,IAAY3nG,EAAK,GACrC,EAs8CEkgC,UAp8CgB,SAAH/kB,GAA4B,IAAtBzb,EAAEyb,EAAFzb,GAAIinB,EAAWxL,EAAXwL,YACvB,OAAOxU,GApPuB,SAAAzS,GAAE,0BAAAuB,OAAwBvB,EAAE,UAoP7CmqG,CAAwBnqG,GAAK,CACxCkgC,QAASmmE,GAAYp/E,GACrBqX,OAAQ,SACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAg8CEmb,YA97CkB,SAAH1kB,GAA4B,IAAtBhc,EAAEgc,EAAFhc,GAAIinB,EAAWjL,EAAXiL,YACzB,OAAOxU,GA1PyB,SAAAzS,GAAE,0BAAAuB,OAAwBvB,EAAE,YA0P/CoqG,CAA0BpqG,GAAK,CAC1CkgC,QAASmmE,GAAYp/E,GACrBqX,OAAQ,SACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EA07CEqgB,wBAx7C8B,SAAH/e,GAA4B,IAAtB7mB,EAAE6mB,EAAF7mB,GAAIinB,EAAWJ,EAAXI,YACrC,OAAOxU,GA9PmC,SAAAzS,GAAE,0BAAAuB,OAAwBvB,EAAE,0BA8PzDqqG,CAAoCrqG,GAAK,CACpDkgC,QAASmmE,GAAYp/E,GACrBqX,OAAQ,SACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAo7CEwgB,aAl7CmB,SAAHhW,GAAqC,IAA/B/vB,EAAE+vB,EAAF/vB,GAAIinB,EAAW8I,EAAX9I,YAAa+e,EAAOjW,EAAPiW,QACvC,OAAOkgE,GAAgB,CACrBz+F,IAAKg9F,GAAuBzkG,GAC5BinB,YAAAA,EACAi0B,QAAS,CACPlV,QAAAA,GAEF1H,OAAQ,QAEZ,EA06CE8G,UAAAA,GACAC,gBAn5CsB,SAAH7U,GAA8B,IAAxBtuB,EAAIsuB,EAAJtuB,KAAM+kB,EAAWuJ,EAAXvJ,YAC/B,OAAOi/E,GAAgB,CACrBz+F,IAtT6B,0BAuT7Bwf,YAAAA,EACAmjB,OAAQ,CAAEqrB,KAAMvzD,KAEfvC,MAAK,SAAAW,GAAI,OAAIA,EAAKN,EAAE,IAAC,OACf,SAAAoT,GACL,GAAIA,GAA8B,MAArBA,EAAM01C,WAGjB,OAAO5mD,EAEP,MAAMkR,CAEV,IACCzT,MAAK,SAAAK,GAAE,OAAIolC,GAAU,CAAEplC,GAAAA,EAAIinB,YAAAA,GAAc,GAC9C,EAm4CEqe,sBAj4C4B,SAAH3U,GAA4B,IAAtB3wB,EAAE2wB,EAAF3wB,GAAIinB,EAAW0J,EAAX1J,YAC7Bxf,EAAM,GAAHlG,OAvU6B,iCAuUQ,SAAAA,OAAQvB,GACtD,OAAOyS,GAAMhL,EAAK,CAAEy4B,QAASmmE,GAAYp/E,KACtCtnB,MAAK,SAAC07B,GACL,OAAO,IAAI57B,SAAQ,SAACC,EAASyD,GAAM,OAAKk4B,EAAS9V,OAC9C5lB,MAAK,SAAC4lB,GACL,OAAK8V,EAAS/V,GAGP5lB,EAAQ6lB,GAFNpiB,EAAO,IAAIo/F,EAAgBlnE,EAAS3R,OAAQnE,EAAM,CAAE9d,IAAAA,GAAO4zB,GAGtE,GAAE,GACN,GACJ,EAs3CE/O,SA/+Be,SAAHgJ,GAA4B,IAAtBt1B,EAAEs1B,EAAFt1B,GAAIinB,EAAWqO,EAAXrO,YACtB,OAAOi/E,GAAgB,CAAEz+F,IAAKg8F,EAAsBzjG,GAAKs+B,OAAQ,OAAQrX,YAAAA,IACtEtnB,MAAK,SAACW,GAAI,OAAK2nG,EAAAA,EAAAA,IAAY3nG,EAAK,GACrC,EA6+BEm0B,WA3+BiB,SAAHc,GAA4B,IAAtBv1B,EAAEu1B,EAAFv1B,GAAIinB,EAAWsO,EAAXtO,YACxB,OAAOi/E,GAAgB,CAAEz+F,IAAKi8F,EAAwB1jG,GAAKs+B,OAAQ,OAAQrX,YAAAA,IACxEtnB,MAAK,SAACW,GAAI,OAAK2nG,EAAAA,EAAAA,IAAY3nG,EAAK,GACrC,EAy+BE6rB,QAv+Bc,SAAHsJ,GAA4B,IAAtBz1B,EAAEy1B,EAAFz1B,GAAIinB,EAAWwO,EAAXxO,YACrB,OAAOi/E,GAAgB,CAAEz+F,IAAKk8F,EAAqB3jG,GAAKs+B,OAAQ,OAAQrX,YAAAA,IACrEtnB,MAAK,SAACW,GAAI,OAAK2nG,EAAAA,EAAAA,IAAY3nG,EAAK,GACrC,EAq+BEk1B,UAn+BgB,SAAHG,GAA4B,IAAtB31B,EAAE21B,EAAF31B,GAAIinB,EAAW0O,EAAX1O,YACvB,OAAOi/E,GAAgB,CAAEz+F,IAAKm8F,EAAuB5jG,GAAKs+B,OAAQ,OAAQrX,YAAAA,IACvEtnB,MAAK,SAACW,GAAI,OAAK2nG,EAAAA,EAAAA,IAAY3nG,EAAK,GACrC,EAi+BEs1B,eA/9BqB,SAAHE,GAA4B,IAAtB91B,EAAE81B,EAAF91B,GAAIinB,EAAW6O,EAAX7O,YAC5B,OAAOi/E,GAAgB,CACrBz+F,IAAKi9F,GAA6B1kG,GAClCkgC,QAASmmE,GAAYp/E,GACrBqX,OAAQ,QAEZ,EA09BEvI,iBAx9BuB,SAAHC,GAA4B,IAAtBh2B,EAAEg2B,EAAFh2B,GAAIinB,EAAW+O,EAAX/O,YAC9B,OAAOi/E,GAAgB,CACrBz+F,IAAKk9F,GAA+B3kG,GACpCkgC,QAASmmE,GAAYp/E,GACrBqX,OAAQ,QAEZ,EAm9BEgpC,WAj9BiB,SAAHrxC,GAaV,IAZJhP,EAAWgP,EAAXhP,YACAyC,EAAMuM,EAANvM,OACAu9C,EAAWhxC,EAAXgxC,YACAl7C,EAAUkK,EAAVlK,WACAm7C,EAASjxC,EAATixC,UACAx0C,EAAIuD,EAAJvD,KAAI43E,EAAAr0E,EACJs0E,SAAAA,OAAQ,IAAAD,EAAG,GAAEA,EACbE,EAAiBv0E,EAAjBu0E,kBACAC,EAAOx0E,EAAPw0E,QACAtjC,EAAWlxC,EAAXkxC,YACA5L,EAAOtlC,EAAPslC,QACA6mB,EAAcnsD,EAAdmsD,eAEMpkD,EAAO,IAAIC,SACXysE,EAAch4E,EAAKkuD,SAAW,GAWpC,GATA5iD,EAAKE,OAAO,SAAUxU,GACtBsU,EAAKE,OAAO,SAAU,cAClB+oC,GAAajpC,EAAKE,OAAO,eAAgB+oC,GACzCl7C,GAAYiS,EAAKE,OAAO,aAAcnS,GACtCm7C,GAAWlpC,EAAKE,OAAO,YAAagpC,GACpCC,GAAanpC,EAAKE,OAAO,eAAgBipC,GAC7CojC,EAAS/mF,SAAQ,SAAAujD,GACf/oC,EAAKE,OAAO,cAAe6oC,EAC7B,IACI2jC,EAAYz9F,MAAK,SAAAoN,GAAM,MAAe,KAAXA,CAAa,IAAG,CAC7C,IAAMswF,EAAiB,CACrBC,WAAY3P,SAASvoE,EAAKmO,UAAW,IACrCgqE,SAAUn4E,EAAKm4E,UAEjB1qG,OAAOD,KAAKyqG,GAAgBnnF,SAAQ,SAAA7S,GAClCqtB,EAAKE,OAAO,QAAD38B,OAASoP,EAAG,KAAKg6F,EAAeh6F,GAC7C,IAEA+5F,EAAYlnF,SAAQ,SAAAnJ,GAClB2jB,EAAKE,OAAO,kBAAmB7jB,EACjC,GACF,CACImwF,GACFxsE,EAAKE,OAAO,iBAAkBssE,GAE5BC,GACFzsE,EAAKE,OAAO,WAAYusE,GAEtBlvC,GACFv9B,EAAKE,OAAO,UAAW,QAGzB,IAAM4sE,EAAczE,GAAYp/E,GAKhC,OAJIm7D,IACF0oB,EAAY,mBAAqB1oB,GAG5B3vE,GA/xBwB,mBA+xBQ,CACrCyB,KAAM8pB,EACNM,OAAQ,OACR4B,QAAS4qE,IAERnrG,MAAK,SAAC07B,GACL,OAAOA,EAAS9V,MAClB,IACC5lB,MAAK,SAACW,GAAI,OAAKA,EAAK8S,MAAQ9S,GAAO2nG,EAAAA,EAAAA,IAAY3nG,EAAK,GACzD,EAm5BEsmE,WAj5BiB,SAAH1wC,GASV,IARJl2B,EAAEk2B,EAAFl2B,GACAinB,EAAWiP,EAAXjP,YACAyC,EAAMwM,EAANxM,OACAu9C,EAAW/wC,EAAX+wC,YACAC,EAAShxC,EAATgxC,UACAx0C,EAAIwD,EAAJxD,KAAIq4E,EAAA70E,EACJq0E,SAAAA,OAAQ,IAAAQ,EAAG,GAAEA,EACb5jC,EAAWjxC,EAAXixC,YAEMnpC,EAAO,IAAIC,SACXysE,EAAch4E,EAAKkuD,SAAW,GAUpC,GARA5iD,EAAKE,OAAO,SAAUxU,GAClBu9C,GAAajpC,EAAKE,OAAO,eAAgB+oC,GACzCC,GAAWlpC,EAAKE,OAAO,YAAagpC,GACpCC,GAAanpC,EAAKE,OAAO,eAAgBipC,GAC7CojC,EAAS/mF,SAAQ,SAAAujD,GACf/oC,EAAKE,OAAO,cAAe6oC,EAC7B,IAEI2jC,EAAYz9F,MAAK,SAAAoN,GAAM,MAAe,KAAXA,CAAa,IAAG,CAC7C,IAAMswF,EAAiB,CACrBC,WAAY3P,SAASvoE,EAAKmO,UAAW,IACrCgqE,SAAUn4E,EAAKm4E,UAEjB1qG,OAAOD,KAAKyqG,GAAgBnnF,SAAQ,SAAA7S,GAClCqtB,EAAKE,OAAO,QAAD38B,OAASoP,EAAG,KAAKg6F,EAAeh6F,GAC7C,IAEA+5F,EAAYlnF,SAAQ,SAAAnJ,GAClB2jB,EAAKE,OAAO,kBAAmB7jB,EACjC,GACF,CAEA,IAAM2wF,EAAa3E,GAAYp/E,GAE/B,OAAOxU,GAAMsxF,EAAoB/jG,GAAK,CACpCkU,KAAM8pB,EACNM,OAAQ,MACR4B,QAAS8qE,IAERrrG,MAAK,SAAC07B,GACL,OAAOA,EAAS9V,MAClB,IACC5lB,MAAK,SAACW,GAAI,OAAKA,EAAK8S,MAAQ9S,GAAO2nG,EAAAA,EAAAA,IAAY3nG,EAAK,GACzD,EAo2BE2zB,aAl2BmB,SAAHkC,GAA4B,IAAtBn2B,EAAEm2B,EAAFn2B,GAAIinB,EAAWkP,EAAXlP,YAC1B,OAAOi/E,GAAgB,CACrBz+F,IAAKo8F,EAAoB7jG,GACzBinB,YAAAA,EACAqX,OAAQ,UAEZ,EA61BE2sE,YA31BkB,SAAH70E,GAAkC,IAA5B80E,EAAQ90E,EAAR80E,SAAUjkF,EAAWmP,EAAXnP,YAC/B,OAAOxU,GAAMmyF,GAA2B,CACtC1wF,KAAMg3F,EACN5sE,OAAQ,OACR4B,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAACW,GAAI,OAAK6qG,EAAAA,EAAAA,IAAgB7qG,EAAK,GACzC,EAo1BE8qG,oBAl1B0B,SAAH/0E,GAAyC,IAAnCr2B,EAAEq2B,EAAFr2B,GAAIu6C,EAAWlkB,EAAXkkB,YAAatzB,EAAWoP,EAAXpP,YAC9C,OAAOi/E,GAAgB,CACrBz+F,IAAK,GAAFlG,OAAKqjG,GAAyB,KAAArjG,OAAIvB,GACrCs+B,OAAQ,MACR4B,QAASmmE,GAAYp/E,GACrBi0B,QAAS,CACPX,YAAAA,KAED56C,MAAK,SAACW,GAAI,OAAK6qG,EAAAA,EAAAA,IAAgB7qG,EAAK,GACzC,EA00BE2lC,WArqBiB,SAAHjO,GAA+B,IAAzBtQ,EAAKsQ,EAALtQ,MAAOT,EAAW+Q,EAAX/Q,YACrB/jB,EAAQ,IAAImoG,gBAAgB,CAAEC,oBAAoB,IAIxD,OAHI5jF,GACFxkB,EAAMg7B,OAAO,SAAUxW,GAElBw+E,GAAgB,CAAEz+F,IAAK,GAAFlG,OA1iCE,iBA0iC0B,KAAAA,OAAI2B,EAAM8K,YAAciZ,YAAAA,IAC7EtnB,MAAK,SAACsE,GAAK,OAAKA,EAAM7E,IAAIknG,EAAAA,GAAU,GACzC,EA+pBE3lE,SA7pBe,SAAHzI,GAAuC,IAAjCl4B,EAAEk4B,EAAFl4B,GAAI6gC,EAAS3I,EAAT2I,UAAW5Z,EAAWiR,EAAXjR,YAC3Bi0B,EAAU,CAAC,EAIjB,OAHIra,IACFqa,EAAQ0vD,WAAa/pE,GAEhBqlE,GAAgB,CAAEz+F,IAAK48F,EAAuBrkG,GAAKinB,YAAAA,EAAaqX,OAAQ,OAAQ4c,QAAAA,GACzF,EAwpBEja,WAtpBiB,SAAHxI,GAA4B,IAAtBz4B,EAAEy4B,EAAFz4B,GAAIinB,EAAWwR,EAAXxR,YACxB,OAAOi/E,GAAgB,CAAEz+F,IAAK68F,GAAyBtkG,GAAKinB,YAAAA,EAAaqX,OAAQ,QACnF,EAqpBEwI,cAnpBoB,SAAHpO,GAA4B,IAAtB14B,EAAE04B,EAAF14B,GAAIinB,EAAWyR,EAAXzR,YAC3B,OAAOi/E,GAAgB,CAAEz+F,IAAK88F,GAAwBvkG,GAAKinB,YAAAA,EAAaqX,OAAQ,QAClF,EAkpBEyI,gBAhpBsB,SAAHwkE,GAA4B,IAAtBvrG,EAAEurG,EAAFvrG,GAAIinB,EAAWskF,EAAXtkF,YAC7B,OAAOi/E,GAAgB,CAAEz+F,IAAK+8F,GAA0BxkG,GAAKinB,YAAAA,EAAaqX,OAAQ,QACpF,EA+oBEkH,YA7oBkB,SAAHgmE,GAA+B,IAAzB9jF,EAAK8jF,EAAL9jF,MAAOT,EAAWukF,EAAXvkF,YACtB/jB,EAAQ,IAAImoG,gBAAgB,CAAEC,oBAAoB,IAIxD,OAHI5jF,GACFxkB,EAAMg7B,OAAO,SAAUxW,GAElBw+E,GAAgB,CAAEz+F,IAAK,GAAFlG,OAxkCG,kBAwkC0B,KAAAA,OAAI2B,EAAM8K,YAAciZ,YAAAA,IAC9EtnB,MAAK,SAACsE,GAAK,OAAKA,EAAM7E,IAAIknG,EAAAA,GAAU,GACzC,EAuoBEvnD,iBAlnBuB,SAAH0sD,GAAwB,IAAlBxkF,EAAWwkF,EAAXxkF,YAG1B,OAAOxU,GAFK,yBAEM,CAChBytB,QAASmmE,GAAYp/E,KACpBtnB,MAAK,SAACW,GACP,GAAIA,EAAKglB,GACP,OAAOhlB,EAAKilB,OAEd,MAAM,IAAI1lB,MAAM,6BAA8BS,EAChD,GACF,EAwmBE0+C,iBAtmBuB,SAAH0sD,GAA4B,IAAtB1rG,EAAE0rG,EAAF1rG,GAAIinB,EAAWykF,EAAXzkF,YACxBxf,EAAM,qBAAHlG,OAAwBvB,GAEjC,OAAOyS,GAAMhL,EAAK,CAChBy4B,QAASmmE,GAAYp/E,GACrBqX,OAAQ,UAEZ,EAgmBE+C,QA5sCc,SAAHrN,GAAmC,IAA7BjvB,EAAGivB,EAAHjvB,IAAKkiB,EAAW+M,EAAX/M,YAEhB+W,EAAO,CACXs8D,UAAW,CAH0BtmE,EAAJ9vB,KACXC,aAGtBkf,KAAM,CAACte,IAGHm7B,EAAUmmE,GAAYp/E,GAG5B,OAFAiZ,EAAQ,gBAAkB,mBAEnBztB,GAAM4wF,EAAc,CACzB/kE,OAAQ,MACR4B,QAAAA,EACAhsB,KAAMo0B,KAAKC,UAAUvK,IAEzB,EA8rCEwD,UA5rCgB,SAAHtN,GAAmC,IAA7BnvB,EAAGmvB,EAAHnvB,IAAKkiB,EAAWiN,EAAXjN,YAElB/S,EAAO,CACXomF,UAAW,CAH4BpmE,EAAJhwB,KACbC,aAGtBkf,KAAM,CAACte,IAGHm7B,EAAUmmE,GAAYp/E,GAG5B,OAFAiZ,EAAQ,gBAAkB,mBAEnBztB,GAAM4wF,EAAc,CACzB/kE,OAAQ,SACR4B,QAAAA,EACAhsB,KAAMo0B,KAAKC,UAAUr0B,IAEzB,EA8qCEy3F,WAloCiB,SAAH/2E,GAA8B,IAAxB3N,EAAW2N,EAAX3N,YACds8E,EAD+B3uE,EAAJ1wB,KACTC,YAClB+7B,EAAUmmE,GAAYp/E,GAE5B,OAAOxU,GAAM,GAADlR,OAroBU,2BAqoBS,cAAAA,OAAagiG,GAAc,CACxDjlE,OAAQ,SACR4B,QAAAA,GAEJ,EA2nCE0rE,SA7qCe,SAAHv3E,GAAqC,IAA/BqN,EAAKrN,EAALqN,MAAOza,EAAWoN,EAAXpN,YACnBs8E,EADoClvE,EAAJnwB,KACdC,YAExB,OAAOsO,GAAM6wF,EAAqBC,EAAY7hE,GAAQ,CACpDpD,OAAQ,OACR4B,QAASmmE,GAAYp/E,GACrB/S,KAAM,CAAC,GAEX,EAsqCE23F,YApqCkB,SAAHt3E,GAAqC,IAA/BmN,EAAKnN,EAALmN,MAAOza,EAAWsN,EAAXtN,YACtBs8E,EADuChvE,EAAJrwB,KACjBC,YAExB,OAAOsO,GAAM6wF,EAAqBC,EAAY7hE,GAAQ,CACpDpD,OAAQ,SACR4B,QAASmmE,GAAYp/E,GACrB/S,KAAM,CAAC,GAEX,EA6pCE+yB,aA3pCmB,SAAHzS,GAAyD,IAAnDvN,EAAWuN,EAAXvN,YAAkC9C,EAAQqQ,EAA7BtwB,KAAQC,YAC3C,OAAO+hG,GAAgB,CACrBz+F,IA/mBsB,oCAgnBtB62B,OAAQ,QACRrX,YAAAA,EACAi0B,QAAS,CACPo/C,UAAW,CAACn2E,MAEbxkB,MAAK,SAAA07B,GAAQ,OAAI0V,IAAI1V,EAAU,UAAU,GAC9C,EAmpCE6L,eAjpCqB,SAAHxS,GAAyD,IAAnDzN,EAAWyN,EAAXzN,YAAkC9C,EAAQuQ,EAA7BxwB,KAAQC,YAC7C,OAAO+hG,GAAgB,CACrBz+F,IAznBwB,sCA0nBxB62B,OAAQ,QACRrX,YAAAA,EACAi0B,QAAS,CACPo/C,UAAW,CAACn2E,MAEbxkB,MAAK,SAAA07B,GAAQ,OAAI0V,IAAI1V,EAAU,UAAU,GAC9C,EAyoCE8O,SAxjDe,SAAH1vB,GAAgC,IAA1B2vB,EAAM3vB,EAAN2vB,OAAQnjB,EAAWxM,EAAXwM,YAClB9C,EAAsBimB,EAAtBjmB,SAAanN,GAAIrJ,EAAAA,EAAAA,GAAKy8B,EAAMx8B,GACpC,OAAO6E,GArMyB,mBAqMQ,CACtC6rB,OAAQ,OACR4B,QAAO9+B,EAAAA,EAAA,GACFilG,GAAYp/E,IAAY,IAC3B,eAAgB,qBAElB/S,KAAMo0B,KAAKC,UAASnnC,EAAC,CACnB+iB,SAAAA,EACA/M,OAAQ,QACR00F,WAAW,GACR90F,MAGJrX,MAAK,SAAC07B,GACL,OAAIA,EAAS/V,GACJ+V,EAAS9V,OAET8V,EAAS9V,OAAO5lB,MAAK,SAACyT,GAAY,MAAM,IAAIsvF,EAAkBtvF,EAAO,GAEhF,GACJ,EAmiDEk3B,WAjiDiB,WAAH,OAAS73B,GAAM,wBAAwB9S,MAAK,SAAAosG,GAAI,OAAIA,EAAKxmF,MAAM,GAAC,EAkiD9EymF,oBAzmD0B,SAAH/lG,GAA4F,IAAtFghB,EAAWhhB,EAAXghB,YAAWglF,EAAAhmG,EAAEuvD,OAAAA,OAAM,IAAAy2C,EAAG,KAAIA,EAAAC,EAAAjmG,EAAEkmG,WAAAA,OAAU,IAAAD,EAAG,KAAIA,EAAAE,EAAAnmG,EAAEk1F,OAAAA,OAAM,IAAAiR,EAAG,KAAIA,EAAAC,EAAApmG,EAAE0X,WAAAA,OAAU,IAAA0uF,EAAG,KAAIA,EACtGruE,EAAO,IAAIC,SAUjB,OATe,OAAXu3B,IACiB,OAAf22C,EACFnuE,EAAKE,OAAO,SAAUs3B,EAAQ22C,GAE9BnuE,EAAKE,OAAO,SAAUs3B,IAGX,OAAX2lC,GAAiBn9D,EAAKE,OAAO,SAAUi9D,GACxB,OAAfx9E,GAAqBqgB,EAAKE,OAAO,2BAA4BvgB,GAC1DlL,GAAMsyF,GAA6B,CACxC7kE,QAASmmE,GAAYp/E,GACrBqX,OAAQ,QACRpqB,KAAM8pB,IAELr+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAACW,GACL,GAAIA,EAAK8S,MACP,MAAM,IAAIvT,MAAMS,EAAK8S,OAEvB,OAAOkzF,EAAAA,EAAAA,IAAUhmG,EACnB,GACJ,EAmlDEkvC,cAjlDoB,SAAHtpC,GAAgC,IAA1B+gB,EAAW/gB,EAAX+gB,YAAamjB,EAAMlkC,EAANkkC,OACpC,OAAO87D,GAAgB,CACrBz+F,IAAKs9F,GACLzmE,OAAQ,QACR4c,QAAS9Q,EACTnjB,YAAAA,IACCtnB,MAAK,SAACW,GAAI,OAAKgmG,EAAAA,EAAAA,IAAUhmG,EAAK,GACnC,EA2kDEgsG,YA31BkB,SAAH91E,GAA8B,IAAxBikD,EAAIjkD,EAAJikD,KAAMxzD,EAAWuP,EAAXvP,YACrBikF,EAAW,IAAIjtE,SAErB,OADAitE,EAAShtE,OAAO,OAAQu8C,GACjBhoE,GAh8BgB,4BAg8BQ,CAC7ByB,KAAMg3F,EACN5sE,OAAQ,OACR4B,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAAC07B,GAAQ,OAAKA,EAAS/V,EAAE,GACnC,EAm1BEinF,aAj1BmB,SAAH91E,GAA8B,IAAxBgkD,EAAIhkD,EAAJgkD,KAAMxzD,EAAWwP,EAAXxP,YACtBikF,EAAW,IAAIjtE,SAErB,OADAitE,EAAShtE,OAAO,OAAQu8C,GACjBhoE,GA18BiB,6BA08BQ,CAC9ByB,KAAMg3F,EACN5sE,OAAQ,OACR4B,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAAC07B,GAAQ,OAAKA,EAAS/V,EAAE,GACnC,EAy0BEknF,cAv0BoB,SAAH91E,GAA8B,IAAxB+jD,EAAI/jD,EAAJ+jD,KAAMxzD,EAAWyP,EAAXzP,YACvBikF,EAAW,IAAIjtE,SAErB,OADAitE,EAAShtE,OAAO,OAAQu8C,GACjBhoE,GAp9BiB,6BAo9BQ,CAC9ByB,KAAMg3F,EACN5sE,OAAQ,OACR4B,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAAC07B,GAAQ,OAAKA,EAAS/V,EAAE,GACnC,EA+zBEmnF,cA7zBoB,SAAH91E,GAAkC,IAA5B1P,EAAW0P,EAAX1P,YAAasY,EAAQ5I,EAAR4I,SAC9BvB,EAAO,IAAIC,SAIjB,OAFAD,EAAKE,OAAO,WAAYqB,GAEjB9sB,GAh+BkB,8BAg+BQ,CAC/ByB,KAAM8pB,EACNM,OAAQ,OACR4B,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAAC07B,GAAQ,OAAKA,EAAS9V,MAAM,GACvC,EAmzBEmnF,YAjzBkB,SAAH91E,GAAyC,IAAnC3P,EAAW2P,EAAX3P,YAAa0hE,EAAK/xD,EAAL+xD,MAAOppD,EAAQ3I,EAAR2I,SACnCvB,EAAO,IAAIC,SAKjB,OAHAD,EAAKE,OAAO,QAASyqD,GACrB3qD,EAAKE,OAAO,WAAYqB,GAEjB9sB,GA7+BgB,4BA6+BQ,CAC7ByB,KAAM8pB,EACNM,OAAQ,OACR4B,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAAC07B,GAAQ,OAAKA,EAAS9V,MAAM,GACvC,EAsyBEonF,YApyBkB,SAAH91E,GAAiD,IAA3C5P,EAAW4P,EAAX5P,YAAasY,EAAQ1I,EAAR0I,SAAUqtE,EAAa/1E,EAAb+1E,cACtC5uE,EAAO,IAAIC,SAKjB,OAHAD,EAAKE,OAAO,WAAYqB,GACxBvB,EAAKE,OAAO,iBAAkB0uE,GAEvBn6F,GAz/BgB,4BAy/BQ,CAC7ByB,KAAM8pB,EACNM,OAAQ,OACR4B,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAAC07B,GAAQ,OAAKA,EAAS9V,MAAM,GACvC,EAyxBEsnF,SAvxBe,SAAH91E,GAA+B,IAAzB9P,EAAW8P,EAAX9P,YAAa6lF,EAAK/1E,EAAL+1E,MAC/B,OAAO5G,GAAgB,CACrBz+F,IAAK27F,EACL9kE,OAAQ,MACRrX,YAAAA,EACAi0B,QAAS,CAAE4xD,MAAAA,IAEf,EAixBEC,YA/wBkB,SAAH71E,GAA+B,IAAzBjQ,EAAWiQ,EAAXjQ,YAAa6lF,EAAK51E,EAAL41E,MAClC,OAAO5G,GAAgB,CACrBz+F,IAAK27F,EACL9kE,OAAQ,SACRrX,YAAAA,EACAi0B,QAAS,CAAE4xD,MAAAA,IAEf,EAywBEE,YAvwBkB,SAAH71E,GAAwB,IAAlBlQ,EAAWkQ,EAAXlQ,YACrB,OAAOi/E,GAAgB,CACrBz+F,IAAK27F,EACL9kE,OAAQ,MACRrX,YAAAA,EACAmjB,OAAQ,CACN6iE,eAAgB,IAAI7uE,MAAQ2kB,YAGlC,EA+vBEmqD,eA7vBqB,SAAH71E,GAAwE,IAAlEpQ,EAAWoQ,EAAXpQ,YAAasY,EAAQlI,EAARkI,SAAU4tE,EAAW91E,EAAX81E,YAAaC,EAAuB/1E,EAAvB+1E,wBACtDpvE,EAAO,IAAIC,SAMjB,OAJAD,EAAKE,OAAO,WAAYqB,GACxBvB,EAAKE,OAAO,eAAgBivE,GAC5BnvE,EAAKE,OAAO,4BAA6BkvE,GAElC36F,GAtiCmB,+BAsiCQ,CAChCyB,KAAM8pB,EACNM,OAAQ,OACR4B,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAAC07B,GAAQ,OAAKA,EAAS9V,MAAM,GACvC,EAivBE8nF,YA/uBkB,SAAH/1E,GAAwB,IAAlBrQ,EAAWqQ,EAAXrQ,YACrB,OAAOxU,GAniCgB,4BAmiCQ,CAC7BytB,QAASmmE,GAAYp/E,GACrBqX,OAAQ,QACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EA2uBE+nF,cAzuBoB,SAAH91E,GAAkC,IAA5BvQ,EAAWuQ,EAAXvQ,YAAasY,EAAQ/H,EAAR+H,SAC9BvB,EAAO,IAAIC,SAIjB,OAFAD,EAAKE,OAAO,WAAYqB,GAEjB9sB,GAziCmB,iCAyiCQ,CAChCyB,KAAM8pB,EACNM,OAAQ,SACR4B,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAAC07B,GAAQ,OAAKA,EAAS9V,MAAM,GACvC,EA+tBEgoF,uBA3sB6B,SAAHz1E,GAAwB,IAAlB7Q,EAAW6Q,EAAX7Q,YAChC,OAAOxU,GAxkCoB,yCAwkCQ,CACjCytB,QAASmmE,GAAYp/E,GACrBqX,OAAQ,QACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAusBEioF,YAltBkB,SAAH71E,GAAwB,IAAlB1Q,EAAW0Q,EAAX1Q,YACrB,OAAOxU,GAhkCiB,uCAgkCQ,CAC9BytB,QAASmmE,GAAYp/E,GACrBqX,OAAQ,QACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EA8sBEkoF,cA/tBoB,SAAHh2E,GAAyC,IAAnCxQ,EAAWwQ,EAAXxQ,YAAasY,EAAQ9H,EAAR8H,SAAUK,EAAKnI,EAALmI,MACxC5B,EAAO,IAAIC,SAKjB,OAHAD,EAAKE,OAAO,WAAYqB,GACxBvB,EAAKE,OAAO,OAAQ0B,GAEbntB,GAxjCmB,yCAwjCQ,CAChCyB,KAAM8pB,EACNkC,QAASmmE,GAAYp/E,GACrBqX,OAAQ,SACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAqtBEmoF,UAjqBgB,SAAHC,GAAwB,IAAlB1mF,EAAW0mF,EAAX1mF,YACnB,OAAOi/E,GAAgB,CACrBz+F,IAAKm+F,GACLtnE,OAAQ,OACRrX,YAAAA,GAEJ,EA4pBE2mF,YA1pBkB,SAAHC,GAAwB,IAAlB5mF,EAAW4mF,EAAX5mF,YACrB,OAAOi/E,GAAgB,CACrBz+F,IAAKm+F,GACLtnE,OAAQ,MACRrX,YAAAA,EACAmjB,OAAQ,CACN6iE,eAAgB,IAAI7uE,MAAQ2kB,YAGlC,EAkpBE+qD,oBAh3C0B,SAAHt8E,GAAwB,IAAlBvK,EAAWuK,EAAXvK,YAE7B,OAAOxU,GArZ4B,0BAqZjB,CAAEytB,QAASmmE,GAAYp/E,KACtCtnB,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAACW,GAAI,OAAKA,EAAKlB,IAAIknG,EAAAA,GAAU,GACvC,EA42CEyH,WA12CiB,SAAHr8E,GAAwB,IAAlBzK,EAAWyK,EAAXzK,YAEpB,OAAOxU,GADKu7F,gBACM,CAAE9tE,QAASmmE,GAAYp/E,KACtCtnB,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAu2CEkU,WAr2CiB,SAAH3H,GAA+B,IAAzBxX,EAAKwX,EAALxX,MAAO2M,EAAW6K,EAAX7K,YAErBiZ,EAAUmmE,GAAYp/E,GAG5B,OAFAiZ,EAAQ,gBAAkB,mBAEnBztB,GAJKu7F,gBAIM,CAChB9tE,QAAAA,EACA5B,OAAQ,OACRpqB,KAAMo0B,KAAKC,UAAU,CAAEjuB,MAAAA,MACtB3a,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EA41CEoU,QA11Cc,SAAHrH,GAAgC,IAA1BwG,EAAMxG,EAANwG,OAAQ7R,EAAWqL,EAAXrL,YACnBxf,EAAMw8F,EAAkBnrE,GAC9B,OAAOrmB,GAAMhL,EAAK,CAAEy4B,QAASmmE,GAAYp/E,KACtCtnB,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAu1CEuU,WAr1CiB,SAAHrH,GAAuC,IAAjCqG,EAAMrG,EAANqG,OAAQxe,EAAKmY,EAALnY,MAAO2M,EAAWwL,EAAXxL,YAC7Bxf,EAAMw8F,EAAkBnrE,GACxBoH,EAAUmmE,GAAYp/E,GAG5B,OAFAiZ,EAAQ,gBAAkB,mBAEnBztB,GAAMhL,EAAK,CAChBy4B,QAAAA,EACA5B,OAAQ,MACRpqB,KAAMo0B,KAAKC,UAAU,CAAEjuB,MAAAA,KAE3B,EA40CEuf,gBA10CsB,SAAHjH,GAAgC,IAA1BkG,EAAMlG,EAANkG,OAAQ7R,EAAW2L,EAAX3L,YAC3Bxf,EAAM08F,EAA2BrrE,GACvC,OAAOrmB,GAAMhL,EAAK,CAAEy4B,QAASmmE,GAAYp/E,KACtCtnB,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAACW,GAAI,OAAKA,EAAKlB,KAAI,SAAA0zB,GAAK,OAAAA,EAAF9yB,EAAW,GAAC,GAC5C,EAs0CEk6B,kBAp0CwB,SAAHnH,GAA4C,IAAtC+F,EAAM/F,EAAN+F,OAAQE,EAAUjG,EAAViG,WAAY/R,EAAW8L,EAAX9L,YACzCxf,EAAM08F,EAA2BrrE,GACjCoH,EAAUmmE,GAAYp/E,GAG5B,OAFAiZ,EAAQ,gBAAkB,mBAEnBztB,GAAMhL,EAAK,CAChBy4B,QAAAA,EACA5B,OAAQ,OACRpqB,KAAMo0B,KAAKC,UAAU,CAAE0lE,YAAaj1E,KAExC,EA2zCEmB,uBAzzC6B,SAAHhH,GAA4C,IAAtC2F,EAAM3F,EAAN2F,OAAQE,EAAU7F,EAAV6F,WAAY/R,EAAWkM,EAAXlM,YAC9Cxf,EAAM08F,EAA2BrrE,GACjCoH,EAAUmmE,GAAYp/E,GAG5B,OAFAiZ,EAAQ,gBAAkB,mBAEnBztB,GAAMhL,EAAK,CAChBy4B,QAAAA,EACA5B,OAAQ,SACRpqB,KAAMo0B,KAAKC,UAAU,CAAE0lE,YAAaj1E,KAExC,EAgzCEO,WA9yCiB,SAAHlG,GAAgC,IAA1ByF,EAAMzF,EAANyF,OAAQ7R,EAAWoM,EAAXpM,YACtBxf,EAAMw8F,EAAkBnrE,GAC9B,OAAOrmB,GAAMhL,EAAK,CAChB62B,OAAQ,SACR4B,QAASmmE,GAAYp/E,IAEzB,EAyyCEwmE,YAn+CkB,SAAHx9D,GAA4B,IAAtBjwB,EAAEiwB,EAAFjwB,GAAIinB,EAAWgJ,EAAXhJ,YACnBxf,EAzS0B,SAAAzH,GAAE,iCAAAuB,OAA+BvB,EAAE,cAySvDkuG,CAA0BluG,GACtC,OAAOyS,GAAMhL,EAAK,CAChBy4B,QAASmmE,GAAYp/E,GACrBqX,OAAQ,SACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EA89CEsoE,SA59Ce,SAAHz9D,GAA4B,IAAtBpwB,EAAEowB,EAAFpwB,GAAIinB,EAAWmJ,EAAXnJ,YAChBxf,EAhTuB,SAAAzH,GAAE,iCAAAuB,OAA+BvB,EAAE,WAgTpDmuG,CAAuBnuG,GACnC,OAAOyS,GAAMhL,EAAK,CAChBy4B,QAASmmE,GAAYp/E,GACrBqX,OAAQ,SACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAu9CE1iB,YAroBkB,SAAHurG,GAAwB,IAAlBnnF,EAAWmnF,EAAXnnF,YACrB,OAAOxU,GAnqCe,sBAmqCQ,CAC5BytB,QAASmmE,GAAYp/E,KACpBtnB,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAkoBE2K,wBAhoB8B,SAAHm+E,GAA4C,IAAtCruG,EAAEquG,EAAFruG,GAAIinB,EAAWonF,EAAXpnF,YAAWqnF,EAAAD,EAAE/3E,OAAAA,OAAM,IAAAg4E,GAAQA,EAC1Dp6F,EAAO,IAAI+pB,SAQjB,OANI3H,EACFpiB,EAAKgqB,OAAO,KAAMl+B,GAElBkU,EAAKgqB,OAAO,SAAUl+B,GAGjByS,GA/qCqB,qCA+qCQ,CAClCyB,KAAAA,EACAgsB,QAASmmE,GAAYp/E,GACrBqX,OAAQ,SACP3+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAmnBE8K,oBA7c0B,SAAHk+E,GAA4B,IAAtBtnF,EAAWsnF,EAAXtnF,YAAajnB,EAAEuuG,EAAFvuG,GAC1C,OAAOkmG,GAAgB,CACrBz+F,IAAK+7F,EAAkCxjG,GACvCs+B,OAAQ,OACR4c,QAAS,CAAEl7C,GAAAA,GACXinB,YAAAA,GAEJ,EAucE65B,KAlnBW,SAAH0tD,GAAyC,IA7nCzBxuG,EA6nCVsgD,EAAMkuD,EAANluD,OAAQO,EAAO2tD,EAAP3tD,QAAS55B,EAAWunF,EAAXvnF,YAI/B,OAHa,IAAIgX,UACZC,OAAO,UAAW2iB,GAEhBqlD,GAAgB,CACrBz+F,KAloCsBzH,EAkoCCm/B,mBAAmBmhB,GAloClB,iBAAA/+C,OAAqBvB,EAAE,WAmoC/Cs+B,OAAQ,OACRrX,YAAAA,EACAi0B,QAAS,CACP2F,QAAAA,IAGN,EAumBEH,UArmBgB,SAAH+tD,GAAgC,IA1oCrBzuG,EA0oCLsgD,EAAMmuD,EAANnuD,OAAQr5B,EAAWwnF,EAAXxnF,YAC3B,OAAOi/E,GACL,CACEz+F,KA7oCoBzH,EA6oCGm/B,mBAAmBmhB,GA7oCpB,iBAAA/+C,OAAqBvB,IA8oC3Cs+B,OAAQ,MACRrX,YAAAA,GAGN,EA8lBE+P,sBA5lB4B,SAAH03E,GAA4B,IAAtB1uG,EAAE0uG,EAAF1uG,GAAIinB,EAAWynF,EAAXznF,YACnC,OAAOi/E,GAAgB,CACrBz+F,IAAKo9F,GAAgC7kG,GACrCs+B,OAAQ,MACRrX,YAAAA,IACCtnB,MAAK,SAACsE,GAAK,OAAKA,EAAM7E,IAAIknG,EAAAA,GAAU,GACzC,EAulBErvE,sBArlB4B,SAAH03E,GAA4B,IAAtB3uG,EAAE2uG,EAAF3uG,GAAIinB,EAAW0nF,EAAX1nF,YACnC,OAAOi/E,GAAgB,CACrBz+F,IAAKq9F,GAAgC9kG,GACrCs+B,OAAQ,MACRrX,YAAAA,IACCtnB,MAAK,SAACsE,GAAK,OAAKA,EAAM7E,IAAIknG,EAAAA,GAAU,GACzC,EAglBE1uE,oBA9kB0B,SAAHg3E,GAA4B,IAAtB5uG,EAAE4uG,EAAF5uG,GAAIinB,EAAW2nF,EAAX3nF,YACjC,OAAOi/E,GAAgB,CAAEz+F,IAAK69F,GAA4BtlG,GAAKinB,YAAAA,IAC5DtnB,MAAK,SAACw5E,GAAS,OAAKA,EAAU/5E,KAAI,SAAAmzB,GAEjC,OADAA,EAAEL,SAAWK,EAAEL,SAAS9yB,IAAIknG,EAAAA,IACrB/zE,CACT,GAAE,GACN,EAykBE6E,eAvkBqB,SAAHy3E,GAAmC,IAA7B7uG,EAAE6uG,EAAF7uG,GAAIS,EAAKouG,EAALpuG,MAAOwmB,EAAW4nF,EAAX5nF,YACnC,OAAOi/E,GAAgB,CACrBz+F,IAAK89F,GAAwBvlG,EAAIS,GACjC69B,OAAQ,MACRrX,YAAAA,IACCtnB,KAAKsoG,EAAAA,GACV,EAkkBE1wE,iBAhkBuB,SAAHu3E,GAAmC,IAA7B9uG,EAAE8uG,EAAF9uG,GAAIS,EAAKquG,EAALruG,MAAOwmB,EAAW6nF,EAAX7nF,YACrC,OAAOi/E,GAAgB,CACrBz+F,IAAK+9F,GAA0BxlG,EAAIS,GACnC69B,OAAQ,SACRrX,YAAAA,IACCtnB,KAAKsoG,EAAAA,GACV,EA2jBEviC,WAzjBiB,SAAHqpC,GAA6D,IAAvD9nF,EAAW8nF,EAAX9nF,YAAaE,EAAM4nF,EAAN5nF,OAAQw4B,EAASovD,EAATpvD,UAAW3Z,EAAO+oE,EAAP/oE,QAASm/B,EAAO4pC,EAAP5pC,QAC7D,OAAO+gC,GAAgB,CACrBz+F,IA1rC6B,kBA2rC7B62B,OAAQ,OACR4c,QAAS,CACPzP,WAAYtkB,EACZ6nF,WAAYrvD,EACZ3Z,QAAAA,EACAm/B,QAAAA,GAEFl+C,YAAAA,GAEJ,EA8iBEyoB,2BAhqDiC,SAAH5pC,GAAkC,IAA5BmhB,EAAWnhB,EAAXmhB,YAAa7O,EAAQtS,EAARsS,SAC3C4lB,EAAO,IAAIC,SAMjB,OAJA5Q,IAAKjV,GAAU,SAAClR,EAAOyJ,GACrBqtB,EAAKE,OAAOvtB,EAAKzJ,EACnB,IAEOuL,GAAM,GAADlR,OAxJoB,qCAwJS,KAAAA,OAAI,IAAI8pG,gBAAgBjzF,IAAa,CAC5E8nB,QAASmmE,GAAYp/E,GACrBqX,OAAQ,MACRpqB,KAAM8pB,IACLr+B,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAqpDEgT,QAjiBc,SAAH02E,GAAoE,IAA9DhoF,EAAWgoF,EAAXhoF,YAAakR,EAAC82E,EAAD92E,EAAGz4B,EAAOuvG,EAAPvvG,QAAS04B,EAAK62E,EAAL72E,MAAOC,EAAM42E,EAAN52E,OAAQC,EAAS22E,EAAT32E,UAAW3wB,EAAIsnG,EAAJtnG,KAChEF,EA9sCoB,iBA+sClB2iC,EAAS,GAEXjS,GACFiS,EAAO9iC,KAAK,CAAC,IAAK63B,mBAAmBhH,KAGnCz4B,GACF0qC,EAAO9iC,KAAK,CAAC,UAAW5H,IAGtB04B,GACFgS,EAAO9iC,KAAK,CAAC,QAAS8wB,IAGpBC,GACF+R,EAAO9iC,KAAK,CAAC,SAAU+wB,IAGrBC,GACF8R,EAAO9iC,KAAK,CAAC,aAAa,IAGxBK,GACFyiC,EAAO9iC,KAAK,CAAC,YAAaK,IAG5ByiC,EAAO9iC,KAAK,CAAC,sBAAsB,IAEnC,IAAM6hG,EAAcxjE,IAAIyE,GAAQ,SAACg/D,GAAK,SAAA7nG,OAAQ6nG,EAAM,GAAE,KAAA7nG,OAAI6nG,EAAM,GAAE,IAAI76F,KAAK,KAG3E,OAFA9G,GAAO,IAAJlG,OAAQ4nG,GAEJ12F,GAAMhL,EAAK,CAAEy4B,QAASmmE,GAAYp/E,KACtCtnB,MAAK,SAACW,GACL,GAAIA,EAAKglB,GACP,OAAOhlB,EAET,MAAM,IAAIT,MAAM,+BAAgCS,EAClD,IACCX,MAAK,SAACW,GAAW,OAAOA,EAAKilB,MAAO,IACpC5lB,MAAK,SAACW,GAGL,OAFAA,EAAK4xB,SAAW5xB,EAAK4xB,SAAS9tB,MAAM,EAAGg0B,GAAOh5B,KAAI,SAAAo5B,GAAC,OAAI8tE,EAAAA,EAAAA,IAAU9tE,EAAE,IACnEl4B,EAAK8mB,SAAW9mB,EAAK8mB,SAAShjB,MAAM,EAAGg0B,GAAOh5B,KAAI,SAAA2H,GAAC,OAAIkhG,EAAAA,EAAAA,IAAYlhG,EAAE,IAC9DzG,CACT,GACJ,EAofE0pC,YA9iBkB,SAAHklE,GAA+B,IAAzBjoF,EAAWioF,EAAXjoF,YAAa/jB,EAAKgsG,EAALhsG,MAClC,OAAOgjG,GAAgB,CACrBz+F,IAlsC6B,0BAmsC7B2iC,OAAQ,CACNjS,EAAGj1B,EACHxD,SAAS,GAEXunB,YAAAA,IAECtnB,MAAK,SAACW,GAAI,OAAKA,EAAKlB,IAAIknG,EAAAA,GAAU,GACvC,EAqiBE6I,kBAnfwB,SAAHC,GAAwB,IAAlBnoF,EAAWmoF,EAAXnoF,YAC3B,OAAOi/E,GAAgB,CAAEz+F,IAzvCY,yBAyvCyBwf,YAAAA,GAChE,EAkfEwf,iBAhfuB,SAAH4oE,GAAwB,IAAlBpoF,EAAWooF,EAAXpoF,YAC1B,OAAOi/E,GAAgB,CAAEz+F,IAAK29F,GAA4Bn+E,YAAAA,GAC5D,EA+eEia,WA7eiB,SAAHouE,GAAgC,IAA1BnuE,EAAMmuE,EAANnuE,OAAQla,EAAWqoF,EAAXroF,YAC5B,OAAOi/E,GAAgB,CACrBz+F,IAAK29F,GACL9mE,OAAQ,OACR4c,QAAS,CAAE/Z,OAAAA,GACXla,YAAAA,GAEJ,EAueEma,aAremB,SAAHmuE,GAAgC,IAA1BpuE,EAAMouE,EAANpuE,OAAQla,EAAWsoF,EAAXtoF,YAC9B,OAAOi/E,GAAgB,CACrBz+F,IAAK29F,GACL9mE,OAAQ,SACR4c,QAAS,CAAE/Z,OAAAA,GACXla,YAAAA,GAEJ,EA+dEqkB,MAxSY,SAAHkkE,GAAwB,IAAlBvoF,EAAWuoF,EAAXvoF,YACf,OAAOxU,GAl8CiB,wBAk8CQ,CAAEytB,QAASmmE,GAAYp/E,KACpDtnB,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAACW,GACL,MAAO,CAAEgrC,MAAOhrC,EAAKlB,IAAI0mD,EAAAA,IAAWzkD,QAAO,SAAA24C,GAAC,OAAIA,CAAC,IACnD,GACJ,EAmSE+nC,gBAjSsB,SAAH0tB,GAAmC,IAx8C/BzvG,EAw8CEo5B,EAASq2E,EAATr2E,UAAWnS,EAAWwoF,EAAXxoF,YACpC,OAAOi/E,GAAgB,CACrBz+F,KA18CqBzH,EA08CCo5B,EA18CC,uCAAA73B,OAA2CvB,IA28ClEs+B,OAAQ,OACRrX,YAAAA,GAEJ,EA4RE46D,aA1RmB,SAAH6tB,GAAwD,IAAlD1vG,EAAE0vG,EAAF1vG,GAAIinB,EAAWyoF,EAAXzoF,YAAaS,EAAKgoF,EAALhoF,MAAOk6D,EAAO8tB,EAAP9tB,QAAO+tB,EAAAD,EAAEt3E,MAAAA,OAAK,IAAAu3E,EAAG,GAAEA,EAC7DloG,EAAMg+F,GAA0BzlG,GAC9B2c,EAAO,CACX+K,GAAS,UAAJnmB,OAAcmmB,GACnBk6D,GAAW,YAAJrgF,OAAgBqgF,GACvBxpD,GAAS,SAAJ72B,OAAa62B,IAClB/2B,QAAO,SAAA0O,GAAC,OAAIA,CAAC,IAAExB,KAAK,KAItB,OAAO23F,GAAgB,CACrBz+F,IAHFA,GAAakV,EAAO,IAAMA,EAAO,GAI/B2hB,OAAQ,MACRrX,YAAAA,GAEJ,EA4QE27D,gBA1QsB,SAAHgtB,GAAqE,IAA/D5vG,EAAE4vG,EAAF5vG,GAAI6H,EAAO+nG,EAAP/nG,QAAOgoG,EAAAD,EAAEvtB,QAAAA,OAAO,IAAAwtB,EAAG,KAAIA,EAAEztB,EAAcwtB,EAAdxtB,eAAgBn7D,EAAW2oF,EAAX3oF,YAChEi0B,EAAU,CACdrzC,QAAAA,GAGEw6E,IACFnnC,EAAQ40D,SAAWztB,GAGrB,IAAMniD,EAAU,CAAC,EAMjB,OAJIkiD,IACFliD,EAAQ,mBAAqBkiD,GAGxB8jB,GAAgB,CACrBz+F,IAAKg+F,GAA0BzlG,GAC/Bs+B,OAAQ,OACR4c,QAAAA,EACAj0B,YAAAA,EACAiZ,QAAAA,GAEJ,EAqPEgmB,SAnPe,SAAH6pD,GAAwC,IAAlC/vG,EAAE+vG,EAAF/vG,GAAImmD,EAAU4pD,EAAV5pD,WAAYl/B,EAAW8oF,EAAX9oF,YAClC,OAAOi/E,GAAgB,CACrBz+F,IAAKi+F,GAAsB1lG,GAC3Bs+B,OAAQ,OACR4c,QAAS,CACP80D,aAAc7pD,GAEhBl/B,YAAAA,GAEJ,EA2OEo/B,kBAzOwB,SAAH4pD,GAA2C,IAArCpiE,EAAMoiE,EAANpiE,OAAQ2V,EAASysD,EAATzsD,UAAWv8B,EAAWgpF,EAAXhpF,YAC9C,OAAOi/E,GAAgB,CACrBz+F,IAAKk+F,GAAgC93D,EAAQ2V,GAC7CllB,OAAQ,SACRrX,YAAAA,GAEJ,EAoOEs4B,eAlOqB,SAAH2wD,GAAmC,IAA7BlwG,EAAEkwG,EAAFlwG,GAAI4C,EAAKstG,EAALttG,MAAOqkB,EAAWipF,EAAXjpF,YAGnC,OAAOxU,GA3gDqB,6BA2gDQ,CAClCytB,QAAO9+B,EAAAA,EAAA,GACFilG,GAAYp/E,IAAY,IAC3Bm/E,OAAQ,mBACR,eAAgB,qBAElB9nE,OAAQ,QACRpqB,KAAMo0B,KAAKC,UAAU,CACnB2W,QAAS,CAAC,CACRl/C,GAAAA,EACA4C,MAAAA,QAIHjD,MAAK,SAAAW,GACJ,GAAIA,EAAKopB,QAAU,IACjB,MAAM7pB,MAAMS,EAAKi7B,YACZ,OAAIj7B,EAAKopB,QAAU,IACjBppB,EAAKilB,OAEPjlB,CACT,IACCX,MAAK,SAAAW,GACJ,GAAIA,EAAKg7B,OACP,MAAMz7B,MAAMS,EAAKg7B,OAAO,GAAGnH,QAE/B,GACJ,EAqMEoR,iBAzjDuB,SAAHzqB,GAA4B,IAAtB9a,EAAE8a,EAAF9a,GAAIinB,EAAWnM,EAAXmM,YACxBxf,EAjOuB,SAAAzH,GAAE,0BAAAuB,OAAwBvB,EAAE,UAiO7CmwG,CAAuBnwG,GACnC,OAAOyS,GAAMhL,EAAK,CAChBy4B,QAASmmE,GAAYp/E,KACpBtnB,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,GAC/B,EAqjDE8iC,mBAxdyB,SAAH+nD,GAAwB,IAAlBnpF,EAAWmpF,EAAXnpF,YAC5B,OAAOi/E,GAAgB,CAAEz+F,IA/xCQ,wBA+xCyBwf,YAAAA,GAC5D,EAudE+hC,oBArd0B,SAAHqnD,GAA4B,IAAtBrwG,EAAEqwG,EAAFrwG,GAAIinB,EAAWopF,EAAXppF,YACjC,OAAOi/E,GAAgB,CACrBz+F,IAAK49F,GAAmCrlG,GACxCinB,YAAAA,EACAqX,OAAQ,QAEZ,EAgdEgrB,iBA5buB,SAAHgnD,GAA2D,IAArDrpF,EAAWqpF,EAAXrpF,YAAapf,EAAOyoG,EAAPzoG,QAAS0hD,EAAQ+mD,EAAR/mD,SAAUC,EAAM8mD,EAAN9mD,OAAQC,EAAM6mD,EAAN7mD,OAClE,OAAOy8C,GAAgB,CACrBz+F,IAjzCkC,sCAkzClCwf,YAAAA,EACAqX,OAAQ,OACR4c,QAASurD,GAAsB,CAAE5+F,QAAAA,EAAS0hD,SAAAA,EAAUC,OAAAA,EAAQC,OAAAA,KAEhE,EAsbEC,iBApbuB,SAAH6mD,GAA+D,IAAzDvwG,EAAEuwG,EAAFvwG,GAAIinB,EAAWspF,EAAXtpF,YAAapf,EAAO0oG,EAAP1oG,QAAS0hD,EAAQgnD,EAARhnD,SAAUC,EAAM+mD,EAAN/mD,OAAQC,EAAM8mD,EAAN9mD,OACtE,OAAOy8C,GAAgB,CACrBz+F,IAAKo+F,GAA8B7lG,GACnCinB,YAAAA,EACAqX,OAAQ,QACR4c,QAASurD,GAAsB,CAAE5+F,QAAAA,EAAS0hD,SAAAA,EAAUC,OAAAA,EAAQC,OAAAA,KAEhE,EA8aEE,mBA5ayB,SAAH6mD,GAA4B,IAAtBxwG,EAAEwwG,EAAFxwG,GAAIinB,EAAWupF,EAAXvpF,YAChC,OAAOi/E,GAAgB,CACrBz+F,IAAKq+F,GAAgC9lG,GACrCinB,YAAAA,EACAqX,OAAQ,UAEZ,EAuaEsqB,wBAje8B,SAAH6nD,GAAwB,IAAlBxpF,EAAWwpF,EAAXxpF,YACjC,OAAOi/E,GAAgB,CAAEz+F,IA/wCO,sCA+wCyBwf,YAAAA,GAC3D,EAgeEwyB,sBAzM4B,SAAHi3D,GAAwB,IAAlBzpF,EAAWypF,EAAXzpF,YAC/B,OAAOxU,GAAMszF,GAA0B,CACrC7lE,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAAC07B,GACL,OAAIA,EAAS/V,GACJ+V,EAAS9V,OAET,CACLnS,MAAOioB,EAGb,GACJ,EA6LEue,gCA3LsC,SAAH+2D,GAAwB,IAAlB1pF,EAAW0pF,EAAX1pF,YACzC,OAAOxU,GAjjD8B,yCAijDQ,CAC3CytB,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAAC07B,GACL,OAAIA,EAAS/V,GACJ+V,EAAS9V,OAET,CACLnS,MAAOioB,EAGb,GACJ,EA+KEke,wBA7K8B,SAAHq3D,GAAwB,IAAlB3pF,EAAW2pF,EAAX3pF,YACjC,OAAOxU,GA/jD2B,+BA+jDQ,CACxCytB,QAASmmE,GAAYp/E,KAEpBtnB,MAAK,SAAC07B,GACL,OAAIA,EAAS/V,GACJ+V,EAAS9V,OAET,CACLnS,MAAOioB,EAGb,GACJ,EAiKE4f,qBA/J2B,SAAH41D,GAAiC,IAA3B5pF,EAAW4pF,EAAX5pF,YAAai0B,EAAO21D,EAAP31D,QAC3C,OAAOzoC,GAAMszF,GAA0B,CACrC7lE,QAAO9+B,EAAA,CACLglG,OAAQ,mBACR,eAAgB,oBACbC,GAAYp/E,IAEjBqX,OAAQ,OACRpqB,KAAMo0B,KAAKC,UAAU2S,KAEpBv7C,MAAK,SAAC07B,GACL,OAAIA,EAAS/V,GACJ+V,EAAS9V,OAET,CACLnS,MAAOioB,EAGb,GACJ,EA6IEy1E,gBA3IsB,SAAHC,GAAiC,IAA3B9pF,EAAW8pF,EAAX9pF,YAAai0B,EAAO61D,EAAP71D,QACtC,OAAOzoC,GAlmDmC,uCAkmDQ,CAChDytB,QAAO9+B,EAAA,CACLglG,OAAQ,mBACR,eAAgB,oBACbC,GAAYp/E,IAEjBqX,OAAQ,OACRpqB,KAAMo0B,KAAKC,UAAU2S,KAEpBv7C,MAAK,SAAC07B,GACL,OAAIA,EAAS/V,GACJ+V,EAAS9V,OAET,CACLnS,MAAOioB,EAGb,GACJ,E,wECnuDM21E,EAAgB,SAAAxpG,GAAK,OAAIrH,OAAOD,KAAKsH,GAAOwV,QAAO,SAACC,EAAKC,GAE7D,OADAD,EAAIg0F,IAAU/zF,IAAQ1V,EAAM0V,GACrBD,CACT,GAAG,CAAC,EAAE,C,svBCFC,IASMi0F,EAAU,SAAC3+E,EAAG4+E,EAAG3uG,GAC5B,GAAI+vB,QAAJ,CAIA,GAAa,MAATA,EAAE,IAAoB,gBAANA,EAClB,OAAOA,EAET,GAAiB,YAAbqO,EAAAA,EAAAA,GAAOrO,GAAgB,KAAA6+E,EACV7+E,EAAZA,EAAC6+E,EAAD7+E,EAAG4+E,EAACC,EAADD,EAAG3uG,EAAC4uG,EAAD5uG,CACX,CAAC,IAAAmjC,EACW,CAACpT,EAAG4+E,EAAG3uG,GAAGpD,KAAI,SAAA2nE,GAIxB,OAFAA,GADAA,EAAMjlE,KAAKy1E,KAAKxQ,IACJ,EAAI,EAAIA,GACR,IAAM,IAAMA,CAE1B,IAAEsqC,GAAAzrG,EAAAA,EAAAA,GAAA+/B,EAAA,GACF,OANCpT,EAAC8+E,EAAA,GAAEF,EAACE,EAAA,GAAE7uG,EAAC6uG,EAAA,GAMD,IAAP9vG,SAAa,GAAK,KAAOgxB,GAAK,KAAO4+E,GAAK,GAAK3uG,GAAGwL,SAAS,IAAI5J,MAAM,GAdrE,CAeF,EAyCaktG,EAAoB,SAACC,GAChC,IAAAC,EAbmB,SAACD,GACpB,MAAO,MAAMn2D,MAAM,IAAIp+B,QAAO,SAACC,EAAK+8B,GAAoC,OAA5B/8B,EAAI+8B,GAnBjC,SAACy3D,GAKhB,IAAMz3D,EAAIy3D,EAAM,IAChB,OAAIz3D,EAAI,OACCA,EAAI,MAEJl4C,KAAK+gF,KAAK7oC,EAAI,MAAS,MAAO,IAEzC,CAQuD03D,CAASH,EAAKv3D,IAAY/8B,CAAI,GAAG,CAAC,EACzF,CAWsB00F,CAAaJ,GACjC,MAAO,MADEC,EAADj/E,EACY,MADRi/E,EAADL,EACsB,MADlBK,EAADhvG,CAEhB,EAUaovG,EAAmB,SAACrvG,EAAGC,GAClC,IAAMijB,EAAK6rF,EAAkB/uG,GACvBmjB,EAAK4rF,EAAkB9uG,GAC7BE,EAAiB+iB,EAAKC,EAAK,CAACD,EAAIC,GAAM,CAACA,EAAID,GAAGliB,GAAAqC,EAAAA,EAAAA,GAAAlD,EAAA,GAE9C,OAFSa,EAAA,GAEI,MAFAA,EAAA,GAEc,IAC7B,EASasuG,EAAyB,SAACxrG,EAAMyrG,EAAQC,GACnD,OAAOH,EAAiBI,EAAiBD,EAASD,GAASzrG,EAC7D,EAUa4rG,EAAa,SAACC,EAAIC,EAAKC,GAClC,OAAY,IAARD,QAA4B,IAARA,EAA4BD,EAC7C,MAAM92D,MAAM,IAAIp+B,QAAO,SAACC,EAAK+8B,GAIlC,OADA/8B,EAAI+8B,GAAMk4D,EAAGl4D,GAAKm4D,EAAMC,EAAGp4D,IAAM,EAAIm4D,GAC9Bl1F,CACT,GAAG,CAAC,EACN,EAQa+0F,EAAmB,SAACD,EAASD,GAAM,OAAKA,EAAO90F,QAAO,SAACC,EAAGpX,GAAuB,IAAAC,GAAAF,EAAAA,EAAAA,GAAAC,EAAA,GAApBo8F,EAAKn8F,EAAA,GAAE6+D,EAAO7+D,EAAA,GACtF,OAAOmsG,EAAWhQ,EAAOt9B,EAAS1nD,EACpC,GAAG80F,EAAQ,EAeEM,EAAU,SAACC,GACtB,IAAMttG,EAAS,4CAA4CC,KAAKqtG,GAChE,OAAOttG,EACH,CACEutB,EAAG0oE,SAASj2F,EAAO,GAAI,IACvBmsG,EAAGlW,SAASj2F,EAAO,GAAI,IACvBxC,EAAGy4F,SAASj2F,EAAO,GAAI,KAEzB,IACN,EASautG,EAAS,SAAChwG,EAAGC,GACxB,MAAO,MAAM44C,MAAM,IAAIp+B,QAAO,SAACC,EAAKrb,GAElC,OADAqb,EAAIrb,IAAMW,EAAEX,GAAKY,EAAEZ,IAAM,EAClBqb,CACT,GAAG,CAAC,EACN,EAOau1F,EAAW,SAAUC,GAChC,MAAO,QAAPlxG,OAAeO,KAAK02E,MAAMi6B,EAAKlgF,GAAE,MAAAhxB,OAAKO,KAAK02E,MAAMi6B,EAAKtB,GAAE,MAAA5vG,OAAKO,KAAK02E,MAAMi6B,EAAKjwG,GAAE,MAAAjB,OAAKkxG,EAAKlwG,EAAC,IAC5F,EAYamwG,EAAe,SAAUN,EAAI/rG,EAAMssG,GAG9C,GAFiBf,EAAiBQ,EAAI/rG,GAEvB,IAAK,CAClB,IAAMusG,OAAyB,IAAXvsG,EAAK9D,EAAoB,CAAEA,EAAG8D,EAAK9D,GAAM,CAAC,EACxDyC,EAAS7E,OAAOqlB,OAAOotF,GAAMC,EAAAA,EAAAA,IAAgBxsG,GAAMysG,KACzD,OAAKH,GAAYf,EAAiBQ,EAAIptG,GAAU,KAEvC+tG,EAAAA,EAAAA,IAAcX,EAAI/rG,GAAMysG,IAG1B9tG,CACT,CACA,OAAOqB,CACT,EASa2sG,EAAc,SAACnyG,EAAO0B,GACjC,IAAIuwG,EAAM,CAAC,EACX,GAAqB,YAAjBlyE,EAAAA,EAAAA,GAAO//B,GACTiyG,EAAMjyG,OACD,GAAqB,iBAAVA,EAAoB,CACpC,IAAIA,EAAMuB,WAAW,KAGnB,OAAOvB,EAFPiyG,EAAMT,EAAQxxG,EAIlB,CACA,OAAO2xG,EAAQpxG,EAAAA,EAAC,CAAC,EAAI0xG,GAAG,IAAEvwG,EAAAA,IAC5B,C,wEC3NM0Q,EAAoB,SAACggG,GAAS,OAFR,SAACA,GAAS,OAAMC,IAAWD,GAAcA,EAAUryB,QAAUqyB,CAAS,CAEzDE,CAAoBF,GAAWzrG,KAAK,C,qFCJtE,IAAM4rG,EAAS,IACTC,EAAS,IACTC,EAAO,KACPrpB,EAAM,GAAKqpB,EACXC,EAAO,EAAItpB,EACXupB,EAAQ,GAAKvpB,EACbwpB,EAAO,OAASxpB,EAEhBypB,EAAe,SAAC7wD,GAA2B,IAArB8wD,EAAY9uG,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,EAC5B,iBAATg+C,IAAmBA,EAAOzkB,KAAK+hB,MAAM0C,IAChD,IAAM+wD,EAAQx1E,KAAK2U,MAAQ8P,EAAO/gD,KAAK02E,MAAQ12E,KAAKy1E,KAC9C78B,EAAI54C,KAAK42E,IAAIt6C,KAAK2U,MAAQ8P,GAC1BtwB,EAAI,CAAEuiC,IAAK8+C,EAAMl5D,EAAI+4D,GAAO9iG,IAAK,mBAuBvC,OAtBI+pC,EAAIi5D,EAAeP,GACrB7gF,EAAEuiC,IAAM,EACRviC,EAAE5hB,IAAM,YACC+pC,EAAI24D,GACb9gF,EAAEuiC,IAAM8+C,EAAMl5D,EAAI04D,GAClB7gF,EAAE5hB,IAAM,qBACC+pC,EAAI44D,GACb/gF,EAAEuiC,IAAM8+C,EAAMl5D,EAAI24D,GAClB9gF,EAAE5hB,IAAM,qBACC+pC,EAAIuvC,GACb13D,EAAEuiC,IAAM8+C,EAAMl5D,EAAI44D,GAClB/gF,EAAE5hB,IAAM,mBACC+pC,EAAI64D,GACbhhF,EAAEuiC,IAAM8+C,EAAMl5D,EAAIuvC,GAClB13D,EAAE5hB,IAAM,kBACC+pC,EAAI84D,GACbjhF,EAAEuiC,IAAM8+C,EAAMl5D,EAAI64D,GAClBhhF,EAAE5hB,IAAM,mBACC+pC,EAAI+4D,IACblhF,EAAEuiC,IAAM8+C,EAAMl5D,EAAI84D,GAClBjhF,EAAE5hB,IAAM,oBAEH4hB,CACT,EAEashF,EAAoB,SAAChxD,GAA2B,IAArB8wD,EAAY9uG,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,EAC/C0tB,EAAImhF,EAAa7wD,EAAM8wD,GAE7B,OADAphF,EAAE5hB,KAAO,SACF4hB,CACT,EAEauhF,EAAgB,SAAC/+C,EAAMsiB,GAClC,OAAQtiB,GACN,IAAK,UAAW,MAAO,KAAQsiB,EAASg8B,EACxC,IAAK,QAAS,MAAO,KAAQh8B,EAASi8B,EACtC,IAAK,OAAQ,MAAO,KAAQj8B,EAAS4S,EAEzC,EAEa8pB,EAAgB,SAACh/C,EAAMsiB,GAClC,OAAQtiB,GACN,IAAK,UAAW,OAAQ,IAAOsiB,EAAUg8B,EACzC,IAAK,QAAS,OAAQ,IAAOh8B,EAAUi8B,EACvC,IAAK,OAAQ,OAAQ,IAAOj8B,EAAU4S,EAE1C,C,gDC1DO,IAAMl+C,EAA0B,SAAC3xB,EAAW45F,GACjD,GAAM,iBAAkBzrG,QAA6C,YAAnCA,OAAOuiC,aAAazxB,aAClDe,EAAUgN,SAASqB,cAAcR,2BAArC,CAEA,IAAMgsF,EAAsB,IAAI1rG,OAAOuiC,aAAakpE,EAAwB15F,MAAO05F,GAGnF5wG,WAAW6wG,EAAoB9lE,MAAM+lE,KAAKD,GAAsB,IALU,CAM5E,C,iwBCMA,IAyBa3N,EAAY,SAAChmG,GACxB,IAAM6zG,EAAS,CAAC,EACVC,EAAQj0G,OAAO4N,UAAU6f,eAAe3f,KAAK3N,EAAM,QAEnD+zG,EAAaD,IAAUj0G,OAAO4N,UAAU6f,eAAe3f,KAAK3N,EAAM,UAMxE,GAJA6zG,EAAOlxE,QAAU,KACjBkxE,EAAOn0G,GAAK4H,OAAOtH,EAAKN,IACxBm0G,EAAOnjE,UAAY1wC,EAEf8zG,EAAO,CAMT,GALAD,EAAOhwG,YAAc7D,EAAKm1D,KAC1B0+C,EAAOx/D,IAAMr0C,EAAKq0C,IAClBw/D,EAAOjnG,sBAAwB5M,EAAKmH,IAGhC4sG,EACF,OAAOF,EAqCT,GAlCAA,EAAO1zG,MAAQH,EAAKU,OACpBmzG,EAAOjyG,KAAOoyG,IAAOh0G,EAAKi0G,cAC1BJ,EAAOr6B,UAAYq6B,EAAOjyG,KAC1BiyG,EAAOK,eAAiBl0G,EAAKi0G,aAE7BJ,EAAO55D,YAAcj6C,EAAKm0G,KAE1BN,EAAOO,iBAAmBp0G,EAAKm0G,KAE/BN,EAAOQ,OAASr0G,EAAKq0G,OACrBR,EAAO9tB,YAAc/lF,EAAKq0G,OAAOv1G,KAAI,SAAAknF,GACnC,MAAO,CACLpkF,KAAMoyG,IAAOhuB,EAAMpkF,MACnBgF,MAAOo/E,EAAMp/E,MAEjB,IACAitG,EAAO5tB,YAAcjmF,EAAKq0G,OAAOv1G,KAAI,SAAAknF,GACnC,MAAO,CACLpkF,KAAM0yG,SAAStuB,EAAMpkF,KAAKmD,QAAQ,WAAY,KAC9C6B,MAAO0tG,SAAStuB,EAAMp/E,MAAM7B,QAAQ,WAAY,KAEpD,IAGA8uG,EAAOvoE,kBAAoBtrC,EAAKk1D,OAChC2+C,EAAO1vG,2BAA6BnE,EAAKk1D,OAGzC2+C,EAAOU,YAAcv0G,EAAK22E,OAE1Bk9B,EAAO1tB,cAAgBnmF,EAAKw0G,gBAE5BX,EAAOY,IAAMz0G,EAAKy0G,IAEdz0G,EAAK8yF,QAAS,CACZ9yF,EAAK8yF,QAAQ4hB,iBACfb,EAAOz/D,QAAUp0C,EAAK8yF,QAAQ4hB,eAAe,eAE/C,IAAMv0E,EAAengC,EAAK8yF,QAAQ3yD,aAElC0zE,EAAOxqC,iBAAmBrpE,EAAK8yF,QAAQzpB,iBACvCwqC,EAAOc,QAAU30G,EAAK8yF,QAAQ6hB,QAC9Bd,EAAOv0E,MAAQt/B,EAAK8yF,QAAQ8hB,WAExBz0E,IACF0zE,EAAO1zE,aAAeA,GAGxB0zE,EAAO/6B,qBAAuB94E,EAAK8yF,QAAQha,qBAE3C+6B,EAAOtvB,aAAevkF,EAAK8yF,QAAQvO,aACnCsvB,EAAOpvB,eAAiBzkF,EAAK8yF,QAAQrO,eACrCovB,EAAOgB,mBAAqB70G,EAAK8yF,QAAQ+hB,mBACzChB,EAAOiB,qBAAuB90G,EAAK8yF,QAAQgiB,qBAE3CjB,EAAOvyE,OAAS,CACd2sD,UAAWjuF,EAAK8yF,QAAQiiB,aACxB/mB,MAAOhuF,EAAK8yF,QAAQkiB,UAGlBnB,EAAOvyE,OAAO0sD,MAChB6lB,EAAOh0C,KAAO,QACLg0C,EAAOvyE,OAAO2sD,UACvB4lB,EAAOh0C,KAAO,YAEdg0C,EAAOh0C,KAAO,SAGhBg0C,EAAOjvB,SAAW5kF,EAAK8yF,QAAQlO,SAE3B5kF,EAAK8yF,QAAQ7qC,WACf4rD,EAAO5rD,WAAajoD,EAAK8yF,QAAQ7qC,WACxBjoD,EAAK8yF,QAAQkiB,SACtBnB,EAAO5rD,WAAa,CAClB,aACA,uBACA,gCACA,oBACA,2BACA,eACA,gBACA,kBACA,mBACA,yBACA,sBACA,qCACA,qBACA,mBAEOjoD,EAAK8yF,QAAQiiB,aACtBlB,EAAO5rD,WAAa,CAClB,kBACA,0BAGF4rD,EAAO5rD,WAAa,EAExB,CAEIjoD,EAAKimB,SACP4tF,EAAO55D,YAAcj6C,EAAKimB,OAAOkuF,KACjCN,EAAOoB,cAAgBj1G,EAAKimB,OAAOivF,QACnCrB,EAAOQ,OAASr0G,EAAKimB,OAAOouF,OACxBr0G,EAAKimB,OAAO6sE,UACd+gB,EAAOsB,aAAen1G,EAAKimB,OAAO6sE,QAAQqiB,aAC1CtB,EAAOuB,UAAYp1G,EAAKimB,OAAO6sE,QAAQsiB,UACvCvB,EAAOjkE,aAAe5vC,EAAKimB,OAAO6sE,QAAQljD,aAC1CikE,EAAOwB,cAAgBr1G,EAAK8yF,QAAQuiB,gBAKxCxB,EAAO3uC,UAAY2uC,EAAOhwG,YAAYH,SAAS,IACjD,MACEmwG,EAAOhwG,YAAc7D,EAAK6D,YAE1BgwG,EAAOjyG,KAAO5B,EAAK4B,KACnBiyG,EAAOr6B,UAAYx5E,EAAKw5E,UAExBq6B,EAAO55D,YAAcj6C,EAAKi6C,YAC1B45D,EAAOO,iBAAmBp0G,EAAKo0G,iBAE/BP,EAAOvoE,kBAAoBtrC,EAAKsrC,kBAChCuoE,EAAO1vG,2BAA6BnE,EAAKmE,2BAEzC0vG,EAAOU,YAAcv0G,EAAKu0G,YAE1BV,EAAO1tB,cAAgBnmF,EAAKmmF,cAI5B0tB,EAAOjnG,sBAAwB5M,EAAK4M,sBAEpCinG,EAAO3uC,SAAWllE,EAAKklE,SACvB2uC,EAAOh0C,KAAO7/D,EAAK6/D,KACnBg0C,EAAOuB,UAAYp1G,EAAKo1G,UAEpBp1G,EAAKshC,SACPuyE,EAAOvyE,OAAS,CACd2sD,UAAWjuF,EAAKshC,OAAOg0E,qBACvBtnB,MAAOhuF,EAAKshC,OAAO0sD,QAGvB6lB,EAAOsB,aAAen1G,EAAKm1G,aAC3BtB,EAAOoB,cAAgBj1G,EAAKi1G,cAC5BpB,EAAOtvB,aAAevkF,EAAKukF,aAC3BsvB,EAAOpvB,eAAiBzkF,EAAKykF,eAC7BovB,EAAOgB,mBAAqB70G,EAAK60G,mBACjChB,EAAOiB,qBAAuB90G,EAAK80G,qBACnCjB,EAAOxqC,iBAAmBrpE,EAAKqpE,iBAE/BwqC,EAAOv0E,MAAQt/B,EAAKs/B,MAGpBu0E,EAAO1zE,aAAe,CACpBO,OAAQ1gC,EAAKu1G,MACbC,SAAUx1G,EAAKy1G,mBACfnyB,YAAatjF,EAAK01G,YAClB19E,UAAWh4B,EAAKg4B,WA8BpB,GA1BA67E,EAAO1+D,WAAa,IAAIrX,KAAK99B,EAAKm1C,YAClC0+D,EAAOnpE,OAAS1qC,EAAK0qC,OACrBmpE,EAAOvtB,gBAAkBtmF,EAAKsmF,gBAC9ButB,EAAO3tB,eAAiBlmF,EAAKkmF,eAEzBlmF,EAAK8yF,UACP+gB,EAAO8B,qBAAuB31G,EAAK8yF,QAAQ6iB,qBAE3C9B,EAAO9wF,KAAO/iB,EAAK8yF,QAAQ/vE,KAI3B8wF,EAAOryE,iBAAgD,IAA3BxhC,EAAK8yF,QAAQjsD,WACpC7mC,EAAK8yF,QAAQjsD,UACd7mC,EAAK8yF,QAAQtxD,YAEjBqyE,EAAO+B,sBAAwB51G,EAAK8yF,QAAQ8iB,sBAC5C/B,EAAOgC,kBAAoB71G,EAAK8yF,QAAQ+iB,mBAG1ChC,EAAO9wF,KAAO8wF,EAAO9wF,MAAQ,GAC7B8wF,EAAOvyE,OAASuyE,EAAOvyE,QAAU,CAAC,EAClCuyE,EAAO+B,sBAAwB/B,EAAO+B,uBAAyB,CAAC,EAGhE/B,EAAO5vG,eAAiB4vG,EAAOhwG,YAC3BgwG,EAAOhwG,aAAegwG,EAAOhwG,YAAYH,SAAS,KAAM,CAC1D,IAAMoyG,EAAQjC,EAAOhwG,YAAYi3C,MAAM,KACjCi7D,EAAgBC,EAAAA,GAAAA,UAAmBF,EAAM,IAC3CC,IAAkBD,EAAM,IAG1BjC,EAAOoC,mCAAoC,EAC3CpC,EAAO5vG,eAAiB,CAAC6xG,EAAM,GAAIC,GAAe9nG,KAAK,MAEvD4lG,EAAOoC,mCAAoC,CAE/C,CAEA,OAAOpC,CACT,EAEahJ,EAAkB,SAAC7qG,GAC9B,IAAM6zG,EAAS,CAAC,EAiBhB,OAhBeh0G,OAAO4N,UAAU6f,eAAe3f,KAAK3N,EAAM,UAQxD6zG,EAAOz1D,SAAWp+C,EAAKo+C,UAJvBy1D,EAAOz1D,SAAWp+C,EAAK8yF,QAAU9yF,EAAK8yF,QAAQojB,UAAYl2G,EAAKqH,KAC/DwsG,EAAOzf,KAAOp0F,EAAKo0F,KACnByf,EAAOn0G,GAAKM,EAAKN,IAMnBm0G,EAAO1sG,IAAMnH,EAAKmH,IAClB0sG,EAAOsC,gBAAkBn2G,EAAKwrC,YAC9BqoE,EAAO55D,YAAcj6C,EAAKi6C,YAEnB45D,CACT,EAEazK,EAAc,SAACppG,GAC1B,IAAM6zG,EAAS,CAAC,EAMhB,OAJAA,EAAO9tG,KAAO/F,EAAK+F,KACnB8tG,EAAOuC,aAAep2G,EAAKo2G,aAC3BvC,EAAOwC,aAAer2G,EAAKq2G,aAEpBxC,CACT,EAEalM,EAAc,SAAdA,EAAe3nG,GAC1B,IAAM6zG,EAAS,CAAC,EACVC,EAAQj0G,OAAO4N,UAAU6f,eAAe3f,KAAK3N,EAAM,WAEzD,GAAI8zG,EAAO,CAmBT,GAlBAD,EAAOznF,UAAYpsB,EAAKs2G,WACxBzC,EAAOxnF,SAAWrsB,EAAKu2G,iBAEvB1C,EAAOllF,SAAW3uB,EAAKw2G,UACvB3C,EAAOjlF,WAAa5uB,EAAKy2G,cAEzB5C,EAAO7kF,WAAahvB,EAAKgvB,WAEzB6kF,EAAOxsG,KAAOrH,EAAKuoC,OAAS,UAAY,SACxCsrE,EAAOtkF,KAAOvvB,EAAK4mE,UAEnBitC,EAAOn5B,SAAW16E,EAAKuH,QACvBssG,EAAOnzG,OAASV,EAAKU,OAErBmzG,EAAO9wF,KAAO/iB,EAAK+iB,KAEnB8wF,EAAO6C,UAAY12G,EAAK02G,UAEpB12G,EAAK8yF,QAAS,CAChB,IAAQA,EAAY9yF,EAAZ8yF,QACR+gB,EAAO9tG,KAAO+sF,EAAQvrF,QAAUvH,EAAK8yF,QAAQvrF,QAAQ,cAAgBvH,EAAKuH,QAC1EssG,EAAOp5B,QAAUqY,EAAQsjB,aAAep2G,EAAK8yF,QAAQsjB,aAAa,cAAgBp2G,EAAKo2G,aACvFvC,EAAO3pF,0BAA4BlqB,EAAK8yF,QAAQ6jB,gBAChD9C,EAAO3uC,SAAW4tB,EAAQ8jB,MAC1B/C,EAAOgD,wBAA0B72G,EAAK8yF,QAAQgkB,yBAC9CjD,EAAOplF,aAAeqkE,EAAQrkE,aAC9BolF,EAAOviF,gBAAkBwhE,EAAQxhE,gBACjCuiF,EAAOkD,oBAA4C5sG,IAA3B2oF,EAAQikB,gBAAsCjkB,EAAQikB,eAC9ElD,EAAOnoF,MAAQonE,EAAQpnE,MAAQi8E,EAAY7U,EAAQpnE,YAASvhB,EAC5D0pG,EAAOmD,SAAWlkB,EAAQkkB,SAAWlkB,EAAQkkB,SAAYnD,EAAOnoF,MAAQmoF,EAAOnoF,MAAMhsB,QAAKyK,EAC1F0pG,EAAOoD,UAAYnkB,EAAQmkB,UAC3BpD,EAAOqD,cAAgBpkB,EAAQokB,aACjC,MACErD,EAAO9tG,KAAO/F,EAAKuH,QACnBssG,EAAOp5B,QAAUz6E,EAAKo2G,aAGxBvC,EAAO1nF,sBAAwBnsB,EAAKm3G,eACpCtD,EAAOuD,oBAAsBp3G,EAAKq3G,uBAClCxD,EAAOyD,cAAgBt3G,EAAKs3G,cAER,YAAhBzD,EAAOxsG,OACTwsG,EAAO9nF,iBAAmB47E,EAAY3nG,EAAKuoC,SAG7CsrE,EAAO0D,iBAAmBvD,IAAOh0G,EAAKo2G,cACtCvC,EAAO2D,aAAex3G,EAAKmH,IAC3B0sG,EAAOzhF,KAAOpyB,EAAKoyB,KACfyhF,EAAOzhF,OACTyhF,EAAOzhF,KAAKkuD,SAAWuzB,EAAOzhF,KAAKkuD,SAAW,IAAIxhF,KAAI,SAAAknF,GAAK,OAAAllF,EAAAA,EAAA,GACtDklF,GAAK,IACRyxB,WAAYzD,IAAOhuB,EAAMhsE,QAAM,KAGnC65F,EAAO9vE,OAAS/jC,EAAK+jC,OACrB8vE,EAAO0B,MAAQv1G,EAAKu1G,KACtB,MACE1B,EAAOznF,UAAYpsB,EAAKosB,UACxBynF,EAAOxnF,SAAWrsB,EAAKqsB,SAEvBwnF,EAAOllF,SAAW3uB,EAAK2uB,SACvBklF,EAAOjlF,WAAa5uB,EAAK4uB,WAKzBilF,EAAOxsG,KA/Ve,SAAC+hB,GACzB,OAAIA,EAAOsuF,aACF,SAGLtuF,EAAO2C,iBACF,UAGkB,iBAAf3C,EAAOoD,KAAoBpD,EAAOoD,IAAIprB,MAAM,gCAC5B,iBAAhBgoB,EAAOrjB,MAAqBqjB,EAAOrjB,KAAK3E,MAAM,aACjD,WAGLgoB,EAAOrjB,KAAK3E,MAAM,yBAA2BgoB,EAAOuuF,sBAC/C,WAGLvuF,EAAOrjB,KAAK3E,MAAM,sBAAiD,WAAzBgoB,EAAOwuF,cAC5C,SAGF,SACT,CAwUkBC,CAAkB73G,QAEdmK,IAAdnK,EAAKuvB,MACPskF,EAAOtkF,KAAOuoF,EAAO93G,GACjBA,EAAK+rB,mBACP8nF,EAAOtkF,KAAOvvB,EAAK+rB,iBAAiBwD,OAGtCskF,EAAOtkF,KAAOvvB,EAAKuvB,KAGrBskF,EAAOn5B,SAAW16E,EAAK+3G,eACvBlE,EAAO9tG,KAAO/F,EAAK+F,KAEnB8tG,EAAO1nF,sBAAwBnsB,EAAKmsB,sBACpC0nF,EAAOuD,oBAAsBp3G,EAAKo3G,oBAClCvD,EAAOgD,wBAA0B72G,EAAK62G,wBACtChD,EAAO3pF,0BAA4BlqB,EAAKkqB,0BAEpB,YAAhB2pF,EAAOxsG,OACTwsG,EAAO9nF,iBAAmB47E,EAAY3nG,EAAK+rB,mBAG7C8nF,EAAOp5B,QAAUz6E,EAAKy6E,QACtBo5B,EAAOmE,aAAeh4G,EAAKg4G,aAC3BnE,EAAO2D,aAAex3G,EAAKw3G,aAC3B3D,EAAO3uC,SAAWllE,EAAKklE,SAGzB2uC,EAAOn0G,GAAK4H,OAAOtH,EAAKN,IACxBm0G,EAAOpoF,WAAazrB,EAAKyrB,WACzBooF,EAAOoE,KAAOj4G,EAAKi4G,KACnBpE,EAAO1+D,WAAa,IAAIrX,KAAK99B,EAAKm1C,YAGlC0+D,EAAO1nF,sBAAwB0nF,EAAO1nF,sBAClC7kB,OAAOusG,EAAO1nF,uBACd,KACJ0nF,EAAOuD,oBAAsBvD,EAAOuD,oBAChC9vG,OAAOusG,EAAOuD,qBACd,KAEJvD,EAAOjwG,KAAOoiG,EAAU8N,EAAQ9zG,EAAKqrC,QAAUrrC,EAAK4D,MAEpDiwG,EAAO5qG,aAAe6qG,EAAQ9zG,EAAKsoB,SAAWtoB,EAAKiJ,aAAe,IAAInK,IAAIknG,GAE1E6N,EAAO5qF,cAAgB6qF,EAAQ9zG,EAAKk4G,kBAAoBl4G,EAAKipB,cAAgB,IAC1EnqB,IAAI+rG,GAEP,IAAM/+E,EAAkBgoF,EAAQ9zG,EAAKuoC,OAASvoC,EAAK+rB,iBAYnD,OAXID,IACF+nF,EAAO9nF,iBAAmB47E,EAAY77E,IAGxC+nF,EAAOtlF,YAAc,GACrBslF,EAAO/kF,YAAc,GAEjBjvB,OAAO4N,UAAU6f,eAAe3f,KAAK3N,EAAM,mBAC7CH,OAAOqlB,OAAO2uF,EAAQ7zG,EAAKqpG,gBAGtBwK,CACT,EAEajM,EAAoB,SAAC5nG,GAChC,IAKM6zG,EAAS,CAAC,EAEhB,GAHeh0G,OAAO4N,UAAU6f,eAAe3f,KAAK3N,EAAM,SAqBnD,CACL,IAAMm4G,EAAexQ,EAAY3nG,EAAKsZ,QACtCu6F,EAAOxsG,KAAOrH,EAAKo4G,MACnBvE,EAAOtmF,KAAOpkB,QAAQnJ,EAAKq4G,SAC3BxE,EAAOzqF,OAAyB,SAAhByqF,EAAOxsG,KACnBsgG,EAAY3nG,EAAKsZ,OAAOg/F,kBACxBH,EACJtE,EAAOnnF,OAASyrF,EAChBtE,EAAO3vE,aAA+B,yBAAhB2vE,EAAOxsG,KAAkC2+F,EAAUhmG,EAAKqrC,SAAW26D,EAAUhmG,EAAKkkC,aAC1G,MA1BE2vE,EAAOxsG,KARS,CAChB+gC,UAAW,OACXG,OAAQ,UAMgBvoC,EAAKqH,OAASrH,EAAKqH,KAC3CwsG,EAAOtmF,KAAOvtB,EAAK8yF,QAAQulB,QAC3BxE,EAAOzqF,QAASgE,EAAAA,EAAAA,IAAqBymF,EAAOxsG,MAAQsgG,EAAY3nG,EAAKopB,QAAU,KAC/EyqF,EAAOnnF,OAASmnF,EAAOzqF,OACvByqF,EAAOrrG,OAAyB,SAAhBqrG,EAAOxsG,KACnB,KACA2+F,EAAUhmG,EAAKwI,QACnBqrG,EAAO3vE,aAAe8hE,EAAUhmG,EAAKqrC,SACrCwoE,EAAO1zG,MAAQH,EAAKG,MACpB0zG,EAAO0E,UAAYv4G,EAAKu4G,UACpBv4G,EAAKqtB,SACPwmF,EAAOxmF,OAASrtB,EAAKqtB,OACrBwmF,EAAOxmF,OAAO9lB,QAAUvH,EAAKqtB,OAAO9lB,QACpCssG,EAAOxmF,OAAO8nC,KAAO6wC,EAAUhmG,EAAKqtB,OAAOge,SAC3CwoE,EAAOxmF,OAAOmrF,MAAQxS,EAAUhmG,EAAKqtB,OAAOmrF,OAC5C3E,EAAOxmF,OAAOvG,SAAW9mB,EAAKqtB,OAAOvG,SAAShoB,IAAI6oG,IAgBtD,OAHAkM,EAAO1+D,WAAa,IAAIrX,KAAK99B,EAAKm1C,YAClC0+D,EAAOn0G,GAAKi7F,SAAS36F,EAAKN,IAEnBm0G,CACT,EAEMiE,EAAS,SAAC1uF,GAEd,OAAQA,EAAOrG,MAAQ,IAAIrf,SAAS,YAAc0lB,EAAOrjB,MAAQ,IAAI3E,MADnD,SAEpB,EAEa2nG,EAA4B,SAAC0P,GAA0B,IAAdrtE,EAAI7mC,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,CAAC,EACtDykG,EAAU59D,EAAK49D,QACf0P,EAAmBC,IAAgBF,GACzC,GAAKC,EAAL,CACA,IAAMtxF,EAAQsxF,EAAiBl1G,KAAKo1G,OAC9BvxF,EAAQqxF,EAAiBn1G,KAAKs1G,OAEpC,MAAO,CACLzxF,MAAO4hF,EAAU5hF,EAAQuzE,SAASvzE,EAAO,IACzCC,MAAO2hF,EAAU3hF,EAAQszE,SAAStzE,EAAO,IANd,CAQ/B,EAEam+B,EAAY,SAAC1a,GACxB,IAAM+oE,EAAS,CAAC,EAMhB,OALAA,EAAOn0G,GAAKorC,EAAKprC,GACjBm0G,EAAOxoE,QAAU26D,EAAUl7D,EAAKO,SAChCwoE,EAAOrtD,OAAS1b,EAAK0b,OACrBqtD,EAAO9oE,YAAcic,EAAiBlc,EAAKguE,cAC3CjF,EAAOptD,WAAa,IAAI3oB,KAAKgN,EAAK2b,YAC3BotD,CACT,EAEa7sD,EAAmB,SAACnzB,GAC/B,GAAKA,EAAL,CACA,GAAIA,EAAQmuD,aAAgB,OAAOnuD,EACnC,IAAMggF,EAAShgF,EAef,OAdAggF,EAAOn0G,GAAKm0B,EAAQn0B,GACpBm0G,EAAO1+D,WAAa,IAAIrX,KAAKjK,EAAQshB,YACrC0+D,EAAOvyD,QAAUztB,EAAQytB,QACzBuyD,EAAOnzG,OAASmzB,EAAQnzB,OACxBmzG,EAAOtsG,QAAUssB,EAAQtsB,QACrBssB,EAAQ0X,WACVsoE,EAAO5qF,YAAc,CAAC4hF,EAAgBh3E,EAAQ0X,aAE9CsoE,EAAO5qF,YAAc,GAEvB4qF,EAAOnyD,UAAY7tB,EAAQ6tB,QAC3BmyD,EAAO/gG,OAAQ,EACf+gG,EAAOlyD,gBAAkB9tB,EAAQ8tB,gBACjCkyD,EAAO7xB,cAAe,EACf6xB,CAjBgB,CAkBzB,C,+BCvgBA,IACQkF,EACAC,EACAC,EAmBAC,EAEAC,E,iBA0CR,SAjEQJ,EAAW,GACXC,EAAe,IACfC,EAAgB,IAmBhBC,EAAgB,SAACjkD,GAAG,OAAKA,EAAImkD,UAAkC,IAAtBnkD,EAAIokD,aAAmB,EAmC/D,CACLC,mBApDyB,WACX3lG,SAAS4lG,iBAAiB,oBAClCr2F,SAAQ,SAAAyxF,GACZ,GAAIA,EAAS,CACX,IAAM6E,EAAY7lG,SAAS8lG,cAAc,UACzCD,EAAUn+F,MAAQ29F,EAClBQ,EAAU1lG,OAASmlG,EACnB,IAAMS,EAAS,IAAIC,MACnBD,EAAOE,YAAc,YACrBF,EAAO9jD,IAAM++C,EAAQrsG,KACrB,IAAMuxG,EAAaL,EAAUM,WAAW,MACxCf,EAAS/xG,KAAK,CAAEwyG,UAAAA,EAAWE,OAAAA,EAAQG,WAAAA,EAAYlF,QAAAA,GACjD,CACF,GACF,EAuCEwE,kBAnCIA,EAAoB,WACA,IAApBJ,EAAS13G,QACb03G,EAAS71F,SAAQ,SAAA9gB,GAAgD,IAA7Cs3G,EAAMt3G,EAANs3G,OAAQF,EAASp3G,EAATo3G,UAAWK,EAAUz3G,EAAVy3G,WAAYlF,EAAOvyG,EAAPuyG,QAC5C+E,GAAWG,GAAelF,IAE/BkF,EAAWE,UAAU,EAAG,EAAGf,EAAcC,GACrCC,EAAcQ,IAChBG,EAAWG,UAAUN,EAAQ,EAAG,EAAGA,EAAOr+F,MAAOq+F,EAAO5lG,OAAQ,EAAG,EAAGklG,EAAcC,GAEtFtE,EAAQrsG,KAAOkxG,EAAUS,UAAU,aACrC,GACF,EAyBEC,iBAvBuB,WACC,IAApBnB,EAAS13G,SACb83G,IACAJ,EAAS71F,SAAQ,SAAAjgB,GAAgD,IAA7Cy2G,EAAMz2G,EAANy2G,OAAQF,EAASv2G,EAATu2G,UAAWK,EAAU52G,EAAV42G,WAAYlF,EAAO1xG,EAAP0xG,QACjD,GAAK+E,GAAWG,GAAeA,EAA/B,CAEA,IAAMj6C,EAAQm2B,iBAAiBpiF,SAASC,MAClCumG,EAAa,GAAHl5G,OAAM2+D,EAAMo2B,iBAAiB,wBAA0B,sBAEnEkjB,EAAcQ,IAChBG,EAAWG,UAAUN,EAAQ,EAAG,EAAGA,EAAOr+F,MAAOq+F,EAAO5lG,OAAQ,EAAG,EAAGklG,EAAcC,GAEtFY,EAAWO,UAAYD,EACvBN,EAAWQ,YACXR,EAAWS,IAAItB,GA/CC,MA+CqD,EAAG,EAAIx3G,KAAK+4G,IAAI,GACrFV,EAAWlkD,OACXg/C,EAAQrsG,KAAOkxG,EAAUS,UAAU,YAZc,CAanD,IACF,G,gDCxCF,QAH8B,CAC5BO,eAbqB,SAACC,GACtB,IAAMC,EAAQ,CAAC,IAAK,MAAO,MAAO,MAAO,OACrClmD,EAAMimD,EACV,GAAIjmD,EAAM,EACR,OAAOA,EAAM,IAAMkmD,EAAM,GAG3B,IAAMC,EAAWn5G,KAAKs1C,IAAIt1C,KAAK02E,MAAM12E,KAAKsrB,IAAI0nC,GAAOhzD,KAAKsrB,IAAI,OAAQ4tF,EAAMr5G,OAAS,GAGrF,MAAO,CAAEmzD,IAFTA,EAAoD,GAA7CA,EAAMhzD,KAAK+gF,IAAI,KAAMo4B,IAAWC,QAAQ,GAEjCnmD,KADDimD,EAAMC,GAErB,E,0DCRO,IAAMvgC,EAAW,SAAAh8B,GACtB,OAAIA,EAASh9C,MAAM,SACV,QAGLg9C,EAASh9C,MAAM,cACV,OAGLg9C,EAASh9C,MAAM,SACV,QAGLg9C,EAASh9C,MAAM,SACV,QAGLg9C,EAASh9C,MAAM,SACV,QAGF,SACT,EAEay5G,EAAc,SAAA1zG,GACzB,OAAIA,EAAI/F,MAAM,gCACL,QAEL+F,EAAI/F,MAAM,yBACL,QAEL+F,EAAI/F,MAAM,wEACL,QAEF,SACT,EAWA,QANwB,CACtBg5E,SAAAA,EACAygC,YAAAA,EACAC,oBANiC,SAAC5gC,EAAOC,GAAI,OAC7CD,EAAMvtE,MAAK,SAAAtF,GAAI,OAAI+yE,EAASD,EAAK/7B,YAAc/2C,CAAI,GAAC,E,6FCrChD0zG,EAAuB,CAC3BC,QAAS,KACTC,QAAS,UACTC,GAAI,WAGAC,EAA0B,SAAA37G,GAAI,OAAIu7G,EAAqBv7G,IAASA,CAAI,EAEpE47G,EAA0B,SAAA57G,GAAI,OAAI27G,EAAwB37G,GAAMuF,QAAQ,IAAK,IAAI,EAMjFs2G,EAAkB,SAAC77G,GACvB,IAMM87G,EANuB,CAC3BN,QAAS,WACT,SAAU,UACVE,GAAI,OACJD,QAAS,QAE+Bz7G,IAAS+7G,EAAAA,EAAAA,cAAsB/7G,GACnEmlF,EAAgBw2B,EAAwB37G,GAC9C,OAAO87G,EAAaE,OAAO,GAAGC,kBAAkB92B,GAAiB22B,EAAax3G,MAAM,EACtF,EAEM0Q,EAAY6wB,IAAMq2E,EAAAA,EAAAA,WAA2B,SAACl8G,GAAI,MAAM,CAAEA,KAAAA,EAAMoC,KAAMy5G,EAAgB77G,GAAO,IAAGwC,MAAK,SAACC,EAAGC,GAAC,OAAKD,EAAEL,KAAK63F,cAAcv3F,EAAEN,KAAK,IAUjJ,QARsB,CACpBu5G,wBAAAA,EACAC,wBAAAA,EACAO,6BAtBmC,SAAA/mG,GAEnC,OADczP,MAAM2G,QAAQ8I,GAASA,EAAQ,CAACA,IACjC9V,IAAIs8G,GAAyBntG,KAAK,IACjD,EAoBEuG,UAAAA,EACA6mG,gBAAAA,E,oLCjCWvuB,EAAyB,SAAAzsF,GAAK,OAAIA,EAAMiC,MAAMwkB,SAASqB,cAAcnoB,IAAI,EAEzE47G,EAAe,SAAAv7G,GAC1B,IAAMyZ,EAAYzZ,EAAMyZ,WAAazZ,EAAMiC,MAE3C,MAAQ,CACNwX,EAAUgM,OAAOkhB,uBAAuBqB,OAAS,OACjDvuB,EAAUgM,OAAOkhB,uBAAuB1e,UAAY,UACpDxO,EAAUgM,OAAOkhB,uBAAuBwB,SAAW,SACnD1uB,EAAUgM,OAAOkhB,uBAAuBmB,SAAW,SACnDruB,EAAUgM,OAAOkhB,uBAAuB45D,eAAiB,iBACzD9mF,EAAUgM,OAAOkhB,uBAAuB0B,OAAS,OACjD5uB,EAAUgM,OAAOkhB,uBAAuB3V,gBAAkB,yBAC1DvX,EAAUgM,OAAOkhB,uBAAuB4X,SAAW,iBACnD9kC,EAAUgM,OAAOkhB,uBAAuBqZ,OAAS,QACjDt/C,QAAO,SAAA0O,GAAC,OAAIA,CAAC,GACjB,EAEMosG,EAAsB,CAAC,OAAQ,UAAW,SAAU,yBAA0B,QAEvEzuF,EAAuB,SAAC/lB,GAAI,OAAKy0G,IAASD,EAAqBx0G,EAAK,EAEpE8lB,EAAsB,SAAC/C,GAClC,QAAIgD,EAAqBhD,EAAa/iB,QAAU+iB,EAAahB,OAI/D,EAEMG,EAAW,SAACtnB,EAAGC,GACnB,IAAMsnB,EAAO5B,OAAO3lB,EAAEvC,IAChB+pB,EAAO7B,OAAO1lB,EAAExC,IAChBgqB,GAAU9B,OAAO+B,MAAMH,GACvBI,GAAUhC,OAAO+B,MAAMF,GAC7B,OAAIC,GAAUE,EACLJ,EAAOC,GAAQ,EAAI,EACjBC,IAAWE,EACb,GACGF,GAAUE,GAGb3nB,EAAEvC,GAAKwC,EAAExC,IAFR,EAEkB,CAE9B,EAOaozB,EAAwB,SAACzyB,EAAO+pB,GAC3C,IAAMtQ,EAAYzZ,EAAMyZ,WAAazZ,EAAMiC,MAE3C,IAAI8nB,EAAamD,MACZquF,EAAav7G,GAAOqD,SAAS0mB,EAAa/iB,QACrB,YAAtB+iB,EAAa/iB,OAVS,SAAChH,EAAO+pB,GAClC,GAAKA,EAAahB,OAClB,OAAOgB,EAAahB,OAAOmsF,QAASwG,EAAAA,EAAAA,GAAa3xF,EAAahB,OAAQ/oB,EAAM+a,YAAYG,aAAaulF,WAAWz/F,OAAS,CAC3H,CAOyC26G,CAAoB37G,EAAO+pB,IAAlE,CAEA,IAAM6xF,EAAqBC,EAA0B9xF,EAAc/pB,EAAM+a,YAAY9E,OACrFm1B,EAAAA,EAAAA,GAAwB3xB,EAAWmiG,EAHoD,CAIzF,EAEaE,EAAiC,SAAC97G,EAAO65E,GAEpD,IAAIkiC,EAAsBtvB,EAAuBzsF,GAAOvB,KAAI,SAAA2Q,GAAC,OAAIA,CAAC,IAAEzN,KAAKunB,GAEzE,OADA6yF,EAAsB74D,IAAO64D,EAAqB,SACvBr7G,QACzB,SAACqpB,GAAY,OAAM8vD,GAAS0hC,EAAav7G,IAAQqD,SAAS0mB,EAAa/iB,KAAK,GAEhF,EAEa63D,EAA+B,SAAA7+D,GAAK,OAC/C+wE,IAAO+qC,EAA+B97G,IAAQ,SAAA+B,GAAO,OAAAA,EAAJmrB,IAAgB,GAAC,EAEvD2uF,EAA4B,SAAC9xF,EAAc9T,GACtD,IAOI+lG,EAPEC,EAAW,CACf73G,IAAK2lB,EAAa1qB,IAEd0pB,EAASgB,EAAahB,OACtBpP,EAAQoQ,EAAa8Z,aAAatiC,KAIxC,OAHA06G,EAAStiG,MAAQA,EACjBsiG,EAAS5qG,KAAO0Y,EAAa8Z,aAAaoH,kBAElClhB,EAAa/iB,MACnB,IAAK,OACHg1G,EAAa,gBACb,MACF,IAAK,SACHA,EAAa,eACb,MACF,IAAK,SACHA,EAAa,eACb,MACF,IAAK,OACHA,EAAa,cACb,MACF,IAAK,iBACHA,EAAa,iBACb,MACF,IAAK,iBACHA,EAAa,mBACb,MACF,IAAK,OACHA,EAAa,aAkBjB,MAd0B,2BAAtBjyF,EAAa/iB,KACfi1G,EAAS1oG,KAAO0C,EAAK3W,EAAE,6BAA8B,CAACyqB,EAAajqB,QAC1Dk8G,EACTC,EAAS1oG,KAAO0C,EAAK3W,EAAE,iBAAmB08G,GACjCjvF,EAAqBhD,EAAa/iB,QAC3Ci1G,EAAS1oG,KAAOwW,EAAahB,OAAOrjB,MAIlCqjB,GAAUA,EAAOH,aAAeG,EAAOH,YAAY5nB,OAAS,IAAM+nB,EAAOmG,MAC3EnG,EAAOH,YAAY,GAAGm1B,SAASt8C,WAAW,YAC1Cw6G,EAAS/qG,MAAQ6X,EAAOH,YAAY,GAAG9hB,KAGlCm1G,CACT,C,qFCxHMC,EAA4B,CAChC,UACA,YACA,SACA,SACA,OACA,yBACA,kBAOIviF,EAAiB,SAAH/2B,GAAqD,IAA/C5C,EAAK4C,EAAL5C,MAAOsmB,EAAW1jB,EAAX0jB,YAAWuT,EAAAj3B,EAAEmoB,MAAAA,OAAK,IAAA8O,GAAQA,EAAEK,EAAKt3B,EAALs3B,MACrDle,EAAO,CAAEsK,YAAAA,GACPjE,EAAYriB,EAAZqiB,QAEF8X,GADYn6B,EAAMyZ,WAAazZ,EAAMiC,OACZwkB,SAASqB,cAClCpK,EAAiB2E,EAAQnH,aAAawC,eAM5C,GAJA1B,EAAKssF,aAAe4T,EACpBlgG,EAAKwe,WAAa9c,EAElB1B,EAAKyN,SAAW,gBACZsB,EAIF,OAHIoP,EAAanT,QAAUO,OAAOC,oBAChCxL,EAAKie,MAAQE,EAAanT,OAErB+U,EAAmB,CAAE/7B,MAAAA,EAAOgc,KAAAA,EAAM+O,MAAAA,SAG3BjhB,IAAVowB,GAAuBC,EAAapT,QAAUQ,OAAOC,kBACvDxL,EAAKke,MAAQC,EAAapT,MACP,OAAVmT,IACTle,EAAKke,MAAQA,GAEf,IAAM71B,EAAS03B,EAAmB,CAAE/7B,MAAAA,EAAOgc,KAAAA,EAAM+O,MAAAA,IAO3CjD,EAAgBqS,EAAax6B,KAC7Bw8G,EAAgBr0F,EAAcpnB,QAAO,SAAA2F,GAAC,OAAIA,EAAE6mB,IAAI,IAAEzuB,KAAI,SAAA4H,GAAC,OAAIA,EAAEhH,EAAE,IAOrE,OANwByoB,EAAc9mB,OAASm7G,EAAcn7G,OACvC,GAAKm7G,EAAcn7G,OAAS,IAChDgb,EAAKke,MAAQ/4B,KAAKC,IAAGC,MAARF,MAAIG,EAAAA,EAAAA,GAAQ66G,IACzBpgF,EAAmB,CAAE/7B,MAAAA,EAAOgc,KAAAA,EAAM+O,MAAAA,KAG7B1mB,CAEX,EAEM03B,EAAqB,SAAH72B,GAA+B,IAAzBlF,EAAKkF,EAALlF,MAAOgc,EAAI9W,EAAJ8W,KAAM+O,EAAK7lB,EAAL6lB,MACzC,OAAO1E,EAAAA,GAAAA,cAAyBrK,GAC7Bhd,MAAK,SAAC07B,GACL,GAAIA,EAASC,OACX,MAAM,IAAIz7B,MAAM,GAAD0B,OAAI85B,EAAS3R,OAAM,KAAAnoB,OAAI85B,EAASE,aAEjD,IAAM9S,EAAgB4S,EAAS/6B,KAE/B,OAtDS,SAAHoC,GAAwC,IAA3B+lB,EAAa/lB,EAAb+lB,cAAeiD,EAAKhpB,EAALgpB,MAAjBhpB,EAAL/B,MACVgC,SAAS,sBAAuB,CAAE8lB,cAAAA,EAAeiD,MAAAA,GACzD,CAmDM+P,CAAO,CAAE96B,MAAAA,EAAO8nB,cAAAA,EAAeiD,MAAAA,IACxBjD,CACT,IAAE,OACK,SAACrV,GACNzS,EAAMgC,SAAS,mBAAoB,CACjCuM,MAAO,QACP+L,WAAY,sBACZE,YAAa,CAAC/H,EAAM+gB,SACpBpxB,QAAS,MAEX0hB,QAAQrR,MAAMA,EAChB,GACJ,EAiBA,QAL6B,CAC3BknB,eAAAA,EACAqB,cAZoB,SAAH71B,GAA+B,IAAzBmhB,EAAWnhB,EAAXmhB,YAAatmB,EAAKmF,EAALnF,MAIpCyC,YAAW,kBAAMzC,EAAMgC,SAAS,2BAA2B,EAAM,GAAE,KACnE,IAAMs5B,EAAsB,WAAH,OAAS3B,EAAe,CAAErT,YAAAA,EAAatmB,MAAAA,GAAQ,EAExE,OADAs7B,KACOD,EAAAA,EAAAA,GAAgBC,EAAqB,IAC9C,E,gDC1FO,IAAM8gF,EAAa,SAAbA,EAAcC,EAAO5jE,GAA6D,IAAA12C,EAAAmC,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAA7B,CAAC,EAACo4G,EAAAv6G,EAAxBq1E,IAAAA,OAAG,IAAAklC,EAAG,EAACA,EAAAC,EAAAx6G,EAAE07E,KAAAA,OAAI,IAAA8+B,EAAG,EAACA,EAASC,IAAat4G,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,KAAAA,UAAA,GAC3EG,EAAS,CACb+yE,IAAKA,EAAMilC,EAAMhlC,UACjBoG,KAAMA,EAAO4+B,EAAMI,YAErB,IAAKD,GAAiBH,IAAUz0G,OAAQ,CACtC,IAAA80G,EAAoCC,EAAYN,GAAxCO,EAAUF,EAAVE,WAAYC,EAAWH,EAAXG,YACpBx4G,EAAO+yE,KAAOolC,EAAgB,EAAII,EAClCv4G,EAAOo5E,MAAQ++B,EAAgB,EAAIK,CACrC,CAEA,GAAIR,EAAMS,cAAyE,WAAzDl1G,OAAO8tF,iBAAiB2mB,EAAMS,cAAcC,WAA0BtkE,IAAW7wC,QAAU6wC,EAAOukE,SAASX,EAAMS,eAAiBrkE,IAAW4jE,EAAMS,cAC3K,OAAOV,EAAWC,EAAMS,aAAcrkE,EAAQp0C,GAAQ,GAEtD,GAAIo0C,IAAW7wC,OAAQ,CACrB,IAAAq1G,EAAoCN,EAAYlkE,GAAxCmkE,EAAUK,EAAVL,WAAYC,EAAWI,EAAXJ,YACpBx4G,EAAO+yE,KAAOwlC,EACdv4G,EAAOo5E,MAAQo/B,CACjB,CACA,OAAOx4G,CAEX,EAEMs4G,EAAc,SAACh4B,GACnB,IAAMu4B,EAAgBt1G,OAAO8tF,iBAAiB/Q,GAAI,eAC5Ci4B,EAAar1F,OAAO21F,EAAcz4G,UAAU,EAAGy4G,EAAcl8G,OAAS,IACtEm8G,EAAiBv1G,OAAO8tF,iBAAiB/Q,GAAI,gBAGnD,MAAO,CAAEi4B,WAAAA,EAAYC,YAFDt1F,OAAO41F,EAAe14G,UAAU,EAAG04G,EAAen8G,OAAS,IAGjF,C,gDCvBO,IAAMq6B,EAAkB,SAAC+hF,EAAa70D,GAC3C,IAAI80D,GAAU,EACVj7G,EAAU,KAuBd,OAFAA,EAAUwF,OAAOnF,YAnBJ,SAAP85B,IACJ,IAAM+gF,EAAUF,IAGVE,GAAWA,EAAO,QAIxBA,EAAO,SAAS,WACVD,IACJj7G,EAAUwF,OAAOnF,WAAW85B,EAAMgsB,GACpC,IANEzkC,QAAQC,KAAK,6EAOjB,GAOkCwkC,GAE3B,CAAEvkD,KAPW,WAClBq5G,GAAU,EACVz1G,OAAOjF,aAAaP,EACtB,EAKF,C,gDC/BA,QAFsB,WAAH,MAAS,GAAAxB,OAAGO,KAAKo8G,UAAW74G,QAAQ,IAAK,IAAI,C,wECEnDg3G,EAAe,SAAC3yF,EAAQ03E,GACnC,IAAM7lE,EAAa7R,EAAOrjB,KAAKnF,cACzBi9G,EAAgBz0F,EAAOqxD,QAAQ75E,cAKrC,OAJawwE,IAAO0vB,GAAW,SAACgd,GAC9B,OAAO7iF,EAAWv3B,SAASo6G,EAASl9G,gBAAkBi9G,EAAcn6G,SAASo6G,EAASl9G,cACxF,GAGF,C,kFCmGA,QAP4B,CAC1BomE,WApGiB,SAAH5kE,GAaV,IAZJ/B,EAAK+B,EAAL/B,MACA+oB,EAAMhnB,EAANgnB,OACAu9C,EAAWvkE,EAAXukE,YACAl7C,EAAUrpB,EAAVqpB,WACAm7C,EAASxkE,EAATwkE,UACAx0C,EAAIhwB,EAAJgwB,KAAI2rF,EAAA37G,EACJomB,MAAAA,OAAK,IAAAu1F,EAAG,GAAEA,EAAAC,EAAA57G,EACV8nG,kBAAAA,OAAiB,IAAA8T,OAAG7zG,EAAS6zG,EAAAC,EAAA77G,EAC7B+nG,QAAAA,OAAO,IAAA8T,OAAG9zG,EAAS8zG,EAAAC,EAAA97G,EACnBykE,YAAAA,OAAW,IAAAq3C,EAAG,aAAYA,EAAAC,EAAA/7G,EAC1B64D,QAAAA,OAAO,IAAAkjD,GAAQA,EAAAC,EAAAh8G,EACf0/E,eAAAA,OAAc,IAAAs8B,EAAG,GAAEA,EAEbnU,EAAW5kE,IAAI7c,EAAO,MAE5B,OAAO9B,EAAAA,GAAAA,WAAsB,CAC3BC,YAAatmB,EAAMiC,MAAMqB,MAAM8X,YAAYkL,YAC3CyC,OAAAA,EACAu9C,YAAAA,EACAl7C,WAAAA,EACAm7C,UAAAA,EACAqjC,SAAAA,EACAC,kBAAAA,EACAC,QAAAA,EACAtjC,YAAAA,EACAz0C,KAAAA,EACA6oC,QAAAA,EACA6mB,eAAAA,IAECziF,MAAK,SAACW,GASL,OARKA,EAAK8S,OAAUmoD,GAClB56D,EAAMgC,SAAS,iBAAkB,CAC/BykB,SAAU,CAAC9mB,GACX8pB,SAAU,UACVS,iBAAiB,EACjBG,YAAY,IAGT1qB,CACT,IAAE,OACK,SAAC8G,GACN,MAAO,CACLgM,MAAOhM,EAAI+sB,QAEf,GACJ,EAuDEyyC,WArDiB,SAAHrjE,GASV,IARJ5C,EAAK4C,EAAL5C,MACAujB,EAAQ3gB,EAAR2gB,SACAwF,EAAMnmB,EAANmmB,OACAu9C,EAAW1jE,EAAX0jE,YACAC,EAAS3jE,EAAT2jE,UACAx0C,EAAInvB,EAAJmvB,KAAIisF,EAAAp7G,EACJulB,MAAAA,OAAK,IAAA61F,EAAG,GAAEA,EAAAC,EAAAr7G,EACV4jE,YAAAA,OAAW,IAAAy3C,EAAG,aAAYA,EAEpBrU,EAAW5kE,IAAI7c,EAAO,MAE5B,OAAO9B,EAAAA,GAAAA,WAAsB,CAC3BhnB,GAAIkkB,EACJ+C,YAAatmB,EAAMiC,MAAMqB,MAAM8X,YAAYkL,YAC3CyC,OAAAA,EACAu9C,YAAAA,EACAC,UAAAA,EACAx0C,KAAAA,EACA63E,SAAAA,EACApjC,YAAAA,IAECxnE,MAAK,SAACW,GASL,OARKA,EAAK8S,OACRzS,EAAMgC,SAAS,iBAAkB,CAC/BykB,SAAU,CAAC9mB,GACX8pB,SAAU,UACVS,iBAAiB,EACjBG,YAAY,IAGT1qB,CACT,IAAE,OACK,SAAC8G,GAEN,OADAqd,QAAQrR,MAAM,uBAAwBhM,GAC/B,CACLgM,MAAOhM,EAAI+sB,QAEf,GACJ,EAeE82E,YAbkB,SAAHplG,GAA4B,IAAtBlF,EAAKkF,EAALlF,MAAOuqG,EAAQrlG,EAARqlG,SACtBjkF,EAActmB,EAAMiC,MAAMqB,MAAM8X,YAAYkL,YAClD,OAAOD,EAAAA,GAAAA,YAAuB,CAAEC,YAAAA,EAAaikF,SAAAA,GAC/C,EAWEE,oBAT0B,SAAHtlG,GAAmC,IAA7BnF,EAAKmF,EAALnF,MAAOX,EAAE8F,EAAF9F,GAAIu6C,EAAWz0C,EAAXy0C,YAClCtzB,EAActmB,EAAMiC,MAAMqB,MAAM8X,YAAYkL,YAClD,OAAOD,EAAAA,GAAAA,oBAA+B,CAAEC,YAAAA,EAAajnB,GAAAA,EAAIu6C,YAAAA,GAC3D,E,q0BC/FO,IAAM7zB,EAAa,SAAC7lB,GACzB,IAAQg+G,EAAUC,EAAej+G,GAAzBg+G,MACFE,EAAO9qG,SAAS8qG,KAChB7qG,EAAOD,SAASC,KACtBA,EAAKuiF,UAAUlqE,IAAI,UAEnB,IAAMyyF,EAAU/qG,SAAS8lG,cAAc,SACvCgF,EAAKE,YAAYD,GACjB,IAAME,EAAaF,EAAQG,MAE3BD,EAAWlxG,WACXkxG,EAAWE,WAAW,WAAD79G,OAAYs9G,EAAMQ,MAAK,MAAM,aAClDH,EAAWE,WAAW,WAAD79G,OAAYs9G,EAAMpe,OAAM,MAAM,aACnDye,EAAWE,WAAW,WAAD79G,OAAYs9G,EAAMS,QAAO,MAAM,aACpDJ,EAAWE,WAAW,WAAD79G,OAAYs9G,EAAMU,MAAK,MAAM,aAClDrrG,EAAKuiF,UAAUE,OAAO,SACxB,EAEM6oB,EAAgB,SAAH98G,GAAoF,MACpG,CAAEi/F,mBADsCj/F,EAAlBi/F,mBACAC,mBADsCl/F,EAAlBk/F,mBACAC,kBADqCn/F,EAAjBm/F,kBACDC,oBADuCp/F,EAAnBo/F,oBACC,EAE/E2d,EAAuBD,EAAcn3F,EAAAA,IAE9Bw0E,EAAc,SAACz2E,GAC1B,IAAMs5F,EAAUF,EAAcp5F,GAE9B,GAAIs5F,IAAYD,EAAhB,CAIA,IAAMV,EAAO9qG,SAAS8qG,KAChB7qG,EAAOD,SAASC,KACtBA,EAAKuiF,UAAUlqE,IAAI,UAEnB,IAAMsyF,EAAQ1+G,OACXkT,QAAQqsG,GACRr+G,QAAO,SAAAkC,GAAA,IAAAsC,GAAAD,EAAAA,EAAAA,GAAArC,EAAA,GAAM,OAAHsC,EAAA,GAAGA,EAAA,EAAO,IACpBzG,KAAI,SAAA0G,GAAA,IAAAG,GAAAL,EAAAA,EAAAA,GAAAE,EAAA,GAAElE,EAACqE,EAAA,GAAEF,EAACE,EAAA,cAAA1E,OAAWK,EAAC,MAAAL,OAAKwE,EAAC,IAAIwI,KAAK,KAElCywG,EAAU/qG,SAAS8lG,cAAc,SACvCgF,EAAKE,YAAYD,GACjB,IAAME,EAAaF,EAAQG,MAE3BD,EAAWlxG,WACXkxG,EAAWE,WAAW,WAAD79G,OAAYs9G,EAAK,MAAM,aAC5C3qG,EAAKuiF,UAAUE,OAAO,SAjBtB,CAkBF,EAEagpB,EAAe,SAAC9+G,EAAO++G,GAClC,OAAqB,IAAjB/+G,EAAMc,OACD,OAGFd,EACJQ,QAAO,SAAA0O,GAAC,OAAI6vG,EAAiB7vG,EAAE8vG,MAAQ9vG,CAAC,IACxC3Q,KAAI,SAAC0gH,GAAI,MAAK,CACbA,EAAK3lE,EACL2lE,EAAKzrG,EACLyrG,EAAKz4B,KACLy4B,EAAKC,QACL3gH,KAAI,SAAA2Q,GAAC,OAAIA,EAAI,IAAI,IAAExO,OAAO,EAC1ByxG,EAAAA,EAAAA,IAAY8M,EAAK7d,MAAO6d,EAAKE,OAC7BF,EAAKD,MAAQ,QAAU,KACtBtxG,KAAK,IAAI,IAAEA,KAAK,KACvB,EAEM0xG,EAAqB,SAACp/G,GAC1B,OAAqB,IAAjBA,EAAMc,OACD,OAGFd,EAEJQ,QAAO,SAACy+G,GAAI,OAAMA,EAAKD,OAAiC,IAAxB33F,OAAO43F,EAAKC,OAAa,IACzD3gH,KAAI,SAAC0gH,GAAI,MAAK,CACbA,EAAK3lE,EACL2lE,EAAKzrG,EAELyrG,EAAKz4B,KAAO,GACZjoF,KAAI,SAAA2Q,GAAC,OAAIA,EAAI,IAAI,IAAExO,OAAO,EAC1ByxG,EAAAA,EAAAA,IAAY8M,EAAK7d,MAAO6d,EAAKE,SAC5BzxG,KAAK,IAAI,IACXnP,KAAI,SAAA2Q,GAAC,qBAAAxO,OAAmBwO,EAAC,QACzBxB,KAAK,IACV,EAEa2xG,EAAiB,SAAC5iG,GAC7B,IAAM6iG,EAAgB7iG,EAAUkJ,mBAE5BlJ,EAAUmjF,QAAUnjF,EADpB8iG,EAAW9iG,EAAUmjF,QAAUnjF,GAGnC+iG,GAA4BC,EAAAA,EAAAA,IAAUH,EAAc7iG,EAAUqnD,SAAW,CAAC,GAAlE87B,EAAM4f,EAAN5f,OAAQ97B,EAAO07C,EAAP17C,QAEV47C,EAAapgH,OAAOkT,QAAQotF,GAC/BzjF,QAAO,SAACC,EAAG/W,GAAa,IAAAuU,GAAA7U,EAAAA,EAAAA,GAAAM,EAAA,GAAVtE,EAAC6Y,EAAA,GAAE1U,EAAC0U,EAAA,GACjB,OAAK1U,GACLkX,EAAIujG,MAAM5+G,IAAKsvG,EAAAA,EAAAA,IAAQnrG,GACvBkX,EAAIy8F,SAAS93G,QAAoB,IAARmE,EAAExD,GAAoB2uG,EAAAA,EAAAA,IAAQnrG,IAAKysG,EAAAA,EAAAA,IAASzsG,GAC9DkX,GAHQA,CAIjB,GAAG,CAAEy8F,SAAU,CAAC,EAAG8G,MAAO,CAAC,IAC7B,MAAO,CACL3B,MAAO,CACLpe,OAAQtgG,OAAOkT,QAAQktG,EAAW7G,UAC/Br4G,QAAO,SAAAqZ,GAAA,IAAAE,GAAAhV,EAAAA,EAAAA,GAAA8U,EAAA,GAAM,OAAHE,EAAA,GAAGA,EAAA,EAAO,IACpBxb,KAAI,SAAA0b,GAAA,IAAAC,GAAAnV,EAAAA,EAAAA,GAAAkV,EAAA,GAAElZ,EAACmZ,EAAA,GAAEhV,EAACgV,EAAA,cAAAxZ,OAAWK,EAAC,MAAAL,OAAKwE,EAAC,IAC5BwI,KAAK,MAEV+R,MAAO,CACLmgF,OAAQ8f,EAAWC,MACnB77C,QAAAA,GAGN,EAEa87C,EAAgB,SAAC5/G,GAC5B,IAAI6/G,EAAa7/G,EAAMw+G,OAAS,CAAC,OAEF,IAApBx+G,EAAM8/G,YACfD,EAAavgH,OACVkT,QAAQxS,GACRQ,QAAO,SAAA2Z,GAAA,IAAAO,GAAA3V,EAAAA,EAAAA,GAAAoV,EAAA,GAAEpZ,EAAC2Z,EAAA,GAAG,OAAAA,EAAA,GAAM3Z,EAAEqiB,SAAS,SAAS,IACvCjH,QAAO,SAACC,EAAKrd,GAA6C,OAArCqd,EAAIrd,EAAE,GAAGw7C,MAAM,UAAU,IAAMx7C,EAAE,GAAWqd,CAAI,GAAG,CAAC,IAE9E,IAAMoiG,EAAQl/G,OAAOkT,QAAQqtG,GAAYr/G,QAAO,SAAAma,GAAA,IAAAC,GAAA7V,EAAAA,EAAAA,GAAA4V,EAAA,GAAM,OAAHC,EAAA,GAAGA,EAAA,EAAO,IAAEuB,QAAO,SAACC,EAAGjB,GAAa,IAAA6K,GAAAjhB,EAAAA,EAAAA,GAAAoW,EAAA,GAAVpa,EAACilB,EAAA,GAAE9gB,EAAC8gB,EAAA,GAE/E,OADA5J,EAAIrb,GAAKmE,EACFkX,CACT,GAAG,CACD2jG,IAAK,EACL//G,MAAO,EACPggH,SAAU,EACV5rD,MAAO,GACPO,OAAQ,EACRsrD,UAAW,GACXC,QAAS,EACTl1E,WAAY,EACZm1E,YAAaN,EAAWzrD,QAG1B,MAAO,CACL4pD,MAAO,CACLQ,MAAOl/G,OAAOkT,QAAQgsG,GAAOh+G,QAAO,SAAA0uB,GAAA,IAAAE,GAAArqB,EAAAA,EAAAA,GAAAmqB,EAAA,GAAM,OAAHE,EAAA,GAAGA,EAAA,EAAO,IAAE7wB,KAAI,SAAAgxB,GAAA,IAAAE,GAAA1qB,EAAAA,EAAAA,GAAAwqB,EAAA,GAAExuB,EAAC0uB,EAAA,GAAEvqB,EAACuqB,EAAA,cAAA/uB,OAAWK,EAAC,YAAAL,OAAWwE,EAAC,SAAMwI,KAAK,MAElG+R,MAAO,CACL++F,MAAAA,GAGN,EAEa4B,EAAgB,SAACpgH,GAC5B,IAAM0+G,EAAQp/G,OAAOkT,QAAQxS,EAAM0+G,OAAS,CAAC,GAAGl+G,QAAO,SAAAmvB,GAAA,IAAAG,GAAA/qB,EAAAA,EAAAA,GAAA4qB,EAAA,GAAM,OAAHG,EAAA,GAAGA,EAAA,EAAO,IAAE3T,QAAO,SAACC,EAAG6T,GAAa,IAAAG,GAAArrB,EAAAA,EAAAA,GAAAkrB,EAAA,GAAVlvB,EAACqvB,EAAA,GAAElrB,EAACkrB,EAAA,GAKtF,OAJAhU,EAAIrb,GAAKzB,OAAOkT,QAAQtN,GAAG1E,QAAO,SAAA+vB,GAAA,IAAAE,GAAA1rB,EAAAA,EAAAA,GAAAwrB,EAAA,GAAM,OAAHE,EAAA,GAAGA,EAAA,EAAO,IAAEtU,QAAO,SAACC,EAAGuU,GAAa,IAAAE,GAAA9rB,EAAAA,EAAAA,GAAA4rB,EAAA,GAAV5vB,EAAC8vB,EAAA,GAAE3rB,EAAC2rB,EAAA,GAEjE,OADAzU,EAAIrb,GAAKmE,EACFkX,CACT,GAAGA,EAAIrb,IACAqb,CACT,GAAG,CACDwhF,UAAW,CACTyiB,OAAQ,cAEVrgH,MAAO,CACLqgH,OAAQ,WAEVC,KAAM,CACJD,OAAQ,WAEVE,SAAU,CACRF,OAAQ,eAIZ,MAAO,CACLrC,MAAO,CACLU,MAAOp/G,OACJkT,QAAQksG,GACRl+G,QAAO,SAAAywB,GAAA,IAAAQ,GAAA1sB,EAAAA,EAAAA,GAAAksB,EAAA,GAAM,OAAHQ,EAAA,GAAGA,EAAA,EAAO,IACpBlzB,KAAI,SAAAqzB,GAAA,IAAAG,GAAAhtB,EAAAA,EAAAA,GAAA6sB,EAAA,GAAE7wB,EAACgxB,EAAA,GAAE7sB,EAAC6sB,EAAA,cAAArxB,OAAWK,EAAC,UAAAL,OAASwE,EAAEm7G,OAAM,IAAI3yG,KAAK,MAErD+R,MAAO,CACLi/F,MAAAA,GAGN,EAEM8B,EAAS,SAACtpC,EAAKupC,GAAM,MAAM,CAC/BnnE,EAAG,EACH9lC,EAAG0jE,EAAM,GAAK,EACdsP,KAAM,EACN04B,OAAQ,EACR9d,MAAOqf,EAAS,UAAY,UAC5BtB,MAAO,GACPH,OAAO,EACR,EACK0B,EAAyB,CAACF,GAAO,GAAM,GAAQA,GAAO,GAAO,IAC7DG,EAAwB,CAACH,GAAO,GAAM,GAAOA,GAAO,GAAO,IAC3DI,EAAY,CAChBtnE,EAAG,EACH9lC,EAAG,EACHgzE,KAAM,EACN04B,OAAQ,EACR9d,MAAO,UACP+d,MAAO,GAGI0B,EAAkB,CAC7BzsD,MAAO,CAAC,CACN9a,EAAG,EACH9lC,EAAG,EACHgzE,KAAM,EACN04B,OAAQ,EACR9d,MAAO,UACP+d,MAAO,KAET2B,OAAQ,CAAC,CACPxnE,EAAG,EACH9lC,EAAG,EACHgzE,KAAM,EACN04B,OAAQ,EACR9d,MAAO,UACP+d,MAAO,KAET4B,MAAO,CAAC,CACNznE,EAAG,EACH9lC,EAAG,EACHgzE,KAAM,EACN04B,OAAQ,EACR9d,MAAO,UACP+d,MAAO,KAETxqD,OAAQ,CAAC,CACPrb,EAAG,EACH9lC,EAAG,EACHgzE,KAAM,EACN04B,OAAQ,EACR9d,MAAO,UACP+d,MAAO,KAET6B,aAAc,GACdC,YAAa,GACbrnD,OAAQ,CAAC,CACPtgB,EAAG,EACH9lC,EAAG,EACHgzE,KAAM,EACN04B,OAAQ,EACR9d,MAAO,UACP+d,MAAO,IACRz+G,OAAKggH,GACNQ,YAAa,CAACN,GAASlgH,OAAKggH,GAC5BS,cAAe,CAACP,GAASlgH,OAAKigH,GAC9B3gH,MAAO,GAAFU,OAAMigH,EAAuB,EAChCrnE,EAAG,EACH9lC,EAAG,EACHgzE,KAAM,EACNw4B,OAAO,EACPE,OAAQ,EACR9d,MAAO,UACP+d,MAAO,MAGEiC,EAAkB,SAACphH,EAAO4/F,GAGrC,IAAMyhB,EAAkB,CACtBznD,OAAQ,MACRxF,MAAO,KACP8iB,IAAK,SACL6pC,MAAO,UACPpsD,OAAQ,KACRssD,YAAa,QACbjhH,MAAO,SAGHshH,EAAoBhiH,OAAO6F,YAC/B7F,OAAOkT,QAAQxS,EAAMy+G,SAAW,CAAC,GAC9BlgH,KAAI,SAAA0zB,GAAA,IAAAC,GAAAntB,EAAAA,EAAAA,GAAAktB,EAAA,GAAkB,MAAM,CAAlBC,EAAA,GAAYA,EAAA,GAGV3zB,KAAI,SAAAgjH,GAAS,OAAAhhH,EAAA,CAAO6gG,MAAO,WAAcmgB,EAAS,IAC9D,KAECC,EAAeF,IAAsBthH,EAAM2lB,mBAC7C87F,EAAYH,EAAmBthH,EAAM8jE,SACrCw9C,GAAqB,CAAC,EACpB7C,EAAUn/G,OAAOkT,QAAOjS,EAAAA,EAAC,CAAC,EAC3BsgH,GACAW,IACFrlG,QAAO,SAACulG,EAAUpvF,GAA6B,IAAAE,GAAAztB,EAAAA,EAAAA,GAAAutB,EAAA,GAA1BqvF,EAAQnvF,EAAA,GAAEovF,EAAUpvF,EAAA,GACpCqvF,EAAgBF,EAASn9G,QAAQ,WAAY,IAC7Cs9G,EAAgBT,EAAgBQ,GAEhCE,GADgBtR,EAAAA,EAAAA,KAAkBl3D,EAAAA,EAAAA,IAAQqmD,EAAOkiB,IAAgB7P,KAAO,GAClD,GAAK,EAC3B+P,EAAYJ,EAAWzlG,QAAO,SAAC8lG,EAAWrvC,GAAG,SAAAlyE,QAAAU,EAAAA,EAAAA,GAC9C6gH,GAAS,CAAA1hH,EAAAA,EAAA,GAEPqyE,GAAG,IACNwuB,OAAOiP,EAAAA,EAAAA,KAAQ6R,EAAAA,EAAAA,IACbtvC,EAAIwuB,OACJ,SAAC+gB,GAAY,OAAK5oE,EAAAA,EAAAA,IAAQqmD,EAAOuiB,IAAelQ,GAAG,GACnD8P,OACA,GAEH,IACH,OAAAxhH,EAAAA,EAAA,GAAYmhH,GAAU,IAAA7tG,EAAAA,EAAAA,GAAA,GAAG8tG,EAAWK,GACtC,GAAG,CAAC,GAEJ,MAAO,CACLhE,MAAO,CACLS,QAASn/G,OACNkT,QAAQisG,GAGRlgH,KAAI,SAAAk0B,GAAA,IAAAC,GAAA3tB,EAAAA,EAAAA,GAAA0tB,EAAA,GAAE1xB,EAAC2xB,EAAA,GAAExtB,EAACwtB,EAAA,SAAM,CAAC,KAADhyB,OACVK,EAAC,YAAAL,OAAWo+G,EAAa55G,IAAE,KAAAxE,OAC3BK,EAAC,kBAAAL,OAAiB0+G,EAAmBl6G,IAAE,KAAAxE,OACvCK,EAAC,iBAAAL,OAAgBo+G,EAAa55G,GAAG,KACtCwI,KAAK,IAAI,IACVA,KAAK,MAEV+R,MAAO,CACLg/F,QAAAA,GAGN,EAEa2D,EAAgB,SAACxiB,EAAQ4e,EAAOC,EAASC,GACpD,MAAO,CACLV,MAAKz9G,EAAAA,EAAAA,EAAAA,EAAA,GACAk+G,EAAQT,OACRpe,EAAOoe,OACPQ,EAAMR,OACNU,EAAMV,OAEXv+F,MAAKlf,EAAAA,EAAAA,EAAAA,EAAA,GACAk+G,EAAQh/F,OACRmgF,EAAOngF,OACP++F,EAAM/+F,OACNi/F,EAAMj/F,OAGf,EAEaw+F,EAAiB,SAACj+G,GAC7B,IAAM4/F,EAASyf,EAAer/G,GAC9B,OAAOoiH,EACLxiB,EACAggB,EAAc5/G,GACdohH,EAAgBphH,EAAO4/F,EAAOngF,MAAMmgF,OAAQA,EAAOmiB,KACnD3B,EAAcpgH,GAElB,EAEaqiH,EAAY,WACvB,IAAM/wE,EAAQ,WAEd,OAAO5pC,OAAOkK,MAAM,sBAAuB,CAAE0/B,MAAAA,IAC1CxyC,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAC1B5lB,MAAK,SAACwjH,GACL,OAAOhjH,OAAOkT,QAAQ8vG,GAAQ/jH,KAAI,SAAAo0B,GAAY,IAAAE,GAAA9tB,EAAAA,EAAAA,GAAA4tB,EAAA,GAAV5xB,EAAC8xB,EAAA,GAAE3tB,EAAC2tB,EAAA,GAClCuqF,EAAU,KAWd,MAViB,YAAbr9E,EAAAA,EAAAA,GAAO76B,GACTk4G,EAAUx+G,QAAQC,QAAQqG,GACJ,iBAANA,IAChBk4G,EAAU11G,OAAOkK,MAAM1M,EAAG,CAAEosC,MAAAA,IACzBxyC,MAAK,SAACW,GAAI,OAAKA,EAAKilB,MAAM,IAAC,OACrB,SAAC3lB,GAEN,OADA6kB,QAAQrR,MAAMxT,GACP,IACT,KAEG,CAACgC,EAAGq8G,EACb,GACF,IACCt+G,MAAK,SAACyjH,GACL,OAAOA,EACJpmG,QAAO,SAACC,EAAG6W,GAAa,IAAAE,GAAApuB,EAAAA,EAAAA,GAAAkuB,EAAA,GAAVlyB,EAACoyB,EAAA,GAAEjuB,EAACiuB,EAAA,GAEjB,OADA/W,EAAIrb,GAAKmE,EACFkX,CACT,GAAG,CAAC,EACR,GACJ,EACamjG,EAAa,SAAC3f,GACzB,OAAOtgG,OAAOkT,QAAQotF,GAAQzjF,QAAO,SAACC,EAAGiX,GAAwB,IAAAG,GAAAzuB,EAAAA,EAAAA,GAAAsuB,EAAA,GAArBsuF,EAAQnuF,EAAA,GAAE4tE,EAAK5tE,EAAA,GAEzD,OAAQmuF,GACN,IAAK,UACH,OAAAphH,EAAAA,EAAA,GAAY6b,GAAG,IAAE0nB,UAAWs9D,IAC9B,IAAK,UACH,OAAA7gG,EAAAA,EAAA,GACK6b,GANY,CAAC,GAAI,QAAS,UAQ1BD,QACC,SAACqmG,EAAkB3F,GAAQ,OAAAt8G,EAAAA,EAAA,GACnBiiH,GAAgB,IAAA3uG,EAAAA,EAAAA,GAAA,GAAG,MAAQgpG,EAAW,OAASzb,GAAK,GAC1D,CAAC,IAGX,QACE,OAAA7gG,EAAAA,EAAA,GAAY6b,GAAG,IAAAvI,EAAAA,EAAAA,GAAA,GAAG8tG,EAAWvgB,IAEnC,GAAG,CAAC,EACN,EAOaqgB,EAAc,SAAChD,EAAS36C,GACnC,OAAOxkE,OAAOkT,QAAQisG,GAAStiG,QAAO,SAACulG,EAAUhuF,GAA6B,IAAAC,GAAA5uB,EAAAA,EAAAA,GAAA2uB,EAAA,GAA1BiuF,EAAQhuF,EAAA,GAGpDquF,EAHgEruF,EAAA,GAGzCxX,QAAO,SAAC8lG,EAAWrvC,GAAG,SAAAlyE,QAAAU,EAAAA,EAAAA,GAC9C6gH,GAAS,CAAA1hH,EAAAA,EAAA,GAEPqyE,GAAG,IACNusC,OANWtrF,EAMM++C,EANN6vC,EAAA5uF,EAAMutE,YAAK,IAAAqhB,EAAG,UAASA,GAAalhH,WAAW,OAC9CwyB,EAKuB6+C,EALjBwuB,EAAKrtE,EAALqtE,MAAYt9B,GAAQ4+C,EAAAA,EAAAA,IAAethB,EAAM78F,UAAU,GAAGg2C,MAAM,KAAK,MAKxC,GAAIq4B,EAAIusC,WALpC,IAAHprF,EAAMqtE,EADPvtE,EAAA4uF,CAM6C,GAEzD,IACH,OAAAliH,EAAAA,EAAA,GAAYmhH,GAAU,IAAA7tG,EAAAA,EAAAA,GAAA,GAAG8tG,EAAWK,GACtC,GAAG,CAAC,EACN,EAEa18F,EAAY,SAAC4gD,GACxB,OAAOm8C,IACJvjH,MAAK,SAACwjH,GAAM,OAAKA,EAAOp8C,GAAOo8C,EAAOp8C,GAAOo8C,EAAO,eAAe,IACnExjH,MAAK,SAAC2gB,GACL,IAAMkjG,EAAO/9G,MAAM2G,QAAQkU,GACrBhgB,EAAOkjH,EAAO,CAAC,EAAIljG,EAAMA,MAE/B,GAAIkjG,EAAM,CACR,IAAMpR,GAAKC,EAAAA,EAAAA,IAAQ/xF,EAAM,IACnB4xF,GAAKG,EAAAA,EAAAA,IAAQ/xF,EAAM,IACnBja,GAAOgsG,EAAAA,EAAAA,IAAQ/xF,EAAM,IACrBlY,GAAOiqG,EAAAA,EAAAA,IAAQ/xF,EAAM,IAErBmjG,GAAOpR,EAAAA,EAAAA,IAAQ/xF,EAAM,IAAM,WAC3BojG,GAASrR,EAAAA,EAAAA,IAAQ/xF,EAAM,IAAM,WAC7BqjG,GAAQtR,EAAAA,EAAAA,IAAQ/xF,EAAM,IAAM,WAC5BsjG,GAAUvR,EAAAA,EAAAA,IAAQ/xF,EAAM,IAAM,WAEpChgB,EAAKmgG,OAAS,CAAE2R,GAAAA,EAAIF,GAAAA,EAAI7rG,KAAAA,EAAM+B,KAAAA,EAAMq7G,KAAAA,EAAME,MAAAA,EAAOD,OAAAA,EAAQE,QAAAA,EAC3D,CAEA,MAAO,CAAEtjG,MAAOhgB,EAAMimB,OAAQjG,EAAMiG,OACtC,GACJ,EAEa87E,EAAY,SAACt7B,GAAG,OAAK5gD,EAAU4gD,GAAKpnE,MAAK,SAAAW,GAAI,OAAIomB,EAAWpmB,EAAKggB,MAAM,GAAC,C,6FC7bxEujG,EAAS,CACpBC,QAAS,KACTnC,OAAQ,KACRoC,MAAO,KACPC,YAAa,KACb9R,GAAI,KACJE,GAAI,WACJztE,UAAW,KACXswB,MAAO,KACPgvD,QAAS,KACTC,aAAc,UACdtD,IAAK,KACLuD,SAAU,QACVC,UAAW,SACXvjH,MAAO,KACPwjH,WAAY,QACZC,YAAa,SACbC,MAAO,KACPC,WAAY,QACZ9xF,KAAM,KACN+xF,OAAQ,WACRzD,YAAa,UAMF0D,EAAkB,CAC7BV,YAAa,GACbO,MAAO,GACP1jH,MAAO,GACP8jH,MAAO,GACPC,SAAU,IACVC,WAAY,KAyCDC,EAAmB,CAC9B1S,GAAI,CACF2S,QAAS,GACTpgD,QAAS,KACTqgD,SAAU,GAEZC,UAAW,CACTF,QAAS,CAAC,MACV9iB,MAAO,SAAC2gB,EAAKxQ,GAAE,OAAK8S,EAAAA,EAAAA,KAAY,EAAItC,EAAKxQ,GAAIU,GAAG,GAElDZ,GAAI,CACF6S,QAAS,GACTC,SAAU,GAEZ3+G,KAAM,CACJ0+G,QAAS,GACTI,MAAO,KACPxgD,QAAS,KACTqgD,SAAU,GAEZJ,SAAU,CACR98G,QAAS,UACT68D,QAAS,YAEXv8D,KAAM,CACJ28G,QAAS,CAAC,UACVC,SAAU,GAEZI,OAAQ,CACNL,QAAS,CAAC,QACVC,SAAU,GAEZL,MAAO,CACLI,QAAS,CAAC,QACVpgD,QAAS,SAEX0gD,UAAW,CACTN,QAAS,CAAC,QACVpgD,QAAS,SAEX2gD,cAAe,CACbP,QAAS,CAAC,YACVpgD,QAAS,SAGXg/C,MAAO,UACPF,KAAM,UACNC,OAAQ,UACRE,QAAS,UAET2B,UAAW,CACTR,QAAS,CAAC,MACV9iB,MAAO,SAAC2gB,EAAKxQ,GAAE,MAAM,CACnB7/E,EAAGzwB,KAAK02E,MAAa,IAAP45B,EAAG7/E,GACjB4+E,EAAGrvG,KAAK02E,MAAa,IAAP45B,EAAGjB,GACjB3uG,EAAGV,KAAK02E,MAAa,IAAP45B,EAAG5vG,GAClB,GAEHwhH,YAAa,CACXe,QAAS,CAAC,MACVI,MAAO,cACPxgD,QAAS,eAGXhgC,UAAW,CACTogF,QAAS,CAAC,MACV9iB,MAAO,SAAC2gB,EAAKxQ,GAAE,OAAK8S,EAAAA,EAAAA,IAAW,EAAItC,EAAKxQ,GAAIU,GAAG,GAEjD0S,mBAAoB,CAClBT,QAAS,CAAC,aACVI,MAAO,YACPM,WAAW,GAEbC,kBAAmB,CACjBX,QAAS,CAAC,YACVI,MAAO,YACPM,UAAW,YAEbE,mBAAoB,CAClBZ,QAAS,CAAC,SACVI,MAAO,YACPM,WAAW,GAEbG,mBAAoB,CAClBb,QAAS,CAAC,aACVI,MAAO,YACPM,UAAW,YAEbI,uBAAwB,CACtBd,QAAS,CAAC,iBACVI,MAAO,YACPM,UAAW,YAEbK,cAAe,CACbf,QAAS,CAAC,QACVI,MAAO,YACPM,WAAW,GAEbM,cAAe,CACbhB,QAAS,CAAC,QACVI,MAAO,YACPM,UAAW,YAEbO,cAAe,CACbjB,QAAS,CAAC,YAAa,iBACvB9iB,MAAO,SAAC2gB,EAAKxQ,EAAI/rG,GAAI,OAAKksG,EAAAA,EAAAA,IAAOH,EAAI/rG,EAAK,GAG5C49G,QAAS,CACPc,QAAS,CAAC,MACVpgD,QAAS,WAEXshD,iBAAkB,CAChBlB,QAAS,CAAC,aACVI,MAAO,UACPM,WAAW,GAEbS,gBAAiB,CACfnB,QAAS,CAAC,YACVI,MAAO,UACPM,UAAW,YAEbU,iBAAkB,CAChBpB,QAAS,CAAC,SACVI,MAAO,UACPM,WAAW,GAEbW,iBAAkB,CAChBrB,QAAS,CAAC,aACVI,MAAO,UACPM,UAAW,YAEbY,qBAAsB,CACpBtB,QAAS,CAAC,iBACVI,MAAO,UACPM,UAAW,YAEba,YAAa,CACXvB,QAAS,CAAC,QACVI,MAAO,UACPM,WAAW,GAEbc,YAAa,CACXxB,QAAS,CAAC,QACVI,MAAO,UACPM,UAAW,YAEbe,YAAa,CACXzB,QAAS,CAAC,UAAW,eACrB9iB,MAAO,SAAC2gB,EAAKxQ,EAAI/rG,GAAI,OAAKksG,EAAAA,EAAAA,IAAOH,EAAI/rG,EAAK,GAG5CogH,aAAc,cACdC,sBAAuB,CACrB3B,QAAS,CAAC,sBACVI,MAAO,YACPwB,QAAS,eACTlB,WAAW,GAEbmB,sBAAuB,CACrB7B,QAAS,CAAC,sBACVI,MAAO,YACPwB,QAAS,eACTlB,WAAW,GAEboB,qBAAsB,CACpB9B,QAAS,CAAC,qBACVI,MAAO,YACPwB,QAAS,eACTlB,UAAW,YAEbqB,sBAAuB,CACrB/B,QAAS,CAAC,sBACVI,MAAO,YACPwB,QAAS,eACTlB,UAAW,YAEbsB,iBAAkB,CAChBhC,QAAS,CAAC,iBACVI,MAAO,YACPwB,QAAS,eACTlB,WAAW,GAEbuB,iBAAkB,CAChBjC,QAAS,CAAC,iBACVI,MAAO,YACPwB,QAAS,eACTlB,UAAW,YAEbwB,iBAAkB,CAChBlC,QAAS,CAAC,eAAgB,oBAC1B9iB,MAAO,SAAC2gB,EAAKxQ,EAAI/rG,GAAI,OAAKksG,EAAAA,EAAAA,IAAOH,EAAI/rG,EAAK,GAG5C69G,aAAc,CACZa,QAAS,CAAC,MACV9iB,MAAO,SAAC2gB,EAAKxQ,GAAE,OAAK8S,EAAAA,EAAAA,IAAW,EAAItC,EAAKxQ,GAAIU,GAAG,GAEjDoU,sBAAuB,CACrBnC,QAAS,CAAC,sBACVI,MAAO,eACPwB,QAAS,eACTlB,WAAW,GAEb0B,sBAAuB,CACrBpC,QAAS,CAAC,sBACVI,MAAO,eACPwB,QAAS,eACTlB,WAAW,GAEb2B,sBAAuB,CACrBrC,QAAS,CAAC,sBACVI,MAAO,eACPwB,QAAS,eACTlB,UAAW,YAEb4B,iBAAkB,CAChBtC,QAAS,CAAC,iBACVI,MAAO,eACPwB,QAAS,eACTlB,WAAW,GAEb6B,iBAAkB,CAChBvC,QAAS,CAAC,iBACVI,MAAO,eACPwB,QAAS,eACTlB,UAAW,YAEb8B,iBAAkB,CAChBxC,QAAS,CAAC,eAAgB,oBAC1B9iB,MAAO,SAAC2gB,EAAKxQ,EAAI/rG,GAAI,OAAKksG,EAAAA,EAAAA,IAAOH,EAAI/rG,EAAK,GAG5CmhH,oBAAqB,CACnBzC,QAAS,CAAC,WACV9iB,MAAO,SAAC2gB,EAAKxQ,GAAE,OAAK8S,EAAAA,EAAAA,IAAW,EAAItC,EAAKxQ,GAAIU,GAAG,GAEjD2U,6BAA8B,CAC5B1C,QAAS,CAAC,yBACVI,MAAO,sBACPwB,QAAS,sBACTlB,WAAW,GAEbiC,6BAA8B,CAC5B3C,QAAS,CAAC,yBACVI,MAAO,sBACPwB,QAAS,sBACTlB,WAAW,GAEbkC,6BAA8B,CAC5B5C,QAAS,CAAC,yBACVI,MAAO,sBACPwB,QAAS,sBACTlB,UAAW,YAEbmC,wBAAyB,CACvB7C,QAAS,CAAC,oBACVI,MAAO,sBACPwB,QAAS,sBACTlB,WAAW,GAEboC,wBAAyB,CACvB9C,QAAS,CAAC,oBACVI,MAAO,sBACPwB,QAAS,sBACTlB,UAAW,YAEbqC,wBAAyB,CACvB/C,QAAS,CAAC,sBAAuB,oBACjC9iB,MAAO,SAAC2gB,EAAKxQ,EAAI/rG,GAAI,OAAKksG,EAAAA,EAAAA,IAAOH,EAAI/rG,EAAK,GAG5C0hH,UAAW,CACThD,QAAS,CAAC,QACVI,MAAO,KACPM,UAAW,WACXxjB,MAAO,SAAC2gB,EAAKv8G,GAAI,OAAK6+G,EAAAA,EAAAA,IAAW,GAAKtC,EAAKv8G,GAAMysG,GAAG,GAGtDkV,SAAU,CACRjD,QAAS,CAAC,QACVI,MAAO,KACPM,UAAW,YAGbwC,cAAe,CACblD,QAAS,CAAC,UACVI,MAAO,KACPM,UAAW,YAGbyC,aAAc,CACZnD,QAAS,CAAC,SACVI,MAAO,KACPM,UAAW,YAGbpE,OAAQ,CACN0D,QAAS,CAAC,MACVpgD,QAAS,SACTs9B,MAAO,SAAC2gB,EAAK1Q,GAAE,OAAKgT,EAAAA,EAAAA,IAAW,EAAItC,EAAK1Q,GAAIY,GAAG,GAGjDpgF,KAAM,CACJqyF,QAAS,CAAC,SAAU,MACpBoD,SAAU,OACVlmB,MAAO,SAAC2gB,EAAKwC,EAAQhT,GAAE,OAAKH,EAAAA,EAAAA,IAAWmT,EAAQ,GAAKhT,EAAG,GAEzDgW,SAAU,CACRrD,QAAS,CAAC,QACVI,MAAO,OACPM,WAAW,GAGbzzG,KAAM,CACJ+yG,QAAS,CAAC,KAAM,QAChBsD,iBAAiB,EACjBpmB,MAAO,SAAC2gB,EAAKxQ,EAAI/rG,GAAI,OAAKksG,EAAAA,EAAAA,IAAOH,EAAI/rG,EAAK,GAI5CiiH,OAAQ,CACNvD,QAAS,CAAC,QACVI,MAAO,KACPM,WAAW,GAEb8C,OAAQ,CACNxD,QAAS,CAAC,QACVI,MAAO,KACPM,UAAW,YAIbxwD,MAAO,CACL8vD,QAAS,CAAC,MACVpgD,QAAS,SAEX6jD,UAAW,CACTzD,QAAS,CAAC,QACVI,MAAO,QACPM,WAAW,GAEbgD,WAAY,CACV1D,QAAS,CAAC,UACVI,MAAO,QACPxgD,QAAS,QACT8gD,WAAW,GAEbiD,UAAW,CACT3D,QAAS,CAAC,UACVI,MAAO,QACPM,UAAW,YAIb9D,OAAQ,OACRgH,WAAY,CACV5D,QAAS,CAAC,UACVI,MAAO,SACPM,WAAW,GAEbmD,WAAY,CACV7D,QAAS,CAAC,UACVI,MAAO,SACPM,UAAW,YAIb11D,IAAK,CACHg1D,QAAS,CAAC,QAEZ8D,QAAS,CACP9D,QAAS,CAAC,WACVI,MAAO,MACPM,WAAW,GAEbqD,cAAe,CACb/D,QAAS,CAAC,QACVI,MAAO,KACPM,WAAW,GAIb7E,IAAK,CACHmE,QAAS,CAAC,MACV4B,QAAS,MACThiD,QAAS,OAEXokD,QAAS,CACPhE,QAAS,CAAC,UACVI,MAAO,MACPM,WAAW,GAEbuD,aAAc,CACZjE,QAAS,CAAC,WACVI,MAAO,WACPwB,QAAS,MACTlB,WAAW,GAEbwD,cAAe,CACblE,QAAS,CAAC,WACVI,MAAO,YACPwB,QAAS,MACTlB,WAAW,GAIbyD,WAAY,CACVnE,QAAS,CAAC,OACVI,MAAO,OAETgE,eAAgB,CACdpE,QAAS,CAAC,WACVI,MAAO,MACPwB,QAAS,aACTlB,WAAW,GAEb2D,gBAAiB,CACfrE,QAAS,CAAC,cACVI,MAAO,OAETkE,oBAAqB,CACnBtE,QAAS,CAAC,gBACVI,MAAO,WACPwB,QAAS,aACTlB,WAAW,GAEb6D,iBAAkB,CAChBvE,QAAS,CAAC,cACVI,MAAO,OAEToE,qBAAsB,CACpBxE,QAAS,CAAC,iBACVI,MAAO,YACPwB,QAAS,aACTlB,WAAW,GAIb+D,WAAY,CACVzE,QAAS,CAAC,OACVI,MAAO,MACPljB,MAAO,SAAC2gB,EAAKhC,GAAG,OAAKsE,EAAAA,EAAAA,IAAiB,GAANtC,EAAUhC,GAAK9N,GAAG,GAEpD2W,eAAgB,CACd1E,QAAS,CAAC,WACVI,MAAO,MACPwB,QAAS,aACTlB,WAAW,GAEbiE,oBAAqB,CACnB3E,QAAS,CAAC,gBACVI,MAAO,WACPwB,QAAS,aACTlB,WAAW,GAEbkE,qBAAsB,CACpB5E,QAAS,CAAC,iBACVI,MAAO,YACPwB,QAAS,aACTlB,WAAW,GAIbmE,YAAa,CACX7E,QAAS,CAAC,MAAO,MACjB9iB,MAAO,SAAC2gB,EAAKhC,EAAKxO,GAAE,OAAKH,EAAAA,EAAAA,IAAW2O,EAAK,IAAMxO,EAAG,GAEpDyX,gBAAiB,CACf9E,QAAS,CAAC,UAAW,eACrBI,MAAO,MACPwB,QAAS,cACT1kB,MAAO,SAAC2gB,EAAKv8G,EAAMu6G,GAAG,OAAK3O,EAAAA,EAAAA,IAAW5rG,EAAM,IAAMu6G,EAAI,GAExDkJ,qBAAsB,CACpB/E,QAAS,CAAC,eAAgB,eAC1BI,MAAO,WACPwB,QAAS,cACT1kB,MAAO,SAAC2gB,EAAKv8G,EAAMu6G,GAAG,OAAK3O,EAAAA,EAAAA,IAAW5rG,EAAM,IAAMu6G,EAAI,GAExDmJ,sBAAuB,CACrBhF,QAAS,CAAC,gBAAiB,eAC3BI,MAAO,YACPwB,QAAS,cACT1kB,MAAO,SAAC2gB,EAAKv8G,EAAMu6G,GAAG,OAAK3O,EAAAA,EAAAA,IAAW5rG,EAAM,IAAMu6G,EAAI,GAIxD//G,MAAO,CACLkkH,QAAS,CAAC,MACVpgD,QAAS,SAEXqlD,UAAW,CACTjF,QAAS,CAAC,QACVI,MAAO,QACPM,WAAW,GAEbwE,eAAgB,CACdlF,QAAS,CAAC,aACVI,MAAO,aACPwB,QAAS,QACTlB,WAAW,GAEbyE,gBAAiB,CACfnF,QAAS,CAAC,cACVI,MAAO,cACPwB,QAAS,QACTlB,WAAW,GAGb0E,WAAY,CACVpF,QAAS,CAAC,QACVpgD,QAAS,SAEXylD,eAAgB,CACdrF,QAAS,CAAC,QACVI,MAAO,QACPwB,QAAS,aACTlB,WAAW,GAEb4E,oBAAqB,CACnBtF,QAAS,CAAC,aACVI,MAAO,aACPwB,QAAS,aACTlB,WAAW,GAGb6E,aAAc,CACZvF,QAAS,CAAC,WACVpgD,QAAS,SAEX4lD,iBAAkB,CAChBxF,QAAS,CAAC,QACVI,MAAO,QACPwB,QAAS,eACTlB,WAAW,GAEb+E,sBAAuB,CACrBzF,QAAS,CAAC,aACVI,MAAO,aACPwB,QAAS,eACTlB,WAAW,GAGbgF,aAAc,CACZ1F,QAAS,CAAC,UACVpgD,QAAS,SAEX+lD,iBAAkB,CAChB3F,QAAS,CAAC,QACVI,MAAO,QACPwB,QAAS,eACTlB,WAAW,GAEbkF,sBAAuB,CACrB5F,QAAS,CAAC,aACVI,MAAO,aACPwB,QAAS,eACTlB,WAAW,GAGbmF,aAAc,CACZ7F,QAAS,CAAC,QACVpgD,QAAS,SAEXkmD,iBAAkB,CAChB9F,QAAS,CAAC,QACVI,MAAO,QACPwB,QAAS,eACT1kB,MAAO,SAAC2gB,EAAKv8G,GAAI,OAAKwsG,EAAAA,EAAAA,IAAgBxsG,GAAMysG,GAAG,EAC/C2S,WAAW,GAEbqF,sBAAuB,CACrB/F,QAAS,CAAC,aACVI,MAAO,aACPwB,QAAS,eACTlB,WAAW,GAGbsF,gBAAiB,CACfhG,QAAS,CAAC,cACVpgD,QAAS,cAEXqmD,oBAAqB,CACnBjG,QAAS,CAAC,kBACVI,MAAO,UACPwB,QAAS,kBACTlB,WAAW,GAGbwF,kBAAmB,CACjBlG,QAAS,CAAC,gBACVpgD,QAAS,cAEXumD,sBAAuB,CACrBnG,QAAS,CAAC,oBACVI,MAAO,UACPwB,QAAS,oBACTlB,WAAW,GAGb0F,kBAAmB,CACjBpG,QAAS,CAAC,gBACVpgD,QAAS,cAEXymD,sBAAuB,CACrBrG,QAAS,CAAC,oBACVI,MAAO,UACPwB,QAAS,oBACTlB,WAAW,GAGb4F,kBAAmB,CACjBtG,QAAS,CAAC,gBACVpgD,QAAS,cAEX2mD,sBAAuB,CACrBvG,QAAS,CAAC,oBACVI,MAAO,UACPwB,QAAS,oBACTlB,WAAW,GAGb8F,kBAAmB,SACnBC,sBAAuB,CACrBzG,QAAS,CAAC,OAAQ,qBAClBI,MAAO,QACPwB,QAAS,oBACTlB,UAAW,MAGbgG,aAAc,WACdC,iBAAkB,CAChB3G,QAAS,CAAC,OAAQ,gBAClBI,MAAO,QACPwB,QAAS,eACTlB,UAAW,MAGbhB,OAAQ,CACNM,QAAS,CAAC,OAGZ4G,sBAAuB,CACrB5G,QAAS,CAAC,WAGZ6G,wBAAyB,CACvB7G,QAAS,CAAC,QACVI,MAAO,cACPwB,QAAS,wBACTlB,WAAW,GAGboG,wBAAyB,CACvB9G,QAAS,CAAC,QACVI,MAAO,cACPwB,QAAS,wBACTlB,UAAW,YAGbqG,0BAA2B,CACzB/G,QAAS,CAAC,UACVpgD,QAAS,SACTs9B,MAAO,SAAC2gB,EAAKvB,GAAM,OAAK6D,EAAAA,EAAAA,IAAW,EAAItC,EAAKvB,GAAQvO,GAAG,GAGzDiZ,sBAAuB,CACrBhH,QAAS,CAAC,yBACV9iB,MAAO,SAAC2gB,EAAK5B,GAAW,OAAKkE,EAAAA,EAAAA,IAAW,EAAItC,EAAK5B,GAAalO,GAAG,GAGnEkZ,wBAAyB,CACvBjH,QAAS,CAAC,QACVI,MAAO,cACPwB,QAAS,wBACTlB,WAAW,GAGbwG,wBAAyB,CACvBlH,QAAS,CAAC,QACVI,MAAO,cACPwB,QAAS,wBACTlB,UAAW,YAGbyG,0BAA2B,CACzBnH,QAAS,CAAC,yBACVpgD,QAAS,SACTs9B,MAAO,SAAC2gB,EAAKvB,GAAM,OAAK6D,EAAAA,EAAAA,IAAW,EAAItC,EAAKvB,GAAQvO,GAAG,G,mvBC3tBpD,IAAMrsF,EAAkB,EAElB0lG,EAAiB,SAAChH,GAG7B,IAHsD,IAAlB7kH,EAAIuE,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAGg/G,EAAAA,GACrC93G,EAAQ,CAACo5G,GACX/rE,EAAS94C,EAAK6kH,GACX/rE,GACLrtC,EAAMsD,QAAQ+pC,GACdA,EAAS94C,EAAK84C,GAEhB,OAAOrtC,CACT,EAEaqgH,EAAY,SAACjH,GAAyD,IAAlDwB,EAAO9hH,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAGsgH,EAAOkH,EAAWxnH,UAAAlD,OAAA,EAAAkD,UAAA,QAAA4F,EAAEg2F,EAAM57F,UAAAlD,OAAA,EAAAkD,UAAA,QAAA4F,EAAEk6D,EAAO9/D,UAAAlD,OAAA,EAAAkD,UAAA,QAAA4F,EAC5E,OAAO0hH,EAAehH,GAAO/lH,KAAI,SAACktH,GAAY,MAAM,CAClDA,IAAiBnH,EACb1kB,EAAOkmB,GACPlmB,EAAO6rB,GACXA,IAAiBnH,EACbxgD,EAAQ0nD,IAAgB,EACxB1nD,EAAQ2nD,GACb,GACH,EAEMC,EAAkB,SAAC57G,EAAK67G,GAC5B,IAAMlsH,EAAOksH,EAAY77G,GACzB,GAAoB,iBAATrQ,GAAqBA,EAAK8B,WAAW,MAC9C,MAAO,CAAC9B,EAAK8E,UAAU,IAEvB,GAAa,OAAT9E,EAAe,MAAO,GAC1B,IAAQykH,EAA4BzkH,EAA5BykH,QAASI,EAAmB7kH,EAAnB6kH,MAAOwB,EAAYrmH,EAAZqmH,QAClB8F,EAAYtH,EACdgH,EAAehH,GAAO/lH,KAAI,SAAAktH,GAC1B,OAAOA,IAAiBnH,EACpBwB,GAAWxB,EACXmH,CACN,IACE,GACJ,OAAI7mH,MAAM2G,QAAQ24G,GACT,GAAPxjH,QAAAU,EAAAA,EAAAA,GAAW8iH,IAAO9iH,EAAAA,EAAAA,GAAKwqH,KAEvBxqH,EAAAA,EAAAA,GAAWwqH,EAGjB,EA+DMC,EAAkB,SAACxlH,GACvB,MAAqB,YAAjB05B,EAAAA,EAAAA,GAAO15B,GAA2BA,EAC/B,CACL69G,QAAS79G,EAAM9E,WAAW,MAAQ,CAAC8E,EAAM9B,UAAU,IAAM,GACzD0C,QAASZ,EAAM9E,WAAW,KAAO8E,OAAQuD,EAE7C,EAMa84G,EAAiB,SAC5B3hH,GAGG,IAFH4qH,EAAW3nH,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAGigH,EAAAA,GACd6H,EAAO9nH,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG0nH,EAEJrlH,EAAQwlH,EAAgBF,EAAY5qH,IAC1C,GAAsB,OAAlBsF,EAAMy9D,QAAV,CACA,GAAIz9D,EAAMy9D,QAAS,OAAOz9D,EAAMy9D,QAChC,IAAMioD,EAAuB,SAAvBA,EAAwBj8G,GAAuB,IAAlBk8G,EAAOhoH,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,CAACjD,GACtCkrH,EAAUH,EAAQh8G,EAAK67G,GAAa,GAC1C,QAAgB/hH,IAAZqiH,EAAJ,CACA,IAAMC,EAAaP,EAAYM,GAC/B,QAAmBriH,IAAfsiH,EACJ,OAAIA,EAAWpoD,SAA0B,OAAfooD,EACjBA,EAAWpoD,QACTooD,EAAWhI,SAAW8H,EAAQ7oH,SAAS8oH,GACzCF,EAAqBE,EAAS,GAAFvrH,QAAAU,EAAAA,EAAAA,GAAM4qH,GAAO,CAAEC,KAE3C,IARwB,CAUnC,EACA,OAAI5lH,EAAM69G,QACD6H,EAAqBhrH,QAD9B,CAfkC,CAkBpC,EASaorH,EAAe,SAC1BprH,GAGG,IAFH4qH,EAAW3nH,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAGigH,EAAAA,GACd6H,EAAO9nH,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG0nH,EAEJrlH,EAAQwlH,EAAgBF,EAAY5qH,IAC1C,GAAIiiH,EAAAA,GAAOjiH,GAAI,OAAOA,EACtB,GAAoB,OAAhBsF,EAAMi+G,MAAV,CACA,GAAIj+G,EAAMi+G,MAAO,OAAOj+G,EAAMi+G,MAC9B,IAAM8H,EAAqB,SAArBA,EAAsBt8G,GAAuB,IAAlBk8G,EAAOhoH,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,CAACjD,GACpCkrH,EAAUH,EAAQh8G,EAAK67G,GAAa,GAC1C,QAAgB/hH,IAAZqiH,EAAJ,CACA,IAAMC,EAAaP,EAAYM,GAC/B,QAAmBriH,IAAfsiH,EACJ,OAAIA,EAAW5H,OAAwB,OAAf4H,EACfA,EAAW5H,MACT4H,EAAWhI,QACbkI,EAAmBF,EAAY,GAAFxrH,QAAAU,EAAAA,EAAAA,GAAM4qH,GAAO,CAAEC,KAE5C,IARwB,CAUnC,EACA,OAAI5lH,EAAM69G,QACDkI,EAAmBrrH,QAD5B,CAfgC,CAkBlC,EAKasrH,EA9HW,WAkCtB,IA/BG,IAFHV,EAAW3nH,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAGigH,EAAAA,GACd6H,EAAO9nH,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG0nH,EAIJY,EAAUhtH,OAAOD,KAAKssH,GACtBY,EAAS,IAAIziH,IAAIwiH,GACjBE,EAAQ,IAAI1iH,IACZ2iH,EAAS,IAAI3iH,IACb4iH,EAAc,GAAHhsH,OAAO4rH,GAClBhZ,EAAS,GAETj+F,EAAO,SAAPA,EAAQs3G,GACZ,GAAIJ,EAAO1hH,IAAI8hH,GAEbJ,EAAM,OAAQI,GACdH,EAAM9gG,IAAIihG,GAEVb,EAAQa,EAAMhB,GAAahpG,QAAQtN,GAEnCm3G,EAAK,OAAQG,GACbF,EAAO/gG,IAAIihG,GAEXrZ,EAAO7sG,KAAKkmH,QACP,GAAIH,EAAM3hH,IAAI8hH,GACnB/oG,QAAQwpB,MAAM,0CACdkmE,EAAO7sG,KAAKkmH,QACP,IAAIF,EAAO5hH,IAAI8hH,GAGpB,MAAM,IAAI3tH,MAAM,oCAEpB,EACO0tH,EAAY5rH,OAAS,GAC1BuU,EAAKq3G,EAAYhiH,OAKnB,OAAO4oG,EAAO/0G,KAAI,SAACkB,EAAMwL,GAAK,MAAM,CAAExL,KAAAA,EAAMwL,MAAAA,EAAO,IAAGxJ,MAAK,SAAAI,EAAAa,GAAoD,IAA3ChB,EAACG,EAAPpC,KAAgBmtH,EAAE/qH,EAAToJ,MAAqBtJ,EAACe,EAAPjD,KAAgBotH,EAAEnqH,EAATuI,MACvF6hH,EAAQhB,EAAQpqH,EAAGiqH,GAAa7qH,OAChCisH,EAAQjB,EAAQnqH,EAAGgqH,GAAa7qH,OAEtC,OAAIgsH,IAAUC,GAAoB,IAAVA,GAAyB,IAAVD,EAAqBF,EAAKC,EACnD,IAAVC,GAAyB,IAAVC,GAAqB,EAC1B,IAAVA,GAAyB,IAAVD,EAAoB,EAChC,CACT,IAAGvuH,KAAI,SAAAyG,GAAO,OAAAA,EAAJvF,IAAe,GAC3B,CA6E4ButH,CAC1B1tH,OAAOkT,QAAQyxG,EAAAA,IACZxiH,MAAK,SAAAwD,EAAAG,GAAA,IAAAC,GAAAN,EAAAA,EAAAA,GAAAE,EAAA,GAAMgoH,GAAF5nH,EAAA,GAAIA,EAAA,IAAAuU,GAAA7U,EAAAA,EAAAA,GAAAK,EAAA,GAAQ8nH,GAAFtzG,EAAA,GAAIA,EAAA,WAAQqzG,GAAMA,EAAG9I,UAAa,IAAO+I,GAAMA,EAAG/I,UAAa,EAAE,IACpFhoG,QAAO,SAACC,EAAGvC,GAAA,IAAAE,GAAAhV,EAAAA,EAAAA,GAAA8U,EAAE,GAAC9Y,EAACgZ,EAAA,GAAE7U,EAAC6U,EAAA,UAAAxZ,EAAAA,EAAA,GAAY6b,GAAG,IAAAvI,EAAAA,EAAAA,GAAA,GAAG9S,EAAImE,GAAC,GAAK,CAAC,IAOvCioH,EAAY7tH,OAAOkT,QAAQyxG,EAAAA,IAAkB9nG,QAAO,SAACC,EAAGnC,GAAa,IAAAC,GAAAnV,EAAAA,EAAAA,GAAAkV,EAAA,GAAVlZ,EAACmZ,EAAA,GACjE4pD,GADoE5pD,EAAA,GAC1DwoG,EAAe3hH,EAAGkjH,EAAAA,GAAkByH,IACpD,OAAI5nD,EACFvjE,EAAAA,EAAA,GACK6b,GAAG,IAAAvI,EAAAA,EAAAA,GAAA,GACLiwD,EAAU,CACTspD,aAAcvJ,EAAAA,GAAgB//C,IAAY,EAC1CupD,cAAe,GAAF3sH,QAAAU,EAAAA,EAAAA,GAAQgb,EAAI0nD,IAAY1nD,EAAI0nD,GAASupD,eAAkB,IAAK,CAAAtsH,OAItEqb,CAEX,GAAG,CAAC,GAKS8lG,EAAsB,SAACoL,EAAaC,EAAUxL,GACzD,GAA2B,iBAAhBuL,IAA6BA,EAAY/rH,WAAW,MAAO,OAAO+rH,EAC7E,IAAIE,EAAc,KAElBC,EAA6BH,EAAY/yE,MAAM,MAAMh8C,KAAI,SAAA4rF,GAAG,OAAIA,EAAIzlF,MAAM,IAACgpH,GAAA3oH,EAAAA,EAAAA,GAAA0oH,EAAA,GAApEE,EAAQD,EAAA,GAAEE,EAAQF,EAAA,GAMzB,OAJAF,EAAcD,EADOI,EAASppH,UAAU,IAEpCqpH,IACFJ,GAAcnJ,EAAAA,EAAAA,IAAWh9F,OAAOwmG,WAAWD,GAAY7L,EAAKyL,GAAavb,KAEpEub,CACT,EAMa/N,EAAY,SAACH,EAAcwO,GAAa,OAAKzB,EAAalwG,QAAO,SAAAhC,EAAsBrK,GAAQ,IAOtGi+G,EAP2EnuB,EAAMzlF,EAANylF,OAAQ97B,EAAO3pD,EAAP2pD,QACjFwpD,EAAchO,EAAaxvG,GAC3BzJ,EAAQwlH,EAAgB5H,EAAAA,GAAiBn0G,IACzCk+G,EAAOtC,EAAgB57G,EAAKm0G,EAAAA,IAC5BgK,IAAgB5nH,EAAMu+G,UACtBkB,EAAUz/G,EAAMy/G,SAAWz/G,EAAMi+G,MAKrCyJ,EADEE,GACgB9c,EAAAA,EAAAA,IAAgB5wG,EAAC,CAAD,EAC1Bq/F,EAAOouB,EAAK,MAAOz0E,EAAAA,EAAAA,IAAQ+lE,EAAaxvG,IAAQ,WAAWmiG,KACjEsZ,EACEY,EAAar8G,IAAQ,KACrBg2G,GAAW,KACXpD,EAAeoD,GACflmB,EACA97B,IAGKgiD,GAAWA,IAAYh2G,EACd8vF,EAAOkmB,KAAYvsE,EAAAA,EAAAA,IAAQ+lE,EAAawG,IAAU7T,IAElDrS,EAAO2R,KAAMh4D,EAAAA,EAAAA,IAAQ+lE,EAAa/N,IAGtD,IACMwQ,GADgBtR,EAAAA,EAAAA,IAAkBsd,GAAmB,GAC/B,GAAK,EAE7BG,EAAc,KAClB,GAAIZ,EAAa,CAEf,IAAIE,EAAcF,EAClB,GAAoB,gBAAhBE,EAA+B,CAEjC,IAAMvc,EAASsa,EACbY,EAAar8G,GACbA,EACA4yG,EAAe5yG,IAAQA,EACvB8vF,EACA97B,GACAvgE,MAAM,GAAI,GACZiqH,EAAWjtH,EAAAA,EAAA,IACN4wG,EAAAA,EAAAA,KACD53D,EAAAA,EAAAA,IAAQ,WAAW04D,IACnBhB,IACD,IACDvvG,EAAG,GAEP,KAAkC,iBAAhB4rH,GAA4BA,EAAY/rH,WAAW,MACnEisH,EAActL,EACZoL,GACA,SAAAnL,GAAY,OAAIviB,EAAOuiB,IAAiB7C,EAAa6C,EAAa,GAClEJ,GAE8B,iBAAhBuL,GAA4BA,EAAY/rH,WAAW,OACnEisH,GAAcj0E,EAAAA,EAAAA,IAAQi0E,GAAavb,KAErCic,EAAW3tH,EAAA,GAAQitH,EACrB,MAAO,GAAInnH,EAAK,QAEd6nH,GAAc30E,EAAAA,EAAAA,IAAQlzC,EAAK,SAAU4rG,QAChC,CAEL,IACMkc,EAAY9nH,EAAM+6F,OADC,SAAC2gB,EAAKqM,GAAG,OAAA7tH,EAAA,GAAW6tH,EAAG,EAGhD,GAAI/nH,EAAMu+G,UACR,GAAwB,OAApBv+G,EAAMu+G,UACRsJ,GAAchc,EAAAA,EAAAA,IAAc6b,GAAiB9b,QACxC,CACL,IAAI7Q,EAAK7gG,EAAA,GAAQq/F,EAAOouB,EAAK,KACzB3nH,EAAM+6F,QACRA,EAAQ+sB,EAAShtH,WAAC,EAAD,CAAC4gH,GAAGrhH,QAAAU,EAAAA,EAAAA,GAAK4sH,EAAKzvH,KAAI,SAAC6vH,GAAG,OAAA7tH,EAAA,GAAWq/F,EAAOwuB,GAAI,QAE/DF,GAAcrc,EAAAA,EAAAA,IACZkc,EAAextH,EAAA,GACV6gG,GACe,aAApB/6F,EAAMu+G,UAEV,MAGAsJ,EAAcC,EAAShtH,WAAC,EAAD,CACrB4gH,GAAGrhH,QAAAU,EAAAA,EAAAA,GACA4sH,EAAKzvH,KAAI,SAAC6vH,GAAG,OAAA7tH,EAAA,GAAWq/F,EAAOwuB,GAAI,MAG5C,CACA,IAAKF,EACH,MAAM,IAAIlvH,MAAM,+BAAkC8Q,GAGpD,IAAM07G,EAAcnlH,EAAMy9D,SAAW4+C,EAAe5yG,GAC9Cu+G,EAAiBhoH,EAAMy9D,QAE7B,GAAuB,OAAnBuqD,EACFH,EAAYxsH,EAAI,OACX,GAAoB,gBAAhB4rH,EACTY,EAAYxsH,EAAI,MACX,CACL,IAAM4sH,EAAmBD,QAAiDzkH,IAA/BkkH,EAActC,GAEnD+C,EAAiBP,EAAK,GACtBQ,EAAkBD,GAAkB3uB,EAAO2uB,GAE5CF,IAAkBG,GAAoBnoH,EAAMu+G,WAAgC,OAAnByJ,EAIlDG,GAAoBhD,EAK1BgD,GAAyC,IAAtBA,EAAgB9sH,EAErCwsH,EAAYxsH,EAAI,EAGhBwsH,EAAYxsH,EAAI2lB,OACdinG,EACIR,EAActC,IACb2B,EAAU3B,IAAgB,CAAC,GAAG4B,qBAXhCc,EAAYxsH,EAHnBwsH,EAAYxsH,EAAI8sH,EAAgB9sH,CAkBpC,CAMA,OAJI2lB,OAAO+B,MAAM8kG,EAAYxsH,SAAwBkI,IAAlBskH,EAAYxsH,KAC7CwsH,EAAYxsH,EAAI,GAGd8pH,EACK,CACL5rB,OAAMr/F,EAAAA,EAAA,GAAOq/F,GAAM,IAAA/rF,EAAAA,EAAAA,GAAA,GAAG/D,EAAMo+G,IAC5BpqD,QAAOvjE,EAAAA,EAAA,GAAOujE,GAAO,IAAAjwD,EAAAA,EAAAA,GAAA,GAAG23G,EAAc0C,EAAYxsH,KAG7C,CACLk+F,OAAMr/F,EAAAA,EAAA,GAAOq/F,GAAM,IAAA/rF,EAAAA,EAAAA,GAAA,GAAG/D,EAAMo+G,IAC5BpqD,QAAAA,EAGN,GAAG,CAAE87B,OAAQ,CAAC,EAAG97B,QAAS,CAAC,GAAI,C,spBCvZ/B,IAAM2qD,EAAiB,SAACC,GACtB,QAAc9kH,IAAV8kH,EAAJ,CACA,IAAQttB,EAAgBstB,EAAhBttB,MAAOt6F,EAAS4nH,EAAT5nH,KACf,GAAqB,iBAAVs6F,EAAX,CACA,IAAM6Q,GAAMT,EAAAA,EAAAA,IAAQpQ,GACpB,GAAW,MAAP6Q,EAAJ,CACA,IAAM0c,EAAa,OAAHjuH,OAAUO,KAAK02E,MAAMs6B,EAAIvgF,GAAE,MAAAhxB,OAAKO,KAAK02E,MAAMs6B,EAAI3B,GAAE,MAAA5vG,OAAKO,KAAK02E,MAAMs6B,EAAItwG,GAAE,KACjFitH,EAAY,QAAHluH,OAAWO,KAAK02E,MAAMs6B,EAAIvgF,GAAE,MAAAhxB,OAAKO,KAAK02E,MAAMs6B,EAAI3B,GAAE,MAAA5vG,OAAKO,KAAK02E,MAAMs6B,EAAItwG,GAAE,SACjFktH,EAAa,QAAHnuH,OAAWO,KAAK02E,MAAMs6B,EAAIvgF,GAAE,MAAAhxB,OAAKO,KAAK02E,MAAMs6B,EAAI3B,GAAE,MAAA5vG,OAAKO,KAAK02E,MAAMs6B,EAAItwG,GAAE,SAClFmtH,EAAc,CAClB,6BAA8BH,EAC9B,4BAA6BC,EAC7B,6BAA8BC,GAEhC,MAAa,YAAT/nH,EACFvG,EAAA,CACEwuH,gBAAiB,CACf,oCAAmC,GAAAruH,OAChCkuH,EAAS,SAAAluH,OACTkuH,EAAS,aAAAluH,OACTmuH,EAAU,aAAAnuH,OACVmuH,EAAU,UACbnhH,KAAK,KACPshH,mBAAoB,OACjBF,GAEa,UAAThoH,EACTvG,EAAA,CACEwtH,gBAAiBc,GACdC,GAEa,SAAThoH,EACTvG,EAAA,CACEwuH,gBAAiB,CACf,4BAA2B,GAAAruH,OACxBiuH,EAAU,SAAAjuH,OACViuH,EAAU,SACb,mBACAjhH,KAAK,KACPshH,mBAAoB,OACjBF,QATA,CA1BgB,CAFc,CAFN,CA0CjC,EAEMG,EAAiB,SAAC5rH,GACtB,MAAO,WAAaA,EAAKC,YACtBkB,QAAQ,MAAO,KACfA,QAAQ,KAAM,OACnB,C,uECtCA,QAV4B,SAACrF,EAAIujG,EAAYliF,GAC3C,IAAM0uG,GAAexsB,GAOJ,SAAAA,GAAU,OAAIA,GAAcA,EAAWv/F,SAAS,IAAI,CAPjC2gF,CAAW4e,IAAe6Y,IAAS/6F,EAAqBkiF,GAC5F,MAAO,CACLrhG,KAAO6tH,EAAc,wBAA0B,eAC/C3lF,OAAS2lF,EAAc,CAAE/vH,GAAAA,GAAO,CAAEkC,KAAMqhG,GAE5C,C,sHCaMh8F,MAAM,sB,+BAmCNA,MAAM,sB,4CAuBJA,MAAM,sB,gKA4IJA,MAAM,S,aAIHA,MAAM,Q,kaC1MnBgL,EAAAA,GAAAA,IACEy9G,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAh/E,EAAAA,IACAi/E,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,KAkLF,QA/KmB,CACjBjpH,MAAO,CACL,aACA,UACA,cACA,kBACA,OACA,OACA,WACA,SACA,UACA,UACA,QAEFlH,KAAI,WACF,MAAO,CACLowH,iBAAkBxoH,KAAKqyC,aAAeryC,KAAK2jC,WAAW0O,YACtDo2E,UAAWzoH,KAAK0L,OAAOhR,MAAM2X,SAASsF,iBAAmB8wG,EACzDC,cAAe1oH,KAAK0L,OAAOoP,QAAQnH,aAAa+kF,SAChDC,aAAc34F,KAAK0L,OAAOoP,QAAQnH,aAAaglF,aAC/C3tF,SAAS,EACTqiD,IAA4D,UAAvD9W,EAAAA,GAAAA,SAAyBv2C,KAAK2jC,WAAW6S,WAAyBzqC,SAAS8lG,cAAc,OAC9F8W,WAAW,EACXC,YAAY,EACZC,aAAa,EACbC,iBAAiB,EAErB,EACA7nH,WAAY,CACV+yD,MAAAA,EAAAA,EACA/vD,WAAAA,EAAAA,EACA6vD,gBAAAA,EAAAA,GAEFxrD,S,qWAAQpP,CAAA,CACN6vH,WAAU,WACR,MAAO,CACL,CACE,WAAY/oH,KAAKgL,QACjB,oBAAqBhL,KAAKsjC,OAC1B,iBAA2B/gC,IAAdvC,KAAKgkB,KAClB,WAAYhkB,KAAKu0E,SAEnB,SAAWv0E,KAAKP,KAChBO,KAAKsmD,MAAQ,SAAWtmD,KAAKsmD,KAAI,IAAAjtD,OAC7B2G,KAAKs5F,cAAgB,UAAY,QAAO,QAEhD,EACA0vB,eAAc,WACZ,MAAqB,SAAdhpH,KAAKsmD,IACd,EACAgzC,cAAa,WACX,OAAOt5F,KAAK0L,OAAOoP,QAAQnH,aAAa2lF,aAC1C,EACA2vB,gBAAe,WACb,MAAoC,KAAhCjpH,KAAK2jC,WAAW0O,aAAuBryC,KAAK2jC,WAAW0O,YAGpDryC,KAAK2jC,WAAW0O,YAFdryC,KAAKP,KAAKypH,aAGrB,EACAC,qBAAoB,WAClB,MAAkB,UAAdnpH,KAAKP,KAAyB,QAChB,UAAdO,KAAKP,KAAyB,QAChB,UAAdO,KAAKP,KAAyB,QAC3B,MACT,EACA2pH,eAAc,WACZ,OAAOppH,KAAK0L,OAAOhR,MAAM2X,SAASuH,oBAAsB,GAAK,aAC/D,EACAna,KAAI,WACF,OAAO82C,EAAAA,GAAAA,SAAyBv2C,KAAK2jC,WAAW6S,SAClD,EACAlT,OAAM,WACJ,OAAOtjC,KAAK2nB,MAAQ3nB,KAAK0oH,gBAAkB1oH,KAAK4oH,UAClD,EACA/8G,QAAO,WACL,MAAsB,SAAd7L,KAAKP,OAAoBO,KAAK2jC,WAAW0lF,MACnD,EACAC,SAAQ,WACN,IAAIC,EAAa,GACjB,OAAQvpH,KAAKsmD,MACX,IAAK,OACL,IAAK,QACHijE,EAAa,CAAC,QAAS,QAAS,QAAS,SACzC,MACF,QACEA,EAAavpH,KAAK2T,aAAaylF,kBAC3B,CAAC,QAAS,QAAS,SACnB,CAAC,SAGT,OAAOmwB,EAAWztH,SAASkE,KAAKP,KAClC,EACA+pH,SAAQ,WACN,OAAOxpH,KAAKspH,SAAW,SAAW,MACpC,IACGzlE,EAAAA,EAAAA,IAAW,CAAC,kBAEjB+J,MAAO,CACL,yBAAwB,SAAEO,GACxBnuD,KAAKwoH,iBAAmBr6D,CAC1B,EACAq6D,iBAAgB,SAAEr6D,GAChBnuD,KAAKypH,OAAOt7D,EACd,GAEFtuD,QAAS,CACPg+E,YAAW,SAAArjF,GAAc,IAAVoG,EAAMpG,EAANoG,OACU,MAAnBA,EAAO2C,SACTlD,OAAOC,KAAKM,EAAOF,KAAM,SAE7B,EACAgpH,UAAS,SAAEzjH,GACLjG,KAAKspH,UACPtpH,KAAKkG,MAAM,YACXlG,KAAK0L,OAAOjR,SAAS,kBAAmBuF,KAAK2jC,aACtB,YAAd3jC,KAAKP,MACdY,OAAOC,KAAKN,KAAK2jC,WAAWpkC,IAEhC,EACAoqH,eAAc,SAAE1jH,GACdjG,KAAKkG,MAAM,YACXlG,KAAK0L,OAAOjR,SAAS,kBAAmBuF,KAAK2jC,WAC/C,EACA8lF,OAAM,SAAExjH,GACNjG,KAAKgkB,MAAQhkB,KAAKgkB,KAAKhkB,KAAK2jC,WAAY19B,EAC1C,EACA2jH,SAAQ,WACN5pH,KAAKyuF,QAAUzuF,KAAKyuF,OAAOzuF,KAAK2jC,WAClC,EACAkmF,UAAS,WACP7pH,KAAK8pH,SAAW9pH,KAAK8pH,QAAQ9pH,KAAK2jC,WACpC,EACAomF,UAAS,WACP/pH,KAAKgqH,SAAWhqH,KAAKgqH,QAAQhqH,KAAK2jC,WACpC,EACAsmF,UAAS,WACPjqH,KAAKoJ,MAAM8gH,MAAMC,aACnB,EACAC,eAAc,SAAEnkH,GACdjG,KAAK6oH,YAAc5iH,CACrB,EACAokH,kBAAiB,WACfrqH,KAAK8oH,iBAAmB9oH,KAAK8oH,eAC/B,EACA9sD,aAAY,SAAE/1D,GAAO,IAAAvE,EAAA,MAEhB1B,KAAK2T,aAAa0lF,iBAAoBr5F,KAAK4oH,YAC7B,UAAd5oH,KAAKP,OAAoBO,KAAK2T,aAAaylF,kBAK1Cp5F,KAAKqtD,MAAQrtD,KAAK24F,aAChB34F,KAAKqtD,IAAIi9D,OACXtqH,KAAKqtD,IAAIi9D,UAETtqH,KAAKgL,SAAU,EACfhL,KAAKqtD,IAAIW,IAAMhuD,KAAK2jC,WAAWpkC,IAC/BS,KAAKqtD,IAAIi9D,OAAS,WAChB5oH,EAAKsJ,SAAU,EACftJ,EAAKknH,YAAclnH,EAAKknH,UAC1B,GAGF5oH,KAAK4oH,YAAc5oH,KAAK4oH,WAfxB5oH,KAAK0pH,UAAUzjH,EAiBnB,EACAskH,YAAW,SAAE5gH,GACX,IAAM8J,EAAQ9J,EAAM6gH,aACdt+G,EAASvC,EAAM8nG,cACrBzxG,KAAKkG,MAAM,kBAAmB,CAAEpO,GAAIkI,KAAK2jC,WAAW7rC,GAAI2b,MAAAA,EAAOvH,OAAAA,GACjE,ICrMJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,iIFLjDvL,EAAAqoH,iBAAc,WADtBzoH,EAAAA,EAAAA,IA+CS,U,MA7CPlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,0CACE5oD,EAAAooH,aACPjpH,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA+oH,WAAA/oH,EAAA+oH,UAAA5vH,MAAA6G,EAAAhE,UAAS,I,CAGA,SAATgE,EAAAlB,OAAI,WADZc,EAAAA,EAAAA,IAWI,K,MATFlB,MAAM,cACNuB,OAAO,SACNF,KAAMC,EAAAgjC,WAAWpkC,IACjB22D,IAAKv1D,EAAAgjC,WAAW0O,YAChBjgC,MAAOzR,EAAAgjC,WAAW0O,YAClBvyC,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAN,cAAc,e,EAEdkD,EAAAA,EAAAA,IAAuC+hD,EAAA,CAA9Bj8C,KAAMnJ,EAAAwoH,sBAAoB,kBACnC1oH,EAAAA,EAAAA,GAAkC,UAAAmkD,EAAAA,EAAAA,IAA5BjkD,EAAAgnB,KAAO,UAAY,IAAf,qBAA2BhnB,EAAAqjB,KAAO,GAAKrjB,EAAAsoH,iBAAe,0BAG1DtoH,EAAAqjB,MAAQrjB,EAAA8tF,SAAM,WADtBluF,EAAAA,EAAAA,IAWM,MAXNokD,EAWM,CANIhkD,EAAA8tF,SAAM,WADdluF,EAAAA,EAAAA,IAMS,U,MAJPlB,MAAM,oCACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAipH,UAAAjpH,EAAAipH,SAAA9vH,MAAA6G,EAAAhE,UAAQ,kB,EAExBqH,EAAAA,EAAAA,IAA2B+hD,EAAA,CAAnBj8C,KAAK,kBAAW,kCAIX,SAATnJ,EAAA2lD,OAAoB3lD,EAAA8pH,kBAAoB9pH,EAAAqjB,MAAQrjB,EAAA6nH,kBAAoB7nH,EAAAmoH,mBAAe,WAD3FvoH,EAAAA,EAAAA,IAgBM,O,MAdJlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,wBAAuB,YACP5oD,EAAAqjB,S,CAGdrjB,EAAAqjB,MAAI,qBADZzjB,EAAAA,EAAAA,IAOC,S,2DALUI,EAAA6nH,iBAAgBtjE,CAAA,GACzBzlD,KAAK,OACLJ,MAAM,oBACL8lD,YAAaxkD,EAAA8L,GAAG,iCAChBi+G,UAAO7pH,EAAA,KAAAA,EAAA,IAAA+tD,EAAAA,EAAAA,KAAA9tD,EAAAA,EAAAA,KAAR,cAAyB,0B,mBAJhBH,EAAA6nH,sBAAgB,WAM3BjoH,EAAAA,EAAAA,IAEI,IAAAykD,GAAAJ,EAAAA,EAAAA,IADCjkD,EAAA6nH,kBAAgB,2CAIzBjoH,EAAAA,EAAAA,IAsNM,O,MApNJlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,aACE5oD,EAAAooH,c,WAERtoH,EAAAA,EAAAA,GA+LM,MA/LNwkD,EA+LM,CA1LItkD,EAAA2iC,SAAM,WADd/iC,EAAAA,EAAAA,IAkBI,K,MAhBFlB,MAAM,kBACLqB,KAAMC,EAAAgjC,WAAWpkC,IACjB22D,IAAKv1D,EAAAgjC,WAAW0O,YAChBjgC,MAAOzR,EAAAgjC,WAAW0O,YAClBvyC,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAeH,EAAAq7D,cAAAr7D,EAAAq7D,aAAAliE,MAAA6G,EAAAhE,UAAY,yB,cAEjC4D,EAAAA,EAAAA,IAIC,OAHEkI,IAAK9H,EAAA8nH,UACNppH,MAAM,OACL2uD,IAAKrtD,EAAA8nH,W,WAGS,UAAT9nH,EAAAlB,OAAI,WADZkmD,EAAAA,EAAAA,IAIEI,EAAA,C,MAFA1mD,MAAM,YACNyK,KAAK,kB,sCAIAnJ,EAAA2iC,QAyDmB,iBAzDb,WADf/iC,EAAAA,EAAAA,IA4DM,MA5DN8kD,EA4DM,CAvDa,UAAT1kD,EAAAlB,MAAoBkB,EAAAkoH,cAAW,WADvCtoH,EAAAA,EAAAA,IAOS,U,MALPlB,MAAM,oCACL+S,MAAOzR,EAAA8L,GAAG,gCACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAspH,WAAAtpH,EAAAspH,UAAAnwH,MAAA6G,EAAAhE,UAAS,kB,EAEzBqH,EAAAA,EAAAA,IAAsB+hD,EAAA,CAAdj8C,KAAK,UAAM,sBAGbnJ,EAAAgjC,WAAW0O,aAAwB,UAAT1xC,EAAA2lD,OAAqB3lD,EAAAqjB,MAAiB,YAATrjB,EAAAlB,OAAI,WADnEc,EAAAA,EAAAA,IAOS,U,MALPlB,MAAM,oCACL+S,MAAOzR,EAAA8L,GAAG,sCACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAA0pH,mBAAA1pH,EAAA0pH,kBAAAvwH,MAAA6G,EAAAhE,UAAiB,kB,EAEjCqH,EAAAA,EAAAA,IAA6B+hD,EAAA,CAArBj8C,KAAK,iBAAa,sBAGnBnJ,EAAA2oH,UAAqB,YAAT3oH,EAAAlB,MAKO,iBALH,WADzBc,EAAAA,EAAAA,IAOS,U,MALPlB,MAAM,oCACL+S,MAAOzR,EAAA8L,GAAG,mCACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAgpH,gBAAAhpH,EAAAgpH,eAAA7vH,MAAA6G,EAAAhE,UAAc,kB,EAE9BqH,EAAAA,EAAAA,IAA6B+hD,EAAA,CAArBj8C,KAAK,iBAAa,MAGpBnJ,EAAAgnB,MAAQhnB,EAAA+nH,gBAAa,WAD7BnoH,EAAAA,EAAAA,IAOS,U,MALPlB,MAAM,oCACL+S,MAAOzR,EAAA8L,GAAG,0BACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAq7D,cAAAr7D,EAAAq7D,aAAAliE,MAAA6G,EAAAhE,UAAY,kB,EAE5BqH,EAAAA,EAAAA,IAAuB+hD,EAAA,CAAfj8C,KAAK,WAAO,sBAGdnJ,EAAAmpH,UAAO,WADfvpH,EAAAA,EAAAA,IAOS,U,MALPlB,MAAM,oCACL+S,MAAOzR,EAAA8L,GAAG,kBACV3M,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAkpH,WAAAlpH,EAAAkpH,UAAA/vH,MAAA6G,EAAAhE,UAAS,kB,EAEzBqH,EAAAA,EAAAA,IAA8B+hD,EAAA,CAAtBj8C,KAAK,kBAAc,sBAGrBnJ,EAAAqpH,UAAO,WADfzpH,EAAAA,EAAAA,IAOS,U,MALPlB,MAAM,oCACL+S,MAAOzR,EAAA8L,GAAG,oBACV3M,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAopH,WAAAppH,EAAAopH,UAAAjwH,MAAA6G,EAAAhE,UAAS,kB,EAEzBqH,EAAAA,EAAAA,IAA+B+hD,EAAA,CAAvBj8C,KAAK,mBAAe,sBAGtBnJ,EAAA8tF,SAAM,WADdluF,EAAAA,EAAAA,IAOS,U,MALPlB,MAAM,oCACL+S,MAAOzR,EAAA8L,GAAG,4BACV3M,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAipH,UAAAjpH,EAAAipH,SAAA9vH,MAAA6G,EAAAhE,UAAQ,kB,EAExBqH,EAAAA,EAAAA,IAA2B+hD,EAAA,CAAnBj8C,KAAK,eAAW,yBAKX,UAATnJ,EAAAlB,MAAsBkB,EAAA2iC,SAAU3iC,EAAAg4F,c,iBAAY,WADpDp4F,EAAAA,EAAAA,IAgBI,K,MAdFlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,kBAAiB,WACH5oD,EAAA2iC,QAAU3iC,EAAAg4F,gBAC7Bj4F,KAAMC,EAAAgjC,WAAWpkC,IAClBqB,OAAO,SACNd,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,kBAAeH,EAAA+oH,WAAA/oH,EAAA+oH,UAAA5vH,MAAA6G,EAAAhE,UAAS,yB,EAE9BqH,EAAAA,EAAAA,IAOE2mH,EAAA,CANAtrH,MAAM,QACL+pH,eAAgBzoH,EAAAyoH,eAChB5yE,SAAU71C,EAAAgjC,WAAW6S,SACrBwX,IAAKrtD,EAAAgjC,WAAW4qE,iBAAmB5tG,EAAAgjC,WAAWpkC,IAC9C,qBAAoBoB,EAAA4pH,YACpBr0D,IAAKv1D,EAAAgjC,WAAW0O,a,+EAKJ,YAAT1xC,EAAAlB,MAAuBkB,EAAA2iC,QAWR,iBAXc,WADrC/iC,EAAAA,EAAAA,IAcI,K,MAZFlB,MAAM,wBACLqB,KAAMC,EAAAgjC,WAAWpkC,IAClBqB,OAAO,U,EAEPoD,EAAAA,EAAAA,IAIE+hD,EAAA,CAHCO,KAAM3lD,EAAA4zE,QAAU,KAAO,KACvBzqE,KAAMnJ,EAAAwoH,qBACN/2G,MAAOzR,EAAA6nH,kB,gCAEA7nH,EAAA4zE,SACW,iBADJ,WAAjBh0E,EAAAA,EAAAA,IAEI,IAAAq/E,GAAAh7B,EAAAA,EAAAA,IADCjkD,EAAA6nH,kBAAgB,WAMN,UAAT7nH,EAAAlB,MAAqBkB,EAAA2iC,Q,iBAAM,WAFnCqiB,EAAAA,EAAAA,KAoBYwD,EAAAA,EAAAA,IAnBLxoD,EAAA6oH,UAAQ,C,MAEbnqH,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,kBACE,gCACP7oD,KAAMC,EAAAgjC,WAAWpkC,IACjBO,SAAKgB,EAAAA,EAAAA,IAAeH,EAAA+oH,UAAS,qB,mBAE9B,iBAME,EANF1lH,EAAAA,EAAAA,IAMEoyD,EAAA,CALA/2D,MAAM,QACLskC,WAAYhjC,EAAAgjC,WACZ0yB,UAAW11D,EAAA2oH,SACXsB,OAAI/pH,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAAuF,MAAM,OAAD,GACX2kH,QAAKhqH,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAAuF,MAAM,QAAD,I,kCAGPvF,EAAA2oH,WAAQ,WADhB3jE,EAAAA,EAAAA,IAIEI,EAAA,C,MAFA1mD,MAAM,YACNyK,KAAK,kB,+CAKQ,UAATnJ,EAAAlB,MAAqBkB,EAAA2iC,Q,iBAAM,WADnC/iC,EAAAA,EAAAA,IAeO,Q,MAbLlB,MAAM,kBACLqB,KAAMC,EAAAgjC,WAAWpkC,IACjBO,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,kBAAeH,EAAA+oH,WAAA/oH,EAAA+oH,UAAA5vH,MAAA6G,EAAAhE,UAAS,yB,CAGb,UAATgE,EAAAlB,OAAI,WADZc,EAAAA,EAAAA,IAQE,S,MANCytD,IAAKrtD,EAAAgjC,WAAWpkC,IAChB22D,IAAKv1D,EAAAgjC,WAAW0O,YAChBjgC,MAAOzR,EAAAgjC,WAAW0O,YACnBgkB,SAAA,GACCu0D,OAAI/pH,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAAuF,MAAM,OAAD,GACX2kH,QAAKhqH,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAAuF,MAAM,QAAD,I,mCAKA,SAATvF,EAAAlB,MAAmBkB,EAAAgjC,WAAW0lF,SAAM,WAD5C9oH,EAAAA,EAAAA,IAiBM,O,MAfJlB,MAAM,mBACLS,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAk9E,aAAAl9E,EAAAk9E,YAAA/jF,MAAA6G,EAAAhE,UAAW,kB,CAGnBgE,EAAAgjC,WAAWmnF,YAAS,WAD5BvqH,EAAAA,EAAAA,IAKM,MALNw/E,EAKM,EADJt/E,EAAAA,EAAAA,GAAiC,OAA3ButD,IAAKrtD,EAAAgjC,WAAWmnF,W,8BAExBrqH,EAAAA,EAAAA,GAKM,MALNw/E,EAKM,EAHJx/E,EAAAA,EAAAA,GAAoE,YAAhEA,EAAAA,EAAAA,GAA2D,KAAvDC,KAAMC,EAAAgjC,WAAWpkC,M,QAAQoB,EAAAgjC,WAAW0lF,OAAOj3G,OAAK,EAAA8tE,MACxDz/E,EAAAA,EAAAA,GAA6C,OAAxCM,UAAQJ,EAAAgjC,WAAW0lF,OAAO0B,Y,+BAMlB,UAATpqH,EAAAlB,MAAqBkB,EAAA2iC,Q,iBAAM,WADnC/iC,EAAAA,EAAAA,IAaO,Q,MAXLlB,MAAM,kBACLqB,KAAMC,EAAAgjC,WAAWpkC,IACjBO,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,kBAAeH,EAAA+oH,WAAA/oH,EAAA+oH,UAAA5vH,MAAA6G,EAAAhE,UAAS,yB,EAE9BqH,EAAAA,EAAAA,IAMEsyD,EAAA,CALAzlB,IAAI,QACJxxC,MAAM,QACL2uD,IAAKrtD,EAAAgjC,WAAW4qE,iBAAmB5tG,EAAAgjC,WAAWpkC,IAC9CyrH,eAAYnqH,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAAypH,gBAAe,EAAD,GAC5Ba,eAAYpqH,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAAypH,gBAAe,EAAD,I,qCA3LxBzpH,EAAAkL,WAgMM,SAATlL,EAAA2lD,OAAoB3lD,EAAA8pH,kBAAoB9pH,EAAAqjB,MAASrjB,EAAA6nH,kBAAoB7nH,EAAAmoH,mBAAe,WAD5FvoH,EAAAA,EAAAA,IAgBM,O,MAdJlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,wBAAuB,YACP5oD,EAAAqjB,S,CAGdrjB,EAAAqjB,MAAI,qBADZzjB,EAAAA,EAAAA,IAOC,S,6DALUI,EAAA6nH,iBAAgBtjE,CAAA,GACzBzlD,KAAK,OACLJ,MAAM,oBACL8lD,YAAaxkD,EAAA8L,GAAG,iCAChBi+G,UAAO7pH,EAAA,MAAAA,EAAA,KAAA+tD,EAAAA,EAAAA,KAAA9tD,EAAAA,EAAAA,KAAR,cAAyB,0B,mBAJhBH,EAAA6nH,sBAAgB,WAM3BjoH,EAAAA,EAAAA,IAEI,IAAA6iF,GAAAx+B,EAAAA,EAAAA,IADCjkD,EAAA6nH,kBAAgB,6B,sEGnQpBnpH,MAAM,W,qBCmBb,QAjBmB,CACjBC,MAAO,CAAC,SACRgJ,SAAU,CACR4iH,YAAW,WACT,OAAOlrH,KAAKjE,MAAQiE,KAAKjE,MAAMG,MAAM,EAAG,IAAM,EAChD,GAEF+E,WAAY,CACVuwE,WAAAA,EAAAA,SAEF3xE,QAAS,CACP6tD,gBAAe,SAAE1xD,GACf,OAAO2xD,EAAAA,EAAAA,GAAoB3xD,EAAKlE,GAAIkE,EAAKC,YAAa+D,KAAK0L,OAAOhR,MAAM2X,SAAS8G,oBACnF,ICPJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,+FFNzD5Y,EAAAA,EAAAA,IAYM,MAZNC,EAYM,gBAXJD,EAAAA,EAAAA,IAUcwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IATGxpD,EAAAuqH,aAAW,SAAnBlvH,G,kBADT2pD,EAAAA,EAAAA,IAUcJ,EAAA,CARX98C,IAAKzM,EAAKlE,GACVq1C,GAAIxsC,EAAA+sD,gBAAgB1xD,GACrBqD,MAAM,gB,mBAEN,iBAGE,EAHF2E,EAAAA,EAAAA,IAGE+tE,EAAA,CAFC/1E,KAAMA,EACPqD,MAAM,gB,kIGTPA,MAAM,mB,GAkBPA,MAAM,qC,kECIZ,QAjBsB,CACpBC,MAAO,CACL,QAEF2B,WAAY,CACVywE,YAAAA,EAAAA,QACAF,WAAAA,EAAAA,QACAC,YAAAA,EAAAA,EACAzU,SAAAA,EAAAA,GAEFn9D,QAAS,CACP6tD,gBAAe,SAAE1xD,GACf,OAAO2xD,EAAAA,EAAAA,GAAoB3xD,EAAKlE,GAAIkE,EAAKC,YAAa+D,KAAK0L,OAAOhR,MAAM2X,SAAS8G,oBACnF,ICVJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,2KFNzD5Y,EAAAA,EAAAA,IAsCM,MAtCNC,EAsCM,EArCJwD,EAAAA,EAAAA,IAecuhD,EAAA,CAdXpY,GAAIxsC,EAAA+sD,gBAAgB/sD,EAAA3E,MACpB8D,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAN,cAAc,e,mBAEd,iBAUc,EAVdkD,EAAAA,EAAAA,IAUc8tE,EAAA,CATX,UAASnxE,EAAA3E,KAAKlE,GACd,mBAAiB,EAClB,2BAAyB,W,mBAEzB,iBAIE,EAJFkM,EAAAA,EAAAA,IAIE+tE,EAAA,CAHA1yE,MAAM,qBACLrD,KAAM2E,EAAA3E,KACN8D,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAN,cAAc,e,6DAIpBL,EAAAA,EAAAA,GAoBM,MApBNkkD,EAoBM,EAjBJlkD,EAAAA,EAAAA,GASM,OARH2R,MAAOzR,EAAA3E,KAAKhC,KACbqF,MAAM,6B,EAEN2E,EAAAA,EAAAA,IAIEguE,EAAA,CAHA3yE,MAAM,kCACL+B,KAAMT,EAAA3E,KAAKhC,KACXzB,MAAOoI,EAAA3E,KAAKzD,O,gCAGjBkI,EAAAA,EAAAA,GAKM,aAJJuD,EAAAA,EAAAA,IAGEmnH,EAAA,CAFA9rH,MAAM,8BACLrD,KAAM2E,EAAA3E,M,oBAGXssD,EAAAA,EAAAA,IAAQ3nD,EAAAkI,OAAA,c,+HGjBRxJ,MAAM,SAQZ,SACEC,MAAO,CACL,aACA,gBACA,YAEF21E,MAAO,CAAC,qBACR78E,KAAM,SAACgzH,GAAE,MAAM,CACbC,2BAA4BD,EAAGE,cAChC,EACD19D,MAAO,CACL09D,cAAY,SAAG5zH,GACTA,IACFsI,KAAKqrH,4BAA6B,EAEtC,GAEFxrH,QAAS,CACP0rH,gBAAc,SAAG7zH,GACVsI,KAAKsrH,gBACRtrH,KAAKqrH,4BAA6B,EAEtC,ICzCJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCDNzD9qH,EAAAA,EAAAA,IAuBQ,SAtBNlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,WAAU,CAAA3/C,SACN6B,EAAA7B,SAAQ0hH,cAAE7/G,EAAA6/G,cAAa,oBAAuB3qH,EAAA0qH,+B,EAExD5qH,EAAAA,EAAAA,GAOC,SANChB,KAAK,WACLJ,MAAM,gCACLuK,SAAU6B,EAAA7B,SACV+zD,QAASlyD,EAAA+/G,WACTF,cAAe7/G,EAAA6/G,cACfjjC,SAAMxnF,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAuF,MAAM,oBAAqBg/C,EAAOtkD,OAAO+8D,QAAO,I,YAE3Dl9D,EAAAA,EAAAA,GAIE,KAHApB,MAAM,qBACL,eAAa,E,qDACU01E,EAAAw2C,iBAAAx2C,EAAAw2C,gBAAAzxH,MAAAi7E,EAAAp4E,UAAe,I,SAG/BgE,EAAAkI,OAAM,UAAQ,WADxBtI,EAAAA,EAAAA,IAKO,OALPokD,EAKO,EADL2D,EAAAA,EAAAA,IAAQ3nD,EAAAkI,OAAA,iC,6IEcd,QA3BqB,CACnB5H,WAAY,CACVwqH,Y,SAAAA,GAEFnsH,MAAO,CACL8S,MAAO,CACL3S,KAAMC,QAERgsH,WAAY,CACVjsH,KAAMC,QAERisH,YAAa,CACXlsH,KAAMC,SAGV4I,SAAU,CACV,EACAzI,QAAS,CACPw0E,SAAQ,WACNr0E,KAAKkG,MAAM,YACb,EACA0lH,SAAQ,WACN5rH,KAAKkG,MAAM,WACb,ICzBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,gHCJzDy/C,EAAAA,EAAAA,IAwBekmE,EAAA,CAtBbxsH,MAAM,gBACL,YAAWsB,EAAA0zE,U,CAEDtF,QAAM1Q,EAAAA,EAAAA,KACf,iBAAuB,EAAvB59D,EAAAA,EAAAA,GAAuB,Q,aAAjBmkD,EAAAA,EAAAA,IAAQjkD,EAAMyR,Q,cAKX48D,QAAM3Q,EAAAA,EAAAA,KACf,iBAIE,EAJF59D,EAAAA,EAAAA,GAIE,UAHApB,MAAM,qBACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAirH,UAAAjrH,EAAAirH,SAAA9xH,MAAA6G,EAAAhE,UAAQ,iB,aACxBioD,EAAAA,EAAAA,IAAQjkD,EAAYgrH,c,WAGtBlrH,EAAAA,EAAAA,GAIE,UAHApB,MAAM,qBACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAA0zE,UAAA1zE,EAAA0zE,SAAAv6E,MAAA6G,EAAAhE,UAAQ,iB,aACxBioD,EAAAA,EAAAA,IAAQjkD,EAAW+qH,a,gCAZvB,iBAAQ,EAARpjE,EAAAA,EAAAA,IAAQ3nD,EAAAkI,OAAA,W,gCARY,I,2FCObxJ,MAAM,sC,GACJA,MAAM,S,GAIRA,MAAM,wB,GAGNA,MAAM,sDCJjB,QAboB,CAClBC,MAAO,CACLwsH,YAAa,CACXlsH,SAAS,EACTH,KAAM8B,SAER8yE,SAAU,CACRz0E,QAAS,WAAO,EAChBH,KAAMuI,YCCZ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCFNzDzH,EAAAA,EAAAA,IAoBO,QAnBJlB,OAAKkqD,EAAAA,EAAAA,IAAA,gBAAoB5oD,EAAAmrH,cACzBhsH,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAYvkD,EAAA0zE,UAAQ,sB,EAE1B5zE,EAAAA,EAAAA,GAeM,OAdJpB,MAAM,mCACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAN,cAAc,Y,EAEdL,EAAAA,EAAAA,GAIM,MAJND,EAIM,EAHJC,EAAAA,EAAAA,GAEM,MAFNkkD,EAEM,EADJ2D,EAAAA,EAAAA,IAAsB3nD,EAAAkI,OAAA,eAG1BpI,EAAAA,EAAAA,GAEM,MAFNokD,EAEM,EADJyD,EAAAA,EAAAA,IAAuB3nD,EAAAkI,OAAA,cAEzBpI,EAAAA,EAAAA,GAEM,MAFNukD,EAEM,EADJsD,EAAAA,EAAAA,IAAsB3nD,EAAAkI,OAAA,iB,2FGItBgoC,IAAI,qBACJxxC,MAAM,S,wEAsDIA,MAAM,S,uBAOPA,MAAM,S,SAGPA,MAAM,e,SASNA,MAAM,e,GAIFA,MAAM,c,2HCvFb0sH,EAAqB,SAACC,GACjC,OAAOj1F,IAAOi1F,GAAO,SAAClvH,EAAQmvH,GAC5B,IAAM7zH,EAAO,CACX6zH,KAAAA,EACAh4G,MAAO,EACPI,IAAK43G,EAAKxyH,QAGZ,GAAIqD,EAAOrD,OAAS,EAAG,CACrB,IAAMyyH,EAAWpvH,EAAOuG,MAExBjL,EAAK6b,OAASi4G,EAAS73G,IACvBjc,EAAKic,KAAO63G,EAAS73G,IAErBvX,EAAOsC,KAAK8sH,EACd,CAIA,OAFApvH,EAAOsC,KAAKhH,GAEL0E,CACT,GAAG,GACL,EAEaqvH,EAA4B,SAACrpC,GAGxC,IAFA,IAAMhmF,EAAS,GACXsvH,EAAc,GACT7tH,EAAI,EAAGA,EAAIukF,EAAIrpF,OAAQ8E,IAAK,CACnC,IAAM8tH,EAAcvpC,EAAIvkF,GAEnB6tH,IAMCC,EAAYhvH,UAAa+uH,EAAY/uH,OAK3C+uH,GAAeC,GAJbvvH,EAAOsC,KAAKgtH,GACZA,EAAcC,GAPdD,EAAcC,CAWlB,CAKA,OAHID,GACFtvH,EAAOsC,KAAKgtH,GAEPtvH,CACT,EASA,QA/D8B,SAACgmF,EAAKwpC,GAClC,IAAMN,EAAQG,EAA0BrpC,GAClCypC,EAAoBR,EAAmBC,GAE7C,OAAOpoG,IAAK2oG,GAAmB,SAAA/xH,GAAA,IAAGyZ,EAAKzZ,EAALyZ,MAAOI,EAAG7Z,EAAH6Z,IAAG,OAAOJ,GAASq4G,GAAOj4G,EAAMi4G,CAAG,GAC9E,EA0DA,EAnE2B,SAACxpC,EAAK0pC,EAAWhwH,GAC1C,OAAOsmF,EAAI5mF,MAAM,EAAGswH,EAAUv4G,OAASzX,EAAcsmF,EAAI5mF,MAAMswH,EAAUn4G,IAC3E,E,qDCgBA,QApB2B,CACzB/U,MAAO,CACLmtH,SAAU,CACRhtH,KAAMC,OACNgtH,QAAS,cAGbt0H,KAAI,WACF,MAAO,CACLu0H,YAAa,GAEjB,EACA9sH,QAAS,CACP+sH,SAAQ,SAAEzuH,GAAM,IAAAuD,EAAA,KACd1B,KAAK2sH,YAAcxuH,EACnBjD,YAAW,WAAQwG,EAAKirH,YAAc,EAAG,GAAG,IAC9C,I,eCXJ,MAEA,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,wCCJzDpsH,EAAAA,EAAAA,IAKM,OAJJlB,MAAM,gCACL,YAAWsB,EAAA8rH,W,QAET9rH,EAAAgsH,aAAW,EAAAnsH,E,SC8QHqsH,E,kvBArQfxiH,EAAAA,GAAAA,IACEyiH,EAAAA,KA6iBF,QAxhBmB,CACjB73C,MAAO,CAAC,oBAAqB,SAC7B31E,MAAO,CACLytH,QAAS,CAsBPvtH,UAAU,EACVC,KAAMuI,UAERwjH,WAAY,CAIVhsH,UAAU,EACVC,KAAMC,QAERstH,kBAAmB,CAIjBxtH,UAAU,EACVC,KAAM8B,QACN3B,SAAS,GAEXqtH,gBAAiB,CAKfztH,UAAU,EACVC,KAAM8B,QACN3B,SAAS,GAEXstH,oBAAqB,CAInB1tH,UAAU,EACVC,KAAM8B,QACN3B,SAAS,GAEXi3E,UAAW,CAKTr3E,UAAU,EACVC,KAAMC,OACNE,QAAS,QAEXutH,mBAAoB,CAClB3tH,UAAU,EACVC,KAAM8B,QACN3B,SAAS,IAGbxH,KAAI,WACF,MAAO,CACLg1H,YAAYC,EAAAA,EAAAA,KACZ10H,WAAO4J,EACP+qH,aAAS/qH,EACTi6B,aAAc,EACd+wF,MAAO,EACPhvD,SAAS,EACTivD,YAAa,KACbC,4BAA4B,EAC5BC,qBAAqB,EACrB/yH,YAAa,GACbgzH,aAAc,CAAC,EACfC,aAAa,EAEjB,EACA3sH,WAAY,CACV2lE,QAAAA,EAAAA,QACAinD,YAAAA,EAAAA,EACAC,uBAAAA,EAAAA,EACAC,mBAAAA,GAEFzlH,SAAU,CACRkwF,SAAQ,WACN,OAAOx4F,KAAK0L,OAAOoP,QAAQnH,aAAa6kF,QAC1C,EACAw1B,sBAAqB,WACnB,OAAOhuH,KAAK0L,OAAOoP,QAAQnH,aAAaiF,mBAAqB,GAAK,CACpE,EACAq1G,QAAO,WACL,OAAOjuH,KAAKwrH,WAAWtvH,MAAM,EAAG8D,KAAKutH,MACvC,EACAW,SAAQ,WACN,OAAOluH,KAAKwrH,WAAWtvH,MAAM8D,KAAKutH,MACpC,EACAY,gBAAe,WACb,OAAOnuH,KAAKu+D,SACVv+D,KAAKrF,aACLqF,KAAKrF,YAAYlB,OAAS,IACzBuG,KAAK4tH,cACL5tH,KAAKytH,0BACV,EACAW,YAAW,WAAI,IAAAC,EACb,OAAuB,QAAvBA,EAAOruH,KAAKsuH,mBAAW,IAAAD,OAAA,EAAhBA,EAAkBpC,IAC3B,EACAqC,YAAW,WACT,GAAItuH,KAAKwrH,YAAcxrH,KAAKutH,MAE1B,OADagB,EAA0BvuH,KAAKwrH,WAAYxrH,KAAKutH,MAAQ,IAAM,CAAC,CAGhF,EACA3gH,UAAS,WACP,OAAOG,EAAAA,EAAAA,qBAAoB/M,KAAK0L,OAAOoP,QAAQnH,aAAastD,kBAC9D,EACAutD,oCAAmC,WAAI,IAAA9sH,EAAA,KACrC,OAAO,SAAAnJ,GACL,IAAMa,EAAQ,CAACb,EAAM4B,aACfb,EAAW,GAcjB,OAZIf,EAAMic,iBACRpb,EAAMgG,KAAKsC,EAAK+K,GAAGlU,EAAMic,gBAAgB/L,IAAKlQ,EAAMic,gBAAgBC,OAGlElc,EAAMqc,aACRlT,EAAKkL,UAAU0O,SAAQ,SAAAvM,GAAQ,IAAA0/G,EAAAC,EAC7Bt1H,EAAMgG,KAA4B,QAAxBqvH,EAACl2H,EAAMqc,YAAY7F,UAAK,IAAA0/G,OAAA,EAAvBA,EAAyBz0H,MAEpCV,EAAS8F,KAAItF,MAAbR,GAAQS,EAAAA,EAAAA,IAAiC,QAAvB20H,EAAAn2H,EAAMqc,YAAY7F,UAAK,IAAA2/G,OAAA,EAAvBA,EAAyBp1H,WAAY,IACzD,IAGK,CACLF,MAAOA,EAAMD,QAAO,SAAAO,GAAC,OAAIA,CAAC,IAC1BJ,SAAUA,EAASH,QAAO,SAAAO,GAAC,OAAIA,CAAC,IAEpC,CACF,EACAi1H,wBAAuB,WAAI,IAAAhmH,EAAA,KACzB,OAAO,SAAApQ,GACL,IAAKA,EAAMqc,YACT,OAAOrc,EAAM4B,YAGf,GAAI5B,EAAMic,gBACR,OAAO7L,EAAK8D,GAAGlU,EAAMic,gBAAgB/L,IAAKlQ,EAAMic,gBAAgBC,MACjE,IAEgChW,EAFhCE,E,25BAAAC,CAEkB+J,EAAKiE,WAAS,IAAjC,IAAAjO,EAAAE,MAAAJ,EAAAE,EAAAG,KAAAC,MAAmC,KAAA6vH,EAAxB7/G,EAAItQ,EAAAO,MACb,GAA2B,QAA3B4vH,EAAIr2H,EAAMqc,YAAY7F,UAAK,IAAA6/G,GAAvBA,EAAyB50H,KAC3B,OAAOzB,EAAMqc,YAAY7F,GAAM/U,IAEnC,CAAC,OAAAkF,GAAAP,EAAAjH,EAAAwH,EAAA,SAAAP,EAAAQ,GAAA,CAED,OAAO5G,EAAM4B,WACf,CACF,EACA00H,cAAa,WACX7uH,KAAKoJ,MAAM0lH,cAAc9zD,SAAS,CAChC6U,IAAK7vE,KAAKrH,MAAM2Q,UAChB4sE,KAAMl2E,KAAKrH,MAAMo2H,YAErB,EACAC,iBAAgB,WACd,MAAO,eAAP31H,OAAsB2G,KAAKotH,WAC7B,EACA6B,iBAAgB,WAAI,IAAAjmH,EAAA,KAClB,OAAO,SAACpF,GAAK,yBAAAvK,OAAwBuK,EAAK,KAAAvK,OAAI2P,EAAKokH,WAAU,CAC/D,GAEFt/D,QAAO,WACL,IAAAohE,EAAuDlvH,KAAKoJ,MAApD4sC,EAAIk5E,EAAJl5E,KAAMm5E,EAAkBD,EAAlBC,mBAAoBC,EAAgBF,EAAhBE,iBAC5Bz2H,EAAQq9C,EAAKqY,cAAc,yBAA2BrY,EAAKqY,cAAc,2BAC/E,GAAK11D,EAAL,CACAqH,KAAKrH,MAAQA,EACbqH,KAAKstH,QAAU6B,EACXC,EAAiBC,aACnBD,EAAiBC,YAAYrvH,KAAKstH,SAClCttH,KAAKoJ,MAAMkmH,OAAOD,YAAYrvH,KAAKstH,UAEnC/wG,QAAQC,KAAK,iDAEf,IAAMw7C,EAAQm2B,iBAAiBnuF,KAAKrH,OACpCqH,KAAK2tH,aAAa4B,QAAUv3D,EAAMu3D,QAClCvvH,KAAK2tH,aAAaxU,OAASnhD,EAAMmhD,OACjCn5G,KAAK2tH,aAAanxD,OAASxE,EAAMwE,OACjCx8D,KAAK2tH,aAAa6B,WAAax3D,EAAMw3D,WACrCxvH,KAAK2tH,aAAa8B,WAAaz3D,EAAMy3D,WACrCzvH,KAAK2tH,aAAa+B,SAAW13D,EAAM03D,SACnC1vH,KAAK2tH,aAAagC,SAAW33D,EAAM23D,SACnC3vH,KAAK2tH,aAAaiC,WAAa53D,EAAM43D,WACrC5vH,KAAK49D,SACLjlE,EAAM0S,iBAAiB,OAAQrL,KAAK6vH,QACpCl3H,EAAM0S,iBAAiB,QAASrL,KAAK8vH,SACrCn3H,EAAM0S,iBAAiB,QAASrL,KAAK+vH,SACrCp3H,EAAM0S,iBAAiB,QAASrL,KAAKgwH,SACrCr3H,EAAM0S,iBAAiB,UAAWrL,KAAKiwH,WACvCt3H,EAAM0S,iBAAiB,QAASrL,KAAKkwH,cACrCv3H,EAAM0S,iBAAiB,gBAAiBrL,KAAKmwH,cAC7Cx3H,EAAM0S,iBAAiB,QAASrL,KAAKi+D,SACrCtlE,EAAM0S,iBAAiB,SAAUrL,KAAK6uH,cA3BpB,CA4BpB,EACApkH,UAAS,WACP,IAAQ9R,EAAUqH,KAAVrH,MACJA,IACFA,EAAM6S,oBAAoB,OAAQxL,KAAK6vH,QACvCl3H,EAAM6S,oBAAoB,QAASxL,KAAK8vH,SACxCn3H,EAAM6S,oBAAoB,QAASxL,KAAK+vH,SACxCp3H,EAAM6S,oBAAoB,QAASxL,KAAKgwH,SACxCr3H,EAAM6S,oBAAoB,UAAWxL,KAAKiwH,WAC1Ct3H,EAAM6S,oBAAoB,QAASxL,KAAKkwH,cACxCv3H,EAAM6S,oBAAoB,gBAAiBxL,KAAKmwH,cAChDx3H,EAAM6S,oBAAoB,QAASxL,KAAKi+D,SACxCtlE,EAAM6S,oBAAoB,SAAUxL,KAAK6uH,eAE7C,EACAjhE,MAAO,CACLugE,gBAAiB,SAAU/1F,EAAUD,GACnCn4B,KAAKkG,MAAM,QAASkyB,GAChBA,EACFp4B,KAAKoJ,MAAMgmH,iBAAiBgB,cAE5BpwH,KAAKoJ,MAAMgmH,iBAAiBiB,aAEhC,EACAjC,aAAWvB,GAAAvxH,EAAAA,EAAAA,GAAAC,IAAAA,MAAE,SAAAC,EAAgB80H,GAAO,IAAAC,EAAAC,EAAA,OAAAj1H,IAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,eAClB2G,IAAZ+tH,EAAqB,CAAA50H,EAAAE,KAAA,eAAAF,EAAAG,OAAA,iBACU,GAA7B00H,EAAYD,EAAQ1c,OAAO,GAC7B0c,IAAYC,EAAS,CAAA70H,EAAAE,KAAA,QACF,OAArBoE,KAAKrF,YAAc,GAAEe,EAAAG,OAAA,wBAAAH,EAAAE,KAAA,EAGUoE,KAAK+sH,QAAQuD,EAAStwH,KAAKwuH,qCAAoC,OAAxE,GAAlBgC,EAAkB90H,EAAA4T,OAEpBtP,KAAKouH,cAAgBkC,GAAWE,EAAmB/2H,QAAU,GAAC,CAAAiC,EAAAE,KAAA,SAC3C,OAArBoE,KAAKrF,YAAc,GAAEe,EAAAG,OAAA,kBAGvBmE,KAAKrF,YAAc81H,IAAKD,EAAoB,GACzCt5H,KAAI,SAAAsD,GAAA,IAAGP,EAAQO,EAARP,SAAiB,OAAAf,EAAAA,EAAA,IAAAuM,EAAAA,EAAAA,GAAAjL,EAAAkL,IAChB,IACP2nD,IAAKpzD,GAAY,IAAE,IAEvB+F,KAAKw8B,YAAcx8B,KAAKguH,sBACxBhuH,KAAKoJ,MAAMsnH,mBAAmB9D,SAC5B5sH,KAAKu2D,IAAI,kCACPv2D,KAAKrF,YAAYlB,OACjB,CAAEk3H,OAAQ3wH,KAAKrF,YAAYlB,UAAU,yBAAAiC,EAAAe,OAAA,GAAAjB,EAAA,UAC1C,SAAAkB,GAAA,OAAAmwH,EAAA/yH,MAAA,KAAA6C,UAAA,IAEHkD,QAAS,CACP+wH,kBAAiB,WAAI,IAAArnH,EAAA,KACnBvJ,KAAKuuD,WAAU,WACbhlD,EAAKH,MAAMkmH,OAAOuB,aAClBtnH,EAAKunH,gBACP,IAIA9wH,KAAK0tH,qBAAsB,EAC3BxyH,YAAW,WACTqO,EAAKmkH,qBAAsB,CAC7B,GAAG,EACL,EACAqD,aAAY,WACV/wH,KAAKrH,MAAM8rD,QACNzkD,KAAK4tH,YAKR5tH,KAAKoJ,MAAMkmH,OAAO0B,cAJlBhxH,KAAK8wH,iBACL9wH,KAAKoJ,MAAMkmH,OAAOuB,aAClB7wH,KAAKoJ,MAAMkmH,OAAO2B,iBAItB,EACA9zH,QAAO,SAAEX,GACP,IAAM47B,EAAWm2F,EAAuBvuH,KAAKwrH,WAAYxrH,KAAKsuH,YAAa9xH,GAC3EwD,KAAKkG,MAAM,oBAAqBkyB,GAChCp4B,KAAKutH,MAAQ,CACf,EACA2D,OAAM,SAAA71H,GAAoD,IAAhD81H,EAAS91H,EAAT81H,UAAWC,EAAQ/1H,EAAR+1H,SAAQC,EAAAh2H,EAAEi2H,iBAAAA,OAAgB,IAAAD,GAAOA,EAC9CE,EAASvxH,KAAKwrH,WAAWtuH,UAAU,EAAG8C,KAAKutH,QAAU,GACrDiE,EAAQxxH,KAAKwrH,WAAWtuH,UAAU8C,KAAKutH,QAAU,GAgBjDkE,EAAe,KACfC,EAAeJ,IAAqBG,EAAa10H,KAAKw0H,EAAOr1H,OAAO,KAAOq1H,EAAO93H,QAAUuG,KAAKw4F,SAAW,EAAK,IAAM,GACvHm5B,EAAcL,IAAqBG,EAAa10H,KAAKy0H,EAAM,KAAOxxH,KAAKw4F,SAAY,IAAM,GAEzFpgE,EAAW,CACfm5F,EACAG,EACAP,EACAQ,EACAH,GACAnrH,KAAK,IACPrG,KAAKkG,MAAM,oBAAqBkyB,GAChC,IAAMo9E,EAAWx1G,KAAKutH,OAAS4D,EAAYQ,EAAaD,GAAaj4H,OAChE23H,GACHpxH,KAAKrH,MAAM8rD,QAGbzkD,KAAKuuD,WAAU,WAGbvuD,KAAKrH,MAAM+rD,kBAAkB8wD,EAAUA,GACvCx1G,KAAKutH,MAAQ/X,CACf,GACF,EACAoc,YAAW,SAAEl6H,EAAGm6H,GACd,IAAM1jH,EAAMnO,KAAKrF,YAAYlB,QAAU,EACvC,GAAgC,IAA5BuG,KAAKouH,YAAY30H,SACjB0U,EAAM,GAAK0jH,GAAY,CACzB,IACMr1H,GADmBq1H,GAAc7xH,KAAKrF,YAAYqF,KAAKw8B,cACxBhgC,YAC/B47B,EAAWm2F,EAAuBvuH,KAAKwrH,WAAYxrH,KAAKsuH,YAAa9xH,GAC3EwD,KAAKkG,MAAM,oBAAqBkyB,GAChCp4B,KAAKw8B,YAAc,EACnB,IAAMg5E,EAAWx1G,KAAKsuH,YAAYr6G,MAAQzX,EAAY/C,OAEtDuG,KAAKuuD,WAAU,WAEbvuD,KAAKrH,MAAM8rD,QAEXzkD,KAAKrH,MAAM+rD,kBAAkB8wD,EAAUA,GACvCx1G,KAAKutH,MAAQ/X,CACf,IACA99G,EAAEuR,gBACJ,CACF,EACA6oH,cAAa,SAAEp6H,GACb,IAAMyW,EAAMnO,KAAKrF,YAAYlB,QAAU,EAEvCuG,KAAKw8B,aAAe,GACM,IAAtBx8B,KAAKw8B,YACPx8B,KAAKrH,MAAM8rD,QACFzkD,KAAKw8B,aAAe,IAC7Bx8B,KAAKw8B,YAAcruB,EAAM,GAEvBA,EAAM,GACRzW,EAAEuR,gBAEN,EACA8oH,aAAY,SAAEr6H,GACZ,IAAMyW,EAAMnO,KAAKrF,YAAYlB,QAAU,EAEvCuG,KAAKw8B,aAAe,EAChBx8B,KAAKw8B,aAAeruB,IACtBnO,KAAKw8B,aAAe,EACpBx8B,KAAKrH,MAAM8rD,SAETt2C,EAAM,GACRzW,EAAEuR,gBAEN,EACA6nH,eAAc,WAAI,IAAAvmD,EAAA,KACVynD,EAAUhyH,KAAKoJ,MAAMkmH,OAAOljH,IAK5B6lH,EAAcjyH,KAAKoM,IAAI8lH,QAAQ,sBAC/BlyH,KAAKoM,IAAI8lH,QAAQ,0BACjB7xH,OACA8xH,EAAgBF,IAAgB5xH,OAClC4xH,EAAYz4D,QACZy4D,EAAY3oH,UAKV8oH,EAAuBD,GAJNF,IAAgB5xH,OACnC4xH,EAAY3lH,YACZ2lH,EAAY5lH,cAKVgmH,EAAmBL,EAAQ3lH,cAAewoG,EAAAA,EAAAA,GAAWmd,EAASC,GAAapiD,IAI3EyiD,EAAeH,EAFDv4H,KAAKC,IAAI,EAAGw4H,EAAmBD,GAI/CH,IAAgB5xH,OAClB4xH,EAAYM,OAAO,EAAGD,GAEtBL,EAAY3oH,UAAYgpH,EAG1BtyH,KAAKuuD,WAAU,WACb,IAAQliD,EAAiBk+D,EAAK5xE,MAAtB0T,aACAijH,EAAW/kD,EAAKnhE,MAAhBkmH,OACaA,EAAOljH,IAAIH,wBAAwBumH,OACrCnyH,OAAOiM,cACxBgjH,EAAOljH,IAAI4rD,MAAM6X,IAAM,OACvBy/C,EAAOljH,IAAI4rD,MAAMw6D,OAASnmH,EAAe,KAE7C,GACF,EACAomH,cAAa,WACXzyH,KAAK4tH,aAAc,CACrB,EACA8E,eAAc,WACZ1yH,KAAK4tH,aAAc,CACrB,EACAiC,OAAM,SAAEn4H,GAAG,IAAA2zE,EAAA,KAGTrrE,KAAKwtH,YAActyH,YAAW,WAC5BmwE,EAAK9M,SAAU,EACf8M,EAAKsnD,SAASj7H,EAChB,GAAG,IACL,EACAoI,QAAO,SAAEpI,EAAGm6H,GACV7xH,KAAK4xH,YAAYl6H,EAAGm6H,EACtB,EACA/B,QAAO,SAAEp4H,GACHsI,KAAKwtH,cACPpyH,aAAa4E,KAAKwtH,aAClBxtH,KAAKwtH,YAAc,MAGrBxtH,KAAKu+D,SAAU,EACfv+D,KAAK2yH,SAASj7H,GACdsI,KAAKytH,4BAA6B,CACpC,EACAuC,QAAO,SAAEt4H,GACP,IAAQ+Q,EAAQ/Q,EAAR+Q,IACRzI,KAAK2yH,SAASj7H,GAKZsI,KAAKytH,2BADK,WAARhlH,CAKN,EACAsnH,QAAO,SAAEr4H,GACPsI,KAAK2yH,SAASj7H,EAChB,EACAu4H,UAAS,SAAEv4H,GAAG,IAAA4zE,EAAA,KACJsnD,EAA2Bl7H,EAA3Bk7H,QAASC,EAAkBn7H,EAAlBm7H,SAAUpqH,EAAQ/Q,EAAR+Q,IACvBzI,KAAKmtH,oBAAsByF,GAAmB,UAARnqH,IACxCzI,KAAKkxH,OAAO,CAAEC,UAAW,KAAMG,kBAAkB,IAEjD55H,EAAEg2E,kBACFh2E,EAAEuR,iBAGFjJ,KAAKuuD,WAAU,WACb+c,EAAK3yE,MAAMwmF,OACX7T,EAAK3yE,MAAM8rD,OACb,KAGGzkD,KAAKytH,6BACI,QAARhlH,IACEoqH,EACF7yH,KAAK8xH,cAAcp6H,GAEnBsI,KAAK+xH,aAAar6H,IAGV,YAAR+Q,EACFzI,KAAK8xH,cAAcp6H,GACF,cAAR+Q,GACTzI,KAAK+xH,aAAar6H,GAER,UAAR+Q,IACGmqH,GACH5yH,KAAK4xH,YAAYl6H,KAQX,WAAR+Q,IACGzI,KAAKytH,4BACRztH,KAAKrH,MAAM8rD,QAGjB,EACAwZ,QAAO,SAAEvmE,GACPsI,KAAK2yH,SAASj7H,GACdsI,KAAKkG,MAAM,oBAAqBxO,EAAEkJ,OAAO5B,MAC3C,EACA8zH,kBAAiB,SAAEp7H,GACjBsI,KAAKkG,MAAM,mBAAoBxO,EACjC,EACAq7H,sBAAqB,SAAEr7H,GACrBsI,KAAKkG,MAAM,wBAAyBxO,EACtC,EACAi7H,SAAQ,SAAAh1H,GAAkC,IAAA8tE,EAAA,KAApBunD,EAAcr1H,EAAxBiD,OAAUoyH,eACpBhzH,KAAKutH,MAAQyF,EACbhzH,KAAKuuD,WAAU,WACbkd,EAAKriE,MAAMgmH,iBAAiB6D,cAC9B,GACF,EACAr1D,OAAM,WACN,EACAs1D,sBAAqB,SAAErB,GACrB,OAAIA,EAAW71H,KACN61H,EAAW13H,YAAc,IAAM03H,EAAWv1H,WAE1C0D,KAAK2uH,wBAAwBkD,EAExC,IC/iBJ,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,yLNNzDtxH,EAAAA,EAAAA,IAyGM,OAxGJswC,IAAI,OACJxxC,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,cAAa,gBACO5oD,EAAAssH,oB,EAE1B3kE,EAAAA,EAAAA,IAME3nD,EAAAkI,OAAA,WALC/Q,GAAE,WAAe6I,EAAAysH,WACjB+F,SAAWxyH,EAAAquH,iBACZoE,iBAAkB,OACjBC,aAAe1yH,EAAAwtH,gBACfmF,qBAAyB3yH,EAAAwtH,kBAAoC,IAAjBxtH,EAAA67B,YAA2B77B,EAAAsuH,iBAAiBtuH,EAAA67B,aAAjC,MAG1D/7B,EAAAA,EAAAA,GAYM,OAXJowC,IAAI,gBACJxxC,MAAM,iBACL24D,OAAK2E,EAAAA,EAAAA,IAAEh8D,EAAAgtH,cACP,eAAa,G,EAEdltH,EAAAA,EAAAA,GAA0B,aAAAmkD,EAAAA,EAAAA,IAAjBjkD,EAAAstH,SAAO,IAChBxtH,EAAAA,EAAAA,GAGS,OAHTD,EAGC,IAAC,MACFC,EAAAA,EAAAA,GAA2B,aAAAmkD,EAAAA,EAAAA,IAAlBjkD,EAAAutH,UAAQ,QAEnBlqH,EAAAA,EAAAA,IAGEuvH,EAAA,CAFA1iF,IAAI,qBACJ,YAAU,a,UAEIlwC,EAAAqsH,oBAAiB,WAAjCzsH,EAAAA,EAAAA,IAqBWwkD,EAAAA,GAAA,CAAAt8C,IAAA,IAnBA9H,EAAAssH,iBAM6B,iBANd,WADxB1sH,EAAAA,EAAAA,IAQS,U,MANPlB,MAAM,oCACNI,KAAK,SACJ2S,MAAOzR,EAAA8L,GAAG,mBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAowH,cAAApwH,EAAAowH,aAAAj3H,MAAA6G,EAAAhE,UAAY,kB,EAE5BqH,EAAAA,EAAAA,IAAwC+hD,EAAA,CAA/Bj8C,KAAM,CAAC,MAAO,iBAAa,MAG9BnJ,EAAAqsH,oBAAiB,WADzBrnE,EAAAA,EAAAA,IAUE6tE,EAAA,C,MARA3iF,IAAI,SACH,wBAAuBlwC,EAAAusH,oBACxB7tH,MAAM,qBACLo0H,QAAO9yH,EAAAuwH,OACP4B,kBAAkBnyH,EAAAmyH,kBAClBC,sBAAuBpyH,EAAAoyH,sBACvBllD,OAAMltE,EAAA8xH,cACNt+E,QAAOxzC,EAAA+xH,gB,mJAGZ1uH,EAAAA,EAAAA,IAoDUqjE,EAAA,CAnDRx2B,IAAI,mBACJxxC,MAAM,qBACNw3E,UAAU,SACT,gBAAe,oB,CAELl3E,SAAO0+D,EAAAA,EAAAA,KAChB,iBA2CM,EA3CN59D,EAAAA,EAAAA,GA2CM,OA1CH3I,GAAI6I,EAAAquH,iBACLn+E,IAAI,aACJxxC,MAAM,0BACN44D,KAAK,W,gBAEL13D,EAAAA,EAAAA,IAoCMwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IAnC0BxpD,EAAAhG,aAAW,SAAjCk3H,EAAYjuH,G,kBADtBrD,EAAAA,EAAAA,IAoCM,OAlCHzI,GAAI6I,EAAAsuH,iBAAiBrrH,GACrB6E,IAAK7E,EACNvE,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,oBAAmB,CAAA/sB,YAEF54B,IAAUjD,EAAA67B,eADjCy7B,KAAK,SAEJ,aAAYt3D,EAAAuyH,sBAAsBrB,GAClC,gBAAejuH,IAAUjD,EAAA67B,YACzB18B,SAAKgB,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAevkD,EAAAb,QAAQolD,EAAQ2sE,EAAU,wB,EAE/CpxH,EAAAA,EAAAA,GAMO,OANPwkD,EAMO,CAJG4sE,EAAWxkE,MAAG,WADtB9sD,EAAAA,EAAAA,IAGC,O,MADEytD,IAAK6jE,EAAWxkE,K,wBAEnB9sD,EAAAA,EAAAA,IAAgD,OAAA6kD,GAAAR,EAAAA,EAAAA,IAAhCitE,EAAWr1H,aAAW,OAExCiE,EAAAA,EAAAA,GAiBM,MAjBN4kD,EAiBM,CAfIwsE,EAAW71H,OAAI,WADvBuE,EAAAA,EAAAA,IAQO,OARP8lD,EAQO,mBAJFwrE,EAAW13H,aAAW,IAAG6J,EAAAA,EAAAA,IAG1B0vH,EAAA,CAFC13H,KAAM61H,EAAW71H,KACjB23H,IAAI,G,oCAIA9B,EAAW71H,MAGmB,iBAHf,WADxBuE,EAAAA,EAAAA,IAKO,OALP+kD,GAKOV,EAAAA,EAAAA,IADFjkD,EAAAguH,wBAAwBkD,IAAU,KAEvCpxH,EAAAA,EAAAA,GAA2D,OAA3D+kD,GAA2DZ,EAAAA,EAAAA,IAA/BitE,EAAWv1H,YAAU,W,4HO1FpD+C,MAAM,W,GAOPwxC,IAAI,SAEJxxC,MAAM,c,+BAgBFA,MAAM,6B,SAgBVA,MAAM,mB,qBAiBRA,MAAM,W,GAMCA,MAAM,gB,qBAgCHA,MAAM,e,SAIJA,MAAM,qB,+BAcJA,MAAM,+B,GAebA,MAAM,a,SAQXA,MAAM,oB,uuDC7HhBgL,EAAAA,GAAAA,IACEupH,EAAAA,IACAC,EAAAA,IACA/G,EAAAA,IACAgH,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACAC,EAAAA,KAGF,IAAMC,EAA2B,CAC/B,sBAAuB,QACvB,kBAAmB,OACnB,qBAAsB,MACtB,iBAAkB,YAClB,oBAAqB,MACrBC,WAAY,kBACZC,QAAS,YACTn4G,QAAS,OACTo4G,MAAO,QAGHC,EAAyB,SAACp8H,EAAOqU,EAAWgoH,GAChD,IAAMxgH,EAAM,CAAC7b,EAAM4B,YAAay6H,EAAcr8H,IAQ9C,OAPIA,EAAMqc,aACRhI,EAAU0O,SAAQ,SAAAvM,GAAQ,IAAA0/G,EAAAC,EAClBp1H,GAAkC,QAAvBm1H,EAAAl2H,EAAMqc,YAAY7F,UAAK,IAAA0/G,OAAA,EAAvBA,EAAyBn1H,WAAY,GAChDU,EAA8B,QAA1B00H,EAAGn2H,EAAMqc,YAAY7F,UAAK,IAAA2/G,OAAA,EAAvBA,EAAyB10H,KACtCoa,EAAIhV,KAAItF,MAARsa,GAAGra,EAAAA,EAAAA,GAAUT,EAASD,OAAO,CAACW,IAAOb,QAAO,SAAAO,GAAC,OAAIA,CAAC,KACpD,IAEK0a,CACT,EA6SA,QA1QoB,CAClB9U,MAAO,CACL4tH,oBAAqB,CACnB1tH,UAAU,EACVC,KAAM8B,QACN3B,SAAS,GAEXi1H,gBAAiB,CACfr1H,UAAU,EACVC,KAAM8B,QACN3B,SAAS,IAGbk1H,OAAQ,CAAC,kBACT18H,KAAI,WACF,MAAO,CACLsvF,QAAS,GACTqtC,YAAa,SACbC,iBAAiB,EACjBC,oBAAqB,eACrB7D,UAAU,EACV8D,mBAAoB,KAEpBC,eAAe,EACfC,UAAW,CAAC,EACZC,UAAW,CAAC,EACZC,oBAAqB,GACrB7hH,MAAO,EAEX,EACAxS,WAAY,CACVs0H,eAAev1D,EAAAA,EAAAA,KAAqB,kBAAM,8BAA8C,IACxF5U,SAAAA,EAAAA,EACAnnD,WAAAA,EAAAA,EACA2iE,QAAAA,EAAAA,SAEF/mE,QAAS,CACPgxH,WAAU,WACR7wH,KAAKoJ,MAAM2yG,QAAQqU,cACnBpwH,KAAKw1H,WACP,EACAxE,WAAU,WACRhxH,KAAKoJ,MAAM2yG,QAAQsU,aACrB,EACAhB,YAAW,SAAEjyC,GACXp9E,KAAKoJ,MAAM2yG,QAAQsT,YAAYjyC,EACjC,EACAq4C,YAAW,SAAEz7H,GAAM,IAAA0H,EAAA,KACjB,OAAO,SAAA07E,GAAQ17E,EAAK0zH,UAAUp7H,GAAQojF,CAAG,CAC3C,EACAs4C,eAAc,WACZ11H,KAAKkG,MAAM,OACb,EACAyvH,gBAAe,WACb31H,KAAKkG,MAAM,QACb,EACA4sH,kBAAiB,SAAEp7H,GACjBsI,KAAKkG,MAAM,mBAAoBxO,EACjC,EACAq7H,sBAAqB,SAAEr7H,GACrBsI,KAAKkG,MAAM,wBAAyBxO,EACtC,EACA+7H,QAAO,SAAEl7H,GACP,IAAMyG,EAAQzG,EAAM0B,SAAW,IAAHZ,OAAOd,EAAM4B,YAAW,KAAM5B,EAAMiE,YAC3DwD,KAAKoxH,UACRpxH,KAAKoJ,MAAM2yG,QAAQsU,cAErBrwH,KAAKkG,MAAM,QAAS,CAAEirH,UAAWnyH,EAAOoyH,SAAUpxH,KAAKoxH,UACzD,EACA/1D,SAAQ,SAAEu6D,EAAYC,EAAUC,EAAmBC,GACjD,IAAMn1H,EAASZ,KAAKoJ,MAAM,gBAAgBgD,IAC1CpM,KAAKg2H,cAAcp1H,EAAQk1H,EAAmBC,EAChD,EACAC,cAAa,SAAEp1H,EAAQqT,EAAOI,GAAK,IAAA1L,EAAA,KAC3BknE,EAAMjvE,EAAO0I,UAAY,EAC/BtJ,KAAKuuD,WAAU,WACb5lD,EAAKstH,WAAW/5H,MAAM+X,EAAOI,EAAM,GAAGiH,SAAQ,SAAAy2B,GAC5C,IAAMmkF,EAAsBnkF,EAAMj6C,GAhFhCqF,QAAQ,YAAa,IAiFjB0zC,EAAMloC,EAAKysH,UAAU,SAAWrjF,EAAMj6C,IAC5C,GAAK+4C,EAAL,CACA,IAAM/pC,EAAO+pC,EAAIzkC,IAAI+pH,cAChBrvH,GACDA,GA7FI,SAACA,GACjB,IAAMkxD,EAAQlxD,EAAKkxD,MAAMxO,UACnBp1C,EAAM,wBAAwBrX,KAAKi7D,GACzC,OAAK5jD,EACEA,EAAI,GADQ,CAErB,CAwFsBgiH,CAAUtvH,IAAS+oE,IAC7BlnE,EAAKosH,YAAcmB,EAJF,CAMrB,IACAvtH,EAAK0tH,cACP,GACF,EACAA,aAAY,WAEV,IAAMC,EAAYt2H,KAAKo1H,UAAU,gBAAkBp1H,KAAK+0H,aAClD7+C,EAAOogD,EAAUphB,WACjB17E,EAAQ08C,EAAOogD,EAAUC,YACzBC,EAAax2H,KAAKoJ,MAAM2lE,OACxBojD,EAAgBqE,EAAWzH,WAC3B0H,EAAqBtE,EAAgBqE,EAAWnhG,YAChDqhG,EAAY,SAAA73H,GAAO23H,EAAWzH,WAAalwH,CAAE,EAG/Cq3E,EADW,EACKi8C,EAClBuE,EAAUxgD,EAFG,GAGJ18C,EAHI,EAGai9F,GAC1BC,EAAUl9F,EAJG,EAIcg9F,EAAWnhG,YAE1C,EACAoH,UAAS,SAAEhhB,GACTzb,KAAK22H,iBAAgB,GACrB,IAAMC,EAAc52H,KAAKi2H,WAAWruH,WAAU,SAAAlO,GAAC,OAAIA,EAAE5B,KAAO2jB,CAAO,IACnEzb,KAAKoJ,MAAM,gBAAgBytH,aAAaD,EAC1C,EACAE,oBAAmB,SAAEl2H,GACfA,EAAO0I,WAAa,EACtBtJ,KAAKi1H,oBAAsB,eAClBr0H,EAAO0I,WAAa1I,EAAOm2H,aAAe,EACnD/2H,KAAKi1H,oBAAsB,kBAE3Bj1H,KAAKi1H,oBAAsB,iBAE/B,EACA+B,eAAc,WACZh3H,KAAKg1H,iBAAmBh1H,KAAKg1H,eAC/B,EACA2B,gBAAe,SAAE33H,GACfgB,KAAKg1H,gBAAkBh2H,CACzB,EACAi4H,gBAAe,SAAEngI,EAAM4wF,GACrB,OAhKkB,SAAC5wF,GAAiD,IAA3C4wF,EAAO/qF,UAAAlD,OAAA,QAAA8I,IAAA5F,UAAA,GAAAA,UAAA,GAAG,GAAIiQ,EAASjQ,UAAAlD,OAAA,EAAAkD,UAAA,QAAA4F,EAAEqyH,EAAaj4H,UAAAlD,OAAA,EAAAkD,UAAA,QAAA4F,EACnE,GAAgB,KAAZmlF,EAAgB,OAAO5wF,EAE3B,IAEwB2H,EAFlBy4H,EAAmBxvC,EAAQ1uF,cAC3Bm+H,EAAmB,GAAEx4H,EAAAC,EACP9H,GAAI,IAAxB,IAAA6H,EAAAE,MAAAJ,EAAAE,EAAAG,KAAAC,MAA0B,KAAfxG,EAAKkG,EAAAO,MACRo4H,EAAUzC,EAAuBp8H,EAAOqU,EAAWgoH,GACtD19H,KAAI,SAAAwC,GAAC,OAAIA,EAAEV,cAAcoiC,QAAQ87F,EAAiB,IAClD/9H,QAAO,SAAAO,GAAC,OAAIA,GAAK,CAAC,IAEf29H,EAAiBD,EAAQ39H,OAASG,KAAKs1C,IAAGp1C,MAARF,MAAIG,EAAAA,EAAAA,GAAQq9H,KAAY,EAE5DC,GAAkB,IACf95H,MAAM2G,QAAQizH,EAAiBE,MAClCF,EAAiBE,GAAkB,IAErCF,EAAiBE,GAAgBj4H,KAAK7G,GAE1C,CAAC,OAAA2G,GAAAP,EAAAjH,EAAAwH,EAAA,SAAAP,EAAAQ,GAAA,CACD,OAAOg4H,EAAiBG,MAC1B,CA4IaL,CAAgBngI,EAAM4wF,EAAS1nF,KAAK4M,UAAW5M,KAAK2uH,wBAC7D,EACA6G,UAAS,WAAI,IAAAxsH,EAAA,KACLuuH,EAAmBv3H,KAAKm1H,cAC9Bn1H,KAAKw3H,wBACLx3H,KAAKuuD,WAAU,WACbvlD,EAAKI,MAAM2mB,OAAO00B,OACpB,IACAzkD,KAAKm1H,eAAgB,EACrBn1H,KAAKs1H,oBAAsBt1H,KAAKy3H,yBAC3BF,GACHv3H,KAAKuuD,WAAU,WACTvlD,EAAK0uH,cACP1uH,EAAKyzB,UAAUzzB,EAAK0uH,aAExB,GAEJ,EACAD,uBAAsB,WAAI,IAAAluH,EAAA,KACxB,OAAOvJ,KAAK23H,eACTzgI,KAAI,SAAA66C,GAAK,OAAA74C,EAAAA,EAAA,GACL64C,GAAK,IACRj5C,OAAQyQ,EAAK0tH,gBAAgBllF,EAAMj5C,OAAQ8+H,IAAKruH,EAAKm+E,WAAS,IAE/DvuF,QAAO,SAAA44C,GAAK,OAAIA,EAAMj5C,OAAOW,OAAS,CAAC,GAC5C,EACA+9H,sBAAqB,WAAI,IAAAjtD,EAAA,KACvBvqE,KAAKuuD,WAAU,WACRgc,EAAKnhE,MAAM,kBAGhBmhE,EAAK92D,MAAQ82D,EAAKnhE,MAAM,gBAAgBgD,IAAIipB,YAC9C,GACF,GAEFu4B,MAAO,CACL85B,QAAO,WACL1nF,KAAKq7D,WACLr7D,KAAK63H,8BACP,EACAC,gBAAe,WACb93H,KAAKs1H,oBAAsBt1H,KAAKy3H,wBAClC,GAEFnvH,SAAU,CACRyvH,YAAW,WACT,OAAO/3H,KAAKg4H,WACd,EACAA,YAAW,WACT,OAAO,EACT,EACAC,WAAU,WACR,OAAO,EACT,EACAC,WAAU,WACR,OAAOl4H,KAAKyT,MAAQ7Z,KAAK02E,MAAMtwE,KAAKyT,MAAQzT,KAAKi4H,WAAa,GAAK,CACrE,EACAE,gBAAe,WACb,OAAOn4H,KAAKg1H,gBAAkB,GAAKh1H,KAAK+0H,WAC1C,EACAqD,kBAAiB,WACf,OAAIp4H,KAAK0L,OAAOhR,MAAM2X,SAASi/E,SACtBtxF,KAAK0L,OAAOhR,MAAM2X,SAASi/E,SAAS73F,OAAS,EAE/C,CACT,EACAq+H,gBAAe,WACb,GAAI93H,KAAK60H,gBACP,MAAO,CAAC,EAEV,IAAM/7H,EAASkH,KAAK0L,OAAOoP,QAAQG,oBAInC,OAHIniB,EAAOu/H,WACTv/H,EAAOu/H,SAASl6H,KAAO6B,KAAKyM,GAAG,mBAE1B3T,CACT,EACA4+H,aAAY,WACV,OAAOz/H,OAAOD,KAAKgI,KAAK83H,iBAAiB,EAC3C,EACAQ,mBAAkB,WAAI,IAAAjtD,EAAA,KACpB,OAAOrrE,KAAK0L,OAAOoP,QAAQY,uBAAuBxkB,KAAI,SAAA66C,GAAK,MAAK,CAC9Dj6C,GAAI,YAAFuB,OAAc04C,EAAMj6C,IACtBqG,KAAMktE,EAAK5+D,GAAG,wBAADpT,OAAyB04C,EAAMj6C,KAC5CgS,KAAMyqH,EAAyBxiF,EAAMj6C,IACrCgB,OAAQi5C,EAAMj5C,OACf,GACH,EACA6+H,eAAc,WACZ,OAAO1/H,OAAOkT,QAAQnL,KAAK83H,iBACxB5gI,KAAI,SAAAsD,GAAA,IAAAa,GAAAqC,EAAAA,EAAAA,GAAAlD,EAAA,GAAM,OAAHa,EAAA,GAAGA,EAAA,EAAO,IACjBhC,OAAO2G,KAAKs4H,mBACjB,EACAC,qBAAoB,WAClB,OAA8D,KAAtDv4H,KAAK0L,OAAOhR,MAAM2X,SAASi/E,UAAY,IAAI73F,MACrD,EACAo+H,6BAA4B,WAAI,IAAAvsD,EAAA,KAC9B,OAAO/R,KAAS,WACd+R,EAAKgqD,oBAAsBhqD,EAAKmsD,wBAClC,GAAG,IACL,EACAxB,WAAU,WAAI,IAAAxqD,EAAA,KACZ,OAAOzrE,KAAKs1H,oBAAoBp+H,KAAI,SAAA66C,GAAK,OACvCymF,IAAMzmF,EAAMj5C,OAAQ2yE,EAAKysD,YACtBhhI,KAAI,SAACknE,EAAOx6D,GAAK,OAAA1K,EAAAA,EAAA,GACb64C,GAAK,IACRj6C,GAAc,IAAV8L,EAAcmuC,EAAMj6C,GAAK,OAAHuB,OAAUuK,EAAK,KAAAvK,OAAI04C,EAAMj6C,IACnDgB,OAAQslE,EACRq6D,WAAsB,IAAV70H,GAAW,GACtB,IACJkR,QAAO,SAACza,EAAGy3C,GAAC,OAAKz3C,EAAEhB,OAAOy4C,EAAE,GAAE,GACnC,EACAllC,UAAS,WACP,OAAOG,EAAAA,EAAAA,qBAAoB/M,KAAK0L,OAAOoP,QAAQnH,aAAastD,kBAC9D,EACA0tD,wBAAuB,WAAI,IAAA1iD,EAAA,KACzB,OAAO,SAAA1zE,GACL,IAAKA,EAAMqc,YACT,OAAOrc,EAAM4B,YAGf,GAAI5B,EAAMic,gBACR,OAAOy3D,EAAKx/D,GAAGlU,EAAMic,gBAAgB/L,IAAKlQ,EAAMic,gBAAgBC,MACjE,IAEgCmnC,EAFhCC,EAAAj9C,EAEkBqtE,EAAKr/D,WAAS,IAAjC,IAAAivC,EAAAh9C,MAAA+8C,EAAAC,EAAA/8C,KAAAC,MAAmC,KAAA6vH,EAAxB7/G,EAAI6sC,EAAA58C,MACb,GAA2B,QAA3B4vH,EAAIr2H,EAAMqc,YAAY7F,UAAK,IAAA6/G,GAAvBA,EAAyB50H,KAC3B,OAAOzB,EAAMqc,YAAY7F,GAAM/U,IAEnC,CAAC,OAAAkF,GAAA28C,EAAAnkD,EAAAwH,EAAA,SAAA28C,EAAA18C,GAAA,CAED,OAAO5G,EAAM4B,WACf,CACF,EACAu+H,UAAS,WACP,MAA+B,WAAxB14H,KAAK24H,cACd,IC3VJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,oQFNzDhzE,EAAAA,EAAAA,IA2JU0hB,EAAA,CA1JRx2B,IAAI,UACJy2B,QAAQ,QACR,gBAAc,+BACb,gBAAe,kBAAAsxD,UAAA,GACf/qD,OAAMltE,EAAA+0H,eACNvhF,QAAOxzC,EAAAg1H,iB,CAEGh2H,SAAO0+D,EAAAA,EAAAA,KAChB,iBAuDM,EAvDN59D,EAAAA,EAAAA,GAuDM,MAvDND,EAuDM,uBAjDJD,EAAAA,EAAAA,IAgCO,OAhCPokD,EAgCO,gBA3BLpkD,EAAAA,EAAAA,IA0BOwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IAzBWxpD,EAAA20H,qBAAmB,SAA5BvjF,G,kBADTxxC,EAAAA,EAAAA,IA0BO,Q,WAxBJswC,IAAKlwC,EAAA80H,YAAY,gBAAkB1jF,EAAMj6C,IACzC2Q,IAAKspC,EAAMj6C,GACZuH,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,kBAAiB,C,OACS5oD,EAAAw3H,kBAAoBpmF,EAAMj6C,MAGzDsa,MAAO2/B,EAAM5zC,KACd85D,KAAK,SACJn4D,SAAKgB,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAA87B,UAAUsV,EAAMj6C,GAAE,iB,CAG1Bi6C,EAAMpoC,QAAK,WADnBpJ,EAAAA,EAAAA,IAQO,OARPykD,EAQO,EAJLhhD,EAAAA,EAAAA,IAGE60H,EAAA,CAFC3iE,IAAKnkB,EAAM5zC,KACX6vD,IAAKjc,EAAMpoC,O,sCAGhBg8C,EAAAA,EAAAA,IAIEI,EAAA,C,MAFCj8C,KAAMioC,EAAMjoC,KACb,kB,yCA3BgBnJ,EAAA+3H,aAgCd/3H,EAAA43H,uBAAoB,WAD5Bh4H,EAAAA,EAAAA,IAeO,OAfP0kD,EAeO,EAXLxkD,EAAAA,EAAAA,GAUO,QATLpB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,yCAAwC,CAAAlhD,OAC7B1H,EAAAq0H,mBAChB5iH,MAAOzR,EAAA8L,GAAG,kBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAq2H,gBAAAr2H,EAAAq2H,eAAAl9H,MAAA6G,EAAAhE,UAAc,kB,EAE9BqH,EAAAA,EAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,cACL,oB,2BAMAnJ,EAAAw0H,gBAAa,WADrB50H,EAAAA,EAAAA,IAwFM,MAxFN6kD,EAwFM,EApFJ3kD,EAAAA,EAAAA,GA0EM,OAzEJpB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,CAAAjmB,OACJ3iC,EAAAq0H,oB,EAEjBv0H,EAAAA,EAAAA,GASM,MATN4kD,EASM,WARJ5kD,EAAAA,EAAAA,GAOC,SANCowC,IAAI,S,qDACKlwC,EAAA+mF,QAAOxiC,CAAA,GAChBzlD,KAAK,OACLJ,MAAM,eACL8lD,YAAaxkD,EAAA8L,GAAG,sBAChBwxD,QAAKp9D,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEA,EAAOtkD,OAAOk4H,WAAY,CAAH,I,kBAJtBn4H,EAAA+mF,cAAO,qBAQpB/hC,EAAAA,EAAAA,IAqDkBozE,EAAA,CApDhBloF,IAAI,eAEJxxC,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,eACE5oD,EAAAs0H,sBACP,gBAAet0H,EAAAo3H,YACf35D,MAAOz9D,EAAAs1H,WACP,eAAa,EACb+C,SAAQr4H,EAAA06D,SACR49D,UAASt4H,EAAA62H,sBACT38C,SAAQl6E,EAAA62H,uB,CAEE53H,SAAOy+D,EAAAA,EAAAA,KAChB,SAAA7jE,GAAA,IAD0Bu3C,EAAKv3C,EAuCTmJ,KAvCWC,EAAKpJ,EAALoJ,MAAOyE,EAAM7N,EAAN6N,OAAM,QAC9CrE,EAAAA,EAAAA,IAsCsBk1H,EAAA,CArCnBroF,IAAKlwC,EAAA80H,YAAY,SAAW1jF,EAAMj6C,IAClC6L,KAAMouC,EACN1pC,OAAQA,EACR,aAAYzE,EACZ,oBAAiB,CAAGmuC,EAAMj5C,OAAOW,S,mBAElC,iBA8BM,EA9BNgH,EAAAA,EAAAA,GA8BM,MA9BN6kD,EA8BM,CA1BIvT,EAAM0mF,aAAU,WADxBl4H,EAAAA,EAAAA,IAKK,KALLilD,GAKKZ,EAAAA,EAAAA,IADA7S,EAAM5zC,MAAI,mCAEfoC,EAAAA,EAAAA,IAoBOwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IAnBWpY,EAAMj5C,QAAM,SAArBP,G,kBADTgI,EAAAA,EAAAA,IAoBO,QAlBJkI,IAAKspC,EAAMj6C,GAAKS,EAAM4B,YACtBiY,MAAOzR,EAAAguH,wBAAwBp2H,GAChC8G,MAAM,aACN44D,KAAK,SACJn4D,SAAKgB,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAevkD,EAAA8yH,QAAQl7H,EAAK,wB,CAGzBA,EAAM0B,WAEM,WACrB0rD,EAAAA,EAAAA,IAOEkzE,EAAA,C,MALAx5H,MAAM,6BACN2L,QAAQ,OACPkrD,IAAKv1D,EAAAguH,wBAAwBp2H,GAC7By1D,IAAKz1D,EAAM0B,SACX,kBAAiB83C,EAAMj6C,GAAKS,EAAM4B,a,2CATd,WADvBoG,EAAAA,EAAAA,IAG+B,OAH/BmlD,GAG+Bd,EAAAA,EAAAA,IAA3BrsD,EAAMiE,aAAW,K,uKAtCTmE,EAAA+3H,cAoDtBj4H,EAAAA,EAAAA,GAIM,MAJNmlD,EAIM,EAHJ5hD,EAAAA,EAAAA,IAEWk6D,EAAA,C,WAFQv9D,EAAAywH,S,qDAAAzwH,EAAAywH,SAAQlsE,CAAA,I,mBACzB,iBAA2B,mBAAxBvkD,EAAA8L,GAAG,oBAAD,G,iCAKH9L,EAAAq0H,kBAAe,WADvBz0H,EAAAA,EAAAA,IAQM,MARNslD,EAQM,EAJJ7hD,EAAAA,EAAAA,IAGEm1H,EAAA,CAFCC,WAAUz4H,EAAAmyH,kBACVuG,eAAe14H,EAAAoyH,uB,sKGtJtBuG,E,wBCACj6H,MAAM,S,SAcLA,MAAM,S,SAMNA,MAAM,S,SAMNA,MAAM,SDYd,SAtCMi6H,EAAiB,KAiCd,CAAEC,UA/BS,WAAH,OAAS,IAAIhiI,SAAQ,SAACC,EAASyD,GAC5C,GAAIq+H,EACF9hI,EAAQ8hI,OADV,CAMAj5H,OAAOm5H,aAAe,CAAC,EACvBn5H,OAAOm5H,aAAat7G,OAAS,CAC3Bu7G,WAAW,EACXC,WAAY,kBAMd,IAAMC,EAAS5tH,SAAS8lG,cAAc,UAGtC8nB,EAAO3rE,IAAM,2BACb2rE,EAAOl6H,KAAO,kBACdk6H,EAAOC,QAAU,SAACliI,GAAQuD,EAAOvD,EAAG,EACpCiiI,EAAOE,QAAU,SAACniI,GAAQuD,EAAOvD,EAAG,EACpCiiI,EAAOG,SAAW,SAACpiI,GAAQuD,EAAOvD,EAAG,EACrCiiI,EAAOrP,OAAS,WACdgP,EAAiBj5H,OAAOm5H,aACxBhiI,EAAQ8hI,EACV,EACAvtH,SAASC,KAAK+qG,YAAY4iB,EAxB1B,CAyBF,GAAE,I,yBEzBJtvH,EAAAA,GAAAA,IACE89G,EAAAA,IACA4R,EAAAA,KA2CF,QAxCc,CACZz6H,MAAO,CAAC,OACRlH,KAAI,WACF,MAAO,CACL4hI,QAAQ,EACR/pF,QAAQ,EACRqpF,eAAgB,KAEpB,EACAz5H,QAAS,CACPo6H,WAAU,WAAI,IAAAv4H,EAAA,KACR1B,KAAKg6H,SACTh6H,KAAKg6H,OAAS,SACdE,EAAAA,YAA0BziI,MAAK,SAAC0iI,GAC9B,IAAMH,EAASG,EAAOC,SAASC,eAC/BL,EAAO97G,OAAS,CACdo8G,UAAW,MAEK54H,EAAK0H,MAAMmxH,UACnBxjB,YAAYijB,GACtBA,EAAOhiE,MAAMvkD,MAAQ,OACrBumH,EAAOhiE,MAAM9rD,OAAS,OACtB8tH,EAAO19C,KAAK56E,EAAKssD,KAAKv2D,MAAK,WACzBiK,EAAKs4H,QAAS,CAChB,IAAE,OAAO,SAACtiI,GACR6kB,QAAQrR,MAAM,uBAAwBxT,GACtCgK,EAAKs4H,OAAS,OAChB,IACAt4H,EAAK43H,eAAiBU,EACtBt4H,EAAKwE,MAAM,eACb,IACF,EACAikH,YAAW,WACTnqH,KAAKs5H,gBAAkBt5H,KAAKs5H,eAAe7qC,SAC3CzuF,KAAKg6H,QAAS,EACdh6H,KAAKkG,MAAM,eACb,ICvCJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,iEFNzD3F,EAAAA,EAAAA,IAqCM,MArCNC,EAqCM,EAnCe,IAAXG,EAAAq5H,QAA8B,WAAXr5H,EAAAq5H,SAAM,WADjCz5H,EAAAA,EAAAA,IAKE,O,MAHAswC,IAAI,YACJxxC,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,SAAQ,CAAAjmB,OACe,WAAX3iC,EAAAq5H,W,0BAGD,IAAXr5H,EAAAq5H,SAAM,WADdz5H,EAAAA,EAAAA,IA6BS,U,MA3BPlB,MAAM,8BACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAs5H,YAAAt5H,EAAAs5H,WAAAngI,MAAA6G,EAAAhE,UAAU,I,CAGC,WAAXgE,EAAAq5H,SAAM,WADdz5H,EAAAA,EAAAA,IAKO,OALPokD,GAKOC,EAAAA,EAAAA,IADFjkD,EAAA8L,GAAG,oBAAD,oBAGY,UAAX9L,EAAAq5H,SAAM,WADdz5H,EAAAA,EAAAA,IAKO,OALPskD,GAKOD,EAAAA,EAAAA,IADFjkD,EAAA8L,GAAG,uBAAD,iBAEPlM,EAAAA,EAAAA,IAWO,OAXPykD,EAWO,EAPLvkD,EAAAA,EAAAA,GAEI,UAAAmkD,EAAAA,EAAAA,IADCjkD,EAAA8L,GAAG,0BAAD,IAEPhM,EAAAA,EAAAA,GAGI,WAFFuD,EAAAA,EAAAA,IAAsC+hD,EAAA,CAA9Bj8C,KAAK,0BAAsB,QAAG,KACtC86C,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,2BAAD,4B,2IGlCT+tH,EAAoB,SAApBA,EAAqBC,EAASx7G,EAAQxmB,GAAK,OAAK,IAAIlB,SAAQ,SAACC,EAASyD,GAC1EC,YAAW,WACTzC,EAAMiC,MAAM+wB,IAAIC,kBAAkB0R,sBAAsB,CAAEtlC,GAAImnB,IAC3DxnB,MAAK,SAAC8gC,GAEL,OADA9/B,EAAM6Z,OAAO,yBAA0B,CAACimB,IACjCA,CACT,IACC9gC,MAAK,SAAC8gC,GAAY,OAAK/gC,EAAQ,CAAC+gC,EAAanI,UAAWmI,EAAamiG,UAAWniG,EAAauK,OAAQ23F,GAAS,IAAC,OACzG,SAAC/iI,GAAC,OAAKuD,EAAOvD,EAAE,GAC3B,GAAG,IACL,IAAGD,MAAK,SAAA+C,GAAwC,IAAAa,GAAAqC,EAAAA,EAAAA,GAAAlD,EAAA,GAAtC41B,EAAS/0B,EAAA,GAAEiU,EAAIjU,EAAA,GAAEynC,EAAMznC,EAAA,GAAEo/H,EAAOp/H,EAAA,GACnC+0B,GAAe0S,GAAUxzB,KAASmrH,GAAW,IAGhDD,IAAoBC,EAASx7G,EAAQxmB,EAEzC,GAAE,EAEWkiI,EAAgB,SAAC17G,EAAQxmB,GAAK,OAAK,IAAIlB,SAAQ,SAACC,EAASyD,GACpExC,EAAMiC,MAAM+wB,IAAIC,kBAAkBwS,WAAW,CAAEpmC,GAAImnB,IAChDxnB,MAAK,SAACm3F,GAGL,GAFAn2F,EAAM6Z,OAAO,yBAA0B,CAACs8E,MAEpCA,EAAQx+D,WAAcw+D,EAAQ9rD,QAAU8rD,EAAQ8rC,WAapD,OAAOF,EAAkB,EAAG5rC,EAASn2F,GAClChB,MAAK,WACJD,GACF,IAdAA,GAeJ,GACJ,GAAE,ECvCF,SACE8H,MAAO,CAAC,eAAgB,OAAQ,iBAAkB,eAClD2B,WAAY,CACV+4D,aAAAA,EAAAA,GAEF5hE,KAAI,WACF,MAAO,CACL/B,YAAY,EACZukI,wBAAwB,EAE5B,EACAtyH,SAAU,CACRuyH,sBAAqB,WACnB,OAAO76H,KAAK0L,OAAOoP,QAAQnH,aAAaiD,eAC1C,EACAkkH,UAAS,WACP,OAAO96H,KAAK3J,YAAc2J,KAAKu4B,aAAanI,SAC9C,EACAhe,MAAK,WACH,OAAIpS,KAAK3J,YAAc2J,KAAKu4B,aAAanI,UAChCpwB,KAAKyM,GAAG,6BACNzM,KAAKu4B,aAAamiG,UACpB16H,KAAKyM,GAAG,2BAERzM,KAAKyM,GAAG,mBAEnB,EACA5C,MAAK,WACH,OAAI7J,KAAK3J,WACA2J,KAAKyM,GAAG,6BACNzM,KAAKu4B,aAAanI,UACpBpwB,KAAK+6H,gBAAkB/6H,KAAKyM,GAAG,uBAC7BzM,KAAKu4B,aAAamiG,UACpB16H,KAAKyM,GAAG,yBAERzM,KAAKyM,GAAG,mBAEnB,EACA7C,SAAQ,WACN,OAAO5J,KAAK3J,YAAc2J,KAAKhE,KAAK49B,WACtC,GAEF/5B,QAAS,CACPm7H,oBAAmB,WACjBh7H,KAAK46H,wBAAyB,CAChC,EACAK,oBAAmB,WACjBj7H,KAAK46H,wBAAyB,CAChC,EACA96H,QAAO,WACLE,KAAKu4B,aAAanI,WAAapwB,KAAKu4B,aAAamiG,UAAY16H,KAAKk7H,WAAal7H,KAAKglB,QACtF,EACAA,OAAM,WAAI,IAAAtjB,EAAA,KACR1B,KAAK3J,YAAa,EAClBskI,EAAc36H,KAAKu4B,aAAazgC,GAAIkI,KAAK0L,QAAQjU,MAAK,WACpDiK,EAAKrL,YAAa,CACpB,GACF,EACA6kI,SAAQ,WACFl7H,KAAK66H,sBACP76H,KAAKg7H,sBAELh7H,KAAKm7H,YAET,EACAA,WAAU,WAAI,IAAAxyH,EAAA,KACNlQ,EAAQuH,KAAK0L,OACnB1L,KAAK3J,YAAa,ED1BO,SAAC4oB,EAAQxmB,GAAK,OAAK,IAAIlB,SAAQ,SAACC,EAASyD,GACtExC,EAAMiC,MAAM+wB,IAAIC,kBAAkBq2E,aAAa,CAAEjqG,GAAImnB,IAClDxnB,MAAK,SAACm3F,GACLn2F,EAAM6Z,OAAO,yBAA0B,CAACs8E,IACxCp3F,EAAQ,CACNo3F,QAAAA,GAEJ,GACJ,GAAE,CCmBIwsC,CAAgBp7H,KAAKu4B,aAAazgC,GAAIW,GAAOhB,MAAK,WAChDkR,EAAKtS,YAAa,EAClBoC,EAAM6Z,OAAO,eAAgB,CAAE4P,SAAU,UAAWjD,OAAQtW,EAAK4vB,aAAazgC,IAChF,IAEAkI,KAAKi7H,qBACP,ICrEJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,6FCJzD16H,EAAAA,EAAAA,IA6BS,UA5BPlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,mCAAkC,CAAA4xB,QACrBx6E,EAAAm6H,aAClBlxH,SAAUjJ,EAAAiJ,SACVwI,MAAOzR,EAAAyR,MACPtS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAb,SAAAa,EAAAb,QAAAhG,MAAA6G,EAAAhE,UAAO,I,mBAEZgE,EAAAkJ,OAAQ,IACX,gBAAA87C,EAAAA,EAAAA,IAoBW+V,EAAAA,GAAA,CApBDvuB,GAAG,UAAQ,CAEXxsC,EAAAi6H,yBAAsB,WAD9Bj1E,EAAAA,EAAAA,IAkBgBgW,EAAA,C,MAhBbvpD,MAAOzR,EAAA8L,GAAG,oCACV,eAAc9L,EAAA8L,GAAG,4CACjB,cAAa9L,EAAA8L,GAAG,4CAChBmvD,WAAUj7D,EAAAw6H,WACVt/D,YAAWl7D,EAAAs6H,qB,mBAEZ,iBASS,EATTj3H,EAAAA,EAAAA,IASS85D,EAAA,CARPC,QAAQ,6BACRlhE,IAAI,Q,CAEOb,MAAIqiE,EAAAA,EAAAA,KACb,iBAEE,EAFF59D,EAAAA,EAAAA,GAEE,Q,aADAmkD,EAAAA,EAAAA,IAAQjkD,EAAoB3E,KAAfK,iB,4MClBlBgD,MAAM,gB,SAoCTA,MAAM,oB,GAEDA,MAAM,yB,GAGNA,MAAM,4B,SAGPA,MAAM,2B,SAWNA,MAAM,2B,SAWNA,MAAM,2B,mDC8ChB,QAnHgB,CACdC,MAAO,CACL,cACA,UACA,YACA,eACA,QACA,OACA,WACA,OACA,WACA,mBACA,oBACA,oBACA,iBACA,QAEFlH,KAAI,WACF,MAAO,CACL8xE,MAAO,CAAC,EACRmxD,YAAY,EAEhB,EACAp6H,WAAY,CAAEi0E,W,SAAAA,GACd5sE,SAAU,CACRomD,KAAI,WAAI,IAAAhtD,EAAA,KACN,IAAK1B,KAAKqhB,YACR,MAAO,GAET,IAAMA,EAAcrhB,KAAKkwB,MAAQ,EAC7BlwB,KAAKqhB,YAAYnlB,MAAM,EAAG8D,KAAKkwB,OAC/BlwB,KAAKqhB,YACT,MAAkB,SAAdrhB,KAAKsmD,KACAjlC,EAAYnqB,KAAI,SAAAyM,GAAI,MAAK,CAAE23H,SAAS,EAAMl9D,MAAO,CAACz6D,GAAO,IAErD3D,KAAKu7H,KACd,CAAC,CAAEA,MAAM,EAAMn9D,MAAO/8C,IACtBA,EAAYvM,QAAO,SAACC,EAAK4uB,EAAYplC,GACrC,GAAIolC,EAAW6S,SAAS16C,SAAS,SAC/B,MAAO,GAAPzC,QAAAU,EAAAA,EAAAA,GAAWgb,GAAG,CAAE,CAAEymH,OAAO,EAAMp9D,MAAO,CAACz6B,IAAe,CAAEy6B,MAAO,MAEjE,KACEz6B,EAAW6S,SAAS16C,SAAS,UAC3B6nC,EAAW6S,SAAS16C,SAAS,UAC7B6nC,EAAW6S,SAAS16C,SAAS,UAE/B,MAAO,GAAPzC,QAAAU,EAAAA,EAAAA,GAAWgb,GAAG,CAAE,CAAEumH,SAAS,EAAMl9D,MAAO,CAACz6B,IAAe,CAAEy6B,MAAO,MAEnE,IACMq9D,EAAuB/5H,EAAK2f,YAAY5nB,OAAS8E,EAAI,EACrDm9H,EAAa3mH,EAAIA,EAAItb,OAAS,GAAG2kE,MAEvC,OADAs9D,EAAWt8H,KAAKukC,GACZ+3F,EAAWjiI,QAJG,GAIoBgiI,EAJpB,EAKT,GAAPpiI,QAAAU,EAAAA,EAAAA,GAAWgb,GAAG,CAAE,CAAEqpD,MAAO,MAElBrpD,CAEX,GAAG,CAAC,CAAEqpD,MAAO,MAAOjlE,QAAO,SAAA0O,GAAC,OAAIA,EAAEu2D,MAAM3kE,OAAS,CAAC,GAEtD,EACAkiI,4BAA2B,WACzB,OAAO37H,KAAK0uD,KAAK55C,QAAO,SAACC,EAAK6mH,GAC5B,IAAIt1E,EAAO,EAQX,OAPIs1E,EAAIN,QACNh1E,GAAQ,EAAI,EACHs1E,EAAIJ,MACbl1E,GAAQ,EAAI,EAEZA,GAAQ,GAAKs1E,EAAIx9D,MAAM3kE,OAAS,IAE3Bsb,EAAMuxC,CACf,GAAG,EACL,EACAu1E,mBAAkB,WAChB,OAAI77H,KAAK87H,UAA0B,UAAd97H,KAAKsmD,OAED,SAAdtmD,KAAKsmD,KACPtmD,KAAKqhB,YAAY5nB,OAAS,EAE1BuG,KAAK27H,4BAA8B,EAE9C,GAEF97H,QAAS,CACPk8H,kBAAiB,SAAAvhI,GAAyB,IAArB1C,EAAE0C,EAAF1C,GAAI2b,EAAKjZ,EAALiZ,MAAOvH,EAAM1R,EAAN0R,OAC9Bm7B,IAAIrnC,KAAKkqE,MAAOpyE,EAAI,CAAE2b,MAAAA,EAAOvH,OAAAA,GAC/B,EACA8vH,SAAQ,SAAEJ,GACR,OAAIA,EAAIJ,MACC,CAAE,iBAAkB,OACjBI,EAAIN,SAAYM,EAAIL,UAAzB,EACE,CAAE,iBAAkB,GAAFliI,OAAM,KAAOuiI,EAAIx9D,MAAM3kE,OAAS,IAAI,KAEjE,EACAwiI,UAAS,SAAEnkI,EAAI8jI,GAAK,IAAAjzH,EAAA,KACZ6tD,EAAQtZ,IAAM0+E,GAAK,SAAAj4H,GAAI,OAAIgF,EAAKuzH,eAAev4H,EAAK7L,GAAG,IAC7D,MAAO,CAAEqkI,KAAM,GAAF9iI,OAAK2G,KAAKk8H,eAAepkI,GAAM0+D,EAAK,SACnD,EACA0lE,eAAc,SAAEpkI,GACd,IAAMwuD,EAAOtmD,KAAKkqE,MAAMpyE,GACxB,OAAOwuD,EAAOA,EAAK7yC,MAAQ6yC,EAAKp6C,OAAS,CAC3C,EACAkwH,iBAAgB,SAAEn2H,GAChBjG,KAAKq7H,WAAap1H,CACpB,EACAo2H,YAAW,WACTr8H,KAAK0L,OAAOjR,SAAS,WAAYuF,KAAKqhB,aACtCrhB,KAAK0L,OAAOjR,SAAS,kBAAmBuF,KAAKqhB,YAAY,GAC3D,EACAi7G,QAAO,WACLt8H,KAAK0L,OAAOjR,SAAS,WAAYuF,KAAKqhB,YACxC,ICzGJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,qEFNzD9gB,EAAAA,EAAAA,IAkFM,OAjFJswC,IAAI,mBACJxxC,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,UAAS,SACI5oD,EAAAk7H,oBAAsBl7H,EAAA06H,e,EAEzC56H,EAAAA,EAAAA,GAiCM,MAjCND,EAiCM,gBAhCJD,EAAAA,EAAAA,IA+BMwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IA9BsBxpD,EAAA+tD,MAAI,SAAtBktE,EAAKW,G,kBADfh8H,EAAAA,EAAAA,IA+BM,OA7BHkI,IAAK8zH,EACNl9H,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,cAAa,UAECqyE,EAAIJ,MAAK,WAAcI,EAAIN,QAAO,QAAW36H,EAAA46H,QADhEvjE,OAAK2E,EAAAA,EAAAA,IAAEh8D,EAAAq7H,SAASJ,K,EAGjBn7H,EAAAA,EAAAA,GAuBM,OAtBJpB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,oBAAmB,SACN5oD,EAAA46H,S,gBAEnBh7H,EAAAA,EAAAA,IAkBEwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IAjBwCyxE,EAAIx9D,OAAK,SAAzCz6B,EAAY64F,G,kBADtB72E,EAAAA,EAAAA,IAkBE82E,EAAA,CAhBCh0H,IAAKk7B,EAAW7rC,GACjBuH,MAAM,eACLk1E,QAAS5zE,EAAA4zE,QACT5sD,KAAMhnB,EAAAgnB,KACNgc,WAAYA,EACZ2iB,KAAM3lD,EAAA2lD,KACNw1E,SAAUn7H,EAAAm7H,SACVrtC,OAAQ9tF,EAAA+7H,iBACR,aAAgC,IAApBF,GAAsC,IAAbD,IAAmB57H,EAAAg8H,kBACxD,aAAYH,IAAoBZ,EAAIx9D,MAAM3kE,OAAS,GAAK8iI,IAAa57H,EAAA+tD,KAAKj1D,OAAS,IAAMkH,EAAAi8H,kBACzF54G,KAAMrjB,EAAAk8H,eACNxqF,YAAa1xC,EAAAyvC,cAAgBzvC,EAAAyvC,aAAazM,EAAW7rC,IACrD,mBAA2B,UAAT6I,EAAA2lD,MAAoB3lD,EAAAk7H,oBAAsBl7H,EAAA06H,WAC5DrjE,OAAK2E,EAAAA,EAAAA,IAAEh8D,EAAAs7H,UAAUt4F,EAAW7rC,GAAI8jI,EAAIx9D,QACpC0+D,WAAUn8H,EAAA27H,QACVP,kBAAiBp7H,EAAAo7H,mB,sMAMlBp7H,EAAAk7H,qBAAkB,WAD1Bt7H,EAAAA,EAAAA,IA0CM,MA1CNokD,EA0CM,EAtCJlkD,EAAAA,EAAAA,GAEM,MAFNokD,GAEMD,EAAAA,EAAAA,IADDjkD,EAAA8L,GAAG,0BAA2B,CAA5BkkH,OAAsChwH,EAAA0gB,YAAY5nB,UAAM,IAE/DgH,EAAAA,EAAAA,GAkCM,MAlCNukD,EAkCM,CAhCKrkD,EAAA06H,YAOA,iBAPU,WADnB96H,EAAAA,EAAAA,IAUO,OAVP0kD,EAUO,EANLxkD,EAAAA,EAAAA,GAKS,UAJPpB,MAAM,wBACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAy7H,kBAAiB,EAAD,K,QAErBz7H,EAAA8L,GAAG,gCAAD,MAID9L,EAAA06H,aAAU,WADlB96H,EAAAA,EAAAA,IAUO,OAVP6lD,EAUO,EANL3lD,EAAAA,EAAAA,GAKS,UAJPpB,MAAM,wBACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAy7H,kBAAiB,EAAD,K,QAErBz7H,EAAA8L,GAAG,gCAAD,sBAID9L,EAAA06H,aAAU,WADlB96H,EAAAA,EAAAA,IAUO,OAVP6kD,EAUO,EANL3kD,EAAAA,EAAAA,GAKS,UAJPpB,MAAM,wBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA07H,aAAA17H,EAAA07H,YAAAviI,MAAA6G,EAAAhE,UAAW,K,QAEhBgE,EAAA8L,GAAG,wBAAD,8C,gFG7EVpN,MAAM,+B,GAILA,MAAM,gB,gDA6Cd,SACE4B,WAAY,CAEV87H,O,SAAAA,GAEFz9H,MAAO,CACL09H,WAAY,CACVv9H,KAAMC,OACNF,UAAU,GAEZmP,SAAU,CACRlP,KAAM,CAAClC,MAAOmC,QACdF,UAAU,GAEZiP,YAAa,CACXhP,KAAMuI,SACNxI,UAAU,IAGd8I,SAAU,CACRsE,UAAQ,WACN,OAAO+nE,EAAAA,EAAAA,SACT,EAEAsoD,mBAAoB,CAClBp1F,IAAK,WACH,OAAOtqC,MAAM2G,QAAQlE,KAAK2O,UAAY3O,KAAK2O,SAAW,CAAC3O,KAAK2O,SAC9D,EACAyiB,IAAK,SAAUytC,GACb7+D,KAAKyO,YAAYowD,EACnB,IAIJh/D,QAAS,CACP4zG,gBAAc,SAAG77G,GACf,OAAO+8E,EAAAA,EAAAA,gBAA8B/8E,EACvC,EACAslI,YAAU,WACRl9H,KAAKi9H,mBAAiB,GAAA5jI,QAAAU,EAAAA,EAAAA,GAAQiG,KAAKi9H,oBAAkB,CAAE,IACzD,EACAE,cAAY,SAAGv5H,EAAOi7D,GACpB,IAAM9vD,GAAGhV,EAAAA,EAAAA,GAAQiG,KAAKi9H,oBACtBluH,EAAKnL,GAASi7D,EACd7+D,KAAKi9H,mBAAqBluH,CAC5B,EACAquH,iBAAe,SAAGx5H,GAChB,IAAMmL,GAAGhV,EAAAA,EAAAA,GAAQiG,KAAKi9H,oBACtBluH,EAAKuS,OAAO1d,EAAO,GACnB5D,KAAKi9H,mBAAqBluH,CAC5B,IC3FJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,iEDNzDxO,EAAAA,EAAAA,IA0CM,MA1CNC,EA0CM,EAzCJC,EAAAA,EAAAA,GAEQ,cAAAmkD,EAAAA,EAAAA,IADHn5C,EAAAuxH,YAAU,IAEfv8H,EAAAA,EAAAA,GAqCK,KArCLkkD,EAqCK,gBApCHpkD,EAAAA,EAAAA,IA2BKwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IA1Ba4qB,EAAAkoD,mBAAmBjlI,QAAI,SAAhC4L,G,kBADTrD,EAAAA,EAAAA,IA2BK,MAzBFkI,IAAK7E,GAAK,EAEXnD,EAAAA,EAAAA,GAeQ,gCAdO,IAAVmD,EAAcjD,EAAA8L,GAAG,6BAA+B9L,EAAA41D,IAAI,6BAA8B3yD,EAAO,CAAEA,MAAAA,KAAW,IACzG,IAAAI,EAAAA,EAAAA,IAYSq5H,EAAA,CAXPh+H,MAAM,kBACL,cAAa01E,EAAAkoD,mBAAmBr5H,GAChC,sBAAmB,SAAAi7D,GAAG,OAAIkW,EAAAooD,cAAcv5H,EAAOi7D,EAAG,G,mBAGjD,iBAAyB,gBAD3Bt+D,EAAAA,EAAAA,IAMSwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IALQ4qB,EAAAnoE,WAAS,SAAjBmC,G,kBADTxO,EAAAA,EAAAA,IAMS,UAJNkI,IAAKsG,EAAKnX,KACVoH,MAAO+P,EAAKnX,O,QAEVmX,EAAK/U,MAAI,EAAA6qD,E,iEAKVkwB,EAAAkoD,mBAAmBxjI,OAAS,GAAe,IAAVmK,IAAK,WAD9CrD,EAAAA,EAAAA,IAMS,U,MAJPlB,MAAM,qBACLS,QAAK,kBAAQi1E,EAAAqoD,iBAAiBx5H,EAAK,I,QAEjCjD,EAAA8L,GAAG,6BAAD,EAAAu4C,KAAA,gB,WAGTvkD,EAAAA,EAAAA,GAOK,YANHA,EAAAA,EAAAA,GAKS,UAJPpB,MAAM,qBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEk0E,EAAAmoD,aAAAnoD,EAAAmoD,YAAApjI,MAAAi7E,EAAAp4E,UAAW,K,QAEhBgE,EAAA8L,GAAG,0BAAD,Q,iGE7BPpN,MAAM,c,aAIHA,MAAM,gB,GACHA,MAAM,mB,SAGRA,MAAM,4B,GAINA,MAAM,c,SAGRA,MAAM,oB,wOCoBhB,QA3CoB,CAClBrF,KAAM,cACNsF,MAAO,CACL,OACA,OACA,QAEFlH,KAAI,WACF,MAAO,CACLklI,aAAa,EAEjB,EACAh1H,S,qWAAQpP,CAAA,CACNqkI,SAAQ,WAIN,OAAOv9H,KAAKqwG,KAAK1mG,QAAU3J,KAAKw9H,UAA0B,SAAdx9H,KAAKsmD,IACnD,EACAk3E,SAAQ,WACN,OAAOx9H,KAAK2nB,MAAQ3nB,KAAKy9H,cAC3B,EACAC,eAAc,WACZ,OAAO19H,KAAKqwG,KAAKh+D,aAAe,KAAK5kC,KAAKzN,KAAKqwG,KAAKh+D,YACtD,EACAorF,eAAc,WACZ,OAAOz9H,KAAK2T,aAAa+kF,QAC3B,IACG70C,E,OAAAA,IAAW,CACZ,kBAGJz4C,QAAO,WAAI,IAAA1J,EAAA,KACT,GAAI1B,KAAKu9H,SAAU,CACjB,IAAMI,EAAS,IAAI5rB,MACnB4rB,EAAOrT,OAAS,WACd5oH,EAAK47H,aAAc,CACrB,EACAK,EAAO3vE,IAAMhuD,KAAKqwG,KAAK1mG,KACzB,CACF,GCjCF,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCFNzDpJ,EAAAA,EAAAA,IA4BM,aA3BJE,EAAAA,EAAAA,GA0BI,KAzBFpB,MAAM,oBACLqB,KAAMC,EAAA0vG,KAAK9wG,IACZqB,OAAO,SACP2E,IAAI,Y,CAGI5E,EAAA48H,UAAY58H,EAAA28H,cAAW,WAD/B/8H,EAAAA,EAAAA,IAKM,MALNokD,EAKM,EADJlkD,EAAAA,EAAAA,GAAuB,OAAjButD,IAAKrtD,EAAA0vG,KAAK1mG,O,8BAElBlJ,EAAAA,EAAAA,GAaM,MAbNukD,EAaM,EAZJvkD,EAAAA,EAAAA,GAMO,OANPwkD,EAMO,CAJGtkD,EAAA68H,WAAQ,WADhBj9H,EAAAA,EAAAA,IAG+B,OAH/B6lD,GAG+BxB,EAAAA,EAAAA,IAA3BjkD,EAAA8L,GAAG,gBAAD,6BAAyB,KAC/Bm4C,EAAAA,EAAAA,IAAGjkD,EAAA0vG,KAAKutB,eAAa,MAEvBn9H,EAAAA,EAAAA,GAA4C,KAA5C2kD,GAA4CR,EAAAA,EAAAA,IAAlBjkD,EAAA0vG,KAAKj+F,OAAK,GAE5BzR,EAAA+8H,iBAAc,WADtBn9H,EAAAA,EAAAA,IAG2B,IAH3B8kD,GAG2BT,EAAAA,EAAAA,IAAvBjkD,EAAA0vG,KAAKh+D,aAAW,6B,sEGxBxBhzC,MAAM,OACN44D,KAAK,Q,SAeH54D,MAAM,4BAQZ,SACEC,MAAO,CACL8+D,MAAO,CACL3+D,KAAMlC,MACNqC,QAAS,iBAAM,EAAC,GAElBi+H,OAAQ,CACNp+H,KAAMuI,SACNpI,QAAS,SAAA+D,GAAG,OAAKA,EAAK7L,EAAC,KCzB7B,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCDNzDyI,EAAAA,EAAAA,IAqBM,MArBNC,EAqBM,gBAjBJD,EAAAA,EAAAA,IAUMwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IATW1+C,EAAA2yD,OAAK,SAAbz6D,G,kBADTpD,EAAAA,EAAAA,IAUM,OARHkI,IAAKgD,EAAAoyH,OAAOl6H,GACbtE,MAAM,YACN44D,KAAK,Y,EAEL3P,EAAAA,EAAAA,IAGE3nD,EAAAkI,OAAA,QADClF,KAAMA,K,UAIc,IAAjB8H,EAAA2yD,MAAM3kE,QAAkBkH,EAAAkI,OAAOwxC,QAAK,WAD5C95C,EAAAA,EAAAA,IAKM,MALNokD,EAKM,EADJ2D,EAAAA,EAAAA,IAAqB3nD,EAAAkI,OAAA,6B,qQEb3BwB,EAAAA,GAAAA,IACEyzH,EAAAA,IACAxzH,EAAAA,KAqFF,QAlFoB,CAClBlS,KAAI,WACF,MAAO,CACL2lI,YAAa,EACbC,aAAa,EAEjB,EACA11H,SAAU,CACR21H,UAAS,WACP,OAAOj+H,KAAK+9H,YAAc,CAC5B,GAEFl+H,QAAS,CACPC,QAAO,WACDE,KAAKg+H,aACPh+H,KAAKoJ,MAAMzQ,MAAMy6D,OAErB,EACA8qE,WAAU,SAAE3rD,GACV,IAAM4rD,EAAOn+H,KACPvH,EAAQuH,KAAK0L,OACnB,GAAI6mE,EAAKjsB,KAAO7tD,EAAMiC,MAAM2X,SAASq6C,YAArC,CACE,IAAM0xE,EAAWzxE,EAAAA,EAAAA,eAAqC4lB,EAAKjsB,MACrD+3E,EAAc1xE,EAAAA,EAAAA,eAAqCl0D,EAAMiC,MAAM2X,SAASq6C,aAC9EyxE,EAAKj4H,MAAM,gBAAiB,eAAgB,CAAEk4H,SAAUA,EAASxxE,IAAK0xE,aAAcF,EAASvxE,KAAMwxE,YAAaA,EAAYzxE,IAAK2xE,gBAAiBF,EAAYxxE,MAEhK,KALA,CAMA,IAAMm2C,EAAW,IAAIjtE,SACrBitE,EAAShtE,OAAO,OAAQu8C,GAExB4rD,EAAKj4H,MAAM,aACXi4H,EAAKJ,cAEL7+D,EAAAA,EAAAA,YAAgC,CAAEzmE,MAAAA,EAAOuqG,SAAAA,IACtCvrG,MAAK,SAAC+mI,GACLL,EAAKj4H,MAAM,WAAYs4H,GACvBL,EAAKM,qBACP,IAAG,SAACvzH,GACFqR,QAAQrR,MAAM,uBAAwBA,GACtCizH,EAAKj4H,MAAM,gBAAiB,WAC5Bi4H,EAAKM,qBACP,GAfF,CAgBF,EACAA,oBAAmB,WACjBz+H,KAAK+9H,cACoB,IAArB/9H,KAAK+9H,aACP/9H,KAAKkG,MAAM,eAEf,EACAw4H,UAAS,WAAI,IAAAh9H,EAAA,KACX1B,KAAKg+H,aAAc,EACnBh+H,KAAKuuD,WAAU,WACb7sD,EAAKs8H,aAAc,CACrB,GACF,EACAW,YAAW,SAAEC,GAAO,IACMngI,EADNE,E,25BAAAC,CACCggI,GAAK,IAAxB,IAAAjgI,EAAAE,MAAAJ,EAAAE,EAAAG,KAAAC,MAA0B,KAAfwzE,EAAI9zE,EAAAO,MACbgB,KAAKk+H,WAAW3rD,EAClB,CAAC,OAAArzE,GAAAP,EAAAjH,EAAAwH,EAAA,SAAAP,EAAAQ,GAAA,CACH,EACA0/H,OAAM,SAAArkI,GAAc,IAAVoG,EAAMpG,EAANoG,OACRZ,KAAK2+H,YAAY/9H,EAAOg+H,MAC1B,GAEFt/H,MAAO,CACLw/H,UAAW7mI,OACX2R,SAAUrI,QACVw9H,aAAcx9H,QACdy9H,YAAa,CACXv/H,KAAMC,OACNE,QAAS,QAGbguD,MAAO,CACLkxE,UAAW,SAAUG,GACdj/H,KAAKi+H,WACRj+H,KAAK2+H,YAAYM,EAErB,ICjFJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,iECNzD1+H,EAAAA,EAAAA,IA+BS,UA9BPlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,eAAc,CACX5oD,EAAAo+H,aAAe,qBAAuB,kBAAmB,CAA7Cn1H,SAA+CjJ,EAAAiJ,aACnEwI,MAAOzR,EAAA8L,GAAG,yBACV3M,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAb,SAAAa,EAAAb,QAAAhG,MAAA6G,EAAAhE,UAAO,I,CAGPgE,EAAAs9H,YAAS,WADjBt4E,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,gBACNyK,KAAK,eACL2sD,KAAA,O,eAGO91D,EAAAs9H,W,iBAAS,WADlBt4E,EAAAA,EAAAA,IAIEI,EAAA,C,MAFA1mD,MAAM,WACNyK,KAAK,YAESnJ,EAAAo+H,eAAY,WAA5Bx+H,EAAAA,EAAAA,IAGWwkD,EAAAA,GAAA,CAAAt8C,IAAA,sBAFN,KAAM,KACTm8C,EAAAA,EAAAA,IAAGjkD,EAAAs9H,UAAYt9H,EAAA8L,GAAG,mBAAqB9L,EAAA8L,GAAG,0BAAD,yBAGnC9L,EAAAq9H,cAAW,WADnBz9H,EAAAA,EAAAA,IASC,S,MAPCswC,IAAI,QACJxxC,MAAM,oBACLuK,SAAUjJ,EAAAiJ,SACXnK,KAAK,OACLkjG,SAAS,OACRu8B,OAAQv+H,EAAAq+H,YACR32C,SAAMxnF,EAAA,KAAAA,EAAA,qBAAEF,EAAAk+H,QAAAl+H,EAAAk+H,OAAA/kI,MAAA6G,EAAAhE,UAAM,I,6HC5BjB0C,MAAM,e,qCAiCEA,MAAM,a,mCAyBRwxC,IAAI,OACJxxC,MAAM,Q,gwBClDhBgL,EAAAA,GAAAA,IACE80H,EAAAA,KA6IF,QA1IoB,CAClBnlI,KAAM,cACNiH,WAAY,CACVuwE,WAAAA,EAAAA,QACAs8C,uBAAAA,EAAAA,EACAp8C,aAAa1R,EAAAA,EAAAA,KAAqB,kBAAM,uCAA0C,KAEpF1gE,MAAO,CACLC,IAAK,CACHC,UAAU,EACVC,KAAMC,QAERC,QAAS,CACPH,UAAU,EACVC,KAAMC,QAERuf,OAAQ,CACNzf,UAAU,EACVC,KAAMC,QAER0/H,eAAgB,CACd5/H,UAAU,EACVC,KAAMC,SAGVtH,KAAI,WACF,MAAO,CACLinI,cAAc,EAElB,EACAx/H,QAAS,CACPC,QAAO,WACL,IAAIE,KAAKs/H,kBAAT,CACA,IAAMp/H,GAAOytD,EAAAA,EAAAA,GACX3tD,KAAKif,QAAUjf,KAAKhE,KAAKlE,GACzBkI,KAAKo/H,gBAAkBp/H,KAAKhE,KAAKC,aAEnC+D,KAAKI,QAAQhB,KAAKc,EALgB,CAMpC,EACAq/H,gBAAe,WACbv/H,KAAKq/H,aAAetzH,SAASyzH,eAAeC,aAAaz/H,KAAKoJ,MAAMs2H,MAAM,EAC5E,GAEF5xE,QAAO,WACL/hD,SAASV,iBAAiB,kBAAmBrL,KAAKu/H,gBACpD,EACA90H,UAAS,WACPsB,SAASP,oBAAoB,kBAAmBxL,KAAKu/H,gBACvD,EACAj3H,SAAQpP,EAAAA,EAAA,CACN8C,KAAI,WACF,OAAOgE,KAAKT,KAAOS,KAAK0L,QAAU1L,KAAK0L,OAAOoP,QAAQkiB,cAAch9B,KAAKT,IAC3E,EACAozE,MAAK,WAEH,OAAO3yE,KAAKhE,MAAQgE,KAAKhE,KAAKlE,KAAOkI,KAAK6T,YAAY/b,EACxD,EACA4yC,SAAQ,WACN,OAAO1qC,KAAKhE,MAAQgE,KAAK2/H,eAAezsF,MAAM,KAAK,EACrD,EACA0sF,WAAU,WAER,OAAO5/H,KAAKhE,OAASgE,KAAK2/H,eAAezsF,MAAM,KAAK,IAAMlzC,KAAK0L,OAAOoP,QAAQa,eAChF,EACAkkH,aAAY,WACV,OAAO7/H,KAAKhE,MAAQgE,KAAKhE,KAAKC,WAChC,EACA0jI,eAAc,WACZ,OAAO3/H,KAAKhE,MAAQgE,KAAKhE,KAAKK,cAChC,EACAogC,UAAS,WACP,OAAOz8B,KAAKhE,MAAQgE,KAAK2T,aAAa8oB,UAAUz8B,KAAKhE,KAAKC,YAC5D,EACA6jI,cAAa,WACX,OAAO9/H,KAAKy8B,WAAc,IAAMz8B,KAAKy8B,UAAUh9B,IACjD,EACAmoH,eAAc,WACZ,GAAI5nH,KAAKy8B,UAAW,OAAOmrF,EAAAA,EAAAA,GAAe5nH,KAAKhE,KACjD,EACAg8D,MAAK,WACH,GAAIh4D,KAAKy8B,UAAW,CAClB,IAAAsjG,GAKI3Y,EAAAA,EAAAA,GAAepnH,KAAKy8B,WACxB,OALiBsjG,EAAfrZ,gBACkBqZ,EAAlBpY,mBACeoY,EAAfrY,iBACOjiH,EAAAA,EAAAA,GAAAs6H,EAAAr6H,EAGX,CACF,EACAs6H,WAAU,WACR,MAAO,CACL,CACE,OAAQhgI,KAAK2yE,OAAS3yE,KAAKigI,gBAC3B,eAAgBjgI,KAAKy8B,UACrB,iBAAkBz8B,KAAKq/H,cAEzBr/H,KAAK8/H,cAET,EACAnqH,UAAS,WACP,OAAO3V,KAAK2T,aAAagC,SAC3B,EACAuqH,SAAQ,WACN,OAAOlgI,KAAK0qC,WAAa1qC,KAAK6/H,YAChC,EACAM,uBAAsB,WACpB,IAAMC,EAAOpgI,KAAK2T,aAAaiC,mBAC/B,MAAa,UAATwqH,IAEgB,SAATA,GAGFpgI,KAAKkgI,SAEhB,EACAZ,kBAAiB,WACf,OAAOt/H,KAAK2T,aAAakC,sBAC3B,EACAwqH,iBAAgB,WACd,OAAOrgI,KAAK2T,aAAamC,qBAC3B,EACAwqH,eAAc,WACZ,OAAOtgI,KAAK2T,aAAaqC,mBAC3B,EACAiqH,gBAAe,WACb,OAAOjgI,KAAK2T,aAAasC,oBAC3B,EACAsqH,iBAAgB,WACd,OAAOvgI,KAAK2T,aAAaoC,qBAC3B,IACG8tC,EAAAA,EAAAA,IAAW,CAAC,mBACZD,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,MC3InD,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,yJFNzDtT,EAAAA,EAAAA,IAoEO,OApEPC,EAoEO,CA/DIG,EAAA3E,O,WAMT2pD,EAAAA,EAAAA,IAwDcmsB,EAAA,C,MAtDX,UAASnxE,EAAA3E,KAAKlE,GACd8R,UAAWjJ,EAAA2+H,mB,mBAEZ,iBAkDO,CAjDC3+H,EAAA3E,OAAI,WADZuE,EAAAA,EAAAA,IAkDO,Q,MAhDLlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,MAEE5oD,EAAAq/H,aADPhoE,OAAK2E,EAAAA,EAAAA,IAAEh8D,EAAAq3D,Q,EAGRv3D,EAAAA,EAAAA,GAoCI,KAnCFpB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,wBAAuB,iBACF5oD,EAAA2+H,qBAC1B5+H,KAAMC,EAAApB,IACNO,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAb,SAAAa,EAAAb,QAAAhG,MAAA6G,EAAAhE,UAAO,kB,CAIfgE,EAAA0/H,mBAAgB,WADxB16E,EAAAA,EAAAA,IAIEosB,EAAA,C,MAFA1yE,MAAM,iBACLrD,KAAM2E,EAAA3E,M,mCACPyE,EAAAA,EAAAA,GAmBK,OAnBLukD,EAmBK,CAhBCrkD,EAAAgV,YAAS,WADhBgwC,EAAAA,EAAAA,IAKCI,EAAA,C,MAHAO,KAAK,KACLx8C,KAAK,KACLzK,MAAM,S,iCACFsB,EAAAgV,UAAkB,GAAN,KAAH,IAAclV,EAAAA,EAAAA,GAG3B,QAFApB,MAAM,WACN0B,UAAQJ,EAAA+pC,U,UAEF/pC,EAAAw/H,yBAAsB,WAD5B5/H,EAAAA,EAAAA,IAKA,Q,MAHAlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,aAAY,UACE5oD,EAAA4/H,oBACpBx/H,UAAyB,IAAXJ,EAAAi/H,Y,4BAERj/H,EAAAw/H,yBAAsB,WAD5Bx6E,EAAAA,EAAAA,IAGA+tE,EAAA,C,MADC13H,KAAM2E,EAAA3E,M,oCAID2E,EAAAgyE,OAAShyE,EAAA2/H,iBAAc,WAD/B//H,EAAAA,EAAAA,IAGqC,Q,MADlClB,OAAKkqD,EAAAA,EAAAA,IAAA,QAAY5oD,EAAAs/H,oB,YACTt/H,EAAA8L,GAAG,eAAD,4BAEXhM,EAAAA,EAAAA,GAOG,OAPH2kD,EAOG,UAHgC,OACpC3kD,EAAAA,EAAAA,GAA0B,QAApBM,UAAQJ,EAAA+pC,UAAQ,OAAA2a,IAAI5kD,EAAAA,EAAAA,GAAkC,QAA5BM,UAAyB,IAAXJ,EAAAi/H,Y,2EA1DxC,WADbr/H,EAAAA,EAAAA,IAME,K,MAJCG,KAAMC,EAAApB,IACPF,MAAM,WACNuB,OAAO,SACPG,UAAQJ,EAAAhB,S,oGGTNN,MAAM,gB,SASRA,MAAM,iB,SAIJA,MAAM,qB,4PCXP,IAAM4F,EAAiB,EAiC9B,QA/BqB,CACnBjL,KAAM,eACNsF,MAAO,CACLohB,SAAU,CACRlhB,UAAU,EACVC,KAAMlC,QAGVnF,KAAM,iBAAO,CAAE4vE,UAAU,EAAO,EAChC/mE,WAAY,CACVu/H,YAAAA,EAAAA,GAEFl4H,S,qWAAQpP,CAAA,CACNunI,iBAAgB,WACd,OAAOzgI,KAAK0gB,SAASxkB,MAAM,EAAG+I,EAChC,EACAy7H,cAAa,WACX,OAAO1gI,KAAK0gB,SAASxkB,MAAM+I,EAC7B,EACA07H,aAAY,WACV,OAAO3gI,KAAK0gI,cAAcjnI,OAAS,CACrC,IACGoqD,EAAAA,EAAAA,IAAW,CAAC,kBAEjBhkD,QAAS,CACP+gI,eAAc,WACZ5gI,KAAKgoE,UAAYhoE,KAAKgoE,QACxB,ICvBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,sEFNzDznE,EAAAA,EAAAA,IAmCO,OAnCPC,EAmCO,gBAlCLD,EAAAA,EAAAA,IAMEwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IALkBxpD,EAAA8/H,kBAAgB,SAA3B//F,G,kBADTilB,EAAAA,EAAAA,IAMEk7E,EAAA,CAJCp4H,IAAKi4B,EAAQ98B,MACdvE,MAAM,eACLM,QAAS+gC,EAAQ/gC,QACjBJ,IAAKmhC,EAAQnhC,K,mCAERoB,EAAAggI,eAAY,WADlBpgI,EAAAA,EAAAA,IA2BK,OA3BLokD,EA2BK,CAtBGhkD,EAAAqnE,WAAQ,WADhBznE,EAAAA,EAAAA,IAUO,OAVPskD,EAUO,mBAPH,QAAG,aAAGtkD,EAAAA,EAAAA,IAMRwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IALkBxpD,EAAA+/H,eAAa,SAAxBhgG,G,kBADCilB,EAAAA,EAAAA,IAMRk7E,EAAA,CAJCp4H,IAAKi4B,EAAQ98B,MACdvE,MAAM,eACLM,QAAS+gC,EAAQ/gC,QACjBJ,IAAKmhC,EAAQnhC,K,sDAGPoB,EAAAqnE,UAIiD,iBAJzC,WADVznE,EAAAA,EAAAA,IAME,U,MAJPlB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAigI,gBAAAjgI,EAAAigI,eAAA9mI,MAAA6G,EAAAhE,UAAc,K,QAEnBgE,EAAA8L,GAAG,mBAAoB,CAArBkkH,OAA+BhwH,EAAA+/H,cAAcjnI,UAAM,IAElDkH,EAAAqnE,WAAQ,WADPznE,EAAAA,EAAAA,IAMA,U,MAJPlB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAigI,gBAAAjgI,EAAAigI,eAAA9mI,MAAA6G,EAAAhE,UAAc,K,QAEnBgE,EAAA8L,GAAG,sBAAD,wC,wFGpBb,SACEq0H,QAAS,CACPnI,eAAgB,UAElBr5H,MAAO,CACL89D,OAAQ,CACN39D,KAAM8B,QACN3B,SAAS,GAEXmhI,aAAc,CACZthI,KAAM8B,QACN3B,SAAS,IAGb0I,SAAU,CACR0B,QAAM,WACJ,MAAO,CACL,oBAAqBhK,KAAK+gI,aAC1BzgI,KAAMN,KAAKo9D,OAEf,ICxBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,qFDNzD78D,EAAAA,EAAAA,IAQM,OALJlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,aACEwrB,EAAA/qE,UACPlK,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAOvkD,EAAAuF,MAAM,kBAAD,e,EAElBoiD,EAAAA,EAAAA,IAAQ3nD,EAAAkI,OAAA,uBANA4C,EAAA2xD,QAAM,GACM3xD,EAAA2xD,SAAW3xD,EAAAs1H,e,+GEWzB1hI,MAAM,+C,GAEDA,MAAM,S,SAIPA,MAAM,yC,SAKRA,MAAM,oB,eA4BRA,MAAM,aACN44D,KAAK,Q,GASHx3D,EAAAA,EAAAA,GAAoC,OAA/BpB,MAAM,wBAAsB,S,GAIhCA,MAAM,gB,SAGPA,MAAM,6C,GASDA,MAAM,uC,SAMXA,MAAM,uC,gDCxEZA,MAAM,iC,cA0CDA,MAAM,sB,GACHA,MAAM,wB,GACLA,MAAM,mB,mHA2EDA,MAAM,wB,6BAmBdA,MAAM,W,qCA2BNA,MAAM,W,GAEAA,MAAM,S,qCAsBdA,MAAM,e,SAQJ24D,MAAA,0B,iCA0BF34D,MAAM,a,yDC3OTA,MAAM,U,IACJA,MAAM,iB,IAMNA,MAAM,Y,IAMNA,MAAM,gB,4BA6BFA,MAAM,2B,IACHA,MAAM,wB,8CCRtB,SA9Be,CACbC,MAAO,CACL,YAEF2B,WAAY,CACV87H,OAAAA,GAAAA,EACA5nD,cAAAA,EAAAA,EACAjD,QAAAA,EAAAA,EACAT,YAAAA,GAAAA,GAEFnpE,SAAU,CACRmd,OAAM,WAEJ,OADAlJ,QAAQ2I,IAAIllB,KAAK0L,OAAOhR,MAAMs8C,QAAQA,QAAQh3C,KAAKghI,WAAa,CAAC,GAC1DhhI,KAAK0L,OAAOhR,MAAMs8C,QAAQA,QAAQh3C,KAAKghI,WAAa,CAAC,CAC9D,EACAtmI,MAAO,CACLmtC,IAAK,WAAc,OAAO7nC,KAAKylB,OAAO/qB,KAAM,EAC5C02B,IAAK,SAAUytC,GAAO7+D,KAAKq3C,eAAewnB,EAAK,IAGnDh/D,QAAS,CACPohI,wBAAuB,SAAEjlI,GACvB,OAAO2xD,EAAAA,GAAAA,GAAoB3xD,EAAKlE,GAAIkE,EAAKC,YAAa+D,KAAK0L,OAAOhR,MAAM2X,SAAS8G,oBACnF,EACAk+B,eAAc,SAAE38C,GACd,OAAOsF,KAAK0L,OAAOjR,SAAS,iBAAkB,CAAE3C,GAAIkI,KAAKylB,OAAO3tB,GAAI4C,MAAAA,GACtE,I,gBCzBJ,MAEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wKFNzD6F,EAAAA,EAAAA,IAoEM,MApENC,EAoEM,EAnEJC,EAAAA,EAAAA,GAKM,MALNkkD,GAKM,EAJJlkD,EAAAA,EAAAA,GAA6C,aAAAmkD,EAAAA,EAAAA,IAApCjkD,EAAA8L,GAAG,yBAAD,IACXzI,EAAAA,EAAAA,IAEcuhD,EAAA,CAFApY,GAAIxsC,EAAAsgI,wBAAwBtgI,EAAA8kB,OAAO8nC,O,mBAAO,iBACrD,UADqD,MACrD3I,EAAAA,EAAAA,IAAGjkD,EAAA8kB,OAAO8nC,KAAKtxD,aAAW,G,sBAG/BwE,EAAAA,EAAAA,GAKM,MALNokD,GAKM,EAJJpkD,EAAAA,EAAAA,GAAwC,aAAAmkD,EAAAA,EAAAA,IAA/BjkD,EAAA8L,GAAG,oBAAD,IACXzI,EAAAA,EAAAA,IAEcuhD,EAAA,CAFApY,GAAIxsC,EAAAsgI,wBAAwBtgI,EAAA8kB,OAAOmrF,Q,mBAAQ,iBACtD,UADsD,MACtDhsD,EAAAA,EAAAA,IAAGjkD,EAAA8kB,OAAOmrF,MAAM30G,aAAW,G,sBAGhCwE,EAAAA,EAAAA,GAeM,MAfNukD,GAeM,EAdJvkD,EAAAA,EAAAA,GAAqC,aAAAmkD,EAAAA,EAAAA,IAA5BjkD,EAAA8L,GAAG,iBAAD,IACXzI,EAAAA,EAAAA,IAYSq5H,EAAA,CAXNvlI,GAAI6I,EAAA8kB,OAAO9kB,EAAAjG,M,WACHiG,EAAAjG,M,qDAAAiG,EAAAjG,MAAKwqD,CAAA,GACd7lD,MAAM,gB,mBAGJ,iBAA+C,cADjDkB,EAAAA,EAAAA,IAMSwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IALS,CAAC,OAAQ,SAAU,aAAW,SAAvCzvD,G,OADT+F,EAAAA,EAAAA,GAMS,UAJNgI,IAAK/N,EACLsE,MAAOtE,I,QAELiG,EAAA8L,GAAG,gBAAkB/R,IAAK,EAAAuqD,G,4CAInCjhD,EAAAA,EAAAA,IAIEguE,EAAA,CAHA3yE,MAAM,iBACL+B,KAAMT,EAAA8kB,OAAO9lB,QACbpH,MAAO,I,iBAECoI,EAAA8kB,OAAOvG,SAASzlB,SAAM,WAAjC8G,EAAAA,EAAAA,IAkBM,MAAA6lD,GAAA,EAjBJ3lD,EAAAA,EAAAA,GAAmD,cAAAmkD,EAAAA,EAAAA,IAAzCjkD,EAAA8L,GAAG,6BAAD,kBACZlM,EAAAA,EAAAA,IAecwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IAdKxpD,EAAA8kB,OAAOvG,UAAQ,SAAzBsC,G,kBADTmkC,EAAAA,EAAAA,IAecJ,EAAA,CAbX98C,IAAK+Y,EAAO1pB,GACZq1C,GAAE,CAAAnzC,KAAA,eAAAkoC,OAAA,CAAApqC,GAAwC0pB,EAAO1pB,KAClDuH,MAAM,mB,mBAEN,iBAOM,EAPNoB,EAAAA,EAAAA,GAOM,MAPN2kD,GAOM,EANJ3kD,EAAAA,EAAAA,GAAgE,OAAhE4kD,IAAgET,EAAAA,EAAAA,IAA1BpjC,EAAOxlB,KAAKhC,MAAI,IACtDgK,EAAAA,EAAAA,IAIEkvE,EAAA,CAHCC,KAAM3xD,EAAO+rB,WACb,cAAa,IACdluC,MAAM,S,oBAGV2E,EAAAA,EAAAA,IAAmCk9H,EAAA,CAAlB1/G,OAAQA,GAAM,mB,kDAGxB7gB,EAAA8kB,OAAO07G,MAAM1nI,SAAM,WAA9B8G,EAAAA,EAAAA,IAcM,MAAA8lD,GAAA,EAbJ5lD,EAAAA,EAAAA,GAAuC,cAAAmkD,EAAAA,EAAAA,IAA7BjkD,EAAA8L,GAAG,iBAAD,kBACZlM,EAAAA,EAAAA,IAWMwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IAVWxpD,EAAA8kB,OAAO07G,OAAK,SAApB50B,G,kBADThsG,EAAAA,EAAAA,IAWM,OATHkI,IAAK8jG,EAAKz0G,GACXuH,MAAM,Q,EAENoB,EAAAA,EAAAA,GAA+B,aAAAmkD,EAAAA,EAAAA,IAAtB2nD,EAAK5sG,SAAO,IACrBqE,EAAAA,EAAAA,IAIEkvE,EAAA,CAHCC,KAAMo5B,EAAKh/D,WACX,cAAa,IACdluC,MAAM,S,0WGrChBgL,GAAAA,GAAAA,IACE0jE,GAAAA,IACA7kC,GAAAA,IACAk4F,GAAAA,IACAC,GAAAA,IACAxqE,GAAAA,IACAk9D,GAAAA,IACAuN,GAAAA,GACAC,GAAAA,IACAC,GAAAA,IACAC,GAAAA,KAGF,IAAM7+F,GAAe,CACnBxqC,KAAI,WACF,MAAO,CACLspI,gBAAgB,EAChB1rD,aAAch2E,KAAK0L,OAAOhR,MAAK,UAAW4V,eAAeC,UACzDoxH,SAAS,EACT78C,6BAA6B,EAC7BC,0BAA0B,EAE9B,EACAzlF,MAAO,CAAC,gBACR2B,WAAY,CACVk0E,cAAAA,EAAAA,EACA3D,WAAAA,EAAAA,QACAxqB,SAAAA,EAAAA,EACAkrB,QAAAA,EAAAA,EACApV,OAAAA,EAAAA,QACA8kE,OAAAA,GACAnwD,YAAAA,GAAAA,EACAC,YAAAA,GAAAA,QACA1U,SAAAA,GAAAA,EACAhD,aAAAA,GAAAA,GAEFn6D,QAAS,CACPgiI,qBAAoB,WAClB7hI,KAAK0hI,gBAAkB1hI,KAAK0hI,cAC9B,EACAT,wBAAuB,SAAEjlI,GACvB,OAAO2xD,EAAAA,GAAAA,GAAoB3xD,EAAKlE,GAAIkE,EAAKC,YAAa+D,KAAK0L,OAAOhR,MAAM2X,SAAS8G,oBACnF,EACA2oH,QAAO,SAAEt/G,GACP,OAAOxiB,KAAK0L,OAAOhR,MAAMqB,MAAMq9B,YAAY5W,EAAa8Z,aAAaxkC,GACvE,EACAiqI,WAAU,WACR/hI,KAAK2hI,SAAW3hI,KAAK2hI,OACvB,EACAx8C,yBAAwB,WACtBnlF,KAAK8kF,6BAA8B,CACrC,EACAM,yBAAwB,WACtBplF,KAAK8kF,6BAA8B,CACrC,EACAO,sBAAqB,WACnBrlF,KAAK+kF,0BAA2B,CAClC,EACAO,sBAAqB,WACnBtlF,KAAK+kF,0BAA2B,CAClC,EACAQ,YAAW,WACLvlF,KAAKwlF,qBACPxlF,KAAKmlF,2BAELnlF,KAAKylF,WAET,EACAA,UAAS,WACPzlF,KAAK0L,OAAOhR,MAAM+wB,IAAIC,kBAAkB65D,YAAY,CAAEztF,GAAIkI,KAAKhE,KAAKlE,KACpEkI,KAAK0L,OAAOjR,SAAS,sBAAuBuF,KAAKhE,MACjDgE,KAAK0L,OAAOjR,SAAS,+BAAgC,CAAE3C,GAAIkI,KAAKwiB,aAAa1qB,KAC7EkI,KAAK0L,OAAOjR,SAAS,qBAAsB,CACzC3C,GAAIkI,KAAKwiB,aAAa1qB,GACtB4wB,QAAS,SAAAlG,GACPA,EAAa/iB,KAAO,QACtB,IAEFO,KAAKolF,0BACP,EACAO,SAAQ,WACF3lF,KAAK4lF,kBACP5lF,KAAKqlF,wBAELrlF,KAAK6lF,QAET,EACAA,OAAM,WAAI,IAAAnkF,EAAA,KACR1B,KAAK0L,OAAOhR,MAAM+wB,IAAIC,kBAAkBi6D,SAAS,CAAE7tF,GAAIkI,KAAKhE,KAAKlE,KAC9DL,MAAK,WACJiK,EAAKgK,OAAOjR,SAAS,2BAA4B,CAAE3C,GAAI4J,EAAK8gB,aAAa1qB,KACzE4J,EAAKgK,OAAOjR,SAAS,sBAAuBiH,EAAK1F,KACnD,IACFgE,KAAKslF,uBACP,GAEFh9E,S,uWAAQpP,CAAA,CACN8oI,UAAS,WACP,OAAOpa,EAAAA,GAAAA,GAAe5nH,KAAKwiB,aAAa8Z,aAC1C,EACA2lG,UAAS,WACP,IAAMxlG,EAAYz8B,KAAK0L,OAAOoP,QAAQnH,aAAa8oB,UAC7CzgC,EAAOgE,KAAKwiB,aAAa8Z,aAC/B,OAAO8qF,EAAAA,GAAAA,GAAe3qF,EAAUzgC,EAAKC,aACvC,EACAD,KAAI,WACF,OAAOgE,KAAK0L,OAAOoP,QAAQgiB,SAAS98B,KAAKwiB,aAAa8Z,aAAaxkC,GACrE,EACA41D,gBAAe,WACb,OAAO1tD,KAAKihI,wBAAwBjhI,KAAKhE,KAC3C,EACAkmI,WAAU,WACR,OAAOliI,KAAK0L,OAAOoP,QAAQgiB,SAAS98B,KAAKwiB,aAAa5hB,OAAO9I,GAC/D,EACAqqI,sBAAqB,WACnB,OAAOniI,KAAKihI,wBAAwBjhI,KAAKkiI,WAC3C,EACAE,SAAQ,WACN,OAAOpiI,KAAK0L,OAAOoP,QAAQyd,aAAav4B,KAAKhE,KAAKlE,IAAIghC,MACxD,EACAtT,qBAAoB,WAClB,OAAOA,EAAAA,GAAAA,IAAqBxlB,KAAKwiB,aAAa/iB,KAChD,EACAkU,aAAY,WACV,OAAO3T,KAAK0L,OAAOoP,QAAQnH,YAC7B,EACA6xE,qBAAoB,WAClB,OAAOxlF,KAAK2T,aAAasD,oBAC3B,EACA2uE,kBAAiB,WACf,OAAO5lF,KAAK2T,aAAauD,iBAC3B,IACG0sC,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,MAKnD,YC7JA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,iULL3B,YAAtBlT,EAAA6hB,aAAa/iB,OAAI,WADzBc,EAAAA,EAAAA,IAQU,UAAAC,EAAA,EALRwD,EAAAA,EAAAA,IAIEs6D,EAAA,CAHAj/D,MAAM,eACLk1E,SAAS,EACT/V,UAAW79D,EAAA6hB,aAAahB,Q,sCAG7BjhB,EAAAA,EAAAA,IA2QU,UAAAokD,EAAA,CAzQAhkD,EAAAyhI,WAAazhI,EAAAghI,UAAO,WAD5BphI,EAAAA,EAAAA,IAmBM,MAnBNskD,EAmBM,EAfJpkD,EAAAA,EAAAA,GAKQ,eAJNuD,EAAAA,EAAAA,IAGEmnH,EAAA,CAFCnvH,KAAM2E,EAAA6hB,aAAa8Z,aACnBq3F,IAAI,G,oBAGTlzH,EAAAA,EAAAA,GAQS,UAPPpB,MAAM,yBACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAohI,YAAAphI,EAAAohI,WAAAjoI,MAAA6G,EAAAhE,UAAU,kB,EAE1BqH,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACNyK,KAAK,qB,WAIXvJ,EAAAA,EAAAA,IA+NM,O,MA7NJlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,2BAA0B,CACvB5oD,EAAAqhI,UAAW,CAAFxlG,YAAiB77B,EAAAshI,WAAS,UAAgBthI,EAAA6hB,aAAa/iB,QACxEu4D,OAAK2E,EAAAA,EAAAA,IAAA,CAAIh8D,EAAAshI,a,EAEVxhI,EAAAA,EAAAA,GAiBI,KAhBFpB,MAAM,mBACLqB,KAAMC,EAAAP,QAAQ5I,QAAQmJ,EAAA+sD,iBAAiBhtD,KACvCZ,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAN,cAAc,e,EAEdkD,EAAAA,EAAAA,IAWc8tE,EAAA,CAVX,UAASnxE,EAAA6hB,aAAa8Z,aAAaxkC,GACnC,mBAAiB,G,mBAElB,iBAME,EANFkM,EAAAA,EAAAA,IAME+tE,EAAA,CALA1yE,MAAM,cACLwtG,IAAKlsG,EAAA0hI,aACL9tD,SAAS,EACT,gBAAe5zE,EAAAq1E,aACfh6E,KAAM2E,EAAA6hB,aAAa8Z,c,sEAI1B77B,EAAAA,EAAAA,GAsMM,MAtMNwkD,EAsMM,EArMJxkD,EAAAA,EAAAA,GA+IO,OA/IP2lD,EA+IO,EA9IL3lD,EAAAA,EAAAA,GA2FM,MA3FN2kD,EA2FM,CAzFSzkD,EAAA6hB,aAAa8Z,aAAas1C,YAAS,WAAhDrxE,EAAAA,EAAAA,IAOM,MAAA8kD,EAAA,EANJrhD,EAAAA,EAAAA,IAKEguE,EAAA,CAJA3yE,MAAM,WACL+S,MAAK,IAAMzR,EAAA6hB,aAAa8Z,aAAajgC,eACrC+E,KAAMT,EAAA6hB,aAAa8Z,aAAas1C,UAChCr5E,MAAOoI,EAAA6hB,aAAa8Z,aAAa/jC,O,iDAItCgI,EAAAA,EAAAA,IAMO,Q,MAJLlB,MAAM,WACL+S,MAAK,IAAMzR,EAAA6hB,aAAa8Z,aAAajgC,iB,QAEnCsE,EAAA6hB,aAAa8Z,aAAatiC,MAAI,EAAAqsD,KAAA,QAC5B,KACPzB,EAAAA,EAAAA,IAAG,KAAM,KACyB,SAAtBjkD,EAAA6hB,aAAa/iB,OAAI,WAA7Bc,EAAAA,EAAAA,IAOO,OAAA+kD,EAAA,EANLthD,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,YACNyK,KAAK,U,QACL,KACF86C,EAAAA,EAAAA,IAAG,KAAM,MACTnkD,EAAAA,EAAAA,GAAsD,cAAAmkD,EAAAA,EAAAA,IAA5CjkD,EAAA8L,GAAG,gCAAD,sBAEoB,WAAtB9L,EAAA6hB,aAAa/iB,OAAI,WAA7Bc,EAAAA,EAAAA,IAQO,OAAAilD,EAAA,EAPLxhD,EAAAA,EAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,YACNyK,KAAK,UACJsI,MAAOzR,EAAA8L,GAAG,oB,2BACX,KACFm4C,EAAAA,EAAAA,IAAG,KAAM,MACTnkD,EAAAA,EAAAA,GAAqD,cAAAmkD,EAAAA,EAAAA,IAA3CjkD,EAAA8L,GAAG,+BAAD,sBAEoB,WAAtB9L,EAAA6hB,aAAa/iB,OAAI,WAA7Bc,EAAAA,EAAAA,IAOO,OAAAklD,EAAA,EANLzhD,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,YACNyK,KAAK,e,QACL,KACF86C,EAAAA,EAAAA,IAAG,KAAM,MACTnkD,EAAAA,EAAAA,GAAqD,cAAAmkD,EAAAA,EAAAA,IAA3CjkD,EAAA8L,GAAG,+BAAD,sBAEoB,mBAAtB9L,EAAA6hB,aAAa/iB,OAAI,WAA7Bc,EAAAA,EAAAA,IAOO,OAAAmlD,EAAA,EANL1hD,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,YACNyK,KAAK,U,QACL,KACF86C,EAAAA,EAAAA,IAAG,KAAM,MACTnkD,EAAAA,EAAAA,GAAuD,cAAAmkD,EAAAA,EAAAA,IAA7CjkD,EAAA8L,GAAG,iCAAD,sBAEoB,SAAtB9L,EAAA6hB,aAAa/iB,OAAI,WAA7Bc,EAAAA,EAAAA,IAOO,OAAAqlD,EAAA,EANL5hD,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,YACNyK,KAAK,sB,QACL,KACF86C,EAAAA,EAAAA,IAAG,KAAM,MACTnkD,EAAAA,EAAAA,GAAoD,cAAAmkD,EAAAA,EAAAA,IAA1CjkD,EAAA8L,GAAG,8BAAD,sBAEoB,2BAAtB9L,EAAA6hB,aAAa/iB,OAAI,WAA7Bc,EAAAA,EAAAA,IAmBO,OAAAslD,EAAA,EAlBLplD,EAAAA,EAAAA,GAiBQ,eAhBNuD,EAAAA,EAAAA,IAeS85D,EAAA,CAdPjnC,MAAM,SACNknC,QAAQ,8B,mBAER,iBAMC,CALOp9D,EAAA6hB,aAAamuF,YAAS,WAD9BpwG,EAAAA,EAAAA,IAMC,O,MAJClB,MAAM,kDACL2uD,IAAKrtD,EAAA6hB,aAAamuF,UAClBz6C,IAAKv1D,EAAA6hB,aAAajqB,MAClB6Z,MAAOzR,EAAA6hB,aAAajqB,O,wBAEvBgI,EAAAA,EAAAA,IAGgC,OAHhCo/E,GAGgC/6B,EAAAA,EAAAA,IAA5BjkD,EAAA6hB,aAAajqB,OAAK,I,+BAIM,mBAAtBoI,EAAA6hB,aAAa/iB,OAAI,WAA7Bc,EAAAA,EAAAA,IAEO,OAAAq/E,EAAA,EADLn/E,EAAAA,EAAAA,GAAyD,cAAAmkD,EAAAA,EAAAA,IAA/CjkD,EAAA8L,GAAG,mCAAD,sBAEoB,SAAtB9L,EAAA6hB,aAAa/iB,OAAI,WAA7Bc,EAAAA,EAAAA,IAOO,OAAAs/E,EAAA,EANL77E,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,YACNyK,KAAK,Y,QACL,KACF86C,EAAAA,EAAAA,IAAG,KAAM,MACTnkD,EAAAA,EAAAA,GAAmD,cAAAmkD,EAAAA,EAAAA,IAAzCjkD,EAAA8L,GAAG,6BAAD,wBAIR9L,EAAA6kB,uBAAoB,WAD5BjlB,EAAAA,EAAAA,IA0BM,MA1BNu/E,EA0BM,CArBIn/E,EAAA6hB,aAAahB,SAAM,WAD3BmkC,EAAAA,EAAAA,IAScJ,EAAA,C,MAPXpY,GAAE,CAAAnzC,KAAA,eAAAkoC,OAAA,CAAApqC,GAAwC6I,EAAA6hB,aAAahB,OAAO1pB,KAC/DuH,MAAM,2B,mBAEN,iBAGE,EAHF2E,EAAAA,EAAAA,IAGEkvE,EAAA,CAFCC,KAAMxyE,EAAA6hB,aAAa+qB,WACnB,cAAa,K,sDAGlB9sC,EAAAA,EAAAA,GAWS,UAVPpB,MAAM,8BACL+S,MAAOzR,EAAA8L,GAAG,0BACV,gBAAe9L,EAAA+gI,eACf5hI,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAkhI,sBAAAlhI,EAAAkhI,qBAAA/nI,MAAA6G,EAAAhE,UAAoB,kB,EAEpCqH,EAAAA,EAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,eACN,iBACCyK,KAAMnJ,EAAA+gI,eAAiB,eAAiB,c,uCAI/CnhI,EAAAA,EAAAA,IAUM,MAVNy/E,EAUM,EANJv/E,EAAAA,EAAAA,GAKO,OALPw/E,EAKO,EAJLj8E,EAAAA,EAAAA,IAGEkvE,EAAA,CAFCC,KAAMxyE,EAAA6hB,aAAa+qB,WACnB,cAAa,K,sBAKZ5sC,EAAAyhI,WAAQ,WADhB7hI,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,kBACL+S,MAAOzR,EAAA8L,GAAG,wBACV,iBAAgB9L,EAAAghI,QAChB7hI,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAohI,YAAAphI,EAAAohI,WAAAjoI,MAAA6G,EAAAhE,UAAU,kB,EAE1BqH,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACNyK,KAAK,e,wBAKmB,WAAtBnJ,EAAA6hB,aAAa/iB,MAA2C,mBAAtBkB,EAAA6hB,aAAa/iB,OAAI,WAD3Dc,EAAAA,EAAAA,IAiCM,MAjCN4/E,EAiCM,EA7BJn8E,EAAAA,EAAAA,IAGEmnH,EAAA,CAFA9rH,MAAM,cACLrD,KAAM2E,EAAA6hB,aAAa8Z,c,iBAGQ,mBAAtB37B,EAAA6hB,aAAa/iB,OAAI,WADzBc,EAAAA,EAAAA,IAwBM,MAxBN8/E,EAwBM,EApBJ5/E,EAAAA,EAAAA,GASS,UARPpB,MAAM,kBACL+S,MAAOzR,EAAA8L,GAAG,kCACV3M,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA4kF,aAAW,I,EAEnBvhF,EAAAA,EAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,QACLzK,MAAM,uD,MAGVoB,EAAAA,EAAAA,GASS,UARPpB,MAAM,kBACL+S,MAAOzR,EAAA8L,GAAG,kCACV3M,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAglF,UAAQ,I,EAEhB3hF,EAAAA,EAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,QACLzK,MAAM,uD,2BAMqB,SAAtBsB,EAAA6hB,aAAa/iB,OAAI,WAD9Bc,EAAAA,EAAAA,IAOM,MAPN8iF,EAOM,EAHJr/E,EAAAA,EAAAA,IAEEmnH,EAAA,CADCnvH,KAAM2E,EAAA6hB,aAAa5hB,Q,oBAIW,mBAAtBD,EAAA6hB,aAAa/iB,OAAI,WAD9BkmD,EAAAA,EAAAA,IAGE28E,EAAA,C,MADC,YAAW3hI,EAAA6hB,aAAaiD,OAAO3tB,I,oCAGhC6tD,EAAAA,EAAAA,IAIEmxB,EAAA,C,MAHCz3E,OAAKkqD,EAAAA,EAAAA,IAAA,CAAAkzD,OAAY97G,EAAA+gI,iBACjBntD,SAAU5zE,EAAA+gI,eACVlgH,OAAQ7gB,EAAA6hB,aAAasC,Q,0DAK9B6gC,EAAAA,EAAAA,IAqBW+V,EAAAA,GAAA,CArBDvuB,GAAG,UAAQ,CAEXxsC,EAAAmkF,8BAA2B,WADnCn/B,EAAAA,EAAAA,IASgBgW,EAAA,C,MAPbvpD,MAAOzR,EAAA8L,GAAG,mCACV,eAAc9L,EAAA8L,GAAG,2CACjB,cAAa9L,EAAA8L,GAAG,2CAChBmvD,WAAUj7D,EAAA8kF,UACV5pB,YAAWl7D,EAAAykF,0B,mBAEZ,iBAAoE,mBAAjEzkF,EAAA8L,GAAG,4BAA6B,CAA9BzQ,KAAsC2E,EAAA3E,KAAKK,kBAAc,G,+FAGxDsE,EAAAokF,2BAAwB,WADhCp/B,EAAAA,EAAAA,IASgBgW,EAAA,C,MAPbvpD,MAAOzR,EAAA8L,GAAG,gCACV,eAAc9L,EAAA8L,GAAG,wCACjB,cAAa9L,EAAA8L,GAAG,wCAChBmvD,WAAUj7D,EAAAklF,OACVhqB,YAAWl7D,EAAA2kF,uB,mBAEZ,iBAAiE,mBAA9D3kF,EAAA8L,GAAG,yBAA0B,CAA3BzQ,KAAmC2E,EAAA3E,KAAKK,kBAAc,G,iHM1QxDgD,MAAM,iB,IAmEHA,MAAM,yC,qlBAYpBgL,GAAAA,GAAAA,IACEo8D,GAAAA,KAGF,UACExlE,WAAY,CAAE2lE,QAAAA,GAAAA,SACdt+D,SAAU,CACRi6H,QAAM,WACJ,OAAOviI,KAAK0L,OAAOoP,QAAQnH,aAAayrB,sBAC1C,GAEFv/B,QAAS,CACP2iI,yBAAuB,SAAG/iI,GACxBO,KAAK0L,OAAOjR,SAAS,YAAa,CAChCT,KAAM,yBACNgF,MAAK9F,GAAAA,GAAA,GACA8G,KAAKuiI,SAAO,IAAA/1H,EAAAA,EAAAA,GAAA,GACd/M,GAAQO,KAAKuiI,QAAQ9iI,MAG5B,ICpGJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uFDJzDkmD,EAAAA,EAAAA,IA8EU0hB,EAAA,CA7ERC,QAAQ,QACRjoE,MAAM,sBACNw3E,UAAU,SACT,WAAU,CAAA5kC,EAAA,c,CAEAtyC,SAAO0+D,EAAAA,EAAAA,KAChB,iBAgEM,EAhEN59D,EAAAA,EAAAA,GAgEM,MAhEND,GAgEM,EA/DJC,EAAAA,EAAAA,GAQS,UAPPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAE6vB,EAAAytD,yBAAyB,QAAD,I,EAEhC/hI,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACcwrB,EAAAwtD,QAAQ9hG,U,0BACxC9/B,EAAA8L,GAAG,2CAAD,MAEThM,EAAAA,EAAAA,GAQS,UAPPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAE6vB,EAAAytD,yBAAyB,UAAD,I,EAEhC/hI,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACcwrB,EAAAwtD,QAAQ3hG,Y,0BACxCjgC,EAAA8L,GAAG,6CAAD,MAEThM,EAAAA,EAAAA,GAQS,UAPPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAE6vB,EAAAytD,yBAAyB,UAAD,I,EAEhC/hI,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACcwrB,EAAAwtD,QAAQhiG,Y,0BACxC5/B,EAAA8L,GAAG,6CAAD,MAEThM,EAAAA,EAAAA,GAQS,UAPPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAE6vB,EAAAytD,yBAAyB,WAAD,I,EAEhC/hI,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACcwrB,EAAAwtD,QAAQ7hH,a,0BACxC/f,EAAA8L,GAAG,8CAAD,MAEThM,EAAAA,EAAAA,GAQS,UAPPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAE6vB,EAAAytD,yBAAyB,iBAAD,I,EAEhC/hI,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACcwrB,EAAAwtD,QAAQ94G,mB,0BACxC9oB,EAAA8L,GAAG,qDAAD,MAEThM,EAAAA,EAAAA,GAQS,UAPPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAE6vB,EAAAytD,yBAAyB,QAAD,I,EAEhC/hI,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACcwrB,EAAAwtD,QAAQzhG,U,0BACxCngC,EAAA8L,GAAG,2CAAD,MAEThM,EAAAA,EAAAA,GAQS,UAPPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAE6vB,EAAAytD,yBAAyB,QAAD,I,EAEhC/hI,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACcwrB,EAAAwtD,QAAQ9pF,U,0BACxC93C,EAAA8L,GAAG,2CAAD,O,IAIF66D,SAAOjJ,EAAAA,EAAAA,KAChB,iBAES,EAFT59D,EAAAA,EAAAA,GAES,SAFTkkD,GAES,EADP3gD,EAAAA,EAAAA,IAAwB+hD,EAAA,CAAhBj8C,KAAK,a,yQE9DrBO,GAAAA,GAAAA,IACEC,GAAAA,IACAsvD,GAAAA,IACAC,GAAAA,KAkKF,SA7JsB,CACpB54D,WAAY,CACV2hC,aAAAA,GACA6/F,oBAAAA,IAEFnjI,MAAO,CAGLojI,YAAanhI,QAEb4vE,WAAY5zE,MAEZ0vF,gBAAiB1rF,SAEnBnJ,KAAI,WACF,MAAO,CACL61E,eAAe,EACfhjE,aAAa,EAIb03H,mBAvBgC,GAyBpC,EACA7B,QAAO,WAAI,IAAAp/H,EAAA,KACT,MAAO,CACLi3H,gBAAgBrwH,EAAAA,EAAAA,KAAS,kBAAM5G,EAAKi3H,cAAc,IAEtD,EACArwH,S,uWAAQpP,CAAA,CACN0pI,UAAS,WACP,OAAO5iI,KAAK0iI,YAAc,GAAK,qBACjC,EACAniH,cAAa,WACX,OAAO2kE,EAAAA,GAAAA,IAAuBllF,KAAK0L,OACrC,EACAR,MAAK,WACH,OAAOlL,KAAK0L,OAAOhR,MAAMwkB,SAASqB,cAAcrV,KAClD,EACAmsD,oBAAmB,WACjB,OAAOC,EAAAA,GAAAA,IAA6Bt3D,KAAK0L,OAC3C,EACAm3H,sBAAqB,WACnB,OAAOtuB,EAAAA,GAAAA,IAA+Bv0G,KAAK0L,OAAQ1L,KAAKmxE,WAC1D,EACA2xD,YAAW,WACT,OAAO9iI,KAAKq3D,oBAAoB59D,MAClC,EACAspI,iBAAgB,WACd,OAAO/iI,KAAK8iI,YAAe9iI,KAAKi9C,gBAAmBj9C,KAAK+/C,uBAC1D,EACA/0C,QAAO,WACL,OAAOhL,KAAK0L,OAAOhR,MAAMwkB,SAASqB,cAAcvV,OAClD,EACAg4H,UAAS,WACP,IAAQtyH,EAAe1Q,KAAK0L,OAAOhR,MAAK,UAAhCgW,WACR,OAAO1Q,KAAK0iI,aAA8B,WAAfhyH,CAC7B,EACAuyH,eAAc,WAMZ,MAJY,CACVC,KAAM,iBACNC,OAAQ,yBAHanjI,KAAK0L,OAAOhR,MAAK,UAAhCgW,aAKkB,iBAC5B,EACAioH,eAAc,WAEZ,MAAsB,WADC34H,KAAK0L,OAAOhR,MAAK,UAAhCgW,WACyB,SAAW,IAC9C,EACA0yH,uBAAsB,WACpB,OAAOpjI,KAAK6iI,sBAAsB3mI,MAAM,EAAG8D,KAAK8iI,YAAc9iI,KAAK2iI,mBACrE,EACAvhE,SAAQ,WAAM,OAAOphE,KAAK0L,OAAOoP,QAAQnH,aAAa0uD,oBAAqB,IACxExe,EAAAA,EAAAA,IAAW,CAAC,kBAAmB,6BAEpCiK,QAAO,WACL9tD,KAAKiyH,YAAcjyH,KAAKoJ,MAAM4sC,KAAKk8E,QAAQ,uBACtClyH,KAAKiyH,cACRjyH,KAAKiyH,YAAcjyH,KAAKoJ,MAAM4sC,KAAKk8E,QAAQ,0BAExClyH,KAAKiyH,cACRjyH,KAAKiyH,YAAcjyH,KAAKoJ,MAAM4sC,KAAKk8E,QAAQ,iBAE7ClyH,KAAKiyH,YAAY5mH,iBAAiB,SAAUrL,KAAKqjI,qBACnD,EACA54H,UAAS,WACFzK,KAAKiyH,aACVjyH,KAAKiyH,YAAYzmH,oBAAoB,SAAUxL,KAAKqjI,qBACtD,EACAz1E,MAAO,CACLm1E,iBAAgB,SAAEh5G,GACZA,EAAQ,GACV2qE,GAAAA,EAAAA,mBACA10F,KAAK0L,OAAOjR,SAAS,eAAgB,IAAFpB,OAAM0wB,EAAK,QAE9C2qE,GAAAA,EAAAA,oBACA10F,KAAK0L,OAAOjR,SAAS,eAAgB,IAEzC,EACAwoI,eAAc,WAAI,IAAAt6H,EAAA,KAEhB3I,KAAKuuD,WAAU,WACb5lD,EAAKspH,YAAYzmH,oBAAoB,SAAU7C,EAAK06H,sBACpD16H,EAAKspH,YAActpH,EAAKS,MAAM4sC,KAAKk8E,QAAQ,uBACtCvpH,EAAKspH,cACRtpH,EAAKspH,YAActpH,EAAKS,MAAM4sC,KAAKk8E,QAAQ,0BAE7CvpH,EAAKspH,YAAY5mH,iBAAiB,SAAU1C,EAAK06H,sBACjD16H,EAAK06H,sBACP,GACF,GAEFxjI,QAAS,CACPk7D,YAAW,WACU/6D,KAAKiyH,YACbj3D,SAAS,CAAE6U,IAAK7vE,KAAKoJ,MAAM4sC,KAAK85B,WAE7C,EACAuzD,qBAAoB,WAClBrjI,KAAKiuE,cAAgBjuE,KAAKoJ,MAAM4sC,KAAK85B,UAAY9vE,KAAKiyH,YAAY3oH,SACpE,EACAg6H,WAAU,WACRtjI,KAAK0L,OAAOjR,SAAS,2BACrBuF,KAAK2iI,mBA9H2B,EA+HlC,EACApnE,wBAAuB,WAAI,IAAAvyD,EAAA,KACzB,IAAIhJ,KAAKgL,QAAT,CAIA,IAAMu4H,EAAYvjI,KAAK6iI,sBAAsBppI,OAASuG,KAAK8iI,YAC3D,GAAI9iI,KAAK2iI,mBAAqBY,EAC5BvjI,KAAK2iI,mBAAqB/oI,KAAKs1C,IAAIlvC,KAAK2iI,mBAAqB,GAAIY,OADnE,CAGWvjI,KAAK2iI,mBAAqBY,IACnCvjI,KAAK2iI,mBAAqBY,GAG5B,IAAM9qI,EAAQuH,KAAK0L,OACbqT,EAActmB,EAAMiC,MAAMqB,MAAM8X,YAAYkL,YAClDtmB,EAAM6Z,OAAO,0BAA2B,CAAEtT,OAAO,IACjDu1B,GAAAA,EAAAA,eAAoC,CAClC97B,MAAAA,EACAsmB,YAAAA,EACAyE,OAAO,IACN/rB,MAAK,SAAA+rI,GACN/qI,EAAM6Z,OAAO,0BAA2B,CAAEtT,OAAO,IAC3B,IAAlBwkI,EAAO/pI,SACTuP,EAAKiC,aAAc,GAErBjC,EAAK25H,oBAAsBa,EAAO/pI,MACpC,GAfA,CARA,CAwBF,ICxKE,IAA2B,QAAgB,GAAQ,CAAC,CAAC,S,qJVNzDksD,EAAAA,EAAAA,IA+FW+V,EAAAA,GAAA,CA9FR9xD,SAAUjJ,EAAA+hI,aAAe/hI,EAAAssF,gBACzB9/C,GAAIxsC,EAAAsiI,gB,cAELt9E,EAAAA,EAAAA,KA0FYwD,EAAAA,EAAAA,IAzFLxoD,EAAAqiI,UAAY,MAAQ,SAAX,CACdnyF,IAAI,OACHxxC,OAAKkqD,EAAAA,EAAAA,IAAA,EAAA+xE,QAAa36H,EAAA+hI,aACb,mB,mBAEN,iBAmFM,EAnFNjiI,EAAAA,EAAAA,GAmFM,OAnFApB,OAAKkqD,EAAAA,EAAAA,IAAE5oD,EAAAiiI,Y,CAEFjiI,EAAAqiI,WAqCsC,iBArC7B,WADlBziI,EAAAA,EAAAA,IAuCM,MAvCNC,EAuCM,EAnCJC,EAAAA,EAAAA,GAMM,MANNkkD,EAMM,mBALDhkD,EAAA8L,GAAG,gCAAiC,IACvC,GACQ9L,EAAAmiI,cAAW,WADnBviI,EAAAA,EAAAA,IAGyB,OAHzBskD,GAGyBD,EAAAA,EAAAA,IAArBjkD,EAAAmiI,aAAW,sBAGTniI,EAAAstE,gBAAa,WADrB1tE,EAAAA,EAAAA,IAkBM,MAlBNykD,EAkBM,EAdJvkD,EAAAA,EAAAA,GAaS,UAZPpB,MAAM,uCACNI,KAAK,SACJ2S,MAAOzR,EAAA8L,GAAG,yBACV3M,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAo6D,aAAAp6D,EAAAo6D,YAAAjhE,MAAA6G,EAAAhE,UAAW,I,EAEnBqH,EAAAA,EAAAA,IAMWw3D,EAAA,CANDn8D,MAAM,qCAAmC,C,kBACjD,iBAA0B,EAA1B2E,EAAAA,EAAAA,IAA0B+hD,EAAA,CAAlBj8C,KAAK,cACb9F,EAAAA,EAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,QACL0/C,UAAU,S,mCAMV7oD,EAAAmiI,cAAW,WADnBviI,EAAAA,EAAAA,IAOS,U,MALPlB,MAAM,6BACNI,KAAK,SACJK,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAA2iI,YAAA3iI,EAAA2iI,WAAAxpI,MAAA6G,EAAAhE,UAAU,mB,QAEvBgE,EAAA8L,GAAG,uBAAD,qBAEPzI,EAAAA,EAAAA,IAAgDy/H,EAAA,CAA3BpkI,MAAM,yBAE7BoB,EAAAA,EAAAA,GAcM,MAdN2lD,EAcM,gBAVJ7lD,EAAAA,EAAAA,IASMwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IARmBxpD,EAAAyiI,wBAAsB,SAAtC5gH,G,kBADTjiB,EAAAA,EAAAA,IASM,OAPHkI,IAAK+Z,EAAa1qB,GACnBmgE,KAAK,WACL54D,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,eAAc,CAAAm6E,QACF/iI,EAAA+hI,cAAgBlgH,EAAamD,S,CAE/Cy/B,GACAphD,EAAAA,EAAAA,IAA6C2/H,EAAA,CAA9BnhH,aAAcA,GAAY,4B,aAG7C/hB,EAAAA,EAAAA,GA0BM,MA1BN4kD,EA0BM,CAxBI1kD,EAAAsK,cAAW,WADnB1K,EAAAA,EAAAA,IAKM,MALN8lD,GAKMzB,EAAAA,EAAAA,IADDjkD,EAAA8L,GAAG,wCAAD,IAGO9L,EAAAqK,UAKyC,WAGvDzK,EAAAA,EAAAA,IASM,MATNilD,EASM,EALJxhD,EAAAA,EAAAA,IAIE+hD,EAAA,CAHAj8C,KAAK,eACL2sD,KAAA,GACAnQ,KAAK,YAfY,WADrB/lD,EAAAA,EAAAA,IAQS,U,MANPlB,MAAM,mCACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAA46D,yBAAuB,kB,EAEvC96D,EAAAA,EAAAA,GAEM,MAFN6kD,GAEMV,EAAAA,EAAAA,IADDjkD,EAAA+hI,YAAc/hI,EAAA8L,GAAG,2BAA6B9L,EAAA8L,GAAG,6BAAD,S,oDUvEjE,K,4ECROpN,MAAM,iB,GACHA,MAAM,gB,qBAehBgL,EAAAA,GAAAA,IACEC,EAAAA,KAGF,SAAiB,ECZjB,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,iEDNzD/J,EAAAA,EAAAA,IASM,MATNC,EASM,EARJC,EAAAA,EAAAA,GAOO,OAPPkkD,EAOO,EANL3gD,EAAAA,EAAAA,IAIE+hD,EAAA,CAHAj8C,KAAK,eACL2sD,KAAA,GACAnQ,KAAK,Q,QACL,KACF1B,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,oBAAD,M,qGE+VX,QAvWgB,CACdzS,KAAM,UACNsF,MAAO,CAELgoE,QAAS5nE,OAGTm3E,UAAWn3E,OAKXkkI,QAAS3rI,OAIT4rI,gBAAiBnkI,OAIjB88D,OAAQvkE,OAIRk4B,OAAQl4B,OAKR6rI,aAAcpkI,OAIdqkI,cAAexiI,QAGfqI,SAAUrI,QAGVyiI,eAAgBziI,QAGhB0iI,uBAAwBvkI,OAGxBwkI,YAAa3iI,QAGbw9H,aAAcx9H,QAEd4iI,aAAc,CACZ1kI,KAAMxH,OACN2H,QAAS,CAAC,IAGdk1H,OAAQ,CAAC,kBACT18H,KAAI,WACF,MAAO,CAILgsI,SAAU,KAGVC,UAAU,EACVC,aAAa,EACbhhG,QAAQ,EACRihG,OAAQ,CAAC,EACTC,QAAS,CAAE/wH,MAAO,EAAGvH,OAAQ,GAC7Bu4H,WAAY,KAEZC,aAAc,KACdC,cAAe,KACfjX,qBAAqB,EACrBkX,cAAe,IAAIniI,IAEvB,EACA5C,QAAS,CACPwvH,YAAW,SAAEjyC,GACXp9E,KAAKokI,SAAWhnD,EAChBp9E,KAAKizH,cACP,EACA4R,4BAA2B,WAEzB,OADkB7kI,KAAK6jI,gBAAkB7jI,KAAKoM,IAAI8lH,QAAQlyH,KAAK6jI,iBAAmB7jI,KAAKoM,IAAImpG,cAC1EtpG,uBACnB,EACAgnH,aAAY,WACV,GAAIjzH,KAAKsjC,OACPtjC,KAAKukI,OAAS,CAAC,MADjB,CAOA,IAAMH,EAAWpkI,KAAKokI,UAAapkI,KAAKoJ,MAAMk+D,SAAWtnE,KAAKoJ,MAAMk+D,QAAQhjE,SAAS,IAAOtE,KAAKoM,IAE3F04H,EAAeV,EAAS/3H,cAAgB+3H,EAAS7uG,aACjDwvG,EAAcX,EAAS7N,aAAe6N,EAAS/uG,YAC/C2vG,EAAkBZ,EAASn4H,wBAE3Bg5H,EAAc92C,iBAAiBi2C,GAC/B/uB,EAAamR,WAAWye,EAAYC,YACpCC,EAAgB3e,WAAWye,EAAYG,eACvCC,EAAe7e,WAAWye,EAAY52C,cACtCinB,EAAckR,WAAWye,EAAYK,aAGrC5vG,EACDsvG,EAAgB9uD,KAAqB,GAAd6uD,EADtBrvG,EAEDsvG,EAAgBn1D,IAAqB,GAAfi1D,EAErBnlI,EAAUK,KAAKoJ,MAAMzJ,QACrB4lI,EAAgBvlI,KAAKgkI,eACvBhkI,KAAKoJ,MAAMzJ,QAAQ0uD,cAAcruD,KAAKikI,wBACtC,KAGEuB,EAAkBxlI,KAAK4jI,UACP,cAAnB5jI,KAAK4jI,QAAQ3xF,GAAwC,cAAnBjyC,KAAK4jI,QAAQz3H,IAChDnM,KAAK6kI,8BAEDroE,EAASx8D,KAAKw8D,QAAU,CAAC,EAIzBipE,EAAUzlI,KAAK4jI,SAA8B,cAAnB5jI,KAAK4jI,QAAQ3xF,EACzC,CACE/C,IAAKs2F,EAAgBtvD,MAAQ1Z,EAAO0Z,MAAQ,GAC5Cr8E,IAAK2rI,EAAgBhsG,OAASgjC,EAAOhjC,OAAS,IAEhD,CACE0V,IAAK,GAAKstB,EAAO0Z,MAAQ,IACzBr8E,IAAKwG,OAAO80B,YAAcqnC,EAAOhjC,OAAS,KAG1CksG,EAAU1lI,KAAK4jI,SAA8B,cAAnB5jI,KAAK4jI,QAAQz3H,EACzC,CACE+iC,IAAKs2F,EAAgB31D,KAAOrT,EAAOqT,KAAO,GAC1Ch2E,IAAK2rI,EAAgBhT,QAAUh2D,EAAOg2D,QAAU,IAElD,CACEtjF,IAAK,GAAKstB,EAAOqT,KAAO,IACxBh2E,IAAKwG,OAAOiM,aAAekwD,EAAOg2D,QAAU,IAG9CmT,EAAc,EACdC,EAAa,EAEjB,GAAIL,EAAe,CACjB,IAAMM,EAAMlmI,EAAQsM,wBACd65H,EAAyBP,EAAct5H,wBACvC85H,EAAkBD,EAAuB5vD,KAAO2vD,EAAI3vD,KACpD8vD,EAAiBF,EAAuBj2D,IAAMg2D,EAAIh2D,IACxD81D,GAAeI,EAA8C,GAA5BR,EAAchP,YAC/CqP,GAAcI,EAA8C,GAA7BT,EAAcl5H,YAC/C,MACEs5H,GAAqC,GAAvBhmI,EAAQ42H,YACtBqP,GAAqC,GAAxBjmI,EAAQ0M,aAGvB,IAAM45H,EAAavwG,EAAWiwG,EACxBO,EAAcD,EAAatmI,EAAQ42H,YACnC4P,EAAYzwG,EAAWkwG,EACvBQ,EAAeD,EAAYxmI,EAAQ0M,aAGrC45H,EAAaR,EAAQv2F,MACvBy2F,GAAeF,EAAQv2F,IAAM+2F,GAI3BC,EAAcT,EAAQ5rI,MACxB8rI,GAAeO,EAAcT,EAAQ5rI,KAInCssI,EAAYT,EAAQx2F,MACtB02F,GAAcF,EAAQx2F,IAAMi3F,GAI1BC,EAAeV,EAAQ7rI,MACzB+rI,GAAcQ,EAAeV,EAAQ7rI,KAGvC,IAAIwsI,EAAa,EACbC,EAAa,EAEjB,GAAIf,EACFc,EAAa3wG,EAAWiwG,EACxBW,EAAa5wG,EAAWkwG,OACnB,GAAuB,UAAnB5lI,KAAK62E,WAA4C,SAAnB72E,KAAK62E,UAAsB,CAElE,IAAI0vD,EAA8B,WAAnBvmI,KAAK62E,UAKd2vD,EAAc9wG,EAA0B,GAAfovG,GAAsB9kI,KAAK+jI,cAAgB1uB,EAAa,GACjFoxB,EAAiB/wG,EAA0B,GAAfovG,GAAsB9kI,KAAK+jI,cAAgBoB,EAAgB,GACzFsB,EAAiB9mI,EAAQ0M,aAAeq5H,EAAQ7rI,MAAK0sI,GAAW,GAChEC,EAAc7mI,EAAQ0M,aAAeq5H,EAAQx2F,MAAKq3F,GAAW,GAEjE,IAAMG,EAAW1mI,KAAKmwB,QAAUnwB,KAAKmwB,OAAOhkB,GAAM,EAClDm6H,EAAaC,EACTC,EAAcE,EAAU/mI,EAAQ0M,aAChCo6H,EAAiBC,EAGrBL,EAAa3wG,EAAWiwG,GADP3lI,KAAKmwB,QAAUnwB,KAAKmwB,OAAO8hB,GAAM,EAEpD,KAAO,CAEL,IAAI00F,EAAgC,SAAnB3mI,KAAK62E,UAKhB+vD,EAAgBlxG,EAAyB,GAAdqvG,GAAqB/kI,KAAK+jI,cAAgBsB,EAAe,GACpFwB,EAAenxG,EAAyB,GAAdqvG,GAAqB/kI,KAAK+jI,cAAgBzuB,EAAc,GACpFuxB,EAAelnI,EAAQ42H,YAAckP,EAAQ5rI,MAAK8sI,GAAa,GAC/DC,EAAgBjnI,EAAQ42H,YAAckP,EAAQv2F,MAAKy3F,GAAa,GAEpE,IAAMG,EAAW9mI,KAAKmwB,QAAUnwB,KAAKmwB,OAAO8hB,GAAM,EAClDo0F,EAAaM,EACTC,EAAgBE,EAAUnnI,EAAQ42H,YAClCsQ,EAAeC,EAGnBR,EAAa5wG,EAAWkwG,GADP5lI,KAAKmwB,QAAUnwB,KAAKmwB,OAAOhkB,GAAM,EAEpD,CAEAnM,KAAKukI,OAAS,CACZruD,KAAM,GAAF78E,OAAKO,KAAK8xG,MAAM26B,GAAW,MAC/Bx2D,IAAK,GAAFx2E,OAAKO,KAAK8xG,MAAM46B,GAAW,OAG5BtmI,KAAK24H,iBACP34H,KAAKukI,OAAO,yBAA2B,YAAHlrI,OAAe2G,KAAK24H,eAAc,eAEpE6M,IACFxlI,KAAKukI,OAAOwC,SAAW,GAAH1tI,OAAMO,KAAK8xG,MAAM85B,EAAgB/xH,OAAM,MAtJ7D,CAwJF,EACA28G,YAAW,WAAI,IAAA1uH,EAAA,KACb,IAAI1B,KAAK4J,SAAT,CACA5J,KAAK0tH,qBAAsB,EAC3BxyH,YAAW,WACTwG,EAAKgsH,qBAAsB,CAC7B,GAAG,GACH,IAAMsZ,EAAYhnI,KAAKsjC,OACvBtjC,KAAKsjC,QAAS,EACdtjC,KAAK2kI,eAAiB3kI,KAAK2kI,cAAcsC,oBAAoBjnI,MAAM,IAC9C,UAAjBA,KAAKsnE,SAAuBtnE,KAAKkkI,cACnCn4H,SAASV,iBAAiB,QAASrL,KAAKknI,gBAE1ClnI,KAAKykI,WAAWp5H,iBAAiB,SAAUrL,KAAKq7D,UAChDr7D,KAAKykI,WAAWp5H,iBAAiB,SAAUrL,KAAK66E,UAChD76E,KAAKuuD,WAAU,WACTy4E,GAAWtlI,EAAKwE,MAAM,QAC1BxE,EAAKuxH,cACP,GAhByB,CAiB3B,EACA5C,YAAW,WACLrwH,KAAK4J,WACJ5J,KAAKsjC,QAAQtjC,KAAKkG,MAAM,SAC7BlG,KAAKsjC,QAAS,EACdtjC,KAAK2kI,eAAiB3kI,KAAK2kI,cAAcsC,oBAAoBjnI,MAAM,GAC9C,UAAjBA,KAAKsnE,SACPv7D,SAASP,oBAAoB,QAASxL,KAAKknI,gBAE7ClnI,KAAKykI,WAAWj5H,oBAAoB,SAAUxL,KAAKq7D,UACnDr7D,KAAKykI,WAAWj5H,oBAAoB,SAAUxL,KAAK66E,UACrD,EACAjE,aAAY,SAAEl/E,GACS,UAAjBsI,KAAKsnE,UACPtnE,KAAKskI,aAAc,EACnBlpI,aAAa4E,KAAK0kI,cAClB1kI,KAAK0kI,aAAe,KACpB1kI,KAAKowH,cAET,EACAz5C,aAAY,SAAEj/E,GAAG,IAAAiR,EAAA,KACM,UAAjB3I,KAAKsnE,SAAmD,IAA5BtnE,KAAK4kI,cAAct+E,OACjDtmD,KAAK0kI,aAAexpI,YAAW,kBAAMyN,EAAK0nH,aAAa,GAAE,GAE7D,EACA8W,oBAAmB,SAAEzvI,GACE,UAAjBsI,KAAKsnE,SAAwBtnE,KAAKskI,cACpCtkI,KAAKskI,aAAc,EACnBlpI,aAAa4E,KAAK0kI,cAClB1kI,KAAK0kI,aAAe,KACpB1kI,KAAKowH,cAET,EACAgX,oBAAmB,SAAE1vI,GAAG,IAAAsR,EAAA,KACD,UAAjBhJ,KAAKsnE,SAAmD,IAA5BtnE,KAAK4kI,cAAct+E,OACjDtmD,KAAK0kI,aAAexpI,YAAW,kBAAM8N,EAAKqnH,aAAa,GAAE,GAE7D,EACAvwH,QAAO,SAAEpI,GACc,UAAjBsI,KAAKsnE,UACHtnE,KAAKsjC,OACPtjC,KAAKowH,cAELpwH,KAAKqwH,cAGX,EACA6W,eAAc,SAAExvI,GACVsI,KAAK0tH,qBACL1tH,KAAKsjC,QACLtjC,KAAKoJ,MAAMzJ,SAAWK,KAAKoJ,MAAMzJ,QAAQ81G,SAAS/9G,EAAEkJ,SACpDZ,KAAKoM,IAAIqpG,SAAS/9G,EAAEkJ,SACpBZ,KAAK4kI,cAAct+E,KAAO,IAC9BtmD,KAAKqwH,cACDrwH,KAAK2kI,eAAe3kI,KAAK2kI,cAAcuC,eAAexvI,GAC5D,EACA2jE,SAAQ,SAAE3jE,GACRsI,KAAKizH,cACP,EACAp4C,SAAQ,SAAEnjF,GACRsI,KAAKizH,cACP,EACAgU,oBAAmB,SAAEI,EAAU3sI,GACzBA,EACFsF,KAAK4kI,cAAcvgH,IAAIgjH,GAEvBrnI,KAAK4kI,cAAa,OAAQyC,EAE9B,GAEFz4C,QAAO,WAIL,IAAMjvF,EAAUK,KAAKoJ,MAAMzJ,QACtBA,IACDK,KAAKwkI,QAAQ/wH,QAAU9T,EAAQ42H,aAAev2H,KAAKwkI,QAAQt4H,SAAWvM,EAAQ0M,eAChFrM,KAAKizH,eACLjzH,KAAKwkI,QAAU,CAAE/wH,MAAO9T,EAAQ42H,YAAarqH,OAAQvM,EAAQ0M,eAEjE,EACAyhD,QAAO,WACL9tD,KAAKqkI,UAAW,EAChB,IAAII,EAAazkI,KAAKoJ,MAAMk+D,QAAQ4qD,QAAQ,wBACxClyH,KAAKoJ,MAAMk+D,QAAQ4qD,QAAQ,yBAC1BuS,IAAYA,EAAapkI,QAC9BL,KAAKykI,WAAaA,EAElB,IADA,IAAIvzF,EAASlxC,KAAKsnI,QACXp2F,GAAiC,YAAvBA,EAAOq2F,EAAE9nI,KAAKzF,MAC7Bk3C,EAASA,EAAOo2F,QAElBtnI,KAAK2kI,cAAgBzzF,CACvB,EACAs2F,cAAa,WACXxnI,KAAKqwH,aACP,GC3VF,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCCNzD9vH,EAAAA,EAAAA,IAqCO,QApCJq2E,aAAU/1E,EAAA,KAAAA,EAAA,qBAAEF,EAAAi2E,cAAAj2E,EAAAi2E,aAAA98E,MAAA6G,EAAAhE,UAAY,GACxBg6E,aAAU91E,EAAA,KAAAA,EAAA,qBAAEF,EAAAg2E,cAAAh2E,EAAAg2E,aAAA78E,MAAA6G,EAAAhE,UAAY,I,EAEzB8D,EAAAA,EAAAA,GASS,UATTkE,EAAAA,EAAAA,IASS,CARPksC,IAAI,UACJxxC,MAAK,CAAC,yBACEsB,EAAAo+H,aAAe,qBAAuB,mBAC9Ct/H,KAAK,UACGkB,EAAAwjI,aAAY,CACnBrkI,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAb,SAAAa,EAAAb,QAAAhG,MAAA6G,EAAAhE,UAAO,K,EAEf2rD,EAAAA,EAAAA,IAAuB3nD,EAAAkI,OAAA,6BAEzB88C,EAAAA,EAAAA,IAsBW+V,EAAAA,GAAA,CArBR9xD,UAAWjJ,EAAA0jI,SACZl3F,GAAG,a,EAEHnpC,EAAAA,EAAAA,IAiBayjI,EAAAA,GAAA,CAjBDztI,KAAK,QAAM,C,kBACrB,iBAeM,CAdG2G,EAAA2iC,Q,iBAAM,WADf/iC,EAAAA,EAAAA,IAeM,O,MAbJswC,IAAI,UACHmnB,OAAK2E,EAAAA,EAAAA,IAAEh8D,EAAA4jI,QACRllI,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,UACE5oD,EAAAmjI,cAAgB,oBACvBltD,aAAU/1E,EAAA,KAAAA,EAAA,qBAAEF,EAAAwmI,qBAAAxmI,EAAAwmI,oBAAArtI,MAAA6G,EAAAhE,UAAmB,GAC/Bg6E,aAAU91E,EAAA,KAAAA,EAAA,qBAAEF,EAAAymI,qBAAAzmI,EAAAymI,oBAAAttI,MAAA6G,EAAAhE,UAAmB,GAC/BmD,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA+mI,gBAAA/mI,EAAA+mI,eAAA5tI,MAAA6G,EAAAhE,UAAc,I,EAEtB2rD,EAAAA,EAAAA,IAIE3nD,EAAAkI,OAAA,WAFAxJ,MAAM,gBACL4mC,MAAOtlC,EAAA0vH,e,iIC/BhBx/E,IAAI,OACJxxC,MAAM,oB,GAOCA,MAAM,c,SAiBPA,MAAM,wC,qBAeNA,MAAM,wC,qBAeNA,MAAM,wC,qBAeNA,MAAM,qB,6BAONA,MAAM,kC,SAONA,MAAM,yB,GAWJA,MAAM,mB,SAWRA,MAAM,qB,SAIJA,MAAM,kB,SAMNA,MAAM,gC,SAYR44D,KAAK,aACL54D,MAAM,qC,wJA0FNA,MAAM,mB,SAaJA,MAAM,e,qBAmBNA,MAAM,e,GAEAA,MAAM,e,GAahBwxC,IAAI,SACJxxC,MAAM,e,GAEDA,MAAM,oB,iCA8BTuK,SAAA,GACAvK,MAAM,sB,SAMNuK,SAAA,GACAvK,MAAM,sB,wBAwBRA,MAAM,e,SA+BNA,MAAM,mB,0MCzWVA,MAAM,a,IAOCA,MAAM,mB,yFAiCRA,MAAM,oB,iBAWGL,MAAM,U,IAGNA,MAAM,Y,iHChDxBqL,GAAAA,GAAAA,IACE6+B,GAAAA,IACAy+F,GAAAA,KAGF,UACE1mI,WAAY,CACV87H,OAAAA,GAAAA,GAEF/iI,KAAM,WACNsF,MAAO,CAAC,WACRlH,KAAM,iBAAO,CACXwvI,SAAU,SACVlvD,QAAS,CAAC,GAAI,IACdmvD,aAAc,GACdC,WAAY,UACb,EACDx/H,SAAU,CACR+R,WAAU,WACR,OAAOra,KAAK0L,OAAOhR,MAAM2X,SAASgI,UACpC,EACA0tH,WAAU,WACR,OAAO/nI,KAAKqa,WAAWC,WACzB,EACA0tH,UAAS,WACP,OAAOhoI,KAAKqa,WAAWE,gBACzB,EACA0tH,YAAW,WAAI,IAAAvmI,EAAA,KAEPwmI,EAASloI,KAAKmoI,sBACpB,MAFiB,CAAC,UAAW,QAAS,QAEtBhvI,QACd,SAAA0zD,GAAI,OAAInrD,EAAK2Y,WAAWI,gBAAkBytH,EAAOr7E,EAAM,EAAE,GAE7D,EACAu7E,2BAA0B,WACxB,OAAOxuI,KAAKy1E,KACVrvE,KAAKqoI,oBACHroI,KAAK8nI,WACL9nI,KAAKqa,WAAWG,gBAGtB,EACA8tH,2BAA0B,WACxB,OAAO1uI,KAAK02E,MACVtwE,KAAKqoI,oBACHroI,KAAK8nI,WACL9nI,KAAKqa,WAAWI,gBAGtB,GAEF5a,QAAS,CACPk8C,MAAK,WACH/7C,KAAK4nI,SAAW,SAChB5nI,KAAK04E,QAAU,CAAC,GAAI,IACpB14E,KAAK6nI,aAAe,GACpB7nI,KAAK8nI,WAAa,SACpB,EACAS,WAAU,SAAE3kI,GACV,IAAM4kI,EAAUxoI,KAAKoM,IAAIiiD,cAAc,SAADh1D,OAAUuK,EAAQ,IACpD4kI,EACFA,EAAQ/jF,QAGYzkD,KAAKyoI,aAEvBzoI,KAAKuuD,WAAU,WACbvuD,KAAKuoI,WAAW3kI,EAClB,GAGN,EACA6kI,UAAS,WACP,OAAIzoI,KAAK04E,QAAQj/E,OAASuG,KAAK+nI,aAC7B/nI,KAAK04E,QAAQt5E,KAAK,KACX,EAGX,EACAspI,aAAY,SAAE9kI,EAAOqC,GACfjG,KAAK04E,QAAQj/E,OAAS,IACxBuG,KAAK04E,QAAQp3D,OAAO1d,EAAO,GAC3B5D,KAAK2oI,qBAET,EACAN,oBAAmB,SAAEx7E,EAAMsiB,GAEzB,OAAOy5D,GAAAA,GAAwB/7E,EAAMsiB,EACvC,EACAg5D,sBAAqB,SAAEt7E,EAAMsiB,GAC3B,OAAOy5D,GAAAA,GAAwB/7E,EAAMsiB,EACvC,EACA05D,mBAAkB,WAChB7oI,KAAK6nI,aACHjuI,KAAKC,IAAImG,KAAKooI,2BAA4BpoI,KAAK6nI,cACjD7nI,KAAK6nI,aACHjuI,KAAKs1C,IAAIlvC,KAAKsoI,2BAA4BtoI,KAAK6nI,cACjD7nI,KAAK2oI,oBACP,EACAA,mBAAkB,WAChB,IAAMhwG,EAAY34B,KAAKmoI,sBACrBnoI,KAAK8nI,WACL9nI,KAAK6nI,cAGDnvD,EAAUr+C,KAAKr6B,KAAK04E,QAAQv/E,QAAO,SAAAgZ,GAAM,MAAe,KAAXA,CAAa,KAC5DumE,EAAQj/E,OAAS,EACnBuG,KAAKkG,MAAM,cAAe,CAAEgF,MAAOlL,KAAKyM,GAAG,8BAG7CzM,KAAKkG,MAAM,cAAe,CACxBwyE,QAAAA,EACAiqB,SAA4B,aAAlB3iG,KAAK4nI,SACfjvG,UAAAA,GAEJ,I,gBCrHJ,MAEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,2EFLjDh4B,EAAA4/C,UAAO,WADfhgD,EAAAA,EAAAA,IA0FM,MA1FNC,GA0FM,gBAtFJD,EAAAA,EAAAA,IAyBMwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IAxBsBxpD,EAAA+3E,SAAO,SAAzBvmE,EAAQvO,G,kBADlBrD,EAAAA,EAAAA,IAyBM,OAvBHkI,IAAK7E,EACNvE,MAAM,e,EAENoB,EAAAA,EAAAA,GAYM,MAZNkkD,GAYM,WAXJlkD,EAAAA,EAAAA,GAUC,SATE3I,GAAE,QAAAuB,OAAUuK,G,yCACJjD,EAAA+3E,QAAQ90E,GAAKshD,CAAA,EACtBoB,KAAK,IACLjnD,MAAM,oBACNI,KAAK,OACJ0lD,YAAaxkD,EAAA8L,GAAG,gBAChBq8H,UAAWnoI,EAAAqnI,UACX3/C,SAAMxnF,EAAA,KAAAA,EAAA,qBAAEF,EAAAgoI,oBAAAhoI,EAAAgoI,mBAAA7uI,MAAA6G,EAAAhE,UAAkB,GAC1B+tH,WAAO97D,EAAAA,EAAAA,KAAA9tD,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAqBvkD,EAAA4nI,WAAW3kI,EAAK,mC,mBAPpCjD,EAAA+3E,QAAQ90E,QAWbjD,EAAA+3E,QAAQj/E,OAAS,IAAH,WADtB8G,EAAAA,EAAAA,IAMS,U,MAJPlB,MAAM,iDACLS,QAAK,SAAAolD,GAAA,OAAEvkD,EAAA+nI,aAAa9kI,EAAK,G,EAE1BI,EAAAA,EAAAA,IAAuB+hD,EAAA,CAAfj8C,KAAK,WAAO,wB,UAIhBnJ,EAAA+3E,QAAQj/E,OAASkH,EAAAonI,aAAU,WADnCxnI,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,oDACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA8nI,WAAA9nI,EAAA8nI,UAAA3uI,MAAA6G,EAAAhE,UAAS,I,EAEjBqH,EAAAA,EAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,OACLw8C,KAAK,Q,QACL,KAEF1B,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,qBAAD,uBAEPhM,EAAAA,EAAAA,GA+CM,MA/CNwkD,GA+CM,EA9CJxkD,EAAAA,EAAAA,GAiBM,OAhBJpB,MAAM,YACL+S,MAAOzR,EAAA8L,GAAG,e,EAEXzI,EAAAA,EAAAA,IAYSq5H,EAAA,C,WAXE18H,EAAAinI,S,qDAAAjnI,EAAAinI,SAAQ1iF,CAAA,GACjB7lD,MAAM,mBACN0pI,SAAS,OACR1gD,SAAQ1nF,EAAAgoI,oB,mBAET,iBAES,EAFTloI,EAAAA,EAAAA,GAES,SAFT2kD,IAESR,EAAAA,EAAAA,IADJjkD,EAAA8L,GAAG,wBAAD,IAEPhM,EAAAA,EAAAA,GAES,SAFT4kD,IAEST,EAAAA,EAAAA,IADJjkD,EAAA8L,GAAG,2BAAD,G,8CAIXhM,EAAAA,EAAAA,GA2BM,OA1BJpB,MAAM,cACL+S,MAAOzR,EAAA8L,GAAG,iB,WAEXhM,EAAAA,EAAAA,GAOC,S,qDANUE,EAAAknI,aAAY3iF,CAAA,GACrBzlD,KAAK,SACLJ,MAAM,oCACL6vC,IAAKvuC,EAAAynI,2BACLvuI,IAAK8G,EAAA2nI,2BACLjgD,SAAMxnF,EAAA,KAAAA,EAAA,qBAAEF,EAAAkoI,oBAAAloI,EAAAkoI,mBAAA/uI,MAAA6G,EAAAhE,UAAkB,I,mBALlBgE,EAAAknI,iBAAY,QAMtB,KACDjjF,EAAAA,EAAAA,IAAG,KAAM,MACT5gD,EAAAA,EAAAA,IAaSq5H,EAAA,C,WAZE18H,EAAAmnI,W,qDAAAnnI,EAAAmnI,WAAU5iF,CAAA,GACnB6jF,SAAS,OACT1pI,MAAM,cACLgpF,SAAQ1nF,EAAAkoI,oB,mBAGP,iBAA2B,gBAD7BtoI,EAAAA,EAAAA,IAMSwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IALQxpD,EAAAsnI,aAAW,SAAnBp7E,G,kBADTtsD,EAAAA,EAAAA,IAMS,UAJNkI,IAAKokD,EACL7tD,MAAO6tD,I,QAELlsD,EAAA41D,IAAI,aAADl9D,OAAcwzD,EAAI,UAAUlsD,EAAAknI,aAAc,CAAC,MAAH,EAAAriF,G,uwBG1D1Dn7C,GAAAA,GAAAA,IACEyiH,GAAAA,IACAkc,GAAAA,IACAlL,GAAAA,IACAmL,GAAAA,IACA//F,GAAAA,IACA5+B,GAAAA,KAGF,IAgBM4+H,GAAmB,SAACpmD,GACxB,OAAO9iE,OAAO8iE,EAAI5lF,UAAU,EAAG4lF,EAAIrpF,OAAS,GAC9C,EAumBA,SArmBuB,CACrB6F,MAAO,CACL,WACA,aACA,oBACA,aACA,cACA,0BACA,cACA,oBACA,UACA,cACA,aACA,mBACA,UACA,iBACA,uBACA,4BACA,gBACA,qBACA,eACA,6BACA,gBACA,iBACA,cACA,YACA,cACA,gBACA,YACA,YACA,gBACA,uBACA,qBAEF21E,MAAO,CACL,SACA,SACA,YACA,cAEFh0E,WAAY,CACVkoI,YAAAA,GAAAA,EACAC,WAAAA,GAAAA,EACAC,SAAAA,GACAC,cAAAA,GAAAA,EACAl+E,SAAAA,GAAAA,EACA2xE,OAAAA,GAAAA,EACA7nD,WAAAA,GAAAA,EACAC,cAAAA,GAAAA,EACAC,QAAAA,GAAAA,GAEFtnB,QAAO,WAIL,GAHA9tD,KAAKupI,uBACLvpI,KAAK49D,OAAO59D,KAAKoJ,MAAMogI,UAEnBxpI,KAAKypI,QAAS,CAChB,IAAMC,EAAa1pI,KAAKoJ,MAAMogI,SAASxqI,MAAMvF,OAC7CuG,KAAKoJ,MAAMogI,SAAS9kF,kBAAkBglF,EAAYA,EACpD,EAEI1pI,KAAKypI,SAAWzpI,KAAK2pI,YACvB3pI,KAAKoJ,MAAMogI,SAAS/kF,OAExB,EACArsD,KAAI,WACF,IACIi7B,EADWrzB,KAAK84D,OAAO99D,MAAMixB,SACN,GAEnBlU,EAAc/X,KAAK0L,OAAOoP,QAAQnH,aAAlCoE,UAER,GAAI/X,KAAKypI,QAAS,CAChB,IAAM51H,EAAc7T,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAC5Cwf,EA5FsB,SAAH74B,EAA+BqZ,GAAgB,IAAzC7X,EAAIxB,EAAJwB,KAAI4tI,EAAApvI,EAAE6G,WAAAA,OAAU,IAAAuoI,EAAG,GAAEA,EAC9CC,GAAa9vI,EAAAA,EAAAA,GAAOsH,GAExBwoI,EAAc1iI,QAAQnL,GAEtB6tI,EAAgBxqD,IAAOwqD,EAAe,MACtCA,EAAgBC,IAAOD,EAAe,CAAE/xI,GAAI+b,EAAY/b,KAExD,IAAM4oB,EAAW+c,IAAIosG,GAAe,SAACE,GACnC,MAAO,IAAP1wI,OAAW0wI,EAAU9tI,YACvB,IAEA,OAAOykB,EAASjnB,OAAS,EAAIinB,EAASra,KAAK,KAAO,IAAM,EAC1D,CA+EmB2jI,CAAoB,CAAEhuI,KAAMgE,KAAKiqI,YAAa5oI,WAAYrB,KAAKqB,YAAcwS,EAC5F,CAEA,IAAMgjB,EAAU72B,KAAKkqI,kBAAoBnyH,GAAwC,WAA1B/X,KAAKkqI,iBACxDlqI,KAAKkqI,iBACLlqI,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAYw5F,cAExClrC,EAA6DniE,KAAK0L,OAAOoP,QAAQnH,aAAxDsrD,EAAWkD,EAA5BvqD,gBAA8BU,EAAkB6pD,EAAlB7pD,mBAElC6xH,EAAe,CACjBprE,YAAa/+D,KAAKoqI,SAAW,GAC7B5oH,OAAQ6R,EACR1L,OAAQrP,EACRsmH,MAAO,GACPp0G,KAAM,CAAC,EACP6/G,kBAAmB,CAAC,EACpBxmH,WAAYgT,EACZooC,YAAAA,GAGF,GAAIj/D,KAAKgc,SAAU,CACjB,IAAMsuH,EAAoBtqI,KAAKsqI,mBAAqBrrE,EACpDkrE,EAAe,CACbprE,YAAa/+D,KAAKoqI,SAAW,GAC7B5oH,OAAQxhB,KAAKqzB,YAAc,GAC3B1L,KAAM3nB,KAAKuqI,qBAAuBjyH,EAClCsmH,MAAO5+H,KAAKwqI,aAAe,GAC3BhgH,KAAMxqB,KAAKyqI,YAAc,CAAC,EAC1BJ,kBAAmBrqI,KAAK0qI,yBAA2B,CAAC,EACpD7mH,WAAY7jB,KAAK2qI,aAAe9zG,EAChCooC,YAAaqrE,EACbM,SAAS,EAEb,CAEA,MAAO,CACLxd,YAAYC,EAAAA,GAAAA,KACZyR,UAAW,GACX+L,gBAAgB,EAChB3/H,MAAO,KACPwgF,SAAS,EACTlvD,YAAa,EACbhW,UAAW2jH,EACX5c,MAAO,EACPud,iBAAiB,EACjBC,aAAc,OACdC,gBAAiB,KACjB33E,QAAS,KACT43E,gBAAgB,EAChBC,iBAAiB,EACjBhxD,eAAgB,GAEpB,EACA5xE,SAAQpP,GAAAA,GAAA,CACN6C,MAAK,WACH,OAAOiE,KAAK0L,OAAOhR,MAAMqB,MAAMA,KACjC,EACAovI,iBAAgB,WACd,OAAOnrI,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAYw5F,aAC7C,EACA+9B,cAAa,WACX,OAAQprI,KAAK2T,aAAa+D,iBAC5B,EACA2zH,mBAAkB,WAChB,OAAOC,EAAAA,GAAAA,IAAU,CACf/yI,MAAO,GAAFc,QAAAU,EAAAA,EAAAA,GACAiG,KAAK0L,OAAOoP,QAAQU,oBAAiBzhB,EAAAA,EAAAA,GACrCiG,KAAK0L,OAAOhR,MAAM2X,SAASwG,cAEhCpgB,MAAOuH,KAAK0L,QAEhB,EACA6/H,eAAc,WACZ,OAAOD,EAAAA,GAAAA,IAAU,CACf/yI,MAAO,GAAFc,QAAAU,EAAAA,EAAAA,GACAiG,KAAK0L,OAAOoP,QAAQU,oBAAiBzhB,EAAAA,EAAAA,GACrCiG,KAAK0L,OAAOhR,MAAM2X,SAASwG,eAGpC,EACAtgB,MAAK,WACH,OAAOyH,KAAK0L,OAAOoP,QAAQU,mBAAqB,EAClD,EACA3C,YAAW,WACT,OAAO7Y,KAAK0L,OAAOhR,MAAM2X,SAASwG,aAAe,EACnD,EACA2yH,aAAY,WACV,OAAOxrI,KAAKwmB,UAAUhF,OAAO/nB,MAC/B,EACAgyI,kBAAiB,WACf,OAAOzrI,KAAKwmB,UAAUu4C,YAAYtlE,MACpC,EACAiyI,kBAAiB,WACf,OAAO1rI,KAAK0L,OAAOhR,MAAM2X,SAAS8C,SACpC,EACAw2H,qBAAoB,WAClB,OAAO3rI,KAAK0rI,kBAAoB,CAClC,EACAE,eAAc,WACZ,OAAO5rI,KAAK0rI,mBAAqB1rI,KAAKwrI,aAAexrI,KAAKyrI,kBAC5D,EACAI,kBAAiB,WACf,OAAO7rI,KAAK2rI,sBAAyB3rI,KAAK4rI,eAAiB,CAC7D,EACAl0H,kBAAiB,WACf,OAAO1X,KAAK0L,OAAOhR,MAAM2X,SAASqF,iBACpC,EACAo0H,kBAAiB,WACf,OAAO9rI,KAAK2T,aAAa2B,sBAC3B,EACA4D,YAAW,WACT,OAAOlZ,KAAK0L,OAAOhR,MAAM2X,SAAS6G,aAAe,EACnD,EACA6yH,cAAa,WACX,OAAO/rI,KAAK0L,OAAOhR,MAAM2X,SAAS+G,MACpC,EACAgB,eAAc,WACZ,OAAOpa,KAAK0L,OAAOhR,MAAM2X,SAAS+H,gBAChCpa,KAAK0L,OAAOhR,MAAM2X,SAASgI,WAAWC,aAAe,IAC/B,IAAtBta,KAAKgsI,YACT,EACA7yC,gBAAe,WACb,OAAOn5F,KAAKisI,eAAiBjsI,KAAK0L,OAAOoP,QAAQnH,aAAawlF,eAChE,EACA+yC,iBAAgB,WACd,OAAOlsI,KAAK8qI,iBACV9qI,KAAKwmB,UAAUgE,MACfxqB,KAAKwmB,UAAUgE,KAAKtf,KACxB,EACAihI,YAAW,WACT,OAAQnsI,KAAKosI,mBAAqBpsI,KAAKqzD,SAAWrzD,KAAKirI,eACzD,EACAoB,YAAW,WACT,MAAwC,KAAjCrsI,KAAKwmB,UAAUhF,OAAOnkB,QAAiD,IAAhC2C,KAAKwmB,UAAUo4G,MAAMnlI,MACrE,EACA6yI,uBAAsB,WACpB,OAAOtsI,KAAKwmB,UAAUo4G,MAAMnlI,QAAUuG,KAAKusI,SAC7C,EACAC,OAAM,WACJ,YAAgC,IAAlBxsI,KAAKgc,UAAqD,KAAzBhc,KAAKgc,SAAS3e,MAC/D,EACAovI,SAAQ,WACN,IAAKzsI,KAAK0L,OAAOhR,MAAM2X,SAAS0H,iBAC9B,OAAO,EAGT,IAAK/Z,KAAKypI,QACR,OAAO,EAGT,IAAMiD,EAAgB1sI,KAAK0L,OAAOhR,MAAMwkB,SAASmB,kBAAkBrgB,KAAKypI,SACxE,QAAKiD,IAI4B,WAA7BA,EAAc7oH,YACe,aAA7B6oH,EAAc7oH,YACe,UAA7B6oH,EAAc7oH,YAEsB,YAA7B6oH,EAAc7oH,YAChB6oH,EAAc1wI,KAAKlE,KAAOkI,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAY/b,GAIzE,IACG+rD,EAAAA,GAAAA,IAAW,CAAC,mBACZD,EAAAA,GAAAA,IAAS,CACV4rB,aAAc,SAAA90E,GAAK,OAAIA,EAAK,UAAW80E,YAAY,KAGvD5hB,MAAO,CACLpnC,UAAW,CACTmmH,MAAM,EACN9pF,QAAO,WACL7iD,KAAK4sI,eACP,IAGJ/sI,QAAS,CACP+sI,cAAa,WACX5sI,KAAK6sI,cACL7sI,KAAKupI,sBACP,EACAuD,YAAW,WAAI,IAAAprI,EAAA,KACP8kB,EAAYxmB,KAAKwmB,UACvBxmB,KAAKwmB,UAAY,CACfhF,OAAQ,GACRu9C,YAAa,GACb6/D,MAAO,GACP/6G,WAAY2C,EAAU3C,WACtBo7C,YAAaz4C,EAAUy4C,YACvBz0C,KAAM,CAAC,EACP6/G,kBAAmB,CAAC,EACpBO,SAAS,GAEX5qI,KAAK8qI,iBAAkB,EACvB9qI,KAAKoJ,MAAM2jI,aAAe/sI,KAAKoJ,MAAM2jI,YAAYrO,YACjD1+H,KAAKgtI,gBACDhtI,KAAKitI,eACPjtI,KAAKuuD,WAAU,WACb7sD,EAAK0H,MAAMogI,SAAS/kF,OACtB,IAEF,IAAM24B,EAAKp9E,KAAKoM,IAAIiiD,cAAc,YAClC+uB,EAAGplB,MAAM9rD,OAAS,OAClBkxE,EAAGplB,MAAM9rD,YAAS3J,EAClBvC,KAAKkL,MAAQ,KACTlL,KAAKqzD,SAASrzD,KAAKktI,eACzB,EACM9tE,WAAU,SAAEn5D,EAAOugB,GAAsB,IAAA2mH,EAAAxwI,UAAAgM,EAAA,YAAArN,EAAAA,EAAAA,GAAAC,KAAAA,MAAA,SAAAC,IAAA,IAAA4xI,EAAA5iH,EAAA6iH,EAAAC,EAAA,OAAA/xI,KAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAAF,GAALuxI,EAAA1zI,OAAA,QAAA8I,IAAA4qI,EAAA,IAAAA,EAAA,IAClCxkI,EAAK+iF,SAAY/iF,EAAK4kI,kBAAiB,CAAA7xI,EAAAE,KAAA,eAAAF,EAAAG,OAAA,qBACvC8M,EAAK6kI,cAAe,CAAF9xI,EAAAE,KAAA,eAAAF,EAAAG,OAAA,qBAClB8M,EAAKuiI,gBAAiB,CAAFxvI,EAAAE,KAAA,eAAAF,EAAAG,OAAA,iBAIvB,GAHG8M,EAAK8kI,gBACPxnI,EAAMynE,kBACNznE,EAAMgD,mBAGJN,EAAK4kI,oBAAsB5kI,EAAK0jI,cAAe1jI,EAAKkjI,kBAAkB,CAAAnwI,EAAAE,KAAA,gBAAAF,EAAAG,OAAA,sBAEtE8M,EAAK0jI,YAAa,CAAF3wI,EAAAE,KAAA,SACoC,OAAtD+M,EAAKuC,MAAQvC,EAAK8D,GAAG,kCAAiC/Q,EAAAG,OAAA,kBAII,GAAtD2uB,EAAO7hB,EAAKmiI,gBAAkBniI,EAAK6d,UAAUgE,KAAO,CAAC,GACvD7hB,EAAKujI,iBAAkB,CAAFxwI,EAAAE,KAAA,SACW,OAAlC+M,EAAKuC,MAAQvC,EAAKujI,iBAAgBxwI,EAAAG,OAAA,kBAIjB,OAAnB8M,EAAK+iF,SAAU,EAAIhwF,EAAAC,KAAA,GAAAD,EAAAE,KAAA,GAGX+M,EAAK+kI,0BAAyB,QAAAhyI,EAAAE,KAAA,iBAGhB,OAHgBF,EAAAC,KAAA,GAAAD,EAAA8T,GAAA9T,EAAA,UAEpCiN,EAAKuC,MAAQvC,EAAK8D,GAAG,uCACrB9D,EAAK+iF,SAAU,EAAKhwF,EAAAG,OAAA,kBAIhBwxI,EAAmB7mH,EAAUokH,QAAU,UAAY,oBAErCwC,EAAG,CACrB5rH,OAAQgF,EAAUhF,OAClBu9C,YAAav4C,EAAUu4C,aAAe,KACtCl7C,WAAY2C,EAAU3C,WACtBm7C,UAAWx4C,EAAUmB,KACrB/G,MAAO4F,EAAUo4G,MACjBnmI,MAAOkQ,EAAK+C,SAAMc,EAAAA,EAAAA,GAAA4gI,EACjBC,EAAmB1kI,EAAK8gI,UAAOj9H,EAAAA,EAAAA,GAAA4gI,EAAA,cACnB5mH,EAAUy4C,cAAWzyD,EAAAA,EAAAA,GAAA4gI,EAAA,OAClC5iH,IAAIhe,EAAAA,EAAAA,GAAA4gI,EAAA,iBACYzkI,EAAKuxE,gBAVjBozD,EAU+BF,GAGjBzkI,EAAKglI,YAAchlI,EAAKglI,YAAcC,GAAAA,EAAAA,YAE9CN,GAAgB71I,MAAK,SAACW,GAC3BA,EAAK8S,MAIRvC,EAAKuC,MAAQ9S,EAAK8S,OAHlBvC,EAAKmkI,cACLnkI,EAAKzC,MAAM,SAAU9N,IAIvBuQ,EAAK+iF,SAAU,CACjB,IAAE,yBAAAhwF,EAAAe,OAAA,GAAAjB,EAAA,mBAzD2CF,EA0D/C,EACA4xI,cAAa,WAAI,IAAAW,EAAA7kI,EAAA,KACf,GAAIhJ,KAAKqsI,aAAqD,KAAtCrsI,KAAKwmB,UAAUu4C,YAAY1hE,OAGjD,OAFA2C,KAAKqzD,QAAU,CAAEnoD,MAAOlL,KAAKyM,GAAG,mCAChCzM,KAAKirI,gBAAiB,GAGxB,IAAMzkH,EAAYxmB,KAAKwmB,UACvBxmB,KAAKirI,gBAAiB,EACtB,IAAMoC,EAAmB7mH,EAAUokH,QAAU,UAAY,oBACzDgD,GAAAA,EAAAA,YAAuBC,EAAA,CACrBrsH,OAAQgF,EAAUhF,OAClBu9C,YAAav4C,EAAUu4C,aAAe,KACtCl7C,WAAY2C,EAAU3C,WACtBm7C,UAAWx4C,EAAUmB,KACrB/G,MAAO,GACPnoB,MAAOuH,KAAK0L,SAAMc,EAAAA,EAAAA,GAAAqhI,EACjBR,EAAmBrtI,KAAKypI,UAAOj9H,EAAAA,EAAAA,GAAAqhI,EAAA,cACnBrnH,EAAUy4C,cAAWzyD,EAAAA,EAAAA,GAAAqhI,EAAA,OAC5B,CAAC,IAACrhI,EAAAA,EAAAA,GAAAqhI,EAAA,WACC,GAAIA,IACZp2I,MAAK,SAACW,GAGF4Q,EAAKiiI,iBACL7yI,EAAK8S,MAGRlC,EAAKqqD,QAAU,CAAEnoD,MAAO9S,EAAK8S,OAF7BlC,EAAKqqD,QAAUj7D,EAInB,IAAE,OAAO,SAAC8S,GACRlC,EAAKqqD,QAAU,CAAEnoD,MAAAA,EACnB,IAAE,SAAS,WACTlC,EAAKiiI,gBAAiB,CACxB,GACF,EACA6C,sBAAuBv0E,KAAS,WAAcv5D,KAAKktI,eAAgB,GAAG,KACtEL,YAAW,WACJ7sI,KAAKqzD,UACVrzD,KAAKirI,gBAAiB,EACtBjrI,KAAK8tI,wBACP,EACAC,aAAY,WACV/tI,KAAKqzD,QAAU,KACfrzD,KAAKirI,gBAAiB,CACxB,EACA+C,cAAa,WACPhuI,KAAKmsI,YACPnsI,KAAK+tI,eAEL/tI,KAAKktI,eAET,EACAe,aAAY,SAAEC,GACZluI,KAAKwmB,UAAUo4G,MAAMx/H,KAAK8uI,GAC1BluI,KAAKkG,MAAM,SAAU,CAAEmyE,SAAS,GAClC,EACA81D,gBAAe,SAAED,GACf,IAAMtqI,EAAQ5D,KAAKwmB,UAAUo4G,MAAMxjG,QAAQ8yG,GAC3CluI,KAAKwmB,UAAUo4G,MAAMt9G,OAAO1d,EAAO,GACnC5D,KAAKkG,MAAM,SACb,EACA22H,eAAc,SAAEqR,EAAUE,GACxBpuI,KAAKwmB,UAAU6jH,kBAAkB6D,EAASp2I,IAAMs2I,CAClD,EACAC,iBAAgB,SAAEH,GAChB,IAAQtP,EAAU5+H,KAAKwmB,UAAfo4G,MACFh7H,EAAQ5D,KAAKwmB,UAAUo4G,MAAMxjG,QAAQ8yG,GAC3CtP,EAAMt9G,OAAO1d,EAAO,GACpBg7H,EAAMt9G,OAAO1d,EAAQ,EAAG,EAAGsqI,EAC7B,EACAI,iBAAgB,SAAEJ,GAChB,IAAQtP,EAAU5+H,KAAKwmB,UAAfo4G,MACFh7H,EAAQ5D,KAAKwmB,UAAUo4G,MAAMxjG,QAAQ8yG,GAC3CtP,EAAMt9G,OAAO1d,EAAO,GACpBg7H,EAAMt9G,OAAO1d,EAAQ,EAAG,EAAGsqI,EAC7B,EACAK,aAAY,SAAEC,EAAWC,GACvBA,EAAeA,GAAgB,CAAC,EAChCzuI,KAAKkL,MAAQlL,KAAKyM,GAAG,qBAAuB,IAAMzM,KAAKyM,GAAG,gBAAkB+hI,EAAWC,EACzF,EACAC,sBAAqB,WACnB1uI,KAAK6qI,gBAAiB,CACxB,EACA8D,uBAAsB,WACpB3uI,KAAKkG,MAAM,UACXlG,KAAK6qI,gBAAiB,CACxB,EACAprI,KAAI,SAAEyuI,GACJ,OAAO33F,GAAAA,GAAAA,SAAyB23F,EAAS13F,SAC3C,EACAo4F,MAAK,SAAEl3I,GACLsI,KAAK6sI,cACL7sI,KAAK49D,OAAOlmE,GACRA,EAAEm3I,cAAcjQ,MAAMnlI,OAAS,IAEjC/B,EAAEuR,iBAIFjJ,KAAK8+H,UAAY,CAACpnI,EAAEm3I,cAAcjQ,MAAM,IAE5C,EACAkQ,SAAQ,SAAEp3I,GACJA,EAAEq3I,cAAgBr3I,EAAEq3I,aAAaz8D,MAAMx2E,SAAS,WAClDpE,EAAEuR,iBACFjJ,KAAK8+H,UAAYpnI,EAAEq3I,aAAanQ,MAChCxjI,aAAa4E,KAAKgrI,iBAClBhrI,KAAK+qI,aAAe,OAExB,EACAiE,aAAY,SAAEt3I,GAAG,IAAA6R,EAAA,KAIfnO,aAAa4E,KAAKgrI,iBAClBhrI,KAAK+qI,aAAe,OACpB/qI,KAAKgrI,gBAAkB9vI,YAAW,kBAAOqO,EAAKwhI,aAAe,MAAM,GAAG,IACxE,EACAkE,SAAQ,SAAEv3I,GACRA,EAAEq3I,aAAaG,WAAalvI,KAAKssI,uBAAyB,OAAS,OAC/D50I,EAAEq3I,cAAgBr3I,EAAEq3I,aAAaz8D,MAAMx2E,SAAS,WAClDV,aAAa4E,KAAKgrI,iBAClBhrI,KAAK+qI,aAAe,OAExB,EACAoE,kBAAiB,SAAEz3I,GAAG,IAAA6yE,EAAA,KACpBvqE,KAAKuuD,WAAU,WACbgc,EAAK3M,OAAO2M,EAAKnhE,MAAMogI,SACzB,GACF,EACA5rE,OAAM,SAAElmE,GACN,IAAMkJ,EAASlJ,EAAEkJ,QAAUlJ,EAC3B,GAAMkJ,aAAkBP,OAAOw9D,QAA/B,CAGA,GAAqB,KAAjBj9D,EAAO5B,MAGT,OAFA4B,EAAOo3D,MAAM9rD,OAAS,UACtBlM,KAAKkG,MAAM,UAIb,IAAMkpI,EAAUpvI,KAAKoJ,MAAM0sB,KACrBu5G,EAAYrvI,KAAKoJ,MAAMopH,OAKvB8c,EAAyBjvI,OAAO8tF,iBAAiBkhD,GAAW,kBAC5DE,EAAsBrG,GAAiBoG,GAEvCrd,EAAcjyH,KAAKoM,IAAI8lH,QAAQ,wBAC/BlyH,KAAKoM,IAAI8lH,QAAQ,0BACjB7xH,OAGAs1G,EAAgBt1G,OAAO8tF,iBAAiBvtF,GAAQ,eAChD4uI,EAAmBnvI,OAAO8tF,iBAAiBvtF,GAAQ,kBAGnD6uI,EAFavG,GAAiBvzB,GACduzB,GAAiBsG,GAGjCE,EAAYxG,GAAiBtoI,EAAOo3D,MAAM9rD,QAoB1CimH,EAAgBF,IAAgB5xH,OAClC4xH,EAAYz4D,QACZy4D,EAAY3oH,UACVqmI,EAAiB1d,IAAgB5xH,OACnC4xH,EAAY3lH,YACZ2lH,EAAY5lH,aACV+lH,EAAuBD,EAAgBwd,EAG7C/uI,EAAOo3D,MAAM9rD,OAAS,OACtB,IAAM0jI,EAAuBh2I,KAAK02E,MAAM1vE,EAAO0tD,aAAemhF,GAC1DI,EAAY7vI,KAAK8vI,UAAYl2I,KAAKs1C,IAAI0gG,EAAsB5vI,KAAK8vI,WAAaF,EAG9Eh2I,KAAK42E,IAAIq/D,EAAYH,IAAc,IACrCG,EAAYH,GAEd9uI,EAAOo3D,MAAM9rD,OAAS,GAAH7S,OAAMw2I,EAAS,MAClC7vI,KAAKkG,MAAM,SAAU2pI,GAKrB,IAAME,EAAqBV,EAAUhjI,cAAewoG,EAAAA,GAAAA,GAAWw6B,EAAWpd,GAAapiD,IAAM0/D,EAEvFS,EAAqB5d,EAAuB2d,EAC5CE,EAA2BN,EAAiBP,EAAQ/iI,aACpD6jI,EAAoBH,EAAqB3d,EAQzC+d,GAHuBH,GACrBC,GACAjwI,KAAKoJ,MAAMogI,SAASxW,iBAAmBhzH,KAAKoJ,MAAMogI,SAASxqI,MAAMvF,OACX,EAApBy2I,EACpC5d,EAAe14H,KAAK8xG,MAAMymB,EAAgBge,GAE5Cle,IAAgB5xH,OAClB4xH,EAAYM,OAAO,EAAGD,GAEtBL,EAAY3oH,UAAYgpH,CA1FwB,CA4FpD,EACA8d,gBAAe,WACbpwI,KAAKoJ,MAAMogI,SAAS/kF,QACpBzkD,KAAKoJ,MAAM,eAAewnH,mBAC5B,EACArsE,WAAU,WACRvkD,KAAKkL,MAAQ,IACf,EACAmlI,UAAS,SAAExsH,GACT7jB,KAAKwmB,UAAU3C,WAAaA,CAC9B,EACAysH,eAAc,WACZtwI,KAAK8qI,iBAAmB9qI,KAAK8qI,eAC/B,EACAyF,QAAO,SAAE/lH,GACPxqB,KAAKwmB,UAAUgE,KAAOA,CACxB,EACAwiH,cAAa,WACPhtI,KAAKoJ,MAAMonI,UACbxwI,KAAKoJ,MAAMonI,SAASz0F,OAExB,EACA00F,mBAAkB,WAChBzwI,KAAK0L,OAAOjR,SAAS,YAAa,CAAET,KAAM,kBAAmBgF,OAAO,GACtE,EACAkkG,oBAAmB,SAAEprG,GACnB,IAAMu6C,EAAcryC,KAAKwmB,UAAU6jH,kBAAkBvyI,GACrD,GAAKu6C,GAAsC,KAAvBA,EAAYh1C,OAChC,OAAOuwI,GAAAA,EAAAA,oBAAiC,CAAEn1I,MAAOuH,KAAK0L,OAAQ5T,GAAAA,EAAIu6C,YAAAA,GACpE,EACAq7F,wBAAuB,WAAI,IAAAriE,EAAA,KACnBxzE,EAAMmI,KAAKwmB,UAAUo4G,MAAM1nI,KAAI,SAAAq7E,GAAI,OAAIA,EAAKz6E,EAAE,IACpD,OAAOP,QAAQolB,IAAI9kB,EAAIX,KAAI,SAAAY,GAAE,OAAIuzE,EAAK63B,oBAAoBprG,EAAG,IAC/D,EACA44I,qBAAoB,SAAE1xI,GACpBgB,KAAKkrI,gBAAkBlsI,CACzB,EACAuqI,qBAAoB,WAClBvpI,KAAKk6E,eAAiBhkD,KAAK2U,MAAM/kC,UACnC,EACA6qI,eAAc,WACZ3wI,KAAK0L,OAAOjR,SAAS,uBAAwB,UAC/C,EACAquG,cAAa,SAAExpG,GACb,OAAOwpG,EAAAA,GAAAA,GAAcxpG,EACvB,ICjpBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,8RLNzDiB,EAAAA,EAAAA,IAkXM,MAlXNC,EAkXM,EA9WJC,EAAAA,EAAAA,GA6WO,QA5WLsjF,aAAa,MACZj/B,SAAMjkD,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAP,cAAe,cACd8vI,WAAQ/vI,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAsuI,UAAAtuI,EAAAsuI,SAAAn1I,MAAA6G,EAAAhE,UAAQ,kB,EAE3B8D,EAAAA,EAAAA,GA0PM,MA1PNkkD,EA0PM,CAxPKhkD,EAAA+K,OAAOhR,MAAMqB,MAAM8X,YAAYivB,QAAkC,WAAxBniC,EAAA6lB,UAAU3C,YAA4BljB,EAAAkwI,oB,iBAAkB,WAD1GlrF,EAAAA,EAAAA,IAaSmY,EAAA,C,MAXPC,QAAQ,yCACRlhE,IAAI,IACJwC,MAAM,oBACNw3B,MAAM,U,mBAEN,iBAKS,EALTp2B,EAAAA,EAAAA,GAKS,UAJPpB,MAAM,wBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAgwI,gBAAAhwI,EAAAgwI,eAAA72I,MAAA6G,EAAAhE,UAAc,K,QAEnBgE,EAAA8L,GAAG,gDAAD,G,WAIA9L,EAAAw4F,iBAA4C,WAAzBx4F,EAAA6lB,UAAU3C,WAexBljB,EAAAw4F,iBAA4C,aAAzBx4F,EAAA6lB,UAAU3C,YAe7BljB,EAAAw4F,iBAA4C,YAAzBx4F,EAAA6lB,UAAU3C,YAA4BljB,EAAA+K,OAAOhR,MAAMqB,MAAM8X,YAAYivB,SAAM,WAD5GviC,EAAAA,EAAAA,IAcI,IAdJ6kD,EAcI,EAVF3kD,EAAAA,EAAAA,GAAyD,aAAAmkD,EAAAA,EAAAA,IAAhDjkD,EAAA8L,GAAG,qCAAD,IACXhM,EAAAA,EAAAA,GAQI,KAPFpB,MAAM,sCACL+S,MAAOzR,EAAA8L,GAAG,oCACXwrD,KAAK,SACL2gE,SAAS,IACR94H,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAA8vI,oBAAkB,kB,EAElCzsI,EAAAA,EAAAA,IAAuB+hD,EAAA,CAAfj8C,KAAK,WAAO,QAIc,WAAzBnJ,EAAA6lB,UAAU3C,aAAU,WADjCtjB,EAAAA,EAAAA,IAMI,IANJ8lD,EAMI,CAFU1lD,EAAAorI,gBAAa,WAAzBxrI,EAAAA,EAAAA,IAAsF,OAAA+kD,GAAAV,EAAAA,EAAAA,IAAxDjkD,EAAA8L,GAAG,6CAAD,iBAChClM,EAAAA,EAAAA,IAAiE,OAAAilD,GAAAZ,EAAAA,EAAAA,IAAjDjkD,EAAA8L,GAAG,sCAAD,yBAlCiC,WADrDlM,EAAAA,EAAAA,IAcI,IAdJ0kD,EAcI,EAVFxkD,EAAAA,EAAAA,GAA0D,aAAAmkD,EAAAA,EAAAA,IAAjDjkD,EAAA8L,GAAG,sCAAD,IACXhM,EAAAA,EAAAA,GAQI,KAPFpB,MAAM,sCACL+S,MAAOzR,EAAA8L,GAAG,oCACXwrD,KAAK,SACL2gE,SAAS,IACR94H,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAA8vI,oBAAkB,kB,EAElCzsI,EAAAA,EAAAA,IAAuB+hD,EAAA,CAAfj8C,KAAK,WAAO,UA1BwB,WADhDvJ,EAAAA,EAAAA,IAcI,IAdJskD,EAcI,EAVFpkD,EAAAA,EAAAA,GAAwD,aAAAmkD,EAAAA,EAAAA,IAA/CjkD,EAAA8L,GAAG,oCAAD,IACXhM,EAAAA,EAAAA,GAQI,KAPFpB,MAAM,sCACL+S,MAAOzR,EAAA8L,GAAG,oCACXwrD,KAAK,SACL2gE,SAAS,IACR94H,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAA8vI,oBAAkB,kB,EAElCzsI,EAAAA,EAAAA,IAAuB+hD,EAAA,CAAfj8C,KAAK,WAAO,QAyChBnJ,EAAA6rI,SAAM,WADdjsI,EAAAA,EAAAA,IAMM,MANNklD,EAMM,EAFJhlD,EAAAA,EAAAA,GAAkD,UAAAmkD,EAAAA,EAAAA,IAA5CjkD,EAAA8L,GAAG,oCAAD,IACRhM,EAAAA,EAAAA,GAAuD,UAAAmkD,EAAAA,EAAAA,IAAjDjkD,EAAA8L,GAAG,yCAAD,sBAGD9L,EAAAyrI,gBAWiB,iBAXH,WADvB7rI,EAAAA,EAAAA,IAqBM,MArBNmlD,EAqBM,EAjBJjlD,EAAAA,EAAAA,GAMI,KALFpB,MAAM,uBACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAeH,EAAAqtI,eAAArtI,EAAAqtI,cAAAl0I,MAAA6G,EAAAhE,UAAa,yB,mBAE/BgE,EAAA8L,GAAG,wBAAyB,IAC/B,IAAAzI,EAAAA,EAAAA,IAAiE+hD,EAAA,CAAxDj8C,KAAMnJ,EAAAwrI,YAAc,eAAiB,iB,6BAEhD1rI,EAAAA,EAAAA,GASM,MATNmlD,EASM,EALJ5hD,EAAAA,EAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,iBACNo3D,KAAA,GACA3sD,KAAK,kB,YANCnJ,EAAAsqI,qBAWJtqI,EAAAwrI,cAAW,WADnB5rI,EAAAA,EAAAA,IAqBM,MArBNslD,EAqBM,CAhBKllD,EAAA0yD,QAMI1yD,EAAA0yD,QAAQnoD,QAAK,WAD1B3K,EAAAA,EAAAA,IAKM,MALNo/E,GAKM/6B,EAAAA,EAAAA,IADDjkD,EAAA0yD,QAAQnoD,OAAK,iBAElBy6C,EAAAA,EAAAA,IAIEmxB,EAAA,C,MAFCt1D,OAAQ7gB,EAAA0yD,QACTh0D,MAAM,kB,sBAdQ,WADhBkB,EAAAA,EAAAA,IAKM,MALNulD,GAKMlB,EAAAA,EAAAA,IADDjkD,EAAA8L,GAAG,oBAAD,Q,eAeD9L,EAAA8rI,WAAQ,WADhBlsI,EAAAA,EAAAA,IA6BM,MA7BNq/E,EA6BM,EAxBJn/E,EAAAA,EAAAA,GAWS,UAVN3I,GAAE,yBAAAuB,OAA2BsH,EAAAysH,WAAU,UACxC/tH,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,2CAA0C,CAAA4xB,SAC5Bx6E,EAAA6lB,UAAUokH,WAC9BhS,SAAS,IACT3gE,KAAK,QACJ,kBAAe,yBAAA5+D,OAA2BsH,EAAAysH,WAAU,UACpD,gBAAezsH,EAAA6lB,UAAUokH,QACzB9qI,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA6lB,UAAUokH,SAAU,CAAH,K,QAEtBjqI,EAAA8L,GAAG,6BAAD,GAAAozE,IAEPp/E,EAAAA,EAAAA,GAWS,UAVN3I,GAAE,yBAAAuB,OAA2BsH,EAAAysH,WAAU,UACxC/tH,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,2CAA0C,CAAA4xB,QAC7Bx6E,EAAA6lB,UAAUokH,WAC7BhS,SAAS,IACT3gE,KAAK,QACJ,kBAAe,yBAAA5+D,OAA2BsH,EAAAysH,WAAU,UACpD,eAAczsH,EAAA6lB,UAAUokH,QACxB9qI,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA6lB,UAAUokH,SAAU,CAAH,K,QAEtBjqI,EAAA8L,GAAG,6BAAD,GAAAqzE,OAAA,eAIAn/E,EAAAmwI,iBAAmBnwI,EAAA6lB,UAAUu4C,cAAep+D,EAAAmrI,mB,iBAAiB,WADtEnmF,EAAAA,EAAAA,IAkBaorF,EAAA,C,iBAhBFpwI,EAAA6lB,UAAUu4C,Y,qDAAVp+D,EAAA6lB,UAAUu4C,YAAW7Z,CAAA,GAC9B,yBACC6nE,QAASpsH,EAAA4qI,eACVlsI,MAAM,gB,CAEKO,SAAOy+D,EAAAA,EAAAA,KAChB,SADkB2yE,GAAU,iBAC5BvwI,EAAAA,EAAAA,GAQC,SARDkE,EAAAA,EAAAA,IAQC,C,qDAPUhE,EAAA6lB,UAAUu4C,YAAW7Z,CAAA,GAC9BzlD,KAAK,OACJ0lD,YAAaxkD,EAAA8L,GAAG,+BAChB7C,SAAUjJ,EAAA+qF,UAAY/qF,EAAA4sI,mBACf5sI,EAAAmoG,cAAckoC,GAAU,CAChC1qF,KAAK,IACLjnD,MAAM,sB,kBANGsB,EAAA6lB,UAAUu4C,e,uCAUzB/6D,EAAAA,EAAAA,IAyCa+sI,EAAA,CAxCXlgG,IAAI,c,WACKlwC,EAAA6lB,UAAUhF,O,uDAAV7gB,EAAA6lB,UAAUhF,OAAM0jC,CAAA,GACxB6nE,QAASpsH,EAAA0qI,mBACTx0D,UAAWl2E,EAAAswI,qBACZ5xI,MAAM,0BACN,yBACA,uBACC,wBAAuBsB,EAAA8sI,cACxB,2BACCxvE,QAAOt9D,EAAAwuI,kBACPrc,kBAAkBnyH,EAAAstI,aAClBlb,sBAAuBpyH,EAAA4tI,aACvB2C,QAAOvwI,EAAA+vI,sB,CAEG9wI,SAAOy+D,EAAAA,EAAAA,KAChB,SADkB2yE,GAAU,iBAC5BvwI,EAAAA,EAAAA,GAgBE,YAhBFkE,EAAAA,EAAAA,IAgBE,CAfAksC,IAAI,W,qDACKlwC,EAAA6lB,UAAUhF,OAAM0jC,CAAA,GACxBC,YAAaxkD,EAAAwkD,aAAexkD,EAAA8L,GAAG,uBAChCiiD,KAAK,IACLw7B,KAAK,IACJtgF,SAAUjJ,EAAA+qF,UAAY/qF,EAAA4sI,kBACvBluI,MAAK,CAAC,iBAAgB,qBACSsB,EAAAmvI,aACvBnvI,EAAAmoG,cAAckoC,GAAU,CAC/BtmB,UAAO,8C,OAAc/pH,EAAA8sI,eAAiB9sI,EAAAy+D,WAAWla,EAAQvkD,EAAA6lB,UAAS,uE,OAC9C7lB,EAAAy+D,WAAWla,EAAQvkD,EAAA6lB,UAAS,sE,OAC3B7lB,EAAA8sI,eAAiB9sI,EAAAy+D,WAAWla,EAAQvkD,EAAA6lB,UAAS,0BAClEy3C,QAAKp9D,EAAA,MAAAA,EAAA,sBAAEF,EAAAi9D,QAAAj9D,EAAAi9D,OAAA9jE,MAAA6G,EAAAhE,UAAM,GACbw0I,oBAAiBtwI,EAAA,MAAAA,EAAA,sBAAEF,EAAAi9D,QAAAj9D,EAAAi9D,OAAA9jE,MAAA6G,EAAAhE,UAAM,GACzBozH,QAAKlvH,EAAA,MAAAA,EAAA,sBAAEF,EAAAiuI,OAAAjuI,EAAAiuI,MAAA90I,MAAA6G,EAAAhE,UAAK,K,kBAbJgE,EAAA6lB,UAAUhF,UAgBb7gB,EAAAgrI,uBAAoB,WAD5BprI,EAAAA,EAAAA,IAMI,K,MAJFlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,0BAAyB,CAAAr+C,MACdvK,EAAAkrI,uB,QAEdlrI,EAAAirI,gBAAc,oB,yIAKdjrI,EAAAywI,sBAoC2C,iBApCvB,WAD7B7wI,EAAAA,EAAAA,IAwCM,MAxCN0/E,EAwCM,CAnCKt/E,EAAA0wI,2B,iBAAyB,WADlC1rF,EAAAA,EAAAA,IAOE2rF,EAAA,C,MALC,WAAU3wI,EAAAyqI,cACV,eAAczqI,EAAAwqI,iBACd,iBAAgBxqI,EAAAupI,iBAChB,gBAAevpI,EAAA6lB,UAAU3C,WACzB,kBAAiBljB,EAAA0vI,W,wFAIZ1vI,EAAAuY,YAAYzf,OAAS,IAAH,WAD1B8G,EAAAA,EAAAA,IAkBM,MAlBN2/E,EAkBM,EAdJl8E,EAAAA,EAAAA,IAaSq5H,EAAA,CAZPvlI,GAAG,oB,WACM6I,EAAA6lB,UAAUy4C,Y,uDAAVt+D,EAAA6lB,UAAUy4C,YAAW/Z,CAAA,GAC9B7lD,MAAM,eACL/B,MAAK,cAAkBqD,EAAA8L,GAAG,wC,mBAGzB,iBAAiC,gBADnClM,EAAAA,EAAAA,IAMSwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IALcxpD,EAAAuY,aAAW,SAAzBq4H,G,kBADThxI,EAAAA,EAAAA,IAMS,UAJNkI,IAAK8oI,EACLvyI,MAAOuyI,I,QAEL5wI,EAAA8L,GAAG,6BAADpT,OAA8Bk4I,EAAU,UAAApxD,E,gEAKpB,IAAvBx/E,EAAAuY,YAAYzf,QAAmC,eAAnBkH,EAAAuY,YAAY,KAAD,WAD/C3Y,EAAAA,EAAAA,IAOM,MAPN8/E,EAOM,EAHJ5/E,EAAAA,EAAAA,GAEO,OAFP0iF,GAEOv+B,EAAAA,EAAAA,IADFjkD,EAAA8L,GAAG,6BAADpT,OAA8BsH,EAAAuY,YAAY,GAAD,mCAM9CvY,EAAAyZ,iBAAc,WADtBurC,EAAAA,EAAAA,IAKE6rF,EAAA,C,MAHA3gG,IAAI,WACH0P,QAAS5/C,EAAAmqI,gBACT2G,aAAa9wI,EAAA4vI,S,qDAEhB9vI,EAAAA,EAAAA,GAsDM,MAtDN2iF,EAsDM,EAlDJ3iF,EAAAA,EAAAA,GA2BM,MA3BN4iF,EA2BM,EA1BJr/E,EAAAA,EAAAA,IASE0tI,EAAA,CARA7gG,IAAI,cACJxxC,MAAM,oBACL,aAAYsB,EAAAm+H,UACZl1H,SAAUjJ,EAAA2rI,uBACVqF,YAAWhxI,EAAA+tI,sBACXtV,WAAUz4H,EAAAstI,aACV5U,eAAe14H,EAAA4tI,aACfqD,cAAcjxI,EAAAguI,wB,+FAEjBluI,EAAAA,EAAAA,GAMS,UALPpB,MAAM,6BACL+S,MAAOzR,EAAA8L,GAAG,mBACV3M,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAAyvI,iBAAAzvI,EAAAyvI,gBAAAt2I,MAAA6G,EAAAhE,UAAe,I,EAEvBqH,EAAAA,EAAAA,IAA4B+hD,EAAA,CAApBj8C,KAAK,gBAAY,KAGnBnJ,EAAAyZ,iBAAc,WADtB7Z,EAAAA,EAAAA,IAQS,U,MANPlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,4BAA2B,CAAA00B,SACbt9E,EAAAmqI,mBACnB14H,MAAOzR,EAAA8L,GAAG,kBACV3M,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAA2vI,gBAAA3vI,EAAA2vI,eAAAx2I,MAAA6G,EAAAhE,UAAc,I,EAEtBqH,EAAAA,EAAAA,IAAwB+hD,EAAA,CAAhBj8C,KAAK,YAAQ,yBAIjBnJ,EAAA+qF,UAAO,WADfnrF,EAAAA,EAAAA,IAMS,SANTgjF,GAMS3+B,EAAAA,EAAAA,IADJjkD,EAAA8L,GAAG,wBAAD,IAGM9L,EAAAkrI,oBAAiB,WAD9BtrI,EAAAA,EAAAA,IAMS,SANTijF,GAMS5+B,EAAAA,EAAAA,IADJjkD,EAAA8L,GAAG,qBAAD,iBAEPlM,EAAAA,EAAAA,IAOS,U,MALNqJ,SAAUjJ,EAAAkqI,gBAAkBlqI,EAAA6sI,cAC7BnuI,MAAM,qBACLS,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAevkD,EAAAy+D,WAAWla,EAAQvkD,EAAA6lB,UAAS,0B,QAE9C7lB,EAAA8L,GAAG,qBAAD,EAAAg3E,KAAA,eAGThjF,EAAAA,EAAAA,GAQM,OANHu3D,OAAK2E,EAAAA,EAAAA,IAAA,CAAAk1E,UAAgC,SAAjBlxI,EAAAoqI,aAA0B,gBAAkB,kBACjE1rI,MAAM,iBACLyyI,YAASjxI,EAAA,MAAAA,EAAA,sBAAEF,EAAAquI,cAAAruI,EAAAquI,aAAAl1I,MAAA6G,EAAAhE,UAAY,GACvBo1I,OAAIlxI,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,kBAAOH,EAAAmuI,UAAAnuI,EAAAmuI,SAAAh1I,MAAA6G,EAAAhE,UAAQ,e,EAEpBqH,EAAAA,EAAAA,IAA4D+hD,EAAA,CAAnDj8C,KAAMnJ,EAAA2rI,uBAAyB,MAAQ,U,6BANvB,SAAjB3rI,EAAAoqI,gBASFpqI,EAAAuK,QAAK,WADb3K,EAAAA,EAAAA,IAcM,MAdNojF,EAcM,UAXL,YACQ/+B,EAAAA,EAAAA,IAAGjkD,EAAAuK,OAAQ,IAClB,IAAAzK,EAAAA,EAAAA,GAQS,UAPPpB,MAAM,kBACLS,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAA4jD,YAAA5jD,EAAA4jD,WAAAzqD,MAAA6G,EAAAhE,UAAU,I,EAElBqH,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACNyK,KAAK,gB,eAKHnJ,EAAA6lB,UAAUo4G,OAASj+H,EAAA6lB,UAAUo4G,MAAMnlI,OAAS,IAAH,WADjDksD,EAAAA,EAAAA,IAeEqsF,EAAA,C,MAbA3yI,MAAM,cACLk8H,MAAM,EACN5zG,MAAM,EACNtG,YAAa1gB,EAAA6lB,UAAUo4G,MACvBxuF,aAAczvC,EAAA6lB,UAAU6jH,kBACxB,YAAS,kBAAQ1pI,EAAA+K,OAAOjR,SAAS,WAAYkG,EAAA6lB,UAAUo4G,MAAK,EAC5D9C,UAAU,EACV,kBAAiBn7H,EAAAk8H,eACjB,oBAAmBl8H,EAAAwtI,gBACnB,sBAAqBxtI,EAAA6lB,UAAUo4G,MAAMnlI,OAAS,GAAKkH,EAAA0tI,iBACnD,sBAAqB1tI,EAAA6lB,UAAUo4G,MAAMnlI,OAAS,GAAKkH,EAAA2tI,iBACnD1jB,OAAI/pH,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAAuF,MAAM,YAAavF,EAAAgjC,WAAW7rC,GAAE,GACtC+yH,QAAKhqH,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAAuF,MAAM,aAAcvF,EAAAgjC,WAAW7rC,GAAE,I,sJAGnC6I,EAAA6lB,UAAUo4G,MAAMnlI,OAAS,IAAMkH,EAAAsxI,6BAA0B,WADjE1xI,EAAAA,EAAAA,IAOM,MAPNqjF,EAOM,EAHJ5/E,EAAAA,EAAAA,IAEWk6D,GAAA,C,WAFQv9D,EAAA6lB,UAAUmB,K,uDAAVhnB,EAAA6lB,UAAUmB,KAAIu9B,CAAA,I,mBAC/B,iBAA6C,mBAA1CvkD,EAAA8L,GAAG,sCAAD,G,0IMhWf,SACEnN,MAAO,CACLsK,SAAU,CACRnK,KAAM8B,SAER6xD,MAAO,CACL3zD,KAAMuI,SACNpI,QAAS,kBAAMrI,QAAQC,SAAQ,IAGnCY,KAAG,WACD,MAAO,CACL85I,UAAU,EAEd,EACAryI,QAAS,CACPC,QAAM,WAAK,IAAA4B,EAAA,KACT1B,KAAKkyI,UAAW,EAChBlyI,KAAKozD,QAAQ37D,MAAK,WAAQiK,EAAKwwI,UAAW,CAAM,GAClD,IC3BJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCDJzD3xI,EAAAA,EAAAA,IAUS,UATNqJ,SAAUuoI,EAAAD,UAAYzmI,EAAA7B,SACtB9J,QAAKe,EAAA,KAAAA,EAAA,qBAAEk0E,EAAAj1E,SAAAi1E,EAAAj1E,QAAAhG,MAAAi7E,EAAAp4E,UAAO,I,CAECw1I,EAAAD,UAAYvxI,EAAAkI,OAAOqpI,UACjC5pF,EAAAA,EAAAA,IAAwB3nD,EAAAkI,OAAA,YAAAJ,IAAA,KAGxB6/C,EAAAA,EAAAA,IAAQ3nD,EAAAkI,OAAA,WAAAJ,IAAA,S,gFERPpJ,MAAM,iB,4BAUPoB,EAAAA,EAAAA,GAIC,SAHChB,KAAK,SACLzF,KAAK,UACLgF,MAAM,I,YAGNo0D,MAAM,SACN/zD,MAAM,gCClBd,SACEC,MAAO,CAAC,QACRgJ,SAAU,CACR8pI,aAAY,WAEV,IAAMC,EAAY,IAAIz2H,IAAI5b,KAAKhE,KAAKgJ,uBACpC,MAAO,GAAP3L,OAAUg5I,EAAUC,SAAQ,MAAAj5I,OAAKg5I,EAAUE,KAAI,gBACjD,ICEJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCFNzDhyI,EAAAA,EAAAA,IAsBM,MAtBNC,EAsBM,EArBJC,EAAAA,EAAAA,GAoBO,QAnBL21B,OAAO,OACNtR,OAAQnkB,EAAAyxI,c,EAET3xI,EAAAA,EAAAA,GAIC,SAHChB,KAAK,SACLzF,KAAK,WACJgF,MAAO2B,EAAA3E,KAAKC,a,UAEf+oD,GAKAvkD,EAAAA,EAAAA,GAKS,SALTwkD,GAKSL,EAAAA,EAAAA,IADJjkD,EAAA8L,GAAG,4BAAD,U,sFGjBTpN,MAAM,iB,qECKVgL,EAAAA,GAAAA,IACEmgD,EAAAA,IACAF,EAAAA,IACAkoF,EAAAA,IACAC,EAAAA,KAwDF,QArDsB,CACpBnzI,MAAO,CACL,UACA,cACA,gBACA,eACA,iBAEFlH,KAAI,WACF,MAAO,CACLs6I,aAAc1yI,KAAK2yI,aAEvB,EACArqI,SAAU,CACRsqI,YAAW,WACT,QAAQ5yI,KAAK6yI,YAAe7yI,KAAK8yI,cAAiB9yI,KAAK+yI,aAAgB/yI,KAAKgzI,WAC9E,EACAH,WAAU,WACR,MAA8B,WAAvB7yI,KAAKizI,eAA8BjzI,KAAKkzI,WAAW,SAC5D,EACAJ,aAAY,WACV,MAA8B,WAAvB9yI,KAAKizI,eAA8BjzI,KAAKkzI,WAAW,WAC5D,EACAH,YAAW,WACT,MAA8B,WAAvB/yI,KAAKizI,eAA8BjzI,KAAKkzI,WAAW,UAC5D,EACAF,WAAU,WACR,OAAOhzI,KAAKkzI,WAAW,SACzB,EACAC,IAAG,WACD,MAAO,CACLxyH,OAAQ,CAAEs9D,SAAgC,WAAtBj+E,KAAK0yI,cACzBU,SAAU,CAAEn1D,SAAgC,aAAtBj+E,KAAK0yI,cAC3BW,QAAS,CAAEp1D,SAAgC,YAAtBj+E,KAAK0yI,cAC1BY,OAAQ,CAAEr1D,SAAgC,WAAtBj+E,KAAK0yI,cAE7B,GAEF7yI,QAAS,CACPqzI,WAAU,SAAEr8G,GACV,OAAO72B,KAAKuzI,SACVvzI,KAAK0yI,eAAiB77G,GACtB72B,KAAKizI,gBAAkBp8G,GACvB72B,KAAKwzI,cAAgB38G,GACX,WAAVA,CACJ,EACAw5G,UAAS,SAAEx5G,GACT72B,KAAK0yI,aAAe77G,EACpB72B,KAAKyzI,eAAiBzzI,KAAKyzI,cAAc58G,EAC3C,ICvDJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,sDFLhDl2B,EAAAiyI,a,iBAAW,WADpBryI,EAAAA,EAAAA,IA2DM,MA3DNC,EA2DM,CAtDIG,EAAAqyI,aAAU,WADlBzyI,EAAAA,EAAAA,IAYS,U,MAVPlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,wBACE5oD,EAAAwyI,IAAIG,SACXlhI,MAAOzR,EAAA8L,GAAG,4BACXhN,KAAK,SACJK,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA0vI,UAAU,SAAD,I,EAEjBrsI,EAAAA,EAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,WACLzK,MAAM,iC,gCAED,KACTulD,EAAAA,EAAAA,IAAG,KAAM,KAEDjkD,EAAAoyI,cAAW,WADnBxyI,EAAAA,EAAAA,IAYS,U,MAVPlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,wBACE5oD,EAAAwyI,IAAG,UACV/gI,MAAOzR,EAAA8L,GAAG,6BACXhN,KAAK,SACJK,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA0vI,UAAU,UAAD,I,EAEjBrsI,EAAAA,EAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,OACLzK,MAAM,iC,gCAED,KACTulD,EAAAA,EAAAA,IAAG,KAAM,KAEDjkD,EAAAmyI,eAAY,WADpBvyI,EAAAA,EAAAA,IAYS,U,MAVPlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,wBACE5oD,EAAAwyI,IAAIC,WACXhhI,MAAOzR,EAAA8L,GAAG,8BACXhN,KAAK,SACJK,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA0vI,UAAU,WAAD,I,EAEjBrsI,EAAAA,EAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,YACLzK,MAAM,iC,gCAED,KACTulD,EAAAA,EAAAA,IAAG,KAAM,KAEDjkD,EAAAkyI,aAAU,WADlBtyI,EAAAA,EAAAA,IAYS,U,MAVPlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,wBACE5oD,EAAAwyI,IAAG,SACV/gI,MAAOzR,EAAA8L,GAAG,4BACXhN,KAAK,SACJK,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA0vI,UAAU,SAAD,I,EAEjBrsI,EAAAA,EAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,QACLzK,MAAM,iC,kJGpDdgL,EAAAA,GAAAA,IACE2gD,EAAAA,KAGF,SACEiqB,MAAO,CAAC,qBACR31E,MAAO,CACL,aACA,WACA,WACA,OACA,UCPJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,iECNzDiB,EAAAA,EAAAA,IAiBQ,SAhBNlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,eAAc,CAAA3/C,SACVjJ,EAAAiJ,SAAQm/H,SAAEpoI,EAAAooI,a,EAEpBtoI,EAAAA,EAAAA,GAOS,UAPTkE,EAAAA,EAAAA,IAOS,CANNiF,SAAUjJ,EAAAiJ,SACV5K,MAAO2B,EAAA6qH,YACA7qH,EAAArD,MAAK,CACZ+qF,SAAMxnF,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAuF,MAAM,oBAAqBg/C,EAAOtkD,OAAO5B,MAAK,K,EAEvDspD,EAAAA,EAAAA,IAAQ3nD,EAAAkI,OAAA,2BACD,KACT+7C,EAAAA,EAAAA,IAAG,KAAM,MACT5gD,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,mBACNyK,KAAK,kB,iHCPLzK,MAAM,e,SAWDA,MAAM,0B,GACFA,MAAM,mB,SAaXA,MAAM,e,SAMNA,MAAM,e,qBAwBRA,MAAM,O,GAMAA,MAAM,S,GAePA,MAAM,oB,qCAsCTA,MAAM,a,cAoBHA,MAAM,c,SAGPA,MAAM,kB,GAEDA,MAAM,oB,GACJA,MAAM,gB,qCA+BLA,MAAM,iB,yEAyEZA,MAAM,qB,SAIJA,MAAM,iC,oBAqBAA,MAAM,iB,SASVA,MAAM,uB,GAEAA,MAAM,iB,SAcdA,MAAM,e,oBAQFA,MAAM,iB,SAoBZA,MAAM,sB,SAqCRA,MAAM,iB,6BAqBNA,MAAM,qC,oBAkBNA,MAAM,W,qBAYJA,MAAM,S,uBAqBNA,MAAM,uB,GAEDA,MAAM,S,GAKFA,MAAM,c,GACNA,MAAM,c,GACJA,MAAM,e,IAUXA,MAAM,c,IAEHA,MAAM,c,IACJA,MAAM,e,IAKVA,MAAM,c,UAcfA,MAAM,kB,UA8BVA,MAAM,c,IAEDA,MAAM,a,IAONA,MAAM,c,IACJA,MAAM,gB,UAabA,MAAM,+B,6DCrhBPA,MAAM,e,2CAkDPA,MAAM,kB,uBC5CZgL,GAAAA,GAAAA,IACEqpI,GAAAA,IACA/L,GAAAA,IACAz+F,GAAAA,KAgBF,SAboB,CAClBlvC,KAAM,cACNsF,MAAO,CAAC,SAAU,YAClBgJ,SAAU,CACR0qB,SAAQ,WACN,QAAShzB,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACnC,EACAiI,sBAAqB,WACnB,OAAO9b,KAAK0L,OAAOoP,QAAQgB,sBAAsB,CAAEE,SAAUhc,KAAKwhB,OAAO1pB,IAC3E,I,gBCfJ,MAEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wFFNzDyI,EAAAA,EAAAA,IAsDM,MAtDNC,GAsDM,CApDIG,EAAAqyB,WAAQ,WADhBzyB,EAAAA,EAAAA,IAyBS,U,MAvBPlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,8BAA6B,WACf5oD,EAAAulE,YACnB9zD,MAAOzR,EAAA8L,GAAG,kBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAAuF,MAAM,SAAD,kB,EAErBlC,EAAAA,EAAAA,IAiBWw3D,EAAA,CAjBDn8D,MAAM,wBAAsB,C,kBACpC,iBAGE,EAHF2E,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,eACNyK,KAAK,UAGEnJ,EAAAulE,W,WAKTvgB,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,aATU,WADjB67C,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,U,gCAUXvJ,EAAAA,EAAAA,IAoBI,K,MAlBFlB,MAAM,8BACNuB,OAAO,SACPq3D,KAAK,SACJv3D,KAAMC,EAAAmb,sBACN1J,MAAOzR,EAAA8L,GAAG,mB,EAEXzI,EAAAA,EAAAA,IAWWw3D,EAAA,CAXDn8D,MAAM,wBAAsB,C,kBACpC,iBAGE,EAHF2E,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,eACNyK,KAAK,UAGEnJ,EAAAulE,U,iBAAQ,WADjBvgB,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,U,kBAKHnJ,EAAA6gB,OAAOkuF,cAAgB,IAAH,WAD5BnvG,EAAAA,EAAAA,IAKO,OALPykD,IAKOJ,EAAAA,EAAAA,IADFjkD,EAAA6gB,OAAOkuF,eAAa,qB,aGpDtBrwG,MAAM,kB,2CAwDPA,MAAM,kB,+lBC7CZgL,GAAAA,GAAAA,IACE+2H,GAAAA,IACAuS,GAAAA,IACAhM,GAAAA,IACA9tE,GAAAA,IACAkU,GAAAA,KA+BF,SA5BuB,CACrBzuE,MAAO,CAAC,SAAU,YAClBlH,KAAI,WACF,MAAO,CACLw7I,UAAU,EAEd,EACA/zI,QAAS,CACPukB,SAAQ,WAAI,IAAA1iB,EAAA,KACL1B,KAAKwhB,OAAOgD,UAGfxkB,KAAK0L,OAAOjR,SAAS,aAAc,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,KAFrDkI,KAAK0L,OAAOjR,SAAS,WAAY,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,KAIrDkI,KAAK4zI,UAAW,EAChB14I,YAAW,WACTwG,EAAKkyI,UAAW,CAClB,GAAG,IACL,GAEFtrI,SAAQpP,GAAAA,GAAA,IACH2qD,EAAAA,GAAAA,IAAW,CAAC,kBAAgB,IAC/B/nC,sBAAqB,WACnB,OAAO9b,KAAK0L,OAAOoP,QAAQgB,sBAAsB,CAAEE,SAAUhc,KAAKwhB,OAAO1pB,IAC3E,KCnCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wFFNzDyI,EAAAA,EAAAA,IA4DM,MA5DNC,GA4DM,CA1DIG,EAAAqyB,WAAQ,WADhBzyB,EAAAA,EAAAA,IAgCS,U,MA9BPlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,8BACE5oD,EAAA6gB,OAAOgD,WAAa,eAC3BpS,MAAOzR,EAAA8L,GAAG,qBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAAyjB,UAAQ,kB,EAExBpgB,EAAAA,EAAAA,IAwBWw3D,EAAA,CAxBDn8D,MAAM,qCAAmC,C,kBACjD,iBAIE,EAJF2E,EAAAA,EAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,eACLyK,KAAI,CAAGnJ,EAAA6gB,OAAOgD,UAAY,MAAQ,MAAO,QACzCiyC,KAAM91D,EAAAizI,U,wBAGDjzI,EAAA6gB,OAAOgD,YAAS,WADxBmhC,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,gBACNmqD,UAAU,yBACV1/C,KAAK,Y,eAGEnJ,EAAA6gB,OAAOgD,Y,WAKhBmhC,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,aATkB,WADzB67C,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,U,gCAUXvJ,EAAAA,EAAAA,IAmBI,K,MAjBFlB,MAAM,8BACNuB,OAAO,SACPq3D,KAAK,SACJ7lD,MAAOzR,EAAA8L,GAAG,qBACV/L,KAAMC,EAAAmb,uB,EAEP9X,EAAAA,EAAAA,IAUWw3D,EAAA,CAVDn8D,MAAM,qCAAmC,C,kBACjD,iBAGE,EAHF2E,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,eACLyK,KAAM,CAAC,MAAO,WAEjB9F,EAAAA,EAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,S,mBAKFnJ,EAAAgT,aAAa2C,eAAiB3V,EAAA6gB,OAAOiD,SAAW,IAAH,WADtDlkB,EAAAA,EAAAA,IAKO,OALPykD,IAKOJ,EAAAA,EAAAA,IADFjkD,EAAA6gB,OAAOiD,UAAQ,qB,aG1DhBplB,MAAM,e,qCCKdgL,GAAAA,GAAAA,IACEs9H,GAAAA,IACAz+F,GAAAA,IACA4jF,GAAAA,KA4CF,SAzCoB,CAClBxtH,MAAO,CAAC,UACRlH,KAAI,WACF,MAAO,CACLy7I,WAAY,GACZ7rE,UAAU,EAEd,EACA/mE,WAAY,CACV2lE,QAAAA,GAAAA,QACAinD,YAAAA,GAAAA,GAEFhuH,QAAS,CACPi0I,YAAW,SAAE7tI,GACX,IAAM1N,EAAQ0N,EAAMkrH,UACd4iB,EAAmB/zI,KAAKwhB,OAAOkI,gBAAgBT,MAAK,SAAAoB,GAAC,OAAIA,EAAErwB,OAASzB,CAAK,IAC3Ew7I,GAAoBA,EAAiB7pH,GACvClqB,KAAK0L,OAAOjR,SAAS,mBAAoB,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,GAAIS,MAAAA,IAE/DyH,KAAK0L,OAAOjR,SAAS,iBAAkB,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,GAAIS,MAAAA,GAEjE,EACAy7I,KAAI,WACGh0I,KAAKgoE,UACRhoE,KAAKoJ,MAAMkmH,OAAOuB,YAEtB,EACAhjD,OAAM,WACJ7tE,KAAKgoE,UAAW,CAClB,EACA7zB,QAAO,WACLn0C,KAAKgoE,UAAW,CAClB,GAEF1/D,SAAU,CACRusH,gBAAe,WACb,OAAQ70H,KAAK0L,OAAOhR,MAAM2X,SAASqH,oCACrC,ICxCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,kHFNzDnZ,EAAAA,EAAAA,IAoCO,OApCPC,GAoCO,EAnCLwD,EAAAA,EAAAA,IAQEwvH,EAAA,CAPA3iF,IAAI,SACH,wBAAuBlwC,EAAAusH,oBACvB,oBAAmBvsH,EAAAk0H,gBACpBx1H,MAAM,qBACLo0H,QAAO9yH,EAAAmzI,YACPjmE,OAAMltE,EAAAktE,OACN15B,QAAOxzC,EAAAwzC,S,oFAEV1zC,EAAAA,EAAAA,GAyBO,QAxBLpB,MAAM,kCACN44D,KAAK,SACJ2gE,SAAU,EACVxmH,MAAOzR,EAAA8L,GAAG,yBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAeH,EAAAqzI,MAAArzI,EAAAqzI,KAAAl6I,MAAA6G,EAAAhE,UAAI,yB,EAEzBqH,EAAAA,EAAAA,IAiBWw3D,EAAA,M,kBAhBT,iBAGE,EAHFx3D,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACLyK,KAAM,CAAC,MAAO,iB,SAEjB9F,EAAAA,EAAAA,IAKE+hD,EAAA,CAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,Q,kBAHInJ,EAAAqnE,aAAQ,SAKnBhkE,EAAAA,EAAAA,IAKE+hD,EAAA,CAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,S,iBAHGnJ,EAAAqnE,Y,+BG7BX3oE,MAAM,iB,sDA+DPA,MAAM,Y,WCvDZgL,GAAAA,GAAAA,IACEg3H,GAAAA,IACAsG,GAAAA,IACA9tE,GAAAA,IACAkU,GAAAA,KAsDF,SAnDsB,CACpBzuE,MAAO,CAAC,SAAU,WAAY,cAC9B2B,WAAY,CACV+4D,aAAAA,GAAAA,GAEF5hE,KAAI,WACF,MAAO,CACLw7I,UAAU,EACVK,sBAAsB,EAE1B,EACAp0I,QAAS,CACPokB,QAAO,YACAjkB,KAAKwhB,OAAOuF,UAAY/mB,KAAKk0I,oBAChCl0I,KAAKm0I,oBAELn0I,KAAKo0I,WAET,EACAA,UAAS,WAAI,IAAA1yI,EAAA,KACN1B,KAAKwhB,OAAOuF,SAGf/mB,KAAK0L,OAAOjR,SAAS,YAAa,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,KAFpDkI,KAAK0L,OAAOjR,SAAS,UAAW,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,KAIpDkI,KAAK4zI,UAAW,EAChB14I,YAAW,WACTwG,EAAKkyI,UAAW,CAClB,GAAG,KACH5zI,KAAKq0I,mBACP,EACAF,kBAAiB,WACfn0I,KAAKi0I,sBAAuB,CAC9B,EACAI,kBAAiB,WACfr0I,KAAKi0I,sBAAuB,CAC9B,GAEF3rI,SAAU,CACRqL,aAAY,WACV,OAAO3T,KAAK0L,OAAOoP,QAAQnH,YAC7B,EACAmI,sBAAqB,WACnB,OAAO9b,KAAK0L,OAAOoP,QAAQgB,sBAAsB,CAAEE,SAAUhc,KAAKwhB,OAAO1pB,IAC3E,EACAo8I,oBAAmB,WACjB,OAAOl0I,KAAK2T,aAAagD,aAC3B,ICtDJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,oHFNzDpW,EAAAA,EAAAA,IA+EM,MA/ENC,GA+EM,CA7EmB,YAAfG,EAAAkjB,YAA2C,WAAfljB,EAAAkjB,YAA2BljB,EAAAqyB,WAAQ,WADvEzyB,EAAAA,EAAAA,IAgCS,U,MA9BPlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,8BACE5oD,EAAA6gB,OAAOuF,UAAY,cAC1B3U,MAAOzR,EAAA8L,GAAG,mBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAAsjB,SAAO,kB,EAEvBjgB,EAAAA,EAAAA,IAwBWw3D,EAAA,CAxBDn8D,MAAM,wBAAsB,C,kBACpC,iBAIE,EAJF2E,EAAAA,EAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,eACNyK,KAAK,UACJ2sD,KAAM91D,EAAAizI,U,iBAGDjzI,EAAA6gB,OAAOuF,WAAQ,WADvB4+B,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,gBACNmqD,UAAU,yBACV1/C,KAAK,Y,eAGEnJ,EAAA6gB,OAAOuF,W,WAKhB4+B,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,aATiB,WADxB67C,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,U,mBAUMnJ,EAAAqyB,WAAQ,WAAzBzyB,EAAAA,EAAAA,IAMO,OAAAskD,GAAA,EALL7gD,EAAAA,EAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,8BACNyK,KAAK,OACJsI,MAAOzR,EAAA8L,GAAG,6B,kCAGflM,EAAAA,EAAAA,IAmBI,K,MAjBFlB,MAAM,8BACNuB,OAAO,SACPq3D,KAAK,SACJ7lD,MAAOzR,EAAA8L,GAAG,mBACV/L,KAAMC,EAAAmb,uB,EAEP9X,EAAAA,EAAAA,IAUWw3D,EAAA,CAVDn8D,MAAM,wBAAsB,C,kBACpC,iBAGE,EAHF2E,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,eACNyK,KAAK,aAEP9F,EAAAA,EAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,S,mBAKFnJ,EAAAgT,aAAa2C,eAAiB3V,EAAA6gB,OAAOwF,WAAa,IAAH,WADxDzmB,EAAAA,EAAAA,IAKO,OALP0kD,IAKOL,EAAAA,EAAAA,IADFjkD,EAAA6gB,OAAOwF,YAAU,iCAEtB2+B,EAAAA,EAAAA,IAWW+V,EAAAA,GAAA,CAXDvuB,GAAG,UAAQ,CAEXxsC,EAAAszI,uBAAoB,WAD5BtuF,EAAAA,EAAAA,IASgBgW,EAAA,C,MAPbvpD,MAAOzR,EAAA8L,GAAG,+BACV,eAAc9L,EAAA8L,GAAG,uCACjB,cAAa9L,EAAA8L,GAAG,uCAChBmvD,WAAUj7D,EAAAyzI,UACVv4E,YAAWl7D,EAAA0zI,mB,mBAEZ,iBAAiC,mBAA9B1zI,EAAA8L,GAAG,0BAAD,G,6QGuFDpN,MAAM,mC,uPChJlBgL,GAAAA,GAAAA,IACE2qE,GAAAA,IACAzqB,GAAAA,IACA+pF,GAAAA,IACAhT,GAAAA,GACA74E,GAAAA,IACA8rF,GAAAA,IACAC,GAAAA,IACAlgB,GAAAA,IACAmgB,GAAAA,IACA9M,GAAAA,IACAz+F,GAAAA,KA0IF,SAvIqB,CACnB5pC,MAAO,CAAC,UACR2B,WAAY,CACV2lE,QAAAA,GAAAA,QACA5M,aAAAA,GAAAA,GAEF5hE,KAAI,WACF,MAAO,CACL4vE,UAAU,EACV0sE,qBAAqB,EACrBtnB,YAAYC,EAAAA,GAAAA,KAEhB,EACAxtH,QAAS,CACPguE,OAAM,WACJ7tE,KAAKgoE,UAAW,CAClB,EACA7zB,QAAO,WACLn0C,KAAKgoE,UAAW,CAClB,EACAj8C,aAAY,WACN/rB,KAAK20I,oBACP30I,KAAK40I,gCAEL50I,KAAK60I,gBAET,EACAA,eAAc,WACZ70I,KAAK0L,OAAOjR,SAAS,eAAgB,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,KACvDkI,KAAK80I,+BACP,EACAF,8BAA6B,WAC3B50I,KAAK00I,qBAAsB,CAC7B,EACAI,8BAA6B,WAC3B90I,KAAK00I,qBAAsB,CAC7B,EACA/nH,UAAS,WAAI,IAAAjrB,EAAA,KACX1B,KAAK0L,OAAOjR,SAAS,YAAauF,KAAKwhB,OAAO1pB,IAC3CL,MAAK,kBAAMiK,EAAKwE,MAAM,YAAY,IAAC,OAC7B,SAAAhH,GAAG,OAAIwC,EAAKwE,MAAM,UAAWhH,EAAIgM,MAAMA,MAAM,GACxD,EACA4hB,YAAW,WAAI,IAAAnkB,EAAA,KACb3I,KAAK0L,OAAOjR,SAAS,cAAeuF,KAAKwhB,OAAO1pB,IAC7CL,MAAK,kBAAMkR,EAAKzC,MAAM,YAAY,IAAC,OAC7B,SAAAhH,GAAG,OAAIyJ,EAAKzC,MAAM,UAAWhH,EAAIgM,MAAMA,MAAM,GACxD,EACA+hB,iBAAgB,WAAI,IAAAjkB,EAAA,KAClBhJ,KAAK0L,OAAOjR,SAAS,mBAAoBuF,KAAKwhB,OAAO1pB,IAClDL,MAAK,kBAAMuR,EAAK9C,MAAM,YAAY,IAAC,OAC7B,SAAAhH,GAAG,OAAI8J,EAAK9C,MAAM,UAAWhH,EAAIgM,MAAMA,MAAM,GACxD,EACAiiB,mBAAkB,WAAI,IAAA5jB,EAAA,KACpBvJ,KAAK0L,OAAOjR,SAAS,qBAAsBuF,KAAKwhB,OAAO1pB,IACpDL,MAAK,kBAAM8R,EAAKrD,MAAM,YAAY,IAAC,OAC7B,SAAAhH,GAAG,OAAIqK,EAAKrD,MAAM,UAAWhH,EAAIgM,MAAMA,MAAM,GACxD,EACA6pI,SAAQ,WAAI,IAAAxqE,EAAA,KACV3yC,UAAUo9G,UAAUC,UAAUj1I,KAAKk1I,YAChCz9I,MAAK,kBAAM8yE,EAAKrkE,MAAM,YAAY,IAAC,OAC7B,SAAAhH,GAAG,OAAIqrE,EAAKrkE,MAAM,UAAWhH,EAAIgM,MAAMA,MAAM,GACxD,EACAwiB,eAAc,WAAI,IAAA29C,EAAA,KAChBrrE,KAAK0L,OAAOjR,SAAS,WAAY,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,KAChDL,MAAK,kBAAM4zE,EAAKnlE,MAAM,YAAY,IAAC,OAC7B,SAAAhH,GAAG,OAAImsE,EAAKnlE,MAAM,UAAWhH,EAAIgM,MAAMA,MAAM,GACxD,EACA2iB,iBAAgB,WAAI,IAAAy9C,EAAA,KAClBtrE,KAAK0L,OAAOjR,SAAS,aAAc,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,KAClDL,MAAK,kBAAM6zE,EAAKplE,MAAM,YAAY,IAAC,OAC7B,SAAAhH,GAAG,OAAIosE,EAAKplE,MAAM,UAAWhH,EAAIgM,MAAMA,MAAM,GACxD,EACAiqI,aAAY,WACVn1I,KAAK0L,OAAOjR,SAAS,yBAA0B,CAAEwkB,OAAQjf,KAAKwhB,OAAOxlB,KAAKlE,GAAI2/C,UAAW,CAACz3C,KAAKwhB,OAAO1pB,KACxG,EACA4mE,WAAU,WAAI,IAAA+M,EAAA,KACZzrE,KAAK0L,OAAOjR,SAAS,oBAAqB,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,KACzDL,MAAK,SAAAW,GAAI,OAAIqzE,EAAK//D,OAAOjR,SAAS,sBAAuB,CACxDuhB,SAAUyvD,EAAKjqD,OAAO1pB,GACtBsyI,QAAShyI,EAAKo2G,aACdn7E,WAAYj7B,EAAK+F,KACjBosI,kBAAmB9+D,EAAKjqD,OAAOmG,KAC/B8iH,WAAYh/D,EAAKjqD,OAAOgJ,KACxBggH,aAAWzwI,EAAAA,GAAAA,GAAM0xE,EAAKjqD,OAAOH,aAC7BwC,WAAY4nD,EAAKjqD,OAAOqC,WACxBymH,kBAAmBlyI,EAAKq2G,cACxB,GACN,EACA2mC,kBAAiB,WACf,IAAM3zC,E,wWAAcvoG,CAAA,GAAQ8G,KAAKwhB,QACT,CAAC,cAAe,aAAc,SAAU,OAAQ,WAAY,OAAQ,OAAQ,UAAW,oBAC/FlG,SAAQ,SAAA+5H,GAAC,cAAW5zC,EAAe4zC,EAAE,IACrDr1I,KAAK0L,OAAOjR,SAAS,yBAA0BgnG,EACjD,GAEFn5F,SAAU,CACRuL,YAAW,WAAM,OAAO7T,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WAAY,EAC5DyhI,UAAS,WACP,GAAKt1I,KAAK6T,YACV,OAAO7T,KAAK6T,YAAYwsC,WAAWvkD,SAAS,oBAAsBkE,KAAKwhB,OAAOxlB,KAAKlE,KAAOkI,KAAK6T,YAAY/b,EAC7G,EACAy9I,UAAS,WACP,OAAOv1I,KAAKwhB,OAAOxlB,KAAKlE,KAAOkI,KAAK6T,YAAY/b,EAClD,EACA09I,OAAM,WACJ,OAAOx1I,KAAKu1I,YAAyC,WAA3Bv1I,KAAKwhB,OAAOqC,YAAsD,aAA3B7jB,KAAKwhB,OAAOqC,WAC/E,EACA4xH,QAAO,WACL,QAASz1I,KAAK6T,WAChB,EACA6hI,YAAW,WACT,QAAS11I,KAAK6T,WAChB,EACAqhI,WAAU,WACR,MAAO,GAAP77I,OAAU2G,KAAK0L,OAAOhR,MAAM2X,SAAS6C,QAAM7b,OAAG2G,KAAKI,QAAQ5I,QAAQ,CAAEwC,KAAM,eAAgBkoC,OAAQ,CAAEpqC,GAAIkI,KAAKwhB,OAAO1pB,MAAQ4I,KAC/H,EACAi1I,SAAQ,WACN,OAAiC,OAA1B31I,KAAKwhB,OAAOstF,SACrB,EACA9sC,iBAAgB,WAAM,OAAOhiE,KAAK0L,OAAOhR,MAAM2X,SAAS2vD,gBAAiB,EACzE2yE,oBAAmB,WACjB,OAAO30I,KAAK0L,OAAOoP,QAAQnH,aAAaoD,aAC1C,EACAotH,aAAY,WACV,MAAO,CACL/xH,MAAOpS,KAAKyM,GAAG,uBACf3U,GAAI,iBAAFuB,OAAmB2G,KAAKotH,YAC1B,gBAAiB,cAAF/zH,OAAgB2G,KAAKotH,YACpC,gBAAiBptH,KAAKgoE,SACtB,gBAAiB,OAErB,IC5JJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,yIFNzDriB,EAAAA,EAAAA,IAoMU0hB,EAAA,CAnMRhoE,MAAM,eACNioE,QAAQ,QACP,gBAAe3mE,EAAAwjI,aAChBttD,UAAU,MACT1mD,OAAQ,CAAAhkB,EAAA,GACR,WAAU,CAAA8lC,EAAA,aACX,oBACC47B,OAAMltE,EAAAktE,OACN15B,QAAOxzC,EAAAwzC,S,CAEGx0C,SAAO0+D,EAAAA,EAAAA,KAChB,SAAA7jE,GAAA,IADmByrC,EAAKzrC,EAALyrC,MAAK,QACxBxlC,EAAAA,EAAAA,GAoJM,OAnJJpB,MAAM,gBACN44D,KAAK,OACJngE,GAAE,cAAAuB,OAAgBsH,EAAAysH,a,CAGXzsH,EAAA80I,UAAY90I,EAAA6gB,OAAOqF,eAAY,WADvCtmB,EAAAA,EAAAA,IAUS,U,MARPlB,MAAM,kDACN44D,KAAK,WACJn4D,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAssB,kBAAAtsB,EAAAssB,iBAAAnzB,MAAA6G,EAAAhE,UAAgB,kB,EAEhCqH,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,eACLrJ,EAAAA,EAAAA,GAAiD,aAAAmkD,EAAAA,EAAAA,IAAxCjkD,EAAA8L,GAAG,6BAAD,sBAGP9L,EAAA80I,SAAW90I,EAAA6gB,OAAOqF,eAAY,WADtCtmB,EAAAA,EAAAA,IAUS,U,MARPlB,MAAM,kDACN44D,KAAK,WACJn4D,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAwsB,oBAAAxsB,EAAAwsB,mBAAArzB,MAAA6G,EAAAhE,UAAkB,kB,EAElCqH,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,eACLrJ,EAAAA,EAAAA,GAAmD,aAAAmkD,EAAAA,EAAAA,IAA1CjkD,EAAA8L,GAAG,+BAAD,uBAGN9L,EAAA6gB,OAAO2a,QAAUx7B,EAAA60I,SAAM,WADhCj1I,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,kDACN44D,KAAK,WACJn4D,QAAK,kC,OAAUa,EAAAgsB,WAAAhsB,EAAAgsB,UAAA7yB,MAAA6G,EAAAhE,UAAS,iBACjBspC,I,EAERjiC,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,eACLrJ,EAAAA,EAAAA,GAAmC,aAAAmkD,EAAAA,EAAAA,IAA1BjkD,EAAA8L,GAAG,eAAD,2BAGP9L,EAAA6gB,OAAO2a,QAAUx7B,EAAA60I,SAAM,WAD/Bj1I,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,kDACN44D,KAAK,WACJn4D,QAAK,kC,OAAUa,EAAAmsB,aAAAnsB,EAAAmsB,YAAAhzB,MAAA6G,EAAAhE,UAAW,iBACnBspC,I,EAERjiC,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,eACLrJ,EAAAA,EAAAA,GAAqC,aAAAmkD,EAAAA,EAAAA,IAA5BjkD,EAAA8L,GAAG,iBAAD,2BAEC9L,EAAA+0I,cAAW,WAA3Bn1I,EAAAA,EAAAA,IAyBWwkD,EAAAA,GAAA,CAAAt8C,IAAA,IAvBA9H,EAAA6gB,OAAO4F,YASD,iBATW,WAD1B7mB,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,kDACN44D,KAAK,WACJn4D,QAAK,kC,OAAUa,EAAA+sB,gBAAA/sB,EAAA+sB,eAAA5zB,MAAA6G,EAAAhE,UAAc,iBACtBspC,I,EAERjiC,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACCj8C,KAAM,CAAC,MAAO,eACfrJ,EAAAA,EAAAA,GAAwC,aAAAmkD,EAAAA,EAAAA,IAA/BjkD,EAAA8L,GAAG,oBAAD,WAGP9L,EAAA6gB,OAAO4F,aAAU,WADzB7mB,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,kDACN44D,KAAK,WACJn4D,QAAK,kC,OAAUa,EAAAktB,kBAAAltB,EAAAktB,iBAAA/zB,MAAA6G,EAAAhE,UAAgB,iBACxBspC,I,EAERjiC,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,cACLrJ,EAAAA,EAAAA,GAA0C,aAAAmkD,EAAAA,EAAAA,IAAjCjkD,EAAA8L,GAAG,sBAAD,iDAIT9L,EAAA40I,WAAa50I,EAAAqhE,mBAAgB,WADrCzhE,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,kDACN44D,KAAK,WACJn4D,QAAK,kC,OAAUa,EAAA+9D,YAAA/9D,EAAA+9D,WAAA5kE,MAAA6G,EAAAhE,UAAU,iBAClBspC,I,EAERjiC,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,SACLrJ,EAAAA,EAAAA,GAAoC,aAAAmkD,EAAAA,EAAAA,IAA3BjkD,EAAA8L,GAAG,gBAAD,2BAGP9L,EAAAg1I,UAAYh1I,EAAAqhE,mBAAgB,WADpCzhE,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,kDACN44D,KAAK,WACJn4D,QAAK,kC,OAAUa,EAAAy0I,mBAAAz0I,EAAAy0I,kBAAAt7I,MAAA6G,EAAAhE,UAAiB,iBACzBspC,I,EAERjiC,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,aACLrJ,EAAAA,EAAAA,GAA8C,aAAAmkD,EAAAA,EAAAA,IAArCjkD,EAAA8L,GAAG,0BAAD,2BAGP9L,EAAA20I,YAAS,WADjB/0I,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,kDACN44D,KAAK,WACJn4D,QAAK,kC,OAAUa,EAAAorB,cAAAprB,EAAAorB,aAAAjyB,MAAA6G,EAAAhE,UAAY,iBACpBspC,I,EAERjiC,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,WACLrJ,EAAAA,EAAAA,GAAsC,aAAAmkD,EAAAA,EAAAA,IAA7BjkD,EAAA8L,GAAG,kBAAD,4BAEfhM,EAAAA,EAAAA,GAUS,UATPpB,MAAM,kDACN44D,KAAK,WACJn4D,QAAK,kC,OAAUa,EAAAo0I,UAAAp0I,EAAAo0I,SAAAj7I,MAAA6G,EAAAhE,UAAQ,iBAChBspC,I,EAERjiC,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,eACLrJ,EAAAA,EAAAA,GAAyC,aAAAmkD,EAAAA,EAAAA,IAAhCjkD,EAAA8L,GAAG,qBAAD,UAGN9L,EAAA6gB,OAAO87C,UAUD,iBAVS,WADxB/8D,EAAAA,EAAAA,IAYI,K,MAVFlB,MAAM,kDACN44D,KAAK,WACL7lD,MAAM,SACL1R,KAAMC,EAAA6gB,OAAOouF,aACdhvG,OAAO,U,EAEPoD,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACAj8C,KAAK,uBACLrJ,EAAAA,EAAAA,GAA+C,aAAAmkD,EAAAA,EAAAA,IAAtCjkD,EAAA8L,GAAG,2BAAD,YAEfhM,EAAAA,EAAAA,GAUS,UATPpB,MAAM,kDACN44D,KAAK,WACJn4D,QAAK,oC,OAAUa,EAAAw0I,cAAAx0I,EAAAw0I,aAAAr7I,MAAA6G,EAAAhE,UAAY,iBACpBspC,I,EAERjiC,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA,iBACCj8C,KAAM,CAAC,MAAO,WACfrJ,EAAAA,EAAAA,GAAyC,aAAAmkD,EAAAA,EAAAA,IAAhCjkD,EAAA8L,GAAG,qBAAD,iB,IAIR66D,SAAOjJ,EAAAA,EAAAA,KAChB,iBAmBO,EAnBP59D,EAAAA,EAAAA,GAmBO,OAnBPglD,GAmBO,EAlBLzhD,EAAAA,EAAAA,IAiBWw3D,EAAA,CAjBDn8D,MAAM,wBAAsB,C,kBACpC,iBAGE,EAHF2E,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,eACNyK,KAAK,gB,SAEP9F,EAAAA,EAAAA,IAKE+hD,EAAA,CAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,Q,kBAHInJ,EAAAqnE,aAAQ,SAKnBhkE,EAAAA,EAAAA,IAKE+hD,EAAA,CAHA1mD,MAAM,eACNmqD,UAAU,yBACV1/C,KAAK,S,iBAHGnJ,EAAAqnE,Y,yBAOdriB,EAAAA,EAAAA,IAWW+V,EAAAA,GAAA,CAXDvuB,GAAG,UAAQ,CAEXxsC,EAAA+zI,sBAAmB,WAD3B/uF,EAAAA,EAAAA,IASeiwF,EAAA,C,MAPZxjI,MAAOzR,EAAA8L,GAAG,+BACV,cAAa9L,EAAA8L,GAAG,uCAChB,eAAc9L,EAAA8L,GAAG,uCACjBovD,YAAWl7D,EAAAm0I,8BACXl5E,WAAUj7D,EAAAk0I,gB,mBAEX,iBAAiC,mBAA9Bl0I,EAAA8L,GAAG,0BAAD,G,4OG5KPpN,MAAM,mC,UAMNA,MAAM,6B,uBCtBdgL,GAAAA,GAAAA,IACEC,GAAAA,KA4CF,SAzCsB,CACpBtQ,KAAM,gBACNsF,MAAO,CACL,YAEFlH,KAAI,WACF,MAAO,CACL8S,OAAO,EAEX,EACA5C,SAAU,CACRkZ,OAAM,WACJ,OAAOoC,KAAK5jB,KAAK0L,OAAOhR,MAAMwkB,SAASkB,YAAa,CAAEtoB,GAAIkI,KAAKgc,UACjE,GAEF/a,WAAY,CACV67D,QAAQkD,EAAAA,EAAAA,KAAqB,kBAAM,uCAA8B,IACjE4G,SAAS5G,EAAAA,EAAAA,KAAqB,kBAAM,uCAAgC,KAEtEngE,QAAS,CACPg2I,MAAK,WAAI,IAAAn0I,EAAA,KACP,IAAK1B,KAAKwhB,OAAQ,CAChB,IAAKxhB,KAAKgc,SAER,YADAhc,KAAKkL,OAAQ,GAGflL,KAAK0L,OAAOjR,SAAS,cAAeuF,KAAKgc,UACtCvkB,MAAK,SAAAW,GAAI,OAAKsJ,EAAKwJ,OAAQ,CAAK,IAAE,OAC5B,SAAAxT,GAAC,OAAKgK,EAAKwJ,OAAQ,CAAI,GAClC,CACF,GAEF0iD,MAAO,CACLpsC,OAAM,SAAEgF,EAAWsvH,GAAW,IAAAntI,EAAA,KACxB6d,IAAcsvH,GAChB91I,KAAKuuD,WAAU,kBAAM5lD,EAAKS,MAAM2yG,QAAQkX,cAAc,GAE1D,ICrCJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,4GFNzDttE,EAAAA,EAAAA,IAmCU0hB,EAAA,CAlCRx2B,IAAI,UACJy2B,QAAQ,QACP,iBAAe,EAChB,gBAAc,iCACb,WAAU,CAAAr1B,EAAA,aACV47B,OAAMltE,EAAAk1I,O,CAEIvuE,SAAOjJ,EAAAA,EAAAA,KAChB,iBAAQ,EAAR/V,EAAAA,EAAAA,IAAQ3nD,EAAAkI,OAAA,W,IAEClJ,SAAO0+D,EAAAA,EAAAA,KAChB,iBAKE,CAJM19D,EAAA6gB,SAAM,WADdmkC,EAAAA,EAAAA,IAKE2Y,EAAA,C,MAHC,cAAY,EACZE,UAAW79D,EAAA6gB,OACX+yD,SAAS,G,uBAGC5zE,EAAAuK,QAAK,WADlB3K,EAAAA,EAAAA,IAKM,MALNC,IAKMokD,EAAAA,EAAAA,IADDjkD,EAAA8L,GAAG,8BAAD,iBAEPlM,EAAAA,EAAAA,IASM,MATNokD,GASM,EALJ3gD,EAAAA,EAAAA,IAIE+hD,EAAA,CAHAj8C,KAAK,eACL2sD,KAAA,GACAnQ,KAAK,U,+CGtBJjnD,MAAM,qB,IAYAA,MAAM,mB,IASHA,MAAM,yB,YCxB1BgL,GAAAA,GAAAA,IACEC,GAAAA,KAqBF,SAlBwB,CACtBtQ,KAAM,kBACNsF,MAAO,CACL,SAEF2B,WAAY,CACVwwE,YAAAA,GAAAA,EACAq8C,uBAAAA,GAAAA,EACAlnD,SAAS5G,EAAAA,EAAAA,KAAqB,kBAAM,uCAAgC,IACpEwR,YAAYxR,EAAAA,EAAAA,KAAqB,kBAAM,uCAAwC,KAEjF13D,SAAU,CACRytI,YAAW,WACT,OAAO/1I,KAAKjE,MAAMG,MAAM,EAAG,GAC7B,IChBJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,+KFNzDypD,EAAAA,EAAAA,IA2CU0hB,EAAA,CA1CRC,QAAQ,QACRuP,UAAU,MACT1mD,OAAQ,CAAAhkB,EAAA,I,CAEEm7D,SAAOjJ,EAAAA,EAAAA,KAChB,iBAAQ,EAAR/V,EAAAA,EAAAA,IAAQ3nD,EAAAkI,OAAA,W,IAEClJ,SAAO0+D,EAAAA,EAAAA,KAChB,iBAgCM,EAhCN59D,EAAAA,EAAAA,GAgCM,MAhCND,GAgCM,CA/BYG,EAAA5E,MAAMtC,SAAM,aAC1B8G,EAAAA,EAAAA,IAqBMwkD,EAAAA,GAAA,CAAAt8C,IAAA,IAAA0hD,EAAAA,EAAAA,IApBaxpD,EAAAo1I,aAAW,SAApB/5I,G,kBADVuE,EAAAA,EAAAA,IAqBM,OAnBHkI,IAAKzM,EAAKlE,GACXuH,MAAM,iB,EAEN2E,EAAAA,EAAAA,IAIE+tE,EAAA,CAHC/1E,KAAMA,EACPqD,MAAM,eACLk1E,SAAS,G,kBAEZ9zE,EAAAA,EAAAA,GAUM,MAVNkkD,GAUM,EARJ3gD,EAAAA,EAAAA,IAKEguE,EAAA,CAJA3yE,MAAM,WACL+S,MAAK,IAAMpW,EAAKK,eAChB+E,KAAMpF,EAAK41E,UACXr5E,MAAOyD,EAAKzD,O,kCAGfkI,EAAAA,EAAAA,GAAoE,OAApEokD,IAAoED,EAAAA,EAAAA,IAA7B5oD,EAAKK,gBAAc,IAAU2H,EAAAA,EAAAA,IAAuC0vH,EAAA,CAAd13H,KAAMA,GAAI,oB,uBAK3G2pD,EAAAA,EAAAA,IAIEI,EAAA,C,MAHAj8C,KAAK,eACL2sD,KAAA,GACAnQ,KAAK,U,sBGtCVjnD,MAAM,kB,IAiBHA,MAAM,kB,qBAUJA,MAAM,yC,IA8BJA,MAAM,yB,mCCjDpBgL,GAAAA,GAAAA,IACEs9H,GAAAA,IACA9tE,GAAAA,IACAkU,GAAAA,KAmFF,SA9EuB,CACrB/zE,KAAM,iBACNiH,WAAY,CACVuwE,WAAAA,GAAAA,QACAwkE,gBAAAA,IAEF12I,MAAO,CAAC,UACRlH,KAAM,iBAAO,CACXm7I,SAAS,EACV,EACDjrI,SAAU,CACR2tI,iBAAgB,WACd,OAAOj2I,KAAKwhB,OAAOkI,gBAAgBjwB,OAdL,EAehC,EACAgwB,eAAc,WACZ,OAAOzpB,KAAKuzI,QACRvzI,KAAKwhB,OAAOkI,gBACZ1pB,KAAKwhB,OAAOkI,gBAAgBxtB,MAAM,EAnBR,GAoBhC,EACAg6I,eAAc,WACZ,MAAO,IAAP78I,OAAW2G,KAAKwhB,OAAOkI,gBAAgBjwB,OAtBT,GAuBhC,EACA08I,iBAAgB,WACd,OAAOn2I,KAAKwhB,OAAOkI,gBAAgB5U,QAAO,SAACC,EAAK+U,GAE9C,OADA/U,EAAI+U,EAAS9vB,MAAQ8vB,EAASE,UAAY,GACnCjV,CACT,GAAG,CAAC,EACN,EACAie,SAAQ,WACN,QAAShzB,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACnC,EACAiI,sBAAqB,WACnB,OAAO9b,KAAK0L,OAAOoP,QAAQgB,sBAAsB,CAAEE,SAAUhc,KAAKwhB,OAAO1pB,IAC3E,GAEF+H,QAAS,CACPu2I,cAAa,WACXp2I,KAAKuzI,SAAWvzI,KAAKuzI,OACvB,EACA8C,YAAW,SAAE99I,GACX,OAAOyH,KAAKwhB,OAAOkI,gBAAgBT,MAAK,SAAAoB,GAAC,OAAIA,EAAErwB,OAASzB,CAAK,IAAE2xB,EACjE,EACMosH,+BAA8B,WAAI,IAAA50I,EAAA,YAAApG,EAAAA,GAAAA,GAAAC,KAAAA,MAAA,SAAAC,IAAA,OAAAD,KAAAA,MAAA,SAAAG,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACkC,IAAlD8F,EAAK8f,OAAOkI,gBAAgBT,MAAK,SAAAoB,GAAC,OAAKA,EAAEL,QAAQ,IACpD,CAAFtuB,EAAAE,KAAA,eAAAF,EAAAE,KAAA,EACF8F,EAAKgK,OAAOjR,SAAS,wBAAyBiH,EAAK8f,OAAO1pB,IAAG,cAAA4D,EAAAG,OAAA,SAAAH,EAAA4T,MAAA,wBAAA5T,EAAAe,OAAA,GAAAjB,EAAA,IAHtCF,EAKxC,EACAi7I,UAAS,SAAEh+I,GACTyH,KAAK0L,OAAOjR,SAAS,iBAAkB,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,GAAIS,MAAAA,GAC/D,EACAi+I,QAAO,SAAEj+I,GACPyH,KAAK0L,OAAOjR,SAAS,mBAAoB,CAAE3C,GAAIkI,KAAKwhB,OAAO1pB,GAAIS,MAAAA,GACjE,EACMk+I,aAAY,SAAEl+I,EAAO0N,GAAO,IAAA0C,EAAA,YAAArN,EAAAA,GAAAA,GAAAC,KAAAA,MAAA,SAAAqhB,IAAA,OAAArhB,KAAAA,MAAA,SAAAshB,GAAA,cAAAA,EAAAlhB,KAAAkhB,EAAAjhB,MAAA,UAC3B+M,EAAKqqB,SAAU,CAAFnW,EAAAjhB,KAAA,eAAAihB,EAAAhhB,OAAA,wBAAAghB,EAAAjhB,KAAA,EAEZ+M,EAAK2tI,iCAAgC,OACvC3tI,EAAK0tI,YAAY99I,GACnBoQ,EAAK6tI,QAAQj+I,GAEboQ,EAAK4tI,UAAUh+I,GAChB,wBAAAskB,EAAApgB,OAAA,GAAAmgB,EAAA,IAR+BthB,EASlC,EACAo7I,oBAAmB,SAAE5sH,GACnB,MAAO,CACLzqB,MAAO,CACL,MACA,iBACA,8BACA,CAAE,mBAAoBW,KAAKq2I,YAAYvsH,EAAS9vB,QAElD,aAAcgG,KAAKu2D,IAAI,8BAA+BzsC,EAASC,MAAO,CAAE6iC,IAAK9iC,EAASC,QAE1F,IClFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,sHFNzDxpB,EAAAA,EAAAA,IAoEM,MApENC,GAoEM,gBAnEJD,EAAAA,EAAAA,IA0DOwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IAzDgBxpD,EAAA8oB,gBAAc,SAA3BK,G,kBADVvpB,EAAAA,EAAAA,IA0DO,QAxDJkI,IAAKqhB,EAASvqB,KAAOuqB,EAAS9vB,KAC/BqF,MAAM,sC,cAENsmD,EAAAA,EAAAA,KA4CYwD,EAAAA,EAAAA,IA3CLxoD,EAAAqyB,SAAW,SAAW,MAD7BruB,EAAAA,EAAAA,IAEWhE,EAAAqyB,SAAwC,GAA7B,CAAHtyB,KAAWC,EAAAmb,uBAAqB,CACjDm8C,KAAK,SACL54D,MAAK,CAAC,oCAAmC,oBACXsB,EAAA01I,YAAYvsH,EAAS9vB,QAClDoY,MAAO0X,EAASvqB,IAAMuqB,EAAS9vB,UAAOuI,EACtC,eAAc5B,EAAA01I,YAAYvsH,EAAS9vB,MACnC8F,QAAK,SAAAolD,GAAA,OAAEvkD,EAAA81I,aAAa3sH,EAAS9vB,KAAMkrD,EAAM,I,mBAE1C,iBAaO,EAbPzkD,EAAAA,EAAAA,GAaO,OAbPkkD,GAaO,CATG76B,EAASvqB,MAAG,WADpBgB,EAAAA,EAAAA,IAKC,O,MAHEytD,IAAKlkC,EAASvqB,IACfF,MAAM,yBACNoU,MAAM,O,yBAERlT,EAAAA,EAAAA,IAG2B,OAH3BykD,IAG2BJ,EAAAA,EAAAA,IAAvB96B,EAAS9vB,MAAI,OAEnBgK,EAAAA,EAAAA,IAmBWw3D,EAAA,M,kBAlBT,iBAKE,CAJM76D,EAAA01I,YAAYvsH,EAAS9vB,QAAI,WADjC2rD,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,gBACNmqD,UAAU,gBACV1/C,KAAK,Y,eAGEnJ,EAAA01I,YAAYvsH,EAAS9vB,Q,WAK9B2rD,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,eACNmqD,UAAU,gBACV1/C,KAAK,aAT2B,WADlC67C,EAAAA,EAAAA,IAKEI,EAAA,C,MAHA1mD,MAAM,eACNmqD,UAAU,gBACV1/C,KAAK,U,2EAUX9F,EAAAA,EAAAA,IAOkB2yI,EAAA,CANf56I,MAAO4E,EAAAw1I,iBAAiBrsH,EAAS9vB,MAClCqF,MAAM,yBACL,gBAAesB,EAAA+1I,oBAAoB5sH,GACnC+jD,OAAIhtE,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAA21I,gCAA8B,I,mBAErC,iBAA+D,EAA/D71I,EAAAA,EAAAA,GAA+D,OAA/DwkD,IAA+DL,EAAAA,EAAAA,IAAxB96B,EAASC,OAAK,G,oDAIjDppB,EAAAs1I,mBAAgB,WADxB11I,EAAAA,EAAAA,IAOI,K,MALFlB,MAAM,8BACNqB,KAAK,qBACJZ,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAy1I,eAAAz1I,EAAAy1I,cAAAt8I,MAAA6G,EAAAhE,UAAa,K,QAElBgE,EAAA4yI,QAAU5yI,EAAA8L,GAAG,qBAAuB9L,EAAAu1I,gBAAc,qB,0pBGvB3D7rI,GAAAA,GAAAA,IACEmgD,GAAAA,IACAF,GAAAA,IACAkoF,GAAAA,IACAC,GAAAA,IACAvpG,GAAAA,IACAm4F,GAAAA,IACAqS,GAAAA,IACAkD,GAAAA,IACAxV,GAAAA,IACAtU,GAAAA,IACA93C,GAAAA,IACAssD,GAAAA,GACAuV,GAAAA,IACApuF,GAAAA,IACAwC,GAAAA,IACAD,GAAAA,IACA2Y,GAAAA,KAGF,IAEwC7sE,GAFlCggJ,GAAY,SAAA98I,GAAI,OAAIA,EAAK45G,OAAO,GAAGsV,cAAgBlvH,EAAKkC,MAAM,EAAE,EAwBhE66I,GAA8B,SAAC91H,EAAKjnB,EAAM6kE,GAC9C,IAAMm4E,EAAYF,GAAU98I,GACtBo3B,EAAM,gBAAH/3B,OAAmB29I,GACtBC,EAAmB,eAAH59I,OAAkB29I,GACpC/1H,EAAImQ,GACNnQ,EAAImQ,GAAKytC,GAET59C,EAAIg2H,GAAoBp4E,CAE5B,EAwaA,SAtae,CACb7kE,KAAM,SACNiH,WAAY,CACVi2I,YAAAA,GACAC,eAAAA,GACAC,YAAAA,GACAC,cAAAA,GACAC,aAAAA,GACAvwF,eAAAA,GAAAA,EACAyqB,WAAAA,GAAAA,QACAS,WAAAA,GAAAA,EACAC,QAAAA,GAAAA,EACAqlE,cAAAA,GACAvB,gBAAAA,GACAwB,eAAAA,GACAriE,cAAAA,GAAAA,EACA1D,YAAAA,GAAAA,EACA+uD,YAAAA,GAAAA,EACAt/H,aAAAA,GAAAA,EACAwwE,YAAAA,GAAAA,QACA1U,SAAAA,GAAAA,GAEF19D,MAAO,CACL,YACA,aACA,iBACA,UACA,YACA,UACA,UACA,YACA,YACA,iBACA,aACA,YACA,gBACA,UAEA,aACA,gCACA,gCACA,2BAEA,wBACA,8BACA,6BACA,mCACA,+BACA,qCACA,qBACA,2BACA,yBACA,4BACA,QAEFlH,KAAI,WACF,MAAO,CACLq/I,sBAAsB,EACtB9V,SAAS,EACT+V,cAAc,EACdC,yBAA0B,GAC1B7yE,aAAa,EACb55D,MAAO,KACP0sI,cAAe,KACfC,cAAe73I,KAAK83I,QAExB,EACAxvI,SAAQpP,GAAAA,GAAA,IApG8BpC,GAqGD,CAAC,WAAY,gBArGJA,GAAKge,QAAO,SAACV,EAAKpa,GAChE,IAAMg9I,EAAYF,GAAU98I,GACtB+9I,EAAS,mBAAH1+I,OAAsB29I,GAC5BgB,EAAiB,aAAH3+I,OAAgB29I,GAC9BC,EAAmB,eAAH59I,OAAkB29I,GAIxC,OAHA5iI,EAAIpa,GAAQ,WACV,YAAgCuI,IAAvBvC,KAAKmyI,MAAM4F,SAAiDx1I,IAAxBvC,KAAKyL,OAAOssI,KAA0B/3I,KAAK+3I,GAAkC/3I,KAAKi3I,GAA5Bj3I,KAAKg4I,EAC1G,EACO5jI,CACT,GAAG,CAAC,KA4FgE,IAChE8kF,UAAS,WACP,OAAOl5F,KAAK2T,aAAaulF,SAC3B,EACA++C,sBAAqB,WACnB,OACEj4I,KAAKwhB,OAAOqF,cACT7mB,KAAKwhB,OAAOmf,QAAU3gC,KAAKwhB,OAAOmf,OAAO9Z,gBACxC7mB,KAAKk4I,cACb,EACAC,cAAa,WACX,IAAMn8I,EAAOgE,KAAKw+D,UAAUxiE,KAC5B,OAAO4rH,EAAAA,GAAAA,GAAe5rH,EACxB,EACAgmI,UAAS,WACP,IAAMhmI,EAAOgE,KAAKikB,QAAWjkB,KAAKw+D,UAAUr6C,iBAAiBnoB,KAAQgE,KAAKw+D,UAAUxiE,KACpF,OAAO4rH,EAAAA,GAAAA,GAAe5rH,EACxB,EACAylB,QAAO,WACL,OAAOzhB,KAAKw+D,UAAU/8C,OACxB,EACA22H,cAAa,WACX,IAAMp8I,EAAOgE,KAAKw+D,UAAUxiE,KACtBygC,EAAYz8B,KAAK2T,aAAa8oB,UACpC,OAAO2qF,EAAAA,GAAAA,GAAe3qF,EAAUzgC,EAAKC,aACvC,EACAgmI,UAAS,WACP,IAAIjiI,KAAKgjI,UAAT,CACA,IAAMhnI,EAAOgE,KAAKikB,QAAWjkB,KAAKw+D,UAAUr6C,iBAAiBnoB,KAAQgE,KAAKw+D,UAAUxiE,KAC9EygC,EAAYz8B,KAAK2T,aAAa8oB,UACpC,OAAO2qF,EAAAA,GAAAA,GAAe3qF,EAAUzgC,EAAKC,aAHX,CAI5B,EACAyxD,gBAAe,WACb,OAAO1tD,KAAKihI,wBAAwBjhI,KAAKwhB,OAAOxlB,KAAKlE,GAAIkI,KAAKwhB,OAAOxlB,KAAKC,YAC5E,EACAo8I,iBAAgB,WACd,GAAIr4I,KAAKs4I,QAAS,CAChB,IAAMt8I,EAAOgE,KAAK0L,OAAOoP,QAAQgiB,SAAS98B,KAAKwhB,OAAOguF,qBAEtD,OAAOxzG,EAAOA,EAAKgJ,sBAAwB,WAC7C,CACF,EACAif,QAAO,WAAM,QAASjkB,KAAKw+D,UAAUr6C,gBAAiB,EACtDo0H,cAAa,WAAM,OAAOv4I,KAAKw+D,UAAUxiE,IAAK,EAC9Cw8I,UAAS,WAAM,OAAOx4I,KAAKw+D,UAAUxiE,KAAKhC,MAAQgG,KAAKw+D,UAAUxiE,KAAKK,cAAe,EACrFo8I,cAAa,WAAM,OAAOz4I,KAAKw+D,UAAUxiE,KAAKhC,IAAK,EACnD0+I,qBAAoB,WAAM,OAAO14I,KAAKihI,wBAAwBjhI,KAAKw+D,UAAUxiE,KAAKlE,GAAIkI,KAAKw+D,UAAUxiE,KAAKC,YAAa,EACvHulB,OAAM,WACJ,OAAIxhB,KAAKikB,QACAjkB,KAAKw+D,UAAUr6C,iBAEfnkB,KAAKw+D,SAEhB,EACAm6E,2BAA0B,WAExB,OAAO34I,KAAK0L,OAAOhR,MAAMwkB,SAASmB,kBAAkBrgB,KAAKwhB,OAAO1pB,GAClE,EACAk7B,SAAQ,WACN,QAAShzB,KAAK6T,WAChB,EACAsgG,aAAY,WACV,OAAOA,EAAAA,GAAAA,GAAan0G,KAAKwhB,OAAQxhB,KAAKk5F,UACxC,EACA0/C,YAAW,WACT,OAAO54I,KAAKw+D,UAAUxiE,KAAK6wG,GAC7B,EACAgsC,UAAS,WACP,OAAO74I,KAAKwhB,OAAOxlB,KAAK6wG,GAC1B,EACAw1B,aAAY,WACV,OAAOriI,KAAK64I,YAAc74I,KAAKuW,iBACjC,EACAuiI,eAAc,WACZ,OAAO94I,KAAK44I,cAAgB54I,KAAKuW,iBACnC,EACAwiI,aAAY,WAAI,IAAAr3I,EAAA,KACd,IAAK1B,KAAK43I,cAAe,MAAO,GAChC,IAAMoB,EAAa,IAAIv2I,IAAIzC,KAAK43I,cAAc51I,gBAAgB9K,KAAI,SAAA2Q,GAAC,OAAIA,EAAEtI,GAAG,KAC5E,OAAOS,KAAKwhB,OAAOngB,WAAWlI,QAAO,SAAA8/I,GAEnC,OAAOA,EAAKnhJ,KAAO4J,EAAK8f,OAAOguF,qBAE7BypC,EAAKj0I,wBAA0BtD,EAAK8f,OAAOxlB,KAAKgJ,wBAE/Cg0I,EAAWx1I,IAAIy1I,EAAKj0I,sBACzB,IAAG9N,KAAI,SAAA+hJ,GAAI,MAAK,CACd15I,IAAK05I,EAAKj0I,sBACVrF,QAASs5I,EAAKh9I,YACdgjB,OAAQg6H,EAAKnhJ,GACd,GACH,EACAohJ,gBAAe,WACb,OAAOl5I,KAAK+4I,aAAat/I,OAAS,CACpC,EACAk0G,MAAK,WACH,GAAI3tG,KAAKw+D,UAAUxiE,KAAKlE,KAAOkI,KAAK6T,YAAY/b,GAAI,OAAO,EAC3D,IAAMqhJ,EAAgBn5I,KAAKo5I,aAEzB53H,OAAOqF,cAEP7mB,KAAKm0G,aAAa16G,OAAS,GAE1BuG,KAAK0W,iBAAmB1W,KAAK64I,YAAc74I,KAAKu0E,QACnD,OAAQv0E,KAAK2hI,UAAY3hI,KAAKq5I,eAAiBF,CACjD,EACAC,YAAW,WACT,GAAIp5I,KAAKw+D,UAAUxiE,KAAKlE,KAAOkI,KAAK6T,YAAY/b,GAAI,OAAO,EAC3D,IAAQ0pB,EAAWxhB,KAAXwhB,OACAmf,EAAWnf,EAAXmf,OACFpI,EAAev4B,KAAK0L,OAAOoP,QAAQyd,aAAa/W,EAAOxlB,KAAKlE,IAC5DwhJ,EAAqB34G,GAAU3gC,KAAK0L,OAAOoP,QAAQyd,aAAaoI,EAAO3kC,KAAKlE,IAClF,OAAO0pB,EAAOmsF,OAEXhtE,GAAUA,EAAOgtE,OAElBp1E,EAAaO,QAEZwgH,GAAsBA,EAAmBxgH,MAC9C,EACAugH,cAAa,WACX,IAAQ73H,EAAWxhB,KAAXwhB,OACAmf,EAAWnf,EAAXmf,OACR,OAEI3gC,KAAK6jE,aAEDljC,GAAUnf,EAAOxlB,KAAKlE,KAAOkI,KAAKikE,eAEnCtjC,GAAUA,EAAO3kC,KAAKlE,KAAOkI,KAAKikE,gBAItCjkE,KAAKk4I,gBAAkB12H,EAAOqF,gBAE3B7mB,KAAKm0G,aAAa16G,OAAS,CACnC,EACA8/I,eAAc,WACZ,OAAOv5I,KAAK2T,aAAawC,cAC3B,EACAC,iBAAgB,WACd,OAAOpW,KAAK2T,aAAayC,gBAC3B,EACAF,qBAAoB,WAClB,OAAOlW,KAAK2T,aAAauC,oBAC3B,EACAG,sBAAqB,WACnB,OAAOrW,KAAK2T,aAAa0C,qBAC3B,EACA6yD,WAAU,WACR,OAASlpE,KAAKq5I,gBACXr5I,KAAK2tG,OAAS3tG,KAAKkW,sBACnBlW,KAAKo5I,aAAep5I,KAAKu5I,gBACzBv5I,KAAKwhB,OAAOqF,cAAgB7mB,KAAKoW,kBACjCpW,KAAKm0G,aAAa16G,OAAS,GAAKuG,KAAKqW,sBAE1C,EACAmjI,UAAS,WAEP,QAAIx5I,KAAKu+D,WAEGv+D,KAAKk4I,gBAIVl4I,KAAKwhB,OAAO1pB,KAAOkI,KAAKy8B,SACjC,EACA67G,QAAO,WACL,SAAUt4I,KAAKwhB,OAAO+C,wBAAyBvkB,KAAKwhB,OAAOguF,oBAC7D,EACAiqC,YAAW,WACT,GAAIz5I,KAAKwhB,OAAOytF,wBACd,OAAOjvG,KAAKwhB,OAAOytF,wBAEnB,IAAMjzG,EAAOgE,KAAK0L,OAAOoP,QAAQgiB,SAAS98B,KAAKwhB,OAAOguF,qBACtD,OAAOxzG,GAAQA,EAAKK,cAExB,EACAq9I,aAAY,WACV,IAAK15I,KAAKwhB,OAAOqxD,QAAS,MAAO,GACjC,IAAM8mE,EAAiBz2I,KAASlD,KAAKwhB,OAAOqxD,SACtC+F,EAAW54E,KAAK2T,aAAawE,oBAC7ByhI,EAAeD,EAAengJ,MAAM,YAC1C,MAAkB,SAAbo/E,GAAuBghE,GAA8B,UAAbhhE,EACpC+gE,EACe,UAAb/gE,EACF,OAAOv/E,OAAOsgJ,GACC,SAAb/gE,EACF,QADF,CAGT,EACAihE,4BAA2B,WAEzB,IAAMC,EAAgB,GAAGzgJ,OACvB2G,KAAK24I,2BAA2BhyH,YAChC3mB,KAAK24I,2BAA2BzxH,aAElC,OAAOm4D,KAAOy6D,EAAe,KAC/B,EACA3+H,KAAI,WAEF,OAAOnb,KAAKwhB,OAAOrG,KAAKhiB,QAAO,SAAA4gJ,GAAM,OAAIA,EAAOr0H,eAAe,OAAO,IAAExuB,KAAI,SAAA6iJ,GAAM,OAAIA,EAAO//I,IAAI,IAAEqM,KAAK,IAC1G,EACAiQ,cAAa,WACX,OAAOtW,KAAK2T,aAAa2C,aAC3B,EACAI,gBAAe,WACb,OAAO1W,KAAK2T,aAAa+C,eAC3B,EACAH,kBAAiB,WACf,OAAOvW,KAAK2T,aAAa4C,iBAC3B,EACA1C,YAAW,WACT,OAAO7T,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACjC,EACAmiE,aAAY,WACV,OAAOh2E,KAAK0L,OAAOhR,MAAK,UAAW4V,eAAeC,SACpD,EACAoD,aAAY,WACV,OAAO3T,KAAK0L,OAAOoP,QAAQnH,YAC7B,EACAqmI,cAAa,WACX,OAAQh6I,KAAKkmE,UAAyC,IAA7BlmE,KAAKmmE,aAAa1sE,MAC7C,EACAwgJ,eAAc,WACZ,QAASj6I,KAAKk6I,6BAChB,EACA50E,cAAa,WACX,MAA8C,YAAvCtlE,KAAKk6I,6BACd,EACAC,oBAAmB,WACjB,OAAOn6I,KAAK40E,MAAM78E,EAAE,6BAA+BiI,KAAKwhB,OAAOqC,WACjE,EACA8xH,SAAQ,WACN,OAAiC,OAA1B31I,KAAKwhB,OAAOstF,SACrB,EACA9sC,iBAAgB,WACd,OAAOhiE,KAAK0L,OAAOhR,MAAM2X,SAAS2vD,gBACpC,EACAo4E,gBAAe,WACb,OAAOp6I,KAAKwhB,OAAO6tF,WAAarvG,KAAKwhB,OAAO8tF,aAC9C,EACA+qC,kBAAiB,WACf,OAAOr6I,KAAKwhB,OAAO6tF,YAAcrvG,KAAKwhB,OAAO8tF,aAC/C,EACAgrC,aAAY,WACV,OAAOt6I,KAAKwhB,OAAO4tF,SAAWpvG,KAAK0L,OAAOhR,MAAMwkB,SAASmB,kBAAkBrgB,KAAKwhB,OAAO4tF,eAAY7sG,CACrG,EACAg4I,mBAAkB,WAChB,OAAOv6I,KAAKs6I,cAAgBt6I,KAAK63I,YACnC,IAEFh4I,QAAS,CACP26I,eAAc,SAAE32H,GACd,OAAQA,GACN,IAAK,UACH,MAAO,OACT,IAAK,WACH,MAAO,YACT,IAAK,SACH,MAAO,WACT,QACE,MAAO,QAEb,EACA42H,UAAS,SAAEvvI,GACTlL,KAAKkL,MAAQA,CACf,EACAq5C,WAAU,WACRvkD,KAAKkL,WAAQ3I,CACf,EACAm4I,eAAc,WAzWqB,IAACz5H,EAChC+1H,EACAe,EACAd,EAHgCh2H,EA0WHjhB,KAzW7Bg3I,EAAYF,GAyWuB,YAxWnCiB,EAAS,mBAAH1+I,OAAsB29I,GAC5BC,EAAmB,eAAH59I,OAAkB29I,GACpC/1H,EAAI82H,GACN92H,EAAI82H,KAEJ92H,EAAIg2H,IAAqBh2H,EAAIg2H,EAoW7B,EACA0D,aAAY,SAAE7iJ,GACRkI,KAAKk4I,gBACPl4I,KAAKkG,MAAM,OAAQpO,EAEvB,EACAssE,eAAc,WACZpkE,KAAKkG,MAAM,iBACb,EACA67H,WAAU,WACR/hI,KAAK2hI,SAAW3hI,KAAK2hI,OACvB,EACAiZ,mBAAkB,WAChB56I,KAAK03I,cAAgB13I,KAAK03I,YAC5B,EACAzW,wBAAuB,SAAEnpI,EAAIkC,GAC3B,OAAO2zD,EAAAA,GAAAA,GAAoB71D,EAAIkC,EAAMgG,KAAK0L,OAAOhR,MAAM2X,SAAS8G,oBAClE,EACA0hI,gBAAe,SAAE/iJ,GACfi/I,GAA4B/2I,KAAM,eAAgBA,KAAKmmE,aAAa9sE,OAAOvB,GAC7E,EACAgjJ,mBAAkB,SAAEhjJ,GAClBi/I,GAA4B/2I,KAAM,eAAgBA,KAAKmmE,aAAahtE,QAAO,SAAAghF,GAAO,OAAIA,IAAYriF,CAAE,IACtG,EACAijJ,iBAAgB,SAAEnD,GAChB53I,KAAK43I,cAAgBA,CACvB,EACAvzE,oBAAmB,WACjBrkE,KAAKg7I,+BACP,EACAC,oBAAmB,SAAEC,GACnB,IAAMpjJ,EAAKojJ,EACX,GAAIl7I,KAAKwhB,OAAO1pB,KAAOA,EAAI,CACzB,IAAMqjJ,EAAOn7I,KAAKoM,IAAIH,wBAClBkvI,EAAKtrE,IAAM,KAGJsrE,EAAKjvI,QAAW7L,OAAOiM,YAAc,GAD9CjM,OAAOm4E,SAAS,EAAG2iE,EAAKtrE,IAAM,KAIrBsrE,EAAK3oB,OAASnyH,OAAOiM,YAAc,IAE5CjM,OAAOm4E,SAAS,EAAG2iE,EAAK3oB,OAASnyH,OAAOiM,YAAc,GAE1D,CACF,EACA8uI,mBAAkB,WAAI,IAAAzyI,EAAA,KAChB3I,KAAKu6I,mBACPv6I,KAAK63I,cAAe,EACV73I,KAAKs6I,aAMft6I,KAAK63I,cAAe,EALpB73I,KAAK0L,OAAOjR,SAAS,cAAeuF,KAAKwhB,OAAO4tF,UAC7C33G,MAAK,WACJkR,EAAKkvI,cAAe,CACtB,GAIN,GAEFjqF,MAAO,CACLnxB,UAAW,SAAU3kC,GACnBkI,KAAKi7I,oBAAoBnjJ,EAC3B,EACA,oBAAqB,SAAU80D,GAEzB5sD,KAAKw5I,WAAax5I,KAAK24I,2BAA2BzxH,aAAelnB,KAAK24I,2BAA2BzxH,YAAYztB,SAAWmzD,GAC1H5sD,KAAK0L,OAAOjR,SAAS,eAAgBuF,KAAKwhB,OAAO1pB,GAErD,EACA,kBAAmB,SAAU80D,GAEvB5sD,KAAKw5I,WAAax5I,KAAK24I,2BAA2BhyH,aAAe3mB,KAAK24I,2BAA2BhyH,YAAYltB,SAAWmzD,GAC1H5sD,KAAK0L,OAAOjR,SAAS,YAAauF,KAAKwhB,OAAO1pB,GAElD,EACAkiJ,cAAe,SAAUn7E,GACvB7+D,KAAK8kE,YAAcjG,CACrB,IC5fJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,2nB1BLhDl+D,EAAAuoE,Y,iBAAU,WADnB3oE,EAAAA,EAAAA,IAkiBM,O,MAhiBJswC,IAAI,OACJxxC,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,SAAQ,aACS5oD,EAAA64I,WAAS,iBAAuB74I,EAAA06I,oB,CAG/C16I,EAAAuK,QAAK,WADb3K,EAAAA,EAAAA,IAWM,MAXNC,EAWM,mBAPDG,EAAAuK,OAAQ,IACX,IAAAzK,EAAAA,EAAAA,GAKO,QAJLpB,MAAM,8BACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA4jD,YAAA5jD,EAAA4jD,WAAAzqD,MAAA6G,EAAAhE,UAAU,I,EAElBqH,EAAAA,EAAAA,IAAuB+hD,GAAA,CAAfj8C,KAAK,gBAAO,eAGRnJ,EAAAgtG,QAAUhtG,EAAA26I,YAAS,WACjC/6I,EAAAA,EAAAA,IAuCM,MAvCNokD,EAuCM,EAtCJlkD,EAAAA,EAAAA,GAUQ,QAVRokD,EAUQ,CARElkD,EAAAgtG,OAAShtG,EAAAsjB,UAAO,WADxB0hC,EAAAA,EAAAA,IAIEI,GAAA,C,MAFA1mD,MAAM,0CACNyK,KAAK,c,gBAEP9F,EAAAA,EAAAA,IAGEmnH,GAAA,CAFCnvH,KAAM2E,EAAA6gB,OAAOxlB,KACb23H,IAAI,G,mBAIDhzH,EAAAs3I,wBAAqB,WAD7B13I,EAAAA,EAAAA,IAKQ,QALRykD,GAKQJ,EAAAA,EAAAA,IADHjkD,EAAA8L,GAAG,wBAAD,oBAGC9L,EAAAs3I,uBAAyBt3I,EAAAwzG,aAAa16G,OAAS,IAAH,WADpD8G,EAAAA,EAAAA,IAKQ,QALR0kD,GAKQL,EAAAA,EAAAA,IADHjkD,EAAA8L,GAAG,kCAAD,qBAEPhM,EAAAA,EAAAA,GAKQ,SAJNpB,MAAM,aACL+S,MAAOzR,EAAAwzG,aAAa9tG,KAAK,Q,QAEvB1F,EAAAwzG,aAAa9tG,KAAK,OAAD,EAAA+/C,IAEtB3lD,EAAAA,EAAAA,GAQS,UAPPpB,MAAM,yBACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAohI,YAAAphI,EAAAohI,WAAAjoI,MAAA6G,EAAAhE,UAAU,kB,EAE1BqH,EAAAA,EAAAA,IAGE+hD,GAAA,CAFAj8C,KAAK,YACLzK,MAAM,uC,WAKdkB,EAAAA,EAAAA,IAqeWwkD,EAAAA,GAAA,CAAAt8C,IAAA,IAneD9H,EAAA46I,aAAU,WADlBh7I,EAAAA,EAAAA,IASM,MATN6kD,EASM,EALJphD,EAAAA,EAAAA,IAGE+hD,GAAA,CAFAj8C,KAAK,YACLzK,MAAM,WAERoB,EAAAA,EAAAA,GAAoD,OAApD4kD,GAAoDT,EAAAA,EAAAA,IAA7BjkD,EAAA8L,GAAG,kBAAD,uBAGnB9L,EAAAsjB,SAAYtjB,EAAAqiI,WAAcriI,EAAAu3I,gBAqCzB,iBArCuC,WADhD33I,EAAAA,EAAAA,IAwCM,O,MAtCHlB,OAAKkqD,EAAAA,EAAAA,IAAA,EAAG5oD,EAAAw3I,cAAe,CAAF37G,YAAiB77B,EAAAy3I,gBAEjC,iCADLpgF,OAAK2E,EAAAA,EAAAA,IAAA,CAAGh8D,EAAAy3I,iB,CAIDz3I,EAAAsjB,UAAO,WADf0hC,EAAAA,EAAAA,IAMEosB,GAAA,C,MAJA1yE,MAAM,4BACLwtG,IAAKlsG,EAAAm4I,eACL,gBAAen4I,EAAAq1E,aACfh6E,KAAM2E,EAAA69D,UAAUxiE,M,yDAEnByE,EAAAA,EAAAA,GA0BM,MA1BN4lD,EA0BM,EAzBJ5lD,EAAAA,EAAAA,GAiBM,OAhBJpB,MAAM,gCACL+S,MAAOzR,EAAA63I,W,CAGA73I,EAAA83I,gBAAa,WADrB9yF,EAAAA,EAAAA,IAQcJ,GAAA,C,MANXpY,GAAIxsC,EAAA+3I,sB,mBAEL,iBAGE,EAHF10I,EAAAA,EAAAA,IAGEguE,GAAA,CAFC5wE,KAAMT,EAAA83I,cACNlgJ,MAAOoI,EAAA43I,cAAchgJ,O,0DAG1BotD,EAAAA,EAAAA,IAG8BJ,GAAA,C,MAD3BpY,GAAIxsC,EAAA+3I,sB,mBACN,iBAAe,mBAAZ/3I,EAAA63I,WAAS,G,mCACT,KACN5zF,EAAAA,EAAAA,IAAG,KAAM,MACT5gD,EAAAA,EAAAA,IAIE+hD,GAAA,CAHAj8C,KAAK,UACLzK,MAAM,cACL+S,MAAOzR,EAAA8L,GAAG,oB,2BACX,KACFm4C,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,sBAAD,UAKA9L,EAAA8gB,U,WA0YTlhB,EAAAA,EAAAA,IAsBM,MAtBNi7I,GAsBM,EAlBJ/6I,EAAAA,EAAAA,GAMM,MANNg7I,GAMM,EALJz3I,EAAAA,EAAAA,IAIE+tE,GAAA,CAHA1yE,MAAM,cACLk1E,QAAS5zE,EAAA4zE,QACTs4B,IAAKlsG,EAAA0hI,c,6BAGV5hI,EAAAA,EAAAA,GAUM,MAVNi7I,GAUM,EATJj7I,EAAAA,EAAAA,GAEM,MAFNk7I,IAEM/2F,EAAAA,EAAAA,IADDjkD,EAAA8L,GAAG,0BAAD,GAGC9L,EAAAulE,WAAQ,WADhBvgB,EAAAA,EAAAA,IAKEi2F,GAAA,C,MAHC11E,SAAUvlE,EAAAulE,SACV1kD,OAAQ7gB,EAAA6gB,OACRq6H,SAAQl7I,EAAA+5I,gB,iEA7ZC,WADhBn6I,EAAAA,EAAAA,IA0YM,O,MAxYHlB,OAAKkqD,EAAAA,EAAAA,IAAA,EAAG5oD,EAAAqhI,UAAW,CAAFxlG,YAAiB77B,EAAAshI,UAAS,UAAathI,EAAAsjB,UAAYtjB,EAAAu3I,iBAE/D,qBADLlgF,OAAK2E,EAAAA,EAAAA,IAAA,CAAIh8D,EAAAshI,YAET,YAAWthI,EAAAwa,M,CAGHxa,EAAAqiI,W,iBAAS,WADlBziI,EAAAA,EAAAA,IAqBM,MArBNklD,EAqBM,EAjBJhlD,EAAAA,EAAAA,GAgBI,KAfDC,KAAMC,EAAAP,QAAQ5I,QAAQmJ,EAAA+sD,iBAAiBhtD,KACvCZ,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAN,cAAc,e,EAEdkD,EAAAA,EAAAA,IAWc8tE,GAAA,CAVX,UAASnxE,EAAA6gB,OAAOxlB,KAAKlE,GACrB,mBAAiB,G,mBAElB,iBAME,EANFkM,EAAAA,EAAAA,IAME+tE,GAAA,CALA1yE,MAAM,cACLwtG,IAAKlsG,EAAA0hI,aACL9tD,QAAS5zE,EAAA4zE,QACT,gBAAe5zE,EAAAq1E,aACfh6E,KAAM2E,EAAA6gB,OAAOxlB,M,mFAKtByE,EAAAA,EAAAA,GA4WM,MA5WNmlD,EA4WM,CA1WKjlD,EAAAqiI,W,iBAAS,WADlBziI,EAAAA,EAAAA,IA2MM,MA3MNslD,EA2MM,EAvMJplD,EAAAA,EAAAA,GAsGM,MAtGNqlD,EAsGM,EArGJrlD,EAAAA,EAAAA,GA6BM,MA7BNk/E,EA6BM,CA3BIh/E,EAAA6gB,OAAOxlB,KAAK41E,YAAS,WAD7BrxE,EAAAA,EAAAA,IASK,M,MAPHlB,MAAM,kBACL+S,MAAOzR,EAAA6gB,OAAOxlB,KAAKhC,M,EAEpBgK,EAAAA,EAAAA,IAGEguE,GAAA,CAFC5wE,KAAMT,EAAA6gB,OAAOxlB,KAAKhC,KAClBzB,MAAOoI,EAAA6gB,OAAOxlB,KAAKzD,O,6CAGxBgI,EAAAA,EAAAA,IAMK,M,MAJHlB,MAAM,kBACL+S,MAAOzR,EAAA6gB,OAAOxlB,KAAKhC,O,QAEjB2G,EAAA6gB,OAAOxlB,KAAKhC,MAAI,EAAA6lF,KAErB77E,EAAAA,EAAAA,IAKEmnH,GAAA,CAJA9rH,MAAM,eACL+S,MAAOzR,EAAA6gB,OAAOxlB,KAAKK,eACnBL,KAAM2E,EAAA6gB,OAAOxlB,KACb23H,IAAI,G,yBAGIhzH,EAAA6gB,OAAOxlB,MAAQ2E,EAAA6gB,OAAOxlB,KAAK+wG,UAAO,WAD7CxsG,EAAAA,EAAAA,IAIC,O,MAFClB,MAAM,iBACL2uD,IAAKrtD,EAAA6gB,OAAOxlB,KAAK+wG,S,8BAItBtsG,EAAAA,EAAAA,GAqEO,OArEPs/E,EAqEO,EApEL/7E,EAAAA,EAAAA,IAQcuhD,GAAA,CAPZlmD,MAAM,qBACL8tC,GAAE,CAAAnzC,KAAA,eAAAkoC,OAAA,CAAApqC,GAAwC6I,EAAA6gB,OAAO1pB,M,mBAElD,iBAGE,EAHFkM,EAAAA,EAAAA,IAGEkvE,GAAA,CAFCC,KAAMxyE,EAAA6gB,OAAO+rB,WACb,cAAa,I,oCAIV5sC,EAAA6gB,OAAOqC,aAAU,WADzBtjB,EAAAA,EAAAA,IAUO,Q,MARLlB,MAAM,kBACL+S,MAAOzR,EAAAw5I,qB,EAERn2I,EAAAA,EAAAA,IAIE+hD,GAAA,CAHA,iBACA1mD,MAAM,eACLyK,KAAMnJ,EAAA65I,eAAe75I,EAAA6gB,OAAOqC,a,wCAIzBljB,EAAAklE,aAAellE,EAAA26I,YAAS,WADhC/6I,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,kBACL+S,MAAOzR,EAAA8L,GAAG,iBACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAyjE,gBAAAzjE,EAAAyjE,eAAAtqE,MAAA6G,EAAAhE,UAAc,kB,EAE9BqH,EAAAA,EAAAA,IAIE+hD,GAAA,CAHA,iBACA1mD,MAAM,eACNyK,KAAK,iB,sBAIDnJ,EAAAghI,UAAO,WADfphI,EAAAA,EAAAA,IAUS,U,MARPlB,MAAM,kBACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAohI,YAAAphI,EAAAohI,WAAAjoI,MAAA6G,EAAAhE,UAAU,kB,EAE1BqH,EAAAA,EAAAA,IAIE+hD,GAAA,CAHA,iBACAj8C,KAAK,YACLzK,MAAM,qB,eAIFsB,EAAAs5I,gBAAkBt5I,EAAAmlE,SAAWnlE,EAAAmlE,QAAQrsE,SAAWkH,EAAAm7I,aAAU,WADlEv7I,EAAAA,EAAAA,IAYS,U,MAVPlB,MAAM,kBACL+S,MAAOzR,EAAA2kE,cAAgB3kE,EAAA8L,GAAG,sBAAwB9L,EAAA8L,GAAG,sBACrD,gBAAe9L,EAAA2kE,cAAgB,OAAS,QACxCxlE,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAA0jE,qBAAA1jE,EAAA0jE,oBAAAvqE,MAAA6G,EAAAhE,UAAmB,kB,EAEnCqH,EAAAA,EAAAA,IAIE+hD,GAAA,CAHA,iBACA1mD,MAAM,eACLyK,KAAMnJ,EAAA2kE,cAAgB,aAAe,gB,wCAIlC3kE,EAAAkkE,OAASlkE,EAAAm7I,aAAU,WAD3Bv7I,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,kBACL+S,MAAOzR,EAAA8L,GAAG,4CACV3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAkkE,MAAAlkE,EAAAkkE,KAAA/qE,MAAA6G,EAAAhE,UAAI,kB,EAEpBqH,EAAAA,EAAAA,IAIE+hD,GAAA,CAHA,iBACA1mD,MAAM,eACLyK,KAAM,wB,0BAMPnJ,EAAA23I,SAAW33I,EAAAu4I,kBAAe,WADlC34I,EAAAA,EAAAA,IA6EM,MA7EN8/E,EA6EM,CAxEI1/E,EAAA23I,UAAO,WADf/3I,EAAAA,EAAAA,IA0CO,OA1CP4iF,EA0CO,CArCIxiF,EAAA26I,Y,WAyBT/6I,EAAAA,EAAAA,IAKO,OALP+iF,EAKO,EADL7iF,EAAAA,EAAAA,GAA8D,OAA9Ds7I,GAA8Dn3F,EAAAA,EAAAA,IAA/BjkD,EAAA8L,GAAG,oBAAD,QA7BjB,WADlBk5C,EAAAA,EAAAA,IAwBgBq2F,GAAA,C,MAtBb,YAAWr7I,EAAA6gB,OAAO2tF,gBAAkBxuG,EAAA6gB,OAAO+C,sBAC5CllB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,mBAAkB,mBAEK5oD,EAAA6gB,OAAO2tF,kBADpCn3C,MAAA,mB,mBAGA,iBAgBS,EAhBTv3D,EAAAA,EAAAA,GAgBS,UAfPpB,MAAM,2BACL,aAAYsB,EAAA8L,GAAG,kBACf3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAAg6I,aAAah6I,EAAA6gB,OAAO+C,sBAAqB,kB,EAEzDvgB,EAAAA,EAAAA,IAIE+hD,GAAA,CAHA1mD,MAAM,8BACNyK,KAAK,QACLmyI,KAAK,gB,QACL,KACFr3F,EAAAA,EAAAA,IAAG,KAAM,MACTnkD,EAAAA,EAAAA,GAIO,OAJP4iF,GAIOz+B,EAAAA,EAAAA,IADFjkD,EAAA8L,GAAG,oBAAD,S,oCAWXzI,EAAAA,EAAAA,IAKE68H,GAAA,CAJClhI,QAASgB,EAAA84I,YACTl6I,IAAKoB,EAAA03I,iBACL,UAAS13I,EAAA6gB,OAAOguF,oBAChB,mBAAkB7uG,EAAA6gB,OAAOytF,yB,0EAOtBtuG,EAAAu4I,kBAAe,WADvB34I,EAAAA,EAAAA,IAoBO,OApBPgjF,EAoBO,EAhBL9iF,EAAAA,EAAAA,GAUO,QATLpB,MAAM,WACL,aAAYsB,EAAA8L,GAAG,qBACf3M,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAAg6I,aAAah6I,EAAA6gB,OAAO+C,sBAAqB,kB,EAEzD9jB,EAAAA,EAAAA,GAIO,OAJPgjF,GAIO7+B,EAAAA,EAAAA,IADFjkD,EAAA8L,GAAG,oBAAD,SAID9L,EAAAu4I,kBAAe,WADvBvzF,EAAAA,EAAAA,IAIEu2F,GAAA,C,MAFCx7H,SAAU/f,EAAAo4I,aAAa78I,MAAM,EAAG,GACjCmD,MAAM,uB,kEAEH,KACPulD,EAAAA,EAAAA,IAAG,KAAM,KAEDjkD,EAAAu4I,kBAAe,WADvBvzF,EAAAA,EAAAA,IAIEu2F,GAAA,C,MAFCx7H,SAAU/f,EAAAo4I,aAAa78I,MAAM,GAC9BmD,MAAM,iB,yDAIFsB,EAAAg1I,UAAYh1I,EAAAqhE,mBAAqBrhE,EAAA26I,YAAS,WADlD/6I,EAAAA,EAAAA,IAiBM,MAjBNojF,EAiBM,EAbJ3/E,EAAAA,EAAAA,IAYS85D,GAAA,CAXPC,QAAQ,mBACRlhE,IAAI,Q,CAEOs2E,MAAI9U,EAAAA,EAAAA,KACb,iBAKE,EALFr6D,EAAAA,EAAAA,IAKEkvE,GAAA,CAJA,eAAa,eACZC,KAAMxyE,EAAA6gB,OAAOstF,UACb,cAAa,GACb,eAAa,G,kDAOxB9qG,EAAAA,EAAAA,IAeE8yE,GAAA,CAdAjmC,IAAI,UACHrvB,OAAQ7gB,EAAA6gB,OACR,aAAY7gB,EAAAqiI,UACZvmG,UAAW97B,EAAA87B,UACX8hC,QAAS59D,EAAA64I,UACT,0BAAyB74I,EAAAw7I,sBACzB,+BAA8Bx7I,EAAAy7I,2BAC9B,kCAAiCz7I,EAAA07I,6BACjC,iCAAgC17I,EAAA27I,4BAChC,sCAAqC37I,EAAA47I,iCACrC,yCAAwC57I,EAAA67I,mCACxCC,YAAS57I,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAk6I,gBAAgB31F,EAAM,GACjCw3F,aAAU77I,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAAm6I,mBAAmB51F,EAAM,GACrCy3F,aAAYh8I,EAAAo6I,kB,gRAIPp6I,EAAAy5I,kBAAe,WADvB75I,EAAAA,EAAAA,IAoBU,UApBVqjF,EAoBU,EAhBRnjF,EAAAA,EAAAA,GAUS,UATPpB,MAAM,qDACL,gBAAesB,EAAA45I,mBACfz6I,QAAKe,EAAA,MAAAA,EAAA,sBAAEF,EAAAy6I,oBAAAz6I,EAAAy6I,mBAAAthJ,MAAA6G,EAAAhE,UAAkB,I,mBAEvBgE,EAAA45I,mBAAqB55I,EAAA8L,GAAG,qBAAuB9L,EAAA8L,GAAG,yBAA0B,IAC/E,IAAAzI,EAAAA,EAAAA,IAGE+hD,GAAA,CAFA1mD,MAAM,oCACLyK,KAAMnJ,EAAA45I,mBAAqB,aAAe,gB,uBAIvC55I,EAAA45I,qBAAkB,WAD1B50F,EAAAA,EAAAA,IAIE2Y,GAAA,C,MAFCE,UAAW79D,EAAA25I,aACX,YAAU,G,0CAIF35I,EAAA05I,oBAAiB,WAD9B95I,EAAAA,EAAAA,IAgBI,IAhBJsjF,EAgBI,EAZF7/E,EAAAA,EAAAA,IAWS85D,GAAA,CAXDC,QAAQ,0BAAwB,CAC3B79D,MAAIm+D,EAAAA,EAAAA,KACb,iBAOM,EAPN59D,EAAAA,EAAAA,GAOM,aANJA,EAAAA,EAAAA,GAKI,KAJDC,KAAMC,EAAA6gB,OAAO6tF,UACdzuG,OAAO,W,QAEJD,EAAA6gB,OAAO6tF,WAAS,EAAAvrB,K,6BAQrBnjF,EAAAu3I,iBAAmBv3I,EAAA26I,WAAa36I,EAAAmlE,SAAWnlE,EAAAmlE,QAAQrsE,SAAM,WADjE8G,EAAAA,EAAAA,IA8BM,MA9BNq8I,EA8BM,CAzBIj8I,EAAAk8I,0BAA4Bl8I,EAAAmlE,QAAQrsE,OAAS,IAAH,WADlD8G,EAAAA,EAAAA,IAOS,U,MALPlB,MAAM,8BACL+S,MAAOzR,EAAA41D,IAAI,yBAA0B51D,EAAAmlE,QAAQrsE,OAAS,EAAG,CAAN6zE,WAAoB3sE,EAAAmlE,QAAQrsE,OAAS,IACxFqG,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAkkE,MAAAlkE,EAAAkkE,KAAA/qE,MAAA6G,EAAAhE,UAAI,mB,QAEjBgE,EAAA41D,IAAI,kCAAmC51D,EAAAmlE,QAAQrsE,OAAS,EAAG,CAAN6zE,WAAoB3sE,EAAAmlE,QAAQrsE,OAAS,KAAH,EAAAqjJ,MAAA,WAE5Fv8I,EAAAA,EAAAA,IAKO,OALP4jF,GAKOv/B,EAAAA,EAAAA,IADFjkD,EAAA8L,GAAG,wBAAD,mBAEPlM,EAAAA,EAAAA,IAWgBwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IAVExpD,EAAAmlE,SAAO,SAAhB5Y,G,kBADTvH,EAAAA,EAAAA,IAWgBq2F,GAAA,CATbvzI,IAAKykD,EAAMp1D,GACX,YAAWo1D,EAAMp1D,I,mBAElB,iBAKS,EALT2I,EAAAA,EAAAA,GAKS,UAJPpB,MAAM,mCACLS,SAAKgB,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAAg6I,aAAaztF,EAAMp1D,GAAE,kB,QAElCo1D,EAAMlzD,MAAI,EAAAoqF,G,0DAKnBpgF,EAAAA,EAAAA,IAmCayjI,EAAAA,GAAA,CAnCDztI,KAAK,QAAM,C,kBACrB,iBAiCM,EAhCG2G,EAAA2V,eAAiB3V,EAAA64I,WAAa74I,EAAAk5I,4BAA4BpgJ,OAAS,IAAH,WADzE8G,EAAAA,EAAAA,IAiCM,MAjCN8jF,EAiCM,EA7BJ5jF,EAAAA,EAAAA,GA4BM,MA5BN6jF,EA4BM,CA1BI3jF,EAAAg4I,2BAA2BzxH,aAAevmB,EAAAg4I,2BAA2BzxH,YAAYztB,OAAS,IAAH,WAD/FksD,EAAAA,EAAAA,IAUkBgxF,GAAA,C,MARf56I,MAAO4E,EAAAg4I,2BAA2BzxH,a,mBAEnC,iBAKM,EALNzmB,EAAAA,EAAAA,GAKM,MALNs8I,EAKM,EAJJt8I,EAAAA,EAAAA,GAAoD,IAApD8jF,GAAoD3/B,EAAAA,EAAAA,IAA3BjkD,EAAA8L,GAAG,mBAAD,IAC3BhM,EAAAA,EAAAA,GAEM,MAFN+jF,GAEM5/B,EAAAA,EAAAA,IADDjkD,EAAAg4I,2BAA2BzxH,YAAYztB,QAAM,K,uCAK9CkH,EAAAg4I,2BAA2BhyH,aAAehmB,EAAAg4I,2BAA2BhyH,YAAYltB,OAAS,IAAH,WAD/FksD,EAAAA,EAAAA,IAYkBgxF,GAAA,C,MAVf56I,MAAO4E,EAAAg4I,2BAA2BhyH,a,mBAEnC,iBAOM,EAPNlmB,EAAAA,EAAAA,GAOM,MAPNu8I,GAOM,EAJJv8I,EAAAA,EAAAA,GAAsD,IAAtDw8I,IAAsDr4F,EAAAA,EAAAA,IAA7BjkD,EAAA8L,GAAG,qBAAD,IAC3BhM,EAAAA,EAAAA,GAEM,MAFNy8I,IAEMt4F,EAAAA,EAAAA,IADDjkD,EAAAg4I,2BAA2BhyH,YAAYltB,QAAM,K,wCAItDgH,EAAAA,EAAAA,GAEM,MAFN08I,GAEM,EADJn5I,EAAAA,EAAAA,IAAmDo5I,GAAA,CAAtCrhJ,MAAO4E,EAAAk5I,6BAA2B,yC,WAO9Cl5I,EAAAgT,aAAamlF,2BAA4Bn4F,EAAA64I,WAAgB74I,EAAAqiI,WAAcriI,EAAA26I,W,iBAAS,WADzF31F,EAAAA,EAAAA,IAGE03F,GAAA,C,MADC77H,OAAQ7gB,EAAA6gB,Q,oBAIF7gB,EAAAqiI,WAAcriI,EAAA26I,W,iBAAS,WADhC/6I,EAAAA,EAAAA,IA2BM,MA3BN+8I,GA2BM,EAvBJt5I,EAAAA,EAAAA,IAIE43I,GAAA,CAHC11E,SAAUvlE,EAAAulE,SACV1kD,OAAQ7gB,EAAA6gB,OACRq6H,SAAQl7I,EAAA+5I,gB,0CAEX12I,EAAAA,EAAAA,IAIEu5I,GAAA,CAHC15H,WAAYljB,EAAA6gB,OAAOqC,WACnB,YAAWljB,EAAAqyB,SACXxR,OAAQ7gB,EAAA6gB,Q,6CAEXxd,EAAAA,EAAAA,IAGEw5I,GAAA,CAFC,YAAW78I,EAAAqyB,SACXxR,OAAQ7gB,EAAA6gB,Q,+BAGH7gB,EAAAqyB,WAAQ,WADhB2yB,EAAAA,EAAAA,IAGE83F,GAAA,C,MADCj8H,OAAQ7gB,EAAA6gB,Q,qCAEXxd,EAAAA,EAAAA,IAIE05I,GAAA,CAHCl8H,OAAQ7gB,EAAA6gB,OACRm8H,UAASh9I,EAAA85I,UACTmD,YAAWj9I,EAAA4jD,Y,0DA6BZ5jD,EAAAulE,WAAQ,WADhB3lE,EAAAA,EAAAA,IAaM,MAbNs9I,GAaM,EATJ75I,EAAAA,EAAAA,IAQEmjD,GAAA,CAPA9nD,MAAM,aACL,WAAUsB,EAAA6gB,OAAO1pB,GACjBuJ,WAAYV,EAAA6gB,OAAOngB,WACnB,eAAcV,EAAA6gB,OAAOxlB,KACrB,qBAAoB2E,EAAA6gB,OAAOqC,WAC3BumH,QAASzpI,EAAA+4I,aACTv6E,SAAQx+D,EAAA+5I,gB,kO2BjfXr7I,MAAM,2B,+CC5BCA,MAAM,uB,GACHA,MAAM,qB,uGAmCPA,MAAM,e,GAWdA,MAAM,gB,kBAUJA,MAAM,S,wECtEjB,SACErF,KAAM,OACNsF,MAAO,CAAC,WAAY,SACpB2B,WAAY,CACVixE,QAAAA,EAAAA,EACAT,YAAAA,EAAAA,GAEFr5E,KAAI,WACF,MAAO,CACL4S,SAAS,EACT2tC,QAAS,GACTy0E,YAAYC,EAAAA,EAAAA,KAEhB,EACAjiH,QAAO,WACApL,KAAK0L,OAAOhR,MAAM+9C,MAAMZ,YAAY73C,KAAKo4C,SAC5Cp4C,KAAK0L,OAAOjR,SAAS,iBAAkBuF,KAAK89I,UAE9C99I,KAAK0L,OAAOjR,SAAS,YAAauF,KAAKo4C,OACzC,EACA3tC,UAAS,WACPzK,KAAK0L,OAAOjR,SAAS,cAAeuF,KAAKo4C,OAC3C,EACA9vC,SAAU,CACR8vC,OAAM,WACJ,OAAOp4C,KAAK89I,SAAShmJ,EACvB,EACA0yB,KAAI,WAEF,OADkBxqB,KAAK0L,OAAOhR,MAAM+9C,MAAMZ,YAAY73C,KAAKo4C,SACvC,CAAC,CACvB,EACAsgC,QAAO,WACL,OAAQ14E,KAAKwqB,MAAQxqB,KAAKwqB,KAAKkuD,SAAY,EAC7C,EACAqlE,UAAS,WACP,OAAQ/9I,KAAKwqB,MAAQxqB,KAAKwqB,KAAK0tB,YAAe,CAChD,EACAF,QAAO,WACL,OAAQh4C,KAAKwqB,MAAQxqB,KAAKwqB,KAAKwtB,UAAY,CAC7C,EACAhlB,SAAQ,WACN,OAAOhzB,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACjC,EACAmqI,YAAW,WACT,OAAOh+I,KAAKwqB,KAAKyzH,OAASj+I,KAAKg4C,UAAYh4C,KAAKgzB,QAClD,EACAkrH,gBAAe,WACb,OAAOl+I,KAAKwqB,KAAK2zH,WACnB,EACAC,eAAc,WACZ,MAAO,CACLpzI,QAAShL,KAAKgL,QAElB,EACAqzI,cAAa,WAIX,OAAOr+I,KAAK24C,QACTzhD,KAAI,SAAC65B,EAAOntB,GAAK,OAAKmtB,GAASntB,CAAK,IACpCzK,QAAO,SAAA6F,GAAK,MAAqB,iBAAVA,CAAkB,GAC9C,EACAs/I,WAAU,WACR,IAAMC,EAAyC,IAA9Bv+I,KAAKq+I,cAAc5kJ,OACpC,OAAOuG,KAAKgL,SAAWuzI,CACzB,GAEF1+I,QAAS,CACP2+I,oBAAmB,SAAEz0H,GACnB,OAAgC,IAAzB/pB,KAAKk+I,gBAAwB,EAAItkJ,KAAK8xG,MAAM3hF,EAAQ/pB,KAAKk+I,gBAAkB,IACpF,EACAO,YAAW,SAAEtsI,GACX,MAAO,GAAP9Y,OAAU8Y,EAAOgsI,YAAW,KAAA9kJ,OAAI2G,KAAKk+I,gBAAe,KAAA7kJ,OAAI2G,KAAKyM,GAAG,eAClE,EACA+rC,UAAS,WACPx4C,KAAK0L,OAAOjR,SAAS,cAAe,CAAE3C,GAAIkI,KAAKgc,SAAUo8B,OAAQp4C,KAAKwqB,KAAK1yB,IAC7E,EACA4mJ,eAAc,SAAE96I,GASd,IAAMmD,EAAc/G,KAAKoM,IAAIulG,iBAAiB,SACxCgtC,EAAiB3+I,KAAKoM,IAAIiiD,cAAc,gBAADh1D,OAAiBuK,EAAK,OAC/D5D,KAAKwqB,KAAKm4E,SAEZg8C,EAAehhF,SAAWghF,EAAehhF,SAGzCihF,IAAQ73I,GAAa,SAAAyhI,GAAaA,EAAQ7qE,SAAU,CAAM,IAC1DghF,EAAehhF,SAAU,GAE3B39D,KAAK24C,QAAUlb,IAAI12B,GAAa,SAAArP,GAAC,OAAIA,EAAEimE,OAAO,GAChD,EACAkhF,SAAQ,SAAEj7I,GACR,MAAO,OAAPvK,OAAc2G,KAAKwqB,KAAK1yB,GAAE,KAAAuB,OAAIuK,EAChC,EACAg1C,KAAI,WAAI,IAAAl3C,EAAA,KAC4B,IAA9B1B,KAAKq+I,cAAc5kJ,SACvBuG,KAAKgL,SAAU,EACfhL,KAAK0L,OAAOjR,SACV,WACA,CAAE3C,GAAIkI,KAAKgc,SAAUo8B,OAAQp4C,KAAKwqB,KAAK1yB,GAAI6gD,QAAS34C,KAAKq+I,gBACzD5mJ,MAAK,SAAA+yB,GACL9oB,EAAKsJ,SAAU,CACjB,IACF,I,eC5GJ,MAEA,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,iHFNzDzK,EAAAA,EAAAA,IA+FM,OA9FJlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,OACE5oD,EAAAy9I,kB,EAER39I,EAAAA,EAAAA,GA2DM,OA1DHw3D,KAAMt3D,EAAAq9I,YAAc,UAAar9I,EAAA6pB,KAAKm4E,SAAW,QAAU,c,gBAE5DpiG,EAAAA,EAAAA,IAuDMwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IAtDsBxpD,EAAA+3E,SAAO,SAAzBvmE,EAAQvO,G,kBADlBrD,EAAAA,EAAAA,IAuDM,OArDHkI,IAAK7E,EACNvE,MAAM,e,CAGEsB,EAAAq9I,cAAW,WADnBz9I,EAAAA,EAAAA,IAmBM,O,MAjBH6R,MAAOzR,EAAA89I,YAAYtsI,GACpB9S,MAAM,iB,EAENoB,EAAAA,EAAAA,GASM,MATNokD,EASM,EARJpkD,EAAAA,EAAAA,GAEO,OAFPukD,GAEOJ,EAAAA,EAAAA,IADFjkD,EAAA69I,oBAAoBrsI,EAAOgsI,cAAe,KAC/C,IACAn6I,EAAAA,EAAAA,IAIEguE,EAAA,CAHC5wE,KAAM+Q,EAAO09F,WACb,gBAAc,EACdt3G,MAAOoI,EAAApI,O,4BAGZkI,EAAAA,EAAAA,GAGE,OAFApB,MAAM,cACL24D,OAAK2E,EAAAA,EAAAA,IAAA,UAAAtjE,OAAgBsH,EAAA69I,oBAAoBrsI,EAAOgsI,aAAW,Q,4BAGhE59I,EAAAA,EAAAA,IA6BM,O,MA3BJq4H,SAAS,IACR3gE,KAAMt3D,EAAA6pB,KAAKm4E,SAAW,WAAa,QACnC,kBAAe,eAAAtpG,OAAiBsH,EAAAysH,WAAU,KAAA/zH,OAAIuK,GAC9C,eAAcjD,EAAAg4C,QAAQ/0C,GACtB9D,QAAK,SAAAolD,GAAA,OAAEvkD,EAAA+9I,eAAe96I,EAAK,G,CAGpBjD,EAAA6pB,KAAKm4E,WAAQ,WADrBpiG,EAAAA,EAAAA,IAMC,S,MAJCd,KAAK,WACLJ,MAAM,gBACLuK,SAAUjJ,EAAAqK,QACVhM,MAAO4E,G,wBAEVrD,EAAAA,EAAAA,IAKC,S,MAHCd,KAAK,QACJmK,SAAUjJ,EAAAqK,QACVhM,MAAO4E,G,YAEVnD,EAAAA,EAAAA,GAOQ,QAPR4kD,EAOQ,EANNrhD,EAAAA,EAAAA,IAKEguE,EAAA,CAJCl6E,GAAE,eAAAuB,OAAiBsH,EAAAysH,WAAU,KAAA/zH,OAAIuK,GACjCxC,KAAM+Q,EAAO09F,WACb,gBAAc,EACdt3G,MAAOoI,EAAApI,O,yDAMlBkI,EAAAA,EAAAA,GA8BM,MA9BN4lD,EA8BM,CA5BK1lD,EAAAq9I,aAMF,iBANa,WADpBz9I,EAAAA,EAAAA,IAQS,U,MANPlB,MAAM,sCACNI,KAAK,SACJmK,SAAUjJ,EAAA29I,WACVx+I,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAi4C,MAAAj4C,EAAAi4C,KAAA9+C,MAAA6G,EAAAhE,UAAI,K,QAETgE,EAAA8L,GAAG,eAAD,EAAA64C,KAEP7kD,EAAAA,EAAAA,GAOM,MAPN+kD,EAOM,CANyC,iBAAtB7kD,EAAA6pB,KAAKs0H,eAAY,WAAxCv+I,EAAAA,EAAAA,IAEWwkD,EAAAA,GAAA,CAAAt8C,IAAA,sBADN9H,EAAA41D,IAAI,2BAA4B51D,EAAA6pB,KAAKs0H,aAAc,CAAF/0H,MAAWppB,EAAA6pB,KAAKs0H,gBAAkB,OACxF,sBACAv+I,EAAAA,EAAAA,IAEWwkD,EAAAA,GAAA,CAAAt8C,IAAA,sBADN9H,EAAA41D,IAAI,oBAAqB51D,EAAA6pB,KAAK2zH,YAAa,CAAFp0H,MAAWppB,EAAA6pB,KAAK2zH,eAAiB,OAC/E,YAEF19I,EAAAA,EAAAA,GAWO,cAVLuD,EAAAA,EAAAA,IASS85D,EAAA,CARPjnC,MAAM,SACLknC,QAASp9D,EAAAq3C,QAAU,gBAAkB,oB,mBAEtC,iBAIE,EAJFh0C,EAAAA,EAAAA,IAIEkvE,EAAA,CAHCC,KAAMxyE,EAAAo9I,UACN,cAAa,GACb,gBAAe,G,kFGtFnB1+I,MAAM,Q,uQCOfgL,EAAAA,GAAAA,IACEy9G,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACA+2B,EAAAA,IACA/V,EAAAA,KAiHF,QA9GsB,CACpBhvI,KAAM,gBACNsF,MAAO,CACL,UACA,SACA,UACA,YACA,cACA,aACA,cACA,mBACA,qBACA,oBACA,yBACA,4BAEFlH,KAAI,WACF,MAAO,CACL4mJ,WAAYh/I,KAAKwhB,OAAOrjB,KAAK1E,OAC7BwlJ,gBAAgB,EAEpB,EACA32I,S,qWAAQpP,CAAA,CACNgmJ,4BAA2B,WACzB,OAAOl/I,KAAK2T,aAAa+B,0BAC3B,EAQAypI,WAAU,WACR,OAAIn/I,KAAKo/I,aAAcp/I,KAAKu0E,SACRv0E,KAAKwhB,OAAOsxD,SAAS5/B,MAAM,UAAUz5C,OAASuG,KAAKg/I,WAAa,GAC/D,EACvB,EACAK,YAAW,WACT,OAAOr/I,KAAKwhB,OAAOqxD,QAAQp5E,OAAS,GACtC,EAEA6lJ,wBAAuB,WACrB,QAASt/I,KAAKwhB,OAAOqxD,SAAW7yE,KAAKk/I,2BACvC,EACAK,qBAAoB,WAClB,OAAOv/I,KAAKm/I,cAAgBn/I,KAAKwhB,OAAOqxD,SAAW7yE,KAAKk/I,4BAC1D,EACAM,kBAAiB,WACf,OAAOx/I,KAAKs/I,0BAA4Bt/I,KAAKgmE,gBAC/C,EACAy5E,eAAc,WACZ,OAAOz/I,KAAKu/I,uBAAyBv/I,KAAK+lE,WAC5C,EACA25E,YAAW,WACT,OAAQ1/I,KAAKu/I,sBAAwBv/I,KAAK+lE,aAAiB/lE,KAAKs/I,yBAA2Bt/I,KAAKgmE,gBAClG,EACA25E,gBAAe,WACb,OAAO3/I,KAAKwhB,OAAOH,YAAYnqB,KAAI,SAAAq7E,GAAI,OAAIC,EAAAA,GAAAA,SAAkBD,EAAK/7B,SAAS,GAC7E,IACGqN,EAAAA,EAAAA,IAAW,CAAC,kBAEjB5iD,WAAY,CACVwwE,YAAAA,EAAAA,GAEF3jB,QAAO,WAAI,IAAApsD,EAAA,KACT1B,KAAKwhB,OAAOngB,YAAcrB,KAAKwhB,OAAOngB,WAAWia,SAAQ,SAAA29H,GACvD,IAAQnhJ,EAAOmhJ,EAAPnhJ,GACR4J,EAAKgK,OAAOjR,SAAS,qBAAsB3C,EAC7C,GACF,EACA+H,QAAS,CACP88I,aAAY,SAAE12I,GAAO,IAAA0C,EAAA,KACnB,IAAI3I,KAAKi/I,eAAT,CACAj/I,KAAKi/I,gBAAiB,EACtBj/I,KAAKkG,MAAM,aAAcD,GACzB,IAAQjE,EAAuCiE,EAAvCjE,gBAAiBC,EAAsBgE,EAAtBhE,kBACzBD,EACG7I,QAAO,SAAAunC,GAAO,OAAKA,EAAQ57B,SAAS,IACpCwW,SAAQ,SAAAolB,GACP,IAAQ/gC,EAAiB+gC,EAAjB/gC,QAASJ,EAAQmhC,EAARnhC,IACXkI,EAAgB9H,EAAQxC,QAAQ,aAAc,IACpD,GAAKsK,EAAcvN,WAAW,KAA9B,CACA,IAAM0lJ,EAASn4I,EAAcvL,MAAM,GAC7Bq2I,EAAOhzI,EAAIpC,QAAQ,eAAgB,IAAIA,QAAQ,SAAU,IAC/DwL,EAAK+C,OAAOjR,SAAS,qBAAsB,GAAFpB,OAAKumJ,EAAM,KAAAvmJ,OAAIk5I,GAHd,CAI5C,IAOFvyI,KAAKg/I,WAAa/8I,EAAkB6S,QAAO,SAACC,EAAK2rB,GAC/C,OAAO3rB,EAAM2rB,EAAQv6B,YAAY1M,OAAS,CAC5C,GAAGuG,KAAKg/I,WAtBuB,CAuBjC,EACApe,eAAc,WACR5gI,KAAKu/I,qBACPv/I,KAAK6/I,oBACI7/I,KAAKs/I,yBACdt/I,KAAK8/I,wBAET,EACA3/I,gBAAe,SAAEtD,GACf,MAAO,QAAPxD,OAAewD,EACjB,ICrHJ,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,2FFNzD0D,EAAAA,EAAAA,IA+FM,OA9FJlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,aAAY,YACI5oD,EAAA4zE,Y,EAEtB9zE,EAAAA,EAAAA,GAyFM,MAzFND,EAyFM,CAvFIG,EAAA6gB,OAAOmuF,mBAAgB,WAD/BpvG,EAAAA,EAAAA,IAwBM,O,MAtBJlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,kBAAiB,SACH5oD,EAAA0+I,cAAgB1+I,EAAAslE,uB,EAEpCjiE,EAAAA,EAAAA,IAIEguE,EAAA,CAHA3yE,MAAM,qBACL+B,KAAMT,EAAA6gB,OAAOmuF,iBACbp3G,MAAOoI,EAAA6gB,OAAO1oB,Q,mCAEjB2H,EAAAA,EAAAA,GAMS,UAJPpB,MAAM,2CACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAo/I,0BAAAp/I,EAAAo/I,yBAAAjmJ,MAAA6G,EAAAhE,UAAwB,mB,QAErCgE,EAAA8L,GAAG,6BAAD,YAJG9L,EAAA0+I,aAAe1+I,EAAAslE,uBAAkB,SAM3CxlE,EAAAA,EAAAA,GAMS,UAJPpB,MAAM,2CACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAo/I,0BAAAp/I,EAAAo/I,yBAAAjmJ,MAAA6G,EAAAhE,UAAwB,mB,QAErCgE,EAAA8L,GAAG,6BAAD,YAJG9L,EAAA0+I,cAAgB1+I,EAAAslE,uBAAkB,qBAO9CxlE,EAAAA,EAAAA,GA8DM,OA7DHpB,OAAKkqD,EAAAA,EAAAA,IAAA,iBAAmB5oD,EAAA8+I,gBACnB,kB,WAENh/I,EAAAA,EAAAA,GAOS,UALPpB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,0CAAyC,YACzB5oD,EAAA49D,WACrBz+D,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAigI,gBAAAjgI,EAAAigI,eAAA9mI,MAAA6G,EAAAhE,UAAc,mB,QAE3BgE,EAAA8L,GAAG,sBAAD,UALG9L,EAAA8+I,kBAQD9+I,EAAA6+I,mBAAuB7+I,EAAAy+I,YAAcz+I,EAAA6gB,OAAOmuF,kB,iBAAgB,WADrEhqD,EAAAA,EAAAA,IAUEqsB,EAAA,C,MARC3yE,OAAKkqD,EAAAA,EAAAA,IAAA,iBAAoB5oD,EAAAy+I,YACpB,oBACLh+I,KAAMT,EAAA6gB,OAAOsxD,SACbv6E,MAAOoI,EAAA6gB,OAAO1oB,OACd,gBAAc,EACd0I,UAAWb,EAAAgT,aAAanS,UACxBH,WAAYV,EAAA6gB,OAAOngB,WACnBs7I,aAAYh8I,EAAAg8I,c,oFAGfl8I,EAAAA,EAAAA,GA8BS,UA5BPpB,MAAM,wCACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAigI,gBAAAjgI,EAAAigI,eAAA9mI,MAAA6G,EAAAhE,UAAc,kB,mBAE3BgE,EAAA8L,GAAG,wBAAyB,IAC/B,GACQ9L,EAAAg/I,gBAAgB7jJ,SAAS,WAAD,WADhC6pD,EAAAA,EAAAA,IAGEI,EAAA,C,MADAj8C,KAAK,Y,eAGCnJ,EAAAg/I,gBAAgB7jJ,SAAS,WAAD,WADhC6pD,EAAAA,EAAAA,IAGEI,EAAA,C,MADAj8C,KAAK,Y,eAGCnJ,EAAAg/I,gBAAgB7jJ,SAAS,WAAD,WADhC6pD,EAAAA,EAAAA,IAGEI,EAAA,C,MADAj8C,KAAK,Y,eAGCnJ,EAAAg/I,gBAAgB7jJ,SAAS,aAAD,WADhC6pD,EAAAA,EAAAA,IAGEI,EAAA,C,MADAj8C,KAAK,W,eAGCnJ,EAAA6gB,OAAOgJ,MAAQ7pB,EAAA6gB,OAAOgJ,KAAKkuD,UAAO,WAD1C/yB,EAAAA,EAAAA,IAGEI,EAAA,C,MADAj8C,KAAK,a,eAGCnJ,EAAA6gB,OAAO6uF,OAAI,WADnB1qD,EAAAA,EAAAA,IAGEI,EAAA,C,MADAj8C,KAAK,W,4BA3BCnJ,EAAA6+I,sBAAiB,SA8B3B/+I,EAAAA,EAAAA,GAMS,UAJPpB,MAAM,uCACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAUH,EAAAigI,gBAAAjgI,EAAAigI,eAAA9mI,MAAA6G,EAAAhE,UAAc,mB,QAE3BgE,EAAAw+I,WAAax+I,EAAA8L,GAAG,qBAAuB9L,EAAA8L,GAAG,wBAAD,YAJpC9L,EAAA++I,cAAgB/+I,EAAAq/I,gBAAW,KAQ5Br/I,EAAA6+I,mBAAqB,gBAAlCl3F,EAAAA,EAAAA,IAAkC3nD,EAAAkI,OAAA,WAAAJ,IAAA,O,ylBG/EtC4B,EAAAA,GAAAA,IACEC,EAAAA,IACAw9G,EAAAA,IACAC,EAAAA,IACAC,EAAAA,IACA+2B,EAAAA,IACA/V,EAAAA,KAGF,IAEwClyI,EAFlCggJ,EAAY,SAAA98I,GAAI,OAAIA,EAAK45G,OAAO,GAAGsV,cAAgBlvH,EAAKkC,MAAM,EAAE,EAahE+jJ,EAAiC,SAACh/H,EAAKjnB,GAC3C,IAAMg9I,EAAYF,EAAU98I,GACtB+9I,EAAS,mBAAH1+I,OAAsB29I,GAC5BC,EAAmB,eAAH59I,OAAkB29I,GACpC/1H,EAAI82H,GACN92H,EAAI82H,KAEJ92H,EAAIg2H,IAAqBh2H,EAAIg2H,EAEjC,EAuFA,QArFsB,CACpBj9I,KAAM,gBACNsF,MAAO,CACL,SACA,UACA,UACA,YACA,cACA,aACA,wBACA,6BACA,8BACA,mCACA,+BACA,sCAEFlH,KAAI,WACF,MAAO,CACL8nJ,wBAAyBlgJ,KAAKggJ,aAAgBhgJ,KAAKk4I,gBAAkBl4I,KAAKu+D,QAC1E4hF,gCAAgC,EAEhCC,8BAA+BpgJ,KAAK0L,OAAOoP,QAAQnH,aAAa+B,2BAEpE,EACApN,SAAQpP,EAAAA,EAAAA,EAAA,IA9C8BpC,EA+CD,CAAC,cAAe,mBAAoB,sBA/C3BA,EAAKge,QAAO,SAACV,EAAKpa,GAChE,IAAMg9I,EAAYF,EAAU98I,GACtB+9I,EAAS,mBAAH1+I,OAAsB29I,GAC5BgB,EAAiB,aAAH3+I,OAAgB29I,GAC9BC,EAAmB,eAAH59I,OAAkB29I,GAIxC,OAHA5iI,EAAIpa,GAAQ,WACV,YAAgCuI,IAAvBvC,KAAKmyI,MAAM4F,SAAiDx1I,IAAxBvC,KAAKyL,OAAOssI,KAA0B/3I,KAAK+3I,GAAkC/3I,KAAKi3I,GAA5Bj3I,KAAKg4I,EAC1G,EACO5jI,CACT,GAAG,CAAC,KAsC6F,IAC7FisI,WAAU,WACR,OAAKrgJ,KAAKwhB,OAAO6uF,KACVrwG,KAAKwhB,OAAO6uF,KAAK9wG,MAAQS,KAAKwhB,OAAO6tF,UAAY,KAAOrvG,KAAKwhB,OAAO6uF,KAD7C,IAEhC,EACAlpC,gBAAe,WACb,OAAQnnE,KAAK2T,aAAawzD,kBAAoBnnE,KAAKk4I,gBAChDl4I,KAAK2T,aAAayzD,uBAAyBpnE,KAAKk4I,cACrD,EACAoI,iBAAgB,WACd,SAAKtgJ,KAAKwhB,OAAOmG,MAGb3nB,KAAKwhB,OAAOqxD,SAAW7yE,KAAKk/I,4BAIlC,EACAqB,eAAc,WACZ,OAAIvgJ,KAAKu0E,QACA,QACGv0E,KAAK2T,aAAawzD,kBAAoBnnE,KAAKk4I,gBACpDl4I,KAAK2T,aAAayzD,uBAAyBpnE,KAAKk4I,gBAChDl4I,KAAKwhB,OAAOH,YAAY5nB,OAASuG,KAAKy4F,cAChC,OAEF,QACT,EACAA,cAAa,WACX,OAAOz4F,KAAK2T,aAAa8kF,aAC3B,IACG50C,EAAAA,EAAAA,IAAW,CAAC,mBACZD,EAAAA,EAAAA,IAAS,CACV/vC,YAAa,SAAAnZ,GAAK,OAAIA,EAAMqB,MAAM8X,WAAW,KAGjD5S,WAAY,CACVi0E,WAAAA,EAAAA,EACAsrE,KAAAA,EACAprE,QAAAA,EAAAA,EACAC,YAAAA,EAAAA,EACAjD,WAAAA,GAEFvyE,QAAS,CACPggJ,kBAAiB,WACfI,EAA+BjgJ,KAAM,cACvC,EACA8/I,uBAAsB,WACpBG,EAA+BjgJ,KAAM,mBACvC,EACA+/I,yBAAwB,WACtBE,EAA+BjgJ,KAAM,qBACvC,EACAq2C,SAAQ,WAAI,IAAA30C,EAAA,KACJ2f,EAAsC,SAAxBrhB,KAAKugJ,eAA4BvgJ,KAAKwhB,OAAOH,YAAcrhB,KAAKygJ,mBACpF,OAAO,kBAAM/+I,EAAKgK,OAAOjR,SAAS,WAAY4mB,EAAY,CAC5D,ICzHJ,GAFiC,OAAgB,EAAQ,CAAC,CAAC,S,8JRNzD9gB,EAAAA,EAAAA,IAuDM,OAtDJlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,YACC5oD,EAAA4zE,Y,EAEtBjsB,EAAAA,EAAAA,IAAsB3nD,EAAAkI,OAAA,WACtB7E,EAAAA,EAAAA,IAgDaovE,EAAA,CA/CV5xD,OAAQ7gB,EAAA6gB,OACR+yD,QAAS5zE,EAAA4zE,QACT,cAAa5zE,EAAAy+I,WACb,eAAcz+I,EAAAolE,YACd,oBAAmBplE,EAAAqlE,iBACnB,uBAAsBrlE,EAAAslE,mBACtB,sBAAqBtlE,EAAAk/I,kBACrB,2BAA0Bl/I,EAAAm/I,uBAC1B,8BAA6Bn/I,EAAAo/I,yBAC7BpD,aAAU97I,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAuF,MAAM,aAAcg/C,EAAM,I,mBAEvC,iBAKM,CALKvkD,EAAA6gB,OAAOgJ,MAAQ7pB,EAAA6gB,OAAOgJ,KAAKkuD,UAAY/3E,EAAA4zE,UAAO,WAAzDh0E,EAAAA,EAAAA,IAKM,MAAAC,EAAA,EAJJwD,EAAAA,EAAAA,IAGE08I,EAAA,CAFC,YAAW//I,EAAA6gB,OAAOgJ,KAClBjyB,MAAOoI,EAAA6gB,OAAO1oB,Q,iCAIH6H,EAAA6gB,OAAOgJ,MAAQ7pB,EAAA6gB,OAAOgJ,KAAKkuD,SAAW/3E,EAAA4zE,UAAO,WAA7Dh0E,EAAAA,EAAAA,IAKM,MAAAokD,EAAA,EAJJ3gD,EAAAA,EAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,SACLw8C,KAAK,W,eAK6B,IAA9B3lD,EAAA6gB,OAAOH,YAAY5nB,SAAM,WADjCksD,EAAAA,EAAAA,IAUEqsF,EAAA,C,MARA3yI,MAAM,yBACLk1E,QAAS5zE,EAAA4zE,QACT5sD,KAAMhnB,EAAA2/I,iBACNj/H,YAAa1gB,EAAA6gB,OAAOH,YACpB6O,MAAOvvB,EAAA4zE,QAAU,EAAI,EACrBjuB,KAAM3lD,EAAA4/I,eACN31B,OAAI/pH,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAuF,MAAM,YAAavF,EAAAgjC,WAAW7rC,GAAE,GACtC+yH,QAAKhqH,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAuF,MAAM,aAAcvF,EAAAgjC,WAAW7rC,GAAE,I,0EAInC6I,EAAA0/I,YAAe1/I,EAAAqiI,WAAcriI,EAAA4zE,S,iBAAO,WAD5Ch0E,EAAAA,EAAAA,IASM,MATNskD,EASM,EALJ7gD,EAAAA,EAAAA,IAIE28I,EAAA,CAHCtwC,KAAM1vG,EAAA6gB,OAAO6uF,KACb/pD,KAAM3lD,EAAA4/I,eACN54H,KAAMhnB,EAAA2/I,kB,2NAIbh4F,EAAAA,EAAAA,IAAsB3nD,EAAAkI,OAAA,a,sFS/CpBgoC,IAAI,U,8DC+DV,QAvEmB,CACjBvxC,MAAO,CACL,MACA,iBACA,WACA,iBACA,mBACA,MACA,SACA,QACA,UACA,WAEFlH,KAAI,WACF,MAAO,CAELwoJ,QAAS5gJ,KAAKguD,IACd+qC,SAAU/4F,KAAK0L,OAAOoP,QAAQnH,aAAaolF,SAE/C,EACAzwF,SAAU,CACRsrI,SAAQ,WACN,QAAK5zI,KAAK4gJ,SAIH5gJ,KAAK+4F,WAA+B,cAAlB/4F,KAAKw2C,UAA4Bx2C,KAAK4gJ,QAAQ7kI,SAAS,QAClF,EACAi8C,MAAK,WACH,IAAM6oF,EAAW,SAAC/9D,GAAG,MAAK,MAAMr1E,KAAKq1E,GAAOA,EAAM,KAAOA,CAAG,EAC5D,MAAO,CACL52E,OAAQlM,KAAKkM,OAAS20I,EAAS7gJ,KAAKkM,QAAU,KAC9CuH,MAAOzT,KAAKyT,MAAQotI,EAAS7gJ,KAAKyT,OAAS,KAE/C,GAEF5T,QAAS,CACPihJ,SAAQ,WACF9gJ,KAAK+gJ,UACP/gJ,KAAK4gJ,QAAU5gJ,KAAK+gJ,QAExB,EACA5qF,OAAM,WACJ,GAAKn2D,KAAK4gJ,QAAV,CAGA,IAAMj3I,EAAQ3J,KAAKoJ,MAAM4kD,IACzB,GAAKrkD,EAAL,CACA3J,KAAKghJ,kBAAoBhhJ,KAAKghJ,iBAAiBr3I,GAC/C,IAAMs3I,EAASjhJ,KAAKoJ,MAAM63I,OAC1B,GAAKA,EAAL,CACA,IAAMxtI,EAAQ9J,EAAM6gH,aACdt+G,EAASvC,EAAM8nG,cACrBwvC,EAAOxtI,MAAQA,EACfwtI,EAAO/0I,OAASA,EAChB+0I,EAAO/uC,WAAW,MAAME,UAAUzoG,EAAO,EAAG,EAAG8J,EAAOvH,EALnC,CAHD,CAFlB,CAWF,EACAkoC,QAAO,WACLp0C,KAAKkhJ,gBAAkBlhJ,KAAKkhJ,gBAC9B,GAEFtzF,MAAO,CACLI,IAAG,WACDhuD,KAAK4gJ,QAAU5gJ,KAAKguD,GACtB,EACA+yF,QAAO,WACL/gJ,KAAKoM,IAAI+0I,gBAAgB,cAC3B,IC1DJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCFNzD5gJ,EAAAA,EAAAA,IAuBM,OAtBJlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,cAAa,CAAAqqF,SACCjzI,EAAAizI,YACnB57E,OAAK2E,EAAAA,EAAAA,IAAEh8D,EAAAq3D,Q,CAGAr3D,EAAAizI,WAAQ,WADhBrzI,EAAAA,EAAAA,IAGE,SAHFC,EAGE,wCAEFD,EAAAA,EAAAA,IAWC,OAVCswC,IAAI,MACHpoC,IAAK9H,EAAAigJ,QACL1qF,IAAKv1D,EAAAu1D,IACL9jD,MAAOzR,EAAAu1D,IACP,WAAUv1D,EAAAogJ,QACV/yF,IAAKrtD,EAAAigJ,QACLx3B,eAAgBzoH,EAAAyoH,eAChBp+G,QAASrK,EAAAqK,QACTmrD,OAAIt1D,EAAA,KAAAA,EAAA,qBAAEF,EAAAw1D,QAAAx1D,EAAAw1D,OAAAr8D,MAAA6G,EAAAhE,UAAM,GACZy3C,QAAKvzC,EAAA,KAAAA,EAAA,qBAAEF,EAAAyzC,SAAAzzC,EAAAyzC,QAAAt6C,MAAA6G,EAAAhE,UAAO,I,aAEjB2rD,EAAAA,EAAAA,IAAQ3nD,EAAAkI,OAAA,c,yHGVZ,SACE7O,KAAM,UACNsF,MAAO,CAAC,OAAQ,aAAc,aAAc,eAAgB,eAC5DlH,KAAG,WACD,MAAO,CACLozG,aAAc,CAAE/iG,IAAK,WAAYmkD,IAAK,GACtC5L,SAAU,KAEd,EACA14C,SAAU,CACR84I,iBAAe,WACb,IAAMrkE,EAAgBpI,EAAAA,EAAAA,wBAAsC30E,KAAK40E,MAAM1lE,QACvE,MAA4B,iBAAdlP,KAAKmzE,KACf,IAAIj9C,KAAKA,KAAK+hB,MAAMj4C,KAAKmzE,OAAO6X,eAAejO,GAC/C/8E,KAAKmzE,KAAK6X,eAAejO,EAC/B,EACAskE,mBAAiB,WACf,IAAMC,EAAathJ,KAAK40E,MAAM2sE,GAAGvhJ,KAAKwrG,aAAa/iG,IAAKzI,KAAKwrG,aAAa5+C,IAAK,CAAC5sD,KAAKwrG,aAAa5+C,MAElG,MAAgC,iBAArB5sD,KAAKwhJ,aAAsD,aAA1BxhJ,KAAKwrG,aAAa/iG,IACrDzI,KAAK40E,MAAM78E,EAAEiI,KAAKwhJ,YAAa,CAACF,IAGlCA,CACT,GAEF1zF,MAAO,CACLulB,KAAG,SAAGhlB,EAAQyQ,GACRA,IAAWzQ,IACb/yD,aAAa4E,KAAKghD,UAClBhhD,KAAKyhJ,4BAET,GAEFr2I,QAAM,WACJpL,KAAKyhJ,2BACP,EACAh3I,UAAQ,WACNrP,aAAa4E,KAAKghD,SACpB,EACAnhD,QAAS,CACP4hJ,0BAAwB,WACtB,IAAMh2C,EAA4C,iBAAtBzrG,KAAKyrG,aAA4BzrG,KAAKyrG,aAAe,EACjFzrG,KAAKwrG,aAAexrG,KAAK0hJ,WACrB9Y,EAAAA,GAAuB5oI,KAAKmzE,KAAMs4B,GAClCm9B,EAAAA,GAA4B5oI,KAAKmzE,KAAMs4B,GAEvCzrG,KAAKynE,aACPznE,KAAKghD,SAAW9lD,WACd8E,KAAKyhJ,0BACL,IAAOzhJ,KAAKynE,YAGlB,IC3DJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCDJzDlnE,EAAAA,EAAAA,IAKO,QAJJohJ,SAAUl2I,EAAA0nE,KACV/gE,MAAO2iE,EAAAqsE,mB,QAELrsE,EAAAssE,oBAAkB,EAAA7gJ,E,wFESzB6J,EAAAA,GAAAA,IACEgqH,EAAAA,KASF,QAN+B,CAC7B/0H,MAAO,CACLtD,KAAM/D,SCbV,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,sDDHjD0I,EAAA3E,MAAQ2E,EAAA3E,KAAKqyG,oCAAiC,WADtD1oD,EAAAA,EAAAA,IAIEI,EAAA,C,MAFAj8C,KAAK,OACJsI,MAAOzR,EAAA8L,GAAG,qC,4JEIfpC,EAAAA,GAAAA,IACEu3I,EAAAA,KA6BF,QA1BmB,CACjBtiJ,MAAO,CACL,OACA,eACA,UACA,OAEFlH,KAAI,WACF,MAAO,CACLypJ,iBAAiB,EACjBtsI,cAAe,GAAFlc,OAAK2G,KAAK0L,OAAOhR,MAAM2X,SAAS6C,OAASlV,KAAK0L,OAAOhR,MAAM2X,SAASkD,eAErF,EACAtU,WAAY,CACVgD,WAAAA,EAAAA,GAEFpE,QAAS,CACPiiJ,OAAM,SAAE9zF,GACN,OAASA,GAAOhuD,KAAK6hJ,gBAAmB7hJ,KAAKuV,cAAgBy4C,CAC/D,EACAkzF,eAAc,WACZlhJ,KAAK6hJ,iBAAkB,CACzB,ICzBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,0FCNzDthJ,EAAAA,EAAAA,IAuBO,QAtBLlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,SAAQ,YACQ5oD,EAAA4zE,Y,CAGd5zE,EAAA3E,OAAI,WADZ2pD,EAAAA,EAAAA,IAQEglE,EAAA,C,MANAtrH,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,SAAQ,YAKQ5oD,EAAA4zE,QAAO,iBAAoB5zE,EAAAq1E,gBAJhD9f,IAAKv1D,EAAA3E,KAAKK,eACV+V,MAAOzR,EAAA3E,KAAKK,eACZ2xD,IAAKrtD,EAAAmhJ,OAAOnhJ,EAAA3E,KAAKO,4BACjB,mBAAkBoE,EAAAugJ,gB,uEAGrB3gJ,EAAAA,EAAAA,IAIE,O,MAFAlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,sBAAqB,YACL5oD,EAAA4zE,Y,SAGhB5zE,EAAAksG,MAAG,WADXlnD,EAAAA,EAAAA,IAIEI,EAAA,C,MAFAj8C,KAAK,QACLzK,MAAM,oB,8GCXDA,MAAM,a,GACJA,MAAM,a,GAUFA,MAAM,mC,GAuBRA,MAAM,gB,GACJA,MAAM,Y,cA6DNA,MAAM,e,SAQLA,MAAM,mB,SAMNA,MAAM,mB,SAMNA,MAAM,mB,mBAcRA,MAAM,Y,GAKTA,MAAM,a,SAGPA,MAAM,a,SAMNA,MAAM,e,qBAuBIL,MAAM,Y,GAGNA,MAAM,S,GAGNA,MAAM,W,GAGNA,MAAM,Q,SAQlBK,MAAM,qB,GAEDA,MAAM,a,sDAqEXA,MAAM,qB,SAcVA,MAAM,c,SAIJA,MAAM,e,GAO4BoB,EAAAA,EAAAA,GAAI,mB,qBA6CpCpB,MAAM,e,gFCrUHA,MAAM,iB,mBAgBL44D,KAAK,YACL54D,MAAM,oB,SAmBR44D,KAAK,YACL54D,MAAM,oB,qDC1ClBgL,EAAAA,GAAAA,IAAY2gD,EAAAA,KA+GZ,SArGwB,CACtB1rD,MAAO,CACL,QAEFlH,KAAI,WACF,MAAO,CACL+iB,KAAM,CACJ4mI,WAfW,2BAgBXC,YAfY,sBAgBZC,eAfe,yBAgBfC,4BAf4B,sCAgB5BC,yBAfyB,mCAgBzBC,QAfQ,kBAgBRC,WAfW,sBAiBbC,sBAAsB,EACtBnnE,SAAS,EAEb,EACAl6E,WAAY,CACVwqH,YAAAA,EAAAA,EACA7kD,QAAAA,EAAAA,SAEFt+D,SAAU,CACRi6I,QAAO,WACL,OAAO,IAAI9/I,IAAIzC,KAAKhE,KAAKmf,KAC3B,EACAqnI,aAAY,WACV,OAAOxiJ,KAAKhE,KAAKshE,WAAat9D,KAAKhE,KAAK49B,aAA4D,UAA7C55B,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAYokD,IAC7F,EACAwqF,yBAAwB,WACtB,OAAOziJ,KAAK0iJ,WAAW,gCACzB,EACAC,iBAAgB,WACd,OAAO3iJ,KAAK0iJ,WAAW,eACzB,EACAE,gBAAe,WACb,OAAO5iJ,KAAK0L,OAAOhR,MAAM2X,SAASwwI,oBAAsB7iJ,KAAK0iJ,WAAW,oBAC1E,GAEF7iJ,QAAS,CACPijJ,OAAM,SAAEv/I,GACN,OAAOvD,KAAKuiJ,QAAQ/+I,IAAID,EAC1B,EACAm/I,WAAU,SAAEK,GACV,OAAO/iJ,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAYwsC,WAAWvkD,SAASinJ,EACjE,EACAC,UAAS,SAAEnmJ,GAAK,IAAA6E,EAAA,KACRjJ,EAAQuH,KAAK0L,OACf1L,KAAKuiJ,QAAQ/+I,IAAI3G,GACnBpE,EAAMiC,MAAM+wB,IAAIC,kBAAkB4N,UAAU,CAAEt9B,KAAMgE,KAAKhE,KAAMa,IAAAA,IAAOpF,MAAK,SAAA07B,GACpEA,EAAS/V,IACd3kB,EAAM6Z,OAAO,YAAa,CAAEtW,KAAM0F,EAAK1F,KAAMa,IAAAA,GAC/C,IAEApE,EAAMiC,MAAM+wB,IAAIC,kBAAkByN,QAAQ,CAAEn9B,KAAMgE,KAAKhE,KAAMa,IAAAA,IAAOpF,MAAK,SAAA07B,GAClEA,EAAS/V,IACd3kB,EAAM6Z,OAAO,UAAW,CAAEtW,KAAM0F,EAAK1F,KAAMa,IAAAA,GAC7C,GAEJ,EACAomJ,YAAW,SAAEzpH,GAAO,IAAA7wB,EAAA,KACZlQ,EAAQuH,KAAK0L,OACf1L,KAAKhE,KAAK09B,OAAOF,GACnB/gC,EAAMiC,MAAM+wB,IAAIC,kBAAkBi4E,YAAY,CAAE3nG,KAAMgE,KAAKhE,KAAMw9B,MAAAA,IAAS/hC,MAAK,SAAA07B,GACxEA,EAAS/V,IACd3kB,EAAM6Z,OAAO,cAAe,CAAEtW,KAAM2M,EAAK3M,KAAMw9B,MAAAA,EAAOx6B,OAAO,GAC/D,IAEAvG,EAAMiC,MAAM+wB,IAAIC,kBAAkBg4E,SAAS,CAAE1nG,KAAMgE,KAAKhE,KAAMw9B,MAAAA,IAAS/hC,MAAK,SAAA07B,GACrEA,EAAS/V,IACd3kB,EAAM6Z,OAAO,cAAe,CAAEtW,KAAM2M,EAAK3M,KAAMw9B,MAAAA,EAAOx6B,OAAO,GAC/D,GAEJ,EACA8/B,uBAAsB,WACpB9+B,KAAK0L,OAAOjR,SAAS,yBAA0B,CAAEuB,KAAMgE,KAAKhE,MAC9D,EACAknJ,iBAAgB,SAAElP,GAChBh0I,KAAKsiJ,qBAAuBtO,CAC9B,EACAvwC,WAAU,WAAI,IAAAz6F,EAAA,KACNvQ,EAAQuH,KAAK0L,OACb1P,EAAOgE,KAAKhE,KACVlE,EAAakE,EAAblE,GAAIkC,EAASgC,EAAThC,KACZvB,EAAMiC,MAAM+wB,IAAIC,kBAAkB+3E,WAAW,CAAEznG,KAAAA,IAC5CvE,MAAK,SAAAC,GACJsR,EAAK0C,OAAOjR,SAAS,yBAAyB,SAAA+mB,GAAM,OAAIxlB,EAAKlE,KAAO0pB,EAAOxlB,KAAKlE,EAAE,IAClF,IAAMqrJ,EAAiC,0BAArBn6I,EAAK8vD,OAAO9+D,MAAyD,iBAArBgP,EAAK8vD,OAAO9+D,KACxEopJ,EAAep6I,EAAK8vD,OAAO52B,OAAOloC,OAASA,GAAQgP,EAAK8vD,OAAO52B,OAAOpqC,KAAOA,EAC/EqrJ,GAAaC,GACf/iJ,OAAOm/D,QAAQmqB,MAEnB,GACJ,EACA05D,WAAU,SAAErkJ,GACVgB,KAAKm7E,QAAUn8E,CACjB,I,gBC1GJ,MAEA,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,iHFNzDuB,EAAAA,EAAAA,IAiKM,aAhKJyD,EAAAA,EAAAA,IAsIUqjE,EAAA,CArIRC,QAAQ,QACRjoE,MAAM,2BACNw3E,UAAU,SACT1mD,OAAQ,CAAAhkB,EAAA,GACR0hE,OAAIhtE,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAA0iJ,YAAW,EAAD,GAChBlvG,QAAKtzC,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAA0iJ,YAAW,EAAD,I,CAEP1jJ,SAAO0+D,EAAAA,EAAAA,KAChB,iBAkHM,EAlHN59D,EAAAA,EAAAA,GAkHM,MAlHND,EAkHM,CAjHQG,EAAA6hJ,eAAY,WAAxBjiJ,EAAAA,EAAAA,IAkBO,OAAAokD,EAAA,EAjBLlkD,EAAAA,EAAAA,GAKS,UAJPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAsiJ,YAAY,QAAD,K,QAEhBtiJ,EAAA8L,GAAK9L,EAAA3E,KAAK09B,OAAO0sD,MAAQ,oCAAsC,qCAAzC,IAE3B3lF,EAAAA,EAAAA,GAKS,UAJPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAsiJ,YAAY,YAAD,K,QAEhBtiJ,EAAA8L,GAAK9L,EAAA3E,KAAK09B,OAAO2sD,UAAY,wCAA0C,yCAA7C,GAGvB1lF,EAAA8hJ,0BAA4B9hJ,EAAAgiJ,mBAAgB,WADpDpiJ,EAAAA,EAAAA,IAIE,MAJFskD,KAIE,kCAGIlkD,EAAA8hJ,2BAAwB,WADhCliJ,EAAAA,EAAAA,IAMS,U,MAJPlB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAm+B,wBAAsB,K,QAE3Bn+B,EAAA8L,GAAK9L,EAAA3E,KAAK49B,YAAc,wCAA0C,4CAA7C,oBAGlBj5B,EAAAgiJ,mBAAgB,WADxBpiJ,EAAAA,EAAAA,IAMS,U,MAJPlB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAuiJ,kBAAiB,EAAD,K,QAErBviJ,EAAA8L,GAAG,wCAAD,oBAGC9L,EAAAiiJ,kBAAe,WADvBriJ,EAAAA,EAAAA,IAIE,MAJFykD,KAIE,eACUrkD,EAAAiiJ,kBAAe,WAA3BriJ,EAAAA,EAAAA,IA0EO,OAAA0kD,EAAA,EAzELxkD,EAAAA,EAAAA,GASS,UARPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAqiJ,UAAUriJ,EAAAwa,KAAK4mI,WAAU,I,EAEjCthJ,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAAmiJ,OAAOniJ,EAAAwa,KAAK4mI,gB,iBAC/C,KACFn9F,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,oCAAD,MAEPhM,EAAAA,EAAAA,GASS,UARPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAqiJ,UAAUriJ,EAAAwa,KAAK6mI,YAAW,I,EAElCvhJ,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAAmiJ,OAAOniJ,EAAAwa,KAAK6mI,iB,iBAC/C,KACFp9F,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,qCAAD,MAEPhM,EAAAA,EAAAA,GASS,UARPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAqiJ,UAAUriJ,EAAAwa,KAAK8mI,eAAc,I,EAErCxhJ,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAAmiJ,OAAOniJ,EAAAwa,KAAK8mI,oB,iBAC/C,KACFr9F,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,wCAAD,MAEPhM,EAAAA,EAAAA,GASS,UARPpB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAqiJ,UAAUriJ,EAAAwa,KAAKinI,QAAO,I,EAE9B3hJ,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAAmiJ,OAAOniJ,EAAAwa,KAAKinI,a,iBAC/C,KACFx9F,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,iCAAD,KAGC9L,EAAA3E,KAAKshE,WAAQ,WADrB/8D,EAAAA,EAAAA,IAUS,U,MARPlB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAqiJ,UAAUriJ,EAAAwa,KAAK+mI,4BAA2B,I,EAElDzhJ,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAAmiJ,OAAOniJ,EAAAwa,KAAK+mI,iC,iBAC/C,KACFt9F,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,qDAAD,sBAGC9L,EAAA3E,KAAKshE,WAAQ,WADrB/8D,EAAAA,EAAAA,IAUS,U,MARPlB,MAAM,+BACLS,QAAKe,EAAA,KAAAA,EAAA,YAAAqkD,GAAA,OAAEvkD,EAAAqiJ,UAAUriJ,EAAAwa,KAAKgnI,yBAAwB,I,EAE/C1hJ,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAAmiJ,OAAOniJ,EAAAwa,KAAKgnI,8B,iBAC/C,KACFv9F,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,kDAAD,sBAGC9L,EAAA3E,KAAKshE,WAAQ,WADrB/8D,EAAAA,EAAAA,IAUS,U,MARPlB,MAAM,+BACLS,QAAKe,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAAqiJ,UAAUriJ,EAAAwa,KAAKknI,WAAU,I,EAEjC5hJ,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACc5oD,EAAAmiJ,OAAOniJ,EAAAwa,KAAKknI,gB,iBAC/C,KACFz9F,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,oCAAD,2C,IAKF66D,SAAOjJ,EAAAA,EAAAA,KAChB,iBAMS,EANT59D,EAAAA,EAAAA,GAMS,UALPpB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,uDAAsD,CAAA4xB,QAClDx6E,EAAAw6E,Y,mBAEPx6E,EAAA8L,GAAG,oCAAqC,IAC3C,IAAAzI,EAAAA,EAAAA,IAA8B+hD,EAAA,CAAtBj8C,KAAK,kBAAc,G,uBAIjC67C,EAAAA,EAAAA,IAwBW+V,EAAAA,GAAA,CAxBDvuB,GAAG,UAAQ,CAEXxsC,EAAA2hJ,uBAAoB,WAD5B38F,EAAAA,EAAAA,IAsBc29F,EAAA,C,MApBX,YAAW3iJ,EAAAuiJ,iBAAiBl3C,KAAKhsG,MAAM,I,CAE7B+uE,QAAM1Q,EAAAA,EAAAA,KACf,iBAA4C,mBAAzC19D,EAAA8L,GAAG,qCAAD,G,IAGIuiE,QAAM3Q,EAAAA,EAAAA,KACf,iBAKS,EALT59D,EAAAA,EAAAA,GAKS,UAJPpB,MAAM,qBACLS,QAAKe,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAAuiJ,kBAAiB,EAAD,K,QAErBviJ,EAAA8L,GAAG,mBAAD,IAEPhM,EAAAA,EAAAA,GAKS,UAJPpB,MAAM,4BACLS,QAAKe,EAAA,MAAAA,EAAA,aAAAqkD,GAAA,OAAEvkD,EAAA8iG,YAAU,K,QAEf9iG,EAAA8L,GAAG,qCAAD,G,sBAZT,iBAAgE,EAAhEhM,EAAAA,EAAAA,GAAgE,UAAAmkD,EAAAA,EAAAA,IAA1DjkD,EAAA8L,GAAG,kDAAD,G,4DGhJTpN,MAAM,kB,IAQAA,MAAM,iB,IAgBPoB,EAAAA,EAAAA,GAGE,OAFAw3D,KAAK,YACL54D,MAAM,oB,aAyCJA,MAAM,mC,oDCnEfA,MAAM,gB,IAOAA,MAAM,iB,mBAgBHA,MAAM,iD,ykBCjBtBgL,EAAAA,GAAAA,IAAYwpD,EAAAA,KAqFZ,SAnFqB,CACnBv0D,MAAO,CACL,QAEFlH,KAAI,WACF,MAAO,CAAC,CACV,EACA6I,WAAY,CACVwqH,YAAAA,EAAAA,EACA7kD,QAAAA,EAAAA,SAEFx7D,QAAO,WACLpL,KAAK0L,OAAOjR,SAAS,mBAAoBuF,KAAKhE,KAAKlE,GACrD,EACAwQ,SAAQpP,GAAAA,GAAA,IACH0qD,EAAAA,GAAAA,IAAS,CACVlzB,SAAU,SAAAh2B,GAAK,OAAIA,EAAM42B,MAAMZ,QAAQ,KACvC,IACF6yH,WAAU,WACR,OAAO,IAAI9gJ,IAAIzC,KAAKhE,KAAK++B,QAAQ7jC,KAAI,SAAA+6C,GAAC,OAAIA,EAAEn6C,EAAE,IAChD,EACAw5B,MAAK,WAAI,IAAA5vB,EAAA,KACP,OAAK1B,KAAKhE,KAAK++B,QACR/6B,KAAK0wB,SAASx5B,KAAI,SAAAJ,GAAI,OAAAoC,GAAAA,GAAA,GACxBpC,GAAI,IACP0sJ,OAAQ9hJ,EAAK6hJ,WAAW//I,IAAI1M,EAAKgB,KAAG,IAHP,EAKjC,IAEF+H,QAAS,CACP4jJ,WAAU,SAAE7yH,GAAQ,IAAAjoB,EAAA,KACd3I,KAAKujJ,WAAW//I,IAAIotB,GACtB5wB,KAAK0L,OAAOjR,SAAS,oBAAqB,CAAEy2B,UAAWlxB,KAAKhE,KAAKlE,GAAI84B,OAAAA,IAAUn5B,MAAK,SAAC07B,GAC9EA,EAAS/V,IACdzU,EAAK+C,OAAOjR,SAAS,mBAAoBkO,EAAK3M,KAAKlE,GACrD,IAEAkI,KAAK0L,OAAOjR,SAAS,iBAAkB,CAAEy2B,UAAWlxB,KAAKhE,KAAKlE,GAAI84B,OAAAA,IAAUn5B,MAAK,SAAC07B,GAC3EA,EAAS/V,IACdzU,EAAK+C,OAAOjR,SAAS,mBAAoBkO,EAAK3M,KAAKlE,GACrD,GAEJ,EACAmrJ,YAAW,SAAEzpH,GAAO,IAAAxwB,EAAA,KACZvQ,EAAQuH,KAAK0L,OACf1L,KAAKhE,KAAK09B,OAAOF,GACnB/gC,EAAMiC,MAAM+wB,IAAIC,kBAAkBi4E,YAAY,CAAE3nG,KAAMgE,KAAKhE,KAAMw9B,MAAAA,IAAS/hC,MAAK,SAAA07B,GACxEA,EAAS/V,IACd3kB,EAAM6Z,OAAO,cAAe,CAAEtW,KAAMgN,EAAKhN,KAAMw9B,MAAAA,EAAOx6B,OAAO,GAC/D,IAEAvG,EAAMiC,MAAM+wB,IAAIC,kBAAkBg4E,SAAS,CAAE1nG,KAAMgE,KAAKhE,KAAMw9B,MAAAA,IAAS/hC,MAAK,SAAA07B,GACrEA,EAAS/V,IACd3kB,EAAM6Z,OAAO,cAAe,CAAEtW,KAAMgN,EAAKhN,KAAMw9B,MAAAA,EAAOx6B,OAAO,GAC/D,GAEJ,EACA8/B,uBAAsB,WACpB9+B,KAAK0L,OAAOjR,SAAS,yBAA0B,CAAEuB,KAAMgE,KAAKhE,MAC9D,EACAknJ,iBAAgB,SAAElP,GAChBh0I,KAAKsiJ,qBAAuBtO,CAC9B,EACAvwC,WAAU,WAAI,IAAAl6F,EAAA,KACN9Q,EAAQuH,KAAK0L,OACb1P,EAAOgE,KAAKhE,KACVlE,EAAakE,EAAblE,GAAIkC,EAASgC,EAAThC,KACZvB,EAAMiC,MAAM+wB,IAAIC,kBAAkB+3E,WAAW,CAAEznG,KAAAA,IAC5CvE,MAAK,SAAAC,GACJ6R,EAAKmC,OAAOjR,SAAS,yBAAyB,SAAA+mB,GAAM,OAAIxlB,EAAKlE,KAAO0pB,EAAOxlB,KAAKlE,EAAE,IAClF,IAAMqrJ,EAAiC,0BAArB55I,EAAKuvD,OAAO9+D,MAAyD,iBAArBuP,EAAKuvD,OAAO9+D,KACxEopJ,EAAe75I,EAAKuvD,OAAO52B,OAAOloC,OAASA,GAAQuP,EAAKuvD,OAAO52B,OAAOpqC,KAAOA,EAC/EqrJ,GAAaC,GACf/iJ,OAAOm/D,QAAQmqB,MAEnB,GACJ,EACA05D,WAAU,SAAErkJ,GACVgB,KAAKm7E,QAAUn8E,CACjB,ICjFJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,uFFJzDuB,EAAAA,EAAAA,IAiCM,MAjCNC,GAiCM,EAhCJwD,EAAAA,EAAAA,IA+BUqjE,EAAA,CA9BRC,QAAQ,QACRuP,UAAU,OACV,qB,CAEWl3E,SAAO0+D,EAAAA,EAAAA,KAChB,iBAaM,EAbN59D,EAAAA,EAAAA,GAaM,MAbNkkD,GAaM,gBAZJpkD,EAAAA,EAAAA,IAWSwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IAVQxpD,EAAA2wB,OAAK,SAAbx6B,G,kBADTyJ,EAAAA,EAAAA,IAWS,UATNkI,IAAK3R,EAAKgB,GACXuH,MAAM,+BACLS,QAAK,SAAAolD,GAAA,OAAEvkD,EAAA8iJ,WAAW3sJ,EAAKgB,GAAE,G,EAE1B2I,EAAAA,EAAAA,GAGE,QAFApB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,gBAAe,yBACczyD,EAAK0sJ,W,iBACxC,KACF5+F,EAAAA,EAAAA,IAAG9tD,EAAKsb,OAAK,S,gBAIRk1D,SAAOjJ,EAAAA,EAAAA,KAChB,iBAOS,EAPT59D,EAAAA,EAAAA,GAOS,SAPTukD,GAOS,mBANJrkD,EAAA8L,GAAG,uBAAwB,IAC9B,IAAAzI,EAAAA,EAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,eACNinD,KAAK,KACLx8C,KAAK,oB,8PGnBjBO,EAAAA,GAAAA,IACEq5I,EAAAA,KAsFF,SAnFuB,CACrBpkJ,MAAO,CACL,OAAQ,gBAEVlH,KAAI,WACF,MAAO,CACLurJ,qBAAqB,EACrB7oE,8BAA8B,EAElC,EACA75E,WAAY,CACV2iJ,eAAAA,EAAAA,EACAh9E,QAAAA,EAAAA,QACAi9E,aAAAA,GACA7pF,aAAAA,GAAAA,GAEFn6D,QAAS,CACPikJ,iBAAgB,WACd9jJ,KAAK2jJ,qBAAsB,CAC7B,EACAI,iBAAgB,WACd/jJ,KAAK2jJ,qBAAsB,CAC7B,EACA3oE,mCAAkC,WAChCh7E,KAAK86E,8BAA+B,CACtC,EACAG,mCAAkC,WAChCj7E,KAAK86E,8BAA+B,CACtC,EACAkpE,YAAW,WACThkJ,KAAK0L,OAAOjR,SAAS,cAAeuF,KAAKhE,KAAKlE,GAChD,EACAmsJ,YAAW,WACTjkJ,KAAK0L,OAAOjR,SAAS,cAAeuF,KAAKhE,KAAKlE,GAChD,EACAwgC,UAAS,WACFt4B,KAAKkkJ,mBAGRlkJ,KAAK8jJ,mBAFL9jJ,KAAKmkJ,aAIT,EACAA,YAAW,WACTnkJ,KAAK0L,OAAOjR,SAAS,YAAauF,KAAKhE,KAAKlE,IAC5CkI,KAAK+jJ,kBACP,EACAvrH,YAAW,WACTx4B,KAAK0L,OAAOjR,SAAS,cAAeuF,KAAKhE,KAAKlE,GAChD,EACA4lC,wBAAuB,WAChB19B,KAAK+6E,qCAGR/6E,KAAKg7E,qCAFLh7E,KAAKk7E,2BAIT,EACAA,0BAAyB,WACvBl7E,KAAK0L,OAAOjR,SAAS,0BAA2BuF,KAAKhE,KAAKlE,IAC1DkI,KAAKi7E,oCACP,EACAzd,WAAU,WACRx9D,KAAK0L,OAAOjR,SAAS,yBAA0B,CAAEwkB,OAAQjf,KAAKhE,KAAKlE,IACrE,EACAi7E,SAAQ,WACN/yE,KAAKI,QAAQhB,KAAK,CAChBpF,KAAM,OACNkoC,OAAQ,CAAE9K,SAAUp3B,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAY5X,YAAa+2E,aAAchzE,KAAKhE,KAAKlE,KAEjG,GAEFwQ,S,uWAAQpP,CAAA,CACNgrJ,mBAAkB,WAChB,OAAOlkJ,KAAK0L,OAAOoP,QAAQnH,aAAakD,YAC1C,EACAkkE,qCAAoC,WAClC,OAAO/6E,KAAK0L,OAAOoP,QAAQnH,aAAawD,8BAC1C,IACGysC,EAAAA,GAAAA,IAAS,CACVnqC,6BAA8B,SAAA/e,GAAK,OAAIA,EAAM2X,SAASoH,4BAA4B,MCnFxF,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,mKLNzDlZ,EAAAA,EAAAA,IAqHM,MArHNC,GAqHM,EApHJwD,EAAAA,EAAAA,IAyEUqjE,EAAA,CAxERC,QAAQ,QACRuP,UAAU,SACT,WAAU,CAAA5kC,EAAA,aACX,qB,CAEWtyC,SAAO0+D,EAAAA,EAAAA,KAChB,iBAwDM,EAxDN59D,EAAAA,EAAAA,GAwDM,MAxDNkkD,GAwDM,CAvDYhkD,EAAA43B,aAAanI,YAAS,WAAtC7vB,EAAAA,EAAAA,IAmBWwkD,EAAAA,GAAA,CAAAt8C,IAAA,IAjBD9H,EAAA43B,aAAa6rH,kBAAe,WADpC7jJ,EAAAA,EAAAA,IAMS,U,MAJPlB,MAAM,mCACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAsjJ,aAAAtjJ,EAAAsjJ,YAAAnqJ,MAAA6G,EAAAhE,UAAW,K,QAEhBgE,EAAA8L,GAAG,2BAAD,oBAGE9L,EAAA43B,aAAa6rH,iBAIf,iBAJ8B,WADrC7jJ,EAAAA,EAAAA,IAMS,U,MAJPlB,MAAM,mCACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAqjJ,aAAArjJ,EAAAqjJ,YAAAlqJ,MAAA6G,EAAAhE,UAAW,K,QAEhBgE,EAAA8L,GAAG,2BAAD,IAEPo4C,IAGE,sBAEJ7gD,EAAAA,EAAAA,IAA6BqgJ,EAAA,CAAdroJ,KAAM2E,EAAA3E,MAAI,iBAEjB2E,EAAA43B,aAAamjD,cAAW,WADhCn7E,EAAAA,EAAAA,IAMS,U,MAJPlB,MAAM,6CACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA+8B,yBAAA/8B,EAAA+8B,wBAAA5jC,MAAA6G,EAAAhE,UAAuB,K,QAE5BgE,EAAA8L,GAAG,8BAAD,oBAGC9L,EAAA43B,aAAaq1E,WAAQ,WAD7BrtG,EAAAA,EAAAA,IAMS,U,MAJPlB,MAAM,6CACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA63B,aAAA73B,EAAA63B,YAAA1+B,MAAA6G,EAAAhE,UAAW,K,QAEhBgE,EAAA8L,GAAG,sBAAD,iBAEPlM,EAAAA,EAAAA,IAMS,U,MAJPlB,MAAM,6CACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA23B,WAAA33B,EAAA23B,UAAAx+B,MAAA6G,EAAAhE,UAAS,K,QAEdgE,EAAA8L,GAAG,oBAAD,KAEPhM,EAAAA,EAAAA,GAKS,UAJPpB,MAAM,6CACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA68D,YAAA78D,EAAA68D,WAAA1jE,MAAA6G,EAAAhE,UAAU,K,QAEfgE,EAAA8L,GAAG,qBAAD,GAGC9L,EAAA8Y,+BAA4B,WADpClZ,EAAAA,EAAAA,IAMS,U,MAJPlB,MAAM,6CACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAoyE,UAAApyE,EAAAoyE,SAAAj5E,MAAA6G,EAAAhE,UAAQ,K,QAEbgE,EAAA8L,GAAG,sBAAD,sB,IAIA66D,SAAOjJ,EAAAA,EAAAA,KAChB,iBAKS,EALT59D,EAAAA,EAAAA,GAKS,SALTukD,GAKS,EAJPhhD,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,OACNyK,KAAK,iB,uBAKb67C,EAAAA,EAAAA,IAoBW+V,EAAAA,GAAA,CApBDvuB,GAAG,UAAQ,CAEXxsC,EAAAgjJ,sBAAmB,WAD3Bh+F,EAAAA,EAAAA,IAkBgBgW,EAAA,C,MAhBbvpD,MAAOzR,EAAA8L,GAAG,iCACV,eAAc9L,EAAA8L,GAAG,yCACjB,cAAa9L,EAAA8L,GAAG,yCAChBmvD,WAAUj7D,EAAAwjJ,YACVtoF,YAAWl7D,EAAAojJ,kB,mBAEZ,iBASS,EATT//I,EAAAA,EAAAA,IASS85D,EAAA,CARPC,QAAQ,0BACRlhE,IAAI,Q,CAEOb,MAAIqiE,EAAAA,EAAAA,KACb,iBAEE,EAFF59D,EAAAA,EAAAA,GAEE,Q,aADAmkD,EAAAA,EAAAA,IAAQjkD,EAAoB3E,KAAfK,iB,oIAMvBspD,EAAAA,EAAAA,IAoBW+V,EAAAA,GAAA,CApBDvuB,GAAG,UAAQ,CAEXxsC,EAAAm6E,+BAA4B,WADpCn1B,EAAAA,EAAAA,IAkBgBgW,EAAA,C,MAhBbvpD,MAAOzR,EAAA8L,GAAG,2CACV,eAAc9L,EAAA8L,GAAG,mDACjB,cAAa9L,EAAA8L,GAAG,mDAChBmvD,WAAUj7D,EAAAu6E,0BACVrf,YAAWl7D,EAAAs6E,oC,mBAEZ,iBASS,EATTj3E,EAAAA,EAAAA,IASS85D,EAAA,CARPC,QAAQ,oCACRlhE,IAAI,Q,CAEOb,MAAIqiE,EAAAA,EAAAA,KACb,iBAEE,EAFF59D,EAAAA,EAAAA,GAEE,Q,aADAmkD,EAAAA,EAAAA,IAAQjkD,EAAoB3E,KAAfK,iB,qIM9GvBgD,MAAM,a,IAEDA,MAAM,W,IAEJA,MAAM,W,gCCsCjB,SA5CiB,CACfC,MAAO,CACLtD,KAAM/D,OACNsgC,aAActgC,OACd6jI,SAAUv6H,SAEZnJ,KAAI,WACF,MAAO,CACLksJ,UAAW,GACXl6D,SAAS,EACTm6D,QAAQ,EAEZ,EACAj8I,SAAU,CACR4qI,WAAU,WACR,OAAOlzI,KAAKu4B,aAAag0E,MAAQvsG,KAAKoqF,OACxC,GAEFvqF,QAAS,CACP2kJ,aAAY,WACVxkJ,KAAKskJ,UAAYtkJ,KAAKu4B,aAAag0E,KACnCvsG,KAAKoqF,SAAU,CACjB,EACAq6D,cAAa,WACXzkJ,KAAKoqF,SAAU,CACjB,EACAs6D,gBAAe,WAAI,IAAAhjJ,EAAA,KACjB1B,KAAKukJ,QAAS,EAEdvkJ,KAAK0L,OAAOjR,SAAS,eAAgB,CACnC3C,GAAIkI,KAAKhE,KAAKlE,GACdgmC,QAAS99B,KAAKskJ,YAEb7sJ,MAAK,WACJiK,EAAK6iJ,QAAS,EACd7iJ,EAAK0oF,SAAU,CACjB,IAAE,OACK,WACL1oF,EAAK6iJ,QAAS,CAChB,GACJ,IC/BJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,wCFNzDhkJ,EAAAA,EAAAA,IA2CM,MA3CNC,GA2CM,EAxCJC,EAAAA,EAAAA,GA2BM,MA3BNkkD,GA2BM,EA1BJlkD,EAAAA,EAAAA,GAAuC,aAAAmkD,EAAAA,EAAAA,IAA9BjkD,EAAA8L,GAAG,mBAAD,IACXhM,EAAAA,EAAAA,GAwBM,MAxBNokD,GAwBM,WAvBJpkD,EAAAA,EAAAA,GAMS,UAJPpB,MAAM,qBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA6jJ,cAAA7jJ,EAAA6jJ,aAAA1qJ,MAAA6G,EAAAhE,UAAY,K,QAEjBgE,EAAA8L,GAAG,wBAAD,aAJI9L,EAAAypF,SAAWzpF,EAAAm7H,aAAQ,SAM9Br7H,EAAAA,EAAAA,GAOS,UALPpB,MAAM,qBACLuK,SAAUjJ,EAAA4jJ,OACVzkJ,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA+jJ,iBAAA/jJ,EAAA+jJ,gBAAA5qJ,MAAA6G,EAAAhE,UAAe,K,QAEpBgE,EAAA8L,GAAG,8BAAD,EAAAu4C,IAAA,OALGrkD,EAAAypF,YAAO,SAOjB3pF,EAAAA,EAAAA,GAOS,UALPpB,MAAM,qBACLuK,SAAUjJ,EAAA4jJ,OACVzkJ,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA8jJ,eAAA9jJ,EAAA8jJ,cAAA3qJ,MAAA6G,EAAAhE,UAAa,K,QAElBgE,EAAA8L,GAAG,+BAAD,EAAAw4C,IAAA,OALGtkD,EAAAypF,gBAAO,SASrB3pF,EAAAA,EAAAA,GAIE,Y,qDAFSE,EAAA2jJ,UAASp/F,CAAA,GAClB7lD,MAAM,a,iBAFEsB,EAAAypF,SAAO,MACNzpF,EAAA2jJ,cAAS,SAGpB7jJ,EAAAA,EAAAA,GAMO,QAJLpB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,YAAW,WACI5oD,EAAA43B,aAAag0E,U,QAE/B5rG,EAAA43B,aAAag0E,MAAQ5rG,EAAA8L,GAAG,yBAAD,WAJjB9L,EAAAypF,Y,ioBGbf//E,EAAAA,GAAAA,IACEs6I,EAAAA,IACAj6F,EAAAA,IACA09D,EAAAA,IACAosB,EAAAA,IACAoQ,EAAAA,IACA17G,EAAAA,IACAs4F,EAAAA,KAGF,UACEliI,MAAO,CACL,SACA,WACA,WACA,UACA,UACA,WACA,eACA,UACA,iBAEFlH,KAAI,WACF,MAAO,CACLysJ,yBAAyB,EACzB7uE,aAAch2E,KAAK0L,OAAOhR,MAAK,UAAW4V,eAAeC,UACzDu0I,oBAAoB,EACpBC,iBAAkB,EAClBC,eAAgB,UAEpB,EACA55I,QAAO,WACLpL,KAAK0L,OAAOjR,SAAS,wBAAyBuF,KAAKhE,KAAKlE,GAC1D,EACAwQ,SAAQpP,GAAA,CACN8C,KAAI,WACF,OAAOgE,KAAK0L,OAAOoP,QAAQgiB,SAAS98B,KAAKif,OAC3C,EACAsZ,aAAY,WACV,OAAOv4B,KAAK0L,OAAOoP,QAAQyd,aAAav4B,KAAKif,OAC/C,EACAjV,QAAO,WACL,MAAO,CAAC,CACN,aAA+B,QAAjBhK,KAAKknD,QACnB,YAA6B,IAAjBlnD,KAAKknD,QACjB,aAA+B,IAAlBlnD,KAAKilJ,SAClB,aAAcjlJ,KAAKm0C,SAEvB,EACA6jB,MAAK,WACH,MAAO,CACL0vD,gBAAiB,CACf,qEAAoE,OAAAruH,OAC7D2G,KAAKhE,KAAK2wG,YAAW,MAC5BtmG,KAAK,MAEX,EACA6+I,YAAW,WACT,OAAOllJ,KAAKhE,KAAKlE,KAAOkI,KAAK0L,OAAOhR,MAAMqB,MAAM8X,YAAY/b,EAC9D,EACAs6I,aAAY,WAEV,IAAMC,EAAY,IAAIz2H,IAAI5b,KAAKhE,KAAKgJ,uBACpC,MAAO,GAAP3L,OAAUg5I,EAAUC,SAAQ,MAAAj5I,OAAKg5I,EAAUE,KAAI,gBACjD,EACAv/G,SAAQ,WACN,OAAOhzB,KAAK0L,OAAOhR,MAAMqB,MAAM8X,WACjC,EACAsxI,SAAQ,WACN,IAAMC,EAAOxrJ,KAAKy1E,MAAM,IAAIn5C,KAAS,IAAIA,KAAKl2B,KAAKhE,KAAKuxC,aAAe,OACvE,OAAO3zC,KAAK8xG,MAAM1rG,KAAKhE,KAAKsiF,eAAiB8mE,EAC/C,EACAC,kBAAiBnsJ,GAAA,CACf2uC,IAAG,WACD,IAAMzvC,EAAO4H,KAAK0L,OAAOoP,QAAQnH,aAAa8oB,UAAUz8B,KAAKhE,KAAKC,aAClE,OAAQ7D,GAAQA,EAAKqH,MAAS,UAChC,EACA2xB,IAAG,SAAE3xB,GACH,IAAMrH,EAAO4H,KAAK0L,OAAOoP,QAAQnH,aAAa8oB,UAAUz8B,KAAKhE,KAAKC,aACrD,aAATwD,EACFO,KAAK0L,OAAOjR,SAAS,eAAgB,CAAEuB,KAAMgE,KAAKhE,KAAKC,YAAa89F,MAAQ3hG,GAAQA,EAAK2hG,OAAU,UAAWt6F,KAAAA,IAE9GO,KAAK0L,OAAOjR,SAAS,eAAgB,CAAEuB,KAAMgE,KAAKhE,KAAKC,YAAa89F,WAAOx3F,GAE/E,IACGshD,EAAAA,GAAAA,IAAW,CAAC,kBAEjByhG,mBAAoB,CAClBz9G,IAAG,WACD,IAAMzvC,EAAO4H,KAAK0L,OAAOoP,QAAQnH,aAAa8oB,UAAUz8B,KAAKhE,KAAKC,aAClE,OAAO7D,GAAQA,EAAK2hG,KACtB,EACA3oE,IAAG,SAAE2oE,GACH/5F,KAAK0L,OAAOjR,SAAS,eAAgB,CAAEuB,KAAMgE,KAAKhE,KAAKC,YAAa89F,MAAAA,GACtE,GAEFwrD,YAAW,WACT,IAAM7rH,EAAS15B,KAAKhE,KAAK09B,OACzB,GAAKA,EAAL,CACA,IAAM8rH,EAAY9rH,EAAO0sD,OAAS1sD,EAAO2sD,UACnCo/D,EAAY/rH,EAAO0sD,MAAQ,QAAU,YAC3C,OAAOo/D,GAAaC,CAHE,CAIxB,EACAp9G,iBAAgB,WACd,OAAOroC,KAAKklJ,aAAellJ,KAAKhE,KAAKixG,kBACvC,EACA7kE,mBAAkB,WAChB,OAAOpoC,KAAKklJ,aAAellJ,KAAKhE,KAAKkxG,oBACvC,EACAw4C,mBAAkB,WAChB,IAAMrlG,EAAargD,KAAKgzB,SAASqtB,WACjC,MAA8B,UAAvBrgD,KAAKgzB,SAASilC,MAAoB5X,EAAWvkD,SAAS,kCAAoCukD,EAAWvkD,SAAS,iBAAmBukD,EAAWvkD,SAAS,oBAC9J,EACA6pJ,QAAO,WACL,OAAO3lJ,KAAKu4B,aAAag0E,IAC3B,EACAq5C,aAAY,WACV,MAAO,SAAU5lJ,KAAKu4B,YACxB,EACAstH,kBAAiB,WACf,OAAO7lJ,KAAK2T,aAAamD,WAC3B,EACAgvI,gBAAe,WACb,MAAO,CAAC,UAAW,QAAS,OAC9B,IACGjiG,EAAAA,GAAAA,IAAW,CAAC,kBAEjB5iD,WAAY,CACVuwE,WAAAA,EAAAA,QACA4J,aAAAA,EAAAA,EACA2qE,gBAAAA,GACAC,eAAAA,GACApC,eAAAA,EAAAA,EACAvoE,aAAAA,EAAAA,EACA0hD,OAAAA,GAAAA,EACAtrD,YAAAA,GAAAA,EACAzU,SAAAA,GAAAA,EACAipF,SAAAA,GACAjsF,aAAAA,GAAAA,GAEFn6D,QAAS,CACPqmJ,gBAAe,WACblmJ,KAAK8kJ,oBAAqB,CAC5B,EACAqB,gBAAe,WACbnmJ,KAAK8kJ,oBAAqB,CAC5B,EACArsH,SAAQ,WACDz4B,KAAK6lJ,kBAGR7lJ,KAAKkmJ,kBAFLlmJ,KAAKomJ,YAIT,EACAA,WAAU,WACRpmJ,KAAK0L,OAAOjR,SAAS,WAAY,CAC/B3C,GAAIkI,KAAKhE,KAAKlE,GACd6gC,UAAW34B,KAAK6lJ,mBAAoBj6C,EAAAA,EAAAA,IAAc5rG,KAAKglJ,eAAgBhlJ,KAAK+kJ,kBAAoB,IAElG/kJ,KAAKmmJ,iBACP,EACAptH,WAAU,WACR/4B,KAAK0L,OAAOjR,SAAS,aAAcuF,KAAKhE,KAAKlE,GAC/C,EACA8mC,cAAa,WACX,OAAO5+B,KAAK0L,OAAOjR,SAAS,gBAAiBuF,KAAKhE,KAAKlE,GACzD,EACA+mC,gBAAe,WACb,OAAO7+B,KAAK0L,OAAOjR,SAAS,kBAAmBuF,KAAKhE,KAAKlE,GAC3D,EACAuuJ,eAAc,SAAExoJ,GACVmC,KAAKg+E,UACOh+E,KAAK0L,OACb4G,OAAO,iBAAkB,CAAEzU,EAAAA,GAErC,EACAggF,YAAW,SAAArjF,GAAc,IAAVoG,EAAMpG,EAANoG,OACU,SAAnBA,EAAO2C,UACT3C,EAASA,EAAOk9E,YAEK,MAAnBl9E,EAAO2C,SACTlD,OAAOC,KAAKM,EAAOF,KAAM,SAE7B,EACAgtD,gBAAe,SAAE1xD,GACf,OAAO2xD,EAAAA,GAAAA,GACL3xD,EAAKlE,GAAIkE,EAAKC,YACd+D,KAAK0L,OAAOhR,MAAM2X,SAAS8G,oBAE/B,EACAw3H,eAAc,WACZ3wI,KAAK0L,OAAOjR,SAAS,uBAAwB,UAC/C,EACA6rJ,WAAU,WACR,IAAM3iH,EAAa,CACjBpkC,IAAKS,KAAKhE,KAAKO,2BACfi6C,SAAU,SAEZx2C,KAAK0L,OAAOjR,SAAS,WAAY,CAACkpC,IAClC3jC,KAAK0L,OAAOjR,SAAS,kBAAmBkpC,EAC1C,EACA4iH,YAAW,WACTvmJ,KAAK0L,OAAOjR,SAAS,sBAAuB,CAAEgvI,SAAS,EAAMQ,YAAajqI,KAAKhE,MACjF,EACAwqJ,qBAAoB,SAAE9uJ,GAChBsI,KAAKymJ,gBACP/uJ,EAAEuR,iBACFjJ,KAAKymJ,gBAET,ICjOJ,IAFiC,QAAgB,GAAQ,CAAC,CAAC,S,2adNzDlmJ,EAAAA,EAAAA,IA0WM,OAzWJlB,OAAKkqD,EAAAA,EAAAA,IAAA,CAAC,YACE5oD,EAAAqJ,W,EAERvJ,EAAAA,EAAAA,GAIE,OAHCpB,OAAKkqD,EAAAA,EAAAA,IAAA,aAAgB5oD,EAAA+lJ,SAEhB,qBADL1uF,OAAK2E,EAAAA,EAAAA,IAAEh8D,EAAAq3D,Q,SAGVv3D,EAAAA,EAAAA,GA2QM,OA3QApB,OAAKkqD,EAAAA,EAAAA,IAAE5oD,EAAAwzC,QAAU,GAAKxzC,EAAAosD,MAAMpsD,EAAAgmJ,QAAShmJ,EAAAimJ,SAASjmJ,EAAAuL,S,EAClDzL,EAAAA,EAAAA,GAyQM,MAzQND,EAyQM,EAxQJC,EAAAA,EAAAA,GAqIM,MArINkkD,EAqIM,CAnIqB,SAAjBhkD,EAAAkmJ,eAAY,WADpBtmJ,EAAAA,EAAAA,IAeI,K,MAbFlB,MAAM,yBACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA2lJ,YAAA3lJ,EAAA2lJ,WAAAxsJ,MAAA6G,EAAAhE,UAAU,I,EAElBqH,EAAAA,EAAAA,IAGE+tE,EAAA,CAFC,gBAAepxE,EAAAq1E,aACfh6E,KAAM2E,EAAA3E,M,kCAETyE,EAAAA,EAAAA,GAKM,MALNokD,EAKM,EAJJ7gD,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,8BACNyK,KAAK,qBAK0B,mBAAjBnJ,EAAAkmJ,eAAY,WADhClhG,EAAAA,EAAAA,IAMEosB,EAAA,C,MAJA1yE,MAAM,mBACL,gBAAesB,EAAAq1E,aACfh6E,KAAM2E,EAAA3E,KACN8D,QAAOa,EAAAkmJ,c,yDAEVlhG,EAAAA,EAAAA,IAQcJ,EAAA,C,MANXpY,GAAIxsC,EAAA+sD,gBAAgB/sD,EAAA3E,O,mBAErB,iBAGE,EAHFgI,EAAAA,EAAAA,IAGE+tE,EAAA,CAFC,gBAAepxE,EAAAq1E,aACfh6E,KAAM2E,EAAA3E,M,sDAGXyE,EAAAA,EAAAA,GAmGM,MAnGNukD,EAmGM,EAlGJvkD,EAAAA,EAAAA,GA4DM,MA5DNwkD,EA4DM,EA3DJjhD,EAAAA,EAAAA,IAScuhD,EAAA,CARXpY,GAAIxsC,EAAA+sD,gBAAgB/sD,EAAA3E,MACrBqD,MAAM,a,mBAEN,iBAIE,EAJF2E,EAAAA,EAAAA,IAIEguE,EAAA,CAHC5/D,MAAOzR,EAAA3E,KAAKhC,KACZoH,KAAMT,EAAA3E,KAAKhC,KACXzB,MAAOoI,EAAA3E,KAAKzD,O,qDAIRoI,EAAAukJ,aAAevkJ,EAAA3E,KAAKshE,WAAQ,WADrC/8D,EAAAA,EAAAA,IAWS,U,MATPlB,MAAM,sCACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,kBAAOH,EAAAgwI,gBAAAhwI,EAAAgwI,eAAA72I,MAAA6G,EAAAhE,UAAc,e,EAE3BqH,EAAAA,EAAAA,IAKE+hD,EAAA,CAJA,iBACA1mD,MAAM,OACNyK,KAAK,OACJsI,MAAOzR,EAAA8L,GAAG,2B,qCAIP9L,EAAAukJ,cAAgBvkJ,EAAA3E,KAAKshE,WAAQ,WADrC/8D,EAAAA,EAAAA,IAUI,K,MARDG,KAAMC,EAAA3E,KAAKgJ,sBACZpE,OAAO,SACPvB,MAAM,wC,EAEN2E,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,OACNyK,KAAK,uB,sBAIDnJ,EAAAukJ,aAAevkJ,EAAAqyB,WAAQ,WAD/B2yB,EAAAA,EAAAA,IAIEmhG,EAAA,C,MAFC9qJ,KAAM2E,EAAA3E,KACNu8B,aAAc53B,EAAA43B,c,iDAGT53B,EAAAwzC,UAAO,WADfwR,EAAAA,EAAAA,IAUcJ,EAAA,C,MARXpY,GAAIxsC,EAAA+sD,gBAAgB/sD,EAAA3E,MACrBqD,MAAM,uCACLS,QAAOa,EAAAwzC,S,mBAER,iBAGE,EAHFnwC,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,OACNyK,KAAK,e,8CAIDnJ,EAAAwzC,UAAO,WADf5zC,EAAAA,EAAAA,IASS,U,MAPPlB,MAAM,uCACLS,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAwzC,SAAAxzC,EAAAwzC,QAAAr6C,MAAA6G,EAAAhE,UAAO,I,EAEfqH,EAAAA,EAAAA,IAGE+hD,EAAA,CAFA1mD,MAAM,OACNyK,KAAK,c,kBAIXrJ,EAAAA,EAAAA,GAoCM,MApCN2kD,EAoCM,EAnCJphD,EAAAA,EAAAA,IAGEmnH,EAAA,CAFA9rH,MAAM,mBACLrD,KAAM2E,EAAA3E,M,iBAEQ2E,EAAA+lJ,SAiBR,iBAjBe,WAAxBnmJ,EAAAA,EAAAA,IAmBWwkD,EAAAA,GAAA,CAAAt8C,IAAA,IAjBD9H,EAAA3E,KAAK49B,cAAW,WADxBr5B,EAAAA,EAAAA,IAKO,OALP8kD,GAKOT,EAAAA,EAAAA,IADFjkD,EAAA8L,GAAG,0BAAD,oBAGG9L,EAAA4kJ,cAAW,WADrBhlJ,EAAAA,EAAAA,IAKO,OALP8lD,GAKOzB,EAAAA,EAAAA,IADFjkD,EAAA8L,GAAG,gBAADpT,OAAiBsH,EAAA4kJ,eAAW,oBAG3B5kJ,EAAA3E,KAAK6wG,MAAG,WADhBtsG,EAAAA,EAAAA,IAKO,OALP+kD,GAKOV,EAAAA,EAAAA,IADFjkD,EAAA8L,GAAG,kBAAD,0BAGG9L,EAAA3E,KAAK8mC,SAAM,WAAvBviC,EAAAA,EAAAA,IAMO,OAAAilD,EAAA,EALLxhD,EAAAA,EAAAA,IAIE+hD,EAAA,CAHA1mD,MAAM,YACNyK,KAAK,OACLw8C,KAAK,W,eAIA3lD,EAAAgT,aAAa8C,eAAkB9V,EAAA+lJ,SAEnB,iBAF0B,WAD/CnmJ,EAAAA,EAAAA,IAGoD,OAHpDklD,GAGoDb,EAAAA,EAAAA,IAAhDjkD,EAAAwkJ,UAAW,KAACvgG,EAAAA,EAAAA,IAAGjkD,EAAA8L,GAAG,sBAAD,WAI3BhM,EAAAA,EAAAA,GA8CM,MA9CNilD,EA8CM,CA5CI/kD,EAAA43B,aAAamjD,aAAe/6E,EAAAqyB,UAAYryB,EAAAukJ,cAAW,WAD3D3kJ,EAAAA,EAAAA,IAKM,MALNqlD,GAKMhB,EAAAA,EAAAA,IADDjkD,EAAA8L,GAAG,0BAAD,qBAGC9L,EAAAukJ,cAAgBvkJ,EAAAqyB,UAAaryB,EAAAq9E,U,iBAAQ,WAD7Cz9E,EAAAA,EAAAA,IAsCM,MAtCNslD,EAsCM,CAhC0B,aAAtBllD,EAAA0kJ,mBAAiB,qBADzB9kJ,EAAAA,EAAAA,IAMC,S,MAJEzI,GAAE,uBAAyB6I,EAAA3E,KAAKlE,G,qDACxB6I,EAAA2kJ,mBAAkBpgG,CAAA,GAC3B7lD,MAAM,oBACNI,KAAK,Q,kBAFIkB,EAAA2kJ,uBAAkB,eAKC,aAAtB3kJ,EAAA0kJ,mBAAiB,qBADzB9kJ,EAAAA,EAAAA,IAMC,S,MAJEzI,GAAE,qBAAuB6I,EAAA3E,KAAKlE,G,qDACtB6I,EAAA2kJ,mBAAkBpgG,CAAA,GAC3B7lD,MAAM,kBACNI,KAAK,S,kBAFIkB,EAAA2kJ,uBAAkB,wBAG5B,KACD1gG,EAAAA,EAAAA,IAAG,KAAM,MACT5gD,EAAAA,EAAAA,IAiBSq5H,EAAA,CAhBNvlI,GAAE,mBAAqB6I,EAAA3E,KAAKlE,G,WACpB6I,EAAA0kJ,kB,qDAAA1kJ,EAAA0kJ,kBAAiBngG,CAAA,GAC1B7lD,MAAM,oB,mBAEN,iBAES,EAFToB,EAAAA,EAAAA,GAES,SAFTm/E,GAESh7B,EAAAA,EAAAA,IADJjkD,EAAA8L,GAAG,iCAAD,IAEPhM,EAAAA,EAAAA,GAES,SAFTo/E,GAESj7B,EAAAA,EAAAA,IADJjkD,EAAA8L,GAAG,8BAAD,IAEPhM,EAAAA,EAAAA,GAES,SAFTq/E,GAESl7B,EAAAA,EAAAA,IADJjkD,EAAA8L,GAAG,gCAAD,IAEPhM,EAAAA,EAAAA,GAES,SAFTs/E,GAESn7B,EAAAA,EAAAA,IADJjkD,EAAA8L,GAAG,6BAAD,G,qCAML9L,EAAAqyB,UAAYryB,EAAAukJ,cAAW,WAD/B3kJ,EAAAA,EAAAA,IAsEM,MAtENy/E,EAsEM,EAlEJv/E,EAAAA,EAAAA,GAkCM,MAlCNw/E,EAkCM,EAjCJj8E,EAAAA,EAAAA,IAGE23E,EAAA,CAFCpjD,aAAc53B,EAAA43B,aACdv8B,KAAM2E,EAAA3E,M,gCAEO2E,EAAA43B,aAAanI,YAAS,WAAtC7vB,EAAAA,EAAAA,IA4BWwkD,EAAAA,GAAA,CAAAt8C,IAAA,IA1BA9H,EAAA43B,aAAawuH,c,WAOtBphG,EAAAA,EAAAA,IAkBiBqhG,EAAA,C,MAhBf3nJ,MAAM,6BACL+zD,MAAOzyD,EAAAk+B,gBACPzsB,MAAOzR,EAAA8L,GAAG,0B,mBAEX,iBAWW,EAXXzI,EAAAA,EAAAA,IAWWw3D,EAAA,M,kBAVT,iBAIE,EAJFx3D,EAAAA,EAAAA,IAIE+hD,EAAA,CAHAj8C,KAAK,MACL0/C,UAAU,iCACVyyF,KAAK,gBAEPj4I,EAAAA,EAAAA,IAGE+hD,EAAA,CAFAj8C,KAAK,MACL0/C,UAAU,qCAEZxlD,EAAAA,EAAAA,IAAsB+hD,EAAA,CAAdj8C,KAAK,S,2CAvBgB,WADjC67C,EAAAA,EAAAA,IAOiBqhG,EAAA,C,MALf3nJ,MAAM,qBACL+zD,MAAOzyD,EAAAi+B,cACPxsB,MAAOzR,EAAA8L,GAAG,wB,mBAEX,iBAAsB,EAAtBzI,EAAAA,EAAAA,IAAsB+hD,EAAA,CAAdj8C,KAAK,S,wDAuBnBrJ,EAAAA,EAAAA,GAiBM,YAfIE,EAAA43B,aAAaO,SAAM,WAD3Bv4B,EAAAA,EAAAA,IAOS,U,MALPlB,MAAM,uCACLuK,SAAUjJ,EAAA3E,KAAK49B,YACf95B,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAAo4B,YAAAp4B,EAAAo4B,WAAAj/B,MAAA6G,EAAAhE,UAAU,K,QAEfgE,EAAA8L,GAAG,oBAAD,EAAAyzE,MAAA,WAEP3/E,EAAAA,EAAAA,IAOS,U,MALPlB,MAAM,+BACLuK,SAAUjJ,EAAA3E,KAAK49B,YACf95B,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA83B,UAAA93B,EAAA83B,SAAA3+B,MAAA6G,EAAAhE,UAAQ,K,QAEbgE,EAAA8L,GAAG,mBAAD,EAAA0zE,OAGT1/E,EAAAA,EAAAA,GAQM,aAPJA,EAAAA,EAAAA,GAMS,UALPpB,MAAM,+BACLuK,SAAUjJ,EAAA3E,KAAK49B,YACf95B,QAAKe,EAAA,KAAAA,EAAA,qBAAEF,EAAA4lJ,aAAA5lJ,EAAA4lJ,YAAAzsJ,MAAA6G,EAAAhE,UAAW,K,QAEhBgE,EAAA8L,GAAG,sBAAD,EAAA4zE,KAID1/E,EAAA+kJ,qBAAkB,WAD1B//F,EAAAA,EAAAA,IAGEshG,EAAA,C,MADCjrJ,KAAM2E,EAAA3E,M,sDAIF2E,EAAAqyB,UAAYryB,EAAA3E,KAAKshE,WAAQ,WADlC/8D,EAAAA,EAAAA,IAKM,MALN4iF,EAKM,EADJn/E,EAAAA,EAAAA,IAA6B63E,EAAA,CAAd7/E,KAAM2E,EAAA3E,MAAI,oCAGnB2E,EAAAqyB,UAAYryB,EAAAukJ,cAAgBvkJ,EAAAglJ,SAAYhlJ,EAAAumJ,eAAiBvmJ,EAAAilJ,gBAAY,WAD7EjgG,EAAAA,EAAAA,IAKEwhG,GAAA,C,MAHCnrJ,KAAM2E,EAAA3E,KACNu8B,aAAc53B,EAAA43B,aACdujG,SAAUn7H,EAAAumJ,e,kEAKRvmJ,EAAA+lJ,S,iBAAO,WADhBnmJ,EAAAA,EAAAA,IAqCM,MArCN6iF,EAqCM,EAhCKziF,EAAAgT,aAAa8C,eAAiB9V,EAAAq9E,WAAQ,WAD/Cz9E,EAAAA,EAAAA,IAyBM,MAzBN8iF,EAyBM,EArBJ5iF,EAAAA,EAAAA,GAMM,OALJpB,MAAM,aACLS,QAAKe,EAAA,KAAAA,EAAA,IAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAA0lJ,eAAe,WAAD,kB,EAE9B5lJ,EAAAA,EAAAA,GAAuC,WAAAmkD,EAAAA,EAAAA,IAAhCjkD,EAAA8L,GAAG,uBAAD,IACThM,EAAAA,EAAAA,GAA2C,+BAAlCE,EAAA3E,KAAKsiF,gBAAiB,IAAC,GAAAgF,OAElC7iF,EAAAA,EAAAA,GAMM,OALJpB,MAAM,aACLS,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAA0lJ,eAAe,UAAD,kB,EAE9B5lJ,EAAAA,EAAAA,GAAwC,WAAAmkD,EAAAA,EAAAA,IAAjCjkD,EAAA8L,GAAG,wBAAD,IACThM,EAAAA,EAAAA,GAAiF,aAAAmkD,EAAAA,EAAAA,IAAxEjkD,EAAA0nC,iBAAmB1nC,EAAA8L,GAAG,oBAAsB9L,EAAA3E,KAAKuiF,eAAa,MAEzE99E,EAAAA,EAAAA,GAMM,OALJpB,MAAM,aACLS,QAAKe,EAAA,MAAAA,EAAA,KAAAC,EAAAA,EAAAA,KAAA,SAAAokD,GAAA,OAAUvkD,EAAA0lJ,eAAe,YAAD,kB,EAE9B5lJ,EAAAA,EAAAA,GAAwC,WAAAmkD,EAAAA,EAAAA,IAAjCjkD,EAAA8L,GAAG,wBAAD,IACThM,EAAAA,EAAAA,GAAqF,aAAAmkD,EAAAA,EAAAA,IAA5EjkD,EAAAynC,mBAAqBznC,EAAA8L,GAAG,oBAAsB9L,EAAA3E,KAAK0iF,iBAAe,wBAItE/9E,EAAA+lJ,S,iBAAO,WADhB/gG,EAAAA,EAAAA,IAMEqsB,EAAA,C,MAJA3yE,MAAM,gBACL+B,KAAMT,EAAA3E,KAAKwwG,iBACXj0G,MAAOoI,EAAA3E,KAAKzD,MACZ,gBAAc,G,0CAGnBotD,EAAAA,EAAAA,IA8CW+V,EAAAA,GAAA,CA9CDvuB,GAAG,UAAQ,CAEXxsC,EAAAmkJ,qBAAkB,WAD1Bn/F,EAAAA,EAAAA,IA4CgBgW,GAAA,C,MA1CbvpD,MAAOzR,EAAA8L,GAAG,gCACV,eAAc9L,EAAA8L,GAAG,wCACjB,cAAa9L,EAAA8L,GAAG,wCAChBmvD,WAAUj7D,EAAAylJ,WACVvqF,YAAWl7D,EAAAwlJ,iB,mBAEZ,iBASS,EATTniJ,EAAAA,EAAAA,IASS85D,GAAA,CARPC,QAAQ,yBACRlhE,IAAI,O,CAEOb,MAAIqiE,EAAAA,EAAAA,KACb,iBAEE,EAFF59D,EAAAA,EAAAA,GAEE,Q,aADAmkD,EAAAA,EAAAA,IAAQjkD,EAAoB3E,KAAfK,iB,qBAInBoE,EAAAA,EAAAA,GAyBM,MAzBN8iF,EAyBM,EAtBJ9iF,EAAAA,EAAAA,GAEQ,cAAAmkD,EAAAA,EAAAA,IADHjkD,EAAA8L,GAAG,mCAAD,aAEPhM,EAAAA,EAAAA,GAKC,S,uDAJUE,EAAAokJ,iBAAgB7/F,CAAA,GACzBzlD,KAAK,SACLJ,MAAM,oCACL6vC,IAAK,G,iBAHGvuC,EAAAokJ,qBAKX/gJ,EAAAA,EAAAA,IAYSq5H,EAAA,C,WAXE18H,EAAAqkJ,e,uDAAArkJ,EAAAqkJ,eAAc9/F,CAAA,GACvB6jF,SAAS,OACT1pI,MAAM,e,mBAGJ,iBAA+B,gBADjCkB,EAAAA,EAAAA,IAMSwkD,EAAAA,GAAA,MAAAoF,EAAAA,EAAAA,IALQxpD,EAAAmlJ,iBAAe,SAAvBj5F,G,kBADTtsD,EAAAA,EAAAA,IAMS,UAJNkI,IAAKokD,EACL7tD,MAAO6tD,I,QAELlsD,EAAA8L,GAAG,QAADpT,OAASwzD,EAAI,mBAAA22B,E,8OejUhC,QArBiB,CACflkF,MAAO,CACLtD,KAAM/D,OACN07H,GAAI,CACFl0H,KAAM8B,QACN3B,SAAS,IAGbqB,WAAY,CACV6sH,uBAAAA,EAAAA,GAEFjuH,QAAS,CACP6tD,gBAAc,SAAG1xD,GACf,OAAO2xD,EAAAA,EAAAA,GACL3xD,EAAKlE,GAAIkE,EAAKC,YACd+D,KAAK0L,OAAOhR,MAAM2X,SAAS8G,oBAE/B,ICzBJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,2GDJzDwsC,EAAAA,EAAAA,IAOcJ,EAAA,CANXnzC,MAAOzR,EAAA3E,KAAKK,eACZ8wC,GAAIxsC,EAAA+sD,gBAAgB/sD,EAAA3E,O,mBAErB,iBAAmB,mBAAhB2E,EAAAgzH,GAAK,IAAM,KAAT/uE,EAAAA,EAAAA,IAAiBjkD,EAAA3E,KAAKK,gBAAc,IAAG2H,EAAAA,EAAAA,IAE1C0vH,EAAA,CADC13H,KAAM2E,EAAA3E,MAAI,iB,0GEgBjB,QAnBoB,CAClBhC,KAAM,cACNsF,MAAO,CACL,SAAU,iBAAkB,WAAY,0BAE1C2B,WAAY,CACV+lD,S,SAAAA,EACA4f,SAAS5G,EAAAA,EAAAA,KAAqB,kBAAM,uCAAgC,KAEtE13D,SAAU,CACRixF,wBAAuB,WACrB,OAAOv5F,KAAK0L,OAAOoP,QAAQnH,aAAa4lF,uBAC1C,EACAC,mBAAkB,WAChB,OAAOx5F,KAAK0L,OAAOoP,QAAQnH,aAAa6lF,kBAC1C,ICTJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,yFCNzD7zC,EAAAA,EAAAA,IAmBU0hB,EAAA,CAlBRC,QAAQ,QACR,gBAAc,+BACb,2BAA0B3mE,EAAAsjI,wBAA0B,qBACpD,kBAAiBtjI,EAAAqjI,gBAAkBrjI,EAAA64F,mBACnC5vF,SAAUjJ,EAAAiJ,U,CAEA09D,SAAOjJ,EAAAA,EAAAA,KAChB,iBAAQ,EAAR/V,EAAAA,EAAAA,IAAQ3nD,EAAAkI,OAAA,W,IAEClJ,SAAO0+D,EAAAA,EAAAA,KAChB,SAAA7jE,GAAA,IADmByrC,EAAKzrC,EAALyrC,MAAK,QACxBjiC,EAAAA,EAAAA,IAMEijD,EAAA,CALA5nD,MAAM,eACL,UAASsB,EAAAse,OACT,YAAU,EACV,gBAA0C,SAA3Bte,EAAA44F,wBAAqCtzD,EAAQtlC,EAAA44F,wBAC5D,WAAUtzD,G,iOCkCnB,QAlDwB,CACtB3mC,MAAO,CAAC,aAAc,YACtBlH,KAAI,WACF,MAAO,CACLgvJ,eAAe,EAEfC,UAAU,EAEd,EACA/+I,SAAU,CACRswF,UAAS,WACP,OAAI54F,KAAK0L,OAAOoP,QAAQnH,aAAaklF,qBAC3B74F,KAAKqnJ,SAERrnJ,KAAK0L,OAAOoP,QAAQnH,aAAailF,SAC1C,GAEF/4F,QAAS,CACPynJ,UAAS,SAAE5vJ,GACTsI,KAAKunJ,YAAY7vJ,GACbsI,KAAK44F,UACP54F,KAAKkG,MAAM,OAAQ,CAAEshJ,SAAS,IAGhCxnJ,KAAKkG,MAAM,OACb,EACAuhJ,SAAQ,SAAE/vJ,GACRsI,KAAKkG,MAAM,QACb,EACAqhJ,YAAW,SAAE7vJ,GACX,IAAMkJ,EAASlJ,EAAEgwJ,YAAchwJ,EAAEkJ,OAG5BZ,KAAKqnJ,gBACwC,IAAvCzmJ,EAAO+mJ,6BAEZ/mJ,EAAO+mJ,4BAA8B,QAET,IAAvB/mJ,EAAOgnJ,aAEZhnJ,EAAOgnJ,kBAEqB,IAAvBhnJ,EAAOinJ,aACZjnJ,EAAOinJ,YAAYpuJ,OAAS,IAElCuG,KAAKqnJ,UAAW,GAClB,ICxCJ,GAFiC,E,SAAA,GAAgB,EAAQ,CAAC,CAAC,S,wCCJzD9mJ,EAAAA,EAAAA,IAWE,SAVAlB,MAAM,QACNyoJ,QAAQ,WACP95F,IAAKrtD,EAAAgjC,WAAWpkC,IAChBwoJ,KAAMpnJ,EAAAi4F,UACNviC,SAAU11D,EAAA01D,SACVH,IAAKv1D,EAAAgjC,WAAW0O,YAChBjgC,MAAOzR,EAAAgjC,WAAW0O,YACnB21G,YAAA,GACCV,UAAOzmJ,EAAA,KAAAA,EAAA,qBAAEF,EAAA2mJ,WAAA3mJ,EAAA2mJ,UAAAxtJ,MAAA6G,EAAAhE,UAAS,GAClBkuH,QAAKhqH,EAAA,KAAAA,EAAA,qBAAEF,EAAA8mJ,UAAA9mJ,EAAA8mJ,SAAA3tJ,MAAA6G,EAAAhE,UAAQ,I,gCCXpB,IAAIzF,EAAM,CACT,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,OAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,KACA,MAED,qBAAsB,CACrB,MACA,KAED,YAAa,CACZ,MACA,MAED,gBAAiB,CAChB,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,iBAAkB,CACjB,MACA,OAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,KAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF,CAAC,IAIT,IAAIG,EAAMX,EAAIE,GAAMU,EAAKD,EAAI,GAC7B,OAAON,QAAQolB,IAAI9kB,EAAIqE,MAAM,GAAGhF,IAAIG,EAAoBK,IAAID,MAAK,IACzDJ,EAAoBS,IAE7B,CACAX,EAAoBa,KAAO,IAAOC,OAAOD,KAAKd,GAC9CC,EAAoBW,GAAK,MACzBI,EAAOC,QAAUhB,C,6jOCxJb8wJ,EAA2B,CAAC,EAGhC,SAAS5wJ,EAAoB6wJ,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqB3lJ,IAAjB4lJ,EACH,OAAOA,EAAahwJ,QAGrB,IAAID,EAAS+vJ,EAAyBC,GAAY,CACjDpwJ,GAAIowJ,EACJj4G,QAAQ,EACR93C,QAAS,CAAC,GAUX,OANAiwJ,EAAoBF,GAAUniJ,KAAK7N,EAAOC,QAASD,EAAQA,EAAOC,QAASd,GAG3Ea,EAAO+3C,QAAS,EAGT/3C,EAAOC,OACf,CAGAd,EAAoBkkD,EAAI6sG,E3c5BpBlyJ,EAAW,GACfmB,EAAoBgxJ,EAAI,CAACvrJ,EAAQwrJ,EAAUC,EAAIzrC,KAC9C,IAAGwrC,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAASlqJ,EAAI,EAAGA,EAAIrI,EAASuD,OAAQ8E,IAAK,CAGzC,IAFA,IAAK+pJ,EAAUC,EAAIzrC,GAAY5mH,EAASqI,GACpCmqJ,GAAY,EACPn9G,EAAI,EAAGA,EAAI+8G,EAAS7uJ,OAAQ8xC,MACpB,EAAXuxE,GAAsB0rC,GAAgB1rC,IAAa7kH,OAAOD,KAAKX,EAAoBgxJ,GAAG9gJ,OAAOkB,GAASpR,EAAoBgxJ,EAAE5/I,GAAK6/I,EAAS/8G,MAC9I+8G,EAAShnI,OAAOiqB,IAAK,IAErBm9G,GAAY,EACT5rC,EAAW0rC,IAAcA,EAAe1rC,IAG7C,GAAG4rC,EAAW,CACbxyJ,EAASorB,OAAO/iB,IAAK,GACrB,IAAI8rB,EAAIk+H,SACEhmJ,IAAN8nB,IAAiBvtB,EAASutB,EAC/B,CACD,CACA,OAAOvtB,CAnBP,CAJCggH,EAAWA,GAAY,EACvB,IAAI,IAAIv+G,EAAIrI,EAASuD,OAAQ8E,EAAI,GAAKrI,EAASqI,EAAI,GAAG,GAAKu+G,EAAUv+G,IAAKrI,EAASqI,GAAKrI,EAASqI,EAAI,GACrGrI,EAASqI,GAAK,CAAC+pJ,EAAUC,EAAIzrC,EAqBjB,E4czBdzlH,EAAoByH,EAAK5G,IACxB,IAAIywJ,EAASzwJ,GAAUA,EAAO0wJ,WAC7B,IAAO1wJ,EAAiB,QACxB,IAAM,EAEP,OADAb,EAAoBm7C,EAAEm2G,EAAQ,CAAEtuJ,EAAGsuJ,IAC5BA,CAAM,E3cNVvyJ,EAAW6B,OAAO4wJ,eAAkB5nI,GAAShpB,OAAO4wJ,eAAe5nI,GAASA,GAASA,EAAa,UAQtG5pB,EAAoBU,EAAI,SAASiH,EAAO8pJ,GAEvC,GADU,EAAPA,IAAU9pJ,EAAQgB,KAAKhB,IAChB,EAAP8pJ,EAAU,OAAO9pJ,EACpB,GAAoB,iBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAP8pJ,GAAa9pJ,EAAM4pJ,WAAY,OAAO5pJ,EAC1C,GAAW,GAAP8pJ,GAAoC,mBAAf9pJ,EAAMvH,KAAqB,OAAOuH,CAC5D,CACA,IAAI+pJ,EAAK9wJ,OAAOsiG,OAAO,MACvBljG,EAAoBgzB,EAAE0+H,GACtB,IAAIx9E,EAAM,CAAC,EACXp1E,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAIqgD,EAAiB,EAAPqyG,GAAY9pJ,EAAyB,iBAAXy3C,KAAyBtgD,EAAeilC,QAAQqb,GAAUA,EAAUrgD,EAASqgD,GACxHx+C,OAAO+wJ,oBAAoBvyG,GAASn7B,SAAS7S,GAAS8iE,EAAI9iE,GAAO,IAAOzJ,EAAMyJ,KAI/E,OAFA8iE,EAAa,QAAI,IAAM,EACvBl0E,EAAoBm7C,EAAEu2G,EAAIx9E,GACnBw9E,CACR,E4cxBA1xJ,EAAoBm7C,EAAI,CAACr6C,EAAS8wJ,KACjC,IAAI,IAAIxgJ,KAAOwgJ,EACX5xJ,EAAoBC,EAAE2xJ,EAAYxgJ,KAASpR,EAAoBC,EAAEa,EAASsQ,IAC5ExQ,OAAOixJ,eAAe/wJ,EAASsQ,EAAK,CAAE0gJ,YAAY,EAAMthH,IAAKohH,EAAWxgJ,IAE1E,ECNDpR,EAAoB8H,EAAI,CAAC,EAGzB9H,EAAoBK,EAAK0xJ,GACjB7xJ,QAAQolB,IAAI1kB,OAAOD,KAAKX,EAAoB8H,GAAG2V,QAAO,CAAComG,EAAUzyG,KACvEpR,EAAoB8H,EAAEsJ,GAAK2gJ,EAASluC,GAC7BA,IACL,KCNJ7jH,EAAoBi5B,EAAK84H,GAEjB,cAAgB,CAAC,GAAK,+BAA+B,IAAM,4BAA4B,IAAM,4BAA4B,IAAM,4BAA4B,IAAM,wBAAwB,IAAM,4BAA4B,IAAM,eAAe,IAAM,4BAA4B,IAAM,4BAA4B,IAAM,gCAAgC,IAAM,eAAe,IAAM,4BAA4B,IAAM,4BAA4B,IAAM,4BAA4B,IAAM,eAAe,KAAO,4BAA4B,KAAO,oCAAoC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,6BAA6B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,+BAA+B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,iCAAiC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,iCAAiC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,QAAQ,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,eAAe,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,kCAAkC,KAAO,eAAe,KAAO,eAAe,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,oCAAoC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,+BAA+B,KAAO,6BAA6B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,eAAe,KAAO,4BAA4B,KAAO,oCAAoC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,eAAe,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,oBAAoB,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,eAAe,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,eAAe,KAAO,eAAe,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,iCAAiC,KAAO,oBAAoB,KAAO,4BAA4B,KAAO,gCAAgC,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,eAAe,KAAO,4BAA4B,KAAO,eAAe,KAAO,eAAe,KAAO,4BAA4B,KAAO,6BAA6B,KAAO,6BAA6B,KAAO,mBAAmB,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,+BAA+B,KAAO,4BAA4B,KAAO,4BAA4B,KAAO,kCAAkCA,IAAYA,GAAW,IAAM,CAAC,GAAK,uBAAuB,GAAK,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO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","sources":["webpack://pleroma_fe/webpack/runtime/chunk loaded","webpack://pleroma_fe/webpack/runtime/create fake namespace object","webpack://pleroma_fe/webpack/runtime/load script","webpack://pleroma_fe/./src/i18n/en.json","webpack://pleroma_fe/./node_modules/@kazvmoe-infra/unicode-emoji-json/annotations/ lazy ^\\.\\/.*\\.json$ chunkName: emoji-annotations/[request] namespace object","webpack://pleroma_fe/./src/components/emoji_input/suggestor.js","webpack://pleroma_fe/./src/services/html_converter/utility.service.js","webpack://pleroma_fe/./src/services/html_converter/html_line_converter.service.js","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.vue","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.js","webpack://pleroma_fe/./src/services/matcher/matcher.service.js","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.vue?7c0f","webpack://pleroma_fe/./src/components/rich_content/rich_content.jsx","webpack://pleroma_fe/./src/services/html_converter/html_tree_converter.service.js","webpack://pleroma_fe/./src/components/tab_switcher/tab_switcher.jsx","webpack://pleroma_fe/./src/hocs/with_load_more/with_load_more.jsx","webpack://pleroma_fe/./src/i18n/languages.js","webpack://pleroma_fe/./src/i18n/messages.js","webpack://pleroma_fe/./src/lib/event_target_polyfill.js","webpack://pleroma_fe/./src/modules/interface.js","webpack://pleroma_fe/./src/modules/instance.js","webpack://pleroma_fe/./src/modules/statuses.js","webpack://pleroma_fe/./src/modules/lists.js","webpack://pleroma_fe/./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack://pleroma_fe/./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack://pleroma_fe/./src/services/lists_fetcher/lists_fetcher.service.js","webpack://pleroma_fe/./src/services/backend_interactor_service/backend_interactor_service.js","webpack://pleroma_fe/./src/services/window_utils/window_utils.js","webpack://pleroma_fe/./src/services/new_api/oauth.js","webpack://pleroma_fe/./src/services/push/push.js","webpack://pleroma_fe/./src/modules/users.js","webpack://pleroma_fe/./src/services/chat_utils/chat_utils.js","webpack://pleroma_fe/./src/modules/api.js","webpack://pleroma_fe/./src/modules/profileConfig.js","webpack://pleroma_fe/./src/components/update_notification/update_notification.js","webpack://pleroma_fe/./src/modules/serverSideStorage.js","webpack://pleroma_fe/./src/modules/adminSettings.js","webpack://pleroma_fe/./src/modules/shout.js","webpack://pleroma_fe/./src/modules/oauth.js","webpack://pleroma_fe/./src/modules/auth_flow.js","webpack://pleroma_fe/./src/modules/media_viewer.js","webpack://pleroma_fe/./src/modules/oauth_tokens.js","webpack://pleroma_fe/./src/modules/reports.js","webpack://pleroma_fe/./src/modules/polls.js","webpack://pleroma_fe/./src/modules/postStatus.js","webpack://pleroma_fe/./src/modules/editStatus.js","webpack://pleroma_fe/./src/modules/statusHistory.js","webpack://pleroma_fe/./src/services/chat_service/chat_service.js","webpack://pleroma_fe/./src/modules/chats.js","webpack://pleroma_fe/./src/modules/announcements.js","webpack://pleroma_fe/./src/lib/persisted_state.js","webpack://pleroma_fe/./src/lib/push_notifications_plugin.js","webpack://pleroma_fe/./src/App.vue","webpack://pleroma_fe/./src/components/user_panel/user_panel.vue","webpack://pleroma_fe/./src/components/login_form/login_form.vue","webpack://pleroma_fe/./src/components/login_form/login_form.js","webpack://pleroma_fe/./src/components/login_form/login_form.vue?7e2c","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.vue","webpack://pleroma_fe/./src/services/new_api/mfa.js","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.js","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.vue?75db","webpack://pleroma_fe/./src/components/mfa_form/totp_form.vue","webpack://pleroma_fe/./src/components/mfa_form/totp_form.js","webpack://pleroma_fe/./src/components/mfa_form/totp_form.vue?e31f","webpack://pleroma_fe/./src/components/auth_form/auth_form.js","webpack://pleroma_fe/./src/components/user_panel/user_panel.js","webpack://pleroma_fe/./src/components/user_panel/user_panel.vue?62d1","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.vue","webpack://pleroma_fe/./src/components/navigation/navigation_entry.vue","webpack://pleroma_fe/./src/components/navigation/navigation.js","webpack://pleroma_fe/./src/components/optional_router_link/optional_router_link.vue","webpack://pleroma_fe/./src/components/optional_router_link/optional_router_link.vue?aa8e","webpack://pleroma_fe/./src/components/navigation/navigation_entry.js","webpack://pleroma_fe/./src/components/navigation/navigation_entry.vue?57fe","webpack://pleroma_fe/./src/components/navigation/filter.js","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.js","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.vue?5439","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.vue","webpack://pleroma_fe/./src/components/navigation/navigation_pins.vue","webpack://pleroma_fe/./src/components/navigation/navigation_pins.js","webpack://pleroma_fe/./src/components/navigation/navigation_pins.vue?9359","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.js","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.vue?ec9c","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.vue","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.js","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.vue?b4d3","webpack://pleroma_fe/./src/components/features_panel/features_panel.vue","webpack://pleroma_fe/./src/components/features_panel/features_panel.js","webpack://pleroma_fe/./src/components/features_panel/features_panel.vue?e52c","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.vue?c79e","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.vue","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.js","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.vue?452f","webpack://pleroma_fe/./src/components/media_modal/media_modal.vue","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.js","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.vue?6a4b","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.vue","webpack://pleroma_fe/./src/services/gesture_service/gesture_service.js","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.js","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.vue?cb15","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.vue","webpack://pleroma_fe/./src/components/media_modal/media_modal.js","webpack://pleroma_fe/./src/components/media_modal/media_modal.vue?9f8e","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.vue","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.js","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.vue?c115","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.js","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.vue?cc2d","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.vue","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.js","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.vue?67f1","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.vue","webpack://pleroma_fe/./src/components/search_bar/search_bar.vue","webpack://pleroma_fe/./src/components/search_bar/search_bar.js","webpack://pleroma_fe/./src/components/search_bar/search_bar.vue?d1ca","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.js","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.vue?6641","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.vue","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.js","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.vue?df82","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.vue","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.js","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.vue?03f9","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.vue","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.js","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.vue?9c44","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.vue","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.js","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.vue?4ee0","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.vue","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.js","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.vue?1667","webpack://pleroma_fe/./src/App.js","webpack://pleroma_fe/./src/App.vue?3b2b","webpack://pleroma_fe/./src/components/timeline/timeline.vue","webpack://pleroma_fe/./src/components/conversation/conversation.vue","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.vue","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.js","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.vue?7311","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.vue","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.js","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.vue?f71f","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.vue","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.js","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.vue?4eaf","webpack://pleroma_fe/./src/components/conversation/conversation.js","webpack://pleroma_fe/./src/components/conversation/conversation.vue?6723","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.vue","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.js","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.vue?96c1","webpack://pleroma_fe/./src/components/timeline/timeline.js","webpack://pleroma_fe/./src/components/timeline/timeline.vue?7060","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.js","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.vue?daf2","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.vue","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.vue?9b62","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.js","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.vue?a3f1","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.vue","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.js","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.vue?be7b","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.vue","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.js","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.vue?863c","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.vue","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.js","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.vue?2386","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.vue","webpack://pleroma_fe/./src/components/interactions/interactions.vue","webpack://pleroma_fe/./src/components/interactions/interactions.js","webpack://pleroma_fe/./src/components/interactions/interactions.vue?3dc7","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.js","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.vue?fced","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.vue","webpack://pleroma_fe/./src/components/chat_list/chat_list.vue","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.vue","webpack://pleroma_fe/./src/components/chat_title/chat_title.js","webpack://pleroma_fe/./src/components/chat_title/chat_title.vue?723f","webpack://pleroma_fe/./src/components/chat_title/chat_title.vue","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.js","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.vue?9103","webpack://pleroma_fe/./src/components/chat_new/chat_new.vue","webpack://pleroma_fe/./src/components/chat_new/chat_new.js","webpack://pleroma_fe/./src/components/chat_new/chat_new.vue?e65f","webpack://pleroma_fe/./src/components/chat_list/chat_list.js","webpack://pleroma_fe/./src/components/chat_list/chat_list.vue?39cf","webpack://pleroma_fe/./src/components/chat/chat.vue","webpack://pleroma_fe/./src/components/chat_message/chat_message.vue","webpack://pleroma_fe/./src/components/chat_message_date/chat_message_date.vue","webpack://pleroma_fe/./src/components/chat_message_date/chat_message_date.vue?a1e2","webpack://pleroma_fe/./src/components/chat_message/chat_message.js","webpack://pleroma_fe/./src/components/chat_message/chat_message.vue?38f9","webpack://pleroma_fe/./src/components/chat/chat_layout_utils.js","webpack://pleroma_fe/./src/components/chat/chat.js","webpack://pleroma_fe/./src/components/chat/chat.vue?0265","webpack://pleroma_fe/./src/components/user_profile/user_profile.vue","webpack://pleroma_fe/./src/components/follow_card/follow_card.vue","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.js","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.vue?a06d","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.vue","webpack://pleroma_fe/./src/components/follow_card/follow_card.js","webpack://pleroma_fe/./src/components/follow_card/follow_card.vue?a7d5","webpack://pleroma_fe/./src/components/user_profile/user_profile.js","webpack://pleroma_fe/./src/components/user_profile/user_profile.vue?c6a1","webpack://pleroma_fe/./src/components/search/search.vue","webpack://pleroma_fe/./src/components/search/search.js","webpack://pleroma_fe/./src/components/search/search.vue?853e","webpack://pleroma_fe/./src/components/registration/registration.vue","webpack://pleroma_fe/./src/components/registration/registration.js","webpack://pleroma_fe/./src/components/registration/registration.vue?5788","webpack://pleroma_fe/./src/components/password_reset/password_reset.vue","webpack://pleroma_fe/./src/components/password_reset/password_reset.js","webpack://pleroma_fe/./src/services/new_api/password_reset.js","webpack://pleroma_fe/./src/components/password_reset/password_reset.vue?e9fd","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.vue","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.vue","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.js","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.js","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.vue?64bb","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.vue?427b","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.js","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.vue?a7e1","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.vue","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.vue","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.js","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.vue?d712","webpack://pleroma_fe/./src/components/about/about.vue","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.vue?39d2","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.vue","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.js","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.vue?16a1","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack://pleroma_fe/./src/components/about/about.js","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?cbb1","webpack://pleroma_fe/./src/components/about/about.vue?07c3","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.vue","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.js","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.vue?ac33","webpack://pleroma_fe/./src/components/lists/lists.vue","webpack://pleroma_fe/./src/components/lists_card/lists_card.vue","webpack://pleroma_fe/./src/components/lists_card/lists_card.js","webpack://pleroma_fe/./src/components/lists/lists.js","webpack://pleroma_fe/./src/components/lists_card/lists_card.vue?16e6","webpack://pleroma_fe/./src/components/lists/lists.vue?7e21","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.js","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.vue?804f","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.vue","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.vue","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.vue","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.js","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.vue?4447","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.js","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.vue?056b","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.vue","webpack://pleroma_fe/./src/components/announcement/announcement.vue","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.vue","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.js","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.vue?cdb9","webpack://pleroma_fe/./src/components/announcement/announcement.js","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.js","webpack://pleroma_fe/./src/components/announcement/announcement.vue?a400","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.vue?89ce","webpack://pleroma_fe/./src/boot/routes.js","webpack://pleroma_fe/./src/directives/body_scroll_lock.js","webpack://pleroma_fe/./src/boot/after_store.js","webpack://pleroma_fe/./src/main.js","webpack://pleroma_fe/./src/modules/config.js","webpack://pleroma_fe/./src/services/errors/errors.js","webpack://pleroma_fe/./src/modules/errors.js","webpack://pleroma_fe/./src/services/api/api.service.js","webpack://pleroma_fe/./src/services/attributes_helper/attributes_helper.service.js","webpack://pleroma_fe/./src/services/color_convert/color_convert.js","webpack://pleroma_fe/./src/services/component_utils/component_utils.js","webpack://pleroma_fe/./src/services/date_utils/date_utils.js","webpack://pleroma_fe/./src/services/desktop_notification_utils/desktop_notification_utils.js","webpack://pleroma_fe/./src/services/entity_normalizer/entity_normalizer.service.js","webpack://pleroma_fe/./src/services/favicon_service/favicon_service.js","webpack://pleroma_fe/./src/services/file_size_format/file_size_format.js","webpack://pleroma_fe/./src/services/file_type/file_type.service.js","webpack://pleroma_fe/./src/services/locale/locale.service.js","webpack://pleroma_fe/./src/services/notification_utils/notification_utils.js","webpack://pleroma_fe/./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack://pleroma_fe/./src/services/offset_finder/offset_finder.service.js","webpack://pleroma_fe/./src/services/promise_interval/promise_interval.js","webpack://pleroma_fe/./src/services/random_seed/random_seed.service.js","webpack://pleroma_fe/./src/services/status_parser/status_parser.js","webpack://pleroma_fe/./src/services/status_poster/status_poster.service.js","webpack://pleroma_fe/./src/services/style_setter/style_setter.js","webpack://pleroma_fe/./src/services/theme_data/pleromafe.js","webpack://pleroma_fe/./src/services/theme_data/theme_data.service.js","webpack://pleroma_fe/./src/services/user_highlighter/user_highlighter.js","webpack://pleroma_fe/./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack://pleroma_fe/./src/components/attachment/attachment.vue","webpack://pleroma_fe/./src/components/attachment/attachment.js","webpack://pleroma_fe/./src/components/attachment/attachment.vue?6808","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.vue","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.js","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.vue?171c","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.vue","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.js","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.vue?95ff","webpack://pleroma_fe/./src/components/checkbox/checkbox.vue","webpack://pleroma_fe/./src/components/checkbox/checkbox.vue?4d95","webpack://pleroma_fe/./src/components/confirm_modal/confirm_modal.js","webpack://pleroma_fe/./src/components/confirm_modal/confirm_modal.vue?dff7","webpack://pleroma_fe/./src/components/confirm_modal/confirm_modal.vue","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.vue","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.js","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.vue?60df","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.vue","webpack://pleroma_fe/./src/services/completion/completion.js","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.js","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.vue?a18c","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.vue","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.js","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.vue?cc95","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.vue","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.js","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.vue?6411","webpack://pleroma_fe/./src/services/ruffle_service/ruffle_service.js","webpack://pleroma_fe/./src/components/flash/flash.vue","webpack://pleroma_fe/./src/components/flash/flash.js","webpack://pleroma_fe/./src/components/flash/flash.vue?8f01","webpack://pleroma_fe/./src/services/follow_manipulate/follow_manipulate.js","webpack://pleroma_fe/./src/components/follow_button/follow_button.js","webpack://pleroma_fe/./src/components/follow_button/follow_button.vue?fbc0","webpack://pleroma_fe/./src/components/follow_button/follow_button.vue","webpack://pleroma_fe/./src/components/gallery/gallery.vue","webpack://pleroma_fe/./src/components/gallery/gallery.js","webpack://pleroma_fe/./src/components/gallery/gallery.vue?c41d","webpack://pleroma_fe/./src/components/interface_language_switcher/interface_language_switcher.vue","webpack://pleroma_fe/./src/components/interface_language_switcher/interface_language_switcher.vue?f2c7","webpack://pleroma_fe/./src/components/link-preview/link-preview.vue","webpack://pleroma_fe/./src/components/link-preview/link-preview.js","webpack://pleroma_fe/./src/components/link-preview/link-preview.vue?5c9b","webpack://pleroma_fe/./src/components/list/list.vue","webpack://pleroma_fe/./src/components/list/list.vue?b52f","webpack://pleroma_fe/./src/components/media_upload/media_upload.js","webpack://pleroma_fe/./src/components/media_upload/media_upload.vue?73d1","webpack://pleroma_fe/./src/components/media_upload/media_upload.vue","webpack://pleroma_fe/./src/components/mention_link/mention_link.vue","webpack://pleroma_fe/./src/components/mention_link/mention_link.js","webpack://pleroma_fe/./src/components/mention_link/mention_link.vue?f0cb","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.vue","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.js","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.vue?e8e7","webpack://pleroma_fe/./src/components/modal/modal.vue","webpack://pleroma_fe/./src/components/modal/modal.vue?8c58","webpack://pleroma_fe/./src/components/notifications/notifications.vue","webpack://pleroma_fe/./src/components/notification/notification.vue","webpack://pleroma_fe/./src/components/report/report.vue","webpack://pleroma_fe/./src/components/report/report.js","webpack://pleroma_fe/./src/components/report/report.vue?5c84","webpack://pleroma_fe/./src/components/notification/notification.js","webpack://pleroma_fe/./src/components/notification/notification.vue?17c8","webpack://pleroma_fe/./src/components/notifications/notification_filters.vue","webpack://pleroma_fe/./src/components/notifications/notification_filters.vue?4a98","webpack://pleroma_fe/./src/components/notifications/notifications.js","webpack://pleroma_fe/./src/components/notifications/notifications.vue?770b","webpack://pleroma_fe/./src/components/panel_loading/panel_loading.vue","webpack://pleroma_fe/./src/components/panel_loading/panel_loading.vue?50c2","webpack://pleroma_fe/./src/components/popover/popover.js","webpack://pleroma_fe/./src/components/popover/popover.vue?237b","webpack://pleroma_fe/./src/components/popover/popover.vue","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.vue","webpack://pleroma_fe/./src/components/poll/poll_form.vue","webpack://pleroma_fe/./src/components/poll/poll_form.js","webpack://pleroma_fe/./src/components/poll/poll_form.vue?5434","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.js","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.vue?b98e","webpack://pleroma_fe/./src/components/progress_button/progress_button.vue","webpack://pleroma_fe/./src/components/progress_button/progress_button.vue?2d10","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.vue","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.js","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.vue?188a","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.vue","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.js","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.vue?cbff","webpack://pleroma_fe/./src/components/select/select.js","webpack://pleroma_fe/./src/components/select/select.vue?fa00","webpack://pleroma_fe/./src/components/select/select.vue","webpack://pleroma_fe/./src/components/status/status.vue","webpack://pleroma_fe/./src/components/reply_button/reply_button.vue","webpack://pleroma_fe/./src/components/reply_button/reply_button.js","webpack://pleroma_fe/./src/components/reply_button/reply_button.vue?f8cc","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.vue","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.js","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.vue?4c13","webpack://pleroma_fe/./src/components/react_button/react_button.vue","webpack://pleroma_fe/./src/components/react_button/react_button.js","webpack://pleroma_fe/./src/components/react_button/react_button.vue?64d4","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.vue","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.js","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.vue?774a","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.vue","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.js","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.vue?2a14","webpack://pleroma_fe/./src/components/status_popover/status_popover.vue","webpack://pleroma_fe/./src/components/status_popover/status_popover.js","webpack://pleroma_fe/./src/components/status_popover/status_popover.vue?2f31","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.vue","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.js","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.vue?32eb","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.vue","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.js","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.vue?be26","webpack://pleroma_fe/./src/components/status/status.js","webpack://pleroma_fe/./src/components/status/status.vue?f274","webpack://pleroma_fe/./src/components/status_content/status_content.vue","webpack://pleroma_fe/./src/components/poll/poll.vue","webpack://pleroma_fe/./src/components/poll/poll.js","webpack://pleroma_fe/./src/components/poll/poll.vue?09ad","webpack://pleroma_fe/./src/components/status_body/status_body.vue","webpack://pleroma_fe/./src/components/status_body/status_body.js","webpack://pleroma_fe/./src/components/status_body/status_body.vue?a029","webpack://pleroma_fe/./src/components/status_content/status_content.js","webpack://pleroma_fe/./src/components/status_content/status_content.vue?5b7b","webpack://pleroma_fe/./src/components/still-image/still-image.vue","webpack://pleroma_fe/./src/components/still-image/still-image.js","webpack://pleroma_fe/./src/components/still-image/still-image.vue?7a8d","webpack://pleroma_fe/./src/components/timeago/timeago.vue","webpack://pleroma_fe/./src/components/timeago/timeago.vue?3167","webpack://pleroma_fe/./src/components/unicode_domain_indicator/unicode_domain_indicator.vue","webpack://pleroma_fe/./src/components/unicode_domain_indicator/unicode_domain_indicator.vue?760a","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.js","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.vue?84fc","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.vue","webpack://pleroma_fe/./src/components/user_card/user_card.vue","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.vue","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.js","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.vue?98d7","webpack://pleroma_fe/./src/components/account_actions/account_actions.vue","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.vue","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.js","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.vue?e3cb","webpack://pleroma_fe/./src/components/account_actions/account_actions.js","webpack://pleroma_fe/./src/components/account_actions/account_actions.vue?26a0","webpack://pleroma_fe/./src/components/user_note/user_note.vue","webpack://pleroma_fe/./src/components/user_note/user_note.js","webpack://pleroma_fe/./src/components/user_note/user_note.vue?302a","webpack://pleroma_fe/./src/components/user_card/user_card.js","webpack://pleroma_fe/./src/components/user_card/user_card.vue?bb36","webpack://pleroma_fe/./src/components/user_link/user_link.vue","webpack://pleroma_fe/./src/components/user_link/user_link.vue?e5f2","webpack://pleroma_fe/./src/components/user_popover/user_popover.js","webpack://pleroma_fe/./src/components/user_popover/user_popover.vue?dfdb","webpack://pleroma_fe/./src/components/user_popover/user_popover.vue","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.js","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.vue?da03","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.vue","webpack://pleroma_fe/./src/i18n/ lazy ^\\.\\/.*\\.json$ include: \\.json$ chunkName: i18n/[request] namespace object","webpack://pleroma_fe/webpack/bootstrap","webpack://pleroma_fe/webpack/runtime/compat get default export","webpack://pleroma_fe/webpack/runtime/define property getters","webpack://pleroma_fe/webpack/runtime/ensure chunk","webpack://pleroma_fe/webpack/runtime/get javascript chunk filename","webpack://pleroma_fe/webpack/runtime/get mini-css chunk filename","webpack://pleroma_fe/webpack/runtime/global","webpack://pleroma_fe/webpack/runtime/hasOwnProperty shorthand","webpack://pleroma_fe/webpack/runtime/make namespace object","webpack://pleroma_fe/webpack/runtime/node module decorator","webpack://pleroma_fe/webpack/runtime/publicPath","webpack://pleroma_fe/webpack/runtime/css loading","webpack://pleroma_fe/webpack/runtime/jsonp chunk loading","webpack://pleroma_fe/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"pleroma_fe:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","export default {\n \"about\": {\n \"mrf\": {\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federation\"])},\n \"keyword\": {\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keyword policies\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"The Whole Known Network\\\" Timeline\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replace\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])}\n },\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enabled MRF policies\"])},\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF policies manipulate the federation behaviour of the instance. The following policies are enabled:\"])},\n \"simple\": {\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance-specific policies\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason\"])},\n \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N/A\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance only accepts messages from the following instances:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will not accept messages from the following instances:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quarantine\"])},\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will send only public posts to the following instances:\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"Known Network\\\" Timeline\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes these instances from \\\"Known Network\\\" timeline:\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media Removal\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes media from posts on the following instances:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media force-set as sensitive\"])},\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance forces media to be set sensitive in posts on the following instances:\"])}\n }\n },\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Staff\"])}\n },\n \"announcements\": {\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcements\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcement\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark as read\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post announcement\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your announcement content here...\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post\"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error: \", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start time: \"])},\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"End time: \"])},\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is an all-day event\"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Published at \", _interpolate(_named(\"time\"))])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Starts at \", _interpolate(_named(\"time\"))])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ends at \", _interpolate(_named(\"time\"))])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This announcement is inactive\"])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])}\n },\n \"domain_mute_card\": {\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])}\n },\n \"exporter\": {\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export\"])},\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Processing, you'll soon be asked to download your file\"])}\n },\n \"features_panel\": {\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma Chat\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media proxy\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope options\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text limit\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Features\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload limit\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error fetching user\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Find user\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apply\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loading…\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured\"])},\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"An error occured: \", _interpolate(_list(0))])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please try again\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"optional\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show more\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show less\"])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Never show again\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dismiss\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verify\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Undo\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peek\"])},\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scroll to top\"])},\n \"role\": {\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderator\"])}\n },\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin item\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin item\"])},\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click to show Flash content using Ruffle (Experimental, may not work).\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note that this can be potentially dangerous since Flash content is still arbitrary code.\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to load flash content, see console for details.\"])},\n \"scope_in_timeline\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted\"])}\n }\n },\n \"image_cropper\": {\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Crop picture\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save without cropping\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n },\n \"importer\": {\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imported successfully.\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured while importing this file.\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in with OAuth\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log out\"])},\n \"logout_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout confirmation\"])},\n \"logout_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to logout?\"])},\n \"logout_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"logout_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not logout\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in to join the discussion\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication code\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a recovery code\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a two-factor code\"])},\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery code\"])},\n \"heading\": {\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor authentication\"])},\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor recovery\"])}\n }\n },\n \"media_modal\": {\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous\"])},\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close media viewer\"])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow requests\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interactions\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct messages\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public timeline\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timeline\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home timeline\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Known Network\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmarks\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Search\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search\"])},\n \"search_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close search bar\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timelines\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lists\"])},\n \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Customize navigation bar\"])},\n \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit pinned items\"])},\n \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Done editing\"])},\n \"mobile_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggle mobile sidebar\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open notifications\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open notifications (there are unread ones)\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close notifications\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcements\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unknown status, searching for it…\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching notifications: \", _interpolate(_list(0))])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorited your status\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"followed you\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wants to follow you\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older notifications\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Read!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated your status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more notifications\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrated to\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reacted with \", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"submitted a report\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"poll has ended\"])}\n },\n \"polls\": {\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add poll\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add option\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Option\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"votes\"])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" person voted\"]), _normalize([_interpolate(_named(\"count\")), \" people voted\"])])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" vote\"]), _normalize([_interpolate(_named(\"count\")), \" votes\"])])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vote\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll type\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Single choice\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Multiple choices\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll age\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ends in \", _interpolate(_list(0))])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ended \", _interpolate(_list(0)), \" ago\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Too few unique options in poll\"])}\n },\n \"emoji\": {\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stickers\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep picker open\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for an emoji\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insert emoji\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom emoji\"])},\n \"unpacked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpacked emoji\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode emoji\"])},\n \"unicode_groups\": {\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activities\"])},\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Animals & Nature\"])},\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flags\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Food & Drink\"])},\n \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Objects\"])},\n \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"People & Body\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Smileys & Emotion\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Symbols\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Travel & Places\"])}\n },\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loaded first \", _interpolate(_named(\"saneAmount\")), \" emoji, loading all emoji may cause performance issues.\"])},\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loading all \", _interpolate(_named(\"emojiAmount\")), \" emoji\"])},\n \"regional_indicator\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Regional indicator \", _interpolate(_named(\"letter\"))])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies.\"])}\n },\n \"interactions\": {\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats and favorites\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New follows\"])},\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji Reactions\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reports\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User migrates\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older interactions\"])}\n },\n \"post_status\": {\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit status\"])},\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post new status\"])},\n \"reply_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply to this status\"])},\n \"quote_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quote this status\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your account is not \", _interpolate(_list(0)), \". Anyone can follow you to view your follower-only posts.\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"locked\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark attachments as sensitive\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media description\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Plain text\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])}\n },\n \"content_type_selection\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post format\"])},\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subject (optional)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to all the mentioned users.\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will only be visible to the mentioned users at the beginning of the message.\"])},\n \"edit_remote_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Other remote instances may not support editing and unable to receive the latest version of your post.\"])},\n \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma does not support editing mentions or polls.\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posting\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Empty\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Can't post an empty status with no files\"])},\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to update media, try again\"])},\n \"scope_notice\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to everyone\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to your followers only\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will not be visible in Public Timeline and The Whole Known Network\"])}\n },\n \"scope_notice_dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close this notice\"])},\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct - post to mentioned users only\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only - post to followers only\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public - post to public timelines\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted - do not post to public timelines\"])}\n }\n },\n \"registration\": {\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio (optional)\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email (optional)\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display name\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password confirmation\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invite token\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click the image to get a new captcha\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. Lain Iwakura\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g.\\nHi, I'm Lain.\\nI’m an anime girl living in suburban Japan. You may know me from the Wired.\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason to register\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance approves registrations manually.\\nLet the administration know why you want to register.\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"should be the same as password\"])},\n \"birthday_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"birthday_min_age\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"must be on or before \", _interpolate(_named(\"date\"))])}\n },\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"In which language do you want to receive emails from the server?\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday:\"])},\n \"birthday_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday (optional):\"])}\n },\n \"remote_user_resolver\": {\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote user resolver\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Searching for\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Not found.\"])}\n },\n \"report\": {\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reporter:\"])},\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reported user:\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reported statuses:\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notes:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"State:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open\"])},\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Closed\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resolved\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select all\"])}\n },\n \"settings\": {\n \"add_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add fallback language\"])},\n \"remove_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n \"primary_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Primary language:\"])},\n \"fallback_language\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Fallback language \", _interpolate(_named(\"index\")), \":\"])},\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App name\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show advanced\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setting is different from default\"])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This setting is tied to your profile and affects all sessions and clients\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your current password to confirm your identity\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts Look & Feel\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention links\"])},\n \"mfa\": {\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setup OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"presetting OTP\"])},\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm & enable OTP\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor Authentication\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Generate new recovery codes\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When you generate new recovery codes, your old codes won’t work anymore.\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery codes.\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receiving backup codes…\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.\"])},\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication methods\"])},\n \"scan\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scan\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Using your two-factor app, scan this QR code or enter text key:\"])},\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Key\"])}\n },\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To enable two-factor authentication, enter the code from your two-factor app:\"])}\n }\n },\n \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show lists in navigation\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow auto-follow when following account moves\"])},\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars (notifications)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Background\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language for receiving emails from the server\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block export\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your blocks to a csv file\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block import\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing blocks\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks imported! Processing them will take a while.\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute export\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your mutes to a csv file\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute import\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing mutes\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes imported! Processing them will take a while.\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import mutes from a csv file\"])},\n \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account backup\"])},\n \"account_backup_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This allows you to download an archive of your account information and your posts, but they cannot yet be imported into a Pleroma account.\"])},\n \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup\"])},\n \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Download\"])},\n \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This backup is not ready yet.\"])},\n \"backup_running\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"This backup is in progress, processed \", _interpolate(_named(\"number\")), \" record.\"]), _normalize([\"This backup is in progress, processed \", _interpolate(_named(\"number\")), \" records.\"])])},\n \"backup_failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This backup has failed.\"])},\n \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error fetching backup list: \", _interpolate(_named(\"error\"))])},\n \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Create a new backup\"])},\n \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Added a new backup.\"])},\n \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error adding a new backup: \", _interpolate(_named(\"error\"))])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is a bot account\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blue (Reply, follow)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Green (Retweet)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Orange (Favorite)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Red (Cancel)\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change email\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your email.\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email changed successfully!\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change password\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your password.\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password changed successfully!\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chat message\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse posts with subjects\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Composing\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm new password\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n \"confirm_dialogs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ask for confirmation when\"])},\n \"confirm_dialogs_repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeating a status\"])},\n \"confirm_dialogs_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"unfollowing a user\"])},\n \"confirm_dialogs_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"blocking a user\"])},\n \"confirm_dialogs_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"muting a user\"])},\n \"confirm_dialogs_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"deleting a status\"])},\n \"confirm_dialogs_logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"logging out\"])},\n \"confirm_dialogs_approve_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"approving a follower\"])},\n \"confirm_dialogs_deny_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"denying a follower\"])},\n \"confirm_dialogs_remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"removing a follower\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes and Blocks\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data import / export\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default visibility scope\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permanently delete your data and deactivate your account.\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue deleting your account. If this persists please contact your instance administrator.\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your password in the input below to confirm account deletion.\"])},\n \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account aliases\"])},\n \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alias\"])},\n \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error fetching aliases: \", _interpolate(_named(\"error\"))])},\n \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove this alias\"])},\n \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Add a new alias (e.g. \", _interpolate(_named(\"example\")), \")\"])},\n \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alias is added.\"])},\n \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error adding alias: \", _interpolate(_named(\"error\"))])},\n \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Move account\"])},\n \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If you want to move the account somewhere else, you must go to your target account and add an alias pointing here.\"])},\n \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Target account (e.g. \", _interpolate(_named(\"example\")), \")\"])},\n \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account is moved.\"])},\n \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error moving account: \", _interpolate(_named(\"error\"))])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow discovery of this account in search results and other services\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domains\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The recommended minimum size for avatar images is 150x150 pixels.\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pad emoji with spaces when adding from picker\"])},\n \"autocomplete_select_first\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically select the first candidate when autocomplete results are available\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show emoji reactions on timeline\"])},\n \"emoji_reactions_scale\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reactions scale factor\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save preset\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtering\"])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordfilter\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All statuses containing these words will be muted, one per line\"])},\n \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Word filter and more...\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow export\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your follows to a csv file\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow import\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing followers\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows imported! Processing them will take a while.\"])},\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accent\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foreground\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"General\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in conversations\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in timeline\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide media previews\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide posts of muted users\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute bot posts\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide bot indication in posts\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted posts\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum amount of thumbnails per post (empty = no limit)\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance-specific panel\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance shoutbox\"])},\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reverse order of columns\"])},\n \"navbar_column_stretch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stretch navbar to columns width\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show floating New Post button\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance wallpaper\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preload images\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open NSFW attachments with just one click\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide post statistics (e.g. the number of favorites)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide user statistics (e.g. the number of followers)\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide all filtered posts\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide word-filtered statuses\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted threads\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import blocks from a csv file\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import follows from a csv file\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load preset\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Checkboxes\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(default: \", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(default)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface language\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma theme. No changes to your theme were made.\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unavailable in your browser\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Links\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restrict your account to approved followers only\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop videos\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop only videos without sound (i.e. Mastodon's \\\"gifs\\\")\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Play videos in a popup frame\"])},\n \"url\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n \"file_export_import\": {\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings backup\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings to file\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings and theme to file\"])},\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restore settings from file\"])},\n \"errors\": {\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma settings backup. No changes were made.\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", this PleromaFE (settings ver \", _interpolate(_named(\"feMajor\")), \") is too old to handle it\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", file version is too old and not supported (min. set. ver. \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File minor version is different, some settings might not load\"])}\n }\n },\n \"profile_fields\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile metadata\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add field\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])}\n },\n \"birthday\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday\"])},\n \"show_birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show my birthday\"])}\n },\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't crop the attachment in thumbnails\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name & bio\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Profiles\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Types of notifications to show\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Migrates\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reactions\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ends of polls you voted in\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Strip rich text formatting from all posts\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No blocks\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No mutes\"])},\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show list of my favorites (people still get notified)\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who I'm following\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who's following me\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follow count\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follower count\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Admin\\\" badge in my profile\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Moderator\\\" badge in my profile\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide sensitive/NSFW media\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth tokens\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Refresh token\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valid until\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panels\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause when tab is not focused\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Presets\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile background\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile banner\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set up interface edge rounding (in pixels)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies in timeline\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all replies\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me or users I'm following\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to my follows\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to self only\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically hide New Post button (mobile)\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error saving settings\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings saved\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to block\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to mute\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy scope when replying (DMs are always copied)\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Minimize post scope selection options\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new avatar\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile background\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile banner\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset avatar\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile background\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile banner\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the avatar?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the banner?\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the background?\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show subject field\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy subject when replying\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like email: \\\"re: subject\\\"\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like mastodon: copy as is\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not copy\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation display style\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree-style\"])},\n \"conversation_display_tree_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree view\"])},\n \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't stick column headers to top of the screen\"])},\n \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show side column's scrollbars\"])},\n \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When there's enough space, show third column containing\"])},\n \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show third column at all\"])},\n \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications column\"])},\n \"third_column_mode_postform\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Main post form and navigation\"])},\n \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Columns\"])},\n \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Column sizes\"])},\n \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sidebar\"])},\n \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow more flexible navigation in tree view\"])},\n \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display ancestors of the current status in faint text\"])},\n \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linear-style\"])},\n \"conversation_display_linear_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linear view\"])},\n \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show the \\\"other replies\\\" button\"])},\n \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Below statuses\"])},\n \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inside statuses\"])},\n \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum number of levels in thread to display by default\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post status content type\"])},\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark posts as sensitive by default\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause animated images until you hover on them\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically show new posts when scrolled to the top\"])},\n \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show new posts automatically\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Users\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receive posts and notifications real-time\"])},\n \"use_websockets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use websockets (Realtime updates)\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use hex color codes (#rrggbb) to customize your color theme.\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can also override certain component's colors and opacity by toggling the checkbox, use \\\"Clear all\\\" button to clear all overrides.\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case.\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips/alerts\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search domains to mute\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload a photo\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"yes\"])}\n },\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Optimize timeline rendering\"])},\n \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display \", \"@\", \" symbol as an icon instead of text\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display mention links\"])},\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as short names (e.g. \", \"@\", \"foo)\"])},\n \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"as full names only for remote users (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as full names (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_use_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user card when clicking mention links\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar beside the link\"])},\n \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar next to mentions\"])},\n \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fade domains (e.g. \", \"@\", \"example.org in \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlight mention of you when you are mentioned\"])},\n \"user_popover_avatar_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popover avatar click action\"])},\n \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zoom the avatar\"])},\n \"user_popover_avatar_action_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close the popover\"])},\n \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open profile\"])},\n \"user_popover_avatar_overlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user popover over user avatar\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fun\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meme arrows\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show (You)s\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filters\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block notifications from users who you do not follow\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide the sender and contents of push notifications\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To stop receiving notifications from a specific user, use a mute.\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking a user stops all notifications as well as unsubscribes them.\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable web push notifications\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More settings\"])},\n \"style\": {\n \"switcher\": {\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep colors\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep shadows\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep opacity\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep roundness\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep fonts\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"Keep\\\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear all\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear opacity\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load theme\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep as is\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Old version\"])},\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New version\"])},\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE has been upgraded, theme could look a little bit different than you remember.\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies.\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in newer version of FE.\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in older version of FE.\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead.\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No theme snapshot was in the file so it could look different than originally envisioned.\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's theme engine upgraded after version update.\"])},\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's version rolled back.\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just to be safe, theme snapshot loaded. You can try loading theme data.\"])},\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"For whatever reason snapshot was missing, some stuff could look different than you remember.\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version.\"])}\n }\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Color\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opacity\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Contrast ratio is \", _interpolate(_named(\"ratio\")), \", it \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n \"level\": {\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AA guideline (minimal)\"])},\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AAA guideline (recommended)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"doesn't meet any accessibility guidelines\"])}\n },\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for large (18pt+) text\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for text\"])}\n }\n }\n },\n \"common_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common colors\"])},\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"See \\\"Advanced\\\" tab for more detailed control\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons, accents, badges\"])}\n },\n \"advanced_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Advanced\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alert background\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warning\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neutral\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts/User bios\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Badge background\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips, menus, popovers\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notification\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Borders\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Faded text\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Underlay\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wallpaper\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll graph\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlighted elements\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pressed\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected post\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected menu item\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disabled\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggled\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tabs\"])},\n \"chat\": {\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Incoming\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Outgoing\"])},\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Border\"])}\n }\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roundness\"])}\n },\n \"shadows\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadow and lighting\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Component\"])},\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Override\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Shadow #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blur\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Spread\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inset\"])},\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"For shadows you can also use the \", _interpolate(_list(0)), \" notation to use other color slot.\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Warning, this shadow always uses \", _interpolate(_list(0)), \" when browser supports it.\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" does not support \", _interpolate(_list(1)), \" parameter and \", _interpolate(_list(2)), \" keyword.\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadows with spread > 0 will appear as if it was set to zero\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Inset shadows will be using \", _interpolate(_list(0))])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in profile view)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in post display)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popups and tooltips\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (hover)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed+hover)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input field\"])}\n }\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fonts\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select font to use for elements of UI. For \\\"custom\\\" you have to enter exact font name as it appears in system.\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post text\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monospaced text in a post (rich text)\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Font name\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Size (in px)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weight (boldness)\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Example error\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"A bunch of more \", _interpolate(_list(0)), \" and \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"content\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"helpful manual\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Read our \", _interpolate(_list(0)), \" to learn nothing useful!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is fine\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I have skimmed over terms and conditions\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a nice lil' link\"])}\n }\n },\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Version\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backend version\"])},\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Frontend version\"])}\n },\n \"commit_value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save\"])},\n \"commit_value_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Value is not saved, press this button to commit your changes\"])},\n \"reset_value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"reset_value_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset draft\"])},\n \"hard_reset_value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hard reset\"])},\n \"hard_reset_value_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove setting from storage, forcing use of default value\"])}\n },\n \"admin_dash\": {\n \"window_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"wip_notice\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"This admin dashboard is experimental and WIP, \", _interpolate(_named(\"adminFeLink\")), \".\"])},\n \"old_ui_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"old admin UI available here\"])},\n \"reset_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset all\"])},\n \"commit_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save all\"])},\n \"tabs\": {\n \"nodb\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No DB Config\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance\"])},\n \"limits\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limits\"])},\n \"frontends\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Front-ends\"])}\n },\n \"nodb\": {\n \"heading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Database config is disabled\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"You need to change backend config files so that \", _interpolate(_named(\"property\")), \" is set to \", _interpolate(_named(\"value\")), \", see more in \", _interpolate(_named(\"documentation\")), \".\"])},\n \"documentation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation\"])},\n \"text2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Most configuration options will be unavailable.\"])}\n },\n \"captcha\": {\n \"native\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Native\"])},\n \"kocaptcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KoCaptcha\"])}\n },\n \"instance\": {\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance information\"])},\n \"registrations\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User sign-ups\"])},\n \"captcha_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"kocaptcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KoCaptcha settings\"])},\n \"access\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance access\"])},\n \"restrict\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restrict access for anonymous visitors\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Detailed setting for allowing/disallowing access to certain aspects of API. By default (indeterminate state) it will disallow if instance is not public, ticked checkbox means disallow access even if instance is public, unticked means allow access even if instance is private. Please note that unexpected behavior might happen if some settings are set, i.e. if profile access is disabled posts will show without profile information.\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timelines access\"])},\n \"profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User profiles access\"])},\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statues/activities access\"])}\n }\n },\n \"limits\": {\n \"arbitrary_limits\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Arbitrary limits\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post limits\"])},\n \"uploads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments limits\"])},\n \"users\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User profile limits\"])},\n \"profile_fields\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile fields limits\"])},\n \"user_uploads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile media limits\"])}\n },\n \"frontend\": {\n \"repository\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repository link\"])},\n \"versions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Available versions\"])},\n \"build_url\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Build URL\"])},\n \"reinstall\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reinstall\"])},\n \"is_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Default)\"])},\n \"is_default_custom\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(Default, version: \", _interpolate(_named(\"version\")), \")\"])},\n \"install\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Install\"])},\n \"install_version\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Install version \", _interpolate(_named(\"version\"))])},\n \"more_install_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More install options\"])},\n \"more_default_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More default setting options\"])},\n \"set_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set default\"])},\n \"set_default_version\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Set version \", _interpolate(_named(\"version\")), \" as default\"])},\n \"wip_notice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please note that this section is a WIP and lacks certain features as backend implementation of front-end management is incomplete.\"])},\n \"default_frontend\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default front-end\"])},\n \"default_frontend_tip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default front-end will be shown to all users. Currently there's no way to for a user to select personal front-end. If you switch away from PleromaFE you'll most likely have to use old and buggy AdminFE to do instance configuration until we replace it.\"])},\n \"available_frontends\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Available for install\"])},\n \"failure_installing_frontend\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Failed to install frontend \", _interpolate(_named(\"version\")), \": \", _interpolate(_named(\"reason\"))])},\n \"success_installing_frontend\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Frontend \", _interpolate(_named(\"version\")), \" successfully installed\"])}\n },\n \"temp_overrides\": {\n \":pleroma\": {\n \":instance\": {\n \":public\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance is public\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disabling this will make all API accessible only for logged-in users, this will make Public and Federated timelines inaccessible to anonymous visitors.\"])}\n },\n \":limit_to_local_content\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limit search to local content\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disables global network search for unauthenticated (default), all users or none\"])}\n },\n \":description_limit\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limit\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Character limit for attachment descriptions\"])}\n },\n \":background_image\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Background image\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Background image (primarily used by PleromaFE)\"])}\n }\n }\n }\n }\n },\n \"time\": {\n \"unit\": {\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" day\"]), _normalize([_interpolate(_list(0)), \" days\"])])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" hour\"]), _normalize([_interpolate(_list(0)), \" hours\"])])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" minute\"]), _normalize([_interpolate(_list(0)), \" minutes\"])])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" month\"]), _normalize([_interpolate(_list(0)), \" months\"])])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" second\"]), _normalize([_interpolate(_list(0)), \" seconds\"])])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" week\"]), _normalize([_interpolate(_list(0)), \" weeks\"])])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" year\"]), _normalize([_interpolate(_list(0)), \" years\"])])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])}\n },\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"in \", _interpolate(_list(0))])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" ago\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"just now\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"now\"])}\n },\n \"timeline\": {\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching timeline: \", _interpolate(_list(0))])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older statuses\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post is marked as followers-only or direct and cannot be repeated\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show new\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reload\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Up-to-date\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more statuses\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No statuses\"])},\n \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Realtime connection established\"])},\n \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Realtime connection lost: CloseEvent code \", _interpolate(_list(0))])},\n \"quick_view_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quick view settings\"])},\n \"quick_filter_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quick filter settings\"])}\n },\n \"status\": {\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n \"repeat_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to repeat this status?\"])},\n \"repeat_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat confirmation\"])},\n \"repeat_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat\"])},\n \"repeat_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not repeat\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete status\"])},\n \"delete_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error deleting status: \", _interpolate(_list(0))])},\n \"edit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit status\"])},\n \"edited_at\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(last edited \", _interpolate(_named(\"time\")), \")\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin on profile\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin from profile\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pinned\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unbookmark\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this status?\"])},\n \"delete_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete confirmation\"])},\n \"delete_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n \"delete_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply to\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies:\"])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" other):\"]), _normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" others):\"])])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute conversation\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute conversation\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status unavailable\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy link to status\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"External source\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thread muted\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", has words:\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full subject\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide full subject\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show content\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide content\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post was deleted\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(You)\"])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \" more\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Post has \", _interpolate(_named(\"number\")), \" attachment(s)\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse attachments\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all attachments\"])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show in media modal\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview description (open attachment for full description)\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachment\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove attachment\"])},\n \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stop Flash player\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment left\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment right\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open gallery\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide this thread\"])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show this thread\"])},\n \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" status in total, max depth \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total, max depth \", _interpolate(_named(\"depth\")), \")\"])])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" status in total)\"]), _normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total)\"])])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other reply under this status\"]), _normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other replies under this status\"])])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other status)\"]), _normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other statuses)\"])])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies to this status\"])},\n \"status_history\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status history\"])},\n \"reaction_count_label\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"num\")), \" person reacted\"]), _normalize([_interpolate(_named(\"num\")), \" people reacted\"])])},\n \"hide_quote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide the quoted status\"])},\n \"display_quote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display the quoted status\"])},\n \"invisible_quote\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Quoted status unavailable: \", _interpolate(_named(\"link\"))])},\n \"more_actions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More actions on this status\"])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n \"approve_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve confirmation\"])},\n \"approve_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n \"approve_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not approve\"])},\n \"approve_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you want to approve \", _interpolate(_named(\"user\")), \"'s follow request?\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocked!\"])},\n \"block_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block confirmation\"])},\n \"block_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to block \", _interpolate(_named(\"user\")), \"?\"])},\n \"block_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n \"block_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not block\"])},\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivated\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n \"deny_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny confirmation\"])},\n \"deny_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n \"deny_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not deny\"])},\n \"deny_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you want to deny \", _interpolate(_named(\"user\")), \"'s follow request?\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel request\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request sent!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Requesting…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n \"unfollow_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow confirmation\"])},\n \"unfollow_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to unfollow \", _interpolate(_named(\"user\")), \"?\"])},\n \"unfollow_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n \"unfollow_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not unfollow\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows you!\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's you!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Message\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muted\"])},\n \"mute_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute confirmation\"])},\n \"mute_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to mute \", _interpolate(_named(\"user\")), \"?\"])},\n \"mute_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"mute_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not mute\"])},\n \"mute_duration_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute this user for (0 for indefinite time):\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per day\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote follow\"])},\n \"remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove follower\"])},\n \"remove_follower_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove follower confirmation\"])},\n \"remove_follower_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n \"remove_follower_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep\"])},\n \"remove_follower_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to remove \", _interpolate(_named(\"user\")), \" from your followers?\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Report\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statuses\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subscribe\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unsubscribe\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblock\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblocking…\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide repeats\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show repeats\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bot\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Born \", _interpolate(_named(\"birthday\"))])},\n \"admin_menu\": {\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderation\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Admin\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Admin\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Moderator\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Moderator\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivate account\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark all posts as NSFW\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove media from posts\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be unlisted\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be followers-only\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user from remote instances\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user at all\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow user posts from federating\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"delete_user_data_and_deactivate_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This will permanently delete the data from this account and deactivate it. Are you absolutely sure?\"])}\n },\n \"highlight\": {\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No highlight\"])},\n \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Solid bg\"])},\n \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Striped bg\"])},\n \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Side stripe\"])}\n },\n \"note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note\"])},\n \"note_blank\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(None)\"])},\n \"edit_note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit note\"])},\n \"edit_note_apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apply\"])},\n \"edit_note_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User timeline\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, this profile does not exist.\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, there was an error loading this profile.\"])}\n },\n \"user_reporting\": {\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Reporting \", _interpolate(_list(0))])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Additional comments\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The account is from another server. Send a copy of the report there as well?\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Forward to \", _interpolate(_list(0))])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occurred while processing your request.\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload media\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorite\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add Reaction\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept follow request\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject follow request\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n \"toggle_expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand or collapse notification to show post in full\"])},\n \"toggle_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand or collapse notification to reveal muted content\"])},\n \"autocomplete_available\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"number\")), \" result is available. Use up and down keys to navigate through them.\"]), _normalize([_interpolate(_named(\"number\")), \" results are available. Use up and down keys to navigate through them.\"])])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload failed.\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Upload failed: \", _interpolate(_list(0))])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"File too big [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again later\"])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"People\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hashtags\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" person talking\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" people talking\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No results\"])},\n \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more results\"])},\n \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more results\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your email address or username. We will send you a link to reset your password.\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your email or username\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email for a link to reset your password.\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Return to the home page\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You have reached the limit of attempts, try again later.\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset is disabled. Please contact your instance administrator.\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password to log in.\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password, but password reset is disabled. Please contact your instance administrator.\"])}\n },\n \"chats\": {\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You:\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Message \", _interpolate(_named(\"nickname\"))])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New Chat\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cannot post empty message\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this message?\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when loading the chat.\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when sending the message.\"])},\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You don't have any chats yet. Start a new chat!\"])}\n },\n \"lists\": {\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lists\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New List\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"List title\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search users\"])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Create\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete list\"])},\n \"following_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limit to Following\"])},\n \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Manage lists\"])},\n \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Manage list members\"])},\n \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for more users\"])},\n \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove from list\"])},\n \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add to list\"])},\n \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already in list\"])},\n \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Editing list \", _interpolate(_named(\"listTitle\"))])},\n \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Creating new list\"])},\n \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save Title\"])},\n \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Really delete list?\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error manipulating lists: \", _interpolate(_list(0))])}\n },\n \"file_type\": {\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Audio\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Video\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Today\"])}\n },\n \"update\": {\n \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please bear with us\"])},\n \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We haven't had a release in a while, so things might look and feel different than what you're used to.\"])},\n \"update_bugs\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Please report any issues and bugs on \", _interpolate(_named(\"pleromaGitlab\")), \", as we have changed a lot, and although we test thoroughly and use development versions ourselves, we may have missed some things. We welcome your feedback and suggestions on issues you might encounter, or how to improve Pleroma and Pleroma-FE.\"])},\n \"update_bugs_gitlab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma GitLab\"])},\n \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"For more details on what's changed, see \", _interpolate(_named(\"theFullChangelog\")), \".\"])},\n \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"the full changelog\"])},\n \"art_by\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Art by \", _interpolate(_named(\"linkToArtist\"))])}\n },\n \"unicode_domain_indicator\": {\n \"tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This domain contains non-ascii characters.\"])}\n }\n}","var map = {\n\t\"./af.json\": [\n\t\t44919,\n\t\t6355\n\t],\n\t\"./am.json\": [\n\t\t53139,\n\t\t5119\n\t],\n\t\"./ar.json\": [\n\t\t44557,\n\t\t9873\n\t],\n\t\"./ar_SA.json\": [\n\t\t23450,\n\t\t7360\n\t],\n\t\"./as.json\": [\n\t\t44359,\n\t\t3377\n\t],\n\t\"./ast.json\": [\n\t\t13764,\n\t\t7569\n\t],\n\t\"./az.json\": [\n\t\t86459,\n\t\t2342\n\t],\n\t\"./be.json\": [\n\t\t50866,\n\t\t7304\n\t],\n\t\"./bg.json\": [\n\t\t26219,\n\t\t3974\n\t],\n\t\"./bn.json\": [\n\t\t69178,\n\t\t9064\n\t],\n\t\"./br.json\": [\n\t\t67871,\n\t\t6148\n\t],\n\t\"./bs.json\": [\n\t\t75340,\n\t\t8134\n\t],\n\t\"./ca.json\": [\n\t\t86914,\n\t\t4691\n\t],\n\t\"./ccp.json\": [\n\t\t73872,\n\t\t1162\n\t],\n\t\"./ceb.json\": [\n\t\t64478,\n\t\t9790\n\t],\n\t\"./chr.json\": [\n\t\t61017,\n\t\t6869\n\t],\n\t\"./ckb.json\": [\n\t\t56412,\n\t\t2656\n\t],\n\t\"./cs.json\": [\n\t\t8888,\n\t\t4710\n\t],\n\t\"./cy.json\": [\n\t\t25392,\n\t\t6272\n\t],\n\t\"./da.json\": [\n\t\t35042,\n\t\t1596\n\t],\n\t\"./de.json\": [\n\t\t35169,\n\t\t6226\n\t],\n\t\"./de_CH.json\": [\n\t\t28246,\n\t\t7164\n\t],\n\t\"./doi.json\": [\n\t\t59784,\n\t\t4209\n\t],\n\t\"./dsb.json\": [\n\t\t60634,\n\t\t1790\n\t],\n\t\"./el.json\": [\n\t\t98338,\n\t\t7879\n\t],\n\t\"./en.json\": [\n\t\t74990,\n\t\t5728\n\t],\n\t\"./en_001.json\": [\n\t\t62736,\n\t\t577\n\t],\n\t\"./en_AU.json\": [\n\t\t2597,\n\t\t9360\n\t],\n\t\"./en_CA.json\": [\n\t\t1516,\n\t\t4879\n\t],\n\t\"./en_GB.json\": [\n\t\t84830,\n\t\t50\n\t],\n\t\"./en_IN.json\": [\n\t\t71809,\n\t\t8988\n\t],\n\t\"./es.json\": [\n\t\t61148,\n\t\t6831\n\t],\n\t\"./es_419.json\": [\n\t\t25696,\n\t\t8873\n\t],\n\t\"./es_MX.json\": [\n\t\t11915,\n\t\t2699\n\t],\n\t\"./es_US.json\": [\n\t\t87826,\n\t\t3313\n\t],\n\t\"./et.json\": [\n\t\t66641,\n\t\t3276\n\t],\n\t\"./eu.json\": [\n\t\t6541,\n\t\t2992\n\t],\n\t\"./fa.json\": [\n\t\t43305,\n\t\t5521\n\t],\n\t\"./fi.json\": [\n\t\t40752,\n\t\t420\n\t],\n\t\"./fil.json\": [\n\t\t26843,\n\t\t1236\n\t],\n\t\"./fo.json\": [\n\t\t43032,\n\t\t8995\n\t],\n\t\"./fr.json\": [\n\t\t80898,\n\t\t2223\n\t],\n\t\"./fr_CA.json\": [\n\t\t54515,\n\t\t1821\n\t],\n\t\"./ga.json\": [\n\t\t66572,\n\t\t4571\n\t],\n\t\"./gd.json\": [\n\t\t9185,\n\t\t6116\n\t],\n\t\"./gl.json\": [\n\t\t23840,\n\t\t6126\n\t],\n\t\"./gu.json\": [\n\t\t85811,\n\t\t7261\n\t],\n\t\"./ha.json\": [\n\t\t91566,\n\t\t227\n\t],\n\t\"./ha_NE.json\": [\n\t\t3400,\n\t\t5304\n\t],\n\t\"./he.json\": [\n\t\t26260,\n\t\t5548\n\t],\n\t\"./hi.json\": [\n\t\t18136,\n\t\t5968\n\t],\n\t\"./hi_Latn.json\": [\n\t\t95638,\n\t\t3056\n\t],\n\t\"./hr.json\": [\n\t\t77435,\n\t\t2861\n\t],\n\t\"./hsb.json\": [\n\t\t15758,\n\t\t8015\n\t],\n\t\"./hu.json\": [\n\t\t2727,\n\t\t4902\n\t],\n\t\"./hy.json\": [\n\t\t8397,\n\t\t6344\n\t],\n\t\"./ia.json\": [\n\t\t49796,\n\t\t6936\n\t],\n\t\"./id.json\": [\n\t\t56635,\n\t\t9465\n\t],\n\t\"./ig.json\": [\n\t\t26406,\n\t\t9895\n\t],\n\t\"./is.json\": [\n\t\t51391,\n\t\t7300\n\t],\n\t\"./it.json\": [\n\t\t54879,\n\t\t8970\n\t],\n\t\"./ja.json\": [\n\t\t2971,\n\t\t1290\n\t],\n\t\"./jv.json\": [\n\t\t18644,\n\t\t2479\n\t],\n\t\"./ka.json\": [\n\t\t71255,\n\t\t6068\n\t],\n\t\"./kab.json\": [\n\t\t92892,\n\t\t9780\n\t],\n\t\"./kk.json\": [\n\t\t46419,\n\t\t2873\n\t],\n\t\"./kl.json\": [\n\t\t2227,\n\t\t2397\n\t],\n\t\"./km.json\": [\n\t\t65729,\n\t\t1404\n\t],\n\t\"./kn.json\": [\n\t\t65611,\n\t\t278\n\t],\n\t\"./ko.json\": [\n\t\t67080,\n\t\t2966\n\t],\n\t\"./kok.json\": [\n\t\t47209,\n\t\t2599\n\t],\n\t\"./ku.json\": [\n\t\t18738,\n\t\t2883\n\t],\n\t\"./ky.json\": [\n\t\t89690,\n\t\t4785\n\t],\n\t\"./lb.json\": [\n\t\t3929,\n\t\t4770\n\t],\n\t\"./lo.json\": [\n\t\t19778,\n\t\t7464\n\t],\n\t\"./lt.json\": [\n\t\t41683,\n\t\t7169\n\t],\n\t\"./lv.json\": [\n\t\t54873,\n\t\t8898\n\t],\n\t\"./mai.json\": [\n\t\t11781,\n\t\t1613\n\t],\n\t\"./mi.json\": [\n\t\t11569,\n\t\t6701\n\t],\n\t\"./mk.json\": [\n\t\t67589,\n\t\t9921\n\t],\n\t\"./ml.json\": [\n\t\t24415,\n\t\t2685\n\t],\n\t\"./mn.json\": [\n\t\t50512,\n\t\t4718\n\t],\n\t\"./mni.json\": [\n\t\t81597,\n\t\t5401\n\t],\n\t\"./mr.json\": [\n\t\t97747,\n\t\t1911\n\t],\n\t\"./ms.json\": [\n\t\t81588,\n\t\t9924\n\t],\n\t\"./mt.json\": [\n\t\t25081,\n\t\t9399\n\t],\n\t\"./my.json\": [\n\t\t8608,\n\t\t6790\n\t],\n\t\"./ne.json\": [\n\t\t8572,\n\t\t9377\n\t],\n\t\"./nl.json\": [\n\t\t52355,\n\t\t6773\n\t],\n\t\"./nn.json\": [\n\t\t52874,\n\t\t9414\n\t],\n\t\"./no.json\": [\n\t\t48005,\n\t\t9979\n\t],\n\t\"./or.json\": [\n\t\t26728,\n\t\t1012\n\t],\n\t\"./pa.json\": [\n\t\t15042,\n\t\t6946\n\t],\n\t\"./pa_Arab.json\": [\n\t\t43578,\n\t\t9994\n\t],\n\t\"./pcm.json\": [\n\t\t91163,\n\t\t5104\n\t],\n\t\"./pl.json\": [\n\t\t61335,\n\t\t1095\n\t],\n\t\"./ps.json\": [\n\t\t51828,\n\t\t678\n\t],\n\t\"./pt.json\": [\n\t\t38543,\n\t\t5041\n\t],\n\t\"./pt_PT.json\": [\n\t\t8063,\n\t\t1546\n\t],\n\t\"./qu.json\": [\n\t\t15821,\n\t\t8031\n\t],\n\t\"./rm.json\": [\n\t\t5014,\n\t\t5887\n\t],\n\t\"./ro.json\": [\n\t\t34064,\n\t\t9864\n\t],\n\t\"./ru.json\": [\n\t\t95222,\n\t\t8395\n\t],\n\t\"./rw.json\": [\n\t\t12710,\n\t\t346\n\t],\n\t\"./sa.json\": [\n\t\t69343,\n\t\t2243\n\t],\n\t\"./sat.json\": [\n\t\t51243,\n\t\t7855\n\t],\n\t\"./sc.json\": [\n\t\t1319,\n\t\t2874\n\t],\n\t\"./sd.json\": [\n\t\t67728,\n\t\t6826\n\t],\n\t\"./si.json\": [\n\t\t5044,\n\t\t4354\n\t],\n\t\"./sk.json\": [\n\t\t45626,\n\t\t2350\n\t],\n\t\"./sl.json\": [\n\t\t76091,\n\t\t1553\n\t],\n\t\"./so.json\": [\n\t\t93761,\n\t\t625\n\t],\n\t\"./sq.json\": [\n\t\t1230,\n\t\t4368\n\t],\n\t\"./sr.json\": [\n\t\t60445,\n\t\t3887\n\t],\n\t\"./sr_Cyrl_BA.json\": [\n\t\t38940,\n\t\t6060\n\t],\n\t\"./sr_Latn.json\": [\n\t\t21650,\n\t\t8681\n\t],\n\t\"./sr_Latn_BA.json\": [\n\t\t78328,\n\t\t5115\n\t],\n\t\"./su.json\": [\n\t\t54395,\n\t\t1959\n\t],\n\t\"./sv.json\": [\n\t\t3418,\n\t\t3241\n\t],\n\t\"./sw.json\": [\n\t\t11958,\n\t\t7585\n\t],\n\t\"./sw_KE.json\": [\n\t\t35001,\n\t\t3994\n\t],\n\t\"./ta.json\": [\n\t\t92930,\n\t\t7897\n\t],\n\t\"./te.json\": [\n\t\t8748,\n\t\t4786\n\t],\n\t\"./tg.json\": [\n\t\t20999,\n\t\t313\n\t],\n\t\"./th.json\": [\n\t\t23900,\n\t\t3951\n\t],\n\t\"./ti.json\": [\n\t\t368,\n\t\t3568\n\t],\n\t\"./tk.json\": [\n\t\t88770,\n\t\t1780\n\t],\n\t\"./to.json\": [\n\t\t95781,\n\t\t1584\n\t],\n\t\"./tr.json\": [\n\t\t92619,\n\t\t9978\n\t],\n\t\"./tt.json\": [\n\t\t87782,\n\t\t2569\n\t],\n\t\"./ug.json\": [\n\t\t19005,\n\t\t9757\n\t],\n\t\"./uk.json\": [\n\t\t82057,\n\t\t9871\n\t],\n\t\"./ur.json\": [\n\t\t13889,\n\t\t6797\n\t],\n\t\"./uz.json\": [\n\t\t45108,\n\t\t1056\n\t],\n\t\"./vi.json\": [\n\t\t97099,\n\t\t5224\n\t],\n\t\"./wo.json\": [\n\t\t9923,\n\t\t7303\n\t],\n\t\"./xh.json\": [\n\t\t29064,\n\t\t786\n\t],\n\t\"./yo.json\": [\n\t\t11971,\n\t\t8732\n\t],\n\t\"./yo_BJ.json\": [\n\t\t64533,\n\t\t9926\n\t],\n\t\"./yue.json\": [\n\t\t40648,\n\t\t1452\n\t],\n\t\"./yue_Hans.json\": [\n\t\t24800,\n\t\t4424\n\t],\n\t\"./zh.json\": [\n\t\t34626,\n\t\t457\n\t],\n\t\"./zh_Hant.json\": [\n\t\t82560,\n\t\t2767\n\t],\n\t\"./zh_Hant_HK.json\": [\n\t\t47677,\n\t\t1044\n\t],\n\t\"./zu.json\": [\n\t\t73784,\n\t\t9319\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 1395;\nmodule.exports = webpackAsyncContext;","/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n * (getters.standardEmojiList + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nexport default data => {\n const emojiCurry = suggestEmoji(data.emoji)\n const usersCurry = data.store && suggestUsers(data.store)\n return (input, nameKeywordLocalizer) => {\n const firstChar = input[0]\n if (firstChar === ':' && data.emoji) {\n return emojiCurry(input, nameKeywordLocalizer)\n }\n if (firstChar === '@' && usersCurry) {\n return usersCurry(input)\n }\n return []\n }\n}\n\nexport const suggestEmoji = emojis => (input, nameKeywordLocalizer) => {\n const noPrefix = input.toLowerCase().substr(1)\n return emojis\n .map(emoji => ({ ...emoji, ...nameKeywordLocalizer(emoji) }))\n .filter((emoji) => (emoji.names.concat(emoji.keywords)).filter(kw => kw.toLowerCase().match(noPrefix)).length)\n .map(k => {\n let score = 0\n\n // An exact match always wins\n score += Math.max(...k.names.map(name => name.toLowerCase() === noPrefix ? 200 : 0), 0)\n\n // Prioritize custom emoji a lot\n score += k.imageUrl ? 100 : 0\n\n // Prioritize prefix matches somewhat\n score += Math.max(...k.names.map(kw => kw.toLowerCase().startsWith(noPrefix) ? 10 : 0), 0)\n\n // Sort by length\n score -= k.displayText.length\n\n k.score = score\n return k\n })\n .sort((a, b) => {\n // Break ties alphabetically\n const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n return b.score - a.score + alphabetically\n })\n}\n\nexport const suggestUsers = ({ dispatch, state }) => {\n // Keep some persistent values in closure, most importantly for the\n // custom debounce to work. Lodash debounce does not return a promise.\n let suggestions = []\n let previousQuery = ''\n let timeout = null\n let cancelUserSearch = null\n\n const userSearch = (query) => dispatch('searchUsers', { query })\n const debounceUserSearch = (query) => {\n cancelUserSearch && cancelUserSearch()\n return new Promise((resolve, reject) => {\n timeout = setTimeout(() => {\n userSearch(query).then(resolve).catch(reject)\n }, 300)\n cancelUserSearch = () => {\n clearTimeout(timeout)\n resolve([])\n }\n })\n }\n\n return async input => {\n const noPrefix = input.toLowerCase().substr(1)\n if (previousQuery === noPrefix) return suggestions\n\n suggestions = []\n previousQuery = noPrefix\n // Fetch more and wait, don't fetch if there's the 2nd @ because\n // the backend user search can't deal with it.\n // Reference semantics make it so that we get the updated data after\n // the await.\n if (!noPrefix.includes('@')) {\n await debounceUserSearch(noPrefix)\n }\n\n const newSuggestions = state.users.users.filter(\n user =>\n user.screen_name && user.name && (\n user.screen_name.toLowerCase().startsWith(noPrefix) ||\n user.name.toLowerCase().startsWith(noPrefix))\n ).slice(0, 20).sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // Matches on screen name (i.e. user@instance) makes a priority\n aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n // Matches on name takes second priority\n aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n const diff = (bScore - aScore) * 10\n\n // Then sort alphabetically\n const nameAlphabetically = a.name > b.name ? 1 : -1\n const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n return diff + nameAlphabetically + screenNameAlphabetically\n /* eslint-disable camelcase */\n }).map((user) => ({\n user,\n displayText: user.screen_name_ui,\n detailText: user.name,\n imageUrl: user.profile_image_url_original,\n replacement: '@' + user.screen_name + ' '\n }))\n /* eslint-enable camelcase */\n\n suggestions = newSuggestions || []\n return suggestions\n }\n}\n","/**\n * Extract tag name from tag opener/closer.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {String} - tagname, i.e. \"div\"\n */\nexport const getTagName = (tag) => {\n const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?.*?\\/?>)/gis.exec(tag)\n return result && (result[1] || result[2])\n}\n\n/**\n * Extract attributes from tag opener.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {Object} - map of attributes key = attribute name, value = attribute value\n * attributes without values represented as boolean true\n */\nexport const getAttrs = (tag, filter) => {\n const innertag = tag\n .substring(1, tag.length - 1)\n .replace(new RegExp('^' + getTagName(tag)), '')\n .replace(/\\/?$/, '')\n .trim()\n const attrs = Array.from(innertag.matchAll(/([a-z]+[a-z0-9-]*)(?:=(\"[^\"]+?\"|'[^']+?'))?/gi))\n .map(([trash, key, value]) => [key, value])\n .map(([k, v]) => {\n if (!v) return [k, true]\n return [k, v.substring(1, v.length - 1)]\n })\n const defaultFilter = ([k, v]) => {\n const attrKey = k.toLowerCase()\n if (attrKey === 'style') return false\n if (attrKey === 'class') {\n return v === 'greentext' || v === 'cyantext'\n }\n return true\n }\n return Object.fromEntries(attrs.filter(filter || defaultFilter))\n}\n\n/**\n * Finds shortcodes in text\n *\n * @param {String} text - original text to find emojis in\n * @param {{ url: String, shortcode: Sring }[]} emoji - list of shortcodes to find\n * @param {Function} processor - function to call on each encountered emoji,\n * function is passed single object containing matching emoji ({ url, shortcode })\n * return value will be inserted into resulting array instead of :shortcode:\n * @return {Array} resulting array with non-emoji parts of text and whatever {processor}\n * returned for emoji\n */\nexport const processTextForEmoji = (text, emojis, processor) => {\n const buffer = []\n let textBuffer = ''\n for (let i = 0; i < text.length; i++) {\n const char = text[i]\n if (char === ':') {\n const next = text.slice(i + 1)\n let found = false\n for (const emoji of emojis) {\n if (next.slice(0, emoji.shortcode.length + 1) === (emoji.shortcode + ':')) {\n found = emoji\n break\n }\n }\n if (found) {\n buffer.push(textBuffer)\n textBuffer = ''\n buffer.push(processor(found))\n i += found.shortcode.length + 1\n } else {\n textBuffer += char\n }\n } else {\n textBuffer += char\n }\n }\n if (textBuffer) buffer.push(textBuffer)\n return buffer\n}\n","import { getTagName } from './utility.service.js'\n\n/**\n * This is a tiny purpose-built HTML parser/processor. This basically detects\n * any type of visual newline and converts entire HTML into a array structure.\n *\n * Text nodes are represented as object with single property - text - containing\n * the visual line. Intended usage is to process the array with .map() in which\n * map function returns a string and resulting array can be converted back to html\n * with a .join('').\n *\n * Generally this isn't very useful except for when you really need to either\n * modify visual lines (greentext i.e. simple quoting) or do something with\n * first/last line.\n *\n * known issue: doesn't handle CDATA so nested CDATA might not work well\n *\n * @param {Object} input - input data\n * @return {(string|{ text: string })[]} processed html in form of a list.\n */\nexport const convertHtmlToLines = (html = '') => {\n // Elements that are implicitly self-closing\n // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n const emptyElements = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n ])\n // Block-level element (they make a visual line)\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n const blockElements = new Set([\n 'address', 'article', 'aside', 'blockquote', 'details', 'dialog', 'dd',\n 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form',\n 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main',\n 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'\n ])\n // br is very weird in a way that it's technically not block-level, it's\n // essentially converted to a \\n (or \\r\\n). There's also wbr but it doesn't\n // guarantee linebreak, only suggest it.\n const linebreakElements = new Set(['br'])\n\n const visualLineElements = new Set([\n ...blockElements.values(),\n ...linebreakElements.values()\n ])\n\n // All block-level elements that aren't empty elements, i.e. not <hr>\n const nonEmptyElements = new Set(visualLineElements)\n // Difference\n for (const elem of emptyElements) {\n nonEmptyElements.delete(elem)\n }\n\n // All elements that we are recognizing\n const allElements = new Set([\n ...nonEmptyElements.values(),\n ...emptyElements.values()\n ])\n\n const buffer = [] // Current output buffer\n const level = [] // How deep we are in tags and which tags were there\n let textBuffer = '' // Current line content\n let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n const flush = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n if (textBuffer.trim().length > 0) {\n buffer.push({ level: [...level], text: textBuffer })\n } else {\n buffer.push(textBuffer)\n }\n textBuffer = ''\n }\n\n const handleBr = (tag) => { // handles single newlines/linebreaks/selfclosing\n flush()\n buffer.push(tag)\n }\n\n const handleOpen = (tag) => { // handles opening tags\n flush()\n buffer.push(tag)\n level.unshift(getTagName(tag))\n }\n\n const handleClose = (tag) => { // handles closing tags\n if (level[0] === getTagName(tag)) {\n flush()\n buffer.push(tag)\n level.shift()\n } else { // Broken case\n textBuffer += tag\n }\n }\n\n for (let i = 0; i < html.length; i++) {\n const char = html[i]\n if (char === '<' && tagBuffer === null) {\n tagBuffer = char\n } else if (char !== '>' && tagBuffer !== null) {\n tagBuffer += char\n } else if (char === '>' && tagBuffer !== null) {\n tagBuffer += char\n const tagFull = tagBuffer\n tagBuffer = null\n const tagName = getTagName(tagFull)\n if (allElements.has(tagName)) {\n if (linebreakElements.has(tagName)) {\n handleBr(tagFull)\n } else if (nonEmptyElements.has(tagName)) {\n if (tagFull[1] === '/') {\n handleClose(tagFull)\n } else if (tagFull[tagFull.length - 2] === '/') {\n // self-closing\n handleBr(tagFull)\n } else {\n handleOpen(tagFull)\n }\n } else {\n textBuffer += tagFull\n }\n } else {\n textBuffer += tagFull\n }\n } else if (char === '\\n') {\n handleBr(char)\n } else {\n textBuffer += char\n }\n }\n if (tagBuffer) {\n textBuffer += tagBuffer\n }\n\n flush()\n\n return buffer\n}\n","<template>\n <span\n class=\"HashtagLink\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <a\n :href=\"url\"\n class=\"original\"\n target=\"_blank\"\n @click.prevent=\"onClick\"\n v-html=\"content\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </span>\n</template>\n\n<script src=\"./hashtag_link.js\" />\n\n<style lang=\"scss\" src=\"./hashtag_link.scss\" />\n","import { extractTagFromUrl } from 'src/services/matcher/matcher.service.js'\n\nconst HashtagLink = {\n name: 'HashtagLink',\n props: {\n url: {\n required: true,\n type: String\n },\n content: {\n required: true,\n type: String\n },\n tag: {\n required: false,\n type: String,\n default: ''\n }\n },\n methods: {\n onClick () {\n const tag = this.tag || extractTagFromUrl(this.url)\n if (tag) {\n const link = this.generateTagLink(tag)\n this.$router.push(link)\n } else {\n window.open(this.url, '_blank')\n }\n },\n generateTagLink (tag) {\n return `/tag/${tag}`\n }\n }\n}\n\nexport default HashtagLink\n","export const mentionMatchesUrl = (attention, url) => {\n if (url === attention.statusnet_profile_url) {\n return true\n }\n const [namepart, instancepart] = attention.screen_name.split('@')\n const matchstring = new RegExp('://' + instancepart + '/.*' + namepart + '$', 'g')\n\n return !!url.match(matchstring)\n}\n\n/**\n * Extract tag name from pleroma or mastodon url.\n * i.e https://bikeshed.party/tag/photo or https://quey.org/tags/sky\n * @param {string} url\n */\nexport const extractTagFromUrl = (url) => {\n const decoded = decodeURI(url)\n // https://git.pleroma.social/pleroma/elixir-libraries/linkify/-/blob/master/lib/linkify/parser.ex\n // https://www.pcre.org/original/doc/html/pcrepattern.html\n const regex = /tag[s]*\\/([\\p{L}\\p{N}_]*[\\p{Alphabetic}_·\\u{200c}][\\p{L}\\p{N}_·\\p{M}\\u{200c}]*)$/ug\n const result = regex.exec(decoded)\n if (!result) {\n return false\n }\n return result[1]\n}\n","import { render } from \"./hashtag_link.vue?vue&type=template&id=76a14451\"\nimport script from \"./hashtag_link.js?vue&type=script&lang=js\"\nexport * from \"./hashtag_link.js?vue&type=script&lang=js\"\n\nimport \"./hashtag_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unescape, flattenDeep } from 'lodash'\nimport { getTagName, processTextForEmoji, getAttrs } from 'src/services/html_converter/utility.service.js'\nimport { convertHtmlToTree } from 'src/services/html_converter/html_tree_converter.service.js'\nimport { convertHtmlToLines } from 'src/services/html_converter/html_line_converter.service.js'\nimport StillImage from 'src/components/still-image/still-image.vue'\nimport MentionsLine, { MENTIONS_LIMIT } from 'src/components/mentions_line/mentions_line.vue'\nimport HashtagLink from 'src/components/hashtag_link/hashtag_link.vue'\n\nimport './rich_content.scss'\n\nconst MAYBE_LINE_BREAKING_ELEMENTS = [\n 'blockquote',\n 'br',\n 'hr',\n 'ul',\n 'ol',\n 'li',\n 'p',\n 'table',\n 'tbody',\n 'td',\n 'th',\n 'thead',\n 'tr',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5'\n]\n\n/**\n * RichContent, The Über-powered component for rendering Post HTML.\n *\n * This takes post HTML and does multiple things to it:\n * - Groups all mentions into <MentionsLine>, this affects all mentions regardles\n * of where they are (beginning/middle/end), even single mentions are converted\n * to a <MentionsLine> containing single <MentionLink>.\n * - Replaces emoji shortcodes with <StillImage>'d images.\n *\n * There are two problems with this component's architecture:\n * 1. Parsing HTML and rendering are inseparable. Attempts to separate the two\n * proven to be a massive overcomplication due to amount of things done here.\n * 2. We need to output both render and some extra data, which seems to be imp-\n * possible in vue. Current solution is to emit 'parseReady' event when parsing\n * is done within render() function.\n *\n * Apart from that one small hiccup with emit in render this _should_ be vue3-ready\n */\nexport default {\n name: 'RichContent',\n components: {\n MentionsLine,\n HashtagLink\n },\n props: {\n // Original html content\n html: {\n required: true,\n type: String\n },\n attentions: {\n required: false,\n default: () => []\n },\n // Emoji object, as in status.emojis, note the \"s\" at the end...\n emoji: {\n required: true,\n type: Array\n },\n // Whether to handle links or not (posts: yes, everything else: no)\n handleLinks: {\n required: false,\n type: Boolean,\n default: false\n },\n // Meme arrows\n greentext: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n // NEVER EVER TOUCH DATA INSIDE RENDER\n render () {\n // Pre-process HTML\n const { newHtml: html } = preProcessPerLine(this.html, this.greentext)\n let currentMentions = null // Current chain of mentions, we group all mentions together\n // This is used to recover spacing removed when parsing mentions\n let lastSpacing = ''\n\n const lastTags = [] // Tags that appear at the end of post body\n const writtenMentions = [] // All mentions that appear in post body\n const invisibleMentions = [] // All mentions that go beyond the limiter (see MentionsLine)\n // to collapse too many mentions in a row\n const writtenTags = [] // All tags that appear in post body\n // unique index for vue \"tag\" property\n let mentionIndex = 0\n let tagsIndex = 0\n\n const renderImage = (tag) => {\n return <StillImage\n {...getAttrs(tag)}\n class=\"img\"\n />\n }\n\n const renderHashtag = (attrs, children, encounteredTextReverse) => {\n const { index, ...linkData } = getLinkData(attrs, children, tagsIndex++)\n writtenTags.push(linkData)\n if (!encounteredTextReverse) {\n lastTags.push(linkData)\n }\n const { url, tag, content } = linkData\n return <HashtagLink url={url} tag={tag} content={content}/>\n }\n\n const renderMention = (attrs, children) => {\n const linkData = getLinkData(attrs, children, mentionIndex++)\n linkData.notifying = this.attentions.some(a => a.statusnet_profile_url === linkData.url)\n writtenMentions.push(linkData)\n if (currentMentions === null) {\n currentMentions = []\n }\n currentMentions.push(linkData)\n if (currentMentions.length > MENTIONS_LIMIT) {\n invisibleMentions.push(linkData)\n }\n if (currentMentions.length === 1) {\n return <MentionsLine mentions={ currentMentions } />\n } else {\n return ''\n }\n }\n\n // Processor to use with html_tree_converter\n const processItem = (item, index, array, what) => {\n // Handle text nodes - just add emoji\n if (typeof item === 'string') {\n const emptyText = item.trim() === ''\n if (item.includes('\\n')) {\n currentMentions = null\n }\n if (emptyText) {\n // don't include spaces when processing mentions - we'll include them\n // in MentionsLine\n lastSpacing = item\n // Don't remove last space in a container (fixes poast mentions)\n return (index !== array.length - 1) && (currentMentions !== null) ? item.trim() : item\n }\n\n currentMentions = null\n if (item.includes(':')) {\n item = ['', processTextForEmoji(\n item,\n this.emoji,\n ({ shortcode, url }) => {\n return <StillImage\n class=\"emoji img\"\n src={url}\n title={`:${shortcode}:`}\n alt={`:${shortcode}:`}\n />\n }\n )]\n }\n return item\n }\n\n // Handle tag nodes\n if (Array.isArray(item)) {\n const [opener, children, closer] = item\n let Tag = getTagName(opener)\n if (Tag.toLowerCase() === 'script') Tag = 'js-exploit'\n if (Tag.toLowerCase() === 'style') Tag = 'css-exploit'\n const fullAttrs = getAttrs(opener, () => true)\n const attrs = getAttrs(opener)\n const previouslyMentions = currentMentions !== null\n /* During grouping of mentions we trim all the empty text elements\n * This padding is added to recover last space removed in case\n * we have a tag right next to mentions\n */\n const mentionsLinePadding =\n // Padding is only needed if we just finished parsing mentions\n previouslyMentions &&\n // Don't add padding if content is string and has padding already\n !(children && typeof children[0] === 'string' && children[0].match(/^\\s/))\n ? lastSpacing\n : ''\n if (MAYBE_LINE_BREAKING_ELEMENTS.includes(Tag)) {\n // all the elements that can cause a line change\n currentMentions = null\n } else if (Tag === 'img') { // replace images with StillImage\n return ['', [mentionsLinePadding, renderImage(opener)], '']\n } else if (Tag === 'a' && this.handleLinks) { // replace mentions with MentionLink\n if (fullAttrs.class && fullAttrs.class.includes('mention')) {\n // Handling mentions here\n return renderMention(attrs, children)\n } else {\n currentMentions = null\n }\n } else if (Tag === 'span') {\n if (this.handleLinks && fullAttrs.class && fullAttrs.class.includes('h-card')) {\n return ['', children.map(processItem), '']\n }\n }\n\n if (children !== undefined) {\n return [\n '',\n [\n mentionsLinePadding,\n [opener, children.map(processItem), closer]\n ],\n ''\n ]\n } else {\n return ['', [mentionsLinePadding, item], '']\n }\n }\n }\n\n // Processor for back direction (for finding \"last\" stuff, just easier this way)\n let encounteredTextReverse = false\n const processItemReverse = (item, index, array, what) => {\n // Handle text nodes - just add emoji\n if (typeof item === 'string') {\n const emptyText = item.trim() === ''\n if (emptyText) return item\n if (!encounteredTextReverse) encounteredTextReverse = true\n return unescape(item)\n } else if (Array.isArray(item)) {\n // Handle tag nodes\n const [opener, children] = item\n const Tag = opener === '' ? '' : getTagName(opener)\n switch (Tag) {\n case 'a': { // replace mentions with MentionLink\n if (!this.handleLinks) break\n const fullAttrs = getAttrs(opener, () => true)\n const attrs = getAttrs(opener, () => true)\n // should only be this\n if (\n (fullAttrs.class && fullAttrs.class.includes('hashtag')) || // Pleroma style\n (fullAttrs.rel === 'tag') // Mastodon style\n ) {\n return renderHashtag(attrs, children, encounteredTextReverse)\n } else {\n attrs.target = '_blank'\n const newChildren = [...children].reverse().map(processItemReverse).reverse()\n\n return <a {...attrs}>\n { newChildren }\n </a>\n }\n }\n case '':\n return [...children].reverse().map(processItemReverse).reverse()\n }\n\n // Render tag as is\n if (children !== undefined) {\n const newChildren = Array.isArray(children)\n ? [...children].reverse().map(processItemReverse).reverse()\n : children\n return <Tag {...getAttrs(opener)}>\n { newChildren }\n </Tag>\n } else {\n return <Tag/>\n }\n }\n return item\n }\n\n const pass1 = convertHtmlToTree(html).map(processItem)\n const pass2 = [...pass1].reverse().map(processItemReverse).reverse()\n // DO NOT USE SLOTS they cause a re-render feedback loop here.\n // slots updated -> rerender -> emit -> update up the tree -> rerender -> ...\n // at least until vue3?\n const result = <span class=\"RichContent\">\n { pass2 }\n </span>\n\n const event = {\n lastTags,\n writtenMentions,\n writtenTags,\n invisibleMentions\n }\n\n // DO NOT MOVE TO UPDATE. BAD IDEA.\n this.$emit('parseReady', event)\n\n return result\n }\n}\n\nconst getLinkData = (attrs, children, index) => {\n const stripTags = (item) => {\n if (typeof item === 'string') {\n return item\n } else {\n return item[1].map(stripTags).join('')\n }\n }\n const textContent = children.map(stripTags).join('')\n return {\n index,\n url: attrs.href,\n tag: attrs['data-tag'],\n content: flattenDeep(children).join(''),\n textContent\n }\n}\n\n/** Pre-processing HTML\n *\n * Currently this does one thing:\n * - add green/cyantexting\n *\n * @param {String} html - raw HTML to process\n * @param {Boolean} greentext - whether to enable greentexting or not\n */\nexport const preProcessPerLine = (html, greentext) => {\n const greentextHandle = new Set(['p', 'div'])\n\n const lines = convertHtmlToLines(html)\n const newHtml = lines.reverse().map((item, index, array) => {\n if (!item.text) return item\n const string = item.text\n\n // Greentext stuff\n if (\n // Only if greentext is engaged\n greentext &&\n // Only handle p's and divs. Don't want to affect blockquotes, code etc\n item.level.every(l => greentextHandle.has(l)) &&\n // Only if line begins with '>' or '<'\n (string.includes('&gt;') || string.includes('&lt;'))\n ) {\n const cleanedString = string.replace(/<[^>]+?>/gi, '') // remove all tags\n .replace(/@\\w+/gi, '') // remove mentions (even failed ones)\n .trim()\n if (cleanedString.startsWith('&gt;')) {\n return `<span class='greentext'>${string}</span>`\n } else if (cleanedString.startsWith('&lt;')) {\n return `<span class='cyantext'>${string}</span>`\n }\n }\n\n return string\n }).reverse().join('')\n\n return { newHtml }\n}\n","import { getTagName } from './utility.service.js'\nimport { unescape } from 'lodash'\n\n/**\n * This is a not-so-tiny purpose-built HTML parser/processor. This parses html\n * and converts it into a tree structure representing tag openers/closers and\n * children.\n *\n * Structure follows this pattern: [opener, [...children], closer] except root\n * node which is just [...children]. Text nodes can only be within children and\n * are represented as strings.\n *\n * Intended use is to convert HTML structure and then recursively iterate over it\n * most likely using a map. Very useful for dynamically rendering html replacing\n * tags with JSX elements in a render function.\n *\n * known issue: doesn't handle CDATA so CDATA might not work well\n * known issue: doesn't handle HTML comments\n *\n * @param {Object} input - input data\n * @return {string} processed html\n */\nexport const convertHtmlToTree = (html = '') => {\n // Elements that are implicitly self-closing\n // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n const emptyElements = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n ])\n // TODO For future - also parse HTML5 multi-source components?\n\n const buffer = [] // Current output buffer\n const levels = [['', buffer]] // How deep we are in tags and which tags were there\n let textBuffer = '' // Current line content\n let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n const getCurrentBuffer = () => {\n return levels[levels.length - 1][1]\n }\n\n const flushText = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n if (textBuffer === '') return\n getCurrentBuffer().push(textBuffer)\n textBuffer = ''\n }\n\n const handleSelfClosing = (tag) => {\n getCurrentBuffer().push([tag])\n }\n\n const handleOpen = (tag) => {\n const curBuf = getCurrentBuffer()\n const newLevel = [unescape(tag), []]\n levels.push(newLevel)\n curBuf.push(newLevel)\n }\n\n const handleClose = (tag) => {\n const currentTag = levels[levels.length - 1]\n if (getTagName(levels[levels.length - 1][0]) === getTagName(tag)) {\n currentTag.push(tag)\n levels.pop()\n } else {\n getCurrentBuffer().push(tag)\n }\n }\n\n for (let i = 0; i < html.length; i++) {\n const char = html[i]\n if (char === '<' && tagBuffer === null) {\n flushText()\n tagBuffer = char\n } else if (char !== '>' && tagBuffer !== null) {\n tagBuffer += char\n } else if (char === '>' && tagBuffer !== null) {\n tagBuffer += char\n const tagFull = tagBuffer\n tagBuffer = null\n const tagName = getTagName(tagFull)\n if (tagFull[1] === '/') {\n handleClose(tagFull)\n } else if (emptyElements.has(tagName) || tagFull[tagFull.length - 2] === '/') {\n // self-closing\n handleSelfClosing(tagFull)\n } else {\n handleOpen(tagFull)\n }\n } else {\n textBuffer += char\n }\n }\n if (tagBuffer) {\n textBuffer += tagBuffer\n }\n\n flushText()\n return buffer\n}\n","// eslint-disable-next-line no-unused\nimport { h, Fragment } from 'vue'\nimport { mapState } from 'vuex'\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\n\nimport './tab_switcher.scss'\n\nconst findFirstUsable = (slots) => slots.findIndex(_ => _.props)\n\nexport default {\n name: 'TabSwitcher',\n props: {\n renderOnlyFocused: {\n required: false,\n type: Boolean,\n default: false\n },\n onSwitch: {\n required: false,\n type: Function,\n default: undefined\n },\n activeTab: {\n required: false,\n type: String,\n default: undefined\n },\n scrollableTabs: {\n required: false,\n type: Boolean,\n default: false\n },\n sideTabBar: {\n required: false,\n type: Boolean,\n default: false\n },\n bodyScrollLock: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n active: findFirstUsable(this.slots())\n }\n },\n computed: {\n activeIndex () {\n // In case of controlled component\n if (this.activeTab) {\n return this.slots().findIndex(slot => slot && slot.props && this.activeTab === slot.props.key)\n } else {\n return this.active\n }\n },\n isActive () {\n return tabName => {\n const isWanted = slot => slot.props && slot.props['data-tab-name'] === tabName\n return this.$slots.default().findIndex(isWanted) === this.activeIndex\n }\n }\n },\n beforeUpdate () {\n const currentSlot = this.slots()[this.active]\n if (!currentSlot.props) {\n this.active = findFirstUsable(this.slots())\n }\n },\n methods: {\n clickTab (index) {\n return (e) => {\n e.preventDefault()\n this.setTab(index)\n }\n },\n // DO NOT put it to computed, it doesn't work (caching?)\n slots () {\n if (this.$slots.default()[0].type === Fragment) {\n return this.$slots.default()[0].children\n }\n return this.$slots.default()\n },\n setTab (index) {\n if (typeof this.onSwitch === 'function') {\n this.onSwitch.call(null, this.slots()[index].key)\n }\n this.active = index\n if (this.scrollableTabs) {\n this.$refs.contents.scrollTop = 0\n }\n }\n },\n render () {\n const tabs = this.slots()\n .map((slot, index) => {\n const props = slot.props\n if (!props) return\n const classesTab = ['tab', 'button-default']\n const classesWrapper = ['tab-wrapper']\n if (this.activeIndex === index) {\n classesTab.push('active')\n classesWrapper.push('active')\n }\n if (props.image) {\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={props.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n role=\"tab\"\n >\n <img src={props.image} title={props['image-tooltip']}/>\n {props.label ? '' : props.label}\n </button>\n </div>\n )\n }\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={props.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n role=\"tab\"\n >\n {!props.icon ? '' : (<FAIcon class=\"tab-icon\" size=\"2x\" fixed-width icon={props.icon}/>)}\n <span class=\"text\">\n {props.label}\n </span>\n </button>\n </div>\n )\n })\n\n const contents = this.slots().map((slot, index) => {\n const props = slot.props\n if (!props) return\n const active = this.activeIndex === index\n const classes = [ active ? 'active' : 'hidden' ]\n if (props.fullHeight) {\n classes.push('full-height')\n }\n const renderSlot = (!this.renderOnlyFocused || active)\n ? slot\n : ''\n\n return (\n <div class={classes}>\n {\n this.sideTabBar\n ? <h1 class=\"mobile-label\">{props.label}</h1>\n : ''\n }\n {renderSlot}\n </div>\n )\n })\n\n return (\n <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n <div\n class=\"tabs\"\n role=\"tablist\"\n >\n {tabs}\n </div>\n <div\n ref=\"contents\"\n role=\"tabpanel\"\n class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}\n v-body-scroll-lock={this.bodyScrollLock}\n >\n {contents}\n </div>\n </div>\n )\n }\n}\n","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst withLoadMore = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n unmounted, // function called at \"destroyed\" lifecycle\n childPropName = 'entries', // name of the prop to be passed into the wrapped component\n additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n const originalProps = Object.keys(getComponentProps(WrappedComponent))\n const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n return {\n props,\n data () {\n return {\n loading: false,\n bottomedOut: false,\n error: false,\n entries: []\n }\n },\n created () {\n window.addEventListener('scroll', this.scrollLoad)\n if (this.entries.length === 0) {\n this.fetchEntries()\n }\n },\n unmounted () {\n window.removeEventListener('scroll', this.scrollLoad)\n unmounted && unmounted(this.$props, this.$store)\n },\n methods: {\n // Entries is not a computed because computed can't track the dynamic\n // selector for changes and won't trigger after fetch.\n updateEntries () {\n this.entries = select(this.$props, this.$store) || []\n },\n fetchEntries () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then((newEntries) => {\n this.loading = false\n this.bottomedOut = isEmpty(newEntries)\n })\n .catch(() => {\n this.loading = false\n this.error = true\n })\n .finally(() => {\n this.updateEntries()\n })\n }\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.loading === false &&\n this.bottomedOut === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)\n ) {\n this.fetchEntries()\n }\n }\n },\n render () {\n const props = {\n ...this.$props,\n [childPropName]: this.entries\n }\n const children = this.$slots\n return (\n <div class=\"with-load-more\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n <div class=\"with-load-more-footer\">\n {this.error &&\n <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n {this.$t('general.generic_error')}\n </button>\n }\n {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries} role=\"button\" tabindex=\"0\">{this.$t('general.more')}</a>}\n </div>\n </div>\n )\n }\n }\n}\n\nexport default withLoadMore\n","const languages = [\n 'ar',\n 'ca',\n 'cs',\n 'de',\n 'eo',\n 'en',\n 'es',\n 'et',\n 'eu',\n 'fi',\n 'fr',\n 'ga',\n 'he',\n 'hu',\n 'it',\n 'ja',\n 'ja_easy',\n 'ko',\n 'nan-TW',\n 'nb',\n 'nl',\n 'oc',\n 'pl',\n 'pt',\n 'ro',\n 'ru',\n 'sk',\n 'te',\n 'uk',\n 'zh',\n 'zh_Hant'\n]\n\nconst specialJsonName = {\n ja: 'ja_pedantic'\n}\n\nconst langCodeToJsonName = (code) => specialJsonName[code] || code\n\nconst langCodeToCldrName = (code) => code\n\nconst ensureFinalFallback = codes => {\n const codeList = Array.isArray(codes) ? codes : [codes]\n return codeList.includes('en') ? codeList : codeList.concat(['en'])\n}\n\nmodule.exports = {\n languages,\n langCodeToJsonName,\n langCodeToCldrName,\n ensureFinalFallback\n}\n","// When contributing, please sort JSON before committing so it would be easier to see what's missing and what's being added compared to English and other languages. It's not obligatory, but just an advice.\n// To sort json use jq https://stedolan.github.io/jq and invoke it like `jq -S . xx.json > xx.sorted.json`, AFAIK, there's no inplace edit option like in sed\n// Also, when adding a new language to \"messages\" variable, please do it alphabetically by language code so that users can search or check their custom language easily.\n\n// For anyone contributing to old huge messages.js and in need to quickly convert it to JSON\n// sed command for converting currently formatted JS to JSON:\n// sed -i -e \"s/'//gm\" -e 's/\"/\\\\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\\{?)$/\\1\"\\2\": \"\\4\"/gm' -e 's/\\\"\\{\\\"/{/g' -e 's/,\"$/\",/g' file.json\n// There's only problem that apostrophe character ' gets replaced by \\\\ so you have to fix it manually, sorry.\n\nimport { isEqual } from 'lodash'\nimport { languages, langCodeToJsonName } from './languages.js'\n\nconst ULTIMATE_FALLBACK_LOCALE = 'en'\n\nconst hasLanguageFile = (code) => languages.includes(code)\n\nconst loadLanguageFile = (code) => {\n return import(\n /* webpackInclude: /\\.json$/ */\n /* webpackChunkName: \"i18n/[request]\" */\n `./${langCodeToJsonName(code)}.json`\n )\n}\n\nconst messages = {\n languages,\n default: {\n en: require('./en.json').default\n },\n setLanguage: async (i18n, language) => {\n const languages = (Array.isArray(language) ? language : [language]).filter(k => k)\n\n if (!languages.includes(ULTIMATE_FALLBACK_LOCALE)) {\n languages.push(ULTIMATE_FALLBACK_LOCALE)\n }\n const [first, ...rest] = languages\n\n if (first === i18n.locale && isEqual(rest, i18n.fallbackLocale)) {\n return\n }\n\n for (const lang of languages) {\n if (hasLanguageFile(lang)) {\n const messages = await loadLanguageFile(lang)\n i18n.setLocaleMessage(lang, messages.default)\n }\n }\n\n i18n.fallbackLocale = rest\n i18n.locale = first\n }\n}\n\nexport default messages\n","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n /* eslint-disable no-new */\n new EventTarget()\n /* eslint-enable no-new */\n} catch (e) {\n window.EventTarget = EventTargetPolyfill\n}\n","const defaultState = {\n settingsModalState: 'hidden',\n settingsModalLoadedUser: false,\n settingsModalLoadedAdmin: false,\n settingsModalTargetTab: null,\n settingsModalMode: 'user',\n settings: {\n currentSaveStateNotice: null,\n noticeClearTimeout: null,\n notificationPermission: null\n },\n browserSupport: {\n cssFilter: window.CSS && window.CSS.supports && (\n window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n )\n },\n layoutType: 'normal',\n globalNotices: [],\n layoutHeight: 0,\n lastTimeline: null\n}\n\nconst interfaceMod = {\n state: defaultState,\n mutations: {\n settingsSaved (state, { success, error }) {\n if (success) {\n if (state.noticeClearTimeout) {\n clearTimeout(state.noticeClearTimeout)\n }\n state.settings.currentSaveStateNotice = { error: false, data: success }\n state.settings.noticeClearTimeout = setTimeout(() => delete state.settings.currentSaveStateNotice, 2000)\n } else {\n state.settings.currentSaveStateNotice = { error: true, errorData: error }\n }\n },\n setNotificationPermission (state, permission) {\n state.notificationPermission = permission\n },\n setLayoutType (state, value) {\n state.layoutType = value\n },\n closeSettingsModal (state) {\n state.settingsModalState = 'hidden'\n },\n togglePeekSettingsModal (state) {\n switch (state.settingsModalState) {\n case 'minimized':\n state.settingsModalState = 'visible'\n return\n case 'visible':\n state.settingsModalState = 'minimized'\n return\n default:\n throw new Error('Illegal minimization state of settings modal')\n }\n },\n openSettingsModal (state, value) {\n state.settingsModalMode = value\n state.settingsModalState = 'visible'\n if (value === 'user') {\n if (!state.settingsModalLoadedUser) {\n state.settingsModalLoadedUser = true\n }\n } else if (value === 'admin') {\n if (!state.settingsModalLoadedAdmin) {\n state.settingsModalLoadedAdmin = true\n }\n }\n },\n setSettingsModalTargetTab (state, value) {\n state.settingsModalTargetTab = value\n },\n pushGlobalNotice (state, notice) {\n state.globalNotices.push(notice)\n },\n removeGlobalNotice (state, notice) {\n state.globalNotices = state.globalNotices.filter(n => n !== notice)\n },\n setLayoutHeight (state, value) {\n state.layoutHeight = value\n },\n setLayoutWidth (state, value) {\n state.layoutWidth = value\n },\n setLastTimeline (state, value) {\n state.lastTimeline = value\n }\n },\n actions: {\n setPageTitle ({ rootState }, option = '') {\n document.title = `${option} ${rootState.instance.name}`\n },\n settingsSaved ({ commit, dispatch }, { success, error }) {\n commit('settingsSaved', { success, error })\n },\n setNotificationPermission ({ commit }, permission) {\n commit('setNotificationPermission', permission)\n },\n closeSettingsModal ({ commit }) {\n commit('closeSettingsModal')\n },\n openSettingsModal ({ commit }, value = 'user') {\n commit('openSettingsModal', value)\n },\n togglePeekSettingsModal ({ commit }) {\n commit('togglePeekSettingsModal')\n },\n clearSettingsModalTargetTab ({ commit }) {\n commit('setSettingsModalTargetTab', null)\n },\n openSettingsModalTab ({ commit }, value) {\n commit('setSettingsModalTargetTab', value)\n commit('openSettingsModal', 'user')\n },\n pushGlobalNotice (\n { commit, dispatch, state },\n {\n messageKey,\n messageArgs = {},\n level = 'error',\n timeout = 0\n }) {\n const notice = {\n messageKey,\n messageArgs,\n level\n }\n commit('pushGlobalNotice', notice)\n // Adding a new element to array wraps it in a Proxy, which breaks the comparison\n // TODO: Generate UUID or something instead or relying on !== operator?\n const newNotice = state.globalNotices[state.globalNotices.length - 1]\n if (timeout) {\n setTimeout(() => dispatch('removeGlobalNotice', newNotice), timeout)\n }\n return newNotice\n },\n removeGlobalNotice ({ commit }, notice) {\n commit('removeGlobalNotice', notice)\n },\n setLayoutHeight ({ commit }, value) {\n commit('setLayoutHeight', value)\n },\n // value is optional, assuming it was cached prior\n setLayoutWidth ({ commit, state, rootGetters, rootState }, value) {\n let width = value\n if (value !== undefined) {\n commit('setLayoutWidth', value)\n } else {\n width = state.layoutWidth\n }\n const mobileLayout = width <= 800\n const normalOrMobile = mobileLayout ? 'mobile' : 'normal'\n const { thirdColumnMode } = rootGetters.mergedConfig\n if (thirdColumnMode === 'none' || !rootState.users.currentUser) {\n commit('setLayoutType', normalOrMobile)\n } else {\n const wideLayout = width >= 1300\n commit('setLayoutType', wideLayout ? 'wide' : normalOrMobile)\n }\n },\n setLastTimeline ({ commit }, value) {\n commit('setLastTimeline', value)\n }\n }\n}\n\nexport default interfaceMod\n","import { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\nimport { langCodeToCldrName, ensureFinalFallback } from '../i18n/languages.js'\n\nconst SORTED_EMOJI_GROUP_IDS = [\n 'smileys-and-emotion',\n 'people-and-body',\n 'animals-and-nature',\n 'food-and-drink',\n 'travel-and-places',\n 'activities',\n 'objects',\n 'symbols',\n 'flags'\n]\n\nconst REGIONAL_INDICATORS = (() => {\n const start = 0x1F1E6\n const end = 0x1F1FF\n const A = 'A'.codePointAt(0)\n const res = new Array(end - start + 1)\n for (let i = start; i <= end; ++i) {\n const letter = String.fromCodePoint(A + i - start)\n res[i - start] = {\n replacement: String.fromCodePoint(i),\n imageUrl: false,\n displayText: 'regional_indicator_' + letter,\n displayTextI18n: {\n key: 'emoji.regional_indicator',\n args: { letter }\n }\n }\n }\n return res\n})()\n\nconst REMOTE_INTERACTION_URL = '/main/ostatus'\n\nconst defaultState = {\n // Stuff from apiConfig\n name: 'Pleroma FE',\n registrationOpen: true,\n server: 'http://localhost:4040/',\n textlimit: 5000,\n themeData: undefined,\n vapidPublicKey: undefined,\n\n // Stuff from static/config.json\n alwaysShowSubjectInput: true,\n defaultAvatar: '/images/avi.png',\n defaultBanner: '/images/banner.png',\n background: '/static/aurora_borealis.jpg',\n collapseMessageWithSubject: false,\n greentext: false,\n useAtIcon: false,\n mentionLinkDisplay: 'short',\n mentionLinkShowTooltip: true,\n mentionLinkShowAvatar: false,\n mentionLinkFadeDomain: true,\n mentionLinkShowYous: false,\n mentionLinkBoldenYou: true,\n hideFilteredStatuses: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: false,\n hideMutedThreads: true,\n hideWordFilteredPosts: false,\n hidePostStats: false,\n hideBotIndication: false,\n hideSitename: false,\n hideUserStats: false,\n muteBotStatuses: false,\n modalOnRepeat: false,\n modalOnUnfollow: false,\n modalOnBlock: true,\n modalOnMute: false,\n modalOnDelete: true,\n modalOnLogout: true,\n modalOnApproveFollow: false,\n modalOnDenyFollow: false,\n modalOnRemoveUserFromFollowers: false,\n loginMethod: 'password',\n logo: '/static/logo.svg',\n logoMargin: '.2em',\n logoMask: true,\n logoLeft: false,\n disableUpdateNotification: false,\n minimalScopesMode: false,\n nsfwCensorImage: undefined,\n postContentType: 'text/plain',\n redirectRootLogin: '/main/friends',\n redirectRootNoLogin: '/main/all',\n scopeCopy: true,\n showFeaturesPanel: true,\n showInstanceSpecificPanel: false,\n sidebarRight: false,\n subjectLineBehavior: 'email',\n theme: 'pleroma-dark',\n virtualScrolling: true,\n sensitiveByDefault: false,\n conversationDisplay: 'linear',\n conversationTreeAdvanced: false,\n conversationOtherRepliesButton: 'below',\n conversationTreeFadeAncestors: false,\n maxDepthInThread: 6,\n autocompleteSelect: false,\n\n // Nasty stuff\n customEmoji: [],\n customEmojiFetched: false,\n emoji: {},\n emojiFetched: false,\n unicodeEmojiAnnotations: {},\n pleromaBackend: true,\n postFormats: [],\n restrictedNicknames: [],\n safeDM: true,\n knownDomains: [],\n birthdayRequired: false,\n birthdayMinAge: 0,\n\n // Feature-set, apparently, not everything here is reported...\n shoutAvailable: false,\n pleromaChatMessagesAvailable: false,\n pleromaCustomEmojiReactionsAvailable: false,\n gopherAvailable: false,\n mediaProxyAvailable: false,\n suggestionsEnabled: false,\n suggestionsWeb: '',\n quotingAvailable: false,\n\n // Html stuff\n instanceSpecificPanelContent: '',\n tos: '',\n\n // Version Information\n backendVersion: '',\n frontendVersion: '',\n\n pollsAvailable: false,\n pollLimits: {\n max_options: 4,\n max_option_chars: 255,\n min_expiration: 60,\n max_expiration: 60 * 60 * 24\n }\n}\n\nconst loadAnnotations = (lang) => {\n return import(\n /* webpackChunkName: \"emoji-annotations/[request]\" */\n `@kazvmoe-infra/unicode-emoji-json/annotations/${langCodeToCldrName(lang)}.json`\n )\n .then(k => k.default)\n}\n\nconst injectAnnotations = (emoji, annotations) => {\n const availableLangs = Object.keys(annotations)\n\n return {\n ...emoji,\n annotations: availableLangs.reduce((acc, cur) => {\n acc[cur] = annotations[cur][emoji.replacement]\n return acc\n }, {})\n }\n}\n\nconst injectRegionalIndicators = groups => {\n groups.symbols.push(...REGIONAL_INDICATORS)\n return groups\n}\n\nconst instance = {\n state: defaultState,\n mutations: {\n setInstanceOption (state, { name, value }) {\n if (typeof value !== 'undefined') {\n state[name] = value\n }\n },\n setKnownDomains (state, domains) {\n state.knownDomains = domains\n },\n setUnicodeEmojiAnnotations (state, { lang, annotations }) {\n state.unicodeEmojiAnnotations[lang] = annotations\n }\n },\n getters: {\n instanceDefaultConfig (state) {\n return instanceDefaultProperties\n .map(key => [key, state[key]])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n },\n groupedCustomEmojis (state) {\n const packsOf = emoji => {\n const packs = emoji.tags\n .filter(k => k.startsWith('pack:'))\n .map(k => {\n const packName = k.slice(5) // remove 'pack:' prefix\n return {\n id: `custom-${packName}`,\n text: packName\n }\n })\n\n if (!packs.length) {\n return [{\n id: 'unpacked'\n }]\n } else {\n return packs\n }\n }\n\n return state.customEmoji\n .reduce((res, emoji) => {\n packsOf(emoji).forEach(({ id: packId, text: packName }) => {\n if (!res[packId]) {\n res[packId] = ({\n id: packId,\n text: packName,\n image: emoji.imageUrl,\n emojis: []\n })\n }\n res[packId].emojis.push(emoji)\n })\n return res\n }, {})\n },\n standardEmojiList (state) {\n return SORTED_EMOJI_GROUP_IDS\n .map(groupId => (state.emoji[groupId] || []).map(k => injectAnnotations(k, state.unicodeEmojiAnnotations)))\n .reduce((a, b) => a.concat(b), [])\n },\n standardEmojiGroupList (state) {\n return SORTED_EMOJI_GROUP_IDS.map(groupId => ({\n id: groupId,\n emojis: (state.emoji[groupId] || []).map(k => injectAnnotations(k, state.unicodeEmojiAnnotations))\n }))\n },\n instanceDomain (state) {\n return new URL(state.server).hostname\n },\n remoteInteractionLink (state) {\n const server = state.server.endsWith('/') ? state.server.slice(0, -1) : state.server\n const link = server + REMOTE_INTERACTION_URL\n\n return ({ statusId, nickname }) => {\n if (statusId) {\n return `${link}?status_id=${statusId}`\n } else {\n return `${link}?nickname=${nickname}`\n }\n }\n }\n },\n actions: {\n setInstanceOption ({ commit, dispatch }, { name, value }) {\n commit('setInstanceOption', { name, value })\n switch (name) {\n case 'name':\n dispatch('setPageTitle')\n break\n case 'shoutAvailable':\n if (value) {\n dispatch('initializeSocket')\n }\n break\n case 'theme':\n dispatch('setTheme', value)\n break\n }\n },\n async getStaticEmoji ({ commit }) {\n try {\n const values = (await import(/* webpackChunkName: 'emoji' */ '../../static/emoji.json')).default\n\n const emoji = Object.keys(values).reduce((res, groupId) => {\n res[groupId] = values[groupId].map(e => ({\n displayText: e.slug,\n imageUrl: false,\n replacement: e.emoji\n }))\n return res\n }, {})\n commit('setInstanceOption', { name: 'emoji', value: injectRegionalIndicators(emoji) })\n } catch (e) {\n console.warn(\"Can't load static emoji\")\n console.warn(e)\n }\n },\n\n loadUnicodeEmojiData ({ commit, state }, language) {\n const langList = ensureFinalFallback(language)\n\n return Promise.all(\n langList\n .map(async lang => {\n if (!state.unicodeEmojiAnnotations[lang]) {\n try {\n const annotations = await loadAnnotations(lang)\n commit('setUnicodeEmojiAnnotations', { lang, annotations })\n } catch (e) {\n console.warn(`Error loading unicode emoji annotations for ${lang}: `, e)\n // ignore\n }\n }\n }))\n },\n\n async getCustomEmoji ({ commit, state }) {\n try {\n const res = await window.fetch('/api/pleroma/emoji.json')\n if (res.ok) {\n const result = await res.json()\n const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n const caseInsensitiveStrCmp = (a, b) => {\n const la = a.toLowerCase()\n const lb = b.toLowerCase()\n return la > lb ? 1 : (la < lb ? -1 : 0)\n }\n const noPackLast = (a, b) => {\n const aNull = a === ''\n const bNull = b === ''\n if (aNull === bNull) {\n return 0\n } else if (aNull && !bNull) {\n return 1\n } else {\n return -1\n }\n }\n const byPackThenByName = (a, b) => {\n const packOf = emoji => (emoji.tags.filter(k => k.startsWith('pack:'))[0] || '').slice(5)\n const packOfA = packOf(a)\n const packOfB = packOf(b)\n return noPackLast(packOfA, packOfB) || caseInsensitiveStrCmp(packOfA, packOfB) || caseInsensitiveStrCmp(a.displayText, b.displayText)\n }\n\n const emoji = Object.entries(values).map(([key, value]) => {\n const imageUrl = value.image_url\n return {\n displayText: key,\n imageUrl: imageUrl ? state.server + imageUrl : value,\n tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n replacement: `:${key}: `\n }\n // Technically could use tags but those are kinda useless right now,\n // should have been \"pack\" field, that would be more useful\n }).sort(byPackThenByName)\n commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load custom emojis\")\n console.warn(e)\n }\n },\n\n setTheme ({ commit, rootState }, themeName) {\n commit('setInstanceOption', { name: 'theme', value: themeName })\n getPreset(themeName)\n .then(themeData => {\n commit('setInstanceOption', { name: 'themeData', value: themeData })\n // No need to apply theme if there's user theme already\n const { customTheme } = rootState.config\n if (customTheme) return\n\n // New theme presets don't have 'theme' property, they use 'source'\n const themeSource = themeData.source\n if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n applyTheme(themeSource)\n } else {\n applyTheme(themeData.theme)\n }\n })\n },\n fetchEmoji ({ dispatch, state }) {\n if (!state.customEmojiFetched) {\n state.customEmojiFetched = true\n dispatch('getCustomEmoji')\n }\n if (!state.emojiFetched) {\n state.emojiFetched = true\n dispatch('getStaticEmoji')\n }\n },\n\n async getKnownDomains ({ commit, rootState }) {\n try {\n const result = await apiService.fetchKnownDomains({\n credentials: rootState.users.currentUser.credentials\n })\n commit('setKnownDomains', result)\n } catch (e) {\n console.warn(\"Can't load known domains\")\n console.warn(e)\n }\n }\n }\n}\n\nexport default instance\n","import {\n remove,\n slice,\n each,\n findIndex,\n find,\n maxBy,\n minBy,\n merge,\n first,\n last,\n isArray,\n omitBy\n} from 'lodash'\nimport {\n isStatusNotification,\n isValidNotification,\n maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n statuses: [],\n statusesObject: {},\n faves: [],\n visibleStatuses: [],\n visibleStatusesObject: {},\n newStatusCount: 0,\n maxId: 0,\n minId: 0,\n minVisibleId: 0,\n loading: false,\n followers: [],\n friends: [],\n userId,\n flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n desktopNotificationSilence: true,\n maxId: 0,\n minId: Number.POSITIVE_INFINITY,\n data: [],\n idStore: {},\n loading: false\n})\n\nexport const defaultState = () => ({\n allStatuses: [],\n allStatusesObject: {},\n conversationsObject: {},\n maxId: 0,\n notifications: emptyNotifications(),\n favorites: new Set(),\n timelines: {\n mentions: emptyTl(),\n public: emptyTl(),\n user: emptyTl(),\n favorites: emptyTl(),\n media: emptyTl(),\n publicAndExternal: emptyTl(),\n friends: emptyTl(),\n tag: emptyTl(),\n dms: emptyTl(),\n bookmarks: emptyTl(),\n list: emptyTl()\n }\n})\n\nexport const prepareStatus = (status) => {\n // Set deleted flag\n status.deleted = false\n\n // To make the array reactive\n status.attachments = status.attachments || []\n\n return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n const oldItem = obj[item.id]\n\n if (oldItem) {\n // We already have this, so only merge the new info.\n // We ignore null values to avoid overwriting existing properties with missing data\n // we also skip 'user' because that is handled by users module\n merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n // Reactivity fix.\n oldItem.attachments.splice(oldItem.attachments.length)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n prepareStatus(item)\n arr.push(item)\n obj[item.id] = item\n return { item, new: true }\n }\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst sortTimeline = (timeline) => {\n timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n timeline.statuses = timeline.statuses.sort(sortById)\n timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n if (result.new) {\n // Add to conversation\n const status = result.item\n const conversationsObject = state.conversationsObject\n const conversationId = status.statusnet_conversation_id\n if (conversationsObject[conversationId]) {\n conversationsObject[conversationId].push(status)\n } else {\n conversationsObject[conversationId] = [status]\n }\n }\n return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n remove(state.allStatuses, { id: status.id })\n\n // TODO: Need to remove from allStatusesObject?\n\n // Remove possible notification\n remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n // Remove from conversation\n const conversationId = status.statusnet_conversation_id\n if (state.conversationsObject[conversationId]) {\n remove(state.conversationsObject[conversationId], { id: status.id })\n }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n // Sanity check\n if (!isArray(statuses)) {\n return false\n }\n\n const allStatuses = state.allStatuses\n const timelineObject = state.timelines[timeline]\n\n // Mismatch between API pagination and our internal minId/maxId tracking systems:\n // pagination.maxId is the oldest of the returned statuses when fetching older,\n // and pagination.minId is the newest when fetching newer. The names come directly\n // from the arguments they're supposed to be passed as for the next fetch.\n const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n if (!noIdUpdate && newer) {\n timelineObject.maxId = maxNew\n }\n if (!noIdUpdate && older) {\n timelineObject.minId = minNew\n }\n\n // This makes sure that user timeline won't get data meant for other\n // user. I.e. opening different user profiles makes request which could\n // return data late after user already viewing different user profile\n if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n return\n }\n\n const addStatus = (data, showImmediately, addToTimeline = true) => {\n const result = addStatusToGlobalStorage(state, data)\n const status = result.item\n\n if (result.new) {\n // We are mentioned in a post\n if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n const mentions = state.timelines.mentions\n\n // Add the mention to the mentions timeline\n if (timelineObject !== mentions) {\n mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n mentions.newStatusCount += 1\n\n sortTimeline(mentions)\n }\n }\n if (status.visibility === 'direct') {\n const dms = state.timelines.dms\n\n mergeOrAdd(dms.statuses, dms.statusesObject, status)\n dms.newStatusCount += 1\n\n sortTimeline(dms)\n }\n }\n\n // Decide if we should treat the status as new for this timeline.\n let resultForCurrentTimeline\n // Some statuses should only be added to the global status repository.\n if (timeline && addToTimeline) {\n resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n }\n\n if (timeline && showImmediately) {\n // Add it directly to the visibleStatuses, don't change\n // newStatusCount\n mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n // Just change newStatuscount\n timelineObject.newStatusCount += 1\n }\n\n if (status.quote) {\n addStatus(status.quote, /* showImmediately = */ false, /* addToTimeline = */ false)\n }\n\n return status\n }\n\n const favoriteStatus = (favorite, counter) => {\n const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n if (status) {\n // This is our favorite, so the relevant bit.\n if (favorite.user.id === user.id) {\n status.favorited = true\n } else {\n status.fave_num += 1\n }\n }\n return status\n }\n\n const processors = {\n status: (status) => {\n addStatus(status, showImmediately)\n },\n edit: (status) => {\n addStatus(status, showImmediately)\n },\n retweet: (status) => {\n // RetweetedStatuses are never shown immediately\n const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n let retweet\n // If the retweeted status is already there, don't add the retweet\n // to the timeline.\n if (timeline && find(timelineObject.statuses, (s) => {\n if (s.retweeted_status) {\n return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n } else {\n return s.id === retweetedStatus.id\n }\n })) {\n // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n retweet = addStatus(status, false, false)\n } else {\n retweet = addStatus(status, showImmediately)\n }\n\n retweet.retweeted_status = retweetedStatus\n },\n favorite: (favorite) => {\n // Only update if this is a new favorite.\n // Ignore our own favorites because we get info about likes as response to like request\n if (!state.favorites.has(favorite.id)) {\n state.favorites.add(favorite.id)\n favoriteStatus(favorite)\n }\n },\n deletion: (deletion) => {\n const uri = deletion.uri\n const status = find(allStatuses, { uri })\n if (!status) {\n return\n }\n\n removeStatusFromGlobalStorage(state, status)\n\n if (timeline) {\n remove(timelineObject.statuses, { uri })\n remove(timelineObject.visibleStatuses, { uri })\n }\n },\n follow: (follow) => {\n // NOOP, it is known status but we don't do anything about it for now\n },\n default: (unknown) => {\n console.log('unknown status type')\n console.log(unknown)\n }\n }\n\n each(statuses, (status) => {\n const type = status.type\n const processor = processors[type] || processors.default\n processor(status)\n })\n\n // Keep the visible statuses sorted\n if (timeline && !(timeline === 'bookmarks')) {\n sortTimeline(timelineObject)\n }\n}\n\nconst updateNotificationsMinMaxId = (state, notification) => {\n state.notifications.maxId = notification.id > state.notifications.maxId\n ? notification.id\n : state.notifications.maxId\n state.notifications.minId = notification.id < state.notifications.minId\n ? notification.id\n : state.notifications.minId\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\n each(notifications, (notification) => {\n // If invalid notification, update ids but don't add it to store\n if (!isValidNotification(notification)) {\n console.error('Invalid notification:', notification)\n updateNotificationsMinMaxId(state, notification)\n return\n }\n\n if (isStatusNotification(notification.type)) {\n notification.action = addStatusToGlobalStorage(state, notification.action).item\n notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n }\n\n if (notification.type === 'pleroma:report') {\n dispatch('addReport', notification.report)\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n dispatch('fetchEmojiReactionsBy', notification.status.id)\n }\n\n // Only add a new notification if we don't have one for the same action\n // eslint-disable-next-line no-prototype-builtins\n if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n updateNotificationsMinMaxId(state, notification)\n\n state.notifications.data.push(notification)\n state.notifications.idStore[notification.id] = notification\n\n newNotificationSideEffects(notification)\n } else if (notification.seen) {\n state.notifications.idStore[notification.id].seen = true\n }\n })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n const timelineObject = state.timelines[timeline]\n if (userId) {\n remove(timelineObject.statuses, { user: { id: userId } })\n remove(timelineObject.visibleStatuses, { user: { id: userId } })\n timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n }\n}\n\nexport const mutations = {\n addNewStatuses,\n addNewNotifications,\n removeStatus,\n showNewStatuses (state, { timeline }) {\n const oldTimeline = (state.timelines[timeline])\n\n oldTimeline.newStatusCount = 0\n oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n oldTimeline.minId = oldTimeline.minVisibleId\n oldTimeline.visibleStatusesObject = {}\n each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n },\n resetStatuses (state) {\n const emptyState = defaultState()\n Object.entries(emptyState).forEach(([key, value]) => {\n state[key] = value\n })\n },\n clearTimeline (state, { timeline, excludeUserId = false }) {\n const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n state.timelines[timeline] = emptyTl(userId)\n },\n clearNotifications (state) {\n state.notifications = emptyNotifications()\n },\n setFavorited (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.favorited !== value) {\n if (value) {\n newStatus.fave_num++\n } else {\n newStatus.fave_num--\n }\n }\n\n newStatus.favorited = value\n },\n setFavoritedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.favorited = status.favorited\n newStatus.fave_num = status.fave_num\n const index = findIndex(newStatus.favoritedBy, { id: user.id })\n if (index !== -1 && !newStatus.favorited) {\n newStatus.favoritedBy.splice(index, 1)\n } else if (index === -1 && newStatus.favorited) {\n newStatus.favoritedBy.push(user)\n }\n },\n setMutedStatus (state, status) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.thread_muted = status.thread_muted\n\n if (newStatus.thread_muted !== undefined) {\n state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n }\n },\n setRetweeted (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.repeated !== value) {\n if (value) {\n newStatus.repeat_num++\n } else {\n newStatus.repeat_num--\n }\n }\n\n newStatus.repeated = value\n },\n setRetweetedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.repeated = status.repeated\n newStatus.repeat_num = status.repeat_num\n const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n if (index !== -1 && !newStatus.repeated) {\n newStatus.rebloggedBy.splice(index, 1)\n } else if (index === -1 && newStatus.repeated) {\n newStatus.rebloggedBy.push(user)\n }\n },\n setBookmarked (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = value\n },\n setBookmarkedConfirm (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = status.bookmarked\n },\n setDeleted (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n if (newStatus) newStatus.deleted = true\n },\n setManyDeleted (state, condition) {\n Object.values(state.allStatusesObject).forEach(status => {\n if (condition(status)) {\n status.deleted = true\n }\n })\n },\n setLoading (state, { timeline, value }) {\n state.timelines[timeline].loading = value\n },\n setNsfw (state, { id, nsfw }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.nsfw = nsfw\n },\n setNotificationsLoading (state, { value }) {\n state.notifications.loading = value\n },\n setNotificationsSilence (state, { value }) {\n state.notifications.desktopNotificationSilence = value\n },\n markNotificationsAsSeen (state) {\n each(state.notifications.data, (notification) => {\n notification.seen = true\n })\n },\n markSingleNotificationAsSeen (state, { id }) {\n const notification = find(state.notifications.data, n => n.id === id)\n if (notification) notification.seen = true\n },\n dismissNotification (state, { id }) {\n state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n },\n dismissNotifications (state, { finder }) {\n state.notifications.data = state.notifications.data.filter(n => finder)\n },\n updateNotification (state, { id, updater }) {\n const notification = find(state.notifications.data, n => n.id === id)\n notification && updater(notification)\n },\n queueFlush (state, { timeline, id }) {\n state.timelines[timeline].flushMarker = id\n },\n queueFlushAll (state) {\n Object.keys(state.timelines).forEach((timeline) => {\n state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n })\n },\n addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.repeat_num = newStatus.rebloggedBy.length\n newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n },\n addFavs (state, { id, favoritedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.fave_num = newStatus.favoritedBy.length\n newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n },\n addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n const status = state.allStatusesObject[id]\n status.emoji_reactions = emojiReactions\n },\n addOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n const newReaction = {\n ...reaction,\n count: reaction.count + 1,\n me: true,\n accounts: [\n ...reaction.accounts,\n currentUser\n ]\n }\n\n // Update count of existing reaction if it exists, otherwise append at the end\n if (reactionIndex >= 0) {\n status.emoji_reactions[reactionIndex] = newReaction\n } else {\n status.emoji_reactions = [...status.emoji_reactions, newReaction]\n }\n },\n removeOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n if (reactionIndex < 0) return\n\n const reaction = status.emoji_reactions[reactionIndex]\n const accounts = reaction.accounts || []\n\n const newReaction = {\n ...reaction,\n count: reaction.count - 1,\n me: false,\n accounts: accounts.filter(acc => acc.id !== currentUser.id)\n }\n\n if (newReaction.count > 0) {\n status.emoji_reactions[reactionIndex] = newReaction\n } else {\n status.emoji_reactions = status.emoji_reactions.filter(r => r.name !== emoji)\n }\n },\n updateStatusWithPoll (state, { id, poll }) {\n const status = state.allStatusesObject[id]\n status.poll = poll\n },\n setVirtualHeight (state, { statusId, height }) {\n state.allStatusesObject[statusId].virtualHeight = height\n }\n}\n\nconst statuses = {\n state: defaultState(),\n actions: {\n addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n },\n addNewNotifications (store, { notifications, older }) {\n const { commit, dispatch, rootGetters } = store\n\n const newNotificationSideEffects = (notification) => {\n maybeShowNotification(store, notification)\n }\n commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n },\n setNotificationsLoading ({ rootState, commit }, { value }) {\n commit('setNotificationsLoading', { value })\n },\n setNotificationsSilence ({ rootState, commit }, { value }) {\n commit('setNotificationsSilence', { value })\n },\n fetchStatus ({ rootState, dispatch }, id) {\n return rootState.api.backendInteractor.fetchStatus({ id })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n fetchStatusSource ({ rootState, dispatch }, status) {\n return apiService.fetchStatusSource({ id: status.id, credentials: rootState.users.currentUser.credentials })\n },\n fetchStatusHistory ({ rootState, dispatch }, status) {\n return apiService.fetchStatusHistory({ status })\n },\n deleteStatus ({ rootState, commit, dispatch }, status) {\n apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n .then((_) => {\n commit('setDeleted', { status })\n })\n .catch((e) => {\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'status.delete_error',\n messageArgs: [e.message],\n timeout: 5000\n })\n })\n },\n deleteStatusById ({ rootState, commit }, id) {\n const status = rootState.statuses.allStatusesObject[id]\n commit('setDeleted', { status })\n },\n markStatusesAsDeleted ({ commit }, condition) {\n commit('setManyDeleted', condition)\n },\n favorite ({ rootState, commit }, status) {\n // Optimistic favoriting...\n commit('setFavorited', { status, value: true })\n rootState.api.backendInteractor.favorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n unfavorite ({ rootState, commit }, status) {\n // Optimistic unfavoriting...\n commit('setFavorited', { status, value: false })\n rootState.api.backendInteractor.unfavorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n },\n pinStatus ({ rootState, dispatch }, statusId) {\n return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n unpinStatus ({ rootState, dispatch }, statusId) {\n rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n muteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.muteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n unmuteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n retweet ({ rootState, commit }, status) {\n // Optimistic retweeting...\n commit('setRetweeted', { status, value: true })\n rootState.api.backendInteractor.retweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n },\n unretweet ({ rootState, commit }, status) {\n // Optimistic unretweeting...\n commit('setRetweeted', { status, value: false })\n rootState.api.backendInteractor.unretweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n },\n bookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: true })\n rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n unbookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: false })\n rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n queueFlush ({ rootState, commit }, { timeline, id }) {\n commit('queueFlush', { timeline, id })\n },\n queueFlushAll ({ rootState, commit }) {\n commit('queueFlushAll')\n },\n markNotificationsAsSeen ({ rootState, commit }) {\n commit('markNotificationsAsSeen')\n apiService.markNotificationsAsSeen({\n id: rootState.statuses.notifications.maxId,\n credentials: rootState.users.currentUser.credentials\n })\n },\n markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n commit('markSingleNotificationAsSeen', { id })\n apiService.markNotificationsAsSeen({\n single: true,\n id,\n credentials: rootState.users.currentUser.credentials\n })\n },\n dismissNotificationLocal ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n },\n dismissNotification ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n rootState.api.backendInteractor.dismissNotification({ id })\n },\n updateNotification ({ rootState, commit }, { id, updater }) {\n commit('updateNotification', { id, updater })\n },\n fetchFavsAndRepeats ({ rootState, commit }, id) {\n Promise.all([\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n })\n },\n reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('addOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('removeOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n fetchEmojiReactionsBy ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n emojiReactions => {\n commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n }\n )\n },\n fetchFavs ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n },\n fetchRepeats ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n },\n search (store, { q, resolve, limit, offset, following, type }) {\n return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following, type })\n .then((data) => {\n store.commit('addNewUsers', data.accounts)\n store.commit('addNewUsers', data.statuses.map(s => s.user).filter(u => u))\n store.commit('addNewStatuses', { statuses: data.statuses })\n return data\n })\n },\n setVirtualHeight ({ commit }, { statusId, height }) {\n commit('setVirtualHeight', { statusId, height })\n }\n },\n mutations\n}\n\nexport default statuses\n","import { remove, find } from 'lodash'\n\nexport const defaultState = {\n allLists: [],\n allListsObject: {}\n}\n\nexport const mutations = {\n setLists (state, value) {\n state.allLists = value\n },\n setList (state, { listId, title }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n state.allListsObject[listId].title = title\n\n const entry = find(state.allLists, { id: listId })\n if (!entry) {\n state.allLists.push({ id: listId, title })\n } else {\n entry.title = title\n }\n },\n setListAccounts (state, { listId, accountIds }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n state.allListsObject[listId].accountIds = accountIds\n },\n addListAccount (state, { listId, accountId }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n state.allListsObject[listId].accountIds.push(accountId)\n },\n removeListAccount (state, { listId, accountId }) {\n if (!state.allListsObject[listId]) {\n state.allListsObject[listId] = { accountIds: [] }\n }\n const { accountIds } = state.allListsObject[listId]\n const set = new Set(accountIds)\n set.delete(accountId)\n state.allListsObject[listId].accountIds = [...set]\n },\n deleteList (state, { listId }) {\n delete state.allListsObject[listId]\n remove(state.allLists, list => list.id === listId)\n }\n}\n\nconst actions = {\n setLists ({ commit }, value) {\n commit('setLists', value)\n },\n createList ({ rootState, commit }, { title }) {\n return rootState.api.backendInteractor.createList({ title })\n .then((list) => {\n commit('setList', { listId: list.id, title })\n return list\n })\n },\n fetchList ({ rootState, commit }, { listId }) {\n return rootState.api.backendInteractor.getList({ listId })\n .then((list) => commit('setList', { listId: list.id, title: list.title }))\n },\n fetchListAccounts ({ rootState, commit }, { listId }) {\n return rootState.api.backendInteractor.getListAccounts({ listId })\n .then((accountIds) => commit('setListAccounts', { listId, accountIds }))\n },\n setList ({ rootState, commit }, { listId, title }) {\n rootState.api.backendInteractor.updateList({ listId, title })\n commit('setList', { listId, title })\n },\n setListAccounts ({ rootState, commit }, { listId, accountIds }) {\n const saved = rootState.lists.allListsObject[listId].accountIds || []\n const added = accountIds.filter(id => !saved.includes(id))\n const removed = saved.filter(id => !accountIds.includes(id))\n commit('setListAccounts', { listId, accountIds })\n if (added.length > 0) {\n rootState.api.backendInteractor.addAccountsToList({ listId, accountIds: added })\n }\n if (removed.length > 0) {\n rootState.api.backendInteractor.removeAccountsFromList({ listId, accountIds: removed })\n }\n },\n addListAccount ({ rootState, commit }, { listId, accountId }) {\n return rootState\n .api\n .backendInteractor\n .addAccountsToList({ listId, accountIds: [accountId] })\n .then((result) => {\n commit('addListAccount', { listId, accountId })\n return result\n })\n },\n removeListAccount ({ rootState, commit }, { listId, accountId }) {\n return rootState\n .api\n .backendInteractor\n .removeAccountsFromList({ listId, accountIds: [accountId] })\n .then((result) => {\n commit('removeListAccount', { listId, accountId })\n return result\n })\n },\n deleteList ({ rootState, commit }, { listId }) {\n rootState.api.backendInteractor.deleteList({ listId })\n commit('deleteList', { listId })\n }\n}\n\nexport const getters = {\n findListTitle: state => id => {\n if (!state.allListsObject[id]) return\n return state.allListsObject[id].title\n },\n findListAccounts: state => id => {\n return [...state.allListsObject[id].accountIds]\n }\n}\n\nconst lists = {\n state: defaultState,\n mutations,\n actions,\n getters\n}\n\nexport default lists\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, listId, pagination }) => {\n const ccTimeline = camelCase(timeline)\n\n store.dispatch('addNewStatuses', {\n timeline: ccTimeline,\n userId,\n listId,\n statuses,\n showImmediately,\n pagination\n })\n}\n\nconst fetchAndUpdate = ({\n store,\n credentials,\n timeline = 'friends',\n older = false,\n showImmediately = false,\n userId = false,\n listId = false,\n tag = false,\n until,\n since\n}) => {\n const args = { timeline, credentials }\n const rootState = store.rootState || store.state\n const { getters } = store\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n const loggedIn = !!rootState.users.currentUser\n\n if (older) {\n args.until = until || timelineData.minId\n } else {\n if (since === undefined) {\n args.since = timelineData.maxId\n } else if (since !== null) {\n args.since = since\n }\n }\n\n args.userId = userId\n args.listId = listId\n args.tag = tag\n args.withMuted = !hideMutedPosts\n if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n args.replyVisibility = replyVisibility\n }\n\n const numStatusesBeforeFetch = timelineData.statuses.length\n\n return apiService.fetchTimeline(args)\n .then(response => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n\n const { data: statuses, pagination } = response\n if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n store.dispatch('queueFlush', { timeline, id: timelineData.maxId })\n }\n update({ store, statuses, timeline, showImmediately, userId, listId, pagination })\n return { statuses, pagination }\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, listId = false, tag = false }) => {\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const showImmediately = timelineData.visibleStatuses.length === 0\n timelineData.userId = userId\n timelineData.listId = listId\n fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, listId, tag })\n const boundFetchAndUpdate = () =>\n fetchAndUpdate({ timeline, credentials, store, userId, listId, tag })\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\nconst timelineFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n return apiService.fetchFollowRequests({ credentials })\n .then((requests) => {\n store.commit('setFollowRequests', requests)\n store.commit('addNewUsers', requests)\n }, () => {})\n .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst followRequestFetcher = {\n startFetching\n}\n\nexport default followRequestFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n return apiService.fetchLists({ credentials })\n .then(lists => {\n store.commit('setLists', lists)\n }, () => {})\n .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 240000)\n}\n\nconst listsFetcher = {\n startFetching\n}\n\nexport default listsFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcher from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\nimport listsFetcher from '../../services/lists_fetcher/lists_fetcher.service.js'\n\nconst backendInteractorService = credentials => ({\n startFetchingTimeline ({ timeline, store, userId = false, listId = false, tag }) {\n return timelineFetcher.startFetching({ timeline, store, credentials, userId, listId, tag })\n },\n\n fetchTimeline (args) {\n return timelineFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingNotifications ({ store }) {\n return notificationsFetcher.startFetching({ store, credentials })\n },\n\n fetchNotifications (args) {\n return notificationsFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingFollowRequests ({ store }) {\n return followRequestFetcher.startFetching({ store, credentials })\n },\n\n startFetchingLists ({ store }) {\n return listsFetcher.startFetching({ store, credentials })\n },\n\n startUserSocket ({ store }) {\n const serv = store.rootState.instance.server.replace('http', 'ws')\n const url = serv + getMastodonSocketURI({ credentials, stream: 'user' })\n return ProcessedWS({ url, id: 'User' })\n },\n\n ...Object.entries(apiService).reduce((acc, [key, func]) => {\n return {\n ...acc,\n [key]: (args) => func({ credentials, ...args })\n }\n }, {}),\n\n verifyCredentials: apiService.verifyCredentials\n})\n\nexport default backendInteractorService\n","\nexport const windowWidth = () =>\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth\n\nexport const windowHeight = () =>\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight\n","import { reduce } from 'lodash'\n\nconst REDIRECT_URI = `${window.location.origin}/oauth-callback`\n\nexport const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) => {\n if (clientId && clientSecret) {\n return Promise.resolve({ clientId, clientSecret })\n }\n\n const url = `${instance}/api/v1/apps`\n const form = new window.FormData()\n\n form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)\n form.append('redirect_uris', REDIRECT_URI)\n form.append('scopes', 'read write follow push admin')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n .then((app) => ({ clientId: app.client_id, clientSecret: app.client_secret }))\n .then((app) => commit('setClientData', app) || app)\n}\n\nconst login = ({ instance, clientId }) => {\n const data = {\n response_type: 'code',\n client_id: clientId,\n redirect_uri: REDIRECT_URI,\n scope: 'read write follow push admin'\n }\n\n const dataString = reduce(data, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n if (!acc) {\n return encoded\n } else {\n return `${acc}&${encoded}`\n }\n }, false)\n\n // Do the redirect...\n const url = `${instance}/oauth/authorize?${dataString}`\n\n window.location.href = url\n}\n\nconst getTokenWithCredentials = ({ clientId, clientSecret, instance, username, password }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'password')\n form.append('username', username)\n form.append('password', password)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst getToken = ({ clientId, clientSecret, instance, code }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'authorization_code')\n form.append('code', code)\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n}\n\nexport const getClientToken = ({ clientId, clientSecret, instance }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'client_credentials')\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\nconst verifyOTPCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst revokeToken = ({ app, instance, token }) => {\n const url = `${instance}/oauth/revoke`\n const form = new window.FormData()\n\n form.append('client_id', app.clientId)\n form.append('client_secret', app.clientSecret)\n form.append('token', token)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst oauth = {\n login,\n getToken,\n getTokenWithCredentials,\n getOrCreateApp,\n verifyOTPCode,\n verifyRecoveryCode,\n revokeToken\n}\n\nexport default oauth\n","import runtime from 'serviceworker-webpack5-plugin/lib/runtime'\n\nfunction urlBase64ToUint8Array (base64String) {\n const padding = '='.repeat((4 - base64String.length % 4) % 4)\n const base64 = (base64String + padding)\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n\n const rawData = window.atob(base64)\n return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n}\n\nfunction isPushSupported () {\n return 'serviceWorker' in navigator && 'PushManager' in window\n}\n\nfunction getOrCreateServiceWorker () {\n return runtime.register()\n .catch((err) => console.error('Unable to get or create a service worker.', err))\n}\n\nfunction subscribePush (registration, isEnabled, vapidPublicKey) {\n if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))\n if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))\n\n const subscribeOptions = {\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n }\n return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n return registration.pushManager.getSubscription()\n .then((subscribtion) => {\n if (subscribtion === null) { return }\n return subscribtion.unsubscribe()\n })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`\n }\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response\n })\n}\n\nfunction sendSubscriptionToBackEnd (subscription, token, notificationVisibility) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`\n },\n body: JSON.stringify({\n subscription,\n data: {\n alerts: {\n follow: notificationVisibility.follows,\n favourite: notificationVisibility.likes,\n mention: notificationVisibility.mentions,\n reblog: notificationVisibility.repeats,\n move: notificationVisibility.moves\n }\n }\n })\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response.json()\n }).then((responseData) => {\n if (!responseData.id) throw new Error('Bad response from server.')\n return responseData\n })\n}\n\nexport function registerPushNotifications (isEnabled, vapidPublicKey, token, notificationVisibility) {\n if (isPushSupported()) {\n getOrCreateServiceWorker()\n .then((registration) => subscribePush(registration, isEnabled, vapidPublicKey))\n .then((subscription) => sendSubscriptionToBackEnd(subscription, token, notificationVisibility))\n .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))\n }\n}\n\nexport function unregisterPushNotifications (token) {\n if (isPushSupported()) {\n Promise.all([\n deleteSubscriptionFromBackEnd(token),\n getOrCreateServiceWorker()\n .then((registration) => {\n return unsubscribePush(registration).then((result) => [registration, result])\n })\n .then(([registration, unsubResult]) => {\n if (!unsubResult) {\n console.warn('Push subscription cancellation wasn\\'t successful, killing SW anyway...')\n }\n return registration.unregister().then((result) => {\n if (!result) {\n console.warn('Failed to kill SW')\n }\n })\n })\n ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n }\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n if (!item) { return false }\n const oldItem = obj[item.id]\n if (oldItem) {\n // We already have this, so only merge the new info.\n mergeWith(oldItem, item, mergeArrayLength)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n arr.push(item)\n obj[item.id] = item\n return { item, new: true }\n }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n if (isArray(oldValue) && isArray(newValue)) {\n oldValue.length = newValue.length\n return mergeWith(oldValue, newValue, mergeArrayLength)\n }\n}\n\nconst getNotificationPermission = () => {\n const Notification = window.Notification\n\n if (!Notification) return Promise.resolve(null)\n if (Notification.permission === 'default') return Notification.requestPermission()\n return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n return store.rootState.api.backendInteractor.blockUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addBlockId', id)\n store.commit('removeStatus', { timeline: 'friends', userId: id })\n store.commit('removeStatus', { timeline: 'public', userId: id })\n store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n })\n}\n\nconst unblockUser = (store, id) => {\n return store.rootState.api.backendInteractor.unblockUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst removeUserFromFollowers = (store, id) => {\n return store.rootState.api.backendInteractor.removeUserFromFollowers({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst editUserNote = (store, { id, comment }) => {\n return store.rootState.api.backendInteractor.editUserNote({ id, comment })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteUser = (store, args) => {\n const id = typeof args === 'object' ? args.id : args\n const expiresIn = typeof args === 'object' ? args.expiresIn : 0\n\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = true\n store.commit('updateUserRelationship', [predictedRelationship])\n store.commit('addMuteId', id)\n\n return store.rootState.api.backendInteractor.muteUser({ id, expiresIn })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addMuteId', id)\n })\n}\n\nconst unmuteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = false\n store.commit('updateUserRelationship', [predictedRelationship])\n\n return store.rootState.api.backendInteractor.unmuteUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst hideReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: false })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n })\n}\n\nconst showReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: true })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.muteDomain({ domain })\n .then(() => store.commit('addDomainMute', domain))\n}\n\nconst unmuteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.unmuteDomain({ domain })\n .then(() => store.commit('removeDomainMute', domain))\n}\n\nexport const mutations = {\n tagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.concat([tag])\n user.tags = newTags\n },\n untagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.filter(t => t !== tag)\n user.tags = newTags\n },\n updateRight (state, { user: { id }, right, value }) {\n const user = state.usersObject[id]\n const newRights = user.rights\n newRights[right] = value\n user.rights = newRights\n },\n updateActivationStatus (state, { user: { id }, deactivated }) {\n const user = state.usersObject[id]\n user.deactivated = deactivated\n },\n setCurrentUser (state, user) {\n state.lastLoginName = user.screen_name\n state.currentUser = mergeWith(state.currentUser || {}, user, mergeArrayLength)\n },\n clearCurrentUser (state) {\n state.currentUser = false\n state.lastLoginName = false\n },\n beginLogin (state) {\n state.loggingIn = true\n },\n endLogin (state) {\n state.loggingIn = false\n },\n saveFriendIds (state, { id, friendIds }) {\n const user = state.usersObject[id]\n user.friendIds = uniq(concat(user.friendIds || [], friendIds))\n },\n saveFollowerIds (state, { id, followerIds }) {\n const user = state.usersObject[id]\n user.followerIds = uniq(concat(user.followerIds || [], followerIds))\n },\n // Because frontend doesn't have a reason to keep these stuff in memory\n // outside of viewing someones user profile.\n clearFriends (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n user.friendIds = []\n }\n },\n clearFollowers (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n user.followerIds = []\n }\n },\n addNewUsers (state, users) {\n each(users, (user) => {\n if (user.relationship) {\n state.relationships[user.relationship.id] = user.relationship\n }\n const res = mergeOrAdd(state.users, state.usersObject, user)\n const item = res.item\n if (res.new && item.screen_name && !item.screen_name.includes('@')) {\n state.usersByNameObject[item.screen_name.toLowerCase()] = item\n }\n })\n },\n updateUserRelationship (state, relationships) {\n relationships.forEach((relationship) => {\n state.relationships[relationship.id] = relationship\n })\n },\n updateUserInLists (state, { id, inLists }) {\n state.usersObject[id].inLists = inLists\n },\n saveBlockIds (state, blockIds) {\n state.currentUser.blockIds = blockIds\n },\n addBlockId (state, blockId) {\n if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n state.currentUser.blockIds.push(blockId)\n }\n },\n setBlockIdsMaxId (state, blockIdsMaxId) {\n state.currentUser.blockIdsMaxId = blockIdsMaxId\n },\n saveMuteIds (state, muteIds) {\n state.currentUser.muteIds = muteIds\n },\n setMuteIdsMaxId (state, muteIdsMaxId) {\n state.currentUser.muteIdsMaxId = muteIdsMaxId\n },\n addMuteId (state, muteId) {\n if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n state.currentUser.muteIds.push(muteId)\n }\n },\n saveDomainMutes (state, domainMutes) {\n state.currentUser.domainMutes = domainMutes\n },\n addDomainMute (state, domain) {\n if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n state.currentUser.domainMutes.push(domain)\n }\n },\n removeDomainMute (state, domain) {\n const index = state.currentUser.domainMutes.indexOf(domain)\n if (index !== -1) {\n state.currentUser.domainMutes.splice(index, 1)\n }\n },\n setPinnedToUser (state, status) {\n const user = state.usersObject[status.user.id]\n user.pinnedStatusIds = user.pinnedStatusIds || []\n const index = user.pinnedStatusIds.indexOf(status.id)\n\n if (status.pinned && index === -1) {\n user.pinnedStatusIds.push(status.id)\n } else if (!status.pinned && index !== -1) {\n user.pinnedStatusIds.splice(index, 1)\n }\n },\n setUserForStatus (state, status) {\n status.user = state.usersObject[status.user.id]\n },\n setUserForNotification (state, notification) {\n if (notification.type !== 'follow') {\n notification.action.user = state.usersObject[notification.action.user.id]\n }\n notification.from_profile = state.usersObject[notification.from_profile.id]\n },\n setColor (state, { user: { id }, highlighted }) {\n const user = state.usersObject[id]\n user.highlight = highlighted\n },\n signUpPending (state) {\n state.signUpPending = true\n state.signUpErrors = []\n },\n signUpSuccess (state) {\n state.signUpPending = false\n },\n signUpFailure (state, errors) {\n state.signUpPending = false\n state.signUpErrors = errors\n }\n}\n\nexport const getters = {\n findUser: state => query => {\n return state.usersObject[query]\n },\n findUserByName: state => query => {\n return state.usersByNameObject[query.toLowerCase()]\n },\n findUserByUrl: state => query => {\n return state.users\n .find(u => u.statusnet_profile_url &&\n u.statusnet_profile_url.toLowerCase() === query.toLowerCase())\n },\n relationship: state => id => {\n const rel = id && state.relationships[id]\n return rel || { id, loading: true }\n }\n}\n\nexport const defaultState = {\n loggingIn: false,\n lastLoginName: false,\n currentUser: false,\n users: [],\n usersObject: {},\n usersByNameObject: {},\n signUpPending: false,\n signUpErrors: [],\n relationships: {}\n}\n\nconst users = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchUserIfMissing (store, id) {\n if (!store.getters.findUser(id)) {\n store.dispatch('fetchUser', id)\n }\n },\n fetchUser (store, id) {\n return store.rootState.api.backendInteractor.fetchUser({ id })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserByName (store, name) {\n return store.rootState.api.backendInteractor.fetchUserByName({ name })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserRelationship (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n .then((relationships) => store.commit('updateUserRelationship', relationships))\n }\n },\n fetchUserInLists (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserInLists({ id })\n .then((inLists) => store.commit('updateUserInLists', { id, inLists }))\n }\n },\n fetchBlocks (store, args) {\n const { reset } = args || {}\n\n const maxId = store.state.currentUser.blockIdsMaxId\n return store.rootState.api.backendInteractor.fetchBlocks({ maxId })\n .then((blocks) => {\n if (reset) {\n store.commit('saveBlockIds', map(blocks, 'id'))\n } else {\n map(blocks, 'id').map(id => store.commit('addBlockId', id))\n }\n if (blocks.length) {\n store.commit('setBlockIdsMaxId', last(blocks).id)\n }\n store.commit('addNewUsers', blocks)\n return blocks\n })\n },\n blockUser (store, id) {\n return blockUser(store, id)\n },\n unblockUser (store, id) {\n return unblockUser(store, id)\n },\n removeUserFromFollowers (store, id) {\n return removeUserFromFollowers(store, id)\n },\n blockUsers (store, ids = []) {\n return Promise.all(ids.map(id => blockUser(store, id)))\n },\n unblockUsers (store, ids = []) {\n return Promise.all(ids.map(id => unblockUser(store, id)))\n },\n editUserNote (store, args) {\n return editUserNote(store, args)\n },\n fetchMutes (store, args) {\n const { reset } = args || {}\n\n const maxId = store.state.currentUser.muteIdsMaxId\n return store.rootState.api.backendInteractor.fetchMutes({ maxId })\n .then((mutes) => {\n if (reset) {\n store.commit('saveMuteIds', map(mutes, 'id'))\n } else {\n map(mutes, 'id').map(id => store.commit('addMuteId', id))\n }\n if (mutes.length) {\n store.commit('setMuteIdsMaxId', last(mutes).id)\n }\n store.commit('addNewUsers', mutes)\n return mutes\n })\n },\n muteUser (store, id) {\n return muteUser(store, id)\n },\n unmuteUser (store, id) {\n return unmuteUser(store, id)\n },\n hideReblogs (store, id) {\n return hideReblogs(store, id)\n },\n showReblogs (store, id) {\n return showReblogs(store, id)\n },\n muteUsers (store, ids = []) {\n return Promise.all(ids.map(id => muteUser(store, id)))\n },\n unmuteUsers (store, ids = []) {\n return Promise.all(ids.map(id => unmuteUser(store, id)))\n },\n fetchDomainMutes (store) {\n return store.rootState.api.backendInteractor.fetchDomainMutes()\n .then((domainMutes) => {\n store.commit('saveDomainMutes', domainMutes)\n return domainMutes\n })\n },\n muteDomain (store, domain) {\n return muteDomain(store, domain)\n },\n unmuteDomain (store, domain) {\n return unmuteDomain(store, domain)\n },\n muteDomains (store, domains = []) {\n return Promise.all(domains.map(domain => muteDomain(store, domain)))\n },\n unmuteDomains (store, domain = []) {\n return Promise.all(domain.map(domain => unmuteDomain(store, domain)))\n },\n fetchFriends ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.friendIds)\n return rootState.api.backendInteractor.fetchFriends({ id, maxId })\n .then((friends) => {\n commit('addNewUsers', friends)\n commit('saveFriendIds', { id, friendIds: map(friends, 'id') })\n return friends\n })\n },\n fetchFollowers ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.followerIds)\n return rootState.api.backendInteractor.fetchFollowers({ id, maxId })\n .then((followers) => {\n commit('addNewUsers', followers)\n commit('saveFollowerIds', { id, followerIds: map(followers, 'id') })\n return followers\n })\n },\n clearFriends ({ commit }, userId) {\n commit('clearFriends', userId)\n },\n clearFollowers ({ commit }, userId) {\n commit('clearFollowers', userId)\n },\n subscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.subscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n unsubscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.unsubscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n toggleActivationStatus ({ rootState, commit }, { user }) {\n const api = user.deactivated ? rootState.api.backendInteractor.activateUser : rootState.api.backendInteractor.deactivateUser\n api({ user })\n .then((user) => { const deactivated = !user.is_active; commit('updateActivationStatus', { user, deactivated }) })\n },\n registerPushNotifications (store) {\n const token = store.state.currentUser.credentials\n const vapidPublicKey = store.rootState.instance.vapidPublicKey\n const isEnabled = store.rootState.config.webPushNotifications\n const notificationVisibility = store.rootState.config.notificationVisibility\n\n registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n },\n unregisterPushNotifications (store) {\n const token = store.state.currentUser.credentials\n\n unregisterPushNotifications(token)\n },\n addNewUsers ({ commit }, users) {\n commit('addNewUsers', users)\n },\n addNewStatuses (store, { statuses }) {\n const users = map(statuses, 'user')\n const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', retweetedUsers)\n\n each(statuses, (status) => {\n // Reconnect users to statuses\n store.commit('setUserForStatus', status)\n // Set pinned statuses to user\n store.commit('setPinnedToUser', status)\n })\n each(compact(map(statuses, 'retweeted_status')), (status) => {\n // Reconnect users to retweets\n store.commit('setUserForStatus', status)\n // Set pinned retweets to user\n store.commit('setPinnedToUser', status)\n })\n },\n addNewNotifications (store, { notifications }) {\n const users = map(notifications, 'from_profile')\n const targetUsers = map(notifications, 'target').filter(_ => _)\n const notificationIds = notifications.map(_ => _.id)\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', targetUsers)\n\n const notificationsObject = store.rootState.statuses.notifications.idStore\n const relevantNotifications = Object.entries(notificationsObject)\n .filter(([k, val]) => notificationIds.includes(k))\n .map(([k, val]) => val)\n\n // Reconnect users to notifications\n each(relevantNotifications, (notification) => {\n store.commit('setUserForNotification', notification)\n })\n },\n searchUsers ({ rootState, commit }, { query }) {\n return rootState.api.backendInteractor.searchUsers({ query })\n .then((users) => {\n commit('addNewUsers', users)\n return users\n })\n },\n async signUp (store, userInfo) {\n store.commit('signUpPending')\n\n const rootState = store.rootState\n\n try {\n const data = await rootState.api.backendInteractor.register(\n { params: { ...userInfo } }\n )\n store.commit('signUpSuccess')\n store.commit('setToken', data.access_token)\n store.dispatch('loginUser', data.access_token)\n } catch (e) {\n const errors = e.message\n store.commit('signUpFailure', errors)\n throw e\n }\n },\n async getCaptcha (store) {\n return store.rootState.api.backendInteractor.getCaptcha()\n },\n\n logout (store) {\n const { oauth, instance } = store.rootState\n\n const data = {\n ...oauth,\n commit: store.commit,\n instance: instance.server\n }\n\n return oauthApi.getOrCreateApp(data)\n .then((app) => {\n const params = {\n app,\n instance: data.instance,\n token: oauth.userToken\n }\n\n return oauthApi.revokeToken(params)\n })\n .then(() => {\n store.commit('clearCurrentUser')\n store.dispatch('disconnectFromSocket')\n store.commit('clearToken')\n store.dispatch('stopFetchingTimeline', 'friends')\n store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n store.dispatch('stopFetchingNotifications')\n store.dispatch('stopFetchingLists')\n store.dispatch('stopFetchingFollowRequests')\n store.commit('clearNotifications')\n store.commit('resetStatuses')\n store.dispatch('resetChats')\n store.dispatch('setLastTimeline', 'public-timeline')\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n store.commit('clearServerSideStorage')\n })\n },\n loginUser (store, accessToken) {\n return new Promise((resolve, reject) => {\n const commit = store.commit\n const dispatch = store.dispatch\n commit('beginLogin')\n store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n .then((data) => {\n if (!data.error) {\n const user = data\n // user.credentials = userCredentials\n user.credentials = accessToken\n user.blockIds = []\n user.muteIds = []\n user.domainMutes = []\n commit('setCurrentUser', user)\n commit('setServerSideStorage', user)\n commit('addNewUsers', [user])\n\n dispatch('fetchEmoji')\n\n getNotificationPermission()\n .then(permission => commit('setNotificationPermission', permission))\n\n // Set our new backend interactor\n commit('setBackendInteractor', backendInteractorService(accessToken))\n dispatch('pushServerSideStorage')\n\n if (user.token) {\n dispatch('setWsToken', user.token)\n\n // Initialize the shout socket.\n dispatch('initializeSocket')\n }\n\n const startPolling = () => {\n // Start getting fresh posts.\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n // Start fetching notifications\n dispatch('startFetchingNotifications')\n\n // Start fetching chats\n dispatch('startFetchingChats')\n }\n\n dispatch('startFetchingLists')\n\n if (user.locked) {\n dispatch('startFetchingFollowRequests')\n }\n\n if (store.getters.mergedConfig.useStreamingApi) {\n dispatch('fetchTimeline', { timeline: 'friends', since: null })\n dispatch('fetchNotifications', { since: null })\n dispatch('enableMastoSockets', true).catch((error) => {\n console.error('Failed initializing MastoAPI Streaming socket', error)\n }).then(() => {\n dispatch('fetchChats', { latest: true })\n setTimeout(() => dispatch('setNotificationsSilence', false), 10000)\n })\n } else {\n startPolling()\n }\n\n // Get user mutes\n dispatch('fetchMutes')\n\n dispatch('setLayoutWidth', windowWidth())\n dispatch('setLayoutHeight', windowHeight())\n\n // Fetch our friends\n store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n .then((friends) => commit('addNewUsers', friends))\n } else {\n const response = data.error\n // Authentication failed\n commit('endLogin')\n\n // remove authentication token on client/authentication errors\n if ([400, 401, 403, 422].includes(response.status)) {\n commit('clearToken')\n }\n\n if (response.status === 401) {\n reject(new Error('Wrong username or password'))\n } else {\n reject(new Error('An error occurred, please try again'))\n }\n }\n commit('endLogin')\n resolve()\n })\n .catch((error) => {\n console.log(error)\n commit('endLogin')\n reject(new Error('Failed to connect to server, try again'))\n })\n })\n }\n }\n}\n\nexport default users\n","import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n if (!chat.lastMessage) return\n if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n const opts = {\n tag: chat.lastMessage.id,\n title: chat.account.name,\n icon: chat.account.profile_image_url,\n body: chat.lastMessage.content\n }\n\n if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n opts.image = chat.lastMessage.attachment.preview_url\n }\n\n showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n const fakeMessage = {\n content,\n chat_id: chatId,\n created_at: new Date(),\n id: `${new Date().getTime()}`,\n attachments,\n account_id: userId,\n idempotency_key: idempotencyKey,\n emojis: [],\n pending: true,\n isNormalized: true\n }\n\n if (attachments[0]) {\n fakeMessage.attachment = attachments[0]\n }\n\n return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst retryTimeout = (multiplier) => 1000 * multiplier\n\nconst api = {\n state: {\n retryMultiplier: 1,\n backendInteractor: backendInteractorService(),\n fetchers: {},\n socket: null,\n mastoUserSocket: null,\n mastoUserSocketStatus: null,\n followRequests: []\n },\n getters: {\n followRequestCount: state => state.followRequests.length\n },\n mutations: {\n setBackendInteractor (state, backendInteractor) {\n state.backendInteractor = backendInteractor\n },\n addFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName] = fetcher\n },\n removeFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName].stop()\n delete state.fetchers[fetcherName]\n },\n setWsToken (state, token) {\n state.wsToken = token\n },\n setSocket (state, socket) {\n state.socket = socket\n },\n setFollowRequests (state, value) {\n state.followRequests = value\n },\n setMastoUserSocketStatus (state, value) {\n state.mastoUserSocketStatus = value\n },\n incrementRetryMultiplier (state) {\n state.retryMultiplier = Math.max(++state.retryMultiplier, 3)\n },\n resetRetryMultiplier (state) {\n state.retryMultiplier = 1\n }\n },\n actions: {\n /**\n * Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n *\n * @param {Boolean} [initial] - whether this enabling happened at boot time or not\n */\n enableMastoSockets (store, initial) {\n const { state, dispatch, commit } = store\n // Do not initialize unless nonexistent or closed\n if (\n state.mastoUserSocket &&\n ![\n WebSocket.CLOSED,\n WebSocket.CLOSING\n ].includes(state.mastoUserSocket.getState())\n ) {\n return\n }\n if (initial) {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING_INITIAL)\n } else {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING)\n }\n return dispatch('startMastoUserSocket')\n },\n disableMastoSockets (store) {\n const { state, dispatch, commit } = store\n if (!state.mastoUserSocket) return\n commit('setMastoUserSocketStatus', WSConnectionStatus.DISABLED)\n return dispatch('stopMastoUserSocket')\n },\n\n // MastoAPI 'User' sockets\n startMastoUserSocket (store) {\n return new Promise((resolve, reject) => {\n try {\n const { state, commit, dispatch, rootState } = store\n const timelineData = rootState.statuses.timelines.friends\n state.mastoUserSocket = state.backendInteractor.startUserSocket({ store })\n state.mastoUserSocket.addEventListener(\n 'message',\n ({ detail: message }) => {\n if (!message) return // pings\n if (message.event === 'notification') {\n dispatch('addNewNotifications', {\n notifications: [message.notification],\n older: false\n })\n } else if (message.event === 'update') {\n dispatch('addNewStatuses', {\n statuses: [message.status],\n userId: false,\n showImmediately: timelineData.visibleStatuses.length === 0,\n timeline: 'friends'\n })\n } else if (message.event === 'status.update') {\n dispatch('addNewStatuses', {\n statuses: [message.status],\n userId: false,\n showImmediately: message.status.id in timelineData.visibleStatusesObject,\n timeline: 'friends'\n })\n } else if (message.event === 'delete') {\n dispatch('deleteStatusById', message.id)\n } else if (message.event === 'pleroma:chat_update') {\n // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n setTimeout(() => {\n dispatch('addChatMessages', {\n chatId: message.chatUpdate.id,\n messages: [message.chatUpdate.lastMessage]\n })\n dispatch('updateChat', { chat: message.chatUpdate })\n maybeShowChatNotification(store, message.chatUpdate)\n }, 100)\n }\n }\n )\n state.mastoUserSocket.addEventListener('open', () => {\n // Do not show notification when we just opened up the page\n if (state.mastoUserSocketStatus !== WSConnectionStatus.STARTING_INITIAL) {\n dispatch('pushGlobalNotice', {\n level: 'success',\n messageKey: 'timeline.socket_reconnected',\n timeout: 5000\n })\n }\n // Stop polling if we were errored or disabled\n if (new Set([\n WSConnectionStatus.ERROR,\n WSConnectionStatus.DISABLED\n ]).has(state.mastoUserSocketStatus)) {\n dispatch('stopFetchingTimeline', { timeline: 'friends' })\n dispatch('stopFetchingNotifications')\n dispatch('stopFetchingChats')\n }\n commit('resetRetryMultiplier')\n commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n })\n state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n console.error('Error in MastoAPI websocket:', error)\n // TODO is this needed?\n dispatch('clearOpenedChats')\n })\n state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n const ignoreCodes = new Set([\n 1000, // Normal (intended) closure\n 1001 // Going away\n ])\n const { code } = closeEvent\n if (ignoreCodes.has(code)) {\n console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n } else {\n console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n setTimeout(() => {\n dispatch('startMastoUserSocket')\n }, retryTimeout(state.retryMultiplier))\n commit('incrementRetryMultiplier')\n if (state.mastoUserSocketStatus !== WSConnectionStatus.ERROR) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.socket_broke',\n messageArgs: [code],\n timeout: 5000\n })\n }\n commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\n }\n dispatch('clearOpenedChats')\n })\n resolve()\n } catch (e) {\n reject(e)\n }\n })\n },\n stopMastoUserSocket ({ state, dispatch }) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n state.mastoUserSocket.close()\n },\n\n // Timelines\n startFetchingTimeline (store, {\n timeline = 'friends',\n tag = false,\n userId = false,\n listId = false\n }) {\n if (store.state.fetchers[timeline]) return\n\n const fetcher = store.state.backendInteractor.startFetchingTimeline({\n timeline, store, userId, listId, tag\n })\n store.commit('addFetcher', { fetcherName: timeline, fetcher })\n },\n stopFetchingTimeline (store, timeline) {\n const fetcher = store.state.fetchers[timeline]\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n },\n fetchTimeline (store, { timeline, ...rest }) {\n store.state.backendInteractor.fetchTimeline({\n store,\n timeline,\n ...rest\n })\n },\n\n // Notifications\n startFetchingNotifications (store) {\n if (store.state.fetchers.notifications) return\n const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n },\n stopFetchingNotifications (store) {\n const fetcher = store.state.fetchers.notifications\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n },\n fetchNotifications (store, { ...rest }) {\n store.state.backendInteractor.fetchNotifications({\n store,\n ...rest\n })\n },\n\n // Follow requests\n startFetchingFollowRequests (store) {\n if (store.state.fetchers.followRequests) return\n const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n },\n stopFetchingFollowRequests (store) {\n const fetcher = store.state.fetchers.followRequests\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n },\n removeFollowRequest (store, request) {\n const requests = store.state.followRequests.filter((it) => it !== request)\n store.commit('setFollowRequests', requests)\n },\n\n // Lists\n startFetchingLists (store) {\n if (store.state.fetchers.lists) return\n const fetcher = store.state.backendInteractor.startFetchingLists({ store })\n store.commit('addFetcher', { fetcherName: 'lists', fetcher })\n },\n stopFetchingLists (store) {\n const fetcher = store.state.fetchers.lists\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'lists', fetcher })\n },\n\n // Pleroma websocket\n setWsToken (store, token) {\n store.commit('setWsToken', token)\n },\n initializeSocket ({ dispatch, commit, state, rootState }) {\n // Set up websocket connection\n const token = state.wsToken\n if (rootState.instance.shoutAvailable && typeof token !== 'undefined' && state.socket === null) {\n const socket = new Socket('/socket', { params: { token } })\n socket.connect()\n\n commit('setSocket', socket)\n dispatch('initializeShout', socket)\n }\n },\n disconnectFromSocket ({ commit, state }) {\n state.socket && state.socket.disconnect()\n commit('setSocket', null)\n }\n }\n}\n\nexport default api\n","import { get, set } from 'lodash'\n\nconst defaultApi = ({ rootState, commit }, { path, value }) => {\n const params = {}\n set(params, path, value)\n return rootState\n .api\n .backendInteractor\n .updateProfile({ params })\n .then(result => {\n commit('addNewUsers', [result])\n commit('setCurrentUser', result)\n })\n}\n\nconst notificationsApi = ({ rootState, commit }, { path, value, oldValue }) => {\n const settings = {}\n set(settings, path, value)\n return rootState\n .api\n .backendInteractor\n .updateNotificationSettings({ settings })\n .then(result => {\n if (result.status === 'success') {\n commit('confirmProfileOption', { name, value })\n } else {\n commit('confirmProfileOption', { name, value: oldValue })\n }\n })\n}\n\n/**\n * Map that stores relation between path for reading (from user profile),\n * for writing (into API) an what API to use.\n *\n * Shorthand - instead of { get, set, api? } object it's possible to use string\n * in case default api is used and get = set\n *\n * If no api is specified, defaultApi is used (see above)\n */\nexport const settingsMap = {\n defaultScope: 'source.privacy',\n defaultNSFW: 'source.sensitive', // BROKEN: pleroma/pleroma#2837\n stripRichContent: {\n get: 'source.pleroma.no_rich_text',\n set: 'no_rich_text'\n },\n // Privacy\n locked: 'locked',\n acceptChatMessages: {\n get: 'pleroma.accepts_chat_messages',\n set: 'accepts_chat_messages'\n },\n allowFollowingMove: {\n get: 'pleroma.allow_following_move',\n set: 'allow_following_move'\n },\n discoverable: {\n get: 'source.pleroma.discoverable',\n set: 'discoverable'\n },\n hideFavorites: {\n get: 'pleroma.hide_favorites',\n set: 'hide_favorites'\n },\n hideFollowers: {\n get: 'pleroma.hide_followers',\n set: 'hide_followers'\n },\n hideFollows: {\n get: 'pleroma.hide_follows',\n set: 'hide_follows'\n },\n hideFollowersCount: {\n get: 'pleroma.hide_followers_count',\n set: 'hide_followers_count'\n },\n hideFollowsCount: {\n get: 'pleroma.hide_follows_count',\n set: 'hide_follows_count'\n },\n // NotificationSettingsAPIs\n webPushHideContents: {\n get: 'pleroma.notification_settings.hide_notification_contents',\n set: 'hide_notification_contents',\n api: notificationsApi\n },\n blockNotificationsFromStrangers: {\n get: 'pleroma.notification_settings.block_from_strangers',\n set: 'block_from_strangers',\n api: notificationsApi\n }\n}\n\nexport const defaultState = Object.fromEntries(Object.keys(settingsMap).map(key => [key, null]))\n\nconst profileConfig = {\n state: { ...defaultState },\n mutations: {\n confirmProfileOption (state, { name, value }) {\n set(state, name, value)\n },\n wipeProfileOption (state, { name }) {\n set(state, name, null)\n },\n wipeAllProfileOptions (state) {\n Object.keys(settingsMap).forEach(key => {\n set(state, key, null)\n })\n },\n // Set the settings based on their path location\n setCurrentUser (state, user) {\n Object.entries(settingsMap).forEach((map) => {\n const [name, value] = map\n const { get: path = value } = value\n set(state, name, get(user._original, path))\n })\n }\n },\n actions: {\n setProfileOption ({ rootState, state, commit, dispatch }, { name, value }) {\n const oldValue = get(state, name)\n const map = settingsMap[name]\n if (!map) throw new Error('Invalid server-side setting')\n const { set: path = map, api = defaultApi } = map\n commit('wipeProfileOption', { name })\n\n api({ rootState, commit }, { path, value, oldValue })\n .catch((e) => {\n console.warn('Error setting server-side option:', e)\n commit('confirmProfileOption', { name, value: oldValue })\n })\n },\n logout ({ commit }) {\n commit('wipeAllProfileOptions')\n }\n }\n}\n\nexport default profileConfig\n","import Modal from 'src/components/modal/modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport pleromaTan from 'src/assets/pleromatan_apology.png'\nimport pleromaTanFox from 'src/assets/pleromatan_apology_fox.png'\nimport pleromaTanMask from 'src/assets/pleromatan_apology_mask.png'\nimport pleromaTanFoxMask from 'src/assets/pleromatan_apology_fox_mask.png'\n\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\nlibrary.add(\n faTimes\n)\n\nexport const CURRENT_UPDATE_COUNTER = 1\n\nconst UpdateNotification = {\n data () {\n return {\n showingImage: false,\n pleromaTanVariant: Math.random() > 0.5 ? pleromaTan : pleromaTanFox,\n showingMore: false\n }\n },\n components: {\n Modal\n },\n computed: {\n pleromaTanStyles () {\n const mask = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n return {\n 'shape-outside': 'url(' + mask + ')'\n }\n },\n shouldShow () {\n return !this.$store.state.instance.disableUpdateNotification &&\n this.$store.state.users.currentUser &&\n this.$store.state.serverSideStorage.flagStorage.updateCounter < CURRENT_UPDATE_COUNTER &&\n !this.$store.state.serverSideStorage.prefsStorage.simple.dontShowUpdateNotifs\n }\n },\n methods: {\n toggleShow () {\n this.showingMore = !this.showingMore\n },\n neverShowAgain () {\n this.toggleShow()\n this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n this.$store.commit('setPreference', { path: 'simple.dontShowUpdateNotifs', value: true })\n this.$store.dispatch('pushServerSideStorage')\n },\n dismiss () {\n this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n this.$store.dispatch('pushServerSideStorage')\n }\n },\n mounted () {\n this.contentHeightNoImage = this.$refs.animatedText.scrollHeight\n\n // Workaround to get the text height only after mask loaded. A bit hacky.\n const newImg = new Image()\n newImg.onload = () => {\n setTimeout(() => { this.showingImage = true }, 100)\n }\n newImg.src = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n }\n}\n\nexport default UpdateNotification\n","import { toRaw } from 'vue'\nimport { isEqual, cloneDeep, set, get, clamp, flatten, groupBy, findLastIndex, takeRight, uniqWith } from 'lodash'\nimport { CURRENT_UPDATE_COUNTER } from 'src/components/update_notification/update_notification.js'\n\nexport const VERSION = 1\nexport const NEW_USER_DATE = new Date('2022-08-04') // date of writing this, basically\n\nexport const COMMAND_TRIM_FLAGS = 1000\nexport const COMMAND_TRIM_FLAGS_AND_RESET = 1001\n\nexport const defaultState = {\n // do we need to update data on server?\n dirty: false,\n // storage of flags - stuff that can only be set and incremented\n flagStorage: {\n updateCounter: 0, // Counter for most recent update notification seen\n reset: 0 // special flag that can be used to force-reset all flags, debug purposes only\n // special reset codes:\n // 1000: trim keys to those known by currently running FE\n // 1001: same as above + reset everything to 0\n },\n prefsStorage: {\n _journal: [],\n simple: {\n dontShowUpdateNotifs: false,\n collapseNav: false\n },\n collections: {\n pinnedNavItems: ['home', 'dms', 'chats']\n }\n },\n // raw data\n raw: null,\n // local cache\n cache: null\n}\n\nexport const newUserFlags = {\n ...defaultState.flagStorage,\n updateCounter: CURRENT_UPDATE_COUNTER // new users don't need to see update notification\n}\n\nexport const _moveItemInArray = (array, value, movement) => {\n const oldIndex = array.indexOf(value)\n const newIndex = oldIndex + movement\n const newArray = [...array]\n // remove old\n newArray.splice(oldIndex, 1)\n // add new\n newArray.splice(clamp(newIndex, 0, newArray.length + 1), 0, value)\n return newArray\n}\n\nconst _wrapData = (data, userName) => ({\n ...data,\n _user: userName,\n _timestamp: Date.now(),\n _version: VERSION\n})\n\nconst _checkValidity = (data) => data._timestamp > 0 && data._version > 0\n\nconst _verifyPrefs = (state) => {\n state.prefsStorage = state.prefsStorage || {\n simple: {},\n collections: {}\n }\n Object.entries(defaultState.prefsStorage.simple).forEach(([k, v]) => {\n if (typeof v === 'number' || typeof v === 'boolean') return\n console.warn(`Preference simple.${k} as invalid type, reinitializing`)\n set(state.prefsStorage.simple, k, defaultState.prefsStorage.simple[k])\n })\n Object.entries(defaultState.prefsStorage.collections).forEach(([k, v]) => {\n if (Array.isArray(v)) return\n console.warn(`Preference collections.${k} as invalid type, reinitializing`)\n set(state.prefsStorage.collections, k, defaultState.prefsStorage.collections[k])\n })\n}\n\nexport const _getRecentData = (cache, live) => {\n const result = { recent: null, stale: null, needUpload: false }\n const cacheValid = _checkValidity(cache || {})\n const liveValid = _checkValidity(live || {})\n if (!liveValid && cacheValid) {\n result.needUpload = true\n console.debug('Nothing valid stored on server, assuming cache to be source of truth')\n result.recent = cache\n result.stale = live\n } else if (!cacheValid && liveValid) {\n console.debug('Valid storage on server found, no local cache found, using live as source of truth')\n result.recent = live\n result.stale = cache\n } else if (cacheValid && liveValid) {\n console.debug('Both sources have valid data, figuring things out...')\n if (live._timestamp === cache._timestamp && live._version === cache._version) {\n console.debug('Same version/timestamp on both source, source of truth irrelevant')\n result.recent = cache\n result.stale = live\n } else {\n console.debug('Different timestamp, figuring out which one is more recent')\n if (live._timestamp < cache._timestamp) {\n result.recent = cache\n result.stale = live\n } else {\n result.recent = live\n result.stale = cache\n }\n }\n } else {\n console.debug('Both sources are invalid, start from scratch')\n result.needUpload = true\n }\n return result\n}\n\nexport const _getAllFlags = (recent, stale) => {\n return Array.from(new Set([\n ...Object.keys(toRaw((recent || {}).flagStorage || {})),\n ...Object.keys(toRaw((stale || {}).flagStorage || {}))\n ]))\n}\n\nexport const _mergeFlags = (recent, stale, allFlagKeys) => {\n if (!stale.flagStorage) return recent.flagStorage\n if (!recent.flagStorage) return stale.flagStorage\n return Object.fromEntries(allFlagKeys.map(flag => {\n const recentFlag = recent.flagStorage[flag]\n const staleFlag = stale.flagStorage[flag]\n // use flag that is of higher value\n return [flag, Number((recentFlag > staleFlag ? recentFlag : staleFlag) || 0)]\n }))\n}\n\nconst _mergeJournal = (...journals) => {\n // Ignore invalid journal entries\n const allJournals = flatten(\n journals.map(j => Array.isArray(j) ? j : [])\n ).filter(entry =>\n Object.prototype.hasOwnProperty.call(entry, 'path') &&\n Object.prototype.hasOwnProperty.call(entry, 'operation') &&\n Object.prototype.hasOwnProperty.call(entry, 'args') &&\n Object.prototype.hasOwnProperty.call(entry, 'timestamp')\n )\n const grouped = groupBy(allJournals, 'path')\n const trimmedGrouped = Object.entries(grouped).map(([path, journal]) => {\n // side effect\n journal.sort((a, b) => a.timestamp > b.timestamp ? 1 : -1)\n\n if (path.startsWith('collections')) {\n const lastRemoveIndex = findLastIndex(journal, ({ operation }) => operation === 'removeFromCollection')\n // everything before last remove is unimportant\n let remainder\n if (lastRemoveIndex > 0) {\n remainder = journal.slice(lastRemoveIndex)\n } else {\n // everything else doesn't need trimming\n remainder = journal\n }\n return uniqWith(remainder, (a, b) => {\n if (a.path !== b.path) { return false }\n if (a.operation !== b.operation) { return false }\n if (a.operation === 'addToCollection') {\n return a.args[0] === b.args[0]\n }\n return false\n })\n } else if (path.startsWith('simple')) {\n // Only the last record is important\n return takeRight(journal)\n } else {\n return journal\n }\n })\n return flatten(trimmedGrouped)\n .sort((a, b) => a.timestamp > b.timestamp ? 1 : -1)\n}\n\nexport const _mergePrefs = (recent, stale, allFlagKeys) => {\n if (!stale) return recent\n if (!recent) return stale\n const { _journal: recentJournal, ...recentData } = recent\n const { _journal: staleJournal } = stale\n /** Journal entry format:\n * path: path to entry in prefsStorage\n * timestamp: timestamp of the change\n * operation: operation type\n * arguments: array of arguments, depends on operation type\n *\n * currently only supported operation type is \"set\" which just sets the value\n * to requested one. Intended only to be used with simple preferences (boolean, number)\n * shouldn't be used with collections!\n */\n const resultOutput = { ...recentData }\n const totalJournal = _mergeJournal(staleJournal, recentJournal)\n totalJournal.forEach(({ path, timestamp, operation, command, args }) => {\n if (path.startsWith('_')) {\n console.error(`journal contains entry to edit internal (starts with _) field '${path}', something is incorrect here, ignoring.`)\n return\n }\n switch (operation) {\n case 'set':\n set(resultOutput, path, args[0])\n break\n case 'addToCollection':\n set(resultOutput, path, Array.from(new Set(get(resultOutput, path)).add(args[0])))\n break\n case 'removeFromCollection': {\n const newSet = new Set(get(resultOutput, path))\n newSet.delete(args[0])\n set(resultOutput, path, Array.from(newSet))\n break\n }\n case 'reorderCollection': {\n const [value, movement] = args\n set(resultOutput, path, _moveItemInArray(get(resultOutput, path), value, movement))\n break\n }\n default:\n console.error(`Unknown journal operation: '${operation}', did we forget to run reverse migrations beforehand?`)\n }\n })\n return { ...resultOutput, _journal: totalJournal }\n}\n\nexport const _resetFlags = (totalFlags, knownKeys = defaultState.flagStorage) => {\n let result = { ...totalFlags }\n const allFlagKeys = Object.keys(totalFlags)\n // flag reset functionality\n if (totalFlags.reset >= COMMAND_TRIM_FLAGS && totalFlags.reset <= COMMAND_TRIM_FLAGS_AND_RESET) {\n console.debug('Received command to trim the flags')\n const knownKeysSet = new Set(Object.keys(knownKeys))\n\n // Trim\n result = {}\n allFlagKeys.forEach(flag => {\n if (knownKeysSet.has(flag)) {\n result[flag] = totalFlags[flag]\n }\n })\n\n // Reset\n if (totalFlags.reset === COMMAND_TRIM_FLAGS_AND_RESET) {\n // 1001 - and reset everything to 0\n console.debug('Received command to reset the flags')\n Object.keys(knownKeys).forEach(flag => { result[flag] = 0 })\n }\n } else if (totalFlags.reset > 0 && totalFlags.reset < 9000) {\n console.debug('Received command to reset the flags')\n allFlagKeys.forEach(flag => { result[flag] = 0 })\n }\n result.reset = 0\n return result\n}\n\nexport const _doMigrations = (cache) => {\n if (!cache) return cache\n\n if (cache._version < VERSION) {\n console.debug('Local cached data has older version, seeing if there any migrations that can be applied')\n\n // no migrations right now since we only have one version\n console.debug('No migrations found')\n }\n\n if (cache._version > VERSION) {\n console.debug('Local cached data has newer version, seeing if there any reverse migrations that can be applied')\n\n // no reverse migrations right now but we leave a possibility of loading a hotpatch if need be\n if (window._PLEROMA_HOTPATCH) {\n if (window._PLEROMA_HOTPATCH.reverseMigrations) {\n console.debug('Found hotpatch migration, applying')\n return window._PLEROMA_HOTPATCH.reverseMigrations.call({}, 'serverSideStorage', { from: cache._version, to: VERSION }, cache)\n }\n }\n }\n\n return cache\n}\n\nexport const mutations = {\n clearServerSideStorage (state, userData) {\n state = { ...cloneDeep(defaultState) }\n },\n setServerSideStorage (state, userData) {\n const live = userData.storage\n state.raw = live\n let cache = state.cache\n if (cache && cache._user !== userData.fqn) {\n console.warn('cache belongs to another user! reinitializing local cache!')\n cache = null\n }\n\n cache = _doMigrations(cache)\n\n let { recent, stale, needsUpload } = _getRecentData(cache, live)\n\n const userNew = userData.created_at > NEW_USER_DATE\n const flagsTemplate = userNew ? newUserFlags : defaultState.flagStorage\n let dirty = false\n\n if (recent === null) {\n console.debug(`Data is empty, initializing for ${userNew ? 'new' : 'existing'} user`)\n recent = _wrapData({\n flagStorage: { ...flagsTemplate },\n prefsStorage: { ...defaultState.prefsStorage }\n })\n }\n\n if (!needsUpload && recent && stale) {\n console.debug('Checking if data needs merging...')\n // discarding timestamps and versions\n const { _timestamp: _0, _version: _1, ...recentData } = recent\n const { _timestamp: _2, _version: _3, ...staleData } = stale\n dirty = !isEqual(recentData, staleData)\n console.debug(`Data ${dirty ? 'needs' : 'doesn\\'t need'} merging`)\n }\n\n const allFlagKeys = _getAllFlags(recent, stale)\n let totalFlags\n let totalPrefs\n if (dirty) {\n // Merge the flags\n console.debug('Merging the data...')\n totalFlags = _mergeFlags(recent, stale, allFlagKeys)\n _verifyPrefs(recent)\n _verifyPrefs(stale)\n totalPrefs = _mergePrefs(recent.prefsStorage, stale.prefsStorage)\n } else {\n totalFlags = recent.flagStorage\n totalPrefs = recent.prefsStorage\n }\n\n totalFlags = _resetFlags(totalFlags)\n\n recent.flagStorage = { ...flagsTemplate, ...totalFlags }\n recent.prefsStorage = { ...defaultState.prefsStorage, ...totalPrefs }\n\n state.dirty = dirty || needsUpload\n state.cache = recent\n // set local timestamp to smaller one if we don't have any changes\n if (stale && recent && !state.dirty) {\n state.cache._timestamp = Math.min(stale._timestamp, recent._timestamp)\n }\n state.flagStorage = state.cache.flagStorage\n state.prefsStorage = state.cache.prefsStorage\n },\n setFlag (state, { flag, value }) {\n state.flagStorage[flag] = value\n state.dirty = true\n },\n setPreference (state, { path, value }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n set(state.prefsStorage, path, value)\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'set', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n addCollectionPreference (state, { path, value }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n const collection = new Set(get(state.prefsStorage, path))\n collection.add(value)\n set(state.prefsStorage, path, [...collection])\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'addToCollection', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n removeCollectionPreference (state, { path, value }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n const collection = new Set(get(state.prefsStorage, path))\n collection.delete(value)\n set(state.prefsStorage, path, [...collection])\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'removeFromCollection', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n reorderCollectionPreference (state, { path, value, movement }) {\n if (path.startsWith('_')) {\n console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n return\n }\n const collection = get(state.prefsStorage, path)\n const newCollection = _moveItemInArray(collection, value, movement)\n set(state.prefsStorage, path, newCollection)\n state.prefsStorage._journal = [\n ...state.prefsStorage._journal,\n { operation: 'arrangeCollection', path, args: [value], timestamp: Date.now() }\n ]\n state.dirty = true\n },\n updateCache (state, { username }) {\n state.prefsStorage._journal = _mergeJournal(state.prefsStorage._journal)\n state.cache = _wrapData({\n flagStorage: toRaw(state.flagStorage),\n prefsStorage: toRaw(state.prefsStorage)\n }, username)\n }\n}\n\nconst serverSideStorage = {\n state: {\n ...cloneDeep(defaultState)\n },\n mutations,\n actions: {\n pushServerSideStorage ({ state, rootState, commit }, { force = false } = {}) {\n const needPush = state.dirty || force\n console.log(needPush)\n if (!needPush) return\n commit('updateCache', { username: rootState.users.currentUser.fqn })\n const params = { pleroma_settings_store: { 'pleroma-fe': state.cache } }\n rootState.api.backendInteractor\n .updateProfile({ params })\n .then((user) => {\n commit('setServerSideStorage', user)\n state.dirty = false\n })\n }\n }\n}\n\nexport default serverSideStorage\n","import { set, get, cloneDeep, differenceWith, isEqual, flatten } from 'lodash'\n\nexport const defaultState = {\n frontends: [],\n loaded: false,\n needsReboot: null,\n config: null,\n modifiedPaths: null,\n descriptions: null,\n draft: null,\n dbConfigEnabled: null\n}\n\nexport const newUserFlags = {\n ...defaultState.flagStorage\n}\n\nconst adminSettingsStorage = {\n state: {\n ...cloneDeep(defaultState)\n },\n mutations: {\n setInstanceAdminNoDbConfig (state) {\n state.loaded = false\n state.dbConfigEnabled = false\n },\n setAvailableFrontends (state, { frontends }) {\n state.frontends = frontends.map(f => {\n f.installedRefs = f.installed_refs\n if (f.name === 'pleroma-fe') {\n f.refs = ['master', 'develop']\n } else {\n f.refs = [f.ref]\n }\n return f\n })\n },\n updateAdminSettings (state, { config, modifiedPaths }) {\n state.loaded = true\n state.dbConfigEnabled = true\n state.config = config\n state.modifiedPaths = modifiedPaths\n },\n updateAdminDescriptions (state, { descriptions }) {\n state.descriptions = descriptions\n },\n updateAdminDraft (state, { path, value }) {\n const [group, key, subkey] = path\n const parent = [group, key, subkey]\n\n set(state.draft, path, value)\n\n // force-updating grouped draft to trigger refresh of group settings\n if (path.length > parent.length) {\n set(state.draft, parent, cloneDeep(get(state.draft, parent)))\n }\n },\n resetAdminDraft (state) {\n state.draft = cloneDeep(state.config)\n }\n },\n actions: {\n loadFrontendsStuff ({ state, rootState, dispatch, commit }) {\n rootState.api.backendInteractor.fetchAvailableFrontends()\n .then(frontends => commit('setAvailableFrontends', { frontends }))\n },\n loadAdminStuff ({ state, rootState, dispatch, commit }) {\n rootState.api.backendInteractor.fetchInstanceDBConfig()\n .then(backendDbConfig => {\n if (backendDbConfig.error) {\n if (backendDbConfig.error.status === 400) {\n backendDbConfig.error.json().then(errorJson => {\n if (/configurable_from_database/.test(errorJson.error)) {\n commit('setInstanceAdminNoDbConfig')\n }\n })\n }\n } else {\n dispatch('setInstanceAdminSettings', { backendDbConfig })\n }\n })\n if (state.descriptions === null) {\n rootState.api.backendInteractor.fetchInstanceConfigDescriptions()\n .then(backendDescriptions => dispatch('setInstanceAdminDescriptions', { backendDescriptions }))\n }\n },\n setInstanceAdminSettings ({ state, commit, dispatch }, { backendDbConfig }) {\n const config = state.config || {}\n const modifiedPaths = new Set()\n backendDbConfig.configs.forEach(c => {\n const path = [c.group, c.key]\n if (c.db) {\n // Path elements can contain dot, therefore we use ' -> ' as a separator instead\n // Using strings for modified paths for easier searching\n c.db.forEach(x => modifiedPaths.add([...path, x].join(' -> ')))\n }\n const convert = (value) => {\n if (Array.isArray(value) && value.length > 0 && value[0].tuple) {\n return value.reduce((acc, c) => {\n return { ...acc, [c.tuple[0]]: convert(c.tuple[1]) }\n }, {})\n } else {\n return value\n }\n }\n set(config, path, convert(c.value))\n })\n console.log(config[':pleroma'])\n commit('updateAdminSettings', { config, modifiedPaths })\n commit('resetAdminDraft')\n },\n setInstanceAdminDescriptions ({ state, commit, dispatch }, { backendDescriptions }) {\n const convert = ({ children, description, label, key = '<ROOT>', group, suggestions }, path, acc) => {\n const newPath = group ? [group, key] : [key]\n const obj = { description, label, suggestions }\n if (Array.isArray(children)) {\n children.forEach(c => {\n convert(c, newPath, obj)\n })\n }\n set(acc, newPath, obj)\n }\n\n const descriptions = {}\n backendDescriptions.forEach(d => convert(d, '', descriptions))\n console.log(descriptions[':pleroma']['Pleroma.Captcha'])\n commit('updateAdminDescriptions', { descriptions })\n },\n\n // This action takes draft state, diffs it with live config state and then pushes\n // only differences between the two. Difference detection only work up to subkey (third) level.\n pushAdminDraft ({ rootState, state, commit, dispatch }) {\n // TODO cleanup paths in modifiedPaths\n const convert = (value) => {\n if (typeof value !== 'object') {\n return value\n } else if (Array.isArray(value)) {\n return value.map(convert)\n } else {\n return Object.entries(value).map(([k, v]) => ({ tuple: [k, v] }))\n }\n }\n\n // Getting all group-keys used in config\n const allGroupKeys = flatten(\n Object\n .entries(state.config)\n .map(\n ([group, lv1data]) => Object\n .keys(lv1data)\n .map((key) => ({ group, key }))\n )\n )\n\n // Only using group-keys where there are changes detected\n const changedGroupKeys = allGroupKeys.filter(({ group, key }) => {\n return !isEqual(state.config[group][key], state.draft[group][key])\n })\n\n // Here we take all changed group-keys and get all changed subkeys\n const changed = changedGroupKeys.map(({ group, key }) => {\n const config = state.config[group][key]\n const draft = state.draft[group][key]\n\n // We convert group-key value into entries arrays\n const eConfig = Object.entries(config)\n const eDraft = Object.entries(draft)\n\n // Then those entries array we diff so only changed subkey entries remain\n // We use the diffed array to reconstruct the object and then shove it into convert()\n return ({ group, key, value: convert(Object.fromEntries(differenceWith(eDraft, eConfig, isEqual))) })\n })\n\n rootState.api.backendInteractor.pushInstanceDBConfig({\n payload: {\n configs: changed\n }\n })\n .then(() => rootState.api.backendInteractor.fetchInstanceDBConfig())\n .then(backendDbConfig => dispatch('setInstanceAdminSettings', { backendDbConfig }))\n },\n pushAdminSetting ({ rootState, state, commit, dispatch }, { path, value }) {\n const [group, key, ...rest] = Array.isArray(path) ? path : path.split(/\\./g)\n const clone = {} // not actually cloning the entire thing to avoid excessive writes\n set(clone, rest, value)\n\n // TODO cleanup paths in modifiedPaths\n const convert = (value) => {\n if (typeof value !== 'object') {\n return value\n } else if (Array.isArray(value)) {\n return value.map(convert)\n } else {\n return Object.entries(value).map(([k, v]) => ({ tuple: [k, v] }))\n }\n }\n\n rootState.api.backendInteractor.pushInstanceDBConfig({\n payload: {\n configs: [{\n group,\n key,\n value: convert(clone)\n }]\n }\n })\n .then(() => rootState.api.backendInteractor.fetchInstanceDBConfig())\n .then(backendDbConfig => dispatch('setInstanceAdminSettings', { backendDbConfig }))\n },\n resetAdminSetting ({ rootState, state, commit, dispatch }, { path }) {\n const [group, key, subkey] = path.split(/\\./g)\n\n state.modifiedPaths.delete(path)\n\n return rootState.api.backendInteractor.pushInstanceDBConfig({\n payload: {\n configs: [{\n group,\n key,\n delete: true,\n subkeys: [subkey]\n }]\n }\n })\n .then(() => rootState.api.backendInteractor.fetchInstanceDBConfig())\n .then(backendDbConfig => dispatch('setInstanceAdminSettings', { backendDbConfig }))\n }\n }\n}\n\nexport default adminSettingsStorage\n","const shout = {\n state: {\n messages: [],\n channel: { state: '' },\n joined: false\n },\n mutations: {\n setChannel (state, channel) {\n state.channel = channel\n },\n addMessage (state, message) {\n state.messages.push(message)\n state.messages = state.messages.slice(-19, 20)\n },\n setMessages (state, messages) {\n state.messages = messages.slice(-19, 20)\n },\n setJoined (state, joined) {\n state.joined = joined\n }\n },\n actions: {\n initializeShout (store, socket) {\n const channel = socket.channel('chat:public')\n channel.joinPush.receive('ok', () => {\n store.commit('setJoined', true)\n })\n channel.onClose(() => {\n store.commit('setJoined', false)\n })\n channel.onError(() => {\n store.commit('setJoined', false)\n })\n channel.on('new_msg', (msg) => {\n store.commit('addMessage', msg)\n })\n channel.on('messages', ({ messages }) => {\n store.commit('setMessages', messages)\n })\n channel.join()\n store.commit('setChannel', channel)\n }\n }\n}\n\nexport default shout\n","const oauth = {\n state: {\n clientId: false,\n clientSecret: false,\n /* App token is authentication for app without any user, used mostly for\n * MastoAPI's registration of new users, stored so that we can fall back to\n * it on logout\n */\n appToken: false,\n /* User token is authentication for app with user, this is for every calls\n * that need authorized user to be successful (i.e. posting, liking etc)\n */\n userToken: false\n },\n mutations: {\n setClientData (state, { clientId, clientSecret }) {\n state.clientId = clientId\n state.clientSecret = clientSecret\n },\n setAppToken (state, token) {\n state.appToken = token\n },\n setToken (state, token) {\n state.userToken = token\n },\n clearToken (state) {\n state.userToken = false\n // state.token is userToken with older name, coming from persistent state\n // let's clear it as well, since it is being used as a fallback of state.userToken\n delete state.token\n }\n },\n getters: {\n getToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token || state.appToken\n },\n getUserToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token\n }\n }\n}\n\nexport default oauth\n","const PASSWORD_STRATEGY = 'password'\nconst TOKEN_STRATEGY = 'token'\n\n// MFA strategies\nconst TOTP_STRATEGY = 'totp'\nconst RECOVERY_STRATEGY = 'recovery'\n\n// initial state\nconst state = {\n settings: {},\n strategy: PASSWORD_STRATEGY,\n initStrategy: PASSWORD_STRATEGY // default strategy from config\n}\n\nconst resetState = (state) => {\n state.strategy = state.initStrategy\n state.settings = {}\n}\n\n// getters\nconst getters = {\n settings: (state, getters) => {\n return state.settings\n },\n requiredPassword: (state, getters, rootState) => {\n return state.strategy === PASSWORD_STRATEGY\n },\n requiredToken: (state, getters, rootState) => {\n return state.strategy === TOKEN_STRATEGY\n },\n requiredTOTP: (state, getters, rootState) => {\n return state.strategy === TOTP_STRATEGY\n },\n requiredRecovery: (state, getters, rootState) => {\n return state.strategy === RECOVERY_STRATEGY\n }\n}\n\n// mutations\nconst mutations = {\n setInitialStrategy (state, strategy) {\n if (strategy) {\n state.initStrategy = strategy\n state.strategy = strategy\n }\n },\n requirePassword (state) {\n state.strategy = PASSWORD_STRATEGY\n },\n requireToken (state) {\n state.strategy = TOKEN_STRATEGY\n },\n requireMFA (state, { settings }) {\n state.settings = settings\n state.strategy = TOTP_STRATEGY // default strategy of MFA\n },\n requireRecovery (state) {\n state.strategy = RECOVERY_STRATEGY\n },\n requireTOTP (state) {\n state.strategy = TOTP_STRATEGY\n },\n abortMFA (state) {\n resetState(state)\n }\n}\n\n// actions\nconst actions = {\n // eslint-disable-next-line camelcase\n async login ({ state, dispatch, commit }, { access_token }) {\n commit('setToken', access_token, { root: true })\n await dispatch('loginUser', access_token, { root: true })\n resetState(state)\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions\n}\n","import fileTypeService from '../services/file_type/file_type.service.js'\nconst supportedTypes = new Set(['image', 'video', 'audio', 'flash'])\n\nconst mediaViewer = {\n state: {\n media: [],\n currentIndex: 0,\n activated: false\n },\n mutations: {\n setMedia (state, media) {\n state.media = media\n },\n setCurrentMedia (state, index) {\n state.activated = true\n state.currentIndex = index\n },\n close (state) {\n state.activated = false\n }\n },\n actions: {\n setMedia ({ commit }, attachments) {\n const media = attachments.filter(attachment => {\n const type = fileTypeService.fileType(attachment.mimetype)\n return supportedTypes.has(type)\n })\n commit('setMedia', media)\n },\n setCurrentMedia ({ commit, state }, current) {\n const index = state.media.indexOf(current)\n commit('setCurrentMedia', index || 0)\n },\n closeMediaViewer ({ commit }) {\n commit('close')\n }\n }\n}\n\nexport default mediaViewer\n","const oauthTokens = {\n state: {\n tokens: []\n },\n actions: {\n fetchTokens ({ rootState, commit }) {\n rootState.api.backendInteractor.fetchOAuthTokens().then((tokens) => {\n commit('swapTokens', tokens)\n })\n },\n revokeToken ({ rootState, commit, state }, id) {\n rootState.api.backendInteractor.revokeOAuthToken({ id }).then((response) => {\n if (response.status === 201) {\n commit('swapTokens', state.tokens.filter(token => token.id !== id))\n }\n })\n }\n },\n mutations: {\n swapTokens (state, tokens) {\n state.tokens = tokens\n }\n }\n}\n\nexport default oauthTokens\n","import filter from 'lodash/filter'\n\nconst reports = {\n state: {\n reportModal: {\n userId: null,\n statuses: [],\n preTickedIds: [],\n activated: false\n },\n reports: {}\n },\n mutations: {\n openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n state.reportModal.userId = userId\n state.reportModal.statuses = statuses\n state.reportModal.preTickedIds = preTickedIds\n state.reportModal.activated = true\n },\n closeUserReportingModal (state) {\n state.reportModal.activated = false\n },\n setReportState (reportsState, { id, state }) {\n reportsState.reports[id].state = state\n },\n addReport (state, report) {\n state.reports[report.id] = report\n }\n },\n actions: {\n openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n const preTickedIds = statusIds\n const statuses = preTickedStatuses.concat(\n filter(rootState.statuses.allStatuses,\n status => status.user.id === userId && !preTickedIds.includes(status.id)\n )\n )\n commit('openUserReportingModal', { userId, statuses, preTickedIds })\n },\n closeUserReportingModal ({ commit }) {\n commit('closeUserReportingModal')\n },\n setReportState ({ commit, dispatch, rootState }, { id, state }) {\n const oldState = rootState.reports.reports[id].state\n commit('setReportState', { id, state })\n rootState.api.backendInteractor.setReportState({ id, state }).catch(e => {\n console.error('Failed to set report state', e)\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'general.generic_error_message',\n messageArgs: [e.message],\n timeout: 5000\n })\n commit('setReportState', { id, state: oldState })\n })\n },\n addReport ({ commit }, report) {\n commit('addReport', report)\n }\n }\n}\n\nexport default reports\n","import { merge } from 'lodash'\n\nconst polls = {\n state: {\n // Contains key = id, value = number of trackers for this poll\n trackedPolls: {},\n pollsObject: {}\n },\n mutations: {\n mergeOrAddPoll (state, poll) {\n const existingPoll = state.pollsObject[poll.id]\n // Make expired-state change trigger re-renders properly\n poll.expired = Date.now() > Date.parse(poll.expires_at)\n if (existingPoll) {\n state.pollsObject[poll.id] = merge(existingPoll, poll)\n } else {\n state.pollsObject[poll.id] = poll\n }\n },\n trackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n state.trackedPolls[pollId] = currentValue + 1\n } else {\n state.trackedPolls[pollId] = 1\n }\n },\n untrackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n state.trackedPolls[pollId] = currentValue - 1\n } else {\n state.trackedPolls[pollId] = 0\n }\n }\n },\n actions: {\n mergeOrAddPoll ({ commit }, poll) {\n commit('mergeOrAddPoll', poll)\n },\n updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n setTimeout(() => {\n if (rootState.polls.trackedPolls[pollId]) {\n dispatch('updateTrackedPoll', pollId)\n }\n }, 30 * 1000)\n commit('mergeOrAddPoll', poll)\n })\n },\n trackPoll ({ rootState, commit, dispatch }, pollId) {\n if (!rootState.polls.trackedPolls[pollId]) {\n setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n }\n commit('trackPoll', pollId)\n },\n untrackPoll ({ commit }, pollId) {\n commit('untrackPoll', pollId)\n },\n votePoll ({ rootState, commit }, { id, pollId, choices }) {\n return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n commit('mergeOrAddPoll', poll)\n return poll\n })\n }\n }\n}\n\nexport default polls\n","const postStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openPostStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closePostStatusModal (state) {\n state.modalActivated = false\n },\n resetPostStatusModal (state) {\n state.params = null\n }\n },\n actions: {\n openPostStatusModal ({ commit }, params) {\n commit('openPostStatusModal', params)\n },\n closePostStatusModal ({ commit }) {\n commit('closePostStatusModal')\n },\n resetPostStatusModal ({ commit }) {\n commit('resetPostStatusModal')\n }\n }\n}\n\nexport default postStatus\n","const editStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openEditStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closeEditStatusModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openEditStatusModal ({ commit }, params) {\n commit('openEditStatusModal', params)\n },\n closeEditStatusModal ({ commit }) {\n commit('closeEditStatusModal')\n }\n }\n}\n\nexport default editStatus\n","const statusHistory = {\n state: {\n params: {},\n modalActivated: false\n },\n mutations: {\n openStatusHistoryModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closeStatusHistoryModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openStatusHistoryModal ({ commit }, params) {\n commit('openStatusHistoryModal', params)\n },\n closeStatusHistoryModal ({ commit }) {\n commit('closeStatusHistoryModal')\n }\n }\n}\n\nexport default statusHistory\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n return {\n idIndex: {},\n idempotencyKeyIndex: {},\n messages: [],\n newMessageCount: 0,\n lastSeenMessageId: '0',\n chatId,\n minId: undefined,\n maxId: undefined\n }\n}\n\nconst clear = (storage) => {\n const failedMessageIds = []\n\n for (const message of storage.messages) {\n if (message.error) {\n failedMessageIds.push(message.id)\n } else {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n\n storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n storage.newMessageCount = 0\n storage.lastSeenMessageId = '0'\n storage.minId = undefined\n storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n if (!storage) { return }\n storage.messages = storage.messages.filter(m => m.id !== messageId)\n delete storage.idIndex[messageId]\n\n if (storage.maxId === messageId) {\n const lastMessage = _.maxBy(storage.messages, 'id')\n storage.maxId = lastMessage.id\n }\n\n if (storage.minId === messageId) {\n const firstMessage = _.minBy(storage.messages, 'id')\n storage.minId = firstMessage.id\n }\n}\n\nconst cullOlderMessages = (storage) => {\n const maxIndex = storage.messages.length\n const minIndex = maxIndex - 50\n if (maxIndex <= 50) return\n\n storage.messages = _.sortBy(storage.messages, ['id'])\n storage.minId = storage.messages[minIndex].id\n for (const message of storage.messages) {\n if (message.id < storage.minId) {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n if (!storage) { return }\n const fakeMessage = storage.idIndex[fakeId]\n if (fakeMessage) {\n fakeMessage.error = true\n fakeMessage.pending = false\n if (!isRetry) {\n // Ensure the failed message doesn't stay at the bottom of the list.\n const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n if (lastPersistedMessage) {\n const oldId = fakeMessage.id\n fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[oldId]\n }\n }\n }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n if (!storage) { return }\n for (let i = 0; i < newMessages.length; i++) {\n const message = newMessages[i]\n\n // sanity check\n if (message.chat_id !== storage.chatId) { return }\n\n if (message.fakeId) {\n const fakeMessage = storage.idIndex[message.fakeId]\n if (fakeMessage) {\n // In case the same id exists (chat update before POST response)\n // make sure to remove the older duplicate message.\n if (storage.idIndex[message.id]) {\n delete storage.idIndex[message.id]\n storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n }\n Object.assign(fakeMessage, message, { error: false })\n delete fakeMessage.fakeId\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[message.fakeId]\n\n return\n }\n }\n\n if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n storage.minId = message.id\n }\n\n if (!storage.maxId || message.id > storage.maxId) {\n if (updateMaxId) {\n storage.maxId = message.id\n }\n }\n\n if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n if (storage.lastSeenMessageId < message.id) {\n storage.newMessageCount++\n }\n storage.idIndex[message.id] = message\n storage.messages.push(storage.idIndex[message.id])\n storage.idempotencyKeyIndex[message.idempotency_key] = true\n }\n }\n}\n\nconst isConfirmation = (storage, message) => {\n if (!message.idempotency_key) return\n return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n if (!storage) { return }\n storage.newMessageCount = 0\n storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n if (!storage) { return [] }\n\n const result = []\n const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n const firstMessage = messages[0]\n let previousMessage = messages[messages.length - 1]\n let currentMessageChainId\n\n if (firstMessage) {\n const date = new Date(firstMessage.created_at)\n date.setHours(0, 0, 0, 0)\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n }\n\n let afterDate = false\n\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i]\n const nextMessage = messages[i + 1]\n\n const date = new Date(message.created_at)\n date.setHours(0, 0, 0, 0)\n\n // insert date separator and start a new message chain\n if (previousMessage && previousMessage.date < date) {\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n\n previousMessage.isTail = true\n currentMessageChainId = undefined\n afterDate = true\n }\n\n const object = {\n type: 'message',\n data: message,\n date,\n id: message.id,\n messageChainId: currentMessageChainId\n }\n\n // end a message chian\n if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n object.isTail = true\n currentMessageChainId = undefined\n }\n\n // start a new message chain\n if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n currentMessageChainId = _.uniqueId()\n object.isHead = true\n object.messageChainId = currentMessageChainId\n }\n\n result.push(object)\n previousMessage = object\n afterDate = false\n }\n\n return result\n}\n\nconst ChatService = {\n add,\n empty,\n getView,\n deleteMessage,\n cullOlderMessages,\n resetNewMessageCount,\n clear,\n handleMessageError\n}\n\nexport default ChatService\n","import { reactive } from 'vue'\nimport { find, omitBy, orderBy, sumBy } from 'lodash'\nimport chatService from '../services/chat_service/chat_service.js'\nimport { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { promiseInterval } from '../services/promise_interval/promise_interval.js'\n\nconst emptyChatList = () => ({\n data: [],\n idStore: {}\n})\n\nconst defaultState = {\n chatList: emptyChatList(),\n chatListFetcher: null,\n openedChats: reactive({}),\n openedChatMessageServices: reactive({}),\n fetcher: undefined,\n currentChatId: null,\n lastReadMessageId: null\n}\n\nconst getChatById = (state, id) => {\n return find(state.chatList.data, { id })\n}\n\nconst sortedChatList = (state) => {\n return orderBy(state.chatList.data, ['updated_at'], ['desc'])\n}\n\nconst unreadChatCount = (state) => {\n return sumBy(state.chatList.data, 'unread')\n}\n\nconst chats = {\n state: { ...defaultState },\n getters: {\n currentChat: state => state.openedChats[state.currentChatId],\n currentChatMessageService: state => state.openedChatMessageServices[state.currentChatId],\n findOpenedChatByRecipientId: state => recipientId => find(state.openedChats, c => c.account.id === recipientId),\n sortedChatList,\n unreadChatCount\n },\n actions: {\n // Chat list\n startFetchingChats ({ dispatch, commit }) {\n const fetcher = () => dispatch('fetchChats', { latest: true })\n fetcher()\n commit('setChatListFetcher', {\n fetcher: () => promiseInterval(fetcher, 5000)\n })\n },\n stopFetchingChats ({ commit }) {\n commit('setChatListFetcher', { fetcher: undefined })\n },\n fetchChats ({ dispatch, rootState, commit }, params = {}) {\n return rootState.api.backendInteractor.chats()\n .then(({ chats }) => {\n dispatch('addNewChats', { chats })\n return chats\n })\n },\n addNewChats (store, { chats }) {\n const { commit, dispatch, rootGetters } = store\n const newChatMessageSideEffects = (chat) => {\n maybeShowChatNotification(store, chat)\n }\n commit('addNewUsers', chats.map(k => k.account).filter(k => k))\n commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n },\n updateChat ({ commit }, { chat }) {\n commit('updateChat', { chat })\n },\n\n // Opened Chats\n startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n dispatch('setCurrentChatFetcher', { fetcher })\n },\n setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n commit('setCurrentChatFetcher', { fetcher })\n },\n addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n dispatch('addNewUsers', [chat.account])\n },\n addChatMessages ({ commit }, value) {\n commit('addChatMessages', { commit, ...value })\n },\n resetChatNewMessageCount ({ commit }, value) {\n commit('resetChatNewMessageCount', value)\n },\n clearCurrentChat ({ rootState, commit, dispatch }, value) {\n commit('setCurrentChatId', { chatId: undefined })\n commit('setCurrentChatFetcher', { fetcher: undefined })\n },\n readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n dispatch('resetChatNewMessageCount')\n commit('readChat', { id, lastReadId })\n\n if (isNewMessage) {\n rootState.api.backendInteractor.readChat({ id, lastReadId })\n }\n },\n deleteChatMessage ({ rootState, commit }, value) {\n rootState.api.backendInteractor.deleteChatMessage(value)\n commit('deleteChatMessage', { commit, ...value })\n },\n resetChats ({ commit, dispatch }) {\n dispatch('clearCurrentChat')\n commit('resetChats', { commit })\n },\n clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n commit('clearOpenedChats', { commit })\n },\n handleMessageError ({ commit }, value) {\n commit('handleMessageError', { commit, ...value })\n },\n cullOlderMessages ({ commit }, chatId) {\n commit('cullOlderMessages', chatId)\n }\n },\n mutations: {\n setChatListFetcher (state, { commit, fetcher }) {\n const prevFetcher = state.chatListFetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.chatListFetcher = fetcher && fetcher()\n },\n setCurrentChatFetcher (state, { fetcher }) {\n const prevFetcher = state.fetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.fetcher = fetcher && fetcher()\n },\n addOpenedChat (state, { _dispatch, chat }) {\n state.currentChatId = chat.id\n state.openedChats[chat.id] = chat\n\n if (!state.openedChatMessageServices[chat.id]) {\n state.openedChatMessageServices[chat.id] = chatService.empty(chat.id)\n }\n },\n setCurrentChatId (state, { chatId }) {\n state.currentChatId = chatId\n },\n addNewChats (state, { chats, newChatMessageSideEffects }) {\n chats.forEach((updatedChat) => {\n const chat = getChatById(state, updatedChat.id)\n\n if (chat) {\n const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n if (isNewMessage && chat.unread) {\n newChatMessageSideEffects(updatedChat)\n }\n } else {\n state.chatList.data.push(updatedChat)\n state.chatList.idStore[updatedChat.id] = updatedChat\n }\n })\n },\n updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n const chat = getChatById(state, updatedChat.id)\n if (chat) {\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n }\n if (!chat) { state.chatList.data.unshift(updatedChat) }\n state.chatList.idStore[updatedChat.id] = updatedChat\n },\n deleteChat (state, { _dispatch, id, _rootGetters }) {\n state.chats.data = state.chats.data.filter(conversation =>\n conversation.last_status.id !== id\n )\n state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n },\n resetChats (state, { commit }) {\n state.chatList = emptyChatList()\n state.currentChatId = null\n commit('setChatListFetcher', { fetcher: undefined })\n for (const chatId in state.openedChats) {\n chatService.clear(state.openedChatMessageServices[chatId])\n delete state.openedChats[chatId]\n delete state.openedChatMessageServices[chatId]\n }\n },\n setChatsLoading (state, { value }) {\n state.chats.loading = value\n },\n addChatMessages (state, { chatId, messages, updateMaxId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n }\n },\n deleteChatMessage (state, { chatId, messageId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.deleteMessage(chatMessageService, messageId)\n }\n },\n resetChatNewMessageCount (state, _value) {\n const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n chatService.resetNewMessageCount(chatMessageService)\n },\n // Used when a connection loss occurs\n clearOpenedChats (state) {\n const currentChatId = state.currentChatId\n for (const chatId in state.openedChats) {\n if (currentChatId !== chatId) {\n chatService.clear(state.openedChatMessageServices[chatId])\n delete state.openedChats[chatId]\n delete state.openedChatMessageServices[chatId]\n }\n }\n },\n readChat (state, { id, lastReadId }) {\n state.lastReadMessageId = lastReadId\n const chat = getChatById(state, id)\n if (chat) {\n chat.unread = 0\n }\n },\n handleMessageError (state, { chatId, fakeId, isRetry }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n },\n cullOlderMessages (state, chatId) {\n chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n }\n }\n}\n\nexport default chats\n","const FETCH_ANNOUNCEMENT_INTERVAL_MS = 1000 * 60 * 5\n\nexport const defaultState = {\n announcements: [],\n supportsAnnouncements: true,\n fetchAnnouncementsTimer: undefined\n}\n\nexport const mutations = {\n setAnnouncements (state, announcements) {\n state.announcements = announcements\n },\n setAnnouncementRead (state, { id, read }) {\n const index = state.announcements.findIndex(a => a.id === id)\n\n if (index < 0) {\n return\n }\n\n state.announcements[index].read = read\n },\n setFetchAnnouncementsTimer (state, timer) {\n state.fetchAnnouncementsTimer = timer\n },\n setSupportsAnnouncements (state, supportsAnnouncements) {\n state.supportsAnnouncements = supportsAnnouncements\n }\n}\n\nexport const getters = {\n unreadAnnouncementCount (state, _getters, rootState) {\n if (!rootState.users.currentUser) {\n return 0\n }\n\n const unread = state.announcements.filter(announcement => !(announcement.inactive || announcement.read))\n return unread.length\n }\n}\n\nconst announcements = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchAnnouncements (store) {\n if (!store.state.supportsAnnouncements) {\n return Promise.resolve()\n }\n\n const currentUser = store.rootState.users.currentUser\n const isAdmin = currentUser && currentUser.privileges.includes('announcements_manage_announcements')\n\n const getAnnouncements = async () => {\n if (!isAdmin) {\n return store.rootState.api.backendInteractor.fetchAnnouncements()\n }\n\n const all = await store.rootState.api.backendInteractor.adminFetchAnnouncements()\n const visible = await store.rootState.api.backendInteractor.fetchAnnouncements()\n const visibleObject = visible.reduce((a, c) => {\n a[c.id] = c\n return a\n }, {})\n const getWithinVisible = announcement => visibleObject[announcement.id]\n\n all.forEach(announcement => {\n const visibleAnnouncement = getWithinVisible(announcement)\n if (!visibleAnnouncement) {\n announcement.inactive = true\n } else {\n announcement.read = visibleAnnouncement.read\n }\n })\n\n return all\n }\n\n return getAnnouncements()\n .then(announcements => {\n store.commit('setAnnouncements', announcements)\n })\n .catch(error => {\n // If and only if backend does not support announcements, it would return 404.\n // In this case, silently ignores it.\n if (error && error.statusCode === 404) {\n store.commit('setSupportsAnnouncements', false)\n } else {\n throw error\n }\n })\n },\n markAnnouncementAsRead (store, id) {\n return store.rootState.api.backendInteractor.dismissAnnouncement({ id })\n .then(() => {\n store.commit('setAnnouncementRead', { id, read: true })\n })\n },\n startFetchingAnnouncements (store) {\n if (store.state.fetchAnnouncementsTimer) {\n return\n }\n\n const interval = setInterval(() => store.dispatch('fetchAnnouncements'), FETCH_ANNOUNCEMENT_INTERVAL_MS)\n store.commit('setFetchAnnouncementsTimer', interval)\n\n return store.dispatch('fetchAnnouncements')\n },\n stopFetchingAnnouncements (store) {\n const interval = store.state.fetchAnnouncementsTimer\n store.commit('setFetchAnnouncementsTimer', undefined)\n clearInterval(interval)\n },\n postAnnouncement (store, { content, startsAt, endsAt, allDay }) {\n return store.rootState.api.backendInteractor.postAnnouncement({ content, startsAt, endsAt, allDay })\n .then(() => {\n return store.dispatch('fetchAnnouncements')\n })\n },\n editAnnouncement (store, { id, content, startsAt, endsAt, allDay }) {\n return store.rootState.api.backendInteractor.editAnnouncement({ id, content, startsAt, endsAt, allDay })\n .then(() => {\n return store.dispatch('fetchAnnouncements')\n })\n },\n deleteAnnouncement (store, id) {\n return store.rootState.api.backendInteractor.deleteAnnouncement({ id })\n .then(() => {\n return store.dispatch('fetchAnnouncements')\n })\n }\n }\n}\n\nexport default announcements\n","import merge from 'lodash.merge'\nimport localforage from 'localforage'\nimport { each, get, set, cloneDeep } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n paths.length === 0\n ? state\n : paths.reduce((substate, path) => {\n set(substate, path, get(state, path))\n return substate\n }, {})\n)\n\nconst saveImmedeatelyActions = [\n 'markNotificationsAsSeen',\n 'clearCurrentUser',\n 'setCurrentUser',\n 'setServerSideStorage',\n 'setHighlight',\n 'setOption',\n 'setClientData',\n 'setToken',\n 'clearToken'\n]\n\nconst defaultStorage = (() => {\n return localforage\n})()\n\nexport default function createPersistedState ({\n key = 'vuex-lz',\n paths = [],\n getState = (key, storage) => {\n const value = storage.getItem(key)\n return value\n },\n setState = (key, state, storage) => {\n if (!loaded) {\n console.log('waiting for old state to be loaded...')\n return Promise.resolve()\n } else {\n return storage.setItem(key, state)\n }\n },\n reducer = defaultReducer,\n storage = defaultStorage,\n subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n return getState(key, storage).then((savedState) => {\n return store => {\n try {\n if (savedState !== null && typeof savedState === 'object') {\n // build user cache\n const usersState = savedState.users || {}\n usersState.usersObject = {}\n const users = usersState.users || []\n each(users, (user) => { usersState.usersObject[user.id] = user })\n savedState.users = usersState\n\n store.replaceState(\n merge({}, store.state, savedState)\n )\n }\n loaded = true\n } catch (e) {\n console.log(\"Couldn't load state\")\n console.error(e)\n loaded = true\n }\n subscriber(store)((mutation, state) => {\n try {\n if (saveImmedeatelyActions.includes(mutation.type)) {\n setState(key, reducer(cloneDeep(state), paths), storage)\n .then(success => {\n if (typeof success !== 'undefined') {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { success })\n }\n }\n }, error => {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { error })\n }\n })\n }\n } catch (e) {\n console.log(\"Couldn't persist state:\")\n console.log(e)\n }\n })\n }\n })\n}\n","export default (store) => {\n store.subscribe((mutation, state) => {\n const vapidPublicKey = state.instance.vapidPublicKey\n const webPushNotification = state.config.webPushNotifications\n const permission = state.interface.notificationPermission === 'granted'\n const user = state.users.currentUser\n\n const isUserMutation = mutation.type === 'setCurrentUser'\n const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n if (user && vapidPublicKey && permission && webPushNotification) {\n return store.dispatch('registerPushNotifications')\n } else if (isUserConfigMutation && !webPushNotification) {\n return store.dispatch('unregisterPushNotifications')\n }\n }\n })\n}\n","<template>\n <div\n id=\"app-loaded\"\n :style=\"bgStyle\"\n >\n <div\n id=\"app_bg_wrapper\"\n class=\"app-bg-wrapper\"\n />\n <MobileNav v-if=\"layoutType === 'mobile'\" />\n <DesktopNav\n v-else\n :class=\"navClasses\"\n />\n <Notifications v-if=\"currentUser\" />\n <div\n id=\"content\"\n class=\"app-layout container\"\n :class=\"classes\"\n >\n <div class=\"underlay\" />\n <div\n id=\"sidebar\"\n class=\"column -scrollable\"\n :class=\"{ '-show-scrollbar': showScrollbars }\"\n >\n <user-panel />\n <template v-if=\"layoutType !== 'mobile'\">\n <nav-panel />\n <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n <features-panel v-if=\"!currentUser && showFeaturesPanel\" />\n <who-to-follow-panel v-if=\"currentUser && suggestionsEnabled\" />\n <div id=\"notifs-sidebar\" />\n </template>\n </div>\n <main\n id=\"main-scroller\"\n class=\"column main\"\n :class=\"{ '-full-height': isChats || isListEdit }\"\n >\n <div\n v-if=\"!currentUser\"\n class=\"login-hint panel panel-default\"\n >\n <router-link\n :to=\"{ name: 'login' }\"\n class=\"panel-body\"\n >\n {{ $t(\"login.hint\") }}\n </router-link>\n </div>\n <router-view />\n </main>\n <div\n id=\"notifs-column\"\n class=\"column -scrollable\"\n :class=\"{ '-show-scrollbar': showScrollbars }\"\n />\n </div>\n <MediaModal />\n <shout-panel\n v-if=\"currentUser && shout && !hideShoutbox\"\n :floating=\"true\"\n class=\"floating-shout mobile-hidden\"\n :class=\"{ '-left': shoutboxPosition }\"\n />\n <MobilePostStatusButton />\n <UserReportingModal />\n <PostStatusModal />\n <EditStatusModal v-if=\"editingAvailable\" />\n <StatusHistoryModal v-if=\"editingAvailable\" />\n <SettingsModal />\n <UpdateNotification />\n <GlobalNoticeList />\n </div>\n</template>\n\n<script src=\"./App.js\"></script>\n<style lang=\"scss\" src=\"./App.scss\"></style>\n","<template>\n <aside class=\"user-panel\">\n <div\n v-if=\"signedIn\"\n key=\"user-panel-signed\"\n class=\"panel panel-default signed-in\"\n >\n <UserCard\n :user-id=\"user.id\"\n :hide-bio=\"true\"\n rounded=\"top\"\n />\n <PostStatusForm />\n </div>\n <auth-form\n v-else\n key=\"user-panel\"\n />\n </aside>\n</template>\n\n<script src=\"./user_panel.js\"></script>\n\n<style lang=\"scss\">\n.user-panel .signed-in {\n overflow: visible;\n z-index: 10;\n}\n</style>\n","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.login') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <template v-if=\"isPasswordAuth\">\n <div class=\"form-group\">\n <label for=\"username\">{{ $t('login.username') }}</label>\n <input\n id=\"username\"\n v-model=\"user.username\"\n :disabled=\"loggingIn\"\n class=\"form-control\"\n :placeholder=\"$t('login.placeholder')\"\n >\n </div>\n <div class=\"form-group\">\n <label for=\"password\">{{ $t('login.password') }}</label>\n <input\n id=\"password\"\n ref=\"passwordInput\"\n v-model=\"user.password\"\n :disabled=\"loggingIn\"\n class=\"form-control\"\n type=\"password\"\n >\n </div>\n <div class=\"form-group\">\n <router-link :to=\"{name: 'password-reset'}\">\n {{ $t('password_reset.forgot_password') }}\n </router-link>\n </div>\n </template>\n\n <div\n v-if=\"isTokenAuth\"\n class=\"form-group\"\n >\n <p>{{ $t('login.description') }}</p>\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <router-link\n v-if=\"registrationOpen\"\n :to=\"{name: 'registration'}\"\n class=\"register\"\n >\n {{ $t('login.register') }}\n </router-link>\n </div>\n <button\n :disabled=\"loggingIn\"\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('login.login') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./login_form.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.login-form {\n display: flex;\n flex-direction: column;\n padding: 0.6em;\n\n .btn {\n min-height: 2em;\n width: 10em;\n }\n\n .register {\n flex: 1 1;\n }\n\n .login-bottom {\n margin-top: 1em;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0.5em 0.6em;\n line-height: 24px;\n }\n\n .form-bottom {\n display: flex;\n padding: 0.5em;\n height: 32px;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n}\n</style>\n","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst LoginForm = {\n data: () => ({\n user: {},\n error: false\n }),\n computed: {\n isPasswordAuth () { return this.requiredPassword },\n isTokenAuth () { return this.requiredToken },\n ...mapState({\n registrationOpen: state => state.instance.registrationOpen,\n instance: state => state.instance,\n loggingIn: state => state.users.loggingIn,\n oauth: state => state.oauth\n }),\n ...mapGetters(\n 'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n )\n },\n methods: {\n ...mapMutations('authFlow', ['requireMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n submit () {\n this.isTokenAuth ? this.submitToken() : this.submitPassword()\n },\n submitToken () {\n const { clientId, clientSecret } = this.oauth\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n\n oauthApi.getOrCreateApp(data)\n .then((app) => { oauthApi.login({ ...app, ...data }) })\n },\n submitPassword () {\n const { clientId } = this.oauth\n const data = {\n clientId,\n oauth: this.oauth,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n this.error = false\n\n oauthApi.getOrCreateApp(data).then((app) => {\n oauthApi.getTokenWithCredentials(\n {\n ...app,\n instance: data.instance,\n username: this.user.username,\n password: this.user.password\n }\n ).then((result) => {\n if (result.error) {\n if (result.error === 'mfa_required') {\n this.requireMFA({ settings: result })\n } else if (result.identifier === 'password_reset_required') {\n this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n } else {\n this.error = result.error\n this.focusOnPasswordInput()\n }\n return\n }\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n })\n },\n clearError () { this.error = false },\n focusOnPasswordInput () {\n const passwordInput = this.$refs.passwordInput\n passwordInput.focus()\n passwordInput.setSelectionRange(0, passwordInput.value.length)\n }\n }\n}\n\nexport default LoginForm\n","import { render } from \"./login_form.vue?vue&type=template&id=508f3ec3\"\nimport script from \"./login_form.js?vue&type=script&lang=js\"\nexport * from \"./login_form.js?vue&type=script&lang=js\"\n\nimport \"./login_form.vue?vue&type=style&index=0&id=508f3ec3&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.heading.recovery') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"form-group\">\n <label for=\"code\">{{ $t('login.recovery_code') }}</label>\n <input\n id=\"code\"\n v-model=\"code\"\n class=\"form-control\"\n >\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"requireTOTP\"\n >\n {{ $t('login.enter_two_factor_code') }}\n </button>\n <br>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"abortMFA\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <button\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('general.verify') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n<script src=\"./recovery_form.js\"></script>\n","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst mfa = {\n verifyOTPCode,\n verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyRecoveryCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","import { render } from \"./recovery_form.vue?vue&type=template&id=e18da610\"\nimport script from \"./recovery_form.js?vue&type=script&lang=js\"\nexport * from \"./recovery_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"login panel panel-default\">\n <!-- Default panel contents -->\n\n <div class=\"panel-heading\">\n {{ $t('login.heading.totp') }}\n </div>\n\n <div class=\"panel-body\">\n <form\n class=\"login-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"form-group\">\n <label for=\"code\">\n {{ $t('login.authentication_code') }}\n </label>\n <input\n id=\"code\"\n v-model=\"code\"\n class=\"form-control\"\n >\n </div>\n\n <div class=\"form-group\">\n <div class=\"login-bottom\">\n <div>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"requireRecovery\"\n >\n {{ $t('login.enter_recovery_code') }}\n </button>\n <br>\n <button\n class=\"button-unstyled -link\"\n type=\"button\"\n @click.prevent=\"abortMFA\"\n >\n {{ $t('general.cancel') }}\n </button>\n </div>\n <button\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('general.verify') }}\n </button>\n </div>\n </div>\n </form>\n </div>\n\n <div\n v-if=\"error\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n size=\"lg\"\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n </div>\n</template>\n<script src=\"./totp_form.js\"></script>\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyOTPCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","import { render } from \"./totp_form.vue?vue&type=template&id=6fb04413\"\nimport script from \"./totp_form.js?vue&type=script&lang=js\"\nexport * from \"./totp_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { h, resolveComponent } from 'vue'\nimport LoginForm from '../login_form/login_form.vue'\nimport MFARecoveryForm from '../mfa_form/recovery_form.vue'\nimport MFATOTPForm from '../mfa_form/totp_form.vue'\nimport { mapGetters } from 'vuex'\n\nconst AuthForm = {\n name: 'AuthForm',\n render () {\n return h(resolveComponent(this.authForm))\n },\n computed: {\n authForm () {\n if (this.requiredTOTP) { return 'MFATOTPForm' }\n if (this.requiredRecovery) { return 'MFARecoveryForm' }\n return 'LoginForm'\n },\n ...mapGetters('authFlow', ['requiredTOTP', 'requiredRecovery'])\n },\n components: {\n MFARecoveryForm,\n MFATOTPForm,\n LoginForm\n }\n}\n\nexport default AuthForm\n","import AuthForm from '../auth_form/auth_form.js'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport { mapState } from 'vuex'\n\nconst UserPanel = {\n computed: {\n signedIn () { return this.user },\n ...mapState({ user: state => state.users.currentUser })\n },\n components: {\n AuthForm,\n PostStatusForm,\n UserCard\n }\n}\n\nexport default UserPanel\n","import { render } from \"./user_panel.vue?vue&type=template&id=1a2cb8e9\"\nimport script from \"./user_panel.js?vue&type=script&lang=js\"\nexport * from \"./user_panel.js?vue&type=script&lang=js\"\n\nimport \"./user_panel.vue?vue&type=style&index=0&id=1a2cb8e9&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"NavPanel\">\n <div class=\"panel panel-default\">\n <div\n v-if=\"!forceExpand\"\n class=\"panel-heading nav-panel-heading\"\n >\n <NavigationPins :limit=\"6\" />\n <div class=\"spacer\" />\n <button\n class=\"button-unstyled\"\n @click=\"toggleCollapse\"\n >\n <FAIcon\n class=\"navigation-chevron\"\n fixed-width\n :icon=\"collapsed ? 'chevron-down' : 'chevron-up'\"\n />\n </button>\n </div>\n <ul\n v-if=\"!collapsed || forceExpand\"\n class=\"panel-body\"\n >\n <NavigationEntry\n v-if=\"currentUser || !privateMode\"\n :show-pin=\"false\"\n :item=\"{ icon: 'stream', label: 'nav.timelines' }\"\n :aria-expanded=\"showTimelines ? 'true' : 'false'\"\n @click=\"toggleTimelines\"\n >\n <FAIcon\n class=\"timelines-chevron\"\n fixed-width\n :icon=\"showTimelines ? 'chevron-up' : 'chevron-down'\"\n />\n </NavigationEntry>\n <div\n v-show=\"showTimelines\"\n class=\"timelines-background\"\n >\n <div class=\"timelines\">\n <NavigationEntry\n v-for=\"item in timelinesItems\"\n :key=\"item.name\"\n :show-pin=\"editMode || forceEditMode\"\n :item=\"item\"\n />\n </div>\n </div>\n <NavigationEntry\n v-if=\"currentUser\"\n :show-pin=\"false\"\n :item=\"{ icon: 'list', label: 'nav.lists' }\"\n :aria-expanded=\"showLists ? 'true' : 'false'\"\n @click=\"toggleLists\"\n >\n <router-link\n :title=\"$t('lists.manage_lists')\"\n class=\"extra-button\"\n :to=\"{ name: 'lists' }\"\n @click.stop\n >\n <FAIcon\n class=\"extra-button\"\n fixed-width\n icon=\"wrench\"\n />\n </router-link>\n <FAIcon\n class=\"timelines-chevron\"\n fixed-width\n :icon=\"showLists ? 'chevron-up' : 'chevron-down'\"\n />\n </NavigationEntry>\n <div\n v-show=\"showLists\"\n class=\"timelines-background\"\n >\n <ListsMenuContent\n :show-pin=\"editMode || forceEditMode\"\n class=\"timelines\"\n />\n </div>\n <NavigationEntry\n v-for=\"item in rootItems\"\n :key=\"item.name\"\n :show-pin=\"editMode || forceEditMode\"\n :item=\"item\"\n />\n <NavigationEntry\n v-if=\"!forceEditMode && currentUser\"\n :show-pin=\"false\"\n :item=\"{ label: editMode ? $t('nav.edit_finish') : $t('nav.edit_pinned'), icon: editMode ? 'check' : 'wrench' }\"\n @click=\"toggleEditMode\"\n />\n </ul>\n </div>\n </div>\n</template>\n\n<script src=\"./nav_panel.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.NavPanel {\n .panel {\n overflow: hidden;\n box-shadow: var(--panelShadow);\n }\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n li {\n position: relative;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n > li {\n &:first-child .menu-item {\n border-top-right-radius: $fallback--panelRadius;\n border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-top-left-radius: $fallback--panelRadius;\n border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child .menu-item {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n }\n\n li:last-child {\n border: none;\n }\n\n .navigation-chevron {\n margin-left: 0.8em;\n margin-right: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-chevron {\n margin-left: 0.8em;\n font-size: 1.1em;\n }\n\n .timelines-background {\n padding: 0 0 0 0.6em;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n }\n\n .timelines {\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n }\n\n .nav-panel-heading {\n // breaks without a unit\n // stylelint-disable-next-line length-zero-no-unit\n --panel-heading-height-padding: 0px;\n }\n}\n</style>\n","<template>\n <OptionalRouterLink\n v-slot=\"{ isActive, href, navigate } = {}\"\n ass=\"ass\"\n :to=\"routeTo\"\n >\n <li\n class=\"NavigationEntry menu-item\"\n :class=\"{ '-active': isActive }\"\n v-bind=\"$attrs\"\n >\n <component\n :is=\"routeTo ? 'a' : 'button'\"\n class=\"main-link button-unstyled\"\n :href=\"href\"\n @click=\"navigate\"\n >\n <span>\n <FAIcon\n v-if=\"item.icon\"\n fixed-width\n class=\"fa-scale-110 menu-icon\"\n :icon=\"item.icon\"\n />\n </span>\n <span\n v-if=\"item.iconLetter\"\n class=\"icon iconLetter fa-scale-110 menu-icon\"\n >{{ item.iconLetter }}\n </span>\n <span class=\"label\">\n {{ item.labelRaw || $t(item.label) }}\n </span>\n </component>\n <slot />\n <div\n v-if=\"item.badgeGetter && getters[item.badgeGetter]\"\n class=\"badge badge-notification\"\n >\n {{ getters[item.badgeGetter] }}\n </div>\n <button\n v-if=\"showPin && currentUser\"\n type=\"button\"\n class=\"button-unstyled extra-button\"\n :title=\"$t(isPinned ? 'general.unpin' : 'general.pin' )\"\n :aria-pressed=\"!!isPinned\"\n @click.stop.prevent=\"togglePin(item.name)\"\n >\n <FAIcon\n v-if=\"showPin && currentUser\"\n fixed-width\n class=\"fa-scale-110\"\n :class=\"{ 'veryfaint': !isPinned(item.name) }\"\n :transform=\"!isPinned(item.name) ? 'rotate-45' : ''\"\n icon=\"thumbtack\"\n />\n </button>\n </li>\n </OptionalRouterLink>\n</template>\n\n<script src=\"./navigation_entry.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.NavigationEntry {\n display: flex;\n box-sizing: border-box;\n align-items: baseline;\n height: 3.5em;\n line-height: 3.5em;\n padding: 0 1em;\n width: 100%;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n .timelines-chevron {\n margin-right: 0;\n }\n\n .main-link {\n flex: 1;\n }\n\n .menu-icon {\n margin-right: 0.8em;\n }\n\n .extra-button {\n width: 3em;\n text-align: center;\n\n &:last-child {\n margin-right: -0.8em;\n }\n }\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n .menu-icon {\n --icon: var(--text, $fallback--icon);\n }\n }\n\n &.-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n .menu-icon {\n --icon: var(--text, $fallback--icon);\n }\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n</style>\n","export const USERNAME_ROUTES = new Set([\n 'bookmarks',\n 'dms',\n 'interactions',\n 'notifications',\n 'chat',\n 'chats',\n 'user-profile'\n])\n\nexport const TIMELINES = {\n home: {\n route: 'friends',\n icon: 'home',\n label: 'nav.home_timeline',\n criteria: ['!private']\n },\n public: {\n route: 'public-timeline',\n anon: true,\n icon: 'users',\n label: 'nav.public_tl',\n criteria: ['!private']\n },\n twkn: {\n route: 'public-external-timeline',\n anon: true,\n icon: 'globe',\n label: 'nav.twkn',\n criteria: ['!private', 'federating']\n },\n bookmarks: {\n route: 'bookmarks',\n icon: 'bookmark',\n label: 'nav.bookmarks'\n },\n favorites: {\n routeObject: { name: 'user-profile', query: { tab: 'favorites' } },\n icon: 'star',\n label: 'user_card.favorites'\n },\n dms: {\n route: 'dms',\n icon: 'envelope',\n label: 'nav.dms'\n }\n}\n\nexport const ROOT_ITEMS = {\n interactions: {\n route: 'interactions',\n icon: 'bell',\n label: 'nav.interactions'\n },\n chats: {\n route: 'chats',\n icon: 'comments',\n label: 'nav.chats',\n badgeGetter: 'unreadChatCount',\n criteria: ['chats']\n },\n friendRequests: {\n route: 'friend-requests',\n icon: 'user-plus',\n label: 'nav.friend_requests',\n criteria: ['lockedUser'],\n badgeGetter: 'followRequestCount'\n },\n about: {\n route: 'about',\n anon: true,\n icon: 'info-circle',\n label: 'nav.about'\n },\n announcements: {\n route: 'announcements',\n icon: 'bullhorn',\n label: 'nav.announcements',\n badgeGetter: 'unreadAnnouncementCount',\n criteria: ['announcements']\n }\n}\n\nexport function routeTo (item, currentUser) {\n if (!item.route && !item.routeObject) return null\n\n let route\n\n if (item.routeObject) {\n route = item.routeObject\n } else {\n route = { name: (item.anon || currentUser) ? item.route : item.anonRoute }\n }\n\n if (USERNAME_ROUTES.has(route.name)) {\n route.params = { username: currentUser.screen_name, name: currentUser.screen_name }\n }\n\n return route\n}\n","<template>\n <!-- eslint-disable vue/no-multiple-template-root -->\n <router-link\n v-if=\"to\"\n v-slot=\"props\"\n :to=\"to\"\n custom\n >\n <slot\n v-bind=\"props\"\n />\n </router-link>\n <slot\n v-else\n v-bind=\"{}\"\n />\n</template>\n\n<script>\nexport default {\n props: ['to']\n}\n</script>\n","import { render } from \"./optional_router_link.vue?vue&type=template&id=0ec30c00\"\nimport script from \"./optional_router_link.vue?vue&type=script&lang=js\"\nexport * from \"./optional_router_link.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport { routeTo } from 'src/components/navigation/navigation.js'\nimport OptionalRouterLink from 'src/components/optional_router_link/optional_router_link.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faThumbtack } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faThumbtack)\n\nconst NavigationEntry = {\n props: ['item', 'showPin'],\n components: {\n OptionalRouterLink\n },\n methods: {\n isPinned (value) {\n return this.pinnedItems.has(value)\n },\n togglePin (value) {\n if (this.isPinned(value)) {\n this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value })\n } else {\n this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value })\n }\n this.$store.dispatch('pushServerSideStorage')\n }\n },\n computed: {\n routeTo () {\n return routeTo(this.item, this.currentUser)\n },\n getters () {\n return this.$store.getters\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems)\n })\n }\n}\n\nexport default NavigationEntry\n","import { render } from \"./navigation_entry.vue?vue&type=template&id=de2c2c50\"\nimport script from \"./navigation_entry.js?vue&type=script&lang=js\"\nexport * from \"./navigation_entry.js?vue&type=script&lang=js\"\n\nimport \"./navigation_entry.vue?vue&type=style&index=0&id=de2c2c50&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export const filterNavigation = (list = [], { hasChats, hasAnnouncements, isFederating, isPrivate, currentUser }) => {\n return list.filter(({ criteria, anon, anonRoute }) => {\n const set = new Set(criteria || [])\n if (!isFederating && set.has('federating')) return false\n if (!currentUser && isPrivate && set.has('!private')) return false\n if (!currentUser && !(anon || anonRoute)) return false\n if ((!currentUser || !currentUser.locked) && set.has('lockedUser')) return false\n if (!hasChats && set.has('chats')) return false\n if (!hasAnnouncements && set.has('announcements')) return false\n return true\n })\n}\n\nexport const getListEntries = state => state.lists.allLists.map(list => ({\n name: 'list-' + list.id,\n routeObject: { name: 'lists-timeline', params: { id: list.id } },\n labelRaw: list.title,\n iconLetter: list.title[0]\n}))\n","import { mapState } from 'vuex'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport { getListEntries } from 'src/components/navigation/filter.js'\n\nexport const ListsMenuContent = {\n props: [\n 'showPin'\n ],\n components: {\n NavigationEntry\n },\n computed: {\n ...mapState({\n lists: getListEntries,\n currentUser: state => state.users.currentUser,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n })\n }\n}\n\nexport default ListsMenuContent\n","import { render } from \"./lists_menu_content.vue?vue&type=template&id=24f15238\"\nimport script from \"./lists_menu_content.js?vue&type=script&lang=js\"\nexport * from \"./lists_menu_content.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <ul>\n <NavigationEntry\n v-for=\"item in lists\"\n :key=\"item.name\"\n :show-pin=\"showPin\"\n :item=\"item\"\n />\n </ul>\n</template>\n\n<script src=\"./lists_menu_content.js\"></script>\n","<template>\n <span class=\"NavigationPins\">\n <router-link\n v-for=\"item in pinnedList\"\n :key=\"item.name\"\n class=\"pinned-item\"\n :to=\"getRouteTo(item)\"\n :title=\"item.labelRaw || $t(item.label)\"\n >\n <FAIcon\n v-if=\"item.icon\"\n fixed-width\n :icon=\"item.icon\"\n />\n <span\n v-if=\"item.iconLetter\"\n class=\"iconLetter fa-scale-110 fa-old-padding\"\n >{{ item.iconLetter }}</span>\n <div\n v-if=\"item.badgeGetter && getters[item.badgeGetter]\"\n class=\"alert-dot\"\n />\n </router-link>\n </span>\n</template>\n\n<script src=\"./navigation_pins.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.NavigationPins {\n display: flex;\n flex-wrap: wrap;\n overflow: hidden;\n height: 100%;\n\n .alert-dot {\n border-radius: 100%;\n height: 0.5em;\n width: 0.5em;\n position: absolute;\n right: calc(50% - 0.75em);\n top: calc(50% - 0.5em);\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .pinned-item {\n position: relative;\n flex: 1 0 3em;\n min-width: 2em;\n text-align: center;\n overflow: visible;\n box-sizing: border-box;\n height: 100%;\n\n & .svg-inline--fa,\n & .iconLetter {\n margin: 0;\n }\n\n &.router-link-active {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n border-bottom: 4px solid;\n\n & .svg-inline--fa,\n & .iconLetter {\n color: inherit;\n }\n }\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport { TIMELINES, ROOT_ITEMS, routeTo } from 'src/components/navigation/navigation.js'\nimport { getListEntries, filterNavigation } from 'src/components/navigation/filter.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList\n)\n\nconst NavPanel = {\n props: ['limit'],\n methods: {\n getRouteTo (item) {\n return routeTo(item, this.currentUser)\n }\n },\n computed: {\n getters () {\n return this.$store.getters\n },\n ...mapState({\n lists: getListEntries,\n currentUser: state => state.users.currentUser,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating,\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n supportsAnnouncements: state => state.announcements.supportsAnnouncements,\n pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems)\n }),\n pinnedList () {\n if (!this.currentUser) {\n return filterNavigation([\n { ...TIMELINES.public, name: 'public' },\n { ...TIMELINES.twkn, name: 'twkn' },\n { ...ROOT_ITEMS.about, name: 'about' }\n ],\n {\n hasChats: this.pleromaChatMessagesAvailable,\n hasAnnouncements: this.supportsAnnouncements,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n })\n }\n return filterNavigation(\n [\n ...Object\n .entries({ ...TIMELINES })\n .filter(([k]) => this.pinnedItems.has(k))\n .map(([k, v]) => ({ ...v, name: k })),\n ...this.lists.filter((k) => this.pinnedItems.has(k.name)),\n ...Object\n .entries({ ...ROOT_ITEMS })\n .filter(([k]) => this.pinnedItems.has(k))\n .map(([k, v]) => ({ ...v, name: k }))\n ],\n {\n hasChats: this.pleromaChatMessagesAvailable,\n hasAnnouncements: this.supportsAnnouncements,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n ).slice(0, this.limit)\n }\n }\n}\n\nexport default NavPanel\n","import { render } from \"./navigation_pins.vue?vue&type=template&id=61dbea24\"\nimport script from \"./navigation_pins.js?vue&type=script&lang=js\"\nexport * from \"./navigation_pins.js?vue&type=script&lang=js\"\n\nimport \"./navigation_pins.vue?vue&type=style&index=0&id=61dbea24&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ListsMenuContent from 'src/components/lists_menu/lists_menu_content.vue'\nimport { mapState, mapGetters } from 'vuex'\nimport { TIMELINES, ROOT_ITEMS } from 'src/components/navigation/navigation.js'\nimport { filterNavigation } from 'src/components/navigation/filter.js'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport NavigationPins from 'src/components/navigation/navigation_pins.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList,\n faBullhorn\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream,\n faList,\n faBullhorn\n)\nconst NavPanel = {\n props: ['forceExpand', 'forceEditMode'],\n created () {\n },\n components: {\n ListsMenuContent,\n NavigationEntry,\n NavigationPins,\n Checkbox\n },\n data () {\n return {\n editMode: false,\n showTimelines: false,\n showLists: false,\n timelinesList: Object.entries(TIMELINES).map(([k, v]) => ({ ...v, name: k })),\n rootList: Object.entries(ROOT_ITEMS).map(([k, v]) => ({ ...v, name: k }))\n }\n },\n methods: {\n toggleTimelines () {\n this.showTimelines = !this.showTimelines\n },\n toggleLists () {\n this.showLists = !this.showLists\n },\n toggleEditMode () {\n this.editMode = !this.editMode\n },\n toggleCollapse () {\n this.$store.commit('setPreference', { path: 'simple.collapseNav', value: !this.collapsed })\n this.$store.dispatch('pushServerSideStorage')\n },\n isPinned (item) {\n return this.pinnedItems.has(item)\n },\n togglePin (item) {\n if (this.isPinned(item)) {\n this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value: item })\n } else {\n this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value: item })\n }\n this.$store.dispatch('pushServerSideStorage')\n }\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating,\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n supportsAnnouncements: state => state.announcements.supportsAnnouncements,\n pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems),\n collapsed: state => state.serverSideStorage.prefsStorage.simple.collapseNav\n }),\n timelinesItems () {\n return filterNavigation(\n Object\n .entries({ ...TIMELINES })\n .map(([k, v]) => ({ ...v, name: k })),\n {\n hasChats: this.pleromaChatMessagesAvailable,\n hasAnnouncements: this.supportsAnnouncements,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n )\n },\n rootItems () {\n return filterNavigation(\n Object\n .entries({ ...ROOT_ITEMS })\n .map(([k, v]) => ({ ...v, name: k })),\n {\n hasChats: this.pleromaChatMessagesAvailable,\n hasAnnouncements: this.supportsAnnouncements,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n )\n },\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n }\n}\n\nexport default NavPanel\n","import { render } from \"./nav_panel.vue?vue&type=template&id=7c761001\"\nimport script from \"./nav_panel.js?vue&type=script&lang=js\"\nexport * from \"./nav_panel.js?vue&type=script&lang=js\"\n\nimport \"./nav_panel.vue?vue&type=style&index=0&id=7c761001&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"instance-specific-panel\">\n <div class=\"panel panel-default\">\n <div class=\"panel-body\">\n <!-- eslint-disable vue/no-v-html -->\n <div v-html=\"instanceSpecificPanelContent\" />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./instance_specific_panel.js\"></script>\n","const InstanceSpecificPanel = {\n computed: {\n instanceSpecificPanelContent () {\n return this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default InstanceSpecificPanel\n","import { render } from \"./instance_specific_panel.vue?vue&type=template&id=707b4e95\"\nimport script from \"./instance_specific_panel.js?vue&type=script&lang=js\"\nexport * from \"./instance_specific_panel.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"features-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background base04\">\n <div class=\"title\">\n {{ $t('features_panel.title') }}\n </div>\n </div>\n <div class=\"panel-body features-panel\">\n <ul>\n <li v-if=\"shout\">\n {{ $t('features_panel.shout') }}\n </li>\n <li v-if=\"pleromaChatMessages\">\n {{ $t('features_panel.pleroma_chat_messages') }}\n </li>\n <li v-if=\"gopher\">\n {{ $t('features_panel.gopher') }}\n </li>\n <li v-if=\"whoToFollow\">\n {{ $t('features_panel.who_to_follow') }}\n </li>\n <li v-if=\"mediaProxy\">\n {{ $t('features_panel.media_proxy') }}\n </li>\n <li>{{ $t('features_panel.scope_options') }}</li>\n <li>{{ $t('features_panel.text_limit') }} = {{ textlimit }}</li>\n <li>{{ $t('features_panel.upload_limit') }} = {{ uploadlimit.num }} {{ $t('upload.file_size_units.' + uploadlimit.unit) }}</li>\n </ul>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./features_panel.js\"></script>\n\n<style lang=\"scss\">\n .features-panel li {\n line-height: 24px;\n }\n</style>\n","import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst FeaturesPanel = {\n computed: {\n shout: function () { return this.$store.state.instance.shoutAvailable },\n pleromaChatMessages: function () { return this.$store.state.instance.pleromaChatMessagesAvailable },\n gopher: function () { return this.$store.state.instance.gopherAvailable },\n whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },\n mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },\n minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },\n textlimit: function () { return this.$store.state.instance.textlimit },\n uploadlimit: function () { return fileSizeFormatService.fileSizeFormat(this.$store.state.instance.uploadlimit) }\n }\n}\n\nexport default FeaturesPanel\n","import { render } from \"./features_panel.vue?vue&type=template&id=76defdfa\"\nimport script from \"./features_panel.js?vue&type=script&lang=js\"\nexport * from \"./features_panel.js?vue&type=script&lang=js\"\n\nimport \"./features_panel.vue?vue&type=style&index=0&id=76defdfa&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"who-to-follow-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background base04\">\n <div class=\"title\">\n {{ $t('who_to_follow.who_to_follow') }}\n </div>\n </div>\n <div class=\"who-to-follow\">\n <p\n v-for=\"user in usersToFollow\"\n :key=\"user.id\"\n class=\"who-to-follow-items\"\n >\n <img :src=\"user.img\">\n <router-link :to=\"userProfileLink(user.id, user.name)\">\n {{ user.name }}\n </router-link><br>\n </p>\n <p class=\"who-to-follow-more\">\n <router-link :to=\"{ name: 'who-to-follow' }\">\n {{ $t('who_to_follow.more') }}\n </router-link>\n </p>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./who_to_follow_panel.js\"></script>\n\n<style lang=\"scss\">\n .who-to-follow * {\n vertical-align: middle;\n }\n\n .who-to-follow img {\n width: 32px;\n height: 32px;\n }\n\n .who-to-follow {\n padding: 0 1em;\n margin: 0;\n }\n\n .who-to-follow-items {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0;\n margin: 1em 0;\n }\n\n .who-to-follow-more {\n padding: 0;\n margin: 1em 0;\n text-align: center;\n }\n</style>\n","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n const shuffled = shuffle(reply)\n\n panel.usersToFollow.forEach((toFollow, index) => {\n const user = shuffled[index]\n const img = user.avatar || this.$store.state.instance.defaultAvatar\n const name = user.acct\n\n toFollow.img = img\n toFollow.name = name\n\n panel.$store.state.api.backendInteractor.fetchUser({ id: name })\n .then((externalUser) => {\n if (!externalUser.error) {\n panel.$store.commit('addNewUsers', [externalUser])\n toFollow.id = externalUser.id\n }\n })\n })\n}\n\nfunction getWhoToFollow (panel) {\n const credentials = panel.$store.state.users.currentUser.credentials\n if (credentials) {\n panel.usersToFollow.forEach(toFollow => {\n toFollow.name = 'Loading...'\n })\n apiService.suggestions({ credentials })\n .then((reply) => {\n showWhoToFollow(panel, reply)\n })\n }\n}\n\nconst WhoToFollowPanel = {\n data: () => ({\n usersToFollow: []\n }),\n computed: {\n user: function () {\n return this.$store.state.users.currentUser.screen_name\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n }\n },\n methods: {\n userProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n user: function (user, oldUser) {\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n },\n mounted:\n function () {\n this.usersToFollow = new Array(3).fill().map(x => (\n {\n img: this.$store.state.instance.defaultAvatar,\n name: '',\n id: 0\n }\n ))\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n}\n\nexport default WhoToFollowPanel\n","import { render } from \"./who_to_follow_panel.vue?vue&type=template&id=f150b2ba\"\nimport script from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\n\nimport \"./who_to_follow_panel.vue?vue&type=style&index=0&id=f150b2ba&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"!collapsed || !floating\"\n class=\"shout-panel\"\n >\n <div class=\"panel panel-default\">\n <div\n class=\"panel-heading timeline-heading\"\n :class=\"{ 'shout-heading': floating }\"\n @click.stop.prevent=\"togglePanel\"\n >\n <div class=\"title\">\n {{ $t('shoutbox.title') }}\n <FAIcon\n v-if=\"floating\"\n icon=\"times\"\n class=\"close-icon\"\n />\n </div>\n </div>\n <div class=\"shout-window\">\n <div\n v-for=\"message in messages\"\n :key=\"message.id\"\n class=\"shout-message\"\n >\n <span class=\"shout-avatar\">\n <img :src=\"message.author.avatar\">\n </span>\n <div class=\"shout-content\">\n <router-link\n class=\"shout-name\"\n :to=\"userProfileLink(message.author)\"\n >\n {{ message.author.username }}\n </router-link>\n <br>\n <span class=\"shout-text\">\n {{ message.text }}\n </span>\n </div>\n </div>\n </div>\n <div class=\"shout-input\">\n <textarea\n v-model=\"currentMessage\"\n class=\"shout-input-textarea\"\n rows=\"1\"\n @keyup.enter=\"submit(currentMessage)\"\n />\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"shout-panel\"\n >\n <div class=\"panel panel-default\">\n <div\n class=\"panel-heading -stub timeline-heading shout-heading\"\n @click.stop.prevent=\"togglePanel\"\n >\n <div class=\"title\">\n <FAIcon\n class=\"icon\"\n icon=\"bullhorn\"\n />\n {{ $t('shoutbox.title') }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./shout_panel.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.floating-shout {\n position: fixed;\n bottom: 0.5em;\n z-index: var(--ZI_popovers);\n max-width: 25em;\n\n &.-left {\n left: 0.5em;\n }\n\n &:not(.-left) {\n right: 0.5em;\n }\n}\n\n.shout-panel {\n .shout-heading {\n cursor: pointer;\n\n .icon {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n margin-right: 0.5em;\n }\n\n .title {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n }\n\n .shout-window {\n overflow-y: auto;\n overflow-x: hidden;\n max-height: 20em;\n }\n\n .shout-window-container {\n height: 100%;\n }\n\n .shout-message {\n display: flex;\n padding: 0.2em 0.5em;\n }\n\n .shout-avatar {\n img {\n height: 24px;\n width: 24px;\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n margin-right: 0.5em;\n margin-top: 0.25em;\n }\n }\n\n .shout-input {\n display: flex;\n\n textarea {\n flex: 1;\n margin: 0.6em;\n min-height: 3.5em;\n resize: none;\n }\n }\n\n .shout-panel {\n .title {\n display: flex;\n justify-content: space-between;\n }\n }\n}\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBullhorn,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBullhorn,\n faTimes\n)\n\nconst shoutPanel = {\n props: ['floating'],\n data () {\n return {\n currentMessage: '',\n channel: null,\n collapsed: true\n }\n },\n computed: {\n messages () {\n return this.$store.state.shout.messages\n }\n },\n methods: {\n submit (message) {\n this.$store.state.shout.channel.push('new_msg', { text: message }, 10000)\n this.currentMessage = ''\n },\n togglePanel () {\n this.collapsed = !this.collapsed\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n messages (newVal) {\n const scrollEl = this.$el.querySelector('.chat-window')\n if (!scrollEl) return\n if (scrollEl.scrollTop + scrollEl.offsetHeight + 20 > scrollEl.scrollHeight) {\n this.$nextTick(() => {\n if (!scrollEl) return\n scrollEl.scrollTop = scrollEl.scrollHeight - scrollEl.offsetHeight\n })\n }\n }\n }\n}\n\nexport default shoutPanel\n","import { render } from \"./shout_panel.vue?vue&type=template&id=48f55c04\"\nimport script from \"./shout_panel.js?vue&type=script&lang=js\"\nexport * from \"./shout_panel.js?vue&type=script&lang=js\"\n\nimport \"./shout_panel.vue?vue&type=style&index=0&id=48f55c04&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"showing\"\n class=\"media-modal-view\"\n @backdropClicked=\"hideIfNotSwiped\"\n >\n <SwipeClick\n v-if=\"type === 'image'\"\n ref=\"swipeClick\"\n class=\"modal-image-container\"\n :direction=\"swipeDirection\"\n :threshold=\"swipeThreshold\"\n :disable-click-threshold=\"swipeDisableClickThreshold\"\n @preview-requested=\"handleSwipePreview\"\n @swipe-finished=\"handleSwipeEnd\"\n @swipeless-clicked=\"hide\"\n >\n <PinchZoom\n ref=\"pinchZoom\"\n class=\"modal-image-container-inner\"\n selector=\".modal-image\"\n reach-min-scale-strategy=\"reset\"\n stop-propagate-handled=\"stop-propgate-handled\"\n :allow-pan-min-scale=\"pinchZoomMinScale\"\n :min-scale=\"pinchZoomMinScale\"\n :reset-to-min-scale-limit=\"pinchZoomScaleResetLimit\"\n >\n <img\n :class=\"{ loading }\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n @load=\"onImageLoaded\"\n >\n </PinchZoom>\n </SwipeClick>\n <VideoAttachment\n v-if=\"type === 'video'\"\n class=\"modal-image\"\n :attachment=\"currentMedia\"\n :controls=\"true\"\n />\n <audio\n v-if=\"type === 'audio'\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n controls\n />\n <Flash\n v-if=\"type === 'flash'\"\n class=\"modal-image\"\n :src=\"currentMedia.url\"\n :alt=\"currentMedia.description\"\n :title=\"currentMedia.description\"\n />\n <button\n v-if=\"canNavigate\"\n :title=\"$t('media_modal.previous')\"\n class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev\"\n @click.stop.prevent=\"goPrev\"\n >\n <FAIcon\n class=\"button-icon arrow-icon\"\n icon=\"chevron-left\"\n />\n </button>\n <button\n v-if=\"canNavigate\"\n :title=\"$t('media_modal.next')\"\n class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--next\"\n @click.stop.prevent=\"goNext\"\n >\n <FAIcon\n class=\"button-icon arrow-icon\"\n icon=\"chevron-right\"\n />\n </button>\n <button\n class=\"modal-view-button modal-view-button-hide\"\n :title=\"$t('media_modal.hide')\"\n @click.stop.prevent=\"hide\"\n >\n <FAIcon\n class=\"button-icon\"\n icon=\"times\"\n />\n </button>\n\n <span\n v-if=\"description\"\n class=\"description\"\n >\n {{ description }}\n </span>\n <span\n class=\"counter\"\n >\n {{ $tc('media_modal.counter', currentIndex + 1, { current: currentIndex + 1, total: media.length }) }}\n </span>\n <span\n v-if=\"loading\"\n class=\"loading-spinner\"\n >\n <FAIcon\n spin\n icon=\"circle-notch\"\n size=\"5x\"\n />\n </span>\n </Modal>\n</template>\n\n<script src=\"./media_modal.js\"></script>\n\n<style lang=\"scss\">\n$modal-view-button-icon-height: 3em;\n$modal-view-button-icon-half-height: calc(#{$modal-view-button-icon-height} / 2);\n$modal-view-button-icon-width: 3em;\n$modal-view-button-icon-margin: 0.5em;\n\n.media-modal-view {\n @keyframes media-fadein {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n .modal-image-container {\n display: flex;\n overflow: hidden;\n align-items: center;\n flex-direction: column;\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 100%;\n flex-grow: 1;\n justify-content: center;\n\n &-inner {\n width: 100%;\n height: 100%;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n }\n }\n\n .description,\n .counter {\n /* Hardcoded since background is also hardcoded */\n color: white;\n margin-top: 1em;\n text-shadow: 0 0 10px black, 0 0 10px black;\n padding: 0.2em 2em;\n }\n\n .description {\n flex: 0 0 auto;\n overflow-y: auto;\n min-height: 1em;\n max-width: 500px;\n max-height: 9.5em;\n word-break: break-all;\n }\n\n .modal-image {\n max-width: 100%;\n max-height: 100%;\n image-orientation: from-image; // NOTE: only FF supports this\n animation: 0.1s cubic-bezier(0.7, 0, 1, 0.6) media-fadein;\n\n &.loading {\n opacity: 0.5;\n }\n }\n\n .loading-spinner {\n width: 100%;\n height: 100%;\n position: absolute;\n pointer-events: none;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n color: white;\n }\n }\n\n .modal-view-button {\n border: 0;\n padding: 0;\n opacity: 0;\n box-shadow: none;\n background: none;\n appearance: none;\n overflow: visible;\n cursor: pointer;\n transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n\n .button-icon {\n position: absolute;\n height: $modal-view-button-icon-height;\n width: $modal-view-button-icon-width;\n font-size: 1rem;\n line-height: $modal-view-button-icon-height;\n color: #fff;\n text-align: center;\n background-color: rgb(0 0 0 / 30%);\n }\n }\n\n .modal-view-button-arrow {\n position: absolute;\n display: block;\n top: 50%;\n margin-top: $modal-view-button-icon-half-height;\n width: $modal-view-button-icon-width;\n height: $modal-view-button-icon-height;\n\n .arrow-icon {\n position: absolute;\n top: 0;\n line-height: $modal-view-button-icon-height;\n color: #fff;\n text-align: center;\n background-color: rgb(0 0 0 / 30%);\n }\n\n &--prev {\n left: 0;\n\n .arrow-icon {\n left: $modal-view-button-icon-margin;\n }\n }\n\n &--next {\n right: 0;\n\n .arrow-icon {\n right: $modal-view-button-icon-margin;\n }\n }\n }\n\n .modal-view-button-hide {\n position: absolute;\n top: 0;\n right: 0;\n\n .button-icon {\n top: $modal-view-button-icon-margin;\n right: $modal-view-button-icon-margin;\n }\n }\n}\n\n.modal-view.media-modal-view {\n z-index: var(--ZI_media_modal);\n flex-direction: column;\n\n .modal-view-button-arrow,\n .modal-view-button-hide {\n opacity: 0.75;\n\n &:focus,\n &:hover {\n outline: none;\n box-shadow: none;\n }\n\n &:hover {\n opacity: 1;\n }\n }\n\n overflow: hidden;\n}\n</style>\n","import PinchZoom from '@kazvmoe-infra/pinch-zoom-element'\n\nexport default {\n methods: {\n setTransform ({ scale, x, y }) {\n this.$el.setTransform({ scale, x, y })\n }\n },\n created () {\n // Make lint happy\n (() => PinchZoom)()\n }\n}\n","import { render } from \"./pinch_zoom.vue?vue&type=template&id=4608b5bf\"\nimport script from \"./pinch_zoom.js?vue&type=script&lang=js\"\nexport * from \"./pinch_zoom.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <pinch-zoom\n class=\"pinch-zoom-parent\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n >\n <slot />\n </pinch-zoom>\n</template>\n\n<script src=\"./pinch_zoom.js\"></script>\n","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst BUTTON_LEFT = 0\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchCoord = touch => [touch.screenX, touch.screenY]\n\nconst touchEventCoord = e => touchCoord(e.touches[0])\n\nconst pointerEventCoord = e => [e.clientX, e.clientY]\n\nconst vectorLength = v => Math.sqrt(v[0] * v[0] + v[1] * v[1])\n\nconst perpendicular = v => [v[1], -v[0]]\n\nconst dotProduct = (v1, v2) => v1[0] * v2[0] + v1[1] * v2[1]\n\nconst project = (v1, v2) => {\n const scalar = (dotProduct(v1, v2) / dotProduct(v2, v2))\n return [scalar * v2[0], scalar * v2[1]]\n}\n\n// direction: either use the constants above or an arbitrary 2d vector.\n// threshold: how many Px to move from touch origin before checking if the\n// callback should be called.\n// divergentTolerance: a scalar for much of divergent direction we tolerate when\n// above threshold. for example, with 1.0 we only call the callback if\n// divergent component of delta is < 1.0 * direction component of delta.\nconst swipeGesture = (direction, onSwipe, threshold = 30, perpendicularTolerance = 1.0) => {\n return {\n direction,\n onSwipe,\n threshold,\n perpendicularTolerance,\n _startPos: [0, 0],\n _swiping: false\n }\n}\n\nconst beginSwipe = (event, gesture) => {\n gesture._startPos = touchEventCoord(event)\n gesture._swiping = true\n}\n\nconst updateSwipe = (event, gesture) => {\n if (!gesture._swiping) return\n // movement too small\n const delta = deltaCoord(gesture._startPos, touchEventCoord(event))\n if (vectorLength(delta) < gesture.threshold) return\n // movement is opposite from direction\n if (dotProduct(delta, gesture.direction) < 0) return\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, gesture.direction)\n const perpendicularDir = perpendicular(gesture.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * gesture.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) return\n\n gesture.onSwipe()\n gesture._swiping = false\n}\n\nclass SwipeAndClickGesture {\n // swipePreviewCallback(offsets: Array[Number])\n // offsets: the offset vector which the underlying component should move, from the starting position\n // swipeEndCallback(sign: 0|-1|1)\n // sign: if the swipe does not meet the threshold, 0\n // if the swipe meets the threshold in the positive direction, 1\n // if the swipe meets the threshold in the negative direction, -1\n constructor ({\n direction,\n // swipeStartCallback\n swipePreviewCallback,\n swipeEndCallback,\n swipeCancelCallback,\n swipelessClickCallback,\n threshold = 30,\n perpendicularTolerance = 1.0,\n disableClickThreshold = 1\n }) {\n const nop = () => {}\n this.direction = direction\n this.swipePreviewCallback = swipePreviewCallback || nop\n this.swipeEndCallback = swipeEndCallback || nop\n this.swipeCancelCallback = swipeCancelCallback || nop\n this.swipelessClickCallback = swipelessClickCallback || nop\n this.threshold = typeof threshold === 'function' ? threshold : () => threshold\n this.disableClickThreshold = typeof disableClickThreshold === 'function' ? disableClickThreshold : () => disableClickThreshold\n this.perpendicularTolerance = perpendicularTolerance\n this._reset()\n }\n\n _reset () {\n this._startPos = [0, 0]\n this._pointerId = -1\n this._swiping = false\n this._swiped = false\n this._preventNextClick = false\n }\n\n start (event) {\n // Only handle left click\n if (event.button !== BUTTON_LEFT) {\n return\n }\n\n this._startPos = pointerEventCoord(event)\n this._pointerId = event.pointerId\n this._swiping = true\n this._swiped = false\n }\n\n move (event) {\n if (this._swiping && this._pointerId === event.pointerId) {\n this._swiped = true\n\n const coord = pointerEventCoord(event)\n const delta = deltaCoord(this._startPos, coord)\n\n this.swipePreviewCallback(delta)\n }\n }\n\n cancel (event) {\n if (!this._swiping || this._pointerId !== event.pointerId) {\n return\n }\n\n this.swipeCancelCallback()\n }\n\n end (event) {\n if (!this._swiping) {\n return\n }\n\n if (this._pointerId !== event.pointerId) {\n return\n }\n\n this._swiping = false\n\n // movement too small\n const coord = pointerEventCoord(event)\n const delta = deltaCoord(this._startPos, coord)\n\n const sign = (() => {\n if (vectorLength(delta) < this.threshold()) {\n return 0\n }\n // movement is opposite from direction\n const isPositive = dotProduct(delta, this.direction) > 0\n\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, this.direction)\n const perpendicularDir = perpendicular(this.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * this.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) {\n return 0\n }\n\n return isPositive ? 1 : -1\n })()\n\n if (this._swiped) {\n this.swipeEndCallback(sign)\n }\n this._reset()\n // Only a mouse will fire click event when\n // the end point is far from the starting point\n // so for other kinds of pointers do not check\n // whether we have swiped\n if (vectorLength(delta) >= this.disableClickThreshold() && event.pointerType === 'mouse') {\n this._preventNextClick = true\n }\n }\n\n click (event) {\n if (!this._preventNextClick) {\n this.swipelessClickCallback()\n }\n this._reset()\n }\n}\n\nconst GestureService = {\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n swipeGesture,\n beginSwipe,\n updateSwipe,\n SwipeAndClickGesture\n}\n\nexport default GestureService\n","import GestureService from '../../services/gesture_service/gesture_service'\n\n/**\n * props:\n * direction: a vector that indicates the direction of the intended swipe\n * threshold: the minimum distance in pixels the swipe has moved on `direction'\n * for swipe-finished() to have a non-zero sign\n * disableClickThreshold: the minimum distance in pixels for the swipe to\n * not trigger a click\n * perpendicularTolerance: see gesture_service\n *\n * Events:\n * preview-requested(offsets)\n * Emitted when the pointer has moved.\n * offsets: the offsets from the start of the swipe to the current cursor position\n *\n * swipe-canceled()\n * Emitted when the swipe has been canceled due to a pointercancel event.\n *\n * swipe-finished(sign: 0|-1|1)\n * Emitted when the swipe has finished.\n * sign: if the swipe does not meet the threshold, 0\n * if the swipe meets the threshold in the positive direction, 1\n * if the swipe meets the threshold in the negative direction, -1\n *\n * swipeless-clicked()\n * Emitted when there is a click without swipe.\n * This and swipe-finished() cannot be emitted for the same pointerup event.\n */\nconst SwipeClick = {\n props: {\n direction: {\n type: Array\n },\n threshold: {\n type: Function,\n default: () => 30\n },\n disableClickThreshold: {\n type: Function,\n default: () => 1\n },\n perpendicularTolerance: {\n type: Number,\n default: 1.0\n }\n },\n methods: {\n handlePointerDown (event) {\n this.$gesture.start(event)\n },\n handlePointerMove (event) {\n this.$gesture.move(event)\n },\n handlePointerUp (event) {\n this.$gesture.end(event)\n },\n handlePointerCancel (event) {\n this.$gesture.cancel(event)\n },\n handleNativeClick (event) {\n this.$gesture.click(event)\n },\n preview (offsets) {\n this.$emit('preview-requested', offsets)\n },\n end (sign) {\n this.$emit('swipe-finished', sign)\n },\n click () {\n this.$emit('swipeless-clicked')\n },\n cancel () {\n this.$emit('swipe-canceled')\n }\n },\n created () {\n this.$gesture = new GestureService.SwipeAndClickGesture({\n direction: this.direction,\n threshold: this.threshold,\n disableClickThreshold: this.disableClickThreshold,\n perpendicularTolerance: this.perpendicularTolerance,\n swipePreviewCallback: this.preview,\n swipeEndCallback: this.end,\n swipeCancelCallback: this.cancel,\n swipelessClickCallback: this.click\n })\n }\n}\n\nexport default SwipeClick\n","import { render } from \"./swipe_click.vue?vue&type=template&id=4c0f684c\"\nimport script from \"./swipe_click.js?vue&type=script&lang=js\"\nexport * from \"./swipe_click.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-bind=\"$attrs\"\n @pointerdown=\"handlePointerDown\"\n @pointermove=\"handlePointerMove\"\n @pointerup=\"handlePointerUp\"\n @pointercancel=\"handlePointerCancel\"\n @click=\"handleNativeClick\"\n >\n <slot />\n </div>\n</template>\n\n<script src=\"./swipe_click.js\"></script>\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport PinchZoom from '../pinch_zoom/pinch_zoom.vue'\nimport SwipeClick from '../swipe_click/swipe_click.vue'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport Flash from 'src/components/flash/flash.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronLeft,\n faChevronRight,\n faCircleNotch,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronLeft,\n faChevronRight,\n faCircleNotch,\n faTimes\n)\n\nconst MediaModal = {\n components: {\n StillImage,\n VideoAttachment,\n PinchZoom,\n SwipeClick,\n Modal,\n Flash\n },\n data () {\n return {\n loading: false,\n swipeDirection: GestureService.DIRECTION_LEFT,\n swipeThreshold: () => {\n const considerableMoveRatio = 1 / 4\n return window.innerWidth * considerableMoveRatio\n },\n pinchZoomMinScale: 1,\n pinchZoomScaleResetLimit: 1.2\n }\n },\n computed: {\n showing () {\n return this.$store.state.mediaViewer.activated\n },\n media () {\n return this.$store.state.mediaViewer.media\n },\n description () {\n return this.currentMedia.description\n },\n currentIndex () {\n return this.$store.state.mediaViewer.currentIndex\n },\n currentMedia () {\n return this.media[this.currentIndex]\n },\n canNavigate () {\n return this.media.length > 1\n },\n type () {\n return this.currentMedia ? this.getType(this.currentMedia) : null\n },\n swipeDisableClickThreshold () {\n // If there is only one media, allow more mouse movements to close the modal\n // because there is less chance that the user wants to switch to another image\n return () => this.canNavigate ? 1 : 30\n }\n },\n methods: {\n getType (media) {\n return fileTypeService.fileType(media.mimetype)\n },\n hide () {\n // HACK: Closing immediately via a touch will cause the click\n // to be processed on the content below the overlay\n const transitionTime = 100 // ms\n setTimeout(() => {\n this.$store.dispatch('closeMediaViewer')\n }, transitionTime)\n },\n hideIfNotSwiped (event) {\n // If we have swiped over SwipeClick, do not trigger hide\n const comp = this.$refs.swipeClick\n if (!comp) {\n this.hide()\n } else {\n comp.$gesture.click(event)\n }\n },\n goPrev () {\n if (this.canNavigate) {\n const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n const newMedia = this.media[prevIndex]\n if (this.getType(newMedia) === 'image') {\n this.loading = true\n }\n this.$store.dispatch('setCurrentMedia', newMedia)\n }\n },\n goNext () {\n if (this.canNavigate) {\n const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n const newMedia = this.media[nextIndex]\n if (this.getType(newMedia) === 'image') {\n this.loading = true\n }\n this.$store.dispatch('setCurrentMedia', newMedia)\n }\n },\n onImageLoaded () {\n this.loading = false\n },\n handleSwipePreview (offsets) {\n this.$refs.pinchZoom.setTransform({ scale: 1, x: offsets[0], y: 0 })\n },\n handleSwipeEnd (sign) {\n this.$refs.pinchZoom.setTransform({ scale: 1, x: 0, y: 0 })\n if (sign > 0) {\n this.goNext()\n } else if (sign < 0) {\n this.goPrev()\n }\n },\n handleKeyupEvent (e) {\n if (this.showing && e.keyCode === 27) { // escape\n this.hide()\n }\n },\n handleKeydownEvent (e) {\n if (!this.showing) {\n return\n }\n\n if (e.keyCode === 39) { // arrow right\n this.goNext()\n } else if (e.keyCode === 37) { // arrow left\n this.goPrev()\n }\n }\n },\n mounted () {\n window.addEventListener('popstate', this.hide)\n document.addEventListener('keyup', this.handleKeyupEvent)\n document.addEventListener('keydown', this.handleKeydownEvent)\n },\n unmounted () {\n window.removeEventListener('popstate', this.hide)\n document.removeEventListener('keyup', this.handleKeyupEvent)\n document.removeEventListener('keydown', this.handleKeydownEvent)\n }\n}\n\nexport default MediaModal\n","import { render } from \"./media_modal.vue?vue&type=template&id=a080a8e6\"\nimport script from \"./media_modal.js?vue&type=script&lang=js\"\nexport * from \"./media_modal.js?vue&type=script&lang=js\"\n\nimport \"./media_modal.vue?vue&type=style&index=0&id=a080a8e6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"side-drawer-container\"\n :class=\"{ 'side-drawer-container-closed': closed, 'side-drawer-container-open': !closed }\"\n >\n <div\n class=\"side-drawer-darken\"\n :class=\"{ 'side-drawer-darken-closed': closed}\"\n />\n <div\n class=\"side-drawer\"\n :class=\"{'side-drawer-closed': closed}\"\n @touchstart=\"touchStart\"\n @touchmove=\"touchMove\"\n >\n <div\n class=\"side-drawer-heading\"\n @click=\"toggleDrawer\"\n >\n <UserCard\n v-if=\"currentUser\"\n :user-id=\"currentUser.id\"\n :hide-bio=\"true\"\n />\n <div\n v-else\n class=\"side-drawer-logo-wrapper\"\n >\n <img :src=\"logo\">\n <span v-if=\"!hideSitename\">{{ sitename }}</span>\n </div>\n </div>\n <ul>\n <li\n v-if=\"!currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'login' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-in-alt\"\n /> {{ $t(\"login.login\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser || !privateMode\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"timelinesRoute\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"home\"\n /> {{ $t(\"nav.timelines\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'lists' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"list\"\n /> {{ $t(\"nav.lists\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && pleromaChatMessagesAvailable\"\n @click=\"toggleDrawer\"\n >\n <router-link\n :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n style=\"position: relative;\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"comments\"\n /> {{ $t(\"nav.chats\") }}\n <span\n v-if=\"unreadChatCount\"\n class=\"badge badge-notification\"\n >\n {{ unreadChatCount }}\n </span>\n </router-link>\n </li>\n </ul>\n <ul v-if=\"currentUser\">\n <li @click=\"toggleDrawer\">\n <router-link :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bell\"\n /> {{ $t(\"nav.interactions\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser.locked\"\n @click=\"toggleDrawer\"\n >\n <router-link to=\"/friend-requests\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"user-plus\"\n /> {{ $t(\"nav.friend_requests\") }}\n <span\n v-if=\"followRequestCount > 0\"\n class=\"badge badge-notification\"\n >\n {{ followRequestCount }}\n </span>\n </router-link>\n </li>\n <li\n v-if=\"shout\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'shout-panel' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bullhorn\"\n /> {{ $t(\"shoutbox.title\") }}\n </router-link>\n </li>\n </ul>\n <ul>\n <li\n v-if=\"currentUser || !privateMode\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'search' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search\"\n /> {{ $t(\"nav.search\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && suggestionsEnabled\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'who-to-follow' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"user-plus\"\n /> {{ $t(\"nav.who_to_follow\") }}\n </router-link>\n </li>\n <li @click=\"toggleDrawer\">\n <button\n class=\"button-unstyled -link -fullwidth\"\n @click=\"openSettingsModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"cog\"\n /> {{ $t(\"settings.settings\") }}\n </button>\n </li>\n <li @click=\"toggleDrawer\">\n <router-link :to=\"{ name: 'about'}\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"info-circle\"\n /> {{ $t(\"nav.about\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser && currentUser.role === 'admin'\"\n @click=\"toggleDrawer\"\n >\n <button\n class=\"button-unstyled -link -fullwidth\"\n @click.stop=\"openAdminModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n /> {{ $t(\"nav.administration\") }}\n </button>\n </li>\n <li\n v-if=\"currentUser && supportsAnnouncements\"\n @click=\"toggleDrawer\"\n >\n <router-link\n :to=\"{ name: 'announcements' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bullhorn\"\n /> {{ $t(\"nav.announcements\") }}\n <span\n v-if=\"unreadAnnouncementCount\"\n class=\"badge badge-notification\"\n >\n {{ unreadAnnouncementCount }}\n </span>\n </router-link>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link :to=\"{ name: 'edit-navigation' }\">\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"compass\"\n /> {{ $t(\"nav.edit_nav_mobile\") }}\n </router-link>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <button\n class=\"button-unstyled -link -fullwidth\"\n @click=\"doLogout\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-out-alt\"\n /> {{ $t(\"login.logout\") }}\n </button>\n </li>\n </ul>\n </div>\n <div\n class=\"side-drawer-click-outside\"\n :class=\"{'side-drawer-click-outside-closed': closed}\"\n @click.stop.prevent=\"toggleDrawer\"\n />\n </div>\n</template>\n\n<script src=\"./side_drawer.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.side-drawer-container {\n position: fixed;\n z-index: var(--ZI_navbar);\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: stretch;\n transition-duration: 0s;\n transition-property: transform;\n}\n\n.side-drawer-container-open {\n transform: translate(0%);\n}\n\n.side-drawer-container-closed {\n transition-delay: 0.35s;\n transform: translate(-100%);\n}\n\n.side-drawer-darken {\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n position: fixed;\n z-index: -1;\n transition: 0.35s;\n transition-property: background-color;\n background-color: rgb(0 0 0 / 50%);\n}\n\n.side-drawer-darken-closed {\n background-color: rgb(0 0 0 / 0%);\n}\n\n.side-drawer-click-outside {\n flex: 1 1 100%;\n}\n\n.side-drawer {\n overflow-x: hidden;\n transition: 0.35s;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n transition-property: transform;\n margin: 0 0 0 -100px;\n padding: 0 0 1em 100px;\n width: 80%;\n max-width: 20em;\n flex: 0 0 80%;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--link;\n color: var(--popoverText, $fallback--link);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --icon: var(--popoverIcon, $fallback--icon);\n\n .badge {\n margin-left: 10px;\n }\n}\n\n.side-drawer-logo-wrapper {\n display: flex;\n align-items: center;\n padding: 0.85em;\n\n img {\n flex: none;\n height: 50px;\n margin-right: 0.85em;\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.side-drawer-click-outside-closed {\n flex: 0 0 0;\n}\n\n.side-drawer-closed {\n transform: translate(-100%);\n}\n\n.side-drawer-heading {\n background: transparent;\n flex-direction: column;\n align-items: stretch;\n display: flex;\n padding: 0;\n margin: 0;\n}\n\n.side-drawer ul {\n list-style: none;\n margin: 0;\n padding: 0;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.side-drawer ul:last-child {\n border: 0;\n}\n\n.side-drawer li {\n padding: 0;\n\n a,\n button {\n box-sizing: border-box;\n display: block;\n height: 3em;\n line-height: 3em;\n padding: 0 0.7em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuPopoverText, $fallback--text);\n\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { USERNAME_ROUTES } from 'src/components/navigation/navigation.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle,\n faCompass,\n faList\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle,\n faCompass,\n faList\n)\n\nconst SideDrawer = {\n props: ['logout'],\n data: () => ({\n closed: true,\n closeGesture: undefined\n }),\n created () {\n this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: { UserCard },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n shout () { return this.$store.state.shout.joined },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n },\n logo () {\n return this.$store.state.instance.logo\n },\n hideSitename () {\n return this.$store.state.instance.hideSitename\n },\n sitename () {\n return this.$store.state.instance.name\n },\n followRequestCount () {\n return this.$store.state.api.followRequests.length\n },\n privateMode () {\n return this.$store.state.instance.private\n },\n federating () {\n return this.$store.state.instance.federating\n },\n timelinesRoute () {\n let name\n if (this.$store.state.interface.lastTimeline) {\n name = this.$store.state.interface.lastTimeline\n }\n name = this.currentUser ? 'friends' : 'public-timeline'\n if (USERNAME_ROUTES.has(name)) {\n return { name, params: { username: this.currentUser.screen_name } }\n } else {\n return { name }\n }\n },\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n supportsAnnouncements: state => state.announcements.supportsAnnouncements\n }),\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n },\n methods: {\n toggleDrawer () {\n this.closed = !this.closed\n },\n doLogout () {\n this.logout()\n this.toggleDrawer()\n },\n touchStart (e) {\n GestureService.beginSwipe(e, this.closeGesture)\n },\n touchMove (e) {\n GestureService.updateSwipe(e, this.closeGesture)\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal', 'user')\n },\n openAdminModal () {\n this.$store.dispatch('openSettingsModal', 'admin')\n }\n }\n}\n\nexport default SideDrawer\n","import { render } from \"./side_drawer.vue?vue&type=template&id=0c55529b\"\nimport script from \"./side_drawer.js?vue&type=script&lang=js\"\nexport * from \"./side_drawer.js?vue&type=script&lang=js\"\n\nimport \"./side_drawer.vue?vue&type=style&index=0&id=0c55529b&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { debounce } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faPen\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faPen\n)\n\nconst HIDDEN_FOR_PAGES = new Set([\n 'chats',\n 'chat',\n 'lists-edit'\n])\n\nconst MobilePostStatusButton = {\n data () {\n return {\n hidden: false,\n scrollingDown: false,\n inputActive: false,\n oldScrollPos: 0,\n amountScrolled: 0\n }\n },\n created () {\n if (this.autohideFloatingPostButton) {\n this.activateFloatingPostButtonAutohide()\n }\n window.addEventListener('resize', this.handleOSK)\n },\n unmounted () {\n if (this.autohideFloatingPostButton) {\n this.deactivateFloatingPostButtonAutohide()\n }\n window.removeEventListener('resize', this.handleOSK)\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isHidden () {\n if (HIDDEN_FOR_PAGES.has(this.$route.name)) { return true }\n\n return this.autohideFloatingPostButton && (this.hidden || this.inputActive)\n },\n isPersistent () {\n return !!this.$store.getters.mergedConfig.alwaysShowNewPostButton\n },\n autohideFloatingPostButton () {\n return !!this.$store.getters.mergedConfig.autohideFloatingPostButton\n }\n },\n watch: {\n autohideFloatingPostButton: function (isEnabled) {\n if (isEnabled) {\n this.activateFloatingPostButtonAutohide()\n } else {\n this.deactivateFloatingPostButtonAutohide()\n }\n }\n },\n methods: {\n activateFloatingPostButtonAutohide () {\n window.addEventListener('scroll', this.handleScrollStart)\n window.addEventListener('scroll', this.handleScrollEnd)\n },\n deactivateFloatingPostButtonAutohide () {\n window.removeEventListener('scroll', this.handleScrollStart)\n window.removeEventListener('scroll', this.handleScrollEnd)\n },\n openPostForm () {\n this.$store.dispatch('openPostStatusModal')\n },\n handleOSK () {\n // This is a big hack: we're guessing from changed window sizes if the\n // on-screen keyboard is active or not. This is only really important\n // for phones in portrait mode and it's more important to show the button\n // in normal scenarios on all phones, than it is to hide it when the\n // keyboard is active.\n // Guesswork based on https://www.mydevice.io/#compare-devices\n\n // for example, iphone 4 and android phones from the same time period\n const smallPhone = window.innerWidth < 350\n const smallPhoneKbOpen = smallPhone && window.innerHeight < 345\n\n const biggerPhone = !smallPhone && window.innerWidth < 450\n const biggerPhoneKbOpen = biggerPhone && window.innerHeight < 560\n if (smallPhoneKbOpen || biggerPhoneKbOpen) {\n this.inputActive = true\n } else {\n this.inputActive = false\n }\n },\n handleScrollStart: debounce(function () {\n if (window.scrollY > this.oldScrollPos) {\n this.hidden = true\n } else {\n this.hidden = false\n }\n this.oldScrollPos = window.scrollY\n }, 100, { leading: true, trailing: false }),\n\n handleScrollEnd: debounce(function () {\n this.hidden = false\n this.oldScrollPos = window.scrollY\n }, 100, { leading: false, trailing: true })\n }\n}\n\nexport default MobilePostStatusButton\n","import { render } from \"./mobile_post_status_button.vue?vue&type=template&id=6c0a4c69\"\nimport script from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\nexport * from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\n\nimport \"./mobile_post_status_button.vue?vue&type=style&index=0&id=6c0a4c69&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n v-if=\"isLoggedIn\"\n class=\"MobilePostButton button-default new-status-button\"\n :class=\"{ 'hidden': isHidden, 'always-show': isPersistent }\"\n :title=\"$t('post_status.new_status')\"\n @click=\"openPostForm\"\n >\n <FAIcon icon=\"pen\" />\n </button>\n</template>\n\n<script src=\"./mobile_post_status_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.MobilePostButton {\n &.button-default {\n width: 5em;\n height: 5em;\n border-radius: 100%;\n position: fixed;\n bottom: 1.5em;\n right: 1.5em;\n // TODO: this needs its own color, it has to stand out enough and link color\n // is not very optimal for this particular use.\n background-color: $fallback--fg;\n background-color: var(--btn, $fallback--fg);\n display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 2px 2px rgb(0 0 0 / 30%), 0 4px 6px rgb(0 0 0 / 30%);\n z-index: 10;\n transition: 0.35s transform;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n }\n\n &.hidden {\n transform: translateY(150%);\n }\n\n svg {\n font-size: 1.5em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n@media all and (min-width: 801px) {\n .new-status-button:not(.always-show) {\n display: none;\n }\n}\n\n</style>\n","<template>\n <div\n class=\"MobileNav\"\n >\n <nav\n id=\"nav\"\n class=\"mobile-nav\"\n @click=\"scrollToTop()\"\n >\n <div class=\"item\">\n <button\n class=\"button-unstyled mobile-nav-button\"\n :title=\"$t('nav.mobile_sidebar')\"\n :aria-expanaded=\"$refs.sideDrawer && !$refs.sideDrawer.closed\"\n @click.stop.prevent=\"toggleMobileSidebar()\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bars\"\n />\n <div\n v-if=\"(unreadChatCount && !chatsPinned) || unreadAnnouncementCount\"\n class=\"alert-dot\"\n />\n </button>\n <NavigationPins class=\"pins\" />\n </div> <div class=\"item right\">\n <button\n v-if=\"currentUser\"\n class=\"button-unstyled mobile-nav-button\"\n :title=\"unseenNotificationsCount ? $t('nav.mobile_notifications_unread_active') : $t('nav.mobile_notifications')\"\n @click.stop.prevent=\"openMobileNotifications()\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"bell\"\n />\n <div\n v-if=\"unseenNotificationsCount\"\n class=\"alert-dot\"\n />\n </button>\n </div>\n </nav>\n <aside\n v-if=\"currentUser\"\n class=\"mobile-notifications-drawer\"\n :class=\"{ '-closed': !notificationsOpen }\"\n @touchstart.stop=\"notificationsTouchStart\"\n @touchmove.stop=\"notificationsTouchMove\"\n >\n <div class=\"mobile-notifications-header\">\n <span class=\"title\">{{ $t('notifications.notifications') }}</span>\n <span class=\"spacer\" />\n <button\n v-if=\"notificationsAtTop\"\n class=\"button-unstyled mobile-nav-button\"\n :title=\"$t('general.scroll_to_top')\"\n @click.stop.prevent=\"scrollMobileNotificationsToTop\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon icon=\"arrow-up\" />\n <FAIcon\n icon=\"minus\"\n transform=\"up-7\"\n />\n </FALayers>\n </button>\n <button\n class=\"button-unstyled mobile-nav-button\"\n :title=\"$t('nav.mobile_notifications_close')\"\n @click.stop.prevent=\"closeMobileNotifications(true)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n <div\n id=\"mobile-notifications\"\n ref=\"mobileNotifications\"\n class=\"mobile-notifications\"\n @scroll=\"onScroll\"\n />\n </aside>\n <SideDrawer\n ref=\"sideDrawer\"\n :logout=\"logout\"\n />\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmLogout\"\n :title=\"$t('login.logout_confirm_title')\"\n :confirm-text=\"$t('login.logout_confirm_accept_button')\"\n :cancel-text=\"$t('login.logout_confirm_cancel_button')\"\n @accepted=\"doLogout\"\n @cancelled=\"hideConfirmLogout\"\n >\n {{ $t('login.logout_confirm') }}\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./mobile_nav.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.MobileNav {\n z-index: var(--ZI_navbar);\n\n .mobile-nav {\n display: grid;\n line-height: var(--navbar-height);\n grid-template-rows: 50px;\n grid-template-columns: 2fr auto;\n width: 100%;\n box-sizing: border-box;\n\n a {\n color: var(--topBarLink, $fallback--link);\n }\n }\n\n .mobile-inner-nav {\n width: 100%;\n display: flex;\n align-items: center;\n }\n\n .mobile-nav-button {\n display: inline-block;\n text-align: center;\n padding: 0 1em;\n position: relative;\n cursor: pointer;\n }\n\n .site-name {\n padding: 0 0.3em;\n display: inline-block;\n }\n\n .item {\n /* moslty just to get rid of extra whitespaces */\n display: flex;\n }\n\n .alert-dot {\n border-radius: 100%;\n height: 8px;\n width: 8px;\n position: absolute;\n left: calc(50% - 4px);\n top: calc(50% - 4px);\n margin-left: 6px;\n margin-top: -6px;\n background-color: $fallback--cRed;\n background-color: var(--badgeNotification, $fallback--cRed);\n }\n\n .mobile-notifications-drawer {\n width: 100%;\n height: 100vh;\n overflow-x: hidden;\n position: fixed;\n top: 0;\n left: 0;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n transition-property: transform;\n transition-duration: 0.25s;\n transform: translateX(0);\n z-index: var(--ZI_navbar);\n -webkit-overflow-scrolling: touch;\n\n &.-closed {\n transform: translateX(100%);\n box-shadow: none;\n }\n }\n\n .mobile-notifications-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n z-index: calc(var(--ZI_navbar) + 100);\n width: 100%;\n height: 50px;\n line-height: 50px;\n position: absolute;\n color: var(--topBarText);\n background-color: $fallback--fg;\n background-color: var(--topBar, $fallback--fg);\n box-shadow: 0 0 4px rgb(0 0 0 / 60%);\n box-shadow: var(--topBarShadow);\n\n .spacer {\n flex: 1;\n }\n\n .title {\n font-size: 1.3em;\n margin-left: 0.6em;\n }\n }\n\n .pins {\n flex: 1;\n\n .pinned-item {\n flex-grow: 1;\n }\n }\n\n .mobile-notifications {\n margin-top: 50px;\n width: 100vw;\n height: calc(100vh - var(--navbar-height));\n overflow-x: hidden;\n overflow-y: scroll;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .notifications {\n padding: 0;\n border-radius: 0;\n box-shadow: none;\n\n .panel {\n border-radius: 0;\n margin: 0;\n box-shadow: none;\n }\n\n .panel::after {\n border-radius: 0;\n }\n\n .panel .panel-heading {\n border-radius: 0;\n box-shadow: none;\n }\n }\n }\n\n .confirm-modal.dark-overlay {\n &::before {\n z-index: 3000;\n }\n\n .dialog-modal.panel {\n z-index: 3001;\n }\n }\n}\n\n</style>\n","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport NavigationPins from 'src/components/navigation/navigation_pins.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faBell,\n faBars,\n faArrowUp,\n faMinus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faBell,\n faBars,\n faArrowUp,\n faMinus\n)\n\nconst MobileNav = {\n components: {\n SideDrawer,\n Notifications,\n NavigationPins,\n ConfirmModal\n },\n data: () => ({\n notificationsCloseGesture: undefined,\n notificationsOpen: false,\n notificationsAtTop: true,\n showingConfirmLogout: false\n }),\n created () {\n this.notificationsCloseGesture = GestureService.swipeGesture(\n GestureService.DIRECTION_RIGHT,\n () => this.closeMobileNotifications(true),\n 50\n )\n },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n hideSitename () { return this.$store.state.instance.hideSitename },\n sitename () { return this.$store.state.instance.name },\n isChat () {\n return this.$route.name === 'chat'\n },\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount']),\n chatsPinned () {\n return new Set(this.$store.state.serverSideStorage.prefsStorage.collections.pinnedNavItems).has('chats')\n },\n shouldConfirmLogout () {\n return this.$store.getters.mergedConfig.modalOnLogout\n },\n ...mapGetters(['unreadChatCount'])\n },\n methods: {\n toggleMobileSidebar () {\n this.$refs.sideDrawer.toggleDrawer()\n },\n openMobileNotifications () {\n this.notificationsOpen = true\n },\n closeMobileNotifications (markRead) {\n if (this.notificationsOpen) {\n // make sure to mark notifs seen only when the notifs were open and not\n // from close-calls.\n this.notificationsOpen = false\n if (markRead) {\n this.markNotificationsAsSeen()\n }\n }\n },\n notificationsTouchStart (e) {\n GestureService.beginSwipe(e, this.notificationsCloseGesture)\n },\n notificationsTouchMove (e) {\n GestureService.updateSwipe(e, this.notificationsCloseGesture)\n },\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n scrollMobileNotificationsToTop () {\n this.$refs.mobileNotifications.scrollTo(0, 0)\n },\n showConfirmLogout () {\n this.showingConfirmLogout = true\n },\n hideConfirmLogout () {\n this.showingConfirmLogout = false\n },\n logout () {\n if (!this.shouldConfirmLogout) {\n this.doLogout()\n } else {\n this.showConfirmLogout()\n }\n },\n doLogout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n this.hideConfirmLogout()\n },\n markNotificationsAsSeen () {\n // this.$refs.notifications.markAsSeen()\n this.$store.dispatch('markNotificationsAsSeen')\n },\n onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {\n this.notificationsAtTop = scrollTop > 0\n if (scrollTop + clientHeight >= scrollHeight) {\n this.$refs.notifications.fetchOlderNotifications()\n }\n }\n },\n watch: {\n $route () {\n // handles closing notificaitons when you press any router-link on the\n // notifications.\n this.closeMobileNotifications()\n }\n }\n}\n\nexport default MobileNav\n","import { render } from \"./mobile_nav.vue?vue&type=template&id=06094f09\"\nimport script from \"./mobile_nav.js?vue&type=script&lang=js\"\nexport * from \"./mobile_nav.js?vue&type=script&lang=js\"\n\nimport \"./mobile_nav.vue?vue&type=style&index=0&id=06094f09&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <nav\n id=\"nav\"\n class=\"DesktopNav\"\n :class=\"{ '-logoLeft': logoLeft }\"\n @click=\"scrollToTop()\"\n >\n <div class=\"inner-nav\">\n <div class=\"item sitename\">\n <router-link\n v-if=\"!hideSitename\"\n class=\"site-name\"\n :to=\"{ name: 'root' }\"\n active-class=\"home\"\n >\n {{ sitename }}\n </router-link>\n </div>\n <router-link\n class=\"logo\"\n :to=\"{ name: 'root' }\"\n :style=\"logoBgStyle\"\n :title=\"sitename\"\n >\n <div\n class=\"mask\"\n :style=\"logoMaskStyle\"\n />\n <img\n :src=\"logo\"\n :style=\"logoStyle\"\n >\n </router-link>\n <div class=\"item right actions\">\n <search-bar\n v-if=\"currentUser || !privateMode\"\n @toggled=\"onSearchBarToggled\"\n @click.stop\n />\n <button\n class=\"button-unstyled nav-icon\"\n :title=\"$t('nav.preferences')\"\n @click.stop=\"openSettingsModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"cog\"\n />\n </button>\n <button\n v-if=\"currentUser && currentUser.role === 'admin'\"\n class=\"button-unstyled nav-icon\"\n target=\"_blank\"\n :title=\"$t('nav.administration')\"\n @click.stop=\"openAdminModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n />\n </button>\n <span class=\"spacer\" />\n <button\n v-if=\"currentUser\"\n class=\"button-unstyled nav-icon\"\n :title=\"$t('login.logout')\"\n @click.stop.prevent=\"logout\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-out-alt\"\n />\n </button>\n </div>\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmLogout\"\n :title=\"$t('login.logout_confirm_title')\"\n :confirm-text=\"$t('login.logout_confirm_accept_button')\"\n :cancel-text=\"$t('login.logout_confirm_cancel_button')\"\n @accepted=\"doLogout\"\n @cancelled=\"hideConfirmLogout\"\n >\n {{ $t('login.logout_confirm') }}\n </confirm-modal>\n </teleport>\n </nav>\n</template>\n<script src=\"./desktop_nav.js\"></script>\n\n<style src=\"./desktop_nav.scss\" lang=\"scss\"></style>\n","<template>\n <div\n class=\"SearchBar\"\n :class=\"{ '-expanded': !hidden }\"\n >\n <button\n v-if=\"hidden\"\n class=\"button-unstyled nav-icon\"\n :title=\"$t('nav.search')\"\n type=\"button\"\n :aria-expanded=\"!hidden\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </button>\n <template v-else>\n <input\n id=\"search-bar-input\"\n ref=\"searchInput\"\n v-model=\"searchTerm\"\n class=\"search-bar-input\"\n :placeholder=\"$t('nav.search')\"\n type=\"text\"\n @keyup.enter=\"find(searchTerm)\"\n >\n <button\n class=\"button-default search-button\"\n type=\"submit\"\n :title=\"$t('nav.search')\"\n @click=\"find(searchTerm)\"\n >\n <FAIcon\n fixed-width\n icon=\"search\"\n />\n </button>\n <button\n class=\"button-unstyled cancel-search\"\n type=\"button\"\n :title=\"$t('nav.search_close')\"\n :aria-expanded=\"!hidden\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n class=\"cancel-icon fa-scale-110 fa-old-padding\"\n />\n </button>\n <span class=\"spacer\" />\n <span class=\"spacer\" />\n </template>\n </div>\n</template>\n\n<script src=\"./search_bar.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.SearchBar {\n display: inline-flex;\n align-items: baseline;\n vertical-align: baseline;\n justify-content: flex-end;\n\n &.-expanded {\n width: 100%;\n }\n\n .search-bar-input,\n .search-button {\n height: 29px;\n }\n\n .search-bar-input {\n flex: 1 0 auto;\n }\n\n .cancel-search {\n height: 50px;\n }\n\n .cancel-icon {\n color: $fallback--text;\n color: var(--btnTopBarText, $fallback--text);\n }\n}\n\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faSearch\n)\n\nconst SearchBar = {\n data: () => ({\n searchTerm: undefined,\n hidden: true,\n error: false\n }),\n watch: {\n $route: function (route) {\n if (route.name === 'search') {\n this.searchTerm = route.query.query\n }\n }\n },\n methods: {\n find (searchTerm) {\n this.$router.push({ name: 'search', query: { query: searchTerm } })\n this.$refs.searchInput.focus()\n },\n toggleHidden () {\n this.hidden = !this.hidden\n this.$emit('toggled', this.hidden)\n this.$nextTick(() => {\n if (!this.hidden) {\n this.$refs.searchInput.focus()\n }\n })\n }\n }\n}\n\nexport default SearchBar\n","import { render } from \"./search_bar.vue?vue&type=template&id=3ff3b2d5\"\nimport script from \"./search_bar.js?vue&type=script&lang=js\"\nexport * from \"./search_bar.js?vue&type=script&lang=js\"\n\nimport \"./search_bar.vue?vue&type=style&index=0&id=3ff3b2d5&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import SearchBar from 'components/search_bar/search_bar.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nexport default {\n components: {\n SearchBar,\n ConfirmModal\n },\n data: () => ({\n searchBarHidden: true,\n supportsMask: window.CSS && window.CSS.supports && (\n window.CSS.supports('mask-size', 'contain') ||\n window.CSS.supports('-webkit-mask-size', 'contain') ||\n window.CSS.supports('-moz-mask-size', 'contain') ||\n window.CSS.supports('-ms-mask-size', 'contain') ||\n window.CSS.supports('-o-mask-size', 'contain')\n ),\n showingConfirmLogout: false\n }),\n computed: {\n enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n logoStyle () {\n return {\n visibility: this.enableMask ? 'hidden' : 'visible'\n }\n },\n logoMaskStyle () {\n return this.enableMask\n ? {\n 'mask-image': `url(${this.$store.state.instance.logo})`\n }\n : {\n 'background-color': this.enableMask ? '' : 'transparent'\n }\n },\n logoBgStyle () {\n return Object.assign({\n margin: `${this.$store.state.instance.logoMargin} 0`,\n opacity: this.searchBarHidden ? 1 : 0\n }, this.enableMask\n ? {}\n : {\n 'background-color': this.enableMask ? '' : 'transparent'\n })\n },\n logo () { return this.$store.state.instance.logo },\n sitename () { return this.$store.state.instance.name },\n hideSitename () { return this.$store.state.instance.hideSitename },\n logoLeft () { return this.$store.state.instance.logoLeft },\n currentUser () { return this.$store.state.users.currentUser },\n privateMode () { return this.$store.state.instance.private },\n shouldConfirmLogout () {\n return this.$store.getters.mergedConfig.modalOnLogout\n }\n },\n methods: {\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n showConfirmLogout () {\n this.showingConfirmLogout = true\n },\n hideConfirmLogout () {\n this.showingConfirmLogout = false\n },\n logout () {\n if (!this.shouldConfirmLogout) {\n this.doLogout()\n } else {\n this.showConfirmLogout()\n }\n },\n doLogout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n this.hideConfirmLogout()\n },\n onSearchBarToggled (hidden) {\n this.searchBarHidden = hidden\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal', 'user')\n },\n openAdminModal () {\n this.$store.dispatch('openSettingsModal', 'admin')\n }\n }\n}\n","import { render } from \"./desktop_nav.vue?vue&type=template&id=5dbfe449\"\nimport script from \"./desktop_nav.js?vue&type=script&lang=js\"\nexport * from \"./desktop_nav.js?vue&type=script&lang=js\"\n\nimport \"./desktop_nav.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"isOpen\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"user-reporting-panel panel\">\n <div class=\"panel-heading\">\n <i18n-t\n tag=\"div\"\n keypath=\"user_reporting.title\"\n class=\"title\"\n >\n <UserLink :user=\"user\" />\n </i18n-t>\n </div>\n <div class=\"panel-body\">\n <div class=\"user-reporting-panel-left\">\n <div>\n <p>{{ $t('user_reporting.add_comment_description') }}</p>\n <textarea\n v-model=\"comment\"\n class=\"form-control\"\n :placeholder=\"$t('user_reporting.additional_comments')\"\n rows=\"1\"\n @input=\"resize\"\n />\n </div>\n <div v-if=\"!user.is_local\">\n <p>{{ $t('user_reporting.forward_description') }}</p>\n <Checkbox v-model=\"forward\">\n {{ $t('user_reporting.forward_to', [remoteInstance]) }}\n </Checkbox>\n </div>\n <div>\n <button\n class=\"btn button-default\"\n :disabled=\"processing\"\n @click=\"reportUser\"\n >\n {{ $t('user_reporting.submit') }}\n </button>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ $t('user_reporting.generic_error') }}\n </div>\n </div>\n </div>\n <div class=\"user-reporting-panel-right\">\n <List :items=\"statuses\">\n <template #item=\"{item}\">\n <div class=\"status-fadein user-reporting-panel-sitem\">\n <Status\n :in-conversation=\"false\"\n :focused=\"false\"\n :statusoid=\"item\"\n />\n <Checkbox\n :model-value=\"isChecked(item.id)\"\n @update:model-value=\"checked => toggleStatus(checked, item.id)\"\n />\n </div>\n </template>\n </List>\n </div>\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./user_reporting_modal.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-reporting-panel {\n width: 90vw;\n max-width: 700px;\n min-height: 20vh;\n max-height: 80vh;\n\n .panel-body {\n display: flex;\n flex-direction: column-reverse;\n border-top: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n overflow: hidden;\n }\n\n &-left {\n padding: 1.1em 0.7em 0.7em;\n line-height: var(--post-line-height);\n box-sizing: border-box;\n\n > div {\n margin-bottom: 1em;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n p {\n margin-top: 0;\n }\n\n textarea.form-control {\n line-height: 16px;\n resize: none;\n overflow: hidden;\n transition: min-height 200ms 100ms;\n min-height: 44px;\n width: 100%;\n }\n\n .btn {\n min-width: 10em;\n padding: 0 2em;\n }\n\n .alert {\n margin: 1em 0 0;\n line-height: 1.3em;\n }\n }\n\n &-right {\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n }\n\n &-sitem {\n display: flex;\n justify-content: space-between;\n\n /* TODO cleanup this */\n > .Status {\n flex: 1;\n }\n\n > .checkbox {\n margin: 0.75em;\n }\n }\n\n @media all and (min-width: 801px) {\n .panel-body {\n flex-direction: row;\n }\n\n &-left {\n width: 50%;\n max-width: 320px;\n border-right: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 1.1em;\n\n > div {\n margin-bottom: 2em;\n }\n }\n\n &-right {\n width: 50%;\n flex: 1 1 auto;\n margin-bottom: 12px;\n }\n }\n}\n</style>\n","import Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\nimport UserLink from '../user_link/user_link.vue'\n\nconst UserReportingModal = {\n components: {\n Status,\n List,\n Checkbox,\n Modal,\n UserLink\n },\n data () {\n return {\n comment: '',\n forward: false,\n statusIdsToReport: [],\n processing: false,\n error: false\n }\n },\n computed: {\n reportModal () {\n return this.$store.state.reports.reportModal\n },\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isOpen () {\n return this.isLoggedIn && this.reportModal.activated\n },\n userId () {\n return this.reportModal.userId\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n remoteInstance () {\n return !this.user.is_local && this.user.screen_name.substr(this.user.screen_name.indexOf('@') + 1)\n },\n statuses () {\n return this.reportModal.statuses\n },\n preTickedIds () {\n return this.reportModal.preTickedIds\n }\n },\n watch: {\n userId: 'resetState',\n preTickedIds (newValue) {\n this.statusIdsToReport = newValue\n }\n },\n methods: {\n resetState () {\n // Reset state\n this.comment = ''\n this.forward = false\n this.statusIdsToReport = this.preTickedIds\n this.processing = false\n this.error = false\n },\n closeModal () {\n this.$store.dispatch('closeUserReportingModal')\n },\n reportUser () {\n this.processing = true\n this.error = false\n const params = {\n userId: this.userId,\n comment: this.comment,\n forward: this.forward,\n statusIds: this.statusIdsToReport\n }\n this.$store.state.api.backendInteractor.reportUser({ ...params })\n .then(() => {\n this.processing = false\n this.resetState()\n this.closeModal()\n })\n .catch(() => {\n this.processing = false\n this.error = true\n })\n },\n clearError () {\n this.error = false\n },\n isChecked (statusId) {\n return this.statusIdsToReport.indexOf(statusId) !== -1\n },\n toggleStatus (checked, statusId) {\n if (checked === this.isChecked(statusId)) {\n return\n }\n\n if (checked) {\n this.statusIdsToReport.push(statusId)\n } else {\n this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n }\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n // Auto is needed to make textbox shrink when removing lines\n target.style.height = 'auto'\n target.style.height = `${target.scrollHeight}px`\n if (target.value === '') {\n target.style.height = null\n }\n }\n }\n}\n\nexport default UserReportingModal\n","import { render } from \"./user_reporting_modal.vue?vue&type=template&id=b4c54784\"\nimport script from \"./user_reporting_modal.js?vue&type=script&lang=js\"\nexport * from \"./user_reporting_modal.js?vue&type=script&lang=js\"\n\nimport \"./user_reporting_modal.vue?vue&type=style&index=0&id=b4c54784&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"isFormVisible\"\n class=\"edit-form-modal-view\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"edit-form-modal-panel panel\">\n <div class=\"panel-heading\">\n {{ $t('post_status.edit_status') }}\n </div>\n <PostStatusForm\n class=\"panel-body\"\n v-bind=\"params\"\n :post-handler=\"doEditStatus\"\n :disable-polls=\"true\"\n :disable-visibility-selector=\"true\"\n @posted=\"closeModal\"\n />\n </div>\n </Modal>\n</template>\n\n<script src=\"./edit_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.edit-form-modal-view {\n align-items: flex-start;\n}\n\n.edit-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n\n .form-bottom-left {\n max-width: 6.5em;\n\n .emoji-icon {\n justify-content: right;\n }\n }\n}\n</style>\n","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport get from 'lodash/get'\n\nconst EditStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.editStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.editStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'statusId') !== get(oldVal, 'statusId')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n doEditStatus ({ status, spoilerText, sensitive, media, contentType, poll }) {\n const params = {\n store: this.$store,\n statusId: this.$store.state.editStatus.params.statusId,\n status,\n spoilerText,\n sensitive,\n poll,\n media,\n contentType\n }\n\n return statusPosterService.editStatus(params)\n .then((data) => {\n return data\n })\n .catch((err) => {\n console.error('Error editing status', err)\n return {\n error: err.message\n }\n })\n },\n closeModal () {\n this.$store.dispatch('closeEditStatusModal')\n }\n }\n}\n\nexport default EditStatusModal\n","import { render } from \"./edit_status_modal.vue?vue&type=template&id=7e74cdc2\"\nimport script from \"./edit_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./edit_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./edit_status_modal.vue?vue&type=style&index=0&id=7e74cdc2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"isLoggedIn && !resettingForm\"\n :is-open=\"modalActivated\"\n class=\"post-form-modal-view\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"post-form-modal-panel panel\">\n <div class=\"panel-heading\">\n {{ $t('post_status.new_status') }}\n </div>\n <PostStatusForm\n class=\"panel-body\"\n v-bind=\"params\"\n @posted=\"resetAndClose\"\n />\n </div>\n </Modal>\n</template>\n\n<script src=\"./post_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.post-form-modal-view {\n align-items: flex-start;\n}\n\n.post-form-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n</style>\n","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.postStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.postStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closePostStatusModal')\n },\n resetAndClose () {\n this.$store.dispatch('resetPostStatusModal')\n this.$store.dispatch('closePostStatusModal')\n }\n }\n}\n\nexport default PostStatusModal\n","import { render } from \"./post_status_modal.vue?vue&type=template&id=365216ee\"\nimport script from \"./post_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./post_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./post_status_modal.vue?vue&type=style&index=0&id=365216ee&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Modal\n v-if=\"modalActivated\"\n class=\"status-history-modal-view\"\n @backdropClicked=\"closeModal\"\n >\n <div class=\"status-history-modal-panel panel\">\n <div class=\"panel-heading\">\n {{ $t('status.status_history') }} ({{ historyCount }})\n </div>\n <div class=\"panel-body\">\n <div\n v-if=\"historyCount > 0\"\n class=\"history-body\"\n >\n <status\n v-for=\"status in history\"\n :key=\"status.id\"\n :statusoid=\"status\"\n :is-preview=\"true\"\n class=\"conversation-status status-fadein panel-body\"\n />\n </div>\n </div>\n </div>\n </Modal>\n</template>\n\n<script src=\"./status_history_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.status-history-modal-view {\n align-items: flex-start;\n}\n\n.status-history-modal-panel {\n flex-shrink: 0;\n margin-top: 25%;\n margin-bottom: 2em;\n width: 100%;\n max-width: 700px;\n\n @media (orientation: landscape) {\n margin-top: 8%;\n }\n}\n</style>\n","import { get } from 'lodash'\nimport Modal from '../modal/modal.vue'\nimport Status from '../status/status.vue'\n\nconst StatusHistoryModal = {\n components: {\n Modal,\n Status\n },\n data () {\n return {\n statuses: []\n }\n },\n computed: {\n modalActivated () {\n return this.$store.state.statusHistory.modalActivated\n },\n params () {\n return this.$store.state.statusHistory.params\n },\n statusId () {\n return this.params.id\n },\n historyCount () {\n return this.statuses.length\n },\n history () {\n return this.statuses\n }\n },\n watch: {\n params (newVal, oldVal) {\n const newStatusId = get(newVal, 'id') !== get(oldVal, 'id')\n if (newStatusId) {\n this.resetHistory()\n }\n\n if (newStatusId || get(newVal, 'edited_at') !== get(oldVal, 'edited_at')) {\n this.fetchStatusHistory()\n }\n }\n },\n methods: {\n resetHistory () {\n this.statuses = []\n },\n fetchStatusHistory () {\n this.$store.dispatch('fetchStatusHistory', this.params)\n .then(data => {\n this.statuses = data\n })\n },\n closeModal () {\n this.$store.dispatch('closeStatusHistoryModal')\n }\n }\n}\n\nexport default StatusHistoryModal\n","import { render } from \"./status_history_modal.vue?vue&type=template&id=16d58712\"\nimport script from \"./status_history_modal.js?vue&type=script&lang=js\"\nexport * from \"./status_history_modal.js?vue&type=script&lang=js\"\n\nimport \"./status_history_modal.vue?vue&type=style&index=0&id=16d58712&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"global-notice-list\">\n <div\n v-for=\"(notice, index) in notices\"\n :key=\"index\"\n class=\"alert global-notice\"\n :class=\"{ ['global-' + notice.level]: true }\"\n >\n <div class=\"notice-message\">\n {{ $t(notice.messageKey, notice.messageArgs) }}\n </div>\n <button\n class=\"button-unstyled close-notice\"\n @click=\"closeNotice(notice)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n </div>\n</template>\n\n<script src=\"./global_notice_list.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.global-notice-list {\n position: fixed;\n top: calc(var(--navbar-height) + 0.5em);\n width: 100%;\n pointer-events: none;\n z-index: var(--ZI_modals_popovers);\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .global-notice {\n pointer-events: auto;\n text-align: center;\n width: 40em;\n max-width: calc(100% - 3em);\n display: flex;\n padding-left: 1.5em;\n line-height: 2;\n margin-bottom: 0.5em;\n\n .notice-message {\n flex: 1 1 100%;\n }\n }\n\n .global-error {\n background-color: var(--alertPopupError, $fallback--cRed);\n color: var(--alertPopupErrorText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupErrorText, $fallback--text);\n }\n }\n\n .global-warning {\n background-color: var(--alertPopupWarning, $fallback--cOrange);\n color: var(--alertPopupWarningText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupWarningText, $fallback--text);\n }\n }\n\n .global-success {\n background-color: var(--alertPopupSuccess, $fallback--cGreen);\n color: var(--alertPopupSuccessText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupSuccessText, $fallback--text);\n }\n }\n\n .global-info {\n background-color: var(--alertPopupNeutral, $fallback--fg);\n color: var(--alertPopupNeutralText, $fallback--text);\n\n .svg-inline--fa {\n color: var(--alertPopupNeutralText, $fallback--text);\n }\n }\n\n .close-notice {\n padding-right: 0.2em;\n\n .svg-inline--fa:hover {\n opacity: 0.6;\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst GlobalNoticeList = {\n computed: {\n notices () {\n return this.$store.state.interface.globalNotices\n }\n },\n methods: {\n closeNotice (notice) {\n this.$store.dispatch('removeGlobalNotice', notice)\n }\n }\n}\n\nexport default GlobalNoticeList\n","import { render } from \"./global_notice_list.vue?vue&type=template&id=f53eca8e\"\nimport script from \"./global_notice_list.js?vue&type=script&lang=js\"\nexport * from \"./global_notice_list.js?vue&type=script&lang=js\"\n\nimport \"./global_notice_list.vue?vue&type=style&index=0&id=f53eca8e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserPanel from './components/user_panel/user_panel.vue'\nimport NavPanel from './components/nav_panel/nav_panel.vue'\nimport InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from './components/features_panel/features_panel.vue'\nimport WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'\nimport ShoutPanel from './components/shout_panel/shout_panel.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport EditStatusModal from './components/edit_status_modal/edit_status_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport StatusHistoryModal from './components/status_history_modal/status_history_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\nimport { defineAsyncComponent } from 'vue'\n\nexport default {\n name: 'app',\n components: {\n UserPanel,\n NavPanel,\n Notifications: defineAsyncComponent(() => import('./components/notifications/notifications.vue')),\n InstanceSpecificPanel,\n FeaturesPanel,\n WhoToFollowPanel,\n ShoutPanel,\n MediaModal,\n SideDrawer,\n MobilePostStatusButton,\n MobileNav,\n DesktopNav,\n SettingsModal: defineAsyncComponent(() => import('./components/settings_modal/settings_modal.vue')),\n UpdateNotification: defineAsyncComponent(() => import('./components/update_notification/update_notification.vue')),\n UserReportingModal,\n PostStatusModal,\n EditStatusModal,\n StatusHistoryModal,\n GlobalNoticeList\n },\n data: () => ({\n mobileActivePanel: 'timeline'\n }),\n created () {\n // Load the locale from the storage\n const val = this.$store.getters.mergedConfig.interfaceLanguage\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n window.addEventListener('resize', this.updateMobileState)\n },\n unmounted () {\n window.removeEventListener('resize', this.updateMobileState)\n },\n computed: {\n classes () {\n return [\n {\n '-reverse': this.reverseLayout,\n '-no-sticky-headers': this.noSticky,\n '-has-new-post-button': this.newPostButtonShown\n },\n '-' + this.layoutType\n ]\n },\n navClasses () {\n const { navbarColumnStretch } = this.$store.getters.mergedConfig\n return [\n '-' + this.layoutType,\n ...(navbarColumnStretch ? ['-column-stretch'] : [])\n ]\n },\n currentUser () { return this.$store.state.users.currentUser },\n userBackground () { return this.currentUser.background_image },\n instanceBackground () {\n return this.mergedConfig.hideInstanceWallpaper\n ? null\n : this.$store.state.instance.background\n },\n background () { return this.userBackground || this.instanceBackground },\n bgStyle () {\n if (this.background) {\n return {\n '--body-background-image': `url(${this.background})`\n }\n }\n },\n shout () { return this.$store.state.shout.joined },\n suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n },\n isChats () {\n return this.$route.name === 'chat' || this.$route.name === 'chats'\n },\n isListEdit () {\n return this.$route.name === 'lists-edit'\n },\n newPostButtonShown () {\n if (this.isChats) return false\n if (this.isListEdit) return false\n return this.$store.getters.mergedConfig.alwaysShowNewPostButton || this.layoutType === 'mobile'\n },\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n editingAvailable () { return this.$store.state.instance.editingAvailable },\n shoutboxPosition () {\n return this.$store.getters.mergedConfig.alwaysShowNewPostButton || false\n },\n hideShoutbox () {\n return this.$store.getters.mergedConfig.hideShoutbox\n },\n layoutType () { return this.$store.state.interface.layoutType },\n privateMode () { return this.$store.state.instance.private },\n reverseLayout () {\n const { thirdColumnMode, sidebarRight: reverseSetting } = this.$store.getters.mergedConfig\n if (this.layoutType !== 'wide') {\n return reverseSetting\n } else {\n return thirdColumnMode === 'notifications' ? reverseSetting : !reverseSetting\n }\n },\n noSticky () { return this.$store.getters.mergedConfig.disableStickyHeaders },\n showScrollbars () { return this.$store.getters.mergedConfig.showScrollbars },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n updateMobileState () {\n this.$store.dispatch('setLayoutWidth', windowWidth())\n this.$store.dispatch('setLayoutHeight', windowHeight())\n }\n }\n}\n","import { render } from \"./App.vue?vue&type=template&id=8323d9fc\"\nimport script from \"./App.js?vue&type=script&lang=js\"\nexport * from \"./App.js?vue&type=script&lang=js\"\n\nimport \"./App.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div :class=\"['Timeline', classes.root]\">\n <div :class=\"classes.header\">\n <TimelineMenu\n v-if=\"!embedded\"\n :timeline-name=\"timelineName\"\n />\n <div\n v-if=\"showScrollTop && !embedded\"\n class=\"rightside-button\"\n >\n <button\n class=\"button-unstyled scroll-to-top-button\"\n type=\"button\"\n :title=\"$t('general.scroll_to_top')\"\n @click=\"scrollToTop\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon icon=\"arrow-up\" />\n <FAIcon\n icon=\"minus\"\n transform=\"up-7\"\n />\n </FALayers>\n </button>\n </div>\n <template v-if=\"mobileLayout && !embedded\">\n <div\n v-if=\"showLoadButton\"\n class=\"rightside-button\"\n >\n <button\n class=\"button-unstyled loadmore-button\"\n :title=\"loadButtonString\"\n @click.prevent=\"showNewStatuses\"\n >\n <FAIcon\n fixed-width\n icon=\"circle-plus\"\n />\n <div class=\"alert-badge\">\n {{ mobileLoadButtonString }}\n </div>\n </button>\n </div>\n <div\n v-else-if=\"!embedded\"\n class=\"loadmore-text faint veryfaint rightside-icon\"\n :title=\"$t('timeline.up_to_date')\"\n :aria-disabled=\"true\"\n @click.prevent\n >\n <FAIcon\n fixed-width\n icon=\"check\"\n />\n </div>\n </template>\n <template v-else>\n <button\n v-if=\"showLoadButton\"\n class=\"button-default loadmore-button\"\n @click.prevent=\"showNewStatuses\"\n >\n {{ loadButtonString }}\n </button>\n <div\n v-else-if=\"!embedded\"\n class=\"loadmore-text faint\"\n @click.prevent\n >\n {{ $t('timeline.up_to_date') }}\n </div>\n </template>\n <QuickFilterSettings\n v-if=\"!embedded\"\n class=\"rightside-button\"\n />\n <QuickViewSettings\n v-if=\"!embedded\"\n class=\"rightside-button\"\n />\n </div>\n <div :class=\"classes.body\">\n <div\n ref=\"timeline\"\n class=\"timeline\"\n role=\"feed\"\n >\n <conversation\n v-for=\"statusId in filteredPinnedStatusIds\"\n :key=\"statusId + '-pinned'\"\n role=\"listitem\"\n class=\"status-fadein\"\n :status-id=\"statusId\"\n :collapsable=\"true\"\n :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"userId\"\n />\n <conversation\n v-for=\"status in filteredVisibleStatuses\"\n :key=\"status.id\"\n role=\"listitem\"\n class=\"status-fadein\"\n :status-id=\"status.id\"\n :collapsable=\"true\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"userId\"\n :virtual-hidden=\"virtualScrollingEnabled && !statusesToDisplay.includes(status.id)\"\n />\n </div>\n </div>\n <div :class=\"classes.footer\">\n <teleport\n :to=\"footerSlipgate\"\n :disabled=\"!embedded || !footerSlipgate\"\n >\n <div\n v-if=\"count===0\"\n class=\"new-status-notification text-center faint\"\n >\n {{ $t('timeline.no_statuses') }}\n </div>\n <div\n v-else-if=\"bottomedOut\"\n class=\"new-status-notification text-center faint\"\n >\n {{ $t('timeline.no_more_statuses') }}\n </div>\n <button\n v-else-if=\"!timeline.loading\"\n class=\"button-unstyled -link\"\n @click.prevent=\"fetchOlderStatuses()\"\n >\n <div class=\"new-status-notification text-center\">\n {{ $t('timeline.load_older') }}\n </div>\n </button>\n <div\n v-else\n class=\"new-status-notification text-center\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n </teleport>\n </div>\n </div>\n</template>\n\n<script src=\"./timeline.js\"></script>\n\n<style src=\"./timeline.scss\" lang=\"scss\"> </style>\n","<template>\n <div\n v-if=\"!hideStatus\"\n :style=\"hiddenStyle\"\n class=\"Conversation\"\n :class=\"{ '-expanded' : isExpanded, 'panel' : isExpanded }\"\n >\n <div\n v-if=\"isExpanded\"\n class=\"panel-heading conversation-heading -sticky\"\n >\n <span class=\"title\"> {{ $t('timeline.conversation') }} </span>\n <button\n v-if=\"collapsable\"\n class=\"button-unstyled -link\"\n @click.prevent=\"toggleExpanded\"\n >\n {{ $t('timeline.collapse') }}\n </button>\n <QuickFilterSettings\n v-if=\"!collapsable\"\n :conversation=\"true\"\n class=\"rightside-button\"\n />\n <QuickViewSettings\n v-if=\"!collapsable\"\n :conversation=\"true\"\n class=\"rightside-button\"\n />\n </div>\n <div class=\"conversation-body panel-body\">\n <div\n v-if=\"isTreeView\"\n class=\"thread-body\"\n >\n <div\n v-if=\"shouldShowAllConversationButton\"\n class=\"conversation-dive-to-top-level-box\"\n >\n <i18n-t\n keypath=\"status.show_all_conversation_with_icon\"\n tag=\"button\"\n class=\"button-unstyled -link\"\n scope=\"global\"\n @click.prevent=\"diveToTopLevel\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-left\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.show_all_conversation', otherTopLevelCount, { numStatus: otherTopLevelCount }) }}\n </span>\n </template>\n </i18n-t>\n </div>\n <div\n v-if=\"shouldShowAncestors\"\n class=\"thread-ancestors\"\n >\n <article\n v-for=\"status in ancestorsOf(diveRoot)\"\n :key=\"status.id\"\n class=\"thread-ancestor\"\n :class=\"{'thread-ancestor-has-other-replies': getReplies(status.id).length > 1, '-faded': shouldFadeAncestors}\"\n >\n <status\n ref=\"statusComponent\"\n :inline-expanded=\"collapsable && isExpanded\"\n :statusoid=\"status\"\n :expandable=\"!isExpanded\"\n :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n :focused=\"focused(status.id)\"\n :in-conversation=\"isExpanded\"\n :highlight=\"getHighlight()\"\n :replies=\"getReplies(status.id)\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"profileUserId\"\n class=\"conversation-status status-fadein panel-body\"\n\n :simple-tree=\"treeViewIsSimple\"\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :show-other-replies-as-button=\"showOtherRepliesButtonInsideStatus\"\n :dive=\"() => diveIntoStatus(status.id)\"\n\n :controlled-showing-tall=\"statusContentProperties[status.id].showingTall\"\n :controlled-expanding-subject=\"statusContentProperties[status.id].expandingSubject\"\n :controlled-showing-long-subject=\"statusContentProperties[status.id].showingLongSubject\"\n :controlled-replying=\"statusContentProperties[status.id].replying\"\n :controlled-media-playing=\"statusContentProperties[status.id].mediaPlaying\"\n :controlled-toggle-showing-tall=\"() => toggleStatusContentProperty(status.id, 'showingTall')\"\n :controlled-toggle-expanding-subject=\"() => toggleStatusContentProperty(status.id, 'expandingSubject')\"\n :controlled-toggle-showing-long-subject=\"() => toggleStatusContentProperty(status.id, 'showingLongSubject')\"\n :controlled-toggle-replying=\"() => toggleStatusContentProperty(status.id, 'replying')\"\n :controlled-set-media-playing=\"(newVal) => toggleStatusContentProperty(status.id, 'mediaPlaying', newVal)\"\n\n @goto=\"setHighlight\"\n @toggleExpanded=\"toggleExpanded\"\n />\n <div\n v-if=\"showOtherRepliesButtonBelowStatus && getReplies(status.id).length > 1\"\n class=\"thread-ancestor-dive-box\"\n >\n <div\n class=\"thread-ancestor-dive-box-inner\"\n >\n <i18n-t\n tag=\"button\"\n scope=\"global\"\n keypath=\"status.ancestor_follow_with_icon\"\n class=\"button-unstyled -link thread-tree-show-replies-button\"\n @click.prevent=\"diveIntoStatus(status.id)\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-right\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.ancestor_follow', getReplies(status.id).length - 1, { numReplies: getReplies(status.id).length - 1 }) }}\n </span>\n </template>\n </i18n-t>\n </div>\n </div>\n </article>\n </div>\n <thread-tree\n v-for=\"status in showingTopLevel\"\n :key=\"status.id\"\n ref=\"statusComponent\"\n :depth=\"0\"\n\n :status=\"status\"\n :in-profile=\"inProfile\"\n :conversation=\"conversation\"\n :collapsable=\"collapsable\"\n :is-expanded=\"isExpanded\"\n :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n :profile-user-id=\"profileUserId\"\n\n :focused=\"focused\"\n :get-replies=\"getReplies\"\n :highlight=\"maybeHighlight\"\n :set-highlight=\"setHighlight\"\n :toggle-expanded=\"toggleExpanded\"\n\n :simple=\"treeViewIsSimple\"\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :status-content-properties=\"statusContentProperties\"\n :set-status-content-property=\"setStatusContentProperty\"\n :toggle-status-content-property=\"toggleStatusContentProperty\"\n :dive=\"canDive ? diveIntoStatus : undefined\"\n />\n </div>\n <div\n v-if=\"isLinearView\"\n class=\"thread-body\"\n >\n <article>\n <status\n v-for=\"status in conversation\"\n :key=\"status.id\"\n ref=\"statusComponent\"\n :inline-expanded=\"collapsable && isExpanded\"\n :statusoid=\"status\"\n :expandable=\"!isExpanded\"\n :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n :focused=\"focused(status.id)\"\n :in-conversation=\"isExpanded\"\n :highlight=\"getHighlight()\"\n :replies=\"getReplies(status.id)\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"profileUserId\"\n class=\"conversation-status status-fadein panel-body\"\n\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :status-content-properties=\"statusContentProperties\"\n :set-status-content-property=\"setStatusContentProperty\"\n :toggle-status-content-property=\"toggleStatusContentProperty\"\n\n @goto=\"setHighlight\"\n @toggleExpanded=\"toggleExpanded\"\n />\n </article>\n </div>\n </div>\n </div>\n <div\n v-else\n :style=\"hiddenStyle\"\n />\n</template>\n\n<script src=\"./conversation.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Conversation {\n z-index: 1;\n\n .conversation-dive-to-top-level-box {\n padding: var(--status-margin, $status-margin);\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n\n .thread-ancestors {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n }\n\n .thread-ancestor.-faded .StatusContent {\n --link: var(--faintLink);\n --text: var(--faint);\n\n color: var(--text);\n }\n\n .thread-ancestor-dive-box {\n padding-left: var(--status-margin, $status-margin);\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n\n /* Make the button stretch along the whole row */\n &,\n &-inner {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n }\n\n .thread-ancestor-dive-box-inner {\n padding: var(--status-margin, $status-margin);\n }\n\n .conversation-status {\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n }\n\n .thread-ancestor-has-other-replies .conversation-status,\n &:last-child .conversation-status,\n .thread-ancestor:last-child .conversation-status,\n .thread-ancestor:last-child .thread-ancestor-dive-box,\n &.-expanded .thread-tree .conversation-status {\n border-bottom: none;\n }\n\n .thread-ancestors + .thread-tree > .conversation-status {\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n /* expanded conversation in timeline */\n &.status-fadein.-expanded .thread-body {\n border-left: 4px solid $fallback--cRed;\n border-left-color: var(--cRed, $fallback--cRed);\n border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n border-bottom: 1px solid var(--border, $fallback--border);\n }\n\n &.-expanded.status-fadein {\n margin: calc(var(--status-margin, $status-margin) / 2);\n }\n}\n</style>\n","<template>\n <article class=\"thread-tree\">\n <status\n :key=\"status.id\"\n ref=\"statusComponent\"\n :inline-expanded=\"collapsable && isExpanded\"\n :statusoid=\"status\"\n :expandable=\"!isExpanded\"\n :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n :focused=\"focused(status.id)\"\n :in-conversation=\"isExpanded\"\n :highlight=\"highlight\"\n :replies=\"getReplies(status.id)\"\n :in-profile=\"inProfile\"\n :profile-user-id=\"profileUserId\"\n class=\"conversation-status conversation-status-treeview status-fadein panel-body\"\n\n :simple-tree=\"simple\"\n :controlled-thread-display-status=\"threadDisplayStatus[status.id]\"\n :controlled-toggle-thread-display=\"() => toggleThreadDisplay(status.id)\"\n\n :controlled-showing-tall=\"currentProp.showingTall\"\n :controlled-expanding-subject=\"currentProp.expandingSubject\"\n :controlled-showing-long-subject=\"currentProp.showingLongSubject\"\n :controlled-replying=\"currentProp.replying\"\n :controlled-media-playing=\"currentProp.mediaPlaying\"\n :controlled-toggle-showing-tall=\"() => toggleCurrentProp('showingTall')\"\n :controlled-toggle-expanding-subject=\"() => toggleCurrentProp('expandingSubject')\"\n :controlled-toggle-showing-long-subject=\"() => toggleCurrentProp('showingLongSubject')\"\n :controlled-toggle-replying=\"() => toggleCurrentProp('replying')\"\n :controlled-set-media-playing=\"(newVal) => setCurrentProp('mediaPlaying', newVal)\"\n :dive=\"dive ? () => dive(status.id) : undefined\"\n\n @goto=\"setHighlight\"\n @toggleExpanded=\"toggleExpanded\"\n />\n <div\n v-if=\"currentReplies.length && threadShowing\"\n class=\"thread-tree-replies\"\n >\n <thread-tree\n v-for=\"replyStatus in currentReplies\"\n :key=\"replyStatus.id\"\n ref=\"childComponent\"\n :depth=\"depth + 1\"\n :status=\"replyStatus\"\n\n :in-profile=\"inProfile\"\n :conversation=\"conversation\"\n :collapsable=\"collapsable\"\n :is-expanded=\"isExpanded\"\n :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n :profile-user-id=\"profileUserId\"\n\n :focused=\"focused\"\n :get-replies=\"getReplies\"\n :highlight=\"highlight\"\n :set-highlight=\"setHighlight\"\n :toggle-expanded=\"toggleExpanded\"\n\n :simple=\"simple\"\n :toggle-thread-display=\"toggleThreadDisplay\"\n :thread-display-status=\"threadDisplayStatus\"\n :show-thread-recursively=\"showThreadRecursively\"\n :total-reply-count=\"totalReplyCount\"\n :total-reply-depth=\"totalReplyDepth\"\n :status-content-properties=\"statusContentProperties\"\n :set-status-content-property=\"setStatusContentProperty\"\n :toggle-status-content-property=\"toggleStatusContentProperty\"\n :dive=\"dive\"\n />\n </div>\n <div\n v-if=\"currentReplies.length && !threadShowing\"\n class=\"thread-tree-replies thread-tree-replies-hidden\"\n >\n <i18n-t\n v-if=\"simple\"\n scope=\"global\"\n tag=\"button\"\n keypath=\"status.thread_follow_with_icon\"\n class=\"button-unstyled -link thread-tree-show-replies-button\"\n @click.prevent=\"dive(status.id)\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-right\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.thread_follow', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id] }) }}\n </span>\n </template>\n </i18n-t>\n <i18n-t\n v-else\n scope=\"global\"\n tag=\"button\"\n keypath=\"status.thread_show_full_with_icon\"\n class=\"button-unstyled -link thread-tree-show-replies-button\"\n @click.prevent=\"showThreadRecursively(status.id)\"\n >\n <template #icon>\n <FAIcon\n icon=\"angle-double-down\"\n />\n </template>\n <template #text>\n <span>\n {{ $tc('status.thread_show_full', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id], depth: totalReplyDepth[status.id] }) }}\n </span>\n </template>\n </i18n-t>\n </div>\n </article>\n</template>\n\n<script src=\"./thread_tree.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.thread-tree-replies {\n margin-left: var(--status-margin, $status-margin);\n border-left: 2px solid var(--border, $fallback--border);\n}\n\n.thread-tree-replies-hidden {\n padding: var(--status-margin, $status-margin);\n\n /* Make the button stretch along the whole row */\n display: flex;\n align-items: stretch;\n flex-direction: column;\n}\n</style>\n","import Status from '../status/status.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAngleDoubleDown,\n faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAngleDoubleDown,\n faAngleDoubleRight\n)\n\nconst ThreadTree = {\n components: {\n Status\n },\n name: 'ThreadTree',\n props: {\n depth: Number,\n status: Object,\n inProfile: Boolean,\n conversation: Array,\n collapsable: Boolean,\n isExpanded: Boolean,\n pinnedStatusIdsObject: Object,\n profileUserId: String,\n\n focused: Function,\n highlight: String,\n getReplies: Function,\n setHighlight: Function,\n toggleExpanded: Function,\n\n simple: Boolean,\n // to control display of the whole thread forest\n toggleThreadDisplay: Function,\n threadDisplayStatus: Object,\n showThreadRecursively: Function,\n totalReplyCount: Object,\n totalReplyDepth: Object,\n statusContentProperties: Object,\n setStatusContentProperty: Function,\n toggleStatusContentProperty: Function,\n dive: Function\n },\n computed: {\n suspendable () {\n const selfSuspendable = this.$refs.statusComponent ? this.$refs.statusComponent.suspendable : true\n if (this.$refs.childComponent) {\n return selfSuspendable && this.$refs.childComponent.every(s => s.suspendable)\n }\n return selfSuspendable\n },\n reverseLookupTable () {\n return this.conversation.reduce((table, status, index) => {\n table[status.id] = index\n return table\n }, {})\n },\n currentReplies () {\n return this.getReplies(this.status.id).map(({ id }) => this.statusById(id))\n },\n threadShowing () {\n return this.threadDisplayStatus[this.status.id] === 'showing'\n },\n currentProp () {\n return this.statusContentProperties[this.status.id]\n }\n },\n methods: {\n statusById (id) {\n return this.conversation[this.reverseLookupTable[id]]\n },\n collapseThread () {\n },\n showThread () {\n },\n showAllSubthreads () {\n },\n toggleCurrentProp (name) {\n this.toggleStatusContentProperty(this.status.id, name)\n },\n setCurrentProp (name, newVal) {\n this.setStatusContentProperty(this.status.id, name)\n }\n }\n}\n\nexport default ThreadTree\n","import { render } from \"./thread_tree.vue?vue&type=template&id=061df1d9\"\nimport script from \"./thread_tree.js?vue&type=script&lang=js\"\nexport * from \"./thread_tree.js?vue&type=script&lang=js\"\n\nimport \"./thread_tree.vue?vue&type=style&index=0&id=061df1d9&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"QuickFilterSettings\"\n :bound-to=\"{ x: 'container' }\"\n :trigger-attrs=\"{ title: $t('timeline.quick_filter_settings') }\"\n >\n <template #content>\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n >\n <div\n v-if=\"loggedIn\"\n role=\"group\"\n >\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n :aria-checked=\"replyVisibilityAll\"\n role=\"menuitemradio\"\n @click=\"replyVisibilityAll = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityAll }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.reply_visibility_all') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n :aria-checked=\"replyVisibilityFollowing\"\n role=\"menuitemradio\"\n @click=\"replyVisibilityFollowing = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityFollowing }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.reply_visibility_following_short') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n :aria-checked=\"replyVisibilitySelf\"\n role=\"menuitemradio\"\n @click=\"replyVisibilitySelf = true\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilitySelf }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.reply_visibility_self_short') }}\n </button>\n <div\n v-if=\"!conversation\"\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </div>\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"muteBotStatuses\"\n @click=\"muteBotStatuses = !muteBotStatuses\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': muteBotStatuses }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.mute_bot_posts') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"hideMedia\"\n @click=\"hideMedia = !hideMedia\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMedia }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.hide_media_previews') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"hideMutedPosts\"\n @click=\"hideMutedPosts = !hideMutedPosts\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMutedPosts }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.hide_all_muted_posts') }}\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click=\"openTab('filtering')\"\n >\n <FAIcon icon=\"font\" />{{ $t('settings.word_filter_and_more') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <FAIcon icon=\"filter\" />\n </template>\n </Popover>\n</template>\n\n<script src=\"./quick_filter_settings.js\"></script>\n","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter, faFont, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFilter,\n faFont,\n faWrench\n)\n\nconst QuickFilterSettings = {\n props: {\n conversation: Boolean\n },\n components: {\n Popover\n },\n methods: {\n setReplyVisibility (visibility) {\n this.$store.dispatch('setOption', { name: 'replyVisibility', value: visibility })\n this.$store.dispatch('queueFlushAll')\n },\n openTab (tab) {\n this.$store.dispatch('openSettingsModalTab', tab)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n replyVisibilitySelf: {\n get () { return this.mergedConfig.replyVisibility === 'self' },\n set () { this.setReplyVisibility('self') }\n },\n replyVisibilityFollowing: {\n get () { return this.mergedConfig.replyVisibility === 'following' },\n set () { this.setReplyVisibility('following') }\n },\n replyVisibilityAll: {\n get () { return this.mergedConfig.replyVisibility === 'all' },\n set () { this.setReplyVisibility('all') }\n },\n hideMedia: {\n get () { return this.mergedConfig.hideAttachments || this.mergedConfig.hideAttachmentsInConv },\n set () {\n const value = !this.hideMedia\n this.$store.dispatch('setOption', { name: 'hideAttachments', value })\n this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })\n }\n },\n hideMutedPosts: {\n get () { return this.mergedConfig.hideFilteredStatuses },\n set () {\n const value = !this.hideMutedPosts\n this.$store.dispatch('setOption', { name: 'hideFilteredStatuses', value })\n }\n },\n muteBotStatuses: {\n get () { return this.mergedConfig.muteBotStatuses },\n set () {\n const value = !this.muteBotStatuses\n this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n }\n }\n }\n}\n\nexport default QuickFilterSettings\n","import { render } from \"./quick_filter_settings.vue?vue&type=template&id=43207d13\"\nimport script from \"./quick_filter_settings.js?vue&type=script&lang=js\"\nexport * from \"./quick_filter_settings.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"QuickViewSettings\"\n :bound-to=\"{ x: 'container' }\"\n :trigger-attrs=\"{ title: $t('timeline.quick_view_settings') }\"\n >\n <template #content>\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n >\n <div role=\"group\">\n <button\n class=\"button-default dropdown-item\"\n :aria-checked=\"conversationDisplay === 'tree'\"\n role=\"menuitemradio\"\n @click=\"conversationDisplay = 'tree'\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :aria-hidden=\"true\"\n :class=\"{ 'menu-checkbox-checked': conversationDisplay === 'tree' }\"\n /><FAIcon\n icon=\"folder-tree\"\n :aria-hidden=\"true\"\n /> {{ $t('settings.conversation_display_tree_quick') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n :aria-checked=\"conversationDisplay === 'linear'\"\n role=\"menuitemradio\"\n @click=\"conversationDisplay = 'linear'\"\n >\n <span\n class=\"menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': conversationDisplay === 'linear' }\"\n :aria-hidden=\"true\"\n /><FAIcon\n icon=\"list\"\n :aria-hidden=\"true\"\n /> {{ $t('settings.conversation_display_linear_quick') }}\n </button>\n </div>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n <button\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"showUserAvatars\"\n @click=\"showUserAvatars = !showUserAvatars\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': showUserAvatars }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.mention_link_show_avatar_quick') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"autoUpdate\"\n @click=\"autoUpdate = !autoUpdate\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': autoUpdate }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.auto_update') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"button-default dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"collapseWithSubjects\"\n @click=\"collapseWithSubjects = !collapseWithSubjects\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': collapseWithSubjects }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.collapse_subject') }}\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click=\"openTab('general')\"\n >\n <FAIcon icon=\"wrench\" />{{ $t('settings.more_settings') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <FAIcon icon=\"bars\" />\n </template>\n </Popover>\n</template>\n\n<script src=\"./quick_view_settings.js\"></script>\n","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faList, faFolderTree, faBars, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faList,\n faFolderTree,\n faBars,\n faWrench\n)\n\nconst QuickViewSettings = {\n props: {\n conversation: Boolean\n },\n components: {\n Popover\n },\n methods: {\n setConversationDisplay (visibility) {\n this.$store.dispatch('setOption', { name: 'conversationDisplay', value: visibility })\n },\n openTab (tab) {\n this.$store.dispatch('openSettingsModalTab', tab)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n conversationDisplay: {\n get () { return this.mergedConfig.conversationDisplay },\n set (newVal) { this.setConversationDisplay(newVal) }\n },\n autoUpdate: {\n get () { return this.mergedConfig.streaming },\n set () {\n const value = !this.autoUpdate\n this.$store.dispatch('setOption', { name: 'streaming', value })\n }\n },\n collapseWithSubjects: {\n get () { return this.mergedConfig.collapseMessageWithSubject },\n set () {\n const value = !this.collapseWithSubjects\n this.$store.dispatch('setOption', { name: 'collapseMessageWithSubject', value })\n }\n },\n showUserAvatars: {\n get () { return this.mergedConfig.mentionLinkShowAvatar },\n set () {\n const value = !this.showUserAvatars\n console.log(value)\n this.$store.dispatch('setOption', { name: 'mentionLinkShowAvatar', value })\n }\n },\n muteBotStatuses: {\n get () { return this.mergedConfig.muteBotStatuses },\n set () {\n const value = !this.muteBotStatuses\n this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n }\n }\n }\n}\n\nexport default QuickViewSettings\n","import { render } from \"./quick_view_settings.vue?vue&type=template&id=2a929bb0\"\nimport script from \"./quick_view_settings.js?vue&type=script&lang=js\"\nexport * from \"./quick_view_settings.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { reduce, filter, findIndex, clone, get } from 'lodash'\nimport Status from '../status/status.vue'\nimport ThreadTree from '../thread_tree/thread_tree.vue'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport QuickFilterSettings from '../quick_filter_settings/quick_filter_settings.vue'\nimport QuickViewSettings from '../quick_view_settings/quick_view_settings.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAngleDoubleDown,\n faAngleDoubleLeft,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAngleDoubleDown,\n faAngleDoubleLeft,\n faChevronLeft\n)\n\nconst sortById = (a, b) => {\n const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n const seqA = Number(idA)\n const seqB = Number(idB)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA < seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return -1\n } else if (!isSeqA && isSeqB) {\n return 1\n } else {\n return idA < idB ? -1 : 1\n }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n if (statusoid.type === 'retweet') {\n conversation = filter(\n conversation,\n (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n )\n } else {\n conversation = filter(conversation, (status) => status.type !== 'retweet')\n }\n return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n data () {\n return {\n highlight: null,\n expanded: false,\n threadDisplayStatusObject: {}, // id => 'showing' | 'hidden'\n statusContentPropertiesObject: {},\n inlineDivePosition: null\n }\n },\n props: [\n 'statusId',\n 'collapsable',\n 'isPage',\n 'pinnedStatusIdsObject',\n 'inProfile',\n 'profileUserId',\n 'virtualHidden'\n ],\n created () {\n if (this.isPage) {\n this.fetchConversation()\n }\n },\n computed: {\n maxDepthToShowByDefault () {\n // maxDepthInThread = max number of depths that is *visible*\n // since our depth starts with 0 and \"showing\" means \"showing children\"\n // there is a -2 here\n const maxDepth = this.$store.getters.mergedConfig.maxDepthInThread - 2\n return maxDepth >= 1 ? maxDepth : 1\n },\n streamingEnabled () {\n return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n },\n displayStyle () {\n return this.$store.getters.mergedConfig.conversationDisplay\n },\n isTreeView () {\n return !this.isLinearView\n },\n treeViewIsSimple () {\n return !this.$store.getters.mergedConfig.conversationTreeAdvanced\n },\n isLinearView () {\n return this.displayStyle === 'linear'\n },\n shouldFadeAncestors () {\n return this.$store.getters.mergedConfig.conversationTreeFadeAncestors\n },\n otherRepliesButtonPosition () {\n return this.$store.getters.mergedConfig.conversationOtherRepliesButton\n },\n showOtherRepliesButtonBelowStatus () {\n return this.otherRepliesButtonPosition === 'below'\n },\n showOtherRepliesButtonInsideStatus () {\n return this.otherRepliesButtonPosition === 'inside'\n },\n suspendable () {\n if (this.isTreeView) {\n return Object.entries(this.statusContentProperties)\n .every(([k, prop]) => !prop.replying && prop.mediaPlaying.length === 0)\n }\n if (this.$refs.statusComponent && this.$refs.statusComponent[0]) {\n return this.$refs.statusComponent.every(s => s.suspendable)\n } else {\n return true\n }\n },\n hideStatus () {\n return this.virtualHidden && this.suspendable\n },\n status () {\n return this.$store.state.statuses.allStatusesObject[this.statusId]\n },\n originalStatusId () {\n if (this.status.retweeted_status) {\n return this.status.retweeted_status.id\n } else {\n return this.statusId\n }\n },\n conversationId () {\n return this.getConversationId(this.statusId)\n },\n conversation () {\n if (!this.status) {\n return []\n }\n\n if (!this.isExpanded) {\n return [this.status]\n }\n\n const conversation = clone(this.$store.state.statuses.conversationsObject[this.conversationId])\n const statusIndex = findIndex(conversation, { id: this.originalStatusId })\n if (statusIndex !== -1) {\n conversation[statusIndex] = this.status\n }\n\n return sortAndFilterConversation(conversation, this.status)\n },\n statusMap () {\n return this.conversation.reduce((res, s) => {\n res[s.id] = s\n return res\n }, {})\n },\n threadTree () {\n const reverseLookupTable = this.conversation.reduce((table, status, index) => {\n table[status.id] = index\n return table\n }, {})\n\n const threads = this.conversation.reduce((a, cur) => {\n const id = cur.id\n a.forest[id] = this.getReplies(id)\n .map(s => s.id)\n\n return a\n }, {\n forest: {}\n })\n\n const walk = (forest, topLevel, depth = 0, processed = {}) => topLevel.map(id => {\n if (processed[id]) {\n return []\n }\n\n processed[id] = true\n return [{\n status: this.conversation[reverseLookupTable[id]],\n id,\n depth\n }, walk(forest, forest[id], depth + 1, processed)].reduce((a, b) => a.concat(b), [])\n }).reduce((a, b) => a.concat(b), [])\n\n const linearized = walk(threads.forest, this.topLevel.map(k => k.id))\n\n return linearized\n },\n replyIds () {\n return this.conversation.map(k => k.id)\n .reduce((res, id) => {\n res[id] = (this.replies[id] || []).map(k => k.id)\n return res\n }, {})\n },\n totalReplyCount () {\n const sizes = {}\n const subTreeSizeFor = (id) => {\n if (sizes[id]) {\n return sizes[id]\n }\n sizes[id] = 1 + this.replyIds[id].map(cid => subTreeSizeFor(cid)).reduce((a, b) => a + b, 0)\n return sizes[id]\n }\n this.conversation.map(k => k.id).map(subTreeSizeFor)\n return Object.keys(sizes).reduce((res, id) => {\n res[id] = sizes[id] - 1 // exclude itself\n return res\n }, {})\n },\n totalReplyDepth () {\n const depths = {}\n const subTreeDepthFor = (id) => {\n if (depths[id]) {\n return depths[id]\n }\n depths[id] = 1 + this.replyIds[id].map(cid => subTreeDepthFor(cid)).reduce((a, b) => a > b ? a : b, 0)\n return depths[id]\n }\n this.conversation.map(k => k.id).map(subTreeDepthFor)\n return Object.keys(depths).reduce((res, id) => {\n res[id] = depths[id] - 1 // exclude itself\n return res\n }, {})\n },\n depths () {\n return this.threadTree.reduce((a, k) => {\n a[k.id] = k.depth\n return a\n }, {})\n },\n topLevel () {\n const topLevel = this.conversation.reduce((tl, cur) =>\n tl.filter(k => this.getReplies(cur.id).map(v => v.id).indexOf(k.id) === -1), this.conversation)\n return topLevel\n },\n otherTopLevelCount () {\n return this.topLevel.length - 1\n },\n showingTopLevel () {\n if (this.canDive && this.diveRoot) {\n return [this.statusMap[this.diveRoot]]\n }\n return this.topLevel\n },\n diveRoot () {\n const statusId = this.inlineDivePosition || this.statusId\n const isTopLevel = !this.parentOf(statusId)\n return isTopLevel ? null : statusId\n },\n diveDepth () {\n return this.canDive && this.diveRoot ? this.depths[this.diveRoot] : 0\n },\n diveMode () {\n return this.canDive && !!this.diveRoot\n },\n shouldShowAllConversationButton () {\n // The \"show all conversation\" button tells the user that there exist\n // other toplevel statuses, so do not show it if there is only a single root\n return this.isTreeView && this.isExpanded && this.diveMode && this.topLevel.length > 1\n },\n shouldShowAncestors () {\n return this.isTreeView && this.isExpanded && this.ancestorsOf(this.diveRoot).length\n },\n replies () {\n let i = 1\n // eslint-disable-next-line camelcase\n return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {\n /* eslint-disable camelcase */\n const irid = in_reply_to_status_id\n /* eslint-enable camelcase */\n if (irid) {\n result[irid] = result[irid] || []\n result[irid].push({\n name: `#${i}`,\n id\n })\n }\n i++\n return result\n }, {})\n },\n isExpanded () {\n return !!(this.expanded || this.isPage)\n },\n hiddenStyle () {\n const height = (this.status && this.status.virtualHeight) || '120px'\n return this.virtualHidden ? { height } : {}\n },\n threadDisplayStatus () {\n return this.conversation.reduce((a, k) => {\n const id = k.id\n const depth = this.depths[id]\n const status = (() => {\n if (this.threadDisplayStatusObject[id]) {\n return this.threadDisplayStatusObject[id]\n }\n if ((depth - this.diveDepth) <= this.maxDepthToShowByDefault) {\n return 'showing'\n } else {\n return 'hidden'\n }\n })()\n\n a[id] = status\n return a\n }, {})\n },\n statusContentProperties () {\n return this.conversation.reduce((a, k) => {\n const id = k.id\n const props = (() => {\n const def = {\n showingTall: false,\n expandingSubject: false,\n showingLongSubject: false,\n isReplying: false,\n mediaPlaying: []\n }\n\n if (this.statusContentPropertiesObject[id]) {\n return {\n ...def,\n ...this.statusContentPropertiesObject[id]\n }\n }\n return def\n })()\n\n a[id] = props\n return a\n }, {})\n },\n canDive () {\n return this.isTreeView && this.isExpanded\n },\n focused () {\n return (id) => {\n return (this.isExpanded) && id === this.highlight\n }\n },\n maybeHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n mastoUserSocketStatus: state => state.api.mastoUserSocketStatus\n })\n },\n components: {\n Status,\n ThreadTree,\n QuickFilterSettings,\n QuickViewSettings\n },\n watch: {\n statusId (newVal, oldVal) {\n const newConversationId = this.getConversationId(newVal)\n const oldConversationId = this.getConversationId(oldVal)\n if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n this.setHighlight(this.originalStatusId)\n } else {\n this.fetchConversation()\n }\n },\n expanded (value) {\n if (value) {\n this.fetchConversation()\n } else {\n this.resetDisplayState()\n }\n },\n virtualHidden (value) {\n this.$store.dispatch(\n 'setVirtualHeight',\n { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n )\n }\n },\n methods: {\n fetchConversation () {\n if (this.status) {\n this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n .then(({ ancestors, descendants }) => {\n this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n this.$store.dispatch('addNewStatuses', { statuses: descendants })\n this.setHighlight(this.originalStatusId)\n })\n } else {\n this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n .then((status) => {\n this.$store.dispatch('addNewStatuses', { statuses: [status] })\n this.fetchConversation()\n })\n }\n },\n getReplies (id) {\n return this.replies[id] || []\n },\n getHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n setHighlight (id) {\n if (!id) return\n this.highlight = id\n\n if (!this.streamingEnabled) {\n this.$store.dispatch('fetchStatus', id)\n }\n\n this.$store.dispatch('fetchFavsAndRepeats', id)\n this.$store.dispatch('fetchEmojiReactionsBy', id)\n },\n toggleExpanded () {\n this.expanded = !this.expanded\n },\n getConversationId (statusId) {\n const status = this.$store.state.statuses.allStatusesObject[statusId]\n return get(status, 'retweeted_status.statusnet_conversation_id', get(status, 'statusnet_conversation_id'))\n },\n setThreadDisplay (id, nextStatus) {\n this.threadDisplayStatusObject = {\n ...this.threadDisplayStatusObject,\n [id]: nextStatus\n }\n },\n toggleThreadDisplay (id) {\n const curStatus = this.threadDisplayStatus[id]\n const nextStatus = curStatus === 'showing' ? 'hidden' : 'showing'\n this.setThreadDisplay(id, nextStatus)\n },\n setThreadDisplayRecursively (id, nextStatus) {\n this.setThreadDisplay(id, nextStatus)\n this.getReplies(id).map(k => k.id).map(id => this.setThreadDisplayRecursively(id, nextStatus))\n },\n showThreadRecursively (id) {\n this.setThreadDisplayRecursively(id, 'showing')\n },\n setStatusContentProperty (id, name, value) {\n this.statusContentPropertiesObject = {\n ...this.statusContentPropertiesObject,\n [id]: {\n ...this.statusContentPropertiesObject[id],\n [name]: value\n }\n }\n },\n toggleStatusContentProperty (id, name) {\n this.setStatusContentProperty(id, name, !this.statusContentProperties[id][name])\n },\n leastVisibleAncestor (id) {\n let cur = id\n let parent = this.parentOf(cur)\n while (cur) {\n // if the parent is showing it means cur is visible\n if (this.threadDisplayStatus[parent] === 'showing') {\n return cur\n }\n parent = this.parentOf(parent)\n cur = this.parentOf(cur)\n }\n // nothing found, fall back to toplevel\n return this.topLevel[0] ? this.topLevel[0].id : undefined\n },\n diveIntoStatus (id, preventScroll) {\n this.tryScrollTo(id)\n },\n diveToTopLevel () {\n this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot) || this.topLevel[0].id)\n },\n // only used when we are not on a page\n undive () {\n this.inlineDivePosition = null\n this.setHighlight(this.statusId)\n },\n tryScrollTo (id) {\n if (!id) {\n return\n }\n if (this.isPage) {\n // set statusId\n this.$router.push({ name: 'conversation', params: { id } })\n } else {\n this.inlineDivePosition = id\n }\n // Because the conversation can be unmounted when out of sight\n // and mounted again when it comes into sight,\n // the `mounted` or `created` function in `status` should not\n // contain scrolling calls, as we do not want the page to jump\n // when we scroll with an expanded conversation.\n //\n // Now the method is to rely solely on the `highlight` watcher\n // in `status` components.\n // In linear views, all statuses are rendered at all times, but\n // in tree views, it is possible that a change in active status\n // removes and adds status components (e.g. an originally child\n // status becomes an ancestor status, and thus they will be\n // different).\n // Here, let the components be rendered first, in order to trigger\n // the `highlight` watcher.\n this.$nextTick(() => {\n this.setHighlight(id)\n })\n },\n goToCurrent () {\n this.tryScrollTo(this.diveRoot || this.topLevel[0].id)\n },\n statusById (id) {\n return this.statusMap[id]\n },\n parentOf (id) {\n const status = this.statusById(id)\n if (!status) {\n return undefined\n }\n const { in_reply_to_status_id: parentId } = status\n if (!this.statusMap[parentId]) {\n return undefined\n }\n return parentId\n },\n parentOrSelf (id) {\n return this.parentOf(id) || id\n },\n // Ancestors of some status, from top to bottom\n ancestorsOf (id) {\n const ancestors = []\n let cur = this.parentOf(id)\n while (cur) {\n ancestors.unshift(this.statusMap[cur])\n cur = this.parentOf(cur)\n }\n return ancestors\n },\n topLevelAncestorOrSelfId (id) {\n let cur = id\n let parent = this.parentOf(id)\n while (parent) {\n cur = this.parentOf(cur)\n parent = this.parentOf(parent)\n }\n return cur\n },\n resetDisplayState () {\n this.undive()\n this.threadDisplayStatusObject = {}\n }\n }\n}\n\nexport default conversation\n","import { render } from \"./conversation.vue?vue&type=template&id=68e3b9cb\"\nimport script from \"./conversation.js?vue&type=script&lang=js\"\nexport * from \"./conversation.js?vue&type=script&lang=js\"\n\nimport \"./conversation.vue?vue&type=style&index=0&id=68e3b9cb&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"TimelineMenu\"\n :class=\"{ 'open': isOpen }\"\n :bound-to=\"{ x: 'container' }\"\n bound-to-selector=\".Timeline\"\n popover-class=\"timeline-menu-popover popover-default\"\n @show=\"openMenu\"\n @close=\"() => isOpen = false\"\n >\n <template #content>\n <ListsMenuContent\n v-if=\"useListsMenu\"\n :show-pin=\"false\"\n class=\"timelines\"\n />\n <ul v-else>\n <NavigationEntry\n v-for=\"item in timelinesList\"\n :key=\"item.name\"\n :show-pin=\"false\"\n :item=\"item\"\n />\n </ul>\n </template>\n <template #trigger>\n <span class=\"button-unstyled title timeline-menu-title\">\n <span class=\"timeline-title\">{{ timelineName() }}</span>\n <span>\n <FAIcon\n size=\"sm\"\n icon=\"chevron-down\"\n />\n </span>\n <span\n class=\"click-blocker\"\n @click=\"blockOpen\"\n />\n </span>\n </template>\n </Popover>\n</template>\n\n<script src=\"./timeline_menu.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.timeline-menu-popover {\n min-width: 24rem;\n max-width: 100vw;\n margin-top: 0.6rem;\n font-size: 1rem;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\n }\n\n a {\n display: block;\n padding: 0 0.65em;\n height: 3.5em;\n line-height: 3.5em;\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n }\n\n &.router-link-active {\n font-weight: bolder;\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--text;\n color: var(--selectedMenuText, $fallback--text);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n --icon: var(--selectedMenuIcon, $fallback--icon);\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n svg {\n margin-right: 0.4em;\n margin-left: -0.2em;\n }\n }\n\n li {\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n padding: 0;\n\n &:last-child a {\n border-bottom-right-radius: $fallback--panelRadius;\n border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n border-bottom-left-radius: $fallback--panelRadius;\n border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n }\n\n &:last-child {\n border: none;\n }\n }\n}\n\n.TimelineMenu {\n margin-right: auto;\n min-width: 0;\n\n .popover-trigger-button {\n vertical-align: bottom;\n }\n\n .panel::after {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n }\n\n .timeline-menu-title {\n margin: 0;\n cursor: pointer;\n user-select: none;\n width: 100%;\n display: flex;\n\n .timeline-menu-name {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n svg {\n margin-left: 0.6em;\n transition: transform 100ms;\n }\n\n .click-blocker {\n cursor: default;\n flex-grow: 1;\n }\n }\n\n &.open .timeline-menu-title svg {\n color: $fallback--text;\n color: var(--panelText, $fallback--text);\n transform: rotate(180deg);\n }\n\n .panel {\n box-shadow: var(--popoverShadow);\n }\n}\n</style>\n","import Popover from '../popover/popover.vue'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport { mapState } from 'vuex'\nimport { ListsMenuContent } from '../lists_menu/lists_menu_content.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { TIMELINES } from 'src/components/navigation/navigation.js'\nimport { filterNavigation } from 'src/components/navigation/filter.js'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faChevronDown)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n return {\n friends: 'nav.home_timeline',\n bookmarks: 'nav.bookmarks',\n dms: 'nav.dms',\n 'public-timeline': 'nav.public_tl',\n 'public-external-timeline': 'nav.twkn'\n }\n}\n\nconst TimelineMenu = {\n components: {\n Popover,\n NavigationEntry,\n ListsMenuContent\n },\n data () {\n return {\n isOpen: false\n }\n },\n created () {\n if (timelineNames()[this.$route.name]) {\n this.$store.dispatch('setLastTimeline', this.$route.name)\n }\n },\n computed: {\n useListsMenu () {\n const route = this.$route.name\n return route === 'lists-timeline'\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n }),\n timelinesList () {\n return filterNavigation(\n Object.entries(TIMELINES).map(([k, v]) => ({ ...v, name: k })),\n {\n hasChats: this.pleromaChatMessagesAvailable,\n isFederating: this.federating,\n isPrivate: this.privateMode,\n currentUser: this.currentUser\n }\n )\n }\n },\n methods: {\n openMenu () {\n // $nextTick is too fast, animation won't play back but\n // instead starts in fully open position. Low values\n // like 1-5 work on fast machines but not on mobile, 25\n // seems like a good compromise that plays without significant\n // added lag.\n setTimeout(() => {\n this.isOpen = true\n }, 25)\n },\n blockOpen (event) {\n // For the blank area inside the button element.\n // Just setting @click.stop=\"\" makes unintuitive behavior when\n // menu is open and clicking on the blank area doesn't close it.\n if (!this.isOpen) {\n event.stopPropagation()\n }\n },\n timelineName () {\n const route = this.$route.name\n if (route === 'tag-timeline') {\n return '#' + this.$route.params.tag\n }\n if (route === 'lists-timeline') {\n return this.$store.getters.findListTitle(this.$route.params.id)\n }\n const i18nkey = timelineNames()[this.$route.name]\n return i18nkey ? this.$t(i18nkey) : route\n }\n }\n}\n\nexport default TimelineMenu\n","import { render } from \"./timeline_menu.vue?vue&type=template&id=b7d0cae0\"\nimport script from \"./timeline_menu.js?vue&type=script&lang=js\"\nexport * from \"./timeline_menu.js?vue&type=script&lang=js\"\n\nimport \"./timeline_menu.vue?vue&type=style&index=0&id=b7d0cae0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Status from '../status/status.vue'\nimport { mapState } from 'vuex'\nimport timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport QuickFilterSettings from '../quick_filter_settings/quick_filter_settings.vue'\nimport QuickViewSettings from '../quick_view_settings/quick_view_settings.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faCirclePlus, faCog, faMinus, faArrowUp, faCheck } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faCog,\n faMinus,\n faArrowUp,\n faCirclePlus,\n faCheck\n)\n\nconst Timeline = {\n props: [\n 'timeline',\n 'timelineName',\n 'title',\n 'userId',\n 'listId',\n 'tag',\n 'embedded',\n 'count',\n 'pinnedStatusIds',\n 'inProfile',\n 'footerSlipgate' // reference to an element where we should put our footer\n ],\n data () {\n return {\n showScrollTop: false,\n paused: false,\n unfocused: false,\n bottomedOut: false,\n virtualScrollIndex: 0,\n blockingClicks: false\n }\n },\n components: {\n Status,\n Conversation,\n TimelineMenu,\n QuickFilterSettings,\n QuickViewSettings\n },\n computed: {\n filteredVisibleStatuses () {\n return this.timeline.visibleStatuses.filter(status => this.timelineName !== 'user' || (status.id >= this.timeline.minId && status.id <= this.timeline.maxId))\n },\n filteredPinnedStatusIds () {\n return (this.pinnedStatusIds || []).filter(statusId => this.timeline.statusesObject[statusId])\n },\n newStatusCount () {\n return this.timeline.newStatusCount\n },\n showLoadButton () {\n return this.timeline.newStatusCount > 0 || this.timeline.flushMarker !== 0\n },\n loadButtonString () {\n if (this.timeline.flushMarker !== 0) {\n return this.$t('timeline.reload')\n } else {\n return `${this.$t('timeline.show_new')} (${this.newStatusCount})`\n }\n },\n mobileLoadButtonString () {\n if (this.timeline.flushMarker !== 0) {\n return '+'\n } else {\n return this.newStatusCount > 99 ? '∞' : this.newStatusCount\n }\n },\n classes () {\n let rootClasses = !this.embedded ? ['panel', 'panel-default'] : ['-nonpanel']\n if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n return {\n root: rootClasses,\n header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading', '-sticky'] : []),\n body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n }\n },\n // id map of statuses which need to be hidden in the main list due to pinning logic\n pinnedStatusIdsObject () {\n return keyBy(this.pinnedStatusIds)\n },\n statusesToDisplay () {\n const amount = this.timeline.visibleStatuses.length\n const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n const nonPinnedIndex = this.virtualScrollIndex - this.filteredPinnedStatusIds.length\n const min = Math.max(0, nonPinnedIndex - statusesPerSide)\n const max = Math.min(amount, nonPinnedIndex + statusesPerSide)\n return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n },\n virtualScrollingEnabled () {\n return this.$store.getters.mergedConfig.virtualScrolling\n },\n ...mapState({\n mobileLayout: state => state.interface.layoutType === 'mobile'\n })\n },\n created () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n const showImmediately = this.timeline.visibleStatuses.length === 0\n\n window.addEventListener('scroll', this.handleScroll)\n\n if (store.state.api.fetchers[this.timelineName]) { return false }\n\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n showImmediately,\n userId: this.userId,\n listId: this.listId,\n tag: this.tag\n })\n },\n mounted () {\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.unfocused = document.hidden\n }\n window.addEventListener('keydown', this.handleShortKey)\n setTimeout(this.determineVisibleStatuses, 250)\n },\n unmounted () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('keydown', this.handleShortKey)\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.commit('setLoading', { timeline: this.timelineName, value: false })\n },\n methods: {\n scrollToTop () {\n window.scrollTo({ top: this.$el.offsetTop })\n },\n stopBlockingClicks: debounce(function () {\n this.blockingClicks = false\n }, 1000),\n blockClicksTemporarily () {\n if (!this.blockingClicks) {\n this.blockingClicks = true\n }\n this.stopBlockingClicks()\n },\n handleShortKey (e) {\n // Ignore when input fields are focused\n if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n if (e.key === '.') this.showNewStatuses()\n },\n showNewStatuses () {\n if (this.timeline.flushMarker !== 0) {\n this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n if (this.timelineName === 'user') {\n this.$store.dispatch('fetchPinnedStatuses', this.userId)\n }\n this.fetchOlderStatuses()\n } else {\n this.blockClicksTemporarily()\n this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n this.paused = false\n }\n window.scrollTo({ top: 0 })\n },\n fetchOlderStatuses: throttle(function () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setLoading', { timeline: this.timelineName, value: true })\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n older: true,\n showImmediately: true,\n userId: this.userId,\n listId: this.listId,\n tag: this.tag\n }).then(({ statuses }) => {\n if (statuses && statuses.length === 0) {\n this.bottomedOut = true\n }\n }).finally(() =>\n store.commit('setLoading', { timeline: this.timelineName, value: false })\n )\n }, 1000, this),\n determineVisibleStatuses () {\n if (!this.$refs.timeline) return\n if (!this.virtualScrollingEnabled) return\n\n const statuses = this.$refs.timeline.children\n const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n if (statuses.length === 0) return\n\n const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n // Start from approximating the index of some visible status by using the\n // the center of the screen on the timeline.\n let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n let err = statuses[approxIndex].getBoundingClientRect().y\n\n // if we have a previous scroll index that can be used, test if it's\n // closer than the previous approximation, use it if so\n\n const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n if (Math.abs(err) > virtualScrollIndexY) {\n approxIndex = cappedScrollIndex\n err = virtualScrollIndexY\n }\n\n // if the status is too far from viewport, check the next/previous ones if\n // they happen to be better\n while (err < -20 && approxIndex < statuses.length - 1) {\n err += statuses[approxIndex].offsetHeight\n approxIndex++\n }\n while (err > window.innerHeight + 100 && approxIndex > 0) {\n approxIndex--\n err -= statuses[approxIndex].offsetHeight\n }\n\n // this status is now the center point for virtual scrolling and visible\n // statuses will be nearby statuses before and after it\n this.virtualScrollIndex = approxIndex\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.timeline.loading === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n this.fetchOlderStatuses()\n }\n },\n handleScroll: throttle(function (e) {\n this.showScrollTop = this.$el.offsetTop < window.scrollY\n this.determineVisibleStatuses()\n this.scrollLoad(e)\n }, 200),\n handleVisibilityChange () {\n this.unfocused = document.hidden\n }\n },\n watch: {\n newStatusCount (count) {\n if (!this.$store.getters.mergedConfig.streaming) {\n return\n }\n if (count > 0) {\n // only 'stream' them when you're scrolled to the top\n const doc = document.documentElement\n const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n if (top < 15 &&\n !this.paused &&\n !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n ) {\n this.showNewStatuses()\n } else {\n this.paused = true\n }\n }\n }\n }\n}\n\nexport default Timeline\n","import { render } from \"./timeline.vue?vue&type=template&id=79de750e\"\nimport script from \"./timeline.js?vue&type=script&lang=js\"\nexport * from \"./timeline.js?vue&type=script&lang=js\"\n\nimport \"./timeline.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\nconst PublicTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.public }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'public' })\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'public')\n }\n\n}\n\nexport default PublicTimeline\n","import { render } from \"./public_timeline.vue?vue&type=template&id=5f2a502e\"\nimport script from \"./public_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.public_tl')\"\n :timeline=\"timeline\"\n :timeline-name=\"'public'\"\n />\n</template>\n\n<script src=\"./public_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\nconst PublicAndExternalTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.publicAndExternal }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'publicAndExternal' })\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'publicAndExternal')\n }\n}\n\nexport default PublicAndExternalTimeline\n","import { render } from \"./public_and_external_timeline.vue?vue&type=template&id=f6923484\"\nimport script from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.twkn')\"\n :timeline=\"timeline\"\n :timeline-name=\"'publicAndExternal'\"\n />\n</template>\n\n<script src=\"./public_and_external_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\nconst FriendsTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.friends }\n }\n}\n\nexport default FriendsTimeline\n","import { render } from \"./friends_timeline.vue?vue&type=template&id=22490669\"\nimport script from \"./friends_timeline.js?vue&type=script&lang=js\"\nexport * from \"./friends_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.timeline')\"\n :timeline=\"timeline\"\n :timeline-name=\"'friends'\"\n />\n</template>\n\n<script src=\"./friends_timeline.js\"></script>\n","import Timeline from '../timeline/timeline.vue'\n\nconst TagTimeline = {\n created () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n },\n components: {\n Timeline\n },\n computed: {\n tag () { return this.$route.params.tag },\n timeline () { return this.$store.state.statuses.timelines.tag }\n },\n watch: {\n tag () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n }\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'tag')\n }\n}\n\nexport default TagTimeline\n","import { render } from \"./tag_timeline.vue?vue&type=template&id=047310d3\"\nimport script from \"./tag_timeline.js?vue&type=script&lang=js\"\nexport * from \"./tag_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"tag\"\n :timeline=\"timeline\"\n :timeline-name=\"'tag'\"\n :tag=\"tag\"\n />\n</template>\n\n<script src='./tag_timeline.js'></script>\n","import Timeline from '../timeline/timeline.vue'\n\nconst Bookmarks = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.bookmarks\n }\n },\n components: {\n Timeline\n },\n unmounted () {\n this.$store.commit('clearTimeline', { timeline: 'bookmarks' })\n }\n}\n\nexport default Bookmarks\n","import { render } from \"./bookmark_timeline.vue?vue&type=template&id=2b9c8ba0\"\nimport script from \"./bookmark_timeline.js?vue&type=script&lang=js\"\nexport * from \"./bookmark_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.bookmarks')\"\n :timeline=\"timeline\"\n :timeline-name=\"'bookmarks'\"\n />\n</template>\n\n<script src=\"./bookmark_timeline.js\"></script>\n","import Conversation from '../conversation/conversation.vue'\n\nconst conversationPage = {\n components: {\n Conversation\n },\n computed: {\n statusId () {\n return this.$route.params.id\n }\n }\n}\n\nexport default conversationPage\n","import { render } from \"./conversation-page.vue?vue&type=template&id=46654d24\"\nimport script from \"./conversation-page.js?vue&type=script&lang=js\"\nexport * from \"./conversation-page.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <conversation\n :collapsable=\"false\"\n is-page=\"true\"\n :status-id=\"statusId\"\n />\n</template>\n\n<script src=\"./conversation-page.js\"></script>\n","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t(\"nav.interactions\") }}\n </div>\n </div>\n <tab-switcher\n ref=\"tabSwitcher\"\n :on-switch=\"onModeSwitch\"\n >\n <span\n key=\"mentions\"\n :label=\"$t('nav.mentions')\"\n />\n <span\n key=\"likes+repeats\"\n :label=\"$t('interactions.favs_repeats')\"\n />\n <span\n key=\"follows\"\n :label=\"$t('interactions.follows')\"\n />\n <span\n key=\"reactions\"\n :label=\"$t('interactions.emoji_reactions')\"\n />\n <span\n v-if=\"canSeeReports\"\n key=\"reports\"\n :label=\"$t('interactions.reports')\"\n />\n <span\n v-if=\"!allowFollowingMove\"\n key=\"moves\"\n :label=\"$t('interactions.moves')\"\n />\n </tab-switcher>\n <Notifications\n ref=\"notifications\"\n :no-heading=\"true\"\n :minimal-mode=\"true\"\n :filter-mode=\"filterMode\"\n />\n </div>\n</template>\n\n<script src=\"./interactions.js\"></script>\n","import Notifications from '../notifications/notifications.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nconst tabModeDict = {\n mentions: ['mention'],\n 'likes+repeats': ['repeat', 'like'],\n follows: ['follow'],\n reactions: ['pleroma:emoji_reaction'],\n reports: ['pleroma:report'],\n moves: ['move']\n}\n\nconst Interactions = {\n data () {\n return {\n allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n filterMode: tabModeDict.mentions,\n canSeeReports: this.$store.state.users.currentUser.privileges.includes('reports_manage_reports')\n }\n },\n methods: {\n onModeSwitch (key) {\n this.filterMode = tabModeDict[key]\n }\n },\n components: {\n Notifications,\n TabSwitcher\n }\n}\n\nexport default Interactions\n","import { render } from \"./interactions.vue?vue&type=template&id=3b173532\"\nimport script from \"./interactions.js?vue&type=script&lang=js\"\nexport * from \"./interactions.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\n\nconst DMs = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.dms\n }\n },\n components: {\n Timeline\n }\n}\n\nexport default DMs\n","import { render } from \"./dm_timeline.vue?vue&type=template&id=294f8b6d\"\nimport script from \"./dm_timeline.js?vue&type=script&lang=js\"\nexport * from \"./dm_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n :title=\"$t('nav.dms')\"\n :timeline=\"timeline\"\n :timeline-name=\"'dms'\"\n />\n</template>\n\n<script src=\"./dm_timeline.js\"></script>\n","<template>\n <div v-if=\"isNew\">\n <ChatNew @cancel=\"cancelNewChat\" />\n </div>\n <div\n v-else\n class=\"chat-list panel panel-default\"\n >\n <div class=\"panel-heading -sticky\">\n <span class=\"title\">\n {{ $t(\"chats.chats\") }}\n </span>\n <button\n class=\"button-default\"\n @click=\"newChat\"\n >\n {{ $t(\"chats.new\") }}\n </button>\n </div>\n <div class=\"panel-body\">\n <div\n v-if=\"sortedChatList.length > 0\"\n class=\"timeline\"\n >\n <List :items=\"sortedChatList\">\n <template #item=\"{item}\">\n <ChatListItem\n :key=\"item.id\"\n :compact=\"false\"\n :chat=\"item\"\n />\n </template>\n </List>\n </div>\n <div\n v-else\n class=\"emtpy-chat-list-alert\"\n >\n <span>{{ $t('chats.empty_chat_list_placeholder') }}</span>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_list.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.chat-list {\n min-height: 25em;\n margin-bottom: 0;\n}\n\n.emtpy-chat-list-alert {\n padding: 3em;\n font-size: 1.2em;\n display: flex;\n justify-content: center;\n color: $fallback--text;\n color: var(--faint, $fallback--text);\n}\n\n</style>\n","<template>\n <div\n class=\"chat-list-item\"\n @click.capture.prevent=\"openChat\"\n >\n <div class=\"chat-list-item-left\">\n <UserAvatar\n :user=\"chat.account\"\n height=\"48px\"\n width=\"48px\"\n />\n </div>\n <div class=\"chat-list-item-center\">\n <div class=\"heading\">\n <span\n v-if=\"chat.account\"\n class=\"name-and-account-name\"\n >\n <ChatTitle\n :user=\"chat.account\"\n />\n </span>\n <span class=\"heading-right\" />\n <div class=\"time-wrapper\">\n <Timeago\n :time=\"chat.updated_at\"\n :auto-update=\"60\"\n />\n </div>\n </div>\n <div class=\"chat-preview\">\n <StatusBody\n class=\"chat-preview-body\"\n :status=\"messageForStatusContent\"\n :single-line=\"true\"\n />\n <div\n v-if=\"chat.unread > 0\"\n class=\"badge badge-notification unread-chat-count\"\n >\n {{ chat.unread }}\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_list_item.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./chat_list_item\";\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { defineAsyncComponent } from 'vue'\n\nexport default {\n name: 'ChatTitle',\n components: {\n UserAvatar,\n RichContent,\n UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n },\n props: [\n 'user', 'withAvatar'\n ],\n computed: {\n title () {\n return this.user ? this.user.screen_name_ui : ''\n },\n htmlTitle () {\n return this.user ? this.user.name_html : ''\n }\n }\n}\n","import { render } from \"./chat_title.vue?vue&type=template&id=e9d70b10\"\nimport script from \"./chat_title.js?vue&type=script&lang=js\"\nexport * from \"./chat_title.js?vue&type=script&lang=js\"\n\nimport \"./chat_title.vue?vue&type=style&index=0&id=e9d70b10&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"chat-title\"\n :title=\"title\"\n >\n <UserPopover\n v-if=\"withAvatar && user\"\n class=\"avatar-container\"\n :user-id=\"user.id\"\n >\n <UserAvatar\n class=\"titlebar-avatar\"\n :user=\"user\"\n />\n </UserPopover>\n <RichContent\n v-if=\"user\"\n class=\"username\"\n :title=\"'@'+(user && user.screen_name_ui)\"\n :html=\"htmlTitle\"\n :emoji=\"user.emoji || []\"\n />\n </div>\n</template>\n\n<script src=\"./chat_title.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.chat-title {\n display: flex;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n --emoji-size: 14px;\n\n .username {\n max-width: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: inline;\n word-wrap: break-word;\n overflow: hidden;\n }\n\n .avatar-container {\n align-self: center;\n line-height: 1;\n }\n\n .titlebar-avatar {\n margin-right: 0.5em;\n height: 1.5em;\n width: 1.5em;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n\n &.animated::before {\n display: none;\n }\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport StatusBody from '../status_content/status_content.vue'\nimport fileType from 'src/services/file_type/file_type.service'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\n\nconst ChatListItem = {\n name: 'ChatListItem',\n props: [\n 'chat'\n ],\n components: {\n UserAvatar,\n AvatarList,\n Timeago,\n ChatTitle,\n StatusBody\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n attachmentInfo () {\n if (this.chat.lastMessage.attachments.length === 0) { return }\n\n const types = this.chat.lastMessage.attachments.map(file => fileType.fileType(file.mimetype))\n if (types.includes('video')) {\n return this.$t('file_type.video')\n } else if (types.includes('audio')) {\n return this.$t('file_type.audio')\n } else if (types.includes('image')) {\n return this.$t('file_type.image')\n } else {\n return this.$t('file_type.file')\n }\n },\n messageForStatusContent () {\n const message = this.chat.lastMessage\n const messageEmojis = message ? message.emojis : []\n const isYou = message && message.account_id === this.currentUser.id\n const content = message ? (this.attachmentInfo || message.content) : ''\n const messagePreview = isYou ? `<i>${this.$t('chats.you')}</i> ${content}` : content\n return {\n summary: '',\n emojis: messageEmojis,\n raw_html: messagePreview,\n text: messagePreview,\n attachments: []\n }\n }\n },\n methods: {\n openChat (_e) {\n if (this.chat.id) {\n this.$router.push({\n name: 'chat',\n params: {\n username: this.currentUser.screen_name,\n recipient_id: this.chat.account.id\n }\n })\n }\n }\n }\n}\n\nexport default ChatListItem\n","import { render } from \"./chat_list_item.vue?vue&type=template&id=a202646c\"\nimport script from \"./chat_list_item.js?vue&type=script&lang=js\"\nexport * from \"./chat_list_item.js?vue&type=script&lang=js\"\n\nimport \"./chat_list_item.vue?vue&type=style&index=0&id=a202646c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"panel-default panel chat-new\"\n >\n <div\n ref=\"header\"\n class=\"panel-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"goBack\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n </div>\n <div class=\"input-wrap\">\n <div class=\"input-search\">\n <FAIcon\n class=\"search-icon fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </div>\n <input\n ref=\"search\"\n v-model=\"query\"\n placeholder=\"Search people\"\n @input=\"onInput\"\n >\n </div>\n <div class=\"member-list\">\n <div\n v-for=\"user in availableUsers\"\n :key=\"user.id\"\n class=\"member\"\n >\n <div @click.capture.prevent=\"goToChat(user)\">\n <BasicUserCard :user=\"user\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat_new.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./chat_new\";\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst chatNew = {\n components: {\n BasicUserCard,\n UserAvatar\n },\n data () {\n return {\n suggestions: [],\n userIds: [],\n loading: false,\n query: ''\n }\n },\n async created () {\n const { chats } = await this.backendInteractor.chats()\n chats.forEach(chat => this.suggestions.push(chat.account))\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.findUser(userId))\n },\n availableUsers () {\n if (this.query.length !== 0) {\n return this.users\n } else {\n return this.suggestions\n }\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n backendInteractor: state => state.api.backendInteractor\n }),\n ...mapGetters(['findUser'])\n },\n methods: {\n goBack () {\n this.$emit('cancel')\n },\n goToChat (user) {\n this.$router.push({ name: 'chat', params: { recipient_id: user.id } })\n },\n onInput () {\n this.search(this.query)\n },\n addUser (user) {\n this.selectedUserIds.push(user.id)\n this.query = ''\n },\n removeUser (userId) {\n this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts' })\n .then(data => {\n this.loading = false\n this.userIds = data.accounts.map(a => a.id)\n })\n }\n }\n}\n\nexport default chatNew\n","import { render } from \"./chat_new.vue?vue&type=template&id=527ae593\"\nimport script from \"./chat_new.js?vue&type=script&lang=js\"\nexport * from \"./chat_new.js?vue&type=script&lang=js\"\n\nimport \"./chat_new.vue?vue&type=style&index=0&id=527ae593&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport ChatListItem from '../chat_list_item/chat_list_item.vue'\nimport ChatNew from '../chat_new/chat_new.vue'\nimport List from '../list/list.vue'\n\nconst ChatList = {\n components: {\n ChatListItem,\n List,\n ChatNew\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n ...mapGetters(['sortedChatList'])\n },\n data () {\n return {\n isNew: false\n }\n },\n created () {\n this.$store.dispatch('fetchChats', { latest: true })\n },\n methods: {\n cancelNewChat () {\n this.isNew = false\n this.$store.dispatch('fetchChats', { latest: true })\n },\n newChat () {\n this.isNew = true\n }\n }\n}\n\nexport default ChatList\n","import { render } from \"./chat_list.vue?vue&type=template&id=66fabc09\"\nimport script from \"./chat_list.js?vue&type=script&lang=js\"\nexport * from \"./chat_list.js?vue&type=script&lang=js\"\n\nimport \"./chat_list.vue?vue&type=style&index=0&id=66fabc09&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"chat-view\">\n <div class=\"chat-view-inner\">\n <div\n ref=\"inner\"\n class=\"panel-default panel chat-view-body\"\n >\n <div\n ref=\"header\"\n class=\"panel-heading -sticky chat-view-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"goBack\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n <div class=\"title text-center\">\n <ChatTitle\n :user=\"recipient\"\n :with-avatar=\"true\"\n />\n </div>\n </div>\n <div\n class=\"message-list\"\n :style=\"{ height: scrollableContainerHeight }\"\n >\n <template v-if=\"!errorLoadingChat\">\n <ChatMessage\n v-for=\"chatViewItem in chatViewItems\"\n :key=\"chatViewItem.id\"\n :author=\"recipient\"\n :chat-view-item=\"chatViewItem\"\n :hovered-message-chain=\"chatViewItem.messageChainId === hoveredMessageChainId\"\n @hover=\"onMessageHover\"\n />\n </template>\n <div\n v-else\n class=\"chat-loading-error\"\n >\n <div class=\"alert error\">\n {{ $t('chats.error_loading_chat') }}\n </div>\n </div>\n </div>\n <div\n ref=\"footer\"\n class=\"panel-body footer\"\n >\n <div\n class=\"jump-to-bottom-button\"\n :class=\"{ 'visible': jumpToBottomButtonVisible }\"\n @click=\"scrollDown({ behavior: 'smooth' })\"\n >\n <span>\n <FAIcon icon=\"chevron-down\" />\n <div\n v-if=\"newMessageCount\"\n class=\"badge badge-notification unread-chat-count unread-message-count\"\n >\n {{ newMessageCount }}\n </div>\n </span>\n </div>\n <PostStatusForm\n :disable-subject=\"true\"\n :disable-scope-selector=\"true\"\n :disable-notice=\"true\"\n :disable-lock-warning=\"true\"\n :disable-polls=\"true\"\n :disable-sensitivity-checkbox=\"true\"\n :disable-submit=\"errorLoadingChat || !currentChat\"\n :disable-preview=\"true\"\n :optimistic-posting=\"true\"\n :post-handler=\"sendMessage\"\n :submit-on-enter=\"!mobileLayout\"\n :preserve-focus=\"!mobileLayout\"\n :auto-focus=\"!mobileLayout\"\n :placeholder=\"formPlaceholder\"\n :file-limit=\"1\"\n max-height=\"160\"\n emoji-picker-placement=\"top\"\n @resize=\"handleResize\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./chat.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./chat\";\n</style>\n","<template>\n <div\n v-if=\"isMessage\"\n class=\"chat-message-wrapper\"\n :class=\"{ 'hovered-message-chain': hoveredMessageChain }\"\n @mouseover=\"onHover(true)\"\n @mouseleave=\"onHover(false)\"\n >\n <div\n class=\"chat-message\"\n :class=\"[{ 'outgoing': isCurrentUser, 'incoming': !isCurrentUser }]\"\n >\n <div\n v-if=\"!isCurrentUser\"\n class=\"avatar-wrapper\"\n >\n <UserPopover\n v-if=\"chatViewItem.isHead\"\n :user-id=\"author.id\"\n >\n <UserAvatar\n :compact=\"true\"\n :better-shadow=\"betterShadow\"\n :user=\"author\"\n />\n </UserPopover>\n </div>\n <div class=\"chat-message-inner\">\n <div\n class=\"status-body\"\n :style=\"{ 'min-width': message.attachment ? '80%' : '' }\"\n >\n <div\n class=\"media status\"\n :class=\"{ 'without-attachment': !hasAttachment, 'pending': chatViewItem.data.pending, 'error': chatViewItem.data.error }\"\n style=\"position: relative;\"\n @mouseenter=\"hovered = true\"\n @mouseleave=\"hovered = false\"\n >\n <div\n class=\"chat-message-menu\"\n :class=\"{ 'visible': hovered || menuOpened }\"\n >\n <Popover\n trigger=\"click\"\n placement=\"top\"\n bound-to-selector=\".chat-view-inner\"\n :bound-to=\"{ x: 'container' }\"\n :margin=\"popoverMarginStyle\"\n @show=\"menuOpened = true\"\n @close=\"menuOpened = false\"\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n @click=\"deleteMessage\"\n >\n <FAIcon icon=\"times\" /> {{ $t(\"chats.delete\") }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button\n class=\"button-default menu-icon\"\n :title=\"$t('chats.more')\"\n >\n <FAIcon icon=\"ellipsis-h\" />\n </button>\n </template>\n </Popover>\n </div>\n <StatusContent\n class=\"message-content\"\n :status=\"messageForStatusContent\"\n :full-content=\"true\"\n >\n <template #footer>\n <span\n class=\"created-at\"\n >\n {{ createdAt }}\n </span>\n </template>\n </StatusContent>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"chat-message-date-separator\"\n >\n <ChatMessageDate :date=\"chatViewItem.date\" />\n </div>\n</template>\n\n<script src=\"./chat_message.js\"></script>\n<style lang=\"scss\">\n@import \"./chat_message\";\n\n</style>\n","<template>\n <time>\n {{ displayDate }}\n </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['date'],\n computed: {\n displayDate () {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n\n if (this.date.getTime() === today.getTime()) {\n return this.$t('display_date.today')\n } else {\n return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n }\n }\n }\n}\n</script>\n","import { render } from \"./chat_message_date.vue?vue&type=template&id=23377998\"\nimport script from \"./chat_message_date.vue?vue&type=script&lang=js\"\nexport * from \"./chat_message_date.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport Popover from '../popover/popover.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport ChatMessageDate from '../chat_message_date/chat_message_date.vue'\nimport { defineAsyncComponent } from 'vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faEllipsisH\n)\n\nconst ChatMessage = {\n name: 'ChatMessage',\n props: [\n 'author',\n 'edited',\n 'noHeading',\n 'chatViewItem',\n 'hoveredMessageChain'\n ],\n emits: ['hover'],\n components: {\n Popover,\n Attachment,\n StatusContent,\n UserAvatar,\n Gallery,\n LinkPreview,\n ChatMessageDate,\n UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n },\n computed: {\n // Returns HH:MM (hours and minutes) in local time.\n createdAt () {\n const time = this.chatViewItem.data.created_at\n return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n },\n isCurrentUser () {\n return this.message.account_id === this.currentUser.id\n },\n message () {\n return this.chatViewItem.data\n },\n isMessage () {\n return this.chatViewItem.type === 'message'\n },\n messageForStatusContent () {\n return {\n summary: '',\n emojis: this.message.emojis,\n raw_html: this.message.content || '',\n text: this.message.content || '',\n attachments: this.message.attachments\n }\n },\n hasAttachment () {\n return this.message.attachments.length > 0\n },\n ...mapState({\n betterShadow: state => state.interface.browserSupport.cssFilter,\n currentUser: state => state.users.currentUser,\n restrictedNicknames: state => state.instance.restrictedNicknames\n }),\n popoverMarginStyle () {\n if (this.isCurrentUser) {\n return {}\n } else {\n return { left: 50 }\n }\n },\n ...mapGetters(['mergedConfig', 'findUser'])\n },\n data () {\n return {\n hovered: false,\n menuOpened: false\n }\n },\n methods: {\n onHover (bool) {\n this.$emit('hover', { isHovered: bool, messageChainId: this.chatViewItem.messageChainId })\n },\n async deleteMessage () {\n const confirmed = window.confirm(this.$t('chats.delete_confirm'))\n if (confirmed) {\n await this.$store.dispatch('deleteChatMessage', {\n messageId: this.chatViewItem.data.id,\n chatId: this.chatViewItem.data.chat_id\n })\n }\n this.hovered = false\n this.menuOpened = false\n }\n }\n}\n\nexport default ChatMessage\n","import { render } from \"./chat_message.vue?vue&type=template&id=e61e03a2\"\nimport script from \"./chat_message.js?vue&type=script&lang=js\"\nexport * from \"./chat_message.js?vue&type=script&lang=js\"\n\nimport \"./chat_message.vue?vue&type=style&index=0&id=e61e03a2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Captures a scroll position\nexport const getScrollPosition = () => {\n return {\n scrollTop: window.scrollY,\n scrollHeight: document.documentElement.scrollHeight,\n offsetHeight: window.innerHeight\n }\n}\n\n// A helper function that is used to keep the scroll position fixed as the new elements are added to the top\n// Takes two scroll positions, before and after the update.\nexport const getNewTopPosition = (previousPosition, newPosition) => {\n return previousPosition.scrollTop + (newPosition.scrollHeight - previousPosition.scrollHeight)\n}\n\nexport const isBottomedOut = (offset = 0) => {\n const scrollHeight = window.scrollY + offset\n const totalHeight = document.documentElement.scrollHeight - window.innerHeight\n return totalHeight <= scrollHeight\n}\n// Returns whether or not the scrollbar is visible.\nexport const isScrollable = () => {\n return document.documentElement.scrollHeight > window.innerHeight\n}\n","import _ from 'lodash'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport ChatMessage from '../chat_message/chat_message.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\nimport chatService from '../../services/chat_service/chat_service.js'\nimport { promiseInterval } from '../../services/promise_interval/promise_interval.js'\nimport { getScrollPosition, getNewTopPosition, isBottomedOut, isScrollable } from './chat_layout_utils.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { buildFakeMessage } from '../../services/chat_utils/chat_utils.js'\n\nlibrary.add(\n faChevronDown,\n faChevronLeft\n)\n\nconst BOTTOMED_OUT_OFFSET = 10\nconst JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 10\nconst SAFE_RESIZE_TIME_OFFSET = 100\nconst MARK_AS_READ_DELAY = 1500\nconst MAX_RETRIES = 10\n\nconst Chat = {\n components: {\n ChatMessage,\n ChatTitle,\n PostStatusForm\n },\n data () {\n return {\n jumpToBottomButtonVisible: false,\n hoveredMessageChainId: undefined,\n lastScrollPosition: {},\n scrollableContainerHeight: '100%',\n errorLoadingChat: false,\n messageRetriers: {}\n }\n },\n created () {\n this.startFetching()\n window.addEventListener('resize', this.handleResize)\n },\n mounted () {\n window.addEventListener('scroll', this.handleScroll)\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n }\n\n this.$nextTick(() => {\n this.handleResize()\n })\n },\n unmounted () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('resize', this.handleResize)\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.dispatch('clearCurrentChat')\n },\n computed: {\n recipient () {\n return this.currentChat && this.currentChat.account\n },\n recipientId () {\n return this.$route.params.recipient_id\n },\n formPlaceholder () {\n if (this.recipient) {\n return this.$t('chats.message_user', { nickname: this.recipient.screen_name_ui })\n } else {\n return ''\n }\n },\n chatViewItems () {\n return chatService.getView(this.currentChatMessageService)\n },\n newMessageCount () {\n return this.currentChatMessageService && this.currentChatMessageService.newMessageCount\n },\n streamingEnabled () {\n return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n },\n ...mapGetters([\n 'currentChat',\n 'currentChatMessageService',\n 'findOpenedChatByRecipientId',\n 'mergedConfig'\n ]),\n ...mapState({\n backendInteractor: state => state.api.backendInteractor,\n mastoUserSocketStatus: state => state.api.mastoUserSocketStatus,\n mobileLayout: state => state.interface.layoutType === 'mobile',\n currentUser: state => state.users.currentUser\n })\n },\n watch: {\n chatViewItems () {\n // We don't want to scroll to the bottom on a new message when the user is viewing older messages.\n // Therefore we need to know whether the scroll position was at the bottom before the DOM update.\n const bottomedOutBeforeUpdate = this.bottomedOut(BOTTOMED_OUT_OFFSET)\n this.$nextTick(() => {\n if (bottomedOutBeforeUpdate) {\n this.scrollDown()\n }\n })\n },\n $route: function () {\n this.startFetching()\n },\n mastoUserSocketStatus (newValue) {\n if (newValue === WSConnectionStatus.JOINED) {\n this.fetchChat({ isFirstFetch: true })\n }\n }\n },\n methods: {\n // Used to animate the avatar near the first message of the message chain when any message belonging to the chain is hovered\n onMessageHover ({ isHovered, messageChainId }) {\n this.hoveredMessageChainId = isHovered ? messageChainId : undefined\n },\n onFilesDropped () {\n this.$nextTick(() => {\n this.handleResize()\n })\n },\n handleVisibilityChange () {\n this.$nextTick(() => {\n if (!document.hidden && this.bottomedOut(BOTTOMED_OUT_OFFSET)) {\n this.scrollDown({ forceRead: true })\n }\n })\n },\n // \"Sticks\" scroll to bottom instead of top, helps with OSK resizing the viewport\n handleResize (opts = {}) {\n const { delayed = false } = opts\n\n if (delayed) {\n setTimeout(() => {\n this.handleResize({ ...opts, delayed: false })\n }, SAFE_RESIZE_TIME_OFFSET)\n return\n }\n\n this.$nextTick(() => {\n const { offsetHeight = undefined } = getScrollPosition()\n const diff = offsetHeight - this.lastScrollPosition.offsetHeight\n if (diff !== 0 && !this.bottomedOut()) {\n this.$nextTick(() => {\n window.scrollBy({ top: -Math.trunc(diff) })\n })\n }\n this.lastScrollPosition = getScrollPosition()\n })\n },\n scrollDown (options = {}) {\n const { behavior = 'auto', forceRead = false } = options\n this.$nextTick(() => {\n window.scrollTo({ top: document.documentElement.scrollHeight, behavior })\n })\n if (forceRead) {\n this.readChat()\n }\n },\n readChat () {\n if (!(this.currentChatMessageService && this.currentChatMessageService.maxId)) { return }\n if (document.hidden) { return }\n const lastReadId = this.currentChatMessageService.maxId\n this.$store.dispatch('readChat', {\n id: this.currentChat.id,\n lastReadId\n })\n },\n bottomedOut (offset) {\n return isBottomedOut(offset)\n },\n reachedTop () {\n return window.scrollY <= 0\n },\n cullOlderCheck () {\n window.setTimeout(() => {\n if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)\n }\n }, 5000)\n },\n handleScroll: _.throttle(function () {\n this.lastScrollPosition = getScrollPosition()\n if (!this.currentChat) { return }\n\n if (this.reachedTop()) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.jumpToBottomButtonVisible = false\n this.cullOlderCheck()\n if (this.newMessageCount > 0) {\n // Use a delay before marking as read to prevent situation where new messages\n // arrive just as you're leaving the view and messages that you didn't actually\n // get to see get marked as read.\n window.setTimeout(() => {\n // Don't mark as read if the element doesn't exist, user has left chat view\n if (this.$el) this.readChat()\n }, MARK_AS_READ_DELAY)\n }\n } else {\n this.jumpToBottomButtonVisible = true\n }\n }, 200),\n handleScrollUp (positionBeforeLoading) {\n const positionAfterLoading = getScrollPosition()\n window.scrollTo({\n top: getNewTopPosition(positionBeforeLoading, positionAfterLoading)\n })\n },\n fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n const chatMessageService = this.currentChatMessageService\n if (!chatMessageService) { return }\n if (fetchLatest && this.streamingEnabled) { return }\n\n const chatId = chatMessageService.chatId\n const fetchOlderMessages = !!maxId\n const sinceId = fetchLatest && chatMessageService.maxId\n\n return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n .then((messages) => {\n // Clear the current chat in case we're recovering from a ws connection loss.\n if (isFirstFetch) {\n chatService.clear(chatMessageService)\n }\n\n const positionBeforeUpdate = getScrollPosition()\n this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n this.$nextTick(() => {\n if (fetchOlderMessages) {\n this.handleScrollUp(positionBeforeUpdate)\n }\n\n // In vertical screens, the first batch of fetched messages may not always take the\n // full height of the scrollable container.\n // If this is the case, we want to fetch the messages until the scrollable container\n // is fully populated so that the user has the ability to scroll up and load the history.\n if (!isScrollable() && messages.length > 0) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n }\n })\n })\n })\n },\n async startFetching () {\n let chat = this.findOpenedChatByRecipientId(this.recipientId)\n if (!chat) {\n try {\n chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n } catch (e) {\n console.error('Error creating or getting a chat', e)\n this.errorLoadingChat = true\n }\n }\n if (chat) {\n this.$nextTick(() => {\n this.scrollDown({ forceRead: true })\n })\n this.$store.dispatch('addOpenedChat', { chat })\n this.doStartFetching()\n }\n },\n doStartFetching () {\n this.$store.dispatch('startFetchingCurrentChat', {\n fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n })\n this.fetchChat({ isFirstFetch: true })\n },\n handleAttachmentPosting () {\n this.$nextTick(() => {\n this.handleResize()\n // When the posting form size changes because of a media attachment, we need an extra resize\n // to account for the potential delay in the DOM update.\n this.scrollDown({ forceRead: true })\n })\n },\n sendMessage ({ status, media, idempotencyKey }) {\n const params = {\n id: this.currentChat.id,\n content: status,\n idempotencyKey\n }\n\n if (media[0]) {\n params.mediaId = media[0].id\n }\n\n const fakeMessage = buildFakeMessage({\n attachments: media,\n chatId: this.currentChat.id,\n content: status,\n userId: this.currentUser.id,\n idempotencyKey\n })\n\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n messages: [fakeMessage]\n }).then(() => {\n this.handleAttachmentPosting()\n })\n\n return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n },\n doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n if (retriesLeft <= 0) return\n\n this.backendInteractor.sendChatMessage(params)\n .then(data => {\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n updateMaxId: false,\n messages: [{ ...data, fakeId: fakeMessage.id }]\n })\n\n return data\n })\n .catch(error => {\n console.error('Error sending message', error)\n this.$store.dispatch('handleMessageError', {\n chatId: this.currentChat.id,\n fakeId: fakeMessage.id,\n isRetry: retriesLeft !== MAX_RETRIES\n })\n if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n }\n return {}\n })\n\n return Promise.resolve(fakeMessage)\n },\n goBack () {\n this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n }\n }\n}\n\nexport default Chat\n","import { render } from \"./chat.vue?vue&type=template&id=796d1749\"\nimport script from \"./chat.js?vue&type=script&lang=js\"\nexport * from \"./chat.js?vue&type=script&lang=js\"\n\nimport \"./chat.vue?vue&type=style&index=0&id=796d1749&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <div\n v-if=\"user\"\n class=\"user-profile panel panel-default\"\n >\n <UserCard\n :user-id=\"userId\"\n :switcher=\"true\"\n :selected=\"timeline.viewing\"\n avatar-action=\"zoom\"\n rounded=\"top\"\n :has-note-editor=\"true\"\n />\n <span\n v-if=\"!!user.birthday\"\n class=\"user-birthday\"\n >\n <FAIcon\n class=\"fa-old-padding\"\n icon=\"birthday-cake\"\n />\n {{ $t('user_card.birthday', { birthday: formattedBirthday }) }}\n </span>\n <div\n v-if=\"user.fields_html && user.fields_html.length > 0\"\n class=\"user-profile-fields\"\n >\n <dl\n v-for=\"(field, index) in user.fields_html\"\n :key=\"index\"\n class=\"user-profile-field\"\n >\n <dt\n :title=\"user.fields_text[index].name\"\n class=\"user-profile-field-name\"\n >\n <RichContent\n :html=\"field.name\"\n :emoji=\"user.emoji\"\n />\n </dt>\n <dd\n :title=\"user.fields_text[index].value\"\n class=\"user-profile-field-value\"\n >\n <RichContent\n :html=\"field.value\"\n :emoji=\"user.emoji\"\n />\n </dd>\n </dl>\n </div>\n <tab-switcher\n :active-tab=\"tab\"\n :render-only-focused=\"true\"\n :on-switch=\"onTabSwitch\"\n >\n <Timeline\n key=\"statuses\"\n :label=\"$t('user_card.statuses')\"\n :count=\"user.statuses_count\"\n :embedded=\"true\"\n :title=\"$t('user_profile.timeline_title')\"\n :timeline=\"timeline\"\n timeline-name=\"user\"\n :user-id=\"userId\"\n :pinned-status-ids=\"user.pinnedStatusIds\"\n :in-profile=\"true\"\n :footer-slipgate=\"footerRef\"\n />\n <div\n v-if=\"followsTabVisible\"\n key=\"followees\"\n :label=\"$t('user_card.followees')\"\n :disabled=\"!user.friends_count\"\n >\n <FriendList :user-id=\"userId\">\n <template #item=\"{item}\">\n <FollowCard :user=\"item\" />\n </template>\n </FriendList>\n </div>\n <div\n v-if=\"followersTabVisible\"\n key=\"followers\"\n :label=\"$t('user_card.followers')\"\n :disabled=\"!user.followers_count\"\n >\n <FollowerList :user-id=\"userId\">\n <template #item=\"{item}\">\n <FollowCard\n :user=\"item\"\n :no-follows-you=\"isUs\"\n />\n </template>\n </FollowerList>\n </div>\n <Timeline\n key=\"media\"\n :label=\"$t('user_card.media')\"\n :disabled=\"!media.visibleStatuses.length\"\n :embedded=\"true\"\n :title=\"$t('user_card.media')\"\n timeline-name=\"media\"\n :timeline=\"media\"\n :user-id=\"userId\"\n :in-profile=\"true\"\n :footer-slipgate=\"footerRef\"\n />\n <Timeline\n v-if=\"isUs\"\n key=\"favorites\"\n :label=\"$t('user_card.favorites')\"\n :disabled=\"!favorites.visibleStatuses.length\"\n :embedded=\"true\"\n :title=\"$t('user_card.favorites')\"\n timeline-name=\"favorites\"\n :timeline=\"favorites\"\n :in-profile=\"true\"\n :footer-slipgate=\"footerRef\"\n />\n </tab-switcher>\n <div\n :ref=\"setFooterRef\"\n class=\"panel-footer\"\n />\n </div>\n <div\n v-else\n class=\"panel user-profile-placeholder\"\n >\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('settings.profile_tab') }}\n </div>\n </div>\n <div class=\"panel-body\">\n <span v-if=\"error\">{{ error }}</span>\n <FAIcon\n v-else\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./user_profile.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-profile {\n flex: 2;\n flex-basis: 500px;\n\n // No sticky header on user profile\n --currentPanelStack: 1;\n\n .user-birthday {\n margin: 0 0.75em 0.5em;\n }\n\n .user-profile-fields {\n margin: 0 0.5em;\n\n img {\n object-fit: contain;\n vertical-align: middle;\n max-width: 100%;\n max-height: 400px;\n\n &.emoji {\n width: 18px;\n height: 18px;\n }\n }\n\n .user-profile-field {\n display: flex;\n margin: 0.25em;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--inputRadius;\n border-radius: var(--inputRadius, $fallback--inputRadius);\n\n .user-profile-field-name {\n flex: 0 1 30%;\n font-weight: 500;\n text-align: right;\n color: var(--lightText);\n min-width: 120px;\n border-right: 1px solid var(--border, $fallback--border);\n }\n\n .user-profile-field-value {\n flex: 1 1 70%;\n color: var(--text);\n margin: 0 0 0 0.25em;\n }\n\n .user-profile-field-name,\n .user-profile-field-value {\n line-height: 1.3;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n padding: 0.5em 1.5em;\n box-sizing: border-box;\n }\n }\n }\n\n .userlist-placeholder {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 2em;\n }\n}\n\n.user-profile-placeholder {\n .panel-body {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 7em;\n }\n}\n</style>\n","<template>\n <basic-user-card :user=\"user\">\n <div class=\"follow-card-content-container\">\n <span\n v-if=\"isMe || (!noFollowsYou && relationship.followed_by)\"\n class=\"faint\"\n >\n {{ isMe ? $t('user_card.its_you') : $t('user_card.follows_you') }}\n </span>\n <template v-if=\"!loggedIn\">\n <div\n v-if=\"!relationship.following\"\n class=\"follow-card-follow-button\"\n >\n <RemoteFollow :user=\"user\" />\n </div>\n </template>\n <template v-else-if=\"!isMe\">\n <FollowButton\n :relationship=\"relationship\"\n :label-following=\"$t('user_card.follow_unfollow')\"\n class=\"follow-card-follow-button\"\n :user=\"user\"\n />\n <RemoveFollowerButton\n v-if=\"noFollowsYou && relationship.followed_by\"\n :user=\"user\"\n :relationship=\"relationship\"\n class=\"follow-card-button\"\n />\n </template>\n </div>\n </basic-user-card>\n</template>\n\n<script src=\"./follow_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-card {\n &-content-container {\n flex-shrink: 0;\n display: flex;\n flex-flow: row wrap;\n justify-content: space-between;\n line-height: 1.5em;\n }\n\n &-button {\n margin-top: 0.5em;\n padding: 0 1.5em;\n margin-left: 1em;\n }\n\n &-follow-button {\n margin-top: 0.5em;\n margin-left: auto;\n width: 10em;\n }\n}\n</style>\n","import ConfirmModal from '../confirm_modal/confirm_modal.vue'\n\nexport default {\n props: ['user', 'relationship'],\n data () {\n return {\n inProgress: false,\n showingConfirmRemoveFollower: false\n }\n },\n components: {\n ConfirmModal\n },\n computed: {\n label () {\n if (this.inProgress) {\n return this.$t('user_card.follow_progress')\n } else {\n return this.$t('user_card.remove_follower')\n }\n },\n shouldConfirmRemoveUserFromFollowers () {\n return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers\n }\n },\n methods: {\n showConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = true\n },\n hideConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = false\n },\n onClick () {\n if (!this.shouldConfirmRemoveUserFromFollowers) {\n this.doRemoveUserFromFollowers()\n } else {\n this.showConfirmRemoveUserFromFollowers()\n }\n },\n doRemoveUserFromFollowers () {\n this.inProgress = true\n this.$store.dispatch('removeUserFromFollowers', this.relationship.id).then(() => {\n this.inProgress = false\n })\n this.hideConfirmRemoveUserFromFollowers()\n }\n }\n}\n","import { render } from \"./remove_follower_button.vue?vue&type=template&id=bc80064a\"\nimport script from \"./remove_follower_button.js?vue&type=script&lang=js\"\nexport * from \"./remove_follower_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n class=\"btn button-default follow-button\"\n :class=\"{ toggled: inProgress }\"\n :disabled=\"inProgress\"\n :title=\"$t('user_card.remove_follower')\"\n @click=\"onClick\"\n >\n {{ label }}\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmRemoveFollower\"\n :title=\"$t('user_card.remove_follower_confirm_title')\"\n :confirm-text=\"$t('user_card.remove_follower_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.remove_follower_confirm_cancel_button')\"\n @accepted=\"doRemoveUserFromFollowers\"\n @cancelled=\"hideConfirmRemoveUserFromFollowers\"\n >\n <i18n-t\n keypath=\"user_card.remove_follower_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n </button>\n</template>\n\n<script src=\"./remove_follower_button.js\"></script>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport RemoveFollowerButton from '../remove_follower_button/remove_follower_button.vue'\n\nconst FollowCard = {\n props: [\n 'user',\n 'noFollowsYou'\n ],\n components: {\n BasicUserCard,\n RemoteFollow,\n FollowButton,\n RemoveFollowerButton\n },\n computed: {\n isMe () {\n return this.$store.state.users.currentUser.id === this.user.id\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n relationship () {\n return this.$store.getters.relationship(this.user.id)\n }\n }\n}\n\nexport default FollowCard\n","import { render } from \"./follow_card.vue?vue&type=template&id=e6b6839c\"\nimport script from \"./follow_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_card.vue?vue&type=style&index=0&id=e6b6839c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\nimport localeService from 'src/services/locale/locale.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faBirthdayCake\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faBirthdayCake\n)\n\nconst FollowerList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n data () {\n return {\n error: false,\n userId: null,\n tab: defaultTabKey,\n footerRef: null\n }\n },\n created () {\n const routeParams = this.$route.params\n this.load({ name: routeParams.name, id: routeParams.id })\n this.tab = get(this.$route, 'query.tab', defaultTabKey)\n },\n unmounted () {\n this.stopFetching()\n },\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.user\n },\n favorites () {\n return this.$store.state.statuses.timelines.favorites\n },\n media () {\n return this.$store.state.statuses.timelines.media\n },\n isUs () {\n return this.userId && this.$store.state.users.currentUser.id &&\n this.userId === this.$store.state.users.currentUser.id\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n isExternal () {\n return this.$route.name === 'external-user-profile'\n },\n followsTabVisible () {\n return this.isUs || !this.user.hide_follows\n },\n followersTabVisible () {\n return this.isUs || !this.user.hide_followers\n },\n formattedBirthday () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return this.user.birthday && new Date(Date.parse(this.user.birthday)).toLocaleDateString(browserLocale, { timeZone: 'UTC', day: 'numeric', month: 'long', year: 'numeric' })\n }\n },\n methods: {\n setFooterRef (el) {\n this.footerRef = el\n },\n load (userNameOrId) {\n const startFetchingTimeline = (timeline, userId) => {\n // Clear timeline only if load another user's profile\n if (userId !== this.$store.state.statuses.timelines[timeline].userId) {\n this.$store.commit('clearTimeline', { timeline })\n }\n this.$store.dispatch('startFetchingTimeline', { timeline, userId })\n }\n\n const loadById = (userId) => {\n this.userId = userId\n startFetchingTimeline('user', userId)\n startFetchingTimeline('media', userId)\n if (this.isUs) {\n startFetchingTimeline('favorites', userId)\n }\n // Fetch all pinned statuses immediately\n this.$store.dispatch('fetchPinnedStatuses', userId)\n }\n\n // Reset view\n this.userId = null\n this.error = false\n\n const maybeId = userNameOrId.id\n const maybeName = userNameOrId.name\n\n // Check if user data is already loaded in store\n const user = maybeId ? this.$store.getters.findUser(maybeId) : this.$store.getters.findUserByName(maybeName)\n if (user) {\n loadById(user.id)\n } else {\n (maybeId\n ? this.$store.dispatch('fetchUser', maybeId)\n : this.$store.dispatch('fetchUserByName', maybeName))\n .then(({ id }) => loadById(id))\n .catch((reason) => {\n const errorMessage = get(reason, 'error.error')\n if (errorMessage === 'No user with such user_id') { // Known error\n this.error = this.$t('user_profile.profile_does_not_exist')\n } else if (errorMessage) {\n this.error = errorMessage\n } else {\n this.error = this.$t('user_profile.profile_loading_error')\n }\n })\n }\n },\n stopFetching () {\n this.$store.dispatch('stopFetchingTimeline', 'user')\n this.$store.dispatch('stopFetchingTimeline', 'favorites')\n this.$store.dispatch('stopFetchingTimeline', 'media')\n },\n switchUser (userNameOrId) {\n this.stopFetching()\n this.load(userNameOrId)\n },\n onTabSwitch (tab) {\n this.tab = tab\n this.$router.replace({ query: { tab } })\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n }\n },\n watch: {\n '$route.params.id': function (newVal) {\n if (newVal) {\n this.switchUser({ id: newVal })\n }\n },\n '$route.params.name': function (newVal) {\n if (newVal) {\n this.switchUser({ name: newVal })\n }\n },\n '$route.query': function (newVal) {\n this.tab = newVal.tab || defaultTabKey\n }\n },\n components: {\n UserCard,\n Timeline,\n FollowerList,\n FriendList,\n FollowCard,\n TabSwitcher,\n Conversation,\n RichContent\n }\n}\n\nexport default UserProfile\n","import { render } from \"./user_profile.vue?vue&type=template&id=3af4c11e\"\nimport script from \"./user_profile.js?vue&type=script&lang=js\"\nexport * from \"./user_profile.js?vue&type=script&lang=js\"\n\nimport \"./user_profile.vue?vue&type=style&index=0&id=3af4c11e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('nav.search') }}\n </div>\n </div>\n <div class=\"search-input-container\">\n <input\n ref=\"searchInput\"\n v-model=\"searchTerm\"\n class=\"search-input\"\n :placeholder=\"$t('nav.search')\"\n @keyup.enter=\"newQuery(searchTerm)\"\n >\n <button\n class=\"btn button-default search-button\"\n type=\"submit\"\n @click=\"newQuery(searchTerm)\"\n >\n <FAIcon icon=\"search\" />\n </button>\n </div>\n <div\n v-if=\"loading && statusesOffset == 0\"\n class=\"text-center loading-icon\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n <div v-else-if=\"loaded\">\n <div class=\"search-nav-heading\">\n <tab-switcher\n ref=\"tabSwitcher\"\n :on-switch=\"onResultTabSwitch\"\n :active-tab=\"currenResultTab\"\n >\n <span\n key=\"statuses\"\n :label=\"$t('user_card.statuses') + resultCount('visibleStatuses')\"\n />\n <span\n key=\"people\"\n :label=\"$t('search.people') + resultCount('users')\"\n />\n <span\n key=\"hashtags\"\n :label=\"$t('search.hashtags') + resultCount('hashtags')\"\n />\n </tab-switcher>\n </div>\n </div>\n <div class=\"panel-body\">\n <div v-if=\"currenResultTab === 'statuses'\">\n <Status\n v-for=\"status in visibleStatuses\"\n :key=\"status.id\"\n :collapsable=\"false\"\n :expandable=\"false\"\n :compact=\"false\"\n class=\"search-result\"\n :statusoid=\"status\"\n :no-heading=\"false\"\n />\n <button\n v-if=\"!loading && loaded && lastStatusFetchCount > 0\"\n class=\"more-statuses-button button-unstyled -link -fullwidth\"\n @click.prevent=\"search(searchTerm, 'statuses')\"\n >\n <div class=\"new-status-notification text-center\">\n {{ $t('search.load_more') }}\n </div>\n </button>\n <div\n v-else-if=\"loading && statusesOffset > 0\"\n class=\"text-center loading-icon\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n <div\n v-if=\"(visibleStatuses.length === 0 || lastStatusFetchCount === 0) && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>\n {{ visibleStatuses.length === 0 ? $t('search.no_results') : $t('search.no_more_results') }}\n </h4>\n </div>\n </div>\n <div v-else-if=\"currenResultTab === 'people'\">\n <div\n v-if=\"users.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\n <FollowCard\n v-for=\"user in users\"\n :key=\"user.id\"\n :user=\"user\"\n class=\"list-item search-result\"\n />\n </div>\n <div v-else-if=\"currenResultTab === 'hashtags'\">\n <div\n v-if=\"hashtags.length === 0 && !loading && loaded\"\n class=\"search-result-heading\"\n >\n <h4>{{ $t('search.no_results') }}</h4>\n </div>\n <div\n v-for=\"hashtag in hashtags\"\n :key=\"hashtag.url\"\n class=\"status trend search-result\"\n >\n <div class=\"hashtag\">\n <router-link :to=\"{ name: 'tag-timeline', params: { tag: hashtag.name } }\">\n #{{ hashtag.name }}\n </router-link>\n <div v-if=\"lastHistoryRecord(hashtag)\">\n <span v-if=\"lastHistoryRecord(hashtag).accounts == 1\">\n {{ $t('search.person_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n </span>\n <span v-else>\n {{ $t('search.people_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n </span>\n </div>\n </div>\n <div\n v-if=\"lastHistoryRecord(hashtag)\"\n class=\"count\"\n >\n {{ lastHistoryRecord(hashtag).uses }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"search-result-footer text-center panel-footer faint\" />\n </div>\n</template>\n\n<script src=\"./search.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.search-result-heading {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n padding: 0.75rem;\n text-align: center;\n}\n\n@media all and (max-width: 800px) {\n .search-nav-heading {\n .tab-switcher .tabs .tab-wrapper {\n display: block;\n justify-content: center;\n flex: 1 1 auto;\n text-align: center;\n }\n }\n}\n\n.search-result {\n box-sizing: border-box;\n border-bottom: 1px solid;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n\n.search-result-footer {\n border-width: 1px 0 0;\n border-style: solid;\n border-color: var(--border, $fallback--border);\n padding: 10px;\n background-color: $fallback--fg;\n background-color: var(--panel, $fallback--fg);\n}\n\n.search-input-container {\n padding: 0.8rem;\n display: flex;\n justify-content: center;\n\n .search-input {\n width: 100%;\n line-height: 1.125rem;\n font-size: 1rem;\n padding: 0.5rem;\n box-sizing: border-box;\n }\n\n .search-button {\n margin-left: 0.5em;\n }\n}\n\n.loading-icon {\n padding: 1em;\n}\n\n.trend {\n display: flex;\n align-items: center;\n\n .hashtag {\n flex: 1 1 auto;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .count {\n flex: 0 0 auto;\n width: 2rem;\n font-size: 1.5rem;\n line-height: 2.25rem;\n font-weight: 500;\n text-align: center;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n\n.more-statuses-button {\n height: 3.5em;\n line-height: 3.5em;\n}\n\n</style>\n","import FollowCard from '../follow_card/follow_card.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport Status from '../status/status.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport map from 'lodash/map'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faSearch\n} from '@fortawesome/free-solid-svg-icons'\nimport { uniqBy } from 'lodash'\n\nlibrary.add(\n faCircleNotch,\n faSearch\n)\n\nconst Search = {\n components: {\n FollowCard,\n Conversation,\n Status,\n TabSwitcher\n },\n props: [\n 'query'\n ],\n data () {\n return {\n loaded: false,\n loading: false,\n searchTerm: this.query || '',\n userIds: [],\n statuses: [],\n hashtags: [],\n currenResultTab: 'statuses',\n\n statusesOffset: 0,\n lastStatusFetchCount: 0,\n lastQuery: ''\n }\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.$store.getters.findUser(userId))\n },\n visibleStatuses () {\n const allStatusesObject = this.$store.state.statuses.allStatusesObject\n\n return this.statuses.filter(status =>\n allStatusesObject[status.id] && !allStatusesObject[status.id].deleted\n )\n }\n },\n mounted () {\n this.search(this.query)\n },\n watch: {\n query (newValue) {\n this.searchTerm = newValue\n this.search(newValue)\n }\n },\n methods: {\n newQuery (query) {\n this.$router.push({ name: 'search', query: { query } })\n this.$refs.searchInput.focus()\n },\n search (query, searchType = null) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.$refs.searchInput.blur()\n if (this.lastQuery !== query) {\n this.userIds = []\n this.hashtags = []\n this.statuses = []\n\n this.statusesOffset = 0\n this.lastStatusFetchCount = 0\n }\n\n this.$store.dispatch('search', { q: query, resolve: true, offset: this.statusesOffset, type: searchType })\n .then(data => {\n this.loading = false\n\n const oldLength = this.statuses.length\n\n // Always append to old results. If new results are empty, this doesn't change anything\n this.userIds = this.userIds.concat(map(data.accounts, 'id'))\n this.statuses = uniqBy(this.statuses.concat(data.statuses), 'id')\n this.hashtags = this.hashtags.concat(data.hashtags)\n\n this.currenResultTab = this.getActiveTab()\n this.loaded = true\n\n // Offset from whatever we already have\n this.statusesOffset = this.statuses.length\n // Because the amount of new statuses can actually be zero, compare to old lenght instead\n this.lastStatusFetchCount = this.statuses.length - oldLength\n this.lastQuery = query\n })\n },\n resultCount (tabName) {\n const length = this[tabName].length\n return length === 0 ? '' : ` (${length})`\n },\n onResultTabSwitch (key) {\n this.currenResultTab = key\n },\n getActiveTab () {\n if (this.visibleStatuses.length > 0) {\n return 'statuses'\n } else if (this.users.length > 0) {\n return 'people'\n } else if (this.hashtags.length > 0) {\n return 'hashtags'\n }\n\n return 'statuses'\n },\n lastHistoryRecord (hashtag) {\n return hashtag.history && hashtag.history[0]\n }\n }\n}\n\nexport default Search\n","import { render } from \"./search.vue?vue&type=template&id=29ec17bc\"\nimport script from \"./search.js?vue&type=script&lang=js\"\nexport * from \"./search.js?vue&type=script&lang=js\"\n\nimport \"./search.vue?vue&type=style&index=0&id=29ec17bc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('registration.registration') }}\n </div>\n <div class=\"panel-body\">\n <form\n class=\"registration-form\"\n @submit.prevent=\"submit(user)\"\n >\n <div class=\"container\">\n <div class=\"text-fields\">\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.username.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-username\"\n >{{ $t('login.username') }}</label>\n <input\n id=\"sign-up-username\"\n v-model.trim=\"v$.user.username.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :aria-required=\"true\"\n :placeholder=\"$t('registration.username_placeholder')\"\n >\n </div>\n <div\n v-if=\"v$.user.username.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.username.required\">\n <span>{{ $t('registration.validations.username_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.fullname.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-fullname\"\n >{{ $t('registration.fullname') }}</label>\n <input\n id=\"sign-up-fullname\"\n v-model.trim=\"v$.user.fullname.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :aria-required=\"true\"\n :placeholder=\"$t('registration.fullname_placeholder')\"\n >\n </div>\n <div\n v-if=\"v$.user.fullname.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.fullname.required\">\n <span>{{ $t('registration.validations.fullname_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.email.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"email\"\n >{{ accountActivationRequired ? $t('registration.email') : $t('registration.email_optional') }}</label>\n <input\n id=\"email\"\n v-model=\"v$.user.email.$model\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"email\"\n :aria-required=\"accountActivationRequired\"\n >\n </div>\n <div\n v-if=\"v$.user.email.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.email.required\">\n <span>{{ $t('registration.validations.email_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div class=\"form-group\">\n <label\n class=\"form--label\"\n for=\"bio\"\n >{{ $t('registration.bio_optional') }}</label>\n <textarea\n id=\"bio\"\n v-model=\"user.bio\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"bioPlaceholder\"\n />\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.password.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-password\"\n >{{ $t('login.password') }}</label>\n <input\n id=\"sign-up-password\"\n v-model=\"user.password\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"password\"\n :aria-required=\"true\"\n >\n </div>\n <div\n v-if=\"v$.user.password.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"!v$.user.password.required\">\n <span>{{ $t('registration.validations.password_required') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.confirm.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-password-confirmation\"\n >{{ $t('registration.password_confirm') }}</label>\n <input\n id=\"sign-up-password-confirmation\"\n v-model=\"user.confirm\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"password\"\n :aria-required=\"true\"\n >\n </div>\n <div\n v-if=\"v$.user.confirm.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"v$.user.confirm.required.$invalid\">\n <span>{{ $t('registration.validations.password_confirmation_required') }}</span>\n </li>\n <li v-if=\"v$.user.confirm.sameAs.$invalid\">\n <span>{{ $t('registration.validations.password_confirmation_match') }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.birthday.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-birthday\"\n >\n {{ birthdayRequired ? $t('registration.birthday') : $t('registration.birthday_optional') }}\n </label>\n <input\n id=\"sign-up-birthday\"\n v-model=\"user.birthday\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"date\"\n :max=\"birthdayRequired ? birthdayMinAttr : undefined\"\n :aria-required=\"birthdayRequired\"\n >\n </div>\n <div\n v-if=\"v$.user.birthday.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"v$.user.birthday.required.$invalid\">\n <span>{{ $t('registration.validations.birthday_required') }}</span>\n </li>\n <li v-if=\"v$.user.birthday.maxValue.$invalid\">\n <span>{{ $tc('registration.validations.birthday_min_age', { date: birthdayMinFormatted }) }}</span>\n </li>\n </ul>\n </div>\n\n <div\n class=\"form-group\"\n :class=\"{ 'form-group--error': v$.user.language.$error }\"\n >\n <interface-language-switcher\n for=\"email-language\"\n :prompt-text=\"$t('registration.email_language')\"\n :language=\"v$.user.language.$model\"\n :set-language=\"val => v$.user.language.$model = val\"\n @click.stop.prevent\n />\n </div>\n\n <div\n v-if=\"accountApprovalRequired\"\n class=\"form-group\"\n >\n <label\n class=\"form--label\"\n for=\"reason\"\n >{{ $t('registration.reason') }}</label>\n <textarea\n id=\"reason\"\n v-model=\"user.reason\"\n :disabled=\"isPending\"\n class=\"form-control\"\n :placeholder=\"reasonPlaceholder\"\n />\n </div>\n\n <div\n v-if=\"captcha.type != 'none'\"\n id=\"captcha-group\"\n class=\"form-group\"\n >\n <label\n class=\"form--label\"\n for=\"captcha-label\"\n >{{ $t('registration.captcha') }}</label>\n\n <template v-if=\"['kocaptcha', 'native'].includes(captcha.type)\">\n <img\n :src=\"captcha.url\"\n @click=\"setCaptcha\"\n >\n\n <sub>{{ $t('registration.new_captcha') }}</sub>\n\n <input\n id=\"captcha-answer\"\n v-model=\"captcha.solution\"\n :disabled=\"isPending\"\n class=\"form-control\"\n type=\"text\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n >\n </template>\n </div>\n\n <div\n v-if=\"token\"\n class=\"form-group\"\n >\n <label for=\"token\">{{ $t('registration.token') }}</label>\n <input\n id=\"token\"\n v-model=\"token\"\n disabled=\"true\"\n class=\"form-control\"\n type=\"text\"\n >\n </div>\n <div class=\"form-group\">\n <button\n :disabled=\"isPending\"\n type=\"submit\"\n class=\"btn button-default\"\n >\n {{ $t('registration.register') }}\n </button>\n </div>\n </div>\n\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"terms-of-service\"\n v-html=\"termsOfService\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n <div\n v-if=\"serverValidationErrors.length\"\n class=\"form-group\"\n >\n <div class=\"alert error\">\n <span\n v-for=\"error in serverValidationErrors\"\n :key=\"error\"\n >{{ error }}</span>\n </div>\n </div>\n </form>\n </div>\n </div>\n</template>\n\n<script src=\"./registration.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n$validations-cRed: #f04124;\n\n.registration-form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex-direction: row;\n\n > * {\n min-width: 0;\n }\n }\n\n .terms-of-service {\n flex: 0 1 50%;\n margin: 0.8em;\n }\n\n .text-fields {\n margin-top: 0.6em;\n flex: 1 0;\n display: flex;\n flex-direction: column;\n }\n\n textarea {\n min-height: 100px;\n resize: vertical;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.3em 0;\n line-height: 2;\n margin-bottom: 1em;\n }\n\n .form-group--error {\n animation-name: shakeError;\n animation-duration: 0.6s;\n animation-timing-function: ease-in-out;\n }\n\n .form-group--error .form--label {\n color: $validations-cRed;\n color: var(--cRed, $validations-cRed);\n }\n\n .form-error {\n margin-top: -0.7em;\n text-align: left;\n\n span {\n font-size: 0.85em;\n }\n }\n\n .form-error ul {\n list-style: none;\n padding: 0 0 0 5px;\n margin-top: 0;\n\n li::before {\n content: \"• \";\n }\n }\n\n form textarea {\n line-height: 16px;\n resize: vertical;\n }\n\n .captcha {\n max-width: 350px;\n margin-bottom: 0.4em;\n }\n\n .btn {\n margin-top: 0.6em;\n height: 2em;\n }\n\n .error {\n text-align: center;\n }\n}\n\n@media all and (max-width: 800px) {\n .registration-form .container {\n flex-direction: column-reverse;\n }\n}\n</style>\n","import useVuelidate from '@vuelidate/core'\nimport { required, requiredIf, sameAs } from '@vuelidate/validators'\nimport { mapActions, mapState } from 'vuex'\nimport InterfaceLanguageSwitcher from '../interface_language_switcher/interface_language_switcher.vue'\nimport localeService from '../../services/locale/locale.service.js'\nimport { DAY } from 'src/services/date_utils/date_utils.js'\n\nconst registration = {\n setup () { return { v$: useVuelidate() } },\n data: () => ({\n user: {\n email: '',\n fullname: '',\n username: '',\n password: '',\n confirm: '',\n birthday: '',\n reason: '',\n language: ['']\n },\n captcha: {}\n }),\n components: {\n InterfaceLanguageSwitcher\n },\n validations () {\n return {\n user: {\n email: { required: requiredIf(() => this.accountActivationRequired) },\n username: { required },\n fullname: { required },\n password: { required },\n confirm: {\n required,\n sameAs: sameAs(this.user.password)\n },\n birthday: {\n required: requiredIf(() => this.birthdayRequired),\n maxValue: value => {\n return !this.birthdayRequired || new Date(value).getTime() <= this.birthdayMin.getTime()\n }\n },\n reason: { required: requiredIf(() => this.accountApprovalRequired) },\n language: {}\n }\n }\n },\n created () {\n if ((!this.registrationOpen && !this.token) || this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n\n this.setCaptcha()\n },\n computed: {\n token () { return this.$route.params.token },\n bioPlaceholder () {\n return this.replaceNewlines(this.$t('registration.bio_placeholder'))\n },\n reasonPlaceholder () {\n return this.replaceNewlines(this.$t('registration.reason_placeholder'))\n },\n birthdayMin () {\n const minAge = this.birthdayMinAge\n const today = new Date()\n today.setUTCMilliseconds(0)\n today.setUTCSeconds(0)\n today.setUTCMinutes(0)\n today.setUTCHours(0)\n const minDate = new Date()\n minDate.setTime(today.getTime() - minAge * DAY)\n return minDate\n },\n birthdayMinAttr () {\n return this.birthdayMin.toJSON().replace(/T.+$/, '')\n },\n birthdayMinFormatted () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return this.user.birthday && new Date(Date.parse(this.birthdayMin)).toLocaleDateString(browserLocale, { timeZone: 'UTC', day: 'numeric', month: 'long', year: 'numeric' })\n },\n ...mapState({\n registrationOpen: (state) => state.instance.registrationOpen,\n signedIn: (state) => !!state.users.currentUser,\n isPending: (state) => state.users.signUpPending,\n serverValidationErrors: (state) => state.users.signUpErrors,\n termsOfService: (state) => state.instance.tos,\n accountActivationRequired: (state) => state.instance.accountActivationRequired,\n accountApprovalRequired: (state) => state.instance.accountApprovalRequired,\n birthdayRequired: (state) => state.instance.birthdayRequired,\n birthdayMinAge: (state) => state.instance.birthdayMinAge\n })\n },\n methods: {\n ...mapActions(['signUp', 'getCaptcha']),\n async submit () {\n this.user.nickname = this.user.username\n this.user.token = this.token\n\n this.user.captcha_solution = this.captcha.solution\n this.user.captcha_token = this.captcha.token\n this.user.captcha_answer_data = this.captcha.answer_data\n if (this.user.language) {\n this.user.language = localeService.internalToBackendLocaleMulti(this.user.language.filter(k => k))\n }\n\n this.v$.$touch()\n\n if (!this.v$.$invalid) {\n try {\n await this.signUp(this.user)\n this.$router.push({ name: 'friends' })\n } catch (error) {\n console.warn('Registration failed: ', error)\n this.setCaptcha()\n }\n }\n },\n setCaptcha () {\n this.getCaptcha().then(cpt => { this.captcha = cpt })\n },\n replaceNewlines (str) {\n return str.replace(/\\s*\\n\\s*/g, ' \\n')\n }\n }\n}\n\nexport default registration\n","import { render } from \"./registration.vue?vue&type=template&id=f9488ca2\"\nimport script from \"./registration.js?vue&type=script&lang=js\"\nexport * from \"./registration.js?vue&type=script&lang=js\"\n\nimport \"./registration.vue?vue&type=style&index=0&id=f9488ca2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('password_reset.password_reset') }}\n </div>\n <div class=\"panel-body\">\n <form\n class=\"password-reset-form\"\n @submit.prevent=\"submit\"\n >\n <div class=\"container\">\n <div v-if=\"!mailerEnabled\">\n <p v-if=\"passwordResetRequested\">\n {{ $t('password_reset.password_reset_required_but_mailer_is_disabled') }}\n </p>\n <p v-else>\n {{ $t('password_reset.password_reset_disabled') }}\n </p>\n </div>\n <div v-else-if=\"success || throttled\">\n <p v-if=\"success\">\n {{ $t('password_reset.check_email') }}\n </p>\n <div class=\"form-group text-center\">\n <router-link :to=\"{name: 'root'}\">\n {{ $t('password_reset.return_home') }}\n </router-link>\n </div>\n </div>\n <div v-else>\n <p\n v-if=\"passwordResetRequested\"\n class=\"password-reset-required error\"\n >\n {{ $t('password_reset.password_reset_required') }}\n </p>\n <p>\n {{ $t('password_reset.instruction') }}\n </p>\n <div class=\"form-group\">\n <input\n ref=\"email\"\n v-model=\"user.email\"\n :disabled=\"isPending\"\n :placeholder=\"$t('password_reset.placeholder')\"\n class=\"form-control\"\n type=\"input\"\n >\n </div>\n <div class=\"form-group\">\n <button\n :disabled=\"isPending\"\n type=\"submit\"\n class=\"btn button-default btn-block\"\n >\n {{ $t('settings.save') }}\n </button>\n </div>\n </div>\n <p\n v-if=\"error\"\n class=\"alert error notice-dismissible\"\n >\n <span>{{ error }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n @click.prevent=\"dismissError()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n </div>\n </form>\n </div>\n </div>\n</template>\n\n<script src=\"./password_reset.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.password-reset-form {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin: 0.6em;\n\n .container {\n display: flex;\n flex: 1 0;\n flex-direction: column;\n margin-top: 0.6em;\n max-width: 18rem;\n\n > * {\n min-width: 0;\n }\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n margin-bottom: 1em;\n padding: 0.3em 0;\n line-height: 1.85em;\n }\n\n .error {\n text-align: center;\n animation-name: shakeError;\n animation-duration: 0.4s;\n animation-timing-function: ease-in-out;\n }\n\n .alert {\n padding: 0.5em;\n margin: 0.3em 0 1em;\n }\n\n .password-reset-required {\n background-color: var(--alertError, $fallback--alertError);\n padding: 10px 0;\n }\n\n .notice-dismissible {\n padding-right: 2rem;\n }\n\n .dismiss {\n cursor: pointer;\n }\n}\n\n</style>\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst passwordReset = {\n data: () => ({\n user: {\n email: ''\n },\n isPending: false,\n success: false,\n throttled: false,\n error: null\n }),\n computed: {\n ...mapState({\n signedIn: (state) => !!state.users.currentUser,\n instance: state => state.instance\n }),\n mailerEnabled () {\n return this.instance.mailerEnabled\n }\n },\n created () {\n if (this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n },\n props: {\n passwordResetRequested: {\n default: false,\n type: Boolean\n }\n },\n methods: {\n dismissError () {\n this.error = null\n },\n submit () {\n this.isPending = true\n const email = this.user.email\n const instance = this.instance.server\n\n passwordResetApi({ instance, email }).then(({ status }) => {\n this.isPending = false\n this.user.email = ''\n\n if (status === 204) {\n this.success = true\n this.error = null\n } else if (status === 429) {\n this.throttled = true\n this.error = this.$t('password_reset.too_many_requests')\n }\n }).catch(() => {\n this.isPending = false\n this.user.email = ''\n this.error = this.$t('general.generic_error')\n })\n }\n }\n}\n\nexport default passwordReset\n","import { reduce } from 'lodash'\n\nconst MASTODON_PASSWORD_RESET_URL = '/auth/password'\n\nconst resetPassword = ({ instance, email }) => {\n const params = { email }\n const query = reduce(params, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n return `${acc}&${encoded}`\n }, '')\n const url = `${instance}${MASTODON_PASSWORD_RESET_URL}?${query}`\n\n return window.fetch(url, {\n method: 'POST'\n })\n}\n\nexport default resetPassword\n","import { render } from \"./password_reset.vue?vue&type=template&id=0a88ea38\"\nimport script from \"./password_reset.js?vue&type=script&lang=js\"\nexport * from \"./password_reset.js?vue&type=script&lang=js\"\n\nimport \"./password_reset.vue?vue&type=style&index=0&id=0a88ea38&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"settings panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('nav.friend_requests') }}\n </div>\n </div>\n <div class=\"panel-body\">\n <FollowRequestCard\n v-for=\"request in requests\"\n :key=\"request.id\"\n :user=\"request\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./follow_requests.js\"></script>\n","<template>\n <basic-user-card :user=\"user\">\n <div class=\"follow-request-card-content-container\">\n <button\n class=\"btn button-default\"\n @click=\"approveUser\"\n >\n {{ $t('user_card.approve') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"denyUser\"\n >\n {{ $t('user_card.deny') }}\n </button>\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingApproveConfirmDialog\"\n :title=\"$t('user_card.approve_confirm_title')\"\n :confirm-text=\"$t('user_card.approve_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.approve_confirm_cancel_button')\"\n @accepted=\"doApprove\"\n @cancelled=\"hideApproveConfirmDialog\"\n >\n {{ $t('user_card.approve_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n <confirm-modal\n v-if=\"showingDenyConfirmDialog\"\n :title=\"$t('user_card.deny_confirm_title')\"\n :confirm-text=\"$t('user_card.deny_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.deny_confirm_cancel_button')\"\n @accepted=\"doDeny\"\n @cancelled=\"hideDenyConfirmDialog\"\n >\n {{ $t('user_card.deny_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n </teleport>\n </basic-user-card>\n</template>\n\n<script src=\"./follow_request_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-request-card-content-container {\n display: flex;\n flex-flow: row wrap;\n\n button {\n margin-top: 0.5em;\n margin-right: 0.5em;\n flex: 1 1;\n max-width: 12em;\n min-width: 8em;\n\n &:last-child {\n margin-right: 0;\n }\n }\n}\n</style>\n","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n props: ['user'],\n components: {\n BasicUserCard,\n ConfirmModal\n },\n data () {\n return {\n showingApproveConfirmDialog: false,\n showingDenyConfirmDialog: false\n }\n },\n methods: {\n findFollowRequestNotificationId () {\n const notif = notificationsFromStore(this.$store).find(\n (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n )\n return notif && notif.id\n },\n showApproveConfirmDialog () {\n this.showingApproveConfirmDialog = true\n },\n hideApproveConfirmDialog () {\n this.showingApproveConfirmDialog = false\n },\n showDenyConfirmDialog () {\n this.showingDenyConfirmDialog = true\n },\n hideDenyConfirmDialog () {\n this.showingDenyConfirmDialog = false\n },\n approveUser () {\n if (this.shouldConfirmApprove) {\n this.showApproveConfirmDialog()\n } else {\n this.doApprove()\n }\n },\n doApprove () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n\n const notifId = this.findFollowRequestNotificationId()\n this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n this.$store.dispatch('updateNotification', {\n id: notifId,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n this.hideApproveConfirmDialog()\n },\n denyUser () {\n if (this.shouldConfirmDeny) {\n this.showDenyConfirmDialog()\n } else {\n this.doDeny()\n }\n },\n doDeny () {\n const notifId = this.findFollowRequestNotificationId()\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n this.hideDenyConfirmDialog()\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n shouldConfirmApprove () {\n return this.mergedConfig.modalOnApproveFollow\n },\n shouldConfirmDeny () {\n return this.mergedConfig.modalOnDenyFollow\n }\n }\n}\n\nexport default FollowRequestCard\n","import FollowRequestCard from '../follow_request_card/follow_request_card.vue'\n\nconst FollowRequests = {\n components: {\n FollowRequestCard\n },\n computed: {\n requests () {\n return this.$store.state.api.followRequests\n }\n }\n}\n\nexport default FollowRequests\n","import { render } from \"./follow_request_card.vue?vue&type=template&id=3bb26ea8\"\nimport script from \"./follow_request_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_request_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_request_card.vue?vue&type=style&index=0&id=3bb26ea8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./follow_requests.vue?vue&type=template&id=62e19784\"\nimport script from \"./follow_requests.js?vue&type=script&lang=js\"\nexport * from \"./follow_requests.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import oauth from '../../services/new_api/oauth.js'\n\nconst oac = {\n props: ['code'],\n mounted () {\n if (this.code) {\n const { clientId, clientSecret } = this.$store.state.oauth\n\n oauth.getToken({\n clientId,\n clientSecret,\n instance: this.$store.state.instance.server,\n code: this.code\n }).then((result) => {\n this.$store.commit('setToken', result.access_token)\n this.$store.dispatch('loginUser', result.access_token)\n this.$router.push({ name: 'friends' })\n })\n }\n }\n}\n\nexport default oac\n","import { render } from \"./oauth_callback.vue?vue&type=template&id=f514124c\"\nimport script from \"./oauth_callback.js?vue&type=script&lang=js\"\nexport * from \"./oauth_callback.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <h1>...</h1>\n</template>\n\n<script src=\"./oauth_callback.js\"></script>\n","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('who_to_follow.who_to_follow') }}\n </div>\n <div class=\"panel-body\">\n <FollowCard\n v-for=\"user in users\"\n :key=\"user.id\"\n :user=\"user\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./who_to_follow.js\"></script>\n","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n components: {\n FollowCard\n },\n data () {\n return {\n users: []\n }\n },\n mounted () {\n this.getWhoToFollow()\n },\n methods: {\n showWhoToFollow (reply) {\n reply.forEach((i, index) => {\n this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n .then((externalUser) => {\n if (!externalUser.error) {\n this.$store.commit('addNewUsers', [externalUser])\n this.users.push(externalUser)\n }\n })\n })\n },\n getWhoToFollow () {\n const credentials = this.$store.state.users.currentUser.credentials\n if (credentials) {\n apiService.suggestions({ credentials })\n .then((reply) => {\n this.showWhoToFollow(reply)\n })\n }\n }\n }\n}\n\nexport default WhoToFollow\n","import { render } from \"./who_to_follow.vue?vue&type=template&id=1d38a2c8\"\nimport script from \"./who_to_follow.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"column-inner\">\n <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n <staff-panel />\n <terms-of-service-panel />\n <MRFTransparencyPanel />\n <features-panel v-if=\"showFeaturesPanel\" />\n </div>\n</template>\n\n<script src=\"./about.js\"></script>\n","<template>\n <div>\n <div class=\"panel panel-default\">\n <div class=\"panel-body\">\n <!-- eslint-disable vue/no-v-html -->\n <div\n class=\"tos-content\"\n v-html=\"content\"\n />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./terms_of_service_panel.js\"></script>\n\n<style lang=\"scss\">\n.tos-content {\n margin: 1em;\n}\n</style>\n","const TermsOfServicePanel = {\n computed: {\n content () {\n return this.$store.state.instance.tos\n }\n }\n}\n\nexport default TermsOfServicePanel\n","import { render } from \"./terms_of_service_panel.vue?vue&type=template&id=22763f84\"\nimport script from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\nexport * from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\n\nimport \"./terms_of_service_panel.vue?vue&type=style&index=0&id=22763f84&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"staff-panel\">\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background\">\n <div class=\"title\">\n {{ $t(\"about.staff\") }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div\n v-for=\"group in groupedStaffAccounts\"\n :key=\"group.role\"\n class=\"staff-group\"\n >\n <h4>{{ $t('general.role.' + group.role) }}</h4>\n <basic-user-card\n v-for=\"user in group.users\"\n :key=\"user.screen_name\"\n :user=\"user\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./staff_panel.js\"></script>\n\n<style lang=\"scss\">\n.staff-group {\n padding-left: 1em;\n padding-top: 1em;\n\n .basic-user-card {\n padding-left: 0;\n }\n}\n\n</style>\n","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n created () {\n const nicknames = this.$store.state.instance.staffAccounts\n nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n },\n components: {\n BasicUserCard\n },\n computed: {\n groupedStaffAccounts () {\n const staffAccounts = map(this.staffAccounts, this.findUserByName).filter(_ => _)\n const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n return [\n { role: 'admin', users: groupedStaffAccounts.admin },\n { role: 'moderator', users: groupedStaffAccounts.moderator }\n ].filter(group => group.users)\n },\n ...mapGetters([\n 'findUserByName'\n ]),\n ...mapState({\n staffAccounts: state => state.instance.staffAccounts\n })\n }\n}\n\nexport default StaffPanel\n","import { render } from \"./staff_panel.vue?vue&type=template&id=56c37220\"\nimport script from \"./staff_panel.js?vue&type=script&lang=js\"\nexport * from \"./staff_panel.js?vue&type=script&lang=js\"\n\nimport \"./staff_panel.vue?vue&type=style&index=0&id=56c37220&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"federationPolicy\"\n class=\"mrf-transparency-panel\"\n >\n <div class=\"panel panel-default base01-background\">\n <div class=\"panel-heading timeline-heading base02-background\">\n <div class=\"title\">\n {{ $t(\"about.mrf.federation\") }}\n </div>\n </div>\n <div class=\"panel-body\">\n <div class=\"mrf-section\">\n <h2>{{ $t(\"about.mrf.mrf_policies\") }}</h2>\n <p>{{ $t(\"about.mrf.mrf_policies_desc\") }}</p>\n\n <ul>\n <li\n v-for=\"policy in mrfPolicies\"\n :key=\"policy\"\n v-text=\"policy\"\n />\n </ul>\n\n <h2 v-if=\"hasInstanceSpecificPolicies\">\n {{ $t(\"about.mrf.simple.simple_policies\") }}\n </h2>\n\n <div v-if=\"acceptInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.accept\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.accept_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in acceptInstances\"\n :key=\"entry.instance + '_accept'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"rejectInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.reject\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.reject_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in rejectInstances\"\n :key=\"entry.instance + '_reject'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"quarantineInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.quarantine\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.quarantine_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in quarantineInstances\"\n :key=\"entry.instance + '_quarantine'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"ftlRemovalInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.ftl_removal\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.ftl_removal_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in ftlRemovalInstances\"\n :key=\"entry.instance + '_ftl_removal'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"mediaNsfwInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.media_nsfw\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.media_nsfw_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in mediaNsfwInstances\"\n :key=\"entry.instance + '_media_nsfw'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <div v-if=\"mediaRemovalInstances.length\">\n <h4>{{ $t(\"about.mrf.simple.media_removal\") }}</h4>\n\n <p>{{ $t(\"about.mrf.simple.media_removal_desc\") }}</p>\n\n <table>\n <tr>\n <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n </tr>\n <tr\n v-for=\"entry in mediaRemovalInstances\"\n :key=\"entry.instance + '_media_removal'\"\n >\n <td>{{ entry.instance }}</td>\n <td v-if=\"entry.reason === ''\">\n {{ $t(\"about.mrf.simple.not_applicable\") }}\n </td>\n <td v-else>\n {{ entry.reason }}\n </td>\n </tr>\n </table>\n </div>\n\n <h2 v-if=\"hasKeywordPolicies\">\n {{ $t(\"about.mrf.keyword.keyword_policies\") }}\n </h2>\n\n <div v-if=\"keywordsFtlRemoval.length\">\n <h4>{{ $t(\"about.mrf.keyword.ftl_removal\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsFtlRemoval\"\n :key=\"keyword\"\n v-text=\"keyword\"\n />\n </ul>\n </div>\n\n <div v-if=\"keywordsReject.length\">\n <h4>{{ $t(\"about.mrf.keyword.reject\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsReject\"\n :key=\"keyword\"\n v-text=\"keyword\"\n />\n </ul>\n </div>\n\n <div v-if=\"keywordsReplace.length\">\n <h4>{{ $t(\"about.mrf.keyword.replace\") }}</h4>\n\n <ul>\n <li\n v-for=\"keyword in keywordsReplace\"\n :key=\"keyword\"\n >\n {{ keyword.pattern }}\n {{ $t(\"about.mrf.keyword.is_replaced_by\") }}\n {{ keyword.replacement }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./mrf_transparency_panel.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"./mrf_transparency_panel\";\n</style>\n","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\n/**\n * This is for backwards compatibility. We originally didn't recieve\n * extra info like a reason why an instance was rejected/quarantined/etc.\n * Because we didn't want to break backwards compatibility it was decided\n * to add an extra \"info\" key.\n */\nconst toInstanceReasonObject = (instances, info, key) => {\n return instances.map(instance => {\n if (info[key] && info[key][instance] && info[key][instance].reason) {\n return { instance, reason: info[key][instance].reason }\n }\n return { instance, reason: '' }\n })\n}\n\nconst MRFTransparencyPanel = {\n computed: {\n ...mapState({\n federationPolicy: state => get(state, 'instance.federationPolicy'),\n mrfPolicies: state => get(state, 'instance.federationPolicy.mrf_policies', []),\n quarantineInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.quarantined_instances', []),\n get(state, 'instance.federationPolicy.quarantined_instances_info', []),\n 'quarantined_instances'\n ),\n acceptInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.accept', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'accept'\n ),\n rejectInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.reject', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'reject'\n ),\n ftlRemovalInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'federated_timeline_removal'\n ),\n mediaNsfwInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'media_nsfw'\n ),\n mediaRemovalInstances: state => toInstanceReasonObject(\n get(state, 'instance.federationPolicy.mrf_simple.media_removal', []),\n get(state, 'instance.federationPolicy.mrf_simple_info', []),\n 'media_removal'\n ),\n keywordsFtlRemoval: state => get(state, 'instance.federationPolicy.mrf_keyword.federated_timeline_removal', []),\n keywordsReject: state => get(state, 'instance.federationPolicy.mrf_keyword.reject', []),\n keywordsReplace: state => get(state, 'instance.federationPolicy.mrf_keyword.replace', [])\n }),\n hasInstanceSpecificPolicies () {\n return this.quarantineInstances.length ||\n this.acceptInstances.length ||\n this.rejectInstances.length ||\n this.ftlRemovalInstances.length ||\n this.mediaNsfwInstances.length ||\n this.mediaRemovalInstances.length\n },\n hasKeywordPolicies () {\n return this.keywordsFtlRemoval.length ||\n this.keywordsReject.length ||\n this.keywordsReplace.length\n }\n }\n}\n\nexport default MRFTransparencyPanel\n","import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from '../features_panel/features_panel.vue'\nimport TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue'\nimport StaffPanel from '../staff_panel/staff_panel.vue'\nimport MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue'\n\nconst About = {\n components: {\n InstanceSpecificPanel,\n FeaturesPanel,\n TermsOfServicePanel,\n StaffPanel,\n MRFTransparencyPanel\n },\n computed: {\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default About\n","import { render } from \"./mrf_transparency_panel.vue?vue&type=template&id=67a05c5c\"\nimport script from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\nexport * from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\n\nimport \"./mrf_transparency_panel.vue?vue&type=style&index=0&id=67a05c5c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./about.vue?vue&type=template&id=4d996902\"\nimport script from \"./about.js?vue&type=script&lang=js\"\nexport * from \"./about.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default\">\n <div class=\"panel-heading\">\n {{ $t('remote_user_resolver.remote_user_resolver') }}\n </div>\n <div class=\"panel-body\">\n <p>\n {{ $t('remote_user_resolver.searching_for') }} @{{ $route.params.username }}@{{ $route.params.hostname }}\n </p>\n <p v-if=\"error\">\n {{ $t('remote_user_resolver.error') }}\n </p>\n </div>\n </div>\n</template>\n\n<script src=\"./remote_user_resolver.js\"></script>\n","const RemoteUserResolver = {\n data: () => ({\n error: false\n }),\n mounted () {\n this.redirect()\n },\n methods: {\n redirect () {\n const acct = this.$route.params.username + '@' + this.$route.params.hostname\n this.$store.state.api.backendInteractor.fetchUser({ id: acct })\n .then((externalUser) => {\n if (externalUser.error) {\n this.error = true\n } else {\n this.$store.commit('addNewUsers', [externalUser])\n const id = externalUser.id\n this.$router.replace({\n name: 'external-user-profile',\n params: { id }\n })\n }\n })\n .catch(() => {\n this.error = true\n })\n }\n }\n}\n\nexport default RemoteUserResolver\n","import { render } from \"./remote_user_resolver.vue?vue&type=template&id=147deeb8\"\nimport script from \"./remote_user_resolver.js?vue&type=script&lang=js\"\nexport * from \"./remote_user_resolver.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"Lists panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('lists.lists') }}\n </div>\n <router-link\n :to=\"{ name: 'lists-new' }\"\n class=\"button-default btn new-list-button\"\n >\n {{ $t(\"lists.new\") }}\n </router-link>\n </div>\n <div class=\"panel-body\">\n <ListsCard\n v-for=\"list in lists.slice().reverse()\"\n :key=\"list\"\n :list=\"list\"\n class=\"list-item\"\n />\n </div>\n </div>\n</template>\n\n<script src=\"./lists.js\"></script>\n\n<style lang=\"scss\">\n.Lists {\n .new-list-button {\n padding: 0 0.5em;\n }\n}\n</style>\n","<template>\n <div class=\"list-card\">\n <router-link\n :to=\"{ name: 'lists-timeline', params: { id: list.id } }\"\n class=\"list-name\"\n >\n {{ list.title }}\n </router-link>\n <router-link\n :to=\"{ name: 'lists-edit', params: { id: list.id } }\"\n class=\"button-list-edit\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"ellipsis-h\"\n />\n </router-link>\n </div>\n</template>\n\n<script src=\"./lists_card.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.list-card {\n display: flex;\n}\n\n.list-name {\n flex-grow: 1;\n}\n\n.list-name,\n.button-list-edit {\n margin: 0;\n padding: 1em;\n color: $fallback--link;\n color: var(--link, $fallback--link);\n\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenu, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuText, $fallback--link);\n\n --faint: var(--selectedMenuFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuLightText, $fallback--lightText);\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEllipsisH\n)\n\nconst ListsCard = {\n props: [\n 'list'\n ]\n}\n\nexport default ListsCard\n","import ListsCard from '../lists_card/lists_card.vue'\n\nconst Lists = {\n data () {\n return {\n isNew: false\n }\n },\n components: {\n ListsCard\n },\n computed: {\n lists () {\n return this.$store.state.lists.allLists\n }\n },\n methods: {\n cancelNewList () {\n this.isNew = false\n },\n newList () {\n this.isNew = true\n }\n }\n}\n\nexport default Lists\n","import { render } from \"./lists_card.vue?vue&type=template&id=cb7330aa\"\nimport script from \"./lists_card.js?vue&type=script&lang=js\"\nexport * from \"./lists_card.js?vue&type=script&lang=js\"\n\nimport \"./lists_card.vue?vue&type=style&index=0&id=cb7330aa&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./lists.vue?vue&type=template&id=273aca3d\"\nimport script from \"./lists.js?vue&type=script&lang=js\"\nexport * from \"./lists.js?vue&type=script&lang=js\"\n\nimport \"./lists.vue?vue&type=style&index=0&id=273aca3d&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\nconst ListsTimeline = {\n data () {\n return {\n listId: null\n }\n },\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.list }\n },\n watch: {\n $route: function (route) {\n if (route.name === 'lists-timeline' && route.params.id !== this.listId) {\n this.listId = route.params.id\n this.$store.dispatch('stopFetchingTimeline', 'list')\n this.$store.commit('clearTimeline', { timeline: 'list' })\n this.$store.dispatch('fetchList', { listId: this.listId })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'list', listId: this.listId })\n }\n }\n },\n created () {\n this.listId = this.$route.params.id\n this.$store.dispatch('fetchList', { listId: this.listId })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'list', listId: this.listId })\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'list')\n this.$store.commit('clearTimeline', { timeline: 'list' })\n }\n}\n\nexport default ListsTimeline\n","import { render } from \"./lists_timeline.vue?vue&type=template&id=464584d8\"\nimport script from \"./lists_timeline.js?vue&type=script&lang=js\"\nexport * from \"./lists_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Timeline\n title=\"list.name\"\n :timeline=\"timeline\"\n :list-id=\"listId\"\n timeline-name=\"list\"\n />\n</template>\n\n<script src=\"./lists_timeline.js\"></script>\n","<template>\n <div class=\"panel-default panel ListEdit\">\n <div\n ref=\"header\"\n class=\"panel-heading list-edit-heading\"\n >\n <button\n class=\"button-unstyled go-back-button\"\n @click=\"$router.back\"\n >\n <FAIcon\n size=\"lg\"\n icon=\"chevron-left\"\n />\n </button>\n <div class=\"title\">\n <i18n-t\n v-if=\"id\"\n keypath=\"lists.editing_list\"\n >\n <template #listTitle>\n {{ title }}\n </template>\n </i18n-t>\n <i18n-t\n v-else\n keypath=\"lists.creating_list\"\n />\n </div>\n </div>\n <div class=\"panel-body\">\n <div class=\"input-wrap\">\n <label for=\"list-edit-title\">{{ $t('lists.title') }}</label>\n {{ ' ' }}\n <input\n id=\"list-edit-title\"\n ref=\"title\"\n v-model=\"titleDraft\"\n >\n <button\n v-if=\"id\"\n class=\"btn button-default follow-button\"\n @click=\"updateListTitle\"\n >\n {{ $t('lists.update_title') }}\n </button>\n </div>\n <tab-switcher\n class=\"list-member-management\"\n :scrollable-tabs=\"true\"\n >\n <div\n v-if=\"id || addedUserIds.size > 0\"\n :label=\"$t('lists.manage_members')\"\n class=\"members-list\"\n >\n <div class=\"users-list\">\n <div\n v-for=\"user in membersUsers\"\n :key=\"user.id\"\n class=\"member\"\n >\n <BasicUserCard\n :user=\"user\"\n >\n <button\n class=\"btn button-default follow-button\"\n @click=\"toggleRemoveMember(user)\"\n >\n {{ isRemoved(user) ? $t('general.undo') : $t('lists.remove_from_list') }}\n </button>\n </BasicUserCard>\n </div>\n </div>\n </div>\n\n <div\n class=\"search-list\"\n :label=\"$t('lists.add_members')\"\n >\n <ListsUserSearch\n @results=\"onSearchResults\"\n @loading=\"onSearchLoading\"\n @loadingDone=\"onSearchLoadingDone\"\n />\n <div\n v-if=\"searchLoading\"\n class=\"loading\"\n >\n <PanelLoading />\n </div>\n <div\n v-else\n class=\"users-list\"\n >\n <div\n v-for=\"user in searchUsers\"\n :key=\"user.id\"\n class=\"member\"\n >\n <BasicUserCard\n :user=\"user\"\n >\n <span\n v-if=\"membersUserIds.includes(user.id)\"\n >\n {{ $t('lists.is_in_list') }}\n </span>\n <button\n v-if=\"!membersUserIds.includes(user.id)\"\n class=\"btn button-default follow-button\"\n @click=\"toggleAddFromSearch(user)\"\n >\n {{ isAdded(user) ? $t('general.undo') : $t('lists.add_to_list') }}\n </button>\n <button\n v-else\n class=\"btn button-default follow-button\"\n @click=\"toggleRemoveMember(user)\"\n >\n {{ isRemoved(user) ? $t('general.undo') : $t('lists.remove_from_list') }}\n </button>\n </BasicUserCard>\n </div>\n </div>\n </div>\n </tab-switcher>\n </div>\n <div class=\"panel-footer\">\n <span class=\"spacer\" />\n <button\n v-if=\"!id\"\n class=\"btn button-default footer-button\"\n @click=\"createList\"\n >\n {{ $t('lists.create') }}\n </button>\n <button\n v-else-if=\"!reallyDelete\"\n class=\"btn button-default footer-button\"\n @click=\"reallyDelete = true\"\n >\n {{ $t('lists.delete') }}\n </button>\n <template v-else>\n {{ $t('lists.really_delete') }}\n <button\n class=\"btn button-default footer-button\"\n @click=\"deleteList\"\n >\n {{ $t('general.yes') }}\n </button>\n <button\n class=\"btn button-default footer-button\"\n @click=\"reallyDelete = false\"\n >\n {{ $t('general.no') }}\n </button>\n </template>\n </div>\n </div>\n</template>\n\n<script src=\"./lists_edit.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.ListEdit {\n --panel-body-padding: 0.5em;\n\n height: calc(100vh - var(--navbar-height));\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n .list-edit-heading {\n grid-template-columns: auto minmax(50%, 1fr);\n }\n\n .panel-body {\n display: flex;\n flex: 1;\n flex-direction: column;\n overflow: hidden;\n }\n\n .list-member-management {\n flex: 1 0 auto;\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n\n .users-list {\n padding-bottom: 0.7rem;\n overflow-y: auto;\n }\n\n & .search-list,\n & .members-list {\n overflow: hidden;\n flex-direction: column;\n min-height: 0;\n }\n\n .go-back-button {\n text-align: center;\n line-height: 1;\n height: 100%;\n align-self: start;\n width: var(--__panel-heading-height-inner);\n }\n\n .btn {\n margin: 0 0.5em;\n }\n\n .panel-footer {\n grid-template-columns: minmax(10%, 1fr);\n\n .footer-button {\n min-width: 9em;\n }\n }\n}\n</style>\n","<template>\n <div class=\"ListsUserSearch\">\n <div class=\"input-wrap\">\n <div class=\"input-search\">\n <FAIcon\n class=\"search-icon fa-scale-110 fa-old-padding\"\n icon=\"search\"\n />\n </div>\n <input\n ref=\"search\"\n v-model=\"query\"\n :placeholder=\"$t('lists.search')\"\n @input=\"onInput\"\n >\n </div>\n <div class=\"input-wrap\">\n <Checkbox\n v-model=\"followingOnly\"\n @change=\"onInput\"\n >\n {{ $t('lists.following_only') }}\n </Checkbox>\n </div>\n </div>\n</template>\n\n<script src=\"./lists_user_search.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.ListsUserSearch {\n .input-wrap {\n display: flex;\n margin: 0.7em 0.5em;\n\n input {\n width: 100%;\n }\n }\n\n .search-icon {\n margin-right: 0.3em;\n }\n}\n\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { debounce } from 'lodash'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst ListsUserSearch = {\n components: {\n Checkbox\n },\n emits: ['loading', 'loadingDone', 'results'],\n data () {\n return {\n loading: false,\n query: '',\n followingOnly: true\n }\n },\n methods: {\n onInput: debounce(function () {\n this.search(this.query)\n }, 2000),\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.$emit('loading')\n this.userIds = []\n this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts', following: this.followingOnly })\n .then(data => {\n this.$emit('results', data.accounts.map(a => a.id))\n })\n .finally(() => {\n this.loading = false\n this.$emit('loadingDone')\n })\n }\n }\n}\n\nexport default ListsUserSearch\n","import { render } from \"./lists_user_search.vue?vue&type=template&id=f65a8ae4\"\nimport script from \"./lists_user_search.js?vue&type=script&lang=js\"\nexport * from \"./lists_user_search.js?vue&type=script&lang=js\"\n\nimport \"./lists_user_search.vue?vue&type=style&index=0&id=f65a8ae4&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport ListsUserSearch from '../lists_user_search/lists_user_search.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst ListsNew = {\n components: {\n BasicUserCard,\n UserAvatar,\n ListsUserSearch,\n TabSwitcher,\n PanelLoading\n },\n data () {\n return {\n title: '',\n titleDraft: '',\n membersUserIds: [],\n removedUserIds: new Set([]), // users we added for members, to undo\n searchUserIds: [],\n addedUserIds: new Set([]), // users we added from search, to undo\n searchLoading: false,\n reallyDelete: false\n }\n },\n created () {\n if (!this.id) return\n this.$store.dispatch('fetchList', { listId: this.id })\n .then(() => {\n this.title = this.findListTitle(this.id)\n this.titleDraft = this.title\n })\n this.$store.dispatch('fetchListAccounts', { listId: this.id })\n .then(() => {\n this.membersUserIds = this.findListAccounts(this.id)\n this.membersUserIds.forEach(userId => {\n this.$store.dispatch('fetchUserIfMissing', userId)\n })\n })\n },\n computed: {\n id () {\n return this.$route.params.id\n },\n membersUsers () {\n return [...this.membersUserIds, ...this.addedUserIds]\n .map(userId => this.findUser(userId)).filter(user => user)\n },\n searchUsers () {\n return this.searchUserIds.map(userId => this.findUser(userId)).filter(user => user)\n },\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n ...mapGetters(['findUser', 'findListTitle', 'findListAccounts'])\n },\n methods: {\n onInput () {\n this.search(this.query)\n },\n toggleRemoveMember (user) {\n if (this.removedUserIds.has(user.id)) {\n this.id && this.addUser(user)\n this.removedUserIds.delete(user.id)\n } else {\n this.id && this.removeUser(user.id)\n this.removedUserIds.add(user.id)\n }\n },\n toggleAddFromSearch (user) {\n if (this.addedUserIds.has(user.id)) {\n this.id && this.removeUser(user.id)\n this.addedUserIds.delete(user.id)\n } else {\n this.id && this.addUser(user)\n this.addedUserIds.add(user.id)\n }\n },\n isRemoved (user) {\n return this.removedUserIds.has(user.id)\n },\n isAdded (user) {\n return this.addedUserIds.has(user.id)\n },\n addUser (user) {\n this.$store.dispatch('addListAccount', { accountId: user.id, listId: this.id })\n },\n removeUser (userId) {\n this.$store.dispatch('removeListAccount', { accountId: userId, listId: this.id })\n },\n onSearchLoading (results) {\n this.searchLoading = true\n },\n onSearchLoadingDone (results) {\n this.searchLoading = false\n },\n onSearchResults (results) {\n this.searchLoading = false\n this.searchUserIds = results\n },\n updateListTitle () {\n this.$store.dispatch('setList', { listId: this.id, title: this.titleDraft })\n .then(() => {\n this.title = this.findListTitle(this.id)\n })\n },\n createList () {\n this.$store.dispatch('createList', { title: this.titleDraft })\n .then((list) => {\n return this\n .$store\n .dispatch('setListAccounts', { listId: list.id, accountIds: [...this.addedUserIds] })\n .then(() => list.id)\n })\n .then((listId) => {\n this.$router.push({ name: 'lists-timeline', params: { id: listId } })\n })\n .catch((e) => {\n this.$store.dispatch('pushGlobalNotice', {\n messageKey: 'lists.error',\n messageArgs: [e.message],\n level: 'error'\n })\n })\n },\n deleteList () {\n this.$store.dispatch('deleteList', { listId: this.id })\n this.$router.push({ name: 'lists' })\n }\n }\n}\n\nexport default ListsNew\n","import { render } from \"./lists_edit.vue?vue&type=template&id=722535f4\"\nimport script from \"./lists_edit.js?vue&type=script&lang=js\"\nexport * from \"./lists_edit.js?vue&type=script&lang=js\"\n\nimport \"./lists_edit.vue?vue&type=style&index=0&id=722535f4&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel panel-default announcements-page\">\n <div class=\"panel-heading\">\n <span>\n {{ $t('announcements.page_header') }}\n </span>\n </div>\n <div class=\"panel-body\">\n <section\n v-if=\"canPostAnnouncement\"\n >\n <div class=\"post-form\">\n <div class=\"heading\">\n <h4>{{ $t('announcements.post_form_header') }}</h4>\n </div>\n <div class=\"body\">\n <announcement-editor\n :announcement=\"newAnnouncement\"\n :disabled=\"posting\"\n />\n </div>\n <div class=\"footer\">\n <button\n class=\"btn button-default post-button\"\n :disabled=\"posting\"\n @click.prevent=\"postAnnouncement\"\n >\n {{ $t('announcements.post_action') }}\n </button>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ $t('announcements.post_error', { error }) }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n :title=\"$t('announcements.close_error')\"\n />\n </button>\n </div>\n </div>\n </div>\n </section>\n <section\n v-for=\"announcement in announcements\"\n :key=\"announcement.id\"\n >\n <announcement\n :announcement=\"announcement\"\n />\n </section>\n </div>\n </div>\n</template>\n\n<script src=\"./announcements_page.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.announcements-page {\n .post-form {\n padding: var(--status-margin, $status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .post-button {\n min-width: 10em;\n }\n }\n}\n</style>\n","<template>\n <div class=\"announcement\">\n <div class=\"heading\">\n <h4>{{ $t('announcements.title') }}</h4>\n </div>\n <div class=\"body\">\n <rich-content\n v-if=\"!editing\"\n :html=\"content\"\n :emoji=\"announcement.emojis\"\n :handle-links=\"true\"\n />\n <announcement-editor\n v-else\n :announcement=\"editedAnnouncement\"\n />\n </div>\n <div class=\"footer\">\n <div\n v-if=\"!editing\"\n class=\"times\"\n >\n <span v-if=\"publishedAt\">\n {{ $t('announcements.published_time_display', { time: publishedAt }) }}\n </span>\n <span v-if=\"startsAt\">\n {{ $t('announcements.start_time_display', { time: startsAt }) }}\n </span>\n <span v-if=\"endsAt\">\n {{ $t('announcements.end_time_display', { time: endsAt }) }}\n </span>\n </div>\n <div\n v-if=\"!editing\"\n class=\"actions\"\n >\n <button\n v-if=\"currentUser\"\n class=\"btn button-default\"\n :class=\"{ toggled: isRead }\"\n :disabled=\"inactive\"\n :title=\"inactive ? $t('announcements.inactive_message') : ''\"\n @click=\"markAsRead\"\n >\n {{ $t('announcements.mark_as_read_action') }}\n </button>\n <button\n v-if=\"canEditAnnouncement\"\n class=\"btn button-default\"\n @click=\"enterEditMode\"\n >\n {{ $t('announcements.edit_action') }}\n </button>\n <button\n v-if=\"canEditAnnouncement\"\n class=\"btn button-default\"\n @click=\"deleteAnnouncement\"\n >\n {{ $t('announcements.delete_action') }}\n </button>\n </div>\n <div\n v-else\n class=\"actions\"\n >\n <button\n class=\"btn button-default\"\n @click=\"submitEdit\"\n >\n {{ $t('announcements.submit_edit_action') }}\n </button>\n <button\n class=\"btn button-default\"\n @click=\"cancelEdit\"\n >\n {{ $t('announcements.cancel_edit_action') }}\n </button>\n <div\n v-if=\"editing && editError\"\n class=\"alert error\"\n >\n {{ $t('announcements.edit_error', { error }) }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n :title=\"$t('announcements.close_error')\"\n />\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./announcement.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.announcement {\n border-bottom: 1px solid var(--border, $fallback--border);\n border-radius: 0;\n padding: var(--status-margin, $status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--status-margin, $status-margin);\n }\n\n .footer {\n display: flex;\n flex-direction: column;\n\n .times {\n display: flex;\n flex-direction: column;\n }\n }\n\n .footer .actions {\n display: flex;\n flex-direction: row;\n justify-content: space-evenly;\n\n .btn {\n flex: 1;\n margin: 1em;\n max-width: 10em;\n }\n }\n}\n</style>\n","<template>\n <div class=\"announcement-editor\">\n <textarea\n ref=\"textarea\"\n v-model=\"announcement.content\"\n class=\"post-textarea\"\n rows=\"1\"\n cols=\"1\"\n :placeholder=\"$t('announcements.post_placeholder')\"\n :disabled=\"disabled\"\n />\n <span class=\"announcement-metadata\">\n <label for=\"announcement-start-time\">{{ $t('announcements.start_time_prompt') }}</label>\n <input\n id=\"announcement-start-time\"\n v-model=\"announcement.startsAt\"\n :type=\"announcement.allDay ? 'date' : 'datetime-local'\"\n :disabled=\"disabled\"\n >\n </span>\n <span class=\"announcement-metadata\">\n <label for=\"announcement-end-time\">{{ $t('announcements.end_time_prompt') }}</label>\n <input\n id=\"announcement-end-time\"\n v-model=\"announcement.endsAt\"\n :type=\"announcement.allDay ? 'date' : 'datetime-local'\"\n :disabled=\"disabled\"\n >\n </span>\n <span class=\"announcement-metadata\">\n <Checkbox\n id=\"announcement-all-day\"\n v-model=\"announcement.allDay\"\n :disabled=\"disabled\"\n />\n <label for=\"announcement-all-day\">{{ $t('announcements.all_day_prompt') }}</label>\n </span>\n </div>\n</template>\n\n<script src=\"./announcement_editor.js\"></script>\n\n<style lang=\"scss\">\n.announcement-editor {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n\n .announcement-metadata {\n margin-top: 0.5em;\n }\n\n .post-textarea {\n resize: vertical;\n height: 10em;\n overflow: none;\n box-sizing: content-box;\n }\n}\n</style>\n","import Checkbox from '../checkbox/checkbox.vue'\n\nconst AnnouncementEditor = {\n components: {\n Checkbox\n },\n props: {\n announcement: Object,\n disabled: Boolean\n }\n}\n\nexport default AnnouncementEditor\n","import { render } from \"./announcement_editor.vue?vue&type=template&id=357f0d7c\"\nimport script from \"./announcement_editor.js?vue&type=script&lang=js\"\nexport * from \"./announcement_editor.js?vue&type=script&lang=js\"\n\nimport \"./announcement_editor.vue?vue&type=style&index=0&id=357f0d7c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport AnnouncementEditor from '../announcement_editor/announcement_editor.vue'\nimport RichContent from '../rich_content/rich_content.jsx'\nimport localeService from '../../services/locale/locale.service.js'\n\nconst Announcement = {\n components: {\n AnnouncementEditor,\n RichContent\n },\n data () {\n return {\n editing: false,\n editedAnnouncement: {\n content: '',\n startsAt: undefined,\n endsAt: undefined,\n allDay: undefined\n },\n editError: ''\n }\n },\n props: {\n announcement: Object\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n canEditAnnouncement () {\n return this.currentUser && this.currentUser.privileges.includes('announcements_manage_announcements')\n },\n content () {\n return this.announcement.content\n },\n isRead () {\n return this.announcement.read\n },\n publishedAt () {\n const time = this.announcement.published_at\n if (!time) {\n return\n }\n\n return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n },\n startsAt () {\n const time = this.announcement.starts_at\n if (!time) {\n return\n }\n\n return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n },\n endsAt () {\n const time = this.announcement.ends_at\n if (!time) {\n return\n }\n\n return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n },\n inactive () {\n return this.announcement.inactive\n }\n },\n methods: {\n markAsRead () {\n if (!this.isRead) {\n return this.$store.dispatch('markAnnouncementAsRead', this.announcement.id)\n }\n },\n deleteAnnouncement () {\n return this.$store.dispatch('deleteAnnouncement', this.announcement.id)\n },\n formatTimeOrDate (time, locale) {\n const d = new Date(time)\n return this.announcement.all_day ? d.toLocaleDateString(locale) : d.toLocaleString(locale)\n },\n enterEditMode () {\n this.editedAnnouncement.content = this.announcement.pleroma.raw_content\n this.editedAnnouncement.startsAt = this.announcement.starts_at\n this.editedAnnouncement.endsAt = this.announcement.ends_at\n this.editedAnnouncement.allDay = this.announcement.all_day\n this.editing = true\n },\n submitEdit () {\n this.$store.dispatch('editAnnouncement', {\n id: this.announcement.id,\n ...this.editedAnnouncement\n })\n .then(() => {\n this.editing = false\n })\n .catch(error => {\n this.editError = error.error\n })\n },\n cancelEdit () {\n this.editing = false\n },\n clearError () {\n this.editError = undefined\n }\n }\n}\n\nexport default Announcement\n","import { mapState } from 'vuex'\nimport Announcement from '../announcement/announcement.vue'\nimport AnnouncementEditor from '../announcement_editor/announcement_editor.vue'\n\nconst AnnouncementsPage = {\n components: {\n Announcement,\n AnnouncementEditor\n },\n data () {\n return {\n newAnnouncement: {\n content: '',\n startsAt: undefined,\n endsAt: undefined,\n allDay: false\n },\n posting: false,\n error: undefined\n }\n },\n mounted () {\n this.$store.dispatch('fetchAnnouncements')\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n announcements () {\n return this.$store.state.announcements.announcements\n },\n canPostAnnouncement () {\n return this.currentUser && this.currentUser.privileges.includes('announcements_manage_announcements')\n }\n },\n methods: {\n postAnnouncement () {\n this.posting = true\n this.$store.dispatch('postAnnouncement', this.newAnnouncement)\n .then(() => {\n this.newAnnouncement.content = ''\n this.startsAt = undefined\n this.endsAt = undefined\n })\n .catch(error => {\n this.error = error.error\n })\n .finally(() => {\n this.posting = false\n })\n },\n clearError () {\n this.error = undefined\n }\n }\n}\n\nexport default AnnouncementsPage\n","import { render } from \"./announcement.vue?vue&type=template&id=c07fccd0\"\nimport script from \"./announcement.js?vue&type=script&lang=js\"\nexport * from \"./announcement.js?vue&type=script&lang=js\"\n\nimport \"./announcement.vue?vue&type=style&index=0&id=c07fccd0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./announcements_page.vue?vue&type=template&id=33196ec2\"\nimport script from \"./announcements_page.js?vue&type=script&lang=js\"\nexport * from \"./announcements_page.js?vue&type=script&lang=js\"\n\nimport \"./announcements_page.vue?vue&type=style&index=0&id=33196ec2&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import PublicTimeline from 'components/public_timeline/public_timeline.vue'\nimport PublicAndExternalTimeline from 'components/public_and_external_timeline/public_and_external_timeline.vue'\nimport FriendsTimeline from 'components/friends_timeline/friends_timeline.vue'\nimport TagTimeline from 'components/tag_timeline/tag_timeline.vue'\nimport BookmarkTimeline from 'components/bookmark_timeline/bookmark_timeline.vue'\nimport ConversationPage from 'components/conversation-page/conversation-page.vue'\nimport Interactions from 'components/interactions/interactions.vue'\nimport DMs from 'components/dm_timeline/dm_timeline.vue'\nimport ChatList from 'components/chat_list/chat_list.vue'\nimport Chat from 'components/chat/chat.vue'\nimport UserProfile from 'components/user_profile/user_profile.vue'\nimport Search from 'components/search/search.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport FollowRequests from 'components/follow_requests/follow_requests.vue'\nimport OAuthCallback from 'components/oauth_callback/oauth_callback.vue'\nimport Notifications from 'components/notifications/notifications.vue'\nimport AuthForm from 'components/auth_form/auth_form.js'\nimport ShoutPanel from 'components/shout_panel/shout_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\nimport Lists from 'components/lists/lists.vue'\nimport ListsTimeline from 'components/lists_timeline/lists_timeline.vue'\nimport ListsEdit from 'components/lists_edit/lists_edit.vue'\nimport NavPanel from 'src/components/nav_panel/nav_panel.vue'\nimport AnnouncementsPage from 'components/announcements_page/announcements_page.vue'\n\nexport default (store) => {\n const validateAuthenticatedRoute = (to, from, next) => {\n if (store.state.users.currentUser) {\n next()\n } else {\n next(store.state.instance.redirectRootNoLogin || '/main/all')\n }\n }\n\n let routes = [\n {\n name: 'root',\n path: '/',\n redirect: _to => {\n return (store.state.users.currentUser\n ? store.state.instance.redirectRootLogin\n : store.state.instance.redirectRootNoLogin) || '/main/all'\n }\n },\n { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n {\n name: 'remote-user-profile-acct',\n path: '/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n {\n name: 'remote-user-profile',\n path: '/remote-users/:hostname/:username',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'external-user-profile', path: '/users/$:id', component: UserProfile },\n { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n { name: 'registration', path: '/registration', component: Registration },\n { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n { name: 'registration-token', path: '/registration/:token', component: Registration },\n { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n { name: 'notifications', path: '/:username/notifications', component: Notifications, props: () => ({ disableTeleport: true }), beforeEnter: validateAuthenticatedRoute },\n { name: 'login', path: '/login', component: AuthForm },\n { name: 'shout-panel', path: '/shout-panel', component: ShoutPanel, props: () => ({ floating: false }) },\n { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },\n { name: 'search', path: '/search', component: Search, props: (route) => ({ query: route.query.query }) },\n { name: 'who-to-follow', path: '/who-to-follow', component: WhoToFollow, beforeEnter: validateAuthenticatedRoute },\n { name: 'about', path: '/about', component: About },\n { name: 'announcements', path: '/announcements', component: AnnouncementsPage },\n { name: 'user-profile', path: '/users/:name', component: UserProfile },\n { name: 'legacy-user-profile', path: '/:name', component: UserProfile },\n { name: 'lists', path: '/lists', component: Lists },\n { name: 'lists-timeline', path: '/lists/:id', component: ListsTimeline },\n { name: 'lists-edit', path: '/lists/:id/edit', component: ListsEdit },\n { name: 'lists-new', path: '/lists/new', component: ListsEdit },\n { name: 'edit-navigation', path: '/nav-edit', component: NavPanel, props: () => ({ forceExpand: true, forceEditMode: true }), beforeEnter: validateAuthenticatedRoute }\n ]\n\n if (store.state.instance.pleromaChatMessagesAvailable) {\n routes = routes.concat([\n { name: 'chat', path: '/users/:username/chats/:recipient_id', component: Chat, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute },\n { name: 'chats', path: '/users/:username/chats', component: ChatList, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute }\n ])\n }\n\n return routes\n}\n","import * as bodyScrollLock from 'body-scroll-lock'\n\nlet previousNavPaddingRight\nlet previousAppBgWrapperRight\nconst lockerEls = new Set([])\n\nconst disableBodyScroll = (el) => {\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n bodyScrollLock.disableBodyScroll(el, {\n reserveScrollBarGap: true\n })\n lockerEls.add(el)\n setTimeout(() => {\n if (lockerEls.size <= 1) {\n // If previousNavPaddingRight is already set, don't set it again.\n if (previousNavPaddingRight === undefined) {\n const navEl = document.getElementById('nav')\n previousNavPaddingRight = window.getComputedStyle(navEl).getPropertyValue('padding-right')\n navEl.style.paddingRight = previousNavPaddingRight ? `calc(${previousNavPaddingRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n // If previousAppBgWrapeprRight is already set, don't set it again.\n if (previousAppBgWrapperRight === undefined) {\n const appBgWrapperEl = document.getElementById('app_bg_wrapper')\n previousAppBgWrapperRight = window.getComputedStyle(appBgWrapperEl).getPropertyValue('right')\n appBgWrapperEl.style.right = previousAppBgWrapperRight ? `calc(${previousAppBgWrapperRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n document.body.classList.add('scroll-locked')\n }\n })\n}\n\nconst enableBodyScroll = (el) => {\n lockerEls.delete(el)\n setTimeout(() => {\n if (lockerEls.size === 0) {\n if (previousNavPaddingRight !== undefined) {\n document.getElementById('nav').style.paddingRight = previousNavPaddingRight\n // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.\n previousNavPaddingRight = undefined\n }\n if (previousAppBgWrapperRight !== undefined) {\n document.getElementById('app_bg_wrapper').style.right = previousAppBgWrapperRight\n // Restore previousAppBgWrapperRight to undefined so disableBodyScroll knows it can be set again.\n previousAppBgWrapperRight = undefined\n }\n document.body.classList.remove('scroll-locked')\n }\n })\n bodyScrollLock.enableBodyScroll(el)\n}\n\nconst directive = {\n mounted: (el, binding) => {\n if (binding.value) {\n disableBodyScroll(el)\n }\n },\n updated: (el, binding) => {\n if (binding.oldValue === binding.value) {\n return\n }\n\n if (binding.value) {\n disableBodyScroll(el)\n } else {\n enableBodyScroll(el)\n }\n },\n unmounted: (el) => {\n enableBodyScroll(el)\n }\n}\n\nexport default (Vue) => {\n Vue.directive('body-scroll-lock', directive)\n}\n","import { createApp } from 'vue'\nimport { createRouter, createWebHistory } from 'vue-router'\nimport vClickOutside from 'click-outside-vue3'\nimport VueVirtualScroller from 'vue-virtual-scroller'\nimport 'vue-virtual-scroller/dist/vue-virtual-scroller.css'\n\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport App from '../App.vue'\nimport routes from './routes'\nimport VBodyScrollLock from 'src/directives/body_scroll_lock'\n\nimport { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport { getOrCreateApp, getClientToken } from '../services/new_api/oauth.js'\nimport backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport { applyTheme, applyConfig } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n if (!document.getElementById('initial-results')) {\n return null\n }\n if (!staticInitialResults) {\n staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n }\n return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n const rawData = atob(data)\n const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n const text = new TextDecoder().decode(array)\n return text\n}\n\nconst preloadFetch = async (request) => {\n const data = parsedInitialResults()\n if (!data || !data[request]) {\n return window.fetch(request)\n }\n const decoded = decodeUTF8Base64(data[request])\n const requestData = JSON.parse(decoded)\n return {\n ok: true,\n json: () => requestData,\n text: () => requestData\n }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n try {\n const res = await preloadFetch('/api/v1/instance')\n if (res.ok) {\n const data = await res.json()\n const textlimit = data.max_toot_chars\n const vapidPublicKey = data.pleroma.vapid_public_key\n\n store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n store.dispatch('setInstanceOption', { name: 'birthdayRequired', value: !!data.pleroma.metadata.birthday_required })\n store.dispatch('setInstanceOption', { name: 'birthdayMinAge', value: data.pleroma.metadata.birthday_min_age || 0 })\n\n if (vapidPublicKey) {\n store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n }\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load instance config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n try {\n const res = await window.fetch('/api/pleroma/frontend_configurations')\n if (res.ok) {\n const data = await res.json()\n return data.pleroma_fe\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load backend-provided frontend config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getStaticConfig = async () => {\n try {\n const res = await window.fetch('/static/config.json')\n if (res.ok) {\n return res.json()\n } else {\n throw (res)\n }\n } catch (error) {\n console.warn('Failed to load static/config.json, continuing without it.')\n console.warn(error)\n return {}\n }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n const overrides = window.___pleromafe_dev_overrides || {}\n const env = window.___pleromafe_mode.NODE_ENV\n\n // This takes static config and overrides properties that are present in apiConfig\n let config = {}\n if (overrides.staticConfigPreference && env === 'development') {\n console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n config = Object.assign({}, apiConfig, staticConfig)\n } else {\n config = Object.assign({}, staticConfig, apiConfig)\n }\n\n const copyInstanceOption = (name) => {\n store.dispatch('setInstanceOption', { name, value: config[name] })\n }\n\n copyInstanceOption('nsfwCensorImage')\n copyInstanceOption('background')\n copyInstanceOption('hidePostStats')\n copyInstanceOption('hideBotIndication')\n copyInstanceOption('hideUserStats')\n copyInstanceOption('hideFilteredStatuses')\n copyInstanceOption('logo')\n\n store.dispatch('setInstanceOption', {\n name: 'logoMask',\n value: typeof config.logoMask === 'undefined'\n ? true\n : config.logoMask\n })\n\n store.dispatch('setInstanceOption', {\n name: 'logoMargin',\n value: typeof config.logoMargin === 'undefined'\n ? 0\n : config.logoMargin\n })\n copyInstanceOption('logoLeft')\n store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n copyInstanceOption('redirectRootNoLogin')\n copyInstanceOption('redirectRootLogin')\n copyInstanceOption('showInstanceSpecificPanel')\n copyInstanceOption('minimalScopesMode')\n copyInstanceOption('hideMutedPosts')\n copyInstanceOption('collapseMessageWithSubject')\n copyInstanceOption('scopeCopy')\n copyInstanceOption('subjectLineBehavior')\n copyInstanceOption('postContentType')\n copyInstanceOption('alwaysShowSubjectInput')\n copyInstanceOption('showFeaturesPanel')\n copyInstanceOption('hideSitename')\n copyInstanceOption('sidebarRight')\n\n return store.dispatch('setTheme', config.theme)\n}\n\nconst getTOS = async ({ store }) => {\n try {\n const res = await window.fetch('/static/terms-of-service.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'tos', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load TOS\")\n console.warn(e)\n }\n}\n\nconst getInstancePanel = async ({ store }) => {\n try {\n const res = await preloadFetch('/instance/panel.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load instance panel\")\n console.warn(e)\n }\n}\n\nconst getStickers = async ({ store }) => {\n try {\n const res = await window.fetch('/static/stickers.json')\n if (res.ok) {\n const values = await res.json()\n const stickers = (await Promise.all(\n Object.entries(values).map(async ([name, path]) => {\n const resPack = await window.fetch(path + 'pack.json')\n let meta = {}\n if (resPack.ok) {\n meta = await resPack.json()\n }\n return {\n pack: name,\n path,\n meta\n }\n })\n )).sort((a, b) => {\n return a.meta.title.localeCompare(b.meta.title)\n })\n store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load stickers\")\n console.warn(e)\n }\n}\n\nconst getAppSecret = async ({ store }) => {\n const { state, commit } = store\n const { oauth, instance } = state\n return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n .then((app) => getClientToken({ ...app, instance: instance.server }))\n .then((token) => {\n commit('setAppToken', token.access_token)\n commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n const nicknames = accounts.map(uri => uri.split('/').pop())\n store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n try {\n const res = await preloadFetch('/nodeinfo/2.0.json')\n if (res.ok) {\n const data = await res.json()\n const metadata = data.metadata\n const features = metadata.features\n store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })\n store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })\n store.dispatch('setInstanceOption', { name: 'pleromaCustomEmojiReactionsAvailable', value: features.includes('pleroma_custom_emoji_reactions') })\n store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n store.dispatch('setInstanceOption', { name: 'editingAvailable', value: features.includes('editing') })\n store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n store.dispatch('setInstanceOption', { name: 'quotingAvailable', value: features.includes('quote_posting') })\n\n const uploadLimits = metadata.uploadLimits\n store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n const suggestions = metadata.suggestions\n store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n const software = data.software\n store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n const priv = metadata.private\n store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n const frontendVersion = window.___pleromafe_commit_hash\n store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n const federation = metadata.federation\n\n store.dispatch('setInstanceOption', {\n name: 'tagPolicyAvailable',\n value: typeof federation.mrf_policies === 'undefined'\n ? false\n : metadata.federation.mrf_policies.includes('TagPolicy')\n })\n\n store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n store.dispatch('setInstanceOption', {\n name: 'federating',\n value: typeof federation.enabled === 'undefined'\n ? true\n : federation.enabled\n })\n\n const accountActivationRequired = metadata.accountActivationRequired\n store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n const accounts = metadata.staffAccounts\n resolveStaffAccounts({ store, accounts })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn('Could not load nodeinfo')\n console.warn(e)\n }\n}\n\nconst setConfig = async ({ store }) => {\n // apiConfig, staticConfig\n const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n const apiConfig = configInfos[0]\n const staticConfig = configInfos[1]\n\n await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n if (store.getters.getUserToken()) {\n try {\n await store.dispatch('loginUser', store.getters.getUserToken())\n } catch (e) {\n console.error(e)\n }\n }\n resolve()\n })\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n\n FaviconService.initFaviconService()\n\n const overrides = window.___pleromafe_dev_overrides || {}\n const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n await setConfig({ store })\n\n const { customTheme, customThemeSource } = store.state.config\n const { theme } = store.state.instance\n const customThemePresent = customThemeSource || customTheme\n\n if (customThemePresent) {\n if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n applyTheme(customThemeSource)\n } else {\n applyTheme(customTheme)\n }\n } else if (theme) {\n // do nothing, it will load asynchronously\n } else {\n console.error('Failed to load any theme!')\n }\n\n applyConfig(store.state.config)\n\n // Now we can try getting the server settings and logging in\n // Most of these are preloaded into the index.html so blocking is minimized\n await Promise.all([\n checkOAuthToken({ store }),\n getInstancePanel({ store }),\n getNodeInfo({ store }),\n getInstanceConfig({ store })\n ])\n\n // Start fetching things that don't need to block the UI\n store.dispatch('fetchMutes')\n store.dispatch('startFetchingAnnouncements')\n getTOS({ store })\n getStickers({ store })\n\n const router = createRouter({\n history: createWebHistory(),\n routes: routes(store),\n scrollBehavior: (to, _from, savedPosition) => {\n if (to.matched.some(m => m.meta.dontScroll)) {\n return false\n }\n return savedPosition || { left: 0, top: 0 }\n }\n })\n\n const app = createApp(App)\n\n app.use(router)\n app.use(store)\n app.use(i18n)\n\n app.use(vClickOutside)\n app.use(VBodyScrollLock)\n app.use(VueVirtualScroller)\n\n app.component('FAIcon', FontAwesomeIcon)\n app.component('FALayers', FontAwesomeLayers)\n\n // remove after vue 3.3\n app.config.unwrapInjectedRef = true\n\n app.mount('#app')\n\n return app\n}\n\nexport default afterStoreSetup\n","import { createStore } from 'vuex'\n\nimport 'custom-event-polyfill'\nimport './lib/event_target_polyfill.js'\n\nimport interfaceModule from './modules/interface.js'\nimport instanceModule from './modules/instance.js'\nimport statusesModule from './modules/statuses.js'\nimport listsModule from './modules/lists.js'\nimport usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport profileConfigModule from './modules/profileConfig.js'\nimport serverSideStorageModule from './modules/serverSideStorage.js'\nimport adminSettingsModule from './modules/adminSettings.js'\nimport shoutModule from './modules/shout.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\nimport editStatusModule from './modules/editStatus.js'\nimport statusHistoryModule from './modules/statusHistory.js'\n\nimport chatsModule from './modules/chats.js'\nimport announcementsModule from './modules/announcements.js'\n\nimport { createI18n } from 'vue-i18n'\n\nimport createPersistedState from './lib/persisted_state.js'\nimport pushNotifications from './lib/push_notifications_plugin.js'\n\nimport messages from './i18n/messages.js'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nconst i18n = createI18n({\n // By default, use the browser locale, we will update it if neccessary\n locale: 'en',\n fallbackLocale: 'en',\n messages: messages.default\n})\n\nmessages.setLanguage(i18n.global, currentLocale)\n\nconst persistedStateOptions = {\n paths: [\n 'serverSideStorage.cache',\n 'config',\n 'users.lastLoginName',\n 'oauth'\n ]\n};\n\n(async () => {\n let storageError = false\n const plugins = [pushNotifications]\n try {\n const persistedState = await createPersistedState(persistedStateOptions)\n plugins.push(persistedState)\n } catch (e) {\n console.error(e)\n storageError = true\n }\n const store = createStore({\n modules: {\n i18n: {\n getters: {\n i18n: () => i18n.global\n }\n },\n interface: interfaceModule,\n instance: instanceModule,\n // TODO refactor users/statuses modules, they depend on each other\n users: usersModule,\n statuses: statusesModule,\n lists: listsModule,\n api: apiModule,\n config: configModule,\n profileConfig: profileConfigModule,\n serverSideStorage: serverSideStorageModule,\n adminSettings: adminSettingsModule,\n shout: shoutModule,\n oauth: oauthModule,\n authFlow: authFlowModule,\n mediaViewer: mediaViewerModule,\n oauthTokens: oauthTokensModule,\n reports: reportsModule,\n polls: pollsModule,\n postStatus: postStatusModule,\n editStatus: editStatusModule,\n statusHistory: statusHistoryModule,\n chats: chatsModule,\n announcements: announcementsModule\n },\n plugins,\n strict: false // Socket modifies itself, let's ignore this for now.\n // strict: process.env.NODE_ENV !== 'production'\n })\n if (storageError) {\n store.dispatch('pushGlobalNotice', { messageKey: 'errors.storage_unavailable', level: 'error' })\n }\n afterStoreSetup({ store, i18n })\n})()\n\n// These are inlined by webpack's DefinePlugin\n/* eslint-disable */\nwindow.___pleromafe_mode = process.env\nwindow.___pleromafe_commit_hash = COMMIT_HASH\nwindow.___pleromafe_dev_overrides = DEV_OVERRIDES\n","import Cookies from 'js-cookie'\nimport { setPreset, applyTheme, applyConfig } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\nimport { set } from 'lodash'\nimport localeService from '../services/locale/locale.service.js'\n\nconst BACKEND_LANGUAGE_COOKIE_NAME = 'userLanguage'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n 'postContentType',\n 'subjectLineBehavior',\n 'conversationDisplay', // tree | linear\n 'conversationOtherRepliesButton', // below | inside\n 'mentionLinkDisplay', // short | full_for_remote | full\n 'userPopoverAvatarAction' // close | zoom | open\n]\n\nexport const defaultState = {\n expertLevel: 0, // used to track which settings to show and hide\n colors: {},\n theme: undefined,\n customTheme: undefined,\n customThemeSource: undefined,\n hideISP: false,\n hideInstanceWallpaper: false,\n hideShoutbox: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: undefined, // instance default\n hideMutedThreads: undefined, // instance default\n hideWordFilteredPosts: undefined, // instance default\n muteBotStatuses: undefined, // instance default\n collapseMessageWithSubject: undefined, // instance default\n padEmoji: true,\n hideAttachments: false,\n hideAttachmentsInConv: false,\n maxThumbnails: 16,\n hideNsfw: true,\n preloadImage: true,\n loopVideo: true,\n loopVideoSilentOnly: true,\n streaming: false,\n emojiReactionsOnTimeline: true,\n alwaysShowNewPostButton: false,\n autohideFloatingPostButton: false,\n pauseOnUnfocused: true,\n stopGifs: true,\n replyVisibility: 'all',\n thirdColumnMode: 'notifications',\n notificationVisibility: {\n follows: true,\n mentions: true,\n likes: true,\n repeats: true,\n moves: true,\n emojiReactions: true,\n followRequest: true,\n reports: true,\n chatMention: true,\n polls: true\n },\n webPushNotifications: false,\n muteWords: [],\n highlight: {},\n interfaceLanguage: browserLocale,\n hideScopeNotice: false,\n useStreamingApi: false,\n sidebarRight: undefined, // instance default\n scopeCopy: undefined, // instance default\n subjectLineBehavior: undefined, // instance default\n alwaysShowSubjectInput: undefined, // instance default\n postContentType: undefined, // instance default\n minimalScopesMode: undefined, // instance default\n // This hides statuses filtered via a word filter\n hideFilteredStatuses: undefined, // instance default\n modalOnRepeat: undefined, // instance default\n modalOnUnfollow: undefined, // instance default\n modalOnBlock: undefined, // instance default\n modalOnMute: undefined, // instance default\n modalOnDelete: undefined, // instance default\n modalOnLogout: undefined, // instance default\n modalOnApproveFollow: undefined, // instance default\n modalOnDenyFollow: undefined, // instance default\n modalOnRemoveUserFromFollowers: undefined, // instance default\n playVideosInModal: false,\n useOneClickNsfw: false,\n useContainFit: true,\n disableStickyHeaders: false,\n showScrollbars: false,\n userPopoverAvatarAction: 'open',\n userPopoverOverlay: false,\n sidebarColumnWidth: '25rem',\n contentColumnWidth: '45rem',\n notifsColumnWidth: '25rem',\n emojiReactionsScale: 1.0,\n navbarColumnStretch: false,\n greentext: undefined, // instance default\n useAtIcon: undefined, // instance default\n mentionLinkDisplay: undefined, // instance default\n mentionLinkShowTooltip: undefined, // instance default\n mentionLinkShowAvatar: undefined, // instance default\n mentionLinkFadeDomain: undefined, // instance default\n mentionLinkShowYous: undefined, // instance default\n mentionLinkBoldenYou: undefined, // instance default\n hidePostStats: undefined, // instance default\n hideBotIndication: undefined, // instance default\n hideUserStats: undefined, // instance default\n virtualScrolling: undefined, // instance default\n sensitiveByDefault: undefined, // instance default\n conversationDisplay: undefined, // instance default\n conversationTreeAdvanced: undefined, // instance default\n conversationOtherRepliesButton: undefined, // instance default\n conversationTreeFadeAncestors: undefined, // instance default\n maxDepthInThread: undefined, // instance default\n autocompleteSelect: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n .filter(([key, value]) => value === undefined)\n .map(([key, value]) => key)\n\nconst config = {\n state: { ...defaultState },\n getters: {\n defaultConfig (state, getters, rootState, rootGetters) {\n const { instance } = rootState\n return {\n ...defaultState,\n ...Object.fromEntries(\n instanceDefaultProperties.map(key => [key, instance[key]])\n )\n }\n },\n mergedConfig (state, getters, rootState, rootGetters) {\n const { defaultConfig } = rootGetters\n return {\n ...defaultConfig,\n // Do not override with undefined\n ...Object.fromEntries(Object.entries(state).filter(([k, v]) => v !== undefined))\n }\n }\n },\n mutations: {\n setOption (state, { name, value }) {\n set(state, name, value)\n },\n setHighlight (state, { user, color, type }) {\n const data = this.state.config.highlight[user]\n if (color || type) {\n state.highlight[user] = { color: color || data.color, type: type || data.type }\n } else {\n delete state.highlight[user]\n }\n }\n },\n actions: {\n loadSettings ({ dispatch }, data) {\n const knownKeys = new Set(Object.keys(defaultState))\n const presentKeys = new Set(Object.keys(data))\n const intersection = new Set()\n for (const elem of presentKeys) {\n if (knownKeys.has(elem)) {\n intersection.add(elem)\n }\n }\n\n intersection.forEach(\n name => dispatch('setOption', { name, value: data[name] })\n )\n },\n setHighlight ({ commit, dispatch }, { user, color, type }) {\n commit('setHighlight', { user, color, type })\n },\n setOption ({ commit, dispatch, state }, { name, value }) {\n const exceptions = new Set([\n 'useStreamingApi'\n ])\n\n if (exceptions.has(name)) {\n switch (name) {\n case 'useStreamingApi': {\n const action = value ? 'enableMastoSockets' : 'disableMastoSockets'\n\n dispatch(action).then(() => {\n commit('setOption', { name: 'useStreamingApi', value })\n }).catch((e) => {\n console.error('Failed starting MastoAPI Streaming socket', e)\n dispatch('disableMastoSockets')\n dispatch('setOption', { name: 'useStreamingApi', value: false })\n })\n }\n }\n } else {\n commit('setOption', { name, value })\n switch (name) {\n case 'theme':\n setPreset(value)\n break\n case 'sidebarColumnWidth':\n case 'contentColumnWidth':\n case 'notifsColumnWidth':\n case 'emojiReactionsScale':\n applyConfig(state)\n break\n case 'customTheme':\n case 'customThemeSource':\n applyTheme(value)\n break\n case 'interfaceLanguage':\n messages.setLanguage(this.getters.i18n, value)\n dispatch('loadUnicodeEmojiData', value)\n Cookies.set(\n BACKEND_LANGUAGE_COOKIE_NAME,\n localeService.internalToBackendLocaleMulti(value)\n )\n break\n case 'thirdColumnMode':\n dispatch('setLayoutWidth', undefined)\n break\n }\n }\n }\n }\n}\n\nexport default config\n","import { humanizeErrors } from '../../modules/errors'\n\nexport function StatusCodeError (statusCode, body, options, response) {\n this.name = 'StatusCodeError'\n this.statusCode = statusCode\n this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)\n this.error = body // legacy attribute\n this.options = options\n this.response = response\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this)\n }\n}\nStatusCodeError.prototype = Object.create(Error.prototype)\nStatusCodeError.prototype.constructor = StatusCodeError\n\nexport class RegistrationError extends Error {\n constructor (error) {\n super()\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this)\n }\n\n try {\n // the error is probably a JSON object with a single key, \"errors\", whose value is another JSON object containing the real errors\n if (typeof error === 'string') {\n error = JSON.parse(error)\n // eslint-disable-next-line\n if (error.hasOwnProperty('error')) {\n error = JSON.parse(error.error)\n }\n }\n\n if (typeof error === 'object') {\n const errorContents = JSON.parse(error.error)\n // keys will have the property that has the error, for example 'ap_id',\n // 'email' or 'captcha', the value will be an array of its error\n // like \"ap_id\": [\"has been taken\"] or \"captcha\": [\"Invalid CAPTCHA\"]\n\n // replace ap_id with username\n if (errorContents.ap_id) {\n errorContents.username = errorContents.ap_id\n delete errorContents.ap_id\n }\n\n this.message = humanizeErrors(errorContents)\n } else {\n this.message = error\n }\n } catch (e) {\n // can't parse it, so just treat it like a string\n this.message = error\n }\n }\n}\n","import { capitalize } from 'lodash'\n\nexport function humanizeErrors (errors) {\n return Object.entries(errors).reduce((errs, [k, val]) => {\n const message = val.reduce((acc, message) => {\n const key = capitalize(k.replace(/_/g, ' '))\n return acc + [key, message].join(' ') + '. '\n }, '')\n return [...errs, message]\n }, [])\n}\n","import { each, map, concat, last, get } from 'lodash'\nimport { parseStatus, parseSource, parseUser, parseNotification, parseAttachment, parseChat, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst MOVE_ACCOUNT_URL = '/api/pleroma/move_account'\nconst ALIASES_URL = '/api/pleroma/aliases'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_STATUS_SOURCE_URL = id => `/api/v1/statuses/${id}/source`\nconst MASTODON_STATUS_HISTORY_URL = id => `/api/v1/statuses/${id}/history`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_LOOKUP_URL = '/api/v1/accounts/lookup'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_USER_IN_LISTS = id => `/api/v1/accounts/${id}/lists`\nconst MASTODON_LIST_URL = id => `/api/v1/lists/${id}`\nconst MASTODON_LIST_TIMELINE_URL = id => `/api/v1/timelines/list/${id}`\nconst MASTODON_LIST_ACCOUNTS_URL = id => `/api/v1/lists/${id}/accounts`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_REMOVE_USER_FROM_FOLLOWERS = id => `/api/v1/accounts/${id}/remove_from_followers`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_USER_NOTE_URL = id => `/api/v1/accounts/${id}/note`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = '/api/v2/search'\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_LISTS_URL = '/api/v1/lists'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst MASTODON_ANNOUNCEMENTS_URL = '/api/v1/announcements'\nconst MASTODON_ANNOUNCEMENTS_DISMISS_URL = id => `/api/v1/announcements/${id}/dismiss`\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = '/api/v1/pleroma/chats'\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\nconst PLEROMA_ADMIN_REPORTS = '/api/pleroma/admin/reports'\nconst PLEROMA_BACKUP_URL = '/api/v1/pleroma/backups'\nconst PLEROMA_ANNOUNCEMENTS_URL = '/api/v1/pleroma/admin/announcements'\nconst PLEROMA_POST_ANNOUNCEMENT_URL = '/api/v1/pleroma/admin/announcements'\nconst PLEROMA_EDIT_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}`\nconst PLEROMA_DELETE_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}`\n\nconst PLEROMA_ADMIN_CONFIG_URL = '/api/pleroma/admin/config'\nconst PLEROMA_ADMIN_DESCRIPTIONS_URL = '/api/pleroma/admin/config/descriptions'\nconst PLEROMA_ADMIN_FRONTENDS_URL = '/api/pleroma/admin/frontends'\nconst PLEROMA_ADMIN_FRONTENDS_INSTALL_URL = '/api/pleroma/admin/frontends/install'\n\nconst oldfetch = window.fetch\n\nconst fetch = (url, options) => {\n options = options || {}\n const baseUrl = ''\n const fullUrl = baseUrl + url\n options.credentials = 'same-origin'\n return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n const options = {\n method,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...headers\n }\n }\n if (params) {\n url += '?' + Object.entries(params)\n .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n .join('&')\n }\n if (payload) {\n options.body = JSON.stringify(payload)\n }\n if (credentials) {\n options.headers = {\n ...options.headers,\n ...authHeaders(credentials)\n }\n }\n return fetch(url, options)\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url, options }, response))\n }\n return resolve(json)\n })\n .catch((error) => {\n return reject(new StatusCodeError(response.status, error, { url, options }, response))\n })\n )\n })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n const form = new FormData()\n\n each(settings, (value, key) => {\n form.append(key, value)\n })\n\n return fetch(`${NOTIFICATION_SETTINGS_URL}?${new URLSearchParams(settings)}`, {\n headers: authHeaders(credentials),\n method: 'PUT',\n body: form\n }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, avatarName = null, banner = null, background = null }) => {\n const form = new FormData()\n if (avatar !== null) {\n if (avatarName !== null) {\n form.append('avatar', avatar, avatarName)\n } else {\n form.append('avatar', avatar)\n }\n }\n if (banner !== null) form.append('header', banner)\n if (background !== null) form.append('pleroma_background_image', background)\n return fetch(MASTODON_PROFILE_UPDATE_URL, {\n headers: authHeaders(credentials),\n method: 'PATCH',\n body: form\n })\n .then((data) => data.json())\n .then((data) => {\n if (data.error) {\n throw new Error(data.error)\n }\n return parseUser(data)\n })\n}\n\nconst updateProfile = ({ credentials, params }) => {\n return promisedRequest({\n url: MASTODON_PROFILE_UPDATE_URL,\n method: 'PATCH',\n payload: params,\n credentials\n }).then((data) => parseUser(data))\n}\n\n// Params needed:\n// nickname\n// email\n// fullname\n// password\n// password_confirm\n//\n// Optional\n// bio\n// homepage\n// location\n// token\n// language\nconst register = ({ params, credentials }) => {\n const { nickname, ...rest } = params\n return fetch(MASTODON_REGISTRATION_URL, {\n method: 'POST',\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n nickname,\n locale: 'en_US',\n agreement: true,\n ...rest\n })\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return response.json().then((error) => { throw new RegistrationError(error) })\n }\n })\n}\n\nconst getCaptcha = () => fetch('/api/pleroma/captcha').then(resp => resp.json())\n\nconst authHeaders = (accessToken) => {\n if (accessToken) {\n return { Authorization: `Bearer ${accessToken}` }\n } else {\n return { }\n }\n}\n\nconst followUser = ({ id, credentials, ...options }) => {\n const url = MASTODON_FOLLOW_URL(id)\n const form = {}\n if (options.reblogs !== undefined) { form.reblogs = options.reblogs }\n return fetch(url, {\n body: JSON.stringify(form),\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n const url = MASTODON_UNFOLLOW_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUserInLists = ({ id, credentials }) => {\n const url = MASTODON_USER_IN_LISTS(id)\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n return fetch(MASTODON_BLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst removeUserFromFollowers = ({ id, credentials }) => {\n return fetch(MASTODON_REMOVE_USER_FROM_FOLLOWERS(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst editUserNote = ({ id, credentials, comment }) => {\n return promisedRequest({\n url: MASTODON_USER_NOTE_URL(id),\n credentials,\n payload: {\n comment\n },\n method: 'POST'\n })\n}\n\nconst approveUser = ({ id, credentials }) => {\n const url = MASTODON_APPROVE_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n const url = MASTODON_DENY_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n const url = `${MASTODON_USER_URL}/${id}`\n return promisedRequest({ url, credentials })\n .then((data) => parseUser(data))\n}\n\nconst fetchUserByName = ({ name, credentials }) => {\n return promisedRequest({\n url: MASTODON_USER_LOOKUP_URL,\n credentials,\n params: { acct: name }\n })\n .then(data => data.id)\n .catch(error => {\n if (error && error.statusCode === 404) {\n // Either the backend does not support lookup endpoint,\n // or there is no user with such name. Fallback and treat name as id.\n return name\n } else {\n throw error\n }\n })\n .then(id => fetchUser({ id, credentials }))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n const url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n return fetch(url, { headers: authHeaders(credentials) })\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url }, response))\n }\n return resolve(json)\n }))\n })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWING_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n 'with_relationships=true'\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n try {\n let friends = []\n let more = true\n while (more) {\n const maxId = friends.length > 0 ? last(friends).id : undefined\n const users = await fetchFriends({ id, maxId, credentials })\n friends = concat(friends, users)\n if (users.length === 0) {\n more = false\n }\n }\n resolve(friends)\n } catch (err) {\n reject(err)\n }\n })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWERS_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n 'with_relationships=true'\n ].filter(_ => _).join('&')\n\n url += args ? '?' + args : ''\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n const url = MASTODON_FOLLOW_REQUESTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchLists = ({ credentials }) => {\n const url = MASTODON_LISTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n}\n\nconst createList = ({ title, credentials }) => {\n const url = MASTODON_LISTS_URL\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({ title })\n }).then((data) => data.json())\n}\n\nconst getList = ({ listId, credentials }) => {\n const url = MASTODON_LIST_URL(listId)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n}\n\nconst updateList = ({ listId, title, credentials }) => {\n const url = MASTODON_LIST_URL(listId)\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'PUT',\n body: JSON.stringify({ title })\n })\n}\n\nconst getListAccounts = ({ listId, credentials }) => {\n const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(({ id }) => id))\n}\n\nconst addAccountsToList = ({ listId, accountIds, credentials }) => {\n const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'POST',\n body: JSON.stringify({ account_ids: accountIds })\n })\n}\n\nconst removeAccountsFromList = ({ listId, accountIds, credentials }) => {\n const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(url, {\n headers,\n method: 'DELETE',\n body: JSON.stringify({ account_ids: accountIds })\n })\n}\n\nconst deleteList = ({ listId, credentials }) => {\n const url = MASTODON_LIST_URL(listId)\n return fetch(url, {\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n const urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n return fetch(urlContext, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then(({ ancestors, descendants }) => ({\n ancestors: ancestors.map(parseStatus),\n descendants: descendants.map(parseStatus)\n }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n const url = MASTODON_STATUS_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then((data) => parseStatus(data))\n}\n\nconst fetchStatusSource = ({ id, credentials }) => {\n const url = MASTODON_STATUS_SOURCE_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching source', data)\n })\n .then((data) => data.json())\n .then((data) => parseSource(data))\n}\n\nconst fetchStatusHistory = ({ status, credentials }) => {\n const url = MASTODON_STATUS_HISTORY_URL(status.id)\n return promisedRequest({ url, credentials })\n .then((data) => {\n data.reverse()\n return data.map((item) => {\n item.originalStatus = status\n return parseStatus(item)\n })\n })\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const form = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'PUT',\n headers,\n body: JSON.stringify(form)\n })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const body = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'DELETE',\n headers,\n body: JSON.stringify(body)\n })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'POST',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'DELETE',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: ACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: DEACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n const screenName = user.screen_name\n const headers = authHeaders(credentials)\n\n return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n method: 'DELETE',\n headers\n })\n}\n\nconst fetchTimeline = ({\n timeline,\n credentials,\n since = false,\n until = false,\n userId = false,\n listId = false,\n tag = false,\n withMuted = false,\n replyVisibility = 'all',\n includeTypes = []\n}) => {\n const timelineUrls = {\n public: MASTODON_PUBLIC_TIMELINE,\n friends: MASTODON_USER_HOME_TIMELINE_URL,\n dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n notifications: MASTODON_USER_NOTIFICATIONS_URL,\n publicAndExternal: MASTODON_PUBLIC_TIMELINE,\n user: MASTODON_USER_TIMELINE_URL,\n media: MASTODON_USER_TIMELINE_URL,\n list: MASTODON_LIST_TIMELINE_URL,\n favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n tag: MASTODON_TAG_TIMELINE_URL,\n bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n }\n const isNotifications = timeline === 'notifications'\n const params = []\n\n let url = timelineUrls[timeline]\n\n if (timeline === 'user' || timeline === 'media') {\n url = url(userId)\n }\n\n if (timeline === 'list') {\n url = url(listId)\n }\n\n if (since) {\n params.push(['since_id', since])\n }\n if (until) {\n params.push(['max_id', until])\n }\n if (tag) {\n url = url(tag)\n }\n if (timeline === 'media') {\n params.push(['only_media', 1])\n }\n if (timeline === 'public') {\n params.push(['local', true])\n }\n if (timeline === 'public' || timeline === 'publicAndExternal') {\n params.push(['only_media', false])\n }\n if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n params.push(['with_muted', withMuted])\n }\n if (replyVisibility !== 'all') {\n params.push(['reply_visibility', replyVisibility])\n }\n if (includeTypes.length > 0) {\n includeTypes.forEach(type => {\n params.push(['include_types[]', type])\n })\n }\n\n params.push(['limit', 20])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then(async (response) => {\n const success = response.ok\n\n const data = await response.json()\n\n if (success && !data.errors) {\n const pagination = parseLinkHeaderPagination(response.headers.get('Link'), {\n flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n })\n\n return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n } else {\n data.errors ||= []\n data.status = response.status\n data.statusText = response.statusText\n return data\n }\n })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n return promisedRequest({ url, credentials })\n .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n return fetch(MASTODON_LOGIN_URL, {\n headers: authHeaders(user)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_BOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst postStatus = ({\n credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n mediaIds = [],\n inReplyToStatusId,\n quoteId,\n contentType,\n preview,\n idempotencyKey\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n form.append('source', 'Pleroma FE')\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (visibility) form.append('visibility', visibility)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: parseInt(poll.expiresIn, 10),\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n if (inReplyToStatusId) {\n form.append('in_reply_to_id', inReplyToStatusId)\n }\n if (quoteId) {\n form.append('quote_id', quoteId)\n }\n if (preview) {\n form.append('preview', 'true')\n }\n\n const postHeaders = authHeaders(credentials)\n if (idempotencyKey) {\n postHeaders['idempotency-key'] = idempotencyKey\n }\n\n return fetch(MASTODON_POST_STATUS_URL, {\n body: form,\n method: 'POST',\n headers: postHeaders\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst editStatus = ({\n id,\n credentials,\n status,\n spoilerText,\n sensitive,\n poll,\n mediaIds = [],\n contentType\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: parseInt(poll.expiresIn, 10),\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n\n const putHeaders = authHeaders(credentials)\n\n return fetch(MASTODON_STATUS_URL(id), {\n body: form,\n method: 'PUT',\n headers: putHeaders\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_DELETE_URL(id),\n credentials,\n method: 'DELETE'\n })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((data) => data.json())\n .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n return promisedRequest({\n url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n method: 'PUT',\n headers: authHeaders(credentials),\n payload: {\n description\n }\n }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(MUTES_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(BLOCKS_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(FOLLOW_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(DELETE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n const form = new FormData()\n\n form.append('email', email)\n form.append('password', password)\n\n return fetch(CHANGE_EMAIL_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst moveAccount = ({ credentials, password, targetAccount }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('target_account', targetAccount)\n\n return fetch(MOVE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst addAlias = ({ credentials, alias }) => {\n return promisedRequest({\n url: ALIASES_URL,\n method: 'PUT',\n credentials,\n payload: { alias }\n })\n}\n\nconst deleteAlias = ({ credentials, alias }) => {\n return promisedRequest({\n url: ALIASES_URL,\n method: 'DELETE',\n credentials,\n payload: { alias }\n })\n}\n\nconst listAliases = ({ credentials }) => {\n return promisedRequest({\n url: ALIASES_URL,\n method: 'GET',\n credentials,\n params: {\n _cacheBooster: (new Date()).getTime()\n }\n })\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('new_password', newPassword)\n form.append('new_password_confirmation', newPasswordConfirmation)\n\n return fetch(CHANGE_PASSWORD_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n return fetch(MFA_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(MFA_DISABLE_OTP_URL, {\n body: form,\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('code', token)\n\n return fetch(MFA_CONFIRM_OTP_URL, {\n body: form,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n return fetch(MFA_SETUP_OTP_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n return fetch(MFA_BACKUP_CODES_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ maxId, credentials }) => {\n const query = new URLSearchParams({ with_relationships: true })\n if (maxId) {\n query.append('max_id', maxId)\n }\n return promisedRequest({ url: `${MASTODON_USER_MUTES_URL}?${query.toString()}`, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, expiresIn, credentials }) => {\n const payload = {}\n if (expiresIn) {\n payload.expires_in = expiresIn\n }\n return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST', payload })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ maxId, credentials }) => {\n const query = new URLSearchParams({ with_relationships: true })\n if (maxId) {\n query.append('max_id', maxId)\n }\n return promisedRequest({ url: `${MASTODON_USER_BLOCKS_URL}?${query.toString()}`, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst addBackup = ({ credentials }) => {\n return promisedRequest({\n url: PLEROMA_BACKUP_URL,\n method: 'POST',\n credentials\n })\n}\n\nconst listBackups = ({ credentials }) => {\n return promisedRequest({\n url: PLEROMA_BACKUP_URL,\n method: 'GET',\n credentials,\n params: {\n _cacheBooster: (new Date()).getTime()\n }\n })\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n const url = '/api/oauth_tokens.json'\n\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => {\n if (data.ok) {\n return data.json()\n }\n throw new Error('Error fetching auth tokens', data)\n })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n const url = `/api/oauth_tokens/${id}`\n\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst suggestions = ({ credentials }) => {\n return fetch(SUGGESTIONS_URL, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n const body = new FormData()\n\n if (single) {\n body.append('id', id)\n } else {\n body.append('max_id', id)\n }\n\n return fetch(NOTIFICATION_READ_URL, {\n body,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n const form = new FormData()\n form.append('choices', choices)\n\n return promisedRequest({\n url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n method: 'POST',\n credentials,\n payload: {\n choices\n }\n })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n return promisedRequest(\n {\n url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n method: 'GET',\n credentials\n }\n )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n .then((reactions) => reactions.map(r => {\n r.accounts = r.accounts.map(parseUser)\n return r\n }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n method: 'PUT',\n credentials\n }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n method: 'DELETE',\n credentials\n }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n return promisedRequest({\n url: MASTODON_REPORT_USER_URL,\n method: 'POST',\n payload: {\n account_id: userId,\n status_ids: statusIds,\n comment,\n forward\n },\n credentials\n })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n return promisedRequest({\n url: MASTODON_USER_SEARCH_URL,\n params: {\n q: query,\n resolve: true\n },\n credentials\n })\n .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following, type }) => {\n let url = MASTODON_SEARCH_2\n const params = []\n\n if (q) {\n params.push(['q', encodeURIComponent(q)])\n }\n\n if (resolve) {\n params.push(['resolve', resolve])\n }\n\n if (limit) {\n params.push(['limit', limit])\n }\n\n if (offset) {\n params.push(['offset', offset])\n }\n\n if (following) {\n params.push(['following', true])\n }\n\n if (type) {\n params.push(['following', type])\n }\n\n params.push(['with_relationships', true])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching search result', data)\n })\n .then((data) => { return data.json() })\n .then((data) => {\n data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n return data\n })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'POST',\n payload: { domain },\n credentials\n })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'DELETE',\n payload: { domain },\n credentials\n })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n return promisedRequest({\n url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n method: 'POST',\n payload: { id },\n credentials\n })\n}\n\nconst adminFetchAnnouncements = ({ credentials }) => {\n return promisedRequest({ url: PLEROMA_ANNOUNCEMENTS_URL, credentials })\n}\n\nconst fetchAnnouncements = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_ANNOUNCEMENTS_URL, credentials })\n}\n\nconst dismissAnnouncement = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_ANNOUNCEMENTS_DISMISS_URL(id),\n credentials,\n method: 'POST'\n })\n}\n\nconst announcementToPayload = ({ content, startsAt, endsAt, allDay }) => {\n const payload = { content }\n\n if (typeof startsAt !== 'undefined') {\n payload.starts_at = startsAt ? new Date(startsAt).toISOString() : null\n }\n\n if (typeof endsAt !== 'undefined') {\n payload.ends_at = endsAt ? new Date(endsAt).toISOString() : null\n }\n\n if (typeof allDay !== 'undefined') {\n payload.all_day = allDay\n }\n\n return payload\n}\n\nconst postAnnouncement = ({ credentials, content, startsAt, endsAt, allDay }) => {\n return promisedRequest({\n url: PLEROMA_POST_ANNOUNCEMENT_URL,\n credentials,\n method: 'POST',\n payload: announcementToPayload({ content, startsAt, endsAt, allDay })\n })\n}\n\nconst editAnnouncement = ({ id, credentials, content, startsAt, endsAt, allDay }) => {\n return promisedRequest({\n url: PLEROMA_EDIT_ANNOUNCEMENT_URL(id),\n credentials,\n method: 'PATCH',\n payload: announcementToPayload({ content, startsAt, endsAt, allDay })\n })\n}\n\nconst deleteAnnouncement = ({ id, credentials }) => {\n return promisedRequest({\n url: PLEROMA_DELETE_ANNOUNCEMENT_URL(id),\n credentials,\n method: 'DELETE'\n })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n return Object.entries({\n ...(credentials\n ? { access_token: credentials }\n : {}\n ),\n stream,\n ...args\n }).reduce((acc, [key, val]) => {\n return acc + `${key}=${val}&`\n }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n 'update',\n 'notification',\n 'delete',\n 'filters_changed',\n 'status.update'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n 'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n url,\n preprocessor = handleMastoWS,\n id = 'Unknown'\n}) => {\n const eventTarget = new EventTarget()\n const socket = new WebSocket(url)\n if (!socket) throw new Error(`Failed to create socket ${id}`)\n const proxy = (original, eventName, processor = a => a) => {\n original.addEventListener(eventName, (eventData) => {\n eventTarget.dispatchEvent(new CustomEvent(\n eventName,\n { detail: processor(eventData) }\n ))\n })\n }\n socket.addEventListener('open', (wsEvent) => {\n console.debug(`[WS][${id}] Socket connected`, wsEvent)\n })\n socket.addEventListener('error', (wsEvent) => {\n console.debug(`[WS][${id}] Socket errored`, wsEvent)\n })\n socket.addEventListener('close', (wsEvent) => {\n console.debug(\n `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n wsEvent\n )\n })\n // Commented code reason: very spammy, uncomment to enable message debug logging\n /*\n socket.addEventListener('message', (wsEvent) => {\n console.debug(\n `[WS][${id}] Message received`,\n wsEvent\n )\n })\n /**/\n\n proxy(socket, 'open')\n proxy(socket, 'close')\n proxy(socket, 'message', preprocessor)\n proxy(socket, 'error')\n\n // 1000 = Normal Closure\n eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n eventTarget.getState = () => socket.readyState\n\n return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n const { data } = wsEvent\n if (!data) return\n const parsedEvent = JSON.parse(data)\n const { event, payload } = parsedEvent\n if (MASTODON_STREAMING_EVENTS.has(event) || PLEROMA_STREAMING_EVENTS.has(event)) {\n // MastoBE and PleromaBE both send payload for delete as a PLAIN string\n if (event === 'delete') {\n return { event, id: payload }\n }\n const data = payload ? JSON.parse(payload) : null\n if (event === 'update') {\n return { event, status: parseStatus(data) }\n } else if (event === 'status.update') {\n return { event, status: parseStatus(data) }\n } else if (event === 'notification') {\n return { event, notification: parseNotification(data) }\n } else if (event === 'pleroma:chat_update') {\n return { event, chatUpdate: parseChat(data) }\n }\n } else {\n console.warn('Unknown event', wsEvent)\n return null\n }\n}\n\nexport const WSConnectionStatus = Object.freeze({\n JOINED: 1,\n CLOSED: 2,\n ERROR: 3,\n DISABLED: 4,\n STARTING: 5,\n STARTING_INITIAL: 6\n})\n\nconst chats = ({ credentials }) => {\n return fetch(PLEROMA_CHATS_URL, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => {\n return { chats: data.map(parseChat).filter(c => c) }\n })\n}\n\nconst getOrCreateChat = ({ accountId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_URL(accountId),\n method: 'POST',\n credentials\n })\n}\n\nconst chatMessages = ({ id, credentials, maxId, sinceId, limit = 20 }) => {\n let url = PLEROMA_CHAT_MESSAGES_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n\n return promisedRequest({\n url,\n method: 'GET',\n credentials\n })\n}\n\nconst sendChatMessage = ({ id, content, mediaId = null, idempotencyKey, credentials }) => {\n const payload = {\n content\n }\n\n if (mediaId) {\n payload.media_id = mediaId\n }\n\n const headers = {}\n\n if (idempotencyKey) {\n headers['idempotency-key'] = idempotencyKey\n }\n\n return promisedRequest({\n url: PLEROMA_CHAT_MESSAGES_URL(id),\n method: 'POST',\n payload,\n credentials,\n headers\n })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_READ_URL(id),\n method: 'POST',\n payload: {\n last_read_id: lastReadId\n },\n credentials\n })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n method: 'DELETE',\n credentials\n })\n}\n\nconst setReportState = ({ id, state, credentials }) => {\n // TODO: Can't use promisedRequest because on OK this does not return json\n // See https://git.pleroma.social/pleroma/pleroma-fe/-/merge_requests/1322\n return fetch(PLEROMA_ADMIN_REPORTS, {\n headers: {\n ...authHeaders(credentials),\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n method: 'PATCH',\n body: JSON.stringify({\n reports: [{\n id,\n state\n }]\n })\n })\n .then(data => {\n if (data.status >= 500) {\n throw Error(data.statusText)\n } else if (data.status >= 400) {\n return data.json()\n }\n return data\n })\n .then(data => {\n if (data.errors) {\n throw Error(data.errors[0].message)\n }\n })\n}\n\n// ADMIN STUFF // EXPERIMENTAL\nconst fetchInstanceDBConfig = ({ credentials }) => {\n return fetch(PLEROMA_ADMIN_CONFIG_URL, {\n headers: authHeaders(credentials)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n}\n\nconst fetchInstanceConfigDescriptions = ({ credentials }) => {\n return fetch(PLEROMA_ADMIN_DESCRIPTIONS_URL, {\n headers: authHeaders(credentials)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n}\n\nconst fetchAvailableFrontends = ({ credentials }) => {\n return fetch(PLEROMA_ADMIN_FRONTENDS_URL, {\n headers: authHeaders(credentials)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n}\n\nconst pushInstanceDBConfig = ({ credentials, payload }) => {\n return fetch(PLEROMA_ADMIN_CONFIG_URL, {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...authHeaders(credentials)\n },\n method: 'POST',\n body: JSON.stringify(payload)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n}\n\nconst installFrontend = ({ credentials, payload }) => {\n return fetch(PLEROMA_ADMIN_FRONTENDS_INSTALL_URL, {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...authHeaders(credentials)\n },\n method: 'POST',\n body: JSON.stringify(payload)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n}\n\nconst apiService = {\n verifyCredentials,\n fetchTimeline,\n fetchPinnedStatuses,\n fetchConversation,\n fetchStatus,\n fetchStatusSource,\n fetchStatusHistory,\n fetchFriends,\n exportFriends,\n fetchFollowers,\n followUser,\n unfollowUser,\n pinOwnStatus,\n unpinOwnStatus,\n muteConversation,\n unmuteConversation,\n blockUser,\n unblockUser,\n removeUserFromFollowers,\n editUserNote,\n fetchUser,\n fetchUserByName,\n fetchUserRelationship,\n favorite,\n unfavorite,\n retweet,\n unretweet,\n bookmarkStatus,\n unbookmarkStatus,\n postStatus,\n editStatus,\n deleteStatus,\n uploadMedia,\n setMediaDescription,\n fetchMutes,\n muteUser,\n unmuteUser,\n subscribeUser,\n unsubscribeUser,\n fetchBlocks,\n fetchOAuthTokens,\n revokeOAuthToken,\n tagUser,\n untagUser,\n deleteUser,\n addRight,\n deleteRight,\n activateUser,\n deactivateUser,\n register,\n getCaptcha,\n updateProfileImages,\n updateProfile,\n importMutes,\n importBlocks,\n importFollows,\n deleteAccount,\n changeEmail,\n moveAccount,\n addAlias,\n deleteAlias,\n listAliases,\n changePassword,\n settingsMFA,\n mfaDisableOTP,\n generateMfaBackupCodes,\n mfaSetupOTP,\n mfaConfirmOTP,\n addBackup,\n listBackups,\n fetchFollowRequests,\n fetchLists,\n createList,\n getList,\n updateList,\n getListAccounts,\n addAccountsToList,\n removeAccountsFromList,\n deleteList,\n approveUser,\n denyUser,\n suggestions,\n markNotificationsAsSeen,\n dismissNotification,\n vote,\n fetchPoll,\n fetchFavoritedByUsers,\n fetchRebloggedByUsers,\n fetchEmojiReactions,\n reactWithEmoji,\n unreactWithEmoji,\n reportUser,\n updateNotificationSettings,\n search2,\n searchUsers,\n fetchKnownDomains,\n fetchDomainMutes,\n muteDomain,\n unmuteDomain,\n chats,\n getOrCreateChat,\n chatMessages,\n sendChatMessage,\n readChat,\n deleteChatMessage,\n setReportState,\n fetchUserInLists,\n fetchAnnouncements,\n dismissAnnouncement,\n postAnnouncement,\n editAnnouncement,\n deleteAnnouncement,\n adminFetchAnnouncements,\n fetchInstanceDBConfig,\n fetchInstanceConfigDescriptions,\n fetchAvailableFrontends,\n pushInstanceDBConfig,\n installFrontend\n}\n\nexport default apiService\n","import { kebabCase } from 'lodash'\n\nconst propsToNative = props => Object.keys(props).reduce((acc, cur) => {\n acc[kebabCase(cur)] = props[cur]\n return acc\n}, {})\n\nexport { propsToNative }\n","import { invertLightness, contrastRatio } from 'chromatism'\n\n// useful for visualizing color when debugging\nexport const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color)\n\n/**\n * Convert r, g, b values into hex notation. All components are [0-255]\n *\n * @param {Number|String|Object} r - Either red component, {r,g,b} object, or hex string\n * @param {Number} [g] - Green component\n * @param {Number} [b] - Blue component\n */\nexport const rgb2hex = (r, g, b) => {\n if (r === null || typeof r === 'undefined') {\n return undefined\n }\n // TODO: clean up this mess\n if (r[0] === '#' || r === 'transparent') {\n return r\n }\n if (typeof r === 'object') {\n ({ r, g, b } = r)\n }\n [r, g, b] = [r, g, b].map(val => {\n val = Math.ceil(val)\n val = val < 0 ? 0 : val\n val = val > 255 ? 255 : val\n return val\n })\n return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`\n}\n\n/**\n * Converts 8-bit RGB component into linear component\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n * https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n *\n * @param {Number} bit - color component [0..255]\n * @returns {Number} linear component [0..1]\n */\nconst c2linear = (bit) => {\n // W3C gives 0.03928 while wikipedia states 0.04045\n // what those magical numbers mean - I don't know.\n // something about gamma-correction, i suppose.\n // Sticking with W3C example.\n const c = bit / 255\n if (c < 0.03928) {\n return c / 12.92\n } else {\n return Math.pow((c + 0.055) / 1.055, 2.4)\n }\n}\n\n/**\n * Converts sRGB into linear RGB\n * @param {Object} srgb - sRGB color\n * @returns {Object} linear rgb color\n */\nconst srgbToLinear = (srgb) => {\n return 'rgb'.split('').reduce((acc, c) => { acc[c] = c2linear(srgb[c]); return acc }, {})\n}\n\n/**\n * Calculates relative luminance for given color\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n *\n * @param {Object} srgb - sRGB color\n * @returns {Number} relative luminance\n */\nexport const relativeLuminance = (srgb) => {\n const { r, g, b } = srgbToLinear(srgb)\n return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/**\n * Generates color ratio between two colors. Order is unimporant\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n *\n * @param {Object} a - sRGB color\n * @param {Object} b - sRGB color\n * @returns {Number} color ratio\n */\nexport const getContrastRatio = (a, b) => {\n const la = relativeLuminance(a)\n const lb = relativeLuminance(b)\n const [l1, l2] = la > lb ? [la, lb] : [lb, la]\n\n return (l1 + 0.05) / (l2 + 0.05)\n}\n\n/**\n * Same as `getContrastRatio` but for multiple layers in-between\n *\n * @param {Object} text - text color (topmost layer)\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n * @param {Object} bedrock - layer at the very bottom\n */\nexport const getContrastRatioLayers = (text, layers, bedrock) => {\n return getContrastRatio(alphaBlendLayers(bedrock, layers), text)\n}\n\n/**\n * This performs alpha blending between solid background and semi-transparent foreground\n *\n * @param {Object} fg - top layer color\n * @param {Number} fga - top layer's alpha\n * @param {Object} bg - bottom layer color\n * @returns {Object} sRGB of resulting color\n */\nexport const alphaBlend = (fg, fga, bg) => {\n if (fga === 1 || typeof fga === 'undefined') return fg\n return 'rgb'.split('').reduce((acc, c) => {\n // Simplified https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending\n // for opaque bg and transparent fg\n acc[c] = (fg[c] * fga + bg[c] * (1 - fga))\n return acc\n }, {})\n}\n\n/**\n * Same as `alphaBlend` but for multiple layers in-between\n *\n * @param {Object} bedrock - layer at the very bottom\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n */\nexport const alphaBlendLayers = (bedrock, layers) => layers.reduce((acc, [color, opacity]) => {\n return alphaBlend(color, opacity, acc)\n}, bedrock)\n\nexport const invert = (rgb) => {\n return 'rgb'.split('').reduce((acc, c) => {\n acc[c] = 255 - rgb[c]\n return acc\n }, {})\n}\n\n/**\n * Converts #rrggbb hex notation into an {r, g, b} object\n *\n * @param {String} hex - #rrggbb string\n * @returns {Object} rgb representation of the color, values are 0-255\n */\nexport const hex2rgb = (hex) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n }\n : null\n}\n\n/**\n * Old somewhat weird function for mixing two colors together\n *\n * @param {Object} a - one color (rgb)\n * @param {Object} b - other color (rgb)\n * @returns {Object} result\n */\nexport const mixrgb = (a, b) => {\n return 'rgb'.split('').reduce((acc, k) => {\n acc[k] = (a[k] + b[k]) / 2\n return acc\n }, {})\n}\n/**\n * Converts rgb object into a CSS rgba() color\n *\n * @param {Object} color - rgb\n * @returns {String} CSS rgba() color\n */\nexport const rgba2css = function (rgba) {\n return `rgba(${Math.floor(rgba.r)}, ${Math.floor(rgba.g)}, ${Math.floor(rgba.b)}, ${rgba.a})`\n}\n\n/**\n * Get text color for given background color and intended text color\n * This checks if text and background don't have enough color and inverts\n * text color's lightness if needed. If text color is still not enough it\n * will fall back to black or white\n *\n * @param {Object} bg - background color\n * @param {Object} text - intended text color\n * @param {Boolean} preserve - try to preserve intended text color's hue/saturation (i.e. no BW)\n */\nexport const getTextColor = function (bg, text, preserve) {\n const contrast = getContrastRatio(bg, text)\n\n if (contrast < 4.5) {\n const base = typeof text.a !== 'undefined' ? { a: text.a } : {}\n const result = Object.assign(base, invertLightness(text).rgb)\n if (!preserve && getContrastRatio(bg, result) < 4.5) {\n // B&W\n return contrastRatio(bg, text).rgb\n }\n // Inverted color\n return result\n }\n return text\n}\n\n/**\n * Converts color to CSS Color value\n *\n * @param {Object|String} input - color\n * @param {Number} [a] - alpha value\n * @returns {String} a CSS Color value\n */\nexport const getCssColor = (input, a) => {\n let rgb = {}\n if (typeof input === 'object') {\n rgb = input\n } else if (typeof input === 'string') {\n if (input.startsWith('#')) {\n rgb = hex2rgb(input)\n } else {\n return input\n }\n }\n return rgba2css({ ...rgb, a })\n}\n","import isFunction from 'lodash/isFunction'\n\nconst getComponentOptions = (Component) => (isFunction(Component)) ? Component.options : Component\n\nconst getComponentProps = (Component) => getComponentOptions(Component).props\n\nexport {\n getComponentOptions,\n getComponentProps\n}\n","export const SECOND = 1000\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\nexport const WEEK = 7 * DAY\nexport const MONTH = 30 * DAY\nexport const YEAR = 365.25 * DAY\n\nexport const relativeTime = (date, nowThreshold = 1) => {\n if (typeof date === 'string') date = Date.parse(date)\n const round = Date.now() > date ? Math.floor : Math.ceil\n const d = Math.abs(Date.now() - date)\n const r = { num: round(d / YEAR), key: 'time.unit.years' }\n if (d < nowThreshold * SECOND) {\n r.num = 0\n r.key = 'time.now'\n } else if (d < MINUTE) {\n r.num = round(d / SECOND)\n r.key = 'time.unit.seconds'\n } else if (d < HOUR) {\n r.num = round(d / MINUTE)\n r.key = 'time.unit.minutes'\n } else if (d < DAY) {\n r.num = round(d / HOUR)\n r.key = 'time.unit.hours'\n } else if (d < WEEK) {\n r.num = round(d / DAY)\n r.key = 'time.unit.days'\n } else if (d < MONTH) {\n r.num = round(d / WEEK)\n r.key = 'time.unit.weeks'\n } else if (d < YEAR) {\n r.num = round(d / MONTH)\n r.key = 'time.unit.months'\n }\n return r\n}\n\nexport const relativeTimeShort = (date, nowThreshold = 1) => {\n const r = relativeTime(date, nowThreshold)\n r.key += '_short'\n return r\n}\n\nexport const unitToSeconds = (unit, amount) => {\n switch (unit) {\n case 'minutes': return 0.001 * amount * MINUTE\n case 'hours': return 0.001 * amount * HOUR\n case 'days': return 0.001 * amount * DAY\n }\n}\n\nexport const secondsToUnit = (unit, amount) => {\n switch (unit) {\n case 'minutes': return (1000 * amount) / MINUTE\n case 'hours': return (1000 * amount) / HOUR\n case 'days': return (1000 * amount) / DAY\n }\n}\n","export const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n if (!('Notification' in window && window.Notification.permission === 'granted')) return\n if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n // Chrome is known for not closing notifications automatically\n // according to MDN, anyway.\n setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n if (status.is_post_verb) {\n return 'status'\n }\n\n if (status.retweeted_status) {\n return 'retweet'\n }\n\n if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n (typeof status.text === 'string' && status.text.match(/favorited/))) {\n return 'favorite'\n }\n\n if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n return 'deletion'\n }\n\n if (status.text.match(/started following/) || status.activity_type === 'follow') {\n return 'follow'\n }\n\n return 'unknown'\n}\n\nexport const parseUser = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'acct')\n // case for users in \"mentions\" property for statuses in MastoAPI\n const mastoShort = masto && !Object.prototype.hasOwnProperty.call(data, 'avatar')\n\n output.inLists = null\n output.id = String(data.id)\n output._original = data // used for server-side settings\n\n if (masto) {\n output.screen_name = data.acct\n output.fqn = data.fqn\n output.statusnet_profile_url = data.url\n\n // There's nothing else to get\n if (mastoShort) {\n return output\n }\n\n output.emoji = data.emojis\n output.name = escape(data.display_name)\n output.name_html = output.name\n output.name_unescaped = data.display_name\n\n output.description = data.note\n // TODO cleanup this shit, output.description is overriden with source data\n output.description_html = data.note\n\n output.fields = data.fields\n output.fields_html = data.fields.map(field => {\n return {\n name: escape(field.name),\n value: field.value\n }\n })\n output.fields_text = data.fields.map(field => {\n return {\n name: unescape(field.name.replace(/<[^>]*>/g, '')),\n value: unescape(field.value.replace(/<[^>]*>/g, ''))\n }\n })\n\n // Utilize avatar_static for gif avatars?\n output.profile_image_url = data.avatar\n output.profile_image_url_original = data.avatar\n\n // Same, utilize header_static?\n output.cover_photo = data.header\n\n output.friends_count = data.following_count\n\n output.bot = data.bot\n\n if (data.pleroma) {\n if (data.pleroma.settings_store) {\n output.storage = data.pleroma.settings_store['pleroma-fe']\n }\n const relationship = data.pleroma.relationship\n\n output.background_image = data.pleroma.background_image\n output.favicon = data.pleroma.favicon\n output.token = data.pleroma.chat_token\n\n if (relationship) {\n output.relationship = relationship\n }\n\n output.allow_following_move = data.pleroma.allow_following_move\n\n output.hide_follows = data.pleroma.hide_follows\n output.hide_followers = data.pleroma.hide_followers\n output.hide_follows_count = data.pleroma.hide_follows_count\n output.hide_followers_count = data.pleroma.hide_followers_count\n\n output.rights = {\n moderator: data.pleroma.is_moderator,\n admin: data.pleroma.is_admin\n }\n // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n if (output.rights.admin) {\n output.role = 'admin'\n } else if (output.rights.moderator) {\n output.role = 'moderator'\n } else {\n output.role = 'member'\n }\n\n output.birthday = data.pleroma.birthday\n\n if (data.pleroma.privileges) {\n output.privileges = data.pleroma.privileges\n } else if (data.pleroma.is_admin) {\n output.privileges = [\n 'users_read',\n 'users_manage_invites',\n 'users_manage_activation_state',\n 'users_manage_tags',\n 'users_manage_credentials',\n 'users_delete',\n 'messages_read',\n 'messages_delete',\n 'instances_delete',\n 'reports_manage_reports',\n 'moderation_log_read',\n 'announcements_manage_announcements',\n 'emoji_manage_emoji',\n 'statistics_read'\n ]\n } else if (data.pleroma.is_moderator) {\n output.privileges = [\n 'messages_delete',\n 'reports_manage_reports'\n ]\n } else {\n output.privileges = []\n }\n }\n\n if (data.source) {\n output.description = data.source.note\n output.default_scope = data.source.privacy\n output.fields = data.source.fields\n if (data.source.pleroma) {\n output.no_rich_text = data.source.pleroma.no_rich_text\n output.show_role = data.source.pleroma.show_role\n output.discoverable = data.source.pleroma.discoverable\n output.show_birthday = data.pleroma.show_birthday\n }\n }\n\n // TODO: handle is_local\n output.is_local = !output.screen_name.includes('@')\n } else {\n output.screen_name = data.screen_name\n\n output.name = data.name\n output.name_html = data.name_html\n\n output.description = data.description\n output.description_html = data.description_html\n\n output.profile_image_url = data.profile_image_url\n output.profile_image_url_original = data.profile_image_url_original\n\n output.cover_photo = data.cover_photo\n\n output.friends_count = data.friends_count\n\n // output.bot = ??? missing\n\n output.statusnet_profile_url = data.statusnet_profile_url\n\n output.is_local = data.is_local\n output.role = data.role\n output.show_role = data.show_role\n\n if (data.rights) {\n output.rights = {\n moderator: data.rights.delete_others_notice,\n admin: data.rights.admin\n }\n }\n output.no_rich_text = data.no_rich_text\n output.default_scope = data.default_scope\n output.hide_follows = data.hide_follows\n output.hide_followers = data.hide_followers\n output.hide_follows_count = data.hide_follows_count\n output.hide_followers_count = data.hide_followers_count\n output.background_image = data.background_image\n // Websocket token\n output.token = data.token\n\n // Convert relationsip data to expected format\n output.relationship = {\n muting: data.muted,\n blocking: data.statusnet_blocking,\n followed_by: data.follows_you,\n following: data.following\n }\n }\n\n output.created_at = new Date(data.created_at)\n output.locked = data.locked\n output.followers_count = data.followers_count\n output.statuses_count = data.statuses_count\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n\n // deactivated was changed to is_active in Pleroma 2.3.0\n // so check if is_active is present\n output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n ? !data.pleroma.is_active // new backend\n : data.pleroma.deactivated // old backend\n\n output.notification_settings = data.pleroma.notification_settings\n output.unread_chat_count = data.pleroma.unread_chat_count\n }\n\n output.tags = output.tags || []\n output.rights = output.rights || {}\n output.notification_settings = output.notification_settings || {}\n\n // Convert punycode to unicode for UI\n output.screen_name_ui = output.screen_name\n if (output.screen_name && output.screen_name.includes('@')) {\n const parts = output.screen_name.split('@')\n const unicodeDomain = punycode.toUnicode(parts[1])\n if (unicodeDomain !== parts[1]) {\n // Add some identifier so users can potentially spot spoofing attempts:\n // lain.com and xn--lin-6cd.com would appear identical otherwise.\n output.screen_name_ui_contains_non_ascii = true\n output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n } else {\n output.screen_name_ui_contains_non_ascii = false\n }\n }\n\n return output\n}\n\nexport const parseAttachment = (data) => {\n const output = {}\n const masto = !Object.prototype.hasOwnProperty.call(data, 'oembed')\n\n if (masto) {\n // Not exactly same...\n output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n output.meta = data.meta // not present in BE yet\n output.id = data.id\n } else {\n output.mimetype = data.mimetype\n // output.meta = ??? missing\n }\n\n output.url = data.url\n output.large_thumb_url = data.preview_url\n output.description = data.description\n\n return output\n}\n\nexport const parseSource = (data) => {\n const output = {}\n\n output.text = data.text\n output.spoiler_text = data.spoiler_text\n output.content_type = data.content_type\n\n return output\n}\n\nexport const parseStatus = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'account')\n\n if (masto) {\n output.favorited = data.favourited\n output.fave_num = data.favourites_count\n\n output.repeated = data.reblogged\n output.repeat_num = data.reblogs_count\n\n output.bookmarked = data.bookmarked\n\n output.type = data.reblog ? 'retweet' : 'status'\n output.nsfw = data.sensitive\n\n output.raw_html = data.content\n output.emojis = data.emojis\n\n output.tags = data.tags\n\n output.edited_at = data.edited_at\n\n if (data.pleroma) {\n const { pleroma } = data\n output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n output.statusnet_conversation_id = data.pleroma.conversation_id\n output.is_local = pleroma.local\n output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n output.thread_muted = pleroma.thread_muted\n output.emoji_reactions = pleroma.emoji_reactions\n output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n output.quote = pleroma.quote ? parseStatus(pleroma.quote) : undefined\n output.quote_id = pleroma.quote_id ? pleroma.quote_id : (output.quote ? output.quote.id : undefined)\n output.quote_url = pleroma.quote_url\n output.quote_visible = pleroma.quote_visible\n } else {\n output.text = data.content\n output.summary = data.spoiler_text\n }\n\n output.in_reply_to_status_id = data.in_reply_to_id\n output.in_reply_to_user_id = data.in_reply_to_account_id\n output.replies_count = data.replies_count\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.reblog)\n }\n\n output.summary_raw_html = escape(data.spoiler_text)\n output.external_url = data.url\n output.poll = data.poll\n if (output.poll) {\n output.poll.options = (output.poll.options || []).map(field => ({\n ...field,\n title_html: escape(field.title)\n }))\n }\n output.pinned = data.pinned\n output.muted = data.muted\n } else {\n output.favorited = data.favorited\n output.fave_num = data.fave_num\n\n output.repeated = data.repeated\n output.repeat_num = data.repeat_num\n\n // catchall, temporary\n // Object.assign(output, data)\n\n output.type = qvitterStatusType(data)\n\n if (data.nsfw === undefined) {\n output.nsfw = isNsfw(data)\n if (data.retweeted_status) {\n output.nsfw = data.retweeted_status.nsfw\n }\n } else {\n output.nsfw = data.nsfw\n }\n\n output.raw_html = data.statusnet_html\n output.text = data.text\n\n output.in_reply_to_status_id = data.in_reply_to_status_id\n output.in_reply_to_user_id = data.in_reply_to_user_id\n output.in_reply_to_screen_name = data.in_reply_to_screen_name\n output.statusnet_conversation_id = data.statusnet_conversation_id\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.retweeted_status)\n }\n\n output.summary = data.summary\n output.summary_html = data.summary_html\n output.external_url = data.external_url\n output.is_local = data.is_local\n }\n\n output.id = String(data.id)\n output.visibility = data.visibility\n output.card = data.card\n output.created_at = new Date(data.created_at)\n\n // Converting to string, the right way.\n output.in_reply_to_status_id = output.in_reply_to_status_id\n ? String(output.in_reply_to_status_id)\n : null\n output.in_reply_to_user_id = output.in_reply_to_user_id\n ? String(output.in_reply_to_user_id)\n : null\n\n output.user = parseUser(masto ? data.account : data.user)\n\n output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)\n\n output.attachments = ((masto ? data.media_attachments : data.attachments) || [])\n .map(parseAttachment)\n\n const retweetedStatus = masto ? data.reblog : data.retweeted_status\n if (retweetedStatus) {\n output.retweeted_status = parseStatus(retweetedStatus)\n }\n\n output.favoritedBy = []\n output.rebloggedBy = []\n\n if (Object.prototype.hasOwnProperty.call(data, 'originalStatus')) {\n Object.assign(output, data.originalStatus)\n }\n\n return output\n}\n\nexport const parseNotification = (data) => {\n const mastoDict = {\n favourite: 'like',\n reblog: 'repeat'\n }\n const masto = !Object.prototype.hasOwnProperty.call(data, 'ntype')\n const output = {}\n\n if (masto) {\n output.type = mastoDict[data.type] || data.type\n output.seen = data.pleroma.is_seen\n output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n output.action = output.status // TODO: Refactor, this is unneeded\n output.target = output.type !== 'move'\n ? null\n : parseUser(data.target)\n output.from_profile = parseUser(data.account)\n output.emoji = data.emoji\n output.emoji_url = data.emoji_url\n if (data.report) {\n output.report = data.report\n output.report.content = data.report.content\n output.report.acct = parseUser(data.report.account)\n output.report.actor = parseUser(data.report.actor)\n output.report.statuses = data.report.statuses.map(parseStatus)\n }\n } else {\n const parsedNotice = parseStatus(data.notice)\n output.type = data.ntype\n output.seen = Boolean(data.is_seen)\n output.status = output.type === 'like'\n ? parseStatus(data.notice.favorited_status)\n : parsedNotice\n output.action = parsedNotice\n output.from_profile = output.type === 'pleroma:chat_mention' ? parseUser(data.account) : parseUser(data.from_profile)\n }\n\n output.created_at = new Date(data.created_at)\n output.id = parseInt(data.id)\n\n return output\n}\n\nconst isNsfw = (status) => {\n const nsfwRegex = /#nsfw/i\n return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)\n}\n\nexport const parseLinkHeaderPagination = (linkHeader, opts = {}) => {\n const flakeId = opts.flakeId\n const parsedLinkHeader = parseLinkHeader(linkHeader)\n if (!parsedLinkHeader) return\n const maxId = parsedLinkHeader.next.max_id\n const minId = parsedLinkHeader.prev.min_id\n\n return {\n maxId: flakeId ? maxId : parseInt(maxId, 10),\n minId: flakeId ? minId : parseInt(minId, 10)\n }\n}\n\nexport const parseChat = (chat) => {\n const output = {}\n output.id = chat.id\n output.account = parseUser(chat.account)\n output.unread = chat.unread\n output.lastMessage = parseChatMessage(chat.last_message)\n output.updated_at = new Date(chat.updated_at)\n return output\n}\n\nexport const parseChatMessage = (message) => {\n if (!message) { return }\n if (message.isNormalized) { return message }\n const output = message\n output.id = message.id\n output.created_at = new Date(message.created_at)\n output.chat_id = message.chat_id\n output.emojis = message.emojis\n output.content = message.content\n if (message.attachment) {\n output.attachments = [parseAttachment(message.attachment)]\n } else {\n output.attachments = []\n }\n output.pending = !!message.pending\n output.error = false\n output.idempotency_key = message.idempotency_key\n output.isNormalized = true\n return output\n}\n","const createFaviconService = () => {\n const favicons = []\n const faviconWidth = 128\n const faviconHeight = 128\n const badgeRadius = 32\n\n const initFaviconService = () => {\n const nodes = document.querySelectorAll('link[rel=\"icon\"]')\n nodes.forEach(favicon => {\n if (favicon) {\n const favcanvas = document.createElement('canvas')\n favcanvas.width = faviconWidth\n favcanvas.height = faviconHeight\n const favimg = new Image()\n favimg.crossOrigin = 'anonymous'\n favimg.src = favicon.href\n const favcontext = favcanvas.getContext('2d')\n favicons.push({ favcanvas, favimg, favcontext, favicon })\n }\n })\n }\n\n const isImageLoaded = (img) => img.complete && img.naturalHeight !== 0\n\n const clearFaviconBadge = () => {\n if (favicons.length === 0) return\n favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n if (!favimg || !favcontext || !favicon) return\n\n favcontext.clearRect(0, 0, faviconWidth, faviconHeight)\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favicon.href = favcanvas.toDataURL('image/png')\n })\n }\n\n const drawFaviconBadge = () => {\n if (favicons.length === 0) return\n clearFaviconBadge()\n favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n if (!favimg || !favcontext || !favcontext) return\n\n const style = getComputedStyle(document.body)\n const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}`\n\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favcontext.fillStyle = badgeColor\n favcontext.beginPath()\n favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false)\n favcontext.fill()\n favicon.href = favcanvas.toDataURL('image/png')\n })\n }\n\n return {\n initFaviconService,\n clearFaviconBadge,\n drawFaviconBadge\n }\n}\n\nconst FaviconService = createFaviconService()\n\nexport default FaviconService\n","const fileSizeFormat = (numArg) => {\n const units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n let num = numArg\n if (num < 1) {\n return num + ' ' + units[0]\n }\n\n const exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n const unit = units[exponent]\n return { num, unit }\n}\nconst fileSizeFormatService = {\n fileSizeFormat\n}\nexport default fileSizeFormatService\n","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nexport const fileType = mimetype => {\n if (mimetype.match(/flash/)) {\n return 'flash'\n }\n\n if (mimetype.match(/text\\/html/)) {\n return 'html'\n }\n\n if (mimetype.match(/image/)) {\n return 'image'\n }\n\n if (mimetype.match(/video/)) {\n return 'video'\n }\n\n if (mimetype.match(/audio/)) {\n return 'audio'\n }\n\n return 'unknown'\n}\n\nexport const fileTypeExt = url => {\n if (url.match(/\\.(png|jpe?g|gif|webp|avif)$/)) {\n return 'image'\n }\n if (url.match(/\\.(ogv|mp4|webm|mov)$/)) {\n return 'video'\n }\n if (url.match(/\\.(it|s3m|mod|umx|mp3|aac|m4a|flac|alac|ogg|oga|opus|wav|ape|midi?)$/)) {\n return 'audio'\n }\n return 'unknown'\n}\n\nexport const fileMatchesSomeType = (types, file) =>\n types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n fileType,\n fileTypeExt,\n fileMatchesSomeType\n}\n\nexport default fileTypeService\n","import languagesObject from '../../i18n/messages'\nimport ISO6391 from 'iso-639-1'\nimport _ from 'lodash'\n\nconst specialLanguageCodes = {\n ja_easy: 'ja',\n zh_Hant: 'zh-HANT',\n zh: 'zh-Hans'\n}\n\nconst internalToBrowserLocale = code => specialLanguageCodes[code] || code\n\nconst internalToBackendLocale = code => internalToBrowserLocale(code).replace('_', '-')\nconst internalToBackendLocaleMulti = codes => {\n const langs = Array.isArray(codes) ? codes : [codes]\n return langs.map(internalToBackendLocale).join(',')\n}\n\nconst getLanguageName = (code) => {\n const specialLanguageNames = {\n ja_easy: 'やさしいにほんご',\n 'nan-TW': '臺語(閩南語)',\n zh: '简体中文',\n zh_Hant: '繁體中文'\n }\n const languageName = specialLanguageNames[code] || ISO6391.getNativeName(code)\n const browserLocale = internalToBrowserLocale(code)\n return languageName.charAt(0).toLocaleUpperCase(browserLocale) + languageName.slice(1)\n}\n\nconst languages = _.map(languagesObject.languages, (code) => ({ code, name: getLanguageName(code) })).sort((a, b) => a.name.localeCompare(b.name))\n\nconst localeService = {\n internalToBrowserLocale,\n internalToBackendLocale,\n internalToBackendLocaleMulti,\n languages,\n getLanguageName\n}\n\nexport default localeService\n","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n const rootState = store.rootState || store.state\n\n return ([\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.followRequest && 'follow_request',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n rootState.config.notificationVisibility.reports && 'pleroma:report',\n rootState.config.notificationVisibility.polls && 'poll'\n ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n if (isStatusNotification(notification.type) && !notification.status) {\n return false\n }\n return true\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst isMutedNotification = (store, notification) => {\n if (!notification.status) return\n return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n\n if (notification.seen) return\n if (!visibleTypes(store).includes(notification.type)) return\n if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n case 'pleroma:report':\n i18nString = 'submitted_report'\n break\n case 'poll':\n i18nString = 'poll_ended'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\n// For using include_types when fetching notifications.\n// Note: chat_mention excluded as pleroma-fe polls them separately\nconst mastoApiNotificationTypes = [\n 'mention',\n 'favourite',\n 'reblog',\n 'follow',\n 'move',\n 'pleroma:emoji_reaction',\n 'pleroma:report'\n]\n\nconst update = ({ store, notifications, older }) => {\n store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false, since }) => {\n const args = { credentials }\n const { getters } = store\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.notifications\n const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n\n args.includeTypes = mastoApiNotificationTypes\n args.withMuted = !hideMutedPosts\n\n args.timeline = 'notifications'\n if (older) {\n if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n args.until = timelineData.minId\n }\n return fetchNotifications({ store, args, older })\n } else {\n // fetch new notifications\n if (since === undefined && timelineData.maxId !== Number.POSITIVE_INFINITY) {\n args.since = timelineData.maxId\n } else if (since !== null) {\n args.since = since\n }\n const result = fetchNotifications({ store, args, older })\n\n // If there's any unread notifications, try fetch notifications since\n // the newest read notification to check if any of the unread notifs\n // have changed their 'seen' state (marked as read in another session), so\n // we can update the state in this session to mark them as read as well.\n // The normal maxId-check does not tell if older notifications have changed\n const notifications = timelineData.data\n const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n const numUnseenNotifs = notifications.length - readNotifsIds.length\n if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {\n args.since = Math.max(...readNotifsIds)\n fetchNotifications({ store, args, older })\n }\n\n return result\n }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n return apiService.fetchTimeline(args)\n .then((response) => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n const notifications = response.data\n update({ store, notifications, older })\n return notifications\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'notifications.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n console.error(error)\n })\n}\n\nconst startFetching = ({ credentials, store }) => {\n // Initially there's set flag to silence all desktop notifications so\n // that there won't spam of them when user just opened up the FE we\n // reset that flag after a while to show new notifications once again.\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst notificationsFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default notificationsFetcher\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n const result = {\n top: top + child.offsetTop,\n left: left + child.offsetLeft\n }\n if (!ignorePadding && child !== window) {\n const { topPadding, leftPadding } = findPadding(child)\n result.top += ignorePadding ? 0 : topPadding\n result.left += ignorePadding ? 0 : leftPadding\n }\n\n if (child.offsetParent && window.getComputedStyle(child.offsetParent).position !== 'sticky' && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {\n return findOffset(child.offsetParent, parent, result, false)\n } else {\n if (parent !== window) {\n const { topPadding, leftPadding } = findPadding(parent)\n result.top += topPadding\n result.left += leftPadding\n }\n return result\n }\n}\n\nconst findPadding = (el) => {\n const topPaddingStr = window.getComputedStyle(el)['padding-top']\n const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n const leftPaddingStr = window.getComputedStyle(el)['padding-left']\n const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))\n\n return { topPadding, leftPadding }\n}\n","\n// promiseInterval - replacement for setInterval for promises, starts counting\n// the interval only after a promise is done instead of immediately.\n// - promiseCall is a function that returns a promise, it's called the first\n// time after the first interval.\n// - interval is the interval delay in ms.\n\nexport const promiseInterval = (promiseCall, interval) => {\n let stopped = false\n let timeout = null\n\n const func = () => {\n const promise = promiseCall()\n // something unexpected happened and promiseCall did not\n // return a promise, abort the loop.\n if (!(promise && promise.finally)) {\n console.warn('promiseInterval: promise call did not return a promise, stopping interval.')\n return\n }\n promise.finally(() => {\n if (stopped) return\n timeout = window.setTimeout(func, interval)\n })\n }\n\n const stopFetcher = () => {\n stopped = true\n window.clearTimeout(timeout)\n }\n\n timeout = window.setTimeout(func, interval)\n\n return { stop: stopFetcher }\n}\n","const genRandomSeed = () => `${Math.random()}`.replace('.', '-')\n\nexport default genRandomSeed\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n const statusText = status.text.toLowerCase()\n const statusSummary = status.summary.toLowerCase()\n const hits = filter(muteWords, (muteWord) => {\n return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n })\n\n return hits\n}\n","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n store,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n media = [],\n inReplyToStatusId = undefined,\n quoteId = undefined,\n contentType = 'text/plain',\n preview = false,\n idempotencyKey = ''\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.postStatus({\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n mediaIds,\n inReplyToStatusId,\n quoteId,\n contentType,\n poll,\n preview,\n idempotencyKey\n })\n .then((data) => {\n if (!data.error && !preview) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n return {\n error: err.message\n }\n })\n}\n\nconst editStatus = ({\n store,\n statusId,\n status,\n spoilerText,\n sensitive,\n poll,\n media = [],\n contentType = 'text/plain'\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.editStatus({\n id: statusId,\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n sensitive,\n poll,\n mediaIds,\n contentType\n })\n .then((data) => {\n if (!data.error) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n console.error('Error editing status', err)\n return {\n error: err.message\n }\n })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n postStatus,\n editStatus,\n uploadMedia,\n setMediaDescription\n}\n\nexport default statusPosterService\n","import { convert } from 'chromatism'\nimport { rgb2hex, hex2rgb, rgba2css, getCssColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { getColors, computeDynamicColor, getOpacitySlot } from '../theme_data/theme_data.service.js'\nimport { defaultState } from '../../modules/config.js'\n\nexport const applyTheme = (input) => {\n const { rules } = generatePreset(input)\n const head = document.head\n const body = document.body\n body.classList.add('hidden')\n\n const styleEl = document.createElement('style')\n head.appendChild(styleEl)\n const styleSheet = styleEl.sheet\n\n styleSheet.toString()\n styleSheet.insertRule(`:root { ${rules.radii} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.colors} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.shadows} }`, 'index-max')\n styleSheet.insertRule(`:root { ${rules.fonts} }`, 'index-max')\n body.classList.remove('hidden')\n}\n\nconst configColumns = ({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth, emojiReactionsScale }) =>\n ({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth, emojiReactionsScale })\n\nconst defaultConfigColumns = configColumns(defaultState)\n\nexport const applyConfig = (config) => {\n const columns = configColumns(config)\n\n if (columns === defaultConfigColumns) {\n return\n }\n\n const head = document.head\n const body = document.body\n body.classList.add('hidden')\n\n const rules = Object\n .entries(columns)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}: ${v}`).join(';')\n\n const styleEl = document.createElement('style')\n head.appendChild(styleEl)\n const styleSheet = styleEl.sheet\n\n styleSheet.toString()\n styleSheet.insertRule(`:root { ${rules} }`, 'index-max')\n body.classList.remove('hidden')\n}\n\nexport const getCssShadow = (input, usesDropShadow) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n .filter(_ => usesDropShadow ? _.inset : _)\n .map((shad) => [\n shad.x,\n shad.y,\n shad.blur,\n shad.spread\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha),\n shad.inset ? 'inset' : ''\n ]).join(' ')).join(', ')\n}\n\nconst getCssShadowFilter = (input) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n // drop-shadow doesn't support inset or spread\n .filter((shad) => !shad.inset && Number(shad.spread) === 0)\n .map((shad) => [\n shad.x,\n shad.y,\n // drop-shadow's blur is twice as strong compared to box-shadow\n shad.blur / 2\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha)\n ]).join(' '))\n .map(_ => `drop-shadow(${_})`)\n .join(' ')\n}\n\nexport const generateColors = (themeData) => {\n const sourceColors = !themeData.themeEngineVersion\n ? colors2to3(themeData.colors || themeData)\n : themeData.colors || themeData\n\n const { colors, opacity } = getColors(sourceColors, themeData.opacity || {})\n\n const htmlColors = Object.entries(colors)\n .reduce((acc, [k, v]) => {\n if (!v) return acc\n acc.solid[k] = rgb2hex(v)\n acc.complete[k] = typeof v.a === 'undefined' ? rgb2hex(v) : rgba2css(v)\n return acc\n }, { complete: {}, solid: {} })\n return {\n rules: {\n colors: Object.entries(htmlColors.complete)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}: ${v}`)\n .join(';')\n },\n theme: {\n colors: htmlColors.solid,\n opacity\n }\n }\n}\n\nexport const generateRadii = (input) => {\n let inputRadii = input.radii || {}\n // v1 -> v2\n if (typeof input.btnRadius !== 'undefined') {\n inputRadii = Object\n .entries(input)\n .filter(([k, v]) => k.endsWith('Radius'))\n .reduce((acc, e) => { acc[e[0].split('Radius')[0]] = e[1]; return acc }, {})\n }\n const radii = Object.entries(inputRadii).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {\n btn: 4,\n input: 4,\n checkbox: 2,\n panel: 10,\n avatar: 5,\n avatarAlt: 50,\n tooltip: 2,\n attachment: 5,\n chatMessage: inputRadii.panel\n })\n\n return {\n rules: {\n radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n },\n theme: {\n radii\n }\n }\n}\n\nexport const generateFonts = (input) => {\n const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, acc[k])\n return acc\n }, {\n interface: {\n family: 'sans-serif'\n },\n input: {\n family: 'inherit'\n },\n post: {\n family: 'inherit'\n },\n postCode: {\n family: 'monospace'\n }\n })\n\n return {\n rules: {\n fonts: Object\n .entries(fonts)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n },\n theme: {\n fonts\n }\n }\n}\n\nconst border = (top, shadow) => ({\n x: 0,\n y: top ? 1 : -1,\n blur: 0,\n spread: 0,\n color: shadow ? '#000000' : '#FFFFFF',\n alpha: 0.2,\n inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '--faint',\n alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n panel: [{\n x: 1,\n y: 1,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n topBar: [{\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n popup: [{\n x: 2,\n y: 2,\n blur: 3,\n spread: 0,\n color: '#000000',\n alpha: 0.5\n }],\n avatar: [{\n x: 0,\n y: 1,\n blur: 8,\n spread: 0,\n color: '#000000',\n alpha: 0.7\n }],\n avatarStatus: [],\n panelHeader: [],\n button: [{\n x: 0,\n y: 0,\n blur: 2,\n spread: 0,\n color: '#000000',\n alpha: 1\n }, ...buttonInsetFakeBorders],\n buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n input: [...inputInsetFakeBorders, {\n x: 0,\n y: 0,\n blur: 2,\n inset: true,\n spread: 0,\n color: '#000000',\n alpha: 1\n }]\n}\nexport const generateShadows = (input, colors) => {\n // TODO this is a small hack for `mod` to work with shadows\n // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n const hackContextDict = {\n button: 'btn',\n panel: 'bg',\n top: 'topBar',\n popup: 'popover',\n avatar: 'bg',\n panelHeader: 'panel',\n input: 'input'\n }\n\n const cleanInputShadows = Object.fromEntries(\n Object.entries(input.shadows || {})\n .map(([name, shadowSlot]) => [\n name,\n // defaulting color to black to avoid potential problems\n shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n ])\n )\n const inputShadows = cleanInputShadows && !input.themeEngineVersion\n ? shadows2to3(cleanInputShadows, input.opacity)\n : cleanInputShadows || {}\n const shadows = Object.entries({\n ...DEFAULT_SHADOWS,\n ...inputShadows\n }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n const colorSlotName = hackContextDict[slotFirstWord]\n const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n const mod = isLightOnDark ? 1 : -1\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n color: rgb2hex(computeDynamicColor(\n def.color,\n (variableSlot) => convert(colors[variableSlot]).rgb,\n mod\n ))\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n\n return {\n rules: {\n shadows: Object\n .entries(shadows)\n // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n // convert all non-inset shadows into filter: drop-shadow() to boost performance\n .map(([k, v]) => [\n `--${k}Shadow: ${getCssShadow(v)}`,\n `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n `--${k}ShadowInset: ${getCssShadow(v, true)}`\n ].join(';'))\n .join(';')\n },\n theme: {\n shadows\n }\n }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n return {\n rules: {\n ...shadows.rules,\n ...colors.rules,\n ...radii.rules,\n ...fonts.rules\n },\n theme: {\n ...shadows.theme,\n ...colors.theme,\n ...radii.theme,\n ...fonts.theme\n }\n }\n}\n\nexport const generatePreset = (input) => {\n const colors = generateColors(input)\n return composePreset(\n colors,\n generateRadii(input),\n generateShadows(input, colors.theme.colors, colors.mod),\n generateFonts(input)\n )\n}\n\nexport const getThemes = () => {\n const cache = 'no-store'\n\n return window.fetch('/static/styles.json', { cache })\n .then((data) => data.json())\n .then((themes) => {\n return Object.entries(themes).map(([k, v]) => {\n let promise = null\n if (typeof v === 'object') {\n promise = Promise.resolve(v)\n } else if (typeof v === 'string') {\n promise = window.fetch(v, { cache })\n .then((data) => data.json())\n .catch((e) => {\n console.error(e)\n return null\n })\n }\n return [k, promise]\n })\n })\n .then((promises) => {\n return promises\n .reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {})\n })\n}\nexport const colors2to3 = (colors) => {\n return Object.entries(colors).reduce((acc, [slotName, color]) => {\n const btnPositions = ['', 'Panel', 'TopBar']\n switch (slotName) {\n case 'lightBg':\n return { ...acc, highlight: color }\n case 'btnText':\n return {\n ...acc,\n ...btnPositions\n .reduce(\n (statePositionAcc, position) =>\n ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n , {}\n )\n }\n default:\n return { ...acc, [slotName]: color }\n }\n }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const isDynamic = ({ color = '#000000' }) => color.startsWith('--')\n const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n}\n\nexport const getPreset = (val) => {\n return getThemes()\n .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n .then((theme) => {\n const isV1 = Array.isArray(theme)\n const data = isV1 ? {} : theme.theme\n\n if (isV1) {\n const bg = hex2rgb(theme[1])\n const fg = hex2rgb(theme[2])\n const text = hex2rgb(theme[3])\n const link = hex2rgb(theme[4])\n\n const cRed = hex2rgb(theme[5] || '#FF0000')\n const cGreen = hex2rgb(theme[6] || '#00FF00')\n const cBlue = hex2rgb(theme[7] || '#0000FF')\n const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n }\n\n return { theme: data, source: theme.source }\n })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","import { invertLightness, brightness } from 'chromatism'\nimport { alphaBlend, mixrgb } from '../color_convert/color_convert.js'\n/* This is a definition of all layer combinations\n * each key is a topmost layer, each value represents layer underneath\n * this is essentially a simplified tree\n */\nexport const LAYERS = {\n undelay: null, // root\n topBar: null, // no transparency support\n badge: null, // no transparency support\n profileTint: null, // doesn't matter\n fg: null,\n bg: 'underlay',\n highlight: 'bg',\n panel: 'bg',\n popover: 'bg',\n selectedMenu: 'popover',\n btn: 'bg',\n btnPanel: 'panel',\n btnTopBar: 'topBar',\n input: 'bg',\n inputPanel: 'panel',\n inputTopBar: 'topBar',\n alert: 'bg',\n alertPanel: 'panel',\n poll: 'bg',\n chatBg: 'underlay',\n chatMessage: 'chatBg'\n}\n\n/* By default opacity slots have 1 as default opacity\n * this allows redefining it to something else\n */\nexport const DEFAULT_OPACITY = {\n profileTint: 0.5,\n alert: 0.5,\n input: 0.5,\n faint: 0.5,\n underlay: 0.15,\n alertPopup: 0.95\n}\n\n/** SUBJECT TO CHANGE IN THE FUTURE, this is all beta\n * Color and opacity slots definitions. Each key represents a slot.\n *\n * Short-hands:\n * String beginning with `--` - value after dashes treated as sole\n * dependency - i.e. `--value` equivalent to { depends: ['value']}\n * String beginning with `#` - value would be treated as solid color\n * defined in hexadecimal representation (i.e. #FFFFFF) and will be\n * used as default. `#FFFFFF` is equivalent to { default: '#FFFFFF'}\n *\n * Full definition:\n * @property {String[]} depends - color slot names this color depends ones.\n * cyclic dependencies are supported to some extent but not recommended.\n * @property {String} [opacity] - opacity slot used by this color slot.\n * opacity is inherited from parents. To break inheritance graph use null\n * @property {Number} [priority] - EXPERIMENTAL. used to pre-sort slots so\n * that slots with higher priority come earlier\n * @property {Function(mod, ...colors)} [color] - function that will be\n * used to determine the color. By default it just copies first color in\n * dependency list.\n * @argument {Number} mod - `1` (light-on-dark) or `-1` (dark-on-light)\n * depending on background color (for textColor)/given color.\n * @argument {...Object} deps - each argument after mod represents each\n * color from `depends` array. All colors take user customizations into\n * account and represented by { r, g, b } objects.\n * @returns {Object} resulting color, should be in { r, g, b } form\n *\n * @property {Boolean|String} [textColor] - true to mark color slot as text\n * color. This enables automatic text color generation for the slot. Use\n * 'preserve' string if you don't want text color to fall back to\n * black/white. Use 'bw' to only ever use black or white. This also makes\n * following properties required:\n * @property {String} [layer] - which layer the text sit on top on - used\n * to account for transparency in text color calculation\n * layer is inherited from parents. To break inheritance graph use null\n * @property {String} [variant] - which color slot is background (same as\n * above, used to account for transparency)\n */\nexport const SLOT_INHERITANCE = {\n bg: {\n depends: [],\n opacity: 'bg',\n priority: 1\n },\n wallpaper: {\n depends: ['bg'],\n color: (mod, bg) => brightness(-2 * mod, bg).rgb\n },\n fg: {\n depends: [],\n priority: 1\n },\n text: {\n depends: [],\n layer: 'bg',\n opacity: null,\n priority: 1\n },\n underlay: {\n default: '#000000',\n opacity: 'underlay'\n },\n link: {\n depends: ['accent'],\n priority: 1\n },\n accent: {\n depends: ['link'],\n priority: 1\n },\n faint: {\n depends: ['text'],\n opacity: 'faint'\n },\n faintLink: {\n depends: ['link'],\n opacity: 'faint'\n },\n postFaintLink: {\n depends: ['postLink'],\n opacity: 'faint'\n },\n\n cBlue: '#0000ff',\n cRed: '#FF0000',\n cGreen: '#00FF00',\n cOrange: '#E3FF00',\n\n profileBg: {\n depends: ['bg'],\n color: (mod, bg) => ({\n r: Math.floor(bg.r * 0.53),\n g: Math.floor(bg.g * 0.56),\n b: Math.floor(bg.b * 0.59)\n })\n },\n profileTint: {\n depends: ['bg'],\n layer: 'profileTint',\n opacity: 'profileTint'\n },\n\n highlight: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n highlightLightText: {\n depends: ['lightText'],\n layer: 'highlight',\n textColor: true\n },\n highlightPostLink: {\n depends: ['postLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightFaintText: {\n depends: ['faint'],\n layer: 'highlight',\n textColor: true\n },\n highlightFaintLink: {\n depends: ['faintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightText: {\n depends: ['text'],\n layer: 'highlight',\n textColor: true\n },\n highlightLink: {\n depends: ['link'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightIcon: {\n depends: ['highlight', 'highlightText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n popover: {\n depends: ['bg'],\n opacity: 'popover'\n },\n popoverLightText: {\n depends: ['lightText'],\n layer: 'popover',\n textColor: true\n },\n popoverPostLink: {\n depends: ['postLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverFaintText: {\n depends: ['faint'],\n layer: 'popover',\n textColor: true\n },\n popoverFaintLink: {\n depends: ['faintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverText: {\n depends: ['text'],\n layer: 'popover',\n textColor: true\n },\n popoverLink: {\n depends: ['link'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverIcon: {\n depends: ['popover', 'popoverText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedPost: '--highlight',\n selectedPostFaintText: {\n depends: ['highlightFaintText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLightText: {\n depends: ['highlightLightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostPostLink: {\n depends: ['highlightPostLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostText: {\n depends: ['highlightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLink: {\n depends: ['highlightLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostIcon: {\n depends: ['selectedPost', 'selectedPostText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenu: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuLightText: {\n depends: ['highlightLightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintText: {\n depends: ['highlightFaintText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuText: {\n depends: ['highlightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuLink: {\n depends: ['highlightLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuIcon: {\n depends: ['selectedMenu', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenuPopover: {\n depends: ['popover'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuPopoverLightText: {\n depends: ['selectedMenuLightText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintText: {\n depends: ['selectedMenuFaintText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintLink: {\n depends: ['selectedMenuFaintLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverText: {\n depends: ['selectedMenuText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverLink: {\n depends: ['selectedMenuLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverIcon: {\n depends: ['selectedMenuPopover', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n lightText: {\n depends: ['text'],\n layer: 'bg',\n textColor: 'preserve',\n color: (mod, text) => brightness(20 * mod, text).rgb\n },\n\n postLink: {\n depends: ['link'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n postGreentext: {\n depends: ['cGreen'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n postCyantext: {\n depends: ['cBlue'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n border: {\n depends: ['fg'],\n opacity: 'border',\n color: (mod, fg) => brightness(2 * mod, fg).rgb\n },\n\n poll: {\n depends: ['accent', 'bg'],\n copacity: 'poll',\n color: (mod, accent, bg) => alphaBlend(accent, 0.4, bg)\n },\n pollText: {\n depends: ['text'],\n layer: 'poll',\n textColor: true\n },\n\n icon: {\n depends: ['bg', 'text'],\n inheritsOpacity: false,\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n // Foreground\n fgText: {\n depends: ['text'],\n layer: 'fg',\n textColor: true\n },\n fgLink: {\n depends: ['link'],\n layer: 'fg',\n textColor: 'preserve'\n },\n\n // Panel header\n panel: {\n depends: ['fg'],\n opacity: 'panel'\n },\n panelText: {\n depends: ['text'],\n layer: 'panel',\n textColor: true\n },\n panelFaint: {\n depends: ['fgText'],\n layer: 'panel',\n opacity: 'faint',\n textColor: true\n },\n panelLink: {\n depends: ['fgLink'],\n layer: 'panel',\n textColor: 'preserve'\n },\n\n // Top bar\n topBar: '--fg',\n topBarText: {\n depends: ['fgText'],\n layer: 'topBar',\n textColor: true\n },\n topBarLink: {\n depends: ['fgLink'],\n layer: 'topBar',\n textColor: 'preserve'\n },\n\n // Tabs\n tab: {\n depends: ['btn']\n },\n tabText: {\n depends: ['btnText'],\n layer: 'btn',\n textColor: true\n },\n tabActiveText: {\n depends: ['text'],\n layer: 'bg',\n textColor: true\n },\n\n // Buttons\n btn: {\n depends: ['fg'],\n variant: 'btn',\n opacity: 'btn'\n },\n btnText: {\n depends: ['fgText'],\n layer: 'btn',\n textColor: true\n },\n btnPanelText: {\n depends: ['btnText'],\n layer: 'btnPanel',\n variant: 'btn',\n textColor: true\n },\n btnTopBarText: {\n depends: ['btnText'],\n layer: 'btnTopBar',\n variant: 'btn',\n textColor: true\n },\n\n // Buttons: pressed\n btnPressed: {\n depends: ['btn'],\n layer: 'btn'\n },\n btnPressedText: {\n depends: ['btnText'],\n layer: 'btn',\n variant: 'btnPressed',\n textColor: true\n },\n btnPressedPanel: {\n depends: ['btnPressed'],\n layer: 'btn'\n },\n btnPressedPanelText: {\n depends: ['btnPanelText'],\n layer: 'btnPanel',\n variant: 'btnPressed',\n textColor: true\n },\n btnPressedTopBar: {\n depends: ['btnPressed'],\n layer: 'btn'\n },\n btnPressedTopBarText: {\n depends: ['btnTopBarText'],\n layer: 'btnTopBar',\n variant: 'btnPressed',\n textColor: true\n },\n\n // Buttons: toggled\n btnToggled: {\n depends: ['btn'],\n layer: 'btn',\n color: (mod, btn) => brightness(mod * 20, btn).rgb\n },\n btnToggledText: {\n depends: ['btnText'],\n layer: 'btn',\n variant: 'btnToggled',\n textColor: true\n },\n btnToggledPanelText: {\n depends: ['btnPanelText'],\n layer: 'btnPanel',\n variant: 'btnToggled',\n textColor: true\n },\n btnToggledTopBarText: {\n depends: ['btnTopBarText'],\n layer: 'btnTopBar',\n variant: 'btnToggled',\n textColor: true\n },\n\n // Buttons: disabled\n btnDisabled: {\n depends: ['btn', 'bg'],\n color: (mod, btn, bg) => alphaBlend(btn, 0.25, bg)\n },\n btnDisabledText: {\n depends: ['btnText', 'btnDisabled'],\n layer: 'btn',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n btnDisabledPanelText: {\n depends: ['btnPanelText', 'btnDisabled'],\n layer: 'btnPanel',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n btnDisabledTopBarText: {\n depends: ['btnTopBarText', 'btnDisabled'],\n layer: 'btnTopBar',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n\n // Input fields\n input: {\n depends: ['fg'],\n opacity: 'input'\n },\n inputText: {\n depends: ['text'],\n layer: 'input',\n textColor: true\n },\n inputPanelText: {\n depends: ['panelText'],\n layer: 'inputPanel',\n variant: 'input',\n textColor: true\n },\n inputTopbarText: {\n depends: ['topBarText'],\n layer: 'inputTopBar',\n variant: 'input',\n textColor: true\n },\n\n alertError: {\n depends: ['cRed'],\n opacity: 'alert'\n },\n alertErrorText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertError',\n textColor: true\n },\n alertErrorPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertError',\n textColor: true\n },\n\n alertWarning: {\n depends: ['cOrange'],\n opacity: 'alert'\n },\n alertWarningText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertWarning',\n textColor: true\n },\n alertWarningPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertWarning',\n textColor: true\n },\n\n alertSuccess: {\n depends: ['cGreen'],\n opacity: 'alert'\n },\n alertSuccessText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertSuccess',\n textColor: true\n },\n alertSuccessPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertSuccess',\n textColor: true\n },\n\n alertNeutral: {\n depends: ['text'],\n opacity: 'alert'\n },\n alertNeutralText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertNeutral',\n color: (mod, text) => invertLightness(text).rgb,\n textColor: true\n },\n alertNeutralPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertNeutral',\n textColor: true\n },\n\n alertPopupError: {\n depends: ['alertError'],\n opacity: 'alertPopup'\n },\n alertPopupErrorText: {\n depends: ['alertErrorText'],\n layer: 'popover',\n variant: 'alertPopupError',\n textColor: true\n },\n\n alertPopupWarning: {\n depends: ['alertWarning'],\n opacity: 'alertPopup'\n },\n alertPopupWarningText: {\n depends: ['alertWarningText'],\n layer: 'popover',\n variant: 'alertPopupWarning',\n textColor: true\n },\n\n alertPopupSuccess: {\n depends: ['alertSuccess'],\n opacity: 'alertPopup'\n },\n alertPopupSuccessText: {\n depends: ['alertSuccessText'],\n layer: 'popover',\n variant: 'alertPopupSuccess',\n textColor: true\n },\n\n alertPopupNeutral: {\n depends: ['alertNeutral'],\n opacity: 'alertPopup'\n },\n alertPopupNeutralText: {\n depends: ['alertNeutralText'],\n layer: 'popover',\n variant: 'alertPopupNeutral',\n textColor: true\n },\n\n badgeNotification: '--cRed',\n badgeNotificationText: {\n depends: ['text', 'badgeNotification'],\n layer: 'badge',\n variant: 'badgeNotification',\n textColor: 'bw'\n },\n\n badgeNeutral: '--cGreen',\n badgeNeutralText: {\n depends: ['text', 'badgeNeutral'],\n layer: 'badge',\n variant: 'badgeNeutral',\n textColor: 'bw'\n },\n\n chatBg: {\n depends: ['bg']\n },\n\n chatMessageIncomingBg: {\n depends: ['chatBg']\n },\n\n chatMessageIncomingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: true\n },\n\n chatMessageIncomingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: 'preserve'\n },\n\n chatMessageIncomingBorder: {\n depends: ['border'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n },\n\n chatMessageOutgoingBg: {\n depends: ['chatMessageIncomingBg'],\n color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb\n },\n\n chatMessageOutgoingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: true\n },\n\n chatMessageOutgoingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: 'preserve'\n },\n\n chatMessageOutgoingBorder: {\n depends: ['chatMessageOutgoingBg'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n }\n}\n","import { convert, brightness, contrastRatio } from 'chromatism'\nimport { alphaBlendLayers, getTextColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { LAYERS, DEFAULT_OPACITY, SLOT_INHERITANCE } from './pleromafe.js'\n\n/*\n * # What's all this?\n * Here be theme engine for pleromafe. All of this supposed to ease look\n * and feel customization, making widget styles and make developer's life\n * easier when it comes to supporting themes. Like many other theme systems\n * it operates on color definitions, or \"slots\" - for example you define\n * \"button\" color slot and then in UI component Button's CSS you refer to\n * it as a CSS3 Variable.\n *\n * Some applications allow you to customize colors for certain things.\n * Some UI toolkits allow you to define colors for each type of widget.\n * Most of them are pretty barebones and have no assistance for common\n * problems and cases, and in general themes themselves are very hard to\n * maintain in all aspects. This theme engine tries to solve all of the\n * common problems with themes.\n *\n * You don't have redefine several similar colors if you just want to\n * change one color - all color slots are derived from other ones, so you\n * can have at least one or two \"basic\" colors defined and have all other\n * components inherit and modify basic ones.\n *\n * You don't have to test contrast ratio for colors or pick text color for\n * each element even if you have light-on-dark elements in dark-on-light\n * theme.\n *\n * You don't have to maintain order of code for inheriting slots from othet\n * slots - dependency graph resolving does it for you.\n */\n\n/* This indicates that this version of code outputs similar theme data and\n * should be incremented if output changes - for instance if getTextColor\n * function changes and older themes no longer render text colors as\n * author intended previously.\n */\nexport const CURRENT_VERSION = 3\n\nexport const getLayersArray = (layer, data = LAYERS) => {\n const array = [layer]\n let parent = data[layer]\n while (parent) {\n array.unshift(parent)\n parent = data[parent]\n }\n return array\n}\n\nexport const getLayers = (layer, variant = layer, opacitySlot, colors, opacity) => {\n return getLayersArray(layer).map((currentLayer) => ([\n currentLayer === layer\n ? colors[variant]\n : colors[currentLayer],\n currentLayer === layer\n ? opacity[opacitySlot] || 1\n : opacity[currentLayer]\n ]))\n}\n\nconst getDependencies = (key, inheritance) => {\n const data = inheritance[key]\n if (typeof data === 'string' && data.startsWith('--')) {\n return [data.substring(2)]\n } else {\n if (data === null) return []\n const { depends, layer, variant } = data\n const layerDeps = layer\n ? getLayersArray(layer).map(currentLayer => {\n return currentLayer === layer\n ? variant || layer\n : currentLayer\n })\n : []\n if (Array.isArray(depends)) {\n return [...depends, ...layerDeps]\n } else {\n return [...layerDeps]\n }\n }\n}\n\n/**\n * Sorts inheritance object topologically - dependant slots come after\n * dependencies\n *\n * @property {Object} inheritance - object defining the nodes\n * @property {Function} getDeps - function that returns dependencies for\n * given value and inheritance object.\n * @returns {String[]} keys of inheritance object, sorted in topological\n * order. Additionally, dependency-less nodes will always be first in line\n */\nexport const topoSort = (\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n // This is an implementation of https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n const allKeys = Object.keys(inheritance)\n const whites = new Set(allKeys)\n const grays = new Set()\n const blacks = new Set()\n const unprocessed = [...allKeys]\n const output = []\n\n const step = (node) => {\n if (whites.has(node)) {\n // Make node \"gray\"\n whites.delete(node)\n grays.add(node)\n // Do step for each node connected to it (one way)\n getDeps(node, inheritance).forEach(step)\n // Make node \"black\"\n grays.delete(node)\n blacks.add(node)\n // Put it into the output list\n output.push(node)\n } else if (grays.has(node)) {\n console.debug('Cyclic depenency in topoSort, ignoring')\n output.push(node)\n } else if (blacks.has(node)) {\n // do nothing\n } else {\n throw new Error('Unintended condition in topoSort!')\n }\n }\n while (unprocessed.length > 0) {\n step(unprocessed.pop())\n }\n\n // The index thing is to make sorting stable on browsers\n // where Array.sort() isn't stable\n return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n const depsA = getDeps(a, inheritance).length\n const depsB = getDeps(b, inheritance).length\n\n if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi\n if (depsA === 0 && depsB !== 0) return -1\n if (depsB === 0 && depsA !== 0) return 1\n return 0 // failsafe, shouldn't happen?\n }).map(({ data }) => data)\n}\n\nconst expandSlotValue = (value) => {\n if (typeof value === 'object') return value\n return {\n depends: value.startsWith('--') ? [value.substring(2)] : [],\n default: value.startsWith('#') ? value : undefined\n }\n}\n/**\n * retrieves opacity slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * TODO refactor this\n */\nexport const getOpacitySlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (value.opacity === null) return\n if (value.opacity) return value.opacity\n const findInheritedOpacity = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.opacity || dependency === null) {\n return dependency.opacity\n } else if (dependency.depends && visited.includes(depSlot)) {\n return findInheritedOpacity(depSlot, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedOpacity(k)\n }\n}\n\n/**\n * retrieves layer slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * this is basically copypaste of getOpacitySlot except it checks if key is\n * in LAYERS\n * TODO refactor this\n */\nexport const getLayerSlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (LAYERS[k]) return k\n if (value.layer === null) return\n if (value.layer) return value.layer\n const findInheritedLayer = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.layer || dependency === null) {\n return dependency.layer\n } else if (dependency.depends) {\n return findInheritedLayer(dependency, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedLayer(k)\n }\n}\n\n/**\n * topologically sorted SLOT_INHERITANCE\n */\nexport const SLOT_ORDERED = topoSort(\n Object.entries(SLOT_INHERITANCE)\n .sort(([aK, aV], [bK, bV]) => ((aV && aV.priority) || 0) - ((bV && bV.priority) || 0))\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n)\n\n/**\n * All opacity slots used in color slots, their default values and affected\n * color slots.\n */\nexport const OPACITIES = Object.entries(SLOT_INHERITANCE).reduce((acc, [k, v]) => {\n const opacity = getOpacitySlot(k, SLOT_INHERITANCE, getDependencies)\n if (opacity) {\n return {\n ...acc,\n [opacity]: {\n defaultValue: DEFAULT_OPACITY[opacity] || 1,\n affectedSlots: [...((acc[opacity] && acc[opacity].affectedSlots) || []), k]\n }\n }\n } else {\n return acc\n }\n}, {})\n\n/**\n * Handle dynamic color\n */\nexport const computeDynamicColor = (sourceColor, getColor, mod) => {\n if (typeof sourceColor !== 'string' || !sourceColor.startsWith('--')) return sourceColor\n let targetColor = null\n // Color references other color\n const [variable, modifier] = sourceColor.split(/,/g).map(str => str.trim())\n const variableSlot = variable.substring(2)\n targetColor = getColor(variableSlot)\n if (modifier) {\n targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n }\n return targetColor\n}\n\n/**\n * THE function you want to use. Takes provided colors and opacities\n * value and uses inheritance data to figure out color needed for the slot.\n */\nexport const getColors = (sourceColors, sourceOpacity) => SLOT_ORDERED.reduce(({ colors, opacity }, key) => {\n const sourceColor = sourceColors[key]\n const value = expandSlotValue(SLOT_INHERITANCE[key])\n const deps = getDependencies(key, SLOT_INHERITANCE)\n const isTextColor = !!value.textColor\n const variant = value.variant || value.layer\n\n let backgroundColor = null\n\n if (isTextColor) {\n backgroundColor = alphaBlendLayers(\n { ...(colors[deps[0]] || convert(sourceColors[key] || '#FF00FF').rgb) },\n getLayers(\n getLayerSlot(key) || 'bg',\n variant || 'bg',\n getOpacitySlot(variant),\n colors,\n opacity\n )\n )\n } else if (variant && variant !== key) {\n backgroundColor = colors[variant] || convert(sourceColors[variant]).rgb\n } else {\n backgroundColor = colors.bg || convert(sourceColors.bg)\n }\n\n const isLightOnDark = relativeLuminance(backgroundColor) < 0.5\n const mod = isLightOnDark ? 1 : -1\n\n let outputColor = null\n if (sourceColor) {\n // Color is defined in source color\n let targetColor = sourceColor\n if (targetColor === 'transparent') {\n // We take only layers below current one\n const layers = getLayers(\n getLayerSlot(key),\n key,\n getOpacitySlot(key) || key,\n colors,\n opacity\n ).slice(0, -1)\n targetColor = {\n ...alphaBlendLayers(\n convert('#FF00FF').rgb,\n layers\n ),\n a: 0\n }\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('--')) {\n targetColor = computeDynamicColor(\n sourceColor,\n variableSlot => colors[variableSlot] || sourceColors[variableSlot],\n mod\n )\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('#')) {\n targetColor = convert(targetColor).rgb\n }\n outputColor = { ...targetColor }\n } else if (value.default) {\n // same as above except in object form\n outputColor = convert(value.default).rgb\n } else {\n // calculate color\n const defaultColorFunc = (mod, dep) => ({ ...dep })\n const colorFunc = value.color || defaultColorFunc\n\n if (value.textColor) {\n if (value.textColor === 'bw') {\n outputColor = contrastRatio(backgroundColor).rgb\n } else {\n let color = { ...colors[deps[0]] }\n if (value.color) {\n color = colorFunc(mod, ...deps.map((dep) => ({ ...colors[dep] })))\n }\n outputColor = getTextColor(\n backgroundColor,\n { ...color },\n value.textColor === 'preserve'\n )\n }\n } else {\n // background color case\n outputColor = colorFunc(\n mod,\n ...deps.map((dep) => ({ ...colors[dep] }))\n )\n }\n }\n if (!outputColor) {\n throw new Error('Couldn\\'t generate color for ' + key)\n }\n\n const opacitySlot = value.opacity || getOpacitySlot(key)\n const ownOpacitySlot = value.opacity\n\n if (ownOpacitySlot === null) {\n outputColor.a = 1\n } else if (sourceColor === 'transparent') {\n outputColor.a = 0\n } else {\n const opacityOverriden = ownOpacitySlot && sourceOpacity[opacitySlot] !== undefined\n\n const dependencySlot = deps[0]\n const dependencyColor = dependencySlot && colors[dependencySlot]\n\n if (!ownOpacitySlot && dependencyColor && !value.textColor && ownOpacitySlot !== null) {\n // Inheriting color from dependency (weird, i know)\n // except if it's a text color or opacity slot is set to 'null'\n outputColor.a = dependencyColor.a\n } else if (!dependencyColor && !opacitySlot) {\n // Remove any alpha channel if no dependency and no opacitySlot found\n delete outputColor.a\n } else {\n // Otherwise try to assign opacity\n if (dependencyColor && dependencyColor.a === 0) {\n // transparent dependency shall make dependents transparent too\n outputColor.a = 0\n } else {\n // Otherwise check if opacity is overriden and use that or default value instead\n outputColor.a = Number(\n opacityOverriden\n ? sourceOpacity[opacitySlot]\n : (OPACITIES[opacitySlot] || {}).defaultValue\n )\n }\n }\n }\n\n if (Number.isNaN(outputColor.a) || outputColor.a === undefined) {\n outputColor.a = 1\n }\n\n if (opacitySlot) {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity: { ...opacity, [opacitySlot]: outputColor.a }\n }\n } else {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity\n }\n }\n}, { colors: {}, opacity: {} })\n","import { hex2rgb } from '../color_convert/color_convert.js'\nconst highlightStyle = (prefs) => {\n if (prefs === undefined) return\n const { color, type } = prefs\n if (typeof color !== 'string') return\n const rgb = hex2rgb(color)\n if (rgb == null) return\n const solidColor = `rgb(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)})`\n const tintColor = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .1)`\n const tintColor2 = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .2)`\n const customProps = {\n '--____highlight-solidColor': solidColor,\n '--____highlight-tintColor': tintColor,\n '--____highlight-tintColor2': tintColor2\n }\n if (type === 'striped') {\n return {\n backgroundImage: [\n 'repeating-linear-gradient(135deg,',\n `${tintColor} ,`,\n `${tintColor} 20px,`,\n `${tintColor2} 20px,`,\n `${tintColor2} 40px`\n ].join(' '),\n backgroundPosition: '0 0',\n ...customProps\n }\n } else if (type === 'solid') {\n return {\n backgroundColor: tintColor2,\n ...customProps\n }\n } else if (type === 'side') {\n return {\n backgroundImage: [\n 'linear-gradient(to right,',\n `${solidColor} ,`,\n `${solidColor} 2px,`,\n 'transparent 6px'\n ].join(' '),\n backgroundPosition: '0 0',\n ...customProps\n }\n }\n}\n\nconst highlightClass = (user) => {\n return 'USER____' + user.screen_name\n .replace(/\\./g, '_')\n .replace(/@/g, '_AT_')\n}\n\nexport {\n highlightClass,\n highlightStyle\n}\n","import { includes } from 'lodash'\n\nconst generateProfileLink = (id, screenName, restrictedNicknames) => {\n const complicated = !screenName || (isExternal(screenName) || includes(restrictedNicknames, screenName))\n return {\n name: (complicated ? 'external-user-profile' : 'user-profile'),\n params: (complicated ? { id } : { name: screenName })\n }\n}\n\nconst isExternal = screenName => screenName && screenName.includes('@')\n\nexport default generateProfileLink\n","<template>\n <button\n v-if=\"usePlaceholder\"\n class=\"Attachment -placeholder button-unstyled\"\n :class=\"classNames\"\n @click=\"openModal\"\n >\n <a\n v-if=\"type !== 'html'\"\n class=\"placeholder\"\n target=\"_blank\"\n :href=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n @click.prevent\n >\n <FAIcon :icon=\"placeholderIconClass\" />\n <b>{{ nsfw ? \"NSFW / \" : \"\" }}</b>{{ edit ? '' : placeholderName }}\n </a>\n <div\n v-if=\"edit || remove\"\n class=\"attachment-buttons\"\n >\n <button\n v-if=\"remove\"\n class=\"button-unstyled attachment-button\"\n @click.prevent=\"onRemove\"\n >\n <FAIcon icon=\"trash-alt\" />\n </button>\n </div>\n <div\n v-if=\"size !== 'hide' && !hideDescription && (edit || localDescription || showDescription)\"\n class=\"description-container\"\n :class=\"{ '-static': !edit }\"\n >\n <input\n v-if=\"edit\"\n v-model=\"localDescription\"\n type=\"text\"\n class=\"description-field\"\n :placeholder=\"$t('post_status.media_description')\"\n @keydown.enter.prevent=\"\"\n >\n <p v-else>\n {{ localDescription }}\n </p>\n </div>\n </button>\n <div\n v-else\n class=\"Attachment\"\n :class=\"classNames\"\n >\n <div\n v-show=\"!isEmpty\"\n class=\"attachment-wrapper\"\n >\n <a\n v-if=\"hidden\"\n class=\"image-container\"\n :href=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n @click.prevent.stop=\"toggleHidden\"\n >\n <img\n :key=\"nsfwImage\"\n class=\"nsfw\"\n :src=\"nsfwImage\"\n >\n <FAIcon\n v-if=\"type === 'video'\"\n class=\"play-icon\"\n icon=\"play-circle\"\n />\n </a>\n <div\n v-if=\"!hidden\"\n class=\"attachment-buttons\"\n >\n <button\n v-if=\"type === 'flash' && flashLoaded\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.attachment_stop_flash')\"\n @click.prevent=\"stopFlash\"\n >\n <FAIcon icon=\"stop\" />\n </button>\n <button\n v-if=\"attachment.description && size !== 'small' && !edit && type !== 'unknown'\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.show_attachment_description')\"\n @click.prevent=\"toggleDescription\"\n >\n <FAIcon icon=\"align-right\" />\n </button>\n <button\n v-if=\"!useModal && type !== 'unknown'\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.show_attachment_in_modal')\"\n @click.prevent=\"openModalForce\"\n >\n <FAIcon icon=\"search-plus\" />\n </button>\n <button\n v-if=\"nsfw && hideNsfwLocal\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.hide_attachment')\"\n @click.prevent=\"toggleHidden\"\n >\n <FAIcon icon=\"times\" />\n </button>\n <button\n v-if=\"shiftUp\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.move_up')\"\n @click.prevent=\"onShiftUp\"\n >\n <FAIcon icon=\"chevron-left\" />\n </button>\n <button\n v-if=\"shiftDn\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.move_down')\"\n @click.prevent=\"onShiftDn\"\n >\n <FAIcon icon=\"chevron-right\" />\n </button>\n <button\n v-if=\"remove\"\n class=\"button-unstyled attachment-button\"\n :title=\"$t('status.remove_attachment')\"\n @click.prevent=\"onRemove\"\n >\n <FAIcon icon=\"trash-alt\" />\n </button>\n </div>\n\n <a\n v-if=\"type === 'image' && (!hidden || preloadImage)\"\n class=\"image-container\"\n :class=\"{'-hidden': hidden && preloadImage }\"\n :href=\"attachment.url\"\n target=\"_blank\"\n @click.stop.prevent=\"openModal\"\n >\n <StillImage\n class=\"image\"\n :referrerpolicy=\"referrerpolicy\"\n :mimetype=\"attachment.mimetype\"\n :src=\"attachment.large_thumb_url || attachment.url\"\n :image-load-handler=\"onImageLoad\"\n :alt=\"attachment.description\"\n />\n </a>\n\n <a\n v-if=\"type === 'unknown' && !hidden\"\n class=\"placeholder-container\"\n :href=\"attachment.url\"\n target=\"_blank\"\n >\n <FAIcon\n :size=\"compact ? '2x' : '5x'\"\n :icon=\"placeholderIconClass\"\n :title=\"localDescription\"\n />\n <p v-if=\"!compact\">\n {{ localDescription }}\n </p>\n </a>\n\n <component\n :is=\"videoTag\"\n v-if=\"type === 'video' && !hidden\"\n class=\"video-container\"\n :class=\"{ 'button-unstyled': 'isModal' }\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <VideoAttachment\n class=\"video\"\n :attachment=\"attachment\"\n :controls=\"!useModal\"\n @play=\"$emit('play')\"\n @pause=\"$emit('pause')\"\n />\n <FAIcon\n v-if=\"useModal\"\n class=\"play-icon\"\n icon=\"play-circle\"\n />\n </component>\n\n <span\n v-if=\"type === 'audio' && !hidden\"\n class=\"audio-container\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <audio\n v-if=\"type === 'audio'\"\n :src=\"attachment.url\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n controls\n @play=\"$emit('play')\"\n @pause=\"$emit('pause')\"\n />\n </span>\n\n <div\n v-if=\"type === 'html' && attachment.oembed\"\n class=\"oembed-container\"\n @click.prevent=\"linkClicked\"\n >\n <div\n v-if=\"attachment.thumb_url\"\n class=\"image\"\n >\n <img :src=\"attachment.thumb_url\">\n </div>\n <div class=\"text\">\n <!-- eslint-disable vue/no-v-html -->\n <h1><a :href=\"attachment.url\">{{ attachment.oembed.title }}</a></h1>\n <div v-html=\"attachment.oembed.oembedHTML\" />\n <!-- eslint-enable vue/no-v-html -->\n </div>\n </div>\n\n <span\n v-if=\"type === 'flash' && !hidden\"\n class=\"flash-container\"\n :href=\"attachment.url\"\n @click.stop.prevent=\"openModal\"\n >\n <Flash\n ref=\"flash\"\n class=\"flash\"\n :src=\"attachment.large_thumb_url || attachment.url\"\n @playerOpened=\"setFlashLoaded(true)\"\n @playerClosed=\"setFlashLoaded(false)\"\n />\n </span>\n </div>\n <div\n v-if=\"size !== 'hide' && !hideDescription && (edit || (localDescription && showDescription))\"\n class=\"description-container\"\n :class=\"{ '-static': !edit }\"\n >\n <input\n v-if=\"edit\"\n v-model=\"localDescription\"\n type=\"text\"\n class=\"description-field\"\n :placeholder=\"$t('post_status.media_description')\"\n @keydown.enter.prevent=\"\"\n >\n <p v-else>\n {{ localDescription }}\n </p>\n </div>\n </div>\n</template>\n\n<script src=\"./attachment.js\"></script>\n\n<style src=\"./attachment.scss\" lang=\"scss\"></style>\n","import StillImage from '../still-image/still-image.vue'\nimport Flash from '../flash/flash.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes,\n faStop,\n faSearchPlus,\n faTrashAlt,\n faPencilAlt,\n faAlignRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes,\n faStop,\n faSearchPlus,\n faTrashAlt,\n faPencilAlt,\n faAlignRight\n)\n\nconst Attachment = {\n props: [\n 'attachment',\n 'compact',\n 'description',\n 'hideDescription',\n 'nsfw',\n 'size',\n 'setMedia',\n 'remove',\n 'shiftUp',\n 'shiftDn',\n 'edit'\n ],\n data () {\n return {\n localDescription: this.description || this.attachment.description,\n nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n preloadImage: this.$store.getters.mergedConfig.preloadImage,\n loading: false,\n img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n modalOpen: false,\n showHidden: false,\n flashLoaded: false,\n showDescription: false\n }\n },\n components: {\n Flash,\n StillImage,\n VideoAttachment\n },\n computed: {\n classNames () {\n return [\n {\n '-loading': this.loading,\n '-nsfw-placeholder': this.hidden,\n '-editable': this.edit !== undefined,\n '-compact': this.compact\n },\n '-type-' + this.type,\n this.size && '-size-' + this.size,\n `-${this.useContainFit ? 'contain' : 'cover'}-fit`\n ]\n },\n usePlaceholder () {\n return this.size === 'hide'\n },\n useContainFit () {\n return this.$store.getters.mergedConfig.useContainFit\n },\n placeholderName () {\n if (this.attachment.description === '' || !this.attachment.description) {\n return this.type.toUpperCase()\n }\n return this.attachment.description\n },\n placeholderIconClass () {\n if (this.type === 'image') return 'image'\n if (this.type === 'video') return 'video'\n if (this.type === 'audio') return 'music'\n return 'file'\n },\n referrerpolicy () {\n return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n },\n type () {\n return fileTypeService.fileType(this.attachment.mimetype)\n },\n hidden () {\n return this.nsfw && this.hideNsfwLocal && !this.showHidden\n },\n isEmpty () {\n return (this.type === 'html' && !this.attachment.oembed)\n },\n useModal () {\n let modalTypes = []\n switch (this.size) {\n case 'hide':\n case 'small':\n modalTypes = ['image', 'video', 'audio', 'flash']\n break\n default:\n modalTypes = this.mergedConfig.playVideosInModal\n ? ['image', 'video', 'flash']\n : ['image']\n break\n }\n return modalTypes.includes(this.type)\n },\n videoTag () {\n return this.useModal ? 'button' : 'span'\n },\n ...mapGetters(['mergedConfig'])\n },\n watch: {\n 'attachment.description' (newVal) {\n this.localDescription = newVal\n },\n localDescription (newVal) {\n this.onEdit(newVal)\n }\n },\n methods: {\n linkClicked ({ target }) {\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n openModal (event) {\n if (this.useModal) {\n this.$emit('setMedia')\n this.$store.dispatch('setCurrentMedia', this.attachment)\n } else if (this.type === 'unknown') {\n window.open(this.attachment.url)\n }\n },\n openModalForce (event) {\n this.$emit('setMedia')\n this.$store.dispatch('setCurrentMedia', this.attachment)\n },\n onEdit (event) {\n this.edit && this.edit(this.attachment, event)\n },\n onRemove () {\n this.remove && this.remove(this.attachment)\n },\n onShiftUp () {\n this.shiftUp && this.shiftUp(this.attachment)\n },\n onShiftDn () {\n this.shiftDn && this.shiftDn(this.attachment)\n },\n stopFlash () {\n this.$refs.flash.closePlayer()\n },\n setFlashLoaded (event) {\n this.flashLoaded = event\n },\n toggleDescription () {\n this.showDescription = !this.showDescription\n },\n toggleHidden (event) {\n if (\n (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n ) {\n this.openModal(event)\n return\n }\n if (this.img && !this.preloadImage) {\n if (this.img.onload) {\n this.img.onload()\n } else {\n this.loading = true\n this.img.src = this.attachment.url\n this.img.onload = () => {\n this.loading = false\n this.showHidden = !this.showHidden\n }\n }\n } else {\n this.showHidden = !this.showHidden\n }\n },\n onImageLoad (image) {\n const width = image.naturalWidth\n const height = image.naturalHeight\n this.$emit('naturalSizeLoad', { id: this.attachment.id, width, height })\n }\n }\n}\n\nexport default Attachment\n","import { render } from \"./attachment.vue?vue&type=template&id=581d66b2\"\nimport script from \"./attachment.js?vue&type=script&lang=js\"\nexport * from \"./attachment.js?vue&type=script&lang=js\"\n\nimport \"./attachment.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"avatars\">\n <router-link\n v-for=\"user in slicedUsers\"\n :key=\"user.id\"\n :to=\"userProfileLink(user)\"\n class=\"avatars-item\"\n >\n <UserAvatar\n :user=\"user\"\n class=\"avatar-small\"\n />\n </router-link>\n </div>\n</template>\n\n<script src=\"./avatar_list.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.avatars {\n display: flex;\n margin: 0;\n padding: 0;\n\n // For hiding overflowing elements\n flex-wrap: wrap;\n height: 24px;\n\n .avatars-item {\n margin: 0 0 5px 5px;\n\n &:first-child {\n padding-left: 5px;\n }\n\n .avatar-small {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n height: 24px;\n width: 24px;\n }\n }\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst AvatarList = {\n props: ['users'],\n computed: {\n slicedUsers () {\n return this.users ? this.users.slice(0, 15) : []\n }\n },\n components: {\n UserAvatar\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default AvatarList\n","import { render } from \"./avatar_list.vue?vue&type=template&id=432beb66\"\nimport script from \"./avatar_list.js?vue&type=script&lang=js\"\nexport * from \"./avatar_list.js?vue&type=script&lang=js\"\n\nimport \"./avatar_list.vue?vue&type=style&index=0&id=432beb66&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"basic-user-card\">\n <router-link\n :to=\"userProfileLink(user)\"\n @click.prevent\n >\n <UserPopover\n :user-id=\"user.id\"\n :overlay-centers=\"true\"\n overlay-centers-selector=\".avatar\"\n >\n <UserAvatar\n class=\"user-avatar avatar\"\n :user=\"user\"\n @click.prevent\n />\n </UserPopover>\n </router-link>\n <div\n class=\"basic-user-card-collapsed-content\"\n >\n <div\n :title=\"user.name\"\n class=\"basic-user-card-user-name\"\n >\n <RichContent\n class=\"basic-user-card-user-name-value\"\n :html=\"user.name\"\n :emoji=\"user.emoji\"\n />\n </div>\n <div>\n <user-link\n class=\"basic-user-card-screen-name\"\n :user=\"user\"\n />\n </div>\n <slot />\n </div>\n </div>\n</template>\n\n<script src=\"./basic_user_card.js\"></script>\n\n<style lang=\"scss\">\n.basic-user-card {\n display: flex;\n flex: 1 0;\n margin: 0;\n padding: 0.6em 1em;\n\n --emoji-size: 14px;\n\n &-collapsed-content {\n margin-left: 0.7em;\n text-align: left;\n flex: 1;\n min-width: 0;\n }\n\n &-user-name {\n img {\n object-fit: contain;\n height: 16px;\n width: 16px;\n vertical-align: middle;\n }\n }\n\n &-user-name-value,\n &-screen-name {\n display: inline-block;\n max-width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n &-expanded-content {\n flex: 1;\n margin-left: 0.7em;\n min-width: 0;\n }\n}\n</style>\n","import UserPopover from '../user_popover/user_popover.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst BasicUserCard = {\n props: [\n 'user'\n ],\n components: {\n UserPopover,\n UserAvatar,\n RichContent,\n UserLink\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default BasicUserCard\n","import { render } from \"./basic_user_card.vue?vue&type=template&id=d8a50982\"\nimport script from \"./basic_user_card.js?vue&type=script&lang=js\"\nexport * from \"./basic_user_card.js?vue&type=script&lang=js\"\n\nimport \"./basic_user_card.vue?vue&type=style&index=0&id=d8a50982&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"checkbox\"\n :class=\"{ disabled, indeterminate, 'indeterminate-fix': indeterminateTransitionFix }\"\n >\n <input\n type=\"checkbox\"\n class=\"visible-for-screenreader-only\"\n :disabled=\"disabled\"\n :checked=\"modelValue\"\n :indeterminate=\"indeterminate\"\n @change=\"$emit('update:modelValue', $event.target.checked)\"\n >\n <i\n class=\"checkbox-indicator\"\n :aria-hidden=\"true\"\n @transitionend.capture=\"onTransitionEnd\"\n />\n <span\n v-if=\"!!$slots.default\"\n class=\"label\"\n >\n <slot />\n </span>\n </label>\n</template>\n\n<script>\nexport default {\n props: [\n 'modelValue',\n 'indeterminate',\n 'disabled'\n ],\n emits: ['update:modelValue'],\n data: (vm) => ({\n indeterminateTransitionFix: vm.indeterminate\n }),\n watch: {\n indeterminate (e) {\n if (e) {\n this.indeterminateTransitionFix = true\n }\n }\n },\n methods: {\n onTransitionEnd (e) {\n if (!this.indeterminate) {\n this.indeterminateTransitionFix = false\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.checkbox {\n position: relative;\n display: inline-block;\n min-height: 1.2em;\n\n &-indicator {\n position: relative;\n padding-left: 1.2em;\n }\n\n &-indicator::before {\n position: absolute;\n right: 0;\n top: 0;\n display: block;\n content: \"✓\";\n transition: color 200ms;\n width: 1.1em;\n height: 1.1em;\n border-radius: $fallback--checkboxRadius;\n border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n vertical-align: top;\n text-align: center;\n line-height: 1.1em;\n font-size: 1.1em;\n color: transparent;\n overflow: hidden;\n box-sizing: border-box;\n }\n\n &.disabled {\n .checkbox-indicator::before,\n .label {\n opacity: 0.5;\n }\n\n .label {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n input[type=\"checkbox\"] {\n &:checked + .checkbox-indicator::before {\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n\n &:indeterminate + .checkbox-indicator::before {\n content: \"–\";\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n }\n }\n\n &.indeterminate-fix {\n input[type=\"checkbox\"] + .checkbox-indicator::before {\n content: \"–\";\n }\n }\n\n & > span {\n margin-left: 0.5em;\n }\n}\n</style>\n","import { render } from \"./checkbox.vue?vue&type=template&id=7164e0b5\"\nimport script from \"./checkbox.vue?vue&type=script&lang=js\"\nexport * from \"./checkbox.vue?vue&type=script&lang=js\"\n\nimport \"./checkbox.vue?vue&type=style&index=0&id=7164e0b5&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import DialogModal from '../dialog_modal/dialog_modal.vue'\n\n/**\n * This component emits the following events:\n * cancelled, emitted when the action should not be performed;\n * accepted, emitted when the action should be performed;\n *\n * The caller should close this dialog after receiving any of the two events.\n */\nconst ConfirmModal = {\n components: {\n DialogModal\n },\n props: {\n title: {\n type: String\n },\n cancelText: {\n type: String\n },\n confirmText: {\n type: String\n }\n },\n computed: {\n },\n methods: {\n onCancel () {\n this.$emit('cancelled')\n },\n onAccept () {\n this.$emit('accepted')\n }\n }\n}\n\nexport default ConfirmModal\n","import { render } from \"./confirm_modal.vue?vue&type=template&id=c74bcd96\"\nimport script from \"./confirm_modal.js?vue&type=script&lang=js\"\nexport * from \"./confirm_modal.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <dialog-modal\n v-body-scroll-lock=\"true\"\n class=\"confirm-modal\"\n :on-cancel=\"onCancel\"\n >\n <template #header>\n <span v-text=\"title\" />\n </template>\n\n <slot />\n\n <template #footer>\n <button\n class=\"btn button-default\"\n @click.prevent=\"onAccept\"\n v-text=\"confirmText\"\n />\n\n <button\n class=\"btn button-default\"\n @click.prevent=\"onCancel\"\n v-text=\"cancelText\"\n />\n </template>\n </dialog-modal>\n</template>\n\n<script src=\"./confirm_modal.js\"></script>\n","<template>\n <span\n :class=\"{ 'dark-overlay': darkOverlay }\"\n @click.self.stop=\"onCancel()\"\n >\n <div\n class=\"dialog-modal panel panel-default\"\n @click.stop=\"\"\n >\n <div class=\"panel-heading dialog-modal-heading\">\n <div class=\"title\">\n <slot name=\"header\" />\n </div>\n </div>\n <div class=\"dialog-modal-content\">\n <slot name=\"default\" />\n </div>\n <div class=\"dialog-modal-footer user-interactions panel-footer\">\n <slot name=\"footer\" />\n </div>\n </div>\n </span>\n</template>\n\n<script src=\"./dialog_modal.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n// TODO: unify with other modals.\n.dark-overlay {\n &::before {\n bottom: 0;\n content: \" \";\n display: block;\n cursor: default;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n background: rgb(27 31 35 / 50%);\n z-index: 2000;\n }\n}\n\n.dialog-modal.panel {\n top: 0;\n left: 50%;\n max-height: 80vh;\n max-width: 90vw;\n margin: 15vh auto;\n position: fixed;\n transform: translateX(-50%);\n z-index: 2001;\n cursor: default;\n display: block;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n\n .dialog-modal-heading {\n .title {\n text-align: center;\n }\n }\n\n .dialog-modal-content {\n margin: 0;\n padding: 1rem;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n white-space: normal;\n }\n\n .dialog-modal-footer {\n margin: 0;\n padding: 0.5em;\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n display: flex;\n justify-content: flex-end;\n\n button {\n width: auto;\n margin-left: 0.5rem;\n }\n }\n}\n\n</style>\n","const DialogModal = {\n props: {\n darkOverlay: {\n default: true,\n type: Boolean\n },\n onCancel: {\n default: () => {},\n type: Function\n }\n }\n}\n\nexport default DialogModal\n","import { render } from \"./dialog_modal.vue?vue&type=template&id=5b856fbc\"\nimport script from \"./dialog_modal.js?vue&type=script&lang=js\"\nexport * from \"./dialog_modal.js?vue&type=script&lang=js\"\n\nimport \"./dialog_modal.vue?vue&type=style&index=0&id=5b856fbc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n ref=\"root\"\n class=\"emoji-input\"\n :class=\"{ 'with-picker': !hideEmojiButton }\"\n >\n <slot\n :id=\"'textbox-' + randomSeed\"\n :aria-owns=\"suggestionListId\"\n aria-autocomplete=\"both\"\n :aria-expanded=\"showSuggestions\"\n :aria-activedescendant=\"(!showSuggestions || highlighted === -1) ? '' : suggestionItemId(highlighted)\"\n />\n <!-- TODO: make the 'x' disappear if at the end maybe? -->\n <div\n ref=\"hiddenOverlay\"\n class=\"hidden-overlay\"\n :style=\"overlayStyle\"\n :aria-hidden=\"true\"\n >\n <span>{{ preText }}</span>\n <span\n ref=\"hiddenOverlayCaret\"\n class=\"caret\"\n >x</span>\n <span>{{ postText }}</span>\n </div>\n <screen-reader-notice\n ref=\"screenReaderNotice\"\n aria-live=\"assertive\"\n />\n <template v-if=\"enableEmojiPicker\">\n <button\n v-if=\"!hideEmojiButton\"\n class=\"button-unstyled emoji-picker-icon\"\n type=\"button\"\n :title=\"$t('emoji.add_emoji')\"\n @click.prevent=\"togglePicker\"\n >\n <FAIcon :icon=\"['far', 'smile-beam']\" />\n </button>\n <EmojiPicker\n v-if=\"enableEmojiPicker\"\n ref=\"picker\"\n :enable-sticker-picker=\"enableStickerPicker\"\n class=\"emoji-picker-panel\"\n @emoji=\"insert\"\n @sticker-uploaded=\"onStickerUploaded\"\n @sticker-upload-failed=\"onStickerUploadFailed\"\n @show=\"onPickerShown\"\n @close=\"onPickerClosed\"\n />\n </template>\n <Popover\n ref=\"suggestorPopover\"\n class=\"autocomplete-panel\"\n placement=\"bottom\"\n :trigger-attrs=\"{ 'aria-hidden': true }\"\n >\n <template #content>\n <div\n :id=\"suggestionListId\"\n ref=\"panel-body\"\n class=\"autocomplete-panel-body\"\n role=\"listbox\"\n >\n <div\n v-for=\"(suggestion, index) in suggestions\"\n :id=\"suggestionItemId(index)\"\n :key=\"index\"\n class=\"autocomplete-item\"\n role=\"option\"\n :class=\"{ highlighted: index === highlighted }\"\n :aria-label=\"autoCompleteItemLabel(suggestion)\"\n :aria-selected=\"index === highlighted\"\n @click.stop.prevent=\"onClick($event, suggestion)\"\n >\n <span class=\"image\">\n <img\n v-if=\"suggestion.img\"\n :src=\"suggestion.img\"\n >\n <span v-else>{{ suggestion.replacement }}</span>\n </span>\n <div class=\"label\">\n <span\n v-if=\"suggestion.user\"\n class=\"displayText\"\n >\n {{ suggestion.displayText }}<UnicodeDomainIndicator\n :user=\"suggestion.user\"\n :at=\"false\"\n />\n </span>\n <span\n v-if=\"!suggestion.user\"\n class=\"displayText\"\n >\n {{ maybeLocalizedEmojiName(suggestion) }}\n </span>\n <span class=\"detailText\">{{ suggestion.detailText }}</span>\n </div>\n </div>\n </div>\n </template>\n </Popover>\n </div>\n</template>\n\n<script src=\"./emoji_input.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.emoji-input {\n display: flex;\n flex-direction: column;\n position: relative;\n\n .emoji-picker-icon {\n position: absolute;\n top: 0;\n right: 0;\n margin: 0.2em 0.25em;\n font-size: 1.3em;\n cursor: pointer;\n line-height: 24px;\n\n &:hover i {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .emoji-picker-panel {\n position: absolute;\n z-index: 20;\n margin-top: 2px;\n\n &.hide {\n display: none;\n }\n }\n\n input,\n textarea {\n flex: 1 0 auto;\n }\n\n &.with-picker input {\n padding-right: 30px;\n }\n\n .hidden-overlay {\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n overflow: hidden;\n\n /* DEBUG STUFF */\n color: red;\n\n /* set opacity to non-zero to see the overlay */\n\n .caret {\n width: 0;\n margin-right: calc(-1ch - 1px);\n border: 1px solid red;\n }\n }\n}\n\n.autocomplete {\n &-panel {\n position: absolute;\n }\n\n &-item {\n display: flex;\n cursor: pointer;\n padding: 0.2em 0.4em;\n border-bottom: 1px solid rgb(0 0 0 / 40%);\n height: 32px;\n\n .image {\n width: 32px;\n height: 32px;\n line-height: 32px;\n text-align: center;\n font-size: 32px;\n margin-right: 4px;\n\n img {\n width: 32px;\n height: 32px;\n object-fit: contain;\n }\n }\n\n .label {\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin: 0 0.1em 0 0.2em;\n\n .displayText {\n line-height: 1.5;\n }\n\n .detailText {\n font-size: 9px;\n line-height: 9px;\n }\n }\n\n &.highlighted {\n background-color: $fallback--fg;\n background-color: var(--selectedMenuPopover, $fallback--fg);\n color: var(--selectedMenuPopoverText, $fallback--text);\n\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n}\n</style>\n","import { reduce, find } from 'lodash'\n\nexport const replaceWord = (str, toReplace, replacement) => {\n return str.slice(0, toReplace.start) + replacement + str.slice(toReplace.end)\n}\n\nexport const wordAtPosition = (str, pos) => {\n const words = splitByWhitespaceBoundary(str)\n const wordsWithPosition = addPositionToWords(words)\n\n return find(wordsWithPosition, ({ start, end }) => start <= pos && end > pos)\n}\n\nexport const addPositionToWords = (words) => {\n return reduce(words, (result, word) => {\n const data = {\n word,\n start: 0,\n end: word.length\n }\n\n if (result.length > 0) {\n const previous = result.pop()\n\n data.start += previous.end\n data.end += previous.end\n\n result.push(previous)\n }\n\n result.push(data)\n\n return result\n }, [])\n}\n\nexport const splitByWhitespaceBoundary = (str) => {\n const result = []\n let currentWord = ''\n for (let i = 0; i < str.length; i++) {\n const currentChar = str[i]\n // Starting a new word\n if (!currentWord) {\n currentWord = currentChar\n continue\n }\n // current character is whitespace while word isn't, or vice versa:\n // add our current word to results, start over the current word.\n if (!!currentChar.trim() !== !!currentWord.trim()) {\n result.push(currentWord)\n currentWord = currentChar\n continue\n }\n currentWord += currentChar\n }\n // Add the last word we were working on\n if (currentWord) {\n result.push(currentWord)\n }\n return result\n}\n\nconst completion = {\n wordAtPosition,\n addPositionToWords,\n splitByWhitespaceBoundary,\n replaceWord\n}\n\nexport default completion\n","const ScreenReaderNotice = {\n props: {\n ariaLive: {\n type: String,\n defualt: 'assertive'\n }\n },\n data () {\n return {\n currentText: ''\n }\n },\n methods: {\n announce (text) {\n this.currentText = text\n setTimeout(() => { this.currentText = '' }, 1000)\n }\n }\n}\n\nexport default ScreenReaderNotice\n","import { render } from \"./screen_reader_notice.vue?vue&type=template&id=4978e64a\"\nimport script from \"./screen_reader_notice.js?vue&type=script&lang=js\"\nexport * from \"./screen_reader_notice.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"visible-for-screenreader-only\"\n :aria-live=\"ariaLive\"\n >\n {{ currentText }}\n </div>\n</template>\n\n<script src=\"./screen_reader_notice.js\"></script>\n","import Completion from '../../services/completion/completion.js'\nimport genRandomSeed from '../../services/random_seed/random_seed.service.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport Popover from 'src/components/popover/popover.vue'\nimport ScreenReaderNotice from 'src/components/screen_reader_notice/screen_reader_notice.vue'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { ensureFinalFallback } from '../../i18n/languages.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faSmileBeam\n)\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n * <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n emits: ['update:modelValue', 'shown'],\n props: {\n suggest: {\n /**\n * suggest: function (input: String) => Suggestion[]\n *\n * Function that takes input string which takes string (textAtCaret)\n * and returns an array of Suggestions\n *\n * Suggestion is an object containing following properties:\n * displayText: string. Main display text, what actual suggestion\n * represents (user's screen name/emoji shortcode)\n * replacement: string. Text that should replace the textAtCaret\n * detailText: string, optional. Subtitle text, providing additional info\n * if present (user's nickname)\n * imageUrl: string, optional. Image to display alongside with suggestion,\n * currently if no image is provided, replacement will be used (for\n * unicode emojis)\n *\n * TODO: make it asynchronous when adding proper server-provided user\n * suggestions\n *\n * For commonly used suggestors (emoji, users, both) use suggestor.js\n */\n required: true,\n type: Function\n },\n modelValue: {\n /**\n * Used for v-model\n */\n required: true,\n type: String\n },\n enableEmojiPicker: {\n /**\n * Enables emoji picker support, this implies that custom emoji are supported\n */\n required: false,\n type: Boolean,\n default: false\n },\n hideEmojiButton: {\n /**\n * intended to use with external picker trigger, i.e. you have a button outside\n * input that will open up the picker, see triggerShowPicker()\n */\n required: false,\n type: Boolean,\n default: false\n },\n enableStickerPicker: {\n /**\n * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n */\n required: false,\n type: Boolean,\n default: false\n },\n placement: {\n /**\n * Forces the panel to take a specific position relative to the input element.\n * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n */\n required: false,\n type: String, // 'auto', 'top', 'bottom'\n default: 'auto'\n },\n newlineOnCtrlEnter: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n randomSeed: genRandomSeed(),\n input: undefined,\n caretEl: undefined,\n highlighted: -1,\n caret: 0,\n focused: false,\n blurTimeout: null,\n temporarilyHideSuggestions: false,\n disableClickOutside: false,\n suggestions: [],\n overlayStyle: {},\n pickerShown: false\n }\n },\n components: {\n Popover,\n EmojiPicker,\n UnicodeDomainIndicator,\n ScreenReaderNotice\n },\n computed: {\n padEmoji () {\n return this.$store.getters.mergedConfig.padEmoji\n },\n defaultCandidateIndex () {\n return this.$store.getters.mergedConfig.autocompleteSelect ? 0 : -1\n },\n preText () {\n return this.modelValue.slice(0, this.caret)\n },\n postText () {\n return this.modelValue.slice(this.caret)\n },\n showSuggestions () {\n return this.focused &&\n this.suggestions &&\n this.suggestions.length > 0 &&\n !this.pickerShown &&\n !this.temporarilyHideSuggestions\n },\n textAtCaret () {\n return this.wordAtCaret?.word\n },\n wordAtCaret () {\n if (this.modelValue && this.caret) {\n const word = Completion.wordAtPosition(this.modelValue, this.caret - 1) || {}\n return word\n }\n },\n languages () {\n return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)\n },\n maybeLocalizedEmojiNamesAndKeywords () {\n return emoji => {\n const names = [emoji.displayText]\n const keywords = []\n\n if (emoji.displayTextI18n) {\n names.push(this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args))\n }\n\n if (emoji.annotations) {\n this.languages.forEach(lang => {\n names.push(emoji.annotations[lang]?.name)\n\n keywords.push(...(emoji.annotations[lang]?.keywords || []))\n })\n }\n\n return {\n names: names.filter(k => k),\n keywords: keywords.filter(k => k)\n }\n }\n },\n maybeLocalizedEmojiName () {\n return emoji => {\n if (!emoji.annotations) {\n return emoji.displayText\n }\n\n if (emoji.displayTextI18n) {\n return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)\n }\n\n for (const lang of this.languages) {\n if (emoji.annotations[lang]?.name) {\n return emoji.annotations[lang].name\n }\n }\n\n return emoji.displayText\n }\n },\n onInputScroll () {\n this.$refs.hiddenOverlay.scrollTo({\n top: this.input.scrollTop,\n left: this.input.scrollLeft\n })\n },\n suggestionListId () {\n return `suggestions-${this.randomSeed}`\n },\n suggestionItemId () {\n return (index) => `suggestion-item-${index}-${this.randomSeed}`\n }\n },\n mounted () {\n const { root, hiddenOverlayCaret, suggestorPopover } = this.$refs\n const input = root.querySelector('.emoji-input > input') || root.querySelector('.emoji-input > textarea')\n if (!input) return\n this.input = input\n this.caretEl = hiddenOverlayCaret\n if (suggestorPopover.setAnchorEl) {\n suggestorPopover.setAnchorEl(this.caretEl) // unit test compat\n this.$refs.picker.setAnchorEl(this.caretEl)\n } else {\n console.warn('setAnchorEl not found, are we in a unit test?')\n }\n const style = getComputedStyle(this.input)\n this.overlayStyle.padding = style.padding\n this.overlayStyle.border = style.border\n this.overlayStyle.margin = style.margin\n this.overlayStyle.lineHeight = style.lineHeight\n this.overlayStyle.fontFamily = style.fontFamily\n this.overlayStyle.fontSize = style.fontSize\n this.overlayStyle.wordWrap = style.wordWrap\n this.overlayStyle.whiteSpace = style.whiteSpace\n this.resize()\n input.addEventListener('blur', this.onBlur)\n input.addEventListener('focus', this.onFocus)\n input.addEventListener('paste', this.onPaste)\n input.addEventListener('keyup', this.onKeyUp)\n input.addEventListener('keydown', this.onKeyDown)\n input.addEventListener('click', this.onClickInput)\n input.addEventListener('transitionend', this.onTransition)\n input.addEventListener('input', this.onInput)\n input.addEventListener('scroll', this.onInputScroll)\n },\n unmounted () {\n const { input } = this\n if (input) {\n input.removeEventListener('blur', this.onBlur)\n input.removeEventListener('focus', this.onFocus)\n input.removeEventListener('paste', this.onPaste)\n input.removeEventListener('keyup', this.onKeyUp)\n input.removeEventListener('keydown', this.onKeyDown)\n input.removeEventListener('click', this.onClickInput)\n input.removeEventListener('transitionend', this.onTransition)\n input.removeEventListener('input', this.onInput)\n input.removeEventListener('scroll', this.onInputScroll)\n }\n },\n watch: {\n showSuggestions: function (newValue, oldValue) {\n this.$emit('shown', newValue)\n if (newValue) {\n this.$refs.suggestorPopover.showPopover()\n } else {\n this.$refs.suggestorPopover.hidePopover()\n }\n },\n textAtCaret: async function (newWord) {\n if (newWord === undefined) return\n const firstchar = newWord.charAt(0)\n if (newWord === firstchar) {\n this.suggestions = []\n return\n }\n const matchedSuggestions = await this.suggest(newWord, this.maybeLocalizedEmojiNamesAndKeywords)\n // Async: cancel if textAtCaret has changed during wait\n if (this.textAtCaret !== newWord || matchedSuggestions.length <= 0) {\n this.suggestions = []\n return\n }\n this.suggestions = take(matchedSuggestions, 5)\n .map(({ imageUrl, ...rest }) => ({\n ...rest,\n img: imageUrl || ''\n }))\n this.highlighted = this.defaultCandidateIndex\n this.$refs.screenReaderNotice.announce(\n this.$tc('tool_tip.autocomplete_available',\n this.suggestions.length,\n { number: this.suggestions.length }))\n }\n },\n methods: {\n triggerShowPicker () {\n this.$nextTick(() => {\n this.$refs.picker.showPicker()\n this.scrollIntoView()\n })\n // This temporarily disables \"click outside\" handler\n // since external trigger also means click originates\n // from outside, thus preventing picker from opening\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n },\n togglePicker () {\n this.input.focus()\n if (!this.pickerShown) {\n this.scrollIntoView()\n this.$refs.picker.showPicker()\n this.$refs.picker.startEmojiLoad()\n } else {\n this.$refs.picker.hidePicker()\n }\n },\n replace (replacement) {\n const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n this.$emit('update:modelValue', newValue)\n this.caret = 0\n },\n insert ({ insertion, keepOpen, surroundingSpace = true }) {\n const before = this.modelValue.substring(0, this.caret) || ''\n const after = this.modelValue.substring(this.caret) || ''\n\n /* Using a bit more smart approach to padding emojis with spaces:\n * - put a space before cursor if there isn't one already, unless we\n * are at the beginning of post or in spam mode\n * - put a space after emoji if there isn't one already unless we are\n * in spam mode\n *\n * The idea is that when you put a cursor somewhere in between sentence\n * inserting just ' :emoji: ' will add more spaces to post which might\n * break the flow/spacing, as well as the case where user ends sentence\n * with a space before adding emoji.\n *\n * Spam mode is intended for creating multi-part emojis and overall spamming\n * them, masto seem to be rendering :emoji::emoji: correctly now so why not\n */\n const isSpaceRegex = /\\s/\n const spaceBefore = (surroundingSpace && !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0) ? ' ' : ''\n const spaceAfter = (surroundingSpace && !isSpaceRegex.exec(after[0]) && this.padEmoji) ? ' ' : ''\n\n const newValue = [\n before,\n spaceBefore,\n insertion,\n spaceAfter,\n after\n ].join('')\n this.$emit('update:modelValue', newValue)\n const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n if (!keepOpen) {\n this.input.focus()\n }\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n },\n replaceText (e, suggestion) {\n const len = this.suggestions.length || 0\n if (this.textAtCaret.length === 1) { return }\n if (len > 0 || suggestion) {\n const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n const replacement = chosenSuggestion.replacement\n const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n this.$emit('update:modelValue', newValue)\n this.highlighted = 0\n const position = this.wordAtCaret.start + replacement.length\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n this.input.focus()\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n e.preventDefault()\n }\n },\n cycleBackward (e) {\n const len = this.suggestions.length || 0\n\n this.highlighted -= 1\n if (this.highlighted === -1) {\n this.input.focus()\n } else if (this.highlighted < -1) {\n this.highlighted = len - 1\n }\n if (len > 0) {\n e.preventDefault()\n }\n },\n cycleForward (e) {\n const len = this.suggestions.length || 0\n\n this.highlighted += 1\n if (this.highlighted >= len) {\n this.highlighted = -1\n this.input.focus()\n }\n if (len > 0) {\n e.preventDefault()\n }\n },\n scrollIntoView () {\n const rootRef = this.$refs.picker.$el\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n\n const scrollerBottomBorder = currentScroll + scrollerHeight\n // We check where the bottom border of root element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n // could also check top delta but there's no case for it\n const targetScroll = currentScroll + bottomDelta\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$nextTick(() => {\n const { offsetHeight } = this.input\n const { picker } = this.$refs\n const pickerBottom = picker.$el.getBoundingClientRect().bottom\n if (pickerBottom > window.innerHeight) {\n picker.$el.style.top = 'auto'\n picker.$el.style.bottom = offsetHeight + 'px'\n }\n })\n },\n onPickerShown () {\n this.pickerShown = true\n },\n onPickerClosed () {\n this.pickerShown = false\n },\n onBlur (e) {\n // Clicking on any suggestion removes focus from autocomplete,\n // preventing click handler ever executing.\n this.blurTimeout = setTimeout(() => {\n this.focused = false\n this.setCaret(e)\n }, 200)\n },\n onClick (e, suggestion) {\n this.replaceText(e, suggestion)\n },\n onFocus (e) {\n if (this.blurTimeout) {\n clearTimeout(this.blurTimeout)\n this.blurTimeout = null\n }\n\n this.focused = true\n this.setCaret(e)\n this.temporarilyHideSuggestions = false\n },\n onKeyUp (e) {\n const { key } = e\n this.setCaret(e)\n\n // Setting hider in keyUp to prevent suggestions from blinking\n // when moving away from suggested spot\n if (key === 'Escape') {\n this.temporarilyHideSuggestions = true\n } else {\n this.temporarilyHideSuggestions = false\n }\n },\n onPaste (e) {\n this.setCaret(e)\n },\n onKeyDown (e) {\n const { ctrlKey, shiftKey, key } = e\n if (this.newlineOnCtrlEnter && ctrlKey && key === 'Enter') {\n this.insert({ insertion: '\\n', surroundingSpace: false })\n // Ensure only one new line is added on macos\n e.stopPropagation()\n e.preventDefault()\n\n // Scroll the input element to the position of the cursor\n this.$nextTick(() => {\n this.input.blur()\n this.input.focus()\n })\n }\n // Disable suggestions hotkeys if suggestions are hidden\n if (!this.temporarilyHideSuggestions) {\n if (key === 'Tab') {\n if (shiftKey) {\n this.cycleBackward(e)\n } else {\n this.cycleForward(e)\n }\n }\n if (key === 'ArrowUp') {\n this.cycleBackward(e)\n } else if (key === 'ArrowDown') {\n this.cycleForward(e)\n }\n if (key === 'Enter') {\n if (!ctrlKey) {\n this.replaceText(e)\n }\n }\n }\n // Probably add optional keyboard controls for emoji picker?\n\n // Escape hides suggestions, if suggestions are hidden it\n // de-focuses the element (i.e. default browser behavior)\n if (key === 'Escape') {\n if (!this.temporarilyHideSuggestions) {\n this.input.focus()\n }\n }\n },\n onInput (e) {\n this.setCaret(e)\n this.$emit('update:modelValue', e.target.value)\n },\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-Failed', e)\n },\n setCaret ({ target: { selectionStart } }) {\n this.caret = selectionStart\n this.$nextTick(() => {\n this.$refs.suggestorPopover.updateStyles()\n })\n },\n resize () {\n },\n autoCompleteItemLabel (suggestion) {\n if (suggestion.user) {\n return suggestion.displayText + ' ' + suggestion.detailText\n } else {\n return this.maybeLocalizedEmojiName(suggestion)\n }\n }\n }\n}\n\nexport default EmojiInput\n","import { render } from \"./emoji_input.vue?vue&type=template&id=401ef83a\"\nimport script from \"./emoji_input.js?vue&type=script&lang=js\"\nexport * from \"./emoji_input.js?vue&type=script&lang=js\"\n\nimport \"./emoji_input.vue?vue&type=style&index=0&id=401ef83a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n ref=\"popover\"\n trigger=\"click\"\n popover-class=\"emoji-picker popover-default\"\n :trigger-attrs=\"{ 'aria-hidden': true, tabindex: -1 }\"\n @show=\"onPopoverShown\"\n @close=\"onPopoverClosed\"\n >\n <template #content>\n <div class=\"heading\">\n <!--\n Body scroll lock needs to be on every scrollable element on safari iOS.\n Here we tell it to enable scrolling for this element.\n See https://github.com/willmcpo/body-scroll-lock#vanilla-js\n -->\n <span\n ref=\"header\"\n v-body-scroll-lock=\"isInModal\"\n class=\"emoji-tabs\"\n >\n <span\n v-for=\"group in filteredEmojiGroups\"\n :ref=\"setGroupRef('group-header-' + group.id)\"\n :key=\"group.id\"\n class=\"emoji-tabs-item\"\n :class=\"{\n active: activeGroupView === group.id\n }\"\n :title=\"group.text\"\n role=\"button\"\n @click.prevent=\"highlight(group.id)\"\n >\n <span\n v-if=\"group.image\"\n class=\"emoji-picker-header-image\"\n >\n <still-image\n :alt=\"group.text\"\n :src=\"group.image\"\n />\n </span>\n <FAIcon\n v-else\n :icon=\"group.icon\"\n fixed-width\n />\n </span>\n </span>\n <span\n v-if=\"stickerPickerEnabled\"\n class=\"additional-tabs\"\n >\n <span\n class=\"stickers-tab-icon additional-tabs-item\"\n :class=\"{active: showingStickers}\"\n :title=\"$t('emoji.stickers')\"\n @click.prevent=\"toggleStickers\"\n >\n <FAIcon\n icon=\"sticky-note\"\n fixed-width\n />\n </span>\n </span>\n </div>\n <div\n v-if=\"contentLoaded\"\n class=\"content\"\n >\n <div\n class=\"emoji-content\"\n :class=\"{hidden: showingStickers}\"\n >\n <div class=\"emoji-search\">\n <input\n ref=\"search\"\n v-model=\"keyword\"\n type=\"text\"\n class=\"form-control\"\n :placeholder=\"$t('emoji.search_emoji')\"\n @input=\"$event.target.composing = false\"\n >\n </div>\n <!-- Enables scrolling for this element on safari iOS. See comments for header. -->\n <DynamicScroller\n ref=\"emoji-groups\"\n v-body-scroll-lock=\"isInModal\"\n class=\"emoji-groups\"\n :class=\"groupsScrolledClass\"\n :min-item-size=\"minItemSize\"\n :items=\"emojiItems\"\n :emit-update=\"true\"\n @update=\"onScroll\"\n @visible=\"recalculateItemPerRow\"\n @resize=\"recalculateItemPerRow\"\n >\n <template #default=\"{ item: group, index, active }\">\n <DynamicScrollerItem\n :ref=\"setGroupRef('group-' + group.id)\"\n :item=\"group\"\n :active=\"active\"\n :data-index=\"index\"\n :size-dependencies=\"[group.emojis.length]\"\n >\n <div\n class=\"emoji-group\"\n >\n <h6\n v-if=\"group.isFirstRow\"\n class=\"emoji-group-title\"\n >\n {{ group.text }}\n </h6>\n <span\n v-for=\"emoji in group.emojis\"\n :key=\"group.id + emoji.displayText\"\n :title=\"maybeLocalizedEmojiName(emoji)\"\n class=\"emoji-item\"\n role=\"button\"\n @click.stop.prevent=\"onEmoji(emoji)\"\n >\n <span\n v-if=\"!emoji.imageUrl\"\n class=\"emoji-picker-emoji -unicode\"\n >{{ emoji.replacement }}</span>\n <still-image\n v-else\n class=\"emoji-picker-emoji -custom\"\n loading=\"lazy\"\n :alt=\"maybeLocalizedEmojiName(emoji)\"\n :src=\"emoji.imageUrl\"\n :data-emoji-name=\"group.id + emoji.displayText\"\n />\n </span>\n </div>\n </DynamicScrollerItem>\n </template>\n </DynamicScroller>\n <div class=\"keep-open\">\n <Checkbox v-model=\"keepOpen\">\n {{ $t('emoji.keep_open') }}\n </Checkbox>\n </div>\n </div>\n <div\n v-if=\"showingStickers\"\n class=\"stickers-content\"\n >\n <sticker-picker\n @uploaded=\"onStickerUploaded\"\n @upload-failed=\"onStickerUploadFailed\"\n />\n </div>\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./emoji_picker.js\"></script>\n<style lang=\"scss\" src=\"./emoji_picker.scss\"></style>\n","import { defineAsyncComponent } from 'vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Popover from 'src/components/popover/popover.vue'\nimport StillImage from '../still-image/still-image.vue'\nimport { ensureFinalFallback } from '../../i18n/languages.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBoxOpen,\n faStickyNote,\n faSmileBeam,\n faSmile,\n faUser,\n faPaw,\n faIceCream,\n faBus,\n faBasketballBall,\n faLightbulb,\n faCode,\n faFlag\n} from '@fortawesome/free-solid-svg-icons'\nimport { debounce, trim, chunk } from 'lodash'\n\nlibrary.add(\n faBoxOpen,\n faStickyNote,\n faSmileBeam,\n faSmile,\n faUser,\n faPaw,\n faIceCream,\n faBus,\n faBasketballBall,\n faLightbulb,\n faCode,\n faFlag\n)\n\nconst UNICODE_EMOJI_GROUP_ICON = {\n 'smileys-and-emotion': 'smile',\n 'people-and-body': 'user',\n 'animals-and-nature': 'paw',\n 'food-and-drink': 'ice-cream',\n 'travel-and-places': 'bus',\n activities: 'basketball-ball',\n objects: 'lightbulb',\n symbols: 'code',\n flags: 'flag'\n}\n\nconst maybeLocalizedKeywords = (emoji, languages, nameLocalizer) => {\n const res = [emoji.displayText, nameLocalizer(emoji)]\n if (emoji.annotations) {\n languages.forEach(lang => {\n const keywords = emoji.annotations[lang]?.keywords || []\n const name = emoji.annotations[lang]?.name\n res.push(...(keywords.concat([name]).filter(k => k)))\n })\n }\n return res\n}\n\nconst filterByKeyword = (list, keyword = '', languages, nameLocalizer) => {\n if (keyword === '') return list\n\n const keywordLowercase = keyword.toLowerCase()\n const orderedEmojiList = []\n for (const emoji of list) {\n const indices = maybeLocalizedKeywords(emoji, languages, nameLocalizer)\n .map(k => k.toLowerCase().indexOf(keywordLowercase))\n .filter(k => k > -1)\n\n const indexOfKeyword = indices.length ? Math.min(...indices) : -1\n\n if (indexOfKeyword > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n orderedEmojiList[indexOfKeyword] = []\n }\n orderedEmojiList[indexOfKeyword].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n}\n\nconst getOffset = (elem) => {\n const style = elem.style.transform\n const res = /translateY\\((\\d+)px\\)/.exec(style)\n if (!res) { return 0 }\n return res[1]\n}\n\nconst toHeaderId = id => {\n return id.replace(/^row-\\d+-/, '')\n}\n\nconst EmojiPicker = {\n props: {\n enableStickerPicker: {\n required: false,\n type: Boolean,\n default: false\n },\n hideCustomEmoji: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n inject: ['popoversZLayer'],\n data () {\n return {\n keyword: '',\n activeGroup: 'custom',\n showingStickers: false,\n groupsScrolledClass: 'scrolled-top',\n keepOpen: false,\n customEmojiTimeout: null,\n // Lazy-load only after the first time `showing` becomes true.\n contentLoaded: false,\n groupRefs: {},\n emojiRefs: {},\n filteredEmojiGroups: [],\n width: 0\n }\n },\n components: {\n StickerPicker: defineAsyncComponent(() => import('../sticker_picker/sticker_picker.vue')),\n Checkbox,\n StillImage,\n Popover\n },\n methods: {\n showPicker () {\n this.$refs.popover.showPopover()\n this.onShowing()\n },\n hidePicker () {\n this.$refs.popover.hidePopover()\n },\n setAnchorEl (el) {\n this.$refs.popover.setAnchorEl(el)\n },\n setGroupRef (name) {\n return el => { this.groupRefs[name] = el }\n },\n onPopoverShown () {\n this.$emit('show')\n },\n onPopoverClosed () {\n this.$emit('close')\n },\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-failed', e)\n },\n onEmoji (emoji) {\n const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n if (!this.keepOpen) {\n this.$refs.popover.hidePopover()\n }\n this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n },\n onScroll (startIndex, endIndex, visibleStartIndex, visibleEndIndex) {\n const target = this.$refs['emoji-groups'].$el\n this.scrolledGroup(target, visibleStartIndex, visibleEndIndex)\n },\n scrolledGroup (target, start, end) {\n const top = target.scrollTop + 5\n this.$nextTick(() => {\n this.emojiItems.slice(start, end + 1).forEach(group => {\n const headerId = toHeaderId(group.id)\n const ref = this.groupRefs['group-' + group.id]\n if (!ref) { return }\n const elem = ref.$el.parentElement\n if (!elem) { return }\n if (elem && getOffset(elem) <= top) {\n this.activeGroup = headerId\n }\n })\n this.scrollHeader()\n })\n },\n scrollHeader () {\n // Scroll the active tab's header into view\n const headerRef = this.groupRefs['group-header-' + this.activeGroup]\n const left = headerRef.offsetLeft\n const right = left + headerRef.offsetWidth\n const headerCont = this.$refs.header\n const currentScroll = headerCont.scrollLeft\n const currentScrollRight = currentScroll + headerCont.clientWidth\n const setScroll = s => { headerCont.scrollLeft = s }\n\n const margin = 7 // .emoji-tabs-item: padding\n if (left - margin < currentScroll) {\n setScroll(left - margin)\n } else if (right + margin > currentScrollRight) {\n setScroll(right + margin - headerCont.clientWidth)\n }\n },\n highlight (groupId) {\n this.setShowStickers(false)\n const indexInList = this.emojiItems.findIndex(k => k.id === groupId)\n this.$refs['emoji-groups'].scrollToItem(indexInList)\n },\n updateScrolledClass (target) {\n if (target.scrollTop <= 5) {\n this.groupsScrolledClass = 'scrolled-top'\n } else if (target.scrollTop >= target.scrollTopMax - 5) {\n this.groupsScrolledClass = 'scrolled-bottom'\n } else {\n this.groupsScrolledClass = 'scrolled-middle'\n }\n },\n toggleStickers () {\n this.showingStickers = !this.showingStickers\n },\n setShowStickers (value) {\n this.showingStickers = value\n },\n filterByKeyword (list, keyword) {\n return filterByKeyword(list, keyword, this.languages, this.maybeLocalizedEmojiName)\n },\n onShowing () {\n const oldContentLoaded = this.contentLoaded\n this.recalculateItemPerRow()\n this.$nextTick(() => {\n this.$refs.search.focus()\n })\n this.contentLoaded = true\n this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n if (!oldContentLoaded) {\n this.$nextTick(() => {\n if (this.defaultGroup) {\n this.highlight(this.defaultGroup)\n }\n })\n }\n },\n getFilteredEmojiGroups () {\n return this.allEmojiGroups\n .map(group => ({\n ...group,\n emojis: this.filterByKeyword(group.emojis, trim(this.keyword))\n }))\n .filter(group => group.emojis.length > 0)\n },\n recalculateItemPerRow () {\n this.$nextTick(() => {\n if (!this.$refs['emoji-groups']) {\n return\n }\n this.width = this.$refs['emoji-groups'].$el.clientWidth\n })\n }\n },\n watch: {\n keyword () {\n this.onScroll()\n this.debouncedHandleKeywordChange()\n },\n allCustomGroups () {\n this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n }\n },\n computed: {\n minItemSize () {\n return this.emojiHeight\n },\n emojiHeight () {\n return 32 + 4\n },\n emojiWidth () {\n return 32 + 4\n },\n itemPerRow () {\n return this.width ? Math.floor(this.width / this.emojiWidth - 1) : 6\n },\n activeGroupView () {\n return this.showingStickers ? '' : this.activeGroup\n },\n stickersAvailable () {\n if (this.$store.state.instance.stickers) {\n return this.$store.state.instance.stickers.length > 0\n }\n return 0\n },\n allCustomGroups () {\n if (this.hideCustomEmoji) {\n return {}\n }\n const emojis = this.$store.getters.groupedCustomEmojis\n if (emojis.unpacked) {\n emojis.unpacked.text = this.$t('emoji.unpacked')\n }\n return emojis\n },\n defaultGroup () {\n return Object.keys(this.allCustomGroups)[0]\n },\n unicodeEmojiGroups () {\n return this.$store.getters.standardEmojiGroupList.map(group => ({\n id: `standard-${group.id}`,\n text: this.$t(`emoji.unicode_groups.${group.id}`),\n icon: UNICODE_EMOJI_GROUP_ICON[group.id],\n emojis: group.emojis\n }))\n },\n allEmojiGroups () {\n return Object.entries(this.allCustomGroups)\n .map(([_, v]) => v)\n .concat(this.unicodeEmojiGroups)\n },\n stickerPickerEnabled () {\n return (this.$store.state.instance.stickers || []).length !== 0\n },\n debouncedHandleKeywordChange () {\n return debounce(() => {\n this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n }, 500)\n },\n emojiItems () {\n return this.filteredEmojiGroups.map(group =>\n chunk(group.emojis, this.itemPerRow)\n .map((items, index) => ({\n ...group,\n id: index === 0 ? group.id : `row-${index}-${group.id}`,\n emojis: items,\n isFirstRow: index === 0\n })))\n .reduce((a, c) => a.concat(c), [])\n },\n languages () {\n return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)\n },\n maybeLocalizedEmojiName () {\n return emoji => {\n if (!emoji.annotations) {\n return emoji.displayText\n }\n\n if (emoji.displayTextI18n) {\n return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)\n }\n\n for (const lang of this.languages) {\n if (emoji.annotations[lang]?.name) {\n return emoji.annotations[lang].name\n }\n }\n\n return emoji.displayText\n }\n },\n isInModal () {\n return this.popoversZLayer === 'modals'\n }\n }\n}\n\nexport default EmojiPicker\n","import { render } from \"./emoji_picker.vue?vue&type=template&id=81286978\"\nimport script from \"./emoji_picker.js?vue&type=script&lang=js\"\nexport * from \"./emoji_picker.js?vue&type=script&lang=js\"\n\nimport \"./emoji_picker.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const createRuffleService = () => {\n let ruffleInstance = null\n\n const getRuffle = () => new Promise((resolve, reject) => {\n if (ruffleInstance) {\n resolve(ruffleInstance)\n return\n }\n // Ruffle needs these to be set before it's loaded\n // https://github.com/ruffle-rs/ruffle/issues/3952\n window.RufflePlayer = {}\n window.RufflePlayer.config = {\n polyfills: false,\n publicPath: '/static/ruffle'\n }\n\n // Currently it's seems like a better way of loading ruffle\n // because it needs the wasm publically accessible, but it needs path to it\n // and filename of wasm seems to be pseudo-randomly generated (is it a hash?)\n const script = document.createElement('script')\n // see webpack config, using CopyPlugin to copy it from node_modules\n // provided via ruffle-mirror\n script.src = '/static/ruffle/ruffle.js'\n script.type = 'text/javascript'\n script.onerror = (e) => { reject(e) }\n script.onabort = (e) => { reject(e) }\n script.oncancel = (e) => { reject(e) }\n script.onload = () => {\n ruffleInstance = window.RufflePlayer\n resolve(ruffleInstance)\n }\n document.body.appendChild(script)\n })\n\n return { getRuffle }\n}\n\nconst RuffleService = createRuffleService()\n\nexport default RuffleService\n","<template>\n <div class=\"Flash\">\n <div\n v-if=\"player === true || player === 'hidden'\"\n ref=\"container\"\n class=\"player\"\n :class=\"{ hidden: player === 'hidden' }\"\n />\n <button\n v-if=\"player !== true\"\n class=\"button-unstyled placeholder\"\n @click=\"openPlayer\"\n >\n <span\n v-if=\"player === 'hidden'\"\n class=\"label\"\n >\n {{ $t('general.loading') }}\n </span>\n <span\n v-if=\"player === 'error'\"\n class=\"label\"\n >\n {{ $t('general.flash_fail') }}\n </span>\n <span\n v-else\n class=\"label\"\n >\n <p>\n {{ $t('general.flash_content') }}\n </p>\n <p>\n <FAIcon icon=\"exclamation-triangle\" />\n {{ $t('general.flash_security') }}\n </p>\n </span>\n </button>\n </div>\n</template>\n\n<script src=\"./flash.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Flash {\n display: inline-block;\n width: 100%;\n height: 100%;\n position: relative;\n\n .player {\n height: 100%;\n width: 100%;\n }\n\n .placeholder {\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--bg);\n color: var(--link);\n }\n\n .hider {\n top: 0;\n }\n\n .label {\n text-align: center;\n flex: 1 1 0;\n line-height: 1.2;\n white-space: normal;\n word-wrap: normal;\n }\n\n .hidden {\n display: none;\n visibility: \"hidden\";\n }\n}\n</style>\n","import RuffleService from '../../services/ruffle_service/ruffle_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faStop,\n faExclamationTriangle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faStop,\n faExclamationTriangle\n)\n\nconst Flash = {\n props: ['src'],\n data () {\n return {\n player: false, // can be true, \"hidden\", false. hidden = element exists\n loaded: false,\n ruffleInstance: null\n }\n },\n methods: {\n openPlayer () {\n if (this.player) return // prevent double-loading, or re-loading on failure\n this.player = 'hidden'\n RuffleService.getRuffle().then((ruffle) => {\n const player = ruffle.newest().createPlayer()\n player.config = {\n letterbox: 'on'\n }\n const container = this.$refs.container\n container.appendChild(player)\n player.style.width = '100%'\n player.style.height = '100%'\n player.load(this.src).then(() => {\n this.player = true\n }).catch((e) => {\n console.error('Error loading ruffle', e)\n this.player = 'error'\n })\n this.ruffleInstance = player\n this.$emit('playerOpened')\n })\n },\n closePlayer () {\n this.ruffleInstance && this.ruffleInstance.remove()\n this.player = false\n this.$emit('playerClosed')\n }\n }\n}\n\nexport default Flash\n","import { render } from \"./flash.vue?vue&type=template&id=651ce37d\"\nimport script from \"./flash.js?vue&type=script&lang=js\"\nexport * from \"./flash.js?vue&type=script&lang=js\"\n\nimport \"./flash.vue?vue&type=style&index=0&id=651ce37d&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const fetchRelationship = (attempt, userId, store) => new Promise((resolve, reject) => {\n setTimeout(() => {\n store.state.api.backendInteractor.fetchUserRelationship({ id: userId })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n return relationship\n })\n .then((relationship) => resolve([relationship.following, relationship.requested, relationship.locked, attempt]))\n .catch((e) => reject(e))\n }, 500)\n}).then(([following, sent, locked, attempt]) => {\n if (!following && !(locked && sent) && attempt <= 3) {\n // If we BE reports that we still not following that user - retry,\n // increment attempts by one\n fetchRelationship(++attempt, userId, store)\n }\n})\n\nexport const requestFollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.followUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n\n if (updated.following || (updated.locked && updated.requested)) {\n // If we get result immediately or the account is locked, just stop.\n resolve()\n return\n }\n\n // But usually we don't get result immediately, so we ask server\n // for updated user profile to confirm if we are following them\n // Sometimes it takes several tries. Sometimes we end up not following\n // user anyway, probably because they locked themselves and we\n // don't know that yet.\n // Recursive Promise, it will call itself up to 3 times.\n\n return fetchRelationship(1, updated, store)\n .then(() => {\n resolve()\n })\n })\n})\n\nexport const requestUnfollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.unfollowUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n resolve({\n updated\n })\n })\n})\n","import ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n props: ['relationship', 'user', 'labelFollowing', 'buttonClass'],\n components: {\n ConfirmModal\n },\n data () {\n return {\n inProgress: false,\n showingConfirmUnfollow: false\n }\n },\n computed: {\n shouldConfirmUnfollow () {\n return this.$store.getters.mergedConfig.modalOnUnfollow\n },\n isPressed () {\n return this.inProgress || this.relationship.following\n },\n title () {\n if (this.inProgress || this.relationship.following) {\n return this.$t('user_card.follow_unfollow')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_cancel')\n } else {\n return this.$t('user_card.follow')\n }\n },\n label () {\n if (this.inProgress) {\n return this.$t('user_card.follow_progress')\n } else if (this.relationship.following) {\n return this.labelFollowing || this.$t('user_card.following')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_sent')\n } else {\n return this.$t('user_card.follow')\n }\n },\n disabled () {\n return this.inProgress || this.user.deactivated\n }\n },\n methods: {\n showConfirmUnfollow () {\n this.showingConfirmUnfollow = true\n },\n hideConfirmUnfollow () {\n this.showingConfirmUnfollow = false\n },\n onClick () {\n this.relationship.following || this.relationship.requested ? this.unfollow() : this.follow()\n },\n follow () {\n this.inProgress = true\n requestFollow(this.relationship.id, this.$store).then(() => {\n this.inProgress = false\n })\n },\n unfollow () {\n if (this.shouldConfirmUnfollow) {\n this.showConfirmUnfollow()\n } else {\n this.doUnfollow()\n }\n },\n doUnfollow () {\n const store = this.$store\n this.inProgress = true\n requestUnfollow(this.relationship.id, store).then(() => {\n this.inProgress = false\n store.commit('removeStatus', { timeline: 'friends', userId: this.relationship.id })\n })\n\n this.hideConfirmUnfollow()\n }\n }\n}\n","import { render } from \"./follow_button.vue?vue&type=template&id=6a0717e7\"\nimport script from \"./follow_button.js?vue&type=script&lang=js\"\nexport * from \"./follow_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n class=\"btn button-default follow-button\"\n :class=\"{ toggled: isPressed }\"\n :disabled=\"disabled\"\n :title=\"title\"\n @click=\"onClick\"\n >\n {{ label }}\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmUnfollow\"\n :title=\"$t('user_card.unfollow_confirm_title')\"\n :confirm-text=\"$t('user_card.unfollow_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.unfollow_confirm_cancel_button')\"\n @accepted=\"doUnfollow\"\n @cancelled=\"hideConfirmUnfollow\"\n >\n <i18n-t\n keypath=\"user_card.unfollow_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n </button>\n</template>\n\n<script src=\"./follow_button.js\"></script>\n","<template>\n <div\n ref=\"galleryContainer\"\n class=\"Gallery\"\n :class=\"{ '-long': tooManyAttachments && hidingLong }\"\n >\n <div class=\"gallery-rows\">\n <div\n v-for=\"(row, rowIndex) in rows\"\n :key=\"rowIndex\"\n class=\"gallery-row\"\n :style=\"rowStyle(row)\"\n :class=\"{ '-audio': row.audio, '-minimal': row.minimal, '-grid': grid }\"\n >\n <div\n class=\"gallery-row-inner\"\n :class=\"{ '-grid': grid }\"\n >\n <Attachment\n v-for=\"(attachment, attachmentIndex) in row.items\"\n :key=\"attachment.id\"\n class=\"gallery-item\"\n :compact=\"compact\"\n :nsfw=\"nsfw\"\n :attachment=\"attachment\"\n :size=\"size\"\n :editable=\"editable\"\n :remove=\"removeAttachment\"\n :shift-up=\"!(attachmentIndex === 0 && rowIndex === 0) && shiftUpAttachment\"\n :shift-dn=\"!(attachmentIndex === row.items.length - 1 && rowIndex === rows.length - 1) && shiftDnAttachment\"\n :edit=\"editAttachment\"\n :description=\"descriptions && descriptions[attachment.id]\"\n :hide-description=\"size === 'small' || tooManyAttachments && hidingLong\"\n :style=\"itemStyle(attachment.id, row.items)\"\n @setMedia=\"onMedia\"\n @naturalSizeLoad=\"onNaturalSizeLoad\"\n />\n </div>\n </div>\n </div>\n <div\n v-if=\"tooManyAttachments\"\n class=\"many-attachments\"\n >\n <div class=\"many-attachments-text\">\n {{ $t(\"status.many_attachments\", { number: attachments.length }) }}\n </div>\n <div class=\"many-attachments-buttons\">\n <span\n v-if=\"!hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"toggleHidingLong(true)\"\n >\n {{ $t(\"status.collapse_attachments\") }}\n </button>\n </span>\n <span\n v-if=\"hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"toggleHidingLong(false)\"\n >\n {{ $t(\"status.show_all_attachments\") }}\n </button>\n </span>\n <span\n v-if=\"hidingLong\"\n class=\"many-attachments-button\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"openGallery\"\n >\n {{ $t(\"status.open_gallery\") }}\n </button>\n </span>\n </div>\n </div>\n </div>\n</template>\n\n<script src='./gallery.js'></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Gallery {\n .gallery-rows {\n display: flex;\n flex-direction: column;\n }\n\n .gallery-row {\n position: relative;\n height: 0;\n width: 100%;\n flex-grow: 1;\n\n .gallery-row-inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-flow: row wrap;\n align-content: stretch;\n\n .gallery-item {\n margin: 0 0.5em 0 0;\n flex-grow: 1;\n height: 100%;\n box-sizing: border-box;\n // to make failed images a bit more noticeable on chromium\n min-width: 2em;\n\n &:last-child {\n margin: 0;\n }\n }\n\n &.-grid {\n width: 100%;\n height: auto;\n position: relative;\n display: grid;\n grid-gap: 0.5em;\n grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));\n\n .gallery-item {\n margin: 0;\n height: 200px;\n }\n }\n }\n\n &.-grid,\n &.-minimal {\n height: auto;\n\n .gallery-row-inner {\n position: relative;\n }\n }\n\n &:not(:first-child) {\n margin-top: 0.5em;\n }\n }\n\n &.-long {\n .gallery-rows {\n max-height: 25em;\n overflow: hidden;\n mask:\n linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n linear-gradient(to top, white, white);\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n }\n }\n\n .many-attachments-text {\n text-align: center;\n line-height: 2;\n }\n\n .many-attachments-buttons {\n display: flex;\n }\n\n .many-attachments-button {\n display: flex;\n flex: 1;\n justify-content: center;\n line-height: 2;\n\n button {\n padding: 0 2em;\n }\n }\n}\n</style>\n","import Attachment from '../attachment/attachment.vue'\nimport { sumBy, set } from 'lodash'\n\nconst Gallery = {\n props: [\n 'attachments',\n 'compact',\n 'limitRows',\n 'descriptions',\n 'limit',\n 'nsfw',\n 'setMedia',\n 'size',\n 'editable',\n 'removeAttachment',\n 'shiftUpAttachment',\n 'shiftDnAttachment',\n 'editAttachment',\n 'grid'\n ],\n data () {\n return {\n sizes: {},\n hidingLong: true\n }\n },\n components: { Attachment },\n computed: {\n rows () {\n if (!this.attachments) {\n return []\n }\n const attachments = this.limit > 0\n ? this.attachments.slice(0, this.limit)\n : this.attachments\n if (this.size === 'hide') {\n return attachments.map(item => ({ minimal: true, items: [item] }))\n }\n const rows = this.grid\n ? [{ grid: true, items: attachments }]\n : attachments.reduce((acc, attachment, i) => {\n if (attachment.mimetype.includes('audio')) {\n return [...acc, { audio: true, items: [attachment] }, { items: [] }]\n }\n if (!(\n attachment.mimetype.includes('image') ||\n attachment.mimetype.includes('video') ||\n attachment.mimetype.includes('flash')\n )) {\n return [...acc, { minimal: true, items: [attachment] }, { items: [] }]\n }\n const maxPerRow = 3\n const attachmentsRemaining = this.attachments.length - i + 1\n const currentRow = acc[acc.length - 1].items\n currentRow.push(attachment)\n if (currentRow.length >= maxPerRow && attachmentsRemaining > maxPerRow) {\n return [...acc, { items: [] }]\n } else {\n return acc\n }\n }, [{ items: [] }]).filter(_ => _.items.length > 0)\n return rows\n },\n attachmentsDimensionalScore () {\n return this.rows.reduce((acc, row) => {\n let size = 0\n if (row.minimal) {\n size += 1 / 8\n } else if (row.audio) {\n size += 1 / 4\n } else {\n size += 1 / (row.items.length + 0.6)\n }\n return acc + size\n }, 0)\n },\n tooManyAttachments () {\n if (this.editable || this.size === 'small') {\n return false\n } else if (this.size === 'hide') {\n return this.attachments.length > 8\n } else {\n return this.attachmentsDimensionalScore > 1\n }\n }\n },\n methods: {\n onNaturalSizeLoad ({ id, width, height }) {\n set(this.sizes, id, { width, height })\n },\n rowStyle (row) {\n if (row.audio) {\n return { 'padding-bottom': '25%' } // fixed reduced height for audio\n } else if (!row.minimal && !row.grid) {\n return { 'padding-bottom': `${(100 / (row.items.length + 0.6))}%` }\n }\n },\n itemStyle (id, row) {\n const total = sumBy(row, item => this.getAspectRatio(item.id))\n return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n },\n getAspectRatio (id) {\n const size = this.sizes[id]\n return size ? size.width / size.height : 1\n },\n toggleHidingLong (event) {\n this.hidingLong = event\n },\n openGallery () {\n this.$store.dispatch('setMedia', this.attachments)\n this.$store.dispatch('setCurrentMedia', this.attachments[0])\n },\n onMedia () {\n this.$store.dispatch('setMedia', this.attachments)\n }\n }\n}\n\nexport default Gallery\n","import { render } from \"./gallery.vue?vue&type=template&id=3f62ea7c\"\nimport script from \"./gallery.js?vue&type=script&lang=js\"\nexport * from \"./gallery.js?vue&type=script&lang=js\"\n\nimport \"./gallery.vue?vue&type=style&index=0&id=3f62ea7c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"interface-language-switcher\">\n <label>\n {{ promptText }}\n </label>\n <ul class=\"setting-list\">\n <li\n v-for=\"index of controlledLanguage.keys()\"\n :key=\"index\"\n >\n <label>\n {{ index === 0 ? $t('settings.primary_language') : $tc('settings.fallback_language', index, { index }) }}\n <Select\n class=\"language-select\"\n :model-value=\"controlledLanguage[index]\"\n @update:modelValue=\"val => setLanguageAt(index, val)\"\n >\n <option\n v-for=\"lang in languages\"\n :key=\"lang.code\"\n :value=\"lang.code\"\n >\n {{ lang.name }}\n </option>\n </Select>\n </label>\n <button\n v-if=\"controlledLanguage.length > 1 && index !== 0\"\n class=\"button-default btn\"\n @click=\"() => removeLanguageAt(index)\"\n >\n {{ $t('settings.remove_language') }}\n </button>\n </li>\n <li>\n <button\n class=\"button-default btn\"\n @click=\"addLanguage\"\n >\n {{ $t('settings.add_language') }}\n </button>\n </li>\n </ul>\n </div>\n</template>\n\n<script>\nimport localeService from '../../services/locale/locale.service.js'\nimport Select from '../select/select.vue'\n\nexport default {\n components: {\n // eslint-disable-next-line vue/no-reserved-component-names\n Select\n },\n props: {\n promptText: {\n type: String,\n required: true\n },\n language: {\n type: [Array, String],\n required: true\n },\n setLanguage: {\n type: Function,\n required: true\n }\n },\n computed: {\n languages () {\n return localeService.languages\n },\n\n controlledLanguage: {\n get: function () {\n return Array.isArray(this.language) ? this.language : [this.language]\n },\n set: function (val) {\n this.setLanguage(val)\n }\n }\n },\n\n methods: {\n getLanguageName (code) {\n return localeService.getLanguageName(code)\n },\n addLanguage () {\n this.controlledLanguage = [...this.controlledLanguage, '']\n },\n setLanguageAt (index, val) {\n const lang = [...this.controlledLanguage]\n lang[index] = val\n this.controlledLanguage = lang\n },\n removeLanguageAt (index) {\n const lang = [...this.controlledLanguage]\n lang.splice(index, 1)\n this.controlledLanguage = lang\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.interface-language-switcher {\n .language-select {\n margin-right: 1em;\n }\n}\n</style>\n","import { render } from \"./interface_language_switcher.vue?vue&type=template&id=416a09f6\"\nimport script from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\nexport * from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\n\nimport \"./interface_language_switcher.vue?vue&type=style&index=0&id=416a09f6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div>\n <a\n class=\"link-preview-card\"\n :href=\"card.url\"\n target=\"_blank\"\n rel=\"noopener\"\n >\n <div\n v-if=\"useImage && imageLoaded\"\n class=\"card-image\"\n >\n <img :src=\"card.image\">\n </div>\n <div class=\"card-content\">\n <span class=\"card-host faint\">\n <span\n v-if=\"censored\"\n class=\"nsfw-alert alert warning\"\n >{{ $t('status.nsfw') }}</span>\n {{ card.provider_name }}\n </span>\n <h4 class=\"card-title\">{{ card.title }}</h4>\n <p\n v-if=\"useDescription\"\n class=\"card-description\"\n >{{ card.description }}</p>\n </div>\n </a>\n </div>\n</template>\n\n<script src=\"./link-preview.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.link-preview-card {\n display: flex;\n flex-direction: row;\n cursor: pointer;\n overflow: hidden;\n margin-top: 0.5em;\n\n .card-image {\n flex-shrink: 0;\n width: 120px;\n max-width: 25%;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n }\n }\n\n .card-content {\n max-height: 100%;\n margin: 0.5em;\n display: flex;\n flex-direction: column;\n }\n\n .card-host {\n font-size: 0.85em;\n }\n\n .card-description {\n margin: 0.5em 0 0;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-word;\n line-height: 1.2em;\n // cap description at 3 lines, the 1px is to clean up some stray pixels\n // TODO: fancier fade-out at the bottom to show off that it's too long?\n max-height: calc(1.2em * 3 - 1px);\n }\n\n .nsfw-alert {\n margin: 2em 0;\n }\n\n color: $fallback--text;\n color: var(--text, $fallback--text);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--attachmentRadius;\n border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n}\n</style>\n","import { mapGetters } from 'vuex'\n\nconst LinkPreview = {\n name: 'LinkPreview',\n props: [\n 'card',\n 'size',\n 'nsfw'\n ],\n data () {\n return {\n imageLoaded: false\n }\n },\n computed: {\n useImage () {\n // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n // as it makes sure to hide the image if somehow NSFW tagged preview can\n // exist.\n return this.card.image && !this.censored && this.size !== 'hide'\n },\n censored () {\n return this.nsfw && this.hideNsfwConfig\n },\n useDescription () {\n return this.card.description && /\\S/.test(this.card.description)\n },\n hideNsfwConfig () {\n return this.mergedConfig.hideNsfw\n },\n ...mapGetters([\n 'mergedConfig'\n ])\n },\n created () {\n if (this.useImage) {\n const newImg = new Image()\n newImg.onload = () => {\n this.imageLoaded = true\n }\n newImg.src = this.card.image\n }\n }\n}\n\nexport default LinkPreview\n","import { render } from \"./link-preview.vue?vue&type=template&id=5bb8ccfc\"\nimport script from \"./link-preview.js?vue&type=script&lang=js\"\nexport * from \"./link-preview.js?vue&type=script&lang=js\"\n\nimport \"./link-preview.vue?vue&type=style&index=0&id=5bb8ccfc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"list\"\n role=\"list\"\n >\n <div\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"list-item\"\n role=\"listitem\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n />\n </div>\n <div\n v-if=\"items.length === 0 && !!$slots.empty\"\n class=\"list-empty-content faint\"\n >\n <slot name=\"empty\" />\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n items: {\n type: Array,\n default: () => []\n },\n getKey: {\n type: Function,\n default: item => item.id\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.list {\n &-item:not(:last-child) {\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n\n &-empty-content {\n text-align: center;\n padding: 10px;\n }\n}\n</style>\n","import { render } from \"./list.vue?vue&type=template&id=033f777b\"\nimport script from \"./list.vue?vue&type=script&lang=js\"\nexport * from \"./list.vue?vue&type=script&lang=js\"\n\nimport \"./list.vue?vue&type=style&index=0&id=033f777b&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUpload,\n faCircleNotch\n)\n\nconst mediaUpload = {\n data () {\n return {\n uploadCount: 0,\n uploadReady: true\n }\n },\n computed: {\n uploading () {\n return this.uploadCount > 0\n }\n },\n methods: {\n onClick () {\n if (this.uploadReady) {\n this.$refs.input.click()\n }\n },\n uploadFile (file) {\n const self = this\n const store = this.$store\n if (file.size > store.state.instance.uploadlimit) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n return\n }\n const formData = new FormData()\n formData.append('file', file)\n\n self.$emit('uploading')\n self.uploadCount++\n\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n self.$emit('uploaded', fileData)\n self.decreaseUploadCount()\n }, (error) => {\n console.error('Error uploading file', error)\n self.$emit('upload-failed', 'default')\n self.decreaseUploadCount()\n })\n },\n decreaseUploadCount () {\n this.uploadCount--\n if (this.uploadCount === 0) {\n this.$emit('all-uploaded')\n }\n },\n clearFile () {\n this.uploadReady = false\n this.$nextTick(() => {\n this.uploadReady = true\n })\n },\n multiUpload (files) {\n for (const file of files) {\n this.uploadFile(file)\n }\n },\n change ({ target }) {\n this.multiUpload(target.files)\n }\n },\n props: {\n dropFiles: Object,\n disabled: Boolean,\n normalButton: Boolean,\n acceptTypes: {\n type: String,\n default: '*/*'\n }\n },\n watch: {\n dropFiles: function (fileInfos) {\n if (!this.uploading) {\n this.multiUpload(fileInfos)\n }\n }\n }\n}\n\nexport default mediaUpload\n","import { render } from \"./media_upload.vue?vue&type=template&id=f831fc74\"\nimport script from \"./media_upload.js?vue&type=script&lang=js\"\nexport * from \"./media_upload.js?vue&type=script&lang=js\"\n\nimport \"./media_upload.vue?vue&type=style&index=0&id=f831fc74&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n class=\"media-upload\"\n :class=\"[normalButton ? 'button-default btn' : 'button-unstyled', { disabled }]\"\n :title=\"$t('tool_tip.media_upload')\"\n @click=\"onClick\"\n >\n <FAIcon\n v-if=\"uploading\"\n class=\"progress-icon\"\n icon=\"circle-notch\"\n spin\n />\n <FAIcon\n v-if=\"!uploading\"\n class=\"new-icon\"\n icon=\"upload\"\n />\n <template v-if=\"normalButton\">\n {{ ' ' }}\n {{ uploading ? $t('general.loading') : $t('tool_tip.media_upload') }}\n </template>\n <input\n v-if=\"uploadReady\"\n ref=\"input\"\n class=\"hidden-input-file\"\n :disabled=\"disabled\"\n type=\"file\"\n multiple=\"true\"\n :accept=\"acceptTypes\"\n @change=\"change\"\n >\n </button>\n</template>\n\n<script src=\"./media_upload.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.media-upload {\n .hidden-input-file {\n display: none;\n }\n}\n\nlabel.media-upload {\n cursor: pointer; // We use <label> for interactivity... i wonder if it's fine\n}\n</style>\n","<template>\n <span\n class=\"MentionLink\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <a\n v-if=\"!user\"\n :href=\"url\"\n class=\"original\"\n target=\"_blank\"\n v-html=\"content\"\n /><!-- eslint-enable vue/no-v-html -->\n <UserPopover\n v-else\n :user-id=\"user.id\"\n :disabled=\"!shouldShowTooltip\"\n >\n <span\n v-if=\"user\"\n class=\"new\"\n :style=\"style\"\n :class=\"classnames\"\n >\n <a\n class=\"short button-unstyled\"\n :class=\"{ '-with-tooltip': shouldShowTooltip }\"\n :href=\"url\"\n @click.prevent=\"onClick\"\n >\n <!-- eslint-disable vue/no-v-html -->\n <UserAvatar\n v-if=\"shouldShowAvatar\"\n class=\"mention-avatar\"\n :user=\"user\"\n /><span\n class=\"shortName\"\n ><FAIcon\n v-if=\"useAtIcon\"\n size=\"sm\"\n icon=\"at\"\n class=\"at\"\n />{{ !useAtIcon ? '@' : '' }}<span\n class=\"userName\"\n v-html=\"userName\"\n /><span\n v-if=\"shouldShowFullUserName\"\n class=\"serverName\"\n :class=\"{ '-faded': shouldFadeDomain }\"\n v-html=\"'@' + serverName\"\n /><UnicodeDomainIndicator\n v-if=\"shouldShowFullUserName\"\n :user=\"user\"\n />\n </span>\n <span\n v-if=\"isYou && shouldShowYous\"\n :class=\"{ '-you': shouldBoldenYou }\"\n > {{ ' ' + $t('status.you') }}</span>\n <!-- eslint-enable vue/no-v-html -->\n </a><span\n ref=\"full\"\n class=\"full\"\n >\n <!-- eslint-disable vue/no-v-html -->\n @<span v-html=\"userName\" /><span v-html=\"'@' + serverName\" />\n <!-- eslint-enable vue/no-v-html -->\n </span>\n </span>\n </UserPopover>\n </span>\n</template>\n\n<script src=\"./mention_link.js\" />\n\n<style lang=\"scss\" src=\"./mention_link.scss\" />\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters, mapState } from 'vuex'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport { defineAsyncComponent } from 'vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faAt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faAt\n)\n\nconst MentionLink = {\n name: 'MentionLink',\n components: {\n UserAvatar,\n UnicodeDomainIndicator,\n UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n },\n props: {\n url: {\n required: true,\n type: String\n },\n content: {\n required: true,\n type: String\n },\n userId: {\n required: false,\n type: String\n },\n userScreenName: {\n required: false,\n type: String\n }\n },\n data () {\n return {\n hasSelection: false\n }\n },\n methods: {\n onClick () {\n if (this.shouldShowTooltip) return\n const link = generateProfileLink(\n this.userId || this.user.id,\n this.userScreenName || this.user.screen_name\n )\n this.$router.push(link)\n },\n handleSelection () {\n this.hasSelection = document.getSelection().containsNode(this.$refs.full, true)\n }\n },\n mounted () {\n document.addEventListener('selectionchange', this.handleSelection)\n },\n unmounted () {\n document.removeEventListener('selectionchange', this.handleSelection)\n },\n computed: {\n user () {\n return this.url && this.$store && this.$store.getters.findUserByUrl(this.url)\n },\n isYou () {\n // FIXME why user !== currentUser???\n return this.user && this.user.id === this.currentUser.id\n },\n userName () {\n return this.user && this.userNameFullUi.split('@')[0]\n },\n serverName () {\n // XXX assumed that domain does not contain @\n return this.user && (this.userNameFullUi.split('@')[1] || this.$store.getters.instanceDomain)\n },\n userNameFull () {\n return this.user && this.user.screen_name\n },\n userNameFullUi () {\n return this.user && this.user.screen_name_ui\n },\n highlight () {\n return this.user && this.mergedConfig.highlight[this.user.screen_name]\n },\n highlightType () {\n return this.highlight && ('-' + this.highlight.type)\n },\n highlightClass () {\n if (this.highlight) return highlightClass(this.user)\n },\n style () {\n if (this.highlight) {\n const {\n backgroundColor,\n backgroundPosition,\n backgroundImage,\n ...rest\n } = highlightStyle(this.highlight)\n return rest\n }\n },\n classnames () {\n return [\n {\n '-you': this.isYou && this.shouldBoldenYou,\n '-highlighted': this.highlight,\n '-has-selection': this.hasSelection\n },\n this.highlightType\n ]\n },\n useAtIcon () {\n return this.mergedConfig.useAtIcon\n },\n isRemote () {\n return this.userName !== this.userNameFull\n },\n shouldShowFullUserName () {\n const conf = this.mergedConfig.mentionLinkDisplay\n if (conf === 'short') {\n return false\n } else if (conf === 'full') {\n return true\n } else { // full_for_remote\n return this.isRemote\n }\n },\n shouldShowTooltip () {\n return this.mergedConfig.mentionLinkShowTooltip\n },\n shouldShowAvatar () {\n return this.mergedConfig.mentionLinkShowAvatar\n },\n shouldShowYous () {\n return this.mergedConfig.mentionLinkShowYous\n },\n shouldBoldenYou () {\n return this.mergedConfig.mentionLinkBoldenYou\n },\n shouldFadeDomain () {\n return this.mergedConfig.mentionLinkFadeDomain\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n }\n}\n\nexport default MentionLink\n","import { render } from \"./mention_link.vue?vue&type=template&id=11ab9a6c\"\nimport script from \"./mention_link.js?vue&type=script&lang=js\"\nexport * from \"./mention_link.js?vue&type=script&lang=js\"\n\nimport \"./mention_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span class=\"MentionsLine\">\n <MentionLink\n v-for=\"mention in mentionsComputed\"\n :key=\"mention.index\"\n class=\"mention-link\"\n :content=\"mention.content\"\n :url=\"mention.url\"\n /><span\n v-if=\"manyMentions\"\n class=\"extraMentions\"\n >\n <span\n v-if=\"expanded\"\n class=\"fullExtraMentions\"\n >{{ ' ' }}<MentionLink\n v-for=\"mention in extraMentions\"\n :key=\"mention.index\"\n class=\"mention-link\"\n :content=\"mention.content\"\n :url=\"mention.url\"\n />\n </span><button\n v-if=\"!expanded\"\n class=\"button-unstyled showMoreLess\"\n @click=\"toggleShowMore\"\n >\n {{ $t('status.plus_more', { number: extraMentions.length }) }}\n </button><button\n v-if=\"expanded\"\n class=\"button-unstyled showMoreLess\"\n @click=\"toggleShowMore\"\n >\n {{ $t('general.show_less') }}\n </button>\n </span>\n </span>\n</template>\n<script src=\"./mentions_line.js\"></script>\n<style lang=\"scss\" src=\"./mentions_line.scss\" />\n","import MentionLink from 'src/components/mention_link/mention_link.vue'\nimport { mapGetters } from 'vuex'\n\nexport const MENTIONS_LIMIT = 5\n\nconst MentionsLine = {\n name: 'MentionsLine',\n props: {\n mentions: {\n required: true,\n type: Array\n }\n },\n data: () => ({ expanded: false }),\n components: {\n MentionLink\n },\n computed: {\n mentionsComputed () {\n return this.mentions.slice(0, MENTIONS_LIMIT)\n },\n extraMentions () {\n return this.mentions.slice(MENTIONS_LIMIT)\n },\n manyMentions () {\n return this.extraMentions.length > 0\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n toggleShowMore () {\n this.expanded = !this.expanded\n }\n }\n}\n\nexport default MentionsLine\n","import { render } from \"./mentions_line.vue?vue&type=template&id=0e41a1da\"\nimport script from \"./mentions_line.js?vue&type=script&lang=js\"\nexport * from \"./mentions_line.js?vue&type=script&lang=js\"\n\nimport \"./mentions_line.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-show=\"isOpen\"\n v-body-scroll-lock=\"isOpen && !noBackground\"\n class=\"modal-view\"\n :class=\"classes\"\n @click.self=\"$emit('backdropClicked')\"\n >\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n provide: {\n popoversZLayer: 'modals'\n },\n props: {\n isOpen: {\n type: Boolean,\n default: true\n },\n noBackground: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n classes () {\n return {\n 'modal-background': !this.noBackground,\n open: this.isOpen\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n z-index: var(--ZI_modals);\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgb(0 0 0 / 50%);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgb(0 0 0 / 0%);\n }\n\n to {\n background-color: rgb(0 0 0 / 50%);\n }\n}\n</style>\n","import { render } from \"./modal.vue?vue&type=template&id=e92832fc\"\nimport script from \"./modal.vue?vue&type=script&lang=js\"\nexport * from \"./modal.vue?vue&type=script&lang=js\"\n\nimport \"./modal.vue?vue&type=style&index=0&id=e92832fc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <teleport\n :disabled=\"minimalMode || disableTeleport\"\n :to=\"teleportTarget\"\n >\n <component\n :is=\"noHeading ? 'div' : 'aside'\"\n ref=\"root\"\n :class=\"{ minimal: minimalMode }\"\n class=\"Notifications\"\n >\n <div :class=\"mainClass\">\n <div\n v-if=\"!noHeading\"\n class=\"notifications-heading panel-heading -sticky\"\n >\n <div class=\"title\">\n {{ $t('notifications.notifications') }}\n <span\n v-if=\"unseenCount\"\n class=\"badge badge-notification unseen-count\"\n >{{ unseenCount }}</span>\n </div>\n <div\n v-if=\"showScrollTop\"\n class=\"rightside-button\"\n >\n <button\n class=\"button-unstyled scroll-to-top-button\"\n type=\"button\"\n :title=\"$t('general.scroll_to_top')\"\n @click=\"scrollToTop\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon icon=\"arrow-up\" />\n <FAIcon\n icon=\"minus\"\n transform=\"up-7\"\n />\n </FALayers>\n </button>\n </div>\n <button\n v-if=\"unseenCount\"\n class=\"button-default read-button\"\n type=\"button\"\n @click.prevent=\"markAsSeen\"\n >\n {{ $t('notifications.read') }}\n </button>\n <NotificationFilters class=\"rightside-button\" />\n </div>\n <div\n class=\"panel-body\"\n role=\"feed\"\n >\n <div\n v-for=\"notification in notificationsToDisplay\"\n :key=\"notification.id\"\n role=\"listitem\"\n class=\"notification\"\n :class=\"{unseen: !minimalMode && !notification.seen}\"\n >\n <div class=\"notification-overlay\" />\n <notification :notification=\"notification\" />\n </div>\n </div>\n <div class=\"panel-footer\">\n <div\n v-if=\"bottomedOut\"\n class=\"new-status-notification text-center faint\"\n >\n {{ $t('notifications.no_more_notifications') }}\n </div>\n <button\n v-else-if=\"!loading\"\n class=\"button-unstyled -link -fullwidth\"\n @click.prevent=\"fetchOlderNotifications()\"\n >\n <div class=\"new-status-notification text-center\">\n {{ minimalMode ? $t('interactions.load_older') : $t('notifications.load_older') }}\n </div>\n </button>\n <div\n v-else\n class=\"new-status-notification text-center\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"lg\"\n />\n </div>\n </div>\n </div>\n </component>\n </teleport>\n</template>\n\n<script src=\"./notifications.js\"></script>\n<style lang=\"scss\" src=\"./notifications.scss\"></style>\n","<template>\n <article\n v-if=\"notification.type === 'mention'\"\n >\n <Status\n class=\"Notification\"\n :compact=\"true\"\n :statusoid=\"notification.status\"\n />\n </article>\n <article v-else>\n <div\n v-if=\"needMute && !unmuted\"\n class=\"Notification container -muted\"\n >\n <small>\n <user-link\n :user=\"notification.from_profile\"\n :at=\"false\"\n />\n </small>\n <button\n class=\"button-unstyled unmute\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"eye-slash\"\n />\n </button>\n </div>\n <div\n v-else\n class=\"Notification non-mention\"\n :class=\"[userClass, { highlighted: userStyle }, '-type--' + notification.type]\"\n :style=\"[ userStyle ]\"\n >\n <a\n class=\"avatar-container\"\n :href=\"$router.resolve(userProfileLink).href\"\n @click.prevent\n >\n <UserPopover\n :user-id=\"notification.from_profile.id\"\n :overlay-centers=\"true\"\n >\n <UserAvatar\n class=\"post-avatar\"\n :bot=\"botIndicator\"\n :compact=\"true\"\n :better-shadow=\"betterShadow\"\n :user=\"notification.from_profile\"\n />\n </UserPopover>\n </a>\n <div class=\"notification-right\">\n <span class=\"notification-details\">\n <div class=\"name-and-action\">\n <!-- eslint-disable vue/no-v-html -->\n <bdi v-if=\"!!notification.from_profile.name_html\">\n <RichContent\n class=\"username\"\n :title=\"'@'+notification.from_profile.screen_name_ui\"\n :html=\"notification.from_profile.name_html\"\n :emoji=\"notification.from_profile.emoji\"\n />\n </bdi>\n <!-- eslint-enable vue/no-v-html -->\n <span\n v-else\n class=\"username\"\n :title=\"'@'+notification.from_profile.screen_name_ui\"\n >\n {{ notification.from_profile.name }}\n </span>\n {{ ' ' }}\n <span v-if=\"notification.type === 'like'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"star\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.favorited_you') }}</small>\n </span>\n <span v-if=\"notification.type === 'repeat'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"retweet\"\n :title=\"$t('tool_tip.repeat')\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.repeated_you') }}</small>\n </span>\n <span v-if=\"notification.type === 'follow'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"user-plus\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.followed_you') }}</small>\n </span>\n <span v-if=\"notification.type === 'follow_request'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"user\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.follow_request') }}</small>\n </span>\n <span v-if=\"notification.type === 'move'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"suitcase-rolling\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.migrated_to') }}</small>\n </span>\n <span v-if=\"notification.type === 'pleroma:emoji_reaction'\">\n <small>\n <i18n-t\n scope=\"global\"\n keypath=\"notifications.reacted_with\"\n >\n <img\n v-if=\"notification.emoji_url\"\n class=\"emoji-reaction-emoji emoji-reaction-emoji-image\"\n :src=\"notification.emoji_url\"\n :alt=\"notification.emoji\"\n :title=\"notification.emoji\"\n >\n <span\n v-else\n class=\"emoji-reaction-emoji\"\n >{{ notification.emoji }}</span>\n </i18n-t>\n </small>\n </span>\n <span v-if=\"notification.type === 'pleroma:report'\">\n <small>{{ $t('notifications.submitted_report') }}</small>\n </span>\n <span v-if=\"notification.type === 'poll'\">\n <FAIcon\n class=\"type-icon\"\n icon=\"poll-h\"\n />\n {{ ' ' }}\n <small>{{ $t('notifications.poll_ended') }}</small>\n </span>\n </div>\n <div\n v-if=\"isStatusNotification\"\n class=\"timeago\"\n >\n <router-link\n v-if=\"notification.status\"\n :to=\"{ name: 'conversation', params: { id: notification.status.id } }\"\n class=\"timeago-link faint-link\"\n >\n <Timeago\n :time=\"notification.created_at\"\n :auto-update=\"240\"\n />\n </router-link>\n <button\n class=\"button-unstyled expand-icon\"\n :title=\"$t('tool_tip.toggle_expand')\"\n :aria-expanded=\"statusExpanded\"\n @click.prevent=\"toggleStatusExpanded\"\n >\n <FAIcon\n class=\"fa-scale-110\"\n fixed-width\n :icon=\"statusExpanded ? 'compress-alt' : 'expand-alt'\"\n />\n </button>\n </div>\n <div\n v-else\n class=\"timeago\"\n >\n <span class=\"faint\">\n <Timeago\n :time=\"notification.created_at\"\n :auto-update=\"240\"\n />\n </span>\n </div>\n <button\n v-if=\"needMute\"\n class=\"button-unstyled\"\n :title=\"$t('tool_tip.toggle_mute')\"\n :aria-expanded=\"!unmuted\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"eye-slash\"\n />\n </button>\n </span>\n <div\n v-if=\"notification.type === 'follow' || notification.type === 'follow_request'\"\n class=\"follow-text\"\n >\n <user-link\n class=\"follow-name\"\n :user=\"notification.from_profile\"\n />\n <div\n v-if=\"notification.type === 'follow_request'\"\n style=\"white-space: nowrap;\"\n >\n <button\n class=\"button-unstyled\"\n :title=\"$t('tool_tip.accept_follow_request')\"\n @click=\"approveUser()\"\n >\n <FAIcon\n icon=\"check\"\n class=\"fa-scale-110 fa-old-padding follow-request-accept\"\n />\n </button>\n <button\n class=\"button-unstyled\"\n :title=\"$t('tool_tip.reject_follow_request')\"\n @click=\"denyUser()\"\n >\n <FAIcon\n icon=\"times\"\n class=\"fa-scale-110 fa-old-padding follow-request-reject\"\n />\n </button>\n </div>\n </div>\n <div\n v-else-if=\"notification.type === 'move'\"\n class=\"move-text\"\n >\n <user-link\n :user=\"notification.target\"\n />\n </div>\n <Report\n v-else-if=\"notification.type === 'pleroma:report'\"\n :report-id=\"notification.report.id\"\n />\n <template v-else>\n <StatusContent\n :class=\"{ faint: !statusExpanded }\"\n :compact=\"!statusExpanded\"\n :status=\"notification.action\"\n />\n </template>\n </div>\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingApproveConfirmDialog\"\n :title=\"$t('user_card.approve_confirm_title')\"\n :confirm-text=\"$t('user_card.approve_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.approve_confirm_cancel_button')\"\n @accepted=\"doApprove\"\n @cancelled=\"hideApproveConfirmDialog\"\n >\n {{ $t('user_card.approve_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n <confirm-modal\n v-if=\"showingDenyConfirmDialog\"\n :title=\"$t('user_card.deny_confirm_title')\"\n :confirm-text=\"$t('user_card.deny_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.deny_confirm_cancel_button')\"\n @accepted=\"doDeny\"\n @cancelled=\"hideDenyConfirmDialog\"\n >\n {{ $t('user_card.deny_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n </teleport>\n </article>\n</template>\n\n<script src=\"./notification.js\"></script>\n<style src=\"./notification.scss\" lang=\"scss\"></style>\n","<template>\n <div class=\"Report\">\n <div class=\"reported-user\">\n <span>{{ $t('report.reported_user') }}</span>\n <router-link :to=\"generateUserProfileLink(report.acct)\">\n @{{ report.acct.screen_name }}\n </router-link>\n </div>\n <div class=\"reporter\">\n <span>{{ $t('report.reporter') }}</span>\n <router-link :to=\"generateUserProfileLink(report.actor)\">\n @{{ report.actor.screen_name }}\n </router-link>\n </div>\n <div class=\"report-state\">\n <span>{{ $t('report.state') }}</span>\n <Select\n :id=\"report-state\"\n v-model=\"state\"\n class=\"form-control\"\n >\n <option\n v-for=\"state in ['open', 'closed', 'resolved']\"\n :key=\"state\"\n :value=\"state\"\n >\n {{ $t('report.state_' + state) }}\n </option>\n </Select>\n </div>\n <RichContent\n class=\"report-content\"\n :html=\"report.content\"\n :emoji=\"[]\"\n />\n <div v-if=\"report.statuses.length\">\n <small>{{ $t('report.reported_statuses') }}</small>\n <router-link\n v-for=\"status in report.statuses\"\n :key=\"status.id\"\n :to=\"{ name: 'conversation', params: { id: status.id } }\"\n class=\"reported-status\"\n >\n <div class=\"reported-status-heading\">\n <span class=\"reported-status-name\">{{ status.user.name }}</span>\n <Timeago\n :time=\"status.created_at\"\n :auto-update=\"240\"\n class=\"faint\"\n />\n </div>\n <status-content :status=\"status\" />\n </router-link>\n </div>\n <div v-if=\"report.notes.length\">\n <small>{{ $t('report.notes') }}</small>\n <div\n v-for=\"note in report.notes\"\n :key=\"note.id\"\n class=\"note\"\n >\n <span>{{ note.content }}</span>\n <Timeago\n :time=\"note.created_at\"\n :auto-update=\"240\"\n class=\"faint\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./report.js\"></script>\n<style src=\"./report.scss\" lang=\"scss\"></style>\n","import Select from '../select/select.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst Report = {\n props: [\n 'reportId'\n ],\n components: {\n Select,\n StatusContent,\n Timeago,\n RichContent\n },\n computed: {\n report () {\n console.log(this.$store.state.reports.reports[this.reportId] || {})\n return this.$store.state.reports.reports[this.reportId] || {}\n },\n state: {\n get: function () { return this.report.state },\n set: function (val) { this.setReportState(val) }\n }\n },\n methods: {\n generateUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n setReportState (state) {\n return this.$store.dispatch('setReportState', { id: this.report.id, state })\n }\n }\n}\n\nexport default Report\n","import { render } from \"./report.vue?vue&type=template&id=86a2fdce\"\nimport script from \"./report.js?vue&type=script&lang=js\"\nexport * from \"./report.js?vue&type=script&lang=js\"\n\nimport \"./report.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import StatusContent from '../status_content/status_content.vue'\nimport { mapState } from 'vuex'\nimport Status from '../status/status.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport Report from '../report/report.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport UserPopover from '../user_popover/user_popover.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faEyeSlash,\n faUser,\n faSuitcaseRolling,\n faExpandAlt,\n faCompressAlt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faUser,\n faEyeSlash,\n faSuitcaseRolling,\n faExpandAlt,\n faCompressAlt\n)\n\nconst Notification = {\n data () {\n return {\n statusExpanded: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n unmuted: false,\n showingApproveConfirmDialog: false,\n showingDenyConfirmDialog: false\n }\n },\n props: ['notification'],\n components: {\n StatusContent,\n UserAvatar,\n UserCard,\n Timeago,\n Status,\n Report,\n RichContent,\n UserPopover,\n UserLink,\n ConfirmModal\n },\n methods: {\n toggleStatusExpanded () {\n this.statusExpanded = !this.statusExpanded\n },\n generateUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n getUser (notification) {\n return this.$store.state.users.usersObject[notification.from_profile.id]\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n showApproveConfirmDialog () {\n this.showingApproveConfirmDialog = true\n },\n hideApproveConfirmDialog () {\n this.showingApproveConfirmDialog = false\n },\n showDenyConfirmDialog () {\n this.showingDenyConfirmDialog = true\n },\n hideDenyConfirmDialog () {\n this.showingDenyConfirmDialog = false\n },\n approveUser () {\n if (this.shouldConfirmApprove) {\n this.showApproveConfirmDialog()\n } else {\n this.doApprove()\n }\n },\n doApprove () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n this.$store.dispatch('updateNotification', {\n id: this.notification.id,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n this.hideApproveConfirmDialog()\n },\n denyUser () {\n if (this.shouldConfirmDeny) {\n this.showDenyConfirmDialog()\n } else {\n this.doDeny()\n }\n },\n doDeny () {\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n this.hideDenyConfirmDialog()\n }\n },\n computed: {\n userClass () {\n return highlightClass(this.notification.from_profile)\n },\n userStyle () {\n const highlight = this.$store.getters.mergedConfig.highlight\n const user = this.notification.from_profile\n return highlightStyle(highlight[user.screen_name])\n },\n user () {\n return this.$store.getters.findUser(this.notification.from_profile.id)\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.user)\n },\n targetUser () {\n return this.$store.getters.findUser(this.notification.target.id)\n },\n targetUserProfileLink () {\n return this.generateUserProfileLink(this.targetUser)\n },\n needMute () {\n return this.$store.getters.relationship(this.user.id).muting\n },\n isStatusNotification () {\n return isStatusNotification(this.notification.type)\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n shouldConfirmApprove () {\n return this.mergedConfig.modalOnApproveFollow\n },\n shouldConfirmDeny () {\n return this.mergedConfig.modalOnDenyFollow\n },\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n }\n}\n\nexport default Notification\n","import { render } from \"./notification.vue?vue&type=template&id=1ab1e6c0\"\nimport script from \"./notification.js?vue&type=script&lang=js\"\nexport * from \"./notification.js?vue&type=script&lang=js\"\n\nimport \"./notification.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n class=\"NotificationFilters\"\n placement=\"bottom\"\n :bound-to=\"{ x: 'container' }\"\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('likes')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n />{{ $t('settings.notification_visibility_likes') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('repeats')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n />{{ $t('settings.notification_visibility_repeats') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('follows')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n />{{ $t('settings.notification_visibility_follows') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('mentions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n />{{ $t('settings.notification_visibility_mentions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('emojiReactions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n />{{ $t('settings.notification_visibility_emoji_reactions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('moves')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n />{{ $t('settings.notification_visibility_moves') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('polls')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.polls }\"\n />{{ $t('settings.notification_visibility_polls') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button class=\"filter-trigger-button button-unstyled\">\n <FAIcon icon=\"filter\" />\n </button>\n </template>\n </Popover>\n</template>\n\n<script>\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFilter\n)\n\nexport default {\n components: { Popover },\n computed: {\n filters () {\n return this.$store.getters.mergedConfig.notificationVisibility\n }\n },\n methods: {\n toggleNotificationFilter (type) {\n this.$store.dispatch('setOption', {\n name: 'notificationVisibility',\n value: {\n ...this.filters,\n [type]: !this.filters[type]\n }\n })\n }\n }\n}\n</script>\n","import { render } from \"./notification_filters.vue?vue&type=template&id=0ad39446\"\nimport script from \"./notification_filters.vue?vue&type=script&lang=js\"\nexport * from \"./notification_filters.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { computed } from 'vue'\nimport { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.vue'\nimport NotificationFilters from './notification_filters.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n notificationsFromStore,\n filteredNotificationsFromStore,\n unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faArrowUp, faMinus } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faArrowUp,\n faMinus\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n components: {\n Notification,\n NotificationFilters\n },\n props: {\n // Disables panel styles, unread mark, potentially other notification-related actions\n // meant for \"Interactions\" timeline\n minimalMode: Boolean,\n // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n filterMode: Array,\n // Disable teleporting (i.e. for /users/user/notifications)\n disableTeleport: Boolean\n },\n data () {\n return {\n showScrollTop: false,\n bottomedOut: false,\n // How many seen notifications to display in the list. The more there are,\n // the heavier the page becomes. This count is increased when loading\n // older notifications, and cut back to default whenever hitting \"Read!\".\n seenToDisplayCount: DEFAULT_SEEN_TO_DISPLAY_COUNT\n }\n },\n provide () {\n return {\n popoversZLayer: computed(() => this.popoversZLayer)\n }\n },\n computed: {\n mainClass () {\n return this.minimalMode ? '' : 'panel panel-default'\n },\n notifications () {\n return notificationsFromStore(this.$store)\n },\n error () {\n return this.$store.state.statuses.notifications.error\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n filteredNotifications () {\n return filteredNotificationsFromStore(this.$store, this.filterMode)\n },\n unseenCount () {\n return this.unseenNotifications.length\n },\n unseenCountTitle () {\n return this.unseenCount + (this.unreadChatCount) + this.unreadAnnouncementCount\n },\n loading () {\n return this.$store.state.statuses.notifications.loading\n },\n noHeading () {\n const { layoutType } = this.$store.state.interface\n return this.minimalMode || layoutType === 'mobile'\n },\n teleportTarget () {\n const { layoutType } = this.$store.state.interface\n const map = {\n wide: '#notifs-column',\n mobile: '#mobile-notifications'\n }\n return map[layoutType] || '#notifs-sidebar'\n },\n popoversZLayer () {\n const { layoutType } = this.$store.state.interface\n return layoutType === 'mobile' ? 'navbar' : null\n },\n notificationsToDisplay () {\n return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n },\n noSticky () { return this.$store.getters.mergedConfig.disableStickyHeaders },\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n },\n mounted () {\n this.scrollerRef = this.$refs.root.closest('.column.-scrollable')\n if (!this.scrollerRef) {\n this.scrollerRef = this.$refs.root.closest('.mobile-notifications')\n }\n if (!this.scrollerRef) {\n this.scrollerRef = this.$refs.root.closest('.column.main')\n }\n this.scrollerRef.addEventListener('scroll', this.updateScrollPosition)\n },\n unmounted () {\n if (!this.scrollerRef) return\n this.scrollerRef.removeEventListener('scroll', this.updateScrollPosition)\n },\n watch: {\n unseenCountTitle (count) {\n if (count > 0) {\n FaviconService.drawFaviconBadge()\n this.$store.dispatch('setPageTitle', `(${count})`)\n } else {\n FaviconService.clearFaviconBadge()\n this.$store.dispatch('setPageTitle', '')\n }\n },\n teleportTarget () {\n // handle scroller change\n this.$nextTick(() => {\n this.scrollerRef.removeEventListener('scroll', this.updateScrollPosition)\n this.scrollerRef = this.$refs.root.closest('.column.-scrollable')\n if (!this.scrollerRef) {\n this.scrollerRef = this.$refs.root.closest('.mobile-notifications')\n }\n this.scrollerRef.addEventListener('scroll', this.updateScrollPosition)\n this.updateScrollPosition()\n })\n }\n },\n methods: {\n scrollToTop () {\n const scrollable = this.scrollerRef\n scrollable.scrollTo({ top: this.$refs.root.offsetTop })\n // this.$refs.root.scrollIntoView({ behavior: 'smooth', block: 'start' })\n },\n updateScrollPosition () {\n this.showScrollTop = this.$refs.root.offsetTop < this.scrollerRef.scrollTop\n },\n markAsSeen () {\n this.$store.dispatch('markNotificationsAsSeen')\n this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n },\n fetchOlderNotifications () {\n if (this.loading) {\n return\n }\n\n const seenCount = this.filteredNotifications.length - this.unseenCount\n if (this.seenToDisplayCount < seenCount) {\n this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n return\n } else if (this.seenToDisplayCount > seenCount) {\n this.seenToDisplayCount = seenCount\n }\n\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setNotificationsLoading', { value: true })\n notificationsFetcher.fetchAndUpdate({\n store,\n credentials,\n older: true\n }).then(notifs => {\n store.commit('setNotificationsLoading', { value: false })\n if (notifs.length === 0) {\n this.bottomedOut = true\n }\n this.seenToDisplayCount += notifs.length\n })\n }\n }\n}\n\nexport default Notifications\n","import { render } from \"./notifications.vue?vue&type=template&id=fdd5b5f4\"\nimport script from \"./notifications.js?vue&type=script&lang=js\"\nexport * from \"./notifications.js?vue&type=script&lang=js\"\n\nimport \"./notifications.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"panel-loading\">\n <span class=\"loading-text\">\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n {{ $t('general.loading') }}\n </span>\n </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import \"src/variables\";\n\n.panel-loading {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n\n .loading-text svg {\n line-height: 0;\n vertical-align: middle;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n</style>\n","import { render } from \"./panel_loading.vue?vue&type=template&id=0255a870\"\nimport script from \"./panel_loading.vue?vue&type=script&lang=js\"\nexport * from \"./panel_loading.vue?vue&type=script&lang=js\"\n\nimport \"./panel_loading.vue?vue&type=style&index=0&id=0255a870&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const Popover = {\n name: 'Popover',\n props: {\n // Action to trigger popover: either 'hover' or 'click'\n trigger: String,\n\n // 'top', 'bottom', 'left', 'right'\n placement: String,\n\n // Takes object with properties 'x' and 'y', values of these can be\n // 'container' for using offsetParent as boundaries for either axis\n // or 'viewport'\n boundTo: Object,\n\n // Takes a selector to use as a replacement for the parent container\n // for getting boundaries for x an y axis\n boundToSelector: String,\n\n // Takes a top/bottom/left/right object, how much space to leave\n // between boundary and popover element\n margin: Object,\n\n // Takes a x/y object and tells how many pixels to offset from\n // anchor point on either axis\n offset: Object,\n\n // Replaces the classes you may want for the popover container.\n // Use 'popover-default' in addition to get the default popover\n // styles with your custom class.\n popoverClass: String,\n\n // If true, subtract padding when calculating position for the popover,\n // use it when popover offset looks to be different on top vs bottom.\n removePadding: Boolean,\n\n // self-explanatory (i hope)\n disabled: Boolean,\n\n // Instead of putting popover next to anchor, overlay popover's center on top of anchor's center\n overlayCenters: Boolean,\n\n // What selector (witin popover!) to use for determining center of popover\n overlayCentersSelector: String,\n\n // Lets hover popover stay when clicking inside of it\n stayOnClick: Boolean,\n\n // Use styled button (to avoid nested buttons)\n normalButton: Boolean,\n\n triggerAttrs: {\n type: Object,\n default: {}\n }\n },\n inject: ['popoversZLayer'], // override popover z layer\n data () {\n return {\n // lockReEntry is a flag that is set when mouse cursor is leaving the popover's content\n // so that if mouse goes back into popover it won't be re-shown again to prevent annoyance\n // with popovers refusing to be hidden when user wants to interact with something in below popover\n anchorEl: null,\n // There's an issue where having teleport enabled by default causes things just...\n // not render at all, i.e. main post status form and its emoji inputs\n teleport: false,\n lockReEntry: false,\n hidden: true,\n styles: {},\n oldSize: { width: 0, height: 0 },\n scrollable: null,\n // used to avoid blinking if hovered onto popover\n graceTimeout: null,\n parentPopover: null,\n disableClickOutside: false,\n childrenShown: new Set()\n }\n },\n methods: {\n setAnchorEl (el) {\n this.anchorEl = el\n this.updateStyles()\n },\n containerBoundingClientRect () {\n const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n return container.getBoundingClientRect()\n },\n updateStyles () {\n if (this.hidden) {\n this.styles = {}\n return\n }\n\n // Popover will be anchored around this element, trigger ref is the container, so\n // its children are what are inside the slot. Expect only one v-slot:trigger.\n const anchorEl = this.anchorEl || (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n // SVGs don't have offsetWidth/Height, use fallback\n const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight\n const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth\n const anchorScreenBox = anchorEl.getBoundingClientRect()\n\n const anchorStyle = getComputedStyle(anchorEl)\n const topPadding = parseFloat(anchorStyle.paddingTop)\n const bottomPadding = parseFloat(anchorStyle.paddingBottom)\n const rightPadding = parseFloat(anchorStyle.paddingRight)\n const leftPadding = parseFloat(anchorStyle.paddingLeft)\n\n // Screen position of the origin point for popover = center of the anchor\n const origin = {\n x: anchorScreenBox.left + anchorWidth * 0.5,\n y: anchorScreenBox.top + anchorHeight * 0.5\n }\n const content = this.$refs.content\n const overlayCenter = this.overlayCenters\n ? this.$refs.content.querySelector(this.overlayCentersSelector)\n : null\n\n // Minor optimization, don't call a slow reflow call if we don't have to\n const parentScreenBox = this.boundTo &&\n (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n this.containerBoundingClientRect()\n\n const margin = this.margin || {}\n\n // What are the screen bounds for the popover? Viewport vs container\n // when using viewport, using default margin values to dodge the navbar\n const xBounds = this.boundTo && this.boundTo.x === 'container'\n ? {\n min: parentScreenBox.left + (margin.left || 0),\n max: parentScreenBox.right - (margin.right || 0)\n }\n : {\n min: 0 + (margin.left || 10),\n max: window.innerWidth - (margin.right || 10)\n }\n\n const yBounds = this.boundTo && this.boundTo.y === 'container'\n ? {\n min: parentScreenBox.top + (margin.top || 0),\n max: parentScreenBox.bottom - (margin.bottom || 0)\n }\n : {\n min: 0 + (margin.top || 50),\n max: window.innerHeight - (margin.bottom || 5)\n }\n\n let horizOffset = 0\n let vertOffset = 0\n\n if (overlayCenter) {\n const box = content.getBoundingClientRect()\n const overlayCenterScreenBox = overlayCenter.getBoundingClientRect()\n const leftInnerOffset = overlayCenterScreenBox.left - box.left\n const topInnerOffset = overlayCenterScreenBox.top - box.top\n horizOffset = -leftInnerOffset - overlayCenter.offsetWidth * 0.5\n vertOffset = -topInnerOffset - overlayCenter.offsetHeight * 0.5\n } else {\n horizOffset = content.offsetWidth * -0.5\n vertOffset = content.offsetHeight * -0.5\n }\n\n const leftBorder = origin.x + horizOffset\n const rightBorder = leftBorder + content.offsetWidth\n const topBorder = origin.y + vertOffset\n const bottomBorder = topBorder + content.offsetHeight\n\n // If overflowing from left, move it so that it doesn't\n if (leftBorder < xBounds.min) {\n horizOffset += xBounds.min - leftBorder\n }\n\n // If overflowing from right, move it so that it doesn't\n if (rightBorder > xBounds.max) {\n horizOffset -= rightBorder - xBounds.max\n }\n\n // If overflowing from top, move it so that it doesn't\n if (topBorder < yBounds.min) {\n vertOffset += yBounds.min - topBorder\n }\n\n // If overflowing from bottom, move it so that it doesn't\n if (bottomBorder > yBounds.max) {\n vertOffset -= bottomBorder - yBounds.max\n }\n\n let translateX = 0\n let translateY = 0\n\n if (overlayCenter) {\n translateX = origin.x + horizOffset\n translateY = origin.y + vertOffset\n } else if (this.placement !== 'right' && this.placement !== 'left') {\n // Default to whatever user wished with placement prop\n let usingTop = this.placement !== 'bottom'\n\n // Handle special cases, first force to displaying on top if there's not space on bottom,\n // regardless of what placement value was. Then check if there's not space on top, and\n // force to bottom, again regardless of what placement value was.\n const topBoundary = origin.y - anchorHeight * 0.5 + (this.removePadding ? topPadding : 0)\n const bottomBoundary = origin.y + anchorHeight * 0.5 - (this.removePadding ? bottomPadding : 0)\n if (bottomBoundary + content.offsetHeight > yBounds.max) usingTop = true\n if (topBoundary - content.offsetHeight < yBounds.min) usingTop = false\n\n const yOffset = (this.offset && this.offset.y) || 0\n translateY = usingTop\n ? topBoundary - yOffset - content.offsetHeight\n : bottomBoundary + yOffset\n\n const xOffset = (this.offset && this.offset.x) || 0\n translateX = origin.x + horizOffset + xOffset\n } else {\n // Default to whatever user wished with placement prop\n let usingRight = this.placement !== 'left'\n\n // Handle special cases, first force to displaying on top if there's not space on bottom,\n // regardless of what placement value was. Then check if there's not space on top, and\n // force to bottom, again regardless of what placement value was.\n const rightBoundary = origin.x - anchorWidth * 0.5 + (this.removePadding ? rightPadding : 0)\n const leftBoundary = origin.x + anchorWidth * 0.5 - (this.removePadding ? leftPadding : 0)\n if (leftBoundary + content.offsetWidth > xBounds.max) usingRight = true\n if (rightBoundary - content.offsetWidth < xBounds.min) usingRight = false\n\n const xOffset = (this.offset && this.offset.x) || 0\n translateX = usingRight\n ? rightBoundary - xOffset - content.offsetWidth\n : leftBoundary + xOffset\n\n const yOffset = (this.offset && this.offset.y) || 0\n translateY = origin.y + vertOffset + yOffset\n }\n\n this.styles = {\n left: `${Math.round(translateX)}px`,\n top: `${Math.round(translateY)}px`\n }\n\n if (this.popoversZLayer) {\n this.styles['--ZI_popover_override'] = `var(--ZI_${this.popoversZLayer}_popovers)`\n }\n if (parentScreenBox) {\n this.styles.maxWidth = `${Math.round(parentScreenBox.width)}px`\n }\n },\n showPopover () {\n if (this.disabled) return\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n const wasHidden = this.hidden\n this.hidden = false\n this.parentPopover && this.parentPopover.onChildPopoverState(this, true)\n if (this.trigger === 'click' || this.stayOnClick) {\n document.addEventListener('click', this.onClickOutside)\n }\n this.scrollable.addEventListener('scroll', this.onScroll)\n this.scrollable.addEventListener('resize', this.onResize)\n this.$nextTick(() => {\n if (wasHidden) this.$emit('show')\n this.updateStyles()\n })\n },\n hidePopover () {\n if (this.disabled) return\n if (!this.hidden) this.$emit('close')\n this.hidden = true\n this.parentPopover && this.parentPopover.onChildPopoverState(this, false)\n if (this.trigger === 'click') {\n document.removeEventListener('click', this.onClickOutside)\n }\n this.scrollable.removeEventListener('scroll', this.onScroll)\n this.scrollable.removeEventListener('resize', this.onResize)\n },\n onMouseenter (e) {\n if (this.trigger === 'hover') {\n this.lockReEntry = false\n clearTimeout(this.graceTimeout)\n this.graceTimeout = null\n this.showPopover()\n }\n },\n onMouseleave (e) {\n if (this.trigger === 'hover' && this.childrenShown.size === 0) {\n this.graceTimeout = setTimeout(() => this.hidePopover(), 1)\n }\n },\n onMouseenterContent (e) {\n if (this.trigger === 'hover' && !this.lockReEntry) {\n this.lockReEntry = true\n clearTimeout(this.graceTimeout)\n this.graceTimeout = null\n this.showPopover()\n }\n },\n onMouseleaveContent (e) {\n if (this.trigger === 'hover' && this.childrenShown.size === 0) {\n this.graceTimeout = setTimeout(() => this.hidePopover(), 1)\n }\n },\n onClick (e) {\n if (this.trigger === 'click') {\n if (this.hidden) {\n this.showPopover()\n } else {\n this.hidePopover()\n }\n }\n },\n onClickOutside (e) {\n if (this.disableClickOutside) return\n if (this.hidden) return\n if (this.$refs.content && this.$refs.content.contains(e.target)) return\n if (this.$el.contains(e.target)) return\n if (this.childrenShown.size > 0) return\n this.hidePopover()\n if (this.parentPopover) this.parentPopover.onClickOutside(e)\n },\n onScroll (e) {\n this.updateStyles()\n },\n onResize (e) {\n this.updateStyles()\n },\n onChildPopoverState (childRef, state) {\n if (state) {\n this.childrenShown.add(childRef)\n } else {\n this.childrenShown.delete(childRef)\n }\n }\n },\n updated () {\n // Monitor changes to content size, update styles only when content sizes have changed,\n // that should be the only time we need to move the popover box if we don't care about scroll\n // or resize\n const content = this.$refs.content\n if (!content) return\n if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n this.updateStyles()\n this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n }\n },\n mounted () {\n this.teleport = true\n let scrollable = this.$refs.trigger.closest('.column.-scrollable') ||\n this.$refs.trigger.closest('.mobile-notifications')\n if (!scrollable) scrollable = window\n this.scrollable = scrollable\n let parent = this.$parent\n while (parent && parent.$.type.name !== 'Popover') {\n parent = parent.$parent\n }\n this.parentPopover = parent\n },\n beforeUnmount () {\n this.hidePopover()\n }\n}\n\nexport default Popover\n","import { render } from \"./popover.vue?vue&type=template&id=5ac74c76\"\nimport script from \"./popover.js?vue&type=script&lang=js\"\nexport * from \"./popover.js?vue&type=script&lang=js\"\n\nimport \"./popover.vue?vue&type=style&index=0&id=5ac74c76&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n @mouseenter=\"onMouseenter\"\n @mouseleave=\"onMouseleave\"\n >\n <button\n ref=\"trigger\"\n class=\"popover-trigger-button\"\n :class=\"normalButton ? 'button-default btn' : 'button-unstyled'\"\n type=\"button\"\n v-bind=\"triggerAttrs\"\n @click=\"onClick\"\n >\n <slot name=\"trigger\" />\n </button>\n <teleport\n :disabled=\"!teleport\"\n to=\"#popovers\"\n >\n <transition name=\"fade\">\n <div\n v-if=\"!hidden\"\n ref=\"content\"\n :style=\"styles\"\n class=\"popover\"\n :class=\"popoverClass || 'popover-default'\"\n @mouseenter=\"onMouseenterContent\"\n @mouseleave=\"onMouseleaveContent\"\n @click=\"onClickContent\"\n >\n <slot\n name=\"content\"\n class=\"popover-inner\"\n :close=\"hidePopover\"\n />\n </div>\n </transition>\n </teleport>\n </span>\n</template>\n\n<script src=\"./popover.js\" />\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.popover-trigger-button {\n display: inline-block;\n}\n\n.popover {\n z-index: var(--ZI_popover_override, var(--ZI_popovers));\n position: fixed;\n min-width: 0;\n max-width: calc(100vw - 20px);\n box-shadow: 2px 2px 3px rgb(0 0 0 / 50%);\n box-shadow: var(--popupShadow);\n}\n\n.popover-default {\n &::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 3;\n box-shadow: 1px 1px 4px rgb(0 0 0 / 60%);\n box-shadow: var(--panelShadow);\n pointer-events: none;\n }\n\n border-radius: $fallback--btnRadius;\n border-radius: var(--btnRadius, $fallback--btnRadius);\n background-color: $fallback--bg;\n background-color: var(--popover, $fallback--bg);\n color: $fallback--text;\n color: var(--popoverText, $fallback--text);\n\n --faint: var(--popoverFaintText, $fallback--faint);\n --faintLink: var(--popoverFaintLink, $fallback--faint);\n --lightText: var(--popoverLightText, $fallback--lightText);\n --postLink: var(--popoverPostLink, $fallback--link);\n --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n --icon: var(--popoverIcon, $fallback--icon);\n}\n\n.dropdown-menu {\n display: block;\n padding: 0.5rem 0;\n font-size: 1em;\n text-align: left;\n list-style: none;\n max-width: 100vw;\n z-index: var(--ZI_popover_override, var(--ZI_popovers));\n white-space: nowrap;\n\n .dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid $fallback--border;\n border-top: 1px solid var(--border, $fallback--border);\n }\n\n .dropdown-item {\n line-height: 21px;\n overflow: hidden;\n display: block;\n padding: 0.5em 0.75em;\n clear: both;\n font-weight: 400;\n text-align: inherit;\n white-space: nowrap;\n border: none;\n border-radius: 0;\n background-color: transparent;\n box-shadow: none;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n\n --btnText: var(--popoverText, $fallback--text);\n\n &-icon {\n svg {\n width: 22px;\n margin-right: 0.75rem;\n color: var(--menuPopoverIcon, $fallback--icon);\n }\n }\n\n &.-has-submenu {\n .chevron-icon {\n margin-right: 0.25rem;\n margin-left: 2rem;\n }\n }\n\n &:active,\n &:hover {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n box-shadow: none;\n\n --btnText: var(--selectedMenuPopoverText, $fallback--link);\n --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n\n svg {\n color: var(--selectedMenuPopoverIcon, $fallback--icon);\n\n --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n }\n }\n\n .menu-checkbox {\n display: inline-block;\n vertical-align: middle;\n min-width: 22px;\n max-width: 22px;\n min-height: 22px;\n max-height: 22px;\n line-height: 22px;\n text-align: center;\n border-radius: 0;\n background-color: $fallback--fg;\n background-color: var(--input, $fallback--fg);\n box-shadow: 0 0 2px black inset;\n box-shadow: var(--inputShadow);\n margin-right: 0.75em;\n\n &.menu-checkbox-checked::after {\n font-size: 1.25em;\n content: \"✓\";\n }\n\n &.-radio {\n border-radius: 9999px;\n\n &.menu-checkbox-checked::after {\n font-size: 2em;\n content: \"•\";\n }\n }\n }\n }\n\n .button-default.dropdown-item {\n &,\n i[class*=\"icon-\"] {\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n }\n\n &:active {\n background-color: $fallback--lightBg;\n background-color: var(--selectedMenuPopover, $fallback--lightBg);\n color: $fallback--link;\n color: var(--selectedMenuPopoverText, $fallback--link);\n }\n\n &:disabled {\n color: $fallback--text;\n color: var(--btnDisabledText, $fallback--text);\n }\n\n &.toggled {\n color: $fallback--text;\n color: var(--btnToggledText, $fallback--text);\n }\n }\n}\n</style>\n","<template>\n <div\n ref=\"form\"\n class=\"post-status-form\"\n >\n <form\n autocomplete=\"off\"\n @submit.prevent\n @dragover.prevent=\"fileDrag\"\n >\n <div class=\"form-group\">\n <i18n-t\n v-if=\"!$store.state.users.currentUser.locked && newStatus.visibility == 'private' && !disableLockWarning\"\n keypath=\"post_status.account_not_locked_warning\"\n tag=\"p\"\n class=\"visibility-notice\"\n scope=\"global\"\n >\n <button\n class=\"button-unstyled -link\"\n @click=\"openProfileTab\"\n >\n {{ $t('post_status.account_not_locked_warning_link') }}\n </button>\n </i18n-t>\n <p\n v-if=\"!hideScopeNotice && newStatus.visibility === 'public'\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.public') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"!hideScopeNotice && newStatus.visibility === 'unlisted'\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.unlisted') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"!hideScopeNotice && newStatus.visibility === 'private' && $store.state.users.currentUser.locked\"\n class=\"visibility-notice notice-dismissible\"\n >\n <span>{{ $t('post_status.scope_notice.private') }}</span>\n <a\n class=\"fa-scale-110 fa-old-padding dismiss\"\n :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\n @click.prevent=\"dismissScopeNotice()\"\n >\n <FAIcon icon=\"times\" />\n </a>\n </p>\n <p\n v-else-if=\"newStatus.visibility === 'direct'\"\n class=\"visibility-notice\"\n >\n <span v-if=\"safeDMEnabled\">{{ $t('post_status.direct_warning_to_first_only') }}</span>\n <span v-else>{{ $t('post_status.direct_warning_to_all') }}</span>\n </p>\n <div\n v-if=\"isEdit\"\n class=\"visibility-notice edit-warning\"\n >\n <p>{{ $t('post_status.edit_remote_warning') }}</p>\n <p>{{ $t('post_status.edit_unsupported_warning') }}</p>\n </div>\n <div\n v-if=\"!disablePreview\"\n class=\"preview-heading faint\"\n >\n <a\n class=\"preview-toggle faint\"\n @click.stop.prevent=\"togglePreview\"\n >\n {{ $t('post_status.preview') }}\n <FAIcon :icon=\"showPreview ? 'chevron-left' : 'chevron-right'\" />\n </a>\n <div\n v-show=\"previewLoading\"\n class=\"preview-spinner\"\n >\n <FAIcon\n class=\"fa-old-padding\"\n spin\n icon=\"circle-notch\"\n />\n </div>\n </div>\n <div\n v-if=\"showPreview\"\n class=\"preview-container\"\n >\n <div\n v-if=\"!preview\"\n class=\"preview-status\"\n >\n {{ $t('general.loading') }}\n </div>\n <div\n v-else-if=\"preview.error\"\n class=\"preview-status preview-error\"\n >\n {{ preview.error }}\n </div>\n <StatusContent\n v-else\n :status=\"preview\"\n class=\"preview-status\"\n />\n </div>\n <div\n v-if=\"quotable\"\n role=\"radiogroup\"\n class=\"btn-group reply-or-quote-selector\"\n >\n <button\n :id=\"`reply-or-quote-option-${randomSeed}-reply`\"\n class=\"btn button-default reply-or-quote-option\"\n :class=\"{ toggled: !newStatus.quoting }\"\n tabindex=\"0\"\n role=\"radio\"\n :aria-labelledby=\"`reply-or-quote-option-${randomSeed}-reply`\"\n :aria-checked=\"!newStatus.quoting\"\n @click=\"newStatus.quoting = false\"\n >\n {{ $t('post_status.reply_option') }}\n </button>\n <button\n :id=\"`reply-or-quote-option-${randomSeed}-quote`\"\n class=\"btn button-default reply-or-quote-option\"\n :class=\"{ toggled: newStatus.quoting }\"\n tabindex=\"0\"\n role=\"radio\"\n :aria-labelledby=\"`reply-or-quote-option-${randomSeed}-quote`\"\n :aria-checked=\"newStatus.quoting\"\n @click=\"newStatus.quoting = true\"\n >\n {{ $t('post_status.quote_option') }}\n </button>\n </div>\n <EmojiInput\n v-if=\"!disableSubject && (newStatus.spoilerText || alwaysShowSubject)\"\n v-model=\"newStatus.spoilerText\"\n enable-emoji-picker\n :suggest=\"emojiSuggestor\"\n class=\"form-control\"\n >\n <template #default=\"inputProps\">\n <input\n v-model=\"newStatus.spoilerText\"\n type=\"text\"\n :placeholder=\"$t('post_status.content_warning')\"\n :disabled=\"posting && !optimisticPosting\"\n v-bind=\"propsToNative(inputProps)\"\n size=\"1\"\n class=\"form-post-subject\"\n >\n </template>\n </EmojiInput>\n <EmojiInput\n ref=\"emoji-input\"\n v-model=\"newStatus.status\"\n :suggest=\"emojiUserSuggestor\"\n :placement=\"emojiPickerPlacement\"\n class=\"form-control main-input\"\n enable-emoji-picker\n hide-emoji-button\n :newline-on-ctrl-enter=\"submitOnEnter\"\n enable-sticker-picker\n @input=\"onEmojiInputInput\"\n @sticker-uploaded=\"addMediaFile\"\n @sticker-upload-failed=\"uploadFailed\"\n @shown=\"handleEmojiInputShow\"\n >\n <template #default=\"inputProps\">\n <textarea\n ref=\"textarea\"\n v-model=\"newStatus.status\"\n :placeholder=\"placeholder || $t('post_status.default')\"\n rows=\"1\"\n cols=\"1\"\n :disabled=\"posting && !optimisticPosting\"\n class=\"form-post-body\"\n :class=\"{ 'scrollable-form': !!maxHeight }\"\n v-bind=\"propsToNative(inputProps)\"\n @keydown.exact.enter=\"submitOnEnter && postStatus($event, newStatus)\"\n @keydown.meta.enter=\"postStatus($event, newStatus)\"\n @keydown.ctrl.enter=\"!submitOnEnter && postStatus($event, newStatus)\"\n @input=\"resize\"\n @compositionupdate=\"resize\"\n @paste=\"paste\"\n />\n <p\n v-if=\"hasStatusLengthLimit\"\n class=\"character-counter faint\"\n :class=\"{ error: isOverLengthLimit }\"\n >\n {{ charactersLeft }}\n </p>\n </template>\n </EmojiInput>\n <div\n v-if=\"!disableScopeSelector\"\n class=\"visibility-tray\"\n >\n <scope-selector\n v-if=\"!disableVisibilitySelector\"\n :show-all=\"showAllScopes\"\n :user-default=\"userDefaultScope\"\n :original-scope=\"copyMessageScope\"\n :initial-scope=\"newStatus.visibility\"\n :on-scope-change=\"changeVis\"\n />\n\n <div\n v-if=\"postFormats.length > 1\"\n class=\"text-format\"\n >\n <Select\n id=\"post-content-type\"\n v-model=\"newStatus.contentType\"\n class=\"form-control\"\n :attrs=\"{ 'aria-label': $t('post_status.content_type_selection') }\"\n >\n <option\n v-for=\"postFormat in postFormats\"\n :key=\"postFormat\"\n :value=\"postFormat\"\n >\n {{ $t(`post_status.content_type[\"${postFormat}\"]`) }}\n </option>\n </Select>\n </div>\n <div\n v-if=\"postFormats.length === 1 && postFormats[0] !== 'text/plain'\"\n class=\"text-format\"\n >\n <span class=\"only-format\">\n {{ $t(`post_status.content_type[\"${postFormats[0]}\"]`) }}\n </span>\n </div>\n </div>\n </div>\n <poll-form\n v-if=\"pollsAvailable\"\n ref=\"pollForm\"\n :visible=\"pollFormVisible\"\n @update-poll=\"setPoll\"\n />\n <div\n ref=\"bottom\"\n class=\"form-bottom\"\n >\n <div class=\"form-bottom-left\">\n <media-upload\n ref=\"mediaUpload\"\n class=\"media-upload-icon\"\n :drop-files=\"dropFiles\"\n :disabled=\"uploadFileLimitReached\"\n @uploading=\"startedUploadingFiles\"\n @uploaded=\"addMediaFile\"\n @upload-failed=\"uploadFailed\"\n @all-uploaded=\"finishedUploadingFiles\"\n />\n <button\n class=\"emoji-icon button-unstyled\"\n :title=\"$t('emoji.add_emoji')\"\n @click=\"showEmojiPicker\"\n >\n <FAIcon icon=\"smile-beam\" />\n </button>\n <button\n v-if=\"pollsAvailable\"\n class=\"poll-icon button-unstyled\"\n :class=\"{ selected: pollFormVisible }\"\n :title=\"$t('polls.add_poll')\"\n @click=\"togglePollForm\"\n >\n <FAIcon icon=\"poll-h\" />\n </button>\n </div>\n <button\n v-if=\"posting\"\n disabled\n class=\"btn button-default\"\n >\n {{ $t('post_status.posting') }}\n </button>\n <button\n v-else-if=\"isOverLengthLimit\"\n disabled\n class=\"btn button-default\"\n >\n {{ $t('post_status.post') }}\n </button>\n <button\n v-else\n :disabled=\"uploadingFiles || disableSubmit\"\n class=\"btn button-default\"\n @click.stop.prevent=\"postStatus($event, newStatus)\"\n >\n {{ $t('post_status.post') }}\n </button>\n </div>\n <div\n v-show=\"showDropIcon !== 'hide'\"\n :style=\"{ animation: showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }\"\n class=\"drop-indicator\"\n @dragleave=\"fileDragStop\"\n @drop.stop=\"fileDrop\"\n >\n <FAIcon :icon=\"uploadFileLimitReached ? 'ban' : 'upload'\" />\n </div>\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n Error: {{ error }}\n <button\n class=\"button-unstyled\"\n @click=\"clearError\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"times\"\n />\n </button>\n </div>\n <gallery\n v-if=\"newStatus.files && newStatus.files.length > 0\"\n class=\"attachments\"\n :grid=\"true\"\n :nsfw=\"false\"\n :attachments=\"newStatus.files\"\n :descriptions=\"newStatus.mediaDescriptions\"\n :set-media=\"() => $store.dispatch('setMedia', newStatus.files)\"\n :editable=\"true\"\n :edit-attachment=\"editAttachment\"\n :remove-attachment=\"removeMediaFile\"\n :shift-up-attachment=\"newStatus.files.length > 1 && shiftUpMediaFile\"\n :shift-dn-attachment=\"newStatus.files.length > 1 && shiftDnMediaFile\"\n @play=\"$emit('mediaplay', attachment.id)\"\n @pause=\"$emit('mediapause', attachment.id)\"\n />\n <div\n v-if=\"newStatus.files.length > 0 && !disableSensitivityCheckbox\"\n class=\"upload_settings\"\n >\n <Checkbox v-model=\"newStatus.nsfw\">\n {{ $t('post_status.attachments_sensitive') }}\n </Checkbox>\n </div>\n </form>\n </div>\n</template>\n\n<script src=\"./post_status_form.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.post-status-form {\n position: relative;\n\n .attachments {\n margin-bottom: 0.5em;\n }\n\n .form-bottom {\n display: flex;\n justify-content: space-between;\n padding: 0.5em;\n height: 2.5em;\n\n button {\n width: 10em;\n }\n\n p {\n margin: 0.35em;\n padding: 0.35em;\n display: flex;\n }\n }\n\n .form-bottom-left {\n display: flex;\n flex: 1;\n padding-right: 7px;\n margin-right: 7px;\n max-width: 10em;\n }\n\n .preview-heading {\n display: flex;\n padding-left: 0.5em;\n }\n\n .preview-toggle {\n flex: 1;\n cursor: pointer;\n user-select: none;\n\n &:hover {\n text-decoration: underline;\n }\n\n svg,\n i {\n margin-left: 0.2em;\n font-size: 0.8em;\n transform: rotate(90deg);\n }\n }\n\n .preview-container {\n margin-bottom: 1em;\n }\n\n .preview-error {\n font-style: italic;\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n\n .preview-status {\n border: 1px solid $fallback--border;\n border: 1px solid var(--border, $fallback--border);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n padding: 0.5em;\n margin: 0;\n }\n\n .reply-or-quote-selector {\n margin-bottom: 0.5em;\n }\n\n .text-format {\n .only-format {\n color: $fallback--faint;\n color: var(--faint, $fallback--faint);\n }\n }\n\n .visibility-tray {\n display: flex;\n justify-content: space-between;\n padding-top: 5px;\n align-items: baseline;\n }\n\n .visibility-notice.edit-warning {\n > :first-child {\n margin-top: 0;\n }\n\n > :last-child {\n margin-bottom: 0;\n }\n }\n\n // Order is not necessary but a good indicator\n .media-upload-icon {\n order: 1;\n justify-content: left;\n }\n\n .emoji-icon {\n order: 2;\n justify-content: center;\n }\n\n .poll-icon {\n order: 3;\n justify-content: right;\n }\n\n .media-upload-icon,\n .poll-icon,\n .emoji-icon {\n font-size: 1.85em;\n line-height: 1.1;\n flex: 1;\n padding: 0 0.1em;\n display: flex;\n align-items: center;\n\n &.selected,\n &:hover {\n // needs to be specific to override icon default color\n svg,\n i,\n label {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n\n &.disabled {\n svg,\n i {\n cursor: not-allowed;\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n\n &:hover {\n color: $fallback--icon;\n color: var(--btnDisabledText, $fallback--icon);\n }\n }\n }\n }\n\n .error {\n text-align: center;\n }\n\n .media-upload-wrapper {\n margin-right: 0.2em;\n margin-bottom: 0.5em;\n width: 18em;\n\n img,\n video {\n object-fit: contain;\n max-height: 10em;\n }\n\n .video {\n max-height: 10em;\n }\n\n input {\n flex: 1;\n width: 100%;\n }\n }\n\n .status-input-wrapper {\n display: flex;\n position: relative;\n width: 100%;\n flex-direction: column;\n }\n\n .btn[disabled] {\n cursor: not-allowed;\n }\n\n form {\n display: flex;\n flex-direction: column;\n margin: 0.6em;\n position: relative;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n padding: 0.25em 0.5em 0.5em;\n line-height: 1.85;\n }\n\n .form-post-body {\n // TODO: make a resizable textarea component?\n box-sizing: content-box; // needed for easier computation of dynamic size\n overflow: hidden;\n transition: min-height 200ms 100ms;\n // stock padding + 1 line of text (for counter)\n padding-bottom: calc(var(--_padding) + var(--post-line-height) * 1em);\n // two lines of text\n height: calc(var(--post-line-height) * 1em);\n min-height: calc(var(--post-line-height) * 1em);\n resize: none;\n\n &.scrollable-form {\n overflow-y: auto;\n }\n }\n\n .main-input {\n position: relative;\n }\n\n .character-counter {\n position: absolute;\n bottom: 0;\n right: 0;\n padding: 0;\n margin: 0 0.5em;\n\n &.error {\n color: $fallback--cRed;\n color: var(--cRed, $fallback--cRed);\n }\n }\n\n @keyframes fade-in {\n from { opacity: 0; }\n to { opacity: 0.6; }\n }\n\n @keyframes fade-out {\n from { opacity: 0.6; }\n to { opacity: 0; }\n }\n\n .drop-indicator {\n position: absolute;\n width: 100%;\n height: 100%;\n font-size: 5em;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.6;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n background-color: $fallback--bg;\n background-color: var(--bg, $fallback--bg);\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n border: 2px dashed $fallback--text;\n border: 2px dashed var(--text, $fallback--text);\n }\n}\n</style>\n","<template>\n <div\n v-if=\"visible\"\n class=\"poll-form\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"index\"\n class=\"poll-option\"\n >\n <div class=\"input-container\">\n <input\n :id=\"`poll-${index}`\"\n v-model=\"options[index]\"\n size=\"1\"\n class=\"poll-option-input\"\n type=\"text\"\n :placeholder=\"$t('polls.option')\"\n :maxlength=\"maxLength\"\n @change=\"updatePollToParent\"\n @keydown.enter.stop.prevent=\"nextOption(index)\"\n >\n </div>\n <button\n v-if=\"options.length > 2\"\n class=\"delete-option button-unstyled -hover-highlight\"\n @click=\"deleteOption(index)\"\n >\n <FAIcon icon=\"times\" />\n </button>\n </div>\n <button\n v-if=\"options.length < maxOptions\"\n class=\"add-option faint button-unstyled -hover-highlight\"\n @click=\"addOption\"\n >\n <FAIcon\n icon=\"plus\"\n size=\"sm\"\n />\n\n {{ $t(\"polls.add_option\") }}\n </button>\n <div class=\"poll-type-expiry\">\n <div\n class=\"poll-type\"\n :title=\"$t('polls.type')\"\n >\n <Select\n v-model=\"pollType\"\n class=\"poll-type-select\"\n unstyled=\"true\"\n @change=\"updatePollToParent\"\n >\n <option value=\"single\">\n {{ $t('polls.single_choice') }}\n </option>\n <option value=\"multiple\">\n {{ $t('polls.multiple_choices') }}\n </option>\n </Select>\n </div>\n <div\n class=\"poll-expiry\"\n :title=\"$t('polls.expiry')\"\n >\n <input\n v-model=\"expiryAmount\"\n type=\"number\"\n class=\"expiry-amount hide-number-spinner\"\n :min=\"minExpirationInCurrentUnit\"\n :max=\"maxExpirationInCurrentUnit\"\n @change=\"expiryAmountChange\"\n >\n {{ ' ' }}\n <Select\n v-model=\"expiryUnit\"\n unstyled=\"true\"\n class=\"expiry-unit\"\n @change=\"expiryAmountChange\"\n >\n <option\n v-for=\"unit in expiryUnits\"\n :key=\"unit\"\n :value=\"unit\"\n >\n {{ $tc(`time.unit.${unit}_short`, expiryAmount, ['']) }}\n </option>\n </Select>\n </div>\n </div>\n </div>\n</template>\n\n<script src=\"./poll_form.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.poll-form {\n display: flex;\n flex-direction: column;\n padding: 0 0.5em 0.5em;\n\n .add-option {\n align-self: flex-start;\n padding-top: 0.25em;\n padding-left: 0.1em;\n }\n\n .poll-option {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n margin-bottom: 0.25em;\n }\n\n .input-container {\n width: 100%;\n\n input {\n // Hack: dodge the floating X icon\n padding-right: 2.5em;\n width: 100%;\n }\n }\n\n .delete-option {\n // Hack: Move the icon over the input box\n width: 1.5em;\n margin-left: -1.5em;\n z-index: 1;\n }\n\n .poll-type-expiry {\n margin-top: 0.5em;\n display: flex;\n width: 100%;\n }\n\n .poll-type {\n margin-right: 0.75em;\n flex: 1 1 60%;\n\n .poll-type-select {\n padding-right: 0.75em;\n }\n }\n\n .poll-expiry {\n display: flex;\n\n .expiry-amount {\n width: 3em;\n text-align: right;\n }\n }\n}\n</style>\n","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport Select from '../select/select.vue'\nimport {\n faTimes,\n faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faPlus\n)\n\nexport default {\n components: {\n Select\n },\n name: 'PollForm',\n props: ['visible'],\n data: () => ({\n pollType: 'single',\n options: ['', ''],\n expiryAmount: 10,\n expiryUnit: 'minutes'\n }),\n computed: {\n pollLimits () {\n return this.$store.state.instance.pollLimits\n },\n maxOptions () {\n return this.pollLimits.max_options\n },\n maxLength () {\n return this.pollLimits.max_option_chars\n },\n expiryUnits () {\n const allUnits = ['minutes', 'hours', 'days']\n const expiry = this.convertExpiryFromUnit\n return allUnits.filter(\n unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n )\n },\n minExpirationInCurrentUnit () {\n return Math.ceil(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.min_expiration\n )\n )\n },\n maxExpirationInCurrentUnit () {\n return Math.floor(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.max_expiration\n )\n )\n }\n },\n methods: {\n clear () {\n this.pollType = 'single'\n this.options = ['', '']\n this.expiryAmount = 10\n this.expiryUnit = 'minutes'\n },\n nextOption (index) {\n const element = this.$el.querySelector(`#poll-${index + 1}`)\n if (element) {\n element.focus()\n } else {\n // Try adding an option and try focusing on it\n const addedOption = this.addOption()\n if (addedOption) {\n this.$nextTick(function () {\n this.nextOption(index)\n })\n }\n }\n },\n addOption () {\n if (this.options.length < this.maxOptions) {\n this.options.push('')\n return true\n }\n return false\n },\n deleteOption (index, event) {\n if (this.options.length > 2) {\n this.options.splice(index, 1)\n this.updatePollToParent()\n }\n },\n convertExpiryToUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n return DateUtils.secondsToUnit(unit, amount)\n },\n convertExpiryFromUnit (unit, amount) {\n return DateUtils.unitToSeconds(unit, amount)\n },\n expiryAmountChange () {\n this.expiryAmount =\n Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n this.expiryAmount =\n Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n this.updatePollToParent()\n },\n updatePollToParent () {\n const expiresIn = this.convertExpiryFromUnit(\n this.expiryUnit,\n this.expiryAmount\n )\n\n const options = uniq(this.options.filter(option => option !== ''))\n if (options.length < 2) {\n this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n return\n }\n this.$emit('update-poll', {\n options,\n multiple: this.pollType === 'multiple',\n expiresIn\n })\n }\n }\n}\n","import { render } from \"./poll_form.vue?vue&type=template&id=24ea52c8\"\nimport script from \"./poll_form.js?vue&type=script&lang=js\"\nexport * from \"./poll_form.js?vue&type=script&lang=js\"\n\nimport \"./poll_form.vue?vue&type=style&index=0&id=24ea52c8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport genRandomSeed from '../../services/random_seed/random_seed.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport Gallery from 'src/components/gallery/gallery.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { propsToNative } from '../../services/attributes_helper/attributes_helper.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Select from '../select/select.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n let allAttentions = [...attentions]\n\n allAttentions.unshift(user)\n\n allAttentions = uniqBy(allAttentions, 'id')\n allAttentions = reject(allAttentions, { id: currentUser.id })\n\n const mentions = map(allAttentions, (attention) => {\n return `@${attention.screen_name}`\n })\n\n return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n props: [\n 'statusId',\n 'statusText',\n 'statusIsSensitive',\n 'statusPoll',\n 'statusFiles',\n 'statusMediaDescriptions',\n 'statusScope',\n 'statusContentType',\n 'replyTo',\n 'repliedUser',\n 'attentions',\n 'copyMessageScope',\n 'subject',\n 'disableSubject',\n 'disableScopeSelector',\n 'disableVisibilitySelector',\n 'disableNotice',\n 'disableLockWarning',\n 'disablePolls',\n 'disableSensitivityCheckbox',\n 'disableSubmit',\n 'disablePreview',\n 'placeholder',\n 'maxHeight',\n 'postHandler',\n 'preserveFocus',\n 'autoFocus',\n 'fileLimit',\n 'submitOnEnter',\n 'emojiPickerPlacement',\n 'optimisticPosting'\n ],\n emits: [\n 'posted',\n 'resize',\n 'mediaplay',\n 'mediapause'\n ],\n components: {\n MediaUpload,\n EmojiInput,\n PollForm,\n ScopeSelector,\n Checkbox,\n Select,\n Attachment,\n StatusContent,\n Gallery\n },\n mounted () {\n this.updateIdempotencyKey()\n this.resize(this.$refs.textarea)\n\n if (this.replyTo) {\n const textLength = this.$refs.textarea.value.length\n this.$refs.textarea.setSelectionRange(textLength, textLength)\n }\n\n if (this.replyTo || this.autoFocus) {\n this.$refs.textarea.focus()\n }\n },\n data () {\n const preset = this.$route.query.message\n let statusText = preset || ''\n\n const { scopeCopy } = this.$store.getters.mergedConfig\n\n if (this.replyTo) {\n const currentUser = this.$store.state.users.currentUser\n statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n }\n\n const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n ? this.copyMessageScope\n : this.$store.state.users.currentUser.default_scope\n\n const { postContentType: contentType, sensitiveByDefault } = this.$store.getters.mergedConfig\n\n let statusParams = {\n spoilerText: this.subject || '',\n status: statusText,\n nsfw: !!sensitiveByDefault,\n files: [],\n poll: {},\n mediaDescriptions: {},\n visibility: scope,\n contentType\n }\n\n if (this.statusId) {\n const statusContentType = this.statusContentType || contentType\n statusParams = {\n spoilerText: this.subject || '',\n status: this.statusText || '',\n nsfw: this.statusIsSensitive || !!sensitiveByDefault,\n files: this.statusFiles || [],\n poll: this.statusPoll || {},\n mediaDescriptions: this.statusMediaDescriptions || {},\n visibility: this.statusScope || scope,\n contentType: statusContentType,\n quoting: false\n }\n }\n\n return {\n randomSeed: genRandomSeed(),\n dropFiles: [],\n uploadingFiles: false,\n error: null,\n posting: false,\n highlighted: 0,\n newStatus: statusParams,\n caret: 0,\n pollFormVisible: false,\n showDropIcon: 'hide',\n dropStopTimeout: null,\n preview: null,\n previewLoading: false,\n emojiInputShown: false,\n idempotencyKey: ''\n }\n },\n computed: {\n users () {\n return this.$store.state.users.users\n },\n userDefaultScope () {\n return this.$store.state.users.currentUser.default_scope\n },\n showAllScopes () {\n return !this.mergedConfig.minimalScopesMode\n },\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.getters.standardEmojiList,\n ...this.$store.state.instance.customEmoji\n ],\n store: this.$store\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.getters.standardEmojiList,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n emoji () {\n return this.$store.getters.standardEmojiList || []\n },\n customEmoji () {\n return this.$store.state.instance.customEmoji || []\n },\n statusLength () {\n return this.newStatus.status.length\n },\n spoilerTextLength () {\n return this.newStatus.spoilerText.length\n },\n statusLengthLimit () {\n return this.$store.state.instance.textlimit\n },\n hasStatusLengthLimit () {\n return this.statusLengthLimit > 0\n },\n charactersLeft () {\n return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n },\n isOverLengthLimit () {\n return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n },\n minimalScopesMode () {\n return this.$store.state.instance.minimalScopesMode\n },\n alwaysShowSubject () {\n return this.mergedConfig.alwaysShowSubjectInput\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n safeDMEnabled () {\n return this.$store.state.instance.safeDM\n },\n pollsAvailable () {\n return this.$store.state.instance.pollsAvailable &&\n this.$store.state.instance.pollLimits.max_options >= 2 &&\n this.disablePolls !== true\n },\n hideScopeNotice () {\n return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n },\n pollContentError () {\n return this.pollFormVisible &&\n this.newStatus.poll &&\n this.newStatus.poll.error\n },\n showPreview () {\n return !this.disablePreview && (!!this.preview || this.previewLoading)\n },\n emptyStatus () {\n return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n },\n uploadFileLimitReached () {\n return this.newStatus.files.length >= this.fileLimit\n },\n isEdit () {\n return typeof this.statusId !== 'undefined' && this.statusId.trim() !== ''\n },\n quotable () {\n if (!this.$store.state.instance.quotingAvailable) {\n return false\n }\n\n if (!this.replyTo) {\n return false\n }\n\n const repliedStatus = this.$store.state.statuses.allStatusesObject[this.replyTo]\n if (!repliedStatus) {\n return false\n }\n\n if (repliedStatus.visibility === 'public' ||\n repliedStatus.visibility === 'unlisted' ||\n repliedStatus.visibility === 'local') {\n return true\n } else if (repliedStatus.visibility === 'private') {\n return repliedStatus.user.id === this.$store.state.users.currentUser.id\n }\n\n return false\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n mobileLayout: state => state.interface.mobileLayout\n })\n },\n watch: {\n newStatus: {\n deep: true,\n handler () {\n this.statusChanged()\n }\n }\n },\n methods: {\n statusChanged () {\n this.autoPreview()\n this.updateIdempotencyKey()\n },\n clearStatus () {\n const newStatus = this.newStatus\n this.newStatus = {\n status: '',\n spoilerText: '',\n files: [],\n visibility: newStatus.visibility,\n contentType: newStatus.contentType,\n poll: {},\n mediaDescriptions: {},\n quoting: false\n }\n this.pollFormVisible = false\n this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n this.clearPollForm()\n if (this.preserveFocus) {\n this.$nextTick(() => {\n this.$refs.textarea.focus()\n })\n }\n const el = this.$el.querySelector('textarea')\n el.style.height = 'auto'\n el.style.height = undefined\n this.error = null\n if (this.preview) this.previewStatus()\n },\n async postStatus (event, newStatus, opts = {}) {\n if (this.posting && !this.optimisticPosting) { return }\n if (this.disableSubmit) { return }\n if (this.emojiInputShown) { return }\n if (this.submitOnEnter) {\n event.stopPropagation()\n event.preventDefault()\n }\n\n if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n if (this.emptyStatus) {\n this.error = this.$t('post_status.empty_status_error')\n return\n }\n\n const poll = this.pollFormVisible ? this.newStatus.poll : {}\n if (this.pollContentError) {\n this.error = this.pollContentError\n return\n }\n\n this.posting = true\n\n try {\n await this.setAllMediaDescriptions()\n } catch (e) {\n this.error = this.$t('post_status.media_description_error')\n this.posting = false\n return\n }\n\n const replyOrQuoteAttr = newStatus.quoting ? 'quoteId' : 'inReplyToStatusId'\n\n const postingOptions = {\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: newStatus.files,\n store: this.$store,\n [replyOrQuoteAttr]: this.replyTo,\n contentType: newStatus.contentType,\n poll,\n idempotencyKey: this.idempotencyKey\n }\n\n const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n postHandler(postingOptions).then((data) => {\n if (!data.error) {\n this.clearStatus()\n this.$emit('posted', data)\n } else {\n this.error = data.error\n }\n this.posting = false\n })\n },\n previewStatus () {\n if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n this.preview = { error: this.$t('post_status.preview_empty') }\n this.previewLoading = false\n return\n }\n const newStatus = this.newStatus\n this.previewLoading = true\n const replyOrQuoteAttr = newStatus.quoting ? 'quoteId' : 'inReplyToStatusId'\n statusPoster.postStatus({\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: [],\n store: this.$store,\n [replyOrQuoteAttr]: this.replyTo,\n contentType: newStatus.contentType,\n poll: {},\n preview: true\n }).then((data) => {\n // Don't apply preview if not loading, because it means\n // user has closed the preview manually.\n if (!this.previewLoading) return\n if (!data.error) {\n this.preview = data\n } else {\n this.preview = { error: data.error }\n }\n }).catch((error) => {\n this.preview = { error }\n }).finally(() => {\n this.previewLoading = false\n })\n },\n debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n autoPreview () {\n if (!this.preview) return\n this.previewLoading = true\n this.debouncePreviewStatus()\n },\n closePreview () {\n this.preview = null\n this.previewLoading = false\n },\n togglePreview () {\n if (this.showPreview) {\n this.closePreview()\n } else {\n this.previewStatus()\n }\n },\n addMediaFile (fileInfo) {\n this.newStatus.files.push(fileInfo)\n this.$emit('resize', { delayed: true })\n },\n removeMediaFile (fileInfo) {\n const index = this.newStatus.files.indexOf(fileInfo)\n this.newStatus.files.splice(index, 1)\n this.$emit('resize')\n },\n editAttachment (fileInfo, newText) {\n this.newStatus.mediaDescriptions[fileInfo.id] = newText\n },\n shiftUpMediaFile (fileInfo) {\n const { files } = this.newStatus\n const index = this.newStatus.files.indexOf(fileInfo)\n files.splice(index, 1)\n files.splice(index - 1, 0, fileInfo)\n },\n shiftDnMediaFile (fileInfo) {\n const { files } = this.newStatus\n const index = this.newStatus.files.indexOf(fileInfo)\n files.splice(index, 1)\n files.splice(index + 1, 0, fileInfo)\n },\n uploadFailed (errString, templateArgs) {\n templateArgs = templateArgs || {}\n this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n },\n startedUploadingFiles () {\n this.uploadingFiles = true\n },\n finishedUploadingFiles () {\n this.$emit('resize')\n this.uploadingFiles = false\n },\n type (fileInfo) {\n return fileTypeService.fileType(fileInfo.mimetype)\n },\n paste (e) {\n this.autoPreview()\n this.resize(e)\n if (e.clipboardData.files.length > 0) {\n // prevent pasting of file as text\n e.preventDefault()\n // Strangely, files property gets emptied after event propagation\n // Trying to wrap it in array doesn't work. Plus I doubt it's possible\n // to hold more than one file in clipboard.\n this.dropFiles = [e.clipboardData.files[0]]\n }\n },\n fileDrop (e) {\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n e.preventDefault() // allow dropping text like before\n this.dropFiles = e.dataTransfer.files\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'hide'\n }\n },\n fileDragStop (e) {\n // The false-setting is done with delay because just using leave-events\n // directly caused unwanted flickering, this is not perfect either but\n // much less noticable.\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'fade'\n this.dropStopTimeout = setTimeout(() => (this.showDropIcon = 'hide'), 500)\n },\n fileDrag (e) {\n e.dataTransfer.dropEffect = this.uploadFileLimitReached ? 'none' : 'copy'\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'show'\n }\n },\n onEmojiInputInput (e) {\n this.$nextTick(() => {\n this.resize(this.$refs.textarea)\n })\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n\n // Reset to default height for empty form, nothing else to do here.\n if (target.value === '') {\n target.style.height = null\n this.$emit('resize')\n return\n }\n\n const formRef = this.$refs.form\n const bottomRef = this.$refs.bottom\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n const scrollerRef = this.$el.closest('.column.-scrollable') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n\n // Getting info about padding we have to account for, removing 'px' part\n const topPaddingStr = window.getComputedStyle(target)['padding-top']\n const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']\n const topPadding = pxStringToNumber(topPaddingStr)\n const bottomPadding = pxStringToNumber(bottomPaddingStr)\n const vertPadding = topPadding + bottomPadding\n\n const oldHeight = pxStringToNumber(target.style.height)\n\n /* Explanation:\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n * scrollHeight returns element's scrollable content height, i.e. visible\n * element + overscrolled parts of it. We use it to determine when text\n * inside the textarea exceeded its height, so we can set height to prevent\n * overscroll, i.e. make textarea grow with the text. HOWEVER, since we\n * explicitly set new height, scrollHeight won't go below that, so we can't\n * SHRINK the textarea when there's extra space. To workaround that we set\n * height to 'auto' which makes textarea tiny again, so that scrollHeight\n * will match text height again. HOWEVER, shrinking textarea can screw with\n * the scroll since there might be not enough padding around form-bottom to even\n * warrant a scroll, so it will jump to 0 and refuse to move anywhere,\n * so we check current scroll position before shrinking and then restore it\n * with needed delta.\n */\n\n // this part has to be BEFORE the content size update\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n const scrollerBottomBorder = currentScroll + scrollerHeight\n\n // BEGIN content size update\n target.style.height = 'auto'\n const heightWithoutPadding = Math.floor(target.scrollHeight - vertPadding)\n let newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding\n // This is a bit of a hack to combat target.scrollHeight being different on every other input\n // on some browsers for whatever reason. Don't change the height if difference is 1px or less.\n if (Math.abs(newHeight - oldHeight) <= 1) {\n newHeight = oldHeight\n }\n target.style.height = `${newHeight}px`\n this.$emit('resize', newHeight)\n // END content size update\n\n // We check where the bottom border of form-bottom element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n // The intention is basically this;\n // Keep form-bottom always visible so that submit button is in view EXCEPT\n // if form element bigger than scroller and caret isn't at the end, so that\n // if you scroll up and edit middle of text you won't get scrolled back to bottom\n const shouldScrollToBottom = isBottomObstructed &&\n !(isFormBiggerThanScroller &&\n this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n const targetScroll = Math.round(currentScroll + totalDelta)\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n },\n showEmojiPicker () {\n this.$refs.textarea.focus()\n this.$refs['emoji-input'].triggerShowPicker()\n },\n clearError () {\n this.error = null\n },\n changeVis (visibility) {\n this.newStatus.visibility = visibility\n },\n togglePollForm () {\n this.pollFormVisible = !this.pollFormVisible\n },\n setPoll (poll) {\n this.newStatus.poll = poll\n },\n clearPollForm () {\n if (this.$refs.pollForm) {\n this.$refs.pollForm.clear()\n }\n },\n dismissScopeNotice () {\n this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n },\n setMediaDescription (id) {\n const description = this.newStatus.mediaDescriptions[id]\n if (!description || description.trim() === '') return\n return statusPoster.setMediaDescription({ store: this.$store, id, description })\n },\n setAllMediaDescriptions () {\n const ids = this.newStatus.files.map(file => file.id)\n return Promise.all(ids.map(id => this.setMediaDescription(id)))\n },\n handleEmojiInputShow (value) {\n this.emojiInputShown = value\n },\n updateIdempotencyKey () {\n this.idempotencyKey = Date.now().toString()\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n },\n propsToNative (props) {\n return propsToNative(props)\n }\n }\n}\n\nexport default PostStatusForm\n","import { render } from \"./post_status_form.vue?vue&type=template&id=59414186\"\nimport script from \"./post_status_form.js?vue&type=script&lang=js\"\nexport * from \"./post_status_form.js?vue&type=script&lang=js\"\n\nimport \"./post_status_form.vue?vue&type=style&index=0&id=59414186&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <button\n :disabled=\"progress || disabled\"\n @click=\"onClick\"\n >\n <template v-if=\"progress && $slots.progress\">\n <slot name=\"progress\" />\n </template>\n <template v-else>\n <slot />\n </template>\n </button>\n</template>\n\n<script>\nexport default {\n props: {\n disabled: {\n type: Boolean\n },\n click: { // click event handler. Must return a promise\n type: Function,\n default: () => Promise.resolve()\n }\n },\n data () {\n return {\n progress: false\n }\n },\n methods: {\n onClick () {\n this.progress = true\n this.click().then(() => { this.progress = false })\n }\n }\n}\n</script>\n","import { render } from \"./progress_button.vue?vue&type=template&id=9f751ae6\"\nimport script from \"./progress_button.vue?vue&type=script&lang=js\"\nexport * from \"./progress_button.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"remote-follow\">\n <form\n method=\"POST\"\n :action=\"subscribeUrl\"\n >\n <input\n type=\"hidden\"\n name=\"nickname\"\n :value=\"user.screen_name\"\n >\n <input\n type=\"hidden\"\n name=\"profile\"\n value=\"\"\n >\n <button\n click=\"submit\"\n class=\"button-default remote-button\"\n >\n {{ $t('user_card.remote_follow') }}\n </button>\n </form>\n </div>\n</template>\n\n<script src=\"./remote_follow.js\"></script>\n\n<style lang=\"scss\">\n.remote-follow {\n max-width: 220px;\n\n .remote-button {\n width: 100%;\n min-height: 2em;\n }\n}\n</style>\n","export default {\n props: ['user'],\n computed: {\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n }\n }\n}\n","import { render } from \"./remote_follow.vue?vue&type=template&id=2aed8421\"\nimport script from \"./remote_follow.js?vue&type=script&lang=js\"\nexport * from \"./remote_follow.js?vue&type=script&lang=js\"\n\nimport \"./remote_follow.vue?vue&type=style&index=0&id=2aed8421&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n v-if=\"!showNothing\"\n class=\"ScopeSelector\"\n >\n <button\n v-if=\"showDirect\"\n class=\"button-unstyled scope\"\n :class=\"css.direct\"\n :title=\"$t('post_status.scope.direct')\"\n type=\"button\"\n @click=\"changeVis('direct')\"\n >\n <FAIcon\n icon=\"envelope\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n {{ ' ' }}\n <button\n v-if=\"showPrivate\"\n class=\"button-unstyled scope\"\n :class=\"css.private\"\n :title=\"$t('post_status.scope.private')\"\n type=\"button\"\n @click=\"changeVis('private')\"\n >\n <FAIcon\n icon=\"lock\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n {{ ' ' }}\n <button\n v-if=\"showUnlisted\"\n class=\"button-unstyled scope\"\n :class=\"css.unlisted\"\n :title=\"$t('post_status.scope.unlisted')\"\n type=\"button\"\n @click=\"changeVis('unlisted')\"\n >\n <FAIcon\n icon=\"lock-open\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n {{ ' ' }}\n <button\n v-if=\"showPublic\"\n class=\"button-unstyled scope\"\n :class=\"css.public\"\n :title=\"$t('post_status.scope.public')\"\n type=\"button\"\n @click=\"changeVis('public')\"\n >\n <FAIcon\n icon=\"globe\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n </div>\n</template>\n\n<script src=\"./scope_selector.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.ScopeSelector {\n .scope {\n display: inline-block;\n cursor: pointer;\n min-width: 1.3em;\n min-height: 1.3em;\n text-align: center;\n\n &.selected svg {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen\n)\n\nconst ScopeSelector = {\n props: [\n 'showAll',\n 'userDefault',\n 'originalScope',\n 'initialScope',\n 'onScopeChange'\n ],\n data () {\n return {\n currentScope: this.initialScope\n }\n },\n computed: {\n showNothing () {\n return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n },\n showPublic () {\n return this.originalScope !== 'direct' && this.shouldShow('public')\n },\n showUnlisted () {\n return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n },\n showPrivate () {\n return this.originalScope !== 'direct' && this.shouldShow('private')\n },\n showDirect () {\n return this.shouldShow('direct')\n },\n css () {\n return {\n public: { selected: this.currentScope === 'public' },\n unlisted: { selected: this.currentScope === 'unlisted' },\n private: { selected: this.currentScope === 'private' },\n direct: { selected: this.currentScope === 'direct' }\n }\n }\n },\n methods: {\n shouldShow (scope) {\n return this.showAll ||\n this.currentScope === scope ||\n this.originalScope === scope ||\n this.userDefault === scope ||\n scope === 'direct'\n },\n changeVis (scope) {\n this.currentScope = scope\n this.onScopeChange && this.onScopeChange(scope)\n }\n }\n}\n\nexport default ScopeSelector\n","import { render } from \"./scope_selector.vue?vue&type=template&id=3b2dbc9a\"\nimport script from \"./scope_selector.js?vue&type=script&lang=js\"\nexport * from \"./scope_selector.js?vue&type=script&lang=js\"\n\nimport \"./scope_selector.vue?vue&type=style&index=0&id=3b2dbc9a&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronDown\n)\n\nexport default {\n emits: ['update:modelValue'],\n props: [\n 'modelValue',\n 'disabled',\n 'unstyled',\n 'kind',\n 'attrs'\n ]\n}\n","import { render } from \"./select.vue?vue&type=template&id=1f77c9b6\"\nimport script from \"./select.js?vue&type=script&lang=js\"\nexport * from \"./select.js?vue&type=script&lang=js\"\n\nimport \"./select.vue?vue&type=style&index=0&id=1f77c9b6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <label\n class=\"Select input\"\n :class=\"{ disabled, unstyled }\"\n >\n <select\n :disabled=\"disabled\"\n :value=\"modelValue\"\n v-bind=\"attrs\"\n @change=\"$emit('update:modelValue', $event.target.value)\"\n >\n <slot />\n </select>\n {{ ' ' }}\n <FAIcon\n class=\"select-down-icon\"\n icon=\"chevron-down\"\n />\n </label>\n</template>\n\n<script src=\"./select.js\"> </script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n/* TODO fix order of styles */\nlabel.Select {\n padding: 0;\n\n select {\n appearance: none;\n background: transparent;\n border: none;\n color: $fallback--text;\n color: var(--inputText, --text, $fallback--text);\n margin: 0;\n padding: 0 2em 0 0.2em;\n font-family: sans-serif;\n font-family: var(--inputFont, sans-serif);\n font-size: 1em;\n width: 100%;\n z-index: 1;\n height: 2em;\n line-height: 16px;\n }\n\n .select-down-icon {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 5px;\n height: 100%;\n width: 0.875em;\n color: $fallback--text;\n color: var(--inputText, $fallback--text);\n line-height: 2;\n z-index: 0;\n pointer-events: none;\n }\n}\n</style>\n","<template>\n <div\n v-if=\"!hideStatus\"\n ref=\"root\"\n class=\"Status\"\n :class=\"[{ '-focused': isFocused }, { '-conversation': inlineExpanded }]\"\n >\n <div\n v-if=\"error\"\n class=\"alert error\"\n >\n {{ error }}\n <span\n class=\"fa-scale-110 fa-old-padding\"\n @click=\"clearError\"\n >\n <FAIcon icon=\"times\" />\n </span>\n </div>\n <template v-if=\"muted && !isPreview\">\n <div class=\"status-container muted\">\n <small class=\"status-username\">\n <FAIcon\n v-if=\"muted && retweet\"\n class=\"fa-scale-110 fa-old-padding repeat-icon\"\n icon=\"retweet\"\n />\n <user-link\n :user=\"status.user\"\n :at=\"false\"\n />\n </small>\n <small\n v-if=\"showReasonMutedThread\"\n class=\"mute-thread\"\n >\n {{ $t('status.thread_muted') }}\n </small>\n <small\n v-if=\"showReasonMutedThread && muteWordHits.length > 0\"\n class=\"mute-thread\"\n >\n {{ $t('status.thread_muted_and_words') }}\n </small>\n <small\n class=\"mute-words\"\n :title=\"muteWordHits.join(', ')\"\n >\n {{ muteWordHits.join(', ') }}\n </small>\n <button\n class=\"unmute button-unstyled\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n icon=\"eye-slash\"\n class=\"fa-scale-110 fa-old-padding\"\n />\n </button>\n </div>\n </template>\n <template v-else>\n <div\n v-if=\"showPinned\"\n class=\"pin\"\n >\n <FAIcon\n icon=\"thumbtack\"\n class=\"faint\"\n />\n <span class=\"faint\">{{ $t('status.pinned') }}</span>\n </div>\n <div\n v-if=\"retweet && !noHeading && !inConversation\"\n :class=\"[repeaterClass, { highlighted: repeaterStyle }]\"\n :style=\"[repeaterStyle]\"\n class=\"status-container repeat-info\"\n >\n <UserAvatar\n v-if=\"retweet\"\n class=\"left-side repeater-avatar\"\n :bot=\"rtBotIndicator\"\n :better-shadow=\"betterShadow\"\n :user=\"statusoid.user\"\n />\n <div class=\"right-side faint\">\n <bdi\n class=\"status-username repeater-name\"\n :title=\"retweeter\"\n >\n <router-link\n v-if=\"retweeterHtml\"\n :to=\"retweeterProfileLink\"\n >\n <RichContent\n :html=\"retweeterHtml\"\n :emoji=\"retweeterUser.emoji\"\n />\n </router-link>\n <router-link\n v-else\n :to=\"retweeterProfileLink\"\n >{{ retweeter }}</router-link>\n </bdi>\n {{ ' ' }}\n <FAIcon\n icon=\"retweet\"\n class=\"repeat-icon\"\n :title=\"$t('tool_tip.repeat')\"\n />\n {{ $t('timeline.repeated') }}\n </div>\n </div>\n\n <div\n v-if=\"!deleted\"\n :class=\"[userClass, { highlighted: userStyle, '-repeat': retweet && !inConversation }]\"\n :style=\"[ userStyle ]\"\n class=\"status-container\"\n :data-tags=\"tags\"\n >\n <div\n v-if=\"!noHeading\"\n class=\"left-side\"\n >\n <a\n :href=\"$router.resolve(userProfileLink).href\"\n @click.prevent\n >\n <UserPopover\n :user-id=\"status.user.id\"\n :overlay-centers=\"true\"\n >\n <UserAvatar\n class=\"post-avatar\"\n :bot=\"botIndicator\"\n :compact=\"compact\"\n :better-shadow=\"betterShadow\"\n :user=\"status.user\"\n />\n </UserPopover>\n </a>\n </div>\n <div class=\"right-side\">\n <div\n v-if=\"!noHeading\"\n class=\"status-heading\"\n >\n <div class=\"heading-name-row\">\n <div class=\"heading-left\">\n <h4\n v-if=\"status.user.name_html\"\n class=\"status-username\"\n :title=\"status.user.name\"\n >\n <RichContent\n :html=\"status.user.name\"\n :emoji=\"status.user.emoji\"\n />\n </h4>\n <h4\n v-else\n class=\"status-username\"\n :title=\"status.user.name\"\n >\n {{ status.user.name }}\n </h4>\n <user-link\n class=\"account-name\"\n :title=\"status.user.screen_name_ui\"\n :user=\"status.user\"\n :at=\"false\"\n />\n <img\n v-if=\"!!(status.user && status.user.favicon)\"\n class=\"status-favicon\"\n :src=\"status.user.favicon\"\n >\n </div>\n\n <span class=\"heading-right\">\n <router-link\n class=\"timeago faint-link\"\n :to=\"{ name: 'conversation', params: { id: status.id } }\"\n >\n <Timeago\n :time=\"status.created_at\"\n :auto-update=\"60\"\n />\n </router-link>\n <span\n v-if=\"status.visibility\"\n class=\"visibility-icon\"\n :title=\"visibilityLocalized\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"visibilityIcon(status.visibility)\"\n />\n </span>\n <button\n v-if=\"expandable && !isPreview\"\n class=\"button-unstyled\"\n :title=\"$t('status.expand')\"\n @click.prevent=\"toggleExpanded\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n icon=\"plus-square\"\n />\n </button>\n <button\n v-if=\"unmuted\"\n class=\"button-unstyled\"\n @click.prevent=\"toggleMute\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n class=\"fa-scale-110\"\n />\n </button>\n <button\n v-if=\"inThreadForest && replies && replies.length && !simpleTree\"\n class=\"button-unstyled\"\n :title=\"threadShowing ? $t('status.thread_hide') : $t('status.thread_show')\"\n :aria-expanded=\"threadShowing ? 'true' : 'false'\"\n @click.prevent=\"toggleThreadDisplay\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"threadShowing ? 'chevron-up' : 'chevron-down'\"\n />\n </button>\n <button\n v-if=\"dive && !simpleTree\"\n class=\"button-unstyled\"\n :title=\"$t('status.show_only_conversation_under_this')\"\n @click.prevent=\"dive\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110\"\n :icon=\"'angle-double-right'\"\n />\n </button>\n </span>\n </div>\n <div\n v-if=\"isReply || hasMentionsLine\"\n class=\"heading-reply-row\"\n >\n <span\n v-if=\"isReply\"\n class=\"glued-label reply-glued-label\"\n >\n <StatusPopover\n v-if=\"!isPreview\"\n :status-id=\"status.parent_visible && status.in_reply_to_status_id\"\n class=\"reply-to-popover\"\n style=\"min-width: 0;\"\n :class=\"{ '-strikethrough': !status.parent_visible }\"\n >\n <button\n class=\"button-unstyled reply-to\"\n :aria-label=\"$t('tool_tip.reply')\"\n @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"reply\"\n flip=\"horizontal\"\n />\n {{ ' ' }}\n <span\n class=\"reply-to-text\"\n >\n {{ $t('status.reply_to') }}\n </span>\n </button>\n </StatusPopover>\n\n <span\n v-else\n class=\"reply-to-no-popover\"\n >\n <span class=\"reply-to-text\">{{ $t('status.reply_to') }}</span>\n </span>\n <MentionLink\n :content=\"replyToName\"\n :url=\"replyProfileLink\"\n :user-id=\"status.in_reply_to_user_id\"\n :user-screen-name=\"status.in_reply_to_screen_name\"\n />\n </span>\n\n <!-- This little wrapper is made for sole purpose of \"gluing\" -->\n <!-- \"Mentions\" label to the first mention -->\n <span\n v-if=\"hasMentionsLine\"\n class=\"glued-label\"\n >\n <span\n class=\"mentions\"\n :aria-label=\"$t('tool_tip.mentions')\"\n @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n >\n <span\n class=\"mentions-text\"\n >\n {{ $t('status.mentions') }}\n </span>\n </span>\n <MentionsLine\n v-if=\"hasMentionsLine\"\n :mentions=\"mentionsLine.slice(0, 1)\"\n class=\"mentions-line-first\"\n />\n </span>\n {{ ' ' }}\n <MentionsLine\n v-if=\"hasMentionsLine\"\n :mentions=\"mentionsLine.slice(1)\"\n class=\"mentions-line\"\n />\n </div>\n <div\n v-if=\"isEdited && editingAvailable && !isPreview\"\n class=\"heading-edited-row\"\n >\n <i18n-t\n keypath=\"status.edited_at\"\n tag=\"span\"\n >\n <template #time>\n <Timeago\n template-key=\"time.in_past\"\n :time=\"status.edited_at\"\n :auto-update=\"60\"\n :long-format=\"true\"\n />\n </template>\n </i18n-t>\n </div>\n </div>\n\n <StatusContent\n ref=\"content\"\n :status=\"status\"\n :no-heading=\"noHeading\"\n :highlight=\"highlight\"\n :focused=\"isFocused\"\n :controlled-showing-tall=\"controlledShowingTall\"\n :controlled-expanding-subject=\"controlledExpandingSubject\"\n :controlled-showing-long-subject=\"controlledShowingLongSubject\"\n :controlled-toggle-showing-tall=\"controlledToggleShowingTall\"\n :controlled-toggle-expanding-subject=\"controlledToggleExpandingSubject\"\n :controlled-toggle-showing-long-subject=\"controlledToggleShowingLongSubject\"\n @mediaplay=\"addMediaPlaying($event)\"\n @mediapause=\"removeMediaPlaying($event)\"\n @parseReady=\"setHeadTailLinks\"\n />\n\n <article\n v-if=\"hasVisibleQuote\"\n class=\"quoted-status\"\n >\n <button\n class=\"button-unstyled -link display-quoted-status-button\"\n :aria-expanded=\"shouldDisplayQuote\"\n @click=\"toggleDisplayQuote\"\n >\n {{ shouldDisplayQuote ? $t('status.hide_quote') : $t('status.display_quote') }}\n <FAIcon\n class=\"display-quoted-status-button-icon\"\n :icon=\"shouldDisplayQuote ? 'chevron-up' : 'chevron-down'\"\n />\n </button>\n <Status\n v-if=\"shouldDisplayQuote\"\n :statusoid=\"quotedStatus\"\n :in-quote=\"true\"\n />\n </article>\n <p\n v-else-if=\"hasInvisibleQuote\"\n class=\"quoted-status -unavailable-prompt\"\n >\n <i18n-t keypath=\"status.invisible_quote\">\n <template #link>\n <bdi>\n <a\n :href=\"status.quote_url\"\n target=\"_blank\"\n >\n {{ status.quote_url }}\n </a>\n </bdi>\n </template>\n </i18n-t>\n </p>\n\n <div\n v-if=\"inConversation && !isPreview && replies && replies.length\"\n class=\"replies\"\n >\n <button\n v-if=\"showOtherRepliesAsButton && replies.length > 1\"\n class=\"button-unstyled -link faint\"\n :title=\"$tc('status.ancestor_follow', replies.length - 1, { numReplies: replies.length - 1 })\"\n @click.prevent=\"dive\"\n >\n {{ $tc('status.replies_list_with_others', replies.length - 1, { numReplies: replies.length - 1 }) }}\n </button>\n <span\n v-else\n class=\"faint\"\n >\n {{ $t('status.replies_list') }}\n </span>\n <StatusPopover\n v-for=\"reply in replies\"\n :key=\"reply.id\"\n :status-id=\"reply.id\"\n >\n <button\n class=\"button-unstyled -link reply-link\"\n @click.prevent=\"gotoOriginal(reply.id)\"\n >\n {{ reply.name }}\n </button>\n </StatusPopover>\n </div>\n\n <transition name=\"fade\">\n <div\n v-if=\"!hidePostStats && isFocused && combinedFavsAndRepeatsUsers.length > 0\"\n class=\"favs-repeated-users\"\n >\n <div class=\"stats\">\n <UserListPopover\n v-if=\"statusFromGlobalRepository.rebloggedBy && statusFromGlobalRepository.rebloggedBy.length > 0\"\n :users=\"statusFromGlobalRepository.rebloggedBy\"\n >\n <div class=\"stat-count\">\n <a class=\"stat-title\">{{ $t('status.repeats') }}</a>\n <div class=\"stat-number\">\n {{ statusFromGlobalRepository.rebloggedBy.length }}\n </div>\n </div>\n </UserListPopover>\n <UserListPopover\n v-if=\"statusFromGlobalRepository.favoritedBy && statusFromGlobalRepository.favoritedBy.length > 0\"\n :users=\"statusFromGlobalRepository.favoritedBy\"\n >\n <div\n class=\"stat-count\"\n >\n <a class=\"stat-title\">{{ $t('status.favorites') }}</a>\n <div class=\"stat-number\">\n {{ statusFromGlobalRepository.favoritedBy.length }}\n </div>\n </div>\n </UserListPopover>\n <div class=\"avatar-row\">\n <AvatarList :users=\"combinedFavsAndRepeatsUsers\" />\n </div>\n </div>\n </div>\n </transition>\n\n <EmojiReactions\n v-if=\"(mergedConfig.emojiReactionsOnTimeline || isFocused) && (!noHeading && !isPreview)\"\n :status=\"status\"\n />\n\n <div\n v-if=\"!noHeading && !isPreview\"\n class=\"status-actions\"\n >\n <reply-button\n :replying=\"replying\"\n :status=\"status\"\n @toggle=\"toggleReplying\"\n />\n <retweet-button\n :visibility=\"status.visibility\"\n :logged-in=\"loggedIn\"\n :status=\"status\"\n />\n <favorite-button\n :logged-in=\"loggedIn\"\n :status=\"status\"\n />\n <ReactButton\n v-if=\"loggedIn\"\n :status=\"status\"\n />\n <extra-buttons\n :status=\"status\"\n @onError=\"showError\"\n @onSuccess=\"clearError\"\n />\n </div>\n </div>\n </div>\n <div\n v-else\n class=\"gravestone\"\n >\n <div class=\"left-side\">\n <UserAvatar\n class=\"post-avatar\"\n :compact=\"compact\"\n :bot=\"botIndicator\"\n />\n </div>\n <div class=\"right-side\">\n <div class=\"deleted-text\">\n {{ $t('status.status_deleted') }}\n </div>\n <reply-button\n v-if=\"replying\"\n :replying=\"replying\"\n :status=\"status\"\n @toggle=\"toggleReplying\"\n />\n </div>\n </div>\n <div\n v-if=\"replying\"\n class=\"status-container reply-form\"\n >\n <PostStatusForm\n class=\"reply-body\"\n :reply-to=\"status.id\"\n :attentions=\"status.attentions\"\n :replied-user=\"status.user\"\n :copy-message-scope=\"status.visibility\"\n :subject=\"replySubject\"\n @posted=\"toggleReplying\"\n />\n </div>\n </template>\n </div>\n</template>\n\n<script src=\"./status.js\"></script>\n\n<style src=\"./status.scss\" lang=\"scss\"></style>\n","<template>\n <div class=\"ReplyButton\">\n <button\n v-if=\"loggedIn\"\n class=\"button-unstyled interactive\"\n :class=\"{'-active': replying}\"\n :title=\"$t('tool_tip.reply')\"\n @click.prevent=\"$emit('toggle')\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"reply\"\n />\n <FAIcon\n v-if=\"!replying\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-11\"\n icon=\"plus\"\n />\n <FAIcon\n v-else\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-11\"\n icon=\"times\"\n />\n </FALayers>\n </button>\n <a\n v-else\n class=\"button-unstyled interactive\"\n target=\"_blank\"\n role=\"button\"\n :href=\"remoteInteractionLink\"\n :title=\"$t('tool_tip.reply')\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"reply\"\n />\n <FAIcon\n v-if=\"!replying\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-16\"\n icon=\"plus\"\n />\n </FALayers>\n </a>\n <span\n v-if=\"status.replies_count > 0\"\n class=\"action-counter\"\n >\n {{ status.replies_count }}\n </span>\n </div>\n</template>\n\n<script src=\"./reply_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ReplyButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n &:hover .svg-inline--fa,\n &.-active .svg-inline--fa {\n color: $fallback--cBlue;\n color: var(--cBlue, $fallback--cBlue);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faReply,\n faPlus,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faReply,\n faPlus,\n faTimes\n)\n\nconst ReplyButton = {\n name: 'ReplyButton',\n props: ['status', 'replying'],\n computed: {\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n remoteInteractionLink () {\n return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n }\n }\n}\n\nexport default ReplyButton\n","import { render } from \"./reply_button.vue?vue&type=template&id=a7dc5ddc\"\nimport script from \"./reply_button.js?vue&type=script&lang=js\"\nexport * from \"./reply_button.js?vue&type=script&lang=js\"\n\nimport \"./reply_button.vue?vue&type=style&index=0&id=a7dc5ddc&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"FavoriteButton\">\n <button\n v-if=\"loggedIn\"\n class=\"button-unstyled interactive\"\n :class=\"status.favorited && '-favorited'\"\n :title=\"$t('tool_tip.favorite')\"\n @click.prevent=\"favorite()\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n :icon=\"[status.favorited ? 'fas' : 'far', 'star']\"\n :spin=\"animated\"\n />\n <FAIcon\n v-if=\"status.favorited\"\n class=\"active-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"check\"\n />\n <FAIcon\n v-if=\"!status.favorited\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n <FAIcon\n v-else\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"minus\"\n />\n </FALayers>\n </button>\n <a\n v-else\n class=\"button-unstyled interactive\"\n target=\"_blank\"\n role=\"button\"\n :title=\"$t('tool_tip.favorite')\"\n :href=\"remoteInteractionLink\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n :icon=\"['far', 'star']\"\n />\n <FAIcon\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n </FALayers>\n </a>\n <span\n v-if=\"!mergedConfig.hidePostStats && status.fave_num > 0\"\n class=\"action-counter\"\n >\n {{ status.fave_num }}\n </span>\n </div>\n</template>\n\n<script src=\"./favorite_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.FavoriteButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-favorited .svg-inline--fa {\n color: $fallback--cOrange;\n color: var(--cOrange, $fallback--cOrange);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n}\n</style>\n","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faStar,\n faPlus,\n faMinus,\n faCheck\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faStar,\n faStarRegular,\n faPlus,\n faMinus,\n faCheck\n)\n\nconst FavoriteButton = {\n props: ['status', 'loggedIn'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n favorite () {\n if (!this.status.favorited) {\n this.$store.dispatch('favorite', { id: this.status.id })\n } else {\n this.$store.dispatch('unfavorite', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n remoteInteractionLink () {\n return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n }\n }\n}\n\nexport default FavoriteButton\n","import { render } from \"./favorite_button.vue?vue&type=template&id=195db34e\"\nimport script from \"./favorite_button.js?vue&type=script&lang=js\"\nexport * from \"./favorite_button.js?vue&type=script&lang=js\"\n\nimport \"./favorite_button.vue?vue&type=style&index=0&id=195db34e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span class=\"ReactButton\">\n <EmojiPicker\n ref=\"picker\"\n :enable-sticker-picker=\"enableStickerPicker\"\n :hide-custom-emoji=\"hideCustomEmoji\"\n class=\"emoji-picker-panel\"\n @emoji=\"addReaction\"\n @show=\"onShow\"\n @close=\"onClose\"\n />\n <span\n class=\"button-unstyled popover-trigger\"\n role=\"button\"\n :tabindex=\"0\"\n :title=\"$t('tool_tip.add_reaction')\"\n @click.stop.prevent=\"show\"\n >\n <FALayers>\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n :icon=\"['far', 'smile-beam']\"\n />\n <FAIcon\n v-show=\"!expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-17\"\n icon=\"plus\"\n />\n <FAIcon\n v-show=\"expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-17\"\n icon=\"times\"\n />\n </FALayers>\n </span>\n </span>\n</template>\n\n<script src=\"./react_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ReactButton {\n .reaction-picker-filter {\n padding: 0.5em;\n display: flex;\n\n input {\n flex: 1;\n }\n }\n\n .reaction-picker-divider {\n height: 1px;\n width: 100%;\n margin: 0.5em;\n background-color: var(--border, $fallback--border);\n }\n\n .reaction-picker {\n width: 10em;\n height: 9em;\n font-size: 1.5em;\n overflow-y: scroll;\n display: flex;\n flex-wrap: wrap;\n padding: 0.5em;\n text-align: center;\n align-content: flex-start;\n user-select: none;\n mask:\n linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n linear-gradient(to top, white, white);\n transition: mask-size 150ms;\n mask-size: 100% 20px, 100% 20px, auto;\n\n /* Autoprefixed seem to ignore this one, and also syntax is different */\n mask-composite: xor;\n mask-composite: exclude;\n\n .emoji-button {\n cursor: pointer;\n flex-basis: 20%;\n line-height: 1.5;\n align-content: center;\n\n &:hover {\n transform: scale(1.25);\n }\n }\n }\n\n .popover-trigger {\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faPlus, faTimes } from '@fortawesome/free-solid-svg-icons'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faPlus,\n faTimes,\n faSmileBeam\n)\n\nconst ReactButton = {\n props: ['status'],\n data () {\n return {\n filterWord: '',\n expanded: false\n }\n },\n components: {\n Popover,\n EmojiPicker\n },\n methods: {\n addReaction (event) {\n const emoji = event.insertion\n const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n if (existingReaction && existingReaction.me) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n } else {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n }\n },\n show () {\n if (!this.expanded) {\n this.$refs.picker.showPicker()\n }\n },\n onShow () {\n this.expanded = true\n },\n onClose () {\n this.expanded = false\n }\n },\n computed: {\n hideCustomEmoji () {\n return !this.$store.state.instance.pleromaCustomEmojiReactionsAvailable\n }\n }\n}\n\nexport default ReactButton\n","import { render } from \"./react_button.vue?vue&type=template&id=54e78625\"\nimport script from \"./react_button.js?vue&type=script&lang=js\"\nexport * from \"./react_button.js?vue&type=script&lang=js\"\n\nimport \"./react_button.vue?vue&type=style&index=0&id=54e78625&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"RetweetButton\">\n <button\n v-if=\"visibility !== 'private' && visibility !== 'direct' && loggedIn\"\n class=\"button-unstyled interactive\"\n :class=\"status.repeated && '-repeated'\"\n :title=\"$t('tool_tip.repeat')\"\n @click.prevent=\"retweet()\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"retweet\"\n :spin=\"animated\"\n />\n <FAIcon\n v-if=\"status.repeated\"\n class=\"active-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"check\"\n />\n <FAIcon\n v-if=\"!status.repeated\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n <FAIcon\n v-else\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"minus\"\n />\n </FALayers>\n </button>\n <span v-else-if=\"loggedIn\">\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"lock\"\n :title=\"$t('timeline.no_retweet_hint')\"\n />\n </span>\n <a\n v-else\n class=\"button-unstyled interactive\"\n target=\"_blank\"\n role=\"button\"\n :title=\"$t('tool_tip.repeat')\"\n :href=\"remoteInteractionLink\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"retweet\"\n />\n <FAIcon\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n </FALayers>\n </a>\n <span\n v-if=\"!mergedConfig.hidePostStats && status.repeat_num > 0\"\n class=\"no-event\"\n >\n {{ status.repeat_num }}\n </span>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmDialog\"\n :title=\"$t('status.repeat_confirm_title')\"\n :confirm-text=\"$t('status.repeat_confirm_accept_button')\"\n :cancel-text=\"$t('status.repeat_confirm_cancel_button')\"\n @accepted=\"doRetweet\"\n @cancelled=\"hideConfirmDialog\"\n >\n {{ $t('status.repeat_confirm') }}\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./retweet_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.RetweetButton {\n display: flex;\n\n > :first-child {\n padding: 10px;\n margin: -10px -8px -10px -10px;\n }\n\n .action-counter {\n pointer-events: none;\n user-select: none;\n }\n\n .interactive {\n .svg-inline--fa {\n animation-duration: 0.6s;\n }\n\n &:hover .svg-inline--fa,\n &.-repeated .svg-inline--fa {\n color: $fallback--cGreen;\n color: var(--cGreen, $fallback--cGreen);\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n}\n</style>\n","import ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faRetweet,\n faPlus,\n faMinus,\n faCheck\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRetweet,\n faPlus,\n faMinus,\n faCheck\n)\n\nconst RetweetButton = {\n props: ['status', 'loggedIn', 'visibility'],\n components: {\n ConfirmModal\n },\n data () {\n return {\n animated: false,\n showingConfirmDialog: false\n }\n },\n methods: {\n retweet () {\n if (!this.status.repeated && this.shouldConfirmRepeat) {\n this.showConfirmDialog()\n } else {\n this.doRetweet()\n }\n },\n doRetweet () {\n if (!this.status.repeated) {\n this.$store.dispatch('retweet', { id: this.status.id })\n } else {\n this.$store.dispatch('unretweet', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n this.hideConfirmDialog()\n },\n showConfirmDialog () {\n this.showingConfirmDialog = true\n },\n hideConfirmDialog () {\n this.showingConfirmDialog = false\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n remoteInteractionLink () {\n return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n },\n shouldConfirmRepeat () {\n return this.mergedConfig.modalOnRepeat\n }\n }\n}\n\nexport default RetweetButton\n","import { render } from \"./retweet_button.vue?vue&type=template&id=3a6122b4\"\nimport script from \"./retweet_button.js?vue&type=script&lang=js\"\nexport * from \"./retweet_button.js?vue&type=script&lang=js\"\n\nimport \"./retweet_button.vue?vue&type=style&index=0&id=3a6122b4&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n class=\"ExtraButtons\"\n trigger=\"click\"\n :trigger-attrs=\"triggerAttrs\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n @show=\"onShow\"\n @close=\"onClose\"\n >\n <template #content=\"{close}\">\n <div\n class=\"dropdown-menu\"\n role=\"menu\"\n :id=\"`popup-menu-${randomSeed}`\"\n >\n <button\n v-if=\"canMute && !status.thread_muted\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click.prevent=\"muteConversation\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n /><span>{{ $t(\"status.mute_conversation\") }}</span>\n </button>\n <button\n v-if=\"canMute && status.thread_muted\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click.prevent=\"unmuteConversation\"\n >\n <FAIcon\n fixed-width\n icon=\"eye-slash\"\n /><span>{{ $t(\"status.unmute_conversation\") }}</span>\n </button>\n <button\n v-if=\"!status.pinned && canPin\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click.prevent=\"pinStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"thumbtack\"\n /><span>{{ $t(\"status.pin\") }}</span>\n </button>\n <button\n v-if=\"status.pinned && canPin\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click.prevent=\"unpinStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"thumbtack\"\n /><span>{{ $t(\"status.unpin\") }}</span>\n </button>\n <template v-if=\"canBookmark\">\n <button\n v-if=\"!status.bookmarked\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click.prevent=\"bookmarkStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n :icon=\"['far', 'bookmark']\"\n /><span>{{ $t(\"status.bookmark\") }}</span>\n </button>\n <button\n v-if=\"status.bookmarked\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click.prevent=\"unbookmarkStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"bookmark\"\n /><span>{{ $t(\"status.unbookmark\") }}</span>\n </button>\n </template>\n <button\n v-if=\"ownStatus && editingAvailable\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click.prevent=\"editStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"pen\"\n /><span>{{ $t(\"status.edit\") }}</span>\n </button>\n <button\n v-if=\"isEdited && editingAvailable\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click.prevent=\"showStatusHistory\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"history\"\n /><span>{{ $t(\"status.status_history\") }}</span>\n </button>\n <button\n v-if=\"canDelete\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click.prevent=\"deleteStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"times\"\n /><span>{{ $t(\"status.delete\") }}</span>\n </button>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click.prevent=\"copyLink\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n icon=\"share-alt\"\n /><span>{{ $t(\"status.copy_link\") }}</span>\n </button>\n <a\n v-if=\"!status.is_local\"\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n title=\"Source\"\n :href=\"status.external_url\"\n target=\"_blank\"\n >\n <FAIcon\n fixed-width\n icon=\"external-link-alt\"\n /><span>{{ $t(\"status.external_source\") }}</span>\n </a>\n <button\n class=\"button-default dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\n @click.prevent=\"reportStatus\"\n @click=\"close\"\n >\n <FAIcon\n fixed-width\n :icon=\"['far', 'flag']\"\n /><span>{{ $t(\"user_card.report\") }}</span>\n </button>\n </div>\n </template>\n <template #trigger>\n <span class=\"button-unstyled popover-trigger\">\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110 \"\n icon=\"ellipsis-h\"\n />\n <FAIcon\n v-show=\"!expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-16\"\n icon=\"plus\"\n />\n <FAIcon\n v-show=\"expanded\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-8 right-16\"\n icon=\"times\"\n />\n </FALayers>\n </span>\n <teleport to=\"#modal\">\n <ConfirmModal\n v-if=\"showingDeleteDialog\"\n :title=\"$t('status.delete_confirm_title')\"\n :cancel-text=\"$t('status.delete_confirm_cancel_button')\"\n :confirm-text=\"$t('status.delete_confirm_accept_button')\"\n @cancelled=\"hideDeleteStatusConfirmDialog\"\n @accepted=\"doDeleteStatus\"\n >\n {{ $t('status.delete_confirm') }}\n </ConfirmModal>\n </teleport>\n </template>\n </Popover>\n</template>\n\n<script src=\"./extra_buttons.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.ExtraButtons {\n .popover-trigger {\n position: static;\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n }\n\n .popover-trigger-button {\n /* override of popover internal stuff */\n width: auto;\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n }\n\n @include focused-style {\n .focus-marker {\n visibility: visible;\n }\n }\n }\n}\n</style>\n","import Popover from '../popover/popover.vue'\nimport genRandomSeed from '../../services/random_seed/random_seed.service.js'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisH,\n faBookmark,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt,\n faHistory,\n faPlus,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faBookmark as faBookmarkReg,\n faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faEllipsisH,\n faBookmark,\n faBookmarkReg,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt,\n faFlag,\n faHistory,\n faPlus,\n faTimes\n)\n\nconst ExtraButtons = {\n props: ['status'],\n components: {\n Popover,\n ConfirmModal\n },\n data () {\n return {\n expanded: false,\n showingDeleteDialog: false,\n randomSeed: genRandomSeed()\n }\n },\n methods: {\n onShow () {\n this.expanded = true\n },\n onClose () {\n this.expanded = false\n },\n deleteStatus () {\n if (this.shouldConfirmDelete) {\n this.showDeleteStatusConfirmDialog()\n } else {\n this.doDeleteStatus()\n }\n },\n doDeleteStatus () {\n this.$store.dispatch('deleteStatus', { id: this.status.id })\n this.hideDeleteStatusConfirmDialog()\n },\n showDeleteStatusConfirmDialog () {\n this.showingDeleteDialog = true\n },\n hideDeleteStatusConfirmDialog () {\n this.showingDeleteDialog = false\n },\n pinStatus () {\n this.$store.dispatch('pinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unpinStatus () {\n this.$store.dispatch('unpinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n muteConversation () {\n this.$store.dispatch('muteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unmuteConversation () {\n this.$store.dispatch('unmuteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n copyLink () {\n navigator.clipboard.writeText(this.statusLink)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n bookmarkStatus () {\n this.$store.dispatch('bookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unbookmarkStatus () {\n this.$store.dispatch('unbookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n reportStatus () {\n this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n },\n editStatus () {\n this.$store.dispatch('fetchStatusSource', { id: this.status.id })\n .then(data => this.$store.dispatch('openEditStatusModal', {\n statusId: this.status.id,\n subject: data.spoiler_text,\n statusText: data.text,\n statusIsSensitive: this.status.nsfw,\n statusPoll: this.status.poll,\n statusFiles: [...this.status.attachments],\n visibility: this.status.visibility,\n statusContentType: data.content_type\n }))\n },\n showStatusHistory () {\n const originalStatus = { ...this.status }\n const stripFieldsList = ['attachments', 'created_at', 'emojis', 'text', 'raw_html', 'nsfw', 'poll', 'summary', 'summary_raw_html']\n stripFieldsList.forEach(p => delete originalStatus[p])\n this.$store.dispatch('openStatusHistoryModal', originalStatus)\n }\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n canDelete () {\n if (!this.currentUser) { return }\n return this.currentUser.privileges.includes('messages_delete') || this.status.user.id === this.currentUser.id\n },\n ownStatus () {\n return this.status.user.id === this.currentUser.id\n },\n canPin () {\n return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n },\n canMute () {\n return !!this.currentUser\n },\n canBookmark () {\n return !!this.currentUser\n },\n statusLink () {\n return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n },\n isEdited () {\n return this.status.edited_at !== null\n },\n editingAvailable () { return this.$store.state.instance.editingAvailable },\n shouldConfirmDelete () {\n return this.$store.getters.mergedConfig.modalOnDelete\n },\n triggerAttrs () {\n return {\n title: this.$t('status.more_actions'),\n id: `popup-trigger-${this.randomSeed}`,\n 'aria-controls': `popup-menu-${this.randomSeed}`,\n 'aria-expanded': this.expanded,\n 'aria-haspopup': 'menu'\n }\n }\n }\n}\n\nexport default ExtraButtons\n","import { render } from \"./extra_buttons.vue?vue&type=template&id=36a61b40\"\nimport script from \"./extra_buttons.js?vue&type=script&lang=js\"\nexport * from \"./extra_buttons.js?vue&type=script&lang=js\"\n\nimport \"./extra_buttons.vue?vue&type=style&index=0&id=36a61b40&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n ref=\"popover\"\n trigger=\"hover\"\n :stay-on-click=\"true\"\n popover-class=\"popover-default status-popover\"\n :bound-to=\"{ x: 'container' }\"\n @show=\"enter\"\n >\n <template #trigger>\n <slot />\n </template>\n <template #content>\n <Status\n v-if=\"status\"\n :is-preview=\"true\"\n :statusoid=\"status\"\n :compact=\"true\"\n />\n <div\n v-else-if=\"error\"\n class=\"status-preview-no-content faint\"\n >\n {{ $t('status.status_unavailable') }}\n </div>\n <div\n v-else\n class=\"status-preview-no-content\"\n >\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"2x\"\n />\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./status_popover.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n/* popover styles load on-demand, so we need to override */\n.status-popover.popover {\n font-size: 1rem;\n min-width: 15em;\n max-width: 95%;\n border-color: $fallback--border;\n border-color: var(--border, $fallback--border);\n border-style: solid;\n border-width: 1px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n\n /* TODO cleanup this */\n .Status.Status {\n border: none;\n }\n\n .status-preview-no-content {\n padding: 1em;\n text-align: center;\n\n i {\n font-size: 2em;\n }\n }\n}\n\n</style>\n","import { find } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\nimport { defineAsyncComponent } from 'vue'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst StatusPopover = {\n name: 'StatusPopover',\n props: [\n 'statusId'\n ],\n data () {\n return {\n error: false\n }\n },\n computed: {\n status () {\n return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n }\n },\n components: {\n Status: defineAsyncComponent(() => import('../status/status.vue')),\n Popover: defineAsyncComponent(() => import('../popover/popover.vue'))\n },\n methods: {\n enter () {\n if (!this.status) {\n if (!this.statusId) {\n this.error = true\n return\n }\n this.$store.dispatch('fetchStatus', this.statusId)\n .then(data => (this.error = false))\n .catch(e => (this.error = true))\n }\n }\n },\n watch: {\n status (newStatus, oldStatus) {\n if (newStatus !== oldStatus) {\n this.$nextTick(() => this.$refs.popover.updateStyles())\n }\n }\n }\n}\n\nexport default StatusPopover\n","import { render } from \"./status_popover.vue?vue&type=template&id=0c237860\"\nimport script from \"./status_popover.js?vue&type=script&lang=js\"\nexport * from \"./status_popover.js?vue&type=script&lang=js\"\n\nimport \"./status_popover.vue?vue&type=style&index=0&id=0c237860&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"hover\"\n placement=\"top\"\n :offset=\"{ y: 5 }\"\n >\n <template #trigger>\n <slot />\n </template>\n <template #content>\n <div class=\"user-list-popover\">\n <template v-if=\"users.length\">\n <div\n v-for=\"(user) in usersCapped\"\n :key=\"user.id\"\n class=\"user-list-row\"\n >\n <UserAvatar\n :user=\"user\"\n class=\"avatar-small\"\n :compact=\"true\"\n />\n <div class=\"user-list-names\">\n <!-- eslint-disable vue/no-v-html -->\n <RichContent\n class=\"username\"\n :title=\"'@'+user.screen_name_ui\"\n :html=\"user.name_html\"\n :emoji=\"user.emoji\"\n />\n <!-- eslint-enable vue/no-v-html -->\n <span class=\"user-list-screen-name\">{{ user.screen_name_ui }}</span><UnicodeDomainIndicator :user=\"user\" />\n </div>\n </div>\n </template>\n <template v-else>\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n </template>\n </div>\n </template>\n </Popover>\n</template>\n\n<script src=\"./user_list_popover.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-list-popover {\n padding: 0.5em;\n\n --emoji-size: 16px;\n\n .user-list-row {\n padding: 0.25em;\n display: flex;\n flex-direction: row;\n\n .user-list-names {\n display: flex;\n flex-direction: column;\n margin-left: 0.5em;\n min-width: 5em;\n\n img {\n width: 1em;\n height: 1em;\n }\n }\n\n .user-list-screen-name {\n font-size: 0.65em;\n }\n }\n}\n\n</style>\n","import { defineAsyncComponent } from 'vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst UserListPopover = {\n name: 'UserListPopover',\n props: [\n 'users'\n ],\n components: {\n RichContent,\n UnicodeDomainIndicator,\n Popover: defineAsyncComponent(() => import('../popover/popover.vue')),\n UserAvatar: defineAsyncComponent(() => import('../user_avatar/user_avatar.vue'))\n },\n computed: {\n usersCapped () {\n return this.users.slice(0, 16)\n }\n }\n}\n\nexport default UserListPopover\n","import { render } from \"./user_list_popover.vue?vue&type=template&id=6fc1c392\"\nimport script from \"./user_list_popover.js?vue&type=script&lang=js\"\nexport * from \"./user_list_popover.js?vue&type=script&lang=js\"\n\nimport \"./user_list_popover.vue?vue&type=style&index=0&id=6fc1c392&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"EmojiReactions\">\n <span\n v-for=\"(reaction) in emojiReactions\"\n :key=\"reaction.url || reaction.name\"\n class=\"emoji-reaction-container btn-group\"\n >\n <component\n :is=\"loggedIn ? 'button' : 'a'\"\n v-bind=\"!loggedIn ? { href: remoteInteractionLink } : {}\"\n role=\"button\"\n class=\"emoji-reaction btn button-default\"\n :class=\"{ '-picked-reaction': reactedWith(reaction.name) }\"\n :title=\"reaction.url ? reaction.name : undefined\"\n :aria-pressed=\"reactedWith(reaction.name)\"\n @click=\"emojiOnClick(reaction.name, $event)\"\n >\n <span\n class=\"reaction-emoji\"\n >\n <img\n v-if=\"reaction.url\"\n :src=\"reaction.url\"\n class=\"reaction-emoji-content\"\n width=\"1em\"\n >\n <span\n v-else\n class=\"reaction-emoji reaction-emoji-content\"\n >{{ reaction.name }}</span>\n </span>\n <FALayers>\n <FAIcon\n v-if=\"reactedWith(reaction.name)\"\n class=\"active-marker\"\n transform=\"shrink-6 up-9\"\n icon=\"check\"\n />\n <FAIcon\n v-if=\"!reactedWith(reaction.name)\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9\"\n icon=\"plus\"\n />\n <FAIcon\n v-else\n class=\"focus-marker\"\n transform=\"shrink-6 up-9\"\n icon=\"minus\"\n />\n </FALayers>\n </component>\n <UserListPopover\n :users=\"accountsForEmoji[reaction.name]\"\n class=\"emoji-reaction-popover\"\n :trigger-attrs=\"counterTriggerAttrs(reaction)\"\n @show=\"fetchEmojiReactionsByIfMissing()\"\n >\n <span class=\"emoji-reaction-counts\">{{ reaction.count }}</span>\n </UserListPopover>\n </span>\n <a\n v-if=\"tooManyReactions\"\n class=\"emoji-reaction-expand faint\"\n href=\"javascript:void(0)\"\n @click=\"toggleShowAll\"\n >\n {{ showAll ? $t('general.show_less') : showMoreString }}\n </a>\n </div>\n</template>\n\n<script src=\"./emoji_reactions.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n@import \"../../mixins\";\n\n.EmojiReactions {\n display: flex;\n margin-top: 0.25em;\n flex-wrap: wrap;\n\n --emoji-size: calc(1.25em * var(--emojiReactionsScale, 1));\n\n .emoji-reaction-container {\n display: flex;\n align-items: stretch;\n margin-top: 0.5em;\n margin-right: 0.5em;\n\n .emoji-reaction-popover {\n padding: 0;\n\n .emoji-reaction-count-button {\n background-color: var(--btn);\n margin: 0;\n height: 100%;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n box-sizing: border-box;\n min-width: 2em;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n\n &.-picked-reaction {\n border: 1px solid var(--accent, $fallback--link);\n margin-right: -1px;\n }\n }\n }\n }\n\n .emoji-reaction {\n padding-left: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n margin: 0;\n\n .reaction-emoji {\n width: var(--emoji-size);\n height: var(--emoji-size);\n margin-right: 0.25em;\n line-height: var(--emoji-size);\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .reaction-emoji-content {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n line-height: inherit;\n overflow: hidden;\n font-size: calc(var(--emoji-size) * 0.8);\n margin: 0;\n }\n\n &:focus {\n outline: none;\n }\n\n .svg-inline--fa {\n color: $fallback--text;\n color: var(--btnText, $fallback--text);\n }\n\n &.-picked-reaction {\n border: 1px solid var(--accent, $fallback--link);\n margin-left: -1px; // offset the border, can't use inset shadows either\n margin-right: -1px;\n\n .svg-inline--fa {\n color: $fallback--link;\n color: var(--accent, $fallback--link);\n }\n }\n\n @include unfocused-style {\n .focus-marker {\n visibility: hidden;\n }\n\n .active-marker {\n visibility: visible;\n }\n }\n\n @include focused-style {\n .svg-inline--fa {\n color: $fallback--link;\n color: var(--accent, $fallback--link);\n }\n\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\n }\n }\n\n .emoji-reaction-expand {\n padding: 0 0.5em;\n margin-right: 0.5em;\n margin-top: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faPlus,\n faMinus,\n faCheck\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faPlus,\n faMinus,\n faCheck\n)\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n name: 'EmojiReactions',\n components: {\n UserAvatar,\n UserListPopover\n },\n props: ['status'],\n data: () => ({\n showAll: false\n }),\n computed: {\n tooManyReactions () {\n return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n },\n emojiReactions () {\n return this.showAll\n ? this.status.emoji_reactions\n : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n },\n showMoreString () {\n return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n },\n accountsForEmoji () {\n return this.status.emoji_reactions.reduce((acc, reaction) => {\n acc[reaction.name] = reaction.accounts || []\n return acc\n }, {})\n },\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n remoteInteractionLink () {\n return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n }\n },\n methods: {\n toggleShowAll () {\n this.showAll = !this.showAll\n },\n reactedWith (emoji) {\n return this.status.emoji_reactions.find(r => r.name === emoji).me\n },\n async fetchEmojiReactionsByIfMissing () {\n const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n if (hasNoAccounts) {\n return await this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n }\n },\n reactWith (emoji) {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n },\n unreact (emoji) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n },\n async emojiOnClick (emoji, event) {\n if (!this.loggedIn) return\n\n await this.fetchEmojiReactionsByIfMissing()\n if (this.reactedWith(emoji)) {\n this.unreact(emoji)\n } else {\n this.reactWith(emoji)\n }\n },\n counterTriggerAttrs (reaction) {\n return {\n class: [\n 'btn',\n 'button-default',\n 'emoji-reaction-count-button',\n { '-picked-reaction': this.reactedWith(reaction.name) }\n ],\n 'aria-label': this.$tc('status.reaction_count_label', reaction.count, { num: reaction.count })\n }\n }\n }\n}\n\nexport default EmojiReactions\n","import { render } from \"./emoji_reactions.vue?vue&type=template&id=4be841f8\"\nimport script from \"./emoji_reactions.js?vue&type=script&lang=js\"\nexport * from \"./emoji_reactions.js?vue&type=script&lang=js\"\n\nimport \"./emoji_reactions.vue?vue&type=style&index=0&id=4be841f8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ReplyButton from '../reply_button/reply_button.vue'\nimport FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport UserPopover from '../user_popover/user_popover.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport MentionsLine from 'src/components/mentions_line/mentions_line.vue'\nimport MentionLink from 'src/components/mention_link/mention_link.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faSmileBeam,\n faEllipsisH,\n faStar,\n faEyeSlash,\n faEye,\n faThumbtack,\n faChevronUp,\n faChevronDown,\n faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faStar,\n faSmileBeam,\n faEllipsisH,\n faEyeSlash,\n faEye,\n faThumbtack,\n faChevronUp,\n faChevronDown,\n faAngleDoubleRight\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const controlledName = `controlled${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n res[name] = function () {\n return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n }\n return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[toggle]) {\n obj[toggle]()\n } else {\n obj[uncontrolledName] = !obj[uncontrolledName]\n }\n}\n\nconst controlledOrUncontrolledSet = (obj, name, val) => {\n const camelized = camelCase(name)\n const set = `controlledSet${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[set]) {\n obj[set](val)\n } else {\n obj[uncontrolledName] = val\n }\n}\n\nconst Status = {\n name: 'Status',\n components: {\n ReplyButton,\n FavoriteButton,\n ReactButton,\n RetweetButton,\n ExtraButtons,\n PostStatusForm,\n UserAvatar,\n AvatarList,\n Timeago,\n StatusPopover,\n UserListPopover,\n EmojiReactions,\n StatusContent,\n RichContent,\n MentionLink,\n MentionsLine,\n UserPopover,\n UserLink\n },\n props: [\n 'statusoid',\n 'expandable',\n 'inConversation',\n 'focused',\n 'highlight',\n 'compact',\n 'replies',\n 'isPreview',\n 'noHeading',\n 'inlineExpanded',\n 'showPinned',\n 'inProfile',\n 'profileUserId',\n 'inQuote',\n\n 'simpleTree',\n 'controlledThreadDisplayStatus',\n 'controlledToggleThreadDisplay',\n 'showOtherRepliesAsButton',\n\n 'controlledShowingTall',\n 'controlledToggleShowingTall',\n 'controlledExpandingSubject',\n 'controlledToggleExpandingSubject',\n 'controlledShowingLongSubject',\n 'controlledToggleShowingLongSubject',\n 'controlledReplying',\n 'controlledToggleReplying',\n 'controlledMediaPlaying',\n 'controlledSetMediaPlaying',\n 'dive'\n ],\n data () {\n return {\n uncontrolledReplying: false,\n unmuted: false,\n userExpanded: false,\n uncontrolledMediaPlaying: [],\n suspendable: true,\n error: null,\n headTailLinks: null,\n displayQuote: !this.inQuote\n }\n },\n computed: {\n ...controlledOrUncontrolledGetters(['replying', 'mediaPlaying']),\n muteWords () {\n return this.mergedConfig.muteWords\n },\n showReasonMutedThread () {\n return (\n this.status.thread_muted ||\n (this.status.reblog && this.status.reblog.thread_muted)\n ) && !this.inConversation\n },\n repeaterClass () {\n const user = this.statusoid.user\n return highlightClass(user)\n },\n userClass () {\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n return highlightClass(user)\n },\n deleted () {\n return this.statusoid.deleted\n },\n repeaterStyle () {\n const user = this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userStyle () {\n if (this.noHeading) return\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n },\n replyProfileLink () {\n if (this.isReply) {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n // FIXME Why user not found sometimes???\n return user ? user.statusnet_profile_url : 'NOT_FOUND'\n }\n },\n retweet () { return !!this.statusoid.retweeted_status },\n retweeterUser () { return this.statusoid.user },\n retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name_ui },\n retweeterHtml () { return this.statusoid.user.name },\n retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n status () {\n if (this.retweet) {\n return this.statusoid.retweeted_status\n } else {\n return this.statusoid\n }\n },\n statusFromGlobalRepository () {\n // NOTE: Consider to replace status with statusFromGlobalRepository\n return this.$store.state.statuses.allStatusesObject[this.status.id]\n },\n loggedIn () {\n return !!this.currentUser\n },\n muteWordHits () {\n return muteWordHits(this.status, this.muteWords)\n },\n rtBotStatus () {\n return this.statusoid.user.bot\n },\n botStatus () {\n return this.status.user.bot\n },\n botIndicator () {\n return this.botStatus && !this.hideBotIndication\n },\n rtBotIndicator () {\n return this.rtBotStatus && !this.hideBotIndication\n },\n mentionsLine () {\n if (!this.headTailLinks) return []\n const writtenSet = new Set(this.headTailLinks.writtenMentions.map(_ => _.url))\n return this.status.attentions.filter(attn => {\n // no reply user\n return attn.id !== this.status.in_reply_to_user_id &&\n // no self-replies\n attn.statusnet_profile_url !== this.status.user.statusnet_profile_url &&\n // don't include if mentions is written\n !writtenSet.has(attn.statusnet_profile_url)\n }).map(attn => ({\n url: attn.statusnet_profile_url,\n content: attn.screen_name,\n userId: attn.id\n }))\n },\n hasMentionsLine () {\n return this.mentionsLine.length > 0\n },\n muted () {\n if (this.statusoid.user.id === this.currentUser.id) return false\n const reasonsToMute = this.userIsMuted ||\n // Thread is muted\n status.thread_muted ||\n // Wordfiltered\n this.muteWordHits.length > 0 ||\n // bot status\n (this.muteBotStatuses && this.botStatus && !this.compact)\n return !this.unmuted && !this.shouldNotMute && reasonsToMute\n },\n userIsMuted () {\n if (this.statusoid.user.id === this.currentUser.id) return false\n const { status } = this\n const { reblog } = status\n const relationship = this.$store.getters.relationship(status.user.id)\n const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n return status.muted ||\n // Reprööt of a muted post according to BE\n (reblog && reblog.muted) ||\n // Muted user\n relationship.muting ||\n // Muted user of a reprööt\n (relationshipReblog && relationshipReblog.muting)\n },\n shouldNotMute () {\n const { status } = this\n const { reblog } = status\n return (\n (\n this.inProfile && (\n // Don't mute user's posts on user timeline (except reblogs)\n (!reblog && status.user.id === this.profileUserId) ||\n // Same as above but also allow self-reblogs\n (reblog && reblog.user.id === this.profileUserId)\n )\n ) ||\n // Don't mute statuses in muted conversation when said conversation is opened\n (this.inConversation && status.thread_muted)\n // No excuses if post has muted words\n ) && !this.muteWordHits.length > 0\n },\n hideMutedUsers () {\n return this.mergedConfig.hideMutedPosts\n },\n hideMutedThreads () {\n return this.mergedConfig.hideMutedThreads\n },\n hideFilteredStatuses () {\n return this.mergedConfig.hideFilteredStatuses\n },\n hideWordFilteredPosts () {\n return this.mergedConfig.hideWordFilteredPosts\n },\n hideStatus () {\n return (!this.shouldNotMute) && (\n (this.muted && this.hideFilteredStatuses) ||\n (this.userIsMuted && this.hideMutedUsers) ||\n (this.status.thread_muted && this.hideMutedThreads) ||\n (this.muteWordHits.length > 0 && this.hideWordFilteredPosts)\n )\n },\n isFocused () {\n // retweet or root of an expanded conversation\n if (this.focused) {\n return true\n } else if (!this.inConversation) {\n return false\n }\n // use conversation highlight only when in conversation\n return this.status.id === this.highlight\n },\n isReply () {\n return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n },\n replyToName () {\n if (this.status.in_reply_to_screen_name) {\n return this.status.in_reply_to_screen_name\n } else {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n return user && user.screen_name_ui\n }\n },\n replySubject () {\n if (!this.status.summary) return ''\n const decodedSummary = unescape(this.status.summary)\n const behavior = this.mergedConfig.subjectLineBehavior\n const startsWithRe = decodedSummary.match(/^re[: ]/i)\n if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n return decodedSummary\n } else if (behavior === 'email') {\n return 're: '.concat(decodedSummary)\n } else if (behavior === 'noop') {\n return ''\n }\n },\n combinedFavsAndRepeatsUsers () {\n // Use the status from the global status repository since favs and repeats are saved in it\n const combinedUsers = [].concat(\n this.statusFromGlobalRepository.favoritedBy,\n this.statusFromGlobalRepository.rebloggedBy\n )\n return uniqBy(combinedUsers, 'id')\n },\n tags () {\n // eslint-disable-next-line no-prototype-builtins\n return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n },\n hidePostStats () {\n return this.mergedConfig.hidePostStats\n },\n muteBotStatuses () {\n return this.mergedConfig.muteBotStatuses\n },\n hideBotIndication () {\n return this.mergedConfig.hideBotIndication\n },\n currentUser () {\n return this.$store.state.users.currentUser\n },\n betterShadow () {\n return this.$store.state.interface.browserSupport.cssFilter\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n isSuspendable () {\n return !this.replying && this.mediaPlaying.length === 0\n },\n inThreadForest () {\n return !!this.controlledThreadDisplayStatus\n },\n threadShowing () {\n return this.controlledThreadDisplayStatus === 'showing'\n },\n visibilityLocalized () {\n return this.$i18n.t('general.scope_in_timeline.' + this.status.visibility)\n },\n isEdited () {\n return this.status.edited_at !== null\n },\n editingAvailable () {\n return this.$store.state.instance.editingAvailable\n },\n hasVisibleQuote () {\n return this.status.quote_url && this.status.quote_visible\n },\n hasInvisibleQuote () {\n return this.status.quote_url && !this.status.quote_visible\n },\n quotedStatus () {\n return this.status.quote_id ? this.$store.state.statuses.allStatusesObject[this.status.quote_id] : undefined\n },\n shouldDisplayQuote () {\n return this.quotedStatus && this.displayQuote\n }\n },\n methods: {\n visibilityIcon (visibility) {\n switch (visibility) {\n case 'private':\n return 'lock'\n case 'unlisted':\n return 'lock-open'\n case 'direct':\n return 'envelope'\n default:\n return 'globe'\n }\n },\n showError (error) {\n this.error = error\n },\n clearError () {\n this.error = undefined\n },\n toggleReplying () {\n controlledOrUncontrolledToggle(this, 'replying')\n },\n gotoOriginal (id) {\n if (this.inConversation) {\n this.$emit('goto', id)\n }\n },\n toggleExpanded () {\n this.$emit('toggleExpanded')\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n },\n addMediaPlaying (id) {\n controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.concat(id))\n },\n removeMediaPlaying (id) {\n controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.filter(mediaId => mediaId !== id))\n },\n setHeadTailLinks (headTailLinks) {\n this.headTailLinks = headTailLinks\n },\n toggleThreadDisplay () {\n this.controlledToggleThreadDisplay()\n },\n scrollIfHighlighted (highlightId) {\n const id = highlightId\n if (this.status.id === id) {\n const rect = this.$el.getBoundingClientRect()\n if (rect.top < 100) {\n // Post is above screen, match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.height >= (window.innerHeight - 50)) {\n // Post we want to see is taller than screen so match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.bottom > window.innerHeight - 50) {\n // Post is below screen, match its bottom to screen bottom\n window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n }\n }\n },\n toggleDisplayQuote () {\n if (this.shouldDisplayQuote) {\n this.displayQuote = false\n } else if (!this.quotedStatus) {\n this.$store.dispatch('fetchStatus', this.status.quote_id)\n .then(() => {\n this.displayQuote = true\n })\n } else {\n this.displayQuote = true\n }\n }\n },\n watch: {\n highlight: function (id) {\n this.scrollIfHighlighted(id)\n },\n 'status.repeat_num': function (num) {\n // refetch repeats when repeat_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.rebloggedBy && this.statusFromGlobalRepository.rebloggedBy.length !== num) {\n this.$store.dispatch('fetchRepeats', this.status.id)\n }\n },\n 'status.fave_num': function (num) {\n // refetch favs when fave_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {\n this.$store.dispatch('fetchFavs', this.status.id)\n }\n },\n isSuspendable: function (val) {\n this.suspendable = val\n }\n }\n}\n\nexport default Status\n","import { render } from \"./status.vue?vue&type=template&id=0f15101e\"\nimport script from \"./status.js?vue&type=script&lang=js\"\nexport * from \"./status.js?vue&type=script&lang=js\"\n\nimport \"./status.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"StatusContent\"\n :class=\"{ '-compact': compact }\"\n >\n <slot name=\"header\" />\n <StatusBody\n :status=\"status\"\n :compact=\"compact\"\n :single-line=\"singleLine\"\n :showing-tall=\"showingTall\"\n :expanding-subject=\"expandingSubject\"\n :showing-long-subject=\"showingLongSubject\"\n :toggle-showing-tall=\"toggleShowingTall\"\n :toggle-expanding-subject=\"toggleExpandingSubject\"\n :toggle-showing-long-subject=\"toggleShowingLongSubject\"\n @parseReady=\"$emit('parseReady', $event)\"\n >\n <div v-if=\"status.poll && status.poll.options && !compact\">\n <Poll\n :base-poll=\"status.poll\"\n :emoji=\"status.emojis\"\n />\n </div>\n\n <div v-else-if=\"status.poll && status.poll.options && compact\">\n <FAIcon\n icon=\"poll-h\"\n size=\"2x\"\n />\n </div>\n\n <gallery\n v-if=\"status.attachments.length !== 0\"\n class=\"attachments media-body\"\n :compact=\"compact\"\n :nsfw=\"nsfwClickthrough\"\n :attachments=\"status.attachments\"\n :limit=\"compact ? 1 : 0\"\n :size=\"attachmentSize\"\n @play=\"$emit('mediaplay', attachment.id)\"\n @pause=\"$emit('mediapause', attachment.id)\"\n />\n\n <div\n v-if=\"statusCard && !noHeading && !compact\"\n class=\"link-preview media-body\"\n >\n <link-preview\n :card=\"status.card\"\n :size=\"attachmentSize\"\n :nsfw=\"nsfwClickthrough\"\n />\n </div>\n </StatusBody>\n <slot name=\"footer\" />\n </div>\n</template>\n\n<script src=\"./status_content.js\"></script>\n<style lang=\"scss\">\n.StatusContent {\n flex: 1;\n min-width: 0;\n}\n</style>\n","<template>\n <div\n class=\"poll\"\n :class=\"containerClass\"\n >\n <div\n :role=\"showResults ? 'section' : (poll.multiple ? 'group' : 'radiogroup')\"\n >\n <div\n v-for=\"(option, index) in options\"\n :key=\"index\"\n class=\"poll-option\"\n >\n <div\n v-if=\"showResults\"\n :title=\"resultTitle(option)\"\n class=\"option-result\"\n >\n <div class=\"option-result-label\">\n <span class=\"result-percentage\">\n {{ percentageForOption(option.votes_count) }}%\n </span>\n <RichContent\n :html=\"option.title_html\"\n :handle-links=\"false\"\n :emoji=\"emoji\"\n />\n </div>\n <div\n class=\"result-fill\"\n :style=\"{ 'width': `${percentageForOption(option.votes_count)}%` }\"\n />\n </div>\n <div\n v-else\n tabindex=\"0\"\n :role=\"poll.multiple ? 'checkbox' : 'radio'\"\n :aria-labelledby=\"`option-vote-${randomSeed}-${index}`\"\n :aria-checked=\"choices[index]\"\n @click=\"activateOption(index)\"\n >\n <input\n v-if=\"poll.multiple\"\n type=\"checkbox\"\n class=\"poll-checkbox\"\n :disabled=\"loading\"\n :value=\"index\"\n >\n <input\n v-else\n type=\"radio\"\n :disabled=\"loading\"\n :value=\"index\"\n >\n <label class=\"option-vote\">\n <RichContent\n :id=\"`option-vote-${randomSeed}-${index}`\"\n :html=\"option.title_html\"\n :handle-links=\"false\"\n :emoji=\"emoji\"\n />\n </label>\n </div>\n </div>\n </div>\n <div class=\"footer faint\">\n <button\n v-if=\"!showResults\"\n class=\"btn button-default poll-vote-button\"\n type=\"button\"\n :disabled=\"isDisabled\"\n @click=\"vote\"\n >\n {{ $t('polls.vote') }}\n </button>\n <div class=\"total\">\n <template v-if=\"typeof poll.voters_count === 'number'\">\n {{ $tc(\"polls.people_voted_count\", poll.voters_count, { count: poll.voters_count }) }}&nbsp;·&nbsp;\n </template>\n <template v-else>\n {{ $tc(\"polls.votes_count\", poll.votes_count, { count: poll.votes_count }) }}&nbsp;·&nbsp;\n </template>\n </div>\n <span>\n <i18n-t\n scope=\"global\"\n :keypath=\"expired ? 'polls.expired' : 'polls.expires_in'\"\n >\n <Timeago\n :time=\"expiresAt\"\n :auto-update=\"60\"\n :now-threshold=\"0\"\n />\n </i18n-t>\n </span>\n </div>\n </div>\n</template>\n\n<script src=\"./poll.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.poll {\n .votes {\n display: flex;\n flex-direction: column;\n margin: 0 0 0.5em;\n }\n\n .poll-option {\n margin: 0.75em 0.5em;\n }\n\n .option-result {\n height: 100%;\n display: flex;\n flex-direction: row;\n position: relative;\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n\n .option-result-label {\n display: flex;\n align-items: center;\n padding: 0.1em 0.25em;\n z-index: 1;\n word-break: break-word;\n }\n\n .result-percentage {\n width: 3.5em;\n flex-shrink: 0;\n }\n\n .result-fill {\n height: 100%;\n position: absolute;\n color: $fallback--text;\n color: var(--pollText, $fallback--text);\n background-color: $fallback--lightBg;\n background-color: var(--poll, $fallback--lightBg);\n border-radius: $fallback--panelRadius;\n border-radius: var(--panelRadius, $fallback--panelRadius);\n top: 0;\n left: 0;\n transition: width 0.5s;\n }\n\n .option-vote {\n display: flex;\n align-items: center;\n }\n\n input {\n width: 3.5em;\n }\n\n .footer {\n display: flex;\n align-items: center;\n }\n\n &.loading * {\n cursor: progress;\n }\n\n .poll-vote-button {\n padding: 0 0.5em;\n margin-right: 0.5em;\n }\n\n .poll-checkbox {\n display: none;\n }\n}\n</style>\n","import Timeago from 'components/timeago/timeago.vue'\nimport genRandomSeed from '../../services/random_seed/random_seed.service.js'\nimport RichContent from 'components/rich_content/rich_content.jsx'\nimport { forEach, map } from 'lodash'\n\nexport default {\n name: 'Poll',\n props: ['basePoll', 'emoji'],\n components: {\n Timeago,\n RichContent\n },\n data () {\n return {\n loading: false,\n choices: [],\n randomSeed: genRandomSeed()\n }\n },\n created () {\n if (!this.$store.state.polls.pollsObject[this.pollId]) {\n this.$store.dispatch('mergeOrAddPoll', this.basePoll)\n }\n this.$store.dispatch('trackPoll', this.pollId)\n },\n unmounted () {\n this.$store.dispatch('untrackPoll', this.pollId)\n },\n computed: {\n pollId () {\n return this.basePoll.id\n },\n poll () {\n const storePoll = this.$store.state.polls.pollsObject[this.pollId]\n return storePoll || {}\n },\n options () {\n return (this.poll && this.poll.options) || []\n },\n expiresAt () {\n return (this.poll && this.poll.expires_at) || 0\n },\n expired () {\n return (this.poll && this.poll.expired) || false\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n showResults () {\n return this.poll.voted || this.expired || !this.loggedIn\n },\n totalVotesCount () {\n return this.poll.votes_count\n },\n containerClass () {\n return {\n loading: this.loading\n }\n },\n choiceIndices () {\n // Convert array of booleans into an array of indices of the\n // items that were 'true', so [true, false, false, true] becomes\n // [0, 3].\n return this.choices\n .map((entry, index) => entry && index)\n .filter(value => typeof value === 'number')\n },\n isDisabled () {\n const noChoice = this.choiceIndices.length === 0\n return this.loading || noChoice\n }\n },\n methods: {\n percentageForOption (count) {\n return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)\n },\n resultTitle (option) {\n return `${option.votes_count}/${this.totalVotesCount} ${this.$t('polls.votes')}`\n },\n fetchPoll () {\n this.$store.dispatch('refreshPoll', { id: this.statusId, pollId: this.poll.id })\n },\n activateOption (index) {\n // forgive me father: doing checking the radio/checkboxes\n // in code because of customized input elements need either\n // a) an extra element for the actual graphic, or b) use a\n // pseudo element for the label. We use b) which mandates\n // using \"for\" and \"id\" matching which isn't nice when the\n // same poll appears multiple times on the site (notifs and\n // timeline for example). With code we can make sure it just\n // works without altering the pseudo element implementation.\n const allElements = this.$el.querySelectorAll('input')\n const clickedElement = this.$el.querySelector(`input[value=\"${index}\"]`)\n if (this.poll.multiple) {\n // Checkboxes, toggle only the clicked one\n clickedElement.checked = !clickedElement.checked\n } else {\n // Radio button, uncheck everything and check the clicked one\n forEach(allElements, element => { element.checked = false })\n clickedElement.checked = true\n }\n this.choices = map(allElements, e => e.checked)\n },\n optionId (index) {\n return `poll${this.poll.id}-${index}`\n },\n vote () {\n if (this.choiceIndices.length === 0) return\n this.loading = true\n this.$store.dispatch(\n 'votePoll',\n { id: this.statusId, pollId: this.poll.id, choices: this.choiceIndices }\n ).then(poll => {\n this.loading = false\n })\n }\n }\n}\n","import { render } from \"./poll.vue?vue&type=template&id=02c7de4c\"\nimport script from \"./poll.js?vue&type=script&lang=js\"\nexport * from \"./poll.js?vue&type=script&lang=js\"\n\nimport \"./poll.vue?vue&type=style&index=0&id=02c7de4c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"StatusBody\"\n :class=\"{ '-compact': compact }\"\n >\n <div class=\"body\">\n <div\n v-if=\"status.summary_raw_html\"\n class=\"summary-wrapper\"\n :class=\"{ '-tall': (longSubject && !showingLongSubject) }\"\n >\n <RichContent\n class=\"media-body summary\"\n :html=\"status.summary_raw_html\"\n :emoji=\"status.emojis\"\n />\n <button\n v-show=\"longSubject && showingLongSubject\"\n class=\"button-unstyled -link tall-subject-hider\"\n @click.prevent=\"toggleShowingLongSubject\"\n >\n {{ $t(\"status.hide_full_subject\") }}\n </button>\n <button\n v-show=\"longSubject && !showingLongSubject\"\n class=\"button-unstyled -link tall-subject-hider\"\n @click.prevent=\"toggleShowingLongSubject\"\n >\n {{ $t(\"status.show_full_subject\") }}\n </button>\n </div>\n <div\n :class=\"{'-tall-status': hideTallStatus}\"\n class=\"text-wrapper\"\n >\n <button\n v-show=\"hideTallStatus\"\n class=\"button-unstyled -link tall-status-hider\"\n :class=\"{ '-focused': focused }\"\n @click.prevent=\"toggleShowMore\"\n >\n {{ $t(\"general.show_more\") }}\n </button>\n <RichContent\n v-if=\"!hideSubjectStatus && !(singleLine && status.summary_raw_html)\"\n :class=\"{ '-single-line': singleLine }\"\n class=\"text media-body\"\n :html=\"status.raw_html\"\n :emoji=\"status.emojis\"\n :handle-links=\"true\"\n :greentext=\"mergedConfig.greentext\"\n :attentions=\"status.attentions\"\n @parseReady=\"onParseReady\"\n />\n\n <button\n v-show=\"hideSubjectStatus\"\n class=\"button-unstyled -link cw-status-hider\"\n @click.prevent=\"toggleShowMore\"\n >\n {{ $t(\"status.show_content\") }}\n <FAIcon\n v-if=\"attachmentTypes.includes('image')\"\n icon=\"image\"\n />\n <FAIcon\n v-if=\"attachmentTypes.includes('video')\"\n icon=\"video\"\n />\n <FAIcon\n v-if=\"attachmentTypes.includes('audio')\"\n icon=\"music\"\n />\n <FAIcon\n v-if=\"attachmentTypes.includes('unknown')\"\n icon=\"file\"\n />\n <FAIcon\n v-if=\"status.poll && status.poll.options\"\n icon=\"poll-h\"\n />\n <FAIcon\n v-if=\"status.card\"\n icon=\"link\"\n />\n </button>\n <button\n v-show=\"showingMore && !fullContent\"\n class=\"button-unstyled -link status-unhider\"\n @click.prevent=\"toggleShowMore\"\n >\n {{ tallStatus ? $t(\"general.show_less\") : $t(\"status.hide_content\") }}\n </button>\n </div>\n </div>\n <slot v-if=\"!hideSubjectStatus\" />\n </div>\n</template>\n<script src=\"./status_body.js\"></script>\n<style lang=\"scss\" src=\"./status_body.scss\" />\n","import fileType from 'src/services/file_type/file_type.service'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n)\n\nconst StatusContent = {\n name: 'StatusContent',\n props: [\n 'compact',\n 'status',\n 'focused',\n 'noHeading',\n 'fullContent',\n 'singleLine',\n 'showingTall',\n 'expandingSubject',\n 'showingLongSubject',\n 'toggleShowingTall',\n 'toggleExpandingSubject',\n 'toggleShowingLongSubject'\n ],\n data () {\n return {\n postLength: this.status.text.length,\n parseReadyDone: false\n }\n },\n computed: {\n localCollapseSubjectDefault () {\n return this.mergedConfig.collapseMessageWithSubject\n },\n // This is a bit hacky, but we want to approximate post height before rendering\n // so we count newlines (masto uses <p> for paragraphs, GS uses <br> between them)\n // as well as approximate line count by counting characters and approximating ~80\n // per line.\n //\n // Using max-height + overflow: auto for status components resulted in false positives\n // very often with japanese characters, and it was very annoying.\n tallStatus () {\n if (this.singleLine || this.compact) return false\n const lengthScore = this.status.raw_html.split(/<p|<br/).length + this.postLength / 80\n return lengthScore > 20\n },\n longSubject () {\n return this.status.summary.length > 240\n },\n // When a status has a subject and is also tall, we should only have one show more/less button. If the default is to collapse statuses with subjects, we just treat it like a status with a subject; otherwise, we just treat it like a tall status.\n mightHideBecauseSubject () {\n return !!this.status.summary && this.localCollapseSubjectDefault\n },\n mightHideBecauseTall () {\n return this.tallStatus && !(this.status.summary && this.localCollapseSubjectDefault)\n },\n hideSubjectStatus () {\n return this.mightHideBecauseSubject && !this.expandingSubject\n },\n hideTallStatus () {\n return this.mightHideBecauseTall && !this.showingTall\n },\n showingMore () {\n return (this.mightHideBecauseTall && this.showingTall) || (this.mightHideBecauseSubject && this.expandingSubject)\n },\n attachmentTypes () {\n return this.status.attachments.map(file => fileType.fileType(file.mimetype))\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n RichContent\n },\n mounted () {\n this.status.attentions && this.status.attentions.forEach(attn => {\n const { id } = attn\n this.$store.dispatch('fetchUserIfMissing', id)\n })\n },\n methods: {\n onParseReady (event) {\n if (this.parseReadyDone) return\n this.parseReadyDone = true\n this.$emit('parseReady', event)\n const { writtenMentions, invisibleMentions } = event\n writtenMentions\n .filter(mention => !mention.notifying)\n .forEach(mention => {\n const { content, url } = mention\n const cleanedString = content.replace(/<[^>]+?>/gi, '') // remove all tags\n if (!cleanedString.startsWith('@')) return\n const handle = cleanedString.slice(1)\n const host = url.replace(/^https?:\\/\\//, '').replace(/\\/.+?$/, '')\n this.$store.dispatch('fetchUserIfMissing', `${handle}@${host}`)\n })\n /* This is a bit of a hack to make current tall status detector work\n * with rich mentions. Invisible mentions are detected at RichContent level\n * and also we generate plaintext version of mentions by stripping tags\n * so here we subtract from post length by each mention that became invisible\n * via MentionsLine\n */\n this.postLength = invisibleMentions.reduce((acc, mention) => {\n return acc - mention.textContent.length - 1\n }, this.postLength)\n },\n toggleShowMore () {\n if (this.mightHideBecauseTall) {\n this.toggleShowingTall()\n } else if (this.mightHideBecauseSubject) {\n this.toggleExpandingSubject()\n }\n },\n generateTagLink (tag) {\n return `/tag/${tag}`\n }\n }\n}\n\nexport default StatusContent\n","import { render } from \"./status_body.vue?vue&type=template&id=7a590a2c\"\nimport script from \"./status_body.js?vue&type=script&lang=js\"\nexport * from \"./status_body.js?vue&type=script&lang=js\"\n\nimport \"./status_body.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport StatusBody from 'src/components/status_body/status_body.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport { mapGetters, mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const controlledName = `controlled${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n res[name] = function () {\n return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n }\n return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n const camelized = camelCase(name)\n const toggle = `controlledToggle${camelized}`\n const uncontrolledName = `uncontrolled${camelized}`\n if (obj[toggle]) {\n obj[toggle]()\n } else {\n obj[uncontrolledName] = !obj[uncontrolledName]\n }\n}\n\nconst StatusContent = {\n name: 'StatusContent',\n props: [\n 'status',\n 'compact',\n 'focused',\n 'noHeading',\n 'fullContent',\n 'singleLine',\n 'controlledShowingTall',\n 'controlledExpandingSubject',\n 'controlledToggleShowingTall',\n 'controlledToggleExpandingSubject',\n 'controlledShowingLongSubject',\n 'controlledToggleShowingLongSubject'\n ],\n data () {\n return {\n uncontrolledShowingTall: this.fullContent || (this.inConversation && this.focused),\n uncontrolledShowingLongSubject: false,\n // not as computed because it sets the initial state which will be changed later\n uncontrolledExpandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject\n }\n },\n computed: {\n ...controlledOrUncontrolledGetters(['showingTall', 'expandingSubject', 'showingLongSubject']),\n statusCard () {\n if (!this.status.card) return null\n return this.status.card.url === this.status.quote_url ? null : this.status.card\n },\n hideAttachments () {\n return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\n },\n nsfwClickthrough () {\n if (!this.status.nsfw) {\n return false\n }\n if (this.status.summary && this.localCollapseSubjectDefault) {\n return false\n }\n return true\n },\n attachmentSize () {\n if (this.compact) {\n return 'small'\n } else if ((this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||\n (this.status.attachments.length > this.maxThumbnails)) {\n return 'hide'\n }\n return 'normal'\n },\n maxThumbnails () {\n return this.mergedConfig.maxThumbnails\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n },\n components: {\n Attachment,\n Poll,\n Gallery,\n LinkPreview,\n StatusBody\n },\n methods: {\n toggleShowingTall () {\n controlledOrUncontrolledToggle(this, 'showingTall')\n },\n toggleExpandingSubject () {\n controlledOrUncontrolledToggle(this, 'expandingSubject')\n },\n toggleShowingLongSubject () {\n controlledOrUncontrolledToggle(this, 'showingLongSubject')\n },\n setMedia () {\n const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments\n return () => this.$store.dispatch('setMedia', attachments)\n }\n }\n}\n\nexport default StatusContent\n","import { render } from \"./status_content.vue?vue&type=template&id=79c8e5d6\"\nimport script from \"./status_content.js?vue&type=script&lang=js\"\nexport * from \"./status_content.js?vue&type=script&lang=js\"\n\nimport \"./status_content.vue?vue&type=style&index=0&id=79c8e5d6&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"still-image\"\n :class=\"{ animated: animated }\"\n :style=\"style\"\n >\n <canvas\n v-if=\"animated\"\n ref=\"canvas\"\n />\n <!-- NOTE: key is required to force to re-render img tag when src is changed -->\n <img\n ref=\"src\"\n :key=\"realSrc\"\n :alt=\"alt\"\n :title=\"alt\"\n :data-src=\"dataSrc\"\n :src=\"realSrc\"\n :referrerpolicy=\"referrerpolicy\"\n :loading=\"loading\"\n @load=\"onLoad\"\n @error=\"onError\"\n >\n <slot />\n </div>\n</template>\n\n<script src=\"./still-image.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.still-image {\n position: relative;\n line-height: 0;\n overflow: hidden;\n display: inline-flex;\n align-items: center;\n\n canvas {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n object-fit: contain;\n visibility: var(--_still-image-canvas-visibility, visible);\n }\n\n img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n }\n\n &.animated {\n &::before {\n zoom: var(--_still_image-label-scale, 1);\n content: \"gif\";\n position: absolute;\n line-height: 1;\n font-size: 0.7em;\n top: 0.5em;\n left: 0.5em;\n background: rgb(127 127 127 / 50%);\n color: #fff;\n display: block;\n padding: 2px 4px;\n border-radius: $fallback--tooltipRadius;\n border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n z-index: 2;\n visibility: var(--_still-image-label-visibility, visible);\n }\n\n &:hover canvas {\n display: none;\n }\n\n &:hover::before {\n visibility: var(--_still-image-label-visibility, hidden);\n }\n\n img {\n visibility: var(--_still-image-img-visibility, hidden);\n }\n\n &:hover img {\n visibility: visible;\n }\n }\n}\n</style>\n","const StillImage = {\n props: [\n 'src',\n 'referrerpolicy',\n 'mimetype',\n 'imageLoadError',\n 'imageLoadHandler',\n 'alt',\n 'height',\n 'width',\n 'dataSrc',\n 'loading'\n ],\n data () {\n return {\n // for lazy loading, see loadLazy()\n realSrc: this.src,\n stopGifs: this.$store.getters.mergedConfig.stopGifs\n }\n },\n computed: {\n animated () {\n if (!this.realSrc) {\n return false\n }\n\n return this.stopGifs && (this.mimetype === 'image/gif' || this.realSrc.endsWith('.gif'))\n },\n style () {\n const appendPx = (str) => /\\d$/.test(str) ? str + 'px' : str\n return {\n height: this.height ? appendPx(this.height) : null,\n width: this.width ? appendPx(this.width) : null\n }\n }\n },\n methods: {\n loadLazy () {\n if (this.dataSrc) {\n this.realSrc = this.dataSrc\n }\n },\n onLoad () {\n if (!this.realSrc) {\n return\n }\n const image = this.$refs.src\n if (!image) return\n this.imageLoadHandler && this.imageLoadHandler(image)\n const canvas = this.$refs.canvas\n if (!canvas) return\n const width = image.naturalWidth\n const height = image.naturalHeight\n canvas.width = width\n canvas.height = height\n canvas.getContext('2d').drawImage(image, 0, 0, width, height)\n },\n onError () {\n this.imageLoadError && this.imageLoadError()\n }\n },\n watch: {\n src () {\n this.realSrc = this.src\n },\n dataSrc () {\n this.$el.removeAttribute('data-loaded')\n }\n }\n}\n\nexport default StillImage\n","import { render } from \"./still-image.vue?vue&type=template&id=75385b10\"\nimport script from \"./still-image.js?vue&type=script&lang=js\"\nexport * from \"./still-image.js?vue&type=script&lang=js\"\n\nimport \"./still-image.vue?vue&type=style&index=0&id=75385b10&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <time\n :datetime=\"time\"\n :title=\"localeDateString\"\n >\n {{ relativeTimeString }}\n </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold', 'templateKey'],\n data () {\n return {\n relativeTime: { key: 'time.now', num: 0 },\n interval: null\n }\n },\n computed: {\n localeDateString () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return typeof this.time === 'string'\n ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n : this.time.toLocaleString(browserLocale)\n },\n relativeTimeString () {\n const timeString = this.$i18n.tc(this.relativeTime.key, this.relativeTime.num, [this.relativeTime.num])\n\n if (typeof this.templateKey === 'string' && this.relativeTime.key !== 'time.now') {\n return this.$i18n.t(this.templateKey, [timeString])\n }\n\n return timeString\n }\n },\n watch: {\n time (newVal, oldVal) {\n if (oldVal !== newVal) {\n clearTimeout(this.interval)\n this.refreshRelativeTimeObject()\n }\n }\n },\n created () {\n this.refreshRelativeTimeObject()\n },\n unmounted () {\n clearTimeout(this.interval)\n },\n methods: {\n refreshRelativeTimeObject () {\n const nowThreshold = typeof this.nowThreshold === 'number' ? this.nowThreshold : 1\n this.relativeTime = this.longFormat\n ? DateUtils.relativeTime(this.time, nowThreshold)\n : DateUtils.relativeTimeShort(this.time, nowThreshold)\n\n if (this.autoUpdate) {\n this.interval = setTimeout(\n this.refreshRelativeTimeObject,\n 1000 * this.autoUpdate\n )\n }\n }\n }\n}\n</script>\n","import { render } from \"./timeago.vue?vue&type=template&id=3269671b\"\nimport script from \"./timeago.vue?vue&type=script&lang=js\"\nexport * from \"./timeago.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <FAIcon\n v-if=\"user && user.screen_name_ui_contains_non_ascii\"\n icon=\"code\"\n :title=\"$t('unicode_domain_indicator.tooltip')\"\n />\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCode\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCode\n)\n\nconst UnicodeDomainIndicator = {\n props: {\n user: Object\n }\n}\n\nexport default UnicodeDomainIndicator\n</script>\n","import { render } from \"./unicode_domain_indicator.vue?vue&type=template&id=3e044e46\"\nimport script from \"./unicode_domain_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./unicode_domain_indicator.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import StillImage from '../still-image/still-image.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\n\nimport {\n faRobot\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRobot\n)\n\nconst UserAvatar = {\n props: [\n 'user',\n 'betterShadow',\n 'compact',\n 'bot'\n ],\n data () {\n return {\n showPlaceholder: false,\n defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n }\n },\n components: {\n StillImage\n },\n methods: {\n imgSrc (src) {\n return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n },\n imageLoadError () {\n this.showPlaceholder = true\n }\n }\n}\n\nexport default UserAvatar\n","import { render } from \"./user_avatar.vue?vue&type=template&id=9c4bf79e\"\nimport script from \"./user_avatar.js?vue&type=script&lang=js\"\nexport * from \"./user_avatar.js?vue&type=script&lang=js\"\n\nimport \"./user_avatar.vue?vue&type=style&index=0&id=9c4bf79e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span\n class=\"Avatar\"\n :class=\"{ '-compact': compact }\"\n >\n <StillImage\n v-if=\"user\"\n class=\"avatar\"\n :alt=\"user.screen_name_ui\"\n :title=\"user.screen_name_ui\"\n :src=\"imgSrc(user.profile_image_url_original)\"\n :image-load-error=\"imageLoadError\"\n :class=\"{ '-compact': compact, '-better-shadow': betterShadow }\"\n />\n <div\n v-else\n class=\"avatar -placeholder\"\n :class=\"{ '-compact': compact }\"\n />\n <FAIcon\n v-if=\"bot\"\n icon=\"robot\"\n class=\"bot-indicator\"\n />\n </span>\n</template>\n\n<script src=\"./user_avatar.js\"></script>\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.Avatar {\n --_avatarShadowBox: var(--avatarStatusShadow);\n --_avatarShadowFilter: var(--avatarStatusShadowFilter);\n --_avatarShadowInset: var(--avatarStatusShadowInset);\n --_still-image-label-visibility: hidden;\n\n display: inline-block;\n position: relative;\n width: 48px;\n height: 48px;\n\n &.-compact {\n width: 32px;\n height: 32px;\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n box-shadow: var(--_avatarShadowBox);\n border-radius: $fallback--avatarRadius;\n border-radius: var(--avatarRadius, $fallback--avatarRadius);\n\n &.-better-shadow {\n box-shadow: var(--_avatarShadowInset);\n filter: var(--_avatarShadowFilter);\n }\n\n &.-animated::before {\n display: none;\n }\n\n &.-compact {\n border-radius: $fallback--avatarAltRadius;\n border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n }\n\n &.-placeholder {\n background-color: $fallback--fg;\n background-color: var(--fg, $fallback--fg);\n }\n }\n\n img {\n width: 100%;\n height: 100%;\n }\n\n .bot-indicator {\n position: absolute;\n bottom: 0;\n right: 0;\n margin: -0.2em;\n padding: 0.2em;\n background: rgb(127 127 127 / 50%);\n color: #fff;\n border-radius: var(--tooltipRadius);\n }\n}\n</style>\n","<template>\n <div\n class=\"user-card\"\n :class=\"classes\"\n >\n <div\n :class=\"{ 'hide-bio': hideBio }\"\n :style=\"style\"\n class=\"background-image\"\n />\n <div :class=\"onClose ? '' : panel-heading -flexible-height\">\n <div class=\"user-info\">\n <div class=\"container\">\n <a\n v-if=\"avatarAction === 'zoom'\"\n class=\"user-info-avatar -link\"\n @click=\"zoomAvatar\"\n >\n <UserAvatar\n :better-shadow=\"betterShadow\"\n :user=\"user\"\n />\n <div class=\"user-info-avatar -link -overlay\">\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"search-plus\"\n />\n </div>\n </a>\n <UserAvatar\n v-else-if=\"typeof avatarAction === 'function'\"\n class=\"user-info-avatar\"\n :better-shadow=\"betterShadow\"\n :user=\"user\"\n @click=\"avatarAction\"\n />\n <router-link\n v-else\n :to=\"userProfileLink(user)\"\n >\n <UserAvatar\n :better-shadow=\"betterShadow\"\n :user=\"user\"\n />\n </router-link>\n <div class=\"user-summary\">\n <div class=\"top-line\">\n <router-link\n :to=\"userProfileLink(user)\"\n class=\"user-name\"\n >\n <RichContent\n :title=\"user.name\"\n :html=\"user.name\"\n :emoji=\"user.emoji\"\n />\n </router-link>\n <button\n v-if=\"!isOtherUser && user.is_local\"\n class=\"button-unstyled edit-profile-button\"\n @click.stop=\"openProfileTab\"\n >\n <FAIcon\n fixed-width\n class=\"icon\"\n icon=\"edit\"\n :title=\"$t('user_card.edit_profile')\"\n />\n </button>\n <a\n v-if=\"isOtherUser && !user.is_local\"\n :href=\"user.statusnet_profile_url\"\n target=\"_blank\"\n class=\"button-unstyled external-link-button\"\n >\n <FAIcon\n class=\"icon\"\n icon=\"external-link-alt\"\n />\n </a>\n <AccountActions\n v-if=\"isOtherUser && loggedIn\"\n :user=\"user\"\n :relationship=\"relationship\"\n />\n <router-link\n v-if=\"onClose\"\n :to=\"userProfileLink(user)\"\n class=\"button-unstyled external-link-button\"\n @click=\"onClose\"\n >\n <FAIcon\n class=\"icon\"\n icon=\"expand-alt\"\n />\n </router-link>\n <button\n v-if=\"onClose\"\n class=\"button-unstyled external-link-button\"\n @click=\"onClose\"\n >\n <FAIcon\n class=\"icon\"\n icon=\"times\"\n />\n </button>\n </div>\n <div class=\"bottom-line\">\n <user-link\n class=\"user-screen-name\"\n :user=\"user\"\n />\n <template v-if=\"!hideBio\">\n <span\n v-if=\"user.deactivated\"\n class=\"alert user-role\"\n >\n {{ $t('user_card.deactivated') }}\n </span>\n <span\n v-if=\"!!visibleRole\"\n class=\"alert user-role\"\n >\n {{ $t(`general.role.${visibleRole}`) }}\n </span>\n <span\n v-if=\"user.bot\"\n class=\"alert user-role\"\n >\n {{ $t('user_card.bot') }}\n </span>\n </template>\n <span v-if=\"user.locked\">\n <FAIcon\n class=\"lock-icon\"\n icon=\"lock\"\n size=\"sm\"\n />\n </span>\n <span\n v-if=\"!mergedConfig.hideUserStats && !hideBio\"\n class=\"dailyAvg\"\n >{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>\n </div>\n </div>\n </div>\n <div class=\"user-meta\">\n <div\n v-if=\"relationship.followed_by && loggedIn && isOtherUser\"\n class=\"following\"\n >\n {{ $t('user_card.follows_you') }}\n </div>\n <div\n v-if=\"isOtherUser && (loggedIn || !switcher)\"\n class=\"highlighter\"\n >\n <!-- id's need to be unique, otherwise vue confuses which user-card checkbox belongs to -->\n <input\n v-if=\"userHighlightType !== 'disabled'\"\n :id=\"'userHighlightColorTx'+user.id\"\n v-model=\"userHighlightColor\"\n class=\"userHighlightText\"\n type=\"text\"\n >\n <input\n v-if=\"userHighlightType !== 'disabled'\"\n :id=\"'userHighlightColor'+user.id\"\n v-model=\"userHighlightColor\"\n class=\"userHighlightCl\"\n type=\"color\"\n >\n {{ ' ' }}\n <Select\n :id=\"'userHighlightSel'+user.id\"\n v-model=\"userHighlightType\"\n class=\"userHighlightSel\"\n >\n <option value=\"disabled\">\n {{ $t('user_card.highlight.disabled') }}\n </option>\n <option value=\"solid\">\n {{ $t('user_card.highlight.solid') }}\n </option>\n <option value=\"striped\">\n {{ $t('user_card.highlight.striped') }}\n </option>\n <option value=\"side\">\n {{ $t('user_card.highlight.side') }}\n </option>\n </Select>\n </div>\n </div>\n <div\n v-if=\"loggedIn && isOtherUser\"\n class=\"user-interactions\"\n >\n <div class=\"btn-group\">\n <FollowButton\n :relationship=\"relationship\"\n :user=\"user\"\n />\n <template v-if=\"relationship.following\">\n <ProgressButton\n v-if=\"!relationship.subscribing\"\n class=\"btn button-default\"\n :click=\"subscribeUser\"\n :title=\"$t('user_card.subscribe')\"\n >\n <FAIcon icon=\"bell\" />\n </ProgressButton>\n <ProgressButton\n v-else\n class=\"btn button-default toggled\"\n :click=\"unsubscribeUser\"\n :title=\"$t('user_card.unsubscribe')\"\n >\n <FALayers>\n <FAIcon\n icon=\"rss\"\n transform=\"left-5 shrink-6 up-3 rotate-20\"\n flip=\"horizontal\"\n />\n <FAIcon\n icon=\"rss\"\n transform=\"right-5 shrink-6 up-3 rotate-20\"\n />\n <FAIcon icon=\"bell\" />\n </FALayers>\n </ProgressButton>\n </template>\n </div>\n <div>\n <button\n v-if=\"relationship.muting\"\n class=\"btn button-default btn-block toggled\"\n :disabled=\"user.deactivated\"\n @click=\"unmuteUser\"\n >\n {{ $t('user_card.muted') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block\"\n :disabled=\"user.deactivated\"\n @click=\"muteUser\"\n >\n {{ $t('user_card.mute') }}\n </button>\n </div>\n <div>\n <button\n class=\"btn button-default btn-block\"\n :disabled=\"user.deactivated\"\n @click=\"mentionUser\"\n >\n {{ $t('user_card.mention') }}\n </button>\n </div>\n <ModerationTools\n v-if=\"showModerationMenu\"\n :user=\"user\"\n />\n </div>\n <div\n v-if=\"!loggedIn && user.is_local\"\n class=\"user-interactions\"\n >\n <RemoteFollow :user=\"user\" />\n </div>\n <UserNote\n v-if=\"loggedIn && isOtherUser && (hasNote || (hasNoteEditor && supportsNote))\"\n :user=\"user\"\n :relationship=\"relationship\"\n :editable=\"hasNoteEditor\"\n />\n </div>\n </div>\n <div\n v-if=\"!hideBio\"\n class=\"panel-body\"\n >\n <div\n v-if=\"!mergedConfig.hideUserStats && switcher\"\n class=\"user-counts\"\n >\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('statuses')\"\n >\n <h5>{{ $t('user_card.statuses') }}</h5>\n <span>{{ user.statuses_count }} <br></span>\n </div>\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('friends')\"\n >\n <h5>{{ $t('user_card.followees') }}</h5>\n <span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>\n </div>\n <div\n class=\"user-count\"\n @click.prevent=\"setProfileView('followers')\"\n >\n <h5>{{ $t('user_card.followers') }}</h5>\n <span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>\n </div>\n </div>\n <RichContent\n v-if=\"!hideBio\"\n class=\"user-card-bio\"\n :html=\"user.description_html\"\n :emoji=\"user.emoji\"\n :handle-links=\"true\"\n />\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmMute\"\n :title=\"$t('user_card.mute_confirm_title')\"\n :confirm-text=\"$t('user_card.mute_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.mute_confirm_cancel_button')\"\n @accepted=\"doMuteUser\"\n @cancelled=\"hideConfirmMute\"\n >\n <i18n-t\n keypath=\"user_card.mute_confirm\"\n tag=\"div\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n <div\n class=\"mute-expiry\"\n >\n <label>\n {{ $t('user_card.mute_duration_prompt') }}\n </label>\n <input\n v-model=\"muteExpiryAmount\"\n type=\"number\"\n class=\"expiry-amount hide-number-spinner\"\n :min=\"0\"\n >\n <Select\n v-model=\"muteExpiryUnit\"\n unstyled=\"true\"\n class=\"expiry-unit\"\n >\n <option\n v-for=\"unit in muteExpiryUnits\"\n :key=\"unit\"\n :value=\"unit\"\n >\n {{ $t(`time.${unit}_short`, ['']) }}\n </option>\n </Select>\n </div>\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./user_card.js\"></script>\n\n<style lang=\"scss\" src=\"./user_card.scss\" />\n","<template>\n <div>\n <Popover\n trigger=\"click\"\n class=\"moderation-tools-popover\"\n placement=\"bottom\"\n :offset=\"{ y: 5 }\"\n @show=\"setToggled(true)\"\n @close=\"setToggled(false)\"\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <span v-if=\"canGrantRole\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleRight(&quot;admin&quot;)\"\n >\n {{ $t(!!user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleRight(&quot;moderator&quot;)\"\n >\n {{ $t(!!user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator') }}\n </button>\n <div\n v-if=\"canChangeActivationState || canDeleteAccount\"\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </span>\n <button\n v-if=\"canChangeActivationState\"\n class=\"button-default dropdown-item\"\n @click=\"toggleActivationStatus()\"\n >\n {{ $t(!!user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account') }}\n </button>\n <button\n v-if=\"canDeleteAccount\"\n class=\"button-default dropdown-item\"\n @click=\"deleteUserDialog(true)\"\n >\n {{ $t('user_card.admin_menu.delete_account') }}\n </button>\n <div\n v-if=\"canUseTagPolicy\"\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n <span v-if=\"canUseTagPolicy\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.FORCE_NSFW)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_NSFW) }\"\n />\n {{ $t('user_card.admin_menu.force_nsfw') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.STRIP_MEDIA)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.STRIP_MEDIA) }\"\n />\n {{ $t('user_card.admin_menu.strip_media') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.FORCE_UNLISTED)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_UNLISTED) }\"\n />\n {{ $t('user_card.admin_menu.force_unlisted') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.SANDBOX)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.SANDBOX) }\"\n />\n {{ $t('user_card.admin_menu.sandbox') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.DISABLE_REMOTE_SUBSCRIPTION)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_REMOTE_SUBSCRIPTION) }\"\n />\n {{ $t('user_card.admin_menu.disable_remote_subscription') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.DISABLE_ANY_SUBSCRIPTION)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_ANY_SUBSCRIPTION) }\"\n />\n {{ $t('user_card.admin_menu.disable_any_subscription') }}\n </button>\n <button\n v-if=\"user.is_local\"\n class=\"button-default dropdown-item\"\n @click=\"toggleTag(tags.QUARANTINE)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hasTag(tags.QUARANTINE) }\"\n />\n {{ $t('user_card.admin_menu.quarantine') }}\n </button>\n </span>\n </div>\n </template>\n <template #trigger>\n <button\n class=\"btn button-default btn-block moderation-tools-button\"\n :class=\"{ toggled }\"\n >\n {{ $t('user_card.admin_menu.moderation') }}\n <FAIcon icon=\"chevron-down\" />\n </button>\n </template>\n </Popover>\n <teleport to=\"#modal\">\n <DialogModal\n v-if=\"showDeleteUserDialog\"\n :on-cancel=\"deleteUserDialog.bind(this, false)\"\n >\n <template #header>\n {{ $t('user_card.admin_menu.delete_user') }}\n </template>\n <p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>\n <template #footer>\n <button\n class=\"btn button-default\"\n @click=\"deleteUserDialog(false)\"\n >\n {{ $t('general.cancel') }}\n </button>\n <button\n class=\"btn button-default danger\"\n @click=\"deleteUser()\"\n >\n {{ $t('user_card.admin_menu.delete_user') }}\n </button>\n </template>\n </DialogModal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./moderation_tools.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.moderation-tools-popover {\n height: 100%;\n\n .trigger {\n /* stylelint-disable-next-line declaration-no-important */\n display: flex !important;\n height: 100%;\n }\n}\n\n.moderation-tools-button {\n svg,\n i {\n font-size: 0.8em;\n }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronDown)\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n props: [\n 'user'\n ],\n data () {\n return {\n tags: {\n FORCE_NSFW,\n STRIP_MEDIA,\n FORCE_UNLISTED,\n DISABLE_REMOTE_SUBSCRIPTION,\n DISABLE_ANY_SUBSCRIPTION,\n SANDBOX,\n QUARANTINE\n },\n showDeleteUserDialog: false,\n toggled: false\n }\n },\n components: {\n DialogModal,\n Popover\n },\n computed: {\n tagsSet () {\n return new Set(this.user.tags)\n },\n canGrantRole () {\n return this.user.is_local && !this.user.deactivated && this.$store.state.users.currentUser.role === 'admin'\n },\n canChangeActivationState () {\n return this.privileged('users_manage_activation_state')\n },\n canDeleteAccount () {\n return this.privileged('users_delete')\n },\n canUseTagPolicy () {\n return this.$store.state.instance.tagPolicyAvailable && this.privileged('users_manage_tags')\n }\n },\n methods: {\n hasTag (tagName) {\n return this.tagsSet.has(tagName)\n },\n privileged (privilege) {\n return this.$store.state.users.currentUser.privileges.includes(privilege)\n },\n toggleTag (tag) {\n const store = this.$store\n if (this.tagsSet.has(tag)) {\n store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('untagUser', { user: this.user, tag })\n })\n } else {\n store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('tagUser', { user: this.user, tag })\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n },\n setToggled (value) {\n this.toggled = value\n }\n }\n}\n\nexport default ModerationTools\n","import { render } from \"./moderation_tools.vue?vue&type=template&id=352f537c\"\nimport script from \"./moderation_tools.js?vue&type=script&lang=js\"\nexport * from \"./moderation_tools.js?vue&type=script&lang=js\"\n\nimport \"./moderation_tools.vue?vue&type=style&index=0&id=352f537c&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"AccountActions\">\n <Popover\n trigger=\"click\"\n placement=\"bottom\"\n :bound-to=\"{ x: 'container' }\"\n remove-padding\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <template v-if=\"relationship.following\">\n <button\n v-if=\"relationship.showing_reblogs\"\n class=\"btn button-default dropdown-item\"\n @click=\"hideRepeats\"\n >\n {{ $t('user_card.hide_repeats') }}\n </button>\n <button\n v-if=\"!relationship.showing_reblogs\"\n class=\"btn button-default dropdown-item\"\n @click=\"showRepeats\"\n >\n {{ $t('user_card.show_repeats') }}\n </button>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n </template>\n <UserListMenu :user=\"user\" />\n <button\n v-if=\"relationship.followed_by\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"removeUserFromFollowers\"\n >\n {{ $t('user_card.remove_follower') }}\n </button>\n <button\n v-if=\"relationship.blocking\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"unblockUser\"\n >\n {{ $t('user_card.unblock') }}\n </button>\n <button\n v-else\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"blockUser\"\n >\n {{ $t('user_card.block') }}\n </button>\n <button\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"reportUser\"\n >\n {{ $t('user_card.report') }}\n </button>\n <button\n v-if=\"pleromaChatMessagesAvailable\"\n class=\"btn button-default btn-block dropdown-item\"\n @click=\"openChat\"\n >\n {{ $t('user_card.message') }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button class=\"button-unstyled ellipsis-button\">\n <FAIcon\n class=\"icon\"\n icon=\"ellipsis-v\"\n />\n </button>\n </template>\n </Popover>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmBlock\"\n :title=\"$t('user_card.block_confirm_title')\"\n :confirm-text=\"$t('user_card.block_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.block_confirm_cancel_button')\"\n @accepted=\"doBlockUser\"\n @cancelled=\"hideConfirmBlock\"\n >\n <i18n-t\n keypath=\"user_card.block_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmRemoveFollower\"\n :title=\"$t('user_card.remove_follower_confirm_title')\"\n :confirm-text=\"$t('user_card.remove_follower_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.remove_follower_confirm_cancel_button')\"\n @accepted=\"doRemoveUserFromFollowers\"\n @cancelled=\"hideConfirmRemoveUserFromFollowers\"\n >\n <i18n-t\n keypath=\"user_card.remove_follower_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./account_actions.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.AccountActions {\n .ellipsis-button {\n width: 2.5em;\n margin: -0.5em 0;\n padding: 0.5em 0;\n text-align: center;\n\n &:not(:hover) .icon {\n color: $fallback--lightText;\n color: var(--lightText, $fallback--lightText);\n }\n }\n}\n</style>\n","<template>\n <div class=\"UserListMenu\">\n <Popover\n trigger=\"hover\"\n placement=\"left\"\n remove-padding\n >\n <template #content>\n <div class=\"dropdown-menu\">\n <button\n v-for=\"list in lists\"\n :key=\"list.id\"\n class=\"button-default dropdown-item\"\n @click=\"toggleList(list.id)\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': list.inList }\"\n />\n {{ list.title }}\n </button>\n </div>\n </template>\n <template #trigger>\n <button class=\"btn button-default dropdown-item -has-submenu\">\n {{ $t('lists.manage_lists') }}\n <FAIcon\n class=\"chevron-icon\"\n size=\"lg\"\n icon=\"chevron-right\"\n />\n </button>\n </template>\n </Popover>\n </div>\n</template>\n\n<script src=\"./user_list_menu.js\"></script>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons'\nimport { mapState } from 'vuex'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronRight)\n\nconst UserListMenu = {\n props: [\n 'user'\n ],\n data () {\n return {}\n },\n components: {\n DialogModal,\n Popover\n },\n created () {\n this.$store.dispatch('fetchUserInLists', this.user.id)\n },\n computed: {\n ...mapState({\n allLists: state => state.lists.allLists\n }),\n inListsSet () {\n return new Set(this.user.inLists.map(x => x.id))\n },\n lists () {\n if (!this.user.inLists) return []\n return this.allLists.map(list => ({\n ...list,\n inList: this.inListsSet.has(list.id)\n }))\n }\n },\n methods: {\n toggleList (listId) {\n if (this.inListsSet.has(listId)) {\n this.$store.dispatch('removeListAccount', { accountId: this.user.id, listId }).then((response) => {\n if (!response.ok) { return }\n this.$store.dispatch('fetchUserInLists', this.user.id)\n })\n } else {\n this.$store.dispatch('addListAccount', { accountId: this.user.id, listId }).then((response) => {\n if (!response.ok) { return }\n this.$store.dispatch('fetchUserInLists', this.user.id)\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n },\n setToggled (value) {\n this.toggled = value\n }\n }\n}\n\nexport default UserListMenu\n","import { render } from \"./user_list_menu.vue?vue&type=template&id=aeea2640\"\nimport script from \"./user_list_menu.js?vue&type=script&lang=js\"\nexport * from \"./user_list_menu.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\nimport UserListMenu from 'src/components/user_list_menu/user_list_menu.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEllipsisV\n)\n\nconst AccountActions = {\n props: [\n 'user', 'relationship'\n ],\n data () {\n return {\n showingConfirmBlock: false,\n showingConfirmRemoveFollower: false\n }\n },\n components: {\n ProgressButton,\n Popover,\n UserListMenu,\n ConfirmModal\n },\n methods: {\n showConfirmBlock () {\n this.showingConfirmBlock = true\n },\n hideConfirmBlock () {\n this.showingConfirmBlock = false\n },\n showConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = true\n },\n hideConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = false\n },\n showRepeats () {\n this.$store.dispatch('showReblogs', this.user.id)\n },\n hideRepeats () {\n this.$store.dispatch('hideReblogs', this.user.id)\n },\n blockUser () {\n if (!this.shouldConfirmBlock) {\n this.doBlockUser()\n } else {\n this.showConfirmBlock()\n }\n },\n doBlockUser () {\n this.$store.dispatch('blockUser', this.user.id)\n this.hideConfirmBlock()\n },\n unblockUser () {\n this.$store.dispatch('unblockUser', this.user.id)\n },\n removeUserFromFollowers () {\n if (!this.shouldConfirmRemoveUserFromFollowers) {\n this.doRemoveUserFromFollowers()\n } else {\n this.showConfirmRemoveUserFromFollowers()\n }\n },\n doRemoveUserFromFollowers () {\n this.$store.dispatch('removeUserFromFollowers', this.user.id)\n this.hideConfirmRemoveUserFromFollowers()\n },\n reportUser () {\n this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n },\n openChat () {\n this.$router.push({\n name: 'chat',\n params: { username: this.$store.state.users.currentUser.screen_name, recipient_id: this.user.id }\n })\n }\n },\n computed: {\n shouldConfirmBlock () {\n return this.$store.getters.mergedConfig.modalOnBlock\n },\n shouldConfirmRemoveUserFromFollowers () {\n return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers\n },\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n })\n }\n}\n\nexport default AccountActions\n","import { render } from \"./account_actions.vue?vue&type=template&id=2d1f537d\"\nimport script from \"./account_actions.js?vue&type=script&lang=js\"\nexport * from \"./account_actions.js?vue&type=script&lang=js\"\n\nimport \"./account_actions.vue?vue&type=style&index=0&id=2d1f537d&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div\n class=\"user-note\"\n >\n <div class=\"heading\">\n <span>{{ $t('user_card.note') }}</span>\n <div class=\"buttons\">\n <button\n v-show=\"!editing && editable\"\n class=\"button-default btn\"\n @click=\"startEditing\"\n >\n {{ $t('user_card.edit_note') }}\n </button>\n <button\n v-show=\"editing\"\n class=\"button-default btn\"\n :disabled=\"frozen\"\n @click=\"finalizeEditing\"\n >\n {{ $t('user_card.edit_note_apply') }}\n </button>\n <button\n v-show=\"editing\"\n class=\"button-default btn\"\n :disabled=\"frozen\"\n @click=\"cancelEditing\"\n >\n {{ $t('user_card.edit_note_cancel') }}\n </button>\n </div>\n </div>\n <textarea\n v-show=\"editing\"\n v-model=\"localNote\"\n class=\"note-text\"\n />\n <span\n v-show=\"!editing\"\n class=\"note-text\"\n :class=\"{ '-blank': !relationship.note }\"\n >\n {{ relationship.note || $t('user_card.note_blank') }}\n </span>\n </div>\n</template>\n\n<script src=\"./user_note.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.user-note {\n display: flex;\n flex-direction: column;\n\n .heading {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 0.75em;\n\n .btn {\n min-width: 95px;\n }\n\n .buttons {\n display: flex;\n flex-direction: row;\n justify-content: right;\n\n .btn {\n margin-left: 0.5em;\n }\n }\n }\n\n .note-text {\n align-self: stretch;\n }\n\n .note-text.-blank {\n font-style: italic;\n color: var(--faint, $fallback--faint);\n }\n}\n</style>\n","const UserNote = {\n props: {\n user: Object,\n relationship: Object,\n editable: Boolean\n },\n data () {\n return {\n localNote: '',\n editing: false,\n frozen: false\n }\n },\n computed: {\n shouldShow () {\n return this.relationship.note || this.editing\n }\n },\n methods: {\n startEditing () {\n this.localNote = this.relationship.note\n this.editing = true\n },\n cancelEditing () {\n this.editing = false\n },\n finalizeEditing () {\n this.frozen = true\n\n this.$store.dispatch('editUserNote', {\n id: this.user.id,\n comment: this.localNote\n })\n .then(() => {\n this.frozen = false\n this.editing = false\n })\n .catch(() => {\n this.frozen = false\n })\n }\n }\n}\n\nexport default UserNote\n","import { render } from \"./user_note.vue?vue&type=template&id=3c543a1e\"\nimport script from \"./user_note.js?vue&type=script&lang=js\"\nexport * from \"./user_note.js?vue&type=script&lang=js\"\n\nimport \"./user_note.vue?vue&type=style&index=0&id=3c543a1e&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unitToSeconds } from 'src/services/date_utils/date_utils.js'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport UserNote from '../user_note/user_note.vue'\nimport Select from '../select/select.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBell,\n faRss,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit,\n faTimes,\n faExpandAlt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRss,\n faBell,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit,\n faTimes,\n faExpandAlt\n)\n\nexport default {\n props: [\n 'userId',\n 'switcher',\n 'selected',\n 'hideBio',\n 'rounded',\n 'bordered',\n 'avatarAction', // default - open profile, 'zoom' - zoom, function - call function\n 'onClose',\n 'hasNoteEditor'\n ],\n data () {\n return {\n followRequestInProgress: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n showingConfirmMute: false,\n muteExpiryAmount: 0,\n muteExpiryUnit: 'minutes'\n }\n },\n created () {\n this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n classes () {\n return [{\n '-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n '-rounded': this.rounded === true, // set border-radius for all sides\n '-bordered': this.bordered === true, // set border for all sides\n '-popover': !!this.onClose // set popover rounding\n }]\n },\n style () {\n return {\n backgroundImage: [\n 'linear-gradient(to bottom, var(--profileTint), var(--profileTint))',\n `url(${this.user.cover_photo})`\n ].join(', ')\n }\n },\n isOtherUser () {\n return this.user.id !== this.$store.state.users.currentUser.id\n },\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n dailyAvg () {\n const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n return Math.round(this.user.statuses_count / days)\n },\n userHighlightType: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return (data && data.type) || 'disabled'\n },\n set (type) {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n if (type !== 'disabled') {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n } else {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n userHighlightColor: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return data && data.color\n },\n set (color) {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n }\n },\n visibleRole () {\n const rights = this.user.rights\n if (!rights) { return }\n const validRole = rights.admin || rights.moderator\n const roleTitle = rights.admin ? 'admin' : 'moderator'\n return validRole && roleTitle\n },\n hideFollowsCount () {\n return this.isOtherUser && this.user.hide_follows_count\n },\n hideFollowersCount () {\n return this.isOtherUser && this.user.hide_followers_count\n },\n showModerationMenu () {\n const privileges = this.loggedIn.privileges\n return this.loggedIn.role === 'admin' || privileges.includes('users_manage_activation_state') || privileges.includes('users_delete') || privileges.includes('users_manage_tags')\n },\n hasNote () {\n return this.relationship.note\n },\n supportsNote () {\n return 'note' in this.relationship\n },\n shouldConfirmMute () {\n return this.mergedConfig.modalOnMute\n },\n muteExpiryUnits () {\n return ['minutes', 'hours', 'days']\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n UserAvatar,\n RemoteFollow,\n ModerationTools,\n AccountActions,\n ProgressButton,\n FollowButton,\n Select,\n RichContent,\n UserLink,\n UserNote,\n ConfirmModal\n },\n methods: {\n showConfirmMute () {\n this.showingConfirmMute = true\n },\n hideConfirmMute () {\n this.showingConfirmMute = false\n },\n muteUser () {\n if (!this.shouldConfirmMute) {\n this.doMuteUser()\n } else {\n this.showConfirmMute()\n }\n },\n doMuteUser () {\n this.$store.dispatch('muteUser', {\n id: this.user.id,\n expiresIn: this.shouldConfirmMute ? unitToSeconds(this.muteExpiryUnit, this.muteExpiryAmount) : 0\n })\n this.hideConfirmMute()\n },\n unmuteUser () {\n this.$store.dispatch('unmuteUser', this.user.id)\n },\n subscribeUser () {\n return this.$store.dispatch('subscribeUser', this.user.id)\n },\n unsubscribeUser () {\n return this.$store.dispatch('unsubscribeUser', this.user.id)\n },\n setProfileView (v) {\n if (this.switcher) {\n const store = this.$store\n store.commit('setProfileView', { v })\n }\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n },\n zoomAvatar () {\n const attachment = {\n url: this.user.profile_image_url_original,\n mimetype: 'image'\n }\n this.$store.dispatch('setMedia', [attachment])\n this.$store.dispatch('setCurrentMedia', attachment)\n },\n mentionUser () {\n this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n },\n onAvatarClickHandler (e) {\n if (this.onAvatarClick) {\n e.preventDefault()\n this.onAvatarClick()\n }\n }\n }\n}\n","import { render } from \"./user_card.vue?vue&type=template&id=bc098958\"\nimport script from \"./user_card.js?vue&type=script&lang=js\"\nexport * from \"./user_card.js?vue&type=script&lang=js\"\n\nimport \"./user_card.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <router-link\n :title=\"user.screen_name_ui\"\n :to=\"userProfileLink(user)\"\n >\n {{ at ? '@' : '' }}{{ user.screen_name_ui }}<UnicodeDomainIndicator\n :user=\"user\"\n />\n </router-link>\n</template>\n\n<script>\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst UserLink = {\n props: {\n user: Object,\n at: {\n type: Boolean,\n default: true\n }\n },\n components: {\n UnicodeDomainIndicator\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n }\n }\n}\n\nexport default UserLink\n</script>\n","import { render } from \"./user_link.vue?vue&type=template&id=2cae9070\"\nimport script from \"./user_link.vue?vue&type=script&lang=js\"\nexport * from \"./user_link.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserCard from '../user_card/user_card.vue'\nimport { defineAsyncComponent } from 'vue'\n\nconst UserPopover = {\n name: 'UserPopover',\n props: [\n 'userId', 'overlayCenters', 'disabled', 'overlayCentersSelector'\n ],\n components: {\n UserCard,\n Popover: defineAsyncComponent(() => import('../popover/popover.vue'))\n },\n computed: {\n userPopoverAvatarAction () {\n return this.$store.getters.mergedConfig.userPopoverAvatarAction\n },\n userPopoverOverlay () {\n return this.$store.getters.mergedConfig.userPopoverOverlay\n }\n }\n}\n\nexport default UserPopover\n","import { render } from \"./user_popover.vue?vue&type=template&id=6d5beeb8\"\nimport script from \"./user_popover.js?vue&type=script&lang=js\"\nexport * from \"./user_popover.js?vue&type=script&lang=js\"\n\nimport \"./user_popover.vue?vue&type=style&index=0&id=6d5beeb8&lang=scss\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <Popover\n trigger=\"click\"\n popover-class=\"popover-default user-popover\"\n :overlay-centers-selector=\"overlayCentersSelector || '.user-info .Avatar'\"\n :overlay-centers=\"overlayCenters && userPopoverOverlay\"\n :disabled=\"disabled\"\n >\n <template #trigger>\n <slot />\n </template>\n <template #content=\"{close}\">\n <UserCard\n class=\"user-popover\"\n :user-id=\"userId\"\n :hide-bio=\"true\"\n :avatar-action=\"userPopoverAvatarAction == 'close' ? close : userPopoverAvatarAction\"\n :on-close=\"close\"\n />\n </template>\n </Popover>\n</template>\n\n<script src=\"./user_popover.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n/* popover styles load on-demand, so we need to override */\n/* stylelint-disable block-no-empty */\n.user-popover.popover {\n}\n/* stylelint-enable block-no-empty */\n\n</style>\n","\nconst VideoAttachment = {\n props: ['attachment', 'controls'],\n data () {\n return {\n blocksSuspend: false,\n // Start from true because removing \"loop\" property seems buggy in Vue\n hasAudio: true\n }\n },\n computed: {\n loopVideo () {\n if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {\n return !this.hasAudio\n }\n return this.$store.getters.mergedConfig.loopVideo\n }\n },\n methods: {\n onPlaying (e) {\n this.setHasAudio(e)\n if (this.loopVideo) {\n this.$emit('play', { looping: true })\n return\n }\n this.$emit('play')\n },\n onPaused (e) {\n this.$emit('pause')\n },\n setHasAudio (e) {\n const target = e.srcElement || e.target\n // If hasAudio is false, we've already marked this video to not have audio,\n // a video can't gain audio out of nowhere so don't bother checking again.\n if (!this.hasAudio) return\n if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n // non-zero if video has audio track\n if (target.webkitAudioDecodedByteCount > 0) return\n }\n if (typeof target.mozHasAudio !== 'undefined') {\n // true if video has audio track\n if (target.mozHasAudio) return\n }\n if (typeof target.audioTracks !== 'undefined') {\n if (target.audioTracks.length > 0) return\n }\n this.hasAudio = false\n }\n }\n}\n\nexport default VideoAttachment\n","import { render } from \"./video_attachment.vue?vue&type=template&id=dda2841a\"\nimport script from \"./video_attachment.js?vue&type=script&lang=js\"\nexport * from \"./video_attachment.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/builds/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <video\n class=\"video\"\n preload=\"metadata\"\n :src=\"attachment.url\"\n :loop=\"loopVideo\"\n :controls=\"controls\"\n :alt=\"attachment.description\"\n :title=\"attachment.description\"\n playsinline\n @playing=\"onPlaying\"\n @pause=\"onPaused\"\n />\n</template>\n\n<script src=\"./video_attachment.js\"></script>\n","var map = {\n\t\"./ar.json\": [\n\t\t36224,\n\t\t7808\n\t],\n\t\"./ca.json\": [\n\t\t49394,\n\t\t6234\n\t],\n\t\"./cs.json\": [\n\t\t87436,\n\t\t7433\n\t],\n\t\"./de.json\": [\n\t\t25195,\n\t\t9459\n\t],\n\t\"./en.json\": [\n\t\t88797\n\t],\n\t\"./eo.json\": [\n\t\t97898,\n\t\t4646\n\t],\n\t\"./es.json\": [\n\t\t98559,\n\t\t3968\n\t],\n\t\"./et.json\": [\n\t\t13230,\n\t\t4451\n\t],\n\t\"./eu.json\": [\n\t\t84826,\n\t\t4542\n\t],\n\t\"./fa.json\": [\n\t\t52006,\n\t\t2953\n\t],\n\t\"./fi.json\": [\n\t\t70823,\n\t\t9738\n\t],\n\t\"./fr.json\": [\n\t\t61341,\n\t\t3746\n\t],\n\t\"./ga.json\": [\n\t\t41647,\n\t\t830\n\t],\n\t\"./he.json\": [\n\t\t92215,\n\t\t379\n\t],\n\t\"./hu.json\": [\n\t\t95028,\n\t\t5494\n\t],\n\t\"./id.json\": [\n\t\t62263,\n\t\t2513\n\t],\n\t\"./it.json\": [\n\t\t2533,\n\t\t1159\n\t],\n\t\"./ja_easy.json\": [\n\t\t8439,\n\t\t8714\n\t],\n\t\"./ja_pedantic.json\": [\n\t\t22838,\n\t\t325\n\t],\n\t\"./ko.json\": [\n\t\t10707,\n\t\t9670\n\t],\n\t\"./nan-TW.json\": [\n\t\t42101,\n\t\t9862\n\t],\n\t\"./nb.json\": [\n\t\t72358,\n\t\t7845\n\t],\n\t\"./nl.json\": [\n\t\t49922,\n\t\t6256\n\t],\n\t\"./oc.json\": [\n\t\t47297,\n\t\t617\n\t],\n\t\"./pl.json\": [\n\t\t82098,\n\t\t5571\n\t],\n\t\"./pt.json\": [\n\t\t94465,\n\t\t4047\n\t],\n\t\"./ro.json\": [\n\t\t64367,\n\t\t6342\n\t],\n\t\"./ru.json\": [\n\t\t73289,\n\t\t5964\n\t],\n\t\"./sk.json\": [\n\t\t31478,\n\t\t1547\n\t],\n\t\"./te.json\": [\n\t\t32781,\n\t\t2044\n\t],\n\t\"./uk.json\": [\n\t\t8411,\n\t\t5253\n\t],\n\t\"./vi.json\": [\n\t\t6294,\n\t\t4975\n\t],\n\t\"./zh.json\": [\n\t\t4425,\n\t\t5929\n\t],\n\t\"./zh_Hant.json\": [\n\t\t37644,\n\t\t6544\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 27650;\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"50\":\"emoji-annotations/en_GB-json\",\"227\":\"emoji-annotations/ha-json\",\"278\":\"emoji-annotations/kn-json\",\"313\":\"emoji-annotations/tg-json\",\"325\":\"i18n/ja_pedantic-json\",\"346\":\"emoji-annotations/rw-json\",\"379\":\"i18n/he-json\",\"420\":\"emoji-annotations/fi-json\",\"457\":\"emoji-annotations/zh-json\",\"577\":\"emoji-annotations/en_001-json\",\"617\":\"i18n/oc-json\",\"625\":\"emoji-annotations/so-json\",\"678\":\"emoji-annotations/ps-json\",\"786\":\"emoji-annotations/xh-json\",\"830\":\"i18n/ga-json\",\"1012\":\"emoji-annotations/or-json\",\"1044\":\"emoji-annotations/zh_Hant_HK-json\",\"1056\":\"emoji-annotations/uz-json\",\"1095\":\"emoji-annotations/pl-json\",\"1159\":\"i18n/it-json\",\"1162\":\"emoji-annotations/ccp-json\",\"1236\":\"emoji-annotations/fil-json\",\"1290\":\"emoji-annotations/ja-json\",\"1404\":\"emoji-annotations/km-json\",\"1452\":\"emoji-annotations/yue-json\",\"1546\":\"emoji-annotations/pt_PT-json\",\"1547\":\"i18n/sk-json\",\"1553\":\"emoji-annotations/sl-json\",\"1584\":\"emoji-annotations/to-json\",\"1596\":\"emoji-annotations/da-json\",\"1613\":\"emoji-annotations/mai-json\",\"1780\":\"emoji-annotations/tk-json\",\"1790\":\"emoji-annotations/dsb-json\",\"1821\":\"emoji-annotations/fr_CA-json\",\"1911\":\"emoji-annotations/mr-json\",\"1959\":\"emoji-annotations/su-json\",\"2044\":\"i18n/te-json\",\"2223\":\"emoji-annotations/fr-json\",\"2243\":\"emoji-annotations/sa-json\",\"2342\":\"emoji-annotations/az-json\",\"2350\":\"emoji-annotations/sk-json\",\"2397\":\"emoji-annotations/kl-json\",\"2479\":\"emoji-annotations/jv-json\",\"2513\":\"i18n/id-json\",\"2569\":\"emoji-annotations/tt-json\",\"2599\":\"emoji-annotations/kok-json\",\"2656\":\"emoji-annotations/ckb-json\",\"2685\":\"emoji-annotations/ml-json\",\"2699\":\"emoji-annotations/es_MX-json\",\"2767\":\"emoji-annotations/zh_Hant-json\",\"2861\":\"emoji-annotations/hr-json\",\"2873\":\"emoji-annotations/kk-json\",\"2874\":\"emoji-annotations/sc-json\",\"2883\":\"emoji-annotations/ku-json\",\"2953\":\"i18n/fa-json\",\"2966\":\"emoji-annotations/ko-json\",\"2992\":\"emoji-annotations/eu-json\",\"3056\":\"emoji-annotations/hi_Latn-json\",\"3241\":\"emoji-annotations/sv-json\",\"3276\":\"emoji-annotations/et-json\",\"3313\":\"emoji-annotations/es_US-json\",\"3377\":\"emoji-annotations/as-json\",\"3568\":\"emoji-annotations/ti-json\",\"3687\":\"emoji\",\"3746\":\"i18n/fr-json\",\"3887\":\"emoji-annotations/sr-json\",\"3951\":\"emoji-annotations/th-json\",\"3968\":\"i18n/es-json\",\"3974\":\"emoji-annotations/bg-json\",\"3994\":\"emoji-annotations/sw_KE-json\",\"4047\":\"i18n/pt-json\",\"4209\":\"emoji-annotations/doi-json\",\"4354\":\"emoji-annotations/si-json\",\"4368\":\"emoji-annotations/sq-json\",\"4424\":\"emoji-annotations/yue_Hans-json\",\"4451\":\"i18n/et-json\",\"4542\":\"i18n/eu-json\",\"4571\":\"emoji-annotations/ga-json\",\"4646\":\"i18n/eo-json\",\"4691\":\"emoji-annotations/ca-json\",\"4710\":\"emoji-annotations/cs-json\",\"4718\":\"emoji-annotations/mn-json\",\"4770\":\"emoji-annotations/lb-json\",\"4785\":\"emoji-annotations/ky-json\",\"4786\":\"emoji-annotations/te-json\",\"4879\":\"emoji-annotations/en_CA-json\",\"4902\":\"emoji-annotations/hu-json\",\"4975\":\"i18n/vi-json\",\"5041\":\"emoji-annotations/pt-json\",\"5104\":\"emoji-annotations/pcm-json\",\"5115\":\"emoji-annotations/sr_Latn_BA-json\",\"5119\":\"emoji-annotations/am-json\",\"5224\":\"emoji-annotations/vi-json\",\"5253\":\"i18n/uk-json\",\"5304\":\"emoji-annotations/ha_NE-json\",\"5401\":\"emoji-annotations/mni-json\",\"5494\":\"i18n/hu-json\",\"5521\":\"emoji-annotations/fa-json\",\"5548\":\"emoji-annotations/he-json\",\"5571\":\"i18n/pl-json\",\"5728\":\"emoji-annotations/en-json\",\"5887\":\"emoji-annotations/rm-json\",\"5929\":\"i18n/zh-json\",\"5964\":\"i18n/ru-json\",\"5968\":\"emoji-annotations/hi-json\",\"6060\":\"emoji-annotations/sr_Cyrl_BA-json\",\"6068\":\"emoji-annotations/ka-json\",\"6116\":\"emoji-annotations/gd-json\",\"6126\":\"emoji-annotations/gl-json\",\"6148\":\"emoji-annotations/br-json\",\"6226\":\"emoji-annotations/de-json\",\"6234\":\"i18n/ca-json\",\"6256\":\"i18n/nl-json\",\"6272\":\"emoji-annotations/cy-json\",\"6342\":\"i18n/ro-json\",\"6344\":\"emoji-annotations/hy-json\",\"6355\":\"emoji-annotations/af-json\",\"6544\":\"i18n/zh_Hant-json\",\"6701\":\"emoji-annotations/mi-json\",\"6773\":\"emoji-annotations/nl-json\",\"6790\":\"emoji-annotations/my-json\",\"6797\":\"emoji-annotations/ur-json\",\"6826\":\"emoji-annotations/sd-json\",\"6831\":\"emoji-annotations/es-json\",\"6869\":\"emoji-annotations/chr-json\",\"6936\":\"emoji-annotations/ia-json\",\"6946\":\"emoji-annotations/pa-json\",\"7164\":\"emoji-annotations/de_CH-json\",\"7169\":\"emoji-annotations/lt-json\",\"7261\":\"emoji-annotations/gu-json\",\"7300\":\"emoji-annotations/is-json\",\"7303\":\"emoji-annotations/wo-json\",\"7304\":\"emoji-annotations/be-json\",\"7360\":\"emoji-annotations/ar_SA-json\",\"7433\":\"i18n/cs-json\",\"7464\":\"emoji-annotations/lo-json\",\"7569\":\"emoji-annotations/ast-json\",\"7585\":\"emoji-annotations/sw-json\",\"7808\":\"i18n/ar-json\",\"7845\":\"i18n/nb-json\",\"7855\":\"emoji-annotations/sat-json\",\"7879\":\"emoji-annotations/el-json\",\"7897\":\"emoji-annotations/ta-json\",\"8015\":\"emoji-annotations/hsb-json\",\"8031\":\"emoji-annotations/qu-json\",\"8134\":\"emoji-annotations/bs-json\",\"8395\":\"emoji-annotations/ru-json\",\"8681\":\"emoji-annotations/sr_Latn-json\",\"8714\":\"i18n/ja_easy-json\",\"8732\":\"emoji-annotations/yo-json\",\"8873\":\"emoji-annotations/es_419-json\",\"8898\":\"emoji-annotations/lv-json\",\"8970\":\"emoji-annotations/it-json\",\"8988\":\"emoji-annotations/en_IN-json\",\"8995\":\"emoji-annotations/fo-json\",\"9064\":\"emoji-annotations/bn-json\",\"9319\":\"emoji-annotations/zu-json\",\"9360\":\"emoji-annotations/en_AU-json\",\"9377\":\"emoji-annotations/ne-json\",\"9399\":\"emoji-annotations/mt-json\",\"9414\":\"emoji-annotations/nn-json\",\"9459\":\"i18n/de-json\",\"9465\":\"emoji-annotations/id-json\",\"9670\":\"i18n/ko-json\",\"9738\":\"i18n/fi-json\",\"9757\":\"emoji-annotations/ug-json\",\"9780\":\"emoji-annotations/kab-json\",\"9790\":\"emoji-annotations/ceb-json\",\"9862\":\"i18n/nan-TW-json\",\"9864\":\"emoji-annotations/ro-json\",\"9871\":\"emoji-annotations/uk-json\",\"9873\":\"emoji-annotations/ar-json\",\"9895\":\"emoji-annotations/ig-json\",\"9921\":\"emoji-annotations/mk-json\",\"9924\":\"emoji-annotations/ms-json\",\"9926\":\"emoji-annotations/yo_BJ-json\",\"9978\":\"emoji-annotations/tr-json\",\"9979\":\"emoji-annotations/no-json\",\"9994\":\"emoji-annotations/pa_Arab-json\"}[chunkId] || chunkId) + \".\" + {\"48\":\"b5ecdbc517423af07ca4\",\"50\":\"bd687f904492facc81d1\",\"159\":\"903e90c9de8ef6c67077\",\"227\":\"2a08912b38925c10f970\",\"278\":\"efdac8ac0cb00991ba1e\",\"313\":\"9647f559a4477d7d8e96\",\"325\":\"b52fa70f0bf89ae01cfb\",\"346\":\"031838c5374676191131\",\"379\":\"03c5d271a4034de06e6f\",\"420\":\"0f254bb4b0faaba4abcc\",\"457\":\"e42a28127d5c1aff6c85\",\"577\":\"72d8c47269350f59aa9f\",\"617\":\"4f52bf1b6e3213acc33c\",\"625\":\"f75abd16637c8924c075\",\"678\":\"a0d9eea5b81bcad11e64\",\"786\":\"21e88c05ad3113dfc7f2\",\"830\":\"3f1981817977a16f1d7e\",\"1012\":\"b007c2f6f92dcc95efac\",\"1044\":\"7eee03c705347a21c612\",\"1056\":\"ac43f4c54d4587324a20\",\"1095\":\"e9e8f1ed84dc6c169516\",\"1159\":\"99a21d5c98376af17141\",\"1162\":\"02836537ffe2b02291cb\",\"1236\":\"4fca833f178d1b889b69\",\"1290\":\"0bd51f8c40c106355b0e\",\"1404\":\"9bc922b2e0faa64b4c53\",\"1452\":\"15102c0ddfdf19bdfb4c\",\"1546\":\"c381b13e323f91b0e6b3\",\"1547\":\"d8d0eba80f94e6f55145\",\"1553\":\"a40c5548da34fce6f1d0\",\"1584\":\"50ac37d101caaf592c94\",\"1596\":\"8d074e27df71edafc543\",\"1613\":\"302386b3358f4d34f9c8\",\"1780\":\"23a9a6229829921704ad\",\"1790\":\"7635686ffd8d62264466\",\"1821\":\"59ed6b59e2ca68707292\",\"1911\":\"cb0a87d9aabf8a52161d\",\"1959\":\"daff15251020cbecea7d\",\"2044\":\"ce6db28261b2f824064f\",\"2223\":\"da49ed0d1a6622fe1c67\",\"2243\":\"21b06234a08c7469ccb4\",\"2342\":\"9a32f2941d9c4d1f834c\",\"2350\":\"5d96bdb4da82655d0314\",\"2397\":\"87ab8661b4bdecd09faf\",\"2479\":\"1c8d5ffcff22b46b6214\",\"2513\":\"e5c9ee768155f88128b9\",\"2569\":\"4c089389ba9983ec8ef7\",\"2599\":\"116e4f72db3bfb846233\",\"2656\":\"13dc83db1e15aa76051a\",\"2685\":\"3f2902a84240faff1b48\",\"2699\":\"ee359d4b611fdb1aeb33\",\"2767\":\"9cbb765c181d443828a9\",\"2861\":\"fe847ade1f18a60e513c\",\"2873\":\"a20b59d47bdfe99786ad\",\"2874\":\"c84c9c47d2e104c43e4c\",\"2883\":\"2173ed87f8d7372ee209\",\"2953\":\"a19100f6a5a9431e2adb\",\"2966\":\"d175900fe48f48ce87c8\",\"2992\":\"931b429f5fcc141549a5\",\"3056\":\"3cb73c456f31261f1908\",\"3241\":\"8b0374cbca3a77519876\",\"3276\":\"c42e3f186a55ecb061cd\",\"3313\":\"280bdb036dfd651d079a\",\"3377\":\"34cf67edc1cecd195738\",\"3568\":\"5b173bd33bb960be805b\",\"3687\":\"33eab91b64f59431137d\",\"3746\":\"36ef21ccb1203d3e65ae\",\"3887\":\"e29a20e59a708df0c6a8\",\"3951\":\"34709bae223bb9d2587c\",\"3968\":\"4a302899a65e1f67d8a2\",\"3974\":\"7c69c52572a7bf87e1db\",\"3994\":\"f3563cbeac1c158563d5\",\"4047\":\"3fc5593e030268bcd291\",\"4209\":\"7841c3f3ceb4e3da0bd1\",\"4354\":\"841b356da03623c10dbf\",\"4368\":\"bcf154ed8a6138aa089c\",\"4424\":\"cc60bb10d32fab3d8207\",\"4451\":\"580b101d6bb83a8aee75\",\"4542\":\"d2eab39b0427995fc314\",\"4571\":\"cb3f9e613a8c445aea23\",\"4646\":\"6c62eef99e850912498b\",\"4691\":\"ce029e860b10b242c6a5\",\"4710\":\"48d8bba230dc9fe6b3dc\",\"4718\":\"764169f1168d0432640f\",\"4770\":\"499c526f3a653618ea9b\",\"4785\":\"310bda579c819eda9472\",\"4786\":\"8a69a10f62cdf626244e\",\"4879\":\"5de965778a6b8a5a4bb4\",\"4902\":\"1faf52040deda872b416\",\"4975\":\"703c1e731be6e857bbf3\",\"5041\":\"2b2512ee44291bdb2ae7\",\"5104\":\"eac3a5ad0b4b5b33289d\",\"5115\":\"72933405032b81344754\",\"5119\":\"94388548f7c18233fec3\",\"5224\":\"f6a364b2add7f8c8bc67\",\"5253\":\"003908af9b15becdd382\",\"5304\":\"e4855d92aaccfdd6ba57\",\"5401\":\"7db7f76ab1ce34e3683d\",\"5494\":\"0487899ca7a7a8505ed8\",\"5521\":\"819c7f263c8594ccf4fa\",\"5548\":\"a3d7631f32182b0955a2\",\"5571\":\"c963247822381b05579b\",\"5728\":\"6c3947f7c49c3952084d\",\"5887\":\"985d4934f386fd05a75c\",\"5929\":\"a0a26f6d62ddbe0b49cc\",\"5964\":\"b913eb7f7e9f0c642438\",\"5968\":\"04bc5f73dc2169def97e\",\"6060\":\"83c7c64b9696ae2339f2\",\"6068\":\"567e7b051d90a37003f3\",\"6116\":\"e3d0aea3725be774ad81\",\"6126\":\"ce89036f0ae72224c994\",\"6148\":\"c7175423d8965ed10bae\",\"6226\":\"e1443c01a191af1665e1\",\"6234\":\"1eb24bc001efa3c0627f\",\"6256\":\"3fb9758b10c29434b613\",\"6272\":\"e09dd13da5ad56530ead\",\"6342\":\"3fd9977ed1c1413059ae\",\"6344\":\"2d819f7faabfeba8457f\",\"6355\":\"96c988285a6a2cce6246\",\"6464\":\"eb9c90a1c948cde554e9\",\"6544\":\"f7e1d0f4b873c60d6396\",\"6701\":\"9efe6f146ecd8987f80a\",\"6773\":\"52f4b93b8fa5e22cb585\",\"6790\":\"8e7dd1485813d15bba7e\",\"6797\":\"983c02109444c883a18f\",\"6826\":\"8f2a6a06dc3cf185f79d\",\"6831\":\"f593b0dc2367a9d7fb30\",\"6869\":\"e7e542ab5a74167dec10\",\"6936\":\"8e8365e2bf41779e2beb\",\"6946\":\"7d60d69762a108270669\",\"7164\":\"b4a5891ea2f38d616ec0\",\"7169\":\"ced4d5e70edc60127df6\",\"7261\":\"8a899f364cf260376905\",\"7300\":\"62e220c65215b034533d\",\"7303\":\"e0d689e22cda0dd77e9a\",\"7304\":\"f92f80669873a4100c69\",\"7360\":\"4a6f4402931a867070f0\",\"7433\":\"5eedbe9f7084c349fbe8\",\"7464\":\"ecb06d61465a355b8157\",\"7569\":\"7e4da8cb7e539c19a9b9\",\"7585\":\"d5f350641b9cbcc0e126\",\"7586\":\"628f729b9c8b2e6f4e1f\",\"7808\":\"4916f840147303aa65fe\",\"7845\":\"a54af3b1f47d576ad4aa\",\"7855\":\"71e92700b2aaca8e021c\",\"7879\":\"b36610f2ea16d56c2314\",\"7897\":\"675cc6c7607449d4a91b\",\"7962\":\"e25d40b042f8ee7389c3\",\"8015\":\"438721731b4171bc6fc3\",\"8031\":\"55f4df57e71076dbad9f\",\"8134\":\"48ef42da1c7976cf083c\",\"8395\":\"a81d0df34460837ccacc\",\"8681\":\"ff27d1f455bf2afb8d70\",\"8714\":\"1d5ea7e755b066ac2cdd\",\"8732\":\"ea1150d6bc360dd86f2e\",\"8859\":\"c76b0a0c3a4b5acbef11\",\"8873\":\"d81991295392b6ed83bb\",\"8898\":\"5600c2eb6d59fa0aa2e2\",\"8970\":\"9c1758f4fd3391f7f61a\",\"8988\":\"002faa48c09121928fca\",\"8995\":\"9b060e8009b3a8be4597\",\"9060\":\"24271e167e0471a1a732\",\"9064\":\"657aac057f36ad06c58d\",\"9319\":\"e0cb7cd3890583fd0f6d\",\"9360\":\"33aac9bbd887273a34b1\",\"9377\":\"a0118dca2096a101b8e8\",\"9399\":\"3ddf7dbc114adf90c500\",\"9414\":\"7293cd5d7205681cf48c\",\"9459\":\"bfa48615ac92f87ff37a\",\"9465\":\"55f83c46d753b0b69330\",\"9670\":\"9029d09084bb22d8b705\",\"9738\":\"d1934c18f12d80493ab1\",\"9757\":\"bf768bd32e9ff02b0a8a\",\"9780\":\"1a2de4774f4ddc2b51dd\",\"9790\":\"9db0336f168aa77ee395\",\"9862\":\"7f2789d8a461e86d1734\",\"9864\":\"cb62f86ce78c94d1e813\",\"9871\":\"af110c8eef232638fc4d\",\"9873\":\"5527466d349f2954d49b\",\"9895\":\"f19fa5fe3582463ba73c\",\"9921\":\"a254cabb8570419cc426\",\"9924\":\"272ee4735aabc37015dd\",\"9926\":\"650318c25fe4da92bad8\",\"9978\":\"6462e8cfd5006cf5b6cf\",\"9979\":\"22bdbbc77cc3c14ada58\",\"9994\":\"5ae021308b1c5f6dd8a7\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"159\":\"1d523a00378ebd68c5b3\",\"6464\":\"169260b661120cc50815\",\"7586\":\"0d43f70bc6240422f179\",\"7962\":\"76663e78ad5ea0bb0b90\",\"8859\":\"d26a3b0841a7beb8fd4a\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t2143: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"159\":1,\"6464\":1,\"7586\":1,\"7962\":1,\"8859\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2143: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpleroma_fe\"] = self[\"webpackChunkpleroma_fe\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [3733], () => (__webpack_require__(35930)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","ctx","normalize","_normalize","interpolate","_interpolate","named","_named","list","_list","plural","_plural","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","module","exports","data","emojiCurry","suggestEmoji","emoji","usersCurry","store","suggestUsers","input","nameKeywordLocalizer","firstChar","emojis","noPrefix","toLowerCase","substr","_objectSpread","filter","names","concat","keywords","kw","match","length","k","score","Math","max","apply","_toConsumableArray","name","imageUrl","startsWith","displayText","sort","a","b","alphabetically","_ref","dispatch","state","suggestions","previousQuery","timeout","cancelUserSearch","debounceUserSearch","query","reject","setTimeout","userSearch","clearTimeout","_ref2","_asyncToGenerator","_regeneratorRuntime","_callee","newSuggestions","_context","prev","next","abrupt","includes","users","user","screen_name","slice","aScore","bScore","screen_name_ui","detailText","profile_image_url_original","replacement","stop","_x","arguments","getTagName","tag","result","exec","getAttrs","innertag","substring","replace","RegExp","trim","attrs","Array","from","matchAll","_slicedToArray","_ref3","_ref4","v","fromEntries","_ref5","_ref6","attrKey","processTextForEmoji","text","processor","buffer","textBuffer","i","char","_step","found","_iterator","_createForOfIteratorHelper","s","n","done","value","shortcode","err","f","push","class","props","url","required","type","String","content","default","methods","onClick","decoded","this","decodeURI","link","generateTagLink","$router","window","open","_createElementBlock","_hoisted_1","_createElementVNode","href","_ctx","target","_cache","_withModifiers","innerHTML","MAYBE_LINE_BREAKING_ELEMENTS","components","MentionsLine","HashtagLink","html","attentions","handleLinks","Boolean","greentext","render","_this","preProcessPerLine","newHtml","currentMentions","lastSpacing","lastTags","writtenMentions","invisibleMentions","writtenTags","mentionIndex","tagsIndex","encounteredTextReverse","pass1","undefined","emptyElements","Set","levels","tagBuffer","getCurrentBuffer","flushText","handleSelfClosing","handleOpen","curBuf","newLevel","_unescape","handleClose","currentTag","pop","tagFull","tagName","has","convertHtmlToTree","processItem","item","index","array","what","emptyText","_createVNode","StillImage","isArray","_item","_item2","opener","children","closer","Tag","fullAttrs","mentionsLinePadding","_mergeProps","linkData","getLinkData","notifying","some","statusnet_profile_url","MENTIONS_LIMIT","renderMention","pass2","reverse","processItemReverse","_item3","rel","_getLinkData","_objectWithoutProperties","_excluded","renderHashtag","newChildren","prototype","toString","call","_isVNode","event","$emit","textContent","stripTags","join","_flattenDeep","greentextHandle","lines","blockElements","linebreakElements","visualLineElements","values","nonEmptyElements","elem","allElements","level","flush","handleBr","unshift","shift","convertHtmlToLines","string","every","l","cleanedString","findFirstUsable","slots","findIndex","_","renderOnlyFocused","onSwitch","Function","activeTab","scrollableTabs","sideTabBar","bodyScrollLock","active","computed","activeIndex","slot","key","isActive","_this2","tabName","$slots","beforeUpdate","clickTab","_this3","preventDefault","setTab","Fragment","$refs","contents","scrollTop","_this4","tabs","classesTab","classesWrapper","image","disabled","label","icon","FAIcon","classes","fullHeight","renderSlot","_withDirectives","_resolveDirective","library","faCircleNotch","fetch","select","unmounted","_ref$childPropName","childPropName","_ref$additionalPropNa","additionalPropNames","WrappedComponent","getComponentProps","loading","bottomedOut","error","entries","created","addEventListener","scrollLoad","fetchEntries","removeEventListener","$props","$store","updateEntries","newEntries","isEmpty","bodyBRect","document","body","getBoundingClientRect","height","y","$el","offsetHeight","innerHeight","pageYOffset","_defineProperty","$t","specialJsonName","ja","languages","langCodeToJsonName","langCodeToCldrName","ensureFinalFallback","codes","codeList","allowArrayLike","it","Symbol","iterator","minLen","_arrayLikeToArray","constructor","test","_unsupportedIterableToArray","F","_e","TypeError","normalCompletion","didErr","step","_e2","arr","len","arr2","_setLanguage","loadLanguageFile","en","require","setLanguage","i18n","language","_languages","first","rest","lang","_messages","_toArray","locale","_isEqual","fallbackLocale","messages","sent","setLocaleMessage","t0","finish","_x2","EventTarget","EventTargetPolyfill","settingsModalState","settingsModalLoadedUser","settingsModalLoadedAdmin","settingsModalTargetTab","settingsModalMode","settings","currentSaveStateNotice","noticeClearTimeout","notificationPermission","browserSupport","cssFilter","CSS","supports","layoutType","globalNotices","layoutHeight","lastTimeline","mutations","settingsSaved","success","errorData","setNotificationPermission","permission","setLayoutType","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","notice","removeGlobalNotice","setLayoutHeight","setLayoutWidth","layoutWidth","setLastTimeline","actions","setPageTitle","rootState","option","title","instance","commit","_ref7","_ref8","clearSettingsModalTargetTab","_ref9","openSettingsModalTab","_ref10","_ref11","_ref12","messageKey","_ref12$messageArgs","messageArgs","_ref12$level","_ref12$timeout","newNotice","_ref13","_ref14","_ref15","rootGetters","width","normalOrMobile","mergedConfig","thirdColumnMode","currentUser","_ref16","SORTED_EMOJI_GROUP_IDS","REGIONAL_INDICATORS","start","A","codePointAt","res","end","letter","fromCodePoint","displayTextI18n","args","loadAnnotations","injectAnnotations","annotations","availableLangs","reduce","acc","cur","registrationOpen","server","textlimit","themeData","vapidPublicKey","alwaysShowSubjectInput","defaultAvatar","defaultBanner","background","collapseMessageWithSubject","useAtIcon","mentionLinkDisplay","mentionLinkShowTooltip","mentionLinkShowAvatar","mentionLinkFadeDomain","mentionLinkShowYous","mentionLinkBoldenYou","hideFilteredStatuses","hideMutedPosts","hideMutedThreads","hideWordFilteredPosts","hidePostStats","hideBotIndication","hideSitename","hideUserStats","muteBotStatuses","modalOnRepeat","modalOnUnfollow","modalOnBlock","modalOnMute","modalOnDelete","modalOnLogout","modalOnApproveFollow","modalOnDenyFollow","modalOnRemoveUserFromFollowers","loginMethod","logo","logoMargin","logoMask","logoLeft","disableUpdateNotification","minimalScopesMode","nsfwCensorImage","postContentType","redirectRootLogin","redirectRootNoLogin","scopeCopy","showFeaturesPanel","showInstanceSpecificPanel","sidebarRight","subjectLineBehavior","theme","virtualScrolling","sensitiveByDefault","conversationDisplay","conversationTreeAdvanced","conversationOtherRepliesButton","conversationTreeFadeAncestors","maxDepthInThread","autocompleteSelect","customEmoji","customEmojiFetched","emojiFetched","unicodeEmojiAnnotations","pleromaBackend","postFormats","restrictedNicknames","safeDM","knownDomains","birthdayRequired","birthdayMinAge","shoutAvailable","pleromaChatMessagesAvailable","pleromaCustomEmojiReactionsAvailable","gopherAvailable","mediaProxyAvailable","suggestionsEnabled","suggestionsWeb","quotingAvailable","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","pollsAvailable","pollLimits","max_options","max_option_chars","min_expiration","max_expiration","setInstanceOption","setKnownDomains","domains","setUnicodeEmojiAnnotations","getters","instanceDefaultConfig","instanceDefaultProperties","groupedCustomEmojis","packs","tags","packName","packsOf","forEach","packId","standardEmojiList","groupId","standardEmojiGroupList","instanceDomain","URL","hostname","remoteInteractionLink","endsWith","statusId","nickname","getStaticEmoji","slug","groups","_groups$symbols","symbols","console","warn","loadUnicodeEmojiData","langList","all","_callee2","_context2","getCustomEmoji","_callee3","caseInsensitiveStrCmp","noPackLast","byPackThenByName","_context3","ok","json","assign","la","lb","aNull","bNull","packOf","packOfA","packOfB","image_url","setTheme","themeName","getPreset","config","customTheme","themeSource","source","themeEngineVersion","CURRENT_VERSION","applyTheme","fetchEmoji","getKnownDomains","_ref17","_callee4","_context4","apiService","credentials","emptyTl","userId","statuses","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","maxId","minId","minVisibleId","followers","friends","flushMarker","emptyNotifications","desktopNotificationSilence","Number","POSITIVE_INFINITY","idStore","defaultState","allStatuses","allStatusesObject","conversationsObject","notifications","favorites","timelines","mentions","public","media","publicAndExternal","dms","bookmarks","mergeOrAdd","obj","oldItem","_merge","_omitBy","attachments","splice","new","status","deleted","prepareStatus","sortById","seqA","seqB","isSeqA","isNaN","isSeqB","sortTimeline","timeline","_last","addStatusToGlobalStorage","conversationId","statusnet_conversation_id","updateNotificationsMinMaxId","notification","addNewStatuses","_ref2$showImmediately","showImmediately","_ref2$user","_ref2$noIdUpdate","noIdUpdate","_ref2$pagination","pagination","_isArray","timelineObject","minNew","_minBy","maxNew","_maxBy","newer","older","addStatus","resultForCurrentTimeline","addToTimeline","_find","visibility","quote","processors","edit","retweet","retweetedStatus","retweeted_status","favorite","add","counter","in_reply_to_status_id","favorited","fave_num","favoriteStatus","deletion","uri","_remove","action","removeStatusFromGlobalStorage","follow","unknown","log","_each","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","isValidNotification","isStatusNotification","report","hasOwnProperty","seen","removeStatus","_first","showNewStatuses","oldTimeline","_slice","resetStatuses","emptyState","clearTimeline","_ref8$excludeUserId","excludeUserId","clearNotifications","setFavorited","newStatus","setFavoritedConfirm","_findIndex","favoritedBy","setMutedStatus","thread_muted","setRetweeted","repeated","repeat_num","setRetweetedConfirm","rebloggedBy","setBookmarked","bookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","nsfw","setNotificationsLoading","_ref18","setNotificationsSilence","_ref19","markNotificationsAsSeen","markSingleNotificationAsSeen","_ref20","dismissNotification","_ref21","dismissNotifications","_ref22","finder","updateNotification","_ref23","updater","queueFlush","_ref24","queueFlushAll","addRepeats","_ref25","rebloggedByUsers","find","_ref26","addFavs","_ref27","favoritedByUsers","_ref28","addEmojiReactionsBy","_ref29","emojiReactions","emoji_reactions","addOwnReaction","_ref30","reactionIndex","reaction","count","accounts","newReaction","me","removeOwnReaction","_ref31","r","updateStatusWithPoll","_ref32","poll","setVirtualHeight","_ref33","virtualHeight","_ref34","_ref35","_ref35$showImmediatel","_ref35$timeline","_ref35$noIdUpdate","_ref36","maybeShowNotification","_ref37","_ref38","_ref39","_ref40","fetchStatus","_ref41","api","backendInteractor","fetchStatusSource","_ref42","fetchStatusHistory","_ref43","deleteStatus","_ref44","message","deleteStatusById","_ref45","markStatusesAsDeleted","_ref46","_ref47","unfavorite","_ref48","fetchPinnedStatuses","_ref49","pinStatus","_ref50","pinOwnStatus","unpinStatus","_ref51","unpinOwnStatus","muteConversation","_ref52","unmuteConversation","_ref53","_ref54","unretweet","_ref55","bookmark","_ref56","bookmarkStatus","unbookmark","_ref57","unbookmarkStatus","_ref58","_ref59","_ref60","_ref61","_ref62","_ref63","single","dismissNotificationLocal","_ref64","_ref65","_ref66","_ref67","_ref68","_ref69","fetchFavsAndRepeats","_ref70","fetchFavoritedByUsers","fetchRebloggedByUsers","_ref71","_ref72","reactWithEmoji","_ref73","_ref74","unreactWithEmoji","_ref75","_ref76","fetchEmojiReactionsBy","_ref77","fetchEmojiReactions","fetchFavs","_ref78","fetchRepeats","_ref79","search","_ref80","q","limit","offset","following","search2","u","_ref81","_ref82","setLists","allLists","setList","listId","allListsObject","accountIds","entry","setListAccounts","addListAccount","accountId","removeListAccount","set","deleteList","lists","createList","fetchList","getList","fetchListAccounts","getListAccounts","updateList","saved","added","removed","addAccountsToList","removeAccountsFromList","findListTitle","findListAccounts","fetchAndUpdate","_ref2$timeline","_ref2$older","_ref2$userId","_ref2$listId","_ref2$tag","until","since","timelineData","_camelCase","_getters$mergedConfig","replyVisibility","loggedIn","withMuted","numStatusesBeforeFetch","response","errors","statusText","ccTimeline","update","timelineFetcher","startFetching","_ref3$timeline","_ref3$userId","_ref3$listId","_ref3$tag","promiseInterval","boundFetchAndUpdate","requests","listsFetcher","startFetchingTimeline","_ref$userId","_ref$listId","fetchTimeline","startFetchingNotifications","notificationsFetcher","fetchNotifications","startFetchingFollowRequests","followRequestFetcher","startFetchingLists","startUserSocket","getMastodonSocketURI","stream","ProcessedWS","func","verifyCredentials","windowWidth","innerWidth","documentElement","clientWidth","windowHeight","clientHeight","REDIRECT_URI","location","origin","getOrCreateApp","clientId","clientSecret","form","FormData","append","___pleromafe_commit_hash","Date","toISOString","method","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","scope","dataString","_reduce","encoded","encodeURIComponent","getToken","getTokenWithCredentials","username","password","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","token","isPushSupported","navigator","getOrCreateServiceWorker","runtime","deleteSubscriptionFromBackEnd","headers","Authorization","mergeArrayLength","oldValue","newValue","_mergeWith","blockUser","relationship","unblockUser","muteUser","_typeof","expiresIn","predictedRelationship","relationships","muting","unmuteUser","muteDomain","domain","unmuteDomain","tagUser","usersObject","newTags","untagUser","updateRight","right","newRights","rights","updateActivationStatus","deactivated","setCurrentUser","lastLoginName","clearCurrentUser","beginLogin","loggingIn","endLogin","saveFriendIds","friendIds","_uniq","_concat","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","usersByNameObject","updateUserRelationship","updateUserInLists","inLists","saveBlockIds","blockIds","addBlockId","blockId","indexOf","setBlockIdsMaxId","blockIdsMaxId","saveMuteIds","muteIds","setMuteIdsMaxId","muteIdsMaxId","addMuteId","muteId","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","pinned","setUserForStatus","setUserForNotification","from_profile","setColor","highlighted","highlight","signUpPending","signUpErrors","signUpSuccess","signUpFailure","findUser","findUserByName","findUserByUrl","fetchUserIfMissing","fetchUser","fetchUserByName","fetchUserRelationship","fetchUserInLists","fetchBlocks","reset","blocks","_map","removeUserFromFollowers","blockUsers","unblockUsers","editUserNote","comment","fetchMutes","mutes","hideReblogs","followUser","reblogs","showReblogs","muteUsers","unmuteUsers","fetchDomainMutes","muteDomains","unmuteDomains","fetchFriends","fetchFollowers","subscribeUser","unsubscribeUser","toggleActivationStatus","activateUser","deactivateUser","is_active","registerPushNotifications","isEnabled","notificationVisibility","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","charCodeAt","pushManager","subscribe","subscribePush","subscription","JSON","stringify","alerts","follows","favourite","likes","mention","reblog","repeats","move","moves","responseData","sendSubscriptionToBackEnd","webPushNotifications","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","_compact","targetUsers","notificationIds","notificationsObject","relevantNotifications","searchUsers","signUp","userInfo","register","params","access_token","getCaptcha","logout","_store$rootState","oauthApi","userToken","backendInteractorService","loginUser","accessToken","Notification","requestPermission","locked","useStreamingApi","latest","maybeShowChatNotification","chat","lastMessage","chats","currentChatId","hidden","account_id","opts","account","profile_image_url","attachment","preview_url","showDesktopNotification","retryMultiplier","fetchers","socket","mastoUserSocket","mastoUserSocketStatus","followRequests","followRequestCount","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","WebSocket","CLOSED","CLOSING","getState","WSConnectionStatus","disableMastoSockets","startMastoUserSocket","detail","chatId","chatUpdate","closeEvent","ignoreCodes","debug","stopMastoUserSocket","close","_ref7$timeline","_ref7$tag","_ref7$userId","_ref7$listId","stopFetchingTimeline","stopFetchingNotifications","_extends","_objectDestructuringEmpty","stopFetchingFollowRequests","removeFollowRequest","request","stopFetchingLists","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","defaultApi","path","_set","updateProfile","notificationsApi","updateNotificationSettings","settingsMap","defaultScope","defaultNSFW","stripRichContent","get","acceptChatMessages","allowFollowingMove","discoverable","hideFavorites","hideFollowers","hideFollows","hideFollowersCount","hideFollowsCount","webPushHideContents","blockNotificationsFromStrangers","profileConfig","confirmProfileOption","wipeProfileOption","wipeAllProfileOptions","_value$get","_get","_original","setProfileOption","_map$set","_map$api","faTimes","Modal","NEW_USER_DATE","COMMAND_TRIM_FLAGS_AND_RESET","dirty","flagStorage","updateCounter","prefsStorage","_journal","simple","dontShowUpdateNotifs","collapseNav","collections","pinnedNavItems","raw","cache","newUserFlags","_moveItemInArray","movement","oldIndex","newIndex","newArray","_clamp","_wrapData","userName","_user","_timestamp","now","_version","_checkValidity","_verifyPrefs","_mergeJournal","_len","journals","_key","allJournals","_flatten","j","grouped","_groupBy","trimmedGrouped","journal","timestamp","remainder","lastRemoveIndex","_findLastIndex","operation","_uniqWith","_takeRight","clearServerSideStorage","userData","_cloneDeep","setServerSideStorage","live","storage","fqn","_getRecentData2","recent","stale","needUpload","cacheValid","liveValid","_getRecentData","_PLEROMA_HOTPATCH","reverseMigrations","to","_doMigrations","needsUpload","userNew","created_at","flagsTemplate","_recent","recentData","_excluded2","staleData","_excluded3","totalFlags","totalPrefs","allFlagKeys","toRaw","_getAllFlags","flag","recentFlag","staleFlag","_mergeFlags","recentJournal","staleJournal","resultOutput","totalJournal","command","newSet","_args","_mergePrefs","knownKeys","knownKeysSet","_resetFlags","min","setFlag","setPreference","addCollectionPreference","collection","removeCollectionPreference","reorderCollectionPreference","newCollection","updateCache","pushServerSideStorage","_ref16$force","force","needPush","pleroma_settings_store","frontends","loaded","needsReboot","modifiedPaths","descriptions","draft","dbConfigEnabled","adminSettingsStorage","setInstanceAdminNoDbConfig","setAvailableFrontends","installedRefs","installed_refs","refs","ref","updateAdminSettings","updateAdminDescriptions","updateAdminDraft","_path","parent","resetAdminDraft","loadFrontendsStuff","fetchAvailableFrontends","loadAdminStuff","fetchInstanceDBConfig","backendDbConfig","errorJson","fetchInstanceConfigDescriptions","backendDescriptions","setInstanceAdminSettings","configs","c","group","db","x","convert","tuple","setInstanceAdminDescriptions","description","_ref11$key","newPath","d","pushAdminDraft","changed","lv1data","eConfig","eDraft","_differenceWith","pushInstanceDBConfig","payload","pushAdminSetting","split","clone","resetAdminSetting","_path$split","_path$split2","subkey","delete","subkeys","channel","joined","setChannel","addMessage","setMessages","setJoined","initializeShout","joinPush","receive","onClose","onError","on","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","PASSWORD_STRATEGY","TOKEN_STRATEGY","TOTP_STRATEGY","RECOVERY_STRATEGY","resetState","strategy","initStrategy","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","root","supportedTypes","mediaViewer","currentIndex","activated","setMedia","setCurrentMedia","fileTypeService","mimetype","current","closeMediaViewer","tokens","fetchTokens","fetchOAuthTokens","revokeOAuthToken","swapTokens","reports","reportModal","preTickedIds","openUserReportingModal","closeUserReportingModal","setReportState","reportsState","addReport","_ref4$statusIds","statusIds","preTickedStatuses","oldState","trackedPolls","pollsObject","mergeOrAddPoll","existingPoll","expired","parse","expires_at","trackPoll","pollId","currentValue","untrackPoll","updateTrackedPoll","fetchPoll","polls","votePoll","choices","vote","modalActivated","openPostStatusModal","closePostStatusModal","resetPostStatusModal","openEditStatusModal","closeEditStatusModal","openStatusHistoryModal","closeStatusHistoryModal","ChatService","newMessages","_ref$updateMaxId","updateMaxId","_loop","chat_id","fakeId","fakeMessage","idIndex","pending","idempotency_key","idempotencyKeyIndex","isConfirmation","lastSeenMessageId","newMessageCount","_ret","empty","getView","currentMessageChainId","_orderBy","firstMessage","previousMessage","date","setHours","getTime","afterDate","nextMessage","isTail","object","messageChainId","_uniqueId","isHead","deleteMessage","messageId","m","cullOlderMessages","maxIndex","minIndex","_sortBy","_step2","_iterator2","resetNewMessageCount","clear","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","chatList","chatListFetcher","openedChats","reactive","openedChatMessageServices","lastReadMessageId","getChatById","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","sortedChatList","unreadChatCount","_sumBy","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","parseChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","readChat","lastReadId","isNewMessage","deleteChatMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","unread","updated_at","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","parseChatMessage","_value","announcements","supportsAnnouncements","fetchAnnouncementsTimer","setAnnouncements","setAnnouncementRead","read","setFetchAnnouncementsTimer","timer","setSupportsAnnouncements","unreadAnnouncementCount","_getters","announcement","inactive","fetchAnnouncements","isAdmin","privileges","getAnnouncements","visible","visibleObject","getWithinVisible","adminFetchAnnouncements","visibleAnnouncement","statusCode","markAnnouncementAsRead","dismissAnnouncement","startFetchingAnnouncements","interval","setInterval","stopFetchingAnnouncements","clearInterval","postAnnouncement","startsAt","endsAt","allDay","editAnnouncement","deleteAnnouncement","defaultReducer","paths","substate","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","_ref$key","_ref$paths","_ref$getState","getItem","_ref$setState","setState","setItem","_ref$reducer","reducer","_ref$storage","_ref$subscriber","subscriber","handler","savedState","usersState","replaceState","merge","mutation","webPushNotification","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","for","isPasswordAuth","isTokenAuth","mapState","mapGetters","mapMutations","mapActions","submit","submitToken","submitPassword","_this$oauth","identifier","passwordResetRequested","focusOnPasswordInput","clearError","passwordInput","focus","setSelectionRange","_hoisted_2","_toDisplayString","_hoisted_3","onSubmit","_Fragment","_hoisted_4","_hoisted_5","$event","placeholder","_hoisted_7","_hoisted_8","_hoisted_10","_component_router_link","_hoisted_11","_hoisted_12","_hoisted_13","_createBlock","_hoisted_14","_hoisted_15","_hoisted_16","_component_FAIcon","mfa","authSettings","mfa_token","mfaApi","_hoisted_6","_hoisted_9","size","h","resolveComponent","authForm","MFARecoveryForm","MFATOTPForm","LoginForm","signedIn","AuthForm","PostStatusForm","UserCard","_component_UserCard","rounded","_component_PostStatusForm","_component_auth_form","USERNAME_ROUTES","TIMELINES","home","route","criteria","anon","twkn","routeObject","tab","ROOT_ITEMS","interactions","badgeGetter","friendRequests","about","routeTo","anonRoute","custom","_renderSlot","_normalizeProps","_guardReactiveProps","faThumbtack","OptionalRouterLink","isPinned","pinnedItems","togglePin","serverSideStorage","_component_OptionalRouterLink","ass","navigate","$attrs","_resolveDynamicComponent","iconLetter","labelRaw","showPin","_normalizeClass","transform","filterNavigation","hasChats","hasAnnouncements","isFederating","isPrivate","getListEntries","ListsMenuContent","NavigationEntry","privateMode","federating","_renderList","_component_NavigationEntry","faUsers","faGlobe","faBookmark","faEnvelope","faComments","faBell","faInfoCircle","faStream","faList","getRouteTo","pinnedList","faChevronDown","faChevronUp","faBullhorn","NavigationPins","Checkbox","editMode","showTimelines","showLists","timelinesList","rootList","toggleTimelines","toggleLists","toggleEditMode","toggleCollapse","collapsed","timelinesItems","rootItems","forceExpand","_component_NavigationPins","forceEditMode","_component_ListsMenuContent","shout","pleromaChatMessages","gopher","whoToFollow","mediaProxy","uploadlimit","fileSizeFormatService","num","unit","getWhoToFollow","panel","usersToFollow","toFollow","reply","shuffled","_shuffle","img","avatar","acct","externalUser","showWhoToFollow","userProfileLink","generateProfileLink","watch","oldUser","mounted","fill","src","currentMessage","togglePanel","newVal","scrollEl","querySelector","scrollHeight","$nextTick","floating","author","rows","onKeyup","_withKeys","setTransform","scale","PinchZoom","_toHandlers","$listeners","deltaCoord","oldCoord","newCoord","touchEventCoord","touch","touches","screenX","screenY","pointerEventCoord","clientX","clientY","vectorLength","sqrt","perpendicular","dotProduct","v1","v2","project","scalar","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","direction","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","delta","towardsDir","perpendicularDir","towardsPerpendicular","SwipeAndClickGesture","swipePreviewCallback","swipeEndCallback","swipeCancelCallback","swipelessClickCallback","_ref$threshold","_ref$perpendicularTol","_ref$disableClickThre","disableClickThreshold","_classCallCheck","nop","_reset","_createClass","_pointerId","_swiped","_preventNextClick","button","pointerId","coord","sign","isPositive","pointerType","handlePointerDown","$gesture","handlePointerMove","handlePointerUp","handlePointerCancel","cancel","handleNativeClick","click","preview","offsets","GestureService","onPointerdown","onPointermove","onPointerup","onPointercancel","faChevronLeft","faChevronRight","VideoAttachment","SwipeClick","Flash","swipeDirection","swipeThreshold","pinchZoomMinScale","pinchZoomScaleResetLimit","showing","currentMedia","canNavigate","getType","swipeDisableClickThreshold","hide","hideIfNotSwiped","comp","swipeClick","goPrev","prevIndex","newMedia","goNext","nextIndex","onImageLoaded","handleSwipePreview","pinchZoom","handleSwipeEnd","handleKeyupEvent","keyCode","handleKeydownEvent","_component_Modal","onBackdropClicked","_component_SwipeClick","onPreviewRequested","onSwipeFinished","onSwipelessClicked","_component_PinchZoom","selector","alt","onLoad","_component_VideoAttachment","controls","_component_Flash","$tc","total","spin","faSignInAlt","faSignOutAlt","faHome","faUserPlus","faSearch","faTachometerAlt","faCog","faCompass","closed","closeGesture","toggleDrawer","unseenNotifications","unseenNotificationsFromStore","unseenNotificationsCount","sitename","timelinesRoute","doLogout","touchStart","touchMove","openAdminModal","onTouchstart","onTouchmove","style","role","faPen","HIDDEN_FOR_PAGES","scrollingDown","inputActive","oldScrollPos","amountScrolled","autohideFloatingPostButton","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","$route","isPersistent","alwaysShowNewPostButton","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","_debounce","scrollY","leading","trailing","faBars","faArrowUp","faMinus","SideDrawer","Notifications","ConfirmModal","notificationsCloseGesture","notificationsOpen","notificationsAtTop","showingConfirmLogout","closeMobileNotifications","isChat","chatsPinned","shouldConfirmLogout","toggleMobileSidebar","sideDrawer","openMobileNotifications","markRead","notificationsTouchStart","notificationsTouchMove","scrollToTop","scrollTo","scrollMobileNotificationsToTop","mobileNotifications","showConfirmLogout","hideConfirmLogout","onScroll","_ref$target","fetchOlderNotifications","_component_FALayers","_component_SideDrawer","_Teleport","_component_confirm_modal","onAccepted","onCancelled","searchTerm","searchInput","toggleHidden","SearchBar","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","logoBgStyle","margin","opacity","onSearchBarToggled","_normalizeStyle","_component_search_bar","onToggled","Status","List","UserLink","forward","statusIdsToReport","processing","isOpen","remoteInstance","is_local","closeModal","reportUser","isChecked","toggleStatus","checked","resize","Element","_component_i18n_t","keypath","_component_UserLink","onInput","_component_Checkbox","_component_List","items","_withCtx","_component_Status","focused","statusoid","resettingForm","editStatus","isFormVisible","oldVal","val","doEditStatus","spoilerText","sensitive","contentType","statusPosterService","onPosted","postStatus","resetAndClose","statusHistory","historyCount","history","newStatusId","resetHistory","_component_status","notices","closeNotice","UserPanel","NavPanel","defineAsyncComponent","InstanceSpecificPanel","FeaturesPanel","WhoToFollowPanel","ShoutPanel","MediaModal","MobilePostStatusButton","MobileNav","DesktopNav","SettingsModal","UpdateNotification","UserReportingModal","PostStatusModal","EditStatusModal","StatusHistoryModal","GlobalNoticeList","mobileActivePanel","interfaceLanguage","updateMobileState","reverseLayout","noSticky","newPostButtonShown","navClasses","navbarColumnStretch","userBackground","background_image","instanceBackground","hideInstanceWallpaper","bgStyle","hideISP","isChats","isListEdit","editingAvailable","shoutboxPosition","hideShoutbox","_this$$store$getters$","reverseSetting","disableStickyHeaders","showScrollbars","_component_MobileNav","_component_DesktopNav","_component_Notifications","_component_user_panel","_component_nav_panel","_component_instance_specific_panel","_component_features_panel","_component_who_to_follow_panel","_component_router_view","_component_MediaModal","_component_shout_panel","_component_MobilePostStatusButton","_component_UserReportingModal","_component_PostStatusModal","_component_EditStatusModal","_component_StatusHistoryModal","_component_SettingsModal","_component_UpdateNotification","_component_GlobalNoticeList","faAngleDoubleDown","faAngleDoubleRight","depth","inProfile","collapsable","isExpanded","pinnedStatusIdsObject","profileUserId","getReplies","setHighlight","toggleExpanded","toggleThreadDisplay","threadDisplayStatus","showThreadRecursively","totalReplyCount","totalReplyDepth","statusContentProperties","setStatusContentProperty","toggleStatusContentProperty","dive","suspendable","selfSuspendable","statusComponent","childComponent","reverseLookupTable","table","currentReplies","statusById","threadShowing","currentProp","collapseThread","showThread","showAllSubthreads","toggleCurrentProp","setCurrentProp","expandable","replies","showingTall","expandingSubject","showingLongSubject","replying","mediaPlaying","onGoto","onToggleExpanded","replyStatus","_component_thread_tree","numStatus","faFilter","faFont","faWrench","Popover","setReplyVisibility","openTab","replyVisibilitySelf","replyVisibilityFollowing","replyVisibilityAll","hideMedia","hideAttachments","hideAttachmentsInConv","_component_Popover","trigger","faFolderTree","setConversationDisplay","autoUpdate","streaming","collapseWithSubjects","showUserAvatars","faAngleDoubleLeft","idA","idB","expanded","threadDisplayStatusObject","statusContentPropertiesObject","inlineDivePosition","isPage","fetchConversation","maxDepthToShowByDefault","maxDepth","streamingEnabled","displayStyle","isTreeView","isLinearView","treeViewIsSimple","shouldFadeAncestors","otherRepliesButtonPosition","showOtherRepliesButtonBelowStatus","showOtherRepliesButtonInsideStatus","prop","hideStatus","virtualHidden","originalStatusId","getConversationId","_clone","statusIndex","_filter","sortAndFilterConversation","statusMap","threadTree","linearized","walk","forest","topLevel","processed","replyIds","sizes","subTreeSizeFor","cid","depths","subTreeDepthFor","_this5","tl","otherTopLevelCount","showingTopLevel","canDive","diveRoot","parentOf","diveDepth","diveMode","shouldShowAllConversationButton","shouldShowAncestors","ancestorsOf","irid","hiddenStyle","_this6","_this7","def","isReplying","_this8","maybeHighlight","ThreadTree","QuickFilterSettings","QuickViewSettings","newConversationId","oldConversationId","resetDisplayState","_this9","ancestors","descendants","getHighlight","setThreadDisplay","nextStatus","setThreadDisplayRecursively","_this10","leastVisibleAncestor","diveIntoStatus","preventScroll","tryScrollTo","diveToTopLevel","topLevelAncestorOrSelfId","undive","_this11","goToCurrent","parentId","parentOrSelf","_component_QuickFilterSettings","_component_QuickViewSettings","numReplies","useListsMenu","openMenu","blockOpen","stopPropagation","timelineName","i18nkey","onShow","faCirclePlus","faCheck","Timeline","showScrollTop","paused","unfocused","virtualScrollIndex","blockingClicks","Conversation","TimelineMenu","filteredVisibleStatuses","filteredPinnedStatusIds","showLoadButton","loadButtonString","mobileLoadButtonString","rootClasses","embedded","header","footer","_keyBy","statusesToDisplay","amount","statusesPerSide","ceil","nonPinnedIndex","virtualScrollingEnabled","mobileLayout","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","top","offsetTop","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","_throttle","cappedScrollIndex","centerOfScreen","approxIndex","floor","virtualScrollIndexY","abs","doc","clientTop","pauseOnUnfocused","_component_TimelineMenu","_component_conversation","footerSlipgate","_component_Timeline","tabModeDict","reactions","allow_following_move","filterMode","canSeeReports","onModeSwitch","TabSwitcher","_component_tab_switcher","UserAvatar","RichContent","UserPopover","htmlTitle","name_html","withAvatar","_component_UserPopover","_component_UserAvatar","_component_RichContent","AvatarList","Timeago","ChatTitle","StatusBody","attachmentInfo","types","file","fileType","messageForStatusContent","messageEmojis","isYou","messagePreview","summary","raw_html","openChat","recipient_id","_component_ChatTitle","_component_Timeago","time","_component_StatusBody","chatNew","BasicUserCard","userIds","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","_component_BasicUserCard","ChatListItem","ChatNew","isNew","cancelNewChat","newChat","_component_ChatNew","onCancel","_component_ChatListItem","compact","displayDate","today","toLocaleDateString","localeService","$i18n","day","month","$options","faEllipsisH","emits","Attachment","StatusContent","Gallery","LinkPreview","ChatMessageDate","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","isMessage","hasAttachment","betterShadow","popoverMarginStyle","left","hovered","menuOpened","onHover","bool","isHovered","confirm","hoveredMessageChain","onMouseover","onMouseleave","onMouseenter","placement","_component_StatusContent","_component_ChatMessageDate","getScrollPosition","Chat","ChatMessage","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","messageRetriers","handleResize","recipient","formPlaceholder","chatViewItems","bottomedOutBeforeUpdate","scrollDown","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","_opts$delayed","delayed","_getScrollPosition$of","diff","scrollBy","trunc","options","_options$behavior","behavior","_options$forceRead","isBottomedOut","reachedTop","cullOlderCheck","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","_ref2$isFirstFetch","_ref2$fetchLatest","fetchLatest","fetchOlderMessages","sinceId","chatMessages","positionBeforeUpdate","getOrCreateChat","doStartFetching","handleAttachmentPosting","sendMessage","_this12","idempotencyKey","mediaId","isNormalized","buildFakeMessage","doSendMessage","retriesLeft","_this13","_ref4$retriesLeft","sendChatMessage","pow","_component_ChatMessage","onResize","showingConfirmRemoveFollower","shouldConfirmRemoveUserFromFollowers","showConfirmRemoveUserFromFollowers","hideConfirmRemoveUserFromFollowers","doRemoveUserFromFollowers","toggled","RemoteFollow","FollowButton","RemoveFollowerButton","isMe","_component_basic_user_card","noFollowsYou","followed_by","_component_FollowButton","_component_RemoveFollowerButton","_component_RemoteFollow","faBirthdayCake","FollowerList","withLoadMore","destroy","FriendList","defaultTabKey","footerRef","routeParams","load","stopFetching","isUs","isExternal","followsTabVisible","hide_follows","followersTabVisible","hide_followers","formattedBirthday","browserLocale","birthday","timeZone","year","setFooterRef","el","userNameOrId","loadById","maybeId","maybeName","reason","errorMessage","switchUser","onTabSwitch","linkClicked","parentNode","FollowCard","switcher","selected","viewing","fields_html","field","fields_text","statuses_count","friends_count","_component_FriendList","_component_FollowCard","followers_count","_component_FollowerList","hashtags","currenResultTab","statusesOffset","lastStatusFetchCount","lastQuery","newQuery","searchType","blur","oldLength","_uniqBy","getActiveTab","resultCount","onResultTabSwitch","lastHistoryRecord","hashtag","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","uses","_hoisted_26","setup","v$","useVuelidate","email","fullname","captcha","InterfaceLanguageSwitcher","validations","requiredIf","accountActivationRequired","sameAs","maxValue","birthdayMin","accountApprovalRequired","setCaptcha","bioPlaceholder","replaceNewlines","reasonPlaceholder","minAge","setUTCMilliseconds","setUTCSeconds","setUTCMinutes","setUTCHours","minDate","setTime","DAY","birthdayMinAttr","toJSON","birthdayMinFormatted","isPending","serverValidationErrors","termsOfService","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$touch","$invalid","cpt","str","$error","$model","$dirty","bio","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_32","_hoisted_33","_hoisted_34","_component_interface_language_switcher","_hoisted_35","_hoisted_36","_hoisted_38","_hoisted_39","autocomplete","autocorrect","autocapitalize","spellcheck","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_47","_hoisted_48","passwordReset","throttled","mailerEnabled","dismissError","passwordResetApi","showingApproveConfirmDialog","showingDenyConfirmDialog","findFollowRequestNotificationId","notif","notificationsFromStore","showApproveConfirmDialog","hideApproveConfirmDialog","showDenyConfirmDialog","hideDenyConfirmDialog","approveUser","shouldConfirmApprove","doApprove","notifId","denyUser","shouldConfirmDeny","doDeny","FollowRequestCard","_component_FollowRequestCard","_this$$store$state$oa","staffAccounts","groupedStaffAccounts","groupBy","admin","moderator","toInstanceReasonObject","instances","info","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","TermsOfServicePanel","StaffPanel","MRFTransparencyPanel","policy","keyword","pattern","_component_staff_panel","_component_terms_of_service_panel","_component_MRFTransparencyPanel","redirect","ListsCard","cancelNewList","newList","_component_ListsCard","followingOnly","onChange","ListsNew","ListsUserSearch","PanelLoading","titleDraft","membersUserIds","removedUserIds","searchUserIds","addedUserIds","searchLoading","reallyDelete","membersUsers","toggleRemoveMember","toggleAddFromSearch","isRemoved","isAdded","onSearchLoading","results","onSearchLoadingDone","onSearchResults","updateListTitle","_ctx$$router","back","listTitle","_component_ListsUserSearch","onResults","onLoading","onLoadingDone","_component_PanelLoading","cols","AnnouncementEditor","editing","editedAnnouncement","editError","canEditAnnouncement","isRead","publishedAt","published_at","formatTimeOrDate","starts_at","ends_at","markAsRead","all_day","toLocaleString","enterEditMode","pleroma","raw_content","submitEdit","cancelEdit","Announcement","_component_announcement_editor","_component_rich_content","newAnnouncement","posting","canPostAnnouncement","_component_announcement","validateAuthenticatedRoute","routes","_to","component","PublicAndExternalTimeline","PublicTimeline","FriendsTimeline","beforeEnter","TagTimeline","BookmarkTimeline","ConversationPage","meta","dontScroll","RemoteUserResolver","UserProfile","Interactions","DMs","Registration","PasswordReset","FollowRequests","disableTeleport","OAuthCallback","Search","WhoToFollow","About","AnnouncementsPage","Lists","ListsTimeline","ListsEdit","ChatList","previousNavPaddingRight","previousAppBgWrapperRight","lockerEls","disableBodyScroll","scrollBarGap","reserveScrollBarGap","navEl","getElementById","getComputedStyle","getPropertyValue","paddingRight","appBgWrapperEl","classList","enableBodyScroll","remove","directive","binding","updated","Vue","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","metadata","birthday_required","birthday_min_age","getBackendProvidedConfig","pleroma_fe","_x3","getStaticConfig","setSettings","_callee5","apiConfig","staticConfig","overrides","env","copyInstanceOption","_context5","___pleromafe_dev_overrides","___pleromafe_mode","NODE_ENV","staticConfigPreference","_x4","getTOS","_callee6","_context6","_x5","getInstancePanel","_callee7","_context7","_x6","getStickers","_callee9","stickers","_context9","_callee8","resPack","_context8","pack","_x8","localeCompare","_x7","getAppSecret","_callee10","_context10","_x9","resolveStaffAccounts","nicknames","getNodeInfo","_callee11","features","uploadLimits","software","priv","federation","_context11","nodeName","openRegistrations","parseInt","general","banner","fieldsLimits","enabled","web","version","mrf_policies","_x10","setConfig","_callee12","configInfos","_context12","_x11","checkOAuthToken","_callee14","_context14","_callee13","_context13","_x13","_x14","_x12","_callee15","_store$state$config","customThemeSource","router","_context15","FaviconService","applyConfig","createRouter","createWebHistory","scrollBehavior","_from","savedPosition","matched","createApp","App","use","vClickOutside","VBodyScrollLock","VueVirtualScroller","FontAwesomeIcon","FontAwesomeLayers","unwrapInjectedRef","mount","_x15","currentLocale","createI18n","global","persistedStateOptions","storageError","plugins","persistedState","pushNotifications","createStore","modules","interface","interfaceModule","instanceModule","usersModule","statusesModule","listsModule","apiModule","configModule","profileConfigModule","serverSideStorageModule","adminSettings","adminSettingsModule","shoutModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokens","oauthTokensModule","reportsModule","pollsModule","postStatusModule","editStatusModule","statusHistoryModule","chatsModule","announcementsModule","strict","afterStoreSetup","process","COMMIT_HASH","DEV_OVERRIDES","expertLevel","colors","padEmoji","maxThumbnails","hideNsfw","preloadImage","loopVideo","loopVideoSilentOnly","emojiReactionsOnTimeline","stopGifs","followRequest","chatMention","muteWords","hideScopeNotice","playVideosInModal","useOneClickNsfw","useContainFit","userPopoverAvatarAction","userPopoverOverlay","sidebarColumnWidth","contentColumnWidth","notifsColumnWidth","emojiReactionsScale","defaultConfig","setOption","color","loadSettings","presentKeys","intersection","setPreset","Cookies","StatusCodeError","captureStackTrace","create","RegistrationError","_Error","_inherits","_super","_assertThisInitialized","errorContents","ap_id","errs","_capitalize","_wrapNativeSuper","ALIASES_URL","TAG_USER_URL","PERMISSION_GROUP_URL","screenName","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_DELETE_URL","MASTODON_PUBLIC_TIMELINE","MASTODON_STATUS_URL","MASTODON_USER_TIMELINE_URL","MASTODON_LIST_URL","MASTODON_LIST_TIMELINE_URL","MASTODON_LIST_ACCOUNTS_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_USER_NOTE_URL","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_MEDIA_UPLOAD_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PROFILE_UPDATE_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","MASTODON_DOMAIN_BLOCKS_URL","MASTODON_ANNOUNCEMENTS_DISMISS_URL","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","PLEROMA_CHAT_MESSAGES_URL","PLEROMA_CHAT_READ_URL","PLEROMA_DELETE_CHAT_MESSAGE_URL","PLEROMA_BACKUP_URL","PLEROMA_EDIT_ANNOUNCEMENT_URL","PLEROMA_DELETE_ANNOUNCEMENT_URL","PLEROMA_ADMIN_CONFIG_URL","oldfetch","fullUrl","promisedRequest","_ref$headers","Accept","authHeaders","parseUser","_ref24$limit","MASTODON_FOLLOWING_URL","announcementToPayload","_ref109","_ref113","_ref113$args","_ref114","_ref115","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","PLEROMA_STREAMING_EVENTS","_ref116","_ref116$preprocessor","preprocessor","handleMastoWS","_ref116$id","eventTarget","proxy","original","eventName","eventData","dispatchEvent","CustomEvent","wsEvent","readyState","parsedEvent","parseStatus","parseNotification","freeze","JOINED","ERROR","DISABLED","STARTING","STARTING_INITIAL","_ref50$since","_ref50$until","_ref50$userId","_ref50$listId","_ref50$tag","_ref50$withMuted","_ref50$replyVisibilit","_ref50$includeTypes","includeTypes","isNotifications","queryString","param","parseLinkHeaderPagination","flakeId","urlContext","MASTODON_STATUS_CONTEXT_URL","MASTODON_STATUS_SOURCE_URL","parseSource","originalStatus","exportFriends","more","_ref27$limit","MASTODON_FOLLOWERS_URL","MASTODON_FOLLOW_URL","unfollowUser","MASTODON_UNFOLLOW_URL","MASTODON_BLOCK_USER_URL","MASTODON_UNBLOCK_USER_URL","MASTODON_REMOVE_USER_FROM_FOLLOWERS","_ref59$mediaIds","mediaIds","inReplyToStatusId","quoteId","pollOptions","normalizedPoll","expires_in","multiple","postHeaders","_ref60$mediaIds","putHeaders","uploadMedia","formData","parseAttachment","setMediaDescription","URLSearchParams","with_relationships","_ref83","_ref84","_ref87","_ref88","deleteUser","addRight","deleteRight","agreement","resp","updateProfileImages","_ref5$avatar","_ref5$avatarName","avatarName","_ref5$banner","_ref5$background","importMutes","importBlocks","importFollows","deleteAccount","changeEmail","moveAccount","targetAccount","addAlias","alias","deleteAlias","listAliases","_cacheBooster","changePassword","newPassword","newPasswordConfirmation","settingsMFA","mfaDisableOTP","generateMfaBackupCodes","mfaSetupOTP","mfaConfirmOTP","addBackup","_ref85","listBackups","_ref86","fetchFollowRequests","fetchLists","MASTODON_LISTS_URL","account_ids","MASTODON_APPROVE_USER_URL","MASTODON_DENY_USER_URL","_ref89","_ref90","_ref90$single","_ref105","_ref91","_ref92","_ref93","_ref94","_ref95","_ref96","_ref97","_ref98","status_ids","_ref100","_ref99","fetchKnownDomains","_ref101","_ref102","_ref103","_ref104","_ref117","_ref118","_ref119","_ref119$limit","_ref120","_ref120$mediaId","media_id","_ref121","last_read_id","_ref122","_ref123","MASTODON_USER_IN_LISTS","_ref107","_ref108","_ref110","_ref111","_ref112","_ref106","_ref124","_ref125","_ref126","_ref127","installFrontend","_ref128","propsToNative","_kebabCase","rgb2hex","g","_r","_map2","relativeLuminance","srgb","_srgbToLinear","bit","c2linear","srgbToLinear","getContrastRatio","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","hex2rgb","hex","mixrgb","rgba2css","rgba","getTextColor","preserve","base","invertLightness","rgb","contrastRatio","getCssColor","Component","isFunction","getComponentOptions","SECOND","MINUTE","HOUR","WEEK","MONTH","YEAR","relativeTime","nowThreshold","round","relativeTimeShort","unitToSeconds","secondsToUnit","desktopNotificationOpts","desktopNotification","bind","output","masto","mastoShort","escape","display_name","name_unescaped","note","description_html","fields","unescape","cover_photo","following_count","bot","settings_store","favicon","chat_token","hide_follows_count","hide_followers_count","is_moderator","is_admin","default_scope","privacy","no_rich_text","show_role","show_birthday","delete_others_notice","muted","blocking","statusnet_blocking","follows_you","follow_request_count","notification_settings","unread_chat_count","parts","unicodeDomain","punycode","screen_name_ui_contains_non_ascii","mime_type","large_thumb_url","spoiler_text","content_type","favourited","favourites_count","reblogged","reblogs_count","edited_at","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","parent_visible","quote_id","quote_url","quote_visible","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","summary_raw_html","external_url","title_html","is_post_verb","qvitter_delete_notice","activity_type","qvitterStatusType","isNsfw","statusnet_html","summary_html","card","media_attachments","parsedNotice","ntype","is_seen","favorited_status","emoji_url","actor","linkHeader","parsedLinkHeader","parseLinkHeader","max_id","min_id","last_message","favicons","faviconWidth","faviconHeight","isImageLoaded","clearFaviconBadge","complete","naturalHeight","initFaviconService","querySelectorAll","favcanvas","createElement","favimg","Image","crossOrigin","favcontext","getContext","clearRect","drawImage","toDataURL","drawFaviconBadge","badgeColor","fillStyle","beginPath","arc","PI","fileSizeFormat","numArg","units","exponent","toFixed","fileTypeExt","fileMatchesSomeType","specialLanguageCodes","ja_easy","zh_Hant","zh","internalToBrowserLocale","internalToBackendLocale","getLanguageName","languageName","ISO6391","charAt","toLocaleUpperCase","languagesObject","internalToBackendLocaleMulti","visibleTypes","statusNotifications","_includes","muteWordHits","isMutedNotification","notificationObject","prepareNotificationObject","filteredNotificationsFromStore","sortedNotifications","i18nString","notifObj","mastoApiNotificationTypes","readNotifsIds","findOffset","child","_ref$top","_ref$left","ignorePadding","offsetLeft","_findPadding","findPadding","topPadding","leftPadding","offsetParent","position","contains","_findPadding2","topPaddingStr","leftPaddingStr","promiseCall","stopped","promise","random","statusSummary","muteWord","_ref$media","_ref$inReplyToStatusI","_ref$quoteId","_ref$contentType","_ref$preview","_ref$idempotencyKey","_ref2$media","_ref2$contentType","rules","generatePreset","head","styleEl","appendChild","styleSheet","sheet","insertRule","radii","shadows","fonts","configColumns","defaultConfigColumns","columns","getCssShadow","usesDropShadow","inset","shad","spread","alpha","getCssShadowFilter","generateColors","sourceColors","colors2to3","_getColors","getColors","htmlColors","solid","generateRadii","inputRadii","btnRadius","btn","checkbox","avatarAlt","tooltip","chatMessage","generateFonts","family","post","postCode","border","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","topBar","popup","avatarStatus","panelHeader","buttonHover","buttonPressed","generateShadows","hackContextDict","cleanInputShadows","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","mod","newShadow","shadowAcc","computeDynamicColor","variableSlot","composePreset","getThemes","themes","promises","statePositionAcc","_ref48$color","getOpacitySlot","isV1","cRed","cGreen","cBlue","cOrange","LAYERS","undelay","badge","profileTint","popover","selectedMenu","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","DEFAULT_OPACITY","faint","underlay","alertPopup","SLOT_INHERITANCE","depends","priority","wallpaper","brightness","layer","accent","faintLink","postFaintLink","profileBg","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","postCyantext","copacity","pollText","inheritsOpacity","fgText","fgLink","panelText","panelFaint","panelLink","topBarText","topBarLink","tabText","tabActiveText","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanel","btnPressedPanelText","btnPressedTopBar","btnPressedTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","inputText","inputPanelText","inputTopbarText","alertError","alertErrorText","alertErrorPanelText","alertWarning","alertWarningText","alertWarningPanelText","alertSuccess","alertSuccessText","alertSuccessPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupSuccess","alertPopupSuccessText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","badgeNeutral","badgeNeutralText","chatMessageIncomingBg","chatMessageIncomingText","chatMessageIncomingLink","chatMessageIncomingBorder","chatMessageOutgoingBg","chatMessageOutgoingText","chatMessageOutgoingLink","chatMessageOutgoingBorder","getLayersArray","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","node","ai","bi","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","_sourceColor$split$ma","_sourceColor$split$ma2","variable","modifier","parseFloat","sourceOpacity","backgroundColor","deps","isTextColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","highlightStyle","prefs","solidColor","tintColor","tintColor2","customProps","backgroundImage","backgroundPosition","highlightClass","complicated","faFile","faMusic","faImage","faVideo","faPlayCircle","faStop","faSearchPlus","faTrashAlt","faPencilAlt","faAlignRight","localDescription","nsfwImage","hideNsfwLocal","modalOpen","showHidden","flashLoaded","showDescription","classNames","usePlaceholder","placeholderName","toUpperCase","placeholderIconClass","referrerpolicy","oembed","useModal","modalTypes","videoTag","onEdit","openModal","openModalForce","onRemove","onShiftUp","shiftUp","onShiftDn","shiftDn","stopFlash","flash","closePlayer","setFlashLoaded","toggleDescription","onload","onImageLoad","naturalWidth","hideDescription","onKeydown","_component_StillImage","onPlay","onPause","thumb_url","oembedHTML","onPlayerOpened","onPlayerClosed","slicedUsers","_component_user_link","vm","indeterminateTransitionFix","indeterminate","onTransitionEnd","modelValue","DialogModal","cancelText","confirmText","onAccept","_component_dialog_modal","darkOverlay","addPositionToWords","words","word","previous","splitByWhitespaceBoundary","currentWord","currentChar","pos","wordsWithPosition","toReplace","ariaLive","defualt","currentText","announce","_textAtCaret","faSmileBeam","suggest","enableEmojiPicker","hideEmojiButton","enableStickerPicker","newlineOnCtrlEnter","randomSeed","genRandomSeed","caretEl","caret","blurTimeout","temporarilyHideSuggestions","disableClickOutside","overlayStyle","pickerShown","EmojiPicker","UnicodeDomainIndicator","ScreenReaderNotice","defaultCandidateIndex","preText","postText","showSuggestions","textAtCaret","_this$wordAtCaret","wordAtCaret","Completion","maybeLocalizedEmojiNamesAndKeywords","_emoji$annotations$la","_emoji$annotations$la2","maybeLocalizedEmojiName","_emoji$annotations$la3","onInputScroll","hiddenOverlay","scrollLeft","suggestionListId","suggestionItemId","_this$$refs","hiddenOverlayCaret","suggestorPopover","setAnchorEl","picker","padding","lineHeight","fontFamily","fontSize","wordWrap","whiteSpace","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","showPopover","hidePopover","newWord","firstchar","matchedSuggestions","_take","screenReaderNotice","number","triggerShowPicker","showPicker","scrollIntoView","togglePicker","hidePicker","startEmojiLoad","insert","insertion","keepOpen","_ref2$surroundingSpac","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","cycleBackward","cycleForward","rootRef","scrollerRef","closest","currentScroll","scrollerBottomBorder","rootBottomBorder","targetScroll","scroll","bottom","onPickerShown","onPickerClosed","setCaret","ctrlKey","shiftKey","onStickerUploaded","onStickerUploadFailed","selectionStart","updateStyles","autoCompleteItemLabel","ariaOwns","ariaAutocomplete","ariaExpanded","ariaActivedescendant","_component_screen_reader_notice","_component_EmojiPicker","onEmoji","_component_UnicodeDomainIndicator","at","faBoxOpen","faStickyNote","faSmile","faUser","faPaw","faIceCream","faBus","faBasketballBall","faLightbulb","faCode","faFlag","UNICODE_EMOJI_GROUP_ICON","activities","objects","flags","maybeLocalizedKeywords","nameLocalizer","hideCustomEmoji","inject","activeGroup","showingStickers","groupsScrolledClass","customEmojiTimeout","contentLoaded","groupRefs","emojiRefs","filteredEmojiGroups","StickerPicker","onShowing","setGroupRef","onPopoverShown","onPopoverClosed","startIndex","endIndex","visibleStartIndex","visibleEndIndex","scrolledGroup","emojiItems","headerId","parentElement","getOffset","scrollHeader","headerRef","offsetWidth","headerCont","currentScrollRight","setScroll","setShowStickers","indexInList","scrollToItem","updateScrolledClass","scrollTopMax","toggleStickers","filterByKeyword","keywordLowercase","orderedEmojiList","indices","indexOfKeyword","flat","oldContentLoaded","recalculateItemPerRow","getFilteredEmojiGroups","defaultGroup","allEmojiGroups","_trim","debouncedHandleKeywordChange","allCustomGroups","minItemSize","emojiHeight","emojiWidth","itemPerRow","activeGroupView","stickersAvailable","unpacked","unicodeEmojiGroups","stickerPickerEnabled","_chunk","isFirstRow","isInModal","popoversZLayer","tabindex","_component_still_image","composing","_component_DynamicScroller","onUpdate","onVisible","_component_DynamicScrollerItem","_component_sticker_picker","onUploaded","onUploadFailed","ruffleInstance","getRuffle","RufflePlayer","polyfills","publicPath","script","onerror","onabort","oncancel","faExclamationTriangle","player","openPlayer","RuffleService","ruffle","newest","createPlayer","letterbox","container","fetchRelationship","attempt","requested","requestFollow","showingConfirmUnfollow","shouldConfirmUnfollow","isPressed","labelFollowing","showConfirmUnfollow","hideConfirmUnfollow","unfollow","doUnfollow","requestUnfollow","hidingLong","minimal","grid","audio","attachmentsRemaining","currentRow","attachmentsDimensionalScore","row","tooManyAttachments","editable","onNaturalSizeLoad","rowStyle","itemStyle","getAspectRatio","flex","toggleHidingLong","openGallery","onMedia","rowIndex","attachmentIndex","_component_Attachment","removeAttachment","shiftUpAttachment","shiftDnAttachment","editAttachment","onSetMedia","Select","promptText","controlledLanguage","addLanguage","setLanguageAt","removeLanguageAt","_component_Select","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","newImg","provider_name","getKey","faUpload","uploadCount","uploadReady","uploading","uploadFile","self","filesize","allowedsize","filesizeunit","allowedsizeunit","fileData","decreaseUploadCount","clearFile","multiUpload","files","change","dropFiles","normalButton","acceptTypes","fileInfos","accept","faAt","userScreenName","hasSelection","shouldShowTooltip","handleSelection","getSelection","containsNode","full","userNameFullUi","serverName","userNameFull","highlightType","_highlightStyle","classnames","shouldBoldenYou","isRemote","shouldShowFullUserName","conf","shouldShowAvatar","shouldShowYous","shouldFadeDomain","MentionLink","mentionsComputed","extraMentions","manyMentions","toggleShowMore","_component_MentionLink","provide","noBackground","reportId","generateUserProfileLink","_component_status_content","notes","faStar","faRetweet","faEyeSlash","faSuitcaseRolling","faExpandAlt","faCompressAlt","statusExpanded","unmuted","Report","toggleStatusExpanded","getUser","toggleMute","userClass","userStyle","targetUser","targetUserProfileLink","needMute","botIndicator","_component_Report","filters","toggleNotificationFilter","NotificationFilters","minimalMode","seenToDisplayCount","mainClass","filteredNotifications","unseenCount","unseenCountTitle","noHeading","teleportTarget","wide","mobile","notificationsToDisplay","updateScrollPosition","markAsSeen","seenCount","notifs","_component_NotificationFilters","unseen","_component_notification","boundTo","boundToSelector","popoverClass","removePadding","overlayCenters","overlayCentersSelector","stayOnClick","triggerAttrs","anchorEl","teleport","lockReEntry","styles","oldSize","scrollable","graceTimeout","parentPopover","childrenShown","containerBoundingClientRect","anchorHeight","anchorWidth","anchorScreenBox","anchorStyle","paddingTop","bottomPadding","paddingBottom","rightPadding","paddingLeft","overlayCenter","parentScreenBox","xBounds","yBounds","horizOffset","vertOffset","box","overlayCenterScreenBox","leftInnerOffset","topInnerOffset","leftBorder","rightBorder","topBorder","bottomBorder","translateX","translateY","usingTop","topBoundary","bottomBoundary","yOffset","usingRight","rightBoundary","leftBoundary","xOffset","maxWidth","wasHidden","onChildPopoverState","onClickOutside","onMouseenterContent","onMouseleaveContent","childRef","$parent","$","beforeUnmount","_Transition","onClickContent","faPlus","pollType","expiryAmount","expiryUnit","maxOptions","maxLength","expiryUnits","expiry","convertExpiryFromUnit","minExpirationInCurrentUnit","convertExpiryToUnit","maxExpirationInCurrentUnit","nextOption","element","addOption","deleteOption","updatePollToParent","DateUtils","expiryAmountChange","maxlength","unstyled","faPollH","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","updateIdempotencyKey","textarea","replyTo","textLength","autoFocus","_ref$attentions","allAttentions","_reject","attention","buildMentionsString","repliedUser","copyMessageScope","statusParams","subject","mediaDescriptions","statusContentType","statusIsSensitive","statusFiles","statusPoll","statusMediaDescriptions","statusScope","quoting","uploadingFiles","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","emojiUserSuggestor","suggestor","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","safeDMEnabled","disablePolls","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","isEdit","quotable","repliedStatus","deep","statusChanged","autoPreview","clearStatus","mediaUpload","clearPollForm","preserveFocus","previewStatus","_arguments","_postingOptions","replyOrQuoteAttr","postingOptions","optimisticPosting","disableSubmit","submitOnEnter","setAllMediaDescriptions","postHandler","statusPoster","_statusPoster$postSta","debouncePreviewStatus","closePreview","togglePreview","addMediaFile","fileInfo","removeMediaFile","newText","shiftUpMediaFile","shiftDnMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","formRef","bottomRef","bottomBottomPaddingStr","bottomBottomPadding","bottomPaddingStr","vertPadding","oldHeight","scrollerHeight","heightWithoutPadding","newHeight","maxHeight","bottomBottomBorder","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","showEmojiPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","handleEmojiInputShow","openProfileTab","onDragover","disableLockWarning","disableSubject","_component_EmojiInput","inputProps","emojiPickerPlacement","onShown","onCompositionupdate","disableScopeSelector","disableVisibilitySelector","_component_scope_selector","postFormat","_component_poll_form","onUpdatePoll","_component_media_upload","onUploading","onAllUploaded","animation","onDragleave","onDrop","_component_gallery","disableSensitivityCheckbox","progress","$data","subscribeUrl","serverUrl","protocol","host","faLock","faLockOpen","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","css","unlisted","private","direct","showAll","userDefault","onScopeChange","faReply","faStarRegular","animated","filterWord","addReaction","existingReaction","show","showingConfirmDialog","shouldConfirmRepeat","showConfirmDialog","doRetweet","hideConfirmDialog","faBookmarkReg","faShareAlt","faExternalLinkAlt","faHistory","showingDeleteDialog","shouldConfirmDelete","showDeleteStatusConfirmDialog","doDeleteStatus","hideDeleteStatusConfirmDialog","copyLink","clipboard","writeText","statusLink","reportStatus","showStatusHistory","p","canDelete","ownStatus","canPin","canMute","canBookmark","isEdited","_component_ConfirmModal","enter","oldStatus","usersCapped","UserListPopover","tooManyReactions","showMoreString","accountsForEmoji","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","counterTriggerAttrs","_component_UserListPopover","faPlusSquare","faEye","camelCase","controlledOrUncontrolledSet","camelized","uncontrolledName","ReplyButton","FavoriteButton","ReactButton","RetweetButton","ExtraButtons","StatusPopover","EmojiReactions","uncontrolledReplying","userExpanded","uncontrolledMediaPlaying","headTailLinks","displayQuote","inQuote","toggle","controlledName","showReasonMutedThread","inConversation","repeaterClass","repeaterStyle","replyProfileLink","isReply","retweeterUser","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","rtBotStatus","botStatus","rtBotIndicator","mentionsLine","writtenSet","attn","hasMentionsLine","reasonsToMute","userIsMuted","shouldNotMute","relationshipReblog","hideMutedUsers","isFocused","replyToName","replySubject","decodedSummary","startsWithRe","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","isSuspendable","inThreadForest","controlledThreadDisplayStatus","visibilityLocalized","hasVisibleQuote","hasInvisibleQuote","quotedStatus","shouldDisplayQuote","visibilityIcon","showError","toggleReplying","gotoOriginal","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","setHeadTailLinks","controlledToggleThreadDisplay","scrollIfHighlighted","highlightId","rect","toggleDisplayQuote","inlineExpanded","isPreview","showPinned","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_component_reply_button","onToggle","simpleTree","_hoisted_31","_component_StatusPopover","flip","_component_MentionsLine","controlledShowingTall","controlledExpandingSubject","controlledShowingLongSubject","controlledToggleShowingTall","controlledToggleExpandingSubject","controlledToggleShowingLongSubject","onMediaplay","onMediapause","onParseReady","_hoisted_40","showOtherRepliesAsButton","_hoisted_41","_hoisted_46","_hoisted_49","_hoisted_50","_hoisted_51","_hoisted_52","_component_AvatarList","_component_EmojiReactions","_hoisted_53","_component_retweet_button","_component_favorite_button","_component_ReactButton","_component_extra_buttons","onOnError","onOnSuccess","_hoisted_58","basePoll","expiresAt","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","clickedElement","_forEach","optionId","voters_count","faLink","postLength","parseReadyDone","localCollapseSubjectDefault","tallStatus","singleLine","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","hideTallStatus","showingMore","attachmentTypes","handle","toggleShowingTall","toggleExpandingSubject","toggleShowingLongSubject","fullContent","controlledOrUncontrolledToggle","uncontrolledShowingTall","uncontrolledShowingLongSubject","uncontrolledExpandingSubject","statusCard","nsfwClickthrough","attachmentSize","Poll","galleryAttachments","_component_Poll","_component_link_preview","realSrc","appendPx","loadLazy","dataSrc","imageLoadHandler","canvas","imageLoadError","removeAttribute","localeDateString","relativeTimeString","timeString","tc","templateKey","refreshRelativeTimeObject","longFormat","datetime","faRobot","showPlaceholder","imgSrc","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","tagsSet","canGrantRole","canChangeActivationState","privileged","canDeleteAccount","canUseTagPolicy","tagPolicyAvailable","hasTag","privilege","toggleTag","toggleRight","deleteUserDialog","isProfile","isTargetUser","setToggled","_component_DialogModal","inListsSet","inList","toggleList","faEllipsisV","showingConfirmBlock","ProgressButton","UserListMenu","showConfirmBlock","hideConfirmBlock","showRepeats","hideRepeats","shouldConfirmBlock","doBlockUser","showing_reblogs","_component_UserListMenu","localNote","frozen","startEditing","cancelEditing","finalizeEditing","faRss","faEdit","followRequestInProgress","showingConfirmMute","muteExpiryAmount","muteExpiryUnit","bordered","isOtherUser","dailyAvg","days","userHighlightType","userHighlightColor","visibleRole","validRole","roleTitle","showModerationMenu","hasNote","supportsNote","shouldConfirmMute","muteExpiryUnits","ModerationTools","AccountActions","UserNote","showConfirmMute","hideConfirmMute","doMuteUser","setProfileView","zoomAvatar","mentionUser","onAvatarClickHandler","onAvatarClick","hideBio","heading","flexible","avatarAction","_component_AccountActions","subscribing","_component_ProgressButton","_component_ModerationTools","hasNoteEditor","_component_UserNote","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","preload","loop","playsinline","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","O","chunkIds","fn","notFulfilled","Infinity","fulfilled","getter","__esModule","getPrototypeOf","mode","ns","getOwnPropertyNames","definition","defineProperty","enumerable","chunkId","miniCssF","globalThis","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","setAttribute","onScriptComplete","doneFns","removeChild","toStringTag","nmd","installedCssChunks","miniCss","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","createStylesheet","loadStylesheet","installedChunks","installedChunkData","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/i18n/ar-json.4916f840147303aa65fe.js b/priv/static/static/js/i18n/ar-json.4916f840147303aa65fe.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[7808],{36224:(n,r,e)=>{e.r(r),e.d(r,{default:()=>t});const t={chat:{title:n=>{const{normalize:r}=n;return r(["الدردشة"])}},features_panel:{chat:n=>{const{normalize:r}=n;return r(["الدردشة"])},gopher:n=>{const{normalize:r}=n;return r(["غوفر"])},media_proxy:n=>{const{normalize:r}=n;return r(["بروكسي الوسائط"])},scope_options:n=>{const{normalize:r}=n;return r([])},text_limit:n=>{const{normalize:r}=n;return r(["الحد الأقصى للنص"])},title:n=>{const{normalize:r}=n;return r(["الميّزات"])},who_to_follow:n=>{const{normalize:r}=n;return r(["للمتابعة"])},upload_limit:n=>{const{normalize:r}=n;return r(["حد الرفع"])}},finder:{error_fetching_user:n=>{const{normalize:r}=n;return r(["خطأ أثناء جلب صفحة المستخدم"])},find_user:n=>{const{normalize:r}=n;return r(["البحث عن مستخدِم"])}},general:{apply:n=>{const{normalize:r}=n;return r(["تطبيق"])},submit:n=>{const{normalize:r}=n;return r(["إرسال"])},error_retry:n=>{const{normalize:r}=n;return r(["حاول مجددًا"])},retry:n=>{const{normalize:r}=n;return r(["حاول مجدداً"])},optional:n=>{const{normalize:r}=n;return r(["اختياري"])},show_more:n=>{const{normalize:r}=n;return r(["اعرض المزيد"])},show_less:n=>{const{normalize:r}=n;return r(["اعرض أقل"])},cancel:n=>{const{normalize:r}=n;return r(["ألغ"])},disable:n=>{const{normalize:r}=n;return r(["عطّل"])},enable:n=>{const{normalize:r}=n;return r(["فعّل"])},confirm:n=>{const{normalize:r}=n;return r(["تأكيد"])},close:n=>{const{normalize:r}=n;return r(["أغلق"])},role:{admin:n=>{const{normalize:r}=n;return r(["مدير"])},moderator:n=>{const{normalize:r}=n;return r(["مشرف"])}},generic_error_message:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["حدث خطأ: ",e(t(0))])},never_show_again:n=>{const{normalize:r}=n;return r(["لا تظهره مجددًا"])},yes:n=>{const{normalize:r}=n;return r(["نعم"])},no:n=>{const{normalize:r}=n;return r(["لا"])},unpin:n=>{const{normalize:r}=n;return r(["ألغ تثبيت العنصر"])},undo:n=>{const{normalize:r}=n;return r(["تراجع"])},more:n=>{const{normalize:r}=n;return r(["المزيد"])},loading:n=>{const{normalize:r}=n;return r(["يحمل…"])},generic_error:n=>{const{normalize:r}=n;return r(["حدث خطأ"])},scope_in_timeline:{private:n=>{const{normalize:r}=n;return r(["المتابِعون فقط"])},public:n=>{const{normalize:r}=n;return r(["علني"])},unlisted:n=>{const{normalize:r}=n;return r(["غير مدرج"])}},scroll_to_top:n=>{const{normalize:r}=n;return r(["مرر لأعلى"])},pin:n=>{const{normalize:r}=n;return r(["ثبت العنصر"])}},login:{login:n=>{const{normalize:r}=n;return r(["تسجيل الدخول"])},logout:n=>{const{normalize:r}=n;return r(["الخروج"])},password:n=>{const{normalize:r}=n;return r(["الكلمة السرية"])},placeholder:n=>{const{normalize:r}=n;return r(["مثال lain"])},register:n=>{const{normalize:r}=n;return r(["انشاء حساب"])},username:n=>{const{normalize:r}=n;return r(["إسم المستخدم"])},logout_confirm_title:n=>{const{normalize:r}=n;return r(["تأكيد الخروج"])},logout_confirm:n=>{const{normalize:r}=n;return r(["أتريد الخروج؟"])},logout_confirm_accept_button:n=>{const{normalize:r}=n;return r(["خروج"])},logout_confirm_cancel_button:n=>{const{normalize:r}=n;return r(["لا تخرج"])},hint:n=>{const{normalize:r}=n;return r(["لِج للانضمام للمناقشة"])},authentication_code:n=>{const{normalize:r}=n;return r(["رمز الاستيثاق"])},enter_recovery_code:n=>{const{normalize:r}=n;return r(["أدخل رمز التأكيد"])},enter_two_factor_code:n=>{const{normalize:r}=n;return r(["أدخل رمز الاستيثاق بعاملين"])},recovery_code:n=>{const{normalize:r}=n;return r(["رمز الاستعادة"])},heading:{totp:n=>{const{normalize:r}=n;return r(["الاستيثاق بعاملين"])},recovery:n=>{const{normalize:r}=n;return r(["الاستيثاق بعاملين"])}},description:n=>{const{normalize:r}=n;return r(["لج باستخدام OAuth"])}},nav:{chat:n=>{const{normalize:r}=n;return r(["الدردشة المحلية"])},friend_requests:n=>{const{normalize:r}=n;return r(["طلبات المتابَعة"])},mentions:n=>{const{normalize:r}=n;return r(["الإشارات"])},public_tl:n=>{const{normalize:r}=n;return r(["الخيط الزمني العام"])},timeline:n=>{const{normalize:r}=n;return r(["الخيط الزمني"])},twkn:n=>{const{normalize:r}=n;return r(["كافة الشبكة المعروفة"])},search_close:n=>{const{normalize:r}=n;return r(["أغلق شربط البحث"])},back:n=>{const{normalize:r}=n;return r(["للخلف"])},administration:n=>{const{normalize:r}=n;return r(["الإدارة"])},preferences:n=>{const{normalize:r}=n;return r(["التفضيلات"])},chats:n=>{const{normalize:r}=n;return r(["المحادثات"])},lists:n=>{const{normalize:r}=n;return r(["القوائم"])},edit_nav_mobile:n=>{const{normalize:r}=n;return r(["خصص شريط التنقل"])},edit_pinned:n=>{const{normalize:r}=n;return r(["حرر العناصر المثبتة"])},mobile_notifications_close:n=>{const{normalize:r}=n;return r(["أغلق الاشعارات"])},announcements:n=>{const{normalize:r}=n;return r(["إعلانات"])},home_timeline:n=>{const{normalize:r}=n;return r(["الخط الزمني الرئيس"])},search:n=>{const{normalize:r}=n;return r(["بحث"])},who_to_follow:n=>{const{normalize:r}=n;return r(["للمتابعة"])},dms:n=>{const{normalize:r}=n;return r(["رسالة شخصية"])},edit_finish:n=>{const{normalize:r}=n;return r(["تم التحرير"])},timelines:n=>{const{normalize:r}=n;return r(["الخيوط الزمنية"])},mobile_notifications:n=>{const{normalize:r}=n;return r(["افتح الإشعارات (تتواجد اشعارات غير مقروءة)"])},about:n=>{const{normalize:r}=n;return r(["حول"])},user_search:n=>{const{normalize:r}=n;return r(["بحث عن مستخدم"])}},notifications:{broken_favorite:n=>{const{normalize:r}=n;return r(["منشور مجهول، جارٍ البحث عنه…"])},favorited_you:n=>{const{normalize:r}=n;return r(["أعجِب بمنشورك"])},followed_you:n=>{const{normalize:r}=n;return r(["يُتابعك"])},load_older:n=>{const{normalize:r}=n;return r(["تحميل الإشعارات الأقدم"])},notifications:n=>{const{normalize:r}=n;return r(["الاشعارات"])},read:n=>{const{normalize:r}=n;return r(["مقروء!"])},repeated_you:n=>{const{normalize:r}=n;return r(["شارَك منشورك"])},error:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["خطأ أثناء جلب الاشعارات: ",e(t(0))])},follow_request:n=>{const{normalize:r}=n;return r(["يريد متابعتك"])},poll_ended:n=>{const{normalize:r}=n;return r(["انتهى الاستطلاع"])},no_more_notifications:n=>{const{normalize:r}=n;return r(["لا مزيد من الإشعارات"])},reacted_with:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["تفاعل بـ",e(t(0))])},submitted_report:n=>{const{normalize:r}=n;return r(["أرسل بلاغًا"])},migrated_to:n=>{const{normalize:r}=n;return r(["انتقلَ إلى"])}},post_status:{account_not_locked_warning:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["حسابك ليس ",e(t(0)),". يمكن للجميع مشاهدة مشاركاتك المحصورة على المتابِعين."])},account_not_locked_warning_link:n=>{const{normalize:r}=n;return r(["مقفل"])},attachments_sensitive:n=>{const{normalize:r}=n;return r(["اعتبر المرفقات كلها كمحتوى حساس"])},content_type:{"text/plain":n=>{const{normalize:r}=n;return r(["نص صِرف"])},"text/html":n=>{const{normalize:r}=n;return r(["HTML"])},"text/markdown":n=>{const{normalize:r}=n;return r(["ماركداون"])}},content_warning:n=>{const{normalize:r}=n;return r(["الموضوع (اختياري)"])},default:n=>{const{normalize:r}=n;return r(["وصلت للتوّ إلى لوس أنجلس."])},direct_warning:n=>{const{normalize:r}=n;return r([])},posting:n=>{const{normalize:r}=n;return r(["النشر"])},scope:{direct:n=>{const{normalize:r}=n;return r(["مباشر - شارك مع المستخدمين المذكورين فقط"])},private:n=>{const{normalize:r}=n;return r(["للمتابِعين فقط - شارك حصرًا مع المتابِعين"])},public:n=>{const{normalize:r}=n;return r(["علني - يُنشر على الخيوط الزمنية العمومية"])},unlisted:n=>{const{normalize:r}=n;return r(["غير مُدرَج - لا يُنشَر على الخيوط الزمنية العمومية"])}},media_description:n=>{const{normalize:r}=n;return r(["وصف الوسائط"])},direct_warning_to_all:n=>{const{normalize:r}=n;return r(["سيكون عذا المنشور مرئيًا لكل المستخدمين المذكورين."])},post:n=>{const{normalize:r}=n;return r(["انشر"])},preview:n=>{const{normalize:r}=n;return r(["معاينة"])},preview_empty:n=>{const{normalize:r}=n;return r(["فارغ"])},scope_notice:{public:n=>{const{normalize:r}=n;return r(["سيكون هذا المنشور مرئيًا للجميع"])},private:n=>{const{normalize:r}=n;return r(["سيكون هذا المنشور مرئيا لمتابِعيك فقط"])},unlisted:n=>{const{normalize:r}=n;return r(["لن تظهر هته المشاركة في الخط الزمني العلني والشبكات العلنية"])}},direct_warning_to_first_only:n=>{const{normalize:r}=n;return r(["سيكون عذا المنشور مرئيًا للمستخدمين المذكورين في أول الرسالة."])},edit_unsupported_warning:n=>{const{normalize:r}=n;return r(["بليروما لا يدعم تعديل الذكر والاستطلاع."])},empty_status_error:n=>{const{normalize:r}=n;return r(["يتعذر نشر منشور فارغ دون ملفات"])},edit_status:n=>{const{normalize:r}=n;return r(["حرر الحالة"])},new_status:n=>{const{normalize:r}=n;return r(["انشر حالة جديدة"])},content_type_selection:n=>{const{normalize:r}=n;return r(["نسق المشاركة"])},scope_notice_dismiss:n=>{const{normalize:r}=n;return r(["أغلق هذا التنبيه"])},media_description_error:n=>{const{normalize:r}=n;return r(["فشل تحديث الوسائط، حاول مجددًا"])}},registration:{bio:n=>{const{normalize:r}=n;return r(["السيرة الذاتية"])},email:n=>{const{normalize:r}=n;return r(["عنوان البريد الإلكتروني"])},fullname:n=>{const{normalize:r}=n;return r(["الاسم العلني"])},password_confirm:n=>{const{normalize:r}=n;return r(["تأكيد الكلمة السرية"])},registration:n=>{const{normalize:r}=n;return r(["التسجيل"])},token:n=>{const{normalize:r}=n;return r(["رمز الدعوة"])},bio_optional:n=>{const{normalize:r}=n;return r(["سيرة (اختيارية)"])},email_optional:n=>{const{normalize:r}=n;return r(["بيرد إلكتروني (اختياري)"])},username_placeholder:n=>{const{normalize:r}=n;return r(["مثل lain"])},reason:n=>{const{normalize:r}=n;return r(["سبب التسجيل"])},register:n=>{const{normalize:r}=n;return r(["سجل"])},validations:{username_required:n=>{const{normalize:r}=n;return r(["لايمكن تركه فارغًا"])},email_required:n=>{const{normalize:r}=n;return r(["لايمكن تركه فارغًا"])},password_required:n=>{const{normalize:r}=n;return r(["لايمكن تركه فارغًا"])},password_confirmation_required:n=>{const{normalize:r}=n;return r(["لايمكن تركه فارغًا"])},fullname_required:n=>{const{normalize:r}=n;return r(["لايمكن تركه فارغًا"])},password_confirmation_match:n=>{const{normalize:r}=n;return r(["يلزم أن يطابق كلمة السر"])},birthday_required:n=>{const{normalize:r}=n;return r(["لايمكن تركه فارغًا"])},birthday_min_age:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["يلزم أن يكون في ",e(t("date"))," أو قبله"])}},fullname_placeholder:n=>{const{normalize:r}=n;return r(["مثل Lain Iwakura"])},reason_placeholder:n=>{const{normalize:r}=n;return r(["قبول التسجيل في هذا المثيل يستلزم موافقة المدير\nلهذا يجب عليك إعلامه بسبب التسجيل."])},birthday_optional:n=>{const{normalize:r}=n;return r(["تاريخ الميلاد (اختياري):"])},email_language:n=>{const{normalize:r}=n;return r(["بأي لغة تريد استلام رسائل البريد الإلكتروني؟"])},birthday:n=>{const{normalize:r}=n;return r(["تاريخ الميلاد:"])}},settings:{attachmentRadius:n=>{const{normalize:r}=n;return r(["المُرفَقات"])},attachments:n=>{const{normalize:r}=n;return r(["المُرفَقات"])},avatar:n=>{const{normalize:r}=n;return r(["الصورة الرمزية"])},avatarAltRadius:n=>{const{normalize:r}=n;return r(["الصور الرمزية (الإشعارات)"])},avatarRadius:n=>{const{normalize:r}=n;return r(["الصور الرمزية"])},background:n=>{const{normalize:r}=n;return r(["الخلفية"])},bio:n=>{const{normalize:r}=n;return r(["السيرة الذاتية"])},btnRadius:n=>{const{normalize:r}=n;return r(["الأزرار"])},cBlue:n=>{const{normalize:r}=n;return r(["أزرق (الرد، المتابَعة)"])},cGreen:n=>{const{normalize:r}=n;return r(["أخضر (إعادة النشر)"])},cOrange:n=>{const{normalize:r}=n;return r(["برتقالي (مفضلة)"])},cRed:n=>{const{normalize:r}=n;return r(["أحمر (إلغاء)"])},change_password:n=>{const{normalize:r}=n;return r(["غيّر كلمة السر"])},change_password_error:n=>{const{normalize:r}=n;return r(["حدث خلل أثناء تعديل كلمتك السرية."])},changed_password:n=>{const{normalize:r}=n;return r(["نجح تغيير كلمة السر!"])},collapse_subject:n=>{const{normalize:r}=n;return r([])},confirm_new_password:n=>{const{normalize:r}=n;return r(["تأكيد كلمة السر الجديدة"])},current_avatar:n=>{const{normalize:r}=n;return r(["صورتك الرمزية الحالية"])},current_password:n=>{const{normalize:r}=n;return r(["كلمة السر الحالية"])},current_profile_banner:n=>{const{normalize:r}=n;return r(["الرأسية الحالية لصفحتك الشخصية"])},data_import_export_tab:n=>{const{normalize:r}=n;return r(["تصدير واستيراد البيانات"])},default_vis:n=>{const{normalize:r}=n;return r(["أسلوب العرض الافتراضي"])},delete_account:n=>{const{normalize:r}=n;return r(["حذف الحساب"])},delete_account_description:n=>{const{normalize:r}=n;return r(["حذف حسابك و كافة بياناتك نهائيًا."])},delete_account_error:n=>{const{normalize:r}=n;return r(["حدثة مشكلة اثناء حذف حسابك، إذا استمرت تواصل مع مدير المثيل."])},delete_account_instructions:n=>{const{normalize:r}=n;return r(["يُرجى إدخال كلمتك السرية أدناه لتأكيد عملية حذف الحساب."])},export_theme:n=>{const{normalize:r}=n;return r(["حفظ النموذج"])},filtering:n=>{const{normalize:r}=n;return r(["الترشيح"])},filtering_explanation:n=>{const{normalize:r}=n;return r(["سيتم إخفاء كافة المنشورات التي تحتوي على هذه الكلمات، كلمة واحدة في كل سطر"])},follow_export:n=>{const{normalize:r}=n;return r(["تصدير الاشتراكات"])},follow_export_button:n=>{const{normalize:r}=n;return r(["تصدير الاشتراكات كملف csv"])},follow_export_processing:n=>{const{normalize:r}=n;return r(["التصدير جارٍ، سوف يُطلَب منك تنزيل ملفك بعد حين"])},follow_import:n=>{const{normalize:r}=n;return r(["استيراد الاشتراكات"])},follow_import_error:n=>{const{normalize:r}=n;return r(["خطأ أثناء استيراد المتابِعين"])},follows_imported:n=>{const{normalize:r}=n;return r(["أُستورد المتابِعون! معالجتهم ستستغرق بعض الوقت."])},foreground:n=>{const{normalize:r}=n;return r(["الأمامية"])},general:n=>{const{normalize:r}=n;return r(["الإعدادات العامة"])},hide_attachments_in_convo:n=>{const{normalize:r}=n;return r(["اخف المرفقات من المحادثات"])},hide_attachments_in_tl:n=>{const{normalize:r}=n;return r(["اخف المرفقات من الخيط الزمني"])},hide_post_stats:n=>{const{normalize:r}=n;return r(["اخف احصائيات المنشور (مثل عدد التفضيلات)"])},hide_user_stats:n=>{const{normalize:r}=n;return r(["اخف احصائيات المستخدم (مثل عدد المتابِعين)"])},import_followers_from_a_csv_file:n=>{const{normalize:r}=n;return r(["استورد المتابِعين من ملف csv"])},import_theme:n=>{const{normalize:r}=n;return r(["تحميل نموذج"])},inputRadius:n=>{const{normalize:r}=n;return r([])},instance_default:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["(الافتراضي: ",e(t("value")),")"])},interfaceLanguage:n=>{const{normalize:r}=n;return r(["لغة الواجهة"])},invalid_theme_imported:n=>{const{normalize:r}=n;return r(["الملف المختار ليس سمة تدعمها بليروما.لن تطرأ تغييرات على سمتك."])},limited_availability:n=>{const{normalize:r}=n;return r(["غير متوفر على متصفحك"])},links:n=>{const{normalize:r}=n;return r(["الروابط"])},lock_account_description:n=>{const{normalize:r}=n;return r([])},loop_video:n=>{const{normalize:r}=n;return r(["كرر تشغيل الفيديوهات"])},loop_video_silent_only:n=>{const{normalize:r}=n;return r(["كرر فيديوهات بدون صوت (مثل gif في ماستودون)"])},name:n=>{const{normalize:r}=n;return r(["الاسم"])},name_bio:n=>{const{normalize:r}=n;return r(["الاسم والسيرة الذاتية"])},new_password:n=>{const{normalize:r}=n;return r(["كلمة السر الجديدة"])},no_rich_text_description:n=>{const{normalize:r}=n;return r([])},notification_visibility:n=>{const{normalize:r}=n;return r(["نوع الإشعارات التي تريد عرضها"])},notification_visibility_follows:n=>{const{normalize:r}=n;return r(["يتابع"])},notification_visibility_likes:n=>{const{normalize:r}=n;return r(["المفضلة"])},notification_visibility_mentions:n=>{const{normalize:r}=n;return r(["ذِكر"])},notification_visibility_repeats:n=>{const{normalize:r}=n;return r(["مشاركات"])},nsfw_clickthrough:n=>{const{normalize:r}=n;return r([])},oauth_tokens:n=>{const{normalize:r}=n;return r(["رموز OAuth"])},token:n=>{const{normalize:r}=n;return r(["رمز"])},refresh_token:n=>{const{normalize:r}=n;return r(["رمز التحديث"])},valid_until:n=>{const{normalize:r}=n;return r(["صالح حتى"])},revoke_token:n=>{const{normalize:r}=n;return r(["سحب"])},panelRadius:n=>{const{normalize:r}=n;return r(["لوحات"])},pause_on_unfocused:n=>{const{normalize:r}=n;return r([])},presets:n=>{const{normalize:r}=n;return r(["النماذج"])},profile_background:n=>{const{normalize:r}=n;return r(["خلفية الملف التعريفي"])},profile_banner:n=>{const{normalize:r}=n;return r(["رأسية الصفحة الشخصية"])},profile_tab:n=>{const{normalize:r}=n;return r(["الملف التعريفي"])},radii_help:n=>{const{normalize:r}=n;return r([])},replies_in_timeline:n=>{const{normalize:r}=n;return r(["المشاركات في الخيط الزمني"])},reply_visibility_all:n=>{const{normalize:r}=n;return r(["أظهر كل المشاركات"])},reply_visibility_following:n=>{const{normalize:r}=n;return r(["أظهر الردود الموجهة إلي أو لمتابَعي فقط"])},reply_visibility_self:n=>{const{normalize:r}=n;return r(["أظهر الردود الموجهة إلي فقط"])},saving_err:n=>{const{normalize:r}=n;return r(["خطأ أثناء حفظ الإعدادات"])},saving_ok:n=>{const{normalize:r}=n;return r(["حُفظت الإعدادات"])},security_tab:n=>{const{normalize:r}=n;return r(["الأمان"])},set_new_avatar:n=>{const{normalize:r}=n;return r(["اختيار صورة رمزية جديدة"])},set_new_profile_background:n=>{const{normalize:r}=n;return r(["اختيار خلفية جديدة للملف الشخصي"])},set_new_profile_banner:n=>{const{normalize:r}=n;return r(["اختيار رأسية جديدة للصفحة الشخصية"])},settings:n=>{const{normalize:r}=n;return r(["الإعدادات"])},stop_gifs:n=>{const{normalize:r}=n;return r(["إيقاف الصور المتحركة مالم يُمرر فوقها"])},streaming:n=>{const{normalize:r}=n;return r(["إظهار المنشورات الجديدة عند التمرير لأعلى"])},text:n=>{const{normalize:r}=n;return r(["نص"])},theme:n=>{const{normalize:r}=n;return r(["السمة"])},theme_help:n=>{const{normalize:r}=n;return r([])},tooltipRadius:n=>{const{normalize:r}=n;return r([])},user_settings:n=>{const{normalize:r}=n;return r(["إعدادات المستخدم"])},values:{false:n=>{const{normalize:r}=n;return r(["لا"])},true:n=>{const{normalize:r}=n;return r(["نعم"])}},emoji_reactions_scale:n=>{const{normalize:r}=n;return r(["معامل تحجيم التفاعلات"])},app_name:n=>{const{normalize:r}=n;return r(["اسم تطبيق"])},security:n=>{const{normalize:r}=n;return r(["الأمن"])},enter_current_password_to_confirm:n=>{const{normalize:r}=n;return r(["أدخل كلمة السر الحالية لتيقن من هويتك"])},mfa:{title:n=>{const{normalize:r}=n;return r(["الاستيثاق بعاملين"])},generate_new_recovery_codes:n=>{const{normalize:r}=n;return r(["ولّد رموز استعادة جديدة"])},warning_of_generate_new_codes:n=>{const{normalize:r}=n;return r(["عند توليد رموز استعادة جديدة ستزال القديمة."])},recovery_codes:n=>{const{normalize:r}=n;return r(["رموز الاستعادة."])},recovery_codes_warning:n=>{const{normalize:r}=n;return r(["خزن هذه الرموز في مكان آمن. إذا فقدت هذه الرموز وتعذر عليك الوصول إلى تطبيق الاستيثاق بعاملين، لن تتمكن من الوصول لحسابك."])},authentication_methods:n=>{const{normalize:r}=n;return r(["طرق الاستيثاق"])},scan:{title:n=>{const{normalize:r}=n;return r(["مسح"])},desc:n=>{const{normalize:r}=n;return r(["امسح رمز الاستجابة السريعة QR من تطبيق الاستيثاق أو أدخل المفتاح:"])},secret_code:n=>{const{normalize:r}=n;return r(["مفتاح"])}},verify:{desc:n=>{const{normalize:r}=n;return r(["لتفعيل الاستيثاق بعاملين أدخل الرمز من تطبيق الاستيثاق:"])}}},block_import:n=>{const{normalize:r}=n;return r(["استيراد المحجوبين"])},import_mutes_from_a_csv_file:n=>{const{normalize:r}=n;return r(["استورد قائمة الخُرس من ملف csv"])},account_backup:n=>{const{normalize:r}=n;return r(["نسخ احتياطي للحساب"])},download_backup:n=>{const{normalize:r}=n;return r(["نزّل"])},account_backup_table_head:n=>{const{normalize:r}=n;return r(["نسخ احتياطي"])},backup_not_ready:n=>{const{normalize:r}=n;return r(["هذا النسخ الاحتياطي ليس جاهزًا."])},backup_failed:n=>{const{normalize:r}=n;return r(["فشل النسخ الاحتياطي."])},remove_backup:n=>{const{normalize:r}=n;return r(["أزل"])},list_backups_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["خطأ أثناء حلب قائمة النُسخ الاحتياطية: ",e(t("error"))])},added_backup:n=>{const{normalize:r}=n;return r(["أُضيفت نسخة احتياطية جديدة."])},blocks_tab:n=>{const{normalize:r}=n;return r(["المحجوبون"])},confirm_dialogs_block:n=>{const{normalize:r}=n;return r(["حجب مستخدم"])},confirm_dialogs_mute:n=>{const{normalize:r}=n;return r(["إخراس مستخدم"])},confirm_dialogs_delete:n=>{const{normalize:r}=n;return r(["حذف حالة"])},confirm_dialogs_logout:n=>{const{normalize:r}=n;return r(["خروج"])},confirm_dialogs_approve_follow:n=>{const{normalize:r}=n;return r(["قبول متابِع"])},confirm_dialogs_deny_follow:n=>{const{normalize:r}=n;return r(["رفض متابِع"])},list_aliases_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["خطأ أثناء جلب الكنيات: ",e(t("error"))])},hide_list_aliases_error_action:n=>{const{normalize:r}=n;return r(["أغلق"])},remove_alias:n=>{const{normalize:r}=n;return r(["أزل هذه الكنية"])},add_alias_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["حدث خطأ أثناء إضافة الكنية: ",e(t("error"))])},confirm_dialogs:n=>{const{normalize:r}=n;return r(["أطلب تأكيدًا عند"])},confirm_dialogs_repeat:n=>{const{normalize:r}=n;return r(["مشاركة حالة"])},mutes_and_blocks:n=>{const{normalize:r}=n;return r(["الخُرس والمحجوبون"])},move_account_target:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["الحساب المستهدف (مثل ",e(t("example")),")"])},wordfilter:n=>{const{normalize:r}=n;return r(["ترشيح الكلمات"])},always_show_post_button:n=>{const{normalize:r}=n;return r(["أظهر الزر العائم لإنشاء منشور جديد دائمًا"])},hide_wallpaper:n=>{const{normalize:r}=n;return r(["اخف خلفية المثيل"])},save:n=>{const{normalize:r}=n;return r(["احفظ التعديلات"])},lists_navigation:n=>{const{normalize:r}=n;return r(["أظهر القوائم في شريط التنقل"])},mute_export_button:n=>{const{normalize:r}=n;return r(["صدّر قائمة الخرس إلى ملف csv"])},blocks_imported:n=>{const{normalize:r}=n;return r(["اُستورد المحجوبون! معالجة القائمة ستستغرق وقتًا."])},mute_export:n=>{const{normalize:r}=n;return r(["تصدير الخُرس"])},mute_import:n=>{const{normalize:r}=n;return r(["استيراد الخُرس"])},mute_import_error:n=>{const{normalize:r}=n;return r(["خطأ أثناء استيراد الخُرس"])},change_email_error:n=>{const{normalize:r}=n;return r(["حدثت خلل أثناء تغيير بريدك الإلكتروني."])},change_email:n=>{const{normalize:r}=n;return r(["غيّر البريد الإلكتروني"])},changed_email:n=>{const{normalize:r}=n;return r(["نجح تغيير البريد الإلكتروني!"])},account_alias_table_head:n=>{const{normalize:r}=n;return r(["الكنية"])},account_alias:n=>{const{normalize:r}=n;return r(["كنيات الحساب"])},move_account:n=>{const{normalize:r}=n;return r(["أنقل الحساب"])},moved_account:n=>{const{normalize:r}=n;return r(["نُقل الحساب."])},hide_media_previews:n=>{const{normalize:r}=n;return r(["اخف معاينات الوسائط"])},hide_muted_posts:n=>{const{normalize:r}=n;return r(["اخف منشورات المستخدمين الخُرس"])},confirm_dialogs_unfollow:n=>{const{normalize:r}=n;return r(["الغاء متابعة مستخدم"])},confirm_dialogs_remove_follower:n=>{const{normalize:r}=n;return r(["إزالة متابع"])},new_alias_target:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["أضف كنية جديدة (مثل ",e(t("example")),")"])},added_alias:n=>{const{normalize:r}=n;return r(["أُضيفت الكنية."])},move_account_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["خطأ أثناء نقل الحساب: ",e(t("error"))])},emoji_reactions_on_timeline:n=>{const{normalize:r}=n;return r(["أظهر التفاعلات في الخط الزمني"])},mutes_imported:n=>{const{normalize:r}=n;return r(["اُستورد الخُرس! معالجة القائمة ستستغرق وقتًا."])},remove_language:n=>{const{normalize:r}=n;return r(["أزل"])},primary_language:n=>{const{normalize:r}=n;return r(["اللغة الرئيسية:"])},expert_mode:n=>{const{normalize:r}=n;return r(["أظهر الإعدادات المتقدمة"])},block_import_error:n=>{const{normalize:r}=n;return r(["خطأ أثناء استيراد قائمة المحجوبين"])},add_backup:n=>{const{normalize:r}=n;return r(["أنشئ نسخة احتياطية جديدة"])},add_backup_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["خطأ أثناء إضافة نسخ احتياطي جديد: ",e(t("error"))])},move_account_notes:n=>{const{normalize:r}=n;return r(["إذا أردت نقل حسابك عليك إضافة كنية تشير إلى هنا في الحساب المستهدف."])},avatar_size_instruction:n=>{const{normalize:r}=n;return r(["أدنى حجم مستحسن للصورة الرمزية هو 150x150 بيكسل."])},word_filter_and_more:n=>{const{normalize:r}=n;return r(["مرشح الكلمات والمزيد..."])},hide_all_muted_posts:n=>{const{normalize:r}=n;return r(["اخف المنشورات المكتومة"])},max_thumbnails:n=>{const{normalize:r}=n;return r(["أقصى عدد للصور المصغرة لكل منشور (فارغ = غير محدود)"])},block_export_button:n=>{const{normalize:r}=n;return r(["صدّر قائمة المحجوبين إلى ملف csv"])},block_export:n=>{const{normalize:r}=n;return r(["تصدير المحجوبين"])},use_one_click_nsfw:n=>{const{normalize:r}=n;return r(["افتح المرفقات ذات المحتوى الحساس NSFW بنقرة واحدة"])},account_privacy:n=>{const{normalize:r}=n;return r(["خصوصية"])},use_contain_fit:n=>{const{normalize:r}=n;return r(["لا تقتص الصور المصغرة للمرفقات"])},import_blocks_from_a_csv_file:n=>{const{normalize:r}=n;return r(["استورد المحجوبين من ملف csv"])},instance_default_simple:n=>{const{normalize:r}=n;return r(["(افتراضي)"])},interface:n=>{const{normalize:r}=n;return r(["واجهة"])},birthday:{label:n=>{const{normalize:r}=n;return r(["تاريخ الميلاد"])},show_birthday:n=>{const{normalize:r}=n;return r(["اظهر تاريخ ميلادي"])}},profile_fields:{add_field:n=>{const{normalize:r}=n;return r(["أضف حقل"])},value:n=>{const{normalize:r}=n;return r(["محتوى"])},label:n=>{const{normalize:r}=n;return r(["البيانات الوصفية للملف الشخصي"])},name:n=>{const{normalize:r}=n;return r(["لصيقة"])}},posts:n=>{const{normalize:r}=n;return r(["منشورات"])},user_profiles:n=>{const{normalize:r}=n;return r(["ملفات المستخدمين الشخصية"])},notification_visibility_emoji_reactions:n=>{const{normalize:r}=n;return r(["تفاعلات"])},notification_visibility_polls:n=>{const{normalize:r}=n;return r(["انتهاء استطلاعات اشتركت بها"])},file_export_import:{restore_settings:n=>{const{normalize:r}=n;return r(["استرجع الإعدادات من ملف"])},backup_restore:n=>{const{normalize:r}=n;return r(["نسخ احتياطي للإعدادات"])},backup_settings_theme:n=>{const{normalize:r}=n;return r(["احفظ النسخ الاحتياطي للإعدادات والسمة في ملف"])},backup_settings:n=>{const{normalize:r}=n;return r(["احفظ النسخ الاحتياطي للإعدادات في ملف"])}},mutes_tab:n=>{const{normalize:r}=n;return r(["خُرس"])},no_mutes:n=>{const{normalize:r}=n;return r(["لا يوجد خُرس"])},hide_followers_count_description:n=>{const{normalize:r}=n;return r(["لا تظهر عدد المتابِعين"])},show_moderator_badge:n=>{const{normalize:r}=n;return r(['أظهر شارة "مشرف" في ملفي التعريفي'])},hide_follows_count_description:n=>{const{normalize:r}=n;return r(["لا تظهر عدد المتابَعين"])},hide_muted_threads:n=>{const{normalize:r}=n;return r(["اخف النقاشات المكتومة"])},no_blocks:n=>{const{normalize:r}=n;return r(["لا يوجد محجوبون"])},show_admin_badge:n=>{const{normalize:r}=n;return r(['أظهر شارة "مدير" في ملفي التعريفي'])},conversation_display_tree:n=>{const{normalize:r}=n;return r(["تفرعات"])},notification_setting_block_from_strangers:n=>{const{normalize:r}=n;return r(["احجب اشعارات من لا تتابعهم"])},style:{switcher:{clear_all:n=>{const{normalize:r}=n;return r(["امسح الكل"])},keep_as_is:n=>{const{normalize:r}=n;return r(["أبقه على حاله"])},use_snapshot:n=>{const{normalize:r}=n;return r(["النسخة القديمة"])},use_source:n=>{const{normalize:r}=n;return r(["النسخة الحديثة"])},load_theme:n=>{const{normalize:r}=n;return r(["حمِّل سمة"])},help:{upgraded_from_v2:n=>{const{normalize:r}=n;return r(["PleromaFE حُدث، وعليه ربما ستجد اختلافًا في السمة."])}},keep_color:n=>{const{normalize:r}=n;return r(["أبق الألوان"])},keep_opacity:n=>{const{normalize:r}=n;return r(["أبق الشفافية"])},keep_fonts:n=>{const{normalize:r}=n;return r(["أبق الخطوط"])},keep_shadows:n=>{const{normalize:r}=n;return r(["أبق الظلال"])},clear_opacity:n=>{const{normalize:r}=n;return r(["امسح الشفافية"])}},common:{color:n=>{const{normalize:r}=n;return r(["اللون"])},opacity:n=>{const{normalize:r}=n;return r(["الشافافية"])}},advanced_colors:{top_bar:n=>{const{normalize:r}=n;return r(["شريط العلوي"])},icons:n=>{const{normalize:r}=n;return r(["أيقونات"])},poll:n=>{const{normalize:r}=n;return r(["منحنى الاستطلاع"])},_tab_label:n=>{const{normalize:r}=n;return r(["متقدم"])},badge_notification:n=>{const{normalize:r}=n;return r(["الإشعارات"])},selectedPost:n=>{const{normalize:r}=n;return r(["منشور محدد"])},selectedMenu:n=>{const{normalize:r}=n;return r(["عنصر محدد من قائمة"])},highlight:n=>{const{normalize:r}=n;return r(["عناصر بارزة"])},disabled:n=>{const{normalize:r}=n;return r(["معطل"])},tabs:n=>{const{normalize:r}=n;return r(["ألسنة"])},chat:{border:n=>{const{normalize:r}=n;return r(["حدود"])},incoming:n=>{const{normalize:r}=n;return r(["وارد"])},outgoing:n=>{const{normalize:r}=n;return r(["صادر"])}},alert_warning:n=>{const{normalize:r}=n;return r(["تحذير"])},alert_error:n=>{const{normalize:r}=n;return r(["خطأ"])},buttons:n=>{const{normalize:r}=n;return r(["أزرار"])},borders:n=>{const{normalize:r}=n;return r(["الحدود"])},wallpaper:n=>{const{normalize:r}=n;return r(["خلفية"])},pressed:n=>{const{normalize:r}=n;return r(["مضغوط"])},inputs:n=>{const{normalize:r}=n;return r(["حقول إدخال"])}},shadows:{components:{button:n=>{const{normalize:r}=n;return r(["زر"])},input:n=>{const{normalize:r}=n;return r(["حقل إدخال"])},topBar:n=>{const{normalize:r}=n;return r(["شريط العلوي"])},avatar:n=>{const{normalize:r}=n;return r(["الصورة الرمزية لمستخدم (في الملف الشخصي)"])},avatarStatus:n=>{const{normalize:r}=n;return r(["الصورة الرمزية لمستخدم (في منشور)"])}},_tab_label:n=>{const{normalize:r}=n;return r(["الظلال والإضاءة"])},shadow_id:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["ظل #",e(t("value"))])},blur:n=>{const{normalize:r}=n;return r(["طمس"])},spread:n=>{const{normalize:r}=n;return r(["توزع"])}},fonts:{size:n=>{const{normalize:r}=n;return r(["حجم (بالبكسل)"])},_tab_label:n=>{const{normalize:r}=n;return r(["خطوط"])},components:{interface:n=>{const{normalize:r}=n;return r(["واجهة"])},input:n=>{const{normalize:r}=n;return r(["حقول الإدخال"])},post:n=>{const{normalize:r}=n;return r(["نص المنشور"])}},family:n=>{const{normalize:r}=n;return r(["اسم الخط"])},custom:n=>{const{normalize:r}=n;return r(["مخصص"])}},preview:{header:n=>{const{normalize:r}=n;return r(["معاينة"])},content:n=>{const{normalize:r}=n;return r(["محتوى"])},header_faint:n=>{const{normalize:r}=n;return r(["جيد"])},mono:n=>{const{normalize:r}=n;return r(["محتوى"])},button:n=>{const{normalize:r}=n;return r(["زر"])},input:n=>{const{normalize:r}=n;return r(["وصلت للتوّ إلى لوس أنجلس."])},fine_print:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["طالع ",e(t(0))," لتعلّم ما لا ينفعك!"])},error:n=>{const{normalize:r}=n;return r(["مثال خطأ"])},faint_link:n=>{const{normalize:r}=n;return r(["دليل للمساعدة"])}},radii:{_tab_label:n=>{const{normalize:r}=n;return r(["الانحناء"])}}},notification_setting_privacy:n=>{const{normalize:r}=n;return r(["الخصوصية"])},notification_mutes:n=>{const{normalize:r}=n;return r(["لوقف استلام إشعارات من مستخدم، أخرسه."])},search_user_to_mute:n=>{const{normalize:r}=n;return r(["جِد من تريد إخراسه"])},subject_input_always_show:n=>{const{normalize:r}=n;return r(["أظهر حقل الموضوع دائمًا"])},subject_line_noop:n=>{const{normalize:r}=n;return r(["لا تنسخ"])},auto_update:n=>{const{normalize:r}=n;return r(["أظهر المنشورات الجديدة تلقائيًا"])},mention_link_display:n=>{const{normalize:r}=n;return r(["اعرض روابط الذكر"])},more_settings:n=>{const{normalize:r}=n;return r(["إعدادات إضافية"])},user_mutes:n=>{const{normalize:r}=n;return r(["مستخدمون"])},mention_link_show_avatar:n=>{const{normalize:r}=n;return r(["أظهر الصورة الرمزية للمستخدم بجانب الرابط"])},preview:n=>{const{normalize:r}=n;return r(["معاينة"])},show_scrollbars:n=>{const{normalize:r}=n;return r(["أظهر شريط التمرير للعمود الجانبي"])},third_column_mode:n=>{const{normalize:r}=n;return r(["أظهر محتوى العمود الثالث إذا توفرت المساحة"])},third_column_mode_none:n=>{const{normalize:r}=n;return r(["لا تظهر العمود الثالث"])},third_column_mode_notifications:n=>{const{normalize:r}=n;return r(["عمود الإشعارات"])},columns:n=>{const{normalize:r}=n;return r(["الأعمدة"])},column_sizes:n=>{const{normalize:r}=n;return r(["حجم الأعمدة"])},column_sizes_sidebar:n=>{const{normalize:r}=n;return r(["الشريط الجانبي"])},type_domains_to_mute:n=>{const{normalize:r}=n;return r(["جِد نطاقًا لكتمه"])},upload_a_photo:n=>{const{normalize:r}=n;return r(["ارفع صورة"])},virtual_scrolling:n=>{const{normalize:r}=n;return r(["حسن تصيير الخيط الزمني"])},user_popover_avatar_action_zoom:n=>{const{normalize:r}=n;return r(["كبر صورة الرمزية"])},fun:n=>{const{normalize:r}=n;return r(["متعة"])},column_sizes_content:n=>{const{normalize:r}=n;return r(["المحتوى"])},column_sizes_notifs:n=>{const{normalize:r}=n;return r(["الإشعارات"])},search_user_to_block:n=>{const{normalize:r}=n;return r(["جِد من تريد حجبه"])},url:n=>{const{normalize:r}=n;return r(["رابط"])},subject_line_behavior:n=>{const{normalize:r}=n;return r(["انسخ الموضوع عند الرد"])},conversation_display:n=>{const{normalize:r}=n;return r(["اسلوب عرض المحادثة"])},mention_link_show_avatar_quick:n=>{const{normalize:r}=n;return r(["أظهر الصورة الرمزية للمستخدم عند ذكره"])},user_popover_avatar_action_open:n=>{const{normalize:r}=n;return r(["افتح الملف الشخصي"])},notifications:n=>{const{normalize:r}=n;return r(["الإشعارات"])},notification_setting_filters:n=>{const{normalize:r}=n;return r(["مرشح"])},notification_setting_hide_notification_contents:n=>{const{normalize:r}=n;return r(["اخف محتوى الإشعارات ومرسليها"])},mention_link_display_short:n=>{const{normalize:r}=n;return r(["اسماء قصيرة (مثل ","@","foo)"])},mention_link_display_full_for_remote:n=>{const{normalize:r}=n;return r(["اسماء كاملة للمستخدمين من الخوادم البعاد (","@","foo","@","example.org)"])},version:{title:n=>{const{normalize:r}=n;return r(["نسخة"])}},commit_value:n=>{const{normalize:r}=n;return r(["احفظ"])},mention_link_display_full:n=>{const{normalize:r}=n;return r(["اسماء كاملة دايمًا (مثل ","@","foo","@","example.org)"])},mute_bot_posts:n=>{const{normalize:r}=n;return r(["اكتم مشاركات الحسابات الآلية"])},mention_links:n=>{const{normalize:r}=n;return r(["روابط الذِكر"])},email_language:n=>{const{normalize:r}=n;return r(["لغة رسائل البريد الإلكتروني المرسلة إلي من الخادم"])},bot:n=>{const{normalize:r}=n;return r(["هذا الحساب آلي"])},discoverable:n=>{const{normalize:r}=n;return r(["اسمح بالعثور على هذا الحساب من خلال البحث وخِدمات أخرى"])},right_sidebar:n=>{const{normalize:r}=n;return r(["عكس ترتيب الأعمدة"])},setting_changed:n=>{const{normalize:r}=n;return r(["الإعدادات مغيّرة"])},setting_server_side:n=>{const{normalize:r}=n;return r(["هذا الإعداد مرتبط بحسابك وسيأثر على كل الجلسات والعملاء"])},allow_following_move:n=>{const{normalize:r}=n;return r(["اسمح بالمتابعة التلقائية عند انتقال حساب متابَع"])},chatMessageRadius:n=>{const{normalize:r}=n;return r(["رسائل"])},domain_mutes:n=>{const{normalize:r}=n;return r(["نطاقات"])},new_email:n=>{const{normalize:r}=n;return r(["البريد إلكتروني الجديد"])},notification_visibility_moves:n=>{const{normalize:r}=n;return r(["هجرة مستخدم"])},subject_line_mastodon:n=>{const{normalize:r}=n;return r(["مثل ماستودون: انسخ الأصلي"])},hide_follows_description:n=>{const{normalize:r}=n;return r(["لا تظهر متابَعي"])},conversation_other_replies_button_inside:n=>{const{normalize:r}=n;return r(["داخل الحالات"])},autohide_floating_post_button:n=>{const{normalize:r}=n;return r(["اخفاء زر النشر تلقائيا (هاتف)"])},conversation_other_replies_button_below:n=>{const{normalize:r}=n;return r(["تحت الحالات"])},reply_visibility_following_short:n=>{const{normalize:r}=n;return r(["أظهر الردود الموجهة إلى متابَعي"])},conversation_display_linear:n=>{const{normalize:r}=n;return r(["خطي"])},conversation_other_replies_button:n=>{const{normalize:r}=n;return r(['أظهر زر "ردود أخرى"'])},hide_followers_description:n=>{const{normalize:r}=n;return r(["لا تظهر متابِعي"])}},timeline:{collapse:n=>{const{normalize:r}=n;return r(["طوي"])},conversation:n=>{const{normalize:r}=n;return r(["محادثة"])},error_fetching:n=>{const{normalize:r}=n;return r(["خطأ أثناء جلب التحديثات"])},load_older:n=>{const{normalize:r}=n;return r(["حمل الحالات القديمة"])},no_retweet_hint:n=>{const{normalize:r}=n;return r([])},repeated:n=>{const{normalize:r}=n;return r(["شورِك"])},show_new:n=>{const{normalize:r}=n;return r(["اعرض الجديد"])},up_to_date:n=>{const{normalize:r}=n;return r(["محدث"])},no_more_statuses:n=>{const{normalize:r}=n;return r(["لا مزيد من الحالات"])},error:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["خطأ أثناء جلب الخيط الزمني: ",e(t(0))])},reload:n=>{const{normalize:r}=n;return r(["أعد التحميل"])},no_statuses:n=>{const{normalize:r}=n;return r(["لا توجد حالات"])}},user_card:{approve:n=>{const{normalize:r}=n;return r(["قبول"])},block:n=>{const{normalize:r}=n;return r(["حظر"])},blocked:n=>{const{normalize:r}=n;return r(["حُظر!"])},deny:n=>{const{normalize:r}=n;return r(["رفض"])},follow:n=>{const{normalize:r}=n;return r(["تابع"])},followees:n=>{const{normalize:r}=n;return r(["متابَعون"])},followers:n=>{const{normalize:r}=n;return r(["مُتابِعون"])},following:n=>{const{normalize:r}=n;return r(["متابَع!"])},follows_you:n=>{const{normalize:r}=n;return r(["يتابعك!"])},mute:n=>{const{normalize:r}=n;return r(["أخرِس"])},muted:n=>{const{normalize:r}=n;return r(["أخرَس"])},per_day:n=>{const{normalize:r}=n;return r(["في اليوم"])},remote_follow:n=>{const{normalize:r}=n;return r(["مُتابَعة عن بُعد"])},statuses:n=>{const{normalize:r}=n;return r(["المنشورات"])},approve_confirm_accept_button:n=>{const{normalize:r}=n;return r(["قبول"])},approve_confirm_title:n=>{const{normalize:r}=n;return r(["تأكيد القبول"])},edit_profile:n=>{const{normalize:r}=n;return r(["عدّل الملف الشخصي"])},deny_confirm:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["أتريد رفض طلب المتابعة من ",e(t("user"))," ؟"])},unfollow_confirm_title:n=>{const{normalize:r}=n;return r(["تأكيد إلغاء المتابعة"])},follow_progress:n=>{const{normalize:r}=n;return r(["الطلب جارٍ…"])},hidden:n=>{const{normalize:r}=n;return r(["مخفي"])},its_you:n=>{const{normalize:r}=n;return r(["أنت!"])},approve_confirm_cancel_button:n=>{const{normalize:r}=n;return r(["لا تقبل"])},approve_confirm:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["أتريد قبول طلب المتابعة من ",e(t("user"))," ؟"])},block_confirm_title:n=>{const{normalize:r}=n;return r(["تأكيد الحظر"])},block_confirm_accept_button:n=>{const{normalize:r}=n;return r(["حظر"])},block_confirm_cancel_button:n=>{const{normalize:r}=n;return r(["لا تحظر"])},deactivated:n=>{const{normalize:r}=n;return r(["عُطل"])},deny_confirm_title:n=>{const{normalize:r}=n;return r(["تأكيد الرفض"])},deny_confirm_accept_button:n=>{const{normalize:r}=n;return r(["رفض"])},deny_confirm_cancel_button:n=>{const{normalize:r}=n;return r(["لا ترفض"])},favorites:n=>{const{normalize:r}=n;return r(["المفضلة"])},follow_cancel:n=>{const{normalize:r}=n;return r(["ألغ الطلب"])},follow_sent:n=>{const{normalize:r}=n;return r(["أُرسل الطلب!"])},follow_unfollow:n=>{const{normalize:r}=n;return r(["ألغ المتابعة"])},unfollow_confirm:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["أتريد إلغاء متابعة ",e(t("user")),"؟"])},unfollow_confirm_accept_button:n=>{const{normalize:r}=n;return r(["ألغ المتابعة"])},unfollow_confirm_cancel_button:n=>{const{normalize:r}=n;return r(["لا تلغ المتابعة"])},media:n=>{const{normalize:r}=n;return r(["وسائط"])},block_confirm:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["أتريد حظر ",e(t("user"))," ؟"])},mute_confirm_cancel_button:n=>{const{normalize:r}=n;return r(["لا تخرِس"])},mute_confirm_title:n=>{const{normalize:r}=n;return r(["تأكيد الإخراس"])},message:n=>{const{normalize:r}=n;return r(["راسل"])},mute_confirm:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["أتريد إخراس ",e(t("user")),"؟"])},mute_confirm_accept_button:n=>{const{normalize:r}=n;return r(["أخرِس"])},mention:n=>{const{normalize:r}=n;return r(["أذكر"])},mute_duration_prompt:n=>{const{normalize:r}=n;return r(["أخرِس هذا الشخص لـ (ضع 0 لكتمه دائمًا):"])},admin_menu:{moderation:n=>{const{normalize:r}=n;return r(["الإشراف"])},grant_admin:n=>{const{normalize:r}=n;return r(["امنحه الإدارة"])},revoke_admin:n=>{const{normalize:r}=n;return r(["اخلعه من الإدارة"])},delete_user:n=>{const{normalize:r}=n;return r(["احذف مستخدم"])},deactivate_account:n=>{const{normalize:r}=n;return r(["عطِّل الحساب"])},grant_moderator:n=>{const{normalize:r}=n;return r(["امنحه الإشراف"])},revoke_moderator:n=>{const{normalize:r}=n;return r(["اخلعه من الإشراف"])},activate_account:n=>{const{normalize:r}=n;return r(["فعُّل الحساب"])},delete_account:n=>{const{normalize:r}=n;return r(["احذف الحساب"])},strip_media:n=>{const{normalize:r}=n;return r(["أزل الوسائط من المشاركات"])},delete_user_data_and_deactivate_confirmation:n=>{const{normalize:r}=n;return r(["هذا الإجراء سيحذف بيانات الحساب وسيعطله، هل أنت متيقن؟"])}},note:n=>{const{normalize:r}=n;return r(["ملاحظة"])},note_blank:n=>{const{normalize:r}=n;return r(["(لاشيء)"])},edit_note:n=>{const{normalize:r}=n;return r(["حرر الملاحظة"])},edit_note_apply:n=>{const{normalize:r}=n;return r(["طبِّق"])},edit_note_cancel:n=>{const{normalize:r}=n;return r(["ألغِ"])},report:n=>{const{normalize:r}=n;return r(["بلّغ"])},subscribe:n=>{const{normalize:r}=n;return r(["اشترك"])},unsubscribe:n=>{const{normalize:r}=n;return r(["ألغِ الاشتراك"])},unblock_progress:n=>{const{normalize:r}=n;return r(["يرفع الحجب…"])},block_progress:n=>{const{normalize:r}=n;return r(["يحجب…"])},unblock:n=>{const{normalize:r}=n;return r(["ارفع الحجب"])},remove_follower:n=>{const{normalize:r}=n;return r(["أزل متابِع"])},remove_follower_confirm_title:n=>{const{normalize:r}=n;return r(["تأكيد إزالة متابِع"])},remove_follower_confirm_accept_button:n=>{const{normalize:r}=n;return r(["أزِل"])},remove_follower_confirm_cancel_button:n=>{const{normalize:r}=n;return r(["أبق"])},hide_repeats:n=>{const{normalize:r}=n;return r(["اخف المشاركات"])},show_repeats:n=>{const{normalize:r}=n;return r(["أظهر المشاركات"])},bot:n=>{const{normalize:r}=n;return r(["آلي"])},unmute:n=>{const{normalize:r}=n;return r(["ارفع عنه الخرَس"])},unmute_progress:n=>{const{normalize:r}=n;return r(["يرفع الخرَس…"])},mute_progress:n=>{const{normalize:r}=n;return r(["يُخرِس…"])},remove_follower_confirm:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["متيقن من إزالة ",e(t("user"))," من متابِعيك؟"])},birthday:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["وُلد في ",e(t("birthday"))])}},user_profile:{timeline_title:n=>{const{normalize:r}=n;return r(["الخيط الزمني للمستخدم"])},profile_loading_error:n=>{const{normalize:r}=n;return r(["عذرًا، حدث خطأ أثناء تحميل هذا الملف الشخصي."])},profile_does_not_exist:n=>{const{normalize:r}=n;return r(["عذرًا، هذا الملف الشخصي ليس موجودًا."])}},who_to_follow:{more:n=>{const{normalize:r}=n;return r(["المزيد"])},who_to_follow:n=>{const{normalize:r}=n;return r(["للمتابعة"])}},about:{mrf:{keyword:{ftl_removal:n=>{const{normalize:r}=n;return r(["إزالة من الخط الزمني الخاص بجميع الشبكات المعروفة"])},reject:n=>{const{normalize:r}=n;return r(["رفض"])},replace:n=>{const{normalize:r}=n;return r(["إستبدال"])},is_replaced_by:n=>{const{normalize:r}=n;return r(["←"])},keyword_policies:n=>{const{normalize:r}=n;return r(["سياسة الكلمات الدلالية"])}},simple:{simple_policies:n=>{const{normalize:r}=n;return r(["سياسات الخادم"])},instance:n=>{const{normalize:r}=n;return r(["مثيل"])},reason:n=>{const{normalize:r}=n;return r(["السبب"])},accept:n=>{const{normalize:r}=n;return r(["قبول"])},reject:n=>{const{normalize:r}=n;return r(["رفض"])},ftl_removal:n=>{const{normalize:r}=n;return r(["أُزيل من الخط الزمني «الشبكات المعروفة»"])}},federation:n=>{const{normalize:r}=n;return r(["الاتحاد"])},mrf_policies:n=>{const{normalize:r}=n;return r(["تفعيل سياسات إعادة كتابة المنشور"])},mrf_policies_desc:n=>{const{normalize:r}=n;return r(["خاصية إعادة كتابة المناشير تقوم بتعديل تفاعل الاتحاد مع هذا الخادم. السياسات التالية مفعّلة:"])}}},announcements:{page_header:n=>{const{normalize:r}=n;return r(["إعلانات"])},title:n=>{const{normalize:r}=n;return r(["إعلان"])},mark_as_read_action:n=>{const{normalize:r}=n;return r(["علّمه كمقروء"])},post_form_header:n=>{const{normalize:r}=n;return r(["انشر إعلانًا"])},post_placeholder:n=>{const{normalize:r}=n;return r(["اكتب محتوى الاعلان هنا..."])},post_action:n=>{const{normalize:r}=n;return r(["انشر"])},post_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["خطأ: ",e(t("error"))])},close_error:n=>{const{normalize:r}=n;return r(["أغلاق"])},delete_action:n=>{const{normalize:r}=n;return r(["احذف"])},start_time_prompt:n=>{const{normalize:r}=n;return r(["وقت البدأ: "])},end_time_prompt:n=>{const{normalize:r}=n;return r(["وقت النهاية: "])},all_day_prompt:n=>{const{normalize:r}=n;return r(["هذا حدث يوم كامل"])},start_time_display:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["يبدأ في ",e(t("time"))])},end_time_display:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["ينتهي في ",e(t("time"))])},edit_action:n=>{const{normalize:r}=n;return r(["حرر"])},submit_edit_action:n=>{const{normalize:r}=n;return r(["أرسل"])},cancel_edit_action:n=>{const{normalize:r}=n;return r(["ألغِ"])},inactive_message:n=>{const{normalize:r}=n;return r(["هذا الاعلان غير نشط"])},published_time_display:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["نُشر في ",e(t("time"))])}},polls:{votes:n=>{const{normalize:r}=n;return r(["أصوات"])},vote:n=>{const{normalize:r}=n;return r(["صوّت"])},type:n=>{const{normalize:r}=n;return r(["نوع الاستطلاع"])},single_choice:n=>{const{normalize:r}=n;return r(["خيار واحد"])},multiple_choices:n=>{const{normalize:r}=n;return r(["متعدد الخيارات"])},expiry:n=>{const{normalize:r}=n;return r(["عمر الاستطلاع"])},expires_in:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["ينتهي الاستطلاع في ",e(t(0))])},expired:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["انتهى الاستطلاع منذ ",e(t(0))])},add_poll:n=>{const{normalize:r}=n;return r(["أضف استطلاعًا"])},add_option:n=>{const{normalize:r}=n;return r(["أضف خيارًا"])},option:n=>{const{normalize:r}=n;return r(["خيار"])},people_voted_count:n=>{const{normalize:r,interpolate:e,named:t,plural:o}=n;return o([r([e(t("count"))," شخص صوّت"]),r([e(t("count"))," شخص صوّت"])])},votes_count:n=>{const{normalize:r,interpolate:e,named:t,plural:o}=n;return o([r([e(t("count"))," صوت"]),r([e(t("count"))," صوت"])])}},emoji:{stickers:n=>{const{normalize:r}=n;return r(["ملصقات"])},emoji:n=>{const{normalize:r}=n;return r(["إيموجي"])},search_emoji:n=>{const{normalize:r}=n;return r(["ابحث عن إيموجي"])},unicode_groups:{"animals-and-nature":n=>{const{normalize:r}=n;return r(["حيوانات وطبيعة"])},"food-and-drink":n=>{const{normalize:r}=n;return r(["أطعمة ومشروبات"])},symbols:n=>{const{normalize:r}=n;return r(["رموز"])},activities:n=>{const{normalize:r}=n;return r(["نشاطات"])},flags:n=>{const{normalize:r}=n;return r(["أعلام"])},"smileys-and-emotion":n=>{const{normalize:r}=n;return r(["ابتسامات وانفعالات"])},"travel-and-places":n=>{const{normalize:r}=n;return r(["سفر وأماكن"])}},add_emoji:n=>{const{normalize:r}=n;return r(["أدخل إيموجي"])},custom:n=>{const{normalize:r}=n;return r(["إيموجي مخصص"])},keep_open:n=>{const{normalize:r}=n;return r(["أبق المنتقي مفتوحًا"])}},interactions:{emoji_reactions:n=>{const{normalize:r}=n;return r(["تفاعلات بالإيموجي"])},reports:n=>{const{normalize:r}=n;return r(["البلاغات"])},follows:n=>{const{normalize:r}=n;return r(["المتابعات الجديدة"])}},report:{state_closed:n=>{const{normalize:r}=n;return r(["مغلق"])},state_resolved:n=>{const{normalize:r}=n;return r(["عولج"])},reported_statuses:n=>{const{normalize:r}=n;return r(["الحالة المبلغة عنها:"])},state_open:n=>{const{normalize:r}=n;return r(["مفتوح"])},notes:n=>{const{normalize:r}=n;return r(["ملاحظة:"])},state:n=>{const{normalize:r}=n;return r(["الحالة:"])},reporter:n=>{const{normalize:r}=n;return r(["المبلِّغ:"])},reported_user:n=>{const{normalize:r}=n;return r(["المُبلغ عنه:"])}},selectable_list:{select_all:n=>{const{normalize:r}=n;return r(["اختر الكل"])}},image_cropper:{save:n=>{const{normalize:r}=n;return r(["احفظ"])},cancel:n=>{const{normalize:r}=n;return r(["ألغ"])},crop_picture:n=>{const{normalize:r}=n;return r(["اقتصاص الصورة"])},save_without_cropping:n=>{const{normalize:r}=n;return r(["احفظ دون اقتصاص"])}},importer:{submit:n=>{const{normalize:r}=n;return r(["أرسل"])},success:n=>{const{normalize:r}=n;return r(["نجح الاستيراد."])},error:n=>{const{normalize:r}=n;return r(["حدث خطأ أثناء الاستيراد."])}},domain_mute_card:{mute:n=>{const{normalize:r}=n;return r(["أخرِس"])},mute_progress:n=>{const{normalize:r}=n;return r(["يُخرس…"])},unmute:n=>{const{normalize:r}=n;return r(["ارفع عنه الخرس"])},unmute_progress:n=>{const{normalize:r}=n;return r(["يرفع الخرس…"])}},exporter:{export:n=>{const{normalize:r}=n;return r(["صدر"])},processing:n=>{const{normalize:r}=n;return r(["يُعالج. سيُطلب منك تنزيل الملف قريباً"])}},media_modal:{previous:n=>{const{normalize:r}=n;return r(["السابق"])},next:n=>{const{normalize:r}=n;return r(["التالي"])},hide:n=>{const{normalize:r}=n;return r(["أغلق عارض الوسائط"])},counter:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("current")),"\\",e(t("total"))])}},remote_user_resolver:{searching_for:n=>{const{normalize:r}=n;return r(["يبحث عن"])},error:n=>{const{normalize:r}=n;return r(["لم يُعثر عليه."])}},admin_dash:{nodb:{documentation:n=>{const{normalize:r}=n;return r(["التوثيق"])},text2:n=>{const{normalize:r}=n;return r(["اغلب خيارات الضبط لن تتوفر."])}},window_title:n=>{const{normalize:r}=n;return r(["الإدارة"])},wip_notice:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["لوحة المدير لا زالت تجريبية ولا تزال قيد للتطوير، ",e(t("adminFeLink")),"."])},old_ui_link:n=>{const{normalize:r}=n;return r(["واجهة المدير القديمة هنا"])},commit_all:n=>{const{normalize:r}=n;return r(["احفظ الكل"])},tabs:{instance:n=>{const{normalize:r}=n;return r(["مثيل"])}},instance:{instance:n=>{const{normalize:r}=n;return r(["معلومات المثيل"])},registrations:n=>{const{normalize:r}=n;return r(["تسجيل المستخدمين"])},restrict:{header:n=>{const{normalize:r}=n;return r(["قيّد وصول الزواروالمجهولين"])},timelines:n=>{const{normalize:r}=n;return r(["وصول الخط الزمني"])},profiles:n=>{const{normalize:r}=n;return r(["وصول الملفات الشخصية"])},activities:n=>{const{normalize:r}=n;return r(["وصول النشاطات/الحالات"])}}},limits:{posts:n=>{const{normalize:r}=n;return r(["حد النشر"])},uploads:n=>{const{normalize:r}=n;return r(["حد المرفقات"])},profile_fields:n=>{const{normalize:r}=n;return r(["حد حقول الملف الشخصي"])},user_uploads:n=>{const{normalize:r}=n;return r(["حد وسائط الملف الشخصي"])}},frontend:{repository:n=>{const{normalize:r}=n;return r(["رابط المستودع"])},versions:n=>{const{normalize:r}=n;return r(["النسخ المتوفرة"])},build_url:n=>{const{normalize:r}=n;return r(["رابط البناء"])},reinstall:n=>{const{normalize:r}=n;return r(["أعد التثبيت"])},is_default:n=>{const{normalize:r}=n;return r(["(افتراضي)"])},is_default_custom:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["(افتراضي، النسخة: ",e(t("version")),")"])},install:n=>{const{normalize:r}=n;return r(["ثبّت"])},install_version:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["ثبت النسخة ",e(t("version"))])},more_install_options:n=>{const{normalize:r}=n;return r(["مزيد من خيارات التثبيت"])},set_default:n=>{const{normalize:r}=n;return r(["عينه كافتراضي"])},set_default_version:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["عين النسخة ",e(t("version"))," كافتراضية"])},available_frontends:n=>{const{normalize:r}=n;return r(["متوفر للتثبيت"])}},temp_overrides:{":pleroma":{":instance":{":public":{label:n=>{const{normalize:r}=n;return r(["المثيل علني"])},description:n=>{const{normalize:r}=n;return r(["تعطيله سيحصر الوصول إلى API للمستخدمين الوالجين، ولن يقدر الزوار على الوصول إلى الخط الزمني العلني والموحد."])}},":description_limit":{description:n=>{const{normalize:r}=n;return r(["حد عدد المحارف لوصف المرفق"])}},":background_image":{label:n=>{const{normalize:r}=n;return r(["صورة الخلفية"])}},":limit_to_local_content":{label:n=>{const{normalize:r}=n;return r(["اقتصار البحث على المحتوى المحلي"])}}}}}},time:{in_past:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["منذ ",e(t(0))])},unit:{hours_short:n=>{const{normalize:r,interpolate:e,list:t}=n;return r([e(t(0)),"سا"])},minutes:n=>{const{normalize:r,interpolate:e,list:t,plural:o}=n;return o([r([e(t(0))," دقيقة"]),r([e(t(0))," دقائق"])])},days_short:n=>{const{normalize:r,interpolate:e,list:t}=n;return r([e(t(0)),"ي"])},minutes_short:n=>{const{normalize:r,interpolate:e,list:t}=n;return r([e(t(0)),"د"])},hours:n=>{const{normalize:r,interpolate:e,list:t,plural:o}=n;return o([r([e(t(0))," ساعة"]),r([e(t(0))," ساعات"])])},weeks:n=>{const{normalize:r,interpolate:e,list:t,plural:o}=n;return o([r([e(t(0))," أسبوع"]),r([e(t(0))," أسابيع"])])},months_short:n=>{const{normalize:r,interpolate:e,list:t}=n;return r([e(t(0)),"ش"])},seconds:n=>{const{normalize:r,interpolate:e,list:t,plural:o}=n;return o([r([e(t(0))," ثانية"]),r([e(t(0))," ثانية"])])},seconds_short:n=>{const{normalize:r,interpolate:e,list:t}=n;return r([e(t(0)),"ثا"])},years:n=>{const{normalize:r,interpolate:e,list:t,plural:o}=n;return o([r([e(t(0))," سنة"]),r([e(t(0))," سنوات"])])},years_short:n=>{const{normalize:r,interpolate:e,list:t}=n;return r([e(t(0)),"سن"])},days:n=>{const{normalize:r,interpolate:e,list:t,plural:o}=n;return o([r([e(t(0))," يوم"]),r([e(t(0))," أيام"])])},months:n=>{const{normalize:r,interpolate:e,list:t,plural:o}=n;return o([r([e(t(0))," شهر"]),r([e(t(0))," أشهر"])])},weeks_short:n=>{const{normalize:r,interpolate:e,list:t}=n;return r([e(t(0)),"أس"])}},in_future:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["في ",e(t(0))])},now:n=>{const{normalize:r}=n;return r(["هذه اللحظة"])},now_short:n=>{const{normalize:r}=n;return r(["الآن"])}},status:{delete_confirm:n=>{const{normalize:r}=n;return r(["أتريد حذف هذه الحالة؟"])},delete_error:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["خطأ أثناء حذف الحالة: ",e(t(0))])},plus_more:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["+",e(t("number"))," أخرون"])},many_attachments:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["المنشور يحوي ",e(t("number"))," مرفقات"])},repeat_confirm:n=>{const{normalize:r}=n;return r(["أتريد مشاركة هذه الحالة؟"])},edited_at:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["(آخر تعديل ",e(t("time")),")"])},repeat_confirm_title:n=>{const{normalize:r}=n;return r(["تأكيد المشاركة"])},repeat_confirm_accept_button:n=>{const{normalize:r}=n;return r(["شارك"])},repeat_confirm_cancel_button:n=>{const{normalize:r}=n;return r(["لا تشارك"])},edit:n=>{const{normalize:r}=n;return r(["حرر الحالة"])},pin:n=>{const{normalize:r}=n;return r(["ثبته على الملف الشخصي"])},unpin:n=>{const{normalize:r}=n;return r(["ألغ تثبيته من الملف الشخصي"])},delete_confirm_cancel_button:n=>{const{normalize:r}=n;return r(["أبقه"])},replies_list:n=>{const{normalize:r}=n;return r(["الردود:"])},status_deleted:n=>{const{normalize:r}=n;return r(["هذا المنشور محذوف"])},favorites:n=>{const{normalize:r}=n;return r(["المفضلة"])},pinned:n=>{const{normalize:r}=n;return r(["مثبت"])},hide_full_subject:n=>{const{normalize:r}=n;return r(["اخف كامل الموضوع"])},repeats:n=>{const{normalize:r}=n;return r(["المشاركات"])},delete:n=>{const{normalize:r}=n;return r(["اخذف الحالة"])},delete_confirm_title:n=>{const{normalize:r}=n;return r(["تأكيد الحذف"])},reply_to:n=>{const{normalize:r}=n;return r(["رد على"])},mentions:n=>{const{normalize:r}=n;return r(["ذكرَ"])},unmute_conversation:n=>{const{normalize:r}=n;return r(["ارفع الكتم عن المحادثة"])},status_unavailable:n=>{const{normalize:r}=n;return r(["الحالة غير متوفرة"])},copy_link:n=>{const{normalize:r}=n;return r(["انسخ رابط الحالة"])},show_full_subject:n=>{const{normalize:r}=n;return r(["أظهر الموضوع كاملا"])},show_content:n=>{const{normalize:r}=n;return r(["أظهر المحتوى"])},hide_content:n=>{const{normalize:r}=n;return r(["اخف المحتوى"])},you:n=>{const{normalize:r}=n;return r(["(أنت)"])},show_all_attachments:n=>{const{normalize:r}=n;return r(["أظهر كل المرفقات"])},hide_attachment:n=>{const{normalize:r}=n;return r(["اخف المرفق"])},move_down:n=>{const{normalize:r}=n;return r(["حرك المرفق لليمين"])},thread_hide:n=>{const{normalize:r}=n;return r(["اخف هذا النقاش"])},thread_muted:n=>{const{normalize:r}=n;return r(["النقاش مكتوم"])},delete_confirm_accept_button:n=>{const{normalize:r}=n;return r(["احذف"])},mute_conversation:n=>{const{normalize:r}=n;return r(["اكتم المحادثة"])},external_source:n=>{const{normalize:r}=n;return r(["مصدر خارجي"])},expand:n=>{const{normalize:r}=n;return r(["وسّع"])},collapse_attachments:n=>{const{normalize:r}=n;return r(["طوي المرفقات"])},remove_attachment:n=>{const{normalize:r}=n;return r(["أزل المرفق"])},move_up:n=>{const{normalize:r}=n;return r(["حرك المرفق لليسار"])},open_gallery:n=>{const{normalize:r}=n;return r(["افتح المعرض"])},thread_show:n=>{const{normalize:r}=n;return r(["أظهر هذا النقاس"])},nsfw:n=>{const{normalize:r}=n;return r(["محتوى حساس NSFW"])},status_history:n=>{const{normalize:r}=n;return r(["تأريخ الحالة"])},thread_show_full_with_icon:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("icon"))," ",e(t("text"))])},thread_follow_with_icon:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("icon"))," ",e(t("text"))])},show_all_conversation_with_icon:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("icon"))," ",e(t("text"))])},ancestor_follow_with_icon:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("icon"))," ",e(t("text"))])},show_only_conversation_under_this:n=>{const{normalize:r}=n;return r(["أظهر الردود على هذه الحالة فقط"])},reaction_count_label:n=>{const{normalize:r,interpolate:e,named:t,plural:o}=n;return o([r(["تفاعل ",e(t("num"))," شخص"]),r(["تفاعل ",e(t("num"))," أشخاص"])])},replies_list_with_others:n=>{const{normalize:r,interpolate:e,named:t,plural:o}=n;return o([r(["رد (+ ",e(t("numReplies"))," آخر):"]),r(["رد (+ ",e(t("numReplies"))," آخرون):"])])},show_attachment_in_modal:n=>{const{normalize:r}=n;return r(["أظهر الوسائط في منبثقات"])},show_attachment_description:n=>{const{normalize:r}=n;return r(["معاينة الوصف ( افتح المرفق لقراءة الوصف الكامل)"])}},lists:{creating_list:n=>{const{normalize:r}=n;return r(["إنشاء قائمة جديدة"])},update_title:n=>{const{normalize:r}=n;return r(["احفظ العنوان"])},add_members:n=>{const{normalize:r}=n;return r(["ابحث عن مزيد من المستخدمين"])},really_delete:n=>{const{normalize:r}=n;return r(["أمتيقن من حذف القائمة؟"])},lists:n=>{const{normalize:r}=n;return r(["قوائم"])},new:n=>{const{normalize:r}=n;return r(["قائمة جديدة"])},title:n=>{const{normalize:r}=n;return r(["عنوان القائمة"])},search:n=>{const{normalize:r}=n;return r(["ابحث عن مستخدم"])},remove_from_list:n=>{const{normalize:r}=n;return r(["أزل من القائمة"])},add_to_list:n=>{const{normalize:r}=n;return r(["أضف للقائمة"])},editing_list:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["تحرير القائمة ",e(t("listTitle"))])},create:n=>{const{normalize:r}=n;return r(["أنشئ"])},save:n=>{const{normalize:r}=n;return r(["احفظ التعديلات"])},delete:n=>{const{normalize:r}=n;return r(["احذف القائمة"])},manage_lists:n=>{const{normalize:r}=n;return r(["أدِر القوائم"])},manage_members:n=>{const{normalize:r}=n;return r(["أدِر أعضاء القائمة"])},is_in_list:n=>{const{normalize:r}=n;return r(["موجود في القائمة سلفًا"])}},file_type:{audio:n=>{const{normalize:r}=n;return r(["صوت"])},image:n=>{const{normalize:r}=n;return r(["صورة"])},file:n=>{const{normalize:r}=n;return r(["ملف"])},video:n=>{const{normalize:r}=n;return r(["فيديو"])}},user_reporting:{add_comment_description:n=>{const{normalize:r}=n;return r(["سيرسل البلاغ إلى مشرف المثيل، يمكنك شرح سبب البلاغ أدناه:"])},title:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["بلاغ عن ",e(t(0))])},additional_comments:n=>{const{normalize:r}=n;return r(["تعليقات إضافية"])},forward_description:n=>{const{normalize:r}=n;return r(["هذا المستخدم من خادم آخر. هل تريد إرسال نسخة منه إلى مشرفه؟"])},forward_to:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["وجّهه إلى ",e(t(0))])},submit:n=>{const{normalize:r}=n;return r(["أرسل"])},generic_error:n=>{const{normalize:r}=n;return r(["حدث خطأ أثناء معالجة طلبك."])}},tool_tip:{media_upload:n=>{const{normalize:r}=n;return r(["ارفع وسائط"])},favorite:n=>{const{normalize:r}=n;return r(["فضّل"])},add_reaction:n=>{const{normalize:r}=n;return r(["أضف تفاعل"])},user_settings:n=>{const{normalize:r}=n;return r(["إعدادات المستخدم"])},accept_follow_request:n=>{const{normalize:r}=n;return r(["اقبل طلب المتابعة"])},reject_follow_request:n=>{const{normalize:r}=n;return r(["ارفض طلب المتابعة"])},repeat:n=>{const{normalize:r}=n;return r(["شارك"])},reply:n=>{const{normalize:r}=n;return r(["ردّ"])}},upload:{error:{base:n=>{const{normalize:r}=n;return r(["فشل الرفع."])},message:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["فشل الرفع: ",e(t(0))])},default:n=>{const{normalize:r}=n;return r(["حاو لاحقًا"])},file_too_big:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["حجم الملف كبير [",e(t("filesize")),e(t("filesizeunit")),"\\",e(t("allowedsize")),e(t("allowedsizeunit")),"]"])}},file_size_units:{B:n=>{const{normalize:r}=n;return r(["بايت"])},MiB:n=>{const{normalize:r}=n;return r(["مب"])},TiB:n=>{const{normalize:r}=n;return r(["تب"])},GiB:n=>{const{normalize:r}=n;return r(["غب"])},KiB:n=>{const{normalize:r}=n;return r(["كب"])}}},search:{person_talking:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("count"))," شخص يتكلم"])},people_talking:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("count"))," شخص يتكلم"])},no_results:n=>{const{normalize:r}=n;return r(["لا نتائج"])},no_more_results:n=>{const{normalize:r}=n;return r(["لا مزيد من النتائج"])},people:n=>{const{normalize:r}=n;return r(["أشخاص"])},hashtags:n=>{const{normalize:r}=n;return r(["وسوم"])},load_more:n=>{const{normalize:r}=n;return r(["حمّل مزيدًا من النتائج"])}},password_reset:{forgot_password:n=>{const{normalize:r}=n;return r(["أنسيت كلمة السر؟"])},placeholder:n=>{const{normalize:r}=n;return r(["البريد الإلكتروني أو اسم المستخدم"])},return_home:n=>{const{normalize:r}=n;return r(["عُد للصفحة الرئيسية"])},too_many_requests:n=>{const{normalize:r}=n;return r(["وصلت سقف المحاولات، حاول لاحقًا."])}},chats:{chats:n=>{const{normalize:r}=n;return r(["محادثات"])},delete_confirm:n=>{const{normalize:r}=n;return r(["أتريد حذف هذه الرسالة؟"])},you:n=>{const{normalize:r}=n;return r(["أنت:"])},message_user:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["راسل ",e(t("nickname"))])},delete:n=>{const{normalize:r}=n;return r(["احذف"])},new:n=>{const{normalize:r}=n;return r(["محادثة جديدة"])},empty_message_error:n=>{const{normalize:r}=n;return r(["يستحيل إرسال رسالة فارغة"])},more:n=>{const{normalize:r}=n;return r(["مزيد"])},empty_chat_list_placeholder:n=>{const{normalize:r}=n;return r(["ليس لديك محادثات. ابدأ واحدة جديدة!"])}},display_date:{today:n=>{const{normalize:r}=n;return r(["اليوم"])}},update:{big_update_content:n=>{const{normalize:r}=n;return r(["نظرًا لطول المدة التي استغرقها تطوير هذا الاصدار فسترى اختلافات كبيرة عن ما اعتدت عليه."])},update_bugs:n=>{const{normalize:r}=n;return r(["نظرًا لهذا لكبر هذا التحديث فقد نكون قد سهينى عن بعض الاخطاء لذا يرجى التبليغ عن أي علّة أو مشكلة. نحن نرحب بقتراحاتك وتعليقاتكم لتحسين بليروما وواجهها الأمامية وطرح المشاكل المتعلقة بهما."])},update_changelog:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["لمزيد من المعلومات، راجع ",e(t("theFullChangelog")),"."])},update_changelog_here:n=>{const{normalize:r}=n;return r(["سجل التغييرات الكامل"])},art_by:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["رَسمُ ",e(t("linkToArtist"))])},big_update_title:n=>{const{normalize:r}=n;return r(["رجاءً تعاون معنا"])}}}}}]); +//# sourceMappingURL=ar-json.4916f840147303aa65fe.js.map +\ No newline at end of file diff --git a/priv/static/static/js/i18n/ar-json.4916f840147303aa65fe.js.map b/priv/static/static/js/i18n/ar-json.4916f840147303aa65fe.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/i18n/ar-json.4916f840147303aa65fe.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/ar.json"],"sourcesContent":["export default {\n \"chat\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الدردشة\"])}\n },\n \"features_panel\": {\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الدردشة\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"غوفر\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"بروكسي الوسائط\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الحد الأقصى للنص\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الميّزات\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"للمتابعة\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حد الرفع\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطأ أثناء جلب صفحة المستخدم\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"البحث عن مستخدِم\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تطبيق\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إرسال\"])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حاول مجددًا\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حاول مجدداً\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اختياري\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اعرض المزيد\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اعرض أقل\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ألغ\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عطّل\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"فعّل\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أغلق\"])},\n \"role\": {\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مدير\"])},\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مشرف\"])}\n },\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"حدث خطأ: \", _interpolate(_list(0))])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تظهره مجددًا\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نعم\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ألغ تثبيت العنصر\"])},\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تراجع\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المزيد\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يحمل…\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حدث خطأ\"])},\n \"scope_in_timeline\": {\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المتابِعون فقط\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"علني\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"غير مدرج\"])}\n },\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مرر لأعلى\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ثبت العنصر\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تسجيل الدخول\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخروج\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الكلمة السرية\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مثال lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انشاء حساب\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إسم المستخدم\"])},\n \"logout_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد الخروج\"])},\n \"logout_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أتريد الخروج؟\"])},\n \"logout_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خروج\"])},\n \"logout_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تخرج\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لِج للانضمام للمناقشة\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رمز الاستيثاق\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أدخل رمز التأكيد\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أدخل رمز الاستيثاق بعاملين\"])},\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رمز الاستعادة\"])},\n \"heading\": {\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاستيثاق بعاملين\"])},\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاستيثاق بعاملين\"])}\n },\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لج باستخدام OAuth\"])}\n },\n \"nav\": {\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الدردشة المحلية\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"طلبات المتابَعة\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإشارات\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخيط الزمني العام\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخيط الزمني\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كافة الشبكة المعروفة\"])},\n \"search_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أغلق شربط البحث\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"للخلف\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإدارة\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"التفضيلات\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المحادثات\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"القوائم\"])},\n \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خصص شريط التنقل\"])},\n \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حرر العناصر المثبتة\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أغلق الاشعارات\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إعلانات\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخط الزمني الرئيس\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"بحث\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"للمتابعة\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رسالة شخصية\"])},\n \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تم التحرير\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخيوط الزمنية\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"افتح الإشعارات (تتواجد اشعارات غير مقروءة)\"])},\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حول\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"بحث عن مستخدم\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"منشور مجهول، جارٍ البحث عنه…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أعجِب بمنشورك\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يُتابعك\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تحميل الإشعارات الأقدم\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاشعارات\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مقروء!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"شارَك منشورك\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"خطأ أثناء جلب الاشعارات: \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يريد متابعتك\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انتهى الاستطلاع\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا مزيد من الإشعارات\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"تفاعل بـ\", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أرسل بلاغًا\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انتقلَ إلى\"])}\n },\n \"post_status\": {\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"حسابك ليس \", _interpolate(_list(0)), \". يمكن للجميع مشاهدة مشاركاتك المحصورة على المتابِعين.\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مقفل\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اعتبر المرفقات كلها كمحتوى حساس\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نص صِرف\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ماركداون\"])}\n },\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الموضوع (اختياري)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وصلت للتوّ إلى لوس أنجلس.\"])},\n \"direct_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"النشر\"])},\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مباشر - شارك مع المستخدمين المذكورين فقط\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"للمتابِعين فقط - شارك حصرًا مع المتابِعين\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"علني - يُنشر على الخيوط الزمنية العمومية\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"غير مُدرَج - لا يُنشَر على الخيوط الزمنية العمومية\"])}\n },\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وصف الوسائط\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سيكون عذا المنشور مرئيًا لكل المستخدمين المذكورين.\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انشر\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"معاينة\"])},\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"فارغ\"])},\n \"scope_notice\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سيكون هذا المنشور مرئيًا للجميع\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سيكون هذا المنشور مرئيا لمتابِعيك فقط\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لن تظهر هته المشاركة في الخط الزمني العلني والشبكات العلنية\"])}\n },\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سيكون عذا المنشور مرئيًا للمستخدمين المذكورين في أول الرسالة.\"])},\n \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"بليروما لا يدعم تعديل الذكر والاستطلاع.\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يتعذر نشر منشور فارغ دون ملفات\"])},\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حرر الحالة\"])},\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انشر حالة جديدة\"])},\n \"content_type_selection\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نسق المشاركة\"])},\n \"scope_notice_dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أغلق هذا التنبيه\"])},\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"فشل تحديث الوسائط، حاول مجددًا\"])}\n },\n \"registration\": {\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"السيرة الذاتية\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عنوان البريد الإلكتروني\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاسم العلني\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد الكلمة السرية\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"التسجيل\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رمز الدعوة\"])},\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سيرة (اختيارية)\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"بيرد إلكتروني (اختياري)\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مثل lain\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سبب التسجيل\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سجل\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لايمكن تركه فارغًا\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لايمكن تركه فارغًا\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لايمكن تركه فارغًا\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لايمكن تركه فارغًا\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لايمكن تركه فارغًا\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يلزم أن يطابق كلمة السر\"])},\n \"birthday_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لايمكن تركه فارغًا\"])},\n \"birthday_min_age\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"يلزم أن يكون في \", _interpolate(_named(\"date\")), \" أو قبله\"])}\n },\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مثل Lain Iwakura\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"قبول التسجيل في هذا المثيل يستلزم موافقة المدير\\nلهذا يجب عليك إعلامه بسبب التسجيل.\"])},\n \"birthday_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تاريخ الميلاد (اختياري):\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"بأي لغة تريد استلام رسائل البريد الإلكتروني؟\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تاريخ الميلاد:\"])}\n },\n \"settings\": {\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المُرفَقات\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المُرفَقات\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الصورة الرمزية\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الصور الرمزية (الإشعارات)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الصور الرمزية\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخلفية\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"السيرة الذاتية\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الأزرار\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أزرق (الرد، المتابَعة)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أخضر (إعادة النشر)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"برتقالي (مفضلة)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أحمر (إلغاء)\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"غيّر كلمة السر\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حدث خلل أثناء تعديل كلمتك السرية.\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نجح تغيير كلمة السر!\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد كلمة السر الجديدة\"])},\n \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صورتك الرمزية الحالية\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كلمة السر الحالية\"])},\n \"current_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الرأسية الحالية لصفحتك الشخصية\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تصدير واستيراد البيانات\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أسلوب العرض الافتراضي\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حذف الحساب\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حذف حسابك و كافة بياناتك نهائيًا.\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حدثة مشكلة اثناء حذف حسابك، إذا استمرت تواصل مع مدير المثيل.\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يُرجى إدخال كلمتك السرية أدناه لتأكيد عملية حذف الحساب.\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حفظ النموذج\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الترشيح\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سيتم إخفاء كافة المنشورات التي تحتوي على هذه الكلمات، كلمة واحدة في كل سطر\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تصدير الاشتراكات\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تصدير الاشتراكات كملف csv\"])},\n \"follow_export_processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"التصدير جارٍ، سوف يُطلَب منك تنزيل ملفك بعد حين\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"استيراد الاشتراكات\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطأ أثناء استيراد المتابِعين\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أُستورد المتابِعون! معالجتهم ستستغرق بعض الوقت.\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الأمامية\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإعدادات العامة\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف المرفقات من المحادثات\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف المرفقات من الخيط الزمني\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف احصائيات المنشور (مثل عدد التفضيلات)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف احصائيات المستخدم (مثل عدد المتابِعين)\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"استورد المتابِعين من ملف csv\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تحميل نموذج\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(الافتراضي: \", _interpolate(_named(\"value\")), \")\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لغة الواجهة\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الملف المختار ليس سمة تدعمها بليروما.لن تطرأ تغييرات على سمتك.\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"غير متوفر على متصفحك\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الروابط\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كرر تشغيل الفيديوهات\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كرر فيديوهات بدون صوت (مثل gif في ماستودون)\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاسم\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاسم والسيرة الذاتية\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كلمة السر الجديدة\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نوع الإشعارات التي تريد عرضها\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يتابع\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المفضلة\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ذِكر\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مشاركات\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رموز OAuth\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رمز\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رمز التحديث\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صالح حتى\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سحب\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لوحات\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"النماذج\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خلفية الملف التعريفي\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رأسية الصفحة الشخصية\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الملف التعريفي\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المشاركات في الخيط الزمني\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر كل المشاركات\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر الردود الموجهة إلي أو لمتابَعي فقط\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر الردود الموجهة إلي فقط\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطأ أثناء حفظ الإعدادات\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حُفظت الإعدادات\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الأمان\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اختيار صورة رمزية جديدة\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اختيار خلفية جديدة للملف الشخصي\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اختيار رأسية جديدة للصفحة الشخصية\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإعدادات\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إيقاف الصور المتحركة مالم يُمرر فوقها\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إظهار المنشورات الجديدة عند التمرير لأعلى\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نص\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"السمة\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إعدادات المستخدم\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نعم\"])}\n },\n \"emoji_reactions_scale\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"معامل تحجيم التفاعلات\"])},\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اسم تطبيق\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الأمن\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أدخل كلمة السر الحالية لتيقن من هويتك\"])},\n \"mfa\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاستيثاق بعاملين\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ولّد رموز استعادة جديدة\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عند توليد رموز استعادة جديدة ستزال القديمة.\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رموز الاستعادة.\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خزن هذه الرموز في مكان آمن. إذا فقدت هذه الرموز وتعذر عليك الوصول إلى تطبيق الاستيثاق بعاملين، لن تتمكن من الوصول لحسابك.\"])},\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"طرق الاستيثاق\"])},\n \"scan\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مسح\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"امسح رمز الاستجابة السريعة QR من تطبيق الاستيثاق أو أدخل المفتاح:\"])},\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مفتاح\"])}\n },\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لتفعيل الاستيثاق بعاملين أدخل الرمز من تطبيق الاستيثاق:\"])}\n }\n },\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"استيراد المحجوبين\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"استورد قائمة الخُرس من ملف csv\"])},\n \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نسخ احتياطي للحساب\"])},\n \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نزّل\"])},\n \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نسخ احتياطي\"])},\n \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"هذا النسخ الاحتياطي ليس جاهزًا.\"])},\n \"backup_failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"فشل النسخ الاحتياطي.\"])},\n \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أزل\"])},\n \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"خطأ أثناء حلب قائمة النُسخ الاحتياطية: \", _interpolate(_named(\"error\"))])},\n \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أُضيفت نسخة احتياطية جديدة.\"])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المحجوبون\"])},\n \"confirm_dialogs_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حجب مستخدم\"])},\n \"confirm_dialogs_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إخراس مستخدم\"])},\n \"confirm_dialogs_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حذف حالة\"])},\n \"confirm_dialogs_logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خروج\"])},\n \"confirm_dialogs_approve_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"قبول متابِع\"])},\n \"confirm_dialogs_deny_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رفض متابِع\"])},\n \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"خطأ أثناء جلب الكنيات: \", _interpolate(_named(\"error\"))])},\n \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أغلق\"])},\n \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أزل هذه الكنية\"])},\n \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"حدث خطأ أثناء إضافة الكنية: \", _interpolate(_named(\"error\"))])},\n \"confirm_dialogs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أطلب تأكيدًا عند\"])},\n \"confirm_dialogs_repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مشاركة حالة\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخُرس والمحجوبون\"])},\n \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"الحساب المستهدف (مثل \", _interpolate(_named(\"example\")), \")\"])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ترشيح الكلمات\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر الزر العائم لإنشاء منشور جديد دائمًا\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف خلفية المثيل\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احفظ التعديلات\"])},\n \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر القوائم في شريط التنقل\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صدّر قائمة الخرس إلى ملف csv\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اُستورد المحجوبون! معالجة القائمة ستستغرق وقتًا.\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تصدير الخُرس\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"استيراد الخُرس\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطأ أثناء استيراد الخُرس\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حدثت خلل أثناء تغيير بريدك الإلكتروني.\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"غيّر البريد الإلكتروني\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نجح تغيير البريد الإلكتروني!\"])},\n \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الكنية\"])},\n \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كنيات الحساب\"])},\n \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أنقل الحساب\"])},\n \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نُقل الحساب.\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف معاينات الوسائط\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف منشورات المستخدمين الخُرس\"])},\n \"confirm_dialogs_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الغاء متابعة مستخدم\"])},\n \"confirm_dialogs_remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إزالة متابع\"])},\n \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"أضف كنية جديدة (مثل \", _interpolate(_named(\"example\")), \")\"])},\n \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أُضيفت الكنية.\"])},\n \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"خطأ أثناء نقل الحساب: \", _interpolate(_named(\"error\"))])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر التفاعلات في الخط الزمني\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اُستورد الخُرس! معالجة القائمة ستستغرق وقتًا.\"])},\n \"remove_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أزل\"])},\n \"primary_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اللغة الرئيسية:\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر الإعدادات المتقدمة\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطأ أثناء استيراد قائمة المحجوبين\"])},\n \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أنشئ نسخة احتياطية جديدة\"])},\n \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"خطأ أثناء إضافة نسخ احتياطي جديد: \", _interpolate(_named(\"error\"))])},\n \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إذا أردت نقل حسابك عليك إضافة كنية تشير إلى هنا في الحساب المستهدف.\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أدنى حجم مستحسن للصورة الرمزية هو 150x150 بيكسل.\"])},\n \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مرشح الكلمات والمزيد...\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف المنشورات المكتومة\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أقصى عدد للصور المصغرة لكل منشور (فارغ = غير محدود)\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صدّر قائمة المحجوبين إلى ملف csv\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تصدير المحجوبين\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"افتح المرفقات ذات المحتوى الحساس NSFW بنقرة واحدة\"])},\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خصوصية\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تقتص الصور المصغرة للمرفقات\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"استورد المحجوبين من ملف csv\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(افتراضي)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"واجهة\"])},\n \"birthday\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تاريخ الميلاد\"])},\n \"show_birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اظهر تاريخ ميلادي\"])}\n },\n \"profile_fields\": {\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أضف حقل\"])},\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"محتوى\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"البيانات الوصفية للملف الشخصي\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لصيقة\"])}\n },\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"منشورات\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ملفات المستخدمين الشخصية\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تفاعلات\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انتهاء استطلاعات اشتركت بها\"])},\n \"file_export_import\": {\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"استرجع الإعدادات من ملف\"])},\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نسخ احتياطي للإعدادات\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احفظ النسخ الاحتياطي للإعدادات والسمة في ملف\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احفظ النسخ الاحتياطي للإعدادات في ملف\"])}\n },\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خُرس\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا يوجد خُرس\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تظهر عدد المتابِعين\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر شارة \\\"مشرف\\\" في ملفي التعريفي\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تظهر عدد المتابَعين\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف النقاشات المكتومة\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا يوجد محجوبون\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر شارة \\\"مدير\\\" في ملفي التعريفي\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تفرعات\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احجب اشعارات من لا تتابعهم\"])},\n \"style\": {\n \"switcher\": {\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"امسح الكل\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أبقه على حاله\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"النسخة القديمة\"])},\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"النسخة الحديثة\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حمِّل سمة\"])},\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE حُدث، وعليه ربما ستجد اختلافًا في السمة.\"])}\n },\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أبق الألوان\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أبق الشفافية\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أبق الخطوط\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أبق الظلال\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"امسح الشفافية\"])}\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اللون\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الشافافية\"])}\n },\n \"advanced_colors\": {\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"شريط العلوي\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أيقونات\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"منحنى الاستطلاع\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"متقدم\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإشعارات\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"منشور محدد\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عنصر محدد من قائمة\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عناصر بارزة\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"معطل\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ألسنة\"])},\n \"chat\": {\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حدود\"])},\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وارد\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صادر\"])}\n },\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تحذير\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطأ\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أزرار\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الحدود\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خلفية\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مضغوط\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حقول إدخال\"])}\n },\n \"shadows\": {\n \"components\": {\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"زر\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حقل إدخال\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"شريط العلوي\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الصورة الرمزية لمستخدم (في الملف الشخصي)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الصورة الرمزية لمستخدم (في منشور)\"])}\n },\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الظلال والإضاءة\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"ظل #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"طمس\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"توزع\"])}\n },\n \"fonts\": {\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حجم (بالبكسل)\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطوط\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"واجهة\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حقول الإدخال\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نص المنشور\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اسم الخط\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مخصص\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"معاينة\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"محتوى\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"جيد\"])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"محتوى\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"زر\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وصلت للتوّ إلى لوس أنجلس.\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"طالع \", _interpolate(_list(0)), \" لتعلّم ما لا ينفعك!\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مثال خطأ\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"دليل للمساعدة\"])}\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الانحناء\"])}\n }\n },\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخصوصية\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لوقف استلام إشعارات من مستخدم، أخرسه.\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"جِد من تريد إخراسه\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر حقل الموضوع دائمًا\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تنسخ\"])},\n \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر المنشورات الجديدة تلقائيًا\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اعرض روابط الذكر\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إعدادات إضافية\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مستخدمون\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر الصورة الرمزية للمستخدم بجانب الرابط\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"معاينة\"])},\n \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر شريط التمرير للعمود الجانبي\"])},\n \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر محتوى العمود الثالث إذا توفرت المساحة\"])},\n \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تظهر العمود الثالث\"])},\n \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عمود الإشعارات\"])},\n \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الأعمدة\"])},\n \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حجم الأعمدة\"])},\n \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الشريط الجانبي\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"جِد نطاقًا لكتمه\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ارفع صورة\"])},\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حسن تصيير الخيط الزمني\"])},\n \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كبر صورة الرمزية\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"متعة\"])},\n \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المحتوى\"])},\n \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإشعارات\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"جِد من تريد حجبه\"])},\n \"url\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رابط\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انسخ الموضوع عند الرد\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اسلوب عرض المحادثة\"])},\n \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر الصورة الرمزية للمستخدم عند ذكره\"])},\n \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"افتح الملف الشخصي\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإشعارات\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مرشح\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف محتوى الإشعارات ومرسليها\"])},\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اسماء قصيرة (مثل \", \"@\", \"foo)\"])},\n \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اسماء كاملة للمستخدمين من الخوادم البعاد (\", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نسخة\"])}\n },\n \"commit_value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احفظ\"])},\n \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اسماء كاملة دايمًا (مثل \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اكتم مشاركات الحسابات الآلية\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"روابط الذِكر\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لغة رسائل البريد الإلكتروني المرسلة إلي من الخادم\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"هذا الحساب آلي\"])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اسمح بالعثور على هذا الحساب من خلال البحث وخِدمات أخرى\"])},\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عكس ترتيب الأعمدة\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإعدادات مغيّرة\"])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"هذا الإعداد مرتبط بحسابك وسيأثر على كل الجلسات والعملاء\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اسمح بالمتابعة التلقائية عند انتقال حساب متابَع\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رسائل\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نطاقات\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"البريد إلكتروني الجديد\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"هجرة مستخدم\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مثل ماستودون: انسخ الأصلي\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تظهر متابَعي\"])},\n \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"داخل الحالات\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخفاء زر النشر تلقائيا (هاتف)\"])},\n \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تحت الحالات\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر الردود الموجهة إلى متابَعي\"])},\n \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطي\"])},\n \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر زر \\\"ردود أخرى\\\"\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تظهر متابِعي\"])}\n },\n \"timeline\": {\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"طوي\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"محادثة\"])},\n \"error_fetching\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطأ أثناء جلب التحديثات\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حمل الحالات القديمة\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"شورِك\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اعرض الجديد\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"محدث\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا مزيد من الحالات\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"خطأ أثناء جلب الخيط الزمني: \", _interpolate(_list(0))])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أعد التحميل\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا توجد حالات\"])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"قبول\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حظر\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حُظر!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رفض\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تابع\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"متابَعون\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مُتابِعون\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"متابَع!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يتابعك!\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أخرِس\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أخرَس\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"في اليوم\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مُتابَعة عن بُعد\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المنشورات\"])},\n \"approve_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"قبول\"])},\n \"approve_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد القبول\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عدّل الملف الشخصي\"])},\n \"deny_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"أتريد رفض طلب المتابعة من \", _interpolate(_named(\"user\")), \" ؟\"])},\n \"unfollow_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد إلغاء المتابعة\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الطلب جارٍ…\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مخفي\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أنت!\"])},\n \"approve_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تقبل\"])},\n \"approve_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"أتريد قبول طلب المتابعة من \", _interpolate(_named(\"user\")), \" ؟\"])},\n \"block_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد الحظر\"])},\n \"block_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حظر\"])},\n \"block_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تحظر\"])},\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عُطل\"])},\n \"deny_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد الرفض\"])},\n \"deny_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رفض\"])},\n \"deny_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا ترفض\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المفضلة\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ألغ الطلب\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أُرسل الطلب!\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ألغ المتابعة\"])},\n \"unfollow_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"أتريد إلغاء متابعة \", _interpolate(_named(\"user\")), \"؟\"])},\n \"unfollow_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ألغ المتابعة\"])},\n \"unfollow_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تلغ المتابعة\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وسائط\"])},\n \"block_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"أتريد حظر \", _interpolate(_named(\"user\")), \" ؟\"])},\n \"mute_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تخرِس\"])},\n \"mute_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد الإخراس\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"راسل\"])},\n \"mute_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"أتريد إخراس \", _interpolate(_named(\"user\")), \"؟\"])},\n \"mute_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أخرِس\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أذكر\"])},\n \"mute_duration_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أخرِس هذا الشخص لـ (ضع 0 لكتمه دائمًا):\"])},\n \"admin_menu\": {\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإشراف\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"امنحه الإدارة\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخلعه من الإدارة\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احذف مستخدم\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عطِّل الحساب\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"امنحه الإشراف\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخلعه من الإشراف\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"فعُّل الحساب\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احذف الحساب\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أزل الوسائط من المشاركات\"])},\n \"delete_user_data_and_deactivate_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"هذا الإجراء سيحذف بيانات الحساب وسيعطله، هل أنت متيقن؟\"])}\n },\n \"note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ملاحظة\"])},\n \"note_blank\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(لاشيء)\"])},\n \"edit_note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حرر الملاحظة\"])},\n \"edit_note_apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"طبِّق\"])},\n \"edit_note_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ألغِ\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"بلّغ\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اشترك\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ألغِ الاشتراك\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يرفع الحجب…\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يحجب…\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ارفع الحجب\"])},\n \"remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أزل متابِع\"])},\n \"remove_follower_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد إزالة متابِع\"])},\n \"remove_follower_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أزِل\"])},\n \"remove_follower_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أبق\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف المشاركات\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر المشاركات\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"آلي\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ارفع عنه الخرَس\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يرفع الخرَس…\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يُخرِس…\"])},\n \"remove_follower_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"متيقن من إزالة \", _interpolate(_named(\"user\")), \" من متابِعيك؟\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"وُلد في \", _interpolate(_named(\"birthday\"))])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخيط الزمني للمستخدم\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عذرًا، حدث خطأ أثناء تحميل هذا الملف الشخصي.\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عذرًا، هذا الملف الشخصي ليس موجودًا.\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المزيد\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"للمتابعة\"])}\n },\n \"about\": {\n \"mrf\": {\n \"keyword\": {\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إزالة من الخط الزمني الخاص بجميع الشبكات المعروفة\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رفض\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إستبدال\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"←\"])},\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سياسة الكلمات الدلالية\"])}\n },\n \"simple\": {\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سياسات الخادم\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مثيل\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"السبب\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"قبول\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رفض\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أُزيل من الخط الزمني «الشبكات المعروفة»\"])}\n },\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاتحاد\"])},\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تفعيل سياسات إعادة كتابة المنشور\"])},\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خاصية إعادة كتابة المناشير تقوم بتعديل تفاعل الاتحاد مع هذا الخادم. السياسات التالية مفعّلة:\"])}\n }\n },\n \"announcements\": {\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إعلانات\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إعلان\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"علّمه كمقروء\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انشر إعلانًا\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اكتب محتوى الاعلان هنا...\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انشر\"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"خطأ: \", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أغلاق\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احذف\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وقت البدأ: \"])},\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وقت النهاية: \"])},\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"هذا حدث يوم كامل\"])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"يبدأ في \", _interpolate(_named(\"time\"))])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"ينتهي في \", _interpolate(_named(\"time\"))])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حرر\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أرسل\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ألغِ\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"هذا الاعلان غير نشط\"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"نُشر في \", _interpolate(_named(\"time\"))])}\n },\n \"polls\": {\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أصوات\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صوّت\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نوع الاستطلاع\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خيار واحد\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"متعدد الخيارات\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عمر الاستطلاع\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"ينتهي الاستطلاع في \", _interpolate(_list(0))])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"انتهى الاستطلاع منذ \", _interpolate(_list(0))])},\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أضف استطلاعًا\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أضف خيارًا\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خيار\"])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" شخص صوّت\"]), _normalize([_interpolate(_named(\"count\")), \" شخص صوّت\"])])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" صوت\"]), _normalize([_interpolate(_named(\"count\")), \" صوت\"])])}\n },\n \"emoji\": {\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ملصقات\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إيموجي\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ابحث عن إيموجي\"])},\n \"unicode_groups\": {\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حيوانات وطبيعة\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أطعمة ومشروبات\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رموز\"])},\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نشاطات\"])},\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أعلام\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ابتسامات وانفعالات\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سفر وأماكن\"])}\n },\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أدخل إيموجي\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إيموجي مخصص\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أبق المنتقي مفتوحًا\"])}\n },\n \"interactions\": {\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تفاعلات بالإيموجي\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"البلاغات\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المتابعات الجديدة\"])}\n },\n \"report\": {\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مغلق\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عولج\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الحالة المبلغة عنها:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مفتوح\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ملاحظة:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الحالة:\"])},\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المبلِّغ:\"])},\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المُبلغ عنه:\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اختر الكل\"])}\n },\n \"image_cropper\": {\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احفظ\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ألغ\"])},\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اقتصاص الصورة\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احفظ دون اقتصاص\"])}\n },\n \"importer\": {\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أرسل\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نجح الاستيراد.\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حدث خطأ أثناء الاستيراد.\"])}\n },\n \"domain_mute_card\": {\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أخرِس\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يُخرس…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ارفع عنه الخرس\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يرفع الخرس…\"])}\n },\n \"exporter\": {\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صدر\"])},\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يُعالج. سيُطلب منك تنزيل الملف قريباً\"])}\n },\n \"media_modal\": {\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"السابق\"])},\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"التالي\"])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أغلق عارض الوسائط\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \"\\\\\", _interpolate(_named(\"total\"))])}\n },\n \"remote_user_resolver\": {\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يبحث عن\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لم يُعثر عليه.\"])}\n },\n \"admin_dash\": {\n \"nodb\": {\n \"documentation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"التوثيق\"])},\n \"text2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اغلب خيارات الضبط لن تتوفر.\"])}\n },\n \"window_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإدارة\"])},\n \"wip_notice\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"لوحة المدير لا زالت تجريبية ولا تزال قيد للتطوير، \", _interpolate(_named(\"adminFeLink\")), \".\"])},\n \"old_ui_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"واجهة المدير القديمة هنا\"])},\n \"commit_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احفظ الكل\"])},\n \"tabs\": {\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مثيل\"])}\n },\n \"instance\": {\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"معلومات المثيل\"])},\n \"registrations\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تسجيل المستخدمين\"])},\n \"restrict\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"قيّد وصول الزواروالمجهولين\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وصول الخط الزمني\"])},\n \"profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وصول الملفات الشخصية\"])},\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وصول النشاطات/الحالات\"])}\n }\n },\n \"limits\": {\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حد النشر\"])},\n \"uploads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حد المرفقات\"])},\n \"profile_fields\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حد حقول الملف الشخصي\"])},\n \"user_uploads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حد وسائط الملف الشخصي\"])}\n },\n \"frontend\": {\n \"repository\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رابط المستودع\"])},\n \"versions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"النسخ المتوفرة\"])},\n \"build_url\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رابط البناء\"])},\n \"reinstall\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أعد التثبيت\"])},\n \"is_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(افتراضي)\"])},\n \"is_default_custom\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(افتراضي، النسخة: \", _interpolate(_named(\"version\")), \")\"])},\n \"install\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ثبّت\"])},\n \"install_version\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"ثبت النسخة \", _interpolate(_named(\"version\"))])},\n \"more_install_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مزيد من خيارات التثبيت\"])},\n \"set_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عينه كافتراضي\"])},\n \"set_default_version\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"عين النسخة \", _interpolate(_named(\"version\")), \" كافتراضية\"])},\n \"available_frontends\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"متوفر للتثبيت\"])}\n },\n \"temp_overrides\": {\n \":pleroma\": {\n \":instance\": {\n \":public\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المثيل علني\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تعطيله سيحصر الوصول إلى API للمستخدمين الوالجين، ولن يقدر الزوار على الوصول إلى الخط الزمني العلني والموحد.\"])}\n },\n \":description_limit\": {\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حد عدد المحارف لوصف المرفق\"])}\n },\n \":background_image\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صورة الخلفية\"])}\n },\n \":limit_to_local_content\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اقتصار البحث على المحتوى المحلي\"])}\n }\n }\n }\n }\n },\n \"time\": {\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"منذ \", _interpolate(_list(0))])},\n \"unit\": {\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"سا\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" دقيقة\"]), _normalize([_interpolate(_list(0)), \" دقائق\"])])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"ي\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"د\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" ساعة\"]), _normalize([_interpolate(_list(0)), \" ساعات\"])])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" أسبوع\"]), _normalize([_interpolate(_list(0)), \" أسابيع\"])])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"ش\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" ثانية\"]), _normalize([_interpolate(_list(0)), \" ثانية\"])])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"ثا\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" سنة\"]), _normalize([_interpolate(_list(0)), \" سنوات\"])])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"سن\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" يوم\"]), _normalize([_interpolate(_list(0)), \" أيام\"])])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" شهر\"]), _normalize([_interpolate(_list(0)), \" أشهر\"])])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"أس\"])}\n },\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"في \", _interpolate(_list(0))])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"هذه اللحظة\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الآن\"])}\n },\n \"status\": {\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أتريد حذف هذه الحالة؟\"])},\n \"delete_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"خطأ أثناء حذف الحالة: \", _interpolate(_list(0))])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \" أخرون\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"المنشور يحوي \", _interpolate(_named(\"number\")), \" مرفقات\"])},\n \"repeat_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أتريد مشاركة هذه الحالة؟\"])},\n \"edited_at\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(آخر تعديل \", _interpolate(_named(\"time\")), \")\"])},\n \"repeat_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد المشاركة\"])},\n \"repeat_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"شارك\"])},\n \"repeat_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا تشارك\"])},\n \"edit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حرر الحالة\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ثبته على الملف الشخصي\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ألغ تثبيته من الملف الشخصي\"])},\n \"delete_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أبقه\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الردود:\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"هذا المنشور محذوف\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المفضلة\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مثبت\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف كامل الموضوع\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المشاركات\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخذف الحالة\"])},\n \"delete_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد الحذف\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رد على\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ذكرَ\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ارفع الكتم عن المحادثة\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الحالة غير متوفرة\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انسخ رابط الحالة\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر الموضوع كاملا\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر المحتوى\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف المحتوى\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(أنت)\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر كل المرفقات\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف المرفق\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حرك المرفق لليمين\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اخف هذا النقاش\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"النقاش مكتوم\"])},\n \"delete_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احذف\"])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اكتم المحادثة\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مصدر خارجي\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وسّع\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"طوي المرفقات\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أزل المرفق\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حرك المرفق لليسار\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"افتح المعرض\"])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر هذا النقاس\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"محتوى حساس NSFW\"])},\n \"status_history\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأريخ الحالة\"])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر الردود على هذه الحالة فقط\"])},\n \"reaction_count_label\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"تفاعل \", _interpolate(_named(\"num\")), \" شخص\"]), _normalize([\"تفاعل \", _interpolate(_named(\"num\")), \" أشخاص\"])])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"رد (+ \", _interpolate(_named(\"numReplies\")), \" آخر):\"]), _normalize([\"رد (+ \", _interpolate(_named(\"numReplies\")), \" آخرون):\"])])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أظهر الوسائط في منبثقات\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"معاينة الوصف ( افتح المرفق لقراءة الوصف الكامل)\"])}\n },\n \"lists\": {\n \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إنشاء قائمة جديدة\"])},\n \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احفظ العنوان\"])},\n \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ابحث عن مزيد من المستخدمين\"])},\n \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أمتيقن من حذف القائمة؟\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"قوائم\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"قائمة جديدة\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عنوان القائمة\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ابحث عن مستخدم\"])},\n \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أزل من القائمة\"])},\n \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أضف للقائمة\"])},\n \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"تحرير القائمة \", _interpolate(_named(\"listTitle\"))])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أنشئ\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احفظ التعديلات\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احذف القائمة\"])},\n \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أدِر القوائم\"])},\n \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أدِر أعضاء القائمة\"])},\n \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"موجود في القائمة سلفًا\"])}\n },\n \"file_type\": {\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صوت\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صورة\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ملف\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"فيديو\"])}\n },\n \"user_reporting\": {\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سيرسل البلاغ إلى مشرف المثيل، يمكنك شرح سبب البلاغ أدناه:\"])},\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"بلاغ عن \", _interpolate(_list(0))])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تعليقات إضافية\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"هذا المستخدم من خادم آخر. هل تريد إرسال نسخة منه إلى مشرفه؟\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"وجّهه إلى \", _interpolate(_list(0))])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أرسل\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حدث خطأ أثناء معالجة طلبك.\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ارفع وسائط\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"فضّل\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أضف تفاعل\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إعدادات المستخدم\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اقبل طلب المتابعة\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ارفض طلب المتابعة\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"شارك\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ردّ\"])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"فشل الرفع.\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"فشل الرفع: \", _interpolate(_list(0))])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حاو لاحقًا\"])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"حجم الملف كبير [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \"\\\\\", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"بايت\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مب\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تب\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"غب\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كب\"])}\n }\n },\n \"search\": {\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" شخص يتكلم\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" شخص يتكلم\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا نتائج\"])},\n \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا مزيد من النتائج\"])},\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أشخاص\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وسوم\"])},\n \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حمّل مزيدًا من النتائج\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أنسيت كلمة السر؟\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"البريد الإلكتروني أو اسم المستخدم\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عُد للصفحة الرئيسية\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وصلت سقف المحاولات، حاول لاحقًا.\"])}\n },\n \"chats\": {\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"محادثات\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أتريد حذف هذه الرسالة؟\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أنت:\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"راسل \", _interpolate(_named(\"nickname\"))])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"احذف\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"محادثة جديدة\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يستحيل إرسال رسالة فارغة\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مزيد\"])},\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ليس لديك محادثات. ابدأ واحدة جديدة!\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اليوم\"])}\n },\n \"update\": {\n \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نظرًا لطول المدة التي استغرقها تطوير هذا الاصدار فسترى اختلافات كبيرة عن ما اعتدت عليه.\"])},\n \"update_bugs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نظرًا لهذا لكبر هذا التحديث فقد نكون قد سهينى عن بعض الاخطاء لذا يرجى التبليغ عن أي علّة أو مشكلة. نحن نرحب بقتراحاتك وتعليقاتكم لتحسين بليروما وواجهها الأمامية وطرح المشاكل المتعلقة بهما.\"])},\n \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"لمزيد من المعلومات، راجع \", _interpolate(_named(\"theFullChangelog\")), \".\"])},\n \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سجل التغييرات الكامل\"])},\n \"art_by\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"رَسمُ \", _interpolate(_named(\"linkToArtist\"))])},\n \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رجاءً تعاون معنا\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","list","_list","named","_named","plural","_plural"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/i18n/ar-json.d09609af3224232857d6.js b/priv/static/static/js/i18n/ar-json.d09609af3224232857d6.js @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[7808],{36224:(n,r,e)=>{e.r(r),e.d(r,{default:()=>t});const t={chat:{title:n=>{const{normalize:r}=n;return r(["الدردشة"])}},features_panel:{chat:n=>{const{normalize:r}=n;return r(["الدردشة"])},gopher:n=>{const{normalize:r}=n;return r(["غوفر"])},media_proxy:n=>{const{normalize:r}=n;return r(["بروكسي الوسائط"])},scope_options:n=>{const{normalize:r}=n;return r([])},text_limit:n=>{const{normalize:r}=n;return r(["الحد الأقصى للنص"])},title:n=>{const{normalize:r}=n;return r(["الميّزات"])},who_to_follow:n=>{const{normalize:r}=n;return r(["للمتابعة"])}},finder:{error_fetching_user:n=>{const{normalize:r}=n;return r(["خطأ أثناء جلب صفحة المستخدم"])},find_user:n=>{const{normalize:r}=n;return r(["البحث عن مستخدِم"])}},general:{apply:n=>{const{normalize:r}=n;return r(["تطبيق"])},submit:n=>{const{normalize:r}=n;return r(["إرسال"])}},login:{login:n=>{const{normalize:r}=n;return r(["تسجيل الدخول"])},logout:n=>{const{normalize:r}=n;return r(["الخروج"])},password:n=>{const{normalize:r}=n;return r(["الكلمة السرية"])},placeholder:n=>{const{normalize:r}=n;return r(["مثال lain"])},register:n=>{const{normalize:r}=n;return r(["انشاء حساب"])},username:n=>{const{normalize:r}=n;return r(["إسم المستخدم"])}},nav:{chat:n=>{const{normalize:r}=n;return r(["الدردشة المحلية"])},friend_requests:n=>{const{normalize:r}=n;return r(["طلبات المتابَعة"])},mentions:n=>{const{normalize:r}=n;return r(["الإشارات"])},public_tl:n=>{const{normalize:r}=n;return r(["الخيط الزمني العام"])},timeline:n=>{const{normalize:r}=n;return r(["الخيط الزمني"])},twkn:n=>{const{normalize:r}=n;return r(["كافة الشبكة المعروفة"])}},notifications:{broken_favorite:n=>{const{normalize:r}=n;return r(["منشور مجهول، جارٍ البحث عنه…"])},favorited_you:n=>{const{normalize:r}=n;return r(["أعجِب بمنشورك"])},followed_you:n=>{const{normalize:r}=n;return r(["يُتابعك"])},load_older:n=>{const{normalize:r}=n;return r(["تحميل الإشعارات الأقدم"])},notifications:n=>{const{normalize:r}=n;return r(["الإخطارات"])},read:n=>{const{normalize:r}=n;return r(["مقروء!"])},repeated_you:n=>{const{normalize:r}=n;return r(["شارَك منشورك"])}},post_status:{account_not_locked_warning:n=>{const{normalize:r}=n;return r([])},account_not_locked_warning_link:n=>{const{normalize:r}=n;return r(["مقفل"])},attachments_sensitive:n=>{const{normalize:r}=n;return r(["اعتبر المرفقات كلها كمحتوى حساس"])},content_type:{"text/plain":n=>{const{normalize:r}=n;return r(["نص صافٍ"])}},content_warning:n=>{const{normalize:r}=n;return r(["الموضوع (اختياري)"])},default:n=>{const{normalize:r}=n;return r(["وصلت للتوّ إلى لوس أنجلس."])},direct_warning:n=>{const{normalize:r}=n;return r([])},posting:n=>{const{normalize:r}=n;return r(["النشر"])},scope:{direct:n=>{const{normalize:r}=n;return r([])},private:n=>{const{normalize:r}=n;return r([])},public:n=>{const{normalize:r}=n;return r(["علني - يُنشر على الخيوط الزمنية العمومية"])},unlisted:n=>{const{normalize:r}=n;return r(["غير مُدرَج - لا يُنشَر على الخيوط الزمنية العمومية"])}}},registration:{bio:n=>{const{normalize:r}=n;return r(["السيرة الذاتية"])},email:n=>{const{normalize:r}=n;return r(["عنوان البريد الإلكتروني"])},fullname:n=>{const{normalize:r}=n;return r(["الإسم المعروض"])},password_confirm:n=>{const{normalize:r}=n;return r(["تأكيد الكلمة السرية"])},registration:n=>{const{normalize:r}=n;return r(["التسجيل"])},token:n=>{const{normalize:r}=n;return r(["رمز الدعوة"])}},settings:{attachmentRadius:n=>{const{normalize:r}=n;return r(["المُرفَقات"])},attachments:n=>{const{normalize:r}=n;return r(["المُرفَقات"])},avatar:n=>{const{normalize:r}=n;return r(["الصورة الرمزية"])},avatarAltRadius:n=>{const{normalize:r}=n;return r(["الصور الرمزية (الإشعارات)"])},avatarRadius:n=>{const{normalize:r}=n;return r(["الصور الرمزية"])},background:n=>{const{normalize:r}=n;return r(["الخلفية"])},bio:n=>{const{normalize:r}=n;return r(["السيرة الذاتية"])},btnRadius:n=>{const{normalize:r}=n;return r(["الأزرار"])},cBlue:n=>{const{normalize:r}=n;return r(["أزرق (الرد، المتابَعة)"])},cGreen:n=>{const{normalize:r}=n;return r(["أخضر (إعادة النشر)"])},cOrange:n=>{const{normalize:r}=n;return r(["برتقالي (مفضلة)"])},cRed:n=>{const{normalize:r}=n;return r(["أحمر (إلغاء)"])},change_password:n=>{const{normalize:r}=n;return r(["تغيير كلمة السر"])},change_password_error:n=>{const{normalize:r}=n;return r(["وقع هناك خلل أثناء تعديل كلمتك السرية."])},changed_password:n=>{const{normalize:r}=n;return r(["تم تغيير كلمة المرور بنجاح!"])},collapse_subject:n=>{const{normalize:r}=n;return r([])},confirm_new_password:n=>{const{normalize:r}=n;return r(["تأكيد كلمة السر الجديدة"])},current_avatar:n=>{const{normalize:r}=n;return r(["صورتك الرمزية الحالية"])},current_password:n=>{const{normalize:r}=n;return r(["كلمة السر الحالية"])},current_profile_banner:n=>{const{normalize:r}=n;return r(["الرأسية الحالية لصفحتك الشخصية"])},data_import_export_tab:n=>{const{normalize:r}=n;return r(["تصدير واستيراد البيانات"])},default_vis:n=>{const{normalize:r}=n;return r(["أسلوب العرض الافتراضي"])},delete_account:n=>{const{normalize:r}=n;return r(["حذف الحساب"])},delete_account_description:n=>{const{normalize:r}=n;return r(["حذف حسابك و كافة منشوراتك نهائيًا."])},delete_account_error:n=>{const{normalize:r}=n;return r([])},delete_account_instructions:n=>{const{normalize:r}=n;return r(["يُرجى إدخال كلمتك السرية أدناه لتأكيد عملية حذف الحساب."])},export_theme:n=>{const{normalize:r}=n;return r(["حفظ النموذج"])},filtering:n=>{const{normalize:r}=n;return r(["التصفية"])},filtering_explanation:n=>{const{normalize:r}=n;return r(["سيتم إخفاء كافة المنشورات التي تحتوي على هذه الكلمات، كلمة واحدة في كل سطر"])},follow_export:n=>{const{normalize:r}=n;return r(["تصدير الاشتراكات"])},follow_export_button:n=>{const{normalize:r}=n;return r(["تصدير الاشتراكات كملف csv"])},follow_export_processing:n=>{const{normalize:r}=n;return r(["التصدير جارٍ، سوف يُطلَب منك تنزيل ملفك بعد حين"])},follow_import:n=>{const{normalize:r}=n;return r(["استيراد الاشتراكات"])},follow_import_error:n=>{const{normalize:r}=n;return r(["خطأ أثناء استيراد المتابِعين"])},follows_imported:n=>{const{normalize:r}=n;return r([])},foreground:n=>{const{normalize:r}=n;return r(["الأمامية"])},general:n=>{const{normalize:r}=n;return r(["الإعدادات العامة"])},hide_attachments_in_convo:n=>{const{normalize:r}=n;return r(["إخفاء المرفقات على المحادثات"])},hide_attachments_in_tl:n=>{const{normalize:r}=n;return r(["إخفاء المرفقات على الخيط الزمني"])},hide_post_stats:n=>{const{normalize:r}=n;return r([])},hide_user_stats:n=>{const{normalize:r}=n;return r([])},import_followers_from_a_csv_file:n=>{const{normalize:r}=n;return r([])},import_theme:n=>{const{normalize:r}=n;return r(["تحميل نموذج"])},inputRadius:n=>{const{normalize:r}=n;return r([])},instance_default:n=>{const{normalize:r}=n;return r([])},interfaceLanguage:n=>{const{normalize:r}=n;return r(["لغة الواجهة"])},invalid_theme_imported:n=>{const{normalize:r}=n;return r([])},limited_availability:n=>{const{normalize:r}=n;return r(["غير متوفر على متصفحك"])},links:n=>{const{normalize:r}=n;return r(["الروابط"])},lock_account_description:n=>{const{normalize:r}=n;return r([])},loop_video:n=>{const{normalize:r}=n;return r([])},loop_video_silent_only:n=>{const{normalize:r}=n;return r([])},name:n=>{const{normalize:r}=n;return r(["الاسم"])},name_bio:n=>{const{normalize:r}=n;return r(["الاسم والسيرة الذاتية"])},new_password:n=>{const{normalize:r}=n;return r(["كلمة السر الجديدة"])},no_rich_text_description:n=>{const{normalize:r}=n;return r([])},notification_visibility:n=>{const{normalize:r}=n;return r(["نوع الإشعارات التي تريد عرضها"])},notification_visibility_follows:n=>{const{normalize:r}=n;return r(["يتابع"])},notification_visibility_likes:n=>{const{normalize:r}=n;return r(["الإعجابات"])},notification_visibility_mentions:n=>{const{normalize:r}=n;return r(["الإشارات"])},notification_visibility_repeats:n=>{const{normalize:r}=n;return r([])},nsfw_clickthrough:n=>{const{normalize:r}=n;return r([])},oauth_tokens:n=>{const{normalize:r}=n;return r(["رموز OAuth"])},token:n=>{const{normalize:r}=n;return r(["رمز"])},refresh_token:n=>{const{normalize:r}=n;return r(["رمز التحديث"])},valid_until:n=>{const{normalize:r}=n;return r(["صالح حتى"])},revoke_token:n=>{const{normalize:r}=n;return r(["سحب"])},panelRadius:n=>{const{normalize:r}=n;return r([])},pause_on_unfocused:n=>{const{normalize:r}=n;return r([])},presets:n=>{const{normalize:r}=n;return r(["النماذج"])},profile_background:n=>{const{normalize:r}=n;return r(["خلفية الصفحة الشخصية"])},profile_banner:n=>{const{normalize:r}=n;return r(["رأسية الصفحة الشخصية"])},profile_tab:n=>{const{normalize:r}=n;return r(["الملف الشخصي"])},radii_help:n=>{const{normalize:r}=n;return r([])},replies_in_timeline:n=>{const{normalize:r}=n;return r(["الردود على الخيط الزمني"])},reply_visibility_all:n=>{const{normalize:r}=n;return r(["عرض كافة الردود"])},reply_visibility_following:n=>{const{normalize:r}=n;return r([])},reply_visibility_self:n=>{const{normalize:r}=n;return r([])},saving_err:n=>{const{normalize:r}=n;return r(["خطأ أثناء حفظ الإعدادات"])},saving_ok:n=>{const{normalize:r}=n;return r(["تم حفظ الإعدادات"])},security_tab:n=>{const{normalize:r}=n;return r(["الأمان"])},set_new_avatar:n=>{const{normalize:r}=n;return r(["اختيار صورة رمزية جديدة"])},set_new_profile_background:n=>{const{normalize:r}=n;return r(["اختيار خلفية جديدة للملف الشخصي"])},set_new_profile_banner:n=>{const{normalize:r}=n;return r(["اختيار رأسية جديدة للصفحة الشخصية"])},settings:n=>{const{normalize:r}=n;return r(["الإعدادات"])},stop_gifs:n=>{const{normalize:r}=n;return r([])},streaming:n=>{const{normalize:r}=n;return r([])},text:n=>{const{normalize:r}=n;return r(["النص"])},theme:n=>{const{normalize:r}=n;return r(["المظهر"])},theme_help:n=>{const{normalize:r}=n;return r([])},tooltipRadius:n=>{const{normalize:r}=n;return r([])},user_settings:n=>{const{normalize:r}=n;return r(["إعدادات المستخدم"])},values:{false:n=>{const{normalize:r}=n;return r(["لا"])},true:n=>{const{normalize:r}=n;return r(["نعم"])}}},timeline:{collapse:n=>{const{normalize:r}=n;return r([])},conversation:n=>{const{normalize:r}=n;return r(["محادثة"])},error_fetching:n=>{const{normalize:r}=n;return r(["خطأ أثناء جلب التحديثات"])},load_older:n=>{const{normalize:r}=n;return r(["تحميل المنشورات القديمة"])},no_retweet_hint:n=>{const{normalize:r}=n;return r([])},repeated:n=>{const{normalize:r}=n;return r([])},show_new:n=>{const{normalize:r}=n;return r(["عرض الجديد"])},up_to_date:n=>{const{normalize:r}=n;return r(["تم تحديثه"])}},user_card:{approve:n=>{const{normalize:r}=n;return r(["قبول"])},block:n=>{const{normalize:r}=n;return r(["حظر"])},blocked:n=>{const{normalize:r}=n;return r(["تم حظره!"])},deny:n=>{const{normalize:r}=n;return r(["رفض"])},follow:n=>{const{normalize:r}=n;return r(["اتبع"])},followees:n=>{const{normalize:r}=n;return r([])},followers:n=>{const{normalize:r}=n;return r(["مُتابِعون"])},following:n=>{const{normalize:r}=n;return r([])},follows_you:n=>{const{normalize:r}=n;return r(["يتابعك!"])},mute:n=>{const{normalize:r}=n;return r(["كتم"])},muted:n=>{const{normalize:r}=n;return r(["تم كتمه"])},per_day:n=>{const{normalize:r}=n;return r(["في اليوم"])},remote_follow:n=>{const{normalize:r}=n;return r(["مُتابَعة عن بُعد"])},statuses:n=>{const{normalize:r}=n;return r(["المنشورات"])}},user_profile:{timeline_title:n=>{const{normalize:r}=n;return r(["الخيط الزمني للمستخدم"])}},who_to_follow:{more:n=>{const{normalize:r}=n;return r(["المزيد"])},who_to_follow:n=>{const{normalize:r}=n;return r(["للمتابعة"])}},about:{mrf:{keyword:{ftl_removal:n=>{const{normalize:r}=n;return r(["إزالة من الخط الزمني الخاص بجميع الشبكات المعروفة"])},reject:n=>{const{normalize:r}=n;return r(["رفض"])},replace:n=>{const{normalize:r}=n;return r(["إستبدال"])},is_replaced_by:n=>{const{normalize:r}=n;return r(["←"])},keyword_policies:n=>{const{normalize:r}=n;return r(["سياسة الكلمات الدلالية"])}},simple:{simple_policies:n=>{const{normalize:r}=n;return r(["سياسات الخادم"])}},federation:n=>{const{normalize:r}=n;return r(["الاتحاد"])},mrf_policies:n=>{const{normalize:r}=n;return r(["تفعيل سياسات إعادة كتابة المنشور"])},mrf_policies_desc:n=>{const{normalize:r}=n;return r(["خاصية إعادة كتابة المناشير تقوم بتعديل تفاعل الاتحاد مع هذا الخادم. السياسات التالية مفعّلة:"])}}}}}}]); -//# sourceMappingURL=ar-json.d09609af3224232857d6.js.map -\ No newline at end of file diff --git a/priv/static/static/js/i18n/ar-json.d09609af3224232857d6.js.map b/priv/static/static/js/i18n/ar-json.d09609af3224232857d6.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/i18n/ar-json.d09609af3224232857d6.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/ar.json"],"sourcesContent":["export default {\n \"chat\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الدردشة\"])}\n },\n \"features_panel\": {\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الدردشة\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"غوفر\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"بروكسي الوسائط\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الحد الأقصى للنص\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الميّزات\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"للمتابعة\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطأ أثناء جلب صفحة المستخدم\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"البحث عن مستخدِم\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تطبيق\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إرسال\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تسجيل الدخول\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخروج\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الكلمة السرية\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مثال lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انشاء حساب\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إسم المستخدم\"])}\n },\n \"nav\": {\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الدردشة المحلية\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"طلبات المتابَعة\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإشارات\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخيط الزمني العام\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخيط الزمني\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كافة الشبكة المعروفة\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"منشور مجهول، جارٍ البحث عنه…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أعجِب بمنشورك\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يُتابعك\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تحميل الإشعارات الأقدم\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإخطارات\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مقروء!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"شارَك منشورك\"])}\n },\n \"post_status\": {\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مقفل\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اعتبر المرفقات كلها كمحتوى حساس\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نص صافٍ\"])}\n },\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الموضوع (اختياري)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وصلت للتوّ إلى لوس أنجلس.\"])},\n \"direct_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"النشر\"])},\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"علني - يُنشر على الخيوط الزمنية العمومية\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"غير مُدرَج - لا يُنشَر على الخيوط الزمنية العمومية\"])}\n }\n },\n \"registration\": {\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"السيرة الذاتية\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عنوان البريد الإلكتروني\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإسم المعروض\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد الكلمة السرية\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"التسجيل\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رمز الدعوة\"])}\n },\n \"settings\": {\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المُرفَقات\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المُرفَقات\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الصورة الرمزية\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الصور الرمزية (الإشعارات)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الصور الرمزية\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخلفية\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"السيرة الذاتية\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الأزرار\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أزرق (الرد، المتابَعة)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أخضر (إعادة النشر)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"برتقالي (مفضلة)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أحمر (إلغاء)\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تغيير كلمة السر\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"وقع هناك خلل أثناء تعديل كلمتك السرية.\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تم تغيير كلمة المرور بنجاح!\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تأكيد كلمة السر الجديدة\"])},\n \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صورتك الرمزية الحالية\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كلمة السر الحالية\"])},\n \"current_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الرأسية الحالية لصفحتك الشخصية\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تصدير واستيراد البيانات\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أسلوب العرض الافتراضي\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حذف الحساب\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حذف حسابك و كافة منشوراتك نهائيًا.\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يُرجى إدخال كلمتك السرية أدناه لتأكيد عملية حذف الحساب.\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حفظ النموذج\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"التصفية\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سيتم إخفاء كافة المنشورات التي تحتوي على هذه الكلمات، كلمة واحدة في كل سطر\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تصدير الاشتراكات\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تصدير الاشتراكات كملف csv\"])},\n \"follow_export_processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"التصدير جارٍ، سوف يُطلَب منك تنزيل ملفك بعد حين\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"استيراد الاشتراكات\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطأ أثناء استيراد المتابِعين\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الأمامية\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإعدادات العامة\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إخفاء المرفقات على المحادثات\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إخفاء المرفقات على الخيط الزمني\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تحميل نموذج\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"instance_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لغة الواجهة\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"غير متوفر على متصفحك\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الروابط\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاسم\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاسم والسيرة الذاتية\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كلمة السر الجديدة\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نوع الإشعارات التي تريد عرضها\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يتابع\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإعجابات\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإشارات\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رموز OAuth\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رمز\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رمز التحديث\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"صالح حتى\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سحب\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"النماذج\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خلفية الصفحة الشخصية\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رأسية الصفحة الشخصية\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الملف الشخصي\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الردود على الخيط الزمني\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عرض كافة الردود\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطأ أثناء حفظ الإعدادات\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تم حفظ الإعدادات\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الأمان\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اختيار صورة رمزية جديدة\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اختيار خلفية جديدة للملف الشخصي\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اختيار رأسية جديدة للصفحة الشخصية\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإعدادات\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"النص\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المظهر\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إعدادات المستخدم\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"نعم\"])}\n }\n },\n \"timeline\": {\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"محادثة\"])},\n \"error_fetching\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خطأ أثناء جلب التحديثات\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تحميل المنشورات القديمة\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"عرض الجديد\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تم تحديثه\"])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"قبول\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"حظر\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تم حظره!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رفض\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"اتبع\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مُتابِعون\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يتابعك!\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"كتم\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تم كتمه\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"في اليوم\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مُتابَعة عن بُعد\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المنشورات\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الخيط الزمني للمستخدم\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"المزيد\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"للمتابعة\"])}\n },\n \"about\": {\n \"mrf\": {\n \"keyword\": {\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إزالة من الخط الزمني الخاص بجميع الشبكات المعروفة\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"رفض\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"إستبدال\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"←\"])},\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سياسة الكلمات الدلالية\"])}\n },\n \"simple\": {\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"سياسات الخادم\"])}\n },\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاتحاد\"])},\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تفعيل سياسات إعادة كتابة المنشور\"])},\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"خاصية إعادة كتابة المناشير تقوم بتعديل تفاعل الاتحاد مع هذا الخادم. السياسات التالية مفعّلة:\"])}\n }\n }\n}"],"names":["ctx","normalize","_normalize"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/i18n/eo-json.6c62eef99e850912498b.js b/priv/static/static/js/i18n/eo-json.6c62eef99e850912498b.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[4646],{97898:(n,o,e)=>{e.r(o),e.d(o,{default:()=>r});const r={chat:{title:n=>{const{normalize:o}=n;return o(["Babilejo"])}},features_panel:{chat:n=>{const{normalize:o}=n;return o(["Babilejo"])},gopher:n=>{const{normalize:o}=n;return o(["Gopher"])},media_proxy:n=>{const{normalize:o}=n;return o(["Vidaŭdaĵa retperilo"])},scope_options:n=>{const{normalize:o}=n;return o(["Agordoj de amplekso"])},text_limit:n=>{const{normalize:o}=n;return o(["Limo de teksto"])},title:n=>{const{normalize:o}=n;return o(["Funkcioj"])},who_to_follow:n=>{const{normalize:o}=n;return o(["Kiun aboni"])},pleroma_chat_messages:n=>{const{normalize:o}=n;return o(["Babilejo de Pleroma"])},upload_limit:n=>{const{normalize:o}=n;return o(["Limo de alŝutoj"])},shout:n=>{const{normalize:o}=n;return o(["Kriujo"])}},finder:{error_fetching_user:n=>{const{normalize:o}=n;return o(["Eraris alporto de uzanto"])},find_user:n=>{const{normalize:o}=n;return o(["Trovi uzanton"])}},general:{apply:n=>{const{normalize:o}=n;return o(["Apliki"])},submit:n=>{const{normalize:o}=n;return o(["Sendi"])},more:n=>{const{normalize:o}=n;return o(["Pli"])},generic_error:n=>{const{normalize:o}=n;return o(["Eraro okazis"])},optional:n=>{const{normalize:o}=n;return o(["malnepra"])},close:n=>{const{normalize:o}=n;return o(["Fermi"])},verify:n=>{const{normalize:o}=n;return o(["Kontroli"])},confirm:n=>{const{normalize:o}=n;return o(["Konfirmi"])},enable:n=>{const{normalize:o}=n;return o(["Ŝalti"])},disable:n=>{const{normalize:o}=n;return o(["Malŝalti"])},cancel:n=>{const{normalize:o}=n;return o(["Nuligi"])},dismiss:n=>{const{normalize:o}=n;return o(["Forlasi"])},show_less:n=>{const{normalize:o}=n;return o(["Montri malplion"])},show_more:n=>{const{normalize:o}=n;return o(["Montri plion"])},retry:n=>{const{normalize:o}=n;return o(["Reprovi"])},error_retry:n=>{const{normalize:o}=n;return o(["Bonvolu reprovi"])},loading:n=>{const{normalize:o}=n;return o(["Enlegante…"])},peek:n=>{const{normalize:o}=n;return o(["Antaŭmontri"])},role:{moderator:n=>{const{normalize:o}=n;return o(["Reguligisto"])},admin:n=>{const{normalize:o}=n;return o(["Administranto"])}},flash_content:n=>{const{normalize:o}=n;return o(["Klaku por montri enhavon de Flash per Ruffle. (Eksperimente, eble ne funkcios.)"])},flash_security:n=>{const{normalize:o}=n;return o(["Sciu, ke tio povas esti danĝera, ĉar la enhavo de Flash ja estas arbitra programo."])},flash_fail:n=>{const{normalize:o}=n;return o(["Malsukcesis enlegi enhavon de Flash; vidu detalojn en konzolo."])},scope_in_timeline:{direct:n=>{const{normalize:o}=n;return o(["Persona"])},private:n=>{const{normalize:o}=n;return o(["Nur abonantoj"])},public:n=>{const{normalize:o}=n;return o(["Publika"])},unlisted:n=>{const{normalize:o}=n;return o(["Nelistigita"])}},generic_error_message:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Eraris: ",e(r(0))])},never_show_again:n=>{const{normalize:o}=n;return o(["Neniam remontri"])},undo:n=>{const{normalize:o}=n;return o(["Malfari"])},yes:n=>{const{normalize:o}=n;return o(["Jes"])},no:n=>{const{normalize:o}=n;return o(["Ne"])},unpin:n=>{const{normalize:o}=n;return o(["Malfiksi"])},pin:n=>{const{normalize:o}=n;return o(["Fiksi"])},scroll_to_top:n=>{const{normalize:o}=n;return o(["Rulumi supren"])}},image_cropper:{crop_picture:n=>{const{normalize:o}=n;return o(["Tondi bildon"])},save:n=>{const{normalize:o}=n;return o(["Konservi"])},cancel:n=>{const{normalize:o}=n;return o(["Nuligi"])},save_without_cropping:n=>{const{normalize:o}=n;return o(["Konservi sen tondado"])}},login:{login:n=>{const{normalize:o}=n;return o(["Saluti"])},description:n=>{const{normalize:o}=n;return o(["Saluti per OAuth"])},logout:n=>{const{normalize:o}=n;return o(["Adiaŭi"])},password:n=>{const{normalize:o}=n;return o(["Pasvorto"])},placeholder:n=>{const{normalize:o}=n;return o(["ekz. lain"])},register:n=>{const{normalize:o}=n;return o(["Registriĝi"])},username:n=>{const{normalize:o}=n;return o(["Uzantonomo"])},hint:n=>{const{normalize:o}=n;return o(["Salutu por partopreni la diskutadon"])},heading:{recovery:n=>{const{normalize:o}=n;return o(["Rehavo de duobla aŭtentikigo"])},totp:n=>{const{normalize:o}=n;return o(["Duobla aŭtentikigo"])}},recovery_code:n=>{const{normalize:o}=n;return o(["Rehava kodo"])},enter_two_factor_code:n=>{const{normalize:o}=n;return o(["Enigu kodon de duobla aŭtentikigo"])},enter_recovery_code:n=>{const{normalize:o}=n;return o(["Enigu rehavan kodon"])},authentication_code:n=>{const{normalize:o}=n;return o(["Aŭtentikiga kodo"])},logout_confirm_title:n=>{const{normalize:o}=n;return o(["Konfirmo de adiaŭo"])},logout_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas adiaŭi?"])},logout_confirm_accept_button:n=>{const{normalize:o}=n;return o(["Adiaŭi"])},logout_confirm_cancel_button:n=>{const{normalize:o}=n;return o(["Ne adiaŭi"])}},media_modal:{previous:n=>{const{normalize:o}=n;return o(["Antaŭa"])},next:n=>{const{normalize:o}=n;return o(["Sekva"])},counter:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("current"))," / ",e(r("total"))])},hide:n=>{const{normalize:o}=n;return o(["Fermi vidilon de vidaŭdaĵoj"])}},nav:{about:n=>{const{normalize:o}=n;return o(["Prio"])},back:n=>{const{normalize:o}=n;return o(["Reen"])},chat:n=>{const{normalize:o}=n;return o(["Loka babilejo"])},friend_requests:n=>{const{normalize:o}=n;return o(["Petoj pri abono"])},mentions:n=>{const{normalize:o}=n;return o(["Mencioj"])},dms:n=>{const{normalize:o}=n;return o(["Rektaj mesaĝoj"])},public_tl:n=>{const{normalize:o}=n;return o(["Noda historio"])},timeline:n=>{const{normalize:o}=n;return o(["Historio"])},twkn:n=>{const{normalize:o}=n;return o(["Federa historio"])},user_search:n=>{const{normalize:o}=n;return o(["Serĉi uzantojn"])},who_to_follow:n=>{const{normalize:o}=n;return o(["Kiun aboni"])},preferences:n=>{const{normalize:o}=n;return o(["Agordoj"])},chats:n=>{const{normalize:o}=n;return o(["Babiloj"])},search:n=>{const{normalize:o}=n;return o(["Serĉi"])},interactions:n=>{const{normalize:o}=n;return o(["Interagoj"])},administration:n=>{const{normalize:o}=n;return o(["Administrado"])},bookmarks:n=>{const{normalize:o}=n;return o(["Legosignoj"])},timelines:n=>{const{normalize:o}=n;return o(["Historioj"])},home_timeline:n=>{const{normalize:o}=n;return o(["Hejma historio"])},edit_pinned:n=>{const{normalize:o}=n;return o(["Redakti fiksitajn erojn"])},lists:n=>{const{normalize:o}=n;return o(["Listoj"])},edit_nav_mobile:n=>{const{normalize:o}=n;return o(["Adapti navigan breton"])},edit_finish:n=>{const{normalize:o}=n;return o(["Fini redakton"])},mobile_notifications:n=>{const{normalize:o}=n;return o(["Malfermi sciigojn (estas nelegitaj)"])},mobile_notifications_close:n=>{const{normalize:o}=n;return o(["Fermi sciigojn"])},announcements:n=>{const{normalize:o}=n;return o(["Anoncoj"])},search_close:n=>{const{normalize:o}=n;return o(["Fermi serĉujon"])},mobile_sidebar:n=>{const{normalize:o}=n;return o(["(Mal)ŝalti flankan breton por telefonoj"])}},notifications:{broken_favorite:n=>{const{normalize:o}=n;return o(["Nekonata afiŝo, serĉante ĝin…"])},favorited_you:n=>{const{normalize:o}=n;return o(["ŝatis vian afiŝon"])},followed_you:n=>{const{normalize:o}=n;return o(["ekabonis vin"])},load_older:n=>{const{normalize:o}=n;return o(["Enlegi pli malnovajn sciigojn"])},notifications:n=>{const{normalize:o}=n;return o(["Sciigoj"])},read:n=>{const{normalize:o}=n;return o(["Legite!"])},repeated_you:n=>{const{normalize:o}=n;return o(["ripetis vian afiŝon"])},no_more_notifications:n=>{const{normalize:o}=n;return o(["Neniuj pliaj sciigoj"])},reacted_with:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["reagis per ",e(r(0))])},migrated_to:n=>{const{normalize:o}=n;return o(["migris al"])},follow_request:n=>{const{normalize:o}=n;return o(["volas vin aboni"])},error:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Eraris akirado de sciigoj: ",e(r(0))])},submitted_report:n=>{const{normalize:o}=n;return o(["sendis raporton"])},poll_ended:n=>{const{normalize:o}=n;return o(["enketo finiĝis"])}},post_status:{new_status:n=>{const{normalize:o}=n;return o(["Afiŝi"])},account_not_locked_warning:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Via konto ne estas ",e(r(0)),". Iu ajn povas vin aboni por vidi eĉ viajn afiŝoj nur por abonantoj."])},account_not_locked_warning_link:n=>{const{normalize:o}=n;return o(["ŝlosita"])},attachments_sensitive:n=>{const{normalize:o}=n;return o(["Marki kunsendaĵojn konsternaj"])},content_type:{"text/plain":n=>{const{normalize:o}=n;return o(["Plata teksto"])},"text/bbcode":n=>{const{normalize:o}=n;return o(["BBCode"])},"text/markdown":n=>{const{normalize:o}=n;return o(["Markdown"])},"text/html":n=>{const{normalize:o}=n;return o(["HTML"])}},content_warning:n=>{const{normalize:o}=n;return o(["Temo (malnepra)"])},default:n=>{const{normalize:o}=n;return o(["Ĵus alvenis Esperantujon!"])},direct_warning:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo estos videbla nur por ĉiuj menciitaj uzantoj."])},posting:n=>{const{normalize:o}=n;return o(["Afiŝante"])},scope:{direct:n=>{const{normalize:o}=n;return o(["Rekta – afiŝi nur al menciitaj uzantoj"])},private:n=>{const{normalize:o}=n;return o(["Nur abonantoj – afiŝi nur al abonantoj"])},public:n=>{const{normalize:o}=n;return o(["Publika – afiŝi al publikaj historioj"])},unlisted:n=>{const{normalize:o}=n;return o(["Nelistigita – ne afiŝi al publikaj historioj"])}},scope_notice:{unlisted:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo ne estos videbla en la Noda kaj la Federa historioj"])},private:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo estos videbla nur al viaj abonantoj"])},public:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo estos videbla al ĉiuj"])}},media_description_error:n=>{const{normalize:o}=n;return o(["Malsukcesis afiŝo de vidaŭdaĵoj; reprovu"])},empty_status_error:n=>{const{normalize:o}=n;return o(["Ne povas fari malplenan afiŝon sen dosieroj"])},preview_empty:n=>{const{normalize:o}=n;return o(["Malplena"])},preview:n=>{const{normalize:o}=n;return o(["Antaŭrigardo"])},direct_warning_to_first_only:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo estas nur videbla al uzantoj menciitaj je la komenco de la mesaĝo."])},direct_warning_to_all:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo estos videbla al ĉiuj menciitaj uzantoj."])},media_description:n=>{const{normalize:o}=n;return o(["Priskribo de vidaŭdaĵo"])},post:n=>{const{normalize:o}=n;return o(["Afiŝo"])},edit_remote_warning:n=>{const{normalize:o}=n;return o(["Aliaj foraj nodoj eble ne subtenas redaktadon, kaj ne povos ricevi pli novan version de via afiŝo."])},edit_unsupported_warning:n=>{const{normalize:o}=n;return o(["Pleroma ne subtenas redaktadon de mencioj aŭ enketoj."])},edit_status:n=>{const{normalize:o}=n;return o(["Redakti afiŝon"])},content_type_selection:n=>{const{normalize:o}=n;return o(["Formo de afiŝo"])},scope_notice_dismiss:n=>{const{normalize:o}=n;return o(["Fermi ĉi tiun avizon"])}},registration:{bio:n=>{const{normalize:o}=n;return o(["Priskribo"])},email:n=>{const{normalize:o}=n;return o(["Retpoŝtadreso"])},fullname:n=>{const{normalize:o}=n;return o(["Prezenta nomo"])},password_confirm:n=>{const{normalize:o}=n;return o(["Konfirmo de pasvorto"])},registration:n=>{const{normalize:o}=n;return o(["Registriĝo"])},token:n=>{const{normalize:o}=n;return o(["Invita peco"])},captcha:n=>{const{normalize:o}=n;return o(["TESTO DE HOMECO"])},new_captcha:n=>{const{normalize:o}=n;return o(["Klaku la bildon por akiri novan teston"])},username_placeholder:n=>{const{normalize:o}=n;return o(["ekz. lain"])},fullname_placeholder:n=>{const{normalize:o}=n;return o(["ekz. Lain Ivakura"])},bio_placeholder:n=>{const{normalize:o}=n;return o(["ekz.\nSaluton, mi estas Lain.\nMi estas animea knabino vivanta en Japanujo. Eble vi konas min pro la retejo « Wired »."])},validations:{username_required:n=>{const{normalize:o}=n;return o(["ne povas resti malplena"])},fullname_required:n=>{const{normalize:o}=n;return o(["ne povas resti malplena"])},email_required:n=>{const{normalize:o}=n;return o(["ne povas resti malplena"])},password_required:n=>{const{normalize:o}=n;return o(["ne povas resti malplena"])},password_confirmation_required:n=>{const{normalize:o}=n;return o(["ne povas resti malplena"])},password_confirmation_match:n=>{const{normalize:o}=n;return o(["samu la pasvorton"])},birthday_min_age:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["ne povas esti post ",e(r("date"))])},birthday_required:n=>{const{normalize:o}=n;return o(["ne povas resti malplena"])}},reason_placeholder:n=>{const{normalize:o}=n;return o(["Ĉi-node oni aprobas registriĝojn permane.\nSciigu la administrantojn kial vi volas registriĝi."])},reason:n=>{const{normalize:o}=n;return o(["Kialo registriĝi"])},register:n=>{const{normalize:o}=n;return o(["Registriĝi"])},bio_optional:n=>{const{normalize:o}=n;return o(["Prio (malnepra)"])},email_optional:n=>{const{normalize:o}=n;return o(["Retpoŝtadreso (malnepra)"])},email_language:n=>{const{normalize:o}=n;return o(["En kiu lingvo vi volus ricevi retleterojn de la servilo?"])},birthday:n=>{const{normalize:o}=n;return o(["Naskiĝtago:"])},birthday_optional:n=>{const{normalize:o}=n;return o(["Naskiĝtago (malnepra):"])}},settings:{app_name:n=>{const{normalize:o}=n;return o(["Nomo de aplikaĵo"])},attachmentRadius:n=>{const{normalize:o}=n;return o(["Kunsendaĵoj"])},attachments:n=>{const{normalize:o}=n;return o(["Kunsendaĵoj"])},avatar:n=>{const{normalize:o}=n;return o(["Profilbildo"])},avatarAltRadius:n=>{const{normalize:o}=n;return o(["Profilbildoj (sciigoj)"])},avatarRadius:n=>{const{normalize:o}=n;return o(["Profilbildoj"])},background:n=>{const{normalize:o}=n;return o(["Fono"])},bio:n=>{const{normalize:o}=n;return o(["Priskribo"])},blocks_tab:n=>{const{normalize:o}=n;return o(["Blokitoj"])},btnRadius:n=>{const{normalize:o}=n;return o(["Butonoj"])},cBlue:n=>{const{normalize:o}=n;return o(["Blua (respondi, aboni)"])},cGreen:n=>{const{normalize:o}=n;return o(["Verda (diskonigi)"])},cOrange:n=>{const{normalize:o}=n;return o(["Oranĝa (ŝati)"])},cRed:n=>{const{normalize:o}=n;return o(["Ruĝa (nuligi)"])},change_password:n=>{const{normalize:o}=n;return o(["Ŝanĝi pasvorton"])},change_password_error:n=>{const{normalize:o}=n;return o(["Eraris ŝanĝo de via pasvorto."])},changed_password:n=>{const{normalize:o}=n;return o(["Pasvorto sukcese ŝanĝiĝis!"])},collapse_subject:n=>{const{normalize:o}=n;return o(["Maletendi afiŝojn kun temoj"])},composing:n=>{const{normalize:o}=n;return o(["Verkado"])},confirm_new_password:n=>{const{normalize:o}=n;return o(["Konfirmu novan pasvorton"])},current_avatar:n=>{const{normalize:o}=n;return o(["Via nuna profilbildo"])},current_password:n=>{const{normalize:o}=n;return o(["Nuna pasvorto"])},current_profile_banner:n=>{const{normalize:o}=n;return o(["Via nuna profila rubando"])},data_import_export_tab:n=>{const{normalize:o}=n;return o(["Enporto / Elporto de datumoj"])},default_vis:n=>{const{normalize:o}=n;return o(["Implicita amplekso de vidibleco"])},delete_account:n=>{const{normalize:o}=n;return o(["Forigi konton"])},delete_account_description:n=>{const{normalize:o}=n;return o(["Por ĉiam forigi viajn datumojn kaj malaktivigi vian konton."])},delete_account_error:n=>{const{normalize:o}=n;return o(["Eraris forigo de via kanto. Se tio daŭre ripetiĝos, bonvolu kontakti la administranton de via nodo."])},delete_account_instructions:n=>{const{normalize:o}=n;return o(["Entajpu sube vian pasvorton por konfirmi forigon de konto."])},avatar_size_instruction:n=>{const{normalize:o}=n;return o(["La rekomendata minimuma grando de profilbildoj estas 150×150 bilderoj."])},export_theme:n=>{const{normalize:o}=n;return o(["Konservi antaŭagordon"])},filtering:n=>{const{normalize:o}=n;return o(["Filtrado"])},filtering_explanation:n=>{const{normalize:o}=n;return o(["Ĉiuj afiŝoj kun tiuj ĉi vortoj silentiĝos; skribu po unu linie"])},follow_export:n=>{const{normalize:o}=n;return o(["Elporto de abonoj"])},follow_export_button:n=>{const{normalize:o}=n;return o(["Elporti viajn abonojn al CSV-dosiero"])},follow_export_processing:n=>{const{normalize:o}=n;return o(["Traktante; baldaŭ vi ricevos peton elŝuti la dosieron"])},follow_import:n=>{const{normalize:o}=n;return o(["Enporto de abonoj"])},follow_import_error:n=>{const{normalize:o}=n;return o(["Eraro enportante abonojn"])},follows_imported:n=>{const{normalize:o}=n;return o(["Abonoj enportiĝis! Traktado daŭros iom da tempo."])},foreground:n=>{const{normalize:o}=n;return o(["Malfono"])},general:n=>{const{normalize:o}=n;return o(["Ĝenerala"])},hide_attachments_in_convo:n=>{const{normalize:o}=n;return o(["Kaŝi kunsendaĵojn en interparoloj"])},hide_attachments_in_tl:n=>{const{normalize:o}=n;return o(["Kaŝi kunsendaĵojn en historioj"])},max_thumbnails:n=>{const{normalize:o}=n;return o(["Maksimuma nombro da bildetoj en afiŝo"])},hide_isp:n=>{const{normalize:o}=n;return o(["Kaŝi breton propran al nodo"])},preload_images:n=>{const{normalize:o}=n;return o(["Antaŭ-enlegi bildojn"])},use_one_click_nsfw:n=>{const{normalize:o}=n;return o(["Malfermi konsternajn kunsendaĵojn per nur unu klako"])},hide_post_stats:n=>{const{normalize:o}=n;return o(["Kaŝi statistikon de afiŝoj (ekz. nombron de ŝatoj)"])},hide_user_stats:n=>{const{normalize:o}=n;return o(["Kaŝi statistikon de uzantoj (ekz. nombron de abonantoj)"])},hide_filtered_statuses:n=>{const{normalize:o}=n;return o(["Kaŝi ĉiujn filtritajn afiŝojn"])},import_followers_from_a_csv_file:n=>{const{normalize:o}=n;return o(["Enporti abonojn el CSV-dosiero"])},import_theme:n=>{const{normalize:o}=n;return o(["Enlegi antaŭagordojn"])},inputRadius:n=>{const{normalize:o}=n;return o(["Enigaj kampoj"])},checkboxRadius:n=>{const{normalize:o}=n;return o(["Markbutonoj"])},instance_default:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["(originale: ",e(r("value")),")"])},instance_default_simple:n=>{const{normalize:o}=n;return o(["(originale)"])},interface:n=>{const{normalize:o}=n;return o(["Fasado"])},interfaceLanguage:n=>{const{normalize:o}=n;return o(["Lingvo de fasado"])},invalid_theme_imported:n=>{const{normalize:o}=n;return o(["La elektita dosiero ne estas subtenata haŭto de Pleromo. Neniuj ŝanĝoj al via haŭto okazis."])},limited_availability:n=>{const{normalize:o}=n;return o(["Nehavebla en via foliumilo"])},links:n=>{const{normalize:o}=n;return o(["Ligiloj"])},lock_account_description:n=>{const{normalize:o}=n;return o(["Limigi vian konton al nur abonantoj aprobitaj"])},loop_video:n=>{const{normalize:o}=n;return o(["Ripetadi filmojn"])},loop_video_silent_only:n=>{const{normalize:o}=n;return o(["Ripetadi nur filmojn sen sono (ekz. la «GIF-ojn» de Mastodon)"])},mutes_tab:n=>{const{normalize:o}=n;return o(["Silentigoj"])},play_videos_in_modal:n=>{const{normalize:o}=n;return o(["Ludi filmojn en ŝpruca kadro"])},use_contain_fit:n=>{const{normalize:o}=n;return o(["Ne pritondi bildetojn de kunsendaĵoj"])},name:n=>{const{normalize:o}=n;return o(["Nomo"])},name_bio:n=>{const{normalize:o}=n;return o(["Nomo kaj priskribo"])},new_password:n=>{const{normalize:o}=n;return o(["Nova pasvorto"])},notification_visibility:n=>{const{normalize:o}=n;return o(["Montrotaj specoj de sciigoj"])},notification_visibility_follows:n=>{const{normalize:o}=n;return o(["Abonoj"])},notification_visibility_likes:n=>{const{normalize:o}=n;return o(["Ŝatoj"])},notification_visibility_mentions:n=>{const{normalize:o}=n;return o(["Mencioj"])},notification_visibility_repeats:n=>{const{normalize:o}=n;return o(["Ripetoj"])},no_rich_text_description:n=>{const{normalize:o}=n;return o(["Forigi riĉtekstajn formojn de ĉiuj afiŝoj"])},no_blocks:n=>{const{normalize:o}=n;return o(["Neniuj blokitoj"])},no_mutes:n=>{const{normalize:o}=n;return o(["Neniuj silentigoj"])},hide_follows_description:n=>{const{normalize:o}=n;return o(["Ne montri kiun mi sekvas"])},hide_followers_description:n=>{const{normalize:o}=n;return o(["Ne montri kiu min sekvas"])},show_admin_badge:n=>{const{normalize:o}=n;return o(["Montri la insignon de administranto en mia profilo"])},show_moderator_badge:n=>{const{normalize:o}=n;return o(["Montri la insignon de reguligisto en mia profilo"])},nsfw_clickthrough:n=>{const{normalize:o}=n;return o(["Ŝalti traklakan kaŝadon de kunsendaĵoj kaj antaŭmontroj de ligiloj por konsternaj afiŝoj"])},oauth_tokens:n=>{const{normalize:o}=n;return o(["Pecoj de OAuth"])},token:n=>{const{normalize:o}=n;return o(["Peco"])},refresh_token:n=>{const{normalize:o}=n;return o(["Aktualiga peco"])},valid_until:n=>{const{normalize:o}=n;return o(["Valida ĝis"])},revoke_token:n=>{const{normalize:o}=n;return o(["Senvalidigi"])},panelRadius:n=>{const{normalize:o}=n;return o(["Bretoj"])},pause_on_unfocused:n=>{const{normalize:o}=n;return o(["Paŭzigi elsendfluon kiam langeto ne estas fokusata"])},presets:n=>{const{normalize:o}=n;return o(["Antaŭagordoj"])},profile_background:n=>{const{normalize:o}=n;return o(["Fono de profilo"])},profile_banner:n=>{const{normalize:o}=n;return o(["Rubando de profilo"])},profile_tab:n=>{const{normalize:o}=n;return o(["Profilo"])},radii_help:n=>{const{normalize:o}=n;return o(["Agordi fasadan rondigon de randoj (bildere)"])},replies_in_timeline:n=>{const{normalize:o}=n;return o(["Respondoj en historioj"])},reply_visibility_all:n=>{const{normalize:o}=n;return o(["Montri ĉiujn respondojn"])},reply_visibility_following:n=>{const{normalize:o}=n;return o(["Montri nur respondojn por mi aŭ miaj abonatoj"])},reply_visibility_self:n=>{const{normalize:o}=n;return o(["Montri nur respondojn por mi"])},saving_err:n=>{const{normalize:o}=n;return o(["Eraris konservado de agordoj"])},saving_ok:n=>{const{normalize:o}=n;return o(["Agordoj konserviĝis"])},security_tab:n=>{const{normalize:o}=n;return o(["Sekureco"])},scope_copy:n=>{const{normalize:o}=n;return o(["Kopii amplekson por respondo (rektaj mesaĝoj ĉiam kopiiĝas)"])},set_new_avatar:n=>{const{normalize:o}=n;return o(["Agordi novan profilbildon"])},set_new_profile_background:n=>{const{normalize:o}=n;return o(["Agordi novan fonon de profilo"])},set_new_profile_banner:n=>{const{normalize:o}=n;return o(["Agordi novan rubandon de profilo"])},settings:n=>{const{normalize:o}=n;return o(["Agordoj"])},subject_input_always_show:n=>{const{normalize:o}=n;return o(["Ĉiam montri kampon de temo"])},subject_line_behavior:n=>{const{normalize:o}=n;return o(["Kopii temon dum respondado"])},subject_line_email:n=>{const{normalize:o}=n;return o(["Kiel retpoŝto: «re: temo»"])},subject_line_mastodon:n=>{const{normalize:o}=n;return o(["Kiel Mastodon: kopii senŝanĝe"])},subject_line_noop:n=>{const{normalize:o}=n;return o(["Ne kopii"])},post_status_content_type:n=>{const{normalize:o}=n;return o(["Speco de enhavo de afiŝo"])},stop_gifs:n=>{const{normalize:o}=n;return o(["Movi GIF-bildojn dum ŝvebo de muso"])},streaming:n=>{const{normalize:o}=n;return o(["Ŝalti memagan fluigon de novaj afiŝoj kiam vi vidas la supron de la paĝo"])},text:n=>{const{normalize:o}=n;return o(["Teksto"])},theme:n=>{const{normalize:o}=n;return o(["Haŭto"])},theme_help:n=>{const{normalize:o}=n;return o(["Uzu deksesumajn kolorkodojn (#rrvvbb) por adapti vian koloran haŭton."])},theme_help_v2_1:n=>{const{normalize:o}=n;return o(["Vi ankaŭ povas superagordi la kolorojn kaj travideblecon de kelkaj eroj per marko de la markbutono; uzu la butonon «Vakigi ĉion» por forigi ĉîujn superagordojn."])},theme_help_v2_2:n=>{const{normalize:o}=n;return o(["Bildsimboloj sub kelkaj eroj estas indikiloj de kontrasto inter fono kaj teksto; ŝvebigu muson por detalaj informoj. Bonvolu memori, ke la indikilo montras la plej malbonan okazeblon dum sia uzo."])},tooltipRadius:n=>{const{normalize:o}=n;return o(["Ŝpruchelpiloj/avertoj"])},upload_a_photo:n=>{const{normalize:o}=n;return o(["Alŝuti foton"])},user_settings:n=>{const{normalize:o}=n;return o(["Agordoj de uzanto"])},values:{false:n=>{const{normalize:o}=n;return o(["ne"])},true:n=>{const{normalize:o}=n;return o(["jes"])}},notifications:n=>{const{normalize:o}=n;return o(["Sciigoj"])},enable_web_push_notifications:n=>{const{normalize:o}=n;return o(["Ŝalti retajn pasivajn sciigojn"])},style:{switcher:{keep_color:n=>{const{normalize:o}=n;return o(["Konservi kolorojn"])},keep_shadows:n=>{const{normalize:o}=n;return o(["Konservi ombrojn"])},keep_opacity:n=>{const{normalize:o}=n;return o(["Konservi maltravideblecon"])},keep_roundness:n=>{const{normalize:o}=n;return o(["Konservi rondecon"])},keep_fonts:n=>{const{normalize:o}=n;return o(["Konservi tiparojn"])},save_load_hint:n=>{const{normalize:o}=n;return o(["Elektebloj de «konservi» konservas la nuntempajn agordojn dum elektado aŭ enlegado de haŭtoj. Ĝi ankaŭ konservas tiujn agordojn dum elportado de haŭto. Kun ĉiuj markbutonoj nemarkitaj, elporto de la haŭto ĉion konservos."])},reset:n=>{const{normalize:o}=n;return o(["Restarigi"])},clear_all:n=>{const{normalize:o}=n;return o(["Vakigi ĉion"])},clear_opacity:n=>{const{normalize:o}=n;return o(["Vakigi maltravideblecon"])},help:{fe_downgraded:n=>{const{normalize:o}=n;return o(["Versio de PleromaFE reen iris."])},fe_upgraded:n=>{const{normalize:o}=n;return o(["La motoro de haŭtoj de PleromaFE ĝisdatiĝis post ĝisdatigo de la versio."])},older_version_imported:n=>{const{normalize:o}=n;return o(["La enportita dosiero estis farita per pli malnova versio de PleromaFE."])},future_version_imported:n=>{const{normalize:o}=n;return o(["La enportita dosiero estis farita per pli nova versio de PleromaFE."])},v2_imported:n=>{const{normalize:o}=n;return o(["La dosiero, kiun vi enportis, estis farita por malnova versio de PleromaFE. Ni provas maksimumigi interkonformecon, sed tamen eble montriĝos misoj."])},upgraded_from_v2:n=>{const{normalize:o}=n;return o(["PleromaFE estis ĝisdatigita; la haŭto eble aspektos malsame ol kiel vi ĝin memoras."])},snapshot_missing:n=>{const{normalize:o}=n;return o(["Neniu momentokopio de haŭto estis en la dosiero, ĝi povas aspekti iom malsame ol oni intencis."])},snapshot_present:n=>{const{normalize:o}=n;return o(["Ĉiuj valoroj estas transpasataj, ĉar momentokopio de haŭto estas enlegita. Vi povas enlegi anstataŭe la aktualajn datumojn de haŭto."])},snapshot_source_mismatch:n=>{const{normalize:o}=n;return o(["Versioj konfliktas: plej probable la fasado estis reirigita kaj ree ĝisdatigita; se vi ŝanĝis la haŭton per pli malnova versio de la fasado, vi probable volas uzi la malnovan version. Alie uzu la novan."])},migration_napshot_gone:n=>{const{normalize:o}=n;return o(["Ial mankis momentokopio; io povus aspekti malsame ol en via memoro."])},migration_snapshot_ok:n=>{const{normalize:o}=n;return o(["Certige, momentokopio de la haŭto enlegiĝis. Vi povas provi enlegi datumojn de la haŭto."])}},use_source:n=>{const{normalize:o}=n;return o(["Nova versio"])},use_snapshot:n=>{const{normalize:o}=n;return o(["Malnova versio"])},keep_as_is:n=>{const{normalize:o}=n;return o(["Teni senŝanĝa"])},load_theme:n=>{const{normalize:o}=n;return o(["Enlegi haŭton"])}},common:{color:n=>{const{normalize:o}=n;return o(["Koloro"])},opacity:n=>{const{normalize:o}=n;return o(["Maltravidebleco"])},contrast:{hint:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Proporcio de kontrasto estas ",e(r("ratio")),", ĝi ",e(r("level"))," ",e(r("context"))])},level:{aa:n=>{const{normalize:o}=n;return o(["plenumas la gvidilon je nivelo AA (minimuma)"])},aaa:n=>{const{normalize:o}=n;return o(["plenumas la gvidilon je nivela AAA (rekomendita)"])},bad:n=>{const{normalize:o}=n;return o(["plenumas neniujn faciluzajn gvidilojn"])}},context:{"18pt":n=>{const{normalize:o}=n;return o(["por granda (18pt+) teksto"])},text:n=>{const{normalize:o}=n;return o(["por teksto"])}}}},common_colors:{_tab_label:n=>{const{normalize:o}=n;return o(["Komunaj"])},main:n=>{const{normalize:o}=n;return o(["Komunaj koloroj"])},foreground_hint:n=>{const{normalize:o}=n;return o(["Vidu langeton «Specialaj» por pli detalaj agordoj"])},rgbo:n=>{const{normalize:o}=n;return o(["Bildsimboloj, emfazoj, insignoj"])}},advanced_colors:{_tab_label:n=>{const{normalize:o}=n;return o(["Specialaj"])},alert:n=>{const{normalize:o}=n;return o(["Fono de averto"])},alert_error:n=>{const{normalize:o}=n;return o(["Eraro"])},badge:n=>{const{normalize:o}=n;return o(["Fono de insigno"])},badge_notification:n=>{const{normalize:o}=n;return o(["Sciigo"])},panel_header:n=>{const{normalize:o}=n;return o(["Kapo de breto"])},top_bar:n=>{const{normalize:o}=n;return o(["Supra breto"])},borders:n=>{const{normalize:o}=n;return o(["Limoj"])},buttons:n=>{const{normalize:o}=n;return o(["Butonoj"])},inputs:n=>{const{normalize:o}=n;return o(["Enigaj kampoj"])},faint_text:n=>{const{normalize:o}=n;return o(["Malvigla teksto"])},chat:{border:n=>{const{normalize:o}=n;return o(["Limo"])},outgoing:n=>{const{normalize:o}=n;return o(["Eliraj"])},incoming:n=>{const{normalize:o}=n;return o(["Envenaj"])}},tabs:n=>{const{normalize:o}=n;return o(["Langetoj"])},disabled:n=>{const{normalize:o}=n;return o(["Malŝaltita"])},selectedMenu:n=>{const{normalize:o}=n;return o(["Elektita menuero"])},selectedPost:n=>{const{normalize:o}=n;return o(["Elektita afiŝo"])},pressed:n=>{const{normalize:o}=n;return o(["Premita"])},highlight:n=>{const{normalize:o}=n;return o(["Emfazitaj eroj"])},icons:n=>{const{normalize:o}=n;return o(["Bildsimboloj"])},poll:n=>{const{normalize:o}=n;return o(["Grafo de enketo"])},underlay:n=>{const{normalize:o}=n;return o(["Subtavolo"])},popover:n=>{const{normalize:o}=n;return o(["Ŝprucaĵoj, menuoj"])},post:n=>{const{normalize:o}=n;return o(["Afiŝoj/Priskriboj de uzantoj"])},alert_neutral:n=>{const{normalize:o}=n;return o(["Neŭtrala"])},alert_warning:n=>{const{normalize:o}=n;return o(["Averto"])},toggled:n=>{const{normalize:o}=n;return o(["Ŝaltita"])},wallpaper:n=>{const{normalize:o}=n;return o(["Fonbildo"])}},radii:{_tab_label:n=>{const{normalize:o}=n;return o(["Rondeco"])}},shadows:{_tab_label:n=>{const{normalize:o}=n;return o(["Ombro kaj lumo"])},component:n=>{const{normalize:o}=n;return o(["Ero"])},override:n=>{const{normalize:o}=n;return o(["Transpasi"])},shadow_id:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Ombro #",e(r("value"))])},blur:n=>{const{normalize:o}=n;return o(["Malklarigo"])},spread:n=>{const{normalize:o}=n;return o(["Vastigo"])},inset:n=>{const{normalize:o}=n;return o(["Internigo"])},hint:n=>{const{normalize:o}=n;return o(["Por ombroj vi ankaŭ povas uzi --variable kiel koloran valoron, por uzi variantojn de CSS3. Bonvolu rimarki, ke tiuokaze agordoj de maltravidebleco ne funkcios."])},filter_hint:{always_drop_shadow:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Averto: ĉi tiu ombro ĉiam uzas ",e(r(0))," kiam la foliumilo tion subtenas."])},drop_shadow_syntax:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," ne subtenas parametron ",e(r(1))," kaj ĉefvorton ",e(r(2)),"."])},avatar_inset:n=>{const{normalize:o}=n;return o(["Bonvolu rimarki, ke agordi ambaŭ internajn kaj eksterajn ombrojn por profilbildoj povas redoni neatenditajn rezultojn ĉe profilbildoj travideblaj."])},spread_zero:n=>{const{normalize:o}=n;return o(["Ombroj kun vastigo > 0 aperos kvazaŭ ĝi estus fakte nulo"])},inset_classic:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Internaj ombroj uzos ",e(r(0))])}},components:{panel:n=>{const{normalize:o}=n;return o(["Breto"])},panelHeader:n=>{const{normalize:o}=n;return o(["Kapo de breto"])},topBar:n=>{const{normalize:o}=n;return o(["Supra breto"])},avatar:n=>{const{normalize:o}=n;return o(["Profilbildo de uzanto (en profila vido)"])},avatarStatus:n=>{const{normalize:o}=n;return o(["Profilbildo de uzanto (en afiŝa vido)"])},popup:n=>{const{normalize:o}=n;return o(["Ŝprucaĵoj"])},button:n=>{const{normalize:o}=n;return o(["Butono"])},buttonHover:n=>{const{normalize:o}=n;return o(["Butono (je ŝvebo)"])},buttonPressed:n=>{const{normalize:o}=n;return o(["Butono (premita)"])},buttonPressedHover:n=>{const{normalize:o}=n;return o(["Butono (je premo kaj ŝvebo)"])},input:n=>{const{normalize:o}=n;return o(["Eniga kampo"])}},hintV3:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Kolorojn de ombroj vi ankaŭ povas skribi per la sistemo ",e(r(0)),"."])}},fonts:{_tab_label:n=>{const{normalize:o}=n;return o(["Tiparoj"])},help:n=>{const{normalize:o}=n;return o(["Elektu tiparon uzotan por eroj de la fasado. Por «propra» vi devas enigi la precizan nomon de tiparo tiel, kiel ĝi aperas en la sistemo."])},components:{interface:n=>{const{normalize:o}=n;return o(["Fasado"])},input:n=>{const{normalize:o}=n;return o(["Enigaj kampoj"])},post:n=>{const{normalize:o}=n;return o(["Teksto de afiŝo"])},postCode:n=>{const{normalize:o}=n;return o(["Egallarĝa teksto en afiŝo (riĉteksto)"])}},family:n=>{const{normalize:o}=n;return o(["Nomo de tiparo"])},size:n=>{const{normalize:o}=n;return o(["Grando (en bilderoj)"])},weight:n=>{const{normalize:o}=n;return o(["Pezo (graseco)"])},custom:n=>{const{normalize:o}=n;return o(["Propra"])}},preview:{header:n=>{const{normalize:o}=n;return o(["Antaŭrigardo"])},content:n=>{const{normalize:o}=n;return o(["Enhavo"])},error:n=>{const{normalize:o}=n;return o(["Ekzempla eraro"])},button:n=>{const{normalize:o}=n;return o(["Butono"])},text:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Kelko da pliaj ",e(r(0))," kaj ",e(r(1))])},mono:n=>{const{normalize:o}=n;return o(["enhavo"])},input:n=>{const{normalize:o}=n;return o(["Ĵus alvenis Esperantujon!"])},faint_link:n=>{const{normalize:o}=n;return o(["helpan manlibron"])},fine_print:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Legu nian ",e(r(0))," por nenion utilan ekscii!"])},header_faint:n=>{const{normalize:o}=n;return o(["Tio estas en ordo"])},checkbox:n=>{const{normalize:o}=n;return o(["Mi legetis la kondiĉojn de uzado"])},link:n=>{const{normalize:o}=n;return o(["bela eta ligil’"])}}},discoverable:n=>{const{normalize:o}=n;return o(["Permesi trovon de ĉi tiu konto en serĉrezultoj kaj aliaj servoj"])},mutes_and_blocks:n=>{const{normalize:o}=n;return o(["Blokado kaj silentigoj"])},chatMessageRadius:n=>{const{normalize:o}=n;return o(["Babileja mesaĝo"])},changed_email:n=>{const{normalize:o}=n;return o(["Retpoŝtadreso sukcese ŝanĝiĝis!"])},change_email_error:n=>{const{normalize:o}=n;return o(["Eraris ŝanĝo de via retpoŝtadreso."])},change_email:n=>{const{normalize:o}=n;return o(["Ŝanĝi retpoŝtadreson"])},bot:n=>{const{normalize:o}=n;return o(["Ĉi tio estas robota konto"])},blocks_imported:n=>{const{normalize:o}=n;return o(["Blokitoj enportiĝis! Traktado daŭros iom da tempo."])},block_import_error:n=>{const{normalize:o}=n;return o(["Eraris enporto de blokitoj"])},block_export:n=>{const{normalize:o}=n;return o(["Elporto de blokitoj"])},block_import:n=>{const{normalize:o}=n;return o(["Enporto de blokitoj"])},block_export_button:n=>{const{normalize:o}=n;return o(["Elporti viajn blokitojn al CSV-dosiero"])},allow_following_move:n=>{const{normalize:o}=n;return o(["Permesi memagan abonadon kiam abonata konto migras"])},mfa:{verify:{desc:n=>{const{normalize:o}=n;return o(["Por ŝalti duoblan aŭtentikigon, enigu la kodon el via aplikaĵo por duobla aŭtentikigo:"])}},scan:{secret_code:n=>{const{normalize:o}=n;return o(["Ŝlosilo"])},desc:n=>{const{normalize:o}=n;return o(["Uzante vian aplikaĵon por duobla aŭtentikigo, skanu ĉi tiun rapidrespondan kodon aŭ enigu tekstan ŝlosilon:"])},title:n=>{const{normalize:o}=n;return o(["Skani"])}},authentication_methods:n=>{const{normalize:o}=n;return o(["Metodoj de aŭtentikigo"])},recovery_codes_warning:n=>{const{normalize:o}=n;return o(["Notu la kodojn aŭ konservu ilin en sekura loko – alie vi ne revidos ilin. Se vi perdos aliron al via aplikaĵo por duobla aŭtentikigo kaj al la rehavaj kodoj, vi ne povos aliri vian konton."])},waiting_a_recovery_codes:n=>{const{normalize:o}=n;return o(["Ricevante savkopiajn kodojn…"])},recovery_codes:n=>{const{normalize:o}=n;return o(["Rehavaj kodoj."])},warning_of_generate_new_codes:n=>{const{normalize:o}=n;return o(["Kiam vi estigos novajn rehavajn kodojn, viaj malnovaj ne plu funkcios."])},generate_new_recovery_codes:n=>{const{normalize:o}=n;return o(["Estigi novajn rehavajn kodojn"])},title:n=>{const{normalize:o}=n;return o(["Duobla aŭtentikigo"])},otp:n=>{const{normalize:o}=n;return o(["OTP"])},wait_pre_setup_otp:n=>{const{normalize:o}=n;return o(["antaŭagordante OTP"])},setup_otp:n=>{const{normalize:o}=n;return o(["Agordi OTP"])},confirm_and_enable:n=>{const{normalize:o}=n;return o(["Konfirmi kaj ŝalti OTP"])}},enter_current_password_to_confirm:n=>{const{normalize:o}=n;return o(["Enigu vian pasvorton por konfirmi vian identecon"])},security:n=>{const{normalize:o}=n;return o(["Sekureco"])},fun:n=>{const{normalize:o}=n;return o(["Amuzo"])},type_domains_to_mute:n=>{const{normalize:o}=n;return o(["Serĉu silentigotajn retnomojn"])},useStreamingApiWarning:n=>{const{normalize:o}=n;return o(["(Nerekomendate, eksperimente, povas preterpasi afiŝojn)"])},useStreamingApi:n=>{const{normalize:o}=n;return o(["Ricevi afiŝojn kaj sciigojn realtempe"])},user_mutes:n=>{const{normalize:o}=n;return o(["Uzantoj"])},reset_background_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas restarigi la fonon?"])},reset_banner_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas restarigi la rubandon?"])},reset_avatar_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas restarigi la profilbildon?"])},reset_profile_banner:n=>{const{normalize:o}=n;return o(["Restarigi rubandon de profilo"])},reset_profile_background:n=>{const{normalize:o}=n;return o(["Restarigi fonon de profilo"])},reset_avatar:n=>{const{normalize:o}=n;return o(["Restarigi profilbildon"])},minimal_scopes_mode:n=>{const{normalize:o}=n;return o(["Minimumigi elekteblojn pri amplekso de afiŝoj"])},search_user_to_block:n=>{const{normalize:o}=n;return o(["Serĉu, kiun vi volas bloki"])},search_user_to_mute:n=>{const{normalize:o}=n;return o(["Serĉu, kiun vi volas silentigi"])},autohide_floating_post_button:n=>{const{normalize:o}=n;return o(["Memage kaŝi la butonon por Nova afiŝo (poŝtelefone)"])},hide_followers_count_description:n=>{const{normalize:o}=n;return o(["Ne montri nombron de abonantoj"])},hide_follows_count_description:n=>{const{normalize:o}=n;return o(["Ne montri nombron de abonoj"])},notification_visibility_emoji_reactions:n=>{const{normalize:o}=n;return o(["Reagoj"])},notification_visibility_moves:n=>{const{normalize:o}=n;return o(["Migroj"])},new_email:n=>{const{normalize:o}=n;return o(["Nova retpoŝtadreso"])},profile_fields:{value:n=>{const{normalize:o}=n;return o(["Enhavo"])},name:n=>{const{normalize:o}=n;return o(["Etikedo"])},add_field:n=>{const{normalize:o}=n;return o(["Aldoni kampon"])},label:n=>{const{normalize:o}=n;return o(["Pridatumoj de profilo"])}},import_blocks_from_a_csv_file:n=>{const{normalize:o}=n;return o(["Enporti blokitojn el CSV-dosiero"])},hide_muted_posts:n=>{const{normalize:o}=n;return o(["Kaŝi afiŝojn de silentigitaj uzantoj"])},emoji_reactions_on_timeline:n=>{const{normalize:o}=n;return o(["Montri bildosignajn reagojn en historioj"])},pad_emoji:n=>{const{normalize:o}=n;return o(["Meti spacetojn ĉirkaŭ bildosigno post ties elekto"])},domain_mutes:n=>{const{normalize:o}=n;return o(["Retnomoj"])},notification_blocks:n=>{const{normalize:o}=n;return o(["Blokinte uzanton vi malabonos ĝin kaj haltigos ĉiujn sciigojn."])},notification_mutes:n=>{const{normalize:o}=n;return o(["Por ne plu ricevi sciigojn de certa uzanto, silentigu ĝin."])},notification_setting_hide_notification_contents:n=>{const{normalize:o}=n;return o(["Kaŝi la sendinton kaj la enhavojn de pasivaj sciigoj"])},notification_setting_privacy:n=>{const{normalize:o}=n;return o(["Privateco"])},notification_setting_block_from_strangers:n=>{const{normalize:o}=n;return o(["Bloki sciigojn de uzantoj, kiujn vi ne abonas"])},notification_setting_filters:n=>{const{normalize:o}=n;return o(["Filtriloj"])},greentext:n=>{const{normalize:o}=n;return o(["Memecitaĵoj"])},version:{frontend_version:n=>{const{normalize:o}=n;return o(["Versio de fasado"])},backend_version:n=>{const{normalize:o}=n;return o(["Versio de internaĵo"])},title:n=>{const{normalize:o}=n;return o(["Versio"])}},accent:n=>{const{normalize:o}=n;return o(["Emfazo"])},virtual_scrolling:n=>{const{normalize:o}=n;return o(["Optimumigi bildigon de historioj"])},import_mutes_from_a_csv_file:n=>{const{normalize:o}=n;return o(["Enporti silentigojn el CSV-dosiero"])},mutes_imported:n=>{const{normalize:o}=n;return o(["Silentigoj enportiĝis! Traktado daŭros iom da tempo."])},mute_import_error:n=>{const{normalize:o}=n;return o(["Eraris enporto de silentigoj"])},mute_import:n=>{const{normalize:o}=n;return o(["Enporto de silentigoj"])},mute_export_button:n=>{const{normalize:o}=n;return o(["Elportu viajn silentigojn al CSV-dosiero"])},mute_export:n=>{const{normalize:o}=n;return o(["Elporto de silentigoj"])},hide_wallpaper:n=>{const{normalize:o}=n;return o(["Kaŝi fonbildon de nodo"])},setting_changed:n=>{const{normalize:o}=n;return o(["Agordo malsamas de la implicita"])},more_settings:n=>{const{normalize:o}=n;return o(["Pliaj agordoj"])},sensitive_by_default:n=>{const{normalize:o}=n;return o(["Implicite marki afiŝojn konsternaj"])},reply_visibility_following_short:n=>{const{normalize:o}=n;return o(["Montri respondojn por miaj abonatoj"])},hide_all_muted_posts:n=>{const{normalize:o}=n;return o(["Kaŝi silentigitajn afiŝojn"])},hide_media_previews:n=>{const{normalize:o}=n;return o(["Kaŝi antaŭrigardojn al vidaŭdaĵoj"])},word_filter:n=>{const{normalize:o}=n;return o(["Vortofiltro"])},reply_visibility_self_short:n=>{const{normalize:o}=n;return o(["Montri nur respondojn por mi"])},file_export_import:{errors:{file_slightly_new:n=>{const{normalize:o}=n;return o(["Etversio de dosiero malsamas, iuj agordoj eble ne funkcios"])},file_too_old:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Nekonforma ĉefa versio: ",e(r("fileMajor")),", versio de dosiero estas tro malnova kaj nesubtenata (minimuma estas ",e(r("feMajor")),")"])},file_too_new:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Nekonforma ĉefa versio: ",e(r("fileMajor")),", ĉi tiu PleromaFE (agordoj je versio ",e(r("feMajor")),") tro malnovas por tio"])},invalid_file:n=>{const{normalize:o}=n;return o(["La elektita dosiero ne estas subtenata savkopio de agordoj de Pleroma. Nenio ŝanĝiĝis."])}},restore_settings:n=>{const{normalize:o}=n;return o(["Rehavi agordojn el dosiero"])},backup_settings_theme:n=>{const{normalize:o}=n;return o(["Savkopii agordojn kaj haŭton al dosiero"])},backup_settings:n=>{const{normalize:o}=n;return o(["Savkopii agordojn al dosiero"])},backup_restore:n=>{const{normalize:o}=n;return o(["Savkopio de agordoj"])}},right_sidebar:n=>{const{normalize:o}=n;return o(["Montri flankan breton dekstre"])},save:n=>{const{normalize:o}=n;return o(["Konservi ŝanĝojn"])},hide_shoutbox:n=>{const{normalize:o}=n;return o(["Kaŝi kriujon de nodo"])},always_show_post_button:n=>{const{normalize:o}=n;return o(["Ĉiam montri ŝvebantan butonon por nova afiŝo"])},mentions_new_style:n=>{const{normalize:o}=n;return o(["Pli mojosaj menciligiloj"])},mentions_new_place:n=>{const{normalize:o}=n;return o(["Meti menciojn sur apartan linion"])},lists_navigation:n=>{const{normalize:o}=n;return o(["Montri listojn en navigiloj"])},account_backup:n=>{const{normalize:o}=n;return o(["Savkopio de konto"])},account_backup_description:n=>{const{normalize:o}=n;return o(["Ĉi tio povigas vin elŝuti arĥivon de viaj afiŝoj kaj ĉiuj informoj pri via konto, sed ili ne jam povas enportiĝi en konton de Pleroma."])},list_aliases_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraris akirado de kromnomoj: ",e(r("error"))])},move_account_notes:n=>{const{normalize:o}=n;return o(["Se vi volas movi la konton aliloken, vi devas iri al via celata konto, kaj aldoni kromnomon ligitan al tie ĉi."])},navbar_column_stretch:n=>{const{normalize:o}=n;return o(["Etendi navigan breton laŭ larĝeco de kolumnoj"])},posts:n=>{const{normalize:o}=n;return o(["Afiŝoj"])},notification_visibility_polls:n=>{const{normalize:o}=n;return o(["Finoj de enketoj kun via voĉo"])},conversation_display:n=>{const{normalize:o}=n;return o(["Aspekto de interparoloj"])},disable_sticky_headers:n=>{const{normalize:o}=n;return o(["Ne alglui kapojn de kolumnoj al supro de la ekrano"])},conversation_display_linear_quick:n=>{const{normalize:o}=n;return o(["Linia vido"])},use_websockets:n=>{const{normalize:o}=n;return o(["Uzi teĥnikaron «websockets» (tuja ĝisdatigo)"])},mention_link_display_full_for_remote:n=>{const{normalize:o}=n;return o(["plene nur je uzantoj foraj (ekz. ","@","zozo","@","ekzemplo.org)"])},expert_mode:n=>{const{normalize:o}=n;return o(["Montri altnivelajn"])},setting_server_side:n=>{const{normalize:o}=n;return o(["Ĉi tiu agordo estas ligita al via profilo, kaj efektiviĝos en ĉiuj viaj salutoj kaj klientoj"])},post_look_feel:n=>{const{normalize:o}=n;return o(["Aspekto de afiŝoj"])},mention_links:n=>{const{normalize:o}=n;return o(["Menciaj ligiloj"])},email_language:n=>{const{normalize:o}=n;return o(["Lingvo de leteroj ricevotaj de la servilo"])},account_backup_table_head:n=>{const{normalize:o}=n;return o(["Savkopio"])},download_backup:n=>{const{normalize:o}=n;return o(["Elŝuti"])},backup_not_ready:n=>{const{normalize:o}=n;return o(["Ĉi tiu savkopio ne jam pretas."])},remove_backup:n=>{const{normalize:o}=n;return o(["Forigi"])},list_backups_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraris akirado de listo de savkopioj: ",e(r("error"))])},add_backup:n=>{const{normalize:o}=n;return o(["Fari novan savkopion"])},added_backup:n=>{const{normalize:o}=n;return o(["Aldonis novan savkopion."])},add_backup_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraris aldono de nova savkopio: ",e(r("error"))])},account_alias:n=>{const{normalize:o}=n;return o(["Kromnomoj de konto"])},account_alias_table_head:n=>{const{normalize:o}=n;return o(["Kromnomo"])},hide_list_aliases_error_action:n=>{const{normalize:o}=n;return o(["Fermi"])},remove_alias:n=>{const{normalize:o}=n;return o(["Forigi ĉi tiun kromnomon"])},new_alias_target:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Aldoni novan kromnomon (ekz. ",e(r("example")),")"])},added_alias:n=>{const{normalize:o}=n;return o(["Kromnomo estas aldonita."])},add_alias_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraris aldono de kromnomo: ",e(r("error"))])},move_account:n=>{const{normalize:o}=n;return o(["Movi konton"])},move_account_target:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Celata konto (ekz. ",e(r("example")),")"])},moved_account:n=>{const{normalize:o}=n;return o(["Konto moviĝis."])},move_account_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraris movado de konto: ",e(r("error"))])},wordfilter:n=>{const{normalize:o}=n;return o(["Vortofiltrado"])},word_filter_and_more:n=>{const{normalize:o}=n;return o(["Vortofiltrado kaj pli…"])},mute_bot_posts:n=>{const{normalize:o}=n;return o(["Silentigi afiŝojn de robotoj"])},hide_bot_indication:n=>{const{normalize:o}=n;return o(["Kaŝi markon de roboteco en afiŝoj"])},hide_wordfiltered_statuses:n=>{const{normalize:o}=n;return o(["Kaŝi vorte filtritajn afiŝojn"])},hide_muted_threads:n=>{const{normalize:o}=n;return o(["Kaŝi silentigitajn fadenojn"])},account_privacy:n=>{const{normalize:o}=n;return o(["Privateco"])},user_profiles:n=>{const{normalize:o}=n;return o(["Profiloj de uzantoj"])},hide_favorites_description:n=>{const{normalize:o}=n;return o(["Ne montri liston de miaj ŝatatoj (oni tamen sciiĝas)"])},conversation_display_tree:n=>{const{normalize:o}=n;return o(["Arba stilo"])},conversation_display_tree_quick:n=>{const{normalize:o}=n;return o(["Arba vido"])},show_scrollbars:n=>{const{normalize:o}=n;return o(["Montri rulumskalojn de flankaj kolumnoj"])},third_column_mode_none:n=>{const{normalize:o}=n;return o(["Neniam montri trian kolumnon"])},third_column_mode_notifications:n=>{const{normalize:o}=n;return o(["Kolumno de sciigoj"])},columns:n=>{const{normalize:o}=n;return o(["Kolumnoj"])},column_sizes:n=>{const{normalize:o}=n;return o(["Grandeco de kolumnoj"])},column_sizes_sidebar:n=>{const{normalize:o}=n;return o(["Flanka breto"])},column_sizes_content:n=>{const{normalize:o}=n;return o(["Enhavo"])},column_sizes_notifs:n=>{const{normalize:o}=n;return o(["Sciigoj"])},tree_advanced:n=>{const{normalize:o}=n;return o(["Permesi pli flekseblan navigadon en arba vido"])},conversation_display_linear:n=>{const{normalize:o}=n;return o(["Linia stilo"])},conversation_other_replies_button:n=>{const{normalize:o}=n;return o(["Montri la butonon pri «aliaj respondoj»"])},conversation_other_replies_button_below:n=>{const{normalize:o}=n;return o(["Sub afiŝoj"])},conversation_other_replies_button_inside:n=>{const{normalize:o}=n;return o(["En afiŝoj"])},max_depth_in_thread:n=>{const{normalize:o}=n;return o(["Maksimuma nombro de niveloj implicite montrataj en fadeno"])},auto_update:n=>{const{normalize:o}=n;return o(["Montri novajn afiŝojn memage"])},use_at_icon:n=>{const{normalize:o}=n;return o(["Montri simbolon ","@"," kiel bildon anstataŭ teksto"])},mention_link_display:n=>{const{normalize:o}=n;return o(["Montri menciajn ligilojn"])},mention_link_display_short:n=>{const{normalize:o}=n;return o(["ĉiam mallonge (ekz. ","@","zozo)"])},mention_link_display_full:n=>{const{normalize:o}=n;return o(["ĉiam plene (ekz. ","@","zozo","@","ekzemplo.org)"])},mention_link_show_avatar:n=>{const{normalize:o}=n;return o(["Montri profilbildon de uzanto apud la ligilo"])},mention_link_show_avatar_quick:n=>{const{normalize:o}=n;return o(["Montri profilbildon de uzanto apud mencioj"])},mention_link_fade_domain:n=>{const{normalize:o}=n;return o(["Malvigligi retnomojn (ekz. ","@","ekzemplo.org en ","@","zozo","@","ekzemplo.org)"])},mention_link_bolden_you:n=>{const{normalize:o}=n;return o(["Emfazi vian mencion, se vi estas menciita"])},mention_link_use_tooltip:n=>{const{normalize:o}=n;return o(["Montri karton de uzanto per klako al mencia ligilo"])},user_popover_avatar_action_close:n=>{const{normalize:o}=n;return o(["Fermi la ŝprucaĵon"])},user_popover_avatar_action_open:n=>{const{normalize:o}=n;return o(["Malfermi la profilon"])},user_popover_avatar_overlay:n=>{const{normalize:o}=n;return o(["Aperigi ŝprucaĵon pri uzanto sur profilbildo"])},show_yous:n=>{const{normalize:o}=n;return o(["Montri la markon «(Vi)»"])},user_popover_avatar_action_zoom:n=>{const{normalize:o}=n;return o(["Zomi la profilbildon"])},third_column_mode:n=>{const{normalize:o}=n;return o(["Kun sufiĉo da spaco, montri trian kolumnon kun"])},birthday:{show_birthday:n=>{const{normalize:o}=n;return o(["Montri mian naskiĝtagon"])},label:n=>{const{normalize:o}=n;return o(["Naskiĝtago"])}},confirm_dialogs_delete:n=>{const{normalize:o}=n;return o(["forigo de afiŝo"])},backup_running:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o(["Ĉi tiu savkopiado progresas, traktis ",e(r("number"))," datumon."]),o(["Ĉi tiu savkopiado progresas, traktis ",e(r("number"))," datumojn."])])},backup_failed:n=>{const{normalize:o}=n;return o(["Ĉi tiu savkopiado malsukcesis."])},autocomplete_select_first:n=>{const{normalize:o}=n;return o(["Memage elekti unuan kandidaton kiam rezultoj de memaga konjektado disponeblas"])},confirm_dialogs_logout:n=>{const{normalize:o}=n;return o(["adiaŭo"])},user_popover_avatar_action:n=>{const{normalize:o}=n;return o(["Post klako sur profilbildon en ŝprucaĵo"])},remove_language:n=>{const{normalize:o}=n;return o(["Forigi"])},primary_language:n=>{const{normalize:o}=n;return o(["Ĉefa lingvo:"])},confirm_dialogs:n=>{const{normalize:o}=n;return o(["Peti konfirmon je"])},confirm_dialogs_repeat:n=>{const{normalize:o}=n;return o(["ripeto de afiŝo"])},confirm_dialogs_unfollow:n=>{const{normalize:o}=n;return o(["malabono de uzanto"])},confirm_dialogs_block:n=>{const{normalize:o}=n;return o(["blokado de uzanto"])},confirm_dialogs_mute:n=>{const{normalize:o}=n;return o(["silentigo de uzanto"])},confirm_dialogs_approve_follow:n=>{const{normalize:o}=n;return o(["aprobo de abonanto"])},confirm_dialogs_deny_follow:n=>{const{normalize:o}=n;return o(["malaprobo de abonanto"])},confirm_dialogs_remove_follower:n=>{const{normalize:o}=n;return o(["forigo de abonanto"])},tree_fade_ancestors:n=>{const{normalize:o}=n;return o(["Montri responditojn de la nuna afiŝo per teksto malvigla"])}},timeline:{collapse:n=>{const{normalize:o}=n;return o(["Maletendi"])},conversation:n=>{const{normalize:o}=n;return o(["Interparolo"])},error_fetching:n=>{const{normalize:o}=n;return o(["Eraris ĝisdatigo"])},load_older:n=>{const{normalize:o}=n;return o(["Montri pli malnovajn afiŝojn"])},no_retweet_hint:n=>{const{normalize:o}=n;return o(["Afiŝo estas markita kiel rekta aŭ nur por abonantoj, kaj ne eblas ĝin ripeti"])},repeated:n=>{const{normalize:o}=n;return o(["ripetis"])},show_new:n=>{const{normalize:o}=n;return o(["Montri novajn"])},up_to_date:n=>{const{normalize:o}=n;return o(["Ĝisdata"])},no_more_statuses:n=>{const{normalize:o}=n;return o(["Neniuj pliaj afiŝoj"])},no_statuses:n=>{const{normalize:o}=n;return o(["Neniuj afiŝoj"])},reload:n=>{const{normalize:o}=n;return o(["Enlegi ree"])},error:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Eraris akirado de historio: ",e(r(0))])},socket_reconnected:n=>{const{normalize:o}=n;return o(["Realtempa konekto fariĝis"])},socket_broke:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Realtempa konekto perdiĝis: CloseEvent code ",e(r(0))])}},user_card:{approve:n=>{const{normalize:o}=n;return o(["Aprobi"])},block:n=>{const{normalize:o}=n;return o(["Bloki"])},blocked:n=>{const{normalize:o}=n;return o(["Blokita!"])},deny:n=>{const{normalize:o}=n;return o(["Rifuzi"])},favorites:n=>{const{normalize:o}=n;return o(["Ŝatataj"])},follow:n=>{const{normalize:o}=n;return o(["Aboni"])},follow_sent:n=>{const{normalize:o}=n;return o(["Peto sendiĝis!"])},follow_progress:n=>{const{normalize:o}=n;return o(["Petante…"])},follow_unfollow:n=>{const{normalize:o}=n;return o(["Malaboni"])},followees:n=>{const{normalize:o}=n;return o(["Abonatoj"])},followers:n=>{const{normalize:o}=n;return o(["Abonantoj"])},following:n=>{const{normalize:o}=n;return o(["Abonata!"])},follows_you:n=>{const{normalize:o}=n;return o(["Abonas vin!"])},its_you:n=>{const{normalize:o}=n;return o(["Tio estas vi!"])},media:n=>{const{normalize:o}=n;return o(["Vidaŭdaĵoj"])},mute:n=>{const{normalize:o}=n;return o(["Silentigi"])},muted:n=>{const{normalize:o}=n;return o(["Silentigita"])},per_day:n=>{const{normalize:o}=n;return o(["tage"])},remote_follow:n=>{const{normalize:o}=n;return o(["Fore aboni"])},statuses:n=>{const{normalize:o}=n;return o(["Afiŝoj"])},unblock:n=>{const{normalize:o}=n;return o(["Malbloki"])},unblock_progress:n=>{const{normalize:o}=n;return o(["Malblokante…"])},block_progress:n=>{const{normalize:o}=n;return o(["Blokante…"])},unmute:n=>{const{normalize:o}=n;return o(["Malsilentigi"])},unmute_progress:n=>{const{normalize:o}=n;return o(["Malsilentigante…"])},mute_progress:n=>{const{normalize:o}=n;return o(["Silentigante…"])},report:n=>{const{normalize:o}=n;return o(["Raporti"])},message:n=>{const{normalize:o}=n;return o(["Mesaĝo"])},mention:n=>{const{normalize:o}=n;return o(["Mencio"])},hidden:n=>{const{normalize:o}=n;return o(["Kaŝita"])},admin_menu:{delete_user:n=>{const{normalize:o}=n;return o(["Forigi uzanton"])},quarantine:n=>{const{normalize:o}=n;return o(["Malpermesi federadon de afiŝoj de uzanto"])},disable_any_subscription:n=>{const{normalize:o}=n;return o(["Malpermesi ĉian abonadon al uzanto"])},disable_remote_subscription:n=>{const{normalize:o}=n;return o(["Malpermesi abonadon al uzanto el foraj nodoj"])},sandbox:n=>{const{normalize:o}=n;return o(["Devigi afiŝojn esti nur por abonantoj"])},force_unlisted:n=>{const{normalize:o}=n;return o(["Devigi afiŝojn nelistiĝi"])},strip_media:n=>{const{normalize:o}=n;return o(["Forigi vidaŭdaĵojn de afiŝoj"])},force_nsfw:n=>{const{normalize:o}=n;return o(["Marki ĉiujn afiŝojn konsternaj"])},delete_account:n=>{const{normalize:o}=n;return o(["Forigi konton"])},deactivate_account:n=>{const{normalize:o}=n;return o(["Malaktivigi konton"])},activate_account:n=>{const{normalize:o}=n;return o(["Aktivigi konton"])},revoke_moderator:n=>{const{normalize:o}=n;return o(["Malnomumi reguligiston"])},grant_moderator:n=>{const{normalize:o}=n;return o(["Nomumi reguligiston"])},revoke_admin:n=>{const{normalize:o}=n;return o(["Malnomumi administranton"])},grant_admin:n=>{const{normalize:o}=n;return o(["Nomumi administranton"])},moderation:n=>{const{normalize:o}=n;return o(["Reguligado"])},delete_user_data_and_deactivate_confirmation:n=>{const{normalize:o}=n;return o(["Tio ĉi por ĉiam forigos datumojn de tiu ĉi konto, kaj malaktivigos ĝin. Ĉu vi plene certas?"])}},show_repeats:n=>{const{normalize:o}=n;return o(["Montri ripetojn"])},hide_repeats:n=>{const{normalize:o}=n;return o(["Kaŝi ripetojn"])},unsubscribe:n=>{const{normalize:o}=n;return o(["Ne ricevi sciigojn"])},subscribe:n=>{const{normalize:o}=n;return o(["Ricevi sciigojn"])},bot:n=>{const{normalize:o}=n;return o(["Roboto"])},highlight:{side:n=>{const{normalize:o}=n;return o(["Flanka strio"])},striped:n=>{const{normalize:o}=n;return o(["Stria fono"])},solid:n=>{const{normalize:o}=n;return o(["Unueca fono"])},disabled:n=>{const{normalize:o}=n;return o(["Senemfaze"])}},edit_profile:n=>{const{normalize:o}=n;return o(["Redakti profilon"])},deactivated:n=>{const{normalize:o}=n;return o(["Malaktiva"])},follow_cancel:n=>{const{normalize:o}=n;return o(["Nuligi peton"])},remove_follower:n=>{const{normalize:o}=n;return o(["Forigi abonanton"])},note:n=>{const{normalize:o}=n;return o(["Noto"])},note_blank:n=>{const{normalize:o}=n;return o(["(Neniu)"])},edit_note_apply:n=>{const{normalize:o}=n;return o(["Apliki"])},edit_note_cancel:n=>{const{normalize:o}=n;return o(["Nuligi"])},edit_note:n=>{const{normalize:o}=n;return o(["Redakti noton"])},block_confirm:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Ĉu vi certe volas bloki uzanton ",e(r("user")),"?"])},block_confirm_accept_button:n=>{const{normalize:o}=n;return o(["Bloki"])},remove_follower_confirm:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Ĉu vi certe volas forigi uzanton ",e(r("user"))," de viaj abonantoj?"])},approve_confirm_accept_button:n=>{const{normalize:o}=n;return o(["Aprobi"])},approve_confirm_cancel_button:n=>{const{normalize:o}=n;return o(["Ne aprobi"])},approve_confirm:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Ĉu vi certe volas aprobi abonan peton de ",e(r("user")),"?"])},block_confirm_title:n=>{const{normalize:o}=n;return o(["Konfirmo de blokado"])},approve_confirm_title:n=>{const{normalize:o}=n;return o(["Konfirmo de aprobo"])},block_confirm_cancel_button:n=>{const{normalize:o}=n;return o(["Ne bloki"])},deny_confirm_accept_button:n=>{const{normalize:o}=n;return o(["Malaprobi"])},deny_confirm_cancel_button:n=>{const{normalize:o}=n;return o(["Ne malaprobi"])},mute_confirm_title:n=>{const{normalize:o}=n;return o(["Silentigi konfirmon"])},deny_confirm_title:n=>{const{normalize:o}=n;return o(["Konfirmo de malaprobo"])},mute_confirm:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Ĉu vi certe volas silentigi uzanton ",e(r("user")),"?"])},mute_confirm_accept_button:n=>{const{normalize:o}=n;return o(["Silentigi"])},mute_confirm_cancel_button:n=>{const{normalize:o}=n;return o(["Ne silentigi"])},mute_duration_prompt:n=>{const{normalize:o}=n;return o(["Silentigi ĉi tiun uzanton por (0 signifas senliman silentigon):"])},remove_follower_confirm_accept_button:n=>{const{normalize:o}=n;return o(["Forigi"])},remove_follower_confirm_title:n=>{const{normalize:o}=n;return o(["Konfirmo de forigo de abonanto"])},birthday:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Naskita je ",e(r("birthday"))])},deny_confirm:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Ĉu vi certe volas malaprobi abonan peton de ",e(r("user")),"?"])},unfollow_confirm_cancel_button:n=>{const{normalize:o}=n;return o(["Ne malaboni"])},unfollow_confirm_title:n=>{const{normalize:o}=n;return o(["Konfirmo de malabono"])},unfollow_confirm:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Ĉu vi certe volas malaboni uzanton ",e(r("user")),"?"])},unfollow_confirm_accept_button:n=>{const{normalize:o}=n;return o(["Malaboni"])},remove_follower_confirm_cancel_button:n=>{const{normalize:o}=n;return o(["Ne forigi"])}},user_profile:{timeline_title:n=>{const{normalize:o}=n;return o(["Historio de uzanto"])},profile_does_not_exist:n=>{const{normalize:o}=n;return o(["Pardonu, ĉi tiu profilo ne ekzistas."])},profile_loading_error:n=>{const{normalize:o}=n;return o(["Pardonu, eraris enlego de ĉi tiu profilo."])}},who_to_follow:{more:n=>{const{normalize:o}=n;return o(["Pli"])},who_to_follow:n=>{const{normalize:o}=n;return o(["Kiun aboni"])}},tool_tip:{media_upload:n=>{const{normalize:o}=n;return o(["Alŝuti vidaŭdaĵon"])},repeat:n=>{const{normalize:o}=n;return o(["Ripeti"])},reply:n=>{const{normalize:o}=n;return o(["Respondi"])},favorite:n=>{const{normalize:o}=n;return o(["Ŝati"])},user_settings:n=>{const{normalize:o}=n;return o(["Agordoj de uzanto"])},bookmark:n=>{const{normalize:o}=n;return o(["Legosigno"])},reject_follow_request:n=>{const{normalize:o}=n;return o(["Rifuzi abonpeton"])},accept_follow_request:n=>{const{normalize:o}=n;return o(["Akcepti abonpeton"])},add_reaction:n=>{const{normalize:o}=n;return o(["Aldoni reagon"])},toggle_expand:n=>{const{normalize:o}=n;return o(["Etendi aŭ maletendi sciigon por montri plenan afiŝon"])},toggle_mute:n=>{const{normalize:o}=n;return o(["Etendi aŭ maletendi afiŝon por montri silentigitan enhavon"])},autocomplete_available:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o([e(r("number"))," rezulto disponeblas. Uzu la sagajn klavojn supren kaj suben por foliumi ilin."]),o([e(r("number"))," rezulto disponeblas. Uzu la sagajn klavojn supren kaj suben por foliumi ilin."])])}},upload:{error:{base:n=>{const{normalize:o}=n;return o(["Alŝuto malsukcesis."])},file_too_big:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Dosiero estas tro granda [",e(r("filesize")),e(r("filesizeunit"))," / ",e(r("allowedsize")),e(r("allowedsizeunit")),"]"])},default:n=>{const{normalize:o}=n;return o(["Reprovu pli poste"])},message:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Malsukcesis alŝuto: ",e(r(0))])}},file_size_units:{B:n=>{const{normalize:o}=n;return o(["B"])},KiB:n=>{const{normalize:o}=n;return o(["KiB"])},MiB:n=>{const{normalize:o}=n;return o(["MiB"])},GiB:n=>{const{normalize:o}=n;return o(["GiB"])},TiB:n=>{const{normalize:o}=n;return o(["TiB"])}}},emoji:{search_emoji:n=>{const{normalize:o}=n;return o(["Serĉi bildosignon"])},keep_open:n=>{const{normalize:o}=n;return o(["Teni elektilon malfermita"])},emoji:n=>{const{normalize:o}=n;return o(["Bildsignoj"])},stickers:n=>{const{normalize:o}=n;return o(["Glumarkoj"])},add_emoji:n=>{const{normalize:o}=n;return o(["Enigi bildosignon"])},load_all:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Enlegante ĉiujn ",e(r("emojiAmount"))," bildosignojn"])},load_all_hint:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Enlegis la ",e(r("saneAmount"))," unuajn bildosignojn; enlego de ĉiuj povus kaŭzi problemojn pri efikeco."])},unicode:n=>{const{normalize:o}=n;return o(["Unikoda bildosigno"])},custom:n=>{const{normalize:o}=n;return o(["Propra bildosigno"])},unicode_groups:{activities:n=>{const{normalize:o}=n;return o(["Agado"])},"animals-and-nature":n=>{const{normalize:o}=n;return o(["Bestoj kaj naturo"])},flags:n=>{const{normalize:o}=n;return o(["Flagoj"])},"food-and-drink":n=>{const{normalize:o}=n;return o(["Manĝaĵoj kaj trinkaĵoj"])},objects:n=>{const{normalize:o}=n;return o(["Aĵoj"])},"people-and-body":n=>{const{normalize:o}=n;return o(["Homoj kaj korpo"])},"smileys-and-emotion":n=>{const{normalize:o}=n;return o(["Mienbildoj kaj sentoj"])},symbols:n=>{const{normalize:o}=n;return o(["Simboloj"])},"travel-and-places":n=>{const{normalize:o}=n;return o(["Vojaĝoj kaj lokoj"])}},regional_indicator:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Regiona marko ",e(r("letter"))])}},polls:{not_enough_options:n=>{const{normalize:o}=n;return o(["Tro malmultaj unikaj elektebloj en la enketo"])},expired:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Enketo finiĝis antaŭ ",e(r(0))])},expires_in:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Enketo finiĝas je ",e(r(0))])},expiry:n=>{const{normalize:o}=n;return o(["Aĝo de enketo"])},multiple_choices:n=>{const{normalize:o}=n;return o(["Pluraj elektoj"])},single_choice:n=>{const{normalize:o}=n;return o(["Unu elekto"])},type:n=>{const{normalize:o}=n;return o(["Speco de enketo"])},vote:n=>{const{normalize:o}=n;return o(["Voĉi"])},votes:n=>{const{normalize:o}=n;return o(["voĉoj"])},option:n=>{const{normalize:o}=n;return o(["Elekteblo"])},add_option:n=>{const{normalize:o}=n;return o(["Aldoni elekteblon"])},add_poll:n=>{const{normalize:o}=n;return o(["Aldoni enketon"])},votes_count:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o([e(r("count"))," voĉdono"]),o([e(r("count"))," voĉdonoj"])])},people_voted_count:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o([e(r("count"))," persono voĉdonis"]),o([e(r("count"))," personoj voĉdonis"])])}},importer:{error:n=>{const{normalize:o}=n;return o(["Eraris enporto de ĉi tiu dosiero."])},success:n=>{const{normalize:o}=n;return o(["Enportita sukcese."])},submit:n=>{const{normalize:o}=n;return o(["Sendi"])}},exporter:{processing:n=>{const{normalize:o}=n;return o(["Traktante; baldaŭ vi ricevos peton elŝuti vian dosieron"])},export:n=>{const{normalize:o}=n;return o(["Elporti"])}},domain_mute_card:{unmute_progress:n=>{const{normalize:o}=n;return o(["Malsilentigante…"])},unmute:n=>{const{normalize:o}=n;return o(["Malsilentigi"])},mute_progress:n=>{const{normalize:o}=n;return o(["Silentigante…"])},mute:n=>{const{normalize:o}=n;return o(["Silentigi"])}},about:{staff:n=>{const{normalize:o}=n;return o(["Skipo"])},mrf:{simple:{media_nsfw_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo devigas vidaŭdaĵojn esti markitaj kiel konsternaj en afiŝoj el la jenaj nodoj:"])},media_nsfw:n=>{const{normalize:o}=n;return o(["Devige marki vidaŭdaĵojn konsternaj"])},media_removal_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo forigas vidaŭdaĵojn de afiŝoj el la jenaj nodoj:"])},media_removal:n=>{const{normalize:o}=n;return o(["Forigo de vidaŭdaĵoj"])},ftl_removal:n=>{const{normalize:o}=n;return o(["Forigo el la «Federa historio»"])},quarantine_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo sendos nur publikajn afiŝojn al la jenaj nodoj:"])},quarantine:n=>{const{normalize:o}=n;return o(["Kvaranteno"])},reject_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo ne akceptos mesaĝojn de la jenaj nodoj:"])},reject:n=>{const{normalize:o}=n;return o(["Rifuzi"])},accept_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo nur akceptas mesaĝojn de la jenaj nodoj:"])},accept:n=>{const{normalize:o}=n;return o(["Akcepti"])},simple_policies:n=>{const{normalize:o}=n;return o(["Specialaj politikoj de la nodo"])},ftl_removal_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo forigas la jenajn nodojn el la «Federa historio»:"])},instance:n=>{const{normalize:o}=n;return o(["Nodo"])},reason:n=>{const{normalize:o}=n;return o(["Kialo"])}},mrf_policies:n=>{const{normalize:o}=n;return o(["Ŝaltis politikon de Mesaĝa ŝanĝilaro (MRF)"])},keyword:{is_replaced_by:n=>{const{normalize:o}=n;return o(["→"])},replace:n=>{const{normalize:o}=n;return o(["Anstataŭigi"])},reject:n=>{const{normalize:o}=n;return o(["Rifuzi"])},ftl_removal:n=>{const{normalize:o}=n;return o(["Forigo el la historio de la «Federa historio»"])},keyword_policies:n=>{const{normalize:o}=n;return o(["Politiko pri ĉefvortoj"])}},federation:n=>{const{normalize:o}=n;return o(["Federado"])},mrf_policies_desc:n=>{const{normalize:o}=n;return o(["Politikoj de Mesaĝa ŝanĝilaro (MRF) efikas sur federa konduto de la nodo. La sekvaj politikoj estas ŝaltitaj:"])}}},selectable_list:{select_all:n=>{const{normalize:o}=n;return o(["Elekti ĉion"])}},remote_user_resolver:{error:n=>{const{normalize:o}=n;return o(["Netrovinte."])},searching_for:n=>{const{normalize:o}=n;return o(["Serĉante"])},remote_user_resolver:n=>{const{normalize:o}=n;return o(["Trovilo de foraj uzantoj"])}},interactions:{load_older:n=>{const{normalize:o}=n;return o(["Enlegi pli malnovajn interagojn"])},moves:n=>{const{normalize:o}=n;return o(["Migrado de uzantoj"])},follows:n=>{const{normalize:o}=n;return o(["Novaj abonoj"])},favs_repeats:n=>{const{normalize:o}=n;return o(["Ripetoj kaj ŝatoj"])},emoji_reactions:n=>{const{normalize:o}=n;return o(["Bildosignaj reagoj"])},reports:n=>{const{normalize:o}=n;return o(["Raportoj"])}},errors:{storage_unavailable:n=>{const{normalize:o}=n;return o(["Pleroma ne povis aliri deponejon de la foliumilo. Via saluto kaj viaj lokaj agordoj ne estos konservitaj, kaj vi eble renkontos neatenditajn problemojn. Provu permesi kuketojn."])}},status:{hide_content:n=>{const{normalize:o}=n;return o(["Kaŝi enhavon"])},show_content:n=>{const{normalize:o}=n;return o(["Montri enhavon"])},hide_full_subject:n=>{const{normalize:o}=n;return o(["Kaŝi plenan temon"])},show_full_subject:n=>{const{normalize:o}=n;return o(["Montri plenan temon"])},thread_muted_and_words:n=>{const{normalize:o}=n;return o([", enhavas vortojn:"])},thread_muted:n=>{const{normalize:o}=n;return o(["Fadeno silentigita"])},copy_link:n=>{const{normalize:o}=n;return o(["Kopii ligilon al afiŝo"])},status_unavailable:n=>{const{normalize:o}=n;return o(["Afiŝo ne estas disponebla"])},unmute_conversation:n=>{const{normalize:o}=n;return o(["Malsilentigi interparolon"])},mute_conversation:n=>{const{normalize:o}=n;return o(["Silentigi interparolon"])},replies_list:n=>{const{normalize:o}=n;return o(["Respondoj:"])},reply_to:n=>{const{normalize:o}=n;return o(["Responde al"])},delete_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas forigi ĉi tiun afiŝon?"])},unbookmark:n=>{const{normalize:o}=n;return o(["Senlegosigni"])},bookmark:n=>{const{normalize:o}=n;return o(["Legosigni"])},pinned:n=>{const{normalize:o}=n;return o(["Fiksita"])},unpin:n=>{const{normalize:o}=n;return o(["Malfiksi de profilo"])},pin:n=>{const{normalize:o}=n;return o(["Fiksi al profilo"])},delete:n=>{const{normalize:o}=n;return o(["Forigi afiŝon"])},repeats:n=>{const{normalize:o}=n;return o(["Ripetoj"])},favorites:n=>{const{normalize:o}=n;return o(["Ŝatoj"])},status_deleted:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo foriĝis"])},nsfw:n=>{const{normalize:o}=n;return o(["Konsterna"])},expand:n=>{const{normalize:o}=n;return o(["Etendi"])},external_source:n=>{const{normalize:o}=n;return o(["Ekstera fonto"])},mentions:n=>{const{normalize:o}=n;return o(["Mencioj"])},you:n=>{const{normalize:o}=n;return o(["(Vi)"])},plus_more:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["+",e(r("number"))," pli"])},show_all_attachments:n=>{const{normalize:o}=n;return o(["Montri ĉiujn kunsendaĵojn"])},collapse_attachments:n=>{const{normalize:o}=n;return o(["Kaŝi iujn kunsendaĵojn"])},many_attachments:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Afiŝo havas ",e(r("number"))," kunsendaĵo(j)n"])},show_attachment_in_modal:n=>{const{normalize:o}=n;return o(["Montri en vidilo de vidaŭdaĵoj"])},edit:n=>{const{normalize:o}=n;return o(["Redakti afiŝon"])},replies_list_with_others:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o(["Respondoj (+",e(r("numReplies"))," alia):"]),o(["Respondoj (+",e(r("numReplies"))," aliaj):"])])},thread_show:n=>{const{normalize:o}=n;return o(["Malkaŝi ĉi tiun fadenon"])},thread_show_full:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o(["Montri ĉion en ĉi tiu fadeno (",e(r("numStatus"))," afiŝon sume, maksimume en profundeco ",e(r("depth")),")"]),o(["Montri ĉion en ĉi tiu fadeno (",e(r("numStatus"))," afiŝojn sume, maksimume en profundeco ",e(r("depth")),")"])])},show_all_conversation:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o(["Montri plenan interparolon (",e(r("numStatus"))," alian afiŝon)"]),o(["Montri plenan interparolon (",e(r("numStatus"))," aliajn afiŝojn)"])])},edited_at:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["(lastafoje redaktita je ",e(r("time")),")"])},remove_attachment:n=>{const{normalize:o}=n;return o(["Forigi kunsendaĵon"])},show_attachment_description:n=>{const{normalize:o}=n;return o(["Antaŭvidi priskribon (malfermu kunsendaĵon por vidi plenan priskribon)"])},hide_attachment:n=>{const{normalize:o}=n;return o(["Kaŝi kunsendaĵon"])},attachment_stop_flash:n=>{const{normalize:o}=n;return o(["Ĉesigi ludilon de [Flash]"])},move_up:n=>{const{normalize:o}=n;return o(["Ŝovi kunsendaĵon antaŭen"])},move_down:n=>{const{normalize:o}=n;return o(["Ŝovi kunsendaĵon posten"])},thread_hide:n=>{const{normalize:o}=n;return o(["Kaŝi ĉi tiun fadenon"])},thread_show_full_with_icon:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("icon"))," ",e(r("text"))])},thread_follow:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o(["Montri ceteron de ĉi tiu fadeno (",e(r("numStatus"))," afiŝon sume)"]),o(["Montri ceteron de ĉi tiu fadeno (",e(r("numStatus"))," afiŝojn sume)"])])},thread_follow_with_icon:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("icon"))," ",e(r("text"))])},ancestor_follow:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o(["Vidi ",e(r("numReplies"))," alian respondon sub ĉi tiu afiŝo"]),o(["Vidi ",e(r("numReplies"))," aliajn respondojn sub ĉi tiu afiŝo"])])},ancestor_follow_with_icon:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("icon"))," ",e(r("text"))])},show_all_conversation_with_icon:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("icon"))," ",e(r("text"))])},show_only_conversation_under_this:n=>{const{normalize:o}=n;return o(["Montri nur respondojn al ĉi tiu afiŝo"])},status_history:n=>{const{normalize:o}=n;return o(["Historio de afiŝo"])},open_gallery:n=>{const{normalize:o}=n;return o(["Malfermi galerion"])},delete_confirm_title:n=>{const{normalize:o}=n;return o(["Konfirmo de forigo"])},delete_confirm_accept_button:n=>{const{normalize:o}=n;return o(["Forigi"])},repeat_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas ripeti ĉi tiun afiŝon?"])},repeat_confirm_title:n=>{const{normalize:o}=n;return o(["Konfirmo de ripeto"])},repeat_confirm_accept_button:n=>{const{normalize:o}=n;return o(["Ripeti"])},repeat_confirm_cancel_button:n=>{const{normalize:o}=n;return o(["Ne ripeti"])},delete_confirm_cancel_button:n=>{const{normalize:o}=n;return o(["Ne forigi"])}},time:{years_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"j"])},year_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"j"])},years:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," jaroj"])},year:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," jaro"])},weeks_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"s"])},week_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"s"])},weeks:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," semajnoj"])},week:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," semajno"])},seconds_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"sek"])},second_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"sek"])},seconds:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," sekundoj"])},second:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," sekundo"])},now_short:n=>{const{normalize:o}=n;return o(["nun"])},now:n=>{const{normalize:o}=n;return o(["ĵus"])},months_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"m"])},month_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"m"])},months:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," monatoj"])},month:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," monato"])},minutes_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"min"])},minute_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"min"])},minutes:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," minutoj"])},minute:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," minuto"])},in_past:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["antaŭ ",e(r(0))])},in_future:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["post ",e(r(0))])},hours_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"hor"])},hour_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"hor"])},hours:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," horoj"])},hour:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," horo"])},days_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"t"])},day_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"t"])},days:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," tagoj"])},day:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," tago"])},unit:{days:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," tago"]),o([e(r(0))," tagoj"])])},minutes:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," minuto"]),o([e(r(0))," minutoj"])])},days_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"t"])},hours:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," horo"]),o([e(r(0))," horoj"])])},hours_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"h"])},minutes_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"min"])},months:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," monato"]),o([e(r(0))," monatoj"])])},months_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"mo"])},seconds:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," sekundo"]),o([e(r(0))," sekundoj"])])},seconds_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"sek"])},weeks:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," semajno"]),o([e(r(0))," semajnoj"])])},weeks_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"sem"])},years:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," jaro"]),o([e(r(0))," jaroj"])])},years_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"j"])}}},search:{people:n=>{const{normalize:o}=n;return o(["Personoj"])},no_results:n=>{const{normalize:o}=n;return o(["Neniuj rezultoj"])},people_talking:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("count"))," personoj parolas"])},person_talking:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("count"))," persono parolas"])},hashtags:n=>{const{normalize:o}=n;return o(["Kradvortoj"])},no_more_results:n=>{const{normalize:o}=n;return o(["Neniuj pliaj rezultoj"])},load_more:n=>{const{normalize:o}=n;return o(["Enlegi pliajn rezultojn"])}},display_date:{today:n=>{const{normalize:o}=n;return o(["Hodiaŭ"])}},file_type:{file:n=>{const{normalize:o}=n;return o(["Dosiero"])},image:n=>{const{normalize:o}=n;return o(["Bildo"])},video:n=>{const{normalize:o}=n;return o(["Filmo"])},audio:n=>{const{normalize:o}=n;return o(["Sono"])}},chats:{empty_chat_list_placeholder:n=>{const{normalize:o}=n;return o(["Vi ankoraŭ havas neniun babilon. Komencu novan babilon!"])},error_sending_message:n=>{const{normalize:o}=n;return o(["Io misokazis dum sendado de la mesaĝo."])},error_loading_chat:n=>{const{normalize:o}=n;return o(["Io misokazis dum enlego de la babilo."])},delete_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas forigi ĉi tiun mesaĝon?"])},more:n=>{const{normalize:o}=n;return o(["Pli"])},empty_message_error:n=>{const{normalize:o}=n;return o(["Ne povas sendi malplenan mesaĝon"])},new:n=>{const{normalize:o}=n;return o(["Nova babilo"])},chats:n=>{const{normalize:o}=n;return o(["Babiloj"])},delete:n=>{const{normalize:o}=n;return o(["Forigi"])},you:n=>{const{normalize:o}=n;return o(["Vi:"])},message_user:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Mesaĝi al ",e(r("nickname"))])}},password_reset:{password_reset_required_but_mailer_is_disabled:n=>{const{normalize:o}=n;return o(["Vi devas restarigi vian pasvorton, sed restarigado de pasvortoj estas malŝaltita. Bonvolu kontakti la administranton de via nodo."])},password_reset_required:n=>{const{normalize:o}=n;return o(["Vi devas restarigi vian pasvorton por saluti."])},password_reset_disabled:n=>{const{normalize:o}=n;return o(["Restarigado de pasvortoj estas malŝaltita. Bonvolu kontakti la administranton de via nodo."])},too_many_requests:n=>{const{normalize:o}=n;return o(["Vi atingis la limon de provoj, reprovu pli poste."])},return_home:n=>{const{normalize:o}=n;return o(["Reiri al la hejmpaĝo"])},check_email:n=>{const{normalize:o}=n;return o(["Kontrolu vian retpoŝton pro ligilo por restarigi vian pasvorton."])},placeholder:n=>{const{normalize:o}=n;return o(["Via retpoŝtadreso aŭ uzantonomo"])},instruction:n=>{const{normalize:o}=n;return o(["Enigu vian retpoŝtadreson aŭ uzantonomon. Ni sendos al vi ligilon por restarigi vian pasvorton."])},password_reset:n=>{const{normalize:o}=n;return o(["Restarigi pasvorton"])},forgot_password:n=>{const{normalize:o}=n;return o(["Ĉu vi forgesis pasvorton?"])}},user_reporting:{generic_error:n=>{const{normalize:o}=n;return o(["Eraris traktado de via peto."])},submit:n=>{const{normalize:o}=n;return o(["Sendi"])},forward_to:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Plusendi al ",e(r(0))])},forward_description:n=>{const{normalize:o}=n;return o(["La konto venas de alia servilo. Ĉu kopio de la raporto sendiĝu ankaŭ tien?"])},additional_comments:n=>{const{normalize:o}=n;return o(["Aldonaj komentoj"])},add_comment_description:n=>{const{normalize:o}=n;return o(["Ĉi tiu raporto sendiĝos al reguligistoj de via nodo. Vi povas komprenigi kial vi raportas ĉi tiun konton sube:"])},title:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Raportante ",e(r(0))])}},shoutbox:{title:n=>{const{normalize:o}=n;return o(["Kriujo"])}},report:{reporter:n=>{const{normalize:o}=n;return o(["Raportinto:"])},reported_user:n=>{const{normalize:o}=n;return o(["Raportito:"])},reported_statuses:n=>{const{normalize:o}=n;return o(["Raportitaj afiŝoj:"])},notes:n=>{const{normalize:o}=n;return o(["Notoj:"])},state:n=>{const{normalize:o}=n;return o(["Afiŝo:"])},state_open:n=>{const{normalize:o}=n;return o(["Malfermita"])},state_closed:n=>{const{normalize:o}=n;return o(["Fermita"])},state_resolved:n=>{const{normalize:o}=n;return o(["Solvita"])}},lists:{editing_list:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Redaktado de listo ",e(r("listTitle"))])},lists:n=>{const{normalize:o}=n;return o(["Listoj"])},new:n=>{const{normalize:o}=n;return o(["Nova listo"])},title:n=>{const{normalize:o}=n;return o(["Nomo de listo"])},search:n=>{const{normalize:o}=n;return o(["Serĉi uzantojn"])},create:n=>{const{normalize:o}=n;return o(["Krei"])},save:n=>{const{normalize:o}=n;return o(["Konservi ŝanĝojn"])},delete:n=>{const{normalize:o}=n;return o(["Forigi liston"])},following_only:n=>{const{normalize:o}=n;return o(["Limigi al abonatoj"])},manage_lists:n=>{const{normalize:o}=n;return o(["Mastrumi listojn"])},manage_members:n=>{const{normalize:o}=n;return o(["Mastrumi listanojn"])},add_members:n=>{const{normalize:o}=n;return o(["Serĉi pliajn uzantojn"])},remove_from_list:n=>{const{normalize:o}=n;return o(["Forigi de listo"])},add_to_list:n=>{const{normalize:o}=n;return o(["Aldoni al listo"])},is_in_list:n=>{const{normalize:o}=n;return o(["Jam en listo"])},creating_list:n=>{const{normalize:o}=n;return o(["Kreado de nova listo"])},update_title:n=>{const{normalize:o}=n;return o(["Konservi nomon"])},really_delete:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas forigi la liston?"])},error:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Eraris umado je listoj: ",e(r(0))])}},update:{big_update_content:n=>{const{normalize:o}=n;return o(["Ni longe ne eldonis novan version, kaj tial aferoj eble aspektos iom malsame, ol antaŭe."])},update_bugs:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Bonvolu raporti problemojn kaj erarojn ĉe ",e(r("pleromaGitlab")),", ĉar ni ŝanĝis multon, kaj kvankam ni zorge testas kaj mem uzas la prilaboratajn versiojn, ni tamen povas preteratenti ion. Ni bonvenigas viajn rimarkojn kaj proponojn pri renkontitaj eraroj aŭ proponoj plibonigi Pleromon."])},big_update_title:n=>{const{normalize:o}=n;return o(["Bonvolu pacienci"])},update_bugs_gitlab:n=>{const{normalize:o}=n;return o(["GitLab de Pleroma"])},update_changelog:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Por legi detalojn pri ŝanĝoj, vidu ",e(r("theFullChangelog")),"."])},update_changelog_here:n=>{const{normalize:o}=n;return o(["la plenan ŝanĝaron"])},art_by:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Arto de ",e(r("linkToArtist"))])}},unicode_domain_indicator:{tooltip:n=>{const{normalize:o}=n;return o(["Ĉi tiu retnomo enhavas signojn ekster ASCII."])}},announcements:{all_day_prompt:n=>{const{normalize:o}=n;return o(["Ĉi tio estas tuttaga okazo"])},page_header:n=>{const{normalize:o}=n;return o(["Anoncoj"])},title:n=>{const{normalize:o}=n;return o(["Anonco"])},mark_as_read_action:n=>{const{normalize:o}=n;return o(["Marki legita"])},post_placeholder:n=>{const{normalize:o}=n;return o(["Entajpu vian anoncon tie ĉi…"])},post_action:n=>{const{normalize:o}=n;return o(["Afiŝi"])},post_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraro: ",e(r("error"))])},close_error:n=>{const{normalize:o}=n;return o(["Fermi"])},delete_action:n=>{const{normalize:o}=n;return o(["Forigi"])},start_time_prompt:n=>{const{normalize:o}=n;return o(["Komenca tempo: "])},end_time_prompt:n=>{const{normalize:o}=n;return o(["Fina tempo: "])},published_time_display:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Publikigita je ",e(r("time"))])},start_time_display:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Komenciĝas je ",e(r("time"))])},end_time_display:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Finiĝas je ",e(r("time"))])},edit_action:n=>{const{normalize:o}=n;return o(["Redakti"])},submit_edit_action:n=>{const{normalize:o}=n;return o(["Afiŝi"])},cancel_edit_action:n=>{const{normalize:o}=n;return o(["Nuligi"])},inactive_message:n=>{const{normalize:o}=n;return o(["Ĉi tiu anonco estas neaktiva"])},post_form_header:n=>{const{normalize:o}=n;return o(["Afiŝi anoncon"])}}}}}]); +//# sourceMappingURL=eo-json.6c62eef99e850912498b.js.map +\ No newline at end of file diff --git a/priv/static/static/js/i18n/eo-json.6c62eef99e850912498b.js.map b/priv/static/static/js/i18n/eo-json.6c62eef99e850912498b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/i18n/eo-json.6c62eef99e850912498b.js","mappings":"uIAAA,SACE,KAAQ,CACN,MAAUA,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,GAEzF,eAAkB,CAChB,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACtF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACxG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC1G,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAClG,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACvF,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACjG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAClH,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACrG,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,GAEvF,OAAU,CACR,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EACrH,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,GAElG,QAAW,CACT,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACrF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EACjF,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACnG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC1F,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACpF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACxF,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACzF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACrF,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACzF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACxF,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAClG,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAC/F,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACtF,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACpG,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC3F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EACzF,KAAQ,CACN,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC9F,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,GAE9F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mFAAkF,EACtK,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sFAAqF,EAC1K,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kEAAiE,EAClJ,kBAAqB,CACnB,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACvF,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC9F,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACvF,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,GAE/F,sBAA0BF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,WAAYE,EAAaE,EAAM,KAAI,EACvK,iBAAqBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACzG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACrF,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EAChF,GAAOF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,MAAK,EAC9E,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACvF,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EAClF,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,GAEtG,cAAiB,CACf,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAClG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACtF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,GAErH,MAAS,CACP,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrF,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACrG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC1F,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC9F,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC5F,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC5F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uCAAsC,EACjH,QAAW,CACT,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EAC9G,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,GAElG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAClG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qCAAoC,EAChI,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAChH,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EAC7G,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAChH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACjH,6BAAiCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC5G,6BAAiCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,GAEjH,YAAe,CACb,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACxF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACnF,QAAYF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAACE,EAAaI,EAAO,YAAa,MAAOJ,EAAaI,EAAO,WAAU,EAC9L,KAASR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,GAE3G,IAAO,CACL,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EACnF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAClF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC3F,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACxG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACzF,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAC3F,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAChG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC1F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAC7F,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACnG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACjG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC5F,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACtF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACrF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC/F,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACpG,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC7F,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC5F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACrG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAC5G,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrF,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC9G,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAClG,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uCAAsC,EACjI,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAClH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC9F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACpG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2CAA0C,GAEjI,cAAiB,CACf,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EACtH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACxG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAClG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EACjH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC9F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACrF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACzG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EACnH,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,cAAeE,EAAaE,EAAM,KAAI,EACjK,YAAgBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC9F,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACvG,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,8BAA+BE,EAAaE,EAAM,KAAI,EAC1K,iBAAqBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACzG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,GAEpG,YAAe,CACb,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACzF,2BAA+BF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,sBAAuBE,EAAaE,EAAM,IAAK,wEAAuE,EAC/P,gCAAoCN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAChH,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EAC5H,aAAgB,CACd,aAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAChG,cAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC3F,gBAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC/F,YAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,GAEzF,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACxG,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EAC1G,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8DAA6D,EAClJ,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACzF,MAAS,CACP,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0CAAyC,EACtH,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0CAAyC,EACvH,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,EACrH,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gDAA+C,GAEhI,aAAgB,CACd,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oEAAmE,EAClJ,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oDAAmD,EACjI,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sCAAqC,GAEpH,wBAA4BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4CAA2C,EACzI,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+CAA8C,EACvI,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC/F,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAC7F,6BAAiCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mFAAkF,EACrL,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yDAAwD,EACpJ,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EACjH,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACnF,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sGAAqG,EAC/L,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yDAAwD,EACvJ,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACnG,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAC9G,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,GAEpH,aAAgB,CACd,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EACtF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC5F,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC/F,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC9G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAChG,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC1F,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAChG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0CAAyC,EAC3H,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EACvG,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EAC/G,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0HAAyH,EAC/M,YAAe,CACb,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAClH,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAClH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAC/G,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAClH,+BAAmCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAC/H,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACtH,iBAAqBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,sBAAuBE,EAAaI,EAAO,UAAS,EACrL,kBAAsBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,GAEpH,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kGAAiG,EAC1L,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EAChG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC5F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACrG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAChH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4DAA2D,EAChJ,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC7F,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,GAEnH,SAAY,CACV,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EAClG,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EACrG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAChG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC3F,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC/G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAClG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EACxF,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EACtF,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC5F,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC1F,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EACrG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACjG,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC9F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC3F,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACxG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EAC5H,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EACpH,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EACrH,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC1F,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EACtH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC5G,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACvG,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EACxH,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EAC5H,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mCAAkC,EACpH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACrG,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+DAA8D,EAC/J,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uGAAsG,EACjM,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8DAA6D,EAC/J,wBAA4BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0EAAyE,EACvK,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC3G,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC3F,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kEAAiE,EAC7J,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACxG,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wCAAuC,EAClI,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yDAAwD,EACvJ,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACxG,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EACrH,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oDAAmD,EAC1I,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC3F,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACzF,0BAA8BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qCAAoC,EACpI,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EAC9H,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,EAC7H,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EAC7G,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC5G,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uDAAsD,EAC/I,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sDAAqD,EAC3I,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2DAA0D,EAChJ,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EAC7H,iCAAqCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EACxI,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC1G,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAClG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EACnG,iBAAqBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,eAAgBE,EAAaI,EAAO,UAAW,KAAI,EACpL,wBAA4BR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC5G,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACzF,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EAC3G,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+FAA8F,EAC3L,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EACxH,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACtF,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iDAAgD,EAC/I,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACpG,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iEAAgE,EAC7J,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC7F,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EAC1H,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wCAAuC,EAC7H,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAClF,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACpG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACnG,wBAA4BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EAC5H,gCAAoCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC/G,8BAAkCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EAC5G,iCAAqCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACjH,gCAAoCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAChH,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6CAA4C,EAC3I,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAClG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACnG,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAC1H,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAC5H,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sDAAqD,EAC5I,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oDAAmD,EAC9I,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4FAA2F,EACnL,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACpG,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EACnF,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACrG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC/F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EACjG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC3F,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sDAAqD,EAC9I,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAC7F,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAC3G,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC1G,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC5F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+CAA8C,EAC/H,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EACnH,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EACrH,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iDAAgD,EACjJ,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EAC3H,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EAChH,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACtG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC9F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+DAA8D,EAC/I,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACjH,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EACjI,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oCAAmC,EAChI,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACzF,0BAA8BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EAC7H,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EACzH,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACrH,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EAC5H,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACnG,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAC1H,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sCAAqC,EACrH,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4EAA2E,EAC3J,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACpF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACpF,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yEAAwE,EACzJ,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oKAAmK,EACzP,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uMAAsM,EAC5R,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC5G,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACpG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACxG,OAAU,CACR,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,MAAK,EACjF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,GAEnF,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC9F,8BAAkCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EACrI,MAAS,CACP,SAAY,CACV,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACrG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACtG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EAC/G,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACzG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACrG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gOAA+N,EACpT,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EACxF,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC9F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAC9G,KAAQ,CACN,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EACrH,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4EAA2E,EAC7J,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0EAAyE,EACtK,wBAA4BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uEAAsE,EACpK,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uJAAsJ,EACxO,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uFAAsF,EAC7K,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kGAAiG,EACxL,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wIAAuI,EAC9N,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8MAA6M,EAC5S,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uEAAsE,EACnK,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4FAA2F,GAEzL,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC/F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACpG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACjG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,GAEnG,OAAU,CACR,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrF,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAChG,SAAY,CACV,KAASF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,gCAAiCE,EAAaI,EAAO,UAAW,QAASJ,EAAaI,EAAO,UAAW,IAAKJ,EAAaI,EAAO,aAAY,EAClQ,MAAS,CACP,GAAOR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gDAA+C,EACxH,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oDAAmD,EAC7H,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,GAEpH,QAAW,CACT,OAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACvG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,KAI9F,cAAiB,CACf,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC3F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAC7F,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qDAAoD,EAC1I,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mCAAkC,GAE/G,gBAAmB,CACjB,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC7F,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAC7F,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EAC1F,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAC9F,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAClG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACnG,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC5F,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACtF,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACxF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC7F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACnG,KAAQ,CACN,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EACpF,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACxF,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,GAE3F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACtF,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC5F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACtG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACpG,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACxF,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACjG,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAC3F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAC7F,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC3F,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EAClG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EAC1G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC/F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC7F,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACxF,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,GAE7F,MAAS,CACP,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,GAE7F,QAAW,CACT,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAClG,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EACtF,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC3F,UAAcF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,UAAWE,EAAaI,EAAO,WAAU,EACnK,KAASR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACxF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACvF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EACxF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mKAAkK,EAC7O,YAAe,CACb,mBAAuBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,kCAAmCE,EAAaE,EAAM,IAAK,qCAAoC,EAChO,mBAAuBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,2BAA4BF,EAAaE,EAAM,IAAK,kBAAmBF,EAAaE,EAAM,IAAK,KAAI,EAC5P,aAAiBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sJAAqJ,EACxO,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4DAA2D,EAC7I,cAAkBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,wBAAyBE,EAAaE,EAAM,KAAI,GAE9K,WAAc,CACZ,MAAUN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACpF,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAClG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC3F,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2CAA0C,EACvH,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,EAC3H,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EACxF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACtG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACvG,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EACvH,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,GAE5F,OAAWF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,2DAA4DE,EAAaE,EAAM,IAAK,KAAI,GAE/M,MAAS,CACP,WAAeN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC3F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4IAA2I,EACtN,WAAc,CACZ,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACzF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC5F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAC7F,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,GAEzH,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAC9F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAClG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAC9F,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,GAExF,QAAW,CACT,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAC5F,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACvF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAC7F,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,KAASF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,kBAAmBE,EAAaE,EAAM,IAAK,QAASF,EAAaE,EAAM,KAAI,EAC9L,KAASN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACpF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACxG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACpG,WAAeF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,aAAcE,EAAaE,EAAM,IAAK,8BAA6B,EAC5L,aAAiBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACvG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oCAAmC,EAClH,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,IAGjG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mEAAkE,EACrJ,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAChH,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAC1G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mCAAkC,EACtH,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sCAAqC,EAC9H,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC1G,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACtG,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sDAAqD,EAC3I,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EACtH,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACzG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACzG,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0CAAyC,EACnI,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sDAAqD,EAChJ,IAAO,CACL,OAAU,CACR,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0FAAyF,GAEtK,KAAQ,CACN,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC5F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+GAA8G,EACzL,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,GAEtF,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EACtH,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gMAA+L,EAC5R,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EAC9H,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACtG,8BAAkCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0EAAyE,EAC7K,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EAClI,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACjG,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EAChF,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC9G,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC7F,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,GAEpH,kCAAsCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oDAAmD,EAC3J,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC1F,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EAClF,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EAC3H,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2DAA0D,EACvJ,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,EAC9H,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC3F,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,EACvI,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4CAA2C,EACtI,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gDAA+C,EAC1I,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EAC3H,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EAC5H,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC5G,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iDAAgD,EAC1I,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EACxH,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EAC3H,8BAAkCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uDAAsD,EAC1J,iCAAqCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EACxI,+BAAmCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EACnI,wCAA4CF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACvH,8BAAkCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC7G,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACrG,eAAkB,CAChB,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACrF,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAChG,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,GAEtG,8BAAkCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oCAAmC,EACvI,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wCAAuC,EAC9H,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4CAA2C,EAC7I,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qDAAoD,EACpI,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC9F,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kEAAiE,EAC3J,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8DAA6D,EACtJ,gDAAoDF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wDAAuD,EAC7K,6BAAiCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC/G,0CAA8CF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iDAAgD,EAChK,6BAAiCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC/G,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC9F,QAAW,CACT,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EAC1G,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC5G,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,GAEvF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oCAAmC,EAC3H,6BAAiCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sCAAqC,EACxI,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wDAAuD,EAC5I,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACvH,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC1G,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4CAA2C,EACpI,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC1G,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC9G,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mCAAkC,EACxH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACpG,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sCAAqC,EAChI,iCAAqCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uCAAsC,EAC7I,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EACxH,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qCAAoC,EAC9H,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAChG,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACjI,mBAAsB,CACpB,OAAU,CACR,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8DAA6D,EACrJ,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,2BAA4BE,EAAaI,EAAO,cAAe,yEAA0EJ,EAAaI,EAAO,YAAa,KAAI,EAC3S,aAAiBR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,2BAA4BE,EAAaI,EAAO,cAAe,yCAA0CJ,EAAaI,EAAO,YAAa,0BAAyB,EAChS,aAAiBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0FAAyF,GAE9K,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EACpH,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2CAA0C,EACtI,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACrH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,GAE7G,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EACpH,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EAC9F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC3G,wBAA4BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gDAA+C,EAC7I,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EACpH,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oCAAmC,EAC5H,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EACrH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACzG,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0IAAyI,EAC1O,mBAAuBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,gCAAiCE,EAAaI,EAAO,WAAU,EAClM,mBAAuBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kHAAiH,EAC1M,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iDAAgD,EAC5I,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrF,8BAAkCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EACpI,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EACrH,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sDAAqD,EAClJ,kCAAsCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACrH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gDAA+C,EACpI,qCAAyCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oCAAqC,IAAK,OAAQ,IAAK,iBAAgB,EAClL,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACvG,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gGAA+F,EACzL,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACzG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACtG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6CAA4C,EACjI,0BAA8BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC3G,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC/F,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EACxH,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC7F,mBAAuBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,yCAA0CE,EAAaI,EAAO,WAAU,EAC3M,WAAeR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EACxG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAC9G,iBAAqBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,mCAAoCE,EAAaI,EAAO,WAAU,EACnM,cAAkBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACzG,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC1G,+BAAmCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EAC7G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAC9G,iBAAqBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,gCAAiCE,EAAaI,EAAO,YAAa,KAAI,EACvM,YAAgBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAC7G,gBAAoBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,8BAA+BE,EAAaI,EAAO,WAAU,EAC7L,aAAiBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EACjG,oBAAwBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,sBAAuBE,EAAaI,EAAO,YAAa,KAAI,EAChM,cAAkBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACrG,mBAAuBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,2BAA4BE,EAAaI,EAAO,WAAU,EAC7L,WAAeR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACjG,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EACpH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACpH,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qCAAoC,EAC9H,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iCAAgC,EACjI,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+BAA8B,EACvH,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAClG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC1G,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wDAAuD,EACxJ,0BAA8BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC7G,gCAAoCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAClH,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2CAA0C,EAChI,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EAC5H,gCAAoCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC3H,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACzF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC1G,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAC1G,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACpG,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACpG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iDAAgD,EACpI,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAChH,kCAAsCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2CAA0C,EAClJ,wCAA4CF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC3H,yCAA6CF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC3H,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6DAA4D,EACtJ,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACjH,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAoB,IAAK,gCAA+B,EAC1I,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EACtH,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAwB,IAAK,SAAQ,EACtI,0BAA8BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAqB,IAAK,OAAQ,IAAK,iBAAgB,EACvJ,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gDAA+C,EAC9I,+BAAmCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8CAA6C,EAClJ,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA+B,IAAK,mBAAoB,IAAK,OAAQ,IAAK,iBAAgB,EACzL,wBAA4BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6CAA4C,EAC1I,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sDAAqD,EACpJ,iCAAqCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC5H,gCAAoCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC7H,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gDAA+C,EACjJ,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAC1G,gCAAoCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC7H,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kDAAiD,EACzI,SAAY,CACV,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAC9G,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,GAE3F,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAC/G,eAAmBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,EAAQC,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAAC,wCAAyCE,EAAaI,EAAO,WAAY,cAAeN,EAAW,CAAC,wCAAyCE,EAAaI,EAAO,WAAY,gBAAe,EACrV,cAAkBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EACrH,0BAA8BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iFAAgF,EAChL,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtG,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2CAA0C,EAC3I,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC/F,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACtG,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EAC1G,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAC/G,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACpH,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EAChH,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACjH,+BAAmCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC1H,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC1H,gCAAoCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC3H,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4DAA2D,GAEvJ,SAAY,CACV,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC3F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EACjG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACxG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EAChH,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gFAA+E,EACrK,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACzF,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC/F,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC3F,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC7G,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAClG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC1F,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,+BAAgCE,EAAaE,EAAM,KAAI,EAC3K,mBAAuBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACrH,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,+CAAgDE,EAAaE,EAAM,KAAI,GAEpM,UAAa,CACX,QAAYN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACvF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACpF,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACzF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACpF,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC1F,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACrF,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACnG,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACjG,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACjG,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC3F,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC5F,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC3F,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAChG,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC9F,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACzF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EACvF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC1F,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EACrF,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACjG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACxF,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACzF,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACtG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EACjG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAC5F,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACzG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACpG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACvF,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACvF,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACvF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,WAAc,CACZ,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACnG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4CAA2C,EAC5H,yBAA6BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sCAAqC,EACpI,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gDAA+C,EACjJ,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,EACtH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAChH,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACjH,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EAClH,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACrG,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC9G,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACzG,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAChH,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC5G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EAC9G,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC1G,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC9F,6CAAiDF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,+FAA8F,GAEnN,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACrG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACnG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACvG,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAClG,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACnF,UAAa,CACX,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAC1F,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC3F,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC1F,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,GAE7F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACtG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC9F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACnG,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACzG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAClF,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC3F,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC/F,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAChG,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAChG,cAAkBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,mCAAoCE,EAAaI,EAAO,SAAU,KAAI,EACpM,4BAAgCR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EAC1G,wBAA4BF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,oCAAqCE,EAAaI,EAAO,SAAU,uBAAsB,EACjO,8BAAkCR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC7G,8BAAkCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAChH,gBAAoBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,4CAA6CE,EAAaI,EAAO,SAAU,KAAI,EAC/M,oBAAwBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAChH,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACjH,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC7G,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC7G,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAChH,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC/G,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EACjH,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,uCAAwCE,EAAaI,EAAO,SAAU,KAAI,EACvM,2BAA+BR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC7G,2BAA+BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAChH,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mEAAkE,EAC7J,sCAA0CF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrH,8BAAkCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EACrI,SAAaF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,cAAeE,EAAaI,EAAO,cAAa,EACzK,aAAiBR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,+CAAgDE,EAAaI,EAAO,SAAU,KAAI,EAC/M,+BAAmCR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EACnH,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EACpH,iBAAqBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,sCAAuCE,EAAaI,EAAO,SAAU,KAAI,EAC1M,+BAAmCR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAChH,sCAA0CF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,GAE1H,aAAgB,CACd,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC1G,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wCAAuC,EACpI,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6CAA4C,GAE1I,cAAiB,CACf,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EACjF,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,GAEnG,SAAY,CACV,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACvG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACvF,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EACtF,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACxG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC3F,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EAC/G,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EAChH,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACnG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wDAAuD,EAC3I,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8DAA6D,EAC/I,uBAA2BF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,EAAQC,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAACE,EAAaI,EAAO,WAAY,mFAAoFN,EAAW,CAACE,EAAaI,EAAO,WAAY,oFAAmF,GAEtZ,OAAU,CACR,MAAS,CACP,KAASR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EACjG,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,6BAA8BE,EAAaI,EAAO,aAAcJ,EAAaI,EAAO,iBAAkB,MAAOJ,EAAaI,EAAO,gBAAiBJ,EAAaI,EAAO,oBAAqB,KAAI,EAC5T,QAAYR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EAClG,QAAYF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,uBAAwBE,EAAaE,EAAM,KAAI,GAEvK,gBAAmB,CACjB,EAAMN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,KAAI,EAC5E,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EAChF,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EAChF,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EAChF,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,IAGpF,MAAS,CACP,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACvG,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EAC5G,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACzF,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC3F,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACpG,SAAaF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,mBAAoBE,EAAaI,EAAO,gBAAiB,iBAAgB,EAClM,cAAkBR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,cAAeE,EAAaI,EAAO,eAAgB,4EAA2E,EAC5P,QAAYR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACnG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACjG,eAAkB,CAChB,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACzF,qBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EAC7G,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrF,iBAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EAC9G,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EACrF,kBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACxG,sBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAClH,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACzF,oBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,GAE9G,mBAAuBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,iBAAkBE,EAAaI,EAAO,YAAW,GAEtL,MAAS,CACP,mBAAuBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gDAA+C,EACxI,QAAYF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,wBAAyBE,EAAaE,EAAM,KAAI,EACtK,WAAeN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,qBAAsBE,EAAaE,EAAM,KAAI,EACtK,OAAWN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC7F,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACxG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACjG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAC7F,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EAClF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACpF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EACzF,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACrG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAChG,YAAgBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,EAAQC,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAACE,EAAaI,EAAO,UAAW,aAAcN,EAAW,CAACE,EAAaI,EAAO,UAAW,eAAc,EAC5P,mBAAuBR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,EAAQC,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAACE,EAAaI,EAAO,UAAW,sBAAuBN,EAAW,CAACE,EAAaI,EAAO,UAAW,wBAAuB,GAEvR,SAAY,CACV,MAAUR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qCAAoC,EAChH,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACnG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,GAEvF,SAAY,CACV,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2DAA0D,EAC3I,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,GAEzF,iBAAoB,CAClB,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACzG,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAC5F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACpG,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,GAEzF,MAAS,CACP,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACpF,IAAO,CACL,OAAU,CACR,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8FAA6F,EACnL,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uCAAsC,EACvH,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gEAA+D,EACxJ,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC3G,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EACnH,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8DAA6D,EACnJ,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC9F,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uDAAsD,EACxI,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wDAAuD,EACzI,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACvF,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EACvH,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iEAAgE,EACvJ,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EACtF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,GAEvF,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8CAA6C,EAChI,QAAW,CACT,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,KAAI,EACzF,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC5F,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iDAAgD,EAClI,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,GAElH,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC5F,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kHAAiH,IAG7M,gBAAmB,CACjB,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,GAEjG,qBAAwB,CACtB,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC1F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EAC/F,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,GAExH,aAAgB,CACd,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mCAAkC,EACnH,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACjG,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAC7F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACvG,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC3G,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,GAE3F,OAAU,CACR,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oLAAmL,GAE/Q,OAAU,CACR,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAClG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACpG,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EAC5G,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC9G,uBAA2BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAClH,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACxG,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EACzG,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACrH,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACtH,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EACjH,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAChG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC7F,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4CAA2C,EAChI,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAChG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC3F,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACvF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAClG,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EAC7F,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC7F,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACxF,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACxF,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC5G,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EACvF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EACtG,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACzF,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EACjF,UAAcF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,IAAKE,EAAaI,EAAO,WAAY,QAAO,EACtK,qBAAyBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACvH,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0BAAyB,EACpH,iBAAqBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,eAAgBE,EAAaI,EAAO,WAAY,mBAAkB,EACnM,yBAA6BR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kCAAiC,EAChI,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAC5F,yBAA6BF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,EAAQC,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAAC,eAAgBE,EAAaI,EAAO,eAAgB,YAAaN,EAAW,CAAC,eAAgBE,EAAaI,EAAO,eAAgB,cAAa,EACjT,YAAgBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAC5G,iBAAqBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,EAAQC,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAAC,iCAAkCE,EAAaI,EAAO,cAAe,yCAA0CJ,EAAaI,EAAO,UAAW,MAAON,EAAW,CAAC,iCAAkCE,EAAaI,EAAO,cAAe,0CAA2CJ,EAAaI,EAAO,UAAW,OAAM,EACjd,sBAA0BR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,EAAQC,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAAC,+BAAgCE,EAAaI,EAAO,cAAe,mBAAoBN,EAAW,CAAC,+BAAgCE,EAAaI,EAAO,cAAe,sBAAqB,EAC3V,UAAcR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,2BAA4BE,EAAaI,EAAO,SAAU,KAAI,EACxL,kBAAsBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC7G,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0EAAyE,EAC3K,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACzG,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,EACxH,QAAYF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4BAA2B,EACzG,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,EAC1G,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EACzG,2BAA+BF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAACE,EAAaI,EAAO,SAAU,IAAKJ,EAAaI,EAAO,UAAS,EAC3M,cAAkBR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,EAAQC,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAAC,oCAAqCE,EAAaI,EAAO,cAAe,kBAAmBN,EAAW,CAAC,oCAAqCE,EAAaI,EAAO,cAAe,oBAAmB,EAC1V,wBAA4BR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAACE,EAAaI,EAAO,SAAU,IAAKJ,EAAaI,EAAO,UAAS,EACxM,gBAAoBR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,EAAQC,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAAC,QAASE,EAAaI,EAAO,eAAgB,sCAAuCN,EAAW,CAAC,QAASE,EAAaI,EAAO,eAAgB,yCAAwC,EAC/U,0BAA8BR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAACE,EAAaI,EAAO,SAAU,IAAKJ,EAAaI,EAAO,UAAS,EAC1M,gCAAoCR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAACE,EAAaI,EAAO,SAAU,IAAKJ,EAAaI,EAAO,UAAS,EAChN,kCAAsCR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,EAChJ,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACzG,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EACvG,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAChH,6BAAiCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC5G,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4CAA2C,EAChI,qBAAyBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAChH,6BAAiCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC5G,6BAAiCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,EAC/G,6BAAiCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,aAAY,GAEjH,KAAQ,CACN,YAAgBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,KAAI,EACtJ,WAAeN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,KAAI,EACrJ,MAAUN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,UAAS,EACrJ,KAASN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,SAAQ,EACnJ,YAAgBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,KAAI,EACtJ,WAAeN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,KAAI,EACrJ,MAAUN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,aAAY,EACxJ,KAASN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,YAAW,EACtJ,cAAkBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,OAAM,EAC1J,aAAiBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,OAAM,EACzJ,QAAYN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,aAAY,EAC1J,OAAWN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,YAAW,EACxJ,UAAcN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EACtF,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EAChF,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,KAAI,EACvJ,YAAgBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,KAAI,EACtJ,OAAWN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,YAAW,EACxJ,MAAUN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,WAAU,EACtJ,cAAkBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,OAAM,EAC1J,aAAiBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,OAAM,EACzJ,QAAYN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,YAAW,EACzJ,OAAWN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,WAAU,EACvJ,QAAYN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,SAAUE,EAAaE,EAAM,KAAI,EACvJ,UAAcN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,QAASE,EAAaE,EAAM,KAAI,EACxJ,YAAgBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,OAAM,EACxJ,WAAeN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,OAAM,EACvJ,MAAUN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,UAAS,EACrJ,KAASN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,SAAQ,EACnJ,WAAeN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,KAAI,EACrJ,UAAcN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,KAAI,EACpJ,KAASN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,UAAS,EACpJ,IAAQN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,SAAQ,EAClJ,KAAQ,CACN,KAASN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,EAAOG,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAACE,EAAaE,EAAM,IAAK,UAAWJ,EAAW,CAACE,EAAaE,EAAM,IAAK,YAAW,EAC/N,QAAYN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,EAAOG,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAACE,EAAaE,EAAM,IAAK,YAAaJ,EAAW,CAACE,EAAaE,EAAM,IAAK,cAAa,EACtO,WAAeN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,KAAI,EACrJ,MAAUN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,EAAOG,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAACE,EAAaE,EAAM,IAAK,UAAWJ,EAAW,CAACE,EAAaE,EAAM,IAAK,YAAW,EAChO,YAAgBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,KAAI,EACtJ,cAAkBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,OAAM,EAC1J,OAAWN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,EAAOG,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAACE,EAAaE,EAAM,IAAK,YAAaJ,EAAW,CAACE,EAAaE,EAAM,IAAK,cAAa,EACrO,aAAiBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,MAAK,EACxJ,QAAYN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,EAAOG,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAACE,EAAaE,EAAM,IAAK,aAAcJ,EAAW,CAACE,EAAaE,EAAM,IAAK,eAAc,EACxO,cAAkBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,OAAM,EAC1J,MAAUN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,EAAOG,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAACE,EAAaE,EAAM,IAAK,aAAcJ,EAAW,CAACE,EAAaE,EAAM,IAAK,eAAc,EACtO,YAAgBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,OAAM,EACxJ,MAAUN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,EAAOG,OAAQC,GAAYV,EAAI,OAAOU,EAAQ,CAACR,EAAW,CAACE,EAAaE,EAAM,IAAK,UAAWJ,EAAW,CAACE,EAAaE,EAAM,IAAK,YAAW,EAChO,YAAgBN,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAACE,EAAaE,EAAM,IAAK,KAAI,IAG1J,OAAU,CACR,OAAWN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,YAAW,EACxF,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACnG,eAAmBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAACE,EAAaI,EAAO,UAAW,qBAAoB,EAClL,eAAmBR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAACE,EAAaI,EAAO,UAAW,oBAAmB,EACjL,SAAaR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC5F,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC9G,UAAcF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2BAA0B,GAE5G,aAAgB,CACd,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,GAEvF,UAAa,CACX,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACrF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACpF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACpF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,GAErF,MAAS,CACP,4BAAgCF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,2DAA0D,EAC5J,sBAA0BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,0CAAyC,EACrI,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yCAAwC,EACjI,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6CAA4C,EACjI,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EACjF,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oCAAmC,EAC7H,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EACxF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EACtF,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACtF,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,OAAM,EAChF,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,aAAcE,EAAaI,EAAO,cAAa,GAE9K,eAAkB,CAChB,+CAAmDR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qIAAoI,EACzP,wBAA4BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iDAAgD,EAC9I,wBAA4BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8FAA6F,EAC3L,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qDAAoD,EAC5I,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EACzG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oEAAmE,EACrJ,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mCAAkC,EACpH,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mGAAkG,EACpL,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uBAAsB,EAC3G,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,6BAA4B,GAEpH,eAAkB,CAChB,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACnH,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACrF,WAAeF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,eAAgBE,EAAaE,EAAM,KAAI,EAChK,oBAAwBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8EAA6E,EACvK,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EAC7G,wBAA4BF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kHAAiH,EAC/M,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,cAAeE,EAAaE,EAAM,KAAI,GAE5J,SAAY,CACV,MAAUN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,GAEvF,OAAU,CACR,SAAaF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,eAAc,EAC7F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACjG,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC7G,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrF,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EAC9F,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC7F,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,GAEjG,MAAS,CACP,aAAiBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,sBAAuBE,EAAaI,EAAO,eAAc,EACtL,MAAUR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrF,IAAQF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,cAAa,EACvF,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC5F,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EAC9F,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,QAAO,EACpF,KAASF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EAC9F,OAAWF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,EAC7F,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC1G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EACtG,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EAC1G,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,yBAAwB,EAC1G,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACzG,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EACpG,WAAeF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EAChG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,wBAAuB,EAC3G,aAAiBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,kBAAiB,EACpG,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,uCAAsC,EAC1H,MAAUF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,KAAMC,GAAUN,EAAI,OAAOE,EAAW,CAAC,2BAA4BE,EAAaE,EAAM,KAAI,GAEzK,OAAU,CACR,mBAAuBN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,4FAA2F,EACpL,YAAgBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,6CAA8CE,EAAaI,EAAO,kBAAmB,mOAAkO,EACnb,iBAAqBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,oBAAmB,EAC1G,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,qBAAoB,EAC7G,iBAAqBF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,sCAAuCE,EAAaI,EAAO,qBAAsB,KAAI,EACtN,sBAA0BR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,sBAAqB,EACjH,OAAWF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,WAAYE,EAAaI,EAAO,kBAAiB,GAE1K,yBAA4B,CAC1B,QAAYR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gDAA+C,GAE/H,cAAiB,CACf,eAAmBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8BAA6B,EAClH,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC5F,MAAUF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EACrF,oBAAwBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACzG,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACtH,YAAgBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EAC1F,WAAeF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,UAAWE,EAAaI,EAAO,WAAU,EACpK,YAAgBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EAC1F,cAAkBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAC7F,kBAAsBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,mBAAkB,EAC1G,gBAAoBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gBAAe,EACrG,uBAA2BF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,kBAAmBE,EAAaI,EAAO,UAAS,EACvL,mBAAuBR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,iBAAkBE,EAAaI,EAAO,UAAS,EAClL,iBAAqBR,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcG,MAAOC,GAAWR,EAAI,OAAOE,EAAW,CAAC,cAAeE,EAAaI,EAAO,UAAS,EAC7K,YAAgBR,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,WAAU,EAC5F,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,SAAQ,EACjG,mBAAuBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,UAAS,EAClG,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,gCAA+B,EACtH,iBAAqBF,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,iBAAgB,G","sources":["webpack://pleroma_fe/./src/i18n/eo.json"],"sourcesContent":["export default {\n \"chat\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babilejo\"])}\n },\n \"features_panel\": {\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babilejo\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vidaŭdaĵa retperilo\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj de amplekso\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limo de teksto\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Funkcioj\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiun aboni\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babilejo de Pleroma\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limo de alŝutoj\"])},\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kriujo\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris alporto de uzanto\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trovi uzanton\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apliki\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sendi\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pli\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraro okazis\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"malnepra\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontroli\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmi\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝalti\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malŝalti\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuligi\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forlasi\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri malplion\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri plion\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reprovi\"])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bonvolu reprovi\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegante…\"])},\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭmontri\"])},\n \"role\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reguligisto\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administranto\"])}\n },\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Klaku por montri enhavon de Flash per Ruffle. (Eksperimente, eble ne funkcios.)\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciu, ke tio povas esti danĝera, ĉar la enhavo de Flash ja estas arbitra programo.\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsukcesis enlegi enhavon de Flash; vidu detalojn en konzolo.\"])},\n \"scope_in_timeline\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Persona\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nur abonantoj\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publika\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nelistigita\"])}\n },\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Eraris: \", _interpolate(_list(0))])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniam remontri\"])},\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfari\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jes\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfiksi\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fiksi\"])},\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rulumi supren\"])}\n },\n \"image_cropper\": {\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tondi bildon\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuligi\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi sen tondado\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saluti\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saluti per OAuth\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adiaŭi\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pasvorto\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekz. lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registriĝi\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uzantonomo\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Salutu por partopreni la diskutadon\"])},\n \"heading\": {\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rehavo de duobla aŭtentikigo\"])},\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Duobla aŭtentikigo\"])}\n },\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rehava kodo\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigu kodon de duobla aŭtentikigo\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigu rehavan kodon\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aŭtentikiga kodo\"])},\n \"logout_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmo de adiaŭo\"])},\n \"logout_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas adiaŭi?\"])},\n \"logout_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adiaŭi\"])},\n \"logout_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne adiaŭi\"])}\n },\n \"media_modal\": {\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭa\"])},\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sekva\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi vidilon de vidaŭdaĵoj\"])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prio\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reen\"])},\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loka babilejo\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Petoj pri abono\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mencioj\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rektaj mesaĝoj\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Noda historio\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Historio\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federa historio\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉi uzantojn\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiun aboni\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babiloj\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉi\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interagoj\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrado\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legosignoj\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Historioj\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hejma historio\"])},\n \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti fiksitajn erojn\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Listoj\"])},\n \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adapti navigan breton\"])},\n \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fini redakton\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfermi sciigojn (estas nelegitaj)\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi sciigojn\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anoncoj\"])},\n \"search_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi serĉujon\"])},\n \"mobile_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Mal)ŝalti flankan breton por telefonoj\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nekonata afiŝo, serĉante ĝin…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ŝatis vian afiŝon\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekabonis vin\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi pli malnovajn sciigojn\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciigoj\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legite!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ripetis vian afiŝon\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj pliaj sciigoj\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagis per \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migris al\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volas vin aboni\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Eraris akirado de sciigoj: \", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sendis raporton\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enketo finiĝis\"])}\n },\n \"post_status\": {\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝi\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Via konto ne estas \", _interpolate(_list(0)), \". Iu ajn povas vin aboni por vidi eĉ viajn afiŝoj nur por abonantoj.\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ŝlosita\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marki kunsendaĵojn konsternaj\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Plata teksto\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])}\n },\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Temo (malnepra)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĵus alvenis Esperantujon!\"])},\n \"direct_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo estos videbla nur por ĉiuj menciitaj uzantoj.\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝante\"])},\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rekta – afiŝi nur al menciitaj uzantoj\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nur abonantoj – afiŝi nur al abonantoj\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publika – afiŝi al publikaj historioj\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nelistigita – ne afiŝi al publikaj historioj\"])}\n },\n \"scope_notice\": {\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo ne estos videbla en la Noda kaj la Federa historioj\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo estos videbla nur al viaj abonantoj\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo estos videbla al ĉiuj\"])}\n },\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsukcesis afiŝo de vidaŭdaĵoj; reprovu\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne povas fari malplenan afiŝon sen dosieroj\"])},\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malplena\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭrigardo\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo estas nur videbla al uzantoj menciitaj je la komenco de la mesaĝo.\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo estos videbla al ĉiuj menciitaj uzantoj.\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Priskribo de vidaŭdaĵo\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝo\"])},\n \"edit_remote_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aliaj foraj nodoj eble ne subtenas redaktadon, kaj ne povos ricevi pli novan version de via afiŝo.\"])},\n \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma ne subtenas redaktadon de mencioj aŭ enketoj.\"])},\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti afiŝon\"])},\n \"content_type_selection\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Formo de afiŝo\"])},\n \"scope_notice_dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi ĉi tiun avizon\"])}\n },\n \"registration\": {\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Priskribo\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retpoŝtadreso\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prezenta nomo\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmo de pasvorto\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registriĝo\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invita peco\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TESTO DE HOMECO\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Klaku la bildon por akiri novan teston\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekz. lain\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekz. Lain Ivakura\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekz.\\nSaluton, mi estas Lain.\\nMi estas animea knabino vivanta en Japanujo. Eble vi konas min pro la retejo « Wired ».\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne povas resti malplena\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne povas resti malplena\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne povas resti malplena\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne povas resti malplena\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne povas resti malplena\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"samu la pasvorton\"])},\n \"birthday_min_age\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"ne povas esti post \", _interpolate(_named(\"date\"))])},\n \"birthday_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne povas resti malplena\"])}\n },\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi-node oni aprobas registriĝojn permane.\\nSciigu la administrantojn kial vi volas registriĝi.\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kialo registriĝi\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registriĝi\"])},\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prio (malnepra)\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retpoŝtadreso (malnepra)\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"En kiu lingvo vi volus ricevi retleterojn de la servilo?\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Naskiĝtago:\"])},\n \"birthday_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Naskiĝtago (malnepra):\"])}\n },\n \"settings\": {\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomo de aplikaĵo\"])},\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kunsendaĵoj\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kunsendaĵoj\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilbildo\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilbildoj (sciigoj)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilbildoj\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fono\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Priskribo\"])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokitoj\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butonoj\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blua (respondi, aboni)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verda (diskonigi)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oranĝa (ŝati)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ruĝa (nuligi)\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝanĝi pasvorton\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris ŝanĝo de via pasvorto.\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pasvorto sukcese ŝanĝiĝis!\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maletendi afiŝojn kun temoj\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verkado\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmu novan pasvorton\"])},\n \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Via nuna profilbildo\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuna pasvorto\"])},\n \"current_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Via nuna profila rubando\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporto / Elporto de datumoj\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Implicita amplekso de vidibleco\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi konton\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Por ĉiam forigi viajn datumojn kaj malaktivigi vian konton.\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris forigo de via kanto. Se tio daŭre ripetiĝos, bonvolu kontakti la administranton de via nodo.\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entajpu sube vian pasvorton por konfirmi forigon de konto.\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La rekomendata minimuma grando de profilbildoj estas 150×150 bilderoj.\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi antaŭagordon\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrado\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉiuj afiŝoj kun tiuj ĉi vortoj silentiĝos; skribu po unu linie\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporto de abonoj\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporti viajn abonojn al CSV-dosiero\"])},\n \"follow_export_processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Traktante; baldaŭ vi ricevos peton elŝuti la dosieron\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporto de abonoj\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraro enportante abonojn\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonoj enportiĝis! Traktado daŭros iom da tempo.\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfono\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĝenerala\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi kunsendaĵojn en interparoloj\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi kunsendaĵojn en historioj\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maksimuma nombro da bildetoj en afiŝo\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi breton propran al nodo\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭ-enlegi bildojn\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfermi konsternajn kunsendaĵojn per nur unu klako\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi statistikon de afiŝoj (ekz. nombron de ŝatoj)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi statistikon de uzantoj (ekz. nombron de abonantoj)\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi ĉiujn filtritajn afiŝojn\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporti abonojn el CSV-dosiero\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi antaŭagordojn\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigaj kampoj\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markbutonoj\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(originale: \", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(originale)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fasado\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingvo de fasado\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La elektita dosiero ne estas subtenata haŭto de Pleromo. Neniuj ŝanĝoj al via haŭto okazis.\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nehavebla en via foliumilo\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ligiloj\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limigi vian konton al nur abonantoj aprobitaj\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripetadi filmojn\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripetadi nur filmojn sen sono (ekz. la «GIF-ojn» de Mastodon)\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigoj\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ludi filmojn en ŝpruca kadro\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne pritondi bildetojn de kunsendaĵoj\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomo\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomo kaj priskribo\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nova pasvorto\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montrotaj specoj de sciigoj\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonoj\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝatoj\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mencioj\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripetoj\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi riĉtekstajn formojn de ĉiuj afiŝoj\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj blokitoj\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj silentigoj\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne montri kiun mi sekvas\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne montri kiu min sekvas\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri la insignon de administranto en mia profilo\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri la insignon de reguligisto en mia profilo\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝalti traklakan kaŝadon de kunsendaĵoj kaj antaŭmontroj de ligiloj por konsternaj afiŝoj\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pecoj de OAuth\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peco\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualiga peco\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valida ĝis\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Senvalidigi\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bretoj\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Paŭzigi elsendfluon kiam langeto ne estas fokusata\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭagordoj\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fono de profilo\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rubando de profilo\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilo\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordi fasadan rondigon de randoj (bildere)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Respondoj en historioj\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri ĉiujn respondojn\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri nur respondojn por mi aŭ miaj abonatoj\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri nur respondojn por mi\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris konservado de agordoj\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj konserviĝis\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sekureco\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kopii amplekson por respondo (rektaj mesaĝoj ĉiam kopiiĝas)\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordi novan profilbildon\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordi novan fonon de profilo\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordi novan rubandon de profilo\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉiam montri kampon de temo\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kopii temon dum respondado\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiel retpoŝto: «re: temo»\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiel Mastodon: kopii senŝanĝe\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne kopii\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Speco de enhavo de afiŝo\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Movi GIF-bildojn dum ŝvebo de muso\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝalti memagan fluigon de novaj afiŝoj kiam vi vidas la supron de la paĝo\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teksto\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Haŭto\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uzu deksesumajn kolorkodojn (#rrvvbb) por adapti vian koloran haŭton.\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi ankaŭ povas superagordi la kolorojn kaj travideblecon de kelkaj eroj per marko de la markbutono; uzu la butonon «Vakigi ĉion» por forigi ĉîujn superagordojn.\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildsimboloj sub kelkaj eroj estas indikiloj de kontrasto inter fono kaj teksto; ŝvebigu muson por detalaj informoj. Bonvolu memori, ke la indikilo montras la plej malbonan okazeblon dum sia uzo.\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝpruchelpiloj/avertoj\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alŝuti foton\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj de uzanto\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jes\"])}\n },\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciigoj\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝalti retajn pasivajn sciigojn\"])},\n \"style\": {\n \"switcher\": {\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi kolorojn\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi ombrojn\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi maltravideblecon\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi rondecon\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi tiparojn\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elektebloj de «konservi» konservas la nuntempajn agordojn dum elektado aŭ enlegado de haŭtoj. Ĝi ankaŭ konservas tiujn agordojn dum elportado de haŭto. Kun ĉiuj markbutonoj nemarkitaj, elporto de la haŭto ĉion konservos.\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigi\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vakigi ĉion\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vakigi maltravideblecon\"])},\n \"help\": {\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versio de PleromaFE reen iris.\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La motoro de haŭtoj de PleromaFE ĝisdatiĝis post ĝisdatigo de la versio.\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La enportita dosiero estis farita per pli malnova versio de PleromaFE.\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La enportita dosiero estis farita per pli nova versio de PleromaFE.\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La dosiero, kiun vi enportis, estis farita por malnova versio de PleromaFE. Ni provas maksimumigi interkonformecon, sed tamen eble montriĝos misoj.\"])},\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE estis ĝisdatigita; la haŭto eble aspektos malsame ol kiel vi ĝin memoras.\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniu momentokopio de haŭto estis en la dosiero, ĝi povas aspekti iom malsame ol oni intencis.\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉiuj valoroj estas transpasataj, ĉar momentokopio de haŭto estas enlegita. Vi povas enlegi anstataŭe la aktualajn datumojn de haŭto.\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versioj konfliktas: plej probable la fasado estis reirigita kaj ree ĝisdatigita; se vi ŝanĝis la haŭton per pli malnova versio de la fasado, vi probable volas uzi la malnovan version. Alie uzu la novan.\"])},\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ial mankis momentokopio; io povus aspekti malsame ol en via memoro.\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Certige, momentokopio de la haŭto enlegiĝis. Vi povas provi enlegi datumojn de la haŭto.\"])}\n },\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nova versio\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malnova versio\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teni senŝanĝa\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi haŭton\"])}\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Koloro\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maltravidebleco\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Proporcio de kontrasto estas \", _interpolate(_named(\"ratio\")), \", ĝi \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n \"level\": {\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"plenumas la gvidilon je nivelo AA (minimuma)\"])},\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"plenumas la gvidilon je nivela AAA (rekomendita)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"plenumas neniujn faciluzajn gvidilojn\"])}\n },\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"por granda (18pt+) teksto\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"por teksto\"])}\n }\n }\n },\n \"common_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Komunaj\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Komunaj koloroj\"])},\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vidu langeton «Specialaj» por pli detalaj agordoj\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildsimboloj, emfazoj, insignoj\"])}\n },\n \"advanced_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Specialaj\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fono de averto\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraro\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fono de insigno\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciigo\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kapo de breto\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supra breto\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limoj\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butonoj\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigaj kampoj\"])},\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malvigla teksto\"])},\n \"chat\": {\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limo\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eliraj\"])},\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Envenaj\"])}\n },\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langetoj\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malŝaltita\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elektita menuero\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elektita afiŝo\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Premita\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emfazitaj eroj\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildsimboloj\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grafo de enketo\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subtavolo\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝprucaĵoj, menuoj\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝoj/Priskriboj de uzantoj\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neŭtrala\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Averto\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝaltita\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fonbildo\"])}\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rondeco\"])}\n },\n \"shadows\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ombro kaj lumo\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ero\"])},\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Transpasi\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ombro #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malklarigo\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vastigo\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Internigo\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Por ombroj vi ankaŭ povas uzi --variable kiel koloran valoron, por uzi variantojn de CSS3. Bonvolu rimarki, ke tiuokaze agordoj de maltravidebleco ne funkcios.\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Averto: ĉi tiu ombro ĉiam uzas \", _interpolate(_list(0)), \" kiam la foliumilo tion subtenas.\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" ne subtenas parametron \", _interpolate(_list(1)), \" kaj ĉefvorton \", _interpolate(_list(2)), \".\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bonvolu rimarki, ke agordi ambaŭ internajn kaj eksterajn ombrojn por profilbildoj povas redoni neatenditajn rezultojn ĉe profilbildoj travideblaj.\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ombroj kun vastigo > 0 aperos kvazaŭ ĝi estus fakte nulo\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Internaj ombroj uzos \", _interpolate(_list(0))])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Breto\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kapo de breto\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supra breto\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilbildo de uzanto (en profila vido)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilbildo de uzanto (en afiŝa vido)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝprucaĵoj\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butono\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butono (je ŝvebo)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butono (premita)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butono (je premo kaj ŝvebo)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eniga kampo\"])}\n },\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Kolorojn de ombroj vi ankaŭ povas skribi per la sistemo \", _interpolate(_list(0)), \".\"])}\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tiparoj\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elektu tiparon uzotan por eroj de la fasado. Por «propra» vi devas enigi la precizan nomon de tiparo tiel, kiel ĝi aperas en la sistemo.\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fasado\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigaj kampoj\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teksto de afiŝo\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Egallarĝa teksto en afiŝo (riĉteksto)\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomo de tiparo\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grando (en bilderoj)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pezo (graseco)\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Propra\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭrigardo\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enhavo\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ekzempla eraro\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butono\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Kelko da pliaj \", _interpolate(_list(0)), \" kaj \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enhavo\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĵus alvenis Esperantujon!\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"helpan manlibron\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Legu nian \", _interpolate(_list(0)), \" por nenion utilan ekscii!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tio estas en ordo\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mi legetis la kondiĉojn de uzado\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bela eta ligil’\"])}\n }\n },\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permesi trovon de ĉi tiu konto en serĉrezultoj kaj aliaj servoj\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokado kaj silentigoj\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babileja mesaĝo\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retpoŝtadreso sukcese ŝanĝiĝis!\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris ŝanĝo de via retpoŝtadreso.\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝanĝi retpoŝtadreson\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tio estas robota konto\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokitoj enportiĝis! Traktado daŭros iom da tempo.\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris enporto de blokitoj\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporto de blokitoj\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporto de blokitoj\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporti viajn blokitojn al CSV-dosiero\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permesi memagan abonadon kiam abonata konto migras\"])},\n \"mfa\": {\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Por ŝalti duoblan aŭtentikigon, enigu la kodon el via aplikaĵo por duobla aŭtentikigo:\"])}\n },\n \"scan\": {\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝlosilo\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uzante vian aplikaĵon por duobla aŭtentikigo, skanu ĉi tiun rapidrespondan kodon aŭ enigu tekstan ŝlosilon:\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skani\"])}\n },\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metodoj de aŭtentikigo\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notu la kodojn aŭ konservu ilin en sekura loko – alie vi ne revidos ilin. Se vi perdos aliron al via aplikaĵo por duobla aŭtentikigo kaj al la rehavaj kodoj, vi ne povos aliri vian konton.\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ricevante savkopiajn kodojn…\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rehavaj kodoj.\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiam vi estigos novajn rehavajn kodojn, viaj malnovaj ne plu funkcios.\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Estigi novajn rehavajn kodojn\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Duobla aŭtentikigo\"])},\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"antaŭagordante OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordi OTP\"])},\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmi kaj ŝalti OTP\"])}\n },\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigu vian pasvorton por konfirmi vian identecon\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sekureco\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Amuzo\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉu silentigotajn retnomojn\"])},\n \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Nerekomendate, eksperimente, povas preterpasi afiŝojn)\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ricevi afiŝojn kaj sciigojn realtempe\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uzantoj\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas restarigi la fonon?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas restarigi la rubandon?\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas restarigi la profilbildon?\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigi rubandon de profilo\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigi fonon de profilo\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigi profilbildon\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Minimumigi elekteblojn pri amplekso de afiŝoj\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉu, kiun vi volas bloki\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉu, kiun vi volas silentigi\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memage kaŝi la butonon por Nova afiŝo (poŝtelefone)\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne montri nombron de abonantoj\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne montri nombron de abonoj\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reagoj\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Migroj\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nova retpoŝtadreso\"])},\n \"profile_fields\": {\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enhavo\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etikedo\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldoni kampon\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pridatumoj de profilo\"])}\n },\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporti blokitojn el CSV-dosiero\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi afiŝojn de silentigitaj uzantoj\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri bildosignajn reagojn en historioj\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meti spacetojn ĉirkaŭ bildosigno post ties elekto\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retnomoj\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokinte uzanton vi malabonos ĝin kaj haltigos ĉiujn sciigojn.\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Por ne plu ricevi sciigojn de certa uzanto, silentigu ĝin.\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi la sendinton kaj la enhavojn de pasivaj sciigoj\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privateco\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bloki sciigojn de uzantoj, kiujn vi ne abonas\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtriloj\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memecitaĵoj\"])},\n \"version\": {\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versio de fasado\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versio de internaĵo\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versio\"])}\n },\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emfazo\"])},\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Optimumigi bildigon de historioj\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporti silentigojn el CSV-dosiero\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigoj enportiĝis! Traktado daŭros iom da tempo.\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris enporto de silentigoj\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporto de silentigoj\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elportu viajn silentigojn al CSV-dosiero\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporto de silentigoj\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi fonbildon de nodo\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordo malsamas de la implicita\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pliaj agordoj\"])},\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Implicite marki afiŝojn konsternaj\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri respondojn por miaj abonatoj\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi silentigitajn afiŝojn\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi antaŭrigardojn al vidaŭdaĵoj\"])},\n \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vortofiltro\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri nur respondojn por mi\"])},\n \"file_export_import\": {\n \"errors\": {\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etversio de dosiero malsamas, iuj agordoj eble ne funkcios\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Nekonforma ĉefa versio: \", _interpolate(_named(\"fileMajor\")), \", versio de dosiero estas tro malnova kaj nesubtenata (minimuma estas \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Nekonforma ĉefa versio: \", _interpolate(_named(\"fileMajor\")), \", ĉi tiu PleromaFE (agordoj je versio \", _interpolate(_named(\"feMajor\")), \") tro malnovas por tio\"])},\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La elektita dosiero ne estas subtenata savkopio de agordoj de Pleroma. Nenio ŝanĝiĝis.\"])}\n },\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rehavi agordojn el dosiero\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Savkopii agordojn kaj haŭton al dosiero\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Savkopii agordojn al dosiero\"])},\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Savkopio de agordoj\"])}\n },\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri flankan breton dekstre\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi ŝanĝojn\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi kriujon de nodo\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉiam montri ŝvebantan butonon por nova afiŝo\"])},\n \"mentions_new_style\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pli mojosaj menciligiloj\"])},\n \"mentions_new_place\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meti menciojn sur apartan linion\"])},\n \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri listojn en navigiloj\"])},\n \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Savkopio de konto\"])},\n \"account_backup_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tio povigas vin elŝuti arĥivon de viaj afiŝoj kaj ĉiuj informoj pri via konto, sed ili ne jam povas enportiĝi en konton de Pleroma.\"])},\n \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraris akirado de kromnomoj: \", _interpolate(_named(\"error\"))])},\n \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se vi volas movi la konton aliloken, vi devas iri al via celata konto, kaj aldoni kromnomon ligitan al tie ĉi.\"])},\n \"navbar_column_stretch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etendi navigan breton laŭ larĝeco de kolumnoj\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝoj\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Finoj de enketoj kun via voĉo\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aspekto de interparoloj\"])},\n \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne alglui kapojn de kolumnoj al supro de la ekrano\"])},\n \"conversation_display_linear_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linia vido\"])},\n \"use_websockets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uzi teĥnikaron «websockets» (tuja ĝisdatigo)\"])},\n \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"plene nur je uzantoj foraj (ekz. \", \"@\", \"zozo\", \"@\", \"ekzemplo.org)\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri altnivelajn\"])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu agordo estas ligita al via profilo, kaj efektiviĝos en ĉiuj viaj salutoj kaj klientoj\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aspekto de afiŝoj\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Menciaj ligiloj\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingvo de leteroj ricevotaj de la servilo\"])},\n \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Savkopio\"])},\n \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elŝuti\"])},\n \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu savkopio ne jam pretas.\"])},\n \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi\"])},\n \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraris akirado de listo de savkopioj: \", _interpolate(_named(\"error\"))])},\n \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fari novan savkopion\"])},\n \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldonis novan savkopion.\"])},\n \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraris aldono de nova savkopio: \", _interpolate(_named(\"error\"))])},\n \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kromnomoj de konto\"])},\n \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kromnomo\"])},\n \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi\"])},\n \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi ĉi tiun kromnomon\"])},\n \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Aldoni novan kromnomon (ekz. \", _interpolate(_named(\"example\")), \")\"])},\n \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kromnomo estas aldonita.\"])},\n \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraris aldono de kromnomo: \", _interpolate(_named(\"error\"))])},\n \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Movi konton\"])},\n \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Celata konto (ekz. \", _interpolate(_named(\"example\")), \")\"])},\n \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konto moviĝis.\"])},\n \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraris movado de konto: \", _interpolate(_named(\"error\"))])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vortofiltrado\"])},\n \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vortofiltrado kaj pli…\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigi afiŝojn de robotoj\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi markon de roboteco en afiŝoj\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi vorte filtritajn afiŝojn\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi silentigitajn fadenojn\"])},\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privateco\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profiloj de uzantoj\"])},\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne montri liston de miaj ŝatatoj (oni tamen sciiĝas)\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Arba stilo\"])},\n \"conversation_display_tree_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Arba vido\"])},\n \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri rulumskalojn de flankaj kolumnoj\"])},\n \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniam montri trian kolumnon\"])},\n \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kolumno de sciigoj\"])},\n \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kolumnoj\"])},\n \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grandeco de kolumnoj\"])},\n \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flanka breto\"])},\n \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enhavo\"])},\n \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciigoj\"])},\n \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permesi pli flekseblan navigadon en arba vido\"])},\n \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linia stilo\"])},\n \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri la butonon pri «aliaj respondoj»\"])},\n \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sub afiŝoj\"])},\n \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"En afiŝoj\"])},\n \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maksimuma nombro de niveloj implicite montrataj en fadeno\"])},\n \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri novajn afiŝojn memage\"])},\n \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri simbolon \", \"@\", \" kiel bildon anstataŭ teksto\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri menciajn ligilojn\"])},\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ĉiam mallonge (ekz. \", \"@\", \"zozo)\"])},\n \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ĉiam plene (ekz. \", \"@\", \"zozo\", \"@\", \"ekzemplo.org)\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri profilbildon de uzanto apud la ligilo\"])},\n \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri profilbildon de uzanto apud mencioj\"])},\n \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malvigligi retnomojn (ekz. \", \"@\", \"ekzemplo.org en \", \"@\", \"zozo\", \"@\", \"ekzemplo.org)\"])},\n \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emfazi vian mencion, se vi estas menciita\"])},\n \"mention_link_use_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri karton de uzanto per klako al mencia ligilo\"])},\n \"user_popover_avatar_action_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi la ŝprucaĵon\"])},\n \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfermi la profilon\"])},\n \"user_popover_avatar_overlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aperigi ŝprucaĵon pri uzanto sur profilbildo\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri la markon «(Vi)»\"])},\n \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zomi la profilbildon\"])},\n \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kun sufiĉo da spaco, montri trian kolumnon kun\"])},\n \"birthday\": {\n \"show_birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri mian naskiĝtagon\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Naskiĝtago\"])}\n },\n \"confirm_dialogs_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forigo de afiŝo\"])},\n \"backup_running\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Ĉi tiu savkopiado progresas, traktis \", _interpolate(_named(\"number\")), \" datumon.\"]), _normalize([\"Ĉi tiu savkopiado progresas, traktis \", _interpolate(_named(\"number\")), \" datumojn.\"])])},\n \"backup_failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu savkopiado malsukcesis.\"])},\n \"autocomplete_select_first\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memage elekti unuan kandidaton kiam rezultoj de memaga konjektado disponeblas\"])},\n \"confirm_dialogs_logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"adiaŭo\"])},\n \"user_popover_avatar_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post klako sur profilbildon en ŝprucaĵo\"])},\n \"remove_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi\"])},\n \"primary_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉefa lingvo:\"])},\n \"confirm_dialogs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peti konfirmon je\"])},\n \"confirm_dialogs_repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ripeto de afiŝo\"])},\n \"confirm_dialogs_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"malabono de uzanto\"])},\n \"confirm_dialogs_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"blokado de uzanto\"])},\n \"confirm_dialogs_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"silentigo de uzanto\"])},\n \"confirm_dialogs_approve_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"aprobo de abonanto\"])},\n \"confirm_dialogs_deny_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"malaprobo de abonanto\"])},\n \"confirm_dialogs_remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"forigo de abonanto\"])},\n \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri responditojn de la nuna afiŝo per teksto malvigla\"])}\n },\n \"timeline\": {\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maletendi\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interparolo\"])},\n \"error_fetching\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris ĝisdatigo\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri pli malnovajn afiŝojn\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝo estas markita kiel rekta aŭ nur por abonantoj, kaj ne eblas ĝin ripeti\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ripetis\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri novajn\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĝisdata\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj pliaj afiŝoj\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj afiŝoj\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi ree\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Eraris akirado de historio: \", _interpolate(_list(0))])},\n \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Realtempa konekto fariĝis\"])},\n \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Realtempa konekto perdiĝis: CloseEvent code \", _interpolate(_list(0))])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aprobi\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bloki\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokita!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rifuzi\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝatataj\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aboni\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peto sendiĝis!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Petante…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malaboni\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonatoj\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonantoj\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonata!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonas vin!\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tio estas vi!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vidaŭdaĵoj\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigi\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigita\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tage\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fore aboni\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝoj\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malbloki\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malblokante…\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokante…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsilentigi\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsilentigante…\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigante…\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raporti\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mesaĝo\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mencio\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝita\"])},\n \"admin_menu\": {\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi uzanton\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malpermesi federadon de afiŝoj de uzanto\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malpermesi ĉian abonadon al uzanto\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malpermesi abonadon al uzanto el foraj nodoj\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Devigi afiŝojn esti nur por abonantoj\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Devigi afiŝojn nelistiĝi\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi vidaŭdaĵojn de afiŝoj\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marki ĉiujn afiŝojn konsternaj\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi konton\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malaktivigi konton\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivigi konton\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malnomumi reguligiston\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomumi reguligiston\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malnomumi administranton\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomumi administranton\"])},\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reguligado\"])},\n \"delete_user_data_and_deactivate_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tio ĉi por ĉiam forigos datumojn de tiu ĉi konto, kaj malaktivigos ĝin. Ĉu vi plene certas?\"])}\n },\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri ripetojn\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi ripetojn\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne ricevi sciigojn\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ricevi sciigojn\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roboto\"])},\n \"highlight\": {\n \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flanka strio\"])},\n \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stria fono\"])},\n \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unueca fono\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Senemfaze\"])}\n },\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti profilon\"])},\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malaktiva\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuligi peton\"])},\n \"remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi abonanton\"])},\n \"note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Noto\"])},\n \"note_blank\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Neniu)\"])},\n \"edit_note_apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apliki\"])},\n \"edit_note_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuligi\"])},\n \"edit_note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti noton\"])},\n \"block_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ĉu vi certe volas bloki uzanton \", _interpolate(_named(\"user\")), \"?\"])},\n \"block_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bloki\"])},\n \"remove_follower_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ĉu vi certe volas forigi uzanton \", _interpolate(_named(\"user\")), \" de viaj abonantoj?\"])},\n \"approve_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aprobi\"])},\n \"approve_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne aprobi\"])},\n \"approve_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ĉu vi certe volas aprobi abonan peton de \", _interpolate(_named(\"user\")), \"?\"])},\n \"block_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmo de blokado\"])},\n \"approve_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmo de aprobo\"])},\n \"block_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne bloki\"])},\n \"deny_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malaprobi\"])},\n \"deny_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne malaprobi\"])},\n \"mute_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigi konfirmon\"])},\n \"deny_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmo de malaprobo\"])},\n \"mute_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ĉu vi certe volas silentigi uzanton \", _interpolate(_named(\"user\")), \"?\"])},\n \"mute_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigi\"])},\n \"mute_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne silentigi\"])},\n \"mute_duration_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigi ĉi tiun uzanton por (0 signifas senliman silentigon):\"])},\n \"remove_follower_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi\"])},\n \"remove_follower_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmo de forigo de abonanto\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Naskita je \", _interpolate(_named(\"birthday\"))])},\n \"deny_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ĉu vi certe volas malaprobi abonan peton de \", _interpolate(_named(\"user\")), \"?\"])},\n \"unfollow_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne malaboni\"])},\n \"unfollow_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmo de malabono\"])},\n \"unfollow_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ĉu vi certe volas malaboni uzanton \", _interpolate(_named(\"user\")), \"?\"])},\n \"unfollow_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malaboni\"])},\n \"remove_follower_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne forigi\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Historio de uzanto\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pardonu, ĉi tiu profilo ne ekzistas.\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pardonu, eraris enlego de ĉi tiu profilo.\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pli\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiun aboni\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alŝuti vidaŭdaĵon\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripeti\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Respondi\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝati\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj de uzanto\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legosigno\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rifuzi abonpeton\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Akcepti abonpeton\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldoni reagon\"])},\n \"toggle_expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etendi aŭ maletendi sciigon por montri plenan afiŝon\"])},\n \"toggle_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etendi aŭ maletendi afiŝon por montri silentigitan enhavon\"])},\n \"autocomplete_available\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"number\")), \" rezulto disponeblas. Uzu la sagajn klavojn supren kaj suben por foliumi ilin.\"]), _normalize([_interpolate(_named(\"number\")), \" rezulto disponeblas. Uzu la sagajn klavojn supren kaj suben por foliumi ilin.\"])])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alŝuto malsukcesis.\"])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Dosiero estas tro granda [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reprovu pli poste\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Malsukcesis alŝuto: \", _interpolate(_list(0))])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n }\n },\n \"emoji\": {\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉi bildosignon\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teni elektilon malfermita\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildsignoj\"])},\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Glumarkoj\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigi bildosignon\"])},\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Enlegante ĉiujn \", _interpolate(_named(\"emojiAmount\")), \" bildosignojn\"])},\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Enlegis la \", _interpolate(_named(\"saneAmount\")), \" unuajn bildosignojn; enlego de ĉiuj povus kaŭzi problemojn pri efikeco.\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unikoda bildosigno\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Propra bildosigno\"])},\n \"unicode_groups\": {\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agado\"])},\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestoj kaj naturo\"])},\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flagoj\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Manĝaĵoj kaj trinkaĵoj\"])},\n \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aĵoj\"])},\n \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Homoj kaj korpo\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mienbildoj kaj sentoj\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Simboloj\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vojaĝoj kaj lokoj\"])}\n },\n \"regional_indicator\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Regiona marko \", _interpolate(_named(\"letter\"))])}\n },\n \"polls\": {\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tro malmultaj unikaj elektebloj en la enketo\"])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Enketo finiĝis antaŭ \", _interpolate(_list(0))])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Enketo finiĝas je \", _interpolate(_list(0))])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aĝo de enketo\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pluraj elektoj\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unu elekto\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Speco de enketo\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voĉi\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"voĉoj\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elekteblo\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldoni elekteblon\"])},\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldoni enketon\"])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" voĉdono\"]), _normalize([_interpolate(_named(\"count\")), \" voĉdonoj\"])])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" persono voĉdonis\"]), _normalize([_interpolate(_named(\"count\")), \" personoj voĉdonis\"])])}\n },\n \"importer\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris enporto de ĉi tiu dosiero.\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enportita sukcese.\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sendi\"])}\n },\n \"exporter\": {\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Traktante; baldaŭ vi ricevos peton elŝuti vian dosieron\"])},\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporti\"])}\n },\n \"domain_mute_card\": {\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsilentigante…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsilentigi\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigante…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigi\"])}\n },\n \"about\": {\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skipo\"])},\n \"mrf\": {\n \"simple\": {\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo devigas vidaŭdaĵojn esti markitaj kiel konsternaj en afiŝoj el la jenaj nodoj:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Devige marki vidaŭdaĵojn konsternaj\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo forigas vidaŭdaĵojn de afiŝoj el la jenaj nodoj:\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigo de vidaŭdaĵoj\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigo el la «Federa historio»\"])},\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo sendos nur publikajn afiŝojn al la jenaj nodoj:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kvaranteno\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo ne akceptos mesaĝojn de la jenaj nodoj:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rifuzi\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo nur akceptas mesaĝojn de la jenaj nodoj:\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Akcepti\"])},\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Specialaj politikoj de la nodo\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo forigas la jenajn nodojn el la «Federa historio»:\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nodo\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kialo\"])}\n },\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝaltis politikon de Mesaĝa ŝanĝilaro (MRF)\"])},\n \"keyword\": {\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anstataŭigi\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rifuzi\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigo el la historio de la «Federa historio»\"])},\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Politiko pri ĉefvortoj\"])}\n },\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federado\"])},\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Politikoj de Mesaĝa ŝanĝilaro (MRF) efikas sur federa konduto de la nodo. La sekvaj politikoj estas ŝaltitaj:\"])}\n }\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elekti ĉion\"])}\n },\n \"remote_user_resolver\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netrovinte.\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉante\"])},\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trovilo de foraj uzantoj\"])}\n },\n \"interactions\": {\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi pli malnovajn interagojn\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Migrado de uzantoj\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Novaj abonoj\"])},\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripetoj kaj ŝatoj\"])},\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildosignaj reagoj\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raportoj\"])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma ne povis aliri deponejon de la foliumilo. Via saluto kaj viaj lokaj agordoj ne estos konservitaj, kaj vi eble renkontos neatenditajn problemojn. Provu permesi kuketojn.\"])}\n },\n \"status\": {\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi enhavon\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri enhavon\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi plenan temon\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri plenan temon\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", enhavas vortojn:\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fadeno silentigita\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kopii ligilon al afiŝo\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝo ne estas disponebla\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsilentigi interparolon\"])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigi interparolon\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Respondoj:\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Responde al\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas forigi ĉi tiun afiŝon?\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Senlegosigni\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legosigni\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fiksita\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfiksi de profilo\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fiksi al profilo\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi afiŝon\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripetoj\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝatoj\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo foriĝis\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konsterna\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etendi\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ekstera fonto\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mencioj\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Vi)\"])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \" pli\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri ĉiujn kunsendaĵojn\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi iujn kunsendaĵojn\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Afiŝo havas \", _interpolate(_named(\"number\")), \" kunsendaĵo(j)n\"])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri en vidilo de vidaŭdaĵoj\"])},\n \"edit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti afiŝon\"])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Respondoj (+\", _interpolate(_named(\"numReplies\")), \" alia):\"]), _normalize([\"Respondoj (+\", _interpolate(_named(\"numReplies\")), \" aliaj):\"])])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malkaŝi ĉi tiun fadenon\"])},\n \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Montri ĉion en ĉi tiu fadeno (\", _interpolate(_named(\"numStatus\")), \" afiŝon sume, maksimume en profundeco \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"Montri ĉion en ĉi tiu fadeno (\", _interpolate(_named(\"numStatus\")), \" afiŝojn sume, maksimume en profundeco \", _interpolate(_named(\"depth\")), \")\"])])},\n \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Montri plenan interparolon (\", _interpolate(_named(\"numStatus\")), \" alian afiŝon)\"]), _normalize([\"Montri plenan interparolon (\", _interpolate(_named(\"numStatus\")), \" aliajn afiŝojn)\"])])},\n \"edited_at\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(lastafoje redaktita je \", _interpolate(_named(\"time\")), \")\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi kunsendaĵon\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭvidi priskribon (malfermu kunsendaĵon por vidi plenan priskribon)\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi kunsendaĵon\"])},\n \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉesigi ludilon de [Flash]\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝovi kunsendaĵon antaŭen\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝovi kunsendaĵon posten\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi ĉi tiun fadenon\"])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Montri ceteron de ĉi tiu fadeno (\", _interpolate(_named(\"numStatus\")), \" afiŝon sume)\"]), _normalize([\"Montri ceteron de ĉi tiu fadeno (\", _interpolate(_named(\"numStatus\")), \" afiŝojn sume)\"])])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Vidi \", _interpolate(_named(\"numReplies\")), \" alian respondon sub ĉi tiu afiŝo\"]), _normalize([\"Vidi \", _interpolate(_named(\"numReplies\")), \" aliajn respondojn sub ĉi tiu afiŝo\"])])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri nur respondojn al ĉi tiu afiŝo\"])},\n \"status_history\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Historio de afiŝo\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfermi galerion\"])},\n \"delete_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmo de forigo\"])},\n \"delete_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi\"])},\n \"repeat_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas ripeti ĉi tiun afiŝon?\"])},\n \"repeat_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmo de ripeto\"])},\n \"repeat_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripeti\"])},\n \"repeat_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne ripeti\"])},\n \"delete_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne forigi\"])}\n },\n \"time\": {\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"j\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"j\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" jaroj\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" jaro\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" semajnoj\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" semajno\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"sek\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"sek\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" sekundoj\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" sekundo\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nun\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ĵus\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"m\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"m\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" monatoj\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" monato\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minutoj\"])},\n \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minuto\"])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"antaŭ \", _interpolate(_list(0))])},\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"post \", _interpolate(_list(0))])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"hor\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"hor\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" horoj\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" horo\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"t\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"t\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" tagoj\"])},\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" tago\"])},\n \"unit\": {\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" tago\"]), _normalize([_interpolate(_list(0)), \" tagoj\"])])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" minuto\"]), _normalize([_interpolate(_list(0)), \" minutoj\"])])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"t\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" horo\"]), _normalize([_interpolate(_list(0)), \" horoj\"])])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" monato\"]), _normalize([_interpolate(_list(0)), \" monatoj\"])])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" sekundo\"]), _normalize([_interpolate(_list(0)), \" sekundoj\"])])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"sek\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" semajno\"]), _normalize([_interpolate(_list(0)), \" semajnoj\"])])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"sem\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" jaro\"]), _normalize([_interpolate(_list(0)), \" jaroj\"])])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"j\"])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Personoj\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj rezultoj\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" personoj parolas\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" persono parolas\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kradvortoj\"])},\n \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj pliaj rezultoj\"])},\n \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi pliajn rezultojn\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hodiaŭ\"])}\n },\n \"file_type\": {\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dosiero\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildo\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filmo\"])},\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sono\"])}\n },\n \"chats\": {\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi ankoraŭ havas neniun babilon. Komencu novan babilon!\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Io misokazis dum sendado de la mesaĝo.\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Io misokazis dum enlego de la babilo.\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas forigi ĉi tiun mesaĝon?\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pli\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne povas sendi malplenan mesaĝon\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nova babilo\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babiloj\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi:\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Mesaĝi al \", _interpolate(_named(\"nickname\"))])}\n },\n \"password_reset\": {\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi devas restarigi vian pasvorton, sed restarigado de pasvortoj estas malŝaltita. Bonvolu kontakti la administranton de via nodo.\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi devas restarigi vian pasvorton por saluti.\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigado de pasvortoj estas malŝaltita. Bonvolu kontakti la administranton de via nodo.\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi atingis la limon de provoj, reprovu pli poste.\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reiri al la hejmpaĝo\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontrolu vian retpoŝton pro ligilo por restarigi vian pasvorton.\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Via retpoŝtadreso aŭ uzantonomo\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigu vian retpoŝtadreson aŭ uzantonomon. Ni sendos al vi ligilon por restarigi vian pasvorton.\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigi pasvorton\"])},\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi forgesis pasvorton?\"])}\n },\n \"user_reporting\": {\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris traktado de via peto.\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sendi\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Plusendi al \", _interpolate(_list(0))])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La konto venas de alia servilo. Ĉu kopio de la raporto sendiĝu ankaŭ tien?\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldonaj komentoj\"])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu raporto sendiĝos al reguligistoj de via nodo. Vi povas komprenigi kial vi raportas ĉi tiun konton sube:\"])},\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Raportante \", _interpolate(_list(0))])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kriujo\"])}\n },\n \"report\": {\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raportinto:\"])},\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raportito:\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raportitaj afiŝoj:\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notoj:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝo:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfermita\"])},\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermita\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Solvita\"])}\n },\n \"lists\": {\n \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Redaktado de listo \", _interpolate(_named(\"listTitle\"))])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Listoj\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nova listo\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomo de listo\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉi uzantojn\"])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Krei\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi ŝanĝojn\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi liston\"])},\n \"following_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limigi al abonatoj\"])},\n \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mastrumi listojn\"])},\n \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mastrumi listanojn\"])},\n \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉi pliajn uzantojn\"])},\n \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi de listo\"])},\n \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldoni al listo\"])},\n \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jam en listo\"])},\n \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kreado de nova listo\"])},\n \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi nomon\"])},\n \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas forigi la liston?\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Eraris umado je listoj: \", _interpolate(_list(0))])}\n },\n \"update\": {\n \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ni longe ne eldonis novan version, kaj tial aferoj eble aspektos iom malsame, ol antaŭe.\"])},\n \"update_bugs\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Bonvolu raporti problemojn kaj erarojn ĉe \", _interpolate(_named(\"pleromaGitlab\")), \", ĉar ni ŝanĝis multon, kaj kvankam ni zorge testas kaj mem uzas la prilaboratajn versiojn, ni tamen povas preteratenti ion. Ni bonvenigas viajn rimarkojn kaj proponojn pri renkontitaj eraroj aŭ proponoj plibonigi Pleromon.\"])},\n \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bonvolu pacienci\"])},\n \"update_bugs_gitlab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GitLab de Pleroma\"])},\n \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Por legi detalojn pri ŝanĝoj, vidu \", _interpolate(_named(\"theFullChangelog\")), \".\"])},\n \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"la plenan ŝanĝaron\"])},\n \"art_by\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Arto de \", _interpolate(_named(\"linkToArtist\"))])}\n },\n \"unicode_domain_indicator\": {\n \"tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu retnomo enhavas signojn ekster ASCII.\"])}\n },\n \"announcements\": {\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tio estas tuttaga okazo\"])},\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anoncoj\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anonco\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marki legita\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entajpu vian anoncon tie ĉi…\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝi\"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraro: \", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Komenca tempo: \"])},\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fina tempo: \"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Publikigita je \", _interpolate(_named(\"time\"))])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Komenciĝas je \", _interpolate(_named(\"time\"))])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Finiĝas je \", _interpolate(_named(\"time\"))])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝi\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuligi\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu anonco estas neaktiva\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝi anoncon\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","list","_list","named","_named","plural","_plural"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/i18n/eo-json.d81690d5be30b23e516b.js b/priv/static/static/js/i18n/eo-json.d81690d5be30b23e516b.js @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[4646],{97898:(n,o,e)=>{e.r(o),e.d(o,{default:()=>r});const r={chat:{title:n=>{const{normalize:o}=n;return o(["Babilejo"])}},features_panel:{chat:n=>{const{normalize:o}=n;return o(["Babilejo"])},gopher:n=>{const{normalize:o}=n;return o(["Gopher"])},media_proxy:n=>{const{normalize:o}=n;return o(["Vidaŭdaĵa retperilo"])},scope_options:n=>{const{normalize:o}=n;return o(["Agordoj de amplekso"])},text_limit:n=>{const{normalize:o}=n;return o(["Limo de teksto"])},title:n=>{const{normalize:o}=n;return o(["Funkcioj"])},who_to_follow:n=>{const{normalize:o}=n;return o(["Kiun aboni"])},pleroma_chat_messages:n=>{const{normalize:o}=n;return o(["Babilejo de Pleroma"])},upload_limit:n=>{const{normalize:o}=n;return o(["Limo de alŝutoj"])},shout:n=>{const{normalize:o}=n;return o(["Kriujo"])}},finder:{error_fetching_user:n=>{const{normalize:o}=n;return o(["Eraris alporto de uzanto"])},find_user:n=>{const{normalize:o}=n;return o(["Trovi uzanton"])}},general:{apply:n=>{const{normalize:o}=n;return o(["Apliki"])},submit:n=>{const{normalize:o}=n;return o(["Sendi"])},more:n=>{const{normalize:o}=n;return o(["Pli"])},generic_error:n=>{const{normalize:o}=n;return o(["Eraro okazis"])},optional:n=>{const{normalize:o}=n;return o(["malnepra"])},close:n=>{const{normalize:o}=n;return o(["Fermi"])},verify:n=>{const{normalize:o}=n;return o(["Kontroli"])},confirm:n=>{const{normalize:o}=n;return o(["Konfirmi"])},enable:n=>{const{normalize:o}=n;return o(["Ŝalti"])},disable:n=>{const{normalize:o}=n;return o(["Malŝalti"])},cancel:n=>{const{normalize:o}=n;return o(["Nuligi"])},dismiss:n=>{const{normalize:o}=n;return o(["Forlasi"])},show_less:n=>{const{normalize:o}=n;return o(["Montri malplion"])},show_more:n=>{const{normalize:o}=n;return o(["Montri plion"])},retry:n=>{const{normalize:o}=n;return o(["Reprovi"])},error_retry:n=>{const{normalize:o}=n;return o(["Bonvolu reprovi"])},loading:n=>{const{normalize:o}=n;return o(["Enlegante…"])},peek:n=>{const{normalize:o}=n;return o(["Antaŭmontri"])},role:{moderator:n=>{const{normalize:o}=n;return o(["Reguligisto"])},admin:n=>{const{normalize:o}=n;return o(["Administranto"])}},flash_content:n=>{const{normalize:o}=n;return o(["Klaku por montri enhavon de Flash per Ruffle. (Eksperimente, eble ne funkcios.)"])},flash_security:n=>{const{normalize:o}=n;return o(["Sciu, ke tio povas esti danĝera, ĉar la enhavo de Flash ja estas arbitra programo."])},flash_fail:n=>{const{normalize:o}=n;return o(["Malsukcesis enlegi enhavon de Flash; vidu detalojn en konzolo."])},scope_in_timeline:{direct:n=>{const{normalize:o}=n;return o(["Persona"])},private:n=>{const{normalize:o}=n;return o(["Nur abonantoj"])},public:n=>{const{normalize:o}=n;return o(["Publika"])},unlisted:n=>{const{normalize:o}=n;return o(["Nelistigita"])}},generic_error_message:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Eraris: ",e(r(0))])},never_show_again:n=>{const{normalize:o}=n;return o(["Neniam remontri"])},undo:n=>{const{normalize:o}=n;return o(["Malfari"])},yes:n=>{const{normalize:o}=n;return o(["Jes"])},no:n=>{const{normalize:o}=n;return o(["Ne"])},unpin:n=>{const{normalize:o}=n;return o(["Malfiksi eron"])},pin:n=>{const{normalize:o}=n;return o(["Fiksi eron"])},scroll_to_top:n=>{const{normalize:o}=n;return o(["Rulumi supren"])}},image_cropper:{crop_picture:n=>{const{normalize:o}=n;return o(["Tondi bildon"])},save:n=>{const{normalize:o}=n;return o(["Konservi"])},cancel:n=>{const{normalize:o}=n;return o(["Nuligi"])},save_without_cropping:n=>{const{normalize:o}=n;return o(["Konservi sen tondado"])}},login:{login:n=>{const{normalize:o}=n;return o(["Saluti"])},description:n=>{const{normalize:o}=n;return o(["Saluti per OAuth"])},logout:n=>{const{normalize:o}=n;return o(["Adiaŭi"])},password:n=>{const{normalize:o}=n;return o(["Pasvorto"])},placeholder:n=>{const{normalize:o}=n;return o(["ekz. lain"])},register:n=>{const{normalize:o}=n;return o(["Registriĝi"])},username:n=>{const{normalize:o}=n;return o(["Uzantonomo"])},hint:n=>{const{normalize:o}=n;return o(["Salutu por partopreni la diskutadon"])},heading:{recovery:n=>{const{normalize:o}=n;return o(["Rehavo de duobla aŭtentikigo"])},totp:n=>{const{normalize:o}=n;return o(["Duobla aŭtentikigo"])}},recovery_code:n=>{const{normalize:o}=n;return o(["Rehava kodo"])},enter_two_factor_code:n=>{const{normalize:o}=n;return o(["Enigu kodon de duobla aŭtentikigo"])},enter_recovery_code:n=>{const{normalize:o}=n;return o(["Enigu rehavan kodon"])},authentication_code:n=>{const{normalize:o}=n;return o(["Aŭtentikiga kodo"])}},media_modal:{previous:n=>{const{normalize:o}=n;return o(["Antaŭa"])},next:n=>{const{normalize:o}=n;return o(["Sekva"])},counter:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("current"))," / ",e(r("total"))])},hide:n=>{const{normalize:o}=n;return o(["Fermi vidilon de vidaŭdaĵoj"])}},nav:{about:n=>{const{normalize:o}=n;return o(["Pri"])},back:n=>{const{normalize:o}=n;return o(["Reen"])},chat:n=>{const{normalize:o}=n;return o(["Loka babilejo"])},friend_requests:n=>{const{normalize:o}=n;return o(["Petoj pri abono"])},mentions:n=>{const{normalize:o}=n;return o(["Mencioj"])},dms:n=>{const{normalize:o}=n;return o(["Rektaj mesaĝoj"])},public_tl:n=>{const{normalize:o}=n;return o(["Noda historio"])},timeline:n=>{const{normalize:o}=n;return o(["Historio"])},twkn:n=>{const{normalize:o}=n;return o(["Federa historio"])},user_search:n=>{const{normalize:o}=n;return o(["Serĉi uzantojn"])},who_to_follow:n=>{const{normalize:o}=n;return o(["Kiun aboni"])},preferences:n=>{const{normalize:o}=n;return o(["Agordoj"])},chats:n=>{const{normalize:o}=n;return o(["Babiloj"])},search:n=>{const{normalize:o}=n;return o(["Serĉi"])},interactions:n=>{const{normalize:o}=n;return o(["Interagoj"])},administration:n=>{const{normalize:o}=n;return o(["Administrado"])},bookmarks:n=>{const{normalize:o}=n;return o(["Legosignoj"])},timelines:n=>{const{normalize:o}=n;return o(["Historioj"])},home_timeline:n=>{const{normalize:o}=n;return o(["Hejma historio"])},edit_pinned:n=>{const{normalize:o}=n;return o(["Redakti fiksitajn erojn"])},lists:n=>{const{normalize:o}=n;return o(["Listoj"])},edit_nav_mobile:n=>{const{normalize:o}=n;return o(["Adapti navigan breton"])},edit_finish:n=>{const{normalize:o}=n;return o(["Fini redakton"])},mobile_notifications:n=>{const{normalize:o}=n;return o(["Malfermi sciigojn (estas nelegitaj)"])},mobile_notifications_close:n=>{const{normalize:o}=n;return o(["Fermi sciigojn"])},announcements:n=>{const{normalize:o}=n;return o(["Anoncoj"])}},notifications:{broken_favorite:n=>{const{normalize:o}=n;return o(["Nekonata afiŝo, serĉante ĝin…"])},favorited_you:n=>{const{normalize:o}=n;return o(["ŝatis vian afiŝon"])},followed_you:n=>{const{normalize:o}=n;return o(["ekabonis vin"])},load_older:n=>{const{normalize:o}=n;return o(["Enlegi pli malnovajn sciigojn"])},notifications:n=>{const{normalize:o}=n;return o(["Sciigoj"])},read:n=>{const{normalize:o}=n;return o(["Legite!"])},repeated_you:n=>{const{normalize:o}=n;return o(["ripetis vian afiŝon"])},no_more_notifications:n=>{const{normalize:o}=n;return o(["Neniuj pliaj sciigoj"])},reacted_with:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["reagis per ",e(r(0))])},migrated_to:n=>{const{normalize:o}=n;return o(["migris al"])},follow_request:n=>{const{normalize:o}=n;return o(["volas vin aboni"])},error:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Eraris akirado de sciigoj: ",e(r(0))])},submitted_report:n=>{const{normalize:o}=n;return o(["sendis raporton"])},poll_ended:n=>{const{normalize:o}=n;return o(["enketo finiĝis"])}},post_status:{new_status:n=>{const{normalize:o}=n;return o(["Afiŝi"])},account_not_locked_warning:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Via konto ne estas ",e(r(0)),". Iu ajn povas vin aboni por vidi eĉ viajn afiŝoj nur por abonantoj."])},account_not_locked_warning_link:n=>{const{normalize:o}=n;return o(["ŝlosita"])},attachments_sensitive:n=>{const{normalize:o}=n;return o(["Marki kunsendaĵojn konsternaj"])},content_type:{"text/plain":n=>{const{normalize:o}=n;return o(["Plata teksto"])},"text/bbcode":n=>{const{normalize:o}=n;return o(["BBCode"])},"text/markdown":n=>{const{normalize:o}=n;return o(["Markdown"])},"text/html":n=>{const{normalize:o}=n;return o(["HTML"])}},content_warning:n=>{const{normalize:o}=n;return o(["Temo (malnepra)"])},default:n=>{const{normalize:o}=n;return o(["Ĵus alvenis Esperantujon!"])},direct_warning:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo estos videbla nur por ĉiuj menciitaj uzantoj."])},posting:n=>{const{normalize:o}=n;return o(["Afiŝante"])},scope:{direct:n=>{const{normalize:o}=n;return o(["Rekta – afiŝi nur al menciitaj uzantoj"])},private:n=>{const{normalize:o}=n;return o(["Nur abonantoj – afiŝi nur al abonantoj"])},public:n=>{const{normalize:o}=n;return o(["Publika – afiŝi al publikaj historioj"])},unlisted:n=>{const{normalize:o}=n;return o(["Nelistigita – ne afiŝi al publikaj historioj"])}},scope_notice:{unlisted:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo ne estos videbla en la Noda kaj la Federa historioj"])},private:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo estos videbla nur al viaj abonantoj"])},public:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo estos videbla al ĉiuj"])}},media_description_error:n=>{const{normalize:o}=n;return o(["Malsukcesis afiŝo de vidaŭdaĵoj; reprovu"])},empty_status_error:n=>{const{normalize:o}=n;return o(["Ne povas fari malplenan afiŝon sen dosieroj"])},preview_empty:n=>{const{normalize:o}=n;return o(["Malplena"])},preview:n=>{const{normalize:o}=n;return o(["Antaŭrigardo"])},direct_warning_to_first_only:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo estas nur videbla al uzantoj menciitaj je la komenco de la mesaĝo."])},direct_warning_to_all:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo estos videbla al ĉiuj menciitaj uzantoj."])},media_description:n=>{const{normalize:o}=n;return o(["Priskribo de vidaŭdaĵo"])},post:n=>{const{normalize:o}=n;return o(["Afiŝo"])},edit_remote_warning:n=>{const{normalize:o}=n;return o(["Aliaj foraj nodoj eble ne subtenas redaktadon, kaj ne povos ricevi pli novan version de via afiŝo."])},edit_unsupported_warning:n=>{const{normalize:o}=n;return o(["Pleroma ne subtenas redaktadon de mencioj aŭ enketoj."])},edit_status:n=>{const{normalize:o}=n;return o(["Redakti afiŝon"])}},registration:{bio:n=>{const{normalize:o}=n;return o(["Priskribo"])},email:n=>{const{normalize:o}=n;return o(["Retpoŝtadreso"])},fullname:n=>{const{normalize:o}=n;return o(["Prezenta nomo"])},password_confirm:n=>{const{normalize:o}=n;return o(["Konfirmo de pasvorto"])},registration:n=>{const{normalize:o}=n;return o(["Registriĝo"])},token:n=>{const{normalize:o}=n;return o(["Invita peco"])},captcha:n=>{const{normalize:o}=n;return o(["TESTO DE HOMECO"])},new_captcha:n=>{const{normalize:o}=n;return o(["Klaku la bildon por akiri novan teston"])},username_placeholder:n=>{const{normalize:o}=n;return o(["ekz. lain"])},fullname_placeholder:n=>{const{normalize:o}=n;return o(["ekz. Lain Ivakura"])},bio_placeholder:n=>{const{normalize:o}=n;return o(["ekz.\nSaluton, mi estas Lain.\nMi estas animea knabino vivanta en Japanujo. Eble vi konas min pro la retejo « Wired »."])},validations:{username_required:n=>{const{normalize:o}=n;return o(["ne povas resti malplena"])},fullname_required:n=>{const{normalize:o}=n;return o(["ne povas resti malplena"])},email_required:n=>{const{normalize:o}=n;return o(["ne povas resti malplena"])},password_required:n=>{const{normalize:o}=n;return o(["ne povas resti malplena"])},password_confirmation_required:n=>{const{normalize:o}=n;return o(["ne povas resti malplena"])},password_confirmation_match:n=>{const{normalize:o}=n;return o(["samu la pasvorton"])}},reason_placeholder:n=>{const{normalize:o}=n;return o(["Ĉi-node oni aprobas registriĝojn permane.\nSciigu la administrantojn kial vi volas registriĝi."])},reason:n=>{const{normalize:o}=n;return o(["Kialo registriĝi"])},register:n=>{const{normalize:o}=n;return o(["Registriĝi"])},bio_optional:n=>{const{normalize:o}=n;return o(["Prio (malnepra)"])},email_optional:n=>{const{normalize:o}=n;return o(["Retpoŝtadreso (malnepra)"])},email_language:n=>{const{normalize:o}=n;return o(["En kiu lingvo vi volus ricevi retleterojn de la servilo?"])}},settings:{app_name:n=>{const{normalize:o}=n;return o(["Nomo de aplikaĵo"])},attachmentRadius:n=>{const{normalize:o}=n;return o(["Kunsendaĵoj"])},attachments:n=>{const{normalize:o}=n;return o(["Kunsendaĵoj"])},avatar:n=>{const{normalize:o}=n;return o(["Profilbildo"])},avatarAltRadius:n=>{const{normalize:o}=n;return o(["Profilbildoj (sciigoj)"])},avatarRadius:n=>{const{normalize:o}=n;return o(["Profilbildoj"])},background:n=>{const{normalize:o}=n;return o(["Fono"])},bio:n=>{const{normalize:o}=n;return o(["Priskribo"])},blocks_tab:n=>{const{normalize:o}=n;return o(["Blokitoj"])},btnRadius:n=>{const{normalize:o}=n;return o(["Butonoj"])},cBlue:n=>{const{normalize:o}=n;return o(["Blua (respondi, aboni)"])},cGreen:n=>{const{normalize:o}=n;return o(["Verda (diskonigi)"])},cOrange:n=>{const{normalize:o}=n;return o(["Oranĝa (ŝati)"])},cRed:n=>{const{normalize:o}=n;return o(["Ruĝa (nuligi)"])},change_password:n=>{const{normalize:o}=n;return o(["Ŝanĝi pasvorton"])},change_password_error:n=>{const{normalize:o}=n;return o(["Eraris ŝanĝo de via pasvorto."])},changed_password:n=>{const{normalize:o}=n;return o(["Pasvorto sukcese ŝanĝiĝis!"])},collapse_subject:n=>{const{normalize:o}=n;return o(["Maletendi afiŝojn kun temoj"])},composing:n=>{const{normalize:o}=n;return o(["Verkado"])},confirm_new_password:n=>{const{normalize:o}=n;return o(["Konfirmu novan pasvorton"])},current_avatar:n=>{const{normalize:o}=n;return o(["Via nuna profilbildo"])},current_password:n=>{const{normalize:o}=n;return o(["Nuna pasvorto"])},current_profile_banner:n=>{const{normalize:o}=n;return o(["Via nuna profila rubando"])},data_import_export_tab:n=>{const{normalize:o}=n;return o(["Enporto / Elporto de datumoj"])},default_vis:n=>{const{normalize:o}=n;return o(["Implicita amplekso de vidibleco"])},delete_account:n=>{const{normalize:o}=n;return o(["Forigi konton"])},delete_account_description:n=>{const{normalize:o}=n;return o(["Por ĉiam forigi viajn datumojn kaj malaktivigi vian konton."])},delete_account_error:n=>{const{normalize:o}=n;return o(["Eraris forigo de via kanto. Se tio daŭre ripetiĝos, bonvolu kontakti la administranton de via nodo."])},delete_account_instructions:n=>{const{normalize:o}=n;return o(["Entajpu sube vian pasvorton por konfirmi forigon de konto."])},avatar_size_instruction:n=>{const{normalize:o}=n;return o(["La rekomendata minimuma grando de profilbildoj estas 150×150 bilderoj."])},export_theme:n=>{const{normalize:o}=n;return o(["Konservi antaŭagordon"])},filtering:n=>{const{normalize:o}=n;return o(["Filtrado"])},filtering_explanation:n=>{const{normalize:o}=n;return o(["Ĉiuj afiŝoj kun tiuj ĉi vortoj silentiĝos; skribu po unu linie"])},follow_export:n=>{const{normalize:o}=n;return o(["Elporto de abonoj"])},follow_export_button:n=>{const{normalize:o}=n;return o(["Elporti viajn abonojn al CSV-dosiero"])},follow_export_processing:n=>{const{normalize:o}=n;return o(["Traktante; baldaŭ vi ricevos peton elŝuti la dosieron"])},follow_import:n=>{const{normalize:o}=n;return o(["Enporto de abonoj"])},follow_import_error:n=>{const{normalize:o}=n;return o(["Eraro enportante abonojn"])},follows_imported:n=>{const{normalize:o}=n;return o(["Abonoj enportiĝis! Traktado daŭros iom da tempo."])},foreground:n=>{const{normalize:o}=n;return o(["Malfono"])},general:n=>{const{normalize:o}=n;return o(["Ĝenerala"])},hide_attachments_in_convo:n=>{const{normalize:o}=n;return o(["Kaŝi kunsendaĵojn en interparoloj"])},hide_attachments_in_tl:n=>{const{normalize:o}=n;return o(["Kaŝi kunsendaĵojn en historioj"])},max_thumbnails:n=>{const{normalize:o}=n;return o(["Maksimuma nombro da bildetoj en afiŝo"])},hide_isp:n=>{const{normalize:o}=n;return o(["Kaŝi breton propran al nodo"])},preload_images:n=>{const{normalize:o}=n;return o(["Antaŭ-enlegi bildojn"])},use_one_click_nsfw:n=>{const{normalize:o}=n;return o(["Malfermi konsternajn kunsendaĵojn per nur unu klako"])},hide_post_stats:n=>{const{normalize:o}=n;return o(["Kaŝi statistikon de afiŝoj (ekz. nombron de ŝatoj)"])},hide_user_stats:n=>{const{normalize:o}=n;return o(["Kaŝi statistikon de uzantoj (ekz. nombron de abonantoj)"])},hide_filtered_statuses:n=>{const{normalize:o}=n;return o(["Kaŝi ĉiujn filtritajn afiŝojn"])},import_followers_from_a_csv_file:n=>{const{normalize:o}=n;return o(["Enporti abonojn el CSV-dosiero"])},import_theme:n=>{const{normalize:o}=n;return o(["Enlegi antaŭagordojn"])},inputRadius:n=>{const{normalize:o}=n;return o(["Enigaj kampoj"])},checkboxRadius:n=>{const{normalize:o}=n;return o(["Markbutonoj"])},instance_default:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["(originale: ",e(r("value")),")"])},instance_default_simple:n=>{const{normalize:o}=n;return o(["(originale)"])},interface:n=>{const{normalize:o}=n;return o(["Fasado"])},interfaceLanguage:n=>{const{normalize:o}=n;return o(["Lingvo de fasado"])},invalid_theme_imported:n=>{const{normalize:o}=n;return o(["La elektita dosiero ne estas subtenata haŭto de Pleromo. Neniuj ŝanĝoj al via haŭto okazis."])},limited_availability:n=>{const{normalize:o}=n;return o(["Nehavebla en via foliumilo"])},links:n=>{const{normalize:o}=n;return o(["Ligiloj"])},lock_account_description:n=>{const{normalize:o}=n;return o(["Limigi vian konton al nur abonantoj aprobitaj"])},loop_video:n=>{const{normalize:o}=n;return o(["Ripetadi filmojn"])},loop_video_silent_only:n=>{const{normalize:o}=n;return o(["Ripetadi nur filmojn sen sono (ekz. la «GIF-ojn» de Mastodon)"])},mutes_tab:n=>{const{normalize:o}=n;return o(["Silentigoj"])},play_videos_in_modal:n=>{const{normalize:o}=n;return o(["Ludi filmojn en ŝpruca kadro"])},use_contain_fit:n=>{const{normalize:o}=n;return o(["Ne pritondi bildetojn de kunsendaĵoj"])},name:n=>{const{normalize:o}=n;return o(["Nomo"])},name_bio:n=>{const{normalize:o}=n;return o(["Nomo kaj priskribo"])},new_password:n=>{const{normalize:o}=n;return o(["Nova pasvorto"])},notification_visibility:n=>{const{normalize:o}=n;return o(["Montrotaj specoj de sciigoj"])},notification_visibility_follows:n=>{const{normalize:o}=n;return o(["Abonoj"])},notification_visibility_likes:n=>{const{normalize:o}=n;return o(["Ŝatoj"])},notification_visibility_mentions:n=>{const{normalize:o}=n;return o(["Mencioj"])},notification_visibility_repeats:n=>{const{normalize:o}=n;return o(["Ripetoj"])},no_rich_text_description:n=>{const{normalize:o}=n;return o(["Forigi riĉtekstajn formojn de ĉiuj afiŝoj"])},no_blocks:n=>{const{normalize:o}=n;return o(["Neniuj blokitoj"])},no_mutes:n=>{const{normalize:o}=n;return o(["Neniuj silentigoj"])},hide_follows_description:n=>{const{normalize:o}=n;return o(["Ne montri kiun mi sekvas"])},hide_followers_description:n=>{const{normalize:o}=n;return o(["Ne montri kiu min sekvas"])},show_admin_badge:n=>{const{normalize:o}=n;return o(["Montri la insignon de administranto en mia profilo"])},show_moderator_badge:n=>{const{normalize:o}=n;return o(["Montri la insignon de reguligisto en mia profilo"])},nsfw_clickthrough:n=>{const{normalize:o}=n;return o(["Ŝalti traklakan kaŝadon de kunsendaĵoj kaj antaŭmontroj de ligiloj por konsternaj afiŝoj"])},oauth_tokens:n=>{const{normalize:o}=n;return o(["Pecoj de OAuth"])},token:n=>{const{normalize:o}=n;return o(["Peco"])},refresh_token:n=>{const{normalize:o}=n;return o(["Aktualiga peco"])},valid_until:n=>{const{normalize:o}=n;return o(["Valida ĝis"])},revoke_token:n=>{const{normalize:o}=n;return o(["Senvalidigi"])},panelRadius:n=>{const{normalize:o}=n;return o(["Bretoj"])},pause_on_unfocused:n=>{const{normalize:o}=n;return o(["Paŭzigi elsendfluon kiam langeto ne estas fokusata"])},presets:n=>{const{normalize:o}=n;return o(["Antaŭagordoj"])},profile_background:n=>{const{normalize:o}=n;return o(["Fono de profilo"])},profile_banner:n=>{const{normalize:o}=n;return o(["Rubando de profilo"])},profile_tab:n=>{const{normalize:o}=n;return o(["Profilo"])},radii_help:n=>{const{normalize:o}=n;return o(["Agordi fasadan rondigon de randoj (bildere)"])},replies_in_timeline:n=>{const{normalize:o}=n;return o(["Respondoj en historioj"])},reply_visibility_all:n=>{const{normalize:o}=n;return o(["Montri ĉiujn respondojn"])},reply_visibility_following:n=>{const{normalize:o}=n;return o(["Montri nur respondojn por mi aŭ miaj abonatoj"])},reply_visibility_self:n=>{const{normalize:o}=n;return o(["Montri nur respondojn por mi"])},saving_err:n=>{const{normalize:o}=n;return o(["Eraris konservado de agordoj"])},saving_ok:n=>{const{normalize:o}=n;return o(["Agordoj konserviĝis"])},security_tab:n=>{const{normalize:o}=n;return o(["Sekureco"])},scope_copy:n=>{const{normalize:o}=n;return o(["Kopii amplekson por respondo (rektaj mesaĝoj ĉiam kopiiĝas)"])},set_new_avatar:n=>{const{normalize:o}=n;return o(["Agordi novan profilbildon"])},set_new_profile_background:n=>{const{normalize:o}=n;return o(["Agordi novan fonon de profilo"])},set_new_profile_banner:n=>{const{normalize:o}=n;return o(["Agordi novan rubandon de profilo"])},settings:n=>{const{normalize:o}=n;return o(["Agordoj"])},subject_input_always_show:n=>{const{normalize:o}=n;return o(["Ĉiam montri kampon de temo"])},subject_line_behavior:n=>{const{normalize:o}=n;return o(["Kopii temon dum respondado"])},subject_line_email:n=>{const{normalize:o}=n;return o(["Kiel retpoŝto: «re: temo»"])},subject_line_mastodon:n=>{const{normalize:o}=n;return o(["Kiel Mastodon: kopii senŝanĝe"])},subject_line_noop:n=>{const{normalize:o}=n;return o(["Ne kopii"])},post_status_content_type:n=>{const{normalize:o}=n;return o(["Speco de enhavo de afiŝo"])},stop_gifs:n=>{const{normalize:o}=n;return o(["Movi GIF-bildojn dum ŝvebo de muso"])},streaming:n=>{const{normalize:o}=n;return o(["Ŝalti memagan fluigon de novaj afiŝoj kiam vi vidas la supron de la paĝo"])},text:n=>{const{normalize:o}=n;return o(["Teksto"])},theme:n=>{const{normalize:o}=n;return o(["Haŭto"])},theme_help:n=>{const{normalize:o}=n;return o(["Uzu deksesumajn kolorkodojn (#rrvvbb) por adapti vian koloran haŭton."])},theme_help_v2_1:n=>{const{normalize:o}=n;return o(["Vi ankaŭ povas superagordi la kolorojn kaj travideblecon de kelkaj eroj per marko de la markbutono; uzu la butonon «Vakigi ĉion» por forigi ĉîujn superagordojn."])},theme_help_v2_2:n=>{const{normalize:o}=n;return o(["Bildsimboloj sub kelkaj eroj estas indikiloj de kontrasto inter fono kaj teksto; ŝvebigu muson por detalaj informoj. Bonvolu memori, ke la indikilo montras la plej malbonan okazeblon dum sia uzo."])},tooltipRadius:n=>{const{normalize:o}=n;return o(["Ŝpruchelpiloj/avertoj"])},upload_a_photo:n=>{const{normalize:o}=n;return o(["Alŝuti foton"])},user_settings:n=>{const{normalize:o}=n;return o(["Agordoj de uzanto"])},values:{false:n=>{const{normalize:o}=n;return o(["ne"])},true:n=>{const{normalize:o}=n;return o(["jes"])}},notifications:n=>{const{normalize:o}=n;return o(["Sciigoj"])},enable_web_push_notifications:n=>{const{normalize:o}=n;return o(["Ŝalti retajn pasivajn sciigojn"])},style:{switcher:{keep_color:n=>{const{normalize:o}=n;return o(["Konservi kolorojn"])},keep_shadows:n=>{const{normalize:o}=n;return o(["Konservi ombrojn"])},keep_opacity:n=>{const{normalize:o}=n;return o(["Konservi maltravideblecon"])},keep_roundness:n=>{const{normalize:o}=n;return o(["Konservi rondecon"])},keep_fonts:n=>{const{normalize:o}=n;return o(["Konservi tiparojn"])},save_load_hint:n=>{const{normalize:o}=n;return o(["Elektebloj de «konservi» konservas la nuntempajn agordojn dum elektado aŭ enlegado de haŭtoj. Ĝi ankaŭ konservas tiujn agordojn dum elportado de haŭto. Kun ĉiuj markbutonoj nemarkitaj, elporto de la haŭto ĉion konservos."])},reset:n=>{const{normalize:o}=n;return o(["Restarigi"])},clear_all:n=>{const{normalize:o}=n;return o(["Vakigi ĉion"])},clear_opacity:n=>{const{normalize:o}=n;return o(["Vakigi maltravideblecon"])},help:{fe_downgraded:n=>{const{normalize:o}=n;return o(["Versio de PleromaFE reen iris."])},fe_upgraded:n=>{const{normalize:o}=n;return o(["La motoro de haŭtoj de PleromaFE ĝisdatiĝis post ĝisdatigo de la versio."])},older_version_imported:n=>{const{normalize:o}=n;return o(["La enportita dosiero estis farita per pli malnova versio de PleromaFE."])},future_version_imported:n=>{const{normalize:o}=n;return o(["La enportita dosiero estis farita per pli nova versio de PleromaFE."])},v2_imported:n=>{const{normalize:o}=n;return o(["La dosiero, kiun vi enportis, estis farita por malnova versio de PleromaFE. Ni provas maksimumigi interkonformecon, sed tamen eble montriĝos misoj."])},upgraded_from_v2:n=>{const{normalize:o}=n;return o(["PleromaFE estis ĝisdatigita; la haŭto eble aspektos malsame ol kiel vi ĝin memoras."])},snapshot_missing:n=>{const{normalize:o}=n;return o(["Neniu momentokopio de haŭto estis en la dosiero, ĝi povas aspekti iom malsame ol oni intencis."])},snapshot_present:n=>{const{normalize:o}=n;return o(["Ĉiuj valoroj estas transpasataj, ĉar momentokopio de haŭto estas enlegita. Vi povas enlegi anstataŭe la aktualajn datumojn de haŭto."])},snapshot_source_mismatch:n=>{const{normalize:o}=n;return o(["Versioj konfliktas: plej probable la fasado estis reirigita kaj ree ĝisdatigita; se vi ŝanĝis la haŭton per pli malnova versio de la fasado, vi probable volas uzi la malnovan version. Alie uzu la novan."])},migration_napshot_gone:n=>{const{normalize:o}=n;return o(["Ial mankis momentokopio; io povus aspekti malsame ol en via memoro."])},migration_snapshot_ok:n=>{const{normalize:o}=n;return o(["Certige, momentokopio de la haŭto enlegiĝis. Vi povas provi enlegi datumojn de la haŭto."])}},use_source:n=>{const{normalize:o}=n;return o(["Nova versio"])},use_snapshot:n=>{const{normalize:o}=n;return o(["Malnova versio"])},keep_as_is:n=>{const{normalize:o}=n;return o(["Teni senŝanĝa"])},load_theme:n=>{const{normalize:o}=n;return o(["Enlegi haŭton"])}},common:{color:n=>{const{normalize:o}=n;return o(["Koloro"])},opacity:n=>{const{normalize:o}=n;return o(["Maltravidebleco"])},contrast:{hint:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Proporcio de kontrasto estas ",e(r("ratio")),", ĝi ",e(r("level"))," ",e(r("context"))])},level:{aa:n=>{const{normalize:o}=n;return o(["plenumas la gvidilon je nivelo AA (minimuma)"])},aaa:n=>{const{normalize:o}=n;return o(["plenumas la gvidilon je nivela AAA (rekomendita)"])},bad:n=>{const{normalize:o}=n;return o(["plenumas neniujn faciluzajn gvidilojn"])}},context:{"18pt":n=>{const{normalize:o}=n;return o(["por granda (18pt+) teksto"])},text:n=>{const{normalize:o}=n;return o(["por teksto"])}}}},common_colors:{_tab_label:n=>{const{normalize:o}=n;return o(["Komunaj"])},main:n=>{const{normalize:o}=n;return o(["Komunaj koloroj"])},foreground_hint:n=>{const{normalize:o}=n;return o(["Vidu langeton «Specialaj» por pli detalaj agordoj"])},rgbo:n=>{const{normalize:o}=n;return o(["Bildsimboloj, emfazoj, insignoj"])}},advanced_colors:{_tab_label:n=>{const{normalize:o}=n;return o(["Specialaj"])},alert:n=>{const{normalize:o}=n;return o(["Fono de averto"])},alert_error:n=>{const{normalize:o}=n;return o(["Eraro"])},badge:n=>{const{normalize:o}=n;return o(["Fono de insigno"])},badge_notification:n=>{const{normalize:o}=n;return o(["Sciigo"])},panel_header:n=>{const{normalize:o}=n;return o(["Kapo de breto"])},top_bar:n=>{const{normalize:o}=n;return o(["Supra breto"])},borders:n=>{const{normalize:o}=n;return o(["Limoj"])},buttons:n=>{const{normalize:o}=n;return o(["Butonoj"])},inputs:n=>{const{normalize:o}=n;return o(["Enigaj kampoj"])},faint_text:n=>{const{normalize:o}=n;return o(["Malvigla teksto"])},chat:{border:n=>{const{normalize:o}=n;return o(["Limo"])},outgoing:n=>{const{normalize:o}=n;return o(["Eliraj"])},incoming:n=>{const{normalize:o}=n;return o(["Envenaj"])}},tabs:n=>{const{normalize:o}=n;return o(["Langetoj"])},disabled:n=>{const{normalize:o}=n;return o(["Malŝaltita"])},selectedMenu:n=>{const{normalize:o}=n;return o(["Elektita menuero"])},selectedPost:n=>{const{normalize:o}=n;return o(["Elektita afiŝo"])},pressed:n=>{const{normalize:o}=n;return o(["Premita"])},highlight:n=>{const{normalize:o}=n;return o(["Emfazitaj eroj"])},icons:n=>{const{normalize:o}=n;return o(["Bildsimboloj"])},poll:n=>{const{normalize:o}=n;return o(["Grafo de enketo"])},underlay:n=>{const{normalize:o}=n;return o(["Subtavolo"])},popover:n=>{const{normalize:o}=n;return o(["Ŝprucaĵoj, menuoj"])},post:n=>{const{normalize:o}=n;return o(["Afiŝoj/Priskriboj de uzantoj"])},alert_neutral:n=>{const{normalize:o}=n;return o(["Neŭtrala"])},alert_warning:n=>{const{normalize:o}=n;return o(["Averto"])},toggled:n=>{const{normalize:o}=n;return o(["Ŝaltita"])},wallpaper:n=>{const{normalize:o}=n;return o(["Fonbildo"])}},radii:{_tab_label:n=>{const{normalize:o}=n;return o(["Rondeco"])}},shadows:{_tab_label:n=>{const{normalize:o}=n;return o(["Ombro kaj lumo"])},component:n=>{const{normalize:o}=n;return o(["Ero"])},override:n=>{const{normalize:o}=n;return o(["Transpasi"])},shadow_id:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Ombro #",e(r("value"))])},blur:n=>{const{normalize:o}=n;return o(["Malklarigo"])},spread:n=>{const{normalize:o}=n;return o(["Vastigo"])},inset:n=>{const{normalize:o}=n;return o(["Internigo"])},hint:n=>{const{normalize:o}=n;return o(["Por ombroj vi ankaŭ povas uzi --variable kiel koloran valoron, por uzi variantojn de CSS3. Bonvolu rimarki, ke tiuokaze agordoj de maltravidebleco ne funkcios."])},filter_hint:{always_drop_shadow:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Averto: ĉi tiu ombro ĉiam uzas ",e(r(0))," kiam la foliumilo tion subtenas."])},drop_shadow_syntax:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," ne subtenas parametron ",e(r(1))," kaj ĉefvorton ",e(r(2)),"."])},avatar_inset:n=>{const{normalize:o}=n;return o(["Bonvolu rimarki, ke agordi ambaŭ internajn kaj eksterajn ombrojn por profilbildoj povas redoni neatenditajn rezultojn ĉe profilbildoj travideblaj."])},spread_zero:n=>{const{normalize:o}=n;return o(["Ombroj kun vastigo > 0 aperos kvazaŭ ĝi estus fakte nulo"])},inset_classic:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Internaj ombroj uzos ",e(r(0))])}},components:{panel:n=>{const{normalize:o}=n;return o(["Breto"])},panelHeader:n=>{const{normalize:o}=n;return o(["Kapo de breto"])},topBar:n=>{const{normalize:o}=n;return o(["Supra breto"])},avatar:n=>{const{normalize:o}=n;return o(["Profilbildo de uzanto (en profila vido)"])},avatarStatus:n=>{const{normalize:o}=n;return o(["Profilbildo de uzanto (en afiŝa vido)"])},popup:n=>{const{normalize:o}=n;return o(["Ŝprucaĵoj"])},button:n=>{const{normalize:o}=n;return o(["Butono"])},buttonHover:n=>{const{normalize:o}=n;return o(["Butono (je ŝvebo)"])},buttonPressed:n=>{const{normalize:o}=n;return o(["Butono (premita)"])},buttonPressedHover:n=>{const{normalize:o}=n;return o(["Butono (je premo kaj ŝvebo)"])},input:n=>{const{normalize:o}=n;return o(["Eniga kampo"])}},hintV3:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Kolorojn de ombroj vi ankaŭ povas skribi per la sistemo ",e(r(0)),"."])}},fonts:{_tab_label:n=>{const{normalize:o}=n;return o(["Tiparoj"])},help:n=>{const{normalize:o}=n;return o(["Elektu tiparon uzotan por eroj de la fasado. Por «propra» vi devas enigi la precizan nomon de tiparo tiel, kiel ĝi aperas en la sistemo."])},components:{interface:n=>{const{normalize:o}=n;return o(["Fasado"])},input:n=>{const{normalize:o}=n;return o(["Enigaj kampoj"])},post:n=>{const{normalize:o}=n;return o(["Teksto de afiŝo"])},postCode:n=>{const{normalize:o}=n;return o(["Egallarĝa teksto en afiŝo (riĉteksto)"])}},family:n=>{const{normalize:o}=n;return o(["Nomo de tiparo"])},size:n=>{const{normalize:o}=n;return o(["Grando (en bilderoj)"])},weight:n=>{const{normalize:o}=n;return o(["Pezo (graseco)"])},custom:n=>{const{normalize:o}=n;return o(["Propra"])}},preview:{header:n=>{const{normalize:o}=n;return o(["Antaŭrigardo"])},content:n=>{const{normalize:o}=n;return o(["Enhavo"])},error:n=>{const{normalize:o}=n;return o(["Ekzempla eraro"])},button:n=>{const{normalize:o}=n;return o(["Butono"])},text:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Kelko da pliaj ",e(r(0))," kaj ",e(r(1))])},mono:n=>{const{normalize:o}=n;return o(["enhavo"])},input:n=>{const{normalize:o}=n;return o(["Ĵus alvenis Esperantujon!"])},faint_link:n=>{const{normalize:o}=n;return o(["helpan manlibron"])},fine_print:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Legu nian ",e(r(0))," por nenion utilan ekscii!"])},header_faint:n=>{const{normalize:o}=n;return o(["Tio estas en ordo"])},checkbox:n=>{const{normalize:o}=n;return o(["Mi legetis la kondiĉojn de uzado"])},link:n=>{const{normalize:o}=n;return o(["bela eta ligil’"])}}},discoverable:n=>{const{normalize:o}=n;return o(["Permesi trovon de ĉi tiu konto en serĉrezultoj kaj aliaj servoj"])},mutes_and_blocks:n=>{const{normalize:o}=n;return o(["Blokado kaj silentigoj"])},chatMessageRadius:n=>{const{normalize:o}=n;return o(["Babileja mesaĝo"])},changed_email:n=>{const{normalize:o}=n;return o(["Retpoŝtadreso sukcese ŝanĝiĝis!"])},change_email_error:n=>{const{normalize:o}=n;return o(["Eraris ŝanĝo de via retpoŝtadreso."])},change_email:n=>{const{normalize:o}=n;return o(["Ŝanĝi retpoŝtadreson"])},bot:n=>{const{normalize:o}=n;return o(["Ĉi tio estas robota konto"])},blocks_imported:n=>{const{normalize:o}=n;return o(["Blokitoj enportiĝis! Traktado daŭros iom da tempo."])},block_import_error:n=>{const{normalize:o}=n;return o(["Eraris enporto de blokitoj"])},block_export:n=>{const{normalize:o}=n;return o(["Elporto de blokitoj"])},block_import:n=>{const{normalize:o}=n;return o(["Enporto de blokitoj"])},block_export_button:n=>{const{normalize:o}=n;return o(["Elporti viajn blokitojn al CSV-dosiero"])},allow_following_move:n=>{const{normalize:o}=n;return o(["Permesi memagan abonadon kiam abonata konto migras"])},mfa:{verify:{desc:n=>{const{normalize:o}=n;return o(["Por ŝalti duoblan aŭtentikigon, enigu la kodon el via aplikaĵo por duobla aŭtentikigo:"])}},scan:{secret_code:n=>{const{normalize:o}=n;return o(["Ŝlosilo"])},desc:n=>{const{normalize:o}=n;return o(["Uzante vian aplikaĵon por duobla aŭtentikigo, skanu ĉi tiun rapidrespondan kodon aŭ enigu tekstan ŝlosilon:"])},title:n=>{const{normalize:o}=n;return o(["Skani"])}},authentication_methods:n=>{const{normalize:o}=n;return o(["Metodoj de aŭtentikigo"])},recovery_codes_warning:n=>{const{normalize:o}=n;return o(["Notu la kodojn aŭ konservu ilin en sekura loko – alie vi ne revidos ilin. Se vi perdos aliron al via aplikaĵo por duobla aŭtentikigo kaj al la rehavaj kodoj, vi ne povos aliri vian konton."])},waiting_a_recovery_codes:n=>{const{normalize:o}=n;return o(["Ricevante savkopiajn kodojn…"])},recovery_codes:n=>{const{normalize:o}=n;return o(["Rehavaj kodoj."])},warning_of_generate_new_codes:n=>{const{normalize:o}=n;return o(["Kiam vi estigos novajn rehavajn kodojn, viaj malnovaj ne plu funkcios."])},generate_new_recovery_codes:n=>{const{normalize:o}=n;return o(["Estigi novajn rehavajn kodojn"])},title:n=>{const{normalize:o}=n;return o(["Duobla aŭtentikigo"])},otp:n=>{const{normalize:o}=n;return o(["OTP"])},wait_pre_setup_otp:n=>{const{normalize:o}=n;return o(["antaŭagordante OTP"])},setup_otp:n=>{const{normalize:o}=n;return o(["Agordi OTP"])},confirm_and_enable:n=>{const{normalize:o}=n;return o(["Konfirmi kaj ŝalti OTP"])}},enter_current_password_to_confirm:n=>{const{normalize:o}=n;return o(["Enigu vian pasvorton por konfirmi vian identecon"])},security:n=>{const{normalize:o}=n;return o(["Sekureco"])},fun:n=>{const{normalize:o}=n;return o(["Amuzo"])},type_domains_to_mute:n=>{const{normalize:o}=n;return o(["Serĉu silentigotajn retnomojn"])},useStreamingApiWarning:n=>{const{normalize:o}=n;return o(["(Nerekomendate, eksperimente, povas preterpasi afiŝojn)"])},useStreamingApi:n=>{const{normalize:o}=n;return o(["Ricevi afiŝojn kaj sciigojn realtempe"])},user_mutes:n=>{const{normalize:o}=n;return o(["Uzantoj"])},reset_background_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas restarigi la fonon?"])},reset_banner_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas restarigi la rubandon?"])},reset_avatar_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas restarigi la profilbildon?"])},reset_profile_banner:n=>{const{normalize:o}=n;return o(["Restarigi rubandon de profilo"])},reset_profile_background:n=>{const{normalize:o}=n;return o(["Restarigi fonon de profilo"])},reset_avatar:n=>{const{normalize:o}=n;return o(["Restarigi profilbildon"])},minimal_scopes_mode:n=>{const{normalize:o}=n;return o(["Minimumigi elekteblojn pri amplekso de afiŝoj"])},search_user_to_block:n=>{const{normalize:o}=n;return o(["Serĉu, kiun vi volas bloki"])},search_user_to_mute:n=>{const{normalize:o}=n;return o(["Serĉu, kiun vi volas silentigi"])},autohide_floating_post_button:n=>{const{normalize:o}=n;return o(["Memage kaŝi la butonon por Nova afiŝo (poŝtelefone)"])},hide_followers_count_description:n=>{const{normalize:o}=n;return o(["Ne montri nombron de abonantoj"])},hide_follows_count_description:n=>{const{normalize:o}=n;return o(["Ne montri nombron de abonoj"])},notification_visibility_emoji_reactions:n=>{const{normalize:o}=n;return o(["Reagoj"])},notification_visibility_moves:n=>{const{normalize:o}=n;return o(["Migroj"])},new_email:n=>{const{normalize:o}=n;return o(["Nova retpoŝtadreso"])},profile_fields:{value:n=>{const{normalize:o}=n;return o(["Enhavo"])},name:n=>{const{normalize:o}=n;return o(["Etikedo"])},add_field:n=>{const{normalize:o}=n;return o(["Aldoni kampon"])},label:n=>{const{normalize:o}=n;return o(["Pridatumoj de profilo"])}},import_blocks_from_a_csv_file:n=>{const{normalize:o}=n;return o(["Enporti blokitojn el CSV-dosiero"])},hide_muted_posts:n=>{const{normalize:o}=n;return o(["Kaŝi afiŝojn de silentigitaj uzantoj"])},emoji_reactions_on_timeline:n=>{const{normalize:o}=n;return o(["Montri bildosignajn reagojn en historioj"])},pad_emoji:n=>{const{normalize:o}=n;return o(["Meti spacetojn ĉirkaŭ bildosigno post ties elekto"])},domain_mutes:n=>{const{normalize:o}=n;return o(["Retnomoj"])},notification_blocks:n=>{const{normalize:o}=n;return o(["Blokinte uzanton vi malabonos ĝin kaj haltigos ĉiujn sciigojn."])},notification_mutes:n=>{const{normalize:o}=n;return o(["Por ne plu ricevi sciigojn de certa uzanto, silentigu ĝin."])},notification_setting_hide_notification_contents:n=>{const{normalize:o}=n;return o(["Kaŝi la sendinton kaj la enhavojn de pasivaj sciigoj"])},notification_setting_privacy:n=>{const{normalize:o}=n;return o(["Privateco"])},notification_setting_block_from_strangers:n=>{const{normalize:o}=n;return o(["Bloki sciigojn de uzantoj, kiujn vi ne abonas"])},notification_setting_filters:n=>{const{normalize:o}=n;return o(["Filtriloj"])},greentext:n=>{const{normalize:o}=n;return o(["Memecitaĵoj"])},version:{frontend_version:n=>{const{normalize:o}=n;return o(["Versio de fasado"])},backend_version:n=>{const{normalize:o}=n;return o(["Versio de internaĵo"])},title:n=>{const{normalize:o}=n;return o(["Versio"])}},accent:n=>{const{normalize:o}=n;return o(["Emfazo"])},virtual_scrolling:n=>{const{normalize:o}=n;return o(["Optimumigi bildigon de historioj"])},import_mutes_from_a_csv_file:n=>{const{normalize:o}=n;return o(["Enporti silentigojn el CSV-dosiero"])},mutes_imported:n=>{const{normalize:o}=n;return o(["Silentigoj enportiĝis! Traktado daŭros iom da tempo."])},mute_import_error:n=>{const{normalize:o}=n;return o(["Eraris enporto de silentigoj"])},mute_import:n=>{const{normalize:o}=n;return o(["Enporto de silentigoj"])},mute_export_button:n=>{const{normalize:o}=n;return o(["Elportu viajn silentigojn al CSV-dosiero"])},mute_export:n=>{const{normalize:o}=n;return o(["Elporto de silentigoj"])},hide_wallpaper:n=>{const{normalize:o}=n;return o(["Kaŝi fonbildon de nodo"])},setting_changed:n=>{const{normalize:o}=n;return o(["Agordo malsamas de la implicita"])},more_settings:n=>{const{normalize:o}=n;return o(["Pliaj agordoj"])},sensitive_by_default:n=>{const{normalize:o}=n;return o(["Implicite marki afiŝojn konsternaj"])},reply_visibility_following_short:n=>{const{normalize:o}=n;return o(["Montri respondojn por miaj abonatoj"])},hide_all_muted_posts:n=>{const{normalize:o}=n;return o(["Kaŝi silentigitajn afiŝojn"])},hide_media_previews:n=>{const{normalize:o}=n;return o(["Kaŝi antaŭrigardojn al vidaŭdaĵoj"])},word_filter:n=>{const{normalize:o}=n;return o(["Vortofiltro"])},reply_visibility_self_short:n=>{const{normalize:o}=n;return o(["Montri nur respondojn por mi"])},file_export_import:{errors:{file_slightly_new:n=>{const{normalize:o}=n;return o(["Etversio de dosiero malsamas, iuj agordoj eble ne funkcios"])},file_too_old:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Nekonforma ĉefa versio: ",e(r("fileMajor")),", versio de dosiero estas tro malnova kaj nesubtenata (minimuma estas ",e(r("feMajor")),")"])},file_too_new:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Nekonforma ĉefa versio: ",e(r("fileMajor")),", ĉi tiu PleromaFE (agordoj je versio ",e(r("feMajor")),") tro malnovas por tio"])},invalid_file:n=>{const{normalize:o}=n;return o(["La elektita dosiero ne estas subtenata savkopio de agordoj de Pleroma. Nenio ŝanĝiĝis."])}},restore_settings:n=>{const{normalize:o}=n;return o(["Rehavi agordojn el dosiero"])},backup_settings_theme:n=>{const{normalize:o}=n;return o(["Savkopii agordojn kaj haŭton al dosiero"])},backup_settings:n=>{const{normalize:o}=n;return o(["Savkopii agordojn al dosiero"])},backup_restore:n=>{const{normalize:o}=n;return o(["Savkopio de agordoj"])}},right_sidebar:n=>{const{normalize:o}=n;return o(["Montri flankan breton dekstre"])},save:n=>{const{normalize:o}=n;return o(["Konservi ŝanĝojn"])},hide_shoutbox:n=>{const{normalize:o}=n;return o(["Kaŝi kriujon de nodo"])},always_show_post_button:n=>{const{normalize:o}=n;return o(["Ĉiam montri ŝvebantan butonon por nova afiŝo"])},mentions_new_style:n=>{const{normalize:o}=n;return o(["Pli mojosaj menciligiloj"])},mentions_new_place:n=>{const{normalize:o}=n;return o(["Meti menciojn sur apartan linion"])},lists_navigation:n=>{const{normalize:o}=n;return o(["Montri listojn en navigiloj"])},account_backup:n=>{const{normalize:o}=n;return o(["Savkopio de konto"])},account_backup_description:n=>{const{normalize:o}=n;return o(["Ĉi tio povigas vin elŝuti arĥivon de viaj afiŝoj kaj ĉiuj informoj pri via konto, sed ili ne jam povas enportiĝi en konton de Pleroma."])},list_aliases_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraris akirado de kromnomoj: ",e(r("error"))])},move_account_notes:n=>{const{normalize:o}=n;return o(["Se vi volas movi la konton aliloken, vi devas iri al via celata konto, kaj aldoni kromnomon ligitan al tie ĉi."])},navbar_column_stretch:n=>{const{normalize:o}=n;return o(["Etendi navigan breton laŭ larĝeco de kolumnoj"])},posts:n=>{const{normalize:o}=n;return o(["Afiŝoj"])},notification_visibility_polls:n=>{const{normalize:o}=n;return o(["Finoj de enketoj kun via voĉo"])},conversation_display:n=>{const{normalize:o}=n;return o(["Aspekto de interparoloj"])},disable_sticky_headers:n=>{const{normalize:o}=n;return o(["Ne alglui kapojn de kolumnoj al supro de la ekrano"])},conversation_display_linear_quick:n=>{const{normalize:o}=n;return o(["Linia vido"])},use_websockets:n=>{const{normalize:o}=n;return o(["Uzi teĥnikaron «websockets» (tuja ĝisdatigo)"])},mention_link_display_full_for_remote:n=>{const{normalize:o}=n;return o(["plene nur je uzantoj foraj (ekz. ","@","zozo","@","ekzemplo.org)"])},expert_mode:n=>{const{normalize:o}=n;return o(["Montri altnivelajn"])},setting_server_side:n=>{const{normalize:o}=n;return o(["Ĉi tiu agordo estas ligita al via profilo, kaj efektiviĝos en ĉiuj viaj salutoj kaj klientoj"])},post_look_feel:n=>{const{normalize:o}=n;return o(["Aspekto de afiŝoj"])},mention_links:n=>{const{normalize:o}=n;return o(["Menciaj ligiloj"])},email_language:n=>{const{normalize:o}=n;return o(["Lingvo de leteroj ricevotaj de la servilo"])},account_backup_table_head:n=>{const{normalize:o}=n;return o(["Savkopio"])},download_backup:n=>{const{normalize:o}=n;return o(["Elŝuti"])},backup_not_ready:n=>{const{normalize:o}=n;return o(["Ĉi tiu savkopio ne jam pretas."])},remove_backup:n=>{const{normalize:o}=n;return o(["Forigi"])},list_backups_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraris akirado de listo de savkopioj: ",e(r("error"))])},add_backup:n=>{const{normalize:o}=n;return o(["Fari novan savkopion"])},added_backup:n=>{const{normalize:o}=n;return o(["Aldonis novan savkopion."])},add_backup_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraris aldono de nova savkopio: ",e(r("error"))])},account_alias:n=>{const{normalize:o}=n;return o(["Kromnomoj de konto"])},account_alias_table_head:n=>{const{normalize:o}=n;return o(["Kromnomo"])},hide_list_aliases_error_action:n=>{const{normalize:o}=n;return o(["Fermi"])},remove_alias:n=>{const{normalize:o}=n;return o(["Forigi ĉi tiun kromnomon"])},new_alias_target:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Aldoni novan kromnomon (ekz. ",e(r("example")),")"])},added_alias:n=>{const{normalize:o}=n;return o(["Kromnomo estas aldonita."])},add_alias_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraris aldono de kromnomo: ",e(r("error"))])},move_account:n=>{const{normalize:o}=n;return o(["Movi konton"])},move_account_target:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Celata konto (ekz. ",e(r("example")),")"])},moved_account:n=>{const{normalize:o}=n;return o(["Konto moviĝis."])},move_account_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraris movado de konto: ",e(r("error"))])},wordfilter:n=>{const{normalize:o}=n;return o(["Vortofiltrado"])},word_filter_and_more:n=>{const{normalize:o}=n;return o(["Vortofiltrado kaj pli…"])},mute_bot_posts:n=>{const{normalize:o}=n;return o(["Silentigi afiŝojn de robotoj"])},hide_bot_indication:n=>{const{normalize:o}=n;return o(["Kaŝi markon de roboteco en afiŝoj"])},hide_wordfiltered_statuses:n=>{const{normalize:o}=n;return o(["Kaŝi vorte filtritajn afiŝojn"])},hide_muted_threads:n=>{const{normalize:o}=n;return o(["Kaŝi silentigitajn fadenojn"])},account_privacy:n=>{const{normalize:o}=n;return o(["Privateco"])},user_profiles:n=>{const{normalize:o}=n;return o(["Profiloj de uzantoj"])},hide_favorites_description:n=>{const{normalize:o}=n;return o(["Ne montri liston de miaj ŝatatoj (oni tamen sciiĝas)"])},conversation_display_tree:n=>{const{normalize:o}=n;return o(["Arba stilo"])},conversation_display_tree_quick:n=>{const{normalize:o}=n;return o(["Arba vido"])},show_scrollbars:n=>{const{normalize:o}=n;return o(["Montri rulumskalojn de flankaj kolumnoj"])},third_column_mode_none:n=>{const{normalize:o}=n;return o(["Neniam montri trian kolumnon"])},third_column_mode_notifications:n=>{const{normalize:o}=n;return o(["Kolumno de sciigoj"])},columns:n=>{const{normalize:o}=n;return o(["Kolumnoj"])},column_sizes:n=>{const{normalize:o}=n;return o(["Grandeco de kolumnoj"])},column_sizes_sidebar:n=>{const{normalize:o}=n;return o(["Flanka breto"])},column_sizes_content:n=>{const{normalize:o}=n;return o(["Enhavo"])},column_sizes_notifs:n=>{const{normalize:o}=n;return o(["Sciigoj"])},tree_advanced:n=>{const{normalize:o}=n;return o(["Permesi pli flekseblan navigadon en arba vido"])},conversation_display_linear:n=>{const{normalize:o}=n;return o(["Linia stilo"])},conversation_other_replies_button:n=>{const{normalize:o}=n;return o(["Montri la butonon pri «aliaj respondoj»"])},conversation_other_replies_button_below:n=>{const{normalize:o}=n;return o(["Sub afiŝoj"])},conversation_other_replies_button_inside:n=>{const{normalize:o}=n;return o(["En afiŝoj"])},max_depth_in_thread:n=>{const{normalize:o}=n;return o(["Maksimuma nombro de niveloj implicite montrataj en fadeno"])},auto_update:n=>{const{normalize:o}=n;return o(["Montri novajn afiŝojn memage"])},use_at_icon:n=>{const{normalize:o}=n;return o(["Montri simbolon ","@"," kiel bildon anstataŭ teksto"])},mention_link_display:n=>{const{normalize:o}=n;return o(["Montri menciajn ligilojn"])},mention_link_display_short:n=>{const{normalize:o}=n;return o(["ĉiam mallonge (ekz. ","@","zozo)"])},mention_link_display_full:n=>{const{normalize:o}=n;return o(["ĉiam plene (ekz. ","@","zozo","@","ekzemplo.org)"])},mention_link_show_avatar:n=>{const{normalize:o}=n;return o(["Montri profilbildon de uzanto apud la ligilo"])},mention_link_show_avatar_quick:n=>{const{normalize:o}=n;return o(["Montri profilbildon de uzanto apud mencioj"])},mention_link_fade_domain:n=>{const{normalize:o}=n;return o(["Malvigligi retnomojn (ekz. ","@","ekzemplo.org en ","@","zozo","@","ekzemplo.org)"])},mention_link_bolden_you:n=>{const{normalize:o}=n;return o(["Emfazi vian mencion, se vi estas menciita"])},mention_link_use_tooltip:n=>{const{normalize:o}=n;return o(["Montri karton de uzanto per klako al mencia ligilo"])},user_popover_avatar_action_close:n=>{const{normalize:o}=n;return o(["Fermi la ŝprucaĵon"])},user_popover_avatar_action_open:n=>{const{normalize:o}=n;return o(["Malfermi la profilon"])},user_popover_avatar_overlay:n=>{const{normalize:o}=n;return o(["Aperigi ŝprucaĵon pri uzanto sur profilbildo"])},show_yous:n=>{const{normalize:o}=n;return o(["Montri la markon «(Vi)»"])},user_popover_avatar_action_zoom:n=>{const{normalize:o}=n;return o(["Zomi la profilbildon"])},third_column_mode:n=>{const{normalize:o}=n;return o(["Kun sufiĉo da spaco, montri trian kolumnon kun"])}},timeline:{collapse:n=>{const{normalize:o}=n;return o(["Maletendi"])},conversation:n=>{const{normalize:o}=n;return o(["Interparolo"])},error_fetching:n=>{const{normalize:o}=n;return o(["Eraris ĝisdatigo"])},load_older:n=>{const{normalize:o}=n;return o(["Montri pli malnovajn afiŝojn"])},no_retweet_hint:n=>{const{normalize:o}=n;return o(["Afiŝo estas markita kiel rekta aŭ nur por abonantoj, kaj ne eblas ĝin ripeti"])},repeated:n=>{const{normalize:o}=n;return o(["ripetis"])},show_new:n=>{const{normalize:o}=n;return o(["Montri novajn"])},up_to_date:n=>{const{normalize:o}=n;return o(["Ĝisdata"])},no_more_statuses:n=>{const{normalize:o}=n;return o(["Neniuj pliaj afiŝoj"])},no_statuses:n=>{const{normalize:o}=n;return o(["Neniuj afiŝoj"])},reload:n=>{const{normalize:o}=n;return o(["Enlegi ree"])},error:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Eraris akirado de historio: ",e(r(0))])},socket_reconnected:n=>{const{normalize:o}=n;return o(["Realtempa konekto fariĝis"])},socket_broke:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Realtempa konekto perdiĝis: CloseEvent code ",e(r(0))])}},user_card:{approve:n=>{const{normalize:o}=n;return o(["Aprobi"])},block:n=>{const{normalize:o}=n;return o(["Bloki"])},blocked:n=>{const{normalize:o}=n;return o(["Blokita!"])},deny:n=>{const{normalize:o}=n;return o(["Rifuzi"])},favorites:n=>{const{normalize:o}=n;return o(["Ŝatataj"])},follow:n=>{const{normalize:o}=n;return o(["Aboni"])},follow_sent:n=>{const{normalize:o}=n;return o(["Peto sendiĝis!"])},follow_progress:n=>{const{normalize:o}=n;return o(["Petante…"])},follow_unfollow:n=>{const{normalize:o}=n;return o(["Malaboni"])},followees:n=>{const{normalize:o}=n;return o(["Abonatoj"])},followers:n=>{const{normalize:o}=n;return o(["Abonantoj"])},following:n=>{const{normalize:o}=n;return o(["Abonata!"])},follows_you:n=>{const{normalize:o}=n;return o(["Abonas vin!"])},its_you:n=>{const{normalize:o}=n;return o(["Tio estas vi!"])},media:n=>{const{normalize:o}=n;return o(["Vidaŭdaĵoj"])},mute:n=>{const{normalize:o}=n;return o(["Silentigi"])},muted:n=>{const{normalize:o}=n;return o(["Silentigita"])},per_day:n=>{const{normalize:o}=n;return o(["tage"])},remote_follow:n=>{const{normalize:o}=n;return o(["Fore aboni"])},statuses:n=>{const{normalize:o}=n;return o(["Afiŝoj"])},unblock:n=>{const{normalize:o}=n;return o(["Malbloki"])},unblock_progress:n=>{const{normalize:o}=n;return o(["Malblokante…"])},block_progress:n=>{const{normalize:o}=n;return o(["Blokante…"])},unmute:n=>{const{normalize:o}=n;return o(["Malsilentigi"])},unmute_progress:n=>{const{normalize:o}=n;return o(["Malsilentigante…"])},mute_progress:n=>{const{normalize:o}=n;return o(["Silentigante…"])},report:n=>{const{normalize:o}=n;return o(["Raporti"])},message:n=>{const{normalize:o}=n;return o(["Mesaĝo"])},mention:n=>{const{normalize:o}=n;return o(["Mencio"])},hidden:n=>{const{normalize:o}=n;return o(["Kaŝita"])},admin_menu:{delete_user:n=>{const{normalize:o}=n;return o(["Forigi uzanton"])},quarantine:n=>{const{normalize:o}=n;return o(["Malpermesi federadon de afiŝoj de uzanto"])},disable_any_subscription:n=>{const{normalize:o}=n;return o(["Malpermesi ĉian abonadon al uzanto"])},disable_remote_subscription:n=>{const{normalize:o}=n;return o(["Malpermesi abonadon al uzanto el foraj nodoj"])},sandbox:n=>{const{normalize:o}=n;return o(["Devigi afiŝojn esti nur por abonantoj"])},force_unlisted:n=>{const{normalize:o}=n;return o(["Devigi afiŝojn nelistiĝi"])},strip_media:n=>{const{normalize:o}=n;return o(["Forigi vidaŭdaĵojn de afiŝoj"])},force_nsfw:n=>{const{normalize:o}=n;return o(["Marki ĉiujn afiŝojn konsternaj"])},delete_account:n=>{const{normalize:o}=n;return o(["Forigi konton"])},deactivate_account:n=>{const{normalize:o}=n;return o(["Malaktivigi konton"])},activate_account:n=>{const{normalize:o}=n;return o(["Aktivigi konton"])},revoke_moderator:n=>{const{normalize:o}=n;return o(["Malnomumi reguligiston"])},grant_moderator:n=>{const{normalize:o}=n;return o(["Nomumi reguligiston"])},revoke_admin:n=>{const{normalize:o}=n;return o(["Malnomumi administranton"])},grant_admin:n=>{const{normalize:o}=n;return o(["Nomumi administranton"])},moderation:n=>{const{normalize:o}=n;return o(["Reguligado"])},delete_user_data_and_deactivate_confirmation:n=>{const{normalize:o}=n;return o(["Tio ĉi por ĉiam forigos datumojn de tiu ĉi konto, kaj malaktivigos ĝin. Ĉu vi plene certas?"])}},show_repeats:n=>{const{normalize:o}=n;return o(["Montri ripetojn"])},hide_repeats:n=>{const{normalize:o}=n;return o(["Kaŝi ripetojn"])},unsubscribe:n=>{const{normalize:o}=n;return o(["Ne ricevi sciigojn"])},subscribe:n=>{const{normalize:o}=n;return o(["Ricevi sciigojn"])},bot:n=>{const{normalize:o}=n;return o(["Roboto"])},highlight:{side:n=>{const{normalize:o}=n;return o(["Flanka strio"])},striped:n=>{const{normalize:o}=n;return o(["Stria fono"])},solid:n=>{const{normalize:o}=n;return o(["Unueca fono"])},disabled:n=>{const{normalize:o}=n;return o(["Senemfaze"])}},edit_profile:n=>{const{normalize:o}=n;return o(["Redakti profilon"])},deactivated:n=>{const{normalize:o}=n;return o(["Malaktiva"])},follow_cancel:n=>{const{normalize:o}=n;return o(["Nuligi peton"])},remove_follower:n=>{const{normalize:o}=n;return o(["Forigi abonanton"])},note:n=>{const{normalize:o}=n;return o(["Noto"])},note_blank:n=>{const{normalize:o}=n;return o(["(Neniu)"])},edit_note_apply:n=>{const{normalize:o}=n;return o(["Apliki"])},edit_note_cancel:n=>{const{normalize:o}=n;return o(["Nuligi"])},edit_note:n=>{const{normalize:o}=n;return o(["Redakti noton"])}},user_profile:{timeline_title:n=>{const{normalize:o}=n;return o(["Historio de uzanto"])},profile_does_not_exist:n=>{const{normalize:o}=n;return o(["Pardonu, ĉi tiu profilo ne ekzistas."])},profile_loading_error:n=>{const{normalize:o}=n;return o(["Pardonu, eraris enlego de ĉi tiu profilo."])}},who_to_follow:{more:n=>{const{normalize:o}=n;return o(["Pli"])},who_to_follow:n=>{const{normalize:o}=n;return o(["Kiun aboni"])}},tool_tip:{media_upload:n=>{const{normalize:o}=n;return o(["Alŝuti vidaŭdaĵon"])},repeat:n=>{const{normalize:o}=n;return o(["Ripeti"])},reply:n=>{const{normalize:o}=n;return o(["Respondi"])},favorite:n=>{const{normalize:o}=n;return o(["Ŝati"])},user_settings:n=>{const{normalize:o}=n;return o(["Agordoj de uzanto"])},bookmark:n=>{const{normalize:o}=n;return o(["Legosigno"])},reject_follow_request:n=>{const{normalize:o}=n;return o(["Rifuzi abonpeton"])},accept_follow_request:n=>{const{normalize:o}=n;return o(["Akcepti abonpeton"])},add_reaction:n=>{const{normalize:o}=n;return o(["Aldoni reagon"])},toggle_expand:n=>{const{normalize:o}=n;return o(["Etendi aŭ maletendi sciigon por montri plenan afiŝon"])},toggle_mute:n=>{const{normalize:o}=n;return o(["Etendi aŭ maletendi afiŝon por montri silentigitan enhavon"])}},upload:{error:{base:n=>{const{normalize:o}=n;return o(["Alŝuto malsukcesis."])},file_too_big:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Dosiero estas tro granda [",e(r("filesize")),e(r("filesizeunit"))," / ",e(r("allowedsize")),e(r("allowedsizeunit")),"]"])},default:n=>{const{normalize:o}=n;return o(["Reprovu pli poste"])},message:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Malsukcesis alŝuto: ",e(r(0))])}},file_size_units:{B:n=>{const{normalize:o}=n;return o(["B"])},KiB:n=>{const{normalize:o}=n;return o(["KiB"])},MiB:n=>{const{normalize:o}=n;return o(["MiB"])},GiB:n=>{const{normalize:o}=n;return o(["GiB"])},TiB:n=>{const{normalize:o}=n;return o(["TiB"])}}},emoji:{search_emoji:n=>{const{normalize:o}=n;return o(["Serĉi bildosignon"])},keep_open:n=>{const{normalize:o}=n;return o(["Teni elektilon malfermita"])},emoji:n=>{const{normalize:o}=n;return o(["Bildsignoj"])},stickers:n=>{const{normalize:o}=n;return o(["Glumarkoj"])},add_emoji:n=>{const{normalize:o}=n;return o(["Enigi bildosignon"])},load_all:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Enlegante ĉiujn ",e(r("emojiAmount"))," bildosignojn"])},load_all_hint:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Enlegis la ",e(r("saneAmount"))," unuajn bildosignojn; enlego de ĉiuj povus kaŭzi problemojn pri efikeco."])},unicode:n=>{const{normalize:o}=n;return o(["Unikoda bildosigno"])},custom:n=>{const{normalize:o}=n;return o(["Propra bildosigno"])},unicode_groups:{activities:n=>{const{normalize:o}=n;return o(["Agado"])},"animals-and-nature":n=>{const{normalize:o}=n;return o(["Bestoj kaj naturo"])},flags:n=>{const{normalize:o}=n;return o(["Flagoj"])},"food-and-drink":n=>{const{normalize:o}=n;return o(["Manĝaĵoj kaj trinkaĵoj"])},objects:n=>{const{normalize:o}=n;return o(["Aĵoj"])},"people-and-body":n=>{const{normalize:o}=n;return o(["Homoj kaj korpo"])},"smileys-and-emotion":n=>{const{normalize:o}=n;return o(["Mienbildoj kaj sentoj"])},symbols:n=>{const{normalize:o}=n;return o(["Simboloj"])},"travel-and-places":n=>{const{normalize:o}=n;return o(["Vojaĝoj kaj lokoj"])}},regional_indicator:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Regiona marko ",e(r("letter"))])}},polls:{not_enough_options:n=>{const{normalize:o}=n;return o(["Tro malmultaj unikaj elektebloj en la enketo"])},expired:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Enketo finiĝis antaŭ ",e(r(0))])},expires_in:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Enketo finiĝas je ",e(r(0))])},expiry:n=>{const{normalize:o}=n;return o(["Aĝo de enketo"])},multiple_choices:n=>{const{normalize:o}=n;return o(["Pluraj elektoj"])},single_choice:n=>{const{normalize:o}=n;return o(["Unu elekto"])},type:n=>{const{normalize:o}=n;return o(["Speco de enketo"])},vote:n=>{const{normalize:o}=n;return o(["Voĉi"])},votes:n=>{const{normalize:o}=n;return o(["voĉoj"])},option:n=>{const{normalize:o}=n;return o(["Elekteblo"])},add_option:n=>{const{normalize:o}=n;return o(["Aldoni elekteblon"])},add_poll:n=>{const{normalize:o}=n;return o(["Aldoni enketon"])},votes_count:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o([e(r("count"))," voĉdono"]),o([e(r("count"))," voĉdonoj"])])},people_voted_count:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o([e(r("count"))," persono voĉdonis"]),o([e(r("count"))," personoj voĉdonis"])])}},importer:{error:n=>{const{normalize:o}=n;return o(["Eraris enporto de ĉi tiu dosiero."])},success:n=>{const{normalize:o}=n;return o(["Enportita sukcese."])},submit:n=>{const{normalize:o}=n;return o(["Sendi"])}},exporter:{processing:n=>{const{normalize:o}=n;return o(["Traktante; baldaŭ vi ricevos peton elŝuti vian dosieron"])},export:n=>{const{normalize:o}=n;return o(["Elporti"])}},domain_mute_card:{unmute_progress:n=>{const{normalize:o}=n;return o(["Malsilentigante…"])},unmute:n=>{const{normalize:o}=n;return o(["Malsilentigi"])},mute_progress:n=>{const{normalize:o}=n;return o(["Silentigante…"])},mute:n=>{const{normalize:o}=n;return o(["Silentigi"])}},about:{staff:n=>{const{normalize:o}=n;return o(["Skipo"])},mrf:{simple:{media_nsfw_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo devigas vidaŭdaĵojn esti markitaj kiel konsternaj en afiŝoj el la jenaj nodoj:"])},media_nsfw:n=>{const{normalize:o}=n;return o(["Devige marki vidaŭdaĵojn konsternaj"])},media_removal_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo forigas vidaŭdaĵojn de afiŝoj el la jenaj nodoj:"])},media_removal:n=>{const{normalize:o}=n;return o(["Forigo de vidaŭdaĵoj"])},ftl_removal:n=>{const{normalize:o}=n;return o(["Forigo el la «Federa historio»"])},quarantine_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo sendos nur publikajn afiŝojn al la jenaj nodoj:"])},quarantine:n=>{const{normalize:o}=n;return o(["Kvaranteno"])},reject_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo ne akceptos mesaĝojn de la jenaj nodoj:"])},reject:n=>{const{normalize:o}=n;return o(["Rifuzi"])},accept_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo nur akceptas mesaĝojn de la jenaj nodoj:"])},accept:n=>{const{normalize:o}=n;return o(["Akcepti"])},simple_policies:n=>{const{normalize:o}=n;return o(["Specialaj politikoj de la nodo"])},ftl_removal_desc:n=>{const{normalize:o}=n;return o(["Ĉi tiu nodo forigas la jenajn nodojn el la «Federa historio»:"])},instance:n=>{const{normalize:o}=n;return o(["Nodo"])},reason:n=>{const{normalize:o}=n;return o(["Kialo"])}},mrf_policies:n=>{const{normalize:o}=n;return o(["Ŝaltis politikon de Mesaĝa ŝanĝilaro (MRF)"])},keyword:{is_replaced_by:n=>{const{normalize:o}=n;return o(["→"])},replace:n=>{const{normalize:o}=n;return o(["Anstataŭigi"])},reject:n=>{const{normalize:o}=n;return o(["Rifuzi"])},ftl_removal:n=>{const{normalize:o}=n;return o(["Forigo el la historio de la «Federa historio»"])},keyword_policies:n=>{const{normalize:o}=n;return o(["Politiko pri ĉefvortoj"])}},federation:n=>{const{normalize:o}=n;return o(["Federado"])},mrf_policies_desc:n=>{const{normalize:o}=n;return o(["Politikoj de Mesaĝa ŝanĝilaro (MRF) efikas sur federa konduto de la nodo. La sekvaj politikoj estas ŝaltitaj:"])}}},selectable_list:{select_all:n=>{const{normalize:o}=n;return o(["Elekti ĉion"])}},remote_user_resolver:{error:n=>{const{normalize:o}=n;return o(["Netrovinte."])},searching_for:n=>{const{normalize:o}=n;return o(["Serĉante"])},remote_user_resolver:n=>{const{normalize:o}=n;return o(["Trovilo de foraj uzantoj"])}},interactions:{load_older:n=>{const{normalize:o}=n;return o(["Enlegi pli malnovajn interagojn"])},moves:n=>{const{normalize:o}=n;return o(["Migrado de uzantoj"])},follows:n=>{const{normalize:o}=n;return o(["Novaj abonoj"])},favs_repeats:n=>{const{normalize:o}=n;return o(["Ripetoj kaj ŝatoj"])},emoji_reactions:n=>{const{normalize:o}=n;return o(["Bildosignaj reagoj"])},reports:n=>{const{normalize:o}=n;return o(["Raportoj"])}},errors:{storage_unavailable:n=>{const{normalize:o}=n;return o(["Pleroma ne povis aliri deponejon de la foliumilo. Via saluto kaj viaj lokaj agordoj ne estos konservitaj, kaj vi eble renkontos neatenditajn problemojn. Provu permesi kuketojn."])}},status:{hide_content:n=>{const{normalize:o}=n;return o(["Kaŝi enhavon"])},show_content:n=>{const{normalize:o}=n;return o(["Montri enhavon"])},hide_full_subject:n=>{const{normalize:o}=n;return o(["Kaŝi plenan temon"])},show_full_subject:n=>{const{normalize:o}=n;return o(["Montri plenan temon"])},thread_muted_and_words:n=>{const{normalize:o}=n;return o([", enhavas vortojn:"])},thread_muted:n=>{const{normalize:o}=n;return o(["Fadeno silentigita"])},copy_link:n=>{const{normalize:o}=n;return o(["Kopii ligilon al afiŝo"])},status_unavailable:n=>{const{normalize:o}=n;return o(["Afiŝo ne estas disponebla"])},unmute_conversation:n=>{const{normalize:o}=n;return o(["Malsilentigi interparolon"])},mute_conversation:n=>{const{normalize:o}=n;return o(["Silentigi interparolon"])},replies_list:n=>{const{normalize:o}=n;return o(["Respondoj:"])},reply_to:n=>{const{normalize:o}=n;return o(["Responde al"])},delete_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas forigi ĉi tiun afiŝon?"])},unbookmark:n=>{const{normalize:o}=n;return o(["Senlegosigni"])},bookmark:n=>{const{normalize:o}=n;return o(["Legosigni"])},pinned:n=>{const{normalize:o}=n;return o(["Fiksita"])},unpin:n=>{const{normalize:o}=n;return o(["Malfiksi de profilo"])},pin:n=>{const{normalize:o}=n;return o(["Fiksi al profilo"])},delete:n=>{const{normalize:o}=n;return o(["Forigi afiŝon"])},repeats:n=>{const{normalize:o}=n;return o(["Ripetoj"])},favorites:n=>{const{normalize:o}=n;return o(["Ŝatoj"])},status_deleted:n=>{const{normalize:o}=n;return o(["Ĉi tiu afiŝo foriĝis"])},nsfw:n=>{const{normalize:o}=n;return o(["Konsterna"])},expand:n=>{const{normalize:o}=n;return o(["Etendi"])},external_source:n=>{const{normalize:o}=n;return o(["Ekstera fonto"])},mentions:n=>{const{normalize:o}=n;return o(["Mencioj"])},you:n=>{const{normalize:o}=n;return o(["(Vi)"])},plus_more:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["+",e(r("number"))," pli"])},show_all_attachments:n=>{const{normalize:o}=n;return o(["Montri ĉiujn kunsendaĵojn"])},collapse_attachments:n=>{const{normalize:o}=n;return o(["Kaŝi iujn kunsendaĵojn"])},many_attachments:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Afiŝo havas ",e(r("number"))," kunsendaĵo(j)n"])},show_attachment_in_modal:n=>{const{normalize:o}=n;return o(["Montri en vidilo de vidaŭdaĵoj"])},edit:n=>{const{normalize:o}=n;return o(["Redakti afiŝon"])},replies_list_with_others:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o(["Respondoj (+",e(r("numReplies"))," alia):"]),o(["Respondoj (+",e(r("numReplies"))," aliaj):"])])},thread_show:n=>{const{normalize:o}=n;return o(["Malkaŝi ĉi tiun fadenon"])},thread_show_full:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o(["Montri ĉion en ĉi tiu fadeno (",e(r("numStatus"))," afiŝon sume, maksimume en profundeco ",e(r("depth")),")"]),o(["Montri ĉion en ĉi tiu fadeno (",e(r("numStatus"))," afiŝojn sume, maksimume en profundeco ",e(r("depth")),")"])])},show_all_conversation:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o(["Montri plenan interparolon (",e(r("numStatus"))," alian afiŝon)"]),o(["Montri plenan interparolon (",e(r("numStatus"))," aliajn afiŝojn)"])])},edited_at:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["(lastafoje redaktita je ",e(r("time")),")"])},remove_attachment:n=>{const{normalize:o}=n;return o(["Forigi kunsendaĵon"])},show_attachment_description:n=>{const{normalize:o}=n;return o(["Antaŭvidi priskribon (malfermu kunsendaĵon por vidi plenan priskribon)"])},hide_attachment:n=>{const{normalize:o}=n;return o(["Kaŝi kunsendaĵon"])},attachment_stop_flash:n=>{const{normalize:o}=n;return o(["Ĉesigi ludilon de [Flash]"])},move_up:n=>{const{normalize:o}=n;return o(["Ŝovi kunsendaĵon antaŭen"])},move_down:n=>{const{normalize:o}=n;return o(["Ŝovi kunsendaĵon posten"])},thread_hide:n=>{const{normalize:o}=n;return o(["Kaŝi ĉi tiun fadenon"])},thread_show_full_with_icon:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("icon"))," ",e(r("text"))])},thread_follow:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o(["Montri ceteron de ĉi tiu fadeno (",e(r("numStatus"))," afiŝon sume)"]),o(["Montri ceteron de ĉi tiu fadeno (",e(r("numStatus"))," afiŝojn sume)"])])},thread_follow_with_icon:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("icon"))," ",e(r("text"))])},ancestor_follow:n=>{const{normalize:o,interpolate:e,named:r,plural:t}=n;return t([o(["Vidi ",e(r("numReplies"))," alian respondon sub ĉi tiu afiŝo"]),o(["Vidi ",e(r("numReplies"))," aliajn respondojn sub ĉi tiu afiŝo"])])},ancestor_follow_with_icon:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("icon"))," ",e(r("text"))])},show_all_conversation_with_icon:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("icon"))," ",e(r("text"))])},show_only_conversation_under_this:n=>{const{normalize:o}=n;return o(["Montri nur respondojn al ĉi tiu afiŝo"])},status_history:n=>{const{normalize:o}=n;return o(["Historio de afiŝo"])},open_gallery:n=>{const{normalize:o}=n;return o(["Malfermi galerion"])}},time:{years_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"j"])},year_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"j"])},years:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," jaroj"])},year:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," jaro"])},weeks_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"s"])},week_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"s"])},weeks:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," semajnoj"])},week:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," semajno"])},seconds_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"sek"])},second_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"sek"])},seconds:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," sekundoj"])},second:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," sekundo"])},now_short:n=>{const{normalize:o}=n;return o(["nun"])},now:n=>{const{normalize:o}=n;return o(["ĵus"])},months_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"m"])},month_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"m"])},months:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," monatoj"])},month:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," monato"])},minutes_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"min"])},minute_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"min"])},minutes:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," minutoj"])},minute:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," minuto"])},in_past:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["antaŭ ",e(r(0))])},in_future:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["post ",e(r(0))])},hours_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"hor"])},hour_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"hor"])},hours:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," horoj"])},hour:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," horo"])},days_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"t"])},day_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"t"])},days:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," tagoj"])},day:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0))," tago"])},unit:{days:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," tago"]),o([e(r(0))," tagoj"])])},minutes:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," minuto"]),o([e(r(0))," minutoj"])])},days_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"t"])},hours:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," horo"]),o([e(r(0))," horoj"])])},hours_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"h"])},minutes_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"min"])},months:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," monato"]),o([e(r(0))," monatoj"])])},months_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"mo"])},seconds:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," sekundo"]),o([e(r(0))," sekundoj"])])},seconds_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"sek"])},weeks:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," semajno"]),o([e(r(0))," semajnoj"])])},weeks_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"sem"])},years:n=>{const{normalize:o,interpolate:e,list:r,plural:t}=n;return t([o([e(r(0))," jaro"]),o([e(r(0))," jaroj"])])},years_short:n=>{const{normalize:o,interpolate:e,list:r}=n;return o([e(r(0)),"j"])}}},search:{people:n=>{const{normalize:o}=n;return o(["Personoj"])},no_results:n=>{const{normalize:o}=n;return o(["Neniuj rezultoj"])},people_talking:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("count"))," personoj parolas"])},person_talking:n=>{const{normalize:o,interpolate:e,named:r}=n;return o([e(r("count"))," persono parolas"])},hashtags:n=>{const{normalize:o}=n;return o(["Kradvortoj"])},no_more_results:n=>{const{normalize:o}=n;return o(["Neniuj pliaj rezultoj"])},load_more:n=>{const{normalize:o}=n;return o(["Enlegi pliajn rezultojn"])}},display_date:{today:n=>{const{normalize:o}=n;return o(["Hodiaŭ"])}},file_type:{file:n=>{const{normalize:o}=n;return o(["Dosiero"])},image:n=>{const{normalize:o}=n;return o(["Bildo"])},video:n=>{const{normalize:o}=n;return o(["Filmo"])},audio:n=>{const{normalize:o}=n;return o(["Sono"])}},chats:{empty_chat_list_placeholder:n=>{const{normalize:o}=n;return o(["Vi ankoraŭ havas neniun babilon. Komencu novan babilon!"])},error_sending_message:n=>{const{normalize:o}=n;return o(["Io misokazis dum sendado de la mesaĝo."])},error_loading_chat:n=>{const{normalize:o}=n;return o(["Io misokazis dum enlego de la babilo."])},delete_confirm:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas forigi ĉi tiun mesaĝon?"])},more:n=>{const{normalize:o}=n;return o(["Pli"])},empty_message_error:n=>{const{normalize:o}=n;return o(["Ne povas sendi malplenan mesaĝon"])},new:n=>{const{normalize:o}=n;return o(["Nova babilo"])},chats:n=>{const{normalize:o}=n;return o(["Babiloj"])},delete:n=>{const{normalize:o}=n;return o(["Forigi"])},you:n=>{const{normalize:o}=n;return o(["Vi:"])},message_user:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Mesaĝi al ",e(r("nickname"))])}},password_reset:{password_reset_required_but_mailer_is_disabled:n=>{const{normalize:o}=n;return o(["Vi devas restarigi vian pasvorton, sed restarigado de pasvortoj estas malŝaltita. Bonvolu kontakti la administranton de via nodo."])},password_reset_required:n=>{const{normalize:o}=n;return o(["Vi devas restarigi vian pasvorton por saluti."])},password_reset_disabled:n=>{const{normalize:o}=n;return o(["Restarigado de pasvortoj estas malŝaltita. Bonvolu kontakti la administranton de via nodo."])},too_many_requests:n=>{const{normalize:o}=n;return o(["Vi atingis la limon de provoj, reprovu pli poste."])},return_home:n=>{const{normalize:o}=n;return o(["Reiri al la hejmpaĝo"])},check_email:n=>{const{normalize:o}=n;return o(["Kontrolu vian retpoŝton pro ligilo por restarigi vian pasvorton."])},placeholder:n=>{const{normalize:o}=n;return o(["Via retpoŝtadreso aŭ uzantonomo"])},instruction:n=>{const{normalize:o}=n;return o(["Enigu vian retpoŝtadreson aŭ uzantonomon. Ni sendos al vi ligilon por restarigi vian pasvorton."])},password_reset:n=>{const{normalize:o}=n;return o(["Restarigi pasvorton"])},forgot_password:n=>{const{normalize:o}=n;return o(["Ĉu vi forgesis pasvorton?"])}},user_reporting:{generic_error:n=>{const{normalize:o}=n;return o(["Eraris traktado de via peto."])},submit:n=>{const{normalize:o}=n;return o(["Sendi"])},forward_to:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Plusendi al ",e(r(0))])},forward_description:n=>{const{normalize:o}=n;return o(["La konto venas de alia servilo. Ĉu kopio de la raporto sendiĝu ankaŭ tien?"])},additional_comments:n=>{const{normalize:o}=n;return o(["Aldonaj komentoj"])},add_comment_description:n=>{const{normalize:o}=n;return o(["Ĉi tiu raporto sendiĝos al reguligistoj de via nodo. Vi povas komprenigi kial vi raportas ĉi tiun konton sube:"])},title:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Raportante ",e(r(0))])}},shoutbox:{title:n=>{const{normalize:o}=n;return o(["Kriujo"])}},report:{reporter:n=>{const{normalize:o}=n;return o(["Raportinto:"])},reported_user:n=>{const{normalize:o}=n;return o(["Raportito:"])},reported_statuses:n=>{const{normalize:o}=n;return o(["Raportitaj afiŝoj:"])},notes:n=>{const{normalize:o}=n;return o(["Notoj:"])},state:n=>{const{normalize:o}=n;return o(["Afiŝo:"])},state_open:n=>{const{normalize:o}=n;return o(["Malfermita"])},state_closed:n=>{const{normalize:o}=n;return o(["Fermita"])},state_resolved:n=>{const{normalize:o}=n;return o(["Solvita"])}},lists:{editing_list:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Redaktado de listo ",e(r("listTitle"))])},lists:n=>{const{normalize:o}=n;return o(["Listoj"])},new:n=>{const{normalize:o}=n;return o(["Nova listo"])},title:n=>{const{normalize:o}=n;return o(["Nomo de listo"])},search:n=>{const{normalize:o}=n;return o(["Serĉi uzantojn"])},create:n=>{const{normalize:o}=n;return o(["Krei"])},save:n=>{const{normalize:o}=n;return o(["Konservi ŝanĝojn"])},delete:n=>{const{normalize:o}=n;return o(["Forigi liston"])},following_only:n=>{const{normalize:o}=n;return o(["Limigi al abonatoj"])},manage_lists:n=>{const{normalize:o}=n;return o(["Mastrumi listojn"])},manage_members:n=>{const{normalize:o}=n;return o(["Mastrumi listanojn"])},add_members:n=>{const{normalize:o}=n;return o(["Serĉi pliajn uzantojn"])},remove_from_list:n=>{const{normalize:o}=n;return o(["Forigi de listo"])},add_to_list:n=>{const{normalize:o}=n;return o(["Aldoni al listo"])},is_in_list:n=>{const{normalize:o}=n;return o(["Jam en listo"])},creating_list:n=>{const{normalize:o}=n;return o(["Kreado de nova listo"])},update_title:n=>{const{normalize:o}=n;return o(["Konservi nomon"])},really_delete:n=>{const{normalize:o}=n;return o(["Ĉu vi certe volas forigi la liston?"])},error:n=>{const{normalize:o,interpolate:e,list:r}=n;return o(["Eraris umado je listoj: ",e(r(0))])}},update:{big_update_content:n=>{const{normalize:o}=n;return o(["Ni longe ne eldonis novan version, kaj tial aferoj eble aspektos iom malsame, ol antaŭe."])},update_bugs:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Bonvolu raporti problemojn kaj erarojn ĉe ",e(r("pleromaGitlab")),", ĉar ni ŝanĝis multon, kaj kvankam ni zorge testas kaj mem uzas la prilaboratajn versiojn, ni tamen povas preteratenti ion. Ni bonvenigas viajn rimarkojn kaj proponojn pri renkontitaj eraroj aŭ proponoj plibonigi Pleromon."])},big_update_title:n=>{const{normalize:o}=n;return o(["Bonvolu pacienci"])},update_bugs_gitlab:n=>{const{normalize:o}=n;return o(["GitLab de Pleroma"])},update_changelog:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Por legi detalojn pri ŝanĝoj, vidu ",e(r("theFullChangelog")),"."])},update_changelog_here:n=>{const{normalize:o}=n;return o(["la plenan ŝanĝaron"])},art_by:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Arto de ",e(r("linkToArtist"))])}},unicode_domain_indicator:{tooltip:n=>{const{normalize:o}=n;return o(["Ĉi tiu retnomo enhavas signojn ekster ASCII."])}},announcements:{all_day_prompt:n=>{const{normalize:o}=n;return o(["Ĉi tio estas tuttaga okazo"])},page_header:n=>{const{normalize:o}=n;return o(["Anoncoj"])},title:n=>{const{normalize:o}=n;return o(["Anonco"])},mark_as_read_action:n=>{const{normalize:o}=n;return o(["Marki legita"])},post_placeholder:n=>{const{normalize:o}=n;return o(["Entajpu vian anoncon tie ĉi…"])},post_action:n=>{const{normalize:o}=n;return o(["Afiŝi"])},post_error:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Eraro: ",e(r("error"))])},close_error:n=>{const{normalize:o}=n;return o(["Fermi"])},delete_action:n=>{const{normalize:o}=n;return o(["Forigi"])},start_time_prompt:n=>{const{normalize:o}=n;return o(["Komenca tempo: "])},end_time_prompt:n=>{const{normalize:o}=n;return o(["Fina tempo: "])},published_time_display:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Publikigita je ",e(r("time"))])},start_time_display:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Komenciĝas je ",e(r("time"))])},end_time_display:n=>{const{normalize:o,interpolate:e,named:r}=n;return o(["Finiĝas je ",e(r("time"))])},edit_action:n=>{const{normalize:o}=n;return o(["Redakti"])},submit_edit_action:n=>{const{normalize:o}=n;return o(["Afiŝi"])},cancel_edit_action:n=>{const{normalize:o}=n;return o(["Nuligi"])},inactive_message:n=>{const{normalize:o}=n;return o(["Ĉi tiu anonco estas neaktiva"])}}}}}]); -//# sourceMappingURL=eo-json.d81690d5be30b23e516b.js.map -\ No newline at end of file diff --git a/priv/static/static/js/i18n/eo-json.d81690d5be30b23e516b.js.map b/priv/static/static/js/i18n/eo-json.d81690d5be30b23e516b.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/i18n/eo-json.d81690d5be30b23e516b.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/eo.json"],"sourcesContent":["export default {\n \"chat\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babilejo\"])}\n },\n \"features_panel\": {\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babilejo\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vidaŭdaĵa retperilo\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj de amplekso\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limo de teksto\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Funkcioj\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiun aboni\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babilejo de Pleroma\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limo de alŝutoj\"])},\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kriujo\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris alporto de uzanto\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trovi uzanton\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apliki\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sendi\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pli\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraro okazis\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"malnepra\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontroli\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmi\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝalti\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malŝalti\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuligi\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forlasi\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri malplion\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri plion\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reprovi\"])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bonvolu reprovi\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegante…\"])},\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭmontri\"])},\n \"role\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reguligisto\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administranto\"])}\n },\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Klaku por montri enhavon de Flash per Ruffle. (Eksperimente, eble ne funkcios.)\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciu, ke tio povas esti danĝera, ĉar la enhavo de Flash ja estas arbitra programo.\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsukcesis enlegi enhavon de Flash; vidu detalojn en konzolo.\"])},\n \"scope_in_timeline\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Persona\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nur abonantoj\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publika\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nelistigita\"])}\n },\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Eraris: \", _interpolate(_list(0))])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniam remontri\"])},\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfari\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jes\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfiksi eron\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fiksi eron\"])},\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rulumi supren\"])}\n },\n \"image_cropper\": {\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tondi bildon\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuligi\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi sen tondado\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saluti\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saluti per OAuth\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adiaŭi\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pasvorto\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekz. lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registriĝi\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uzantonomo\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Salutu por partopreni la diskutadon\"])},\n \"heading\": {\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rehavo de duobla aŭtentikigo\"])},\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Duobla aŭtentikigo\"])}\n },\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rehava kodo\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigu kodon de duobla aŭtentikigo\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigu rehavan kodon\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aŭtentikiga kodo\"])}\n },\n \"media_modal\": {\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭa\"])},\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sekva\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi vidilon de vidaŭdaĵoj\"])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pri\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reen\"])},\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loka babilejo\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Petoj pri abono\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mencioj\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rektaj mesaĝoj\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Noda historio\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Historio\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federa historio\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉi uzantojn\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiun aboni\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babiloj\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉi\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interagoj\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrado\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legosignoj\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Historioj\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hejma historio\"])},\n \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti fiksitajn erojn\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Listoj\"])},\n \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adapti navigan breton\"])},\n \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fini redakton\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfermi sciigojn (estas nelegitaj)\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi sciigojn\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anoncoj\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nekonata afiŝo, serĉante ĝin…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ŝatis vian afiŝon\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekabonis vin\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi pli malnovajn sciigojn\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciigoj\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legite!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ripetis vian afiŝon\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj pliaj sciigoj\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagis per \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migris al\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volas vin aboni\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Eraris akirado de sciigoj: \", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sendis raporton\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enketo finiĝis\"])}\n },\n \"post_status\": {\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝi\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Via konto ne estas \", _interpolate(_list(0)), \". Iu ajn povas vin aboni por vidi eĉ viajn afiŝoj nur por abonantoj.\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ŝlosita\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marki kunsendaĵojn konsternaj\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Plata teksto\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])}\n },\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Temo (malnepra)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĵus alvenis Esperantujon!\"])},\n \"direct_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo estos videbla nur por ĉiuj menciitaj uzantoj.\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝante\"])},\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rekta – afiŝi nur al menciitaj uzantoj\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nur abonantoj – afiŝi nur al abonantoj\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publika – afiŝi al publikaj historioj\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nelistigita – ne afiŝi al publikaj historioj\"])}\n },\n \"scope_notice\": {\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo ne estos videbla en la Noda kaj la Federa historioj\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo estos videbla nur al viaj abonantoj\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo estos videbla al ĉiuj\"])}\n },\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsukcesis afiŝo de vidaŭdaĵoj; reprovu\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne povas fari malplenan afiŝon sen dosieroj\"])},\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malplena\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭrigardo\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo estas nur videbla al uzantoj menciitaj je la komenco de la mesaĝo.\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo estos videbla al ĉiuj menciitaj uzantoj.\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Priskribo de vidaŭdaĵo\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝo\"])},\n \"edit_remote_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aliaj foraj nodoj eble ne subtenas redaktadon, kaj ne povos ricevi pli novan version de via afiŝo.\"])},\n \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma ne subtenas redaktadon de mencioj aŭ enketoj.\"])},\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti afiŝon\"])}\n },\n \"registration\": {\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Priskribo\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retpoŝtadreso\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prezenta nomo\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmo de pasvorto\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registriĝo\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invita peco\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TESTO DE HOMECO\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Klaku la bildon por akiri novan teston\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekz. lain\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekz. Lain Ivakura\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekz.\\nSaluton, mi estas Lain.\\nMi estas animea knabino vivanta en Japanujo. Eble vi konas min pro la retejo « Wired ».\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne povas resti malplena\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne povas resti malplena\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne povas resti malplena\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne povas resti malplena\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne povas resti malplena\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"samu la pasvorton\"])}\n },\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi-node oni aprobas registriĝojn permane.\\nSciigu la administrantojn kial vi volas registriĝi.\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kialo registriĝi\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registriĝi\"])},\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prio (malnepra)\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retpoŝtadreso (malnepra)\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"En kiu lingvo vi volus ricevi retleterojn de la servilo?\"])}\n },\n \"settings\": {\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomo de aplikaĵo\"])},\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kunsendaĵoj\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kunsendaĵoj\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilbildo\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilbildoj (sciigoj)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilbildoj\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fono\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Priskribo\"])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokitoj\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butonoj\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blua (respondi, aboni)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verda (diskonigi)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oranĝa (ŝati)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ruĝa (nuligi)\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝanĝi pasvorton\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris ŝanĝo de via pasvorto.\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pasvorto sukcese ŝanĝiĝis!\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maletendi afiŝojn kun temoj\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verkado\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmu novan pasvorton\"])},\n \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Via nuna profilbildo\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuna pasvorto\"])},\n \"current_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Via nuna profila rubando\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporto / Elporto de datumoj\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Implicita amplekso de vidibleco\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi konton\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Por ĉiam forigi viajn datumojn kaj malaktivigi vian konton.\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris forigo de via kanto. Se tio daŭre ripetiĝos, bonvolu kontakti la administranton de via nodo.\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entajpu sube vian pasvorton por konfirmi forigon de konto.\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La rekomendata minimuma grando de profilbildoj estas 150×150 bilderoj.\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi antaŭagordon\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrado\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉiuj afiŝoj kun tiuj ĉi vortoj silentiĝos; skribu po unu linie\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporto de abonoj\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporti viajn abonojn al CSV-dosiero\"])},\n \"follow_export_processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Traktante; baldaŭ vi ricevos peton elŝuti la dosieron\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporto de abonoj\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraro enportante abonojn\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonoj enportiĝis! Traktado daŭros iom da tempo.\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfono\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĝenerala\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi kunsendaĵojn en interparoloj\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi kunsendaĵojn en historioj\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maksimuma nombro da bildetoj en afiŝo\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi breton propran al nodo\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭ-enlegi bildojn\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfermi konsternajn kunsendaĵojn per nur unu klako\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi statistikon de afiŝoj (ekz. nombron de ŝatoj)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi statistikon de uzantoj (ekz. nombron de abonantoj)\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi ĉiujn filtritajn afiŝojn\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporti abonojn el CSV-dosiero\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi antaŭagordojn\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigaj kampoj\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markbutonoj\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(originale: \", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(originale)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fasado\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingvo de fasado\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La elektita dosiero ne estas subtenata haŭto de Pleromo. Neniuj ŝanĝoj al via haŭto okazis.\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nehavebla en via foliumilo\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ligiloj\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limigi vian konton al nur abonantoj aprobitaj\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripetadi filmojn\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripetadi nur filmojn sen sono (ekz. la «GIF-ojn» de Mastodon)\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigoj\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ludi filmojn en ŝpruca kadro\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne pritondi bildetojn de kunsendaĵoj\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomo\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomo kaj priskribo\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nova pasvorto\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montrotaj specoj de sciigoj\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonoj\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝatoj\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mencioj\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripetoj\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi riĉtekstajn formojn de ĉiuj afiŝoj\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj blokitoj\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj silentigoj\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne montri kiun mi sekvas\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne montri kiu min sekvas\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri la insignon de administranto en mia profilo\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri la insignon de reguligisto en mia profilo\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝalti traklakan kaŝadon de kunsendaĵoj kaj antaŭmontroj de ligiloj por konsternaj afiŝoj\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pecoj de OAuth\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peco\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktualiga peco\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valida ĝis\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Senvalidigi\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bretoj\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Paŭzigi elsendfluon kiam langeto ne estas fokusata\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭagordoj\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fono de profilo\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rubando de profilo\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilo\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordi fasadan rondigon de randoj (bildere)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Respondoj en historioj\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri ĉiujn respondojn\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri nur respondojn por mi aŭ miaj abonatoj\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri nur respondojn por mi\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris konservado de agordoj\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj konserviĝis\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sekureco\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kopii amplekson por respondo (rektaj mesaĝoj ĉiam kopiiĝas)\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordi novan profilbildon\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordi novan fonon de profilo\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordi novan rubandon de profilo\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉiam montri kampon de temo\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kopii temon dum respondado\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiel retpoŝto: «re: temo»\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiel Mastodon: kopii senŝanĝe\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne kopii\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Speco de enhavo de afiŝo\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Movi GIF-bildojn dum ŝvebo de muso\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝalti memagan fluigon de novaj afiŝoj kiam vi vidas la supron de la paĝo\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teksto\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Haŭto\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uzu deksesumajn kolorkodojn (#rrvvbb) por adapti vian koloran haŭton.\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi ankaŭ povas superagordi la kolorojn kaj travideblecon de kelkaj eroj per marko de la markbutono; uzu la butonon «Vakigi ĉion» por forigi ĉîujn superagordojn.\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildsimboloj sub kelkaj eroj estas indikiloj de kontrasto inter fono kaj teksto; ŝvebigu muson por detalaj informoj. Bonvolu memori, ke la indikilo montras la plej malbonan okazeblon dum sia uzo.\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝpruchelpiloj/avertoj\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alŝuti foton\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj de uzanto\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ne\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jes\"])}\n },\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciigoj\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝalti retajn pasivajn sciigojn\"])},\n \"style\": {\n \"switcher\": {\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi kolorojn\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi ombrojn\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi maltravideblecon\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi rondecon\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi tiparojn\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elektebloj de «konservi» konservas la nuntempajn agordojn dum elektado aŭ enlegado de haŭtoj. Ĝi ankaŭ konservas tiujn agordojn dum elportado de haŭto. Kun ĉiuj markbutonoj nemarkitaj, elporto de la haŭto ĉion konservos.\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigi\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vakigi ĉion\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vakigi maltravideblecon\"])},\n \"help\": {\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versio de PleromaFE reen iris.\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La motoro de haŭtoj de PleromaFE ĝisdatiĝis post ĝisdatigo de la versio.\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La enportita dosiero estis farita per pli malnova versio de PleromaFE.\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La enportita dosiero estis farita per pli nova versio de PleromaFE.\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La dosiero, kiun vi enportis, estis farita por malnova versio de PleromaFE. Ni provas maksimumigi interkonformecon, sed tamen eble montriĝos misoj.\"])},\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE estis ĝisdatigita; la haŭto eble aspektos malsame ol kiel vi ĝin memoras.\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniu momentokopio de haŭto estis en la dosiero, ĝi povas aspekti iom malsame ol oni intencis.\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉiuj valoroj estas transpasataj, ĉar momentokopio de haŭto estas enlegita. Vi povas enlegi anstataŭe la aktualajn datumojn de haŭto.\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versioj konfliktas: plej probable la fasado estis reirigita kaj ree ĝisdatigita; se vi ŝanĝis la haŭton per pli malnova versio de la fasado, vi probable volas uzi la malnovan version. Alie uzu la novan.\"])},\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ial mankis momentokopio; io povus aspekti malsame ol en via memoro.\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Certige, momentokopio de la haŭto enlegiĝis. Vi povas provi enlegi datumojn de la haŭto.\"])}\n },\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nova versio\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malnova versio\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teni senŝanĝa\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi haŭton\"])}\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Koloro\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maltravidebleco\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Proporcio de kontrasto estas \", _interpolate(_named(\"ratio\")), \", ĝi \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n \"level\": {\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"plenumas la gvidilon je nivelo AA (minimuma)\"])},\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"plenumas la gvidilon je nivela AAA (rekomendita)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"plenumas neniujn faciluzajn gvidilojn\"])}\n },\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"por granda (18pt+) teksto\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"por teksto\"])}\n }\n }\n },\n \"common_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Komunaj\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Komunaj koloroj\"])},\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vidu langeton «Specialaj» por pli detalaj agordoj\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildsimboloj, emfazoj, insignoj\"])}\n },\n \"advanced_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Specialaj\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fono de averto\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraro\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fono de insigno\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciigo\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kapo de breto\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supra breto\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limoj\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butonoj\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigaj kampoj\"])},\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malvigla teksto\"])},\n \"chat\": {\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limo\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eliraj\"])},\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Envenaj\"])}\n },\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langetoj\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malŝaltita\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elektita menuero\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elektita afiŝo\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Premita\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emfazitaj eroj\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildsimboloj\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grafo de enketo\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subtavolo\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝprucaĵoj, menuoj\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝoj/Priskriboj de uzantoj\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neŭtrala\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Averto\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝaltita\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fonbildo\"])}\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rondeco\"])}\n },\n \"shadows\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ombro kaj lumo\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ero\"])},\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Transpasi\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ombro #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malklarigo\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vastigo\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Internigo\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Por ombroj vi ankaŭ povas uzi --variable kiel koloran valoron, por uzi variantojn de CSS3. Bonvolu rimarki, ke tiuokaze agordoj de maltravidebleco ne funkcios.\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Averto: ĉi tiu ombro ĉiam uzas \", _interpolate(_list(0)), \" kiam la foliumilo tion subtenas.\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" ne subtenas parametron \", _interpolate(_list(1)), \" kaj ĉefvorton \", _interpolate(_list(2)), \".\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bonvolu rimarki, ke agordi ambaŭ internajn kaj eksterajn ombrojn por profilbildoj povas redoni neatenditajn rezultojn ĉe profilbildoj travideblaj.\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ombroj kun vastigo > 0 aperos kvazaŭ ĝi estus fakte nulo\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Internaj ombroj uzos \", _interpolate(_list(0))])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Breto\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kapo de breto\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supra breto\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilbildo de uzanto (en profila vido)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profilbildo de uzanto (en afiŝa vido)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝprucaĵoj\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butono\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butono (je ŝvebo)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butono (premita)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butono (je premo kaj ŝvebo)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eniga kampo\"])}\n },\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Kolorojn de ombroj vi ankaŭ povas skribi per la sistemo \", _interpolate(_list(0)), \".\"])}\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tiparoj\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elektu tiparon uzotan por eroj de la fasado. Por «propra» vi devas enigi la precizan nomon de tiparo tiel, kiel ĝi aperas en la sistemo.\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fasado\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigaj kampoj\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teksto de afiŝo\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Egallarĝa teksto en afiŝo (riĉteksto)\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomo de tiparo\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grando (en bilderoj)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pezo (graseco)\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Propra\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭrigardo\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enhavo\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ekzempla eraro\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Butono\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Kelko da pliaj \", _interpolate(_list(0)), \" kaj \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enhavo\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĵus alvenis Esperantujon!\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"helpan manlibron\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Legu nian \", _interpolate(_list(0)), \" por nenion utilan ekscii!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tio estas en ordo\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mi legetis la kondiĉojn de uzado\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bela eta ligil’\"])}\n }\n },\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permesi trovon de ĉi tiu konto en serĉrezultoj kaj aliaj servoj\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokado kaj silentigoj\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babileja mesaĝo\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retpoŝtadreso sukcese ŝanĝiĝis!\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris ŝanĝo de via retpoŝtadreso.\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝanĝi retpoŝtadreson\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tio estas robota konto\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokitoj enportiĝis! Traktado daŭros iom da tempo.\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris enporto de blokitoj\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporto de blokitoj\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporto de blokitoj\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporti viajn blokitojn al CSV-dosiero\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permesi memagan abonadon kiam abonata konto migras\"])},\n \"mfa\": {\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Por ŝalti duoblan aŭtentikigon, enigu la kodon el via aplikaĵo por duobla aŭtentikigo:\"])}\n },\n \"scan\": {\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝlosilo\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uzante vian aplikaĵon por duobla aŭtentikigo, skanu ĉi tiun rapidrespondan kodon aŭ enigu tekstan ŝlosilon:\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skani\"])}\n },\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metodoj de aŭtentikigo\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notu la kodojn aŭ konservu ilin en sekura loko – alie vi ne revidos ilin. Se vi perdos aliron al via aplikaĵo por duobla aŭtentikigo kaj al la rehavaj kodoj, vi ne povos aliri vian konton.\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ricevante savkopiajn kodojn…\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rehavaj kodoj.\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiam vi estigos novajn rehavajn kodojn, viaj malnovaj ne plu funkcios.\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Estigi novajn rehavajn kodojn\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Duobla aŭtentikigo\"])},\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"antaŭagordante OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordi OTP\"])},\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmi kaj ŝalti OTP\"])}\n },\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigu vian pasvorton por konfirmi vian identecon\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sekureco\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Amuzo\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉu silentigotajn retnomojn\"])},\n \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Nerekomendate, eksperimente, povas preterpasi afiŝojn)\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ricevi afiŝojn kaj sciigojn realtempe\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uzantoj\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas restarigi la fonon?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas restarigi la rubandon?\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas restarigi la profilbildon?\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigi rubandon de profilo\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigi fonon de profilo\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigi profilbildon\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Minimumigi elekteblojn pri amplekso de afiŝoj\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉu, kiun vi volas bloki\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉu, kiun vi volas silentigi\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memage kaŝi la butonon por Nova afiŝo (poŝtelefone)\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne montri nombron de abonantoj\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne montri nombron de abonoj\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reagoj\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Migroj\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nova retpoŝtadreso\"])},\n \"profile_fields\": {\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enhavo\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etikedo\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldoni kampon\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pridatumoj de profilo\"])}\n },\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporti blokitojn el CSV-dosiero\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi afiŝojn de silentigitaj uzantoj\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri bildosignajn reagojn en historioj\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meti spacetojn ĉirkaŭ bildosigno post ties elekto\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retnomoj\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokinte uzanton vi malabonos ĝin kaj haltigos ĉiujn sciigojn.\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Por ne plu ricevi sciigojn de certa uzanto, silentigu ĝin.\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi la sendinton kaj la enhavojn de pasivaj sciigoj\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privateco\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bloki sciigojn de uzantoj, kiujn vi ne abonas\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtriloj\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memecitaĵoj\"])},\n \"version\": {\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versio de fasado\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versio de internaĵo\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versio\"])}\n },\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emfazo\"])},\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Optimumigi bildigon de historioj\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporti silentigojn el CSV-dosiero\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigoj enportiĝis! Traktado daŭros iom da tempo.\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris enporto de silentigoj\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enporto de silentigoj\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elportu viajn silentigojn al CSV-dosiero\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporto de silentigoj\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi fonbildon de nodo\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordo malsamas de la implicita\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pliaj agordoj\"])},\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Implicite marki afiŝojn konsternaj\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri respondojn por miaj abonatoj\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi silentigitajn afiŝojn\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi antaŭrigardojn al vidaŭdaĵoj\"])},\n \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vortofiltro\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri nur respondojn por mi\"])},\n \"file_export_import\": {\n \"errors\": {\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etversio de dosiero malsamas, iuj agordoj eble ne funkcios\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Nekonforma ĉefa versio: \", _interpolate(_named(\"fileMajor\")), \", versio de dosiero estas tro malnova kaj nesubtenata (minimuma estas \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Nekonforma ĉefa versio: \", _interpolate(_named(\"fileMajor\")), \", ĉi tiu PleromaFE (agordoj je versio \", _interpolate(_named(\"feMajor\")), \") tro malnovas por tio\"])},\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La elektita dosiero ne estas subtenata savkopio de agordoj de Pleroma. Nenio ŝanĝiĝis.\"])}\n },\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rehavi agordojn el dosiero\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Savkopii agordojn kaj haŭton al dosiero\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Savkopii agordojn al dosiero\"])},\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Savkopio de agordoj\"])}\n },\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri flankan breton dekstre\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi ŝanĝojn\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi kriujon de nodo\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉiam montri ŝvebantan butonon por nova afiŝo\"])},\n \"mentions_new_style\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pli mojosaj menciligiloj\"])},\n \"mentions_new_place\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meti menciojn sur apartan linion\"])},\n \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri listojn en navigiloj\"])},\n \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Savkopio de konto\"])},\n \"account_backup_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tio povigas vin elŝuti arĥivon de viaj afiŝoj kaj ĉiuj informoj pri via konto, sed ili ne jam povas enportiĝi en konton de Pleroma.\"])},\n \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraris akirado de kromnomoj: \", _interpolate(_named(\"error\"))])},\n \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se vi volas movi la konton aliloken, vi devas iri al via celata konto, kaj aldoni kromnomon ligitan al tie ĉi.\"])},\n \"navbar_column_stretch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etendi navigan breton laŭ larĝeco de kolumnoj\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝoj\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Finoj de enketoj kun via voĉo\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aspekto de interparoloj\"])},\n \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne alglui kapojn de kolumnoj al supro de la ekrano\"])},\n \"conversation_display_linear_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linia vido\"])},\n \"use_websockets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uzi teĥnikaron «websockets» (tuja ĝisdatigo)\"])},\n \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"plene nur je uzantoj foraj (ekz. \", \"@\", \"zozo\", \"@\", \"ekzemplo.org)\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri altnivelajn\"])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu agordo estas ligita al via profilo, kaj efektiviĝos en ĉiuj viaj salutoj kaj klientoj\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aspekto de afiŝoj\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Menciaj ligiloj\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lingvo de leteroj ricevotaj de la servilo\"])},\n \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Savkopio\"])},\n \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elŝuti\"])},\n \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu savkopio ne jam pretas.\"])},\n \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi\"])},\n \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraris akirado de listo de savkopioj: \", _interpolate(_named(\"error\"))])},\n \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fari novan savkopion\"])},\n \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldonis novan savkopion.\"])},\n \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraris aldono de nova savkopio: \", _interpolate(_named(\"error\"))])},\n \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kromnomoj de konto\"])},\n \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kromnomo\"])},\n \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi\"])},\n \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi ĉi tiun kromnomon\"])},\n \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Aldoni novan kromnomon (ekz. \", _interpolate(_named(\"example\")), \")\"])},\n \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kromnomo estas aldonita.\"])},\n \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraris aldono de kromnomo: \", _interpolate(_named(\"error\"))])},\n \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Movi konton\"])},\n \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Celata konto (ekz. \", _interpolate(_named(\"example\")), \")\"])},\n \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konto moviĝis.\"])},\n \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraris movado de konto: \", _interpolate(_named(\"error\"))])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vortofiltrado\"])},\n \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vortofiltrado kaj pli…\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigi afiŝojn de robotoj\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi markon de roboteco en afiŝoj\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi vorte filtritajn afiŝojn\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi silentigitajn fadenojn\"])},\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privateco\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profiloj de uzantoj\"])},\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne montri liston de miaj ŝatatoj (oni tamen sciiĝas)\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Arba stilo\"])},\n \"conversation_display_tree_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Arba vido\"])},\n \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri rulumskalojn de flankaj kolumnoj\"])},\n \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniam montri trian kolumnon\"])},\n \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kolumno de sciigoj\"])},\n \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kolumnoj\"])},\n \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grandeco de kolumnoj\"])},\n \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flanka breto\"])},\n \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enhavo\"])},\n \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciigoj\"])},\n \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permesi pli flekseblan navigadon en arba vido\"])},\n \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linia stilo\"])},\n \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri la butonon pri «aliaj respondoj»\"])},\n \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sub afiŝoj\"])},\n \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"En afiŝoj\"])},\n \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maksimuma nombro de niveloj implicite montrataj en fadeno\"])},\n \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri novajn afiŝojn memage\"])},\n \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri simbolon \", \"@\", \" kiel bildon anstataŭ teksto\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri menciajn ligilojn\"])},\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ĉiam mallonge (ekz. \", \"@\", \"zozo)\"])},\n \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ĉiam plene (ekz. \", \"@\", \"zozo\", \"@\", \"ekzemplo.org)\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri profilbildon de uzanto apud la ligilo\"])},\n \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri profilbildon de uzanto apud mencioj\"])},\n \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malvigligi retnomojn (ekz. \", \"@\", \"ekzemplo.org en \", \"@\", \"zozo\", \"@\", \"ekzemplo.org)\"])},\n \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emfazi vian mencion, se vi estas menciita\"])},\n \"mention_link_use_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri karton de uzanto per klako al mencia ligilo\"])},\n \"user_popover_avatar_action_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi la ŝprucaĵon\"])},\n \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfermi la profilon\"])},\n \"user_popover_avatar_overlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aperigi ŝprucaĵon pri uzanto sur profilbildo\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri la markon «(Vi)»\"])},\n \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zomi la profilbildon\"])},\n \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kun sufiĉo da spaco, montri trian kolumnon kun\"])}\n },\n \"timeline\": {\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maletendi\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interparolo\"])},\n \"error_fetching\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris ĝisdatigo\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri pli malnovajn afiŝojn\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝo estas markita kiel rekta aŭ nur por abonantoj, kaj ne eblas ĝin ripeti\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ripetis\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri novajn\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĝisdata\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj pliaj afiŝoj\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj afiŝoj\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi ree\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Eraris akirado de historio: \", _interpolate(_list(0))])},\n \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Realtempa konekto fariĝis\"])},\n \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Realtempa konekto perdiĝis: CloseEvent code \", _interpolate(_list(0))])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aprobi\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bloki\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokita!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rifuzi\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝatataj\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aboni\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peto sendiĝis!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Petante…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malaboni\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonatoj\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonantoj\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonata!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Abonas vin!\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tio estas vi!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vidaŭdaĵoj\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigi\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigita\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tage\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fore aboni\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝoj\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malbloki\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malblokante…\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokante…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsilentigi\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsilentigante…\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigante…\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raporti\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mesaĝo\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mencio\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝita\"])},\n \"admin_menu\": {\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi uzanton\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malpermesi federadon de afiŝoj de uzanto\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malpermesi ĉian abonadon al uzanto\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malpermesi abonadon al uzanto el foraj nodoj\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Devigi afiŝojn esti nur por abonantoj\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Devigi afiŝojn nelistiĝi\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi vidaŭdaĵojn de afiŝoj\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marki ĉiujn afiŝojn konsternaj\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi konton\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malaktivigi konton\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivigi konton\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malnomumi reguligiston\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomumi reguligiston\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malnomumi administranton\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomumi administranton\"])},\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reguligado\"])},\n \"delete_user_data_and_deactivate_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tio ĉi por ĉiam forigos datumojn de tiu ĉi konto, kaj malaktivigos ĝin. Ĉu vi plene certas?\"])}\n },\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri ripetojn\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi ripetojn\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne ricevi sciigojn\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ricevi sciigojn\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roboto\"])},\n \"highlight\": {\n \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flanka strio\"])},\n \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stria fono\"])},\n \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unueca fono\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Senemfaze\"])}\n },\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti profilon\"])},\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malaktiva\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuligi peton\"])},\n \"remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi abonanton\"])},\n \"note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Noto\"])},\n \"note_blank\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Neniu)\"])},\n \"edit_note_apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apliki\"])},\n \"edit_note_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuligi\"])},\n \"edit_note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti noton\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Historio de uzanto\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pardonu, ĉi tiu profilo ne ekzistas.\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pardonu, eraris enlego de ĉi tiu profilo.\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pli\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kiun aboni\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alŝuti vidaŭdaĵon\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripeti\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Respondi\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝati\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agordoj de uzanto\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legosigno\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rifuzi abonpeton\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Akcepti abonpeton\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldoni reagon\"])},\n \"toggle_expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etendi aŭ maletendi sciigon por montri plenan afiŝon\"])},\n \"toggle_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etendi aŭ maletendi afiŝon por montri silentigitan enhavon\"])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alŝuto malsukcesis.\"])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Dosiero estas tro granda [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reprovu pli poste\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Malsukcesis alŝuto: \", _interpolate(_list(0))])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n }\n },\n \"emoji\": {\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉi bildosignon\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teni elektilon malfermita\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildsignoj\"])},\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Glumarkoj\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigi bildosignon\"])},\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Enlegante ĉiujn \", _interpolate(_named(\"emojiAmount\")), \" bildosignojn\"])},\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Enlegis la \", _interpolate(_named(\"saneAmount\")), \" unuajn bildosignojn; enlego de ĉiuj povus kaŭzi problemojn pri efikeco.\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unikoda bildosigno\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Propra bildosigno\"])},\n \"unicode_groups\": {\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Agado\"])},\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bestoj kaj naturo\"])},\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flagoj\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Manĝaĵoj kaj trinkaĵoj\"])},\n \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aĵoj\"])},\n \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Homoj kaj korpo\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mienbildoj kaj sentoj\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Simboloj\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vojaĝoj kaj lokoj\"])}\n },\n \"regional_indicator\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Regiona marko \", _interpolate(_named(\"letter\"))])}\n },\n \"polls\": {\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tro malmultaj unikaj elektebloj en la enketo\"])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Enketo finiĝis antaŭ \", _interpolate(_list(0))])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Enketo finiĝas je \", _interpolate(_list(0))])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aĝo de enketo\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pluraj elektoj\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unu elekto\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Speco de enketo\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Voĉi\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"voĉoj\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elekteblo\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldoni elekteblon\"])},\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldoni enketon\"])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" voĉdono\"]), _normalize([_interpolate(_named(\"count\")), \" voĉdonoj\"])])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" persono voĉdonis\"]), _normalize([_interpolate(_named(\"count\")), \" personoj voĉdonis\"])])}\n },\n \"importer\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris enporto de ĉi tiu dosiero.\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enportita sukcese.\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sendi\"])}\n },\n \"exporter\": {\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Traktante; baldaŭ vi ricevos peton elŝuti vian dosieron\"])},\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elporti\"])}\n },\n \"domain_mute_card\": {\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsilentigante…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsilentigi\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigante…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigi\"])}\n },\n \"about\": {\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skipo\"])},\n \"mrf\": {\n \"simple\": {\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo devigas vidaŭdaĵojn esti markitaj kiel konsternaj en afiŝoj el la jenaj nodoj:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Devige marki vidaŭdaĵojn konsternaj\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo forigas vidaŭdaĵojn de afiŝoj el la jenaj nodoj:\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigo de vidaŭdaĵoj\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigo el la «Federa historio»\"])},\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo sendos nur publikajn afiŝojn al la jenaj nodoj:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kvaranteno\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo ne akceptos mesaĝojn de la jenaj nodoj:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rifuzi\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo nur akceptas mesaĝojn de la jenaj nodoj:\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Akcepti\"])},\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Specialaj politikoj de la nodo\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu nodo forigas la jenajn nodojn el la «Federa historio»:\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nodo\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kialo\"])}\n },\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝaltis politikon de Mesaĝa ŝanĝilaro (MRF)\"])},\n \"keyword\": {\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anstataŭigi\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rifuzi\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigo el la historio de la «Federa historio»\"])},\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Politiko pri ĉefvortoj\"])}\n },\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federado\"])},\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Politikoj de Mesaĝa ŝanĝilaro (MRF) efikas sur federa konduto de la nodo. La sekvaj politikoj estas ŝaltitaj:\"])}\n }\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Elekti ĉion\"])}\n },\n \"remote_user_resolver\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Netrovinte.\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉante\"])},\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trovilo de foraj uzantoj\"])}\n },\n \"interactions\": {\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi pli malnovajn interagojn\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Migrado de uzantoj\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Novaj abonoj\"])},\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripetoj kaj ŝatoj\"])},\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildosignaj reagoj\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raportoj\"])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma ne povis aliri deponejon de la foliumilo. Via saluto kaj viaj lokaj agordoj ne estos konservitaj, kaj vi eble renkontos neatenditajn problemojn. Provu permesi kuketojn.\"])}\n },\n \"status\": {\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi enhavon\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri enhavon\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi plenan temon\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri plenan temon\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", enhavas vortojn:\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fadeno silentigita\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kopii ligilon al afiŝo\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝo ne estas disponebla\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malsilentigi interparolon\"])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Silentigi interparolon\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Respondoj:\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Responde al\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas forigi ĉi tiun afiŝon?\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Senlegosigni\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legosigni\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fiksita\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfiksi de profilo\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fiksi al profilo\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi afiŝon\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ripetoj\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝatoj\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu afiŝo foriĝis\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konsterna\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etendi\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ekstera fonto\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mencioj\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Vi)\"])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \" pli\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri ĉiujn kunsendaĵojn\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi iujn kunsendaĵojn\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Afiŝo havas \", _interpolate(_named(\"number\")), \" kunsendaĵo(j)n\"])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri en vidilo de vidaŭdaĵoj\"])},\n \"edit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti afiŝon\"])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Respondoj (+\", _interpolate(_named(\"numReplies\")), \" alia):\"]), _normalize([\"Respondoj (+\", _interpolate(_named(\"numReplies\")), \" aliaj):\"])])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malkaŝi ĉi tiun fadenon\"])},\n \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Montri ĉion en ĉi tiu fadeno (\", _interpolate(_named(\"numStatus\")), \" afiŝon sume, maksimume en profundeco \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"Montri ĉion en ĉi tiu fadeno (\", _interpolate(_named(\"numStatus\")), \" afiŝojn sume, maksimume en profundeco \", _interpolate(_named(\"depth\")), \")\"])])},\n \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Montri plenan interparolon (\", _interpolate(_named(\"numStatus\")), \" alian afiŝon)\"]), _normalize([\"Montri plenan interparolon (\", _interpolate(_named(\"numStatus\")), \" aliajn afiŝojn)\"])])},\n \"edited_at\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(lastafoje redaktita je \", _interpolate(_named(\"time\")), \")\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi kunsendaĵon\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antaŭvidi priskribon (malfermu kunsendaĵon por vidi plenan priskribon)\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi kunsendaĵon\"])},\n \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉesigi ludilon de [Flash]\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝovi kunsendaĵon antaŭen\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ŝovi kunsendaĵon posten\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kaŝi ĉi tiun fadenon\"])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Montri ceteron de ĉi tiu fadeno (\", _interpolate(_named(\"numStatus\")), \" afiŝon sume)\"]), _normalize([\"Montri ceteron de ĉi tiu fadeno (\", _interpolate(_named(\"numStatus\")), \" afiŝojn sume)\"])])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Vidi \", _interpolate(_named(\"numReplies\")), \" alian respondon sub ĉi tiu afiŝo\"]), _normalize([\"Vidi \", _interpolate(_named(\"numReplies\")), \" aliajn respondojn sub ĉi tiu afiŝo\"])])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Montri nur respondojn al ĉi tiu afiŝo\"])},\n \"status_history\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Historio de afiŝo\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfermi galerion\"])}\n },\n \"time\": {\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"j\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"j\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" jaroj\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" jaro\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" semajnoj\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" semajno\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"sek\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"sek\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" sekundoj\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" sekundo\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nun\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ĵus\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"m\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"m\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" monatoj\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" monato\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minutoj\"])},\n \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" minuto\"])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"antaŭ \", _interpolate(_list(0))])},\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"post \", _interpolate(_list(0))])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"hor\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"hor\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" horoj\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" horo\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"t\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"t\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" tagoj\"])},\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" tago\"])},\n \"unit\": {\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" tago\"]), _normalize([_interpolate(_list(0)), \" tagoj\"])])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" minuto\"]), _normalize([_interpolate(_list(0)), \" minutoj\"])])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"t\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" horo\"]), _normalize([_interpolate(_list(0)), \" horoj\"])])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" monato\"]), _normalize([_interpolate(_list(0)), \" monatoj\"])])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" sekundo\"]), _normalize([_interpolate(_list(0)), \" sekundoj\"])])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"sek\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" semajno\"]), _normalize([_interpolate(_list(0)), \" semajnoj\"])])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"sem\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" jaro\"]), _normalize([_interpolate(_list(0)), \" jaroj\"])])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"j\"])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Personoj\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj rezultoj\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" personoj parolas\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" persono parolas\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kradvortoj\"])},\n \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj pliaj rezultoj\"])},\n \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi pliajn rezultojn\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hodiaŭ\"])}\n },\n \"file_type\": {\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dosiero\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bildo\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filmo\"])},\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sono\"])}\n },\n \"chats\": {\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi ankoraŭ havas neniun babilon. Komencu novan babilon!\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Io misokazis dum sendado de la mesaĝo.\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Io misokazis dum enlego de la babilo.\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas forigi ĉi tiun mesaĝon?\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pli\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ne povas sendi malplenan mesaĝon\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nova babilo\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Babiloj\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi:\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Mesaĝi al \", _interpolate(_named(\"nickname\"))])}\n },\n \"password_reset\": {\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi devas restarigi vian pasvorton, sed restarigado de pasvortoj estas malŝaltita. Bonvolu kontakti la administranton de via nodo.\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi devas restarigi vian pasvorton por saluti.\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigado de pasvortoj estas malŝaltita. Bonvolu kontakti la administranton de via nodo.\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vi atingis la limon de provoj, reprovu pli poste.\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reiri al la hejmpaĝo\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kontrolu vian retpoŝton pro ligilo por restarigi vian pasvorton.\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Via retpoŝtadreso aŭ uzantonomo\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enigu vian retpoŝtadreson aŭ uzantonomon. Ni sendos al vi ligilon por restarigi vian pasvorton.\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restarigi pasvorton\"])},\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi forgesis pasvorton?\"])}\n },\n \"user_reporting\": {\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Eraris traktado de via peto.\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sendi\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Plusendi al \", _interpolate(_list(0))])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La konto venas de alia servilo. Ĉu kopio de la raporto sendiĝu ankaŭ tien?\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldonaj komentoj\"])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu raporto sendiĝos al reguligistoj de via nodo. Vi povas komprenigi kial vi raportas ĉi tiun konton sube:\"])},\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Raportante \", _interpolate(_list(0))])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kriujo\"])}\n },\n \"report\": {\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raportinto:\"])},\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raportito:\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Raportitaj afiŝoj:\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notoj:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝo:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Malfermita\"])},\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermita\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Solvita\"])}\n },\n \"lists\": {\n \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Redaktado de listo \", _interpolate(_named(\"listTitle\"))])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Listoj\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nova listo\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nomo de listo\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉi uzantojn\"])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Krei\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi ŝanĝojn\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi liston\"])},\n \"following_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limigi al abonatoj\"])},\n \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mastrumi listojn\"])},\n \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mastrumi listanojn\"])},\n \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serĉi pliajn uzantojn\"])},\n \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi de listo\"])},\n \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aldoni al listo\"])},\n \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jam en listo\"])},\n \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kreado de nova listo\"])},\n \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konservi nomon\"])},\n \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉu vi certe volas forigi la liston?\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Eraris umado je listoj: \", _interpolate(_list(0))])}\n },\n \"update\": {\n \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ni longe ne eldonis novan version, kaj tial aferoj eble aspektos iom malsame, ol antaŭe.\"])},\n \"update_bugs\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Bonvolu raporti problemojn kaj erarojn ĉe \", _interpolate(_named(\"pleromaGitlab\")), \", ĉar ni ŝanĝis multon, kaj kvankam ni zorge testas kaj mem uzas la prilaboratajn versiojn, ni tamen povas preteratenti ion. Ni bonvenigas viajn rimarkojn kaj proponojn pri renkontitaj eraroj aŭ proponoj plibonigi Pleromon.\"])},\n \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bonvolu pacienci\"])},\n \"update_bugs_gitlab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GitLab de Pleroma\"])},\n \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Por legi detalojn pri ŝanĝoj, vidu \", _interpolate(_named(\"theFullChangelog\")), \".\"])},\n \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"la plenan ŝanĝaron\"])},\n \"art_by\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Arto de \", _interpolate(_named(\"linkToArtist\"))])}\n },\n \"unicode_domain_indicator\": {\n \"tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu retnomo enhavas signojn ekster ASCII.\"])}\n },\n \"announcements\": {\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tio estas tuttaga okazo\"])},\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anoncoj\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anonco\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marki legita\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Entajpu vian anoncon tie ĉi…\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝi\"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Eraro: \", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fermi\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forigi\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Komenca tempo: \"])},\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fina tempo: \"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Publikigita je \", _interpolate(_named(\"time\"))])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Komenciĝas je \", _interpolate(_named(\"time\"))])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Finiĝas je \", _interpolate(_named(\"time\"))])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Redakti\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Afiŝi\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nuligi\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ĉi tiu anonco estas neaktiva\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","list","_list","named","_named","plural","_plural"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/i18n/id-json.3e42564ce7a3a847ecb0.js b/priv/static/static/js/i18n/id-json.3e42564ce7a3a847ecb0.js @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[2513],{62263:(n,a,e)=>{e.r(a),e.d(a,{default:()=>r});const r={settings:{style:{preview:{link:n=>{const{normalize:a}=n;return a(["sebuah tautan yang kecil nan bagus"])},header:n=>{const{normalize:a}=n;return a(["Pratinjau"])},error:n=>{const{normalize:a}=n;return a(["Contoh kesalahan"])},button:n=>{const{normalize:a}=n;return a(["Tombol"])},input:n=>{const{normalize:a}=n;return a(["Baru saja mendarat di L.A."])},faint_link:n=>{const{normalize:a}=n;return a(["manual berguna"])},fine_print:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Baca ",e(r(0))," kami untuk belajar sesuatu yang tak ada gunanya!"])},header_faint:n=>{const{normalize:a}=n;return a(["Ini baik-baik saja"])},checkbox:n=>{const{normalize:a}=n;return a(["Saya telah membaca sekilas syarat dan ketentuan"])}},advanced_colors:{alert_neutral:n=>{const{normalize:a}=n;return a(["Neutral"])},alert_warning:n=>{const{normalize:a}=n;return a(["Peringatan"])},alert_error:n=>{const{normalize:a}=n;return a(["Kesalahan"])},_tab_label:n=>{const{normalize:a}=n;return a(["Lanjutan"])},post:n=>{const{normalize:a}=n;return a(["Postingan/Bio pengguna"])},popover:n=>{const{normalize:a}=n;return a(["Tooltip, menu, popover"])},badge_notification:n=>{const{normalize:a}=n;return a(["Notifikasi"])},top_bar:n=>{const{normalize:a}=n;return a(["Bar atas"])},borders:n=>{const{normalize:a}=n;return a([])},buttons:n=>{const{normalize:a}=n;return a(["Tombol"])},wallpaper:n=>{const{normalize:a}=n;return a(["Latar belakang"])},panel_header:n=>{const{normalize:a}=n;return a(["Header panel"])},icons:n=>{const{normalize:a}=n;return a(["Ikon-ikon"])},disabled:n=>{const{normalize:a}=n;return a(["Dinonaktifkan"])}},common_colors:{main:n=>{const{normalize:a}=n;return a(["Warna umum"])},_tab_label:n=>{const{normalize:a}=n;return a(["Umum"])}},common:{contrast:{context:{text:n=>{const{normalize:a}=n;return a(["untuk teks"])},"18pt":n=>{const{normalize:a}=n;return a(["Untuk teks besar (18pt+)"])}}},color:n=>{const{normalize:a}=n;return a(["Warna"])}},switcher:{help:{upgraded_from_v2:n=>{const{normalize:a}=n;return a(["PleromaFE telah diperbarui, tema dapat terlihat sedikit berbeda dari apa yang Anda ingat."])},future_version_imported:n=>{const{normalize:a}=n;return a(["Berkas yang Anda impor dibuat pada versi FE yang lebih baru."])},older_version_imported:n=>{const{normalize:a}=n;return a(["Berkas yang Anda impor dibuat pada versi FE yang lebih lama."])},fe_upgraded:n=>{const{normalize:a}=n;return a(["Mesin tema PleromaFE diperbarui setelah pembaruan versi."])}},use_source:n=>{const{normalize:a}=n;return a(["Versi baru"])},use_snapshot:n=>{const{normalize:a}=n;return a(["Versi lama"])},load_theme:n=>{const{normalize:a}=n;return a(["Muat tema"])}},fonts:{_tab_label:n=>{const{normalize:a}=n;return a(["Font"])},components:{interface:n=>{const{normalize:a}=n;return a(["Antarmuka"])},post:n=>{const{normalize:a}=n;return a(["Teks postingan"])}},family:n=>{const{normalize:a}=n;return a(["Nama font"])},size:n=>{const{normalize:a}=n;return a(["Ukuran (dalam px)"])},weight:n=>{const{normalize:a}=n;return a(["Berat (ketebalan)"])}},shadows:{components:{panel:n=>{const{normalize:a}=n;return a(["Panel"])},panelHeader:n=>{const{normalize:a}=n;return a(["Header panel"])}}}},notification_setting_privacy:n=>{const{normalize:a}=n;return a(["Privasi"])},notifications:n=>{const{normalize:a}=n;return a(["Notifikasi"])},values:{true:n=>{const{normalize:a}=n;return a(["ya"])},false:n=>{const{normalize:a}=n;return a(["tidak"])}},user_settings:n=>{const{normalize:a}=n;return a(["Pengaturan Pengguna"])},upload_a_photo:n=>{const{normalize:a}=n;return a(["Unggah foto"])},theme:n=>{const{normalize:a}=n;return a(["Tema"])},text:n=>{const{normalize:a}=n;return a(["Teks"])},settings:n=>{const{normalize:a}=n;return a(["Pengaturan"])},security_tab:n=>{const{normalize:a}=n;return a(["Keamanan"])},saving_ok:n=>{const{normalize:a}=n;return a(["Pengaturan disimpan"])},profile_tab:n=>{const{normalize:a}=n;return a(["Profil"])},profile_background:n=>{const{normalize:a}=n;return a(["Latar belakang profil"])},token:n=>{const{normalize:a}=n;return a(["Token"])},oauth_tokens:n=>{const{normalize:a}=n;return a(["Token OAuth"])},show_moderator_badge:n=>{const{normalize:a}=n;return a(['Tampilkan lencana "Moderator" di profil saya'])},show_admin_badge:n=>{const{normalize:a}=n;return a(['Tampilkan lencana "Admin" di profil saya'])},new_password:n=>{const{normalize:a}=n;return a(["Kata sandi baru"])},new_email:n=>{const{normalize:a}=n;return a(["Surel baru"])},name_bio:n=>{const{normalize:a}=n;return a(["Nama & bio"])},name:n=>{const{normalize:a}=n;return a(["Nama"])},profile_fields:{value:n=>{const{normalize:a}=n;return a(["Isi"])},name:n=>{const{normalize:a}=n;return a(["Label"])},label:n=>{const{normalize:a}=n;return a(["Metadata profil"])}},limited_availability:n=>{const{normalize:a}=n;return a(["Tidak tersedia di browser Anda"])},invalid_theme_imported:n=>{const{normalize:a}=n;return a(["Berkas yang dipilih bukan sebuah tema yang didukung Pleroma. Tidak ada perbuahan yang dibuat pada tema Anda."])},interfaceLanguage:n=>{const{normalize:a}=n;return a(["Bahasa antarmuka"])},interface:n=>{const{normalize:a}=n;return a(["Antarmuka"])},instance_default_simple:n=>{const{normalize:a}=n;return a(["(bawaan)"])},instance_default:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["(bawaan: ",e(r("value")),")"])},general:n=>{const{normalize:a}=n;return a(["Umum"])},delete_account_error:n=>{const{normalize:a}=n;return a(["Ada masalah ketika menghapus akun Anda. Jika ini terus terjadi harap hubungi adminstrator instansi Anda."])},delete_account_description:n=>{const{normalize:a}=n;return a(["Hapus data Anda secara permanen dan menonaktifkan akun Anda."])},delete_account:n=>{const{normalize:a}=n;return a(["Hapus akun"])},data_import_export_tab:n=>{const{normalize:a}=n;return a(["Impor / ekspor data"])},current_password:n=>{const{normalize:a}=n;return a(["Kata sandi saat ini"])},confirm_new_password:n=>{const{normalize:a}=n;return a(["Konfirmasi kata sandi baru"])},version:{title:n=>{const{normalize:a}=n;return a(["Versi"])},backend_version:n=>{const{normalize:a}=n;return a(["Versi backend"])},frontend_version:n=>{const{normalize:a}=n;return a(["Versi frontend"])}},security:n=>{const{normalize:a}=n;return a(["Keamanan"])},changed_password:n=>{const{normalize:a}=n;return a(["Kata sandi berhasil diubah!"])},change_password_error:n=>{const{normalize:a}=n;return a(["Ada masalah ketika mengubah kata sandi Anda."])},change_password:n=>{const{normalize:a}=n;return a(["Ubah kata sandi"])},changed_email:n=>{const{normalize:a}=n;return a(["Surel berhasil diubah!"])},change_email_error:n=>{const{normalize:a}=n;return a(["Ada masalah ketika mengubah surel Anda."])},change_email:n=>{const{normalize:a}=n;return a(["Ubah surel"])},cRed:n=>{const{normalize:a}=n;return a(["Merah (Batal)"])},cBlue:n=>{const{normalize:a}=n;return a(["Biru (Balas, ikuti)"])},btnRadius:n=>{const{normalize:a}=n;return a(["Tombol"])},bot:n=>{const{normalize:a}=n;return a(["Ini adalah akun bot"])},block_export:n=>{const{normalize:a}=n;return a(["Ekspor blokiran"])},bio:n=>{const{normalize:a}=n;return a(["Bio"])},background:n=>{const{normalize:a}=n;return a(["Latar belakang"])},avatarRadius:n=>{const{normalize:a}=n;return a(["Avatar"])},avatar:n=>{const{normalize:a}=n;return a(["Avatar"])},attachments:n=>{const{normalize:a}=n;return a(["Lampiran"])},mfa:{scan:{title:n=>{const{normalize:a}=n;return a(["Pindai"])}},confirm_and_enable:n=>{const{normalize:a}=n;return a(["Konfirmasi & aktifkan OTP"])},setup_otp:n=>{const{normalize:a}=n;return a(["Siapkan OTP"])},otp:n=>{const{normalize:a}=n;return a(["OTP"])},recovery_codes_warning:n=>{const{normalize:a}=n;return a(["Tulis kode-kode nya atau simpan mereka di tempat yang aman - jika tidak Anda tidak akan melihat mereka lagi. Jika Anda tidak dapat mengakses aplikasi 2FA Anda dan kode pemulihan Anda hilang Anda tidak akan bisa mengakses akun Anda."])},authentication_methods:n=>{const{normalize:a}=n;return a(["Metode otentikasi"])},recovery_codes:n=>{const{normalize:a}=n;return a(["Kode pemulihan."])},warning_of_generate_new_codes:n=>{const{normalize:a}=n;return a(["Ketika Anda menghasilkan kode pemulihan baru, kode lama Anda berhenti bekerja."])},generate_new_recovery_codes:n=>{const{normalize:a}=n;return a(["Hasilkan kode pemulihan baru"])},title:n=>{const{normalize:a}=n;return a(["Otentikasi Dua-faktor"])},waiting_a_recovery_codes:n=>{const{normalize:a}=n;return a(["Menerima kode cadangan…"])},verify:{desc:n=>{const{normalize:a}=n;return a(["Untuk mengaktifkan otentikasi dua-faktor, masukkan kode dari aplikasi dua-faktor Anda:"])}}},app_name:n=>{const{normalize:a}=n;return a(["Nama aplikasi"])},save:n=>{const{normalize:a}=n;return a(["Simpan perubahan"])},valid_until:n=>{const{normalize:a}=n;return a(["Valid hingga"])},follow_import_error:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan ketika mengimpor pengikut"])},emoji_reactions_on_timeline:n=>{const{normalize:a}=n;return a(["Tampilkan reaksi emoji pada linimasa"])},chatMessageRadius:n=>{const{normalize:a}=n;return a(["Pesan obrolan"])},cOrange:n=>{const{normalize:a}=n;return a(["Jingga (Favorit)"])},avatarAltRadius:n=>{const{normalize:a}=n;return a(["Avatar (notifikasi)"])},hide_shoutbox:n=>{const{normalize:a}=n;return a(["Sembunyikan kotak suara instansi"])},hide_followers_count_description:n=>{const{normalize:a}=n;return a(["Jangan tampilkan jumlah pengikut"])},hide_follows_count_description:n=>{const{normalize:a}=n;return a(["Jangan tampilkan jumlah mengikuti"])},hide_followers_description:n=>{const{normalize:a}=n;return a(["Jangan tampilkan siapa yang mengikuti saya"])},hide_follows_description:n=>{const{normalize:a}=n;return a(["Jangan tampilkan siapa yang saya ikuti"])},notification_visibility_emoji_reactions:n=>{const{normalize:a}=n;return a(["Reaksi"])},notification_visibility_follows:n=>{const{normalize:a}=n;return a(["Diikuti"])},notification_visibility_moves:n=>{const{normalize:a}=n;return a(["Pengguna Bermigrasi"])},notification_visibility_repeats:n=>{const{normalize:a}=n;return a(["Ulangan"])},notification_visibility_mentions:n=>{const{normalize:a}=n;return a(["Sebutan"])},notification_visibility_likes:n=>{const{normalize:a}=n;return a(["Favorit"])},notification_visibility:n=>{const{normalize:a}=n;return a(["Jenis notifikasi yang perlu ditampilkan"])},links:n=>{const{normalize:a}=n;return a(["Tautan"])},hide_user_stats:n=>{const{normalize:a}=n;return a(["Sembunyikan statistik pengguna (contoh. jumlah pengikut)"])},hide_post_stats:n=>{const{normalize:a}=n;return a(["Sembunyikan statistik postingan (contoh. jumlah favorit)"])},use_one_click_nsfw:n=>{const{normalize:a}=n;return a(["Buka lampiran NSFW hanya dengan satu klik"])},hide_wallpaper:n=>{const{normalize:a}=n;return a(["Sembunyikan latar belakang instansi"])},blocks_imported:n=>{const{normalize:a}=n;return a(["Blokiran diimpor! Pemrosesannya mungkin memakan sedikit waktu."])},block_import_error:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan ketika mengimpor blokiran"])},block_import:n=>{const{normalize:a}=n;return a(["Impor blokiran"])},block_export_button:n=>{const{normalize:a}=n;return a(["Ekspor blokiran Anda menjadi berkas csv"])},blocks_tab:n=>{const{normalize:a}=n;return a(["Blokiran"])},delete_account_instructions:n=>{const{normalize:a}=n;return a(["Ketik kata sandi Anda pada input di bawah untuk mengkonfirmasi penghapusan akun."])},mutes_and_blocks:n=>{const{normalize:a}=n;return a(["Bisuan dan Blokiran"])},enter_current_password_to_confirm:n=>{const{normalize:a}=n;return a(["Masukkan kata sandi Anda saat ini untuk mengkonfirmasi identitas Anda"])},filtering:n=>{const{normalize:a}=n;return a(["Penyaringan"])},word_filter:n=>{const{normalize:a}=n;return a(["Penyaring kata"])},avatar_size_instruction:n=>{const{normalize:a}=n;return a(["Ukuran minimum gambar avatar yang disarankan adalah 150x150 piksel."])},attachmentRadius:n=>{const{normalize:a}=n;return a(["Lampiran"])},cGreen:n=>{const{normalize:a}=n;return a(["Hijau (Retweet)"])},max_thumbnails:n=>{const{normalize:a}=n;return a(["Jumlah thumbnail maksimum per postingan"])},loop_video:n=>{const{normalize:a}=n;return a(["Ulang-ulang video"])},loop_video_silent_only:n=>{const{normalize:a}=n;return a(['Ulang-ulang video tanpa suara (seperti "gif" Mastodon)'])},pause_on_unfocused:n=>{const{normalize:a}=n;return a(["Jeda aliran ketika tab di dalam fokus"])},reply_visibility_following:n=>{const{normalize:a}=n;return a(["Hanya tampilkan balasan yang ditujukan kepada saya atau orang yang saya ikuti"])},reply_visibility_following_short:n=>{const{normalize:a}=n;return a(["Tampilkan balasan ke orang yang saya ikuti"])},saving_err:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan ketika menyimpan pengaturan"])},search_user_to_block:n=>{const{normalize:a}=n;return a(["Cari siapa yang Anda ingin blokir"])},search_user_to_mute:n=>{const{normalize:a}=n;return a(["Cari siapa yang ingin Anda bisukan"])},set_new_avatar:n=>{const{normalize:a}=n;return a(["Tetapkan avatar baru"])},set_new_profile_background:n=>{const{normalize:a}=n;return a(["Tetapkan latar belakang profil baru"])},subject_line_behavior:n=>{const{normalize:a}=n;return a(["Salin subyek ketika membalas"])},subject_line_email:n=>{const{normalize:a}=n;return a(['Seperti surel: "re: subyek"'])},subject_line_mastodon:n=>{const{normalize:a}=n;return a(["Seperti mastodon: salin saja"])},subject_line_noop:n=>{const{normalize:a}=n;return a(["Jangan salin"])},useStreamingApiWarning:n=>{const{normalize:a}=n;return a(["(Tidak disarankan, eksperimental, diketahui dapat melewati postingan-postingan)"])},fun:n=>{const{normalize:a}=n;return a(["Seru"])},enable_web_push_notifications:n=>{const{normalize:a}=n;return a(["Aktifkan notifikasi push web"])},more_settings:n=>{const{normalize:a}=n;return a(["Lebih banyak pengaturan"])},reply_visibility_all:n=>{const{normalize:a}=n;return a(["Tampilkan semua balasan"])},reply_visibility_self:n=>{const{normalize:a}=n;return a(["Hanya tampilkan balasan yang ditujukan kepada saya"])},hide_muted_posts:n=>{const{normalize:a}=n;return a(["Sembunyikan postingan-postingan dari pengguna yang dibisukan"])},import_blocks_from_a_csv_file:n=>{const{normalize:a}=n;return a(["Impor blokiran dari berkas csv"])},domain_mutes:n=>{const{normalize:a}=n;return a(["Domain"])},composing:n=>{const{normalize:a}=n;return a(["Menulis"])},no_blocks:n=>{const{normalize:a}=n;return a(["Tidak ada yang diblokir"])},no_mutes:n=>{const{normalize:a}=n;return a(["Tidak ada yang dibisukan"])}},about:{mrf:{keyword:{reject:n=>{const{normalize:a}=n;return a(["Tolak"])},is_replaced_by:n=>{const{normalize:a}=n;return a(["→"])}},simple:{quarantine_desc:n=>{const{normalize:a}=n;return a(["Instansi ini hanya akan mengirim postingan publik ke instansi-instansi berikut:"])},quarantine:n=>{const{normalize:a}=n;return a(["Karantina"])},reject_desc:n=>{const{normalize:a}=n;return a(["Instansi ini tidak akan menerima pesan dari instansi-instansi berikut:"])},reject:n=>{const{normalize:a}=n;return a(["Tolak"])},accept_desc:n=>{const{normalize:a}=n;return a(["Instansi ini hanya menerima pesan dari instansi-instansi berikut:"])},accept:n=>{const{normalize:a}=n;return a(["Terima"])},media_removal:n=>{const{normalize:a}=n;return a(["Penghapusan Media"])},media_removal_desc:n=>{const{normalize:a}=n;return a(["Instansi ini menghapus media dari postingan yang berasal dari instansi-instansi berikut:"])}},federation:n=>{const{normalize:a}=n;return a(["Federasi"])},mrf_policies:n=>{const{normalize:a}=n;return a(["Kebijakan MRF yang diaktifkan"])}},staff:n=>{const{normalize:a}=n;return a(["Staf"])}},time:{day:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," hari"])},days:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," hari"])},day_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"h"])},days_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"h"])},hour:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," jam"])},hours:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," jam"])},hour_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"j"])},hours_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"j"])},in_future:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["dalam ",e(r(0))])},in_past:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," yang lalu"])},minute:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," menit"])},minutes:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," menit"])},minute_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"m"])},minutes_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"m"])},month:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," bulan"])},months:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," bulan"])},month_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"b"])},months_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"b"])},now:n=>{const{normalize:a}=n;return a(["baru saja"])},now_short:n=>{const{normalize:a}=n;return a(["sekarang"])},second:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," detik"])},seconds:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," detik"])},second_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"d"])},seconds_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"d"])},week:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," pekan"])},weeks:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," pekan"])},week_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"p"])},weeks_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"p"])},year:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," tahun"])},years:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," tahun"])},year_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"t"])},years_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"t"])}},timeline:{conversation:n=>{const{normalize:a}=n;return a(["Percakapan"])},error:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Terjadi kesalahan memuat linimasa: ",e(r(0))])},no_retweet_hint:n=>{const{normalize:a}=n;return a(["Postingan ditandai sebagai hanya-pengikut atau langsung dan tidak dapat diulang"])},repeated:n=>{const{normalize:a}=n;return a(["diulangi"])},reload:n=>{const{normalize:a}=n;return a(["Muat ulang"])},no_more_statuses:n=>{const{normalize:a}=n;return a(["Tidak ada status lagi"])},no_statuses:n=>{const{normalize:a}=n;return a(["Tidak ada status"])}},status:{favorites:n=>{const{normalize:a}=n;return a(["Favorit"])},repeats:n=>{const{normalize:a}=n;return a(["Ulangan"])},delete:n=>{const{normalize:a}=n;return a(["Hapus status"])},pin:n=>{const{normalize:a}=n;return a(["Sematkan di profil"])},unpin:n=>{const{normalize:a}=n;return a(["Berhenti menyematkan dari profil"])},pinned:n=>{const{normalize:a}=n;return a(["Disematkan"])},delete_confirm:n=>{const{normalize:a}=n;return a(["Apakah Anda benar-benar ingin menghapus status ini?"])},reply_to:n=>{const{normalize:a}=n;return a(["Balas ke"])},replies_list:n=>{const{normalize:a}=n;return a(["Balasan:"])},mute_conversation:n=>{const{normalize:a}=n;return a(["Bisukan percakapan"])},unmute_conversation:n=>{const{normalize:a}=n;return a(["Berhenti membisikan percakapan"])},status_unavailable:n=>{const{normalize:a}=n;return a(["Status tidak tersedia"])},thread_muted_and_words:n=>{const{normalize:a}=n;return a([", memiliki kata:"])},hide_content:n=>{const{normalize:a}=n;return a([])},show_content:n=>{const{normalize:a}=n;return a([])},status_deleted:n=>{const{normalize:a}=n;return a(["Postingan ini telah dihapus"])},nsfw:n=>{const{normalize:a}=n;return a(["NSFW"])}},user_card:{block:n=>{const{normalize:a}=n;return a(["Blokir"])},blocked:n=>{const{normalize:a}=n;return a(["Diblokir!"])},deny:n=>{const{normalize:a}=n;return a(["Tolak"])},edit_profile:n=>{const{normalize:a}=n;return a(["Sunting profil"])},favorites:n=>{const{normalize:a}=n;return a(["Favorit"])},follow:n=>{const{normalize:a}=n;return a(["Ikuti"])},follow_sent:n=>{const{normalize:a}=n;return a(["Permintaan dikirim!"])},follow_progress:n=>{const{normalize:a}=n;return a(["Meminta…"])},mute:n=>{const{normalize:a}=n;return a(["Bisukan"])},muted:n=>{const{normalize:a}=n;return a(["Dibisukan"])},per_day:n=>{const{normalize:a}=n;return a(["per hari"])},report:n=>{const{normalize:a}=n;return a(["Laporkan"])},statuses:n=>{const{normalize:a}=n;return a(["Status"])},unblock:n=>{const{normalize:a}=n;return a(["Berhenti memblokir"])},block_progress:n=>{const{normalize:a}=n;return a(["Memblokir…"])},unmute:n=>{const{normalize:a}=n;return a(["Berhenti membisukan"])},mute_progress:n=>{const{normalize:a}=n;return a(["Membisukan…"])},hide_repeats:n=>{const{normalize:a}=n;return a(["Sembunyikan ulangan"])},show_repeats:n=>{const{normalize:a}=n;return a(["Tampilkan ulangan"])},bot:n=>{const{normalize:a}=n;return a(["Bot"])},admin_menu:{moderation:n=>{const{normalize:a}=n;return a(["Moderasi"])},activate_account:n=>{const{normalize:a}=n;return a(["Aktifkan akun"])},deactivate_account:n=>{const{normalize:a}=n;return a(["Nonaktifkan akun"])},delete_account:n=>{const{normalize:a}=n;return a(["Hapus akun"])},force_nsfw:n=>{const{normalize:a}=n;return a(["Tandai semua postingan sebagai NSFW"])},strip_media:n=>{const{normalize:a}=n;return a(["Hapus media dari postingan-postingan"])},delete_user:n=>{const{normalize:a}=n;return a(["Hapus pengguna"])}},follow_unfollow:n=>{const{normalize:a}=n;return a(["Berhenti mengikuti"])},followees:n=>{const{normalize:a}=n;return a(["Mengikuti"])},followers:n=>{const{normalize:a}=n;return a(["Pengikut"])},following:n=>{const{normalize:a}=n;return a(["Diikuti!"])},follows_you:n=>{const{normalize:a}=n;return a(["Mengikuti Anda!"])},hidden:n=>{const{normalize:a}=n;return a(["Disembunyikan"])},its_you:n=>{const{normalize:a}=n;return a(["Ini Anda!"])},media:n=>{const{normalize:a}=n;return a(["Media"])},mention:n=>{const{normalize:a}=n;return a(["Sebut"])},message:n=>{const{normalize:a}=n;return a(["Kirimkan pesan"])}},user_profile:{timeline_title:n=>{const{normalize:a}=n;return a(["Linimasa pengguna"])},profile_does_not_exist:n=>{const{normalize:a}=n;return a(["Maaf, profil ini tidak ada."])},profile_loading_error:n=>{const{normalize:a}=n;return a(["Maaf, terjadi kesalahan ketika memuat profil ini."])}},user_reporting:{title:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Melaporkan ",e(r(0))])},add_comment_description:n=>{const{normalize:a}=n;return a(["Laporan ini akan dikirim ke moderator instansi Anda. Anda dapat menyediakan penjelasan mengapa Anda melaporkan akun ini di bawah:"])},additional_comments:n=>{const{normalize:a}=n;return a(["Komentar tambahan"])},forward_description:n=>{const{normalize:a}=n;return a(["Akun ini berada di server lain. Kirim salinan dari laporannya juga?"])},submit:n=>{const{normalize:a}=n;return a(["Kirim"])},generic_error:n=>{const{normalize:a}=n;return a(["Sebuah kesalahan terjadi ketika memproses permintaan Anda."])}},notifications:{favorited_you:n=>{const{normalize:a}=n;return a(["memfavoritkan status Anda"])},reacted_with:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["bereaksi dengan ",e(r(0))])},no_more_notifications:n=>{const{normalize:a}=n;return a(["Tidak ada notifikasi lagi"])},repeated_you:n=>{const{normalize:a}=n;return a(["mengulangi status Anda"])},read:n=>{const{normalize:a}=n;return a(["Dibaca!"])},notifications:n=>{const{normalize:a}=n;return a(["Notifikasi"])},follow_request:n=>{const{normalize:a}=n;return a(["ingin mengikuti Anda"])},followed_you:n=>{const{normalize:a}=n;return a(["mengikuti Anda"])},error:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Terjadi kesalahan ketika memuat notifikasi: ",e(r(0))])},migrated_to:n=>{const{normalize:a}=n;return a(["bermigrasi ke"])},load_older:n=>{const{normalize:a}=n;return a(["Muat notifikasi yang lebih lama"])},broken_favorite:n=>{const{normalize:a}=n;return a(["Status tak diketahui, mencarinya…"])}},who_to_follow:{more:n=>{const{normalize:a}=n;return a(["Lebih banyak"])}},tool_tip:{media_upload:n=>{const{normalize:a}=n;return a(["Unggah media"])},repeat:n=>{const{normalize:a}=n;return a(["Ulangi"])},reply:n=>{const{normalize:a}=n;return a(["Balas"])},favorite:n=>{const{normalize:a}=n;return a(["Favorit"])},add_reaction:n=>{const{normalize:a}=n;return a(["Tambahkan Reaksi"])},user_settings:n=>{const{normalize:a}=n;return a(["Pengaturan Pengguna"])}},upload:{error:{base:n=>{const{normalize:a}=n;return a(["Pengunggahan gagal."])},message:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Pengunggahan gagal: ",e(r(0))])},file_too_big:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Berkas terlalu besar [",e(r("filesize")),e(r("filesizeunit"))," / ",e(r("allowedsize")),e(r("allowedsizeunit")),"]"])},default:n=>{const{normalize:a}=n;return a(["Coba lagi nanti"])}},file_size_units:{B:n=>{const{normalize:a}=n;return a(["B"])},KiB:n=>{const{normalize:a}=n;return a(["KiB"])},MiB:n=>{const{normalize:a}=n;return a(["MiB"])},GiB:n=>{const{normalize:a}=n;return a(["GiB"])},TiB:n=>{const{normalize:a}=n;return a(["TiB"])}}},search:{people:n=>{const{normalize:a}=n;return a(["Orang"])},hashtags:n=>{const{normalize:a}=n;return a(["Tagar"])},person_talking:n=>{const{normalize:a,interpolate:e,named:r}=n;return a([e(r("count"))," orang berbicara"])},people_talking:n=>{const{normalize:a,interpolate:e,named:r}=n;return a([e(r("count"))," orang berbicara"])},no_results:n=>{const{normalize:a}=n;return a(["Tidak ada hasil"])}},password_reset:{forgot_password:n=>{const{normalize:a}=n;return a(["Lupa kata sandi?"])},placeholder:n=>{const{normalize:a}=n;return a(["Surel atau nama pengguna Anda"])},return_home:n=>{const{normalize:a}=n;return a(["Kembali ke halaman beranda"])},too_many_requests:n=>{const{normalize:a}=n;return a(["Anda telah mencapai batas percobaan, coba lagi nanti."])},instruction:n=>{const{normalize:a}=n;return a(["Masukkan surel atau nama pengguna Anda. Kami akan mengirimkan Anda tautan untuk mengatur ulang kata sandi."])},password_reset:n=>{const{normalize:a}=n;return a(["Pengatur-ulangan kata sandi"])},password_reset_disabled:n=>{const{normalize:a}=n;return a(["Pengatur-ulangan kata sandi dinonaktifkan. Hubungi administrator instansi Anda."])},password_reset_required:n=>{const{normalize:a}=n;return a(["Anda harus mengatur ulang kata sandi Anda untuk masuk."])},password_reset_required_but_mailer_is_disabled:n=>{const{normalize:a}=n;return a(["Anda harus mengatur ulang kata sandi, tetapi pengatur-ulangan kata sandi dinonaktifkan. Silakan hubungi administrator instansi Anda."])}},chats:{you:n=>{const{normalize:a}=n;return a(["Anda:"])},message_user:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Kirim Pesan ke ",e(r("nickname"))])},delete:n=>{const{normalize:a}=n;return a(["Hapus"])},chats:n=>{const{normalize:a}=n;return a(["Obrolan"])},new:n=>{const{normalize:a}=n;return a(["Obrolan Baru"])},empty_message_error:n=>{const{normalize:a}=n;return a(["Tidak dapat memposting pesan yang kosong"])},more:n=>{const{normalize:a}=n;return a(["Lebih banyak"])},delete_confirm:n=>{const{normalize:a}=n;return a(["Apakah Anda benar-benar ingin menghapus pesan ini?"])},error_loading_chat:n=>{const{normalize:a}=n;return a(["Sesuatu yang salah terjadi ketika memuat obrolan."])},error_sending_message:n=>{const{normalize:a}=n;return a(["Sesuatu yang salah terjadi ketika mengirim pesan."])},empty_chat_list_placeholder:n=>{const{normalize:a}=n;return a(["Anda belum memiliki obrolan. Buat sbeuah obrolan baru!"])}},file_type:{audio:n=>{const{normalize:a}=n;return a(["Audio"])},video:n=>{const{normalize:a}=n;return a(["Video"])},image:n=>{const{normalize:a}=n;return a(["Gambar"])},file:n=>{const{normalize:a}=n;return a(["Berkas"])}},registration:{bio_placeholder:n=>{const{normalize:a}=n;return a(["contoh.\nHai, aku Lain.\nAku seorang putri anime yang tinggal di pinggiran kota Jepang. Kamu mungkin mengenal aku dari Wired."])},validations:{password_confirmation_required:n=>{const{normalize:a}=n;return a(["tidak boleh kosong"])},password_required:n=>{const{normalize:a}=n;return a(["tidak boleh kosong"])},email_required:n=>{const{normalize:a}=n;return a(["tidak boleh kosong"])},fullname_required:n=>{const{normalize:a}=n;return a(["tidak boleh kosong"])},username_required:n=>{const{normalize:a}=n;return a(["tidak boleh kosong"])}},register:n=>{const{normalize:a}=n;return a(["Daftar"])},fullname_placeholder:n=>{const{normalize:a}=n;return a(["contoh. Lain Iwakura"])},username_placeholder:n=>{const{normalize:a}=n;return a(["contoh. lain"])},new_captcha:n=>{const{normalize:a}=n;return a(["Klik gambarnya untuk mendapatkan captcha baru"])},captcha:n=>{const{normalize:a}=n;return a(["CAPTCHA"])},token:n=>{const{normalize:a}=n;return a(["Token undangan"])},password_confirm:n=>{const{normalize:a}=n;return a(["Konfirmasi kata sandi"])},email:n=>{const{normalize:a}=n;return a(["Surel"])},bio:n=>{const{normalize:a}=n;return a(["Bio"])},reason_placeholder:n=>{const{normalize:a}=n;return a(["Instansi ini menerima pendaftaran secara manual.\nBeritahu administrasinya mengapa Anda ingin mendaftar."])},reason:n=>{const{normalize:a}=n;return a(["Alasan mendaftar"])},registration:n=>{const{normalize:a}=n;return a(["Pendaftaran"])}},post_status:{preview_empty:n=>{const{normalize:a}=n;return a(["Kosong"])},default:n=>{const{normalize:a}=n;return a(["Baru saja mendarat di L.A."])},content_warning:n=>{const{normalize:a}=n;return a(["Subyek (opsional)"])},content_type:{"text/bbcode":n=>{const{normalize:a}=n;return a(["BBCode"])},"text/markdown":n=>{const{normalize:a}=n;return a(["Markdown"])},"text/html":n=>{const{normalize:a}=n;return a(["HTML"])},"text/plain":n=>{const{normalize:a}=n;return a(["Teks biasa"])}},media_description:n=>{const{normalize:a}=n;return a(["Keterangan media"])},attachments_sensitive:n=>{const{normalize:a}=n;return a(["Tandai lampiran sebagai sensitif"])},scope:{public:n=>{const{normalize:a}=n;return a(["Publik - posting ke linimasa publik"])},private:n=>{const{normalize:a}=n;return a(["Hanya-pengikut - posting hanya kepada pengikut"])},direct:n=>{const{normalize:a}=n;return a(["Langsung - posting hanya kepada pengguna yang disebut"])}},preview:n=>{const{normalize:a}=n;return a(["Pratinjau"])},post:n=>{const{normalize:a}=n;return a(["Posting"])},posting:n=>{const{normalize:a}=n;return a(["Memposting"])},direct_warning_to_first_only:n=>{const{normalize:a}=n;return a(["Postingan ini akan terlihat oleh pengguna yang disebutkan di awal pesan."])},direct_warning_to_all:n=>{const{normalize:a}=n;return a(["Postingan ini akan terlihat oleh pengguna yang disebutkan."])},scope_notice:{private:n=>{const{normalize:a}=n;return a(["Postingan ini akan terlihat hanya oleh pengikut Anda"])},public:n=>{const{normalize:a}=n;return a(["Postingan ini akan terlihat oleh siapa saja"])}},media_description_error:n=>{const{normalize:a}=n;return a(["Gagal memperbarui media, coba lagi"])},empty_status_error:n=>{const{normalize:a}=n;return a(["Tidak dapat memposting status kosong tanpa berkas"])},account_not_locked_warning_link:n=>{const{normalize:a}=n;return a(["terkunci"])},account_not_locked_warning:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Akun Anda tidak ",e(r(0)),". Siapapun dapat mengikuti Anda untuk melihat postingan hanya-pengikut Anda."])},new_status:n=>{const{normalize:a}=n;return a(["Posting status baru"])}},general:{apply:n=>{const{normalize:a}=n;return a(["Terapkan"])},flash_fail:n=>{const{normalize:a}=n;return a(["Gagal memuat konten flash, lihat console untuk keterangan."])},flash_security:n=>{const{normalize:a}=n;return a(["Harap ingat ini dapat menjadi berbahaya karena konten Flash masih termasuk arbitrary code."])},flash_content:n=>{const{normalize:a}=n;return a(["Klik untuk menampilkan konten Flash menggunakan Ruffle (Eksperimental, mungkin tidak bekerja)."])},role:{moderator:n=>{const{normalize:a}=n;return a(["Moderator"])},admin:n=>{const{normalize:a}=n;return a(["Admin"])}},peek:n=>{const{normalize:a}=n;return a(["Intip"])},close:n=>{const{normalize:a}=n;return a(["Tutup"])},verify:n=>{const{normalize:a}=n;return a(["Verifikasi"])},confirm:n=>{const{normalize:a}=n;return a(["Konfirmasi"])},enable:n=>{const{normalize:a}=n;return a(["Aktifkan"])},disable:n=>{const{normalize:a}=n;return a(["Nonaktifkan"])},cancel:n=>{const{normalize:a}=n;return a(["Batal"])},show_less:n=>{const{normalize:a}=n;return a(["Tampilkan lebih sedikit"])},show_more:n=>{const{normalize:a}=n;return a(["Tampilkan lebih banyak"])},optional:n=>{const{normalize:a}=n;return a(["opsional"])},retry:n=>{const{normalize:a}=n;return a(["Coba lagi"])},error_retry:n=>{const{normalize:a}=n;return a(["Harap coba lagi"])},generic_error:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan"])},loading:n=>{const{normalize:a}=n;return a(["Memuat…"])},more:n=>{const{normalize:a}=n;return a(["Lebih banyak"])},submit:n=>{const{normalize:a}=n;return a(["Kirim"])}},remote_user_resolver:{error:n=>{const{normalize:a}=n;return a(["Tidak ditemukan."])}},emoji:{load_all:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Memuat semua ",e(r("emojiAmount"))," emoji"])},load_all_hint:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Memuat ",e(r("saneAmount"))," emoji pertama, memuat semua emoji dapat menyebabkan masalah performa."])},unicode:n=>{const{normalize:a}=n;return a(["Emoji unicode"])},add_emoji:n=>{const{normalize:a}=n;return a(["Sisipkan emoji"])},search_emoji:n=>{const{normalize:a}=n;return a(["Cari emoji"])},emoji:n=>{const{normalize:a}=n;return a(["Emoji"])},stickers:n=>{const{normalize:a}=n;return a(["Stiker"])},keep_open:n=>{const{normalize:a}=n;return a(["Tetap buka pemilih"])},custom:n=>{const{normalize:a}=n;return a(["Emoji kustom"])}},polls:{expired:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Japat berakhir ",e(r(0))," yang lalu"])},expires_in:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Japat berakhir dalam ",e(r(0))])},expiry:n=>{const{normalize:a}=n;return a(["Usia japat"])},type:n=>{const{normalize:a}=n;return a(["Jenis japat"])},vote:n=>{const{normalize:a}=n;return a(["Pilih"])},votes_count:n=>{const{normalize:a,interpolate:e,named:r,plural:t}=n;return t([a([e(r("count"))," suara"]),a([e(r("count"))," suara"])])},people_voted_count:n=>{const{normalize:a,interpolate:e,named:r,plural:t}=n;return t([a([e(r("count"))," orang memilih"]),a([e(r("count"))," orang memilih"])])},votes:n=>{const{normalize:a}=n;return a(["suara"])},option:n=>{const{normalize:a}=n;return a(["Opsi"])},add_option:n=>{const{normalize:a}=n;return a(["Tambahkan opsi"])},add_poll:n=>{const{normalize:a}=n;return a(["Tambahkan japat"])},not_enough_options:n=>{const{normalize:a}=n;return a(["Terlalu sedikit opsi yang unik pada japat"])}},nav:{preferences:n=>{const{normalize:a}=n;return a(["Preferensi"])},search:n=>{const{normalize:a}=n;return a(["Cari"])},user_search:n=>{const{normalize:a}=n;return a(["Pencarian Pengguna"])},home_timeline:n=>{const{normalize:a}=n;return a(["Linimasa beranda"])},timeline:n=>{const{normalize:a}=n;return a(["Linimasa"])},public_tl:n=>{const{normalize:a}=n;return a(["Linimasa publik"])},interactions:n=>{const{normalize:a}=n;return a(["Interaksi"])},mentions:n=>{const{normalize:a}=n;return a(["Sebutan"])},back:n=>{const{normalize:a}=n;return a(["Kembali"])},administration:n=>{const{normalize:a}=n;return a(["Administrasi"])},about:n=>{const{normalize:a}=n;return a(["Tentang"])},timelines:n=>{const{normalize:a}=n;return a(["Linimasa"])},chats:n=>{const{normalize:a}=n;return a(["Obrolan"])},dms:n=>{const{normalize:a}=n;return a(["Pesan langsung"])},friend_requests:n=>{const{normalize:a}=n;return a(["Ingin mengikuti"])}},media_modal:{next:n=>{const{normalize:a}=n;return a(["Selanjutnya"])},previous:n=>{const{normalize:a}=n;return a(["Sebelum"])}},login:{recovery_code:n=>{const{normalize:a}=n;return a(["Kode pemulihan"])},enter_recovery_code:n=>{const{normalize:a}=n;return a(["Masukkan kode pemulihan"])},authentication_code:n=>{const{normalize:a}=n;return a(["Kode otentikasi"])},hint:n=>{const{normalize:a}=n;return a(["Masuk untuk ikut berdiskusi"])},username:n=>{const{normalize:a}=n;return a(["Nama pengguna"])},register:n=>{const{normalize:a}=n;return a(["Daftar"])},placeholder:n=>{const{normalize:a}=n;return a(["contoh: lain"])},password:n=>{const{normalize:a}=n;return a(["Kata sandi"])},logout:n=>{const{normalize:a}=n;return a(["Keluar"])},description:n=>{const{normalize:a}=n;return a(["Masuk dengan OAuth"])},login:n=>{const{normalize:a}=n;return a(["Masuk"])},heading:{totp:n=>{const{normalize:a}=n;return a(["Otentikasi dua-faktor"])}},enter_two_factor_code:n=>{const{normalize:a}=n;return a(["Masukkan kode dua-faktor"])}},importer:{error:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan ketika mnengimpor berkas ini."])},success:n=>{const{normalize:a}=n;return a(["Berhasil mengimpor."])},submit:n=>{const{normalize:a}=n;return a(["Kirim"])}},image_cropper:{cancel:n=>{const{normalize:a}=n;return a(["Batal"])},save_without_cropping:n=>{const{normalize:a}=n;return a(["Simpan tanpa memotong"])},save:n=>{const{normalize:a}=n;return a(["Simpan"])},crop_picture:n=>{const{normalize:a}=n;return a(["Potong gambar"])}},finder:{find_user:n=>{const{normalize:a}=n;return a(["Cari pengguna"])},error_fetching_user:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan ketika memuat pengguna"])}},features_panel:{title:n=>{const{normalize:a}=n;return a(["Fitur-fitur"])},text_limit:n=>{const{normalize:a}=n;return a(["Batas teks"])},gopher:n=>{const{normalize:a}=n;return a(["Gopher"])},pleroma_chat_messages:n=>{const{normalize:a}=n;return a(["Pleroma Obrolan"])},chat:n=>{const{normalize:a}=n;return a(["Obrolan"])},upload_limit:n=>{const{normalize:a}=n;return a(["Batas unggahan"])}},exporter:{processing:n=>{const{normalize:a}=n;return a(["Memproses, Anda akan segera diminta untuk mengunduh berkas Anda"])},export:n=>{const{normalize:a}=n;return a(["Ekspor"])}},domain_mute_card:{unmute:n=>{const{normalize:a}=n;return a(["Berhenti membisukan"])},mute_progress:n=>{const{normalize:a}=n;return a(["Membisukan…"])},mute:n=>{const{normalize:a}=n;return a(["Bisukan"])},unmute_progress:n=>{const{normalize:a}=n;return a(["Memberhentikan pembisuan…"])}},display_date:{today:n=>{const{normalize:a}=n;return a(["Hari Ini"])}},selectable_list:{select_all:n=>{const{normalize:a}=n;return a(["Pilih semua"])}},interactions:{moves:n=>{const{normalize:a}=n;return a(["Pengguna yang bermigrasi"])},follows:n=>{const{normalize:a}=n;return a(["Pengikut baru"])},favs_repeats:n=>{const{normalize:a}=n;return a(["Ulangan dan favorit"])},load_older:n=>{const{normalize:a}=n;return a(["Muat interaksi yang lebih tua"])}},errors:{storage_unavailable:n=>{const{normalize:a}=n;return a(["Pleroma tidak dapat mengakses penyimpanan browser. Login Anda atau pengaturan lokal Anda tidak akan tersimpan dan masalah yang tidak terduga dapat terjadi. Coba mengaktifkan kuki."])}},shoutbox:{title:n=>{const{normalize:a}=n;return a(["Kotak Suara"])}}}}}]); -//# sourceMappingURL=id-json.3e42564ce7a3a847ecb0.js.map -\ No newline at end of file diff --git a/priv/static/static/js/i18n/id-json.3e42564ce7a3a847ecb0.js.map b/priv/static/static/js/i18n/id-json.3e42564ce7a3a847ecb0.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/i18n/id-json.3e42564ce7a3a847ecb0.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/id.json"],"sourcesContent":["export default {\n \"settings\": {\n \"style\": {\n \"preview\": {\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sebuah tautan yang kecil nan bagus\"])},\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pratinjau\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contoh kesalahan\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tombol\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Baru saja mendarat di L.A.\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"manual berguna\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Baca \", _interpolate(_list(0)), \" kami untuk belajar sesuatu yang tak ada gunanya!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ini baik-baik saja\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saya telah membaca sekilas syarat dan ketentuan\"])}\n },\n \"advanced_colors\": {\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neutral\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peringatan\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kesalahan\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lanjutan\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan/Bio pengguna\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltip, menu, popover\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifikasi\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bar atas\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tombol\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latar belakang\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Header panel\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ikon-ikon\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dinonaktifkan\"])}\n },\n \"common_colors\": {\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warna umum\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Umum\"])}\n },\n \"common\": {\n \"contrast\": {\n \"context\": {\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"untuk teks\"])},\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Untuk teks besar (18pt+)\"])}\n }\n },\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warna\"])}\n },\n \"switcher\": {\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE telah diperbarui, tema dapat terlihat sedikit berbeda dari apa yang Anda ingat.\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berkas yang Anda impor dibuat pada versi FE yang lebih baru.\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berkas yang Anda impor dibuat pada versi FE yang lebih lama.\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mesin tema PleromaFE diperbarui setelah pembaruan versi.\"])}\n },\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versi baru\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versi lama\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muat tema\"])}\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Font\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antarmuka\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teks postingan\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nama font\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ukuran (dalam px)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berat (ketebalan)\"])}\n },\n \"shadows\": {\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Header panel\"])}\n }\n }\n },\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privasi\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifikasi\"])},\n \"values\": {\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ya\"])},\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak\"])}\n },\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengaturan Pengguna\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unggah foto\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tema\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teks\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengaturan\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keamanan\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengaturan disimpan\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latar belakang profil\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token OAuth\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan lencana \\\"Moderator\\\" di profil saya\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan lencana \\\"Admin\\\" di profil saya\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kata sandi baru\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Surel baru\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nama & bio\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nama\"])},\n \"profile_fields\": {\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Isi\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metadata profil\"])}\n },\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak tersedia di browser Anda\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berkas yang dipilih bukan sebuah tema yang didukung Pleroma. Tidak ada perbuahan yang dibuat pada tema Anda.\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bahasa antarmuka\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antarmuka\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(bawaan)\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(bawaan: \", _interpolate(_named(\"value\")), \")\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Umum\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ada masalah ketika menghapus akun Anda. Jika ini terus terjadi harap hubungi adminstrator instansi Anda.\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus data Anda secara permanen dan menonaktifkan akun Anda.\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus akun\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Impor / ekspor data\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kata sandi saat ini\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmasi kata sandi baru\"])},\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versi\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versi backend\"])},\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versi frontend\"])}\n },\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keamanan\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kata sandi berhasil diubah!\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ada masalah ketika mengubah kata sandi Anda.\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ubah kata sandi\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Surel berhasil diubah!\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ada masalah ketika mengubah surel Anda.\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ubah surel\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Merah (Batal)\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Biru (Balas, ikuti)\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tombol\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ini adalah akun bot\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ekspor blokiran\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latar belakang\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lampiran\"])},\n \"mfa\": {\n \"scan\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pindai\"])}\n },\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmasi & aktifkan OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Siapkan OTP\"])},\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tulis kode-kode nya atau simpan mereka di tempat yang aman - jika tidak Anda tidak akan melihat mereka lagi. Jika Anda tidak dapat mengakses aplikasi 2FA Anda dan kode pemulihan Anda hilang Anda tidak akan bisa mengakses akun Anda.\"])},\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metode otentikasi\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kode pemulihan.\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ketika Anda menghasilkan kode pemulihan baru, kode lama Anda berhenti bekerja.\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hasilkan kode pemulihan baru\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Otentikasi Dua-faktor\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Menerima kode cadangan…\"])},\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Untuk mengaktifkan otentikasi dua-faktor, masukkan kode dari aplikasi dua-faktor Anda:\"])}\n }\n },\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nama aplikasi\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Simpan perubahan\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valid hingga\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan ketika mengimpor pengikut\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan reaksi emoji pada linimasa\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pesan obrolan\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jingga (Favorit)\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar (notifikasi)\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan kotak suara instansi\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jangan tampilkan jumlah pengikut\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jangan tampilkan jumlah mengikuti\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jangan tampilkan siapa yang mengikuti saya\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jangan tampilkan siapa yang saya ikuti\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reaksi\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Diikuti\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengguna Bermigrasi\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulangan\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sebutan\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorit\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jenis notifikasi yang perlu ditampilkan\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tautan\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan statistik pengguna (contoh. jumlah pengikut)\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan statistik postingan (contoh. jumlah favorit)\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buka lampiran NSFW hanya dengan satu klik\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan latar belakang instansi\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokiran diimpor! Pemrosesannya mungkin memakan sedikit waktu.\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan ketika mengimpor blokiran\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Impor blokiran\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ekspor blokiran Anda menjadi berkas csv\"])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokiran\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ketik kata sandi Anda pada input di bawah untuk mengkonfirmasi penghapusan akun.\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bisuan dan Blokiran\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masukkan kata sandi Anda saat ini untuk mengkonfirmasi identitas Anda\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Penyaringan\"])},\n \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Penyaring kata\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ukuran minimum gambar avatar yang disarankan adalah 150x150 piksel.\"])},\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lampiran\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hijau (Retweet)\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jumlah thumbnail maksimum per postingan\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulang-ulang video\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulang-ulang video tanpa suara (seperti \\\"gif\\\" Mastodon)\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeda aliran ketika tab di dalam fokus\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hanya tampilkan balasan yang ditujukan kepada saya atau orang yang saya ikuti\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan balasan ke orang yang saya ikuti\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan ketika menyimpan pengaturan\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cari siapa yang Anda ingin blokir\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cari siapa yang ingin Anda bisukan\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tetapkan avatar baru\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tetapkan latar belakang profil baru\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Salin subyek ketika membalas\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seperti surel: \\\"re: subyek\\\"\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seperti mastodon: salin saja\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jangan salin\"])},\n \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Tidak disarankan, eksperimental, diketahui dapat melewati postingan-postingan)\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seru\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktifkan notifikasi push web\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lebih banyak pengaturan\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan semua balasan\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hanya tampilkan balasan yang ditujukan kepada saya\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan postingan-postingan dari pengguna yang dibisukan\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Impor blokiran dari berkas csv\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domain\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Menulis\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada yang diblokir\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada yang dibisukan\"])}\n },\n \"about\": {\n \"mrf\": {\n \"keyword\": {\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tolak\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])}\n },\n \"simple\": {\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instansi ini hanya akan mengirim postingan publik ke instansi-instansi berikut:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Karantina\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instansi ini tidak akan menerima pesan dari instansi-instansi berikut:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tolak\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instansi ini hanya menerima pesan dari instansi-instansi berikut:\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terima\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Penghapusan Media\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instansi ini menghapus media dari postingan yang berasal dari instansi-instansi berikut:\"])}\n },\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federasi\"])},\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kebijakan MRF yang diaktifkan\"])}\n },\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Staf\"])}\n },\n \"time\": {\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hari\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hari\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" jam\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" jam\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"j\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"j\"])},\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"dalam \", _interpolate(_list(0))])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" yang lalu\"])},\n \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" menit\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" menit\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"m\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"m\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" bulan\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" bulan\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"b\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"b\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"baru saja\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sekarang\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" detik\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" detik\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" pekan\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" pekan\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"p\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"p\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" tahun\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" tahun\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"t\"])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"t\"])}\n },\n \"timeline\": {\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Percakapan\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Terjadi kesalahan memuat linimasa: \", _interpolate(_list(0))])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ditandai sebagai hanya-pengikut atau langsung dan tidak dapat diulang\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"diulangi\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muat ulang\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada status lagi\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada status\"])}\n },\n \"status\": {\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorit\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulangan\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus status\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sematkan di profil\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti menyematkan dari profil\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disematkan\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apakah Anda benar-benar ingin menghapus status ini?\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Balas ke\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Balasan:\"])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bisukan percakapan\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti membisikan percakapan\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status tidak tersedia\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", memiliki kata:\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ini telah dihapus\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])}\n },\n \"user_card\": {\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokir\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Diblokir!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tolak\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunting profil\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorit\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ikuti\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permintaan dikirim!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meminta…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bisukan\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dibisukan\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per hari\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laporkan\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti memblokir\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memblokir…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti membisukan\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Membisukan…\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan ulangan\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan ulangan\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bot\"])},\n \"admin_menu\": {\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderasi\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktifkan akun\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nonaktifkan akun\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus akun\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tandai semua postingan sebagai NSFW\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus media dari postingan-postingan\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus pengguna\"])}\n },\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti mengikuti\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mengikuti\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengikut\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Diikuti!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mengikuti Anda!\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disembunyikan\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ini Anda!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sebut\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kirimkan pesan\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linimasa pengguna\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maaf, profil ini tidak ada.\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maaf, terjadi kesalahan ketika memuat profil ini.\"])}\n },\n \"user_reporting\": {\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Melaporkan \", _interpolate(_list(0))])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laporan ini akan dikirim ke moderator instansi Anda. Anda dapat menyediakan penjelasan mengapa Anda melaporkan akun ini di bawah:\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Komentar tambahan\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Akun ini berada di server lain. Kirim salinan dari laporannya juga?\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kirim\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sebuah kesalahan terjadi ketika memproses permintaan Anda.\"])}\n },\n \"notifications\": {\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"memfavoritkan status Anda\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"bereaksi dengan \", _interpolate(_list(0))])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada notifikasi lagi\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mengulangi status Anda\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dibaca!\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifikasi\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ingin mengikuti Anda\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mengikuti Anda\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Terjadi kesalahan ketika memuat notifikasi: \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bermigrasi ke\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muat notifikasi yang lebih lama\"])},\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status tak diketahui, mencarinya…\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lebih banyak\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unggah media\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulangi\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Balas\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorit\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tambahkan Reaksi\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengaturan Pengguna\"])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengunggahan gagal.\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Pengunggahan gagal: \", _interpolate(_list(0))])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Berkas terlalu besar [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Coba lagi nanti\"])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Orang\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tagar\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" orang berbicara\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" orang berbicara\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada hasil\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lupa kata sandi?\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Surel atau nama pengguna Anda\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kembali ke halaman beranda\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anda telah mencapai batas percobaan, coba lagi nanti.\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masukkan surel atau nama pengguna Anda. Kami akan mengirimkan Anda tautan untuk mengatur ulang kata sandi.\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengatur-ulangan kata sandi\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengatur-ulangan kata sandi dinonaktifkan. Hubungi administrator instansi Anda.\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anda harus mengatur ulang kata sandi Anda untuk masuk.\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anda harus mengatur ulang kata sandi, tetapi pengatur-ulangan kata sandi dinonaktifkan. Silakan hubungi administrator instansi Anda.\"])}\n },\n \"chats\": {\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anda:\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Kirim Pesan ke \", _interpolate(_named(\"nickname\"))])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Obrolan\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Obrolan Baru\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak dapat memposting pesan yang kosong\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lebih banyak\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apakah Anda benar-benar ingin menghapus pesan ini?\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sesuatu yang salah terjadi ketika memuat obrolan.\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sesuatu yang salah terjadi ketika mengirim pesan.\"])},\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anda belum memiliki obrolan. Buat sbeuah obrolan baru!\"])}\n },\n \"file_type\": {\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Audio\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Video\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gambar\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berkas\"])}\n },\n \"registration\": {\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contoh.\\nHai, aku Lain.\\nAku seorang putri anime yang tinggal di pinggiran kota Jepang. Kamu mungkin mengenal aku dari Wired.\"])},\n \"validations\": {\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak boleh kosong\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak boleh kosong\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak boleh kosong\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak boleh kosong\"])},\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak boleh kosong\"])}\n },\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daftar\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contoh. Lain Iwakura\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contoh. lain\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Klik gambarnya untuk mendapatkan captcha baru\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token undangan\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmasi kata sandi\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Surel\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instansi ini menerima pendaftaran secara manual.\\nBeritahu administrasinya mengapa Anda ingin mendaftar.\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alasan mendaftar\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pendaftaran\"])}\n },\n \"post_status\": {\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kosong\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Baru saja mendarat di L.A.\"])},\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subyek (opsional)\"])},\n \"content_type\": {\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teks biasa\"])}\n },\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keterangan media\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tandai lampiran sebagai sensitif\"])},\n \"scope\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publik - posting ke linimasa publik\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hanya-pengikut - posting hanya kepada pengikut\"])},\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langsung - posting hanya kepada pengguna yang disebut\"])}\n },\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pratinjau\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posting\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memposting\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ini akan terlihat oleh pengguna yang disebutkan di awal pesan.\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ini akan terlihat oleh pengguna yang disebutkan.\"])},\n \"scope_notice\": {\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ini akan terlihat hanya oleh pengikut Anda\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ini akan terlihat oleh siapa saja\"])}\n },\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gagal memperbarui media, coba lagi\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak dapat memposting status kosong tanpa berkas\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"terkunci\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Akun Anda tidak \", _interpolate(_list(0)), \". Siapapun dapat mengikuti Anda untuk melihat postingan hanya-pengikut Anda.\"])},\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posting status baru\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terapkan\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gagal memuat konten flash, lihat console untuk keterangan.\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Harap ingat ini dapat menjadi berbahaya karena konten Flash masih termasuk arbitrary code.\"])},\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Klik untuk menampilkan konten Flash menggunakan Ruffle (Eksperimental, mungkin tidak bekerja).\"])},\n \"role\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderator\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])}\n },\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Intip\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tutup\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verifikasi\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmasi\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktifkan\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nonaktifkan\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Batal\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan lebih sedikit\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan lebih banyak\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"opsional\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Coba lagi\"])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Harap coba lagi\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memuat…\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lebih banyak\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kirim\"])}\n },\n \"remote_user_resolver\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ditemukan.\"])}\n },\n \"emoji\": {\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Memuat semua \", _interpolate(_named(\"emojiAmount\")), \" emoji\"])},\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Memuat \", _interpolate(_named(\"saneAmount\")), \" emoji pertama, memuat semua emoji dapat menyebabkan masalah performa.\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji unicode\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sisipkan emoji\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cari emoji\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji\"])},\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stiker\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tetap buka pemilih\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji kustom\"])}\n },\n \"polls\": {\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Japat berakhir \", _interpolate(_list(0)), \" yang lalu\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Japat berakhir dalam \", _interpolate(_list(0))])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Usia japat\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jenis japat\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pilih\"])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" suara\"]), _normalize([_interpolate(_named(\"count\")), \" suara\"])])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" orang memilih\"]), _normalize([_interpolate(_named(\"count\")), \" orang memilih\"])])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suara\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opsi\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tambahkan opsi\"])},\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tambahkan japat\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terlalu sedikit opsi yang unik pada japat\"])}\n },\n \"nav\": {\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferensi\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cari\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pencarian Pengguna\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linimasa beranda\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linimasa\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linimasa publik\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interaksi\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sebutan\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kembali\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrasi\"])},\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tentang\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linimasa\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Obrolan\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pesan langsung\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingin mengikuti\"])}\n },\n \"media_modal\": {\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selanjutnya\"])},\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sebelum\"])}\n },\n \"login\": {\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kode pemulihan\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masukkan kode pemulihan\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kode otentikasi\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masuk untuk ikut berdiskusi\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nama pengguna\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daftar\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contoh: lain\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kata sandi\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keluar\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masuk dengan OAuth\"])},\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masuk\"])},\n \"heading\": {\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Otentikasi dua-faktor\"])}\n },\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masukkan kode dua-faktor\"])}\n },\n \"importer\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan ketika mnengimpor berkas ini.\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhasil mengimpor.\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kirim\"])}\n },\n \"image_cropper\": {\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Batal\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Simpan tanpa memotong\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Simpan\"])},\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Potong gambar\"])}\n },\n \"finder\": {\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cari pengguna\"])},\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan ketika memuat pengguna\"])}\n },\n \"features_panel\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fitur-fitur\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Batas teks\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma Obrolan\"])},\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Obrolan\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Batas unggahan\"])}\n },\n \"exporter\": {\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memproses, Anda akan segera diminta untuk mengunduh berkas Anda\"])},\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ekspor\"])}\n },\n \"domain_mute_card\": {\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti membisukan\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Membisukan…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bisukan\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memberhentikan pembisuan…\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hari Ini\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pilih semua\"])}\n },\n \"interactions\": {\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengguna yang bermigrasi\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengikut baru\"])},\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulangan dan favorit\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muat interaksi yang lebih tua\"])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma tidak dapat mengakses penyimpanan browser. Login Anda atau pengaturan lokal Anda tidak akan tersimpan dan masalah yang tidak terduga dapat terjadi. Coba mengaktifkan kuki.\"])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kotak Suara\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","list","_list","named","_named","plural","_plural"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/i18n/id-json.e5c9ee768155f88128b9.js b/priv/static/static/js/i18n/id-json.e5c9ee768155f88128b9.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[2513],{62263:(n,a,e)=>{e.r(a),e.d(a,{default:()=>r});const r={settings:{style:{preview:{link:n=>{const{normalize:a}=n;return a(["sebuah tautan yang kecil nan bagus"])},header:n=>{const{normalize:a}=n;return a(["Pratinjau"])},error:n=>{const{normalize:a}=n;return a(["Contoh kesalahan"])},button:n=>{const{normalize:a}=n;return a(["Tombol"])},input:n=>{const{normalize:a}=n;return a(["Baru saja mendarat di L.A."])},faint_link:n=>{const{normalize:a}=n;return a(["manual berguna"])},fine_print:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Baca ",e(r(0))," kami untuk belajar sesuatu yang tak ada gunanya!"])},header_faint:n=>{const{normalize:a}=n;return a(["Ini baik-baik saja"])},checkbox:n=>{const{normalize:a}=n;return a(["Saya telah membaca sekilas syarat dan ketentuan"])}},advanced_colors:{alert_neutral:n=>{const{normalize:a}=n;return a(["Neutral"])},alert_warning:n=>{const{normalize:a}=n;return a(["Peringatan"])},alert_error:n=>{const{normalize:a}=n;return a(["Kesalahan"])},_tab_label:n=>{const{normalize:a}=n;return a(["Lanjutan"])},post:n=>{const{normalize:a}=n;return a(["Postingan/Bio pengguna"])},popover:n=>{const{normalize:a}=n;return a(["Tooltip, menu, popover"])},badge_notification:n=>{const{normalize:a}=n;return a(["Notifikasi"])},top_bar:n=>{const{normalize:a}=n;return a(["Bar atas"])},borders:n=>{const{normalize:a}=n;return a([])},buttons:n=>{const{normalize:a}=n;return a(["Tombol"])},wallpaper:n=>{const{normalize:a}=n;return a(["Latar belakang"])},panel_header:n=>{const{normalize:a}=n;return a(["Header panel"])},icons:n=>{const{normalize:a}=n;return a(["Ikon-ikon"])},disabled:n=>{const{normalize:a}=n;return a(["Dinonaktifkan"])}},common_colors:{main:n=>{const{normalize:a}=n;return a(["Warna umum"])},_tab_label:n=>{const{normalize:a}=n;return a(["Umum"])}},common:{contrast:{context:{text:n=>{const{normalize:a}=n;return a(["untuk teks"])},"18pt":n=>{const{normalize:a}=n;return a(["Untuk teks besar (18pt+)"])}}},color:n=>{const{normalize:a}=n;return a(["Warna"])}},switcher:{help:{upgraded_from_v2:n=>{const{normalize:a}=n;return a(["PleromaFE telah diperbarui, tema dapat terlihat sedikit berbeda dari apa yang Anda ingat."])},future_version_imported:n=>{const{normalize:a}=n;return a(["Berkas yang Anda impor dibuat pada versi FE yang lebih baru."])},older_version_imported:n=>{const{normalize:a}=n;return a(["Berkas yang Anda impor dibuat pada versi FE yang lebih lama."])},fe_upgraded:n=>{const{normalize:a}=n;return a(["Mesin tema PleromaFE diperbarui setelah pembaruan versi."])}},use_source:n=>{const{normalize:a}=n;return a(["Versi baru"])},use_snapshot:n=>{const{normalize:a}=n;return a(["Versi lama"])},load_theme:n=>{const{normalize:a}=n;return a(["Muat tema"])}},fonts:{_tab_label:n=>{const{normalize:a}=n;return a(["Font"])},components:{interface:n=>{const{normalize:a}=n;return a(["Antarmuka"])},post:n=>{const{normalize:a}=n;return a(["Teks postingan"])}},family:n=>{const{normalize:a}=n;return a(["Nama font"])},size:n=>{const{normalize:a}=n;return a(["Ukuran (dalam px)"])},weight:n=>{const{normalize:a}=n;return a(["Berat (ketebalan)"])}},shadows:{components:{panel:n=>{const{normalize:a}=n;return a(["Panel"])},panelHeader:n=>{const{normalize:a}=n;return a(["Header panel"])}}}},notification_setting_privacy:n=>{const{normalize:a}=n;return a(["Privasi"])},notifications:n=>{const{normalize:a}=n;return a(["Notifikasi"])},values:{true:n=>{const{normalize:a}=n;return a(["ya"])},false:n=>{const{normalize:a}=n;return a(["tidak"])}},user_settings:n=>{const{normalize:a}=n;return a(["Pengaturan Pengguna"])},upload_a_photo:n=>{const{normalize:a}=n;return a(["Unggah foto"])},theme:n=>{const{normalize:a}=n;return a(["Tema"])},text:n=>{const{normalize:a}=n;return a(["Teks"])},settings:n=>{const{normalize:a}=n;return a(["Pengaturan"])},security_tab:n=>{const{normalize:a}=n;return a(["Keamanan"])},saving_ok:n=>{const{normalize:a}=n;return a(["Pengaturan disimpan"])},profile_tab:n=>{const{normalize:a}=n;return a(["Profil"])},profile_background:n=>{const{normalize:a}=n;return a(["Latar belakang profil"])},token:n=>{const{normalize:a}=n;return a(["Token"])},oauth_tokens:n=>{const{normalize:a}=n;return a(["Token OAuth"])},show_moderator_badge:n=>{const{normalize:a}=n;return a(['Tampilkan lencana "Moderator" di profil saya'])},show_admin_badge:n=>{const{normalize:a}=n;return a(['Tampilkan lencana "Admin" di profil saya'])},new_password:n=>{const{normalize:a}=n;return a(["Kata sandi baru"])},new_email:n=>{const{normalize:a}=n;return a(["Surel baru"])},name_bio:n=>{const{normalize:a}=n;return a(["Nama & bio"])},name:n=>{const{normalize:a}=n;return a(["Nama"])},profile_fields:{value:n=>{const{normalize:a}=n;return a(["Isi"])},name:n=>{const{normalize:a}=n;return a(["Label"])},label:n=>{const{normalize:a}=n;return a(["Metadata profil"])}},limited_availability:n=>{const{normalize:a}=n;return a(["Tidak tersedia di browser Anda"])},invalid_theme_imported:n=>{const{normalize:a}=n;return a(["Berkas yang dipilih bukan sebuah tema yang didukung Pleroma. Tidak ada perbuahan yang dibuat pada tema Anda."])},interfaceLanguage:n=>{const{normalize:a}=n;return a(["Bahasa antarmuka"])},interface:n=>{const{normalize:a}=n;return a(["Antarmuka"])},instance_default_simple:n=>{const{normalize:a}=n;return a(["(bawaan)"])},instance_default:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["(bawaan: ",e(r("value")),")"])},general:n=>{const{normalize:a}=n;return a(["Umum"])},delete_account_error:n=>{const{normalize:a}=n;return a(["Ada masalah ketika menghapus akun Anda. Jika ini terus terjadi harap hubungi adminstrator instansi Anda."])},delete_account_description:n=>{const{normalize:a}=n;return a(["Hapus data Anda secara permanen dan menonaktifkan akun Anda."])},delete_account:n=>{const{normalize:a}=n;return a(["Hapus akun"])},data_import_export_tab:n=>{const{normalize:a}=n;return a(["Impor / ekspor data"])},current_password:n=>{const{normalize:a}=n;return a(["Kata sandi saat ini"])},confirm_new_password:n=>{const{normalize:a}=n;return a(["Konfirmasi kata sandi baru"])},version:{title:n=>{const{normalize:a}=n;return a(["Versi"])},backend_version:n=>{const{normalize:a}=n;return a(["Versi backend"])},frontend_version:n=>{const{normalize:a}=n;return a(["Versi frontend"])}},security:n=>{const{normalize:a}=n;return a(["Keamanan"])},changed_password:n=>{const{normalize:a}=n;return a(["Kata sandi berhasil diubah!"])},change_password_error:n=>{const{normalize:a}=n;return a(["Ada masalah ketika mengubah kata sandi Anda."])},change_password:n=>{const{normalize:a}=n;return a(["Ubah kata sandi"])},changed_email:n=>{const{normalize:a}=n;return a(["Surel berhasil diubah!"])},change_email_error:n=>{const{normalize:a}=n;return a(["Ada masalah ketika mengubah surel Anda."])},change_email:n=>{const{normalize:a}=n;return a(["Ubah surel"])},cRed:n=>{const{normalize:a}=n;return a(["Merah (Batal)"])},cBlue:n=>{const{normalize:a}=n;return a(["Biru (Balas, ikuti)"])},btnRadius:n=>{const{normalize:a}=n;return a(["Tombol"])},bot:n=>{const{normalize:a}=n;return a(["Ini adalah akun bot"])},block_export:n=>{const{normalize:a}=n;return a(["Ekspor blokiran"])},bio:n=>{const{normalize:a}=n;return a(["Bio"])},background:n=>{const{normalize:a}=n;return a(["Latar belakang"])},avatarRadius:n=>{const{normalize:a}=n;return a(["Avatar"])},avatar:n=>{const{normalize:a}=n;return a(["Avatar"])},attachments:n=>{const{normalize:a}=n;return a(["Lampiran"])},mfa:{scan:{title:n=>{const{normalize:a}=n;return a(["Pindai"])}},confirm_and_enable:n=>{const{normalize:a}=n;return a(["Konfirmasi & aktifkan OTP"])},setup_otp:n=>{const{normalize:a}=n;return a(["Siapkan OTP"])},otp:n=>{const{normalize:a}=n;return a(["OTP"])},recovery_codes_warning:n=>{const{normalize:a}=n;return a(["Tulis kode-kode nya atau simpan mereka di tempat yang aman - jika tidak Anda tidak akan melihat mereka lagi. Jika Anda tidak dapat mengakses aplikasi 2FA Anda dan kode pemulihan Anda hilang Anda tidak akan bisa mengakses akun Anda."])},authentication_methods:n=>{const{normalize:a}=n;return a(["Metode otentikasi"])},recovery_codes:n=>{const{normalize:a}=n;return a(["Kode pemulihan."])},warning_of_generate_new_codes:n=>{const{normalize:a}=n;return a(["Ketika Anda menghasilkan kode pemulihan baru, kode lama Anda berhenti bekerja."])},generate_new_recovery_codes:n=>{const{normalize:a}=n;return a(["Hasilkan kode pemulihan baru"])},title:n=>{const{normalize:a}=n;return a(["Otentikasi Dua-faktor"])},waiting_a_recovery_codes:n=>{const{normalize:a}=n;return a(["Menerima kode cadangan…"])},verify:{desc:n=>{const{normalize:a}=n;return a(["Untuk mengaktifkan otentikasi dua-faktor, masukkan kode dari aplikasi dua-faktor Anda:"])}}},app_name:n=>{const{normalize:a}=n;return a(["Nama aplikasi"])},save:n=>{const{normalize:a}=n;return a(["Simpan perubahan"])},valid_until:n=>{const{normalize:a}=n;return a(["Valid hingga"])},follow_import_error:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan ketika mengimpor pengikut"])},emoji_reactions_on_timeline:n=>{const{normalize:a}=n;return a(["Tampilkan reaksi emoji pada linimasa"])},chatMessageRadius:n=>{const{normalize:a}=n;return a(["Pesan obrolan"])},cOrange:n=>{const{normalize:a}=n;return a(["Jingga (Favorit)"])},avatarAltRadius:n=>{const{normalize:a}=n;return a(["Avatar (notifikasi)"])},hide_shoutbox:n=>{const{normalize:a}=n;return a(["Sembunyikan kotak suara instansi"])},hide_followers_count_description:n=>{const{normalize:a}=n;return a(["Jangan tampilkan jumlah pengikut"])},hide_follows_count_description:n=>{const{normalize:a}=n;return a(["Jangan tampilkan jumlah mengikuti"])},hide_followers_description:n=>{const{normalize:a}=n;return a(["Jangan tampilkan siapa yang mengikuti saya"])},hide_follows_description:n=>{const{normalize:a}=n;return a(["Jangan tampilkan siapa yang saya ikuti"])},notification_visibility_emoji_reactions:n=>{const{normalize:a}=n;return a(["Reaksi"])},notification_visibility_follows:n=>{const{normalize:a}=n;return a(["Diikuti"])},notification_visibility_moves:n=>{const{normalize:a}=n;return a(["Pengguna Bermigrasi"])},notification_visibility_repeats:n=>{const{normalize:a}=n;return a(["Ulangan"])},notification_visibility_mentions:n=>{const{normalize:a}=n;return a(["Sebutan"])},notification_visibility_likes:n=>{const{normalize:a}=n;return a(["Favorit"])},notification_visibility:n=>{const{normalize:a}=n;return a(["Jenis notifikasi yang perlu ditampilkan"])},links:n=>{const{normalize:a}=n;return a(["Tautan"])},hide_user_stats:n=>{const{normalize:a}=n;return a(["Sembunyikan statistik pengguna (contoh. jumlah pengikut)"])},hide_post_stats:n=>{const{normalize:a}=n;return a(["Sembunyikan statistik postingan (contoh. jumlah favorit)"])},use_one_click_nsfw:n=>{const{normalize:a}=n;return a(["Buka lampiran NSFW hanya dengan satu klik"])},hide_wallpaper:n=>{const{normalize:a}=n;return a(["Sembunyikan latar belakang instansi"])},blocks_imported:n=>{const{normalize:a}=n;return a(["Blokiran diimpor! Pemrosesannya mungkin memakan sedikit waktu."])},block_import_error:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan ketika mengimpor blokiran"])},block_import:n=>{const{normalize:a}=n;return a(["Impor blokiran"])},block_export_button:n=>{const{normalize:a}=n;return a(["Ekspor blokiran Anda menjadi berkas csv"])},blocks_tab:n=>{const{normalize:a}=n;return a(["Blokiran"])},delete_account_instructions:n=>{const{normalize:a}=n;return a(["Ketik kata sandi Anda pada input di bawah untuk mengkonfirmasi penghapusan akun."])},mutes_and_blocks:n=>{const{normalize:a}=n;return a(["Bisuan dan Blokiran"])},enter_current_password_to_confirm:n=>{const{normalize:a}=n;return a(["Masukkan kata sandi Anda saat ini untuk mengkonfirmasi identitas Anda"])},filtering:n=>{const{normalize:a}=n;return a(["Penyaringan"])},word_filter:n=>{const{normalize:a}=n;return a(["Penyaring kata"])},avatar_size_instruction:n=>{const{normalize:a}=n;return a(["Ukuran minimum gambar avatar yang disarankan adalah 150x150 piksel."])},attachmentRadius:n=>{const{normalize:a}=n;return a(["Lampiran"])},cGreen:n=>{const{normalize:a}=n;return a(["Hijau (Retweet)"])},max_thumbnails:n=>{const{normalize:a}=n;return a(["Jumlah thumbnail maksimum per postingan"])},loop_video:n=>{const{normalize:a}=n;return a(["Ulang-ulang video"])},loop_video_silent_only:n=>{const{normalize:a}=n;return a(['Ulang-ulang video tanpa suara (seperti "gif" Mastodon)'])},pause_on_unfocused:n=>{const{normalize:a}=n;return a(["Jeda aliran ketika tab di dalam fokus"])},reply_visibility_following:n=>{const{normalize:a}=n;return a(["Hanya tampilkan balasan yang ditujukan kepada saya atau orang yang saya ikuti"])},reply_visibility_following_short:n=>{const{normalize:a}=n;return a(["Tampilkan balasan ke orang yang saya ikuti"])},saving_err:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan ketika menyimpan pengaturan"])},search_user_to_block:n=>{const{normalize:a}=n;return a(["Cari siapa yang Anda ingin blokir"])},search_user_to_mute:n=>{const{normalize:a}=n;return a(["Cari siapa yang ingin Anda bisukan"])},set_new_avatar:n=>{const{normalize:a}=n;return a(["Tetapkan avatar baru"])},set_new_profile_background:n=>{const{normalize:a}=n;return a(["Tetapkan latar belakang profil baru"])},subject_line_behavior:n=>{const{normalize:a}=n;return a(["Salin subyek ketika membalas"])},subject_line_email:n=>{const{normalize:a}=n;return a(['Seperti surel: "re: subyek"'])},subject_line_mastodon:n=>{const{normalize:a}=n;return a(["Seperti mastodon: salin saja"])},subject_line_noop:n=>{const{normalize:a}=n;return a(["Jangan salin"])},useStreamingApiWarning:n=>{const{normalize:a}=n;return a(["(Tidak disarankan, eksperimental, diketahui dapat melewati postingan-postingan)"])},fun:n=>{const{normalize:a}=n;return a(["Seru"])},enable_web_push_notifications:n=>{const{normalize:a}=n;return a(["Aktifkan notifikasi push web"])},more_settings:n=>{const{normalize:a}=n;return a(["Lebih banyak pengaturan"])},reply_visibility_all:n=>{const{normalize:a}=n;return a(["Tampilkan semua balasan"])},reply_visibility_self:n=>{const{normalize:a}=n;return a(["Hanya tampilkan balasan yang ditujukan kepada saya"])},hide_muted_posts:n=>{const{normalize:a}=n;return a(["Sembunyikan postingan-postingan dari pengguna yang dibisukan"])},import_blocks_from_a_csv_file:n=>{const{normalize:a}=n;return a(["Impor blokiran dari berkas csv"])},domain_mutes:n=>{const{normalize:a}=n;return a(["Domain"])},composing:n=>{const{normalize:a}=n;return a(["Menulis"])},no_blocks:n=>{const{normalize:a}=n;return a(["Tidak ada yang diblokir"])},no_mutes:n=>{const{normalize:a}=n;return a(["Tidak ada yang dibisukan"])},remove_language:n=>{const{normalize:a}=n;return a(["Hapus"])}},about:{mrf:{keyword:{reject:n=>{const{normalize:a}=n;return a(["Tolak"])},is_replaced_by:n=>{const{normalize:a}=n;return a(["→"])}},simple:{quarantine_desc:n=>{const{normalize:a}=n;return a(["Instansi ini hanya akan mengirim postingan publik ke instansi-instansi berikut:"])},quarantine:n=>{const{normalize:a}=n;return a(["Karantina"])},reject_desc:n=>{const{normalize:a}=n;return a(["Instansi ini tidak akan menerima pesan dari instansi-instansi berikut:"])},reject:n=>{const{normalize:a}=n;return a(["Tolak"])},accept_desc:n=>{const{normalize:a}=n;return a(["Instansi ini hanya menerima pesan dari instansi-instansi berikut:"])},accept:n=>{const{normalize:a}=n;return a(["Terima"])},media_removal:n=>{const{normalize:a}=n;return a(["Penghapusan Media"])},media_removal_desc:n=>{const{normalize:a}=n;return a(["Instansi ini menghapus media dari postingan yang berasal dari instansi-instansi berikut:"])},instance:n=>{const{normalize:a}=n;return a(["Instance"])},reason:n=>{const{normalize:a}=n;return a(["Alasan"])}},federation:n=>{const{normalize:a}=n;return a(["Federasi"])},mrf_policies:n=>{const{normalize:a}=n;return a(["Kebijakan MRF yang diaktifkan"])}},staff:n=>{const{normalize:a}=n;return a(["Staf"])}},time:{day:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," hari"])},days:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," hari"])},day_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"h"])},days_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"h"])},hour:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," jam"])},hours:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," jam"])},hour_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"j"])},hours_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"j"])},in_future:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["dalam ",e(r(0))])},in_past:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," yang lalu"])},minute:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," menit"])},minutes:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," menit"])},minute_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"m"])},minutes_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"m"])},month:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," bulan"])},months:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," bulan"])},month_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"b"])},months_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"b"])},now:n=>{const{normalize:a}=n;return a(["baru saja"])},now_short:n=>{const{normalize:a}=n;return a(["sekarang"])},second:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," detik"])},seconds:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," detik"])},second_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"d"])},seconds_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"d"])},week:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," pekan"])},weeks:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," pekan"])},week_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"p"])},weeks_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"p"])},year:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," tahun"])},years:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0))," tahun"])},year_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"t"])},years_short:n=>{const{normalize:a,interpolate:e,list:r}=n;return a([e(r(0)),"t"])}},timeline:{conversation:n=>{const{normalize:a}=n;return a(["Percakapan"])},error:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Terjadi kesalahan memuat linimasa: ",e(r(0))])},no_retweet_hint:n=>{const{normalize:a}=n;return a(["Postingan ditandai sebagai hanya-pengikut atau langsung dan tidak dapat diulang"])},repeated:n=>{const{normalize:a}=n;return a(["diulangi"])},reload:n=>{const{normalize:a}=n;return a(["Muat ulang"])},no_more_statuses:n=>{const{normalize:a}=n;return a(["Tidak ada status lagi"])},no_statuses:n=>{const{normalize:a}=n;return a(["Tidak ada status"])}},status:{favorites:n=>{const{normalize:a}=n;return a(["Favorit"])},repeats:n=>{const{normalize:a}=n;return a(["Ulangan"])},delete:n=>{const{normalize:a}=n;return a(["Hapus status"])},pin:n=>{const{normalize:a}=n;return a(["Sematkan di profil"])},unpin:n=>{const{normalize:a}=n;return a(["Berhenti menyematkan dari profil"])},pinned:n=>{const{normalize:a}=n;return a(["Disematkan"])},delete_confirm:n=>{const{normalize:a}=n;return a(["Apakah Anda benar-benar ingin menghapus status ini?"])},reply_to:n=>{const{normalize:a}=n;return a(["Balas ke"])},replies_list:n=>{const{normalize:a}=n;return a(["Balasan:"])},mute_conversation:n=>{const{normalize:a}=n;return a(["Bisukan percakapan"])},unmute_conversation:n=>{const{normalize:a}=n;return a(["Berhenti membisikan percakapan"])},status_unavailable:n=>{const{normalize:a}=n;return a(["Status tidak tersedia"])},thread_muted_and_words:n=>{const{normalize:a}=n;return a([", memiliki kata:"])},hide_content:n=>{const{normalize:a}=n;return a([])},show_content:n=>{const{normalize:a}=n;return a([])},status_deleted:n=>{const{normalize:a}=n;return a(["Postingan ini telah dihapus"])},nsfw:n=>{const{normalize:a}=n;return a(["NSFW"])}},user_card:{block:n=>{const{normalize:a}=n;return a(["Blokir"])},blocked:n=>{const{normalize:a}=n;return a(["Diblokir!"])},deny:n=>{const{normalize:a}=n;return a(["Tolak"])},edit_profile:n=>{const{normalize:a}=n;return a(["Sunting profil"])},favorites:n=>{const{normalize:a}=n;return a(["Favorit"])},follow:n=>{const{normalize:a}=n;return a(["Ikuti"])},follow_sent:n=>{const{normalize:a}=n;return a(["Permintaan dikirim!"])},follow_progress:n=>{const{normalize:a}=n;return a(["Meminta…"])},mute:n=>{const{normalize:a}=n;return a(["Bisukan"])},muted:n=>{const{normalize:a}=n;return a(["Dibisukan"])},per_day:n=>{const{normalize:a}=n;return a(["per hari"])},report:n=>{const{normalize:a}=n;return a(["Laporkan"])},statuses:n=>{const{normalize:a}=n;return a(["Status"])},unblock:n=>{const{normalize:a}=n;return a(["Berhenti memblokir"])},block_progress:n=>{const{normalize:a}=n;return a(["Memblokir…"])},unmute:n=>{const{normalize:a}=n;return a(["Berhenti membisukan"])},mute_progress:n=>{const{normalize:a}=n;return a(["Membisukan…"])},hide_repeats:n=>{const{normalize:a}=n;return a(["Sembunyikan ulangan"])},show_repeats:n=>{const{normalize:a}=n;return a(["Tampilkan ulangan"])},bot:n=>{const{normalize:a}=n;return a(["Bot"])},admin_menu:{moderation:n=>{const{normalize:a}=n;return a(["Moderasi"])},activate_account:n=>{const{normalize:a}=n;return a(["Aktifkan akun"])},deactivate_account:n=>{const{normalize:a}=n;return a(["Nonaktifkan akun"])},delete_account:n=>{const{normalize:a}=n;return a(["Hapus akun"])},force_nsfw:n=>{const{normalize:a}=n;return a(["Tandai semua postingan sebagai NSFW"])},strip_media:n=>{const{normalize:a}=n;return a(["Hapus media dari postingan-postingan"])},delete_user:n=>{const{normalize:a}=n;return a(["Hapus pengguna"])}},follow_unfollow:n=>{const{normalize:a}=n;return a(["Berhenti mengikuti"])},followees:n=>{const{normalize:a}=n;return a(["Mengikuti"])},followers:n=>{const{normalize:a}=n;return a(["Pengikut"])},following:n=>{const{normalize:a}=n;return a(["Diikuti!"])},follows_you:n=>{const{normalize:a}=n;return a(["Mengikuti Anda!"])},hidden:n=>{const{normalize:a}=n;return a(["Disembunyikan"])},its_you:n=>{const{normalize:a}=n;return a(["Ini Anda!"])},media:n=>{const{normalize:a}=n;return a(["Media"])},mention:n=>{const{normalize:a}=n;return a(["Sebut"])},message:n=>{const{normalize:a}=n;return a(["Kirimkan pesan"])}},user_profile:{timeline_title:n=>{const{normalize:a}=n;return a(["Linimasa pengguna"])},profile_does_not_exist:n=>{const{normalize:a}=n;return a(["Maaf, profil ini tidak ada."])},profile_loading_error:n=>{const{normalize:a}=n;return a(["Maaf, terjadi kesalahan ketika memuat profil ini."])}},user_reporting:{title:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Melaporkan ",e(r(0))])},add_comment_description:n=>{const{normalize:a}=n;return a(["Laporan ini akan dikirim ke moderator instansi Anda. Anda dapat menyediakan penjelasan mengapa Anda melaporkan akun ini di bawah:"])},additional_comments:n=>{const{normalize:a}=n;return a(["Komentar tambahan"])},forward_description:n=>{const{normalize:a}=n;return a(["Akun ini berada di server lain. Kirim salinan dari laporannya juga?"])},submit:n=>{const{normalize:a}=n;return a(["Kirim"])},generic_error:n=>{const{normalize:a}=n;return a(["Sebuah kesalahan terjadi ketika memproses permintaan Anda."])}},notifications:{favorited_you:n=>{const{normalize:a}=n;return a(["memfavoritkan status Anda"])},reacted_with:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["bereaksi dengan ",e(r(0))])},no_more_notifications:n=>{const{normalize:a}=n;return a(["Tidak ada notifikasi lagi"])},repeated_you:n=>{const{normalize:a}=n;return a(["mengulangi status Anda"])},read:n=>{const{normalize:a}=n;return a(["Dibaca!"])},notifications:n=>{const{normalize:a}=n;return a(["Notifikasi"])},follow_request:n=>{const{normalize:a}=n;return a(["ingin mengikuti Anda"])},followed_you:n=>{const{normalize:a}=n;return a(["mengikuti Anda"])},error:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Terjadi kesalahan ketika memuat notifikasi: ",e(r(0))])},migrated_to:n=>{const{normalize:a}=n;return a(["bermigrasi ke"])},load_older:n=>{const{normalize:a}=n;return a(["Muat notifikasi yang lebih lama"])},broken_favorite:n=>{const{normalize:a}=n;return a(["Status tak diketahui, mencarinya…"])}},who_to_follow:{more:n=>{const{normalize:a}=n;return a(["Lebih banyak"])}},tool_tip:{media_upload:n=>{const{normalize:a}=n;return a(["Unggah media"])},repeat:n=>{const{normalize:a}=n;return a(["Ulangi"])},reply:n=>{const{normalize:a}=n;return a(["Balas"])},favorite:n=>{const{normalize:a}=n;return a(["Favorit"])},add_reaction:n=>{const{normalize:a}=n;return a(["Tambahkan Reaksi"])},user_settings:n=>{const{normalize:a}=n;return a(["Pengaturan Pengguna"])}},upload:{error:{base:n=>{const{normalize:a}=n;return a(["Pengunggahan gagal."])},message:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Pengunggahan gagal: ",e(r(0))])},file_too_big:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Berkas terlalu besar [",e(r("filesize")),e(r("filesizeunit"))," / ",e(r("allowedsize")),e(r("allowedsizeunit")),"]"])},default:n=>{const{normalize:a}=n;return a(["Coba lagi nanti"])}},file_size_units:{B:n=>{const{normalize:a}=n;return a(["B"])},KiB:n=>{const{normalize:a}=n;return a(["KiB"])},MiB:n=>{const{normalize:a}=n;return a(["MiB"])},GiB:n=>{const{normalize:a}=n;return a(["GiB"])},TiB:n=>{const{normalize:a}=n;return a(["TiB"])}}},search:{people:n=>{const{normalize:a}=n;return a(["Orang"])},hashtags:n=>{const{normalize:a}=n;return a(["Tagar"])},person_talking:n=>{const{normalize:a,interpolate:e,named:r}=n;return a([e(r("count"))," orang berbicara"])},people_talking:n=>{const{normalize:a,interpolate:e,named:r}=n;return a([e(r("count"))," orang berbicara"])},no_results:n=>{const{normalize:a}=n;return a(["Tidak ada hasil"])}},password_reset:{forgot_password:n=>{const{normalize:a}=n;return a(["Lupa kata sandi?"])},placeholder:n=>{const{normalize:a}=n;return a(["Surel atau nama pengguna Anda"])},return_home:n=>{const{normalize:a}=n;return a(["Kembali ke halaman beranda"])},too_many_requests:n=>{const{normalize:a}=n;return a(["Anda telah mencapai batas percobaan, coba lagi nanti."])},instruction:n=>{const{normalize:a}=n;return a(["Masukkan surel atau nama pengguna Anda. Kami akan mengirimkan Anda tautan untuk mengatur ulang kata sandi."])},password_reset:n=>{const{normalize:a}=n;return a(["Pengatur-ulangan kata sandi"])},password_reset_disabled:n=>{const{normalize:a}=n;return a(["Pengatur-ulangan kata sandi dinonaktifkan. Hubungi administrator instansi Anda."])},password_reset_required:n=>{const{normalize:a}=n;return a(["Anda harus mengatur ulang kata sandi Anda untuk masuk."])},password_reset_required_but_mailer_is_disabled:n=>{const{normalize:a}=n;return a(["Anda harus mengatur ulang kata sandi, tetapi pengatur-ulangan kata sandi dinonaktifkan. Silakan hubungi administrator instansi Anda."])}},chats:{you:n=>{const{normalize:a}=n;return a(["Anda:"])},message_user:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Kirim Pesan ke ",e(r("nickname"))])},delete:n=>{const{normalize:a}=n;return a(["Hapus"])},chats:n=>{const{normalize:a}=n;return a(["Obrolan"])},new:n=>{const{normalize:a}=n;return a(["Obrolan Baru"])},empty_message_error:n=>{const{normalize:a}=n;return a(["Tidak dapat memposting pesan yang kosong"])},more:n=>{const{normalize:a}=n;return a(["Lebih banyak"])},delete_confirm:n=>{const{normalize:a}=n;return a(["Apakah Anda benar-benar ingin menghapus pesan ini?"])},error_loading_chat:n=>{const{normalize:a}=n;return a(["Sesuatu yang salah terjadi ketika memuat obrolan."])},error_sending_message:n=>{const{normalize:a}=n;return a(["Sesuatu yang salah terjadi ketika mengirim pesan."])},empty_chat_list_placeholder:n=>{const{normalize:a}=n;return a(["Anda belum memiliki obrolan. Buat sbeuah obrolan baru!"])}},file_type:{audio:n=>{const{normalize:a}=n;return a(["Audio"])},video:n=>{const{normalize:a}=n;return a(["Video"])},image:n=>{const{normalize:a}=n;return a(["Gambar"])},file:n=>{const{normalize:a}=n;return a(["Berkas"])}},registration:{bio_placeholder:n=>{const{normalize:a}=n;return a(["contoh.\nHai, aku Lain.\nAku seorang putri anime yang tinggal di pinggiran kota Jepang. Kamu mungkin mengenal aku dari Wired."])},validations:{password_confirmation_required:n=>{const{normalize:a}=n;return a(["tidak boleh kosong"])},password_required:n=>{const{normalize:a}=n;return a(["tidak boleh kosong"])},email_required:n=>{const{normalize:a}=n;return a(["tidak boleh kosong"])},fullname_required:n=>{const{normalize:a}=n;return a(["tidak boleh kosong"])},username_required:n=>{const{normalize:a}=n;return a(["tidak boleh kosong"])},password_confirmation_match:n=>{const{normalize:a}=n;return a(["wajib sama dengan sandi"])},birthday_required:n=>{const{normalize:a}=n;return a(["tidak boleh kosong"])},birthday_min_age:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["wajib sama dengan atau sebelum ",e(r("date"))])}},register:n=>{const{normalize:a}=n;return a(["Daftar"])},fullname_placeholder:n=>{const{normalize:a}=n;return a(["contoh. Lain Iwakura"])},username_placeholder:n=>{const{normalize:a}=n;return a(["contoh. lain"])},new_captcha:n=>{const{normalize:a}=n;return a(["Klik gambarnya untuk mendapatkan captcha baru"])},captcha:n=>{const{normalize:a}=n;return a(["CAPTCHA"])},token:n=>{const{normalize:a}=n;return a(["Token undangan"])},password_confirm:n=>{const{normalize:a}=n;return a(["Konfirmasi kata sandi"])},email:n=>{const{normalize:a}=n;return a(["Surel"])},bio:n=>{const{normalize:a}=n;return a(["Bio"])},reason_placeholder:n=>{const{normalize:a}=n;return a(["Instansi ini menerima pendaftaran secara manual.\nBeritahu administrasinya mengapa Anda ingin mendaftar."])},reason:n=>{const{normalize:a}=n;return a(["Alasan mendaftar"])},registration:n=>{const{normalize:a}=n;return a(["Pendaftaran"])},email_language:n=>{const{normalize:a}=n;return a(["Dalam bahasa apa kamu ingin menerima surel dari server ini?"])},email_optional:n=>{const{normalize:a}=n;return a(["Surel (opsional)"])},birthday:n=>{const{normalize:a}=n;return a(["Ulang tahun:"])},birthday_optional:n=>{const{normalize:a}=n;return a(["Ulang tahun (opsional):"])},bio_optional:n=>{const{normalize:a}=n;return a(["Bio (opsional)"])}},post_status:{preview_empty:n=>{const{normalize:a}=n;return a(["Kosong"])},default:n=>{const{normalize:a}=n;return a(["Baru saja mendarat di L.A."])},content_warning:n=>{const{normalize:a}=n;return a(["Subyek (opsional)"])},content_type:{"text/bbcode":n=>{const{normalize:a}=n;return a(["BBCode"])},"text/markdown":n=>{const{normalize:a}=n;return a(["Markdown"])},"text/html":n=>{const{normalize:a}=n;return a(["HTML"])},"text/plain":n=>{const{normalize:a}=n;return a(["Teks biasa"])}},media_description:n=>{const{normalize:a}=n;return a(["Keterangan media"])},attachments_sensitive:n=>{const{normalize:a}=n;return a(["Tandai lampiran sebagai sensitif"])},scope:{public:n=>{const{normalize:a}=n;return a(["Publik - posting ke linimasa publik"])},private:n=>{const{normalize:a}=n;return a(["Hanya-pengikut - posting hanya kepada pengikut"])},direct:n=>{const{normalize:a}=n;return a(["Langsung - posting hanya kepada pengguna yang disebut"])}},preview:n=>{const{normalize:a}=n;return a(["Pratinjau"])},post:n=>{const{normalize:a}=n;return a(["Posting"])},posting:n=>{const{normalize:a}=n;return a(["Memposting"])},direct_warning_to_first_only:n=>{const{normalize:a}=n;return a(["Postingan ini akan terlihat oleh pengguna yang disebutkan di awal pesan."])},direct_warning_to_all:n=>{const{normalize:a}=n;return a(["Postingan ini akan terlihat oleh pengguna yang disebutkan."])},scope_notice:{private:n=>{const{normalize:a}=n;return a(["Postingan ini akan terlihat hanya oleh pengikut Anda"])},public:n=>{const{normalize:a}=n;return a(["Postingan ini akan terlihat oleh siapa saja"])}},media_description_error:n=>{const{normalize:a}=n;return a(["Gagal memperbarui media, coba lagi"])},empty_status_error:n=>{const{normalize:a}=n;return a(["Tidak dapat memposting status kosong tanpa berkas"])},account_not_locked_warning_link:n=>{const{normalize:a}=n;return a(["terkunci"])},account_not_locked_warning:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Akun Anda tidak ",e(r(0)),". Siapapun dapat mengikuti Anda untuk melihat postingan hanya-pengikut Anda."])},new_status:n=>{const{normalize:a}=n;return a(["Posting status baru"])},edit_status:n=>{const{normalize:a}=n;return a(["Sunting status"])}},general:{apply:n=>{const{normalize:a}=n;return a(["Terapkan"])},flash_fail:n=>{const{normalize:a}=n;return a(["Gagal memuat konten flash, lihat console untuk keterangan."])},flash_security:n=>{const{normalize:a}=n;return a(["Harap ingat ini dapat menjadi berbahaya karena konten Flash masih termasuk arbitrary code."])},flash_content:n=>{const{normalize:a}=n;return a(["Klik untuk menampilkan konten Flash menggunakan Ruffle (Eksperimental, mungkin tidak bekerja)."])},role:{moderator:n=>{const{normalize:a}=n;return a(["Moderator"])},admin:n=>{const{normalize:a}=n;return a(["Admin"])}},peek:n=>{const{normalize:a}=n;return a(["Intip"])},close:n=>{const{normalize:a}=n;return a(["Tutup"])},verify:n=>{const{normalize:a}=n;return a(["Verifikasi"])},confirm:n=>{const{normalize:a}=n;return a(["Konfirmasi"])},enable:n=>{const{normalize:a}=n;return a(["Aktifkan"])},disable:n=>{const{normalize:a}=n;return a(["Nonaktifkan"])},cancel:n=>{const{normalize:a}=n;return a(["Batal"])},show_less:n=>{const{normalize:a}=n;return a(["Tampilkan lebih sedikit"])},show_more:n=>{const{normalize:a}=n;return a(["Tampilkan lebih banyak"])},optional:n=>{const{normalize:a}=n;return a(["opsional"])},retry:n=>{const{normalize:a}=n;return a(["Coba lagi"])},error_retry:n=>{const{normalize:a}=n;return a(["Harap coba lagi"])},generic_error:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan"])},loading:n=>{const{normalize:a}=n;return a(["Memuat…"])},more:n=>{const{normalize:a}=n;return a(["Lebih banyak"])},submit:n=>{const{normalize:a}=n;return a(["Kirim"])},yes:n=>{const{normalize:a}=n;return a(["Ya"])},no:n=>{const{normalize:a}=n;return a(["Tidak"])},scope_in_timeline:{direct:n=>{const{normalize:a}=n;return a(["Langsung"])},private:n=>{const{normalize:a}=n;return a(["Hanya pengikut"])},public:n=>{const{normalize:a}=n;return a(["Publik"])}},generic_error_message:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Terjadi kesalahan: ",e(r(0))])}},remote_user_resolver:{error:n=>{const{normalize:a}=n;return a(["Tidak ditemukan."])}},emoji:{load_all:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Memuat semua ",e(r("emojiAmount"))," emoji"])},load_all_hint:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Memuat ",e(r("saneAmount"))," emoji pertama, memuat semua emoji dapat menyebabkan masalah performa."])},unicode:n=>{const{normalize:a}=n;return a(["Emoji unicode"])},add_emoji:n=>{const{normalize:a}=n;return a(["Sisipkan emoji"])},search_emoji:n=>{const{normalize:a}=n;return a(["Cari emoji"])},emoji:n=>{const{normalize:a}=n;return a(["Emoji"])},stickers:n=>{const{normalize:a}=n;return a(["Stiker"])},keep_open:n=>{const{normalize:a}=n;return a(["Tetap buka pemilih"])},custom:n=>{const{normalize:a}=n;return a(["Emoji kustom"])},unicode_groups:{activities:n=>{const{normalize:a}=n;return a(["Aktivitas"])},"animals-and-nature":n=>{const{normalize:a}=n;return a(["Hewan & Alam"])},flags:n=>{const{normalize:a}=n;return a(["Bendera"])},"food-and-drink":n=>{const{normalize:a}=n;return a(["Makanan & Minuman"])},objects:n=>{const{normalize:a}=n;return a(["Objek"])},"people-and-body":n=>{const{normalize:a}=n;return a(["Orang & Tubuh"])},"smileys-and-emotion":n=>{const{normalize:a}=n;return a(["Emosi"])},symbols:n=>{const{normalize:a}=n;return a(["Simbol"])},"travel-and-places":n=>{const{normalize:a}=n;return a(["Perjalanan & Tempat-tempat"])}}},polls:{expired:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Japat berakhir ",e(r(0))," yang lalu"])},expires_in:n=>{const{normalize:a,interpolate:e,list:r}=n;return a(["Japat berakhir dalam ",e(r(0))])},expiry:n=>{const{normalize:a}=n;return a(["Usia japat"])},type:n=>{const{normalize:a}=n;return a(["Jenis japat"])},vote:n=>{const{normalize:a}=n;return a(["Pilih"])},votes_count:n=>{const{normalize:a,interpolate:e,named:r,plural:t}=n;return t([a([e(r("count"))," suara"]),a([e(r("count"))," suara"])])},people_voted_count:n=>{const{normalize:a,interpolate:e,named:r,plural:t}=n;return t([a([e(r("count"))," orang memilih"]),a([e(r("count"))," orang memilih"])])},votes:n=>{const{normalize:a}=n;return a(["suara"])},option:n=>{const{normalize:a}=n;return a(["Opsi"])},add_option:n=>{const{normalize:a}=n;return a(["Tambahkan opsi"])},add_poll:n=>{const{normalize:a}=n;return a(["Tambahkan japat"])},not_enough_options:n=>{const{normalize:a}=n;return a(["Terlalu sedikit opsi yang unik pada japat"])}},nav:{preferences:n=>{const{normalize:a}=n;return a(["Preferensi"])},search:n=>{const{normalize:a}=n;return a(["Cari"])},user_search:n=>{const{normalize:a}=n;return a(["Pencarian Pengguna"])},home_timeline:n=>{const{normalize:a}=n;return a(["Linimasa beranda"])},timeline:n=>{const{normalize:a}=n;return a(["Linimasa"])},public_tl:n=>{const{normalize:a}=n;return a(["Linimasa publik"])},interactions:n=>{const{normalize:a}=n;return a(["Interaksi"])},mentions:n=>{const{normalize:a}=n;return a(["Sebutan"])},back:n=>{const{normalize:a}=n;return a(["Kembali"])},administration:n=>{const{normalize:a}=n;return a(["Administrasi"])},about:n=>{const{normalize:a}=n;return a(["Tentang"])},timelines:n=>{const{normalize:a}=n;return a(["Linimasa"])},chats:n=>{const{normalize:a}=n;return a(["Obrolan"])},dms:n=>{const{normalize:a}=n;return a(["Pesan langsung"])},friend_requests:n=>{const{normalize:a}=n;return a(["Ingin mengikuti"])},twkn:n=>{const{normalize:a}=n;return a(["Jaringan Dikenal"])},mobile_notifications_close:n=>{const{normalize:a}=n;return a(["Tutup notifikasi"])},announcements:n=>{const{normalize:a}=n;return a(["Pengumuman"])},mobile_notifications:n=>{const{normalize:a}=n;return a(["Buka notifikasi (ada yang belum dibaca)"])}},media_modal:{next:n=>{const{normalize:a}=n;return a(["Selanjutnya"])},previous:n=>{const{normalize:a}=n;return a(["Sebelum"])},counter:n=>{const{normalize:a,interpolate:e,named:r}=n;return a([e(r("current"))," / ",e(r("total"))])},hide:n=>{const{normalize:a}=n;return a(["Tutup penampil media"])}},login:{recovery_code:n=>{const{normalize:a}=n;return a(["Kode pemulihan"])},enter_recovery_code:n=>{const{normalize:a}=n;return a(["Masukkan kode pemulihan"])},authentication_code:n=>{const{normalize:a}=n;return a(["Kode otentikasi"])},hint:n=>{const{normalize:a}=n;return a(["Masuk untuk ikut berdiskusi"])},username:n=>{const{normalize:a}=n;return a(["Nama pengguna"])},register:n=>{const{normalize:a}=n;return a(["Daftar"])},placeholder:n=>{const{normalize:a}=n;return a(["contoh: lain"])},password:n=>{const{normalize:a}=n;return a(["Kata sandi"])},logout:n=>{const{normalize:a}=n;return a(["Keluar"])},description:n=>{const{normalize:a}=n;return a(["Masuk dengan OAuth"])},login:n=>{const{normalize:a}=n;return a(["Masuk"])},heading:{totp:n=>{const{normalize:a}=n;return a(["Otentikasi dua-faktor"])}},enter_two_factor_code:n=>{const{normalize:a}=n;return a(["Masukkan kode dua-faktor"])},logout_confirm:n=>{const{normalize:a}=n;return a(["Apa kamu yakin ingin keluar?"])},logout_confirm_accept_button:n=>{const{normalize:a}=n;return a(["Keluar"])},logout_confirm_cancel_button:n=>{const{normalize:a}=n;return a(["Jangan keluar"])}},importer:{error:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan ketika mnengimpor berkas ini."])},success:n=>{const{normalize:a}=n;return a(["Berhasil mengimpor."])},submit:n=>{const{normalize:a}=n;return a(["Kirim"])}},image_cropper:{cancel:n=>{const{normalize:a}=n;return a(["Batal"])},save_without_cropping:n=>{const{normalize:a}=n;return a(["Simpan tanpa memotong"])},save:n=>{const{normalize:a}=n;return a(["Simpan"])},crop_picture:n=>{const{normalize:a}=n;return a(["Potong gambar"])}},finder:{find_user:n=>{const{normalize:a}=n;return a(["Cari pengguna"])},error_fetching_user:n=>{const{normalize:a}=n;return a(["Terjadi kesalahan ketika memuat pengguna"])}},features_panel:{title:n=>{const{normalize:a}=n;return a(["Fitur-fitur"])},text_limit:n=>{const{normalize:a}=n;return a(["Batas teks"])},gopher:n=>{const{normalize:a}=n;return a(["Gopher"])},pleroma_chat_messages:n=>{const{normalize:a}=n;return a(["Pleroma Obrolan"])},chat:n=>{const{normalize:a}=n;return a(["Obrolan"])},upload_limit:n=>{const{normalize:a}=n;return a(["Batas unggahan"])},media_proxy:n=>{const{normalize:a}=n;return a(["Proxy media"])}},exporter:{processing:n=>{const{normalize:a}=n;return a(["Memproses, Anda akan segera diminta untuk mengunduh berkas Anda"])},export:n=>{const{normalize:a}=n;return a(["Ekspor"])}},domain_mute_card:{unmute:n=>{const{normalize:a}=n;return a(["Berhenti membisukan"])},mute_progress:n=>{const{normalize:a}=n;return a(["Membisukan…"])},mute:n=>{const{normalize:a}=n;return a(["Bisukan"])},unmute_progress:n=>{const{normalize:a}=n;return a(["Memberhentikan pembisuan…"])}},display_date:{today:n=>{const{normalize:a}=n;return a(["Hari Ini"])}},selectable_list:{select_all:n=>{const{normalize:a}=n;return a(["Pilih semua"])}},interactions:{moves:n=>{const{normalize:a}=n;return a(["Pengguna yang bermigrasi"])},follows:n=>{const{normalize:a}=n;return a(["Pengikut baru"])},favs_repeats:n=>{const{normalize:a}=n;return a(["Ulangan dan favorit"])},load_older:n=>{const{normalize:a}=n;return a(["Muat interaksi yang lebih tua"])},emoji_reactions:n=>{const{normalize:a}=n;return a(["Reaksi Emoji"])},reports:n=>{const{normalize:a}=n;return a(["Laporan"])}},errors:{storage_unavailable:n=>{const{normalize:a}=n;return a(["Pleroma tidak dapat mengakses penyimpanan browser. Login Anda atau pengaturan lokal Anda tidak akan tersimpan dan masalah yang tidak terduga dapat terjadi. Coba mengaktifkan kuki."])}},shoutbox:{title:n=>{const{normalize:a}=n;return a(["Kotak Suara"])}},report:{state_closed:n=>{const{normalize:a}=n;return a(["Ditutup"])},reporter:n=>{const{normalize:a}=n;return a(["Pelapor:"])},reported_statuses:n=>{const{normalize:a}=n;return a(["Status yang dilaporkan:"])},reported_user:n=>{const{normalize:a}=n;return a(["Pengguna yang dilaporkan:"])},notes:n=>{const{normalize:a}=n;return a(["Catatan:"])},state:n=>{const{normalize:a}=n;return a(["Status:"])},state_open:n=>{const{normalize:a}=n;return a(["Terbuka"])},state_resolved:n=>{const{normalize:a}=n;return a(["Selesai"])}},announcements:{end_time_prompt:n=>{const{normalize:a}=n;return a(["Waktu berakhir: "])},published_time_display:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Diterbitkan pada ",e(r("time"))])},page_header:n=>{const{normalize:a}=n;return a(["Pengumuman"])},title:n=>{const{normalize:a}=n;return a(["Pengumuman"])},mark_as_read_action:n=>{const{normalize:a}=n;return a(["Tandai telah dibaca"])},post_placeholder:n=>{const{normalize:a}=n;return a(["Ketik isi pengumumanmu di sini..."])},close_error:n=>{const{normalize:a}=n;return a(["Tutup"])},delete_action:n=>{const{normalize:a}=n;return a(["Hapus"])},start_time_prompt:n=>{const{normalize:a}=n;return a(["Waktu mulai: "])},post_error:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Kesalahan: ",e(r("error"))])},start_time_display:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Dimulai pada ",e(r("time"))])},end_time_display:n=>{const{normalize:a,interpolate:e,named:r}=n;return a(["Berakhir pada ",e(r("time"))])},edit_action:n=>{const{normalize:a}=n;return a(["Sunting"])},submit_edit_action:n=>{const{normalize:a}=n;return a(["Kirim"])},cancel_edit_action:n=>{const{normalize:a}=n;return a(["Batal"])}}}}}]); +//# sourceMappingURL=id-json.e5c9ee768155f88128b9.js.map +\ No newline at end of file diff --git a/priv/static/static/js/i18n/id-json.e5c9ee768155f88128b9.js.map b/priv/static/static/js/i18n/id-json.e5c9ee768155f88128b9.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/i18n/id-json.e5c9ee768155f88128b9.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/id.json"],"sourcesContent":["export default {\n \"settings\": {\n \"style\": {\n \"preview\": {\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sebuah tautan yang kecil nan bagus\"])},\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pratinjau\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Contoh kesalahan\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tombol\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Baru saja mendarat di L.A.\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"manual berguna\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Baca \", _interpolate(_list(0)), \" kami untuk belajar sesuatu yang tak ada gunanya!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ini baik-baik saja\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saya telah membaca sekilas syarat dan ketentuan\"])}\n },\n \"advanced_colors\": {\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neutral\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peringatan\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kesalahan\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lanjutan\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan/Bio pengguna\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltip, menu, popover\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifikasi\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bar atas\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tombol\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latar belakang\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Header panel\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ikon-ikon\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dinonaktifkan\"])}\n },\n \"common_colors\": {\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warna umum\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Umum\"])}\n },\n \"common\": {\n \"contrast\": {\n \"context\": {\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"untuk teks\"])},\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Untuk teks besar (18pt+)\"])}\n }\n },\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warna\"])}\n },\n \"switcher\": {\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE telah diperbarui, tema dapat terlihat sedikit berbeda dari apa yang Anda ingat.\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berkas yang Anda impor dibuat pada versi FE yang lebih baru.\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berkas yang Anda impor dibuat pada versi FE yang lebih lama.\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mesin tema PleromaFE diperbarui setelah pembaruan versi.\"])}\n },\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versi baru\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versi lama\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muat tema\"])}\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Font\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antarmuka\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teks postingan\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nama font\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ukuran (dalam px)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berat (ketebalan)\"])}\n },\n \"shadows\": {\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Header panel\"])}\n }\n }\n },\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privasi\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifikasi\"])},\n \"values\": {\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ya\"])},\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak\"])}\n },\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengaturan Pengguna\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unggah foto\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tema\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teks\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengaturan\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keamanan\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengaturan disimpan\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profil\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latar belakang profil\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token OAuth\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan lencana \\\"Moderator\\\" di profil saya\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan lencana \\\"Admin\\\" di profil saya\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kata sandi baru\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Surel baru\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nama & bio\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nama\"])},\n \"profile_fields\": {\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Isi\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metadata profil\"])}\n },\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak tersedia di browser Anda\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berkas yang dipilih bukan sebuah tema yang didukung Pleroma. Tidak ada perbuahan yang dibuat pada tema Anda.\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bahasa antarmuka\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Antarmuka\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(bawaan)\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(bawaan: \", _interpolate(_named(\"value\")), \")\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Umum\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ada masalah ketika menghapus akun Anda. Jika ini terus terjadi harap hubungi adminstrator instansi Anda.\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus data Anda secara permanen dan menonaktifkan akun Anda.\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus akun\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Impor / ekspor data\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kata sandi saat ini\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmasi kata sandi baru\"])},\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versi\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versi backend\"])},\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versi frontend\"])}\n },\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keamanan\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kata sandi berhasil diubah!\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ada masalah ketika mengubah kata sandi Anda.\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ubah kata sandi\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Surel berhasil diubah!\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ada masalah ketika mengubah surel Anda.\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ubah surel\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Merah (Batal)\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Biru (Balas, ikuti)\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tombol\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ini adalah akun bot\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ekspor blokiran\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latar belakang\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lampiran\"])},\n \"mfa\": {\n \"scan\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pindai\"])}\n },\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmasi & aktifkan OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Siapkan OTP\"])},\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tulis kode-kode nya atau simpan mereka di tempat yang aman - jika tidak Anda tidak akan melihat mereka lagi. Jika Anda tidak dapat mengakses aplikasi 2FA Anda dan kode pemulihan Anda hilang Anda tidak akan bisa mengakses akun Anda.\"])},\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metode otentikasi\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kode pemulihan.\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ketika Anda menghasilkan kode pemulihan baru, kode lama Anda berhenti bekerja.\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hasilkan kode pemulihan baru\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Otentikasi Dua-faktor\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Menerima kode cadangan…\"])},\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Untuk mengaktifkan otentikasi dua-faktor, masukkan kode dari aplikasi dua-faktor Anda:\"])}\n }\n },\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nama aplikasi\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Simpan perubahan\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valid hingga\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan ketika mengimpor pengikut\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan reaksi emoji pada linimasa\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pesan obrolan\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jingga (Favorit)\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar (notifikasi)\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan kotak suara instansi\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jangan tampilkan jumlah pengikut\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jangan tampilkan jumlah mengikuti\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jangan tampilkan siapa yang mengikuti saya\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jangan tampilkan siapa yang saya ikuti\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reaksi\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Diikuti\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengguna Bermigrasi\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulangan\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sebutan\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorit\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jenis notifikasi yang perlu ditampilkan\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tautan\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan statistik pengguna (contoh. jumlah pengikut)\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan statistik postingan (contoh. jumlah favorit)\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buka lampiran NSFW hanya dengan satu klik\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan latar belakang instansi\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokiran diimpor! Pemrosesannya mungkin memakan sedikit waktu.\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan ketika mengimpor blokiran\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Impor blokiran\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ekspor blokiran Anda menjadi berkas csv\"])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokiran\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ketik kata sandi Anda pada input di bawah untuk mengkonfirmasi penghapusan akun.\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bisuan dan Blokiran\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masukkan kata sandi Anda saat ini untuk mengkonfirmasi identitas Anda\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Penyaringan\"])},\n \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Penyaring kata\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ukuran minimum gambar avatar yang disarankan adalah 150x150 piksel.\"])},\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lampiran\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hijau (Retweet)\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jumlah thumbnail maksimum per postingan\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulang-ulang video\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulang-ulang video tanpa suara (seperti \\\"gif\\\" Mastodon)\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeda aliran ketika tab di dalam fokus\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hanya tampilkan balasan yang ditujukan kepada saya atau orang yang saya ikuti\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan balasan ke orang yang saya ikuti\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan ketika menyimpan pengaturan\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cari siapa yang Anda ingin blokir\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cari siapa yang ingin Anda bisukan\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tetapkan avatar baru\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tetapkan latar belakang profil baru\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Salin subyek ketika membalas\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seperti surel: \\\"re: subyek\\\"\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seperti mastodon: salin saja\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jangan salin\"])},\n \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Tidak disarankan, eksperimental, diketahui dapat melewati postingan-postingan)\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Seru\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktifkan notifikasi push web\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lebih banyak pengaturan\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan semua balasan\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hanya tampilkan balasan yang ditujukan kepada saya\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan postingan-postingan dari pengguna yang dibisukan\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Impor blokiran dari berkas csv\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domain\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Menulis\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada yang diblokir\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada yang dibisukan\"])},\n \"remove_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus\"])}\n },\n \"about\": {\n \"mrf\": {\n \"keyword\": {\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tolak\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])}\n },\n \"simple\": {\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instansi ini hanya akan mengirim postingan publik ke instansi-instansi berikut:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Karantina\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instansi ini tidak akan menerima pesan dari instansi-instansi berikut:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tolak\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instansi ini hanya menerima pesan dari instansi-instansi berikut:\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terima\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Penghapusan Media\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instansi ini menghapus media dari postingan yang berasal dari instansi-instansi berikut:\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alasan\"])}\n },\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federasi\"])},\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kebijakan MRF yang diaktifkan\"])}\n },\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Staf\"])}\n },\n \"time\": {\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hari\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" hari\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" jam\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" jam\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"j\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"j\"])},\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"dalam \", _interpolate(_list(0))])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" yang lalu\"])},\n \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" menit\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" menit\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"m\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"m\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" bulan\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" bulan\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"b\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"b\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"baru saja\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sekarang\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" detik\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" detik\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" pekan\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" pekan\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"p\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"p\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" tahun\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" tahun\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"t\"])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"t\"])}\n },\n \"timeline\": {\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Percakapan\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Terjadi kesalahan memuat linimasa: \", _interpolate(_list(0))])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ditandai sebagai hanya-pengikut atau langsung dan tidak dapat diulang\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"diulangi\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muat ulang\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada status lagi\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada status\"])}\n },\n \"status\": {\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorit\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulangan\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus status\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sematkan di profil\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti menyematkan dari profil\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disematkan\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apakah Anda benar-benar ingin menghapus status ini?\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Balas ke\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Balasan:\"])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bisukan percakapan\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti membisikan percakapan\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status tidak tersedia\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", memiliki kata:\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ini telah dihapus\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])}\n },\n \"user_card\": {\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blokir\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Diblokir!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tolak\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunting profil\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorit\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ikuti\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permintaan dikirim!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meminta…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bisukan\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dibisukan\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per hari\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laporkan\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti memblokir\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memblokir…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti membisukan\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Membisukan…\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sembunyikan ulangan\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan ulangan\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bot\"])},\n \"admin_menu\": {\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderasi\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktifkan akun\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nonaktifkan akun\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus akun\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tandai semua postingan sebagai NSFW\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus media dari postingan-postingan\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus pengguna\"])}\n },\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti mengikuti\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mengikuti\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengikut\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Diikuti!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mengikuti Anda!\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disembunyikan\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ini Anda!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sebut\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kirimkan pesan\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linimasa pengguna\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maaf, profil ini tidak ada.\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maaf, terjadi kesalahan ketika memuat profil ini.\"])}\n },\n \"user_reporting\": {\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Melaporkan \", _interpolate(_list(0))])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laporan ini akan dikirim ke moderator instansi Anda. Anda dapat menyediakan penjelasan mengapa Anda melaporkan akun ini di bawah:\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Komentar tambahan\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Akun ini berada di server lain. Kirim salinan dari laporannya juga?\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kirim\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sebuah kesalahan terjadi ketika memproses permintaan Anda.\"])}\n },\n \"notifications\": {\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"memfavoritkan status Anda\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"bereaksi dengan \", _interpolate(_list(0))])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada notifikasi lagi\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mengulangi status Anda\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dibaca!\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifikasi\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ingin mengikuti Anda\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mengikuti Anda\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Terjadi kesalahan ketika memuat notifikasi: \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"bermigrasi ke\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muat notifikasi yang lebih lama\"])},\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status tak diketahui, mencarinya…\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lebih banyak\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unggah media\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulangi\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Balas\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorit\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tambahkan Reaksi\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengaturan Pengguna\"])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengunggahan gagal.\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Pengunggahan gagal: \", _interpolate(_list(0))])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Berkas terlalu besar [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Coba lagi nanti\"])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Orang\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tagar\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" orang berbicara\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" orang berbicara\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ada hasil\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lupa kata sandi?\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Surel atau nama pengguna Anda\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kembali ke halaman beranda\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anda telah mencapai batas percobaan, coba lagi nanti.\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masukkan surel atau nama pengguna Anda. Kami akan mengirimkan Anda tautan untuk mengatur ulang kata sandi.\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengatur-ulangan kata sandi\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengatur-ulangan kata sandi dinonaktifkan. Hubungi administrator instansi Anda.\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anda harus mengatur ulang kata sandi Anda untuk masuk.\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anda harus mengatur ulang kata sandi, tetapi pengatur-ulangan kata sandi dinonaktifkan. Silakan hubungi administrator instansi Anda.\"])}\n },\n \"chats\": {\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anda:\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Kirim Pesan ke \", _interpolate(_named(\"nickname\"))])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Obrolan\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Obrolan Baru\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak dapat memposting pesan yang kosong\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lebih banyak\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apakah Anda benar-benar ingin menghapus pesan ini?\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sesuatu yang salah terjadi ketika memuat obrolan.\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sesuatu yang salah terjadi ketika mengirim pesan.\"])},\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Anda belum memiliki obrolan. Buat sbeuah obrolan baru!\"])}\n },\n \"file_type\": {\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Audio\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Video\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gambar\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berkas\"])}\n },\n \"registration\": {\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contoh.\\nHai, aku Lain.\\nAku seorang putri anime yang tinggal di pinggiran kota Jepang. Kamu mungkin mengenal aku dari Wired.\"])},\n \"validations\": {\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak boleh kosong\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak boleh kosong\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak boleh kosong\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak boleh kosong\"])},\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak boleh kosong\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wajib sama dengan sandi\"])},\n \"birthday_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tidak boleh kosong\"])},\n \"birthday_min_age\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"wajib sama dengan atau sebelum \", _interpolate(_named(\"date\"))])}\n },\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daftar\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contoh. Lain Iwakura\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contoh. lain\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Klik gambarnya untuk mendapatkan captcha baru\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token undangan\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmasi kata sandi\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Surel\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instansi ini menerima pendaftaran secara manual.\\nBeritahu administrasinya mengapa Anda ingin mendaftar.\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alasan mendaftar\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pendaftaran\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dalam bahasa apa kamu ingin menerima surel dari server ini?\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Surel (opsional)\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulang tahun:\"])},\n \"birthday_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulang tahun (opsional):\"])},\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio (opsional)\"])}\n },\n \"post_status\": {\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kosong\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Baru saja mendarat di L.A.\"])},\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subyek (opsional)\"])},\n \"content_type\": {\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teks biasa\"])}\n },\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keterangan media\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tandai lampiran sebagai sensitif\"])},\n \"scope\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publik - posting ke linimasa publik\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hanya-pengikut - posting hanya kepada pengikut\"])},\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langsung - posting hanya kepada pengguna yang disebut\"])}\n },\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pratinjau\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posting\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memposting\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ini akan terlihat oleh pengguna yang disebutkan di awal pesan.\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ini akan terlihat oleh pengguna yang disebutkan.\"])},\n \"scope_notice\": {\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ini akan terlihat hanya oleh pengikut Anda\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Postingan ini akan terlihat oleh siapa saja\"])}\n },\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gagal memperbarui media, coba lagi\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak dapat memposting status kosong tanpa berkas\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"terkunci\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Akun Anda tidak \", _interpolate(_list(0)), \". Siapapun dapat mengikuti Anda untuk melihat postingan hanya-pengikut Anda.\"])},\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posting status baru\"])},\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunting status\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terapkan\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gagal memuat konten flash, lihat console untuk keterangan.\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Harap ingat ini dapat menjadi berbahaya karena konten Flash masih termasuk arbitrary code.\"])},\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Klik untuk menampilkan konten Flash menggunakan Ruffle (Eksperimental, mungkin tidak bekerja).\"])},\n \"role\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderator\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])}\n },\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Intip\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tutup\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verifikasi\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Konfirmasi\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktifkan\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nonaktifkan\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Batal\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan lebih sedikit\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tampilkan lebih banyak\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"opsional\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Coba lagi\"])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Harap coba lagi\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memuat…\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lebih banyak\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kirim\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ya\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak\"])},\n \"scope_in_timeline\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langsung\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hanya pengikut\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publik\"])}\n },\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Terjadi kesalahan: \", _interpolate(_list(0))])}\n },\n \"remote_user_resolver\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tidak ditemukan.\"])}\n },\n \"emoji\": {\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Memuat semua \", _interpolate(_named(\"emojiAmount\")), \" emoji\"])},\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Memuat \", _interpolate(_named(\"saneAmount\")), \" emoji pertama, memuat semua emoji dapat menyebabkan masalah performa.\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji unicode\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sisipkan emoji\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cari emoji\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji\"])},\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stiker\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tetap buka pemilih\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji kustom\"])},\n \"unicode_groups\": {\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aktivitas\"])},\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hewan & Alam\"])},\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bendera\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Makanan & Minuman\"])},\n \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Objek\"])},\n \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Orang & Tubuh\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emosi\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Simbol\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Perjalanan & Tempat-tempat\"])}\n }\n },\n \"polls\": {\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Japat berakhir \", _interpolate(_list(0)), \" yang lalu\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Japat berakhir dalam \", _interpolate(_list(0))])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Usia japat\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jenis japat\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pilih\"])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" suara\"]), _normalize([_interpolate(_named(\"count\")), \" suara\"])])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" orang memilih\"]), _normalize([_interpolate(_named(\"count\")), \" orang memilih\"])])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suara\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opsi\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tambahkan opsi\"])},\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tambahkan japat\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terlalu sedikit opsi yang unik pada japat\"])}\n },\n \"nav\": {\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferensi\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cari\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pencarian Pengguna\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linimasa beranda\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linimasa\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linimasa publik\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interaksi\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sebutan\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kembali\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administrasi\"])},\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tentang\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linimasa\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Obrolan\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pesan langsung\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingin mengikuti\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jaringan Dikenal\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tutup notifikasi\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengumuman\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buka notifikasi (ada yang belum dibaca)\"])}\n },\n \"media_modal\": {\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selanjutnya\"])},\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sebelum\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tutup penampil media\"])}\n },\n \"login\": {\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kode pemulihan\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masukkan kode pemulihan\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kode otentikasi\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masuk untuk ikut berdiskusi\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nama pengguna\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Daftar\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"contoh: lain\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kata sandi\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keluar\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masuk dengan OAuth\"])},\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masuk\"])},\n \"heading\": {\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Otentikasi dua-faktor\"])}\n },\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Masukkan kode dua-faktor\"])},\n \"logout_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apa kamu yakin ingin keluar?\"])},\n \"logout_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keluar\"])},\n \"logout_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jangan keluar\"])}\n },\n \"importer\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan ketika mnengimpor berkas ini.\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhasil mengimpor.\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kirim\"])}\n },\n \"image_cropper\": {\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Batal\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Simpan tanpa memotong\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Simpan\"])},\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Potong gambar\"])}\n },\n \"finder\": {\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cari pengguna\"])},\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terjadi kesalahan ketika memuat pengguna\"])}\n },\n \"features_panel\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fitur-fitur\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Batas teks\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma Obrolan\"])},\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Obrolan\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Batas unggahan\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Proxy media\"])}\n },\n \"exporter\": {\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memproses, Anda akan segera diminta untuk mengunduh berkas Anda\"])},\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ekspor\"])}\n },\n \"domain_mute_card\": {\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Berhenti membisukan\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Membisukan…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bisukan\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Memberhentikan pembisuan…\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hari Ini\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pilih semua\"])}\n },\n \"interactions\": {\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengguna yang bermigrasi\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengikut baru\"])},\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ulangan dan favorit\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muat interaksi yang lebih tua\"])},\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reaksi Emoji\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laporan\"])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma tidak dapat mengakses penyimpanan browser. Login Anda atau pengaturan lokal Anda tidak akan tersimpan dan masalah yang tidak terduga dapat terjadi. Coba mengaktifkan kuki.\"])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kotak Suara\"])}\n },\n \"report\": {\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ditutup\"])},\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pelapor:\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status yang dilaporkan:\"])},\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengguna yang dilaporkan:\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Catatan:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Terbuka\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selesai\"])}\n },\n \"announcements\": {\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Waktu berakhir: \"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Diterbitkan pada \", _interpolate(_named(\"time\"))])},\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengumuman\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pengumuman\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tandai telah dibaca\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ketik isi pengumumanmu di sini...\"])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tutup\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hapus\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Waktu mulai: \"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Kesalahan: \", _interpolate(_named(\"error\"))])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Dimulai pada \", _interpolate(_named(\"time\"))])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Berakhir pada \", _interpolate(_named(\"time\"))])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunting\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kirim\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Batal\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","list","_list","named","_named","plural","_plural"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/i18n/ko-json.4bd28b26a7390a09afc2.js b/priv/static/static/js/i18n/ko-json.4bd28b26a7390a09afc2.js @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[9670],{10707:(r,n,e)=>{e.r(n),e.d(n,{default:()=>t});const t={chat:{title:r=>{const{normalize:n}=r;return n(["챗"])}},features_panel:{chat:r=>{const{normalize:n}=r;return n(["챗"])},gopher:r=>{const{normalize:n}=r;return n(["Gopher"])},media_proxy:r=>{const{normalize:n}=r;return n(["미디어 프록시"])},scope_options:r=>{const{normalize:n}=r;return n(["범위 옵션"])},text_limit:r=>{const{normalize:n}=r;return n(["텍스트 제한"])},title:r=>{const{normalize:n}=r;return n(["기능"])},who_to_follow:r=>{const{normalize:n}=r;return n(["팔로우 추천"])},upload_limit:r=>{const{normalize:n}=r;return n(["최대 파일용량"])},pleroma_chat_messages:r=>{const{normalize:n}=r;return n(["Pleroma 채팅"])},shout:r=>{const{normalize:n}=r;return n(["외치기"])}},finder:{error_fetching_user:r=>{const{normalize:n}=r;return n(["사용자 정보 불러오기 실패"])},find_user:r=>{const{normalize:n}=r;return n(["사용자 찾기"])}},general:{apply:r=>{const{normalize:n}=r;return n(["적용"])},submit:r=>{const{normalize:n}=r;return n(["보내기"])},loading:r=>{const{normalize:n}=r;return n(["로딩중…"])},peek:r=>{const{normalize:n}=r;return n(["살짝 보기"])},close:r=>{const{normalize:n}=r;return n(["닫기"])},verify:r=>{const{normalize:n}=r;return n(["검사"])},confirm:r=>{const{normalize:n}=r;return n(["확인"])},enable:r=>{const{normalize:n}=r;return n(["활성화"])},disable:r=>{const{normalize:n}=r;return n(["비활성화"])},cancel:r=>{const{normalize:n}=r;return n(["취소"])},dismiss:r=>{const{normalize:n}=r;return n(["무시"])},show_less:r=>{const{normalize:n}=r;return n(["접기"])},show_more:r=>{const{normalize:n}=r;return n(["더 보기"])},optional:r=>{const{normalize:n}=r;return n(["필수 아님"])},retry:r=>{const{normalize:n}=r;return n(["다시 시도하십시오"])},error_retry:r=>{const{normalize:n}=r;return n(["다시 시도하십시오"])},generic_error:r=>{const{normalize:n}=r;return n(["에러가 발생했습니다"])},more:r=>{const{normalize:n}=r;return n(["더 보기"])},role:{moderator:r=>{const{normalize:n}=r;return n(["중재자"])},admin:r=>{const{normalize:n}=r;return n(["관리자"])}},undo:r=>{const{normalize:n}=r;return n(["취소"])},yes:r=>{const{normalize:n}=r;return n(["네"])},no:r=>{const{normalize:n}=r;return n(["아니오"])},unpin:r=>{const{normalize:n}=r;return n(["고정 해제"])},pin:r=>{const{normalize:n}=r;return n(["고정"])},scope_in_timeline:{private:r=>{const{normalize:n}=r;return n(["팔로워 전용"])},public:r=>{const{normalize:n}=r;return n(["공개"])},unlisted:r=>{const{normalize:n}=r;return n(["비표시"])},direct:r=>{const{normalize:n}=r;return n(["다이렉트"])}},flash_content:r=>{const{normalize:n}=r;return n(["클릭해서 플래시 컨텐츠 보기 (Ruffle 사용, 작동하지 않을 수 있습니다)."])},flash_security:r=>{const{normalize:n}=r;return n(["플래시 컨텐츠는 임의 코드 실행이 아직도 가능할 수 있기에 위험할 수 있습니다."])},flash_fail:r=>{const{normalize:n}=r;return n(["플래시를 로드하지 못했습니다, 콘솔로 자세한 내용을 확인하세요."])},scroll_to_top:r=>{const{normalize:n}=r;return n(["맨 위로 올라가기"])},generic_error_message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["에러가 발생했습니다: ",e(t(0))])},never_show_again:r=>{const{normalize:n}=r;return n(["다시 보지 않기"])}},login:{login:r=>{const{normalize:n}=r;return n(["로그인"])},description:r=>{const{normalize:n}=r;return n(["OAuth로 로그인"])},logout:r=>{const{normalize:n}=r;return n(["로그아웃"])},password:r=>{const{normalize:n}=r;return n(["패스워드"])},placeholder:r=>{const{normalize:n}=r;return n(["예시: lain"])},register:r=>{const{normalize:n}=r;return n(["가입"])},username:r=>{const{normalize:n}=r;return n(["사용자 이름"])},heading:{recovery:r=>{const{normalize:n}=r;return n(["2단계 복구"])},totp:r=>{const{normalize:n}=r;return n(["2단계인증"])}},recovery_code:r=>{const{normalize:n}=r;return n(["복구 코드"])},enter_two_factor_code:r=>{const{normalize:n}=r;return n(["2단계인증 코드를 입력하십시오"])},enter_recovery_code:r=>{const{normalize:n}=r;return n(["복구 코드를 입력하십시오"])},authentication_code:r=>{const{normalize:n}=r;return n(["인증 코드"])},hint:r=>{const{normalize:n}=r;return n(["로그인해서 대화에 참여"])}},nav:{about:r=>{const{normalize:n}=r;return n(["인스턴스 소개"])},back:r=>{const{normalize:n}=r;return n(["뒤로"])},chat:r=>{const{normalize:n}=r;return n(["로컬 챗"])},friend_requests:r=>{const{normalize:n}=r;return n(["팔로우 요청"])},mentions:r=>{const{normalize:n}=r;return n(["멘션"])},dms:r=>{const{normalize:n}=r;return n(["다이렉트 메시지"])},public_tl:r=>{const{normalize:n}=r;return n(["공개 타임라인"])},timeline:r=>{const{normalize:n}=r;return n(["타임라인"])},twkn:r=>{const{normalize:n}=r;return n(["알려진 네트워크"])},user_search:r=>{const{normalize:n}=r;return n(["사용자 검색"])},preferences:r=>{const{normalize:n}=r;return n(["환경설정"])},chats:r=>{const{normalize:n}=r;return n(["채팅"])},timelines:r=>{const{normalize:n}=r;return n(["타임라인"])},who_to_follow:r=>{const{normalize:n}=r;return n(["추천된 사용자"])},search:r=>{const{normalize:n}=r;return n(["검색"])},bookmarks:r=>{const{normalize:n}=r;return n(["북마크"])},interactions:r=>{const{normalize:n}=r;return n(["알림"])},administration:r=>{const{normalize:n}=r;return n(["관리"])},home_timeline:r=>{const{normalize:n}=r;return n(["홈 타임라인"])},mobile_notifications:r=>{const{normalize:n}=r;return n(["알림 열기 (읽지 않은 알림이 있습니다)"])},lists:r=>{const{normalize:n}=r;return n(["리스트"])},edit_nav_mobile:r=>{const{normalize:n}=r;return n(["네비게이션 바 커스텀하기"])},edit_pinned:r=>{const{normalize:n}=r;return n(["상단 고정 편집"])},edit_finish:r=>{const{normalize:n}=r;return n(["편집 종료"])},mobile_notifications_close:r=>{const{normalize:n}=r;return n(["알림 닫기"])},mobile_sidebar:r=>{const{normalize:n}=r;return n(["모바일 사이드바 토글"])},announcements:r=>{const{normalize:n}=r;return n(["공지사항"])}},notifications:{broken_favorite:r=>{const{normalize:n}=r;return n(["알 수 없는 게시물입니다, 검색합니다…"])},favorited_you:r=>{const{normalize:n}=r;return n(["관심을 가짐"])},followed_you:r=>{const{normalize:n}=r;return n(["팔로우함"])},load_older:r=>{const{normalize:n}=r;return n(["이전 알림 불러오기"])},notifications:r=>{const{normalize:n}=r;return n(["알림"])},read:r=>{const{normalize:n}=r;return n(["읽음!"])},repeated_you:r=>{const{normalize:n}=r;return n(["리핏함"])},no_more_notifications:r=>{const{normalize:n}=r;return n(["알림이 없습니다"])},migrated_to:r=>{const{normalize:n}=r;return n(["이사했습니다"])},reacted_with:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 로 반응했습니다"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["알림 불러오기 실패: ",e(t(0))])},follow_request:r=>{const{normalize:n}=r;return n(["팔로우 요청"])},submitted_report:r=>{const{normalize:n}=r;return n(["신고 내용을 전송함"])},poll_ended:r=>{const{normalize:n}=r;return n(["투표가 끝남"])}},post_status:{new_status:r=>{const{normalize:n}=r;return n(["새 게시물 게시"])},account_not_locked_warning:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["계정이 ",e(t(0))," 상태가 아닙니다. 누구나 당신을 팔로우 하고 팔로워 전용 게시물을 볼 수 있습니다."])},account_not_locked_warning_link:r=>{const{normalize:n}=r;return n(["잠김"])},attachments_sensitive:r=>{const{normalize:n}=r;return n(["첨부물을 민감함으로 설정"])},content_type:{"text/plain":r=>{const{normalize:n}=r;return n(["평문"])},"text/bbcode":r=>{const{normalize:n}=r;return n(["BBCode"])},"text/markdown":r=>{const{normalize:n}=r;return n(["마크다운"])},"text/html":r=>{const{normalize:n}=r;return n(["HTML"])}},content_warning:r=>{const{normalize:n}=r;return n(["제목 (선택)"])},default:r=>{const{normalize:n}=r;return n(["인천공항에 도착했습니다."])},direct_warning:r=>{const{normalize:n}=r;return n(["이 게시물을 멘션 된 사용자들에게만 보여집니다"])},posting:r=>{const{normalize:n}=r;return n(["게시 중"])},scope:{direct:r=>{const{normalize:n}=r;return n(["다이렉트 - 멘션 된 사용자들에게만"])},private:r=>{const{normalize:n}=r;return n(["팔로워 전용 - 팔로워들에게만"])},public:r=>{const{normalize:n}=r;return n(["공개 - 공개 타임라인으로"])},unlisted:r=>{const{normalize:n}=r;return n(["비표시 - 공개 타임라인에는 안 보이게"])}},preview_empty:r=>{const{normalize:n}=r;return n(["비어있음"])},preview:r=>{const{normalize:n}=r;return n(["미리보기"])},scope_notice:{public:r=>{const{normalize:n}=r;return n(["누구나 볼 수 있습니다"])},private:r=>{const{normalize:n}=r;return n(["팔로워에게만 보여집니다"])},unlisted:r=>{const{normalize:n}=r;return n(["공개 타임라인이나 알려진 네트워크에는 보여지지 않습니다"])}},media_description_error:r=>{const{normalize:n}=r;return n(["파일을 올리지 못했습니다, 다시 시도해 보세요"])},empty_status_error:r=>{const{normalize:n}=r;return n(["게시물이 비어 있습니다"])},media_description:r=>{const{normalize:n}=r;return n(["첨부파일 설명"])},direct_warning_to_all:r=>{const{normalize:n}=r;return n(["멘션한 모든 사용자에게 보여집니다."])},edit_unsupported_warning:r=>{const{normalize:n}=r;return n(["Pleroma는 멘션이나 투표를 수정하는 기능을 지원하지 않습니다."])},edit_status:r=>{const{normalize:n}=r;return n(["수정"])},edit_remote_warning:r=>{const{normalize:n}=r;return n(["수정 기능이 없는 다른 인스턴스에서는 수정한 사항이 반영되지 않을 수 있습니다."])},post:r=>{const{normalize:n}=r;return n(["게시"])},direct_warning_to_first_only:r=>{const{normalize:n}=r;return n(["맨 앞에 멘션한 사용자들에게만 보여집니다."])}},registration:{bio:r=>{const{normalize:n}=r;return n(["소개"])},email:r=>{const{normalize:n}=r;return n(["이메일"])},fullname:r=>{const{normalize:n}=r;return n(["표시될 이름"])},password_confirm:r=>{const{normalize:n}=r;return n(["패스워드 확인"])},registration:r=>{const{normalize:n}=r;return n(["가입하기"])},token:r=>{const{normalize:n}=r;return n(["초대 토큰"])},captcha:r=>{const{normalize:n}=r;return n(["캡차"])},new_captcha:r=>{const{normalize:n}=r;return n(["이미지를 클릭해서 새로운 캡차 가져오기"])},validations:{username_required:r=>{const{normalize:n}=r;return n(["공백으로 둘 수 없습니다"])},fullname_required:r=>{const{normalize:n}=r;return n(["공백으로 둘 수 없습니다"])},email_required:r=>{const{normalize:n}=r;return n(["공백으로 둘 수 없습니다"])},password_required:r=>{const{normalize:n}=r;return n(["공백으로 둘 수 없습니다"])},password_confirmation_required:r=>{const{normalize:n}=r;return n(["공백으로 둘 수 없습니다"])},password_confirmation_match:r=>{const{normalize:n}=r;return n(["패스워드와 일치해야 합니다"])}},fullname_placeholder:r=>{const{normalize:n}=r;return n(["예: 김례인"])},username_placeholder:r=>{const{normalize:n}=r;return n(["예: lain"])},bio_placeholder:r=>{const{normalize:n}=r;return n(["예시\n안녕하세요, 례인입니다.\n일본 시외에서 애니메이션 아이돌을 하고 있습니다. Wired에서 절 보셨을 거예요."])},bio_optional:r=>{const{normalize:n}=r;return n(["소개 (선택)"])},email_optional:r=>{const{normalize:n}=r;return n(["이메일 (선택)"])},reason:r=>{const{normalize:n}=r;return n(["가입하려는 이유"])},reason_placeholder:r=>{const{normalize:n}=r;return n(["이 인스턴스는 수동으로 가입을 승인하고 있습니다.\n왜 가입하고 싶은지 관리자에게 알려주세요."])},register:r=>{const{normalize:n}=r;return n(["가입"])},email_language:r=>{const{normalize:n}=r;return n(["무슨 언어로 이메일을 받길 원하시나요?"])}},settings:{attachmentRadius:r=>{const{normalize:n}=r;return n(["첨부물"])},attachments:r=>{const{normalize:n}=r;return n(["첨부물"])},avatar:r=>{const{normalize:n}=r;return n(["프로필 사진"])},avatarAltRadius:r=>{const{normalize:n}=r;return n(["프로필 사진 (알림창)"])},avatarRadius:r=>{const{normalize:n}=r;return n(["프로필 사진"])},background:r=>{const{normalize:n}=r;return n(["배경"])},bio:r=>{const{normalize:n}=r;return n(["소개"])},btnRadius:r=>{const{normalize:n}=r;return n(["버튼"])},cBlue:r=>{const{normalize:n}=r;return n(["파랑 (답글, 팔로우)"])},cGreen:r=>{const{normalize:n}=r;return n(["초록 (리트윗)"])},cOrange:r=>{const{normalize:n}=r;return n(["주황 (관심글)"])},cRed:r=>{const{normalize:n}=r;return n(["빨강 (취소)"])},change_password:r=>{const{normalize:n}=r;return n(["패스워드 바꾸기"])},change_password_error:r=>{const{normalize:n}=r;return n(["패스워드를 바꾸는 데 문제가 있습니다."])},changed_password:r=>{const{normalize:n}=r;return n(["패스워드가 바뀌었습니다!"])},collapse_subject:r=>{const{normalize:n}=r;return n(["제목이 있는 게시물 접기"])},composing:r=>{const{normalize:n}=r;return n(["작성"])},confirm_new_password:r=>{const{normalize:n}=r;return n(["새 패스워드 확인"])},current_avatar:r=>{const{normalize:n}=r;return n(["현재 아바타"])},current_password:r=>{const{normalize:n}=r;return n(["현재 패스워드"])},current_profile_banner:r=>{const{normalize:n}=r;return n(["현재 프로필 배너"])},data_import_export_tab:r=>{const{normalize:n}=r;return n(["데이터 불러오기 / 내보내기"])},default_vis:r=>{const{normalize:n}=r;return n(["기본 공개 범위"])},delete_account:r=>{const{normalize:n}=r;return n(["계정 삭제"])},delete_account_description:r=>{const{normalize:n}=r;return n(["데이터가 영구히 삭제되고 계정이 비활성화됩니다."])},delete_account_error:r=>{const{normalize:n}=r;return n(["계정을 삭제하는데 문제가 있습니다. 계속 발생한다면 인스턴스 관리자에게 문의하세요."])},delete_account_instructions:r=>{const{normalize:n}=r;return n(["아래 패스워드를 입력하시면 계정이 삭제됩니다."])},export_theme:r=>{const{normalize:n}=r;return n(["프리셋 저장"])},filtering:r=>{const{normalize:n}=r;return n(["필터링"])},filtering_explanation:r=>{const{normalize:n}=r;return n(["이 단어를 가진 게시물들은 뮤트됩니다, 한 줄에 하나씩 적으세요"])},follow_export:r=>{const{normalize:n}=r;return n(["팔로우 내보내기"])},follow_export_button:r=>{const{normalize:n}=r;return n(["팔로우 목록을 CSV 파일로 내보내기"])},follow_export_processing:r=>{const{normalize:n}=r;return n(["진행 중입니다, 곧 다운로드 가능해 질 것입니다"])},follow_import:r=>{const{normalize:n}=r;return n(["팔로우 불러오기"])},follow_import_error:r=>{const{normalize:n}=r;return n(["팔로우 불러오기 실패"])},follows_imported:r=>{const{normalize:n}=r;return n(["팔로우 목록을 불러왔습니다! 처리에는 시간이 걸립니다."])},foreground:r=>{const{normalize:n}=r;return n(["표면"])},general:r=>{const{normalize:n}=r;return n(["일반"])},hide_attachments_in_convo:r=>{const{normalize:n}=r;return n(["대화의 첨부물 숨기기"])},hide_attachments_in_tl:r=>{const{normalize:n}=r;return n(["타임라인의 첨부물 숨기기"])},hide_isp:r=>{const{normalize:n}=r;return n(["인스턴스 전용 패널 숨기기"])},preload_images:r=>{const{normalize:n}=r;return n(["이미지 미리 불러오기"])},hide_post_stats:r=>{const{normalize:n}=r;return n(["게시물 통계 숨기기 (관심글 수 등)"])},hide_user_stats:r=>{const{normalize:n}=r;return n(["사용자 통계 숨기기 (팔로워 수 등)"])},import_followers_from_a_csv_file:r=>{const{normalize:n}=r;return n(["CSV 파일에서 팔로우 목록 불러오기"])},import_theme:r=>{const{normalize:n}=r;return n(["프리셋 불러오기"])},inputRadius:r=>{const{normalize:n}=r;return n(["입력 칸"])},checkboxRadius:r=>{const{normalize:n}=r;return n(["체크박스"])},instance_default:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["(기본: ",e(t("value")),")"])},instance_default_simple:r=>{const{normalize:n}=r;return n(["(기본)"])},interface:r=>{const{normalize:n}=r;return n(["인터페이스"])},interfaceLanguage:r=>{const{normalize:n}=r;return n(["인터페이스 언어"])},invalid_theme_imported:r=>{const{normalize:n}=r;return n(["해당 파일은 지원되지 않는 Pleroma 테마입니다. 아무 일도 일어나지 않았습니다."])},limited_availability:r=>{const{normalize:n}=r;return n(["이 브라우저에서 사용 불가"])},links:r=>{const{normalize:n}=r;return n(["링크"])},lock_account_description:r=>{const{normalize:n}=r;return n(["팔로워를 승인해서 받도록 제한"])},loop_video:r=>{const{normalize:n}=r;return n(["비디오 반복재생"])},loop_video_silent_only:r=>{const{normalize:n}=r;return n(['소리가 없는 비디오만 반복 재생 (마스토돈의 "GIF" 같은 것들)'])},name:r=>{const{normalize:n}=r;return n(["이름"])},name_bio:r=>{const{normalize:n}=r;return n(["이름 & 소개"])},new_password:r=>{const{normalize:n}=r;return n(["새 패스워드"])},notification_visibility:r=>{const{normalize:n}=r;return n(["보여질 알림 종류"])},notification_visibility_follows:r=>{const{normalize:n}=r;return n(["팔로우"])},notification_visibility_likes:r=>{const{normalize:n}=r;return n(["관심글"])},notification_visibility_mentions:r=>{const{normalize:n}=r;return n(["멘션"])},notification_visibility_repeats:r=>{const{normalize:n}=r;return n(["리핏"])},no_rich_text_description:r=>{const{normalize:n}=r;return n(["모든 게시물의 서식을 지우기"])},hide_follows_description:r=>{const{normalize:n}=r;return n(["팔로우 중인 사람 숨기기"])},hide_followers_description:r=>{const{normalize:n}=r;return n(["팔로워 숨기기"])},nsfw_clickthrough:r=>{const{normalize:n}=r;return n(["민감한 이미지를 숨기기"])},oauth_tokens:r=>{const{normalize:n}=r;return n(["OAuth 토큰"])},token:r=>{const{normalize:n}=r;return n(["토큰"])},refresh_token:r=>{const{normalize:n}=r;return n(["토큰 새로 고침"])},valid_until:r=>{const{normalize:n}=r;return n(["만료일"])},revoke_token:r=>{const{normalize:n}=r;return n(["취소"])},panelRadius:r=>{const{normalize:n}=r;return n(["패널"])},pause_on_unfocused:r=>{const{normalize:n}=r;return n(["탭이 포커스되지 않았을 땐 멈추기"])},presets:r=>{const{normalize:n}=r;return n(["프리셋"])},profile_background:r=>{const{normalize:n}=r;return n(["프로필 배경"])},profile_banner:r=>{const{normalize:n}=r;return n(["프로필 배너"])},profile_tab:r=>{const{normalize:n}=r;return n(["프로필"])},radii_help:r=>{const{normalize:n}=r;return n(["인터페이스 모서리 둥글기 (픽셀 단위)"])},replies_in_timeline:r=>{const{normalize:n}=r;return n(["타임라인의 답글"])},reply_visibility_all:r=>{const{normalize:n}=r;return n(["모든 답글 보기"])},reply_visibility_following:r=>{const{normalize:n}=r;return n(["나에게 직접 오거나 내가 팔로우 중인 사람이 보낸 답글만 보기"])},reply_visibility_self:r=>{const{normalize:n}=r;return n(["나에게 직접 온 답글만 보기"])},saving_err:r=>{const{normalize:n}=r;return n(["설정을 저장하는 데 에러가 발생했습니다"])},saving_ok:r=>{const{normalize:n}=r;return n(["설정 저장 됨"])},security_tab:r=>{const{normalize:n}=r;return n(["보안"])},scope_copy:r=>{const{normalize:n}=r;return n(["답글을 달 때 공개 범위 따라가기 (다이렉트 메시지는 언제나 따라감)"])},set_new_avatar:r=>{const{normalize:n}=r;return n(["새 프로필 사진 설정"])},set_new_profile_background:r=>{const{normalize:n}=r;return n(["새 프로필 배경 설정"])},set_new_profile_banner:r=>{const{normalize:n}=r;return n(["새 프로필 배너 설정"])},settings:r=>{const{normalize:n}=r;return n(["설정"])},subject_input_always_show:r=>{const{normalize:n}=r;return n(["항상 제목 입력창 보이기"])},subject_line_behavior:r=>{const{normalize:n}=r;return n(["답글을 달 때 제목 복사하기"])},subject_line_email:r=>{const{normalize:n}=r;return n(['이메일처럼: "re: 제목"'])},subject_line_mastodon:r=>{const{normalize:n}=r;return n(["마스토돈처럼: 그대로 복사"])},subject_line_noop:r=>{const{normalize:n}=r;return n(["복사 안 함"])},stop_gifs:r=>{const{normalize:n}=r;return n(["마우스를 올려서 GIF 재생"])},streaming:r=>{const{normalize:n}=r;return n(["최상단에 도달하면 알아서 새 게시물 가져오기"])},text:r=>{const{normalize:n}=r;return n(["텍스트"])},theme:r=>{const{normalize:n}=r;return n(["테마"])},theme_help:r=>{const{normalize:n}=r;return n(["16진수 색상코드(#rrggbb)를 사용해 색상을 조정하세요."])},theme_help_v2_1:r=>{const{normalize:n}=r;return n(['체크박스를 통해 몇몇 컴포넌트의 색상과 불투명도를 조절 가능, "모두 지우기" 버튼으로 덮어 씌운 것을 모두 취소.'])},theme_help_v2_2:r=>{const{normalize:n}=r;return n(["몇몇 입력칸 밑의 아이콘은 전경/배경 대비 관련 표시등입니다, 마우스를 올려 자세한 정보를 볼 수 있습니다. 투명도 대비 표시등이 가장 최악의 경우를 나타낸다는 것을 유의하세요."])},tooltipRadius:r=>{const{normalize:n}=r;return n(["툴팁/경고"])},user_settings:r=>{const{normalize:n}=r;return n(["사용자 설정"])},values:{false:r=>{const{normalize:n}=r;return n(["아니오"])},true:r=>{const{normalize:n}=r;return n(["네"])}},notifications:r=>{const{normalize:n}=r;return n(["알림"])},enable_web_push_notifications:r=>{const{normalize:n}=r;return n(["웹 푸시 알림 활성화"])},style:{switcher:{keep_color:r=>{const{normalize:n}=r;return n(["색상 유지"])},keep_shadows:r=>{const{normalize:n}=r;return n(["그림자 유지"])},keep_opacity:r=>{const{normalize:n}=r;return n(["불투명도 유지"])},keep_roundness:r=>{const{normalize:n}=r;return n(["둥글기 유지"])},keep_fonts:r=>{const{normalize:n}=r;return n(["글꼴 유지"])},save_load_hint:r=>{const{normalize:n}=r;return n(['"유지" 옵션들은 다른 테마를 고르거나 불러 올 때 현재 설정 된 옵션들을 건드리지 않게 합니다, 테마를 내보내기 할 때도 이 옵션에 따라 저장합니다. 아무 것도 체크 되지 않았다면 모든 설정을 내보냅니다.'])},reset:r=>{const{normalize:n}=r;return n(["초기화"])},clear_all:r=>{const{normalize:n}=r;return n(["모두 지우기"])},clear_opacity:r=>{const{normalize:n}=r;return n(["불투명도 지우기"])},help:{upgraded_from_v2:r=>{const{normalize:n}=r;return n(["PleromaFE가 업그레이드 되었기에, 테마가 기억하시던 것과 조금 다를 수 있습니다."])},v2_imported:r=>{const{normalize:n}=r;return n(["불러온 파일은 이곳보다 이전 버전의 FE에서 만들어졌습니다. 호환성을 유지하겠지만 깨진 부분이 있을 수 있습니다."])},migration_snapshot_ok:r=>{const{normalize:n}=r;return n(["혹시나 싶어서, 테마 스냅샷을 불러왔습니다. 테마 데이터를 불러와도 됩니다."])},snapshot_source_mismatch:r=>{const{normalize:n}=r;return n(["버전이 충돌됩니다: 아마 FE가 롤백되고 다시 업데이트 되어서일 건데, 이전 버전 FE로 테마를 수정했다면 이전 버전 FE를 써보시는 게 좋고, 아니면 새 버전을 쓰세요."])},future_version_imported:r=>{const{normalize:n}=r;return n(["불러온 파일은 이곳보다 새 버전의 FE에서 만들어졌습니다."])},older_version_imported:r=>{const{normalize:n}=r;return n(["불러온 파일은 이곳보다 이전 버전의 FE에서 만들어졌습니다."])},snapshot_present:r=>{const{normalize:n}=r;return n(["테마 스냅샷이 있어서, 모든 값이 덮어 씌워졌습니다. 직접 테마의 실제 데이터를 대신 불러와도 됩니다."])},snapshot_missing:r=>{const{normalize:n}=r;return n(["파일에 스냅샷이 없어서 원래 보였던 것보다 다르게 보일 수 있습니다."])},fe_upgraded:r=>{const{normalize:n}=r;return n(["버전 업데이트로 PleromaFE의 테마 엔진이 업그레이드 되었습니다."])},fe_downgraded:r=>{const{normalize:n}=r;return n(["PleromaFE의 버전이 롤백되었습니다."])},migration_napshot_gone:r=>{const{normalize:n}=r;return n(["뭔 일인진 모르겠지만 스냅샷이 없어서, 몇몇 개가 기억하신 것과 달리 보일 수 있습니다."])}},load_theme:r=>{const{normalize:n}=r;return n(["테마 불러오기"])},keep_as_is:r=>{const{normalize:n}=r;return n(["그대로 두기"])},use_snapshot:r=>{const{normalize:n}=r;return n(["이전 버전"])},use_source:r=>{const{normalize:n}=r;return n(["새 버전"])}},common:{color:r=>{const{normalize:n}=r;return n(["색상"])},opacity:r=>{const{normalize:n}=r;return n(["불투명도"])},contrast:{hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["색상 대비율이 ",e(t("ratio")),"입니다, ",e(t("context"))," ",e(t("level"))])},level:{aa:r=>{const{normalize:n}=r;return n(["접근성 가이드라인 AA등급을 충족합니다 (최소)"])},aaa:r=>{const{normalize:n}=r;return n(["접근성 가이드라인 AAA등급을 충족합니다 (권장)"])},bad:r=>{const{normalize:n}=r;return n(["접근성 가이드라인을 충족하지 못합니다"])}},context:{"18pt":r=>{const{normalize:n}=r;return n(["큰 (18pt 이상) 텍스트에 대해"])},text:r=>{const{normalize:n}=r;return n(["일반 텍스트에 대해"])}}}},common_colors:{_tab_label:r=>{const{normalize:n}=r;return n(["일반"])},main:r=>{const{normalize:n}=r;return n(["일반 색상"])},foreground_hint:r=>{const{normalize:n}=r;return n(['"고급" 탭에서 더 자세한 설정이 가능합니다'])},rgbo:r=>{const{normalize:n}=r;return n(["아이콘, 강조, 배지"])}},advanced_colors:{_tab_label:r=>{const{normalize:n}=r;return n(["고급"])},alert:r=>{const{normalize:n}=r;return n(["주의 배경"])},alert_error:r=>{const{normalize:n}=r;return n(["에러"])},badge:r=>{const{normalize:n}=r;return n(["배지 배경"])},badge_notification:r=>{const{normalize:n}=r;return n(["알림"])},panel_header:r=>{const{normalize:n}=r;return n(["패널 헤더"])},top_bar:r=>{const{normalize:n}=r;return n(["상단 바"])},borders:r=>{const{normalize:n}=r;return n(["테두리"])},buttons:r=>{const{normalize:n}=r;return n(["버튼"])},inputs:r=>{const{normalize:n}=r;return n(["입력칸"])},faint_text:r=>{const{normalize:n}=r;return n(["흐려진 텍스트"])},chat:{border:r=>{const{normalize:n}=r;return n(["경계선"])},outgoing:r=>{const{normalize:n}=r;return n(["보냄"])},incoming:r=>{const{normalize:n}=r;return n(["받음"])}},selectedMenu:r=>{const{normalize:n}=r;return n(["선택된 메뉴 요소"])},selectedPost:r=>{const{normalize:n}=r;return n(["선택된 글"])},icons:r=>{const{normalize:n}=r;return n(["아이콘"])},alert_warning:r=>{const{normalize:n}=r;return n(["경고"])},alert_neutral:r=>{const{normalize:n}=r;return n(["중립적"])},post:r=>{const{normalize:n}=r;return n(["게시물 / 유저 소개"])},popover:r=>{const{normalize:n}=r;return n(["툴팁, 메뉴, 프로필 카드"])},disabled:r=>{const{normalize:n}=r;return n(["비활성화"])},wallpaper:r=>{const{normalize:n}=r;return n(["배경사진"])},poll:r=>{const{normalize:n}=r;return n(["투표 그래프"])},highlight:r=>{const{normalize:n}=r;return n(["강조 요소"])},pressed:r=>{const{normalize:n}=r;return n(["눌렸을 때"])},toggled:r=>{const{normalize:n}=r;return n(["토글됨"])},tabs:r=>{const{normalize:n}=r;return n(["탭"])}},radii:{_tab_label:r=>{const{normalize:n}=r;return n(["둥글기"])}},shadows:{_tab_label:r=>{const{normalize:n}=r;return n(["그림자와 빛"])},component:r=>{const{normalize:n}=r;return n(["컴포넌트"])},override:r=>{const{normalize:n}=r;return n(["덮어쓰기"])},shadow_id:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["그림자 #",e(t("value"))])},blur:r=>{const{normalize:n}=r;return n(["흐리기"])},spread:r=>{const{normalize:n}=r;return n(["퍼지기"])},inset:r=>{const{normalize:n}=r;return n(["안쪽으로"])},hint:r=>{const{normalize:n}=r;return n(["그림자에는 CSS3 변수를 --variable을 통해 색상 값으로 사용할 수 있습니다. 불투명도에는 적용 되지 않습니다."])},filter_hint:{always_drop_shadow:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["경고, 이 그림자는 브라우저가 지원하는 경우 항상 ",e(t(0)),"을 사용합니다."])},drop_shadow_syntax:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"는 ",e(t(1))," 파라미터와 ",e(t(2))," 키워드를 지원하지 않습니다."])},avatar_inset:r=>{const{normalize:n}=r;return n(["안쪽과 안쪽이 아닌 그림자를 모두 설정하는 경우 투명 아바타에서 예상치 못 한 결과가 나올 수 있다는 것에 주의해 주세요."])},spread_zero:r=>{const{normalize:n}=r;return n(["퍼지기가 0보다 큰 그림자는 0으로 설정한 것과 동일하게 보여집니다"])},inset_classic:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["안쪽 그림자는 ",e(t(0)),"를 사용합니다"])}},components:{panel:r=>{const{normalize:n}=r;return n(["패널"])},panelHeader:r=>{const{normalize:n}=r;return n(["패널 헤더"])},topBar:r=>{const{normalize:n}=r;return n(["상단 바"])},avatar:r=>{const{normalize:n}=r;return n(["사용자 아바타 (프로필 뷰에서)"])},avatarStatus:r=>{const{normalize:n}=r;return n(["사용자 아바타 (게시물에서)"])},popup:r=>{const{normalize:n}=r;return n(["팝업과 툴팁"])},button:r=>{const{normalize:n}=r;return n(["버튼"])},buttonHover:r=>{const{normalize:n}=r;return n(["버튼 (마우스 올렸을 때)"])},buttonPressed:r=>{const{normalize:n}=r;return n(["버튼 (눌렸을 때)"])},buttonPressedHover:r=>{const{normalize:n}=r;return n(["버튼 (마우스 올림 + 눌림)"])},input:r=>{const{normalize:n}=r;return n(["입력칸"])}},hintV3:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["그림자의 경우 ",e(t(0))," 표기법으로 다른 컬러 슬롯을 사용할 수 있습니다."])}},fonts:{_tab_label:r=>{const{normalize:n}=r;return n(["글꼴"])},help:r=>{const{normalize:n}=r;return n(['화면에 적용할 글꼴을 고르세요. "직접 입력"은 시스템에 있는 글꼴 이름을 정확히 입력해야 합니다.'])},components:{interface:r=>{const{normalize:n}=r;return n(["인터페이스"])},input:r=>{const{normalize:n}=r;return n(["입력칸"])},post:r=>{const{normalize:n}=r;return n(["게시물 텍스트"])},postCode:r=>{const{normalize:n}=r;return n(["게시물의 고정폭 텍스트 (서식 있는 텍스트)"])}},family:r=>{const{normalize:n}=r;return n(["글꼴 이름"])},size:r=>{const{normalize:n}=r;return n(["크기 (px 단위)"])},weight:r=>{const{normalize:n}=r;return n(["굵기"])},custom:r=>{const{normalize:n}=r;return n(["직접 입력"])}},preview:{header:r=>{const{normalize:n}=r;return n(["미리보기"])},content:r=>{const{normalize:n}=r;return n(["내용"])},error:r=>{const{normalize:n}=r;return n(["에러 예시"])},button:r=>{const{normalize:n}=r;return n(["버튼"])},text:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["더 많은 ",e(t(0))," 그리고 ",e(t(1))])},mono:r=>{const{normalize:n}=r;return n(["내용"])},input:r=>{const{normalize:n}=r;return n(["인천공항에 도착했습니다."])},faint_link:r=>{const{normalize:n}=r;return n(["도움 되는 설명서"])},fine_print:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["우리의 ",e(t(0)),"를 읽고 도움 되지 않는 것들을 배우자!"])},header_faint:r=>{const{normalize:n}=r;return n(["괜찮은 텍스트"])},checkbox:r=>{const{normalize:n}=r;return n(["나는 약관을 대충 훑어보았습니다"])},link:r=>{const{normalize:n}=r;return n(["작고 귀여운 링크"])}}},block_export:r=>{const{normalize:n}=r;return n(["차단 목록 내보내기"])},mfa:{scan:{secret_code:r=>{const{normalize:n}=r;return n(["키"])},title:r=>{const{normalize:n}=r;return n(["스캔"])},desc:r=>{const{normalize:n}=r;return n(["2단계 인증 앱을 통해 QR 코드를 찍거나 키를 입력하세요:"])}},authentication_methods:r=>{const{normalize:n}=r;return n(["인증 방법"])},waiting_a_recovery_codes:r=>{const{normalize:n}=r;return n(["복구 코드를 가져오고 있습니다…"])},recovery_codes:r=>{const{normalize:n}=r;return n(["복구 코드."])},generate_new_recovery_codes:r=>{const{normalize:n}=r;return n(["새 복구 코드 생성"])},title:r=>{const{normalize:n}=r;return n(["2단계 인증"])},confirm_and_enable:r=>{const{normalize:n}=r;return n(["확인 & OTP 활성화"])},setup_otp:r=>{const{normalize:n}=r;return n(["OTP 설정"])},otp:r=>{const{normalize:n}=r;return n(["OTP"])},warning_of_generate_new_codes:r=>{const{normalize:n}=r;return n(["새 복구 코드를 생성하면, 이전 코드는 작동하지 않게 됩니다."])},recovery_codes_warning:r=>{const{normalize:n}=r;return n(["복구 코드를 어딘가 안전한 곳에 적어 놓으세요 - 더 이상 이 코드를 보실 순 없습니다. 만약 2단계 인증 앱과 복구 코드 둘 다 접근할 수 없게 된다면 계정에 로그인할 수 없게 됩니다."])},verify:{desc:r=>{const{normalize:n}=r;return n(["활성화하려면 2단계 인증 앱에서 받은 코드를 입력하세요:"])}}},security:r=>{const{normalize:n}=r;return n(["보안"])},emoji_reactions_on_timeline:r=>{const{normalize:n}=r;return n(["에모지 반응을 타임라인에 표시"])},avatar_size_instruction:r=>{const{normalize:n}=r;return n(["최소 150x150 픽셀보다 큰 사진을 업로드하시면 좋습니다."])},blocks_tab:r=>{const{normalize:n}=r;return n(["차단"])},notification_setting_privacy:r=>{const{normalize:n}=r;return n(["보안"])},user_mutes:r=>{const{normalize:n}=r;return n(["사용자"])},notification_visibility_emoji_reactions:r=>{const{normalize:n}=r;return n(["반응"])},profile_fields:{value:r=>{const{normalize:n}=r;return n(["내용"])},label:r=>{const{normalize:n}=r;return n(["프로필 추가정보"])},add_field:r=>{const{normalize:n}=r;return n(["필드 추가"])},name:r=>{const{normalize:n}=r;return n(["라벨"])}},mutes_and_blocks:r=>{const{normalize:n}=r;return n(["뮤트와 차단"])},chatMessageRadius:r=>{const{normalize:n}=r;return n(["채팅 메시지"])},change_email:r=>{const{normalize:n}=r;return n(["메일 주소 바꾸기"])},changed_email:r=>{const{normalize:n}=r;return n(["메일 주소가 바뀌었습니다!"])},bot:r=>{const{normalize:n}=r;return n(["이 계정은 자동 봇입니다"])},mutes_tab:r=>{const{normalize:n}=r;return n(["뮤트"])},app_name:r=>{const{normalize:n}=r;return n(["앱 이름"])},notification_setting_block_from_strangers:r=>{const{normalize:n}=r;return n(["팔로하지 않은 계정에서 보내는 알림 차단"])},autohide_floating_post_button:r=>{const{normalize:n}=r;return n(["알아서 새 게시물 버튼 숨기기 (모바일)"])},blocks_imported:r=>{const{normalize:n}=r;return n(["차단 목록을 가져왔습니다! 처리하는 데에 시간이 걸릴 수 있습니다."])},mutes_imported:r=>{const{normalize:n}=r;return n(["뮤트 목록을 가져왔습니다! 처리하는 데에 시간이 걸릴 수 있습니다."])},account_backup_description:r=>{const{normalize:n}=r;return n(["내 계정 정보와 게시물이 담긴 아카이브를 다운로드 받을 수 있지만, 아직 Pleroma로 다시 불러오는 기능은 지원하지 않습니다."])},move_account_notes:r=>{const{normalize:n}=r;return n(["계정을 다른 곳으로 이사하려면, 이사 갈 계정으로 가셔서 별칭이 이 계정을 가리키도록 하세요."])},hide_bot_indication:r=>{const{normalize:n}=r;return n(["게시물에서 봇 알림 숨기기"])},navbar_column_stretch:r=>{const{normalize:n}=r;return n(["상단 바를 컬럼 너비만큼 늘리기"])},show_admin_badge:r=>{const{normalize:n}=r;return n(['내 프로필에 "관리자" 배지 달기'])},sensitive_by_default:r=>{const{normalize:n}=r;return n(["게시물을 민감함으로 기본 설정"])},notification_mutes:r=>{const{normalize:n}=r;return n(["특정 사용자의 알림을 받지 않으려면, 뮤트를 사용하세요."])},mention_link_fade_domain:r=>{const{normalize:n}=r;return n(["흐려진 도메인 (예: ","@","foo","@","example.org 에서의 ","@","example.org)"])},notification_blocks:r=>{const{normalize:n}=r;return n(["사용자를 차단하면 알림을 받지 않는데다 구독까지 취소하게 됩니다."])},conversation_display_tree:r=>{const{normalize:n}=r;return n(["트리"])},save:r=>{const{normalize:n}=r;return n(["변경 사항을 저장"])},allow_following_move:r=>{const{normalize:n}=r;return n(["팔로우 중인 계정이 이사를 하면 자동으로 팔로우하기"])},expert_mode:r=>{const{normalize:n}=r;return n(["고급 설정 보기"])},setting_changed:r=>{const{normalize:n}=r;return n(["기본 설정과 다릅니다"])},setting_server_side:r=>{const{normalize:n}=r;return n(["이 설정은 계정과 묶여 있으며 연결된 모든 세션과 클라이언트에 영향을 줍니다"])},enter_current_password_to_confirm:r=>{const{normalize:n}=r;return n(["본인 확인을 위해 현재 패스워드를 입력하세요"])},post_look_feel:r=>{const{normalize:n}=r;return n(["게시물 모양새"])},mention_links:r=>{const{normalize:n}=r;return n(["멘션 링크"])},lists_navigation:r=>{const{normalize:n}=r;return n(["메뉴에 리스트 보이기"])},email_language:r=>{const{normalize:n}=r;return n(["서버로부터 이메일을 받을 언어"])},block_import:r=>{const{normalize:n}=r;return n(["차단 목록 가져오기"])},block_export_button:r=>{const{normalize:n}=r;return n(["차단 목록을 CSV 파일로 내보내기"])},block_import_error:r=>{const{normalize:n}=r;return n(["차단 목록을 가져오는 데에 문제가 발생했습니다"])},mute_export:r=>{const{normalize:n}=r;return n(["뮤트 목록 내보내기"])},mute_export_button:r=>{const{normalize:n}=r;return n(["뮤트 목록을 CSV 파일로 내보내기"])},mute_import:r=>{const{normalize:n}=r;return n(["뮤트 목록 가져오기"])},mute_import_error:r=>{const{normalize:n}=r;return n(["뮤트 목록을 가져오는 데에 문제가 발생했습니다"])},import_mutes_from_a_csv_file:r=>{const{normalize:n}=r;return n(["뮤트 목록을 CSV 파일에서 가져오기"])},account_backup:r=>{const{normalize:n}=r;return n(["계정 백업"])},account_backup_table_head:r=>{const{normalize:n}=r;return n(["백업"])},download_backup:r=>{const{normalize:n}=r;return n(["다운로드"])},backup_not_ready:r=>{const{normalize:n}=r;return n(["백업이 아직 준비되지 않았습니다."])},remove_backup:r=>{const{normalize:n}=r;return n(["삭제"])},list_backups_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["백업 리스트를 가져오는 데 에러가 발생했습니다: ",e(t("error"))])},add_backup:r=>{const{normalize:n}=r;return n(["새 백업 만들기"])},added_backup:r=>{const{normalize:n}=r;return n(["새 백업 추가됨."])},add_backup_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["새 백업을 추가하는 데 에러가 발생했습니다: ",e(t("error"))])},change_email_error:r=>{const{normalize:n}=r;return n(["메일 주소를 바꾸는 데 문제가 있습니다."])},account_alias:r=>{const{normalize:n}=r;return n(["계정 별칭"])},always_show_post_button:r=>{const{normalize:n}=r;return n(["항상 떠다니는 게시물 작성 버튼 보기"])},mute_bot_posts:r=>{const{normalize:n}=r;return n(["봇 게시물 뮤트하기"])},hide_all_muted_posts:r=>{const{normalize:n}=r;return n(["뮤트한 게시물 숨기기"])},account_alias_table_head:r=>{const{normalize:n}=r;return n(["별칭"])},hide_list_aliases_error_action:r=>{const{normalize:n}=r;return n(["닫기"])},remove_alias:r=>{const{normalize:n}=r;return n(["이 별칭 삭제"])},new_alias_target:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["새 별칭 추가 (예시. ",e(t("example")),")"])},added_alias:r=>{const{normalize:n}=r;return n(["별칭이 추가되었습니다."])},move_account:r=>{const{normalize:n}=r;return n(["계정 이사"])},move_account_target:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["이사 갈 계정 (예시. ",e(t("example")),")"])},moved_account:r=>{const{normalize:n}=r;return n(["계정을 이사했습니다."])},discoverable:r=>{const{normalize:n}=r;return n(["검색 결과나 다른 서비스들에서 이 계정을 찾을 수 있도록 허용"])},pad_emoji:r=>{const{normalize:n}=r;return n(["에모지를 선택창에서 고를 때 띄어쓰기를 집어넣기"])},wordfilter:r=>{const{normalize:n}=r;return n(["단어 필터"])},word_filter_and_more:r=>{const{normalize:n}=r;return n(["단어 필터 그리고 더보기..."])},accent:r=>{const{normalize:n}=r;return n(["강조"])},hide_media_previews:r=>{const{normalize:n}=r;return n(["미디어 미리보기 숨기기"])},max_thumbnails:r=>{const{normalize:n}=r;return n(["게시물 하나 당 최대로 보여질 섬네일 개수 (비워두면 제한을 두지 않습니다)"])},hide_shoutbox:r=>{const{normalize:n}=r;return n(["인스턴스 외치기 숨기기"])},right_sidebar:r=>{const{normalize:n}=r;return n(["컬럼 순서 뒤집기"])},hide_wallpaper:r=>{const{normalize:n}=r;return n(["인스턴스 배경화면 가리기"])},use_one_click_nsfw:r=>{const{normalize:n}=r;return n(["민감한 첨부물을 클릭 한 번으로 열기"])},move_account_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["계정을 이사하는 데 에러가 발생했습니다: ",e(t("error"))])},hide_muted_posts:r=>{const{normalize:n}=r;return n(["뮤트한 사용자의 게시물 숨기기"])},hide_filtered_statuses:r=>{const{normalize:n}=r;return n(["필터된 모든 게시물 숨기기"])},hide_wordfiltered_statuses:r=>{const{normalize:n}=r;return n(["단어 필터된 게시물 숨기기"])},use_contain_fit:r=>{const{normalize:n}=r;return n(["첨부파일의 섬네일을 자르지 않음"])},hide_muted_threads:r=>{const{normalize:n}=r;return n(["뮤트한 스레드 숨기기"])},import_blocks_from_a_csv_file:r=>{const{normalize:n}=r;return n(["CSV 파일에서 차단 목록 불러오기"])},play_videos_in_modal:r=>{const{normalize:n}=r;return n(["팝업 프레임에서 비디오를 재생"])},file_export_import:{backup_restore:r=>{const{normalize:n}=r;return n(["설정 백업"])},backup_settings:r=>{const{normalize:n}=r;return n(["설정을 파일로 백업"])},backup_settings_theme:r=>{const{normalize:n}=r;return n(["설정과 테마를 파일로 백업"])},restore_settings:r=>{const{normalize:n}=r;return n(["파일에서 설정 복구하기"])},errors:{invalid_file:r=>{const{normalize:n}=r;return n(["해당 파일은 지원되지 않는 Pleroma 백업입니다. 아무 일도 일어나지 않았습니다."])},file_too_new:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["호환되지 않는 버전: ",e(t("fileMajor")),", 이 PleromaFE (설정 버전 ",e(t("feMajor")),") 가 너무 낡아서 처리할 수 없습니다"])},file_too_old:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["호환되지 않는 버전: ",e(t("fileMajor")),", 파일 버전이 너무 낡아서 처리할 수 없습니다 (지원되는 최소 설정 버전 ",e(t("feMajor")),")"])},file_slightly_new:r=>{const{normalize:n}=r;return n(["파일 마이너 버전이 달라서, 몇몇 설정들이 적용되지 않았을 수 있습니다"])}}},account_privacy:r=>{const{normalize:n}=r;return n(["사생활 보안"])},new_email:r=>{const{normalize:n}=r;return n(["새 메일 주소"])},hide_favorites_description:r=>{const{normalize:n}=r;return n(["내 관심글을 보이지 않음 (알림은 갑니다)"])},hide_follows_count_description:r=>{const{normalize:n}=r;return n(["팔로우 중 숫자 숨기기"])},hide_followers_count_description:r=>{const{normalize:n}=r;return n(["팔로워 숫자 숨기기"])},no_mutes:r=>{const{normalize:n}=r;return n(["뮤트 없음"])},search_user_to_block:r=>{const{normalize:n}=r;return n(["차단할 사람 검색하기"])},search_user_to_mute:r=>{const{normalize:n}=r;return n(["뮤트할 사람 검색하기"])},posts:r=>{const{normalize:n}=r;return n(["게시물"])},notification_visibility_moves:r=>{const{normalize:n}=r;return n(["계정 이사"])},notification_visibility_polls:r=>{const{normalize:n}=r;return n(["참여한 투표가 끝남"])},no_blocks:r=>{const{normalize:n}=r;return n(["차단 없음"])},reply_visibility_self_short:r=>{const{normalize:n}=r;return n(["내 답글만 보기"])},reply_visibility_following_short:r=>{const{normalize:n}=r;return n(["팔로우 중인 사람들끼리의 답글 보기"])},user_profiles:r=>{const{normalize:n}=r;return n(["사용자 프로필"])},show_moderator_badge:r=>{const{normalize:n}=r;return n(['내 프로필에 "중재자" 배지 달기'])},type_domains_to_mute:r=>{const{normalize:n}=r;return n(["뮤트할 도메인 검색하기"])},disable_sticky_headers:r=>{const{normalize:n}=r;return n(["컬럼 헤더를 화면 상단에 고정하지 않음"])},auto_update:r=>{const{normalize:n}=r;return n(["알아서 새 게시물 가져오기"])},minimal_scopes_mode:r=>{const{normalize:n}=r;return n(["공개 범위 선택지 줄이기"])},reset_avatar:r=>{const{normalize:n}=r;return n(["프로필 사진 초기화"])},reset_avatar_confirm:r=>{const{normalize:n}=r;return n(["정말 프로필 사진을 초기화할까요?"])},reset_profile_background:r=>{const{normalize:n}=r;return n(["프로필 배경 초기화"])},reset_profile_banner:r=>{const{normalize:n}=r;return n(["프로필 배너 초기화"])},reset_banner_confirm:r=>{const{normalize:n}=r;return n(["정말 프로필 배너를 초기화할까요?"])},reset_background_confirm:r=>{const{normalize:n}=r;return n(["정말 프로필 배경을 초기화할까요?"])},useStreamingApi:r=>{const{normalize:n}=r;return n(["실시간으로 게시물과 알림 받기"])},use_websockets:r=>{const{normalize:n}=r;return n(["웹소켓 사용 (실시간 업데이트)"])},upload_a_photo:r=>{const{normalize:n}=r;return n(["사진 업로드"])},conversation_display:r=>{const{normalize:n}=r;return n(["대화 표시 모양"])},conversation_display_tree_quick:r=>{const{normalize:n}=r;return n(["트리 뷰"])},show_scrollbars:r=>{const{normalize:n}=r;return n(["측면 컬럼의 스크롤바 보기"])},conversation_other_replies_button_inside:r=>{const{normalize:n}=r;return n(["게시물 안에 놓기"])},notification_setting_hide_notification_contents:r=>{const{normalize:n}=r;return n(["푸시 알림에서 보낸 사람과 내용을 숨김"])},virtual_scrolling:r=>{const{normalize:n}=r;return n(["타임라인 렌더링 최적화"])},use_at_icon:r=>{const{normalize:n}=r;return n(["@"," 문자를 텍스트 대신 아이콘으로 표시"])},mention_link_display:r=>{const{normalize:n}=r;return n(["멘션에 링크 표시"])},mention_link_display_short:r=>{const{normalize:n}=r;return n(["항상 짧은 이름 사용 (예: ","@","foo)"])},mention_link_display_full_for_remote:r=>{const{normalize:n}=r;return n(["다른 인스턴스 사용자만 이름 전부 보기 (예: ","@","foo","@","example.org)"])},mention_link_display_full:r=>{const{normalize:n}=r;return n(["항상 이름 전부 보기 (예: ","@","foo","@","example.org)"])},mention_link_use_tooltip:r=>{const{normalize:n}=r;return n(["멘션 링크를 누르면 사용자 카드 보기"])},mention_link_show_avatar:r=>{const{normalize:n}=r;return n(["링크 옆에 프로필 사진 보기"])},mention_link_bolden_you:r=>{const{normalize:n}=r;return n(["누가 날 멘션했을 때 멘션을 강조 표시"])},user_popover_avatar_action_zoom:r=>{const{normalize:n}=r;return n(["사진 키우기"])},greentext:r=>{const{normalize:n}=r;return n(["밈 화살표"])},show_yous:r=>{const{normalize:n}=r;return n(['"(당신)" 보이기'])},notification_setting_filters:r=>{const{normalize:n}=r;return n(["필터"])},more_settings:r=>{const{normalize:n}=r;return n(["추가 설정"])},user_popover_avatar_action_open:r=>{const{normalize:n}=r;return n(["프로필 열기"])},version:{frontend_version:r=>{const{normalize:n}=r;return n(["프론트엔드 버전"])},title:r=>{const{normalize:n}=r;return n(["버전"])},backend_version:r=>{const{normalize:n}=r;return n(["백엔드 버전"])}},fun:r=>{const{normalize:n}=r;return n(["즐겁다"])},domain_mutes:r=>{const{normalize:n}=r;return n(["도메인"])},third_column_mode:r=>{const{normalize:n}=r;return n(["공간이 충분하면, 세 번째 컬럼 채우기"])},third_column_mode_none:r=>{const{normalize:n}=r;return n(["세 번째 컬럼 안 보기"])},third_column_mode_notifications:r=>{const{normalize:n}=r;return n(["알림 컬럼"])},third_column_mode_postform:r=>{const{normalize:n}=r;return n(["게시물 편집창과 내비게이션"])},columns:r=>{const{normalize:n}=r;return n(["컬럼"])},column_sizes:r=>{const{normalize:n}=r;return n(["컬럼 크기"])},column_sizes_sidebar:r=>{const{normalize:n}=r;return n(["사이드바"])},column_sizes_content:r=>{const{normalize:n}=r;return n(["내용"])},column_sizes_notifs:r=>{const{normalize:n}=r;return n(["알림"])},tree_advanced:r=>{const{normalize:n}=r;return n(["트리 뷰에서 더 유연한 탐색을 허용"])},tree_fade_ancestors:r=>{const{normalize:n}=r;return n(["현재 게시물보다 상단의 게시물들을 흐린 텍스트로 표시"])},conversation_display_linear:r=>{const{normalize:n}=r;return n(["선형"])},conversation_display_linear_quick:r=>{const{normalize:n}=r;return n(["선형 뷰"])},conversation_other_replies_button:r=>{const{normalize:n}=r;return n(['"답글 더 보기" 버튼을'])},conversation_other_replies_button_below:r=>{const{normalize:n}=r;return n(["게시물 아래에 놓기"])},max_depth_in_thread:r=>{const{normalize:n}=r;return n(["기본적으로 보일 최대 깊이"])},user_popover_avatar_action:r=>{const{normalize:n}=r;return n(["프로필 카드의 사진 클릭 시"])},user_popover_avatar_action_close:r=>{const{normalize:n}=r;return n(["카드 닫기"])},user_popover_avatar_overlay:r=>{const{normalize:n}=r;return n(["프로필 카드를 프로필 사진 위에 띄우기"])},post_status_content_type:r=>{const{normalize:n}=r;return n(["게시물 내용 형식"])},list_aliases_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["별칭을 가져오는 중 에러 발생: ",e(t("error"))])},add_alias_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["별칭을 추가하는 중 에러 발생: ",e(t("error"))])},mention_link_show_avatar_quick:r=>{const{normalize:n}=r;return n(["멘션 옆에 유저 프로필 사진을 보임"])}},timeline:{collapse:r=>{const{normalize:n}=r;return n(["접기"])},conversation:r=>{const{normalize:n}=r;return n(["대화"])},error_fetching:r=>{const{normalize:n}=r;return n(["업데이트 불러오기 실패"])},load_older:r=>{const{normalize:n}=r;return n(["이전 게시물 불러오기"])},no_retweet_hint:r=>{const{normalize:n}=r;return n(["팔로워 전용 게시물과 다이렉트 메시지는 리핏할 수 없습니다"])},repeated:r=>{const{normalize:n}=r;return n(["리핏함"])},show_new:r=>{const{normalize:n}=r;return n(["새 게시물 보기"])},up_to_date:r=>{const{normalize:n}=r;return n(["최신"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["타임라인을 가져오지 못했습니다: ",e(t(0))])},reload:r=>{const{normalize:n}=r;return n(["새로고침"])},no_statuses:r=>{const{normalize:n}=r;return n(["게시물 없음"])},no_more_statuses:r=>{const{normalize:n}=r;return n(["새 게시물 없음"])},socket_reconnected:r=>{const{normalize:n}=r;return n(["실시간 연결 됨"])},socket_broke:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["실시간 연결이 끊어짐: CloseEvent 코드 ",e(t(0))])},quick_filter_settings:r=>{const{normalize:n}=r;return n(["빠른 필터 설정"])}},user_card:{approve:r=>{const{normalize:n}=r;return n(["승인"])},block:r=>{const{normalize:n}=r;return n(["차단"])},blocked:r=>{const{normalize:n}=r;return n(["차단 됨!"])},deny:r=>{const{normalize:n}=r;return n(["거부"])},follow:r=>{const{normalize:n}=r;return n(["팔로우"])},follow_sent:r=>{const{normalize:n}=r;return n(["요청 보냄!"])},follow_progress:r=>{const{normalize:n}=r;return n(["요청 중…"])},follow_unfollow:r=>{const{normalize:n}=r;return n(["언팔로우"])},followees:r=>{const{normalize:n}=r;return n(["팔로우 중"])},followers:r=>{const{normalize:n}=r;return n(["팔로워"])},following:r=>{const{normalize:n}=r;return n(["팔로우 중!"])},follows_you:r=>{const{normalize:n}=r;return n(["나를 팔로우 합니다!"])},its_you:r=>{const{normalize:n}=r;return n(["당신입니다!"])},mute:r=>{const{normalize:n}=r;return n(["뮤트"])},muted:r=>{const{normalize:n}=r;return n(["뮤트 됨"])},per_day:r=>{const{normalize:n}=r;return n(["개 / 일"])},remote_follow:r=>{const{normalize:n}=r;return n(["다른 인스턴스에서 팔로우"])},statuses:r=>{const{normalize:n}=r;return n(["게시물"])},unmute_progress:r=>{const{normalize:n}=r;return n(["뮤트 해제 중…"])},unblock_progress:r=>{const{normalize:n}=r;return n(["차단 해제 중…"])},admin_menu:{revoke_moderator:r=>{const{normalize:n}=r;return n(["중재자 탄핵"])},sandbox:r=>{const{normalize:n}=r;return n(["게시물 공개 범위를 팔로워 전용으로 강제"])},disable_any_subscription:r=>{const{normalize:n}=r;return n(["누구도 팔로우를 못하도록 막기"])},delete_user_data_and_deactivate_confirmation:r=>{const{normalize:n}=r;return n(["영구적으로 이 계정의 데이터가 삭제되고 비활성화 됩니다. 정말로 괜찮겠습니까?"])},moderation:r=>{const{normalize:n}=r;return n(["관리"])},grant_admin:r=>{const{normalize:n}=r;return n(["관리자로 임명"])},grant_moderator:r=>{const{normalize:n}=r;return n(["중재자로 임명"])},disable_remote_subscription:r=>{const{normalize:n}=r;return n(["다른 인스턴스에서 팔로우하지 못하도록 막기"])},activate_account:r=>{const{normalize:n}=r;return n(["계정 활성화"])},deactivate_account:r=>{const{normalize:n}=r;return n(["계정 비활성화"])},delete_account:r=>{const{normalize:n}=r;return n(["계정 삭제"])},force_nsfw:r=>{const{normalize:n}=r;return n(["모든 게시물을 민감한 내용으로 표시"])},strip_media:r=>{const{normalize:n}=r;return n(["게시물에서 미디어 제거"])},revoke_admin:r=>{const{normalize:n}=r;return n(["관리자 탄핵"])},force_unlisted:r=>{const{normalize:n}=r;return n(["게시물 공개 범위를 비표시로 강제"])},quarantine:r=>{const{normalize:n}=r;return n(["연합 타임라인에서 사용자 게시물 비허용"])},delete_user:r=>{const{normalize:n}=r;return n(["사용자 삭제"])}},deactivated:r=>{const{normalize:n}=r;return n(["비활성화됨"])},edit_profile:r=>{const{normalize:n}=r;return n(["프로필 편집"])},favorites:r=>{const{normalize:n}=r;return n(["관심글"])},follow_cancel:r=>{const{normalize:n}=r;return n(["팔로우 요청 취소"])},unmute:r=>{const{normalize:n}=r;return n(["뮤트 해제"])},mute_progress:r=>{const{normalize:n}=r;return n(["뮤트 중…"])},hidden:r=>{const{normalize:n}=r;return n(["숨겨짐"])},media:r=>{const{normalize:n}=r;return n(["미디어"])},mention:r=>{const{normalize:n}=r;return n(["멘션"])},message:r=>{const{normalize:n}=r;return n(["메시지"])},remove_follower:r=>{const{normalize:n}=r;return n(["팔로워 삭제"])},report:r=>{const{normalize:n}=r;return n(["신고"])},subscribe:r=>{const{normalize:n}=r;return n(["구독"])},unsubscribe:r=>{const{normalize:n}=r;return n(["구독 해제"])},unblock:r=>{const{normalize:n}=r;return n(["차단 해제"])},block_progress:r=>{const{normalize:n}=r;return n(["차단 중…"])},hide_repeats:r=>{const{normalize:n}=r;return n(["리핏 숨기기"])},show_repeats:r=>{const{normalize:n}=r;return n(["리핏 보기"])},bot:r=>{const{normalize:n}=r;return n(["봇"])},highlight:{disabled:r=>{const{normalize:n}=r;return n(["강조 표시 없음"])},striped:r=>{const{normalize:n}=r;return n(["줄무늬 배경"])},solid:r=>{const{normalize:n}=r;return n(["단색 배경"])},side:r=>{const{normalize:n}=r;return n(["옆트임"])}}},user_profile:{timeline_title:r=>{const{normalize:n}=r;return n(["사용자 타임라인"])},profile_does_not_exist:r=>{const{normalize:n}=r;return n(["죄송하지만, 이 프로필은 존재하지 않습니다."])},profile_loading_error:r=>{const{normalize:n}=r;return n(["죄송하지만, 프로필을 불러오는 데 에러가 발생했습니다."])}},who_to_follow:{more:r=>{const{normalize:n}=r;return n(["더 보기"])},who_to_follow:r=>{const{normalize:n}=r;return n(["팔로우 추천"])}},tool_tip:{media_upload:r=>{const{normalize:n}=r;return n(["미디어 업로드"])},repeat:r=>{const{normalize:n}=r;return n(["리핏"])},reply:r=>{const{normalize:n}=r;return n(["답글"])},favorite:r=>{const{normalize:n}=r;return n(["관심글"])},user_settings:r=>{const{normalize:n}=r;return n(["사용자 설정"])},add_reaction:r=>{const{normalize:n}=r;return n(["반응 추가"])},accept_follow_request:r=>{const{normalize:n}=r;return n(["팔로우 요청 승인"])},reject_follow_request:r=>{const{normalize:n}=r;return n(["팔로우 요청 거절"])},bookmark:r=>{const{normalize:n}=r;return n(["북마크"])}},upload:{error:{base:r=>{const{normalize:n}=r;return n(["업로드 실패."])},file_too_big:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["파일이 너무 커요 [",e(t("filesize")),e(t("filesizeunit"))," / ",e(t("allowedsize")),e(t("allowedsizeunit")),"]"])},default:r=>{const{normalize:n}=r;return n(["잠시 후에 다시 시도해 보세요"])},message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["업로드 실패: ",e(t(0))])}},file_size_units:{B:r=>{const{normalize:n}=r;return n(["B"])},KiB:r=>{const{normalize:n}=r;return n(["KiB"])},MiB:r=>{const{normalize:n}=r;return n(["MiB"])},GiB:r=>{const{normalize:n}=r;return n(["GiB"])},TiB:r=>{const{normalize:n}=r;return n(["TiB"])}}},interactions:{follows:r=>{const{normalize:n}=r;return n(["새 팔로워"])},favs_repeats:r=>{const{normalize:n}=r;return n(["리핏과 관심"])},moves:r=>{const{normalize:n}=r;return n(["계정 이동"])},emoji_reactions:r=>{const{normalize:n}=r;return n(["에모지 반응"])},reports:r=>{const{normalize:n}=r;return n(["신고"])},load_older:r=>{const{normalize:n}=r;return n(["이전 반응 불러오기"])}},emoji:{load_all:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["전체 ",e(t("emojiAmount")),"개의 에모지 불러오기"])},unicode:r=>{const{normalize:n}=r;return n(["Unicode 에모지"])},custom:r=>{const{normalize:n}=r;return n(["전용 에모지"])},add_emoji:r=>{const{normalize:n}=r;return n(["에모지 넣기"])},search_emoji:r=>{const{normalize:n}=r;return n(["에모지 검색"])},emoji:r=>{const{normalize:n}=r;return n(["에모지"])},stickers:r=>{const{normalize:n}=r;return n(["스티커"])},load_all_hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["첫 ",e(t("saneAmount")),"개의 에모지를 불러왔습니다, 에모지를 전부 불러오면 성능 저하가 있을 수 있습니다."])},unicode_groups:{"people-and-body":r=>{const{normalize:n}=r;return n(["사람 & 몸"])},"smileys-and-emotion":r=>{const{normalize:n}=r;return n(["웃는 얼굴 & 감정"])},"travel-and-places":r=>{const{normalize:n}=r;return n(["여행 & 장소"])},activities:r=>{const{normalize:n}=r;return n(["활동"])},"animals-and-nature":r=>{const{normalize:n}=r;return n(["동물 & 자연"])},flags:r=>{const{normalize:n}=r;return n(["깃발"])},"food-and-drink":r=>{const{normalize:n}=r;return n(["음식 & 음료"])},objects:r=>{const{normalize:n}=r;return n(["사물"])},symbols:r=>{const{normalize:n}=r;return n(["기호"])}},keep_open:r=>{const{normalize:n}=r;return n(["열린 채로 두기"])},regional_indicator:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["지역 표시기 ",e(t("letter"))])}},polls:{add_poll:r=>{const{normalize:n}=r;return n(["투표를 추가"])},votes:r=>{const{normalize:n}=r;return n(["표"])},vote:r=>{const{normalize:n}=r;return n(["투표"])},type:r=>{const{normalize:n}=r;return n(["투표 형식"])},expiry:r=>{const{normalize:n}=r;return n(["투표 기간"])},votes_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 표"]),n([e(t("count"))," 표"])])},people_voted_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 명 투표"]),n([e(t("count"))," 명 투표"])])},option:r=>{const{normalize:n}=r;return n(["선택지"])},add_option:r=>{const{normalize:n}=r;return n(["선택지 추가"])},expired:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["투표는 ",e(t(0))," 전에 마감되었습니다"])},expires_in:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["투표는 ",e(t(0)),"에 마감됩니다"])},single_choice:r=>{const{normalize:n}=r;return n(["하나만 선택"])},multiple_choices:r=>{const{normalize:n}=r;return n(["여러 개 선택"])},not_enough_options:r=>{const{normalize:n}=r;return n(["선택지가 너무 적습니다"])}},media_modal:{next:r=>{const{normalize:n}=r;return n(["다음"])},previous:r=>{const{normalize:n}=r;return n(["이전"])},counter:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("current"))," / ",e(t("total"))])},hide:r=>{const{normalize:n}=r;return n(["미디어 뷰어 닫기"])}},importer:{error:r=>{const{normalize:n}=r;return n(["이 파일을 가져올 때 오류가 발생하였습니다."])},success:r=>{const{normalize:n}=r;return n(["정상히 불러왔습니다."])},submit:r=>{const{normalize:n}=r;return n(["보내기"])}},image_cropper:{cancel:r=>{const{normalize:n}=r;return n(["취소"])},save_without_cropping:r=>{const{normalize:n}=r;return n(["그대로 저장"])},save:r=>{const{normalize:n}=r;return n(["저장"])},crop_picture:r=>{const{normalize:n}=r;return n(["사진 자르기"])}},exporter:{processing:r=>{const{normalize:n}=r;return n(["처리중입니다, 곧 파일을 다운로드할 수 있습니다"])},export:r=>{const{normalize:n}=r;return n(["내보내기"])}},domain_mute_card:{unmute_progress:r=>{const{normalize:n}=r;return n(["뮤트 해제 중…"])},unmute:r=>{const{normalize:n}=r;return n(["뮤트 해제"])},mute_progress:r=>{const{normalize:n}=r;return n(["뮤트 중…"])},mute:r=>{const{normalize:n}=r;return n(["뮤트"])}},about:{staff:r=>{const{normalize:n}=r;return n(["운영자"])},mrf:{simple:{media_nsfw_desc:r=>{const{normalize:n}=r;return n(["이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고에 붙혀 있는 매체는 민감함으로 설정됩니다:"])},media_nsfw:r=>{const{normalize:n}=r;return n(["매체를 민감함으로 설정"])},media_removal_desc:r=>{const{normalize:n}=r;return n(["이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고에 붙혀 있는 매체는 제거됩니다:"])},media_removal:r=>{const{normalize:n}=r;return n(["매체 제거"])},ftl_removal_desc:r=>{const{normalize:n}=r;return n(['이 인스턴스에서 아래의 인스턴스들은 "알려진 네트워크" 타임라인에서 제외됩니다:'])},ftl_removal:r=>{const{normalize:n}=r;return n(['"알려진 네트워크" 타임라인에서 제외'])},quarantine_desc:r=>{const{normalize:n}=r;return n(["이 인스턴스는 아래의 인스턴스에게 공개투고만을 보냅니다:"])},quarantine:r=>{const{normalize:n}=r;return n(["검역"])},reject_desc:r=>{const{normalize:n}=r;return n(["이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고를 받아들이지 않습니다:"])},accept_desc:r=>{const{normalize:n}=r;return n(["이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고만이 접수됩니다:"])},reject:r=>{const{normalize:n}=r;return n(["거부"])},accept:r=>{const{normalize:n}=r;return n(["허가"])},simple_policies:r=>{const{normalize:n}=r;return n(["인스턴스 특유의 정책"])},instance:r=>{const{normalize:n}=r;return n(["인스턴스"])},reason:r=>{const{normalize:n}=r;return n(["사유"])},not_applicable:r=>{const{normalize:n}=r;return n(["없음"])}},mrf_policies:r=>{const{normalize:n}=r;return n(["사용되는 MRF 정책"])},keyword:{is_replaced_by:r=>{const{normalize:n}=r;return n(["→"])},replace:r=>{const{normalize:n}=r;return n(["바꾸기"])},reject:r=>{const{normalize:n}=r;return n(["거부"])},ftl_removal:r=>{const{normalize:n}=r;return n(['"알려진 모든 네트워크" 타임라인에서 제외'])},keyword_policies:r=>{const{normalize:n}=r;return n(["단어 정책"])}},federation:r=>{const{normalize:n}=r;return n(["연합"])},mrf_policies_desc:r=>{const{normalize:n}=r;return n(["MRF 정책은 이 인스턴스의 페더레이션 동작을 제어하고 있습니다. 적용되고 있는 정책은 다음과 같습니다:"])}}},shoutbox:{title:r=>{const{normalize:n}=r;return n(["외치기"])}},time:{years_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 년"])},year_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 년"])},years:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 년"])},year:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 년"])},weeks_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 주일"])},week_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 주일"])},weeks:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 주일"])},week:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 주일"])},seconds_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 초"])},second_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 초"])},seconds:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 초"])},second:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 초"])},now_short:r=>{const{normalize:n}=r;return n(["지금"])},now:r=>{const{normalize:n}=r;return n(["방금"])},months_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 달 전"])},month_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 달 전"])},months:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 달 전"])},month:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 달 전"])},minutes_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 분"])},minute_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 분"])},minutes:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 분"])},minute:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 분"])},in_past:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 전"])},hours_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 시간"])},hour_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 시간"])},hours:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 시간"])},hour:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 시간"])},days_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 일"])},day_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 일"])},days:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 일"])},day:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 일"])},unit:{weeks:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"주"]),n([e(t(0)),"주"])])},minutes:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"분"]),n([e(t(0)),"분"])])},seconds:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"초"]),n([e(t(0)),"초"])])},seconds_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"초"])},weeks_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"주"])},years:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"년"]),n([e(t(0)),"년"])])},years_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"년"])},days:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"일"]),n([e(t(0)),"일"])])},days_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"일"])},hours:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"시간"]),n([e(t(0)),"시간"])])},hours_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"시간"])},minutes_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"분"])},months:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"달"]),n([e(t(0)),"달"])])},months_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"달"])}},in_future:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 후"])}},remote_user_resolver:{error:r=>{const{normalize:n}=r;return n(["찾을 수 없습니다."])},searching_for:r=>{const{normalize:n}=r;return n(["검색:"])},remote_user_resolver:r=>{const{normalize:n}=r;return n(["다른 인스턴스 사용자 안내기"])}},selectable_list:{select_all:r=>{const{normalize:n}=r;return n(["모두 선택"])}},lists:{title:r=>{const{normalize:n}=r;return n(["리스트 제목"])},search:r=>{const{normalize:n}=r;return n(["사용자 검색하기"])},lists:r=>{const{normalize:n}=r;return n(["리스트"])},new:r=>{const{normalize:n}=r;return n(["리스트 만들기"])},create:r=>{const{normalize:n}=r;return n(["만들기"])},delete:r=>{const{normalize:n}=r;return n(["리스트 삭제"])},following_only:r=>{const{normalize:n}=r;return n(["팔로우 중인 사람들만"])},manage_lists:r=>{const{normalize:n}=r;return n(["리스트 관리"])},manage_members:r=>{const{normalize:n}=r;return n(["멤버 관리"])},remove_from_list:r=>{const{normalize:n}=r;return n(["리스트에서 제거"])},add_to_list:r=>{const{normalize:n}=r;return n(["리스트에 추가"])},is_in_list:r=>{const{normalize:n}=r;return n(["리스트에 이미 있음"])},editing_list:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("listTitle"))," 리스트 편집"])},update_title:r=>{const{normalize:n}=r;return n(["제목 저장"])},really_delete:r=>{const{normalize:n}=r;return n(["리스트를 삭제하시겠어요?"])},save:r=>{const{normalize:n}=r;return n(["변경 사항을 저장"])},creating_list:r=>{const{normalize:n}=r;return n(["새 리스트 만들기"])},add_members:r=>{const{normalize:n}=r;return n(["사용자 추가"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["리스트를 조작하는 데 오류가 발생했습니다: ",e(t(0))])}},search:{no_more_results:r=>{const{normalize:n}=r;return n(["결과 더 없음"])},load_more:r=>{const{normalize:n}=r;return n(["결과 더 불러오기"])},people:r=>{const{normalize:n}=r;return n(["사람"])},hashtags:r=>{const{normalize:n}=r;return n(["해시태그"])},person_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count")),"명이 말하는 중"])},people_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count")),"명이 말하는 중"])},no_results:r=>{const{normalize:n}=r;return n(["결과 없음"])}},password_reset:{forgot_password:r=>{const{normalize:n}=r;return n(["패스워드를 잊으셨나요?"])},password_reset:r=>{const{normalize:n}=r;return n(["패스워드 재설정"])},placeholder:r=>{const{normalize:n}=r;return n(["이메일 주소 또는 사용자 이름"])},password_reset_required_but_mailer_is_disabled:r=>{const{normalize:n}=r;return n(["패스워드 초기화를 하셔야 하지만, 못 하게 막혀 있습니다. 인스턴스 관리자에게 문의해주세요."])},check_email:r=>{const{normalize:n}=r;return n(["패스워드 초기화를 위해 이메일을 확인해주세요."])},return_home:r=>{const{normalize:n}=r;return n(["홈으로 돌아가기"])},password_reset_required:r=>{const{normalize:n}=r;return n(["로그인하려면 패스워드를 초기화해야 합니다."])},password_reset_disabled:r=>{const{normalize:n}=r;return n(["패스워드 초기화를 못 하게 되어 있습니다. 인스턴스 관리자에게 문의해주세요."])},instruction:r=>{const{normalize:n}=r;return n(["이메일 주소 또는 사용자 이름을 입력하세요. 패스워드 초기화 링크를 메일로 보내드립니다."])},too_many_requests:r=>{const{normalize:n}=r;return n(["너무 많은 시도를 했습니다, 나중에 다시 해주세요."])}},chats:{you:r=>{const{normalize:n}=r;return n(["당신:"])},delete:r=>{const{normalize:n}=r;return n(["삭제"])},new:r=>{const{normalize:n}=r;return n(["새 채팅"])},chats:r=>{const{normalize:n}=r;return n(["채팅"])},empty_message_error:r=>{const{normalize:n}=r;return n(["메시지가 비어 있습니다"])},more:r=>{const{normalize:n}=r;return n(["더 보기"])},error_loading_chat:r=>{const{normalize:n}=r;return n(["왜인진 모르겠는데 채팅을 불러오지 못했습니다."])},error_sending_message:r=>{const{normalize:n}=r;return n(["왜인진 모르겠는데 메시지를 전송하지 못했습니다."])},delete_confirm:r=>{const{normalize:n}=r;return n(["이 메시지를 정말 지울까요?"])},empty_chat_list_placeholder:r=>{const{normalize:n}=r;return n(["채팅이 없네요. 새 채팅을 시작해보세요!"])},message_user:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("nickname")),"에게 메시지"])}},file_type:{audio:r=>{const{normalize:n}=r;return n(["오디오"])},video:r=>{const{normalize:n}=r;return n(["영상"])},image:r=>{const{normalize:n}=r;return n(["사진"])},file:r=>{const{normalize:n}=r;return n(["파일"])}},display_date:{today:r=>{const{normalize:n}=r;return n(["오늘"])}},update:{big_update_title:r=>{const{normalize:n}=r;return n(["양해해주세요"])},update_bugs_gitlab:r=>{const{normalize:n}=r;return n(["Pleroma GitLab"])},update_changelog_here:r=>{const{normalize:n}=r;return n(["변경 내역"])},update_changelog:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["무엇이 바뀌었는지 자세히 알아보시려면, ",e(t("theFullChangelog")),"을 참조하세요."])},big_update_content:r=>{const{normalize:n}=r;return n(["저희가 한동안 릴리즈를 안 해서, 익숙하셨던 생김새나 경험과 많이 달라졌을 수 있습니다."])},update_bugs:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["저희가 비록 테스트를 많이 하고 직접 개발 버전을 쓰기도 하지만, 많이 바꾸기도 했고, 몇몇 가지 놓친 점들이 있을 터이니, 사용하면서 불편한 점이나 문제는 ",e(t("pleromaGitlab")),"에 제보해주시면 감사하겠습니다. 저희는 겪으신 문제점이나 Pleroma와 Pleroma-FE에 대한 피드백과 제안을 환영합니다."])}},unicode_domain_indicator:{tooltip:r=>{const{normalize:n}=r;return n(["이 도메인은 아스키 문자가 아닌 문자를 포함하고 있습니다."])}},status:{mute_conversation:r=>{const{normalize:n}=r;return n(["대화 뮤트"])},thread_muted_and_words:r=>{const{normalize:n}=r;return n([", 단어 포함:"])},unpin:r=>{const{normalize:n}=r;return n(["프로필에서 고정 해제"])},replies_list_with_others:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["답글 (+",e(t("numReplies")),"개):"]),n(["답글 (+",e(t("numReplies")),"개):"])])},show_attachment_in_modal:r=>{const{normalize:n}=r;return n(["미디어 모달에서 보기"])},thread_hide:r=>{const{normalize:n}=r;return n(["이 스레드 숨기기"])},show_attachment_description:r=>{const{normalize:n}=r;return n(["설명 미리보기 (첨부물을 열어서 전체 설명 보기)"])},thread_show_full:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["이 스레드를 전부 들춰보기 (총 ",e(t("numStatus")),"개 있음, 최대 깊이 ",e(t("depth")),")"]),n(["이 스레드를 전부 들춰보기 (총 ",e(t("numStatus")),"개 있음, 최대 깊이 ",e(t("depth")),")"])])},thread_follow:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["이 스레드의 나머지 부분 보기 (총 ",e(t("numStatus")),"개)"]),n(["이 스레드의 나머지 부분 보기 (총 ",e(t("numStatus")),"개)"])])},status_history:r=>{const{normalize:n}=r;return n(["게시물 이력"])},show_all_conversation:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["전체 대화 보기 (",e(t("numStatus")),"개 더 있음)"]),n(["전체 대화 보기 (",e(t("numStatus")),"개 더 있음)"])])},repeats:r=>{const{normalize:n}=r;return n(["리핏"])},delete:r=>{const{normalize:n}=r;return n(["삭제"])},edit:r=>{const{normalize:n}=r;return n(["수정"])},favorites:r=>{const{normalize:n}=r;return n(["관심글"])},edited_at:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["(",e(t("time")),"에 마지막으로 수정됨)"])},pin:r=>{const{normalize:n}=r;return n(["프로필에 고정"])},pinned:r=>{const{normalize:n}=r;return n(["고정됨"])},bookmark:r=>{const{normalize:n}=r;return n(["북마크"])},unbookmark:r=>{const{normalize:n}=r;return n(["북마크 해제"])},delete_confirm:r=>{const{normalize:n}=r;return n(["정말 지우시겠어요?"])},reply_to:r=>{const{normalize:n}=r;return n(["답글"])},mentions:r=>{const{normalize:n}=r;return n(["멘션"])},replies_list:r=>{const{normalize:n}=r;return n(["답글:"])},unmute_conversation:r=>{const{normalize:n}=r;return n(["대화 뮤트 해제"])},thread_muted:r=>{const{normalize:n}=r;return n(["스레드 뮤트됨"])},status_unavailable:r=>{const{normalize:n}=r;return n(["게시물 접근 불가"])},copy_link:r=>{const{normalize:n}=r;return n(["게시물 링크 복사"])},external_source:r=>{const{normalize:n}=r;return n(["원본 페이지"])},show_full_subject:r=>{const{normalize:n}=r;return n(["전체 제목 보기"])},hide_full_subject:r=>{const{normalize:n}=r;return n(["전체 제목 숨기기"])},show_content:r=>{const{normalize:n}=r;return n(["내용 보기"])},hide_content:r=>{const{normalize:n}=r;return n(["내용 숨기기"])},status_deleted:r=>{const{normalize:n}=r;return n(["지워진 게시물입니다"])},nsfw:r=>{const{normalize:n}=r;return n(["민감한 내용"])},expand:r=>{const{normalize:n}=r;return n(["펼치기"])},you:r=>{const{normalize:n}=r;return n(["(당신)"])},plus_more:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["+",e(t("number")),"개 더 있음"])},many_attachments:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("number")),"개의 첨부물을 가짐"])},show_all_attachments:r=>{const{normalize:n}=r;return n(["첨부물 전부 보이기"])},hide_attachment:r=>{const{normalize:n}=r;return n(["첨부물 숨기기"])},collapse_attachments:r=>{const{normalize:n}=r;return n(["첨부물 접기"])},remove_attachment:r=>{const{normalize:n}=r;return n(["첨부물 지우기"])},attachment_stop_flash:r=>{const{normalize:n}=r;return n(["플래시 플레이어 정지"])},move_up:r=>{const{normalize:n}=r;return n(["첨부물 왼쪽으로 밀기"])},move_down:r=>{const{normalize:n}=r;return n(["첨부물 오른쪽으로 밀기"])},open_gallery:r=>{const{normalize:n}=r;return n(["갤러리 열기"])},thread_show:r=>{const{normalize:n}=r;return n(["이 스레드 보이기"])},thread_show_full_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},thread_follow_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},ancestor_follow_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},show_all_conversation_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},ancestor_follow:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["이 게시물 아래 ",e(t("numReplies")),"개 답글 더 보기"]),n(["이 게시물 아래 ",e(t("numReplies")),"개 답글 더 보기"])])},show_only_conversation_under_this:r=>{const{normalize:n}=r;return n(["이 게시물의 답글만 보기"])}},errors:{storage_unavailable:r=>{const{normalize:n}=r;return n(["Pleroma가 브라우저 저장소에 접근할 수 없습니다. 로그인이 풀리거나 로컬 설정이 초기화 되는 등 예상치 못한 문제를 겪을 수 있습니다. 쿠키를 활성화 해보세요."])}},report:{reporter:r=>{const{normalize:n}=r;return n(["신고자:"])},reported_statuses:r=>{const{normalize:n}=r;return n(["신고된 게시물:"])},notes:r=>{const{normalize:n}=r;return n(["기타:"])},state:r=>{const{normalize:n}=r;return n(["상태:"])},state_open:r=>{const{normalize:n}=r;return n(["열림"])},state_closed:r=>{const{normalize:n}=r;return n(["닫힘"])},reported_user:r=>{const{normalize:n}=r;return n(["신고된 사용자:"])},state_resolved:r=>{const{normalize:n}=r;return n(["해결됨"])}},user_reporting:{title:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 신고"])},add_comment_description:r=>{const{normalize:n}=r;return n(["이 신고서는 내 인스턴스의 중재자에게 전달됩니다. 왜 이 계정을 신고하려는지 좀 더 자세히 알려주세요:"])},additional_comments:r=>{const{normalize:n}=r;return n(["추가 설명"])},forward_description:r=>{const{normalize:n}=r;return n(["이 계정은 다른 서버에 있는 계정입니다. 그쪽으로도 신고를 보낼까요?"])},forward_to:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"로 전달하기"])},submit:r=>{const{normalize:n}=r;return n(["전송"])},generic_error:r=>{const{normalize:n}=r;return n(["요청을 처리하는 중 오류가 발생했습니다."])}},announcements:{end_time_prompt:r=>{const{normalize:n}=r;return n(["끝나는 시각: "])},page_header:r=>{const{normalize:n}=r;return n(["공지사항"])},title:r=>{const{normalize:n}=r;return n(["공지사항"])},mark_as_read_action:r=>{const{normalize:n}=r;return n(["읽음으로 표시"])},post_form_header:r=>{const{normalize:n}=r;return n(["공지사항 작성"])},post_placeholder:r=>{const{normalize:n}=r;return n(["공지사항 내용을 작성하세요..."])},post_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["오류: ",e(t("error"))])},close_error:r=>{const{normalize:n}=r;return n(["닫기"])},delete_action:r=>{const{normalize:n}=r;return n(["삭제"])},post_action:r=>{const{normalize:n}=r;return n(["게시"])},start_time_prompt:r=>{const{normalize:n}=r;return n(["시작 시각: "])},all_day_prompt:r=>{const{normalize:n}=r;return n(["온종일 있는 이벤트입니다"])},published_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time")),"에 게시함"])},start_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time")),"에 시작함"])},end_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time")),"에 끝남"])},edit_action:r=>{const{normalize:n}=r;return n(["편집"])},submit_edit_action:r=>{const{normalize:n}=r;return n(["수정본 반영"])},cancel_edit_action:r=>{const{normalize:n}=r;return n(["취소"])},inactive_message:r=>{const{normalize:n}=r;return n(["이 공지사항은 비활성화 되었습니다"])}}}}}]); -//# sourceMappingURL=ko-json.4bd28b26a7390a09afc2.js.map -\ No newline at end of file diff --git a/priv/static/static/js/i18n/ko-json.4bd28b26a7390a09afc2.js.map b/priv/static/static/js/i18n/ko-json.4bd28b26a7390a09afc2.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/i18n/ko-json.4bd28b26a7390a09afc2.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/ko.json"],"sourcesContent":["export default {\n \"chat\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"챗\"])}\n },\n \"features_panel\": {\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"챗\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어 프록시\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"범위 옵션\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"텍스트 제한\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기능\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 추천\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"최대 파일용량\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 채팅\"])},\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"외치기\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 정보 불러오기 실패\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 찾기\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"적용\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보내기\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로딩중…\"])},\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"살짝 보기\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"닫기\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"검사\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"확인\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"활성화\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비활성화\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"취소\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"무시\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"접기\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"더 보기\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"필수 아님\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다시 시도하십시오\"])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다시 시도하십시오\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에러가 발생했습니다\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"더 보기\"])},\n \"role\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"중재자\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관리자\"])}\n },\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"취소\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"네\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"아니오\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"고정 해제\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"고정\"])},\n \"scope_in_timeline\": {\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 전용\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공개\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비표시\"])},\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다이렉트\"])}\n },\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"클릭해서 플래시 컨텐츠 보기 (Ruffle 사용, 작동하지 않을 수 있습니다).\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"플래시 컨텐츠는 임의 코드 실행이 아직도 가능할 수 있기에 위험할 수 있습니다.\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"플래시를 로드하지 못했습니다, 콘솔로 자세한 내용을 확인하세요.\"])},\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"맨 위로 올라가기\"])},\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"에러가 발생했습니다: \", _interpolate(_list(0))])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다시 보지 않기\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그인\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth로 로그인\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그아웃\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"예시: lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"가입\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 이름\"])},\n \"heading\": {\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"2단계 복구\"])},\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"2단계인증\"])}\n },\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복구 코드\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"2단계인증 코드를 입력하십시오\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복구 코드를 입력하십시오\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인증 코드\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그인해서 대화에 참여\"])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스 소개\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뒤로\"])},\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로컬 챗\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다이렉트 메시지\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공개 타임라인\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"타임라인\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알려진 네트워크\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 검색\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"환경설정\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"채팅\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"타임라인\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"추천된 사용자\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"검색\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"북마크\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관리\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"홈 타임라인\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림 열기 (읽지 않은 알림이 있습니다)\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트\"])},\n \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"네비게이션 바 커스텀하기\"])},\n \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"상단 고정 편집\"])},\n \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"편집 종료\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림 닫기\"])},\n \"mobile_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모바일 사이드바 토글\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공지사항\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알 수 없는 게시물입니다, 검색합니다…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심을 가짐\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우함\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전 알림 불러오기\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"읽음!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏함\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림이 없습니다\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이사했습니다\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 로 반응했습니다\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"알림 불러오기 실패: \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고 내용을 전송함\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표가 끝남\"])}\n },\n \"post_status\": {\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 게시물 게시\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"계정이 \", _interpolate(_list(0)), \" 상태가 아닙니다. 누구나 당신을 팔로우 하고 팔로워 전용 게시물을 볼 수 있습니다.\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"잠김\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물을 민감함으로 설정\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"평문\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"마크다운\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])}\n },\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"제목 (선택)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인천공항에 도착했습니다.\"])},\n \"direct_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 게시물을 멘션 된 사용자들에게만 보여집니다\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시 중\"])},\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다이렉트 - 멘션 된 사용자들에게만\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 전용 - 팔로워들에게만\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공개 - 공개 타임라인으로\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비표시 - 공개 타임라인에는 안 보이게\"])}\n },\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비어있음\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미리보기\"])},\n \"scope_notice\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"누구나 볼 수 있습니다\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워에게만 보여집니다\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공개 타임라인이나 알려진 네트워크에는 보여지지 않습니다\"])}\n },\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파일을 올리지 못했습니다, 다시 시도해 보세요\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물이 비어 있습니다\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부파일 설명\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션한 모든 사용자에게 보여집니다.\"])},\n \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma는 멘션이나 투표를 수정하는 기능을 지원하지 않습니다.\"])},\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"수정\"])},\n \"edit_remote_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"수정 기능이 없는 다른 인스턴스에서는 수정한 사항이 반영되지 않을 수 있습니다.\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"맨 앞에 멘션한 사용자들에게만 보여집니다.\"])}\n },\n \"registration\": {\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"소개\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이메일\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"표시될 이름\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 확인\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"가입하기\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"초대 토큰\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"캡차\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이미지를 클릭해서 새로운 캡차 가져오기\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공백으로 둘 수 없습니다\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공백으로 둘 수 없습니다\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공백으로 둘 수 없습니다\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공백으로 둘 수 없습니다\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공백으로 둘 수 없습니다\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드와 일치해야 합니다\"])}\n },\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"예: 김례인\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"예: lain\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"예시\\n안녕하세요, 례인입니다.\\n일본 시외에서 애니메이션 아이돌을 하고 있습니다. Wired에서 절 보셨을 거예요.\"])},\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"소개 (선택)\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이메일 (선택)\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"가입하려는 이유\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스는 수동으로 가입을 승인하고 있습니다.\\n왜 가입하고 싶은지 관리자에게 알려주세요.\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"가입\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"무슨 언어로 이메일을 받길 원하시나요?\"])}\n },\n \"settings\": {\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 사진\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 사진 (알림창)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 사진\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"배경\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"소개\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파랑 (답글, 팔로우)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"초록 (리트윗)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"주황 (관심글)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"빨강 (취소)\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 바꾸기\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드를 바꾸는 데 문제가 있습니다.\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드가 바뀌었습니다!\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"제목이 있는 게시물 접기\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"작성\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 패스워드 확인\"])},\n \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"현재 아바타\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"현재 패스워드\"])},\n \"current_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"현재 프로필 배너\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"데이터 불러오기 / 내보내기\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기본 공개 범위\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 삭제\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"데이터가 영구히 삭제되고 계정이 비활성화됩니다.\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정을 삭제하는데 문제가 있습니다. 계속 발생한다면 인스턴스 관리자에게 문의하세요.\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"아래 패스워드를 입력하시면 계정이 삭제됩니다.\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프리셋 저장\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"필터링\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 단어를 가진 게시물들은 뮤트됩니다, 한 줄에 하나씩 적으세요\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 내보내기\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 목록을 CSV 파일로 내보내기\"])},\n \"follow_export_processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"진행 중입니다, 곧 다운로드 가능해 질 것입니다\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 불러오기\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 불러오기 실패\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 목록을 불러왔습니다! 처리에는 시간이 걸립니다.\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"표면\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"일반\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"대화의 첨부물 숨기기\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"타임라인의 첨부물 숨기기\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스 전용 패널 숨기기\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이미지 미리 불러오기\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 통계 숨기기 (관심글 수 등)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 통계 숨기기 (팔로워 수 등)\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CSV 파일에서 팔로우 목록 불러오기\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프리셋 불러오기\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"입력 칸\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"체크박스\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(기본: \", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(기본)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인터페이스\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인터페이스 언어\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"해당 파일은 지원되지 않는 Pleroma 테마입니다. 아무 일도 일어나지 않았습니다.\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 브라우저에서 사용 불가\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"링크\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워를 승인해서 받도록 제한\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비디오 반복재생\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"소리가 없는 비디오만 반복 재생 (마스토돈의 \\\"GIF\\\" 같은 것들)\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이름\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이름 & 소개\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 패스워드\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보여질 알림 종류\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심글\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모든 게시물의 서식을 지우기\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중인 사람 숨기기\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 숨기기\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"민감한 이미지를 숨기기\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth 토큰\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"토큰\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"토큰 새로 고침\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"만료일\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"취소\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패널\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"탭이 포커스되지 않았을 땐 멈추기\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프리셋\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 배경\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 배너\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인터페이스 모서리 둥글기 (픽셀 단위)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"타임라인의 답글\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모든 답글 보기\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"나에게 직접 오거나 내가 팔로우 중인 사람이 보낸 답글만 보기\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"나에게 직접 온 답글만 보기\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정을 저장하는 데 에러가 발생했습니다\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정 저장 됨\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보안\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"답글을 달 때 공개 범위 따라가기 (다이렉트 메시지는 언제나 따라감)\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 프로필 사진 설정\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 프로필 배경 설정\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 프로필 배너 설정\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"항상 제목 입력창 보이기\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"답글을 달 때 제목 복사하기\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이메일처럼: \\\"re: 제목\\\"\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"마스토돈처럼: 그대로 복사\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복사 안 함\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"마우스를 올려서 GIF 재생\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"최상단에 도달하면 알아서 새 게시물 가져오기\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"텍스트\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"테마\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"16진수 색상코드(#rrggbb)를 사용해 색상을 조정하세요.\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"체크박스를 통해 몇몇 컴포넌트의 색상과 불투명도를 조절 가능, \\\"모두 지우기\\\" 버튼으로 덮어 씌운 것을 모두 취소.\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"몇몇 입력칸 밑의 아이콘은 전경/배경 대비 관련 표시등입니다, 마우스를 올려 자세한 정보를 볼 수 있습니다. 투명도 대비 표시등이 가장 최악의 경우를 나타낸다는 것을 유의하세요.\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"툴팁/경고\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 설정\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"아니오\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"네\"])}\n },\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"웹 푸시 알림 활성화\"])},\n \"style\": {\n \"switcher\": {\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"색상 유지\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"그림자 유지\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불투명도 유지\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"둥글기 유지\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"글꼴 유지\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"유지\\\" 옵션들은 다른 테마를 고르거나 불러 올 때 현재 설정 된 옵션들을 건드리지 않게 합니다, 테마를 내보내기 할 때도 이 옵션에 따라 저장합니다. 아무 것도 체크 되지 않았다면 모든 설정을 내보냅니다.\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"초기화\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모두 지우기\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불투명도 지우기\"])},\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE가 업그레이드 되었기에, 테마가 기억하시던 것과 조금 다를 수 있습니다.\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불러온 파일은 이곳보다 이전 버전의 FE에서 만들어졌습니다. 호환성을 유지하겠지만 깨진 부분이 있을 수 있습니다.\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"혹시나 싶어서, 테마 스냅샷을 불러왔습니다. 테마 데이터를 불러와도 됩니다.\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버전이 충돌됩니다: 아마 FE가 롤백되고 다시 업데이트 되어서일 건데, 이전 버전 FE로 테마를 수정했다면 이전 버전 FE를 써보시는 게 좋고, 아니면 새 버전을 쓰세요.\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불러온 파일은 이곳보다 새 버전의 FE에서 만들어졌습니다.\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불러온 파일은 이곳보다 이전 버전의 FE에서 만들어졌습니다.\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"테마 스냅샷이 있어서, 모든 값이 덮어 씌워졌습니다. 직접 테마의 실제 데이터를 대신 불러와도 됩니다.\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파일에 스냅샷이 없어서 원래 보였던 것보다 다르게 보일 수 있습니다.\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버전 업데이트로 PleromaFE의 테마 엔진이 업그레이드 되었습니다.\"])},\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE의 버전이 롤백되었습니다.\"])},\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뭔 일인진 모르겠지만 스냅샷이 없어서, 몇몇 개가 기억하신 것과 달리 보일 수 있습니다.\"])}\n },\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"테마 불러오기\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"그대로 두기\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전 버전\"])},\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 버전\"])}\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"색상\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불투명도\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"색상 대비율이 \", _interpolate(_named(\"ratio\")), \"입니다, \", _interpolate(_named(\"context\")), \" \", _interpolate(_named(\"level\"))])},\n \"level\": {\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"접근성 가이드라인 AA등급을 충족합니다 (최소)\"])},\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"접근성 가이드라인 AAA등급을 충족합니다 (권장)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"접근성 가이드라인을 충족하지 못합니다\"])}\n },\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"큰 (18pt 이상) 텍스트에 대해\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"일반 텍스트에 대해\"])}\n }\n }\n },\n \"common_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"일반\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"일반 색상\"])},\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"고급\\\" 탭에서 더 자세한 설정이 가능합니다\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"아이콘, 강조, 배지\"])}\n },\n \"advanced_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"고급\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"주의 배경\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에러\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"배지 배경\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패널 헤더\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"상단 바\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"테두리\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"입력칸\"])},\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"흐려진 텍스트\"])},\n \"chat\": {\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"경계선\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보냄\"])},\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"받음\"])}\n },\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선택된 메뉴 요소\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선택된 글\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"아이콘\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"경고\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"중립적\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 / 유저 소개\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"툴팁, 메뉴, 프로필 카드\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비활성화\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"배경사진\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표 그래프\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"강조 요소\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"눌렸을 때\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"토글됨\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"탭\"])}\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"둥글기\"])}\n },\n \"shadows\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"그림자와 빛\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"컴포넌트\"])},\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"덮어쓰기\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"그림자 #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"흐리기\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"퍼지기\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"안쪽으로\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"그림자에는 CSS3 변수를 --variable을 통해 색상 값으로 사용할 수 있습니다. 불투명도에는 적용 되지 않습니다.\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"경고, 이 그림자는 브라우저가 지원하는 경우 항상 \", _interpolate(_list(0)), \"을 사용합니다.\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"는 \", _interpolate(_list(1)), \" 파라미터와 \", _interpolate(_list(2)), \" 키워드를 지원하지 않습니다.\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"안쪽과 안쪽이 아닌 그림자를 모두 설정하는 경우 투명 아바타에서 예상치 못 한 결과가 나올 수 있다는 것에 주의해 주세요.\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"퍼지기가 0보다 큰 그림자는 0으로 설정한 것과 동일하게 보여집니다\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"안쪽 그림자는 \", _interpolate(_list(0)), \"를 사용합니다\"])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패널\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패널 헤더\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"상단 바\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 아바타 (프로필 뷰에서)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 아바타 (게시물에서)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팝업과 툴팁\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼 (마우스 올렸을 때)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼 (눌렸을 때)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼 (마우스 올림 + 눌림)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"입력칸\"])}\n },\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"그림자의 경우 \", _interpolate(_list(0)), \" 표기법으로 다른 컬러 슬롯을 사용할 수 있습니다.\"])}\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"글꼴\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"화면에 적용할 글꼴을 고르세요. \\\"직접 입력\\\"은 시스템에 있는 글꼴 이름을 정확히 입력해야 합니다.\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인터페이스\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"입력칸\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 텍스트\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물의 고정폭 텍스트 (서식 있는 텍스트)\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"글꼴 이름\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"크기 (px 단위)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"굵기\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"직접 입력\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미리보기\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에러 예시\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"더 많은 \", _interpolate(_list(0)), \" 그리고 \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인천공항에 도착했습니다.\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"도움 되는 설명서\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"우리의 \", _interpolate(_list(0)), \"를 읽고 도움 되지 않는 것들을 배우자!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"괜찮은 텍스트\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"나는 약관을 대충 훑어보았습니다\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"작고 귀여운 링크\"])}\n }\n },\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 목록 내보내기\"])},\n \"mfa\": {\n \"scan\": {\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"키\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"스캔\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"2단계 인증 앱을 통해 QR 코드를 찍거나 키를 입력하세요:\"])}\n },\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인증 방법\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복구 코드를 가져오고 있습니다…\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복구 코드.\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 복구 코드 생성\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"2단계 인증\"])},\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"확인 & OTP 활성화\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP 설정\"])},\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 복구 코드를 생성하면, 이전 코드는 작동하지 않게 됩니다.\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복구 코드를 어딘가 안전한 곳에 적어 놓으세요 - 더 이상 이 코드를 보실 순 없습니다. 만약 2단계 인증 앱과 복구 코드 둘 다 접근할 수 없게 된다면 계정에 로그인할 수 없게 됩니다.\"])},\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"활성화하려면 2단계 인증 앱에서 받은 코드를 입력하세요:\"])}\n }\n },\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보안\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지 반응을 타임라인에 표시\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"최소 150x150 픽셀보다 큰 사진을 업로드하시면 좋습니다.\"])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보안\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"반응\"])},\n \"profile_fields\": {\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 추가정보\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"필드 추가\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"라벨\"])}\n },\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트와 차단\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"채팅 메시지\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메일 주소 바꾸기\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메일 주소가 바뀌었습니다!\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 계정은 자동 봇입니다\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트\"])},\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"앱 이름\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로하지 않은 계정에서 보내는 알림 차단\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알아서 새 게시물 버튼 숨기기 (모바일)\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 목록을 가져왔습니다! 처리하는 데에 시간이 걸릴 수 있습니다.\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록을 가져왔습니다! 처리하는 데에 시간이 걸릴 수 있습니다.\"])},\n \"account_backup_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내 계정 정보와 게시물이 담긴 아카이브를 다운로드 받을 수 있지만, 아직 Pleroma로 다시 불러오는 기능은 지원하지 않습니다.\"])},\n \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정을 다른 곳으로 이사하려면, 이사 갈 계정으로 가셔서 별칭이 이 계정을 가리키도록 하세요.\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물에서 봇 알림 숨기기\"])},\n \"navbar_column_stretch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"상단 바를 컬럼 너비만큼 늘리기\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내 프로필에 \\\"관리자\\\" 배지 달기\"])},\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물을 민감함으로 기본 설정\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"특정 사용자의 알림을 받지 않으려면, 뮤트를 사용하세요.\"])},\n \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"흐려진 도메인 (예: \", \"@\", \"foo\", \"@\", \"example.org 에서의 \", \"@\", \"example.org)\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자를 차단하면 알림을 받지 않는데다 구독까지 취소하게 됩니다.\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"트리\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"변경 사항을 저장\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중인 계정이 이사를 하면 자동으로 팔로우하기\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"고급 설정 보기\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기본 설정과 다릅니다\"])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 설정은 계정과 묶여 있으며 연결된 모든 세션과 클라이언트에 영향을 줍니다\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"본인 확인을 위해 현재 패스워드를 입력하세요\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 모양새\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션 링크\"])},\n \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메뉴에 리스트 보이기\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"서버로부터 이메일을 받을 언어\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 목록 가져오기\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 목록을 CSV 파일로 내보내기\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 목록을 가져오는 데에 문제가 발생했습니다\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록 내보내기\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록을 CSV 파일로 내보내기\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록 가져오기\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록을 가져오는 데에 문제가 발생했습니다\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록을 CSV 파일에서 가져오기\"])},\n \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 백업\"])},\n \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"백업\"])},\n \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다운로드\"])},\n \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"백업이 아직 준비되지 않았습니다.\"])},\n \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"삭제\"])},\n \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"백업 리스트를 가져오는 데 에러가 발생했습니다: \", _interpolate(_named(\"error\"))])},\n \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 백업 만들기\"])},\n \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 백업 추가됨.\"])},\n \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"새 백업을 추가하는 데 에러가 발생했습니다: \", _interpolate(_named(\"error\"))])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메일 주소를 바꾸는 데 문제가 있습니다.\"])},\n \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 별칭\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"항상 떠다니는 게시물 작성 버튼 보기\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"봇 게시물 뮤트하기\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트한 게시물 숨기기\"])},\n \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"별칭\"])},\n \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"닫기\"])},\n \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 별칭 삭제\"])},\n \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"새 별칭 추가 (예시. \", _interpolate(_named(\"example\")), \")\"])},\n \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"별칭이 추가되었습니다.\"])},\n \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 이사\"])},\n \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"이사 갈 계정 (예시. \", _interpolate(_named(\"example\")), \")\"])},\n \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정을 이사했습니다.\"])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"검색 결과나 다른 서비스들에서 이 계정을 찾을 수 있도록 허용\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지를 선택창에서 고를 때 띄어쓰기를 집어넣기\"])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"단어 필터\"])},\n \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"단어 필터 그리고 더보기...\"])},\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"강조\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어 미리보기 숨기기\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 하나 당 최대로 보여질 섬네일 개수 (비워두면 제한을 두지 않습니다)\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스 외치기 숨기기\"])},\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"컬럼 순서 뒤집기\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스 배경화면 가리기\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"민감한 첨부물을 클릭 한 번으로 열기\"])},\n \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"계정을 이사하는 데 에러가 발생했습니다: \", _interpolate(_named(\"error\"))])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트한 사용자의 게시물 숨기기\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"필터된 모든 게시물 숨기기\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"단어 필터된 게시물 숨기기\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부파일의 섬네일을 자르지 않음\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트한 스레드 숨기기\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CSV 파일에서 차단 목록 불러오기\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팝업 프레임에서 비디오를 재생\"])},\n \"file_export_import\": {\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정 백업\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정을 파일로 백업\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정과 테마를 파일로 백업\"])},\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파일에서 설정 복구하기\"])},\n \"errors\": {\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"해당 파일은 지원되지 않는 Pleroma 백업입니다. 아무 일도 일어나지 않았습니다.\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"호환되지 않는 버전: \", _interpolate(_named(\"fileMajor\")), \", 이 PleromaFE (설정 버전 \", _interpolate(_named(\"feMajor\")), \") 가 너무 낡아서 처리할 수 없습니다\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"호환되지 않는 버전: \", _interpolate(_named(\"fileMajor\")), \", 파일 버전이 너무 낡아서 처리할 수 없습니다 (지원되는 최소 설정 버전 \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파일 마이너 버전이 달라서, 몇몇 설정들이 적용되지 않았을 수 있습니다\"])}\n }\n },\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사생활 보안\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 메일 주소\"])},\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내 관심글을 보이지 않음 (알림은 갑니다)\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중 숫자 숨기기\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 숫자 숨기기\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 없음\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단할 사람 검색하기\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트할 사람 검색하기\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 이사\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"참여한 투표가 끝남\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 없음\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내 답글만 보기\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중인 사람들끼리의 답글 보기\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 프로필\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내 프로필에 \\\"중재자\\\" 배지 달기\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트할 도메인 검색하기\"])},\n \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"컬럼 헤더를 화면 상단에 고정하지 않음\"])},\n \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알아서 새 게시물 가져오기\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공개 범위 선택지 줄이기\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 사진 초기화\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"정말 프로필 사진을 초기화할까요?\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 배경 초기화\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 배너 초기화\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"정말 프로필 배너를 초기화할까요?\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"정말 프로필 배경을 초기화할까요?\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"실시간으로 게시물과 알림 받기\"])},\n \"use_websockets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"웹소켓 사용 (실시간 업데이트)\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사진 업로드\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"대화 표시 모양\"])},\n \"conversation_display_tree_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"트리 뷰\"])},\n \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"측면 컬럼의 스크롤바 보기\"])},\n \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 안에 놓기\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"푸시 알림에서 보낸 사람과 내용을 숨김\"])},\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"타임라인 렌더링 최적화\"])},\n \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"@\", \" 문자를 텍스트 대신 아이콘으로 표시\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션에 링크 표시\"])},\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"항상 짧은 이름 사용 (예: \", \"@\", \"foo)\"])},\n \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다른 인스턴스 사용자만 이름 전부 보기 (예: \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"항상 이름 전부 보기 (예: \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_use_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션 링크를 누르면 사용자 카드 보기\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"링크 옆에 프로필 사진 보기\"])},\n \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"누가 날 멘션했을 때 멘션을 강조 표시\"])},\n \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사진 키우기\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"밈 화살표\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"(당신)\\\" 보이기\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"필터\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"추가 설정\"])},\n \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 열기\"])},\n \"version\": {\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프론트엔드 버전\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버전\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"백엔드 버전\"])}\n },\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"즐겁다\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"도메인\"])},\n \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공간이 충분하면, 세 번째 컬럼 채우기\"])},\n \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"세 번째 컬럼 안 보기\"])},\n \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림 컬럼\"])},\n \"third_column_mode_postform\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 편집창과 내비게이션\"])},\n \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"컬럼\"])},\n \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"컬럼 크기\"])},\n \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사이드바\"])},\n \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용\"])},\n \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"트리 뷰에서 더 유연한 탐색을 허용\"])},\n \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"현재 게시물보다 상단의 게시물들을 흐린 텍스트로 표시\"])},\n \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선형\"])},\n \"conversation_display_linear_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선형 뷰\"])},\n \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"답글 더 보기\\\" 버튼을\"])},\n \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 아래에 놓기\"])},\n \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기본적으로 보일 최대 깊이\"])},\n \"user_popover_avatar_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 카드의 사진 클릭 시\"])},\n \"user_popover_avatar_action_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"카드 닫기\"])},\n \"user_popover_avatar_overlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 카드를 프로필 사진 위에 띄우기\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 내용 형식\"])},\n \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"별칭을 가져오는 중 에러 발생: \", _interpolate(_named(\"error\"))])},\n \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"별칭을 추가하는 중 에러 발생: \", _interpolate(_named(\"error\"))])},\n \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션 옆에 유저 프로필 사진을 보임\"])}\n },\n \"timeline\": {\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"접기\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"대화\"])},\n \"error_fetching\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"업데이트 불러오기 실패\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전 게시물 불러오기\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 전용 게시물과 다이렉트 메시지는 리핏할 수 없습니다\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏함\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 게시물 보기\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"최신\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"타임라인을 가져오지 못했습니다: \", _interpolate(_list(0))])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새로고침\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 없음\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 게시물 없음\"])},\n \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"실시간 연결 됨\"])},\n \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"실시간 연결이 끊어짐: CloseEvent 코드 \", _interpolate(_list(0))])},\n \"quick_filter_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"빠른 필터 설정\"])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"승인\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 됨!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"거부\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"요청 보냄!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"요청 중…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"언팔로우\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"나를 팔로우 합니다!\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"당신입니다!\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 됨\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"개 / 일\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다른 인스턴스에서 팔로우\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 해제 중…\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 해제 중…\"])},\n \"admin_menu\": {\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"중재자 탄핵\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 공개 범위를 팔로워 전용으로 강제\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"누구도 팔로우를 못하도록 막기\"])},\n \"delete_user_data_and_deactivate_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"영구적으로 이 계정의 데이터가 삭제되고 비활성화 됩니다. 정말로 괜찮겠습니까?\"])},\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관리\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관리자로 임명\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"중재자로 임명\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다른 인스턴스에서 팔로우하지 못하도록 막기\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 활성화\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 비활성화\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 삭제\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모든 게시물을 민감한 내용으로 표시\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물에서 미디어 제거\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관리자 탄핵\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 공개 범위를 비표시로 강제\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"연합 타임라인에서 사용자 게시물 비허용\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 삭제\"])}\n },\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비활성화됨\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 편집\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심글\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청 취소\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 해제\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 중…\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"숨겨짐\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메시지\"])},\n \"remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 삭제\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"구독\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"구독 해제\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 해제\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 중…\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏 숨기기\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏 보기\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"봇\"])},\n \"highlight\": {\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"강조 표시 없음\"])},\n \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"줄무늬 배경\"])},\n \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"단색 배경\"])},\n \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"옆트임\"])}\n }\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 타임라인\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"죄송하지만, 이 프로필은 존재하지 않습니다.\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"죄송하지만, 프로필을 불러오는 데 에러가 발생했습니다.\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"더 보기\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 추천\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어 업로드\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"답글\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심글\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 설정\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"반응 추가\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청 승인\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청 거절\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"북마크\"])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"업로드 실패.\"])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"파일이 너무 커요 [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"잠시 후에 다시 시도해 보세요\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"업로드 실패: \", _interpolate(_list(0))])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n }\n },\n \"interactions\": {\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 팔로워\"])},\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏과 관심\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 이동\"])},\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지 반응\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전 반응 불러오기\"])}\n },\n \"emoji\": {\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"전체 \", _interpolate(_named(\"emojiAmount\")), \"개의 에모지 불러오기\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode 에모지\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"전용 에모지\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지 넣기\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지 검색\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지\"])},\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"스티커\"])},\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"첫 \", _interpolate(_named(\"saneAmount\")), \"개의 에모지를 불러왔습니다, 에모지를 전부 불러오면 성능 저하가 있을 수 있습니다.\"])},\n \"unicode_groups\": {\n \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사람 & 몸\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"웃는 얼굴 & 감정\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"여행 & 장소\"])},\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"활동\"])},\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"동물 & 자연\"])},\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"깃발\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"음식 & 음료\"])},\n \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사물\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기호\"])}\n },\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"열린 채로 두기\"])},\n \"regional_indicator\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"지역 표시기 \", _interpolate(_named(\"letter\"))])}\n },\n \"polls\": {\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표를 추가\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"표\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표 형식\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표 기간\"])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 표\"]), _normalize([_interpolate(_named(\"count\")), \" 표\"])])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 명 투표\"]), _normalize([_interpolate(_named(\"count\")), \" 명 투표\"])])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선택지\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선택지 추가\"])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"투표는 \", _interpolate(_list(0)), \" 전에 마감되었습니다\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"투표는 \", _interpolate(_list(0)), \"에 마감됩니다\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"하나만 선택\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"여러 개 선택\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선택지가 너무 적습니다\"])}\n },\n \"media_modal\": {\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다음\"])},\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어 뷰어 닫기\"])}\n },\n \"importer\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 파일을 가져올 때 오류가 발생하였습니다.\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"정상히 불러왔습니다.\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보내기\"])}\n },\n \"image_cropper\": {\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"취소\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"그대로 저장\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"저장\"])},\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사진 자르기\"])}\n },\n \"exporter\": {\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"처리중입니다, 곧 파일을 다운로드할 수 있습니다\"])},\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내보내기\"])}\n },\n \"domain_mute_card\": {\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 해제 중…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 해제\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 중…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트\"])}\n },\n \"about\": {\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"운영자\"])},\n \"mrf\": {\n \"simple\": {\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고에 붙혀 있는 매체는 민감함으로 설정됩니다:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"매체를 민감함으로 설정\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고에 붙혀 있는 매체는 제거됩니다:\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"매체 제거\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스에서 아래의 인스턴스들은 \\\"알려진 네트워크\\\" 타임라인에서 제외됩니다:\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"알려진 네트워크\\\" 타임라인에서 제외\"])},\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스는 아래의 인스턴스에게 공개투고만을 보냅니다:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"검역\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고를 받아들이지 않습니다:\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고만이 접수됩니다:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"거부\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"허가\"])},\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스 특유의 정책\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사유\"])},\n \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"없음\"])}\n },\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용되는 MRF 정책\"])},\n \"keyword\": {\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"바꾸기\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"거부\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"알려진 모든 네트워크\\\" 타임라인에서 제외\"])},\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"단어 정책\"])}\n },\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"연합\"])},\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF 정책은 이 인스턴스의 페더레이션 동작을 제어하고 있습니다. 적용되고 있는 정책은 다음과 같습니다:\"])}\n }\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"외치기\"])}\n },\n \"time\": {\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 년\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 년\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 년\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 년\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 주일\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 주일\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 주일\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 주일\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 초\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 초\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 초\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 초\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"지금\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"방금\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 달 전\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 달 전\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 달 전\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 달 전\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 분\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 분\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 분\"])},\n \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 분\"])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 전\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 시간\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 시간\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 시간\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 시간\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 일\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 일\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 일\"])},\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 일\"])},\n \"unit\": {\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"주\"]), _normalize([_interpolate(_list(0)), \"주\"])])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"분\"]), _normalize([_interpolate(_list(0)), \"분\"])])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"초\"]), _normalize([_interpolate(_list(0)), \"초\"])])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"초\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"주\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"년\"]), _normalize([_interpolate(_list(0)), \"년\"])])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"년\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"일\"]), _normalize([_interpolate(_list(0)), \"일\"])])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"일\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"시간\"]), _normalize([_interpolate(_list(0)), \"시간\"])])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"시간\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"분\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"달\"]), _normalize([_interpolate(_list(0)), \"달\"])])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"달\"])}\n },\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 후\"])}\n },\n \"remote_user_resolver\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"찾을 수 없습니다.\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"검색:\"])},\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다른 인스턴스 사용자 안내기\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모두 선택\"])}\n },\n \"lists\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트 제목\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 검색하기\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트 만들기\"])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"만들기\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트 삭제\"])},\n \"following_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중인 사람들만\"])},\n \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트 관리\"])},\n \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멤버 관리\"])},\n \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트에서 제거\"])},\n \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트에 추가\"])},\n \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트에 이미 있음\"])},\n \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"listTitle\")), \" 리스트 편집\"])},\n \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"제목 저장\"])},\n \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트를 삭제하시겠어요?\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"변경 사항을 저장\"])},\n \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 리스트 만들기\"])},\n \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 추가\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"리스트를 조작하는 데 오류가 발생했습니다: \", _interpolate(_list(0))])}\n },\n \"search\": {\n \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"결과 더 없음\"])},\n \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"결과 더 불러오기\"])},\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사람\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"해시태그\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \"명이 말하는 중\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \"명이 말하는 중\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"결과 없음\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드를 잊으셨나요?\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 재설정\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이메일 주소 또는 사용자 이름\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 초기화를 하셔야 하지만, 못 하게 막혀 있습니다. 인스턴스 관리자에게 문의해주세요.\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 초기화를 위해 이메일을 확인해주세요.\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"홈으로 돌아가기\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그인하려면 패스워드를 초기화해야 합니다.\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 초기화를 못 하게 되어 있습니다. 인스턴스 관리자에게 문의해주세요.\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이메일 주소 또는 사용자 이름을 입력하세요. 패스워드 초기화 링크를 메일로 보내드립니다.\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"너무 많은 시도를 했습니다, 나중에 다시 해주세요.\"])}\n },\n \"chats\": {\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"당신:\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"삭제\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 채팅\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"채팅\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메시지가 비어 있습니다\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"더 보기\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"왜인진 모르겠는데 채팅을 불러오지 못했습니다.\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"왜인진 모르겠는데 메시지를 전송하지 못했습니다.\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 메시지를 정말 지울까요?\"])},\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"채팅이 없네요. 새 채팅을 시작해보세요!\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"nickname\")), \"에게 메시지\"])}\n },\n \"file_type\": {\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"오디오\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"영상\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사진\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파일\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"오늘\"])}\n },\n \"update\": {\n \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"양해해주세요\"])},\n \"update_bugs_gitlab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma GitLab\"])},\n \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"변경 내역\"])},\n \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"무엇이 바뀌었는지 자세히 알아보시려면, \", _interpolate(_named(\"theFullChangelog\")), \"을 참조하세요.\"])},\n \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"저희가 한동안 릴리즈를 안 해서, 익숙하셨던 생김새나 경험과 많이 달라졌을 수 있습니다.\"])},\n \"update_bugs\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"저희가 비록 테스트를 많이 하고 직접 개발 버전을 쓰기도 하지만, 많이 바꾸기도 했고, 몇몇 가지 놓친 점들이 있을 터이니, 사용하면서 불편한 점이나 문제는 \", _interpolate(_named(\"pleromaGitlab\")), \"에 제보해주시면 감사하겠습니다. 저희는 겪으신 문제점이나 Pleroma와 Pleroma-FE에 대한 피드백과 제안을 환영합니다.\"])}\n },\n \"unicode_domain_indicator\": {\n \"tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 도메인은 아스키 문자가 아닌 문자를 포함하고 있습니다.\"])}\n },\n \"status\": {\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"대화 뮤트\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", 단어 포함:\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필에서 고정 해제\"])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"답글 (+\", _interpolate(_named(\"numReplies\")), \"개):\"]), _normalize([\"답글 (+\", _interpolate(_named(\"numReplies\")), \"개):\"])])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어 모달에서 보기\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 스레드 숨기기\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설명 미리보기 (첨부물을 열어서 전체 설명 보기)\"])},\n \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"이 스레드를 전부 들춰보기 (총 \", _interpolate(_named(\"numStatus\")), \"개 있음, 최대 깊이 \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"이 스레드를 전부 들춰보기 (총 \", _interpolate(_named(\"numStatus\")), \"개 있음, 최대 깊이 \", _interpolate(_named(\"depth\")), \")\"])])},\n \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"이 스레드의 나머지 부분 보기 (총 \", _interpolate(_named(\"numStatus\")), \"개)\"]), _normalize([\"이 스레드의 나머지 부분 보기 (총 \", _interpolate(_named(\"numStatus\")), \"개)\"])])},\n \"status_history\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 이력\"])},\n \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"전체 대화 보기 (\", _interpolate(_named(\"numStatus\")), \"개 더 있음)\"]), _normalize([\"전체 대화 보기 (\", _interpolate(_named(\"numStatus\")), \"개 더 있음)\"])])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"삭제\"])},\n \"edit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"수정\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심글\"])},\n \"edited_at\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(\", _interpolate(_named(\"time\")), \"에 마지막으로 수정됨)\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필에 고정\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"고정됨\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"북마크\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"북마크 해제\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"정말 지우시겠어요?\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"답글\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"답글:\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"대화 뮤트 해제\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"스레드 뮤트됨\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 접근 불가\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 링크 복사\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"원본 페이지\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"전체 제목 보기\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"전체 제목 숨기기\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용 보기\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용 숨기기\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"지워진 게시물입니다\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"민감한 내용\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"펼치기\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(당신)\"])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \"개 더 있음\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"number\")), \"개의 첨부물을 가짐\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 전부 보이기\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 숨기기\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 접기\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 지우기\"])},\n \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"플래시 플레이어 정지\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 왼쪽으로 밀기\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 오른쪽으로 밀기\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"갤러리 열기\"])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 스레드 보이기\"])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"이 게시물 아래 \", _interpolate(_named(\"numReplies\")), \"개 답글 더 보기\"]), _normalize([\"이 게시물 아래 \", _interpolate(_named(\"numReplies\")), \"개 답글 더 보기\"])])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 게시물의 답글만 보기\"])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma가 브라우저 저장소에 접근할 수 없습니다. 로그인이 풀리거나 로컬 설정이 초기화 되는 등 예상치 못한 문제를 겪을 수 있습니다. 쿠키를 활성화 해보세요.\"])}\n },\n \"report\": {\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고자:\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고된 게시물:\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기타:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"상태:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"열림\"])},\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"닫힘\"])},\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고된 사용자:\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"해결됨\"])}\n },\n \"user_reporting\": {\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 신고\"])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 신고서는 내 인스턴스의 중재자에게 전달됩니다. 왜 이 계정을 신고하려는지 좀 더 자세히 알려주세요:\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"추가 설명\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 계정은 다른 서버에 있는 계정입니다. 그쪽으로도 신고를 보낼까요?\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"로 전달하기\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"전송\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"요청을 처리하는 중 오류가 발생했습니다.\"])}\n },\n \"announcements\": {\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"끝나는 시각: \"])},\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공지사항\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공지사항\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"읽음으로 표시\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공지사항 작성\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공지사항 내용을 작성하세요...\"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"오류: \", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"닫기\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"삭제\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"시작 시각: \"])},\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"온종일 있는 이벤트입니다\"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \"에 게시함\"])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \"에 시작함\"])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \"에 끝남\"])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"편집\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"수정본 반영\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"취소\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 공지사항은 비활성화 되었습니다\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","list","_list","named","_named","plural","_plural"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/i18n/ko-json.9029d09084bb22d8b705.js b/priv/static/static/js/i18n/ko-json.9029d09084bb22d8b705.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[9670],{10707:(r,n,e)=>{e.r(n),e.d(n,{default:()=>t});const t={chat:{title:r=>{const{normalize:n}=r;return n(["챗"])}},features_panel:{chat:r=>{const{normalize:n}=r;return n(["챗"])},gopher:r=>{const{normalize:n}=r;return n(["Gopher"])},media_proxy:r=>{const{normalize:n}=r;return n(["미디어 프록시"])},scope_options:r=>{const{normalize:n}=r;return n(["범위 옵션"])},text_limit:r=>{const{normalize:n}=r;return n(["텍스트 제한"])},title:r=>{const{normalize:n}=r;return n(["기능"])},who_to_follow:r=>{const{normalize:n}=r;return n(["팔로우 추천"])},upload_limit:r=>{const{normalize:n}=r;return n(["최대 파일용량"])},pleroma_chat_messages:r=>{const{normalize:n}=r;return n(["Pleroma 채팅"])},shout:r=>{const{normalize:n}=r;return n(["외치기"])}},finder:{error_fetching_user:r=>{const{normalize:n}=r;return n(["사용자 정보 불러오기 실패"])},find_user:r=>{const{normalize:n}=r;return n(["사용자 찾기"])}},general:{apply:r=>{const{normalize:n}=r;return n(["적용"])},submit:r=>{const{normalize:n}=r;return n(["보내기"])},loading:r=>{const{normalize:n}=r;return n(["로딩중…"])},peek:r=>{const{normalize:n}=r;return n(["살짝 보기"])},close:r=>{const{normalize:n}=r;return n(["닫기"])},verify:r=>{const{normalize:n}=r;return n(["검사"])},confirm:r=>{const{normalize:n}=r;return n(["확인"])},enable:r=>{const{normalize:n}=r;return n(["활성화"])},disable:r=>{const{normalize:n}=r;return n(["비활성화"])},cancel:r=>{const{normalize:n}=r;return n(["취소"])},dismiss:r=>{const{normalize:n}=r;return n(["무시"])},show_less:r=>{const{normalize:n}=r;return n(["접기"])},show_more:r=>{const{normalize:n}=r;return n(["더 보기"])},optional:r=>{const{normalize:n}=r;return n(["필수 아님"])},retry:r=>{const{normalize:n}=r;return n(["다시 시도하십시오"])},error_retry:r=>{const{normalize:n}=r;return n(["다시 시도하십시오"])},generic_error:r=>{const{normalize:n}=r;return n(["에러가 발생했습니다"])},more:r=>{const{normalize:n}=r;return n(["더 보기"])},role:{moderator:r=>{const{normalize:n}=r;return n(["중재자"])},admin:r=>{const{normalize:n}=r;return n(["관리자"])}},undo:r=>{const{normalize:n}=r;return n(["취소"])},yes:r=>{const{normalize:n}=r;return n(["네"])},no:r=>{const{normalize:n}=r;return n(["아니오"])},unpin:r=>{const{normalize:n}=r;return n(["고정 해제"])},pin:r=>{const{normalize:n}=r;return n(["고정"])},scope_in_timeline:{private:r=>{const{normalize:n}=r;return n(["팔로워 전용"])},public:r=>{const{normalize:n}=r;return n(["공개"])},unlisted:r=>{const{normalize:n}=r;return n(["비표시"])},direct:r=>{const{normalize:n}=r;return n(["다이렉트"])}},flash_content:r=>{const{normalize:n}=r;return n(["클릭해서 플래시 컨텐츠 보기 (Ruffle 사용, 작동하지 않을 수 있습니다)."])},flash_security:r=>{const{normalize:n}=r;return n(["플래시 컨텐츠는 임의 코드 실행이 아직도 가능할 수 있기에 위험할 수 있습니다."])},flash_fail:r=>{const{normalize:n}=r;return n(["플래시를 로드하지 못했습니다, 콘솔로 자세한 내용을 확인하세요."])},scroll_to_top:r=>{const{normalize:n}=r;return n(["맨 위로 올라가기"])},generic_error_message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["에러가 발생했습니다: ",e(t(0))])},never_show_again:r=>{const{normalize:n}=r;return n(["다시 보지 않기"])}},login:{login:r=>{const{normalize:n}=r;return n(["로그인"])},description:r=>{const{normalize:n}=r;return n(["OAuth로 로그인"])},logout:r=>{const{normalize:n}=r;return n(["로그아웃"])},password:r=>{const{normalize:n}=r;return n(["패스워드"])},placeholder:r=>{const{normalize:n}=r;return n(["예시: lain"])},register:r=>{const{normalize:n}=r;return n(["가입"])},username:r=>{const{normalize:n}=r;return n(["사용자 이름"])},heading:{recovery:r=>{const{normalize:n}=r;return n(["2단계 복구"])},totp:r=>{const{normalize:n}=r;return n(["2단계인증"])}},recovery_code:r=>{const{normalize:n}=r;return n(["복구 코드"])},enter_two_factor_code:r=>{const{normalize:n}=r;return n(["2단계인증 코드를 입력하십시오"])},enter_recovery_code:r=>{const{normalize:n}=r;return n(["복구 코드를 입력하십시오"])},authentication_code:r=>{const{normalize:n}=r;return n(["인증 코드"])},hint:r=>{const{normalize:n}=r;return n(["로그인해서 대화에 참여"])},logout_confirm_title:r=>{const{normalize:n}=r;return n(["로그아웃 확인"])},logout_confirm:r=>{const{normalize:n}=r;return n(["정말 로그아웃 하시겠습니까?"])},logout_confirm_accept_button:r=>{const{normalize:n}=r;return n(["로그아웃"])},logout_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["로그아웃 안 함"])}},nav:{about:r=>{const{normalize:n}=r;return n(["인스턴스 소개"])},back:r=>{const{normalize:n}=r;return n(["뒤로"])},chat:r=>{const{normalize:n}=r;return n(["로컬 챗"])},friend_requests:r=>{const{normalize:n}=r;return n(["팔로우 요청"])},mentions:r=>{const{normalize:n}=r;return n(["멘션"])},dms:r=>{const{normalize:n}=r;return n(["다이렉트 메시지"])},public_tl:r=>{const{normalize:n}=r;return n(["공개 타임라인"])},timeline:r=>{const{normalize:n}=r;return n(["타임라인"])},twkn:r=>{const{normalize:n}=r;return n(["알려진 네트워크"])},user_search:r=>{const{normalize:n}=r;return n(["사용자 검색"])},preferences:r=>{const{normalize:n}=r;return n(["환경설정"])},chats:r=>{const{normalize:n}=r;return n(["채팅"])},timelines:r=>{const{normalize:n}=r;return n(["타임라인"])},who_to_follow:r=>{const{normalize:n}=r;return n(["추천된 사용자"])},search:r=>{const{normalize:n}=r;return n(["검색"])},bookmarks:r=>{const{normalize:n}=r;return n(["북마크"])},interactions:r=>{const{normalize:n}=r;return n(["알림"])},administration:r=>{const{normalize:n}=r;return n(["관리"])},home_timeline:r=>{const{normalize:n}=r;return n(["홈 타임라인"])},mobile_notifications:r=>{const{normalize:n}=r;return n(["알림 열기 (읽지 않은 알림이 있습니다)"])},lists:r=>{const{normalize:n}=r;return n(["리스트"])},edit_nav_mobile:r=>{const{normalize:n}=r;return n(["네비게이션 바 커스텀하기"])},edit_pinned:r=>{const{normalize:n}=r;return n(["상단 고정 편집"])},edit_finish:r=>{const{normalize:n}=r;return n(["편집 종료"])},mobile_notifications_close:r=>{const{normalize:n}=r;return n(["알림 닫기"])},mobile_sidebar:r=>{const{normalize:n}=r;return n(["모바일 사이드바 토글"])},announcements:r=>{const{normalize:n}=r;return n(["공지사항"])},search_close:r=>{const{normalize:n}=r;return n(["검색 바 닫기"])}},notifications:{broken_favorite:r=>{const{normalize:n}=r;return n(["알 수 없는 게시물입니다, 검색합니다…"])},favorited_you:r=>{const{normalize:n}=r;return n(["관심을 가짐"])},followed_you:r=>{const{normalize:n}=r;return n(["팔로우함"])},load_older:r=>{const{normalize:n}=r;return n(["이전 알림 불러오기"])},notifications:r=>{const{normalize:n}=r;return n(["알림"])},read:r=>{const{normalize:n}=r;return n(["읽음!"])},repeated_you:r=>{const{normalize:n}=r;return n(["리핏함"])},no_more_notifications:r=>{const{normalize:n}=r;return n(["알림이 없습니다"])},migrated_to:r=>{const{normalize:n}=r;return n(["이사했습니다"])},reacted_with:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 로 반응했습니다"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["알림 불러오기 실패: ",e(t(0))])},follow_request:r=>{const{normalize:n}=r;return n(["팔로우 요청"])},submitted_report:r=>{const{normalize:n}=r;return n(["신고 내용을 전송함"])},poll_ended:r=>{const{normalize:n}=r;return n(["투표가 끝남"])}},post_status:{new_status:r=>{const{normalize:n}=r;return n(["새 게시물 게시"])},account_not_locked_warning:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["계정이 ",e(t(0))," 상태가 아닙니다. 누구나 당신을 팔로우 하고 팔로워 전용 게시물을 볼 수 있습니다."])},account_not_locked_warning_link:r=>{const{normalize:n}=r;return n(["잠김"])},attachments_sensitive:r=>{const{normalize:n}=r;return n(["첨부물을 민감함으로 설정"])},content_type:{"text/plain":r=>{const{normalize:n}=r;return n(["평문"])},"text/bbcode":r=>{const{normalize:n}=r;return n(["BBCode"])},"text/markdown":r=>{const{normalize:n}=r;return n(["마크다운"])},"text/html":r=>{const{normalize:n}=r;return n(["HTML"])}},content_warning:r=>{const{normalize:n}=r;return n(["제목 (선택)"])},default:r=>{const{normalize:n}=r;return n(["인천공항에 도착했습니다."])},direct_warning:r=>{const{normalize:n}=r;return n(["이 게시물을 멘션 된 사용자들에게만 보여집니다"])},posting:r=>{const{normalize:n}=r;return n(["게시 중"])},scope:{direct:r=>{const{normalize:n}=r;return n(["다이렉트 - 멘션 된 사용자들에게만"])},private:r=>{const{normalize:n}=r;return n(["팔로워 전용 - 팔로워들에게만"])},public:r=>{const{normalize:n}=r;return n(["공개 - 공개 타임라인으로"])},unlisted:r=>{const{normalize:n}=r;return n(["비표시 - 공개 타임라인에는 안 보이게"])}},preview_empty:r=>{const{normalize:n}=r;return n(["비어있음"])},preview:r=>{const{normalize:n}=r;return n(["미리보기"])},scope_notice:{public:r=>{const{normalize:n}=r;return n(["누구나 볼 수 있습니다"])},private:r=>{const{normalize:n}=r;return n(["팔로워에게만 보여집니다"])},unlisted:r=>{const{normalize:n}=r;return n(["공개 타임라인이나 알려진 네트워크에는 보여지지 않습니다"])}},media_description_error:r=>{const{normalize:n}=r;return n(["파일을 올리지 못했습니다, 다시 시도해 보세요"])},empty_status_error:r=>{const{normalize:n}=r;return n(["게시물이 비어 있습니다"])},media_description:r=>{const{normalize:n}=r;return n(["첨부파일 설명"])},direct_warning_to_all:r=>{const{normalize:n}=r;return n(["멘션한 모든 사용자에게 보여집니다."])},edit_unsupported_warning:r=>{const{normalize:n}=r;return n(["Pleroma는 멘션이나 투표를 수정하는 기능을 지원하지 않습니다."])},edit_status:r=>{const{normalize:n}=r;return n(["수정"])},edit_remote_warning:r=>{const{normalize:n}=r;return n(["수정 기능이 없는 다른 인스턴스에서는 수정한 사항이 반영되지 않을 수 있습니다."])},post:r=>{const{normalize:n}=r;return n(["게시"])},direct_warning_to_first_only:r=>{const{normalize:n}=r;return n(["맨 앞에 멘션한 사용자들에게만 보여집니다."])},content_type_selection:r=>{const{normalize:n}=r;return n(["게시물 형태"])},scope_notice_dismiss:r=>{const{normalize:n}=r;return n(["알림 닫기"])}},registration:{bio:r=>{const{normalize:n}=r;return n(["소개"])},email:r=>{const{normalize:n}=r;return n(["이메일"])},fullname:r=>{const{normalize:n}=r;return n(["표시될 이름"])},password_confirm:r=>{const{normalize:n}=r;return n(["패스워드 확인"])},registration:r=>{const{normalize:n}=r;return n(["가입하기"])},token:r=>{const{normalize:n}=r;return n(["초대 토큰"])},captcha:r=>{const{normalize:n}=r;return n(["캡차"])},new_captcha:r=>{const{normalize:n}=r;return n(["이미지를 클릭해서 새로운 캡차 가져오기"])},validations:{username_required:r=>{const{normalize:n}=r;return n(["공백으로 둘 수 없습니다"])},fullname_required:r=>{const{normalize:n}=r;return n(["공백으로 둘 수 없습니다"])},email_required:r=>{const{normalize:n}=r;return n(["공백으로 둘 수 없습니다"])},password_required:r=>{const{normalize:n}=r;return n(["공백으로 둘 수 없습니다"])},password_confirmation_required:r=>{const{normalize:n}=r;return n(["공백으로 둘 수 없습니다"])},password_confirmation_match:r=>{const{normalize:n}=r;return n(["패스워드와 일치해야 합니다"])},birthday_required:r=>{const{normalize:n}=r;return n(["공백으로 둘 수 없습니다"])},birthday_min_age:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("date"))," 또는 그 이전 출생만 가능합니다"])}},fullname_placeholder:r=>{const{normalize:n}=r;return n(["예: 김례인"])},username_placeholder:r=>{const{normalize:n}=r;return n(["예: lain"])},bio_placeholder:r=>{const{normalize:n}=r;return n(["예시\n안녕하세요, 례인입니다.\n일본 시외에서 애니메이션 아이돌을 하고 있습니다. Wired에서 절 보셨을 거예요."])},bio_optional:r=>{const{normalize:n}=r;return n(["소개 (선택)"])},email_optional:r=>{const{normalize:n}=r;return n(["이메일 (선택)"])},reason:r=>{const{normalize:n}=r;return n(["가입하려는 이유"])},reason_placeholder:r=>{const{normalize:n}=r;return n(["이 인스턴스는 수동으로 가입을 승인하고 있습니다.\n왜 가입하고 싶은지 관리자에게 알려주세요."])},register:r=>{const{normalize:n}=r;return n(["가입"])},email_language:r=>{const{normalize:n}=r;return n(["무슨 언어로 이메일을 받길 원하시나요?"])},birthday:r=>{const{normalize:n}=r;return n(["생일:"])},birthday_optional:r=>{const{normalize:n}=r;return n(["생일 (선택):"])}},settings:{attachmentRadius:r=>{const{normalize:n}=r;return n(["첨부물"])},attachments:r=>{const{normalize:n}=r;return n(["첨부물"])},avatar:r=>{const{normalize:n}=r;return n(["프로필 사진"])},avatarAltRadius:r=>{const{normalize:n}=r;return n(["프로필 사진 (알림창)"])},avatarRadius:r=>{const{normalize:n}=r;return n(["프로필 사진"])},background:r=>{const{normalize:n}=r;return n(["배경"])},bio:r=>{const{normalize:n}=r;return n(["소개"])},btnRadius:r=>{const{normalize:n}=r;return n(["버튼"])},cBlue:r=>{const{normalize:n}=r;return n(["파랑 (답글, 팔로우)"])},cGreen:r=>{const{normalize:n}=r;return n(["초록 (리트윗)"])},cOrange:r=>{const{normalize:n}=r;return n(["주황 (관심글)"])},cRed:r=>{const{normalize:n}=r;return n(["빨강 (취소)"])},change_password:r=>{const{normalize:n}=r;return n(["패스워드 바꾸기"])},change_password_error:r=>{const{normalize:n}=r;return n(["패스워드를 바꾸는 데 문제가 있습니다."])},changed_password:r=>{const{normalize:n}=r;return n(["패스워드가 바뀌었습니다!"])},collapse_subject:r=>{const{normalize:n}=r;return n(["제목이 있는 게시물 접기"])},composing:r=>{const{normalize:n}=r;return n(["작성"])},confirm_new_password:r=>{const{normalize:n}=r;return n(["새 패스워드 확인"])},current_avatar:r=>{const{normalize:n}=r;return n(["현재 아바타"])},current_password:r=>{const{normalize:n}=r;return n(["현재 패스워드"])},current_profile_banner:r=>{const{normalize:n}=r;return n(["현재 프로필 배너"])},data_import_export_tab:r=>{const{normalize:n}=r;return n(["데이터 불러오기 / 내보내기"])},default_vis:r=>{const{normalize:n}=r;return n(["기본 공개 범위"])},delete_account:r=>{const{normalize:n}=r;return n(["계정 삭제"])},delete_account_description:r=>{const{normalize:n}=r;return n(["데이터가 영구히 삭제되고 계정이 비활성화됩니다."])},delete_account_error:r=>{const{normalize:n}=r;return n(["계정을 삭제하는데 문제가 있습니다. 계속 발생한다면 인스턴스 관리자에게 문의하세요."])},delete_account_instructions:r=>{const{normalize:n}=r;return n(["아래 패스워드를 입력하시면 계정이 삭제됩니다."])},export_theme:r=>{const{normalize:n}=r;return n(["프리셋 저장"])},filtering:r=>{const{normalize:n}=r;return n(["필터링"])},filtering_explanation:r=>{const{normalize:n}=r;return n(["이 단어를 가진 게시물들은 뮤트됩니다, 한 줄에 하나씩 적으세요"])},follow_export:r=>{const{normalize:n}=r;return n(["팔로우 내보내기"])},follow_export_button:r=>{const{normalize:n}=r;return n(["팔로우 목록을 CSV 파일로 내보내기"])},follow_export_processing:r=>{const{normalize:n}=r;return n(["진행 중입니다, 곧 다운로드 가능해 질 것입니다"])},follow_import:r=>{const{normalize:n}=r;return n(["팔로우 불러오기"])},follow_import_error:r=>{const{normalize:n}=r;return n(["팔로우 불러오기 실패"])},follows_imported:r=>{const{normalize:n}=r;return n(["팔로우 목록을 불러왔습니다! 처리에는 시간이 걸립니다."])},foreground:r=>{const{normalize:n}=r;return n(["표면"])},general:r=>{const{normalize:n}=r;return n(["일반"])},hide_attachments_in_convo:r=>{const{normalize:n}=r;return n(["대화의 첨부물 숨기기"])},hide_attachments_in_tl:r=>{const{normalize:n}=r;return n(["타임라인의 첨부물 숨기기"])},hide_isp:r=>{const{normalize:n}=r;return n(["인스턴스 전용 패널 숨기기"])},preload_images:r=>{const{normalize:n}=r;return n(["이미지 미리 불러오기"])},hide_post_stats:r=>{const{normalize:n}=r;return n(["게시물 통계 숨기기 (관심글 수 등)"])},hide_user_stats:r=>{const{normalize:n}=r;return n(["사용자 통계 숨기기 (팔로워 수 등)"])},import_followers_from_a_csv_file:r=>{const{normalize:n}=r;return n(["CSV 파일에서 팔로우 목록 불러오기"])},import_theme:r=>{const{normalize:n}=r;return n(["프리셋 불러오기"])},inputRadius:r=>{const{normalize:n}=r;return n(["입력 칸"])},checkboxRadius:r=>{const{normalize:n}=r;return n(["체크박스"])},instance_default:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["(기본: ",e(t("value")),")"])},instance_default_simple:r=>{const{normalize:n}=r;return n(["(기본)"])},interface:r=>{const{normalize:n}=r;return n(["인터페이스"])},interfaceLanguage:r=>{const{normalize:n}=r;return n(["인터페이스 언어"])},invalid_theme_imported:r=>{const{normalize:n}=r;return n(["해당 파일은 지원되지 않는 Pleroma 테마입니다. 아무 일도 일어나지 않았습니다."])},limited_availability:r=>{const{normalize:n}=r;return n(["이 브라우저에서 사용 불가"])},links:r=>{const{normalize:n}=r;return n(["링크"])},lock_account_description:r=>{const{normalize:n}=r;return n(["팔로워를 승인해서 받도록 제한"])},loop_video:r=>{const{normalize:n}=r;return n(["비디오 반복재생"])},loop_video_silent_only:r=>{const{normalize:n}=r;return n(['소리가 없는 비디오만 반복 재생 (마스토돈의 "GIF" 같은 것들)'])},name:r=>{const{normalize:n}=r;return n(["이름"])},name_bio:r=>{const{normalize:n}=r;return n(["이름 & 소개"])},new_password:r=>{const{normalize:n}=r;return n(["새 패스워드"])},notification_visibility:r=>{const{normalize:n}=r;return n(["보여질 알림 종류"])},notification_visibility_follows:r=>{const{normalize:n}=r;return n(["팔로우"])},notification_visibility_likes:r=>{const{normalize:n}=r;return n(["관심글"])},notification_visibility_mentions:r=>{const{normalize:n}=r;return n(["멘션"])},notification_visibility_repeats:r=>{const{normalize:n}=r;return n(["리핏"])},no_rich_text_description:r=>{const{normalize:n}=r;return n(["모든 게시물의 서식을 지우기"])},hide_follows_description:r=>{const{normalize:n}=r;return n(["팔로우 중인 사람 숨기기"])},hide_followers_description:r=>{const{normalize:n}=r;return n(["팔로워 숨기기"])},nsfw_clickthrough:r=>{const{normalize:n}=r;return n(["민감한 이미지를 숨기기"])},oauth_tokens:r=>{const{normalize:n}=r;return n(["OAuth 토큰"])},token:r=>{const{normalize:n}=r;return n(["토큰"])},refresh_token:r=>{const{normalize:n}=r;return n(["토큰 새로 고침"])},valid_until:r=>{const{normalize:n}=r;return n(["만료일"])},revoke_token:r=>{const{normalize:n}=r;return n(["취소"])},panelRadius:r=>{const{normalize:n}=r;return n(["패널"])},pause_on_unfocused:r=>{const{normalize:n}=r;return n(["탭이 포커스되지 않았을 땐 멈추기"])},presets:r=>{const{normalize:n}=r;return n(["프리셋"])},profile_background:r=>{const{normalize:n}=r;return n(["프로필 배경"])},profile_banner:r=>{const{normalize:n}=r;return n(["프로필 배너"])},profile_tab:r=>{const{normalize:n}=r;return n(["프로필"])},radii_help:r=>{const{normalize:n}=r;return n(["인터페이스 모서리 둥글기 (픽셀 단위)"])},replies_in_timeline:r=>{const{normalize:n}=r;return n(["타임라인의 답글"])},reply_visibility_all:r=>{const{normalize:n}=r;return n(["모든 답글 보기"])},reply_visibility_following:r=>{const{normalize:n}=r;return n(["나에게 직접 오거나 내가 팔로우 중인 사람이 보낸 답글만 보기"])},reply_visibility_self:r=>{const{normalize:n}=r;return n(["나에게 직접 온 답글만 보기"])},saving_err:r=>{const{normalize:n}=r;return n(["설정을 저장하는 데 에러가 발생했습니다"])},saving_ok:r=>{const{normalize:n}=r;return n(["설정 저장 됨"])},security_tab:r=>{const{normalize:n}=r;return n(["보안"])},scope_copy:r=>{const{normalize:n}=r;return n(["답글을 달 때 공개 범위 따라가기 (다이렉트 메시지는 언제나 따라감)"])},set_new_avatar:r=>{const{normalize:n}=r;return n(["새 프로필 사진 설정"])},set_new_profile_background:r=>{const{normalize:n}=r;return n(["새 프로필 배경 설정"])},set_new_profile_banner:r=>{const{normalize:n}=r;return n(["새 프로필 배너 설정"])},settings:r=>{const{normalize:n}=r;return n(["설정"])},subject_input_always_show:r=>{const{normalize:n}=r;return n(["항상 제목 입력창 보이기"])},subject_line_behavior:r=>{const{normalize:n}=r;return n(["답글을 달 때 제목 복사하기"])},subject_line_email:r=>{const{normalize:n}=r;return n(['이메일처럼: "re: 제목"'])},subject_line_mastodon:r=>{const{normalize:n}=r;return n(["마스토돈처럼: 그대로 복사"])},subject_line_noop:r=>{const{normalize:n}=r;return n(["복사 안 함"])},stop_gifs:r=>{const{normalize:n}=r;return n(["마우스를 올려서 GIF 재생"])},streaming:r=>{const{normalize:n}=r;return n(["최상단에 도달하면 알아서 새 게시물 가져오기"])},text:r=>{const{normalize:n}=r;return n(["텍스트"])},theme:r=>{const{normalize:n}=r;return n(["테마"])},theme_help:r=>{const{normalize:n}=r;return n(["16진수 색상코드(#rrggbb)를 사용해 색상을 조정하세요."])},theme_help_v2_1:r=>{const{normalize:n}=r;return n(['체크박스를 통해 몇몇 컴포넌트의 색상과 불투명도를 조절 가능, "모두 지우기" 버튼으로 덮어 씌운 것을 모두 취소.'])},theme_help_v2_2:r=>{const{normalize:n}=r;return n(["몇몇 입력칸 밑의 아이콘은 전경/배경 대비 관련 표시등입니다, 마우스를 올려 자세한 정보를 볼 수 있습니다. 투명도 대비 표시등이 가장 최악의 경우를 나타낸다는 것을 유의하세요."])},tooltipRadius:r=>{const{normalize:n}=r;return n(["툴팁/경고"])},user_settings:r=>{const{normalize:n}=r;return n(["사용자 설정"])},values:{false:r=>{const{normalize:n}=r;return n(["아니오"])},true:r=>{const{normalize:n}=r;return n(["네"])}},notifications:r=>{const{normalize:n}=r;return n(["알림"])},enable_web_push_notifications:r=>{const{normalize:n}=r;return n(["웹 푸시 알림 활성화"])},style:{switcher:{keep_color:r=>{const{normalize:n}=r;return n(["색상 유지"])},keep_shadows:r=>{const{normalize:n}=r;return n(["그림자 유지"])},keep_opacity:r=>{const{normalize:n}=r;return n(["불투명도 유지"])},keep_roundness:r=>{const{normalize:n}=r;return n(["둥글기 유지"])},keep_fonts:r=>{const{normalize:n}=r;return n(["글꼴 유지"])},save_load_hint:r=>{const{normalize:n}=r;return n(['"유지" 옵션들은 다른 테마를 고르거나 불러 올 때 현재 설정 된 옵션들을 건드리지 않게 합니다, 테마를 내보내기 할 때도 이 옵션에 따라 저장합니다. 아무 것도 체크 되지 않았다면 모든 설정을 내보냅니다.'])},reset:r=>{const{normalize:n}=r;return n(["초기화"])},clear_all:r=>{const{normalize:n}=r;return n(["모두 지우기"])},clear_opacity:r=>{const{normalize:n}=r;return n(["불투명도 지우기"])},help:{upgraded_from_v2:r=>{const{normalize:n}=r;return n(["PleromaFE가 업그레이드 되었기에, 테마가 기억하시던 것과 조금 다를 수 있습니다."])},v2_imported:r=>{const{normalize:n}=r;return n(["불러온 파일은 이곳보다 이전 버전의 FE에서 만들어졌습니다. 호환성을 유지하겠지만 깨진 부분이 있을 수 있습니다."])},migration_snapshot_ok:r=>{const{normalize:n}=r;return n(["혹시나 싶어서, 테마 스냅샷을 불러왔습니다. 테마 데이터를 불러와도 됩니다."])},snapshot_source_mismatch:r=>{const{normalize:n}=r;return n(["버전이 충돌됩니다: 아마 FE가 롤백되고 다시 업데이트 되어서일 건데, 이전 버전 FE로 테마를 수정했다면 이전 버전 FE를 써보시는 게 좋고, 아니면 새 버전을 쓰세요."])},future_version_imported:r=>{const{normalize:n}=r;return n(["불러온 파일은 이곳보다 새 버전의 FE에서 만들어졌습니다."])},older_version_imported:r=>{const{normalize:n}=r;return n(["불러온 파일은 이곳보다 이전 버전의 FE에서 만들어졌습니다."])},snapshot_present:r=>{const{normalize:n}=r;return n(["테마 스냅샷이 있어서, 모든 값이 덮어 씌워졌습니다. 직접 테마의 실제 데이터를 대신 불러와도 됩니다."])},snapshot_missing:r=>{const{normalize:n}=r;return n(["파일에 스냅샷이 없어서 원래 보였던 것보다 다르게 보일 수 있습니다."])},fe_upgraded:r=>{const{normalize:n}=r;return n(["버전 업데이트로 PleromaFE의 테마 엔진이 업그레이드 되었습니다."])},fe_downgraded:r=>{const{normalize:n}=r;return n(["PleromaFE의 버전이 롤백되었습니다."])},migration_napshot_gone:r=>{const{normalize:n}=r;return n(["뭔 일인진 모르겠지만 스냅샷이 없어서, 몇몇 개가 기억하신 것과 달리 보일 수 있습니다."])}},load_theme:r=>{const{normalize:n}=r;return n(["테마 불러오기"])},keep_as_is:r=>{const{normalize:n}=r;return n(["그대로 두기"])},use_snapshot:r=>{const{normalize:n}=r;return n(["이전 버전"])},use_source:r=>{const{normalize:n}=r;return n(["새 버전"])}},common:{color:r=>{const{normalize:n}=r;return n(["색상"])},opacity:r=>{const{normalize:n}=r;return n(["불투명도"])},contrast:{hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["색상 대비율이 ",e(t("ratio")),"입니다, ",e(t("context"))," ",e(t("level"))])},level:{aa:r=>{const{normalize:n}=r;return n(["접근성 가이드라인 AA등급을 충족합니다 (최소)"])},aaa:r=>{const{normalize:n}=r;return n(["접근성 가이드라인 AAA등급을 충족합니다 (권장)"])},bad:r=>{const{normalize:n}=r;return n(["접근성 가이드라인을 충족하지 못합니다"])}},context:{"18pt":r=>{const{normalize:n}=r;return n(["큰 (18pt 이상) 텍스트에 대해"])},text:r=>{const{normalize:n}=r;return n(["일반 텍스트에 대해"])}}}},common_colors:{_tab_label:r=>{const{normalize:n}=r;return n(["일반"])},main:r=>{const{normalize:n}=r;return n(["일반 색상"])},foreground_hint:r=>{const{normalize:n}=r;return n(['"고급" 탭에서 더 자세한 설정이 가능합니다'])},rgbo:r=>{const{normalize:n}=r;return n(["아이콘, 강조, 배지"])}},advanced_colors:{_tab_label:r=>{const{normalize:n}=r;return n(["고급"])},alert:r=>{const{normalize:n}=r;return n(["주의 배경"])},alert_error:r=>{const{normalize:n}=r;return n(["에러"])},badge:r=>{const{normalize:n}=r;return n(["배지 배경"])},badge_notification:r=>{const{normalize:n}=r;return n(["알림"])},panel_header:r=>{const{normalize:n}=r;return n(["패널 헤더"])},top_bar:r=>{const{normalize:n}=r;return n(["상단 바"])},borders:r=>{const{normalize:n}=r;return n(["테두리"])},buttons:r=>{const{normalize:n}=r;return n(["버튼"])},inputs:r=>{const{normalize:n}=r;return n(["입력칸"])},faint_text:r=>{const{normalize:n}=r;return n(["흐려진 텍스트"])},chat:{border:r=>{const{normalize:n}=r;return n(["경계선"])},outgoing:r=>{const{normalize:n}=r;return n(["보냄"])},incoming:r=>{const{normalize:n}=r;return n(["받음"])}},selectedMenu:r=>{const{normalize:n}=r;return n(["선택된 메뉴 요소"])},selectedPost:r=>{const{normalize:n}=r;return n(["선택된 글"])},icons:r=>{const{normalize:n}=r;return n(["아이콘"])},alert_warning:r=>{const{normalize:n}=r;return n(["경고"])},alert_neutral:r=>{const{normalize:n}=r;return n(["중립적"])},post:r=>{const{normalize:n}=r;return n(["게시물 / 유저 소개"])},popover:r=>{const{normalize:n}=r;return n(["툴팁, 메뉴, 프로필 카드"])},disabled:r=>{const{normalize:n}=r;return n(["비활성화"])},wallpaper:r=>{const{normalize:n}=r;return n(["배경사진"])},poll:r=>{const{normalize:n}=r;return n(["투표 그래프"])},highlight:r=>{const{normalize:n}=r;return n(["강조 요소"])},pressed:r=>{const{normalize:n}=r;return n(["눌렸을 때"])},toggled:r=>{const{normalize:n}=r;return n(["토글됨"])},tabs:r=>{const{normalize:n}=r;return n(["탭"])},underlay:r=>{const{normalize:n}=r;return n(["밑배경"])}},radii:{_tab_label:r=>{const{normalize:n}=r;return n(["둥글기"])}},shadows:{_tab_label:r=>{const{normalize:n}=r;return n(["그림자와 빛"])},component:r=>{const{normalize:n}=r;return n(["컴포넌트"])},override:r=>{const{normalize:n}=r;return n(["덮어쓰기"])},shadow_id:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["그림자 #",e(t("value"))])},blur:r=>{const{normalize:n}=r;return n(["흐리기"])},spread:r=>{const{normalize:n}=r;return n(["퍼지기"])},inset:r=>{const{normalize:n}=r;return n(["안쪽으로"])},hint:r=>{const{normalize:n}=r;return n(["그림자에는 CSS3 변수를 --variable을 통해 색상 값으로 사용할 수 있습니다. 불투명도에는 적용 되지 않습니다."])},filter_hint:{always_drop_shadow:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["경고, 이 그림자는 브라우저가 지원하는 경우 항상 ",e(t(0)),"을 사용합니다."])},drop_shadow_syntax:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"는 ",e(t(1))," 파라미터와 ",e(t(2))," 키워드를 지원하지 않습니다."])},avatar_inset:r=>{const{normalize:n}=r;return n(["안쪽과 안쪽이 아닌 그림자를 모두 설정하는 경우 투명 아바타에서 예상치 못 한 결과가 나올 수 있다는 것에 주의해 주세요."])},spread_zero:r=>{const{normalize:n}=r;return n(["퍼지기가 0보다 큰 그림자는 0으로 설정한 것과 동일하게 보여집니다"])},inset_classic:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["안쪽 그림자는 ",e(t(0)),"를 사용합니다"])}},components:{panel:r=>{const{normalize:n}=r;return n(["패널"])},panelHeader:r=>{const{normalize:n}=r;return n(["패널 헤더"])},topBar:r=>{const{normalize:n}=r;return n(["상단 바"])},avatar:r=>{const{normalize:n}=r;return n(["사용자 아바타 (프로필 뷰에서)"])},avatarStatus:r=>{const{normalize:n}=r;return n(["사용자 아바타 (게시물에서)"])},popup:r=>{const{normalize:n}=r;return n(["팝업과 툴팁"])},button:r=>{const{normalize:n}=r;return n(["버튼"])},buttonHover:r=>{const{normalize:n}=r;return n(["버튼 (마우스 올렸을 때)"])},buttonPressed:r=>{const{normalize:n}=r;return n(["버튼 (눌렸을 때)"])},buttonPressedHover:r=>{const{normalize:n}=r;return n(["버튼 (마우스 올림 + 눌림)"])},input:r=>{const{normalize:n}=r;return n(["입력칸"])}},hintV3:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["그림자의 경우 ",e(t(0))," 표기법으로 다른 컬러 슬롯을 사용할 수 있습니다."])}},fonts:{_tab_label:r=>{const{normalize:n}=r;return n(["글꼴"])},help:r=>{const{normalize:n}=r;return n(['화면에 적용할 글꼴을 고르세요. "직접 입력"은 시스템에 있는 글꼴 이름을 정확히 입력해야 합니다.'])},components:{interface:r=>{const{normalize:n}=r;return n(["인터페이스"])},input:r=>{const{normalize:n}=r;return n(["입력칸"])},post:r=>{const{normalize:n}=r;return n(["게시물 텍스트"])},postCode:r=>{const{normalize:n}=r;return n(["게시물의 고정폭 텍스트 (서식 있는 텍스트)"])}},family:r=>{const{normalize:n}=r;return n(["글꼴 이름"])},size:r=>{const{normalize:n}=r;return n(["크기 (px 단위)"])},weight:r=>{const{normalize:n}=r;return n(["굵기"])},custom:r=>{const{normalize:n}=r;return n(["직접 입력"])}},preview:{header:r=>{const{normalize:n}=r;return n(["미리보기"])},content:r=>{const{normalize:n}=r;return n(["내용"])},error:r=>{const{normalize:n}=r;return n(["에러 예시"])},button:r=>{const{normalize:n}=r;return n(["버튼"])},text:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["더 많은 ",e(t(0))," 그리고 ",e(t(1))])},mono:r=>{const{normalize:n}=r;return n(["내용"])},input:r=>{const{normalize:n}=r;return n(["인천공항에 도착했습니다."])},faint_link:r=>{const{normalize:n}=r;return n(["도움 되는 설명서"])},fine_print:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["우리의 ",e(t(0)),"를 읽고 도움 되지 않는 것들을 배우자!"])},header_faint:r=>{const{normalize:n}=r;return n(["괜찮은 텍스트"])},checkbox:r=>{const{normalize:n}=r;return n(["나는 약관을 대충 훑어보았습니다"])},link:r=>{const{normalize:n}=r;return n(["작고 귀여운 링크"])}}},block_export:r=>{const{normalize:n}=r;return n(["차단 목록 내보내기"])},mfa:{scan:{secret_code:r=>{const{normalize:n}=r;return n(["키"])},title:r=>{const{normalize:n}=r;return n(["스캔"])},desc:r=>{const{normalize:n}=r;return n(["2단계 인증 앱을 통해 QR 코드를 찍거나 키를 입력하세요:"])}},authentication_methods:r=>{const{normalize:n}=r;return n(["인증 방법"])},waiting_a_recovery_codes:r=>{const{normalize:n}=r;return n(["복구 코드를 가져오고 있습니다…"])},recovery_codes:r=>{const{normalize:n}=r;return n(["복구 코드."])},generate_new_recovery_codes:r=>{const{normalize:n}=r;return n(["새 복구 코드 생성"])},title:r=>{const{normalize:n}=r;return n(["2단계 인증"])},confirm_and_enable:r=>{const{normalize:n}=r;return n(["확인 & OTP 활성화"])},setup_otp:r=>{const{normalize:n}=r;return n(["OTP 설정"])},otp:r=>{const{normalize:n}=r;return n(["OTP"])},warning_of_generate_new_codes:r=>{const{normalize:n}=r;return n(["새 복구 코드를 생성하면, 이전 코드는 작동하지 않게 됩니다."])},recovery_codes_warning:r=>{const{normalize:n}=r;return n(["복구 코드를 어딘가 안전한 곳에 적어 놓으세요 - 더 이상 이 코드를 보실 순 없습니다. 만약 2단계 인증 앱과 복구 코드 둘 다 접근할 수 없게 된다면 계정에 로그인할 수 없게 됩니다."])},verify:{desc:r=>{const{normalize:n}=r;return n(["활성화하려면 2단계 인증 앱에서 받은 코드를 입력하세요:"])}}},security:r=>{const{normalize:n}=r;return n(["보안"])},emoji_reactions_on_timeline:r=>{const{normalize:n}=r;return n(["에모지 반응을 타임라인에 표시"])},avatar_size_instruction:r=>{const{normalize:n}=r;return n(["최소 150x150 픽셀보다 큰 사진을 업로드하시면 좋습니다."])},blocks_tab:r=>{const{normalize:n}=r;return n(["차단"])},notification_setting_privacy:r=>{const{normalize:n}=r;return n(["보안"])},user_mutes:r=>{const{normalize:n}=r;return n(["사용자"])},notification_visibility_emoji_reactions:r=>{const{normalize:n}=r;return n(["반응"])},profile_fields:{value:r=>{const{normalize:n}=r;return n(["내용"])},label:r=>{const{normalize:n}=r;return n(["프로필 추가정보"])},add_field:r=>{const{normalize:n}=r;return n(["필드 추가"])},name:r=>{const{normalize:n}=r;return n(["라벨"])}},mutes_and_blocks:r=>{const{normalize:n}=r;return n(["뮤트와 차단"])},chatMessageRadius:r=>{const{normalize:n}=r;return n(["채팅 메시지"])},change_email:r=>{const{normalize:n}=r;return n(["메일 주소 바꾸기"])},changed_email:r=>{const{normalize:n}=r;return n(["메일 주소가 바뀌었습니다!"])},bot:r=>{const{normalize:n}=r;return n(["이 계정은 자동 봇입니다"])},mutes_tab:r=>{const{normalize:n}=r;return n(["뮤트"])},app_name:r=>{const{normalize:n}=r;return n(["앱 이름"])},notification_setting_block_from_strangers:r=>{const{normalize:n}=r;return n(["팔로하지 않은 계정에서 보내는 알림 차단"])},autohide_floating_post_button:r=>{const{normalize:n}=r;return n(["알아서 새 게시물 버튼 숨기기 (모바일)"])},blocks_imported:r=>{const{normalize:n}=r;return n(["차단 목록을 가져왔습니다! 처리하는 데에 시간이 걸릴 수 있습니다."])},mutes_imported:r=>{const{normalize:n}=r;return n(["뮤트 목록을 가져왔습니다! 처리하는 데에 시간이 걸릴 수 있습니다."])},account_backup_description:r=>{const{normalize:n}=r;return n(["내 계정 정보와 게시물이 담긴 아카이브를 다운로드 받을 수 있지만, 아직 Pleroma로 다시 불러오는 기능은 지원하지 않습니다."])},move_account_notes:r=>{const{normalize:n}=r;return n(["계정을 다른 곳으로 이사하려면, 이사 갈 계정으로 가셔서 별칭이 이 계정을 가리키도록 하세요."])},hide_bot_indication:r=>{const{normalize:n}=r;return n(["게시물에서 봇 알림 숨기기"])},navbar_column_stretch:r=>{const{normalize:n}=r;return n(["상단 바를 컬럼 너비만큼 늘리기"])},show_admin_badge:r=>{const{normalize:n}=r;return n(['내 프로필에 "관리자" 배지 달기'])},sensitive_by_default:r=>{const{normalize:n}=r;return n(["게시물을 민감함으로 기본 설정"])},notification_mutes:r=>{const{normalize:n}=r;return n(["특정 사용자의 알림을 받지 않으려면, 뮤트를 사용하세요."])},mention_link_fade_domain:r=>{const{normalize:n}=r;return n(["흐려진 도메인 (예: ","@","foo","@","example.org 에서의 ","@","example.org)"])},notification_blocks:r=>{const{normalize:n}=r;return n(["사용자를 차단하면 알림을 받지 않는데다 구독까지 취소하게 됩니다."])},conversation_display_tree:r=>{const{normalize:n}=r;return n(["트리"])},save:r=>{const{normalize:n}=r;return n(["변경 사항을 저장"])},allow_following_move:r=>{const{normalize:n}=r;return n(["팔로우 중인 계정이 이사를 하면 자동으로 팔로우하기"])},expert_mode:r=>{const{normalize:n}=r;return n(["고급 설정 보기"])},setting_changed:r=>{const{normalize:n}=r;return n(["기본 설정과 다릅니다"])},setting_server_side:r=>{const{normalize:n}=r;return n(["이 설정은 계정과 묶여 있으며 연결된 모든 세션과 클라이언트에 영향을 줍니다"])},enter_current_password_to_confirm:r=>{const{normalize:n}=r;return n(["본인 확인을 위해 현재 패스워드를 입력하세요"])},post_look_feel:r=>{const{normalize:n}=r;return n(["게시물 모양새"])},mention_links:r=>{const{normalize:n}=r;return n(["멘션 링크"])},lists_navigation:r=>{const{normalize:n}=r;return n(["메뉴에 리스트 보이기"])},email_language:r=>{const{normalize:n}=r;return n(["서버로부터 이메일을 받을 언어"])},block_import:r=>{const{normalize:n}=r;return n(["차단 목록 가져오기"])},block_export_button:r=>{const{normalize:n}=r;return n(["차단 목록을 CSV 파일로 내보내기"])},block_import_error:r=>{const{normalize:n}=r;return n(["차단 목록을 가져오는 데에 문제가 발생했습니다"])},mute_export:r=>{const{normalize:n}=r;return n(["뮤트 목록 내보내기"])},mute_export_button:r=>{const{normalize:n}=r;return n(["뮤트 목록을 CSV 파일로 내보내기"])},mute_import:r=>{const{normalize:n}=r;return n(["뮤트 목록 가져오기"])},mute_import_error:r=>{const{normalize:n}=r;return n(["뮤트 목록을 가져오는 데에 문제가 발생했습니다"])},import_mutes_from_a_csv_file:r=>{const{normalize:n}=r;return n(["뮤트 목록을 CSV 파일에서 가져오기"])},account_backup:r=>{const{normalize:n}=r;return n(["계정 백업"])},account_backup_table_head:r=>{const{normalize:n}=r;return n(["백업"])},download_backup:r=>{const{normalize:n}=r;return n(["다운로드"])},backup_not_ready:r=>{const{normalize:n}=r;return n(["백업이 아직 준비되지 않았습니다."])},remove_backup:r=>{const{normalize:n}=r;return n(["삭제"])},list_backups_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["백업 리스트를 가져오는 데 에러가 발생했습니다: ",e(t("error"))])},add_backup:r=>{const{normalize:n}=r;return n(["새 백업 만들기"])},added_backup:r=>{const{normalize:n}=r;return n(["새 백업 추가됨."])},add_backup_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["새 백업을 추가하는 데 에러가 발생했습니다: ",e(t("error"))])},change_email_error:r=>{const{normalize:n}=r;return n(["메일 주소를 바꾸는 데 문제가 있습니다."])},account_alias:r=>{const{normalize:n}=r;return n(["계정 별칭"])},always_show_post_button:r=>{const{normalize:n}=r;return n(["항상 떠다니는 게시물 작성 버튼 보기"])},mute_bot_posts:r=>{const{normalize:n}=r;return n(["봇 게시물 뮤트하기"])},hide_all_muted_posts:r=>{const{normalize:n}=r;return n(["뮤트한 게시물 숨기기"])},account_alias_table_head:r=>{const{normalize:n}=r;return n(["별칭"])},hide_list_aliases_error_action:r=>{const{normalize:n}=r;return n(["닫기"])},remove_alias:r=>{const{normalize:n}=r;return n(["이 별칭 삭제"])},new_alias_target:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["새 별칭 추가 (예시. ",e(t("example")),")"])},added_alias:r=>{const{normalize:n}=r;return n(["별칭이 추가되었습니다."])},move_account:r=>{const{normalize:n}=r;return n(["계정 이사"])},move_account_target:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["이사 갈 계정 (예시. ",e(t("example")),")"])},moved_account:r=>{const{normalize:n}=r;return n(["계정을 이사했습니다."])},discoverable:r=>{const{normalize:n}=r;return n(["검색 결과나 다른 서비스들에서 이 계정을 찾을 수 있도록 허용"])},pad_emoji:r=>{const{normalize:n}=r;return n(["에모지를 선택창에서 고를 때 띄어쓰기를 집어넣기"])},wordfilter:r=>{const{normalize:n}=r;return n(["단어 필터"])},word_filter_and_more:r=>{const{normalize:n}=r;return n(["단어 필터 그리고 더보기..."])},accent:r=>{const{normalize:n}=r;return n(["강조"])},hide_media_previews:r=>{const{normalize:n}=r;return n(["미디어 미리보기 숨기기"])},max_thumbnails:r=>{const{normalize:n}=r;return n(["게시물 하나 당 최대로 보여질 섬네일 개수 (비워두면 제한을 두지 않습니다)"])},hide_shoutbox:r=>{const{normalize:n}=r;return n(["인스턴스 외치기 숨기기"])},right_sidebar:r=>{const{normalize:n}=r;return n(["컬럼 순서 뒤집기"])},hide_wallpaper:r=>{const{normalize:n}=r;return n(["인스턴스 배경화면 가리기"])},use_one_click_nsfw:r=>{const{normalize:n}=r;return n(["민감한 첨부물을 클릭 한 번으로 열기"])},move_account_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["계정을 이사하는 데 에러가 발생했습니다: ",e(t("error"))])},hide_muted_posts:r=>{const{normalize:n}=r;return n(["뮤트한 사용자의 게시물 숨기기"])},hide_filtered_statuses:r=>{const{normalize:n}=r;return n(["필터된 모든 게시물 숨기기"])},hide_wordfiltered_statuses:r=>{const{normalize:n}=r;return n(["단어 필터된 게시물 숨기기"])},use_contain_fit:r=>{const{normalize:n}=r;return n(["첨부파일의 섬네일을 자르지 않음"])},hide_muted_threads:r=>{const{normalize:n}=r;return n(["뮤트한 스레드 숨기기"])},import_blocks_from_a_csv_file:r=>{const{normalize:n}=r;return n(["CSV 파일에서 차단 목록 불러오기"])},play_videos_in_modal:r=>{const{normalize:n}=r;return n(["팝업 프레임에서 비디오를 재생"])},file_export_import:{backup_restore:r=>{const{normalize:n}=r;return n(["설정 백업"])},backup_settings:r=>{const{normalize:n}=r;return n(["설정을 파일로 백업"])},backup_settings_theme:r=>{const{normalize:n}=r;return n(["설정과 테마를 파일로 백업"])},restore_settings:r=>{const{normalize:n}=r;return n(["파일에서 설정 복구하기"])},errors:{invalid_file:r=>{const{normalize:n}=r;return n(["해당 파일은 지원되지 않는 Pleroma 백업입니다. 아무 일도 일어나지 않았습니다."])},file_too_new:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["호환되지 않는 버전: ",e(t("fileMajor")),", 이 PleromaFE (설정 버전 ",e(t("feMajor")),") 가 너무 낡아서 처리할 수 없습니다"])},file_too_old:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["호환되지 않는 버전: ",e(t("fileMajor")),", 파일 버전이 너무 낡아서 처리할 수 없습니다 (지원되는 최소 설정 버전 ",e(t("feMajor")),")"])},file_slightly_new:r=>{const{normalize:n}=r;return n(["파일 마이너 버전이 달라서, 몇몇 설정들이 적용되지 않았을 수 있습니다"])}}},account_privacy:r=>{const{normalize:n}=r;return n(["사생활 보안"])},new_email:r=>{const{normalize:n}=r;return n(["새 메일 주소"])},hide_favorites_description:r=>{const{normalize:n}=r;return n(["내 관심글을 보이지 않음 (알림은 갑니다)"])},hide_follows_count_description:r=>{const{normalize:n}=r;return n(["팔로우 중 숫자 숨기기"])},hide_followers_count_description:r=>{const{normalize:n}=r;return n(["팔로워 숫자 숨기기"])},no_mutes:r=>{const{normalize:n}=r;return n(["뮤트 없음"])},search_user_to_block:r=>{const{normalize:n}=r;return n(["차단할 사람 검색하기"])},search_user_to_mute:r=>{const{normalize:n}=r;return n(["뮤트할 사람 검색하기"])},posts:r=>{const{normalize:n}=r;return n(["게시물"])},notification_visibility_moves:r=>{const{normalize:n}=r;return n(["계정 이사"])},notification_visibility_polls:r=>{const{normalize:n}=r;return n(["참여한 투표가 끝남"])},no_blocks:r=>{const{normalize:n}=r;return n(["차단 없음"])},reply_visibility_self_short:r=>{const{normalize:n}=r;return n(["내 답글만 보기"])},reply_visibility_following_short:r=>{const{normalize:n}=r;return n(["팔로우 중인 사람들끼리의 답글 보기"])},user_profiles:r=>{const{normalize:n}=r;return n(["사용자 프로필"])},show_moderator_badge:r=>{const{normalize:n}=r;return n(['내 프로필에 "중재자" 배지 달기'])},type_domains_to_mute:r=>{const{normalize:n}=r;return n(["뮤트할 도메인 검색하기"])},disable_sticky_headers:r=>{const{normalize:n}=r;return n(["컬럼 헤더를 화면 상단에 고정하지 않음"])},auto_update:r=>{const{normalize:n}=r;return n(["알아서 새 게시물 가져오기"])},minimal_scopes_mode:r=>{const{normalize:n}=r;return n(["공개 범위 선택지 줄이기"])},reset_avatar:r=>{const{normalize:n}=r;return n(["프로필 사진 초기화"])},reset_avatar_confirm:r=>{const{normalize:n}=r;return n(["정말 프로필 사진을 초기화할까요?"])},reset_profile_background:r=>{const{normalize:n}=r;return n(["프로필 배경 초기화"])},reset_profile_banner:r=>{const{normalize:n}=r;return n(["프로필 배너 초기화"])},reset_banner_confirm:r=>{const{normalize:n}=r;return n(["정말 프로필 배너를 초기화할까요?"])},reset_background_confirm:r=>{const{normalize:n}=r;return n(["정말 프로필 배경을 초기화할까요?"])},useStreamingApi:r=>{const{normalize:n}=r;return n(["실시간으로 게시물과 알림 받기"])},use_websockets:r=>{const{normalize:n}=r;return n(["웹소켓 사용 (실시간 업데이트)"])},upload_a_photo:r=>{const{normalize:n}=r;return n(["사진 업로드"])},conversation_display:r=>{const{normalize:n}=r;return n(["대화 표시 모양"])},conversation_display_tree_quick:r=>{const{normalize:n}=r;return n(["트리 뷰"])},show_scrollbars:r=>{const{normalize:n}=r;return n(["측면 컬럼의 스크롤바 보기"])},conversation_other_replies_button_inside:r=>{const{normalize:n}=r;return n(["게시물 안에 놓기"])},notification_setting_hide_notification_contents:r=>{const{normalize:n}=r;return n(["푸시 알림에서 보낸 사람과 내용을 숨김"])},virtual_scrolling:r=>{const{normalize:n}=r;return n(["타임라인 렌더링 최적화"])},use_at_icon:r=>{const{normalize:n}=r;return n(["@"," 문자를 텍스트 대신 아이콘으로 표시"])},mention_link_display:r=>{const{normalize:n}=r;return n(["멘션에 링크 표시"])},mention_link_display_short:r=>{const{normalize:n}=r;return n(["항상 짧은 이름 사용 (예: ","@","foo)"])},mention_link_display_full_for_remote:r=>{const{normalize:n}=r;return n(["다른 인스턴스 사용자만 이름 전부 보기 (예: ","@","foo","@","example.org)"])},mention_link_display_full:r=>{const{normalize:n}=r;return n(["항상 이름 전부 보기 (예: ","@","foo","@","example.org)"])},mention_link_use_tooltip:r=>{const{normalize:n}=r;return n(["멘션 링크를 누르면 사용자 카드 보기"])},mention_link_show_avatar:r=>{const{normalize:n}=r;return n(["링크 옆에 프로필 사진 보기"])},mention_link_bolden_you:r=>{const{normalize:n}=r;return n(["누가 날 멘션했을 때 멘션을 강조 표시"])},user_popover_avatar_action_zoom:r=>{const{normalize:n}=r;return n(["사진 키우기"])},greentext:r=>{const{normalize:n}=r;return n(["밈 화살표"])},show_yous:r=>{const{normalize:n}=r;return n(['"(당신)" 보이기'])},notification_setting_filters:r=>{const{normalize:n}=r;return n(["필터"])},more_settings:r=>{const{normalize:n}=r;return n(["추가 설정"])},user_popover_avatar_action_open:r=>{const{normalize:n}=r;return n(["프로필 열기"])},version:{frontend_version:r=>{const{normalize:n}=r;return n(["프론트엔드 버전"])},title:r=>{const{normalize:n}=r;return n(["버전"])},backend_version:r=>{const{normalize:n}=r;return n(["백엔드 버전"])}},fun:r=>{const{normalize:n}=r;return n(["즐겁다"])},domain_mutes:r=>{const{normalize:n}=r;return n(["도메인"])},third_column_mode:r=>{const{normalize:n}=r;return n(["공간이 충분하면, 세 번째 컬럼 채우기"])},third_column_mode_none:r=>{const{normalize:n}=r;return n(["세 번째 컬럼 안 보기"])},third_column_mode_notifications:r=>{const{normalize:n}=r;return n(["알림 컬럼"])},third_column_mode_postform:r=>{const{normalize:n}=r;return n(["게시물 편집창과 내비게이션"])},columns:r=>{const{normalize:n}=r;return n(["컬럼"])},column_sizes:r=>{const{normalize:n}=r;return n(["컬럼 크기"])},column_sizes_sidebar:r=>{const{normalize:n}=r;return n(["사이드바"])},column_sizes_content:r=>{const{normalize:n}=r;return n(["내용"])},column_sizes_notifs:r=>{const{normalize:n}=r;return n(["알림"])},tree_advanced:r=>{const{normalize:n}=r;return n(["트리 뷰에서 더 유연한 탐색을 허용"])},tree_fade_ancestors:r=>{const{normalize:n}=r;return n(["현재 게시물보다 상단의 게시물들을 흐린 텍스트로 표시"])},conversation_display_linear:r=>{const{normalize:n}=r;return n(["선형"])},conversation_display_linear_quick:r=>{const{normalize:n}=r;return n(["선형 뷰"])},conversation_other_replies_button:r=>{const{normalize:n}=r;return n(['"답글 더 보기" 버튼을'])},conversation_other_replies_button_below:r=>{const{normalize:n}=r;return n(["게시물 아래에 놓기"])},max_depth_in_thread:r=>{const{normalize:n}=r;return n(["기본적으로 보일 최대 깊이"])},user_popover_avatar_action:r=>{const{normalize:n}=r;return n(["프로필 카드의 사진 클릭 시"])},user_popover_avatar_action_close:r=>{const{normalize:n}=r;return n(["카드 닫기"])},user_popover_avatar_overlay:r=>{const{normalize:n}=r;return n(["프로필 카드를 프로필 사진 위에 띄우기"])},post_status_content_type:r=>{const{normalize:n}=r;return n(["게시물 내용 형식"])},list_aliases_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["별칭을 가져오는 중 에러 발생: ",e(t("error"))])},add_alias_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["별칭을 추가하는 중 에러 발생: ",e(t("error"))])},mention_link_show_avatar_quick:r=>{const{normalize:n}=r;return n(["멘션 옆에 유저 프로필 사진을 보임"])},backup_running:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["백업 중입니다, ",e(t("number")),"개 처리 완료."]),n(["백업 중입니다, ",e(t("number")),"개 처리 완료."])])},confirm_dialogs:r=>{const{normalize:n}=r;return n(["하기 전에 다시 물어보기"])},autocomplete_select_first:r=>{const{normalize:n}=r;return n(["자동완성이 가능하면 자동으로 첫 번째 후보를 선택"])},backup_failed:r=>{const{normalize:n}=r;return n(["백업에 실패했습니다."])},emoji_reactions_scale:r=>{const{normalize:n}=r;return n(["리액션 크기"])},birthday:{label:r=>{const{normalize:n}=r;return n(["생일"])},show_birthday:r=>{const{normalize:n}=r;return n(["내 생일 보여주기"])}},add_language:r=>{const{normalize:n}=r;return n(["보조 언어 추가"])},confirm_dialogs_repeat:r=>{const{normalize:n}=r;return n(["리핏"])},confirm_dialogs_unfollow:r=>{const{normalize:n}=r;return n(["언팔로우"])},confirm_dialogs_block:r=>{const{normalize:n}=r;return n(["차단"])},confirm_dialogs_mute:r=>{const{normalize:n}=r;return n(["뮤트"])},confirm_dialogs_delete:r=>{const{normalize:n}=r;return n(["게시물 삭제"])},confirm_dialogs_approve_follow:r=>{const{normalize:n}=r;return n(["팔로워 승인"])},confirm_dialogs_deny_follow:r=>{const{normalize:n}=r;return n(["팔로워 거절"])},confirm_dialogs_remove_follower:r=>{const{normalize:n}=r;return n(["팔로워 제거"])},remove_language:r=>{const{normalize:n}=r;return n(["삭제"])},primary_language:r=>{const{normalize:n}=r;return n(["주 언어:"])},fallback_language:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["보조 언어 ",e(t("index")),":"])},confirm_dialogs_logout:r=>{const{normalize:n}=r;return n(["로그아웃"])}},timeline:{collapse:r=>{const{normalize:n}=r;return n(["접기"])},conversation:r=>{const{normalize:n}=r;return n(["대화"])},error_fetching:r=>{const{normalize:n}=r;return n(["업데이트 불러오기 실패"])},load_older:r=>{const{normalize:n}=r;return n(["이전 게시물 불러오기"])},no_retweet_hint:r=>{const{normalize:n}=r;return n(["팔로워 전용 게시물과 다이렉트 메시지는 리핏할 수 없습니다"])},repeated:r=>{const{normalize:n}=r;return n(["리핏함"])},show_new:r=>{const{normalize:n}=r;return n(["새 게시물 보기"])},up_to_date:r=>{const{normalize:n}=r;return n(["최신"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["타임라인을 가져오지 못했습니다: ",e(t(0))])},reload:r=>{const{normalize:n}=r;return n(["새로고침"])},no_statuses:r=>{const{normalize:n}=r;return n(["게시물 없음"])},no_more_statuses:r=>{const{normalize:n}=r;return n(["새 게시물 없음"])},socket_reconnected:r=>{const{normalize:n}=r;return n(["실시간 연결 됨"])},socket_broke:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["실시간 연결이 끊어짐: CloseEvent 코드 ",e(t(0))])},quick_filter_settings:r=>{const{normalize:n}=r;return n(["빠른 필터 설정"])}},user_card:{approve:r=>{const{normalize:n}=r;return n(["승인"])},block:r=>{const{normalize:n}=r;return n(["차단"])},blocked:r=>{const{normalize:n}=r;return n(["차단 됨!"])},deny:r=>{const{normalize:n}=r;return n(["거부"])},follow:r=>{const{normalize:n}=r;return n(["팔로우"])},follow_sent:r=>{const{normalize:n}=r;return n(["요청 보냄!"])},follow_progress:r=>{const{normalize:n}=r;return n(["요청 중…"])},follow_unfollow:r=>{const{normalize:n}=r;return n(["언팔로우"])},followees:r=>{const{normalize:n}=r;return n(["팔로우 중"])},followers:r=>{const{normalize:n}=r;return n(["팔로워"])},following:r=>{const{normalize:n}=r;return n(["팔로우 중!"])},follows_you:r=>{const{normalize:n}=r;return n(["나를 팔로우 합니다!"])},its_you:r=>{const{normalize:n}=r;return n(["당신입니다!"])},mute:r=>{const{normalize:n}=r;return n(["뮤트"])},muted:r=>{const{normalize:n}=r;return n(["뮤트 됨"])},per_day:r=>{const{normalize:n}=r;return n(["개 / 일"])},remote_follow:r=>{const{normalize:n}=r;return n(["다른 인스턴스에서 팔로우"])},statuses:r=>{const{normalize:n}=r;return n(["게시물"])},unmute_progress:r=>{const{normalize:n}=r;return n(["뮤트 해제 중…"])},unblock_progress:r=>{const{normalize:n}=r;return n(["차단 해제 중…"])},admin_menu:{revoke_moderator:r=>{const{normalize:n}=r;return n(["중재자 탄핵"])},sandbox:r=>{const{normalize:n}=r;return n(["게시물 공개 범위를 팔로워 전용으로 강제"])},disable_any_subscription:r=>{const{normalize:n}=r;return n(["누구도 팔로우를 못하도록 막기"])},delete_user_data_and_deactivate_confirmation:r=>{const{normalize:n}=r;return n(["영구적으로 이 계정의 데이터가 삭제되고 비활성화 됩니다. 정말로 괜찮겠습니까?"])},moderation:r=>{const{normalize:n}=r;return n(["관리"])},grant_admin:r=>{const{normalize:n}=r;return n(["관리자로 임명"])},grant_moderator:r=>{const{normalize:n}=r;return n(["중재자로 임명"])},disable_remote_subscription:r=>{const{normalize:n}=r;return n(["다른 인스턴스에서 팔로우하지 못하도록 막기"])},activate_account:r=>{const{normalize:n}=r;return n(["계정 활성화"])},deactivate_account:r=>{const{normalize:n}=r;return n(["계정 비활성화"])},delete_account:r=>{const{normalize:n}=r;return n(["계정 삭제"])},force_nsfw:r=>{const{normalize:n}=r;return n(["모든 게시물을 민감한 내용으로 표시"])},strip_media:r=>{const{normalize:n}=r;return n(["게시물에서 미디어 제거"])},revoke_admin:r=>{const{normalize:n}=r;return n(["관리자 탄핵"])},force_unlisted:r=>{const{normalize:n}=r;return n(["게시물 공개 범위를 비표시로 강제"])},quarantine:r=>{const{normalize:n}=r;return n(["연합 타임라인에서 사용자 게시물 비허용"])},delete_user:r=>{const{normalize:n}=r;return n(["사용자 삭제"])}},deactivated:r=>{const{normalize:n}=r;return n(["비활성화됨"])},edit_profile:r=>{const{normalize:n}=r;return n(["프로필 편집"])},favorites:r=>{const{normalize:n}=r;return n(["관심글"])},follow_cancel:r=>{const{normalize:n}=r;return n(["팔로우 요청 취소"])},unmute:r=>{const{normalize:n}=r;return n(["뮤트 해제"])},mute_progress:r=>{const{normalize:n}=r;return n(["뮤트 중…"])},hidden:r=>{const{normalize:n}=r;return n(["숨겨짐"])},media:r=>{const{normalize:n}=r;return n(["미디어"])},mention:r=>{const{normalize:n}=r;return n(["멘션"])},message:r=>{const{normalize:n}=r;return n(["메시지"])},remove_follower:r=>{const{normalize:n}=r;return n(["팔로워 삭제"])},report:r=>{const{normalize:n}=r;return n(["신고"])},subscribe:r=>{const{normalize:n}=r;return n(["구독"])},unsubscribe:r=>{const{normalize:n}=r;return n(["구독 해제"])},unblock:r=>{const{normalize:n}=r;return n(["차단 해제"])},block_progress:r=>{const{normalize:n}=r;return n(["차단 중…"])},hide_repeats:r=>{const{normalize:n}=r;return n(["리핏 숨기기"])},show_repeats:r=>{const{normalize:n}=r;return n(["리핏 보기"])},bot:r=>{const{normalize:n}=r;return n(["봇"])},highlight:{disabled:r=>{const{normalize:n}=r;return n(["강조 표시 없음"])},striped:r=>{const{normalize:n}=r;return n(["줄무늬 배경"])},solid:r=>{const{normalize:n}=r;return n(["단색 배경"])},side:r=>{const{normalize:n}=r;return n(["옆트임"])}},approve_confirm_title:r=>{const{normalize:n}=r;return n(["승인 확인"])},approve_confirm_accept_button:r=>{const{normalize:n}=r;return n(["승인"])},approve_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["승인 안 함"])},approve_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("user")),"의 팔로우 요청을 승인할까요?"])},block_confirm_title:r=>{const{normalize:n}=r;return n(["차단 확인"])}},user_profile:{timeline_title:r=>{const{normalize:n}=r;return n(["사용자 타임라인"])},profile_does_not_exist:r=>{const{normalize:n}=r;return n(["죄송하지만, 이 프로필은 존재하지 않습니다."])},profile_loading_error:r=>{const{normalize:n}=r;return n(["죄송하지만, 프로필을 불러오는 데 에러가 발생했습니다."])}},who_to_follow:{more:r=>{const{normalize:n}=r;return n(["더 보기"])},who_to_follow:r=>{const{normalize:n}=r;return n(["팔로우 추천"])}},tool_tip:{media_upload:r=>{const{normalize:n}=r;return n(["미디어 업로드"])},repeat:r=>{const{normalize:n}=r;return n(["리핏"])},reply:r=>{const{normalize:n}=r;return n(["답글"])},favorite:r=>{const{normalize:n}=r;return n(["관심글"])},user_settings:r=>{const{normalize:n}=r;return n(["사용자 설정"])},add_reaction:r=>{const{normalize:n}=r;return n(["반응 추가"])},accept_follow_request:r=>{const{normalize:n}=r;return n(["팔로우 요청 승인"])},reject_follow_request:r=>{const{normalize:n}=r;return n(["팔로우 요청 거절"])},bookmark:r=>{const{normalize:n}=r;return n(["북마크"])}},upload:{error:{base:r=>{const{normalize:n}=r;return n(["업로드 실패."])},file_too_big:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["파일이 너무 커요 [",e(t("filesize")),e(t("filesizeunit"))," / ",e(t("allowedsize")),e(t("allowedsizeunit")),"]"])},default:r=>{const{normalize:n}=r;return n(["잠시 후에 다시 시도해 보세요"])},message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["업로드 실패: ",e(t(0))])}},file_size_units:{B:r=>{const{normalize:n}=r;return n(["B"])},KiB:r=>{const{normalize:n}=r;return n(["KiB"])},MiB:r=>{const{normalize:n}=r;return n(["MiB"])},GiB:r=>{const{normalize:n}=r;return n(["GiB"])},TiB:r=>{const{normalize:n}=r;return n(["TiB"])}}},interactions:{follows:r=>{const{normalize:n}=r;return n(["새 팔로워"])},favs_repeats:r=>{const{normalize:n}=r;return n(["리핏과 관심"])},moves:r=>{const{normalize:n}=r;return n(["계정 이동"])},emoji_reactions:r=>{const{normalize:n}=r;return n(["에모지 반응"])},reports:r=>{const{normalize:n}=r;return n(["신고"])},load_older:r=>{const{normalize:n}=r;return n(["이전 반응 불러오기"])}},emoji:{load_all:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["전체 ",e(t("emojiAmount")),"개의 에모지 불러오기"])},unicode:r=>{const{normalize:n}=r;return n(["Unicode 에모지"])},custom:r=>{const{normalize:n}=r;return n(["전용 에모지"])},add_emoji:r=>{const{normalize:n}=r;return n(["에모지 넣기"])},search_emoji:r=>{const{normalize:n}=r;return n(["에모지 검색"])},emoji:r=>{const{normalize:n}=r;return n(["에모지"])},stickers:r=>{const{normalize:n}=r;return n(["스티커"])},load_all_hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["첫 ",e(t("saneAmount")),"개의 에모지를 불러왔습니다, 에모지를 전부 불러오면 성능 저하가 있을 수 있습니다."])},unicode_groups:{"people-and-body":r=>{const{normalize:n}=r;return n(["사람 & 몸"])},"smileys-and-emotion":r=>{const{normalize:n}=r;return n(["웃는 얼굴 & 감정"])},"travel-and-places":r=>{const{normalize:n}=r;return n(["여행 & 장소"])},activities:r=>{const{normalize:n}=r;return n(["활동"])},"animals-and-nature":r=>{const{normalize:n}=r;return n(["동물 & 자연"])},flags:r=>{const{normalize:n}=r;return n(["깃발"])},"food-and-drink":r=>{const{normalize:n}=r;return n(["음식 & 음료"])},objects:r=>{const{normalize:n}=r;return n(["사물"])},symbols:r=>{const{normalize:n}=r;return n(["기호"])}},keep_open:r=>{const{normalize:n}=r;return n(["열린 채로 두기"])},regional_indicator:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["지역 표시기 ",e(t("letter"))])}},polls:{add_poll:r=>{const{normalize:n}=r;return n(["투표를 추가"])},votes:r=>{const{normalize:n}=r;return n(["표"])},vote:r=>{const{normalize:n}=r;return n(["투표"])},type:r=>{const{normalize:n}=r;return n(["투표 형식"])},expiry:r=>{const{normalize:n}=r;return n(["투표 기간"])},votes_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 표"]),n([e(t("count"))," 표"])])},people_voted_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 명 투표"]),n([e(t("count"))," 명 투표"])])},option:r=>{const{normalize:n}=r;return n(["선택지"])},add_option:r=>{const{normalize:n}=r;return n(["선택지 추가"])},expired:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["투표는 ",e(t(0))," 전에 마감되었습니다"])},expires_in:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["투표는 ",e(t(0)),"에 마감됩니다"])},single_choice:r=>{const{normalize:n}=r;return n(["하나만 선택"])},multiple_choices:r=>{const{normalize:n}=r;return n(["여러 개 선택"])},not_enough_options:r=>{const{normalize:n}=r;return n(["선택지가 너무 적습니다"])}},media_modal:{next:r=>{const{normalize:n}=r;return n(["다음"])},previous:r=>{const{normalize:n}=r;return n(["이전"])},counter:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("current"))," / ",e(t("total"))])},hide:r=>{const{normalize:n}=r;return n(["미디어 뷰어 닫기"])}},importer:{error:r=>{const{normalize:n}=r;return n(["이 파일을 가져올 때 오류가 발생하였습니다."])},success:r=>{const{normalize:n}=r;return n(["정상히 불러왔습니다."])},submit:r=>{const{normalize:n}=r;return n(["보내기"])}},image_cropper:{cancel:r=>{const{normalize:n}=r;return n(["취소"])},save_without_cropping:r=>{const{normalize:n}=r;return n(["그대로 저장"])},save:r=>{const{normalize:n}=r;return n(["저장"])},crop_picture:r=>{const{normalize:n}=r;return n(["사진 자르기"])}},exporter:{processing:r=>{const{normalize:n}=r;return n(["처리중입니다, 곧 파일을 다운로드할 수 있습니다"])},export:r=>{const{normalize:n}=r;return n(["내보내기"])}},domain_mute_card:{unmute_progress:r=>{const{normalize:n}=r;return n(["뮤트 해제 중…"])},unmute:r=>{const{normalize:n}=r;return n(["뮤트 해제"])},mute_progress:r=>{const{normalize:n}=r;return n(["뮤트 중…"])},mute:r=>{const{normalize:n}=r;return n(["뮤트"])}},about:{staff:r=>{const{normalize:n}=r;return n(["운영자"])},mrf:{simple:{media_nsfw_desc:r=>{const{normalize:n}=r;return n(["이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고에 붙혀 있는 매체는 민감함으로 설정됩니다:"])},media_nsfw:r=>{const{normalize:n}=r;return n(["매체를 민감함으로 설정"])},media_removal_desc:r=>{const{normalize:n}=r;return n(["이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고에 붙혀 있는 매체는 제거됩니다:"])},media_removal:r=>{const{normalize:n}=r;return n(["매체 제거"])},ftl_removal_desc:r=>{const{normalize:n}=r;return n(['이 인스턴스에서 아래의 인스턴스들은 "알려진 네트워크" 타임라인에서 제외됩니다:'])},ftl_removal:r=>{const{normalize:n}=r;return n(['"알려진 네트워크" 타임라인에서 제외'])},quarantine_desc:r=>{const{normalize:n}=r;return n(["이 인스턴스는 아래의 인스턴스에게 공개투고만을 보냅니다:"])},quarantine:r=>{const{normalize:n}=r;return n(["검역"])},reject_desc:r=>{const{normalize:n}=r;return n(["이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고를 받아들이지 않습니다:"])},accept_desc:r=>{const{normalize:n}=r;return n(["이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고만이 접수됩니다:"])},reject:r=>{const{normalize:n}=r;return n(["거부"])},accept:r=>{const{normalize:n}=r;return n(["허가"])},simple_policies:r=>{const{normalize:n}=r;return n(["인스턴스 특유의 정책"])},instance:r=>{const{normalize:n}=r;return n(["인스턴스"])},reason:r=>{const{normalize:n}=r;return n(["사유"])},not_applicable:r=>{const{normalize:n}=r;return n(["없음"])}},mrf_policies:r=>{const{normalize:n}=r;return n(["사용되는 MRF 정책"])},keyword:{is_replaced_by:r=>{const{normalize:n}=r;return n(["→"])},replace:r=>{const{normalize:n}=r;return n(["바꾸기"])},reject:r=>{const{normalize:n}=r;return n(["거부"])},ftl_removal:r=>{const{normalize:n}=r;return n(['"알려진 모든 네트워크" 타임라인에서 제외'])},keyword_policies:r=>{const{normalize:n}=r;return n(["단어 정책"])}},federation:r=>{const{normalize:n}=r;return n(["연합"])},mrf_policies_desc:r=>{const{normalize:n}=r;return n(["MRF 정책은 이 인스턴스의 페더레이션 동작을 제어하고 있습니다. 적용되고 있는 정책은 다음과 같습니다:"])}}},shoutbox:{title:r=>{const{normalize:n}=r;return n(["외치기"])}},time:{years_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 년"])},year_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 년"])},years:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 년"])},year:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 년"])},weeks_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 주일"])},week_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 주일"])},weeks:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 주일"])},week:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 주일"])},seconds_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 초"])},second_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 초"])},seconds:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 초"])},second:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 초"])},now_short:r=>{const{normalize:n}=r;return n(["지금"])},now:r=>{const{normalize:n}=r;return n(["방금"])},months_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 달 전"])},month_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 달 전"])},months:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 달 전"])},month:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 달 전"])},minutes_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 분"])},minute_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 분"])},minutes:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 분"])},minute:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 분"])},in_past:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 전"])},hours_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 시간"])},hour_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 시간"])},hours:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 시간"])},hour:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 시간"])},days_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 일"])},day_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 일"])},days:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 일"])},day:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 일"])},unit:{weeks:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"주"]),n([e(t(0)),"주"])])},minutes:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"분"]),n([e(t(0)),"분"])])},seconds:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"초"]),n([e(t(0)),"초"])])},seconds_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"초"])},weeks_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"주"])},years:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"년"]),n([e(t(0)),"년"])])},years_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"년"])},days:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"일"]),n([e(t(0)),"일"])])},days_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"일"])},hours:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"시간"]),n([e(t(0)),"시간"])])},hours_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"시간"])},minutes_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"분"])},months:r=>{const{normalize:n,interpolate:e,list:t,plural:o}=r;return o([n([e(t(0)),"달"]),n([e(t(0)),"달"])])},months_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"달"])}},in_future:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 후"])}},remote_user_resolver:{error:r=>{const{normalize:n}=r;return n(["찾을 수 없습니다."])},searching_for:r=>{const{normalize:n}=r;return n(["검색:"])},remote_user_resolver:r=>{const{normalize:n}=r;return n(["다른 인스턴스 사용자 안내기"])}},selectable_list:{select_all:r=>{const{normalize:n}=r;return n(["모두 선택"])}},lists:{title:r=>{const{normalize:n}=r;return n(["리스트 제목"])},search:r=>{const{normalize:n}=r;return n(["사용자 검색하기"])},lists:r=>{const{normalize:n}=r;return n(["리스트"])},new:r=>{const{normalize:n}=r;return n(["리스트 만들기"])},create:r=>{const{normalize:n}=r;return n(["만들기"])},delete:r=>{const{normalize:n}=r;return n(["리스트 삭제"])},following_only:r=>{const{normalize:n}=r;return n(["팔로우 중인 사람들만"])},manage_lists:r=>{const{normalize:n}=r;return n(["리스트 관리"])},manage_members:r=>{const{normalize:n}=r;return n(["멤버 관리"])},remove_from_list:r=>{const{normalize:n}=r;return n(["리스트에서 제거"])},add_to_list:r=>{const{normalize:n}=r;return n(["리스트에 추가"])},is_in_list:r=>{const{normalize:n}=r;return n(["리스트에 이미 있음"])},editing_list:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("listTitle"))," 리스트 편집"])},update_title:r=>{const{normalize:n}=r;return n(["제목 저장"])},really_delete:r=>{const{normalize:n}=r;return n(["리스트를 삭제하시겠어요?"])},save:r=>{const{normalize:n}=r;return n(["변경 사항을 저장"])},creating_list:r=>{const{normalize:n}=r;return n(["새 리스트 만들기"])},add_members:r=>{const{normalize:n}=r;return n(["사용자 추가"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["리스트를 조작하는 데 오류가 발생했습니다: ",e(t(0))])}},search:{no_more_results:r=>{const{normalize:n}=r;return n(["결과 더 없음"])},load_more:r=>{const{normalize:n}=r;return n(["결과 더 불러오기"])},people:r=>{const{normalize:n}=r;return n(["사람"])},hashtags:r=>{const{normalize:n}=r;return n(["해시태그"])},person_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count")),"명이 말하는 중"])},people_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count")),"명이 말하는 중"])},no_results:r=>{const{normalize:n}=r;return n(["결과 없음"])}},password_reset:{forgot_password:r=>{const{normalize:n}=r;return n(["패스워드를 잊으셨나요?"])},password_reset:r=>{const{normalize:n}=r;return n(["패스워드 재설정"])},placeholder:r=>{const{normalize:n}=r;return n(["이메일 주소 또는 사용자 이름"])},password_reset_required_but_mailer_is_disabled:r=>{const{normalize:n}=r;return n(["패스워드 초기화를 하셔야 하지만, 못 하게 막혀 있습니다. 인스턴스 관리자에게 문의해주세요."])},check_email:r=>{const{normalize:n}=r;return n(["패스워드 초기화를 위해 이메일을 확인해주세요."])},return_home:r=>{const{normalize:n}=r;return n(["홈으로 돌아가기"])},password_reset_required:r=>{const{normalize:n}=r;return n(["로그인하려면 패스워드를 초기화해야 합니다."])},password_reset_disabled:r=>{const{normalize:n}=r;return n(["패스워드 초기화를 못 하게 되어 있습니다. 인스턴스 관리자에게 문의해주세요."])},instruction:r=>{const{normalize:n}=r;return n(["이메일 주소 또는 사용자 이름을 입력하세요. 패스워드 초기화 링크를 메일로 보내드립니다."])},too_many_requests:r=>{const{normalize:n}=r;return n(["너무 많은 시도를 했습니다, 나중에 다시 해주세요."])}},chats:{you:r=>{const{normalize:n}=r;return n(["당신:"])},delete:r=>{const{normalize:n}=r;return n(["삭제"])},new:r=>{const{normalize:n}=r;return n(["새 채팅"])},chats:r=>{const{normalize:n}=r;return n(["채팅"])},empty_message_error:r=>{const{normalize:n}=r;return n(["메시지가 비어 있습니다"])},more:r=>{const{normalize:n}=r;return n(["더 보기"])},error_loading_chat:r=>{const{normalize:n}=r;return n(["왜인진 모르겠는데 채팅을 불러오지 못했습니다."])},error_sending_message:r=>{const{normalize:n}=r;return n(["왜인진 모르겠는데 메시지를 전송하지 못했습니다."])},delete_confirm:r=>{const{normalize:n}=r;return n(["이 메시지를 정말 지울까요?"])},empty_chat_list_placeholder:r=>{const{normalize:n}=r;return n(["채팅이 없네요. 새 채팅을 시작해보세요!"])},message_user:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("nickname")),"에게 메시지"])}},file_type:{audio:r=>{const{normalize:n}=r;return n(["오디오"])},video:r=>{const{normalize:n}=r;return n(["영상"])},image:r=>{const{normalize:n}=r;return n(["사진"])},file:r=>{const{normalize:n}=r;return n(["파일"])}},display_date:{today:r=>{const{normalize:n}=r;return n(["오늘"])}},update:{big_update_title:r=>{const{normalize:n}=r;return n(["양해해주세요"])},update_bugs_gitlab:r=>{const{normalize:n}=r;return n(["Pleroma GitLab"])},update_changelog_here:r=>{const{normalize:n}=r;return n(["변경 내역"])},update_changelog:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["무엇이 바뀌었는지 자세히 알아보시려면, ",e(t("theFullChangelog")),"을 참조하세요."])},big_update_content:r=>{const{normalize:n}=r;return n(["저희가 한동안 릴리즈를 안 해서, 익숙하셨던 생김새나 경험과 많이 달라졌을 수 있습니다."])},update_bugs:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["저희가 비록 테스트를 많이 하고 직접 개발 버전을 쓰기도 하지만, 많이 바꾸기도 했고, 몇몇 가지 놓친 점들이 있을 터이니, 사용하면서 불편한 점이나 문제는 ",e(t("pleromaGitlab")),"에 제보해주시면 감사하겠습니다. 저희는 겪으신 문제점이나 Pleroma와 Pleroma-FE에 대한 피드백과 제안을 환영합니다."])}},unicode_domain_indicator:{tooltip:r=>{const{normalize:n}=r;return n(["이 도메인은 아스키 문자가 아닌 문자를 포함하고 있습니다."])}},status:{mute_conversation:r=>{const{normalize:n}=r;return n(["대화 뮤트"])},thread_muted_and_words:r=>{const{normalize:n}=r;return n([", 단어 포함:"])},unpin:r=>{const{normalize:n}=r;return n(["프로필에서 고정 해제"])},replies_list_with_others:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["답글 (+",e(t("numReplies")),"개):"]),n(["답글 (+",e(t("numReplies")),"개):"])])},show_attachment_in_modal:r=>{const{normalize:n}=r;return n(["미디어 모달에서 보기"])},thread_hide:r=>{const{normalize:n}=r;return n(["이 스레드 숨기기"])},show_attachment_description:r=>{const{normalize:n}=r;return n(["설명 미리보기 (첨부물을 열어서 전체 설명 보기)"])},thread_show_full:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["이 스레드를 전부 들춰보기 (총 ",e(t("numStatus")),"개 있음, 최대 깊이 ",e(t("depth")),")"]),n(["이 스레드를 전부 들춰보기 (총 ",e(t("numStatus")),"개 있음, 최대 깊이 ",e(t("depth")),")"])])},thread_follow:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["이 스레드의 나머지 부분 보기 (총 ",e(t("numStatus")),"개)"]),n(["이 스레드의 나머지 부분 보기 (총 ",e(t("numStatus")),"개)"])])},status_history:r=>{const{normalize:n}=r;return n(["게시물 이력"])},show_all_conversation:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["전체 대화 보기 (",e(t("numStatus")),"개 더 있음)"]),n(["전체 대화 보기 (",e(t("numStatus")),"개 더 있음)"])])},repeats:r=>{const{normalize:n}=r;return n(["리핏"])},delete:r=>{const{normalize:n}=r;return n(["삭제"])},edit:r=>{const{normalize:n}=r;return n(["수정"])},favorites:r=>{const{normalize:n}=r;return n(["관심글"])},edited_at:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["(",e(t("time")),"에 마지막으로 수정됨)"])},pin:r=>{const{normalize:n}=r;return n(["프로필에 고정"])},pinned:r=>{const{normalize:n}=r;return n(["고정됨"])},bookmark:r=>{const{normalize:n}=r;return n(["북마크"])},unbookmark:r=>{const{normalize:n}=r;return n(["북마크 해제"])},delete_confirm:r=>{const{normalize:n}=r;return n(["정말 지우시겠어요?"])},reply_to:r=>{const{normalize:n}=r;return n(["답글"])},mentions:r=>{const{normalize:n}=r;return n(["멘션"])},replies_list:r=>{const{normalize:n}=r;return n(["답글:"])},unmute_conversation:r=>{const{normalize:n}=r;return n(["대화 뮤트 해제"])},thread_muted:r=>{const{normalize:n}=r;return n(["스레드 뮤트됨"])},status_unavailable:r=>{const{normalize:n}=r;return n(["게시물 접근 불가"])},copy_link:r=>{const{normalize:n}=r;return n(["게시물 링크 복사"])},external_source:r=>{const{normalize:n}=r;return n(["원본 페이지"])},show_full_subject:r=>{const{normalize:n}=r;return n(["전체 제목 보기"])},hide_full_subject:r=>{const{normalize:n}=r;return n(["전체 제목 숨기기"])},show_content:r=>{const{normalize:n}=r;return n(["내용 보기"])},hide_content:r=>{const{normalize:n}=r;return n(["내용 숨기기"])},status_deleted:r=>{const{normalize:n}=r;return n(["지워진 게시물입니다"])},nsfw:r=>{const{normalize:n}=r;return n(["민감한 내용"])},expand:r=>{const{normalize:n}=r;return n(["펼치기"])},you:r=>{const{normalize:n}=r;return n(["(당신)"])},plus_more:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["+",e(t("number")),"개 더 있음"])},many_attachments:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("number")),"개의 첨부물을 가짐"])},show_all_attachments:r=>{const{normalize:n}=r;return n(["첨부물 전부 보이기"])},hide_attachment:r=>{const{normalize:n}=r;return n(["첨부물 숨기기"])},collapse_attachments:r=>{const{normalize:n}=r;return n(["첨부물 접기"])},remove_attachment:r=>{const{normalize:n}=r;return n(["첨부물 지우기"])},attachment_stop_flash:r=>{const{normalize:n}=r;return n(["플래시 플레이어 정지"])},move_up:r=>{const{normalize:n}=r;return n(["첨부물 왼쪽으로 밀기"])},move_down:r=>{const{normalize:n}=r;return n(["첨부물 오른쪽으로 밀기"])},open_gallery:r=>{const{normalize:n}=r;return n(["갤러리 열기"])},thread_show:r=>{const{normalize:n}=r;return n(["이 스레드 보이기"])},thread_show_full_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},thread_follow_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},ancestor_follow_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},show_all_conversation_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},ancestor_follow:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["이 게시물 아래 ",e(t("numReplies")),"개 답글 더 보기"]),n(["이 게시물 아래 ",e(t("numReplies")),"개 답글 더 보기"])])},show_only_conversation_under_this:r=>{const{normalize:n}=r;return n(["이 게시물의 답글만 보기"])},repeat_confirm:r=>{const{normalize:n}=r;return n(["리핏할까요?"])},repeat_confirm_title:r=>{const{normalize:n}=r;return n(["리핏 확인"])},repeat_confirm_accept_button:r=>{const{normalize:n}=r;return n(["리핏"])},repeat_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["리핏 안 함"])},delete_confirm_title:r=>{const{normalize:n}=r;return n(["삭제 확인"])},delete_confirm_accept_button:r=>{const{normalize:n}=r;return n(["삭제"])},delete_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["냅두기"])}},errors:{storage_unavailable:r=>{const{normalize:n}=r;return n(["Pleroma가 브라우저 저장소에 접근할 수 없습니다. 로그인이 풀리거나 로컬 설정이 초기화 되는 등 예상치 못한 문제를 겪을 수 있습니다. 쿠키를 활성화 해보세요."])}},report:{reporter:r=>{const{normalize:n}=r;return n(["신고자:"])},reported_statuses:r=>{const{normalize:n}=r;return n(["신고된 게시물:"])},notes:r=>{const{normalize:n}=r;return n(["기타:"])},state:r=>{const{normalize:n}=r;return n(["상태:"])},state_open:r=>{const{normalize:n}=r;return n(["열림"])},state_closed:r=>{const{normalize:n}=r;return n(["닫힘"])},reported_user:r=>{const{normalize:n}=r;return n(["신고된 사용자:"])},state_resolved:r=>{const{normalize:n}=r;return n(["해결됨"])}},user_reporting:{title:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 신고"])},add_comment_description:r=>{const{normalize:n}=r;return n(["이 신고서는 내 인스턴스의 중재자에게 전달됩니다. 왜 이 계정을 신고하려는지 좀 더 자세히 알려주세요:"])},additional_comments:r=>{const{normalize:n}=r;return n(["추가 설명"])},forward_description:r=>{const{normalize:n}=r;return n(["이 계정은 다른 서버에 있는 계정입니다. 그쪽으로도 신고를 보낼까요?"])},forward_to:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"로 전달하기"])},submit:r=>{const{normalize:n}=r;return n(["전송"])},generic_error:r=>{const{normalize:n}=r;return n(["요청을 처리하는 중 오류가 발생했습니다."])}},announcements:{end_time_prompt:r=>{const{normalize:n}=r;return n(["끝나는 시각: "])},page_header:r=>{const{normalize:n}=r;return n(["공지사항"])},title:r=>{const{normalize:n}=r;return n(["공지사항"])},mark_as_read_action:r=>{const{normalize:n}=r;return n(["읽음으로 표시"])},post_form_header:r=>{const{normalize:n}=r;return n(["공지사항 작성"])},post_placeholder:r=>{const{normalize:n}=r;return n(["공지사항 내용을 작성하세요..."])},post_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["오류: ",e(t("error"))])},close_error:r=>{const{normalize:n}=r;return n(["닫기"])},delete_action:r=>{const{normalize:n}=r;return n(["삭제"])},post_action:r=>{const{normalize:n}=r;return n(["게시"])},start_time_prompt:r=>{const{normalize:n}=r;return n(["시작 시각: "])},all_day_prompt:r=>{const{normalize:n}=r;return n(["온종일 있는 이벤트입니다"])},published_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time")),"에 게시함"])},start_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time")),"에 시작함"])},end_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time")),"에 끝남"])},edit_action:r=>{const{normalize:n}=r;return n(["편집"])},submit_edit_action:r=>{const{normalize:n}=r;return n(["수정본 반영"])},cancel_edit_action:r=>{const{normalize:n}=r;return n(["취소"])},inactive_message:r=>{const{normalize:n}=r;return n(["이 공지사항은 비활성화 되었습니다"])}}}}}]); +//# sourceMappingURL=ko-json.9029d09084bb22d8b705.js.map +\ No newline at end of file diff --git a/priv/static/static/js/i18n/ko-json.9029d09084bb22d8b705.js.map b/priv/static/static/js/i18n/ko-json.9029d09084bb22d8b705.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/i18n/ko-json.9029d09084bb22d8b705.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/ko.json"],"sourcesContent":["export default {\n \"chat\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"챗\"])}\n },\n \"features_panel\": {\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"챗\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어 프록시\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"범위 옵션\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"텍스트 제한\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기능\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 추천\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"최대 파일용량\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 채팅\"])},\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"외치기\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 정보 불러오기 실패\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 찾기\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"적용\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보내기\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로딩중…\"])},\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"살짝 보기\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"닫기\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"검사\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"확인\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"활성화\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비활성화\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"취소\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"무시\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"접기\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"더 보기\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"필수 아님\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다시 시도하십시오\"])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다시 시도하십시오\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에러가 발생했습니다\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"더 보기\"])},\n \"role\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"중재자\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관리자\"])}\n },\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"취소\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"네\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"아니오\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"고정 해제\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"고정\"])},\n \"scope_in_timeline\": {\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 전용\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공개\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비표시\"])},\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다이렉트\"])}\n },\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"클릭해서 플래시 컨텐츠 보기 (Ruffle 사용, 작동하지 않을 수 있습니다).\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"플래시 컨텐츠는 임의 코드 실행이 아직도 가능할 수 있기에 위험할 수 있습니다.\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"플래시를 로드하지 못했습니다, 콘솔로 자세한 내용을 확인하세요.\"])},\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"맨 위로 올라가기\"])},\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"에러가 발생했습니다: \", _interpolate(_list(0))])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다시 보지 않기\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그인\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth로 로그인\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그아웃\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"예시: lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"가입\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 이름\"])},\n \"heading\": {\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"2단계 복구\"])},\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"2단계인증\"])}\n },\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복구 코드\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"2단계인증 코드를 입력하십시오\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복구 코드를 입력하십시오\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인증 코드\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그인해서 대화에 참여\"])},\n \"logout_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그아웃 확인\"])},\n \"logout_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"정말 로그아웃 하시겠습니까?\"])},\n \"logout_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그아웃\"])},\n \"logout_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그아웃 안 함\"])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스 소개\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뒤로\"])},\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로컬 챗\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다이렉트 메시지\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공개 타임라인\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"타임라인\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알려진 네트워크\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 검색\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"환경설정\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"채팅\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"타임라인\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"추천된 사용자\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"검색\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"북마크\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관리\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"홈 타임라인\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림 열기 (읽지 않은 알림이 있습니다)\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트\"])},\n \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"네비게이션 바 커스텀하기\"])},\n \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"상단 고정 편집\"])},\n \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"편집 종료\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림 닫기\"])},\n \"mobile_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모바일 사이드바 토글\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공지사항\"])},\n \"search_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"검색 바 닫기\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알 수 없는 게시물입니다, 검색합니다…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심을 가짐\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우함\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전 알림 불러오기\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"읽음!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏함\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림이 없습니다\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이사했습니다\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 로 반응했습니다\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"알림 불러오기 실패: \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고 내용을 전송함\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표가 끝남\"])}\n },\n \"post_status\": {\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 게시물 게시\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"계정이 \", _interpolate(_list(0)), \" 상태가 아닙니다. 누구나 당신을 팔로우 하고 팔로워 전용 게시물을 볼 수 있습니다.\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"잠김\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물을 민감함으로 설정\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"평문\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"마크다운\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])}\n },\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"제목 (선택)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인천공항에 도착했습니다.\"])},\n \"direct_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 게시물을 멘션 된 사용자들에게만 보여집니다\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시 중\"])},\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다이렉트 - 멘션 된 사용자들에게만\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 전용 - 팔로워들에게만\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공개 - 공개 타임라인으로\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비표시 - 공개 타임라인에는 안 보이게\"])}\n },\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비어있음\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미리보기\"])},\n \"scope_notice\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"누구나 볼 수 있습니다\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워에게만 보여집니다\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공개 타임라인이나 알려진 네트워크에는 보여지지 않습니다\"])}\n },\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파일을 올리지 못했습니다, 다시 시도해 보세요\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물이 비어 있습니다\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부파일 설명\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션한 모든 사용자에게 보여집니다.\"])},\n \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma는 멘션이나 투표를 수정하는 기능을 지원하지 않습니다.\"])},\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"수정\"])},\n \"edit_remote_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"수정 기능이 없는 다른 인스턴스에서는 수정한 사항이 반영되지 않을 수 있습니다.\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"맨 앞에 멘션한 사용자들에게만 보여집니다.\"])},\n \"content_type_selection\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 형태\"])},\n \"scope_notice_dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림 닫기\"])}\n },\n \"registration\": {\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"소개\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이메일\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"표시될 이름\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 확인\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"가입하기\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"초대 토큰\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"캡차\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이미지를 클릭해서 새로운 캡차 가져오기\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공백으로 둘 수 없습니다\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공백으로 둘 수 없습니다\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공백으로 둘 수 없습니다\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공백으로 둘 수 없습니다\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공백으로 둘 수 없습니다\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드와 일치해야 합니다\"])},\n \"birthday_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공백으로 둘 수 없습니다\"])},\n \"birthday_min_age\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"date\")), \" 또는 그 이전 출생만 가능합니다\"])}\n },\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"예: 김례인\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"예: lain\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"예시\\n안녕하세요, 례인입니다.\\n일본 시외에서 애니메이션 아이돌을 하고 있습니다. Wired에서 절 보셨을 거예요.\"])},\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"소개 (선택)\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이메일 (선택)\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"가입하려는 이유\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스는 수동으로 가입을 승인하고 있습니다.\\n왜 가입하고 싶은지 관리자에게 알려주세요.\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"가입\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"무슨 언어로 이메일을 받길 원하시나요?\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"생일:\"])},\n \"birthday_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"생일 (선택):\"])}\n },\n \"settings\": {\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 사진\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 사진 (알림창)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 사진\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"배경\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"소개\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파랑 (답글, 팔로우)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"초록 (리트윗)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"주황 (관심글)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"빨강 (취소)\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 바꾸기\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드를 바꾸는 데 문제가 있습니다.\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드가 바뀌었습니다!\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"제목이 있는 게시물 접기\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"작성\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 패스워드 확인\"])},\n \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"현재 아바타\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"현재 패스워드\"])},\n \"current_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"현재 프로필 배너\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"데이터 불러오기 / 내보내기\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기본 공개 범위\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 삭제\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"데이터가 영구히 삭제되고 계정이 비활성화됩니다.\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정을 삭제하는데 문제가 있습니다. 계속 발생한다면 인스턴스 관리자에게 문의하세요.\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"아래 패스워드를 입력하시면 계정이 삭제됩니다.\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프리셋 저장\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"필터링\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 단어를 가진 게시물들은 뮤트됩니다, 한 줄에 하나씩 적으세요\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 내보내기\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 목록을 CSV 파일로 내보내기\"])},\n \"follow_export_processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"진행 중입니다, 곧 다운로드 가능해 질 것입니다\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 불러오기\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 불러오기 실패\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 목록을 불러왔습니다! 처리에는 시간이 걸립니다.\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"표면\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"일반\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"대화의 첨부물 숨기기\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"타임라인의 첨부물 숨기기\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스 전용 패널 숨기기\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이미지 미리 불러오기\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 통계 숨기기 (관심글 수 등)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 통계 숨기기 (팔로워 수 등)\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CSV 파일에서 팔로우 목록 불러오기\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프리셋 불러오기\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"입력 칸\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"체크박스\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(기본: \", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(기본)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인터페이스\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인터페이스 언어\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"해당 파일은 지원되지 않는 Pleroma 테마입니다. 아무 일도 일어나지 않았습니다.\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 브라우저에서 사용 불가\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"링크\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워를 승인해서 받도록 제한\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비디오 반복재생\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"소리가 없는 비디오만 반복 재생 (마스토돈의 \\\"GIF\\\" 같은 것들)\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이름\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이름 & 소개\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 패스워드\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보여질 알림 종류\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심글\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모든 게시물의 서식을 지우기\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중인 사람 숨기기\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 숨기기\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"민감한 이미지를 숨기기\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth 토큰\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"토큰\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"토큰 새로 고침\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"만료일\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"취소\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패널\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"탭이 포커스되지 않았을 땐 멈추기\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프리셋\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 배경\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 배너\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인터페이스 모서리 둥글기 (픽셀 단위)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"타임라인의 답글\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모든 답글 보기\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"나에게 직접 오거나 내가 팔로우 중인 사람이 보낸 답글만 보기\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"나에게 직접 온 답글만 보기\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정을 저장하는 데 에러가 발생했습니다\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정 저장 됨\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보안\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"답글을 달 때 공개 범위 따라가기 (다이렉트 메시지는 언제나 따라감)\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 프로필 사진 설정\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 프로필 배경 설정\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 프로필 배너 설정\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"항상 제목 입력창 보이기\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"답글을 달 때 제목 복사하기\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이메일처럼: \\\"re: 제목\\\"\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"마스토돈처럼: 그대로 복사\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복사 안 함\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"마우스를 올려서 GIF 재생\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"최상단에 도달하면 알아서 새 게시물 가져오기\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"텍스트\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"테마\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"16진수 색상코드(#rrggbb)를 사용해 색상을 조정하세요.\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"체크박스를 통해 몇몇 컴포넌트의 색상과 불투명도를 조절 가능, \\\"모두 지우기\\\" 버튼으로 덮어 씌운 것을 모두 취소.\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"몇몇 입력칸 밑의 아이콘은 전경/배경 대비 관련 표시등입니다, 마우스를 올려 자세한 정보를 볼 수 있습니다. 투명도 대비 표시등이 가장 최악의 경우를 나타낸다는 것을 유의하세요.\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"툴팁/경고\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 설정\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"아니오\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"네\"])}\n },\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"웹 푸시 알림 활성화\"])},\n \"style\": {\n \"switcher\": {\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"색상 유지\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"그림자 유지\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불투명도 유지\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"둥글기 유지\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"글꼴 유지\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"유지\\\" 옵션들은 다른 테마를 고르거나 불러 올 때 현재 설정 된 옵션들을 건드리지 않게 합니다, 테마를 내보내기 할 때도 이 옵션에 따라 저장합니다. 아무 것도 체크 되지 않았다면 모든 설정을 내보냅니다.\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"초기화\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모두 지우기\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불투명도 지우기\"])},\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE가 업그레이드 되었기에, 테마가 기억하시던 것과 조금 다를 수 있습니다.\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불러온 파일은 이곳보다 이전 버전의 FE에서 만들어졌습니다. 호환성을 유지하겠지만 깨진 부분이 있을 수 있습니다.\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"혹시나 싶어서, 테마 스냅샷을 불러왔습니다. 테마 데이터를 불러와도 됩니다.\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버전이 충돌됩니다: 아마 FE가 롤백되고 다시 업데이트 되어서일 건데, 이전 버전 FE로 테마를 수정했다면 이전 버전 FE를 써보시는 게 좋고, 아니면 새 버전을 쓰세요.\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불러온 파일은 이곳보다 새 버전의 FE에서 만들어졌습니다.\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불러온 파일은 이곳보다 이전 버전의 FE에서 만들어졌습니다.\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"테마 스냅샷이 있어서, 모든 값이 덮어 씌워졌습니다. 직접 테마의 실제 데이터를 대신 불러와도 됩니다.\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파일에 스냅샷이 없어서 원래 보였던 것보다 다르게 보일 수 있습니다.\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버전 업데이트로 PleromaFE의 테마 엔진이 업그레이드 되었습니다.\"])},\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE의 버전이 롤백되었습니다.\"])},\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뭔 일인진 모르겠지만 스냅샷이 없어서, 몇몇 개가 기억하신 것과 달리 보일 수 있습니다.\"])}\n },\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"테마 불러오기\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"그대로 두기\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전 버전\"])},\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 버전\"])}\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"색상\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"불투명도\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"색상 대비율이 \", _interpolate(_named(\"ratio\")), \"입니다, \", _interpolate(_named(\"context\")), \" \", _interpolate(_named(\"level\"))])},\n \"level\": {\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"접근성 가이드라인 AA등급을 충족합니다 (최소)\"])},\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"접근성 가이드라인 AAA등급을 충족합니다 (권장)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"접근성 가이드라인을 충족하지 못합니다\"])}\n },\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"큰 (18pt 이상) 텍스트에 대해\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"일반 텍스트에 대해\"])}\n }\n }\n },\n \"common_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"일반\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"일반 색상\"])},\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"고급\\\" 탭에서 더 자세한 설정이 가능합니다\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"아이콘, 강조, 배지\"])}\n },\n \"advanced_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"고급\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"주의 배경\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에러\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"배지 배경\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패널 헤더\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"상단 바\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"테두리\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"입력칸\"])},\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"흐려진 텍스트\"])},\n \"chat\": {\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"경계선\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보냄\"])},\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"받음\"])}\n },\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선택된 메뉴 요소\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선택된 글\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"아이콘\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"경고\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"중립적\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 / 유저 소개\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"툴팁, 메뉴, 프로필 카드\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비활성화\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"배경사진\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표 그래프\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"강조 요소\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"눌렸을 때\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"토글됨\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"탭\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"밑배경\"])}\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"둥글기\"])}\n },\n \"shadows\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"그림자와 빛\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"컴포넌트\"])},\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"덮어쓰기\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"그림자 #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"흐리기\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"퍼지기\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"안쪽으로\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"그림자에는 CSS3 변수를 --variable을 통해 색상 값으로 사용할 수 있습니다. 불투명도에는 적용 되지 않습니다.\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"경고, 이 그림자는 브라우저가 지원하는 경우 항상 \", _interpolate(_list(0)), \"을 사용합니다.\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"는 \", _interpolate(_list(1)), \" 파라미터와 \", _interpolate(_list(2)), \" 키워드를 지원하지 않습니다.\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"안쪽과 안쪽이 아닌 그림자를 모두 설정하는 경우 투명 아바타에서 예상치 못 한 결과가 나올 수 있다는 것에 주의해 주세요.\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"퍼지기가 0보다 큰 그림자는 0으로 설정한 것과 동일하게 보여집니다\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"안쪽 그림자는 \", _interpolate(_list(0)), \"를 사용합니다\"])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패널\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패널 헤더\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"상단 바\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 아바타 (프로필 뷰에서)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 아바타 (게시물에서)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팝업과 툴팁\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼 (마우스 올렸을 때)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼 (눌렸을 때)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼 (마우스 올림 + 눌림)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"입력칸\"])}\n },\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"그림자의 경우 \", _interpolate(_list(0)), \" 표기법으로 다른 컬러 슬롯을 사용할 수 있습니다.\"])}\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"글꼴\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"화면에 적용할 글꼴을 고르세요. \\\"직접 입력\\\"은 시스템에 있는 글꼴 이름을 정확히 입력해야 합니다.\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인터페이스\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"입력칸\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 텍스트\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물의 고정폭 텍스트 (서식 있는 텍스트)\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"글꼴 이름\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"크기 (px 단위)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"굵기\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"직접 입력\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미리보기\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에러 예시\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버튼\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"더 많은 \", _interpolate(_list(0)), \" 그리고 \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인천공항에 도착했습니다.\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"도움 되는 설명서\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"우리의 \", _interpolate(_list(0)), \"를 읽고 도움 되지 않는 것들을 배우자!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"괜찮은 텍스트\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"나는 약관을 대충 훑어보았습니다\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"작고 귀여운 링크\"])}\n }\n },\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 목록 내보내기\"])},\n \"mfa\": {\n \"scan\": {\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"키\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"스캔\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"2단계 인증 앱을 통해 QR 코드를 찍거나 키를 입력하세요:\"])}\n },\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인증 방법\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복구 코드를 가져오고 있습니다…\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복구 코드.\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 복구 코드 생성\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"2단계 인증\"])},\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"확인 & OTP 활성화\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP 설정\"])},\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 복구 코드를 생성하면, 이전 코드는 작동하지 않게 됩니다.\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"복구 코드를 어딘가 안전한 곳에 적어 놓으세요 - 더 이상 이 코드를 보실 순 없습니다. 만약 2단계 인증 앱과 복구 코드 둘 다 접근할 수 없게 된다면 계정에 로그인할 수 없게 됩니다.\"])},\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"활성화하려면 2단계 인증 앱에서 받은 코드를 입력하세요:\"])}\n }\n },\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보안\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지 반응을 타임라인에 표시\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"최소 150x150 픽셀보다 큰 사진을 업로드하시면 좋습니다.\"])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보안\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"반응\"])},\n \"profile_fields\": {\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 추가정보\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"필드 추가\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"라벨\"])}\n },\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트와 차단\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"채팅 메시지\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메일 주소 바꾸기\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메일 주소가 바뀌었습니다!\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 계정은 자동 봇입니다\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트\"])},\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"앱 이름\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로하지 않은 계정에서 보내는 알림 차단\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알아서 새 게시물 버튼 숨기기 (모바일)\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 목록을 가져왔습니다! 처리하는 데에 시간이 걸릴 수 있습니다.\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록을 가져왔습니다! 처리하는 데에 시간이 걸릴 수 있습니다.\"])},\n \"account_backup_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내 계정 정보와 게시물이 담긴 아카이브를 다운로드 받을 수 있지만, 아직 Pleroma로 다시 불러오는 기능은 지원하지 않습니다.\"])},\n \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정을 다른 곳으로 이사하려면, 이사 갈 계정으로 가셔서 별칭이 이 계정을 가리키도록 하세요.\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물에서 봇 알림 숨기기\"])},\n \"navbar_column_stretch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"상단 바를 컬럼 너비만큼 늘리기\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내 프로필에 \\\"관리자\\\" 배지 달기\"])},\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물을 민감함으로 기본 설정\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"특정 사용자의 알림을 받지 않으려면, 뮤트를 사용하세요.\"])},\n \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"흐려진 도메인 (예: \", \"@\", \"foo\", \"@\", \"example.org 에서의 \", \"@\", \"example.org)\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자를 차단하면 알림을 받지 않는데다 구독까지 취소하게 됩니다.\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"트리\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"변경 사항을 저장\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중인 계정이 이사를 하면 자동으로 팔로우하기\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"고급 설정 보기\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기본 설정과 다릅니다\"])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 설정은 계정과 묶여 있으며 연결된 모든 세션과 클라이언트에 영향을 줍니다\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"본인 확인을 위해 현재 패스워드를 입력하세요\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 모양새\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션 링크\"])},\n \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메뉴에 리스트 보이기\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"서버로부터 이메일을 받을 언어\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 목록 가져오기\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 목록을 CSV 파일로 내보내기\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 목록을 가져오는 데에 문제가 발생했습니다\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록 내보내기\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록을 CSV 파일로 내보내기\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록 가져오기\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록을 가져오는 데에 문제가 발생했습니다\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 목록을 CSV 파일에서 가져오기\"])},\n \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 백업\"])},\n \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"백업\"])},\n \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다운로드\"])},\n \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"백업이 아직 준비되지 않았습니다.\"])},\n \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"삭제\"])},\n \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"백업 리스트를 가져오는 데 에러가 발생했습니다: \", _interpolate(_named(\"error\"))])},\n \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 백업 만들기\"])},\n \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 백업 추가됨.\"])},\n \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"새 백업을 추가하는 데 에러가 발생했습니다: \", _interpolate(_named(\"error\"))])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메일 주소를 바꾸는 데 문제가 있습니다.\"])},\n \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 별칭\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"항상 떠다니는 게시물 작성 버튼 보기\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"봇 게시물 뮤트하기\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트한 게시물 숨기기\"])},\n \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"별칭\"])},\n \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"닫기\"])},\n \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 별칭 삭제\"])},\n \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"새 별칭 추가 (예시. \", _interpolate(_named(\"example\")), \")\"])},\n \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"별칭이 추가되었습니다.\"])},\n \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 이사\"])},\n \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"이사 갈 계정 (예시. \", _interpolate(_named(\"example\")), \")\"])},\n \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정을 이사했습니다.\"])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"검색 결과나 다른 서비스들에서 이 계정을 찾을 수 있도록 허용\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지를 선택창에서 고를 때 띄어쓰기를 집어넣기\"])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"단어 필터\"])},\n \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"단어 필터 그리고 더보기...\"])},\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"강조\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어 미리보기 숨기기\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 하나 당 최대로 보여질 섬네일 개수 (비워두면 제한을 두지 않습니다)\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스 외치기 숨기기\"])},\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"컬럼 순서 뒤집기\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스 배경화면 가리기\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"민감한 첨부물을 클릭 한 번으로 열기\"])},\n \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"계정을 이사하는 데 에러가 발생했습니다: \", _interpolate(_named(\"error\"))])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트한 사용자의 게시물 숨기기\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"필터된 모든 게시물 숨기기\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"단어 필터된 게시물 숨기기\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부파일의 섬네일을 자르지 않음\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트한 스레드 숨기기\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CSV 파일에서 차단 목록 불러오기\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팝업 프레임에서 비디오를 재생\"])},\n \"file_export_import\": {\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정 백업\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정을 파일로 백업\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설정과 테마를 파일로 백업\"])},\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파일에서 설정 복구하기\"])},\n \"errors\": {\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"해당 파일은 지원되지 않는 Pleroma 백업입니다. 아무 일도 일어나지 않았습니다.\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"호환되지 않는 버전: \", _interpolate(_named(\"fileMajor\")), \", 이 PleromaFE (설정 버전 \", _interpolate(_named(\"feMajor\")), \") 가 너무 낡아서 처리할 수 없습니다\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"호환되지 않는 버전: \", _interpolate(_named(\"fileMajor\")), \", 파일 버전이 너무 낡아서 처리할 수 없습니다 (지원되는 최소 설정 버전 \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파일 마이너 버전이 달라서, 몇몇 설정들이 적용되지 않았을 수 있습니다\"])}\n }\n },\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사생활 보안\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 메일 주소\"])},\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내 관심글을 보이지 않음 (알림은 갑니다)\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중 숫자 숨기기\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 숫자 숨기기\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 없음\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단할 사람 검색하기\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트할 사람 검색하기\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 이사\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"참여한 투표가 끝남\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 없음\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내 답글만 보기\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중인 사람들끼리의 답글 보기\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 프로필\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내 프로필에 \\\"중재자\\\" 배지 달기\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트할 도메인 검색하기\"])},\n \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"컬럼 헤더를 화면 상단에 고정하지 않음\"])},\n \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알아서 새 게시물 가져오기\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공개 범위 선택지 줄이기\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 사진 초기화\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"정말 프로필 사진을 초기화할까요?\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 배경 초기화\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 배너 초기화\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"정말 프로필 배너를 초기화할까요?\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"정말 프로필 배경을 초기화할까요?\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"실시간으로 게시물과 알림 받기\"])},\n \"use_websockets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"웹소켓 사용 (실시간 업데이트)\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사진 업로드\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"대화 표시 모양\"])},\n \"conversation_display_tree_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"트리 뷰\"])},\n \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"측면 컬럼의 스크롤바 보기\"])},\n \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 안에 놓기\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"푸시 알림에서 보낸 사람과 내용을 숨김\"])},\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"타임라인 렌더링 최적화\"])},\n \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"@\", \" 문자를 텍스트 대신 아이콘으로 표시\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션에 링크 표시\"])},\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"항상 짧은 이름 사용 (예: \", \"@\", \"foo)\"])},\n \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다른 인스턴스 사용자만 이름 전부 보기 (예: \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"항상 이름 전부 보기 (예: \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_use_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션 링크를 누르면 사용자 카드 보기\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"링크 옆에 프로필 사진 보기\"])},\n \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"누가 날 멘션했을 때 멘션을 강조 표시\"])},\n \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사진 키우기\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"밈 화살표\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"(당신)\\\" 보이기\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"필터\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"추가 설정\"])},\n \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 열기\"])},\n \"version\": {\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프론트엔드 버전\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"버전\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"백엔드 버전\"])}\n },\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"즐겁다\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"도메인\"])},\n \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공간이 충분하면, 세 번째 컬럼 채우기\"])},\n \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"세 번째 컬럼 안 보기\"])},\n \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림 컬럼\"])},\n \"third_column_mode_postform\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 편집창과 내비게이션\"])},\n \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"컬럼\"])},\n \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"컬럼 크기\"])},\n \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사이드바\"])},\n \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용\"])},\n \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"트리 뷰에서 더 유연한 탐색을 허용\"])},\n \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"현재 게시물보다 상단의 게시물들을 흐린 텍스트로 표시\"])},\n \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선형\"])},\n \"conversation_display_linear_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선형 뷰\"])},\n \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"답글 더 보기\\\" 버튼을\"])},\n \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 아래에 놓기\"])},\n \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기본적으로 보일 최대 깊이\"])},\n \"user_popover_avatar_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 카드의 사진 클릭 시\"])},\n \"user_popover_avatar_action_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"카드 닫기\"])},\n \"user_popover_avatar_overlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 카드를 프로필 사진 위에 띄우기\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 내용 형식\"])},\n \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"별칭을 가져오는 중 에러 발생: \", _interpolate(_named(\"error\"))])},\n \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"별칭을 추가하는 중 에러 발생: \", _interpolate(_named(\"error\"))])},\n \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션 옆에 유저 프로필 사진을 보임\"])},\n \"backup_running\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"백업 중입니다, \", _interpolate(_named(\"number\")), \"개 처리 완료.\"]), _normalize([\"백업 중입니다, \", _interpolate(_named(\"number\")), \"개 처리 완료.\"])])},\n \"confirm_dialogs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"하기 전에 다시 물어보기\"])},\n \"autocomplete_select_first\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"자동완성이 가능하면 자동으로 첫 번째 후보를 선택\"])},\n \"backup_failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"백업에 실패했습니다.\"])},\n \"emoji_reactions_scale\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리액션 크기\"])},\n \"birthday\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"생일\"])},\n \"show_birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내 생일 보여주기\"])}\n },\n \"add_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보조 언어 추가\"])},\n \"confirm_dialogs_repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏\"])},\n \"confirm_dialogs_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"언팔로우\"])},\n \"confirm_dialogs_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단\"])},\n \"confirm_dialogs_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트\"])},\n \"confirm_dialogs_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 삭제\"])},\n \"confirm_dialogs_approve_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 승인\"])},\n \"confirm_dialogs_deny_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 거절\"])},\n \"confirm_dialogs_remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 제거\"])},\n \"remove_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"삭제\"])},\n \"primary_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"주 언어:\"])},\n \"fallback_language\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"보조 언어 \", _interpolate(_named(\"index\")), \":\"])},\n \"confirm_dialogs_logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그아웃\"])}\n },\n \"timeline\": {\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"접기\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"대화\"])},\n \"error_fetching\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"업데이트 불러오기 실패\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전 게시물 불러오기\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 전용 게시물과 다이렉트 메시지는 리핏할 수 없습니다\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏함\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 게시물 보기\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"최신\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"타임라인을 가져오지 못했습니다: \", _interpolate(_list(0))])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새로고침\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 없음\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 게시물 없음\"])},\n \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"실시간 연결 됨\"])},\n \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"실시간 연결이 끊어짐: CloseEvent 코드 \", _interpolate(_list(0))])},\n \"quick_filter_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"빠른 필터 설정\"])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"승인\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 됨!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"거부\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"요청 보냄!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"요청 중…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"언팔로우\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"나를 팔로우 합니다!\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"당신입니다!\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 됨\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"개 / 일\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다른 인스턴스에서 팔로우\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 해제 중…\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 해제 중…\"])},\n \"admin_menu\": {\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"중재자 탄핵\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 공개 범위를 팔로워 전용으로 강제\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"누구도 팔로우를 못하도록 막기\"])},\n \"delete_user_data_and_deactivate_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"영구적으로 이 계정의 데이터가 삭제되고 비활성화 됩니다. 정말로 괜찮겠습니까?\"])},\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관리\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관리자로 임명\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"중재자로 임명\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다른 인스턴스에서 팔로우하지 못하도록 막기\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 활성화\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 비활성화\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 삭제\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모든 게시물을 민감한 내용으로 표시\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물에서 미디어 제거\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관리자 탄핵\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 공개 범위를 비표시로 강제\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"연합 타임라인에서 사용자 게시물 비허용\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 삭제\"])}\n },\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"비활성화됨\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필 편집\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심글\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청 취소\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 해제\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 중…\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"숨겨짐\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메시지\"])},\n \"remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로워 삭제\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"구독\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"구독 해제\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 해제\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 중…\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏 숨기기\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏 보기\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"봇\"])},\n \"highlight\": {\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"강조 표시 없음\"])},\n \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"줄무늬 배경\"])},\n \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"단색 배경\"])},\n \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"옆트임\"])}\n },\n \"approve_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"승인 확인\"])},\n \"approve_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"승인\"])},\n \"approve_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"승인 안 함\"])},\n \"approve_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"user\")), \"의 팔로우 요청을 승인할까요?\"])},\n \"block_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"차단 확인\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 타임라인\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"죄송하지만, 이 프로필은 존재하지 않습니다.\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"죄송하지만, 프로필을 불러오는 데 에러가 발생했습니다.\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"더 보기\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 추천\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어 업로드\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"답글\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심글\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 설정\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"반응 추가\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청 승인\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청 거절\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"북마크\"])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"업로드 실패.\"])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"파일이 너무 커요 [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"잠시 후에 다시 시도해 보세요\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"업로드 실패: \", _interpolate(_list(0))])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n }\n },\n \"interactions\": {\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 팔로워\"])},\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏과 관심\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"계정 이동\"])},\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지 반응\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전 반응 불러오기\"])}\n },\n \"emoji\": {\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"전체 \", _interpolate(_named(\"emojiAmount\")), \"개의 에모지 불러오기\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode 에모지\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"전용 에모지\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지 넣기\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지 검색\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"에모지\"])},\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"스티커\"])},\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"첫 \", _interpolate(_named(\"saneAmount\")), \"개의 에모지를 불러왔습니다, 에모지를 전부 불러오면 성능 저하가 있을 수 있습니다.\"])},\n \"unicode_groups\": {\n \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사람 & 몸\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"웃는 얼굴 & 감정\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"여행 & 장소\"])},\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"활동\"])},\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"동물 & 자연\"])},\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"깃발\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"음식 & 음료\"])},\n \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사물\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기호\"])}\n },\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"열린 채로 두기\"])},\n \"regional_indicator\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"지역 표시기 \", _interpolate(_named(\"letter\"))])}\n },\n \"polls\": {\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표를 추가\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"표\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표 형식\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표 기간\"])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 표\"]), _normalize([_interpolate(_named(\"count\")), \" 표\"])])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 명 투표\"]), _normalize([_interpolate(_named(\"count\")), \" 명 투표\"])])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선택지\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선택지 추가\"])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"투표는 \", _interpolate(_list(0)), \" 전에 마감되었습니다\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"투표는 \", _interpolate(_list(0)), \"에 마감됩니다\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"하나만 선택\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"여러 개 선택\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"선택지가 너무 적습니다\"])}\n },\n \"media_modal\": {\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다음\"])},\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어 뷰어 닫기\"])}\n },\n \"importer\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 파일을 가져올 때 오류가 발생하였습니다.\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"정상히 불러왔습니다.\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"보내기\"])}\n },\n \"image_cropper\": {\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"취소\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"그대로 저장\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"저장\"])},\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사진 자르기\"])}\n },\n \"exporter\": {\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"처리중입니다, 곧 파일을 다운로드할 수 있습니다\"])},\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내보내기\"])}\n },\n \"domain_mute_card\": {\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 해제 중…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 해제\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트 중…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"뮤트\"])}\n },\n \"about\": {\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"운영자\"])},\n \"mrf\": {\n \"simple\": {\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고에 붙혀 있는 매체는 민감함으로 설정됩니다:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"매체를 민감함으로 설정\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고에 붙혀 있는 매체는 제거됩니다:\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"매체 제거\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스에서 아래의 인스턴스들은 \\\"알려진 네트워크\\\" 타임라인에서 제외됩니다:\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"알려진 네트워크\\\" 타임라인에서 제외\"])},\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스는 아래의 인스턴스에게 공개투고만을 보냅니다:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"검역\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고를 받아들이지 않습니다:\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 인스턴스에서는 아래의 인스턴스로부터 보내온 투고만이 접수됩니다:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"거부\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"허가\"])},\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스 특유의 정책\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"인스턴스\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사유\"])},\n \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"없음\"])}\n },\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용되는 MRF 정책\"])},\n \"keyword\": {\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"바꾸기\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"거부\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"알려진 모든 네트워크\\\" 타임라인에서 제외\"])},\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"단어 정책\"])}\n },\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"연합\"])},\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF 정책은 이 인스턴스의 페더레이션 동작을 제어하고 있습니다. 적용되고 있는 정책은 다음과 같습니다:\"])}\n }\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"외치기\"])}\n },\n \"time\": {\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 년\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 년\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 년\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 년\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 주일\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 주일\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 주일\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 주일\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 초\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 초\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 초\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 초\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"지금\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"방금\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 달 전\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 달 전\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 달 전\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 달 전\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 분\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 분\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 분\"])},\n \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 분\"])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 전\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 시간\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 시간\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 시간\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 시간\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 일\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 일\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 일\"])},\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 일\"])},\n \"unit\": {\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"주\"]), _normalize([_interpolate(_list(0)), \"주\"])])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"분\"]), _normalize([_interpolate(_list(0)), \"분\"])])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"초\"]), _normalize([_interpolate(_list(0)), \"초\"])])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"초\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"주\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"년\"]), _normalize([_interpolate(_list(0)), \"년\"])])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"년\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"일\"]), _normalize([_interpolate(_list(0)), \"일\"])])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"일\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"시간\"]), _normalize([_interpolate(_list(0)), \"시간\"])])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"시간\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"분\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \"달\"]), _normalize([_interpolate(_list(0)), \"달\"])])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"달\"])}\n },\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 후\"])}\n },\n \"remote_user_resolver\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"찾을 수 없습니다.\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"검색:\"])},\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"다른 인스턴스 사용자 안내기\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"모두 선택\"])}\n },\n \"lists\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트 제목\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 검색하기\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트 만들기\"])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"만들기\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트 삭제\"])},\n \"following_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 중인 사람들만\"])},\n \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트 관리\"])},\n \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멤버 관리\"])},\n \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트에서 제거\"])},\n \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트에 추가\"])},\n \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트에 이미 있음\"])},\n \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"listTitle\")), \" 리스트 편집\"])},\n \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"제목 저장\"])},\n \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리스트를 삭제하시겠어요?\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"변경 사항을 저장\"])},\n \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 리스트 만들기\"])},\n \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사용자 추가\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"리스트를 조작하는 데 오류가 발생했습니다: \", _interpolate(_list(0))])}\n },\n \"search\": {\n \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"결과 더 없음\"])},\n \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"결과 더 불러오기\"])},\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사람\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"해시태그\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \"명이 말하는 중\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \"명이 말하는 중\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"결과 없음\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드를 잊으셨나요?\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 재설정\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이메일 주소 또는 사용자 이름\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 초기화를 하셔야 하지만, 못 하게 막혀 있습니다. 인스턴스 관리자에게 문의해주세요.\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 초기화를 위해 이메일을 확인해주세요.\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"홈으로 돌아가기\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"로그인하려면 패스워드를 초기화해야 합니다.\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"패스워드 초기화를 못 하게 되어 있습니다. 인스턴스 관리자에게 문의해주세요.\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이메일 주소 또는 사용자 이름을 입력하세요. 패스워드 초기화 링크를 메일로 보내드립니다.\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"너무 많은 시도를 했습니다, 나중에 다시 해주세요.\"])}\n },\n \"chats\": {\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"당신:\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"삭제\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"새 채팅\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"채팅\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"메시지가 비어 있습니다\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"더 보기\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"왜인진 모르겠는데 채팅을 불러오지 못했습니다.\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"왜인진 모르겠는데 메시지를 전송하지 못했습니다.\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 메시지를 정말 지울까요?\"])},\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"채팅이 없네요. 새 채팅을 시작해보세요!\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"nickname\")), \"에게 메시지\"])}\n },\n \"file_type\": {\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"오디오\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"영상\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"사진\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"파일\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"오늘\"])}\n },\n \"update\": {\n \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"양해해주세요\"])},\n \"update_bugs_gitlab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma GitLab\"])},\n \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"변경 내역\"])},\n \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"무엇이 바뀌었는지 자세히 알아보시려면, \", _interpolate(_named(\"theFullChangelog\")), \"을 참조하세요.\"])},\n \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"저희가 한동안 릴리즈를 안 해서, 익숙하셨던 생김새나 경험과 많이 달라졌을 수 있습니다.\"])},\n \"update_bugs\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"저희가 비록 테스트를 많이 하고 직접 개발 버전을 쓰기도 하지만, 많이 바꾸기도 했고, 몇몇 가지 놓친 점들이 있을 터이니, 사용하면서 불편한 점이나 문제는 \", _interpolate(_named(\"pleromaGitlab\")), \"에 제보해주시면 감사하겠습니다. 저희는 겪으신 문제점이나 Pleroma와 Pleroma-FE에 대한 피드백과 제안을 환영합니다.\"])}\n },\n \"unicode_domain_indicator\": {\n \"tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 도메인은 아스키 문자가 아닌 문자를 포함하고 있습니다.\"])}\n },\n \"status\": {\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"대화 뮤트\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", 단어 포함:\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필에서 고정 해제\"])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"답글 (+\", _interpolate(_named(\"numReplies\")), \"개):\"]), _normalize([\"답글 (+\", _interpolate(_named(\"numReplies\")), \"개):\"])])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"미디어 모달에서 보기\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 스레드 숨기기\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"설명 미리보기 (첨부물을 열어서 전체 설명 보기)\"])},\n \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"이 스레드를 전부 들춰보기 (총 \", _interpolate(_named(\"numStatus\")), \"개 있음, 최대 깊이 \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"이 스레드를 전부 들춰보기 (총 \", _interpolate(_named(\"numStatus\")), \"개 있음, 최대 깊이 \", _interpolate(_named(\"depth\")), \")\"])])},\n \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"이 스레드의 나머지 부분 보기 (총 \", _interpolate(_named(\"numStatus\")), \"개)\"]), _normalize([\"이 스레드의 나머지 부분 보기 (총 \", _interpolate(_named(\"numStatus\")), \"개)\"])])},\n \"status_history\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 이력\"])},\n \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"전체 대화 보기 (\", _interpolate(_named(\"numStatus\")), \"개 더 있음)\"]), _normalize([\"전체 대화 보기 (\", _interpolate(_named(\"numStatus\")), \"개 더 있음)\"])])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"삭제\"])},\n \"edit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"수정\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심글\"])},\n \"edited_at\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(\", _interpolate(_named(\"time\")), \"에 마지막으로 수정됨)\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"프로필에 고정\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"고정됨\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"북마크\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"북마크 해제\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"정말 지우시겠어요?\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"답글\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"멘션\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"답글:\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"대화 뮤트 해제\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"스레드 뮤트됨\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 접근 불가\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시물 링크 복사\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"원본 페이지\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"전체 제목 보기\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"전체 제목 숨기기\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용 보기\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"내용 숨기기\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"지워진 게시물입니다\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"민감한 내용\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"펼치기\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(당신)\"])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \"개 더 있음\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"number\")), \"개의 첨부물을 가짐\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 전부 보이기\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 숨기기\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 접기\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 지우기\"])},\n \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"플래시 플레이어 정지\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 왼쪽으로 밀기\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"첨부물 오른쪽으로 밀기\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"갤러리 열기\"])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 스레드 보이기\"])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"이 게시물 아래 \", _interpolate(_named(\"numReplies\")), \"개 답글 더 보기\"]), _normalize([\"이 게시물 아래 \", _interpolate(_named(\"numReplies\")), \"개 답글 더 보기\"])])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 게시물의 답글만 보기\"])},\n \"repeat_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏할까요?\"])},\n \"repeat_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏 확인\"])},\n \"repeat_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏\"])},\n \"repeat_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏 안 함\"])},\n \"delete_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"삭제 확인\"])},\n \"delete_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"삭제\"])},\n \"delete_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"냅두기\"])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma가 브라우저 저장소에 접근할 수 없습니다. 로그인이 풀리거나 로컬 설정이 초기화 되는 등 예상치 못한 문제를 겪을 수 있습니다. 쿠키를 활성화 해보세요.\"])}\n },\n \"report\": {\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고자:\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고된 게시물:\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"기타:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"상태:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"열림\"])},\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"닫힘\"])},\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고된 사용자:\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"해결됨\"])}\n },\n \"user_reporting\": {\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 신고\"])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 신고서는 내 인스턴스의 중재자에게 전달됩니다. 왜 이 계정을 신고하려는지 좀 더 자세히 알려주세요:\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"추가 설명\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 계정은 다른 서버에 있는 계정입니다. 그쪽으로도 신고를 보낼까요?\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"로 전달하기\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"전송\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"요청을 처리하는 중 오류가 발생했습니다.\"])}\n },\n \"announcements\": {\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"끝나는 시각: \"])},\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공지사항\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공지사항\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"읽음으로 표시\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공지사항 작성\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"공지사항 내용을 작성하세요...\"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"오류: \", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"닫기\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"삭제\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"게시\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"시작 시각: \"])},\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"온종일 있는 이벤트입니다\"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \"에 게시함\"])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \"에 시작함\"])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \"에 끝남\"])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"편집\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"수정본 반영\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"취소\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이 공지사항은 비활성화 되었습니다\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","list","_list","named","_named","plural","_plural"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/i18n/nan-TW-json.7f2789d8a461e86d1734.js b/priv/static/static/js/i18n/nan-TW-json.7f2789d8a461e86d1734.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[9862],{42101:(n,r,e)=>{e.r(r),e.d(r,{default:()=>t});const t={about:{mrf:{federation:n=>{const{normalize:r}=n;return r(["聯邦"])},keyword:{keyword_policies:n=>{const{normalize:r}=n;return r(["關鍵字政策"])},ftl_removal:n=>{const{normalize:r}=n;return r(["Tuì「知影 ê 網路」時間線除掉"])},reject:n=>{const{normalize:r}=n;return r(["拒絕"])},replace:n=>{const{normalize:r}=n;return r(["取代"])},is_replaced_by:n=>{const{normalize:r}=n;return r(["→"])}},mrf_policies:n=>{const{normalize:r}=n;return r(["啟用 ê MRF 政策"])},mrf_policies_desc:n=>{const{normalize:r}=n;return r(["MRF 政策操作本站 ê 對外通信行為。以下ê政策啟用 ah:"])},simple:{simple_policies:n=>{const{normalize:r}=n;return r(["站臺特有 ê 政策"])},instance:n=>{const{normalize:r}=n;return r(["站"])},reason:n=>{const{normalize:r}=n;return r(["理由"])},accept:n=>{const{normalize:r}=n;return r(["接受"])},accept_desc:n=>{const{normalize:r}=n;return r(["本站干焦接受下跤 ê 站 ê 短 phue:"])},reject:n=>{const{normalize:r}=n;return r(["拒絕"])},reject_desc:n=>{const{normalize:r}=n;return r(["本站 buē 接受 tuì 以下 ê 站 ê 短 phue:"])},quarantine:n=>{const{normalize:r}=n;return r(["隔離"])},quarantine_desc:n=>{const{normalize:r}=n;return r(["針對下跤 ê 站,本站干焦送出公開ê PO文:"])},ftl_removal:n=>{const{normalize:r}=n;return r(["Tuì「知影 ê 網路」時間線thâi掉"])},ftl_removal_desc:n=>{const{normalize:r}=n;return r(["本站buē 佇「知影 ê 網路」刊下跤 ê 站 ê PO文:"])},media_removal:n=>{const{normalize:r}=n;return r(["Thâi除媒體"])},media_removal_desc:n=>{const{normalize:r}=n;return r(["本站 kā 下跤 ê 站臺送 ê PO文 ê 媒體 lóng thâi 除:"])},media_nsfw:n=>{const{normalize:r}=n;return r(["媒體 lóng 標做「敏感內容」"])},media_nsfw_desc:n=>{const{normalize:r}=n;return r(["本站 kā 下跤 ê 站 ê 媒體,lóng 標做敏感內容:"])},not_applicable:n=>{const{normalize:r}=n;return r(["N/A"])}}},staff:n=>{const{normalize:r}=n;return r(["工作人員"])}},announcements:{page_header:n=>{const{normalize:r}=n;return r(["公告"])},title:n=>{const{normalize:r}=n;return r(["公告"])},mark_as_read_action:n=>{const{normalize:r}=n;return r(["標做讀過"])},post_form_header:n=>{const{normalize:r}=n;return r(["貼公告"])},post_placeholder:n=>{const{normalize:r}=n;return r(["佇 tsia 拍你 ê 公告……"])},post_action:n=>{const{normalize:r}=n;return r(["貼"])},post_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["錯誤:",e(t("error"))])},close_error:n=>{const{normalize:r}=n;return r(["關"])},start_time_prompt:n=>{const{normalize:r}=n;return r(["開始時間: "])},end_time_prompt:n=>{const{normalize:r}=n;return r(["結束時間: "])},all_day_prompt:n=>{const{normalize:r}=n;return r(["Tse 是 kui 工 ê 事件"])},published_time_display:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["公告佇 ",e(t("time"))])},start_time_display:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["有效 tuì:",e(t("time"))])},end_time_display:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["中止佇:",e(t("time"))])},edit_action:n=>{const{normalize:r}=n;return r(["編輯"])},submit_edit_action:n=>{const{normalize:r}=n;return r(["送出"])},cancel_edit_action:n=>{const{normalize:r}=n;return r(["取消"])},inactive_message:n=>{const{normalize:r}=n;return r(["這个公告 tsit-má 無效力"])},delete_action:n=>{const{normalize:r}=n;return r(["Thâi掉"])}},shoutbox:{title:n=>{const{normalize:r}=n;return r(["留話枋"])}},domain_mute_card:{mute:n=>{const{normalize:r}=n;return r(["消音"])},mute_progress:n=>{const{normalize:r}=n;return r(["Teh 消音……"])},unmute:n=>{const{normalize:r}=n;return r(["予有聲"])},unmute_progress:n=>{const{normalize:r}=n;return r(["Teh 予有聲……"])}},exporter:{export:n=>{const{normalize:r}=n;return r(["匯出"])},processing:n=>{const{normalize:r}=n;return r(["Teh 處理,較停仔指示你下載檔案"])}},features_panel:{shout:n=>{const{normalize:r}=n;return r(["留話枋"])},pleroma_chat_messages:n=>{const{normalize:r}=n;return r(["Pleroma 開講"])},media_proxy:n=>{const{normalize:r}=n;return r(["媒體代理伺侯器"])},scope_options:n=>{const{normalize:r}=n;return r(["公開範圍選項"])},text_limit:n=>{const{normalize:r}=n;return r(["字數限制"])},title:n=>{const{normalize:r}=n;return r(["有效 ê 功能"])},who_to_follow:n=>{const{normalize:r}=n;return r(["啥儂通綴"])},upload_limit:n=>{const{normalize:r}=n;return r(["檔案 sài-suh 限制"])},gopher:n=>{const{normalize:r}=n;return r(["Gopher"])}},finder:{error_fetching_user:n=>{const{normalize:r}=n;return r(["Tshuē 用者 ê 時起錯誤"])},find_user:n=>{const{normalize:r}=n;return r(["Tshuē 用者"])}},general:{apply:n=>{const{normalize:r}=n;return r(["應用"])},submit:n=>{const{normalize:r}=n;return r(["送出"])},more:n=>{const{normalize:r}=n;return r(["Koh 較 tsē"])},loading:n=>{const{normalize:r}=n;return r(["Leh 載入……"])},generic_error:n=>{const{normalize:r}=n;return r(["起錯誤 ah"])},generic_error_message:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["起錯誤:",e(t(0))])},error_retry:n=>{const{normalize:r}=n;return r(["請 koh 試一 kái"])},retry:n=>{const{normalize:r}=n;return r(["Koh 試"])},optional:n=>{const{normalize:r}=n;return r(["非必要"])},show_more:n=>{const{normalize:r}=n;return r(["展示較 tsē"])},show_less:n=>{const{normalize:r}=n;return r(["展示較少"])},never_show_again:n=>{const{normalize:r}=n;return r(["Mài koh 展示"])},dismiss:n=>{const{normalize:r}=n;return r(["無視"])},cancel:n=>{const{normalize:r}=n;return r(["取消"])},disable:n=>{const{normalize:r}=n;return r(["無愛用"])},enable:n=>{const{normalize:r}=n;return r(["啟用"])},confirm:n=>{const{normalize:r}=n;return r(["確認"])},verify:n=>{const{normalize:r}=n;return r(["驗證"])},close:n=>{const{normalize:r}=n;return r(["關掉"])},undo:n=>{const{normalize:r}=n;return r(["復原"])},yes:n=>{const{normalize:r}=n;return r(["是"])},no:n=>{const{normalize:r}=n;return r(["毋是"])},peek:n=>{const{normalize:r}=n;return r(["先看 māi"])},scroll_to_top:n=>{const{normalize:r}=n;return r(["捲 kàu 頂懸"])},role:{admin:n=>{const{normalize:r}=n;return r(["行政員"])},moderator:n=>{const{normalize:r}=n;return r(["管理員"])}},unpin:n=>{const{normalize:r}=n;return r(["無愛 kā 釘"])},pin:n=>{const{normalize:r}=n;return r(["Kā釘起來"])},flash_content:n=>{const{normalize:r}=n;return r(["Ji̍h tsia,用 Ruffle(iáu teh 試驗,可能 buē 紡)看 Flash ê 內容。"])},flash_sepcurity:n=>{const{normalize:r}=n;return r(["注意 tse 可能有危險,因為 Flash 內容猶原是任意 ê 程式碼。"])},flash_fail:n=>{const{normalize:r}=n;return r(["載入 flash 內容失敗,詳細ē當看控制臺。"])},scope_in_timeline:{direct:n=>{const{normalize:r}=n;return r(["私人 phue"])},private:n=>{const{normalize:r}=n;return r(["干焦 hōo 綴 lí ê 看"])},public:n=>{const{normalize:r}=n;return r(["公開佇公共時間線"])},unlisted:n=>{const{normalize:r}=n;return r(["無愛公開佇公共時間線"])}},flash_security:n=>{const{normalize:r}=n;return r(["Flash內容通藏任何ê指令,所以可能有危險。"])}},image_cropper:{crop_picture:n=>{const{normalize:r}=n;return r(["裁相片"])},save:n=>{const{normalize:r}=n;return r(["儲存"])},save_without_cropping:n=>{const{normalize:r}=n;return r(["無裁就儲存"])},cancel:n=>{const{normalize:r}=n;return r(["取消"])}},importer:{submit:n=>{const{normalize:r}=n;return r(["送出"])},success:n=>{const{normalize:r}=n;return r(["匯入成功。"])},error:n=>{const{normalize:r}=n;return r(["佇匯入 ê 時起錯誤。"])}},login:{login:n=>{const{normalize:r}=n;return r(["登入"])},description:n=>{const{normalize:r}=n;return r(["用 OAuth 登入"])},logout:n=>{const{normalize:r}=n;return r(["登出"])},logout_confirm_title:n=>{const{normalize:r}=n;return r(["登出確認"])},logout_confirm:n=>{const{normalize:r}=n;return r(["Lí 敢真正 beh 登出?"])},logout_confirm_accept_button:n=>{const{normalize:r}=n;return r(["登出"])},logout_confirm_cancel_button:n=>{const{normalize:r}=n;return r(["mài 登出"])},password:n=>{const{normalize:r}=n;return r(["密碼"])},placeholder:n=>{const{normalize:r}=n;return r(["例:lain"])},register:n=>{const{normalize:r}=n;return r(["註冊"])},username:n=>{const{normalize:r}=n;return r(["用者 ê 名"])},hint:n=>{const{normalize:r}=n;return r(["登入,參與討論"])},authentication_code:n=>{const{normalize:r}=n;return r(["認證碼"])},enter_recovery_code:n=>{const{normalize:r}=n;return r(["輸入恢復碼"])},enter_two_factor_code:n=>{const{normalize:r}=n;return r(["輸入兩階段認證碼"])},recovery_code:n=>{const{normalize:r}=n;return r(["恢復碼"])},heading:{totp:n=>{const{normalize:r}=n;return r(["兩階段認證"])},recovery:n=>{const{normalize:r}=n;return r(["兩階段恢復"])}}},media_modal:{previous:n=>{const{normalize:r}=n;return r(["頂一 ê"])},next:n=>{const{normalize:r}=n;return r(["後一个"])},counter:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("current"))," / ",e(t("total"))])},hide:n=>{const{normalize:r}=n;return r(["關掉媒體瀏覽"])}},nav:{about:n=>{const{normalize:r}=n;return r(["關係本站"])},administration:n=>{const{normalize:r}=n;return r(["管理"])},back:n=>{const{normalize:r}=n;return r(["轉去"])},friend_requests:n=>{const{normalize:r}=n;return r(["跟綴請求"])},mentions:n=>{const{normalize:r}=n;return r(["The̍h起"])},interactions:n=>{const{normalize:r}=n;return r(["互動"])},dms:n=>{const{normalize:r}=n;return r(["私人 phue"])},public_tl:n=>{const{normalize:r}=n;return r(["公共時間線"])},timeline:n=>{const{normalize:r}=n;return r(["時間線"])},home_timeline:n=>{const{normalize:r}=n;return r(["Tshù ê 時間線"])},twkn:n=>{const{normalize:r}=n;return r(["知影 ê 網路"])},bookmarks:n=>{const{normalize:r}=n;return r(["冊籤"])},user_search:n=>{const{normalize:r}=n;return r(["Tshuē 用者"])},search_close:n=>{const{normalize:r}=n;return r(["關掉 tshiau-tshuē liâu"])},who_to_follow:n=>{const{normalize:r}=n;return r(["Siáng ē當綴"])},preferences:n=>{const{normalize:r}=n;return r(["個人 ê 設定"])},timelines:n=>{const{normalize:r}=n;return r(["時間線"])},chats:n=>{const{normalize:r}=n;return r(["開講"])},lists:n=>{const{normalize:r}=n;return r(["列單"])},edit_nav_mobile:n=>{const{normalize:r}=n;return r(["自訂導覽條"])},edit_pinned:n=>{const{normalize:r}=n;return r(["編輯釘起來 ê 項目"])},edit_finish:n=>{const{normalize:r}=n;return r(["編輯 suah"])},mobile_sidebar:n=>{const{normalize:r}=n;return r(["切換行動版 ê 邊 á liâu"])},mobile_notifications:n=>{const{normalize:r}=n;return r(["拍開通知(有無讀ê)"])},mobile_notifications_close:n=>{const{normalize:r}=n;return r(["關掉通知"])},announcements:n=>{const{normalize:r}=n;return r(["公告"])},search:n=>{const{normalize:r}=n;return r(["Tshuē"])}},notifications:{broken_favorite:n=>{const{normalize:r}=n;return r(["狀態毋知影,leh tshiau-tshuē……"])},error:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["佇取得通知 ê 時起錯誤:",e(t(0))])},favorited_you:n=>{const{normalize:r}=n;return r(["kah 意 lí ê 狀態"])},followed_you:n=>{const{normalize:r}=n;return r(["綴 lí"])},follow_request:n=>{const{normalize:r}=n;return r(["想 beh 綴 lí"])},load_older:n=>{const{normalize:r}=n;return r(["載入 khah 早 ê 通知"])},notifications:n=>{const{normalize:r}=n;return r(["通知"])},read:n=>{const{normalize:r}=n;return r(["有讀ah!"])},repeated_you:n=>{const{normalize:r}=n;return r(["轉送 lí ê 狀態"])},no_more_notifications:n=>{const{normalize:r}=n;return r(["無別 ê 通知"])},migrated_to:n=>{const{normalize:r}=n;return r(["移民到"])},reacted_with:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["顯出",e(t(0))," ê 反應"])},submitted_report:n=>{const{normalize:r}=n;return r(["送出檢舉"])},poll_ended:n=>{const{normalize:r}=n;return r(["投票結束"])}},polls:{add_poll:n=>{const{normalize:r}=n;return r(["開投票"])},add_option:n=>{const{normalize:r}=n;return r(["加選項"])},option:n=>{const{normalize:r}=n;return r(["選項"])},votes:n=>{const{normalize:r}=n;return r(["票"])},people_voted_count:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("count"))," 位有投"])},votes_count:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("count"))," 票"])},vote:n=>{const{normalize:r}=n;return r(["投票"])},type:n=>{const{normalize:r}=n;return r(["投票 ê 形式"])},single_choice:n=>{const{normalize:r}=n;return r(["孤選"])},multiple_choices:n=>{const{normalize:r}=n;return r(["Tsē 選"])},expiry:n=>{const{normalize:r}=n;return r(["投票期限"])},expires_in:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["投票 tī ",e(t(0))," 以後結束"])},expired:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["投票佇 ",e(t(0))," 以前結束"])},not_enough_options:n=>{const{normalize:r}=n;return r(["投票 ê 選項傷少"])}},emoji:{stickers:n=>{const{normalize:r}=n;return r(["貼圖"])},emoji:n=>{const{normalize:r}=n;return r(["繪文字"])},keep_open:n=>{const{normalize:r}=n;return r(["Hōo 揀選仔開 leh"])},search_emoji:n=>{const{normalize:r}=n;return r(["Tshuē 繪文字"])},add_emoji:n=>{const{normalize:r}=n;return r(["插繪文字"])},custom:n=>{const{normalize:r}=n;return r(["定製 ê 繪文字"])},unpacked:n=>{const{normalize:r}=n;return r(["拍開 ê 繪文字"])},unicode:n=>{const{normalize:r}=n;return r(["Unicode 繪文字"])},unicode_groups:{activities:n=>{const{normalize:r}=n;return r(["活動"])},"animals-and-nature":n=>{const{normalize:r}=n;return r(["動物 kap 自然"])},flags:n=>{const{normalize:r}=n;return r(["旗 á"])},"food-and-drink":n=>{const{normalize:r}=n;return r(["食物 kap 飲料"])},objects:n=>{const{normalize:r}=n;return r(["物體"])},"people-and-body":n=>{const{normalize:r}=n;return r(["Lâng kap 身軀"])},"smileys-and-emotion":n=>{const{normalize:r}=n;return r(["笑面 kap 情緒"])},symbols:n=>{const{normalize:r}=n;return r(["符號"])},"travel-and-places":n=>{const{normalize:r}=n;return r(["旅遊 kap 所在"])}},load_all_hint:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["載入頭前 ",e(t("saneAmount"))," ê 繪文字,規个攏載入效能可能 ē khah 食力。"])},load_all:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["Kā ",e(t("emojiAmount"))," ê 繪文字攏載入"])},regional_indicator:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["地區指引 ",e(t("letter"))])}},errors:{storage_unavailable:n=>{const{normalize:r}=n;return r(["Pleroma buē-tàng the̍h 著瀏覽器儲存 ê。Lí ê 登入狀態抑是局部設定 buē 儲存,mā 凡勢 tú 著意料外 ê 問題。拍開 cookie 看覓。"])}},interactions:{favs_repeats:n=>{const{normalize:r}=n;return r(["轉送 kap kah 意"])},follows:n=>{const{normalize:r}=n;return r(["最近綴 lí ê"])},emoji_reactions:n=>{const{normalize:r}=n;return r(["繪文字 ê 回應"])},reports:n=>{const{normalize:r}=n;return r(["檢舉"])},moves:n=>{const{normalize:r}=n;return r(["用者 ê 移民"])},load_older:n=>{const{normalize:r}=n;return r(["載入 koh khah 早 ê 互動"])}},post_status:{edit_status:n=>{const{normalize:r}=n;return r(["編輯狀態"])},new_status:n=>{const{normalize:r}=n;return r(["PO 新 ê 狀態"])},account_not_locked_warning:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["Lín 口座毋是 ",e(t(0))," ê。見 nā 有 lâng 綴--lí,ē-tàng 看著 lí ê 限定跟綴者 ê PO 文。."])},account_not_locked_warning_link:n=>{const{normalize:r}=n;return r(["鎖起來 ê 口座"])},attachments_sensitive:n=>{const{normalize:r}=n;return r(["Kā 附件標做敏感內容"])},media_description:n=>{const{normalize:r}=n;return r(["媒體說明"])},content_type:{"text/plain":n=>{const{normalize:r}=n;return r(["純 ê 文字"])},"text/html":n=>{const{normalize:r}=n;return r(["HTML"])},"text/markdown":n=>{const{normalize:r}=n;return r(["Markdown"])},"text/bbcode":n=>{const{normalize:r}=n;return r(["BBCode"])}},content_type_selection:n=>{const{normalize:r}=n;return r(["貼 ê 形式"])},content_warning:n=>{const{normalize:r}=n;return r(["主旨(毋是必要)"])},default:n=>{const{normalize:r}=n;return r(["Tú 正 kàu 高雄 ah。"])},direct_warning_to_all:n=>{const{normalize:r}=n;return r(["Tsit ê PO 文通 hōo 逐 ê 提起 ê 用者看見。"])},direct_warning_to_first_only:n=>{const{normalize:r}=n;return r(["Tsit ê PO 文,kan-ta 短信 tú 開始提起 ê 用者,tsiah 通看見。"])},edit_remote_warning:n=>{const{normalize:r}=n;return r(["別 ê 站臺可能無支援編輯,無法度收著 PO 文上新 ê 版本。"])},edit_unsupported_warning:n=>{const{normalize:r}=n;return r(["Pleroma 無支持編輯 the̍h 起 hām 投票。"])},posting:n=>{const{normalize:r}=n;return r(["PO 文"])},preview:n=>{const{normalize:r}=n;return r(["Sing 看覓"])},preview_empty:n=>{const{normalize:r}=n;return r(["空 ê"])},empty_status_error:n=>{const{normalize:r}=n;return r(["無法度 PO 無檔案 koh 空 ê 狀態"])},media_description_error:n=>{const{normalize:r}=n;return r(["更新媒體失敗,請 koh 試一 kái"])},scope_notice:{public:n=>{const{normalize:r}=n;return r(["Tsit ê PO 文通予逐 ê 儂看著"])},private:n=>{const{normalize:r}=n;return r(["Tsit ê PO 文 kan-ta 予綴 lí ê 看著"])},unlisted:n=>{const{normalize:r}=n;return r(["Tsit ê PO 文 buē 公開 tī 公共時間線 kap 知影 ê 網路"])}},scope_notice_dismiss:n=>{const{normalize:r}=n;return r(["關掉 tsit ê 通知"])},scope:{direct:n=>{const{normalize:r}=n;return r(["私人 phue - PO 文干焦予提起 ê 用者看著"])},private:n=>{const{normalize:r}=n;return r(["限定綴 ê 儂 - PO 文干焦予綴 lí ê 儂看著"])},public:n=>{const{normalize:r}=n;return r(["公開 - PO kàu 公開時間線"])},unlisted:n=>{const{normalize:r}=n;return r(["Mài 列出來 - Mài PO tī 公開時間線"])}},post:n=>{const{normalize:r}=n;return r(["PO 上去"])}},registration:{bio_optional:n=>{const{normalize:r}=n;return r(["介紹(毋是必要)"])},email_optional:n=>{const{normalize:r}=n;return r(["Email(毋是必要)"])},fullname:n=>{const{normalize:r}=n;return r(["顯示 ê 名"])},password_confirm:n=>{const{normalize:r}=n;return r(["確認密碼"])},registration:n=>{const{normalize:r}=n;return r(["註冊"])},token:n=>{const{normalize:r}=n;return r(["邀請碼"])},captcha:n=>{const{normalize:r}=n;return r(["驗證碼"])},new_captcha:n=>{const{normalize:r}=n;return r(["Ji̍h 圖片,the̍h 新 ê 驗證碼"])},fullname_placeholder:n=>{const{normalize:r}=n;return r(["e.g. 岩倉 Lain"])},bio_placeholder:n=>{const{normalize:r}=n;return r(["e.g.\nLí 好,我是 Lain。\n我是日本動畫 ê 角色,tuà tī 日本 ê 郊區。Lí 凡勢 bat tī Wired 知影我。"])},reason:n=>{const{normalize:r}=n;return r(["註冊 ê 理由"])},reason_placeholder:n=>{const{normalize:r}=n;return r(["本站靠人工審核註冊。\n介紹管理者 lí beh tī tsia 註冊 ê 理由。"])},register:n=>{const{normalize:r}=n;return r(["註冊"])},validations:{username_required:n=>{const{normalize:r}=n;return r(["著愛添"])},fullname_required:n=>{const{normalize:r}=n;return r(["著愛添"])},email_required:n=>{const{normalize:r}=n;return r(["著愛添"])},password_required:n=>{const{normalize:r}=n;return r(["著愛添"])},password_confirmation_required:n=>{const{normalize:r}=n;return r(["著愛添"])},password_confirmation_match:n=>{const{normalize:r}=n;return r(["密碼著相 kâng"])},birthday_required:n=>{const{normalize:r}=n;return r(["著愛添"])},birthday_min_age:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["Buē-tàng tī ",e(t("date"))," 以後"])}},email_language:n=>{const{normalize:r}=n;return r(["Lí想 beh 服侍器用 siánn 物語言寄批 hōo lí?"])},birthday:n=>{const{normalize:r}=n;return r(["生日:"])},birthday_optional:n=>{const{normalize:r}=n;return r(["生日(毋是必要):"])},email:n=>{const{normalize:r}=n;return r(["電子 phue 箱"])},username_placeholder:n=>{const{normalize:r}=n;return r(["比如:lain"])}},remote_user_resolver:{remote_user_resolver:n=>{const{normalize:r}=n;return r(["別站用者 ê 解析器"])},error:n=>{const{normalize:r}=n;return r(["Tshuē無。"])},searching_for:n=>{const{normalize:r}=n;return r(["Tshuē:"])}},report:{reporter:n=>{const{normalize:r}=n;return r(["檢舉人:"])},reported_user:n=>{const{normalize:r}=n;return r(["Beh 檢舉 ê 用者:"])},reported_statuses:n=>{const{normalize:r}=n;return r(["Beh 檢舉 ê 狀態:"])},state_open:n=>{const{normalize:r}=n;return r(["開 ê"])},state_closed:n=>{const{normalize:r}=n;return r(["關 ê"])},state_resolved:n=>{const{normalize:r}=n;return r(["解決了 ê"])},notes:n=>{const{normalize:r}=n;return r(["註:"])},state:n=>{const{normalize:r}=n;return r(["狀態:"])}},selectable_list:{select_all:n=>{const{normalize:r}=n;return r(["攏總揀"])}},settings:{add_language:n=>{const{normalize:r}=n;return r(["加一 ê 備用 ê 語言"])},remove_language:n=>{const{normalize:r}=n;return r(["Ni 掉"])},primary_language:n=>{const{normalize:r}=n;return r(["主要語言:"])},fallback_language:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["備用語言 ",e(t("index")),":"])},app_name:n=>{const{normalize:r}=n;return r(["App ê 名"])},expert_mode:n=>{const{normalize:r}=n;return r(["進階模式"])},save:n=>{const{normalize:r}=n;return r(["保存改變"])},security:n=>{const{normalize:r}=n;return r(["安全"])},setting_changed:n=>{const{normalize:r}=n;return r(["設定 kap 預先 ê 有 tsing 差"])},style:{common:{color:n=>{const{normalize:r}=n;return r(["色彩"])},opacity:n=>{const{normalize:r}=n;return r(["無透明度"])},contrast:{hint:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["色彩ê對比率:",e(t("ratio")),"。",e(t("level")),"、 ",e(t("context"))])}}},switcher:{keep_shadows:n=>{const{normalize:r}=n;return r(["保持陰影"])},keep_color:n=>{const{normalize:r}=n;return r(["保持色彩"])},keep_opacity:n=>{const{normalize:r}=n;return r(["保持無透明度"])},keep_roundness:n=>{const{normalize:r}=n;return r(["保留邊á角ê khà-buh"])},keep_fonts:n=>{const{normalize:r}=n;return r(["保持字型"])},reset:n=>{const{normalize:r}=n;return r(["重頭設定"])},clear_all:n=>{const{normalize:r}=n;return r(["攏清掉"])},clear_opacity:n=>{const{normalize:r}=n;return r(["清掉無透明度"])},load_theme:n=>{const{normalize:r}=n;return r(["載入主題"])},keep_as_is:n=>{const{normalize:r}=n;return r(["Mài振動"])},use_snapshot:n=>{const{normalize:r}=n;return r(["舊ê版本"])},use_source:n=>{const{normalize:r}=n;return r(["新ê版本"])},help:{upgraded_from_v2:n=>{const{normalize:r}=n;return r(["PleromaFE升級ah,主題huân-sè kap lí知影ê無kâng。"])},v2_imported:n=>{const{normalize:r}=n;return r(["Lí輸入ê檔案是舊版本ê前端用ê。Guán盡量予版本相通,毋過可能有所在buē-tàng。"])},older_version_imported:n=>{const{normalize:r}=n;return r(["Lí輸入ê檔案是予舊ê前端用ê。"])},future_version_imported:n=>{const{normalize:r}=n;return r(["Lí輸入ê檔案是新ê前端所用ê。"])}}}},upload:{error:{base:n=>{const{normalize:r}=n;return r(["上傳 ê 時失敗。"])},message:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["傳 buē 起去:",e(t(0))])},file_too_big:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["檔案 sài-suh 傷大 [",e(t("filesize")),e(t("filesizeunit"))," / ",e(t("allowedsize")),e(t("allowedsizeunit")),"]"])},default:n=>{const{normalize:r}=n;return r(["Koh 試一 kái。"])}}},search:{people:n=>{const{normalize:r}=n;return r(["用戶"])},hashtags:n=>{const{normalize:r}=n;return r(["主題標籤"])},person_talking:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("count"))," ê leh 論"])},people_talking:n=>{const{normalize:r,interpolate:e,named:t}=n;return r([e(t("count"))," ê leh 論"])},no_results:n=>{const{normalize:r}=n;return r(["無半 ê 結果"])},no_more_results:n=>{const{normalize:r}=n;return r(["無其他 ê 結果"])},load_more:n=>{const{normalize:r}=n;return r(["載入 koh 較 tsē 結果"])}},password_reset:{forgot_password:n=>{const{normalize:r}=n;return r(["Buē 記得密碼?"])},password_reset:n=>{const{normalize:r}=n;return r(["重頭設密碼"])},instruction:n=>{const{normalize:r}=n;return r(["拍 lí ê email 地址 iah 是用者 ê 名。Guán 會送 lí 連結,重頭設定密碼。"])},placeholder:n=>{const{normalize:r}=n;return r(["Lí ê email 地址 iah 是用者 ê 名。"])},check_email:n=>{const{normalize:r}=n;return r(["檢查電子 phue 箱,看有重頭設密碼 ê 連結無。"])},return_home:n=>{const{normalize:r}=n;return r(["轉來頭頁"])},too_many_requests:n=>{const{normalize:r}=n;return r(["Lí kā 請求 ê khòo-tah 用了 ah。等一時仔,閣試一 pái。"])},password_reset_disabled:n=>{const{normalize:r}=n;return r(["密碼重頭設定無開放。請聯絡本站 ê 行政員。"])},password_reset_required:n=>{const{normalize:r}=n;return r(["Beh 登入,著重頭設 lí ê 密碼。"])},password_reset_required_but_mailer_is_disabled:n=>{const{normalize:r}=n;return r(["Lí 需要重頭設密碼,毋 koh tsia 無開放密碼 koh 再設定。請聯絡本站 ê 行政員。"])}},chats:{message_user:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["傳私人 phue:",e(t("nickname"))])},delete:n=>{const{normalize:r}=n;return r(["Thâi 掉"])},chats:n=>{const{normalize:r}=n;return r(["開講"])},new:n=>{const{normalize:r}=n;return r(["發起開講"])},empty_message_error:n=>{const{normalize:r}=n;return r(["無法度 PO 空 ê phue"])},more:n=>{const{normalize:r}=n;return r(["Koh較濟……"])},delete_confirm:n=>{const{normalize:r}=n;return r(["Lí 敢真 ê beh thâi tsit 張 phue?"])},error_loading_chat:n=>{const{normalize:r}=n;return r(["載入開講 ê 時,出箠 ah。"])},error_sending_message:n=>{const{normalize:r}=n;return r(["送 phue ê 時,出箠 ah。"])},empty_chat_list_placeholder:n=>{const{normalize:r}=n;return r(["Lí 猶無佇 tsia 開講過,來開講 lah!"])}},lists:{lists:n=>{const{normalize:r}=n;return r(["列單"])},new:n=>{const{normalize:r}=n;return r(["新 ê 列單"])},title:n=>{const{normalize:r}=n;return r(["列單標題"])},search:n=>{const{normalize:r}=n;return r(["Tshuē 用者"])},create:n=>{const{normalize:r}=n;return r(["開新 ê"])},save:n=>{const{normalize:r}=n;return r(["保存改變"])},delete:n=>{const{normalize:r}=n;return r(["刣列單"])},following_only:n=>{const{normalize:r}=n;return r(["限定 lí 所關注 ê"])},manage_lists:n=>{const{normalize:r}=n;return r(["管理列單"])},manage_members:n=>{const{normalize:r}=n;return r(["管理列單成員"])},add_members:n=>{const{normalize:r}=n;return r(["Tshiau 閣較 tsē ê 用者"])},remove_from_list:n=>{const{normalize:r}=n;return r(["對列單刣掉"])},add_to_list:n=>{const{normalize:r}=n;return r(["加入去列單"])},is_in_list:n=>{const{normalize:r}=n;return r(["列單已經有 ah "])},editing_list:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["編輯列單 ",e(t("listTitle"))])},creating_list:n=>{const{normalize:r}=n;return r(["開新 ê 列單"])},update_title:n=>{const{normalize:r}=n;return r(["保存標題"])},really_delete:n=>{const{normalize:r}=n;return r(["敢真正 beh 刣掉列單?"])},error:n=>{const{normalize:r,interpolate:e,list:t}=n;return r(["操作列單 ê 時陣出重耽:",e(t(0))])}},file_type:{audio:n=>{const{normalize:r}=n;return r(["音訊"])},video:n=>{const{normalize:r}=n;return r(["影片"])},image:n=>{const{normalize:r}=n;return r(["影像"])},file:n=>{const{normalize:r}=n;return r(["檔案"])}},display_date:{today:n=>{const{normalize:r}=n;return r(["今 á 日"])}},update:{big_update_title:n=>{const{normalize:r}=n;return r(["敬請體諒"])},big_update_content:n=>{const{normalize:r}=n;return r(["因為 guán 有一站 á 無發行新版本,所以這个版本會 kap lí 以早慣 sì ê 無仝。"])},update_bugs:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["請佇 ",e(t("pleromaGitlab"))," 報告任何問題 kap bug,因為 Pleroma 改變真 tsē。雖罔 guán 徹底 leh 試,mā 家 kī 用開發版,伊凡勢有一寡重耽。Guán 歡迎 lín 提供關係所拄著 ê 問題 ê 意見、建議,或者是改進 Pleroma kap Pleroma-FE ê 法度。"])},update_changelog:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["Nā beh 知影改變 ê 詳細,請看:",e(t("theFullChangelog")),"."])},update_changelog_here:n=>{const{normalize:r}=n;return r(["Kui ê 改變日誌"])},art_by:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["美編:",e(t("linkToArtist"))])}},unicode_domain_indicator:{tooltip:n=>{const{normalize:r}=n;return r(["這 ê 域名包含毋是 ascii ê 字元。"])}},setting_server_side:n=>{const{normalize:r}=n;return r(["Tsit-ê設定縛佇lí ê個人資料,mā 影響逐ê連線階段kap用者端"])},post_look_feel:n=>{const{normalize:r}=n;return r(["PO 文ê外貌kap感受"])},mention_links:n=>{const{normalize:r}=n;return r(["提起 ê 連結"])},mfa:{otp:n=>{const{normalize:r}=n;return r(["OTP"])},setup_otp:n=>{const{normalize:r}=n;return r(["設 OTP"])},wait_pre_setup_otp:n=>{const{normalize:r}=n;return r(["kā OTP 預設"])},title:n=>{const{normalize:r}=n;return r(["兩階段認證"])},generate_new_recovery_codes:n=>{const{normalize:r}=n;return r(["產生新ê恢復碼"])},warning_of_generate_new_codes:n=>{const{normalize:r}=n;return r(["產生新 ê 恢復碼ê時,舊 ê tio̍h 變無效。"])},recovery_codes:n=>{const{normalize:r}=n;return r(["恢復碼。"])},waiting_a_recovery_codes:n=>{const{normalize:r}=n;return r(["當leh收備份碼……"])},authentication_methods:n=>{const{normalize:r}=n;return r(["認證方法"])},scan:{title:n=>{const{normalize:r}=n;return r(["掃一 ē"])},secret_code:n=>{const{normalize:r}=n;return r(["鎖匙"])},desc:n=>{const{normalize:r}=n;return r(["The̍h lí个兩階段app,掃 tsit ê QR code,抑是拍文字鎖匙:"])}},verify:{desc:n=>{const{normalize:r}=n;return r(["Nā beh開兩階段認證,請拍兩階段認證app內底ê碼:"])}},confirm_and_enable:n=>{const{normalize:r}=n;return r(["確定,拍開 OTP"])},recovery_codes_warning:n=>{const{normalize:r}=n;return r(["著 kā tsiah ê 號碼抄落來,抑是儲存佇安全ê所在,因為號碼 buē koh 再出現。若是 lí 袂當用 lí 个兩階段認證app,而且恢復碼拍 ka-la̍uh,lí就永永buē當登入lí个口座。"])}},lists_navigation:n=>{const{normalize:r}=n;return r(["佇導覽中顯示列單"])},allow_following_move:n=>{const{normalize:r}=n;return r(["若是綴ê口座徙位ê時,允准自動綴新ê"])},attachmentRadius:n=>{const{normalize:r}=n;return r(["附件"])},avatar:n=>{const{normalize:r}=n;return r(["標頭"])},avatarAltRadius:n=>{const{normalize:r}=n;return r(["標頭(通知)"])},avatarRadius:n=>{const{normalize:r}=n;return r(["標頭"])},background:n=>{const{normalize:r}=n;return r(["背景"])},bio:n=>{const{normalize:r}=n;return r(["紹介"])},block_export:n=>{const{normalize:r}=n;return r(["輸出封鎖名單"])},block_export_button:n=>{const{normalize:r}=n;return r(["封鎖名單輸出kàu csv檔"])},block_import_error:n=>{const{normalize:r}=n;return r(["佇輸入封鎖名單ê時出tshê"])},block_import:n=>{const{normalize:r}=n;return r(["輸入封鎖名單"])},mute_export:n=>{const{normalize:r}=n;return r(["輸出消音名單"])},mute_export_button:n=>{const{normalize:r}=n;return r(["輸出消音名單kàu csv檔"])},mute_import:n=>{const{normalize:r}=n;return r(["輸入消音名單"])},blocks_imported:n=>{const{normalize:r}=n;return r(["成功輸入封鎖名單!較停仔tsiah ē處理suah。"])},mutes_imported:n=>{const{normalize:r}=n;return r(["成功輸入消音名單!較停仔tsiah ē處理suah。"])},import_mutes_from_a_csv_file:n=>{const{normalize:r}=n;return r(["輸入封鎖名單ê csv檔"])},account_backup:n=>{const{normalize:r}=n;return r(["備份口座"])},mutes_and_blocks:n=>{const{normalize:r}=n;return r(["消音kap封鎖"])},delete_account:n=>{const{normalize:r}=n;return r(["Thâi口座"])},delete_account_error:n=>{const{normalize:r}=n;return r(["佇刣掉lí ê 口座ê時出問題。若是問題一直佇leh,請聯絡 lín 站臺 ê 行政員。"])},account_alias:n=>{const{normalize:r}=n;return r(["口座 ê 別名"])},account_alias_table_head:n=>{const{normalize:r}=n;return r(["別名"])},list_aliases_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["佇the̍h別名ê時出tshê:",e(t("error"))])},hide_list_aliases_error_action:n=>{const{normalize:r}=n;return r(["關掉"])},remove_alias:n=>{const{normalize:r}=n;return r(["Thâi 掉tsit ê別名"])},new_alias_target:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["加新ê別名(比如: ",e(t("example")),"))"])},added_alias:n=>{const{normalize:r}=n;return r(["別名加入去ah。"])},add_alias_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["佇加別名ê時出tshê:",e(t("error"))])},move_account:n=>{const{normalize:r}=n;return r(["徙口座"])},move_account_target:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["目標口座(比如:",e(t("example")),")"])},moved_account:n=>{const{normalize:r}=n;return r(["口座徙過去ah。"])},move_account_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["佇徙口座ê時出tshê:",e(t("error"))])},attachments:n=>{const{normalize:r}=n;return r(["附件"])},email_language:n=>{const{normalize:r}=n;return r(["服侍器送ê email 所用 ê 語言"])},enter_current_password_to_confirm:n=>{const{normalize:r}=n;return r(["輸入lí tsit-má ê 密碼,確認lí ê身份"])},mute_import_error:n=>{const{normalize:r}=n;return r(["佇輸入消音名單ê時出tshê"])},delete_account_description:n=>{const{normalize:r}=n;return r(["Ē 永永刣掉lí个資料,hōo lí 个口座bē當用。"])},delete_account_instructions:n=>{const{normalize:r}=n;return r(["佇佇下跤拍lí个密碼,確認 kā 口座 thâi掉。"])},move_account_notes:n=>{const{normalize:r}=n;return r(["若是欲徙tsit ê口座,著去lí ê目標口座hia,加一ê指tsia ê別名。"])},account_backup_table_head:n=>{const{normalize:r}=n;return r(["備份"])},download_backup:n=>{const{normalize:r}=n;return r(["下載"])},backup_not_ready:n=>{const{normalize:r}=n;return r(["備份猶 buē tshuân 予好勢。"])},backup_running:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["備份leh處理,其中 ",e(t("number"))," 筆記錄處理 suah--ah。"])},backup_failed:n=>{const{normalize:r}=n;return r(["備份失敗。"])},remove_backup:n=>{const{normalize:r}=n;return r(["Thâi 掉"])},list_backups_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["佇 the̍h 備份列單ê時出tshê: ",e(t("error"))])},add_backup:n=>{const{normalize:r}=n;return r(["開新ê備份"])},added_backup:n=>{const{normalize:r}=n;return r(["新ê備份開好 ah。"])},add_backup_error:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["佇開新ê備份ê時出tshê:",e(t("error"))])},blocks_tab:n=>{const{normalize:r}=n;return r(["封鎖"])},bot:n=>{const{normalize:r}=n;return r(["Tse 是機器 lâng ê 口座"])},btnRadius:n=>{const{normalize:r}=n;return r(["鈕仔"])},cBlue:n=>{const{normalize:r}=n;return r(["藍色(回應,跟綴)"])},cGreen:n=>{const{normalize:r}=n;return r(["綠色(轉送)"])},cOrange:n=>{const{normalize:r}=n;return r(["柑仔色(kah 意)"])},cRed:n=>{const{normalize:r}=n;return r(["紅色(取消)"])},change_email:n=>{const{normalize:r}=n;return r(["換電子 phue 箱"])},changed_email:n=>{const{normalize:r}=n;return r(["電子 phue 箱變換成功!"])},change_password:n=>{const{normalize:r}=n;return r(["改密碼"])},change_password_error:n=>{const{normalize:r}=n;return r(["佇改密碼ê時出問題。"])},changed_password:n=>{const{normalize:r}=n;return r(["改密碼成功!"])},chatMessageRadius:n=>{const{normalize:r}=n;return r(["開講ê訊息"])},composing:n=>{const{normalize:r}=n;return r(["編寫ê設定"])},confirm_new_password:n=>{const{normalize:r}=n;return r(["確認新ê密碼"])},current_password:n=>{const{normalize:r}=n;return r(["Tann ê 密碼"])},confirm_dialogs:n=>{const{normalize:r}=n;return r(["問確認佇"])},confirm_dialogs_repeat:n=>{const{normalize:r}=n;return r(["轉送狀態"])},confirm_dialogs_unfollow:n=>{const{normalize:r}=n;return r(["無愛綴用者"])},confirm_dialogs_block:n=>{const{normalize:r}=n;return r(["封鎖用者"])},confirm_dialogs_mute:n=>{const{normalize:r}=n;return r(["kā用者消音"])},confirm_dialogs_delete:n=>{const{normalize:r}=n;return r(["thâi掉狀態"])},confirm_dialogs_logout:n=>{const{normalize:r}=n;return r(["登出"])},confirm_dialogs_approve_follow:n=>{const{normalize:r}=n;return r(["允准跟綴"])},confirm_dialogs_deny_follow:n=>{const{normalize:r}=n;return r(["無允准跟綴"])},confirm_dialogs_remove_follower:n=>{const{normalize:r}=n;return r(["徙走綴 lí ê"])},data_import_export_tab:n=>{const{normalize:r}=n;return r(["資料輸入/出"])},default_vis:n=>{const{normalize:r}=n;return r(["預設ê公開範圍"])},discoverable:n=>{const{normalize:r}=n;return r(["允准用tshiau-tshuē kap 其他ê服務tshuē著 tsit ê口座"])},domain_mutes:n=>{const{normalize:r}=n;return r(["域名"])},avatar_size_instruction:n=>{const{normalize:r}=n;return r(["建議ê標頭影像sài-suh 是150x150畫素。"])},pad_emoji:n=>{const{normalize:r}=n;return r(["Tuì 揀選器揀繪文字以後,佇繪文字雙 pîng 邊加空白"])},emoji_reactions_on_timeline:n=>{const{normalize:r}=n;return r(["佇時間線頂,顯示繪文字ê反應"])},emoji_reactions_scale:n=>{const{normalize:r}=n;return r(["反應ê規模係數"])},export_theme:n=>{const{normalize:r}=n;return r(["保存主題"])},filtering:n=>{const{normalize:r}=n;return r(["過濾"])},wordfilter:n=>{const{normalize:r}=n;return r(["詞語過濾器"])},word_filter_and_more:n=>{const{normalize:r}=n;return r(["詞語過濾器 kap 其他……"])},follow_export:n=>{const{normalize:r}=n;return r(["輸出 lí 所綴ê"])},follow_export_button:n=>{const{normalize:r}=n;return r(["輸出lí所綴ê kàu csv 檔"])},follow_import:n=>{const{normalize:r}=n;return r(["輸入lí所綴ê"])},follow_import_error:n=>{const{normalize:r}=n;return r(["佇輸入跟綴 ê 資料 ê 時出tshê"])},accent:n=>{const{normalize:r}=n;return r(["強調"])},foreground:n=>{const{normalize:r}=n;return r(["前景"])},general:n=>{const{normalize:r}=n;return r(["一般"])},hide_attachments_in_convo:n=>{const{normalize:r}=n;return r(["佇對話ê時,khàm附件"])},hide_attachments_in_tl:n=>{const{normalize:r}=n;return r(["Khàm掉時間線內ê附件"])},hide_media_previews:n=>{const{normalize:r}=n;return r(["Khàm掉媒體ê預展"])},hide_muted_posts:n=>{const{normalize:r}=n;return r(["Khàm掉消音ê用者ê PO文"])},hide_bot_indication:n=>{const{normalize:r}=n;return r(["Khàm 掉PO文內底ê機器lâng ê指示"])},hide_all_muted_posts:n=>{const{normalize:r}=n;return r(["Khàm掉消音êPO文"])},max_thumbnails:n=>{const{normalize:r}=n;return r(["PO文ê縮小圖ê khòo-tah(無寫=無限制)"])},hide_isp:n=>{const{normalize:r}=n;return r(["Khàm 站臺特有ê面 pang"])},right_sidebar:n=>{const{normalize:r}=n;return r(["Kā 邊á liâu徙kah正手pîng"])},navbar_column_stretch:n=>{const{normalize:r}=n;return r(["伸導覽liâu,kah 欄平闊"])},always_show_post_button:n=>{const{normalize:r}=n;return r(["一直顯示「新ê PO文」ê鈕仔"])},hide_wallpaper:n=>{const{normalize:r}=n;return r(["Khàm站臺ê壁紙"])},use_one_click_nsfw:n=>{const{normalize:r}=n;return r(["Tshi̍h 一ê就會當拍開敏感內容"])},hide_post_stats:n=>{const{normalize:r}=n;return r(["Khàm PO文ê統計數據(比如:kah 意ê額數)"])},hide_filtered_statuses:n=>{const{normalize:r}=n;return r(["Khàm 逐ê過濾掉êPO文"])},hide_wordfiltered_statuses:n=>{const{normalize:r}=n;return r(["Khàm詞語過濾掉ê狀態"])},hide_muted_threads:n=>{const{normalize:r}=n;return r(["Khàm消音ê討論線"])},import_blocks_from_a_csv_file:n=>{const{normalize:r}=n;return r(["Tuì csv 檔輸入封鎖名單"])},import_followers_from_a_csv_file:n=>{const{normalize:r}=n;return r(["Uì csv 檔輸入跟綴ê資料"])},import_theme:n=>{const{normalize:r}=n;return r(["載入主題"])},inputRadius:n=>{const{normalize:r}=n;return r(["輸入ê格仔"])},checkboxRadius:n=>{const{normalize:r}=n;return r(["選擇框仔"])},instance_default:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["(預設:",e(t("value")),")"])},instance_default_simple:n=>{const{normalize:r}=n;return r(["(預設)"])},interface:n=>{const{normalize:r}=n;return r(["界面"])},column_sizes_sidebar:n=>{const{normalize:r}=n;return r(["邊 á liâu"])},auto_update:n=>{const{normalize:r}=n;return r(["自動顯示新ê PO文"])},user_mutes:n=>{const{normalize:r}=n;return r(["用者"])},useStreamingApi:n=>{const{normalize:r}=n;return r(["連鞭收著PO文kap通知"])},use_websockets:n=>{const{normalize:r}=n;return r(["用websockets(實ê時間ê更新)"])},text:n=>{const{normalize:r}=n;return r(["文字"])},theme:n=>{const{normalize:r}=n;return r(["主題"])},theme_help:n=>{const{normalize:r}=n;return r(["用16進位ê碼(#rrggbb)來訂做家己ê色彩主題。"])},change_email_error:n=>{const{normalize:r}=n;return r(["佇換電子phue箱ê時出問題。"])},collapse_subject:n=>{const{normalize:r}=n;return r(["Kā 有主旨ê PO 文 khàm 起來"])},autocomplete_select_first:n=>{const{normalize:r}=n;return r(["若是有自動完成ê結果,自動揀頭一ê侯選ê"])},filtering_explanation:n=>{const{normalize:r}=n;return r(["見若有下跤ê詞語ê狀態,會hőng消音。一tsuā寫一ê"])},follows_imported:n=>{const{normalize:r}=n;return r(["Lí所綴ê輸入去ah!較停仔tsiah ē處理suah。"])},mute_bot_posts:n=>{const{normalize:r}=n;return r(["Kā 機器lâng ê PO文消音"])},hide_shoutbox:n=>{const{normalize:r}=n;return r(["Khàm 站臺ê留話pang"])},account_backup_description:n=>{const{normalize:r}=n;return r(["Tse 予 lí ē當 kā lín 口座 ê 資訊 kap PO 文載落來,毋過 in 猶無法度輸入kàu Pleroma口座 ê 內底。"])},theme_help_v2_1:n=>{const{normalize:r}=n;return r(["拍開選擇框á就 ē 當改掉一寡組件ê色彩kap無透明度。Ji̍h「清掉所有ê」,ē 恢復原來ê款。"])},preload_images:n=>{const{normalize:r}=n;return r(["Kā 圖片先載入"])},hide_user_stats:n=>{const{normalize:r}=n;return r(["Khàm 掉用者ê統計數據(比如:綴ê lâng額)"])},interfaceLanguage:n=>{const{normalize:r}=n;return r(["界面ê語言"])},invalid_theme_imported:n=>{const{normalize:r}=n;return r(["Lí 所揀ê主題檔案,Pleroma 無支援,所以主題無改。"])},limited_availability:n=>{const{normalize:r}=n;return r(["你ê瀏覽器內底buē當用"])},links:n=>{const{normalize:r}=n;return r(["連結"])},lock_account_description:n=>{const{normalize:r}=n;return r(["Kan-ta lí 同意,別儂tsiah通綴lí"])},loop_video:n=>{const{normalize:r}=n;return r(["循環播出ê影片"])},loop_video_silent_only:n=>{const{normalize:r}=n;return r(['Kan-ta無聲ê影片tsiah通循環播出(比如:Mastodon ê "gif")'])},mutes_tab:n=>{const{normalize:r}=n;return r(["消音"])},play_videos_in_modal:n=>{const{normalize:r}=n;return r(["佇跳出來ê框仔播出影片"])},url:n=>{const{normalize:r}=n;return r(["URL"])},preview:n=>{const{normalize:r}=n;return r(["預展"])},file_export_import:{backup_restore:n=>{const{normalize:r}=n;return r(["備份設定"])},backup_settings:n=>{const{normalize:r}=n;return r(["Kā 設定備份kàu檔案"])},backup_settings_theme:n=>{const{normalize:r}=n;return r(["Kā設定kap主題備份kàu檔案"])},restore_settings:n=>{const{normalize:r}=n;return r(["對檔案回復設定"])},errors:{file_too_old:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["無接受ê主要版本:",e(t("fileMajor")),",檔案ê版本siūnn舊,buē當處理(",e(t("feMajor"))," 版以後ê tsiah支援)"])},file_slightly_new:n=>{const{normalize:r}=n;return r(["檔案ê次版本無仝,一寡設定可能buē當載入去"])},invalid_file:n=>{const{normalize:r}=n;return r(["選擇ê檔案毋是Pleroma支援ê設定備份,設定無振動。"])},file_too_new:n=>{const{normalize:r,interpolate:e,named:t}=n;return r(["無接受ê主要版本:",e(t("fileMajor")),",本 PleromaFE(設定版本 ",e(t("feMajor")),")siūnn舊,buē當處理"])}}},profile_fields:{label:n=>{const{normalize:r}=n;return r(["個人資料ê meta資料"])},add_field:n=>{const{normalize:r}=n;return r(["加格仔"])},name:n=>{const{normalize:r}=n;return r(["標簽"])},value:n=>{const{normalize:r}=n;return r(["內容"])}},birthday:{label:n=>{const{normalize:r}=n;return r(["生日"])},show_birthday:n=>{const{normalize:r}=n;return r(["顯示我ê生日"])}},account_privacy:n=>{const{normalize:r}=n;return r(["隱私"])},use_contain_fit:n=>{const{normalize:r}=n;return r(["Mài裁附件ê縮小圖"])},name_bio:n=>{const{normalize:r}=n;return r(["名kah介紹"])},new_password:n=>{const{normalize:r}=n;return r(["新ê密碼"])},posts:n=>{const{normalize:r}=n;return r(["PO文"])},name:n=>{const{normalize:r}=n;return r(["名"])},new_email:n=>{const{normalize:r}=n;return r(["新ê電子phue箱"])},notification_visibility_likes:n=>{const{normalize:r}=n;return r(["收藏"])},hide_favorites_description:n=>{const{normalize:r}=n;return r(["Mài 顯示阮收藏ê列單(別儂uân-á ē收著通知)"])},user_profiles:n=>{const{normalize:r}=n;return r(["用者ê資料"])},notification_visibility:n=>{const{normalize:r}=n;return r(["Beh顯示啥款ê通知"])},notification_visibility_follows:n=>{const{normalize:r}=n;return r(["綴ê儂"])},notification_visibility_mentions:n=>{const{normalize:r}=n;return r(["提起"])},notification_visibility_repeats:n=>{const{normalize:r}=n;return r(["轉送"])},notification_visibility_moves:n=>{const{normalize:r}=n;return r(["用者suá位"])},notification_visibility_emoji_reactions:n=>{const{normalize:r}=n;return r(["回應"])},notification_visibility_polls:n=>{const{normalize:r}=n;return r(["Lí參與ê選舉辦suah佇"])},no_rich_text_description:n=>{const{normalize:r}=n;return r(["Po文mài用RTF格式"])},no_blocks:n=>{const{normalize:r}=n;return r(["無封鎖"])},no_mutes:n=>{const{normalize:r}=n;return r(["無消音"])},hide_follows_description:n=>{const{normalize:r}=n;return r(["Mài顯示我綴ê儂"])},hide_followers_description:n=>{const{normalize:r}=n;return r(["Mài顯示綴我ê儂"])},hide_follows_count_description:n=>{const{normalize:r}=n;return r(["Mài顯示我跟綴ê儂額"])},hide_followers_count_description:n=>{const{normalize:r}=n;return r(["Mài顯示綴我ê儂額"])},show_moderator_badge:n=>{const{normalize:r}=n;return r(["佇我ê個人資料顯示「管理員」證章"])},nsfw_clickthrough:n=>{const{normalize:r}=n;return r(["Khàm掉敏感ê媒體內容"])},oauth_tokens:n=>{const{normalize:r}=n;return r(["OAuth token"])},refresh_token:n=>{const{normalize:r}=n;return r(["對頭the̍h token"])},valid_until:n=>{const{normalize:r}=n;return r(["到期佇"])},revoke_token:n=>{const{normalize:r}=n;return r(["撤回"])},panelRadius:n=>{const{normalize:r}=n;return r(["面pang"])},presets:n=>{const{normalize:r}=n;return r(["代先ê設定"])},profile_background:n=>{const{normalize:r}=n;return r(["個人資料ê背景"])},profile_banner:n=>{const{normalize:r}=n;return r(["個人資料ê條á"])},profile_tab:n=>{const{normalize:r}=n;return r(["個人資料"])},radii_help:n=>{const{normalize:r}=n;return r(["設定界面邊á ê khà-buh (curve) ê 半徑(單位:畫素)"])},replies_in_timeline:n=>{const{normalize:r}=n;return r(["佇時間線內底ê回應"])},reply_visibility_all:n=>{const{normalize:r}=n;return r(["顯示所有ê回應"])},reply_visibility_following:n=>{const{normalize:r}=n;return r(["Kan-ta顯示送予我抑是我綴ê儂ê回應"])},reply_visibility_self:n=>{const{normalize:r}=n;return r(["Kan-ta顯示送予我ê回應"])},reply_visibility_following_short:n=>{const{normalize:r}=n;return r(["顯示予我所綴ê儂ê回應"])},reply_visibility_self_short:n=>{const{normalize:r}=n;return r(["Kan-ta顯示予我ka-kī ê回應"])},autohide_floating_post_button:n=>{const{normalize:r}=n;return r(["自動khàm掉「新êPO文」ê鈕仔(行動版)"])},saving_err:n=>{const{normalize:r}=n;return r(["佇保存設定ê時出tshê"])},saving_ok:n=>{const{normalize:r}=n;return r(["設定保存好ah"])},search_user_to_block:n=>{const{normalize:r}=n;return r(["Tshuē lí beh封鎖ê"])},search_user_to_mute:n=>{const{normalize:r}=n;return r(["Tshuē lí beh 消音ê"])},security_tab:n=>{const{normalize:r}=n;return r(["安全"])},scope_copy:n=>{const{normalize:r}=n;return r(["回應ê時ē khóo-pih ê範圍(私人phue 定著ē hőng khóo-pih)"])},minimal_scopes_mode:n=>{const{normalize:r}=n;return r(["Kā PO文ê公開範圍ê選項,kiu kah上細"])},set_new_avatar:n=>{const{normalize:r}=n;return r(["設定新ê標頭"])},set_new_profile_background:n=>{const{normalize:r}=n;return r(["設定新ê個人資料ê背景"])},set_new_profile_banner:n=>{const{normalize:r}=n;return r(["設定新ê個人資料ê條á"])},reset_avatar:n=>{const{normalize:r}=n;return r(["Tuì頭設定標頭"])},reset_profile_background:n=>{const{normalize:r}=n;return r(["Tuì頭設個人資料ê背景"])},reset_profile_banner:n=>{const{normalize:r}=n;return r(["Tuì頭設個人資料ê條á"])},reset_avatar_confirm:n=>{const{normalize:r}=n;return r(["Lí敢確實beh tuì頭設定標頭?"])},reset_banner_confirm:n=>{const{normalize:r}=n;return r(["Lí敢確實beh tuì頭設定條á?"])},reset_background_confirm:n=>{const{normalize:r}=n;return r(["Lí敢確實beh tuì頭設定背景?"])},settings:n=>{const{normalize:r}=n;return r(["設定"])},subject_input_always_show:n=>{const{normalize:r}=n;return r(["一直顯示主旨ê格á"])},subject_line_behavior:n=>{const{normalize:r}=n;return r(["回應ê時,khóo-pih主旨"])},subject_line_email:n=>{const{normalize:r}=n;return r(["電子phue風格:「re: 主旨」"])},subject_line_mastodon:n=>{const{normalize:r}=n;return r(["Mastodon風格:主旨無變"])},subject_line_noop:n=>{const{normalize:r}=n;return r(["Mài khóo-pih"])},conversation_display:n=>{const{normalize:r}=n;return r(["顯示對話ê風格"])},conversation_display_tree:n=>{const{normalize:r}=n;return r(["樹á ê形"])},disable_sticky_headers:n=>{const{normalize:r}=n;return r(["Mài 予欄位ê頭牢佇螢幕頂懸"])},show_scrollbars:n=>{const{normalize:r}=n;return r(["展示邊á liâu ê giú-á"])},third_column_mode:n=>{const{normalize:r}=n;return r(["空間夠額ê時,展示第三ê欄位"])},third_column_mode_none:n=>{const{normalize:r}=n;return r(["不管時mài顯示第三ê欄位"])},third_column_mode_notifications:n=>{const{normalize:r}=n;return r(["通知ê欄位"])},third_column_mode_postform:n=>{const{normalize:r}=n;return r(["主要êPO文表kah導覽"])},show_admin_badge:n=>{const{normalize:r}=n;return r(["佇我ê個人資料顯示「行政員」證章"])},pause_on_unfocused:n=>{const{normalize:r}=n;return r(["若是 Pleroma ê分頁無點開,tiō 暫停更新"])},conversation_display_tree_quick:n=>{const{normalize:r}=n;return r(["樹á形ê展示"])},columns:n=>{const{normalize:r}=n;return r(["欄位"])},column_sizes:n=>{const{normalize:r}=n;return r(["欄位sài-suh"])},column_sizes_content:n=>{const{normalize:r}=n;return r(["內容"])},column_sizes_notifs:n=>{const{normalize:r}=n;return r(["通知"])},tree_advanced:n=>{const{normalize:r}=n;return r(["允准用較活動ê方式導覽佇樹á形ê展示"])},tree_fade_ancestors:n=>{const{normalize:r}=n;return r(["用較淺ê色水顯示目前狀態ê前文"])},conversation_display_linear:n=>{const{normalize:r}=n;return r(["線á形ê風格"])},conversation_display_linear_quick:n=>{const{normalize:r}=n;return r(["線á形ê展示"])},conversation_other_replies_button:n=>{const{normalize:r}=n;return r(["顯示「其他ê回應」鈕仔"])},conversation_other_replies_button_below:n=>{const{normalize:r}=n;return r(["佇狀態下kha"])},conversation_other_replies_button_inside:n=>{const{normalize:r}=n;return r(["佇狀態內底"])},max_depth_in_thread:n=>{const{normalize:r}=n;return r(["預設ê討論線顯示層數ê上限"])},post_status_content_type:n=>{const{normalize:r}=n;return r(["Po文狀態ê內容類型"])},sensitive_by_default:n=>{const{normalize:r}=n;return r(["預設內,kā po文標做敏感內容"])},stop_gifs:n=>{const{normalize:r}=n;return r(["Kā滑鼠ê指標khǹg佇面頂ê時,動畫圖片tsiah振動"])},streaming:n=>{const{normalize:r}=n;return r(["Giú kàu頂懸ê時,自動展示新ê po文"])},theme_help_v2_2:n=>{const{normalize:r}=n;return r(["一寡圖片下kha ê標á,是背景/圖片ê對比指示,滑鼠指標khǹg佇面頂ê時,ē當看詳細。請記lit,若是用透明ê,對比指示顯示上bái ê情況。"])},tooltipRadius:n=>{const{normalize:r}=n;return r(["提醒"])},type_domains_to_mute:n=>{const{normalize:r}=n;return r(["揣beh愛消音ê域名"])},upload_a_photo:n=>{const{normalize:r}=n;return r(["Kā相片傳上去"])},user_settings:n=>{const{normalize:r}=n;return r(["用者ê設定"])},values:{false:n=>{const{normalize:r}=n;return r(["無"])},true:n=>{const{normalize:r}=n;return r(["是"])}},mention_link_display_short:n=>{const{normalize:r}=n;return r(["一直顯示短ê名(比如: ","@","foo)"])},mention_link_display_full:n=>{const{normalize:r}=n;return r(["一直用全名顯示(比如:","@","foo","@","example.org)"])},virtual_scrolling:n=>{const{normalize:r}=n;return r(["Kā時間線ê算畫最佳化"])},mention_link_display_full_for_remote:n=>{const{normalize:r}=n;return r(["Kan-ta kā其他域名ê用者,用全名顯示(比如:","@","foo","@","example.org)"])},token:n=>{const{normalize:r}=n;return r(["Token"])},use_at_icon:n=>{const{normalize:r}=n;return r(["用標á顯示 ","@"," 符號,mài用文字"])},mention_link_display:n=>{const{normalize:r}=n;return r(["顯示提起ê連結"])},mention_link_use_tooltip:n=>{const{normalize:r}=n;return r(["佇tshi̍h提起ê連結ê時,顯示用者ê卡片"])},mention_link_show_avatar:n=>{const{normalize:r}=n;return r(["佇連結邊á顯示用者ê標頭"])},mention_link_show_avatar_quick:n=>{const{normalize:r}=n;return r(["佇提起ê隔壁,顯示用者ê標頭"])},mention_link_fade_domain:n=>{const{normalize:r}=n;return r(["用較淺ê色水顯示域名(比如:","@","foo","@","example.org ê ","@","example.org)"])},mention_link_bolden_you:n=>{const{normalize:r}=n;return r(["佇lí hőng提起ê時,強調對lí ê提起文字"])},user_popover_avatar_action:n=>{const{normalize:r}=n;return r(["Tshi̍h跳出來ê標頭ê動作"])},user_popover_avatar_action_zoom:n=>{const{normalize:r}=n;return r(["放大/縮小標頭"])},user_popover_avatar_action_close:n=>{const{normalize:r}=n;return r(["關掉跳出來ê框á"])},user_popover_avatar_action_open:n=>{const{normalize:r}=n;return r(["拍開個人資料"])},user_popover_avatar_overlay:n=>{const{normalize:r}=n;return r(["佇用者ê跳出來ê框仔面頂,顯示用者ê標頭"])},fun:n=>{const{normalize:r}=n;return r(["趣味ê"])},greentext:n=>{const{normalize:r}=n;return r(["Meme ê箭頭"])},show_yous:n=>{const{normalize:r}=n;return r(["顯示(Lí)"])},notifications:n=>{const{normalize:r}=n;return r(["通知"])},notification_setting_filters:n=>{const{normalize:r}=n;return r(["過濾ê"])},notification_setting_block_from_strangers:n=>{const{normalize:r}=n;return r(["關lí bô綴ê lâng 送ê通知"])},notification_setting_privacy:n=>{const{normalize:r}=n;return r(["隱私"])},notification_setting_hide_notification_contents:n=>{const{normalize:r}=n;return r(["Kā sak通知ê lâng kap伊ê內容khàm掉"])},notification_mutes:n=>{const{normalize:r}=n;return r(["若tsún無愛收tuì指定用者來ê通知,著用消音。"])},notification_blocks:n=>{const{normalize:r}=n;return r(["封鎖用者ē停止所有i hia來ê通知,mā取消訂伊。"])},enable_web_push_notifications:n=>{const{normalize:r}=n;return r(["拍開網頁sak通知ê功能"])},more_settings:n=>{const{normalize:r}=n;return r(["Koh較tsē ê設定"])}},status:{favorites:n=>{const{normalize:r}=n;return r(["收藏"])}},user_card:{favorites:n=>{const{normalize:r}=n;return r(["收藏"])}},tool_tip:{favorite:n=>{const{normalize:r}=n;return r(["收藏"])}}}}}]); +//# sourceMappingURL=nan-TW-json.7f2789d8a461e86d1734.js.map +\ No newline at end of file diff --git a/priv/static/static/js/i18n/nan-TW-json.7f2789d8a461e86d1734.js.map b/priv/static/static/js/i18n/nan-TW-json.7f2789d8a461e86d1734.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/i18n/nan-TW-json.7f2789d8a461e86d1734.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/nan-TW.json"],"sourcesContent":["export default {\n \"about\": {\n \"mrf\": {\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聯邦\"])},\n \"keyword\": {\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關鍵字政策\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tuì「知影 ê 網路」時間線除掉\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒絕\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取代\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])}\n },\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"啟用 ê MRF 政策\"])},\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF 政策操作本站 ê 對外通信行為。以下ê政策啟用 ah:\"])},\n \"simple\": {\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"站臺特有 ê 政策\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"站\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"理由\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"接受\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本站干焦接受下跤 ê 站 ê 短 phue:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒絕\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本站 buē 接受 tuì 以下 ê 站 ê 短 phue:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隔離\"])},\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"針對下跤 ê 站,本站干焦送出公開ê PO文:\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tuì「知影 ê 網路」時間線thâi掉\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本站buē 佇「知影 ê 網路」刊下跤 ê 站 ê PO文:\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thâi除媒體\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本站 kā 下跤 ê 站臺送 ê PO文 ê 媒體 lóng thâi 除:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒體 lóng 標做「敏感內容」\"])},\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本站 kā 下跤 ê 站 ê 媒體,lóng 標做敏感內容:\"])},\n \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N/A\"])}\n }\n },\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"工作人員\"])}\n },\n \"announcements\": {\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標做讀過\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"貼公告\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇 tsia 拍你 ê 公告……\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"貼\"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"錯誤:\", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開始時間: \"])},\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"結束時間: \"])},\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tse 是 kui 工 ê 事件\"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"公告佇 \", _interpolate(_named(\"time\"))])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"有效 tuì:\", _interpolate(_named(\"time\"))])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"中止佇:\", _interpolate(_named(\"time\"))])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"編輯\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"送出\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這个公告 tsit-má 無效力\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thâi掉\"])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"留話枋\"])}\n },\n \"domain_mute_card\": {\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"消音\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teh 消音……\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"予有聲\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teh 予有聲……\"])}\n },\n \"exporter\": {\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"匯出\"])},\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teh 處理,較停仔指示你下載檔案\"])}\n },\n \"features_panel\": {\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"留話枋\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 開講\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒體代理伺侯器\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公開範圍選項\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字數限制\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"有效 ê 功能\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"啥儂通綴\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檔案 sài-suh 限制\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshuē 用者 ê 時起錯誤\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshuē 用者\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"應用\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"送出\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Koh 較 tsē\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Leh 載入……\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"起錯誤 ah\"])},\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"起錯誤:\", _interpolate(_list(0))])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"請 koh 試一 kái\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Koh 試\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"非必要\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展示較 tsē\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展示較少\"])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mài koh 展示\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無視\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無愛用\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"啟用\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確認\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"驗證\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關掉\"])},\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"復原\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"是\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"毋是\"])},\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"先看 māi\"])},\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"捲 kàu 頂懸\"])},\n \"role\": {\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"行政員\"])},\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理員\"])}\n },\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無愛 kā 釘\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā釘起來\"])},\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ji̍h tsia,用 Ruffle(iáu teh 試驗,可能 buē 紡)看 Flash ê 內容。\"])},\n \"flash_sepcurity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"注意 tse 可能有危險,因為 Flash 內容猶原是任意 ê 程式碼。\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入 flash 內容失敗,詳細ē當看控制臺。\"])},\n \"scope_in_timeline\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私人 phue\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"干焦 hōo 綴 lí ê 看\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公開佇公共時間線\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無愛公開佇公共時間線\"])}\n },\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flash內容通藏任何ê指令,所以可能有危險。\"])}\n },\n \"image_cropper\": {\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"裁相片\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"儲存\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無裁就儲存\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])}\n },\n \"importer\": {\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"送出\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"匯入成功。\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇匯入 ê 時起錯誤。\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登入\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用 OAuth 登入\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出\"])},\n \"logout_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出確認\"])},\n \"logout_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí 敢真正 beh 登出?\"])},\n \"logout_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出\"])},\n \"logout_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mài 登出\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密碼\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例:lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用者 ê 名\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登入,參與討論\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"認證碼\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入恢復碼\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入兩階段認證碼\"])},\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"恢復碼\"])},\n \"heading\": {\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"兩階段認證\"])},\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"兩階段恢復\"])}\n }\n },\n \"media_modal\": {\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"頂一 ê\"])},\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"後一个\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關掉媒體瀏覽\"])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關係本站\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉去\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"跟綴請求\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The̍h起\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"互動\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私人 phue\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公共時間線\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"時間線\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshù ê 時間線\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"知影 ê 網路\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"冊籤\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshuē 用者\"])},\n \"search_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關掉 tshiau-tshuē liâu\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Siáng ē當綴\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"個人 ê 設定\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"時間線\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開講\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列單\"])},\n \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自訂導覽條\"])},\n \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"編輯釘起來 ê 項目\"])},\n \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"編輯 suah\"])},\n \"mobile_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"切換行動版 ê 邊 á liâu\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拍開通知(有無讀ê)\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關掉通知\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshuē\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"狀態毋知影,leh tshiau-tshuē……\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"佇取得通知 ê 時起錯誤:\", _interpolate(_list(0))])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kah 意 lí ê 狀態\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"綴 lí\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"想 beh 綴 lí\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入 khah 早 ê 通知\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"有讀ah!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉送 lí ê 狀態\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無別 ê 通知\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移民到\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"顯出\", _interpolate(_list(0)), \" ê 反應\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"送出檢舉\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票結束\"])}\n },\n \"polls\": {\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開投票\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加選項\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選項\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"票\"])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" 位有投\"])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" 票\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票 ê 形式\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"孤選\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tsē 選\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票期限\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"投票 tī \", _interpolate(_list(0)), \" 以後結束\"])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"投票佇 \", _interpolate(_list(0)), \" 以前結束\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票 ê 選項傷少\"])}\n },\n \"emoji\": {\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"貼圖\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"繪文字\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hōo 揀選仔開 leh\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshuē 繪文字\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"插繪文字\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"定製 ê 繪文字\"])},\n \"unpacked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拍開 ê 繪文字\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode 繪文字\"])},\n \"unicode_groups\": {\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"活動\"])},\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"動物 kap 自然\"])},\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"旗 á\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"食物 kap 飲料\"])},\n \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"物體\"])},\n \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lâng kap 身軀\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"笑面 kap 情緒\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"符號\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"旅遊 kap 所在\"])}\n },\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"載入頭前 \", _interpolate(_named(\"saneAmount\")), \" ê 繪文字,規个攏載入效能可能 ē khah 食力。\"])},\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Kā \", _interpolate(_named(\"emojiAmount\")), \" ê 繪文字攏載入\"])},\n \"regional_indicator\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"地區指引 \", _interpolate(_named(\"letter\"))])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma buē-tàng the̍h 著瀏覽器儲存 ê。Lí ê 登入狀態抑是局部設定 buē 儲存,mā 凡勢 tú 著意料外 ê 問題。拍開 cookie 看覓。\"])}\n },\n \"interactions\": {\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉送 kap kah 意\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"最近綴 lí ê\"])},\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"繪文字 ê 回應\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檢舉\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用者 ê 移民\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入 koh khah 早 ê 互動\"])}\n },\n \"post_status\": {\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"編輯狀態\"])},\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PO 新 ê 狀態\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Lín 口座毋是 \", _interpolate(_list(0)), \" ê。見 nā 有 lâng 綴--lí,ē-tàng 看著 lí ê 限定跟綴者 ê PO 文。.\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"鎖起來 ê 口座\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā 附件標做敏感內容\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒體說明\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"純 ê 文字\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])}\n },\n \"content_type_selection\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"貼 ê 形式\"])},\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主旨(毋是必要)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tú 正 kàu 高雄 ah。\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tsit ê PO 文通 hōo 逐 ê 提起 ê 用者看見。\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tsit ê PO 文,kan-ta 短信 tú 開始提起 ê 用者,tsiah 通看見。\"])},\n \"edit_remote_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"別 ê 站臺可能無支援編輯,無法度收著 PO 文上新 ê 版本。\"])},\n \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 無支持編輯 the̍h 起 hām 投票。\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PO 文\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sing 看覓\"])},\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"空 ê\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無法度 PO 無檔案 koh 空 ê 狀態\"])},\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更新媒體失敗,請 koh 試一 kái\"])},\n \"scope_notice\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tsit ê PO 文通予逐 ê 儂看著\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tsit ê PO 文 kan-ta 予綴 lí ê 看著\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tsit ê PO 文 buē 公開 tī 公共時間線 kap 知影 ê 網路\"])}\n },\n \"scope_notice_dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關掉 tsit ê 通知\"])},\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私人 phue - PO 文干焦予提起 ê 用者看著\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"限定綴 ê 儂 - PO 文干焦予綴 lí ê 儂看著\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公開 - PO kàu 公開時間線\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mài 列出來 - Mài PO tī 公開時間線\"])}\n },\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PO 上去\"])}\n },\n \"registration\": {\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"介紹(毋是必要)\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email(毋是必要)\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示 ê 名\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確認密碼\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邀請碼\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"驗證碼\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ji̍h 圖片,the̍h 新 ê 驗證碼\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. 岩倉 Lain\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g.\\nLí 好,我是 Lain。\\n我是日本動畫 ê 角色,tuà tī 日本 ê 郊區。Lí 凡勢 bat tī Wired 知影我。\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊 ê 理由\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本站靠人工審核註冊。\\n介紹管理者 lí beh tī tsia 註冊 ê 理由。\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"著愛添\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"著愛添\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"著愛添\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"著愛添\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"著愛添\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密碼著相 kâng\"])},\n \"birthday_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"著愛添\"])},\n \"birthday_min_age\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Buē-tàng tī \", _interpolate(_named(\"date\")), \" 以後\"])}\n },\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí想 beh 服侍器用 siánn 物語言寄批 hōo lí?\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生日:\"])},\n \"birthday_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生日(毋是必要):\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"電子 phue 箱\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"比如:lain\"])}\n },\n \"remote_user_resolver\": {\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"別站用者 ê 解析器\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshuē無。\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshuē:\"])}\n },\n \"report\": {\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檢舉人:\"])},\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beh 檢舉 ê 用者:\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beh 檢舉 ê 狀態:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開 ê\"])},\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關 ê\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"解決了 ê\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"狀態:\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"攏總揀\"])}\n },\n \"settings\": {\n \"add_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加一 ê 備用 ê 語言\"])},\n \"remove_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ni 掉\"])},\n \"primary_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主要語言:\"])},\n \"fallback_language\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"備用語言 \", _interpolate(_named(\"index\")), \":\"])},\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App ê 名\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"進階模式\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存改變\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"安全\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設定 kap 預先 ê 有 tsing 差\"])},\n \"style\": {\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"色彩\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無透明度\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"色彩ê對比率:\", _interpolate(_named(\"ratio\")), \"。\", _interpolate(_named(\"level\")), \"、 \", _interpolate(_named(\"context\"))])}\n }\n },\n \"switcher\": {\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保持陰影\"])},\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保持色彩\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保持無透明度\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留邊á角ê khà-buh\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保持字型\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重頭設定\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"攏清掉\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"清掉無透明度\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入主題\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mài振動\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"舊ê版本\"])},\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新ê版本\"])},\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE升級ah,主題huân-sè kap lí知影ê無kâng。\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí輸入ê檔案是舊版本ê前端用ê。Guán盡量予版本相通,毋過可能有所在buē-tàng。\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí輸入ê檔案是予舊ê前端用ê。\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí輸入ê檔案是新ê前端所用ê。\"])}\n }\n }\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上傳 ê 時失敗。\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"傳 buē 起去:\", _interpolate(_list(0))])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"檔案 sài-suh 傷大 [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Koh 試一 kái。\"])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主題標籤\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" ê leh 論\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" ê leh 論\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無半 ê 結果\"])},\n \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無其他 ê 結果\"])},\n \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入 koh 較 tsē 結果\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buē 記得密碼?\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重頭設密碼\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拍 lí ê email 地址 iah 是用者 ê 名。Guán 會送 lí 連結,重頭設定密碼。\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí ê email 地址 iah 是用者 ê 名。\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檢查電子 phue 箱,看有重頭設密碼 ê 連結無。\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉來頭頁\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí kā 請求 ê khòo-tah 用了 ah。等一時仔,閣試一 pái。\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密碼重頭設定無開放。請聯絡本站 ê 行政員。\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beh 登入,著重頭設 lí ê 密碼。\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí 需要重頭設密碼,毋 koh tsia 無開放密碼 koh 再設定。請聯絡本站 ê 行政員。\"])}\n },\n \"chats\": {\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"傳私人 phue:\", _interpolate(_named(\"nickname\"))])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thâi 掉\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開講\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發起開講\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無法度 PO 空 ê phue\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Koh較濟……\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí 敢真 ê beh thâi tsit 張 phue?\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入開講 ê 時,出箠 ah。\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"送 phue ê 時,出箠 ah。\"])},\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí 猶無佇 tsia 開講過,來開講 lah!\"])}\n },\n \"lists\": {\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列單\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新 ê 列單\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列單標題\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshuē 用者\"])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開新 ê\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存改變\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刣列單\"])},\n \"following_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"限定 lí 所關注 ê\"])},\n \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理列單\"])},\n \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理列單成員\"])},\n \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshiau 閣較 tsē ê 用者\"])},\n \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"對列單刣掉\"])},\n \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加入去列單\"])},\n \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列單已經有 ah \"])},\n \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"編輯列單 \", _interpolate(_named(\"listTitle\"))])},\n \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開新 ê 列單\"])},\n \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存標題\"])},\n \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"敢真正 beh 刣掉列單?\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"操作列單 ê 時陣出重耽:\", _interpolate(_list(0))])}\n },\n \"file_type\": {\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"音訊\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"影片\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"影像\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檔案\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"今 á 日\"])}\n },\n \"update\": {\n \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"敬請體諒\"])},\n \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"因為 guán 有一站 á 無發行新版本,所以這个版本會 kap lí 以早慣 sì ê 無仝。\"])},\n \"update_bugs\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"請佇 \", _interpolate(_named(\"pleromaGitlab\")), \" 報告任何問題 kap bug,因為 Pleroma 改變真 tsē。雖罔 guán 徹底 leh 試,mā 家 kī 用開發版,伊凡勢有一寡重耽。Guán 歡迎 lín 提供關係所拄著 ê 問題 ê 意見、建議,或者是改進 Pleroma kap Pleroma-FE ê 法度。\"])},\n \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Nā beh 知影改變 ê 詳細,請看:\", _interpolate(_named(\"theFullChangelog\")), \".\"])},\n \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kui ê 改變日誌\"])},\n \"art_by\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"美編:\", _interpolate(_named(\"linkToArtist\"))])}\n },\n \"unicode_domain_indicator\": {\n \"tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這 ê 域名包含毋是 ascii ê 字元。\"])}\n },\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tsit-ê設定縛佇lí ê個人資料,mā 影響逐ê連線階段kap用者端\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PO 文ê外貌kap感受\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提起 ê 連結\"])},\n \"mfa\": {\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設 OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kā OTP 預設\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"兩階段認證\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"產生新ê恢復碼\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"產生新 ê 恢復碼ê時,舊 ê tio̍h 變無效。\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"恢復碼。\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"當leh收備份碼……\"])},\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"認證方法\"])},\n \"scan\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"掃一 ē\"])},\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"鎖匙\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The̍h lí个兩階段app,掃 tsit ê QR code,抑是拍文字鎖匙:\"])}\n },\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nā beh開兩階段認證,請拍兩階段認證app內底ê碼:\"])}\n },\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確定,拍開 OTP\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"著 kā tsiah ê 號碼抄落來,抑是儲存佇安全ê所在,因為號碼 buē koh 再出現。若是 lí 袂當用 lí 个兩階段認證app,而且恢復碼拍 ka-la̍uh,lí就永永buē當登入lí个口座。\"])}\n },\n \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇導覽中顯示列單\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"若是綴ê口座徙位ê時,允准自動綴新ê\"])},\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標頭\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標頭(通知)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標頭\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"背景\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"紹介\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸出封鎖名單\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖名單輸出kàu csv檔\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇輸入封鎖名單ê時出tshê\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入封鎖名單\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸出消音名單\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸出消音名單kàu csv檔\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入消音名單\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"成功輸入封鎖名單!較停仔tsiah ē處理suah。\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"成功輸入消音名單!較停仔tsiah ē處理suah。\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入封鎖名單ê csv檔\"])},\n \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"備份口座\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"消音kap封鎖\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thâi口座\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇刣掉lí ê 口座ê時出問題。若是問題一直佇leh,請聯絡 lín 站臺 ê 行政員。\"])},\n \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"口座 ê 別名\"])},\n \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"別名\"])},\n \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"佇the̍h別名ê時出tshê:\", _interpolate(_named(\"error\"))])},\n \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關掉\"])},\n \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thâi 掉tsit ê別名\"])},\n \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"加新ê別名(比如: \", _interpolate(_named(\"example\")), \"))\"])},\n \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"別名加入去ah。\"])},\n \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"佇加別名ê時出tshê:\", _interpolate(_named(\"error\"))])},\n \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"徙口座\"])},\n \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"目標口座(比如:\", _interpolate(_named(\"example\")), \")\"])},\n \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"口座徙過去ah。\"])},\n \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"佇徙口座ê時出tshê:\", _interpolate(_named(\"error\"))])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"服侍器送ê email 所用 ê 語言\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入lí tsit-má ê 密碼,確認lí ê身份\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇輸入消音名單ê時出tshê\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ē 永永刣掉lí个資料,hōo lí 个口座bē當用。\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇佇下跤拍lí个密碼,確認 kā 口座 thâi掉。\"])},\n \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"若是欲徙tsit ê口座,著去lí ê目標口座hia,加一ê指tsia ê別名。\"])},\n \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"備份\"])},\n \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"下載\"])},\n \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"備份猶 buē tshuân 予好勢。\"])},\n \"backup_running\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"備份leh處理,其中 \", _interpolate(_named(\"number\")), \" 筆記錄處理 suah--ah。\"])},\n \"backup_failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"備份失敗。\"])},\n \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thâi 掉\"])},\n \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"佇 the̍h 備份列單ê時出tshê: \", _interpolate(_named(\"error\"))])},\n \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開新ê備份\"])},\n \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新ê備份開好 ah。\"])},\n \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"佇開新ê備份ê時出tshê:\", _interpolate(_named(\"error\"))])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tse 是機器 lâng ê 口座\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"鈕仔\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"藍色(回應,跟綴)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"綠色(轉送)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"柑仔色(kah 意)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"紅色(取消)\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"換電子 phue 箱\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"電子 phue 箱變換成功!\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"改密碼\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇改密碼ê時出問題。\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"改密碼成功!\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開講ê訊息\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"編寫ê設定\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確認新ê密碼\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tann ê 密碼\"])},\n \"confirm_dialogs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"問確認佇\"])},\n \"confirm_dialogs_repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉送狀態\"])},\n \"confirm_dialogs_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無愛綴用者\"])},\n \"confirm_dialogs_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖用者\"])},\n \"confirm_dialogs_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kā用者消音\"])},\n \"confirm_dialogs_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"thâi掉狀態\"])},\n \"confirm_dialogs_logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出\"])},\n \"confirm_dialogs_approve_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"允准跟綴\"])},\n \"confirm_dialogs_deny_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無允准跟綴\"])},\n \"confirm_dialogs_remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"徙走綴 lí ê\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"資料輸入/出\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預設ê公開範圍\"])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"允准用tshiau-tshuē kap 其他ê服務tshuē著 tsit ê口座\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"域名\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"建議ê標頭影像sài-suh 是150x150畫素。\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tuì 揀選器揀繪文字以後,佇繪文字雙 pîng 邊加空白\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇時間線頂,顯示繪文字ê反應\"])},\n \"emoji_reactions_scale\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"反應ê規模係數\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存主題\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"過濾\"])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"詞語過濾器\"])},\n \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"詞語過濾器 kap 其他……\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸出 lí 所綴ê\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸出lí所綴ê kàu csv 檔\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入lí所綴ê\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇輸入跟綴 ê 資料 ê 時出tshê\"])},\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"強調\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前景\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"一般\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇對話ê時,khàm附件\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm掉時間線內ê附件\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm掉媒體ê預展\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm掉消音ê用者ê PO文\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm 掉PO文內底ê機器lâng ê指示\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm掉消音êPO文\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PO文ê縮小圖ê khòo-tah(無寫=無限制)\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm 站臺特有ê面 pang\"])},\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā 邊á liâu徙kah正手pîng\"])},\n \"navbar_column_stretch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"伸導覽liâu,kah 欄平闊\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"一直顯示「新ê PO文」ê鈕仔\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm站臺ê壁紙\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshi̍h 一ê就會當拍開敏感內容\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm PO文ê統計數據(比如:kah 意ê額數)\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm 逐ê過濾掉êPO文\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm詞語過濾掉ê狀態\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm消音ê討論線\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tuì csv 檔輸入封鎖名單\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Uì csv 檔輸入跟綴ê資料\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入主題\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入ê格仔\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選擇框仔\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(預設:\", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(預設)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面\"])},\n \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邊 á liâu\"])},\n \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自動顯示新ê PO文\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用者\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"連鞭收著PO文kap通知\"])},\n \"use_websockets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用websockets(實ê時間ê更新)\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文字\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主題\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用16進位ê碼(#rrggbb)來訂做家己ê色彩主題。\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇換電子phue箱ê時出問題。\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā 有主旨ê PO 文 khàm 起來\"])},\n \"autocomplete_select_first\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"若是有自動完成ê結果,自動揀頭一ê侯選ê\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"見若有下跤ê詞語ê狀態,會hőng消音。一tsuā寫一ê\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí所綴ê輸入去ah!較停仔tsiah ē處理suah。\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā 機器lâng ê PO文消音\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm 站臺ê留話pang\"])},\n \"account_backup_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tse 予 lí ē當 kā lín 口座 ê 資訊 kap PO 文載落來,毋過 in 猶無法度輸入kàu Pleroma口座 ê 內底。\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拍開選擇框á就 ē 當改掉一寡組件ê色彩kap無透明度。Ji̍h「清掉所有ê」,ē 恢復原來ê款。\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā 圖片先載入\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm 掉用者ê統計數據(比如:綴ê lâng額)\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面ê語言\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí 所揀ê主題檔案,Pleroma 無支援,所以主題無改。\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你ê瀏覽器內底buē當用\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"連結\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kan-ta lí 同意,別儂tsiah通綴lí\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"循環播出ê影片\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kan-ta無聲ê影片tsiah通循環播出(比如:Mastodon ê \\\"gif\\\")\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"消音\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇跳出來ê框仔播出影片\"])},\n \"url\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預展\"])},\n \"file_export_import\": {\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"備份設定\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā 設定備份kàu檔案\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā設定kap主題備份kàu檔案\"])},\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"對檔案回復設定\"])},\n \"errors\": {\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"無接受ê主要版本:\", _interpolate(_named(\"fileMajor\")), \",檔案ê版本siūnn舊,buē當處理(\", _interpolate(_named(\"feMajor\")), \" 版以後ê tsiah支援)\"])},\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檔案ê次版本無仝,一寡設定可能buē當載入去\"])},\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選擇ê檔案毋是Pleroma支援ê設定備份,設定無振動。\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"無接受ê主要版本:\", _interpolate(_named(\"fileMajor\")), \",本 PleromaFE(設定版本 \", _interpolate(_named(\"feMajor\")), \")siūnn舊,buē當處理\"])}\n }\n },\n \"profile_fields\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"個人資料ê meta資料\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加格仔\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標簽\"])},\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"內容\"])}\n },\n \"birthday\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生日\"])},\n \"show_birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示我ê生日\"])}\n },\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱私\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mài裁附件ê縮小圖\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"名kah介紹\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新ê密碼\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PO文\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"名\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新ê電子phue箱\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收藏\"])},\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mài 顯示阮收藏ê列單(別儂uân-á ē收著通知)\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用者ê資料\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Beh顯示啥款ê通知\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"綴ê儂\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提起\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉送\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用者suá位\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回應\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí參與ê選舉辦suah佇\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Po文mài用RTF格式\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無封鎖\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無消音\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mài顯示我綴ê儂\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mài顯示綴我ê儂\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mài顯示我跟綴ê儂額\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mài顯示綴我ê儂額\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇我ê個人資料顯示「管理員」證章\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Khàm掉敏感ê媒體內容\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth token\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"對頭the̍h token\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"到期佇\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤回\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面pang\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"代先ê設定\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"個人資料ê背景\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"個人資料ê條á\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"個人資料\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設定界面邊á ê khà-buh (curve) ê 半徑(單位:畫素)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇時間線內底ê回應\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示所有ê回應\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kan-ta顯示送予我抑是我綴ê儂ê回應\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kan-ta顯示送予我ê回應\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示予我所綴ê儂ê回應\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kan-ta顯示予我ka-kī ê回應\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自動khàm掉「新êPO文」ê鈕仔(行動版)\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇保存設定ê時出tshê\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設定保存好ah\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshuē lí beh封鎖ê\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshuē lí beh 消音ê\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"安全\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回應ê時ē khóo-pih ê範圍(私人phue 定著ē hőng khóo-pih)\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā PO文ê公開範圍ê選項,kiu kah上細\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設定新ê標頭\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設定新ê個人資料ê背景\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設定新ê個人資料ê條á\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tuì頭設定標頭\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tuì頭設個人資料ê背景\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tuì頭設個人資料ê條á\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí敢確實beh tuì頭設定標頭?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí敢確實beh tuì頭設定條á?\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lí敢確實beh tuì頭設定背景?\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設定\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"一直顯示主旨ê格á\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回應ê時,khóo-pih主旨\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"電子phue風格:「re: 主旨」\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mastodon風格:主旨無變\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mài khóo-pih\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示對話ê風格\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"樹á ê形\"])},\n \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mài 予欄位ê頭牢佇螢幕頂懸\"])},\n \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展示邊á liâu ê giú-á\"])},\n \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"空間夠額ê時,展示第三ê欄位\"])},\n \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不管時mài顯示第三ê欄位\"])},\n \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知ê欄位\"])},\n \"third_column_mode_postform\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主要êPO文表kah導覽\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇我ê個人資料顯示「行政員」證章\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"若是 Pleroma ê分頁無點開,tiō 暫停更新\"])},\n \"conversation_display_tree_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"樹á形ê展示\"])},\n \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"欄位\"])},\n \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"欄位sài-suh\"])},\n \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"內容\"])},\n \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"允准用較活動ê方式導覽佇樹á形ê展示\"])},\n \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用較淺ê色水顯示目前狀態ê前文\"])},\n \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"線á形ê風格\"])},\n \"conversation_display_linear_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"線á形ê展示\"])},\n \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示「其他ê回應」鈕仔\"])},\n \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇狀態下kha\"])},\n \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇狀態內底\"])},\n \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預設ê討論線顯示層數ê上限\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Po文狀態ê內容類型\"])},\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預設內,kā po文標做敏感內容\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā滑鼠ê指標khǹg佇面頂ê時,動畫圖片tsiah振動\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Giú kàu頂懸ê時,自動展示新ê po文\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"一寡圖片下kha ê標á,是背景/圖片ê對比指示,滑鼠指標khǹg佇面頂ê時,ē當看詳細。請記lit,若是用透明ê,對比指示顯示上bái ê情況。\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提醒\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"揣beh愛消音ê域名\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā相片傳上去\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用者ê設定\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"是\"])}\n },\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"一直顯示短ê名(比如: \", \"@\", \"foo)\"])},\n \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"一直用全名顯示(比如:\", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā時間線ê算畫最佳化\"])},\n \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kan-ta kā其他域名ê用者,用全名顯示(比如:\", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token\"])},\n \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用標á顯示 \", \"@\", \" 符號,mài用文字\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示提起ê連結\"])},\n \"mention_link_use_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇tshi̍h提起ê連結ê時,顯示用者ê卡片\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇連結邊á顯示用者ê標頭\"])},\n \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇提起ê隔壁,顯示用者ê標頭\"])},\n \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用較淺ê色水顯示域名(比如:\", \"@\", \"foo\", \"@\", \"example.org ê \", \"@\", \"example.org)\"])},\n \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇lí hőng提起ê時,強調對lí ê提起文字\"])},\n \"user_popover_avatar_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tshi̍h跳出來ê標頭ê動作\"])},\n \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"放大/縮小標頭\"])},\n \"user_popover_avatar_action_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關掉跳出來ê框á\"])},\n \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拍開個人資料\"])},\n \"user_popover_avatar_overlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"佇用者ê跳出來ê框仔面頂,顯示用者ê標頭\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"趣味ê\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meme ê箭頭\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示(Lí)\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"過濾ê\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關lí bô綴ê lâng 送ê通知\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱私\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kā sak通知ê lâng kap伊ê內容khàm掉\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"若tsún無愛收tuì指定用者來ê通知,著用消音。\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖用者ē停止所有i hia來ê通知,mā取消訂伊。\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拍開網頁sak通知ê功能\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Koh較tsē ê設定\"])}\n },\n \"status\": {\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收藏\"])}\n },\n \"user_card\": {\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收藏\"])}\n },\n \"tool_tip\": {\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收藏\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","named","_named","list","_list"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/i18n/zh-json.63e4c9fe0197374a5dac.js b/priv/static/static/js/i18n/zh-json.63e4c9fe0197374a5dac.js @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[5929],{4425:(r,n,e)=>{e.r(n),e.d(n,{default:()=>t});const t={chat:{title:r=>{const{normalize:n}=r;return n(["聊天"])}},exporter:{export:r=>{const{normalize:n}=r;return n(["导出"])},processing:r=>{const{normalize:n}=r;return n(["正在处理,稍后会提示您下载文件"])}},features_panel:{chat:r=>{const{normalize:n}=r;return n(["聊天"])},gopher:r=>{const{normalize:n}=r;return n(["Gopher"])},media_proxy:r=>{const{normalize:n}=r;return n(["媒体代理"])},scope_options:r=>{const{normalize:n}=r;return n(["可见范围设置"])},text_limit:r=>{const{normalize:n}=r;return n(["文字数量限制"])},title:r=>{const{normalize:n}=r;return n(["功能"])},who_to_follow:r=>{const{normalize:n}=r;return n(["推荐关注"])},pleroma_chat_messages:r=>{const{normalize:n}=r;return n(["Pleroma 聊天"])},upload_limit:r=>{const{normalize:n}=r;return n(["上传限制"])},shout:r=>{const{normalize:n}=r;return n(["留言板"])}},finder:{error_fetching_user:r=>{const{normalize:n}=r;return n(["获取用户时发生错误"])},find_user:r=>{const{normalize:n}=r;return n(["寻找用户"])}},general:{apply:r=>{const{normalize:n}=r;return n(["应用"])},submit:r=>{const{normalize:n}=r;return n(["提交"])},more:r=>{const{normalize:n}=r;return n(["更多"])},generic_error:r=>{const{normalize:n}=r;return n(["发生了一个错误"])},optional:r=>{const{normalize:n}=r;return n(["可选"])},show_more:r=>{const{normalize:n}=r;return n(["展开"])},show_less:r=>{const{normalize:n}=r;return n(["收起"])},cancel:r=>{const{normalize:n}=r;return n(["取消"])},disable:r=>{const{normalize:n}=r;return n(["禁用"])},enable:r=>{const{normalize:n}=r;return n(["启用"])},confirm:r=>{const{normalize:n}=r;return n(["确认"])},verify:r=>{const{normalize:n}=r;return n(["验证"])},dismiss:r=>{const{normalize:n}=r;return n(["忽略"])},peek:r=>{const{normalize:n}=r;return n(["预览"])},close:r=>{const{normalize:n}=r;return n(["关闭"])},retry:r=>{const{normalize:n}=r;return n(["重试"])},error_retry:r=>{const{normalize:n}=r;return n(["请重试"])},loading:r=>{const{normalize:n}=r;return n(["载入中…"])},role:{moderator:r=>{const{normalize:n}=r;return n(["监察员"])},admin:r=>{const{normalize:n}=r;return n(["管理员"])}},flash_content:r=>{const{normalize:n}=r;return n(["点击以使用 Ruffle 显示 Flash 内容(实验性,可能无效)。"])},flash_security:r=>{const{normalize:n}=r;return n(["注意这可能有潜在的危险,因为 Flash 内容仍然是任意的代码。"])},flash_fail:r=>{const{normalize:n}=r;return n(["Flash 内容加载失败,请在控制台查看详情。"])},scope_in_timeline:{public:r=>{const{normalize:n}=r;return n(["公开"])},direct:r=>{const{normalize:n}=r;return n(["私讯"])},private:r=>{const{normalize:n}=r;return n(["仅关注者"])},unlisted:r=>{const{normalize:n}=r;return n(["列外"])}},scroll_to_top:r=>{const{normalize:n}=r;return n(["滚动至顶"])},generic_error_message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["发生一个错误:",e(t(0))])},never_show_again:r=>{const{normalize:n}=r;return n(["不再显示"])},undo:r=>{const{normalize:n}=r;return n(["撤销"])},yes:r=>{const{normalize:n}=r;return n(["是"])},no:r=>{const{normalize:n}=r;return n(["否"])},unpin:r=>{const{normalize:n}=r;return n(["取消固定该项"])},pin:r=>{const{normalize:n}=r;return n(["固定该项"])}},image_cropper:{crop_picture:r=>{const{normalize:n}=r;return n(["裁剪图片"])},save:r=>{const{normalize:n}=r;return n(["保存"])},save_without_cropping:r=>{const{normalize:n}=r;return n(["保存未经裁剪的图片"])},cancel:r=>{const{normalize:n}=r;return n(["取消"])}},importer:{submit:r=>{const{normalize:n}=r;return n(["提交"])},success:r=>{const{normalize:n}=r;return n(["导入成功。"])},error:r=>{const{normalize:n}=r;return n(["导入此文件时出现一个错误。"])}},login:{login:r=>{const{normalize:n}=r;return n(["登录"])},description:r=>{const{normalize:n}=r;return n(["用 OAuth 登录"])},logout:r=>{const{normalize:n}=r;return n(["登出"])},password:r=>{const{normalize:n}=r;return n(["密码"])},placeholder:r=>{const{normalize:n}=r;return n(["例如:lain"])},register:r=>{const{normalize:n}=r;return n(["注册"])},username:r=>{const{normalize:n}=r;return n(["用户名"])},hint:r=>{const{normalize:n}=r;return n(["登录后加入讨论"])},authentication_code:r=>{const{normalize:n}=r;return n(["验证码"])},enter_recovery_code:r=>{const{normalize:n}=r;return n(["输入一个恢复码"])},enter_two_factor_code:r=>{const{normalize:n}=r;return n(["输入一个双重因素验证码"])},recovery_code:r=>{const{normalize:n}=r;return n(["恢复码"])},heading:{totp:r=>{const{normalize:n}=r;return n(["双重因素验证"])},recovery:r=>{const{normalize:n}=r;return n(["双重因素恢复"])}},logout_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要登出"])},logout_confirm_title:r=>{const{normalize:n}=r;return n(["确认登出"])},logout_confirm_accept_button:r=>{const{normalize:n}=r;return n(["登出"])},logout_confirm:r=>{const{normalize:n}=r;return n(["您确定要登出吗?"])}},media_modal:{previous:r=>{const{normalize:n}=r;return n(["往前"])},next:r=>{const{normalize:n}=r;return n(["往后"])},hide:r=>{const{normalize:n}=r;return n(["关闭媒体查看器"])},counter:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("current"))," / ",e(t("total"))])}},nav:{about:r=>{const{normalize:n}=r;return n(["关于"])},back:r=>{const{normalize:n}=r;return n(["后退"])},chat:r=>{const{normalize:n}=r;return n(["本站聊天"])},friend_requests:r=>{const{normalize:n}=r;return n(["关注请求"])},mentions:r=>{const{normalize:n}=r;return n(["提及"])},interactions:r=>{const{normalize:n}=r;return n(["互动"])},dms:r=>{const{normalize:n}=r;return n(["私信"])},public_tl:r=>{const{normalize:n}=r;return n(["公共时间线"])},timeline:r=>{const{normalize:n}=r;return n(["时间线"])},twkn:r=>{const{normalize:n}=r;return n(["已知网络"])},user_search:r=>{const{normalize:n}=r;return n(["用户搜索"])},search:r=>{const{normalize:n}=r;return n(["搜索"])},who_to_follow:r=>{const{normalize:n}=r;return n(["推荐关注"])},preferences:r=>{const{normalize:n}=r;return n(["偏好设置"])},administration:r=>{const{normalize:n}=r;return n(["管理员"])},chats:r=>{const{normalize:n}=r;return n(["聊天"])},timelines:r=>{const{normalize:n}=r;return n(["时间线"])},bookmarks:r=>{const{normalize:n}=r;return n(["书签"])},home_timeline:r=>{const{normalize:n}=r;return n(["主页时间线"])},lists:r=>{const{normalize:n}=r;return n(["列表"])},edit_finish:r=>{const{normalize:n}=r;return n(["完成编辑"])},mobile_notifications:r=>{const{normalize:n}=r;return n(["打开通知(有未读的)"])},mobile_notifications_close:r=>{const{normalize:n}=r;return n(["关闭通知"])},announcements:r=>{const{normalize:n}=r;return n(["公告"])},edit_nav_mobile:r=>{const{normalize:n}=r;return n(["自定义导航栏"])},edit_pinned:r=>{const{normalize:n}=r;return n(["编辑固定的项目"])},mobile_sidebar:r=>{const{normalize:n}=r;return n(["切换移动设备侧栏"])},search_close:r=>{const{normalize:n}=r;return n(["关闭搜索栏"])}},notifications:{broken_favorite:r=>{const{normalize:n}=r;return n(["未知的状态,正在搜索中…"])},favorited_you:r=>{const{normalize:n}=r;return n(["喜欢了你的状态"])},followed_you:r=>{const{normalize:n}=r;return n(["关注了你"])},load_older:r=>{const{normalize:n}=r;return n(["加载更早的通知"])},notifications:r=>{const{normalize:n}=r;return n(["通知"])},read:r=>{const{normalize:n}=r;return n(["已阅!"])},repeated_you:r=>{const{normalize:n}=r;return n(["转发了你的状态"])},no_more_notifications:r=>{const{normalize:n}=r;return n(["没有更多的通知"])},reacted_with:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["作出了 ",e(t(0))," 的反应"])},migrated_to:r=>{const{normalize:n}=r;return n(["迁移到了"])},follow_request:r=>{const{normalize:n}=r;return n(["想要关注你"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["取得通知时发生错误:",e(t(0))])},poll_ended:r=>{const{normalize:n}=r;return n(["投票结束了"])},submitted_report:r=>{const{normalize:n}=r;return n(["提交举报"])}},polls:{add_poll:r=>{const{normalize:n}=r;return n(["增加投票"])},add_option:r=>{const{normalize:n}=r;return n(["增加选项"])},option:r=>{const{normalize:n}=r;return n(["选项"])},votes:r=>{const{normalize:n}=r;return n(["投票"])},vote:r=>{const{normalize:n}=r;return n(["投票"])},type:r=>{const{normalize:n}=r;return n(["投票类型"])},single_choice:r=>{const{normalize:n}=r;return n(["单选"])},multiple_choices:r=>{const{normalize:n}=r;return n(["多选"])},expiry:r=>{const{normalize:n}=r;return n(["投票期限"])},expires_in:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["投票于 ",e(t(0))," 后结束"])},expired:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["投票 ",e(t(0))," 前已结束"])},not_enough_options:r=>{const{normalize:n}=r;return n(["投票的选项太少"])},votes_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 票"]),n([e(t("count"))," 票"])])},people_voted_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 人已投票"]),n([e(t("count"))," 人已投票"])])}},stickers:{add_sticker:r=>{const{normalize:n}=r;return n(["添加贴纸"])}},interactions:{favs_repeats:r=>{const{normalize:n}=r;return n(["转发和喜欢"])},follows:r=>{const{normalize:n}=r;return n(["新的关注者"])},load_older:r=>{const{normalize:n}=r;return n(["加载更早的互动"])},moves:r=>{const{normalize:n}=r;return n(["用户迁移"])},reports:r=>{const{normalize:n}=r;return n(["举报"])},emoji_reactions:r=>{const{normalize:n}=r;return n(["表情回应"])}},post_status:{new_status:r=>{const{normalize:n}=r;return n(["发布新状态"])},account_not_locked_warning:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["你的帐号没有 ",e(t(0)),"。任何人都可以关注你并浏览你的上锁内容。"])},account_not_locked_warning_link:r=>{const{normalize:n}=r;return n(["上锁"])},attachments_sensitive:r=>{const{normalize:n}=r;return n(["标记附件为敏感内容"])},content_type:{"text/plain":r=>{const{normalize:n}=r;return n(["纯文本"])},"text/html":r=>{const{normalize:n}=r;return n(["HTML"])},"text/markdown":r=>{const{normalize:n}=r;return n(["Markdown"])},"text/bbcode":r=>{const{normalize:n}=r;return n(["BBCode"])}},content_warning:r=>{const{normalize:n}=r;return n(["主题(可选)"])},default:r=>{const{normalize:n}=r;return n(["刚刚抵达上海。"])},direct_warning_to_all:r=>{const{normalize:n}=r;return n(["本条内容只有被提及的用户能够看到。"])},direct_warning_to_first_only:r=>{const{normalize:n}=r;return n(["本条内容只有被在消息开始处提及的用户能够看到。"])},posting:r=>{const{normalize:n}=r;return n(["发送中"])},scope_notice:{public:r=>{const{normalize:n}=r;return n(["本条内容可以被所有人看到"])},private:r=>{const{normalize:n}=r;return n(["关注你的人才能看到本条内容"])},unlisted:r=>{const{normalize:n}=r;return n(["本条内容既不在公共时间线,也不会在所有已知网络上可见"])}},scope:{direct:r=>{const{normalize:n}=r;return n(["私信 - 只发送给被提及的用户"])},private:r=>{const{normalize:n}=r;return n(["仅关注者 - 只有关注了你的人能看到"])},public:r=>{const{normalize:n}=r;return n(["公共 - 发送到公共时间轴"])},unlisted:r=>{const{normalize:n}=r;return n(["不公开 - 不会发送到公共时间轴"])}},preview_empty:r=>{const{normalize:n}=r;return n(["空的"])},preview:r=>{const{normalize:n}=r;return n(["预览"])},media_description:r=>{const{normalize:n}=r;return n(["媒体描述"])},media_description_error:r=>{const{normalize:n}=r;return n(["更新媒体失败,请重试"])},empty_status_error:r=>{const{normalize:n}=r;return n(["不能发布没有内容、没有附件的发文"])},post:r=>{const{normalize:n}=r;return n(["发送"])},edit_remote_warning:r=>{const{normalize:n}=r;return n(["其它远程实例可能不支持编辑并且无法接收您的帖子的最新版本。"])},edit_unsupported_warning:r=>{const{normalize:n}=r;return n(["Pleroma 不支持对提及或投票进行编辑。"])},edit_status:r=>{const{normalize:n}=r;return n(["编辑状态"])},content_type_selection:r=>{const{normalize:n}=r;return n(["发帖格式"])},scope_notice_dismiss:r=>{const{normalize:n}=r;return n(["关闭此提示"])}},registration:{bio:r=>{const{normalize:n}=r;return n(["简介"])},email:r=>{const{normalize:n}=r;return n(["电子邮箱"])},fullname:r=>{const{normalize:n}=r;return n(["显示名称"])},password_confirm:r=>{const{normalize:n}=r;return n(["确认密码"])},registration:r=>{const{normalize:n}=r;return n(["注册"])},token:r=>{const{normalize:n}=r;return n(["邀请码"])},captcha:r=>{const{normalize:n}=r;return n(["CAPTCHA"])},new_captcha:r=>{const{normalize:n}=r;return n(["点击图片获取新的验证码"])},username_placeholder:r=>{const{normalize:n}=r;return n(["例如:lain"])},fullname_placeholder:r=>{const{normalize:n}=r;return n(["例如:岩仓玲音"])},bio_placeholder:r=>{const{normalize:n}=r;return n(["例如:\n你好,我是玲音。\n我是一个住在日本郊区的动画少女。你可能在 Wired 见过我。"])},validations:{username_required:r=>{const{normalize:n}=r;return n(["不能留空"])},fullname_required:r=>{const{normalize:n}=r;return n(["不能留空"])},email_required:r=>{const{normalize:n}=r;return n(["不能留空"])},password_required:r=>{const{normalize:n}=r;return n(["不能留空"])},password_confirmation_required:r=>{const{normalize:n}=r;return n(["不能留空"])},password_confirmation_match:r=>{const{normalize:n}=r;return n(["密码不一致"])},birthday_required:r=>{const{normalize:n}=r;return n(["不能为空"])},birthday_min_age:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["必须在 ",e(t("date"))," 或之前"])}},reason_placeholder:r=>{const{normalize:n}=r;return n(["此实例的注册需要手动批准。\n请让管理员知道您为什么想要注册。"])},reason:r=>{const{normalize:n}=r;return n(["注册理由"])},register:r=>{const{normalize:n}=r;return n(["注册"])},email_language:r=>{const{normalize:n}=r;return n(["你想从服务器收到什么语言的邮件?"])},bio_optional:r=>{const{normalize:n}=r;return n(["介绍(可选)"])},email_optional:r=>{const{normalize:n}=r;return n(["电子邮件(可选)"])},birthday:r=>{const{normalize:n}=r;return n(["生日:"])},birthday_optional:r=>{const{normalize:n}=r;return n(["生日(可选):"])}},selectable_list:{select_all:r=>{const{normalize:n}=r;return n(["选择全部"])}},settings:{app_name:r=>{const{normalize:n}=r;return n(["App 名称"])},security:r=>{const{normalize:n}=r;return n(["安全"])},enter_current_password_to_confirm:r=>{const{normalize:n}=r;return n(["输入您当前的密码来确认您的身份"])},mfa:{otp:r=>{const{normalize:n}=r;return n(["OTP"])},setup_otp:r=>{const{normalize:n}=r;return n(["设置 OTP"])},wait_pre_setup_otp:r=>{const{normalize:n}=r;return n(["预设 OTP"])},confirm_and_enable:r=>{const{normalize:n}=r;return n(["确认并启用 OTP"])},title:r=>{const{normalize:n}=r;return n(["双因素验证"])},generate_new_recovery_codes:r=>{const{normalize:n}=r;return n(["生成新的恢复码"])},warning_of_generate_new_codes:r=>{const{normalize:n}=r;return n(["当您生成新的恢复码时,您旧的恢复码将会失效。"])},recovery_codes:r=>{const{normalize:n}=r;return n(["恢复码。"])},waiting_a_recovery_codes:r=>{const{normalize:n}=r;return n(["正在接收备份码…"])},recovery_codes_warning:r=>{const{normalize:n}=r;return n(["抄写这些号码,或者将其保存在安全的地方。这些号码不会再次显示。如果您无法访问您的 2FA app,也丢失了您的恢复码,您就再也无法登录您的账号了。"])},authentication_methods:r=>{const{normalize:n}=r;return n(["身份验证方法"])},scan:{title:r=>{const{normalize:n}=r;return n(["扫一下"])},desc:r=>{const{normalize:n}=r;return n(["使用您的双因素验证 app,扫描这个二维码,或者输入这些文字密钥:"])},secret_code:r=>{const{normalize:n}=r;return n(["密钥"])}},verify:{desc:r=>{const{normalize:n}=r;return n(["要启用双因素验证,请输入您的双因素验证 app 里的数字:"])}}},attachmentRadius:r=>{const{normalize:n}=r;return n(["附件"])},attachments:r=>{const{normalize:n}=r;return n(["附件"])},avatar:r=>{const{normalize:n}=r;return n(["头像"])},avatarAltRadius:r=>{const{normalize:n}=r;return n(["头像(通知)"])},avatarRadius:r=>{const{normalize:n}=r;return n(["头像"])},background:r=>{const{normalize:n}=r;return n(["背景"])},bio:r=>{const{normalize:n}=r;return n(["简介"])},block_export:r=>{const{normalize:n}=r;return n(["屏蔽名单导出"])},block_export_button:r=>{const{normalize:n}=r;return n(["导出你的屏蔽名单到一个 csv 文件"])},block_import:r=>{const{normalize:n}=r;return n(["屏蔽名单导入"])},block_import_error:r=>{const{normalize:n}=r;return n(["导入屏蔽名单出错"])},blocks_imported:r=>{const{normalize:n}=r;return n(["屏蔽名单导入成功!需要一点时间来处理。"])},blocks_tab:r=>{const{normalize:n}=r;return n(["屏蔽"])},btnRadius:r=>{const{normalize:n}=r;return n(["按钮"])},cBlue:r=>{const{normalize:n}=r;return n(["蓝色(回复,关注)"])},cGreen:r=>{const{normalize:n}=r;return n(["绿色(转发)"])},cOrange:r=>{const{normalize:n}=r;return n(["橙色(喜欢)"])},cRed:r=>{const{normalize:n}=r;return n(["红色(取消)"])},change_password:r=>{const{normalize:n}=r;return n(["修改密码"])},change_password_error:r=>{const{normalize:n}=r;return n(["修改密码的时候出了点问题。"])},changed_password:r=>{const{normalize:n}=r;return n(["成功修改了密码!"])},collapse_subject:r=>{const{normalize:n}=r;return n(["折叠带主题的内容"])},composing:r=>{const{normalize:n}=r;return n(["写作"])},confirm_new_password:r=>{const{normalize:n}=r;return n(["确认新密码"])},current_avatar:r=>{const{normalize:n}=r;return n(["当前头像"])},current_password:r=>{const{normalize:n}=r;return n(["当前密码"])},current_profile_banner:r=>{const{normalize:n}=r;return n(["您当前的横幅图片"])},data_import_export_tab:r=>{const{normalize:n}=r;return n(["数据导入/导出"])},default_vis:r=>{const{normalize:n}=r;return n(["默认可见范围"])},delete_account:r=>{const{normalize:n}=r;return n(["删除账户"])},delete_account_description:r=>{const{normalize:n}=r;return n(["永久删除你的帐号和所有数据。"])},delete_account_error:r=>{const{normalize:n}=r;return n(["删除账户时发生错误,如果一直删除不了,请联系实例管理员。"])},delete_account_instructions:r=>{const{normalize:n}=r;return n(["在下面输入您的密码来确认删除账户。"])},avatar_size_instruction:r=>{const{normalize:n}=r;return n(["推荐的头像图片最小尺寸为 150x150 像素。"])},export_theme:r=>{const{normalize:n}=r;return n(["导出预置主题"])},filtering:r=>{const{normalize:n}=r;return n(["过滤器"])},filtering_explanation:r=>{const{normalize:n}=r;return n(["所有包含以下词汇的内容都会被隐藏,一行一个"])},follow_export:r=>{const{normalize:n}=r;return n(["导出关注"])},follow_export_button:r=>{const{normalize:n}=r;return n(["将关注导出成 csv 文件"])},follow_import:r=>{const{normalize:n}=r;return n(["导入关注"])},follow_import_error:r=>{const{normalize:n}=r;return n(["导入关注时错误"])},follows_imported:r=>{const{normalize:n}=r;return n(["关注已导入!尚需要一些时间来处理。"])},foreground:r=>{const{normalize:n}=r;return n(["前景"])},general:r=>{const{normalize:n}=r;return n(["通用"])},hide_attachments_in_convo:r=>{const{normalize:n}=r;return n(["在对话中隐藏附件"])},hide_attachments_in_tl:r=>{const{normalize:n}=r;return n(["在时间线上隐藏附件"])},hide_muted_posts:r=>{const{normalize:n}=r;return n(["不显示被隐藏的用户的帖子"])},max_thumbnails:r=>{const{normalize:n}=r;return n(["每个帖子最多能显示的缩略图数量"])},hide_isp:r=>{const{normalize:n}=r;return n(["隐藏实例独有的面板"])},preload_images:r=>{const{normalize:n}=r;return n(["预载图片"])},use_one_click_nsfw:r=>{const{normalize:n}=r;return n(["点击一次以打开工作场所不适宜(NSFW)的附件"])},hide_post_stats:r=>{const{normalize:n}=r;return n(["隐藏帖子的统计数据(例如:喜欢的次数)"])},hide_user_stats:r=>{const{normalize:n}=r;return n(["隐藏用户的统计数据(例如:关注者的数量)"])},hide_filtered_statuses:r=>{const{normalize:n}=r;return n(["隐藏过滤的状态"])},import_blocks_from_a_csv_file:r=>{const{normalize:n}=r;return n(["从 csv 文件中导入拉黑名单"])},import_followers_from_a_csv_file:r=>{const{normalize:n}=r;return n(["从 csv 文件中导入关注"])},import_theme:r=>{const{normalize:n}=r;return n(["导入预置主题"])},inputRadius:r=>{const{normalize:n}=r;return n(["输入框"])},checkboxRadius:r=>{const{normalize:n}=r;return n(["复选框"])},instance_default:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["(默认:",e(t("value")),")"])},instance_default_simple:r=>{const{normalize:n}=r;return n(["(默认)"])},interface:r=>{const{normalize:n}=r;return n(["界面"])},interfaceLanguage:r=>{const{normalize:n}=r;return n(["界面语言"])},invalid_theme_imported:r=>{const{normalize:n}=r;return n(["您所选择的主题文件不被 Pleroma 支持,因此主题未被修改。"])},limited_availability:r=>{const{normalize:n}=r;return n(["在您的浏览器中无法使用"])},links:r=>{const{normalize:n}=r;return n(["链接"])},lock_account_description:r=>{const{normalize:n}=r;return n(["您需要手动审核关注请求"])},loop_video:r=>{const{normalize:n}=r;return n(["循环视频"])},loop_video_silent_only:r=>{const{normalize:n}=r;return n(["只循环没有声音的视频(例如:Mastodon 里的“GIF”)"])},mutes_tab:r=>{const{normalize:n}=r;return n(["隐藏"])},play_videos_in_modal:r=>{const{normalize:n}=r;return n(["在弹出框内播放视频"])},use_contain_fit:r=>{const{normalize:n}=r;return n(["生成缩略图时不要裁剪附件"])},name:r=>{const{normalize:n}=r;return n(["名字"])},name_bio:r=>{const{normalize:n}=r;return n(["名字及简介"])},new_password:r=>{const{normalize:n}=r;return n(["新密码"])},notification_visibility:r=>{const{normalize:n}=r;return n(["要显示的通知类型"])},notification_visibility_follows:r=>{const{normalize:n}=r;return n(["关注"])},notification_visibility_likes:r=>{const{normalize:n}=r;return n(["喜欢"])},notification_visibility_mentions:r=>{const{normalize:n}=r;return n(["提及"])},notification_visibility_repeats:r=>{const{normalize:n}=r;return n(["转发"])},no_rich_text_description:r=>{const{normalize:n}=r;return n(["不显示富文本格式"])},no_blocks:r=>{const{normalize:n}=r;return n(["没有屏蔽"])},no_mutes:r=>{const{normalize:n}=r;return n(["没有隐藏"])},hide_follows_description:r=>{const{normalize:n}=r;return n(["不要显示我所关注的人"])},hide_followers_description:r=>{const{normalize:n}=r;return n(["不要显示关注我的人"])},show_admin_badge:r=>{const{normalize:n}=r;return n(["在我的个人资料中显示“管理员”徽章"])},show_moderator_badge:r=>{const{normalize:n}=r;return n(["在我的个人资料中显示“监察员”徽章"])},nsfw_clickthrough:r=>{const{normalize:n}=r;return n(["将不和谐附件和链接预览隐藏,点击才会显示"])},oauth_tokens:r=>{const{normalize:n}=r;return n(["OAuth令牌"])},token:r=>{const{normalize:n}=r;return n(["令牌"])},refresh_token:r=>{const{normalize:n}=r;return n(["刷新令牌"])},valid_until:r=>{const{normalize:n}=r;return n(["有效期至"])},revoke_token:r=>{const{normalize:n}=r;return n(["撤消"])},panelRadius:r=>{const{normalize:n}=r;return n(["面板"])},pause_on_unfocused:r=>{const{normalize:n}=r;return n(["在离开页面时暂停时间线推送"])},presets:r=>{const{normalize:n}=r;return n(["预置"])},profile_background:r=>{const{normalize:n}=r;return n(["个人背景图"])},profile_banner:r=>{const{normalize:n}=r;return n(["横幅图片"])},profile_tab:r=>{const{normalize:n}=r;return n(["个人资料"])},radii_help:r=>{const{normalize:n}=r;return n(["设置界面边缘的圆角 (单位:像素)"])},replies_in_timeline:r=>{const{normalize:n}=r;return n(["时间线中的回复"])},reply_visibility_all:r=>{const{normalize:n}=r;return n(["显示所有回复"])},reply_visibility_following:r=>{const{normalize:n}=r;return n(["只显示发送给我的回复/发送给我关注的用户的回复"])},reply_visibility_self:r=>{const{normalize:n}=r;return n(["只显示发送给我的回复"])},autohide_floating_post_button:r=>{const{normalize:n}=r;return n(["自动隐藏新帖子的按钮(移动设备)"])},saving_err:r=>{const{normalize:n}=r;return n(["保存设置时发生错误"])},saving_ok:r=>{const{normalize:n}=r;return n(["设置已保存"])},search_user_to_block:r=>{const{normalize:n}=r;return n(["搜索你想屏蔽的用户"])},search_user_to_mute:r=>{const{normalize:n}=r;return n(["搜索你想要隐藏的用户"])},security_tab:r=>{const{normalize:n}=r;return n(["安全"])},scope_copy:r=>{const{normalize:n}=r;return n(["回复时复制可见范围(私信中永远会复制)"])},minimal_scopes_mode:r=>{const{normalize:n}=r;return n(["使发文可见范围的选项最少化"])},set_new_avatar:r=>{const{normalize:n}=r;return n(["设置新头像"])},set_new_profile_background:r=>{const{normalize:n}=r;return n(["设置新的个人资料背景"])},set_new_profile_banner:r=>{const{normalize:n}=r;return n(["设置新的横幅图片"])},settings:r=>{const{normalize:n}=r;return n(["设置"])},subject_input_always_show:r=>{const{normalize:n}=r;return n(["总是显示主题框"])},subject_line_behavior:r=>{const{normalize:n}=r;return n(["回复时复制主题"])},subject_line_email:r=>{const{normalize:n}=r;return n(['类似电子邮件: "re: 主题"'])},subject_line_mastodon:r=>{const{normalize:n}=r;return n(["类似 mastodon: 与原主题相同"])},subject_line_noop:r=>{const{normalize:n}=r;return n(["不要复制"])},post_status_content_type:r=>{const{normalize:n}=r;return n(["发文状态内容类型"])},stop_gifs:r=>{const{normalize:n}=r;return n(["鼠标悬停时播放GIF"])},streaming:r=>{const{normalize:n}=r;return n(["滚动到顶部时自动推送新内容"])},text:r=>{const{normalize:n}=r;return n(["文本"])},theme:r=>{const{normalize:n}=r;return n(["主题"])},theme_help:r=>{const{normalize:n}=r;return n(["使用十六进制代码(#rrggbb)来设置主题颜色。"])},theme_help_v2_1:r=>{const{normalize:n}=r;return n(["您也可以通过选中复选框来覆盖某些组件的颜色和透明度。使用“清除所有”按钮来清除所有覆盖设置。"])},theme_help_v2_2:r=>{const{normalize:n}=r;return n(["某些条目下的图标是背景或文本对比指示器,鼠标悬停可以获取详细信息。请记住,使用透明度来显示最差的情况。"])},tooltipRadius:r=>{const{normalize:n}=r;return n(["提醒"])},upload_a_photo:r=>{const{normalize:n}=r;return n(["上传照片"])},user_settings:r=>{const{normalize:n}=r;return n(["用户设置"])},values:{false:r=>{const{normalize:n}=r;return n(["否"])},true:r=>{const{normalize:n}=r;return n(["是"])}},notifications:r=>{const{normalize:n}=r;return n(["通知"])},notification_mutes:r=>{const{normalize:n}=r;return n(["要停止收到某个指定的用户的通知,请使用隐藏功能。"])},notification_blocks:r=>{const{normalize:n}=r;return n(["屏蔽一个用户会停止接收来自该用户的所有通知,并且会取消对该用户的关注。"])},enable_web_push_notifications:r=>{const{normalize:n}=r;return n(["启用 web 推送通知"])},style:{switcher:{keep_color:r=>{const{normalize:n}=r;return n(["保留颜色"])},keep_shadows:r=>{const{normalize:n}=r;return n(["保留阴影"])},keep_opacity:r=>{const{normalize:n}=r;return n(["保留透明度"])},keep_roundness:r=>{const{normalize:n}=r;return n(["保留圆角"])},keep_fonts:r=>{const{normalize:n}=r;return n(["保留字体"])},save_load_hint:r=>{const{normalize:n}=r;return n(['"保留" 选项在选择或加载主题时保留当前设置的选项,在导出主题时还会存储上述选项。当所有复选框未设置时,导出主题将保存所有内容。'])},reset:r=>{const{normalize:n}=r;return n(["重置"])},clear_all:r=>{const{normalize:n}=r;return n(["清除全部"])},clear_opacity:r=>{const{normalize:n}=r;return n(["清除透明度"])},load_theme:r=>{const{normalize:n}=r;return n(["加载主题"])},help:{upgraded_from_v2:r=>{const{normalize:n}=r;return n(["PleromaFE 已升级,主题会与您记忆中的不太一样。"])},older_version_imported:r=>{const{normalize:n}=r;return n(["您导入的文件来自旧版本的 FE。"])},future_version_imported:r=>{const{normalize:n}=r;return n(["您导入的文件来自更高版本的 FE。"])},v2_imported:r=>{const{normalize:n}=r;return n(["您导入的文件是旧版 FE 的。我们尽可能保持兼容性,但还是可能出现不一致的情况。"])},snapshot_source_mismatch:r=>{const{normalize:n}=r;return n(["版本冲突:很有可能是 FE 版本回滚后再次升级了,如果您使用旧版本的 FE 更改了主题那么您可能需要使用旧版本,否则请使用新版本。"])},migration_napshot_gone:r=>{const{normalize:n}=r;return n(["不知出于何种原因,主题快照缺失了,一些地方可能与您印象中的不符。"])},migration_snapshot_ok:r=>{const{normalize:n}=r;return n(["为保万无一失,加载了主题快照。您可以试着加载主题数据。"])},fe_downgraded:r=>{const{normalize:n}=r;return n(["PleromaFE 的版本回滚了。"])},fe_upgraded:r=>{const{normalize:n}=r;return n(["PleromaFE 的主题引擎随着版本更新升级了。"])},snapshot_missing:r=>{const{normalize:n}=r;return n(["在文件中没有主题快照,所以网站外观可能会与原来预想的不同。"])},snapshot_present:r=>{const{normalize:n}=r;return n(["主题快照已加载,因此所有的值均被覆盖。您可以改为加载主题的实际数据。"])}},use_source:r=>{const{normalize:n}=r;return n(["新版本"])},use_snapshot:r=>{const{normalize:n}=r;return n(["老版本"])},keep_as_is:r=>{const{normalize:n}=r;return n(["保持原状"])}},common:{color:r=>{const{normalize:n}=r;return n(["颜色"])},opacity:r=>{const{normalize:n}=r;return n(["透明度"])},contrast:{hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["对比度是 ",e(t("ratio")),", 它 ",e(t("level"))," ",e(t("context"))])},level:{aa:r=>{const{normalize:n}=r;return n(["符合 AA 等级准则(最低)"])},aaa:r=>{const{normalize:n}=r;return n(["符合 AAA 等级准则(推荐)"])},bad:r=>{const{normalize:n}=r;return n(["不符合任何辅助功能指南"])}},context:{"18pt":r=>{const{normalize:n}=r;return n(["大字文本 (18pt+)"])},text:r=>{const{normalize:n}=r;return n(["文本"])}}}},common_colors:{_tab_label:r=>{const{normalize:n}=r;return n(["常规"])},main:r=>{const{normalize:n}=r;return n(["常用颜色"])},foreground_hint:r=>{const{normalize:n}=r;return n(["点击”高级“ 标签进行细致的控制"])},rgbo:r=>{const{normalize:n}=r;return n(["图标,强调,徽章"])}},advanced_colors:{_tab_label:r=>{const{normalize:n}=r;return n(["高级"])},alert:r=>{const{normalize:n}=r;return n(["提醒或警告背景色"])},alert_error:r=>{const{normalize:n}=r;return n(["错误"])},badge:r=>{const{normalize:n}=r;return n(["徽章背景"])},badge_notification:r=>{const{normalize:n}=r;return n(["通知"])},panel_header:r=>{const{normalize:n}=r;return n(["面板标题"])},top_bar:r=>{const{normalize:n}=r;return n(["顶栏"])},borders:r=>{const{normalize:n}=r;return n(["边框"])},buttons:r=>{const{normalize:n}=r;return n(["按钮"])},inputs:r=>{const{normalize:n}=r;return n(["输入框"])},faint_text:r=>{const{normalize:n}=r;return n(["灰度文字"])},chat:{border:r=>{const{normalize:n}=r;return n(["边框"])},outgoing:r=>{const{normalize:n}=r;return n(["发出的"])},incoming:r=>{const{normalize:n}=r;return n(["收到的"])}},disabled:r=>{const{normalize:n}=r;return n(["禁用的"])},pressed:r=>{const{normalize:n}=r;return n(["压下的"])},highlight:r=>{const{normalize:n}=r;return n(["强调元素"])},selectedMenu:r=>{const{normalize:n}=r;return n(["选中的菜单项"])},selectedPost:r=>{const{normalize:n}=r;return n(["选中的发布内容"])},icons:r=>{const{normalize:n}=r;return n(["图标"])},poll:r=>{const{normalize:n}=r;return n(["投票统计图"])},popover:r=>{const{normalize:n}=r;return n(["提示框,菜单,弹出框"])},post:r=>{const{normalize:n}=r;return n(["发布内容/用户简介"])},alert_neutral:r=>{const{normalize:n}=r;return n(["中性"])},alert_warning:r=>{const{normalize:n}=r;return n(["警告"])},tabs:r=>{const{normalize:n}=r;return n(["标签页"])},underlay:r=>{const{normalize:n}=r;return n(["底衬"])},toggled:r=>{const{normalize:n}=r;return n(["按下的"])},wallpaper:r=>{const{normalize:n}=r;return n(["壁纸"])}},radii:{_tab_label:r=>{const{normalize:n}=r;return n(["圆角"])}},shadows:{_tab_label:r=>{const{normalize:n}=r;return n(["阴影和照明"])},component:r=>{const{normalize:n}=r;return n(["组件"])},override:r=>{const{normalize:n}=r;return n(["覆盖"])},shadow_id:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["阴影 #",e(t("value"))])},blur:r=>{const{normalize:n}=r;return n(["模糊"])},spread:r=>{const{normalize:n}=r;return n(["扩散"])},inset:r=>{const{normalize:n}=r;return n(["内阴影"])},hint:r=>{const{normalize:n}=r;return n(["对于阴影你还可以使用 --variable 作为颜色值来使用 CSS3 变量。请注意,这种情况下,透明设置将不起作用。"])},filter_hint:{always_drop_shadow:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["警告,此阴影设置会总是使用 ",e(t(0))," ,如果浏览器支持的话。"])},drop_shadow_syntax:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 不支持参数 ",e(t(1))," 和关键词 ",e(t(2))," 。"])},avatar_inset:r=>{const{normalize:n}=r;return n(["请注意组合两个内部和非内部的阴影到头像上,在透明头像上可能会有意料之外的效果。"])},spread_zero:r=>{const{normalize:n}=r;return n(["阴影的扩散 > 0 会同设置成零一样"])},inset_classic:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["内阴影会使用 ",e(t(0))])}},components:{panel:r=>{const{normalize:n}=r;return n(["面板"])},panelHeader:r=>{const{normalize:n}=r;return n(["面板标题"])},topBar:r=>{const{normalize:n}=r;return n(["顶栏"])},avatar:r=>{const{normalize:n}=r;return n(["用户头像(在个人资料栏)"])},avatarStatus:r=>{const{normalize:n}=r;return n(["用户头像(在帖子显示栏)"])},popup:r=>{const{normalize:n}=r;return n(["弹窗与工具提示"])},button:r=>{const{normalize:n}=r;return n(["按钮"])},buttonHover:r=>{const{normalize:n}=r;return n(["按钮(悬停)"])},buttonPressed:r=>{const{normalize:n}=r;return n(["按钮(压下)"])},buttonPressedHover:r=>{const{normalize:n}=r;return n(["按钮(压下和悬停)"])},input:r=>{const{normalize:n}=r;return n(["输入框"])}},hintV3:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["对于阴影,您还可以使用 ",e(t(0))," 表示法来使用其它颜色插槽。"])}},fonts:{_tab_label:r=>{const{normalize:n}=r;return n(["字体"])},help:r=>{const{normalize:n}=r;return n(["为用户界面的元素选择字体。若选择 “自选”,您必须输入与系统显示完全一致的字体名称。"])},components:{interface:r=>{const{normalize:n}=r;return n(["界面"])},input:r=>{const{normalize:n}=r;return n(["输入框"])},post:r=>{const{normalize:n}=r;return n(["发帖文字"])},postCode:r=>{const{normalize:n}=r;return n(["帖子中使用等间距文字(富文本)"])}},family:r=>{const{normalize:n}=r;return n(["字体名称"])},size:r=>{const{normalize:n}=r;return n(["大小 (in px)"])},weight:r=>{const{normalize:n}=r;return n(["字重 (粗体)"])},custom:r=>{const{normalize:n}=r;return n(["自选"])}},preview:{header:r=>{const{normalize:n}=r;return n(["预览"])},content:r=>{const{normalize:n}=r;return n(["内容"])},error:r=>{const{normalize:n}=r;return n(["错误示例"])},button:r=>{const{normalize:n}=r;return n(["按钮"])},text:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["有堆 ",e(t(0))," 和 ",e(t(1))])},mono:r=>{const{normalize:n}=r;return n(["monospace 内容"])},input:r=>{const{normalize:n}=r;return n(["刚刚抵达上海。"])},faint_link:r=>{const{normalize:n}=r;return n(["帮助手册"])},fine_print:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["阅读我们的 ",e(t(0))," ,然而什么也学不到!"])},header_faint:r=>{const{normalize:n}=r;return n(["这很正常"])},checkbox:r=>{const{normalize:n}=r;return n(["我已经浏览了条款及细则"])},link:r=>{const{normalize:n}=r;return n(["一个棒棒的小小链接"])}}},version:{title:r=>{const{normalize:n}=r;return n(["版本"])},backend_version:r=>{const{normalize:n}=r;return n(["后端版本"])},frontend_version:r=>{const{normalize:n}=r;return n(["前端版本"])}},notification_setting_filters:r=>{const{normalize:n}=r;return n(["过滤器"])},domain_mutes:r=>{const{normalize:n}=r;return n(["域名"])},changed_email:r=>{const{normalize:n}=r;return n(["邮箱修改成功!"])},change_email_error:r=>{const{normalize:n}=r;return n(["修改您的电子邮箱时发生错误。"])},change_email:r=>{const{normalize:n}=r;return n(["修改电子邮箱"])},allow_following_move:r=>{const{normalize:n}=r;return n(["正在关注的账号迁移时自动重新关注"])},notification_setting_privacy_option:r=>{const{normalize:n}=r;return n(["在通知推送中隐藏发送者和内容"])},notification_setting_privacy:r=>{const{normalize:n}=r;return n(["隐私"])},hide_follows_count_description:r=>{const{normalize:n}=r;return n(["不显示关注数"])},notification_visibility_emoji_reactions:r=>{const{normalize:n}=r;return n(["互动"])},notification_visibility_moves:r=>{const{normalize:n}=r;return n(["用户迁移"])},new_email:r=>{const{normalize:n}=r;return n(["新邮箱"])},emoji_reactions_on_timeline:r=>{const{normalize:n}=r;return n(["在时间线上显示表情符号互动"])},notification_setting_hide_notification_contents:r=>{const{normalize:n}=r;return n(["隐藏推送通知中的发送者与内容信息"])},notification_setting_block_from_strangers:r=>{const{normalize:n}=r;return n(["屏蔽来自你没有关注的用户的通知"])},type_domains_to_mute:r=>{const{normalize:n}=r;return n(["搜索需要隐藏的域名"])},useStreamingApi:r=>{const{normalize:n}=r;return n(["实时接收帖子和通知"])},user_mutes:r=>{const{normalize:n}=r;return n(["用户"])},reset_background_confirm:r=>{const{normalize:n}=r;return n(["您确定要重置背景图吗?"])},reset_banner_confirm:r=>{const{normalize:n}=r;return n(["您确定要重置横幅图片吗?"])},reset_avatar_confirm:r=>{const{normalize:n}=r;return n(["您确定要重置头像吗?"])},reset_profile_banner:r=>{const{normalize:n}=r;return n(["重置横幅图片"])},reset_profile_background:r=>{const{normalize:n}=r;return n(["重置个人背景图"])},reset_avatar:r=>{const{normalize:n}=r;return n(["重置头像"])},hide_followers_count_description:r=>{const{normalize:n}=r;return n(["不显示关注者数量"])},profile_fields:{value:r=>{const{normalize:n}=r;return n(["内容"])},name:r=>{const{normalize:n}=r;return n(["标签"])},add_field:r=>{const{normalize:n}=r;return n(["添加字段"])},label:r=>{const{normalize:n}=r;return n(["个人资料元数据"])}},accent:r=>{const{normalize:n}=r;return n(["强调色"])},pad_emoji:r=>{const{normalize:n}=r;return n(["从表情符号选择器插入表情符号时,在表情两侧插入空格"])},discoverable:r=>{const{normalize:n}=r;return n(["允许通过搜索检索等服务找到此账号"])},mutes_and_blocks:r=>{const{normalize:n}=r;return n(["隐藏与屏蔽"])},bot:r=>{const{normalize:n}=r;return n(["这是一个机器人账号"])},fun:r=>{const{normalize:n}=r;return n(["趣味"])},useStreamingApiWarning:r=>{const{normalize:n}=r;return n(["(不推荐使用,试验性,已知会跳过一些帖子)"])},chatMessageRadius:r=>{const{normalize:n}=r;return n(["聊天消息"])},greentext:r=>{const{normalize:n}=r;return n(["Meme 箭头"])},virtual_scrolling:r=>{const{normalize:n}=r;return n(["优化时间线渲染"])},import_mutes_from_a_csv_file:r=>{const{normalize:n}=r;return n(["从 csv 文件导入隐藏名单"])},mutes_imported:r=>{const{normalize:n}=r;return n(["隐藏名单导入成功!处理它们将需要一段时间。"])},mute_import_error:r=>{const{normalize:n}=r;return n(["导入隐藏名单出错"])},mute_import:r=>{const{normalize:n}=r;return n(["隐藏名单导入"])},mute_export_button:r=>{const{normalize:n}=r;return n(["导出你的隐藏名单到一个 csv 文件"])},mute_export:r=>{const{normalize:n}=r;return n(["隐藏名单导出"])},hide_wallpaper:r=>{const{normalize:n}=r;return n(["隐藏实例壁纸"])},setting_changed:r=>{const{normalize:n}=r;return n(["与默认设置不同"])},more_settings:r=>{const{normalize:n}=r;return n(["更多设置"])},sensitive_by_default:r=>{const{normalize:n}=r;return n(["默认标记发文为敏感内容"])},reply_visibility_self_short:r=>{const{normalize:n}=r;return n(["只显示对我本人的回复"])},reply_visibility_following_short:r=>{const{normalize:n}=r;return n(["显示对我关注的人的回复"])},hide_all_muted_posts:r=>{const{normalize:n}=r;return n(["不显示已隐藏的发文"])},hide_media_previews:r=>{const{normalize:n}=r;return n(["隐藏媒体预览"])},word_filter:r=>{const{normalize:n}=r;return n(["词语过滤"])},save:r=>{const{normalize:n}=r;return n(["保存更改"])},file_export_import:{errors:{file_slightly_new:r=>{const{normalize:n}=r;return n(["文件的小版本不同,有些设置可能无法加载"])},file_too_old:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["不兼容的主版本:",e(t("fileMajor")),",文件版本过旧,不受支持(最小设置版本 ",e(t("feMajor")),")"])},file_too_new:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["不兼容的主版本:",e(t("fileMajor")),",此 PleromaFE(设置版本 ",e(t("feMajor")),")过旧,无法处理"])},invalid_file:r=>{const{normalize:n}=r;return n(["所选文件不是受支持的 Pleroma 设置备份。没有进行任何更改。"])}},restore_settings:r=>{const{normalize:n}=r;return n(["从文件恢复设置"])},backup_settings_theme:r=>{const{normalize:n}=r;return n(["备份设置和主题到文件"])},backup_settings:r=>{const{normalize:n}=r;return n(["备份设置到文件"])},backup_restore:r=>{const{normalize:n}=r;return n(["设置备份"])}},right_sidebar:r=>{const{normalize:n}=r;return n(["反转分栏的顺序"])},hide_shoutbox:r=>{const{normalize:n}=r;return n(["隐藏实例留言板"])},expert_mode:r=>{const{normalize:n}=r;return n(["显示高级"])},download_backup:r=>{const{normalize:n}=r;return n(["下载"])},mention_links:r=>{const{normalize:n}=r;return n(["提及链接"])},account_backup:r=>{const{normalize:n}=r;return n(["账号备份"])},account_backup_table_head:r=>{const{normalize:n}=r;return n(["备份"])},remove_backup:r=>{const{normalize:n}=r;return n(["移除"])},list_backups_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["获取备份列表出错:",e(t("error"))])},add_backup:r=>{const{normalize:n}=r;return n(["创建一个新备份"])},added_backup:r=>{const{normalize:n}=r;return n(["创建了一个新备份。"])},account_alias:r=>{const{normalize:n}=r;return n(["账号别名"])},account_alias_table_head:r=>{const{normalize:n}=r;return n(["别名"])},list_aliases_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["获取别名时出错:",e(t("error"))])},hide_list_aliases_error_action:r=>{const{normalize:n}=r;return n(["关闭"])},remove_alias:r=>{const{normalize:n}=r;return n(["移除这个别名"])},new_alias_target:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["添加一个新别名(例如 ",e(t("example")),")"])},added_alias:r=>{const{normalize:n}=r;return n(["别名添加好了。"])},move_account:r=>{const{normalize:n}=r;return n(["移动账号"])},move_account_target:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["目标账号(例如 ",e(t("example")),")"])},moved_account:r=>{const{normalize:n}=r;return n(["账号移动好了。"])},move_account_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["移动账号时出错:",e(t("error"))])},setting_server_side:r=>{const{normalize:n}=r;return n(["这个设置是捆绑到你的个人资料的,能影响所有会话和客户端"])},post_look_feel:r=>{const{normalize:n}=r;return n(["文章的样子跟感受"])},email_language:r=>{const{normalize:n}=r;return n(["从服务器收邮件的语言"])},account_backup_description:r=>{const{normalize:n}=r;return n(["这个允许你下载一份账号信息和文章的存档,但是现在还不能导入到 Pleroma 账号里。"])},backup_not_ready:r=>{const{normalize:n}=r;return n(["备份还没准备好。"])},add_backup_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["添加新备份时出错:",e(t("error"))])},add_alias_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["添加别名时出错:",e(t("error"))])},move_account_notes:r=>{const{normalize:n}=r;return n(["如果你想把账号移动到别的地方,你必须去目标账号,然后加一个指向这里的别名。"])},wordfilter:r=>{const{normalize:n}=r;return n(["词语过滤器"])},user_profiles:r=>{const{normalize:n}=r;return n(["用户资料"])},third_column_mode_notifications:r=>{const{normalize:n}=r;return n(["通知栏"])},backup_running:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["此备份正在进行,已处理 ",e(t("number"))," 条记录。"]),n(["此备份正在进行,已处理 ",e(t("number"))," 条记录。"])])},lists_navigation:r=>{const{normalize:n}=r;return n(["在导航中显示列表"])},word_filter_and_more:r=>{const{normalize:n}=r;return n(["词过滤器及其它..."])},backup_failed:r=>{const{normalize:n}=r;return n(["此备份已失败。"])},birthday:{label:r=>{const{normalize:n}=r;return n(["生日"])},show_birthday:r=>{const{normalize:n}=r;return n(["展示我的生日"])}},hide_favorites_description:r=>{const{normalize:n}=r;return n(["不显示我的喜欢列表(人们仍然会收到通知)"])},third_column_mode:r=>{const{normalize:n}=r;return n(["当有足够的空间时,显示第三栏包含"])},third_column_mode_postform:r=>{const{normalize:n}=r;return n(["主要的发文形式和导航"])},columns:r=>{const{normalize:n}=r;return n(["分栏"])},user_popover_avatar_overlay:r=>{const{normalize:n}=r;return n(["在用户头像上显示用户弹出窗口"])},navbar_column_stretch:r=>{const{normalize:n}=r;return n(["延伸导航栏至分栏宽度"])},posts:r=>{const{normalize:n}=r;return n(["帖子"])},conversation_display_linear_quick:r=>{const{normalize:n}=r;return n(["线性视图"])},conversation_other_replies_button:r=>{const{normalize:n}=r;return n(["显示 “其它回复” 按钮"])},confirm_dialogs_delete:r=>{const{normalize:n}=r;return n(["删除状态"])},confirm_dialogs_mute:r=>{const{normalize:n}=r;return n(["隐藏用户"])},column_sizes:r=>{const{normalize:n}=r;return n(["分栏大小"])},column_sizes_sidebar:r=>{const{normalize:n}=r;return n(["侧栏"])},column_sizes_content:r=>{const{normalize:n}=r;return n(["內容"])},column_sizes_notifs:r=>{const{normalize:n}=r;return n(["通知"])},conversation_other_replies_button_below:r=>{const{normalize:n}=r;return n(["在状态下方"])},conversation_other_replies_button_inside:r=>{const{normalize:n}=r;return n(["在状态中"])},auto_update:r=>{const{normalize:n}=r;return n(["自动显示新的帖子"])},use_websockets:r=>{const{normalize:n}=r;return n(["使用 websockets(实时更新)"])},max_depth_in_thread:r=>{const{normalize:n}=r;return n(["默认显示同主题帖子中的最大层数"])},hide_wordfiltered_statuses:r=>{const{normalize:n}=r;return n(["隐藏经过词语过滤的状态"])},hide_muted_threads:r=>{const{normalize:n}=r;return n(["不显示已隐藏的同主题帖子"])},notification_visibility_polls:r=>{const{normalize:n}=r;return n(["你所投的投票的结束于"])},tree_advanced:r=>{const{normalize:n}=r;return n(["允许在树状视图中进行更灵活的导航"])},tree_fade_ancestors:r=>{const{normalize:n}=r;return n(["以模糊的文字显示当前状态的原型"])},conversation_display_linear:r=>{const{normalize:n}=r;return n(["线性样式"])},mention_link_fade_domain:r=>{const{normalize:n}=r;return n(["淡化域名(例如:","@","example.org 中的 ","@","foo","@","example.org)"])},mention_link_bolden_you:r=>{const{normalize:n}=r;return n(["当你被提及时突出显示提及你"])},user_popover_avatar_action:r=>{const{normalize:n}=r;return n(["弹出式头像点击动作"])},user_popover_avatar_action_zoom:r=>{const{normalize:n}=r;return n(["缩放头像"])},user_popover_avatar_action_close:r=>{const{normalize:n}=r;return n(["关闭弹出窗口"])},show_yous:r=>{const{normalize:n}=r;return n(["显示 (You)s"])},add_language:r=>{const{normalize:n}=r;return n(["添加备用语言"])},remove_language:r=>{const{normalize:n}=r;return n(["移除"])},primary_language:r=>{const{normalize:n}=r;return n(["主要语言:"])},fallback_language:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["备用语言 ",e(t("index")),":"])},account_privacy:r=>{const{normalize:n}=r;return n(["隐私"])},conversation_display:r=>{const{normalize:n}=r;return n(["对话显示样式"])},conversation_display_tree:r=>{const{normalize:n}=r;return n(["树状样式"])},conversation_display_tree_quick:r=>{const{normalize:n}=r;return n(["树状视图"])},disable_sticky_headers:r=>{const{normalize:n}=r;return n(["不要把分栏的顶栏固定在屏幕的顶部"])},confirm_dialogs:r=>{const{normalize:n}=r;return n(["请求确认于"])},confirm_dialogs_logout:r=>{const{normalize:n}=r;return n(["登出"])},confirm_dialogs_deny_follow:r=>{const{normalize:n}=r;return n(["拒绝关注请求"])},confirm_dialogs_approve_follow:r=>{const{normalize:n}=r;return n(["批准关注请求"])},confirm_dialogs_block:r=>{const{normalize:n}=r;return n(["屏蔽用户"])},confirm_dialogs_unfollow:r=>{const{normalize:n}=r;return n(["取消关注用户"])},confirm_dialogs_repeat:r=>{const{normalize:n}=r;return n(["转发状态"])},confirm_dialogs_remove_follower:r=>{const{normalize:n}=r;return n(["移除关注者"])},mute_bot_posts:r=>{const{normalize:n}=r;return n(["隐藏机器人的帖子"])},hide_bot_indication:r=>{const{normalize:n}=r;return n(["隐藏帖子中的机器人提示"])},always_show_post_button:r=>{const{normalize:n}=r;return n(["始终显示浮动的新帖子按钮"])},show_scrollbars:r=>{const{normalize:n}=r;return n(["显示侧栏的滚动条"])},third_column_mode_none:r=>{const{normalize:n}=r;return n(["完全不显示第三栏"])},use_at_icon:r=>{const{normalize:n}=r;return n(["将 ","@"," 符号显示为图标而不是文本"])},mention_link_display:r=>{const{normalize:n}=r;return n(["显示提及链接"])},mention_link_display_short:r=>{const{normalize:n}=r;return n(["始终以简称的形式出现(例如:","@","foo)"])},mention_link_display_full_for_remote:r=>{const{normalize:n}=r;return n(["仅远程实例用户以全名的形式出现(例如:","@","foo","@","example.org)"])},mention_link_display_full:r=>{const{normalize:n}=r;return n(["始终以全名的形式出现(例如:","@","foo","@","example.org)"])},mention_link_use_tooltip:r=>{const{normalize:n}=r;return n(["点击提及链接时显示用户卡片"])},mention_link_show_avatar:r=>{const{normalize:n}=r;return n(["在链接旁边显示用户头像"])},mention_link_show_avatar_quick:r=>{const{normalize:n}=r;return n(["在提及内容旁边显示用户头像"])},user_popover_avatar_action_open:r=>{const{normalize:n}=r;return n(["打开个人资料"])}},time:{day:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])},days:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])},day_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"d"])},days_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"d"])},hour:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 小时"])},hours:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 小时"])},hour_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"h"])},hours_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"h"])},in_future:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["还有 ",e(t(0))])},in_past:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 之前"])},minute:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分钟"])},minutes:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分钟"])},minute_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"min"])},minutes_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"min"])},month:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},months:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},month_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"mo"])},months_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"mo"])},now:r=>{const{normalize:n}=r;return n(["刚刚"])},now_short:r=>{const{normalize:n}=r;return n(["刚刚"])},second:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},seconds:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},second_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"s"])},seconds_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"s"])},week:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 周"])},weeks:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 周"])},week_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"w"])},weeks_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"w"])},year:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},years:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},year_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"y"])},years_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"y"])},unit:{days_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])},hours:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 小时"])},hours_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 时"])},minutes:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分"])},minutes_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分"])},months:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 个月"])},months_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},seconds:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},seconds_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},weeks_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 周"])},years:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},years_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},weeks:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 周"])},days:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])}}},timeline:{collapse:r=>{const{normalize:n}=r;return n(["折叠"])},conversation:r=>{const{normalize:n}=r;return n(["对话"])},error_fetching:r=>{const{normalize:n}=r;return n(["获取更新时发生错误"])},load_older:r=>{const{normalize:n}=r;return n(["加载更早的状态"])},no_retweet_hint:r=>{const{normalize:n}=r;return n(["这条内容仅关注者可见,或者是私信,因此不能转发"])},repeated:r=>{const{normalize:n}=r;return n(["转发了"])},show_new:r=>{const{normalize:n}=r;return n(["显示新内容"])},up_to_date:r=>{const{normalize:n}=r;return n(["已是最新"])},no_more_statuses:r=>{const{normalize:n}=r;return n(["没有更多的状态"])},no_statuses:r=>{const{normalize:n}=r;return n(["没有状态更新"])},reload:r=>{const{normalize:n}=r;return n(["重新载入"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["取得时间轴时发生错误:",e(t(0))])},socket_broke:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["丢失实时连接:CloseEvent code ",e(t(0))])},socket_reconnected:r=>{const{normalize:n}=r;return n(["已建立实时连接"])},quick_view_settings:r=>{const{normalize:n}=r;return n(["快速视图设置"])},quick_filter_settings:r=>{const{normalize:n}=r;return n(["快速过滤设置"])}},status:{favorites:r=>{const{normalize:n}=r;return n(["喜欢"])},repeats:r=>{const{normalize:n}=r;return n(["转发"])},delete:r=>{const{normalize:n}=r;return n(["删除状态"])},pin:r=>{const{normalize:n}=r;return n(["在个人资料置顶"])},unpin:r=>{const{normalize:n}=r;return n(["取消在个人资料置顶"])},pinned:r=>{const{normalize:n}=r;return n(["置顶"])},delete_confirm:r=>{const{normalize:n}=r;return n(["您确定要删除这条状态吗?"])},reply_to:r=>{const{normalize:n}=r;return n(["回复"])},replies_list:r=>{const{normalize:n}=r;return n(["回复:"])},mute_conversation:r=>{const{normalize:n}=r;return n(["隐藏对话"])},unmute_conversation:r=>{const{normalize:n}=r;return n(["对话取消隐藏"])},hide_content:r=>{const{normalize:n}=r;return n(["隐藏内容"])},show_content:r=>{const{normalize:n}=r;return n(["显示内容"])},hide_full_subject:r=>{const{normalize:n}=r;return n(["隐藏此部分标题"])},show_full_subject:r=>{const{normalize:n}=r;return n(["显示全部标题"])},thread_muted:r=>{const{normalize:n}=r;return n(["同主题帖子已被隐藏"])},copy_link:r=>{const{normalize:n}=r;return n(["复制状态链接"])},status_unavailable:r=>{const{normalize:n}=r;return n(["状态不可取得"])},unbookmark:r=>{const{normalize:n}=r;return n(["取消书签"])},bookmark:r=>{const{normalize:n}=r;return n(["书签"])},thread_muted_and_words:r=>{const{normalize:n}=r;return n([",含有过滤词:"])},status_deleted:r=>{const{normalize:n}=r;return n(["该状态已被删除"])},nsfw:r=>{const{normalize:n}=r;return n(["NSFW"])},external_source:r=>{const{normalize:n}=r;return n(["外部来源"])},expand:r=>{const{normalize:n}=r;return n(["展开"])},you:r=>{const{normalize:n}=r;return n(["(你)"])},plus_more:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["还有 ",e(t("number"))," 个"])},many_attachments:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["文章有 ",e(t("number"))," 个附件"])},collapse_attachments:r=>{const{normalize:n}=r;return n(["折起附件"])},show_all_attachments:r=>{const{normalize:n}=r;return n(["显示所有附件"])},show_attachment_description:r=>{const{normalize:n}=r;return n(["预览描述(打开附件能看完整描述)"])},hide_attachment:r=>{const{normalize:n}=r;return n(["隐藏附件"])},remove_attachment:r=>{const{normalize:n}=r;return n(["移除附件"])},attachment_stop_flash:r=>{const{normalize:n}=r;return n(["停止 Flash 播放器"])},move_up:r=>{const{normalize:n}=r;return n(["把附件左移"])},open_gallery:r=>{const{normalize:n}=r;return n(["打开图库"])},thread_hide:r=>{const{normalize:n}=r;return n(["隐藏这个同主题帖子"])},thread_show:r=>{const{normalize:n}=r;return n(["显示这个同主题帖子"])},thread_show_full_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},thread_follow:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["查看这个同主题帖子的剩余部分(一共有 ",e(t("numStatus"))," 个状态)"])},thread_follow_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},ancestor_follow:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["查看这个状态下的别的 ",e(t("numReplies"))," 个回复"])},ancestor_follow_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},show_all_conversation_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},show_all_conversation:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["显示完整对话(还有 ",e(t("numStatus"))," 个状态)"])},mentions:r=>{const{normalize:n}=r;return n(["提及"])},replies_list_with_others:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["回复(另外 +",e(t("numReplies"))," 个):"])},move_down:r=>{const{normalize:n}=r;return n(["把附件右移"])},thread_show_full:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["显示这个同主题帖子下的所有东西(一共有 ",e(t("numStatus"))," 个状态,最大深度 ",e(t("depth")),")"])},show_only_conversation_under_this:r=>{const{normalize:n}=r;return n(["只显示这个状态的回复"])},repeat_confirm:r=>{const{normalize:n}=r;return n(["您确定要转发这条状态吗?"])},repeat_confirm_title:r=>{const{normalize:n}=r;return n(["确认转发"])},repeat_confirm_accept_button:r=>{const{normalize:n}=r;return n(["转发"])},repeat_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要转发"])},edit:r=>{const{normalize:n}=r;return n(["编辑状态"])},edited_at:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["(最后编辑于 ",e(t("time")),")"])},delete_confirm_title:r=>{const{normalize:n}=r;return n(["确认删除"])},delete_confirm_accept_button:r=>{const{normalize:n}=r;return n(["删除"])},delete_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["保留"])},show_attachment_in_modal:r=>{const{normalize:n}=r;return n(["在媒体模式中显示"])},status_history:r=>{const{normalize:n}=r;return n(["状态历史"])}},user_card:{approve:r=>{const{normalize:n}=r;return n(["核准"])},block:r=>{const{normalize:n}=r;return n(["屏蔽"])},blocked:r=>{const{normalize:n}=r;return n(["已屏蔽!"])},deny:r=>{const{normalize:n}=r;return n(["拒绝"])},favorites:r=>{const{normalize:n}=r;return n(["喜欢"])},follow:r=>{const{normalize:n}=r;return n(["关注"])},follow_sent:r=>{const{normalize:n}=r;return n(["请求已发送!"])},follow_progress:r=>{const{normalize:n}=r;return n(["请求中…"])},follow_unfollow:r=>{const{normalize:n}=r;return n(["取消关注"])},followees:r=>{const{normalize:n}=r;return n(["正在关注"])},followers:r=>{const{normalize:n}=r;return n(["关注者"])},following:r=>{const{normalize:n}=r;return n(["正在关注!"])},follows_you:r=>{const{normalize:n}=r;return n(["关注了你!"])},its_you:r=>{const{normalize:n}=r;return n(["就是你!"])},media:r=>{const{normalize:n}=r;return n(["媒体"])},mute:r=>{const{normalize:n}=r;return n(["隐藏"])},muted:r=>{const{normalize:n}=r;return n(["已隐藏"])},per_day:r=>{const{normalize:n}=r;return n(["每天"])},remote_follow:r=>{const{normalize:n}=r;return n(["跨站关注"])},report:r=>{const{normalize:n}=r;return n(["报告"])},statuses:r=>{const{normalize:n}=r;return n(["状态"])},subscribe:r=>{const{normalize:n}=r;return n(["订阅"])},unsubscribe:r=>{const{normalize:n}=r;return n(["退订"])},unblock:r=>{const{normalize:n}=r;return n(["取消屏蔽"])},unblock_progress:r=>{const{normalize:n}=r;return n(["正在取消屏蔽…"])},block_progress:r=>{const{normalize:n}=r;return n(["正在屏蔽…"])},unmute:r=>{const{normalize:n}=r;return n(["取消隐藏"])},unmute_progress:r=>{const{normalize:n}=r;return n(["取消隐藏中…"])},mute_progress:r=>{const{normalize:n}=r;return n(["隐藏中…"])},admin_menu:{moderation:r=>{const{normalize:n}=r;return n(["仲裁"])},grant_admin:r=>{const{normalize:n}=r;return n(["赋予管理权限"])},revoke_admin:r=>{const{normalize:n}=r;return n(["撤销管理权限"])},grant_moderator:r=>{const{normalize:n}=r;return n(["赋予监察员权限"])},revoke_moderator:r=>{const{normalize:n}=r;return n(["撤销监察员权限"])},activate_account:r=>{const{normalize:n}=r;return n(["激活账号"])},deactivate_account:r=>{const{normalize:n}=r;return n(["关闭账号"])},delete_account:r=>{const{normalize:n}=r;return n(["删除账号"])},force_nsfw:r=>{const{normalize:n}=r;return n(["标记所有的帖子都是 - 工作场合不适"])},strip_media:r=>{const{normalize:n}=r;return n(["从帖子里删除媒体文件"])},force_unlisted:r=>{const{normalize:n}=r;return n(["强制帖子为不公开"])},sandbox:r=>{const{normalize:n}=r;return n(["强制帖子为只有关注者可看"])},disable_remote_subscription:r=>{const{normalize:n}=r;return n(["禁止从远程实例关注用户"])},disable_any_subscription:r=>{const{normalize:n}=r;return n(["完全禁止关注用户"])},quarantine:r=>{const{normalize:n}=r;return n(["从联合实例中禁止用户帖子"])},delete_user:r=>{const{normalize:n}=r;return n(["删除用户"])},delete_user_data_and_deactivate_confirmation:r=>{const{normalize:n}=r;return n(["这将永久删除该账户的数据并停用该账户。你完全确定吗?"])}},hidden:r=>{const{normalize:n}=r;return n(["已隐藏"])},show_repeats:r=>{const{normalize:n}=r;return n(["显示转发"])},hide_repeats:r=>{const{normalize:n}=r;return n(["隐藏转发"])},message:r=>{const{normalize:n}=r;return n(["消息"])},mention:r=>{const{normalize:n}=r;return n(["提及"])},bot:r=>{const{normalize:n}=r;return n(["机器人"])},highlight:{side:r=>{const{normalize:n}=r;return n(["侧边条纹"])},striped:r=>{const{normalize:n}=r;return n(["条纹背景"])},solid:r=>{const{normalize:n}=r;return n(["单一颜色背景"])},disabled:r=>{const{normalize:n}=r;return n(["不突出显示"])}},edit_profile:r=>{const{normalize:n}=r;return n(["编辑个人资料"])},approve_confirm_title:r=>{const{normalize:n}=r;return n(["确认批准"])},approve_confirm_accept_button:r=>{const{normalize:n}=r;return n(["批准"])},block_confirm_accept_button:r=>{const{normalize:n}=r;return n(["屏蔽"])},block_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要屏蔽"])},deactivated:r=>{const{normalize:n}=r;return n(["已停用"])},deny_confirm_title:r=>{const{normalize:n}=r;return n(["确认拒绝"])},deny_confirm_accept_button:r=>{const{normalize:n}=r;return n(["拒绝"])},deny_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要拒绝"])},deny_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您是否要拒绝 ",e(t("user"))," 的关注请求?"])},follow_cancel:r=>{const{normalize:n}=r;return n(["取消请求"])},unfollow_confirm_title:r=>{const{normalize:n}=r;return n(["确认取消关注"])},unfollow_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您确定要取消关注 ",e(t("user"))," 吗?"])},unfollow_confirm_accept_button:r=>{const{normalize:n}=r;return n(["取消关注"])},unfollow_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要取消关注"])},mute_confirm_title:r=>{const{normalize:n}=r;return n(["确认隐藏"])},mute_confirm_accept_button:r=>{const{normalize:n}=r;return n(["隐藏"])},mute_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要隐藏"])},mute_duration_prompt:r=>{const{normalize:n}=r;return n(["让这个用户隐藏(0表示无限期):"])},remove_follower:r=>{const{normalize:n}=r;return n(["移除关注者"])},remove_follower_confirm_title:r=>{const{normalize:n}=r;return n(["确认移除关注者"])},remove_follower_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["保留"])},remove_follower_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您确定要将 ",e(t("user"))," 从您的关注者里移除吗?"])},birthday:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["生于 ",e(t("birthday"))])},note:r=>{const{normalize:n}=r;return n(["备注"])},approve_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要批准"])},approve_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您是否要批准 ",e(t("user"))," 的关注请求?"])},block_confirm_title:r=>{const{normalize:n}=r;return n(["确认屏蔽"])},block_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您确定要屏蔽 ",e(t("user"))," 吗?"])},mute_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您确定要隐藏 ",e(t("user"))," 吗?"])},remove_follower_confirm_accept_button:r=>{const{normalize:n}=r;return n(["移除"])},note_blank:r=>{const{normalize:n}=r;return n(["(空)"])},edit_note:r=>{const{normalize:n}=r;return n(["编辑备注"])},edit_note_apply:r=>{const{normalize:n}=r;return n(["应用"])},edit_note_cancel:r=>{const{normalize:n}=r;return n(["取消"])}},user_profile:{timeline_title:r=>{const{normalize:n}=r;return n(["用户时间线"])},profile_does_not_exist:r=>{const{normalize:n}=r;return n(["抱歉,此个人资料不存在。"])},profile_loading_error:r=>{const{normalize:n}=r;return n(["抱歉,载入个人资料时出错。"])}},user_reporting:{title:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["报告 ",e(t(0))])},add_comment_description:r=>{const{normalize:n}=r;return n(["此报告会发送给您的实例监察员。您可以在下面提供更多详细信息解释报告的缘由:"])},additional_comments:r=>{const{normalize:n}=r;return n(["其它信息"])},forward_description:r=>{const{normalize:n}=r;return n(["这个账号来自另一个服务器。是否同时发送一份报告副本到那里?"])},forward_to:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["转发 ",e(t(0))])},submit:r=>{const{normalize:n}=r;return n(["提交"])},generic_error:r=>{const{normalize:n}=r;return n(["当处理您的请求时,发生了一个错误。"])}},who_to_follow:{more:r=>{const{normalize:n}=r;return n(["更多"])},who_to_follow:r=>{const{normalize:n}=r;return n(["推荐关注"])}},tool_tip:{media_upload:r=>{const{normalize:n}=r;return n(["上传媒体"])},repeat:r=>{const{normalize:n}=r;return n(["转发"])},reply:r=>{const{normalize:n}=r;return n(["回复"])},favorite:r=>{const{normalize:n}=r;return n(["喜欢"])},user_settings:r=>{const{normalize:n}=r;return n(["用户设置"])},reject_follow_request:r=>{const{normalize:n}=r;return n(["拒绝关注请求"])},add_reaction:r=>{const{normalize:n}=r;return n(["添加互动"])},bookmark:r=>{const{normalize:n}=r;return n(["书签"])},accept_follow_request:r=>{const{normalize:n}=r;return n(["接受关注请求"])},toggle_expand:r=>{const{normalize:n}=r;return n(["展开或折叠通知以显示帖子全文"])},toggle_mute:r=>{const{normalize:n}=r;return n(["展开或折叠通知以显示已隐藏的内容"])},autocomplete_available:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["共有 ",e(t("number"))," 个结果可用。使用向上和向下键浏览它们。"])}},upload:{error:{base:r=>{const{normalize:n}=r;return n(["上传不成功。"])},file_too_big:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["文件太大了 [",e(t("filesize")),e(t("filesizeunit"))," / ",e(t("allowedsize")),e(t("allowedsizeunit")),"]"])},default:r=>{const{normalize:n}=r;return n(["迟些再试"])},message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["上传错误:",e(t(0))])}},file_size_units:{B:r=>{const{normalize:n}=r;return n(["B"])},KiB:r=>{const{normalize:n}=r;return n(["KiB"])},MiB:r=>{const{normalize:n}=r;return n(["MiB"])},GiB:r=>{const{normalize:n}=r;return n(["GiB"])},TiB:r=>{const{normalize:n}=r;return n(["TiB"])}}},search:{people:r=>{const{normalize:n}=r;return n(["人"])},hashtags:r=>{const{normalize:n}=r;return n(["话题标签"])},person_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count"))," 人正在讨论"])},people_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count"))," 人正在讨论"])},no_results:r=>{const{normalize:n}=r;return n(["没有搜索结果"])},no_more_results:r=>{const{normalize:n}=r;return n(["没有更多结果"])},load_more:r=>{const{normalize:n}=r;return n(["加载更多结果"])}},password_reset:{forgot_password:r=>{const{normalize:n}=r;return n(["忘记密码了?"])},password_reset:r=>{const{normalize:n}=r;return n(["重置密码"])},instruction:r=>{const{normalize:n}=r;return n(["输入您的电邮地址或者用户名,我们将发送一个链接到您的邮箱,用于重置密码。"])},placeholder:r=>{const{normalize:n}=r;return n(["您的电邮地址或者用户名"])},check_email:r=>{const{normalize:n}=r;return n(["检查您的邮箱,会有一个链接用于重置密码。"])},return_home:r=>{const{normalize:n}=r;return n(["回到首页"])},too_many_requests:r=>{const{normalize:n}=r;return n(["您达到了尝试次数的上限,请稍后再试。"])},password_reset_disabled:r=>{const{normalize:n}=r;return n(["密码重置已被禁用。请联系您的实例管理员。"])},password_reset_required_but_mailer_is_disabled:r=>{const{normalize:n}=r;return n(["您必须重置密码,但是密码重置被禁用了。请联系您所在实例的管理员。"])},password_reset_required:r=>{const{normalize:n}=r;return n(["您必须重置密码才能登陆。"])}},remote_user_resolver:{error:r=>{const{normalize:n}=r;return n(["未找到。"])},searching_for:r=>{const{normalize:n}=r;return n(["搜索"])},remote_user_resolver:r=>{const{normalize:n}=r;return n(["远程用户解析器"])}},emoji:{keep_open:r=>{const{normalize:n}=r;return n(["选择器保持打开"])},stickers:r=>{const{normalize:n}=r;return n(["贴纸"])},unicode:r=>{const{normalize:n}=r;return n(["Unicode 表情符号"])},custom:r=>{const{normalize:n}=r;return n(["自定义表情符号"])},add_emoji:r=>{const{normalize:n}=r;return n(["插入表情符号"])},search_emoji:r=>{const{normalize:n}=r;return n(["搜索表情符号"])},emoji:r=>{const{normalize:n}=r;return n(["表情符号"])},load_all:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["加载所有表情符号(共 ",e(t("emojiAmount"))," 个)"])},load_all_hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["最先加载的 ",e(t("saneAmount"))," 表情符号,加载全部表情符号可能会带来性能问题。"])},unicode_groups:{flags:r=>{const{normalize:n}=r;return n(["旗帜"])},"food-and-drink":r=>{const{normalize:n}=r;return n(["饮食"])},objects:r=>{const{normalize:n}=r;return n(["物件"])},"people-and-body":r=>{const{normalize:n}=r;return n(["人和身体"])},symbols:r=>{const{normalize:n}=r;return n(["符号"])},"travel-and-places":r=>{const{normalize:n}=r;return n(["旅行和地点"])},activities:r=>{const{normalize:n}=r;return n(["活动"])},"animals-and-nature":r=>{const{normalize:n}=r;return n(["动物和自然"])},"smileys-and-emotion":r=>{const{normalize:n}=r;return n(["表情与情感"])}},regional_indicator:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["地区指示符 ",e(t("letter"))])},unpacked:r=>{const{normalize:n}=r;return n(["拆分的表情符号"])}},about:{mrf:{simple:{quarantine_desc:r=>{const{normalize:n}=r;return n(["本实例向以下实例仅发送公开的帖子:"])},quarantine:r=>{const{normalize:n}=r;return n(["隔离"])},reject_desc:r=>{const{normalize:n}=r;return n(["本实例不会接收来自下列实例的消息:"])},reject:r=>{const{normalize:n}=r;return n(["拒绝"])},accept_desc:r=>{const{normalize:n}=r;return n(["本实例只接收来自下列实例的消息:"])},simple_policies:r=>{const{normalize:n}=r;return n(["对于特定实例的策略"])},accept:r=>{const{normalize:n}=r;return n(["接受"])},media_removal:r=>{const{normalize:n}=r;return n(["移除媒体"])},media_nsfw_desc:r=>{const{normalize:n}=r;return n(["本实例将来自以下实例的媒体内容强制设置为敏感内容:"])},media_nsfw:r=>{const{normalize:n}=r;return n(["强制设置媒体为敏感内容"])},media_removal_desc:r=>{const{normalize:n}=r;return n(["本实例移除来自以下实例的媒体内容:"])},ftl_removal_desc:r=>{const{normalize:n}=r;return n(["该实例在从“已知网络”时间线上移除了下列实例:"])},ftl_removal:r=>{const{normalize:n}=r;return n(["从“已知网络”时间线上移除"])},reason:r=>{const{normalize:n}=r;return n(["理由"])},not_applicable:r=>{const{normalize:n}=r;return n(["无"])},instance:r=>{const{normalize:n}=r;return n(["实例"])}},mrf_policies_desc:r=>{const{normalize:n}=r;return n(["MRF 策略会影响本实例的互通行为。以下策略已启用:"])},mrf_policies:r=>{const{normalize:n}=r;return n(["已启用的 MRF 策略"])},keyword:{ftl_removal:r=>{const{normalize:n}=r;return n(["从“全部已知网络”时间线上移除"])},keyword_policies:r=>{const{normalize:n}=r;return n(["关键词策略"])},is_replaced_by:r=>{const{normalize:n}=r;return n(["→"])},replace:r=>{const{normalize:n}=r;return n(["替换"])},reject:r=>{const{normalize:n}=r;return n(["拒绝"])}},federation:r=>{const{normalize:n}=r;return n(["联邦互通"])}},staff:r=>{const{normalize:n}=r;return n(["管理人员"])}},domain_mute_card:{unmute_progress:r=>{const{normalize:n}=r;return n(["正在取消隐藏…"])},unmute:r=>{const{normalize:n}=r;return n(["取消隐藏"])},mute_progress:r=>{const{normalize:n}=r;return n(["隐藏中…"])},mute:r=>{const{normalize:n}=r;return n(["隐藏"])}},errors:{storage_unavailable:r=>{const{normalize:n}=r;return n(["Pleroma 无法访问浏览器储存。您的登陆以及本地设置将不会被保存,您也可能遇到未知问题。请尝试启用 cookies。"])}},shoutbox:{title:r=>{const{normalize:n}=r;return n(["留言板"])}},display_date:{today:r=>{const{normalize:n}=r;return n(["今天"])}},file_type:{file:r=>{const{normalize:n}=r;return n(["文件"])},image:r=>{const{normalize:n}=r;return n(["图片"])},video:r=>{const{normalize:n}=r;return n(["视频"])},audio:r=>{const{normalize:n}=r;return n(["音频"])}},chats:{empty_chat_list_placeholder:r=>{const{normalize:n}=r;return n(["您还没有任何聊天记录。开始聊天吧!"])},error_sending_message:r=>{const{normalize:n}=r;return n(["发送消息时出了点问题。"])},error_loading_chat:r=>{const{normalize:n}=r;return n(["加载聊天时出了点问题。"])},delete_confirm:r=>{const{normalize:n}=r;return n(["您确定要删除此消息吗?"])},more:r=>{const{normalize:n}=r;return n(["更多"])},empty_message_error:r=>{const{normalize:n}=r;return n(["无法发布空消息"])},new:r=>{const{normalize:n}=r;return n(["新聊天"])},chats:r=>{const{normalize:n}=r;return n(["聊天"])},delete:r=>{const{normalize:n}=r;return n(["删除"])},message_user:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["发消息给 ",e(t("nickname"))])},you:r=>{const{normalize:n}=r;return n(["你:"])}},announcements:{page_header:r=>{const{normalize:n}=r;return n(["公告"])},title:r=>{const{normalize:n}=r;return n(["公告"])},mark_as_read_action:r=>{const{normalize:n}=r;return n(["标为已读"])},post_form_header:r=>{const{normalize:n}=r;return n(["发布公告"])},post_placeholder:r=>{const{normalize:n}=r;return n(["在这里输入公告内容..."])},post_action:r=>{const{normalize:n}=r;return n(["发布"])},post_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["错误:",e(t("error"))])},close_error:r=>{const{normalize:n}=r;return n(["关闭"])},delete_action:r=>{const{normalize:n}=r;return n(["删除"])},start_time_prompt:r=>{const{normalize:n}=r;return n(["起始时间: "])},end_time_prompt:r=>{const{normalize:n}=r;return n(["终止时间: "])},all_day_prompt:r=>{const{normalize:n}=r;return n(["这是全天的事件"])},published_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["发表于 ",e(t("time"))])},start_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["开始于 ",e(t("time"))])},end_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["结束于 ",e(t("time"))])},edit_action:r=>{const{normalize:n}=r;return n(["编辑"])},submit_edit_action:r=>{const{normalize:n}=r;return n(["提交"])},cancel_edit_action:r=>{const{normalize:n}=r;return n(["取消"])},inactive_message:r=>{const{normalize:n}=r;return n(["这个公告不活跃"])}},report:{reported_user:r=>{const{normalize:n}=r;return n(["被举报者:"])},state_closed:r=>{const{normalize:n}=r;return n(["已关闭"])},state_resolved:r=>{const{normalize:n}=r;return n(["已解决"])},reporter:r=>{const{normalize:n}=r;return n(["举报者:"])},state_open:r=>{const{normalize:n}=r;return n(["开启"])},reported_statuses:r=>{const{normalize:n}=r;return n(["已举报的状态:"])},notes:r=>{const{normalize:n}=r;return n(["备注:"])},state:r=>{const{normalize:n}=r;return n(["状态:"])}},unicode_domain_indicator:{tooltip:r=>{const{normalize:n}=r;return n(["此域名包含非 ascii 字符。"])}},update:{update_bugs_gitlab:r=>{const{normalize:n}=r;return n(["Pleroma GitLab"])},update_changelog:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["关于变化的更多细节,请参见 ",e(t("theFullChangelog"))," 。"])},update_changelog_here:r=>{const{normalize:n}=r;return n(["完整的更新日志"])},big_update_title:r=>{const{normalize:n}=r;return n(["请忍耐一下"])},big_update_content:r=>{const{normalize:n}=r;return n(["我们已经有一段时间没有发布发行版,所以事情的外观和感觉可能与你习惯的不一样。"])},update_bugs:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["请在 ",e(t("pleromaGitlab"))," 上报告任何问题和bug,因为我们已经改变了很多,虽然我们进行了彻底的测试,并且自己使用了开发版本,但我们可能错过了一些东西。我们欢迎你对你可能遇到的问题或如何改进Pleroma和Pleroma-FE提出反馈和建议。"])},art_by:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["Art by ",e(t("linkToArtist"))])}},lists:{search:r=>{const{normalize:n}=r;return n(["搜索用户"])},create:r=>{const{normalize:n}=r;return n(["创建"])},save:r=>{const{normalize:n}=r;return n(["保存更改"])},delete:r=>{const{normalize:n}=r;return n(["删除列表"])},following_only:r=>{const{normalize:n}=r;return n(["限制于正在关注"])},manage_lists:r=>{const{normalize:n}=r;return n(["管理列表"])},manage_members:r=>{const{normalize:n}=r;return n(["管理列表成员"])},add_members:r=>{const{normalize:n}=r;return n(["搜索更多用户"])},remove_from_list:r=>{const{normalize:n}=r;return n(["从列表中移除"])},add_to_list:r=>{const{normalize:n}=r;return n(["添加到列表"])},is_in_list:r=>{const{normalize:n}=r;return n(["已在列表中"])},editing_list:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["正在编辑列表 ",e(t("listTitle"))])},creating_list:r=>{const{normalize:n}=r;return n(["正在创建新的列表"])},update_title:r=>{const{normalize:n}=r;return n(["保存标题"])},really_delete:r=>{const{normalize:n}=r;return n(["真的要删除列表吗?"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["操作列表时出错:",e(t(0))])},lists:r=>{const{normalize:n}=r;return n(["列表"])},new:r=>{const{normalize:n}=r;return n(["新的列表"])},title:r=>{const{normalize:n}=r;return n(["列表标题"])}}}}}]); -//# sourceMappingURL=zh-json.63e4c9fe0197374a5dac.js.map -\ No newline at end of file diff --git a/priv/static/static/js/i18n/zh-json.63e4c9fe0197374a5dac.js.map b/priv/static/static/js/i18n/zh-json.63e4c9fe0197374a5dac.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/i18n/zh-json.63e4c9fe0197374a5dac.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/zh.json"],"sourcesContent":["export default {\n \"chat\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])}\n },\n \"exporter\": {\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导出\"])},\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在处理,稍后会提示您下载文件\"])}\n },\n \"features_panel\": {\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒体代理\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"可见范围设置\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文字数量限制\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"功能\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推荐关注\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 聊天\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上传限制\"])},\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"留言板\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"获取用户时发生错误\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"寻找用户\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"应用\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发生了一个错误\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"可选\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展开\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收起\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁用\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"启用\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"验证\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"忽略\"])},\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预览\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重试\"])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请重试\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"载入中…\"])},\n \"role\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"监察员\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理员\"])}\n },\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"点击以使用 Ruffle 显示 Flash 内容(实验性,可能无效)。\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"注意这可能有潜在的危险,因为 Flash 内容仍然是任意的代码。\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flash 内容加载失败,请在控制台查看详情。\"])},\n \"scope_in_timeline\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公开\"])},\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私讯\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"仅关注者\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列外\"])}\n },\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"滚动至顶\"])},\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"发生一个错误:\", _interpolate(_list(0))])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不再显示\"])},\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤销\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"是\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"否\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消固定该项\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"固定该项\"])}\n },\n \"image_cropper\": {\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"裁剪图片\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存未经裁剪的图片\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])}\n },\n \"importer\": {\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入成功。\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入此文件时出现一个错误。\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登录\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用 OAuth 登录\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密码\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"注册\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户名\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登录后加入讨论\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"验证码\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入一个恢复码\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入一个双重因素验证码\"])},\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"恢复码\"])},\n \"heading\": {\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"双重因素验证\"])},\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"双重因素恢复\"])}\n },\n \"logout_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要登出\"])},\n \"logout_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认登出\"])},\n \"logout_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出\"])},\n \"logout_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要登出吗?\"])}\n },\n \"media_modal\": {\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"往前\"])},\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"往后\"])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭媒体查看器\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关于\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"后退\"])},\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本站聊天\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注请求\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"互动\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私信\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公共时间线\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"时间线\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已知网络\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户搜索\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推荐关注\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"偏好设置\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理员\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"时间线\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"书签\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主页时间线\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列表\"])},\n \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"完成编辑\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"打开通知(有未读的)\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭通知\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自定义导航栏\"])},\n \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑固定的项目\"])},\n \"mobile_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"切换移动设备侧栏\"])},\n \"search_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭搜索栏\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未知的状态,正在搜索中…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢了你的状态\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注了你\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载更早的通知\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已阅!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发了你的状态\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有更多的通知\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"作出了 \", _interpolate(_list(0)), \" 的反应\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"迁移到了\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"想要关注你\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"取得通知时发生错误:\", _interpolate(_list(0))])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票结束了\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交举报\"])}\n },\n \"polls\": {\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"增加投票\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"增加选项\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"选项\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票类型\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"单选\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"多选\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票期限\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"投票于 \", _interpolate(_list(0)), \" 后结束\"])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"投票 \", _interpolate(_list(0)), \" 前已结束\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票的选项太少\"])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 票\"]), _normalize([_interpolate(_named(\"count\")), \" 票\"])])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 人已投票\"]), _normalize([_interpolate(_named(\"count\")), \" 人已投票\"])])}\n },\n \"stickers\": {\n \"add_sticker\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加贴纸\"])}\n },\n \"interactions\": {\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发和喜欢\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新的关注者\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载更早的互动\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户迁移\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"举报\"])},\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"表情回应\"])}\n },\n \"post_status\": {\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发布新状态\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"你的帐号没有 \", _interpolate(_list(0)), \"。任何人都可以关注你并浏览你的上锁内容。\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上锁\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"标记附件为敏感内容\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"纯文本\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])}\n },\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主题(可选)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刚刚抵达上海。\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本条内容只有被提及的用户能够看到。\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本条内容只有被在消息开始处提及的用户能够看到。\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发送中\"])},\n \"scope_notice\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本条内容可以被所有人看到\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注你的人才能看到本条内容\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本条内容既不在公共时间线,也不会在所有已知网络上可见\"])}\n },\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私信 - 只发送给被提及的用户\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"仅关注者 - 只有关注了你的人能看到\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公共 - 发送到公共时间轴\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不公开 - 不会发送到公共时间轴\"])}\n },\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"空的\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预览\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒体描述\"])},\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更新媒体失败,请重试\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能发布没有内容、没有附件的发文\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发送\"])},\n \"edit_remote_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"其它远程实例可能不支持编辑并且无法接收您的帖子的最新版本。\"])},\n \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 不支持对提及或投票进行编辑。\"])},\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑状态\"])},\n \"content_type_selection\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发帖格式\"])},\n \"scope_notice_dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭此提示\"])}\n },\n \"registration\": {\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"简介\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"电子邮箱\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示名称\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认密码\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"注册\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邀请码\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"点击图片获取新的验证码\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:lain\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:岩仓玲音\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:\\n你好,我是玲音。\\n我是一个住在日本郊区的动画少女。你可能在 Wired 见过我。\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密码不一致\"])},\n \"birthday_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能为空\"])},\n \"birthday_min_age\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"必须在 \", _interpolate(_named(\"date\")), \" 或之前\"])}\n },\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此实例的注册需要手动批准。\\n请让管理员知道您为什么想要注册。\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"注册理由\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"注册\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你想从服务器收到什么语言的邮件?\"])},\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"介绍(可选)\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"电子邮件(可选)\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生日:\"])},\n \"birthday_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生日(可选):\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"选择全部\"])}\n },\n \"settings\": {\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App 名称\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"安全\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入您当前的密码来确认您的身份\"])},\n \"mfa\": {\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置 OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预设 OTP\"])},\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认并启用 OTP\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"双因素验证\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生成新的恢复码\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当您生成新的恢复码时,您旧的恢复码将会失效。\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"恢复码。\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在接收备份码…\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抄写这些号码,或者将其保存在安全的地方。这些号码不会再次显示。如果您无法访问您的 2FA app,也丢失了您的恢复码,您就再也无法登录您的账号了。\"])},\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"身份验证方法\"])},\n \"scan\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"扫一下\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使用您的双因素验证 app,扫描这个二维码,或者输入这些文字密钥:\"])},\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密钥\"])}\n },\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要启用双因素验证,请输入您的双因素验证 app 里的数字:\"])}\n }\n },\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"头像\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"头像(通知)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"头像\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"背景\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"简介\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽名单导出\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导出你的屏蔽名单到一个 csv 文件\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽名单导入\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入屏蔽名单出错\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽名单导入成功!需要一点时间来处理。\"])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"蓝色(回复,关注)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"绿色(转发)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"橙色(喜欢)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"红色(取消)\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改密码\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改密码的时候出了点问题。\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"成功修改了密码!\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"折叠带主题的内容\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"写作\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认新密码\"])},\n \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当前头像\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当前密码\"])},\n \"current_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您当前的横幅图片\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"数据导入/导出\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默认可见范围\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除账户\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"永久删除你的帐号和所有数据。\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除账户时发生错误,如果一直删除不了,请联系实例管理员。\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在下面输入您的密码来确认删除账户。\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推荐的头像图片最小尺寸为 150x150 像素。\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导出预置主题\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"过滤器\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"所有包含以下词汇的内容都会被隐藏,一行一个\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导出关注\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"将关注导出成 csv 文件\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入关注\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入关注时错误\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注已导入!尚需要一些时间来处理。\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前景\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通用\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在对话中隐藏附件\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在时间线上隐藏附件\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示被隐藏的用户的帖子\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"每个帖子最多能显示的缩略图数量\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏实例独有的面板\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预载图片\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"点击一次以打开工作场所不适宜(NSFW)的附件\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏帖子的统计数据(例如:喜欢的次数)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏用户的统计数据(例如:关注者的数量)\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏过滤的状态\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从 csv 文件中导入拉黑名单\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从 csv 文件中导入关注\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入预置主题\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入框\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"复选框\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(默认:\", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(默认)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面语言\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您所选择的主题文件不被 Pleroma 支持,因此主题未被修改。\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在您的浏览器中无法使用\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"链接\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您需要手动审核关注请求\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"循环视频\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只循环没有声音的视频(例如:Mastodon 里的“GIF”)\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在弹出框内播放视频\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生成缩略图时不要裁剪附件\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"名字\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"名字及简介\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新密码\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要显示的通知类型\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示富文本格式\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有屏蔽\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有隐藏\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要显示我所关注的人\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要显示关注我的人\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在我的个人资料中显示“管理员”徽章\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在我的个人资料中显示“监察员”徽章\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"将不和谐附件和链接预览隐藏,点击才会显示\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth令牌\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"令牌\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刷新令牌\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"有效期至\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤消\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在离开页面时暂停时间线推送\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预置\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"个人背景图\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"横幅图片\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"个人资料\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置界面边缘的圆角 (单位:像素)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"时间线中的回复\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示所有回复\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只显示发送给我的回复/发送给我关注的用户的回复\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只显示发送给我的回复\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自动隐藏新帖子的按钮(移动设备)\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存设置时发生错误\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置已保存\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索你想屏蔽的用户\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索你想要隐藏的用户\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"安全\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回复时复制可见范围(私信中永远会复制)\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使发文可见范围的选项最少化\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置新头像\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置新的个人资料背景\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置新的横幅图片\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"总是显示主题框\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回复时复制主题\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"类似电子邮件: \\\"re: 主题\\\"\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"类似 mastodon: 与原主题相同\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要复制\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发文状态内容类型\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"鼠标悬停时播放GIF\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"滚动到顶部时自动推送新内容\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文本\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主题\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使用十六进制代码(#rrggbb)来设置主题颜色。\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您也可以通过选中复选框来覆盖某些组件的颜色和透明度。使用“清除所有”按钮来清除所有覆盖设置。\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"某些条目下的图标是背景或文本对比指示器,鼠标悬停可以获取详细信息。请记住,使用透明度来显示最差的情况。\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提醒\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上传照片\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户设置\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"否\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"是\"])}\n },\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要停止收到某个指定的用户的通知,请使用隐藏功能。\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽一个用户会停止接收来自该用户的所有通知,并且会取消对该用户的关注。\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"启用 web 推送通知\"])},\n \"style\": {\n \"switcher\": {\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留颜色\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留阴影\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留透明度\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留圆角\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留字体\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"保留\\\" 选项在选择或加载主题时保留当前设置的选项,在导出主题时还会存储上述选项。当所有复选框未设置时,导出主题将保存所有内容。\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"清除全部\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"清除透明度\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载主题\"])},\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 已升级,主题会与您记忆中的不太一样。\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您导入的文件来自旧版本的 FE。\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您导入的文件来自更高版本的 FE。\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您导入的文件是旧版 FE 的。我们尽可能保持兼容性,但还是可能出现不一致的情况。\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"版本冲突:很有可能是 FE 版本回滚后再次升级了,如果您使用旧版本的 FE 更改了主题那么您可能需要使用旧版本,否则请使用新版本。\"])},\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不知出于何种原因,主题快照缺失了,一些地方可能与您印象中的不符。\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"为保万无一失,加载了主题快照。您可以试着加载主题数据。\"])},\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 的版本回滚了。\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 的主题引擎随着版本更新升级了。\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在文件中没有主题快照,所以网站外观可能会与原来预想的不同。\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主题快照已加载,因此所有的值均被覆盖。您可以改为加载主题的实际数据。\"])}\n },\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新版本\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"老版本\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保持原状\"])}\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"颜色\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"透明度\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"对比度是 \", _interpolate(_named(\"ratio\")), \", 它 \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n \"level\": {\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"符合 AA 等级准则(最低)\"])},\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"符合 AAA 等级准则(推荐)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不符合任何辅助功能指南\"])}\n },\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"大字文本 (18pt+)\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文本\"])}\n }\n }\n },\n \"common_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"常规\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"常用颜色\"])},\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"点击”高级“ 标签进行细致的控制\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"图标,强调,徽章\"])}\n },\n \"advanced_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"高级\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提醒或警告背景色\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"错误\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"徽章背景\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板标题\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顶栏\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"边框\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入框\"])},\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"灰度文字\"])},\n \"chat\": {\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"边框\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发出的\"])},\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收到的\"])}\n },\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁用的\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"压下的\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"强调元素\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"选中的菜单项\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"选中的发布内容\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"图标\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票统计图\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提示框,菜单,弹出框\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发布内容/用户简介\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"中性\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"警告\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"标签页\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"底衬\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按下的\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"壁纸\"])}\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"圆角\"])}\n },\n \"shadows\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"阴影和照明\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"组件\"])},\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"覆盖\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"阴影 #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"模糊\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"扩散\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"内阴影\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"对于阴影你还可以使用 --variable 作为颜色值来使用 CSS3 变量。请注意,这种情况下,透明设置将不起作用。\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"警告,此阴影设置会总是使用 \", _interpolate(_list(0)), \" ,如果浏览器支持的话。\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 不支持参数 \", _interpolate(_list(1)), \" 和关键词 \", _interpolate(_list(2)), \" 。\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请注意组合两个内部和非内部的阴影到头像上,在透明头像上可能会有意料之外的效果。\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"阴影的扩散 > 0 会同设置成零一样\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"内阴影会使用 \", _interpolate(_list(0))])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板标题\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顶栏\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户头像(在个人资料栏)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户头像(在帖子显示栏)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"弹窗与工具提示\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮(悬停)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮(压下)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮(压下和悬停)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入框\"])}\n },\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"对于阴影,您还可以使用 \", _interpolate(_list(0)), \" 表示法来使用其它颜色插槽。\"])}\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字体\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"为用户界面的元素选择字体。若选择 “自选”,您必须输入与系统显示完全一致的字体名称。\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入框\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发帖文字\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"帖子中使用等间距文字(富文本)\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字体名称\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"大小 (in px)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字重 (粗体)\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自选\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预览\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"内容\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"错误示例\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"有堆 \", _interpolate(_list(0)), \" 和 \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"monospace 内容\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刚刚抵达上海。\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"帮助手册\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"阅读我们的 \", _interpolate(_list(0)), \" ,然而什么也学不到!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这很正常\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"我已经浏览了条款及细则\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"一个棒棒的小小链接\"])}\n }\n },\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"版本\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"后端版本\"])},\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前端版本\"])}\n },\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"过滤器\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"域名\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邮箱修改成功!\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改您的电子邮箱时发生错误。\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改电子邮箱\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在关注的账号迁移时自动重新关注\"])},\n \"notification_setting_privacy_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在通知推送中隐藏发送者和内容\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐私\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示关注数\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"互动\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户迁移\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新邮箱\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在时间线上显示表情符号互动\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏推送通知中的发送者与内容信息\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽来自你没有关注的用户的通知\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索需要隐藏的域名\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"实时接收帖子和通知\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要重置背景图吗?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要重置横幅图片吗?\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要重置头像吗?\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置横幅图片\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置个人背景图\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置头像\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示关注者数量\"])},\n \"profile_fields\": {\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"内容\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"标签\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加字段\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"个人资料元数据\"])}\n },\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"强调色\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从表情符号选择器插入表情符号时,在表情两侧插入空格\"])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"允许通过搜索检索等服务找到此账号\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏与屏蔽\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这是一个机器人账号\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"趣味\"])},\n \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(不推荐使用,试验性,已知会跳过一些帖子)\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天消息\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meme 箭头\"])},\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"优化时间线渲染\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从 csv 文件导入隐藏名单\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏名单导入成功!处理它们将需要一段时间。\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入隐藏名单出错\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏名单导入\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导出你的隐藏名单到一个 csv 文件\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏名单导出\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏实例壁纸\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"与默认设置不同\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多设置\"])},\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默认标记发文为敏感内容\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只显示对我本人的回复\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示对我关注的人的回复\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示已隐藏的发文\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏媒体预览\"])},\n \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"词语过滤\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存更改\"])},\n \"file_export_import\": {\n \"errors\": {\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文件的小版本不同,有些设置可能无法加载\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"不兼容的主版本:\", _interpolate(_named(\"fileMajor\")), \",文件版本过旧,不受支持(最小设置版本 \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"不兼容的主版本:\", _interpolate(_named(\"fileMajor\")), \",此 PleromaFE(设置版本 \", _interpolate(_named(\"feMajor\")), \")过旧,无法处理\"])},\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"所选文件不是受支持的 Pleroma 设置备份。没有进行任何更改。\"])}\n },\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从文件恢复设置\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备份设置和主题到文件\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备份设置到文件\"])},\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置备份\"])}\n },\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"反转分栏的顺序\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏实例留言板\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示高级\"])},\n \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"下载\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及链接\"])},\n \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"账号备份\"])},\n \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备份\"])},\n \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除\"])},\n \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"获取备份列表出错:\", _interpolate(_named(\"error\"))])},\n \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"创建一个新备份\"])},\n \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"创建了一个新备份。\"])},\n \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"账号别名\"])},\n \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"别名\"])},\n \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"获取别名时出错:\", _interpolate(_named(\"error\"))])},\n \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭\"])},\n \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除这个别名\"])},\n \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"添加一个新别名(例如 \", _interpolate(_named(\"example\")), \")\"])},\n \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"别名添加好了。\"])},\n \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移动账号\"])},\n \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"目标账号(例如 \", _interpolate(_named(\"example\")), \")\"])},\n \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"账号移动好了。\"])},\n \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"移动账号时出错:\", _interpolate(_named(\"error\"))])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这个设置是捆绑到你的个人资料的,能影响所有会话和客户端\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文章的样子跟感受\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从服务器收邮件的语言\"])},\n \"account_backup_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这个允许你下载一份账号信息和文章的存档,但是现在还不能导入到 Pleroma 账号里。\"])},\n \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备份还没准备好。\"])},\n \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"添加新备份时出错:\", _interpolate(_named(\"error\"))])},\n \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"添加别名时出错:\", _interpolate(_named(\"error\"))])},\n \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"如果你想把账号移动到别的地方,你必须去目标账号,然后加一个指向这里的别名。\"])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"词语过滤器\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户资料\"])},\n \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知栏\"])},\n \"backup_running\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"此备份正在进行,已处理 \", _interpolate(_named(\"number\")), \" 条记录。\"]), _normalize([\"此备份正在进行,已处理 \", _interpolate(_named(\"number\")), \" 条记录。\"])])},\n \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在导航中显示列表\"])},\n \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"词过滤器及其它...\"])},\n \"backup_failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此备份已失败。\"])},\n \"birthday\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生日\"])},\n \"show_birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展示我的生日\"])}\n },\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示我的喜欢列表(人们仍然会收到通知)\"])},\n \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当有足够的空间时,显示第三栏包含\"])},\n \"third_column_mode_postform\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主要的发文形式和导航\"])},\n \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"分栏\"])},\n \"user_popover_avatar_overlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在用户头像上显示用户弹出窗口\"])},\n \"navbar_column_stretch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"延伸导航栏至分栏宽度\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"帖子\"])},\n \"conversation_display_linear_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"线性视图\"])},\n \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示 “其它回复” 按钮\"])},\n \"confirm_dialogs_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除状态\"])},\n \"confirm_dialogs_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏用户\"])},\n \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"分栏大小\"])},\n \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"侧栏\"])},\n \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"內容\"])},\n \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在状态下方\"])},\n \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在状态中\"])},\n \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自动显示新的帖子\"])},\n \"use_websockets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使用 websockets(实时更新)\"])},\n \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默认显示同主题帖子中的最大层数\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏经过词语过滤的状态\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示已隐藏的同主题帖子\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你所投的投票的结束于\"])},\n \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"允许在树状视图中进行更灵活的导航\"])},\n \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"以模糊的文字显示当前状态的原型\"])},\n \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"线性样式\"])},\n \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"淡化域名(例如:\", \"@\", \"example.org 中的 \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当你被提及时突出显示提及你\"])},\n \"user_popover_avatar_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"弹出式头像点击动作\"])},\n \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"缩放头像\"])},\n \"user_popover_avatar_action_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭弹出窗口\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示 (You)s\"])},\n \"add_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加备用语言\"])},\n \"remove_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除\"])},\n \"primary_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主要语言:\"])},\n \"fallback_language\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"备用语言 \", _interpolate(_named(\"index\")), \":\"])},\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐私\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"对话显示样式\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"树状样式\"])},\n \"conversation_display_tree_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"树状视图\"])},\n \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要把分栏的顶栏固定在屏幕的顶部\"])},\n \"confirm_dialogs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请求确认于\"])},\n \"confirm_dialogs_logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出\"])},\n \"confirm_dialogs_deny_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝关注请求\"])},\n \"confirm_dialogs_approve_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"批准关注请求\"])},\n \"confirm_dialogs_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽用户\"])},\n \"confirm_dialogs_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消关注用户\"])},\n \"confirm_dialogs_repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发状态\"])},\n \"confirm_dialogs_remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除关注者\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏机器人的帖子\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏帖子中的机器人提示\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"始终显示浮动的新帖子按钮\"])},\n \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示侧栏的滚动条\"])},\n \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"完全不显示第三栏\"])},\n \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"将 \", \"@\", \" 符号显示为图标而不是文本\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示提及链接\"])},\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"始终以简称的形式出现(例如:\", \"@\", \"foo)\"])},\n \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"仅远程实例用户以全名的形式出现(例如:\", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"始终以全名的形式出现(例如:\", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_use_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"点击提及链接时显示用户卡片\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在链接旁边显示用户头像\"])},\n \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在提及内容旁边显示用户头像\"])},\n \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"打开个人资料\"])}\n },\n \"time\": {\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 小时\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 小时\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"还有 \", _interpolate(_list(0))])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 之前\"])},\n \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分钟\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分钟\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刚刚\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刚刚\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 周\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 周\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])},\n \"unit\": {\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 小时\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 时\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 个月\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 周\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 周\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])}\n }\n },\n \"timeline\": {\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"折叠\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"对话\"])},\n \"error_fetching\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"获取更新时发生错误\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载更早的状态\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这条内容仅关注者可见,或者是私信,因此不能转发\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发了\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示新内容\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已是最新\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有更多的状态\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有状态更新\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重新载入\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"取得时间轴时发生错误:\", _interpolate(_list(0))])},\n \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"丢失实时连接:CloseEvent code \", _interpolate(_list(0))])},\n \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已建立实时连接\"])},\n \"quick_view_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"快速视图设置\"])},\n \"quick_filter_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"快速过滤设置\"])}\n },\n \"status\": {\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除状态\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在个人资料置顶\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消在个人资料置顶\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"置顶\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要删除这条状态吗?\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回复\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回复:\"])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏对话\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"对话取消隐藏\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏内容\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示内容\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏此部分标题\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示全部标题\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"同主题帖子已被隐藏\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"复制状态链接\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"状态不可取得\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消书签\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"书签\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\",含有过滤词:\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"该状态已被删除\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"外部来源\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展开\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(你)\"])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"还有 \", _interpolate(_named(\"number\")), \" 个\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"文章有 \", _interpolate(_named(\"number\")), \" 个附件\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"折起附件\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示所有附件\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预览描述(打开附件能看完整描述)\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏附件\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除附件\"])},\n \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"停止 Flash 播放器\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"把附件左移\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"打开图库\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏这个同主题帖子\"])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示这个同主题帖子\"])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"查看这个同主题帖子的剩余部分(一共有 \", _interpolate(_named(\"numStatus\")), \" 个状态)\"])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"查看这个状态下的别的 \", _interpolate(_named(\"numReplies\")), \" 个回复\"])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"显示完整对话(还有 \", _interpolate(_named(\"numStatus\")), \" 个状态)\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"回复(另外 +\", _interpolate(_named(\"numReplies\")), \" 个):\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"把附件右移\"])},\n \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"显示这个同主题帖子下的所有东西(一共有 \", _interpolate(_named(\"numStatus\")), \" 个状态,最大深度 \", _interpolate(_named(\"depth\")), \")\"])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只显示这个状态的回复\"])},\n \"repeat_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要转发这条状态吗?\"])},\n \"repeat_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认转发\"])},\n \"repeat_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发\"])},\n \"repeat_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要转发\"])},\n \"edit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑状态\"])},\n \"edited_at\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(最后编辑于 \", _interpolate(_named(\"time\")), \")\"])},\n \"delete_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认删除\"])},\n \"delete_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除\"])},\n \"delete_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留\"])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在媒体模式中显示\"])},\n \"status_history\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"状态历史\"])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"核准\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已屏蔽!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请求已发送!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请求中…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消关注\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在关注\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注者\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在关注!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注了你!\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"就是你!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒体\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已隐藏\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"每天\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"跨站关注\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"报告\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"状态\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"订阅\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"退订\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消屏蔽\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在取消屏蔽…\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在屏蔽…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消隐藏\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消隐藏中…\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏中…\"])},\n \"admin_menu\": {\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"仲裁\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"赋予管理权限\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤销管理权限\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"赋予监察员权限\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤销监察员权限\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"激活账号\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭账号\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除账号\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"标记所有的帖子都是 - 工作场合不适\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从帖子里删除媒体文件\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"强制帖子为不公开\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"强制帖子为只有关注者可看\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁止从远程实例关注用户\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"完全禁止关注用户\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从联合实例中禁止用户帖子\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除用户\"])},\n \"delete_user_data_and_deactivate_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这将永久删除该账户的数据并停用该账户。你完全确定吗?\"])}\n },\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已隐藏\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示转发\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏转发\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"消息\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"机器人\"])},\n \"highlight\": {\n \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"侧边条纹\"])},\n \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"条纹背景\"])},\n \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"单一颜色背景\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不突出显示\"])}\n },\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑个人资料\"])},\n \"approve_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认批准\"])},\n \"approve_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"批准\"])},\n \"block_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽\"])},\n \"block_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要屏蔽\"])},\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已停用\"])},\n \"deny_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认拒绝\"])},\n \"deny_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝\"])},\n \"deny_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要拒绝\"])},\n \"deny_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您是否要拒绝 \", _interpolate(_named(\"user\")), \" 的关注请求?\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消请求\"])},\n \"unfollow_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认取消关注\"])},\n \"unfollow_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您确定要取消关注 \", _interpolate(_named(\"user\")), \" 吗?\"])},\n \"unfollow_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消关注\"])},\n \"unfollow_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要取消关注\"])},\n \"mute_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认隐藏\"])},\n \"mute_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏\"])},\n \"mute_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要隐藏\"])},\n \"mute_duration_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"让这个用户隐藏(0表示无限期):\"])},\n \"remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除关注者\"])},\n \"remove_follower_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认移除关注者\"])},\n \"remove_follower_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留\"])},\n \"remove_follower_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您确定要将 \", _interpolate(_named(\"user\")), \" 从您的关注者里移除吗?\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"生于 \", _interpolate(_named(\"birthday\"))])},\n \"note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备注\"])},\n \"approve_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要批准\"])},\n \"approve_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您是否要批准 \", _interpolate(_named(\"user\")), \" 的关注请求?\"])},\n \"block_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认屏蔽\"])},\n \"block_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您确定要屏蔽 \", _interpolate(_named(\"user\")), \" 吗?\"])},\n \"mute_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您确定要隐藏 \", _interpolate(_named(\"user\")), \" 吗?\"])},\n \"remove_follower_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除\"])},\n \"note_blank\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(空)\"])},\n \"edit_note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑备注\"])},\n \"edit_note_apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"应用\"])},\n \"edit_note_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户时间线\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抱歉,此个人资料不存在。\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抱歉,载入个人资料时出错。\"])}\n },\n \"user_reporting\": {\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"报告 \", _interpolate(_list(0))])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此报告会发送给您的实例监察员。您可以在下面提供更多详细信息解释报告的缘由:\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"其它信息\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这个账号来自另一个服务器。是否同时发送一份报告副本到那里?\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"转发 \", _interpolate(_list(0))])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当处理您的请求时,发生了一个错误。\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推荐关注\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上传媒体\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回复\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户设置\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝关注请求\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加互动\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"书签\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"接受关注请求\"])},\n \"toggle_expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展开或折叠通知以显示帖子全文\"])},\n \"toggle_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展开或折叠通知以显示已隐藏的内容\"])},\n \"autocomplete_available\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"共有 \", _interpolate(_named(\"number\")), \" 个结果可用。使用向上和向下键浏览它们。\"])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上传不成功。\"])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"文件太大了 [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"迟些再试\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"上传错误:\", _interpolate(_list(0))])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"人\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"话题标签\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" 人正在讨论\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" 人正在讨论\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有搜索结果\"])},\n \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有更多结果\"])},\n \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载更多结果\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"忘记密码了?\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置密码\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入您的电邮地址或者用户名,我们将发送一个链接到您的邮箱,用于重置密码。\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您的电邮地址或者用户名\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"检查您的邮箱,会有一个链接用于重置密码。\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回到首页\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您达到了尝试次数的上限,请稍后再试。\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密码重置已被禁用。请联系您的实例管理员。\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您必须重置密码,但是密码重置被禁用了。请联系您所在实例的管理员。\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您必须重置密码才能登陆。\"])}\n },\n \"remote_user_resolver\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未找到。\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索\"])},\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"远程用户解析器\"])}\n },\n \"emoji\": {\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"选择器保持打开\"])},\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"贴纸\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode 表情符号\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自定义表情符号\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"插入表情符号\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索表情符号\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"表情符号\"])},\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"加载所有表情符号(共 \", _interpolate(_named(\"emojiAmount\")), \" 个)\"])},\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"最先加载的 \", _interpolate(_named(\"saneAmount\")), \" 表情符号,加载全部表情符号可能会带来性能问题。\"])},\n \"unicode_groups\": {\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"旗帜\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"饮食\"])},\n \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"物件\"])},\n \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"人和身体\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"符号\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"旅行和地点\"])},\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"活动\"])},\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"动物和自然\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"表情与情感\"])}\n },\n \"regional_indicator\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"地区指示符 \", _interpolate(_named(\"letter\"))])},\n \"unpacked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拆分的表情符号\"])}\n },\n \"about\": {\n \"mrf\": {\n \"simple\": {\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本实例向以下实例仅发送公开的帖子:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隔离\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本实例不会接收来自下列实例的消息:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本实例只接收来自下列实例的消息:\"])},\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"对于特定实例的策略\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"接受\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除媒体\"])},\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本实例将来自以下实例的媒体内容强制设置为敏感内容:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"强制设置媒体为敏感内容\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本实例移除来自以下实例的媒体内容:\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"该实例在从“已知网络”时间线上移除了下列实例:\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从“已知网络”时间线上移除\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"理由\"])},\n \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"无\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"实例\"])}\n },\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF 策略会影响本实例的互通行为。以下策略已启用:\"])},\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已启用的 MRF 策略\"])},\n \"keyword\": {\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从“全部已知网络”时间线上移除\"])},\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关键词策略\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"替换\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝\"])}\n },\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"联邦互通\"])}\n },\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理人员\"])}\n },\n \"domain_mute_card\": {\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在取消隐藏…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消隐藏\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏中…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏\"])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 无法访问浏览器储存。您的登陆以及本地设置将不会被保存,您也可能遇到未知问题。请尝试启用 cookies。\"])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"留言板\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"今天\"])}\n },\n \"file_type\": {\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文件\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"图片\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"视频\"])},\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"音频\"])}\n },\n \"chats\": {\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您还没有任何聊天记录。开始聊天吧!\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发送消息时出了点问题。\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载聊天时出了点问题。\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要删除此消息吗?\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"无法发布空消息\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新聊天\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"发消息给 \", _interpolate(_named(\"nickname\"))])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你:\"])}\n },\n \"announcements\": {\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"标为已读\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发布公告\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在这里输入公告内容...\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发布\"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"错误:\", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"起始时间: \"])},\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"终止时间: \"])},\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这是全天的事件\"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"发表于 \", _interpolate(_named(\"time\"))])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"开始于 \", _interpolate(_named(\"time\"))])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"结束于 \", _interpolate(_named(\"time\"))])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这个公告不活跃\"])}\n },\n \"report\": {\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"被举报者:\"])},\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已关闭\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已解决\"])},\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"举报者:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"开启\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已举报的状态:\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备注:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"状态:\"])}\n },\n \"unicode_domain_indicator\": {\n \"tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此域名包含非 ascii 字符。\"])}\n },\n \"update\": {\n \"update_bugs_gitlab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma GitLab\"])},\n \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"关于变化的更多细节,请参见 \", _interpolate(_named(\"theFullChangelog\")), \" 。\"])},\n \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"完整的更新日志\"])},\n \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请忍耐一下\"])},\n \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"我们已经有一段时间没有发布发行版,所以事情的外观和感觉可能与你习惯的不一样。\"])},\n \"update_bugs\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"请在 \", _interpolate(_named(\"pleromaGitlab\")), \" 上报告任何问题和bug,因为我们已经改变了很多,虽然我们进行了彻底的测试,并且自己使用了开发版本,但我们可能错过了一些东西。我们欢迎你对你可能遇到的问题或如何改进Pleroma和Pleroma-FE提出反馈和建议。\"])},\n \"art_by\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Art by \", _interpolate(_named(\"linkToArtist\"))])}\n },\n \"lists\": {\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索用户\"])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"创建\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存更改\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除列表\"])},\n \"following_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"限制于正在关注\"])},\n \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理列表\"])},\n \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理列表成员\"])},\n \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索更多用户\"])},\n \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从列表中移除\"])},\n \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加到列表\"])},\n \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已在列表中\"])},\n \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"正在编辑列表 \", _interpolate(_named(\"listTitle\"))])},\n \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在创建新的列表\"])},\n \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存标题\"])},\n \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"真的要删除列表吗?\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"操作列表时出错:\", _interpolate(_list(0))])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列表\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新的列表\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列表标题\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","list","_list","named","_named","plural","_plural"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js b/priv/static/static/js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[5929],{4425:(r,n,e)=>{e.r(n),e.d(n,{default:()=>t});const t={chat:{title:r=>{const{normalize:n}=r;return n(["聊天"])}},exporter:{export:r=>{const{normalize:n}=r;return n(["导出"])},processing:r=>{const{normalize:n}=r;return n(["正在处理,稍后会提示您下载文件"])}},features_panel:{chat:r=>{const{normalize:n}=r;return n(["聊天"])},gopher:r=>{const{normalize:n}=r;return n(["Gopher"])},media_proxy:r=>{const{normalize:n}=r;return n(["媒体代理"])},scope_options:r=>{const{normalize:n}=r;return n(["可见范围设置"])},text_limit:r=>{const{normalize:n}=r;return n(["文字数量限制"])},title:r=>{const{normalize:n}=r;return n(["功能"])},who_to_follow:r=>{const{normalize:n}=r;return n(["推荐关注"])},pleroma_chat_messages:r=>{const{normalize:n}=r;return n(["Pleroma 聊天"])},upload_limit:r=>{const{normalize:n}=r;return n(["上传限制"])},shout:r=>{const{normalize:n}=r;return n(["留言板"])}},finder:{error_fetching_user:r=>{const{normalize:n}=r;return n(["获取用户时发生错误"])},find_user:r=>{const{normalize:n}=r;return n(["寻找用户"])}},general:{apply:r=>{const{normalize:n}=r;return n(["应用"])},submit:r=>{const{normalize:n}=r;return n(["提交"])},more:r=>{const{normalize:n}=r;return n(["更多"])},generic_error:r=>{const{normalize:n}=r;return n(["发生了一个错误"])},optional:r=>{const{normalize:n}=r;return n(["可选"])},show_more:r=>{const{normalize:n}=r;return n(["展开"])},show_less:r=>{const{normalize:n}=r;return n(["收起"])},cancel:r=>{const{normalize:n}=r;return n(["取消"])},disable:r=>{const{normalize:n}=r;return n(["禁用"])},enable:r=>{const{normalize:n}=r;return n(["启用"])},confirm:r=>{const{normalize:n}=r;return n(["确认"])},verify:r=>{const{normalize:n}=r;return n(["验证"])},dismiss:r=>{const{normalize:n}=r;return n(["忽略"])},peek:r=>{const{normalize:n}=r;return n(["预览"])},close:r=>{const{normalize:n}=r;return n(["关闭"])},retry:r=>{const{normalize:n}=r;return n(["重试"])},error_retry:r=>{const{normalize:n}=r;return n(["请重试"])},loading:r=>{const{normalize:n}=r;return n(["载入中…"])},role:{moderator:r=>{const{normalize:n}=r;return n(["监察员"])},admin:r=>{const{normalize:n}=r;return n(["管理员"])}},flash_content:r=>{const{normalize:n}=r;return n(["点击以使用 Ruffle 显示 Flash 内容(实验性,可能无效)。"])},flash_security:r=>{const{normalize:n}=r;return n(["注意这可能有潜在的危险,因为 Flash 内容仍然是任意的代码。"])},flash_fail:r=>{const{normalize:n}=r;return n(["Flash 内容加载失败,请在控制台查看详情。"])},scope_in_timeline:{public:r=>{const{normalize:n}=r;return n(["公开"])},direct:r=>{const{normalize:n}=r;return n(["私讯"])},private:r=>{const{normalize:n}=r;return n(["仅关注者"])},unlisted:r=>{const{normalize:n}=r;return n(["列外"])}},scroll_to_top:r=>{const{normalize:n}=r;return n(["滚动至顶"])},generic_error_message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["发生一个错误:",e(t(0))])},never_show_again:r=>{const{normalize:n}=r;return n(["不再显示"])},undo:r=>{const{normalize:n}=r;return n(["撤销"])},yes:r=>{const{normalize:n}=r;return n(["是"])},no:r=>{const{normalize:n}=r;return n(["否"])},unpin:r=>{const{normalize:n}=r;return n(["取消固定该项"])},pin:r=>{const{normalize:n}=r;return n(["固定该项"])}},image_cropper:{crop_picture:r=>{const{normalize:n}=r;return n(["裁剪图片"])},save:r=>{const{normalize:n}=r;return n(["保存"])},save_without_cropping:r=>{const{normalize:n}=r;return n(["保存未经裁剪的图片"])},cancel:r=>{const{normalize:n}=r;return n(["取消"])}},importer:{submit:r=>{const{normalize:n}=r;return n(["提交"])},success:r=>{const{normalize:n}=r;return n(["导入成功。"])},error:r=>{const{normalize:n}=r;return n(["导入此文件时出现一个错误。"])}},login:{login:r=>{const{normalize:n}=r;return n(["登录"])},description:r=>{const{normalize:n}=r;return n(["用 OAuth 登录"])},logout:r=>{const{normalize:n}=r;return n(["登出"])},password:r=>{const{normalize:n}=r;return n(["密码"])},placeholder:r=>{const{normalize:n}=r;return n(["例如:lain"])},register:r=>{const{normalize:n}=r;return n(["注册"])},username:r=>{const{normalize:n}=r;return n(["用户名"])},hint:r=>{const{normalize:n}=r;return n(["登录后加入讨论"])},authentication_code:r=>{const{normalize:n}=r;return n(["验证码"])},enter_recovery_code:r=>{const{normalize:n}=r;return n(["输入一个恢复码"])},enter_two_factor_code:r=>{const{normalize:n}=r;return n(["输入一个双重因素验证码"])},recovery_code:r=>{const{normalize:n}=r;return n(["恢复码"])},heading:{totp:r=>{const{normalize:n}=r;return n(["双重因素验证"])},recovery:r=>{const{normalize:n}=r;return n(["双重因素恢复"])}},logout_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要登出"])},logout_confirm_title:r=>{const{normalize:n}=r;return n(["确认登出"])},logout_confirm_accept_button:r=>{const{normalize:n}=r;return n(["登出"])},logout_confirm:r=>{const{normalize:n}=r;return n(["您确定要登出吗?"])}},media_modal:{previous:r=>{const{normalize:n}=r;return n(["往前"])},next:r=>{const{normalize:n}=r;return n(["往后"])},hide:r=>{const{normalize:n}=r;return n(["关闭媒体查看器"])},counter:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("current"))," / ",e(t("total"))])}},nav:{about:r=>{const{normalize:n}=r;return n(["关于"])},back:r=>{const{normalize:n}=r;return n(["后退"])},chat:r=>{const{normalize:n}=r;return n(["本站聊天"])},friend_requests:r=>{const{normalize:n}=r;return n(["关注请求"])},mentions:r=>{const{normalize:n}=r;return n(["提及"])},interactions:r=>{const{normalize:n}=r;return n(["互动"])},dms:r=>{const{normalize:n}=r;return n(["私信"])},public_tl:r=>{const{normalize:n}=r;return n(["公共时间线"])},timeline:r=>{const{normalize:n}=r;return n(["时间线"])},twkn:r=>{const{normalize:n}=r;return n(["已知网络"])},user_search:r=>{const{normalize:n}=r;return n(["用户搜索"])},search:r=>{const{normalize:n}=r;return n(["搜索"])},who_to_follow:r=>{const{normalize:n}=r;return n(["推荐关注"])},preferences:r=>{const{normalize:n}=r;return n(["偏好设置"])},administration:r=>{const{normalize:n}=r;return n(["管理员"])},chats:r=>{const{normalize:n}=r;return n(["聊天"])},timelines:r=>{const{normalize:n}=r;return n(["时间线"])},bookmarks:r=>{const{normalize:n}=r;return n(["书签"])},home_timeline:r=>{const{normalize:n}=r;return n(["主页时间线"])},lists:r=>{const{normalize:n}=r;return n(["列表"])},edit_finish:r=>{const{normalize:n}=r;return n(["完成编辑"])},mobile_notifications:r=>{const{normalize:n}=r;return n(["打开通知(有未读的)"])},mobile_notifications_close:r=>{const{normalize:n}=r;return n(["关闭通知"])},announcements:r=>{const{normalize:n}=r;return n(["公告"])},edit_nav_mobile:r=>{const{normalize:n}=r;return n(["自定义导航栏"])},edit_pinned:r=>{const{normalize:n}=r;return n(["编辑固定的项目"])},mobile_sidebar:r=>{const{normalize:n}=r;return n(["切换移动设备侧栏"])},search_close:r=>{const{normalize:n}=r;return n(["关闭搜索栏"])}},notifications:{broken_favorite:r=>{const{normalize:n}=r;return n(["未知的状态,正在搜索中…"])},favorited_you:r=>{const{normalize:n}=r;return n(["喜欢了你的状态"])},followed_you:r=>{const{normalize:n}=r;return n(["关注了你"])},load_older:r=>{const{normalize:n}=r;return n(["加载更早的通知"])},notifications:r=>{const{normalize:n}=r;return n(["通知"])},read:r=>{const{normalize:n}=r;return n(["已阅!"])},repeated_you:r=>{const{normalize:n}=r;return n(["转发了你的状态"])},no_more_notifications:r=>{const{normalize:n}=r;return n(["没有更多的通知"])},reacted_with:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["作出了 ",e(t(0))," 的反应"])},migrated_to:r=>{const{normalize:n}=r;return n(["迁移到了"])},follow_request:r=>{const{normalize:n}=r;return n(["想要关注你"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["取得通知时发生错误:",e(t(0))])},poll_ended:r=>{const{normalize:n}=r;return n(["投票结束了"])},submitted_report:r=>{const{normalize:n}=r;return n(["提交举报"])}},polls:{add_poll:r=>{const{normalize:n}=r;return n(["增加投票"])},add_option:r=>{const{normalize:n}=r;return n(["增加选项"])},option:r=>{const{normalize:n}=r;return n(["选项"])},votes:r=>{const{normalize:n}=r;return n(["投票"])},vote:r=>{const{normalize:n}=r;return n(["投票"])},type:r=>{const{normalize:n}=r;return n(["投票类型"])},single_choice:r=>{const{normalize:n}=r;return n(["单选"])},multiple_choices:r=>{const{normalize:n}=r;return n(["多选"])},expiry:r=>{const{normalize:n}=r;return n(["投票期限"])},expires_in:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["投票于 ",e(t(0))," 后结束"])},expired:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["投票 ",e(t(0))," 前已结束"])},not_enough_options:r=>{const{normalize:n}=r;return n(["投票的选项太少"])},votes_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 票"]),n([e(t("count"))," 票"])])},people_voted_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 人已投票"]),n([e(t("count"))," 人已投票"])])}},stickers:{add_sticker:r=>{const{normalize:n}=r;return n(["添加贴纸"])}},interactions:{favs_repeats:r=>{const{normalize:n}=r;return n(["转发和喜欢"])},follows:r=>{const{normalize:n}=r;return n(["新的关注者"])},load_older:r=>{const{normalize:n}=r;return n(["加载更早的互动"])},moves:r=>{const{normalize:n}=r;return n(["用户迁移"])},reports:r=>{const{normalize:n}=r;return n(["举报"])},emoji_reactions:r=>{const{normalize:n}=r;return n(["表情回应"])}},post_status:{new_status:r=>{const{normalize:n}=r;return n(["发布新状态"])},account_not_locked_warning:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["你的帐号没有 ",e(t(0)),"。任何人都可以关注你并浏览你的上锁内容。"])},account_not_locked_warning_link:r=>{const{normalize:n}=r;return n(["上锁"])},attachments_sensitive:r=>{const{normalize:n}=r;return n(["标记附件为敏感内容"])},content_type:{"text/plain":r=>{const{normalize:n}=r;return n(["纯文本"])},"text/html":r=>{const{normalize:n}=r;return n(["HTML"])},"text/markdown":r=>{const{normalize:n}=r;return n(["Markdown"])},"text/bbcode":r=>{const{normalize:n}=r;return n(["BBCode"])}},content_warning:r=>{const{normalize:n}=r;return n(["主题(可选)"])},default:r=>{const{normalize:n}=r;return n(["刚刚抵达上海。"])},direct_warning_to_all:r=>{const{normalize:n}=r;return n(["本条内容只有被提及的用户能够看到。"])},direct_warning_to_first_only:r=>{const{normalize:n}=r;return n(["本条内容只有被在消息开始处提及的用户能够看到。"])},posting:r=>{const{normalize:n}=r;return n(["发送中"])},scope_notice:{public:r=>{const{normalize:n}=r;return n(["本条内容可以被所有人看到"])},private:r=>{const{normalize:n}=r;return n(["关注你的人才能看到本条内容"])},unlisted:r=>{const{normalize:n}=r;return n(["本条内容既不在公共时间线,也不会在所有已知网络上可见"])}},scope:{direct:r=>{const{normalize:n}=r;return n(["私信 - 只发送给被提及的用户"])},private:r=>{const{normalize:n}=r;return n(["仅关注者 - 只有关注了你的人能看到"])},public:r=>{const{normalize:n}=r;return n(["公共 - 发送到公共时间轴"])},unlisted:r=>{const{normalize:n}=r;return n(["不公开 - 不会发送到公共时间轴"])}},preview_empty:r=>{const{normalize:n}=r;return n(["空的"])},preview:r=>{const{normalize:n}=r;return n(["预览"])},media_description:r=>{const{normalize:n}=r;return n(["媒体描述"])},media_description_error:r=>{const{normalize:n}=r;return n(["更新媒体失败,请重试"])},empty_status_error:r=>{const{normalize:n}=r;return n(["不能发布没有内容、没有附件的发文"])},post:r=>{const{normalize:n}=r;return n(["发送"])},edit_remote_warning:r=>{const{normalize:n}=r;return n(["其它远程实例可能不支持编辑并且无法接收您的帖子的最新版本。"])},edit_unsupported_warning:r=>{const{normalize:n}=r;return n(["Pleroma 不支持对提及或投票进行编辑。"])},edit_status:r=>{const{normalize:n}=r;return n(["编辑状态"])},content_type_selection:r=>{const{normalize:n}=r;return n(["发帖格式"])},scope_notice_dismiss:r=>{const{normalize:n}=r;return n(["关闭此提示"])}},registration:{bio:r=>{const{normalize:n}=r;return n(["简介"])},email:r=>{const{normalize:n}=r;return n(["电子邮箱"])},fullname:r=>{const{normalize:n}=r;return n(["显示名称"])},password_confirm:r=>{const{normalize:n}=r;return n(["确认密码"])},registration:r=>{const{normalize:n}=r;return n(["注册"])},token:r=>{const{normalize:n}=r;return n(["邀请码"])},captcha:r=>{const{normalize:n}=r;return n(["CAPTCHA"])},new_captcha:r=>{const{normalize:n}=r;return n(["点击图片获取新的验证码"])},username_placeholder:r=>{const{normalize:n}=r;return n(["例如:lain"])},fullname_placeholder:r=>{const{normalize:n}=r;return n(["例如:岩仓玲音"])},bio_placeholder:r=>{const{normalize:n}=r;return n(["例如:\n你好,我是玲音。\n我是一个住在日本郊区的动画少女。你可能在 Wired 见过我。"])},validations:{username_required:r=>{const{normalize:n}=r;return n(["不能留空"])},fullname_required:r=>{const{normalize:n}=r;return n(["不能留空"])},email_required:r=>{const{normalize:n}=r;return n(["不能留空"])},password_required:r=>{const{normalize:n}=r;return n(["不能留空"])},password_confirmation_required:r=>{const{normalize:n}=r;return n(["不能留空"])},password_confirmation_match:r=>{const{normalize:n}=r;return n(["密码不一致"])},birthday_required:r=>{const{normalize:n}=r;return n(["不能为空"])},birthday_min_age:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["必须在 ",e(t("date"))," 或之前"])}},reason_placeholder:r=>{const{normalize:n}=r;return n(["此实例的注册需要手动批准。\n请让管理员知道您为什么想要注册。"])},reason:r=>{const{normalize:n}=r;return n(["注册理由"])},register:r=>{const{normalize:n}=r;return n(["注册"])},email_language:r=>{const{normalize:n}=r;return n(["你想从服务器收到什么语言的邮件?"])},bio_optional:r=>{const{normalize:n}=r;return n(["介绍(可选)"])},email_optional:r=>{const{normalize:n}=r;return n(["电子邮件(可选)"])},birthday:r=>{const{normalize:n}=r;return n(["生日:"])},birthday_optional:r=>{const{normalize:n}=r;return n(["生日(可选):"])}},selectable_list:{select_all:r=>{const{normalize:n}=r;return n(["选择全部"])}},settings:{app_name:r=>{const{normalize:n}=r;return n(["App 名称"])},security:r=>{const{normalize:n}=r;return n(["安全"])},enter_current_password_to_confirm:r=>{const{normalize:n}=r;return n(["输入您当前的密码来确认您的身份"])},mfa:{otp:r=>{const{normalize:n}=r;return n(["OTP"])},setup_otp:r=>{const{normalize:n}=r;return n(["设置 OTP"])},wait_pre_setup_otp:r=>{const{normalize:n}=r;return n(["预设 OTP"])},confirm_and_enable:r=>{const{normalize:n}=r;return n(["确认并启用 OTP"])},title:r=>{const{normalize:n}=r;return n(["双因素验证"])},generate_new_recovery_codes:r=>{const{normalize:n}=r;return n(["生成新的恢复码"])},warning_of_generate_new_codes:r=>{const{normalize:n}=r;return n(["当您生成新的恢复码时,您旧的恢复码将会失效。"])},recovery_codes:r=>{const{normalize:n}=r;return n(["恢复码。"])},waiting_a_recovery_codes:r=>{const{normalize:n}=r;return n(["正在接收备份码…"])},recovery_codes_warning:r=>{const{normalize:n}=r;return n(["抄写这些号码,或者将其保存在安全的地方。这些号码不会再次显示。如果您无法访问您的 2FA app,也丢失了您的恢复码,您就再也无法登录您的账号了。"])},authentication_methods:r=>{const{normalize:n}=r;return n(["身份验证方法"])},scan:{title:r=>{const{normalize:n}=r;return n(["扫一下"])},desc:r=>{const{normalize:n}=r;return n(["使用您的双因素验证 app,扫描这个二维码,或者输入这些文字密钥:"])},secret_code:r=>{const{normalize:n}=r;return n(["密钥"])}},verify:{desc:r=>{const{normalize:n}=r;return n(["要启用双因素验证,请输入您的双因素验证 app 里的数字:"])}}},attachmentRadius:r=>{const{normalize:n}=r;return n(["附件"])},attachments:r=>{const{normalize:n}=r;return n(["附件"])},avatar:r=>{const{normalize:n}=r;return n(["头像"])},avatarAltRadius:r=>{const{normalize:n}=r;return n(["头像(通知)"])},avatarRadius:r=>{const{normalize:n}=r;return n(["头像"])},background:r=>{const{normalize:n}=r;return n(["背景"])},bio:r=>{const{normalize:n}=r;return n(["简介"])},block_export:r=>{const{normalize:n}=r;return n(["屏蔽名单导出"])},block_export_button:r=>{const{normalize:n}=r;return n(["导出你的屏蔽名单到一个 csv 文件"])},block_import:r=>{const{normalize:n}=r;return n(["屏蔽名单导入"])},block_import_error:r=>{const{normalize:n}=r;return n(["导入屏蔽名单出错"])},blocks_imported:r=>{const{normalize:n}=r;return n(["屏蔽名单导入成功!需要一点时间来处理。"])},blocks_tab:r=>{const{normalize:n}=r;return n(["屏蔽"])},btnRadius:r=>{const{normalize:n}=r;return n(["按钮"])},cBlue:r=>{const{normalize:n}=r;return n(["蓝色(回复,关注)"])},cGreen:r=>{const{normalize:n}=r;return n(["绿色(转发)"])},cOrange:r=>{const{normalize:n}=r;return n(["橙色(喜欢)"])},cRed:r=>{const{normalize:n}=r;return n(["红色(取消)"])},change_password:r=>{const{normalize:n}=r;return n(["修改密码"])},change_password_error:r=>{const{normalize:n}=r;return n(["修改密码的时候出了点问题。"])},changed_password:r=>{const{normalize:n}=r;return n(["成功修改了密码!"])},collapse_subject:r=>{const{normalize:n}=r;return n(["折叠带主题的内容"])},composing:r=>{const{normalize:n}=r;return n(["撰写"])},confirm_new_password:r=>{const{normalize:n}=r;return n(["确认新密码"])},current_avatar:r=>{const{normalize:n}=r;return n(["当前头像"])},current_password:r=>{const{normalize:n}=r;return n(["当前密码"])},current_profile_banner:r=>{const{normalize:n}=r;return n(["您当前的横幅图片"])},data_import_export_tab:r=>{const{normalize:n}=r;return n(["数据导入/导出"])},default_vis:r=>{const{normalize:n}=r;return n(["默认可见范围"])},delete_account:r=>{const{normalize:n}=r;return n(["删除账户"])},delete_account_description:r=>{const{normalize:n}=r;return n(["永久删除你的帐号和所有数据。"])},delete_account_error:r=>{const{normalize:n}=r;return n(["删除账户时发生错误,如果一直删除不了,请联系实例管理员。"])},delete_account_instructions:r=>{const{normalize:n}=r;return n(["在下面输入您的密码来确认删除账户。"])},avatar_size_instruction:r=>{const{normalize:n}=r;return n(["推荐的头像图片最小尺寸为 150x150 像素。"])},export_theme:r=>{const{normalize:n}=r;return n(["导出预置主题"])},filtering:r=>{const{normalize:n}=r;return n(["过滤器"])},filtering_explanation:r=>{const{normalize:n}=r;return n(["所有包含以下词汇的内容都会被隐藏,一行一个"])},follow_export:r=>{const{normalize:n}=r;return n(["导出关注"])},follow_export_button:r=>{const{normalize:n}=r;return n(["将关注导出成 csv 文件"])},follow_import:r=>{const{normalize:n}=r;return n(["导入关注"])},follow_import_error:r=>{const{normalize:n}=r;return n(["导入关注时错误"])},follows_imported:r=>{const{normalize:n}=r;return n(["关注已导入!尚需要一些时间来处理。"])},foreground:r=>{const{normalize:n}=r;return n(["前景"])},general:r=>{const{normalize:n}=r;return n(["通用"])},hide_attachments_in_convo:r=>{const{normalize:n}=r;return n(["在对话中隐藏附件"])},hide_attachments_in_tl:r=>{const{normalize:n}=r;return n(["在时间线上隐藏附件"])},hide_muted_posts:r=>{const{normalize:n}=r;return n(["不显示被隐藏的用户的帖子"])},max_thumbnails:r=>{const{normalize:n}=r;return n(["每个帖子最多能显示的缩略图数量"])},hide_isp:r=>{const{normalize:n}=r;return n(["隐藏实例独有的面板"])},preload_images:r=>{const{normalize:n}=r;return n(["预载图片"])},use_one_click_nsfw:r=>{const{normalize:n}=r;return n(["点击一次以打开工作场所不适宜(NSFW)的附件"])},hide_post_stats:r=>{const{normalize:n}=r;return n(["隐藏帖子的统计数据(例如:喜欢的次数)"])},hide_user_stats:r=>{const{normalize:n}=r;return n(["隐藏用户的统计数据(例如:关注者的数量)"])},hide_filtered_statuses:r=>{const{normalize:n}=r;return n(["隐藏过滤的状态"])},import_blocks_from_a_csv_file:r=>{const{normalize:n}=r;return n(["从 csv 文件中导入拉黑名单"])},import_followers_from_a_csv_file:r=>{const{normalize:n}=r;return n(["从 csv 文件中导入关注"])},import_theme:r=>{const{normalize:n}=r;return n(["导入预置主题"])},inputRadius:r=>{const{normalize:n}=r;return n(["输入框"])},checkboxRadius:r=>{const{normalize:n}=r;return n(["复选框"])},instance_default:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["(默认:",e(t("value")),")"])},instance_default_simple:r=>{const{normalize:n}=r;return n(["(默认)"])},interface:r=>{const{normalize:n}=r;return n(["界面"])},interfaceLanguage:r=>{const{normalize:n}=r;return n(["界面语言"])},invalid_theme_imported:r=>{const{normalize:n}=r;return n(["您所选择的主题文件不被 Pleroma 支持,因此主题未被修改。"])},limited_availability:r=>{const{normalize:n}=r;return n(["在您的浏览器中无法使用"])},links:r=>{const{normalize:n}=r;return n(["链接"])},lock_account_description:r=>{const{normalize:n}=r;return n(["您需要手动审核关注请求"])},loop_video:r=>{const{normalize:n}=r;return n(["循环视频"])},loop_video_silent_only:r=>{const{normalize:n}=r;return n(["只循环没有声音的视频(例如:Mastodon 里的“GIF”)"])},mutes_tab:r=>{const{normalize:n}=r;return n(["隐藏"])},play_videos_in_modal:r=>{const{normalize:n}=r;return n(["在弹出框内播放视频"])},use_contain_fit:r=>{const{normalize:n}=r;return n(["生成缩略图时不要裁剪附件"])},name:r=>{const{normalize:n}=r;return n(["名字"])},name_bio:r=>{const{normalize:n}=r;return n(["名字及简介"])},new_password:r=>{const{normalize:n}=r;return n(["新密码"])},notification_visibility:r=>{const{normalize:n}=r;return n(["要显示的通知类型"])},notification_visibility_follows:r=>{const{normalize:n}=r;return n(["关注"])},notification_visibility_likes:r=>{const{normalize:n}=r;return n(["喜欢"])},notification_visibility_mentions:r=>{const{normalize:n}=r;return n(["提及"])},notification_visibility_repeats:r=>{const{normalize:n}=r;return n(["转发"])},no_rich_text_description:r=>{const{normalize:n}=r;return n(["不显示富文本格式"])},no_blocks:r=>{const{normalize:n}=r;return n(["没有屏蔽"])},no_mutes:r=>{const{normalize:n}=r;return n(["没有隐藏"])},hide_follows_description:r=>{const{normalize:n}=r;return n(["不要显示我所关注的人"])},hide_followers_description:r=>{const{normalize:n}=r;return n(["不要显示关注我的人"])},show_admin_badge:r=>{const{normalize:n}=r;return n(["在我的个人资料中显示“管理员”徽章"])},show_moderator_badge:r=>{const{normalize:n}=r;return n(["在我的个人资料中显示“监察员”徽章"])},nsfw_clickthrough:r=>{const{normalize:n}=r;return n(["将不和谐附件和链接预览隐藏,点击才会显示"])},oauth_tokens:r=>{const{normalize:n}=r;return n(["OAuth令牌"])},token:r=>{const{normalize:n}=r;return n(["令牌"])},refresh_token:r=>{const{normalize:n}=r;return n(["刷新令牌"])},valid_until:r=>{const{normalize:n}=r;return n(["有效期至"])},revoke_token:r=>{const{normalize:n}=r;return n(["撤消"])},panelRadius:r=>{const{normalize:n}=r;return n(["面板"])},pause_on_unfocused:r=>{const{normalize:n}=r;return n(["在离开页面时暂停时间线推送"])},presets:r=>{const{normalize:n}=r;return n(["预置"])},profile_background:r=>{const{normalize:n}=r;return n(["个人背景图"])},profile_banner:r=>{const{normalize:n}=r;return n(["横幅图片"])},profile_tab:r=>{const{normalize:n}=r;return n(["个人资料"])},radii_help:r=>{const{normalize:n}=r;return n(["设置界面边缘的圆角 (单位:像素)"])},replies_in_timeline:r=>{const{normalize:n}=r;return n(["时间线中的回复"])},reply_visibility_all:r=>{const{normalize:n}=r;return n(["显示所有回复"])},reply_visibility_following:r=>{const{normalize:n}=r;return n(["只显示发送给我的回复/发送给我关注的用户的回复"])},reply_visibility_self:r=>{const{normalize:n}=r;return n(["只显示发送给我的回复"])},autohide_floating_post_button:r=>{const{normalize:n}=r;return n(["自动隐藏新帖子的按钮(移动设备)"])},saving_err:r=>{const{normalize:n}=r;return n(["保存设置时发生错误"])},saving_ok:r=>{const{normalize:n}=r;return n(["设置已保存"])},search_user_to_block:r=>{const{normalize:n}=r;return n(["搜索你想屏蔽的用户"])},search_user_to_mute:r=>{const{normalize:n}=r;return n(["搜索你想要隐藏的用户"])},security_tab:r=>{const{normalize:n}=r;return n(["安全"])},scope_copy:r=>{const{normalize:n}=r;return n(["回复时复制可见范围(私信中永远会复制)"])},minimal_scopes_mode:r=>{const{normalize:n}=r;return n(["使发文可见范围的选项最少化"])},set_new_avatar:r=>{const{normalize:n}=r;return n(["设置新头像"])},set_new_profile_background:r=>{const{normalize:n}=r;return n(["设置新的个人资料背景"])},set_new_profile_banner:r=>{const{normalize:n}=r;return n(["设置新的横幅图片"])},settings:r=>{const{normalize:n}=r;return n(["设置"])},subject_input_always_show:r=>{const{normalize:n}=r;return n(["总是显示主题框"])},subject_line_behavior:r=>{const{normalize:n}=r;return n(["回复时复制主题"])},subject_line_email:r=>{const{normalize:n}=r;return n(['类似电子邮件: "re: 主题"'])},subject_line_mastodon:r=>{const{normalize:n}=r;return n(["类似 mastodon: 与原主题相同"])},subject_line_noop:r=>{const{normalize:n}=r;return n(["不要复制"])},post_status_content_type:r=>{const{normalize:n}=r;return n(["发文状态内容类型"])},stop_gifs:r=>{const{normalize:n}=r;return n(["鼠标悬停时播放GIF"])},streaming:r=>{const{normalize:n}=r;return n(["滚动到顶部时自动推送新内容"])},text:r=>{const{normalize:n}=r;return n(["文本"])},theme:r=>{const{normalize:n}=r;return n(["主题"])},theme_help:r=>{const{normalize:n}=r;return n(["使用十六进制代码(#rrggbb)来设置主题颜色。"])},theme_help_v2_1:r=>{const{normalize:n}=r;return n(["您也可以通过选中复选框来覆盖某些组件的颜色和透明度。使用“清除所有”按钮来清除所有覆盖设置。"])},theme_help_v2_2:r=>{const{normalize:n}=r;return n(["某些条目下的图标是背景或文本对比指示器,鼠标悬停可以获取详细信息。请记住,使用透明度来显示最差的情况。"])},tooltipRadius:r=>{const{normalize:n}=r;return n(["提醒"])},upload_a_photo:r=>{const{normalize:n}=r;return n(["上传照片"])},user_settings:r=>{const{normalize:n}=r;return n(["用户设置"])},values:{false:r=>{const{normalize:n}=r;return n(["否"])},true:r=>{const{normalize:n}=r;return n(["是"])}},notifications:r=>{const{normalize:n}=r;return n(["通知"])},notification_mutes:r=>{const{normalize:n}=r;return n(["要停止收到某个指定的用户的通知,请使用隐藏功能。"])},notification_blocks:r=>{const{normalize:n}=r;return n(["屏蔽一个用户会停止接收来自该用户的所有通知,并且会取消对该用户的关注。"])},enable_web_push_notifications:r=>{const{normalize:n}=r;return n(["启用 web 推送通知"])},style:{switcher:{keep_color:r=>{const{normalize:n}=r;return n(["保留颜色"])},keep_shadows:r=>{const{normalize:n}=r;return n(["保留阴影"])},keep_opacity:r=>{const{normalize:n}=r;return n(["保留透明度"])},keep_roundness:r=>{const{normalize:n}=r;return n(["保留圆角"])},keep_fonts:r=>{const{normalize:n}=r;return n(["保留字体"])},save_load_hint:r=>{const{normalize:n}=r;return n(['"保留" 选项在选择或加载主题时保留当前设置的选项,在导出主题时还会存储上述选项。当所有复选框未设置时,导出主题将保存所有内容。'])},reset:r=>{const{normalize:n}=r;return n(["重置"])},clear_all:r=>{const{normalize:n}=r;return n(["清除全部"])},clear_opacity:r=>{const{normalize:n}=r;return n(["清除透明度"])},load_theme:r=>{const{normalize:n}=r;return n(["加载主题"])},help:{upgraded_from_v2:r=>{const{normalize:n}=r;return n(["PleromaFE 已升级,主题会与您记忆中的不太一样。"])},older_version_imported:r=>{const{normalize:n}=r;return n(["您导入的文件来自旧版本的 FE。"])},future_version_imported:r=>{const{normalize:n}=r;return n(["您导入的文件来自更高版本的 FE。"])},v2_imported:r=>{const{normalize:n}=r;return n(["您导入的文件是旧版 FE 的。我们尽可能保持兼容性,但还是可能出现不一致的情况。"])},snapshot_source_mismatch:r=>{const{normalize:n}=r;return n(["版本冲突:很有可能是 FE 版本回滚后再次升级了,如果您使用旧版本的 FE 更改了主题那么您可能需要使用旧版本,否则请使用新版本。"])},migration_napshot_gone:r=>{const{normalize:n}=r;return n(["不知出于何种原因,主题快照缺失了,一些地方可能与您印象中的不符。"])},migration_snapshot_ok:r=>{const{normalize:n}=r;return n(["为保万无一失,加载了主题快照。您可以试着加载主题数据。"])},fe_downgraded:r=>{const{normalize:n}=r;return n(["PleromaFE 的版本回滚了。"])},fe_upgraded:r=>{const{normalize:n}=r;return n(["PleromaFE 的主题引擎随着版本更新升级了。"])},snapshot_missing:r=>{const{normalize:n}=r;return n(["在文件中没有主题快照,所以网站外观可能会与原来预想的不同。"])},snapshot_present:r=>{const{normalize:n}=r;return n(["主题快照已加载,因此所有的值均被覆盖。您可以改为加载主题的实际数据。"])}},use_source:r=>{const{normalize:n}=r;return n(["新版本"])},use_snapshot:r=>{const{normalize:n}=r;return n(["老版本"])},keep_as_is:r=>{const{normalize:n}=r;return n(["保持原状"])}},common:{color:r=>{const{normalize:n}=r;return n(["颜色"])},opacity:r=>{const{normalize:n}=r;return n(["透明度"])},contrast:{hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["对比度是 ",e(t("ratio")),", 它 ",e(t("level"))," ",e(t("context"))])},level:{aa:r=>{const{normalize:n}=r;return n(["符合 AA 等级准则(最低)"])},aaa:r=>{const{normalize:n}=r;return n(["符合 AAA 等级准则(推荐)"])},bad:r=>{const{normalize:n}=r;return n(["不符合任何辅助功能指南"])}},context:{"18pt":r=>{const{normalize:n}=r;return n(["大字文本 (18pt+)"])},text:r=>{const{normalize:n}=r;return n(["文本"])}}}},common_colors:{_tab_label:r=>{const{normalize:n}=r;return n(["常规"])},main:r=>{const{normalize:n}=r;return n(["常用颜色"])},foreground_hint:r=>{const{normalize:n}=r;return n(["点击”高级“ 标签进行细致的控制"])},rgbo:r=>{const{normalize:n}=r;return n(["图标,强调,徽章"])}},advanced_colors:{_tab_label:r=>{const{normalize:n}=r;return n(["高级"])},alert:r=>{const{normalize:n}=r;return n(["提醒或警告背景色"])},alert_error:r=>{const{normalize:n}=r;return n(["错误"])},badge:r=>{const{normalize:n}=r;return n(["徽章背景"])},badge_notification:r=>{const{normalize:n}=r;return n(["通知"])},panel_header:r=>{const{normalize:n}=r;return n(["面板标题"])},top_bar:r=>{const{normalize:n}=r;return n(["顶栏"])},borders:r=>{const{normalize:n}=r;return n(["边框"])},buttons:r=>{const{normalize:n}=r;return n(["按钮"])},inputs:r=>{const{normalize:n}=r;return n(["输入框"])},faint_text:r=>{const{normalize:n}=r;return n(["灰度文字"])},chat:{border:r=>{const{normalize:n}=r;return n(["边框"])},outgoing:r=>{const{normalize:n}=r;return n(["发出的"])},incoming:r=>{const{normalize:n}=r;return n(["收到的"])}},disabled:r=>{const{normalize:n}=r;return n(["禁用的"])},pressed:r=>{const{normalize:n}=r;return n(["压下的"])},highlight:r=>{const{normalize:n}=r;return n(["强调元素"])},selectedMenu:r=>{const{normalize:n}=r;return n(["选中的菜单项"])},selectedPost:r=>{const{normalize:n}=r;return n(["选中的发布内容"])},icons:r=>{const{normalize:n}=r;return n(["图标"])},poll:r=>{const{normalize:n}=r;return n(["投票统计图"])},popover:r=>{const{normalize:n}=r;return n(["提示框,菜单,弹出框"])},post:r=>{const{normalize:n}=r;return n(["发布内容/用户简介"])},alert_neutral:r=>{const{normalize:n}=r;return n(["中性"])},alert_warning:r=>{const{normalize:n}=r;return n(["警告"])},tabs:r=>{const{normalize:n}=r;return n(["标签页"])},underlay:r=>{const{normalize:n}=r;return n(["底衬"])},toggled:r=>{const{normalize:n}=r;return n(["按下的"])},wallpaper:r=>{const{normalize:n}=r;return n(["壁纸"])}},radii:{_tab_label:r=>{const{normalize:n}=r;return n(["圆角"])}},shadows:{_tab_label:r=>{const{normalize:n}=r;return n(["阴影和照明"])},component:r=>{const{normalize:n}=r;return n(["组件"])},override:r=>{const{normalize:n}=r;return n(["覆盖"])},shadow_id:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["阴影 #",e(t("value"))])},blur:r=>{const{normalize:n}=r;return n(["模糊"])},spread:r=>{const{normalize:n}=r;return n(["扩散"])},inset:r=>{const{normalize:n}=r;return n(["内阴影"])},hint:r=>{const{normalize:n}=r;return n(["对于阴影你还可以使用 --variable 作为颜色值来使用 CSS3 变量。请注意,这种情况下,透明设置将不起作用。"])},filter_hint:{always_drop_shadow:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["警告,此阴影设置会总是使用 ",e(t(0))," ,如果浏览器支持的话。"])},drop_shadow_syntax:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 不支持参数 ",e(t(1))," 和关键词 ",e(t(2))," 。"])},avatar_inset:r=>{const{normalize:n}=r;return n(["请注意组合两个内部和非内部的阴影到头像上,在透明头像上可能会有意料之外的效果。"])},spread_zero:r=>{const{normalize:n}=r;return n(["阴影的扩散 > 0 会同设置成零一样"])},inset_classic:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["内阴影会使用 ",e(t(0))])}},components:{panel:r=>{const{normalize:n}=r;return n(["面板"])},panelHeader:r=>{const{normalize:n}=r;return n(["面板标题"])},topBar:r=>{const{normalize:n}=r;return n(["顶栏"])},avatar:r=>{const{normalize:n}=r;return n(["用户头像(在个人资料栏)"])},avatarStatus:r=>{const{normalize:n}=r;return n(["用户头像(在帖子显示栏)"])},popup:r=>{const{normalize:n}=r;return n(["弹窗与工具提示"])},button:r=>{const{normalize:n}=r;return n(["按钮"])},buttonHover:r=>{const{normalize:n}=r;return n(["按钮(悬停)"])},buttonPressed:r=>{const{normalize:n}=r;return n(["按钮(压下)"])},buttonPressedHover:r=>{const{normalize:n}=r;return n(["按钮(压下和悬停)"])},input:r=>{const{normalize:n}=r;return n(["输入框"])}},hintV3:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["对于阴影,您还可以使用 ",e(t(0))," 表示法来使用其它颜色插槽。"])}},fonts:{_tab_label:r=>{const{normalize:n}=r;return n(["字体"])},help:r=>{const{normalize:n}=r;return n(["为用户界面的元素选择字体。若选择 “自选”,您必须输入与系统显示完全一致的字体名称。"])},components:{interface:r=>{const{normalize:n}=r;return n(["界面"])},input:r=>{const{normalize:n}=r;return n(["输入框"])},post:r=>{const{normalize:n}=r;return n(["发帖文字"])},postCode:r=>{const{normalize:n}=r;return n(["帖子中使用等间距文字(富文本)"])}},family:r=>{const{normalize:n}=r;return n(["字体名称"])},size:r=>{const{normalize:n}=r;return n(["大小 (in px)"])},weight:r=>{const{normalize:n}=r;return n(["字重 (粗体)"])},custom:r=>{const{normalize:n}=r;return n(["自选"])}},preview:{header:r=>{const{normalize:n}=r;return n(["预览"])},content:r=>{const{normalize:n}=r;return n(["内容"])},error:r=>{const{normalize:n}=r;return n(["错误示例"])},button:r=>{const{normalize:n}=r;return n(["按钮"])},text:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["有堆 ",e(t(0))," 和 ",e(t(1))])},mono:r=>{const{normalize:n}=r;return n(["monospace 内容"])},input:r=>{const{normalize:n}=r;return n(["刚刚抵达上海。"])},faint_link:r=>{const{normalize:n}=r;return n(["帮助手册"])},fine_print:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["阅读我们的 ",e(t(0))," ,然而什么也学不到!"])},header_faint:r=>{const{normalize:n}=r;return n(["这很正常"])},checkbox:r=>{const{normalize:n}=r;return n(["我已经浏览了条款及细则"])},link:r=>{const{normalize:n}=r;return n(["一个棒棒的小小链接"])}}},version:{title:r=>{const{normalize:n}=r;return n(["版本"])},backend_version:r=>{const{normalize:n}=r;return n(["后端版本"])},frontend_version:r=>{const{normalize:n}=r;return n(["前端版本"])}},notification_setting_filters:r=>{const{normalize:n}=r;return n(["过滤器"])},domain_mutes:r=>{const{normalize:n}=r;return n(["域名"])},changed_email:r=>{const{normalize:n}=r;return n(["邮箱修改成功!"])},change_email_error:r=>{const{normalize:n}=r;return n(["修改您的电子邮箱时发生错误。"])},change_email:r=>{const{normalize:n}=r;return n(["修改电子邮箱"])},allow_following_move:r=>{const{normalize:n}=r;return n(["正在关注的账号迁移时自动重新关注"])},notification_setting_privacy_option:r=>{const{normalize:n}=r;return n(["在通知推送中隐藏发送者和内容"])},notification_setting_privacy:r=>{const{normalize:n}=r;return n(["隐私"])},hide_follows_count_description:r=>{const{normalize:n}=r;return n(["不显示关注数"])},notification_visibility_emoji_reactions:r=>{const{normalize:n}=r;return n(["互动"])},notification_visibility_moves:r=>{const{normalize:n}=r;return n(["用户迁移"])},new_email:r=>{const{normalize:n}=r;return n(["新邮箱"])},emoji_reactions_on_timeline:r=>{const{normalize:n}=r;return n(["在时间线上显示表情符号互动"])},notification_setting_hide_notification_contents:r=>{const{normalize:n}=r;return n(["隐藏推送通知中的发送者与内容信息"])},notification_setting_block_from_strangers:r=>{const{normalize:n}=r;return n(["屏蔽来自你没有关注的用户的通知"])},type_domains_to_mute:r=>{const{normalize:n}=r;return n(["搜索需要隐藏的域名"])},useStreamingApi:r=>{const{normalize:n}=r;return n(["实时接收帖子和通知"])},user_mutes:r=>{const{normalize:n}=r;return n(["用户"])},reset_background_confirm:r=>{const{normalize:n}=r;return n(["您确定要重置背景图吗?"])},reset_banner_confirm:r=>{const{normalize:n}=r;return n(["您确定要重置横幅图片吗?"])},reset_avatar_confirm:r=>{const{normalize:n}=r;return n(["您确定要重置头像吗?"])},reset_profile_banner:r=>{const{normalize:n}=r;return n(["重置横幅图片"])},reset_profile_background:r=>{const{normalize:n}=r;return n(["重置个人背景图"])},reset_avatar:r=>{const{normalize:n}=r;return n(["重置头像"])},hide_followers_count_description:r=>{const{normalize:n}=r;return n(["不显示关注者数量"])},profile_fields:{value:r=>{const{normalize:n}=r;return n(["内容"])},name:r=>{const{normalize:n}=r;return n(["标签"])},add_field:r=>{const{normalize:n}=r;return n(["添加字段"])},label:r=>{const{normalize:n}=r;return n(["个人资料元数据"])}},accent:r=>{const{normalize:n}=r;return n(["强调色"])},pad_emoji:r=>{const{normalize:n}=r;return n(["从表情符号选择器插入表情符号时,在表情两侧插入空格"])},discoverable:r=>{const{normalize:n}=r;return n(["允许通过搜索检索等服务找到此账号"])},mutes_and_blocks:r=>{const{normalize:n}=r;return n(["隐藏与屏蔽"])},bot:r=>{const{normalize:n}=r;return n(["这是一个机器人账号"])},fun:r=>{const{normalize:n}=r;return n(["趣味"])},useStreamingApiWarning:r=>{const{normalize:n}=r;return n(["(不推荐使用,试验性,已知会跳过一些帖子)"])},chatMessageRadius:r=>{const{normalize:n}=r;return n(["聊天消息"])},greentext:r=>{const{normalize:n}=r;return n(["Meme 箭头"])},virtual_scrolling:r=>{const{normalize:n}=r;return n(["优化时间线渲染"])},import_mutes_from_a_csv_file:r=>{const{normalize:n}=r;return n(["从 csv 文件导入隐藏名单"])},mutes_imported:r=>{const{normalize:n}=r;return n(["隐藏名单导入成功!处理它们将需要一段时间。"])},mute_import_error:r=>{const{normalize:n}=r;return n(["导入隐藏名单出错"])},mute_import:r=>{const{normalize:n}=r;return n(["隐藏名单导入"])},mute_export_button:r=>{const{normalize:n}=r;return n(["导出你的隐藏名单到一个 csv 文件"])},mute_export:r=>{const{normalize:n}=r;return n(["隐藏名单导出"])},hide_wallpaper:r=>{const{normalize:n}=r;return n(["隐藏实例壁纸"])},setting_changed:r=>{const{normalize:n}=r;return n(["与默认设置不同"])},more_settings:r=>{const{normalize:n}=r;return n(["更多设置"])},sensitive_by_default:r=>{const{normalize:n}=r;return n(["默认标记发文为敏感内容"])},reply_visibility_self_short:r=>{const{normalize:n}=r;return n(["只显示对我本人的回复"])},reply_visibility_following_short:r=>{const{normalize:n}=r;return n(["显示对我关注的人的回复"])},hide_all_muted_posts:r=>{const{normalize:n}=r;return n(["不显示已隐藏的发文"])},hide_media_previews:r=>{const{normalize:n}=r;return n(["隐藏媒体预览"])},word_filter:r=>{const{normalize:n}=r;return n(["词语过滤"])},save:r=>{const{normalize:n}=r;return n(["保存更改"])},file_export_import:{errors:{file_slightly_new:r=>{const{normalize:n}=r;return n(["文件的小版本不同,有些设置可能无法加载"])},file_too_old:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["不兼容的主版本:",e(t("fileMajor")),",文件版本过旧,不受支持(最小设置版本 ",e(t("feMajor")),")"])},file_too_new:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["不兼容的主版本:",e(t("fileMajor")),",此 PleromaFE(设置版本 ",e(t("feMajor")),")过旧,无法处理"])},invalid_file:r=>{const{normalize:n}=r;return n(["所选文件不是受支持的 Pleroma 设置备份。没有进行任何更改。"])}},restore_settings:r=>{const{normalize:n}=r;return n(["从文件恢复设置"])},backup_settings_theme:r=>{const{normalize:n}=r;return n(["备份设置和主题到文件"])},backup_settings:r=>{const{normalize:n}=r;return n(["备份设置到文件"])},backup_restore:r=>{const{normalize:n}=r;return n(["设置备份"])}},right_sidebar:r=>{const{normalize:n}=r;return n(["反转分栏的顺序"])},hide_shoutbox:r=>{const{normalize:n}=r;return n(["隐藏实例留言板"])},expert_mode:r=>{const{normalize:n}=r;return n(["显示高级"])},download_backup:r=>{const{normalize:n}=r;return n(["下载"])},mention_links:r=>{const{normalize:n}=r;return n(["提及链接"])},account_backup:r=>{const{normalize:n}=r;return n(["账号备份"])},account_backup_table_head:r=>{const{normalize:n}=r;return n(["备份"])},remove_backup:r=>{const{normalize:n}=r;return n(["移除"])},list_backups_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["获取备份列表出错:",e(t("error"))])},add_backup:r=>{const{normalize:n}=r;return n(["创建一个新备份"])},added_backup:r=>{const{normalize:n}=r;return n(["创建了一个新备份。"])},account_alias:r=>{const{normalize:n}=r;return n(["账号别名"])},account_alias_table_head:r=>{const{normalize:n}=r;return n(["别名"])},list_aliases_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["获取别名时出错:",e(t("error"))])},hide_list_aliases_error_action:r=>{const{normalize:n}=r;return n(["关闭"])},remove_alias:r=>{const{normalize:n}=r;return n(["移除这个别名"])},new_alias_target:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["添加一个新别名(例如 ",e(t("example")),")"])},added_alias:r=>{const{normalize:n}=r;return n(["别名添加好了。"])},move_account:r=>{const{normalize:n}=r;return n(["移动账号"])},move_account_target:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["目标账号(例如 ",e(t("example")),")"])},moved_account:r=>{const{normalize:n}=r;return n(["账号移动好了。"])},move_account_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["移动账号时出错:",e(t("error"))])},setting_server_side:r=>{const{normalize:n}=r;return n(["这个设置是捆绑到你的个人资料的,能影响所有会话和客户端"])},post_look_feel:r=>{const{normalize:n}=r;return n(["文章的样子跟感受"])},email_language:r=>{const{normalize:n}=r;return n(["从服务器收邮件的语言"])},account_backup_description:r=>{const{normalize:n}=r;return n(["这个允许你下载一份账号信息和文章的存档,但是现在还不能导入到 Pleroma 账号里。"])},backup_not_ready:r=>{const{normalize:n}=r;return n(["备份还没准备好。"])},add_backup_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["添加新备份时出错:",e(t("error"))])},add_alias_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["添加别名时出错:",e(t("error"))])},move_account_notes:r=>{const{normalize:n}=r;return n(["如果你想把账号移动到别的地方,你必须去目标账号,然后加一个指向这里的别名。"])},wordfilter:r=>{const{normalize:n}=r;return n(["词语过滤器"])},user_profiles:r=>{const{normalize:n}=r;return n(["用户资料"])},third_column_mode_notifications:r=>{const{normalize:n}=r;return n(["通知栏"])},backup_running:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n(["此备份正在进行,已处理 ",e(t("number"))," 条记录。"]),n(["此备份正在进行,已处理 ",e(t("number"))," 条记录。"])])},lists_navigation:r=>{const{normalize:n}=r;return n(["在导航中显示列表"])},word_filter_and_more:r=>{const{normalize:n}=r;return n(["词过滤器及其它..."])},backup_failed:r=>{const{normalize:n}=r;return n(["此备份已失败。"])},birthday:{label:r=>{const{normalize:n}=r;return n(["生日"])},show_birthday:r=>{const{normalize:n}=r;return n(["展示我的生日"])}},hide_favorites_description:r=>{const{normalize:n}=r;return n(["不显示我的喜欢列表(人们仍然会收到通知)"])},third_column_mode:r=>{const{normalize:n}=r;return n(["当有足够的空间时,显示第三栏包含"])},third_column_mode_postform:r=>{const{normalize:n}=r;return n(["主要的发文形式和导航"])},columns:r=>{const{normalize:n}=r;return n(["分栏"])},user_popover_avatar_overlay:r=>{const{normalize:n}=r;return n(["在用户头像上显示用户弹出窗口"])},navbar_column_stretch:r=>{const{normalize:n}=r;return n(["延伸导航栏至分栏宽度"])},posts:r=>{const{normalize:n}=r;return n(["帖子"])},conversation_display_linear_quick:r=>{const{normalize:n}=r;return n(["线性视图"])},conversation_other_replies_button:r=>{const{normalize:n}=r;return n(["显示 “其它回复” 按钮"])},confirm_dialogs_delete:r=>{const{normalize:n}=r;return n(["删除状态"])},confirm_dialogs_mute:r=>{const{normalize:n}=r;return n(["隐藏用户"])},column_sizes:r=>{const{normalize:n}=r;return n(["分栏大小"])},column_sizes_sidebar:r=>{const{normalize:n}=r;return n(["侧栏"])},column_sizes_content:r=>{const{normalize:n}=r;return n(["內容"])},column_sizes_notifs:r=>{const{normalize:n}=r;return n(["通知"])},conversation_other_replies_button_below:r=>{const{normalize:n}=r;return n(["在状态下方"])},conversation_other_replies_button_inside:r=>{const{normalize:n}=r;return n(["在状态中"])},auto_update:r=>{const{normalize:n}=r;return n(["自动显示新的帖子"])},use_websockets:r=>{const{normalize:n}=r;return n(["使用 websockets(实时更新)"])},max_depth_in_thread:r=>{const{normalize:n}=r;return n(["默认显示同主题帖子中的最大层数"])},hide_wordfiltered_statuses:r=>{const{normalize:n}=r;return n(["隐藏经过词语过滤的状态"])},hide_muted_threads:r=>{const{normalize:n}=r;return n(["不显示已隐藏的同主题帖子"])},notification_visibility_polls:r=>{const{normalize:n}=r;return n(["你所投的投票的结束于"])},tree_advanced:r=>{const{normalize:n}=r;return n(["允许在树状视图中进行更灵活的导航"])},tree_fade_ancestors:r=>{const{normalize:n}=r;return n(["以模糊的文字显示当前状态的上级"])},conversation_display_linear:r=>{const{normalize:n}=r;return n(["线性样式"])},mention_link_fade_domain:r=>{const{normalize:n}=r;return n(["淡化域名(例如:","@","example.org 中的 ","@","foo","@","example.org)"])},mention_link_bolden_you:r=>{const{normalize:n}=r;return n(["当你被提及时突出显示提及你"])},user_popover_avatar_action:r=>{const{normalize:n}=r;return n(["弹出式头像点击动作"])},user_popover_avatar_action_zoom:r=>{const{normalize:n}=r;return n(["缩放头像"])},user_popover_avatar_action_close:r=>{const{normalize:n}=r;return n(["关闭弹出窗口"])},show_yous:r=>{const{normalize:n}=r;return n(["显示 (You)s"])},add_language:r=>{const{normalize:n}=r;return n(["添加备用语言"])},remove_language:r=>{const{normalize:n}=r;return n(["移除"])},primary_language:r=>{const{normalize:n}=r;return n(["主要语言:"])},fallback_language:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["备用语言 ",e(t("index")),":"])},account_privacy:r=>{const{normalize:n}=r;return n(["隐私"])},conversation_display:r=>{const{normalize:n}=r;return n(["对话显示样式"])},conversation_display_tree:r=>{const{normalize:n}=r;return n(["树状样式"])},conversation_display_tree_quick:r=>{const{normalize:n}=r;return n(["树状视图"])},disable_sticky_headers:r=>{const{normalize:n}=r;return n(["不要把分栏的顶栏固定在屏幕的顶部"])},confirm_dialogs:r=>{const{normalize:n}=r;return n(["请求确认于"])},confirm_dialogs_logout:r=>{const{normalize:n}=r;return n(["登出"])},confirm_dialogs_deny_follow:r=>{const{normalize:n}=r;return n(["拒绝关注请求"])},confirm_dialogs_approve_follow:r=>{const{normalize:n}=r;return n(["批准关注请求"])},confirm_dialogs_block:r=>{const{normalize:n}=r;return n(["屏蔽用户"])},confirm_dialogs_unfollow:r=>{const{normalize:n}=r;return n(["取消关注用户"])},confirm_dialogs_repeat:r=>{const{normalize:n}=r;return n(["转发状态"])},confirm_dialogs_remove_follower:r=>{const{normalize:n}=r;return n(["移除关注者"])},mute_bot_posts:r=>{const{normalize:n}=r;return n(["隐藏机器人的帖子"])},hide_bot_indication:r=>{const{normalize:n}=r;return n(["隐藏帖子中的机器人提示"])},always_show_post_button:r=>{const{normalize:n}=r;return n(["始终显示浮动的新帖子按钮"])},show_scrollbars:r=>{const{normalize:n}=r;return n(["显示侧栏的滚动条"])},third_column_mode_none:r=>{const{normalize:n}=r;return n(["完全不显示第三栏"])},use_at_icon:r=>{const{normalize:n}=r;return n(["将 ","@"," 符号显示为图标而不是文本"])},mention_link_display:r=>{const{normalize:n}=r;return n(["显示提及链接"])},mention_link_display_short:r=>{const{normalize:n}=r;return n(["始终以简称的形式出现(例如:","@","foo)"])},mention_link_display_full_for_remote:r=>{const{normalize:n}=r;return n(["仅远程实例用户以全名的形式出现(例如:","@","foo","@","example.org)"])},mention_link_display_full:r=>{const{normalize:n}=r;return n(["始终以全名的形式出现(例如:","@","foo","@","example.org)"])},mention_link_use_tooltip:r=>{const{normalize:n}=r;return n(["点击提及链接时显示用户卡片"])},mention_link_show_avatar:r=>{const{normalize:n}=r;return n(["在链接旁边显示用户头像"])},mention_link_show_avatar_quick:r=>{const{normalize:n}=r;return n(["在提及内容旁边显示用户头像"])},user_popover_avatar_action_open:r=>{const{normalize:n}=r;return n(["打开个人资料"])},autocomplete_select_first:r=>{const{normalize:n}=r;return n(["当有自动完成的结果时,自动选择第一个候选项"])},url:r=>{const{normalize:n}=r;return n(["URL"])},preview:r=>{const{normalize:n}=r;return n(["预览"])},commit_value:r=>{const{normalize:n}=r;return n(["保存"])},commit_value_tooltip:r=>{const{normalize:n}=r;return n(["当前值未保存,请按此按钮以提交你的修改"])},reset_value:r=>{const{normalize:n}=r;return n(["重置"])},reset_value_tooltip:r=>{const{normalize:n}=r;return n(["重置草稿"])},hard_reset_value:r=>{const{normalize:n}=r;return n(["硬重置"])},hard_reset_value_tooltip:r=>{const{normalize:n}=r;return n(["从存储中移除设置,强制使用默认值"])},emoji_reactions_scale:r=>{const{normalize:n}=r;return n(["表情回应比例系数"])}},time:{day:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])},days:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])},day_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"d"])},days_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"d"])},hour:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 小时"])},hours:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 小时"])},hour_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"h"])},hours_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"h"])},in_future:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["还有 ",e(t(0))])},in_past:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 之前"])},minute:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分钟"])},minutes:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分钟"])},minute_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"min"])},minutes_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"min"])},month:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},months:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},month_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"mo"])},months_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"mo"])},now:r=>{const{normalize:n}=r;return n(["刚刚"])},now_short:r=>{const{normalize:n}=r;return n(["刚刚"])},second:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},seconds:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},second_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"s"])},seconds_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"s"])},week:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 周"])},weeks:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 周"])},week_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"w"])},weeks_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"w"])},year:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},years:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},year_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"y"])},years_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"y"])},unit:{days_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])},hours:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 小时"])},hours_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 时"])},minutes:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分"])},minutes_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分"])},months:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 个月"])},months_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},seconds:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},seconds_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},weeks_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 周"])},years:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},years_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},weeks:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 周"])},days:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])}}},timeline:{collapse:r=>{const{normalize:n}=r;return n(["折叠"])},conversation:r=>{const{normalize:n}=r;return n(["对话"])},error_fetching:r=>{const{normalize:n}=r;return n(["获取更新时发生错误"])},load_older:r=>{const{normalize:n}=r;return n(["加载更早的状态"])},no_retweet_hint:r=>{const{normalize:n}=r;return n(["这条内容仅关注者可见,或者是私信,因此不能转发"])},repeated:r=>{const{normalize:n}=r;return n(["转发了"])},show_new:r=>{const{normalize:n}=r;return n(["显示新内容"])},up_to_date:r=>{const{normalize:n}=r;return n(["已是最新"])},no_more_statuses:r=>{const{normalize:n}=r;return n(["没有更多的状态"])},no_statuses:r=>{const{normalize:n}=r;return n(["没有状态更新"])},reload:r=>{const{normalize:n}=r;return n(["重新载入"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["取得时间轴时发生错误:",e(t(0))])},socket_broke:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["丢失实时连接:CloseEvent code ",e(t(0))])},socket_reconnected:r=>{const{normalize:n}=r;return n(["已建立实时连接"])},quick_view_settings:r=>{const{normalize:n}=r;return n(["快速视图设置"])},quick_filter_settings:r=>{const{normalize:n}=r;return n(["快速过滤设置"])}},status:{favorites:r=>{const{normalize:n}=r;return n(["喜欢"])},repeats:r=>{const{normalize:n}=r;return n(["转发"])},delete:r=>{const{normalize:n}=r;return n(["删除状态"])},pin:r=>{const{normalize:n}=r;return n(["在个人资料置顶"])},unpin:r=>{const{normalize:n}=r;return n(["取消在个人资料置顶"])},pinned:r=>{const{normalize:n}=r;return n(["置顶"])},delete_confirm:r=>{const{normalize:n}=r;return n(["您确定要删除这条状态吗?"])},reply_to:r=>{const{normalize:n}=r;return n(["回复"])},replies_list:r=>{const{normalize:n}=r;return n(["回复:"])},mute_conversation:r=>{const{normalize:n}=r;return n(["隐藏对话"])},unmute_conversation:r=>{const{normalize:n}=r;return n(["对话取消隐藏"])},hide_content:r=>{const{normalize:n}=r;return n(["隐藏内容"])},show_content:r=>{const{normalize:n}=r;return n(["显示内容"])},hide_full_subject:r=>{const{normalize:n}=r;return n(["隐藏此部分标题"])},show_full_subject:r=>{const{normalize:n}=r;return n(["显示全部标题"])},thread_muted:r=>{const{normalize:n}=r;return n(["同主题帖子已被隐藏"])},copy_link:r=>{const{normalize:n}=r;return n(["复制状态链接"])},status_unavailable:r=>{const{normalize:n}=r;return n(["状态不可取得"])},unbookmark:r=>{const{normalize:n}=r;return n(["取消书签"])},bookmark:r=>{const{normalize:n}=r;return n(["书签"])},thread_muted_and_words:r=>{const{normalize:n}=r;return n([",含有过滤词:"])},status_deleted:r=>{const{normalize:n}=r;return n(["该状态已被删除"])},nsfw:r=>{const{normalize:n}=r;return n(["NSFW"])},external_source:r=>{const{normalize:n}=r;return n(["外部来源"])},expand:r=>{const{normalize:n}=r;return n(["展开"])},you:r=>{const{normalize:n}=r;return n(["(你)"])},plus_more:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["还有 ",e(t("number"))," 个"])},many_attachments:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["文章有 ",e(t("number"))," 个附件"])},collapse_attachments:r=>{const{normalize:n}=r;return n(["折起附件"])},show_all_attachments:r=>{const{normalize:n}=r;return n(["显示所有附件"])},show_attachment_description:r=>{const{normalize:n}=r;return n(["预览描述(打开附件能看完整描述)"])},hide_attachment:r=>{const{normalize:n}=r;return n(["隐藏附件"])},remove_attachment:r=>{const{normalize:n}=r;return n(["移除附件"])},attachment_stop_flash:r=>{const{normalize:n}=r;return n(["停止 Flash 播放器"])},move_up:r=>{const{normalize:n}=r;return n(["把附件左移"])},open_gallery:r=>{const{normalize:n}=r;return n(["打开图库"])},thread_hide:r=>{const{normalize:n}=r;return n(["隐藏这个同主题帖子"])},thread_show:r=>{const{normalize:n}=r;return n(["显示这个同主题帖子"])},thread_show_full_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},thread_follow:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["查看这个同主题帖子的剩余部分(一共有 ",e(t("numStatus"))," 个状态)"])},thread_follow_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},ancestor_follow:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["查看这个状态下的别的 ",e(t("numReplies"))," 个回复"])},ancestor_follow_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},show_all_conversation_with_icon:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("icon"))," ",e(t("text"))])},show_all_conversation:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["显示完整对话(还有 ",e(t("numStatus"))," 个状态)"])},mentions:r=>{const{normalize:n}=r;return n(["提及"])},replies_list_with_others:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["回复(另外 +",e(t("numReplies"))," 个):"])},move_down:r=>{const{normalize:n}=r;return n(["把附件右移"])},thread_show_full:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["显示这个同主题帖子下的所有东西(一共有 ",e(t("numStatus"))," 个状态,最大深度 ",e(t("depth")),")"])},show_only_conversation_under_this:r=>{const{normalize:n}=r;return n(["只显示这个状态的回复"])},repeat_confirm:r=>{const{normalize:n}=r;return n(["您确定要转发这条状态吗?"])},repeat_confirm_title:r=>{const{normalize:n}=r;return n(["确认转发"])},repeat_confirm_accept_button:r=>{const{normalize:n}=r;return n(["转发"])},repeat_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要转发"])},edit:r=>{const{normalize:n}=r;return n(["编辑状态"])},edited_at:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["(最后编辑于 ",e(t("time")),")"])},delete_confirm_title:r=>{const{normalize:n}=r;return n(["确认删除"])},delete_confirm_accept_button:r=>{const{normalize:n}=r;return n(["删除"])},delete_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["保留"])},show_attachment_in_modal:r=>{const{normalize:n}=r;return n(["在媒体模式中显示"])},status_history:r=>{const{normalize:n}=r;return n(["状态历史"])},delete_error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["删除状态时出错:",e(t(0))])},reaction_count_label:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("num"))," 人作出了表情回应"])}},user_card:{approve:r=>{const{normalize:n}=r;return n(["核准"])},block:r=>{const{normalize:n}=r;return n(["屏蔽"])},blocked:r=>{const{normalize:n}=r;return n(["已屏蔽!"])},deny:r=>{const{normalize:n}=r;return n(["拒绝"])},favorites:r=>{const{normalize:n}=r;return n(["喜欢"])},follow:r=>{const{normalize:n}=r;return n(["关注"])},follow_sent:r=>{const{normalize:n}=r;return n(["请求已发送!"])},follow_progress:r=>{const{normalize:n}=r;return n(["请求中…"])},follow_unfollow:r=>{const{normalize:n}=r;return n(["取消关注"])},followees:r=>{const{normalize:n}=r;return n(["正在关注"])},followers:r=>{const{normalize:n}=r;return n(["关注者"])},following:r=>{const{normalize:n}=r;return n(["正在关注!"])},follows_you:r=>{const{normalize:n}=r;return n(["关注了你!"])},its_you:r=>{const{normalize:n}=r;return n(["就是你!"])},media:r=>{const{normalize:n}=r;return n(["媒体"])},mute:r=>{const{normalize:n}=r;return n(["隐藏"])},muted:r=>{const{normalize:n}=r;return n(["已隐藏"])},per_day:r=>{const{normalize:n}=r;return n(["每天"])},remote_follow:r=>{const{normalize:n}=r;return n(["跨站关注"])},report:r=>{const{normalize:n}=r;return n(["报告"])},statuses:r=>{const{normalize:n}=r;return n(["状态"])},subscribe:r=>{const{normalize:n}=r;return n(["订阅"])},unsubscribe:r=>{const{normalize:n}=r;return n(["退订"])},unblock:r=>{const{normalize:n}=r;return n(["取消屏蔽"])},unblock_progress:r=>{const{normalize:n}=r;return n(["正在取消屏蔽…"])},block_progress:r=>{const{normalize:n}=r;return n(["正在屏蔽…"])},unmute:r=>{const{normalize:n}=r;return n(["取消隐藏"])},unmute_progress:r=>{const{normalize:n}=r;return n(["取消隐藏中…"])},mute_progress:r=>{const{normalize:n}=r;return n(["隐藏中…"])},admin_menu:{moderation:r=>{const{normalize:n}=r;return n(["仲裁"])},grant_admin:r=>{const{normalize:n}=r;return n(["赋予管理权限"])},revoke_admin:r=>{const{normalize:n}=r;return n(["撤销管理权限"])},grant_moderator:r=>{const{normalize:n}=r;return n(["赋予监察员权限"])},revoke_moderator:r=>{const{normalize:n}=r;return n(["撤销监察员权限"])},activate_account:r=>{const{normalize:n}=r;return n(["激活账号"])},deactivate_account:r=>{const{normalize:n}=r;return n(["关闭账号"])},delete_account:r=>{const{normalize:n}=r;return n(["删除账号"])},force_nsfw:r=>{const{normalize:n}=r;return n(["标记所有的帖子都是 - 工作场合不适"])},strip_media:r=>{const{normalize:n}=r;return n(["从帖子里删除媒体文件"])},force_unlisted:r=>{const{normalize:n}=r;return n(["强制帖子为不公开"])},sandbox:r=>{const{normalize:n}=r;return n(["强制帖子为只有关注者可看"])},disable_remote_subscription:r=>{const{normalize:n}=r;return n(["禁止从远程实例关注用户"])},disable_any_subscription:r=>{const{normalize:n}=r;return n(["完全禁止关注用户"])},quarantine:r=>{const{normalize:n}=r;return n(["从联合实例中禁止用户帖子"])},delete_user:r=>{const{normalize:n}=r;return n(["删除用户"])},delete_user_data_and_deactivate_confirmation:r=>{const{normalize:n}=r;return n(["这将永久删除该账户的数据并停用该账户。你完全确定吗?"])}},hidden:r=>{const{normalize:n}=r;return n(["已隐藏"])},show_repeats:r=>{const{normalize:n}=r;return n(["显示转发"])},hide_repeats:r=>{const{normalize:n}=r;return n(["隐藏转发"])},message:r=>{const{normalize:n}=r;return n(["消息"])},mention:r=>{const{normalize:n}=r;return n(["提及"])},bot:r=>{const{normalize:n}=r;return n(["机器人"])},highlight:{side:r=>{const{normalize:n}=r;return n(["侧边条纹"])},striped:r=>{const{normalize:n}=r;return n(["条纹背景"])},solid:r=>{const{normalize:n}=r;return n(["单一颜色背景"])},disabled:r=>{const{normalize:n}=r;return n(["不突出显示"])}},edit_profile:r=>{const{normalize:n}=r;return n(["编辑个人资料"])},approve_confirm_title:r=>{const{normalize:n}=r;return n(["确认批准"])},approve_confirm_accept_button:r=>{const{normalize:n}=r;return n(["批准"])},block_confirm_accept_button:r=>{const{normalize:n}=r;return n(["屏蔽"])},block_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要屏蔽"])},deactivated:r=>{const{normalize:n}=r;return n(["已停用"])},deny_confirm_title:r=>{const{normalize:n}=r;return n(["确认拒绝"])},deny_confirm_accept_button:r=>{const{normalize:n}=r;return n(["拒绝"])},deny_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要拒绝"])},deny_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您是否要拒绝 ",e(t("user"))," 的关注请求?"])},follow_cancel:r=>{const{normalize:n}=r;return n(["取消请求"])},unfollow_confirm_title:r=>{const{normalize:n}=r;return n(["确认取消关注"])},unfollow_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您确定要取消关注 ",e(t("user"))," 吗?"])},unfollow_confirm_accept_button:r=>{const{normalize:n}=r;return n(["取消关注"])},unfollow_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要取消关注"])},mute_confirm_title:r=>{const{normalize:n}=r;return n(["确认隐藏"])},mute_confirm_accept_button:r=>{const{normalize:n}=r;return n(["隐藏"])},mute_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要隐藏"])},mute_duration_prompt:r=>{const{normalize:n}=r;return n(["让这个用户隐藏(0表示无限期):"])},remove_follower:r=>{const{normalize:n}=r;return n(["移除关注者"])},remove_follower_confirm_title:r=>{const{normalize:n}=r;return n(["确认移除关注者"])},remove_follower_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["保留"])},remove_follower_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您确定要将 ",e(t("user"))," 从您的关注者里移除吗?"])},birthday:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["生于 ",e(t("birthday"))])},note:r=>{const{normalize:n}=r;return n(["备注"])},approve_confirm_cancel_button:r=>{const{normalize:n}=r;return n(["不要批准"])},approve_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您是否要批准 ",e(t("user"))," 的关注请求?"])},block_confirm_title:r=>{const{normalize:n}=r;return n(["确认屏蔽"])},block_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您确定要屏蔽 ",e(t("user"))," 吗?"])},mute_confirm:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["您确定要隐藏 ",e(t("user"))," 吗?"])},remove_follower_confirm_accept_button:r=>{const{normalize:n}=r;return n(["移除"])},note_blank:r=>{const{normalize:n}=r;return n(["(空)"])},edit_note:r=>{const{normalize:n}=r;return n(["编辑备注"])},edit_note_apply:r=>{const{normalize:n}=r;return n(["应用"])},edit_note_cancel:r=>{const{normalize:n}=r;return n(["取消"])}},user_profile:{timeline_title:r=>{const{normalize:n}=r;return n(["用户时间线"])},profile_does_not_exist:r=>{const{normalize:n}=r;return n(["抱歉,此个人资料不存在。"])},profile_loading_error:r=>{const{normalize:n}=r;return n(["抱歉,载入个人资料时出错。"])}},user_reporting:{title:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["报告 ",e(t(0))])},add_comment_description:r=>{const{normalize:n}=r;return n(["此报告会发送给您的实例监察员。您可以在下面提供更多详细信息解释报告的缘由:"])},additional_comments:r=>{const{normalize:n}=r;return n(["其它信息"])},forward_description:r=>{const{normalize:n}=r;return n(["这个账号来自另一个服务器。是否同时发送一份报告副本到那里?"])},forward_to:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["转发 ",e(t(0))])},submit:r=>{const{normalize:n}=r;return n(["提交"])},generic_error:r=>{const{normalize:n}=r;return n(["当处理您的请求时,发生了一个错误。"])}},who_to_follow:{more:r=>{const{normalize:n}=r;return n(["更多"])},who_to_follow:r=>{const{normalize:n}=r;return n(["推荐关注"])}},tool_tip:{media_upload:r=>{const{normalize:n}=r;return n(["上传媒体"])},repeat:r=>{const{normalize:n}=r;return n(["转发"])},reply:r=>{const{normalize:n}=r;return n(["回复"])},favorite:r=>{const{normalize:n}=r;return n(["喜欢"])},user_settings:r=>{const{normalize:n}=r;return n(["用户设置"])},reject_follow_request:r=>{const{normalize:n}=r;return n(["拒绝关注请求"])},add_reaction:r=>{const{normalize:n}=r;return n(["添加互动"])},bookmark:r=>{const{normalize:n}=r;return n(["书签"])},accept_follow_request:r=>{const{normalize:n}=r;return n(["接受关注请求"])},toggle_expand:r=>{const{normalize:n}=r;return n(["展开或折叠通知以显示帖子全文"])},toggle_mute:r=>{const{normalize:n}=r;return n(["展开或折叠通知以显示已隐藏的内容"])},autocomplete_available:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["共有 ",e(t("number"))," 个结果可用。使用向上和向下键浏览它们。"])}},upload:{error:{base:r=>{const{normalize:n}=r;return n(["上传不成功。"])},file_too_big:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["文件太大了 [",e(t("filesize")),e(t("filesizeunit"))," / ",e(t("allowedsize")),e(t("allowedsizeunit")),"]"])},default:r=>{const{normalize:n}=r;return n(["迟些再试"])},message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["上传错误:",e(t(0))])}},file_size_units:{B:r=>{const{normalize:n}=r;return n(["B"])},KiB:r=>{const{normalize:n}=r;return n(["KiB"])},MiB:r=>{const{normalize:n}=r;return n(["MiB"])},GiB:r=>{const{normalize:n}=r;return n(["GiB"])},TiB:r=>{const{normalize:n}=r;return n(["TiB"])}}},search:{people:r=>{const{normalize:n}=r;return n(["人"])},hashtags:r=>{const{normalize:n}=r;return n(["话题标签"])},person_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count"))," 人正在讨论"])},people_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count"))," 人正在讨论"])},no_results:r=>{const{normalize:n}=r;return n(["没有搜索结果"])},no_more_results:r=>{const{normalize:n}=r;return n(["没有更多结果"])},load_more:r=>{const{normalize:n}=r;return n(["加载更多结果"])}},password_reset:{forgot_password:r=>{const{normalize:n}=r;return n(["忘记密码了?"])},password_reset:r=>{const{normalize:n}=r;return n(["重置密码"])},instruction:r=>{const{normalize:n}=r;return n(["输入您的电邮地址或者用户名,我们将发送一个链接到您的邮箱,用于重置密码。"])},placeholder:r=>{const{normalize:n}=r;return n(["您的电邮地址或者用户名"])},check_email:r=>{const{normalize:n}=r;return n(["检查您的邮箱,会有一个链接用于重置密码。"])},return_home:r=>{const{normalize:n}=r;return n(["回到首页"])},too_many_requests:r=>{const{normalize:n}=r;return n(["您达到了尝试次数的上限,请稍后再试。"])},password_reset_disabled:r=>{const{normalize:n}=r;return n(["密码重置已被禁用。请联系您的实例管理员。"])},password_reset_required_but_mailer_is_disabled:r=>{const{normalize:n}=r;return n(["您必须重置密码,但是密码重置被禁用了。请联系您所在实例的管理员。"])},password_reset_required:r=>{const{normalize:n}=r;return n(["您必须重置密码才能登陆。"])}},remote_user_resolver:{error:r=>{const{normalize:n}=r;return n(["未找到。"])},searching_for:r=>{const{normalize:n}=r;return n(["搜索"])},remote_user_resolver:r=>{const{normalize:n}=r;return n(["远程用户解析器"])}},emoji:{keep_open:r=>{const{normalize:n}=r;return n(["选择器保持打开"])},stickers:r=>{const{normalize:n}=r;return n(["贴纸"])},unicode:r=>{const{normalize:n}=r;return n(["Unicode 表情符号"])},custom:r=>{const{normalize:n}=r;return n(["自定义表情符号"])},add_emoji:r=>{const{normalize:n}=r;return n(["插入表情符号"])},search_emoji:r=>{const{normalize:n}=r;return n(["搜索表情符号"])},emoji:r=>{const{normalize:n}=r;return n(["表情符号"])},load_all:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["加载所有表情符号(共 ",e(t("emojiAmount"))," 个)"])},load_all_hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["最先加载的 ",e(t("saneAmount"))," 表情符号,加载全部表情符号可能会带来性能问题。"])},unicode_groups:{flags:r=>{const{normalize:n}=r;return n(["旗帜"])},"food-and-drink":r=>{const{normalize:n}=r;return n(["饮食"])},objects:r=>{const{normalize:n}=r;return n(["物件"])},"people-and-body":r=>{const{normalize:n}=r;return n(["人和身体"])},symbols:r=>{const{normalize:n}=r;return n(["符号"])},"travel-and-places":r=>{const{normalize:n}=r;return n(["旅行和地点"])},activities:r=>{const{normalize:n}=r;return n(["活动"])},"animals-and-nature":r=>{const{normalize:n}=r;return n(["动物和自然"])},"smileys-and-emotion":r=>{const{normalize:n}=r;return n(["表情与情感"])}},regional_indicator:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["地区指示符 ",e(t("letter"))])},unpacked:r=>{const{normalize:n}=r;return n(["未分组的表情符号"])}},about:{mrf:{simple:{quarantine_desc:r=>{const{normalize:n}=r;return n(["本实例向以下实例仅发送公开的帖子:"])},quarantine:r=>{const{normalize:n}=r;return n(["隔离"])},reject_desc:r=>{const{normalize:n}=r;return n(["本实例不会接收来自下列实例的消息:"])},reject:r=>{const{normalize:n}=r;return n(["拒绝"])},accept_desc:r=>{const{normalize:n}=r;return n(["本实例只接收来自下列实例的消息:"])},simple_policies:r=>{const{normalize:n}=r;return n(["对于特定实例的策略"])},accept:r=>{const{normalize:n}=r;return n(["接受"])},media_removal:r=>{const{normalize:n}=r;return n(["移除媒体"])},media_nsfw_desc:r=>{const{normalize:n}=r;return n(["本实例将来自以下实例的媒体内容强制设置为敏感内容:"])},media_nsfw:r=>{const{normalize:n}=r;return n(["强制设置媒体为敏感内容"])},media_removal_desc:r=>{const{normalize:n}=r;return n(["本实例移除来自以下实例的媒体内容:"])},ftl_removal_desc:r=>{const{normalize:n}=r;return n(["该实例在从“已知网络”时间线上移除了下列实例:"])},ftl_removal:r=>{const{normalize:n}=r;return n(["从“已知网络”时间线上移除"])},reason:r=>{const{normalize:n}=r;return n(["理由"])},not_applicable:r=>{const{normalize:n}=r;return n(["无"])},instance:r=>{const{normalize:n}=r;return n(["实例"])}},mrf_policies_desc:r=>{const{normalize:n}=r;return n(["MRF 策略会影响本实例的互通行为。以下策略已启用:"])},mrf_policies:r=>{const{normalize:n}=r;return n(["已启用的 MRF 策略"])},keyword:{ftl_removal:r=>{const{normalize:n}=r;return n(["从“全部已知网络”时间线上移除"])},keyword_policies:r=>{const{normalize:n}=r;return n(["关键词策略"])},is_replaced_by:r=>{const{normalize:n}=r;return n(["→"])},replace:r=>{const{normalize:n}=r;return n(["替换"])},reject:r=>{const{normalize:n}=r;return n(["拒绝"])}},federation:r=>{const{normalize:n}=r;return n(["联邦互通"])}},staff:r=>{const{normalize:n}=r;return n(["管理人员"])}},domain_mute_card:{unmute_progress:r=>{const{normalize:n}=r;return n(["正在取消隐藏…"])},unmute:r=>{const{normalize:n}=r;return n(["取消隐藏"])},mute_progress:r=>{const{normalize:n}=r;return n(["隐藏中…"])},mute:r=>{const{normalize:n}=r;return n(["隐藏"])}},errors:{storage_unavailable:r=>{const{normalize:n}=r;return n(["Pleroma 无法访问浏览器储存。您的登陆以及本地设置将不会被保存,您也可能遇到未知问题。请尝试启用 cookies。"])}},shoutbox:{title:r=>{const{normalize:n}=r;return n(["留言板"])}},display_date:{today:r=>{const{normalize:n}=r;return n(["今天"])}},file_type:{file:r=>{const{normalize:n}=r;return n(["文件"])},image:r=>{const{normalize:n}=r;return n(["图片"])},video:r=>{const{normalize:n}=r;return n(["视频"])},audio:r=>{const{normalize:n}=r;return n(["音频"])}},chats:{empty_chat_list_placeholder:r=>{const{normalize:n}=r;return n(["您还没有任何聊天记录。开始聊天吧!"])},error_sending_message:r=>{const{normalize:n}=r;return n(["发送消息时出了点问题。"])},error_loading_chat:r=>{const{normalize:n}=r;return n(["加载聊天时出了点问题。"])},delete_confirm:r=>{const{normalize:n}=r;return n(["您确定要删除此消息吗?"])},more:r=>{const{normalize:n}=r;return n(["更多"])},empty_message_error:r=>{const{normalize:n}=r;return n(["无法发布空消息"])},new:r=>{const{normalize:n}=r;return n(["新聊天"])},chats:r=>{const{normalize:n}=r;return n(["聊天"])},delete:r=>{const{normalize:n}=r;return n(["删除"])},message_user:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["发消息给 ",e(t("nickname"))])},you:r=>{const{normalize:n}=r;return n(["你:"])}},announcements:{page_header:r=>{const{normalize:n}=r;return n(["公告"])},title:r=>{const{normalize:n}=r;return n(["公告"])},mark_as_read_action:r=>{const{normalize:n}=r;return n(["标为已读"])},post_form_header:r=>{const{normalize:n}=r;return n(["发布公告"])},post_placeholder:r=>{const{normalize:n}=r;return n(["在这里输入公告内容..."])},post_action:r=>{const{normalize:n}=r;return n(["发布"])},post_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["错误:",e(t("error"))])},close_error:r=>{const{normalize:n}=r;return n(["关闭"])},delete_action:r=>{const{normalize:n}=r;return n(["删除"])},start_time_prompt:r=>{const{normalize:n}=r;return n(["起始时间: "])},end_time_prompt:r=>{const{normalize:n}=r;return n(["终止时间: "])},all_day_prompt:r=>{const{normalize:n}=r;return n(["这是全天的事件"])},published_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["发表于 ",e(t("time"))])},start_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["开始于 ",e(t("time"))])},end_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["结束于 ",e(t("time"))])},edit_action:r=>{const{normalize:n}=r;return n(["编辑"])},submit_edit_action:r=>{const{normalize:n}=r;return n(["提交"])},cancel_edit_action:r=>{const{normalize:n}=r;return n(["取消"])},inactive_message:r=>{const{normalize:n}=r;return n(["这个公告不活跃"])}},report:{reported_user:r=>{const{normalize:n}=r;return n(["被举报者:"])},state_closed:r=>{const{normalize:n}=r;return n(["已关闭"])},state_resolved:r=>{const{normalize:n}=r;return n(["已解决"])},reporter:r=>{const{normalize:n}=r;return n(["举报者:"])},state_open:r=>{const{normalize:n}=r;return n(["开启"])},reported_statuses:r=>{const{normalize:n}=r;return n(["已举报的状态:"])},notes:r=>{const{normalize:n}=r;return n(["备注:"])},state:r=>{const{normalize:n}=r;return n(["状态:"])}},unicode_domain_indicator:{tooltip:r=>{const{normalize:n}=r;return n(["此域名包含非 ascii 字符。"])}},update:{update_bugs_gitlab:r=>{const{normalize:n}=r;return n(["Pleroma GitLab"])},update_changelog:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["关于变化的更多细节,请参见 ",e(t("theFullChangelog"))," 。"])},update_changelog_here:r=>{const{normalize:n}=r;return n(["完整的更新日志"])},big_update_title:r=>{const{normalize:n}=r;return n(["请忍耐一下"])},big_update_content:r=>{const{normalize:n}=r;return n(["我们已经有一段时间没有发布发行版,所以事情的外观和感觉可能与你习惯的不一样。"])},update_bugs:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["请在 ",e(t("pleromaGitlab"))," 上报告任何问题和bug,因为我们已经改变了很多,虽然我们进行了彻底的测试,并且自己使用了开发版本,但我们可能错过了一些东西。我们欢迎你对你可能遇到的问题或如何改进Pleroma和Pleroma-FE提出反馈和建议。"])},art_by:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["Art by ",e(t("linkToArtist"))])}},lists:{search:r=>{const{normalize:n}=r;return n(["搜索用户"])},create:r=>{const{normalize:n}=r;return n(["创建"])},save:r=>{const{normalize:n}=r;return n(["保存更改"])},delete:r=>{const{normalize:n}=r;return n(["删除列表"])},following_only:r=>{const{normalize:n}=r;return n(["限制于正在关注"])},manage_lists:r=>{const{normalize:n}=r;return n(["管理列表"])},manage_members:r=>{const{normalize:n}=r;return n(["管理列表成员"])},add_members:r=>{const{normalize:n}=r;return n(["搜索更多用户"])},remove_from_list:r=>{const{normalize:n}=r;return n(["从列表中移除"])},add_to_list:r=>{const{normalize:n}=r;return n(["添加到列表"])},is_in_list:r=>{const{normalize:n}=r;return n(["已在列表中"])},editing_list:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["正在编辑列表 ",e(t("listTitle"))])},creating_list:r=>{const{normalize:n}=r;return n(["正在创建新的列表"])},update_title:r=>{const{normalize:n}=r;return n(["保存标题"])},really_delete:r=>{const{normalize:n}=r;return n(["真的要删除列表吗?"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["操作列表时出错:",e(t(0))])},lists:r=>{const{normalize:n}=r;return n(["列表"])},new:r=>{const{normalize:n}=r;return n(["新的列表"])},title:r=>{const{normalize:n}=r;return n(["列表标题"])}},admin_dash:{window_title:r=>{const{normalize:n}=r;return n(["管理员"])},old_ui_link:r=>{const{normalize:n}=r;return n(["旧的管理界面在此处"])},reset_all:r=>{const{normalize:n}=r;return n(["重置全部"])},commit_all:r=>{const{normalize:n}=r;return n(["保存全部"])},tabs:{nodb:r=>{const{normalize:n}=r;return n(["无数据库配置"])},instance:r=>{const{normalize:n}=r;return n(["实例"])},limits:r=>{const{normalize:n}=r;return n(["限制"])},frontends:r=>{const{normalize:n}=r;return n(["前端"])}},nodb:{heading:r=>{const{normalize:n}=r;return n(["数据库配置已禁用"])},documentation:r=>{const{normalize:n}=r;return n(["文档"])},text2:r=>{const{normalize:n}=r;return n(["大多数配置选项将不可用。"])},text:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["你需要修改后端配置文件,以便将 ",e(t("property"))," 设置为 ",e(t("value")),",更多内容请参见 ",e(t("documentation")),"。"])}},captcha:{native:r=>{const{normalize:n}=r;return n(["本地"])},kocaptcha:r=>{const{normalize:n}=r;return n(["KoCaptcha"])}},instance:{instance:r=>{const{normalize:n}=r;return n(["实例信息"])},registrations:r=>{const{normalize:n}=r;return n(["用户注册"])},captcha_header:r=>{const{normalize:n}=r;return n(["验证码"])},kocaptcha:r=>{const{normalize:n}=r;return n(["KoCaptcha 设置"])},access:r=>{const{normalize:n}=r;return n(["实例访问"])},restrict:{header:r=>{const{normalize:n}=r;return n(["限制匿名访客的访问"])},timelines:r=>{const{normalize:n}=r;return n(["时间线访问"])},profiles:r=>{const{normalize:n}=r;return n(["用户个人资料访问"])},activities:r=>{const{normalize:n}=r;return n(["状态/活动访问"])},description:r=>{const{normalize:n}=r;return n(["允许/不允许访问特定 API 的详细设置。默认情况下(不确定状态),如果实例不是公开的,它将拒绝访问;勾选复选框意味着即使实例是公开的,也拒绝访问;不勾选意味着即使实例是私有的,也允许访问。请注意,如果某些设置被设定,可能会发生意想不到的行为,例如,如果个人资料访问被禁用,显示的帖文将不包含个人资料信息。"])}}},limits:{arbitrary_limits:r=>{const{normalize:n}=r;return n(["任意限制"])},posts:r=>{const{normalize:n}=r;return n(["帖文限制"])},uploads:r=>{const{normalize:n}=r;return n(["附件限制"])},users:r=>{const{normalize:n}=r;return n(["用户个人资料限制"])},profile_fields:r=>{const{normalize:n}=r;return n(["个人资料字段限制"])},user_uploads:r=>{const{normalize:n}=r;return n(["个人资料媒体限制"])}},frontend:{repository:r=>{const{normalize:n}=r;return n(["存储库链接"])},versions:r=>{const{normalize:n}=r;return n(["可用版本"])},build_url:r=>{const{normalize:n}=r;return n(["构建产物 URL"])},reinstall:r=>{const{normalize:n}=r;return n(["重新安装"])},is_default:r=>{const{normalize:n}=r;return n(["(默认)"])},is_default_custom:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["(默认,版本:",e(t("version")),")"])},install:r=>{const{normalize:n}=r;return n(["安装"])},install_version:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["安装版本 ",e(t("version"))])},more_install_options:r=>{const{normalize:n}=r;return n(["更多安装选项"])},more_default_options:r=>{const{normalize:n}=r;return n(["更多默认设置选项"])},set_default:r=>{const{normalize:n}=r;return n(["设为默认"])},set_default_version:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["将版本 ",e(t("version"))," 设为默认"])},wip_notice:r=>{const{normalize:n}=r;return n(["请注意,此部分是一个WIP,缺乏某些功能,因为前端管理的后台实现并不完整。"])},default_frontend:r=>{const{normalize:n}=r;return n(["默认前端"])},default_frontend_tip:r=>{const{normalize:n}=r;return n(["默认的前端将显示给所有用户。目前还没有办法让用户选择个人的前端。如果你不使用 PleromaFE,你很可能不得不使用旧的和有问题的 AdminFE 来进行实例配置,直到我们替换它。"])},available_frontends:r=>{const{normalize:n}=r;return n(["可供安装"])}},temp_overrides:{":pleroma":{":instance":{":public":{label:r=>{const{normalize:n}=r;return n(["实例是公开的"])},description:r=>{const{normalize:n}=r;return n(["禁用此功能将使所有的 API 只能被已登录用户访问,这将使公共和联邦时间线无法被匿名访客访问。"])}},":limit_to_local_content":{label:r=>{const{normalize:n}=r;return n(["将搜索限于本地内容"])},description:r=>{const{normalize:n}=r;return n(["禁用未认证用户(默认)、所有用户或无人的全局网络搜索"])}},":description_limit":{label:r=>{const{normalize:n}=r;return n(["限制"])},description:r=>{const{normalize:n}=r;return n(["附件描述的字数限制"])}},":background_image":{label:r=>{const{normalize:n}=r;return n(["背景图片"])},description:r=>{const{normalize:n}=r;return n(["背景图片(主要使用于 PleromaFE)"])}}}}},wip_notice:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["此管理仪表板是实验性和 WIP 的,",e(t("adminFeLink")),"。"])}}}}}]); +//# sourceMappingURL=zh-json.a0a26f6d62ddbe0b49cc.js.map +\ No newline at end of file diff --git a/priv/static/static/js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js.map b/priv/static/static/js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/zh.json"],"sourcesContent":["export default {\n \"chat\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])}\n },\n \"exporter\": {\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导出\"])},\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在处理,稍后会提示您下载文件\"])}\n },\n \"features_panel\": {\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒体代理\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"可见范围设置\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文字数量限制\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"功能\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推荐关注\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 聊天\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上传限制\"])},\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"留言板\"])}\n },\n \"finder\": {\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"获取用户时发生错误\"])},\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"寻找用户\"])}\n },\n \"general\": {\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"应用\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发生了一个错误\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"可选\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展开\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收起\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁用\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"启用\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"验证\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"忽略\"])},\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预览\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重试\"])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请重试\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"载入中…\"])},\n \"role\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"监察员\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理员\"])}\n },\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"点击以使用 Ruffle 显示 Flash 内容(实验性,可能无效)。\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"注意这可能有潜在的危险,因为 Flash 内容仍然是任意的代码。\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flash 内容加载失败,请在控制台查看详情。\"])},\n \"scope_in_timeline\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公开\"])},\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私讯\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"仅关注者\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列外\"])}\n },\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"滚动至顶\"])},\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"发生一个错误:\", _interpolate(_list(0))])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不再显示\"])},\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤销\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"是\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"否\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消固定该项\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"固定该项\"])}\n },\n \"image_cropper\": {\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"裁剪图片\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存未经裁剪的图片\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])}\n },\n \"importer\": {\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入成功。\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入此文件时出现一个错误。\"])}\n },\n \"login\": {\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登录\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用 OAuth 登录\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密码\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:lain\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"注册\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户名\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登录后加入讨论\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"验证码\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入一个恢复码\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入一个双重因素验证码\"])},\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"恢复码\"])},\n \"heading\": {\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"双重因素验证\"])},\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"双重因素恢复\"])}\n },\n \"logout_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要登出\"])},\n \"logout_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认登出\"])},\n \"logout_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出\"])},\n \"logout_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要登出吗?\"])}\n },\n \"media_modal\": {\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"往前\"])},\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"往后\"])},\n \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭媒体查看器\"])},\n \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])}\n },\n \"nav\": {\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关于\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"后退\"])},\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本站聊天\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注请求\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"互动\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私信\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公共时间线\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"时间线\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已知网络\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户搜索\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推荐关注\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"偏好设置\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理员\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"时间线\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"书签\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主页时间线\"])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列表\"])},\n \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"完成编辑\"])},\n \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"打开通知(有未读的)\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭通知\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自定义导航栏\"])},\n \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑固定的项目\"])},\n \"mobile_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"切换移动设备侧栏\"])},\n \"search_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭搜索栏\"])}\n },\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未知的状态,正在搜索中…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢了你的状态\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注了你\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载更早的通知\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已阅!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发了你的状态\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有更多的通知\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"作出了 \", _interpolate(_list(0)), \" 的反应\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"迁移到了\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"想要关注你\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"取得通知时发生错误:\", _interpolate(_list(0))])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票结束了\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交举报\"])}\n },\n \"polls\": {\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"增加投票\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"增加选项\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"选项\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票类型\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"单选\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"多选\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票期限\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"投票于 \", _interpolate(_list(0)), \" 后结束\"])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"投票 \", _interpolate(_list(0)), \" 前已结束\"])},\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票的选项太少\"])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 票\"]), _normalize([_interpolate(_named(\"count\")), \" 票\"])])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 人已投票\"]), _normalize([_interpolate(_named(\"count\")), \" 人已投票\"])])}\n },\n \"stickers\": {\n \"add_sticker\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加贴纸\"])}\n },\n \"interactions\": {\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发和喜欢\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新的关注者\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载更早的互动\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户迁移\"])},\n \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"举报\"])},\n \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"表情回应\"])}\n },\n \"post_status\": {\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发布新状态\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"你的帐号没有 \", _interpolate(_list(0)), \"。任何人都可以关注你并浏览你的上锁内容。\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上锁\"])},\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"标记附件为敏感内容\"])},\n \"content_type\": {\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"纯文本\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])}\n },\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主题(可选)\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刚刚抵达上海。\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本条内容只有被提及的用户能够看到。\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本条内容只有被在消息开始处提及的用户能够看到。\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发送中\"])},\n \"scope_notice\": {\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本条内容可以被所有人看到\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注你的人才能看到本条内容\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本条内容既不在公共时间线,也不会在所有已知网络上可见\"])}\n },\n \"scope\": {\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私信 - 只发送给被提及的用户\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"仅关注者 - 只有关注了你的人能看到\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公共 - 发送到公共时间轴\"])},\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不公开 - 不会发送到公共时间轴\"])}\n },\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"空的\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预览\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒体描述\"])},\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更新媒体失败,请重试\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能发布没有内容、没有附件的发文\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发送\"])},\n \"edit_remote_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"其它远程实例可能不支持编辑并且无法接收您的帖子的最新版本。\"])},\n \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 不支持对提及或投票进行编辑。\"])},\n \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑状态\"])},\n \"content_type_selection\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发帖格式\"])},\n \"scope_notice_dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭此提示\"])}\n },\n \"registration\": {\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"简介\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"电子邮箱\"])},\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示名称\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认密码\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"注册\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邀请码\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"点击图片获取新的验证码\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:lain\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:岩仓玲音\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:\\n你好,我是玲音。\\n我是一个住在日本郊区的动画少女。你可能在 Wired 见过我。\"])},\n \"validations\": {\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密码不一致\"])},\n \"birthday_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能为空\"])},\n \"birthday_min_age\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"必须在 \", _interpolate(_named(\"date\")), \" 或之前\"])}\n },\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此实例的注册需要手动批准。\\n请让管理员知道您为什么想要注册。\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"注册理由\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"注册\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你想从服务器收到什么语言的邮件?\"])},\n \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"介绍(可选)\"])},\n \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"电子邮件(可选)\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生日:\"])},\n \"birthday_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生日(可选):\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"选择全部\"])}\n },\n \"settings\": {\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App 名称\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"安全\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入您当前的密码来确认您的身份\"])},\n \"mfa\": {\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置 OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预设 OTP\"])},\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认并启用 OTP\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"双因素验证\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生成新的恢复码\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当您生成新的恢复码时,您旧的恢复码将会失效。\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"恢复码。\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在接收备份码…\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抄写这些号码,或者将其保存在安全的地方。这些号码不会再次显示。如果您无法访问您的 2FA app,也丢失了您的恢复码,您就再也无法登录您的账号了。\"])},\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"身份验证方法\"])},\n \"scan\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"扫一下\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使用您的双因素验证 app,扫描这个二维码,或者输入这些文字密钥:\"])},\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密钥\"])}\n },\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要启用双因素验证,请输入您的双因素验证 app 里的数字:\"])}\n }\n },\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"头像\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"头像(通知)\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"头像\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"背景\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"简介\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽名单导出\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导出你的屏蔽名单到一个 csv 文件\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽名单导入\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入屏蔽名单出错\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽名单导入成功!需要一点时间来处理。\"])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"蓝色(回复,关注)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"绿色(转发)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"橙色(喜欢)\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"红色(取消)\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改密码\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改密码的时候出了点问题。\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"成功修改了密码!\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"折叠带主题的内容\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撰写\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认新密码\"])},\n \"current_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当前头像\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当前密码\"])},\n \"current_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您当前的横幅图片\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"数据导入/导出\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默认可见范围\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除账户\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"永久删除你的帐号和所有数据。\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除账户时发生错误,如果一直删除不了,请联系实例管理员。\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在下面输入您的密码来确认删除账户。\"])},\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推荐的头像图片最小尺寸为 150x150 像素。\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导出预置主题\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"过滤器\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"所有包含以下词汇的内容都会被隐藏,一行一个\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导出关注\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"将关注导出成 csv 文件\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入关注\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入关注时错误\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注已导入!尚需要一些时间来处理。\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前景\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通用\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在对话中隐藏附件\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在时间线上隐藏附件\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示被隐藏的用户的帖子\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"每个帖子最多能显示的缩略图数量\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏实例独有的面板\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预载图片\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"点击一次以打开工作场所不适宜(NSFW)的附件\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏帖子的统计数据(例如:喜欢的次数)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏用户的统计数据(例如:关注者的数量)\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏过滤的状态\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从 csv 文件中导入拉黑名单\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从 csv 文件中导入关注\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入预置主题\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入框\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"复选框\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(默认:\", _interpolate(_named(\"value\")), \")\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(默认)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面语言\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您所选择的主题文件不被 Pleroma 支持,因此主题未被修改。\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在您的浏览器中无法使用\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"链接\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您需要手动审核关注请求\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"循环视频\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只循环没有声音的视频(例如:Mastodon 里的“GIF”)\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在弹出框内播放视频\"])},\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生成缩略图时不要裁剪附件\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"名字\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"名字及简介\"])},\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新密码\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要显示的通知类型\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示富文本格式\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有屏蔽\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有隐藏\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要显示我所关注的人\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要显示关注我的人\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在我的个人资料中显示“管理员”徽章\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在我的个人资料中显示“监察员”徽章\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"将不和谐附件和链接预览隐藏,点击才会显示\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth令牌\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"令牌\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刷新令牌\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"有效期至\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤消\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在离开页面时暂停时间线推送\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预置\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"个人背景图\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"横幅图片\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"个人资料\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置界面边缘的圆角 (单位:像素)\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"时间线中的回复\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示所有回复\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只显示发送给我的回复/发送给我关注的用户的回复\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只显示发送给我的回复\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自动隐藏新帖子的按钮(移动设备)\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存设置时发生错误\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置已保存\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索你想屏蔽的用户\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索你想要隐藏的用户\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"安全\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回复时复制可见范围(私信中永远会复制)\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使发文可见范围的选项最少化\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置新头像\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置新的个人资料背景\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置新的横幅图片\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"总是显示主题框\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回复时复制主题\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"类似电子邮件: \\\"re: 主题\\\"\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"类似 mastodon: 与原主题相同\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要复制\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发文状态内容类型\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"鼠标悬停时播放GIF\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"滚动到顶部时自动推送新内容\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文本\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主题\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使用十六进制代码(#rrggbb)来设置主题颜色。\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您也可以通过选中复选框来覆盖某些组件的颜色和透明度。使用“清除所有”按钮来清除所有覆盖设置。\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"某些条目下的图标是背景或文本对比指示器,鼠标悬停可以获取详细信息。请记住,使用透明度来显示最差的情况。\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提醒\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上传照片\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户设置\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"否\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"是\"])}\n },\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要停止收到某个指定的用户的通知,请使用隐藏功能。\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽一个用户会停止接收来自该用户的所有通知,并且会取消对该用户的关注。\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"启用 web 推送通知\"])},\n \"style\": {\n \"switcher\": {\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留颜色\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留阴影\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留透明度\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留圆角\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留字体\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"保留\\\" 选项在选择或加载主题时保留当前设置的选项,在导出主题时还会存储上述选项。当所有复选框未设置时,导出主题将保存所有内容。\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"清除全部\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"清除透明度\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载主题\"])},\n \"help\": {\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 已升级,主题会与您记忆中的不太一样。\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您导入的文件来自旧版本的 FE。\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您导入的文件来自更高版本的 FE。\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您导入的文件是旧版 FE 的。我们尽可能保持兼容性,但还是可能出现不一致的情况。\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"版本冲突:很有可能是 FE 版本回滚后再次升级了,如果您使用旧版本的 FE 更改了主题那么您可能需要使用旧版本,否则请使用新版本。\"])},\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不知出于何种原因,主题快照缺失了,一些地方可能与您印象中的不符。\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"为保万无一失,加载了主题快照。您可以试着加载主题数据。\"])},\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 的版本回滚了。\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 的主题引擎随着版本更新升级了。\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在文件中没有主题快照,所以网站外观可能会与原来预想的不同。\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主题快照已加载,因此所有的值均被覆盖。您可以改为加载主题的实际数据。\"])}\n },\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新版本\"])},\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"老版本\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保持原状\"])}\n },\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"颜色\"])},\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"透明度\"])},\n \"contrast\": {\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"对比度是 \", _interpolate(_named(\"ratio\")), \", 它 \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n \"level\": {\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"符合 AA 等级准则(最低)\"])},\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"符合 AAA 等级准则(推荐)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不符合任何辅助功能指南\"])}\n },\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"大字文本 (18pt+)\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文本\"])}\n }\n }\n },\n \"common_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"常规\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"常用颜色\"])},\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"点击”高级“ 标签进行细致的控制\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"图标,强调,徽章\"])}\n },\n \"advanced_colors\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"高级\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提醒或警告背景色\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"错误\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"徽章背景\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板标题\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顶栏\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"边框\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入框\"])},\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"灰度文字\"])},\n \"chat\": {\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"边框\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发出的\"])},\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收到的\"])}\n },\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁用的\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"压下的\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"强调元素\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"选中的菜单项\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"选中的发布内容\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"图标\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票统计图\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提示框,菜单,弹出框\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发布内容/用户简介\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"中性\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"警告\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"标签页\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"底衬\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按下的\"])},\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"壁纸\"])}\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"圆角\"])}\n },\n \"shadows\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"阴影和照明\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"组件\"])},\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"覆盖\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"阴影 #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"模糊\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"扩散\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"内阴影\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"对于阴影你还可以使用 --variable 作为颜色值来使用 CSS3 变量。请注意,这种情况下,透明设置将不起作用。\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"警告,此阴影设置会总是使用 \", _interpolate(_list(0)), \" ,如果浏览器支持的话。\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 不支持参数 \", _interpolate(_list(1)), \" 和关键词 \", _interpolate(_list(2)), \" 。\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请注意组合两个内部和非内部的阴影到头像上,在透明头像上可能会有意料之外的效果。\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"阴影的扩散 > 0 会同设置成零一样\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"内阴影会使用 \", _interpolate(_list(0))])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板标题\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顶栏\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户头像(在个人资料栏)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户头像(在帖子显示栏)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"弹窗与工具提示\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮(悬停)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮(压下)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮(压下和悬停)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入框\"])}\n },\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"对于阴影,您还可以使用 \", _interpolate(_list(0)), \" 表示法来使用其它颜色插槽。\"])}\n },\n \"fonts\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字体\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"为用户界面的元素选择字体。若选择 “自选”,您必须输入与系统显示完全一致的字体名称。\"])},\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入框\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发帖文字\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"帖子中使用等间距文字(富文本)\"])}\n },\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字体名称\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"大小 (in px)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字重 (粗体)\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自选\"])}\n },\n \"preview\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预览\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"内容\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"错误示例\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按钮\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"有堆 \", _interpolate(_list(0)), \" 和 \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"monospace 内容\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刚刚抵达上海。\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"帮助手册\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"阅读我们的 \", _interpolate(_list(0)), \" ,然而什么也学不到!\"])},\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这很正常\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"我已经浏览了条款及细则\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"一个棒棒的小小链接\"])}\n }\n },\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"版本\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"后端版本\"])},\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前端版本\"])}\n },\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"过滤器\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"域名\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邮箱修改成功!\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改您的电子邮箱时发生错误。\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改电子邮箱\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在关注的账号迁移时自动重新关注\"])},\n \"notification_setting_privacy_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在通知推送中隐藏发送者和内容\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐私\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示关注数\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"互动\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户迁移\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新邮箱\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在时间线上显示表情符号互动\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏推送通知中的发送者与内容信息\"])},\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽来自你没有关注的用户的通知\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索需要隐藏的域名\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"实时接收帖子和通知\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要重置背景图吗?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要重置横幅图片吗?\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要重置头像吗?\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置横幅图片\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置个人背景图\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置头像\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示关注者数量\"])},\n \"profile_fields\": {\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"内容\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"标签\"])},\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加字段\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"个人资料元数据\"])}\n },\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"强调色\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从表情符号选择器插入表情符号时,在表情两侧插入空格\"])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"允许通过搜索检索等服务找到此账号\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏与屏蔽\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这是一个机器人账号\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"趣味\"])},\n \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(不推荐使用,试验性,已知会跳过一些帖子)\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天消息\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meme 箭头\"])},\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"优化时间线渲染\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从 csv 文件导入隐藏名单\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏名单导入成功!处理它们将需要一段时间。\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导入隐藏名单出错\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏名单导入\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"导出你的隐藏名单到一个 csv 文件\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏名单导出\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏实例壁纸\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"与默认设置不同\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多设置\"])},\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默认标记发文为敏感内容\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只显示对我本人的回复\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示对我关注的人的回复\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示已隐藏的发文\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏媒体预览\"])},\n \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"词语过滤\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存更改\"])},\n \"file_export_import\": {\n \"errors\": {\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文件的小版本不同,有些设置可能无法加载\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"不兼容的主版本:\", _interpolate(_named(\"fileMajor\")), \",文件版本过旧,不受支持(最小设置版本 \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"不兼容的主版本:\", _interpolate(_named(\"fileMajor\")), \",此 PleromaFE(设置版本 \", _interpolate(_named(\"feMajor\")), \")过旧,无法处理\"])},\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"所选文件不是受支持的 Pleroma 设置备份。没有进行任何更改。\"])}\n },\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从文件恢复设置\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备份设置和主题到文件\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备份设置到文件\"])},\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设置备份\"])}\n },\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"反转分栏的顺序\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏实例留言板\"])},\n \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示高级\"])},\n \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"下载\"])},\n \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及链接\"])},\n \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"账号备份\"])},\n \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备份\"])},\n \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除\"])},\n \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"获取备份列表出错:\", _interpolate(_named(\"error\"))])},\n \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"创建一个新备份\"])},\n \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"创建了一个新备份。\"])},\n \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"账号别名\"])},\n \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"别名\"])},\n \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"获取别名时出错:\", _interpolate(_named(\"error\"))])},\n \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭\"])},\n \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除这个别名\"])},\n \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"添加一个新别名(例如 \", _interpolate(_named(\"example\")), \")\"])},\n \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"别名添加好了。\"])},\n \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移动账号\"])},\n \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"目标账号(例如 \", _interpolate(_named(\"example\")), \")\"])},\n \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"账号移动好了。\"])},\n \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"移动账号时出错:\", _interpolate(_named(\"error\"))])},\n \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这个设置是捆绑到你的个人资料的,能影响所有会话和客户端\"])},\n \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文章的样子跟感受\"])},\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从服务器收邮件的语言\"])},\n \"account_backup_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这个允许你下载一份账号信息和文章的存档,但是现在还不能导入到 Pleroma 账号里。\"])},\n \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备份还没准备好。\"])},\n \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"添加新备份时出错:\", _interpolate(_named(\"error\"))])},\n \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"添加别名时出错:\", _interpolate(_named(\"error\"))])},\n \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"如果你想把账号移动到别的地方,你必须去目标账号,然后加一个指向这里的别名。\"])},\n \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"词语过滤器\"])},\n \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户资料\"])},\n \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知栏\"])},\n \"backup_running\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"此备份正在进行,已处理 \", _interpolate(_named(\"number\")), \" 条记录。\"]), _normalize([\"此备份正在进行,已处理 \", _interpolate(_named(\"number\")), \" 条记录。\"])])},\n \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在导航中显示列表\"])},\n \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"词过滤器及其它...\"])},\n \"backup_failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此备份已失败。\"])},\n \"birthday\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生日\"])},\n \"show_birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展示我的生日\"])}\n },\n \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示我的喜欢列表(人们仍然会收到通知)\"])},\n \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当有足够的空间时,显示第三栏包含\"])},\n \"third_column_mode_postform\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主要的发文形式和导航\"])},\n \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"分栏\"])},\n \"user_popover_avatar_overlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在用户头像上显示用户弹出窗口\"])},\n \"navbar_column_stretch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"延伸导航栏至分栏宽度\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"帖子\"])},\n \"conversation_display_linear_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"线性视图\"])},\n \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示 “其它回复” 按钮\"])},\n \"confirm_dialogs_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除状态\"])},\n \"confirm_dialogs_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏用户\"])},\n \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"分栏大小\"])},\n \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"侧栏\"])},\n \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"內容\"])},\n \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在状态下方\"])},\n \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在状态中\"])},\n \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自动显示新的帖子\"])},\n \"use_websockets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使用 websockets(实时更新)\"])},\n \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默认显示同主题帖子中的最大层数\"])},\n \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏经过词语过滤的状态\"])},\n \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不显示已隐藏的同主题帖子\"])},\n \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你所投的投票的结束于\"])},\n \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"允许在树状视图中进行更灵活的导航\"])},\n \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"以模糊的文字显示当前状态的上级\"])},\n \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"线性样式\"])},\n \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"淡化域名(例如:\", \"@\", \"example.org 中的 \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当你被提及时突出显示提及你\"])},\n \"user_popover_avatar_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"弹出式头像点击动作\"])},\n \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"缩放头像\"])},\n \"user_popover_avatar_action_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭弹出窗口\"])},\n \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示 (You)s\"])},\n \"add_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加备用语言\"])},\n \"remove_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除\"])},\n \"primary_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主要语言:\"])},\n \"fallback_language\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"备用语言 \", _interpolate(_named(\"index\")), \":\"])},\n \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐私\"])},\n \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"对话显示样式\"])},\n \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"树状样式\"])},\n \"conversation_display_tree_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"树状视图\"])},\n \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要把分栏的顶栏固定在屏幕的顶部\"])},\n \"confirm_dialogs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请求确认于\"])},\n \"confirm_dialogs_logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出\"])},\n \"confirm_dialogs_deny_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝关注请求\"])},\n \"confirm_dialogs_approve_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"批准关注请求\"])},\n \"confirm_dialogs_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽用户\"])},\n \"confirm_dialogs_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消关注用户\"])},\n \"confirm_dialogs_repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发状态\"])},\n \"confirm_dialogs_remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除关注者\"])},\n \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏机器人的帖子\"])},\n \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏帖子中的机器人提示\"])},\n \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"始终显示浮动的新帖子按钮\"])},\n \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示侧栏的滚动条\"])},\n \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"完全不显示第三栏\"])},\n \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"将 \", \"@\", \" 符号显示为图标而不是文本\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示提及链接\"])},\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"始终以简称的形式出现(例如:\", \"@\", \"foo)\"])},\n \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"仅远程实例用户以全名的形式出现(例如:\", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"始终以全名的形式出现(例如:\", \"@\", \"foo\", \"@\", \"example.org)\"])},\n \"mention_link_use_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"点击提及链接时显示用户卡片\"])},\n \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在链接旁边显示用户头像\"])},\n \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在提及内容旁边显示用户头像\"])},\n \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"打开个人资料\"])},\n \"autocomplete_select_first\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当有自动完成的结果时,自动选择第一个候选项\"])},\n \"url\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预览\"])},\n \"commit_value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存\"])},\n \"commit_value_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当前值未保存,请按此按钮以提交你的修改\"])},\n \"reset_value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置\"])},\n \"reset_value_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置草稿\"])},\n \"hard_reset_value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"硬重置\"])},\n \"hard_reset_value_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从存储中移除设置,强制使用默认值\"])},\n \"emoji_reactions_scale\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"表情回应比例系数\"])}\n },\n \"time\": {\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 小时\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 小时\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"还有 \", _interpolate(_list(0))])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 之前\"])},\n \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分钟\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分钟\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刚刚\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刚刚\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 周\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 周\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])},\n \"unit\": {\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])},\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 小时\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 时\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 个月\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 周\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 周\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])}\n }\n },\n \"timeline\": {\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"折叠\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"对话\"])},\n \"error_fetching\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"获取更新时发生错误\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载更早的状态\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这条内容仅关注者可见,或者是私信,因此不能转发\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发了\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示新内容\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已是最新\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有更多的状态\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有状态更新\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重新载入\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"取得时间轴时发生错误:\", _interpolate(_list(0))])},\n \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"丢失实时连接:CloseEvent code \", _interpolate(_list(0))])},\n \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已建立实时连接\"])},\n \"quick_view_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"快速视图设置\"])},\n \"quick_filter_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"快速过滤设置\"])}\n },\n \"status\": {\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除状态\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在个人资料置顶\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消在个人资料置顶\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"置顶\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要删除这条状态吗?\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回复\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回复:\"])},\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏对话\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"对话取消隐藏\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏内容\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示内容\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏此部分标题\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示全部标题\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"同主题帖子已被隐藏\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"复制状态链接\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"状态不可取得\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消书签\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"书签\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\",含有过滤词:\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"该状态已被删除\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"外部来源\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展开\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(你)\"])},\n \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"还有 \", _interpolate(_named(\"number\")), \" 个\"])},\n \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"文章有 \", _interpolate(_named(\"number\")), \" 个附件\"])},\n \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"折起附件\"])},\n \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示所有附件\"])},\n \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"预览描述(打开附件能看完整描述)\"])},\n \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏附件\"])},\n \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除附件\"])},\n \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"停止 Flash 播放器\"])},\n \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"把附件左移\"])},\n \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"打开图库\"])},\n \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏这个同主题帖子\"])},\n \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示这个同主题帖子\"])},\n \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"查看这个同主题帖子的剩余部分(一共有 \", _interpolate(_named(\"numStatus\")), \" 个状态)\"])},\n \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"查看这个状态下的别的 \", _interpolate(_named(\"numReplies\")), \" 个回复\"])},\n \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"显示完整对话(还有 \", _interpolate(_named(\"numStatus\")), \" 个状态)\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"回复(另外 +\", _interpolate(_named(\"numReplies\")), \" 个):\"])},\n \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"把附件右移\"])},\n \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"显示这个同主题帖子下的所有东西(一共有 \", _interpolate(_named(\"numStatus\")), \" 个状态,最大深度 \", _interpolate(_named(\"depth\")), \")\"])},\n \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只显示这个状态的回复\"])},\n \"repeat_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要转发这条状态吗?\"])},\n \"repeat_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认转发\"])},\n \"repeat_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发\"])},\n \"repeat_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要转发\"])},\n \"edit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑状态\"])},\n \"edited_at\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(最后编辑于 \", _interpolate(_named(\"time\")), \")\"])},\n \"delete_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认删除\"])},\n \"delete_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除\"])},\n \"delete_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留\"])},\n \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在媒体模式中显示\"])},\n \"status_history\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"状态历史\"])},\n \"delete_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"删除状态时出错:\", _interpolate(_list(0))])},\n \"reaction_count_label\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"num\")), \" 人作出了表情回应\"])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"核准\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已屏蔽!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请求已发送!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请求中…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消关注\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在关注\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注者\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在关注!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注了你!\"])},\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"就是你!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒体\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已隐藏\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"每天\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"跨站关注\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"报告\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"状态\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"订阅\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"退订\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消屏蔽\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在取消屏蔽…\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在屏蔽…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消隐藏\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消隐藏中…\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏中…\"])},\n \"admin_menu\": {\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"仲裁\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"赋予管理权限\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤销管理权限\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"赋予监察员权限\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤销监察员权限\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"激活账号\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭账号\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除账号\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"标记所有的帖子都是 - 工作场合不适\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从帖子里删除媒体文件\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"强制帖子为不公开\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"强制帖子为只有关注者可看\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁止从远程实例关注用户\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"完全禁止关注用户\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从联合实例中禁止用户帖子\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除用户\"])},\n \"delete_user_data_and_deactivate_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这将永久删除该账户的数据并停用该账户。你完全确定吗?\"])}\n },\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已隐藏\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"显示转发\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏转发\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"消息\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"机器人\"])},\n \"highlight\": {\n \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"侧边条纹\"])},\n \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"条纹背景\"])},\n \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"单一颜色背景\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不突出显示\"])}\n },\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑个人资料\"])},\n \"approve_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认批准\"])},\n \"approve_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"批准\"])},\n \"block_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽\"])},\n \"block_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要屏蔽\"])},\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已停用\"])},\n \"deny_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认拒绝\"])},\n \"deny_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝\"])},\n \"deny_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要拒绝\"])},\n \"deny_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您是否要拒绝 \", _interpolate(_named(\"user\")), \" 的关注请求?\"])},\n \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消请求\"])},\n \"unfollow_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认取消关注\"])},\n \"unfollow_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您确定要取消关注 \", _interpolate(_named(\"user\")), \" 吗?\"])},\n \"unfollow_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消关注\"])},\n \"unfollow_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要取消关注\"])},\n \"mute_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认隐藏\"])},\n \"mute_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏\"])},\n \"mute_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要隐藏\"])},\n \"mute_duration_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"让这个用户隐藏(0表示无限期):\"])},\n \"remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除关注者\"])},\n \"remove_follower_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认移除关注者\"])},\n \"remove_follower_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留\"])},\n \"remove_follower_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您确定要将 \", _interpolate(_named(\"user\")), \" 从您的关注者里移除吗?\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"生于 \", _interpolate(_named(\"birthday\"))])},\n \"note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备注\"])},\n \"approve_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要批准\"])},\n \"approve_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您是否要批准 \", _interpolate(_named(\"user\")), \" 的关注请求?\"])},\n \"block_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"确认屏蔽\"])},\n \"block_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您确定要屏蔽 \", _interpolate(_named(\"user\")), \" 吗?\"])},\n \"mute_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"您确定要隐藏 \", _interpolate(_named(\"user\")), \" 吗?\"])},\n \"remove_follower_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除\"])},\n \"note_blank\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(空)\"])},\n \"edit_note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑备注\"])},\n \"edit_note_apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"应用\"])},\n \"edit_note_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户时间线\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抱歉,此个人资料不存在。\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抱歉,载入个人资料时出错。\"])}\n },\n \"user_reporting\": {\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"报告 \", _interpolate(_list(0))])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此报告会发送给您的实例监察员。您可以在下面提供更多详细信息解释报告的缘由:\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"其它信息\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这个账号来自另一个服务器。是否同时发送一份报告副本到那里?\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"转发 \", _interpolate(_list(0))])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"当处理您的请求时,发生了一个错误。\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推荐关注\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上传媒体\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回复\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户设置\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝关注请求\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加互动\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"书签\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"接受关注请求\"])},\n \"toggle_expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展开或折叠通知以显示帖子全文\"])},\n \"toggle_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展开或折叠通知以显示已隐藏的内容\"])},\n \"autocomplete_available\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"共有 \", _interpolate(_named(\"number\")), \" 个结果可用。使用向上和向下键浏览它们。\"])}\n },\n \"upload\": {\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上传不成功。\"])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"文件太大了 [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"迟些再试\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"上传错误:\", _interpolate(_list(0))])}\n },\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"人\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"话题标签\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" 人正在讨论\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" 人正在讨论\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有搜索结果\"])},\n \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有更多结果\"])},\n \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载更多结果\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"忘记密码了?\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置密码\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"输入您的电邮地址或者用户名,我们将发送一个链接到您的邮箱,用于重置密码。\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您的电邮地址或者用户名\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"检查您的邮箱,会有一个链接用于重置密码。\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回到首页\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您达到了尝试次数的上限,请稍后再试。\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密码重置已被禁用。请联系您的实例管理员。\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您必须重置密码,但是密码重置被禁用了。请联系您所在实例的管理员。\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您必须重置密码才能登陆。\"])}\n },\n \"remote_user_resolver\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未找到。\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索\"])},\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"远程用户解析器\"])}\n },\n \"emoji\": {\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"选择器保持打开\"])},\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"贴纸\"])},\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode 表情符号\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自定义表情符号\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"插入表情符号\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索表情符号\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"表情符号\"])},\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"加载所有表情符号(共 \", _interpolate(_named(\"emojiAmount\")), \" 个)\"])},\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"最先加载的 \", _interpolate(_named(\"saneAmount\")), \" 表情符号,加载全部表情符号可能会带来性能问题。\"])},\n \"unicode_groups\": {\n \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"旗帜\"])},\n \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"饮食\"])},\n \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"物件\"])},\n \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"人和身体\"])},\n \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"符号\"])},\n \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"旅行和地点\"])},\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"活动\"])},\n \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"动物和自然\"])},\n \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"表情与情感\"])}\n },\n \"regional_indicator\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"地区指示符 \", _interpolate(_named(\"letter\"))])},\n \"unpacked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未分组的表情符号\"])}\n },\n \"about\": {\n \"mrf\": {\n \"simple\": {\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本实例向以下实例仅发送公开的帖子:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隔离\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本实例不会接收来自下列实例的消息:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本实例只接收来自下列实例的消息:\"])},\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"对于特定实例的策略\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"接受\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除媒体\"])},\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本实例将来自以下实例的媒体内容强制设置为敏感内容:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"强制设置媒体为敏感内容\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本实例移除来自以下实例的媒体内容:\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"该实例在从“已知网络”时间线上移除了下列实例:\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从“已知网络”时间线上移除\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"理由\"])},\n \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"无\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"实例\"])}\n },\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF 策略会影响本实例的互通行为。以下策略已启用:\"])},\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已启用的 MRF 策略\"])},\n \"keyword\": {\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从“全部已知网络”时间线上移除\"])},\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关键词策略\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"替换\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒绝\"])}\n },\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"联邦互通\"])}\n },\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理人员\"])}\n },\n \"domain_mute_card\": {\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在取消隐藏…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消隐藏\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏中…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隐藏\"])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 无法访问浏览器储存。您的登陆以及本地设置将不会被保存,您也可能遇到未知问题。请尝试启用 cookies。\"])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"留言板\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"今天\"])}\n },\n \"file_type\": {\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文件\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"图片\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"视频\"])},\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"音频\"])}\n },\n \"chats\": {\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您还没有任何聊天记录。开始聊天吧!\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发送消息时出了点问题。\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载聊天时出了点问题。\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您确定要删除此消息吗?\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"无法发布空消息\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新聊天\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"发消息给 \", _interpolate(_named(\"nickname\"))])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你:\"])}\n },\n \"announcements\": {\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"标为已读\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发布公告\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在这里输入公告内容...\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"发布\"])},\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"错误:\", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关闭\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"起始时间: \"])},\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"终止时间: \"])},\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这是全天的事件\"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"发表于 \", _interpolate(_named(\"time\"))])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"开始于 \", _interpolate(_named(\"time\"))])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"结束于 \", _interpolate(_named(\"time\"))])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"编辑\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"这个公告不活跃\"])}\n },\n \"report\": {\n \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"被举报者:\"])},\n \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已关闭\"])},\n \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已解决\"])},\n \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"举报者:\"])},\n \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"开启\"])},\n \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已举报的状态:\"])},\n \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"备注:\"])},\n \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"状态:\"])}\n },\n \"unicode_domain_indicator\": {\n \"tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此域名包含非 ascii 字符。\"])}\n },\n \"update\": {\n \"update_bugs_gitlab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma GitLab\"])},\n \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"关于变化的更多细节,请参见 \", _interpolate(_named(\"theFullChangelog\")), \" 。\"])},\n \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"完整的更新日志\"])},\n \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请忍耐一下\"])},\n \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"我们已经有一段时间没有发布发行版,所以事情的外观和感觉可能与你习惯的不一样。\"])},\n \"update_bugs\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"请在 \", _interpolate(_named(\"pleromaGitlab\")), \" 上报告任何问题和bug,因为我们已经改变了很多,虽然我们进行了彻底的测试,并且自己使用了开发版本,但我们可能错过了一些东西。我们欢迎你对你可能遇到的问题或如何改进Pleroma和Pleroma-FE提出反馈和建议。\"])},\n \"art_by\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Art by \", _interpolate(_named(\"linkToArtist\"))])}\n },\n \"lists\": {\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索用户\"])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"创建\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存更改\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"删除列表\"])},\n \"following_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"限制于正在关注\"])},\n \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理列表\"])},\n \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理列表成员\"])},\n \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索更多用户\"])},\n \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"从列表中移除\"])},\n \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加到列表\"])},\n \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已在列表中\"])},\n \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"正在编辑列表 \", _interpolate(_named(\"listTitle\"))])},\n \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在创建新的列表\"])},\n \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存标题\"])},\n \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"真的要删除列表吗?\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"操作列表时出错:\", _interpolate(_list(0))])},\n \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列表\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新的列表\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"列表标题\"])}\n },\n \"admin_dash\": {\n \"window_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理员\"])},\n \"old_ui_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"旧的管理界面在此处\"])},\n \"reset_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置全部\"])},\n \"commit_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存全部\"])},\n \"tabs\": {\n \"nodb\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"无数据库配置\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"实例\"])},\n \"limits\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"限制\"])},\n \"frontends\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前端\"])}\n },\n \"nodb\": {\n \"heading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"数据库配置已禁用\"])},\n \"documentation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文档\"])},\n \"text2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"大多数配置选项将不可用。\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"你需要修改后端配置文件,以便将 \", _interpolate(_named(\"property\")), \" 设置为 \", _interpolate(_named(\"value\")), \",更多内容请参见 \", _interpolate(_named(\"documentation\")), \"。\"])}\n },\n \"captcha\": {\n \"native\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本地\"])},\n \"kocaptcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KoCaptcha\"])}\n },\n \"instance\": {\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"实例信息\"])},\n \"registrations\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户注册\"])},\n \"captcha_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"验证码\"])},\n \"kocaptcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KoCaptcha 设置\"])},\n \"access\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"实例访问\"])},\n \"restrict\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"限制匿名访客的访问\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"时间线访问\"])},\n \"profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户个人资料访问\"])},\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"状态/活动访问\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"允许/不允许访问特定 API 的详细设置。默认情况下(不确定状态),如果实例不是公开的,它将拒绝访问;勾选复选框意味着即使实例是公开的,也拒绝访问;不勾选意味着即使实例是私有的,也允许访问。请注意,如果某些设置被设定,可能会发生意想不到的行为,例如,如果个人资料访问被禁用,显示的帖文将不包含个人资料信息。\"])}\n }\n },\n \"limits\": {\n \"arbitrary_limits\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"任意限制\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"帖文限制\"])},\n \"uploads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件限制\"])},\n \"users\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户个人资料限制\"])},\n \"profile_fields\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"个人资料字段限制\"])},\n \"user_uploads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"个人资料媒体限制\"])}\n },\n \"frontend\": {\n \"repository\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"存储库链接\"])},\n \"versions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"可用版本\"])},\n \"build_url\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"构建产物 URL\"])},\n \"reinstall\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重新安装\"])},\n \"is_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(默认)\"])},\n \"is_default_custom\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(默认,版本:\", _interpolate(_named(\"version\")), \")\"])},\n \"install\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"安装\"])},\n \"install_version\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"安装版本 \", _interpolate(_named(\"version\"))])},\n \"more_install_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多安装选项\"])},\n \"more_default_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多默认设置选项\"])},\n \"set_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"设为默认\"])},\n \"set_default_version\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"将版本 \", _interpolate(_named(\"version\")), \" 设为默认\"])},\n \"wip_notice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"请注意,此部分是一个WIP,缺乏某些功能,因为前端管理的后台实现并不完整。\"])},\n \"default_frontend\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默认前端\"])},\n \"default_frontend_tip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默认的前端将显示给所有用户。目前还没有办法让用户选择个人的前端。如果你不使用 PleromaFE,你很可能不得不使用旧的和有问题的 AdminFE 来进行实例配置,直到我们替换它。\"])},\n \"available_frontends\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"可供安装\"])}\n },\n \"temp_overrides\": {\n \":pleroma\": {\n \":instance\": {\n \":public\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"实例是公开的\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁用此功能将使所有的 API 只能被已登录用户访问,这将使公共和联邦时间线无法被匿名访客访问。\"])}\n },\n \":limit_to_local_content\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"将搜索限于本地内容\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁用未认证用户(默认)、所有用户或无人的全局网络搜索\"])}\n },\n \":description_limit\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"限制\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件描述的字数限制\"])}\n },\n \":background_image\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"背景图片\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"背景图片(主要使用于 PleromaFE)\"])}\n }\n }\n }\n },\n \"wip_notice\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"此管理仪表板是实验性和 WIP 的,\", _interpolate(_named(\"adminFeLink\")), \"。\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","list","_list","named","_named","plural","_plural"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/static/js/i18n/zh_Hant-json.bfa569654a5cd74767ce.js b/priv/static/static/js/i18n/zh_Hant-json.bfa569654a5cd74767ce.js @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[6544],{37644:(r,n,e)=>{e.r(n),e.d(n,{default:()=>t});const t={emoji:{unicode:r=>{const{normalize:n}=r;return n(["統一碼繪文字"])},custom:r=>{const{normalize:n}=r;return n(["自定義繪文字"])},add_emoji:r=>{const{normalize:n}=r;return n(["插入繪文字"])},search_emoji:r=>{const{normalize:n}=r;return n(["搜索繪文字"])},keep_open:r=>{const{normalize:n}=r;return n(["選擇器保持打開"])},emoji:r=>{const{normalize:n}=r;return n(["繪文字"])},stickers:r=>{const{normalize:n}=r;return n(["貼紙"])},load_all:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["加載所有繪文字(共 ",e(t("emojiAmount"))," 個)"])},load_all_hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["最先加載的 ",e(t("saneAmount"))," ,加載全部繪文字可能會帶來性能問題。"])}},polls:{not_enough_options:r=>{const{normalize:n}=r;return n(["投票的選項太少"])},expired:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["投票 ",e(t(0))," 前已結束"])},expires_in:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["投票於 ",e(t(0))," 內結束"])},expiry:r=>{const{normalize:n}=r;return n(["投票期限"])},multiple_choices:r=>{const{normalize:n}=r;return n(["多選"])},single_choice:r=>{const{normalize:n}=r;return n(["單選"])},type:r=>{const{normalize:n}=r;return n(["問卷類型"])},vote:r=>{const{normalize:n}=r;return n(["投票"])},votes:r=>{const{normalize:n}=r;return n(["票"])},option:r=>{const{normalize:n}=r;return n(["選項"])},add_option:r=>{const{normalize:n}=r;return n(["增加選項"])},add_poll:r=>{const{normalize:n}=r;return n(["增加投票"])},votes_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 票"]),n([e(t("count"))," 票"])])},people_voted_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 人已投票"]),n([e(t("count"))," 人已投票"])])}},notifications:{reacted_with:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["作出了 ",e(t(0))," 的反應"])},migrated_to:r=>{const{normalize:n}=r;return n(["遷移到"])},no_more_notifications:r=>{const{normalize:n}=r;return n(["沒有更多的通知"])},repeated_you:r=>{const{normalize:n}=r;return n(["轉發了你的發文"])},read:r=>{const{normalize:n}=r;return n(["已閱!"])},notifications:r=>{const{normalize:n}=r;return n(["通知"])},load_older:r=>{const{normalize:n}=r;return n(["載入更早的通知"])},follow_request:r=>{const{normalize:n}=r;return n(["想要關注你"])},followed_you:r=>{const{normalize:n}=r;return n(["關注了你"])},favorited_you:r=>{const{normalize:n}=r;return n(["喜歡了你的發文"])},broken_favorite:r=>{const{normalize:n}=r;return n(["未知的狀態,正在搜索中…"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["獲取通知錯誤:",e(t(0))])}},nav:{chats:r=>{const{normalize:n}=r;return n(["聊天"])},timelines:r=>{const{normalize:n}=r;return n(["時間線"])},preferences:r=>{const{normalize:n}=r;return n(["偏好設置"])},who_to_follow:r=>{const{normalize:n}=r;return n(["推薦關注"])},search:r=>{const{normalize:n}=r;return n(["搜索"])},user_search:r=>{const{normalize:n}=r;return n(["用戶搜索"])},bookmarks:r=>{const{normalize:n}=r;return n(["書籤"])},twkn:r=>{const{normalize:n}=r;return n(["已知網絡"])},timeline:r=>{const{normalize:n}=r;return n(["時間線"])},public_tl:r=>{const{normalize:n}=r;return n(["公共時間線"])},dms:r=>{const{normalize:n}=r;return n(["私信"])},interactions:r=>{const{normalize:n}=r;return n(["互動"])},mentions:r=>{const{normalize:n}=r;return n(["提及"])},friend_requests:r=>{const{normalize:n}=r;return n(["關注請求"])},back:r=>{const{normalize:n}=r;return n(["後退"])},administration:r=>{const{normalize:n}=r;return n(["管理員"])},about:r=>{const{normalize:n}=r;return n(["關於"])},home_timeline:r=>{const{normalize:n}=r;return n(["家時間線"])}},media_modal:{next:r=>{const{normalize:n}=r;return n(["往後"])},previous:r=>{const{normalize:n}=r;return n(["往前"])}},login:{heading:{recovery:r=>{const{normalize:n}=r;return n(["雙重因素恢復"])},totp:r=>{const{normalize:n}=r;return n(["雙重因素驗證"])}},recovery_code:r=>{const{normalize:n}=r;return n(["恢復碼"])},enter_two_factor_code:r=>{const{normalize:n}=r;return n(["輸入一個雙重因素驗證碼"])},enter_recovery_code:r=>{const{normalize:n}=r;return n(["輸入一個恢復碼"])},authentication_code:r=>{const{normalize:n}=r;return n(["驗證碼"])},hint:r=>{const{normalize:n}=r;return n(["登錄後加入討論"])},username:r=>{const{normalize:n}=r;return n(["用戶名"])},register:r=>{const{normalize:n}=r;return n(["註冊"])},placeholder:r=>{const{normalize:n}=r;return n(["例:鈴音"])},password:r=>{const{normalize:n}=r;return n(["密碼"])},logout:r=>{const{normalize:n}=r;return n(["登出"])},description:r=>{const{normalize:n}=r;return n(["用 OAuth 登入"])},login:r=>{const{normalize:n}=r;return n(["登入"])}},importer:{error:r=>{const{normalize:n}=r;return n(["導入此文件時出現一個錯誤。"])},success:r=>{const{normalize:n}=r;return n(["導入成功。"])},submit:r=>{const{normalize:n}=r;return n(["提交"])}},image_cropper:{cancel:r=>{const{normalize:n}=r;return n(["取消"])},save_without_cropping:r=>{const{normalize:n}=r;return n(["保存不裁剪"])},save:r=>{const{normalize:n}=r;return n(["保存"])},crop_picture:r=>{const{normalize:n}=r;return n(["裁剪圖片"])}},general:{peek:r=>{const{normalize:n}=r;return n(["窺視"])},close:r=>{const{normalize:n}=r;return n(["關閉"])},verify:r=>{const{normalize:n}=r;return n(["驗證"])},confirm:r=>{const{normalize:n}=r;return n(["確認"])},enable:r=>{const{normalize:n}=r;return n(["啟用"])},disable:r=>{const{normalize:n}=r;return n(["禁用"])},cancel:r=>{const{normalize:n}=r;return n(["取消"])},dismiss:r=>{const{normalize:n}=r;return n(["忽略"])},show_less:r=>{const{normalize:n}=r;return n(["收起"])},show_more:r=>{const{normalize:n}=r;return n(["展開"])},optional:r=>{const{normalize:n}=r;return n(["可選"])},retry:r=>{const{normalize:n}=r;return n(["再試"])},error_retry:r=>{const{normalize:n}=r;return n(["請再試"])},generic_error:r=>{const{normalize:n}=r;return n(["發生一個錯誤"])},loading:r=>{const{normalize:n}=r;return n(["載入中…"])},more:r=>{const{normalize:n}=r;return n(["更多"])},submit:r=>{const{normalize:n}=r;return n(["提交"])},apply:r=>{const{normalize:n}=r;return n(["應用"])},role:{moderator:r=>{const{normalize:n}=r;return n(["審查者"])},admin:r=>{const{normalize:n}=r;return n(["管理員"])}},flash_content:r=>{const{normalize:n}=r;return n(["點擊以使用 Ruffle 顯示 Flash 內容(實驗性,可能無效)。"])},flash_security:r=>{const{normalize:n}=r;return n(["請注意,這可能有潜在的危險,因為Flash內容仍然是武斷的程式碼。"])},flash_fail:r=>{const{normalize:n}=r;return n(["無法加載flash內容,請參閱控制台瞭解詳細資訊。"])},no:r=>{const{normalize:n}=r;return n(["否"])},generic_error_message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["發生了一個錯誤: ",e(t(0))])},never_show_again:r=>{const{normalize:n}=r;return n(["不再顯示"])},yes:r=>{const{normalize:n}=r;return n(["是"])},undo:r=>{const{normalize:n}=r;return n(["復原"])},scroll_to_top:r=>{const{normalize:n}=r;return n(["滾動至頂部"])},pin:r=>{const{normalize:n}=r;return n(["置頂"])},scope_in_timeline:{private:r=>{const{normalize:n}=r;return n(["僅關注者"])}},unpin:r=>{const{normalize:n}=r;return n(["停止置頂"])}},finder:{find_user:r=>{const{normalize:n}=r;return n(["尋找用戶"])},error_fetching_user:r=>{const{normalize:n}=r;return n(["獲取用戶時發生錯誤"])}},features_panel:{who_to_follow:r=>{const{normalize:n}=r;return n(["推薦關注"])},title:r=>{const{normalize:n}=r;return n(["特色"])},text_limit:r=>{const{normalize:n}=r;return n(["文字數量限制"])},scope_options:r=>{const{normalize:n}=r;return n(["可見範圍設置"])},media_proxy:r=>{const{normalize:n}=r;return n(["媒體代理"])},pleroma_chat_messages:r=>{const{normalize:n}=r;return n(["Pleroma 聊天"])},chat:r=>{const{normalize:n}=r;return n(["聊天"])},gopher:r=>{const{normalize:n}=r;return n(["Gopher"])},upload_limit:r=>{const{normalize:n}=r;return n(["上傳限制"])},shout:r=>{const{normalize:n}=r;return n(["留言板"])}},exporter:{processing:r=>{const{normalize:n}=r;return n(["正在處理,稍後會提示您下載文件"])},export:r=>{const{normalize:n}=r;return n(["導出"])}},domain_mute_card:{unmute_progress:r=>{const{normalize:n}=r;return n(["取消靜音中…"])},unmute:r=>{const{normalize:n}=r;return n(["取消靜音"])},mute_progress:r=>{const{normalize:n}=r;return n(["靜音中…"])},mute:r=>{const{normalize:n}=r;return n(["靜音"])}},shoutbox:{title:r=>{const{normalize:n}=r;return n(["留言板"])}},about:{staff:r=>{const{normalize:n}=r;return n(["職員"])},mrf:{simple:{media_nsfw_desc:r=>{const{normalize:n}=r;return n(["這個實例強迫以下實例的帖子媒體設定為敏感:"])},media_nsfw:r=>{const{normalize:n}=r;return n(["媒體強制設定為敏感"])},media_removal_desc:r=>{const{normalize:n}=r;return n(["這個實例移除以下實例的帖子媒體:"])},media_removal:r=>{const{normalize:n}=r;return n(["移除媒體"])},ftl_removal_desc:r=>{const{normalize:n}=r;return n(["這個實例在所有已知網絡中移除下列實例:"])},ftl_removal:r=>{const{normalize:n}=r;return n(["從所有已知網路中移除"])},quarantine_desc:r=>{const{normalize:n}=r;return n(["本實例只會把公開發文發送到下列實例:"])},quarantine:r=>{const{normalize:n}=r;return n(["隔離"])},reject_desc:r=>{const{normalize:n}=r;return n(["本實例不會接收來自下列實例的消息:"])},reject:r=>{const{normalize:n}=r;return n(["拒絕"])},accept_desc:r=>{const{normalize:n}=r;return n(["本實例只接收來自下列實例的消息:"])},simple_policies:r=>{const{normalize:n}=r;return n(["站規"])},accept:r=>{const{normalize:n}=r;return n(["接受"])},instance:r=>{const{normalize:n}=r;return n(["實例"])},reason:r=>{const{normalize:n}=r;return n(["原因"])},not_applicable:r=>{const{normalize:n}=r;return n(["N/A"])}},mrf_policies_desc:r=>{const{normalize:n}=r;return n(["MRF 策略會影響本實例的互通行為。以下策略已啟用:"])},keyword:{ftl_removal:r=>{const{normalize:n}=r;return n(["從「全部已知網絡」時間線上移除"])},replace:r=>{const{normalize:n}=r;return n(["取代"])},reject:r=>{const{normalize:n}=r;return n(["拒絕"])},is_replaced_by:r=>{const{normalize:n}=r;return n(["→"])},keyword_policies:r=>{const{normalize:n}=r;return n(["關鍵字政策"])}},mrf_policies:r=>{const{normalize:n}=r;return n(["已啟用的MRF政策"])},federation:r=>{const{normalize:n}=r;return n(["聯邦"])}}},settings:{style:{common:{color:r=>{const{normalize:n}=r;return n(["顏色"])},contrast:{context:{"18pt":r=>{const{normalize:n}=r;return n(["大字文本 (18pt+)"])},text:r=>{const{normalize:n}=r;return n(["文本"])}},level:{aaa:r=>{const{normalize:n}=r;return n(["符合 AAA 等級準則(推薦)"])},aa:r=>{const{normalize:n}=r;return n(["符合 AA 等級準則(最低)"])},bad:r=>{const{normalize:n}=r;return n(["不符合任何輔助功能指南"])}},hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["對比度是 ",e(t("ratio")),", 它 ",e(t("level"))," ",e(t("context"))])}},opacity:r=>{const{normalize:n}=r;return n(["透明度"])}},advanced_colors:{faint_text:r=>{const{normalize:n}=r;return n(["灰度文字"])},alert_error:r=>{const{normalize:n}=r;return n(["錯誤"])},badge_notification:r=>{const{normalize:n}=r;return n(["通知"])},alert:r=>{const{normalize:n}=r;return n(["提醒或警告背景色"])},_tab_label:r=>{const{normalize:n}=r;return n(["高级"])},alert_warning:r=>{const{normalize:n}=r;return n(["警告"])},alert_neutral:r=>{const{normalize:n}=r;return n(["中性"])},post:r=>{const{normalize:n}=r;return n(["帖子/用戶簡介"])},badge:r=>{const{normalize:n}=r;return n(["徽章背景"])},popover:r=>{const{normalize:n}=r;return n(["提示框,菜單,彈出框"])},panel_header:r=>{const{normalize:n}=r;return n(["面板標題"])},top_bar:r=>{const{normalize:n}=r;return n(["頂欄"])},borders:r=>{const{normalize:n}=r;return n(["邊框"])},buttons:r=>{const{normalize:n}=r;return n(["按鈕"])},inputs:r=>{const{normalize:n}=r;return n(["輸入框"])},underlay:r=>{const{normalize:n}=r;return n(["底襯"])},poll:r=>{const{normalize:n}=r;return n(["投票統計圖"])},icons:r=>{const{normalize:n}=r;return n(["圖標"])},highlight:r=>{const{normalize:n}=r;return n(["強調元素"])},pressed:r=>{const{normalize:n}=r;return n(["按下"])},selectedPost:r=>{const{normalize:n}=r;return n(["選中的帖子"])},selectedMenu:r=>{const{normalize:n}=r;return n(["選中的菜單項"])},disabled:r=>{const{normalize:n}=r;return n(["關閉"])},toggled:r=>{const{normalize:n}=r;return n(["切換"])},tabs:r=>{const{normalize:n}=r;return n(["標籤"])},chat:{incoming:r=>{const{normalize:n}=r;return n(["收到"])},outgoing:r=>{const{normalize:n}=r;return n(["發出"])},border:r=>{const{normalize:n}=r;return n(["邊框"])}},wallpaper:r=>{const{normalize:n}=r;return n(["桌布"])}},preview:{header_faint:r=>{const{normalize:n}=r;return n(["這很正常"])},header:r=>{const{normalize:n}=r;return n(["預覽"])},content:r=>{const{normalize:n}=r;return n(["內容"])},error:r=>{const{normalize:n}=r;return n(["例子錯誤"])},button:r=>{const{normalize:n}=r;return n(["按鈕"])},text:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["有堆 ",e(t(0))," 和 ",e(t(1))])},mono:r=>{const{normalize:n}=r;return n(["內容"])},input:r=>{const{normalize:n}=r;return n(["剛剛抵達洛杉磯."])},faint_link:r=>{const{normalize:n}=r;return n(["有用的手冊"])},fine_print:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["閱讀我們的 ",e(t(0))," ,然而什麼有用的也學不到!"])},checkbox:r=>{const{normalize:n}=r;return n(["我已經瀏覽了條款及細則"])},link:r=>{const{normalize:n}=r;return n(["一個很好的小鏈接"])}},shadows:{override:r=>{const{normalize:n}=r;return n(["覆寫"])},_tab_label:r=>{const{normalize:n}=r;return n(["陰影和燈光"])},component:r=>{const{normalize:n}=r;return n(["組件"])},shadow_id:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["陰影 #",e(t("value"))])},blur:r=>{const{normalize:n}=r;return n(["模糊"])},spread:r=>{const{normalize:n}=r;return n(["擴散"])},inset:r=>{const{normalize:n}=r;return n(["插圖"])},hintV3:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["對於陰影,您還可以使用",e(t(0)),"表示法來使用其他顏色插槽。"])},filter_hint:{always_drop_shadow:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["警告,此陰影設置會總是使用 ",e(t(0))," ,如果瀏覽器支持的話。"])},drop_shadow_syntax:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 不支持參數 ",e(t(1))," 和關鍵詞 ",e(t(2))," 。"])},avatar_inset:r=>{const{normalize:n}=r;return n(["請注意組合兩個內部和非內部的陰影到頭像上,在透明頭像上可能會有意料之外的效果。"])},spread_zero:r=>{const{normalize:n}=r;return n(["陰影的擴散 > 0 會同設置成零一樣"])},inset_classic:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["插入內部的陰影會使用 ",e(t(0))])}},components:{panel:r=>{const{normalize:n}=r;return n(["面板"])},panelHeader:r=>{const{normalize:n}=r;return n(["面板標題"])},topBar:r=>{const{normalize:n}=r;return n(["頂欄"])},avatar:r=>{const{normalize:n}=r;return n(["用戶頭像(在個人資料欄)"])},avatarStatus:r=>{const{normalize:n}=r;return n(["用戶頭像(在帖子顯示欄)"])},popup:r=>{const{normalize:n}=r;return n(["彈窗和工具提示"])},button:r=>{const{normalize:n}=r;return n(["按鈕"])},buttonHover:r=>{const{normalize:n}=r;return n(["按鈕(懸停)"])},buttonPressed:r=>{const{normalize:n}=r;return n(["按鈕(按下)"])},buttonPressedHover:r=>{const{normalize:n}=r;return n(["按鈕(按下和懸停)"])},input:r=>{const{normalize:n}=r;return n(["輸入框"])}}},switcher:{use_snapshot:r=>{const{normalize:n}=r;return n(["舊版"])},load_theme:r=>{const{normalize:n}=r;return n(["載入主題"])},keep_color:r=>{const{normalize:n}=r;return n(["保留顏色"])},keep_shadows:r=>{const{normalize:n}=r;return n(["保留陰影"])},keep_opacity:r=>{const{normalize:n}=r;return n(["保留透明度"])},keep_roundness:r=>{const{normalize:n}=r;return n(["保留圓角"])},help:{migration_napshot_gone:r=>{const{normalize:n}=r;return n(["不知出於何種原因,主題快照缺失了,一些地方可能與您印象中的不符。"])},snapshot_source_mismatch:r=>{const{normalize:n}=r;return n(["版本衝突:很有可能是 FE 版本回滾後再次升級了,如果您使用舊版本的 FE 更改了主題那麼您可能需要使用舊版本,否則請使用新版本。"])},future_version_imported:r=>{const{normalize:n}=r;return n(["您導入的文件來自更高版本的 FE。"])},older_version_imported:r=>{const{normalize:n}=r;return n(["您導入的文件來自舊版本的 FE。"])},snapshot_missing:r=>{const{normalize:n}=r;return n(["在文件中沒有主題快照,所以網站外觀可能會與原來預想的不同。"])},fe_upgraded:r=>{const{normalize:n}=r;return n(["PleromaFE 的主題引擎隨著版本更新升級了。"])},fe_downgraded:r=>{const{normalize:n}=r;return n(["PleromaFE 的版本回滾了。"])},upgraded_from_v2:r=>{const{normalize:n}=r;return n(["PleromaFE 已升級,主題會和你記憶中的不太一樣。"])},v2_imported:r=>{const{normalize:n}=r;return n(["您導入的文件是舊版 FE 的。我們儘可能保持兼容性,但還是可能出現不一致的情況。"])},snapshot_present:r=>{const{normalize:n}=r;return n(["載入快照已加載,因此所有值均被覆蓋。 您可以改為載入主題實際數據。"])},migration_snapshot_ok:r=>{const{normalize:n}=r;return n(["為保萬無一失,載入了主題快照。您可以試著載入主題數據。"])}},use_source:r=>{const{normalize:n}=r;return n(["新版本"])},keep_as_is:r=>{const{normalize:n}=r;return n(["保持原狀"])},clear_opacity:r=>{const{normalize:n}=r;return n(["清除透明度"])},clear_all:r=>{const{normalize:n}=r;return n(["清除全部"])},reset:r=>{const{normalize:n}=r;return n(["重置"])},keep_fonts:r=>{const{normalize:n}=r;return n(["保留字體"])},save_load_hint:r=>{const{normalize:n}=r;return n(['"保留" 選項在選擇或載入主題時保留當前設置的選項,在導出主題時還會存儲上述選項。當所有複選框未設置時,導出主題將保存所有內容。'])}},fonts:{components:{interface:r=>{const{normalize:n}=r;return n(["界面"])},input:r=>{const{normalize:n}=r;return n(["輸入框"])},post:r=>{const{normalize:n}=r;return n(["發帖文字"])},postCode:r=>{const{normalize:n}=r;return n(["帖子中使用等間距文字(富文本)"])}},_tab_label:r=>{const{normalize:n}=r;return n(["字體"])},help:r=>{const{normalize:n}=r;return n(["給用戶界面的元素選擇字體。選擇 “自選”的你必須輸入確切的字體名稱。"])},family:r=>{const{normalize:n}=r;return n(["字體名稱"])},size:r=>{const{normalize:n}=r;return n(["大小 (像素)"])},weight:r=>{const{normalize:n}=r;return n(["字重 (粗體))"])},custom:r=>{const{normalize:n}=r;return n(["自選"])}},common_colors:{foreground_hint:r=>{const{normalize:n}=r;return n(["點擊”高級“ 標籤進行細緻的控制"])},main:r=>{const{normalize:n}=r;return n(["常用顏色"])},_tab_label:r=>{const{normalize:n}=r;return n(["共同"])},rgbo:r=>{const{normalize:n}=r;return n(["圖標,強調,徽章"])}},radii:{_tab_label:r=>{const{normalize:n}=r;return n(["圓角"])}}},notification_setting_block_from_strangers:r=>{const{normalize:n}=r;return n(["屏蔽來自你沒有關注的用戶的通知"])},user_mutes:r=>{const{normalize:n}=r;return n(["用户"])},hide_followers_count_description:r=>{const{normalize:n}=r;return n(["不顯示關注者數量"])},no_rich_text_description:r=>{const{normalize:n}=r;return n(["不顯示富文本格式"])},notification_visibility_moves:r=>{const{normalize:n}=r;return n(["用戶遷移"])},notification_visibility_repeats:r=>{const{normalize:n}=r;return n(["轉發"])},notification_visibility_mentions:r=>{const{normalize:n}=r;return n(["提及"])},notification_visibility_likes:r=>{const{normalize:n}=r;return n(["喜歡"])},interfaceLanguage:r=>{const{normalize:n}=r;return n(["界面語言"])},instance_default:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["(默認:",e(t("value")),")"])},inputRadius:r=>{const{normalize:n}=r;return n(["輸入框"])},import_theme:r=>{const{normalize:n}=r;return n(["導入預置主題"])},import_followers_from_a_csv_file:r=>{const{normalize:n}=r;return n(["從 csv 文件中導入關注"])},import_blocks_from_a_csv_file:r=>{const{normalize:n}=r;return n(["從 csv 文件中導入封鎖黑名單名單"])},hide_filtered_statuses:r=>{const{normalize:n}=r;return n(["隱藏過濾的發文"])},lock_account_description:r=>{const{normalize:n}=r;return n(["你需要手動審核關注請求"])},loop_video:r=>{const{normalize:n}=r;return n(["循環視頻"])},loop_video_silent_only:r=>{const{normalize:n}=r;return n(["只循環沒有聲音的視頻(例如:Mastodon 裡的“GIF”)"])},mutes_tab:r=>{const{normalize:n}=r;return n(["靜音"])},play_videos_in_modal:r=>{const{normalize:n}=r;return n(["在彈出框內播放視頻"])},profile_fields:{add_field:r=>{const{normalize:n}=r;return n(["添加字段"])},name:r=>{const{normalize:n}=r;return n(["標籤"])},value:r=>{const{normalize:n}=r;return n(["內容"])},label:r=>{const{normalize:n}=r;return n(["個人資料元數據"])}},use_contain_fit:r=>{const{normalize:n}=r;return n(["生成縮略圖時不要裁剪附件"])},notification_visibility:r=>{const{normalize:n}=r;return n(["要顯示的通知類型"])},notification_visibility_follows:r=>{const{normalize:n}=r;return n(["關注"])},new_email:r=>{const{normalize:n}=r;return n(["新電郵"])},subject_line_mastodon:r=>{const{normalize:n}=r;return n(["比如mastodon: copy as is"])},reset_background_confirm:r=>{const{normalize:n}=r;return n(["您確定要重置個人資料背景圖嗎?"])},reset_banner_confirm:r=>{const{normalize:n}=r;return n(["您確定要重置橫幅圖片嗎?"])},reset_avatar_confirm:r=>{const{normalize:n}=r;return n(["您確定要重置頭像嗎?"])},reset_profile_banner:r=>{const{normalize:n}=r;return n(["重置橫幅圖片"])},reset_profile_background:r=>{const{normalize:n}=r;return n(["重置個人資料背景圖"])},reset_avatar:r=>{const{normalize:n}=r;return n(["重置頭像"])},discoverable:r=>{const{normalize:n}=r;return n(["允許通過搜索檢索等服務找到此賬號"])},delete_account_error:r=>{const{normalize:n}=r;return n(["刪除賬戶時發生錯誤,如果一直刪除不了,請聯繫實例管理員。"])},composing:r=>{const{normalize:n}=r;return n(["寫作設置"])},chatMessageRadius:r=>{const{normalize:n}=r;return n(["聊天訊息"])},mfa:{confirm_and_enable:r=>{const{normalize:n}=r;return n(["確認並啟用OTP"])},setup_otp:r=>{const{normalize:n}=r;return n(["設置OTP"])},otp:r=>{const{normalize:n}=r;return n(["OTP"])},wait_pre_setup_otp:r=>{const{normalize:n}=r;return n(["預設OTP"])},verify:{desc:r=>{const{normalize:n}=r;return n(["要啟用雙因素驗證,請把你的雙因素驗證 app 裡的數字輸入:"])}},scan:{secret_code:r=>{const{normalize:n}=r;return n(["密鑰"])},desc:r=>{const{normalize:n}=r;return n(["使用你的雙因素驗證 app,掃瞄這個二維碼,或者輸入這些文字密鑰:"])},title:r=>{const{normalize:n}=r;return n(["掃瞄"])}},authentication_methods:r=>{const{normalize:n}=r;return n(["身份驗證方法"])},recovery_codes_warning:r=>{const{normalize:n}=r;return n(["抄寫這些號碼,或者保存在安全的地方。這些號碼不會再次顯示。如果你無法訪問你的 2FA app,也丟失了你的恢復碼,你的賬號就再也無法登錄了。"])},waiting_a_recovery_codes:r=>{const{normalize:n}=r;return n(["正在接收備份碼…"])},recovery_codes:r=>{const{normalize:n}=r;return n(["恢復碼。"])},warning_of_generate_new_codes:r=>{const{normalize:n}=r;return n(["當你生成新的恢復碼時,你的舊恢復碼就失效了。"])},generate_new_recovery_codes:r=>{const{normalize:n}=r;return n(["生成新的恢復碼"])},title:r=>{const{normalize:n}=r;return n(["雙因素驗證"])}},new_password:r=>{const{normalize:n}=r;return n(["新密碼"])},name_bio:r=>{const{normalize:n}=r;return n(["名字及簡介"])},name:r=>{const{normalize:n}=r;return n(["名字"])},domain_mutes:r=>{const{normalize:n}=r;return n(["域名"])},delete_account_instructions:r=>{const{normalize:n}=r;return n(["在下面輸入密碼,以確認刪除帳戶。"])},delete_account_description:r=>{const{normalize:n}=r;return n(["永久刪除你的帳號和所有數據。"])},delete_account:r=>{const{normalize:n}=r;return n(["刪除帳戶"])},default_vis:r=>{const{normalize:n}=r;return n(["默認可見性範圍"])},data_import_export_tab:r=>{const{normalize:n}=r;return n(["數據導入/導出"])},mutes_and_blocks:r=>{const{normalize:n}=r;return n(["靜音與封鎖"])},current_password:r=>{const{normalize:n}=r;return n(["當前密碼"])},confirm_new_password:r=>{const{normalize:n}=r;return n(["確認新密碼"])},collapse_subject:r=>{const{normalize:n}=r;return n(["摺疊帶標題的內容"])},checkboxRadius:r=>{const{normalize:n}=r;return n(["複選框"])},instance_default_simple:r=>{const{normalize:n}=r;return n(["(默認)"])},interface:r=>{const{normalize:n}=r;return n(["界面"])},invalid_theme_imported:r=>{const{normalize:n}=r;return n(["您所選擇的主題文件不被 Pleroma 支持,因此主題未被修改。"])},limited_availability:r=>{const{normalize:n}=r;return n(["在您的瀏覽器中無法使用"])},links:r=>{const{normalize:n}=r;return n(["鏈接"])},changed_password:r=>{const{normalize:n}=r;return n(["成功修改了密碼!"])},change_password_error:r=>{const{normalize:n}=r;return n(["修改密碼的時候出了點問題。"])},change_password:r=>{const{normalize:n}=r;return n(["修改密碼"])},changed_email:r=>{const{normalize:n}=r;return n(["郵箱修改成功!"])},bot:r=>{const{normalize:n}=r;return n(["這是一個機器人賬號"])},change_email:r=>{const{normalize:n}=r;return n(["修改電子郵箱"])},cRed:r=>{const{normalize:n}=r;return n(["紅色(取消)"])},cOrange:r=>{const{normalize:n}=r;return n(["橙色(收藏)"])},cGreen:r=>{const{normalize:n}=r;return n(["綠色(轉發)"])},cBlue:r=>{const{normalize:n}=r;return n(["藍色(回覆,關注)"])},btnRadius:r=>{const{normalize:n}=r;return n(["按鈕"])},notification_visibility_emoji_reactions:r=>{const{normalize:n}=r;return n(["互動"])},no_blocks:r=>{const{normalize:n}=r;return n(["沒有封鎖"])},no_mutes:r=>{const{normalize:n}=r;return n(["沒有靜音"])},hide_follows_description:r=>{const{normalize:n}=r;return n(["不要顯示我所關注的人"])},hide_followers_description:r=>{const{normalize:n}=r;return n(["不要顯示關注我的人"])},hide_follows_count_description:r=>{const{normalize:n}=r;return n(["不顯示關注數"])},nsfw_clickthrough:r=>{const{normalize:n}=r;return n(["將敏感附件和鏈接隱藏,點擊才能打開"])},valid_until:r=>{const{normalize:n}=r;return n(["有效期至"])},panelRadius:r=>{const{normalize:n}=r;return n(["面板"])},pause_on_unfocused:r=>{const{normalize:n}=r;return n(["在離開頁面時暫停時間線推送"])},notifications:r=>{const{normalize:n}=r;return n(["通知"])},notification_setting_filters:r=>{const{normalize:n}=r;return n(["過濾器"])},notification_setting_privacy:r=>{const{normalize:n}=r;return n(["隱私"])},notification_mutes:r=>{const{normalize:n}=r;return n(["要停止收到某個指定的用戶的通知,請使用靜音功能。"])},notification_blocks:r=>{const{normalize:n}=r;return n(["封鎖一個用戶會停掉所有他的通知,等同於取消關注。"])},enable_web_push_notifications:r=>{const{normalize:n}=r;return n(["啟用 web 推送通知"])},presets:r=>{const{normalize:n}=r;return n(["預置"])},profile_background:r=>{const{normalize:n}=r;return n(["配置文件背景圖"])},profile_banner:r=>{const{normalize:n}=r;return n(["橫幅圖片"])},profile_tab:r=>{const{normalize:n}=r;return n(["個人資料"])},radii_help:r=>{const{normalize:n}=r;return n(["設置界面邊緣的圓角 (單位:像素)"])},reply_visibility_all:r=>{const{normalize:n}=r;return n(["顯示所有回覆"])},autohide_floating_post_button:r=>{const{normalize:n}=r;return n(["自動隱藏新帖子的按鈕(移動設備)"])},saving_err:r=>{const{normalize:n}=r;return n(["保存設置時發生錯誤"])},saving_ok:r=>{const{normalize:n}=r;return n(["設置已保存"])},search_user_to_block:r=>{const{normalize:n}=r;return n(["搜索你想屏蔽的用戶"])},search_user_to_mute:r=>{const{normalize:n}=r;return n(["搜索你想要隱藏的用戶"])},security_tab:r=>{const{normalize:n}=r;return n(["安全"])},set_new_avatar:r=>{const{normalize:n}=r;return n(["設置新頭像"])},set_new_profile_background:r=>{const{normalize:n}=r;return n(["設置新的個人背景"])},set_new_profile_banner:r=>{const{normalize:n}=r;return n(["設置新的個人橫幅"])},settings:r=>{const{normalize:n}=r;return n(["設置"])},subject_input_always_show:r=>{const{normalize:n}=r;return n(["總是顯示主題框"])},subject_line_behavior:r=>{const{normalize:n}=r;return n(["回覆時複製主題"])},subject_line_email:r=>{const{normalize:n}=r;return n(['比如電郵: "re: 主題"'])},subject_line_noop:r=>{const{normalize:n}=r;return n(["不要複製"])},post_status_content_type:r=>{const{normalize:n}=r;return n(["發文內容類型"])},stop_gifs:r=>{const{normalize:n}=r;return n(["鼠標懸停時播放GIF"])},streaming:r=>{const{normalize:n}=r;return n(["開啟滾動到頂部時的自動推送"])},text:r=>{const{normalize:n}=r;return n(["文本"])},theme:r=>{const{normalize:n}=r;return n(["主題"])},theme_help:r=>{const{normalize:n}=r;return n(["使用十六進制代碼(#rrggbb)來設置主題顏色。"])},theme_help_v2_1:r=>{const{normalize:n}=r;return n(["你也可以通過切換複選框來覆蓋某些組件的顏色和透明。使用“清除所有”來清楚所有覆蓋設置。"])},theme_help_v2_2:r=>{const{normalize:n}=r;return n(["某些條目下的圖標是背景或文本對比指示器,鼠標懸停可以獲取詳細信息。請記住,使用透明度來顯示最差的情況。"])},tooltipRadius:r=>{const{normalize:n}=r;return n(["提醒"])},upload_a_photo:r=>{const{normalize:n}=r;return n(["上傳照片"])},user_settings:r=>{const{normalize:n}=r;return n(["用戶設置"])},values:{false:r=>{const{normalize:n}=r;return n(["否"])},true:r=>{const{normalize:n}=r;return n(["是"])}},avatar_size_instruction:r=>{const{normalize:n}=r;return n(["推薦的頭像圖片最小的尺寸是 150x150 像素。"])},emoji_reactions_on_timeline:r=>{const{normalize:n}=r;return n(["在時間線上顯示繪文字互動"])},export_theme:r=>{const{normalize:n}=r;return n(["導出預置主題"])},filtering:r=>{const{normalize:n}=r;return n(["過濾"])},filtering_explanation:r=>{const{normalize:n}=r;return n(["所有包含以下詞彙的內容都會被隱藏,一行一個"])},follow_export:r=>{const{normalize:n}=r;return n(["導出關注"])},follow_export_button:r=>{const{normalize:n}=r;return n(["將關注導出成 csv 文件"])},follow_import:r=>{const{normalize:n}=r;return n(["導入關注"])},follow_import_error:r=>{const{normalize:n}=r;return n(["導入關注時錯誤"])},follows_imported:r=>{const{normalize:n}=r;return n(["關注已導入!尚需要一些時間來處理。"])},hide_attachments_in_convo:r=>{const{normalize:n}=r;return n(["在對話中隱藏附件"])},hide_attachments_in_tl:r=>{const{normalize:n}=r;return n(["在時間線上隱藏附件"])},hide_muted_posts:r=>{const{normalize:n}=r;return n(["不顯示被靜音的用戶的帖子"])},max_thumbnails:r=>{const{normalize:n}=r;return n(["最多每個帖子所能顯示的縮略圖數量"])},hide_isp:r=>{const{normalize:n}=r;return n(["隱藏指定實例的面板"])},preload_images:r=>{const{normalize:n}=r;return n(["預載圖片"])},use_one_click_nsfw:r=>{const{normalize:n}=r;return n(["點擊一次以打開工作場所不適宜的附件"])},hide_post_stats:r=>{const{normalize:n}=r;return n(["隱藏帖子的統計數據(例如:收藏的次數)"])},hide_user_stats:r=>{const{normalize:n}=r;return n(["隱藏用戶的統計數據(例如:關注者的數量)"])},general:r=>{const{normalize:n}=r;return n(["通用"])},foreground:r=>{const{normalize:n}=r;return n(["前景"])},blocks_tab:r=>{const{normalize:n}=r;return n(["封鎖"])},blocks_imported:r=>{const{normalize:n}=r;return n(["封鎖黑名單導入成功!需要一點時間來處理。"])},block_import_error:r=>{const{normalize:n}=r;return n(["導入封鎖黑名單出錯"])},block_import:r=>{const{normalize:n}=r;return n(["封鎖黑名單導入"])},block_export_button:r=>{const{normalize:n}=r;return n(["導出你的封鎖黑名單到一個 csv 文件"])},block_export:r=>{const{normalize:n}=r;return n(["封鎖黑名單導出"])},bio:r=>{const{normalize:n}=r;return n(["簡介"])},background:r=>{const{normalize:n}=r;return n(["背景"])},avatarRadius:r=>{const{normalize:n}=r;return n(["頭像"])},avatarAltRadius:r=>{const{normalize:n}=r;return n(["頭像(通知)"])},avatar:r=>{const{normalize:n}=r;return n(["頭像"])},attachments:r=>{const{normalize:n}=r;return n(["附件"])},attachmentRadius:r=>{const{normalize:n}=r;return n(["附件"])},allow_following_move:r=>{const{normalize:n}=r;return n(["正在關注的賬號遷移時自動重新關注"])},enter_current_password_to_confirm:r=>{const{normalize:n}=r;return n(["輸入你當前密碼來確認你的身份"])},security:r=>{const{normalize:n}=r;return n(["安全"])},app_name:r=>{const{normalize:n}=r;return n(["App 名稱"])},change_email_error:r=>{const{normalize:n}=r;return n(["修改你的電子郵箱時發生錯誤。"])},type_domains_to_mute:r=>{const{normalize:n}=r;return n(["搜索需要隱藏的域名"])},pad_emoji:r=>{const{normalize:n}=r;return n(["從繪文字選擇器插入繪文字時,在繪文字兩側插入空格"])},useStreamingApi:r=>{const{normalize:n}=r;return n(["實時接收發佈以及通知"])},minimal_scopes_mode:r=>{const{normalize:n}=r;return n(["最小發文範圍"])},scope_copy:r=>{const{normalize:n}=r;return n(["回覆時的複製範圍(私信是總是複製的)"])},reply_visibility_self:r=>{const{normalize:n}=r;return n(["只顯示發送給我的回覆"])},reply_visibility_following:r=>{const{normalize:n}=r;return n(["只顯示發送給我的回覆/發送給我關注的用戶的回覆"])},replies_in_timeline:r=>{const{normalize:n}=r;return n(["時間線中的回覆"])},revoke_token:r=>{const{normalize:n}=r;return n(["撤消"])},show_admin_badge:r=>{const{normalize:n}=r;return n(["顯示管理徽章"])},accent:r=>{const{normalize:n}=r;return n(["強調色"])},greentext:r=>{const{normalize:n}=r;return n(["前文箭頭"])},show_moderator_badge:r=>{const{normalize:n}=r;return n(["顯示主持人徽章"])},oauth_tokens:r=>{const{normalize:n}=r;return n(["OAuth代幣"])},token:r=>{const{normalize:n}=r;return n(["代幣"])},refresh_token:r=>{const{normalize:n}=r;return n(["刷新token"])},useStreamingApiWarning:r=>{const{normalize:n}=r;return n(["(不推薦使用,實驗性的,已知跳過文章)"])},fun:r=>{const{normalize:n}=r;return n(["有趣"])},notification_setting_hide_notification_contents:r=>{const{normalize:n}=r;return n(["隱藏推送通知中的發送者與內容信息"])},version:{title:r=>{const{normalize:n}=r;return n(["版本"])},backend_version:r=>{const{normalize:n}=r;return n(["後端版本"])},frontend_version:r=>{const{normalize:n}=r;return n(["前端版本"])}},virtual_scrolling:r=>{const{normalize:n}=r;return n(["優化時間線渲染"])},import_mutes_from_a_csv_file:r=>{const{normalize:n}=r;return n(["從CSV文件導入靜音"])},mutes_imported:r=>{const{normalize:n}=r;return n(["靜音導入了!處理它們將需要一段時間。"])},mute_import:r=>{const{normalize:n}=r;return n(["靜音導入"])},mute_import_error:r=>{const{normalize:n}=r;return n(["導入靜音時出錯"])},mute_export_button:r=>{const{normalize:n}=r;return n(["將靜音導出到csv文件"])},mute_export:r=>{const{normalize:n}=r;return n(["靜音導出"])},hide_wallpaper:r=>{const{normalize:n}=r;return n(["隱藏實例桌布"])},reply_visibility_self_short:r=>{const{normalize:n}=r;return n(["只顯示對我本人的回复"])},reply_visibility_following_short:r=>{const{normalize:n}=r;return n(["顯示對我關注的人的回复"])},hide_all_muted_posts:r=>{const{normalize:n}=r;return n(["不顯示已隱藏的帖子"])},hide_media_previews:r=>{const{normalize:n}=r;return n(["隱藏媒體預覽"])},word_filter:r=>{const{normalize:n}=r;return n(["詞過濾"])},setting_changed:r=>{const{normalize:n}=r;return n(["與默認設置不同"])},more_settings:r=>{const{normalize:n}=r;return n(["更多設置"])},save:r=>{const{normalize:n}=r;return n(["保存更改"])},file_export_import:{errors:{invalid_file:r=>{const{normalize:n}=r;return n(["所選文件不是受支持的Pleroma設置備份。 沒有進行任何更改。"])},file_too_new:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["不兼容的主版本:",e(t("fileMajor")),",此 PleromaFE(設置版本 ",e(t("feMajor")),")過舊,無法處理"])},file_too_old:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["不兼容的主版本:",e(t("fileMajor")),",文件版本過舊,不受支持(最小設置版本 ",e(t("feMajor")),")"])},file_slightly_new:r=>{const{normalize:n}=r;return n(["檔案的小版本不同,有些設置可能無法載入"])}},restore_settings:r=>{const{normalize:n}=r;return n(["從文件還原設置"])},backup_settings_theme:r=>{const{normalize:n}=r;return n(["備份設置和主題到文件"])},backup_settings:r=>{const{normalize:n}=r;return n(["備份設置到文件"])},backup_restore:r=>{const{normalize:n}=r;return n(["設定備份"])}},sensitive_by_default:r=>{const{normalize:n}=r;return n(["默認標記發文為敏感內容"])},right_sidebar:r=>{const{normalize:n}=r;return n(["在右側顯示側邊欄"])},hide_shoutbox:r=>{const{normalize:n}=r;return n(["隱藏實例留言框"])}},chats:{more:r=>{const{normalize:n}=r;return n(["更多"])},delete_confirm:r=>{const{normalize:n}=r;return n(["您確實要刪除此消息嗎?"])},error_loading_chat:r=>{const{normalize:n}=r;return n(["加載聊天時出了點問題。"])},error_sending_message:r=>{const{normalize:n}=r;return n(["發送消息時出了點問題。"])},empty_chat_list_placeholder:r=>{const{normalize:n}=r;return n(["您還沒有任何聊天記錄。 開始新的聊天!"])},new:r=>{const{normalize:n}=r;return n(["新聊天"])},empty_message_error:r=>{const{normalize:n}=r;return n(["無法發布空消息"])},you:r=>{const{normalize:n}=r;return n(["你:"])},message_user:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["發消息給 ",e(t("nickname"))])},delete:r=>{const{normalize:n}=r;return n(["刪除"])},chats:r=>{const{normalize:n}=r;return n(["聊天"])}},file_type:{audio:r=>{const{normalize:n}=r;return n(["音頻"])},video:r=>{const{normalize:n}=r;return n(["視頻"])},image:r=>{const{normalize:n}=r;return n(["图片"])},file:r=>{const{normalize:n}=r;return n(["檔案"])}},display_date:{today:r=>{const{normalize:n}=r;return n(["今天"])}},status:{mute_conversation:r=>{const{normalize:n}=r;return n(["靜音對話"])},replies_list:r=>{const{normalize:n}=r;return n(["回覆:"])},reply_to:r=>{const{normalize:n}=r;return n(["回覆"])},pin:r=>{const{normalize:n}=r;return n(["在個人資料置頂"])},unpin:r=>{const{normalize:n}=r;return n(["取消在個人資料置頂"])},favorites:r=>{const{normalize:n}=r;return n(["喜歡"])},repeats:r=>{const{normalize:n}=r;return n(["轉發"])},delete:r=>{const{normalize:n}=r;return n(["刪除發文"])},pinned:r=>{const{normalize:n}=r;return n(["置頂"])},bookmark:r=>{const{normalize:n}=r;return n(["書籤"])},unbookmark:r=>{const{normalize:n}=r;return n(["取消書籤"])},delete_confirm:r=>{const{normalize:n}=r;return n(["你真的想要刪除這條發文嗎?"])},unmute_conversation:r=>{const{normalize:n}=r;return n(["對話取消靜音"])},status_unavailable:r=>{const{normalize:n}=r;return n(["發文不可取得"])},copy_link:r=>{const{normalize:n}=r;return n(["複製發文鏈接"])},thread_muted:r=>{const{normalize:n}=r;return n(["静音線程"])},show_full_subject:r=>{const{normalize:n}=r;return n(["顯示完整標題"])},thread_muted_and_words:r=>{const{normalize:n}=r;return n([",有这些字:"])},hide_full_subject:r=>{const{normalize:n}=r;return n(["隱藏完整標題"])},show_content:r=>{const{normalize:n}=r;return n(["顯示內容"])},hide_content:r=>{const{normalize:n}=r;return n(["隱藏內容"])},status_deleted:r=>{const{normalize:n}=r;return n(["該帖已被刪除"])},expand:r=>{const{normalize:n}=r;return n(["展开"])},external_source:r=>{const{normalize:n}=r;return n(["外部來源"])},nsfw:r=>{const{normalize:n}=r;return n(["工作不安全"])}},time:{hours:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 時"])},days_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"天"])},day_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"天"])},days:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])},hour:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 時"])},hour_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"時"])},hours_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"時"])},years_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," y"])},now:r=>{const{normalize:n}=r;return n(["剛剛"])},day:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])},in_future:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["還有 ",e(t(0))])},in_past:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 之前"])},minute:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分鐘"])},minute_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分"])},minutes_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分"])},minutes:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分鐘"])},month:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},months:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},month_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},months_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},now_short:r=>{const{normalize:n}=r;return n(["剛剛"])},second:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},seconds:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},second_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},seconds_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},week:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"周"])},weeks:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"周"])},week_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"周"])},weeks_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"周"])},year:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},years:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},year_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"年"])}},post_status:{media_description_error:r=>{const{normalize:n}=r;return n(["無法更新媒體,請重試"])},media_description:r=>{const{normalize:n}=r;return n(["媒體描述"])},scope:{unlisted:r=>{const{normalize:n}=r;return n(["不公開 - 不會發送到公共時間軸"])},public:r=>{const{normalize:n}=r;return n(["公共 - 發送到公共時間軸"])},private:r=>{const{normalize:n}=r;return n(["僅關注者 - 只有關注了你的人能看到"])},direct:r=>{const{normalize:n}=r;return n(["私信 - 只發送給被提及的用戶"])}},scope_notice:{unlisted:r=>{const{normalize:n}=r;return n(["本條內容既不在公共時間線,也不會在所有已知網絡上可見"])},private:r=>{const{normalize:n}=r;return n(["關注你的人才能看到本條內容"])},public:r=>{const{normalize:n}=r;return n(["本條帖子可以被所有人看到"])}},preview_empty:r=>{const{normalize:n}=r;return n(["空的"])},preview:r=>{const{normalize:n}=r;return n(["預覽"])},posting:r=>{const{normalize:n}=r;return n(["正在發送"])},direct_warning_to_first_only:r=>{const{normalize:n}=r;return n(["本條內容只有被在消息開始處提及的用戶能夠看到。"])},direct_warning_to_all:r=>{const{normalize:n}=r;return n(["本條內容只有被提及的用戶能夠看到。"])},account_not_locked_warning:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["你的帳號沒有 ",e(t(0)),"。任何人都可以關注你並瀏覽你的上鎖內容。"])},new_status:r=>{const{normalize:n}=r;return n(["發佈新發文"])},content_warning:r=>{const{normalize:n}=r;return n(["主題(可選)"])},content_type:{"text/bbcode":r=>{const{normalize:n}=r;return n(["BBCode"])},"text/markdown":r=>{const{normalize:n}=r;return n(["Markdown"])},"text/html":r=>{const{normalize:n}=r;return n(["HTML"])},"text/plain":r=>{const{normalize:n}=r;return n(["純文本"])}},attachments_sensitive:r=>{const{normalize:n}=r;return n(["標記附件為敏感內容"])},account_not_locked_warning_link:r=>{const{normalize:n}=r;return n(["上鎖"])},default:r=>{const{normalize:n}=r;return n(["剛剛抵達洛杉磯。"])},empty_status_error:r=>{const{normalize:n}=r;return n(["不能發布沒有內容,沒有附件的發文"])},post:r=>{const{normalize:n}=r;return n(["發送"])}},errors:{storage_unavailable:r=>{const{normalize:n}=r;return n(["Pleroma無法訪問瀏覽器存儲。您的登錄名或本地設置將不會保存,您可能會遇到意外問題。嘗試啟用Cookie。"])}},timeline:{error_fetching:r=>{const{normalize:n}=r;return n(["獲取更新時發生錯誤"])},conversation:r=>{const{normalize:n}=r;return n(["對話"])},no_retweet_hint:r=>{const{normalize:n}=r;return n(["這條內容僅關注者可見,或者是私信,因此不能轉發"])},collapse:r=>{const{normalize:n}=r;return n(["摺疊"])},load_older:r=>{const{normalize:n}=r;return n(["載入更早的發文"])},repeated:r=>{const{normalize:n}=r;return n(["已轉發"])},show_new:r=>{const{normalize:n}=r;return n(["顯示新內容"])},reload:r=>{const{normalize:n}=r;return n(["重新載入"])},up_to_date:r=>{const{normalize:n}=r;return n(["已是最新"])},no_more_statuses:r=>{const{normalize:n}=r;return n(["没有更多發文"])},no_statuses:r=>{const{normalize:n}=r;return n(["没有發文"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["取得時間線時發生錯誤:",e(t(0))])},socket_reconnected:r=>{const{normalize:n}=r;return n(["已建立實時連接"])},socket_broke:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["丟失實時連接:CloseEvent代碼",e(t(0))])}},interactions:{load_older:r=>{const{normalize:n}=r;return n(["載入更早的互動"])},moves:r=>{const{normalize:n}=r;return n(["用戶遷移"])},follows:r=>{const{normalize:n}=r;return n(["新的關注者"])},favs_repeats:r=>{const{normalize:n}=r;return n(["轉發和喜歡"])}},selectable_list:{select_all:r=>{const{normalize:n}=r;return n(["選擇全部"])}},remote_user_resolver:{error:r=>{const{normalize:n}=r;return n(["未找到。"])},searching_for:r=>{const{normalize:n}=r;return n(["搜索"])},remote_user_resolver:r=>{const{normalize:n}=r;return n(["遠程用戶解析器"])}},registration:{validations:{password_confirmation_match:r=>{const{normalize:n}=r;return n(["不能和密碼一樣"])},password_confirmation_required:r=>{const{normalize:n}=r;return n(["不能留空"])},password_required:r=>{const{normalize:n}=r;return n(["不能留空"])},email_required:r=>{const{normalize:n}=r;return n(["不能留空"])},fullname_required:r=>{const{normalize:n}=r;return n(["不能留空"])},username_required:r=>{const{normalize:n}=r;return n(["不能留空"])}},fullname:r=>{const{normalize:n}=r;return n(["顯示名稱"])},bio_placeholder:r=>{const{normalize:n}=r;return n(["例如:\n你好,我是玲音。\n我是一個住在日本郊區的動畫少女。你可能在 Wired 見過我。"])},fullname_placeholder:r=>{const{normalize:n}=r;return n(["例如:岩倉玲音"])},username_placeholder:r=>{const{normalize:n}=r;return n(["例如:lain"])},new_captcha:r=>{const{normalize:n}=r;return n(["點擊圖片獲取新的驗證碼"])},captcha:r=>{const{normalize:n}=r;return n(["CAPTCHA"])},token:r=>{const{normalize:n}=r;return n(["邀請碼"])},registration:r=>{const{normalize:n}=r;return n(["註冊"])},password_confirm:r=>{const{normalize:n}=r;return n(["確認密碼"])},email:r=>{const{normalize:n}=r;return n(["電子郵箱"])},bio:r=>{const{normalize:n}=r;return n(["簡介"])},reason_placeholder:r=>{const{normalize:n}=r;return n(["此實例的註冊需要手動批准。\n請讓管理知道您為什麼想要註冊。"])},reason:r=>{const{normalize:n}=r;return n(["註冊理由"])},register:r=>{const{normalize:n}=r;return n(["註冊"])}},user_card:{its_you:r=>{const{normalize:n}=r;return n(["就是你!!"])},media:r=>{const{normalize:n}=r;return n(["媒體"])},per_day:r=>{const{normalize:n}=r;return n(["每天"])},remote_follow:r=>{const{normalize:n}=r;return n(["跨站關注"])},subscribe:r=>{const{normalize:n}=r;return n(["訂閱"])},mute_progress:r=>{const{normalize:n}=r;return n(["靜音中…"])},admin_menu:{delete_account:r=>{const{normalize:n}=r;return n(["刪除賬號"])},delete_user:r=>{const{normalize:n}=r;return n(["刪除用戶"])},moderation:r=>{const{normalize:n}=r;return n(["調停"])},grant_admin:r=>{const{normalize:n}=r;return n(["賦予管理權限"])},revoke_admin:r=>{const{normalize:n}=r;return n(["撤銷管理權限"])},grant_moderator:r=>{const{normalize:n}=r;return n(["賦予主持人權限"])},revoke_moderator:r=>{const{normalize:n}=r;return n(["撤銷主持人權限"])},activate_account:r=>{const{normalize:n}=r;return n(["啟用賬號"])},deactivate_account:r=>{const{normalize:n}=r;return n(["關閉賬號"])},force_nsfw:r=>{const{normalize:n}=r;return n(["標記所有的帖子都是工作場合不適"])},strip_media:r=>{const{normalize:n}=r;return n(["從帖子裡刪除媒體文件"])},force_unlisted:r=>{const{normalize:n}=r;return n(["強制帖子為不公開"])},sandbox:r=>{const{normalize:n}=r;return n(["強制帖子為只有關注者可看"])},disable_remote_subscription:r=>{const{normalize:n}=r;return n(["禁止從遠程實例關注用戶"])},disable_any_subscription:r=>{const{normalize:n}=r;return n(["完全禁止關注用戶"])},quarantine:r=>{const{normalize:n}=r;return n(["從聯合實例中禁止用戶帖子"])}},approve:r=>{const{normalize:n}=r;return n(["批准"])},block:r=>{const{normalize:n}=r;return n(["封鎖"])},blocked:r=>{const{normalize:n}=r;return n(["已封鎖!"])},deny:r=>{const{normalize:n}=r;return n(["拒絕"])},favorites:r=>{const{normalize:n}=r;return n(["喜歡"])},follow:r=>{const{normalize:n}=r;return n(["關注"])},follow_sent:r=>{const{normalize:n}=r;return n(["請求已發送!"])},follow_progress:r=>{const{normalize:n}=r;return n(["請求中…"])},follow_unfollow:r=>{const{normalize:n}=r;return n(["取消關注"])},followees:r=>{const{normalize:n}=r;return n(["正在關注"])},followers:r=>{const{normalize:n}=r;return n(["關注者"])},following:r=>{const{normalize:n}=r;return n(["正在關注!"])},follows_you:r=>{const{normalize:n}=r;return n(["關注了你!"])},hidden:r=>{const{normalize:n}=r;return n(["已隱藏"])},mention:r=>{const{normalize:n}=r;return n(["提及"])},message:r=>{const{normalize:n}=r;return n(["消息"])},mute:r=>{const{normalize:n}=r;return n(["靜音"])},muted:r=>{const{normalize:n}=r;return n(["已靜音"])},report:r=>{const{normalize:n}=r;return n(["報告"])},statuses:r=>{const{normalize:n}=r;return n(["發文"])},unsubscribe:r=>{const{normalize:n}=r;return n(["退訂"])},unblock:r=>{const{normalize:n}=r;return n(["取消封鎖"])},unblock_progress:r=>{const{normalize:n}=r;return n(["取消封鎖中…"])},block_progress:r=>{const{normalize:n}=r;return n(["封鎖中…"])},unmute:r=>{const{normalize:n}=r;return n(["取消靜音"])},unmute_progress:r=>{const{normalize:n}=r;return n(["取消靜音中…"])},hide_repeats:r=>{const{normalize:n}=r;return n(["隱藏轉發"])},show_repeats:r=>{const{normalize:n}=r;return n(["顯示轉發"])},roles:{moderator:r=>{const{normalize:n}=r;return n(["主持人"])},admin:r=>{const{normalize:n}=r;return n(["管理員"])}},highlight:{disabled:r=>{const{normalize:n}=r;return n(["無突出顯示"])},solid:r=>{const{normalize:n}=r;return n(["單色背景"])},striped:r=>{const{normalize:n}=r;return n(["條紋背景"])},side:r=>{const{normalize:n}=r;return n(["彩條"])}},bot:r=>{const{normalize:n}=r;return n(["機器人"])},edit_profile:r=>{const{normalize:n}=r;return n(["編輯個人資料"])}},user_profile:{timeline_title:r=>{const{normalize:n}=r;return n(["用戶時間線"])},profile_does_not_exist:r=>{const{normalize:n}=r;return n(["抱歉,此個人資料不存在。"])},profile_loading_error:r=>{const{normalize:n}=r;return n(["抱歉,載入個人資料時出錯。"])}},user_reporting:{title:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["報告 ",e(t(0))])},add_comment_description:r=>{const{normalize:n}=r;return n(["此報告會發送給你的實例管理員。你可以在下面提供更多詳細信息解釋報告的緣由:"])},forward_to:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["轉發 ",e(t(0))])},submit:r=>{const{normalize:n}=r;return n(["提交"])},generic_error:r=>{const{normalize:n}=r;return n(["當處理你的請求時,發生了一個錯誤。"])},additional_comments:r=>{const{normalize:n}=r;return n(["其它評論"])},forward_description:r=>{const{normalize:n}=r;return n(["這個賬號是從另外一個服務器。同時發送一個報告到那裡?"])}},who_to_follow:{more:r=>{const{normalize:n}=r;return n(["更多"])},who_to_follow:r=>{const{normalize:n}=r;return n(["推薦關注"])}},tool_tip:{media_upload:r=>{const{normalize:n}=r;return n(["上傳多媒體"])},repeat:r=>{const{normalize:n}=r;return n(["轉發"])},favorite:r=>{const{normalize:n}=r;return n(["喜歡"])},add_reaction:r=>{const{normalize:n}=r;return n(["添加互動"])},reply:r=>{const{normalize:n}=r;return n(["回覆"])},user_settings:r=>{const{normalize:n}=r;return n(["用戶設置"])},accept_follow_request:r=>{const{normalize:n}=r;return n(["接受關注請求"])},reject_follow_request:r=>{const{normalize:n}=r;return n(["拒絕關注請求"])},bookmark:r=>{const{normalize:n}=r;return n(["書籤"])}},upload:{file_size_units:{B:r=>{const{normalize:n}=r;return n(["B"])},KiB:r=>{const{normalize:n}=r;return n(["KiB"])},TiB:r=>{const{normalize:n}=r;return n(["TiB"])},MiB:r=>{const{normalize:n}=r;return n(["MiB"])},GiB:r=>{const{normalize:n}=r;return n(["GiB"])}},error:{base:r=>{const{normalize:n}=r;return n(["上傳失敗。"])},file_too_big:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["文件太大[",e(t("filesize"))," ",e(t("filesizeunit"))," / ",e(t("allowedsize"))," ",e(t("allowedsizeunit")),"]"])},default:r=>{const{normalize:n}=r;return n(["稍後再試"])},message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["上傳錯誤:",e(t(0))])}}},search:{people:r=>{const{normalize:n}=r;return n(["人"])},hashtags:r=>{const{normalize:n}=r;return n(["標籤"])},person_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count"))," 人正在討論"])},people_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count"))," 人正在討論"])},no_results:r=>{const{normalize:n}=r;return n(["沒有搜索結果"])}},password_reset:{forgot_password:r=>{const{normalize:n}=r;return n(["忘記密碼了?"])},password_reset:r=>{const{normalize:n}=r;return n(["重置密碼"])},instruction:r=>{const{normalize:n}=r;return n(["輸入你的電郵地址或者用戶名,我們將發送一個鏈接到你的郵箱,用於重置密碼。"])},placeholder:r=>{const{normalize:n}=r;return n(["你的電郵地址或者用戶名"])},check_email:r=>{const{normalize:n}=r;return n(["檢查你的郵箱,會有一個鏈接用於重置密碼。"])},return_home:r=>{const{normalize:n}=r;return n(["回到首頁"])},too_many_requests:r=>{const{normalize:n}=r;return n(["你觸發了嘗試的限制,請稍後再試。"])},password_reset_disabled:r=>{const{normalize:n}=r;return n(["密碼重置已經被禁用。請聯繫你的實例管理員。"])},password_reset_required:r=>{const{normalize:n}=r;return n(["您必須重置密碼才能登陸。"])},password_reset_required_but_mailer_is_disabled:r=>{const{normalize:n}=r;return n(["您必須重置密碼,但是密碼重置被禁用了。請聯繫您所在實例的管理員。"])}},announcements:{post_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["錯誤: ",e(t("error"))])},close_error:r=>{const{normalize:n}=r;return n(["關閉"])},delete_action:r=>{const{normalize:n}=r;return n(["刪除"])},start_time_prompt:r=>{const{normalize:n}=r;return n(["開始時間: "])},end_time_prompt:r=>{const{normalize:n}=r;return n(["結束時間: "])},all_day_prompt:r=>{const{normalize:n}=r;return n(["這是全日活動"])},start_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time"))," 開始"])},end_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time"))," 結束"])},published_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time"))," 發布"])},edit_action:r=>{const{normalize:n}=r;return n(["編輯"])},submit_edit_action:r=>{const{normalize:n}=r;return n(["送出"])},cancel_edit_action:r=>{const{normalize:n}=r;return n(["取消"])},inactive_message:r=>{const{normalize:n}=r;return n(["此公告無效"])},page_header:r=>{const{normalize:n}=r;return n(["公告"])},title:r=>{const{normalize:n}=r;return n(["公告"])},mark_as_read_action:r=>{const{normalize:n}=r;return n(["標示為以閱讀"])},post_placeholder:r=>{const{normalize:n}=r;return n(["在此輸入您的公告內容……"])},post_form_header:r=>{const{normalize:n}=r;return n(["發布公告"])},post_action:r=>{const{normalize:n}=r;return n(["發布"])}}}}}]); -//# sourceMappingURL=zh_Hant-json.bfa569654a5cd74767ce.js.map -\ No newline at end of file diff --git a/priv/static/static/js/i18n/zh_Hant-json.bfa569654a5cd74767ce.js.map b/priv/static/static/js/i18n/zh_Hant-json.bfa569654a5cd74767ce.js.map @@ -1 +0,0 @@ -{"version":3,"file":"static/js/i18n/zh_Hant-json.bfa569654a5cd74767ce.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/zh_Hant.json"],"sourcesContent":["export default {\n \"emoji\": {\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"統一碼繪文字\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自定義繪文字\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"插入繪文字\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索繪文字\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選擇器保持打開\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"繪文字\"])},\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"貼紙\"])},\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"加載所有繪文字(共 \", _interpolate(_named(\"emojiAmount\")), \" 個)\"])},\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"最先加載的 \", _interpolate(_named(\"saneAmount\")), \" ,加載全部繪文字可能會帶來性能問題。\"])}\n },\n \"polls\": {\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票的選項太少\"])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"投票 \", _interpolate(_list(0)), \" 前已結束\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"投票於 \", _interpolate(_list(0)), \" 內結束\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票期限\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"多選\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"單選\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"問卷類型\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"票\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選項\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"增加選項\"])},\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"增加投票\"])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 票\"]), _normalize([_interpolate(_named(\"count\")), \" 票\"])])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 人已投票\"]), _normalize([_interpolate(_named(\"count\")), \" 人已投票\"])])}\n },\n \"notifications\": {\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"作出了 \", _interpolate(_list(0)), \" 的反應\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"遷移到\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"沒有更多的通知\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉發了你的發文\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已閱!\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入更早的通知\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"想要關注你\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注了你\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜歡了你的發文\"])},\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未知的狀態,正在搜索中…\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"獲取通知錯誤:\", _interpolate(_list(0))])}\n },\n \"nav\": {\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"時間線\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"偏好設置\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推薦關注\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶搜索\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"書籤\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已知網絡\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"時間線\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公共時間線\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私信\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"互動\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注請求\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"後退\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理員\"])},\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關於\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"家時間線\"])}\n },\n \"media_modal\": {\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"往後\"])},\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"往前\"])}\n },\n \"login\": {\n \"heading\": {\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"雙重因素恢復\"])},\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"雙重因素驗證\"])}\n },\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"恢復碼\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入一個雙重因素驗證碼\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入一個恢復碼\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"驗證碼\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登錄後加入討論\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶名\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例:鈴音\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密碼\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用 OAuth 登入\"])},\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登入\"])}\n },\n \"importer\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入此文件時出現一個錯誤。\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入成功。\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])}\n },\n \"image_cropper\": {\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存不裁剪\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存\"])},\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"裁剪圖片\"])}\n },\n \"general\": {\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"窺視\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關閉\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"驗證\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確認\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"啟用\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁用\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"忽略\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收起\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展開\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"可選\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"再試\"])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"請再試\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發生一個錯誤\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入中…\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"應用\"])},\n \"role\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"審查者\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理員\"])}\n },\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"點擊以使用 Ruffle 顯示 Flash 內容(實驗性,可能無效)。\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"請注意,這可能有潜在的危險,因為Flash內容仍然是武斷的程式碼。\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無法加載flash內容,請參閱控制台瞭解詳細資訊。\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"否\"])},\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"發生了一個錯誤: \", _interpolate(_list(0))])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不再顯示\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"是\"])},\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"復原\"])},\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"滾動至頂部\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"置頂\"])},\n \"scope_in_timeline\": {\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"僅關注者\"])}\n },\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"停止置頂\"])}\n },\n \"finder\": {\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"尋找用戶\"])},\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"獲取用戶時發生錯誤\"])}\n },\n \"features_panel\": {\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推薦關注\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"特色\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文字數量限制\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"可見範圍設置\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒體代理\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 聊天\"])},\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上傳限制\"])},\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"留言板\"])}\n },\n \"exporter\": {\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在處理,稍後會提示您下載文件\"])},\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導出\"])}\n },\n \"domain_mute_card\": {\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消靜音中…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消靜音\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音中…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音\"])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"留言板\"])}\n },\n \"about\": {\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"職員\"])},\n \"mrf\": {\n \"simple\": {\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這個實例強迫以下實例的帖子媒體設定為敏感:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒體強制設定為敏感\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這個實例移除以下實例的帖子媒體:\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除媒體\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這個實例在所有已知網絡中移除下列實例:\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從所有已知網路中移除\"])},\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本實例只會把公開發文發送到下列實例:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隔離\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本實例不會接收來自下列實例的消息:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒絕\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本實例只接收來自下列實例的消息:\"])},\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"站規\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"接受\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"實例\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"原因\"])},\n \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N/A\"])}\n },\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF 策略會影響本實例的互通行為。以下策略已啟用:\"])},\n \"keyword\": {\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從「全部已知網絡」時間線上移除\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取代\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒絕\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])},\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關鍵字政策\"])}\n },\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已啟用的MRF政策\"])},\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聯邦\"])}\n }\n },\n \"settings\": {\n \"style\": {\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顏色\"])},\n \"contrast\": {\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"大字文本 (18pt+)\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文本\"])}\n },\n \"level\": {\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"符合 AAA 等級準則(推薦)\"])},\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"符合 AA 等級準則(最低)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不符合任何輔助功能指南\"])}\n },\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"對比度是 \", _interpolate(_named(\"ratio\")), \", 它 \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])}\n },\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"透明度\"])}\n },\n \"advanced_colors\": {\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"灰度文字\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"錯誤\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提醒或警告背景色\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"高级\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"警告\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"中性\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"帖子/用戶簡介\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"徽章背景\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提示框,菜單,彈出框\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板標題\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"頂欄\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邊框\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入框\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"底襯\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票統計圖\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"圖標\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"強調元素\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按下\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選中的帖子\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選中的菜單項\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關閉\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"切換\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標籤\"])},\n \"chat\": {\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收到\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發出\"])},\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邊框\"])}\n },\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"桌布\"])}\n },\n \"preview\": {\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這很正常\"])},\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預覽\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"內容\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例子錯誤\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"有堆 \", _interpolate(_list(0)), \" 和 \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"內容\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"剛剛抵達洛杉磯.\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"有用的手冊\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"閱讀我們的 \", _interpolate(_list(0)), \" ,然而什麼有用的也學不到!\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"我已經瀏覽了條款及細則\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"一個很好的小鏈接\"])}\n },\n \"shadows\": {\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"覆寫\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"陰影和燈光\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"組件\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"陰影 #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"模糊\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"擴散\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"插圖\"])},\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"對於陰影,您還可以使用\", _interpolate(_list(0)), \"表示法來使用其他顏色插槽。\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"警告,此陰影設置會總是使用 \", _interpolate(_list(0)), \" ,如果瀏覽器支持的話。\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 不支持參數 \", _interpolate(_list(1)), \" 和關鍵詞 \", _interpolate(_list(2)), \" 。\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"請注意組合兩個內部和非內部的陰影到頭像上,在透明頭像上可能會有意料之外的效果。\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"陰影的擴散 > 0 會同設置成零一樣\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"插入內部的陰影會使用 \", _interpolate(_list(0))])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板標題\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"頂欄\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶頭像(在個人資料欄)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶頭像(在帖子顯示欄)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"彈窗和工具提示\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕(懸停)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕(按下)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕(按下和懸停)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入框\"])}\n }\n },\n \"switcher\": {\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"舊版\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入主題\"])},\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留顏色\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留陰影\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留透明度\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留圓角\"])},\n \"help\": {\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不知出於何種原因,主題快照缺失了,一些地方可能與您印象中的不符。\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"版本衝突:很有可能是 FE 版本回滾後再次升級了,如果您使用舊版本的 FE 更改了主題那麼您可能需要使用舊版本,否則請使用新版本。\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您導入的文件來自更高版本的 FE。\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您導入的文件來自舊版本的 FE。\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在文件中沒有主題快照,所以網站外觀可能會與原來預想的不同。\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 的主題引擎隨著版本更新升級了。\"])},\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 的版本回滾了。\"])},\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 已升級,主題會和你記憶中的不太一樣。\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您導入的文件是舊版 FE 的。我們儘可能保持兼容性,但還是可能出現不一致的情況。\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入快照已加載,因此所有值均被覆蓋。 您可以改為載入主題實際數據。\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"為保萬無一失,載入了主題快照。您可以試著載入主題數據。\"])}\n },\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新版本\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保持原狀\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"清除透明度\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"清除全部\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留字體\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"保留\\\" 選項在選擇或載入主題時保留當前設置的選項,在導出主題時還會存儲上述選項。當所有複選框未設置時,導出主題將保存所有內容。\"])}\n },\n \"fonts\": {\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入框\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發帖文字\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"帖子中使用等間距文字(富文本)\"])}\n },\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字體\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"給用戶界面的元素選擇字體。選擇 “自選”的你必須輸入確切的字體名稱。\"])},\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字體名稱\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"大小 (像素)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字重 (粗體))\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自選\"])}\n },\n \"common_colors\": {\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"點擊”高級“ 標籤進行細緻的控制\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"常用顏色\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"共同\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"圖標,強調,徽章\"])}\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"圓角\"])}\n }\n },\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽來自你沒有關注的用戶的通知\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不顯示關注者數量\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不顯示富文本格式\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶遷移\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉發\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜歡\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面語言\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(默認:\", _interpolate(_named(\"value\")), \")\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入框\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入預置主題\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從 csv 文件中導入關注\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從 csv 文件中導入封鎖黑名單名單\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏過濾的發文\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你需要手動審核關注請求\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"循環視頻\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只循環沒有聲音的視頻(例如:Mastodon 裡的“GIF”)\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在彈出框內播放視頻\"])},\n \"profile_fields\": {\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加字段\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標籤\"])},\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"內容\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"個人資料元數據\"])}\n },\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生成縮略圖時不要裁剪附件\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要顯示的通知類型\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新電郵\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"比如mastodon: copy as is\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您確定要重置個人資料背景圖嗎?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您確定要重置橫幅圖片嗎?\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您確定要重置頭像嗎?\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置橫幅圖片\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置個人資料背景圖\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置頭像\"])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"允許通過搜索檢索等服務找到此賬號\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除賬戶時發生錯誤,如果一直刪除不了,請聯繫實例管理員。\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"寫作設置\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天訊息\"])},\n \"mfa\": {\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確認並啟用OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置OTP\"])},\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預設OTP\"])},\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要啟用雙因素驗證,請把你的雙因素驗證 app 裡的數字輸入:\"])}\n },\n \"scan\": {\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密鑰\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使用你的雙因素驗證 app,掃瞄這個二維碼,或者輸入這些文字密鑰:\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"掃瞄\"])}\n },\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"身份驗證方法\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抄寫這些號碼,或者保存在安全的地方。這些號碼不會再次顯示。如果你無法訪問你的 2FA app,也丟失了你的恢復碼,你的賬號就再也無法登錄了。\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在接收備份碼…\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"恢復碼。\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"當你生成新的恢復碼時,你的舊恢復碼就失效了。\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生成新的恢復碼\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"雙因素驗證\"])}\n },\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新密碼\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"名字及簡介\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"名字\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"域名\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在下面輸入密碼,以確認刪除帳戶。\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"永久刪除你的帳號和所有數據。\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除帳戶\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默認可見性範圍\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"數據導入/導出\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音與封鎖\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"當前密碼\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確認新密碼\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"摺疊帶標題的內容\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"複選框\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(默認)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您所選擇的主題文件不被 Pleroma 支持,因此主題未被修改。\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在您的瀏覽器中無法使用\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"鏈接\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"成功修改了密碼!\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改密碼的時候出了點問題。\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改密碼\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"郵箱修改成功!\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這是一個機器人賬號\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改電子郵箱\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"紅色(取消)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"橙色(收藏)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"綠色(轉發)\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"藍色(回覆,關注)\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"互動\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"沒有封鎖\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"沒有靜音\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要顯示我所關注的人\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要顯示關注我的人\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不顯示關注數\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"將敏感附件和鏈接隱藏,點擊才能打開\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"有效期至\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在離開頁面時暫停時間線推送\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"過濾器\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱私\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要停止收到某個指定的用戶的通知,請使用靜音功能。\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖一個用戶會停掉所有他的通知,等同於取消關注。\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"啟用 web 推送通知\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預置\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"配置文件背景圖\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"橫幅圖片\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"個人資料\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置界面邊緣的圓角 (單位:像素)\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示所有回覆\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自動隱藏新帖子的按鈕(移動設備)\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存設置時發生錯誤\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置已保存\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索你想屏蔽的用戶\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索你想要隱藏的用戶\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"安全\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置新頭像\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置新的個人背景\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置新的個人橫幅\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"總是顯示主題框\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回覆時複製主題\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"比如電郵: \\\"re: 主題\\\"\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要複製\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發文內容類型\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"鼠標懸停時播放GIF\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開啟滾動到頂部時的自動推送\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文本\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主題\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使用十六進制代碼(#rrggbb)來設置主題顏色。\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你也可以通過切換複選框來覆蓋某些組件的顏色和透明。使用“清除所有”來清楚所有覆蓋設置。\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"某些條目下的圖標是背景或文本對比指示器,鼠標懸停可以獲取詳細信息。請記住,使用透明度來顯示最差的情況。\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提醒\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上傳照片\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶設置\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"否\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"是\"])}\n },\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推薦的頭像圖片最小的尺寸是 150x150 像素。\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在時間線上顯示繪文字互動\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導出預置主題\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"過濾\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"所有包含以下詞彙的內容都會被隱藏,一行一個\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導出關注\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"將關注導出成 csv 文件\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入關注\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入關注時錯誤\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注已導入!尚需要一些時間來處理。\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在對話中隱藏附件\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在時間線上隱藏附件\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不顯示被靜音的用戶的帖子\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"最多每個帖子所能顯示的縮略圖數量\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏指定實例的面板\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預載圖片\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"點擊一次以打開工作場所不適宜的附件\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏帖子的統計數據(例如:收藏的次數)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏用戶的統計數據(例如:關注者的數量)\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通用\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前景\"])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖黑名單導入成功!需要一點時間來處理。\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入封鎖黑名單出錯\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖黑名單導入\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導出你的封鎖黑名單到一個 csv 文件\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖黑名單導出\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"簡介\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"背景\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"頭像\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"頭像(通知)\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"頭像\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件\"])},\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在關注的賬號遷移時自動重新關注\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入你當前密碼來確認你的身份\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"安全\"])},\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App 名稱\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改你的電子郵箱時發生錯誤。\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索需要隱藏的域名\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從繪文字選擇器插入繪文字時,在繪文字兩側插入空格\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"實時接收發佈以及通知\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"最小發文範圍\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回覆時的複製範圍(私信是總是複製的)\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只顯示發送給我的回覆\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只顯示發送給我的回覆/發送給我關注的用戶的回覆\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"時間線中的回覆\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤消\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示管理徽章\"])},\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"強調色\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前文箭頭\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示主持人徽章\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth代幣\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"代幣\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刷新token\"])},\n \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(不推薦使用,實驗性的,已知跳過文章)\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"有趣\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏推送通知中的發送者與內容信息\"])},\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"版本\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"後端版本\"])},\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前端版本\"])}\n },\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"優化時間線渲染\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從CSV文件導入靜音\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音導入了!處理它們將需要一段時間。\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音導入\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入靜音時出錯\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"將靜音導出到csv文件\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音導出\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏實例桌布\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只顯示對我本人的回复\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示對我關注的人的回复\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不顯示已隱藏的帖子\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏媒體預覽\"])},\n \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"詞過濾\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"與默認設置不同\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多設置\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存更改\"])},\n \"file_export_import\": {\n \"errors\": {\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"所選文件不是受支持的Pleroma設置備份。 沒有進行任何更改。\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"不兼容的主版本:\", _interpolate(_named(\"fileMajor\")), \",此 PleromaFE(設置版本 \", _interpolate(_named(\"feMajor\")), \")過舊,無法處理\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"不兼容的主版本:\", _interpolate(_named(\"fileMajor\")), \",文件版本過舊,不受支持(最小設置版本 \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檔案的小版本不同,有些設置可能無法載入\"])}\n },\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從文件還原設置\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"備份設置和主題到文件\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"備份設置到文件\"])},\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設定備份\"])}\n },\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默認標記發文為敏感內容\"])},\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在右側顯示側邊欄\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏實例留言框\"])}\n },\n \"chats\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您確實要刪除此消息嗎?\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加載聊天時出了點問題。\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發送消息時出了點問題。\"])},\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您還沒有任何聊天記錄。 開始新的聊天!\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新聊天\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無法發布空消息\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你:\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"發消息給 \", _interpolate(_named(\"nickname\"))])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])}\n },\n \"file_type\": {\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"音頻\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"視頻\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"图片\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檔案\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"今天\"])}\n },\n \"status\": {\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音對話\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回覆:\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回覆\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在個人資料置頂\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消在個人資料置頂\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜歡\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉發\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除發文\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"置頂\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"書籤\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消書籤\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你真的想要刪除這條發文嗎?\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"對話取消靜音\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發文不可取得\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"複製發文鏈接\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"静音線程\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示完整標題\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\",有这些字:\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏完整標題\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示內容\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏內容\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"該帖已被刪除\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展开\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"外部來源\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"工作不安全\"])}\n },\n \"time\": {\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 時\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"天\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"天\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 時\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"時\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"時\"])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" y\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"剛剛\"])},\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])},\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"還有 \", _interpolate(_list(0))])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 之前\"])},\n \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分鐘\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分鐘\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"剛剛\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"周\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"周\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"周\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"周\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"年\"])}\n },\n \"post_status\": {\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無法更新媒體,請重試\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒體描述\"])},\n \"scope\": {\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不公開 - 不會發送到公共時間軸\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公共 - 發送到公共時間軸\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"僅關注者 - 只有關注了你的人能看到\"])},\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私信 - 只發送給被提及的用戶\"])}\n },\n \"scope_notice\": {\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本條內容既不在公共時間線,也不會在所有已知網絡上可見\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注你的人才能看到本條內容\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本條帖子可以被所有人看到\"])}\n },\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"空的\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預覽\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在發送\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本條內容只有被在消息開始處提及的用戶能夠看到。\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本條內容只有被提及的用戶能夠看到。\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"你的帳號沒有 \", _interpolate(_list(0)), \"。任何人都可以關注你並瀏覽你的上鎖內容。\"])},\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發佈新發文\"])},\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主題(可選)\"])},\n \"content_type\": {\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"純文本\"])}\n },\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標記附件為敏感內容\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上鎖\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"剛剛抵達洛杉磯。\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能發布沒有內容,沒有附件的發文\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發送\"])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma無法訪問瀏覽器存儲。您的登錄名或本地設置將不會保存,您可能會遇到意外問題。嘗試啟用Cookie。\"])}\n },\n \"timeline\": {\n \"error_fetching\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"獲取更新時發生錯誤\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"對話\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這條內容僅關注者可見,或者是私信,因此不能轉發\"])},\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"摺疊\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入更早的發文\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已轉發\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示新內容\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重新載入\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已是最新\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有更多發文\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有發文\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"取得時間線時發生錯誤:\", _interpolate(_list(0))])},\n \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已建立實時連接\"])},\n \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"丟失實時連接:CloseEvent代碼\", _interpolate(_list(0))])}\n },\n \"interactions\": {\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入更早的互動\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶遷移\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新的關注者\"])},\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉發和喜歡\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選擇全部\"])}\n },\n \"remote_user_resolver\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未找到。\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索\"])},\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"遠程用戶解析器\"])}\n },\n \"registration\": {\n \"validations\": {\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能和密碼一樣\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])}\n },\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示名稱\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:\\n你好,我是玲音。\\n我是一個住在日本郊區的動畫少女。你可能在 Wired 見過我。\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:岩倉玲音\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:lain\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"點擊圖片獲取新的驗證碼\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邀請碼\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確認密碼\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"電子郵箱\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"簡介\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此實例的註冊需要手動批准。\\n請讓管理知道您為什麼想要註冊。\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊理由\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊\"])}\n },\n \"user_card\": {\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"就是你!!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒體\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"每天\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"跨站關注\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"訂閱\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音中…\"])},\n \"admin_menu\": {\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除賬號\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除用戶\"])},\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"調停\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"賦予管理權限\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤銷管理權限\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"賦予主持人權限\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤銷主持人權限\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"啟用賬號\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關閉賬號\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標記所有的帖子都是工作場合不適\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從帖子裡刪除媒體文件\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"強制帖子為不公開\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"強制帖子為只有關注者可看\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁止從遠程實例關注用戶\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"完全禁止關注用戶\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從聯合實例中禁止用戶帖子\"])}\n },\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"批准\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已封鎖!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒絕\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜歡\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"請求已發送!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"請求中…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消關注\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在關注\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注者\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在關注!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注了你!\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已隱藏\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"消息\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已靜音\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"報告\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發文\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"退訂\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消封鎖\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消封鎖中…\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖中…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消靜音\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消靜音中…\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏轉發\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示轉發\"])},\n \"roles\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主持人\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理員\"])}\n },\n \"highlight\": {\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無突出顯示\"])},\n \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"單色背景\"])},\n \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"條紋背景\"])},\n \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"彩條\"])}\n },\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"機器人\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"編輯個人資料\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶時間線\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抱歉,此個人資料不存在。\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抱歉,載入個人資料時出錯。\"])}\n },\n \"user_reporting\": {\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"報告 \", _interpolate(_list(0))])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此報告會發送給你的實例管理員。你可以在下面提供更多詳細信息解釋報告的緣由:\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"轉發 \", _interpolate(_list(0))])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"當處理你的請求時,發生了一個錯誤。\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"其它評論\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這個賬號是從另外一個服務器。同時發送一個報告到那裡?\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推薦關注\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上傳多媒體\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉發\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜歡\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加互動\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回覆\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶設置\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"接受關注請求\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒絕關注請求\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"書籤\"])}\n },\n \"upload\": {\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])}\n },\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上傳失敗。\"])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"文件太大[\", _interpolate(_named(\"filesize\")), \" \", _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), \" \", _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"稍後再試\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"上傳錯誤:\", _interpolate(_list(0))])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"人\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標籤\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" 人正在討論\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" 人正在討論\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"沒有搜索結果\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"忘記密碼了?\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置密碼\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入你的電郵地址或者用戶名,我們將發送一個鏈接到你的郵箱,用於重置密碼。\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你的電郵地址或者用戶名\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檢查你的郵箱,會有一個鏈接用於重置密碼。\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回到首頁\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你觸發了嘗試的限制,請稍後再試。\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密碼重置已經被禁用。請聯繫你的實例管理員。\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您必須重置密碼才能登陸。\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您必須重置密碼,但是密碼重置被禁用了。請聯繫您所在實例的管理員。\"])}\n },\n \"announcements\": {\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"錯誤: \", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關閉\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開始時間: \"])},\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"結束時間: \"])},\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這是全日活動\"])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \" 開始\"])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \" 結束\"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \" 發布\"])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"編輯\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"送出\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此公告無效\"])},\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標示為以閱讀\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在此輸入您的公告內容……\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發布公告\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發布\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","named","_named","list","_list","plural","_plural"],"sourceRoot":""} -\ No newline at end of file diff --git a/priv/static/static/js/i18n/zh_Hant-json.f7e1d0f4b873c60d6396.js b/priv/static/static/js/i18n/zh_Hant-json.f7e1d0f4b873c60d6396.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkpleroma_fe=self.webpackChunkpleroma_fe||[]).push([[6544],{37644:(r,n,e)=>{e.r(n),e.d(n,{default:()=>t});const t={emoji:{unicode:r=>{const{normalize:n}=r;return n(["統一碼繪文字"])},custom:r=>{const{normalize:n}=r;return n(["自定義繪文字"])},add_emoji:r=>{const{normalize:n}=r;return n(["插入繪文字"])},search_emoji:r=>{const{normalize:n}=r;return n(["搜索繪文字"])},keep_open:r=>{const{normalize:n}=r;return n(["選擇器保持打開"])},emoji:r=>{const{normalize:n}=r;return n(["繪文字"])},stickers:r=>{const{normalize:n}=r;return n(["貼紙"])},load_all:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["加載所有繪文字(共 ",e(t("emojiAmount"))," 個)"])},load_all_hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["最先加載的 ",e(t("saneAmount"))," ,加載全部繪文字可能會帶來性能問題。"])}},polls:{not_enough_options:r=>{const{normalize:n}=r;return n(["投票的選項太少"])},expired:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["投票 ",e(t(0))," 前已結束"])},expires_in:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["投票於 ",e(t(0))," 內結束"])},expiry:r=>{const{normalize:n}=r;return n(["投票期限"])},multiple_choices:r=>{const{normalize:n}=r;return n(["多選"])},single_choice:r=>{const{normalize:n}=r;return n(["單選"])},type:r=>{const{normalize:n}=r;return n(["問卷類型"])},vote:r=>{const{normalize:n}=r;return n(["投票"])},votes:r=>{const{normalize:n}=r;return n(["票"])},option:r=>{const{normalize:n}=r;return n(["選項"])},add_option:r=>{const{normalize:n}=r;return n(["增加選項"])},add_poll:r=>{const{normalize:n}=r;return n(["增加投票"])},votes_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 票"]),n([e(t("count"))," 票"])])},people_voted_count:r=>{const{normalize:n,interpolate:e,named:t,plural:o}=r;return o([n([e(t("count"))," 人已投票"]),n([e(t("count"))," 人已投票"])])}},notifications:{reacted_with:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["作出了 ",e(t(0))," 的反應"])},migrated_to:r=>{const{normalize:n}=r;return n(["遷移到"])},no_more_notifications:r=>{const{normalize:n}=r;return n(["沒有更多的通知"])},repeated_you:r=>{const{normalize:n}=r;return n(["轉發了你的發文"])},read:r=>{const{normalize:n}=r;return n(["已閱!"])},notifications:r=>{const{normalize:n}=r;return n(["通知"])},load_older:r=>{const{normalize:n}=r;return n(["載入更早的通知"])},follow_request:r=>{const{normalize:n}=r;return n(["想要關注你"])},followed_you:r=>{const{normalize:n}=r;return n(["關注了你"])},favorited_you:r=>{const{normalize:n}=r;return n(["喜歡了你的發文"])},broken_favorite:r=>{const{normalize:n}=r;return n(["未知的狀態,正在搜索中…"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["獲取通知錯誤:",e(t(0))])}},nav:{chats:r=>{const{normalize:n}=r;return n(["聊天"])},timelines:r=>{const{normalize:n}=r;return n(["時間線"])},preferences:r=>{const{normalize:n}=r;return n(["偏好設置"])},who_to_follow:r=>{const{normalize:n}=r;return n(["推薦關注"])},search:r=>{const{normalize:n}=r;return n(["搜索"])},user_search:r=>{const{normalize:n}=r;return n(["用戶搜索"])},bookmarks:r=>{const{normalize:n}=r;return n(["書籤"])},twkn:r=>{const{normalize:n}=r;return n(["已知網絡"])},timeline:r=>{const{normalize:n}=r;return n(["時間線"])},public_tl:r=>{const{normalize:n}=r;return n(["公共時間線"])},dms:r=>{const{normalize:n}=r;return n(["私信"])},interactions:r=>{const{normalize:n}=r;return n(["互動"])},mentions:r=>{const{normalize:n}=r;return n(["提及"])},friend_requests:r=>{const{normalize:n}=r;return n(["關注請求"])},back:r=>{const{normalize:n}=r;return n(["後退"])},administration:r=>{const{normalize:n}=r;return n(["管理員"])},about:r=>{const{normalize:n}=r;return n(["關於"])},home_timeline:r=>{const{normalize:n}=r;return n(["家時間線"])}},media_modal:{next:r=>{const{normalize:n}=r;return n(["往後"])},previous:r=>{const{normalize:n}=r;return n(["往前"])}},login:{heading:{recovery:r=>{const{normalize:n}=r;return n(["雙重因素恢復"])},totp:r=>{const{normalize:n}=r;return n(["雙重因素驗證"])}},recovery_code:r=>{const{normalize:n}=r;return n(["恢復碼"])},enter_two_factor_code:r=>{const{normalize:n}=r;return n(["輸入一個雙重因素驗證碼"])},enter_recovery_code:r=>{const{normalize:n}=r;return n(["輸入一個恢復碼"])},authentication_code:r=>{const{normalize:n}=r;return n(["驗證碼"])},hint:r=>{const{normalize:n}=r;return n(["登錄後加入討論"])},username:r=>{const{normalize:n}=r;return n(["用戶名"])},register:r=>{const{normalize:n}=r;return n(["註冊"])},placeholder:r=>{const{normalize:n}=r;return n(["例:鈴音"])},password:r=>{const{normalize:n}=r;return n(["密碼"])},logout:r=>{const{normalize:n}=r;return n(["登出"])},description:r=>{const{normalize:n}=r;return n(["用 OAuth 登入"])},login:r=>{const{normalize:n}=r;return n(["登入"])}},importer:{error:r=>{const{normalize:n}=r;return n(["導入此文件時出現一個錯誤。"])},success:r=>{const{normalize:n}=r;return n(["導入成功。"])},submit:r=>{const{normalize:n}=r;return n(["提交"])}},image_cropper:{cancel:r=>{const{normalize:n}=r;return n(["取消"])},save_without_cropping:r=>{const{normalize:n}=r;return n(["保存不裁剪"])},save:r=>{const{normalize:n}=r;return n(["保存"])},crop_picture:r=>{const{normalize:n}=r;return n(["裁剪圖片"])}},general:{peek:r=>{const{normalize:n}=r;return n(["窺視"])},close:r=>{const{normalize:n}=r;return n(["關閉"])},verify:r=>{const{normalize:n}=r;return n(["驗證"])},confirm:r=>{const{normalize:n}=r;return n(["確認"])},enable:r=>{const{normalize:n}=r;return n(["啟用"])},disable:r=>{const{normalize:n}=r;return n(["禁用"])},cancel:r=>{const{normalize:n}=r;return n(["取消"])},dismiss:r=>{const{normalize:n}=r;return n(["忽略"])},show_less:r=>{const{normalize:n}=r;return n(["收起"])},show_more:r=>{const{normalize:n}=r;return n(["展開"])},optional:r=>{const{normalize:n}=r;return n(["可選"])},retry:r=>{const{normalize:n}=r;return n(["再試"])},error_retry:r=>{const{normalize:n}=r;return n(["請再試"])},generic_error:r=>{const{normalize:n}=r;return n(["發生一個錯誤"])},loading:r=>{const{normalize:n}=r;return n(["載入中…"])},more:r=>{const{normalize:n}=r;return n(["更多"])},submit:r=>{const{normalize:n}=r;return n(["提交"])},apply:r=>{const{normalize:n}=r;return n(["應用"])},role:{moderator:r=>{const{normalize:n}=r;return n(["審查者"])},admin:r=>{const{normalize:n}=r;return n(["管理員"])}},flash_content:r=>{const{normalize:n}=r;return n(["點擊以使用 Ruffle 顯示 Flash 內容(實驗性,可能無效)。"])},flash_security:r=>{const{normalize:n}=r;return n(["請注意,這可能有潜在的危險,因為Flash內容仍然是武斷的程式碼。"])},flash_fail:r=>{const{normalize:n}=r;return n(["無法加載flash內容,請參閱控制台瞭解詳細資訊。"])},no:r=>{const{normalize:n}=r;return n(["否"])},generic_error_message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["發生了一個錯誤: ",e(t(0))])},never_show_again:r=>{const{normalize:n}=r;return n(["不再顯示"])},yes:r=>{const{normalize:n}=r;return n(["是"])},undo:r=>{const{normalize:n}=r;return n(["復原"])},scroll_to_top:r=>{const{normalize:n}=r;return n(["滾動至頂部"])},pin:r=>{const{normalize:n}=r;return n(["置頂"])},scope_in_timeline:{private:r=>{const{normalize:n}=r;return n(["僅關注者"])}},unpin:r=>{const{normalize:n}=r;return n(["停止置頂"])}},finder:{find_user:r=>{const{normalize:n}=r;return n(["尋找用戶"])},error_fetching_user:r=>{const{normalize:n}=r;return n(["獲取用戶時發生錯誤"])}},features_panel:{who_to_follow:r=>{const{normalize:n}=r;return n(["推薦關注"])},title:r=>{const{normalize:n}=r;return n(["特色"])},text_limit:r=>{const{normalize:n}=r;return n(["文字數量限制"])},scope_options:r=>{const{normalize:n}=r;return n(["可見範圍設置"])},media_proxy:r=>{const{normalize:n}=r;return n(["媒體代理"])},pleroma_chat_messages:r=>{const{normalize:n}=r;return n(["Pleroma 聊天"])},chat:r=>{const{normalize:n}=r;return n(["聊天"])},gopher:r=>{const{normalize:n}=r;return n(["Gopher"])},upload_limit:r=>{const{normalize:n}=r;return n(["上傳限制"])},shout:r=>{const{normalize:n}=r;return n(["留言板"])}},exporter:{processing:r=>{const{normalize:n}=r;return n(["正在處理,稍後會提示您下載文件"])},export:r=>{const{normalize:n}=r;return n(["導出"])}},domain_mute_card:{unmute_progress:r=>{const{normalize:n}=r;return n(["取消靜音中…"])},unmute:r=>{const{normalize:n}=r;return n(["取消靜音"])},mute_progress:r=>{const{normalize:n}=r;return n(["靜音中…"])},mute:r=>{const{normalize:n}=r;return n(["靜音"])}},shoutbox:{title:r=>{const{normalize:n}=r;return n(["留言板"])}},about:{staff:r=>{const{normalize:n}=r;return n(["職員"])},mrf:{simple:{media_nsfw_desc:r=>{const{normalize:n}=r;return n(["這個實例強迫以下實例的帖子媒體設定為敏感:"])},media_nsfw:r=>{const{normalize:n}=r;return n(["媒體強制設定為敏感"])},media_removal_desc:r=>{const{normalize:n}=r;return n(["這個實例移除以下實例的帖子媒體:"])},media_removal:r=>{const{normalize:n}=r;return n(["移除媒體"])},ftl_removal_desc:r=>{const{normalize:n}=r;return n(["這個實例在所有已知網絡中移除下列實例:"])},ftl_removal:r=>{const{normalize:n}=r;return n(["從所有已知網路中移除"])},quarantine_desc:r=>{const{normalize:n}=r;return n(["本實例只會把公開發文發送到下列實例:"])},quarantine:r=>{const{normalize:n}=r;return n(["隔離"])},reject_desc:r=>{const{normalize:n}=r;return n(["本實例不會接收來自下列實例的消息:"])},reject:r=>{const{normalize:n}=r;return n(["拒絕"])},accept_desc:r=>{const{normalize:n}=r;return n(["本實例只接收來自下列實例的消息:"])},simple_policies:r=>{const{normalize:n}=r;return n(["站規"])},accept:r=>{const{normalize:n}=r;return n(["接受"])},instance:r=>{const{normalize:n}=r;return n(["實例"])},reason:r=>{const{normalize:n}=r;return n(["原因"])},not_applicable:r=>{const{normalize:n}=r;return n(["N/A"])}},mrf_policies_desc:r=>{const{normalize:n}=r;return n(["MRF 策略會影響本實例的互通行為。以下策略已啟用:"])},keyword:{ftl_removal:r=>{const{normalize:n}=r;return n(["從「全部已知網絡」時間線上移除"])},replace:r=>{const{normalize:n}=r;return n(["取代"])},reject:r=>{const{normalize:n}=r;return n(["拒絕"])},is_replaced_by:r=>{const{normalize:n}=r;return n(["→"])},keyword_policies:r=>{const{normalize:n}=r;return n(["關鍵字政策"])}},mrf_policies:r=>{const{normalize:n}=r;return n(["已啟用的MRF政策"])},federation:r=>{const{normalize:n}=r;return n(["聯邦"])}}},settings:{style:{common:{color:r=>{const{normalize:n}=r;return n(["顏色"])},contrast:{context:{"18pt":r=>{const{normalize:n}=r;return n(["大字文本 (18pt+)"])},text:r=>{const{normalize:n}=r;return n(["文本"])}},level:{aaa:r=>{const{normalize:n}=r;return n(["符合 AAA 等級準則(推薦)"])},aa:r=>{const{normalize:n}=r;return n(["符合 AA 等級準則(最低)"])},bad:r=>{const{normalize:n}=r;return n(["不符合任何輔助功能指南"])}},hint:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["對比度是 ",e(t("ratio")),", 它 ",e(t("level"))," ",e(t("context"))])}},opacity:r=>{const{normalize:n}=r;return n(["透明度"])}},advanced_colors:{faint_text:r=>{const{normalize:n}=r;return n(["灰度文字"])},alert_error:r=>{const{normalize:n}=r;return n(["錯誤"])},badge_notification:r=>{const{normalize:n}=r;return n(["通知"])},alert:r=>{const{normalize:n}=r;return n(["提醒或警告背景色"])},_tab_label:r=>{const{normalize:n}=r;return n(["高级"])},alert_warning:r=>{const{normalize:n}=r;return n(["警告"])},alert_neutral:r=>{const{normalize:n}=r;return n(["中性"])},post:r=>{const{normalize:n}=r;return n(["帖子/用戶簡介"])},badge:r=>{const{normalize:n}=r;return n(["徽章背景"])},popover:r=>{const{normalize:n}=r;return n(["提示框,菜單,彈出框"])},panel_header:r=>{const{normalize:n}=r;return n(["面板標題"])},top_bar:r=>{const{normalize:n}=r;return n(["頂欄"])},borders:r=>{const{normalize:n}=r;return n(["邊框"])},buttons:r=>{const{normalize:n}=r;return n(["按鈕"])},inputs:r=>{const{normalize:n}=r;return n(["輸入框"])},underlay:r=>{const{normalize:n}=r;return n(["底襯"])},poll:r=>{const{normalize:n}=r;return n(["投票統計圖"])},icons:r=>{const{normalize:n}=r;return n(["圖標"])},highlight:r=>{const{normalize:n}=r;return n(["強調元素"])},pressed:r=>{const{normalize:n}=r;return n(["按下"])},selectedPost:r=>{const{normalize:n}=r;return n(["選中的帖子"])},selectedMenu:r=>{const{normalize:n}=r;return n(["選中的菜單項"])},disabled:r=>{const{normalize:n}=r;return n(["關閉"])},toggled:r=>{const{normalize:n}=r;return n(["切換"])},tabs:r=>{const{normalize:n}=r;return n(["標籤"])},chat:{incoming:r=>{const{normalize:n}=r;return n(["收到"])},outgoing:r=>{const{normalize:n}=r;return n(["發出"])},border:r=>{const{normalize:n}=r;return n(["邊框"])}},wallpaper:r=>{const{normalize:n}=r;return n(["桌布"])}},preview:{header_faint:r=>{const{normalize:n}=r;return n(["這很正常"])},header:r=>{const{normalize:n}=r;return n(["預覽"])},content:r=>{const{normalize:n}=r;return n(["內容"])},error:r=>{const{normalize:n}=r;return n(["例子錯誤"])},button:r=>{const{normalize:n}=r;return n(["按鈕"])},text:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["有堆 ",e(t(0))," 和 ",e(t(1))])},mono:r=>{const{normalize:n}=r;return n(["內容"])},input:r=>{const{normalize:n}=r;return n(["剛剛抵達洛杉磯."])},faint_link:r=>{const{normalize:n}=r;return n(["有用的手冊"])},fine_print:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["閱讀我們的 ",e(t(0))," ,然而什麼有用的也學不到!"])},checkbox:r=>{const{normalize:n}=r;return n(["我已經瀏覽了條款及細則"])},link:r=>{const{normalize:n}=r;return n(["一個很好的小鏈接"])}},shadows:{override:r=>{const{normalize:n}=r;return n(["覆寫"])},_tab_label:r=>{const{normalize:n}=r;return n(["陰影和燈光"])},component:r=>{const{normalize:n}=r;return n(["組件"])},shadow_id:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["陰影 #",e(t("value"))])},blur:r=>{const{normalize:n}=r;return n(["模糊"])},spread:r=>{const{normalize:n}=r;return n(["擴散"])},inset:r=>{const{normalize:n}=r;return n(["插圖"])},hintV3:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["對於陰影,您還可以使用",e(t(0)),"表示法來使用其他顏色插槽。"])},filter_hint:{always_drop_shadow:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["警告,此陰影設置會總是使用 ",e(t(0))," ,如果瀏覽器支持的話。"])},drop_shadow_syntax:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 不支持參數 ",e(t(1))," 和關鍵詞 ",e(t(2))," 。"])},avatar_inset:r=>{const{normalize:n}=r;return n(["請注意組合兩個內部和非內部的陰影到頭像上,在透明頭像上可能會有意料之外的效果。"])},spread_zero:r=>{const{normalize:n}=r;return n(["陰影的擴散 > 0 會同設置成零一樣"])},inset_classic:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["插入內部的陰影會使用 ",e(t(0))])}},components:{panel:r=>{const{normalize:n}=r;return n(["面板"])},panelHeader:r=>{const{normalize:n}=r;return n(["面板標題"])},topBar:r=>{const{normalize:n}=r;return n(["頂欄"])},avatar:r=>{const{normalize:n}=r;return n(["用戶頭像(在個人資料欄)"])},avatarStatus:r=>{const{normalize:n}=r;return n(["用戶頭像(在帖子顯示欄)"])},popup:r=>{const{normalize:n}=r;return n(["彈窗和工具提示"])},button:r=>{const{normalize:n}=r;return n(["按鈕"])},buttonHover:r=>{const{normalize:n}=r;return n(["按鈕(懸停)"])},buttonPressed:r=>{const{normalize:n}=r;return n(["按鈕(按下)"])},buttonPressedHover:r=>{const{normalize:n}=r;return n(["按鈕(按下和懸停)"])},input:r=>{const{normalize:n}=r;return n(["輸入框"])}}},switcher:{use_snapshot:r=>{const{normalize:n}=r;return n(["舊版"])},load_theme:r=>{const{normalize:n}=r;return n(["載入主題"])},keep_color:r=>{const{normalize:n}=r;return n(["保留顏色"])},keep_shadows:r=>{const{normalize:n}=r;return n(["保留陰影"])},keep_opacity:r=>{const{normalize:n}=r;return n(["保留透明度"])},keep_roundness:r=>{const{normalize:n}=r;return n(["保留圓角"])},help:{migration_napshot_gone:r=>{const{normalize:n}=r;return n(["不知出於何種原因,主題快照缺失了,一些地方可能與您印象中的不符。"])},snapshot_source_mismatch:r=>{const{normalize:n}=r;return n(["版本衝突:很有可能是 FE 版本回滾後再次升級了,如果您使用舊版本的 FE 更改了主題那麼您可能需要使用舊版本,否則請使用新版本。"])},future_version_imported:r=>{const{normalize:n}=r;return n(["您導入的文件來自更高版本的 FE。"])},older_version_imported:r=>{const{normalize:n}=r;return n(["您導入的文件來自舊版本的 FE。"])},snapshot_missing:r=>{const{normalize:n}=r;return n(["在文件中沒有主題快照,所以網站外觀可能會與原來預想的不同。"])},fe_upgraded:r=>{const{normalize:n}=r;return n(["PleromaFE 的主題引擎隨著版本更新升級了。"])},fe_downgraded:r=>{const{normalize:n}=r;return n(["PleromaFE 的版本回滾了。"])},upgraded_from_v2:r=>{const{normalize:n}=r;return n(["PleromaFE 已升級,主題會和你記憶中的不太一樣。"])},v2_imported:r=>{const{normalize:n}=r;return n(["您導入的文件是舊版 FE 的。我們儘可能保持兼容性,但還是可能出現不一致的情況。"])},snapshot_present:r=>{const{normalize:n}=r;return n(["載入快照已加載,因此所有值均被覆蓋。 您可以改為載入主題實際數據。"])},migration_snapshot_ok:r=>{const{normalize:n}=r;return n(["為保萬無一失,載入了主題快照。您可以試著載入主題數據。"])}},use_source:r=>{const{normalize:n}=r;return n(["新版本"])},keep_as_is:r=>{const{normalize:n}=r;return n(["保持原狀"])},clear_opacity:r=>{const{normalize:n}=r;return n(["清除透明度"])},clear_all:r=>{const{normalize:n}=r;return n(["清除全部"])},reset:r=>{const{normalize:n}=r;return n(["重置"])},keep_fonts:r=>{const{normalize:n}=r;return n(["保留字體"])},save_load_hint:r=>{const{normalize:n}=r;return n(['"保留" 選項在選擇或載入主題時保留當前設置的選項,在導出主題時還會存儲上述選項。當所有複選框未設置時,導出主題將保存所有內容。'])}},fonts:{components:{interface:r=>{const{normalize:n}=r;return n(["界面"])},input:r=>{const{normalize:n}=r;return n(["輸入框"])},post:r=>{const{normalize:n}=r;return n(["發帖文字"])},postCode:r=>{const{normalize:n}=r;return n(["帖子中使用等間距文字(富文本)"])}},_tab_label:r=>{const{normalize:n}=r;return n(["字體"])},help:r=>{const{normalize:n}=r;return n(["給用戶界面的元素選擇字體。選擇 “自選”的你必須輸入確切的字體名稱。"])},family:r=>{const{normalize:n}=r;return n(["字體名稱"])},size:r=>{const{normalize:n}=r;return n(["大小 (像素)"])},weight:r=>{const{normalize:n}=r;return n(["字重 (粗體))"])},custom:r=>{const{normalize:n}=r;return n(["自選"])}},common_colors:{foreground_hint:r=>{const{normalize:n}=r;return n(["點擊”高級“ 標籤進行細緻的控制"])},main:r=>{const{normalize:n}=r;return n(["常用顏色"])},_tab_label:r=>{const{normalize:n}=r;return n(["共同"])},rgbo:r=>{const{normalize:n}=r;return n(["圖標,強調,徽章"])}},radii:{_tab_label:r=>{const{normalize:n}=r;return n(["圓角"])}}},notification_setting_block_from_strangers:r=>{const{normalize:n}=r;return n(["屏蔽來自你沒有關注的用戶的通知"])},user_mutes:r=>{const{normalize:n}=r;return n(["用户"])},hide_followers_count_description:r=>{const{normalize:n}=r;return n(["不顯示關注者數量"])},no_rich_text_description:r=>{const{normalize:n}=r;return n(["不顯示富文本格式"])},notification_visibility_moves:r=>{const{normalize:n}=r;return n(["用戶遷移"])},notification_visibility_repeats:r=>{const{normalize:n}=r;return n(["轉發"])},notification_visibility_mentions:r=>{const{normalize:n}=r;return n(["提及"])},notification_visibility_likes:r=>{const{normalize:n}=r;return n(["喜歡"])},interfaceLanguage:r=>{const{normalize:n}=r;return n(["界面語言"])},instance_default:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["(默認:",e(t("value")),")"])},inputRadius:r=>{const{normalize:n}=r;return n(["輸入框"])},import_theme:r=>{const{normalize:n}=r;return n(["導入預置主題"])},import_followers_from_a_csv_file:r=>{const{normalize:n}=r;return n(["從 csv 文件中導入關注"])},import_blocks_from_a_csv_file:r=>{const{normalize:n}=r;return n(["從 csv 文件中導入封鎖黑名單名單"])},hide_filtered_statuses:r=>{const{normalize:n}=r;return n(["隱藏過濾的發文"])},lock_account_description:r=>{const{normalize:n}=r;return n(["你需要手動審核關注請求"])},loop_video:r=>{const{normalize:n}=r;return n(["循環視頻"])},loop_video_silent_only:r=>{const{normalize:n}=r;return n(["只循環沒有聲音的視頻(例如:Mastodon 裡的“GIF”)"])},mutes_tab:r=>{const{normalize:n}=r;return n(["靜音"])},play_videos_in_modal:r=>{const{normalize:n}=r;return n(["在彈出框內播放視頻"])},profile_fields:{add_field:r=>{const{normalize:n}=r;return n(["添加字段"])},name:r=>{const{normalize:n}=r;return n(["標籤"])},value:r=>{const{normalize:n}=r;return n(["內容"])},label:r=>{const{normalize:n}=r;return n(["個人資料元數據"])}},use_contain_fit:r=>{const{normalize:n}=r;return n(["生成縮略圖時不要裁剪附件"])},notification_visibility:r=>{const{normalize:n}=r;return n(["要顯示的通知類型"])},notification_visibility_follows:r=>{const{normalize:n}=r;return n(["關注"])},new_email:r=>{const{normalize:n}=r;return n(["新電郵"])},subject_line_mastodon:r=>{const{normalize:n}=r;return n(["比如mastodon: copy as is"])},reset_background_confirm:r=>{const{normalize:n}=r;return n(["您確定要重置個人資料背景圖嗎?"])},reset_banner_confirm:r=>{const{normalize:n}=r;return n(["您確定要重置橫幅圖片嗎?"])},reset_avatar_confirm:r=>{const{normalize:n}=r;return n(["您確定要重置頭像嗎?"])},reset_profile_banner:r=>{const{normalize:n}=r;return n(["重置橫幅圖片"])},reset_profile_background:r=>{const{normalize:n}=r;return n(["重置個人資料背景圖"])},reset_avatar:r=>{const{normalize:n}=r;return n(["重置頭像"])},discoverable:r=>{const{normalize:n}=r;return n(["允許通過搜索檢索等服務找到此賬號"])},delete_account_error:r=>{const{normalize:n}=r;return n(["刪除賬戶時發生錯誤,如果一直刪除不了,請聯繫實例管理員。"])},composing:r=>{const{normalize:n}=r;return n(["寫作設置"])},chatMessageRadius:r=>{const{normalize:n}=r;return n(["聊天訊息"])},mfa:{confirm_and_enable:r=>{const{normalize:n}=r;return n(["確認並啟用OTP"])},setup_otp:r=>{const{normalize:n}=r;return n(["設置OTP"])},otp:r=>{const{normalize:n}=r;return n(["OTP"])},wait_pre_setup_otp:r=>{const{normalize:n}=r;return n(["預設OTP"])},verify:{desc:r=>{const{normalize:n}=r;return n(["要啟用雙因素驗證,請把你的雙因素驗證 app 裡的數字輸入:"])}},scan:{secret_code:r=>{const{normalize:n}=r;return n(["密鑰"])},desc:r=>{const{normalize:n}=r;return n(["使用你的雙因素驗證 app,掃瞄這個二維碼,或者輸入這些文字密鑰:"])},title:r=>{const{normalize:n}=r;return n(["掃瞄"])}},authentication_methods:r=>{const{normalize:n}=r;return n(["身份驗證方法"])},recovery_codes_warning:r=>{const{normalize:n}=r;return n(["抄寫這些號碼,或者保存在安全的地方。這些號碼不會再次顯示。如果你無法訪問你的 2FA app,也丟失了你的恢復碼,你的賬號就再也無法登錄了。"])},waiting_a_recovery_codes:r=>{const{normalize:n}=r;return n(["正在接收備份碼…"])},recovery_codes:r=>{const{normalize:n}=r;return n(["恢復碼。"])},warning_of_generate_new_codes:r=>{const{normalize:n}=r;return n(["當你生成新的恢復碼時,你的舊恢復碼就失效了。"])},generate_new_recovery_codes:r=>{const{normalize:n}=r;return n(["生成新的恢復碼"])},title:r=>{const{normalize:n}=r;return n(["雙因素驗證"])}},new_password:r=>{const{normalize:n}=r;return n(["新密碼"])},name_bio:r=>{const{normalize:n}=r;return n(["名字及簡介"])},name:r=>{const{normalize:n}=r;return n(["名字"])},domain_mutes:r=>{const{normalize:n}=r;return n(["域名"])},delete_account_instructions:r=>{const{normalize:n}=r;return n(["在下面輸入密碼,以確認刪除帳戶。"])},delete_account_description:r=>{const{normalize:n}=r;return n(["永久刪除你的帳號和所有數據。"])},delete_account:r=>{const{normalize:n}=r;return n(["刪除帳戶"])},default_vis:r=>{const{normalize:n}=r;return n(["默認可見性範圍"])},data_import_export_tab:r=>{const{normalize:n}=r;return n(["數據導入/導出"])},mutes_and_blocks:r=>{const{normalize:n}=r;return n(["靜音與封鎖"])},current_password:r=>{const{normalize:n}=r;return n(["當前密碼"])},confirm_new_password:r=>{const{normalize:n}=r;return n(["確認新密碼"])},collapse_subject:r=>{const{normalize:n}=r;return n(["摺疊帶標題的內容"])},checkboxRadius:r=>{const{normalize:n}=r;return n(["複選框"])},instance_default_simple:r=>{const{normalize:n}=r;return n(["(默認)"])},interface:r=>{const{normalize:n}=r;return n(["界面"])},invalid_theme_imported:r=>{const{normalize:n}=r;return n(["您所選擇的主題文件不被 Pleroma 支持,因此主題未被修改。"])},limited_availability:r=>{const{normalize:n}=r;return n(["在您的瀏覽器中無法使用"])},links:r=>{const{normalize:n}=r;return n(["鏈接"])},changed_password:r=>{const{normalize:n}=r;return n(["成功修改了密碼!"])},change_password_error:r=>{const{normalize:n}=r;return n(["修改密碼的時候出了點問題。"])},change_password:r=>{const{normalize:n}=r;return n(["修改密碼"])},changed_email:r=>{const{normalize:n}=r;return n(["郵箱修改成功!"])},bot:r=>{const{normalize:n}=r;return n(["這是一個機器人賬號"])},change_email:r=>{const{normalize:n}=r;return n(["修改電子郵箱"])},cRed:r=>{const{normalize:n}=r;return n(["紅色(取消)"])},cOrange:r=>{const{normalize:n}=r;return n(["橙色(收藏)"])},cGreen:r=>{const{normalize:n}=r;return n(["綠色(轉發)"])},cBlue:r=>{const{normalize:n}=r;return n(["藍色(回覆,關注)"])},btnRadius:r=>{const{normalize:n}=r;return n(["按鈕"])},notification_visibility_emoji_reactions:r=>{const{normalize:n}=r;return n(["互動"])},no_blocks:r=>{const{normalize:n}=r;return n(["沒有封鎖"])},no_mutes:r=>{const{normalize:n}=r;return n(["沒有靜音"])},hide_follows_description:r=>{const{normalize:n}=r;return n(["不要顯示我所關注的人"])},hide_followers_description:r=>{const{normalize:n}=r;return n(["不要顯示關注我的人"])},hide_follows_count_description:r=>{const{normalize:n}=r;return n(["不顯示關注數"])},nsfw_clickthrough:r=>{const{normalize:n}=r;return n(["將敏感附件和鏈接隱藏,點擊才能打開"])},valid_until:r=>{const{normalize:n}=r;return n(["有效期至"])},panelRadius:r=>{const{normalize:n}=r;return n(["面板"])},pause_on_unfocused:r=>{const{normalize:n}=r;return n(["在離開頁面時暫停時間線推送"])},notifications:r=>{const{normalize:n}=r;return n(["通知"])},notification_setting_filters:r=>{const{normalize:n}=r;return n(["過濾器"])},notification_setting_privacy:r=>{const{normalize:n}=r;return n(["隱私"])},notification_mutes:r=>{const{normalize:n}=r;return n(["要停止收到某個指定的用戶的通知,請使用靜音功能。"])},notification_blocks:r=>{const{normalize:n}=r;return n(["封鎖一個用戶會停掉所有他的通知,等同於取消關注。"])},enable_web_push_notifications:r=>{const{normalize:n}=r;return n(["啟用 web 推送通知"])},presets:r=>{const{normalize:n}=r;return n(["預置"])},profile_background:r=>{const{normalize:n}=r;return n(["配置文件背景圖"])},profile_banner:r=>{const{normalize:n}=r;return n(["橫幅圖片"])},profile_tab:r=>{const{normalize:n}=r;return n(["個人資料"])},radii_help:r=>{const{normalize:n}=r;return n(["設置界面邊緣的圓角 (單位:像素)"])},reply_visibility_all:r=>{const{normalize:n}=r;return n(["顯示所有回覆"])},autohide_floating_post_button:r=>{const{normalize:n}=r;return n(["自動隱藏新帖子的按鈕(移動設備)"])},saving_err:r=>{const{normalize:n}=r;return n(["保存設置時發生錯誤"])},saving_ok:r=>{const{normalize:n}=r;return n(["設置已保存"])},search_user_to_block:r=>{const{normalize:n}=r;return n(["搜索你想屏蔽的用戶"])},search_user_to_mute:r=>{const{normalize:n}=r;return n(["搜索你想要隱藏的用戶"])},security_tab:r=>{const{normalize:n}=r;return n(["安全"])},set_new_avatar:r=>{const{normalize:n}=r;return n(["設置新頭像"])},set_new_profile_background:r=>{const{normalize:n}=r;return n(["設置新的個人背景"])},set_new_profile_banner:r=>{const{normalize:n}=r;return n(["設置新的個人橫幅"])},settings:r=>{const{normalize:n}=r;return n(["設置"])},subject_input_always_show:r=>{const{normalize:n}=r;return n(["總是顯示主題框"])},subject_line_behavior:r=>{const{normalize:n}=r;return n(["回覆時複製主題"])},subject_line_email:r=>{const{normalize:n}=r;return n(['比如電郵: "re: 主題"'])},subject_line_noop:r=>{const{normalize:n}=r;return n(["不要複製"])},post_status_content_type:r=>{const{normalize:n}=r;return n(["發文內容類型"])},stop_gifs:r=>{const{normalize:n}=r;return n(["鼠標懸停時播放GIF"])},streaming:r=>{const{normalize:n}=r;return n(["開啟滾動到頂部時的自動推送"])},text:r=>{const{normalize:n}=r;return n(["文本"])},theme:r=>{const{normalize:n}=r;return n(["主題"])},theme_help:r=>{const{normalize:n}=r;return n(["使用十六進制代碼(#rrggbb)來設置主題顏色。"])},theme_help_v2_1:r=>{const{normalize:n}=r;return n(["你也可以通過切換複選框來覆蓋某些組件的顏色和透明。使用“清除所有”來清楚所有覆蓋設置。"])},theme_help_v2_2:r=>{const{normalize:n}=r;return n(["某些條目下的圖標是背景或文本對比指示器,鼠標懸停可以獲取詳細信息。請記住,使用透明度來顯示最差的情況。"])},tooltipRadius:r=>{const{normalize:n}=r;return n(["提醒"])},upload_a_photo:r=>{const{normalize:n}=r;return n(["上傳照片"])},user_settings:r=>{const{normalize:n}=r;return n(["用戶設置"])},values:{false:r=>{const{normalize:n}=r;return n(["否"])},true:r=>{const{normalize:n}=r;return n(["是"])}},avatar_size_instruction:r=>{const{normalize:n}=r;return n(["推薦的頭像圖片最小的尺寸是 150x150 像素。"])},emoji_reactions_on_timeline:r=>{const{normalize:n}=r;return n(["在時間線上顯示繪文字互動"])},export_theme:r=>{const{normalize:n}=r;return n(["導出預置主題"])},filtering:r=>{const{normalize:n}=r;return n(["過濾"])},filtering_explanation:r=>{const{normalize:n}=r;return n(["所有包含以下詞彙的內容都會被隱藏,一行一個"])},follow_export:r=>{const{normalize:n}=r;return n(["導出關注"])},follow_export_button:r=>{const{normalize:n}=r;return n(["將關注導出成 csv 文件"])},follow_import:r=>{const{normalize:n}=r;return n(["導入關注"])},follow_import_error:r=>{const{normalize:n}=r;return n(["導入關注時錯誤"])},follows_imported:r=>{const{normalize:n}=r;return n(["關注已導入!尚需要一些時間來處理。"])},hide_attachments_in_convo:r=>{const{normalize:n}=r;return n(["在對話中隱藏附件"])},hide_attachments_in_tl:r=>{const{normalize:n}=r;return n(["在時間線上隱藏附件"])},hide_muted_posts:r=>{const{normalize:n}=r;return n(["不顯示被靜音的用戶的帖子"])},max_thumbnails:r=>{const{normalize:n}=r;return n(["最多每個帖子所能顯示的縮略圖數量"])},hide_isp:r=>{const{normalize:n}=r;return n(["隱藏指定實例的面板"])},preload_images:r=>{const{normalize:n}=r;return n(["預載圖片"])},use_one_click_nsfw:r=>{const{normalize:n}=r;return n(["點擊一次以打開工作場所不適宜的附件"])},hide_post_stats:r=>{const{normalize:n}=r;return n(["隱藏帖子的統計數據(例如:收藏的次數)"])},hide_user_stats:r=>{const{normalize:n}=r;return n(["隱藏用戶的統計數據(例如:關注者的數量)"])},general:r=>{const{normalize:n}=r;return n(["通用"])},foreground:r=>{const{normalize:n}=r;return n(["前景"])},blocks_tab:r=>{const{normalize:n}=r;return n(["封鎖"])},blocks_imported:r=>{const{normalize:n}=r;return n(["封鎖黑名單導入成功!需要一點時間來處理。"])},block_import_error:r=>{const{normalize:n}=r;return n(["導入封鎖黑名單出錯"])},block_import:r=>{const{normalize:n}=r;return n(["封鎖黑名單導入"])},block_export_button:r=>{const{normalize:n}=r;return n(["導出你的封鎖黑名單到一個 csv 文件"])},block_export:r=>{const{normalize:n}=r;return n(["封鎖黑名單導出"])},bio:r=>{const{normalize:n}=r;return n(["簡介"])},background:r=>{const{normalize:n}=r;return n(["背景"])},avatarRadius:r=>{const{normalize:n}=r;return n(["頭像"])},avatarAltRadius:r=>{const{normalize:n}=r;return n(["頭像(通知)"])},avatar:r=>{const{normalize:n}=r;return n(["頭像"])},attachments:r=>{const{normalize:n}=r;return n(["附件"])},attachmentRadius:r=>{const{normalize:n}=r;return n(["附件"])},allow_following_move:r=>{const{normalize:n}=r;return n(["正在關注的賬號遷移時自動重新關注"])},enter_current_password_to_confirm:r=>{const{normalize:n}=r;return n(["輸入你當前密碼來確認你的身份"])},security:r=>{const{normalize:n}=r;return n(["安全"])},app_name:r=>{const{normalize:n}=r;return n(["App 名稱"])},change_email_error:r=>{const{normalize:n}=r;return n(["修改你的電子郵箱時發生錯誤。"])},type_domains_to_mute:r=>{const{normalize:n}=r;return n(["搜索需要隱藏的域名"])},pad_emoji:r=>{const{normalize:n}=r;return n(["從繪文字選擇器插入繪文字時,在繪文字兩側插入空格"])},useStreamingApi:r=>{const{normalize:n}=r;return n(["實時接收發佈以及通知"])},minimal_scopes_mode:r=>{const{normalize:n}=r;return n(["最小發文範圍"])},scope_copy:r=>{const{normalize:n}=r;return n(["回覆時的複製範圍(私信是總是複製的)"])},reply_visibility_self:r=>{const{normalize:n}=r;return n(["只顯示發送給我的回覆"])},reply_visibility_following:r=>{const{normalize:n}=r;return n(["只顯示發送給我的回覆/發送給我關注的用戶的回覆"])},replies_in_timeline:r=>{const{normalize:n}=r;return n(["時間線中的回覆"])},revoke_token:r=>{const{normalize:n}=r;return n(["撤消"])},show_admin_badge:r=>{const{normalize:n}=r;return n(["顯示管理徽章"])},accent:r=>{const{normalize:n}=r;return n(["強調色"])},greentext:r=>{const{normalize:n}=r;return n(["前文箭頭"])},show_moderator_badge:r=>{const{normalize:n}=r;return n(["顯示主持人徽章"])},oauth_tokens:r=>{const{normalize:n}=r;return n(["OAuth代幣"])},token:r=>{const{normalize:n}=r;return n(["代幣"])},refresh_token:r=>{const{normalize:n}=r;return n(["刷新token"])},useStreamingApiWarning:r=>{const{normalize:n}=r;return n(["(不推薦使用,實驗性的,已知跳過文章)"])},fun:r=>{const{normalize:n}=r;return n(["有趣"])},notification_setting_hide_notification_contents:r=>{const{normalize:n}=r;return n(["隱藏推送通知中的發送者與內容信息"])},version:{title:r=>{const{normalize:n}=r;return n(["版本"])},backend_version:r=>{const{normalize:n}=r;return n(["後端版本"])},frontend_version:r=>{const{normalize:n}=r;return n(["前端版本"])}},virtual_scrolling:r=>{const{normalize:n}=r;return n(["最佳化時間軸算繪"])},import_mutes_from_a_csv_file:r=>{const{normalize:n}=r;return n(["從CSV文件導入靜音"])},mutes_imported:r=>{const{normalize:n}=r;return n(["靜音導入了!處理它們將需要一段時間。"])},mute_import:r=>{const{normalize:n}=r;return n(["靜音導入"])},mute_import_error:r=>{const{normalize:n}=r;return n(["導入靜音時出錯"])},mute_export_button:r=>{const{normalize:n}=r;return n(["將靜音導出到csv文件"])},mute_export:r=>{const{normalize:n}=r;return n(["靜音導出"])},hide_wallpaper:r=>{const{normalize:n}=r;return n(["隱藏實例桌布"])},reply_visibility_self_short:r=>{const{normalize:n}=r;return n(["只顯示對我本人的回复"])},reply_visibility_following_short:r=>{const{normalize:n}=r;return n(["顯示對我關注的人的回复"])},hide_all_muted_posts:r=>{const{normalize:n}=r;return n(["不顯示已隱藏的帖子"])},hide_media_previews:r=>{const{normalize:n}=r;return n(["隱藏媒體預覽"])},word_filter:r=>{const{normalize:n}=r;return n(["詞過濾"])},setting_changed:r=>{const{normalize:n}=r;return n(["與默認設置不同"])},more_settings:r=>{const{normalize:n}=r;return n(["更多設置"])},save:r=>{const{normalize:n}=r;return n(["保存更改"])},file_export_import:{errors:{invalid_file:r=>{const{normalize:n}=r;return n(["所選文件不是受支持的Pleroma設置備份。 沒有進行任何更改。"])},file_too_new:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["不兼容的主版本:",e(t("fileMajor")),",此 PleromaFE(設置版本 ",e(t("feMajor")),")過舊,無法處理"])},file_too_old:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["不兼容的主版本:",e(t("fileMajor")),",文件版本過舊,不受支持(最小設置版本 ",e(t("feMajor")),")"])},file_slightly_new:r=>{const{normalize:n}=r;return n(["檔案的小版本不同,有些設置可能無法載入"])}},restore_settings:r=>{const{normalize:n}=r;return n(["從文件還原設置"])},backup_settings_theme:r=>{const{normalize:n}=r;return n(["備份設置和主題到文件"])},backup_settings:r=>{const{normalize:n}=r;return n(["備份設置到文件"])},backup_restore:r=>{const{normalize:n}=r;return n(["設定備份"])}},sensitive_by_default:r=>{const{normalize:n}=r;return n(["默認標記發文為敏感內容"])},right_sidebar:r=>{const{normalize:n}=r;return n(["在右側顯示側邊欄"])},hide_shoutbox:r=>{const{normalize:n}=r;return n(["隱藏實例留言框"])},mention_link_display_short:r=>{const{normalize:n}=r;return n(["總是使用短名(如: ","@","foo)"])},mention_link_display:r=>{const{normalize:n}=r;return n(["顯式提及連結"])},use_at_icon:r=>{const{normalize:n}=r;return n(["將","@","改用圖標顯示,不用文字"])}},chats:{more:r=>{const{normalize:n}=r;return n(["更多"])},delete_confirm:r=>{const{normalize:n}=r;return n(["您確實要刪除此消息嗎?"])},error_loading_chat:r=>{const{normalize:n}=r;return n(["加載聊天時出了點問題。"])},error_sending_message:r=>{const{normalize:n}=r;return n(["發送消息時出了點問題。"])},empty_chat_list_placeholder:r=>{const{normalize:n}=r;return n(["您還沒有任何聊天記錄。 開始新的聊天!"])},new:r=>{const{normalize:n}=r;return n(["新聊天"])},empty_message_error:r=>{const{normalize:n}=r;return n(["無法發布空消息"])},you:r=>{const{normalize:n}=r;return n(["你:"])},message_user:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["發消息給 ",e(t("nickname"))])},delete:r=>{const{normalize:n}=r;return n(["刪除"])},chats:r=>{const{normalize:n}=r;return n(["聊天"])}},file_type:{audio:r=>{const{normalize:n}=r;return n(["音頻"])},video:r=>{const{normalize:n}=r;return n(["視頻"])},image:r=>{const{normalize:n}=r;return n(["图片"])},file:r=>{const{normalize:n}=r;return n(["檔案"])}},display_date:{today:r=>{const{normalize:n}=r;return n(["今天"])}},status:{mute_conversation:r=>{const{normalize:n}=r;return n(["靜音對話"])},replies_list:r=>{const{normalize:n}=r;return n(["回覆:"])},reply_to:r=>{const{normalize:n}=r;return n(["回覆"])},pin:r=>{const{normalize:n}=r;return n(["在個人資料置頂"])},unpin:r=>{const{normalize:n}=r;return n(["取消在個人資料置頂"])},favorites:r=>{const{normalize:n}=r;return n(["喜歡"])},repeats:r=>{const{normalize:n}=r;return n(["轉發"])},delete:r=>{const{normalize:n}=r;return n(["刪除發文"])},pinned:r=>{const{normalize:n}=r;return n(["置頂"])},bookmark:r=>{const{normalize:n}=r;return n(["書籤"])},unbookmark:r=>{const{normalize:n}=r;return n(["取消書籤"])},delete_confirm:r=>{const{normalize:n}=r;return n(["你真的想要刪除這條發文嗎?"])},unmute_conversation:r=>{const{normalize:n}=r;return n(["對話取消靜音"])},status_unavailable:r=>{const{normalize:n}=r;return n(["發文不可取得"])},copy_link:r=>{const{normalize:n}=r;return n(["複製發文鏈接"])},thread_muted:r=>{const{normalize:n}=r;return n(["静音線程"])},show_full_subject:r=>{const{normalize:n}=r;return n(["顯示完整標題"])},thread_muted_and_words:r=>{const{normalize:n}=r;return n([",有这些字:"])},hide_full_subject:r=>{const{normalize:n}=r;return n(["隱藏完整標題"])},show_content:r=>{const{normalize:n}=r;return n(["顯示內容"])},hide_content:r=>{const{normalize:n}=r;return n(["隱藏內容"])},status_deleted:r=>{const{normalize:n}=r;return n(["該帖已被刪除"])},expand:r=>{const{normalize:n}=r;return n(["展开"])},external_source:r=>{const{normalize:n}=r;return n(["外部來源"])},nsfw:r=>{const{normalize:n}=r;return n(["工作不安全"])}},time:{hours:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 時"])},days_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"天"])},day_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"天"])},days:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])},hour:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 時"])},hour_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"時"])},hours_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"時"])},years_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," y"])},now:r=>{const{normalize:n}=r;return n(["剛剛"])},day:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 天"])},in_future:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["還有 ",e(t(0))])},in_past:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 之前"])},minute:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分鐘"])},minute_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分"])},minutes_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分"])},minutes:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 分鐘"])},month:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},months:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},month_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},months_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 月"])},now_short:r=>{const{normalize:n}=r;return n(["剛剛"])},second:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},seconds:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},second_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},seconds_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 秒"])},week:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"周"])},weeks:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"周"])},week_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"周"])},weeks_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"周"])},year:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},years:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0))," 年"])},year_short:r=>{const{normalize:n,interpolate:e,list:t}=r;return n([e(t(0)),"年"])}},post_status:{media_description_error:r=>{const{normalize:n}=r;return n(["無法更新媒體,請重試"])},media_description:r=>{const{normalize:n}=r;return n(["媒體描述"])},scope:{unlisted:r=>{const{normalize:n}=r;return n(["不公開 - 不會發送到公共時間軸"])},public:r=>{const{normalize:n}=r;return n(["公共 - 發送到公共時間軸"])},private:r=>{const{normalize:n}=r;return n(["僅關注者 - 只有關注了你的人能看到"])},direct:r=>{const{normalize:n}=r;return n(["私信 - 只發送給被提及的用戶"])}},scope_notice:{unlisted:r=>{const{normalize:n}=r;return n(["本條內容既不在公共時間線,也不會在所有已知網絡上可見"])},private:r=>{const{normalize:n}=r;return n(["關注你的人才能看到本條內容"])},public:r=>{const{normalize:n}=r;return n(["本條帖子可以被所有人看到"])}},preview_empty:r=>{const{normalize:n}=r;return n(["空的"])},preview:r=>{const{normalize:n}=r;return n(["預覽"])},posting:r=>{const{normalize:n}=r;return n(["正在發送"])},direct_warning_to_first_only:r=>{const{normalize:n}=r;return n(["本條內容只有被在消息開始處提及的用戶能夠看到。"])},direct_warning_to_all:r=>{const{normalize:n}=r;return n(["本條內容只有被提及的用戶能夠看到。"])},account_not_locked_warning:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["你的帳號沒有 ",e(t(0)),"。任何人都可以關注你並瀏覽你的上鎖內容。"])},new_status:r=>{const{normalize:n}=r;return n(["發佈新發文"])},content_warning:r=>{const{normalize:n}=r;return n(["主題(可選)"])},content_type:{"text/bbcode":r=>{const{normalize:n}=r;return n(["BBCode"])},"text/markdown":r=>{const{normalize:n}=r;return n(["Markdown"])},"text/html":r=>{const{normalize:n}=r;return n(["HTML"])},"text/plain":r=>{const{normalize:n}=r;return n(["純文本"])}},attachments_sensitive:r=>{const{normalize:n}=r;return n(["標記附件為敏感內容"])},account_not_locked_warning_link:r=>{const{normalize:n}=r;return n(["上鎖"])},default:r=>{const{normalize:n}=r;return n(["剛剛抵達洛杉磯。"])},empty_status_error:r=>{const{normalize:n}=r;return n(["不能發布沒有內容,沒有附件的發文"])},post:r=>{const{normalize:n}=r;return n(["發送"])}},errors:{storage_unavailable:r=>{const{normalize:n}=r;return n(["Pleroma無法訪問瀏覽器存儲。您的登錄名或本地設置將不會保存,您可能會遇到意外問題。嘗試啟用Cookie。"])}},timeline:{error_fetching:r=>{const{normalize:n}=r;return n(["獲取更新時發生錯誤"])},conversation:r=>{const{normalize:n}=r;return n(["對話"])},no_retweet_hint:r=>{const{normalize:n}=r;return n(["這條內容僅關注者可見,或者是私信,因此不能轉發"])},collapse:r=>{const{normalize:n}=r;return n(["摺疊"])},load_older:r=>{const{normalize:n}=r;return n(["載入更早的發文"])},repeated:r=>{const{normalize:n}=r;return n(["已轉發"])},show_new:r=>{const{normalize:n}=r;return n(["顯示新內容"])},reload:r=>{const{normalize:n}=r;return n(["重新載入"])},up_to_date:r=>{const{normalize:n}=r;return n(["已是最新"])},no_more_statuses:r=>{const{normalize:n}=r;return n(["没有更多發文"])},no_statuses:r=>{const{normalize:n}=r;return n(["没有發文"])},error:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["取得時間線時發生錯誤:",e(t(0))])},socket_reconnected:r=>{const{normalize:n}=r;return n(["已建立實時連接"])},socket_broke:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["丟失實時連接:CloseEvent代碼",e(t(0))])}},interactions:{load_older:r=>{const{normalize:n}=r;return n(["載入更早的互動"])},moves:r=>{const{normalize:n}=r;return n(["用戶遷移"])},follows:r=>{const{normalize:n}=r;return n(["新的關注者"])},favs_repeats:r=>{const{normalize:n}=r;return n(["轉發和喜歡"])}},selectable_list:{select_all:r=>{const{normalize:n}=r;return n(["選擇全部"])}},remote_user_resolver:{error:r=>{const{normalize:n}=r;return n(["未找到。"])},searching_for:r=>{const{normalize:n}=r;return n(["搜索"])},remote_user_resolver:r=>{const{normalize:n}=r;return n(["遠程用戶解析器"])}},registration:{validations:{password_confirmation_match:r=>{const{normalize:n}=r;return n(["不能和密碼一樣"])},password_confirmation_required:r=>{const{normalize:n}=r;return n(["不能留空"])},password_required:r=>{const{normalize:n}=r;return n(["不能留空"])},email_required:r=>{const{normalize:n}=r;return n(["不能留空"])},fullname_required:r=>{const{normalize:n}=r;return n(["不能留空"])},username_required:r=>{const{normalize:n}=r;return n(["不能留空"])}},fullname:r=>{const{normalize:n}=r;return n(["顯示名稱"])},bio_placeholder:r=>{const{normalize:n}=r;return n(["例如:\n你好,我是玲音。\n我是一個住在日本郊區的動畫少女。你可能在 Wired 見過我。"])},fullname_placeholder:r=>{const{normalize:n}=r;return n(["例如:岩倉玲音"])},username_placeholder:r=>{const{normalize:n}=r;return n(["例如:lain"])},new_captcha:r=>{const{normalize:n}=r;return n(["點擊圖片獲取新的驗證碼"])},captcha:r=>{const{normalize:n}=r;return n(["CAPTCHA"])},token:r=>{const{normalize:n}=r;return n(["邀請碼"])},registration:r=>{const{normalize:n}=r;return n(["註冊"])},password_confirm:r=>{const{normalize:n}=r;return n(["確認密碼"])},email:r=>{const{normalize:n}=r;return n(["電子郵箱"])},bio:r=>{const{normalize:n}=r;return n(["簡介"])},reason_placeholder:r=>{const{normalize:n}=r;return n(["此實例的註冊需要手動批准。\n請讓管理知道您為什麼想要註冊。"])},reason:r=>{const{normalize:n}=r;return n(["註冊理由"])},register:r=>{const{normalize:n}=r;return n(["註冊"])}},user_card:{its_you:r=>{const{normalize:n}=r;return n(["就是你!!"])},media:r=>{const{normalize:n}=r;return n(["媒體"])},per_day:r=>{const{normalize:n}=r;return n(["每天"])},remote_follow:r=>{const{normalize:n}=r;return n(["跨站關注"])},subscribe:r=>{const{normalize:n}=r;return n(["訂閱"])},mute_progress:r=>{const{normalize:n}=r;return n(["靜音中…"])},admin_menu:{delete_account:r=>{const{normalize:n}=r;return n(["刪除賬號"])},delete_user:r=>{const{normalize:n}=r;return n(["刪除用戶"])},moderation:r=>{const{normalize:n}=r;return n(["調停"])},grant_admin:r=>{const{normalize:n}=r;return n(["賦予管理權限"])},revoke_admin:r=>{const{normalize:n}=r;return n(["撤銷管理權限"])},grant_moderator:r=>{const{normalize:n}=r;return n(["賦予主持人權限"])},revoke_moderator:r=>{const{normalize:n}=r;return n(["撤銷主持人權限"])},activate_account:r=>{const{normalize:n}=r;return n(["啟用賬號"])},deactivate_account:r=>{const{normalize:n}=r;return n(["關閉賬號"])},force_nsfw:r=>{const{normalize:n}=r;return n(["標記所有的帖子都是工作場合不適"])},strip_media:r=>{const{normalize:n}=r;return n(["從帖子裡刪除媒體文件"])},force_unlisted:r=>{const{normalize:n}=r;return n(["強制帖子為不公開"])},sandbox:r=>{const{normalize:n}=r;return n(["強制帖子為只有關注者可看"])},disable_remote_subscription:r=>{const{normalize:n}=r;return n(["禁止從遠程實例關注用戶"])},disable_any_subscription:r=>{const{normalize:n}=r;return n(["完全禁止關注用戶"])},quarantine:r=>{const{normalize:n}=r;return n(["從聯合實例中禁止用戶帖子"])}},approve:r=>{const{normalize:n}=r;return n(["批准"])},block:r=>{const{normalize:n}=r;return n(["封鎖"])},blocked:r=>{const{normalize:n}=r;return n(["已封鎖!"])},deny:r=>{const{normalize:n}=r;return n(["拒絕"])},favorites:r=>{const{normalize:n}=r;return n(["喜歡"])},follow:r=>{const{normalize:n}=r;return n(["關注"])},follow_sent:r=>{const{normalize:n}=r;return n(["請求已發送!"])},follow_progress:r=>{const{normalize:n}=r;return n(["請求中…"])},follow_unfollow:r=>{const{normalize:n}=r;return n(["取消關注"])},followees:r=>{const{normalize:n}=r;return n(["正在關注"])},followers:r=>{const{normalize:n}=r;return n(["關注者"])},following:r=>{const{normalize:n}=r;return n(["正在關注!"])},follows_you:r=>{const{normalize:n}=r;return n(["關注了你!"])},hidden:r=>{const{normalize:n}=r;return n(["已隱藏"])},mention:r=>{const{normalize:n}=r;return n(["提及"])},message:r=>{const{normalize:n}=r;return n(["消息"])},mute:r=>{const{normalize:n}=r;return n(["靜音"])},muted:r=>{const{normalize:n}=r;return n(["已靜音"])},report:r=>{const{normalize:n}=r;return n(["報告"])},statuses:r=>{const{normalize:n}=r;return n(["發文"])},unsubscribe:r=>{const{normalize:n}=r;return n(["退訂"])},unblock:r=>{const{normalize:n}=r;return n(["取消封鎖"])},unblock_progress:r=>{const{normalize:n}=r;return n(["取消封鎖中…"])},block_progress:r=>{const{normalize:n}=r;return n(["封鎖中…"])},unmute:r=>{const{normalize:n}=r;return n(["取消靜音"])},unmute_progress:r=>{const{normalize:n}=r;return n(["取消靜音中…"])},hide_repeats:r=>{const{normalize:n}=r;return n(["隱藏轉發"])},show_repeats:r=>{const{normalize:n}=r;return n(["顯示轉發"])},roles:{moderator:r=>{const{normalize:n}=r;return n(["主持人"])},admin:r=>{const{normalize:n}=r;return n(["管理員"])}},highlight:{disabled:r=>{const{normalize:n}=r;return n(["無突出顯示"])},solid:r=>{const{normalize:n}=r;return n(["單色背景"])},striped:r=>{const{normalize:n}=r;return n(["條紋背景"])},side:r=>{const{normalize:n}=r;return n(["彩條"])}},bot:r=>{const{normalize:n}=r;return n(["機器人"])},edit_profile:r=>{const{normalize:n}=r;return n(["編輯個人資料"])}},user_profile:{timeline_title:r=>{const{normalize:n}=r;return n(["用戶時間線"])},profile_does_not_exist:r=>{const{normalize:n}=r;return n(["抱歉,此個人資料不存在。"])},profile_loading_error:r=>{const{normalize:n}=r;return n(["抱歉,載入個人資料時出錯。"])}},user_reporting:{title:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["報告 ",e(t(0))])},add_comment_description:r=>{const{normalize:n}=r;return n(["此報告會發送給你的實例管理員。你可以在下面提供更多詳細信息解釋報告的緣由:"])},forward_to:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["轉發 ",e(t(0))])},submit:r=>{const{normalize:n}=r;return n(["提交"])},generic_error:r=>{const{normalize:n}=r;return n(["當處理你的請求時,發生了一個錯誤。"])},additional_comments:r=>{const{normalize:n}=r;return n(["其它評論"])},forward_description:r=>{const{normalize:n}=r;return n(["這個賬號是從另外一個服務器。同時發送一個報告到那裡?"])}},who_to_follow:{more:r=>{const{normalize:n}=r;return n(["更多"])},who_to_follow:r=>{const{normalize:n}=r;return n(["推薦關注"])}},tool_tip:{media_upload:r=>{const{normalize:n}=r;return n(["上傳多媒體"])},repeat:r=>{const{normalize:n}=r;return n(["轉發"])},favorite:r=>{const{normalize:n}=r;return n(["喜歡"])},add_reaction:r=>{const{normalize:n}=r;return n(["添加互動"])},reply:r=>{const{normalize:n}=r;return n(["回覆"])},user_settings:r=>{const{normalize:n}=r;return n(["用戶設置"])},accept_follow_request:r=>{const{normalize:n}=r;return n(["接受關注請求"])},reject_follow_request:r=>{const{normalize:n}=r;return n(["拒絕關注請求"])},bookmark:r=>{const{normalize:n}=r;return n(["書籤"])}},upload:{file_size_units:{B:r=>{const{normalize:n}=r;return n(["B"])},KiB:r=>{const{normalize:n}=r;return n(["KiB"])},TiB:r=>{const{normalize:n}=r;return n(["TiB"])},MiB:r=>{const{normalize:n}=r;return n(["MiB"])},GiB:r=>{const{normalize:n}=r;return n(["GiB"])}},error:{base:r=>{const{normalize:n}=r;return n(["上傳失敗。"])},file_too_big:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["文件太大[",e(t("filesize"))," ",e(t("filesizeunit"))," / ",e(t("allowedsize"))," ",e(t("allowedsizeunit")),"]"])},default:r=>{const{normalize:n}=r;return n(["稍後再試"])},message:r=>{const{normalize:n,interpolate:e,list:t}=r;return n(["上傳錯誤:",e(t(0))])}}},search:{people:r=>{const{normalize:n}=r;return n(["人"])},hashtags:r=>{const{normalize:n}=r;return n(["標籤"])},person_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count"))," 人正在討論"])},people_talking:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("count"))," 人正在討論"])},no_results:r=>{const{normalize:n}=r;return n(["沒有搜索結果"])}},password_reset:{forgot_password:r=>{const{normalize:n}=r;return n(["忘記密碼了?"])},password_reset:r=>{const{normalize:n}=r;return n(["重置密碼"])},instruction:r=>{const{normalize:n}=r;return n(["輸入你的電郵地址或者用戶名,我們將發送一個鏈接到你的郵箱,用於重置密碼。"])},placeholder:r=>{const{normalize:n}=r;return n(["你的電郵地址或者用戶名"])},check_email:r=>{const{normalize:n}=r;return n(["檢查你的郵箱,會有一個鏈接用於重置密碼。"])},return_home:r=>{const{normalize:n}=r;return n(["回到首頁"])},too_many_requests:r=>{const{normalize:n}=r;return n(["你觸發了嘗試的限制,請稍後再試。"])},password_reset_disabled:r=>{const{normalize:n}=r;return n(["密碼重置已經被禁用。請聯繫你的實例管理員。"])},password_reset_required:r=>{const{normalize:n}=r;return n(["您必須重置密碼才能登陸。"])},password_reset_required_but_mailer_is_disabled:r=>{const{normalize:n}=r;return n(["您必須重置密碼,但是密碼重置被禁用了。請聯繫您所在實例的管理員。"])}},announcements:{post_error:r=>{const{normalize:n,interpolate:e,named:t}=r;return n(["錯誤: ",e(t("error"))])},close_error:r=>{const{normalize:n}=r;return n(["關閉"])},delete_action:r=>{const{normalize:n}=r;return n(["刪除"])},start_time_prompt:r=>{const{normalize:n}=r;return n(["開始時間: "])},end_time_prompt:r=>{const{normalize:n}=r;return n(["結束時間: "])},all_day_prompt:r=>{const{normalize:n}=r;return n(["這是全日活動"])},start_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time"))," 開始"])},end_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time"))," 結束"])},published_time_display:r=>{const{normalize:n,interpolate:e,named:t}=r;return n([e(t("time"))," 發布"])},edit_action:r=>{const{normalize:n}=r;return n(["編輯"])},submit_edit_action:r=>{const{normalize:n}=r;return n(["送出"])},cancel_edit_action:r=>{const{normalize:n}=r;return n(["取消"])},inactive_message:r=>{const{normalize:n}=r;return n(["此公告無效"])},page_header:r=>{const{normalize:n}=r;return n(["公告"])},title:r=>{const{normalize:n}=r;return n(["公告"])},mark_as_read_action:r=>{const{normalize:n}=r;return n(["標示為以閱讀"])},post_placeholder:r=>{const{normalize:n}=r;return n(["在此輸入您的公告內容……"])},post_form_header:r=>{const{normalize:n}=r;return n(["發布公告"])},post_action:r=>{const{normalize:n}=r;return n(["發布"])}}}}}]); +//# sourceMappingURL=zh_Hant-json.f7e1d0f4b873c60d6396.js.map +\ No newline at end of file diff --git a/priv/static/static/js/i18n/zh_Hant-json.f7e1d0f4b873c60d6396.js.map b/priv/static/static/js/i18n/zh_Hant-json.f7e1d0f4b873c60d6396.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/i18n/zh_Hant-json.f7e1d0f4b873c60d6396.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/zh_Hant.json"],"sourcesContent":["export default {\n \"emoji\": {\n \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"統一碼繪文字\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自定義繪文字\"])},\n \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"插入繪文字\"])},\n \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索繪文字\"])},\n \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選擇器保持打開\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"繪文字\"])},\n \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"貼紙\"])},\n \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"加載所有繪文字(共 \", _interpolate(_named(\"emojiAmount\")), \" 個)\"])},\n \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"最先加載的 \", _interpolate(_named(\"saneAmount\")), \" ,加載全部繪文字可能會帶來性能問題。\"])}\n },\n \"polls\": {\n \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票的選項太少\"])},\n \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"投票 \", _interpolate(_list(0)), \" 前已結束\"])},\n \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"投票於 \", _interpolate(_list(0)), \" 內結束\"])},\n \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票期限\"])},\n \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"多選\"])},\n \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"單選\"])},\n \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"問卷類型\"])},\n \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票\"])},\n \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"票\"])},\n \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選項\"])},\n \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"增加選項\"])},\n \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"增加投票\"])},\n \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 票\"]), _normalize([_interpolate(_named(\"count\")), \" 票\"])])},\n \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" 人已投票\"]), _normalize([_interpolate(_named(\"count\")), \" 人已投票\"])])}\n },\n \"notifications\": {\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"作出了 \", _interpolate(_list(0)), \" 的反應\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"遷移到\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"沒有更多的通知\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉發了你的發文\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已閱!\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入更早的通知\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"想要關注你\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注了你\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜歡了你的發文\"])},\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未知的狀態,正在搜索中…\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"獲取通知錯誤:\", _interpolate(_list(0))])}\n },\n \"nav\": {\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"時間線\"])},\n \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"偏好設置\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推薦關注\"])},\n \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索\"])},\n \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶搜索\"])},\n \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"書籤\"])},\n \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已知網絡\"])},\n \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"時間線\"])},\n \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公共時間線\"])},\n \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私信\"])},\n \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"互動\"])},\n \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注請求\"])},\n \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"後退\"])},\n \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理員\"])},\n \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關於\"])},\n \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"家時間線\"])}\n },\n \"media_modal\": {\n \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"往後\"])},\n \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"往前\"])}\n },\n \"login\": {\n \"heading\": {\n \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"雙重因素恢復\"])},\n \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"雙重因素驗證\"])}\n },\n \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"恢復碼\"])},\n \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入一個雙重因素驗證碼\"])},\n \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入一個恢復碼\"])},\n \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"驗證碼\"])},\n \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登錄後加入討論\"])},\n \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶名\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例:鈴音\"])},\n \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密碼\"])},\n \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登出\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用 OAuth 登入\"])},\n \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"登入\"])}\n },\n \"importer\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入此文件時出現一個錯誤。\"])},\n \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入成功。\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])}\n },\n \"image_cropper\": {\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存不裁剪\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存\"])},\n \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"裁剪圖片\"])}\n },\n \"general\": {\n \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"窺視\"])},\n \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關閉\"])},\n \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"驗證\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確認\"])},\n \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"啟用\"])},\n \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁用\"])},\n \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"忽略\"])},\n \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收起\"])},\n \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展開\"])},\n \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"可選\"])},\n \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"再試\"])},\n \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"請再試\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發生一個錯誤\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入中…\"])},\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"應用\"])},\n \"role\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"審查者\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理員\"])}\n },\n \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"點擊以使用 Ruffle 顯示 Flash 內容(實驗性,可能無效)。\"])},\n \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"請注意,這可能有潜在的危險,因為Flash內容仍然是武斷的程式碼。\"])},\n \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無法加載flash內容,請參閱控制台瞭解詳細資訊。\"])},\n \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"否\"])},\n \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"發生了一個錯誤: \", _interpolate(_list(0))])},\n \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不再顯示\"])},\n \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"是\"])},\n \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"復原\"])},\n \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"滾動至頂部\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"置頂\"])},\n \"scope_in_timeline\": {\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"僅關注者\"])}\n },\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"停止置頂\"])}\n },\n \"finder\": {\n \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"尋找用戶\"])},\n \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"獲取用戶時發生錯誤\"])}\n },\n \"features_panel\": {\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推薦關注\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"特色\"])},\n \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文字數量限制\"])},\n \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"可見範圍設置\"])},\n \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒體代理\"])},\n \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma 聊天\"])},\n \"chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])},\n \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上傳限制\"])},\n \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"留言板\"])}\n },\n \"exporter\": {\n \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在處理,稍後會提示您下載文件\"])},\n \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導出\"])}\n },\n \"domain_mute_card\": {\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消靜音中…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消靜音\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音中…\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音\"])}\n },\n \"shoutbox\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"留言板\"])}\n },\n \"about\": {\n \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"職員\"])},\n \"mrf\": {\n \"simple\": {\n \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這個實例強迫以下實例的帖子媒體設定為敏感:\"])},\n \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒體強制設定為敏感\"])},\n \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這個實例移除以下實例的帖子媒體:\"])},\n \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"移除媒體\"])},\n \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這個實例在所有已知網絡中移除下列實例:\"])},\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從所有已知網路中移除\"])},\n \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本實例只會把公開發文發送到下列實例:\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隔離\"])},\n \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本實例不會接收來自下列實例的消息:\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒絕\"])},\n \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本實例只接收來自下列實例的消息:\"])},\n \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"站規\"])},\n \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"接受\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"實例\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"原因\"])},\n \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N/A\"])}\n },\n \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF 策略會影響本實例的互通行為。以下策略已啟用:\"])},\n \"keyword\": {\n \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從「全部已知網絡」時間線上移除\"])},\n \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取代\"])},\n \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒絕\"])},\n \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])},\n \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關鍵字政策\"])}\n },\n \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已啟用的MRF政策\"])},\n \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聯邦\"])}\n }\n },\n \"settings\": {\n \"style\": {\n \"common\": {\n \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顏色\"])},\n \"contrast\": {\n \"context\": {\n \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"大字文本 (18pt+)\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文本\"])}\n },\n \"level\": {\n \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"符合 AAA 等級準則(推薦)\"])},\n \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"符合 AA 等級準則(最低)\"])},\n \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不符合任何輔助功能指南\"])}\n },\n \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"對比度是 \", _interpolate(_named(\"ratio\")), \", 它 \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])}\n },\n \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"透明度\"])}\n },\n \"advanced_colors\": {\n \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"灰度文字\"])},\n \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"錯誤\"])},\n \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提醒或警告背景色\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"高级\"])},\n \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"警告\"])},\n \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"中性\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"帖子/用戶簡介\"])},\n \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"徽章背景\"])},\n \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提示框,菜單,彈出框\"])},\n \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板標題\"])},\n \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"頂欄\"])},\n \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邊框\"])},\n \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕\"])},\n \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入框\"])},\n \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"底襯\"])},\n \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票統計圖\"])},\n \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"圖標\"])},\n \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"強調元素\"])},\n \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按下\"])},\n \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選中的帖子\"])},\n \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選中的菜單項\"])},\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關閉\"])},\n \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"切換\"])},\n \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標籤\"])},\n \"chat\": {\n \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"收到\"])},\n \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發出\"])},\n \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邊框\"])}\n },\n \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"桌布\"])}\n },\n \"preview\": {\n \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這很正常\"])},\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預覽\"])},\n \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"內容\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例子錯誤\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"有堆 \", _interpolate(_list(0)), \" 和 \", _interpolate(_list(1))])},\n \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"內容\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"剛剛抵達洛杉磯.\"])},\n \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"有用的手冊\"])},\n \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"閱讀我們的 \", _interpolate(_list(0)), \" ,然而什麼有用的也學不到!\"])},\n \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"我已經瀏覽了條款及細則\"])},\n \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"一個很好的小鏈接\"])}\n },\n \"shadows\": {\n \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"覆寫\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"陰影和燈光\"])},\n \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"組件\"])},\n \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"陰影 #\", _interpolate(_named(\"value\"))])},\n \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"模糊\"])},\n \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"擴散\"])},\n \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"插圖\"])},\n \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"對於陰影,您還可以使用\", _interpolate(_list(0)), \"表示法來使用其他顏色插槽。\"])},\n \"filter_hint\": {\n \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"警告,此陰影設置會總是使用 \", _interpolate(_list(0)), \" ,如果瀏覽器支持的話。\"])},\n \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 不支持參數 \", _interpolate(_list(1)), \" 和關鍵詞 \", _interpolate(_list(2)), \" 。\"])},\n \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"請注意組合兩個內部和非內部的陰影到頭像上,在透明頭像上可能會有意料之外的效果。\"])},\n \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"陰影的擴散 > 0 會同設置成零一樣\"])},\n \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"插入內部的陰影會使用 \", _interpolate(_list(0))])}\n },\n \"components\": {\n \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板\"])},\n \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板標題\"])},\n \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"頂欄\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶頭像(在個人資料欄)\"])},\n \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶頭像(在帖子顯示欄)\"])},\n \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"彈窗和工具提示\"])},\n \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕\"])},\n \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕(懸停)\"])},\n \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕(按下)\"])},\n \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕(按下和懸停)\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入框\"])}\n }\n },\n \"switcher\": {\n \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"舊版\"])},\n \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入主題\"])},\n \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留顏色\"])},\n \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留陰影\"])},\n \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留透明度\"])},\n \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留圓角\"])},\n \"help\": {\n \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不知出於何種原因,主題快照缺失了,一些地方可能與您印象中的不符。\"])},\n \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"版本衝突:很有可能是 FE 版本回滾後再次升級了,如果您使用舊版本的 FE 更改了主題那麼您可能需要使用舊版本,否則請使用新版本。\"])},\n \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您導入的文件來自更高版本的 FE。\"])},\n \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您導入的文件來自舊版本的 FE。\"])},\n \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在文件中沒有主題快照,所以網站外觀可能會與原來預想的不同。\"])},\n \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 的主題引擎隨著版本更新升級了。\"])},\n \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 的版本回滾了。\"])},\n \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE 已升級,主題會和你記憶中的不太一樣。\"])},\n \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您導入的文件是舊版 FE 的。我們儘可能保持兼容性,但還是可能出現不一致的情況。\"])},\n \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入快照已加載,因此所有值均被覆蓋。 您可以改為載入主題實際數據。\"])},\n \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"為保萬無一失,載入了主題快照。您可以試著載入主題數據。\"])}\n },\n \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新版本\"])},\n \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保持原狀\"])},\n \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"清除透明度\"])},\n \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"清除全部\"])},\n \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置\"])},\n \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保留字體\"])},\n \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"保留\\\" 選項在選擇或載入主題時保留當前設置的選項,在導出主題時還會存儲上述選項。當所有複選框未設置時,導出主題將保存所有內容。\"])}\n },\n \"fonts\": {\n \"components\": {\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面\"])},\n \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入框\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發帖文字\"])},\n \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"帖子中使用等間距文字(富文本)\"])}\n },\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字體\"])},\n \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"給用戶界面的元素選擇字體。選擇 “自選”的你必須輸入確切的字體名稱。\"])},\n \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字體名稱\"])},\n \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"大小 (像素)\"])},\n \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"字重 (粗體))\"])},\n \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自選\"])}\n },\n \"common_colors\": {\n \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"點擊”高級“ 標籤進行細緻的控制\"])},\n \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"常用顏色\"])},\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"共同\"])},\n \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"圖標,強調,徽章\"])}\n },\n \"radii\": {\n \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"圓角\"])}\n }\n },\n \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"屏蔽來自你沒有關注的用戶的通知\"])},\n \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用户\"])},\n \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不顯示關注者數量\"])},\n \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不顯示富文本格式\"])},\n \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶遷移\"])},\n \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉發\"])},\n \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜歡\"])},\n \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面語言\"])},\n \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(默認:\", _interpolate(_named(\"value\")), \")\"])},\n \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入框\"])},\n \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入預置主題\"])},\n \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從 csv 文件中導入關注\"])},\n \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從 csv 文件中導入封鎖黑名單名單\"])},\n \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏過濾的發文\"])},\n \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你需要手動審核關注請求\"])},\n \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"循環視頻\"])},\n \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只循環沒有聲音的視頻(例如:Mastodon 裡的“GIF”)\"])},\n \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音\"])},\n \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在彈出框內播放視頻\"])},\n \"profile_fields\": {\n \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加字段\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標籤\"])},\n \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"內容\"])},\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"個人資料元數據\"])}\n },\n \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生成縮略圖時不要裁剪附件\"])},\n \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要顯示的通知類型\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注\"])},\n \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新電郵\"])},\n \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"比如mastodon: copy as is\"])},\n \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您確定要重置個人資料背景圖嗎?\"])},\n \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您確定要重置橫幅圖片嗎?\"])},\n \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您確定要重置頭像嗎?\"])},\n \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置橫幅圖片\"])},\n \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置個人資料背景圖\"])},\n \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置頭像\"])},\n \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"允許通過搜索檢索等服務找到此賬號\"])},\n \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除賬戶時發生錯誤,如果一直刪除不了,請聯繫實例管理員。\"])},\n \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"寫作設置\"])},\n \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天訊息\"])},\n \"mfa\": {\n \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確認並啟用OTP\"])},\n \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置OTP\"])},\n \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預設OTP\"])},\n \"verify\": {\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要啟用雙因素驗證,請把你的雙因素驗證 app 裡的數字輸入:\"])}\n },\n \"scan\": {\n \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密鑰\"])},\n \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使用你的雙因素驗證 app,掃瞄這個二維碼,或者輸入這些文字密鑰:\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"掃瞄\"])}\n },\n \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"身份驗證方法\"])},\n \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抄寫這些號碼,或者保存在安全的地方。這些號碼不會再次顯示。如果你無法訪問你的 2FA app,也丟失了你的恢復碼,你的賬號就再也無法登錄了。\"])},\n \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在接收備份碼…\"])},\n \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"恢復碼。\"])},\n \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"當你生成新的恢復碼時,你的舊恢復碼就失效了。\"])},\n \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"生成新的恢復碼\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"雙因素驗證\"])}\n },\n \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新密碼\"])},\n \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"名字及簡介\"])},\n \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"名字\"])},\n \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"域名\"])},\n \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在下面輸入密碼,以確認刪除帳戶。\"])},\n \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"永久刪除你的帳號和所有數據。\"])},\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除帳戶\"])},\n \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默認可見性範圍\"])},\n \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"數據導入/導出\"])},\n \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音與封鎖\"])},\n \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"當前密碼\"])},\n \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確認新密碼\"])},\n \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"摺疊帶標題的內容\"])},\n \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"複選框\"])},\n \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(默認)\"])},\n \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"界面\"])},\n \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您所選擇的主題文件不被 Pleroma 支持,因此主題未被修改。\"])},\n \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在您的瀏覽器中無法使用\"])},\n \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"鏈接\"])},\n \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"成功修改了密碼!\"])},\n \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改密碼的時候出了點問題。\"])},\n \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改密碼\"])},\n \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"郵箱修改成功!\"])},\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這是一個機器人賬號\"])},\n \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改電子郵箱\"])},\n \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"紅色(取消)\"])},\n \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"橙色(收藏)\"])},\n \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"綠色(轉發)\"])},\n \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"藍色(回覆,關注)\"])},\n \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"按鈕\"])},\n \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"互動\"])},\n \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"沒有封鎖\"])},\n \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"沒有靜音\"])},\n \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要顯示我所關注的人\"])},\n \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要顯示關注我的人\"])},\n \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不顯示關注數\"])},\n \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"將敏感附件和鏈接隱藏,點擊才能打開\"])},\n \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"有效期至\"])},\n \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"面板\"])},\n \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在離開頁面時暫停時間線推送\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"過濾器\"])},\n \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱私\"])},\n \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"要停止收到某個指定的用戶的通知,請使用靜音功能。\"])},\n \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖一個用戶會停掉所有他的通知,等同於取消關注。\"])},\n \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"啟用 web 推送通知\"])},\n \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預置\"])},\n \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"配置文件背景圖\"])},\n \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"橫幅圖片\"])},\n \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"個人資料\"])},\n \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置界面邊緣的圓角 (單位:像素)\"])},\n \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示所有回覆\"])},\n \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"自動隱藏新帖子的按鈕(移動設備)\"])},\n \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存設置時發生錯誤\"])},\n \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置已保存\"])},\n \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索你想屏蔽的用戶\"])},\n \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索你想要隱藏的用戶\"])},\n \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"安全\"])},\n \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置新頭像\"])},\n \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置新的個人背景\"])},\n \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置新的個人橫幅\"])},\n \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設置\"])},\n \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"總是顯示主題框\"])},\n \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回覆時複製主題\"])},\n \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"比如電郵: \\\"re: 主題\\\"\"])},\n \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不要複製\"])},\n \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發文內容類型\"])},\n \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"鼠標懸停時播放GIF\"])},\n \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開啟滾動到頂部時的自動推送\"])},\n \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"文本\"])},\n \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主題\"])},\n \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"使用十六進制代碼(#rrggbb)來設置主題顏色。\"])},\n \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你也可以通過切換複選框來覆蓋某些組件的顏色和透明。使用“清除所有”來清楚所有覆蓋設置。\"])},\n \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"某些條目下的圖標是背景或文本對比指示器,鼠標懸停可以獲取詳細信息。請記住,使用透明度來顯示最差的情況。\"])},\n \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提醒\"])},\n \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上傳照片\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶設置\"])},\n \"values\": {\n \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"否\"])},\n \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"是\"])}\n },\n \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推薦的頭像圖片最小的尺寸是 150x150 像素。\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在時間線上顯示繪文字互動\"])},\n \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導出預置主題\"])},\n \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"過濾\"])},\n \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"所有包含以下詞彙的內容都會被隱藏,一行一個\"])},\n \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導出關注\"])},\n \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"將關注導出成 csv 文件\"])},\n \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入關注\"])},\n \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入關注時錯誤\"])},\n \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注已導入!尚需要一些時間來處理。\"])},\n \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在對話中隱藏附件\"])},\n \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在時間線上隱藏附件\"])},\n \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不顯示被靜音的用戶的帖子\"])},\n \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"最多每個帖子所能顯示的縮略圖數量\"])},\n \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏指定實例的面板\"])},\n \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預載圖片\"])},\n \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"點擊一次以打開工作場所不適宜的附件\"])},\n \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏帖子的統計數據(例如:收藏的次數)\"])},\n \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏用戶的統計數據(例如:關注者的數量)\"])},\n \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通用\"])},\n \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前景\"])},\n \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖\"])},\n \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖黑名單導入成功!需要一點時間來處理。\"])},\n \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入封鎖黑名單出錯\"])},\n \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖黑名單導入\"])},\n \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導出你的封鎖黑名單到一個 csv 文件\"])},\n \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖黑名單導出\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"簡介\"])},\n \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"背景\"])},\n \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"頭像\"])},\n \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"頭像(通知)\"])},\n \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"頭像\"])},\n \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件\"])},\n \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"附件\"])},\n \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在關注的賬號遷移時自動重新關注\"])},\n \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入你當前密碼來確認你的身份\"])},\n \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"安全\"])},\n \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App 名稱\"])},\n \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"修改你的電子郵箱時發生錯誤。\"])},\n \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索需要隱藏的域名\"])},\n \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從繪文字選擇器插入繪文字時,在繪文字兩側插入空格\"])},\n \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"實時接收發佈以及通知\"])},\n \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"最小發文範圍\"])},\n \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回覆時的複製範圍(私信是總是複製的)\"])},\n \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只顯示發送給我的回覆\"])},\n \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只顯示發送給我的回覆/發送給我關注的用戶的回覆\"])},\n \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"時間線中的回覆\"])},\n \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤消\"])},\n \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示管理徽章\"])},\n \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"強調色\"])},\n \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前文箭頭\"])},\n \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示主持人徽章\"])},\n \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth代幣\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"代幣\"])},\n \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刷新token\"])},\n \"useStreamingApiWarning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(不推薦使用,實驗性的,已知跳過文章)\"])},\n \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"有趣\"])},\n \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏推送通知中的發送者與內容信息\"])},\n \"version\": {\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"版本\"])},\n \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"後端版本\"])},\n \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"前端版本\"])}\n },\n \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"最佳化時間軸算繪\"])},\n \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從CSV文件導入靜音\"])},\n \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音導入了!處理它們將需要一段時間。\"])},\n \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音導入\"])},\n \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"導入靜音時出錯\"])},\n \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"將靜音導出到csv文件\"])},\n \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音導出\"])},\n \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏實例桌布\"])},\n \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"只顯示對我本人的回复\"])},\n \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示對我關注的人的回复\"])},\n \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不顯示已隱藏的帖子\"])},\n \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏媒體預覽\"])},\n \"word_filter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"詞過濾\"])},\n \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"與默認設置不同\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多設置\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"保存更改\"])},\n \"file_export_import\": {\n \"errors\": {\n \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"所選文件不是受支持的Pleroma設置備份。 沒有進行任何更改。\"])},\n \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"不兼容的主版本:\", _interpolate(_named(\"fileMajor\")), \",此 PleromaFE(設置版本 \", _interpolate(_named(\"feMajor\")), \")過舊,無法處理\"])},\n \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"不兼容的主版本:\", _interpolate(_named(\"fileMajor\")), \",文件版本過舊,不受支持(最小設置版本 \", _interpolate(_named(\"feMajor\")), \")\"])},\n \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檔案的小版本不同,有些設置可能無法載入\"])}\n },\n \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從文件還原設置\"])},\n \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"備份設置和主題到文件\"])},\n \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"備份設置到文件\"])},\n \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"設定備份\"])}\n },\n \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"默認標記發文為敏感內容\"])},\n \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在右側顯示側邊欄\"])},\n \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏實例留言框\"])},\n \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"總是使用短名(如: \", \"@\", \"foo)\"])},\n \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯式提及連結\"])},\n \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"將\", \"@\", \"改用圖標顯示,不用文字\"])}\n },\n \"chats\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您確實要刪除此消息嗎?\"])},\n \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加載聊天時出了點問題。\"])},\n \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發送消息時出了點問題。\"])},\n \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您還沒有任何聊天記錄。 開始新的聊天!\"])},\n \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新聊天\"])},\n \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無法發布空消息\"])},\n \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你:\"])},\n \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"發消息給 \", _interpolate(_named(\"nickname\"))])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除\"])},\n \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"聊天\"])}\n },\n \"file_type\": {\n \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"音頻\"])},\n \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"視頻\"])},\n \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"图片\"])},\n \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檔案\"])}\n },\n \"display_date\": {\n \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"今天\"])}\n },\n \"status\": {\n \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音對話\"])},\n \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回覆:\"])},\n \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回覆\"])},\n \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在個人資料置頂\"])},\n \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消在個人資料置頂\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜歡\"])},\n \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉發\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除發文\"])},\n \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"置頂\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"書籤\"])},\n \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消書籤\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你真的想要刪除這條發文嗎?\"])},\n \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"對話取消靜音\"])},\n \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發文不可取得\"])},\n \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"複製發文鏈接\"])},\n \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"静音線程\"])},\n \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示完整標題\"])},\n \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\",有这些字:\"])},\n \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏完整標題\"])},\n \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示內容\"])},\n \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏內容\"])},\n \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"該帖已被刪除\"])},\n \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"展开\"])},\n \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"外部來源\"])},\n \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"工作不安全\"])}\n },\n \"time\": {\n \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 時\"])},\n \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"天\"])},\n \"day_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"天\"])},\n \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])},\n \"hour\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 時\"])},\n \"hour_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"時\"])},\n \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"時\"])},\n \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" y\"])},\n \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"剛剛\"])},\n \"day\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 天\"])},\n \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"還有 \", _interpolate(_list(0))])},\n \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 之前\"])},\n \"minute\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分鐘\"])},\n \"minute_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分\"])},\n \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分\"])},\n \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 分鐘\"])},\n \"month\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"month_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 月\"])},\n \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"剛剛\"])},\n \"second\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"second_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 秒\"])},\n \"week\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"周\"])},\n \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"周\"])},\n \"week_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"周\"])},\n \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"周\"])},\n \"year\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 年\"])},\n \"year_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"年\"])}\n },\n \"post_status\": {\n \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無法更新媒體,請重試\"])},\n \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒體描述\"])},\n \"scope\": {\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不公開 - 不會發送到公共時間軸\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公共 - 發送到公共時間軸\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"僅關注者 - 只有關注了你的人能看到\"])},\n \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"私信 - 只發送給被提及的用戶\"])}\n },\n \"scope_notice\": {\n \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本條內容既不在公共時間線,也不會在所有已知網絡上可見\"])},\n \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注你的人才能看到本條內容\"])},\n \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本條帖子可以被所有人看到\"])}\n },\n \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"空的\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"預覽\"])},\n \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在發送\"])},\n \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本條內容只有被在消息開始處提及的用戶能夠看到。\"])},\n \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"本條內容只有被提及的用戶能夠看到。\"])},\n \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"你的帳號沒有 \", _interpolate(_list(0)), \"。任何人都可以關注你並瀏覽你的上鎖內容。\"])},\n \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發佈新發文\"])},\n \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主題(可選)\"])},\n \"content_type\": {\n \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])},\n \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"純文本\"])}\n },\n \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標記附件為敏感內容\"])},\n \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上鎖\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"剛剛抵達洛杉磯。\"])},\n \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能發布沒有內容,沒有附件的發文\"])},\n \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發送\"])}\n },\n \"errors\": {\n \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma無法訪問瀏覽器存儲。您的登錄名或本地設置將不會保存,您可能會遇到意外問題。嘗試啟用Cookie。\"])}\n },\n \"timeline\": {\n \"error_fetching\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"獲取更新時發生錯誤\"])},\n \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"對話\"])},\n \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這條內容僅關注者可見,或者是私信,因此不能轉發\"])},\n \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"摺疊\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入更早的發文\"])},\n \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已轉發\"])},\n \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示新內容\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重新載入\"])},\n \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已是最新\"])},\n \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有更多發文\"])},\n \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有發文\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"取得時間線時發生錯誤:\", _interpolate(_list(0))])},\n \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已建立實時連接\"])},\n \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"丟失實時連接:CloseEvent代碼\", _interpolate(_list(0))])}\n },\n \"interactions\": {\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"載入更早的互動\"])},\n \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶遷移\"])},\n \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"新的關注者\"])},\n \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉發和喜歡\"])}\n },\n \"selectable_list\": {\n \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"選擇全部\"])}\n },\n \"remote_user_resolver\": {\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未找到。\"])},\n \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"搜索\"])},\n \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"遠程用戶解析器\"])}\n },\n \"registration\": {\n \"validations\": {\n \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能和密碼一樣\"])},\n \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])},\n \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"不能留空\"])}\n },\n \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示名稱\"])},\n \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:\\n你好,我是玲音。\\n我是一個住在日本郊區的動畫少女。你可能在 Wired 見過我。\"])},\n \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:岩倉玲音\"])},\n \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"例如:lain\"])},\n \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"點擊圖片獲取新的驗證碼\"])},\n \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"邀請碼\"])},\n \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊\"])},\n \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"確認密碼\"])},\n \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"電子郵箱\"])},\n \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"簡介\"])},\n \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此實例的註冊需要手動批准。\\n請讓管理知道您為什麼想要註冊。\"])},\n \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊理由\"])},\n \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"註冊\"])}\n },\n \"user_card\": {\n \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"就是你!!\"])},\n \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"媒體\"])},\n \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"每天\"])},\n \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"跨站關注\"])},\n \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"訂閱\"])},\n \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音中…\"])},\n \"admin_menu\": {\n \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除賬號\"])},\n \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除用戶\"])},\n \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"調停\"])},\n \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"賦予管理權限\"])},\n \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤銷管理權限\"])},\n \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"賦予主持人權限\"])},\n \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"撤銷主持人權限\"])},\n \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"啟用賬號\"])},\n \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關閉賬號\"])},\n \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標記所有的帖子都是工作場合不適\"])},\n \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從帖子裡刪除媒體文件\"])},\n \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"強制帖子為不公開\"])},\n \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"強制帖子為只有關注者可看\"])},\n \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"禁止從遠程實例關注用戶\"])},\n \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"完全禁止關注用戶\"])},\n \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"從聯合實例中禁止用戶帖子\"])}\n },\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"批准\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已封鎖!\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒絕\"])},\n \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜歡\"])},\n \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注\"])},\n \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"請求已發送!\"])},\n \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"請求中…\"])},\n \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消關注\"])},\n \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在關注\"])},\n \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注者\"])},\n \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"正在關注!\"])},\n \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關注了你!\"])},\n \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已隱藏\"])},\n \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提及\"])},\n \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"消息\"])},\n \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"靜音\"])},\n \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已靜音\"])},\n \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"報告\"])},\n \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發文\"])},\n \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"退訂\"])},\n \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消封鎖\"])},\n \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消封鎖中…\"])},\n \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"封鎖中…\"])},\n \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消靜音\"])},\n \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消靜音中…\"])},\n \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"隱藏轉發\"])},\n \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"顯示轉發\"])},\n \"roles\": {\n \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"主持人\"])},\n \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"管理員\"])}\n },\n \"highlight\": {\n \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"無突出顯示\"])},\n \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"單色背景\"])},\n \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"條紋背景\"])},\n \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"彩條\"])}\n },\n \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"機器人\"])},\n \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"編輯個人資料\"])}\n },\n \"user_profile\": {\n \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶時間線\"])},\n \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抱歉,此個人資料不存在。\"])},\n \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"抱歉,載入個人資料時出錯。\"])}\n },\n \"user_reporting\": {\n \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"報告 \", _interpolate(_list(0))])},\n \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此報告會發送給你的實例管理員。你可以在下面提供更多詳細信息解釋報告的緣由:\"])},\n \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"轉發 \", _interpolate(_list(0))])},\n \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交\"])},\n \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"當處理你的請求時,發生了一個錯誤。\"])},\n \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"其它評論\"])},\n \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這個賬號是從另外一個服務器。同時發送一個報告到那裡?\"])}\n },\n \"who_to_follow\": {\n \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"更多\"])},\n \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"推薦關注\"])}\n },\n \"tool_tip\": {\n \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上傳多媒體\"])},\n \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"轉發\"])},\n \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜歡\"])},\n \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"添加互動\"])},\n \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回覆\"])},\n \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"用戶設置\"])},\n \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"接受關注請求\"])},\n \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"拒絕關注請求\"])},\n \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"書籤\"])}\n },\n \"upload\": {\n \"file_size_units\": {\n \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])},\n \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])}\n },\n \"error\": {\n \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"上傳失敗。\"])},\n \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"文件太大[\", _interpolate(_named(\"filesize\")), \" \", _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), \" \", _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"稍後再試\"])},\n \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"上傳錯誤:\", _interpolate(_list(0))])}\n }\n },\n \"search\": {\n \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"人\"])},\n \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標籤\"])},\n \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" 人正在討論\"])},\n \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" 人正在討論\"])},\n \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"沒有搜索結果\"])}\n },\n \"password_reset\": {\n \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"忘記密碼了?\"])},\n \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"重置密碼\"])},\n \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"輸入你的電郵地址或者用戶名,我們將發送一個鏈接到你的郵箱,用於重置密碼。\"])},\n \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你的電郵地址或者用戶名\"])},\n \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"檢查你的郵箱,會有一個鏈接用於重置密碼。\"])},\n \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"回到首頁\"])},\n \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"你觸發了嘗試的限制,請稍後再試。\"])},\n \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"密碼重置已經被禁用。請聯繫你的實例管理員。\"])},\n \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您必須重置密碼才能登陸。\"])},\n \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"您必須重置密碼,但是密碼重置被禁用了。請聯繫您所在實例的管理員。\"])}\n },\n \"announcements\": {\n \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"錯誤: \", _interpolate(_named(\"error\"))])},\n \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"關閉\"])},\n \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"刪除\"])},\n \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"開始時間: \"])},\n \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"結束時間: \"])},\n \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"這是全日活動\"])},\n \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \" 開始\"])},\n \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \" 結束\"])},\n \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"time\")), \" 發布\"])},\n \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"編輯\"])},\n \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"送出\"])},\n \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"取消\"])},\n \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"此公告無效\"])},\n \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"公告\"])},\n \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"標示為以閱讀\"])},\n \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"在此輸入您的公告內容……\"])},\n \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發布公告\"])},\n \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"發布\"])}\n }\n}"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","named","_named","list","_list","plural","_plural"],"sourceRoot":""} +\ No newline at end of file diff --git a/priv/static/sw-pleroma.js b/priv/static/sw-pleroma.js @@ -1,5 +1,5 @@ -var serviceWorkerOption = {"assets":["/sw-pleroma.js.LICENSE.txt","/static/js/app.8d2126d35dba9482db51.js","/static/img/nsfw.2958239.png","/static/img/pleromatan_apology.f9d5180.png","/static/img/pleromatan_apology_fox.038b0bb.png","/static/js/emoji.33eab91b64f59431137d.js","/static/js/i18n/ar-json.d09609af3224232857d6.js","/static/js/i18n/ca-json.1eb24bc001efa3c0627f.js","/static/js/i18n/cs-json.5eedbe9f7084c349fbe8.js","/static/js/i18n/de-json.bfa48615ac92f87ff37a.js","/static/js/i18n/eo-json.d81690d5be30b23e516b.js","/static/js/i18n/es-json.4a302899a65e1f67d8a2.js","/static/js/i18n/et-json.580b101d6bb83a8aee75.js","/static/js/i18n/eu-json.d2eab39b0427995fc314.js","/static/js/i18n/fa-json.a19100f6a5a9431e2adb.js","/static/js/i18n/fi-json.d1934c18f12d80493ab1.js","/static/js/i18n/fr-json.36ef21ccb1203d3e65ae.js","/static/js/i18n/ga-json.3f1981817977a16f1d7e.js","/static/js/i18n/he-json.03c5d271a4034de06e6f.js","/static/js/i18n/hu-json.0487899ca7a7a8505ed8.js","/static/js/i18n/id-json.3e42564ce7a3a847ecb0.js","/static/js/i18n/it-json.99a21d5c98376af17141.js","/static/js/i18n/ja_easy-json.1d5ea7e755b066ac2cdd.js","/static/js/i18n/ja_pedantic-json.b52fa70f0bf89ae01cfb.js","/static/js/i18n/ko-json.4bd28b26a7390a09afc2.js","/static/js/i18n/nb-json.a54af3b1f47d576ad4aa.js","/static/js/i18n/nl-json.3fb9758b10c29434b613.js","/static/js/i18n/oc-json.4f52bf1b6e3213acc33c.js","/static/js/i18n/pl-json.c963247822381b05579b.js","/static/js/i18n/pt-json.3fc5593e030268bcd291.js","/static/js/i18n/ro-json.3fd9977ed1c1413059ae.js","/static/js/i18n/ru-json.b913eb7f7e9f0c642438.js","/static/js/i18n/sk-json.d8d0eba80f94e6f55145.js","/static/js/i18n/te-json.ce6db28261b2f824064f.js","/static/js/i18n/uk-json.003908af9b15becdd382.js","/static/js/i18n/vi-json.703c1e731be6e857bbf3.js","/static/js/i18n/zh-json.63e4c9fe0197374a5dac.js","/static/js/i18n/zh_Hant-json.bfa569654a5cd74767ce.js","/static/js/emoji-annotations/af-json.96c988285a6a2cce6246.js","/static/js/emoji-annotations/am-json.94388548f7c18233fec3.js","/static/js/emoji-annotations/ar-json.5527466d349f2954d49b.js","/static/js/emoji-annotations/ar_SA-json.4a6f4402931a867070f0.js","/static/js/emoji-annotations/as-json.34cf67edc1cecd195738.js","/static/js/emoji-annotations/ast-json.7e4da8cb7e539c19a9b9.js","/static/js/emoji-annotations/az-json.9a32f2941d9c4d1f834c.js","/static/js/emoji-annotations/be-json.f92f80669873a4100c69.js","/static/js/emoji-annotations/bg-json.7c69c52572a7bf87e1db.js","/static/js/emoji-annotations/bn-json.657aac057f36ad06c58d.js","/static/js/emoji-annotations/br-json.c7175423d8965ed10bae.js","/static/js/emoji-annotations/bs-json.48ef42da1c7976cf083c.js","/static/js/emoji-annotations/ca-json.ce029e860b10b242c6a5.js","/static/js/emoji-annotations/ccp-json.02836537ffe2b02291cb.js","/static/js/emoji-annotations/ceb-json.9db0336f168aa77ee395.js","/static/js/emoji-annotations/chr-json.e7e542ab5a74167dec10.js","/static/js/emoji-annotations/ckb-json.13dc83db1e15aa76051a.js","/static/js/emoji-annotations/cs-json.48d8bba230dc9fe6b3dc.js","/static/js/emoji-annotations/cy-json.e09dd13da5ad56530ead.js","/static/js/emoji-annotations/da-json.8d074e27df71edafc543.js","/static/js/emoji-annotations/de-json.e1443c01a191af1665e1.js","/static/js/emoji-annotations/de_CH-json.b4a5891ea2f38d616ec0.js","/static/js/emoji-annotations/doi-json.7841c3f3ceb4e3da0bd1.js","/static/js/emoji-annotations/dsb-json.7635686ffd8d62264466.js","/static/js/emoji-annotations/el-json.b36610f2ea16d56c2314.js","/static/js/emoji-annotations/en-json.6c3947f7c49c3952084d.js","/static/js/emoji-annotations/en_001-json.72d8c47269350f59aa9f.js","/static/js/emoji-annotations/en_AU-json.33aac9bbd887273a34b1.js","/static/js/emoji-annotations/en_CA-json.5de965778a6b8a5a4bb4.js","/static/js/emoji-annotations/en_GB-json.bd687f904492facc81d1.js","/static/js/emoji-annotations/en_IN-json.002faa48c09121928fca.js","/static/js/emoji-annotations/es-json.f593b0dc2367a9d7fb30.js","/static/js/emoji-annotations/es_419-json.d81991295392b6ed83bb.js","/static/js/emoji-annotations/es_MX-json.ee359d4b611fdb1aeb33.js","/static/js/emoji-annotations/es_US-json.280bdb036dfd651d079a.js","/static/js/emoji-annotations/et-json.c42e3f186a55ecb061cd.js","/static/js/emoji-annotations/eu-json.931b429f5fcc141549a5.js","/static/js/emoji-annotations/fa-json.819c7f263c8594ccf4fa.js","/static/js/emoji-annotations/fi-json.0f254bb4b0faaba4abcc.js","/static/js/emoji-annotations/fil-json.4fca833f178d1b889b69.js","/static/js/emoji-annotations/fo-json.9b060e8009b3a8be4597.js","/static/js/emoji-annotations/fr-json.da49ed0d1a6622fe1c67.js","/static/js/emoji-annotations/fr_CA-json.59ed6b59e2ca68707292.js","/static/js/emoji-annotations/ga-json.cb3f9e613a8c445aea23.js","/static/js/emoji-annotations/gd-json.e3d0aea3725be774ad81.js","/static/js/emoji-annotations/gl-json.ce89036f0ae72224c994.js","/static/js/emoji-annotations/gu-json.8a899f364cf260376905.js","/static/js/emoji-annotations/ha-json.2a08912b38925c10f970.js","/static/js/emoji-annotations/ha_NE-json.e4855d92aaccfdd6ba57.js","/static/js/emoji-annotations/he-json.a3d7631f32182b0955a2.js","/static/js/emoji-annotations/hi-json.04bc5f73dc2169def97e.js","/static/js/emoji-annotations/hi_Latn-json.3cb73c456f31261f1908.js","/static/js/emoji-annotations/hr-json.fe847ade1f18a60e513c.js","/static/js/emoji-annotations/hsb-json.438721731b4171bc6fc3.js","/static/js/emoji-annotations/hu-json.1faf52040deda872b416.js","/static/js/emoji-annotations/hy-json.2d819f7faabfeba8457f.js","/static/js/emoji-annotations/ia-json.8e8365e2bf41779e2beb.js","/static/js/emoji-annotations/id-json.55f83c46d753b0b69330.js","/static/js/emoji-annotations/ig-json.f19fa5fe3582463ba73c.js","/static/js/emoji-annotations/is-json.62e220c65215b034533d.js","/static/js/emoji-annotations/it-json.9c1758f4fd3391f7f61a.js","/static/js/emoji-annotations/ja-json.0bd51f8c40c106355b0e.js","/static/js/emoji-annotations/jv-json.1c8d5ffcff22b46b6214.js","/static/js/emoji-annotations/ka-json.567e7b051d90a37003f3.js","/static/js/emoji-annotations/kab-json.1a2de4774f4ddc2b51dd.js","/static/js/emoji-annotations/kk-json.a20b59d47bdfe99786ad.js","/static/js/emoji-annotations/kl-json.87ab8661b4bdecd09faf.js","/static/js/emoji-annotations/km-json.9bc922b2e0faa64b4c53.js","/static/js/emoji-annotations/kn-json.efdac8ac0cb00991ba1e.js","/static/js/emoji-annotations/ko-json.d175900fe48f48ce87c8.js","/static/js/emoji-annotations/kok-json.116e4f72db3bfb846233.js","/static/js/emoji-annotations/ku-json.2173ed87f8d7372ee209.js","/static/js/emoji-annotations/ky-json.310bda579c819eda9472.js","/static/js/emoji-annotations/lb-json.499c526f3a653618ea9b.js","/static/js/emoji-annotations/lo-json.ecb06d61465a355b8157.js","/static/js/emoji-annotations/lt-json.ced4d5e70edc60127df6.js","/static/js/emoji-annotations/lv-json.5600c2eb6d59fa0aa2e2.js","/static/js/emoji-annotations/mai-json.302386b3358f4d34f9c8.js","/static/js/emoji-annotations/mi-json.9efe6f146ecd8987f80a.js","/static/js/emoji-annotations/mk-json.a254cabb8570419cc426.js","/static/js/emoji-annotations/ml-json.3f2902a84240faff1b48.js","/static/js/emoji-annotations/mn-json.764169f1168d0432640f.js","/static/js/emoji-annotations/mni-json.7db7f76ab1ce34e3683d.js","/static/js/emoji-annotations/mr-json.cb0a87d9aabf8a52161d.js","/static/js/emoji-annotations/ms-json.272ee4735aabc37015dd.js","/static/js/emoji-annotations/mt-json.3ddf7dbc114adf90c500.js","/static/js/emoji-annotations/my-json.8e7dd1485813d15bba7e.js","/static/js/emoji-annotations/ne-json.a0118dca2096a101b8e8.js","/static/js/emoji-annotations/nl-json.52f4b93b8fa5e22cb585.js","/static/js/emoji-annotations/nn-json.7293cd5d7205681cf48c.js","/static/js/emoji-annotations/no-json.22bdbbc77cc3c14ada58.js","/static/js/emoji-annotations/or-json.b007c2f6f92dcc95efac.js","/static/js/emoji-annotations/pa-json.7d60d69762a108270669.js","/static/js/emoji-annotations/pa_Arab-json.5ae021308b1c5f6dd8a7.js","/static/js/emoji-annotations/pcm-json.eac3a5ad0b4b5b33289d.js","/static/js/emoji-annotations/pl-json.e9e8f1ed84dc6c169516.js","/static/js/emoji-annotations/ps-json.a0d9eea5b81bcad11e64.js","/static/js/emoji-annotations/pt-json.2b2512ee44291bdb2ae7.js","/static/js/emoji-annotations/pt_PT-json.c381b13e323f91b0e6b3.js","/static/js/emoji-annotations/qu-json.55f4df57e71076dbad9f.js","/static/js/emoji-annotations/rm-json.985d4934f386fd05a75c.js","/static/js/emoji-annotations/ro-json.cb62f86ce78c94d1e813.js","/static/js/emoji-annotations/ru-json.a81d0df34460837ccacc.js","/static/js/emoji-annotations/rw-json.031838c5374676191131.js","/static/js/emoji-annotations/sa-json.21b06234a08c7469ccb4.js","/static/js/emoji-annotations/sat-json.71e92700b2aaca8e021c.js","/static/js/emoji-annotations/sc-json.c84c9c47d2e104c43e4c.js","/static/js/emoji-annotations/sd-json.8f2a6a06dc3cf185f79d.js","/static/js/emoji-annotations/si-json.841b356da03623c10dbf.js","/static/js/emoji-annotations/sk-json.5d96bdb4da82655d0314.js","/static/js/emoji-annotations/sl-json.a40c5548da34fce6f1d0.js","/static/js/emoji-annotations/so-json.f75abd16637c8924c075.js","/static/js/emoji-annotations/sq-json.bcf154ed8a6138aa089c.js","/static/js/emoji-annotations/sr-json.e29a20e59a708df0c6a8.js","/static/js/emoji-annotations/sr_Cyrl_BA-json.83c7c64b9696ae2339f2.js","/static/js/emoji-annotations/sr_Latn-json.ff27d1f455bf2afb8d70.js","/static/js/emoji-annotations/sr_Latn_BA-json.72933405032b81344754.js","/static/js/emoji-annotations/su-json.daff15251020cbecea7d.js","/static/js/emoji-annotations/sv-json.8b0374cbca3a77519876.js","/static/js/emoji-annotations/sw-json.d5f350641b9cbcc0e126.js","/static/js/emoji-annotations/sw_KE-json.f3563cbeac1c158563d5.js","/static/js/emoji-annotations/ta-json.675cc6c7607449d4a91b.js","/static/js/emoji-annotations/te-json.8a69a10f62cdf626244e.js","/static/js/emoji-annotations/tg-json.9647f559a4477d7d8e96.js","/static/js/emoji-annotations/th-json.34709bae223bb9d2587c.js","/static/js/emoji-annotations/ti-json.5b173bd33bb960be805b.js","/static/js/emoji-annotations/tk-json.23a9a6229829921704ad.js","/static/js/emoji-annotations/to-json.50ac37d101caaf592c94.js","/static/js/emoji-annotations/tr-json.6462e8cfd5006cf5b6cf.js","/static/js/emoji-annotations/tt-json.4c089389ba9983ec8ef7.js","/static/js/emoji-annotations/ug-json.bf768bd32e9ff02b0a8a.js","/static/js/emoji-annotations/uk-json.af110c8eef232638fc4d.js","/static/js/emoji-annotations/ur-json.983c02109444c883a18f.js","/static/js/emoji-annotations/uz-json.ac43f4c54d4587324a20.js","/static/js/emoji-annotations/vi-json.f6a364b2add7f8c8bc67.js","/static/js/emoji-annotations/wo-json.e0d689e22cda0dd77e9a.js","/static/js/emoji-annotations/xh-json.21e88c05ad3113dfc7f2.js","/static/js/emoji-annotations/yo-json.ea1150d6bc360dd86f2e.js","/static/js/emoji-annotations/yo_BJ-json.650318c25fe4da92bad8.js","/static/js/emoji-annotations/yue-json.15102c0ddfdf19bdfb4c.js","/static/js/emoji-annotations/yue_Hans-json.cc60bb10d32fab3d8207.js","/static/js/emoji-annotations/zh-json.e42a28127d5c1aff6c85.js","/static/js/emoji-annotations/zh_Hant-json.9cbb765c181d443828a9.js","/static/js/emoji-annotations/zh_Hant_HK-json.7eee03c705347a21c612.js","/static/js/emoji-annotations/zu-json.e0cb7cd3890583fd0f6d.js","/static/js/5948.2b7b4e97487f2539eb44.js","/static/js/6464.fea96fa80a7373e4e5f8.js","/static/js/159.3a9274574f1e33801c4a.js","/static/js/9114.e761a1c6846fea99aaf1.js","/static/js/2724.e4840c73281069ba54ab.js","/static/js/48.d7e479b200a6c89c4958.js","/static/ruffle/56f009143a5a7685fad9.wasm","/static/ruffle/92614a5efc3434baeaa9.wasm","/static/ruffle/LICENSE_APACHE","/static/ruffle/LICENSE_MIT","/static/ruffle/README.md","/static/ruffle/core.ruffle.61b3dd915983ae8a8b16.js","/static/ruffle/core.ruffle.848d766d6fc336164c2f.js","/static/ruffle/package.json","/static/ruffle/ruffle.js","/static/js/2724.e4840c73281069ba54ab.js.LICENSE.txt","/static/js/48.d7e479b200a6c89c4958.js.LICENSE.txt","/index.html","/static/css/app.48e52505beba5b9ab69b.css","/static/css/5948.06d2a0d84620cba6a4fb.css","/static/css/6464.169260b661120cc50815.css","/static/css/159.1d523a00378ebd68c5b3.css","/static/css/9114.8def3b2b7fe70b3b3712.css"]}; +var serviceWorkerOption = {"assets":["/sw-pleroma.js.LICENSE.txt","/static/js/app.d42ab31e1d50a3265a82.js","/static/img/nsfw.2958239.png","/static/img/pleromatan_apology.f9d5180.png","/static/img/pleromatan_apology_fox.038b0bb.png","/static/js/emoji.33eab91b64f59431137d.js","/static/js/i18n/ar-json.4916f840147303aa65fe.js","/static/js/i18n/ca-json.1eb24bc001efa3c0627f.js","/static/js/i18n/cs-json.5eedbe9f7084c349fbe8.js","/static/js/i18n/de-json.bfa48615ac92f87ff37a.js","/static/js/i18n/eo-json.6c62eef99e850912498b.js","/static/js/i18n/es-json.4a302899a65e1f67d8a2.js","/static/js/i18n/et-json.580b101d6bb83a8aee75.js","/static/js/i18n/eu-json.d2eab39b0427995fc314.js","/static/js/i18n/fa-json.a19100f6a5a9431e2adb.js","/static/js/i18n/fi-json.d1934c18f12d80493ab1.js","/static/js/i18n/fr-json.36ef21ccb1203d3e65ae.js","/static/js/i18n/ga-json.3f1981817977a16f1d7e.js","/static/js/i18n/he-json.03c5d271a4034de06e6f.js","/static/js/i18n/hu-json.0487899ca7a7a8505ed8.js","/static/js/i18n/id-json.e5c9ee768155f88128b9.js","/static/js/i18n/it-json.99a21d5c98376af17141.js","/static/js/i18n/ja_easy-json.1d5ea7e755b066ac2cdd.js","/static/js/i18n/ja_pedantic-json.b52fa70f0bf89ae01cfb.js","/static/js/i18n/ko-json.9029d09084bb22d8b705.js","/static/js/i18n/nan-TW-json.7f2789d8a461e86d1734.js","/static/js/i18n/nb-json.a54af3b1f47d576ad4aa.js","/static/js/i18n/nl-json.3fb9758b10c29434b613.js","/static/js/i18n/oc-json.4f52bf1b6e3213acc33c.js","/static/js/i18n/pl-json.c963247822381b05579b.js","/static/js/i18n/pt-json.3fc5593e030268bcd291.js","/static/js/i18n/ro-json.3fd9977ed1c1413059ae.js","/static/js/i18n/ru-json.b913eb7f7e9f0c642438.js","/static/js/i18n/sk-json.d8d0eba80f94e6f55145.js","/static/js/i18n/te-json.ce6db28261b2f824064f.js","/static/js/i18n/uk-json.003908af9b15becdd382.js","/static/js/i18n/vi-json.703c1e731be6e857bbf3.js","/static/js/i18n/zh-json.a0a26f6d62ddbe0b49cc.js","/static/js/i18n/zh_Hant-json.f7e1d0f4b873c60d6396.js","/static/js/emoji-annotations/af-json.96c988285a6a2cce6246.js","/static/js/emoji-annotations/am-json.94388548f7c18233fec3.js","/static/js/emoji-annotations/ar-json.5527466d349f2954d49b.js","/static/js/emoji-annotations/ar_SA-json.4a6f4402931a867070f0.js","/static/js/emoji-annotations/as-json.34cf67edc1cecd195738.js","/static/js/emoji-annotations/ast-json.7e4da8cb7e539c19a9b9.js","/static/js/emoji-annotations/az-json.9a32f2941d9c4d1f834c.js","/static/js/emoji-annotations/be-json.f92f80669873a4100c69.js","/static/js/emoji-annotations/bg-json.7c69c52572a7bf87e1db.js","/static/js/emoji-annotations/bn-json.657aac057f36ad06c58d.js","/static/js/emoji-annotations/br-json.c7175423d8965ed10bae.js","/static/js/emoji-annotations/bs-json.48ef42da1c7976cf083c.js","/static/js/emoji-annotations/ca-json.ce029e860b10b242c6a5.js","/static/js/emoji-annotations/ccp-json.02836537ffe2b02291cb.js","/static/js/emoji-annotations/ceb-json.9db0336f168aa77ee395.js","/static/js/emoji-annotations/chr-json.e7e542ab5a74167dec10.js","/static/js/emoji-annotations/ckb-json.13dc83db1e15aa76051a.js","/static/js/emoji-annotations/cs-json.48d8bba230dc9fe6b3dc.js","/static/js/emoji-annotations/cy-json.e09dd13da5ad56530ead.js","/static/js/emoji-annotations/da-json.8d074e27df71edafc543.js","/static/js/emoji-annotations/de-json.e1443c01a191af1665e1.js","/static/js/emoji-annotations/de_CH-json.b4a5891ea2f38d616ec0.js","/static/js/emoji-annotations/doi-json.7841c3f3ceb4e3da0bd1.js","/static/js/emoji-annotations/dsb-json.7635686ffd8d62264466.js","/static/js/emoji-annotations/el-json.b36610f2ea16d56c2314.js","/static/js/emoji-annotations/en-json.6c3947f7c49c3952084d.js","/static/js/emoji-annotations/en_001-json.72d8c47269350f59aa9f.js","/static/js/emoji-annotations/en_AU-json.33aac9bbd887273a34b1.js","/static/js/emoji-annotations/en_CA-json.5de965778a6b8a5a4bb4.js","/static/js/emoji-annotations/en_GB-json.bd687f904492facc81d1.js","/static/js/emoji-annotations/en_IN-json.002faa48c09121928fca.js","/static/js/emoji-annotations/es-json.f593b0dc2367a9d7fb30.js","/static/js/emoji-annotations/es_419-json.d81991295392b6ed83bb.js","/static/js/emoji-annotations/es_MX-json.ee359d4b611fdb1aeb33.js","/static/js/emoji-annotations/es_US-json.280bdb036dfd651d079a.js","/static/js/emoji-annotations/et-json.c42e3f186a55ecb061cd.js","/static/js/emoji-annotations/eu-json.931b429f5fcc141549a5.js","/static/js/emoji-annotations/fa-json.819c7f263c8594ccf4fa.js","/static/js/emoji-annotations/fi-json.0f254bb4b0faaba4abcc.js","/static/js/emoji-annotations/fil-json.4fca833f178d1b889b69.js","/static/js/emoji-annotations/fo-json.9b060e8009b3a8be4597.js","/static/js/emoji-annotations/fr-json.da49ed0d1a6622fe1c67.js","/static/js/emoji-annotations/fr_CA-json.59ed6b59e2ca68707292.js","/static/js/emoji-annotations/ga-json.cb3f9e613a8c445aea23.js","/static/js/emoji-annotations/gd-json.e3d0aea3725be774ad81.js","/static/js/emoji-annotations/gl-json.ce89036f0ae72224c994.js","/static/js/emoji-annotations/gu-json.8a899f364cf260376905.js","/static/js/emoji-annotations/ha-json.2a08912b38925c10f970.js","/static/js/emoji-annotations/ha_NE-json.e4855d92aaccfdd6ba57.js","/static/js/emoji-annotations/he-json.a3d7631f32182b0955a2.js","/static/js/emoji-annotations/hi-json.04bc5f73dc2169def97e.js","/static/js/emoji-annotations/hi_Latn-json.3cb73c456f31261f1908.js","/static/js/emoji-annotations/hr-json.fe847ade1f18a60e513c.js","/static/js/emoji-annotations/hsb-json.438721731b4171bc6fc3.js","/static/js/emoji-annotations/hu-json.1faf52040deda872b416.js","/static/js/emoji-annotations/hy-json.2d819f7faabfeba8457f.js","/static/js/emoji-annotations/ia-json.8e8365e2bf41779e2beb.js","/static/js/emoji-annotations/id-json.55f83c46d753b0b69330.js","/static/js/emoji-annotations/ig-json.f19fa5fe3582463ba73c.js","/static/js/emoji-annotations/is-json.62e220c65215b034533d.js","/static/js/emoji-annotations/it-json.9c1758f4fd3391f7f61a.js","/static/js/emoji-annotations/ja-json.0bd51f8c40c106355b0e.js","/static/js/emoji-annotations/jv-json.1c8d5ffcff22b46b6214.js","/static/js/emoji-annotations/ka-json.567e7b051d90a37003f3.js","/static/js/emoji-annotations/kab-json.1a2de4774f4ddc2b51dd.js","/static/js/emoji-annotations/kk-json.a20b59d47bdfe99786ad.js","/static/js/emoji-annotations/kl-json.87ab8661b4bdecd09faf.js","/static/js/emoji-annotations/km-json.9bc922b2e0faa64b4c53.js","/static/js/emoji-annotations/kn-json.efdac8ac0cb00991ba1e.js","/static/js/emoji-annotations/ko-json.d175900fe48f48ce87c8.js","/static/js/emoji-annotations/kok-json.116e4f72db3bfb846233.js","/static/js/emoji-annotations/ku-json.2173ed87f8d7372ee209.js","/static/js/emoji-annotations/ky-json.310bda579c819eda9472.js","/static/js/emoji-annotations/lb-json.499c526f3a653618ea9b.js","/static/js/emoji-annotations/lo-json.ecb06d61465a355b8157.js","/static/js/emoji-annotations/lt-json.ced4d5e70edc60127df6.js","/static/js/emoji-annotations/lv-json.5600c2eb6d59fa0aa2e2.js","/static/js/emoji-annotations/mai-json.302386b3358f4d34f9c8.js","/static/js/emoji-annotations/mi-json.9efe6f146ecd8987f80a.js","/static/js/emoji-annotations/mk-json.a254cabb8570419cc426.js","/static/js/emoji-annotations/ml-json.3f2902a84240faff1b48.js","/static/js/emoji-annotations/mn-json.764169f1168d0432640f.js","/static/js/emoji-annotations/mni-json.7db7f76ab1ce34e3683d.js","/static/js/emoji-annotations/mr-json.cb0a87d9aabf8a52161d.js","/static/js/emoji-annotations/ms-json.272ee4735aabc37015dd.js","/static/js/emoji-annotations/mt-json.3ddf7dbc114adf90c500.js","/static/js/emoji-annotations/my-json.8e7dd1485813d15bba7e.js","/static/js/emoji-annotations/ne-json.a0118dca2096a101b8e8.js","/static/js/emoji-annotations/nl-json.52f4b93b8fa5e22cb585.js","/static/js/emoji-annotations/nn-json.7293cd5d7205681cf48c.js","/static/js/emoji-annotations/no-json.22bdbbc77cc3c14ada58.js","/static/js/emoji-annotations/or-json.b007c2f6f92dcc95efac.js","/static/js/emoji-annotations/pa-json.7d60d69762a108270669.js","/static/js/emoji-annotations/pa_Arab-json.5ae021308b1c5f6dd8a7.js","/static/js/emoji-annotations/pcm-json.eac3a5ad0b4b5b33289d.js","/static/js/emoji-annotations/pl-json.e9e8f1ed84dc6c169516.js","/static/js/emoji-annotations/ps-json.a0d9eea5b81bcad11e64.js","/static/js/emoji-annotations/pt-json.2b2512ee44291bdb2ae7.js","/static/js/emoji-annotations/pt_PT-json.c381b13e323f91b0e6b3.js","/static/js/emoji-annotations/qu-json.55f4df57e71076dbad9f.js","/static/js/emoji-annotations/rm-json.985d4934f386fd05a75c.js","/static/js/emoji-annotations/ro-json.cb62f86ce78c94d1e813.js","/static/js/emoji-annotations/ru-json.a81d0df34460837ccacc.js","/static/js/emoji-annotations/rw-json.031838c5374676191131.js","/static/js/emoji-annotations/sa-json.21b06234a08c7469ccb4.js","/static/js/emoji-annotations/sat-json.71e92700b2aaca8e021c.js","/static/js/emoji-annotations/sc-json.c84c9c47d2e104c43e4c.js","/static/js/emoji-annotations/sd-json.8f2a6a06dc3cf185f79d.js","/static/js/emoji-annotations/si-json.841b356da03623c10dbf.js","/static/js/emoji-annotations/sk-json.5d96bdb4da82655d0314.js","/static/js/emoji-annotations/sl-json.a40c5548da34fce6f1d0.js","/static/js/emoji-annotations/so-json.f75abd16637c8924c075.js","/static/js/emoji-annotations/sq-json.bcf154ed8a6138aa089c.js","/static/js/emoji-annotations/sr-json.e29a20e59a708df0c6a8.js","/static/js/emoji-annotations/sr_Cyrl_BA-json.83c7c64b9696ae2339f2.js","/static/js/emoji-annotations/sr_Latn-json.ff27d1f455bf2afb8d70.js","/static/js/emoji-annotations/sr_Latn_BA-json.72933405032b81344754.js","/static/js/emoji-annotations/su-json.daff15251020cbecea7d.js","/static/js/emoji-annotations/sv-json.8b0374cbca3a77519876.js","/static/js/emoji-annotations/sw-json.d5f350641b9cbcc0e126.js","/static/js/emoji-annotations/sw_KE-json.f3563cbeac1c158563d5.js","/static/js/emoji-annotations/ta-json.675cc6c7607449d4a91b.js","/static/js/emoji-annotations/te-json.8a69a10f62cdf626244e.js","/static/js/emoji-annotations/tg-json.9647f559a4477d7d8e96.js","/static/js/emoji-annotations/th-json.34709bae223bb9d2587c.js","/static/js/emoji-annotations/ti-json.5b173bd33bb960be805b.js","/static/js/emoji-annotations/tk-json.23a9a6229829921704ad.js","/static/js/emoji-annotations/to-json.50ac37d101caaf592c94.js","/static/js/emoji-annotations/tr-json.6462e8cfd5006cf5b6cf.js","/static/js/emoji-annotations/tt-json.4c089389ba9983ec8ef7.js","/static/js/emoji-annotations/ug-json.bf768bd32e9ff02b0a8a.js","/static/js/emoji-annotations/uk-json.af110c8eef232638fc4d.js","/static/js/emoji-annotations/ur-json.983c02109444c883a18f.js","/static/js/emoji-annotations/uz-json.ac43f4c54d4587324a20.js","/static/js/emoji-annotations/vi-json.f6a364b2add7f8c8bc67.js","/static/js/emoji-annotations/wo-json.e0d689e22cda0dd77e9a.js","/static/js/emoji-annotations/xh-json.21e88c05ad3113dfc7f2.js","/static/js/emoji-annotations/yo-json.ea1150d6bc360dd86f2e.js","/static/js/emoji-annotations/yo_BJ-json.650318c25fe4da92bad8.js","/static/js/emoji-annotations/yue-json.15102c0ddfdf19bdfb4c.js","/static/js/emoji-annotations/yue_Hans-json.cc60bb10d32fab3d8207.js","/static/js/emoji-annotations/zh-json.e42a28127d5c1aff6c85.js","/static/js/emoji-annotations/zh_Hant-json.9cbb765c181d443828a9.js","/static/js/emoji-annotations/zh_Hant_HK-json.7eee03c705347a21c612.js","/static/js/emoji-annotations/zu-json.e0cb7cd3890583fd0f6d.js","/static/js/7586.628f729b9c8b2e6f4e1f.js","/static/js/6464.eb9c90a1c948cde554e9.js","/static/js/159.903e90c9de8ef6c67077.js","/static/js/7962.e25d40b042f8ee7389c3.js","/static/js/8859.c76b0a0c3a4b5acbef11.js","/static/js/3733.7060d1e6bca813125a0c.js","/static/js/48.b5ecdbc517423af07ca4.js","/static/js/9060.24271e167e0471a1a732.js","/static/ruffle/56f009143a5a7685fad9.wasm","/static/ruffle/92614a5efc3434baeaa9.wasm","/static/ruffle/LICENSE_APACHE","/static/ruffle/LICENSE_MIT","/static/ruffle/README.md","/static/ruffle/core.ruffle.61b3dd915983ae8a8b16.js","/static/ruffle/core.ruffle.848d766d6fc336164c2f.js","/static/ruffle/package.json","/static/ruffle/ruffle.js","/static/js/3733.7060d1e6bca813125a0c.js.LICENSE.txt","/static/js/48.b5ecdbc517423af07ca4.js.LICENSE.txt","/index.html","/static/css/app.a7f63ee9107a77599942.css","/static/css/7586.0d43f70bc6240422f179.css","/static/css/6464.169260b661120cc50815.css","/static/css/159.1d523a00378ebd68c5b3.css","/static/css/7962.76663e78ad5ea0bb0b90.css","/static/css/8859.d26a3b0841a7beb8fd4a.css"]}; /*! For license information please see sw-pleroma.js.LICENSE.txt */ -(()=>{var e={5464:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["منشور مجهول، جارٍ البحث عنه…"])},favorited_you:e=>{const{normalize:t}=e;return t(["أعجِب بمنشورك"])},followed_you:e=>{const{normalize:t}=e;return t(["يُتابعك"])},load_older:e=>{const{normalize:t}=e;return t(["تحميل الإشعارات الأقدم"])},notifications:e=>{const{normalize:t}=e;return t(["الإخطارات"])},read:e=>{const{normalize:t}=e;return t(["مقروء!"])},repeated_you:e=>{const{normalize:t}=e;return t(["شارَك منشورك"])}}}},3708:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Publicació desconeguda, s'està cercant…"])},favorited_you:e=>{const{normalize:t}=e;return t(["ha marcat un estat teu"])},followed_you:e=>{const{normalize:t}=e;return t(["ha començat a seguir-te"])},load_older:e=>{const{normalize:t}=e;return t(["Carrega més notificacions"])},notifications:e=>{const{normalize:t}=e;return t(["Notificacions"])},read:e=>{const{normalize:t}=e;return t(["Llegit!"])},repeated_you:e=>{const{normalize:t}=e;return t(["ha repetit el teu estat"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrat a"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No més notificacions"])},follow_request:e=>{const{normalize:t}=e;return t(["et vol seguir"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["ha reaccionat amb ",r(n(0))])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Error obtenint notificacions: ",r(n(0))])}}}},122:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Neznámý příspěvek, hledám jej…"])},favorited_you:e=>{const{normalize:t}=e;return t(["si oblíbil/a váš příspěvek"])},followed_you:e=>{const{normalize:t}=e;return t(["vás nyní sleduje"])},load_older:e=>{const{normalize:t}=e;return t(["Načíst starší oznámení"])},notifications:e=>{const{normalize:t}=e;return t(["Oznámení"])},read:e=>{const{normalize:t}=e;return t(["Číst!"])},repeated_you:e=>{const{normalize:t}=e;return t(["zopakoval/a váš příspěvek"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Žádná další oznámení"])}}}},414:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Unbekannte Nachricht, suche danach…"])},favorited_you:e=>{const{normalize:t}=e;return t(["favorisierte deine Nachricht"])},followed_you:e=>{const{normalize:t}=e;return t(["folgt dir"])},load_older:e=>{const{normalize:t}=e;return t(["Ältere Benachrichtigungen laden"])},notifications:e=>{const{normalize:t}=e;return t(["Benachrichtigungen"])},read:e=>{const{normalize:t}=e;return t(["Gelesen!"])},repeated_you:e=>{const{normalize:t}=e;return t(["wiederholte deine Nachricht"])},follow_request:e=>{const{normalize:t}=e;return t(["möchte dir folgen"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrierte zu"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reagierte mit ",r(n(0))])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Keine Benachrichtigungen mehr"])},error:e=>{const{normalize:t}=e;return t(["Error beim laden von Neuigkeiten"])}}}},2551:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Unknown status, searching for it…"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Error fetching notifications: ",r(n(0))])},favorited_you:e=>{const{normalize:t}=e;return t(["favorited your status"])},followed_you:e=>{const{normalize:t}=e;return t(["followed you"])},follow_request:e=>{const{normalize:t}=e;return t(["wants to follow you"])},load_older:e=>{const{normalize:t}=e;return t(["Load older notifications"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},read:e=>{const{normalize:t}=e;return t(["Read!"])},repeated_you:e=>{const{normalize:t}=e;return t(["repeated your status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No more notifications"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrated to"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reacted with ",r(n(0))])},submitted_report:e=>{const{normalize:t}=e;return t(["submitted a report"])},poll_ended:e=>{const{normalize:t}=e;return t(["poll has ended"])}}}},5775:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Nekonata afiŝo, serĉante ĝin…"])},favorited_you:e=>{const{normalize:t}=e;return t(["ŝatis vian afiŝon"])},followed_you:e=>{const{normalize:t}=e;return t(["ekabonis vin"])},load_older:e=>{const{normalize:t}=e;return t(["Enlegi pli malnovajn sciigojn"])},notifications:e=>{const{normalize:t}=e;return t(["Sciigoj"])},read:e=>{const{normalize:t}=e;return t(["Legite!"])},repeated_you:e=>{const{normalize:t}=e;return t(["ripetis vian afiŝon"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Neniuj pliaj sciigoj"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reagis per ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["migris al"])},follow_request:e=>{const{normalize:t}=e;return t(["volas vin aboni"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Eraris akirado de sciigoj: ",r(n(0))])},submitted_report:e=>{const{normalize:t}=e;return t(["sendis raporton"])},poll_ended:e=>{const{normalize:t}=e;return t(["enketo finiĝis"])}}}},8438:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Estado desconocido, buscándolo…"])},favorited_you:e=>{const{normalize:t}=e;return t(["le gusta tu estado"])},followed_you:e=>{const{normalize:t}=e;return t(["empezó a seguirte"])},load_older:e=>{const{normalize:t}=e;return t(["Cargar notificaciones antiguas"])},notifications:e=>{const{normalize:t}=e;return t(["Notificaciones"])},read:e=>{const{normalize:t}=e;return t(["¡Leído!"])},repeated_you:e=>{const{normalize:t}=e;return t(["repitió tu estado"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No hay más notificaciones"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reaccionó con ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["migrado a"])},follow_request:e=>{const{normalize:t}=e;return t(["quiere seguirte"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Error obteniendo notificaciones:",r(n(0))])}}}},9997:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{followed_you:e=>{const{normalize:t}=e;return t(["alustas sinu jälgimist"])},notifications:e=>{const{normalize:t}=e;return t(["Teated"])},read:e=>{const{normalize:t}=e;return t(["Loe!"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reageeris ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["kolis"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Rohkem teateid ei ole"])},repeated_you:e=>{const{normalize:t}=e;return t(["taaspostitas su staatuse"])},load_older:e=>{const{normalize:t}=e;return t(["Laadi vanemad teated"])},follow_request:e=>{const{normalize:t}=e;return t(["soovib Teid jälgida"])},favorited_you:e=>{const{normalize:t}=e;return t(["lisas su staatuse lemmikuks"])},broken_favorite:e=>{const{normalize:t}=e;return t(["Tundmatu staatus, otsin…"])}}}},9975:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Egoera ezezaguna, bilatzen…"])},favorited_you:e=>{const{normalize:t}=e;return t(["zure mezua gogoko du"])},followed_you:e=>{const{normalize:t}=e;return t(["Zu jarraitzen zaitu"])},load_older:e=>{const{normalize:t}=e;return t(["Kargatu jakinarazpen zaharragoak"])},notifications:e=>{const{normalize:t}=e;return t(["Jakinarazpenak"])},read:e=>{const{normalize:t}=e;return t(["Irakurrita!"])},repeated_you:e=>{const{normalize:t}=e;return t(["zure mezua errepikatu du"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Ez dago jakinarazpen gehiago"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t([r(n(0)),"kin erreakzionatu zuen"])},migrated_to:e=>{const{normalize:t}=e;return t(["hona migratua:"])},follow_request:e=>{const{normalize:t}=e;return t(["jarraitu nahi zaitu"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Errorea jakinarazpenak eskuratzean: ",r(n(0))])}}}},9923:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Viestiä ei löydetty…"])},favorited_you:e=>{const{normalize:t}=e;return t(["tykkäsi viestistäsi"])},followed_you:e=>{const{normalize:t}=e;return t(["seuraa sinua"])},load_older:e=>{const{normalize:t}=e;return t(["Lataa vanhempia ilmoituksia"])},notifications:e=>{const{normalize:t}=e;return t(["Ilmoitukset"])},read:e=>{const{normalize:t}=e;return t(["Lue!"])},repeated_you:e=>{const{normalize:t}=e;return t(["toisti viestisi"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Ei enempää ilmoituksia"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["lisäsi reaktion ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["siirtyi sivulle"])},follow_request:e=>{const{normalize:t}=e;return t(["haluaa seurata sinua"])}}}},8375:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Message inconnu, recherche en cours…"])},favorited_you:e=>{const{normalize:t}=e;return t(["a aimé votre statut"])},followed_you:e=>{const{normalize:t}=e;return t(["vous suit"])},load_older:e=>{const{normalize:t}=e;return t(["Charger les notifications précédentes"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},read:e=>{const{normalize:t}=e;return t(["Lu !"])},repeated_you:e=>{const{normalize:t}=e;return t(["a partagé votre statut"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Aucune notification supplémentaire"])},migrated_to:e=>{const{normalize:t}=e;return t(["a migré à"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["a réagi avec ",r(n(0))])},follow_request:e=>{const{normalize:t}=e;return t(["veut vous suivre"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Erreur de chargement des notifications : ",r(n(0))])},poll_ended:e=>{const{normalize:t}=e;return t(["Sondage terminé"])},submitted_report:e=>{const{normalize:t}=e;return t(["Rapport envoyé"])}}}},1746:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Post anaithnid. Cuardach dó…"])},favorited_you:e=>{const{normalize:t}=e;return t(["toghadh le do phost"])},followed_you:e=>{const{normalize:t}=e;return t(["lean tú"])},load_older:e=>{const{normalize:t}=e;return t(["Luchtaigh fógraí aosta"])},notifications:e=>{const{normalize:t}=e;return t(["Fógraí"])},read:e=>{const{normalize:t}=e;return t(["Léigh!"])},repeated_you:e=>{const{normalize:t}=e;return t(["athphostáil tú"])}}}},9369:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["סטאטוס לא ידוע, מחפש…"])},favorited_you:e=>{const{normalize:t}=e;return t(["אהב את הסטטוס שלך"])},followed_you:e=>{const{normalize:t}=e;return t(["עקב אחריך"])},load_older:e=>{const{normalize:t}=e;return t(["טען התראות ישנות"])},notifications:e=>{const{normalize:t}=e;return t(["התראות"])},read:e=>{const{normalize:t}=e;return t(["קרא!"])},repeated_you:e=>{const{normalize:t}=e;return t(["חזר על הסטטוס שלך"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["לא עוד התראות"])}}}},377:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{followed_you:e=>{const{normalize:t}=e;return t(["követ téged"])},notifications:e=>{const{normalize:t}=e;return t(["Értesítések"])},read:e=>{const{normalize:t}=e;return t(["Olvasva!"])}}}},6710:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{followed_you:e=>{const{normalize:t}=e;return t(["ti segue"])},notifications:e=>{const{normalize:t}=e;return t(["Notifiche"])},read:e=>{const{normalize:t}=e;return t(["Letto!"])},broken_favorite:e=>{const{normalize:t}=e;return t(["Stato sconosciuto, lo sto cercando…"])},favorited_you:e=>{const{normalize:t}=e;return t(["ha gradito"])},load_older:e=>{const{normalize:t}=e;return t(["Carica notifiche precedenti"])},repeated_you:e=>{const{normalize:t}=e;return t(["ha condiviso il tuo messaggio"])},follow_request:e=>{const{normalize:t}=e;return t(["vuole seguirti"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Fine delle notifiche"])},migrated_to:e=>{const{normalize:t}=e;return t(["è migrato verso"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["ha reagito con ",r(n(0))])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Errore nel caricare le notifiche: ",r(n(0))])}}}},6534:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["ステータスがみつかりません。さがしています…"])},favorited_you:e=>{const{normalize:t}=e;return t(["あなたのステータスがおきにいりされました"])},followed_you:e=>{const{normalize:t}=e;return t(["フォローされました"])},load_older:e=>{const{normalize:t}=e;return t(["ふるいつうちをみる"])},notifications:e=>{const{normalize:t}=e;return t(["つうち"])},read:e=>{const{normalize:t}=e;return t(["よんだ!"])},repeated_you:e=>{const{normalize:t}=e;return t(["あなたのステータスがリピートされました"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["つうちはありません"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["つうちをとりにいくことに、しっぱいしました: ",r(n(0))])},follow_request:e=>{const{normalize:t}=e;return t(["あなたをフォローしたいです"])},migrated_to:e=>{const{normalize:t}=e;return t(["インスタンスを、ひっこしました"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t([r(n(0))," でリアクションしました"])},poll_ended:e=>{const{normalize:t}=e;return t(["とうひょうが、おわりました"])},submitted_report:e=>{const{normalize:t}=e;return t(["つうほうしました"])}}}},333:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["ステータスが見つかりません。探しています…"])},favorited_you:e=>{const{normalize:t}=e;return t(["あなたのステータスがお気に入りされました"])},followed_you:e=>{const{normalize:t}=e;return t(["フォローされました"])},load_older:e=>{const{normalize:t}=e;return t(["古い通知をみる"])},notifications:e=>{const{normalize:t}=e;return t(["通知"])},read:e=>{const{normalize:t}=e;return t(["読んだ!"])},repeated_you:e=>{const{normalize:t}=e;return t(["あなたのステータスがリピートされました"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["通知はありません"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t([r(n(0))," でリアクションしました"])},migrated_to:e=>{const{normalize:t}=e;return t(["インスタンスを引っ越しました"])},follow_request:e=>{const{normalize:t}=e;return t(["あなたをフォローしたいです"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["通知の取得に失敗しました: ",r(n(0))])}}}},7379:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["알 수 없는 게시물입니다, 검색합니다…"])},favorited_you:e=>{const{normalize:t}=e;return t(["관심을 가짐"])},followed_you:e=>{const{normalize:t}=e;return t(["팔로우함"])},load_older:e=>{const{normalize:t}=e;return t(["이전 알림 불러오기"])},notifications:e=>{const{normalize:t}=e;return t(["알림"])},read:e=>{const{normalize:t}=e;return t(["읽음!"])},repeated_you:e=>{const{normalize:t}=e;return t(["리핏함"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["알림이 없습니다"])},migrated_to:e=>{const{normalize:t}=e;return t(["이사했습니다"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t([r(n(0))," 로 반응했습니다"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["알림 불러오기 실패: ",r(n(0))])},follow_request:e=>{const{normalize:t}=e;return t(["팔로우 요청"])},submitted_report:e=>{const{normalize:t}=e;return t(["신고 내용을 전송함"])},poll_ended:e=>{const{normalize:t}=e;return t(["투표가 끝남"])}}}},8103:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Ukjent status, leter etter den…"])},favorited_you:e=>{const{normalize:t}=e;return t(["likte din status"])},followed_you:e=>{const{normalize:t}=e;return t(["fulgte deg"])},load_older:e=>{const{normalize:t}=e;return t(["Last eldre varsler"])},notifications:e=>{const{normalize:t}=e;return t(["Varslinger"])},read:e=>{const{normalize:t}=e;return t(["Les!"])},repeated_you:e=>{const{normalize:t}=e;return t(["Gjentok din status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Ingen gjenstående varsler"])},follow_request:e=>{const{normalize:t}=e;return t(["ønsker å følge deg"])}}}},728:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Onbekend bericht, aan het zoeken…"])},favorited_you:e=>{const{normalize:t}=e;return t(["vond je bericht leuk"])},followed_you:e=>{const{normalize:t}=e;return t(["volgt jou"])},load_older:e=>{const{normalize:t}=e;return t(["Oudere meldingen laden"])},notifications:e=>{const{normalize:t}=e;return t(["Meldingen"])},read:e=>{const{normalize:t}=e;return t(["Gelezen!"])},repeated_you:e=>{const{normalize:t}=e;return t(["herhaalde je bericht"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Geen meldingen meer"])},migrated_to:e=>{const{normalize:t}=e;return t(["is gemigreerd naar"])},follow_request:e=>{const{normalize:t}=e;return t(["wil je volgen"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reageerde met ",r(n(0))])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Fout bij ophalen van meldingen: ",r(n(0))])},poll_ended:e=>{const{normalize:t}=e;return t(["peiling is beëindigd"])}}}},3932:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Estatut desconegut, sèm a lo cercar..."])},favorited_you:e=>{const{normalize:t}=e;return t(["a aimat vòstre estatut"])},followed_you:e=>{const{normalize:t}=e;return t(["vos a seguit"])},load_older:e=>{const{normalize:t}=e;return t(["Cargar las notificacions mai ancianas"])},notifications:e=>{const{normalize:t}=e;return t(["Notficacions"])},read:e=>{const{normalize:t}=e;return t(["Legit !"])},repeated_you:e=>{const{normalize:t}=e;return t(["a repetit vòstre estatut"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Pas mai de notificacions"])}}}},7028:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Nieznany status, szukam go…"])},favorited_you:e=>{const{normalize:t}=e;return t(["dodał(-a) twój status do ulubionych"])},followed_you:e=>{const{normalize:t}=e;return t(["obserwuje cię"])},load_older:e=>{const{normalize:t}=e;return t(["Załaduj starsze powiadomienia"])},notifications:e=>{const{normalize:t}=e;return t(["Powiadomienia"])},read:e=>{const{normalize:t}=e;return t(["Przeczytane!"])},repeated_you:e=>{const{normalize:t}=e;return t(["powtórzył(-a) twój status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Nie masz więcej powiadomień"])},migrated_to:e=>{const{normalize:t}=e;return t(["wyemigrował do"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["zareagował z ",r(n(0))])},follow_request:e=>{const{normalize:t}=e;return t(["chce ciebie obserwować"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Błąd pobierania powiadomień: ",r(n(0))])}}}},789:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Publicação desconhecida, a procurar…"])},favorited_you:e=>{const{normalize:t}=e;return t(["gostou do teu post"])},followed_you:e=>{const{normalize:t}=e;return t(["seguiu-te"])},load_older:e=>{const{normalize:t}=e;return t(["Carregar notificações antigas"])},notifications:e=>{const{normalize:t}=e;return t(["Notificações"])},read:e=>{const{normalize:t}=e;return t(["Lido!"])},repeated_you:e=>{const{normalize:t}=e;return t(["partilhou o teu post"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Sem mais notificações"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reagiu com ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["migrou para"])},follow_request:e=>{const{normalize:t}=e;return t(["quer seguir-te"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Erro ao obter notificações: ",r(n(0))])}}}},5032:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{followed_you:e=>{const{normalize:t}=e;return t(["te-a urmărit"])},notifications:e=>{const{normalize:t}=e;return t(["Notificări"])},read:e=>{const{normalize:t}=e;return t(["Citit!"])}}}},3460:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Неизвестный статус, ищем…"])},favorited_you:e=>{const{normalize:t}=e;return t(["нравится ваш статус"])},followed_you:e=>{const{normalize:t}=e;return t(["начал(а) читать вас"])},load_older:e=>{const{normalize:t}=e;return t(["Загрузить старые уведомления"])},notifications:e=>{const{normalize:t}=e;return t(["Уведомления"])},read:e=>{const{normalize:t}=e;return t(["Прочесть"])},repeated_you:e=>{const{normalize:t}=e;return t(["повторил(а) ваш статус"])},follow_request:e=>{const{normalize:t}=e;return t(["хочет читать вас"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["добавил(а) реакцию: ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["перехал на"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Нет дальнейших уведомлений"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Ошибка при обновлении уведомлений: ",r(n(0))])}}}},6139:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Neznáma správa, dohľadávam ju…"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Chyba získavania upozornení: ",r(n(0))])},favorited_you:e=>{const{normalize:t}=e;return t(["si obľúbil tvoju správu"])},followed_you:e=>{const{normalize:t}=e;return t(["ťa nasleduje"])},follow_request:e=>{const{normalize:t}=e;return t(["ťa chce nasledovať"])},load_older:e=>{const{normalize:t}=e;return t(["Nahrať staršie upozornenia"])},notifications:e=>{const{normalize:t}=e;return t(["Upozornenia"])},read:e=>{const{normalize:t}=e;return t(["Prečítané!"])},repeated_you:e=>{const{normalize:t}=e;return t(["zopakoval tvoju správu"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Žiadne ďalšie upozornenia"])},migrated_to:e=>{const{normalize:t}=e;return t(["sa presťahoval na"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reagoval nasledovne ",r(n(0))])}}}},5751:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{}}},4389:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["未知的状态,正在搜索中…"])},favorited_you:e=>{const{normalize:t}=e;return t(["喜欢了你的状态"])},followed_you:e=>{const{normalize:t}=e;return t(["关注了你"])},load_older:e=>{const{normalize:t}=e;return t(["加载更早的通知"])},notifications:e=>{const{normalize:t}=e;return t(["通知"])},read:e=>{const{normalize:t}=e;return t(["已阅!"])},repeated_you:e=>{const{normalize:t}=e;return t(["转发了你的状态"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["没有更多的通知"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["作出了 ",r(n(0))," 的反应"])},migrated_to:e=>{const{normalize:t}=e;return t(["迁移到了"])},follow_request:e=>{const{normalize:t}=e;return t(["想要关注你"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["取得通知时发生错误:",r(n(0))])},poll_ended:e=>{const{normalize:t}=e;return t(["投票结束了"])},submitted_report:e=>{const{normalize:t}=e;return t(["提交举报"])}}}},5573:e=>{"use strict";var t=/["'&<>]/;e.exports=function(e){var r,n=""+e,o=t.exec(n);if(!o)return n;var a="",i=0,s=0;for(i=o.index;i<n.length;i++){switch(n.charCodeAt(i)){case 34:r="&quot;";break;case 38:r="&amp;";break;case 39:r="&#39;";break;case 60:r="&lt;";break;case 62:r="&gt;";break;default:continue}s!==i&&(a+=n.substring(s,i)),s=i+1,a+=r}return s!==i?a+n.substring(s,i):a}},9483:function(e,t){!function(r){"object"==typeof t&&void 0!==e?e.exports=r():"function"==typeof define&&define.amd?define([],r):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).localforage=r()}((function(){return function e(t,r,n){function o(i,s){if(!r[i]){if(!t[i]){var l="function"==typeof require&&require;if(!s&&l)return l(i,!0);if(a)return a(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var u=r[i]={exports:{}};t[i][0].call(u.exports,(function(e){return o(t[i][1][e]||e)}),u,u.exports,e,t,r,n)}return r[i].exports}for(var a="function"==typeof require&&require,i=0;i<n.length;i++)o(n[i]);return o}({1:[function(e,t,r){(function(e){"use strict";var r,n,o=e.MutationObserver||e.WebKitMutationObserver;if(o){var a=0,i=new o(u),s=e.document.createTextNode("");i.observe(s,{characterData:!0}),r=function(){s.data=a=++a%2}}else if(e.setImmediate||void 0===e.MessageChannel)r="document"in e&&"onreadystatechange"in e.document.createElement("script")?function(){var t=e.document.createElement("script");t.onreadystatechange=function(){u(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(u,0)};else{var l=new e.MessageChannel;l.port1.onmessage=u,r=function(){l.port2.postMessage(0)}}var c=[];function u(){var e,t;n=!0;for(var r=c.length;r;){for(t=c,c=[],e=-1;++e<r;)t[e]();r=c.length}n=!1}t.exports=function(e){1!==c.push(e)||n||r()}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(e,t,r){"use strict";var n=e(1);function o(){}var a={},i=["REJECTED"],s=["FULFILLED"],l=["PENDING"];function c(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=l,this.queue=[],this.outcome=void 0,e!==o&&d(this,e)}function u(e,t,r){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(e,t,r){n((function(){var n;try{n=t(r)}catch(t){return a.reject(e,t)}n===e?a.reject(e,new TypeError("Cannot resolve promise with itself")):a.resolve(e,n)}))}function p(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments)}}function d(e,t){var r=!1;function n(t){r||(r=!0,a.reject(e,t))}function o(t){r||(r=!0,a.resolve(e,t))}var i=m((function(){t(o,n)}));"error"===i.status&&n(i.value)}function m(e,t){var r={};try{r.value=e(t),r.status="success"}catch(e){r.status="error",r.value=e}return r}t.exports=c,c.prototype.catch=function(e){return this.then(null,e)},c.prototype.then=function(e,t){if("function"!=typeof e&&this.state===s||"function"!=typeof t&&this.state===i)return this;var r=new this.constructor(o);return this.state!==l?f(r,this.state===s?e:t,this.outcome):this.queue.push(new u(r,e,t)),r},u.prototype.callFulfilled=function(e){a.resolve(this.promise,e)},u.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},u.prototype.callRejected=function(e){a.reject(this.promise,e)},u.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},a.resolve=function(e,t){var r=m(p,t);if("error"===r.status)return a.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=s,e.outcome=t;for(var o=-1,i=e.queue.length;++o<i;)e.queue[o].callFulfilled(t)}return e},a.reject=function(e,t){e.state=i,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},c.resolve=function(e){return e instanceof this?e:a.resolve(new this(o),e)},c.reject=function(e){var t=new this(o);return a.reject(t,e)},c.all=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var r=e.length,n=!1;if(!r)return this.resolve([]);for(var i=new Array(r),s=0,l=-1,c=new this(o);++l<r;)u(e[l],l);return c;function u(e,o){t.resolve(e).then((function(e){i[o]=e,++s!==r||n||(n=!0,a.resolve(c,i))}),(function(e){n||(n=!0,a.reject(c,e))}))}},c.race=function(e){if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var t=e.length,r=!1;if(!t)return this.resolve([]);for(var n,i=-1,s=new this(o);++i<t;)n=e[i],this.resolve(n).then((function(e){r||(r=!0,a.resolve(s,e))}),(function(e){r||(r=!0,a.reject(s,e))}));return s}},{1:1}],3:[function(e,t,r){(function(t){"use strict";"function"!=typeof t.Promise&&(t.Promise=e(2))}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2}],4:[function(e,t,r){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!=typeof mozIndexedDB)return mozIndexedDB;if("undefined"!=typeof OIndexedDB)return OIndexedDB;if("undefined"!=typeof msIndexedDB)return msIndexedDB}catch(e){return}}();function a(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(o){if("TypeError"!==o.name)throw o;for(var r=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),n=0;n<e.length;n+=1)r.append(e[n]);return r.getBlob(t.type)}}"undefined"==typeof Promise&&e(3);var i=Promise;function s(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function l(e,t,r){"function"==typeof t&&e.then(t),"function"==typeof r&&e.catch(r)}function c(e){return"string"!=typeof e&&(console.warn(e+" used as a key, but it is not a string."),e=String(e)),e}function u(){if(arguments.length&&"function"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}var f="local-forage-detect-blob-support",p=void 0,d={},m=Object.prototype.toString,h="readonly",_="readwrite";function v(e){var t=d[e.name],r={};r.promise=new i((function(e,t){r.resolve=e,r.reject=t})),t.deferredOperations.push(r),t.dbReady?t.dbReady=t.dbReady.then((function(){return r.promise})):t.dbReady=r.promise}function g(e){var t=d[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function y(e,t){var r=d[e.name].deferredOperations.pop();if(r)return r.reject(t),r.promise}function b(e,t){return new i((function(r,n){if(d[e.name]=d[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return r(e.db);v(e),e.db.close()}var a=[e.name];t&&a.push(e.version);var i=o.open.apply(o,a);t&&(i.onupgradeneeded=function(t){var r=i.result;try{r.createObjectStore(e.storeName),t.oldVersion<=1&&r.createObjectStore(f)}catch(r){if("ConstraintError"!==r.name)throw r;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),i.onerror=function(e){e.preventDefault(),n(i.error)},i.onsuccess=function(){var t=i.result;t.onversionchange=function(e){e.target.close()},r(t),g(e)}}))}function w(e){return b(e,!1)}function x(e){return b(e,!0)}function z(e,t){if(!e.db)return!0;var r=!e.db.objectStoreNames.contains(e.storeName),n=e.version<e.db.version,o=e.version>e.db.version;if(n&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),o||r){if(r){var a=e.db.version+1;a>e.version&&(e.version=a)}return!0}return!1}function k(e){return a([function(e){for(var t=e.length,r=new ArrayBuffer(t),n=new Uint8Array(r),o=0;o<t;o++)n[o]=e.charCodeAt(o);return r}(atob(e.data))],{type:e.type})}function O(e){return e&&e.__local_forage_encoded_blob}function j(e){var t=this,r=t._initReady().then((function(){var e=d[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return l(r,e,e),r}function E(e,t,r,n){void 0===n&&(n=1);try{var o=e.db.transaction(e.storeName,t);r(null,o)}catch(o){if(n>0&&(!e.db||"InvalidStateError"===o.name||"NotFoundError"===o.name))return i.resolve().then((function(){if(!e.db||"NotFoundError"===o.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),x(e)})).then((function(){return function(e){v(e);for(var t=d[e.name],r=t.forages,n=0;n<r.length;n++){var o=r[n];o._dbInfo.db&&(o._dbInfo.db.close(),o._dbInfo.db=null)}return e.db=null,w(e).then((function(t){return e.db=t,z(e)?x(e):t})).then((function(n){e.db=t.db=n;for(var o=0;o<r.length;o++)r[o]._dbInfo.db=n})).catch((function(t){throw y(e,t),t}))}(e).then((function(){E(e,t,r,n-1)}))})).catch(r);r(o)}}var I={_driver:"asyncStorage",_initStorage:function(e){var t=this,r={db:null};if(e)for(var n in e)r[n]=e[n];var o=d[r.name];o||(o={forages:[],db:null,dbReady:null,deferredOperations:[]},d[r.name]=o),o.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=j);var a=[];function s(){return i.resolve()}for(var l=0;l<o.forages.length;l++){var c=o.forages[l];c!==t&&a.push(c._initReady().catch(s))}var u=o.forages.slice(0);return i.all(a).then((function(){return r.db=o.db,w(r)})).then((function(e){return r.db=e,z(r,t._defaultConfig.version)?x(r):e})).then((function(e){r.db=o.db=e,t._dbInfo=r;for(var n=0;n<u.length;n++){var a=u[n];a!==t&&(a._dbInfo.db=r.db,a._dbInfo.version=r.version)}}))},_support:function(){try{if(!o||!o.open)return!1;var e="undefined"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(e){return!1}}(),iterate:function(e,t){var r=this,n=new i((function(t,n){r.ready().then((function(){E(r._dbInfo,h,(function(o,a){if(o)return n(o);try{var i=a.objectStore(r._dbInfo.storeName).openCursor(),s=1;i.onsuccess=function(){var r=i.result;if(r){var n=r.value;O(n)&&(n=k(n));var o=e(n,r.key,s++);void 0!==o?t(o):r.continue()}else t()},i.onerror=function(){n(i.error)}}catch(e){n(e)}}))})).catch(n)}));return s(n,t),n},getItem:function(e,t){var r=this;e=c(e);var n=new i((function(t,n){r.ready().then((function(){E(r._dbInfo,h,(function(o,a){if(o)return n(o);try{var i=a.objectStore(r._dbInfo.storeName).get(e);i.onsuccess=function(){var e=i.result;void 0===e&&(e=null),O(e)&&(e=k(e)),t(e)},i.onerror=function(){n(i.error)}}catch(e){n(e)}}))})).catch(n)}));return s(n,t),n},setItem:function(e,t,r){var n=this;e=c(e);var o=new i((function(r,o){var s;n.ready().then((function(){return s=n._dbInfo,"[object Blob]"===m.call(t)?function(e){return"boolean"==typeof p?i.resolve(p):function(e){return new i((function(t){var r=e.transaction(f,_),n=a([""]);r.objectStore(f).put(n,"key"),r.onabort=function(e){e.preventDefault(),e.stopPropagation(),t(!1)},r.oncomplete=function(){var e=navigator.userAgent.match(/Chrome\/(\d+)/),r=navigator.userAgent.match(/Edge\//);t(r||!e||parseInt(e[1],10)>=43)}})).catch((function(){return!1}))}(e).then((function(e){return p=e}))}(s.db).then((function(e){return e?t:(r=t,new i((function(e,t){var n=new FileReader;n.onerror=t,n.onloadend=function(t){var n=btoa(t.target.result||"");e({__local_forage_encoded_blob:!0,data:n,type:r.type})},n.readAsBinaryString(r)})));var r})):t})).then((function(t){E(n._dbInfo,_,(function(a,i){if(a)return o(a);try{var s=i.objectStore(n._dbInfo.storeName);null===t&&(t=void 0);var l=s.put(t,e);i.oncomplete=function(){void 0===t&&(t=null),r(t)},i.onabort=i.onerror=function(){var e=l.error?l.error:l.transaction.error;o(e)}}catch(e){o(e)}}))})).catch(o)}));return s(o,r),o},removeItem:function(e,t){var r=this;e=c(e);var n=new i((function(t,n){r.ready().then((function(){E(r._dbInfo,_,(function(o,a){if(o)return n(o);try{var i=a.objectStore(r._dbInfo.storeName).delete(e);a.oncomplete=function(){t()},a.onerror=function(){n(i.error)},a.onabort=function(){var e=i.error?i.error:i.transaction.error;n(e)}}catch(e){n(e)}}))})).catch(n)}));return s(n,t),n},clear:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){E(t._dbInfo,_,(function(n,o){if(n)return r(n);try{var a=o.objectStore(t._dbInfo.storeName).clear();o.oncomplete=function(){e()},o.onabort=o.onerror=function(){var e=a.error?a.error:a.transaction.error;r(e)}}catch(e){r(e)}}))})).catch(r)}));return s(r,e),r},length:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){E(t._dbInfo,h,(function(n,o){if(n)return r(n);try{var a=o.objectStore(t._dbInfo.storeName).count();a.onsuccess=function(){e(a.result)},a.onerror=function(){r(a.error)}}catch(e){r(e)}}))})).catch(r)}));return s(r,e),r},key:function(e,t){var r=this,n=new i((function(t,n){e<0?t(null):r.ready().then((function(){E(r._dbInfo,h,(function(o,a){if(o)return n(o);try{var i=a.objectStore(r._dbInfo.storeName),s=!1,l=i.openKeyCursor();l.onsuccess=function(){var r=l.result;r?0===e||s?t(r.key):(s=!0,r.advance(e)):t(null)},l.onerror=function(){n(l.error)}}catch(e){n(e)}}))})).catch(n)}));return s(n,t),n},keys:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){E(t._dbInfo,h,(function(n,o){if(n)return r(n);try{var a=o.objectStore(t._dbInfo.storeName).openKeyCursor(),i=[];a.onsuccess=function(){var t=a.result;t?(i.push(t.key),t.continue()):e(i)},a.onerror=function(){r(a.error)}}catch(e){r(e)}}))})).catch(r)}));return s(r,e),r},dropInstance:function(e,t){t=u.apply(this,arguments);var r=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||r.name,e.storeName=e.storeName||r.storeName);var n,a=this;if(e.name){var l=e.name===r.name&&a._dbInfo.db,c=l?i.resolve(a._dbInfo.db):w(e).then((function(t){var r=d[e.name],n=r.forages;r.db=t;for(var o=0;o<n.length;o++)n[o]._dbInfo.db=t;return t}));n=e.storeName?c.then((function(t){if(t.objectStoreNames.contains(e.storeName)){var r=t.version+1;v(e);var n=d[e.name],a=n.forages;t.close();for(var s=0;s<a.length;s++){var l=a[s];l._dbInfo.db=null,l._dbInfo.version=r}var c=new i((function(t,n){var a=o.open(e.name,r);a.onerror=function(e){a.result.close(),n(e)},a.onupgradeneeded=function(){a.result.deleteObjectStore(e.storeName)},a.onsuccess=function(){var e=a.result;e.close(),t(e)}}));return c.then((function(e){n.db=e;for(var t=0;t<a.length;t++){var r=a[t];r._dbInfo.db=e,g(r._dbInfo)}})).catch((function(t){throw(y(e,t)||i.resolve()).catch((function(){})),t}))}})):c.then((function(t){v(e);var r=d[e.name],n=r.forages;t.close();for(var a=0;a<n.length;a++)n[a]._dbInfo.db=null;var s=new i((function(t,r){var n=o.deleteDatabase(e.name);n.onerror=function(){var e=n.result;e&&e.close(),r(n.error)},n.onblocked=function(){console.warn('dropInstance blocked for database "'+e.name+'" until all open connections are closed')},n.onsuccess=function(){var e=n.result;e&&e.close(),t(e)}}));return s.then((function(e){r.db=e;for(var t=0;t<n.length;t++)g(n[t]._dbInfo)})).catch((function(t){throw(y(e,t)||i.resolve()).catch((function(){})),t}))}))}else n=i.reject("Invalid arguments");return s(n,t),n}},S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",N=/^~~local_forage_type~([^~]+)~/,L="__lfsc__:",R=L.length,F="arbf",A="blob",T="si08",C="ui08",P="uic8",D="si16",M="si32",W="ur16",U="ui32",$="fl32",V="fl64",B=R+F.length,q=Object.prototype.toString;function H(e){var t,r,n,o,a,i=.75*e.length,s=e.length,l=0;"="===e[e.length-1]&&(i--,"="===e[e.length-2]&&i--);var c=new ArrayBuffer(i),u=new Uint8Array(c);for(t=0;t<s;t+=4)r=S.indexOf(e[t]),n=S.indexOf(e[t+1]),o=S.indexOf(e[t+2]),a=S.indexOf(e[t+3]),u[l++]=r<<2|n>>4,u[l++]=(15&n)<<4|o>>2,u[l++]=(3&o)<<6|63&a;return c}function G(e){var t,r=new Uint8Array(e),n="";for(t=0;t<r.length;t+=3)n+=S[r[t]>>2],n+=S[(3&r[t])<<4|r[t+1]>>4],n+=S[(15&r[t+1])<<2|r[t+2]>>6],n+=S[63&r[t+2]];return r.length%3==2?n=n.substring(0,n.length-1)+"=":r.length%3==1&&(n=n.substring(0,n.length-2)+"=="),n}var Y={serialize:function(e,t){var r="";if(e&&(r=q.call(e)),e&&("[object ArrayBuffer]"===r||e.buffer&&"[object ArrayBuffer]"===q.call(e.buffer))){var n,o=L;e instanceof ArrayBuffer?(n=e,o+=F):(n=e.buffer,"[object Int8Array]"===r?o+=T:"[object Uint8Array]"===r?o+=C:"[object Uint8ClampedArray]"===r?o+=P:"[object Int16Array]"===r?o+=D:"[object Uint16Array]"===r?o+=W:"[object Int32Array]"===r?o+=M:"[object Uint32Array]"===r?o+=U:"[object Float32Array]"===r?o+=$:"[object Float64Array]"===r?o+=V:t(new Error("Failed to get type for BinaryArray"))),t(o+G(n))}else if("[object Blob]"===r){var a=new FileReader;a.onload=function(){var r="~~local_forage_type~"+e.type+"~"+G(this.result);t("__lfsc__:blob"+r)},a.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(r){console.error("Couldn't convert value into a JSON string: ",e),t(null,r)}},deserialize:function(e){if(e.substring(0,R)!==L)return JSON.parse(e);var t,r=e.substring(B),n=e.substring(R,B);if(n===A&&N.test(r)){var o=r.match(N);t=o[1],r=r.substring(o[0].length)}var i=H(r);switch(n){case F:return i;case A:return a([i],{type:t});case T:return new Int8Array(i);case C:return new Uint8Array(i);case P:return new Uint8ClampedArray(i);case D:return new Int16Array(i);case W:return new Uint16Array(i);case M:return new Int32Array(i);case U:return new Uint32Array(i);case $:return new Float32Array(i);case V:return new Float64Array(i);default:throw new Error("Unkown type: "+n)}},stringToBuffer:H,bufferToString:G};function X(e,t,r,n){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],r,n)}function K(e,t,r,n,o,a){e.executeSql(r,n,o,(function(e,i){i.code===i.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,s){s.rows.length?a(e,i):X(e,t,(function(){e.executeSql(r,n,o,a)}),a)}),a):a(e,i)}),a)}function J(e,t,r,n){var o=this;e=c(e);var a=new i((function(a,i){o.ready().then((function(){void 0===t&&(t=null);var s=t,l=o._dbInfo;l.serializer.serialize(t,(function(t,c){c?i(c):l.db.transaction((function(r){K(r,l,"INSERT OR REPLACE INTO "+l.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){a(s)}),(function(e,t){i(t)}))}),(function(t){if(t.code===t.QUOTA_ERR){if(n>0)return void a(J.apply(o,[e,s,r,n-1]));i(t)}}))}))})).catch(i)}));return s(a,r),a}function Q(e){return new i((function(t,r){e.transaction((function(n){n.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],(function(r,n){for(var o=[],a=0;a<n.rows.length;a++)o.push(n.rows.item(a).name);t({db:e,storeNames:o})}),(function(e,t){r(t)}))}),(function(e){r(e)}))}))}var Z={_driver:"webSQLStorage",_initStorage:function(e){var t=this,r={db:null};if(e)for(var n in e)r[n]="string"!=typeof e[n]?e[n].toString():e[n];var o=new i((function(e,n){try{r.db=openDatabase(r.name,String(r.version),r.description,r.size)}catch(e){return n(e)}r.db.transaction((function(o){X(o,r,(function(){t._dbInfo=r,e()}),(function(e,t){n(t)}))}),n)}));return r.serializer=Y,o},_support:"function"==typeof openDatabase,iterate:function(e,t){var r=this,n=new i((function(t,n){r.ready().then((function(){var o=r._dbInfo;o.db.transaction((function(r){K(r,o,"SELECT * FROM "+o.storeName,[],(function(r,n){for(var a=n.rows,i=a.length,s=0;s<i;s++){var l=a.item(s),c=l.value;if(c&&(c=o.serializer.deserialize(c)),void 0!==(c=e(c,l.key,s+1)))return void t(c)}t()}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,t),n},getItem:function(e,t){var r=this;e=c(e);var n=new i((function(t,n){r.ready().then((function(){var o=r._dbInfo;o.db.transaction((function(r){K(r,o,"SELECT * FROM "+o.storeName+" WHERE key = ? LIMIT 1",[e],(function(e,r){var n=r.rows.length?r.rows.item(0).value:null;n&&(n=o.serializer.deserialize(n)),t(n)}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,t),n},setItem:function(e,t,r){return J.apply(this,[e,t,r,1])},removeItem:function(e,t){var r=this;e=c(e);var n=new i((function(t,n){r.ready().then((function(){var o=r._dbInfo;o.db.transaction((function(r){K(r,o,"DELETE FROM "+o.storeName+" WHERE key = ?",[e],(function(){t()}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,t),n},clear:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){var n=t._dbInfo;n.db.transaction((function(t){K(t,n,"DELETE FROM "+n.storeName,[],(function(){e()}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,e),r},length:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){var n=t._dbInfo;n.db.transaction((function(t){K(t,n,"SELECT COUNT(key) as c FROM "+n.storeName,[],(function(t,r){var n=r.rows.item(0).c;e(n)}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,e),r},key:function(e,t){var r=this,n=new i((function(t,n){r.ready().then((function(){var o=r._dbInfo;o.db.transaction((function(r){K(r,o,"SELECT key FROM "+o.storeName+" WHERE id = ? LIMIT 1",[e+1],(function(e,r){var n=r.rows.length?r.rows.item(0).key:null;t(n)}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,t),n},keys:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){var n=t._dbInfo;n.db.transaction((function(t){K(t,n,"SELECT key FROM "+n.storeName,[],(function(t,r){for(var n=[],o=0;o<r.rows.length;o++)n.push(r.rows.item(o).key);e(n)}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,e),r},dropInstance:function(e,t){t=u.apply(this,arguments);var r=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||r.name,e.storeName=e.storeName||r.storeName);var n,o=this;return s(n=e.name?new i((function(t){var n;n=e.name===r.name?o._dbInfo.db:openDatabase(e.name,"","",0),e.storeName?t({db:n,storeNames:[e.storeName]}):t(Q(n))})).then((function(e){return new i((function(t,r){e.db.transaction((function(n){function o(e){return new i((function(t,r){n.executeSql("DROP TABLE IF EXISTS "+e,[],(function(){t()}),(function(e,t){r(t)}))}))}for(var a=[],s=0,l=e.storeNames.length;s<l;s++)a.push(o(e.storeNames[s]));i.all(a).then((function(){t()})).catch((function(e){r(e)}))}),(function(e){r(e)}))}))})):i.reject("Invalid arguments"),t),n}};function ee(e,t){var r=e.name+"/";return e.storeName!==t.storeName&&(r+=e.storeName+"/"),r}var te={_driver:"localStorageWrapper",_initStorage:function(e){var t={};if(e)for(var r in e)t[r]=e[r];return t.keyPrefix=ee(e,this._defaultConfig),!function(){var e="_localforage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch(e){return!0}}()||localStorage.length>0?(this._dbInfo=t,t.serializer=Y,i.resolve()):i.reject()},_support:function(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}(),iterate:function(e,t){var r=this,n=r.ready().then((function(){for(var t=r._dbInfo,n=t.keyPrefix,o=n.length,a=localStorage.length,i=1,s=0;s<a;s++){var l=localStorage.key(s);if(0===l.indexOf(n)){var c=localStorage.getItem(l);if(c&&(c=t.serializer.deserialize(c)),void 0!==(c=e(c,l.substring(o),i++)))return c}}}));return s(n,t),n},getItem:function(e,t){var r=this;e=c(e);var n=r.ready().then((function(){var t=r._dbInfo,n=localStorage.getItem(t.keyPrefix+e);return n&&(n=t.serializer.deserialize(n)),n}));return s(n,t),n},setItem:function(e,t,r){var n=this;e=c(e);var o=n.ready().then((function(){void 0===t&&(t=null);var r=t;return new i((function(o,a){var i=n._dbInfo;i.serializer.serialize(t,(function(t,n){if(n)a(n);else try{localStorage.setItem(i.keyPrefix+e,t),o(r)}catch(e){"QuotaExceededError"!==e.name&&"NS_ERROR_DOM_QUOTA_REACHED"!==e.name||a(e),a(e)}}))}))}));return s(o,r),o},removeItem:function(e,t){var r=this;e=c(e);var n=r.ready().then((function(){var t=r._dbInfo;localStorage.removeItem(t.keyPrefix+e)}));return s(n,t),n},clear:function(e){var t=this,r=t.ready().then((function(){for(var e=t._dbInfo.keyPrefix,r=localStorage.length-1;r>=0;r--){var n=localStorage.key(r);0===n.indexOf(e)&&localStorage.removeItem(n)}}));return s(r,e),r},length:function(e){var t=this.keys().then((function(e){return e.length}));return s(t,e),t},key:function(e,t){var r=this,n=r.ready().then((function(){var t,n=r._dbInfo;try{t=localStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(n.keyPrefix.length)),t}));return s(n,t),n},keys:function(e){var t=this,r=t.ready().then((function(){for(var e=t._dbInfo,r=localStorage.length,n=[],o=0;o<r;o++){var a=localStorage.key(o);0===a.indexOf(e.keyPrefix)&&n.push(a.substring(e.keyPrefix.length))}return n}));return s(r,e),r},dropInstance:function(e,t){if(t=u.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){var r=this.config();e.name=e.name||r.name,e.storeName=e.storeName||r.storeName}var n,o=this;return s(n=e.name?new i((function(t){e.storeName?t(ee(e,o._defaultConfig)):t(e.name+"/")})).then((function(e){for(var t=localStorage.length-1;t>=0;t--){var r=localStorage.key(t);0===r.indexOf(e)&&localStorage.removeItem(r)}})):i.reject("Invalid arguments"),t),n}},re=function(e,t){for(var r,n,o=e.length,a=0;a<o;){if((r=e[a])===(n=t)||"number"==typeof r&&"number"==typeof n&&isNaN(r)&&isNaN(n))return!0;a++}return!1},ne=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},oe={},ae={},ie={INDEXEDDB:I,WEBSQL:Z,LOCALSTORAGE:te},se=[ie.INDEXEDDB._driver,ie.WEBSQL._driver,ie.LOCALSTORAGE._driver],le=["dropInstance"],ce=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(le),ue={description:"",driver:se.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function fe(e,t){e[t]=function(){var r=arguments;return e.ready().then((function(){return e[t].apply(e,r)}))}}function pe(){for(var e=1;e<arguments.length;e++){var t=arguments[e];if(t)for(var r in t)t.hasOwnProperty(r)&&(ne(t[r])?arguments[0][r]=t[r].slice():arguments[0][r]=t[r])}return arguments[0]}var de=function(){function e(t){for(var r in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),ie)if(ie.hasOwnProperty(r)){var n=ie[r],o=n._driver;this[r]=o,oe[o]||this.defineDriver(n)}this._defaultConfig=pe({},ue),this._config=pe({},this._defaultConfig,t),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch((function(){}))}return e.prototype.config=function(e){if("object"===(void 0===e?"undefined":n(e))){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var t in e){if("storeName"===t&&(e[t]=e[t].replace(/\W/g,"_")),"version"===t&&"number"!=typeof e[t])return new Error("Database version must be a number.");this._config[t]=e[t]}return!("driver"in e)||!e.driver||this.setDriver(this._config.driver)}return"string"==typeof e?this._config[e]:this._config},e.prototype.defineDriver=function(e,t,r){var n=new i((function(t,r){try{var n=e._driver,o=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!e._driver)return void r(o);for(var a=ce.concat("_initStorage"),l=0,c=a.length;l<c;l++){var u=a[l];if((!re(le,u)||e[u])&&"function"!=typeof e[u])return void r(o)}!function(){for(var t=function(e){return function(){var t=new Error("Method "+e+" is not implemented by the current driver"),r=i.reject(t);return s(r,arguments[arguments.length-1]),r}},r=0,n=le.length;r<n;r++){var o=le[r];e[o]||(e[o]=t(o))}}();var f=function(r){oe[n]&&console.info("Redefining LocalForage driver: "+n),oe[n]=e,ae[n]=r,t()};"_support"in e?e._support&&"function"==typeof e._support?e._support().then(f,r):f(!!e._support):f(!0)}catch(e){r(e)}}));return l(n,t,r),n},e.prototype.driver=function(){return this._driver||null},e.prototype.getDriver=function(e,t,r){var n=oe[e]?i.resolve(oe[e]):i.reject(new Error("Driver not found."));return l(n,t,r),n},e.prototype.getSerializer=function(e){var t=i.resolve(Y);return l(t,e),t},e.prototype.ready=function(e){var t=this,r=t._driverSet.then((function(){return null===t._ready&&(t._ready=t._initDriver()),t._ready}));return l(r,e,e),r},e.prototype.setDriver=function(e,t,r){var n=this;ne(e)||(e=[e]);var o=this._getSupportedDrivers(e);function a(){n._config.driver=n.driver()}function s(e){return n._extend(e),a(),n._ready=n._initStorage(n._config),n._ready}var c=null!==this._driverSet?this._driverSet.catch((function(){return i.resolve()})):i.resolve();return this._driverSet=c.then((function(){var e=o[0];return n._dbInfo=null,n._ready=null,n.getDriver(e).then((function(e){n._driver=e._driver,a(),n._wrapLibraryMethodsWithReady(),n._initDriver=function(e){return function(){var t=0;return function r(){for(;t<e.length;){var o=e[t];return t++,n._dbInfo=null,n._ready=null,n.getDriver(o).then(s).catch(r)}a();var l=new Error("No available storage method found.");return n._driverSet=i.reject(l),n._driverSet}()}}(o)}))})).catch((function(){a();var e=new Error("No available storage method found.");return n._driverSet=i.reject(e),n._driverSet})),l(this._driverSet,t,r),this._driverSet},e.prototype.supports=function(e){return!!ae[e]},e.prototype._extend=function(e){pe(this,e)},e.prototype._getSupportedDrivers=function(e){for(var t=[],r=0,n=e.length;r<n;r++){var o=e[r];this.supports(o)&&t.push(o)}return t},e.prototype._wrapLibraryMethodsWithReady=function(){for(var e=0,t=ce.length;e<t;e++)fe(this,ce[e])},e.prototype.createInstance=function(t){return new e(t)},e}(),me=new de;t.exports=me},{3:3}]},{},[4])(4)}))},8552:(e,t,r)=>{var n=r(852)(r(5639),"DataView");e.exports=n},1989:(e,t,r)=>{var n=r(1789),o=r(401),a=r(7667),i=r(1327),s=r(1866);function l(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}l.prototype.clear=n,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=s,e.exports=l},8407:(e,t,r)=>{var n=r(7040),o=r(4125),a=r(2117),i=r(3755),s=r(4705);function l(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}l.prototype.clear=n,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=s,e.exports=l},7071:(e,t,r)=>{var n=r(852)(r(5639),"Map");e.exports=n},3369:(e,t,r)=>{var n=r(4785),o=r(1285),a=r(6e3),i=r(9916),s=r(5265);function l(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}l.prototype.clear=n,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=s,e.exports=l},3818:(e,t,r)=>{var n=r(852)(r(5639),"Promise");e.exports=n},8525:(e,t,r)=>{var n=r(852)(r(5639),"Set");e.exports=n},8668:(e,t,r)=>{var n=r(3369),o=r(619),a=r(2385);function i(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new n;++t<r;)this.add(e[t])}i.prototype.add=i.prototype.push=o,i.prototype.has=a,e.exports=i},6384:(e,t,r)=>{var n=r(8407),o=r(7465),a=r(3779),i=r(7599),s=r(4758),l=r(4309);function c(e){var t=this.__data__=new n(e);this.size=t.size}c.prototype.clear=o,c.prototype.delete=a,c.prototype.get=i,c.prototype.has=s,c.prototype.set=l,e.exports=c},2705:(e,t,r)=>{var n=r(5639).Symbol;e.exports=n},1149:(e,t,r)=>{var n=r(5639).Uint8Array;e.exports=n},577:(e,t,r)=>{var n=r(852)(r(5639),"WeakMap");e.exports=n},6874:e=>{e.exports=function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}},4963:e=>{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length,o=0,a=[];++r<n;){var i=e[r];t(i,r,e)&&(a[o++]=i)}return a}},4636:(e,t,r)=>{var n=r(2545),o=r(5694),a=r(1469),i=r(4144),s=r(5776),l=r(6719),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var r=a(e),u=!r&&o(e),f=!r&&!u&&i(e),p=!r&&!u&&!f&&l(e),d=r||u||f||p,m=d?n(e.length,String):[],h=m.length;for(var _ in e)!t&&!c.call(e,_)||d&&("length"==_||f&&("offset"==_||"parent"==_)||p&&("buffer"==_||"byteLength"==_||"byteOffset"==_)||s(_,h))||m.push(_);return m}},9932:e=>{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}},2488:e=>{e.exports=function(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}},2908:e=>{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}},8470:(e,t,r)=>{var n=r(7813);e.exports=function(e,t){for(var r=e.length;r--;)if(n(e[r][0],t))return r;return-1}},9881:(e,t,r)=>{var n=r(7816),o=r(9291)(n);e.exports=o},760:(e,t,r)=>{var n=r(9881);e.exports=function(e,t){var r=[];return n(e,(function(e,n,o){t(e,n,o)&&r.push(e)})),r}},1848:e=>{e.exports=function(e,t,r,n){for(var o=e.length,a=r+(n?1:-1);n?a--:++a<o;)if(t(e[a],a,e))return a;return-1}},1078:(e,t,r)=>{var n=r(2488),o=r(7285);e.exports=function e(t,r,a,i,s){var l=-1,c=t.length;for(a||(a=o),s||(s=[]);++l<c;){var u=t[l];r>0&&a(u)?r>1?e(u,r-1,a,i,s):n(s,u):i||(s[s.length]=u)}return s}},8483:(e,t,r)=>{var n=r(5063)();e.exports=n},7816:(e,t,r)=>{var n=r(8483),o=r(3674);e.exports=function(e,t){return e&&n(e,t,o)}},7786:(e,t,r)=>{var n=r(1811),o=r(327);e.exports=function(e,t){for(var r=0,a=(t=n(t,e)).length;null!=e&&r<a;)e=e[o(t[r++])];return r&&r==a?e:void 0}},8866:(e,t,r)=>{var n=r(2488),o=r(1469);e.exports=function(e,t,r){var a=t(e);return o(e)?a:n(a,r(e))}},4239:(e,t,r)=>{var n=r(2705),o=r(9607),a=r(2333),i=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?o(e):a(e)}},13:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},2118:(e,t,r)=>{var n=r(1848),o=r(2722),a=r(2351);e.exports=function(e,t,r){return t==t?a(e,t,r):n(e,o,r)}},9454:(e,t,r)=>{var n=r(4239),o=r(7005);e.exports=function(e){return o(e)&&"[object Arguments]"==n(e)}},939:(e,t,r)=>{var n=r(2492),o=r(7005);e.exports=function e(t,r,a,i,s){return t===r||(null==t||null==r||!o(t)&&!o(r)?t!=t&&r!=r:n(t,r,a,i,e,s))}},2492:(e,t,r)=>{var n=r(6384),o=r(7114),a=r(8351),i=r(6096),s=r(4160),l=r(1469),c=r(4144),u=r(6719),f="[object Arguments]",p="[object Array]",d="[object Object]",m=Object.prototype.hasOwnProperty;e.exports=function(e,t,r,h,_,v){var g=l(e),y=l(t),b=g?p:s(e),w=y?p:s(t),x=(b=b==f?d:b)==d,z=(w=w==f?d:w)==d,k=b==w;if(k&&c(e)){if(!c(t))return!1;g=!0,x=!1}if(k&&!x)return v||(v=new n),g||u(e)?o(e,t,r,h,_,v):a(e,t,b,r,h,_,v);if(!(1&r)){var O=x&&m.call(e,"__wrapped__"),j=z&&m.call(t,"__wrapped__");if(O||j){var E=O?e.value():e,I=j?t.value():t;return v||(v=new n),_(E,I,r,h,v)}}return!!k&&(v||(v=new n),i(e,t,r,h,_,v))}},2958:(e,t,r)=>{var n=r(6384),o=r(939);e.exports=function(e,t,r,a){var i=r.length,s=i,l=!a;if(null==e)return!s;for(e=Object(e);i--;){var c=r[i];if(l&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++i<s;){var u=(c=r[i])[0],f=e[u],p=c[1];if(l&&c[2]){if(void 0===f&&!(u in e))return!1}else{var d=new n;if(a)var m=a(f,p,u,e,t,d);if(!(void 0===m?o(p,f,3,a,d):m))return!1}}return!0}},2722:e=>{e.exports=function(e){return e!=e}},8458:(e,t,r)=>{var n=r(3560),o=r(5346),a=r(3218),i=r(346),s=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,u=l.toString,f=c.hasOwnProperty,p=RegExp("^"+u.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!a(e)||o(e))&&(n(e)?p:s).test(i(e))}},8749:(e,t,r)=>{var n=r(4239),o=r(1780),a=r(7005),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return a(e)&&o(e.length)&&!!i[n(e)]}},7206:(e,t,r)=>{var n=r(1573),o=r(6432),a=r(6557),i=r(1469),s=r(9601);e.exports=function(e){return"function"==typeof e?e:null==e?a:"object"==typeof e?i(e)?o(e[0],e[1]):n(e):s(e)}},280:(e,t,r)=>{var n=r(5726),o=r(6916),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!n(e))return o(e);var t=[];for(var r in Object(e))a.call(e,r)&&"constructor"!=r&&t.push(r);return t}},9199:(e,t,r)=>{var n=r(9881),o=r(8612);e.exports=function(e,t){var r=-1,a=o(e)?Array(e.length):[];return n(e,(function(e,n,o){a[++r]=t(e,n,o)})),a}},1573:(e,t,r)=>{var n=r(2958),o=r(1499),a=r(2634);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?a(t[0][0],t[0][1]):function(r){return r===e||n(r,e,t)}}},6432:(e,t,r)=>{var n=r(939),o=r(7361),a=r(9095),i=r(5403),s=r(9162),l=r(2634),c=r(327);e.exports=function(e,t){return i(e)&&s(t)?l(c(e),t):function(r){var i=o(r,e);return void 0===i&&i===t?a(r,e):n(t,i,3)}}},2689:(e,t,r)=>{var n=r(9932),o=r(7786),a=r(7206),i=r(9199),s=r(1131),l=r(7518),c=r(5022),u=r(6557),f=r(1469);e.exports=function(e,t,r){t=t.length?n(t,(function(e){return f(e)?function(t){return o(t,1===e.length?e[0]:e)}:e})):[u];var p=-1;t=n(t,l(a));var d=i(e,(function(e,r,o){return{criteria:n(t,(function(t){return t(e)})),index:++p,value:e}}));return s(d,(function(e,t){return c(e,t,r)}))}},371:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},9152:(e,t,r)=>{var n=r(7786);e.exports=function(e){return function(t){return n(t,e)}}},5976:(e,t,r)=>{var n=r(6557),o=r(5357),a=r(61);e.exports=function(e,t){return a(o(e,t,n),e+"")}},6560:(e,t,r)=>{var n=r(5703),o=r(8777),a=r(6557),i=o?function(e,t){return o(e,"toString",{configurable:!0,enumerable:!1,value:n(t),writable:!0})}:a;e.exports=i},1131:e=>{e.exports=function(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}},2545:e=>{e.exports=function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}},531:(e,t,r)=>{var n=r(2705),o=r(9932),a=r(1469),i=r(3448),s=n?n.prototype:void 0,l=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(a(t))return o(t,e)+"";if(i(t))return l?l.call(t):"";var r=t+"";return"0"==r&&1/t==-1/0?"-0":r}},7561:(e,t,r)=>{var n=r(7990),o=/^\s+/;e.exports=function(e){return e?e.slice(0,n(e)+1).replace(o,""):e}},7518:e=>{e.exports=function(e){return function(t){return e(t)}}},7415:(e,t,r)=>{var n=r(9932);e.exports=function(e,t){return n(t,(function(t){return e[t]}))}},4757:e=>{e.exports=function(e,t){return e.has(t)}},1811:(e,t,r)=>{var n=r(1469),o=r(5403),a=r(5514),i=r(9833);e.exports=function(e,t){return n(e)?e:o(e,t)?[e]:a(i(e))}},6393:(e,t,r)=>{var n=r(3448);e.exports=function(e,t){if(e!==t){var r=void 0!==e,o=null===e,a=e==e,i=n(e),s=void 0!==t,l=null===t,c=t==t,u=n(t);if(!l&&!u&&!i&&e>t||i&&s&&c&&!l&&!u||o&&s&&c||!r&&c||!a)return 1;if(!o&&!i&&!u&&e<t||u&&r&&a&&!o&&!i||l&&r&&a||!s&&a||!c)return-1}return 0}},5022:(e,t,r)=>{var n=r(6393);e.exports=function(e,t,r){for(var o=-1,a=e.criteria,i=t.criteria,s=a.length,l=r.length;++o<s;){var c=n(a[o],i[o]);if(c)return o>=l?c:c*("desc"==r[o]?-1:1)}return e.index-t.index}},4429:(e,t,r)=>{var n=r(5639)["__core-js_shared__"];e.exports=n},9291:(e,t,r)=>{var n=r(8612);e.exports=function(e,t){return function(r,o){if(null==r)return r;if(!n(r))return e(r,o);for(var a=r.length,i=t?a:-1,s=Object(r);(t?i--:++i<a)&&!1!==o(s[i],i,s););return r}}},5063:e=>{e.exports=function(e){return function(t,r,n){for(var o=-1,a=Object(t),i=n(t),s=i.length;s--;){var l=i[e?s:++o];if(!1===r(a[l],l,a))break}return t}}},8777:(e,t,r)=>{var n=r(852),o=function(){try{var e=n(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=o},7114:(e,t,r)=>{var n=r(8668),o=r(2908),a=r(4757);e.exports=function(e,t,r,i,s,l){var c=1&r,u=e.length,f=t.length;if(u!=f&&!(c&&f>u))return!1;var p=l.get(e),d=l.get(t);if(p&&d)return p==t&&d==e;var m=-1,h=!0,_=2&r?new n:void 0;for(l.set(e,t),l.set(t,e);++m<u;){var v=e[m],g=t[m];if(i)var y=c?i(g,v,m,t,e,l):i(v,g,m,e,t,l);if(void 0!==y){if(y)continue;h=!1;break}if(_){if(!o(t,(function(e,t){if(!a(_,t)&&(v===e||s(v,e,r,i,l)))return _.push(t)}))){h=!1;break}}else if(v!==g&&!s(v,g,r,i,l)){h=!1;break}}return l.delete(e),l.delete(t),h}},8351:(e,t,r)=>{var n=r(2705),o=r(1149),a=r(7813),i=r(7114),s=r(8776),l=r(1814),c=n?n.prototype:void 0,u=c?c.valueOf:void 0;e.exports=function(e,t,r,n,c,f,p){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!f(new o(e),new o(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var d=s;case"[object Set]":var m=1&n;if(d||(d=l),e.size!=t.size&&!m)return!1;var h=p.get(e);if(h)return h==t;n|=2,p.set(e,t);var _=i(d(e),d(t),n,c,f,p);return p.delete(e),_;case"[object Symbol]":if(u)return u.call(e)==u.call(t)}return!1}},6096:(e,t,r)=>{var n=r(8234),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,r,a,i,s){var l=1&r,c=n(e),u=c.length;if(u!=n(t).length&&!l)return!1;for(var f=u;f--;){var p=c[f];if(!(l?p in t:o.call(t,p)))return!1}var d=s.get(e),m=s.get(t);if(d&&m)return d==t&&m==e;var h=!0;s.set(e,t),s.set(t,e);for(var _=l;++f<u;){var v=e[p=c[f]],g=t[p];if(a)var y=l?a(g,v,p,t,e,s):a(v,g,p,e,t,s);if(!(void 0===y?v===g||i(v,g,r,a,s):y)){h=!1;break}_||(_="constructor"==p)}if(h&&!_){var b=e.constructor,w=t.constructor;b==w||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof w&&w instanceof w||(h=!1)}return s.delete(e),s.delete(t),h}},1957:(e,t,r)=>{var n="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;e.exports=n},8234:(e,t,r)=>{var n=r(8866),o=r(9551),a=r(3674);e.exports=function(e){return n(e,a,o)}},5050:(e,t,r)=>{var n=r(7019);e.exports=function(e,t){var r=e.__data__;return n(t)?r["string"==typeof t?"string":"hash"]:r.map}},1499:(e,t,r)=>{var n=r(9162),o=r(3674);e.exports=function(e){for(var t=o(e),r=t.length;r--;){var a=t[r],i=e[a];t[r]=[a,i,n(i)]}return t}},852:(e,t,r)=>{var n=r(8458),o=r(7801);e.exports=function(e,t){var r=o(e,t);return n(r)?r:void 0}},9607:(e,t,r)=>{var n=r(2705),o=Object.prototype,a=o.hasOwnProperty,i=o.toString,s=n?n.toStringTag:void 0;e.exports=function(e){var t=a.call(e,s),r=e[s];try{e[s]=void 0;var n=!0}catch(e){}var o=i.call(e);return n&&(t?e[s]=r:delete e[s]),o}},9551:(e,t,r)=>{var n=r(4963),o=r(479),a=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,s=i?function(e){return null==e?[]:(e=Object(e),n(i(e),(function(t){return a.call(e,t)})))}:o;e.exports=s},4160:(e,t,r)=>{var n=r(8552),o=r(7071),a=r(3818),i=r(8525),s=r(577),l=r(4239),c=r(346),u="[object Map]",f="[object Promise]",p="[object Set]",d="[object WeakMap]",m="[object DataView]",h=c(n),_=c(o),v=c(a),g=c(i),y=c(s),b=l;(n&&b(new n(new ArrayBuffer(1)))!=m||o&&b(new o)!=u||a&&b(a.resolve())!=f||i&&b(new i)!=p||s&&b(new s)!=d)&&(b=function(e){var t=l(e),r="[object Object]"==t?e.constructor:void 0,n=r?c(r):"";if(n)switch(n){case h:return m;case _:return u;case v:return f;case g:return p;case y:return d}return t}),e.exports=b},7801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},222:(e,t,r)=>{var n=r(1811),o=r(5694),a=r(1469),i=r(5776),s=r(1780),l=r(327);e.exports=function(e,t,r){for(var c=-1,u=(t=n(t,e)).length,f=!1;++c<u;){var p=l(t[c]);if(!(f=null!=e&&r(e,p)))break;e=e[p]}return f||++c!=u?f:!!(u=null==e?0:e.length)&&s(u)&&i(p,u)&&(a(e)||o(e))}},1789:(e,t,r)=>{var n=r(4536);e.exports=function(){this.__data__=n?n(null):{},this.size=0}},401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},7667:(e,t,r)=>{var n=r(4536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(n){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(t,e)?t[e]:void 0}},1327:(e,t,r)=>{var n=r(4536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return n?void 0!==t[e]:o.call(t,e)}},1866:(e,t,r)=>{var n=r(4536);e.exports=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=n&&void 0===t?"__lodash_hash_undefined__":t,this}},7285:(e,t,r)=>{var n=r(2705),o=r(5694),a=r(1469),i=n?n.isConcatSpreadable:void 0;e.exports=function(e){return a(e)||o(e)||!!(i&&e&&e[i])}},5776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e<r}},6612:(e,t,r)=>{var n=r(7813),o=r(8612),a=r(5776),i=r(3218);e.exports=function(e,t,r){if(!i(r))return!1;var s=typeof t;return!!("number"==s?o(r)&&a(t,r.length):"string"==s&&t in r)&&n(r[t],e)}},5403:(e,t,r)=>{var n=r(1469),o=r(3448),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(n(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!o(e))||i.test(e)||!a.test(e)||null!=t&&e in Object(t)}},7019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},5346:(e,t,r)=>{var n,o=r(4429),a=(n=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";e.exports=function(e){return!!a&&a in e}},5726:e=>{var t=Object.prototype;e.exports=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}},9162:(e,t,r)=>{var n=r(3218);e.exports=function(e){return e==e&&!n(e)}},7040:e=>{e.exports=function(){this.__data__=[],this.size=0}},4125:(e,t,r)=>{var n=r(8470),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,r=n(t,e);return!(r<0||(r==t.length-1?t.pop():o.call(t,r,1),--this.size,0))}},2117:(e,t,r)=>{var n=r(8470);e.exports=function(e){var t=this.__data__,r=n(t,e);return r<0?void 0:t[r][1]}},3755:(e,t,r)=>{var n=r(8470);e.exports=function(e){return n(this.__data__,e)>-1}},4705:(e,t,r)=>{var n=r(8470);e.exports=function(e,t){var r=this.__data__,o=n(r,e);return o<0?(++this.size,r.push([e,t])):r[o][1]=t,this}},4785:(e,t,r)=>{var n=r(1989),o=r(8407),a=r(7071);e.exports=function(){this.size=0,this.__data__={hash:new n,map:new(a||o),string:new n}}},1285:(e,t,r)=>{var n=r(5050);e.exports=function(e){var t=n(this,e).delete(e);return this.size-=t?1:0,t}},6e3:(e,t,r)=>{var n=r(5050);e.exports=function(e){return n(this,e).get(e)}},9916:(e,t,r)=>{var n=r(5050);e.exports=function(e){return n(this,e).has(e)}},5265:(e,t,r)=>{var n=r(5050);e.exports=function(e,t){var r=n(this,e),o=r.size;return r.set(e,t),this.size+=r.size==o?0:1,this}},8776:e=>{e.exports=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e,n){r[++t]=[n,e]})),r}},2634:e=>{e.exports=function(e,t){return function(r){return null!=r&&r[e]===t&&(void 0!==t||e in Object(r))}}},4523:(e,t,r)=>{var n=r(8306);e.exports=function(e){var t=n(e,(function(e){return 500===r.size&&r.clear(),e})),r=t.cache;return t}},4536:(e,t,r)=>{var n=r(852)(Object,"create");e.exports=n},6916:(e,t,r)=>{var n=r(5569)(Object.keys,Object);e.exports=n},1167:(e,t,r)=>{e=r.nmd(e);var n=r(1957),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,i=a&&a.exports===o&&n.process,s=function(){try{return a&&a.require&&a.require("util").types||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=s},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(r){return e(t(r))}}},5357:(e,t,r)=>{var n=r(6874),o=Math.max;e.exports=function(e,t,r){return t=o(void 0===t?e.length-1:t,0),function(){for(var a=arguments,i=-1,s=o(a.length-t,0),l=Array(s);++i<s;)l[i]=a[t+i];i=-1;for(var c=Array(t+1);++i<t;)c[i]=a[i];return c[t]=r(l),n(e,this,c)}}},5639:(e,t,r)=>{var n=r(1957),o="object"==typeof self&&self&&self.Object===Object&&self,a=n||o||Function("return this")();e.exports=a},619:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},2385:e=>{e.exports=function(e){return this.__data__.has(e)}},1814:e=>{e.exports=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}},61:(e,t,r)=>{var n=r(6560),o=r(1275)(n);e.exports=o},1275:e=>{var t=Date.now;e.exports=function(e){var r=0,n=0;return function(){var o=t(),a=16-(o-n);if(n=o,a>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}}},7465:(e,t,r)=>{var n=r(8407);e.exports=function(){this.__data__=new n,this.size=0}},3779:e=>{e.exports=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}},7599:e=>{e.exports=function(e){return this.__data__.get(e)}},4758:e=>{e.exports=function(e){return this.__data__.has(e)}},4309:(e,t,r)=>{var n=r(8407),o=r(7071),a=r(3369);e.exports=function(e,t){var r=this.__data__;if(r instanceof n){var i=r.__data__;if(!o||i.length<199)return i.push([e,t]),this.size=++r.size,this;r=this.__data__=new a(i)}return r.set(e,t),this.size=r.size,this}},2351:e=>{e.exports=function(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}},5514:(e,t,r)=>{var n=r(4523),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,i=n((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(o,(function(e,r,n,o){t.push(n?o.replace(a,"$1"):r||e)})),t}));e.exports=i},327:(e,t,r)=>{var n=r(3448);e.exports=function(e){if("string"==typeof e||n(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},7990:e=>{var t=/\s/;e.exports=function(e){for(var r=e.length;r--&&t.test(e.charAt(r)););return r}},5703:e=>{e.exports=function(e){return function(){return e}}},7813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},3105:(e,t,r)=>{var n=r(4963),o=r(760),a=r(7206),i=r(1469);e.exports=function(e,t){return(i(e)?n:o)(e,a(t,3))}},7361:(e,t,r)=>{var n=r(7786);e.exports=function(e,t,r){var o=null==e?void 0:n(e,t);return void 0===o?r:o}},9095:(e,t,r)=>{var n=r(13),o=r(222);e.exports=function(e,t){return null!=e&&o(e,t,n)}},6557:e=>{e.exports=function(e){return e}},4721:(e,t,r)=>{var n=r(2118),o=r(8612),a=r(7037),i=r(554),s=r(2628),l=Math.max;e.exports=function(e,t,r,c){e=o(e)?e:s(e),r=r&&!c?i(r):0;var u=e.length;return r<0&&(r=l(u+r,0)),a(e)?r<=u&&e.indexOf(t,r)>-1:!!u&&n(e,t,r)>-1}},5694:(e,t,r)=>{var n=r(9454),o=r(7005),a=Object.prototype,i=a.hasOwnProperty,s=a.propertyIsEnumerable,l=n(function(){return arguments}())?n:function(e){return o(e)&&i.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},1469:e=>{var t=Array.isArray;e.exports=t},8612:(e,t,r)=>{var n=r(3560),o=r(1780);e.exports=function(e){return null!=e&&o(e.length)&&!n(e)}},4144:(e,t,r)=>{e=r.nmd(e);var n=r(5639),o=r(5062),a=t&&!t.nodeType&&t,i=a&&e&&!e.nodeType&&e,s=i&&i.exports===a?n.Buffer:void 0,l=(s?s.isBuffer:void 0)||o;e.exports=l},3560:(e,t,r)=>{var n=r(4239),o=r(3218);e.exports=function(e){if(!o(e))return!1;var t=n(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},1780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},3218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},7005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},7037:(e,t,r)=>{var n=r(4239),o=r(1469),a=r(7005);e.exports=function(e){return"string"==typeof e||!o(e)&&a(e)&&"[object String]"==n(e)}},3448:(e,t,r)=>{var n=r(4239),o=r(7005);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==n(e)}},6719:(e,t,r)=>{var n=r(8749),o=r(7518),a=r(1167),i=a&&a.isTypedArray,s=i?o(i):n;e.exports=s},3674:(e,t,r)=>{var n=r(4636),o=r(280),a=r(8612);e.exports=function(e){return a(e)?n(e):o(e)}},8306:(e,t,r)=>{var n=r(3369);function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,o=t?t.apply(this,n):n[0],a=r.cache;if(a.has(o))return a.get(o);var i=e.apply(this,n);return r.cache=a.set(o,i)||a,i};return r.cache=new(o.Cache||n),r}o.Cache=n,e.exports=o},9601:(e,t,r)=>{var n=r(371),o=r(9152),a=r(5403),i=r(327);e.exports=function(e){return a(e)?n(i(e)):o(e)}},9734:(e,t,r)=>{var n=r(1078),o=r(2689),a=r(5976),i=r(6612),s=a((function(e,t){if(null==e)return[];var r=t.length;return r>1&&i(e,t[0],t[1])?t=[]:r>2&&i(t[0],t[1],t[2])&&(t=[t[0]]),o(e,n(t,1),[])}));e.exports=s},479:e=>{e.exports=function(){return[]}},5062:e=>{e.exports=function(){return!1}},8601:(e,t,r)=>{var n=r(4841);e.exports=function(e){return e?Infinity===(e=n(e))||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},554:(e,t,r)=>{var n=r(8601);e.exports=function(e){var t=n(e),r=t%1;return t==t?r?t-r:t:0}},4841:(e,t,r)=>{var n=r(7561),o=r(3218),a=r(3448),i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(a(e))return NaN;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=n(e);var r=s.test(e);return r||l.test(e)?c(e.slice(2),r?2:8):i.test(e)?NaN:+e}},9833:(e,t,r)=>{var n=r(531);e.exports=function(e){return null==e?"":n(e)}},2628:(e,t,r)=>{var n=r(7415),o=r(3674);e.exports=function(e){return null==e?[]:n(e,o(e))}},8490:(e,t,r)=>{"use strict";var n=r(7673),o=r(8575),a=r(7529);const i=parseInt({NODE_ENV:"production"}.PARSE_LINK_HEADER_MAXLEN)||2e3,s=null!={NODE_ENV:"production"}.PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED;function l(e){return e&&e.rel}function c(e,t){return t.rel.split(/\s+/).forEach((function(r){e[r]=a(t,{rel:r})})),e}function u(e,t){var r=t.match(/\s*(.+)\s*=\s*"?([^"]+)"?/);return r&&(e[r[1]]=r[2]),e}function f(e){try{var t=e.match(/<?([^>]*)>(.*)/),r=t[1],i=t[2].split(";"),s=o.parse(r),l=n.parse(s.query);i.shift();var c=i.reduce(u,{});return(c=a(l,c)).url=r,c}catch(e){return null}}e.exports=function(e){return function(e){if(!e)return!1;if(e.length>i){if(s)throw new Error("Input string too long, it should be under "+i+" characters.");return!1}return!0}(e)?e.split(/,\s*</).map(f).filter(l).reduce(c,{}):null}},3689:(e,t,r)=>{"use strict";r.r(t),r.d(t,{decode:()=>v,default:()=>w,encode:()=>g,toASCII:()=>b,toUnicode:()=>y,ucs2decode:()=>d,ucs2encode:()=>m});const n=2147483647,o=36,a=/^xn--/,i=/[^\0-\x7E]/,s=/[\x2E\u3002\uFF0E\uFF61]/g,l={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},c=Math.floor,u=String.fromCharCode;function f(e){throw new RangeError(l[e])}function p(e,t){const r=e.split("@");let n="";r.length>1&&(n=r[0]+"@",e=r[1]);const o=function(e,t){const r=[];let n=e.length;for(;n--;)r[n]=t(e[n]);return r}((e=e.replace(s,".")).split("."),t).join(".");return n+o}function d(e){const t=[];let r=0;const n=e.length;for(;r<n;){const o=e.charCodeAt(r++);if(o>=55296&&o<=56319&&r<n){const n=e.charCodeAt(r++);56320==(64512&n)?t.push(((1023&o)<<10)+(1023&n)+65536):(t.push(o),r--)}else t.push(o)}return t}const m=e=>String.fromCodePoint(...e),h=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},_=function(e,t,r){let n=0;for(e=r?c(e/700):e>>1,e+=c(e/t);e>455;n+=o)e=c(e/35);return c(n+36*e/(e+38))},v=function(e){const t=[],r=e.length;let a=0,i=128,s=72,l=e.lastIndexOf("-");l<0&&(l=0);for(let r=0;r<l;++r)e.charCodeAt(r)>=128&&f("not-basic"),t.push(e.charCodeAt(r));for(let p=l>0?l+1:0;p<r;){let l=a;for(let t=1,i=o;;i+=o){p>=r&&f("invalid-input");const l=(u=e.charCodeAt(p++))-48<10?u-22:u-65<26?u-65:u-97<26?u-97:o;(l>=o||l>c((n-a)/t))&&f("overflow"),a+=l*t;const d=i<=s?1:i>=s+26?26:i-s;if(l<d)break;const m=o-d;t>c(n/m)&&f("overflow"),t*=m}const d=t.length+1;s=_(a-l,d,0==l),c(a/d)>n-i&&f("overflow"),i+=c(a/d),a%=d,t.splice(a++,0,i)}var u;return String.fromCodePoint(...t)},g=function(e){const t=[];let r=(e=d(e)).length,a=128,i=0,s=72;for(const r of e)r<128&&t.push(u(r));let l=t.length,p=l;for(l&&t.push("-");p<r;){let r=n;for(const t of e)t>=a&&t<r&&(r=t);const d=p+1;r-a>c((n-i)/d)&&f("overflow"),i+=(r-a)*d,a=r;for(const r of e)if(r<a&&++i>n&&f("overflow"),r==a){let e=i;for(let r=o;;r+=o){const n=r<=s?1:r>=s+26?26:r-s;if(e<n)break;const a=e-n,i=o-n;t.push(u(h(n+a%i,0))),e=c(a/i)}t.push(u(h(e,0))),s=_(i,d,p==l),i=0,++p}++i,++a}return t.join("")},y=function(e){return p(e,(function(e){return a.test(e)?v(e.slice(4).toLowerCase()):e}))},b=function(e){return p(e,(function(e){return i.test(e)?"xn--"+g(e):e}))},w={version:"2.1.0",ucs2:{decode:d,encode:m},decode:v,encode:g,toASCII:b,toUnicode:y}},2587:e=>{"use strict";function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,r,n,o){r=r||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var i=/\+/g;e=e.split(r);var s=1e3;o&&"number"==typeof o.maxKeys&&(s=o.maxKeys);var l=e.length;s>0&&l>s&&(l=s);for(var c=0;c<l;++c){var u,f,p,d,m=e[c].replace(i,"%20"),h=m.indexOf(n);h>=0?(u=m.substr(0,h),f=m.substr(h+1)):(u=m,f=""),p=decodeURIComponent(u),d=decodeURIComponent(f),t(a,p)?Array.isArray(a[p])?a[p].push(d):a[p]=[a[p],d]:a[p]=d}return a}},2361:e=>{"use strict";var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,r,n,o){return r=r||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(o){var a=encodeURIComponent(t(o))+n;return Array.isArray(e[o])?e[o].map((function(e){return a+encodeURIComponent(t(e))})).join(r):a+encodeURIComponent(t(e[o]))})).join(r):o?encodeURIComponent(t(o))+n+encodeURIComponent(t(e)):""}},7673:(e,t,r)=>{"use strict";t.decode=t.parse=r(2587),t.encode=t.stringify=r(2361)},8575:(e,t,r)=>{"use strict";var n=r(3689),o=r(2502);function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=y,t.resolve=function(e,t){return y(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?y(e,!1,!0).resolveObject(t):t},t.format=function(e){return o.isString(e)&&(e=y(e)),e instanceof a?e.format():a.prototype.format.call(e)},t.Url=a;var i=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),u=["'"].concat(c),f=["%","/","?",";","#"].concat(u),p=["/","?","#"],d=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,h={javascript:!0,"javascript:":!0},_={javascript:!0,"javascript:":!0},v={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},g=r(7673);function y(e,t,r){if(e&&o.isObject(e)&&e instanceof a)return e;var n=new a;return n.parse(e,t,r),n}a.prototype.parse=function(e,t,r){if(!o.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=-1!==a&&a<e.indexOf("#")?"?":"#",c=e.split(s);c[0]=c[0].replace(/\\/g,"/");var y=e=c.join(s);if(y=y.trim(),!r&&1===e.split("#").length){var b=l.exec(y);if(b)return this.path=y,this.href=y,this.pathname=b[1],b[2]?(this.search=b[2],this.query=t?g.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var w=i.exec(y);if(w){var x=(w=w[0]).toLowerCase();this.protocol=x,y=y.substr(w.length)}if(r||w||y.match(/^\/\/[^@\/]+@[^@\/]+/)){var z="//"===y.substr(0,2);!z||w&&_[w]||(y=y.substr(2),this.slashes=!0)}if(!_[w]&&(z||w&&!v[w])){for(var k,O,j=-1,E=0;E<p.length;E++)-1!==(I=y.indexOf(p[E]))&&(-1===j||I<j)&&(j=I);for(-1!==(O=-1===j?y.lastIndexOf("@"):y.lastIndexOf("@",j))&&(k=y.slice(0,O),y=y.slice(O+1),this.auth=decodeURIComponent(k)),j=-1,E=0;E<f.length;E++){var I;-1!==(I=y.indexOf(f[E]))&&(-1===j||I<j)&&(j=I)}-1===j&&(j=y.length),this.host=y.slice(0,j),y=y.slice(j),this.parseHost(),this.hostname=this.hostname||"";var S="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!S)for(var N=this.hostname.split(/\./),L=(E=0,N.length);E<L;E++){var R=N[E];if(R&&!R.match(d)){for(var F="",A=0,T=R.length;A<T;A++)R.charCodeAt(A)>127?F+="x":F+=R[A];if(!F.match(d)){var C=N.slice(0,E),P=N.slice(E+1),D=R.match(m);D&&(C.push(D[1]),P.unshift(D[2])),P.length&&(y="/"+P.join(".")+y),this.hostname=C.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),S||(this.hostname=n.toASCII(this.hostname));var M=this.port?":"+this.port:"",W=this.hostname||"";this.host=W+M,this.href+=this.host,S&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==y[0]&&(y="/"+y))}if(!h[x])for(E=0,L=u.length;E<L;E++){var U=u[E];if(-1!==y.indexOf(U)){var $=encodeURIComponent(U);$===U&&($=escape(U)),y=y.split(U).join($)}}var V=y.indexOf("#");-1!==V&&(this.hash=y.substr(V),y=y.slice(0,V));var B=y.indexOf("?");if(-1!==B?(this.search=y.substr(B),this.query=y.substr(B+1),t&&(this.query=g.parse(this.query)),y=y.slice(0,B)):t&&(this.search="",this.query={}),y&&(this.pathname=y),v[x]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){M=this.pathname||"";var q=this.search||"";this.path=M+q}return this.href=this.format(),this},a.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",a=!1,i="";this.host?a=e+this.host:this.hostname&&(a=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(a+=":"+this.port)),this.query&&o.isObject(this.query)&&Object.keys(this.query).length&&(i=g.stringify(this.query));var s=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||v[t])&&!1!==a?(a="//"+(a||""),r&&"/"!==r.charAt(0)&&(r="/"+r)):a||(a=""),n&&"#"!==n.charAt(0)&&(n="#"+n),s&&"?"!==s.charAt(0)&&(s="?"+s),t+a+(r=r.replace(/[?#]/g,(function(e){return encodeURIComponent(e)})))+(s=s.replace("#","%23"))+n},a.prototype.resolve=function(e){return this.resolveObject(y(e,!1,!0)).format()},a.prototype.resolveObject=function(e){if(o.isString(e)){var t=new a;t.parse(e,!1,!0),e=t}for(var r=new a,n=Object.keys(this),i=0;i<n.length;i++){var s=n[i];r[s]=this[s]}if(r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var l=Object.keys(e),c=0;c<l.length;c++){var u=l[c];"protocol"!==u&&(r[u]=e[u])}return v[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!v[e.protocol]){for(var f=Object.keys(e),p=0;p<f.length;p++){var d=f[p];r[d]=e[d]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||_[e.protocol])r.pathname=e.pathname;else{for(var m=(e.pathname||"").split("/");m.length&&!(e.host=m.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==m[0]&&m.unshift(""),m.length<2&&m.unshift(""),r.pathname=m.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var h=r.pathname||"",g=r.search||"";r.path=h+g}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var y=r.pathname&&"/"===r.pathname.charAt(0),b=e.host||e.pathname&&"/"===e.pathname.charAt(0),w=b||y||r.host&&e.pathname,x=w,z=r.pathname&&r.pathname.split("/")||[],k=(m=e.pathname&&e.pathname.split("/")||[],r.protocol&&!v[r.protocol]);if(k&&(r.hostname="",r.port=null,r.host&&(""===z[0]?z[0]=r.host:z.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===m[0]?m[0]=e.host:m.unshift(e.host)),e.host=null),w=w&&(""===m[0]||""===z[0])),b)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,z=m;else if(m.length)z||(z=[]),z.pop(),z=z.concat(m),r.search=e.search,r.query=e.query;else if(!o.isNullOrUndefined(e.search))return k&&(r.hostname=r.host=z.shift(),(S=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=S.shift(),r.host=r.hostname=S.shift())),r.search=e.search,r.query=e.query,o.isNull(r.pathname)&&o.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!z.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var O=z.slice(-1)[0],j=(r.host||e.host||z.length>1)&&("."===O||".."===O)||""===O,E=0,I=z.length;I>=0;I--)"."===(O=z[I])?z.splice(I,1):".."===O?(z.splice(I,1),E++):E&&(z.splice(I,1),E--);if(!w&&!x)for(;E--;E)z.unshift("..");!w||""===z[0]||z[0]&&"/"===z[0].charAt(0)||z.unshift(""),j&&"/"!==z.join("/").substr(-1)&&z.push("");var S,N=""===z[0]||z[0]&&"/"===z[0].charAt(0);return k&&(r.hostname=r.host=N?"":z.length?z.shift():"",(S=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=S.shift(),r.host=r.hostname=S.shift())),(w=w||r.host&&z.length)&&!N&&z.unshift(""),z.length?r.pathname=z.join("/"):(r.pathname=null,r.path=null),o.isNull(r.pathname)&&o.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},a.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},2502:e=>{"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},7529:e=>{e.exports=function(){for(var e={},r=0;r<arguments.length;r++){var n=arguments[r];for(var o in n)t.call(n,o)&&(e[o]=n[o])}return e};var t=Object.prototype.hasOwnProperty},7061:(e,t,r)=>{var n=r(8698).default;function o(){"use strict";e.exports=o=function(){return t},e.exports.__esModule=!0,e.exports.default=e.exports;var t={},r=Object.prototype,a=r.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},s="function"==typeof Symbol?Symbol:{},l=s.iterator||"@@iterator",c=s.asyncIterator||"@@asyncIterator",u=s.toStringTag||"@@toStringTag";function f(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,r){return e[t]=r}}function p(e,t,r,n){var o=t&&t.prototype instanceof h?t:h,a=Object.create(o.prototype),s=new I(n||[]);return i(a,"_invoke",{value:k(e,r,s)}),a}function d(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=p;var m={};function h(){}function _(){}function v(){}var g={};f(g,l,(function(){return this}));var y=Object.getPrototypeOf,b=y&&y(y(S([])));b&&b!==r&&a.call(b,l)&&(g=b);var w=v.prototype=h.prototype=Object.create(g);function x(e){["next","throw","return"].forEach((function(t){f(e,t,(function(e){return this._invoke(t,e)}))}))}function z(e,t){function r(o,i,s,l){var c=d(e[o],e,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==n(f)&&a.call(f,"__await")?t.resolve(f.__await).then((function(e){r("next",e,s,l)}),(function(e){r("throw",e,s,l)})):t.resolve(f).then((function(e){u.value=e,s(u)}),(function(e){return r("throw",e,s,l)}))}l(c.arg)}var o;i(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,o){r(e,n,t,o)}))}return o=o?o.then(a,a):a()}})}function k(e,t,r){var n="suspendedStart";return function(o,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw a;return{value:void 0,done:!0}}for(r.method=o,r.arg=a;;){var i=r.delegate;if(i){var s=O(i,r);if(s){if(s===m)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=d(e,t,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===m)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),m;var o=d(n,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,m;var a=o.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,m):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,m)}function j(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function I(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(j,this),this.reset(!0)}function S(e){if(e){var t=e[l];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return n.next=n}}return{next:N}}function N(){return{value:void 0,done:!0}}return _.prototype=v,i(w,"constructor",{value:v,configurable:!0}),i(v,"constructor",{value:_,configurable:!0}),_.displayName=f(v,u,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===_||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,v):(e.__proto__=v,f(e,u,"GeneratorFunction")),e.prototype=Object.create(w),e},t.awrap=function(e){return{__await:e}},x(z.prototype),f(z.prototype,c,(function(){return this})),t.AsyncIterator=z,t.async=function(e,r,n,o,a){void 0===a&&(a=Promise);var i=new z(p(e,r,n,o),a);return t.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},x(w),f(w,u,"Generator"),f(w,l,(function(){return this})),f(w,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=S,I.prototype={constructor:I,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(E),!e)for(var t in this)"t"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,n){return i.type="throw",i.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(s&&l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var o=n;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,m):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),m},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),E(r),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:S(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),m}},t}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports},8698:e=>{function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},4687:(e,t,r)=>{var n=r(7061)();e.exports=n;try{regeneratorRuntime=n}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{"use strict";function e(e,t,r,n,o,a,i){try{var s=e[a](i),l=s.value}catch(e){return void r(e)}s.done?t(l):Promise.resolve(l).then(n,o)}function t(t){return function(){var r=this,n=arguments;return new Promise((function(o,a){var i=t.apply(r,n);function s(t){e(i,o,a,s,l,"next",t)}function l(t){e(i,o,a,s,l,"throw",t)}s(void 0)}))}}var n=r(4687),o=r.n(n),a=r(9483),i=r.n(a);function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function l(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==s(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!==s(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===s(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var c=r(5573),u=r.n(c),f=(r(8490),r(4721)),p=r.n(f),d=(r(9734),r(3105),["like","mention","repeat","pleroma:emoji_reaction","poll"]),m=function(e){return p()(d,e)},h=function(e,t){var r,n={tag:e.id},o=e.status,a=e.from_profile.name;switch(n.title=a,n.icon=e.from_profile.profile_image_url,e.type){case"like":r="favorited_you";break;case"repeat":r="repeated_you";break;case"follow":r="followed_you";break;case"move":r="migrated_to";break;case"follow_request":r="follow_request";break;case"pleroma:report":r="submitted_report";break;case"poll":r="poll_ended"}return"pleroma:emoji_reaction"===e.type?n.body=t.t("notifications.reacted_with",[e.emoji]):r?n.body=t.t("notifications."+r):m(e.type)&&(n.body=e.status.text),o&&o.attachments&&o.attachments.length>0&&!o.nsfw&&o.attachments[0].mimetype.startsWith("image/")&&(n.image=o.attachments[0].url),n};const _=2147483647,v=36,g=/^xn--/,y=/[\x2E\u3002\uFF0E\uFF61]/g,b={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},w=Math.floor;String.fromCharCode;function x(e){throw new RangeError(b[e])}function z(e,t){const r=e.split("@");let n="";r.length>1&&(n=r[0]+"@",e=r[1]);const o=function(e,t){const r=[];let n=e.length;for(;n--;)r[n]=t(e[n]);return r}((e=e.replace(y,".")).split("."),t).join(".");return n+o}const k=function(e,t,r){let n=0;for(e=r?w(e/700):e>>1,e+=w(e/t);e>455;n+=v)e=w(e/35);return w(n+36*e/(e+38))},O=function(e){const t=[],r=e.length;let n=0,o=128,a=72,i=e.lastIndexOf("-");i<0&&(i=0);for(let r=0;r<i;++r)e.charCodeAt(r)>=128&&x("not-basic"),t.push(e.charCodeAt(r));for(let l=i>0?i+1:0;l<r;){const i=n;for(let t=1,o=v;;o+=v){l>=r&&x("invalid-input");const i=(s=e.charCodeAt(l++))>=48&&s<58?s-48+26:s>=65&&s<91?s-65:s>=97&&s<123?s-97:v;i>=v&&x("invalid-input"),i>w((_-n)/t)&&x("overflow"),n+=i*t;const c=o<=a?1:o>=a+26?26:o-a;if(i<c)break;const u=v-c;t>w(_/u)&&x("overflow"),t*=u}const c=t.length+1;a=k(n-i,c,0==i),w(n/c)>_-o&&x("overflow"),o+=w(n/c),n%=c,t.splice(n++,0,o)}var s;return String.fromCodePoint(...t)},j=function(e){return z(e,(function(e){return g.test(e)?O(e.slice(4).toLowerCase()):e}))};function E(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function I(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?E(Object(r),!0).forEach((function(t){l(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):E(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var S=function(e){var t={},r=Object.prototype.hasOwnProperty.call(e,"acct"),n=r&&!Object.prototype.hasOwnProperty.call(e,"avatar");if(t.inLists=null,t.id=String(e.id),t._original=e,r){if(t.screen_name=e.acct,t.fqn=e.fqn,t.statusnet_profile_url=e.url,n)return t;if(t.emoji=e.emojis,t.name=u()(e.display_name),t.name_html=t.name,t.name_unescaped=e.display_name,t.description=e.note,t.description_html=e.note,t.fields=e.fields,t.fields_html=e.fields.map((function(e){return{name:u()(e.name),value:e.value}})),t.fields_text=e.fields.map((function(e){return{name:unescape(e.name.replace(/<[^>]*>/g,"")),value:unescape(e.value.replace(/<[^>]*>/g,""))}})),t.profile_image_url=e.avatar,t.profile_image_url_original=e.avatar,t.cover_photo=e.header,t.friends_count=e.following_count,t.bot=e.bot,e.pleroma){e.pleroma.settings_store&&(t.storage=e.pleroma.settings_store["pleroma-fe"]);var o=e.pleroma.relationship;t.background_image=e.pleroma.background_image,t.favicon=e.pleroma.favicon,t.token=e.pleroma.chat_token,o&&(t.relationship=o),t.allow_following_move=e.pleroma.allow_following_move,t.hide_follows=e.pleroma.hide_follows,t.hide_followers=e.pleroma.hide_followers,t.hide_follows_count=e.pleroma.hide_follows_count,t.hide_followers_count=e.pleroma.hide_followers_count,t.rights={moderator:e.pleroma.is_moderator,admin:e.pleroma.is_admin},t.rights.admin?t.role="admin":t.rights.moderator?t.role="moderator":t.role="member",t.birthday=e.pleroma.birthday,e.pleroma.privileges?t.privileges=e.pleroma.privileges:e.pleroma.is_admin?t.privileges=["users_read","users_manage_invites","users_manage_activation_state","users_manage_tags","users_manage_credentials","users_delete","messages_read","messages_delete","instances_delete","reports_manage_reports","moderation_log_read","announcements_manage_announcements","emoji_manage_emoji","statistics_read"]:e.pleroma.is_moderator?t.privileges=["messages_delete","reports_manage_reports"]:t.privileges=[]}e.source&&(t.description=e.source.note,t.default_scope=e.source.privacy,t.fields=e.source.fields,e.source.pleroma&&(t.no_rich_text=e.source.pleroma.no_rich_text,t.show_role=e.source.pleroma.show_role,t.discoverable=e.source.pleroma.discoverable,t.show_birthday=e.pleroma.show_birthday)),t.is_local=!t.screen_name.includes("@")}else t.screen_name=e.screen_name,t.name=e.name,t.name_html=e.name_html,t.description=e.description,t.description_html=e.description_html,t.profile_image_url=e.profile_image_url,t.profile_image_url_original=e.profile_image_url_original,t.cover_photo=e.cover_photo,t.friends_count=e.friends_count,t.statusnet_profile_url=e.statusnet_profile_url,t.is_local=e.is_local,t.role=e.role,t.show_role=e.show_role,e.rights&&(t.rights={moderator:e.rights.delete_others_notice,admin:e.rights.admin}),t.no_rich_text=e.no_rich_text,t.default_scope=e.default_scope,t.hide_follows=e.hide_follows,t.hide_followers=e.hide_followers,t.hide_follows_count=e.hide_follows_count,t.hide_followers_count=e.hide_followers_count,t.background_image=e.background_image,t.token=e.token,t.relationship={muting:e.muted,blocking:e.statusnet_blocking,followed_by:e.follows_you,following:e.following};if(t.created_at=new Date(e.created_at),t.locked=e.locked,t.followers_count=e.followers_count,t.statuses_count=e.statuses_count,e.pleroma&&(t.follow_request_count=e.pleroma.follow_request_count,t.tags=e.pleroma.tags,t.deactivated=void 0!==e.pleroma.is_active?!e.pleroma.is_active:e.pleroma.deactivated,t.notification_settings=e.pleroma.notification_settings,t.unread_chat_count=e.pleroma.unread_chat_count),t.tags=t.tags||[],t.rights=t.rights||{},t.notification_settings=t.notification_settings||{},t.screen_name_ui=t.screen_name,t.screen_name&&t.screen_name.includes("@")){var a=t.screen_name.split("@"),i=j(a[1]);i!==a[1]?(t.screen_name_ui_contains_non_ascii=!0,t.screen_name_ui=[a[0],i].join("@")):t.screen_name_ui_contains_non_ascii=!1}return t},N=function(e){var t={};return Object.prototype.hasOwnProperty.call(e,"oembed")?t.mimetype=e.mimetype:(t.mimetype=e.pleroma?e.pleroma.mime_type:e.type,t.meta=e.meta,t.id=e.id),t.url=e.url,t.large_thumb_url=e.preview_url,t.description=e.description,t},L=function e(t){var r,n={},o=Object.prototype.hasOwnProperty.call(t,"account");if(o){if(n.favorited=t.favourited,n.fave_num=t.favourites_count,n.repeated=t.reblogged,n.repeat_num=t.reblogs_count,n.bookmarked=t.bookmarked,n.type=t.reblog?"retweet":"status",n.nsfw=t.sensitive,n.raw_html=t.content,n.emojis=t.emojis,n.tags=t.tags,n.edited_at=t.edited_at,t.pleroma){var a=t.pleroma;n.text=a.content?t.pleroma.content["text/plain"]:t.content,n.summary=a.spoiler_text?t.pleroma.spoiler_text["text/plain"]:t.spoiler_text,n.statusnet_conversation_id=t.pleroma.conversation_id,n.is_local=a.local,n.in_reply_to_screen_name=t.pleroma.in_reply_to_account_acct,n.thread_muted=a.thread_muted,n.emoji_reactions=a.emoji_reactions,n.parent_visible=void 0===a.parent_visible||a.parent_visible}else n.text=t.content,n.summary=t.spoiler_text;n.in_reply_to_status_id=t.in_reply_to_id,n.in_reply_to_user_id=t.in_reply_to_account_id,n.replies_count=t.replies_count,"retweet"===n.type&&(n.retweeted_status=e(t.reblog)),n.summary_raw_html=u()(t.spoiler_text),n.external_url=t.url,n.poll=t.poll,n.poll&&(n.poll.options=(n.poll.options||[]).map((function(e){return I(I({},e),{},{title_html:u()(e.title)})}))),n.pinned=t.pinned,n.muted=t.muted}else n.favorited=t.favorited,n.fave_num=t.fave_num,n.repeated=t.repeated,n.repeat_num=t.repeat_num,n.type=(r=t).is_post_verb?"status":r.retweeted_status?"retweet":"string"==typeof r.uri&&r.uri.match(/(fave|objectType=Favourite)/)||"string"==typeof r.text&&r.text.match(/favorited/)?"favorite":r.text.match(/deleted notice {{tag/)||r.qvitter_delete_notice?"deletion":r.text.match(/started following/)||"follow"===r.activity_type?"follow":"unknown",void 0===t.nsfw?(n.nsfw=F(t),t.retweeted_status&&(n.nsfw=t.retweeted_status.nsfw)):n.nsfw=t.nsfw,n.raw_html=t.statusnet_html,n.text=t.text,n.in_reply_to_status_id=t.in_reply_to_status_id,n.in_reply_to_user_id=t.in_reply_to_user_id,n.in_reply_to_screen_name=t.in_reply_to_screen_name,n.statusnet_conversation_id=t.statusnet_conversation_id,"retweet"===n.type&&(n.retweeted_status=e(t.retweeted_status)),n.summary=t.summary,n.summary_html=t.summary_html,n.external_url=t.external_url,n.is_local=t.is_local;n.id=String(t.id),n.visibility=t.visibility,n.card=t.card,n.created_at=new Date(t.created_at),n.in_reply_to_status_id=n.in_reply_to_status_id?String(n.in_reply_to_status_id):null,n.in_reply_to_user_id=n.in_reply_to_user_id?String(n.in_reply_to_user_id):null,n.user=S(o?t.account:t.user),n.attentions=((o?t.mentions:t.attentions)||[]).map(S),n.attachments=((o?t.media_attachments:t.attachments)||[]).map(N);var i=o?t.reblog:t.retweeted_status;return i&&(n.retweeted_status=e(i)),n.favoritedBy=[],n.rebloggedBy=[],Object.prototype.hasOwnProperty.call(t,"originalStatus")&&Object.assign(n,t.originalStatus),n},R=function(e){var t={};if(Object.prototype.hasOwnProperty.call(e,"ntype")){var r=L(e.notice);t.type=e.ntype,t.seen=Boolean(e.is_seen),t.status="like"===t.type?L(e.notice.favorited_status):r,t.action=r,t.from_profile="pleroma:chat_mention"===t.type?S(e.account):S(e.from_profile)}else t.type={favourite:"like",reblog:"repeat"}[e.type]||e.type,t.seen=e.pleroma.is_seen,t.status=m(t.type)?L(e.status):null,t.action=t.status,t.target="move"!==t.type?null:S(e.target),t.from_profile=S(e.account),t.emoji=e.emoji,e.report&&(t.report=e.report,t.report.content=e.report.content,t.report.acct=S(e.report.account),t.report.actor=S(e.report.actor),t.report.statuses=e.report.statuses.map(L));return t.created_at=new Date(e.created_at),t.id=parseInt(e.id),t},F=function(e){return(e.tags||[]).includes("nsfw")||!!(e.text||"").match(/#nsfw/i)};const A="undefined"!=typeof window,T="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,C=e=>T?Symbol(e):e,P=e=>"number"==typeof e&&isFinite(e),D=e=>"[object RegExp]"===Z(e),M=e=>ee(e)&&0===Object.keys(e).length;function W(e,t){"undefined"!=typeof console&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const U=Object.assign;let $;const V=()=>$||($="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==r.g?r.g:{});function B(e){return e.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}const q=Object.prototype.hasOwnProperty;function H(e,t){return q.call(e,t)}const G=Array.isArray,Y=e=>"function"==typeof e,X=e=>"string"==typeof e,K=e=>"boolean"==typeof e,J=e=>null!==e&&"object"==typeof e,Q=Object.prototype.toString,Z=e=>Q.call(e),ee=e=>"[object Object]"===Z(e);function te(e,t,r={}){const{domain:n,messages:o,args:a}=r,i=new SyntaxError(String(e));return i.code=e,t&&(i.location=t),i.domain=n,i}String.fromCharCode(8232),String.fromCharCode(8233);const re=[];re[0]={w:[0],i:[3,0],"[":[4],o:[7]},re[1]={w:[1],".":[2],"[":[4],o:[7]},re[2]={w:[2],i:[3,0],0:[3,0]},re[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]},re[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]},re[5]={"'":[4,0],o:8,l:[5,0]},re[6]={'"':[4,0],o:8,l:[6,0]};const ne=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function oe(e){if(null==e)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}const ae=new Map;function ie(e,t){return J(e)?e[t]:null}const se=e=>e,le=e=>"",ce=e=>0===e.length?"":e.join(""),ue=e=>null==e?"":G(e)||ee(e)&&e.toString===Q?JSON.stringify(e,null,2):String(e);function fe(e,t){return e=Math.abs(e),2===t?e?e>1?1:0:1:e?Math.min(e,2):0}let pe=null;const de=me("function:translate");function me(e){return t=>pe&&pe.emit(e,t)}function he(e,t,r){return[...new Set([r,...G(t)?t:J(t)?Object.keys(t):X(t)?[t]:[r]])]}function _e(e,t,r){const n=X(r)?r:be,o=e;o.__localeChainCache||(o.__localeChainCache=new Map);let a=o.__localeChainCache.get(n);if(!a){a=[];let e=[r];for(;G(e);)e=ve(a,e,t);const i=G(t)||!ee(t)?t:t.default?t.default:null;e=X(i)?[i]:i,G(e)&&ve(a,e,!1),o.__localeChainCache.set(n,a)}return a}function ve(e,t,r){let n=!0;for(let o=0;o<t.length&&K(n);o++){const a=t[o];X(a)&&(n=ge(e,t[o],r))}return n}function ge(e,t,r){let n;const o=t.split("-");do{n=ye(e,o.join("-"),r),o.splice(-1,1)}while(o.length&&!0===n);return n}function ye(e,t,r){let n=!1;if(!e.includes(t)&&(n=!0,t)){n="!"!==t[t.length-1];const o=t.replace(/!/g,"");e.push(o),(G(r)||ee(r))&&r[o]&&(n=r[o])}return n}const be="en-US",we=e=>`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;let xe,ze,ke=null;const Oe=e=>{ke=e};let je=null;const Ee=e=>{je=e};let Ie=0;function Se(e,t,r,n,o){const{missing:a,onWarn:i}=e;if(null!==a){const n=a(e,r,t,o);return X(n)?n:t}return t}function Ne(e,t,r){e.__localeChainCache=new Map,e.localeFallbacker(e,r,t)}Object.create(null);let Le=15;const Re=()=>++Le,Fe={INVALID_ARGUMENT:Le,INVALID_DATE_ARGUMENT:Re(),INVALID_ISO_DATE_ARGUMENT:Re(),__EXTEND_POINT__:Re()};function Ae(e){return te(e,null,void 0)}const Te=()=>"",Ce=e=>Y(e);function Pe(e,...t){const{fallbackFormat:r,postTranslation:n,unresolving:o,messageCompiler:a,fallbackLocale:i,messages:s}=e,[l,c]=We(...t),u=(K(c.missingWarn)?c.missingWarn:e.missingWarn,K(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,K(c.escapeParameter)?c.escapeParameter:e.escapeParameter),f=!!c.resolvedMessage,p=X(c.default)||K(c.default)?K(c.default)?a?l:()=>l:c.default:r?a?l:()=>l:"",d=r||""!==p,m=X(c.locale)?c.locale:e.locale;u&&function(e){G(e.list)?e.list=e.list.map((e=>X(e)?B(e):e)):J(e.named)&&Object.keys(e.named).forEach((t=>{X(e.named[t])&&(e.named[t]=B(e.named[t]))}))}(c);let[h,_,v]=f?[l,m,s[m]||{}]:De(e,l,m,i),g=h,y=l;if(f||X(g)||Ce(g)||d&&(g=p,y=g),!(f||(X(g)||Ce(g))&&X(_)))return o?-1:l;let b=!1;const w=Ce(g)?g:Me(e,l,_,g,y,(()=>{b=!0}));if(b)return g;const x=function(e,t,r,n){const{modifiers:o,pluralRules:a,messageResolver:i,fallbackLocale:s,fallbackWarn:l,missingWarn:c,fallbackContext:u}=e,f={locale:t,modifiers:o,pluralRules:a,messages:n=>{let o=i(r,n);if(null==o&&u){const[,,e]=De(u,n,t,s);o=i(e,n)}if(X(o)){let r=!1;const a=Me(e,n,t,o,n,(()=>{r=!0}));return r?Te:a}return Ce(o)?o:Te}};return e.processor&&(f.processor=e.processor),n.list&&(f.list=n.list),n.named&&(f.named=n.named),P(n.plural)&&(f.pluralIndex=n.plural),f}(e,_,v,c),z=function(e,t,r){return t(r)}(0,w,function(e={}){const t=e.locale,r=function(e){const t=P(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(P(e.named.count)||P(e.named.n))?P(e.named.count)?e.named.count:P(e.named.n)?e.named.n:t:t}(e),n=J(e.pluralRules)&&X(t)&&Y(e.pluralRules[t])?e.pluralRules[t]:fe,o=J(e.pluralRules)&&X(t)&&Y(e.pluralRules[t])?fe:void 0,a=e.list||[],i=e.named||{};function s(t){return(Y(e.messages)?e.messages(t):!!J(e.messages)&&e.messages[t])||(e.parent?e.parent.message(t):le)}P(e.pluralIndex)&&function(e,t){t.count||(t.count=e),t.n||(t.n=e)}(r,i);const l=ee(e.processor)&&Y(e.processor.normalize)?e.processor.normalize:ce,c=ee(e.processor)&&Y(e.processor.interpolate)?e.processor.interpolate:ue,u={list:e=>a[e],named:e=>i[e],plural:e=>e[n(r,e.length,o)],linked:(t,...r)=>{const[n,o]=r;let a="text",i="";1===r.length?J(n)?(i=n.modifier||i,a=n.type||a):X(n)&&(i=n||i):2===r.length&&(X(n)&&(i=n||i),X(o)&&(a=o||a));let l=s(t)(u);return"vnode"===a&&G(l)&&i&&(l=l[0]),i?(c=i,e.modifiers?e.modifiers[c]:se)(l,a):l;var c},message:s,type:ee(e.processor)&&X(e.processor.type)?e.processor.type:"text",interpolate:c,normalize:l};return u}(x)),k=n?n(z,l):z;if(__INTLIFY_PROD_DEVTOOLS__){const t={timestamp:Date.now(),key:X(l)?l:Ce(g)?g.key:"",locale:_||(Ce(g)?g.locale:""),format:X(g)?g:Ce(g)?g.source:"",message:k};t.meta=U({},e.__meta,ke||{}),de(t)}return k}function De(e,t,r,n,o,a){const{messages:i,onWarn:s,messageResolver:l,localeFallbacker:c}=e,u=c(e,n,r);let f,p={},d=null,m=r,h=null;for(let r=0;r<u.length&&(f=h=u[r],p=i[f]||{},null===(d=l(p,t))&&(d=p[t]),!X(d)&&!Y(d));r++){const r=Se(e,t,f,0,"translate");r!==t&&(d=r),m=h}return[d,f,p]}function Me(e,t,r,n,o,a){const{messageCompiler:i,warnHtmlMessage:s}=e;if(Ce(n)){const e=n;return e.locale=e.locale||r,e.key=e.key||t,e}if(null==i){const e=()=>n;return e.locale=r,e.key=t,e}const l=i(n,function(e,t,r,n,o,a){return{warnHtmlMessage:o,onError:e=>{throw a&&a(e),e},onCacheKey:e=>((e,t,r)=>{return n={l:e,k:t,s:r},JSON.stringify(n).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027");var n})(t,r,e)}}(0,r,o,0,s,a));return l.locale=r,l.key=t,l.source=n,l}function We(...e){const[t,r,n]=e,o={};if(!X(t)&&!P(t)&&!Ce(t))throw Ae(Fe.INVALID_ARGUMENT);const a=P(t)?String(t):(Ce(t),t);return P(r)?o.plural=r:X(r)?o.default=r:ee(r)&&!M(r)?o.named=r:G(r)&&(o.list=r),P(n)?o.plural=n:X(n)?o.default=n:ee(n)&&U(o,n),[a,o]}const Ue="undefined"!=typeof Intl;function $e(e,...t){const{datetimeFormats:r,unresolving:n,fallbackLocale:o,onWarn:a,localeFallbacker:i}=e,{__datetimeFormatters:s}=e,[l,c,u,f]=Be(...t),p=(K(u.missingWarn)?u.missingWarn:e.missingWarn,K(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn,!!u.part),d=X(u.locale)?u.locale:e.locale,m=i(e,o,d);if(!X(l)||""===l)return new Intl.DateTimeFormat(d,f).format(c);let h,_={},v=null,g=d,y=null;for(let t=0;t<m.length&&(h=y=m[t],_=r[h]||{},v=_[l],!ee(v));t++)Se(e,l,h,0,"datetime format"),g=y;if(!ee(v)||!X(h))return n?-1:l;let b=`${h}__${l}`;M(f)||(b=`${b}__${JSON.stringify(f)}`);let w=s.get(b);return w||(w=new Intl.DateTimeFormat(h,U({},v,f)),s.set(b,w)),p?w.formatToParts(c):w.format(c)}Ue&&Intl.DateTimeFormat,Ue&&Intl.NumberFormat;const Ve=["localeMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName","formatMatcher","hour12","timeZone","dateStyle","timeStyle","calendar","dayPeriod","numberingSystem","hourCycle","fractionalSecondDigits"];function Be(...e){const[t,r,n,o]=e,a={};let i,s={};if(X(t)){const e=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!e)throw Ae(Fe.INVALID_ISO_DATE_ARGUMENT);const r=e[3]?e[3].trim().startsWith("T")?`${e[1].trim()}${e[3].trim()}`:`${e[1].trim()}T${e[3].trim()}`:e[1].trim();i=new Date(r);try{i.toISOString()}catch(e){throw Ae(Fe.INVALID_ISO_DATE_ARGUMENT)}}else if("[object Date]"===Z(t)){if(isNaN(t.getTime()))throw Ae(Fe.INVALID_DATE_ARGUMENT);i=t}else{if(!P(t))throw Ae(Fe.INVALID_ARGUMENT);i=t}return X(r)?a.key=r:ee(r)&&Object.keys(r).forEach((e=>{Ve.includes(e)?s[e]=r[e]:a[e]=r[e]})),X(n)?a.locale=n:ee(n)&&(s=n),ee(o)&&(s=o),[a.key||"",i,a,s]}function qe(e,t,r){const n=e;for(const e in r){const r=`${t}__${e}`;n.__datetimeFormatters.has(r)&&n.__datetimeFormatters.delete(r)}}function He(e,...t){const{numberFormats:r,unresolving:n,fallbackLocale:o,onWarn:a,localeFallbacker:i}=e,{__numberFormatters:s}=e,[l,c,u,f]=Ye(...t),p=(K(u.missingWarn)?u.missingWarn:e.missingWarn,K(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn,!!u.part),d=X(u.locale)?u.locale:e.locale,m=i(e,o,d);if(!X(l)||""===l)return new Intl.NumberFormat(d,f).format(c);let h,_={},v=null,g=d,y=null;for(let t=0;t<m.length&&(h=y=m[t],_=r[h]||{},v=_[l],!ee(v));t++)Se(e,l,h,0,"number format"),g=y;if(!ee(v)||!X(h))return n?-1:l;let b=`${h}__${l}`;M(f)||(b=`${b}__${JSON.stringify(f)}`);let w=s.get(b);return w||(w=new Intl.NumberFormat(h,U({},v,f)),s.set(b,w)),p?w.formatToParts(c):w.format(c)}const Ge=["localeMatcher","style","currency","currencyDisplay","currencySign","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","compactDisplay","notation","signDisplay","unit","unitDisplay","roundingMode","roundingPriority","roundingIncrement","trailingZeroDisplay"];function Ye(...e){const[t,r,n,o]=e,a={};let i={};if(!P(t))throw Ae(Fe.INVALID_ARGUMENT);const s=t;return X(r)?a.key=r:ee(r)&&Object.keys(r).forEach((e=>{Ge.includes(e)?i[e]=r[e]:a[e]=r[e]})),X(n)?a.locale=n:ee(n)&&(i=n),ee(o)&&(i=o),[a.key||"",s,a,i]}function Xe(e,t,r){const n=e;for(const e in r){const r=`${t}__${e}`;n.__numberFormatters.has(r)&&n.__numberFormatters.delete(r)}}function Ke(e,t){const r=Object.create(null),n=e.split(",");for(let e=0;e<n.length;e++)r[n[e]]=!0;return t?e=>!!r[e.toLowerCase()]:e=>!!r[e]}function Je(e){if(ut(e)){const t={};for(let r=0;r<e.length;r++){const n=e[r],o=dt(n)?tt(n):Je(n);if(o)for(const e in o)t[e]=o[e]}return t}return dt(e)||ht(e)?e:void 0}"boolean"!=typeof __INTLIFY_PROD_DEVTOOLS__&&(V().__INTLIFY_PROD_DEVTOOLS__=!1);const Qe=/;(?![^(]*\))/g,Ze=/:([^]+)/,et=/\/\*.*?\*\//gs;function tt(e){const t={};return e.replace(et,"").split(Qe).forEach((e=>{if(e){const r=e.split(Ze);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}function rt(e){let t="";if(dt(e))t=e;else if(ut(e))for(let r=0;r<e.length;r++){const n=rt(e[r]);n&&(t+=n+" ")}else if(ht(e))for(const r in e)e[r]&&(t+=r+" ");return t.trim()}const nt={},ot=()=>{},at=/^on[^a-z]/,it=e=>at.test(e),st=Object.assign,lt=Object.prototype.hasOwnProperty,ct=(e,t)=>lt.call(e,t),ut=Array.isArray,ft=e=>"[object Map]"===vt(e),pt=e=>"function"==typeof e,dt=e=>"string"==typeof e,mt=e=>"symbol"==typeof e,ht=e=>null!==e&&"object"==typeof e,_t=Object.prototype.toString,vt=e=>_t.call(e),gt=e=>dt(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,yt=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},bt=/-(\w)/g,wt=(yt((e=>e.replace(bt,((e,t)=>t?t.toUpperCase():"")))),/\B([A-Z])/g),xt=(yt((e=>e.replace(wt,"-$1").toLowerCase())),yt((e=>e.charAt(0).toUpperCase()+e.slice(1)))),zt=(yt((e=>e?`on${xt(e)}`:"")),(e,t)=>!Object.is(e,t));let kt;class Ot{constructor(e=!1){this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=kt,!e&&kt&&(this.index=(kt.scopes||(kt.scopes=[])).push(this)-1)}run(e){if(this.active){const t=kt;try{return kt=this,e()}finally{kt=t}}}on(){kt=this}off(){kt=this.parent}stop(e){if(this.active){let t,r;for(t=0,r=this.effects.length;t<r;t++)this.effects[t].stop();for(t=0,r=this.cleanups.length;t<r;t++)this.cleanups[t]();if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].stop(!0);if(!this.detached&&this.parent&&!e){const e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0,this.active=!1}}}const jt=e=>{const t=new Set(e);return t.w=0,t.n=0,t},Et=e=>(e.w&Rt)>0,It=e=>(e.n&Rt)>0,St=new WeakMap;let Nt,Lt=0,Rt=1;const Ft=Symbol(""),At=Symbol("");class Tt{constructor(e,t=null,r){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,function(e,t=kt){t&&t.active&&t.effects.push(e)}(this,r)}run(){if(!this.active)return this.fn();let e=Nt,t=Pt;for(;e;){if(e===this)return;e=e.parent}try{return this.parent=Nt,Nt=this,Pt=!0,Rt=1<<++Lt,Lt<=30?(({deps:e})=>{if(e.length)for(let t=0;t<e.length;t++)e[t].w|=Rt})(this):Ct(this),this.fn()}finally{Lt<=30&&(e=>{const{deps:t}=e;if(t.length){let r=0;for(let n=0;n<t.length;n++){const o=t[n];Et(o)&&!It(o)?o.delete(e):t[r++]=o,o.w&=~Rt,o.n&=~Rt}t.length=r}})(this),Rt=1<<--Lt,Nt=this.parent,Pt=t,this.parent=void 0,this.deferStop&&this.stop()}}stop(){Nt===this?this.deferStop=!0:this.active&&(Ct(this),this.onStop&&this.onStop(),this.active=!1)}}function Ct(e){const{deps:t}=e;if(t.length){for(let r=0;r<t.length;r++)t[r].delete(e);t.length=0}}let Pt=!0;const Dt=[];function Mt(){Dt.push(Pt),Pt=!1}function Wt(){const e=Dt.pop();Pt=void 0===e||e}function Ut(e,t,r){if(Pt&&Nt){let t=St.get(e);t||St.set(e,t=new Map);let n=t.get(r);n||t.set(r,n=jt()),$t(n)}}function $t(e,t){let r=!1;Lt<=30?It(e)||(e.n|=Rt,r=!Et(e)):r=!e.has(Nt),r&&(e.add(Nt),Nt.deps.push(e))}function Vt(e,t,r,n,o,a){const i=St.get(e);if(!i)return;let s=[];if("clear"===t)s=[...i.values()];else if("length"===r&&ut(e)){const e=(e=>{const t=parseFloat(e);return isNaN(t)?e:t})(n);i.forEach(((t,r)=>{("length"===r||r>=e)&&s.push(t)}))}else switch(void 0!==r&&s.push(i.get(r)),t){case"add":ut(e)?gt(r)&&s.push(i.get("length")):(s.push(i.get(Ft)),ft(e)&&s.push(i.get(At)));break;case"delete":ut(e)||(s.push(i.get(Ft)),ft(e)&&s.push(i.get(At)));break;case"set":ft(e)&&s.push(i.get(Ft))}if(1===s.length)s[0]&&Bt(s[0]);else{const e=[];for(const t of s)t&&e.push(...t);Bt(jt(e))}}function Bt(e,t){const r=ut(e)?e:[...e];for(const e of r)e.computed&&qt(e);for(const e of r)e.computed||qt(e)}function qt(e,t){(e!==Nt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const Ht=Ke("__proto__,__v_isRef,__isVue"),Gt=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(mt)),Yt=Qt(),Xt=Qt(!0),Kt=Jt();function Jt(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const r=Fr(this);for(let e=0,t=this.length;e<t;e++)Ut(r,0,e+"");const n=r[t](...e);return-1===n||!1===n?r[t](...e.map(Fr)):n}})),["push","pop","shift","unshift","splice"].forEach((t=>{e[t]=function(...e){Mt();const r=Fr(this)[t].apply(this,e);return Wt(),r}})),e}function Qt(e=!1,t=!1){return function(r,n,o){if("__v_isReactive"===n)return!e;if("__v_isReadonly"===n)return e;if("__v_isShallow"===n)return t;if("__v_raw"===n&&o===(e?t?Or:kr:t?zr:xr).get(r))return r;const a=ut(r);if(!e&&a&&ct(Kt,n))return Reflect.get(Kt,n,o);const i=Reflect.get(r,n,o);return(mt(n)?Gt.has(n):Ht(n))?i:(e||Ut(r,0,n),t?i:Mr(i)?a&&gt(n)?i:i.value:ht(i)?e?Er(i):jr(i):i)}}function Zt(e=!1){return function(t,r,n,o){let a=t[r];if(Nr(a)&&Mr(a)&&!Mr(n))return!1;if(!e&&(Lr(n)||Nr(n)||(a=Fr(a),n=Fr(n)),!ut(t)&&Mr(a)&&!Mr(n)))return a.value=n,!0;const i=ut(t)&&gt(r)?Number(r)<t.length:ct(t,r),s=Reflect.set(t,r,n,o);return t===Fr(o)&&(i?zt(n,a)&&Vt(t,"set",r,n):Vt(t,"add",r,n)),s}}const er={get:Yt,set:Zt(),deleteProperty:function(e,t){const r=ct(e,t),n=(e[t],Reflect.deleteProperty(e,t));return n&&r&&Vt(e,"delete",t,void 0),n},has:function(e,t){const r=Reflect.has(e,t);return mt(t)&&Gt.has(t)||Ut(e,0,t),r},ownKeys:function(e){return Ut(e,0,ut(e)?"length":Ft),Reflect.ownKeys(e)}},tr={get:Xt,set:(e,t)=>!0,deleteProperty:(e,t)=>!0},rr=e=>e,nr=e=>Reflect.getPrototypeOf(e);function or(e,t,r=!1,n=!1){const o=Fr(e=e.__v_raw),a=Fr(t);r||(t!==a&&Ut(o,0,t),Ut(o,0,a));const{has:i}=nr(o),s=n?rr:r?Cr:Tr;return i.call(o,t)?s(e.get(t)):i.call(o,a)?s(e.get(a)):void(e!==o&&e.get(t))}function ar(e,t=!1){const r=this.__v_raw,n=Fr(r),o=Fr(e);return t||(e!==o&&Ut(n,0,e),Ut(n,0,o)),e===o?r.has(e):r.has(e)||r.has(o)}function ir(e,t=!1){return e=e.__v_raw,!t&&Ut(Fr(e),0,Ft),Reflect.get(e,"size",e)}function sr(e){e=Fr(e);const t=Fr(this);return nr(t).has.call(t,e)||(t.add(e),Vt(t,"add",e,e)),this}function lr(e,t){t=Fr(t);const r=Fr(this),{has:n,get:o}=nr(r);let a=n.call(r,e);a||(e=Fr(e),a=n.call(r,e));const i=o.call(r,e);return r.set(e,t),a?zt(t,i)&&Vt(r,"set",e,t):Vt(r,"add",e,t),this}function cr(e){const t=Fr(this),{has:r,get:n}=nr(t);let o=r.call(t,e);o||(e=Fr(e),o=r.call(t,e)),n&&n.call(t,e);const a=t.delete(e);return o&&Vt(t,"delete",e,void 0),a}function ur(){const e=Fr(this),t=0!==e.size,r=e.clear();return t&&Vt(e,"clear",void 0,void 0),r}function fr(e,t){return function(r,n){const o=this,a=o.__v_raw,i=Fr(a),s=t?rr:e?Cr:Tr;return!e&&Ut(i,0,Ft),a.forEach(((e,t)=>r.call(n,s(e),s(t),o)))}}function pr(e,t,r){return function(...n){const o=this.__v_raw,a=Fr(o),i=ft(a),s="entries"===e||e===Symbol.iterator&&i,l="keys"===e&&i,c=o[e](...n),u=r?rr:t?Cr:Tr;return!t&&Ut(a,0,l?At:Ft),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:s?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function dr(e){return function(...t){return"delete"!==e&&this}}function mr(){const e={get(e){return or(this,e)},get size(){return ir(this)},has:ar,add:sr,set:lr,delete:cr,clear:ur,forEach:fr(!1,!1)},t={get(e){return or(this,e,!1,!0)},get size(){return ir(this)},has:ar,add:sr,set:lr,delete:cr,clear:ur,forEach:fr(!1,!0)},r={get(e){return or(this,e,!0)},get size(){return ir(this,!0)},has(e){return ar.call(this,e,!0)},add:dr("add"),set:dr("set"),delete:dr("delete"),clear:dr("clear"),forEach:fr(!0,!1)},n={get(e){return or(this,e,!0,!0)},get size(){return ir(this,!0)},has(e){return ar.call(this,e,!0)},add:dr("add"),set:dr("set"),delete:dr("delete"),clear:dr("clear"),forEach:fr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=pr(o,!1,!1),r[o]=pr(o,!0,!1),t[o]=pr(o,!1,!0),n[o]=pr(o,!0,!0)})),[e,r,t,n]}const[hr,_r,vr,gr]=mr();function yr(e,t){const r=t?e?gr:vr:e?_r:hr;return(t,n,o)=>"__v_isReactive"===n?!e:"__v_isReadonly"===n?e:"__v_raw"===n?t:Reflect.get(ct(r,n)&&n in t?r:t,n,o)}const br={get:yr(!1,!1)},wr={get:yr(!0,!1)},xr=new WeakMap,zr=new WeakMap,kr=new WeakMap,Or=new WeakMap;function jr(e){return Nr(e)?e:Ir(e,!1,er,br,xr)}function Er(e){return Ir(e,!0,tr,wr,kr)}function Ir(e,t,r,n,o){if(!ht(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const a=o.get(e);if(a)return a;const i=(s=e).__v_skip||!Object.isExtensible(s)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((e=>vt(e).slice(8,-1))(s));var s;if(0===i)return e;const l=new Proxy(e,2===i?n:r);return o.set(e,l),l}function Sr(e){return Nr(e)?Sr(e.__v_raw):!(!e||!e.__v_isReactive)}function Nr(e){return!(!e||!e.__v_isReadonly)}function Lr(e){return!(!e||!e.__v_isShallow)}function Rr(e){return Sr(e)||Nr(e)}function Fr(e){const t=e&&e.__v_raw;return t?Fr(t):e}function Ar(e){return((e,t,r)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})})(e,"__v_skip",!0),e}const Tr=e=>ht(e)?jr(e):e,Cr=e=>ht(e)?Er(e):e;function Pr(e){Pt&&Nt&&$t((e=Fr(e)).dep||(e.dep=jt()))}function Dr(e,t){(e=Fr(e)).dep&&Bt(e.dep)}function Mr(e){return!(!e||!0!==e.__v_isRef)}function Wr(e){return Ur(e,!1)}function Ur(e,t){return Mr(e)?e:new $r(e,t)}class $r{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:Fr(e),this._value=t?e:Tr(e)}get value(){return Pr(this),this._value}set value(e){const t=this.__v_isShallow||Lr(e)||Nr(e);e=t?e:Fr(e),zt(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Tr(e),Dr(this))}}const Vr={get:(e,t,r)=>{return Mr(n=Reflect.get(e,t,r))?n.value:n;var n},set:(e,t,r,n)=>{const o=e[t];return Mr(o)&&!Mr(r)?(o.value=r,!0):Reflect.set(e,t,r,n)}};var Br;class qr{constructor(e,t,r,n){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[Br]=!1,this._dirty=!0,this.effect=new Tt(e,(()=>{this._dirty||(this._dirty=!0,Dr(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!n,this.__v_isReadonly=r}get value(){const e=Fr(this);return Pr(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function Hr(e,t,r,n){let o;try{o=n?e(...n):e()}catch(e){Yr(e,t,r)}return o}function Gr(e,t,r,n){if(pt(e)){const a=Hr(e,t,r,n);return a&&(ht(o=a)&&pt(o.then)&&pt(o.catch))&&a.catch((e=>{Yr(e,t,r)})),a}var o;const a=[];for(let o=0;o<e.length;o++)a.push(Gr(e[o],t,r,n));return a}function Yr(e,t,r,n=!0){if(t&&t.vnode,t){let n=t.parent;const o=t.proxy,a=r;for(;n;){const t=n.ec;if(t)for(let r=0;r<t.length;r++)if(!1===t[r](e,o,a))return;n=n.parent}const i=t.appContext.config.errorHandler;if(i)return void Hr(i,null,10,[e,o,a])}!function(e,t,r,n=!0){console.error(e)}(e,0,0,n)}Br="__v_isReadonly";let Xr=!1,Kr=!1;const Jr=[];let Qr=0;const Zr=[];let en=null,tn=0;const rn=Promise.resolve();let nn=null;function on(e){const t=nn||rn;return e?t.then(this?e.bind(this):e):t}function an(e){Jr.length&&Jr.includes(e,Xr&&e.allowRecurse?Qr+1:Qr)||(null==e.id?Jr.push(e):Jr.splice(function(e){let t=Qr+1,r=Jr.length;for(;t<r;){const n=t+r>>>1;ln(Jr[n])<e?t=n+1:r=n}return t}(e.id),0,e),sn())}function sn(){Xr||Kr||(Kr=!0,nn=rn.then(un))}const ln=e=>null==e.id?1/0:e.id,cn=(e,t)=>{const r=ln(e)-ln(t);if(0===r){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function un(e){Kr=!1,Xr=!0,Jr.sort(cn);try{for(Qr=0;Qr<Jr.length;Qr++){const e=Jr[Qr];e&&!1!==e.active&&Hr(e,null,14)}}finally{Qr=0,Jr.length=0,function(e){if(Zr.length){const e=[...new Set(Zr)];if(Zr.length=0,en)return void en.push(...e);for(en=e,en.sort(((e,t)=>ln(e)-ln(t))),tn=0;tn<en.length;tn++)en[tn]();en=null,tn=0}}(),Xr=!1,nn=null,(Jr.length||Zr.length)&&un(e)}}new Set,new Map;let fn=null;function pn(e,t,r=!1){const n=Vn||fn;if(n){const o=null==n.parent?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return r&&pt(t)?t.call(n.proxy):t}}const dn={};function mn(e,t,r){return hn(e,t,r)}function hn(e,t,{immediate:r,deep:n,flush:o,onTrack:a,onTrigger:i}=nt){const s=Vn;let l,c,u=!1,f=!1;if(Mr(e)?(l=()=>e.value,u=Lr(e)):Sr(e)?(l=()=>e,n=!0):ut(e)?(f=!0,u=e.some((e=>Sr(e)||Lr(e))),l=()=>e.map((e=>Mr(e)?e.value:Sr(e)?vn(e):pt(e)?Hr(e,s,2):void 0))):l=pt(e)?t?()=>Hr(e,s,2):()=>{if(!s||!s.isUnmounted)return c&&c(),Gr(e,s,3,[d])}:ot,t&&n){const e=l;l=()=>vn(e())}let p,d=e=>{c=v.onStop=()=>{Hr(e,s,4)}};if(Gn){if(d=ot,t?r&&Gr(t,s,3,[l(),f?[]:void 0,d]):l(),"sync"!==o)return ot;{const e=Jn();p=e.__watcherHandles||(e.__watcherHandles=[])}}let m=f?new Array(e.length).fill(dn):dn;const h=()=>{if(v.active)if(t){const e=v.run();(n||u||(f?e.some(((e,t)=>zt(e,m[t]))):zt(e,m)))&&(c&&c(),Gr(t,s,3,[e,m===dn?void 0:f&&m[0]===dn?[]:m,d]),m=e)}else v.run()};let _;h.allowRecurse=!!t,"sync"===o?_=h:"post"===o?_=()=>Ln(h,s&&s.suspense):(h.pre=!0,s&&(h.id=s.uid),_=()=>an(h));const v=new Tt(l,_);t?r?h():m=v.run():"post"===o?Ln(v.run.bind(v),s&&s.suspense):v.run();const g=()=>{v.stop(),s&&s.scope&&((e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)})(s.scope.effects,v)};return p&&p.push(g),g}function _n(e,t,r){const n=this.proxy,o=dt(e)?e.includes(".")?function(e,t){const r=t.split(".");return()=>{let t=e;for(let e=0;e<r.length&&t;e++)t=t[r[e]];return t}}(n,e):()=>n[e]:e.bind(n,n);let a;pt(t)?a=t:(a=t.handler,r=t);const i=Vn;qn(this);const s=hn(o,a.bind(n),r);return i?qn(i):Hn(),s}function vn(e,t){if(!ht(e)||e.__v_skip)return e;if((t=t||new Set).has(e))return e;if(t.add(e),Mr(e))vn(e.value,t);else if(ut(e))for(let r=0;r<e.length;r++)vn(e[r],t);else if("[object Set]"===vt(e)||ft(e))e.forEach((e=>{vn(e,t)}));else if((e=>"[object Object]"===vt(e))(e))for(const r in e)vn(e[r],t);return e}Boolean,Boolean;RegExp,RegExp;const gn=e=>(t,r=Vn)=>(!Gn||"sp"===e)&&function(e,t,r=Vn,n=!1){if(r){const o=r[e]||(r[e]=[]),a=t.__weh||(t.__weh=(...n)=>{if(r.isUnmounted)return;Mt(),qn(r);const o=Gr(t,r,e,n);return Hn(),Wt(),o});return n?o.unshift(a):o.push(a),a}}(e,((...e)=>t(...e)),r),yn=gn("bm"),bn=gn("m"),wn=(gn("bu"),gn("u"),gn("bum"),gn("um"));gn("sp"),gn("rtg"),gn("rtc");const xn=Symbol(),zn=e=>e?4&e.vnode.shapeFlag?function(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy((t=Ar(e.exposed),Sr(t)?t:new Proxy(t,Vr)),{get:(t,r)=>r in t?t[r]:r in kn?kn[r](e):void 0,has:(e,t)=>t in e||t in kn}));var t}(e)||e.proxy:zn(e.parent):null,kn=st(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>zn(e.parent),$root:e=>zn(e.root),$emit:e=>e.emit,$options:e=>function(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:o,optionsCache:a,config:{optionMergeStrategies:i}}=e.appContext,s=a.get(t);let l;return s?l=s:o.length||r||n?(l={},o.length&&o.forEach((e=>On(l,e,i,!0))),On(l,t,i)):l=t,ht(t)&&a.set(t,l),l}(e),$forceUpdate:e=>e.f||(e.f=()=>an(e.update)),$nextTick:e=>e.n||(e.n=on.bind(e.proxy)),$watch:e=>_n.bind(e)});function On(e,t,r,n=!1){const{mixins:o,extends:a}=t;a&&On(e,a,r,!0),o&&o.forEach((t=>On(e,t,r,!0)));for(const o in t)if(n&&"expose"===o);else{const n=jn[o]||r&&r[o];e[o]=n?n(e[o],t[o]):t[o]}return e}const jn={data:En,props:Nn,emits:Nn,methods:Nn,computed:Nn,beforeCreate:Sn,created:Sn,beforeMount:Sn,mounted:Sn,beforeUpdate:Sn,updated:Sn,beforeDestroy:Sn,beforeUnmount:Sn,destroyed:Sn,unmounted:Sn,activated:Sn,deactivated:Sn,errorCaptured:Sn,serverPrefetch:Sn,components:Nn,directives:Nn,watch:function(e,t){if(!e)return t;if(!t)return e;const r=st(Object.create(null),e);for(const n in t)r[n]=Sn(e[n],t[n]);return r},provide:En,inject:function(e,t){return Nn(In(e),In(t))}};function En(e,t){return t?e?function(){return st(pt(e)?e.call(this,this):e,pt(t)?t.call(this,this):t)}:t:e}function In(e){if(ut(e)){const t={};for(let r=0;r<e.length;r++)t[e[r]]=e[r];return t}return e}function Sn(e,t){return e?[...new Set([].concat(e,t))]:t}function Nn(e,t){return e?st(st(Object.create(null),e),t):t}const Ln=function(e,t){var r;t&&t.pendingBranch?ut(e)?t.effects.push(...e):t.effects.push(e):(ut(r=e)?Zr.push(...r):en&&en.includes(r,r.allowRecurse?tn+1:tn)||Zr.push(r),sn())},Rn=Symbol(void 0),Fn=Symbol(void 0),An=Symbol(void 0);Symbol(void 0);function Tn(e){return!!e&&!0===e.__v_isVNode}const Cn="__vInternal",Pn=({key:e})=>null!=e?e:null,Dn=({ref:e,ref_key:t,ref_for:r})=>null!=e?dt(e)||Mr(e)||pt(e)?{i:fn,r:e,k:t,f:!!r}:e:null;const Mn=function(e,t=null,r=null,n=0,o=null,a=!1){if(e&&e!==xn||(e=An),Tn(e)){const n=Wn(e,t,!0);return r&&$n(n,r),n.patchFlag|=-2,n}if(i=e,pt(i)&&"__vccOpts"in i&&(e=e.__vccOpts),t){t=function(e){return e?Rr(e)||Cn in e?st({},e):e:null}(t);let{class:e,style:r}=t;e&&!dt(e)&&(t.class=rt(e)),ht(r)&&(Rr(r)&&!ut(r)&&(r=st({},r)),t.style=Je(r))}var i;return function(e,t=null,r=null,n=0,o=null,a=(e===Rn?0:1),i=!1,s=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Pn(t),ref:t&&Dn(t),scopeId:null,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:n,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:fn};return s?($n(l,r),128&a&&e.normalize(l)):r&&(l.shapeFlag|=dt(r)?8:16),l}(e,t,r,n,o,dt(e)?1:(e=>e.__isSuspense)(e)?128:(e=>e.__isTeleport)(e)?64:ht(e)?4:pt(e)?2:0,a,!0)};function Wn(e,t,r=!1){const{props:n,ref:o,patchFlag:a,children:i}=e,s=t?function(...e){const t={};for(let r=0;r<e.length;r++){const n=e[r];for(const e in n)if("class"===e)t.class!==n.class&&(t.class=rt([t.class,n.class]));else if("style"===e)t.style=Je([t.style,n.style]);else if(it(e)){const r=t[e],o=n[e];!o||r===o||ut(r)&&r.includes(o)||(t[e]=r?[].concat(r,o):o)}else""!==e&&(t[e]=n[e])}return t}(n||{},t):n;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&Pn(s),ref:t&&t.ref?r&&o?ut(o)?o.concat(Dn(t)):[o,Dn(t)]:Dn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Rn?-1===a?16:16|a:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Wn(e.ssContent),ssFallback:e.ssFallback&&Wn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function Un(e=" ",t=0){return Mn(Fn,null,e,t)}function $n(e,t){let r=0;const{shapeFlag:n}=e;if(null==t)t=null;else if(ut(t))r=16;else if("object"==typeof t){if(65&n){const r=t.default;return void(r&&(r._c&&(r._d=!1),$n(e,r()),r._c&&(r._d=!0)))}{r=32;const e=t._;!e&&!(Cn in t)&&(t._ctx=fn)}}else pt(t)?(t={default:t,_ctx:fn},r=32):(t=String(t),64&n?(r=16,t=[Un(t)]):r=8);e.children=t,e.shapeFlag|=r}Object.create(null),new WeakMap,new WeakMap,new WeakMap;let Vn=null;const Bn=()=>Vn||fn,qn=e=>{Vn=e,e.scope.on()},Hn=()=>{Vn&&Vn.scope.off(),Vn=null};let Gn=!1;const Yn=(e,t)=>function(e,t,r=!1){let n,o;const a=pt(e);return a?(n=e,o=ot):(n=e.get,o=e.set),new qr(n,o,a||!o,r)}(e,0,Gn);function Xn(e,t,r){const n=arguments.length;return 2===n?ht(t)&&!ut(t)?Tn(t)?Mn(e,null,[t]):Mn(e,t):Mn(e,null,t):(n>3?r=Array.prototype.slice.call(arguments,2):3===n&&Tn(r)&&(r=[r]),Mn(e,t,r))}const Kn=Symbol(""),Jn=()=>pn(Kn);let Qn=7;const Zn=()=>++Qn;Zn(),Zn(),Zn(),Zn(),Zn(),Zn();let eo=15;const to=()=>++eo,ro={UNEXPECTED_RETURN_TYPE:eo,INVALID_ARGUMENT:to(),MUST_BE_CALL_SETUP_TOP:to(),NOT_INSLALLED:to(),NOT_AVAILABLE_IN_LEGACY_MODE:to(),REQUIRED_VALUE:to(),INVALID_VALUE:to(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:to(),NOT_INSLALLED_WITH_PROVIDE:to(),UNEXPECTED_ERROR:to(),NOT_COMPATIBLE_LEGACY_VUE_I18N:to(),BRIDGE_SUPPORT_VUE_2_ONLY:to(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:to(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:to(),__EXTEND_POINT__:to()};function no(e,...t){return te(e,null,void 0)}const oo=C("__transrateVNode"),ao=C("__datetimeParts"),io=C("__numberParts"),so=C("__setPluralRules");C("__intlifyMeta");const lo=C("__injectWithOption");function co(e){if(!J(e))return e;for(const t in e)if(H(e,t))if(t.includes(".")){const r=t.split("."),n=r.length-1;let o=e;for(let e=0;e<n;e++)r[e]in o||(o[r[e]]={}),o=o[r[e]];o[r[n]]=e[t],delete e[t],J(o[r[n]])&&co(o[r[n]])}else J(e[t])&&co(e[t]);return e}function uo(e,t){const{messages:r,__i18n:n,messageResolver:o,flatJson:a}=t,i=ee(r)?r:G(n)?{}:{[e]:{}};if(G(n)&&n.forEach((e=>{if("locale"in e&&"resource"in e){const{locale:t,resource:r}=e;t?(i[t]=i[t]||{},po(r,i[t])):po(r,i)}else X(e)&&po(JSON.parse(e),i)})),null==o&&a)for(const e in i)H(i,e)&&co(i[e]);return i}const fo=e=>!J(e)||G(e);function po(e,t){if(fo(e)||fo(t))throw no(ro.INVALID_VALUE);for(const r in e)H(e,r)&&(fo(e[r])||fo(t[r])?t[r]=e[r]:po(e[r],t[r]))}function mo(e){return e.type}function ho(e,t,r){let n=J(t.messages)?t.messages:{};"__i18nGlobal"in r&&(n=uo(e.locale.value,{messages:n,__i18n:r.__i18nGlobal}));const o=Object.keys(n);if(o.length&&o.forEach((t=>{e.mergeLocaleMessage(t,n[t])})),J(t.datetimeFormats)){const r=Object.keys(t.datetimeFormats);r.length&&r.forEach((r=>{e.mergeDateTimeFormat(r,t.datetimeFormats[r])}))}if(J(t.numberFormats)){const r=Object.keys(t.numberFormats);r.length&&r.forEach((r=>{e.mergeNumberFormat(r,t.numberFormats[r])}))}}function _o(e){return Mn(Fn,null,e,0)}const vo="__INTLIFY_META__";let go=0;function yo(e){return(t,r,n,o)=>e(r,n,Bn()||void 0,o)}function bo(e={},t){const{__root:r}=e,n=void 0===r;let o=!K(e.inheritLocale)||e.inheritLocale;const a=Wr(r&&o?r.locale.value:X(e.locale)?e.locale:be),i=Wr(r&&o?r.fallbackLocale.value:X(e.fallbackLocale)||G(e.fallbackLocale)||ee(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:a.value),s=Wr(uo(a.value,e)),l=Wr(ee(e.datetimeFormats)?e.datetimeFormats:{[a.value]:{}}),c=Wr(ee(e.numberFormats)?e.numberFormats:{[a.value]:{}});let u=r?r.missingWarn:!K(e.missingWarn)&&!D(e.missingWarn)||e.missingWarn,f=r?r.fallbackWarn:!K(e.fallbackWarn)&&!D(e.fallbackWarn)||e.fallbackWarn,p=r?r.fallbackRoot:!K(e.fallbackRoot)||e.fallbackRoot,d=!!e.fallbackFormat,m=Y(e.missing)?e.missing:null,h=Y(e.missing)?yo(e.missing):null,_=Y(e.postTranslation)?e.postTranslation:null,v=r?r.warnHtmlMessage:!K(e.warnHtmlMessage)||e.warnHtmlMessage,g=!!e.escapeParameter;const y=r?r.modifiers:ee(e.modifiers)?e.modifiers:{};let b,w=e.pluralRules||r&&r.pluralRules;b=(()=>{n&&Ee(null);const t={version:"9.2.2",locale:a.value,fallbackLocale:i.value,messages:s.value,modifiers:y,pluralRules:w,missing:null===h?void 0:h,missingWarn:u,fallbackWarn:f,fallbackFormat:d,unresolving:!0,postTranslation:null===_?void 0:_,warnHtmlMessage:v,escapeParameter:g,messageResolver:e.messageResolver,__meta:{framework:"vue"}};t.datetimeFormats=l.value,t.numberFormats=c.value,t.__datetimeFormatters=ee(b)?b.__datetimeFormatters:void 0,t.__numberFormatters=ee(b)?b.__numberFormatters:void 0;const r=function(e={}){const t=X(e.version)?e.version:"9.2.2",r=X(e.locale)?e.locale:be,n=G(e.fallbackLocale)||ee(e.fallbackLocale)||X(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:r,o=ee(e.messages)?e.messages:{[r]:{}},a=ee(e.datetimeFormats)?e.datetimeFormats:{[r]:{}},i=ee(e.numberFormats)?e.numberFormats:{[r]:{}},s=U({},e.modifiers||{},{upper:(e,t)=>"text"===t&&X(e)?e.toUpperCase():"vnode"===t&&J(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>"text"===t&&X(e)?e.toLowerCase():"vnode"===t&&J(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>"text"===t&&X(e)?we(e):"vnode"===t&&J(e)&&"__v_isVNode"in e?we(e.children):e}),l=e.pluralRules||{},c=Y(e.missing)?e.missing:null,u=!K(e.missingWarn)&&!D(e.missingWarn)||e.missingWarn,f=!K(e.fallbackWarn)&&!D(e.fallbackWarn)||e.fallbackWarn,p=!!e.fallbackFormat,d=!!e.unresolving,m=Y(e.postTranslation)?e.postTranslation:null,h=ee(e.processor)?e.processor:null,_=!K(e.warnHtmlMessage)||e.warnHtmlMessage,v=!!e.escapeParameter,g=Y(e.messageCompiler)?e.messageCompiler:void 0,y=Y(e.messageResolver)?e.messageResolver:xe||ie,b=Y(e.localeFallbacker)?e.localeFallbacker:ze||he,w=J(e.fallbackContext)?e.fallbackContext:void 0,x=Y(e.onWarn)?e.onWarn:W,z=e,k=J(z.__datetimeFormatters)?z.__datetimeFormatters:new Map,O=J(z.__numberFormatters)?z.__numberFormatters:new Map,j=J(z.__meta)?z.__meta:{};Ie++;const E={version:t,cid:Ie,locale:r,fallbackLocale:n,messages:o,modifiers:s,pluralRules:l,missing:c,missingWarn:u,fallbackWarn:f,fallbackFormat:p,unresolving:d,postTranslation:m,processor:h,warnHtmlMessage:_,escapeParameter:v,messageCompiler:g,messageResolver:y,localeFallbacker:b,fallbackContext:w,onWarn:x,__meta:j};return E.datetimeFormats=a,E.numberFormats=i,E.__datetimeFormatters=k,E.__numberFormatters=O,__INTLIFY_PROD_DEVTOOLS__&&function(e,t,r){pe&&pe.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:r})}(E,t,j),E}(t);return n&&Ee(r),r})(),Ne(b,a.value,i.value);const x=Yn({get:()=>a.value,set:e=>{a.value=e,b.locale=a.value}}),z=Yn({get:()=>i.value,set:e=>{i.value=e,b.fallbackLocale=i.value,Ne(b,a.value,e)}}),k=Yn((()=>s.value)),O=Yn((()=>l.value)),j=Yn((()=>c.value)),E=(e,t,o,u,f,d)=>{let m;if(a.value,i.value,s.value,l.value,c.value,__INTLIFY_PROD_DEVTOOLS__)try{Oe((()=>{const e=Bn();let t=null;return e&&(t=mo(e)[vo])?{[vo]:t}:null})()),n||(b.fallbackContext=r?je:void 0),m=e(b)}finally{Oe(null),n||(b.fallbackContext=void 0)}else m=e(b);if(P(m)&&-1===m){const[e,n]=t();return r&&p?u(r):f(e)}if(d(m))return m;throw no(ro.UNEXPECTED_RETURN_TYPE)};function I(...e){return E((t=>Reflect.apply(Pe,null,[t,...e])),(()=>We(...e)),0,(t=>Reflect.apply(t.t,t,[...e])),(e=>e),(e=>X(e)))}const S={normalize:function(e){return e.map((e=>X(e)||P(e)||K(e)?_o(String(e)):e))},interpolate:e=>e,type:"vnode"};function N(e){return s.value[e]||{}}go++,r&&A&&(mn(r.locale,(e=>{o&&(a.value=e,b.locale=e,Ne(b,a.value,i.value))})),mn(r.fallbackLocale,(e=>{o&&(i.value=e,b.fallbackLocale=e,Ne(b,a.value,i.value))})));const L={id:go,locale:x,fallbackLocale:z,get inheritLocale(){return o},set inheritLocale(e){o=e,e&&r&&(a.value=r.locale.value,i.value=r.fallbackLocale.value,Ne(b,a.value,i.value))},get availableLocales(){return Object.keys(s.value).sort()},messages:k,get modifiers(){return y},get pluralRules(){return w||{}},get isGlobal(){return n},get missingWarn(){return u},set missingWarn(e){u=e,b.missingWarn=u},get fallbackWarn(){return f},set fallbackWarn(e){f=e,b.fallbackWarn=f},get fallbackRoot(){return p},set fallbackRoot(e){p=e},get fallbackFormat(){return d},set fallbackFormat(e){d=e,b.fallbackFormat=d},get warnHtmlMessage(){return v},set warnHtmlMessage(e){v=e,b.warnHtmlMessage=e},get escapeParameter(){return g},set escapeParameter(e){g=e,b.escapeParameter=e},t:I,getLocaleMessage:N,setLocaleMessage:function(e,t){s.value[e]=t,b.messages=s.value},mergeLocaleMessage:function(e,t){s.value[e]=s.value[e]||{},po(t,s.value[e]),b.messages=s.value},getPostTranslationHandler:function(){return Y(_)?_:null},setPostTranslationHandler:function(e){_=e,b.postTranslation=e},getMissingHandler:function(){return m},setMissingHandler:function(e){null!==e&&(h=yo(e)),m=e,b.missing=h},[so]:function(e){w=e,b.pluralRules=w}};return L.datetimeFormats=O,L.numberFormats=j,L.rt=function(...e){const[t,r,n]=e;if(n&&!J(n))throw no(ro.INVALID_ARGUMENT);return I(t,r,U({resolvedMessage:!0},n||{}))},L.te=function(e,t){const r=N(X(t)?t:a.value);return null!==b.messageResolver(r,e)},L.tm=function(e){const t=function(e){let t=null;const r=_e(b,i.value,a.value);for(let n=0;n<r.length;n++){const o=s.value[r[n]]||{},a=b.messageResolver(o,e);if(null!=a){t=a;break}}return t}(e);return null!=t?t:r&&r.tm(e)||{}},L.d=function(...e){return E((t=>Reflect.apply($e,null,[t,...e])),(()=>Be(...e)),0,(t=>Reflect.apply(t.d,t,[...e])),(()=>""),(e=>X(e)))},L.n=function(...e){return E((t=>Reflect.apply(He,null,[t,...e])),(()=>Ye(...e)),0,(t=>Reflect.apply(t.n,t,[...e])),(()=>""),(e=>X(e)))},L.getDateTimeFormat=function(e){return l.value[e]||{}},L.setDateTimeFormat=function(e,t){l.value[e]=t,b.datetimeFormats=l.value,qe(b,e,t)},L.mergeDateTimeFormat=function(e,t){l.value[e]=U(l.value[e]||{},t),b.datetimeFormats=l.value,qe(b,e,t)},L.getNumberFormat=function(e){return c.value[e]||{}},L.setNumberFormat=function(e,t){c.value[e]=t,b.numberFormats=c.value,Xe(b,e,t)},L.mergeNumberFormat=function(e,t){c.value[e]=U(c.value[e]||{},t),b.numberFormats=c.value,Xe(b,e,t)},L[lo]=e.__injectWithOption,L[oo]=function(...e){return E((t=>{let r;const n=t;try{n.processor=S,r=Reflect.apply(Pe,null,[n,...e])}finally{n.processor=null}return r}),(()=>We(...e)),0,(t=>t[oo](...e)),(e=>[_o(e)]),(e=>G(e)))},L[ao]=function(...e){return E((t=>Reflect.apply($e,null,[t,...e])),(()=>Be(...e)),0,(t=>t[ao](...e)),(()=>[]),(e=>X(e)||G(e)))},L[io]=function(...e){return E((t=>Reflect.apply(He,null,[t,...e])),(()=>Ye(...e)),0,(t=>t[io](...e)),(()=>[]),(e=>X(e)||G(e)))},L}function wo(e={},t){{const t=bo(function(e){const t=X(e.locale)?e.locale:be,r=X(e.fallbackLocale)||G(e.fallbackLocale)||ee(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:t,n=Y(e.missing)?e.missing:void 0,o=!K(e.silentTranslationWarn)&&!D(e.silentTranslationWarn)||!e.silentTranslationWarn,a=!K(e.silentFallbackWarn)&&!D(e.silentFallbackWarn)||!e.silentFallbackWarn,i=!K(e.fallbackRoot)||e.fallbackRoot,s=!!e.formatFallbackMessages,l=ee(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,u=Y(e.postTranslation)?e.postTranslation:void 0,f=!X(e.warnHtmlInMessage)||"off"!==e.warnHtmlInMessage,p=!!e.escapeParameterHtml,d=!K(e.sync)||e.sync;let m=e.messages;if(ee(e.sharedMessages)){const t=e.sharedMessages;m=Object.keys(t).reduce(((e,r)=>{const n=e[r]||(e[r]={});return U(n,t[r]),e}),m||{})}const{__i18n:h,__root:_,__injectWithOption:v}=e,g=e.datetimeFormats,y=e.numberFormats;return{locale:t,fallbackLocale:r,messages:m,flatJson:e.flatJson,datetimeFormats:g,numberFormats:y,missing:n,missingWarn:o,fallbackWarn:a,fallbackRoot:i,fallbackFormat:s,modifiers:l,pluralRules:c,postTranslation:u,warnHtmlMessage:f,escapeParameter:p,messageResolver:e.messageResolver,inheritLocale:d,__i18n:h,__root:_,__injectWithOption:v}}(e)),r={id:t.id,get locale(){return t.locale.value},set locale(e){t.locale.value=e},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(e){t.fallbackLocale.value=e},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get formatter(){return{interpolate:()=>[]}},set formatter(e){},get missing(){return t.getMissingHandler()},set missing(e){t.setMissingHandler(e)},get silentTranslationWarn(){return K(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(e){t.missingWarn=K(e)?!e:e},get silentFallbackWarn(){return K(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(e){t.fallbackWarn=K(e)?!e:e},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(e){t.fallbackFormat=e},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(e){t.setPostTranslationHandler(e)},get sync(){return t.inheritLocale},set sync(e){t.inheritLocale=e},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(e){t.warnHtmlMessage="off"!==e},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(e){t.escapeParameter=e},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(e){},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...e){const[r,n,o]=e,a={};let i=null,s=null;if(!X(r))throw no(ro.INVALID_ARGUMENT);const l=r;return X(n)?a.locale=n:G(n)?i=n:ee(n)&&(s=n),G(o)?i=o:ee(o)&&(s=o),Reflect.apply(t.t,t,[l,i||s||{},a])},rt:(...e)=>Reflect.apply(t.rt,t,[...e]),tc(...e){const[r,n,o]=e,a={plural:1};let i=null,s=null;if(!X(r))throw no(ro.INVALID_ARGUMENT);const l=r;return X(n)?a.locale=n:P(n)?a.plural=n:G(n)?i=n:ee(n)&&(s=n),X(o)?a.locale=o:G(o)?i=o:ee(o)&&(s=o),Reflect.apply(t.t,t,[l,i||s||{},a])},te:(e,r)=>t.te(e,r),tm:e=>t.tm(e),getLocaleMessage:e=>t.getLocaleMessage(e),setLocaleMessage(e,r){t.setLocaleMessage(e,r)},mergeLocaleMessage(e,r){t.mergeLocaleMessage(e,r)},d:(...e)=>Reflect.apply(t.d,t,[...e]),getDateTimeFormat:e=>t.getDateTimeFormat(e),setDateTimeFormat(e,r){t.setDateTimeFormat(e,r)},mergeDateTimeFormat(e,r){t.mergeDateTimeFormat(e,r)},n:(...e)=>Reflect.apply(t.n,t,[...e]),getNumberFormat:e=>t.getNumberFormat(e),setNumberFormat(e,r){t.setNumberFormat(e,r)},mergeNumberFormat(e,r){t.mergeNumberFormat(e,r)},getChoiceIndex:(e,t)=>-1,__onComponentInstanceCreated(t){const{componentInstanceCreatedListener:n}=e;n&&n(t,r)}};return r}}const xo={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>"parent"===e||"global"===e,default:"parent"},i18n:{type:Object}};function zo(e){return Rn}const ko={name:"i18n-t",props:U({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>P(e)||!isNaN(e)}},xo),setup(e,t){const{slots:r,attrs:n}=t,o=e.i18n||Ro({useScope:e.scope,__useComponent:!0});return()=>{const a=Object.keys(r).filter((e=>"_"!==e)),i={};e.locale&&(i.locale=e.locale),void 0!==e.plural&&(i.plural=X(e.plural)?+e.plural:e.plural);const s=function({slots:e},t){return 1===t.length&&"default"===t[0]?(e.default?e.default():[]).reduce(((e,t)=>[...e,...G(t.children)?t.children:[t]]),[]):t.reduce(((t,r)=>{const n=e[r];return n&&(t[r]=n()),t}),{})}(t,a),l=o[oo](e.keypath,s,i),c=U({},n);return Xn(X(e.tag)||J(e.tag)?e.tag:zo(),c,l)}}};function Oo(e,t,r,n){const{slots:o,attrs:a}=t;return()=>{const t={part:!0};let i={};e.locale&&(t.locale=e.locale),X(e.format)?t.key=e.format:J(e.format)&&(X(e.format.key)&&(t.key=e.format.key),i=Object.keys(e.format).reduce(((t,n)=>r.includes(n)?U({},t,{[n]:e.format[n]}):t),{}));const s=n(e.value,t,i);let l=[t.key];G(s)?l=s.map(((e,t)=>{const r=o[e.type],n=r?r({[e.type]:e.value,index:t,parts:s}):[e.value];var a;return G(a=n)&&!X(a[0])&&(n[0].key=`${e.type}-${t}`),n})):X(s)&&(l=[s]);const c=U({},a);return Xn(X(e.tag)||J(e.tag)?e.tag:zo(),c,l)}}const jo={name:"i18n-n",props:U({value:{type:Number,required:!0},format:{type:[String,Object]}},xo),setup(e,t){const r=e.i18n||Ro({useScope:"parent",__useComponent:!0});return Oo(e,t,Ge,((...e)=>r[io](...e)))}},Eo={name:"i18n-d",props:U({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},xo),setup(e,t){const r=e.i18n||Ro({useScope:"parent",__useComponent:!0});return Oo(e,t,Ve,((...e)=>r[ao](...e)))}};function Io(e){if(X(e))return{path:e};if(ee(e)){if(!("path"in e))throw no(ro.REQUIRED_VALUE);return e}throw no(ro.INVALID_VALUE)}function So(e){const{path:t,locale:r,args:n,choice:o,plural:a}=e,i={},s=n||{};return X(r)&&(i.locale=r),P(o)&&(i.plural=o),P(a)&&(i.plural=a),[t,s,i]}function No(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[so](t.pluralizationRules||e.pluralizationRules);const r=uo(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(r).forEach((t=>e.mergeLocaleMessage(t,r[t]))),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach((r=>e.mergeDateTimeFormat(r,t.datetimeFormats[r]))),t.numberFormats&&Object.keys(t.numberFormats).forEach((r=>e.mergeNumberFormat(r,t.numberFormats[r]))),e}const Lo=C("global-vue-i18n");function Ro(e={}){const t=Bn();if(null==t)throw no(ro.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&null!=t.appContext.app&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw no(ro.NOT_INSLALLED);const r=function(e){{const t=pn(e.isCE?Lo:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw no(e.isCE?ro.NOT_INSLALLED_WITH_PROVIDE:ro.UNEXPECTED_ERROR);return t}}(t),n=function(e){return"composition"===e.mode?e.global:e.global.__composer}(r),o=mo(t),a=function(e,t){return M(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}(e,o);if(__VUE_I18N_LEGACY_API__&&"legacy"===r.mode&&!e.__useComponent){if(!r.allowComposition)throw no(ro.NOT_AVAILABLE_IN_LEGACY_MODE);return function(e,t,r,n={}){const o="local"===t,a=(null,Ur(null,!0));if(o&&e.proxy&&!e.proxy.$options.i18n&&!e.proxy.$options.__i18n)throw no(ro.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const i=!K(n.inheritLocale)||n.inheritLocale,s=Wr(o&&i?r.locale.value:X(n.locale)?n.locale:be),l=Wr(o&&i?r.fallbackLocale.value:X(n.fallbackLocale)||G(n.fallbackLocale)||ee(n.fallbackLocale)||!1===n.fallbackLocale?n.fallbackLocale:s.value),c=Wr(uo(s.value,n)),u=Wr(ee(n.datetimeFormats)?n.datetimeFormats:{[s.value]:{}}),f=Wr(ee(n.numberFormats)?n.numberFormats:{[s.value]:{}}),p=o?r.missingWarn:!K(n.missingWarn)&&!D(n.missingWarn)||n.missingWarn,d=o?r.fallbackWarn:!K(n.fallbackWarn)&&!D(n.fallbackWarn)||n.fallbackWarn,m=o?r.fallbackRoot:!K(n.fallbackRoot)||n.fallbackRoot,h=!!n.fallbackFormat,_=Y(n.missing)?n.missing:null,v=Y(n.postTranslation)?n.postTranslation:null,g=o?r.warnHtmlMessage:!K(n.warnHtmlMessage)||n.warnHtmlMessage,y=!!n.escapeParameter,b=o?r.modifiers:ee(n.modifiers)?n.modifiers:{},w=n.pluralRules||o&&r.pluralRules;function x(e){return s.value,l.value,c.value,u.value,f.value,e()}const z={get id(){return a.value?a.value.id:-1},locale:Yn({get:()=>a.value?a.value.locale.value:s.value,set:e=>{a.value&&(a.value.locale.value=e),s.value=e}}),fallbackLocale:Yn({get:()=>a.value?a.value.fallbackLocale.value:l.value,set:e=>{a.value&&(a.value.fallbackLocale.value=e),l.value=e}}),messages:Yn((()=>a.value?a.value.messages.value:c.value)),datetimeFormats:Yn((()=>u.value)),numberFormats:Yn((()=>f.value)),get inheritLocale(){return a.value?a.value.inheritLocale:i},set inheritLocale(e){a.value&&(a.value.inheritLocale=e)},get availableLocales(){return a.value?a.value.availableLocales:Object.keys(c.value)},get modifiers(){return a.value?a.value.modifiers:b},get pluralRules(){return a.value?a.value.pluralRules:w},get isGlobal(){return!!a.value&&a.value.isGlobal},get missingWarn(){return a.value?a.value.missingWarn:p},set missingWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackWarn(){return a.value?a.value.fallbackWarn:d},set fallbackWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackRoot(){return a.value?a.value.fallbackRoot:m},set fallbackRoot(e){a.value&&(a.value.fallbackRoot=e)},get fallbackFormat(){return a.value?a.value.fallbackFormat:h},set fallbackFormat(e){a.value&&(a.value.fallbackFormat=e)},get warnHtmlMessage(){return a.value?a.value.warnHtmlMessage:g},set warnHtmlMessage(e){a.value&&(a.value.warnHtmlMessage=e)},get escapeParameter(){return a.value?a.value.escapeParameter:y},set escapeParameter(e){a.value&&(a.value.escapeParameter=e)},t:function(...e){return a.value?x((()=>Reflect.apply(a.value.t,null,[...e]))):x((()=>""))},getPostTranslationHandler:function(){return a.value?a.value.getPostTranslationHandler():v},setPostTranslationHandler:function(e){a.value&&a.value.setPostTranslationHandler(e)},getMissingHandler:function(){return a.value?a.value.getMissingHandler():_},setMissingHandler:function(e){a.value&&a.value.setMissingHandler(e)},rt:function(...e){return a.value?Reflect.apply(a.value.rt,null,[...e]):""},d:function(...e){return a.value?x((()=>Reflect.apply(a.value.d,null,[...e]))):x((()=>""))},n:function(...e){return a.value?x((()=>Reflect.apply(a.value.n,null,[...e]))):x((()=>""))},tm:function(e){return a.value?a.value.tm(e):{}},te:function(e,t){return!!a.value&&a.value.te(e,t)},getLocaleMessage:function(e){return a.value?a.value.getLocaleMessage(e):{}},setLocaleMessage:function(e,t){a.value&&(a.value.setLocaleMessage(e,t),c.value[e]=t)},mergeLocaleMessage:function(e,t){a.value&&a.value.mergeLocaleMessage(e,t)},getDateTimeFormat:function(e){return a.value?a.value.getDateTimeFormat(e):{}},setDateTimeFormat:function(e,t){a.value&&(a.value.setDateTimeFormat(e,t),u.value[e]=t)},mergeDateTimeFormat:function(e,t){a.value&&a.value.mergeDateTimeFormat(e,t)},getNumberFormat:function(e){return a.value?a.value.getNumberFormat(e):{}},setNumberFormat:function(e,t){a.value&&(a.value.setNumberFormat(e,t),f.value[e]=t)},mergeNumberFormat:function(e,t){a.value&&a.value.mergeNumberFormat(e,t)}};return yn((()=>{if(null==e.proxy||null==e.proxy.$i18n)throw no(ro.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const r=a.value=e.proxy.$i18n.__composer;"global"===t?(s.value=r.locale.value,l.value=r.fallbackLocale.value,c.value=r.messages.value,u.value=r.datetimeFormats.value,f.value=r.numberFormats.value):o&&function(e){e.locale.value=s.value,e.fallbackLocale.value=l.value,Object.keys(c.value).forEach((t=>{e.mergeLocaleMessage(t,c.value[t])})),Object.keys(u.value).forEach((t=>{e.mergeDateTimeFormat(t,u.value[t])})),Object.keys(f.value).forEach((t=>{e.mergeNumberFormat(t,f.value[t])})),e.escapeParameter=y,e.fallbackFormat=h,e.fallbackRoot=m,e.fallbackWarn=d,e.missingWarn=p,e.warnHtmlMessage=g}(r)})),z}(t,a,n,e)}if("global"===a)return ho(n,e,o),n;if("parent"===a){let o=function(e,t,r=!1){let n=null;const o=t.root;let a=t.parent;for(;null!=a;){const t=e;if("composition"===e.mode)n=t.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){const e=t.__getInstance(a);null!=e&&(n=e.__composer,r&&n&&!n[lo]&&(n=null))}if(null!=n)break;if(o===a)break;a=a.parent}return n}(r,t,e.__useComponent);return null==o&&(o=n),o}const i=r;let s=i.__getInstance(t);if(null==s){const r=U({},e);"__i18n"in o&&(r.__i18n=o.__i18n),n&&(r.__root=n),s=bo(r),function(e,t,r){bn((()=>{}),t),wn((()=>{e.__deleteInstance(t)}),t)}(i,t),i.__setInstance(t,s)}return s}const Fo=["locale","fallbackLocale","availableLocales"],Ao=["t","rt","d","n","tm"];var To;if(xe=function(e,t){if(!J(e))return null;let r=ae.get(t);if(r||(r=function(e){const t=[];let r,n,o,a,i,s,l,c=-1,u=0,f=0;const p=[];function d(){const t=e[c+1];if(5===u&&"'"===t||6===u&&'"'===t)return c++,o="\\"+t,p[0](),!0}for(p[0]=()=>{void 0===n?n=o:n+=o},p[1]=()=>{void 0!==n&&(t.push(n),n=void 0)},p[2]=()=>{p[0](),f++},p[3]=()=>{if(f>0)f--,u=4,p[0]();else{if(f=0,void 0===n)return!1;if(n=function(e){const t=e.trim();return("0"!==e.charAt(0)||!isNaN(parseInt(e)))&&(r=t,ne.test(r)?function(e){const t=e.charCodeAt(0);return t!==e.charCodeAt(e.length-1)||34!==t&&39!==t?e:e.slice(1,-1)}(t):"*"+t);var r}(n),!1===n)return!1;p[1]()}};null!==u;)if(c++,r=e[c],"\\"!==r||!d()){if(a=oe(r),l=re[u],i=l[a]||l.l||8,8===i)return;if(u=i[0],void 0!==i[1]&&(s=p[i[1]],s&&(o=r,!1===s())))return;if(7===u)return t}}(t),r&&ae.set(t,r)),!r)return null;const n=r.length;let o=e,a=0;for(;a<n;){const e=o[r[a]];if(void 0===e)return null;o=e,a++}return o},ze=_e,function(){let e=!1;"boolean"!=typeof __VUE_I18N_FULL_INSTALL__&&(e=!0,V().__VUE_I18N_FULL_INSTALL__=!0),"boolean"!=typeof __VUE_I18N_LEGACY_API__&&(e=!0,V().__VUE_I18N_LEGACY_API__=!0),"boolean"!=typeof __INTLIFY_PROD_DEVTOOLS__&&(V().__INTLIFY_PROD_DEVTOOLS__=!1)}(),__INTLIFY_PROD_DEVTOOLS__){const e=V();e.__INTLIFY__=!0,To=e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__,pe=To}var Co=function(e={},t){const r=__VUE_I18N_LEGACY_API__&&K(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=!K(e.globalInjection)||e.globalInjection,o=!__VUE_I18N_LEGACY_API__||!r||!!e.allowComposition,a=new Map,[i,s]=function(e,t,r){const n=new Ot(undefined);{const r=__VUE_I18N_LEGACY_API__&&t?n.run((()=>wo(e))):n.run((()=>bo(e)));if(null==r)throw no(ro.UNEXPECTED_ERROR);return[n,r]}}(e,r),l=C("");{const e={get mode(){return __VUE_I18N_LEGACY_API__&&r?"legacy":"composition"},get allowComposition(){return o},async install(t,...o){t.__VUE_I18N_SYMBOL__=l,t.provide(t.__VUE_I18N_SYMBOL__,e),!r&&n&&function(e,t){const r=Object.create(null);Fo.forEach((e=>{const n=Object.getOwnPropertyDescriptor(t,e);if(!n)throw no(ro.UNEXPECTED_ERROR);const o=Mr(n.value)?{get:()=>n.value.value,set(e){n.value.value=e}}:{get:()=>n.get&&n.get()};Object.defineProperty(r,e,o)})),e.config.globalProperties.$i18n=r,Ao.forEach((r=>{const n=Object.getOwnPropertyDescriptor(t,r);if(!n||!n.value)throw no(ro.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${r}`,n)}))}(t,e.global),__VUE_I18N_FULL_INSTALL__&&function(e,t,...r){const n=ee(r[0])?r[0]:{},o=!!n.useI18nComponentName;(!K(n.globalInstall)||n.globalInstall)&&(e.component(o?"i18n":ko.name,ko),e.component(jo.name,jo),e.component(Eo.name,Eo)),e.directive("t",function(e){const t=t=>{const{instance:r,modifiers:n,value:o}=t;if(!r||!r.$)throw no(ro.UNEXPECTED_ERROR);const a=function(e,t){const r=e;if("composition"===e.mode)return r.__getInstance(t)||e.global;{const n=r.__getInstance(t);return null!=n?n.__composer:e.global.__composer}}(e,r.$),i=Io(o);return[Reflect.apply(a.t,a,[...So(i)]),a]};return{created:(r,n)=>{const[o,a]=t(n);A&&e.global===a&&(r.__i18nWatcher=mn(a.locale,(()=>{n.instance&&n.instance.$forceUpdate()}))),r.__composer=a,r.textContent=o},unmounted:e=>{A&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},beforeUpdate:(e,{value:t})=>{if(e.__composer){const r=e.__composer,n=Io(t);e.textContent=Reflect.apply(r.t,r,[...So(n)])}},getSSRProps:e=>{const[r]=t(e);return{textContent:r}}}}(t))}(t,e,...o),__VUE_I18N_LEGACY_API__&&r&&t.mixin(function(e,t,r){return{beforeCreate(){const n=Bn();if(!n)throw no(ro.UNEXPECTED_ERROR);const o=this.$options;if(o.i18n){const r=o.i18n;o.__i18n&&(r.__i18n=o.__i18n),r.__root=t,this===this.$root?this.$i18n=No(e,r):(r.__injectWithOption=!0,this.$i18n=wo(r))}else o.__i18n?this===this.$root?this.$i18n=No(e,o):this.$i18n=wo({__i18n:o.__i18n,__injectWithOption:!0,__root:t}):this.$i18n=e;o.__i18nGlobal&&ho(t,o,o),e.__onComponentInstanceCreated(this.$i18n),r.__setInstance(n,this.$i18n),this.$t=(...e)=>this.$i18n.t(...e),this.$rt=(...e)=>this.$i18n.rt(...e),this.$tc=(...e)=>this.$i18n.tc(...e),this.$te=(e,t)=>this.$i18n.te(e,t),this.$d=(...e)=>this.$i18n.d(...e),this.$n=(...e)=>this.$i18n.n(...e),this.$tm=e=>this.$i18n.tm(e)},mounted(){},unmounted(){const e=Bn();if(!e)throw no(ro.UNEXPECTED_ERROR);delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,r.__deleteInstance(e),delete this.$i18n}}}(s,s.__composer,e));const a=t.unmount;t.unmount=()=>{e.dispose(),a()}},get global(){return s},dispose(){i.stop()},__instances:a,__getInstance:function(e){return a.get(e)||null},__setInstance:function(e,t){a.set(e,t)},__deleteInstance:function(e){a.delete(e)}};return e}}({locale:"en",fallbackLocale:"en",messages:{ar:r(5464),ca:r(3708),cs:r(122),de:r(414),eo:r(5775),es:r(8438),et:r(9997),eu:r(9975),fi:r(9923),fr:r(8375),ga:r(1746),he:r(9369),hu:r(377),it:r(6710),ja:r(333),ja_easy:r(6534),ko:r(7379),nb:r(8103),nl:r(728),oc:r(3932),pl:r(7028),pt:r(789),ro:r(5032),ru:r(3460),sk:r(6139),te:r(5751),zh:r(4389),en:r(2551)}});function Po(){return clients.matchAll({includeUncontrolled:!0}).then((function(e){return e.filter((function(e){return"window"===e.type}))}))}var Do=function(){var e=t(o().mark((function e(){var t,r;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i().getItem("vuex-lz");case 2:t=e.sent,r=t.config.interfaceLanguage||"en",Co.locale=r;case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Mo=function(){var e=t(o().mark((function e(t){var r,n,a,s,l,c,u,f;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i().getItem("vuex-lz").then((function(e){return e.config.webPushNotifications}));case 2:return r=e.sent,e.next=5,Po();case 5:return n=e.sent,e.next=8,Do();case 8:if(!r||0!==n.length){e.next=20;break}return a=t.data.json(),s="".concat(self.registration.scope,"api/v1/notifications/").concat(a.notification_id),e.next=13,fetch(s,{headers:{Authorization:"Bearer "+a.access_token}});case 13:return l=e.sent,e.next=16,l.json();case 16:c=e.sent,u=R(c),f=h(u,Co),self.registration.showNotification(f.title,f);case 20:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();self.addEventListener("push",function(){var e=t(o().mark((function e(t){return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.data&&t.waitUntil(Mo(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),self.addEventListener("notificationclick",(function(e){e.notification.close(),e.waitUntil(Po().then((function(e){for(var t=0;t<e.length;t++){var r=e[t];if("/"===r.url&&"focus"in r)return r.focus()}if(clients.openWindow)return clients.openWindow("/")})))}))})()})(); +(()=>{var e={5464:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["منشور مجهول، جارٍ البحث عنه…"])},favorited_you:e=>{const{normalize:t}=e;return t(["أعجِب بمنشورك"])},followed_you:e=>{const{normalize:t}=e;return t(["يُتابعك"])},load_older:e=>{const{normalize:t}=e;return t(["تحميل الإشعارات الأقدم"])},notifications:e=>{const{normalize:t}=e;return t(["الاشعارات"])},read:e=>{const{normalize:t}=e;return t(["مقروء!"])},repeated_you:e=>{const{normalize:t}=e;return t(["شارَك منشورك"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["خطأ أثناء جلب الاشعارات: ",r(n(0))])},follow_request:e=>{const{normalize:t}=e;return t(["يريد متابعتك"])},poll_ended:e=>{const{normalize:t}=e;return t(["انتهى الاستطلاع"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["لا مزيد من الإشعارات"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["تفاعل بـ",r(n(0))])},submitted_report:e=>{const{normalize:t}=e;return t(["أرسل بلاغًا"])},migrated_to:e=>{const{normalize:t}=e;return t(["انتقلَ إلى"])}}}},3708:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Publicació desconeguda, s'està cercant…"])},favorited_you:e=>{const{normalize:t}=e;return t(["ha marcat un estat teu"])},followed_you:e=>{const{normalize:t}=e;return t(["ha començat a seguir-te"])},load_older:e=>{const{normalize:t}=e;return t(["Carrega més notificacions"])},notifications:e=>{const{normalize:t}=e;return t(["Notificacions"])},read:e=>{const{normalize:t}=e;return t(["Llegit!"])},repeated_you:e=>{const{normalize:t}=e;return t(["ha repetit el teu estat"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrat a"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No més notificacions"])},follow_request:e=>{const{normalize:t}=e;return t(["et vol seguir"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["ha reaccionat amb ",r(n(0))])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Error obtenint notificacions: ",r(n(0))])}}}},122:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Neznámý příspěvek, hledám jej…"])},favorited_you:e=>{const{normalize:t}=e;return t(["si oblíbil/a váš příspěvek"])},followed_you:e=>{const{normalize:t}=e;return t(["vás nyní sleduje"])},load_older:e=>{const{normalize:t}=e;return t(["Načíst starší oznámení"])},notifications:e=>{const{normalize:t}=e;return t(["Oznámení"])},read:e=>{const{normalize:t}=e;return t(["Číst!"])},repeated_you:e=>{const{normalize:t}=e;return t(["zopakoval/a váš příspěvek"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Žádná další oznámení"])}}}},414:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Unbekannte Nachricht, suche danach…"])},favorited_you:e=>{const{normalize:t}=e;return t(["favorisierte deine Nachricht"])},followed_you:e=>{const{normalize:t}=e;return t(["folgt dir"])},load_older:e=>{const{normalize:t}=e;return t(["Ältere Benachrichtigungen laden"])},notifications:e=>{const{normalize:t}=e;return t(["Benachrichtigungen"])},read:e=>{const{normalize:t}=e;return t(["Gelesen!"])},repeated_you:e=>{const{normalize:t}=e;return t(["wiederholte deine Nachricht"])},follow_request:e=>{const{normalize:t}=e;return t(["möchte dir folgen"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrierte zu"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reagierte mit ",r(n(0))])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Keine Benachrichtigungen mehr"])},error:e=>{const{normalize:t}=e;return t(["Error beim laden von Neuigkeiten"])}}}},2551:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Unknown status, searching for it…"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Error fetching notifications: ",r(n(0))])},favorited_you:e=>{const{normalize:t}=e;return t(["favorited your status"])},followed_you:e=>{const{normalize:t}=e;return t(["followed you"])},follow_request:e=>{const{normalize:t}=e;return t(["wants to follow you"])},load_older:e=>{const{normalize:t}=e;return t(["Load older notifications"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},read:e=>{const{normalize:t}=e;return t(["Read!"])},repeated_you:e=>{const{normalize:t}=e;return t(["repeated your status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No more notifications"])},migrated_to:e=>{const{normalize:t}=e;return t(["migrated to"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reacted with ",r(n(0))])},submitted_report:e=>{const{normalize:t}=e;return t(["submitted a report"])},poll_ended:e=>{const{normalize:t}=e;return t(["poll has ended"])}}}},5775:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Nekonata afiŝo, serĉante ĝin…"])},favorited_you:e=>{const{normalize:t}=e;return t(["ŝatis vian afiŝon"])},followed_you:e=>{const{normalize:t}=e;return t(["ekabonis vin"])},load_older:e=>{const{normalize:t}=e;return t(["Enlegi pli malnovajn sciigojn"])},notifications:e=>{const{normalize:t}=e;return t(["Sciigoj"])},read:e=>{const{normalize:t}=e;return t(["Legite!"])},repeated_you:e=>{const{normalize:t}=e;return t(["ripetis vian afiŝon"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Neniuj pliaj sciigoj"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reagis per ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["migris al"])},follow_request:e=>{const{normalize:t}=e;return t(["volas vin aboni"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Eraris akirado de sciigoj: ",r(n(0))])},submitted_report:e=>{const{normalize:t}=e;return t(["sendis raporton"])},poll_ended:e=>{const{normalize:t}=e;return t(["enketo finiĝis"])}}}},8438:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Estado desconocido, buscándolo…"])},favorited_you:e=>{const{normalize:t}=e;return t(["le gusta tu estado"])},followed_you:e=>{const{normalize:t}=e;return t(["empezó a seguirte"])},load_older:e=>{const{normalize:t}=e;return t(["Cargar notificaciones antiguas"])},notifications:e=>{const{normalize:t}=e;return t(["Notificaciones"])},read:e=>{const{normalize:t}=e;return t(["¡Leído!"])},repeated_you:e=>{const{normalize:t}=e;return t(["repitió tu estado"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["No hay más notificaciones"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reaccionó con ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["migrado a"])},follow_request:e=>{const{normalize:t}=e;return t(["quiere seguirte"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Error obteniendo notificaciones:",r(n(0))])}}}},9997:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{followed_you:e=>{const{normalize:t}=e;return t(["alustas sinu jälgimist"])},notifications:e=>{const{normalize:t}=e;return t(["Teated"])},read:e=>{const{normalize:t}=e;return t(["Loe!"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reageeris ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["kolis"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Rohkem teateid ei ole"])},repeated_you:e=>{const{normalize:t}=e;return t(["taaspostitas su staatuse"])},load_older:e=>{const{normalize:t}=e;return t(["Laadi vanemad teated"])},follow_request:e=>{const{normalize:t}=e;return t(["soovib Teid jälgida"])},favorited_you:e=>{const{normalize:t}=e;return t(["lisas su staatuse lemmikuks"])},broken_favorite:e=>{const{normalize:t}=e;return t(["Tundmatu staatus, otsin…"])}}}},9975:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Egoera ezezaguna, bilatzen…"])},favorited_you:e=>{const{normalize:t}=e;return t(["zure mezua gogoko du"])},followed_you:e=>{const{normalize:t}=e;return t(["Zu jarraitzen zaitu"])},load_older:e=>{const{normalize:t}=e;return t(["Kargatu jakinarazpen zaharragoak"])},notifications:e=>{const{normalize:t}=e;return t(["Jakinarazpenak"])},read:e=>{const{normalize:t}=e;return t(["Irakurrita!"])},repeated_you:e=>{const{normalize:t}=e;return t(["zure mezua errepikatu du"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Ez dago jakinarazpen gehiago"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t([r(n(0)),"kin erreakzionatu zuen"])},migrated_to:e=>{const{normalize:t}=e;return t(["hona migratua:"])},follow_request:e=>{const{normalize:t}=e;return t(["jarraitu nahi zaitu"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Errorea jakinarazpenak eskuratzean: ",r(n(0))])}}}},9923:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Viestiä ei löydetty…"])},favorited_you:e=>{const{normalize:t}=e;return t(["tykkäsi viestistäsi"])},followed_you:e=>{const{normalize:t}=e;return t(["seuraa sinua"])},load_older:e=>{const{normalize:t}=e;return t(["Lataa vanhempia ilmoituksia"])},notifications:e=>{const{normalize:t}=e;return t(["Ilmoitukset"])},read:e=>{const{normalize:t}=e;return t(["Lue!"])},repeated_you:e=>{const{normalize:t}=e;return t(["toisti viestisi"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Ei enempää ilmoituksia"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["lisäsi reaktion ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["siirtyi sivulle"])},follow_request:e=>{const{normalize:t}=e;return t(["haluaa seurata sinua"])}}}},8375:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Message inconnu, recherche en cours…"])},favorited_you:e=>{const{normalize:t}=e;return t(["a aimé votre statut"])},followed_you:e=>{const{normalize:t}=e;return t(["vous suit"])},load_older:e=>{const{normalize:t}=e;return t(["Charger les notifications précédentes"])},notifications:e=>{const{normalize:t}=e;return t(["Notifications"])},read:e=>{const{normalize:t}=e;return t(["Lu !"])},repeated_you:e=>{const{normalize:t}=e;return t(["a partagé votre statut"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Aucune notification supplémentaire"])},migrated_to:e=>{const{normalize:t}=e;return t(["a migré à"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["a réagi avec ",r(n(0))])},follow_request:e=>{const{normalize:t}=e;return t(["veut vous suivre"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Erreur de chargement des notifications : ",r(n(0))])},poll_ended:e=>{const{normalize:t}=e;return t(["Sondage terminé"])},submitted_report:e=>{const{normalize:t}=e;return t(["Rapport envoyé"])}}}},1746:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Post anaithnid. Cuardach dó…"])},favorited_you:e=>{const{normalize:t}=e;return t(["toghadh le do phost"])},followed_you:e=>{const{normalize:t}=e;return t(["lean tú"])},load_older:e=>{const{normalize:t}=e;return t(["Luchtaigh fógraí aosta"])},notifications:e=>{const{normalize:t}=e;return t(["Fógraí"])},read:e=>{const{normalize:t}=e;return t(["Léigh!"])},repeated_you:e=>{const{normalize:t}=e;return t(["athphostáil tú"])}}}},9369:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["סטאטוס לא ידוע, מחפש…"])},favorited_you:e=>{const{normalize:t}=e;return t(["אהב את הסטטוס שלך"])},followed_you:e=>{const{normalize:t}=e;return t(["עקב אחריך"])},load_older:e=>{const{normalize:t}=e;return t(["טען התראות ישנות"])},notifications:e=>{const{normalize:t}=e;return t(["התראות"])},read:e=>{const{normalize:t}=e;return t(["קרא!"])},repeated_you:e=>{const{normalize:t}=e;return t(["חזר על הסטטוס שלך"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["לא עוד התראות"])}}}},377:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{followed_you:e=>{const{normalize:t}=e;return t(["követ téged"])},notifications:e=>{const{normalize:t}=e;return t(["Értesítések"])},read:e=>{const{normalize:t}=e;return t(["Olvasva!"])}}}},6710:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{followed_you:e=>{const{normalize:t}=e;return t(["ti segue"])},notifications:e=>{const{normalize:t}=e;return t(["Notifiche"])},read:e=>{const{normalize:t}=e;return t(["Letto!"])},broken_favorite:e=>{const{normalize:t}=e;return t(["Stato sconosciuto, lo sto cercando…"])},favorited_you:e=>{const{normalize:t}=e;return t(["ha gradito"])},load_older:e=>{const{normalize:t}=e;return t(["Carica notifiche precedenti"])},repeated_you:e=>{const{normalize:t}=e;return t(["ha condiviso il tuo messaggio"])},follow_request:e=>{const{normalize:t}=e;return t(["vuole seguirti"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Fine delle notifiche"])},migrated_to:e=>{const{normalize:t}=e;return t(["è migrato verso"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["ha reagito con ",r(n(0))])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Errore nel caricare le notifiche: ",r(n(0))])}}}},6534:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["ステータスがみつかりません。さがしています…"])},favorited_you:e=>{const{normalize:t}=e;return t(["あなたのステータスがおきにいりされました"])},followed_you:e=>{const{normalize:t}=e;return t(["フォローされました"])},load_older:e=>{const{normalize:t}=e;return t(["ふるいつうちをみる"])},notifications:e=>{const{normalize:t}=e;return t(["つうち"])},read:e=>{const{normalize:t}=e;return t(["よんだ!"])},repeated_you:e=>{const{normalize:t}=e;return t(["あなたのステータスがリピートされました"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["つうちはありません"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["つうちをとりにいくことに、しっぱいしました: ",r(n(0))])},follow_request:e=>{const{normalize:t}=e;return t(["あなたをフォローしたいです"])},migrated_to:e=>{const{normalize:t}=e;return t(["インスタンスを、ひっこしました"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t([r(n(0))," でリアクションしました"])},poll_ended:e=>{const{normalize:t}=e;return t(["とうひょうが、おわりました"])},submitted_report:e=>{const{normalize:t}=e;return t(["つうほうしました"])}}}},333:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["ステータスが見つかりません。探しています…"])},favorited_you:e=>{const{normalize:t}=e;return t(["あなたのステータスがお気に入りされました"])},followed_you:e=>{const{normalize:t}=e;return t(["フォローされました"])},load_older:e=>{const{normalize:t}=e;return t(["古い通知をみる"])},notifications:e=>{const{normalize:t}=e;return t(["通知"])},read:e=>{const{normalize:t}=e;return t(["読んだ!"])},repeated_you:e=>{const{normalize:t}=e;return t(["あなたのステータスがリピートされました"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["通知はありません"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t([r(n(0))," でリアクションしました"])},migrated_to:e=>{const{normalize:t}=e;return t(["インスタンスを引っ越しました"])},follow_request:e=>{const{normalize:t}=e;return t(["あなたをフォローしたいです"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["通知の取得に失敗しました: ",r(n(0))])}}}},7379:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["알 수 없는 게시물입니다, 검색합니다…"])},favorited_you:e=>{const{normalize:t}=e;return t(["관심을 가짐"])},followed_you:e=>{const{normalize:t}=e;return t(["팔로우함"])},load_older:e=>{const{normalize:t}=e;return t(["이전 알림 불러오기"])},notifications:e=>{const{normalize:t}=e;return t(["알림"])},read:e=>{const{normalize:t}=e;return t(["읽음!"])},repeated_you:e=>{const{normalize:t}=e;return t(["리핏함"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["알림이 없습니다"])},migrated_to:e=>{const{normalize:t}=e;return t(["이사했습니다"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t([r(n(0))," 로 반응했습니다"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["알림 불러오기 실패: ",r(n(0))])},follow_request:e=>{const{normalize:t}=e;return t(["팔로우 요청"])},submitted_report:e=>{const{normalize:t}=e;return t(["신고 내용을 전송함"])},poll_ended:e=>{const{normalize:t}=e;return t(["투표가 끝남"])}}}},8103:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Ukjent status, leter etter den…"])},favorited_you:e=>{const{normalize:t}=e;return t(["likte din status"])},followed_you:e=>{const{normalize:t}=e;return t(["fulgte deg"])},load_older:e=>{const{normalize:t}=e;return t(["Last eldre varsler"])},notifications:e=>{const{normalize:t}=e;return t(["Varslinger"])},read:e=>{const{normalize:t}=e;return t(["Les!"])},repeated_you:e=>{const{normalize:t}=e;return t(["Gjentok din status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Ingen gjenstående varsler"])},follow_request:e=>{const{normalize:t}=e;return t(["ønsker å følge deg"])}}}},728:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Onbekend bericht, aan het zoeken…"])},favorited_you:e=>{const{normalize:t}=e;return t(["vond je bericht leuk"])},followed_you:e=>{const{normalize:t}=e;return t(["volgt jou"])},load_older:e=>{const{normalize:t}=e;return t(["Oudere meldingen laden"])},notifications:e=>{const{normalize:t}=e;return t(["Meldingen"])},read:e=>{const{normalize:t}=e;return t(["Gelezen!"])},repeated_you:e=>{const{normalize:t}=e;return t(["herhaalde je bericht"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Geen meldingen meer"])},migrated_to:e=>{const{normalize:t}=e;return t(["is gemigreerd naar"])},follow_request:e=>{const{normalize:t}=e;return t(["wil je volgen"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reageerde met ",r(n(0))])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Fout bij ophalen van meldingen: ",r(n(0))])},poll_ended:e=>{const{normalize:t}=e;return t(["peiling is beëindigd"])}}}},3932:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Estatut desconegut, sèm a lo cercar..."])},favorited_you:e=>{const{normalize:t}=e;return t(["a aimat vòstre estatut"])},followed_you:e=>{const{normalize:t}=e;return t(["vos a seguit"])},load_older:e=>{const{normalize:t}=e;return t(["Cargar las notificacions mai ancianas"])},notifications:e=>{const{normalize:t}=e;return t(["Notficacions"])},read:e=>{const{normalize:t}=e;return t(["Legit !"])},repeated_you:e=>{const{normalize:t}=e;return t(["a repetit vòstre estatut"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Pas mai de notificacions"])}}}},7028:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Nieznany status, szukam go…"])},favorited_you:e=>{const{normalize:t}=e;return t(["dodał(-a) twój status do ulubionych"])},followed_you:e=>{const{normalize:t}=e;return t(["obserwuje cię"])},load_older:e=>{const{normalize:t}=e;return t(["Załaduj starsze powiadomienia"])},notifications:e=>{const{normalize:t}=e;return t(["Powiadomienia"])},read:e=>{const{normalize:t}=e;return t(["Przeczytane!"])},repeated_you:e=>{const{normalize:t}=e;return t(["powtórzył(-a) twój status"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Nie masz więcej powiadomień"])},migrated_to:e=>{const{normalize:t}=e;return t(["wyemigrował do"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["zareagował z ",r(n(0))])},follow_request:e=>{const{normalize:t}=e;return t(["chce ciebie obserwować"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Błąd pobierania powiadomień: ",r(n(0))])}}}},789:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Publicação desconhecida, a procurar…"])},favorited_you:e=>{const{normalize:t}=e;return t(["gostou do teu post"])},followed_you:e=>{const{normalize:t}=e;return t(["seguiu-te"])},load_older:e=>{const{normalize:t}=e;return t(["Carregar notificações antigas"])},notifications:e=>{const{normalize:t}=e;return t(["Notificações"])},read:e=>{const{normalize:t}=e;return t(["Lido!"])},repeated_you:e=>{const{normalize:t}=e;return t(["partilhou o teu post"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Sem mais notificações"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reagiu com ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["migrou para"])},follow_request:e=>{const{normalize:t}=e;return t(["quer seguir-te"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Erro ao obter notificações: ",r(n(0))])}}}},5032:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{followed_you:e=>{const{normalize:t}=e;return t(["te-a urmărit"])},notifications:e=>{const{normalize:t}=e;return t(["Notificări"])},read:e=>{const{normalize:t}=e;return t(["Citit!"])}}}},3460:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Неизвестный статус, ищем…"])},favorited_you:e=>{const{normalize:t}=e;return t(["нравится ваш статус"])},followed_you:e=>{const{normalize:t}=e;return t(["начал(а) читать вас"])},load_older:e=>{const{normalize:t}=e;return t(["Загрузить старые уведомления"])},notifications:e=>{const{normalize:t}=e;return t(["Уведомления"])},read:e=>{const{normalize:t}=e;return t(["Прочесть"])},repeated_you:e=>{const{normalize:t}=e;return t(["повторил(а) ваш статус"])},follow_request:e=>{const{normalize:t}=e;return t(["хочет читать вас"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["добавил(а) реакцию: ",r(n(0))])},migrated_to:e=>{const{normalize:t}=e;return t(["перехал на"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Нет дальнейших уведомлений"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Ошибка при обновлении уведомлений: ",r(n(0))])}}}},6139:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["Neznáma správa, dohľadávam ju…"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["Chyba získavania upozornení: ",r(n(0))])},favorited_you:e=>{const{normalize:t}=e;return t(["si obľúbil tvoju správu"])},followed_you:e=>{const{normalize:t}=e;return t(["ťa nasleduje"])},follow_request:e=>{const{normalize:t}=e;return t(["ťa chce nasledovať"])},load_older:e=>{const{normalize:t}=e;return t(["Nahrať staršie upozornenia"])},notifications:e=>{const{normalize:t}=e;return t(["Upozornenia"])},read:e=>{const{normalize:t}=e;return t(["Prečítané!"])},repeated_you:e=>{const{normalize:t}=e;return t(["zopakoval tvoju správu"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["Žiadne ďalšie upozornenia"])},migrated_to:e=>{const{normalize:t}=e;return t(["sa presťahoval na"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["reagoval nasledovne ",r(n(0))])}}}},5751:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{}}},4389:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});const n={notifications:{broken_favorite:e=>{const{normalize:t}=e;return t(["未知的状态,正在搜索中…"])},favorited_you:e=>{const{normalize:t}=e;return t(["喜欢了你的状态"])},followed_you:e=>{const{normalize:t}=e;return t(["关注了你"])},load_older:e=>{const{normalize:t}=e;return t(["加载更早的通知"])},notifications:e=>{const{normalize:t}=e;return t(["通知"])},read:e=>{const{normalize:t}=e;return t(["已阅!"])},repeated_you:e=>{const{normalize:t}=e;return t(["转发了你的状态"])},no_more_notifications:e=>{const{normalize:t}=e;return t(["没有更多的通知"])},reacted_with:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["作出了 ",r(n(0))," 的反应"])},migrated_to:e=>{const{normalize:t}=e;return t(["迁移到了"])},follow_request:e=>{const{normalize:t}=e;return t(["想要关注你"])},error:e=>{const{normalize:t,interpolate:r,list:n}=e;return t(["取得通知时发生错误:",r(n(0))])},poll_ended:e=>{const{normalize:t}=e;return t(["投票结束了"])},submitted_report:e=>{const{normalize:t}=e;return t(["提交举报"])}}}},5573:e=>{"use strict";var t=/["'&<>]/;e.exports=function(e){var r,n=""+e,o=t.exec(n);if(!o)return n;var a="",i=0,s=0;for(i=o.index;i<n.length;i++){switch(n.charCodeAt(i)){case 34:r="&quot;";break;case 38:r="&amp;";break;case 39:r="&#39;";break;case 60:r="&lt;";break;case 62:r="&gt;";break;default:continue}s!==i&&(a+=n.substring(s,i)),s=i+1,a+=r}return s!==i?a+n.substring(s,i):a}},9483:function(e,t){!function(r){"object"==typeof t&&void 0!==e?e.exports=r():"function"==typeof define&&define.amd?define([],r):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).localforage=r()}((function(){return function e(t,r,n){function o(i,s){if(!r[i]){if(!t[i]){var l="function"==typeof require&&require;if(!s&&l)return l(i,!0);if(a)return a(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var u=r[i]={exports:{}};t[i][0].call(u.exports,(function(e){return o(t[i][1][e]||e)}),u,u.exports,e,t,r,n)}return r[i].exports}for(var a="function"==typeof require&&require,i=0;i<n.length;i++)o(n[i]);return o}({1:[function(e,t,r){(function(e){"use strict";var r,n,o=e.MutationObserver||e.WebKitMutationObserver;if(o){var a=0,i=new o(u),s=e.document.createTextNode("");i.observe(s,{characterData:!0}),r=function(){s.data=a=++a%2}}else if(e.setImmediate||void 0===e.MessageChannel)r="document"in e&&"onreadystatechange"in e.document.createElement("script")?function(){var t=e.document.createElement("script");t.onreadystatechange=function(){u(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(u,0)};else{var l=new e.MessageChannel;l.port1.onmessage=u,r=function(){l.port2.postMessage(0)}}var c=[];function u(){var e,t;n=!0;for(var r=c.length;r;){for(t=c,c=[],e=-1;++e<r;)t[e]();r=c.length}n=!1}t.exports=function(e){1!==c.push(e)||n||r()}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(e,t,r){"use strict";var n=e(1);function o(){}var a={},i=["REJECTED"],s=["FULFILLED"],l=["PENDING"];function c(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=l,this.queue=[],this.outcome=void 0,e!==o&&d(this,e)}function u(e,t,r){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(e,t,r){n((function(){var n;try{n=t(r)}catch(t){return a.reject(e,t)}n===e?a.reject(e,new TypeError("Cannot resolve promise with itself")):a.resolve(e,n)}))}function p(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments)}}function d(e,t){var r=!1;function n(t){r||(r=!0,a.reject(e,t))}function o(t){r||(r=!0,a.resolve(e,t))}var i=m((function(){t(o,n)}));"error"===i.status&&n(i.value)}function m(e,t){var r={};try{r.value=e(t),r.status="success"}catch(e){r.status="error",r.value=e}return r}t.exports=c,c.prototype.catch=function(e){return this.then(null,e)},c.prototype.then=function(e,t){if("function"!=typeof e&&this.state===s||"function"!=typeof t&&this.state===i)return this;var r=new this.constructor(o);return this.state!==l?f(r,this.state===s?e:t,this.outcome):this.queue.push(new u(r,e,t)),r},u.prototype.callFulfilled=function(e){a.resolve(this.promise,e)},u.prototype.otherCallFulfilled=function(e){f(this.promise,this.onFulfilled,e)},u.prototype.callRejected=function(e){a.reject(this.promise,e)},u.prototype.otherCallRejected=function(e){f(this.promise,this.onRejected,e)},a.resolve=function(e,t){var r=m(p,t);if("error"===r.status)return a.reject(e,r.value);var n=r.value;if(n)d(e,n);else{e.state=s,e.outcome=t;for(var o=-1,i=e.queue.length;++o<i;)e.queue[o].callFulfilled(t)}return e},a.reject=function(e,t){e.state=i,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},c.resolve=function(e){return e instanceof this?e:a.resolve(new this(o),e)},c.reject=function(e){var t=new this(o);return a.reject(t,e)},c.all=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var r=e.length,n=!1;if(!r)return this.resolve([]);for(var i=new Array(r),s=0,l=-1,c=new this(o);++l<r;)u(e[l],l);return c;function u(e,o){t.resolve(e).then((function(e){i[o]=e,++s!==r||n||(n=!0,a.resolve(c,i))}),(function(e){n||(n=!0,a.reject(c,e))}))}},c.race=function(e){if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var t=e.length,r=!1;if(!t)return this.resolve([]);for(var n,i=-1,s=new this(o);++i<t;)n=e[i],this.resolve(n).then((function(e){r||(r=!0,a.resolve(s,e))}),(function(e){r||(r=!0,a.reject(s,e))}));return s}},{1:1}],3:[function(e,t,r){(function(t){"use strict";"function"!=typeof t.Promise&&(t.Promise=e(2))}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2}],4:[function(e,t,r){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!=typeof mozIndexedDB)return mozIndexedDB;if("undefined"!=typeof OIndexedDB)return OIndexedDB;if("undefined"!=typeof msIndexedDB)return msIndexedDB}catch(e){return}}();function a(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(o){if("TypeError"!==o.name)throw o;for(var r=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),n=0;n<e.length;n+=1)r.append(e[n]);return r.getBlob(t.type)}}"undefined"==typeof Promise&&e(3);var i=Promise;function s(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function l(e,t,r){"function"==typeof t&&e.then(t),"function"==typeof r&&e.catch(r)}function c(e){return"string"!=typeof e&&(console.warn(e+" used as a key, but it is not a string."),e=String(e)),e}function u(){if(arguments.length&&"function"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}var f="local-forage-detect-blob-support",p=void 0,d={},m=Object.prototype.toString,h="readonly",_="readwrite";function v(e){var t=d[e.name],r={};r.promise=new i((function(e,t){r.resolve=e,r.reject=t})),t.deferredOperations.push(r),t.dbReady?t.dbReady=t.dbReady.then((function(){return r.promise})):t.dbReady=r.promise}function g(e){var t=d[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function y(e,t){var r=d[e.name].deferredOperations.pop();if(r)return r.reject(t),r.promise}function b(e,t){return new i((function(r,n){if(d[e.name]=d[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return r(e.db);v(e),e.db.close()}var a=[e.name];t&&a.push(e.version);var i=o.open.apply(o,a);t&&(i.onupgradeneeded=function(t){var r=i.result;try{r.createObjectStore(e.storeName),t.oldVersion<=1&&r.createObjectStore(f)}catch(r){if("ConstraintError"!==r.name)throw r;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),i.onerror=function(e){e.preventDefault(),n(i.error)},i.onsuccess=function(){var t=i.result;t.onversionchange=function(e){e.target.close()},r(t),g(e)}}))}function w(e){return b(e,!1)}function x(e){return b(e,!0)}function z(e,t){if(!e.db)return!0;var r=!e.db.objectStoreNames.contains(e.storeName),n=e.version<e.db.version,o=e.version>e.db.version;if(n&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),o||r){if(r){var a=e.db.version+1;a>e.version&&(e.version=a)}return!0}return!1}function k(e){return a([function(e){for(var t=e.length,r=new ArrayBuffer(t),n=new Uint8Array(r),o=0;o<t;o++)n[o]=e.charCodeAt(o);return r}(atob(e.data))],{type:e.type})}function O(e){return e&&e.__local_forage_encoded_blob}function j(e){var t=this,r=t._initReady().then((function(){var e=d[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return l(r,e,e),r}function E(e,t,r,n){void 0===n&&(n=1);try{var o=e.db.transaction(e.storeName,t);r(null,o)}catch(o){if(n>0&&(!e.db||"InvalidStateError"===o.name||"NotFoundError"===o.name))return i.resolve().then((function(){if(!e.db||"NotFoundError"===o.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),x(e)})).then((function(){return function(e){v(e);for(var t=d[e.name],r=t.forages,n=0;n<r.length;n++){var o=r[n];o._dbInfo.db&&(o._dbInfo.db.close(),o._dbInfo.db=null)}return e.db=null,w(e).then((function(t){return e.db=t,z(e)?x(e):t})).then((function(n){e.db=t.db=n;for(var o=0;o<r.length;o++)r[o]._dbInfo.db=n})).catch((function(t){throw y(e,t),t}))}(e).then((function(){E(e,t,r,n-1)}))})).catch(r);r(o)}}var I={_driver:"asyncStorage",_initStorage:function(e){var t=this,r={db:null};if(e)for(var n in e)r[n]=e[n];var o=d[r.name];o||(o={forages:[],db:null,dbReady:null,deferredOperations:[]},d[r.name]=o),o.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=j);var a=[];function s(){return i.resolve()}for(var l=0;l<o.forages.length;l++){var c=o.forages[l];c!==t&&a.push(c._initReady().catch(s))}var u=o.forages.slice(0);return i.all(a).then((function(){return r.db=o.db,w(r)})).then((function(e){return r.db=e,z(r,t._defaultConfig.version)?x(r):e})).then((function(e){r.db=o.db=e,t._dbInfo=r;for(var n=0;n<u.length;n++){var a=u[n];a!==t&&(a._dbInfo.db=r.db,a._dbInfo.version=r.version)}}))},_support:function(){try{if(!o||!o.open)return!1;var e="undefined"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(e){return!1}}(),iterate:function(e,t){var r=this,n=new i((function(t,n){r.ready().then((function(){E(r._dbInfo,h,(function(o,a){if(o)return n(o);try{var i=a.objectStore(r._dbInfo.storeName).openCursor(),s=1;i.onsuccess=function(){var r=i.result;if(r){var n=r.value;O(n)&&(n=k(n));var o=e(n,r.key,s++);void 0!==o?t(o):r.continue()}else t()},i.onerror=function(){n(i.error)}}catch(e){n(e)}}))})).catch(n)}));return s(n,t),n},getItem:function(e,t){var r=this;e=c(e);var n=new i((function(t,n){r.ready().then((function(){E(r._dbInfo,h,(function(o,a){if(o)return n(o);try{var i=a.objectStore(r._dbInfo.storeName).get(e);i.onsuccess=function(){var e=i.result;void 0===e&&(e=null),O(e)&&(e=k(e)),t(e)},i.onerror=function(){n(i.error)}}catch(e){n(e)}}))})).catch(n)}));return s(n,t),n},setItem:function(e,t,r){var n=this;e=c(e);var o=new i((function(r,o){var s;n.ready().then((function(){return s=n._dbInfo,"[object Blob]"===m.call(t)?function(e){return"boolean"==typeof p?i.resolve(p):function(e){return new i((function(t){var r=e.transaction(f,_),n=a([""]);r.objectStore(f).put(n,"key"),r.onabort=function(e){e.preventDefault(),e.stopPropagation(),t(!1)},r.oncomplete=function(){var e=navigator.userAgent.match(/Chrome\/(\d+)/),r=navigator.userAgent.match(/Edge\//);t(r||!e||parseInt(e[1],10)>=43)}})).catch((function(){return!1}))}(e).then((function(e){return p=e}))}(s.db).then((function(e){return e?t:(r=t,new i((function(e,t){var n=new FileReader;n.onerror=t,n.onloadend=function(t){var n=btoa(t.target.result||"");e({__local_forage_encoded_blob:!0,data:n,type:r.type})},n.readAsBinaryString(r)})));var r})):t})).then((function(t){E(n._dbInfo,_,(function(a,i){if(a)return o(a);try{var s=i.objectStore(n._dbInfo.storeName);null===t&&(t=void 0);var l=s.put(t,e);i.oncomplete=function(){void 0===t&&(t=null),r(t)},i.onabort=i.onerror=function(){var e=l.error?l.error:l.transaction.error;o(e)}}catch(e){o(e)}}))})).catch(o)}));return s(o,r),o},removeItem:function(e,t){var r=this;e=c(e);var n=new i((function(t,n){r.ready().then((function(){E(r._dbInfo,_,(function(o,a){if(o)return n(o);try{var i=a.objectStore(r._dbInfo.storeName).delete(e);a.oncomplete=function(){t()},a.onerror=function(){n(i.error)},a.onabort=function(){var e=i.error?i.error:i.transaction.error;n(e)}}catch(e){n(e)}}))})).catch(n)}));return s(n,t),n},clear:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){E(t._dbInfo,_,(function(n,o){if(n)return r(n);try{var a=o.objectStore(t._dbInfo.storeName).clear();o.oncomplete=function(){e()},o.onabort=o.onerror=function(){var e=a.error?a.error:a.transaction.error;r(e)}}catch(e){r(e)}}))})).catch(r)}));return s(r,e),r},length:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){E(t._dbInfo,h,(function(n,o){if(n)return r(n);try{var a=o.objectStore(t._dbInfo.storeName).count();a.onsuccess=function(){e(a.result)},a.onerror=function(){r(a.error)}}catch(e){r(e)}}))})).catch(r)}));return s(r,e),r},key:function(e,t){var r=this,n=new i((function(t,n){e<0?t(null):r.ready().then((function(){E(r._dbInfo,h,(function(o,a){if(o)return n(o);try{var i=a.objectStore(r._dbInfo.storeName),s=!1,l=i.openKeyCursor();l.onsuccess=function(){var r=l.result;r?0===e||s?t(r.key):(s=!0,r.advance(e)):t(null)},l.onerror=function(){n(l.error)}}catch(e){n(e)}}))})).catch(n)}));return s(n,t),n},keys:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){E(t._dbInfo,h,(function(n,o){if(n)return r(n);try{var a=o.objectStore(t._dbInfo.storeName).openKeyCursor(),i=[];a.onsuccess=function(){var t=a.result;t?(i.push(t.key),t.continue()):e(i)},a.onerror=function(){r(a.error)}}catch(e){r(e)}}))})).catch(r)}));return s(r,e),r},dropInstance:function(e,t){t=u.apply(this,arguments);var r=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||r.name,e.storeName=e.storeName||r.storeName);var n,a=this;if(e.name){var l=e.name===r.name&&a._dbInfo.db,c=l?i.resolve(a._dbInfo.db):w(e).then((function(t){var r=d[e.name],n=r.forages;r.db=t;for(var o=0;o<n.length;o++)n[o]._dbInfo.db=t;return t}));n=e.storeName?c.then((function(t){if(t.objectStoreNames.contains(e.storeName)){var r=t.version+1;v(e);var n=d[e.name],a=n.forages;t.close();for(var s=0;s<a.length;s++){var l=a[s];l._dbInfo.db=null,l._dbInfo.version=r}var c=new i((function(t,n){var a=o.open(e.name,r);a.onerror=function(e){a.result.close(),n(e)},a.onupgradeneeded=function(){a.result.deleteObjectStore(e.storeName)},a.onsuccess=function(){var e=a.result;e.close(),t(e)}}));return c.then((function(e){n.db=e;for(var t=0;t<a.length;t++){var r=a[t];r._dbInfo.db=e,g(r._dbInfo)}})).catch((function(t){throw(y(e,t)||i.resolve()).catch((function(){})),t}))}})):c.then((function(t){v(e);var r=d[e.name],n=r.forages;t.close();for(var a=0;a<n.length;a++)n[a]._dbInfo.db=null;var s=new i((function(t,r){var n=o.deleteDatabase(e.name);n.onerror=function(){var e=n.result;e&&e.close(),r(n.error)},n.onblocked=function(){console.warn('dropInstance blocked for database "'+e.name+'" until all open connections are closed')},n.onsuccess=function(){var e=n.result;e&&e.close(),t(e)}}));return s.then((function(e){r.db=e;for(var t=0;t<n.length;t++)g(n[t]._dbInfo)})).catch((function(t){throw(y(e,t)||i.resolve()).catch((function(){})),t}))}))}else n=i.reject("Invalid arguments");return s(n,t),n}},S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",N=/^~~local_forage_type~([^~]+)~/,L="__lfsc__:",R=L.length,F="arbf",A="blob",T="si08",C="ui08",P="uic8",D="si16",M="si32",W="ur16",U="ui32",$="fl32",q="fl64",V=R+F.length,B=Object.prototype.toString;function H(e){var t,r,n,o,a,i=.75*e.length,s=e.length,l=0;"="===e[e.length-1]&&(i--,"="===e[e.length-2]&&i--);var c=new ArrayBuffer(i),u=new Uint8Array(c);for(t=0;t<s;t+=4)r=S.indexOf(e[t]),n=S.indexOf(e[t+1]),o=S.indexOf(e[t+2]),a=S.indexOf(e[t+3]),u[l++]=r<<2|n>>4,u[l++]=(15&n)<<4|o>>2,u[l++]=(3&o)<<6|63&a;return c}function G(e){var t,r=new Uint8Array(e),n="";for(t=0;t<r.length;t+=3)n+=S[r[t]>>2],n+=S[(3&r[t])<<4|r[t+1]>>4],n+=S[(15&r[t+1])<<2|r[t+2]>>6],n+=S[63&r[t+2]];return r.length%3==2?n=n.substring(0,n.length-1)+"=":r.length%3==1&&(n=n.substring(0,n.length-2)+"=="),n}var Y={serialize:function(e,t){var r="";if(e&&(r=B.call(e)),e&&("[object ArrayBuffer]"===r||e.buffer&&"[object ArrayBuffer]"===B.call(e.buffer))){var n,o=L;e instanceof ArrayBuffer?(n=e,o+=F):(n=e.buffer,"[object Int8Array]"===r?o+=T:"[object Uint8Array]"===r?o+=C:"[object Uint8ClampedArray]"===r?o+=P:"[object Int16Array]"===r?o+=D:"[object Uint16Array]"===r?o+=W:"[object Int32Array]"===r?o+=M:"[object Uint32Array]"===r?o+=U:"[object Float32Array]"===r?o+=$:"[object Float64Array]"===r?o+=q:t(new Error("Failed to get type for BinaryArray"))),t(o+G(n))}else if("[object Blob]"===r){var a=new FileReader;a.onload=function(){var r="~~local_forage_type~"+e.type+"~"+G(this.result);t("__lfsc__:blob"+r)},a.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(r){console.error("Couldn't convert value into a JSON string: ",e),t(null,r)}},deserialize:function(e){if(e.substring(0,R)!==L)return JSON.parse(e);var t,r=e.substring(V),n=e.substring(R,V);if(n===A&&N.test(r)){var o=r.match(N);t=o[1],r=r.substring(o[0].length)}var i=H(r);switch(n){case F:return i;case A:return a([i],{type:t});case T:return new Int8Array(i);case C:return new Uint8Array(i);case P:return new Uint8ClampedArray(i);case D:return new Int16Array(i);case W:return new Uint16Array(i);case M:return new Int32Array(i);case U:return new Uint32Array(i);case $:return new Float32Array(i);case q:return new Float64Array(i);default:throw new Error("Unkown type: "+n)}},stringToBuffer:H,bufferToString:G};function X(e,t,r,n){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],r,n)}function K(e,t,r,n,o,a){e.executeSql(r,n,o,(function(e,i){i.code===i.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,s){s.rows.length?a(e,i):X(e,t,(function(){e.executeSql(r,n,o,a)}),a)}),a):a(e,i)}),a)}function J(e,t,r,n){var o=this;e=c(e);var a=new i((function(a,i){o.ready().then((function(){void 0===t&&(t=null);var s=t,l=o._dbInfo;l.serializer.serialize(t,(function(t,c){c?i(c):l.db.transaction((function(r){K(r,l,"INSERT OR REPLACE INTO "+l.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){a(s)}),(function(e,t){i(t)}))}),(function(t){if(t.code===t.QUOTA_ERR){if(n>0)return void a(J.apply(o,[e,s,r,n-1]));i(t)}}))}))})).catch(i)}));return s(a,r),a}function Q(e){return new i((function(t,r){e.transaction((function(n){n.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],(function(r,n){for(var o=[],a=0;a<n.rows.length;a++)o.push(n.rows.item(a).name);t({db:e,storeNames:o})}),(function(e,t){r(t)}))}),(function(e){r(e)}))}))}var Z={_driver:"webSQLStorage",_initStorage:function(e){var t=this,r={db:null};if(e)for(var n in e)r[n]="string"!=typeof e[n]?e[n].toString():e[n];var o=new i((function(e,n){try{r.db=openDatabase(r.name,String(r.version),r.description,r.size)}catch(e){return n(e)}r.db.transaction((function(o){X(o,r,(function(){t._dbInfo=r,e()}),(function(e,t){n(t)}))}),n)}));return r.serializer=Y,o},_support:"function"==typeof openDatabase,iterate:function(e,t){var r=this,n=new i((function(t,n){r.ready().then((function(){var o=r._dbInfo;o.db.transaction((function(r){K(r,o,"SELECT * FROM "+o.storeName,[],(function(r,n){for(var a=n.rows,i=a.length,s=0;s<i;s++){var l=a.item(s),c=l.value;if(c&&(c=o.serializer.deserialize(c)),void 0!==(c=e(c,l.key,s+1)))return void t(c)}t()}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,t),n},getItem:function(e,t){var r=this;e=c(e);var n=new i((function(t,n){r.ready().then((function(){var o=r._dbInfo;o.db.transaction((function(r){K(r,o,"SELECT * FROM "+o.storeName+" WHERE key = ? LIMIT 1",[e],(function(e,r){var n=r.rows.length?r.rows.item(0).value:null;n&&(n=o.serializer.deserialize(n)),t(n)}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,t),n},setItem:function(e,t,r){return J.apply(this,[e,t,r,1])},removeItem:function(e,t){var r=this;e=c(e);var n=new i((function(t,n){r.ready().then((function(){var o=r._dbInfo;o.db.transaction((function(r){K(r,o,"DELETE FROM "+o.storeName+" WHERE key = ?",[e],(function(){t()}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,t),n},clear:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){var n=t._dbInfo;n.db.transaction((function(t){K(t,n,"DELETE FROM "+n.storeName,[],(function(){e()}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,e),r},length:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){var n=t._dbInfo;n.db.transaction((function(t){K(t,n,"SELECT COUNT(key) as c FROM "+n.storeName,[],(function(t,r){var n=r.rows.item(0).c;e(n)}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,e),r},key:function(e,t){var r=this,n=new i((function(t,n){r.ready().then((function(){var o=r._dbInfo;o.db.transaction((function(r){K(r,o,"SELECT key FROM "+o.storeName+" WHERE id = ? LIMIT 1",[e+1],(function(e,r){var n=r.rows.length?r.rows.item(0).key:null;t(n)}),(function(e,t){n(t)}))}))})).catch(n)}));return s(n,t),n},keys:function(e){var t=this,r=new i((function(e,r){t.ready().then((function(){var n=t._dbInfo;n.db.transaction((function(t){K(t,n,"SELECT key FROM "+n.storeName,[],(function(t,r){for(var n=[],o=0;o<r.rows.length;o++)n.push(r.rows.item(o).key);e(n)}),(function(e,t){r(t)}))}))})).catch(r)}));return s(r,e),r},dropInstance:function(e,t){t=u.apply(this,arguments);var r=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||r.name,e.storeName=e.storeName||r.storeName);var n,o=this;return s(n=e.name?new i((function(t){var n;n=e.name===r.name?o._dbInfo.db:openDatabase(e.name,"","",0),e.storeName?t({db:n,storeNames:[e.storeName]}):t(Q(n))})).then((function(e){return new i((function(t,r){e.db.transaction((function(n){function o(e){return new i((function(t,r){n.executeSql("DROP TABLE IF EXISTS "+e,[],(function(){t()}),(function(e,t){r(t)}))}))}for(var a=[],s=0,l=e.storeNames.length;s<l;s++)a.push(o(e.storeNames[s]));i.all(a).then((function(){t()})).catch((function(e){r(e)}))}),(function(e){r(e)}))}))})):i.reject("Invalid arguments"),t),n}};function ee(e,t){var r=e.name+"/";return e.storeName!==t.storeName&&(r+=e.storeName+"/"),r}var te={_driver:"localStorageWrapper",_initStorage:function(e){var t={};if(e)for(var r in e)t[r]=e[r];return t.keyPrefix=ee(e,this._defaultConfig),!function(){var e="_localforage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch(e){return!0}}()||localStorage.length>0?(this._dbInfo=t,t.serializer=Y,i.resolve()):i.reject()},_support:function(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}(),iterate:function(e,t){var r=this,n=r.ready().then((function(){for(var t=r._dbInfo,n=t.keyPrefix,o=n.length,a=localStorage.length,i=1,s=0;s<a;s++){var l=localStorage.key(s);if(0===l.indexOf(n)){var c=localStorage.getItem(l);if(c&&(c=t.serializer.deserialize(c)),void 0!==(c=e(c,l.substring(o),i++)))return c}}}));return s(n,t),n},getItem:function(e,t){var r=this;e=c(e);var n=r.ready().then((function(){var t=r._dbInfo,n=localStorage.getItem(t.keyPrefix+e);return n&&(n=t.serializer.deserialize(n)),n}));return s(n,t),n},setItem:function(e,t,r){var n=this;e=c(e);var o=n.ready().then((function(){void 0===t&&(t=null);var r=t;return new i((function(o,a){var i=n._dbInfo;i.serializer.serialize(t,(function(t,n){if(n)a(n);else try{localStorage.setItem(i.keyPrefix+e,t),o(r)}catch(e){"QuotaExceededError"!==e.name&&"NS_ERROR_DOM_QUOTA_REACHED"!==e.name||a(e),a(e)}}))}))}));return s(o,r),o},removeItem:function(e,t){var r=this;e=c(e);var n=r.ready().then((function(){var t=r._dbInfo;localStorage.removeItem(t.keyPrefix+e)}));return s(n,t),n},clear:function(e){var t=this,r=t.ready().then((function(){for(var e=t._dbInfo.keyPrefix,r=localStorage.length-1;r>=0;r--){var n=localStorage.key(r);0===n.indexOf(e)&&localStorage.removeItem(n)}}));return s(r,e),r},length:function(e){var t=this.keys().then((function(e){return e.length}));return s(t,e),t},key:function(e,t){var r=this,n=r.ready().then((function(){var t,n=r._dbInfo;try{t=localStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(n.keyPrefix.length)),t}));return s(n,t),n},keys:function(e){var t=this,r=t.ready().then((function(){for(var e=t._dbInfo,r=localStorage.length,n=[],o=0;o<r;o++){var a=localStorage.key(o);0===a.indexOf(e.keyPrefix)&&n.push(a.substring(e.keyPrefix.length))}return n}));return s(r,e),r},dropInstance:function(e,t){if(t=u.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){var r=this.config();e.name=e.name||r.name,e.storeName=e.storeName||r.storeName}var n,o=this;return s(n=e.name?new i((function(t){e.storeName?t(ee(e,o._defaultConfig)):t(e.name+"/")})).then((function(e){for(var t=localStorage.length-1;t>=0;t--){var r=localStorage.key(t);0===r.indexOf(e)&&localStorage.removeItem(r)}})):i.reject("Invalid arguments"),t),n}},re=function(e,t){for(var r,n,o=e.length,a=0;a<o;){if((r=e[a])===(n=t)||"number"==typeof r&&"number"==typeof n&&isNaN(r)&&isNaN(n))return!0;a++}return!1},ne=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},oe={},ae={},ie={INDEXEDDB:I,WEBSQL:Z,LOCALSTORAGE:te},se=[ie.INDEXEDDB._driver,ie.WEBSQL._driver,ie.LOCALSTORAGE._driver],le=["dropInstance"],ce=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(le),ue={description:"",driver:se.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function fe(e,t){e[t]=function(){var r=arguments;return e.ready().then((function(){return e[t].apply(e,r)}))}}function pe(){for(var e=1;e<arguments.length;e++){var t=arguments[e];if(t)for(var r in t)t.hasOwnProperty(r)&&(ne(t[r])?arguments[0][r]=t[r].slice():arguments[0][r]=t[r])}return arguments[0]}var de=function(){function e(t){for(var r in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),ie)if(ie.hasOwnProperty(r)){var n=ie[r],o=n._driver;this[r]=o,oe[o]||this.defineDriver(n)}this._defaultConfig=pe({},ue),this._config=pe({},this._defaultConfig,t),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch((function(){}))}return e.prototype.config=function(e){if("object"===(void 0===e?"undefined":n(e))){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var t in e){if("storeName"===t&&(e[t]=e[t].replace(/\W/g,"_")),"version"===t&&"number"!=typeof e[t])return new Error("Database version must be a number.");this._config[t]=e[t]}return!("driver"in e)||!e.driver||this.setDriver(this._config.driver)}return"string"==typeof e?this._config[e]:this._config},e.prototype.defineDriver=function(e,t,r){var n=new i((function(t,r){try{var n=e._driver,o=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!e._driver)return void r(o);for(var a=ce.concat("_initStorage"),l=0,c=a.length;l<c;l++){var u=a[l];if((!re(le,u)||e[u])&&"function"!=typeof e[u])return void r(o)}!function(){for(var t=function(e){return function(){var t=new Error("Method "+e+" is not implemented by the current driver"),r=i.reject(t);return s(r,arguments[arguments.length-1]),r}},r=0,n=le.length;r<n;r++){var o=le[r];e[o]||(e[o]=t(o))}}();var f=function(r){oe[n]&&console.info("Redefining LocalForage driver: "+n),oe[n]=e,ae[n]=r,t()};"_support"in e?e._support&&"function"==typeof e._support?e._support().then(f,r):f(!!e._support):f(!0)}catch(e){r(e)}}));return l(n,t,r),n},e.prototype.driver=function(){return this._driver||null},e.prototype.getDriver=function(e,t,r){var n=oe[e]?i.resolve(oe[e]):i.reject(new Error("Driver not found."));return l(n,t,r),n},e.prototype.getSerializer=function(e){var t=i.resolve(Y);return l(t,e),t},e.prototype.ready=function(e){var t=this,r=t._driverSet.then((function(){return null===t._ready&&(t._ready=t._initDriver()),t._ready}));return l(r,e,e),r},e.prototype.setDriver=function(e,t,r){var n=this;ne(e)||(e=[e]);var o=this._getSupportedDrivers(e);function a(){n._config.driver=n.driver()}function s(e){return n._extend(e),a(),n._ready=n._initStorage(n._config),n._ready}var c=null!==this._driverSet?this._driverSet.catch((function(){return i.resolve()})):i.resolve();return this._driverSet=c.then((function(){var e=o[0];return n._dbInfo=null,n._ready=null,n.getDriver(e).then((function(e){n._driver=e._driver,a(),n._wrapLibraryMethodsWithReady(),n._initDriver=function(e){return function(){var t=0;return function r(){for(;t<e.length;){var o=e[t];return t++,n._dbInfo=null,n._ready=null,n.getDriver(o).then(s).catch(r)}a();var l=new Error("No available storage method found.");return n._driverSet=i.reject(l),n._driverSet}()}}(o)}))})).catch((function(){a();var e=new Error("No available storage method found.");return n._driverSet=i.reject(e),n._driverSet})),l(this._driverSet,t,r),this._driverSet},e.prototype.supports=function(e){return!!ae[e]},e.prototype._extend=function(e){pe(this,e)},e.prototype._getSupportedDrivers=function(e){for(var t=[],r=0,n=e.length;r<n;r++){var o=e[r];this.supports(o)&&t.push(o)}return t},e.prototype._wrapLibraryMethodsWithReady=function(){for(var e=0,t=ce.length;e<t;e++)fe(this,ce[e])},e.prototype.createInstance=function(t){return new e(t)},e}(),me=new de;t.exports=me},{3:3}]},{},[4])(4)}))},8552:(e,t,r)=>{var n=r(852)(r(5639),"DataView");e.exports=n},1989:(e,t,r)=>{var n=r(1789),o=r(401),a=r(7667),i=r(1327),s=r(1866);function l(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}l.prototype.clear=n,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=s,e.exports=l},8407:(e,t,r)=>{var n=r(7040),o=r(4125),a=r(2117),i=r(3755),s=r(4705);function l(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}l.prototype.clear=n,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=s,e.exports=l},7071:(e,t,r)=>{var n=r(852)(r(5639),"Map");e.exports=n},3369:(e,t,r)=>{var n=r(4785),o=r(1285),a=r(6e3),i=r(9916),s=r(5265);function l(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}l.prototype.clear=n,l.prototype.delete=o,l.prototype.get=a,l.prototype.has=i,l.prototype.set=s,e.exports=l},3818:(e,t,r)=>{var n=r(852)(r(5639),"Promise");e.exports=n},8525:(e,t,r)=>{var n=r(852)(r(5639),"Set");e.exports=n},8668:(e,t,r)=>{var n=r(3369),o=r(619),a=r(2385);function i(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new n;++t<r;)this.add(e[t])}i.prototype.add=i.prototype.push=o,i.prototype.has=a,e.exports=i},6384:(e,t,r)=>{var n=r(8407),o=r(7465),a=r(3779),i=r(7599),s=r(4758),l=r(4309);function c(e){var t=this.__data__=new n(e);this.size=t.size}c.prototype.clear=o,c.prototype.delete=a,c.prototype.get=i,c.prototype.has=s,c.prototype.set=l,e.exports=c},2705:(e,t,r)=>{var n=r(5639).Symbol;e.exports=n},1149:(e,t,r)=>{var n=r(5639).Uint8Array;e.exports=n},577:(e,t,r)=>{var n=r(852)(r(5639),"WeakMap");e.exports=n},6874:e=>{e.exports=function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}},4963:e=>{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length,o=0,a=[];++r<n;){var i=e[r];t(i,r,e)&&(a[o++]=i)}return a}},4636:(e,t,r)=>{var n=r(2545),o=r(5694),a=r(1469),i=r(4144),s=r(5776),l=r(6719),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var r=a(e),u=!r&&o(e),f=!r&&!u&&i(e),p=!r&&!u&&!f&&l(e),d=r||u||f||p,m=d?n(e.length,String):[],h=m.length;for(var _ in e)!t&&!c.call(e,_)||d&&("length"==_||f&&("offset"==_||"parent"==_)||p&&("buffer"==_||"byteLength"==_||"byteOffset"==_)||s(_,h))||m.push(_);return m}},9932:e=>{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}},2488:e=>{e.exports=function(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}},2908:e=>{e.exports=function(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}},8470:(e,t,r)=>{var n=r(7813);e.exports=function(e,t){for(var r=e.length;r--;)if(n(e[r][0],t))return r;return-1}},9881:(e,t,r)=>{var n=r(7816),o=r(9291)(n);e.exports=o},760:(e,t,r)=>{var n=r(9881);e.exports=function(e,t){var r=[];return n(e,(function(e,n,o){t(e,n,o)&&r.push(e)})),r}},1848:e=>{e.exports=function(e,t,r,n){for(var o=e.length,a=r+(n?1:-1);n?a--:++a<o;)if(t(e[a],a,e))return a;return-1}},1078:(e,t,r)=>{var n=r(2488),o=r(7285);e.exports=function e(t,r,a,i,s){var l=-1,c=t.length;for(a||(a=o),s||(s=[]);++l<c;){var u=t[l];r>0&&a(u)?r>1?e(u,r-1,a,i,s):n(s,u):i||(s[s.length]=u)}return s}},8483:(e,t,r)=>{var n=r(5063)();e.exports=n},7816:(e,t,r)=>{var n=r(8483),o=r(3674);e.exports=function(e,t){return e&&n(e,t,o)}},7786:(e,t,r)=>{var n=r(1811),o=r(327);e.exports=function(e,t){for(var r=0,a=(t=n(t,e)).length;null!=e&&r<a;)e=e[o(t[r++])];return r&&r==a?e:void 0}},8866:(e,t,r)=>{var n=r(2488),o=r(1469);e.exports=function(e,t,r){var a=t(e);return o(e)?a:n(a,r(e))}},4239:(e,t,r)=>{var n=r(2705),o=r(9607),a=r(2333),i=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?o(e):a(e)}},13:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},2118:(e,t,r)=>{var n=r(1848),o=r(2722),a=r(2351);e.exports=function(e,t,r){return t==t?a(e,t,r):n(e,o,r)}},9454:(e,t,r)=>{var n=r(4239),o=r(7005);e.exports=function(e){return o(e)&&"[object Arguments]"==n(e)}},939:(e,t,r)=>{var n=r(2492),o=r(7005);e.exports=function e(t,r,a,i,s){return t===r||(null==t||null==r||!o(t)&&!o(r)?t!=t&&r!=r:n(t,r,a,i,e,s))}},2492:(e,t,r)=>{var n=r(6384),o=r(7114),a=r(8351),i=r(6096),s=r(4160),l=r(1469),c=r(4144),u=r(6719),f="[object Arguments]",p="[object Array]",d="[object Object]",m=Object.prototype.hasOwnProperty;e.exports=function(e,t,r,h,_,v){var g=l(e),y=l(t),b=g?p:s(e),w=y?p:s(t),x=(b=b==f?d:b)==d,z=(w=w==f?d:w)==d,k=b==w;if(k&&c(e)){if(!c(t))return!1;g=!0,x=!1}if(k&&!x)return v||(v=new n),g||u(e)?o(e,t,r,h,_,v):a(e,t,b,r,h,_,v);if(!(1&r)){var O=x&&m.call(e,"__wrapped__"),j=z&&m.call(t,"__wrapped__");if(O||j){var E=O?e.value():e,I=j?t.value():t;return v||(v=new n),_(E,I,r,h,v)}}return!!k&&(v||(v=new n),i(e,t,r,h,_,v))}},2958:(e,t,r)=>{var n=r(6384),o=r(939);e.exports=function(e,t,r,a){var i=r.length,s=i,l=!a;if(null==e)return!s;for(e=Object(e);i--;){var c=r[i];if(l&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++i<s;){var u=(c=r[i])[0],f=e[u],p=c[1];if(l&&c[2]){if(void 0===f&&!(u in e))return!1}else{var d=new n;if(a)var m=a(f,p,u,e,t,d);if(!(void 0===m?o(p,f,3,a,d):m))return!1}}return!0}},2722:e=>{e.exports=function(e){return e!=e}},8458:(e,t,r)=>{var n=r(3560),o=r(5346),a=r(3218),i=r(346),s=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,u=l.toString,f=c.hasOwnProperty,p=RegExp("^"+u.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!a(e)||o(e))&&(n(e)?p:s).test(i(e))}},8749:(e,t,r)=>{var n=r(4239),o=r(1780),a=r(7005),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return a(e)&&o(e.length)&&!!i[n(e)]}},7206:(e,t,r)=>{var n=r(1573),o=r(6432),a=r(6557),i=r(1469),s=r(9601);e.exports=function(e){return"function"==typeof e?e:null==e?a:"object"==typeof e?i(e)?o(e[0],e[1]):n(e):s(e)}},280:(e,t,r)=>{var n=r(5726),o=r(6916),a=Object.prototype.hasOwnProperty;e.exports=function(e){if(!n(e))return o(e);var t=[];for(var r in Object(e))a.call(e,r)&&"constructor"!=r&&t.push(r);return t}},9199:(e,t,r)=>{var n=r(9881),o=r(8612);e.exports=function(e,t){var r=-1,a=o(e)?Array(e.length):[];return n(e,(function(e,n,o){a[++r]=t(e,n,o)})),a}},1573:(e,t,r)=>{var n=r(2958),o=r(1499),a=r(2634);e.exports=function(e){var t=o(e);return 1==t.length&&t[0][2]?a(t[0][0],t[0][1]):function(r){return r===e||n(r,e,t)}}},6432:(e,t,r)=>{var n=r(939),o=r(7361),a=r(9095),i=r(5403),s=r(9162),l=r(2634),c=r(327);e.exports=function(e,t){return i(e)&&s(t)?l(c(e),t):function(r){var i=o(r,e);return void 0===i&&i===t?a(r,e):n(t,i,3)}}},2689:(e,t,r)=>{var n=r(9932),o=r(7786),a=r(7206),i=r(9199),s=r(1131),l=r(7518),c=r(5022),u=r(6557),f=r(1469);e.exports=function(e,t,r){t=t.length?n(t,(function(e){return f(e)?function(t){return o(t,1===e.length?e[0]:e)}:e})):[u];var p=-1;t=n(t,l(a));var d=i(e,(function(e,r,o){return{criteria:n(t,(function(t){return t(e)})),index:++p,value:e}}));return s(d,(function(e,t){return c(e,t,r)}))}},371:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},9152:(e,t,r)=>{var n=r(7786);e.exports=function(e){return function(t){return n(t,e)}}},5976:(e,t,r)=>{var n=r(6557),o=r(5357),a=r(61);e.exports=function(e,t){return a(o(e,t,n),e+"")}},6560:(e,t,r)=>{var n=r(5703),o=r(8777),a=r(6557),i=o?function(e,t){return o(e,"toString",{configurable:!0,enumerable:!1,value:n(t),writable:!0})}:a;e.exports=i},1131:e=>{e.exports=function(e,t){var r=e.length;for(e.sort(t);r--;)e[r]=e[r].value;return e}},2545:e=>{e.exports=function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}},531:(e,t,r)=>{var n=r(2705),o=r(9932),a=r(1469),i=r(3448),s=n?n.prototype:void 0,l=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(a(t))return o(t,e)+"";if(i(t))return l?l.call(t):"";var r=t+"";return"0"==r&&1/t==-1/0?"-0":r}},7561:(e,t,r)=>{var n=r(7990),o=/^\s+/;e.exports=function(e){return e?e.slice(0,n(e)+1).replace(o,""):e}},7518:e=>{e.exports=function(e){return function(t){return e(t)}}},7415:(e,t,r)=>{var n=r(9932);e.exports=function(e,t){return n(t,(function(t){return e[t]}))}},4757:e=>{e.exports=function(e,t){return e.has(t)}},1811:(e,t,r)=>{var n=r(1469),o=r(5403),a=r(5514),i=r(9833);e.exports=function(e,t){return n(e)?e:o(e,t)?[e]:a(i(e))}},6393:(e,t,r)=>{var n=r(3448);e.exports=function(e,t){if(e!==t){var r=void 0!==e,o=null===e,a=e==e,i=n(e),s=void 0!==t,l=null===t,c=t==t,u=n(t);if(!l&&!u&&!i&&e>t||i&&s&&c&&!l&&!u||o&&s&&c||!r&&c||!a)return 1;if(!o&&!i&&!u&&e<t||u&&r&&a&&!o&&!i||l&&r&&a||!s&&a||!c)return-1}return 0}},5022:(e,t,r)=>{var n=r(6393);e.exports=function(e,t,r){for(var o=-1,a=e.criteria,i=t.criteria,s=a.length,l=r.length;++o<s;){var c=n(a[o],i[o]);if(c)return o>=l?c:c*("desc"==r[o]?-1:1)}return e.index-t.index}},4429:(e,t,r)=>{var n=r(5639)["__core-js_shared__"];e.exports=n},9291:(e,t,r)=>{var n=r(8612);e.exports=function(e,t){return function(r,o){if(null==r)return r;if(!n(r))return e(r,o);for(var a=r.length,i=t?a:-1,s=Object(r);(t?i--:++i<a)&&!1!==o(s[i],i,s););return r}}},5063:e=>{e.exports=function(e){return function(t,r,n){for(var o=-1,a=Object(t),i=n(t),s=i.length;s--;){var l=i[e?s:++o];if(!1===r(a[l],l,a))break}return t}}},8777:(e,t,r)=>{var n=r(852),o=function(){try{var e=n(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=o},7114:(e,t,r)=>{var n=r(8668),o=r(2908),a=r(4757);e.exports=function(e,t,r,i,s,l){var c=1&r,u=e.length,f=t.length;if(u!=f&&!(c&&f>u))return!1;var p=l.get(e),d=l.get(t);if(p&&d)return p==t&&d==e;var m=-1,h=!0,_=2&r?new n:void 0;for(l.set(e,t),l.set(t,e);++m<u;){var v=e[m],g=t[m];if(i)var y=c?i(g,v,m,t,e,l):i(v,g,m,e,t,l);if(void 0!==y){if(y)continue;h=!1;break}if(_){if(!o(t,(function(e,t){if(!a(_,t)&&(v===e||s(v,e,r,i,l)))return _.push(t)}))){h=!1;break}}else if(v!==g&&!s(v,g,r,i,l)){h=!1;break}}return l.delete(e),l.delete(t),h}},8351:(e,t,r)=>{var n=r(2705),o=r(1149),a=r(7813),i=r(7114),s=r(8776),l=r(1814),c=n?n.prototype:void 0,u=c?c.valueOf:void 0;e.exports=function(e,t,r,n,c,f,p){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!f(new o(e),new o(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var d=s;case"[object Set]":var m=1&n;if(d||(d=l),e.size!=t.size&&!m)return!1;var h=p.get(e);if(h)return h==t;n|=2,p.set(e,t);var _=i(d(e),d(t),n,c,f,p);return p.delete(e),_;case"[object Symbol]":if(u)return u.call(e)==u.call(t)}return!1}},6096:(e,t,r)=>{var n=r(8234),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,r,a,i,s){var l=1&r,c=n(e),u=c.length;if(u!=n(t).length&&!l)return!1;for(var f=u;f--;){var p=c[f];if(!(l?p in t:o.call(t,p)))return!1}var d=s.get(e),m=s.get(t);if(d&&m)return d==t&&m==e;var h=!0;s.set(e,t),s.set(t,e);for(var _=l;++f<u;){var v=e[p=c[f]],g=t[p];if(a)var y=l?a(g,v,p,t,e,s):a(v,g,p,e,t,s);if(!(void 0===y?v===g||i(v,g,r,a,s):y)){h=!1;break}_||(_="constructor"==p)}if(h&&!_){var b=e.constructor,w=t.constructor;b==w||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof w&&w instanceof w||(h=!1)}return s.delete(e),s.delete(t),h}},1957:(e,t,r)=>{var n="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g;e.exports=n},8234:(e,t,r)=>{var n=r(8866),o=r(9551),a=r(3674);e.exports=function(e){return n(e,a,o)}},5050:(e,t,r)=>{var n=r(7019);e.exports=function(e,t){var r=e.__data__;return n(t)?r["string"==typeof t?"string":"hash"]:r.map}},1499:(e,t,r)=>{var n=r(9162),o=r(3674);e.exports=function(e){for(var t=o(e),r=t.length;r--;){var a=t[r],i=e[a];t[r]=[a,i,n(i)]}return t}},852:(e,t,r)=>{var n=r(8458),o=r(7801);e.exports=function(e,t){var r=o(e,t);return n(r)?r:void 0}},9607:(e,t,r)=>{var n=r(2705),o=Object.prototype,a=o.hasOwnProperty,i=o.toString,s=n?n.toStringTag:void 0;e.exports=function(e){var t=a.call(e,s),r=e[s];try{e[s]=void 0;var n=!0}catch(e){}var o=i.call(e);return n&&(t?e[s]=r:delete e[s]),o}},9551:(e,t,r)=>{var n=r(4963),o=r(479),a=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,s=i?function(e){return null==e?[]:(e=Object(e),n(i(e),(function(t){return a.call(e,t)})))}:o;e.exports=s},4160:(e,t,r)=>{var n=r(8552),o=r(7071),a=r(3818),i=r(8525),s=r(577),l=r(4239),c=r(346),u="[object Map]",f="[object Promise]",p="[object Set]",d="[object WeakMap]",m="[object DataView]",h=c(n),_=c(o),v=c(a),g=c(i),y=c(s),b=l;(n&&b(new n(new ArrayBuffer(1)))!=m||o&&b(new o)!=u||a&&b(a.resolve())!=f||i&&b(new i)!=p||s&&b(new s)!=d)&&(b=function(e){var t=l(e),r="[object Object]"==t?e.constructor:void 0,n=r?c(r):"";if(n)switch(n){case h:return m;case _:return u;case v:return f;case g:return p;case y:return d}return t}),e.exports=b},7801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},222:(e,t,r)=>{var n=r(1811),o=r(5694),a=r(1469),i=r(5776),s=r(1780),l=r(327);e.exports=function(e,t,r){for(var c=-1,u=(t=n(t,e)).length,f=!1;++c<u;){var p=l(t[c]);if(!(f=null!=e&&r(e,p)))break;e=e[p]}return f||++c!=u?f:!!(u=null==e?0:e.length)&&s(u)&&i(p,u)&&(a(e)||o(e))}},1789:(e,t,r)=>{var n=r(4536);e.exports=function(){this.__data__=n?n(null):{},this.size=0}},401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},7667:(e,t,r)=>{var n=r(4536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(n){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(t,e)?t[e]:void 0}},1327:(e,t,r)=>{var n=r(4536),o=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return n?void 0!==t[e]:o.call(t,e)}},1866:(e,t,r)=>{var n=r(4536);e.exports=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=n&&void 0===t?"__lodash_hash_undefined__":t,this}},7285:(e,t,r)=>{var n=r(2705),o=r(5694),a=r(1469),i=n?n.isConcatSpreadable:void 0;e.exports=function(e){return a(e)||o(e)||!!(i&&e&&e[i])}},5776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,r){var n=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e<r}},6612:(e,t,r)=>{var n=r(7813),o=r(8612),a=r(5776),i=r(3218);e.exports=function(e,t,r){if(!i(r))return!1;var s=typeof t;return!!("number"==s?o(r)&&a(t,r.length):"string"==s&&t in r)&&n(r[t],e)}},5403:(e,t,r)=>{var n=r(1469),o=r(3448),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(n(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!o(e))||i.test(e)||!a.test(e)||null!=t&&e in Object(t)}},7019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},5346:(e,t,r)=>{var n,o=r(4429),a=(n=/[^.]+$/.exec(o&&o.keys&&o.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";e.exports=function(e){return!!a&&a in e}},5726:e=>{var t=Object.prototype;e.exports=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}},9162:(e,t,r)=>{var n=r(3218);e.exports=function(e){return e==e&&!n(e)}},7040:e=>{e.exports=function(){this.__data__=[],this.size=0}},4125:(e,t,r)=>{var n=r(8470),o=Array.prototype.splice;e.exports=function(e){var t=this.__data__,r=n(t,e);return!(r<0||(r==t.length-1?t.pop():o.call(t,r,1),--this.size,0))}},2117:(e,t,r)=>{var n=r(8470);e.exports=function(e){var t=this.__data__,r=n(t,e);return r<0?void 0:t[r][1]}},3755:(e,t,r)=>{var n=r(8470);e.exports=function(e){return n(this.__data__,e)>-1}},4705:(e,t,r)=>{var n=r(8470);e.exports=function(e,t){var r=this.__data__,o=n(r,e);return o<0?(++this.size,r.push([e,t])):r[o][1]=t,this}},4785:(e,t,r)=>{var n=r(1989),o=r(8407),a=r(7071);e.exports=function(){this.size=0,this.__data__={hash:new n,map:new(a||o),string:new n}}},1285:(e,t,r)=>{var n=r(5050);e.exports=function(e){var t=n(this,e).delete(e);return this.size-=t?1:0,t}},6e3:(e,t,r)=>{var n=r(5050);e.exports=function(e){return n(this,e).get(e)}},9916:(e,t,r)=>{var n=r(5050);e.exports=function(e){return n(this,e).has(e)}},5265:(e,t,r)=>{var n=r(5050);e.exports=function(e,t){var r=n(this,e),o=r.size;return r.set(e,t),this.size+=r.size==o?0:1,this}},8776:e=>{e.exports=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e,n){r[++t]=[n,e]})),r}},2634:e=>{e.exports=function(e,t){return function(r){return null!=r&&r[e]===t&&(void 0!==t||e in Object(r))}}},4523:(e,t,r)=>{var n=r(8306);e.exports=function(e){var t=n(e,(function(e){return 500===r.size&&r.clear(),e})),r=t.cache;return t}},4536:(e,t,r)=>{var n=r(852)(Object,"create");e.exports=n},6916:(e,t,r)=>{var n=r(5569)(Object.keys,Object);e.exports=n},1167:(e,t,r)=>{e=r.nmd(e);var n=r(1957),o=t&&!t.nodeType&&t,a=o&&e&&!e.nodeType&&e,i=a&&a.exports===o&&n.process,s=function(){try{return a&&a.require&&a.require("util").types||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=s},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(r){return e(t(r))}}},5357:(e,t,r)=>{var n=r(6874),o=Math.max;e.exports=function(e,t,r){return t=o(void 0===t?e.length-1:t,0),function(){for(var a=arguments,i=-1,s=o(a.length-t,0),l=Array(s);++i<s;)l[i]=a[t+i];i=-1;for(var c=Array(t+1);++i<t;)c[i]=a[i];return c[t]=r(l),n(e,this,c)}}},5639:(e,t,r)=>{var n=r(1957),o="object"==typeof self&&self&&self.Object===Object&&self,a=n||o||Function("return this")();e.exports=a},619:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},2385:e=>{e.exports=function(e){return this.__data__.has(e)}},1814:e=>{e.exports=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}},61:(e,t,r)=>{var n=r(6560),o=r(1275)(n);e.exports=o},1275:e=>{var t=Date.now;e.exports=function(e){var r=0,n=0;return function(){var o=t(),a=16-(o-n);if(n=o,a>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}}},7465:(e,t,r)=>{var n=r(8407);e.exports=function(){this.__data__=new n,this.size=0}},3779:e=>{e.exports=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}},7599:e=>{e.exports=function(e){return this.__data__.get(e)}},4758:e=>{e.exports=function(e){return this.__data__.has(e)}},4309:(e,t,r)=>{var n=r(8407),o=r(7071),a=r(3369);e.exports=function(e,t){var r=this.__data__;if(r instanceof n){var i=r.__data__;if(!o||i.length<199)return i.push([e,t]),this.size=++r.size,this;r=this.__data__=new a(i)}return r.set(e,t),this.size=r.size,this}},2351:e=>{e.exports=function(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}},5514:(e,t,r)=>{var n=r(4523),o=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,i=n((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(o,(function(e,r,n,o){t.push(n?o.replace(a,"$1"):r||e)})),t}));e.exports=i},327:(e,t,r)=>{var n=r(3448);e.exports=function(e){if("string"==typeof e||n(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},7990:e=>{var t=/\s/;e.exports=function(e){for(var r=e.length;r--&&t.test(e.charAt(r)););return r}},5703:e=>{e.exports=function(e){return function(){return e}}},7813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},3105:(e,t,r)=>{var n=r(4963),o=r(760),a=r(7206),i=r(1469);e.exports=function(e,t){return(i(e)?n:o)(e,a(t,3))}},7361:(e,t,r)=>{var n=r(7786);e.exports=function(e,t,r){var o=null==e?void 0:n(e,t);return void 0===o?r:o}},9095:(e,t,r)=>{var n=r(13),o=r(222);e.exports=function(e,t){return null!=e&&o(e,t,n)}},6557:e=>{e.exports=function(e){return e}},4721:(e,t,r)=>{var n=r(2118),o=r(8612),a=r(7037),i=r(554),s=r(2628),l=Math.max;e.exports=function(e,t,r,c){e=o(e)?e:s(e),r=r&&!c?i(r):0;var u=e.length;return r<0&&(r=l(u+r,0)),a(e)?r<=u&&e.indexOf(t,r)>-1:!!u&&n(e,t,r)>-1}},5694:(e,t,r)=>{var n=r(9454),o=r(7005),a=Object.prototype,i=a.hasOwnProperty,s=a.propertyIsEnumerable,l=n(function(){return arguments}())?n:function(e){return o(e)&&i.call(e,"callee")&&!s.call(e,"callee")};e.exports=l},1469:e=>{var t=Array.isArray;e.exports=t},8612:(e,t,r)=>{var n=r(3560),o=r(1780);e.exports=function(e){return null!=e&&o(e.length)&&!n(e)}},4144:(e,t,r)=>{e=r.nmd(e);var n=r(5639),o=r(5062),a=t&&!t.nodeType&&t,i=a&&e&&!e.nodeType&&e,s=i&&i.exports===a?n.Buffer:void 0,l=(s?s.isBuffer:void 0)||o;e.exports=l},3560:(e,t,r)=>{var n=r(4239),o=r(3218);e.exports=function(e){if(!o(e))return!1;var t=n(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},1780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},3218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},7005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},7037:(e,t,r)=>{var n=r(4239),o=r(1469),a=r(7005);e.exports=function(e){return"string"==typeof e||!o(e)&&a(e)&&"[object String]"==n(e)}},3448:(e,t,r)=>{var n=r(4239),o=r(7005);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==n(e)}},6719:(e,t,r)=>{var n=r(8749),o=r(7518),a=r(1167),i=a&&a.isTypedArray,s=i?o(i):n;e.exports=s},3674:(e,t,r)=>{var n=r(4636),o=r(280),a=r(8612);e.exports=function(e){return a(e)?n(e):o(e)}},8306:(e,t,r)=>{var n=r(3369);function o(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,o=t?t.apply(this,n):n[0],a=r.cache;if(a.has(o))return a.get(o);var i=e.apply(this,n);return r.cache=a.set(o,i)||a,i};return r.cache=new(o.Cache||n),r}o.Cache=n,e.exports=o},9601:(e,t,r)=>{var n=r(371),o=r(9152),a=r(5403),i=r(327);e.exports=function(e){return a(e)?n(i(e)):o(e)}},9734:(e,t,r)=>{var n=r(1078),o=r(2689),a=r(5976),i=r(6612),s=a((function(e,t){if(null==e)return[];var r=t.length;return r>1&&i(e,t[0],t[1])?t=[]:r>2&&i(t[0],t[1],t[2])&&(t=[t[0]]),o(e,n(t,1),[])}));e.exports=s},479:e=>{e.exports=function(){return[]}},5062:e=>{e.exports=function(){return!1}},8601:(e,t,r)=>{var n=r(4841);e.exports=function(e){return e?Infinity===(e=n(e))||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},554:(e,t,r)=>{var n=r(8601);e.exports=function(e){var t=n(e),r=t%1;return t==t?r?t-r:t:0}},4841:(e,t,r)=>{var n=r(7561),o=r(3218),a=r(3448),i=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(a(e))return NaN;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=n(e);var r=s.test(e);return r||l.test(e)?c(e.slice(2),r?2:8):i.test(e)?NaN:+e}},9833:(e,t,r)=>{var n=r(531);e.exports=function(e){return null==e?"":n(e)}},2628:(e,t,r)=>{var n=r(7415),o=r(3674);e.exports=function(e){return null==e?[]:n(e,o(e))}},8490:(e,t,r)=>{"use strict";var n=r(7673),o=r(8575),a=r(7529);const i=parseInt({NODE_ENV:"production"}.PARSE_LINK_HEADER_MAXLEN)||2e3,s=null!={NODE_ENV:"production"}.PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED;function l(e){return e&&e.rel}function c(e,t){return t.rel.split(/\s+/).forEach((function(r){e[r]=a(t,{rel:r})})),e}function u(e,t){var r=t.match(/\s*(.+)\s*=\s*"?([^"]+)"?/);return r&&(e[r[1]]=r[2]),e}function f(e){try{var t=e.match(/<?([^>]*)>(.*)/),r=t[1],i=t[2].split(";"),s=o.parse(r),l=n.parse(s.query);i.shift();var c=i.reduce(u,{});return(c=a(l,c)).url=r,c}catch(e){return null}}e.exports=function(e){return function(e){if(!e)return!1;if(e.length>i){if(s)throw new Error("Input string too long, it should be under "+i+" characters.");return!1}return!0}(e)?e.split(/,\s*</).map(f).filter(l).reduce(c,{}):null}},3689:(e,t,r)=>{"use strict";r.r(t),r.d(t,{decode:()=>v,default:()=>w,encode:()=>g,toASCII:()=>b,toUnicode:()=>y,ucs2decode:()=>d,ucs2encode:()=>m});const n=2147483647,o=36,a=/^xn--/,i=/[^\0-\x7E]/,s=/[\x2E\u3002\uFF0E\uFF61]/g,l={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},c=Math.floor,u=String.fromCharCode;function f(e){throw new RangeError(l[e])}function p(e,t){const r=e.split("@");let n="";r.length>1&&(n=r[0]+"@",e=r[1]);const o=function(e,t){const r=[];let n=e.length;for(;n--;)r[n]=t(e[n]);return r}((e=e.replace(s,".")).split("."),t).join(".");return n+o}function d(e){const t=[];let r=0;const n=e.length;for(;r<n;){const o=e.charCodeAt(r++);if(o>=55296&&o<=56319&&r<n){const n=e.charCodeAt(r++);56320==(64512&n)?t.push(((1023&o)<<10)+(1023&n)+65536):(t.push(o),r--)}else t.push(o)}return t}const m=e=>String.fromCodePoint(...e),h=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},_=function(e,t,r){let n=0;for(e=r?c(e/700):e>>1,e+=c(e/t);e>455;n+=o)e=c(e/35);return c(n+36*e/(e+38))},v=function(e){const t=[],r=e.length;let a=0,i=128,s=72,l=e.lastIndexOf("-");l<0&&(l=0);for(let r=0;r<l;++r)e.charCodeAt(r)>=128&&f("not-basic"),t.push(e.charCodeAt(r));for(let p=l>0?l+1:0;p<r;){let l=a;for(let t=1,i=o;;i+=o){p>=r&&f("invalid-input");const l=(u=e.charCodeAt(p++))-48<10?u-22:u-65<26?u-65:u-97<26?u-97:o;(l>=o||l>c((n-a)/t))&&f("overflow"),a+=l*t;const d=i<=s?1:i>=s+26?26:i-s;if(l<d)break;const m=o-d;t>c(n/m)&&f("overflow"),t*=m}const d=t.length+1;s=_(a-l,d,0==l),c(a/d)>n-i&&f("overflow"),i+=c(a/d),a%=d,t.splice(a++,0,i)}var u;return String.fromCodePoint(...t)},g=function(e){const t=[];let r=(e=d(e)).length,a=128,i=0,s=72;for(const r of e)r<128&&t.push(u(r));let l=t.length,p=l;for(l&&t.push("-");p<r;){let r=n;for(const t of e)t>=a&&t<r&&(r=t);const d=p+1;r-a>c((n-i)/d)&&f("overflow"),i+=(r-a)*d,a=r;for(const r of e)if(r<a&&++i>n&&f("overflow"),r==a){let e=i;for(let r=o;;r+=o){const n=r<=s?1:r>=s+26?26:r-s;if(e<n)break;const a=e-n,i=o-n;t.push(u(h(n+a%i,0))),e=c(a/i)}t.push(u(h(e,0))),s=_(i,d,p==l),i=0,++p}++i,++a}return t.join("")},y=function(e){return p(e,(function(e){return a.test(e)?v(e.slice(4).toLowerCase()):e}))},b=function(e){return p(e,(function(e){return i.test(e)?"xn--"+g(e):e}))},w={version:"2.1.0",ucs2:{decode:d,encode:m},decode:v,encode:g,toASCII:b,toUnicode:y}},2587:e=>{"use strict";function t(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,r,n,o){r=r||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var i=/\+/g;e=e.split(r);var s=1e3;o&&"number"==typeof o.maxKeys&&(s=o.maxKeys);var l=e.length;s>0&&l>s&&(l=s);for(var c=0;c<l;++c){var u,f,p,d,m=e[c].replace(i,"%20"),h=m.indexOf(n);h>=0?(u=m.substr(0,h),f=m.substr(h+1)):(u=m,f=""),p=decodeURIComponent(u),d=decodeURIComponent(f),t(a,p)?Array.isArray(a[p])?a[p].push(d):a[p]=[a[p],d]:a[p]=d}return a}},2361:e=>{"use strict";var t=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,r,n,o){return r=r||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map((function(o){var a=encodeURIComponent(t(o))+n;return Array.isArray(e[o])?e[o].map((function(e){return a+encodeURIComponent(t(e))})).join(r):a+encodeURIComponent(t(e[o]))})).join(r):o?encodeURIComponent(t(o))+n+encodeURIComponent(t(e)):""}},7673:(e,t,r)=>{"use strict";t.decode=t.parse=r(2587),t.encode=t.stringify=r(2361)},8575:(e,t,r)=>{"use strict";var n=r(3689),o=r(2502);function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=y,t.resolve=function(e,t){return y(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?y(e,!1,!0).resolveObject(t):t},t.format=function(e){return o.isString(e)&&(e=y(e)),e instanceof a?e.format():a.prototype.format.call(e)},t.Url=a;var i=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),u=["'"].concat(c),f=["%","/","?",";","#"].concat(u),p=["/","?","#"],d=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,h={javascript:!0,"javascript:":!0},_={javascript:!0,"javascript:":!0},v={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},g=r(7673);function y(e,t,r){if(e&&o.isObject(e)&&e instanceof a)return e;var n=new a;return n.parse(e,t,r),n}a.prototype.parse=function(e,t,r){if(!o.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=-1!==a&&a<e.indexOf("#")?"?":"#",c=e.split(s);c[0]=c[0].replace(/\\/g,"/");var y=e=c.join(s);if(y=y.trim(),!r&&1===e.split("#").length){var b=l.exec(y);if(b)return this.path=y,this.href=y,this.pathname=b[1],b[2]?(this.search=b[2],this.query=t?g.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var w=i.exec(y);if(w){var x=(w=w[0]).toLowerCase();this.protocol=x,y=y.substr(w.length)}if(r||w||y.match(/^\/\/[^@\/]+@[^@\/]+/)){var z="//"===y.substr(0,2);!z||w&&_[w]||(y=y.substr(2),this.slashes=!0)}if(!_[w]&&(z||w&&!v[w])){for(var k,O,j=-1,E=0;E<p.length;E++)-1!==(I=y.indexOf(p[E]))&&(-1===j||I<j)&&(j=I);for(-1!==(O=-1===j?y.lastIndexOf("@"):y.lastIndexOf("@",j))&&(k=y.slice(0,O),y=y.slice(O+1),this.auth=decodeURIComponent(k)),j=-1,E=0;E<f.length;E++){var I;-1!==(I=y.indexOf(f[E]))&&(-1===j||I<j)&&(j=I)}-1===j&&(j=y.length),this.host=y.slice(0,j),y=y.slice(j),this.parseHost(),this.hostname=this.hostname||"";var S="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!S)for(var N=this.hostname.split(/\./),L=(E=0,N.length);E<L;E++){var R=N[E];if(R&&!R.match(d)){for(var F="",A=0,T=R.length;A<T;A++)R.charCodeAt(A)>127?F+="x":F+=R[A];if(!F.match(d)){var C=N.slice(0,E),P=N.slice(E+1),D=R.match(m);D&&(C.push(D[1]),P.unshift(D[2])),P.length&&(y="/"+P.join(".")+y),this.hostname=C.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),S||(this.hostname=n.toASCII(this.hostname));var M=this.port?":"+this.port:"",W=this.hostname||"";this.host=W+M,this.href+=this.host,S&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==y[0]&&(y="/"+y))}if(!h[x])for(E=0,L=u.length;E<L;E++){var U=u[E];if(-1!==y.indexOf(U)){var $=encodeURIComponent(U);$===U&&($=escape(U)),y=y.split(U).join($)}}var q=y.indexOf("#");-1!==q&&(this.hash=y.substr(q),y=y.slice(0,q));var V=y.indexOf("?");if(-1!==V?(this.search=y.substr(V),this.query=y.substr(V+1),t&&(this.query=g.parse(this.query)),y=y.slice(0,V)):t&&(this.search="",this.query={}),y&&(this.pathname=y),v[x]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){M=this.pathname||"";var B=this.search||"";this.path=M+B}return this.href=this.format(),this},a.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",a=!1,i="";this.host?a=e+this.host:this.hostname&&(a=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(a+=":"+this.port)),this.query&&o.isObject(this.query)&&Object.keys(this.query).length&&(i=g.stringify(this.query));var s=this.search||i&&"?"+i||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||v[t])&&!1!==a?(a="//"+(a||""),r&&"/"!==r.charAt(0)&&(r="/"+r)):a||(a=""),n&&"#"!==n.charAt(0)&&(n="#"+n),s&&"?"!==s.charAt(0)&&(s="?"+s),t+a+(r=r.replace(/[?#]/g,(function(e){return encodeURIComponent(e)})))+(s=s.replace("#","%23"))+n},a.prototype.resolve=function(e){return this.resolveObject(y(e,!1,!0)).format()},a.prototype.resolveObject=function(e){if(o.isString(e)){var t=new a;t.parse(e,!1,!0),e=t}for(var r=new a,n=Object.keys(this),i=0;i<n.length;i++){var s=n[i];r[s]=this[s]}if(r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var l=Object.keys(e),c=0;c<l.length;c++){var u=l[c];"protocol"!==u&&(r[u]=e[u])}return v[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!v[e.protocol]){for(var f=Object.keys(e),p=0;p<f.length;p++){var d=f[p];r[d]=e[d]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||_[e.protocol])r.pathname=e.pathname;else{for(var m=(e.pathname||"").split("/");m.length&&!(e.host=m.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==m[0]&&m.unshift(""),m.length<2&&m.unshift(""),r.pathname=m.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var h=r.pathname||"",g=r.search||"";r.path=h+g}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var y=r.pathname&&"/"===r.pathname.charAt(0),b=e.host||e.pathname&&"/"===e.pathname.charAt(0),w=b||y||r.host&&e.pathname,x=w,z=r.pathname&&r.pathname.split("/")||[],k=(m=e.pathname&&e.pathname.split("/")||[],r.protocol&&!v[r.protocol]);if(k&&(r.hostname="",r.port=null,r.host&&(""===z[0]?z[0]=r.host:z.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===m[0]?m[0]=e.host:m.unshift(e.host)),e.host=null),w=w&&(""===m[0]||""===z[0])),b)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,z=m;else if(m.length)z||(z=[]),z.pop(),z=z.concat(m),r.search=e.search,r.query=e.query;else if(!o.isNullOrUndefined(e.search))return k&&(r.hostname=r.host=z.shift(),(S=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=S.shift(),r.host=r.hostname=S.shift())),r.search=e.search,r.query=e.query,o.isNull(r.pathname)&&o.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!z.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var O=z.slice(-1)[0],j=(r.host||e.host||z.length>1)&&("."===O||".."===O)||""===O,E=0,I=z.length;I>=0;I--)"."===(O=z[I])?z.splice(I,1):".."===O?(z.splice(I,1),E++):E&&(z.splice(I,1),E--);if(!w&&!x)for(;E--;E)z.unshift("..");!w||""===z[0]||z[0]&&"/"===z[0].charAt(0)||z.unshift(""),j&&"/"!==z.join("/").substr(-1)&&z.push("");var S,N=""===z[0]||z[0]&&"/"===z[0].charAt(0);return k&&(r.hostname=r.host=N?"":z.length?z.shift():"",(S=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=S.shift(),r.host=r.hostname=S.shift())),(w=w||r.host&&z.length)&&!N&&z.unshift(""),z.length?r.pathname=z.join("/"):(r.pathname=null,r.path=null),o.isNull(r.pathname)&&o.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},a.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},2502:e=>{"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},7529:e=>{e.exports=function(){for(var e={},r=0;r<arguments.length;r++){var n=arguments[r];for(var o in n)t.call(n,o)&&(e[o]=n[o])}return e};var t=Object.prototype.hasOwnProperty},7061:(e,t,r)=>{var n=r(8698).default;function o(){"use strict";e.exports=o=function(){return t},e.exports.__esModule=!0,e.exports.default=e.exports;var t={},r=Object.prototype,a=r.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},s="function"==typeof Symbol?Symbol:{},l=s.iterator||"@@iterator",c=s.asyncIterator||"@@asyncIterator",u=s.toStringTag||"@@toStringTag";function f(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,r){return e[t]=r}}function p(e,t,r,n){var o=t&&t.prototype instanceof h?t:h,a=Object.create(o.prototype),s=new I(n||[]);return i(a,"_invoke",{value:k(e,r,s)}),a}function d(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=p;var m={};function h(){}function _(){}function v(){}var g={};f(g,l,(function(){return this}));var y=Object.getPrototypeOf,b=y&&y(y(S([])));b&&b!==r&&a.call(b,l)&&(g=b);var w=v.prototype=h.prototype=Object.create(g);function x(e){["next","throw","return"].forEach((function(t){f(e,t,(function(e){return this._invoke(t,e)}))}))}function z(e,t){function r(o,i,s,l){var c=d(e[o],e,i);if("throw"!==c.type){var u=c.arg,f=u.value;return f&&"object"==n(f)&&a.call(f,"__await")?t.resolve(f.__await).then((function(e){r("next",e,s,l)}),(function(e){r("throw",e,s,l)})):t.resolve(f).then((function(e){u.value=e,s(u)}),(function(e){return r("throw",e,s,l)}))}l(c.arg)}var o;i(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,o){r(e,n,t,o)}))}return o=o?o.then(a,a):a()}})}function k(e,t,r){var n="suspendedStart";return function(o,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw a;return{value:void 0,done:!0}}for(r.method=o,r.arg=a;;){var i=r.delegate;if(i){var s=O(i,r);if(s){if(s===m)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=d(e,t,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===m)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function O(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,O(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),m;var o=d(n,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,m;var a=o.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,m):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,m)}function j(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function I(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(j,this),this.reset(!0)}function S(e){if(e){var t=e[l];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return n.next=n}}return{next:N}}function N(){return{value:void 0,done:!0}}return _.prototype=v,i(w,"constructor",{value:v,configurable:!0}),i(v,"constructor",{value:_,configurable:!0}),_.displayName=f(v,u,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===_||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,v):(e.__proto__=v,f(e,u,"GeneratorFunction")),e.prototype=Object.create(w),e},t.awrap=function(e){return{__await:e}},x(z.prototype),f(z.prototype,c,(function(){return this})),t.AsyncIterator=z,t.async=function(e,r,n,o,a){void 0===a&&(a=Promise);var i=new z(p(e,r,n,o),a);return t.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},x(w),f(w,u,"Generator"),f(w,l,(function(){return this})),f(w,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=S,I.prototype={constructor:I,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(E),!e)for(var t in this)"t"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,n){return i.type="throw",i.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(s&&l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var o=n;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,m):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),m},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),E(r),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;E(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:S(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),m}},t}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports},8698:e=>{function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},4687:(e,t,r)=>{var n=r(7061)();e.exports=n;try{regeneratorRuntime=n}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{"use strict";function e(e,t,r,n,o,a,i){try{var s=e[a](i),l=s.value}catch(e){return void r(e)}s.done?t(l):Promise.resolve(l).then(n,o)}function t(t){return function(){var r=this,n=arguments;return new Promise((function(o,a){var i=t.apply(r,n);function s(t){e(i,o,a,s,l,"next",t)}function l(t){e(i,o,a,s,l,"throw",t)}s(void 0)}))}}var n=r(4687),o=r.n(n),a=r(9483),i=r.n(a);function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function l(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==s(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t);if("object"!==s(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===s(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var c=r(5573),u=r.n(c),f=(r(8490),r(4721)),p=r.n(f),d=(r(9734),r(3105),["like","mention","repeat","pleroma:emoji_reaction","poll"]),m=function(e){return p()(d,e)},h=function(e,t){var r,n={tag:e.id},o=e.status,a=e.from_profile.name;switch(n.title=a,n.icon=e.from_profile.profile_image_url,e.type){case"like":r="favorited_you";break;case"repeat":r="repeated_you";break;case"follow":r="followed_you";break;case"move":r="migrated_to";break;case"follow_request":r="follow_request";break;case"pleroma:report":r="submitted_report";break;case"poll":r="poll_ended"}return"pleroma:emoji_reaction"===e.type?n.body=t.t("notifications.reacted_with",[e.emoji]):r?n.body=t.t("notifications."+r):m(e.type)&&(n.body=e.status.text),o&&o.attachments&&o.attachments.length>0&&!o.nsfw&&o.attachments[0].mimetype.startsWith("image/")&&(n.image=o.attachments[0].url),n};const _=2147483647,v=36,g=/^xn--/,y=/[\x2E\u3002\uFF0E\uFF61]/g,b={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},w=Math.floor;String.fromCharCode;function x(e){throw new RangeError(b[e])}function z(e,t){const r=e.split("@");let n="";r.length>1&&(n=r[0]+"@",e=r[1]);const o=function(e,t){const r=[];let n=e.length;for(;n--;)r[n]=t(e[n]);return r}((e=e.replace(y,".")).split("."),t).join(".");return n+o}const k=function(e,t,r){let n=0;for(e=r?w(e/700):e>>1,e+=w(e/t);e>455;n+=v)e=w(e/35);return w(n+36*e/(e+38))},O=function(e){const t=[],r=e.length;let n=0,o=128,a=72,i=e.lastIndexOf("-");i<0&&(i=0);for(let r=0;r<i;++r)e.charCodeAt(r)>=128&&x("not-basic"),t.push(e.charCodeAt(r));for(let l=i>0?i+1:0;l<r;){const i=n;for(let t=1,o=v;;o+=v){l>=r&&x("invalid-input");const i=(s=e.charCodeAt(l++))>=48&&s<58?s-48+26:s>=65&&s<91?s-65:s>=97&&s<123?s-97:v;i>=v&&x("invalid-input"),i>w((_-n)/t)&&x("overflow"),n+=i*t;const c=o<=a?1:o>=a+26?26:o-a;if(i<c)break;const u=v-c;t>w(_/u)&&x("overflow"),t*=u}const c=t.length+1;a=k(n-i,c,0==i),w(n/c)>_-o&&x("overflow"),o+=w(n/c),n%=c,t.splice(n++,0,o)}var s;return String.fromCodePoint(...t)},j=function(e){return z(e,(function(e){return g.test(e)?O(e.slice(4).toLowerCase()):e}))};function E(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function I(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?E(Object(r),!0).forEach((function(t){l(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):E(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var S=function(e){var t={},r=Object.prototype.hasOwnProperty.call(e,"acct"),n=r&&!Object.prototype.hasOwnProperty.call(e,"avatar");if(t.inLists=null,t.id=String(e.id),t._original=e,r){if(t.screen_name=e.acct,t.fqn=e.fqn,t.statusnet_profile_url=e.url,n)return t;if(t.emoji=e.emojis,t.name=u()(e.display_name),t.name_html=t.name,t.name_unescaped=e.display_name,t.description=e.note,t.description_html=e.note,t.fields=e.fields,t.fields_html=e.fields.map((function(e){return{name:u()(e.name),value:e.value}})),t.fields_text=e.fields.map((function(e){return{name:unescape(e.name.replace(/<[^>]*>/g,"")),value:unescape(e.value.replace(/<[^>]*>/g,""))}})),t.profile_image_url=e.avatar,t.profile_image_url_original=e.avatar,t.cover_photo=e.header,t.friends_count=e.following_count,t.bot=e.bot,e.pleroma){e.pleroma.settings_store&&(t.storage=e.pleroma.settings_store["pleroma-fe"]);var o=e.pleroma.relationship;t.background_image=e.pleroma.background_image,t.favicon=e.pleroma.favicon,t.token=e.pleroma.chat_token,o&&(t.relationship=o),t.allow_following_move=e.pleroma.allow_following_move,t.hide_follows=e.pleroma.hide_follows,t.hide_followers=e.pleroma.hide_followers,t.hide_follows_count=e.pleroma.hide_follows_count,t.hide_followers_count=e.pleroma.hide_followers_count,t.rights={moderator:e.pleroma.is_moderator,admin:e.pleroma.is_admin},t.rights.admin?t.role="admin":t.rights.moderator?t.role="moderator":t.role="member",t.birthday=e.pleroma.birthday,e.pleroma.privileges?t.privileges=e.pleroma.privileges:e.pleroma.is_admin?t.privileges=["users_read","users_manage_invites","users_manage_activation_state","users_manage_tags","users_manage_credentials","users_delete","messages_read","messages_delete","instances_delete","reports_manage_reports","moderation_log_read","announcements_manage_announcements","emoji_manage_emoji","statistics_read"]:e.pleroma.is_moderator?t.privileges=["messages_delete","reports_manage_reports"]:t.privileges=[]}e.source&&(t.description=e.source.note,t.default_scope=e.source.privacy,t.fields=e.source.fields,e.source.pleroma&&(t.no_rich_text=e.source.pleroma.no_rich_text,t.show_role=e.source.pleroma.show_role,t.discoverable=e.source.pleroma.discoverable,t.show_birthday=e.pleroma.show_birthday)),t.is_local=!t.screen_name.includes("@")}else t.screen_name=e.screen_name,t.name=e.name,t.name_html=e.name_html,t.description=e.description,t.description_html=e.description_html,t.profile_image_url=e.profile_image_url,t.profile_image_url_original=e.profile_image_url_original,t.cover_photo=e.cover_photo,t.friends_count=e.friends_count,t.statusnet_profile_url=e.statusnet_profile_url,t.is_local=e.is_local,t.role=e.role,t.show_role=e.show_role,e.rights&&(t.rights={moderator:e.rights.delete_others_notice,admin:e.rights.admin}),t.no_rich_text=e.no_rich_text,t.default_scope=e.default_scope,t.hide_follows=e.hide_follows,t.hide_followers=e.hide_followers,t.hide_follows_count=e.hide_follows_count,t.hide_followers_count=e.hide_followers_count,t.background_image=e.background_image,t.token=e.token,t.relationship={muting:e.muted,blocking:e.statusnet_blocking,followed_by:e.follows_you,following:e.following};if(t.created_at=new Date(e.created_at),t.locked=e.locked,t.followers_count=e.followers_count,t.statuses_count=e.statuses_count,e.pleroma&&(t.follow_request_count=e.pleroma.follow_request_count,t.tags=e.pleroma.tags,t.deactivated=void 0!==e.pleroma.is_active?!e.pleroma.is_active:e.pleroma.deactivated,t.notification_settings=e.pleroma.notification_settings,t.unread_chat_count=e.pleroma.unread_chat_count),t.tags=t.tags||[],t.rights=t.rights||{},t.notification_settings=t.notification_settings||{},t.screen_name_ui=t.screen_name,t.screen_name&&t.screen_name.includes("@")){var a=t.screen_name.split("@"),i=j(a[1]);i!==a[1]?(t.screen_name_ui_contains_non_ascii=!0,t.screen_name_ui=[a[0],i].join("@")):t.screen_name_ui_contains_non_ascii=!1}return t},N=function(e){var t={};return Object.prototype.hasOwnProperty.call(e,"oembed")?t.mimetype=e.mimetype:(t.mimetype=e.pleroma?e.pleroma.mime_type:e.type,t.meta=e.meta,t.id=e.id),t.url=e.url,t.large_thumb_url=e.preview_url,t.description=e.description,t},L=function e(t){var r,n={},o=Object.prototype.hasOwnProperty.call(t,"account");if(o){if(n.favorited=t.favourited,n.fave_num=t.favourites_count,n.repeated=t.reblogged,n.repeat_num=t.reblogs_count,n.bookmarked=t.bookmarked,n.type=t.reblog?"retweet":"status",n.nsfw=t.sensitive,n.raw_html=t.content,n.emojis=t.emojis,n.tags=t.tags,n.edited_at=t.edited_at,t.pleroma){var a=t.pleroma;n.text=a.content?t.pleroma.content["text/plain"]:t.content,n.summary=a.spoiler_text?t.pleroma.spoiler_text["text/plain"]:t.spoiler_text,n.statusnet_conversation_id=t.pleroma.conversation_id,n.is_local=a.local,n.in_reply_to_screen_name=t.pleroma.in_reply_to_account_acct,n.thread_muted=a.thread_muted,n.emoji_reactions=a.emoji_reactions,n.parent_visible=void 0===a.parent_visible||a.parent_visible,n.quote=a.quote?e(a.quote):void 0,n.quote_id=a.quote_id?a.quote_id:n.quote?n.quote.id:void 0,n.quote_url=a.quote_url,n.quote_visible=a.quote_visible}else n.text=t.content,n.summary=t.spoiler_text;n.in_reply_to_status_id=t.in_reply_to_id,n.in_reply_to_user_id=t.in_reply_to_account_id,n.replies_count=t.replies_count,"retweet"===n.type&&(n.retweeted_status=e(t.reblog)),n.summary_raw_html=u()(t.spoiler_text),n.external_url=t.url,n.poll=t.poll,n.poll&&(n.poll.options=(n.poll.options||[]).map((function(e){return I(I({},e),{},{title_html:u()(e.title)})}))),n.pinned=t.pinned,n.muted=t.muted}else n.favorited=t.favorited,n.fave_num=t.fave_num,n.repeated=t.repeated,n.repeat_num=t.repeat_num,n.type=(r=t).is_post_verb?"status":r.retweeted_status?"retweet":"string"==typeof r.uri&&r.uri.match(/(fave|objectType=Favourite)/)||"string"==typeof r.text&&r.text.match(/favorited/)?"favorite":r.text.match(/deleted notice {{tag/)||r.qvitter_delete_notice?"deletion":r.text.match(/started following/)||"follow"===r.activity_type?"follow":"unknown",void 0===t.nsfw?(n.nsfw=F(t),t.retweeted_status&&(n.nsfw=t.retweeted_status.nsfw)):n.nsfw=t.nsfw,n.raw_html=t.statusnet_html,n.text=t.text,n.in_reply_to_status_id=t.in_reply_to_status_id,n.in_reply_to_user_id=t.in_reply_to_user_id,n.in_reply_to_screen_name=t.in_reply_to_screen_name,n.statusnet_conversation_id=t.statusnet_conversation_id,"retweet"===n.type&&(n.retweeted_status=e(t.retweeted_status)),n.summary=t.summary,n.summary_html=t.summary_html,n.external_url=t.external_url,n.is_local=t.is_local;n.id=String(t.id),n.visibility=t.visibility,n.card=t.card,n.created_at=new Date(t.created_at),n.in_reply_to_status_id=n.in_reply_to_status_id?String(n.in_reply_to_status_id):null,n.in_reply_to_user_id=n.in_reply_to_user_id?String(n.in_reply_to_user_id):null,n.user=S(o?t.account:t.user),n.attentions=((o?t.mentions:t.attentions)||[]).map(S),n.attachments=((o?t.media_attachments:t.attachments)||[]).map(N);var i=o?t.reblog:t.retweeted_status;return i&&(n.retweeted_status=e(i)),n.favoritedBy=[],n.rebloggedBy=[],Object.prototype.hasOwnProperty.call(t,"originalStatus")&&Object.assign(n,t.originalStatus),n},R=function(e){var t={};if(Object.prototype.hasOwnProperty.call(e,"ntype")){var r=L(e.notice);t.type=e.ntype,t.seen=Boolean(e.is_seen),t.status="like"===t.type?L(e.notice.favorited_status):r,t.action=r,t.from_profile="pleroma:chat_mention"===t.type?S(e.account):S(e.from_profile)}else t.type={favourite:"like",reblog:"repeat"}[e.type]||e.type,t.seen=e.pleroma.is_seen,t.status=m(t.type)?L(e.status):null,t.action=t.status,t.target="move"!==t.type?null:S(e.target),t.from_profile=S(e.account),t.emoji=e.emoji,t.emoji_url=e.emoji_url,e.report&&(t.report=e.report,t.report.content=e.report.content,t.report.acct=S(e.report.account),t.report.actor=S(e.report.actor),t.report.statuses=e.report.statuses.map(L));return t.created_at=new Date(e.created_at),t.id=parseInt(e.id),t},F=function(e){return(e.tags||[]).includes("nsfw")||!!(e.text||"").match(/#nsfw/i)};const A="undefined"!=typeof window,T="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,C=e=>T?Symbol(e):e,P=e=>"number"==typeof e&&isFinite(e),D=e=>"[object RegExp]"===Z(e),M=e=>ee(e)&&0===Object.keys(e).length;function W(e,t){"undefined"!=typeof console&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const U=Object.assign;let $;const q=()=>$||($="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==r.g?r.g:{});function V(e){return e.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}const B=Object.prototype.hasOwnProperty;function H(e,t){return B.call(e,t)}const G=Array.isArray,Y=e=>"function"==typeof e,X=e=>"string"==typeof e,K=e=>"boolean"==typeof e,J=e=>null!==e&&"object"==typeof e,Q=Object.prototype.toString,Z=e=>Q.call(e),ee=e=>"[object Object]"===Z(e);function te(e,t,r={}){const{domain:n,messages:o,args:a}=r,i=new SyntaxError(String(e));return i.code=e,t&&(i.location=t),i.domain=n,i}String.fromCharCode(8232),String.fromCharCode(8233);const re=[];re[0]={w:[0],i:[3,0],"[":[4],o:[7]},re[1]={w:[1],".":[2],"[":[4],o:[7]},re[2]={w:[2],i:[3,0],0:[3,0]},re[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]},re[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]},re[5]={"'":[4,0],o:8,l:[5,0]},re[6]={'"':[4,0],o:8,l:[6,0]};const ne=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function oe(e){if(null==e)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}const ae=new Map;function ie(e,t){return J(e)?e[t]:null}const se=e=>e,le=e=>"",ce=e=>0===e.length?"":e.join(""),ue=e=>null==e?"":G(e)||ee(e)&&e.toString===Q?JSON.stringify(e,null,2):String(e);function fe(e,t){return e=Math.abs(e),2===t?e?e>1?1:0:1:e?Math.min(e,2):0}let pe=null;const de=me("function:translate");function me(e){return t=>pe&&pe.emit(e,t)}function he(e,t,r){return[...new Set([r,...G(t)?t:J(t)?Object.keys(t):X(t)?[t]:[r]])]}function _e(e,t,r){const n=X(r)?r:be,o=e;o.__localeChainCache||(o.__localeChainCache=new Map);let a=o.__localeChainCache.get(n);if(!a){a=[];let e=[r];for(;G(e);)e=ve(a,e,t);const i=G(t)||!ee(t)?t:t.default?t.default:null;e=X(i)?[i]:i,G(e)&&ve(a,e,!1),o.__localeChainCache.set(n,a)}return a}function ve(e,t,r){let n=!0;for(let o=0;o<t.length&&K(n);o++){const a=t[o];X(a)&&(n=ge(e,t[o],r))}return n}function ge(e,t,r){let n;const o=t.split("-");do{n=ye(e,o.join("-"),r),o.splice(-1,1)}while(o.length&&!0===n);return n}function ye(e,t,r){let n=!1;if(!e.includes(t)&&(n=!0,t)){n="!"!==t[t.length-1];const o=t.replace(/!/g,"");e.push(o),(G(r)||ee(r))&&r[o]&&(n=r[o])}return n}const be="en-US",we=e=>`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;let xe,ze,ke=null;const Oe=e=>{ke=e};let je=null;const Ee=e=>{je=e};let Ie=0;function Se(e,t,r,n,o){const{missing:a,onWarn:i}=e;if(null!==a){const n=a(e,r,t,o);return X(n)?n:t}return t}function Ne(e,t,r){e.__localeChainCache=new Map,e.localeFallbacker(e,r,t)}Object.create(null);let Le=15;const Re=()=>++Le,Fe={INVALID_ARGUMENT:Le,INVALID_DATE_ARGUMENT:Re(),INVALID_ISO_DATE_ARGUMENT:Re(),__EXTEND_POINT__:Re()};function Ae(e){return te(e,null,void 0)}const Te=()=>"",Ce=e=>Y(e);function Pe(e,...t){const{fallbackFormat:r,postTranslation:n,unresolving:o,messageCompiler:a,fallbackLocale:i,messages:s}=e,[l,c]=We(...t),u=(K(c.missingWarn)?c.missingWarn:e.missingWarn,K(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,K(c.escapeParameter)?c.escapeParameter:e.escapeParameter),f=!!c.resolvedMessage,p=X(c.default)||K(c.default)?K(c.default)?a?l:()=>l:c.default:r?a?l:()=>l:"",d=r||""!==p,m=X(c.locale)?c.locale:e.locale;u&&function(e){G(e.list)?e.list=e.list.map((e=>X(e)?V(e):e)):J(e.named)&&Object.keys(e.named).forEach((t=>{X(e.named[t])&&(e.named[t]=V(e.named[t]))}))}(c);let[h,_,v]=f?[l,m,s[m]||{}]:De(e,l,m,i),g=h,y=l;if(f||X(g)||Ce(g)||d&&(g=p,y=g),!(f||(X(g)||Ce(g))&&X(_)))return o?-1:l;let b=!1;const w=Ce(g)?g:Me(e,l,_,g,y,(()=>{b=!0}));if(b)return g;const x=function(e,t,r,n){const{modifiers:o,pluralRules:a,messageResolver:i,fallbackLocale:s,fallbackWarn:l,missingWarn:c,fallbackContext:u}=e,f={locale:t,modifiers:o,pluralRules:a,messages:n=>{let o=i(r,n);if(null==o&&u){const[,,e]=De(u,n,t,s);o=i(e,n)}if(X(o)){let r=!1;const a=Me(e,n,t,o,n,(()=>{r=!0}));return r?Te:a}return Ce(o)?o:Te}};return e.processor&&(f.processor=e.processor),n.list&&(f.list=n.list),n.named&&(f.named=n.named),P(n.plural)&&(f.pluralIndex=n.plural),f}(e,_,v,c),z=function(e,t,r){return t(r)}(0,w,function(e={}){const t=e.locale,r=function(e){const t=P(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(P(e.named.count)||P(e.named.n))?P(e.named.count)?e.named.count:P(e.named.n)?e.named.n:t:t}(e),n=J(e.pluralRules)&&X(t)&&Y(e.pluralRules[t])?e.pluralRules[t]:fe,o=J(e.pluralRules)&&X(t)&&Y(e.pluralRules[t])?fe:void 0,a=e.list||[],i=e.named||{};function s(t){return(Y(e.messages)?e.messages(t):!!J(e.messages)&&e.messages[t])||(e.parent?e.parent.message(t):le)}P(e.pluralIndex)&&function(e,t){t.count||(t.count=e),t.n||(t.n=e)}(r,i);const l=ee(e.processor)&&Y(e.processor.normalize)?e.processor.normalize:ce,c=ee(e.processor)&&Y(e.processor.interpolate)?e.processor.interpolate:ue,u={list:e=>a[e],named:e=>i[e],plural:e=>e[n(r,e.length,o)],linked:(t,...r)=>{const[n,o]=r;let a="text",i="";1===r.length?J(n)?(i=n.modifier||i,a=n.type||a):X(n)&&(i=n||i):2===r.length&&(X(n)&&(i=n||i),X(o)&&(a=o||a));let l=s(t)(u);return"vnode"===a&&G(l)&&i&&(l=l[0]),i?(c=i,e.modifiers?e.modifiers[c]:se)(l,a):l;var c},message:s,type:ee(e.processor)&&X(e.processor.type)?e.processor.type:"text",interpolate:c,normalize:l};return u}(x)),k=n?n(z,l):z;if(__INTLIFY_PROD_DEVTOOLS__){const t={timestamp:Date.now(),key:X(l)?l:Ce(g)?g.key:"",locale:_||(Ce(g)?g.locale:""),format:X(g)?g:Ce(g)?g.source:"",message:k};t.meta=U({},e.__meta,ke||{}),de(t)}return k}function De(e,t,r,n,o,a){const{messages:i,onWarn:s,messageResolver:l,localeFallbacker:c}=e,u=c(e,n,r);let f,p={},d=null,m=r,h=null;for(let r=0;r<u.length&&(f=h=u[r],p=i[f]||{},null===(d=l(p,t))&&(d=p[t]),!X(d)&&!Y(d));r++){const r=Se(e,t,f,0,"translate");r!==t&&(d=r),m=h}return[d,f,p]}function Me(e,t,r,n,o,a){const{messageCompiler:i,warnHtmlMessage:s}=e;if(Ce(n)){const e=n;return e.locale=e.locale||r,e.key=e.key||t,e}if(null==i){const e=()=>n;return e.locale=r,e.key=t,e}const l=i(n,function(e,t,r,n,o,a){return{warnHtmlMessage:o,onError:e=>{throw a&&a(e),e},onCacheKey:e=>((e,t,r)=>{return n={l:e,k:t,s:r},JSON.stringify(n).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027");var n})(t,r,e)}}(0,r,o,0,s,a));return l.locale=r,l.key=t,l.source=n,l}function We(...e){const[t,r,n]=e,o={};if(!X(t)&&!P(t)&&!Ce(t))throw Ae(Fe.INVALID_ARGUMENT);const a=P(t)?String(t):(Ce(t),t);return P(r)?o.plural=r:X(r)?o.default=r:ee(r)&&!M(r)?o.named=r:G(r)&&(o.list=r),P(n)?o.plural=n:X(n)?o.default=n:ee(n)&&U(o,n),[a,o]}const Ue="undefined"!=typeof Intl;function $e(e,...t){const{datetimeFormats:r,unresolving:n,fallbackLocale:o,onWarn:a,localeFallbacker:i}=e,{__datetimeFormatters:s}=e,[l,c,u,f]=Ve(...t),p=(K(u.missingWarn)?u.missingWarn:e.missingWarn,K(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn,!!u.part),d=X(u.locale)?u.locale:e.locale,m=i(e,o,d);if(!X(l)||""===l)return new Intl.DateTimeFormat(d,f).format(c);let h,_={},v=null,g=d,y=null;for(let t=0;t<m.length&&(h=y=m[t],_=r[h]||{},v=_[l],!ee(v));t++)Se(e,l,h,0,"datetime format"),g=y;if(!ee(v)||!X(h))return n?-1:l;let b=`${h}__${l}`;M(f)||(b=`${b}__${JSON.stringify(f)}`);let w=s.get(b);return w||(w=new Intl.DateTimeFormat(h,U({},v,f)),s.set(b,w)),p?w.formatToParts(c):w.format(c)}Ue&&Intl.DateTimeFormat,Ue&&Intl.NumberFormat;const qe=["localeMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName","formatMatcher","hour12","timeZone","dateStyle","timeStyle","calendar","dayPeriod","numberingSystem","hourCycle","fractionalSecondDigits"];function Ve(...e){const[t,r,n,o]=e,a={};let i,s={};if(X(t)){const e=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!e)throw Ae(Fe.INVALID_ISO_DATE_ARGUMENT);const r=e[3]?e[3].trim().startsWith("T")?`${e[1].trim()}${e[3].trim()}`:`${e[1].trim()}T${e[3].trim()}`:e[1].trim();i=new Date(r);try{i.toISOString()}catch(e){throw Ae(Fe.INVALID_ISO_DATE_ARGUMENT)}}else if("[object Date]"===Z(t)){if(isNaN(t.getTime()))throw Ae(Fe.INVALID_DATE_ARGUMENT);i=t}else{if(!P(t))throw Ae(Fe.INVALID_ARGUMENT);i=t}return X(r)?a.key=r:ee(r)&&Object.keys(r).forEach((e=>{qe.includes(e)?s[e]=r[e]:a[e]=r[e]})),X(n)?a.locale=n:ee(n)&&(s=n),ee(o)&&(s=o),[a.key||"",i,a,s]}function Be(e,t,r){const n=e;for(const e in r){const r=`${t}__${e}`;n.__datetimeFormatters.has(r)&&n.__datetimeFormatters.delete(r)}}function He(e,...t){const{numberFormats:r,unresolving:n,fallbackLocale:o,onWarn:a,localeFallbacker:i}=e,{__numberFormatters:s}=e,[l,c,u,f]=Ye(...t),p=(K(u.missingWarn)?u.missingWarn:e.missingWarn,K(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn,!!u.part),d=X(u.locale)?u.locale:e.locale,m=i(e,o,d);if(!X(l)||""===l)return new Intl.NumberFormat(d,f).format(c);let h,_={},v=null,g=d,y=null;for(let t=0;t<m.length&&(h=y=m[t],_=r[h]||{},v=_[l],!ee(v));t++)Se(e,l,h,0,"number format"),g=y;if(!ee(v)||!X(h))return n?-1:l;let b=`${h}__${l}`;M(f)||(b=`${b}__${JSON.stringify(f)}`);let w=s.get(b);return w||(w=new Intl.NumberFormat(h,U({},v,f)),s.set(b,w)),p?w.formatToParts(c):w.format(c)}const Ge=["localeMatcher","style","currency","currencyDisplay","currencySign","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","compactDisplay","notation","signDisplay","unit","unitDisplay","roundingMode","roundingPriority","roundingIncrement","trailingZeroDisplay"];function Ye(...e){const[t,r,n,o]=e,a={};let i={};if(!P(t))throw Ae(Fe.INVALID_ARGUMENT);const s=t;return X(r)?a.key=r:ee(r)&&Object.keys(r).forEach((e=>{Ge.includes(e)?i[e]=r[e]:a[e]=r[e]})),X(n)?a.locale=n:ee(n)&&(i=n),ee(o)&&(i=o),[a.key||"",s,a,i]}function Xe(e,t,r){const n=e;for(const e in r){const r=`${t}__${e}`;n.__numberFormatters.has(r)&&n.__numberFormatters.delete(r)}}function Ke(e,t){const r=Object.create(null),n=e.split(",");for(let e=0;e<n.length;e++)r[n[e]]=!0;return t?e=>!!r[e.toLowerCase()]:e=>!!r[e]}function Je(e){if(ut(e)){const t={};for(let r=0;r<e.length;r++){const n=e[r],o=dt(n)?tt(n):Je(n);if(o)for(const e in o)t[e]=o[e]}return t}return dt(e)||ht(e)?e:void 0}"boolean"!=typeof __INTLIFY_PROD_DEVTOOLS__&&(q().__INTLIFY_PROD_DEVTOOLS__=!1);const Qe=/;(?![^(]*\))/g,Ze=/:([^]+)/,et=/\/\*.*?\*\//gs;function tt(e){const t={};return e.replace(et,"").split(Qe).forEach((e=>{if(e){const r=e.split(Ze);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}function rt(e){let t="";if(dt(e))t=e;else if(ut(e))for(let r=0;r<e.length;r++){const n=rt(e[r]);n&&(t+=n+" ")}else if(ht(e))for(const r in e)e[r]&&(t+=r+" ");return t.trim()}const nt={},ot=()=>{},at=/^on[^a-z]/,it=e=>at.test(e),st=Object.assign,lt=Object.prototype.hasOwnProperty,ct=(e,t)=>lt.call(e,t),ut=Array.isArray,ft=e=>"[object Map]"===vt(e),pt=e=>"function"==typeof e,dt=e=>"string"==typeof e,mt=e=>"symbol"==typeof e,ht=e=>null!==e&&"object"==typeof e,_t=Object.prototype.toString,vt=e=>_t.call(e),gt=e=>dt(e)&&"NaN"!==e&&"-"!==e[0]&&""+parseInt(e,10)===e,yt=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},bt=/-(\w)/g,wt=(yt((e=>e.replace(bt,((e,t)=>t?t.toUpperCase():"")))),/\B([A-Z])/g),xt=(yt((e=>e.replace(wt,"-$1").toLowerCase())),yt((e=>e.charAt(0).toUpperCase()+e.slice(1)))),zt=(yt((e=>e?`on${xt(e)}`:"")),(e,t)=>!Object.is(e,t));let kt;class Ot{constructor(e=!1){this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=kt,!e&&kt&&(this.index=(kt.scopes||(kt.scopes=[])).push(this)-1)}run(e){if(this.active){const t=kt;try{return kt=this,e()}finally{kt=t}}}on(){kt=this}off(){kt=this.parent}stop(e){if(this.active){let t,r;for(t=0,r=this.effects.length;t<r;t++)this.effects[t].stop();for(t=0,r=this.cleanups.length;t<r;t++)this.cleanups[t]();if(this.scopes)for(t=0,r=this.scopes.length;t<r;t++)this.scopes[t].stop(!0);if(!this.detached&&this.parent&&!e){const e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0,this.active=!1}}}const jt=e=>{const t=new Set(e);return t.w=0,t.n=0,t},Et=e=>(e.w&Rt)>0,It=e=>(e.n&Rt)>0,St=new WeakMap;let Nt,Lt=0,Rt=1;const Ft=Symbol(""),At=Symbol("");class Tt{constructor(e,t=null,r){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,function(e,t=kt){t&&t.active&&t.effects.push(e)}(this,r)}run(){if(!this.active)return this.fn();let e=Nt,t=Pt;for(;e;){if(e===this)return;e=e.parent}try{return this.parent=Nt,Nt=this,Pt=!0,Rt=1<<++Lt,Lt<=30?(({deps:e})=>{if(e.length)for(let t=0;t<e.length;t++)e[t].w|=Rt})(this):Ct(this),this.fn()}finally{Lt<=30&&(e=>{const{deps:t}=e;if(t.length){let r=0;for(let n=0;n<t.length;n++){const o=t[n];Et(o)&&!It(o)?o.delete(e):t[r++]=o,o.w&=~Rt,o.n&=~Rt}t.length=r}})(this),Rt=1<<--Lt,Nt=this.parent,Pt=t,this.parent=void 0,this.deferStop&&this.stop()}}stop(){Nt===this?this.deferStop=!0:this.active&&(Ct(this),this.onStop&&this.onStop(),this.active=!1)}}function Ct(e){const{deps:t}=e;if(t.length){for(let r=0;r<t.length;r++)t[r].delete(e);t.length=0}}let Pt=!0;const Dt=[];function Mt(){Dt.push(Pt),Pt=!1}function Wt(){const e=Dt.pop();Pt=void 0===e||e}function Ut(e,t,r){if(Pt&&Nt){let t=St.get(e);t||St.set(e,t=new Map);let n=t.get(r);n||t.set(r,n=jt()),$t(n)}}function $t(e,t){let r=!1;Lt<=30?It(e)||(e.n|=Rt,r=!Et(e)):r=!e.has(Nt),r&&(e.add(Nt),Nt.deps.push(e))}function qt(e,t,r,n,o,a){const i=St.get(e);if(!i)return;let s=[];if("clear"===t)s=[...i.values()];else if("length"===r&&ut(e)){const e=(e=>{const t=parseFloat(e);return isNaN(t)?e:t})(n);i.forEach(((t,r)=>{("length"===r||r>=e)&&s.push(t)}))}else switch(void 0!==r&&s.push(i.get(r)),t){case"add":ut(e)?gt(r)&&s.push(i.get("length")):(s.push(i.get(Ft)),ft(e)&&s.push(i.get(At)));break;case"delete":ut(e)||(s.push(i.get(Ft)),ft(e)&&s.push(i.get(At)));break;case"set":ft(e)&&s.push(i.get(Ft))}if(1===s.length)s[0]&&Vt(s[0]);else{const e=[];for(const t of s)t&&e.push(...t);Vt(jt(e))}}function Vt(e,t){const r=ut(e)?e:[...e];for(const e of r)e.computed&&Bt(e);for(const e of r)e.computed||Bt(e)}function Bt(e,t){(e!==Nt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const Ht=Ke("__proto__,__v_isRef,__isVue"),Gt=new Set(Object.getOwnPropertyNames(Symbol).filter((e=>"arguments"!==e&&"caller"!==e)).map((e=>Symbol[e])).filter(mt)),Yt=Qt(),Xt=Qt(!0),Kt=Jt();function Jt(){const e={};return["includes","indexOf","lastIndexOf"].forEach((t=>{e[t]=function(...e){const r=Fr(this);for(let e=0,t=this.length;e<t;e++)Ut(r,0,e+"");const n=r[t](...e);return-1===n||!1===n?r[t](...e.map(Fr)):n}})),["push","pop","shift","unshift","splice"].forEach((t=>{e[t]=function(...e){Mt();const r=Fr(this)[t].apply(this,e);return Wt(),r}})),e}function Qt(e=!1,t=!1){return function(r,n,o){if("__v_isReactive"===n)return!e;if("__v_isReadonly"===n)return e;if("__v_isShallow"===n)return t;if("__v_raw"===n&&o===(e?t?Or:kr:t?zr:xr).get(r))return r;const a=ut(r);if(!e&&a&&ct(Kt,n))return Reflect.get(Kt,n,o);const i=Reflect.get(r,n,o);return(mt(n)?Gt.has(n):Ht(n))?i:(e||Ut(r,0,n),t?i:Mr(i)?a&&gt(n)?i:i.value:ht(i)?e?Er(i):jr(i):i)}}function Zt(e=!1){return function(t,r,n,o){let a=t[r];if(Nr(a)&&Mr(a)&&!Mr(n))return!1;if(!e&&(Lr(n)||Nr(n)||(a=Fr(a),n=Fr(n)),!ut(t)&&Mr(a)&&!Mr(n)))return a.value=n,!0;const i=ut(t)&&gt(r)?Number(r)<t.length:ct(t,r),s=Reflect.set(t,r,n,o);return t===Fr(o)&&(i?zt(n,a)&&qt(t,"set",r,n):qt(t,"add",r,n)),s}}const er={get:Yt,set:Zt(),deleteProperty:function(e,t){const r=ct(e,t),n=(e[t],Reflect.deleteProperty(e,t));return n&&r&&qt(e,"delete",t,void 0),n},has:function(e,t){const r=Reflect.has(e,t);return mt(t)&&Gt.has(t)||Ut(e,0,t),r},ownKeys:function(e){return Ut(e,0,ut(e)?"length":Ft),Reflect.ownKeys(e)}},tr={get:Xt,set:(e,t)=>!0,deleteProperty:(e,t)=>!0},rr=e=>e,nr=e=>Reflect.getPrototypeOf(e);function or(e,t,r=!1,n=!1){const o=Fr(e=e.__v_raw),a=Fr(t);r||(t!==a&&Ut(o,0,t),Ut(o,0,a));const{has:i}=nr(o),s=n?rr:r?Cr:Tr;return i.call(o,t)?s(e.get(t)):i.call(o,a)?s(e.get(a)):void(e!==o&&e.get(t))}function ar(e,t=!1){const r=this.__v_raw,n=Fr(r),o=Fr(e);return t||(e!==o&&Ut(n,0,e),Ut(n,0,o)),e===o?r.has(e):r.has(e)||r.has(o)}function ir(e,t=!1){return e=e.__v_raw,!t&&Ut(Fr(e),0,Ft),Reflect.get(e,"size",e)}function sr(e){e=Fr(e);const t=Fr(this);return nr(t).has.call(t,e)||(t.add(e),qt(t,"add",e,e)),this}function lr(e,t){t=Fr(t);const r=Fr(this),{has:n,get:o}=nr(r);let a=n.call(r,e);a||(e=Fr(e),a=n.call(r,e));const i=o.call(r,e);return r.set(e,t),a?zt(t,i)&&qt(r,"set",e,t):qt(r,"add",e,t),this}function cr(e){const t=Fr(this),{has:r,get:n}=nr(t);let o=r.call(t,e);o||(e=Fr(e),o=r.call(t,e)),n&&n.call(t,e);const a=t.delete(e);return o&&qt(t,"delete",e,void 0),a}function ur(){const e=Fr(this),t=0!==e.size,r=e.clear();return t&&qt(e,"clear",void 0,void 0),r}function fr(e,t){return function(r,n){const o=this,a=o.__v_raw,i=Fr(a),s=t?rr:e?Cr:Tr;return!e&&Ut(i,0,Ft),a.forEach(((e,t)=>r.call(n,s(e),s(t),o)))}}function pr(e,t,r){return function(...n){const o=this.__v_raw,a=Fr(o),i=ft(a),s="entries"===e||e===Symbol.iterator&&i,l="keys"===e&&i,c=o[e](...n),u=r?rr:t?Cr:Tr;return!t&&Ut(a,0,l?At:Ft),{next(){const{value:e,done:t}=c.next();return t?{value:e,done:t}:{value:s?[u(e[0]),u(e[1])]:u(e),done:t}},[Symbol.iterator](){return this}}}}function dr(e){return function(...t){return"delete"!==e&&this}}function mr(){const e={get(e){return or(this,e)},get size(){return ir(this)},has:ar,add:sr,set:lr,delete:cr,clear:ur,forEach:fr(!1,!1)},t={get(e){return or(this,e,!1,!0)},get size(){return ir(this)},has:ar,add:sr,set:lr,delete:cr,clear:ur,forEach:fr(!1,!0)},r={get(e){return or(this,e,!0)},get size(){return ir(this,!0)},has(e){return ar.call(this,e,!0)},add:dr("add"),set:dr("set"),delete:dr("delete"),clear:dr("clear"),forEach:fr(!0,!1)},n={get(e){return or(this,e,!0,!0)},get size(){return ir(this,!0)},has(e){return ar.call(this,e,!0)},add:dr("add"),set:dr("set"),delete:dr("delete"),clear:dr("clear"),forEach:fr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach((o=>{e[o]=pr(o,!1,!1),r[o]=pr(o,!0,!1),t[o]=pr(o,!1,!0),n[o]=pr(o,!0,!0)})),[e,r,t,n]}const[hr,_r,vr,gr]=mr();function yr(e,t){const r=t?e?gr:vr:e?_r:hr;return(t,n,o)=>"__v_isReactive"===n?!e:"__v_isReadonly"===n?e:"__v_raw"===n?t:Reflect.get(ct(r,n)&&n in t?r:t,n,o)}const br={get:yr(!1,!1)},wr={get:yr(!0,!1)},xr=new WeakMap,zr=new WeakMap,kr=new WeakMap,Or=new WeakMap;function jr(e){return Nr(e)?e:Ir(e,!1,er,br,xr)}function Er(e){return Ir(e,!0,tr,wr,kr)}function Ir(e,t,r,n,o){if(!ht(e))return e;if(e.__v_raw&&(!t||!e.__v_isReactive))return e;const a=o.get(e);if(a)return a;const i=(s=e).__v_skip||!Object.isExtensible(s)?0:function(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}((e=>vt(e).slice(8,-1))(s));var s;if(0===i)return e;const l=new Proxy(e,2===i?n:r);return o.set(e,l),l}function Sr(e){return Nr(e)?Sr(e.__v_raw):!(!e||!e.__v_isReactive)}function Nr(e){return!(!e||!e.__v_isReadonly)}function Lr(e){return!(!e||!e.__v_isShallow)}function Rr(e){return Sr(e)||Nr(e)}function Fr(e){const t=e&&e.__v_raw;return t?Fr(t):e}function Ar(e){return((e,t,r)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})})(e,"__v_skip",!0),e}const Tr=e=>ht(e)?jr(e):e,Cr=e=>ht(e)?Er(e):e;function Pr(e){Pt&&Nt&&$t((e=Fr(e)).dep||(e.dep=jt()))}function Dr(e,t){(e=Fr(e)).dep&&Vt(e.dep)}function Mr(e){return!(!e||!0!==e.__v_isRef)}function Wr(e){return Ur(e,!1)}function Ur(e,t){return Mr(e)?e:new $r(e,t)}class $r{constructor(e,t){this.__v_isShallow=t,this.dep=void 0,this.__v_isRef=!0,this._rawValue=t?e:Fr(e),this._value=t?e:Tr(e)}get value(){return Pr(this),this._value}set value(e){const t=this.__v_isShallow||Lr(e)||Nr(e);e=t?e:Fr(e),zt(e,this._rawValue)&&(this._rawValue=e,this._value=t?e:Tr(e),Dr(this))}}const qr={get:(e,t,r)=>{return Mr(n=Reflect.get(e,t,r))?n.value:n;var n},set:(e,t,r,n)=>{const o=e[t];return Mr(o)&&!Mr(r)?(o.value=r,!0):Reflect.set(e,t,r,n)}};var Vr;class Br{constructor(e,t,r,n){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this[Vr]=!1,this._dirty=!0,this.effect=new Tt(e,(()=>{this._dirty||(this._dirty=!0,Dr(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!n,this.__v_isReadonly=r}get value(){const e=Fr(this);return Pr(e),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}function Hr(e,t,r,n){let o;try{o=n?e(...n):e()}catch(e){Yr(e,t,r)}return o}function Gr(e,t,r,n){if(pt(e)){const a=Hr(e,t,r,n);return a&&(ht(o=a)&&pt(o.then)&&pt(o.catch))&&a.catch((e=>{Yr(e,t,r)})),a}var o;const a=[];for(let o=0;o<e.length;o++)a.push(Gr(e[o],t,r,n));return a}function Yr(e,t,r,n=!0){if(t&&t.vnode,t){let n=t.parent;const o=t.proxy,a=r;for(;n;){const t=n.ec;if(t)for(let r=0;r<t.length;r++)if(!1===t[r](e,o,a))return;n=n.parent}const i=t.appContext.config.errorHandler;if(i)return void Hr(i,null,10,[e,o,a])}!function(e,t,r,n=!0){console.error(e)}(e,0,0,n)}Vr="__v_isReadonly";let Xr=!1,Kr=!1;const Jr=[];let Qr=0;const Zr=[];let en=null,tn=0;const rn=Promise.resolve();let nn=null;function on(e){const t=nn||rn;return e?t.then(this?e.bind(this):e):t}function an(e){Jr.length&&Jr.includes(e,Xr&&e.allowRecurse?Qr+1:Qr)||(null==e.id?Jr.push(e):Jr.splice(function(e){let t=Qr+1,r=Jr.length;for(;t<r;){const n=t+r>>>1;ln(Jr[n])<e?t=n+1:r=n}return t}(e.id),0,e),sn())}function sn(){Xr||Kr||(Kr=!0,nn=rn.then(un))}const ln=e=>null==e.id?1/0:e.id,cn=(e,t)=>{const r=ln(e)-ln(t);if(0===r){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function un(e){Kr=!1,Xr=!0,Jr.sort(cn);try{for(Qr=0;Qr<Jr.length;Qr++){const e=Jr[Qr];e&&!1!==e.active&&Hr(e,null,14)}}finally{Qr=0,Jr.length=0,function(e){if(Zr.length){const e=[...new Set(Zr)];if(Zr.length=0,en)return void en.push(...e);for(en=e,en.sort(((e,t)=>ln(e)-ln(t))),tn=0;tn<en.length;tn++)en[tn]();en=null,tn=0}}(),Xr=!1,nn=null,(Jr.length||Zr.length)&&un(e)}}new Set,new Map;let fn=null;function pn(e,t,r=!1){const n=qn||fn;if(n){const o=null==n.parent?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return r&&pt(t)?t.call(n.proxy):t}}const dn={};function mn(e,t,r){return hn(e,t,r)}function hn(e,t,{immediate:r,deep:n,flush:o,onTrack:a,onTrigger:i}=nt){const s=qn;let l,c,u=!1,f=!1;if(Mr(e)?(l=()=>e.value,u=Lr(e)):Sr(e)?(l=()=>e,n=!0):ut(e)?(f=!0,u=e.some((e=>Sr(e)||Lr(e))),l=()=>e.map((e=>Mr(e)?e.value:Sr(e)?vn(e):pt(e)?Hr(e,s,2):void 0))):l=pt(e)?t?()=>Hr(e,s,2):()=>{if(!s||!s.isUnmounted)return c&&c(),Gr(e,s,3,[d])}:ot,t&&n){const e=l;l=()=>vn(e())}let p,d=e=>{c=v.onStop=()=>{Hr(e,s,4)}};if(Gn){if(d=ot,t?r&&Gr(t,s,3,[l(),f?[]:void 0,d]):l(),"sync"!==o)return ot;{const e=Jn();p=e.__watcherHandles||(e.__watcherHandles=[])}}let m=f?new Array(e.length).fill(dn):dn;const h=()=>{if(v.active)if(t){const e=v.run();(n||u||(f?e.some(((e,t)=>zt(e,m[t]))):zt(e,m)))&&(c&&c(),Gr(t,s,3,[e,m===dn?void 0:f&&m[0]===dn?[]:m,d]),m=e)}else v.run()};let _;h.allowRecurse=!!t,"sync"===o?_=h:"post"===o?_=()=>Ln(h,s&&s.suspense):(h.pre=!0,s&&(h.id=s.uid),_=()=>an(h));const v=new Tt(l,_);t?r?h():m=v.run():"post"===o?Ln(v.run.bind(v),s&&s.suspense):v.run();const g=()=>{v.stop(),s&&s.scope&&((e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)})(s.scope.effects,v)};return p&&p.push(g),g}function _n(e,t,r){const n=this.proxy,o=dt(e)?e.includes(".")?function(e,t){const r=t.split(".");return()=>{let t=e;for(let e=0;e<r.length&&t;e++)t=t[r[e]];return t}}(n,e):()=>n[e]:e.bind(n,n);let a;pt(t)?a=t:(a=t.handler,r=t);const i=qn;Bn(this);const s=hn(o,a.bind(n),r);return i?Bn(i):Hn(),s}function vn(e,t){if(!ht(e)||e.__v_skip)return e;if((t=t||new Set).has(e))return e;if(t.add(e),Mr(e))vn(e.value,t);else if(ut(e))for(let r=0;r<e.length;r++)vn(e[r],t);else if("[object Set]"===vt(e)||ft(e))e.forEach((e=>{vn(e,t)}));else if((e=>"[object Object]"===vt(e))(e))for(const r in e)vn(e[r],t);return e}Boolean,Boolean;RegExp,RegExp;const gn=e=>(t,r=qn)=>(!Gn||"sp"===e)&&function(e,t,r=qn,n=!1){if(r){const o=r[e]||(r[e]=[]),a=t.__weh||(t.__weh=(...n)=>{if(r.isUnmounted)return;Mt(),Bn(r);const o=Gr(t,r,e,n);return Hn(),Wt(),o});return n?o.unshift(a):o.push(a),a}}(e,((...e)=>t(...e)),r),yn=gn("bm"),bn=gn("m"),wn=(gn("bu"),gn("u"),gn("bum"),gn("um"));gn("sp"),gn("rtg"),gn("rtc");const xn=Symbol(),zn=e=>e?4&e.vnode.shapeFlag?function(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy((t=Ar(e.exposed),Sr(t)?t:new Proxy(t,qr)),{get:(t,r)=>r in t?t[r]:r in kn?kn[r](e):void 0,has:(e,t)=>t in e||t in kn}));var t}(e)||e.proxy:zn(e.parent):null,kn=st(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>zn(e.parent),$root:e=>zn(e.root),$emit:e=>e.emit,$options:e=>function(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:o,optionsCache:a,config:{optionMergeStrategies:i}}=e.appContext,s=a.get(t);let l;return s?l=s:o.length||r||n?(l={},o.length&&o.forEach((e=>On(l,e,i,!0))),On(l,t,i)):l=t,ht(t)&&a.set(t,l),l}(e),$forceUpdate:e=>e.f||(e.f=()=>an(e.update)),$nextTick:e=>e.n||(e.n=on.bind(e.proxy)),$watch:e=>_n.bind(e)});function On(e,t,r,n=!1){const{mixins:o,extends:a}=t;a&&On(e,a,r,!0),o&&o.forEach((t=>On(e,t,r,!0)));for(const o in t)if(n&&"expose"===o);else{const n=jn[o]||r&&r[o];e[o]=n?n(e[o],t[o]):t[o]}return e}const jn={data:En,props:Nn,emits:Nn,methods:Nn,computed:Nn,beforeCreate:Sn,created:Sn,beforeMount:Sn,mounted:Sn,beforeUpdate:Sn,updated:Sn,beforeDestroy:Sn,beforeUnmount:Sn,destroyed:Sn,unmounted:Sn,activated:Sn,deactivated:Sn,errorCaptured:Sn,serverPrefetch:Sn,components:Nn,directives:Nn,watch:function(e,t){if(!e)return t;if(!t)return e;const r=st(Object.create(null),e);for(const n in t)r[n]=Sn(e[n],t[n]);return r},provide:En,inject:function(e,t){return Nn(In(e),In(t))}};function En(e,t){return t?e?function(){return st(pt(e)?e.call(this,this):e,pt(t)?t.call(this,this):t)}:t:e}function In(e){if(ut(e)){const t={};for(let r=0;r<e.length;r++)t[e[r]]=e[r];return t}return e}function Sn(e,t){return e?[...new Set([].concat(e,t))]:t}function Nn(e,t){return e?st(st(Object.create(null),e),t):t}const Ln=function(e,t){var r;t&&t.pendingBranch?ut(e)?t.effects.push(...e):t.effects.push(e):(ut(r=e)?Zr.push(...r):en&&en.includes(r,r.allowRecurse?tn+1:tn)||Zr.push(r),sn())},Rn=Symbol(void 0),Fn=Symbol(void 0),An=Symbol(void 0);Symbol(void 0);function Tn(e){return!!e&&!0===e.__v_isVNode}const Cn="__vInternal",Pn=({key:e})=>null!=e?e:null,Dn=({ref:e,ref_key:t,ref_for:r})=>null!=e?dt(e)||Mr(e)||pt(e)?{i:fn,r:e,k:t,f:!!r}:e:null;const Mn=function(e,t=null,r=null,n=0,o=null,a=!1){if(e&&e!==xn||(e=An),Tn(e)){const n=Wn(e,t,!0);return r&&$n(n,r),n.patchFlag|=-2,n}if(i=e,pt(i)&&"__vccOpts"in i&&(e=e.__vccOpts),t){t=function(e){return e?Rr(e)||Cn in e?st({},e):e:null}(t);let{class:e,style:r}=t;e&&!dt(e)&&(t.class=rt(e)),ht(r)&&(Rr(r)&&!ut(r)&&(r=st({},r)),t.style=Je(r))}var i;return function(e,t=null,r=null,n=0,o=null,a=(e===Rn?0:1),i=!1,s=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Pn(t),ref:t&&Dn(t),scopeId:null,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:n,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:fn};return s?($n(l,r),128&a&&e.normalize(l)):r&&(l.shapeFlag|=dt(r)?8:16),l}(e,t,r,n,o,dt(e)?1:(e=>e.__isSuspense)(e)?128:(e=>e.__isTeleport)(e)?64:ht(e)?4:pt(e)?2:0,a,!0)};function Wn(e,t,r=!1){const{props:n,ref:o,patchFlag:a,children:i}=e,s=t?function(...e){const t={};for(let r=0;r<e.length;r++){const n=e[r];for(const e in n)if("class"===e)t.class!==n.class&&(t.class=rt([t.class,n.class]));else if("style"===e)t.style=Je([t.style,n.style]);else if(it(e)){const r=t[e],o=n[e];!o||r===o||ut(r)&&r.includes(o)||(t[e]=r?[].concat(r,o):o)}else""!==e&&(t[e]=n[e])}return t}(n||{},t):n;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&Pn(s),ref:t&&t.ref?r&&o?ut(o)?o.concat(Dn(t)):[o,Dn(t)]:Dn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Rn?-1===a?16:16|a:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Wn(e.ssContent),ssFallback:e.ssFallback&&Wn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function Un(e=" ",t=0){return Mn(Fn,null,e,t)}function $n(e,t){let r=0;const{shapeFlag:n}=e;if(null==t)t=null;else if(ut(t))r=16;else if("object"==typeof t){if(65&n){const r=t.default;return void(r&&(r._c&&(r._d=!1),$n(e,r()),r._c&&(r._d=!0)))}{r=32;const e=t._;!e&&!(Cn in t)&&(t._ctx=fn)}}else pt(t)?(t={default:t,_ctx:fn},r=32):(t=String(t),64&n?(r=16,t=[Un(t)]):r=8);e.children=t,e.shapeFlag|=r}Object.create(null),new WeakMap,new WeakMap,new WeakMap;let qn=null;const Vn=()=>qn||fn,Bn=e=>{qn=e,e.scope.on()},Hn=()=>{qn&&qn.scope.off(),qn=null};let Gn=!1;const Yn=(e,t)=>function(e,t,r=!1){let n,o;const a=pt(e);return a?(n=e,o=ot):(n=e.get,o=e.set),new Br(n,o,a||!o,r)}(e,0,Gn);function Xn(e,t,r){const n=arguments.length;return 2===n?ht(t)&&!ut(t)?Tn(t)?Mn(e,null,[t]):Mn(e,t):Mn(e,null,t):(n>3?r=Array.prototype.slice.call(arguments,2):3===n&&Tn(r)&&(r=[r]),Mn(e,t,r))}const Kn=Symbol(""),Jn=()=>pn(Kn);let Qn=7;const Zn=()=>++Qn;Zn(),Zn(),Zn(),Zn(),Zn(),Zn();let eo=15;const to=()=>++eo,ro={UNEXPECTED_RETURN_TYPE:eo,INVALID_ARGUMENT:to(),MUST_BE_CALL_SETUP_TOP:to(),NOT_INSLALLED:to(),NOT_AVAILABLE_IN_LEGACY_MODE:to(),REQUIRED_VALUE:to(),INVALID_VALUE:to(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:to(),NOT_INSLALLED_WITH_PROVIDE:to(),UNEXPECTED_ERROR:to(),NOT_COMPATIBLE_LEGACY_VUE_I18N:to(),BRIDGE_SUPPORT_VUE_2_ONLY:to(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:to(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:to(),__EXTEND_POINT__:to()};function no(e,...t){return te(e,null,void 0)}const oo=C("__transrateVNode"),ao=C("__datetimeParts"),io=C("__numberParts"),so=C("__setPluralRules");C("__intlifyMeta");const lo=C("__injectWithOption");function co(e){if(!J(e))return e;for(const t in e)if(H(e,t))if(t.includes(".")){const r=t.split("."),n=r.length-1;let o=e;for(let e=0;e<n;e++)r[e]in o||(o[r[e]]={}),o=o[r[e]];o[r[n]]=e[t],delete e[t],J(o[r[n]])&&co(o[r[n]])}else J(e[t])&&co(e[t]);return e}function uo(e,t){const{messages:r,__i18n:n,messageResolver:o,flatJson:a}=t,i=ee(r)?r:G(n)?{}:{[e]:{}};if(G(n)&&n.forEach((e=>{if("locale"in e&&"resource"in e){const{locale:t,resource:r}=e;t?(i[t]=i[t]||{},po(r,i[t])):po(r,i)}else X(e)&&po(JSON.parse(e),i)})),null==o&&a)for(const e in i)H(i,e)&&co(i[e]);return i}const fo=e=>!J(e)||G(e);function po(e,t){if(fo(e)||fo(t))throw no(ro.INVALID_VALUE);for(const r in e)H(e,r)&&(fo(e[r])||fo(t[r])?t[r]=e[r]:po(e[r],t[r]))}function mo(e){return e.type}function ho(e,t,r){let n=J(t.messages)?t.messages:{};"__i18nGlobal"in r&&(n=uo(e.locale.value,{messages:n,__i18n:r.__i18nGlobal}));const o=Object.keys(n);if(o.length&&o.forEach((t=>{e.mergeLocaleMessage(t,n[t])})),J(t.datetimeFormats)){const r=Object.keys(t.datetimeFormats);r.length&&r.forEach((r=>{e.mergeDateTimeFormat(r,t.datetimeFormats[r])}))}if(J(t.numberFormats)){const r=Object.keys(t.numberFormats);r.length&&r.forEach((r=>{e.mergeNumberFormat(r,t.numberFormats[r])}))}}function _o(e){return Mn(Fn,null,e,0)}const vo="__INTLIFY_META__";let go=0;function yo(e){return(t,r,n,o)=>e(r,n,Vn()||void 0,o)}function bo(e={},t){const{__root:r}=e,n=void 0===r;let o=!K(e.inheritLocale)||e.inheritLocale;const a=Wr(r&&o?r.locale.value:X(e.locale)?e.locale:be),i=Wr(r&&o?r.fallbackLocale.value:X(e.fallbackLocale)||G(e.fallbackLocale)||ee(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:a.value),s=Wr(uo(a.value,e)),l=Wr(ee(e.datetimeFormats)?e.datetimeFormats:{[a.value]:{}}),c=Wr(ee(e.numberFormats)?e.numberFormats:{[a.value]:{}});let u=r?r.missingWarn:!K(e.missingWarn)&&!D(e.missingWarn)||e.missingWarn,f=r?r.fallbackWarn:!K(e.fallbackWarn)&&!D(e.fallbackWarn)||e.fallbackWarn,p=r?r.fallbackRoot:!K(e.fallbackRoot)||e.fallbackRoot,d=!!e.fallbackFormat,m=Y(e.missing)?e.missing:null,h=Y(e.missing)?yo(e.missing):null,_=Y(e.postTranslation)?e.postTranslation:null,v=r?r.warnHtmlMessage:!K(e.warnHtmlMessage)||e.warnHtmlMessage,g=!!e.escapeParameter;const y=r?r.modifiers:ee(e.modifiers)?e.modifiers:{};let b,w=e.pluralRules||r&&r.pluralRules;b=(()=>{n&&Ee(null);const t={version:"9.2.2",locale:a.value,fallbackLocale:i.value,messages:s.value,modifiers:y,pluralRules:w,missing:null===h?void 0:h,missingWarn:u,fallbackWarn:f,fallbackFormat:d,unresolving:!0,postTranslation:null===_?void 0:_,warnHtmlMessage:v,escapeParameter:g,messageResolver:e.messageResolver,__meta:{framework:"vue"}};t.datetimeFormats=l.value,t.numberFormats=c.value,t.__datetimeFormatters=ee(b)?b.__datetimeFormatters:void 0,t.__numberFormatters=ee(b)?b.__numberFormatters:void 0;const r=function(e={}){const t=X(e.version)?e.version:"9.2.2",r=X(e.locale)?e.locale:be,n=G(e.fallbackLocale)||ee(e.fallbackLocale)||X(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:r,o=ee(e.messages)?e.messages:{[r]:{}},a=ee(e.datetimeFormats)?e.datetimeFormats:{[r]:{}},i=ee(e.numberFormats)?e.numberFormats:{[r]:{}},s=U({},e.modifiers||{},{upper:(e,t)=>"text"===t&&X(e)?e.toUpperCase():"vnode"===t&&J(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>"text"===t&&X(e)?e.toLowerCase():"vnode"===t&&J(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>"text"===t&&X(e)?we(e):"vnode"===t&&J(e)&&"__v_isVNode"in e?we(e.children):e}),l=e.pluralRules||{},c=Y(e.missing)?e.missing:null,u=!K(e.missingWarn)&&!D(e.missingWarn)||e.missingWarn,f=!K(e.fallbackWarn)&&!D(e.fallbackWarn)||e.fallbackWarn,p=!!e.fallbackFormat,d=!!e.unresolving,m=Y(e.postTranslation)?e.postTranslation:null,h=ee(e.processor)?e.processor:null,_=!K(e.warnHtmlMessage)||e.warnHtmlMessage,v=!!e.escapeParameter,g=Y(e.messageCompiler)?e.messageCompiler:void 0,y=Y(e.messageResolver)?e.messageResolver:xe||ie,b=Y(e.localeFallbacker)?e.localeFallbacker:ze||he,w=J(e.fallbackContext)?e.fallbackContext:void 0,x=Y(e.onWarn)?e.onWarn:W,z=e,k=J(z.__datetimeFormatters)?z.__datetimeFormatters:new Map,O=J(z.__numberFormatters)?z.__numberFormatters:new Map,j=J(z.__meta)?z.__meta:{};Ie++;const E={version:t,cid:Ie,locale:r,fallbackLocale:n,messages:o,modifiers:s,pluralRules:l,missing:c,missingWarn:u,fallbackWarn:f,fallbackFormat:p,unresolving:d,postTranslation:m,processor:h,warnHtmlMessage:_,escapeParameter:v,messageCompiler:g,messageResolver:y,localeFallbacker:b,fallbackContext:w,onWarn:x,__meta:j};return E.datetimeFormats=a,E.numberFormats=i,E.__datetimeFormatters=k,E.__numberFormatters=O,__INTLIFY_PROD_DEVTOOLS__&&function(e,t,r){pe&&pe.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:r})}(E,t,j),E}(t);return n&&Ee(r),r})(),Ne(b,a.value,i.value);const x=Yn({get:()=>a.value,set:e=>{a.value=e,b.locale=a.value}}),z=Yn({get:()=>i.value,set:e=>{i.value=e,b.fallbackLocale=i.value,Ne(b,a.value,e)}}),k=Yn((()=>s.value)),O=Yn((()=>l.value)),j=Yn((()=>c.value)),E=(e,t,o,u,f,d)=>{let m;if(a.value,i.value,s.value,l.value,c.value,__INTLIFY_PROD_DEVTOOLS__)try{Oe((()=>{const e=Vn();let t=null;return e&&(t=mo(e)[vo])?{[vo]:t}:null})()),n||(b.fallbackContext=r?je:void 0),m=e(b)}finally{Oe(null),n||(b.fallbackContext=void 0)}else m=e(b);if(P(m)&&-1===m){const[e,n]=t();return r&&p?u(r):f(e)}if(d(m))return m;throw no(ro.UNEXPECTED_RETURN_TYPE)};function I(...e){return E((t=>Reflect.apply(Pe,null,[t,...e])),(()=>We(...e)),0,(t=>Reflect.apply(t.t,t,[...e])),(e=>e),(e=>X(e)))}const S={normalize:function(e){return e.map((e=>X(e)||P(e)||K(e)?_o(String(e)):e))},interpolate:e=>e,type:"vnode"};function N(e){return s.value[e]||{}}go++,r&&A&&(mn(r.locale,(e=>{o&&(a.value=e,b.locale=e,Ne(b,a.value,i.value))})),mn(r.fallbackLocale,(e=>{o&&(i.value=e,b.fallbackLocale=e,Ne(b,a.value,i.value))})));const L={id:go,locale:x,fallbackLocale:z,get inheritLocale(){return o},set inheritLocale(e){o=e,e&&r&&(a.value=r.locale.value,i.value=r.fallbackLocale.value,Ne(b,a.value,i.value))},get availableLocales(){return Object.keys(s.value).sort()},messages:k,get modifiers(){return y},get pluralRules(){return w||{}},get isGlobal(){return n},get missingWarn(){return u},set missingWarn(e){u=e,b.missingWarn=u},get fallbackWarn(){return f},set fallbackWarn(e){f=e,b.fallbackWarn=f},get fallbackRoot(){return p},set fallbackRoot(e){p=e},get fallbackFormat(){return d},set fallbackFormat(e){d=e,b.fallbackFormat=d},get warnHtmlMessage(){return v},set warnHtmlMessage(e){v=e,b.warnHtmlMessage=e},get escapeParameter(){return g},set escapeParameter(e){g=e,b.escapeParameter=e},t:I,getLocaleMessage:N,setLocaleMessage:function(e,t){s.value[e]=t,b.messages=s.value},mergeLocaleMessage:function(e,t){s.value[e]=s.value[e]||{},po(t,s.value[e]),b.messages=s.value},getPostTranslationHandler:function(){return Y(_)?_:null},setPostTranslationHandler:function(e){_=e,b.postTranslation=e},getMissingHandler:function(){return m},setMissingHandler:function(e){null!==e&&(h=yo(e)),m=e,b.missing=h},[so]:function(e){w=e,b.pluralRules=w}};return L.datetimeFormats=O,L.numberFormats=j,L.rt=function(...e){const[t,r,n]=e;if(n&&!J(n))throw no(ro.INVALID_ARGUMENT);return I(t,r,U({resolvedMessage:!0},n||{}))},L.te=function(e,t){const r=N(X(t)?t:a.value);return null!==b.messageResolver(r,e)},L.tm=function(e){const t=function(e){let t=null;const r=_e(b,i.value,a.value);for(let n=0;n<r.length;n++){const o=s.value[r[n]]||{},a=b.messageResolver(o,e);if(null!=a){t=a;break}}return t}(e);return null!=t?t:r&&r.tm(e)||{}},L.d=function(...e){return E((t=>Reflect.apply($e,null,[t,...e])),(()=>Ve(...e)),0,(t=>Reflect.apply(t.d,t,[...e])),(()=>""),(e=>X(e)))},L.n=function(...e){return E((t=>Reflect.apply(He,null,[t,...e])),(()=>Ye(...e)),0,(t=>Reflect.apply(t.n,t,[...e])),(()=>""),(e=>X(e)))},L.getDateTimeFormat=function(e){return l.value[e]||{}},L.setDateTimeFormat=function(e,t){l.value[e]=t,b.datetimeFormats=l.value,Be(b,e,t)},L.mergeDateTimeFormat=function(e,t){l.value[e]=U(l.value[e]||{},t),b.datetimeFormats=l.value,Be(b,e,t)},L.getNumberFormat=function(e){return c.value[e]||{}},L.setNumberFormat=function(e,t){c.value[e]=t,b.numberFormats=c.value,Xe(b,e,t)},L.mergeNumberFormat=function(e,t){c.value[e]=U(c.value[e]||{},t),b.numberFormats=c.value,Xe(b,e,t)},L[lo]=e.__injectWithOption,L[oo]=function(...e){return E((t=>{let r;const n=t;try{n.processor=S,r=Reflect.apply(Pe,null,[n,...e])}finally{n.processor=null}return r}),(()=>We(...e)),0,(t=>t[oo](...e)),(e=>[_o(e)]),(e=>G(e)))},L[ao]=function(...e){return E((t=>Reflect.apply($e,null,[t,...e])),(()=>Ve(...e)),0,(t=>t[ao](...e)),(()=>[]),(e=>X(e)||G(e)))},L[io]=function(...e){return E((t=>Reflect.apply(He,null,[t,...e])),(()=>Ye(...e)),0,(t=>t[io](...e)),(()=>[]),(e=>X(e)||G(e)))},L}function wo(e={},t){{const t=bo(function(e){const t=X(e.locale)?e.locale:be,r=X(e.fallbackLocale)||G(e.fallbackLocale)||ee(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:t,n=Y(e.missing)?e.missing:void 0,o=!K(e.silentTranslationWarn)&&!D(e.silentTranslationWarn)||!e.silentTranslationWarn,a=!K(e.silentFallbackWarn)&&!D(e.silentFallbackWarn)||!e.silentFallbackWarn,i=!K(e.fallbackRoot)||e.fallbackRoot,s=!!e.formatFallbackMessages,l=ee(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,u=Y(e.postTranslation)?e.postTranslation:void 0,f=!X(e.warnHtmlInMessage)||"off"!==e.warnHtmlInMessage,p=!!e.escapeParameterHtml,d=!K(e.sync)||e.sync;let m=e.messages;if(ee(e.sharedMessages)){const t=e.sharedMessages;m=Object.keys(t).reduce(((e,r)=>{const n=e[r]||(e[r]={});return U(n,t[r]),e}),m||{})}const{__i18n:h,__root:_,__injectWithOption:v}=e,g=e.datetimeFormats,y=e.numberFormats;return{locale:t,fallbackLocale:r,messages:m,flatJson:e.flatJson,datetimeFormats:g,numberFormats:y,missing:n,missingWarn:o,fallbackWarn:a,fallbackRoot:i,fallbackFormat:s,modifiers:l,pluralRules:c,postTranslation:u,warnHtmlMessage:f,escapeParameter:p,messageResolver:e.messageResolver,inheritLocale:d,__i18n:h,__root:_,__injectWithOption:v}}(e)),r={id:t.id,get locale(){return t.locale.value},set locale(e){t.locale.value=e},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(e){t.fallbackLocale.value=e},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get formatter(){return{interpolate:()=>[]}},set formatter(e){},get missing(){return t.getMissingHandler()},set missing(e){t.setMissingHandler(e)},get silentTranslationWarn(){return K(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(e){t.missingWarn=K(e)?!e:e},get silentFallbackWarn(){return K(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(e){t.fallbackWarn=K(e)?!e:e},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(e){t.fallbackFormat=e},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(e){t.setPostTranslationHandler(e)},get sync(){return t.inheritLocale},set sync(e){t.inheritLocale=e},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(e){t.warnHtmlMessage="off"!==e},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(e){t.escapeParameter=e},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(e){},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...e){const[r,n,o]=e,a={};let i=null,s=null;if(!X(r))throw no(ro.INVALID_ARGUMENT);const l=r;return X(n)?a.locale=n:G(n)?i=n:ee(n)&&(s=n),G(o)?i=o:ee(o)&&(s=o),Reflect.apply(t.t,t,[l,i||s||{},a])},rt:(...e)=>Reflect.apply(t.rt,t,[...e]),tc(...e){const[r,n,o]=e,a={plural:1};let i=null,s=null;if(!X(r))throw no(ro.INVALID_ARGUMENT);const l=r;return X(n)?a.locale=n:P(n)?a.plural=n:G(n)?i=n:ee(n)&&(s=n),X(o)?a.locale=o:G(o)?i=o:ee(o)&&(s=o),Reflect.apply(t.t,t,[l,i||s||{},a])},te:(e,r)=>t.te(e,r),tm:e=>t.tm(e),getLocaleMessage:e=>t.getLocaleMessage(e),setLocaleMessage(e,r){t.setLocaleMessage(e,r)},mergeLocaleMessage(e,r){t.mergeLocaleMessage(e,r)},d:(...e)=>Reflect.apply(t.d,t,[...e]),getDateTimeFormat:e=>t.getDateTimeFormat(e),setDateTimeFormat(e,r){t.setDateTimeFormat(e,r)},mergeDateTimeFormat(e,r){t.mergeDateTimeFormat(e,r)},n:(...e)=>Reflect.apply(t.n,t,[...e]),getNumberFormat:e=>t.getNumberFormat(e),setNumberFormat(e,r){t.setNumberFormat(e,r)},mergeNumberFormat(e,r){t.mergeNumberFormat(e,r)},getChoiceIndex:(e,t)=>-1,__onComponentInstanceCreated(t){const{componentInstanceCreatedListener:n}=e;n&&n(t,r)}};return r}}const xo={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>"parent"===e||"global"===e,default:"parent"},i18n:{type:Object}};function zo(e){return Rn}const ko={name:"i18n-t",props:U({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>P(e)||!isNaN(e)}},xo),setup(e,t){const{slots:r,attrs:n}=t,o=e.i18n||Ro({useScope:e.scope,__useComponent:!0});return()=>{const a=Object.keys(r).filter((e=>"_"!==e)),i={};e.locale&&(i.locale=e.locale),void 0!==e.plural&&(i.plural=X(e.plural)?+e.plural:e.plural);const s=function({slots:e},t){return 1===t.length&&"default"===t[0]?(e.default?e.default():[]).reduce(((e,t)=>[...e,...G(t.children)?t.children:[t]]),[]):t.reduce(((t,r)=>{const n=e[r];return n&&(t[r]=n()),t}),{})}(t,a),l=o[oo](e.keypath,s,i),c=U({},n);return Xn(X(e.tag)||J(e.tag)?e.tag:zo(),c,l)}}};function Oo(e,t,r,n){const{slots:o,attrs:a}=t;return()=>{const t={part:!0};let i={};e.locale&&(t.locale=e.locale),X(e.format)?t.key=e.format:J(e.format)&&(X(e.format.key)&&(t.key=e.format.key),i=Object.keys(e.format).reduce(((t,n)=>r.includes(n)?U({},t,{[n]:e.format[n]}):t),{}));const s=n(e.value,t,i);let l=[t.key];G(s)?l=s.map(((e,t)=>{const r=o[e.type],n=r?r({[e.type]:e.value,index:t,parts:s}):[e.value];var a;return G(a=n)&&!X(a[0])&&(n[0].key=`${e.type}-${t}`),n})):X(s)&&(l=[s]);const c=U({},a);return Xn(X(e.tag)||J(e.tag)?e.tag:zo(),c,l)}}const jo={name:"i18n-n",props:U({value:{type:Number,required:!0},format:{type:[String,Object]}},xo),setup(e,t){const r=e.i18n||Ro({useScope:"parent",__useComponent:!0});return Oo(e,t,Ge,((...e)=>r[io](...e)))}},Eo={name:"i18n-d",props:U({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},xo),setup(e,t){const r=e.i18n||Ro({useScope:"parent",__useComponent:!0});return Oo(e,t,qe,((...e)=>r[ao](...e)))}};function Io(e){if(X(e))return{path:e};if(ee(e)){if(!("path"in e))throw no(ro.REQUIRED_VALUE);return e}throw no(ro.INVALID_VALUE)}function So(e){const{path:t,locale:r,args:n,choice:o,plural:a}=e,i={},s=n||{};return X(r)&&(i.locale=r),P(o)&&(i.plural=o),P(a)&&(i.plural=a),[t,s,i]}function No(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[so](t.pluralizationRules||e.pluralizationRules);const r=uo(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(r).forEach((t=>e.mergeLocaleMessage(t,r[t]))),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach((r=>e.mergeDateTimeFormat(r,t.datetimeFormats[r]))),t.numberFormats&&Object.keys(t.numberFormats).forEach((r=>e.mergeNumberFormat(r,t.numberFormats[r]))),e}const Lo=C("global-vue-i18n");function Ro(e={}){const t=Vn();if(null==t)throw no(ro.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&null!=t.appContext.app&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw no(ro.NOT_INSLALLED);const r=function(e){{const t=pn(e.isCE?Lo:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw no(e.isCE?ro.NOT_INSLALLED_WITH_PROVIDE:ro.UNEXPECTED_ERROR);return t}}(t),n=function(e){return"composition"===e.mode?e.global:e.global.__composer}(r),o=mo(t),a=function(e,t){return M(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}(e,o);if(__VUE_I18N_LEGACY_API__&&"legacy"===r.mode&&!e.__useComponent){if(!r.allowComposition)throw no(ro.NOT_AVAILABLE_IN_LEGACY_MODE);return function(e,t,r,n={}){const o="local"===t,a=(null,Ur(null,!0));if(o&&e.proxy&&!e.proxy.$options.i18n&&!e.proxy.$options.__i18n)throw no(ro.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const i=!K(n.inheritLocale)||n.inheritLocale,s=Wr(o&&i?r.locale.value:X(n.locale)?n.locale:be),l=Wr(o&&i?r.fallbackLocale.value:X(n.fallbackLocale)||G(n.fallbackLocale)||ee(n.fallbackLocale)||!1===n.fallbackLocale?n.fallbackLocale:s.value),c=Wr(uo(s.value,n)),u=Wr(ee(n.datetimeFormats)?n.datetimeFormats:{[s.value]:{}}),f=Wr(ee(n.numberFormats)?n.numberFormats:{[s.value]:{}}),p=o?r.missingWarn:!K(n.missingWarn)&&!D(n.missingWarn)||n.missingWarn,d=o?r.fallbackWarn:!K(n.fallbackWarn)&&!D(n.fallbackWarn)||n.fallbackWarn,m=o?r.fallbackRoot:!K(n.fallbackRoot)||n.fallbackRoot,h=!!n.fallbackFormat,_=Y(n.missing)?n.missing:null,v=Y(n.postTranslation)?n.postTranslation:null,g=o?r.warnHtmlMessage:!K(n.warnHtmlMessage)||n.warnHtmlMessage,y=!!n.escapeParameter,b=o?r.modifiers:ee(n.modifiers)?n.modifiers:{},w=n.pluralRules||o&&r.pluralRules;function x(e){return s.value,l.value,c.value,u.value,f.value,e()}const z={get id(){return a.value?a.value.id:-1},locale:Yn({get:()=>a.value?a.value.locale.value:s.value,set:e=>{a.value&&(a.value.locale.value=e),s.value=e}}),fallbackLocale:Yn({get:()=>a.value?a.value.fallbackLocale.value:l.value,set:e=>{a.value&&(a.value.fallbackLocale.value=e),l.value=e}}),messages:Yn((()=>a.value?a.value.messages.value:c.value)),datetimeFormats:Yn((()=>u.value)),numberFormats:Yn((()=>f.value)),get inheritLocale(){return a.value?a.value.inheritLocale:i},set inheritLocale(e){a.value&&(a.value.inheritLocale=e)},get availableLocales(){return a.value?a.value.availableLocales:Object.keys(c.value)},get modifiers(){return a.value?a.value.modifiers:b},get pluralRules(){return a.value?a.value.pluralRules:w},get isGlobal(){return!!a.value&&a.value.isGlobal},get missingWarn(){return a.value?a.value.missingWarn:p},set missingWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackWarn(){return a.value?a.value.fallbackWarn:d},set fallbackWarn(e){a.value&&(a.value.missingWarn=e)},get fallbackRoot(){return a.value?a.value.fallbackRoot:m},set fallbackRoot(e){a.value&&(a.value.fallbackRoot=e)},get fallbackFormat(){return a.value?a.value.fallbackFormat:h},set fallbackFormat(e){a.value&&(a.value.fallbackFormat=e)},get warnHtmlMessage(){return a.value?a.value.warnHtmlMessage:g},set warnHtmlMessage(e){a.value&&(a.value.warnHtmlMessage=e)},get escapeParameter(){return a.value?a.value.escapeParameter:y},set escapeParameter(e){a.value&&(a.value.escapeParameter=e)},t:function(...e){return a.value?x((()=>Reflect.apply(a.value.t,null,[...e]))):x((()=>""))},getPostTranslationHandler:function(){return a.value?a.value.getPostTranslationHandler():v},setPostTranslationHandler:function(e){a.value&&a.value.setPostTranslationHandler(e)},getMissingHandler:function(){return a.value?a.value.getMissingHandler():_},setMissingHandler:function(e){a.value&&a.value.setMissingHandler(e)},rt:function(...e){return a.value?Reflect.apply(a.value.rt,null,[...e]):""},d:function(...e){return a.value?x((()=>Reflect.apply(a.value.d,null,[...e]))):x((()=>""))},n:function(...e){return a.value?x((()=>Reflect.apply(a.value.n,null,[...e]))):x((()=>""))},tm:function(e){return a.value?a.value.tm(e):{}},te:function(e,t){return!!a.value&&a.value.te(e,t)},getLocaleMessage:function(e){return a.value?a.value.getLocaleMessage(e):{}},setLocaleMessage:function(e,t){a.value&&(a.value.setLocaleMessage(e,t),c.value[e]=t)},mergeLocaleMessage:function(e,t){a.value&&a.value.mergeLocaleMessage(e,t)},getDateTimeFormat:function(e){return a.value?a.value.getDateTimeFormat(e):{}},setDateTimeFormat:function(e,t){a.value&&(a.value.setDateTimeFormat(e,t),u.value[e]=t)},mergeDateTimeFormat:function(e,t){a.value&&a.value.mergeDateTimeFormat(e,t)},getNumberFormat:function(e){return a.value?a.value.getNumberFormat(e):{}},setNumberFormat:function(e,t){a.value&&(a.value.setNumberFormat(e,t),f.value[e]=t)},mergeNumberFormat:function(e,t){a.value&&a.value.mergeNumberFormat(e,t)}};return yn((()=>{if(null==e.proxy||null==e.proxy.$i18n)throw no(ro.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const r=a.value=e.proxy.$i18n.__composer;"global"===t?(s.value=r.locale.value,l.value=r.fallbackLocale.value,c.value=r.messages.value,u.value=r.datetimeFormats.value,f.value=r.numberFormats.value):o&&function(e){e.locale.value=s.value,e.fallbackLocale.value=l.value,Object.keys(c.value).forEach((t=>{e.mergeLocaleMessage(t,c.value[t])})),Object.keys(u.value).forEach((t=>{e.mergeDateTimeFormat(t,u.value[t])})),Object.keys(f.value).forEach((t=>{e.mergeNumberFormat(t,f.value[t])})),e.escapeParameter=y,e.fallbackFormat=h,e.fallbackRoot=m,e.fallbackWarn=d,e.missingWarn=p,e.warnHtmlMessage=g}(r)})),z}(t,a,n,e)}if("global"===a)return ho(n,e,o),n;if("parent"===a){let o=function(e,t,r=!1){let n=null;const o=t.root;let a=t.parent;for(;null!=a;){const t=e;if("composition"===e.mode)n=t.__getInstance(a);else if(__VUE_I18N_LEGACY_API__){const e=t.__getInstance(a);null!=e&&(n=e.__composer,r&&n&&!n[lo]&&(n=null))}if(null!=n)break;if(o===a)break;a=a.parent}return n}(r,t,e.__useComponent);return null==o&&(o=n),o}const i=r;let s=i.__getInstance(t);if(null==s){const r=U({},e);"__i18n"in o&&(r.__i18n=o.__i18n),n&&(r.__root=n),s=bo(r),function(e,t,r){bn((()=>{}),t),wn((()=>{e.__deleteInstance(t)}),t)}(i,t),i.__setInstance(t,s)}return s}const Fo=["locale","fallbackLocale","availableLocales"],Ao=["t","rt","d","n","tm"];var To;if(xe=function(e,t){if(!J(e))return null;let r=ae.get(t);if(r||(r=function(e){const t=[];let r,n,o,a,i,s,l,c=-1,u=0,f=0;const p=[];function d(){const t=e[c+1];if(5===u&&"'"===t||6===u&&'"'===t)return c++,o="\\"+t,p[0](),!0}for(p[0]=()=>{void 0===n?n=o:n+=o},p[1]=()=>{void 0!==n&&(t.push(n),n=void 0)},p[2]=()=>{p[0](),f++},p[3]=()=>{if(f>0)f--,u=4,p[0]();else{if(f=0,void 0===n)return!1;if(n=function(e){const t=e.trim();return("0"!==e.charAt(0)||!isNaN(parseInt(e)))&&(r=t,ne.test(r)?function(e){const t=e.charCodeAt(0);return t!==e.charCodeAt(e.length-1)||34!==t&&39!==t?e:e.slice(1,-1)}(t):"*"+t);var r}(n),!1===n)return!1;p[1]()}};null!==u;)if(c++,r=e[c],"\\"!==r||!d()){if(a=oe(r),l=re[u],i=l[a]||l.l||8,8===i)return;if(u=i[0],void 0!==i[1]&&(s=p[i[1]],s&&(o=r,!1===s())))return;if(7===u)return t}}(t),r&&ae.set(t,r)),!r)return null;const n=r.length;let o=e,a=0;for(;a<n;){const e=o[r[a]];if(void 0===e)return null;o=e,a++}return o},ze=_e,function(){let e=!1;"boolean"!=typeof __VUE_I18N_FULL_INSTALL__&&(e=!0,q().__VUE_I18N_FULL_INSTALL__=!0),"boolean"!=typeof __VUE_I18N_LEGACY_API__&&(e=!0,q().__VUE_I18N_LEGACY_API__=!0),"boolean"!=typeof __INTLIFY_PROD_DEVTOOLS__&&(q().__INTLIFY_PROD_DEVTOOLS__=!1)}(),__INTLIFY_PROD_DEVTOOLS__){const e=q();e.__INTLIFY__=!0,To=e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__,pe=To}var Co=function(e={},t){const r=__VUE_I18N_LEGACY_API__&&K(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,n=!K(e.globalInjection)||e.globalInjection,o=!__VUE_I18N_LEGACY_API__||!r||!!e.allowComposition,a=new Map,[i,s]=function(e,t,r){const n=new Ot(undefined);{const r=__VUE_I18N_LEGACY_API__&&t?n.run((()=>wo(e))):n.run((()=>bo(e)));if(null==r)throw no(ro.UNEXPECTED_ERROR);return[n,r]}}(e,r),l=C("");{const e={get mode(){return __VUE_I18N_LEGACY_API__&&r?"legacy":"composition"},get allowComposition(){return o},async install(t,...o){t.__VUE_I18N_SYMBOL__=l,t.provide(t.__VUE_I18N_SYMBOL__,e),!r&&n&&function(e,t){const r=Object.create(null);Fo.forEach((e=>{const n=Object.getOwnPropertyDescriptor(t,e);if(!n)throw no(ro.UNEXPECTED_ERROR);const o=Mr(n.value)?{get:()=>n.value.value,set(e){n.value.value=e}}:{get:()=>n.get&&n.get()};Object.defineProperty(r,e,o)})),e.config.globalProperties.$i18n=r,Ao.forEach((r=>{const n=Object.getOwnPropertyDescriptor(t,r);if(!n||!n.value)throw no(ro.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${r}`,n)}))}(t,e.global),__VUE_I18N_FULL_INSTALL__&&function(e,t,...r){const n=ee(r[0])?r[0]:{},o=!!n.useI18nComponentName;(!K(n.globalInstall)||n.globalInstall)&&(e.component(o?"i18n":ko.name,ko),e.component(jo.name,jo),e.component(Eo.name,Eo)),e.directive("t",function(e){const t=t=>{const{instance:r,modifiers:n,value:o}=t;if(!r||!r.$)throw no(ro.UNEXPECTED_ERROR);const a=function(e,t){const r=e;if("composition"===e.mode)return r.__getInstance(t)||e.global;{const n=r.__getInstance(t);return null!=n?n.__composer:e.global.__composer}}(e,r.$),i=Io(o);return[Reflect.apply(a.t,a,[...So(i)]),a]};return{created:(r,n)=>{const[o,a]=t(n);A&&e.global===a&&(r.__i18nWatcher=mn(a.locale,(()=>{n.instance&&n.instance.$forceUpdate()}))),r.__composer=a,r.textContent=o},unmounted:e=>{A&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},beforeUpdate:(e,{value:t})=>{if(e.__composer){const r=e.__composer,n=Io(t);e.textContent=Reflect.apply(r.t,r,[...So(n)])}},getSSRProps:e=>{const[r]=t(e);return{textContent:r}}}}(t))}(t,e,...o),__VUE_I18N_LEGACY_API__&&r&&t.mixin(function(e,t,r){return{beforeCreate(){const n=Vn();if(!n)throw no(ro.UNEXPECTED_ERROR);const o=this.$options;if(o.i18n){const r=o.i18n;o.__i18n&&(r.__i18n=o.__i18n),r.__root=t,this===this.$root?this.$i18n=No(e,r):(r.__injectWithOption=!0,this.$i18n=wo(r))}else o.__i18n?this===this.$root?this.$i18n=No(e,o):this.$i18n=wo({__i18n:o.__i18n,__injectWithOption:!0,__root:t}):this.$i18n=e;o.__i18nGlobal&&ho(t,o,o),e.__onComponentInstanceCreated(this.$i18n),r.__setInstance(n,this.$i18n),this.$t=(...e)=>this.$i18n.t(...e),this.$rt=(...e)=>this.$i18n.rt(...e),this.$tc=(...e)=>this.$i18n.tc(...e),this.$te=(e,t)=>this.$i18n.te(e,t),this.$d=(...e)=>this.$i18n.d(...e),this.$n=(...e)=>this.$i18n.n(...e),this.$tm=e=>this.$i18n.tm(e)},mounted(){},unmounted(){const e=Vn();if(!e)throw no(ro.UNEXPECTED_ERROR);delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,r.__deleteInstance(e),delete this.$i18n}}}(s,s.__composer,e));const a=t.unmount;t.unmount=()=>{e.dispose(),a()}},get global(){return s},dispose(){i.stop()},__instances:a,__getInstance:function(e){return a.get(e)||null},__setInstance:function(e,t){a.set(e,t)},__deleteInstance:function(e){a.delete(e)}};return e}}({locale:"en",fallbackLocale:"en",messages:{ar:r(5464),ca:r(3708),cs:r(122),de:r(414),eo:r(5775),es:r(8438),et:r(9997),eu:r(9975),fi:r(9923),fr:r(8375),ga:r(1746),he:r(9369),hu:r(377),it:r(6710),ja:r(333),ja_easy:r(6534),ko:r(7379),nb:r(8103),nl:r(728),oc:r(3932),pl:r(7028),pt:r(789),ro:r(5032),ru:r(3460),sk:r(6139),te:r(5751),zh:r(4389),en:r(2551)}});function Po(){return clients.matchAll({includeUncontrolled:!0}).then((function(e){return e.filter((function(e){return"window"===e.type}))}))}var Do=function(){var e=t(o().mark((function e(){var t,r;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i().getItem("vuex-lz");case 2:t=e.sent,r=t.config.interfaceLanguage||"en",Co.locale=r;case 5:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Mo=function(){var e=t(o().mark((function e(t){var r,n,a,s,l,c,u,f;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i().getItem("vuex-lz").then((function(e){return e.config.webPushNotifications}));case 2:return r=e.sent,e.next=5,Po();case 5:return n=e.sent,e.next=8,Do();case 8:if(!r||0!==n.length){e.next=20;break}return a=t.data.json(),s="".concat(self.registration.scope,"api/v1/notifications/").concat(a.notification_id),e.next=13,fetch(s,{headers:{Authorization:"Bearer "+a.access_token}});case 13:return l=e.sent,e.next=16,l.json();case 16:c=e.sent,u=R(c),f=h(u,Co),self.registration.showNotification(f.title,f);case 20:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();self.addEventListener("push",function(){var e=t(o().mark((function e(t){return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.data&&t.waitUntil(Mo(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),self.addEventListener("notificationclick",(function(e){e.notification.close(),e.waitUntil(Po().then((function(e){for(var t=0;t<e.length;t++){var r=e[t];if("/"===r.url&&"focus"in r)return r.focus()}if(clients.openWindow)return clients.openWindow("/")})))}))})()})(); //# sourceMappingURL=sw-pleroma.js.map \ No newline at end of file diff --git a/priv/static/sw-pleroma.js.map b/priv/static/sw-pleroma.js.map @@ -1 +1 @@ -{"version":3,"file":"sw-pleroma.js","mappings":"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BACApE,WACA4hB,SALazgD,EAAQygD,SAMrB/Z,kBACAiB,gBACA7F,UACAD,cACAuB,eACAof,eACA3f,iBACAqB,YACAC,YAAayhB,EACb9iB,kBACAkD,kBACA7C,kBACAiB,gBAAiBpkC,EAAQokC,gBACzB2d,gBACAvB,SACAoB,SACA2D,qBAER,CASwCU,CAAuBjmD,IAEjDkmD,EAAU,CAEZ5zB,GAAI8xB,EAAS9xB,GAET0O,aACA,OAAOojB,EAASpjB,OAAOvpC,KAC3B,EACIupC,WAAOpQ,GACPwzB,EAASpjB,OAAOvpC,MAAQm5B,CAC5B,EAEIqS,qBACA,OAAOmhB,EAASnhB,eAAexrC,KACnC,EACIwrC,mBAAerS,GACfwzB,EAASnhB,eAAexrC,MAAQm5B,CACpC,EAEIiO,eACA,OAAOulB,EAASvlB,SAASpnC,KAC7B,EAEIivC,sBACA,OAAO0d,EAAS1d,gBAAgBjvC,KACpC,EAEIkwC,oBACA,OAAOyc,EAASzc,cAAclwC,KAClC,EAEI4sD,uBACA,OAAOD,EAASC,gBACpB,EAEIrd,gBAGA,MAAO,CACHx1C,YAAW,IACA,GAGnB,EACIw1C,cAAUpW,GAEd,EAEIkR,cACA,OAAOsiB,EAASM,mBACpB,EACI5iB,YAAQyU,GACR6N,EAASO,kBAAkBpO,EAC/B,EAEIkP,4BACA,OAAO,EAAUrB,EAASviB,cACnBuiB,EAASviB,YACVuiB,EAASviB,WACnB,EACI4jB,0BAAsB70B,GACtBwzB,EAASviB,YAAc,EAAUjR,IAAQA,EAAMA,CACnD,EAEI80B,yBACA,OAAO,EAAUtB,EAAShhB,eACnBghB,EAAShhB,aACVghB,EAAShhB,YACnB,EACIsiB,uBAAmB90B,GACnBwzB,EAAShhB,aAAe,EAAUxS,IAAQA,EAAMA,CACpD,EAEIsT,gBACA,OAAOkgB,EAASlgB,SACpB,EAEIyhB,6BACA,OAAOvB,EAASvhB,cACpB,EACI8iB,2BAAuB/0B,GACvBwzB,EAASvhB,eAAiBjS,CAC9B,EAEIkS,sBACA,OAAOshB,EAASI,2BACpB,EACI1hB,oBAAgByT,GAChB6N,EAASK,0BAA0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","sources":["webpack://pleroma_fe/./src/i18n/ar.json","webpack://pleroma_fe/./src/i18n/ca.json","webpack://pleroma_fe/./src/i18n/cs.json","webpack://pleroma_fe/./src/i18n/de.json","webpack://pleroma_fe/./src/i18n/en.json","webpack://pleroma_fe/./src/i18n/eo.json","webpack://pleroma_fe/./src/i18n/es.json","webpack://pleroma_fe/./src/i18n/et.json","webpack://pleroma_fe/./src/i18n/eu.json","webpack://pleroma_fe/./src/i18n/fi.json","webpack://pleroma_fe/./src/i18n/fr.json","webpack://pleroma_fe/./src/i18n/ga.json","webpack://pleroma_fe/./src/i18n/he.json","webpack://pleroma_fe/./src/i18n/hu.json","webpack://pleroma_fe/./src/i18n/it.json","webpack://pleroma_fe/./src/i18n/ja_easy.json","webpack://pleroma_fe/./src/i18n/ja_pedantic.json","webpack://pleroma_fe/./src/i18n/ko.json","webpack://pleroma_fe/./src/i18n/nb.json","webpack://pleroma_fe/./src/i18n/nl.json","webpack://pleroma_fe/./src/i18n/oc.json","webpack://pleroma_fe/./src/i18n/pl.json","webpack://pleroma_fe/./src/i18n/pt.json","webpack://pleroma_fe/./src/i18n/ro.json","webpack://pleroma_fe/./src/i18n/ru.json","webpack://pleroma_fe/./src/i18n/sk.json","webpack://pleroma_fe/./src/i18n/te.json","webpack://pleroma_fe/./src/i18n/zh.json","webpack://pleroma_fe/./node_modules/escape-html/index.js","webpack://pleroma_fe/./node_modules/localforage/dist/localforage.js","webpack://pleroma_fe/./node_modules/lodash/_DataView.js","webpack://pleroma_fe/./node_modules/lodash/_Hash.js","webpack://pleroma_fe/./node_modules/lodash/_ListCache.js","webpack://pleroma_fe/./node_modules/lodash/_Map.js","webpack://pleroma_fe/./node_modules/lodash/_MapCache.js","webpack://pleroma_fe/./node_modules/lodash/_Promise.js","webpack://pleroma_fe/./node_modules/lodash/_Set.js","webpack://pleroma_fe/./node_modules/lodash/_SetCache.js","webpack://pleroma_fe/./node_modules/lodash/_Stack.js","webpack://pleroma_fe/./node_modules/lodash/_Symbol.js","webpack://pleroma_fe/./node_modules/lodash/_Uint8Array.js","webpack://pleroma_fe/./node_modules/lodash/_WeakMap.js","webpack://pleroma_fe/./node_modules/lodash/_apply.js","webpack://pleroma_fe/./node_modules/lodash/_arrayFilter.js","webpack://pleroma_fe/./node_modules/lodash/_arrayLikeKeys.js","webpack://pleroma_fe/./node_modules/lodash/_arrayMap.js","webpack://pleroma_fe/./node_modules/lodash/_arrayPush.js","webpack://pleroma_fe/./node_modules/lodash/_arraySome.js","webpack://pleroma_fe/./node_modules/lodash/_assocIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_baseEach.js","webpack://pleroma_fe/./node_modules/lodash/_baseFilter.js","webpack://pleroma_fe/./node_modules/lodash/_baseFindIndex.js","webpack://pleroma_fe/./node_modules/lodash/_baseFlatten.js","webpack://pleroma_fe/./node_modules/lodash/_baseFor.js","webpack://pleroma_fe/./node_modules/lodash/_baseForOwn.js","webpack://pleroma_fe/./node_modules/lodash/_baseGet.js","webpack://pleroma_fe/./node_modules/lodash/_baseGetAllKeys.js","webpack://pleroma_fe/./node_modules/lodash/_baseGetTag.js","webpack://pleroma_fe/./node_modules/lodash/_baseHasIn.js","webpack://pleroma_fe/./node_modules/lodash/_baseIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsArguments.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsEqual.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsEqualDeep.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsMatch.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsNaN.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsNative.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/_baseIteratee.js","webpack://pleroma_fe/./node_modules/lodash/_baseKeys.js","webpack://pleroma_fe/./node_modules/lodash/_baseMap.js","webpack://pleroma_fe/./node_modules/lodash/_baseMatches.js","webpack://pleroma_fe/./node_modules/lodash/_baseMatchesProperty.js","webpack://pleroma_fe/./node_modules/lodash/_baseOrderBy.js","webpack://pleroma_fe/./node_modules/lodash/_baseProperty.js","webpack://pleroma_fe/./node_modules/lodash/_basePropertyDeep.js","webpack://pleroma_fe/./node_modules/lodash/_baseRest.js","webpack://pleroma_fe/./node_modules/lodash/_baseSetToString.js","webpack://pleroma_fe/./node_modules/lodash/_baseSortBy.js","webpack://pleroma_fe/./node_modules/lodash/_baseTimes.js","webpack://pleroma_fe/./node_modules/lodash/_baseToString.js","webpack://pleroma_fe/./node_modules/lodash/_baseTrim.js","webpack://pleroma_fe/./node_modules/lodash/_baseUnary.js","webpack://pleroma_fe/./node_modules/lodash/_baseValues.js","webpack://pleroma_fe/./node_modules/lodash/_cacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_castPath.js","webpack://pleroma_fe/./node_modules/lodash/_compareAscending.js","webpack://pleroma_fe/./node_modules/lodash/_compareMultiple.js","webpack://pleroma_fe/./node_modules/lodash/_coreJsData.js","webpack://pleroma_fe/./node_modules/lodash/_createBaseEach.js","webpack://pleroma_fe/./node_modules/lodash/_createBaseFor.js","webpack://pleroma_fe/./node_modules/lodash/_defineProperty.js","webpack://pleroma_fe/./node_modules/lodash/_equalArrays.js","webpack://pleroma_fe/./node_modules/lodash/_equalByTag.js","webpack://pleroma_fe/./node_modules/lodash/_equalObjects.js","webpack://pleroma_fe/./node_modules/lodash/_freeGlobal.js","webpack://pleroma_fe/./node_modules/lodash/_getAllKeys.js","webpack://pleroma_fe/./node_modules/lodash/_getMapData.js","webpack://pleroma_fe/./node_modules/lodash/_getMatchData.js","webpack://pleroma_fe/./node_modules/lodash/_getNative.js","webpack://pleroma_fe/./node_modules/lodash/_getRawTag.js","webpack://pleroma_fe/./node_modules/lodash/_getSymbols.js","webpack://pleroma_fe/./node_modules/lodash/_getTag.js","webpack://pleroma_fe/./node_modules/lodash/_getValue.js","webpack://pleroma_fe/./node_modules/lodash/_hasPath.js","webpack://pleroma_fe/./node_modules/lodash/_hashClear.js","webpack://pleroma_fe/./node_modules/lodash/_hashDelete.js","webpack://pleroma_fe/./node_modules/lodash/_hashGet.js","webpack://pleroma_fe/./node_modules/lodash/_hashHas.js","webpack://pleroma_fe/./node_modules/lodash/_hashSet.js","webpack://pleroma_fe/./node_modules/lodash/_isFlattenable.js","webpack://pleroma_fe/./node_modules/lodash/_isIndex.js","webpack://pleroma_fe/./node_modules/lodash/_isIterateeCall.js","webpack://pleroma_fe/./node_modules/lodash/_isKey.js","webpack://pleroma_fe/./node_modules/lodash/_isKeyable.js","webpack://pleroma_fe/./node_modules/lodash/_isMasked.js","webpack://pleroma_fe/./node_modules/lodash/_isPrototype.js","webpack://pleroma_fe/./node_modules/lodash/_isStrictComparable.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheClear.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheDelete.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheGet.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheSet.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheClear.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheDelete.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheGet.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheSet.js","webpack://pleroma_fe/./node_modules/lodash/_mapToArray.js","webpack://pleroma_fe/./node_modules/lodash/_matchesStrictComparable.js","webpack://pleroma_fe/./node_modules/lodash/_memoizeCapped.js","webpack://pleroma_fe/./node_modules/lodash/_nativeCreate.js","webpack://pleroma_fe/./node_modules/lodash/_nativeKeys.js","webpack://pleroma_fe/./node_modules/lodash/_nodeUtil.js","webpack://pleroma_fe/./node_modules/lodash/_objectToString.js","webpack://pleroma_fe/./node_modules/lodash/_overArg.js","webpack://pleroma_fe/./node_modules/lodash/_overRest.js","webpack://pleroma_fe/./node_modules/lodash/_root.js","webpack://pleroma_fe/./node_modules/lodash/_setCacheAdd.js","webpack://pleroma_fe/./node_modules/lodash/_setCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_setToArray.js","webpack://pleroma_fe/./node_modules/lodash/_setToString.js","webpack://pleroma_fe/./node_modules/lodash/_shortOut.js","webpack://pleroma_fe/./node_modules/lodash/_stackClear.js","webpack://pleroma_fe/./node_modules/lodash/_stackDelete.js","webpack://pleroma_fe/./node_modules/lodash/_stackGet.js","webpack://pleroma_fe/./node_modules/lodash/_stackHas.js","webpack://pleroma_fe/./node_modules/lodash/_stackSet.js","webpack://pleroma_fe/./node_modules/lodash/_strictIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_stringToPath.js","webpack://pleroma_fe/./node_modules/lodash/_toKey.js","webpack://pleroma_fe/./node_modules/lodash/_toSource.js","webpack://pleroma_fe/./node_modules/lodash/_trimmedEndIndex.js","webpack://pleroma_fe/./node_modules/lodash/constant.js","webpack://pleroma_fe/./node_modules/lodash/eq.js","webpack://pleroma_fe/./node_modules/lodash/filter.js","webpack://pleroma_fe/./node_modules/lodash/get.js","webpack://pleroma_fe/./node_modules/lodash/hasIn.js","webpack://pleroma_fe/./node_modules/lodash/identity.js","webpack://pleroma_fe/./node_modules/lodash/includes.js","webpack://pleroma_fe/./node_modules/lodash/isArguments.js","webpack://pleroma_fe/./node_modules/lodash/isArray.js","webpack://pleroma_fe/./node_modules/lodash/isArrayLike.js","webpack://pleroma_fe/./node_modules/lodash/isBuffer.js","webpack://pleroma_fe/./node_modules/lodash/isFunction.js","webpack://pleroma_fe/./node_modules/lodash/isLength.js","webpack://pleroma_fe/./node_modules/lodash/isObject.js","webpack://pleroma_fe/./node_modules/lodash/isObjectLike.js","webpack://pleroma_fe/./node_modules/lodash/isString.js","webpack://pleroma_fe/./node_modules/lodash/isSymbol.js","webpack://pleroma_fe/./node_modules/lodash/isTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/keys.js","webpack://pleroma_fe/./node_modules/lodash/memoize.js","webpack://pleroma_fe/./node_modules/lodash/property.js","webpack://pleroma_fe/./node_modules/lodash/sortBy.js","webpack://pleroma_fe/./node_modules/lodash/stubArray.js","webpack://pleroma_fe/./node_modules/lodash/stubFalse.js","webpack://pleroma_fe/./node_modules/lodash/toFinite.js","webpack://pleroma_fe/./node_modules/lodash/toInteger.js","webpack://pleroma_fe/./node_modules/lodash/toNumber.js","webpack://pleroma_fe/./node_modules/lodash/toString.js","webpack://pleroma_fe/./node_modules/lodash/values.js","webpack://pleroma_fe/./node_modules/parse-link-header/index.js","webpack://pleroma_fe/./node_modules/punycode/punycode.es6.js","webpack://pleroma_fe/./node_modules/querystring/decode.js","webpack://pleroma_fe/./node_modules/querystring/encode.js","webpack://pleroma_fe/./node_modules/querystring/index.js","webpack://pleroma_fe/./node_modules/url/url.js","webpack://pleroma_fe/./node_modules/url/util.js","webpack://pleroma_fe/./node_modules/xtend/immutable.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/typeof.js","webpack://pleroma_fe/./node_modules/@babel/runtime/regenerator/index.js","webpack://pleroma_fe/webpack/bootstrap","webpack://pleroma_fe/webpack/runtime/compat get default export","webpack://pleroma_fe/webpack/runtime/define property getters","webpack://pleroma_fe/webpack/runtime/global","webpack://pleroma_fe/webpack/runtime/hasOwnProperty shorthand","webpack://pleroma_fe/webpack/runtime/make namespace object","webpack://pleroma_fe/webpack/runtime/node module decorator","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://pleroma_fe/./src/services/notification_utils/notification_utils.js","webpack://pleroma_fe/./node_modules/punycode.js/punycode.es6.js","webpack://pleroma_fe/./src/services/entity_normalizer/entity_normalizer.service.js","webpack://pleroma_fe/./node_modules/@intlify/shared/dist/shared.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack://pleroma_fe/./node_modules/vue-i18n/dist/vue-i18n.runtime.esm-bundler.js","webpack://pleroma_fe/./src/sw.js","webpack://pleroma_fe/./src/i18n/service_worker_messages.js"],"sourcesContent":["export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"منشور مجهول، جارٍ البحث عنه…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أعجِب بمنشورك\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يُتابعك\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تحميل الإشعارات الأقدم\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الإخطارات\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مقروء!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"شارَك منشورك\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publicació desconeguda, s'està cercant…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha marcat un estat teu\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha començat a seguir-te\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carrega més notificacions\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificacions\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Llegit!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha repetit el teu estat\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrat a\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No més notificacions\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"et vol seguir\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"ha reaccionat amb \", _interpolate(_list(0))])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error obtenint notificacions: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neznámý příspěvek, hledám jej…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"si oblíbil/a váš příspěvek\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vás nyní sleduje\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Načíst starší oznámení\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oznámení\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Číst!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zopakoval/a váš příspěvek\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Žádná další oznámení\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unbekannte Nachricht, suche danach…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorisierte deine Nachricht\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"folgt dir\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ältere Benachrichtigungen laden\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Benachrichtigungen\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gelesen!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wiederholte deine Nachricht\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"möchte dir folgen\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrierte zu\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagierte mit \", _interpolate(_list(0))])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Benachrichtigungen mehr\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error beim laden von Neuigkeiten\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unknown status, searching for it…\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching notifications: \", _interpolate(_list(0))])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorited your status\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"followed you\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wants to follow you\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older notifications\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Read!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated your status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more notifications\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrated to\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reacted with \", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"submitted a report\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"poll has ended\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nekonata afiŝo, serĉante ĝin…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ŝatis vian afiŝon\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekabonis vin\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi pli malnovajn sciigojn\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciigoj\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legite!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ripetis vian afiŝon\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj pliaj sciigoj\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagis per \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migris al\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volas vin aboni\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Eraris akirado de sciigoj: \", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sendis raporton\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enketo finiĝis\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Estado desconocido, buscándolo…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"le gusta tu estado\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"empezó a seguirte\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cargar notificaciones antiguas\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificaciones\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"¡Leído!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repitió tu estado\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No hay más notificaciones\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reaccionó con \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrado a\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"quiere seguirte\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error obteniendo notificaciones:\", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"alustas sinu jälgimist\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teated\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loe!\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reageeris \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kolis\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rohkem teateid ei ole\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"taaspostitas su staatuse\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laadi vanemad teated\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"soovib Teid jälgida\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"lisas su staatuse lemmikuks\"])},\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tundmatu staatus, otsin…\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Egoera ezezaguna, bilatzen…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zure mezua gogoko du\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zu jarraitzen zaitu\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kargatu jakinarazpen zaharragoak\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jakinarazpenak\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Irakurrita!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zure mezua errepikatu du\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ez dago jakinarazpen gehiago\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"kin erreakzionatu zuen\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hona migratua:\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jarraitu nahi zaitu\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Errorea jakinarazpenak eskuratzean: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Viestiä ei löydetty…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tykkäsi viestistäsi\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seuraa sinua\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lataa vanhempia ilmoituksia\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ilmoitukset\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lue!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toisti viestisi\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ei enempää ilmoituksia\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"lisäsi reaktion \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"siirtyi sivulle\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"haluaa seurata sinua\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Message inconnu, recherche en cours…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a aimé votre statut\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vous suit\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Charger les notifications précédentes\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lu !\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a partagé votre statut\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aucune notification supplémentaire\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a migré à\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"a réagi avec \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"veut vous suivre\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Erreur de chargement des notifications : \", _interpolate(_list(0))])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sondage terminé\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rapport envoyé\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post anaithnid. Cuardach dó…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toghadh le do phost\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"lean tú\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Luchtaigh fógraí aosta\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fógraí\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Léigh!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"athphostáil tú\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"סטאטוס לא ידוע, מחפש…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"אהב את הסטטוס שלך\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"עקב אחריך\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"טען התראות ישנות\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"התראות\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"קרא!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"חזר על הסטטוס שלך\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"לא עוד התראות\"])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"követ téged\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Értesítések\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Olvasva!\"])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ti segue\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifiche\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letto!\"])},\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stato sconosciuto, lo sto cercando…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha gradito\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carica notifiche precedenti\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha condiviso il tuo messaggio\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vuole seguirti\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fine delle notifiche\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"è migrato verso\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"ha reagito con \", _interpolate(_list(0))])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Errore nel caricare le notifiche: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ステータスがみつかりません。さがしています…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがおきにいりされました\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"フォローされました\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ふるいつうちをみる\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"つうち\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"よんだ!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがリピートされました\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"つうちはありません\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"つうちをとりにいくことに、しっぱいしました: \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたをフォローしたいです\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"インスタンスを、ひっこしました\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" でリアクションしました\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"とうひょうが、おわりました\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"つうほうしました\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ステータスが見つかりません。探しています…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがお気に入りされました\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"フォローされました\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"古い通知をみる\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"読んだ!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがリピートされました\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知はありません\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" でリアクションしました\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"インスタンスを引っ越しました\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたをフォローしたいです\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"通知の取得に失敗しました: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알 수 없는 게시물입니다, 검색합니다…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심을 가짐\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우함\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전 알림 불러오기\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"읽음!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏함\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림이 없습니다\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이사했습니다\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 로 반응했습니다\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"알림 불러오기 실패: \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고 내용을 전송함\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표가 끝남\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ukjent status, leter etter den…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"likte din status\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fulgte deg\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last eldre varsler\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Varslinger\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gjentok din status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingen gjenstående varsler\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ønsker å følge deg\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Onbekend bericht, aan het zoeken…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vond je bericht leuk\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volgt jou\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oudere meldingen laden\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meldingen\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gelezen!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"herhaalde je bericht\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen meldingen meer\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"is gemigreerd naar\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wil je volgen\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reageerde met \", _interpolate(_list(0))])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Fout bij ophalen van meldingen: \", _interpolate(_list(0))])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"peiling is beëindigd\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Estatut desconegut, sèm a lo cercar...\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a aimat vòstre estatut\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vos a seguit\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cargar las notificacions mai ancianas\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notficacions\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legit !\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a repetit vòstre estatut\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas mai de notificacions\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieznany status, szukam go…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dodał(-a) twój status do ulubionych\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"obserwuje cię\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Załaduj starsze powiadomienia\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Powiadomienia\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Przeczytane!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"powtórzył(-a) twój status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nie masz więcej powiadomień\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wyemigrował do\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"zareagował z \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"chce ciebie obserwować\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Błąd pobierania powiadomień: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publicação desconhecida, a procurar…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gostou do teu post\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seguiu-te\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carregar notificações antigas\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificações\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lido!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partilhou o teu post\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sem mais notificações\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagiu com \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrou para\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"quer seguir-te\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Erro ao obter notificações: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"te-a urmărit\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificări\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Citit!\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Неизвестный статус, ищем…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"нравится ваш статус\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"начал(а) читать вас\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Загрузить старые уведомления\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Уведомления\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Прочесть\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"повторил(а) ваш статус\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"хочет читать вас\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"добавил(а) реакцию: \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"перехал на\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Нет дальнейших уведомлений\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Ошибка при обновлении уведомлений: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neznáma správa, dohľadávam ju…\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Chyba získavania upozornení: \", _interpolate(_list(0))])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"si obľúbil tvoju správu\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ťa nasleduje\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ťa chce nasledovať\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nahrať staršie upozornenia\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upozornenia\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prečítané!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zopakoval tvoju správu\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Žiadne ďalšie upozornenia\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sa presťahoval na\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagoval nasledovne \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未知的状态,正在搜索中…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢了你的状态\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注了你\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载更早的通知\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已阅!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发了你的状态\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有更多的通知\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"作出了 \", _interpolate(_list(0)), \" 的反应\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"迁移到了\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"想要关注你\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"取得通知时发生错误:\", _interpolate(_list(0))])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票结束了\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交举报\"])}\n }\n}","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '&quot;';\n break;\n case 38: // &\n escape = '&amp;';\n break;\n case 39: // '\n escape = '&#39;';\n break;\n case 60: // <\n escape = '&lt;';\n break;\n case 62: // >\n escape = '&gt;';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","'use strict';\n\nvar qs = require('querystring')\n , url = require('url')\n , xtend = require('xtend');\n\nconst PARSE_LINK_HEADER_MAXLEN = parseInt(process.env.PARSE_LINK_HEADER_MAXLEN) || 2000;\nconst PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED = process.env.PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED != null\n\nfunction hasRel(x) {\n return x && x.rel;\n}\n\nfunction intoRels (acc, x) {\n function splitRel (rel) {\n acc[rel] = xtend(x, { rel: rel });\n }\n\n x.rel.split(/\\s+/).forEach(splitRel);\n\n return acc;\n}\n\nfunction createObjects (acc, p) {\n // rel=\"next\" => 1: rel 2: next\n var m = p.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/)\n if (m) acc[m[1]] = m[2];\n return acc;\n}\n\nfunction parseLink(link) {\n try {\n var m = link.match(/<?([^>]*)>(.*)/)\n , linkUrl = m[1]\n , parts = m[2].split(';')\n , parsedUrl = url.parse(linkUrl)\n , qry = qs.parse(parsedUrl.query);\n\n parts.shift();\n\n var info = parts\n .reduce(createObjects, {});\n \n info = xtend(qry, info);\n info.url = linkUrl;\n return info;\n } catch (e) {\n return null;\n }\n}\n\nfunction checkHeader(linkHeader){\n if (!linkHeader) return false;\n\n if (linkHeader.length > PARSE_LINK_HEADER_MAXLEN) {\n if (PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED) {\n throw new Error('Input string too long, it should be under ' + PARSE_LINK_HEADER_MAXLEN + ' characters.');\n } else {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = function (linkHeader) {\n if (!checkHeader(linkHeader)) return null;\n\n return linkHeader.split(/,\\s*</)\n .map(parseLink)\n .filter(hasRel)\n .reduce(intoRels, {});\n};\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n const rootState = store.rootState || store.state\n\n return ([\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.followRequest && 'follow_request',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n rootState.config.notificationVisibility.reports && 'pleroma:report',\n rootState.config.notificationVisibility.polls && 'poll'\n ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n if (isStatusNotification(notification.type) && !notification.status) {\n return false\n }\n return true\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst isMutedNotification = (store, notification) => {\n if (!notification.status) return\n return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n\n if (notification.seen) return\n if (!visibleTypes(store).includes(notification.type)) return\n if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n case 'pleroma:report':\n i18nString = 'submitted_report'\n break\n case 'poll':\n i18nString = 'poll_ended'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n if (status.is_post_verb) {\n return 'status'\n }\n\n if (status.retweeted_status) {\n return 'retweet'\n }\n\n if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n (typeof status.text === 'string' && status.text.match(/favorited/))) {\n return 'favorite'\n }\n\n if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n return 'deletion'\n }\n\n if (status.text.match(/started following/) || status.activity_type === 'follow') {\n return 'follow'\n }\n\n return 'unknown'\n}\n\nexport const parseUser = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'acct')\n // case for users in \"mentions\" property for statuses in MastoAPI\n const mastoShort = masto && !Object.prototype.hasOwnProperty.call(data, 'avatar')\n\n output.inLists = null\n output.id = String(data.id)\n output._original = data // used for server-side settings\n\n if (masto) {\n output.screen_name = data.acct\n output.fqn = data.fqn\n output.statusnet_profile_url = data.url\n\n // There's nothing else to get\n if (mastoShort) {\n return output\n }\n\n output.emoji = data.emojis\n output.name = escape(data.display_name)\n output.name_html = output.name\n output.name_unescaped = data.display_name\n\n output.description = data.note\n // TODO cleanup this shit, output.description is overriden with source data\n output.description_html = data.note\n\n output.fields = data.fields\n output.fields_html = data.fields.map(field => {\n return {\n name: escape(field.name),\n value: field.value\n }\n })\n output.fields_text = data.fields.map(field => {\n return {\n name: unescape(field.name.replace(/<[^>]*>/g, '')),\n value: unescape(field.value.replace(/<[^>]*>/g, ''))\n }\n })\n\n // Utilize avatar_static for gif avatars?\n output.profile_image_url = data.avatar\n output.profile_image_url_original = data.avatar\n\n // Same, utilize header_static?\n output.cover_photo = data.header\n\n output.friends_count = data.following_count\n\n output.bot = data.bot\n\n if (data.pleroma) {\n if (data.pleroma.settings_store) {\n output.storage = data.pleroma.settings_store['pleroma-fe']\n }\n const relationship = data.pleroma.relationship\n\n output.background_image = data.pleroma.background_image\n output.favicon = data.pleroma.favicon\n output.token = data.pleroma.chat_token\n\n if (relationship) {\n output.relationship = relationship\n }\n\n output.allow_following_move = data.pleroma.allow_following_move\n\n output.hide_follows = data.pleroma.hide_follows\n output.hide_followers = data.pleroma.hide_followers\n output.hide_follows_count = data.pleroma.hide_follows_count\n output.hide_followers_count = data.pleroma.hide_followers_count\n\n output.rights = {\n moderator: data.pleroma.is_moderator,\n admin: data.pleroma.is_admin\n }\n // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n if (output.rights.admin) {\n output.role = 'admin'\n } else if (output.rights.moderator) {\n output.role = 'moderator'\n } else {\n output.role = 'member'\n }\n\n output.birthday = data.pleroma.birthday\n\n if (data.pleroma.privileges) {\n output.privileges = data.pleroma.privileges\n } else if (data.pleroma.is_admin) {\n output.privileges = [\n 'users_read',\n 'users_manage_invites',\n 'users_manage_activation_state',\n 'users_manage_tags',\n 'users_manage_credentials',\n 'users_delete',\n 'messages_read',\n 'messages_delete',\n 'instances_delete',\n 'reports_manage_reports',\n 'moderation_log_read',\n 'announcements_manage_announcements',\n 'emoji_manage_emoji',\n 'statistics_read'\n ]\n } else if (data.pleroma.is_moderator) {\n output.privileges = [\n 'messages_delete',\n 'reports_manage_reports'\n ]\n } else {\n output.privileges = []\n }\n }\n\n if (data.source) {\n output.description = data.source.note\n output.default_scope = data.source.privacy\n output.fields = data.source.fields\n if (data.source.pleroma) {\n output.no_rich_text = data.source.pleroma.no_rich_text\n output.show_role = data.source.pleroma.show_role\n output.discoverable = data.source.pleroma.discoverable\n output.show_birthday = data.pleroma.show_birthday\n }\n }\n\n // TODO: handle is_local\n output.is_local = !output.screen_name.includes('@')\n } else {\n output.screen_name = data.screen_name\n\n output.name = data.name\n output.name_html = data.name_html\n\n output.description = data.description\n output.description_html = data.description_html\n\n output.profile_image_url = data.profile_image_url\n output.profile_image_url_original = data.profile_image_url_original\n\n output.cover_photo = data.cover_photo\n\n output.friends_count = data.friends_count\n\n // output.bot = ??? missing\n\n output.statusnet_profile_url = data.statusnet_profile_url\n\n output.is_local = data.is_local\n output.role = data.role\n output.show_role = data.show_role\n\n if (data.rights) {\n output.rights = {\n moderator: data.rights.delete_others_notice,\n admin: data.rights.admin\n }\n }\n output.no_rich_text = data.no_rich_text\n output.default_scope = data.default_scope\n output.hide_follows = data.hide_follows\n output.hide_followers = data.hide_followers\n output.hide_follows_count = data.hide_follows_count\n output.hide_followers_count = data.hide_followers_count\n output.background_image = data.background_image\n // Websocket token\n output.token = data.token\n\n // Convert relationsip data to expected format\n output.relationship = {\n muting: data.muted,\n blocking: data.statusnet_blocking,\n followed_by: data.follows_you,\n following: data.following\n }\n }\n\n output.created_at = new Date(data.created_at)\n output.locked = data.locked\n output.followers_count = data.followers_count\n output.statuses_count = data.statuses_count\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n\n // deactivated was changed to is_active in Pleroma 2.3.0\n // so check if is_active is present\n output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n ? !data.pleroma.is_active // new backend\n : data.pleroma.deactivated // old backend\n\n output.notification_settings = data.pleroma.notification_settings\n output.unread_chat_count = data.pleroma.unread_chat_count\n }\n\n output.tags = output.tags || []\n output.rights = output.rights || {}\n output.notification_settings = output.notification_settings || {}\n\n // Convert punycode to unicode for UI\n output.screen_name_ui = output.screen_name\n if (output.screen_name && output.screen_name.includes('@')) {\n const parts = output.screen_name.split('@')\n const unicodeDomain = punycode.toUnicode(parts[1])\n if (unicodeDomain !== parts[1]) {\n // Add some identifier so users can potentially spot spoofing attempts:\n // lain.com and xn--lin-6cd.com would appear identical otherwise.\n output.screen_name_ui_contains_non_ascii = true\n output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n } else {\n output.screen_name_ui_contains_non_ascii = false\n }\n }\n\n return output\n}\n\nexport const parseAttachment = (data) => {\n const output = {}\n const masto = !Object.prototype.hasOwnProperty.call(data, 'oembed')\n\n if (masto) {\n // Not exactly same...\n output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n output.meta = data.meta // not present in BE yet\n output.id = data.id\n } else {\n output.mimetype = data.mimetype\n // output.meta = ??? missing\n }\n\n output.url = data.url\n output.large_thumb_url = data.preview_url\n output.description = data.description\n\n return output\n}\n\nexport const parseSource = (data) => {\n const output = {}\n\n output.text = data.text\n output.spoiler_text = data.spoiler_text\n output.content_type = data.content_type\n\n return output\n}\n\nexport const parseStatus = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'account')\n\n if (masto) {\n output.favorited = data.favourited\n output.fave_num = data.favourites_count\n\n output.repeated = data.reblogged\n output.repeat_num = data.reblogs_count\n\n output.bookmarked = data.bookmarked\n\n output.type = data.reblog ? 'retweet' : 'status'\n output.nsfw = data.sensitive\n\n output.raw_html = data.content\n output.emojis = data.emojis\n\n output.tags = data.tags\n\n output.edited_at = data.edited_at\n\n if (data.pleroma) {\n const { pleroma } = data\n output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n output.statusnet_conversation_id = data.pleroma.conversation_id\n output.is_local = pleroma.local\n output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n output.thread_muted = pleroma.thread_muted\n output.emoji_reactions = pleroma.emoji_reactions\n output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n } else {\n output.text = data.content\n output.summary = data.spoiler_text\n }\n\n output.in_reply_to_status_id = data.in_reply_to_id\n output.in_reply_to_user_id = data.in_reply_to_account_id\n output.replies_count = data.replies_count\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.reblog)\n }\n\n output.summary_raw_html = escape(data.spoiler_text)\n output.external_url = data.url\n output.poll = data.poll\n if (output.poll) {\n output.poll.options = (output.poll.options || []).map(field => ({\n ...field,\n title_html: escape(field.title)\n }))\n }\n output.pinned = data.pinned\n output.muted = data.muted\n } else {\n output.favorited = data.favorited\n output.fave_num = data.fave_num\n\n output.repeated = data.repeated\n output.repeat_num = data.repeat_num\n\n // catchall, temporary\n // Object.assign(output, data)\n\n output.type = qvitterStatusType(data)\n\n if (data.nsfw === undefined) {\n output.nsfw = isNsfw(data)\n if (data.retweeted_status) {\n output.nsfw = data.retweeted_status.nsfw\n }\n } else {\n output.nsfw = data.nsfw\n }\n\n output.raw_html = data.statusnet_html\n output.text = data.text\n\n output.in_reply_to_status_id = data.in_reply_to_status_id\n output.in_reply_to_user_id = data.in_reply_to_user_id\n output.in_reply_to_screen_name = data.in_reply_to_screen_name\n output.statusnet_conversation_id = data.statusnet_conversation_id\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.retweeted_status)\n }\n\n output.summary = data.summary\n output.summary_html = data.summary_html\n output.external_url = data.external_url\n output.is_local = data.is_local\n }\n\n output.id = String(data.id)\n output.visibility = data.visibility\n output.card = data.card\n output.created_at = new Date(data.created_at)\n\n // Converting to string, the right way.\n output.in_reply_to_status_id = output.in_reply_to_status_id\n ? String(output.in_reply_to_status_id)\n : null\n output.in_reply_to_user_id = output.in_reply_to_user_id\n ? String(output.in_reply_to_user_id)\n : null\n\n output.user = parseUser(masto ? data.account : data.user)\n\n output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)\n\n output.attachments = ((masto ? data.media_attachments : data.attachments) || [])\n .map(parseAttachment)\n\n const retweetedStatus = masto ? data.reblog : data.retweeted_status\n if (retweetedStatus) {\n output.retweeted_status = parseStatus(retweetedStatus)\n }\n\n output.favoritedBy = []\n output.rebloggedBy = []\n\n if (Object.prototype.hasOwnProperty.call(data, 'originalStatus')) {\n Object.assign(output, data.originalStatus)\n }\n\n return output\n}\n\nexport const parseNotification = (data) => {\n const mastoDict = {\n favourite: 'like',\n reblog: 'repeat'\n }\n const masto = !Object.prototype.hasOwnProperty.call(data, 'ntype')\n const output = {}\n\n if (masto) {\n output.type = mastoDict[data.type] || data.type\n output.seen = data.pleroma.is_seen\n output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n output.action = output.status // TODO: Refactor, this is unneeded\n output.target = output.type !== 'move'\n ? null\n : parseUser(data.target)\n output.from_profile = parseUser(data.account)\n output.emoji = data.emoji\n if (data.report) {\n output.report = data.report\n output.report.content = data.report.content\n output.report.acct = parseUser(data.report.account)\n output.report.actor = parseUser(data.report.actor)\n output.report.statuses = data.report.statuses.map(parseStatus)\n }\n } else {\n const parsedNotice = parseStatus(data.notice)\n output.type = data.ntype\n output.seen = Boolean(data.is_seen)\n output.status = output.type === 'like'\n ? parseStatus(data.notice.favorited_status)\n : parsedNotice\n output.action = parsedNotice\n output.from_profile = output.type === 'pleroma:chat_mention' ? parseUser(data.account) : parseUser(data.from_profile)\n }\n\n output.created_at = new Date(data.created_at)\n output.id = parseInt(data.id)\n\n return output\n}\n\nconst isNsfw = (status) => {\n const nsfwRegex = /#nsfw/i\n return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)\n}\n\nexport const parseLinkHeaderPagination = (linkHeader, opts = {}) => {\n const flakeId = opts.flakeId\n const parsedLinkHeader = parseLinkHeader(linkHeader)\n if (!parsedLinkHeader) return\n const maxId = parsedLinkHeader.next.max_id\n const minId = parsedLinkHeader.prev.min_id\n\n return {\n maxId: flakeId ? maxId : parseInt(maxId, 10),\n minId: flakeId ? minId : parseInt(minId, 10)\n }\n}\n\nexport const parseChat = (chat) => {\n const output = {}\n output.id = chat.id\n output.account = parseUser(chat.account)\n output.unread = chat.unread\n output.lastMessage = parseChatMessage(chat.last_message)\n output.updated_at = new Date(chat.updated_at)\n return output\n}\n\nexport const parseChatMessage = (message) => {\n if (!message) { return }\n if (message.isNormalized) { return message }\n const output = message\n output.id = message.id\n output.created_at = new Date(message.created_at)\n output.chat_id = message.chat_id\n output.emojis = message.emojis\n output.content = message.content\n if (message.attachment) {\n output.attachments = [parseAttachment(message.attachment)]\n } else {\n output.attachments = []\n }\n output.pending = !!message.pending\n output.error = false\n output.idempotency_key = message.idempotency_key\n output.isNormalized = true\n return output\n}\n","/*!\n * shared v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n/**\r\n * Original Utilities\r\n * written by kazuya kawaguchi\r\n */\r\nconst inBrowser = typeof window !== 'undefined';\r\nlet mark;\r\nlet measure;\r\nif ((process.env.NODE_ENV !== 'production')) {\r\n const perf = inBrowser && window.performance;\r\n if (perf &&\r\n perf.mark &&\r\n perf.measure &&\r\n perf.clearMarks &&\r\n perf.clearMeasures) {\r\n mark = (tag) => perf.mark(tag);\r\n measure = (name, startTag, endTag) => {\r\n perf.measure(name, startTag, endTag);\r\n perf.clearMarks(startTag);\r\n perf.clearMarks(endTag);\r\n };\r\n }\r\n}\r\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\r\n/* eslint-disable */\r\nfunction format(message, ...args) {\r\n if (args.length === 1 && isObject(args[0])) {\r\n args = args[0];\r\n }\r\n if (!args || !args.hasOwnProperty) {\r\n args = {};\r\n }\r\n return message.replace(RE_ARGS, (match, identifier) => {\r\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\r\n });\r\n}\r\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\r\nconst makeSymbol = (name) => hasSymbol ? Symbol(name) : name;\r\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\r\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\r\n .replace(/\\u2028/g, '\\\\u2028')\r\n .replace(/\\u2029/g, '\\\\u2029')\r\n .replace(/\\u0027/g, '\\\\u0027');\r\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\r\nconst isDate = (val) => toTypeString(val) === '[object Date]';\r\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\r\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\r\nfunction warn(msg, err) {\r\n if (typeof console !== 'undefined') {\r\n console.warn(`[intlify] ` + msg);\r\n /* istanbul ignore if */\r\n if (err) {\r\n console.warn(err.stack);\r\n }\r\n }\r\n}\r\nconst assign = Object.assign;\r\nlet _globalThis;\r\nconst getGlobalThis = () => {\r\n // prettier-ignore\r\n return (_globalThis ||\r\n (_globalThis =\r\n typeof globalThis !== 'undefined'\r\n ? globalThis\r\n : typeof self !== 'undefined'\r\n ? self\r\n : typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : {}));\r\n};\r\nfunction escapeHtml(rawText) {\r\n return rawText\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&apos;');\r\n}\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nfunction hasOwn(obj, key) {\r\n return hasOwnProperty.call(obj, key);\r\n}\r\n/* eslint-enable */\r\n/**\r\n * Useful Utilities By Evan you\r\n * Modified by kazuya kawaguchi\r\n * MIT License\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\r\n */\r\nconst isArray = Array.isArray;\r\nconst isFunction = (val) => typeof val === 'function';\r\nconst isString = (val) => typeof val === 'string';\r\nconst isBoolean = (val) => typeof val === 'boolean';\r\nconst isSymbol = (val) => typeof val === 'symbol';\r\nconst isObject = (val) => // eslint-disable-line\r\n val !== null && typeof val === 'object';\r\nconst isPromise = (val) => {\r\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n};\r\nconst objectToString = Object.prototype.toString;\r\nconst toTypeString = (value) => objectToString.call(value);\r\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\r\n// for converting list and named values to displayed strings.\r\nconst toDisplayString = (val) => {\r\n return val == null\r\n ? ''\r\n : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\r\n ? JSON.stringify(val, null, 2)\r\n : String(val);\r\n};\r\nconst RANGE = 2;\r\nfunction generateCodeFrame(source, start = 0, end = source.length) {\r\n const lines = source.split(/\\r?\\n/);\r\n let count = 0;\r\n const res = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n count += lines[i].length + 1;\r\n if (count >= start) {\r\n for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\r\n if (j < 0 || j >= lines.length)\r\n continue;\r\n const line = j + 1;\r\n res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\r\n const lineLength = lines[j].length;\r\n if (j === i) {\r\n // push underline\r\n const pad = start - (count - lineLength) + 1;\r\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\r\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\r\n }\r\n else if (j > i) {\r\n if (end > count) {\r\n const length = Math.max(Math.min(end - count, lineLength), 1);\r\n res.push(` | ` + '^'.repeat(length));\r\n }\r\n count += lineLength + 1;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n return res.join('\\n');\r\n}\n\n/**\r\n * Event emitter, forked from the below:\r\n * - original repository url: https://github.com/developit/mitt\r\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\r\n * - author: Jason Miller (https://github.com/developit)\r\n * - license: MIT\r\n */\r\n/**\r\n * Create a event emitter\r\n *\r\n * @returns An event emitter\r\n */\r\nfunction createEmitter() {\r\n const events = new Map();\r\n const emitter = {\r\n events,\r\n on(event, handler) {\r\n const handlers = events.get(event);\r\n const added = handlers && handlers.push(handler);\r\n if (!added) {\r\n events.set(event, [handler]);\r\n }\r\n },\r\n off(event, handler) {\r\n const handlers = events.get(event);\r\n if (handlers) {\r\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\r\n }\r\n },\r\n emit(event, payload) {\r\n (events.get(event) || [])\r\n .slice()\r\n .map(handler => handler(payload));\r\n (events.get('*') || [])\r\n .slice()\r\n .map(handler => handler(event, payload));\r\n }\r\n };\r\n return emitter;\r\n}\n\nexport { assign, createEmitter, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, makeSymbol, mark, measure, objectToString, toDisplayString, toTypeString, warn };\n","/*!\n * message-compiler v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { format, assign, isString } from '@intlify/shared';\n\nconst CompileErrorCodes = {\r\n // tokenizer error codes\r\n EXPECTED_TOKEN: 1,\r\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\r\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\r\n UNKNOWN_ESCAPE_SEQUENCE: 4,\r\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\r\n UNBALANCED_CLOSING_BRACE: 6,\r\n UNTERMINATED_CLOSING_BRACE: 7,\r\n EMPTY_PLACEHOLDER: 8,\r\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\r\n INVALID_LINKED_FORMAT: 10,\r\n // parser error codes\r\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\r\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\r\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\r\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\r\n // Special value for higher-order compilers to pick up the last code\r\n // to avoid collision of error codes. This should always be kept as the last\r\n // item.\r\n __EXTEND_POINT__: 15\r\n};\r\n/** @internal */\r\nconst errorMessages = {\r\n // tokenizer error messages\r\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\r\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\r\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\r\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\r\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\r\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\r\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\r\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\r\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\r\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\r\n // parser error messages\r\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\r\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`\r\n};\r\nfunction createCompileError(code, loc, options = {}) {\r\n const { domain, messages, args } = options;\r\n const msg = (process.env.NODE_ENV !== 'production')\r\n ? format((messages || errorMessages)[code] || '', ...(args || []))\r\n : code;\r\n const error = new SyntaxError(String(msg));\r\n error.code = code;\r\n if (loc) {\r\n error.location = loc;\r\n }\r\n error.domain = domain;\r\n return error;\r\n}\r\n/** @internal */\r\nfunction defaultOnError(error) {\r\n throw error;\r\n}\n\nconst LocationStub = {\r\n start: { line: 1, column: 1, offset: 0 },\r\n end: { line: 1, column: 1, offset: 0 }\r\n};\r\nfunction createPosition(line, column, offset) {\r\n return { line, column, offset };\r\n}\r\nfunction createLocation(start, end, source) {\r\n const loc = { start, end };\r\n if (source != null) {\r\n loc.source = source;\r\n }\r\n return loc;\r\n}\n\nconst CHAR_SP = ' ';\r\nconst CHAR_CR = '\\r';\r\nconst CHAR_LF = '\\n';\r\nconst CHAR_LS = String.fromCharCode(0x2028);\r\nconst CHAR_PS = String.fromCharCode(0x2029);\r\nfunction createScanner(str) {\r\n const _buf = str;\r\n let _index = 0;\r\n let _line = 1;\r\n let _column = 1;\r\n let _peekOffset = 0;\r\n const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\r\n const isLF = (index) => _buf[index] === CHAR_LF;\r\n const isPS = (index) => _buf[index] === CHAR_PS;\r\n const isLS = (index) => _buf[index] === CHAR_LS;\r\n const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\r\n const index = () => _index;\r\n const line = () => _line;\r\n const column = () => _column;\r\n const peekOffset = () => _peekOffset;\r\n const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\r\n const currentChar = () => charAt(_index);\r\n const currentPeek = () => charAt(_index + _peekOffset);\r\n function next() {\r\n _peekOffset = 0;\r\n if (isLineEnd(_index)) {\r\n _line++;\r\n _column = 0;\r\n }\r\n if (isCRLF(_index)) {\r\n _index++;\r\n }\r\n _index++;\r\n _column++;\r\n return _buf[_index];\r\n }\r\n function peek() {\r\n if (isCRLF(_index + _peekOffset)) {\r\n _peekOffset++;\r\n }\r\n _peekOffset++;\r\n return _buf[_index + _peekOffset];\r\n }\r\n function reset() {\r\n _index = 0;\r\n _line = 1;\r\n _column = 1;\r\n _peekOffset = 0;\r\n }\r\n function resetPeek(offset = 0) {\r\n _peekOffset = offset;\r\n }\r\n function skipToPeek() {\r\n const target = _index + _peekOffset;\r\n // eslint-disable-next-line no-unmodified-loop-condition\r\n while (target !== _index) {\r\n next();\r\n }\r\n _peekOffset = 0;\r\n }\r\n return {\r\n index,\r\n line,\r\n column,\r\n peekOffset,\r\n charAt,\r\n currentChar,\r\n currentPeek,\r\n next,\r\n peek,\r\n reset,\r\n resetPeek,\r\n skipToPeek\r\n };\r\n}\n\nconst EOF = undefined;\r\nconst LITERAL_DELIMITER = \"'\";\r\nconst ERROR_DOMAIN$1 = 'tokenizer';\r\nfunction createTokenizer(source, options = {}) {\r\n const location = options.location !== false;\r\n const _scnr = createScanner(source);\r\n const currentOffset = () => _scnr.index();\r\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\r\n const _initLoc = currentPosition();\r\n const _initOffset = currentOffset();\r\n const _context = {\r\n currentType: 14 /* EOF */,\r\n offset: _initOffset,\r\n startLoc: _initLoc,\r\n endLoc: _initLoc,\r\n lastType: 14 /* EOF */,\r\n lastOffset: _initOffset,\r\n lastStartLoc: _initLoc,\r\n lastEndLoc: _initLoc,\r\n braceNest: 0,\r\n inLinked: false,\r\n text: ''\r\n };\r\n const context = () => _context;\r\n const { onError } = options;\r\n function emitError(code, pos, offset, ...args) {\r\n const ctx = context();\r\n pos.column += offset;\r\n pos.offset += offset;\r\n if (onError) {\r\n const loc = createLocation(ctx.startLoc, pos);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN$1,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function getToken(context, type, value) {\r\n context.endLoc = currentPosition();\r\n context.currentType = type;\r\n const token = { type };\r\n if (location) {\r\n token.loc = createLocation(context.startLoc, context.endLoc);\r\n }\r\n if (value != null) {\r\n token.value = value;\r\n }\r\n return token;\r\n }\r\n const getEndToken = (context) => getToken(context, 14 /* EOF */);\r\n function eat(scnr, ch) {\r\n if (scnr.currentChar() === ch) {\r\n scnr.next();\r\n return ch;\r\n }\r\n else {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function peekSpaces(scnr) {\r\n let buf = '';\r\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\r\n buf += scnr.currentPeek();\r\n scnr.peek();\r\n }\r\n return buf;\r\n }\r\n function skipSpaces(scnr) {\r\n const buf = peekSpaces(scnr);\r\n scnr.skipToPeek();\r\n return buf;\r\n }\r\n function isIdentifierStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n cc === 95 // _\r\n );\r\n }\r\n function isNumberStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n }\r\n function isNamedIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isListIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\r\n const ret = isNumberStart(ch);\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLiteralStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDotStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 8 /* LinkedAlias */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \".\" /* LinkedDot */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedModifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 9 /* LinkedDot */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDelimiterStart(scnr, context) {\r\n const { currentType } = context;\r\n if (!(currentType === 8 /* LinkedAlias */ ||\r\n currentType === 12 /* LinkedModifier */)) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \":\" /* LinkedDelimiter */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedReferStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 10 /* LinkedDelimiter */) {\r\n return false;\r\n }\r\n const fn = () => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return isIdentifierStart(scnr.peek());\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n ch === \":\" /* LinkedDelimiter */ ||\r\n ch === \".\" /* LinkedDot */ ||\r\n ch === CHAR_SP ||\r\n !ch) {\r\n return false;\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn();\r\n }\r\n else {\r\n // other characters\r\n return isIdentifierStart(ch);\r\n }\r\n };\r\n const ret = fn();\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isPluralStart(scnr) {\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"|\" /* Pipe */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function detectModuloStart(scnr) {\r\n const spaces = peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"%\" /* Modulo */ &&\r\n scnr.peek() === \"{\" /* BraceLeft */;\r\n scnr.resetPeek();\r\n return {\r\n isModulo: ret,\r\n hasSpace: spaces.length > 0\r\n };\r\n }\r\n function isTextStart(scnr, reset = true) {\r\n const fn = (hasSpace = false, prev = '', detectModulo = false) => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return prev === \"%\" /* Modulo */ ? false : hasSpace;\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ || !ch) {\r\n return prev === \"%\" /* Modulo */ ? true : hasSpace;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n scnr.peek();\r\n return fn(hasSpace, \"%\" /* Modulo */, true);\r\n }\r\n else if (ch === \"|\" /* Pipe */) {\r\n return prev === \"%\" /* Modulo */ || detectModulo\r\n ? true\r\n : !(prev === CHAR_SP || prev === CHAR_LF);\r\n }\r\n else if (ch === CHAR_SP) {\r\n scnr.peek();\r\n return fn(true, CHAR_SP, detectModulo);\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn(true, CHAR_LF, detectModulo);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n const ret = fn();\r\n reset && scnr.resetPeek();\r\n return ret;\r\n }\r\n function takeChar(scnr, fn) {\r\n const ch = scnr.currentChar();\r\n if (ch === EOF) {\r\n return EOF;\r\n }\r\n if (fn(ch)) {\r\n scnr.next();\r\n return ch;\r\n }\r\n return null;\r\n }\r\n function takeIdentifierChar(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n (cc >= 48 && cc <= 57) || // 0-9\r\n cc === 95 || // _\r\n cc === 36 // $\r\n );\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeHexDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 48 && cc <= 57) || // 0-9\r\n (cc >= 65 && cc <= 70) || // A-F\r\n (cc >= 97 && cc <= 102)); // a-f\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function getDigits(scnr) {\r\n let ch = '';\r\n let num = '';\r\n while ((ch = takeDigit(scnr))) {\r\n num += ch;\r\n }\r\n return num;\r\n }\r\n function readModulo(scnr) {\r\n skipSpaces(scnr);\r\n const ch = scnr.currentChar();\r\n if (ch !== \"%\" /* Modulo */) {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n }\r\n scnr.next();\r\n return \"%\" /* Modulo */;\r\n }\r\n function readText(scnr) {\r\n let buf = '';\r\n while (true) {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"}\" /* BraceRight */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n break;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else if (ch === CHAR_SP || ch === CHAR_LF) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else if (isPluralStart(scnr)) {\r\n break;\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n return buf;\r\n }\r\n function readNamedIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return name;\r\n }\r\n function readListIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let value = '';\r\n if (scnr.currentChar() === '-') {\r\n scnr.next();\r\n value += `-${getDigits(scnr)}`;\r\n }\r\n else {\r\n value += getDigits(scnr);\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return value;\r\n }\r\n function readLiteral(scnr) {\r\n skipSpaces(scnr);\r\n eat(scnr, `\\'`);\r\n let ch = '';\r\n let literal = '';\r\n const fn = (x) => x !== LITERAL_DELIMITER && x !== CHAR_LF;\r\n while ((ch = takeChar(scnr, fn))) {\r\n if (ch === '\\\\') {\r\n literal += readEscapeSequence(scnr);\r\n }\r\n else {\r\n literal += ch;\r\n }\r\n }\r\n const current = scnr.currentChar();\r\n if (current === CHAR_LF || current === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\r\n // TODO: Is it correct really?\r\n if (current === CHAR_LF) {\r\n scnr.next();\r\n eat(scnr, `\\'`);\r\n }\r\n return literal;\r\n }\r\n eat(scnr, `\\'`);\r\n return literal;\r\n }\r\n function readEscapeSequence(scnr) {\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case '\\\\':\r\n case `\\'`:\r\n scnr.next();\r\n return `\\\\${ch}`;\r\n case 'u':\r\n return readUnicodeEscapeSequence(scnr, ch, 4);\r\n case 'U':\r\n return readUnicodeEscapeSequence(scnr, ch, 6);\r\n default:\r\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\r\n eat(scnr, unicode);\r\n let sequence = '';\r\n for (let i = 0; i < digits; i++) {\r\n const ch = takeHexDigit(scnr);\r\n if (!ch) {\r\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\r\n break;\r\n }\r\n sequence += ch;\r\n }\r\n return `\\\\${unicode}${sequence}`;\r\n }\r\n function readInvalidIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let identifiers = '';\r\n const closure = (ch) => ch !== \"{\" /* BraceLeft */ &&\r\n ch !== \"}\" /* BraceRight */ &&\r\n ch !== CHAR_SP &&\r\n ch !== CHAR_LF;\r\n while ((ch = takeChar(scnr, closure))) {\r\n identifiers += ch;\r\n }\r\n return identifiers;\r\n }\r\n function readLinkedModifier(scnr) {\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n return name;\r\n }\r\n function readLinkedRefer(scnr) {\r\n const fn = (detect = false, buf) => {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_SP) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_LF) {\r\n buf += ch;\r\n scnr.next();\r\n return fn(detect, buf);\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n return fn(true, buf);\r\n }\r\n };\r\n return fn(false, '');\r\n }\r\n function readPlural(scnr) {\r\n skipSpaces(scnr);\r\n const plural = eat(scnr, \"|\" /* Pipe */);\r\n skipSpaces(scnr);\r\n return plural;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInPlaceholder(scnr, context) {\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n if (context.braceNest >= 1) {\r\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 2 /* BraceLeft */, \"{\" /* BraceLeft */);\r\n skipSpaces(scnr);\r\n context.braceNest++;\r\n return token;\r\n case \"}\" /* BraceRight */:\r\n if (context.braceNest > 0 &&\r\n context.currentType === 2 /* BraceLeft */) {\r\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n context.braceNest--;\r\n context.braceNest > 0 && skipSpaces(scnr);\r\n if (context.inLinked && context.braceNest === 0) {\r\n context.inLinked = false;\r\n }\r\n return token;\r\n case \"@\" /* LinkedAlias */:\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = readTokenInLinked(scnr, context) || getEndToken(context);\r\n context.braceNest = 0;\r\n return token;\r\n default:\r\n let validNamedIdentifier = true;\r\n let validListIdentifier = true;\r\n let validLiteral = true;\r\n if (isPluralStart(scnr)) {\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (context.braceNest > 0 &&\r\n (context.currentType === 5 /* Named */ ||\r\n context.currentType === 6 /* List */ ||\r\n context.currentType === 7 /* Literal */)) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n context.braceNest = 0;\r\n return readToken(scnr, context);\r\n }\r\n if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\r\n token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\r\n token = getToken(context, 6 /* List */, readListIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validLiteral = isLiteralStart(scnr, context))) {\r\n token = getToken(context, 7 /* Literal */, readLiteral(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\r\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\r\n token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));\r\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInLinked(scnr, context) {\r\n const { currentType } = context;\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n if ((currentType === 8 /* LinkedAlias */ ||\r\n currentType === 9 /* LinkedDot */ ||\r\n currentType === 12 /* LinkedModifier */ ||\r\n currentType === 10 /* LinkedDelimiter */) &&\r\n (ch === CHAR_LF || ch === CHAR_SP)) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n switch (ch) {\r\n case \"@\" /* LinkedAlias */:\r\n scnr.next();\r\n token = getToken(context, 8 /* LinkedAlias */, \"@\" /* LinkedAlias */);\r\n context.inLinked = true;\r\n return token;\r\n case \".\" /* LinkedDot */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 9 /* LinkedDot */, \".\" /* LinkedDot */);\r\n case \":\" /* LinkedDelimiter */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 10 /* LinkedDelimiter */, \":\" /* LinkedDelimiter */);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (isLinkedDotStart(scnr, context) ||\r\n isLinkedDelimiterStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return readTokenInLinked(scnr, context);\r\n }\r\n if (isLinkedModifierStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));\r\n }\r\n if (isLinkedReferStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n if (ch === \"{\" /* BraceLeft */) {\r\n // scan the placeholder\r\n return readTokenInPlaceholder(scnr, context) || token;\r\n }\r\n else {\r\n return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));\r\n }\r\n }\r\n if (currentType === 8 /* LinkedAlias */) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return readToken(scnr, context);\r\n }\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readToken(scnr, context) {\r\n let token = { type: 14 /* EOF */ };\r\n if (context.braceNest > 0) {\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n }\r\n if (context.inLinked) {\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n }\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n case \"}\" /* BraceRight */:\r\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\r\n scnr.next();\r\n return getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n case \"@\" /* LinkedAlias */:\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n const { isModulo, hasSpace } = detectModuloStart(scnr);\r\n if (isModulo) {\r\n return hasSpace\r\n ? getToken(context, 0 /* Text */, readText(scnr))\r\n : getToken(context, 4 /* Modulo */, readModulo(scnr));\r\n }\r\n if (isTextStart(scnr)) {\r\n return getToken(context, 0 /* Text */, readText(scnr));\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n function nextToken() {\r\n const { currentType, offset, startLoc, endLoc } = _context;\r\n _context.lastType = currentType;\r\n _context.lastOffset = offset;\r\n _context.lastStartLoc = startLoc;\r\n _context.lastEndLoc = endLoc;\r\n _context.offset = currentOffset();\r\n _context.startLoc = currentPosition();\r\n if (_scnr.currentChar() === EOF) {\r\n return getToken(_context, 14 /* EOF */);\r\n }\r\n return readToken(_scnr, _context);\r\n }\r\n return {\r\n nextToken,\r\n currentOffset,\r\n currentPosition,\r\n context\r\n };\r\n}\n\nconst ERROR_DOMAIN = 'parser';\r\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\r\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\r\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\r\n switch (match) {\r\n case `\\\\\\\\`:\r\n return `\\\\`;\r\n case `\\\\\\'`:\r\n return `\\'`;\r\n default: {\r\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\r\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\r\n return String.fromCodePoint(codePoint);\r\n }\r\n // invalid ...\r\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\r\n return '�';\r\n }\r\n }\r\n}\r\nfunction createParser(options = {}) {\r\n const location = options.location !== false;\r\n const { onError } = options;\r\n function emitError(tokenzer, code, start, offset, ...args) {\r\n const end = tokenzer.currentPosition();\r\n end.offset += offset;\r\n end.column += offset;\r\n if (onError) {\r\n const loc = createLocation(start, end);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function startNode(type, offset, loc) {\r\n const node = {\r\n type,\r\n start: offset,\r\n end: offset\r\n };\r\n if (location) {\r\n node.loc = { start: loc, end: loc };\r\n }\r\n return node;\r\n }\r\n function endNode(node, offset, pos, type) {\r\n node.end = offset;\r\n if (type) {\r\n node.type = type;\r\n }\r\n if (location && node.loc) {\r\n node.loc.end = pos;\r\n }\r\n }\r\n function parseText(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(3 /* Text */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseList(tokenizer, index) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(5 /* List */, offset, loc);\r\n node.index = parseInt(index, 10);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseNamed(tokenizer, key) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(4 /* Named */, offset, loc);\r\n node.key = key;\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLiteral(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(9 /* Literal */, offset, loc);\r\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinkedModifier(tokenizer) {\r\n const token = tokenizer.nextToken();\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\r\n const node = startNode(8 /* LinkedModifier */, offset, loc);\r\n if (token.type !== 12 /* LinkedModifier */) {\r\n // empty modifier\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\r\n node.value = '';\r\n endNode(node, offset, loc);\r\n return {\r\n nextConsumeToken: token,\r\n node\r\n };\r\n }\r\n // check token\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.value = token.value || '';\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node\r\n };\r\n }\r\n function parseLinkedKey(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinked(tokenizer) {\r\n const context = tokenizer.context();\r\n const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);\r\n let token = tokenizer.nextToken();\r\n if (token.type === 9 /* LinkedDot */) {\r\n const parsed = parseLinkedModifier(tokenizer);\r\n linkedNode.modifier = parsed.node;\r\n token = parsed.nextConsumeToken || tokenizer.nextToken();\r\n }\r\n // asset check token\r\n if (token.type !== 10 /* LinkedDelimiter */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n token = tokenizer.nextToken();\r\n // skip brace left\r\n if (token.type === 2 /* BraceLeft */) {\r\n token = tokenizer.nextToken();\r\n }\r\n switch (token.type) {\r\n case 11 /* LinkedKey */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseNamed(tokenizer, token.value || '');\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseList(tokenizer, token.value || '');\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\r\n break;\r\n default:\r\n // empty key\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\r\n const nextContext = tokenizer.context();\r\n const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);\r\n emptyLinkedKeyNode.value = '';\r\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\r\n linkedNode.key = emptyLinkedKeyNode;\r\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\r\n return {\r\n nextConsumeToken: token,\r\n node: linkedNode\r\n };\r\n }\r\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node: linkedNode\r\n };\r\n }\r\n function parseMessage(tokenizer) {\r\n const context = tokenizer.context();\r\n const startOffset = context.currentType === 1 /* Pipe */\r\n ? tokenizer.currentOffset()\r\n : context.offset;\r\n const startLoc = context.currentType === 1 /* Pipe */\r\n ? context.endLoc\r\n : context.startLoc;\r\n const node = startNode(2 /* Message */, startOffset, startLoc);\r\n node.items = [];\r\n let nextToken = null;\r\n do {\r\n const token = nextToken || tokenizer.nextToken();\r\n nextToken = null;\r\n switch (token.type) {\r\n case 0 /* Text */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseText(tokenizer, token.value || ''));\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseList(tokenizer, token.value || ''));\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseNamed(tokenizer, token.value || ''));\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseLiteral(tokenizer, token.value || ''));\r\n break;\r\n case 8 /* LinkedAlias */:\r\n const parsed = parseLinked(tokenizer);\r\n node.items.push(parsed.node);\r\n nextToken = parsed.nextConsumeToken || null;\r\n break;\r\n }\r\n } while (context.currentType !== 14 /* EOF */ &&\r\n context.currentType !== 1 /* Pipe */);\r\n // adjust message node loc\r\n const endOffset = context.currentType === 1 /* Pipe */\r\n ? context.lastOffset\r\n : tokenizer.currentOffset();\r\n const endLoc = context.currentType === 1 /* Pipe */\r\n ? context.lastEndLoc\r\n : tokenizer.currentPosition();\r\n endNode(node, endOffset, endLoc);\r\n return node;\r\n }\r\n function parsePlural(tokenizer, offset, loc, msgNode) {\r\n const context = tokenizer.context();\r\n let hasEmptyMessage = msgNode.items.length === 0;\r\n const node = startNode(1 /* Plural */, offset, loc);\r\n node.cases = [];\r\n node.cases.push(msgNode);\r\n do {\r\n const msg = parseMessage(tokenizer);\r\n if (!hasEmptyMessage) {\r\n hasEmptyMessage = msg.items.length === 0;\r\n }\r\n node.cases.push(msg);\r\n } while (context.currentType !== 14 /* EOF */);\r\n if (hasEmptyMessage) {\r\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseResource(tokenizer) {\r\n const context = tokenizer.context();\r\n const { offset, startLoc } = context;\r\n const msgNode = parseMessage(tokenizer);\r\n if (context.currentType === 14 /* EOF */) {\r\n return msgNode;\r\n }\r\n else {\r\n return parsePlural(tokenizer, offset, startLoc, msgNode);\r\n }\r\n }\r\n function parse(source) {\r\n const tokenizer = createTokenizer(source, assign({}, options));\r\n const context = tokenizer.context();\r\n const node = startNode(0 /* Resource */, context.offset, context.startLoc);\r\n if (location && node.loc) {\r\n node.loc.source = source;\r\n }\r\n node.body = parseResource(tokenizer);\r\n // assert whether achieved to EOF\r\n if (context.currentType !== 14 /* EOF */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n return { parse };\r\n}\r\nfunction getTokenCaption(token) {\r\n if (token.type === 14 /* EOF */) {\r\n return 'EOF';\r\n }\r\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\r\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\r\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\r\n) {\r\n const _context = {\r\n ast,\r\n helpers: new Set()\r\n };\r\n const context = () => _context;\r\n const helper = (name) => {\r\n _context.helpers.add(name);\r\n return name;\r\n };\r\n return { context, helper };\r\n}\r\nfunction traverseNodes(nodes, transformer) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n traverseNode(nodes[i], transformer);\r\n }\r\n}\r\nfunction traverseNode(node, transformer) {\r\n // TODO: if we need pre-hook of transform, should be implemented to here\r\n switch (node.type) {\r\n case 1 /* Plural */:\r\n traverseNodes(node.cases, transformer);\r\n transformer.helper(\"plural\" /* PLURAL */);\r\n break;\r\n case 2 /* Message */:\r\n traverseNodes(node.items, transformer);\r\n break;\r\n case 6 /* Linked */:\r\n const linked = node;\r\n traverseNode(linked.key, transformer);\r\n transformer.helper(\"linked\" /* LINKED */);\r\n transformer.helper(\"type\" /* TYPE */);\r\n break;\r\n case 5 /* List */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"list\" /* LIST */);\r\n break;\r\n case 4 /* Named */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"named\" /* NAMED */);\r\n break;\r\n }\r\n // TODO: if we need post-hook of transform, should be implemented to here\r\n}\r\n// transform AST\r\nfunction transform(ast, options = {} // eslint-disable-line\r\n) {\r\n const transformer = createTransformer(ast);\r\n transformer.helper(\"normalize\" /* NORMALIZE */);\r\n // traverse\r\n ast.body && traverseNode(ast.body, transformer);\r\n // set meta information\r\n const context = transformer.context();\r\n ast.helpers = Array.from(context.helpers);\r\n}\n\nfunction createCodeGenerator(ast, options) {\r\n const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\r\n const _context = {\r\n source: ast.loc.source,\r\n filename,\r\n code: '',\r\n column: 1,\r\n line: 1,\r\n offset: 0,\r\n map: undefined,\r\n breakLineCode,\r\n needIndent: _needIndent,\r\n indentLevel: 0\r\n };\r\n const context = () => _context;\r\n function push(code, node) {\r\n _context.code += code;\r\n }\r\n function _newline(n, withBreakLine = true) {\r\n const _breakLineCode = withBreakLine ? breakLineCode : '';\r\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\r\n }\r\n function indent(withNewLine = true) {\r\n const level = ++_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function deindent(withNewLine = true) {\r\n const level = --_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function newline() {\r\n _newline(_context.indentLevel);\r\n }\r\n const helper = (key) => `_${key}`;\r\n const needIndent = () => _context.needIndent;\r\n return {\r\n context,\r\n push,\r\n indent,\r\n deindent,\r\n newline,\r\n helper,\r\n needIndent\r\n };\r\n}\r\nfunction generateLinkedNode(generator, node) {\r\n const { helper } = generator;\r\n generator.push(`${helper(\"linked\" /* LINKED */)}(`);\r\n generateNode(generator, node.key);\r\n if (node.modifier) {\r\n generator.push(`, `);\r\n generateNode(generator, node.modifier);\r\n generator.push(`, _type`);\r\n }\r\n else {\r\n generator.push(`, undefined, _type`);\r\n }\r\n generator.push(`)`);\r\n}\r\nfunction generateMessageNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n generator.push(`${helper(\"normalize\" /* NORMALIZE */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.items.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.items[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push('])');\r\n}\r\nfunction generatePluralNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n if (node.cases.length > 1) {\r\n generator.push(`${helper(\"plural\" /* PLURAL */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.cases.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.cases[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push(`])`);\r\n }\r\n}\r\nfunction generateResource(generator, node) {\r\n if (node.body) {\r\n generateNode(generator, node.body);\r\n }\r\n else {\r\n generator.push('null');\r\n }\r\n}\r\nfunction generateNode(generator, node) {\r\n const { helper } = generator;\r\n switch (node.type) {\r\n case 0 /* Resource */:\r\n generateResource(generator, node);\r\n break;\r\n case 1 /* Plural */:\r\n generatePluralNode(generator, node);\r\n break;\r\n case 2 /* Message */:\r\n generateMessageNode(generator, node);\r\n break;\r\n case 6 /* Linked */:\r\n generateLinkedNode(generator, node);\r\n break;\r\n case 8 /* LinkedModifier */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 7 /* LinkedKey */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 5 /* List */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"list\" /* LIST */)}(${node.index}))`, node);\r\n break;\r\n case 4 /* Named */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"named\" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);\r\n break;\r\n case 9 /* Literal */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 3 /* Text */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n default:\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n throw new Error(`unhandled codegen node type: ${node.type}`);\r\n }\r\n }\r\n}\r\n// generate code from AST\r\nconst generate = (ast, options = {} // eslint-disable-line\r\n) => {\r\n const mode = isString(options.mode) ? options.mode : 'normal';\r\n const filename = isString(options.filename)\r\n ? options.filename\r\n : 'message.intl';\r\n const sourceMap = !!options.sourceMap;\r\n // prettier-ignore\r\n const breakLineCode = options.breakLineCode != null\r\n ? options.breakLineCode\r\n : mode === 'arrow'\r\n ? ';'\r\n : '\\n';\r\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\r\n const helpers = ast.helpers || [];\r\n const generator = createCodeGenerator(ast, {\r\n mode,\r\n filename,\r\n sourceMap,\r\n breakLineCode,\r\n needIndent\r\n });\r\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\r\n generator.indent(needIndent);\r\n if (helpers.length > 0) {\r\n generator.push(`const { ${helpers.map(s => `${s}: _${s}`).join(', ')} } = ctx`);\r\n generator.newline();\r\n }\r\n generator.push(`return `);\r\n generateNode(generator, ast);\r\n generator.deindent(needIndent);\r\n generator.push(`}`);\r\n const { code, map } = generator.context();\r\n return {\r\n ast,\r\n code,\r\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\r\n };\r\n};\n\nfunction baseCompile(source, options = {}) {\r\n const assignedOptions = assign({}, options);\r\n // parse source codes\r\n const parser = createParser(assignedOptions);\r\n const ast = parser.parse(source);\r\n // transform ASTs\r\n transform(ast, assignedOptions);\r\n // generate javascript codes\r\n return generate(ast, assignedOptions);\r\n}\n\nexport { CompileErrorCodes, ERROR_DOMAIN, LocationStub, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, errorMessages };\n","/*!\n * devtools-if v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst IntlifyDevToolsHooks = {\r\n I18nInit: 'i18n:init',\r\n FunctionTranslate: 'function:translate'\r\n};\n\nexport { IntlifyDevToolsHooks };\n","/*!\n * core-base v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { isObject, isString, isFunction, isNumber, isPlainObject, toDisplayString, isArray, format, isBoolean, assign, isRegExp, warn, escapeHtml, inBrowser, mark, measure, isEmptyObject, generateCodeFrame, generateFormatCacheKey, isDate, getGlobalThis } from '@intlify/shared';\nimport { defaultOnError, baseCompile, CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nimport { IntlifyDevToolsHooks } from '@intlify/devtools-if';\n\nconst pathStateMachine = [];\r\npathStateMachine[0 /* BEFORE_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [0 /* BEFORE_PATH */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[1 /* IN_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[2 /* BEFORE_IDENT */] = {\r\n [\"w\" /* WORKSPACE */]: [2 /* BEFORE_IDENT */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */]\r\n};\r\npathStateMachine[3 /* IN_IDENT */] = {\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */, 1 /* PUSH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */, 1 /* PUSH */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */, 1 /* PUSH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */, 1 /* PUSH */]\r\n};\r\npathStateMachine[4 /* IN_SUB_PATH */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */],\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [\r\n 4 /* IN_SUB_PATH */,\r\n 2 /* INC_SUB_PATH_DEPTH */\r\n ],\r\n [\"]\" /* RIGHT_BRACKET */]: [1 /* IN_PATH */, 3 /* PUSH_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */]\r\n};\r\npathStateMachine[5 /* IN_SINGLE_QUOTE */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */]\r\n};\r\npathStateMachine[6 /* IN_DOUBLE_QUOTE */] = {\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */]\r\n};\r\n/**\r\n * Check if an expression is a literal value.\r\n */\r\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\r\nfunction isLiteral(exp) {\r\n return literalValueRE.test(exp);\r\n}\r\n/**\r\n * Strip quotes from a string\r\n */\r\nfunction stripQuotes(str) {\r\n const a = str.charCodeAt(0);\r\n const b = str.charCodeAt(str.length - 1);\r\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\r\n}\r\n/**\r\n * Determine the type of a character in a keypath.\r\n */\r\nfunction getPathCharType(ch) {\r\n if (ch === undefined || ch === null) {\r\n return \"o\" /* END_OF_FAIL */;\r\n }\r\n const code = ch.charCodeAt(0);\r\n switch (code) {\r\n case 0x5b: // [\r\n case 0x5d: // ]\r\n case 0x2e: // .\r\n case 0x22: // \"\r\n case 0x27: // '\r\n return ch;\r\n case 0x5f: // _\r\n case 0x24: // $\r\n case 0x2d: // -\r\n return \"i\" /* IDENT */;\r\n case 0x09: // Tab (HT)\r\n case 0x0a: // Newline (LF)\r\n case 0x0d: // Return (CR)\r\n case 0xa0: // No-break space (NBSP)\r\n case 0xfeff: // Byte Order Mark (BOM)\r\n case 0x2028: // Line Separator (LS)\r\n case 0x2029: // Paragraph Separator (PS)\r\n return \"w\" /* WORKSPACE */;\r\n }\r\n return \"i\" /* IDENT */;\r\n}\r\n/**\r\n * Format a subPath, return its plain form if it is\r\n * a literal string or number. Otherwise prepend the\r\n * dynamic indicator (*).\r\n */\r\nfunction formatSubPath(path) {\r\n const trimmed = path.trim();\r\n // invalid leading 0\r\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\r\n return false;\r\n }\r\n return isLiteral(trimmed)\r\n ? stripQuotes(trimmed)\r\n : \"*\" /* ASTARISK */ + trimmed;\r\n}\r\n/**\r\n * Parse a string path into an array of segments\r\n */\r\nfunction parse(path) {\r\n const keys = [];\r\n let index = -1;\r\n let mode = 0 /* BEFORE_PATH */;\r\n let subPathDepth = 0;\r\n let c;\r\n let key; // eslint-disable-line\r\n let newChar;\r\n let type;\r\n let transition;\r\n let action;\r\n let typeMap;\r\n const actions = [];\r\n actions[0 /* APPEND */] = () => {\r\n if (key === undefined) {\r\n key = newChar;\r\n }\r\n else {\r\n key += newChar;\r\n }\r\n };\r\n actions[1 /* PUSH */] = () => {\r\n if (key !== undefined) {\r\n keys.push(key);\r\n key = undefined;\r\n }\r\n };\r\n actions[2 /* INC_SUB_PATH_DEPTH */] = () => {\r\n actions[0 /* APPEND */]();\r\n subPathDepth++;\r\n };\r\n actions[3 /* PUSH_SUB_PATH */] = () => {\r\n if (subPathDepth > 0) {\r\n subPathDepth--;\r\n mode = 4 /* IN_SUB_PATH */;\r\n actions[0 /* APPEND */]();\r\n }\r\n else {\r\n subPathDepth = 0;\r\n if (key === undefined) {\r\n return false;\r\n }\r\n key = formatSubPath(key);\r\n if (key === false) {\r\n return false;\r\n }\r\n else {\r\n actions[1 /* PUSH */]();\r\n }\r\n }\r\n };\r\n function maybeUnescapeQuote() {\r\n const nextChar = path[index + 1];\r\n if ((mode === 5 /* IN_SINGLE_QUOTE */ &&\r\n nextChar === \"'\" /* SINGLE_QUOTE */) ||\r\n (mode === 6 /* IN_DOUBLE_QUOTE */ &&\r\n nextChar === \"\\\"\" /* DOUBLE_QUOTE */)) {\r\n index++;\r\n newChar = '\\\\' + nextChar;\r\n actions[0 /* APPEND */]();\r\n return true;\r\n }\r\n }\r\n while (mode !== null) {\r\n index++;\r\n c = path[index];\r\n if (c === '\\\\' && maybeUnescapeQuote()) {\r\n continue;\r\n }\r\n type = getPathCharType(c);\r\n typeMap = pathStateMachine[mode];\r\n transition = typeMap[type] || typeMap[\"l\" /* ELSE */] || 8 /* ERROR */;\r\n // check parse error\r\n if (transition === 8 /* ERROR */) {\r\n return;\r\n }\r\n mode = transition[0];\r\n if (transition[1] !== undefined) {\r\n action = actions[transition[1]];\r\n if (action) {\r\n newChar = c;\r\n if (action() === false) {\r\n return;\r\n }\r\n }\r\n }\r\n // check parse finish\r\n if (mode === 7 /* AFTER_PATH */) {\r\n return keys;\r\n }\r\n }\r\n}\r\n// path token cache\r\nconst cache = new Map();\r\n/**\r\n * key-value message resolver\r\n *\r\n * @remarks\r\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveWithKeyValue(obj, path) {\r\n return isObject(obj) ? obj[path] : null;\r\n}\r\n/**\r\n * message resolver\r\n *\r\n * @remarks\r\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveValue(obj, path) {\r\n // check object\r\n if (!isObject(obj)) {\r\n return null;\r\n }\r\n // parse path\r\n let hit = cache.get(path);\r\n if (!hit) {\r\n hit = parse(path);\r\n if (hit) {\r\n cache.set(path, hit);\r\n }\r\n }\r\n // check hit\r\n if (!hit) {\r\n return null;\r\n }\r\n // resolve path value\r\n const len = hit.length;\r\n let last = obj;\r\n let i = 0;\r\n while (i < len) {\r\n const val = last[hit[i]];\r\n if (val === undefined) {\r\n return null;\r\n }\r\n last = val;\r\n i++;\r\n }\r\n return last;\r\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\r\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\r\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\r\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : values.join('');\r\nconst DEFAULT_INTERPOLATE = toDisplayString;\r\nfunction pluralDefault(choice, choicesLength) {\r\n choice = Math.abs(choice);\r\n if (choicesLength === 2) {\r\n // prettier-ignore\r\n return choice\r\n ? choice > 1\r\n ? 1\r\n : 0\r\n : 1;\r\n }\r\n return choice ? Math.min(choice, 2) : 0;\r\n}\r\nfunction getPluralIndex(options) {\r\n // prettier-ignore\r\n const index = isNumber(options.pluralIndex)\r\n ? options.pluralIndex\r\n : -1;\r\n // prettier-ignore\r\n return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\r\n ? isNumber(options.named.count)\r\n ? options.named.count\r\n : isNumber(options.named.n)\r\n ? options.named.n\r\n : index\r\n : index;\r\n}\r\nfunction normalizeNamed(pluralIndex, props) {\r\n if (!props.count) {\r\n props.count = pluralIndex;\r\n }\r\n if (!props.n) {\r\n props.n = pluralIndex;\r\n }\r\n}\r\nfunction createMessageContext(options = {}) {\r\n const locale = options.locale;\r\n const pluralIndex = getPluralIndex(options);\r\n const pluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? options.pluralRules[locale]\r\n : pluralDefault;\r\n const orgPluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? pluralDefault\r\n : undefined;\r\n const plural = (messages) => {\r\n return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\r\n };\r\n const _list = options.list || [];\r\n const list = (index) => _list[index];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _named = options.named || {};\r\n isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\r\n const named = (key) => _named[key];\r\n function message(key) {\r\n // prettier-ignore\r\n const msg = isFunction(options.messages)\r\n ? options.messages(key)\r\n : isObject(options.messages)\r\n ? options.messages[key]\r\n : false;\r\n return !msg\r\n ? options.parent\r\n ? options.parent.message(key) // resolve from parent messages\r\n : DEFAULT_MESSAGE\r\n : msg;\r\n }\r\n const _modifier = (name) => options.modifiers\r\n ? options.modifiers[name]\r\n : DEFAULT_MODIFIER;\r\n const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\r\n ? options.processor.normalize\r\n : DEFAULT_NORMALIZE;\r\n const interpolate = isPlainObject(options.processor) &&\r\n isFunction(options.processor.interpolate)\r\n ? options.processor.interpolate\r\n : DEFAULT_INTERPOLATE;\r\n const type = isPlainObject(options.processor) && isString(options.processor.type)\r\n ? options.processor.type\r\n : DEFAULT_MESSAGE_DATA_TYPE;\r\n const linked = (key, ...args) => {\r\n const [arg1, arg2] = args;\r\n let type = 'text';\r\n let modifier = '';\r\n if (args.length === 1) {\r\n if (isObject(arg1)) {\r\n modifier = arg1.modifier || modifier;\r\n type = arg1.type || type;\r\n }\r\n else if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n }\r\n else if (args.length === 2) {\r\n if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n if (isString(arg2)) {\r\n type = arg2 || type;\r\n }\r\n }\r\n let msg = message(key)(ctx);\r\n // The message in vnode resolved with linked are returned as an array by processor.nomalize\r\n if (type === 'vnode' && isArray(msg) && modifier) {\r\n msg = msg[0];\r\n }\r\n return modifier ? _modifier(modifier)(msg, type) : msg;\r\n };\r\n const ctx = {\r\n [\"list\" /* LIST */]: list,\r\n [\"named\" /* NAMED */]: named,\r\n [\"plural\" /* PLURAL */]: plural,\r\n [\"linked\" /* LINKED */]: linked,\r\n [\"message\" /* MESSAGE */]: message,\r\n [\"type\" /* TYPE */]: type,\r\n [\"interpolate\" /* INTERPOLATE */]: interpolate,\r\n [\"normalize\" /* NORMALIZE */]: normalize\r\n };\r\n return ctx;\r\n}\n\nlet devtools = null;\r\nfunction setDevToolsHook(hook) {\r\n devtools = hook;\r\n}\r\nfunction getDevToolsHook() {\r\n return devtools;\r\n}\r\nfunction initI18nDevTools(i18n, version, meta) {\r\n // TODO: queue if devtools is undefined\r\n devtools &&\r\n devtools.emit(IntlifyDevToolsHooks.I18nInit, {\r\n timestamp: Date.now(),\r\n i18n,\r\n version,\r\n meta\r\n });\r\n}\r\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(IntlifyDevToolsHooks.FunctionTranslate);\r\nfunction createDevToolsHook(hook) {\r\n return (payloads) => devtools && devtools.emit(hook, payloads);\r\n}\n\nconst CoreWarnCodes = {\r\n NOT_FOUND_KEY: 1,\r\n FALLBACK_TO_TRANSLATE: 2,\r\n CANNOT_FORMAT_NUMBER: 3,\r\n FALLBACK_TO_NUMBER_FORMAT: 4,\r\n CANNOT_FORMAT_DATE: 5,\r\n FALLBACK_TO_DATE_FORMAT: 6,\r\n __EXTEND_POINT__: 7\r\n};\r\n/** @internal */\r\nconst warnMessages = {\r\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\r\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\n/**\r\n * Fallback with simple implemenation\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a simple fallback algorithm.\r\n *\r\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\r\n) {\r\n // prettier-ignore\r\n return [...new Set([\r\n start,\r\n ...(isArray(fallback)\r\n ? fallback\r\n : isObject(fallback)\r\n ? Object.keys(fallback)\r\n : isString(fallback)\r\n ? [fallback]\r\n : [start])\r\n ])];\r\n}\r\n/**\r\n * Fallback with locale chain\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\r\n const startLocale = isString(start) ? start : DEFAULT_LOCALE;\r\n const context = ctx;\r\n if (!context.__localeChainCache) {\r\n context.__localeChainCache = new Map();\r\n }\r\n let chain = context.__localeChainCache.get(startLocale);\r\n if (!chain) {\r\n chain = [];\r\n // first block defined by start\r\n let block = [start];\r\n // while any intervening block found\r\n while (isArray(block)) {\r\n block = appendBlockToChain(chain, block, fallback);\r\n }\r\n // prettier-ignore\r\n // last block defined by default\r\n const defaults = isArray(fallback) || !isPlainObject(fallback)\r\n ? fallback\r\n : fallback['default']\r\n ? fallback['default']\r\n : null;\r\n // convert defaults to array\r\n block = isString(defaults) ? [defaults] : defaults;\r\n if (isArray(block)) {\r\n appendBlockToChain(chain, block, false);\r\n }\r\n context.__localeChainCache.set(startLocale, chain);\r\n }\r\n return chain;\r\n}\r\nfunction appendBlockToChain(chain, block, blocks) {\r\n let follow = true;\r\n for (let i = 0; i < block.length && isBoolean(follow); i++) {\r\n const locale = block[i];\r\n if (isString(locale)) {\r\n follow = appendLocaleToChain(chain, block[i], blocks);\r\n }\r\n }\r\n return follow;\r\n}\r\nfunction appendLocaleToChain(chain, locale, blocks) {\r\n let follow;\r\n const tokens = locale.split('-');\r\n do {\r\n const target = tokens.join('-');\r\n follow = appendItemToChain(chain, target, blocks);\r\n tokens.splice(-1, 1);\r\n } while (tokens.length && follow === true);\r\n return follow;\r\n}\r\nfunction appendItemToChain(chain, target, blocks) {\r\n let follow = false;\r\n if (!chain.includes(target)) {\r\n follow = true;\r\n if (target) {\r\n follow = target[target.length - 1] !== '!';\r\n const locale = target.replace(/!/g, '');\r\n chain.push(locale);\r\n if ((isArray(blocks) || isPlainObject(blocks)) &&\r\n blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n follow = blocks[locale];\r\n }\r\n }\r\n }\r\n return follow;\r\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Intlify core-base version\r\n * @internal\r\n */\r\nconst VERSION = '9.2.2';\r\nconst NOT_REOSLVED = -1;\r\nconst DEFAULT_LOCALE = 'en-US';\r\nconst MISSING_RESOLVE_VALUE = '';\r\nconst capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\r\nfunction getDefaultLinkedModifiers() {\r\n return {\r\n upper: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toUpperCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toUpperCase()\r\n : val;\r\n },\r\n lower: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toLowerCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toLowerCase()\r\n : val;\r\n },\r\n capitalize: (val, type) => {\r\n // prettier-ignore\r\n return (type === 'text' && isString(val)\r\n ? capitalize(val)\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? capitalize(val.children)\r\n : val);\r\n }\r\n };\r\n}\r\nlet _compiler;\r\nfunction registerMessageCompiler(compiler) {\r\n _compiler = compiler;\r\n}\r\nlet _resolver;\r\n/**\r\n * Register the message resolver\r\n *\r\n * @param resolver - A {@link MessageResolver} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerMessageResolver(resolver) {\r\n _resolver = resolver;\r\n}\r\nlet _fallbacker;\r\n/**\r\n * Register the locale fallbacker\r\n *\r\n * @param fallbacker - A {@link LocaleFallbacker} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerLocaleFallbacker(fallbacker) {\r\n _fallbacker = fallbacker;\r\n}\r\n// Additional Meta for Intlify DevTools\r\nlet _additionalMeta = null;\r\nconst setAdditionalMeta = (meta) => {\r\n _additionalMeta = meta;\r\n};\r\nconst getAdditionalMeta = () => _additionalMeta;\r\nlet _fallbackContext = null;\r\nconst setFallbackContext = (context) => {\r\n _fallbackContext = context;\r\n};\r\nconst getFallbackContext = () => _fallbackContext;\r\n// ID for CoreContext\r\nlet _cid = 0;\r\nfunction createCoreContext(options = {}) {\r\n // setup options\r\n const version = isString(options.version) ? options.version : VERSION;\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n isString(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const messages = isPlainObject(options.messages)\r\n ? options.messages\r\n : { [locale]: {} };\r\n const datetimeFormats = isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [locale]: {} }\r\n ;\r\n const numberFormats = isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [locale]: {} }\r\n ;\r\n const modifiers = assign({}, options.modifiers || {}, getDefaultLinkedModifiers());\r\n const pluralRules = options.pluralRules || {};\r\n const missing = isFunction(options.missing) ? options.missing : null;\r\n const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n const fallbackFormat = !!options.fallbackFormat;\r\n const unresolving = !!options.unresolving;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n const processor = isPlainObject(options.processor) ? options.processor : null;\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const escapeParameter = !!options.escapeParameter;\r\n const messageCompiler = isFunction(options.messageCompiler)\r\n ? options.messageCompiler\r\n : _compiler;\r\n const messageResolver = isFunction(options.messageResolver)\r\n ? options.messageResolver\r\n : _resolver || resolveWithKeyValue;\r\n const localeFallbacker = isFunction(options.localeFallbacker)\r\n ? options.localeFallbacker\r\n : _fallbacker || fallbackWithSimple;\r\n const fallbackContext = isObject(options.fallbackContext)\r\n ? options.fallbackContext\r\n : undefined;\r\n const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\r\n // setup internal options\r\n const internalOptions = options;\r\n const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\r\n ? internalOptions.__datetimeFormatters\r\n : new Map()\r\n ;\r\n const __numberFormatters = isObject(internalOptions.__numberFormatters)\r\n ? internalOptions.__numberFormatters\r\n : new Map()\r\n ;\r\n const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\r\n _cid++;\r\n const context = {\r\n version,\r\n cid: _cid,\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n modifiers,\r\n pluralRules,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackFormat,\r\n unresolving,\r\n postTranslation,\r\n processor,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageCompiler,\r\n messageResolver,\r\n localeFallbacker,\r\n fallbackContext,\r\n onWarn,\r\n __meta\r\n };\r\n {\r\n context.datetimeFormats = datetimeFormats;\r\n context.numberFormats = numberFormats;\r\n context.__datetimeFormatters = __datetimeFormatters;\r\n context.__numberFormatters = __numberFormatters;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n context.__v_emitter =\r\n internalOptions.__v_emitter != null\r\n ? internalOptions.__v_emitter\r\n : undefined;\r\n }\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n initI18nDevTools(context, version, __meta);\r\n }\r\n return context;\r\n}\r\n/** @internal */\r\nfunction isTranslateFallbackWarn(fallback, key) {\r\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\r\n}\r\n/** @internal */\r\nfunction isTranslateMissingWarn(missing, key) {\r\n return missing instanceof RegExp ? missing.test(key) : missing;\r\n}\r\n/** @internal */\r\nfunction handleMissing(context, key, locale, missingWarn, type) {\r\n const { missing, onWarn } = context;\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"missing\" /* MISSING */, {\r\n locale,\r\n key,\r\n type,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n if (missing !== null) {\r\n const ret = missing(context, locale, key, type);\r\n return isString(ret) ? ret : key;\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\r\n }\r\n return key;\r\n }\r\n}\r\n/** @internal */\r\nfunction updateFallbackLocale(ctx, locale, fallback) {\r\n const context = ctx;\r\n context.__localeChainCache = new Map();\r\n ctx.localeFallbacker(ctx, fallback, locale);\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\r\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\r\nfunction checkHtmlMessage(source, options) {\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n if (warnHtmlMessage && RE_HTML_TAG.test(source)) {\r\n warn(format(WARN_MESSAGE, { source }));\r\n }\r\n}\r\nconst defaultOnCacheKey = (source) => source;\r\nlet compileCache = Object.create(null);\r\nfunction clearCompileCache() {\r\n compileCache = Object.create(null);\r\n}\r\nfunction compileToFunction(source, options = {}) {\r\n {\r\n // check HTML message\r\n (process.env.NODE_ENV !== 'production') && checkHtmlMessage(source, options);\r\n // check caches\r\n const onCacheKey = options.onCacheKey || defaultOnCacheKey;\r\n const key = onCacheKey(source);\r\n const cached = compileCache[key];\r\n if (cached) {\r\n return cached;\r\n }\r\n // compile error detecting\r\n let occurred = false;\r\n const onError = options.onError || defaultOnError;\r\n options.onError = (err) => {\r\n occurred = true;\r\n onError(err);\r\n };\r\n // compile\r\n const { code } = baseCompile(source, options);\r\n // evaluate function\r\n const msg = new Function(`return ${code}`)();\r\n // if occurred compile error, don't cache\r\n return !occurred ? (compileCache[key] = msg) : msg;\r\n }\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst CoreErrorCodes = {\r\n INVALID_ARGUMENT: code,\r\n INVALID_DATE_ARGUMENT: inc(),\r\n INVALID_ISO_DATE_ARGUMENT: inc(),\r\n __EXTEND_POINT__: inc() // 18\r\n};\r\nfunction createCoreError(code) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\r\n}\r\n/** @internal */\r\nconst errorMessages = {\r\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\r\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\r\n 'Make sure your Date represents a valid date.',\r\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string'\r\n};\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\r\nconst isMessageFunction = (val) => isFunction(val);\r\n// implementation of `translate` function\r\nfunction translate(context, ...args) {\r\n const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\r\n const [key, options] = parseTranslateArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const escapeParameter = isBoolean(options.escapeParameter)\r\n ? options.escapeParameter\r\n : context.escapeParameter;\r\n const resolvedMessage = !!options.resolvedMessage;\r\n // prettier-ignore\r\n const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\r\n ? !isBoolean(options.default)\r\n ? options.default\r\n : (!messageCompiler ? () => key : key)\r\n : fallbackFormat // default by `fallbackFormat` option\r\n ? (!messageCompiler ? () => key : key)\r\n : '';\r\n const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n // escape params\r\n escapeParameter && escapeParams(options);\r\n // resolve message format\r\n // eslint-disable-next-line prefer-const\r\n let [formatScope, targetLocale, message] = !resolvedMessage\r\n ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\r\n : [\r\n key,\r\n locale,\r\n messages[locale] || {}\r\n ];\r\n // NOTE:\r\n // Fix to work around `ssrTransfrom` bug in Vite.\r\n // https://github.com/vitejs/vite/issues/4306\r\n // To get around this, use temporary variables.\r\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\r\n let format = formatScope;\r\n // if you use default message, set it as message format!\r\n let cacheBaseKey = key;\r\n if (!resolvedMessage &&\r\n !(isString(format) || isMessageFunction(format))) {\r\n if (enableDefaultMsg) {\r\n format = defaultMsgOrKey;\r\n cacheBaseKey = format;\r\n }\r\n }\r\n // checking message format and target locale\r\n if (!resolvedMessage &&\r\n (!(isString(format) || isMessageFunction(format)) ||\r\n !isString(targetLocale))) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\r\n warn(`The message format compilation is not supported in this build. ` +\r\n `Because message compiler isn't included. ` +\r\n `You need to pre-compilation all message format. ` +\r\n `So translate function return '${key}'.`);\r\n return key;\r\n }\r\n // setup compile error detecting\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n // compile message format\r\n const msg = !isMessageFunction(format)\r\n ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector)\r\n : format;\r\n // if occurred compile error, return the message format\r\n if (occurred) {\r\n return format;\r\n }\r\n // evaluate message with context\r\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\r\n const msgContext = createMessageContext(ctxOptions);\r\n const messaged = evaluateMessage(context, msg, msgContext);\r\n // if use post translation option, proceed it with handler\r\n const ret = postTranslation\r\n ? postTranslation(messaged, key)\r\n : messaged;\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n // prettier-ignore\r\n const payloads = {\r\n timestamp: Date.now(),\r\n key: isString(key)\r\n ? key\r\n : isMessageFunction(format)\r\n ? format.key\r\n : '',\r\n locale: targetLocale || (isMessageFunction(format)\r\n ? format.locale\r\n : ''),\r\n format: isString(format)\r\n ? format\r\n : isMessageFunction(format)\r\n ? format.source\r\n : '',\r\n message: ret\r\n };\r\n payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\r\n translateDevTools(payloads);\r\n }\r\n return ret;\r\n}\r\nfunction escapeParams(options) {\r\n if (isArray(options.list)) {\r\n options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\r\n }\r\n else if (isObject(options.named)) {\r\n Object.keys(options.named).forEach(key => {\r\n if (isString(options.named[key])) {\r\n options.named[key] = escapeHtml(options.named[key]);\r\n }\r\n });\r\n }\r\n}\r\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\r\n const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\r\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n let message = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'translate';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n message =\r\n messages[targetLocale] || {};\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-resolve-start';\r\n endTag = 'intlify-message-resolve-end';\r\n mark && mark(startTag);\r\n }\r\n if ((format = resolveValue(message, key)) === null) {\r\n // if null, resolve with object key path\r\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start && format) {\r\n emitter.emit(\"message-resolve\" /* MESSAGE_RESOLVE */, {\r\n type: \"message-resolve\" /* MESSAGE_RESOLVE */,\r\n key,\r\n message: format,\r\n time: end - start,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message resolve', startTag, endTag);\r\n }\r\n }\r\n if (isString(format) || isFunction(format))\r\n break;\r\n const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n key, targetLocale, missingWarn, type);\r\n if (missingRet !== key) {\r\n format = missingRet;\r\n }\r\n from = to;\r\n }\r\n return [format, targetLocale, message];\r\n}\r\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector) {\r\n const { messageCompiler, warnHtmlMessage } = context;\r\n if (isMessageFunction(format)) {\r\n const msg = format;\r\n msg.locale = msg.locale || targetLocale;\r\n msg.key = msg.key || key;\r\n return msg;\r\n }\r\n if (messageCompiler == null) {\r\n const msg = (() => format);\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n return msg;\r\n }\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-compilation-start';\r\n endTag = 'intlify-message-compilation-end';\r\n mark && mark(startTag);\r\n }\r\n const msg = messageCompiler(format, getCompileOptions(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, errorDetector));\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-compilation\" /* MESSAGE_COMPILATION */, {\r\n type: \"message-compilation\" /* MESSAGE_COMPILATION */,\r\n message: format,\r\n time: end - start,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message compilation', startTag, endTag);\r\n }\r\n }\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n msg.source = format;\r\n return msg;\r\n}\r\nfunction evaluateMessage(context, msg, msgCtx) {\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-evaluation-start';\r\n endTag = 'intlify-message-evaluation-end';\r\n mark && mark(startTag);\r\n }\r\n const messaged = msg(msgCtx);\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-evaluation\" /* MESSAGE_EVALUATION */, {\r\n type: \"message-evaluation\" /* MESSAGE_EVALUATION */,\r\n value: messaged,\r\n time: end - start,\r\n groupId: `${'translate'}:${msg.key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message evaluation', startTag, endTag);\r\n }\r\n }\r\n return messaged;\r\n}\r\n/** @internal */\r\nfunction parseTranslateArgs(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n if (!isString(arg1) && !isNumber(arg1) && !isMessageFunction(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n // prettier-ignore\r\n const key = isNumber(arg1)\r\n ? String(arg1)\r\n : isMessageFunction(arg1)\r\n ? arg1\r\n : arg1;\r\n if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isString(arg2)) {\r\n options.default = arg2;\r\n }\r\n else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\r\n options.named = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n options.list = arg2;\r\n }\r\n if (isNumber(arg3)) {\r\n options.plural = arg3;\r\n }\r\n else if (isString(arg3)) {\r\n options.default = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n assign(options, arg3);\r\n }\r\n return [key, options];\r\n}\r\nfunction getCompileOptions(context, locale, key, source, warnHtmlMessage, errorDetector) {\r\n return {\r\n warnHtmlMessage,\r\n onError: (err) => {\r\n errorDetector && errorDetector(err);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const message = `Message compilation error: ${err.message}`;\r\n const codeFrame = err.location &&\r\n generateCodeFrame(source, err.location.start.offset, err.location.end.offset);\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"compile-error\" /* COMPILE_ERROR */, {\r\n message: source,\r\n error: err.message,\r\n start: err.location && err.location.start.offset,\r\n end: err.location && err.location.end.offset,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\r\n }\r\n else {\r\n throw err;\r\n }\r\n },\r\n onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\r\n };\r\n}\r\nfunction getMessageContextOptions(context, locale, message, options) {\r\n const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\r\n const resolveMessage = (key) => {\r\n let val = resolveValue(message, key);\r\n // fallback to root context\r\n if (val == null && fallbackContext) {\r\n const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\r\n val = resolveValue(message, key);\r\n }\r\n if (isString(val)) {\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n const msg = compileMessageFormat(context, key, locale, val, key, errorDetector);\r\n return !occurred\r\n ? msg\r\n : NOOP_MESSAGE_FUNCTION;\r\n }\r\n else if (isMessageFunction(val)) {\r\n return val;\r\n }\r\n else {\r\n // TODO: should be implemented warning message\r\n return NOOP_MESSAGE_FUNCTION;\r\n }\r\n };\r\n const ctxOptions = {\r\n locale,\r\n modifiers,\r\n pluralRules,\r\n messages: resolveMessage\r\n };\r\n if (context.processor) {\r\n ctxOptions.processor = context.processor;\r\n }\r\n if (options.list) {\r\n ctxOptions.list = options.list;\r\n }\r\n if (options.named) {\r\n ctxOptions.named = options.named;\r\n }\r\n if (isNumber(options.plural)) {\r\n ctxOptions.pluralIndex = options.plural;\r\n }\r\n return ctxOptions;\r\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\r\nconst Availabilities = {\r\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\r\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\r\n};\n\n// implementation of `datetime` function\r\nfunction datetime(context, ...args) {\r\n const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __datetimeFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.DateTimeFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let datetimeFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'datetime format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n datetimeFormat =\r\n datetimeFormats[targetLocale] || {};\r\n format = datetimeFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __datetimeFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\r\n __datetimeFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst DATETIME_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'weekday',\r\n 'era',\r\n 'year',\r\n 'month',\r\n 'day',\r\n 'hour',\r\n 'minute',\r\n 'second',\r\n 'timeZoneName',\r\n 'formatMatcher',\r\n 'hour12',\r\n 'timeZone',\r\n 'dateStyle',\r\n 'timeStyle',\r\n 'calendar',\r\n 'dayPeriod',\r\n 'numberingSystem',\r\n 'hourCycle',\r\n 'fractionalSecondDigits'\r\n];\r\n/** @internal */\r\nfunction parseDateTimeArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n let value;\r\n if (isString(arg1)) {\r\n // Only allow ISO strings - other date formats are often supported,\r\n // but may cause different results in different browsers.\r\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\r\n if (!matches) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n // Some browsers can not parse the iso datetime separated by space,\r\n // this is a compromise solution by replace the 'T'/' ' with 'T'\r\n const dateTime = matches[3]\r\n ? matches[3].trim().startsWith('T')\r\n ? `${matches[1].trim()}${matches[3].trim()}`\r\n : `${matches[1].trim()}T${matches[3].trim()}`\r\n : matches[1].trim();\r\n value = new Date(dateTime);\r\n try {\r\n // This will fail if the date is not valid\r\n value.toISOString();\r\n }\r\n catch (e) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n }\r\n else if (isDate(arg1)) {\r\n if (isNaN(arg1.getTime())) {\r\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\r\n }\r\n value = arg1;\r\n }\r\n else if (isNumber(arg1)) {\r\n value = arg1;\r\n }\r\n else {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearDateTimeFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__datetimeFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__datetimeFormatters.delete(id);\r\n }\r\n}\n\n// implementation of `number` function\r\nfunction number(context, ...args) {\r\n const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __numberFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseNumberArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.NumberFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let numberFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'number format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n numberFormat =\r\n numberFormats[targetLocale] || {};\r\n format = numberFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __numberFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\r\n __numberFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst NUMBER_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'style',\r\n 'currency',\r\n 'currencyDisplay',\r\n 'currencySign',\r\n 'useGrouping',\r\n 'minimumIntegerDigits',\r\n 'minimumFractionDigits',\r\n 'maximumFractionDigits',\r\n 'minimumSignificantDigits',\r\n 'maximumSignificantDigits',\r\n 'compactDisplay',\r\n 'notation',\r\n 'signDisplay',\r\n 'unit',\r\n 'unitDisplay',\r\n 'roundingMode',\r\n 'roundingPriority',\r\n 'roundingIncrement',\r\n 'trailingZeroDisplay'\r\n];\r\n/** @internal */\r\nfunction parseNumberArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n if (!isNumber(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const value = arg1;\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearNumberFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__numberFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__numberFormatters.delete(id);\r\n }\r\n}\n\n// TODO: we could not exports for Node native ES Moudles yet...\r\n{\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n}\n\nexport { CoreErrorCodes, CoreWarnCodes, DATETIME_FORMAT_OPTIONS_KEYS, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, NUMBER_FORMAT_OPTIONS_KEYS, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getWarnMessage, handleMissing, initI18nDevTools, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale };\n","/**\n * Make a map and return a function for checking if a key\n * is in that map.\n * IMPORTANT: all calls of this function must be prefixed with\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\n * So that rollup can tree-shake them if necessary.\n */\nfunction makeMap(str, expectsLowerCase) {\n const map = Object.create(null);\n const list = str.split(',');\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\n}\n\n/**\n * dev only flag -> name mapping\n */\nconst PatchFlagNames = {\n [1 /* PatchFlags.TEXT */]: `TEXT`,\n [2 /* PatchFlags.CLASS */]: `CLASS`,\n [4 /* PatchFlags.STYLE */]: `STYLE`,\n [8 /* PatchFlags.PROPS */]: `PROPS`,\n [16 /* PatchFlags.FULL_PROPS */]: `FULL_PROPS`,\n [32 /* PatchFlags.HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,\n [64 /* PatchFlags.STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,\n [128 /* PatchFlags.KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,\n [256 /* PatchFlags.UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,\n [512 /* PatchFlags.NEED_PATCH */]: `NEED_PATCH`,\n [1024 /* PatchFlags.DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,\n [2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,\n [-1 /* PatchFlags.HOISTED */]: `HOISTED`,\n [-2 /* PatchFlags.BAIL */]: `BAIL`\n};\n\n/**\n * Dev only\n */\nconst slotFlagsText = {\n [1 /* SlotFlags.STABLE */]: 'STABLE',\n [2 /* SlotFlags.DYNAMIC */]: 'DYNAMIC',\n [3 /* SlotFlags.FORWARDED */]: 'FORWARDED'\n};\n\nconst GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\n 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\n 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';\nconst isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n // Split the content into individual lines but capture the newline sequence\n // that separated each line. This is important because the actual sequence is\n // needed to properly take into account the full line length for offset\n // comparison\n let lines = source.split(/(\\r?\\n)/);\n // Separate the lines and newline sequences into separate arrays for easier referencing\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count +=\n lines[i].length +\n ((newlineSequences[i] && newlineSequences[i].length) || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);\n const lineLength = lines[j].length;\n const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;\n if (j === i) {\n // push underline\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n }\n else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + '^'.repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item)\n ? parseStringStyle(item)\n : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n }\n else if (isString(value)) {\n return value;\n }\n else if (isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*.*?\\*\\//gs;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText\n .replace(styleCommentRE, '')\n .split(listDelimiterRE)\n .forEach(item => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = '';\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === 'number') {\n // only render valid values\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = '';\n if (isString(value)) {\n res = value;\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + ' ';\n }\n }\n }\n else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + ' ';\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\n// These tag configs are shared between compiler-dom and runtime-dom, so they\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\nconst HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +\n 'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +\n 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +\n 'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +\n 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +\n 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +\n 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +\n 'option,output,progress,select,textarea,details,dialog,menu,' +\n 'summary,template,blockquote,iframe,tfoot';\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\nconst SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +\n 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +\n 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +\n 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +\n 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +\n 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +\n 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +\n 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +\n 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +\n 'text,textPath,title,tspan,unknown,use,view';\nconst VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);\n\n/**\n * On the client we only need to offer special cases for boolean attributes that\n * have different names from their corresponding dom properties:\n * - itemscope -> N/A\n * - allowfullscreen -> allowFullscreen\n * - formnovalidate -> formNoValidate\n * - ismap -> isMap\n * - nomodule -> noModule\n * - novalidate -> noValidate\n * - readonly -> readOnly\n */\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);\n/**\n * The full list is needed during SSR to produce the correct initial markup.\n */\nconst isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +\n `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +\n `loop,open,required,reversed,scoped,seamless,` +\n `checked,muted,multiple,selected`);\n/**\n * Boolean attributes should be included if the value is truthy or ''.\n * e.g. `<select multiple>` compiles to `{ multiple: '' }`\n */\nfunction includeBooleanAttr(value) {\n return !!value || value === '';\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return (attrValidationCache[name] = !isUnsafe);\n}\nconst propsToAttrMap = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n};\n/**\n * Known attributes, this is used for stringification of runtime static nodes\n * so that we don't stringify bindings that cannot be set from HTML.\n * Don't also forget to allow `data-*` and `aria-*`!\n * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\n */\nconst isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +\n `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +\n `border,buffered,capture,challenge,charset,checked,cite,class,code,` +\n `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +\n `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +\n `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +\n `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +\n `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +\n `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +\n `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +\n `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +\n `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +\n `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +\n `start,step,style,summary,tabindex,target,title,translate,type,usemap,` +\n `value,width,wrap`);\n/**\n * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n */\nconst isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +\n `arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +\n `baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +\n `clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +\n `color-interpolation-filters,color-profile,color-rendering,` +\n `contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +\n `descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +\n `dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +\n `fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +\n `font-family,font-size,font-size-adjust,font-stretch,font-style,` +\n `font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +\n `glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +\n `gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +\n `horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +\n `k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +\n `lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +\n `marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +\n `mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +\n `name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +\n `overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +\n `pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +\n `pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +\n `preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +\n `rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +\n `restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +\n `specularConstant,specularExponent,speed,spreadMethod,startOffset,` +\n `stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +\n `strikethrough-position,strikethrough-thickness,string,stroke,` +\n `stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +\n `stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +\n `systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +\n `text-decoration,text-rendering,textLength,to,transform,transform-origin,` +\n `type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +\n `unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +\n `v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +\n `vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +\n `writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +\n `xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +\n `xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = '' + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = '';\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escaped = '&quot;';\n break;\n case 38: // &\n escaped = '&amp;';\n break;\n case 39: // '\n escaped = '&#39;';\n break;\n case 60: // <\n escaped = '&lt;';\n break;\n case 62: // >\n escaped = '&gt;';\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\n// https://www.w3.org/TR/html52/syntax.html#comments\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n return src.replace(commentStripRE, '');\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length)\n return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n /* istanbul ignore if: this if will probably never be called */\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if ((aHasKey && !bHasKey) ||\n (!aHasKey && bHasKey) ||\n !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex(item => looseEqual(item, val));\n}\n\n/**\n * For converting {{ interpolation }} values to displayed strings.\n * @private\n */\nconst toDisplayString = (val) => {\n return isString(val)\n ? val\n : val == null\n ? ''\n : isArray(val) ||\n (isObject(val) &&\n (val.toString === objectToString || !isFunction(val.toString)))\n ? JSON.stringify(val, replacer, 2)\n : String(val);\n};\nconst replacer = (_key, val) => {\n // can't use isRef here since @vue/shared has no deps\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n }\n else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {\n entries[`${key} =>`] = val;\n return entries;\n }, {})\n };\n }\n else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()]\n };\n }\n else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\n\nconst EMPTY_OBJ = (process.env.NODE_ENV !== 'production')\n ? Object.freeze({})\n : {};\nconst EMPTY_ARR = (process.env.NODE_ENV !== 'production') ? Object.freeze([]) : [];\nconst NOOP = () => { };\n/**\n * Always return false.\n */\nconst NO = () => false;\nconst onRE = /^on[^a-z]/;\nconst isOn = (key) => onRE.test(key);\nconst isModelListener = (key) => key.startsWith('onUpdate:');\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === '[object Map]';\nconst isSet = (val) => toTypeString(val) === '[object Set]';\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isSymbol = (val) => typeof val === 'symbol';\nconst isObject = (val) => val !== null && typeof val === 'object';\nconst isPromise = (val) => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n // extract \"RawType\" from strings like \"[object RawType]\"\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\nconst isIntegerKey = (key) => isString(key) &&\n key !== 'NaN' &&\n key[0] !== '-' &&\n '' + parseInt(key, 10) === key;\nconst isReservedProp = /*#__PURE__*/ makeMap(\n// the leading comma is intentional so empty string \"\" is also included\n',key,ref,ref_for,ref_key,' +\n 'onVnodeBeforeMount,onVnodeMounted,' +\n 'onVnodeBeforeUpdate,onVnodeUpdated,' +\n 'onVnodeBeforeUnmount,onVnodeUnmounted');\nconst isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');\nconst cacheStringFunction = (fn) => {\n const cache = Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-(\\w)/g;\n/**\n * @private\n */\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\n});\nconst hyphenateRE = /\\B([A-Z])/g;\n/**\n * @private\n */\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());\n/**\n * @private\n */\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\n/**\n * @private\n */\nconst toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\n// compare whether a value has changed, accounting for NaN.\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst toNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return (_globalThis ||\n (_globalThis =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {}));\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name)\n ? `__props.${name}`\n : `__props[${JSON.stringify(name)}]`;\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isObject, isOn, isPlainObject, isPromise, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","import { extend, isArray, toNumber, isMap, isIntegerKey, hasOwn, isSymbol, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index =\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n run(fn) {\n if (this.active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n }\n finally {\n activeEffectScope = currentEffectScope;\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this.active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`onScopeDispose() is called when there is no active effect scope` +\n ` to be associated with.`);\n }\n}\n\nconst createDep = (effects) => {\n const dep = new Set(effects);\n dep.w = 0;\n dep.n = 0;\n return dep;\n};\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({ deps }) => {\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].w |= trackOpBit; // set was tracked\n }\n }\n};\nconst finalizeDepMarkers = (effect) => {\n const { deps } = effect;\n if (deps.length) {\n let ptr = 0;\n for (let i = 0; i < deps.length; i++) {\n const dep = deps[i];\n if (wasTracked(dep) && !newTracked(dep)) {\n dep.delete(effect);\n }\n else {\n deps[ptr++] = dep;\n }\n // clear bits\n dep.w &= ~trackOpBit;\n dep.n &= ~trackOpBit;\n }\n deps.length = ptr;\n }\n};\n\nconst targetMap = new WeakMap();\n// The number of effects currently being tracked recursively.\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\n/**\n * The bitwise track markers support at most 30 levels of recursion.\n * This value is chosen to enable modern JS engines to use a SMI on all platforms.\n * When recursion depth is greater, fall back to using a full cleanup.\n */\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');\nconst MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');\nclass ReactiveEffect {\n constructor(fn, scheduler = null, scope) {\n this.fn = fn;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n this.parent = undefined;\n recordEffectScope(this, scope);\n }\n run() {\n if (!this.active) {\n return this.fn();\n }\n let parent = activeEffect;\n let lastShouldTrack = shouldTrack;\n while (parent) {\n if (parent === this) {\n return;\n }\n parent = parent.parent;\n }\n try {\n this.parent = activeEffect;\n activeEffect = this;\n shouldTrack = true;\n trackOpBit = 1 << ++effectTrackDepth;\n if (effectTrackDepth <= maxMarkerBits) {\n initDepMarkers(this);\n }\n else {\n cleanupEffect(this);\n }\n return this.fn();\n }\n finally {\n if (effectTrackDepth <= maxMarkerBits) {\n finalizeDepMarkers(this);\n }\n trackOpBit = 1 << --effectTrackDepth;\n activeEffect = this.parent;\n shouldTrack = lastShouldTrack;\n this.parent = undefined;\n if (this.deferStop) {\n this.stop();\n }\n }\n }\n stop() {\n // stopped while running itself - defer the cleanup\n if (activeEffect === this) {\n this.deferStop = true;\n }\n else if (this.active) {\n cleanupEffect(this);\n if (this.onStop) {\n this.onStop();\n }\n this.active = false;\n }\n }\n}\nfunction cleanupEffect(effect) {\n const { deps } = effect;\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].delete(effect);\n }\n deps.length = 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn);\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === undefined ? true : last;\n}\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, (depsMap = new Map()));\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, (dep = createDep()));\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { effect: activeEffect, target, type, key }\n : undefined;\n trackEffects(dep, eventInfo);\n }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n let shouldTrack = false;\n if (effectTrackDepth <= maxMarkerBits) {\n if (!newTracked(dep)) {\n dep.n |= trackOpBit; // set newly tracked\n shouldTrack = !wasTracked(dep);\n }\n }\n else {\n // Full cleanup mode.\n shouldTrack = !dep.has(activeEffect);\n }\n if (shouldTrack) {\n dep.add(activeEffect);\n activeEffect.deps.push(dep);\n if ((process.env.NODE_ENV !== 'production') && activeEffect.onTrack) {\n activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n // never been tracked\n return;\n }\n let deps = [];\n if (type === \"clear\" /* TriggerOpTypes.CLEAR */) {\n // collection being cleared\n // trigger all effects for target\n deps = [...depsMap.values()];\n }\n else if (key === 'length' && isArray(target)) {\n const newLength = toNumber(newValue);\n depsMap.forEach((dep, key) => {\n if (key === 'length' || key >= newLength) {\n deps.push(dep);\n }\n });\n }\n else {\n // schedule runs for SET | ADD | DELETE\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n // also run for iteration key on ADD | DELETE | Map.SET\n switch (type) {\n case \"add\" /* TriggerOpTypes.ADD */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n else if (isIntegerKey(key)) {\n // new index added to array -> length changes\n deps.push(depsMap.get('length'));\n }\n break;\n case \"delete\" /* TriggerOpTypes.DELETE */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\" /* TriggerOpTypes.SET */:\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { target, type, key, newValue, oldValue, oldTarget }\n : undefined;\n if (deps.length === 1) {\n if (deps[0]) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(deps[0], eventInfo);\n }\n else {\n triggerEffects(deps[0]);\n }\n }\n }\n else {\n const effects = [];\n for (const dep of deps) {\n if (dep) {\n effects.push(...dep);\n }\n }\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(createDep(effects), eventInfo);\n }\n else {\n triggerEffects(createDep(effects));\n }\n }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n // spread into array for stabilization\n const effects = isArray(dep) ? dep : [...dep];\n for (const effect of effects) {\n if (effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n for (const effect of effects) {\n if (!effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n}\nfunction triggerEffect(effect, debuggerEventExtraInfo) {\n if (effect !== activeEffect || effect.allowRecurse) {\n if ((process.env.NODE_ENV !== 'production') && effect.onTrigger) {\n effect.onTrigger(extend({ effect }, debuggerEventExtraInfo));\n }\n if (effect.scheduler) {\n effect.scheduler();\n }\n else {\n effect.run();\n }\n }\n}\n\nconst isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n/*#__PURE__*/\nObject.getOwnPropertyNames(Symbol)\n // ios10.x Object.getOwnPropertyNames(Symbol) can enumerate 'arguments' and 'caller'\n // but accessing them on Symbol leads to TypeError because Symbol is a strict mode\n // function\n .filter(key => key !== 'arguments' && key !== 'caller')\n .map(key => Symbol[key])\n .filter(isSymbol));\nconst get = /*#__PURE__*/ createGetter();\nconst shallowGet = /*#__PURE__*/ createGetter(false, true);\nconst readonlyGet = /*#__PURE__*/ createGetter(true);\nconst shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);\nconst arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\n instrumentations[key] = function (...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\" /* TrackOpTypes.GET */, i + '');\n }\n // we run the method using the original args first (which may be reactive)\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n // if that didn't work, run it again using raw values.\n return arr[key](...args.map(toRaw));\n }\n else {\n return res;\n }\n };\n });\n ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\n instrumentations[key] = function (...args) {\n pauseTracking();\n const res = toRaw(this)[key].apply(this, args);\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction createGetter(isReadonly = false, shallow = false) {\n return function get(target, key, receiver) {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */) {\n return shallow;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */ &&\n receiver ===\n (isReadonly\n ? shallow\n ? shallowReadonlyMap\n : readonlyMap\n : shallow\n ? shallowReactiveMap\n : reactiveMap).get(target)) {\n return target;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly) {\n track(target, \"get\" /* TrackOpTypes.GET */, key);\n }\n if (shallow) {\n return res;\n }\n if (isRef(res)) {\n // ref unwrapping - skip unwrap for Array + integer key.\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n // Convert returned value into a proxy as well. we do the isObject check\n // here to avoid invalid value warning. Also need to lazy access readonly\n // and reactive here to avoid circular dependency.\n return isReadonly ? readonly(res) : reactive(res);\n }\n return res;\n };\n}\nconst set = /*#__PURE__*/ createSetter();\nconst shallowSet = /*#__PURE__*/ createSetter(true);\nfunction createSetter(shallow = false) {\n return function set(target, key, value, receiver) {\n let oldValue = target[key];\n if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n return false;\n }\n if (!shallow) {\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key)\n ? Number(key) < target.length\n : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n // don't trigger if target is something up in the prototype chain of original\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n }\n return result;\n };\n}\nfunction deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\" /* TrackOpTypes.HAS */, key);\n }\n return result;\n}\nfunction ownKeys(target) {\n track(target, \"iterate\" /* TrackOpTypes.ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);\n return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n get,\n set,\n deleteProperty,\n has,\n ownKeys\n};\nconst readonlyHandlers = {\n get: readonlyGet,\n set(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n },\n deleteProperty(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n }\n};\nconst shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, {\n get: shallowGet,\n set: shallowSet\n});\n// Props handlers are special in the sense that it should not unwrap top-level\n// refs (in order to allow refs to be explicitly passed down), but should\n// retain the reactivity of the normal readonly object.\nconst shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, {\n get: shallowReadonlyGet\n});\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\n // of the value\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, key);\n }\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n }\n else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n }\n else if (target !== rawTarget) {\n // #3602 readonly(reactive(Map))\n // ensure that the nested reactive `Map` can do tracking for itself\n target.get(key);\n }\n}\nfunction has$1(key, isReadonly = false) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, key);\n }\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, rawKey);\n }\n return key === rawKey\n ? target.has(key)\n : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n !isReadonly && track(toRaw(target), \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return Reflect.get(target, 'size', target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, value, value);\n }\n return this;\n}\nfunction set$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : undefined;\n // forward the operation before queueing reactions\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = (process.env.NODE_ENV !== 'production')\n ? isMap(target)\n ? new Map(target)\n : new Set(target)\n : undefined;\n // forward the operation before queueing reactions\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\" /* TriggerOpTypes.CLEAR */, undefined, undefined, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return target.forEach((value, key) => {\n // important: make sure the callback is\n // 1. invoked with the reactive map as `this` and 3rd arg\n // 2. the value received should be a corresponding reactive/readonly.\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function (...args) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);\n const isKeyOnly = method === 'keys' && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly &&\n track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n // return a wrapped iterator which returns observed versions of the\n // values emitted from the real iterator\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done\n ? { value, done }\n : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function (...args) {\n if ((process.env.NODE_ENV !== 'production')) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\n }\n return type === \"delete\" /* TriggerOpTypes.DELETE */ ? false : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations = {\n get(key) {\n return get$1(this, key);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations = {\n get(key) {\n return get$1(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\n iteratorMethods.forEach(method => {\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\n });\n return [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n ];\n}\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow\n ? isReadonly\n ? shallowReadonlyInstrumentations\n : shallowInstrumentations\n : isReadonly\n ? readonlyInstrumentations\n : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */) {\n return target;\n }\n return Reflect.get(hasOwn(instrumentations, key) && key in target\n ? instrumentations\n : target, key, receiver);\n };\n}\nconst mutableCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n console.warn(`Reactive ${type} contains both the raw and reactive ` +\n `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +\n `which can lead to inconsistencies. ` +\n `Avoid differentiating between the raw and reactive versions ` +\n `of an object and only use the reactive version if possible.`);\n }\n}\n\nconst reactiveMap = new WeakMap();\nconst shallowReactiveMap = new WeakMap();\nconst readonlyMap = new WeakMap();\nconst shallowReadonlyMap = new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case 'Object':\n case 'Array':\n return 1 /* TargetType.COMMON */;\n case 'Map':\n case 'Set':\n case 'WeakMap':\n case 'WeakSet':\n return 2 /* TargetType.COLLECTION */;\n default:\n return 0 /* TargetType.INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value)\n ? 0 /* TargetType.INVALID */\n : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\n}\n/**\n * Creates a readonly copy of the original object. Note the returned copy is not\n * made reactive, but `readonly` can be called on an already reactive object.\n */\nfunction readonly(target) {\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);\n}\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n // target is already a Proxy, return it.\n // exception: calling readonly() on a reactive object\n if (target[\"__v_raw\" /* ReactiveFlags.RAW */] &&\n !(isReadonly && target[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */])) {\n return target;\n }\n // target already has corresponding Proxy\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n // only specific value types can be observed.\n const targetType = getTargetType(target);\n if (targetType === 0 /* TargetType.INVALID */) {\n return target;\n }\n const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n return !!(value && value[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref) {\n if (shouldTrack && activeEffect) {\n ref = toRaw(ref);\n if ((process.env.NODE_ENV !== 'production')) {\n trackEffects(ref.dep || (ref.dep = createDep()), {\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n else {\n trackEffects(ref.dep || (ref.dep = createDep()));\n }\n }\n}\nfunction triggerRefValue(ref, newVal) {\n ref = toRaw(ref);\n if (ref.dep) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(ref.dep, {\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value',\n newValue: newVal\n });\n }\n else {\n triggerEffects(ref.dep);\n }\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = undefined;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, newVal);\n }\n }\n}\nfunction triggerRef(ref) {\n triggerRefValue(ref, (process.env.NODE_ENV !== 'production') ? ref.value : void 0);\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs)\n ? objectWithRefs\n : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = undefined;\n this.__v_isRef = true;\n const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if ((process.env.NODE_ENV !== 'production') && !isProxy(object)) {\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === undefined ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n}\nfunction toRef(object, key, defaultValue) {\n const val = object[key];\n return isRef(val)\n ? val\n : new ObjectRefImpl(object, key, defaultValue);\n}\n\nvar _a;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this._setter = _setter;\n this.dep = undefined;\n this.__v_isRef = true;\n this[_a] = false;\n this._dirty = true;\n this.effect = new ReactiveEffect(getter, () => {\n if (!this._dirty) {\n this._dirty = true;\n triggerRefValue(this);\n }\n });\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */] = isReadonly;\n }\n get value() {\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n const self = toRaw(this);\n trackRefValue(self);\n if (self._dirty || !self._cacheable) {\n self._dirty = false;\n self._value = self.effect.run();\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n}\n_a = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = (process.env.NODE_ENV !== 'production')\n ? () => {\n console.warn('Write operation failed: computed value is readonly');\n }\n : NOOP;\n }\n else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if ((process.env.NODE_ENV !== 'production') && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nvar _a$1;\nconst tick = /*#__PURE__*/ Promise.resolve();\nconst queue = [];\nlet queued = false;\nconst scheduler = (fn) => {\n queue.push(fn);\n if (!queued) {\n queued = true;\n tick.then(flush);\n }\n};\nconst flush = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]();\n }\n queue.length = 0;\n queued = false;\n};\nclass DeferredComputedRefImpl {\n constructor(getter) {\n this.dep = undefined;\n this._dirty = true;\n this.__v_isRef = true;\n this[_a$1] = true;\n let compareTarget;\n let hasCompareTarget = false;\n let scheduled = false;\n this.effect = new ReactiveEffect(getter, (computedTrigger) => {\n if (this.dep) {\n if (computedTrigger) {\n compareTarget = this._value;\n hasCompareTarget = true;\n }\n else if (!scheduled) {\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\n scheduled = true;\n hasCompareTarget = false;\n scheduler(() => {\n if (this.effect.active && this._get() !== valueToCompare) {\n triggerRefValue(this);\n }\n scheduled = false;\n });\n }\n // chained upstream computeds are notified synchronously to ensure\n // value invalidation in case of sync access; normal effects are\n // deferred to be triggered in scheduler.\n for (const e of this.dep) {\n if (e.computed instanceof DeferredComputedRefImpl) {\n e.scheduler(true /* computedTrigger */);\n }\n }\n }\n this._dirty = true;\n });\n this.effect.computed = this;\n }\n _get() {\n if (this._dirty) {\n this._dirty = false;\n return (this._value = this.effect.run());\n }\n return this._value;\n }\n get value() {\n trackRefValue(this);\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n return toRaw(this)._get();\n }\n}\n_a$1 = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction deferredComputed(getter) {\n return new DeferredComputedRefImpl(getter);\n}\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, track, trigger, triggerRef, unref };\n","import { pauseTracking, resetTracking, isRef, toRaw, isShallow as isShallow$1, isReactive, ReactiveEffect, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, EffectScope, markRaw, proxyRefs, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, toNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, hasChanged, remove, isSet, isMap, isPlainObject, invokeArrayFns, isBuiltInDirective, capitalize, isGloballyWhitelisted, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, NO, normalizeClass, normalizeStyle } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn(msg, ...args) {\n if (!(process.env.NODE_ENV !== 'production'))\n return;\n // avoid props formatting or warn handler tracking deps that might be mutated\n // during patch, leading to infinite recursion.\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(appWarnHandler, instance, 11 /* ErrorCodes.APP_WARN_HANDLER */, [\n msg + args.join(''),\n instance && instance.proxy,\n trace\n .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)\n .join('\\n'),\n trace\n ]);\n }\n else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n /* istanbul ignore if */\n if (trace.length &&\n // avoid spamming console during tests\n !false) {\n warnArgs.push(`\\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n // we can't just use the stack because it will be incomplete during updates\n // that did not start from the root. Re-construct the parent chain using\n // instance parent pointers.\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n }\n else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\n/* istanbul ignore next */\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\n const close = `>` + postfix;\n return vnode.props\n ? [open, ...formatProps(vnode.props), close]\n : [open + close];\n}\n/* istanbul ignore next */\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach(key => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\n/* istanbul ignore next */\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n }\n else if (typeof value === 'number' ||\n typeof value === 'boolean' ||\n value == null) {\n return raw ? value : [`${key}=${value}`];\n }\n else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n }\n else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n }\n else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\" /* LifecycleHooks.SERVER_PREFETCH */]: 'serverPrefetch hook',\n [\"bc\" /* LifecycleHooks.BEFORE_CREATE */]: 'beforeCreate hook',\n [\"c\" /* LifecycleHooks.CREATED */]: 'created hook',\n [\"bm\" /* LifecycleHooks.BEFORE_MOUNT */]: 'beforeMount hook',\n [\"m\" /* LifecycleHooks.MOUNTED */]: 'mounted hook',\n [\"bu\" /* LifecycleHooks.BEFORE_UPDATE */]: 'beforeUpdate hook',\n [\"u\" /* LifecycleHooks.UPDATED */]: 'updated',\n [\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */]: 'beforeUnmount hook',\n [\"um\" /* LifecycleHooks.UNMOUNTED */]: 'unmounted hook',\n [\"a\" /* LifecycleHooks.ACTIVATED */]: 'activated hook',\n [\"da\" /* LifecycleHooks.DEACTIVATED */]: 'deactivated hook',\n [\"ec\" /* LifecycleHooks.ERROR_CAPTURED */]: 'errorCaptured hook',\n [\"rtc\" /* LifecycleHooks.RENDER_TRACKED */]: 'renderTracked hook',\n [\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */]: 'renderTriggered hook',\n [0 /* ErrorCodes.SETUP_FUNCTION */]: 'setup function',\n [1 /* ErrorCodes.RENDER_FUNCTION */]: 'render function',\n [2 /* ErrorCodes.WATCH_GETTER */]: 'watcher getter',\n [3 /* ErrorCodes.WATCH_CALLBACK */]: 'watcher callback',\n [4 /* ErrorCodes.WATCH_CLEANUP */]: 'watcher cleanup function',\n [5 /* ErrorCodes.NATIVE_EVENT_HANDLER */]: 'native event handler',\n [6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */]: 'component event handler',\n [7 /* ErrorCodes.VNODE_HOOK */]: 'vnode hook',\n [8 /* ErrorCodes.DIRECTIVE_HOOK */]: 'directive hook',\n [9 /* ErrorCodes.TRANSITION_HOOK */]: 'transition hook',\n [10 /* ErrorCodes.APP_ERROR_HANDLER */]: 'app errorHandler',\n [11 /* ErrorCodes.APP_WARN_HANDLER */]: 'app warnHandler',\n [12 /* ErrorCodes.FUNCTION_REF */]: 'ref function',\n [13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */]: 'async component loader',\n [14 /* ErrorCodes.SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +\n 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n }\n catch (err) {\n handleError(err, instance, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch(err => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n // the exposed instance is the render proxy to keep it consistent with 2.x\n const exposedInstance = instance.proxy;\n // in production the hook receives only the error code\n const errorInfo = (process.env.NODE_ENV !== 'production') ? ErrorTypeStrings[type] : type;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n // app-level handling\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(appErrorHandler, null, 10 /* ErrorCodes.APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if ((process.env.NODE_ENV !== 'production')) {\n const info = ErrorTypeStrings[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n // crash in dev by default so it's more noticeable\n if (throwInDev) {\n throw err;\n }\n else {\n console.error(err);\n }\n }\n else {\n // recover in prod to reduce the impact on end-user\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /*#__PURE__*/ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\n// #2768\n// Use binary-search to find a suitable position in the queue,\n// so that the queue maintains the increasing order of job's id,\n// which can prevent the job from being skipped and also can avoid repeated patching.\nfunction findInsertionIndex(id) {\n // the start index should be `flushIndex + 1`\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = (start + end) >>> 1;\n const middleJobId = getId(queue[middle]);\n middleJobId < id ? (start = middle + 1) : (end = middle);\n }\n return start;\n}\nfunction queueJob(job) {\n // the dedupe search uses the startIndex argument of Array.includes()\n // by default the search index includes the current job that is being run\n // so it cannot recursively trigger itself again.\n // if the job is a watch() callback, the search will start with a +1 index to\n // allow it recursively trigger itself - it is the user's responsibility to\n // ensure it doesn't end up in an infinite loop.\n if (!queue.length ||\n !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {\n if (job.id == null) {\n queue.push(job);\n }\n else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs ||\n !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {\n pendingPostFlushCbs.push(cb);\n }\n }\n else {\n // if cb is an array, it is a component lifecycle hook which can only be\n // triggered by a job, which is already deduped in the main queue, so\n // we can skip duplicate check here to improve perf\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(seen, \n// if currently flushing, skip the current job itself\ni = isFlushing ? flushIndex + 1 : 0) {\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if ((process.env.NODE_ENV !== 'production') && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n // #1947 already has active queue, nested flushPostFlushCbs call\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if ((process.env.NODE_ENV !== 'production') &&\n checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child so its render effect will have smaller\n // priority number)\n // 2. If a component is unmounted during a parent component's update,\n // its update can be skipped.\n queue.sort(comparator);\n // conditional usage of checkRecursiveUpdate must be determined out of\n // try ... catch block since Rollup by default de-optimizes treeshaking\n // inside try-catch. This can leave all warning code unshaked. Although\n // they would get eventually shaken by a minifier like terser, some minifiers\n // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\n const check = (process.env.NODE_ENV !== 'production')\n ? (job) => checkRecursiveUpdates(seen, job)\n : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if ((process.env.NODE_ENV !== 'production') && check(job)) {\n continue;\n }\n // console.log(`running:`, job.id)\n callWithErrorHandling(job, null, 14 /* ErrorCodes.SCHEDULER */);\n }\n }\n }\n finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n // some postFlushCb queued jobs!\n // keep flushing until it drains.\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n }\n else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +\n `This means you have a reactive effect that is mutating its own ` +\n `dependencies and thus recursively triggering itself. Possible sources ` +\n `include component template, render function, updated hook or ` +\n `watcher source function.`);\n return true;\n }\n else {\n seen.set(fn, count + 1);\n }\n }\n}\n\n/* eslint-disable no-restricted-globals */\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = new Set();\n// Expose the HMR runtime on the global object\n// This makes it entirely tree-shakable without polluting the exports and makes\n// it easier to be used in toolings like vue-loader\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\n// to be set so that its instances can be registered / removed.\nif ((process.env.NODE_ENV !== 'production')) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n // update initial record (for not-yet-rendered component)\n record.initialDef.render = newRender;\n [...record.instances].forEach(instance => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n // this flag forces child components with slot content to update\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n // update initial def (for not-yet-rendered components)\n updateComponentDef(record.initialDef, newComp);\n // create a snapshot which avoids the set being mutated during updates\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n // 1. Update existing comp definition to match new one\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n // 2. mark definition dirty. This forces the renderer to replace the\n // component on patch.\n hmrDirtyComponents.add(oldComp);\n }\n // 3. invalidate options resolution cache\n instance.appContext.optionsCache.delete(instance.type);\n // 4. actually update\n if (instance.ceReload) {\n // custom element\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n }\n else if (instance.parent) {\n // 4. Force the parent instance to re-render. This will cause all updated\n // components to be unmounted and re-mounted. Queue the update so that we\n // don't end up forcing the same parent to re-render multiple times.\n queueJob(instance.parent.update);\n }\n else if (instance.appContext.reload) {\n // root instance mounted via createApp() has a reload method\n instance.appContext.reload();\n }\n else if (typeof window !== 'undefined') {\n // root instance inside tree created via raw render(). Force reload.\n window.location.reload();\n }\n else {\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\n }\n }\n // 5. make sure to cleanup dirty hmr components after update\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== '__file' && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n }\n catch (e) {\n console.error(e);\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\n `Full reload required.`);\n }\n };\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n }\n else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n }\n else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== 'undefined' &&\n // some envs mock window but not fully\n window.HTMLElement &&\n // also exclude jsdom\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n // clear buffer after 3s - the user probably doesn't have devtools installed\n // at all, and keeping the buffer will cause memory leaks (#4738)\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3000);\n }\n else {\n // non-browser env, assume not installed\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit(\"app:init\" /* DevtoolsHooks.APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit(\"app:unmount\" /* DevtoolsHooks.APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* DevtoolsHooks.COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = \n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* DevtoolsHooks.COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* DevtoolsHooks.COMPONENT_REMOVED */);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools &&\n typeof devtools.cleanupBuffer === 'function' &&\n // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\n };\n}\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* DevtoolsHooks.PERFORMANCE_START */);\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* DevtoolsHooks.PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit(\"component:emit\" /* DevtoolsHooks.COMPONENT_EMIT */, component.appContext.app, component, event, params);\n}\n\nfunction emit$1(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if ((process.env.NODE_ENV !== 'production')) {\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) &&\n !(false )) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\n }\n }\n else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith('update:');\n // for v-model update:xxx events, apply modifiers on args\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map(a => (isString(a) ? a.trim() : a));\n }\n if (number) {\n args = rawArgs.map(toNumber);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\n `Note that HTML attributes are case-insensitive and you cannot use ` +\n `v-on to listen to camelCase events when using in-DOM templates. ` +\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\n }\n }\n let handlerName;\n let handler = props[(handlerName = toHandlerKey(event))] ||\n // also try camelCase event handler (#2249)\n props[(handlerName = toHandlerKey(camelize(event)))];\n // for v-model update:xxx events, also trigger kebab-case equivalent\n // for props passed via kebab-case\n if (!handler && isModelListener) {\n handler = props[(handlerName = toHandlerKey(hyphenate(event)))];\n }\n if (handler) {\n callWithAsyncErrorHandling(handler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n }\n else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== undefined) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach(key => (normalized[key] = null));\n }\n else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\n// Check if an incoming prop key is a declared emit event listener.\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\n// both considered matched listeners.\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, '');\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\n hasOwn(options, hyphenate(key)) ||\n hasOwn(options, key));\n}\n\n/**\n * mark the current rendering instance for asset resolution (e.g.\n * resolveComponent, resolveDirective) during render\n */\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\n/**\n * Note: rendering calls maybe nested. The function returns the parent rendering\n * instance if present, which should be restored after the render is done:\n *\n * ```js\n * const prev = setCurrentRenderingInstance(i)\n * // ...render\n * setCurrentRenderingInstance(prev)\n * ```\n */\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = (instance && instance.type.__scopeId) || null;\n return prev;\n}\n/**\n * Set scope id when creating hoisted vnodes.\n * @private compiler helper\n */\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\n/**\n * Technically we no longer need this after 3.0.8 but we need to keep the same\n * API for backwards compat w/ code generated by compilers.\n * @private\n */\nfunction popScopeId() {\n currentScopeId = null;\n}\n/**\n * Only for backwards compat\n * @private\n */\nconst withScopeId = (_id) => withCtx;\n/**\n * Wrap a slot function to memoize current rendering instance\n * @private compiler helper\n */\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\n) {\n if (!ctx)\n return fn;\n // already normalized\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n // If a user calls a compiled slot inside a template expression (#1745), it\n // can mess up block tracking, so by default we disable block tracking and\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\n // This isn't necessary if rendering a compiled `<slot>`, so we flip the\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n }\n finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n // mark normalized to avoid duplicated wrapping\n renderFnWithContext._n = true;\n // mark this as compiled by default\n // this is used in vnode.ts -> normalizeChildren() to set the slot\n // rendering flag.\n renderFnWithContext._c = true;\n // disable block tracking by default\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\n/**\n * dev only flag to track whether $attrs was used during render.\n * If $attrs was used during render then the warning for failed attrs\n * fallthrough can be suppressed.\n */\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) {\n // withProxy is a proxy with a different `has` trap only for\n // runtime-compiled render functions using `with` block.\n const proxyToUse = withProxy || proxy;\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n fallthroughAttrs = attrs;\n }\n else {\n // functional\n const render = Component;\n // in dev, mark attrs accessed if optional props (attrs === props)\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(render.length > 1\n ? render(props, (process.env.NODE_ENV !== 'production')\n ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n }\n : { attrs, slots, emit })\n : render(props, null /* we know it doesn't need it */));\n fallthroughAttrs = Component.props\n ? attrs\n : getFunctionalFallthrough(attrs);\n }\n }\n catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1 /* ErrorCodes.RENDER_FUNCTION */);\n result = createVNode(Comment);\n }\n // attr merging\n // in dev mode, comments are preserved, and it's possible for a template\n // to have comments along side the root element which makes it a fragment\n let root = result;\n let setRoot = undefined;\n if ((process.env.NODE_ENV !== 'production') &&\n result.patchFlag > 0 &&\n result.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 6 /* ShapeFlags.COMPONENT */)) {\n if (propsOptions && keys.some(isModelListener)) {\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\n // prop, it indicates this component expects to handle v-model and\n // it should not fallthrough.\n // related: #1543, #1643, #1989\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n }\n root = cloneVNode(root, fallthroughAttrs);\n }\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n // ignore v-model handlers when they fail to fallthrough\n if (!isModelListener(key)) {\n // remove `on`, lowercase first letter to reflect event casing\n // accurately\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n }\n else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn(`Extraneous non-props attributes (` +\n `${extraAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes.`);\n }\n if (eventAttrs.length) {\n warn(`Extraneous non-emits event listeners (` +\n `${eventAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes. ` +\n `If the listener is intended to be a component custom event listener only, ` +\n `declare it using the \"emits\" option.`);\n }\n }\n }\n }\n // inherit directives\n if (vnode.dirs) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Runtime directive used on component with non-element root node. ` +\n `The directives will not function as intended.`);\n }\n // clone before mutating since the root may be a hoisted vnode\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n // inherit transition data\n if (vnode.transition) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Component inside <Transition> renders non-element root node ` +\n `that cannot be animated.`);\n }\n root.transition = vnode.transition;\n }\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\n setRoot(root);\n }\n else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\n/**\n * dev only\n * In dev mode, template root level comments are rendered, which turns the\n * template into a fragment root, but we need to locate the single element\n * root for attrs and scope id processing.\n */\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren);\n if (!childRoot) {\n return [vnode, undefined];\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n }\n else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n // ignore user comment\n if (child.type !== Comment || child.children === 'v-if') {\n if (singleRoot) {\n // has more than 1 non-comment child, return now\n return;\n }\n else {\n singleRoot = child;\n }\n }\n }\n else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === 'class' || key === 'style' || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return (vnode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 1 /* ShapeFlags.ELEMENT */) ||\n vnode.type === Comment // potential v-if branch switch\n );\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n // Parent component's render function was hot-updated. Since this may have\n // caused the child component's slots content to have changed, we need to\n // force the child to update as well.\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n // force child update for runtime directive or transition on component vnode.\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024 /* PatchFlags.DYNAMIC_SLOTS */) {\n // slot content that references values that might have changed,\n // e.g. in a v-for\n return true;\n }\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n if (!prevProps) {\n return !!nextProps;\n }\n // presence of this flag indicates props are always non-null\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n else if (patchFlag & 8 /* PatchFlags.PROPS */) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n }\n else {\n // this path is only taken by manually written render functions\n // so presence of any children leads to a forced update\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\n) {\n while (parent && parent.subTree === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\n// Suspense exposes a component-like API, and is treated like a component\n// in the compiler, but internally it's a special built-in type that hooks\n// directly into the renderer.\nconst SuspenseImpl = {\n name: 'Suspense',\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \n // platform-specific impl passed from renderer\n rendererInternals) {\n if (n1 == null) {\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n else {\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\n// Force-casted public typing for h and TSX props inference\nconst Suspense = (SuspenseImpl\n );\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n const { p: patch, o: { createElement } } = rendererInternals;\n const hiddenContainer = createElement('div');\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\n // start mounting the content subtree in an off-dom container\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\n // now check if we have encountered any async deps\n if (suspense.deps > 0) {\n // has async\n // invoke @fallback event\n triggerEvent(vnode, 'onPending');\n triggerEvent(vnode, 'onFallback');\n // mount the fallback tree\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds);\n setActiveBranch(suspense, vnode.ssFallback);\n }\n else {\n // Suspense has no async deps. Just resolve.\n suspense.resolve();\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = (n2.suspense = n1.suspense);\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n // same root type but content may have changed.\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else if (isInFallback) {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else {\n // toggled before pending tree is resolved\n suspense.pendingId++;\n if (isHydrating) {\n // if toggled before hydration is finished, the current DOM tree is\n // no longer valid. set it as the active branch so it will be unmounted\n // when resolved\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n }\n else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n // increment pending ID. this is used to invalidate async callbacks\n // reset suspense state\n suspense.deps = 0;\n // discard effects from pending branch\n suspense.effects.length = 0;\n // discard previous container\n suspense.hiddenContainer = createElement('div');\n if (isInFallback) {\n // already in fallback state\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // toggled \"back\" to current active branch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n // force resolve\n suspense.resolve(true);\n }\n else {\n // switched to a 3rd branch\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n }\n else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // root did not change, just normal patch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newBranch);\n }\n else {\n // root node toggled\n // invoke @pending event\n triggerEvent(n2, 'onPending');\n // mount pending branch in off-dom container\n suspense.pendingBranch = newBranch;\n suspense.pendingId++;\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n // incoming branch has no async deps, resolve now.\n suspense.resolve();\n }\n else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n }\n else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\n hasWarned = true;\n // @ts-ignore `console.info` cannot be null error\n console[console.info ? 'info' : 'log'](`<Suspense> is an experimental feature and its API will likely change.`);\n }\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\n const timeout = toNumber(vnode.props && vnode.props.timeout);\n const suspense = {\n vnode,\n parent,\n parentComponent,\n isSVG,\n container,\n hiddenContainer,\n anchor,\n deps: 0,\n pendingId: 0,\n timeout: typeof timeout === 'number' ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: true,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false) {\n if ((process.env.NODE_ENV !== 'production')) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(`suspense.resolve() is called without a pending branch.`);\n }\n if (suspense.isUnmounted) {\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\n }\n }\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n }\n else if (!resume) {\n const delayEnter = activeBranch &&\n pendingBranch.transition &&\n pendingBranch.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n };\n }\n // this is initial anchor on mount\n let { anchor } = suspense;\n // unmount current active tree\n if (activeBranch) {\n // if the fallback tree was mounted, it may have been moved\n // as part of a parent suspense. get the latest anchor for insertion\n anchor = next(activeBranch);\n unmount(activeBranch, parentComponent, suspense, true);\n }\n if (!delayEnter) {\n // move content from off-dom container to actual container\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n // flush buffered effects\n // check if there is a pending parent suspense\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n // found a pending parent suspense, merge buffered post jobs\n // into that parent\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n // no pending parent suspense, flush all jobs\n if (!hasUnresolvedAncestor) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n // invoke @resolve event\n triggerEvent(vnode, 'onResolve');\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\n // invoke @fallback event\n triggerEvent(vnode, 'onFallback');\n const anchor = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n // mount the fallback tree\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n // unmount current active branch\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\n true // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container, anchor, type) {\n suspense.activeBranch &&\n move(suspense.activeBranch, container, anchor, type);\n suspense.container = container;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance\n .asyncDep.catch(err => {\n handleError(err, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n })\n .then(asyncSetupResult => {\n // retry when the setup() promise resolves.\n // component may have been unmounted before resolve.\n if (instance.isUnmounted ||\n suspense.isUnmounted ||\n suspense.pendingId !== instance.suspenseId) {\n return;\n }\n // retry from this component\n instance.asyncResolved = true;\n const { vnode } = instance;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(vnode);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n // vnode may have been replaced if an update happened before the\n // async dep is resolved.\n vnode.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(instance, vnode, \n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el), \n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode.el);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n // only decrease deps count if suspense is not already resolved\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\n }\n if (suspense.pendingBranch) {\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n /* eslint-disable no-restricted-globals */\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\n // there are two possible scenarios for server-rendered suspense:\n // - success: ssr content should be fully resolved\n // - failure: ssr content should be the fallback branch.\n // however, on the client we don't really know if it has failed or not\n // attempt to hydrate the DOM assuming it has succeeded, but we still\n // need to construct a suspense boundary first\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\n if (suspense.deps === 0) {\n suspense.resolve();\n }\n return result;\n /* eslint-enable no-restricted-globals */\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */;\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\n vnode.ssFallback = isSlotChildren\n ? normalizeSuspenseSlot(children.fallback)\n : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n // disableTracking: false\n // allow block tracking for compiled slots\n // (see ./componentRenderContext.ts)\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\n warn(`<Suspense> slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter(c => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n }\n else {\n suspense.effects.push(fn);\n }\n }\n else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n const el = (vnode.el = branch.el);\n // in case suspense is the root node of a component,\n // recursively update the HOC el\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`provide() can only be used inside setup().`);\n }\n }\n else {\n let provides = currentInstance.provides;\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n // TS doesn't allow symbol as index type\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n const instance = currentInstance || currentRenderingInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n const provides = instance.parent == null\n ? instance.vnode.appContext && instance.vnode.appContext.provides\n : instance.parent.provides;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance.proxy)\n : defaultValue;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`injection \"${String(key)}\" not found.`);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`inject() can only be used inside setup() or functional components.`);\n }\n}\n\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nconst INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(cb)) {\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` +\n `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` +\n `supports \\`watch(source, cb, options?) signature.`);\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {\n if ((process.env.NODE_ENV !== 'production') && !cb) {\n if (immediate !== undefined) {\n warn(`watch() \"immediate\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n if (deep !== undefined) {\n warn(`watch() \"deep\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n }\n const warnInvalidSource = (s) => {\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +\n `a reactive object, or an array of these types.`);\n };\n const instance = currentInstance;\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow$1(source);\n }\n else if (isReactive(source)) {\n getter = () => source;\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(s => isReactive(s) || isShallow$1(s));\n getter = () => source.map(s => {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n return traverse(s);\n }\n else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(s);\n }\n });\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = () => callWithErrorHandling(source, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n // no cb -> simple effect\n getter = () => {\n if (instance && instance.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(source, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [onCleanup]);\n };\n }\n }\n else {\n getter = NOOP;\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4 /* ErrorCodes.WATCH_CLEANUP */);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager or sync flush\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = NOOP;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n if (flush === 'sync') {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n }\n else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource\n ? new Array(source.length).fill(INITIAL_WATCHER_VALUE)\n : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n const newValue = effect.run();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some((v, i) => hasChanged(v, oldValue[i]))\n : hasChanged(newValue, oldValue)) ||\n (false )) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE\n ? undefined\n : (isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE)\n ? []\n : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n effect.run();\n }\n };\n // important: mark the job as a watcher callback so that scheduler knows\n // it is allowed to self-trigger (#1727)\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === 'sync') {\n scheduler = job; // the scheduler function gets called directly\n }\n else if (flush === 'post') {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n }\n else {\n // default: 'pre'\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, scheduler);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n job();\n }\n else {\n oldValue = effect.run();\n }\n }\n else if (flush === 'post') {\n queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);\n }\n else {\n effect.run();\n }\n const unwatch = () => {\n effect.stop();\n if (instance && instance.scope) {\n remove(instance.scope.effects, effect);\n }\n };\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\n// this.$watch\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source)\n ? source.includes('.')\n ? createPathGetter(publicThis, source)\n : () => publicThis[source]\n : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n }\n else {\n cb = value.handler;\n options = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n if (cur) {\n setCurrentInstance(cur);\n }\n else {\n unsetCurrentInstance();\n }\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split('.');\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, seen) {\n if (!isObject(value) || value[\"__v_skip\" /* ReactiveFlags.SKIP */]) {\n return value;\n }\n seen = seen || new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, seen);\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], seen);\n }\n }\n else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, seen);\n });\n }\n else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], seen);\n }\n }\n return value;\n}\n\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevTransitionKey;\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n // locate first non-comment child\n for (const c of children) {\n if (c.type !== Comment) {\n if ((process.env.NODE_ENV !== 'production') && hasFound) {\n // warn more than one non-comment child\n warn('<transition> can only be used on a single element or component. ' +\n 'Use <transition-group> for lists.');\n break;\n }\n child = c;\n hasFound = true;\n if (!(process.env.NODE_ENV !== 'production'))\n break;\n }\n }\n }\n // there's no need to track reactivity for these props so use the raw\n // props for a bit better perf\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n // check mode\n if ((process.env.NODE_ENV !== 'production') &&\n mode &&\n mode !== 'in-out' &&\n mode !== 'out-in' &&\n mode !== 'default') {\n warn(`invalid <transition> mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n // in the case of <transition><keep-alive/></transition>, we need to\n // compare the type of the kept-alive children.\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const { getTransitionKey } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === undefined) {\n prevTransitionKey = key;\n }\n else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n // handle mode\n if (oldInnerChild &&\n oldInnerChild.type !== Comment &&\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\n // update old tree's hooks in case of dynamic transition\n setTransitionHooks(oldInnerChild, leavingHooks);\n // switching between different views\n if (mode === 'out-in') {\n state.isLeaving = true;\n // return placeholder node and queue update when leave finishes\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n // #6835\n // it also needs to be updated when active is undefined\n if (instance.update.active !== false) {\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n }\n else if (mode === 'in-out' && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n // early removal callback\n el._leaveCb = () => {\n earlyRemove();\n el._leaveCb = undefined;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\n// The transition hooks are attached to the vnode as vnode.transition\n// and will be called at appropriate timing in the renderer.\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook &&\n callWithAsyncErrorHandling(hook, instance, 9 /* ErrorCodes.TRANSITION_HOOK */, args);\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every(hook => hook.length <= 1))\n done();\n }\n else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n }\n else {\n return;\n }\n }\n // for same element (v-show)\n if (el._leaveCb) {\n el._leaveCb(true /* cancelled */);\n }\n // for toggled element with same key (v-if)\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode &&\n isSameVNodeType(vnode, leavingVNode) &&\n leavingVNode.el._leaveCb) {\n // force early removal (not cancelled)\n leavingVNode.el._leaveCb();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n }\n else {\n return;\n }\n }\n let called = false;\n const done = (el._enterCb = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n }\n else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el._enterCb = undefined;\n });\n if (hook) {\n callAsyncHook(hook, [el, done]);\n }\n else {\n done();\n }\n },\n leave(el, remove) {\n const key = String(vnode.key);\n if (el._enterCb) {\n el._enterCb(true /* cancelled */);\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = (el._leaveCb = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n }\n else {\n callHook(onAfterLeave, [el]);\n }\n el._leaveCb = undefined;\n if (leavingVNodesCache[key] === vnode) {\n delete leavingVNodesCache[key];\n }\n });\n leavingVNodesCache[key] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n }\n else {\n done();\n }\n },\n clone(vnode) {\n return resolveTransitionHooks(vnode, props, state, instance);\n }\n };\n return hooks;\n}\n// the placeholder really only handles one special case: KeepAlive\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\n// placeholder with empty content to avoid the KeepAlive instance from being\n// unmounted.\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode)\n ? vnode.children\n ? vnode.children[0]\n : undefined\n : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */ && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n }\n else if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n }\n else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n // #5360 inherit parent key in case of <template v-for>\n const key = parentKey == null\n ? child.key\n : String(parentKey) + String(child.key != null ? child.key : i);\n // handle fragment children case, e.g. v-for\n if (child.type === Fragment) {\n if (child.patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */)\n keyedFragmentCount++;\n ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));\n }\n // comment placeholders should be skipped, e.g. v-if\n else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n // #1126 if a transition children list contains multiple sub fragments, these\n // fragments will be merged into a flat children array. Since each v-for\n // fragment may contain different static bindings inside, we need to de-op\n // these children to force full diffs to ensure correct behavior.\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2 /* PatchFlags.BAIL */;\n }\n }\n return ret;\n}\n\n// implementation, close to no-op\nfunction defineComponent(options) {\n return isFunction(options) ? { setup: options, name: options.name } : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out\n suspensible = true, onError: userOnError } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return (pendingRequest ||\n (thisRequest = pendingRequest =\n loader()\n .catch(err => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n }\n else {\n throw err;\n }\n })\n .then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if ((process.env.NODE_ENV !== 'production') && !comp) {\n warn(`Async component loader resolved to undefined. ` +\n `If you are using retry(), make sure to return its return value.`);\n }\n // interop module default\n if (comp &&\n (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\n comp = comp.default;\n }\n if ((process.env.NODE_ENV !== 'production') && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n })));\n };\n return defineComponent({\n name: 'AsyncComponentWrapper',\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n // already resolved\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(err, instance, 13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);\n };\n // suspense-controlled or SSR.\n if ((suspensible && instance.suspense) ||\n (isInSSRComponentSetup)) {\n return load()\n .then(comp => {\n return () => createInnerComp(comp, instance);\n })\n .catch(err => {\n onError(err);\n return () => errorComponent\n ? createVNode(errorComponent, {\n error: err\n })\n : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(`Async component timed out after ${timeout}ms.`);\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load()\n .then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n // parent is keep-alive, force update so the loaded component's\n // name is taken into account\n queueJob(instance.parent.update);\n }\n })\n .catch(err => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n }\n else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n }\n else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n // ensure inner component inherits the async wrapper's ref owner\n vnode.ref = ref;\n // pass the custom element callback on to the inner comp\n // and remove it from the async wrapper\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n // KeepAlive communicates with the instantiated renderer via the\n // ctx where the renderer passes in its internals,\n // and the KeepAlive instance exposes activate/deactivate implementations.\n // The whole point of this is to avoid importing KeepAlive directly in the\n // renderer to facilitate tree-shaking.\n const sharedContext = instance.ctx;\n // if the internal renderer is not registered, it indicates that this is server-side rendering,\n // for KeepAlive, we just need to render its children\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = new Map();\n const keys = new Set();\n let current = null;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;\n const storageContainer = createElement('div');\n sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\n const instance = vnode.component;\n move(vnode, container, anchor, 0 /* MoveType.ENTER */, parentSuspense);\n // in case props have changed\n patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);\n queuePostRenderEffect(() => {\n instance.isDeactivated = false;\n if (instance.a) {\n invokeArrayFns(instance.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance = vnode.component;\n move(vnode, storageContainer, null, 1 /* MoveType.LEAVE */, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance.da) {\n invokeArrayFns(instance.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n instance.isDeactivated = true;\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n function unmount(vnode) {\n // reset the shapeFlag so it can be properly unmounted\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || cached.type !== current.type) {\n unmount(cached);\n }\n else if (current) {\n // current active instance should no longer be kept-alive.\n // we can't unmount it now but it might be later, so reset its flag now.\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n // prune cache on include/exclude prop change\n watch(() => [props.include, props.exclude], ([include, exclude]) => {\n include && pruneCache(name => matches(include, name));\n exclude && pruneCache(name => !matches(exclude, name));\n }, \n // prune post-render after `current` has been updated\n { flush: 'post', deep: true });\n // cache sub tree after render\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n // fix #1621, the pendingCacheKey could be 0\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach(cached => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type) {\n // current instance will be unmounted as part of keep-alive's unmount\n resetShapeFlag(vnode);\n // but invoke its deactivated hook here\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n }\n else if (!isVNode(rawVNode) ||\n (!(rawVNode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) &&\n !(rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */))) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n // for async components, name check should be based in its loaded\n // inner component if available\n const name = getComponentName(isAsyncWrapper(vnode)\n ? vnode.type.__asyncResolved || {}\n : comp);\n const { include, exclude, max } = props;\n if ((include && (!name || !matches(include, name))) ||\n (exclude && name && matches(exclude, name))) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n // clone vnode if it's reused because we are going to mutate it\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n rawVNode.ssContent = vnode;\n }\n }\n // #1513 it's possible for the returned vnode to be cloned due to attr\n // fallthrough or scopeId, so the vnode here may not be the final vnode\n // that is mounted. Instead of caching it directly, we store the pending\n // key and cache `instance.subTree` (the normalized vnode) in\n // beforeMount/beforeUpdate hooks.\n pendingCacheKey = key;\n if (cachedVNode) {\n // copy over mounted state\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n // recursively update transition hooks on subTree\n setTransitionHooks(vnode, vnode.transition);\n }\n // avoid vnode being mounted as fresh\n vnode.shapeFlag |= 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n // make this key the freshest\n keys.delete(key);\n keys.add(key);\n }\n else {\n keys.add(key);\n // prune oldest entry\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n // avoid vnode being unmounted\n vnode.shapeFlag |= 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n }\n else if (isString(pattern)) {\n return pattern.split(',').includes(name);\n }\n else if (pattern.test) {\n return pattern.test(name);\n }\n /* istanbul ignore next */\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\" /* LifecycleHooks.ACTIVATED */, target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\" /* LifecycleHooks.DEACTIVATED */, target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n // cache the deactivate branch check wrapper for injected hooks so the same\n // hook can be properly deduped by the scheduler. \"__wdc\" stands for \"with\n // deactivation check\".\n const wrappedHook = hook.__wdc ||\n (hook.__wdc = () => {\n // only fire the hook if the target instance is NOT in a deactivated branch.\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n // In addition to registering it on the target instance, we walk up the parent\n // chain and register it on all ancestor instances that are keep-alive roots.\n // This avoids the need to walk the entire component tree when invoking these\n // hooks, and more importantly, avoids the need to track child components in\n // arrays.\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n // injectHook wraps the original for error handling, so make sure to remove\n // the wrapped version.\n const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n // bitwise operations to remove keep alive flags\n vnode.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n vnode.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */ ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n // cache the error handling wrapper for injected hooks so the same hook\n // can be properly deduped by the scheduler. \"__weh\" stands for \"with error\n // handling\".\n const wrappedHook = hook.__weh ||\n (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n // Set currentInstance during hook invocation.\n // This assumes the hook does not synchronously trigger other hooks, which\n // can only be false when the user does something really funky.\n setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n unsetCurrentInstance();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n }\n else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ''));\n warn(`${apiName} is called when there is no active component instance to be ` +\n `associated with. ` +\n `Lifecycle injection APIs can only be used during execution of setup().` +\n (` If you are using async setup(), make sure to register lifecycle ` +\n `hooks before the first await statement.`\n ));\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => \n// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n(!isInSSRComponentSetup || lifecycle === \"sp\" /* LifecycleHooks.SERVER_PREFETCH */) &&\n injectHook(lifecycle, (...args) => hook(...args), target);\nconst onBeforeMount = createHook(\"bm\" /* LifecycleHooks.BEFORE_MOUNT */);\nconst onMounted = createHook(\"m\" /* LifecycleHooks.MOUNTED */);\nconst onBeforeUpdate = createHook(\"bu\" /* LifecycleHooks.BEFORE_UPDATE */);\nconst onUpdated = createHook(\"u\" /* LifecycleHooks.UPDATED */);\nconst onBeforeUnmount = createHook(\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */);\nconst onUnmounted = createHook(\"um\" /* LifecycleHooks.UNMOUNTED */);\nconst onServerPrefetch = createHook(\"sp\" /* LifecycleHooks.SERVER_PREFETCH */);\nconst onRenderTriggered = createHook(\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */);\nconst onRenderTracked = createHook(\"rtc\" /* LifecycleHooks.RENDER_TRACKED */);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\" /* LifecycleHooks.ERROR_CAPTURED */, hook, target);\n}\n\n/**\nRuntime helper for applying directives to a vnode. Example usage:\n\nconst comp = resolveComponent('comp')\nconst foo = resolveDirective('foo')\nconst bar = resolveDirective('bar')\n\nreturn withDirectives(h(comp), [\n [foo, this.x],\n [bar, this.y]\n])\n*/\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn('Do not use built-in directive ids as custom directive id: ' + name);\n }\n}\n/**\n * Adds directives to a VNode.\n */\nfunction withDirectives(vnode, directives) {\n const internalInstance = currentRenderingInstance;\n if (internalInstance === null) {\n (process.env.NODE_ENV !== 'production') && warn(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(internalInstance) ||\n internalInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8 /* ErrorCodes.DIRECTIVE_HOOK */, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst COMPONENTS = 'components';\nconst DIRECTIVES = 'directives';\n/**\n * @private\n */\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol();\n/**\n * @private\n */\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n }\n else {\n // invalid types will fallthrough to createVNode and raise warning\n return (component || NULL_DYNAMIC_COMPONENT);\n }\n}\n/**\n * @private\n */\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\n// implementation\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n // explicit self name has highest priority\n if (type === COMPONENTS) {\n const selfName = getComponentName(Component, false /* do not include inferred name to avoid breaking existing code */);\n if (selfName &&\n (selfName === name ||\n selfName === camelize(name) ||\n selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = \n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) ||\n // global registration\n resolve(instance.appContext[type], name);\n if (!res && maybeSelfReference) {\n // fallback to implicit self-reference\n return Component;\n }\n if ((process.env.NODE_ENV !== 'production') && warnMissing && !res) {\n const extra = type === COMPONENTS\n ? `\\nIf this is a native custom element, make sure to exclude it from ` +\n `component resolution via compilerOptions.isCustomElement.`\n : ``;\n warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`resolve${capitalize(type.slice(0, -1))} ` +\n `can only be used in render() or setup().`);\n }\n}\nfunction resolve(registry, name) {\n return (registry &&\n (registry[name] ||\n registry[camelize(name)] ||\n registry[capitalize(camelize(name))]));\n}\n\n/**\n * Actual implementation\n */\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = (cache && cache[index]);\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, undefined, cached && cached[i]);\n }\n }\n else if (typeof source === 'number') {\n if ((process.env.NODE_ENV !== 'production') && !Number.isInteger(source)) {\n warn(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]);\n }\n }\n else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(source, (item, i) => renderItem(item, i, undefined, cached && cached[i]));\n }\n else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n }\n else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\n/**\n * Compiler runtime helper for creating dynamic slots object\n * @private\n */\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n // array of dynamic slot generated by <template v-for=\"...\" #[...]>\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n }\n else if (slot) {\n // conditional single slot generated by <template v-if=\"...\" #foo>\n slots[slot.name] = slot.key\n ? (...args) => {\n const res = slot.fn(...args);\n // attach branch key so each conditional branch is considered a\n // different fragment\n if (res)\n res.key = slot.key;\n return res;\n }\n : slot.fn;\n }\n }\n return slots;\n}\n\n/**\n * Compiler runtime helper for rendering `<slot/>`\n * @private\n */\nfunction renderSlot(slots, name, props = {}, \n// this is not a user-facing function, so the fallback is always generated by\n// the compiler and guaranteed to be a function returning an array\nfallback, noSlotted) {\n if (currentRenderingInstance.isCE ||\n (currentRenderingInstance.parent &&\n isAsyncWrapper(currentRenderingInstance.parent) &&\n currentRenderingInstance.parent.isCE)) {\n if (name !== 'default')\n props.name = name;\n return createVNode('slot', props, fallback && fallback());\n }\n let slot = slots[name];\n if ((process.env.NODE_ENV !== 'production') && slot && slot.length > 1) {\n warn(`SSR-optimized slot function detected in a non-SSR-optimized render ` +\n `function. You need to mark this component with $dynamic-slots in the ` +\n `parent template.`);\n slot = () => [];\n }\n // a compiled slot disables block tracking by default to avoid manual\n // invocation interfering with template-based block tracking, but in\n // `renderSlot` we can be sure that it's template-based so we can force\n // enable it.\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(Fragment, {\n key: props.key ||\n // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n (validSlotContent && validSlotContent.key) ||\n `_${name}`\n }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* SlotFlags.STABLE */\n ? 64 /* PatchFlags.STABLE_FRAGMENT */\n : -2 /* PatchFlags.BAIL */);\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + '-s'];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some(child => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment &&\n !ensureValidVNode(child.children))\n return false;\n return true;\n })\n ? vnodes\n : null;\n}\n\n/**\n * For prefixing keys in v-on=\"obj\" with \"on\"\n * @private\n */\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if ((process.env.NODE_ENV !== 'production') && !isObject(obj)) {\n warn(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key)\n ? `on:${key}`\n : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\n/**\n * #2437 In Vue 3, functional components do not have a public instance proxy but\n * they exist in the internal parent chain. For code that relies on traversing\n * public $parent chains, skip functional ones and go to the parent instead.\n */\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = \n// Move PURE marker to new line to workaround compiler discarding it\n// due to type annotation\n/*#__PURE__*/ extend(Object.create(null), {\n $: i => i,\n $el: i => i.vnode.el,\n $data: i => i.data,\n $props: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.props) : i.props),\n $attrs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.attrs) : i.attrs),\n $slots: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.slots) : i.slots),\n $refs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.refs) : i.refs),\n $parent: i => getPublicInstance(i.parent),\n $root: i => getPublicInstance(i.root),\n $emit: i => i.emit,\n $options: i => (__VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type),\n $forceUpdate: i => i.f || (i.f = () => queueJob(i.update)),\n $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: i => (__VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP)\n});\nconst isReservedPrefix = (key) => key === '_' || key === '$';\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n // for internal formatters to know that this is a Vue instance\n if ((process.env.NODE_ENV !== 'production') && key === '__isVue') {\n return true;\n }\n // data / props / ctx\n // This getter gets called for every property access on the render context\n // during render and is a major hotspot. The most expensive part of this\n // is the multiple hasOwn() calls. It's much faster to do a simple property\n // access on a plain object, so we use an accessCache object (with null\n // prototype) to memoize what access type a key corresponds to.\n let normalizedProps;\n if (key[0] !== '$') {\n const n = accessCache[key];\n if (n !== undefined) {\n switch (n) {\n case 1 /* AccessTypes.SETUP */:\n return setupState[key];\n case 2 /* AccessTypes.DATA */:\n return data[key];\n case 4 /* AccessTypes.CONTEXT */:\n return ctx[key];\n case 3 /* AccessTypes.PROPS */:\n return props[key];\n // default: just fallthrough\n }\n }\n else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* AccessTypes.SETUP */;\n return setupState[key];\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* AccessTypes.DATA */;\n return data[key];\n }\n else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) &&\n hasOwn(normalizedProps, key)) {\n accessCache[key] = 3 /* AccessTypes.PROPS */;\n return props[key];\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* AccessTypes.OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n // public $xxx properties\n if (publicGetter) {\n if (key === '$attrs') {\n track(instance, \"get\" /* TrackOpTypes.GET */, key);\n (process.env.NODE_ENV !== 'production') && markAttrsAccessed();\n }\n return publicGetter(instance);\n }\n else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) &&\n (cssModule = cssModule[key])) {\n return cssModule;\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n // user may set custom properties to `this` that start with `$`\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (\n // global properties\n ((globalProperties = appContext.config.globalProperties),\n hasOwn(globalProperties, key))) {\n {\n return globalProperties[key];\n }\n }\n else if ((process.env.NODE_ENV !== 'production') &&\n currentRenderingInstance &&\n (!isString(key) ||\n // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf('__v') !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved ` +\n `character (\"$\" or \"_\") and is not proxied on the render context.`);\n }\n else if (instance === currentRenderingInstance) {\n warn(`Property ${JSON.stringify(key)} was accessed during render ` +\n `but is not defined on instance.`);\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n }\n else if ((process.env.NODE_ENV !== 'production') &&\n setupState.__isScriptSetup &&\n hasOwn(setupState, key)) {\n warn(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n return false;\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n data[key] = value;\n return true;\n }\n else if (hasOwn(instance.props, key)) {\n (process.env.NODE_ENV !== 'production') && warn(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n return false;\n }\n if (key[0] === '$' && key.slice(1) in instance) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to mutate public property \"${key}\". ` +\n `Properties starting with $ are reserved and readonly.`);\n return false;\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && key in instance.appContext.config.globalProperties) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n value\n });\n }\n else {\n ctx[key] = value;\n }\n }\n return true;\n },\n has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {\n let normalizedProps;\n return (!!accessCache[key] ||\n (data !== EMPTY_OBJ && hasOwn(data, key)) ||\n hasSetupBinding(setupState, key) ||\n ((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||\n hasOwn(ctx, key) ||\n hasOwn(publicPropertiesMap, key) ||\n hasOwn(appContext.config.globalProperties, key));\n },\n defineProperty(target, key, descriptor) {\n if (descriptor.get != null) {\n // invalidate key cache of a getter based property #5417\n target._.accessCache[key] = 0;\n }\n else if (hasOwn(descriptor, 'value')) {\n this.set(target, key, descriptor.value, null);\n }\n return Reflect.defineProperty(target, key, descriptor);\n }\n};\nif ((process.env.NODE_ENV !== 'production') && !false) {\n PublicInstanceProxyHandlers.ownKeys = (target) => {\n warn(`Avoid app logic that relies on enumerating keys on a component instance. ` +\n `The keys will be empty in production mode to avoid performance overhead.`);\n return Reflect.ownKeys(target);\n };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /*#__PURE__*/ extend({}, PublicInstanceProxyHandlers, {\n get(target, key) {\n // fast path for unscopables when using `with` block\n if (key === Symbol.unscopables) {\n return;\n }\n return PublicInstanceProxyHandlers.get(target, key, target);\n },\n has(_, key) {\n const has = key[0] !== '_' && !isGloballyWhitelisted(key);\n if ((process.env.NODE_ENV !== 'production') && !has && PublicInstanceProxyHandlers.has(_, key)) {\n warn(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`);\n }\n return has;\n }\n});\n// dev only\n// In dev mode, the proxy target exposes the same properties as seen on `this`\n// for easier console inspection. In prod mode it will be an empty object so\n// these properties definitions can be skipped.\nfunction createDevRenderContext(instance) {\n const target = {};\n // expose internal instance for proxy handlers\n Object.defineProperty(target, `_`, {\n configurable: true,\n enumerable: false,\n get: () => instance\n });\n // expose public properties\n Object.keys(publicPropertiesMap).forEach(key => {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get: () => publicPropertiesMap[key](instance),\n // intercepted by the proxy so no need for implementation,\n // but needed to prevent set errors\n set: NOOP\n });\n });\n return target;\n}\n// dev only\nfunction exposePropsOnRenderContext(instance) {\n const { ctx, propsOptions: [propsOptions] } = instance;\n if (propsOptions) {\n Object.keys(propsOptions).forEach(key => {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => instance.props[key],\n set: NOOP\n });\n });\n }\n}\n// dev only\nfunction exposeSetupStateOnRenderContext(instance) {\n const { ctx, setupState } = instance;\n Object.keys(toRaw(setupState)).forEach(key => {\n if (!setupState.__isScriptSetup) {\n if (isReservedPrefix(key[0])) {\n warn(`setup() return property ${JSON.stringify(key)} should not start with \"$\" or \"_\" ` +\n `which are reserved prefixes for Vue internals.`);\n return;\n }\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => setupState[key],\n set: NOOP\n });\n }\n });\n}\n\nfunction createDuplicateChecker() {\n const cache = Object.create(null);\n return (type, key) => {\n if (cache[key]) {\n warn(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n }\n else {\n cache[key] = type;\n }\n };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n const options = resolveMergedOptions(instance);\n const publicThis = instance.proxy;\n const ctx = instance.ctx;\n // do not cache property access on public proxy during state initialization\n shouldCacheAccess = false;\n // call beforeCreate first before accessing other options since\n // the hook may mutate resolved options (#2791)\n if (options.beforeCreate) {\n callHook(options.beforeCreate, instance, \"bc\" /* LifecycleHooks.BEFORE_CREATE */);\n }\n const { \n // state\n data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, \n // lifecycle\n created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, \n // public API\n expose, inheritAttrs, \n // assets\n components, directives, filters } = options;\n const checkDuplicateProperties = (process.env.NODE_ENV !== 'production') ? createDuplicateChecker() : null;\n if ((process.env.NODE_ENV !== 'production')) {\n const [propsOptions] = instance.propsOptions;\n if (propsOptions) {\n for (const key in propsOptions) {\n checkDuplicateProperties(\"Props\" /* OptionTypes.PROPS */, key);\n }\n }\n }\n // options initialization order (to be consistent with Vue 2):\n // - props (already done outside of this function)\n // - inject\n // - methods\n // - data (deferred since it relies on `this` access)\n // - computed\n // - watch (deferred since it relies on `this` access)\n if (injectOptions) {\n resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);\n }\n if (methods) {\n for (const key in methods) {\n const methodHandler = methods[key];\n if (isFunction(methodHandler)) {\n // In dev mode, we use the `createRenderContext` function to define\n // methods to the proxy target, and those are read-only but\n // reconfigurable, so it needs to be redefined here\n if ((process.env.NODE_ENV !== 'production')) {\n Object.defineProperty(ctx, key, {\n value: methodHandler.bind(publicThis),\n configurable: true,\n enumerable: true,\n writable: true\n });\n }\n else {\n ctx[key] = methodHandler.bind(publicThis);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Methods\" /* OptionTypes.METHODS */, key);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. ` +\n `Did you reference the function correctly?`);\n }\n }\n }\n if (dataOptions) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(dataOptions)) {\n warn(`The data option must be a function. ` +\n `Plain object usage is no longer supported.`);\n }\n const data = dataOptions.call(publicThis, publicThis);\n if ((process.env.NODE_ENV !== 'production') && isPromise(data)) {\n warn(`data() returned a Promise - note data() cannot be async; If you ` +\n `intend to perform data fetching before component renders, use ` +\n `async setup() + <Suspense>.`);\n }\n if (!isObject(data)) {\n (process.env.NODE_ENV !== 'production') && warn(`data() should return an object.`);\n }\n else {\n instance.data = reactive(data);\n if ((process.env.NODE_ENV !== 'production')) {\n for (const key in data) {\n checkDuplicateProperties(\"Data\" /* OptionTypes.DATA */, key);\n // expose data on ctx during dev\n if (!isReservedPrefix(key[0])) {\n Object.defineProperty(ctx, key, {\n configurable: true,\n enumerable: true,\n get: () => data[key],\n set: NOOP\n });\n }\n }\n }\n }\n }\n // state initialization complete at this point - start caching access\n shouldCacheAccess = true;\n if (computedOptions) {\n for (const key in computedOptions) {\n const opt = computedOptions[key];\n const get = isFunction(opt)\n ? opt.bind(publicThis, publicThis)\n : isFunction(opt.get)\n ? opt.get.bind(publicThis, publicThis)\n : NOOP;\n if ((process.env.NODE_ENV !== 'production') && get === NOOP) {\n warn(`Computed property \"${key}\" has no getter.`);\n }\n const set = !isFunction(opt) && isFunction(opt.set)\n ? opt.set.bind(publicThis)\n : (process.env.NODE_ENV !== 'production')\n ? () => {\n warn(`Write operation failed: computed property \"${key}\" is readonly.`);\n }\n : NOOP;\n const c = computed({\n get,\n set\n });\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => c.value,\n set: v => (c.value = v)\n });\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Computed\" /* OptionTypes.COMPUTED */, key);\n }\n }\n }\n if (watchOptions) {\n for (const key in watchOptions) {\n createWatcher(watchOptions[key], ctx, publicThis, key);\n }\n }\n if (provideOptions) {\n const provides = isFunction(provideOptions)\n ? provideOptions.call(publicThis)\n : provideOptions;\n Reflect.ownKeys(provides).forEach(key => {\n provide(key, provides[key]);\n });\n }\n if (created) {\n callHook(created, instance, \"c\" /* LifecycleHooks.CREATED */);\n }\n function registerLifecycleHook(register, hook) {\n if (isArray(hook)) {\n hook.forEach(_hook => register(_hook.bind(publicThis)));\n }\n else if (hook) {\n register(hook.bind(publicThis));\n }\n }\n registerLifecycleHook(onBeforeMount, beforeMount);\n registerLifecycleHook(onMounted, mounted);\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n registerLifecycleHook(onUpdated, updated);\n registerLifecycleHook(onActivated, activated);\n registerLifecycleHook(onDeactivated, deactivated);\n registerLifecycleHook(onErrorCaptured, errorCaptured);\n registerLifecycleHook(onRenderTracked, renderTracked);\n registerLifecycleHook(onRenderTriggered, renderTriggered);\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n registerLifecycleHook(onUnmounted, unmounted);\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\n if (isArray(expose)) {\n if (expose.length) {\n const exposed = instance.exposed || (instance.exposed = {});\n expose.forEach(key => {\n Object.defineProperty(exposed, key, {\n get: () => publicThis[key],\n set: val => (publicThis[key] = val)\n });\n });\n }\n else if (!instance.exposed) {\n instance.exposed = {};\n }\n }\n // options that are handled when creating the instance but also need to be\n // applied from mixins\n if (render && instance.render === NOOP) {\n instance.render = render;\n }\n if (inheritAttrs != null) {\n instance.inheritAttrs = inheritAttrs;\n }\n // asset options.\n if (components)\n instance.components = components;\n if (directives)\n instance.directives = directives;\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {\n if (isArray(injectOptions)) {\n injectOptions = normalizeInject(injectOptions);\n }\n for (const key in injectOptions) {\n const opt = injectOptions[key];\n let injected;\n if (isObject(opt)) {\n if ('default' in opt) {\n injected = inject(opt.from || key, opt.default, true /* treat default function as factory */);\n }\n else {\n injected = inject(opt.from || key);\n }\n }\n else {\n injected = inject(opt);\n }\n if (isRef(injected)) {\n // TODO remove the check in 3.3\n if (unwrapRef) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => injected.value,\n set: v => (injected.value = v)\n });\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`injected property \"${key}\" is a ref and will be auto-unwrapped ` +\n `and no longer needs \\`.value\\` in the next minor release. ` +\n `To opt-in to the new behavior now, ` +\n `set \\`app.config.unwrapInjectedRef = true\\` (this config is ` +\n `temporary and will not be needed in the future.)`);\n }\n ctx[key] = injected;\n }\n }\n else {\n ctx[key] = injected;\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Inject\" /* OptionTypes.INJECT */, key);\n }\n }\n}\nfunction callHook(hook, instance, type) {\n callWithAsyncErrorHandling(isArray(hook)\n ? hook.map(h => h.bind(instance.proxy))\n : hook.bind(instance.proxy), instance, type);\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n const getter = key.includes('.')\n ? createPathGetter(publicThis, key)\n : () => publicThis[key];\n if (isString(raw)) {\n const handler = ctx[raw];\n if (isFunction(handler)) {\n watch(getter, handler);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw}\"`, handler);\n }\n }\n else if (isFunction(raw)) {\n watch(getter, raw.bind(publicThis));\n }\n else if (isObject(raw)) {\n if (isArray(raw)) {\n raw.forEach(r => createWatcher(r, ctx, publicThis, key));\n }\n else {\n const handler = isFunction(raw.handler)\n ? raw.handler.bind(publicThis)\n : ctx[raw.handler];\n if (isFunction(handler)) {\n watch(getter, handler, raw);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n }\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch option: \"${key}\"`, raw);\n }\n}\n/**\n * Resolve merged options and cache it on the component.\n * This is done only once per-component since the merging does not involve\n * instances.\n */\nfunction resolveMergedOptions(instance) {\n const base = instance.type;\n const { mixins, extends: extendsOptions } = base;\n const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext;\n const cached = cache.get(base);\n let resolved;\n if (cached) {\n resolved = cached;\n }\n else if (!globalMixins.length && !mixins && !extendsOptions) {\n {\n resolved = base;\n }\n }\n else {\n resolved = {};\n if (globalMixins.length) {\n globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));\n }\n mergeOptions(resolved, base, optionMergeStrategies);\n }\n if (isObject(base)) {\n cache.set(base, resolved);\n }\n return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n const { mixins, extends: extendsOptions } = from;\n if (extendsOptions) {\n mergeOptions(to, extendsOptions, strats, true);\n }\n if (mixins) {\n mixins.forEach((m) => mergeOptions(to, m, strats, true));\n }\n for (const key in from) {\n if (asMixin && key === 'expose') {\n (process.env.NODE_ENV !== 'production') &&\n warn(`\"expose\" option is ignored when declared in mixins or extends. ` +\n `It should only be declared in the base component itself.`);\n }\n else {\n const strat = internalOptionMergeStrats[key] || (strats && strats[key]);\n to[key] = strat ? strat(to[key], from[key]) : from[key];\n }\n }\n return to;\n}\nconst internalOptionMergeStrats = {\n data: mergeDataFn,\n props: mergeObjectOptions,\n emits: mergeObjectOptions,\n // objects\n methods: mergeObjectOptions,\n computed: mergeObjectOptions,\n // lifecycle\n beforeCreate: mergeAsArray,\n created: mergeAsArray,\n beforeMount: mergeAsArray,\n mounted: mergeAsArray,\n beforeUpdate: mergeAsArray,\n updated: mergeAsArray,\n beforeDestroy: mergeAsArray,\n beforeUnmount: mergeAsArray,\n destroyed: mergeAsArray,\n unmounted: mergeAsArray,\n activated: mergeAsArray,\n deactivated: mergeAsArray,\n errorCaptured: mergeAsArray,\n serverPrefetch: mergeAsArray,\n // assets\n components: mergeObjectOptions,\n directives: mergeObjectOptions,\n // watch\n watch: mergeWatchOptions,\n // provide / inject\n provide: mergeDataFn,\n inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n if (!from) {\n return to;\n }\n if (!to) {\n return from;\n }\n return function mergedDataFn() {\n return (extend)(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);\n };\n}\nfunction mergeInject(to, from) {\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n if (isArray(raw)) {\n const res = {};\n for (let i = 0; i < raw.length; i++) {\n res[raw[i]] = raw[i];\n }\n return res;\n }\n return raw;\n}\nfunction mergeAsArray(to, from) {\n return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n return to ? extend(extend(Object.create(null), to), from) : from;\n}\nfunction mergeWatchOptions(to, from) {\n if (!to)\n return from;\n if (!from)\n return to;\n const merged = extend(Object.create(null), to);\n for (const key in from) {\n merged[key] = mergeAsArray(to[key], from[key]);\n }\n return merged;\n}\n\nfunction initProps(instance, rawProps, isStateful, // result of bitwise flag comparison\nisSSR = false) {\n const props = {};\n const attrs = {};\n def(attrs, InternalObjectKey, 1);\n instance.propsDefaults = Object.create(null);\n setFullProps(instance, rawProps, props, attrs);\n // ensure all declared prop keys are present\n for (const key in instance.propsOptions[0]) {\n if (!(key in props)) {\n props[key] = undefined;\n }\n }\n // validation\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n if (isStateful) {\n // stateful\n instance.props = isSSR ? props : shallowReactive(props);\n }\n else {\n if (!instance.type.props) {\n // functional w/ optional props, props === attrs\n instance.props = attrs;\n }\n else {\n // functional w/ declared props\n instance.props = props;\n }\n }\n instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n while (instance) {\n if (instance.type.__hmrId)\n return true;\n instance = instance.parent;\n }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n const { props, attrs, vnode: { patchFlag } } = instance;\n const rawCurrentProps = toRaw(props);\n const [options] = instance.propsOptions;\n let hasAttrsChanged = false;\n if (\n // always force full diff in dev\n // - #1942 if hmr is enabled with sfc component\n // - vite#872 non-sfc component used by sfc component\n !((process.env.NODE_ENV !== 'production') && isInHmrContext(instance)) &&\n (optimized || patchFlag > 0) &&\n !(patchFlag & 16 /* PatchFlags.FULL_PROPS */)) {\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // Compiler-generated props & no keys change, just set the updated\n // the props.\n const propsToUpdate = instance.vnode.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n let key = propsToUpdate[i];\n // skip if the prop key is a declared emit event listener\n if (isEmitListener(instance.emitsOptions, key)) {\n continue;\n }\n // PROPS flag guarantees rawProps to be non-null\n const value = rawProps[key];\n if (options) {\n // attr / props separation was done on init and will be consistent\n // in this code path, so just check if attrs have it.\n if (hasOwn(attrs, key)) {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n else {\n const camelizedKey = camelize(key);\n props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */);\n }\n }\n else {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n }\n else {\n // full props update.\n if (setFullProps(instance, rawProps, props, attrs)) {\n hasAttrsChanged = true;\n }\n // in case of dynamic props, check if we need to delete keys from\n // the props object\n let kebabKey;\n for (const key in rawCurrentProps) {\n if (!rawProps ||\n // for camelCase\n (!hasOwn(rawProps, key) &&\n // it's possible the original props was passed in as kebab-case\n // and converted to camelCase (#955)\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) {\n if (options) {\n if (rawPrevProps &&\n // for camelCase\n (rawPrevProps[key] !== undefined ||\n // for kebab-case\n rawPrevProps[kebabKey] !== undefined)) {\n props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */);\n }\n }\n else {\n delete props[key];\n }\n }\n }\n // in the case of functional component w/o props declaration, props and\n // attrs point to the same object so it should already have been updated.\n if (attrs !== rawCurrentProps) {\n for (const key in attrs) {\n if (!rawProps ||\n (!hasOwn(rawProps, key) &&\n (!false ))) {\n delete attrs[key];\n hasAttrsChanged = true;\n }\n }\n }\n }\n // trigger updates for $attrs in case it's used in component slots\n if (hasAttrsChanged) {\n trigger(instance, \"set\" /* TriggerOpTypes.SET */, '$attrs');\n }\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n const [options, needCastKeys] = instance.propsOptions;\n let hasAttrsChanged = false;\n let rawCastValues;\n if (rawProps) {\n for (let key in rawProps) {\n // key, ref are reserved and never passed down\n if (isReservedProp(key)) {\n continue;\n }\n const value = rawProps[key];\n // prop option names are camelized during normalization, so to support\n // kebab -> camel conversion here we need to camelize the key.\n let camelKey;\n if (options && hasOwn(options, (camelKey = camelize(key)))) {\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n props[camelKey] = value;\n }\n else {\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n }\n }\n else if (!isEmitListener(instance.emitsOptions, key)) {\n if (!(key in attrs) || value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (needCastKeys) {\n const rawCurrentProps = toRaw(props);\n const castValues = rawCastValues || EMPTY_OBJ;\n for (let i = 0; i < needCastKeys.length; i++) {\n const key = needCastKeys[i];\n props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn(castValues, key));\n }\n }\n return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n const opt = options[key];\n if (opt != null) {\n const hasDefault = hasOwn(opt, 'default');\n // default values\n if (hasDefault && value === undefined) {\n const defaultValue = opt.default;\n if (opt.type !== Function && isFunction(defaultValue)) {\n const { propsDefaults } = instance;\n if (key in propsDefaults) {\n value = propsDefaults[key];\n }\n else {\n setCurrentInstance(instance);\n value = propsDefaults[key] = defaultValue.call(null, props);\n unsetCurrentInstance();\n }\n }\n else {\n value = defaultValue;\n }\n }\n // boolean casting\n if (opt[0 /* BooleanFlags.shouldCast */]) {\n if (isAbsent && !hasDefault) {\n value = false;\n }\n else if (opt[1 /* BooleanFlags.shouldCastTrue */] &&\n (value === '' || value === hyphenate(key))) {\n value = true;\n }\n }\n }\n return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.propsCache;\n const cached = cache.get(comp);\n if (cached) {\n return cached;\n }\n const raw = comp.props;\n const normalized = {};\n const needCastKeys = [];\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendProps = (raw) => {\n hasExtends = true;\n const [props, keys] = normalizePropsOptions(raw, appContext, true);\n extend(normalized, props);\n if (keys)\n needCastKeys.push(...keys);\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendProps);\n }\n if (comp.extends) {\n extendProps(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendProps);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, EMPTY_ARR);\n }\n return EMPTY_ARR;\n }\n if (isArray(raw)) {\n for (let i = 0; i < raw.length; i++) {\n if ((process.env.NODE_ENV !== 'production') && !isString(raw[i])) {\n warn(`props must be strings when using array syntax.`, raw[i]);\n }\n const normalizedKey = camelize(raw[i]);\n if (validatePropName(normalizedKey)) {\n normalized[normalizedKey] = EMPTY_OBJ;\n }\n }\n }\n else if (raw) {\n if ((process.env.NODE_ENV !== 'production') && !isObject(raw)) {\n warn(`invalid props options`, raw);\n }\n for (const key in raw) {\n const normalizedKey = camelize(key);\n if (validatePropName(normalizedKey)) {\n const opt = raw[key];\n const prop = (normalized[normalizedKey] =\n isArray(opt) || isFunction(opt) ? { type: opt } : Object.assign({}, opt));\n if (prop) {\n const booleanIndex = getTypeIndex(Boolean, prop.type);\n const stringIndex = getTypeIndex(String, prop.type);\n prop[0 /* BooleanFlags.shouldCast */] = booleanIndex > -1;\n prop[1 /* BooleanFlags.shouldCastTrue */] =\n stringIndex < 0 || booleanIndex < stringIndex;\n // if the prop needs boolean casting or default value\n if (booleanIndex > -1 || hasOwn(prop, 'default')) {\n needCastKeys.push(normalizedKey);\n }\n }\n }\n }\n }\n const res = [normalized, needCastKeys];\n if (isObject(comp)) {\n cache.set(comp, res);\n }\n return res;\n}\nfunction validatePropName(key) {\n if (key[0] !== '$') {\n return true;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid prop name: \"${key}\" is a reserved property.`);\n }\n return false;\n}\n// use function string name to check type constructors\n// so that it works across vms / iframes.\nfunction getType(ctor) {\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ctor === null ? 'null' : '';\n}\nfunction isSameType(a, b) {\n return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n if (isArray(expectedTypes)) {\n return expectedTypes.findIndex(t => isSameType(t, type));\n }\n else if (isFunction(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1;\n }\n return -1;\n}\n/**\n * dev only\n */\nfunction validateProps(rawProps, props, instance) {\n const resolvedValues = toRaw(props);\n const options = instance.propsOptions[0];\n for (const key in options) {\n let opt = options[key];\n if (opt == null)\n continue;\n validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)));\n }\n}\n/**\n * dev only\n */\nfunction validateProp(name, value, prop, isAbsent) {\n const { type, required, validator } = prop;\n // required!\n if (required && isAbsent) {\n warn('Missing required prop: \"' + name + '\"');\n return;\n }\n // missing but optional\n if (value == null && !prop.required) {\n return;\n }\n // type check\n if (type != null && type !== true) {\n let isValid = false;\n const types = isArray(type) ? type : [type];\n const expectedTypes = [];\n // value is valid as long as one of the specified types match\n for (let i = 0; i < types.length && !isValid; i++) {\n const { valid, expectedType } = assertType(value, types[i]);\n expectedTypes.push(expectedType || '');\n isValid = valid;\n }\n if (!isValid) {\n warn(getInvalidTypeMessage(name, value, expectedTypes));\n return;\n }\n }\n // custom validator\n if (validator && !validator(value)) {\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n }\n}\nconst isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol,BigInt');\n/**\n * dev only\n */\nfunction assertType(value, type) {\n let valid;\n const expectedType = getType(type);\n if (isSimpleType(expectedType)) {\n const t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n }\n else if (expectedType === 'Object') {\n valid = isObject(value);\n }\n else if (expectedType === 'Array') {\n valid = isArray(value);\n }\n else if (expectedType === 'null') {\n valid = value === null;\n }\n else {\n valid = value instanceof type;\n }\n return {\n valid,\n expectedType\n };\n}\n/**\n * dev only\n */\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n let message = `Invalid prop: type check failed for prop \"${name}\".` +\n ` Expected ${expectedTypes.map(capitalize).join(' | ')}`;\n const expectedType = expectedTypes[0];\n const receivedType = toRawType(value);\n const expectedValue = styleValue(value, expectedType);\n const receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += ` with value ${expectedValue}`;\n }\n message += `, got ${receivedType} `;\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += `with value ${receivedValue}.`;\n }\n return message;\n}\n/**\n * dev only\n */\nfunction styleValue(value, type) {\n if (type === 'String') {\n return `\"${value}\"`;\n }\n else if (type === 'Number') {\n return `${Number(value)}`;\n }\n else {\n return `${value}`;\n }\n}\n/**\n * dev only\n */\nfunction isExplicable(type) {\n const explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(elem => type.toLowerCase() === elem);\n}\n/**\n * dev only\n */\nfunction isBoolean(...args) {\n return args.some(elem => elem.toLowerCase() === 'boolean');\n}\n\nconst isInternalKey = (key) => key[0] === '_' || key === '$stable';\nconst normalizeSlotValue = (value) => isArray(value)\n ? value.map(normalizeVNode)\n : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n if (rawSlot._n) {\n // already normalized - #5353\n return rawSlot;\n }\n const normalized = withCtx((...args) => {\n if ((process.env.NODE_ENV !== 'production') && currentInstance) {\n warn(`Slot \"${key}\" invoked outside of the render function: ` +\n `this will not track dependencies used in the slot. ` +\n `Invoke the slot function inside the render function instead.`);\n }\n return normalizeSlotValue(rawSlot(...args));\n }, ctx);\n normalized._c = false;\n return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n const ctx = rawSlots._ctx;\n for (const key in rawSlots) {\n if (isInternalKey(key))\n continue;\n const value = rawSlots[key];\n if (isFunction(value)) {\n slots[key] = normalizeSlot(key, value, ctx);\n }\n else if (value != null) {\n if ((process.env.NODE_ENV !== 'production') &&\n !(false )) {\n warn(`Non-function value encountered for slot \"${key}\". ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(value);\n slots[key] = () => normalized;\n }\n }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n if ((process.env.NODE_ENV !== 'production') &&\n !isKeepAlive(instance.vnode) &&\n !(false )) {\n warn(`Non-function value encountered for default slot. ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(children);\n instance.slots.default = () => normalized;\n};\nconst initSlots = (instance, children) => {\n if (instance.vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // users can get the shallow readonly version of the slots object through `this.$slots`,\n // we should avoid the proxy object polluting the slots of the internal instance\n instance.slots = toRaw(children);\n // make compiler marker non-enumerable\n def(children, '_', type);\n }\n else {\n normalizeObjectSlots(children, (instance.slots = {}));\n }\n }\n else {\n instance.slots = {};\n if (children) {\n normalizeVNodeSlots(instance, children);\n }\n }\n def(instance.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance, children, optimized) => {\n const { vnode, slots } = instance;\n let needDeletionCheck = true;\n let deletionComparisonTarget = EMPTY_OBJ;\n if (vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // compiled slots.\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // Parent was HMR updated so slot content may have changed.\n // force update slots and mark instance for hmr as well\n extend(slots, children);\n }\n else if (optimized && type === 1 /* SlotFlags.STABLE */) {\n // compiled AND stable.\n // no need to update, and skip stale slots removal.\n needDeletionCheck = false;\n }\n else {\n // compiled but dynamic (v-if/v-for on slots) - update slots, but skip\n // normalization.\n extend(slots, children);\n // #2893\n // when rendering the optimized slots by manually written render function,\n // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,\n // i.e. let the `renderSlot` create the bailed Fragment\n if (!optimized && type === 1 /* SlotFlags.STABLE */) {\n delete slots._;\n }\n }\n }\n else {\n needDeletionCheck = !children.$stable;\n normalizeObjectSlots(children, slots);\n }\n deletionComparisonTarget = children;\n }\n else if (children) {\n // non slot object children (direct value) passed to a component\n normalizeVNodeSlots(instance, children);\n deletionComparisonTarget = { default: 1 };\n }\n // delete stale slots\n if (needDeletionCheck) {\n for (const key in slots) {\n if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\n delete slots[key];\n }\n }\n }\n};\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: undefined,\n warnHandler: undefined,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: Object.create(null),\n optionsCache: new WeakMap(),\n propsCache: new WeakMap(),\n emitsCache: new WeakMap()\n };\n}\nlet uid = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = Object.assign({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n (process.env.NODE_ENV !== 'production') && warn(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = new Set();\n let isMounted = false;\n const app = (context.app = {\n _uid: uid++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`app.config cannot be replaced. Modify individual options instead.`);\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n (process.env.NODE_ENV !== 'production') && warn(`Plugin has already been applied to target app.`);\n }\n else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n }\n else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`A plugin must either be a function or an object with an \"install\" ` +\n `function.`);\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixin has already been applied to target app' +\n (mixin.name ? `: ${mixin.name}` : ''));\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixins are only available in builds supporting Options API');\n }\n return app;\n },\n component(name, component) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.components[name]) {\n warn(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.directives[name]) {\n warn(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n mount(rootContainer, isHydrate, isSVG) {\n if (!isMounted) {\n // #5571\n if ((process.env.NODE_ENV !== 'production') && rootContainer.__vue_app__) {\n warn(`There is already an app instance mounted on the host container.\\n` +\n ` If you want to mount another app on the same host container,` +\n ` you need to unmount the previous app by calling \\`app.unmount()\\` first.`);\n }\n const vnode = createVNode(rootComponent, rootProps);\n // store app context on the root VNode.\n // this will be set on the root instance on initial mount.\n vnode.appContext = context;\n // HMR root reload\n if ((process.env.NODE_ENV !== 'production')) {\n context.reload = () => {\n render(cloneVNode(vnode), rootContainer, isSVG);\n };\n }\n if (isHydrate && hydrate) {\n hydrate(vnode, rootContainer);\n }\n else {\n render(vnode, rootContainer, isSVG);\n }\n isMounted = true;\n app._container = rootContainer;\n rootContainer.__vue_app__ = app;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = vnode.component;\n devtoolsInitApp(app, version);\n }\n return getExposeProxy(vnode.component) || vnode.component.proxy;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`App has already been mounted.\\n` +\n `If you want to remount the same app, move your app creation logic ` +\n `into a factory function and create fresh app instances for each ` +\n `mount - e.g. \\`const createMyApp = () => createApp(App)\\``);\n }\n },\n unmount() {\n if (isMounted) {\n render(null, app._container);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = null;\n devtoolsUnmountApp(app);\n }\n delete app._container.__vue_app__;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Cannot unmount an app that is not mounted.`);\n }\n },\n provide(key, value) {\n if ((process.env.NODE_ENV !== 'production') && key in context.provides) {\n warn(`App already provides property with key \"${String(key)}\". ` +\n `It will be overwritten with the new value.`);\n }\n context.provides[key] = value;\n return app;\n }\n });\n return app;\n };\n}\n\n/**\n * Function for handling a template ref\n */\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n // when mounting async components, nothing needs to be done,\n // because the template ref is forwarded to inner component\n return;\n }\n const refValue = vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */\n ? getExposeProxy(vnode.component) || vnode.component.proxy\n : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if ((process.env.NODE_ENV !== 'production') && !owner) {\n warn(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +\n `A vnode with ref must be created inside the render function.`);\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs;\n const setupState = owner.setupState;\n // dynamic ref changed. unset old ref\n if (oldRef != null && oldRef !== ref) {\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (hasOwn(setupState, oldRef)) {\n setupState[oldRef] = null;\n }\n }\n else if (isRef(oldRef)) {\n oldRef.value = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12 /* ErrorCodes.FUNCTION_REF */, [value, refs]);\n }\n else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString\n ? hasOwn(setupState, ref)\n ? setupState[ref]\n : refs[ref]\n : ref.value;\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n }\n else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (hasOwn(setupState, ref)) {\n setupState[ref] = refs[ref];\n }\n }\n else {\n ref.value = [refValue];\n if (rawRef.k)\n refs[rawRef.k] = ref.value;\n }\n }\n else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n }\n else if (_isString) {\n refs[ref] = value;\n if (hasOwn(setupState, ref)) {\n setupState[ref] = value;\n }\n }\n else if (_isRef) {\n ref.value = value;\n if (rawRef.k)\n refs[rawRef.k] = value;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n };\n if (value) {\n doSet.id = -1;\n queuePostRenderEffect(doSet, parentSuspense);\n }\n else {\n doSet();\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n }\n}\n\nlet hasMismatch = false;\nconst isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';\nconst isComment = (node) => node.nodeType === 8 /* DOMNodeTypes.COMMENT */;\n// Note: hydration is DOM-specific\n// But we have to place it in core due to tight coupling with core - splitting\n// it out creates a ton of unnecessary complexity.\n// Hydration also depends on some renderer internal logic which needs to be\n// passed in via arguments.\nfunction createHydrationFunctions(rendererInternals) {\n const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to hydrate existing markup but container is empty. ` +\n `Performing full mount instead.`);\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hasMismatch = false;\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n if (hasMismatch && !false) {\n // this error should show up in production\n console.error(`Hydration completed but contains mismatches.`);\n }\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n const isFragmentStart = isComment(node) && node.data === '[';\n const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3 /* DOMNodeTypes.TEXT */) {\n // #5728 empty text node inside a slot can cause hydration failure\n // because the server rendered HTML won't contain a text node\n if (vnode.children === '') {\n insert((vnode.el = createText('')), parentNode(node), node);\n nextNode = node;\n }\n else {\n nextNode = onMismatch();\n }\n }\n else {\n if (node.data !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text mismatch:` +\n `\\n- Client: ${JSON.stringify(node.data)}` +\n `\\n- Server: ${JSON.stringify(vnode.children)}`);\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (domType !== 8 /* DOMNodeTypes.COMMENT */ || isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n // entire template is static but SSRed as a fragment\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 /* DOMNodeTypes.ELEMENT */ || domType === 3 /* DOMNodeTypes.TEXT */) {\n // determine anchor, adopt content\n nextNode = node;\n // if the static vnode has its content stripped during build,\n // adopt it from the server-rendered HTML.\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children +=\n nextNode.nodeType === 1 /* DOMNodeTypes.ELEMENT */\n ? nextNode.outerHTML\n : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n }\n else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n if (domType !== 1 /* DOMNodeTypes.ELEMENT */ ||\n vnode.type.toLowerCase() !==\n node.tagName.toLowerCase()) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n // when setting up the render effect, if the initial vnode already\n // has .el set, the component will perform hydration instead of mount\n // on its sub-tree.\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);\n // component may be async, so in the case of fragments we cannot rely\n // on component's rendered output to determine the end of the fragment\n // instead, we do a lookahead to find the end anchor node.\n nextNode = isFragmentStart\n ? locateClosingAsyncAnchor(node)\n : nextSibling(node);\n // #4293 teleport as component root\n if (nextNode &&\n isComment(nextNode) &&\n nextNode.data === 'teleport end') {\n nextNode = nextSibling(nextNode);\n }\n // #3787\n // if component is async, it may get moved / unmounted before its\n // inner component is loaded, so we need to give it a placeholder\n // vnode that matches its adopted DOM.\n if (isAsyncWrapper(vnode)) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode\n ? nextNode.previousSibling\n : container.lastChild;\n }\n else {\n subTree =\n node.nodeType === 3 ? createTextVNode('') : createVNode('div');\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n if (domType !== 8 /* DOMNodeTypes.COMMENT */) {\n nextNode = onMismatch();\n }\n else {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);\n }\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid HostVNode type:', type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs } = vnode;\n // #4006 for form elements with non-string v-model value bindings\n // e.g. <option :value=\"obj\">, <input type=\"checkbox\" :true-value=\"1\">\n const forcePatchValue = (type === 'input' && dirs) || type === 'option';\n // skip props & children if this is hoisted static nodes\n // #5405 in dev, always hydrate children for HMR\n if ((process.env.NODE_ENV !== 'production') || forcePatchValue || patchFlag !== -1 /* PatchFlags.HOISTED */) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n if (forcePatchValue ||\n !optimized ||\n patchFlag & (16 /* PatchFlags.FULL_PROPS */ | 32 /* PatchFlags.HYDRATE_EVENTS */)) {\n for (const key in props) {\n if ((forcePatchValue && key.endsWith('value')) ||\n (isOn(key) && !isReservedProp(key))) {\n patchProp(el, key, null, props[key], false, undefined, parentComponent);\n }\n }\n }\n else if (props.onClick) {\n // Fast path for click listeners (which is most often) to avoid\n // iterating through props.\n patchProp(el, 'onClick', null, props.onClick, false, undefined, parentComponent);\n }\n }\n // vnode / directive hooks\n let vnodeHooks;\n if ((vnodeHooks = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n // children\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */ &&\n // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized);\n let hasWarned = false;\n while (next) {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${vnode.type}>: ` +\n `server rendered element contains more child nodes than client vdom.`);\n hasWarned = true;\n }\n // The SSRed DOM contains more nodes than it should. Remove them.\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n }\n else if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n if (el.textContent !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text content mismatch in <${vnode.type}>:\\n` +\n `- Client: ${el.textContent}\\n` +\n `- Server: ${vnode.children}`);\n el.textContent = vnode.children;\n }\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized\n ? children[i]\n : (children[i] = normalizeVNode(children[i]));\n if (node) {\n node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n else if (vnode.type === Text && !vnode.children) {\n continue;\n }\n else {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${container.tagName.toLowerCase()}>: ` +\n `server rendered element contains fewer child nodes than client vdom.`);\n hasWarned = true;\n }\n // the SSRed DOM didn't contain enough nodes. Mount the missing ones.\n patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);\n if (next && isComment(next) && next.data === ']') {\n return nextSibling((vnode.anchor = next));\n }\n else {\n // fragment didn't hydrate successfully, since we didn't get a end anchor\n // back. This should have led to node/children mismatch warnings.\n hasMismatch = true;\n // since the anchor is missing, we need to create one and insert it\n insert((vnode.anchor = createComment(`]`)), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration node mismatch:\\n- Client vnode:`, vnode.type, `\\n- Server rendered DOM:`, node, node.nodeType === 3 /* DOMNodeTypes.TEXT */\n ? `(text)`\n : isComment(node) && node.data === '['\n ? `(start of fragment)`\n : ``);\n vnode.el = null;\n if (isFragment) {\n // remove excessive fragment nodes\n const end = locateClosingAsyncAnchor(node);\n while (true) {\n const next = nextSibling(node);\n if (next && next !== end) {\n remove(next);\n }\n else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n return next;\n };\n const locateClosingAsyncAnchor = (node) => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === '[')\n match++;\n if (node.data === ']') {\n if (match === 0) {\n return nextSibling(node);\n }\n else {\n match--;\n }\n }\n }\n }\n return node;\n };\n return [hydrate, hydrateNode];\n}\n\n/* eslint-disable no-restricted-globals */\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n perf.mark(`vue-${type}-${instance.uid}`);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction endMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n const startTag = `vue-${type}-${instance.uid}`;\n const endTag = startTag + `:end`;\n perf.mark(endTag);\n perf.measure(`<${formatComponentName(instance, instance.type)}> ${type}`, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction isSupported() {\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\n\n/**\n * This is only called in esm-bundler builds.\n * It is called when a renderer is created, in `baseCreateRenderer` so that\n * importing runtime-core is side-effects free.\n *\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n const needWarn = [];\n if (typeof __VUE_OPTIONS_API__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_OPTIONS_API__`);\n getGlobalThis().__VUE_OPTIONS_API__ = true;\n }\n if (typeof __VUE_PROD_DEVTOOLS__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n }\n if ((process.env.NODE_ENV !== 'production') && needWarn.length) {\n const multi = needWarn.length > 1;\n console.warn(`Feature flag${multi ? `s` : ``} ${needWarn.join(', ')} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, ` +\n `which expects these compile-time feature flags to be globally injected ` +\n `via the bundler config in order to get better tree-shaking in the ` +\n `production bundle.\\n\\n` +\n `For more details, see https://link.vuejs.org/feature-flags.`);\n }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense\n ;\n/**\n * The createRenderer function accepts two generic arguments:\n * HostNode and HostElement, corresponding to Node and Element types in the\n * host environment. For example, for runtime-dom, HostNode would be the DOM\n * `Node` interface and HostElement would be the DOM `Element` interface.\n *\n * Custom renderers can pass in the platform specific types like this:\n *\n * ``` js\n * const { render, createApp } = createRenderer<Node, Element>({\n * patchProp,\n * ...nodeOps\n * })\n * ```\n */\nfunction createRenderer(options) {\n return baseCreateRenderer(options);\n}\n// Separate API for creating hydration-enabled renderer.\n// Hydration logic is only used when calling this function, making it\n// tree-shakable.\nfunction createHydrationRenderer(options) {\n return baseCreateRenderer(options, createHydrationFunctions);\n}\n// implementation\nfunction baseCreateRenderer(options, createHydrationFns) {\n // compile-time feature flags check\n {\n initFeatureFlags();\n }\n const target = getGlobalThis();\n target.__VUE__ = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n }\n const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, insertStaticContent: hostInsertStaticContent } = options;\n // Note: functions inside this closure should use `const xxx = () => {}`\n // style in order to prevent being inlined by minifiers.\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = (process.env.NODE_ENV !== 'production') && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n if (n1 === n2) {\n return;\n }\n // patching & not same type, unmount old tree\n if (n1 && !isSameVNodeType(n1, n2)) {\n anchor = getNextHostNode(n1);\n unmount(n1, parentComponent, parentSuspense, true);\n n1 = null;\n }\n if (n2.patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n n2.dynamicChildren = null;\n }\n const { type, ref, shapeFlag } = n2;\n switch (type) {\n case Text:\n processText(n1, n2, container, anchor);\n break;\n case Comment:\n processCommentNode(n1, n2, container, anchor);\n break;\n case Static:\n if (n1 == null) {\n mountStaticNode(n2, container, anchor, isSVG);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n patchStaticNode(n1, n2, container, isSVG);\n }\n break;\n case Fragment:\n processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid VNode type:', type, `(${typeof type})`);\n }\n }\n // set ref\n if (ref != null && parentComponent) {\n setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n }\n };\n const processText = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateText(n2.children)), container, anchor);\n }\n else {\n const el = (n2.el = n1.el);\n if (n2.children !== n1.children) {\n hostSetText(el, n2.children);\n }\n }\n };\n const processCommentNode = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateComment(n2.children || '')), container, anchor);\n }\n else {\n // there's no support for dynamic comments\n n2.el = n1.el;\n }\n };\n const mountStaticNode = (n2, container, anchor, isSVG) => {\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);\n };\n /**\n * Dev / HMR only\n */\n const patchStaticNode = (n1, n2, container, isSVG) => {\n // static nodes are only patched during dev for HMR\n if (n2.children !== n1.children) {\n const anchor = hostNextSibling(n1.anchor);\n // remove existing\n removeStaticNode(n1);\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG);\n }\n else {\n n2.el = n1.el;\n n2.anchor = n1.anchor;\n }\n };\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostInsert(el, container, nextSibling);\n el = next;\n }\n hostInsert(anchor, container, nextSibling);\n };\n const removeStaticNode = ({ el, anchor }) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostRemove(el);\n el = next;\n }\n hostRemove(anchor);\n };\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n isSVG = isSVG || n2.type === 'svg';\n if (n1 == null) {\n mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let el;\n let vnodeHook;\n const { type, props, shapeFlag, transition, dirs } = vnode;\n el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);\n // mount children first, since some props may rely on child content\n // being already rendered, e.g. `<select value>`\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(el, vnode.children);\n }\n else if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n for (const key in props) {\n if (key !== 'value' && !isReservedProp(key)) {\n hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n /**\n * Special case for setting value on DOM elements:\n * - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024)\n * - it needs to be forced (#1471)\n * #2353 proposes adding another renderer option to configure this, but\n * the properties affects are so finite it is worth special casing it\n * here to reduce the complexity. (Special casing it also should not\n * affect non-DOM renderers)\n */\n if ('value' in props) {\n hostPatchProp(el, 'value', null, props.value);\n }\n if ((vnodeHook = props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n }\n // scopeId\n setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n Object.defineProperty(el, '__vnode', {\n value: vnode,\n enumerable: false\n });\n Object.defineProperty(el, '__vueParentComponent', {\n value: parentComponent,\n enumerable: false\n });\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved\n // #1689 For inside suspense + suspense resolved case, just call it\n const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) &&\n transition &&\n !transition.persisted;\n if (needCallTransitionHooks) {\n transition.beforeEnter(el);\n }\n hostInsert(el, container, anchor);\n if ((vnodeHook = props && props.onVnodeMounted) ||\n needCallTransitionHooks ||\n dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n };\n const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n if (scopeId) {\n hostSetScopeId(el, scopeId);\n }\n if (slotScopeIds) {\n for (let i = 0; i < slotScopeIds.length; i++) {\n hostSetScopeId(el, slotScopeIds[i]);\n }\n }\n if (parentComponent) {\n let subTree = parentComponent.subTree;\n if ((process.env.NODE_ENV !== 'production') &&\n subTree.patchFlag > 0 &&\n subTree.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n subTree =\n filterSingleRoot(subTree.children) || subTree;\n }\n if (vnode === subTree) {\n const parentVNode = parentComponent.vnode;\n setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);\n }\n }\n };\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {\n for (let i = start; i < children.length; i++) {\n const child = (children[i] = optimized\n ? cloneIfMounted(children[i])\n : normalizeVNode(children[i]));\n patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const el = (n2.el = n1.el);\n let { patchFlag, dynamicChildren, dirs } = n2;\n // #1426 take the old vnode's patch flag into account since user may clone a\n // compiler-generated vnode, which de-opts to FULL_PROPS\n patchFlag |= n1.patchFlag & 16 /* PatchFlags.FULL_PROPS */;\n const oldProps = n1.props || EMPTY_OBJ;\n const newProps = n2.props || EMPTY_OBJ;\n let vnodeHook;\n // disable recurse in beforeUpdate hooks\n parentComponent && toggleRecurse(parentComponent, false);\n if ((vnodeHook = newProps.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n }\n if (dirs) {\n invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate');\n }\n parentComponent && toggleRecurse(parentComponent, true);\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // HMR updated, force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n const areChildrenSVG = isSVG && n2.type !== 'foreignObject';\n if (dynamicChildren) {\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n }\n else if (!optimized) {\n // full diff\n patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);\n }\n if (patchFlag > 0) {\n // the presence of a patchFlag means this element's render code was\n // generated by the compiler and can take the fast path.\n // in this path old node and new node are guaranteed to have the same shape\n // (i.e. at the exact same position in the source template)\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n // element props contain dynamic keys, full diff needed\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n else {\n // class\n // this flag is matched when the element has dynamic class bindings.\n if (patchFlag & 2 /* PatchFlags.CLASS */) {\n if (oldProps.class !== newProps.class) {\n hostPatchProp(el, 'class', null, newProps.class, isSVG);\n }\n }\n // style\n // this flag is matched when the element has dynamic style bindings\n if (patchFlag & 4 /* PatchFlags.STYLE */) {\n hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);\n }\n // props\n // This flag is matched when the element has dynamic prop/attr bindings\n // other than class and style. The keys of dynamic prop/attrs are saved for\n // faster iteration.\n // Note dynamic keys like :[foo]=\"bar\" will cause this optimization to\n // bail out and go through a full diff because we need to unset the old key\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // if the flag is present then dynamicProps must be non-null\n const propsToUpdate = n2.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n const key = propsToUpdate[i];\n const prev = oldProps[key];\n const next = newProps[key];\n // #1471 force patch value\n if (next !== prev || key === 'value') {\n hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n }\n // text\n // This flag is matched when the element has only dynamic text children.\n if (patchFlag & 1 /* PatchFlags.TEXT */) {\n if (n1.children !== n2.children) {\n hostSetElementText(el, n2.children);\n }\n }\n }\n else if (!optimized && dynamicChildren == null) {\n // unoptimized, full diff\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated');\n }, parentSuspense);\n }\n };\n // The fast path for blocks.\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {\n for (let i = 0; i < newChildren.length; i++) {\n const oldVNode = oldChildren[i];\n const newVNode = newChildren[i];\n // Determine the container (parent element) for the patch.\n const container = \n // oldVNode may be an errored async setup() component inside Suspense\n // which will not have a mounted element\n oldVNode.el &&\n // - In the case of a Fragment, we need to provide the actual parent\n // of the Fragment itself so it can move its children.\n (oldVNode.type === Fragment ||\n // - In the case of different nodes, there is going to be a replacement\n // which also requires the correct parent container\n !isSameVNodeType(oldVNode, newVNode) ||\n // - In the case of a component, it could contain anything.\n oldVNode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 64 /* ShapeFlags.TELEPORT */))\n ? hostParentNode(oldVNode.el)\n : // In other cases, the parent container is not actually used so we\n // just pass the block element here to avoid a DOM parentNode call.\n fallbackContainer;\n patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);\n }\n };\n const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\n if (oldProps !== newProps) {\n if (oldProps !== EMPTY_OBJ) {\n for (const key in oldProps) {\n if (!isReservedProp(key) && !(key in newProps)) {\n hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n for (const key in newProps) {\n // empty string is not valid prop\n if (isReservedProp(key))\n continue;\n const next = newProps[key];\n const prev = oldProps[key];\n // defer patching value\n if (next !== prev && key !== 'value') {\n hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n if ('value' in newProps) {\n hostPatchProp(el, 'value', oldProps.value, newProps.value);\n }\n }\n };\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));\n const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));\n let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n if ((process.env.NODE_ENV !== 'production') &&\n // #5523 dev root fragment may inherit directives\n (isHmrUpdating || patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */)) {\n // HMR updated / Dev root fragment (w/ comments), force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n // check if this is a slot fragment with :slotted scope ids\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n if (n1 == null) {\n hostInsert(fragmentStartAnchor, container, anchor);\n hostInsert(fragmentEndAnchor, container, anchor);\n // a fragment can only have array children\n // since they are either generated by the compiler, or implicitly created\n // from arrays.\n mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n if (patchFlag > 0 &&\n patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */ &&\n dynamicChildren &&\n // #2715 the previous fragment could've been a BAILed one as a result\n // of renderSlot() with no valid children\n n1.dynamicChildren) {\n // a stable fragment (template root or <template v-for>) doesn't need to\n // patch children order, but it may contain dynamicChildren.\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n else if (\n // #2080 if the stable fragment has a key, it's a <template v-for> that may\n // get moved around. Make sure all root level vnodes inherit el.\n // #2134 or if it's a component root, it may also get moved around\n // as the component is being moved.\n n2.key != null ||\n (parentComponent && n2 === parentComponent.subTree)) {\n traverseStaticChildren(n1, n2, true /* shallow */);\n }\n }\n else {\n // keyed / unkeyed, or manual fragments.\n // for keyed & unkeyed, since they are compiler generated from v-for,\n // each child is guaranteed to be a block so the fragment will never\n // have dynamicChildren.\n patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n };\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n n2.slotScopeIds = slotScopeIds;\n if (n1 == null) {\n if (n2.shapeFlag & 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */) {\n parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);\n }\n else {\n mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\n }\n }\n else {\n updateComponent(n1, n2, optimized);\n }\n };\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\n const instance = (initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense));\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n registerHMR(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(initialVNode);\n startMeasure(instance, `mount`);\n }\n // inject renderer internals for keepAlive\n if (isKeepAlive(initialVNode)) {\n instance.ctx.renderer = internals;\n }\n // resolve props and slots for setup context\n {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `init`);\n }\n setupComponent(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `init`);\n }\n }\n // setup() is async. This component relies on async logic to be resolved\n // before proceeding\n if (instance.asyncDep) {\n parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\n // Give it a placeholder if this is not hydration\n // TODO handle self-defined fallback\n if (!initialVNode.el) {\n const placeholder = (instance.subTree = createVNode(Comment));\n processCommentNode(null, placeholder, container, anchor);\n }\n return;\n }\n setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n endMeasure(instance, `mount`);\n }\n };\n const updateComponent = (n1, n2, optimized) => {\n const instance = (n2.component = n1.component);\n if (shouldUpdateComponent(n1, n2, optimized)) {\n if (instance.asyncDep &&\n !instance.asyncResolved) {\n // async & still pending - just update props and slots\n // since the component's reactive effect for render isn't set-up yet\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(n2);\n }\n updateComponentPreRender(instance, n2, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n return;\n }\n else {\n // normal update\n instance.next = n2;\n // in case the child component is also queued, remove it to avoid\n // double updating the same child component in the same flush.\n invalidateJob(instance.update);\n // instance.update is the reactive effect.\n instance.update();\n }\n }\n else {\n // no update needed. just copy over properties\n n2.el = n1.el;\n instance.vnode = n2;\n }\n };\n const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\n const componentUpdateFn = () => {\n if (!instance.isMounted) {\n let vnodeHook;\n const { el, props } = initialVNode;\n const { bm, m, parent } = instance;\n const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n toggleRecurse(instance, false);\n // beforeMount hook\n if (bm) {\n invokeArrayFns(bm);\n }\n // onVnodeBeforeMount\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parent, initialVNode);\n }\n toggleRecurse(instance, true);\n if (el && hydrateNode) {\n // vnode has adopted host node - perform hydration instead of mount.\n const hydrateSubTree = () => {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n instance.subTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `hydrate`);\n }\n hydrateNode(el, instance.subTree, instance, parentSuspense, null);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `hydrate`);\n }\n };\n if (isAsyncWrapperVNode) {\n initialVNode.type.__asyncLoader().then(\n // note: we are moving the render call into an async callback,\n // which means it won't track dependencies - but it's ok because\n // a server-rendered async wrapper is already in resolved state\n // and it will never need to change.\n () => !instance.isUnmounted && hydrateSubTree());\n }\n else {\n hydrateSubTree();\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const subTree = (instance.subTree = renderComponentRoot(instance));\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n initialVNode.el = subTree.el;\n }\n // mounted hook\n if (m) {\n queuePostRenderEffect(m, parentSuspense);\n }\n // onVnodeMounted\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeMounted)) {\n const scopedInitialVNode = initialVNode;\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);\n }\n // activated hook for keep-alive roots.\n // #1742 activated hook must be accessed after first render\n // since the hook may be injected by a child keep-alive\n if (initialVNode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */ ||\n (parent &&\n isAsyncWrapper(parent.vnode) &&\n parent.vnode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */)) {\n instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n }\n instance.isMounted = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance);\n }\n // #2458: deference mount-only object parameters to prevent memleaks\n initialVNode = container = anchor = null;\n }\n else {\n // updateComponent\n // This is triggered by mutation of component's own state (next: null)\n // OR parent calling processComponent (next: VNode)\n let { next, bu, u, parent, vnode } = instance;\n let originNext = next;\n let vnodeHook;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(next || instance.vnode);\n }\n // Disallow component effect recursion during pre-lifecycle hooks.\n toggleRecurse(instance, false);\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n }\n else {\n next = vnode;\n }\n // beforeUpdate hook\n if (bu) {\n invokeArrayFns(bu);\n }\n // onVnodeBeforeUpdate\n if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parent, next, vnode);\n }\n toggleRecurse(instance, true);\n // render\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const nextTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n const prevTree = instance.subTree;\n instance.subTree = nextTree;\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(prevTree, nextTree, \n // parent may have changed if it's in a teleport\n hostParentNode(prevTree.el), \n // anchor may have changed if it's in a fragment\n getNextHostNode(prevTree), instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n next.el = nextTree.el;\n if (originNext === null) {\n // self-triggered update. In case of HOC, update parent component\n // vnode el. HOC is indicated by parent instance's subTree pointing\n // to child component's vnode\n updateHOCHostEl(instance, nextTree.el);\n }\n // updated hook\n if (u) {\n queuePostRenderEffect(u, parentSuspense);\n }\n // onVnodeUpdated\n if ((vnodeHook = next.props && next.props.onVnodeUpdated)) {\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n }\n };\n // create reactive effect for rendering\n const effect = (instance.effect = new ReactiveEffect(componentUpdateFn, () => queueJob(update), instance.scope // track it in component's effect scope\n ));\n const update = (instance.update = () => effect.run());\n update.id = instance.uid;\n // allowRecurse\n // #1801, #2043 component render effects should allow recursive updates\n toggleRecurse(instance, true);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = instance.rtc\n ? e => invokeArrayFns(instance.rtc, e)\n : void 0;\n effect.onTrigger = instance.rtg\n ? e => invokeArrayFns(instance.rtg, e)\n : void 0;\n update.ownerInstance = instance;\n }\n update();\n };\n const updateComponentPreRender = (instance, nextVNode, optimized) => {\n nextVNode.component = instance;\n const prevProps = instance.vnode.props;\n instance.vnode = nextVNode;\n instance.next = null;\n updateProps(instance, nextVNode.props, prevProps, optimized);\n updateSlots(instance, nextVNode.children, optimized);\n pauseTracking();\n // props update may have triggered pre-flush watchers.\n // flush them before the render update.\n flushPreFlushCbs();\n resetTracking();\n };\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {\n const c1 = n1 && n1.children;\n const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n const c2 = n2.children;\n const { patchFlag, shapeFlag } = n2;\n // fast path\n if (patchFlag > 0) {\n if (patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */) {\n // this could be either fully-keyed or mixed (some keyed some not)\n // presence of patchFlag means children are guaranteed to be arrays\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n else if (patchFlag & 256 /* PatchFlags.UNKEYED_FRAGMENT */) {\n // unkeyed\n patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n }\n // children has 3 possibilities: text, array or no children.\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n // text children fast path\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n unmountChildren(c1, parentComponent, parentSuspense);\n }\n if (c2 !== c1) {\n hostSetElementText(container, c2);\n }\n }\n else {\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // prev children was array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // two arrays, cannot assume anything, do full diff\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n // no new children, just unmount old\n unmountChildren(c1, parentComponent, parentSuspense, true);\n }\n }\n else {\n // prev children was text OR null\n // new children is array OR null\n if (prevShapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(container, '');\n }\n // mount new if array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n }\n };\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n c1 = c1 || EMPTY_ARR;\n c2 = c2 || EMPTY_ARR;\n const oldLength = c1.length;\n const newLength = c2.length;\n const commonLength = Math.min(oldLength, newLength);\n let i;\n for (i = 0; i < commonLength; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n if (oldLength > newLength) {\n // remove old\n unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);\n }\n else {\n // mount new\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);\n }\n };\n // can be all-keyed or mixed\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let i = 0;\n const l2 = c2.length;\n let e1 = c1.length - 1; // prev ending index\n let e2 = l2 - 1; // next ending index\n // 1. sync from start\n // (a b) c\n // (a b) d e\n while (i <= e1 && i <= e2) {\n const n1 = c1[i];\n const n2 = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n i++;\n }\n // 2. sync from end\n // a (b c)\n // d e (b c)\n while (i <= e1 && i <= e2) {\n const n1 = c1[e1];\n const n2 = (c2[e2] = optimized\n ? cloneIfMounted(c2[e2])\n : normalizeVNode(c2[e2]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n e1--;\n e2--;\n }\n // 3. common sequence + mount\n // (a b)\n // (a b) c\n // i = 2, e1 = 1, e2 = 2\n // (a b)\n // c (a b)\n // i = 0, e1 = -1, e2 = 0\n if (i > e1) {\n if (i <= e2) {\n const nextPos = e2 + 1;\n const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n while (i <= e2) {\n patch(null, (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i])), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n i++;\n }\n }\n }\n // 4. common sequence + unmount\n // (a b) c\n // (a b)\n // i = 2, e1 = 2, e2 = 1\n // a (b c)\n // (b c)\n // i = 0, e1 = 0, e2 = -1\n else if (i > e2) {\n while (i <= e1) {\n unmount(c1[i], parentComponent, parentSuspense, true);\n i++;\n }\n }\n // 5. unknown sequence\n // [i ... e1 + 1]: a b [c d e] f g\n // [i ... e2 + 1]: a b [e d c h] f g\n // i = 2, e1 = 4, e2 = 5\n else {\n const s1 = i; // prev starting index\n const s2 = i; // next starting index\n // 5.1 build key:index map for newChildren\n const keyToNewIndexMap = new Map();\n for (i = s2; i <= e2; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (nextChild.key != null) {\n if ((process.env.NODE_ENV !== 'production') && keyToNewIndexMap.has(nextChild.key)) {\n warn(`Duplicate keys found during update:`, JSON.stringify(nextChild.key), `Make sure keys are unique.`);\n }\n keyToNewIndexMap.set(nextChild.key, i);\n }\n }\n // 5.2 loop through old children left to be patched and try to patch\n // matching nodes & remove nodes that are no longer present\n let j;\n let patched = 0;\n const toBePatched = e2 - s2 + 1;\n let moved = false;\n // used to track whether any node has moved\n let maxNewIndexSoFar = 0;\n // works as Map<newIndex, oldIndex>\n // Note that oldIndex is offset by +1\n // and oldIndex = 0 is a special value indicating the new node has\n // no corresponding old node.\n // used for determining longest stable subsequence\n const newIndexToOldIndexMap = new Array(toBePatched);\n for (i = 0; i < toBePatched; i++)\n newIndexToOldIndexMap[i] = 0;\n for (i = s1; i <= e1; i++) {\n const prevChild = c1[i];\n if (patched >= toBePatched) {\n // all new children have been patched so this can only be a removal\n unmount(prevChild, parentComponent, parentSuspense, true);\n continue;\n }\n let newIndex;\n if (prevChild.key != null) {\n newIndex = keyToNewIndexMap.get(prevChild.key);\n }\n else {\n // key-less node, try to locate a key-less node of the same type\n for (j = s2; j <= e2; j++) {\n if (newIndexToOldIndexMap[j - s2] === 0 &&\n isSameVNodeType(prevChild, c2[j])) {\n newIndex = j;\n break;\n }\n }\n }\n if (newIndex === undefined) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n }\n else {\n newIndexToOldIndexMap[newIndex - s2] = i + 1;\n if (newIndex >= maxNewIndexSoFar) {\n maxNewIndexSoFar = newIndex;\n }\n else {\n moved = true;\n }\n patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n patched++;\n }\n }\n // 5.3 move and mount\n // generate longest stable subsequence only when nodes have moved\n const increasingNewIndexSequence = moved\n ? getSequence(newIndexToOldIndexMap)\n : EMPTY_ARR;\n j = increasingNewIndexSequence.length - 1;\n // looping backwards so that we can use last patched node as anchor\n for (i = toBePatched - 1; i >= 0; i--) {\n const nextIndex = s2 + i;\n const nextChild = c2[nextIndex];\n const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n if (newIndexToOldIndexMap[i] === 0) {\n // mount new\n patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (moved) {\n // move if:\n // There is no stable subsequence (e.g. a reverse)\n // OR current node is not among the stable sequence\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\n move(nextChild, container, anchor, 2 /* MoveType.REORDER */);\n }\n else {\n j--;\n }\n }\n }\n }\n };\n const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n const { el, type, transition, children, shapeFlag } = vnode;\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n move(vnode.component.subTree, container, anchor, moveType);\n return;\n }\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.move(container, anchor, moveType);\n return;\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.move(vnode, container, anchor, internals);\n return;\n }\n if (type === Fragment) {\n hostInsert(el, container, anchor);\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, anchor, moveType);\n }\n hostInsert(vnode.anchor, container, anchor);\n return;\n }\n if (type === Static) {\n moveStaticNode(vnode, container, anchor);\n return;\n }\n // single nodes\n const needTransition = moveType !== 2 /* MoveType.REORDER */ &&\n shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition;\n if (needTransition) {\n if (moveType === 0 /* MoveType.ENTER */) {\n transition.beforeEnter(el);\n hostInsert(el, container, anchor);\n queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n }\n else {\n const { leave, delayLeave, afterLeave } = transition;\n const remove = () => hostInsert(el, container, anchor);\n const performLeave = () => {\n leave(el, () => {\n remove();\n afterLeave && afterLeave();\n });\n };\n if (delayLeave) {\n delayLeave(el, remove, performLeave);\n }\n else {\n performLeave();\n }\n }\n }\n else {\n hostInsert(el, container, anchor);\n }\n };\n const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;\n // unset ref\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode, true);\n }\n if (shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */) {\n parentComponent.ctx.deactivate(vnode);\n return;\n }\n const shouldInvokeDirs = shapeFlag & 1 /* ShapeFlags.ELEMENT */ && dirs;\n const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n let vnodeHook;\n if (shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n unmountComponent(vnode.component, parentSuspense, doRemove);\n }\n else {\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.unmount(parentSuspense, doRemove);\n return;\n }\n if (shouldInvokeDirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount');\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);\n }\n else if (dynamicChildren &&\n // #1153: fast path should not be taken for non-stable (v-for) fragments\n (type !== Fragment ||\n (patchFlag > 0 && patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */))) {\n // fast path for block nodes: only need to unmount dynamic children.\n unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);\n }\n else if ((type === Fragment &&\n patchFlag &\n (128 /* PatchFlags.KEYED_FRAGMENT */ | 256 /* PatchFlags.UNKEYED_FRAGMENT */)) ||\n (!optimized && shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */)) {\n unmountChildren(children, parentComponent, parentSuspense);\n }\n if (doRemove) {\n remove(vnode);\n }\n }\n if ((shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeUnmounted)) ||\n shouldInvokeDirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n shouldInvokeDirs &&\n invokeDirectiveHook(vnode, null, parentComponent, 'unmounted');\n }, parentSuspense);\n }\n };\n const remove = vnode => {\n const { type, el, anchor, transition } = vnode;\n if (type === Fragment) {\n if ((process.env.NODE_ENV !== 'production') &&\n vnode.patchFlag > 0 &&\n vnode.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */ &&\n transition &&\n !transition.persisted) {\n vnode.children.forEach(child => {\n if (child.type === Comment) {\n hostRemove(child.el);\n }\n else {\n remove(child);\n }\n });\n }\n else {\n removeFragment(el, anchor);\n }\n return;\n }\n if (type === Static) {\n removeStaticNode(vnode);\n return;\n }\n const performRemove = () => {\n hostRemove(el);\n if (transition && !transition.persisted && transition.afterLeave) {\n transition.afterLeave();\n }\n };\n if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition &&\n !transition.persisted) {\n const { leave, delayLeave } = transition;\n const performLeave = () => leave(el, performRemove);\n if (delayLeave) {\n delayLeave(vnode.el, performRemove, performLeave);\n }\n else {\n performLeave();\n }\n }\n else {\n performRemove();\n }\n };\n const removeFragment = (cur, end) => {\n // For fragments, directly remove all contained DOM nodes.\n // (fragment child nodes cannot have transition)\n let next;\n while (cur !== end) {\n next = hostNextSibling(cur);\n hostRemove(cur);\n cur = next;\n }\n hostRemove(end);\n };\n const unmountComponent = (instance, parentSuspense, doRemove) => {\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n unregisterHMR(instance);\n }\n const { bum, scope, update, subTree, um } = instance;\n // beforeUnmount hook\n if (bum) {\n invokeArrayFns(bum);\n }\n // stop effects in component scope\n scope.stop();\n // update may be null if a component is unmounted before its async\n // setup has resolved.\n if (update) {\n // so that scheduler will no longer invoke it\n update.active = false;\n unmount(subTree, instance, parentSuspense, doRemove);\n }\n // unmounted hook\n if (um) {\n queuePostRenderEffect(um, parentSuspense);\n }\n queuePostRenderEffect(() => {\n instance.isUnmounted = true;\n }, parentSuspense);\n // A component with async dep inside a pending suspense is unmounted before\n // its async dep resolves. This should remove the dep from the suspense, and\n // cause the suspense to resolve immediately if that was the last dep.\n if (parentSuspense &&\n parentSuspense.pendingBranch &&\n !parentSuspense.isUnmounted &&\n instance.asyncDep &&\n !instance.asyncResolved &&\n instance.suspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0) {\n parentSuspense.resolve();\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentRemoved(instance);\n }\n };\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n for (let i = start; i < children.length; i++) {\n unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n }\n };\n const getNextHostNode = vnode => {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n return getNextHostNode(vnode.component.subTree);\n }\n if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n return vnode.suspense.next();\n }\n return hostNextSibling((vnode.anchor || vnode.el));\n };\n const render = (vnode, container, isSVG) => {\n if (vnode == null) {\n if (container._vnode) {\n unmount(container._vnode, null, null, true);\n }\n }\n else {\n patch(container._vnode || null, vnode, container, null, null, null, isSVG);\n }\n flushPreFlushCbs();\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const internals = {\n p: patch,\n um: unmount,\n m: move,\n r: remove,\n mt: mountComponent,\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n n: getNextHostNode,\n o: options\n };\n let hydrate;\n let hydrateNode;\n if (createHydrationFns) {\n [hydrate, hydrateNode] = createHydrationFns(internals);\n }\n return {\n render,\n hydrate,\n createApp: createAppAPI(render, hydrate)\n };\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n effect.allowRecurse = update.allowRecurse = allowed;\n}\n/**\n * #1156\n * When a component is HMR-enabled, we need to make sure that all static nodes\n * inside a block also inherit the DOM element from the previous tree so that\n * HMR updates (which are full updates) can retrieve the element for patching.\n *\n * #2080\n * Inside keyed `template` fragment static children, if a fragment is moved,\n * the children will always be moved. Therefore, in order to ensure correct move\n * position, el should be inherited from previous nodes.\n */\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n const ch1 = n1.children;\n const ch2 = n2.children;\n if (isArray(ch1) && isArray(ch2)) {\n for (let i = 0; i < ch1.length; i++) {\n // this is only called in the optimized path so array children are\n // guaranteed to be vnodes\n const c1 = ch1[i];\n let c2 = ch2[i];\n if (c2.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && !c2.dynamicChildren) {\n if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* PatchFlags.HYDRATE_EVENTS */) {\n c2 = ch2[i] = cloneIfMounted(ch2[i]);\n c2.el = c1.el;\n }\n if (!shallow)\n traverseStaticChildren(c1, c2);\n }\n // #6852 also inherit for text nodes\n if (c2.type === Text) {\n c2.el = c1.el;\n }\n // also inherit for comment nodes, but not placeholders (e.g. v-if which\n // would have received .el during block patch)\n if ((process.env.NODE_ENV !== 'production') && c2.type === Comment && !c2.el) {\n c2.el = c1.el;\n }\n }\n }\n}\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\nfunction getSequence(arr) {\n const p = arr.slice();\n const result = [0];\n let i, j, u, v, c;\n const len = arr.length;\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI !== 0) {\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n u = 0;\n v = result.length - 1;\n while (u < v) {\n c = (u + v) >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n }\n else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = result.length;\n v = result[u - 1];\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n return result;\n}\n\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === '');\nconst isTargetSVG = (target) => typeof SVGElement !== 'undefined' && target instanceof SVGElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Current renderer does not support string target for Teleports. ` +\n `(missing querySelector renderer option)`);\n return null;\n }\n else {\n const target = select(targetSelector);\n if (!target) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Failed to locate Teleport target with selector \"${targetSelector}\". ` +\n `Note the target element must exist before the component is mounted - ` +\n `i.e. the target cannot be rendered by the component itself, and ` +\n `ideally should be outside of the entire Vue component tree.`);\n }\n return target;\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && !targetSelector && !isTeleportDisabled(props)) {\n warn(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {\n const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert, querySelector, createText, createComment } } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n // #3302\n // HMR updated, force full diff\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n // insert anchors in the main view\n const placeholder = (n2.el = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport start')\n : createText(''));\n const mainAnchor = (n2.anchor = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport end')\n : createText(''));\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const target = (n2.target = resolveTarget(n2.props, querySelector));\n const targetAnchor = (n2.targetAnchor = createText(''));\n if (target) {\n insert(targetAnchor, target);\n // #2652 we could be teleporting from a non-SVG tree into an SVG tree\n isSVG = isSVG || isTargetSVG(target);\n }\n else if ((process.env.NODE_ENV !== 'production') && !disabled) {\n warn('Invalid Teleport target on mount:', target, `(${typeof target})`);\n }\n const mount = (container, anchor) => {\n // Teleport *always* has Array children. This is enforced in both the\n // compiler and vnode children normalization.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n }\n else if (target) {\n mount(target, targetAnchor);\n }\n }\n else {\n // update content\n n2.el = n1.el;\n const mainAnchor = (n2.anchor = n1.anchor);\n const target = (n2.target = n1.target);\n const targetAnchor = (n2.targetAnchor = n1.targetAnchor);\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n isSVG = isSVG || isTargetSVG(target);\n if (dynamicChildren) {\n // fast path when the teleport happens to be a block root\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds);\n // even in block tree mode we need to make sure all root-level nodes\n // in the teleport inherit previous DOM references so that they can\n // be moved in future patches.\n traverseStaticChildren(n1, n2, true);\n }\n else if (!optimized) {\n patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false);\n }\n if (disabled) {\n if (!wasDisabled) {\n // enabled -> disabled\n // move into main container\n moveTeleport(n2, container, mainAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n else {\n // target changed\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = (n2.target = resolveTarget(n2.props, querySelector));\n if (nextTarget) {\n moveTeleport(n2, nextTarget, null, internals, 0 /* TeleportMoveTypes.TARGET_CHANGE */);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid Teleport target on update:', target, `(${typeof target})`);\n }\n }\n else if (wasDisabled) {\n // disabled -> enabled\n // move into teleport target\n moveTeleport(n2, target, targetAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n }\n updateCssVars(n2);\n },\n remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\n if (target) {\n hostRemove(targetAnchor);\n }\n // an unmounted teleport should always remove its children if not disabled\n if (doRemove || !isTeleportDisabled(props)) {\n hostRemove(anchor);\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);\n }\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* TeleportMoveTypes.REORDER */) {\n // move target anchor if this is a target change.\n if (moveType === 0 /* TeleportMoveTypes.TARGET_CHANGE */) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2 /* TeleportMoveTypes.REORDER */;\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n // if this is a re-order and teleport is enabled (content is in target)\n // do not move children. So the opposite is: only move children if this\n // is not a reorder, or the teleport is disabled\n if (!isReorder || isTeleportDisabled(props)) {\n // Teleport has either Array children or no children.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, parentAnchor, 2 /* MoveType.REORDER */);\n }\n }\n }\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {\n const target = (vnode.target = resolveTarget(vnode.props, querySelector));\n if (target) {\n // if multiple teleports rendered to the same target element, we need to\n // pick up from where the last teleport finished instead of the first node\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n if (isTeleportDisabled(vnode.props)) {\n vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);\n vnode.targetAnchor = targetNode;\n }\n else {\n vnode.anchor = nextSibling(node);\n // lookahead until we find the target anchor\n // we cannot rely on return value of hydrateChildren() because there\n // could be nested teleports\n let targetAnchor = targetNode;\n while (targetAnchor) {\n targetAnchor = nextSibling(targetAnchor);\n if (targetAnchor &&\n targetAnchor.nodeType === 8 &&\n targetAnchor.data === 'teleport anchor') {\n vnode.targetAnchor = targetAnchor;\n target._lpa =\n vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n updateCssVars(vnode);\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\n// Force-casted public typing for h and TSX props inference\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode) {\n // presence of .ut method indicates owner component uses css vars.\n // code path here can assume browser environment.\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node = vnode.children[0].el;\n while (node !== vnode.targetAnchor) {\n if (node.nodeType === 1)\n node.setAttribute('data-v-owner', ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\n\nconst Fragment = Symbol((process.env.NODE_ENV !== 'production') ? 'Fragment' : undefined);\nconst Text = Symbol((process.env.NODE_ENV !== 'production') ? 'Text' : undefined);\nconst Comment = Symbol((process.env.NODE_ENV !== 'production') ? 'Comment' : undefined);\nconst Static = Symbol((process.env.NODE_ENV !== 'production') ? 'Static' : undefined);\n// Since v-if and v-for are the two possible ways node structure can dynamically\n// change, once we consider v-if branches and each v-for fragment a block, we\n// can divide a template into nested blocks, and within each block the node\n// structure would be stable. This allows us to skip most children diffing\n// and only worry about the dynamic nodes (indicated by patch flags).\nconst blockStack = [];\nlet currentBlock = null;\n/**\n * Open a block.\n * This must be called before `createBlock`. It cannot be part of `createBlock`\n * because the children of the block are evaluated before `createBlock` itself\n * is called. The generated code typically looks like this:\n *\n * ```js\n * function render() {\n * return (openBlock(),createBlock('div', null, [...]))\n * }\n * ```\n * disableTracking is true when creating a v-for fragment block, since a v-for\n * fragment always diffs its children.\n *\n * @private\n */\nfunction openBlock(disableTracking = false) {\n blockStack.push((currentBlock = disableTracking ? null : []));\n}\nfunction closeBlock() {\n blockStack.pop();\n currentBlock = blockStack[blockStack.length - 1] || null;\n}\n// Whether we should be tracking dynamic child nodes inside a block.\n// Only tracks when this value is > 0\n// We are not using a simple boolean because this value may need to be\n// incremented/decremented by nested usage of v-once (see below)\nlet isBlockTreeEnabled = 1;\n/**\n * Block tracking sometimes needs to be disabled, for example during the\n * creation of a tree that needs to be cached by v-once. The compiler generates\n * code like this:\n *\n * ``` js\n * _cache[1] || (\n * setBlockTracking(-1),\n * _cache[1] = createVNode(...),\n * setBlockTracking(1),\n * _cache[1]\n * )\n * ```\n *\n * @private\n */\nfunction setBlockTracking(value) {\n isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n // save current block children on the block vnode\n vnode.dynamicChildren =\n isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n // close block\n closeBlock();\n // a block is always going to be patched, so track it as a child of its\n // parent block\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\n/**\n * @private\n */\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true /* isBlock */));\n}\n/**\n * Create a block root vnode. Takes the same exact arguments as `createVNode`.\n * A block root keeps track of dynamic nodes within the block in the\n * `dynamicChildren` array.\n *\n * @private\n */\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true /* isBlock: prevent a block from tracking itself */));\n}\nfunction isVNode(value) {\n return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n if ((process.env.NODE_ENV !== 'production') &&\n n2.shapeFlag & 6 /* ShapeFlags.COMPONENT */ &&\n hmrDirtyComponents.has(n2.type)) {\n // #7042, ensure the vnode being unmounted during HMR\n // bitwise operations to remove keep alive flags\n n1.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n n2.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n // HMR only: if the component has been hot-updated, force a reload.\n return false;\n }\n return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\n/**\n * Internal API for registering an arguments transform for createVNode\n * used for creating stubs in the test-utils\n * It is *internal* but needs to be exposed for test-utils to pick up proper\n * typings\n */\nfunction transformVNodeArgs(transformer) {\n vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n return _createVNode(...(vnodeArgsTransformer\n ? vnodeArgsTransformer(args, currentRenderingInstance)\n : args));\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({ ref, ref_key, ref_for }) => {\n return (ref != null\n ? isString(ref) || isRef(ref) || isFunction(ref)\n ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for }\n : ref\n : null);\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ShapeFlags.ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) {\n const vnode = {\n __v_isVNode: true,\n __v_skip: true,\n type,\n props,\n key: props && normalizeKey(props),\n ref: props && normalizeRef(props),\n scopeId: currentScopeId,\n slotScopeIds: null,\n children,\n component: null,\n suspense: null,\n ssContent: null,\n ssFallback: null,\n dirs: null,\n transition: null,\n el: null,\n anchor: null,\n target: null,\n targetAnchor: null,\n staticCount: 0,\n shapeFlag,\n patchFlag,\n dynamicProps,\n dynamicChildren: null,\n appContext: null,\n ctx: currentRenderingInstance\n };\n if (needFullChildrenNormalization) {\n normalizeChildren(vnode, children);\n // normalize suspense children\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.normalize(vnode);\n }\n }\n else if (children) {\n // compiled element vnode - if children is passed, only possible types are\n // string or Array.\n vnode.shapeFlag |= isString(children)\n ? 8 /* ShapeFlags.TEXT_CHILDREN */\n : 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n // validate key\n if ((process.env.NODE_ENV !== 'production') && vnode.key !== vnode.key) {\n warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n }\n // track vnode for block tree\n if (isBlockTreeEnabled > 0 &&\n // avoid a block node from tracking itself\n !isBlockNode &&\n // has current parent block\n currentBlock &&\n // presence of a patch flag indicates this node needs patching on updates.\n // component nodes also should always be patched, because even if the\n // component doesn't need to update, it needs to persist the instance on to\n // the next vnode so that it can be properly unmounted later.\n (vnode.patchFlag > 0 || shapeFlag & 6 /* ShapeFlags.COMPONENT */) &&\n // the EVENTS flag is only for hydration and if it is the only flag, the\n // vnode should not be considered dynamic due to handler caching.\n vnode.patchFlag !== 32 /* PatchFlags.HYDRATE_EVENTS */) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nconst createVNode = ((process.env.NODE_ENV !== 'production') ? createVNodeWithArgsTransform : _createVNode);\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\n if ((process.env.NODE_ENV !== 'production') && !type) {\n warn(`Invalid vnode type when creating vnode: ${type}.`);\n }\n type = Comment;\n }\n if (isVNode(type)) {\n // createVNode receiving an existing vnode. This happens in cases like\n // <component :is=\"vnode\"/>\n // #2078 make sure to merge refs during the clone instead of overwriting it\n const cloned = cloneVNode(type, props, true /* mergeRef: true */);\n if (children) {\n normalizeChildren(cloned, children);\n }\n if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n if (cloned.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n currentBlock[currentBlock.indexOf(type)] = cloned;\n }\n else {\n currentBlock.push(cloned);\n }\n }\n cloned.patchFlag |= -2 /* PatchFlags.BAIL */;\n return cloned;\n }\n // class component normalization.\n if (isClassComponent(type)) {\n type = type.__vccOpts;\n }\n // class & style normalization.\n if (props) {\n // for reactive or proxy objects, we need to clone it to enable mutation.\n props = guardReactiveProps(props);\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (isObject(style)) {\n // reactive state objects need to be cloned since they are likely to be\n // mutated\n if (isProxy(style) && !isArray(style)) {\n style = extend({}, style);\n }\n props.style = normalizeStyle(style);\n }\n }\n // encode the vnode type information into a bitmap\n const shapeFlag = isString(type)\n ? 1 /* ShapeFlags.ELEMENT */\n : isSuspense(type)\n ? 128 /* ShapeFlags.SUSPENSE */\n : isTeleport(type)\n ? 64 /* ShapeFlags.TELEPORT */\n : isObject(type)\n ? 4 /* ShapeFlags.STATEFUL_COMPONENT */\n : isFunction(type)\n ? 2 /* ShapeFlags.FUNCTIONAL_COMPONENT */\n : 0;\n if ((process.env.NODE_ENV !== 'production') && shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */ && isProxy(type)) {\n type = toRaw(type);\n warn(`Vue received a Component which was made a reactive object. This can ` +\n `lead to unnecessary performance overhead, and should be avoided by ` +\n `marking the component with \\`markRaw\\` or using \\`shallowRef\\` ` +\n `instead of \\`ref\\`.`, `\\nComponent that was made reactive: `, type);\n }\n return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);\n}\nfunction guardReactiveProps(props) {\n if (!props)\n return null;\n return isProxy(props) || InternalObjectKey in props\n ? extend({}, props)\n : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n // This is intentionally NOT using spread or extend to avoid the runtime\n // key enumeration cost.\n const { props, ref, patchFlag, children } = vnode;\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n const cloned = {\n __v_isVNode: true,\n __v_skip: true,\n type: vnode.type,\n props: mergedProps,\n key: mergedProps && normalizeKey(mergedProps),\n ref: extraProps && extraProps.ref\n ? // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n // if the vnode itself already has a ref, cloneVNode will need to merge\n // the refs so the single vnode can be set on multiple refs\n mergeRef && ref\n ? isArray(ref)\n ? ref.concat(normalizeRef(extraProps))\n : [ref, normalizeRef(extraProps)]\n : normalizeRef(extraProps)\n : ref,\n scopeId: vnode.scopeId,\n slotScopeIds: vnode.slotScopeIds,\n children: (process.env.NODE_ENV !== 'production') && patchFlag === -1 /* PatchFlags.HOISTED */ && isArray(children)\n ? children.map(deepCloneVNode)\n : children,\n target: vnode.target,\n targetAnchor: vnode.targetAnchor,\n staticCount: vnode.staticCount,\n shapeFlag: vnode.shapeFlag,\n // if the vnode is cloned with extra props, we can no longer assume its\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n // note: preserve flag for fragments since they use the flag for children\n // fast paths only.\n patchFlag: extraProps && vnode.type !== Fragment\n ? patchFlag === -1 // hoisted node\n ? 16 /* PatchFlags.FULL_PROPS */\n : patchFlag | 16 /* PatchFlags.FULL_PROPS */\n : patchFlag,\n dynamicProps: vnode.dynamicProps,\n dynamicChildren: vnode.dynamicChildren,\n appContext: vnode.appContext,\n dirs: vnode.dirs,\n transition: vnode.transition,\n // These should technically only be non-null on mounted VNodes. However,\n // they *should* be copied for kept-alive vnodes. So we just always copy\n // them since them being non-null during a mount doesn't affect the logic as\n // they will simply be overwritten.\n component: vnode.component,\n suspense: vnode.suspense,\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n el: vnode.el,\n anchor: vnode.anchor,\n ctx: vnode.ctx\n };\n return cloned;\n}\n/**\n * Dev only, for HMR of hoisted vnodes reused in v-for\n * https://github.com/vitejs/vite/issues/2022\n */\nfunction deepCloneVNode(vnode) {\n const cloned = cloneVNode(vnode);\n if (isArray(vnode.children)) {\n cloned.children = vnode.children.map(deepCloneVNode);\n }\n return cloned;\n}\n/**\n * @private\n */\nfunction createTextVNode(text = ' ', flag = 0) {\n return createVNode(Text, null, text, flag);\n}\n/**\n * @private\n */\nfunction createStaticVNode(content, numberOfNodes) {\n // A static vnode can contain multiple stringified elements, and the number\n // of elements is necessary for hydration.\n const vnode = createVNode(Static, null, content);\n vnode.staticCount = numberOfNodes;\n return vnode;\n}\n/**\n * @private\n */\nfunction createCommentVNode(text = '', \n// when used as the v-else branch, the comment node must be created as a\n// block to ensure correct updates.\nasBlock = false) {\n return asBlock\n ? (openBlock(), createBlock(Comment, null, text))\n : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n if (child == null || typeof child === 'boolean') {\n // empty placeholder\n return createVNode(Comment);\n }\n else if (isArray(child)) {\n // fragment\n return createVNode(Fragment, null, \n // #3666, avoid reference pollution when reusing vnode\n child.slice());\n }\n else if (typeof child === 'object') {\n // already vnode, this should be the most common since compiled templates\n // always produce all-vnode children arrays\n return cloneIfMounted(child);\n }\n else {\n // strings and numbers\n return createVNode(Text, null, String(child));\n }\n}\n// optimized normalization for template-compiled render fns\nfunction cloneIfMounted(child) {\n return (child.el === null && child.patchFlag !== -1 /* PatchFlags.HOISTED */) ||\n child.memo\n ? child\n : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n let type = 0;\n const { shapeFlag } = vnode;\n if (children == null) {\n children = null;\n }\n else if (isArray(children)) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n else if (typeof children === 'object') {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 64 /* ShapeFlags.TELEPORT */)) {\n // Normalize slot to plain children for plain element and Teleport\n const slot = children.default;\n if (slot) {\n // _c marker is added by withCtx() indicating this is a compiled slot\n slot._c && (slot._d = false);\n normalizeChildren(vnode, slot());\n slot._c && (slot._d = true);\n }\n return;\n }\n else {\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n const slotFlag = children._;\n if (!slotFlag && !(InternalObjectKey in children)) {\n children._ctx = currentRenderingInstance;\n }\n else if (slotFlag === 3 /* SlotFlags.FORWARDED */ && currentRenderingInstance) {\n // a child component receives forwarded slots from the parent.\n // its slot type is determined by its parent's slot type.\n if (currentRenderingInstance.slots._ === 1 /* SlotFlags.STABLE */) {\n children._ = 1 /* SlotFlags.STABLE */;\n }\n else {\n children._ = 2 /* SlotFlags.DYNAMIC */;\n vnode.patchFlag |= 1024 /* PatchFlags.DYNAMIC_SLOTS */;\n }\n }\n }\n }\n else if (isFunction(children)) {\n children = { default: children, _ctx: currentRenderingInstance };\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n }\n else {\n children = String(children);\n // force teleport children to array so it can be moved around\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n children = [createTextVNode(children)];\n }\n else {\n type = 8 /* ShapeFlags.TEXT_CHILDREN */;\n }\n }\n vnode.children = children;\n vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n const toMerge = args[i];\n for (const key in toMerge) {\n if (key === 'class') {\n if (ret.class !== toMerge.class) {\n ret.class = normalizeClass([ret.class, toMerge.class]);\n }\n }\n else if (key === 'style') {\n ret.style = normalizeStyle([ret.style, toMerge.style]);\n }\n else if (isOn(key)) {\n const existing = ret[key];\n const incoming = toMerge[key];\n if (incoming &&\n existing !== incoming &&\n !(isArray(existing) && existing.includes(incoming))) {\n ret[key] = existing\n ? [].concat(existing, incoming)\n : incoming;\n }\n }\n else if (key !== '') {\n ret[key] = toMerge[key];\n }\n }\n }\n return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n callWithAsyncErrorHandling(hook, instance, 7 /* ErrorCodes.VNODE_HOOK */, [\n vnode,\n prevVNode\n ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid$1 = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n const type = vnode.type;\n // inherit parent app context - or - if root, adopt from root vnode\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n const instance = {\n uid: uid$1++,\n vnode,\n type,\n parent,\n appContext,\n root: null,\n next: null,\n subTree: null,\n effect: null,\n update: null,\n scope: new EffectScope(true /* detached */),\n render: null,\n proxy: null,\n exposed: null,\n exposeProxy: null,\n withProxy: null,\n provides: parent ? parent.provides : Object.create(appContext.provides),\n accessCache: null,\n renderCache: [],\n // local resolved assets\n components: null,\n directives: null,\n // resolved props and emits options\n propsOptions: normalizePropsOptions(type, appContext),\n emitsOptions: normalizeEmitsOptions(type, appContext),\n // emit\n emit: null,\n emitted: null,\n // props default value\n propsDefaults: EMPTY_OBJ,\n // inheritAttrs\n inheritAttrs: type.inheritAttrs,\n // state\n ctx: EMPTY_OBJ,\n data: EMPTY_OBJ,\n props: EMPTY_OBJ,\n attrs: EMPTY_OBJ,\n slots: EMPTY_OBJ,\n refs: EMPTY_OBJ,\n setupState: EMPTY_OBJ,\n setupContext: null,\n // suspense related\n suspense,\n suspenseId: suspense ? suspense.pendingId : 0,\n asyncDep: null,\n asyncResolved: false,\n // lifecycle hooks\n // not using enums here because it results in computed properties\n isMounted: false,\n isUnmounted: false,\n isDeactivated: false,\n bc: null,\n c: null,\n bm: null,\n m: null,\n bu: null,\n u: null,\n um: null,\n bum: null,\n da: null,\n a: null,\n rtg: null,\n rtc: null,\n ec: null,\n sp: null\n };\n if ((process.env.NODE_ENV !== 'production')) {\n instance.ctx = createDevRenderContext(instance);\n }\n else {\n instance.ctx = { _: instance };\n }\n instance.root = parent ? parent.root : instance;\n instance.emit = emit$1.bind(null, instance);\n // apply custom element special handling\n if (vnode.ce) {\n vnode.ce(instance);\n }\n return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nconst setCurrentInstance = (instance) => {\n currentInstance = instance;\n instance.scope.on();\n};\nconst unsetCurrentInstance = () => {\n currentInstance && currentInstance.scope.off();\n currentInstance = null;\n};\nconst isBuiltInTag = /*#__PURE__*/ makeMap('slot,component');\nfunction validateComponentName(name, config) {\n const appIsNativeTag = config.isNativeTag || NO;\n if (isBuiltInTag(name) || appIsNativeTag(name)) {\n warn('Do not use built-in or reserved HTML elements as component id: ' + name);\n }\n}\nfunction isStatefulComponent(instance) {\n return instance.vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n isInSSRComponentSetup = isSSR;\n const { props, children } = instance.vnode;\n const isStateful = isStatefulComponent(instance);\n initProps(instance, props, isStateful, isSSR);\n initSlots(instance, children);\n const setupResult = isStateful\n ? setupStatefulComponent(instance, isSSR)\n : undefined;\n isInSSRComponentSetup = false;\n return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n var _a;\n const Component = instance.type;\n if ((process.env.NODE_ENV !== 'production')) {\n if (Component.name) {\n validateComponentName(Component.name, instance.appContext.config);\n }\n if (Component.components) {\n const names = Object.keys(Component.components);\n for (let i = 0; i < names.length; i++) {\n validateComponentName(names[i], instance.appContext.config);\n }\n }\n if (Component.directives) {\n const names = Object.keys(Component.directives);\n for (let i = 0; i < names.length; i++) {\n validateDirectiveName(names[i]);\n }\n }\n if (Component.compilerOptions && isRuntimeOnly()) {\n warn(`\"compilerOptions\" is only supported when using a build of Vue that ` +\n `includes the runtime compiler. Since you are using a runtime-only ` +\n `build, the options should be passed via your build tool config instead.`);\n }\n }\n // 0. create render proxy property access cache\n instance.accessCache = Object.create(null);\n // 1. create public instance / render proxy\n // also mark it raw so it's never observed\n instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n if ((process.env.NODE_ENV !== 'production')) {\n exposePropsOnRenderContext(instance);\n }\n // 2. call setup()\n const { setup } = Component;\n if (setup) {\n const setupContext = (instance.setupContext =\n setup.length > 1 ? createSetupContext(instance) : null);\n setCurrentInstance(instance);\n pauseTracking();\n const setupResult = callWithErrorHandling(setup, instance, 0 /* ErrorCodes.SETUP_FUNCTION */, [(process.env.NODE_ENV !== 'production') ? shallowReadonly(instance.props) : instance.props, setupContext]);\n resetTracking();\n unsetCurrentInstance();\n if (isPromise(setupResult)) {\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n if (isSSR) {\n // return the promise so server-renderer can wait on it\n return setupResult\n .then((resolvedResult) => {\n handleSetupResult(instance, resolvedResult, isSSR);\n })\n .catch(e => {\n handleError(e, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n });\n }\n else {\n // async setup returned Promise.\n // bail here and wait for re-entry.\n instance.asyncDep = setupResult;\n if ((process.env.NODE_ENV !== 'production') && !instance.suspense) {\n const name = (_a = Component.name) !== null && _a !== void 0 ? _a : 'Anonymous';\n warn(`Component <${name}>: setup function returned a promise, but no ` +\n `<Suspense> boundary was found in the parent component tree. ` +\n `A component with async setup() must be nested in a <Suspense> ` +\n `in order to be rendered.`);\n }\n }\n }\n else {\n handleSetupResult(instance, setupResult, isSSR);\n }\n }\n else {\n finishComponentSetup(instance, isSSR);\n }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n if (isFunction(setupResult)) {\n // setup returned an inline render function\n if (instance.type.__ssrInlineRender) {\n // when the function's name is `ssrRender` (compiled by SFC inline mode),\n // set it as ssrRender instead.\n instance.ssrRender = setupResult;\n }\n else {\n instance.render = setupResult;\n }\n }\n else if (isObject(setupResult)) {\n if ((process.env.NODE_ENV !== 'production') && isVNode(setupResult)) {\n warn(`setup() should not return VNodes directly - ` +\n `return a render function instead.`);\n }\n // setup returned bindings.\n // assuming a render function compiled from template is present.\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.devtoolsRawSetupState = setupResult;\n }\n instance.setupState = proxyRefs(setupResult);\n if ((process.env.NODE_ENV !== 'production')) {\n exposeSetupStateOnRenderContext(instance);\n }\n }\n else if ((process.env.NODE_ENV !== 'production') && setupResult !== undefined) {\n warn(`setup() should return an object. Received: ${setupResult === null ? 'null' : typeof setupResult}`);\n }\n finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\n/**\n * For runtime-dom to register the compiler.\n * Note the exported method uses any to avoid d.ts relying on the compiler types.\n */\nfunction registerRuntimeCompiler(_compile) {\n compile = _compile;\n installWithProxy = i => {\n if (i.render._rc) {\n i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n }\n };\n}\n// dev only\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n const Component = instance.type;\n // template / render function normalization\n // could be already set when returned from setup()\n if (!instance.render) {\n // only do on-the-fly compile if not in SSR - SSR on-the-fly compilation\n // is done by server-renderer\n if (!isSSR && compile && !Component.render) {\n const template = Component.template ||\n resolveMergedOptions(instance).template;\n if (template) {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `compile`);\n }\n const { isCustomElement, compilerOptions } = instance.appContext.config;\n const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n const finalCompilerOptions = extend(extend({\n isCustomElement,\n delimiters\n }, compilerOptions), componentCompilerOptions);\n Component.render = compile(template, finalCompilerOptions);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `compile`);\n }\n }\n }\n instance.render = (Component.render || NOOP);\n // for runtime-compiled render functions using `with` blocks, the render\n // proxy used needs a different `has` handler which is more performant and\n // also only allows a whitelist of globals to fallthrough.\n if (installWithProxy) {\n installWithProxy(instance);\n }\n }\n // support for 2.x options\n if (__VUE_OPTIONS_API__ && !(false )) {\n setCurrentInstance(instance);\n pauseTracking();\n applyOptions(instance);\n resetTracking();\n unsetCurrentInstance();\n }\n // warn missing template/render\n // the runtime compilation of template in SSR is done by server-render\n if ((process.env.NODE_ENV !== 'production') && !Component.render && instance.render === NOOP && !isSSR) {\n /* istanbul ignore if */\n if (!compile && Component.template) {\n warn(`Component provided template option but ` +\n `runtime compilation is not supported in this build of Vue.` +\n (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".`\n ) /* should not happen */);\n }\n else {\n warn(`Component is missing template or render function.`);\n }\n }\n}\nfunction createAttrsProxy(instance) {\n return new Proxy(instance.attrs, (process.env.NODE_ENV !== 'production')\n ? {\n get(target, key) {\n markAttrsAccessed();\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n },\n set() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n },\n deleteProperty() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n }\n }\n : {\n get(target, key) {\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n }\n });\n}\nfunction createSetupContext(instance) {\n const expose = exposed => {\n if ((process.env.NODE_ENV !== 'production') && instance.exposed) {\n warn(`expose() should be called only once per setup().`);\n }\n instance.exposed = exposed || {};\n };\n let attrs;\n if ((process.env.NODE_ENV !== 'production')) {\n // We use getters in dev in case libs like test-utils overwrite instance\n // properties (overwrites should not be done in prod)\n return Object.freeze({\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n get slots() {\n return shallowReadonly(instance.slots);\n },\n get emit() {\n return (event, ...args) => instance.emit(event, ...args);\n },\n expose\n });\n }\n else {\n return {\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n slots: instance.slots,\n emit: instance.emit,\n expose\n };\n }\n}\nfunction getExposeProxy(instance) {\n if (instance.exposed) {\n return (instance.exposeProxy ||\n (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n get(target, key) {\n if (key in target) {\n return target[key];\n }\n else if (key in publicPropertiesMap) {\n return publicPropertiesMap[key](instance);\n }\n },\n has(target, key) {\n return key in target || key in publicPropertiesMap;\n }\n })));\n }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction(Component)\n ? Component.displayName || Component.name\n : Component.name || (includeInferred && Component.__name);\n}\n/* istanbul ignore next */\nfunction formatComponentName(instance, Component, isRoot = false) {\n let name = getComponentName(Component);\n if (!name && Component.__file) {\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n if (match) {\n name = match[1];\n }\n }\n if (!name && instance && instance.parent) {\n // try to infer the name based on reverse resolution\n const inferFromRegistry = (registry) => {\n for (const key in registry) {\n if (registry[key] === Component) {\n return key;\n }\n }\n };\n name =\n inferFromRegistry(instance.components ||\n instance.parent.type.components) || inferFromRegistry(instance.appContext.components);\n }\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n return isFunction(value) && '__vccOpts' in value;\n}\n\nconst computed = ((getterOrOptions, debugOptions) => {\n // @ts-ignore\n return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n});\n\n// dev only\nconst warnRuntimeUsage = (method) => warn(`${method}() is a compiler-hint helper that is only usable inside ` +\n `<script setup> of a single file component. Its arguments should be ` +\n `compiled away and passing it at runtime has no effect.`);\n// implementation\nfunction defineProps() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineProps`);\n }\n return null;\n}\n// implementation\nfunction defineEmits() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineEmits`);\n }\n return null;\n}\n/**\n * Vue `<script setup>` compiler macro for declaring a component's exposed\n * instance properties when it is accessed by a parent component via template\n * refs.\n *\n * `<script setup>` components are closed by default - i.e. variables inside\n * the `<script setup>` scope is not exposed to parent unless explicitly exposed\n * via `defineExpose`.\n *\n * This is only usable inside `<script setup>`, is compiled away in the\n * output and should **not** be actually called at runtime.\n */\nfunction defineExpose(exposed) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineExpose`);\n }\n}\n/**\n * Vue `<script setup>` compiler macro for providing props default values when\n * using type-based `defineProps` declaration.\n *\n * Example usage:\n * ```ts\n * withDefaults(defineProps<{\n * size?: number\n * labels?: string[]\n * }>(), {\n * size: 3,\n * labels: () => ['default label']\n * })\n * ```\n *\n * This is only usable inside `<script setup>`, is compiled away in the output\n * and should **not** be actually called at runtime.\n */\nfunction withDefaults(props, defaults) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`withDefaults`);\n }\n return null;\n}\nfunction useSlots() {\n return getContext().slots;\n}\nfunction useAttrs() {\n return getContext().attrs;\n}\nfunction getContext() {\n const i = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !i) {\n warn(`useContext() called without active instance.`);\n }\n return i.setupContext || (i.setupContext = createSetupContext(i));\n}\n/**\n * Runtime helper for merging default declarations. Imported by compiled code\n * only.\n * @internal\n */\nfunction mergeDefaults(raw, defaults) {\n const props = isArray(raw)\n ? raw.reduce((normalized, p) => ((normalized[p] = {}), normalized), {})\n : raw;\n for (const key in defaults) {\n const opt = props[key];\n if (opt) {\n if (isArray(opt) || isFunction(opt)) {\n props[key] = { type: opt, default: defaults[key] };\n }\n else {\n opt.default = defaults[key];\n }\n }\n else if (opt === null) {\n props[key] = { default: defaults[key] };\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`props default key \"${key}\" has no corresponding declaration.`);\n }\n }\n return props;\n}\n/**\n * Used to create a proxy for the rest element when destructuring props with\n * defineProps().\n * @internal\n */\nfunction createPropsRestProxy(props, excludedKeys) {\n const ret = {};\n for (const key in props) {\n if (!excludedKeys.includes(key)) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n get: () => props[key]\n });\n }\n }\n return ret;\n}\n/**\n * `<script setup>` helper for persisting the current instance context over\n * async/await flows.\n *\n * `@vue/compiler-sfc` converts the following:\n *\n * ```ts\n * const x = await foo()\n * ```\n *\n * into:\n *\n * ```ts\n * let __temp, __restore\n * const x = (([__temp, __restore] = withAsyncContext(() => foo())),__temp=await __temp,__restore(),__temp)\n * ```\n * @internal\n */\nfunction withAsyncContext(getAwaitable) {\n const ctx = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !ctx) {\n warn(`withAsyncContext called without active current instance. ` +\n `This is likely a bug.`);\n }\n let awaitable = getAwaitable();\n unsetCurrentInstance();\n if (isPromise(awaitable)) {\n awaitable = awaitable.catch(e => {\n setCurrentInstance(ctx);\n throw e;\n });\n }\n return [awaitable, () => setCurrentInstance(ctx)];\n}\n\n// Actual implementation\nfunction h(type, propsOrChildren, children) {\n const l = arguments.length;\n if (l === 2) {\n if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n // single vnode without props\n if (isVNode(propsOrChildren)) {\n return createVNode(type, null, [propsOrChildren]);\n }\n // props without children\n return createVNode(type, propsOrChildren);\n }\n else {\n // omit props\n return createVNode(type, null, propsOrChildren);\n }\n }\n else {\n if (l > 3) {\n children = Array.prototype.slice.call(arguments, 2);\n }\n else if (l === 3 && isVNode(children)) {\n children = [children];\n }\n return createVNode(type, propsOrChildren, children);\n }\n}\n\nconst ssrContextKey = Symbol((process.env.NODE_ENV !== 'production') ? `ssrContext` : ``);\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Server rendering context not provided. Make sure to only call ` +\n `useSSRContext() conditionally in the server build.`);\n }\n return ctx;\n }\n};\n\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\n\nfunction initCustomFormatter() {\n /* eslint-disable no-restricted-globals */\n if (!(process.env.NODE_ENV !== 'production') || typeof window === 'undefined') {\n return;\n }\n const vueStyle = { style: 'color:#3ba776' };\n const numberStyle = { style: 'color:#0b1bc9' };\n const stringStyle = { style: 'color:#b62e24' };\n const keywordStyle = { style: 'color:#9d288c' };\n // custom formatter for Chrome\n // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html\n const formatter = {\n header(obj) {\n // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup\n if (!isObject(obj)) {\n return null;\n }\n if (obj.__isVue) {\n return ['div', vueStyle, `VueInstance`];\n }\n else if (isRef(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, genRefFlag(obj)],\n '<',\n formatValue(obj.value),\n `>`\n ];\n }\n else if (isReactive(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],\n '<',\n formatValue(obj),\n `>${isReadonly(obj) ? ` (readonly)` : ``}`\n ];\n }\n else if (isReadonly(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],\n '<',\n formatValue(obj),\n '>'\n ];\n }\n return null;\n },\n hasBody(obj) {\n return obj && obj.__isVue;\n },\n body(obj) {\n if (obj && obj.__isVue) {\n return [\n 'div',\n {},\n ...formatInstance(obj.$)\n ];\n }\n }\n };\n function formatInstance(instance) {\n const blocks = [];\n if (instance.type.props && instance.props) {\n blocks.push(createInstanceBlock('props', toRaw(instance.props)));\n }\n if (instance.setupState !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('setup', instance.setupState));\n }\n if (instance.data !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('data', toRaw(instance.data)));\n }\n const computed = extractKeys(instance, 'computed');\n if (computed) {\n blocks.push(createInstanceBlock('computed', computed));\n }\n const injected = extractKeys(instance, 'inject');\n if (injected) {\n blocks.push(createInstanceBlock('injected', injected));\n }\n blocks.push([\n 'div',\n {},\n [\n 'span',\n {\n style: keywordStyle.style + ';opacity:0.66'\n },\n '$ (internal): '\n ],\n ['object', { object: instance }]\n ]);\n return blocks;\n }\n function createInstanceBlock(type, target) {\n target = extend({}, target);\n if (!Object.keys(target).length) {\n return ['span', {}];\n }\n return [\n 'div',\n { style: 'line-height:1.25em;margin-bottom:0.6em' },\n [\n 'div',\n {\n style: 'color:#476582'\n },\n type\n ],\n [\n 'div',\n {\n style: 'padding-left:1.25em'\n },\n ...Object.keys(target).map(key => {\n return [\n 'div',\n {},\n ['span', keywordStyle, key + ': '],\n formatValue(target[key], false)\n ];\n })\n ]\n ];\n }\n function formatValue(v, asRaw = true) {\n if (typeof v === 'number') {\n return ['span', numberStyle, v];\n }\n else if (typeof v === 'string') {\n return ['span', stringStyle, JSON.stringify(v)];\n }\n else if (typeof v === 'boolean') {\n return ['span', keywordStyle, v];\n }\n else if (isObject(v)) {\n return ['object', { object: asRaw ? toRaw(v) : v }];\n }\n else {\n return ['span', stringStyle, String(v)];\n }\n }\n function extractKeys(instance, type) {\n const Comp = instance.type;\n if (isFunction(Comp)) {\n return;\n }\n const extracted = {};\n for (const key in instance.ctx) {\n if (isKeyOfType(Comp, key, type)) {\n extracted[key] = instance.ctx[key];\n }\n }\n return extracted;\n }\n function isKeyOfType(Comp, key, type) {\n const opts = Comp[type];\n if ((isArray(opts) && opts.includes(key)) ||\n (isObject(opts) && key in opts)) {\n return true;\n }\n if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n return true;\n }\n if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) {\n return true;\n }\n }\n function genRefFlag(v) {\n if (isShallow(v)) {\n return `ShallowRef`;\n }\n if (v.effect) {\n return `ComputedRef`;\n }\n return `Ref`;\n }\n if (window.devtoolsFormatters) {\n window.devtoolsFormatters.push(formatter);\n }\n else {\n window.devtoolsFormatters = [formatter];\n }\n}\n\nfunction withMemo(memo, render, cache, index) {\n const cached = cache[index];\n if (cached && isMemoSame(cached, memo)) {\n return cached;\n }\n const ret = render();\n // shallow clone\n ret.memo = memo.slice();\n return (cache[index] = ret);\n}\nfunction isMemoSame(cached, memo) {\n const prev = cached.memo;\n if (prev.length != memo.length) {\n return false;\n }\n for (let i = 0; i < prev.length; i++) {\n if (hasChanged(prev[i], memo[i])) {\n return false;\n }\n }\n // make sure to let parent block track it when returning cached\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(cached);\n }\n return true;\n}\n\n// Core API ------------------------------------------------------------------\nconst version = \"3.2.45\";\nconst _ssrUtils = {\n createComponentInstance,\n setupComponent,\n renderComponentRoot,\n setCurrentRenderingInstance,\n isVNode,\n normalizeVNode\n};\n/**\n * SSR utils for \\@vue/server-renderer. Only exposed in ssr-possible builds.\n * @internal\n */\nconst ssrUtils = (_ssrUtils );\n/**\n * @internal only exposed in compat builds\n */\nconst resolveFilter = null;\n/**\n * @internal only exposed in compat builds.\n */\nconst compatUtils = (null);\n\nexport { BaseTransition, Comment, Fragment, KeepAlive, Static, Suspense, Teleport, Text, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useSSRContext, useSlots, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n","/*!\n * vue-i18n v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { getGlobalThis, format, makeSymbol, isPlainObject, isArray, isString, hasOwn, isObject, isBoolean, isRegExp, isFunction, inBrowser, assign, isNumber, warn, createEmitter, isEmptyObject } from '@intlify/shared';\nimport { CoreWarnCodes, CompileErrorCodes, createCompileError, DEFAULT_LOCALE, updateFallbackLocale, setFallbackContext, createCoreContext, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, getFallbackContext, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, fallbackWithLocaleChain, NUMBER_FORMAT_OPTIONS_KEYS, DATETIME_FORMAT_OPTIONS_KEYS, registerMessageResolver, resolveValue, registerLocaleFallbacker, setDevToolsHook } from '@intlify/core-base';\nimport { createVNode, Text, ref, computed, watch, getCurrentInstance, Fragment, h, effectScope, inject, onMounted, onUnmounted, shallowRef, onBeforeMount, isRef } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\nimport { VueDevToolsLabels, VueDevToolsPlaceholders, VueDevToolsTimelineColors } from '@intlify/vue-devtools';\n\n/**\r\n * Vue I18n Version\r\n *\r\n * @remarks\r\n * Semver format. Same format as the package.json `version` field.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst VERSION = '9.2.2';\r\n/**\r\n * This is only called in esm-bundler builds.\r\n * istanbul-ignore-next\r\n */\r\nfunction initFeatureFlags() {\r\n let needWarn = false;\r\n if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;\r\n }\r\n if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_LEGACY_API__ = true;\r\n }\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && needWarn) {\r\n console.warn(`You are running the esm-bundler build of vue-i18n. It is recommended to ` +\r\n `configure your bundler to explicitly replace feature flag globals ` +\r\n `with boolean literals to get proper tree-shaking in the final bundle.`);\r\n }\r\n}\n\nlet code$1 = CoreWarnCodes.__EXTEND_POINT__;\r\nconst inc$1 = () => ++code$1;\r\nconst I18nWarnCodes = {\r\n FALLBACK_TO_ROOT: code$1,\r\n NOT_SUPPORTED_PRESERVE: inc$1(),\r\n NOT_SUPPORTED_FORMATTER: inc$1(),\r\n NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(),\r\n NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(),\r\n COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(),\r\n NOT_FOUND_PARENT_SCOPE: inc$1() // 13\r\n};\r\nconst warnMessages = {\r\n [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,\r\n [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,\r\n [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst I18nErrorCodes = {\r\n // composer module errors\r\n UNEXPECTED_RETURN_TYPE: code,\r\n // legacy module errors\r\n INVALID_ARGUMENT: inc(),\r\n // i18n module errors\r\n MUST_BE_CALL_SETUP_TOP: inc(),\r\n NOT_INSLALLED: inc(),\r\n NOT_AVAILABLE_IN_LEGACY_MODE: inc(),\r\n // directive module errors\r\n REQUIRED_VALUE: inc(),\r\n INVALID_VALUE: inc(),\r\n // vue-devtools errors\r\n CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(),\r\n NOT_INSLALLED_WITH_PROVIDE: inc(),\r\n // unexpected error\r\n UNEXPECTED_ERROR: inc(),\r\n // not compatible legacy vue-i18n constructor\r\n NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(),\r\n // bridge support vue 2.x only\r\n BRIDGE_SUPPORT_VUE_2_ONLY: inc(),\r\n // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``\r\n MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(),\r\n // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly\r\n NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(),\r\n // for enhancement\r\n __EXTEND_POINT__: inc() // 29\r\n};\r\nfunction createI18nError(code, ...args) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);\r\n}\r\nconst errorMessages = {\r\n [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\r\n [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\r\n [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\r\n [I18nErrorCodes.NOT_INSLALLED]: 'Need to install with `app.use` function',\r\n [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\r\n [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode',\r\n [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\r\n [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\r\n [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\r\n [I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\r\n [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\r\n [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only',\r\n [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: 'Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode',\r\n [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly'\r\n};\n\nconst TransrateVNodeSymbol = \r\n/* #__PURE__*/ makeSymbol('__transrateVNode');\r\nconst DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts');\r\nconst NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts');\r\nconst EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter');\r\nconst DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter');\r\nconst SetPluralRulesSymbol = makeSymbol('__setPluralRules');\r\nmakeSymbol('__intlifyMeta');\r\nconst InejctWithOption = /* #__PURE__*/ makeSymbol('__injectWithOption');\r\nconst __VUE_I18N_BRIDGE__ = '__VUE_I18N_BRIDGE__';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Transform flat json in obj to normal json in obj\r\n */\r\nfunction handleFlatJson(obj) {\r\n // check obj\r\n if (!isObject(obj)) {\r\n return obj;\r\n }\r\n for (const key in obj) {\r\n // check key\r\n if (!hasOwn(obj, key)) {\r\n continue;\r\n }\r\n // handle for normal json\r\n if (!key.includes('.')) {\r\n // recursive process value if value is also a object\r\n if (isObject(obj[key])) {\r\n handleFlatJson(obj[key]);\r\n }\r\n }\r\n // handle for flat json, transform to normal json\r\n else {\r\n // go to the last object\r\n const subKeys = key.split('.');\r\n const lastIndex = subKeys.length - 1;\r\n let currentObj = obj;\r\n for (let i = 0; i < lastIndex; i++) {\r\n if (!(subKeys[i] in currentObj)) {\r\n currentObj[subKeys[i]] = {};\r\n }\r\n currentObj = currentObj[subKeys[i]];\r\n }\r\n // update last object value, delete old property\r\n currentObj[subKeys[lastIndex]] = obj[key];\r\n delete obj[key];\r\n // recursive process value if value is also a object\r\n if (isObject(currentObj[subKeys[lastIndex]])) {\r\n handleFlatJson(currentObj[subKeys[lastIndex]]);\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\nfunction getLocaleMessages(locale, options) {\r\n const { messages, __i18n, messageResolver, flatJson } = options;\r\n // prettier-ignore\r\n const ret = isPlainObject(messages)\r\n ? messages\r\n : isArray(__i18n)\r\n ? {}\r\n : { [locale]: {} };\r\n // merge locale messages of i18n custom block\r\n if (isArray(__i18n)) {\r\n __i18n.forEach(custom => {\r\n if ('locale' in custom && 'resource' in custom) {\r\n const { locale, resource } = custom;\r\n if (locale) {\r\n ret[locale] = ret[locale] || {};\r\n deepCopy(resource, ret[locale]);\r\n }\r\n else {\r\n deepCopy(resource, ret);\r\n }\r\n }\r\n else {\r\n isString(custom) && deepCopy(JSON.parse(custom), ret);\r\n }\r\n });\r\n }\r\n // handle messages for flat json\r\n if (messageResolver == null && flatJson) {\r\n for (const key in ret) {\r\n if (hasOwn(ret, key)) {\r\n handleFlatJson(ret[key]);\r\n }\r\n }\r\n }\r\n return ret;\r\n}\r\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction deepCopy(src, des) {\r\n // src and des should both be objects, and non of then can be a array\r\n if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n for (const key in src) {\r\n if (hasOwn(src, key)) {\r\n if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) {\r\n // replace with src[key] when:\r\n // src[key] or des[key] is not a object, or\r\n // src[key] or des[key] is a array\r\n des[key] = src[key];\r\n }\r\n else {\r\n // src[key] and des[key] are both object, merge them\r\n deepCopy(src[key], des[key]);\r\n }\r\n }\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getComponentOptions(instance) {\r\n return instance.type ;\r\n}\r\nfunction adjustI18nResources(global, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n let messages = isObject(options.messages) ? options.messages : {};\r\n if ('__i18nGlobal' in componentOptions) {\r\n messages = getLocaleMessages(global.locale.value, {\r\n messages,\r\n __i18n: componentOptions.__i18nGlobal\r\n });\r\n }\r\n // merge locale messages\r\n const locales = Object.keys(messages);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeLocaleMessage(locale, messages[locale]);\r\n });\r\n }\r\n {\r\n // merge datetime formats\r\n if (isObject(options.datetimeFormats)) {\r\n const locales = Object.keys(options.datetimeFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\r\n });\r\n }\r\n }\r\n // merge number formats\r\n if (isObject(options.numberFormats)) {\r\n const locales = Object.keys(options.numberFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeNumberFormat(locale, options.numberFormats[locale]);\r\n });\r\n }\r\n }\r\n }\r\n}\r\nfunction createTextNode(key) {\r\n return createVNode(Text, null, key, 0)\r\n ;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n// extend VNode interface\r\nconst DEVTOOLS_META = '__INTLIFY_META__';\r\nlet composerID = 0;\r\nfunction defineCoreMissingHandler(missing) {\r\n return ((ctx, locale, key, type) => {\r\n return missing(locale, key, getCurrentInstance() || undefined, type);\r\n });\r\n}\r\n// for Intlify DevTools\r\nconst getMetaInfo = () => {\r\n const instance = getCurrentInstance();\r\n let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\r\n ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : null;\r\n};\r\n/**\r\n * Create composer interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createComposer(options = {}, VueI18nLegacy) {\r\n const { __root } = options;\r\n const _isGlobal = __root === undefined;\r\n let _inheritLocale = isBoolean(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.locale.value\r\n : isString(options.locale)\r\n ? options.locale\r\n : DEFAULT_LOCALE);\r\n const _fallbackLocale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.fallbackLocale.value\r\n : isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = ref(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // prettier-ignore\r\n const _numberFormats = ref(isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // warning suppress options\r\n // prettier-ignore\r\n let _missingWarn = __root\r\n ? __root.missingWarn\r\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackWarn = __root\r\n ? __root.fallbackWarn\r\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackRoot = __root\r\n ? __root.fallbackRoot\r\n : isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n let _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n let _missing = isFunction(options.missing) ? options.missing : null;\r\n let _runtimeMissing = isFunction(options.missing)\r\n ? defineCoreMissingHandler(options.missing)\r\n : null;\r\n // postTranslation handler\r\n let _postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n let _warnHtmlMessage = __root\r\n ? __root.warnHtmlMessage\r\n : isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n let _escapeParameter = !!options.escapeParameter;\r\n // custom linked modifiers\r\n // prettier-ignore\r\n const _modifiers = __root\r\n ? __root.modifiers\r\n : isPlainObject(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\r\n // runtime context\r\n // eslint-disable-next-line prefer-const\r\n let _context;\r\n const getCoreContext = () => {\r\n _isGlobal && setFallbackContext(null);\r\n const ctxOptions = {\r\n version: VERSION,\r\n locale: _locale.value,\r\n fallbackLocale: _fallbackLocale.value,\r\n messages: _messages.value,\r\n modifiers: _modifiers,\r\n pluralRules: _pluralRules,\r\n missing: _runtimeMissing === null ? undefined : _runtimeMissing,\r\n missingWarn: _missingWarn,\r\n fallbackWarn: _fallbackWarn,\r\n fallbackFormat: _fallbackFormat,\r\n unresolving: true,\r\n postTranslation: _postTranslation === null ? undefined : _postTranslation,\r\n warnHtmlMessage: _warnHtmlMessage,\r\n escapeParameter: _escapeParameter,\r\n messageResolver: options.messageResolver,\r\n __meta: { framework: 'vue' }\r\n };\r\n {\r\n ctxOptions.datetimeFormats = _datetimeFormats.value;\r\n ctxOptions.numberFormats = _numberFormats.value;\r\n ctxOptions.__datetimeFormatters = isPlainObject(_context)\r\n ? _context.__datetimeFormatters\r\n : undefined;\r\n ctxOptions.__numberFormatters = isPlainObject(_context)\r\n ? _context.__numberFormatters\r\n : undefined;\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n ctxOptions.__v_emitter = isPlainObject(_context)\r\n ? _context.__v_emitter\r\n : undefined;\r\n }\r\n const ctx = createCoreContext(ctxOptions);\r\n _isGlobal && setFallbackContext(ctx);\r\n return ctx;\r\n };\r\n _context = getCoreContext();\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ]\r\n ;\r\n }\r\n // locale\r\n const locale = computed({\r\n get: () => _locale.value,\r\n set: val => {\r\n _locale.value = val;\r\n _context.locale = _locale.value;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = computed({\r\n get: () => _fallbackLocale.value,\r\n set: val => {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = _fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, val);\r\n }\r\n });\r\n // messages\r\n const messages = computed(() => _messages.value);\r\n // datetimeFormats\r\n const datetimeFormats = /* #__PURE__*/ computed(() => _datetimeFormats.value);\r\n // numberFormats\r\n const numberFormats = /* #__PURE__*/ computed(() => _numberFormats.value);\r\n // getPostTranslationHandler\r\n function getPostTranslationHandler() {\r\n return isFunction(_postTranslation) ? _postTranslation : null;\r\n }\r\n // setPostTranslationHandler\r\n function setPostTranslationHandler(handler) {\r\n _postTranslation = handler;\r\n _context.postTranslation = handler;\r\n }\r\n // getMissingHandler\r\n function getMissingHandler() {\r\n return _missing;\r\n }\r\n // setMissingHandler\r\n function setMissingHandler(handler) {\r\n if (handler !== null) {\r\n _runtimeMissing = defineCoreMissingHandler(handler);\r\n }\r\n _missing = handler;\r\n _context.missing = _runtimeMissing;\r\n }\r\n function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n return type !== 'translate' || !arg.resolvedMessage;\r\n }\r\n const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {\r\n trackReactivityValues(); // track reactive dependency\r\n // NOTE: experimental !!\r\n let ret;\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n try {\r\n setAdditionalMeta(getMetaInfo());\r\n if (!_isGlobal) {\r\n _context.fallbackContext = __root\r\n ? getFallbackContext()\r\n : undefined;\r\n }\r\n ret = fn(_context);\r\n }\r\n finally {\r\n setAdditionalMeta(null);\r\n if (!_isGlobal) {\r\n _context.fallbackContext = undefined;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fn(_context);\r\n }\r\n if (isNumber(ret) && ret === NOT_REOSLVED) {\r\n const [key, arg2] = argumentParser();\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n __root &&\r\n isString(key) &&\r\n isResolvedTranslateMessage(warnType, arg2)) {\r\n if (_fallbackRoot &&\r\n (isTranslateFallbackWarn(_fallbackWarn, key) ||\r\n isTranslateMissingWarn(_missingWarn, key))) {\r\n warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\r\n key,\r\n type: warnType\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const { __v_emitter: emitter } = _context;\r\n if (emitter && _fallbackRoot) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type: warnType,\r\n key,\r\n to: 'global',\r\n groupId: `${warnType}:${key}`\r\n });\r\n }\r\n }\r\n }\r\n return __root && _fallbackRoot\r\n ? fallbackSuccess(__root)\r\n : fallbackFail(key);\r\n }\r\n else if (successCondition(ret)) {\r\n return ret;\r\n }\r\n else {\r\n /* istanbul ignore next */\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\r\n }\r\n };\r\n // t\r\n function t(...args) {\r\n return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val));\r\n }\r\n // rt\r\n function rt(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n if (arg3 && !isObject(arg3)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);\r\n }\r\n // d\r\n function d(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // n\r\n function n(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // for custom processor\r\n function normalize(values) {\r\n return values.map(val => isString(val) || isNumber(val) || isBoolean(val)\r\n ? createTextNode(String(val))\r\n : val);\r\n }\r\n const interpolate = (val) => val;\r\n const processor = {\r\n normalize,\r\n interpolate,\r\n type: 'vnode'\r\n };\r\n // transrateVNode, using for `i18n-t` component\r\n function transrateVNode(...args) {\r\n return wrapWithDeps(context => {\r\n let ret;\r\n const _context = context;\r\n try {\r\n _context.processor = processor;\r\n ret = Reflect.apply(translate, null, [_context, ...args]);\r\n }\r\n finally {\r\n _context.processor = null;\r\n }\r\n return ret;\r\n }, () => parseTranslateArgs(...args), 'translate', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[TransrateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val));\r\n }\r\n // numberParts, using for `i18n-n` component\r\n function numberParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[NumberPartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n // datetimeParts, using for `i18n-d` component\r\n function datetimeParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[DatetimePartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n function setPluralRules(rules) {\r\n _pluralRules = rules;\r\n _context.pluralRules = _pluralRules;\r\n }\r\n // te\r\n function te(key, locale) {\r\n const targetLocale = isString(locale) ? locale : _locale.value;\r\n const message = getLocaleMessage(targetLocale);\r\n return _context.messageResolver(message, key) !== null;\r\n }\r\n function resolveMessages(key) {\r\n let messages = null;\r\n const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);\r\n for (let i = 0; i < locales.length; i++) {\r\n const targetLocaleMessages = _messages.value[locales[i]] || {};\r\n const messageValue = _context.messageResolver(targetLocaleMessages, key);\r\n if (messageValue != null) {\r\n messages = messageValue;\r\n break;\r\n }\r\n }\r\n return messages;\r\n }\r\n // tm\r\n function tm(key) {\r\n const messages = resolveMessages(key);\r\n // prettier-ignore\r\n return messages != null\r\n ? messages\r\n : __root\r\n ? __root.tm(key) || {}\r\n : {};\r\n }\r\n // getLocaleMessage\r\n function getLocaleMessage(locale) {\r\n return (_messages.value[locale] || {});\r\n }\r\n // setLocaleMessage\r\n function setLocaleMessage(locale, message) {\r\n _messages.value[locale] = message;\r\n _context.messages = _messages.value;\r\n }\r\n // mergeLocaleMessage\r\n function mergeLocaleMessage(locale, message) {\r\n _messages.value[locale] = _messages.value[locale] || {};\r\n deepCopy(message, _messages.value[locale]);\r\n _context.messages = _messages.value;\r\n }\r\n // getDateTimeFormat\r\n function getDateTimeFormat(locale) {\r\n return _datetimeFormats.value[locale] || {};\r\n }\r\n // setDateTimeFormat\r\n function setDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = format;\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // mergeDateTimeFormat\r\n function mergeDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format);\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // getNumberFormat\r\n function getNumberFormat(locale) {\r\n return _numberFormats.value[locale] || {};\r\n }\r\n // setNumberFormat\r\n function setNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = format;\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // mergeNumberFormat\r\n function mergeNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format);\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // for debug\r\n composerID++;\r\n // watch root locale & fallbackLocale\r\n if (__root && inBrowser) {\r\n watch(__root.locale, (val) => {\r\n if (_inheritLocale) {\r\n _locale.value = val;\r\n _context.locale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n watch(__root.fallbackLocale, (val) => {\r\n if (_inheritLocale) {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n }\r\n // define basic composition API!\r\n const composer = {\r\n id: composerID,\r\n locale,\r\n fallbackLocale,\r\n get inheritLocale() {\r\n return _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n _inheritLocale = val;\r\n if (val && __root) {\r\n _locale.value = __root.locale.value;\r\n _fallbackLocale.value = __root.fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n },\r\n get availableLocales() {\r\n return Object.keys(_messages.value).sort();\r\n },\r\n messages,\r\n get modifiers() {\r\n return _modifiers;\r\n },\r\n get pluralRules() {\r\n return _pluralRules || {};\r\n },\r\n get isGlobal() {\r\n return _isGlobal;\r\n },\r\n get missingWarn() {\r\n return _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n _missingWarn = val;\r\n _context.missingWarn = _missingWarn;\r\n },\r\n get fallbackWarn() {\r\n return _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n _fallbackWarn = val;\r\n _context.fallbackWarn = _fallbackWarn;\r\n },\r\n get fallbackRoot() {\r\n return _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n _fallbackRoot = val;\r\n },\r\n get fallbackFormat() {\r\n return _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n _fallbackFormat = val;\r\n _context.fallbackFormat = _fallbackFormat;\r\n },\r\n get warnHtmlMessage() {\r\n return _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n _warnHtmlMessage = val;\r\n _context.warnHtmlMessage = val;\r\n },\r\n get escapeParameter() {\r\n return _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n _escapeParameter = val;\r\n _context.escapeParameter = val;\r\n },\r\n t,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n [SetPluralRulesSymbol]: setPluralRules\r\n };\r\n {\r\n composer.datetimeFormats = datetimeFormats;\r\n composer.numberFormats = numberFormats;\r\n composer.rt = rt;\r\n composer.te = te;\r\n composer.tm = tm;\r\n composer.d = d;\r\n composer.n = n;\r\n composer.getDateTimeFormat = getDateTimeFormat;\r\n composer.setDateTimeFormat = setDateTimeFormat;\r\n composer.mergeDateTimeFormat = mergeDateTimeFormat;\r\n composer.getNumberFormat = getNumberFormat;\r\n composer.setNumberFormat = setNumberFormat;\r\n composer.mergeNumberFormat = mergeNumberFormat;\r\n composer[InejctWithOption] = options.__injectWithOption;\r\n composer[TransrateVNodeSymbol] = transrateVNode;\r\n composer[DatetimePartsSymbol] = datetimeParts;\r\n composer[NumberPartsSymbol] = numberParts;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n composer[EnableEmitter] = (emitter) => {\r\n _context.__v_emitter = emitter;\r\n };\r\n composer[DisableEmitter] = () => {\r\n _context.__v_emitter = undefined;\r\n };\r\n }\r\n return composer;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Convert to I18n Composer Options from VueI18n Options\r\n *\r\n * @internal\r\n */\r\nfunction convertComposerOptions(options) {\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const missing = isFunction(options.missing) ? options.missing : undefined;\r\n const missingWarn = isBoolean(options.silentTranslationWarn) ||\r\n isRegExp(options.silentTranslationWarn)\r\n ? !options.silentTranslationWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.silentFallbackWarn) ||\r\n isRegExp(options.silentFallbackWarn)\r\n ? !options.silentFallbackWarn\r\n : true;\r\n const fallbackRoot = isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n const fallbackFormat = !!options.formatFallbackMessages;\r\n const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};\r\n const pluralizationRules = options.pluralizationRules;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : undefined;\r\n const warnHtmlMessage = isString(options.warnHtmlInMessage)\r\n ? options.warnHtmlInMessage !== 'off'\r\n : true;\r\n const escapeParameter = !!options.escapeParameterHtml;\r\n const inheritLocale = isBoolean(options.sync) ? options.sync : true;\r\n if ((process.env.NODE_ENV !== 'production') && options.formatter) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && options.preserveDirectiveContent) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n }\r\n let messages = options.messages;\r\n if (isPlainObject(options.sharedMessages)) {\r\n const sharedMessages = options.sharedMessages;\r\n const locales = Object.keys(sharedMessages);\r\n messages = locales.reduce((messages, locale) => {\r\n const message = messages[locale] || (messages[locale] = {});\r\n assign(message, sharedMessages[locale]);\r\n return messages;\r\n }, (messages || {}));\r\n }\r\n const { __i18n, __root, __injectWithOption } = options;\r\n const datetimeFormats = options.datetimeFormats;\r\n const numberFormats = options.numberFormats;\r\n const flatJson = options.flatJson;\r\n return {\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n flatJson,\r\n datetimeFormats,\r\n numberFormats,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackRoot,\r\n fallbackFormat,\r\n modifiers,\r\n pluralRules: pluralizationRules,\r\n postTranslation,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageResolver: options.messageResolver,\r\n inheritLocale,\r\n __i18n,\r\n __root,\r\n __injectWithOption\r\n };\r\n}\r\n/**\r\n * create VueI18n interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createVueI18n(options = {}, VueI18nLegacy) {\r\n {\r\n const composer = createComposer(convertComposerOptions(options));\r\n // defines VueI18n\r\n const vueI18n = {\r\n // id\r\n id: composer.id,\r\n // locale\r\n get locale() {\r\n return composer.locale.value;\r\n },\r\n set locale(val) {\r\n composer.locale.value = val;\r\n },\r\n // fallbackLocale\r\n get fallbackLocale() {\r\n return composer.fallbackLocale.value;\r\n },\r\n set fallbackLocale(val) {\r\n composer.fallbackLocale.value = val;\r\n },\r\n // messages\r\n get messages() {\r\n return composer.messages.value;\r\n },\r\n // datetimeFormats\r\n get datetimeFormats() {\r\n return composer.datetimeFormats.value;\r\n },\r\n // numberFormats\r\n get numberFormats() {\r\n return composer.numberFormats.value;\r\n },\r\n // availableLocales\r\n get availableLocales() {\r\n return composer.availableLocales;\r\n },\r\n // formatter\r\n get formatter() {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n // dummy\r\n return {\r\n interpolate() {\r\n return [];\r\n }\r\n };\r\n },\r\n set formatter(val) {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n },\r\n // missing\r\n get missing() {\r\n return composer.getMissingHandler();\r\n },\r\n set missing(handler) {\r\n composer.setMissingHandler(handler);\r\n },\r\n // silentTranslationWarn\r\n get silentTranslationWarn() {\r\n return isBoolean(composer.missingWarn)\r\n ? !composer.missingWarn\r\n : composer.missingWarn;\r\n },\r\n set silentTranslationWarn(val) {\r\n composer.missingWarn = isBoolean(val) ? !val : val;\r\n },\r\n // silentFallbackWarn\r\n get silentFallbackWarn() {\r\n return isBoolean(composer.fallbackWarn)\r\n ? !composer.fallbackWarn\r\n : composer.fallbackWarn;\r\n },\r\n set silentFallbackWarn(val) {\r\n composer.fallbackWarn = isBoolean(val) ? !val : val;\r\n },\r\n // modifiers\r\n get modifiers() {\r\n return composer.modifiers;\r\n },\r\n // formatFallbackMessages\r\n get formatFallbackMessages() {\r\n return composer.fallbackFormat;\r\n },\r\n set formatFallbackMessages(val) {\r\n composer.fallbackFormat = val;\r\n },\r\n // postTranslation\r\n get postTranslation() {\r\n return composer.getPostTranslationHandler();\r\n },\r\n set postTranslation(handler) {\r\n composer.setPostTranslationHandler(handler);\r\n },\r\n // sync\r\n get sync() {\r\n return composer.inheritLocale;\r\n },\r\n set sync(val) {\r\n composer.inheritLocale = val;\r\n },\r\n // warnInHtmlMessage\r\n get warnHtmlInMessage() {\r\n return composer.warnHtmlMessage ? 'warn' : 'off';\r\n },\r\n set warnHtmlInMessage(val) {\r\n composer.warnHtmlMessage = val !== 'off';\r\n },\r\n // escapeParameterHtml\r\n get escapeParameterHtml() {\r\n return composer.escapeParameter;\r\n },\r\n set escapeParameterHtml(val) {\r\n composer.escapeParameter = val;\r\n },\r\n // preserveDirectiveContent\r\n get preserveDirectiveContent() {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n return true;\r\n },\r\n set preserveDirectiveContent(val) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n },\r\n // pluralizationRules\r\n get pluralizationRules() {\r\n return composer.pluralRules || {};\r\n },\r\n // for internal\r\n __composer: composer,\r\n // t\r\n t(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n rt(...args) {\r\n return Reflect.apply(composer.rt, composer, [...args]);\r\n },\r\n // tc\r\n tc(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = { plural: 1 };\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n // te\r\n te(key, locale) {\r\n return composer.te(key, locale);\r\n },\r\n // tm\r\n tm(key) {\r\n return composer.tm(key);\r\n },\r\n // getLocaleMessage\r\n getLocaleMessage(locale) {\r\n return composer.getLocaleMessage(locale);\r\n },\r\n // setLocaleMessage\r\n setLocaleMessage(locale, message) {\r\n composer.setLocaleMessage(locale, message);\r\n },\r\n // mergeLocaleMessage\r\n mergeLocaleMessage(locale, message) {\r\n composer.mergeLocaleMessage(locale, message);\r\n },\r\n // d\r\n d(...args) {\r\n return Reflect.apply(composer.d, composer, [...args]);\r\n },\r\n // getDateTimeFormat\r\n getDateTimeFormat(locale) {\r\n return composer.getDateTimeFormat(locale);\r\n },\r\n // setDateTimeFormat\r\n setDateTimeFormat(locale, format) {\r\n composer.setDateTimeFormat(locale, format);\r\n },\r\n // mergeDateTimeFormat\r\n mergeDateTimeFormat(locale, format) {\r\n composer.mergeDateTimeFormat(locale, format);\r\n },\r\n // n\r\n n(...args) {\r\n return Reflect.apply(composer.n, composer, [...args]);\r\n },\r\n // getNumberFormat\r\n getNumberFormat(locale) {\r\n return composer.getNumberFormat(locale);\r\n },\r\n // setNumberFormat\r\n setNumberFormat(locale, format) {\r\n composer.setNumberFormat(locale, format);\r\n },\r\n // mergeNumberFormat\r\n mergeNumberFormat(locale, format) {\r\n composer.mergeNumberFormat(locale, format);\r\n },\r\n // getChoiceIndex\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n getChoiceIndex(choice, choicesLength) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));\r\n return -1;\r\n },\r\n // for internal\r\n __onComponentInstanceCreated(target) {\r\n const { componentInstanceCreatedListener } = options;\r\n if (componentInstanceCreatedListener) {\r\n componentInstanceCreatedListener(target, vueI18n);\r\n }\r\n }\r\n };\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n vueI18n.__enableEmitter = (emitter) => {\r\n const __composer = composer;\r\n __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\r\n };\r\n vueI18n.__disableEmitter = () => {\r\n const __composer = composer;\r\n __composer[DisableEmitter] && __composer[DisableEmitter]();\r\n };\r\n }\r\n return vueI18n;\r\n }\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst baseFormatProps = {\r\n tag: {\r\n type: [String, Object]\r\n },\r\n locale: {\r\n type: String\r\n },\r\n scope: {\r\n type: String,\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n validator: (val /* ComponetI18nScope */) => val === 'parent' || val === 'global',\r\n default: 'parent' /* ComponetI18nScope */\r\n },\r\n i18n: {\r\n type: Object\r\n }\r\n};\n\nfunction getInterpolateArg(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n{ slots }, // SetupContext,\r\nkeys) {\r\n if (keys.length === 1 && keys[0] === 'default') {\r\n // default slot with list\r\n const ret = slots.default ? slots.default() : [];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return ret.reduce((slot, current) => {\r\n return (slot = [\r\n ...slot,\r\n ...(isArray(current.children) ? current.children : [current])\r\n ]);\r\n }, []);\r\n }\r\n else {\r\n // named slots\r\n return keys.reduce((arg, key) => {\r\n const slot = slots[key];\r\n if (slot) {\r\n arg[key] = slot();\r\n }\r\n return arg;\r\n }, {});\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getFragmentableTag(tag) {\r\n return Fragment ;\r\n}\n\n/**\r\n * Translation Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [TranslationProps](component#translationprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\r\n *\r\n * @example\r\n * ```html\r\n * <div id=\"app\">\r\n * <!-- ... -->\r\n * <i18n path=\"term\" tag=\"label\" for=\"tos\">\r\n * <a :href=\"url\" target=\"_blank\">{{ $t('tos') }}</a>\r\n * </i18n>\r\n * <!-- ... -->\r\n * </div>\r\n * ```\r\n * ```js\r\n * import { createApp } from 'vue'\r\n * import { createI18n } from 'vue-i18n'\r\n *\r\n * const messages = {\r\n * en: {\r\n * tos: 'Term of Service',\r\n * term: 'I accept xxx {0}.'\r\n * },\r\n * ja: {\r\n * tos: '利用規約',\r\n * term: '私は xxx の{0}に同意します。'\r\n * }\r\n * }\r\n *\r\n * const i18n = createI18n({\r\n * locale: 'en',\r\n * messages\r\n * })\r\n *\r\n * const app = createApp({\r\n * data: {\r\n * url: '/term'\r\n * }\r\n * }).use(i18n).mount('#app')\r\n * ```\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst Translation = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-t',\r\n props: assign({\r\n keypath: {\r\n type: String,\r\n required: true\r\n },\r\n plural: {\r\n type: [Number, String],\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n validator: (val) => isNumber(val) || !isNaN(val)\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const { slots, attrs } = context;\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n const i18n = props.i18n ||\r\n useI18n({\r\n useScope: props.scope,\r\n __useComponent: true\r\n });\r\n return () => {\r\n const keys = Object.keys(slots).filter(key => key !== '_');\r\n const options = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (props.plural !== undefined) {\r\n options.plural = isString(props.plural) ? +props.plural : props.plural;\r\n }\r\n const arg = getInterpolateArg(context, keys);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const children = i18n[TransrateVNodeSymbol](props.keypath, arg, options);\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n }\r\n};\n\nfunction isVNode(target) {\r\n return isArray(target) && !isString(target[0]);\r\n}\r\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\r\n const { slots, attrs } = context;\r\n return () => {\r\n const options = { part: true };\r\n let overrides = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (isString(props.format)) {\r\n options.key = props.format;\r\n }\r\n else if (isObject(props.format)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (isString(props.format.key)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n options.key = props.format.key;\r\n }\r\n // Filter out number format options only\r\n overrides = Object.keys(props.format).reduce((options, prop) => {\r\n return slotKeys.includes(prop)\r\n ? assign({}, options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : options;\r\n }, {});\r\n }\r\n const parts = partFormatter(...[props.value, options, overrides]);\r\n let children = [options.key];\r\n if (isArray(parts)) {\r\n children = parts.map((part, index) => {\r\n const slot = slots[part.type];\r\n const node = slot\r\n ? slot({ [part.type]: part.value, index, parts })\r\n : [part.value];\r\n if (isVNode(node)) {\r\n node[0].key = `${part.type}-${index}`;\r\n }\r\n return node;\r\n });\r\n }\r\n else if (isString(parts)) {\r\n children = [parts];\r\n }\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n}\n\n/**\r\n * Number Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst NumberFormat = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-n',\r\n props: assign({\r\n value: {\r\n type: Number,\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[NumberPartsSymbol](...args));\r\n }\r\n};\n\n/**\r\n * Datetime Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst DatetimeFormat = /*defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-d',\r\n props: assign({\r\n value: {\r\n type: [Number, Date],\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[DatetimePartsSymbol](...args));\r\n }\r\n};\n\nfunction getComposer$2(i18n, instance) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n return (i18nInternal.__getInstance(instance) || i18n.global);\r\n }\r\n else {\r\n const vueI18n = i18nInternal.__getInstance(instance);\r\n return vueI18n != null\r\n ? vueI18n.__composer\r\n : i18n.global.__composer;\r\n }\r\n}\r\nfunction vTDirective(i18n) {\r\n const _process = (binding) => {\r\n const { instance, modifiers, value } = binding;\r\n /* istanbul ignore if */\r\n if (!instance || !instance.$) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const composer = getComposer$2(i18n, instance.$);\r\n if ((process.env.NODE_ENV !== 'production') && modifiers.preserve) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));\r\n }\r\n const parsedValue = parseValue(value);\r\n return [\r\n Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),\r\n composer\r\n ];\r\n };\r\n const register = (el, binding) => {\r\n const [textContent, composer] = _process(binding);\r\n if (inBrowser && i18n.global === composer) {\r\n // global scope only\r\n el.__i18nWatcher = watch(composer.locale, () => {\r\n binding.instance && binding.instance.$forceUpdate();\r\n });\r\n }\r\n el.__composer = composer;\r\n el.textContent = textContent;\r\n };\r\n const unregister = (el) => {\r\n if (inBrowser && el.__i18nWatcher) {\r\n el.__i18nWatcher();\r\n el.__i18nWatcher = undefined;\r\n delete el.__i18nWatcher;\r\n }\r\n if (el.__composer) {\r\n el.__composer = undefined;\r\n delete el.__composer;\r\n }\r\n };\r\n const update = (el, { value }) => {\r\n if (el.__composer) {\r\n const composer = el.__composer;\r\n const parsedValue = parseValue(value);\r\n el.textContent = Reflect.apply(composer.t, composer, [\r\n ...makeParams(parsedValue)\r\n ]);\r\n }\r\n };\r\n const getSSRProps = (binding) => {\r\n const [textContent] = _process(binding);\r\n return { textContent };\r\n };\r\n return {\r\n created: register,\r\n unmounted: unregister,\r\n beforeUpdate: update,\r\n getSSRProps\r\n };\r\n}\r\nfunction parseValue(value) {\r\n if (isString(value)) {\r\n return { path: value };\r\n }\r\n else if (isPlainObject(value)) {\r\n if (!('path' in value)) {\r\n throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\r\n }\r\n return value;\r\n }\r\n else {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n}\r\nfunction makeParams(value) {\r\n const { path, locale, args, choice, plural } = value;\r\n const options = {};\r\n const named = args || {};\r\n if (isString(locale)) {\r\n options.locale = locale;\r\n }\r\n if (isNumber(choice)) {\r\n options.plural = choice;\r\n }\r\n if (isNumber(plural)) {\r\n options.plural = plural;\r\n }\r\n return [path, named, options];\r\n}\n\nfunction apply(app, i18n, ...options) {\r\n const pluginOptions = isPlainObject(options[0])\r\n ? options[0]\r\n : {};\r\n const useI18nComponentName = !!pluginOptions.useI18nComponentName;\r\n const globalInstall = isBoolean(pluginOptions.globalInstall)\r\n ? pluginOptions.globalInstall\r\n : true;\r\n if ((process.env.NODE_ENV !== 'production') && globalInstall && useI18nComponentName) {\r\n warn(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {\r\n name: Translation.name\r\n }));\r\n }\r\n if (globalInstall) {\r\n // install components\r\n app.component(!useI18nComponentName ? Translation.name : 'i18n', Translation);\r\n app.component(NumberFormat.name, NumberFormat);\r\n app.component(DatetimeFormat.name, DatetimeFormat);\r\n }\r\n // install directive\r\n {\r\n app.directive('t', vTDirective(i18n));\r\n }\r\n}\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\r\nlet devtoolsApi;\r\nasync function enableDevTools(app, i18n) {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n setupDevtoolsPlugin({\r\n id: \"vue-devtools-plugin-vue-i18n\" /* PLUGIN */,\r\n label: VueDevToolsLabels[\"vue-devtools-plugin-vue-i18n\" /* PLUGIN */],\r\n packageName: 'vue-i18n',\r\n homepage: 'https://vue-i18n.intlify.dev',\r\n logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\r\n componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\r\n app: app // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }, api => {\r\n devtoolsApi = api;\r\n api.on.visitComponentTree(({ componentInstance, treeNode }) => {\r\n updateComponentTreeTags(componentInstance, treeNode, i18n);\r\n });\r\n api.on.inspectComponent(({ componentInstance, instanceData }) => {\r\n if (componentInstance.vnode.el &&\r\n componentInstance.vnode.el.__VUE_I18N__ &&\r\n instanceData) {\r\n if (i18n.mode === 'legacy') {\r\n // ignore global scope on legacy mode\r\n if (componentInstance.vnode.el.__VUE_I18N__ !==\r\n i18n.global.__composer) {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n else {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n });\r\n api.addInspector({\r\n id: \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */,\r\n label: VueDevToolsLabels[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */],\r\n icon: 'language',\r\n treeFilterPlaceholder: VueDevToolsPlaceholders[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]\r\n });\r\n api.on.getInspectorTree(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n registerScope(payload, i18n);\r\n }\r\n });\r\n const roots = new Map();\r\n api.on.getInspectorState(async (payload) => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n api.unhighlightElement();\r\n inspectScope(payload, i18n);\r\n if (payload.nodeId === 'global') {\r\n if (!roots.has(payload.app)) {\r\n const [root] = await api.getComponentInstances(payload.app);\r\n roots.set(payload.app, root);\r\n }\r\n api.highlightElement(roots.get(payload.app));\r\n }\r\n else {\r\n const instance = getComponentInstance(payload.nodeId, i18n);\r\n instance && api.highlightElement(instance);\r\n }\r\n }\r\n });\r\n api.on.editInspectorState(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n editScope(payload, i18n);\r\n }\r\n });\r\n api.addTimelineLayer({\r\n id: \"vue-i18n-timeline\" /* TIMELINE */,\r\n label: VueDevToolsLabels[\"vue-i18n-timeline\" /* TIMELINE */],\r\n color: VueDevToolsTimelineColors[\"vue-i18n-timeline\" /* TIMELINE */]\r\n });\r\n resolve(true);\r\n });\r\n }\r\n catch (e) {\r\n console.error(e);\r\n reject(false);\r\n }\r\n });\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getI18nScopeLable(instance) {\r\n return (instance.type.name ||\r\n instance.type.displayName ||\r\n instance.type.__file ||\r\n 'Anonymous');\r\n}\r\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\r\ntreeNode, i18n) {\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\r\n // add custom tags local scope only\r\n if (instance.vnode.el.__VUE_I18N__ !== global) {\r\n const tag = {\r\n label: `i18n (${getI18nScopeLable(instance)} Scope)`,\r\n textColor: 0x000000,\r\n backgroundColor: 0xffcd19\r\n };\r\n treeNode.tags.push(tag);\r\n }\r\n }\r\n}\r\nfunction inspectComposer(instanceData, composer) {\r\n const type = VUE_I18N_COMPONENT_TYPES;\r\n instanceData.state.push({\r\n type,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n });\r\n {\r\n instanceData.state.push({\r\n type,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n });\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getLocaleMessageValue(messages) {\r\n const value = {};\r\n Object.keys(messages).forEach((key) => {\r\n const v = messages[key];\r\n if (isFunction(v) && 'source' in v) {\r\n value[key] = getMessageFunctionDetails(v);\r\n }\r\n else if (isObject(v)) {\r\n value[key] = getLocaleMessageValue(v);\r\n }\r\n else {\r\n value[key] = v;\r\n }\r\n });\r\n return value;\r\n}\r\nconst ESC = {\r\n '<': '&lt;',\r\n '>': '&gt;',\r\n '\"': '&quot;',\r\n '&': '&amp;'\r\n};\r\nfunction escape(s) {\r\n return s.replace(/[<>\"&]/g, escapeChar);\r\n}\r\nfunction escapeChar(a) {\r\n return ESC[a] || a;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getMessageFunctionDetails(func) {\r\n const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\r\n return {\r\n _custom: {\r\n type: 'function',\r\n display: `<span>ƒ</span> ${argString}`\r\n }\r\n };\r\n}\r\nfunction registerScope(payload, i18n) {\r\n payload.rootNodes.push({\r\n id: 'global',\r\n label: 'Global Scope'\r\n });\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n for (const [keyInstance, instance] of i18n.__instances) {\r\n // prettier-ignore\r\n const composer = i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n if (global === composer) {\r\n continue;\r\n }\r\n payload.rootNodes.push({\r\n id: composer.id.toString(),\r\n label: `${getI18nScopeLable(keyInstance)} Scope`\r\n });\r\n }\r\n}\r\nfunction getComponentInstance(nodeId, i18n) {\r\n let instance = null;\r\n if (nodeId !== 'global') {\r\n for (const [component, composer] of i18n.__instances.entries()) {\r\n if (composer.id.toString() === nodeId) {\r\n instance = component;\r\n break;\r\n }\r\n }\r\n }\r\n return instance;\r\n}\r\nfunction getComposer$1(nodeId, i18n) {\r\n if (nodeId === 'global') {\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n }\r\n else {\r\n const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\r\n if (instance) {\r\n return i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\r\nfunction inspectScope(payload, i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n // TODO:\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n payload.state = makeScopeInspectState(composer);\r\n }\r\n return null;\r\n}\r\nfunction makeScopeInspectState(composer) {\r\n const state = {};\r\n const localeType = 'Locale related info';\r\n const localeStates = [\r\n {\r\n type: localeType,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n },\r\n {\r\n type: localeType,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n }\r\n ];\r\n state[localeType] = localeStates;\r\n const localeMessagesType = 'Locale messages info';\r\n const localeMessagesStates = [\r\n {\r\n type: localeMessagesType,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n }\r\n ];\r\n state[localeMessagesType] = localeMessagesStates;\r\n {\r\n const datetimeFormatsType = 'Datetime formats info';\r\n const datetimeFormatsStates = [\r\n {\r\n type: datetimeFormatsType,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n }\r\n ];\r\n state[datetimeFormatsType] = datetimeFormatsStates;\r\n const numberFormatsType = 'Datetime formats info';\r\n const numberFormatsStates = [\r\n {\r\n type: numberFormatsType,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n }\r\n ];\r\n state[numberFormatsType] = numberFormatsStates;\r\n }\r\n return state;\r\n}\r\nfunction addTimelineEvent(event, payload) {\r\n if (devtoolsApi) {\r\n let groupId;\r\n if (payload && 'groupId' in payload) {\r\n groupId = payload.groupId;\r\n delete payload.groupId;\r\n }\r\n devtoolsApi.addTimelineEvent({\r\n layerId: \"vue-i18n-timeline\" /* TIMELINE */,\r\n event: {\r\n title: event,\r\n groupId,\r\n time: Date.now(),\r\n meta: {},\r\n data: payload || {},\r\n logType: event === \"compile-error\" /* COMPILE_ERROR */\r\n ? 'error'\r\n : event === \"fallback\" /* FALBACK */ ||\r\n event === \"missing\" /* MISSING */\r\n ? 'warning'\r\n : 'default'\r\n }\r\n });\r\n }\r\n}\r\nfunction editScope(payload, i18n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n const [field] = payload.path;\r\n if (field === 'locale' && isString(payload.state.value)) {\r\n composer.locale.value = payload.state.value;\r\n }\r\n else if (field === 'fallbackLocale' &&\r\n (isString(payload.state.value) ||\r\n isArray(payload.state.value) ||\r\n isObject(payload.state.value))) {\r\n composer.fallbackLocale.value = payload.state.value;\r\n }\r\n else if (field === 'inheritLocale' && isBoolean(payload.state.value)) {\r\n composer.inheritLocale = payload.state.value;\r\n }\r\n }\r\n}\n\n/**\r\n * Supports compatibility for legacy vue-i18n APIs\r\n * This mixin is used when we use vue-i18n@v9.x or later\r\n */\r\nfunction defineMixin(vuei18n, composer, i18n) {\r\n return {\r\n beforeCreate() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const options = this.$options;\r\n if (options.i18n) {\r\n const optionsI18n = options.i18n;\r\n if (options.__i18n) {\r\n optionsI18n.__i18n = options.__i18n;\r\n }\r\n optionsI18n.__root = composer;\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, optionsI18n);\r\n }\r\n else {\r\n optionsI18n.__injectWithOption = true;\r\n this.$i18n = createVueI18n(optionsI18n);\r\n }\r\n }\r\n else if (options.__i18n) {\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, options);\r\n }\r\n else {\r\n this.$i18n = createVueI18n({\r\n __i18n: options.__i18n,\r\n __injectWithOption: true,\r\n __root: composer\r\n });\r\n }\r\n }\r\n else {\r\n // set global\r\n this.$i18n = vuei18n;\r\n }\r\n if (options.__i18nGlobal) {\r\n adjustI18nResources(composer, options, options);\r\n }\r\n vuei18n.__onComponentInstanceCreated(this.$i18n);\r\n i18n.__setInstance(instance, this.$i18n);\r\n // defines vue-i18n legacy APIs\r\n this.$t = (...args) => this.$i18n.t(...args);\r\n this.$rt = (...args) => this.$i18n.rt(...args);\r\n this.$tc = (...args) => this.$i18n.tc(...args);\r\n this.$te = (key, locale) => this.$i18n.te(key, locale);\r\n this.$d = (...args) => this.$i18n.d(...args);\r\n this.$n = (...args) => this.$i18n.n(...args);\r\n this.$tm = (key) => this.$i18n.tm(key);\r\n },\r\n mounted() {\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n this.$el &&\r\n this.$i18n) {\r\n this.$el.__VUE_I18N__ = this.$i18n.__composer;\r\n const emitter = (this.__v_emitter =\r\n createEmitter());\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n unmounted() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n this.$el &&\r\n this.$el.__VUE_I18N__) {\r\n if (this.__v_emitter) {\r\n this.__v_emitter.off('*', addTimelineEvent);\r\n delete this.__v_emitter;\r\n }\r\n if (this.$i18n) {\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\r\n delete this.$el.__VUE_I18N__;\r\n }\r\n }\r\n delete this.$t;\r\n delete this.$rt;\r\n delete this.$tc;\r\n delete this.$te;\r\n delete this.$d;\r\n delete this.$n;\r\n delete this.$tm;\r\n i18n.__deleteInstance(instance);\r\n delete this.$i18n;\r\n }\r\n };\r\n}\r\nfunction mergeToRoot(root, options) {\r\n root.locale = options.locale || root.locale;\r\n root.fallbackLocale = options.fallbackLocale || root.fallbackLocale;\r\n root.missing = options.missing || root.missing;\r\n root.silentTranslationWarn =\r\n options.silentTranslationWarn || root.silentFallbackWarn;\r\n root.silentFallbackWarn =\r\n options.silentFallbackWarn || root.silentFallbackWarn;\r\n root.formatFallbackMessages =\r\n options.formatFallbackMessages || root.formatFallbackMessages;\r\n root.postTranslation = options.postTranslation || root.postTranslation;\r\n root.warnHtmlInMessage = options.warnHtmlInMessage || root.warnHtmlInMessage;\r\n root.escapeParameterHtml =\r\n options.escapeParameterHtml || root.escapeParameterHtml;\r\n root.sync = options.sync || root.sync;\r\n root.__composer[SetPluralRulesSymbol](options.pluralizationRules || root.pluralizationRules);\r\n const messages = getLocaleMessages(root.locale, {\r\n messages: options.messages,\r\n __i18n: options.__i18n\r\n });\r\n Object.keys(messages).forEach(locale => root.mergeLocaleMessage(locale, messages[locale]));\r\n if (options.datetimeFormats) {\r\n Object.keys(options.datetimeFormats).forEach(locale => root.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\r\n }\r\n if (options.numberFormats) {\r\n Object.keys(options.numberFormats).forEach(locale => root.mergeNumberFormat(locale, options.numberFormats[locale]));\r\n }\r\n return root;\r\n}\n\n/**\r\n * Injection key for {@link useI18n}\r\n *\r\n * @remarks\r\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\r\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst I18nInjectionKey = \r\n/* #__PURE__*/ makeSymbol('global-vue-i18n');\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction createI18n(options = {}, VueI18nLegacy) {\r\n // prettier-ignore\r\n const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)\r\n ? options.legacy\r\n : __VUE_I18N_LEGACY_API__;\r\n // prettier-ignore\r\n const __globalInjection = isBoolean(options.globalInjection)\r\n ? options.globalInjection\r\n : true;\r\n // prettier-ignore\r\n const __allowComposition = __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? !!options.allowComposition\r\n : true;\r\n const __instances = new Map();\r\n const [globalScope, __global] = createGlobal(options, __legacyMode);\r\n const symbol = makeSymbol((process.env.NODE_ENV !== 'production') ? 'vue-i18n' : '');\r\n function __getInstance(component) {\r\n return __instances.get(component) || null;\r\n }\r\n function __setInstance(component, instance) {\r\n __instances.set(component, instance);\r\n }\r\n function __deleteInstance(component) {\r\n __instances.delete(component);\r\n }\r\n {\r\n const i18n = {\r\n // mode\r\n get mode() {\r\n return __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? 'legacy'\r\n : 'composition';\r\n },\r\n // allowComposition\r\n get allowComposition() {\r\n return __allowComposition;\r\n },\r\n // install plugin\r\n async install(app, ...options) {\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false) {\r\n app.__VUE_I18N__ = i18n;\r\n }\r\n // setup global provider\r\n app.__VUE_I18N_SYMBOL__ = symbol;\r\n app.provide(app.__VUE_I18N_SYMBOL__, i18n);\r\n // global method and properties injection for Composition API\r\n if (!__legacyMode && __globalInjection) {\r\n injectGlobalFields(app, i18n.global);\r\n }\r\n // install built-in components and directive\r\n if (__VUE_I18N_FULL_INSTALL__) {\r\n apply(app, i18n, ...options);\r\n }\r\n // setup mixin for Legacy API\r\n if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\r\n app.mixin(defineMixin(__global, __global.__composer, i18n));\r\n }\r\n // release global scope\r\n const unmountApp = app.unmount;\r\n app.unmount = () => {\r\n i18n.dispose();\r\n unmountApp();\r\n };\r\n // setup vue-devtools plugin\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\r\n const ret = await enableDevTools(app, i18n);\r\n if (!ret) {\r\n throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\r\n }\r\n const emitter = createEmitter();\r\n if (__legacyMode) {\r\n const _vueI18n = __global;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = __global;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n }\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n // global accessor\r\n get global() {\r\n return __global;\r\n },\r\n dispose() {\r\n globalScope.stop();\r\n },\r\n // @internal\r\n __instances,\r\n // @internal\r\n __getInstance,\r\n // @internal\r\n __setInstance,\r\n // @internal\r\n __deleteInstance\r\n };\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction useI18n(options = {}) {\r\n const instance = getCurrentInstance();\r\n if (instance == null) {\r\n throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\r\n }\r\n if (!instance.isCE &&\r\n instance.appContext.app != null &&\r\n !instance.appContext.app.__VUE_I18N_SYMBOL__) {\r\n throw createI18nError(I18nErrorCodes.NOT_INSLALLED);\r\n }\r\n const i18n = getI18nInstance(instance);\r\n const global = getGlobalComposer(i18n);\r\n const componentOptions = getComponentOptions(instance);\r\n const scope = getScope(options, componentOptions);\r\n if (__VUE_I18N_LEGACY_API__) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (i18n.mode === 'legacy' && !options.__useComponent) {\r\n if (!i18n.allowComposition) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);\r\n }\r\n return useI18nForLegacy(instance, scope, global, options);\r\n }\r\n }\r\n if (scope === 'global') {\r\n adjustI18nResources(global, options, componentOptions);\r\n return global;\r\n }\r\n if (scope === 'parent') {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let composer = getComposer(i18n, instance, options.__useComponent);\r\n if (composer == null) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\r\n }\r\n composer = global;\r\n }\r\n return composer;\r\n }\r\n const i18nInternal = i18n;\r\n let composer = i18nInternal.__getInstance(instance);\r\n if (composer == null) {\r\n const composerOptions = assign({}, options);\r\n if ('__i18n' in componentOptions) {\r\n composerOptions.__i18n = componentOptions.__i18n;\r\n }\r\n if (global) {\r\n composerOptions.__root = global;\r\n }\r\n composer = createComposer(composerOptions);\r\n setupLifeCycle(i18nInternal, instance, composer);\r\n i18nInternal.__setInstance(instance, composer);\r\n }\r\n return composer;\r\n}\r\n/**\r\n * Cast to VueI18n legacy compatible type\r\n *\r\n * @remarks\r\n * This API is provided only with [vue-i18n-bridge](https://vue-i18n.intlify.dev/guide/migration/ways.html#what-is-vue-i18n-bridge).\r\n *\r\n * The purpose of this function is to convert an {@link I18n} instance created with {@link createI18n | createI18n(legacy: true)} into a `vue-i18n@v8.x` compatible instance of `new VueI18n` in a TypeScript environment.\r\n *\r\n * @param i18n - An instance of {@link I18n}\r\n * @returns A i18n instance which is casted to {@link VueI18n} type\r\n *\r\n * @VueI18nTip\r\n * :new: provided by **vue-i18n-bridge only**\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst castToVueI18n = (i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) => {\r\n if (!(__VUE_I18N_BRIDGE__ in i18n)) {\r\n throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N);\r\n }\r\n return i18n;\r\n};\r\nfunction createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n const scope = effectScope();\r\n {\r\n const obj = __VUE_I18N_LEGACY_API__ && legacyMode\r\n ? scope.run(() => createVueI18n(options))\r\n : scope.run(() => createComposer(options));\r\n if (obj == null) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n return [scope, obj];\r\n }\r\n}\r\nfunction getI18nInstance(instance) {\r\n {\r\n const i18n = inject(!instance.isCE\r\n ? instance.appContext.app.__VUE_I18N_SYMBOL__\r\n : I18nInjectionKey);\r\n /* istanbul ignore if */\r\n if (!i18n) {\r\n throw createI18nError(!instance.isCE\r\n ? I18nErrorCodes.UNEXPECTED_ERROR\r\n : I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE);\r\n }\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getScope(options, componentOptions) {\r\n // prettier-ignore\r\n return isEmptyObject(options)\r\n ? ('__i18n' in componentOptions)\r\n ? 'local'\r\n : 'global'\r\n : !options.useScope\r\n ? 'local'\r\n : options.useScope;\r\n}\r\nfunction getGlobalComposer(i18n) {\r\n // prettier-ignore\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer\r\n ;\r\n}\r\nfunction getComposer(i18n, target, useComponent = false) {\r\n let composer = null;\r\n const root = target.root;\r\n let current = target.parent;\r\n while (current != null) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n composer = i18nInternal.__getInstance(current);\r\n }\r\n else {\r\n if (__VUE_I18N_LEGACY_API__) {\r\n const vueI18n = i18nInternal.__getInstance(current);\r\n if (vueI18n != null) {\r\n composer = vueI18n\r\n .__composer;\r\n if (useComponent &&\r\n composer &&\r\n !composer[InejctWithOption] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n composer = null;\r\n }\r\n }\r\n }\r\n }\r\n if (composer != null) {\r\n break;\r\n }\r\n if (root === current) {\r\n break;\r\n }\r\n current = current.parent;\r\n }\r\n return composer;\r\n}\r\nfunction setupLifeCycle(i18n, target, composer) {\r\n let emitter = null;\r\n {\r\n onMounted(() => {\r\n // inject composer instance to DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el) {\r\n target.vnode.el.__VUE_I18N__ = composer;\r\n emitter = createEmitter();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n }, target);\r\n onUnmounted(() => {\r\n // remove composer instance from DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el &&\r\n target.vnode.el.__VUE_I18N__) {\r\n emitter && emitter.off('*', addTimelineEvent);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[DisableEmitter] && _composer[DisableEmitter]();\r\n delete target.vnode.el.__VUE_I18N__;\r\n }\r\n i18n.__deleteInstance(target);\r\n }, target);\r\n }\r\n}\r\nfunction useI18nForLegacy(instance, scope, root, options = {} // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n const isLocale = scope === 'local';\r\n const _composer = shallowRef(null);\r\n if (isLocale &&\r\n instance.proxy &&\r\n !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) {\r\n throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);\r\n }\r\n const _inheritLocale = isBoolean(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = ref(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.locale.value\r\n : isString(options.locale)\r\n ? options.locale\r\n : DEFAULT_LOCALE);\r\n const _fallbackLocale = ref(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.fallbackLocale.value\r\n : isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = ref(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _numberFormats = ref(isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _missingWarn = isLocale\r\n ? root.missingWarn\r\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackWarn = isLocale\r\n ? root.fallbackWarn\r\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackRoot = isLocale\r\n ? root.fallbackRoot\r\n : isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n const _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n const _missing = isFunction(options.missing) ? options.missing : null;\r\n // postTranslation handler\r\n const _postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n const _warnHtmlMessage = isLocale\r\n ? root.warnHtmlMessage\r\n : isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const _escapeParameter = !!options.escapeParameter;\r\n // prettier-ignore\r\n const _modifiers = isLocale\r\n ? root.modifiers\r\n : isPlainObject(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n const _pluralRules = options.pluralRules || (isLocale && root.pluralRules);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ];\r\n }\r\n // locale\r\n const locale = computed({\r\n get: () => {\r\n return _composer.value ? _composer.value.locale.value : _locale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.locale.value = val;\r\n }\r\n _locale.value = val;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = computed({\r\n get: () => {\r\n return _composer.value\r\n ? _composer.value.fallbackLocale.value\r\n : _fallbackLocale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.fallbackLocale.value = val;\r\n }\r\n _fallbackLocale.value = val;\r\n }\r\n });\r\n // messages\r\n const messages = computed(() => {\r\n if (_composer.value) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _composer.value.messages.value;\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _messages.value;\r\n }\r\n });\r\n const datetimeFormats = computed(() => _datetimeFormats.value);\r\n const numberFormats = computed(() => _numberFormats.value);\r\n function getPostTranslationHandler() {\r\n return _composer.value\r\n ? _composer.value.getPostTranslationHandler()\r\n : _postTranslation;\r\n }\r\n function setPostTranslationHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setPostTranslationHandler(handler);\r\n }\r\n }\r\n function getMissingHandler() {\r\n return _composer.value ? _composer.value.getMissingHandler() : _missing;\r\n }\r\n function setMissingHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setMissingHandler(handler);\r\n }\r\n }\r\n function warpWithDeps(fn) {\r\n trackReactivityValues();\r\n return fn();\r\n }\r\n function t(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function rt(...args) {\r\n return _composer.value\r\n ? Reflect.apply(_composer.value.rt, null, [...args])\r\n : '';\r\n }\r\n function d(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function n(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function tm(key) {\r\n return _composer.value ? _composer.value.tm(key) : {};\r\n }\r\n function te(key, locale) {\r\n return _composer.value ? _composer.value.te(key, locale) : false;\r\n }\r\n function getLocaleMessage(locale) {\r\n return _composer.value ? _composer.value.getLocaleMessage(locale) : {};\r\n }\r\n function setLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.setLocaleMessage(locale, message);\r\n _messages.value[locale] = message;\r\n }\r\n }\r\n function mergeLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.mergeLocaleMessage(locale, message);\r\n }\r\n }\r\n function getDateTimeFormat(locale) {\r\n return _composer.value ? _composer.value.getDateTimeFormat(locale) : {};\r\n }\r\n function setDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setDateTimeFormat(locale, format);\r\n _datetimeFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeDateTimeFormat(locale, format);\r\n }\r\n }\r\n function getNumberFormat(locale) {\r\n return _composer.value ? _composer.value.getNumberFormat(locale) : {};\r\n }\r\n function setNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setNumberFormat(locale, format);\r\n _numberFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeNumberFormat(locale, format);\r\n }\r\n }\r\n const wrapper = {\r\n get id() {\r\n return _composer.value ? _composer.value.id : -1;\r\n },\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n datetimeFormats,\r\n numberFormats,\r\n get inheritLocale() {\r\n return _composer.value ? _composer.value.inheritLocale : _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n if (_composer.value) {\r\n _composer.value.inheritLocale = val;\r\n }\r\n },\r\n get availableLocales() {\r\n return _composer.value\r\n ? _composer.value.availableLocales\r\n : Object.keys(_messages.value);\r\n },\r\n get modifiers() {\r\n return (_composer.value ? _composer.value.modifiers : _modifiers);\r\n },\r\n get pluralRules() {\r\n return (_composer.value ? _composer.value.pluralRules : _pluralRules);\r\n },\r\n get isGlobal() {\r\n return _composer.value ? _composer.value.isGlobal : false;\r\n },\r\n get missingWarn() {\r\n return _composer.value ? _composer.value.missingWarn : _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackWarn() {\r\n return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackRoot() {\r\n return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackRoot = val;\r\n }\r\n },\r\n get fallbackFormat() {\r\n return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackFormat = val;\r\n }\r\n },\r\n get warnHtmlMessage() {\r\n return _composer.value\r\n ? _composer.value.warnHtmlMessage\r\n : _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n if (_composer.value) {\r\n _composer.value.warnHtmlMessage = val;\r\n }\r\n },\r\n get escapeParameter() {\r\n return _composer.value\r\n ? _composer.value.escapeParameter\r\n : _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n if (_composer.value) {\r\n _composer.value.escapeParameter = val;\r\n }\r\n },\r\n t,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n rt,\r\n d,\r\n n,\r\n tm,\r\n te,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getDateTimeFormat,\r\n setDateTimeFormat,\r\n mergeDateTimeFormat,\r\n getNumberFormat,\r\n setNumberFormat,\r\n mergeNumberFormat\r\n };\r\n function sync(composer) {\r\n composer.locale.value = _locale.value;\r\n composer.fallbackLocale.value = _fallbackLocale.value;\r\n Object.keys(_messages.value).forEach(locale => {\r\n composer.mergeLocaleMessage(locale, _messages.value[locale]);\r\n });\r\n Object.keys(_datetimeFormats.value).forEach(locale => {\r\n composer.mergeDateTimeFormat(locale, _datetimeFormats.value[locale]);\r\n });\r\n Object.keys(_numberFormats.value).forEach(locale => {\r\n composer.mergeNumberFormat(locale, _numberFormats.value[locale]);\r\n });\r\n composer.escapeParameter = _escapeParameter;\r\n composer.fallbackFormat = _fallbackFormat;\r\n composer.fallbackRoot = _fallbackRoot;\r\n composer.fallbackWarn = _fallbackWarn;\r\n composer.missingWarn = _missingWarn;\r\n composer.warnHtmlMessage = _warnHtmlMessage;\r\n }\r\n onBeforeMount(() => {\r\n if (instance.proxy == null || instance.proxy.$i18n == null) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const composer = (_composer.value = instance.proxy.$i18n\r\n .__composer);\r\n if (scope === 'global') {\r\n _locale.value = composer.locale.value;\r\n _fallbackLocale.value = composer.fallbackLocale.value;\r\n _messages.value = composer.messages.value;\r\n _datetimeFormats.value = composer.datetimeFormats.value;\r\n _numberFormats.value = composer.numberFormats.value;\r\n }\r\n else if (isLocale) {\r\n sync(composer);\r\n }\r\n });\r\n return wrapper;\r\n}\r\nconst globalExportProps = [\r\n 'locale',\r\n 'fallbackLocale',\r\n 'availableLocales'\r\n];\r\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm'] ;\r\nfunction injectGlobalFields(app, composer) {\r\n const i18n = Object.create(null);\r\n globalExportProps.forEach(prop => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, prop);\r\n if (!desc) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const wrap = isRef(desc.value) // check computed props\r\n ? {\r\n get() {\r\n return desc.value.value;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set(val) {\r\n desc.value.value = val;\r\n }\r\n }\r\n : {\r\n get() {\r\n return desc.get && desc.get();\r\n }\r\n };\r\n Object.defineProperty(i18n, prop, wrap);\r\n });\r\n app.config.globalProperties.$i18n = i18n;\r\n globalExportMethods.forEach(method => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, method);\r\n if (!desc || !desc.value) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\r\n });\r\n}\n\n// register message resolver at vue-i18n\r\nregisterMessageResolver(resolveValue);\r\n// register fallback locale at vue-i18n\r\nregisterLocaleFallbacker(fallbackWithLocaleChain);\r\n{\r\n initFeatureFlags();\r\n}\r\n// NOTE: experimental !!\r\nif ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n const target = getGlobalThis();\r\n target.__INTLIFY__ = true;\r\n setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\r\n}\r\nif ((process.env.NODE_ENV !== 'production')) ;\n\nexport { DatetimeFormat, I18nInjectionKey, NumberFormat, Translation, VERSION, castToVueI18n, createI18n, useI18n, vTDirective };\n","/* eslint-env serviceworker */\n\nimport localForage from 'localforage'\nimport { parseNotification } from './services/entity_normalizer/entity_normalizer.service.js'\nimport { prepareNotificationObject } from './services/notification_utils/notification_utils.js'\nimport { createI18n } from 'vue-i18n'\nimport messages from './i18n/service_worker_messages.js'\n\nconst i18n = createI18n({\n // By default, use the browser locale, we will update it if neccessary\n locale: 'en',\n fallbackLocale: 'en',\n messages\n})\n\nfunction isEnabled () {\n return localForage.getItem('vuex-lz')\n .then(data => data.config.webPushNotifications)\n}\n\nfunction getWindowClients () {\n return clients.matchAll({ includeUncontrolled: true })\n .then((clientList) => clientList.filter(({ type }) => type === 'window'))\n}\n\nconst setLocale = async () => {\n const state = await localForage.getItem('vuex-lz')\n const locale = state.config.interfaceLanguage || 'en'\n i18n.locale = locale\n}\n\nconst maybeShowNotification = async (event) => {\n const enabled = await isEnabled()\n const activeClients = await getWindowClients()\n await setLocale()\n if (enabled && (activeClients.length === 0)) {\n const data = event.data.json()\n\n const url = `${self.registration.scope}api/v1/notifications/${data.notification_id}`\n const notification = await fetch(url, { headers: { Authorization: 'Bearer ' + data.access_token } })\n const notificationJson = await notification.json()\n const parsedNotification = parseNotification(notificationJson)\n\n const res = prepareNotificationObject(parsedNotification, i18n)\n\n self.registration.showNotification(res.title, res)\n }\n}\n\nself.addEventListener('push', async (event) => {\n if (event.data) {\n event.waitUntil(maybeShowNotification(event))\n }\n})\n\nself.addEventListener('notificationclick', (event) => {\n event.notification.close()\n\n event.waitUntil(getWindowClients().then((list) => {\n for (let i = 0; i < list.length; i++) {\n const client = list[i]\n if (client.url === '/' && 'focus' in client) { return client.focus() }\n }\n\n if (clients.openWindow) return clients.openWindow('/')\n }))\n})\n","/* eslint-disable import/no-webpack-loader-syntax */\n// This module exports only the notification part of the i18n,\n// which is useful for the service worker\n\nconst messages = {\n ar: require('../lib/notification-i18n-loader.js!./ar.json'),\n ca: require('../lib/notification-i18n-loader.js!./ca.json'),\n cs: require('../lib/notification-i18n-loader.js!./cs.json'),\n de: require('../lib/notification-i18n-loader.js!./de.json'),\n eo: require('../lib/notification-i18n-loader.js!./eo.json'),\n es: require('../lib/notification-i18n-loader.js!./es.json'),\n et: require('../lib/notification-i18n-loader.js!./et.json'),\n eu: require('../lib/notification-i18n-loader.js!./eu.json'),\n fi: require('../lib/notification-i18n-loader.js!./fi.json'),\n fr: require('../lib/notification-i18n-loader.js!./fr.json'),\n ga: require('../lib/notification-i18n-loader.js!./ga.json'),\n he: require('../lib/notification-i18n-loader.js!./he.json'),\n hu: require('../lib/notification-i18n-loader.js!./hu.json'),\n it: require('../lib/notification-i18n-loader.js!./it.json'),\n ja: require('../lib/notification-i18n-loader.js!./ja_pedantic.json'),\n ja_easy: require('../lib/notification-i18n-loader.js!./ja_easy.json'),\n ko: require('../lib/notification-i18n-loader.js!./ko.json'),\n nb: require('../lib/notification-i18n-loader.js!./nb.json'),\n nl: require('../lib/notification-i18n-loader.js!./nl.json'),\n oc: require('../lib/notification-i18n-loader.js!./oc.json'),\n pl: require('../lib/notification-i18n-loader.js!./pl.json'),\n pt: require('../lib/notification-i18n-loader.js!./pt.json'),\n ro: require('../lib/notification-i18n-loader.js!./ro.json'),\n ru: require('../lib/notification-i18n-loader.js!./ru.json'),\n sk: require('../lib/notification-i18n-loader.js!./sk.json'),\n te: require('../lib/notification-i18n-loader.js!./te.json'),\n zh: require('../lib/notification-i18n-loader.js!./zh.json'),\n en: require('../lib/notification-i18n-loader.js!./en.json')\n}\n\nexport default messages\n"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","list","_list","matchHtmlRegExp","module","exports","string","escape","str","match","exec","html","index","lastIndex","length","charCodeAt","substring","f","define","amd","window","global","self","this","localforage","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","_dereq_","scheduleDrain","draining","Mutation","MutationObserver","WebKitMutationObserver","called","observer","nextTick","element","document","createTextNode","observe","characterData","data","setImmediate","MessageChannel","createElement","scriptEl","onreadystatechange","parentNode","removeChild","documentElement","appendChild","setTimeout","channel","port1","onmessage","port2","postMessage","queue","oldQueue","len","task","push","immediate","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","Promise","resolver","TypeError","state","outcome","safelyResolveThenable","QueueItem","promise","onFulfilled","onRejected","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","unwrap","func","value","returnValue","reject","resolve","getThen","obj","then","apply","arguments","thenable","onError","onSuccess","result","tryCatch","status","out","prototype","constructor","error","reason","all","iterable","Object","toString","values","Array","resolved","allResolver","outValue","race","response","_typeof","Symbol","iterator","idb","indexedDB","webkitIndexedDB","mozIndexedDB","OIndexedDB","msIndexedDB","getIDB","createBlob","parts","properties","Blob","name","builder","BlobBuilder","MSBlobBuilder","MozBlobBuilder","WebKitBlobBuilder","append","getBlob","type","Promise$1","executeCallback","callback","executeTwoCallbacks","errorCallback","normalizeKey","key","console","warn","String","getCallback","DETECT_BLOB_SUPPORT_STORE","supportsBlobs","dbContexts","READ_ONLY","READ_WRITE","_deferReadiness","dbInfo","dbContext","deferredOperation","deferredOperations","dbReady","_advanceReadiness","pop","_rejectReadiness","err","_getConnection","upgradeNeeded","forages","db","close","dbArgs","version","openreq","open","onupgradeneeded","createObjectStore","storeName","oldVersion","ex","newVersion","onerror","preventDefault","onsuccess","onversionchange","target","_getOriginalConnection","_getUpgradedConnection","_isUpgradeNeeded","defaultVersion","isNewStore","objectStoreNames","contains","isDowngrade","isUpgrade","incVersion","_decodeBlob","encodedBlob","bin","buf","ArrayBuffer","arr","Uint8Array","_binStringToArrayBuffer","atob","_isEncodedBlob","__local_forage_encoded_blob","_fullyReady","_initReady","_dbInfo","createTransaction","mode","retries","undefined","tx","transaction","forage","_tryReconnect","asyncStorage","_driver","_initStorage","options","ready","initPromises","ignoreErrors","j","slice","_defaultConfig","k","_support","isSafari","openDatabase","test","navigator","userAgent","platform","hasFetch","fetch","indexOf","IDBKeyRange","isIndexedDBValid","iterate","req","objectStore","openCursor","iterationNumber","cursor","getItem","get","setItem","txn","blob","put","onabort","stopPropagation","oncomplete","matchedChrome","matchedEdge","parseInt","_checkBlobSupportWithoutCaching","_checkBlobSupport","blobSupport","reader","FileReader","onloadend","base64","btoa","readAsBinaryString","store","removeItem","clear","count","advanced","openKeyCursor","advance","keys","dropInstance","currentConfig","config","isCurrentDb","dbPromise","dropObjectPromise","deleteObjectStore","_forage2","dropDBPromise","deleteDatabase","onblocked","BASE_CHARS","BLOB_TYPE_PREFIX_REGEX","SERIALIZED_MARKER","SERIALIZED_MARKER_LENGTH","TYPE_ARRAYBUFFER","TYPE_BLOB","TYPE_INT8ARRAY","TYPE_UINT8ARRAY","TYPE_UINT8CLAMPEDARRAY","TYPE_INT16ARRAY","TYPE_INT32ARRAY","TYPE_UINT16ARRAY","TYPE_UINT32ARRAY","TYPE_FLOAT32ARRAY","TYPE_FLOAT64ARRAY","TYPE_SERIALIZED_MARKER_LENGTH","toString$1","stringToBuffer","serializedString","encoded1","encoded2","encoded3","encoded4","bufferLength","p","buffer","bytes","bufferToString","base64String","localforageSerializer","serialize","valueType","marker","fileReader","onload","readAsArrayBuffer","JSON","stringify","deserialize","parse","blobType","matcher","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","createDbTable","executeSql","tryExecuteSql","sqlStatement","args","SYNTAX_ERR","results","rows","_setItem","retriesLeft","originalValue","serializer","sqlError","QUOTA_ERR","getAllStoreNames","storeNames","item","webSQLStorage","dbInfoPromise","description","size","c","operationInfo","dropTable","operations","_getKeyPrefix","defaultConfig","keyPrefix","localStorageWrapper","localStorageTestKey","localStorage","checkIfLocalStorageThrows","isLocalStorageValid","keyPrefixLength","itemKey","includes","array","searchElement","x","y","isNaN","isArray","arg","DefinedDrivers","DriverSupport","DefaultDrivers","INDEXEDDB","WEBSQL","LOCALSTORAGE","DefaultDriverOrder","OptionalDriverMethods","LibraryMethods","concat","DefaultConfig","driver","callWhenReady","localForageInstance","libraryMethod","_args","extend","_key","hasOwnProperty","LocalForage","driverTypeKey","instance","Constructor","_classCallCheck","driverName","defineDriver","_config","_driverSet","_initDriver","_ready","_wrapLibraryMethodsWithReady","setDriver","replace","driverObject","complianceError","driverMethods","driverMethodName","methodNotImplementedFactory","methodName","_i","_len","optionalDriverMethod","configureMissingMethods","setDriverSupport","support","info","getDriver","getDriverPromise","getSerializer","serializerPromise","drivers","supportedDrivers","_getSupportedDrivers","setDriverToConfig","extendSelfWithDriver","_extend","oldDriverSetDone","currentDriverIndex","driverPromiseLoop","initDriver","supports","libraryMethodsAndProperties","createInstance","localforage_js","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","entry","set","has","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Set","setCacheAdd","setCacheHas","SetCache","__data__","add","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","WeakMap","thisArg","predicate","resIndex","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","iteratee","offset","eq","baseForOwn","baseEach","createBaseEach","collection","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","createBaseFor","object","castPath","toKey","path","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","toStringTag","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","other","bitmask","customizer","stack","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","source","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","isFunction","isMasked","isObject","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","reIsNative","RegExp","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","property","isPrototype","nativeKeys","isArrayLike","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","iteratees","orders","overRest","setToString","start","constant","defineProperty","baseSetToString","comparer","sort","isSymbol","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","props","cache","stringToPath","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","coreJsData","eachFunc","arraySome","cacheHas","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","symbolValueOf","valueOf","tag","byteLength","byteOffset","message","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","freeGlobal","g","baseGetAllKeys","getSymbols","isKeyable","map","baseIsNative","getValue","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","symbol","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","Ctor","ctorString","hasFunc","nativeCreate","spreadableSymbol","isConcatSpreadable","reIsUint","reIsDeepProp","reIsPlainProp","uid","maskSrcKey","IE_PROTO","assocIndexOf","splice","getMapData","forEach","memoize","overArg","freeExports","nodeType","freeModule","freeProcess","process","nodeUtil","types","binding","transform","nativeMax","Math","max","otherArgs","freeSelf","root","shortOut","nativeNow","Date","now","lastCalled","stamp","remaining","pairs","LARGE_ARRAY_SIZE","memoizeCapped","rePropName","reEscapeChar","number","quote","subString","reWhitespace","charAt","baseFilter","defaultValue","baseHasIn","hasPath","baseIndexOf","isString","toInteger","guard","baseIsArguments","stubFalse","Buffer","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","memoized","Cache","baseProperty","basePropertyDeep","baseOrderBy","baseRest","isIterateeCall","sortBy","toNumber","toFinite","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","baseValues","qs","url","xtend","PARSE_LINK_HEADER_MAXLEN","PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED","hasRel","rel","intoRels","acc","split","createObjects","m","parseLink","link","linkUrl","parsedUrl","qry","query","shift","reduce","linkHeader","checkHeader","filter","maxInt","base","regexPunycode","regexNonASCII","regexSeparators","errors","floor","stringFromCharCode","fromCharCode","RangeError","mapDomain","fn","encoded","join","ucs2decode","output","counter","extra","ucs2encode","fromCodePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","decode","input","inputLength","bias","basic","lastIndexOf","oldi","w","codePoint","baseMinusT","encode","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","q","qMinusT","toUnicode","toLowerCase","toASCII","prop","sep","regexp","maxKeys","kstr","vstr","v","idx","substr","decodeURIComponent","stringifyPrimitive","isFinite","ks","encodeURIComponent","punycode","util","Url","protocol","slashes","auth","host","port","hostname","hash","search","pathname","href","urlParse","relative","resolveObject","format","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","rest","trim","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","unshift","h","ae","esc","qm","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","last","hasTrailingSlash","up","isAbsolute","_regeneratorRuntime","__esModule","Op","hasOwn","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","done","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","next","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","doneResult","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","val","reverse","skipTempReset","prev","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","getter","d","definition","nmd","paths","children","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_defineProperty","hint","prim","toPrimitive","res","statusNotifications","isStatusNotification","prepareNotificationObject","notification","i18n","i18nString","notifObj","title","from_profile","icon","profile_image_url","body","emoji","text","attachments","nsfw","mimetype","startsWith","image","domain","parseUser","masto","mastoShort","inLists","_original","screen_name","acct","fqn","statusnet_profile_url","emojis","display_name","name_html","name_unescaped","note","description_html","fields","fields_html","field","fields_text","unescape","avatar","profile_image_url_original","cover_photo","header","friends_count","following_count","bot","pleroma","settings_store","storage","relationship","background_image","favicon","token","chat_token","allow_following_move","hide_follows","hide_followers","hide_follows_count","hide_followers_count","rights","moderator","is_moderator","admin","is_admin","role","birthday","privileges","default_scope","privacy","no_rich_text","show_role","discoverable","show_birthday","is_local","delete_others_notice","muting","muted","blocking","statusnet_blocking","followed_by","follows_you","following","created_at","locked","followers_count","statuses_count","follow_request_count","tags","deactivated","is_active","notification_settings","unread_chat_count","screen_name_ui","unicodeDomain","screen_name_ui_contains_non_ascii","parseAttachment","mime_type","meta","large_thumb_url","preview_url","parseStatus","favorited","favourited","fave_num","favourites_count","repeated","reblogged","repeat_num","reblogs_count","bookmarked","reblog","sensitive","raw_html","content","edited_at","summary","spoiler_text","statusnet_conversation_id","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","thread_muted","emoji_reactions","parent_visible","in_reply_to_status_id","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","retweeted_status","summary_raw_html","external_url","poll","title_html","pinned","is_post_verb","uri","qvitter_delete_notice","activity_type","isNsfw","statusnet_html","summary_html","visibility","card","user","account","attentions","mentions","media_attachments","retweetedStatus","favoritedBy","rebloggedBy","assign","originalStatus","parseNotification","parsedNotice","notice","ntype","Boolean","is_seen","favorited_status","action","favourite","report","actor","statuses","inBrowser","hasSymbol","isNumber","isRegExp","toTypeString","isEmptyObject","isPlainObject","msg","_globalThis","escapeHtml","rawText","createCompileError","messages","SyntaxError","location","pathStateMachine","literalValueRE","getPathCharType","ch","resolveWithKeyValue","DEFAULT_MODIFIER","DEFAULT_MESSAGE","DEFAULT_NORMALIZE","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","abs","min","devtools","translateDevTools","createDevToolsHook","hook","payloads","emit","fallbackWithSimple","fallback","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","__localeChainCache","chain","block","appendBlockToChain","defaults","blocks","follow","locale","appendLocaleToChain","tokens","appendItemToChain","toLocaleUpperCase","_resolver","_fallbacker","_additionalMeta","setAdditionalMeta","_fallbackContext","setFallbackContext","_cid","handleMissing","missingWarn","missing","onWarn","ret","updateFallbackLocale","localeFallbacker","inc","CoreErrorCodes","INVALID_ARGUMENT","INVALID_DATE_ARGUMENT","INVALID_ISO_DATE_ARGUMENT","__EXTEND_POINT__","createCoreError","NOOP_MESSAGE_FUNCTION","isMessageFunction","translate","fallbackFormat","postTranslation","unresolving","messageCompiler","fallbackLocale","parseTranslateArgs","escapeParameter","fallbackWarn","resolvedMessage","defaultMsgOrKey","default","enableDefaultMsg","named","escapeParams","formatScope","targetLocale","resolveMessageFormat","cacheBaseKey","occurred","compileMessageFormat","ctxOptions","modifiers","pluralRules","messageResolver","resolveValue","fallbackContext","processor","plural","pluralIndex","getMessageContextOptions","messaged","msgCtx","evaluateMessage","getPluralIndex","pluralRule","orgPluralRule","_named","parent","normalizeNamed","arg1","arg2","modifier","createMessageContext","__INTLIFY_PROD_DEVTOOLS__","timestamp","__meta","locales","from","to","missingRet","errorDetector","warnHtmlMessage","onCacheKey","friendlyJSONstringify","json","generateFormatCacheKey","getCompileOptions","arg3","intlDefined","Intl","datetime","datetimeFormats","__datetimeFormatters","overrides","parseDateTimeArgs","DateTimeFormat","datetimeFormat","formatter","formatToParts","NumberFormat","DATETIME_FORMAT_OPTIONS_KEYS","arg4","matches","dateTime","toISOString","getTime","clearDateTimeFormat","delete","numberFormats","__numberFormatters","parseNumberArgs","numberFormat","NUMBER_FORMAT_OPTIONS_KEYS","clearNumberFormat","expectsLowerCase","normalizeStyle","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","tmp","normalizeClass","onRE","isMap","isIntegerKey","cacheStringFunction","camelizeRE","hyphenateRE","_","toUpperCase","oldValue","is","activeEffectScope","EffectScope","detached","active","effects","cleanups","scopes","run","currentEffectScope","on","off","fromParent","createDep","dep","wasTracked","trackOpBit","newTracked","targetMap","activeEffect","effectTrackDepth","ITERATE_KEY","MAP_KEY_ITERATE_KEY","scheduler","scope","deps","effect","recordEffectScope","lastShouldTrack","shouldTrack","initDepMarkers","cleanupEffect","ptr","finalizeDepMarkers","deferStop","onStop","trackStack","track","depsMap","trackEffects","debuggerEventExtraInfo","newValue","oldTarget","newLength","parseFloat","triggerEffects","computed","triggerEffect","allowRecurse","isNonTrackableKeys","builtInSymbols","getOwnPropertyNames","createGetter","readonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","isReadonly","shallow","receiver","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","Reflect","readonly","reactive","createSetter","isShallow","hadKey","Number","mutableHandlers","deleteProperty","ownKeys","readonlyHandlers","toShallow","get$1","rawTarget","rawKey","toReadonly","toReactive","has$1","set$1","deleteEntry","hadItems","createForEach","observed","createIterableMethod","targetIsMap","isPair","isKeyOnly","innerIterator","createReadonlyMethod","createInstrumentations","mutableInstrumentations","shallowInstrumentations","readonlyInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","readonlyCollectionHandlers","createReactiveObject","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","isExtensible","rawType","targetTypeMap","proxy","Proxy","isProxy","raw","markRaw","def","trackRefValue","ref","triggerRefValue","newVal","__v_isRef","createRef","rawValue","RefImpl","__v_isShallow","_rawValue","_value","useDirectValue","shallowUnwrapHandlers","unref","_a","ComputedRefImpl","_setter","isSSR","_dirty","_cacheable","callWithErrorHandling","handleError","callWithAsyncErrorHandling","catch","throwInDev","vnode","cur","exposedInstance","errorInfo","errorCapturedHooks","ec","appErrorHandler","appContext","errorHandler","contextVNode","logError","isFlushing","isFlushPending","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","bind","queueJob","job","end","middle","getId","findInsertionIndex","queueFlush","flushJobs","Infinity","comparator","b","diff","pre","deduped","flushPostFlushCbs","currentRenderingInstance","inject","treatDefaultAsFactory","currentInstance","provides","INITIAL_WATCHER_VALUE","watch","cb","doWatch","deep","flush","onTrack","onTrigger","cleanup","forceTrigger","isMultiSource","some","traverse","isUnmounted","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","useSSRContext","__watcherHandles","fill","queuePostRenderEffect","suspense","unwatch","el","instanceWatch","publicThis","segments","createPathGetter","handler","setCurrentInstance","unsetCurrentInstance","createHook","lifecycle","prepend","hooks","wrappedHook","__weh","injectHook","onBeforeMount","onMounted","onUnmounted","NULL_DYNAMIC_COMPONENT","getPublicInstance","shapeFlag","exposed","exposeProxy","objectWithRefs","publicPropertiesMap","getExposeProxy","$","$el","$data","$props","$attrs","attrs","$slots","slots","$refs","refs","$parent","$root","$emit","$options","mixins","extends","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","cached","mergeOptions","resolveMergedOptions","$forceUpdate","update","$nextTick","$watch","strats","asMixin","strat","internalOptionMergeStrats","mergeDataFn","mergeObjectOptions","emits","methods","beforeCreate","mergeAsArray","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","beforeUnmount","destroyed","unmounted","activated","errorCaptured","serverPrefetch","components","directives","merged","provide","normalizeInject","pendingBranch","Fragment","Text","Comment","isVNode","__v_isVNode","InternalObjectKey","normalizeRef","ref_key","ref_for","createVNode","patchFlag","dynamicProps","isBlockNode","cloned","cloneVNode","normalizeChildren","__vccOpts","guardReactiveProps","class","klass","style","needFullChildrenNormalization","__v_skip","scopeId","slotScopeIds","component","ssContent","ssFallback","dirs","transition","anchor","targetAnchor","staticCount","dynamicChildren","createBaseVNode","__isSuspense","isSuspense","__isTeleport","isTeleport","extraProps","mergeRef","mergedProps","toMerge","existing","incoming","mergeProps","createTextVNode","slot","_c","_d","slotFlag","_ctx","getCurrentInstance","getterOrOptions","debugOptions","setter","onlyGetter","propsOrChildren","ssrContextKey","code$1","inc$1","I18nErrorCodes","UNEXPECTED_RETURN_TYPE","MUST_BE_CALL_SETUP_TOP","NOT_INSLALLED","NOT_AVAILABLE_IN_LEGACY_MODE","REQUIRED_VALUE","INVALID_VALUE","CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN","NOT_INSLALLED_WITH_PROVIDE","UNEXPECTED_ERROR","NOT_COMPATIBLE_LEGACY_VUE_I18N","BRIDGE_SUPPORT_VUE_2_ONLY","MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION","NOT_AVAILABLE_COMPOSITION_IN_LEGACY","createI18nError","TransrateVNodeSymbol","DatetimePartsSymbol","NumberPartsSymbol","SetPluralRulesSymbol","InejctWithOption","handleFlatJson","subKeys","currentObj","getLocaleMessages","__i18n","flatJson","custom","resource","deepCopy","isNotObjectOrIsArray","src","des","getComponentOptions","adjustI18nResources","componentOptions","__i18nGlobal","mergeLocaleMessage","mergeDateTimeFormat","mergeNumberFormat","DEVTOOLS_META","composerID","defineCoreMissingHandler","createComposer","VueI18nLegacy","__root","_isGlobal","_inheritLocale","inheritLocale","_locale","_fallbackLocale","_messages","_datetimeFormats","_numberFormats","_missingWarn","_fallbackWarn","_fallbackRoot","fallbackRoot","_fallbackFormat","_missing","_runtimeMissing","_postTranslation","_warnHtmlMessage","_escapeParameter","_modifiers","_context","_pluralRules","framework","upper","lower","capitalize","_compiler","internalOptions","cid","initI18nDevTools","createCoreContext","getCoreContext","wrapWithDeps","argumentParser","warnType","fallbackSuccess","fallbackFail","successCondition","getMetaInfo","getLocaleMessage","composer","availableLocales","isGlobal","setLocaleMessage","getPostTranslationHandler","setPostTranslationHandler","getMissingHandler","setMissingHandler","rules","rt","te","tm","targetLocaleMessages","messageValue","resolveMessages","getDateTimeFormat","setDateTimeFormat","getNumberFormat","setNumberFormat","__injectWithOption","createVueI18n","silentTranslationWarn","silentFallbackWarn","formatFallbackMessages","pluralizationRules","warnHtmlInMessage","escapeParameterHtml","sync","sharedMessages","convertComposerOptions","vueI18n","preserveDirectiveContent","__composer","tc","getChoiceIndex","__onComponentInstanceCreated","componentInstanceCreatedListener","baseFormatProps","validator","getFragmentableTag","Translation","keypath","required","setup","useI18n","useScope","__useComponent","current","getInterpolateArg","assignedAttrs","renderFormatter","slotKeys","partFormatter","node","DatetimeFormat","parseValue","makeParams","mergeToRoot","I18nInjectionKey","isCE","app","__VUE_I18N_SYMBOL__","getI18nInstance","getGlobalComposer","getScope","__VUE_I18N_LEGACY_API__","allowComposition","isLocale","_composer","warpWithDeps","wrapper","$i18n","useI18nForLegacy","useComponent","i18nInternal","__getInstance","getComposer","composerOptions","__deleteInstance","setupLifeCycle","__setInstance","globalExportProps","globalExportMethods","hit","newChar","typeMap","subPathDepth","actions","maybeUnescapeQuote","nextChar","trimmed","exp","stripQuotes","formatSubPath","needWarn","__VUE_I18N_FULL_INSTALL__","__INTLIFY__","__INTLIFY_DEVTOOLS_GLOBAL_HOOK__","__legacyMode","legacy","__globalInjection","globalInjection","__allowComposition","__instances","globalScope","__global","legacyMode","createGlobal","getOwnPropertyDescriptor","globalProperties","injectGlobalFields","pluginOptions","useI18nComponentName","globalInstall","directive","_process","getComposer$2","parsedValue","textContent","__i18nWatcher","getSSRProps","vTDirective","mixin","vuei18n","optionsI18n","$t","$rt","$tc","$te","$d","$n","$tm","defineMixin","unmountApp","unmount","dispose","createI18n","ar","ca","cs","de","eo","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","sk","zh","en","getWindowClients","clients","matchAll","includeUncontrolled","clientList","setLocale","localForage","interfaceLanguage","maybeShowNotification","event","webPushNotifications","enabled","activeClients","registration","notification_id","headers","Authorization","access_token","notificationJson","parsedNotification","showNotification","addEventListener","waitUntil","client","focus","openWindow"],"sourceRoot":""} -\ No newline at end of file +{"version":3,"file":"sw-pleroma.js","mappings":"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","sources":["webpack://pleroma_fe/./src/i18n/ar.json","webpack://pleroma_fe/./src/i18n/ca.json","webpack://pleroma_fe/./src/i18n/cs.json","webpack://pleroma_fe/./src/i18n/de.json","webpack://pleroma_fe/./src/i18n/en.json","webpack://pleroma_fe/./src/i18n/eo.json","webpack://pleroma_fe/./src/i18n/es.json","webpack://pleroma_fe/./src/i18n/et.json","webpack://pleroma_fe/./src/i18n/eu.json","webpack://pleroma_fe/./src/i18n/fi.json","webpack://pleroma_fe/./src/i18n/fr.json","webpack://pleroma_fe/./src/i18n/ga.json","webpack://pleroma_fe/./src/i18n/he.json","webpack://pleroma_fe/./src/i18n/hu.json","webpack://pleroma_fe/./src/i18n/it.json","webpack://pleroma_fe/./src/i18n/ja_easy.json","webpack://pleroma_fe/./src/i18n/ja_pedantic.json","webpack://pleroma_fe/./src/i18n/ko.json","webpack://pleroma_fe/./src/i18n/nb.json","webpack://pleroma_fe/./src/i18n/nl.json","webpack://pleroma_fe/./src/i18n/oc.json","webpack://pleroma_fe/./src/i18n/pl.json","webpack://pleroma_fe/./src/i18n/pt.json","webpack://pleroma_fe/./src/i18n/ro.json","webpack://pleroma_fe/./src/i18n/ru.json","webpack://pleroma_fe/./src/i18n/sk.json","webpack://pleroma_fe/./src/i18n/te.json","webpack://pleroma_fe/./src/i18n/zh.json","webpack://pleroma_fe/./node_modules/escape-html/index.js","webpack://pleroma_fe/./node_modules/localforage/dist/localforage.js","webpack://pleroma_fe/./node_modules/lodash/_DataView.js","webpack://pleroma_fe/./node_modules/lodash/_Hash.js","webpack://pleroma_fe/./node_modules/lodash/_ListCache.js","webpack://pleroma_fe/./node_modules/lodash/_Map.js","webpack://pleroma_fe/./node_modules/lodash/_MapCache.js","webpack://pleroma_fe/./node_modules/lodash/_Promise.js","webpack://pleroma_fe/./node_modules/lodash/_Set.js","webpack://pleroma_fe/./node_modules/lodash/_SetCache.js","webpack://pleroma_fe/./node_modules/lodash/_Stack.js","webpack://pleroma_fe/./node_modules/lodash/_Symbol.js","webpack://pleroma_fe/./node_modules/lodash/_Uint8Array.js","webpack://pleroma_fe/./node_modules/lodash/_WeakMap.js","webpack://pleroma_fe/./node_modules/lodash/_apply.js","webpack://pleroma_fe/./node_modules/lodash/_arrayFilter.js","webpack://pleroma_fe/./node_modules/lodash/_arrayLikeKeys.js","webpack://pleroma_fe/./node_modules/lodash/_arrayMap.js","webpack://pleroma_fe/./node_modules/lodash/_arrayPush.js","webpack://pleroma_fe/./node_modules/lodash/_arraySome.js","webpack://pleroma_fe/./node_modules/lodash/_assocIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_baseEach.js","webpack://pleroma_fe/./node_modules/lodash/_baseFilter.js","webpack://pleroma_fe/./node_modules/lodash/_baseFindIndex.js","webpack://pleroma_fe/./node_modules/lodash/_baseFlatten.js","webpack://pleroma_fe/./node_modules/lodash/_baseFor.js","webpack://pleroma_fe/./node_modules/lodash/_baseForOwn.js","webpack://pleroma_fe/./node_modules/lodash/_baseGet.js","webpack://pleroma_fe/./node_modules/lodash/_baseGetAllKeys.js","webpack://pleroma_fe/./node_modules/lodash/_baseGetTag.js","webpack://pleroma_fe/./node_modules/lodash/_baseHasIn.js","webpack://pleroma_fe/./node_modules/lodash/_baseIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsArguments.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsEqual.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsEqualDeep.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsMatch.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsNaN.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsNative.js","webpack://pleroma_fe/./node_modules/lodash/_baseIsTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/_baseIteratee.js","webpack://pleroma_fe/./node_modules/lodash/_baseKeys.js","webpack://pleroma_fe/./node_modules/lodash/_baseMap.js","webpack://pleroma_fe/./node_modules/lodash/_baseMatches.js","webpack://pleroma_fe/./node_modules/lodash/_baseMatchesProperty.js","webpack://pleroma_fe/./node_modules/lodash/_baseOrderBy.js","webpack://pleroma_fe/./node_modules/lodash/_baseProperty.js","webpack://pleroma_fe/./node_modules/lodash/_basePropertyDeep.js","webpack://pleroma_fe/./node_modules/lodash/_baseRest.js","webpack://pleroma_fe/./node_modules/lodash/_baseSetToString.js","webpack://pleroma_fe/./node_modules/lodash/_baseSortBy.js","webpack://pleroma_fe/./node_modules/lodash/_baseTimes.js","webpack://pleroma_fe/./node_modules/lodash/_baseToString.js","webpack://pleroma_fe/./node_modules/lodash/_baseTrim.js","webpack://pleroma_fe/./node_modules/lodash/_baseUnary.js","webpack://pleroma_fe/./node_modules/lodash/_baseValues.js","webpack://pleroma_fe/./node_modules/lodash/_cacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_castPath.js","webpack://pleroma_fe/./node_modules/lodash/_compareAscending.js","webpack://pleroma_fe/./node_modules/lodash/_compareMultiple.js","webpack://pleroma_fe/./node_modules/lodash/_coreJsData.js","webpack://pleroma_fe/./node_modules/lodash/_createBaseEach.js","webpack://pleroma_fe/./node_modules/lodash/_createBaseFor.js","webpack://pleroma_fe/./node_modules/lodash/_defineProperty.js","webpack://pleroma_fe/./node_modules/lodash/_equalArrays.js","webpack://pleroma_fe/./node_modules/lodash/_equalByTag.js","webpack://pleroma_fe/./node_modules/lodash/_equalObjects.js","webpack://pleroma_fe/./node_modules/lodash/_freeGlobal.js","webpack://pleroma_fe/./node_modules/lodash/_getAllKeys.js","webpack://pleroma_fe/./node_modules/lodash/_getMapData.js","webpack://pleroma_fe/./node_modules/lodash/_getMatchData.js","webpack://pleroma_fe/./node_modules/lodash/_getNative.js","webpack://pleroma_fe/./node_modules/lodash/_getRawTag.js","webpack://pleroma_fe/./node_modules/lodash/_getSymbols.js","webpack://pleroma_fe/./node_modules/lodash/_getTag.js","webpack://pleroma_fe/./node_modules/lodash/_getValue.js","webpack://pleroma_fe/./node_modules/lodash/_hasPath.js","webpack://pleroma_fe/./node_modules/lodash/_hashClear.js","webpack://pleroma_fe/./node_modules/lodash/_hashDelete.js","webpack://pleroma_fe/./node_modules/lodash/_hashGet.js","webpack://pleroma_fe/./node_modules/lodash/_hashHas.js","webpack://pleroma_fe/./node_modules/lodash/_hashSet.js","webpack://pleroma_fe/./node_modules/lodash/_isFlattenable.js","webpack://pleroma_fe/./node_modules/lodash/_isIndex.js","webpack://pleroma_fe/./node_modules/lodash/_isIterateeCall.js","webpack://pleroma_fe/./node_modules/lodash/_isKey.js","webpack://pleroma_fe/./node_modules/lodash/_isKeyable.js","webpack://pleroma_fe/./node_modules/lodash/_isMasked.js","webpack://pleroma_fe/./node_modules/lodash/_isPrototype.js","webpack://pleroma_fe/./node_modules/lodash/_isStrictComparable.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheClear.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheDelete.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheGet.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_listCacheSet.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheClear.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheDelete.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheGet.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_mapCacheSet.js","webpack://pleroma_fe/./node_modules/lodash/_mapToArray.js","webpack://pleroma_fe/./node_modules/lodash/_matchesStrictComparable.js","webpack://pleroma_fe/./node_modules/lodash/_memoizeCapped.js","webpack://pleroma_fe/./node_modules/lodash/_nativeCreate.js","webpack://pleroma_fe/./node_modules/lodash/_nativeKeys.js","webpack://pleroma_fe/./node_modules/lodash/_nodeUtil.js","webpack://pleroma_fe/./node_modules/lodash/_objectToString.js","webpack://pleroma_fe/./node_modules/lodash/_overArg.js","webpack://pleroma_fe/./node_modules/lodash/_overRest.js","webpack://pleroma_fe/./node_modules/lodash/_root.js","webpack://pleroma_fe/./node_modules/lodash/_setCacheAdd.js","webpack://pleroma_fe/./node_modules/lodash/_setCacheHas.js","webpack://pleroma_fe/./node_modules/lodash/_setToArray.js","webpack://pleroma_fe/./node_modules/lodash/_setToString.js","webpack://pleroma_fe/./node_modules/lodash/_shortOut.js","webpack://pleroma_fe/./node_modules/lodash/_stackClear.js","webpack://pleroma_fe/./node_modules/lodash/_stackDelete.js","webpack://pleroma_fe/./node_modules/lodash/_stackGet.js","webpack://pleroma_fe/./node_modules/lodash/_stackHas.js","webpack://pleroma_fe/./node_modules/lodash/_stackSet.js","webpack://pleroma_fe/./node_modules/lodash/_strictIndexOf.js","webpack://pleroma_fe/./node_modules/lodash/_stringToPath.js","webpack://pleroma_fe/./node_modules/lodash/_toKey.js","webpack://pleroma_fe/./node_modules/lodash/_toSource.js","webpack://pleroma_fe/./node_modules/lodash/_trimmedEndIndex.js","webpack://pleroma_fe/./node_modules/lodash/constant.js","webpack://pleroma_fe/./node_modules/lodash/eq.js","webpack://pleroma_fe/./node_modules/lodash/filter.js","webpack://pleroma_fe/./node_modules/lodash/get.js","webpack://pleroma_fe/./node_modules/lodash/hasIn.js","webpack://pleroma_fe/./node_modules/lodash/identity.js","webpack://pleroma_fe/./node_modules/lodash/includes.js","webpack://pleroma_fe/./node_modules/lodash/isArguments.js","webpack://pleroma_fe/./node_modules/lodash/isArray.js","webpack://pleroma_fe/./node_modules/lodash/isArrayLike.js","webpack://pleroma_fe/./node_modules/lodash/isBuffer.js","webpack://pleroma_fe/./node_modules/lodash/isFunction.js","webpack://pleroma_fe/./node_modules/lodash/isLength.js","webpack://pleroma_fe/./node_modules/lodash/isObject.js","webpack://pleroma_fe/./node_modules/lodash/isObjectLike.js","webpack://pleroma_fe/./node_modules/lodash/isString.js","webpack://pleroma_fe/./node_modules/lodash/isSymbol.js","webpack://pleroma_fe/./node_modules/lodash/isTypedArray.js","webpack://pleroma_fe/./node_modules/lodash/keys.js","webpack://pleroma_fe/./node_modules/lodash/memoize.js","webpack://pleroma_fe/./node_modules/lodash/property.js","webpack://pleroma_fe/./node_modules/lodash/sortBy.js","webpack://pleroma_fe/./node_modules/lodash/stubArray.js","webpack://pleroma_fe/./node_modules/lodash/stubFalse.js","webpack://pleroma_fe/./node_modules/lodash/toFinite.js","webpack://pleroma_fe/./node_modules/lodash/toInteger.js","webpack://pleroma_fe/./node_modules/lodash/toNumber.js","webpack://pleroma_fe/./node_modules/lodash/toString.js","webpack://pleroma_fe/./node_modules/lodash/values.js","webpack://pleroma_fe/./node_modules/parse-link-header/index.js","webpack://pleroma_fe/./node_modules/punycode/punycode.es6.js","webpack://pleroma_fe/./node_modules/querystring/decode.js","webpack://pleroma_fe/./node_modules/querystring/encode.js","webpack://pleroma_fe/./node_modules/querystring/index.js","webpack://pleroma_fe/./node_modules/url/url.js","webpack://pleroma_fe/./node_modules/url/util.js","webpack://pleroma_fe/./node_modules/xtend/immutable.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/typeof.js","webpack://pleroma_fe/./node_modules/@babel/runtime/regenerator/index.js","webpack://pleroma_fe/webpack/bootstrap","webpack://pleroma_fe/webpack/runtime/compat get default export","webpack://pleroma_fe/webpack/runtime/define property getters","webpack://pleroma_fe/webpack/runtime/global","webpack://pleroma_fe/webpack/runtime/hasOwnProperty shorthand","webpack://pleroma_fe/webpack/runtime/make namespace object","webpack://pleroma_fe/webpack/runtime/node module decorator","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://pleroma_fe/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://pleroma_fe/./src/services/notification_utils/notification_utils.js","webpack://pleroma_fe/./node_modules/punycode.js/punycode.es6.js","webpack://pleroma_fe/./src/services/entity_normalizer/entity_normalizer.service.js","webpack://pleroma_fe/./node_modules/@intlify/shared/dist/shared.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/message-compiler/dist/message-compiler.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/devtools-if/dist/devtools-if.esm-bundler.js","webpack://pleroma_fe/./node_modules/@intlify/core-base/dist/core-base.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/shared/dist/shared.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","webpack://pleroma_fe/./node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","webpack://pleroma_fe/./node_modules/vue-i18n/dist/vue-i18n.runtime.esm-bundler.js","webpack://pleroma_fe/./src/sw.js","webpack://pleroma_fe/./src/i18n/service_worker_messages.js"],"sourcesContent":["export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"منشور مجهول، جارٍ البحث عنه…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أعجِب بمنشورك\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يُتابعك\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"تحميل الإشعارات الأقدم\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"الاشعارات\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"مقروء!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"شارَك منشورك\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"خطأ أثناء جلب الاشعارات: \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"يريد متابعتك\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انتهى الاستطلاع\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"لا مزيد من الإشعارات\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"تفاعل بـ\", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"أرسل بلاغًا\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"انتقلَ إلى\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publicació desconeguda, s'està cercant…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha marcat un estat teu\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha començat a seguir-te\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carrega més notificacions\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificacions\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Llegit!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha repetit el teu estat\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrat a\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No més notificacions\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"et vol seguir\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"ha reaccionat amb \", _interpolate(_list(0))])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error obtenint notificacions: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neznámý příspěvek, hledám jej…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"si oblíbil/a váš příspěvek\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vás nyní sleduje\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Načíst starší oznámení\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oznámení\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Číst!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zopakoval/a váš příspěvek\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Žádná další oznámení\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unbekannte Nachricht, suche danach…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorisierte deine Nachricht\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"folgt dir\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ältere Benachrichtigungen laden\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Benachrichtigungen\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gelesen!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wiederholte deine Nachricht\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"möchte dir folgen\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrierte zu\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagierte mit \", _interpolate(_list(0))])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keine Benachrichtigungen mehr\"])},\n \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error beim laden von Neuigkeiten\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unknown status, searching for it…\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching notifications: \", _interpolate(_list(0))])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorited your status\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"followed you\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wants to follow you\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older notifications\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Read!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated your status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more notifications\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrated to\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reacted with \", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"submitted a report\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"poll has ended\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nekonata afiŝo, serĉante ĝin…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ŝatis vian afiŝon\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ekabonis vin\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enlegi pli malnovajn sciigojn\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sciigoj\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legite!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ripetis vian afiŝon\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neniuj pliaj sciigoj\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagis per \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migris al\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volas vin aboni\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Eraris akirado de sciigoj: \", _interpolate(_list(0))])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sendis raporton\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"enketo finiĝis\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Estado desconocido, buscándolo…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"le gusta tu estado\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"empezó a seguirte\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cargar notificaciones antiguas\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificaciones\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"¡Leído!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repitió tu estado\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No hay más notificaciones\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reaccionó con \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrado a\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"quiere seguirte\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error obteniendo notificaciones:\", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"alustas sinu jälgimist\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Teated\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loe!\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reageeris \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"kolis\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rohkem teateid ei ole\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"taaspostitas su staatuse\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Laadi vanemad teated\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"soovib Teid jälgida\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"lisas su staatuse lemmikuks\"])},\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tundmatu staatus, otsin…\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Egoera ezezaguna, bilatzen…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zure mezua gogoko du\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zu jarraitzen zaitu\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Kargatu jakinarazpen zaharragoak\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jakinarazpenak\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Irakurrita!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zure mezua errepikatu du\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ez dago jakinarazpen gehiago\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"kin erreakzionatu zuen\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hona migratua:\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jarraitu nahi zaitu\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Errorea jakinarazpenak eskuratzean: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Viestiä ei löydetty…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tykkäsi viestistäsi\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seuraa sinua\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lataa vanhempia ilmoituksia\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ilmoitukset\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lue!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toisti viestisi\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ei enempää ilmoituksia\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"lisäsi reaktion \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"siirtyi sivulle\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"haluaa seurata sinua\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Message inconnu, recherche en cours…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a aimé votre statut\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vous suit\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Charger les notifications précédentes\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lu !\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a partagé votre statut\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aucune notification supplémentaire\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a migré à\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"a réagi avec \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"veut vous suivre\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Erreur de chargement des notifications : \", _interpolate(_list(0))])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sondage terminé\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rapport envoyé\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post anaithnid. Cuardach dó…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"toghadh le do phost\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"lean tú\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Luchtaigh fógraí aosta\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fógraí\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Léigh!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"athphostáil tú\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"סטאטוס לא ידוע, מחפש…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"אהב את הסטטוס שלך\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"עקב אחריך\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"טען התראות ישנות\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"התראות\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"קרא!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"חזר על הסטטוס שלך\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"לא עוד התראות\"])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"követ téged\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Értesítések\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Olvasva!\"])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ti segue\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifiche\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Letto!\"])},\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stato sconosciuto, lo sto cercando…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha gradito\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carica notifiche precedenti\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ha condiviso il tuo messaggio\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vuole seguirti\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fine delle notifiche\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"è migrato verso\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"ha reagito con \", _interpolate(_list(0))])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Errore nel caricare le notifiche: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ステータスがみつかりません。さがしています…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがおきにいりされました\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"フォローされました\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ふるいつうちをみる\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"つうち\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"よんだ!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがリピートされました\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"つうちはありません\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"つうちをとりにいくことに、しっぱいしました: \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたをフォローしたいです\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"インスタンスを、ひっこしました\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" でリアクションしました\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"とうひょうが、おわりました\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"つうほうしました\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ステータスが見つかりません。探しています…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがお気に入りされました\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"フォローされました\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"古い通知をみる\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"読んだ!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたのステータスがリピートされました\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知はありません\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" でリアクションしました\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"インスタンスを引っ越しました\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"あなたをフォローしたいです\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"通知の取得に失敗しました: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알 수 없는 게시물입니다, 검색합니다…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"관심을 가짐\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우함\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이전 알림 불러오기\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"읽음!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"리핏함\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"알림이 없습니다\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"이사했습니다\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" 로 반응했습니다\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"알림 불러오기 실패: \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"팔로우 요청\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"신고 내용을 전송함\"])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"투표가 끝남\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ukjent status, leter etter den…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"likte din status\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fulgte deg\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last eldre varsler\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Varslinger\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gjentok din status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ingen gjenstående varsler\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ønsker å følge deg\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Onbekend bericht, aan het zoeken…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vond je bericht leuk\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"volgt jou\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oudere meldingen laden\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meldingen\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gelezen!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"herhaalde je bericht\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Geen meldingen meer\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"is gemigreerd naar\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wil je volgen\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reageerde met \", _interpolate(_list(0))])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Fout bij ophalen van meldingen: \", _interpolate(_list(0))])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"peiling is beëindigd\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Estatut desconegut, sèm a lo cercar...\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a aimat vòstre estatut\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vos a seguit\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cargar las notificacions mai ancianas\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notficacions\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Legit !\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a repetit vòstre estatut\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas mai de notificacions\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nieznany status, szukam go…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dodał(-a) twój status do ulubionych\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"obserwuje cię\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Załaduj starsze powiadomienia\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Powiadomienia\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Przeczytane!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"powtórzył(-a) twój status\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nie masz więcej powiadomień\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wyemigrował do\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"zareagował z \", _interpolate(_list(0))])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"chce ciebie obserwować\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Błąd pobierania powiadomień: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Publicação desconhecida, a procurar…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"gostou do teu post\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seguiu-te\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Carregar notificações antigas\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificações\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lido!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partilhou o teu post\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sem mais notificações\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagiu com \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrou para\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"quer seguir-te\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Erro ao obter notificações: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"te-a urmărit\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notificări\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Citit!\"])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Неизвестный статус, ищем…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"нравится ваш статус\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"начал(а) читать вас\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Загрузить старые уведомления\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Уведомления\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Прочесть\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"повторил(а) ваш статус\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"хочет читать вас\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"добавил(а) реакцию: \", _interpolate(_list(0))])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"перехал на\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Нет дальнейших уведомлений\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Ошибка при обновлении уведомлений: \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neznáma správa, dohľadávam ju…\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Chyba získavania upozornení: \", _interpolate(_list(0))])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"si obľúbil tvoju správu\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ťa nasleduje\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ťa chce nasledovať\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nahrať staršie upozornenia\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upozornenia\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prečítané!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"zopakoval tvoju správu\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Žiadne ďalšie upozornenia\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sa presťahoval na\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reagoval nasledovne \", _interpolate(_list(0))])}\n }\n}","export default {\n \"notifications\": {\n \n }\n}","export default {\n \"notifications\": {\n \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"未知的状态,正在搜索中…\"])},\n \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"喜欢了你的状态\"])},\n \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"关注了你\"])},\n \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"加载更早的通知\"])},\n \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"通知\"])},\n \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"已阅!\"])},\n \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"转发了你的状态\"])},\n \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"没有更多的通知\"])},\n \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"作出了 \", _interpolate(_list(0)), \" 的反应\"])},\n \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"迁移到了\"])},\n \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"想要关注你\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"取得通知时发生错误:\", _interpolate(_list(0))])},\n \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"投票结束了\"])},\n \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"提交举报\"])}\n }\n}","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '&quot;';\n break;\n case 38: // &\n escape = '&amp;';\n break;\n case 39: // '\n escape = '&#39;';\n break;\n case 60: // <\n escape = '&lt;';\n break;\n case 62: // >\n escape = '&gt;';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping localStorage support intact.\n//\n// Oftentimes this will just deserialize JSON content, but if we have a\n// special marker (SERIALIZED_MARKER, defined above), we will extract\n// some kind of arraybuffer/binary data/typed array out of the string.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","'use strict';\n\nvar qs = require('querystring')\n , url = require('url')\n , xtend = require('xtend');\n\nconst PARSE_LINK_HEADER_MAXLEN = parseInt(process.env.PARSE_LINK_HEADER_MAXLEN) || 2000;\nconst PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED = process.env.PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED != null\n\nfunction hasRel(x) {\n return x && x.rel;\n}\n\nfunction intoRels (acc, x) {\n function splitRel (rel) {\n acc[rel] = xtend(x, { rel: rel });\n }\n\n x.rel.split(/\\s+/).forEach(splitRel);\n\n return acc;\n}\n\nfunction createObjects (acc, p) {\n // rel=\"next\" => 1: rel 2: next\n var m = p.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/)\n if (m) acc[m[1]] = m[2];\n return acc;\n}\n\nfunction parseLink(link) {\n try {\n var m = link.match(/<?([^>]*)>(.*)/)\n , linkUrl = m[1]\n , parts = m[2].split(';')\n , parsedUrl = url.parse(linkUrl)\n , qry = qs.parse(parsedUrl.query);\n\n parts.shift();\n\n var info = parts\n .reduce(createObjects, {});\n \n info = xtend(qry, info);\n info.url = linkUrl;\n return info;\n } catch (e) {\n return null;\n }\n}\n\nfunction checkHeader(linkHeader){\n if (!linkHeader) return false;\n\n if (linkHeader.length > PARSE_LINK_HEADER_MAXLEN) {\n if (PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED) {\n throw new Error('Input string too long, it should be under ' + PARSE_LINK_HEADER_MAXLEN + ' characters.');\n } else {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = function (linkHeader) {\n if (!checkHeader(linkHeader)) return null;\n\n return linkHeader.split(/,\\s*</)\n .map(parseLink)\n .filter(hasRel)\n .reduce(intoRels, {});\n};\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n const rootState = store.rootState || store.state\n\n return ([\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.followRequest && 'follow_request',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n rootState.config.notificationVisibility.reports && 'pleroma:report',\n rootState.config.notificationVisibility.polls && 'poll'\n ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n if (isStatusNotification(notification.type) && !notification.status) {\n return false\n }\n return true\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst isMutedNotification = (store, notification) => {\n if (!notification.status) return\n return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n\n if (notification.seen) return\n if (!visibleTypes(store).includes(notification.type)) return\n if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n case 'pleroma:report':\n i18nString = 'submitted_report'\n break\n case 'poll':\n i18nString = 'poll_ended'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n if (status.is_post_verb) {\n return 'status'\n }\n\n if (status.retweeted_status) {\n return 'retweet'\n }\n\n if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n (typeof status.text === 'string' && status.text.match(/favorited/))) {\n return 'favorite'\n }\n\n if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n return 'deletion'\n }\n\n if (status.text.match(/started following/) || status.activity_type === 'follow') {\n return 'follow'\n }\n\n return 'unknown'\n}\n\nexport const parseUser = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'acct')\n // case for users in \"mentions\" property for statuses in MastoAPI\n const mastoShort = masto && !Object.prototype.hasOwnProperty.call(data, 'avatar')\n\n output.inLists = null\n output.id = String(data.id)\n output._original = data // used for server-side settings\n\n if (masto) {\n output.screen_name = data.acct\n output.fqn = data.fqn\n output.statusnet_profile_url = data.url\n\n // There's nothing else to get\n if (mastoShort) {\n return output\n }\n\n output.emoji = data.emojis\n output.name = escape(data.display_name)\n output.name_html = output.name\n output.name_unescaped = data.display_name\n\n output.description = data.note\n // TODO cleanup this shit, output.description is overriden with source data\n output.description_html = data.note\n\n output.fields = data.fields\n output.fields_html = data.fields.map(field => {\n return {\n name: escape(field.name),\n value: field.value\n }\n })\n output.fields_text = data.fields.map(field => {\n return {\n name: unescape(field.name.replace(/<[^>]*>/g, '')),\n value: unescape(field.value.replace(/<[^>]*>/g, ''))\n }\n })\n\n // Utilize avatar_static for gif avatars?\n output.profile_image_url = data.avatar\n output.profile_image_url_original = data.avatar\n\n // Same, utilize header_static?\n output.cover_photo = data.header\n\n output.friends_count = data.following_count\n\n output.bot = data.bot\n\n if (data.pleroma) {\n if (data.pleroma.settings_store) {\n output.storage = data.pleroma.settings_store['pleroma-fe']\n }\n const relationship = data.pleroma.relationship\n\n output.background_image = data.pleroma.background_image\n output.favicon = data.pleroma.favicon\n output.token = data.pleroma.chat_token\n\n if (relationship) {\n output.relationship = relationship\n }\n\n output.allow_following_move = data.pleroma.allow_following_move\n\n output.hide_follows = data.pleroma.hide_follows\n output.hide_followers = data.pleroma.hide_followers\n output.hide_follows_count = data.pleroma.hide_follows_count\n output.hide_followers_count = data.pleroma.hide_followers_count\n\n output.rights = {\n moderator: data.pleroma.is_moderator,\n admin: data.pleroma.is_admin\n }\n // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n if (output.rights.admin) {\n output.role = 'admin'\n } else if (output.rights.moderator) {\n output.role = 'moderator'\n } else {\n output.role = 'member'\n }\n\n output.birthday = data.pleroma.birthday\n\n if (data.pleroma.privileges) {\n output.privileges = data.pleroma.privileges\n } else if (data.pleroma.is_admin) {\n output.privileges = [\n 'users_read',\n 'users_manage_invites',\n 'users_manage_activation_state',\n 'users_manage_tags',\n 'users_manage_credentials',\n 'users_delete',\n 'messages_read',\n 'messages_delete',\n 'instances_delete',\n 'reports_manage_reports',\n 'moderation_log_read',\n 'announcements_manage_announcements',\n 'emoji_manage_emoji',\n 'statistics_read'\n ]\n } else if (data.pleroma.is_moderator) {\n output.privileges = [\n 'messages_delete',\n 'reports_manage_reports'\n ]\n } else {\n output.privileges = []\n }\n }\n\n if (data.source) {\n output.description = data.source.note\n output.default_scope = data.source.privacy\n output.fields = data.source.fields\n if (data.source.pleroma) {\n output.no_rich_text = data.source.pleroma.no_rich_text\n output.show_role = data.source.pleroma.show_role\n output.discoverable = data.source.pleroma.discoverable\n output.show_birthday = data.pleroma.show_birthday\n }\n }\n\n // TODO: handle is_local\n output.is_local = !output.screen_name.includes('@')\n } else {\n output.screen_name = data.screen_name\n\n output.name = data.name\n output.name_html = data.name_html\n\n output.description = data.description\n output.description_html = data.description_html\n\n output.profile_image_url = data.profile_image_url\n output.profile_image_url_original = data.profile_image_url_original\n\n output.cover_photo = data.cover_photo\n\n output.friends_count = data.friends_count\n\n // output.bot = ??? missing\n\n output.statusnet_profile_url = data.statusnet_profile_url\n\n output.is_local = data.is_local\n output.role = data.role\n output.show_role = data.show_role\n\n if (data.rights) {\n output.rights = {\n moderator: data.rights.delete_others_notice,\n admin: data.rights.admin\n }\n }\n output.no_rich_text = data.no_rich_text\n output.default_scope = data.default_scope\n output.hide_follows = data.hide_follows\n output.hide_followers = data.hide_followers\n output.hide_follows_count = data.hide_follows_count\n output.hide_followers_count = data.hide_followers_count\n output.background_image = data.background_image\n // Websocket token\n output.token = data.token\n\n // Convert relationsip data to expected format\n output.relationship = {\n muting: data.muted,\n blocking: data.statusnet_blocking,\n followed_by: data.follows_you,\n following: data.following\n }\n }\n\n output.created_at = new Date(data.created_at)\n output.locked = data.locked\n output.followers_count = data.followers_count\n output.statuses_count = data.statuses_count\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n\n // deactivated was changed to is_active in Pleroma 2.3.0\n // so check if is_active is present\n output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n ? !data.pleroma.is_active // new backend\n : data.pleroma.deactivated // old backend\n\n output.notification_settings = data.pleroma.notification_settings\n output.unread_chat_count = data.pleroma.unread_chat_count\n }\n\n output.tags = output.tags || []\n output.rights = output.rights || {}\n output.notification_settings = output.notification_settings || {}\n\n // Convert punycode to unicode for UI\n output.screen_name_ui = output.screen_name\n if (output.screen_name && output.screen_name.includes('@')) {\n const parts = output.screen_name.split('@')\n const unicodeDomain = punycode.toUnicode(parts[1])\n if (unicodeDomain !== parts[1]) {\n // Add some identifier so users can potentially spot spoofing attempts:\n // lain.com and xn--lin-6cd.com would appear identical otherwise.\n output.screen_name_ui_contains_non_ascii = true\n output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n } else {\n output.screen_name_ui_contains_non_ascii = false\n }\n }\n\n return output\n}\n\nexport const parseAttachment = (data) => {\n const output = {}\n const masto = !Object.prototype.hasOwnProperty.call(data, 'oembed')\n\n if (masto) {\n // Not exactly same...\n output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n output.meta = data.meta // not present in BE yet\n output.id = data.id\n } else {\n output.mimetype = data.mimetype\n // output.meta = ??? missing\n }\n\n output.url = data.url\n output.large_thumb_url = data.preview_url\n output.description = data.description\n\n return output\n}\n\nexport const parseSource = (data) => {\n const output = {}\n\n output.text = data.text\n output.spoiler_text = data.spoiler_text\n output.content_type = data.content_type\n\n return output\n}\n\nexport const parseStatus = (data) => {\n const output = {}\n const masto = Object.prototype.hasOwnProperty.call(data, 'account')\n\n if (masto) {\n output.favorited = data.favourited\n output.fave_num = data.favourites_count\n\n output.repeated = data.reblogged\n output.repeat_num = data.reblogs_count\n\n output.bookmarked = data.bookmarked\n\n output.type = data.reblog ? 'retweet' : 'status'\n output.nsfw = data.sensitive\n\n output.raw_html = data.content\n output.emojis = data.emojis\n\n output.tags = data.tags\n\n output.edited_at = data.edited_at\n\n if (data.pleroma) {\n const { pleroma } = data\n output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n output.statusnet_conversation_id = data.pleroma.conversation_id\n output.is_local = pleroma.local\n output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n output.thread_muted = pleroma.thread_muted\n output.emoji_reactions = pleroma.emoji_reactions\n output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n output.quote = pleroma.quote ? parseStatus(pleroma.quote) : undefined\n output.quote_id = pleroma.quote_id ? pleroma.quote_id : (output.quote ? output.quote.id : undefined)\n output.quote_url = pleroma.quote_url\n output.quote_visible = pleroma.quote_visible\n } else {\n output.text = data.content\n output.summary = data.spoiler_text\n }\n\n output.in_reply_to_status_id = data.in_reply_to_id\n output.in_reply_to_user_id = data.in_reply_to_account_id\n output.replies_count = data.replies_count\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.reblog)\n }\n\n output.summary_raw_html = escape(data.spoiler_text)\n output.external_url = data.url\n output.poll = data.poll\n if (output.poll) {\n output.poll.options = (output.poll.options || []).map(field => ({\n ...field,\n title_html: escape(field.title)\n }))\n }\n output.pinned = data.pinned\n output.muted = data.muted\n } else {\n output.favorited = data.favorited\n output.fave_num = data.fave_num\n\n output.repeated = data.repeated\n output.repeat_num = data.repeat_num\n\n // catchall, temporary\n // Object.assign(output, data)\n\n output.type = qvitterStatusType(data)\n\n if (data.nsfw === undefined) {\n output.nsfw = isNsfw(data)\n if (data.retweeted_status) {\n output.nsfw = data.retweeted_status.nsfw\n }\n } else {\n output.nsfw = data.nsfw\n }\n\n output.raw_html = data.statusnet_html\n output.text = data.text\n\n output.in_reply_to_status_id = data.in_reply_to_status_id\n output.in_reply_to_user_id = data.in_reply_to_user_id\n output.in_reply_to_screen_name = data.in_reply_to_screen_name\n output.statusnet_conversation_id = data.statusnet_conversation_id\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.retweeted_status)\n }\n\n output.summary = data.summary\n output.summary_html = data.summary_html\n output.external_url = data.external_url\n output.is_local = data.is_local\n }\n\n output.id = String(data.id)\n output.visibility = data.visibility\n output.card = data.card\n output.created_at = new Date(data.created_at)\n\n // Converting to string, the right way.\n output.in_reply_to_status_id = output.in_reply_to_status_id\n ? String(output.in_reply_to_status_id)\n : null\n output.in_reply_to_user_id = output.in_reply_to_user_id\n ? String(output.in_reply_to_user_id)\n : null\n\n output.user = parseUser(masto ? data.account : data.user)\n\n output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)\n\n output.attachments = ((masto ? data.media_attachments : data.attachments) || [])\n .map(parseAttachment)\n\n const retweetedStatus = masto ? data.reblog : data.retweeted_status\n if (retweetedStatus) {\n output.retweeted_status = parseStatus(retweetedStatus)\n }\n\n output.favoritedBy = []\n output.rebloggedBy = []\n\n if (Object.prototype.hasOwnProperty.call(data, 'originalStatus')) {\n Object.assign(output, data.originalStatus)\n }\n\n return output\n}\n\nexport const parseNotification = (data) => {\n const mastoDict = {\n favourite: 'like',\n reblog: 'repeat'\n }\n const masto = !Object.prototype.hasOwnProperty.call(data, 'ntype')\n const output = {}\n\n if (masto) {\n output.type = mastoDict[data.type] || data.type\n output.seen = data.pleroma.is_seen\n output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n output.action = output.status // TODO: Refactor, this is unneeded\n output.target = output.type !== 'move'\n ? null\n : parseUser(data.target)\n output.from_profile = parseUser(data.account)\n output.emoji = data.emoji\n output.emoji_url = data.emoji_url\n if (data.report) {\n output.report = data.report\n output.report.content = data.report.content\n output.report.acct = parseUser(data.report.account)\n output.report.actor = parseUser(data.report.actor)\n output.report.statuses = data.report.statuses.map(parseStatus)\n }\n } else {\n const parsedNotice = parseStatus(data.notice)\n output.type = data.ntype\n output.seen = Boolean(data.is_seen)\n output.status = output.type === 'like'\n ? parseStatus(data.notice.favorited_status)\n : parsedNotice\n output.action = parsedNotice\n output.from_profile = output.type === 'pleroma:chat_mention' ? parseUser(data.account) : parseUser(data.from_profile)\n }\n\n output.created_at = new Date(data.created_at)\n output.id = parseInt(data.id)\n\n return output\n}\n\nconst isNsfw = (status) => {\n const nsfwRegex = /#nsfw/i\n return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)\n}\n\nexport const parseLinkHeaderPagination = (linkHeader, opts = {}) => {\n const flakeId = opts.flakeId\n const parsedLinkHeader = parseLinkHeader(linkHeader)\n if (!parsedLinkHeader) return\n const maxId = parsedLinkHeader.next.max_id\n const minId = parsedLinkHeader.prev.min_id\n\n return {\n maxId: flakeId ? maxId : parseInt(maxId, 10),\n minId: flakeId ? minId : parseInt(minId, 10)\n }\n}\n\nexport const parseChat = (chat) => {\n const output = {}\n output.id = chat.id\n output.account = parseUser(chat.account)\n output.unread = chat.unread\n output.lastMessage = parseChatMessage(chat.last_message)\n output.updated_at = new Date(chat.updated_at)\n return output\n}\n\nexport const parseChatMessage = (message) => {\n if (!message) { return }\n if (message.isNormalized) { return message }\n const output = message\n output.id = message.id\n output.created_at = new Date(message.created_at)\n output.chat_id = message.chat_id\n output.emojis = message.emojis\n output.content = message.content\n if (message.attachment) {\n output.attachments = [parseAttachment(message.attachment)]\n } else {\n output.attachments = []\n }\n output.pending = !!message.pending\n output.error = false\n output.idempotency_key = message.idempotency_key\n output.isNormalized = true\n return output\n}\n","/*!\n * shared v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n/**\r\n * Original Utilities\r\n * written by kazuya kawaguchi\r\n */\r\nconst inBrowser = typeof window !== 'undefined';\r\nlet mark;\r\nlet measure;\r\nif ((process.env.NODE_ENV !== 'production')) {\r\n const perf = inBrowser && window.performance;\r\n if (perf &&\r\n perf.mark &&\r\n perf.measure &&\r\n perf.clearMarks &&\r\n perf.clearMeasures) {\r\n mark = (tag) => perf.mark(tag);\r\n measure = (name, startTag, endTag) => {\r\n perf.measure(name, startTag, endTag);\r\n perf.clearMarks(startTag);\r\n perf.clearMarks(endTag);\r\n };\r\n }\r\n}\r\nconst RE_ARGS = /\\{([0-9a-zA-Z]+)\\}/g;\r\n/* eslint-disable */\r\nfunction format(message, ...args) {\r\n if (args.length === 1 && isObject(args[0])) {\r\n args = args[0];\r\n }\r\n if (!args || !args.hasOwnProperty) {\r\n args = {};\r\n }\r\n return message.replace(RE_ARGS, (match, identifier) => {\r\n return args.hasOwnProperty(identifier) ? args[identifier] : '';\r\n });\r\n}\r\nconst hasSymbol = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\r\nconst makeSymbol = (name) => hasSymbol ? Symbol(name) : name;\r\nconst generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });\r\nconst friendlyJSONstringify = (json) => JSON.stringify(json)\r\n .replace(/\\u2028/g, '\\\\u2028')\r\n .replace(/\\u2029/g, '\\\\u2029')\r\n .replace(/\\u0027/g, '\\\\u0027');\r\nconst isNumber = (val) => typeof val === 'number' && isFinite(val);\r\nconst isDate = (val) => toTypeString(val) === '[object Date]';\r\nconst isRegExp = (val) => toTypeString(val) === '[object RegExp]';\r\nconst isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0;\r\nfunction warn(msg, err) {\r\n if (typeof console !== 'undefined') {\r\n console.warn(`[intlify] ` + msg);\r\n /* istanbul ignore if */\r\n if (err) {\r\n console.warn(err.stack);\r\n }\r\n }\r\n}\r\nconst assign = Object.assign;\r\nlet _globalThis;\r\nconst getGlobalThis = () => {\r\n // prettier-ignore\r\n return (_globalThis ||\r\n (_globalThis =\r\n typeof globalThis !== 'undefined'\r\n ? globalThis\r\n : typeof self !== 'undefined'\r\n ? self\r\n : typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : {}));\r\n};\r\nfunction escapeHtml(rawText) {\r\n return rawText\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&apos;');\r\n}\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nfunction hasOwn(obj, key) {\r\n return hasOwnProperty.call(obj, key);\r\n}\r\n/* eslint-enable */\r\n/**\r\n * Useful Utilities By Evan you\r\n * Modified by kazuya kawaguchi\r\n * MIT License\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts\r\n * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts\r\n */\r\nconst isArray = Array.isArray;\r\nconst isFunction = (val) => typeof val === 'function';\r\nconst isString = (val) => typeof val === 'string';\r\nconst isBoolean = (val) => typeof val === 'boolean';\r\nconst isSymbol = (val) => typeof val === 'symbol';\r\nconst isObject = (val) => // eslint-disable-line\r\n val !== null && typeof val === 'object';\r\nconst isPromise = (val) => {\r\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\r\n};\r\nconst objectToString = Object.prototype.toString;\r\nconst toTypeString = (value) => objectToString.call(value);\r\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\r\n// for converting list and named values to displayed strings.\r\nconst toDisplayString = (val) => {\r\n return val == null\r\n ? ''\r\n : isArray(val) || (isPlainObject(val) && val.toString === objectToString)\r\n ? JSON.stringify(val, null, 2)\r\n : String(val);\r\n};\r\nconst RANGE = 2;\r\nfunction generateCodeFrame(source, start = 0, end = source.length) {\r\n const lines = source.split(/\\r?\\n/);\r\n let count = 0;\r\n const res = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n count += lines[i].length + 1;\r\n if (count >= start) {\r\n for (let j = i - RANGE; j <= i + RANGE || end > count; j++) {\r\n if (j < 0 || j >= lines.length)\r\n continue;\r\n const line = j + 1;\r\n res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`);\r\n const lineLength = lines[j].length;\r\n if (j === i) {\r\n // push underline\r\n const pad = start - (count - lineLength) + 1;\r\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\r\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\r\n }\r\n else if (j > i) {\r\n if (end > count) {\r\n const length = Math.max(Math.min(end - count, lineLength), 1);\r\n res.push(` | ` + '^'.repeat(length));\r\n }\r\n count += lineLength + 1;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n return res.join('\\n');\r\n}\n\n/**\r\n * Event emitter, forked from the below:\r\n * - original repository url: https://github.com/developit/mitt\r\n * - code url: https://github.com/developit/mitt/blob/master/src/index.ts\r\n * - author: Jason Miller (https://github.com/developit)\r\n * - license: MIT\r\n */\r\n/**\r\n * Create a event emitter\r\n *\r\n * @returns An event emitter\r\n */\r\nfunction createEmitter() {\r\n const events = new Map();\r\n const emitter = {\r\n events,\r\n on(event, handler) {\r\n const handlers = events.get(event);\r\n const added = handlers && handlers.push(handler);\r\n if (!added) {\r\n events.set(event, [handler]);\r\n }\r\n },\r\n off(event, handler) {\r\n const handlers = events.get(event);\r\n if (handlers) {\r\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\r\n }\r\n },\r\n emit(event, payload) {\r\n (events.get(event) || [])\r\n .slice()\r\n .map(handler => handler(payload));\r\n (events.get('*') || [])\r\n .slice()\r\n .map(handler => handler(event, payload));\r\n }\r\n };\r\n return emitter;\r\n}\n\nexport { assign, createEmitter, escapeHtml, format, friendlyJSONstringify, generateCodeFrame, generateFormatCacheKey, getGlobalThis, hasOwn, inBrowser, isArray, isBoolean, isDate, isEmptyObject, isFunction, isNumber, isObject, isPlainObject, isPromise, isRegExp, isString, isSymbol, makeSymbol, mark, measure, objectToString, toDisplayString, toTypeString, warn };\n","/*!\n * message-compiler v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { format, assign, isString } from '@intlify/shared';\n\nconst CompileErrorCodes = {\r\n // tokenizer error codes\r\n EXPECTED_TOKEN: 1,\r\n INVALID_TOKEN_IN_PLACEHOLDER: 2,\r\n UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,\r\n UNKNOWN_ESCAPE_SEQUENCE: 4,\r\n INVALID_UNICODE_ESCAPE_SEQUENCE: 5,\r\n UNBALANCED_CLOSING_BRACE: 6,\r\n UNTERMINATED_CLOSING_BRACE: 7,\r\n EMPTY_PLACEHOLDER: 8,\r\n NOT_ALLOW_NEST_PLACEHOLDER: 9,\r\n INVALID_LINKED_FORMAT: 10,\r\n // parser error codes\r\n MUST_HAVE_MESSAGES_IN_PLURAL: 11,\r\n UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,\r\n UNEXPECTED_EMPTY_LINKED_KEY: 13,\r\n UNEXPECTED_LEXICAL_ANALYSIS: 14,\r\n // Special value for higher-order compilers to pick up the last code\r\n // to avoid collision of error codes. This should always be kept as the last\r\n // item.\r\n __EXTEND_POINT__: 15\r\n};\r\n/** @internal */\r\nconst errorMessages = {\r\n // tokenizer error messages\r\n [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`,\r\n [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`,\r\n [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`,\r\n [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\\\{0}`,\r\n [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`,\r\n [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`,\r\n [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`,\r\n [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`,\r\n [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`,\r\n [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`,\r\n // parser error messages\r\n [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,\r\n [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,\r\n [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`\r\n};\r\nfunction createCompileError(code, loc, options = {}) {\r\n const { domain, messages, args } = options;\r\n const msg = (process.env.NODE_ENV !== 'production')\r\n ? format((messages || errorMessages)[code] || '', ...(args || []))\r\n : code;\r\n const error = new SyntaxError(String(msg));\r\n error.code = code;\r\n if (loc) {\r\n error.location = loc;\r\n }\r\n error.domain = domain;\r\n return error;\r\n}\r\n/** @internal */\r\nfunction defaultOnError(error) {\r\n throw error;\r\n}\n\nconst LocationStub = {\r\n start: { line: 1, column: 1, offset: 0 },\r\n end: { line: 1, column: 1, offset: 0 }\r\n};\r\nfunction createPosition(line, column, offset) {\r\n return { line, column, offset };\r\n}\r\nfunction createLocation(start, end, source) {\r\n const loc = { start, end };\r\n if (source != null) {\r\n loc.source = source;\r\n }\r\n return loc;\r\n}\n\nconst CHAR_SP = ' ';\r\nconst CHAR_CR = '\\r';\r\nconst CHAR_LF = '\\n';\r\nconst CHAR_LS = String.fromCharCode(0x2028);\r\nconst CHAR_PS = String.fromCharCode(0x2029);\r\nfunction createScanner(str) {\r\n const _buf = str;\r\n let _index = 0;\r\n let _line = 1;\r\n let _column = 1;\r\n let _peekOffset = 0;\r\n const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF;\r\n const isLF = (index) => _buf[index] === CHAR_LF;\r\n const isPS = (index) => _buf[index] === CHAR_PS;\r\n const isLS = (index) => _buf[index] === CHAR_LS;\r\n const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index);\r\n const index = () => _index;\r\n const line = () => _line;\r\n const column = () => _column;\r\n const peekOffset = () => _peekOffset;\r\n const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];\r\n const currentChar = () => charAt(_index);\r\n const currentPeek = () => charAt(_index + _peekOffset);\r\n function next() {\r\n _peekOffset = 0;\r\n if (isLineEnd(_index)) {\r\n _line++;\r\n _column = 0;\r\n }\r\n if (isCRLF(_index)) {\r\n _index++;\r\n }\r\n _index++;\r\n _column++;\r\n return _buf[_index];\r\n }\r\n function peek() {\r\n if (isCRLF(_index + _peekOffset)) {\r\n _peekOffset++;\r\n }\r\n _peekOffset++;\r\n return _buf[_index + _peekOffset];\r\n }\r\n function reset() {\r\n _index = 0;\r\n _line = 1;\r\n _column = 1;\r\n _peekOffset = 0;\r\n }\r\n function resetPeek(offset = 0) {\r\n _peekOffset = offset;\r\n }\r\n function skipToPeek() {\r\n const target = _index + _peekOffset;\r\n // eslint-disable-next-line no-unmodified-loop-condition\r\n while (target !== _index) {\r\n next();\r\n }\r\n _peekOffset = 0;\r\n }\r\n return {\r\n index,\r\n line,\r\n column,\r\n peekOffset,\r\n charAt,\r\n currentChar,\r\n currentPeek,\r\n next,\r\n peek,\r\n reset,\r\n resetPeek,\r\n skipToPeek\r\n };\r\n}\n\nconst EOF = undefined;\r\nconst LITERAL_DELIMITER = \"'\";\r\nconst ERROR_DOMAIN$1 = 'tokenizer';\r\nfunction createTokenizer(source, options = {}) {\r\n const location = options.location !== false;\r\n const _scnr = createScanner(source);\r\n const currentOffset = () => _scnr.index();\r\n const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());\r\n const _initLoc = currentPosition();\r\n const _initOffset = currentOffset();\r\n const _context = {\r\n currentType: 14 /* EOF */,\r\n offset: _initOffset,\r\n startLoc: _initLoc,\r\n endLoc: _initLoc,\r\n lastType: 14 /* EOF */,\r\n lastOffset: _initOffset,\r\n lastStartLoc: _initLoc,\r\n lastEndLoc: _initLoc,\r\n braceNest: 0,\r\n inLinked: false,\r\n text: ''\r\n };\r\n const context = () => _context;\r\n const { onError } = options;\r\n function emitError(code, pos, offset, ...args) {\r\n const ctx = context();\r\n pos.column += offset;\r\n pos.offset += offset;\r\n if (onError) {\r\n const loc = createLocation(ctx.startLoc, pos);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN$1,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function getToken(context, type, value) {\r\n context.endLoc = currentPosition();\r\n context.currentType = type;\r\n const token = { type };\r\n if (location) {\r\n token.loc = createLocation(context.startLoc, context.endLoc);\r\n }\r\n if (value != null) {\r\n token.value = value;\r\n }\r\n return token;\r\n }\r\n const getEndToken = (context) => getToken(context, 14 /* EOF */);\r\n function eat(scnr, ch) {\r\n if (scnr.currentChar() === ch) {\r\n scnr.next();\r\n return ch;\r\n }\r\n else {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function peekSpaces(scnr) {\r\n let buf = '';\r\n while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {\r\n buf += scnr.currentPeek();\r\n scnr.peek();\r\n }\r\n return buf;\r\n }\r\n function skipSpaces(scnr) {\r\n const buf = peekSpaces(scnr);\r\n scnr.skipToPeek();\r\n return buf;\r\n }\r\n function isIdentifierStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n cc === 95 // _\r\n );\r\n }\r\n function isNumberStart(ch) {\r\n if (ch === EOF) {\r\n return false;\r\n }\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n }\r\n function isNamedIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isListIdentifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek();\r\n const ret = isNumberStart(ch);\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLiteralStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 2 /* BraceLeft */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === LITERAL_DELIMITER;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDotStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 8 /* LinkedAlias */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \".\" /* LinkedDot */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedModifierStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 9 /* LinkedDot */) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = isIdentifierStart(scnr.currentPeek());\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedDelimiterStart(scnr, context) {\r\n const { currentType } = context;\r\n if (!(currentType === 8 /* LinkedAlias */ ||\r\n currentType === 12 /* LinkedModifier */)) {\r\n return false;\r\n }\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \":\" /* LinkedDelimiter */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isLinkedReferStart(scnr, context) {\r\n const { currentType } = context;\r\n if (currentType !== 10 /* LinkedDelimiter */) {\r\n return false;\r\n }\r\n const fn = () => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return isIdentifierStart(scnr.peek());\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n ch === \":\" /* LinkedDelimiter */ ||\r\n ch === \".\" /* LinkedDot */ ||\r\n ch === CHAR_SP ||\r\n !ch) {\r\n return false;\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn();\r\n }\r\n else {\r\n // other characters\r\n return isIdentifierStart(ch);\r\n }\r\n };\r\n const ret = fn();\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function isPluralStart(scnr) {\r\n peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"|\" /* Pipe */;\r\n scnr.resetPeek();\r\n return ret;\r\n }\r\n function detectModuloStart(scnr) {\r\n const spaces = peekSpaces(scnr);\r\n const ret = scnr.currentPeek() === \"%\" /* Modulo */ &&\r\n scnr.peek() === \"{\" /* BraceLeft */;\r\n scnr.resetPeek();\r\n return {\r\n isModulo: ret,\r\n hasSpace: spaces.length > 0\r\n };\r\n }\r\n function isTextStart(scnr, reset = true) {\r\n const fn = (hasSpace = false, prev = '', detectModulo = false) => {\r\n const ch = scnr.currentPeek();\r\n if (ch === \"{\" /* BraceLeft */) {\r\n return prev === \"%\" /* Modulo */ ? false : hasSpace;\r\n }\r\n else if (ch === \"@\" /* LinkedAlias */ || !ch) {\r\n return prev === \"%\" /* Modulo */ ? true : hasSpace;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n scnr.peek();\r\n return fn(hasSpace, \"%\" /* Modulo */, true);\r\n }\r\n else if (ch === \"|\" /* Pipe */) {\r\n return prev === \"%\" /* Modulo */ || detectModulo\r\n ? true\r\n : !(prev === CHAR_SP || prev === CHAR_LF);\r\n }\r\n else if (ch === CHAR_SP) {\r\n scnr.peek();\r\n return fn(true, CHAR_SP, detectModulo);\r\n }\r\n else if (ch === CHAR_LF) {\r\n scnr.peek();\r\n return fn(true, CHAR_LF, detectModulo);\r\n }\r\n else {\r\n return true;\r\n }\r\n };\r\n const ret = fn();\r\n reset && scnr.resetPeek();\r\n return ret;\r\n }\r\n function takeChar(scnr, fn) {\r\n const ch = scnr.currentChar();\r\n if (ch === EOF) {\r\n return EOF;\r\n }\r\n if (fn(ch)) {\r\n scnr.next();\r\n return ch;\r\n }\r\n return null;\r\n }\r\n function takeIdentifierChar(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 97 && cc <= 122) || // a-z\r\n (cc >= 65 && cc <= 90) || // A-Z\r\n (cc >= 48 && cc <= 57) || // 0-9\r\n cc === 95 || // _\r\n cc === 36 // $\r\n );\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return cc >= 48 && cc <= 57; // 0-9\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function takeHexDigit(scnr) {\r\n const closure = (ch) => {\r\n const cc = ch.charCodeAt(0);\r\n return ((cc >= 48 && cc <= 57) || // 0-9\r\n (cc >= 65 && cc <= 70) || // A-F\r\n (cc >= 97 && cc <= 102)); // a-f\r\n };\r\n return takeChar(scnr, closure);\r\n }\r\n function getDigits(scnr) {\r\n let ch = '';\r\n let num = '';\r\n while ((ch = takeDigit(scnr))) {\r\n num += ch;\r\n }\r\n return num;\r\n }\r\n function readModulo(scnr) {\r\n skipSpaces(scnr);\r\n const ch = scnr.currentChar();\r\n if (ch !== \"%\" /* Modulo */) {\r\n emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);\r\n }\r\n scnr.next();\r\n return \"%\" /* Modulo */;\r\n }\r\n function readText(scnr) {\r\n let buf = '';\r\n while (true) {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"}\" /* BraceRight */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n break;\r\n }\r\n else if (ch === \"%\" /* Modulo */) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else if (ch === CHAR_SP || ch === CHAR_LF) {\r\n if (isTextStart(scnr)) {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n else if (isPluralStart(scnr)) {\r\n break;\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n }\r\n }\r\n return buf;\r\n }\r\n function readNamedIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return name;\r\n }\r\n function readListIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let value = '';\r\n if (scnr.currentChar() === '-') {\r\n scnr.next();\r\n value += `-${getDigits(scnr)}`;\r\n }\r\n else {\r\n value += getDigits(scnr);\r\n }\r\n if (scnr.currentChar() === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n return value;\r\n }\r\n function readLiteral(scnr) {\r\n skipSpaces(scnr);\r\n eat(scnr, `\\'`);\r\n let ch = '';\r\n let literal = '';\r\n const fn = (x) => x !== LITERAL_DELIMITER && x !== CHAR_LF;\r\n while ((ch = takeChar(scnr, fn))) {\r\n if (ch === '\\\\') {\r\n literal += readEscapeSequence(scnr);\r\n }\r\n else {\r\n literal += ch;\r\n }\r\n }\r\n const current = scnr.currentChar();\r\n if (current === CHAR_LF || current === EOF) {\r\n emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);\r\n // TODO: Is it correct really?\r\n if (current === CHAR_LF) {\r\n scnr.next();\r\n eat(scnr, `\\'`);\r\n }\r\n return literal;\r\n }\r\n eat(scnr, `\\'`);\r\n return literal;\r\n }\r\n function readEscapeSequence(scnr) {\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case '\\\\':\r\n case `\\'`:\r\n scnr.next();\r\n return `\\\\${ch}`;\r\n case 'u':\r\n return readUnicodeEscapeSequence(scnr, ch, 4);\r\n case 'U':\r\n return readUnicodeEscapeSequence(scnr, ch, 6);\r\n default:\r\n emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);\r\n return '';\r\n }\r\n }\r\n function readUnicodeEscapeSequence(scnr, unicode, digits) {\r\n eat(scnr, unicode);\r\n let sequence = '';\r\n for (let i = 0; i < digits; i++) {\r\n const ch = takeHexDigit(scnr);\r\n if (!ch) {\r\n emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\\\${unicode}${sequence}${scnr.currentChar()}`);\r\n break;\r\n }\r\n sequence += ch;\r\n }\r\n return `\\\\${unicode}${sequence}`;\r\n }\r\n function readInvalidIdentifier(scnr) {\r\n skipSpaces(scnr);\r\n let ch = '';\r\n let identifiers = '';\r\n const closure = (ch) => ch !== \"{\" /* BraceLeft */ &&\r\n ch !== \"}\" /* BraceRight */ &&\r\n ch !== CHAR_SP &&\r\n ch !== CHAR_LF;\r\n while ((ch = takeChar(scnr, closure))) {\r\n identifiers += ch;\r\n }\r\n return identifiers;\r\n }\r\n function readLinkedModifier(scnr) {\r\n let ch = '';\r\n let name = '';\r\n while ((ch = takeIdentifierChar(scnr))) {\r\n name += ch;\r\n }\r\n return name;\r\n }\r\n function readLinkedRefer(scnr) {\r\n const fn = (detect = false, buf) => {\r\n const ch = scnr.currentChar();\r\n if (ch === \"{\" /* BraceLeft */ ||\r\n ch === \"%\" /* Modulo */ ||\r\n ch === \"@\" /* LinkedAlias */ ||\r\n ch === \"|\" /* Pipe */ ||\r\n !ch) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_SP) {\r\n return buf;\r\n }\r\n else if (ch === CHAR_LF) {\r\n buf += ch;\r\n scnr.next();\r\n return fn(detect, buf);\r\n }\r\n else {\r\n buf += ch;\r\n scnr.next();\r\n return fn(true, buf);\r\n }\r\n };\r\n return fn(false, '');\r\n }\r\n function readPlural(scnr) {\r\n skipSpaces(scnr);\r\n const plural = eat(scnr, \"|\" /* Pipe */);\r\n skipSpaces(scnr);\r\n return plural;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInPlaceholder(scnr, context) {\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n if (context.braceNest >= 1) {\r\n emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 2 /* BraceLeft */, \"{\" /* BraceLeft */);\r\n skipSpaces(scnr);\r\n context.braceNest++;\r\n return token;\r\n case \"}\" /* BraceRight */:\r\n if (context.braceNest > 0 &&\r\n context.currentType === 2 /* BraceLeft */) {\r\n emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);\r\n }\r\n scnr.next();\r\n token = getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n context.braceNest--;\r\n context.braceNest > 0 && skipSpaces(scnr);\r\n if (context.inLinked && context.braceNest === 0) {\r\n context.inLinked = false;\r\n }\r\n return token;\r\n case \"@\" /* LinkedAlias */:\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = readTokenInLinked(scnr, context) || getEndToken(context);\r\n context.braceNest = 0;\r\n return token;\r\n default:\r\n let validNamedIdentifier = true;\r\n let validListIdentifier = true;\r\n let validLiteral = true;\r\n if (isPluralStart(scnr)) {\r\n if (context.braceNest > 0) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n }\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (context.braceNest > 0 &&\r\n (context.currentType === 5 /* Named */ ||\r\n context.currentType === 6 /* List */ ||\r\n context.currentType === 7 /* Literal */)) {\r\n emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);\r\n context.braceNest = 0;\r\n return readToken(scnr, context);\r\n }\r\n if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {\r\n token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validListIdentifier = isListIdentifierStart(scnr, context))) {\r\n token = getToken(context, 6 /* List */, readListIdentifier(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if ((validLiteral = isLiteralStart(scnr, context))) {\r\n token = getToken(context, 7 /* Literal */, readLiteral(scnr));\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {\r\n // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...\r\n token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));\r\n emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);\r\n skipSpaces(scnr);\r\n return token;\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readTokenInLinked(scnr, context) {\r\n const { currentType } = context;\r\n let token = null;\r\n const ch = scnr.currentChar();\r\n if ((currentType === 8 /* LinkedAlias */ ||\r\n currentType === 9 /* LinkedDot */ ||\r\n currentType === 12 /* LinkedModifier */ ||\r\n currentType === 10 /* LinkedDelimiter */) &&\r\n (ch === CHAR_LF || ch === CHAR_SP)) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n switch (ch) {\r\n case \"@\" /* LinkedAlias */:\r\n scnr.next();\r\n token = getToken(context, 8 /* LinkedAlias */, \"@\" /* LinkedAlias */);\r\n context.inLinked = true;\r\n return token;\r\n case \".\" /* LinkedDot */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 9 /* LinkedDot */, \".\" /* LinkedDot */);\r\n case \":\" /* LinkedDelimiter */:\r\n skipSpaces(scnr);\r\n scnr.next();\r\n return getToken(context, 10 /* LinkedDelimiter */, \":\" /* LinkedDelimiter */);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n if (isLinkedDotStart(scnr, context) ||\r\n isLinkedDelimiterStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return readTokenInLinked(scnr, context);\r\n }\r\n if (isLinkedModifierStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));\r\n }\r\n if (isLinkedReferStart(scnr, context)) {\r\n skipSpaces(scnr);\r\n if (ch === \"{\" /* BraceLeft */) {\r\n // scan the placeholder\r\n return readTokenInPlaceholder(scnr, context) || token;\r\n }\r\n else {\r\n return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));\r\n }\r\n }\r\n if (currentType === 8 /* LinkedAlias */) {\r\n emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);\r\n }\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return readToken(scnr, context);\r\n }\r\n }\r\n // TODO: We need refactoring of token parsing ...\r\n function readToken(scnr, context) {\r\n let token = { type: 14 /* EOF */ };\r\n if (context.braceNest > 0) {\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n }\r\n if (context.inLinked) {\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n }\r\n const ch = scnr.currentChar();\r\n switch (ch) {\r\n case \"{\" /* BraceLeft */:\r\n return readTokenInPlaceholder(scnr, context) || getEndToken(context);\r\n case \"}\" /* BraceRight */:\r\n emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);\r\n scnr.next();\r\n return getToken(context, 3 /* BraceRight */, \"}\" /* BraceRight */);\r\n case \"@\" /* LinkedAlias */:\r\n return readTokenInLinked(scnr, context) || getEndToken(context);\r\n default:\r\n if (isPluralStart(scnr)) {\r\n token = getToken(context, 1 /* Pipe */, readPlural(scnr));\r\n // reset\r\n context.braceNest = 0;\r\n context.inLinked = false;\r\n return token;\r\n }\r\n const { isModulo, hasSpace } = detectModuloStart(scnr);\r\n if (isModulo) {\r\n return hasSpace\r\n ? getToken(context, 0 /* Text */, readText(scnr))\r\n : getToken(context, 4 /* Modulo */, readModulo(scnr));\r\n }\r\n if (isTextStart(scnr)) {\r\n return getToken(context, 0 /* Text */, readText(scnr));\r\n }\r\n break;\r\n }\r\n return token;\r\n }\r\n function nextToken() {\r\n const { currentType, offset, startLoc, endLoc } = _context;\r\n _context.lastType = currentType;\r\n _context.lastOffset = offset;\r\n _context.lastStartLoc = startLoc;\r\n _context.lastEndLoc = endLoc;\r\n _context.offset = currentOffset();\r\n _context.startLoc = currentPosition();\r\n if (_scnr.currentChar() === EOF) {\r\n return getToken(_context, 14 /* EOF */);\r\n }\r\n return readToken(_scnr, _context);\r\n }\r\n return {\r\n nextToken,\r\n currentOffset,\r\n currentPosition,\r\n context\r\n };\r\n}\n\nconst ERROR_DOMAIN = 'parser';\r\n// Backslash backslash, backslash quote, uHHHH, UHHHHHH.\r\nconst KNOWN_ESCAPES = /(?:\\\\\\\\|\\\\'|\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{6}))/g;\r\nfunction fromEscapeSequence(match, codePoint4, codePoint6) {\r\n switch (match) {\r\n case `\\\\\\\\`:\r\n return `\\\\`;\r\n case `\\\\\\'`:\r\n return `\\'`;\r\n default: {\r\n const codePoint = parseInt(codePoint4 || codePoint6, 16);\r\n if (codePoint <= 0xd7ff || codePoint >= 0xe000) {\r\n return String.fromCodePoint(codePoint);\r\n }\r\n // invalid ...\r\n // Replace them with U+FFFD REPLACEMENT CHARACTER.\r\n return '�';\r\n }\r\n }\r\n}\r\nfunction createParser(options = {}) {\r\n const location = options.location !== false;\r\n const { onError } = options;\r\n function emitError(tokenzer, code, start, offset, ...args) {\r\n const end = tokenzer.currentPosition();\r\n end.offset += offset;\r\n end.column += offset;\r\n if (onError) {\r\n const loc = createLocation(start, end);\r\n const err = createCompileError(code, loc, {\r\n domain: ERROR_DOMAIN,\r\n args\r\n });\r\n onError(err);\r\n }\r\n }\r\n function startNode(type, offset, loc) {\r\n const node = {\r\n type,\r\n start: offset,\r\n end: offset\r\n };\r\n if (location) {\r\n node.loc = { start: loc, end: loc };\r\n }\r\n return node;\r\n }\r\n function endNode(node, offset, pos, type) {\r\n node.end = offset;\r\n if (type) {\r\n node.type = type;\r\n }\r\n if (location && node.loc) {\r\n node.loc.end = pos;\r\n }\r\n }\r\n function parseText(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(3 /* Text */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseList(tokenizer, index) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(5 /* List */, offset, loc);\r\n node.index = parseInt(index, 10);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseNamed(tokenizer, key) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(4 /* Named */, offset, loc);\r\n node.key = key;\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLiteral(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc\r\n const node = startNode(9 /* Literal */, offset, loc);\r\n node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);\r\n tokenizer.nextToken(); // skip brach right\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinkedModifier(tokenizer) {\r\n const token = tokenizer.nextToken();\r\n const context = tokenizer.context();\r\n const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc\r\n const node = startNode(8 /* LinkedModifier */, offset, loc);\r\n if (token.type !== 12 /* LinkedModifier */) {\r\n // empty modifier\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);\r\n node.value = '';\r\n endNode(node, offset, loc);\r\n return {\r\n nextConsumeToken: token,\r\n node\r\n };\r\n }\r\n // check token\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.value = token.value || '';\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node\r\n };\r\n }\r\n function parseLinkedKey(tokenizer, value) {\r\n const context = tokenizer.context();\r\n const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);\r\n node.value = value;\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseLinked(tokenizer) {\r\n const context = tokenizer.context();\r\n const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);\r\n let token = tokenizer.nextToken();\r\n if (token.type === 9 /* LinkedDot */) {\r\n const parsed = parseLinkedModifier(tokenizer);\r\n linkedNode.modifier = parsed.node;\r\n token = parsed.nextConsumeToken || tokenizer.nextToken();\r\n }\r\n // asset check token\r\n if (token.type !== 10 /* LinkedDelimiter */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n token = tokenizer.nextToken();\r\n // skip brace left\r\n if (token.type === 2 /* BraceLeft */) {\r\n token = tokenizer.nextToken();\r\n }\r\n switch (token.type) {\r\n case 11 /* LinkedKey */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLinkedKey(tokenizer, token.value || '');\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseNamed(tokenizer, token.value || '');\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseList(tokenizer, token.value || '');\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n linkedNode.key = parseLiteral(tokenizer, token.value || '');\r\n break;\r\n default:\r\n // empty key\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);\r\n const nextContext = tokenizer.context();\r\n const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);\r\n emptyLinkedKeyNode.value = '';\r\n endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);\r\n linkedNode.key = emptyLinkedKeyNode;\r\n endNode(linkedNode, nextContext.offset, nextContext.startLoc);\r\n return {\r\n nextConsumeToken: token,\r\n node: linkedNode\r\n };\r\n }\r\n endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return {\r\n node: linkedNode\r\n };\r\n }\r\n function parseMessage(tokenizer) {\r\n const context = tokenizer.context();\r\n const startOffset = context.currentType === 1 /* Pipe */\r\n ? tokenizer.currentOffset()\r\n : context.offset;\r\n const startLoc = context.currentType === 1 /* Pipe */\r\n ? context.endLoc\r\n : context.startLoc;\r\n const node = startNode(2 /* Message */, startOffset, startLoc);\r\n node.items = [];\r\n let nextToken = null;\r\n do {\r\n const token = nextToken || tokenizer.nextToken();\r\n nextToken = null;\r\n switch (token.type) {\r\n case 0 /* Text */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseText(tokenizer, token.value || ''));\r\n break;\r\n case 6 /* List */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseList(tokenizer, token.value || ''));\r\n break;\r\n case 5 /* Named */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseNamed(tokenizer, token.value || ''));\r\n break;\r\n case 7 /* Literal */:\r\n if (token.value == null) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));\r\n }\r\n node.items.push(parseLiteral(tokenizer, token.value || ''));\r\n break;\r\n case 8 /* LinkedAlias */:\r\n const parsed = parseLinked(tokenizer);\r\n node.items.push(parsed.node);\r\n nextToken = parsed.nextConsumeToken || null;\r\n break;\r\n }\r\n } while (context.currentType !== 14 /* EOF */ &&\r\n context.currentType !== 1 /* Pipe */);\r\n // adjust message node loc\r\n const endOffset = context.currentType === 1 /* Pipe */\r\n ? context.lastOffset\r\n : tokenizer.currentOffset();\r\n const endLoc = context.currentType === 1 /* Pipe */\r\n ? context.lastEndLoc\r\n : tokenizer.currentPosition();\r\n endNode(node, endOffset, endLoc);\r\n return node;\r\n }\r\n function parsePlural(tokenizer, offset, loc, msgNode) {\r\n const context = tokenizer.context();\r\n let hasEmptyMessage = msgNode.items.length === 0;\r\n const node = startNode(1 /* Plural */, offset, loc);\r\n node.cases = [];\r\n node.cases.push(msgNode);\r\n do {\r\n const msg = parseMessage(tokenizer);\r\n if (!hasEmptyMessage) {\r\n hasEmptyMessage = msg.items.length === 0;\r\n }\r\n node.cases.push(msg);\r\n } while (context.currentType !== 14 /* EOF */);\r\n if (hasEmptyMessage) {\r\n emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n function parseResource(tokenizer) {\r\n const context = tokenizer.context();\r\n const { offset, startLoc } = context;\r\n const msgNode = parseMessage(tokenizer);\r\n if (context.currentType === 14 /* EOF */) {\r\n return msgNode;\r\n }\r\n else {\r\n return parsePlural(tokenizer, offset, startLoc, msgNode);\r\n }\r\n }\r\n function parse(source) {\r\n const tokenizer = createTokenizer(source, assign({}, options));\r\n const context = tokenizer.context();\r\n const node = startNode(0 /* Resource */, context.offset, context.startLoc);\r\n if (location && node.loc) {\r\n node.loc.source = source;\r\n }\r\n node.body = parseResource(tokenizer);\r\n // assert whether achieved to EOF\r\n if (context.currentType !== 14 /* EOF */) {\r\n emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');\r\n }\r\n endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());\r\n return node;\r\n }\r\n return { parse };\r\n}\r\nfunction getTokenCaption(token) {\r\n if (token.type === 14 /* EOF */) {\r\n return 'EOF';\r\n }\r\n const name = (token.value || '').replace(/\\r?\\n/gu, '\\\\n');\r\n return name.length > 10 ? name.slice(0, 9) + '…' : name;\r\n}\n\nfunction createTransformer(ast, options = {} // eslint-disable-line\r\n) {\r\n const _context = {\r\n ast,\r\n helpers: new Set()\r\n };\r\n const context = () => _context;\r\n const helper = (name) => {\r\n _context.helpers.add(name);\r\n return name;\r\n };\r\n return { context, helper };\r\n}\r\nfunction traverseNodes(nodes, transformer) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n traverseNode(nodes[i], transformer);\r\n }\r\n}\r\nfunction traverseNode(node, transformer) {\r\n // TODO: if we need pre-hook of transform, should be implemented to here\r\n switch (node.type) {\r\n case 1 /* Plural */:\r\n traverseNodes(node.cases, transformer);\r\n transformer.helper(\"plural\" /* PLURAL */);\r\n break;\r\n case 2 /* Message */:\r\n traverseNodes(node.items, transformer);\r\n break;\r\n case 6 /* Linked */:\r\n const linked = node;\r\n traverseNode(linked.key, transformer);\r\n transformer.helper(\"linked\" /* LINKED */);\r\n transformer.helper(\"type\" /* TYPE */);\r\n break;\r\n case 5 /* List */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"list\" /* LIST */);\r\n break;\r\n case 4 /* Named */:\r\n transformer.helper(\"interpolate\" /* INTERPOLATE */);\r\n transformer.helper(\"named\" /* NAMED */);\r\n break;\r\n }\r\n // TODO: if we need post-hook of transform, should be implemented to here\r\n}\r\n// transform AST\r\nfunction transform(ast, options = {} // eslint-disable-line\r\n) {\r\n const transformer = createTransformer(ast);\r\n transformer.helper(\"normalize\" /* NORMALIZE */);\r\n // traverse\r\n ast.body && traverseNode(ast.body, transformer);\r\n // set meta information\r\n const context = transformer.context();\r\n ast.helpers = Array.from(context.helpers);\r\n}\n\nfunction createCodeGenerator(ast, options) {\r\n const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;\r\n const _context = {\r\n source: ast.loc.source,\r\n filename,\r\n code: '',\r\n column: 1,\r\n line: 1,\r\n offset: 0,\r\n map: undefined,\r\n breakLineCode,\r\n needIndent: _needIndent,\r\n indentLevel: 0\r\n };\r\n const context = () => _context;\r\n function push(code, node) {\r\n _context.code += code;\r\n }\r\n function _newline(n, withBreakLine = true) {\r\n const _breakLineCode = withBreakLine ? breakLineCode : '';\r\n push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);\r\n }\r\n function indent(withNewLine = true) {\r\n const level = ++_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function deindent(withNewLine = true) {\r\n const level = --_context.indentLevel;\r\n withNewLine && _newline(level);\r\n }\r\n function newline() {\r\n _newline(_context.indentLevel);\r\n }\r\n const helper = (key) => `_${key}`;\r\n const needIndent = () => _context.needIndent;\r\n return {\r\n context,\r\n push,\r\n indent,\r\n deindent,\r\n newline,\r\n helper,\r\n needIndent\r\n };\r\n}\r\nfunction generateLinkedNode(generator, node) {\r\n const { helper } = generator;\r\n generator.push(`${helper(\"linked\" /* LINKED */)}(`);\r\n generateNode(generator, node.key);\r\n if (node.modifier) {\r\n generator.push(`, `);\r\n generateNode(generator, node.modifier);\r\n generator.push(`, _type`);\r\n }\r\n else {\r\n generator.push(`, undefined, _type`);\r\n }\r\n generator.push(`)`);\r\n}\r\nfunction generateMessageNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n generator.push(`${helper(\"normalize\" /* NORMALIZE */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.items.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.items[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push('])');\r\n}\r\nfunction generatePluralNode(generator, node) {\r\n const { helper, needIndent } = generator;\r\n if (node.cases.length > 1) {\r\n generator.push(`${helper(\"plural\" /* PLURAL */)}([`);\r\n generator.indent(needIndent());\r\n const length = node.cases.length;\r\n for (let i = 0; i < length; i++) {\r\n generateNode(generator, node.cases[i]);\r\n if (i === length - 1) {\r\n break;\r\n }\r\n generator.push(', ');\r\n }\r\n generator.deindent(needIndent());\r\n generator.push(`])`);\r\n }\r\n}\r\nfunction generateResource(generator, node) {\r\n if (node.body) {\r\n generateNode(generator, node.body);\r\n }\r\n else {\r\n generator.push('null');\r\n }\r\n}\r\nfunction generateNode(generator, node) {\r\n const { helper } = generator;\r\n switch (node.type) {\r\n case 0 /* Resource */:\r\n generateResource(generator, node);\r\n break;\r\n case 1 /* Plural */:\r\n generatePluralNode(generator, node);\r\n break;\r\n case 2 /* Message */:\r\n generateMessageNode(generator, node);\r\n break;\r\n case 6 /* Linked */:\r\n generateLinkedNode(generator, node);\r\n break;\r\n case 8 /* LinkedModifier */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 7 /* LinkedKey */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 5 /* List */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"list\" /* LIST */)}(${node.index}))`, node);\r\n break;\r\n case 4 /* Named */:\r\n generator.push(`${helper(\"interpolate\" /* INTERPOLATE */)}(${helper(\"named\" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);\r\n break;\r\n case 9 /* Literal */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n case 3 /* Text */:\r\n generator.push(JSON.stringify(node.value), node);\r\n break;\r\n default:\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n throw new Error(`unhandled codegen node type: ${node.type}`);\r\n }\r\n }\r\n}\r\n// generate code from AST\r\nconst generate = (ast, options = {} // eslint-disable-line\r\n) => {\r\n const mode = isString(options.mode) ? options.mode : 'normal';\r\n const filename = isString(options.filename)\r\n ? options.filename\r\n : 'message.intl';\r\n const sourceMap = !!options.sourceMap;\r\n // prettier-ignore\r\n const breakLineCode = options.breakLineCode != null\r\n ? options.breakLineCode\r\n : mode === 'arrow'\r\n ? ';'\r\n : '\\n';\r\n const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';\r\n const helpers = ast.helpers || [];\r\n const generator = createCodeGenerator(ast, {\r\n mode,\r\n filename,\r\n sourceMap,\r\n breakLineCode,\r\n needIndent\r\n });\r\n generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);\r\n generator.indent(needIndent);\r\n if (helpers.length > 0) {\r\n generator.push(`const { ${helpers.map(s => `${s}: _${s}`).join(', ')} } = ctx`);\r\n generator.newline();\r\n }\r\n generator.push(`return `);\r\n generateNode(generator, ast);\r\n generator.deindent(needIndent);\r\n generator.push(`}`);\r\n const { code, map } = generator.context();\r\n return {\r\n ast,\r\n code,\r\n map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any\r\n };\r\n};\n\nfunction baseCompile(source, options = {}) {\r\n const assignedOptions = assign({}, options);\r\n // parse source codes\r\n const parser = createParser(assignedOptions);\r\n const ast = parser.parse(source);\r\n // transform ASTs\r\n transform(ast, assignedOptions);\r\n // generate javascript codes\r\n return generate(ast, assignedOptions);\r\n}\n\nexport { CompileErrorCodes, ERROR_DOMAIN, LocationStub, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, errorMessages };\n","/*!\n * devtools-if v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nconst IntlifyDevToolsHooks = {\r\n I18nInit: 'i18n:init',\r\n FunctionTranslate: 'function:translate'\r\n};\n\nexport { IntlifyDevToolsHooks };\n","/*!\n * core-base v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { isObject, isString, isFunction, isNumber, isPlainObject, toDisplayString, isArray, format, isBoolean, assign, isRegExp, warn, escapeHtml, inBrowser, mark, measure, isEmptyObject, generateCodeFrame, generateFormatCacheKey, isDate, getGlobalThis } from '@intlify/shared';\nimport { defaultOnError, baseCompile, CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nexport { CompileErrorCodes, createCompileError } from '@intlify/message-compiler';\nimport { IntlifyDevToolsHooks } from '@intlify/devtools-if';\n\nconst pathStateMachine = [];\r\npathStateMachine[0 /* BEFORE_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [0 /* BEFORE_PATH */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[1 /* IN_PATH */] = {\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */]\r\n};\r\npathStateMachine[2 /* BEFORE_IDENT */] = {\r\n [\"w\" /* WORKSPACE */]: [2 /* BEFORE_IDENT */],\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */]\r\n};\r\npathStateMachine[3 /* IN_IDENT */] = {\r\n [\"i\" /* IDENT */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"0\" /* ZERO */]: [3 /* IN_IDENT */, 0 /* APPEND */],\r\n [\"w\" /* WORKSPACE */]: [1 /* IN_PATH */, 1 /* PUSH */],\r\n [\".\" /* DOT */]: [2 /* BEFORE_IDENT */, 1 /* PUSH */],\r\n [\"[\" /* LEFT_BRACKET */]: [4 /* IN_SUB_PATH */, 1 /* PUSH */],\r\n [\"o\" /* END_OF_FAIL */]: [7 /* AFTER_PATH */, 1 /* PUSH */]\r\n};\r\npathStateMachine[4 /* IN_SUB_PATH */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */],\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */],\r\n [\"[\" /* LEFT_BRACKET */]: [\r\n 4 /* IN_SUB_PATH */,\r\n 2 /* INC_SUB_PATH_DEPTH */\r\n ],\r\n [\"]\" /* RIGHT_BRACKET */]: [1 /* IN_PATH */, 3 /* PUSH_SUB_PATH */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */]\r\n};\r\npathStateMachine[5 /* IN_SINGLE_QUOTE */] = {\r\n [\"'\" /* SINGLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [5 /* IN_SINGLE_QUOTE */, 0 /* APPEND */]\r\n};\r\npathStateMachine[6 /* IN_DOUBLE_QUOTE */] = {\r\n [\"\\\"\" /* DOUBLE_QUOTE */]: [4 /* IN_SUB_PATH */, 0 /* APPEND */],\r\n [\"o\" /* END_OF_FAIL */]: 8 /* ERROR */,\r\n [\"l\" /* ELSE */]: [6 /* IN_DOUBLE_QUOTE */, 0 /* APPEND */]\r\n};\r\n/**\r\n * Check if an expression is a literal value.\r\n */\r\nconst literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\r\nfunction isLiteral(exp) {\r\n return literalValueRE.test(exp);\r\n}\r\n/**\r\n * Strip quotes from a string\r\n */\r\nfunction stripQuotes(str) {\r\n const a = str.charCodeAt(0);\r\n const b = str.charCodeAt(str.length - 1);\r\n return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str;\r\n}\r\n/**\r\n * Determine the type of a character in a keypath.\r\n */\r\nfunction getPathCharType(ch) {\r\n if (ch === undefined || ch === null) {\r\n return \"o\" /* END_OF_FAIL */;\r\n }\r\n const code = ch.charCodeAt(0);\r\n switch (code) {\r\n case 0x5b: // [\r\n case 0x5d: // ]\r\n case 0x2e: // .\r\n case 0x22: // \"\r\n case 0x27: // '\r\n return ch;\r\n case 0x5f: // _\r\n case 0x24: // $\r\n case 0x2d: // -\r\n return \"i\" /* IDENT */;\r\n case 0x09: // Tab (HT)\r\n case 0x0a: // Newline (LF)\r\n case 0x0d: // Return (CR)\r\n case 0xa0: // No-break space (NBSP)\r\n case 0xfeff: // Byte Order Mark (BOM)\r\n case 0x2028: // Line Separator (LS)\r\n case 0x2029: // Paragraph Separator (PS)\r\n return \"w\" /* WORKSPACE */;\r\n }\r\n return \"i\" /* IDENT */;\r\n}\r\n/**\r\n * Format a subPath, return its plain form if it is\r\n * a literal string or number. Otherwise prepend the\r\n * dynamic indicator (*).\r\n */\r\nfunction formatSubPath(path) {\r\n const trimmed = path.trim();\r\n // invalid leading 0\r\n if (path.charAt(0) === '0' && isNaN(parseInt(path))) {\r\n return false;\r\n }\r\n return isLiteral(trimmed)\r\n ? stripQuotes(trimmed)\r\n : \"*\" /* ASTARISK */ + trimmed;\r\n}\r\n/**\r\n * Parse a string path into an array of segments\r\n */\r\nfunction parse(path) {\r\n const keys = [];\r\n let index = -1;\r\n let mode = 0 /* BEFORE_PATH */;\r\n let subPathDepth = 0;\r\n let c;\r\n let key; // eslint-disable-line\r\n let newChar;\r\n let type;\r\n let transition;\r\n let action;\r\n let typeMap;\r\n const actions = [];\r\n actions[0 /* APPEND */] = () => {\r\n if (key === undefined) {\r\n key = newChar;\r\n }\r\n else {\r\n key += newChar;\r\n }\r\n };\r\n actions[1 /* PUSH */] = () => {\r\n if (key !== undefined) {\r\n keys.push(key);\r\n key = undefined;\r\n }\r\n };\r\n actions[2 /* INC_SUB_PATH_DEPTH */] = () => {\r\n actions[0 /* APPEND */]();\r\n subPathDepth++;\r\n };\r\n actions[3 /* PUSH_SUB_PATH */] = () => {\r\n if (subPathDepth > 0) {\r\n subPathDepth--;\r\n mode = 4 /* IN_SUB_PATH */;\r\n actions[0 /* APPEND */]();\r\n }\r\n else {\r\n subPathDepth = 0;\r\n if (key === undefined) {\r\n return false;\r\n }\r\n key = formatSubPath(key);\r\n if (key === false) {\r\n return false;\r\n }\r\n else {\r\n actions[1 /* PUSH */]();\r\n }\r\n }\r\n };\r\n function maybeUnescapeQuote() {\r\n const nextChar = path[index + 1];\r\n if ((mode === 5 /* IN_SINGLE_QUOTE */ &&\r\n nextChar === \"'\" /* SINGLE_QUOTE */) ||\r\n (mode === 6 /* IN_DOUBLE_QUOTE */ &&\r\n nextChar === \"\\\"\" /* DOUBLE_QUOTE */)) {\r\n index++;\r\n newChar = '\\\\' + nextChar;\r\n actions[0 /* APPEND */]();\r\n return true;\r\n }\r\n }\r\n while (mode !== null) {\r\n index++;\r\n c = path[index];\r\n if (c === '\\\\' && maybeUnescapeQuote()) {\r\n continue;\r\n }\r\n type = getPathCharType(c);\r\n typeMap = pathStateMachine[mode];\r\n transition = typeMap[type] || typeMap[\"l\" /* ELSE */] || 8 /* ERROR */;\r\n // check parse error\r\n if (transition === 8 /* ERROR */) {\r\n return;\r\n }\r\n mode = transition[0];\r\n if (transition[1] !== undefined) {\r\n action = actions[transition[1]];\r\n if (action) {\r\n newChar = c;\r\n if (action() === false) {\r\n return;\r\n }\r\n }\r\n }\r\n // check parse finish\r\n if (mode === 7 /* AFTER_PATH */) {\r\n return keys;\r\n }\r\n }\r\n}\r\n// path token cache\r\nconst cache = new Map();\r\n/**\r\n * key-value message resolver\r\n *\r\n * @remarks\r\n * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveWithKeyValue(obj, path) {\r\n return isObject(obj) ? obj[path] : null;\r\n}\r\n/**\r\n * message resolver\r\n *\r\n * @remarks\r\n * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default.\r\n *\r\n * @param obj - A target object to be resolved with path\r\n * @param path - A {@link Path | path} to resolve the value of message\r\n *\r\n * @returns A resolved {@link PathValue | path value}\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction resolveValue(obj, path) {\r\n // check object\r\n if (!isObject(obj)) {\r\n return null;\r\n }\r\n // parse path\r\n let hit = cache.get(path);\r\n if (!hit) {\r\n hit = parse(path);\r\n if (hit) {\r\n cache.set(path, hit);\r\n }\r\n }\r\n // check hit\r\n if (!hit) {\r\n return null;\r\n }\r\n // resolve path value\r\n const len = hit.length;\r\n let last = obj;\r\n let i = 0;\r\n while (i < len) {\r\n const val = last[hit[i]];\r\n if (val === undefined) {\r\n return null;\r\n }\r\n last = val;\r\n i++;\r\n }\r\n return last;\r\n}\n\nconst DEFAULT_MODIFIER = (str) => str;\r\nconst DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line\r\nconst DEFAULT_MESSAGE_DATA_TYPE = 'text';\r\nconst DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : values.join('');\r\nconst DEFAULT_INTERPOLATE = toDisplayString;\r\nfunction pluralDefault(choice, choicesLength) {\r\n choice = Math.abs(choice);\r\n if (choicesLength === 2) {\r\n // prettier-ignore\r\n return choice\r\n ? choice > 1\r\n ? 1\r\n : 0\r\n : 1;\r\n }\r\n return choice ? Math.min(choice, 2) : 0;\r\n}\r\nfunction getPluralIndex(options) {\r\n // prettier-ignore\r\n const index = isNumber(options.pluralIndex)\r\n ? options.pluralIndex\r\n : -1;\r\n // prettier-ignore\r\n return options.named && (isNumber(options.named.count) || isNumber(options.named.n))\r\n ? isNumber(options.named.count)\r\n ? options.named.count\r\n : isNumber(options.named.n)\r\n ? options.named.n\r\n : index\r\n : index;\r\n}\r\nfunction normalizeNamed(pluralIndex, props) {\r\n if (!props.count) {\r\n props.count = pluralIndex;\r\n }\r\n if (!props.n) {\r\n props.n = pluralIndex;\r\n }\r\n}\r\nfunction createMessageContext(options = {}) {\r\n const locale = options.locale;\r\n const pluralIndex = getPluralIndex(options);\r\n const pluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? options.pluralRules[locale]\r\n : pluralDefault;\r\n const orgPluralRule = isObject(options.pluralRules) &&\r\n isString(locale) &&\r\n isFunction(options.pluralRules[locale])\r\n ? pluralDefault\r\n : undefined;\r\n const plural = (messages) => {\r\n return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];\r\n };\r\n const _list = options.list || [];\r\n const list = (index) => _list[index];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _named = options.named || {};\r\n isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named);\r\n const named = (key) => _named[key];\r\n function message(key) {\r\n // prettier-ignore\r\n const msg = isFunction(options.messages)\r\n ? options.messages(key)\r\n : isObject(options.messages)\r\n ? options.messages[key]\r\n : false;\r\n return !msg\r\n ? options.parent\r\n ? options.parent.message(key) // resolve from parent messages\r\n : DEFAULT_MESSAGE\r\n : msg;\r\n }\r\n const _modifier = (name) => options.modifiers\r\n ? options.modifiers[name]\r\n : DEFAULT_MODIFIER;\r\n const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize)\r\n ? options.processor.normalize\r\n : DEFAULT_NORMALIZE;\r\n const interpolate = isPlainObject(options.processor) &&\r\n isFunction(options.processor.interpolate)\r\n ? options.processor.interpolate\r\n : DEFAULT_INTERPOLATE;\r\n const type = isPlainObject(options.processor) && isString(options.processor.type)\r\n ? options.processor.type\r\n : DEFAULT_MESSAGE_DATA_TYPE;\r\n const linked = (key, ...args) => {\r\n const [arg1, arg2] = args;\r\n let type = 'text';\r\n let modifier = '';\r\n if (args.length === 1) {\r\n if (isObject(arg1)) {\r\n modifier = arg1.modifier || modifier;\r\n type = arg1.type || type;\r\n }\r\n else if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n }\r\n else if (args.length === 2) {\r\n if (isString(arg1)) {\r\n modifier = arg1 || modifier;\r\n }\r\n if (isString(arg2)) {\r\n type = arg2 || type;\r\n }\r\n }\r\n let msg = message(key)(ctx);\r\n // The message in vnode resolved with linked are returned as an array by processor.nomalize\r\n if (type === 'vnode' && isArray(msg) && modifier) {\r\n msg = msg[0];\r\n }\r\n return modifier ? _modifier(modifier)(msg, type) : msg;\r\n };\r\n const ctx = {\r\n [\"list\" /* LIST */]: list,\r\n [\"named\" /* NAMED */]: named,\r\n [\"plural\" /* PLURAL */]: plural,\r\n [\"linked\" /* LINKED */]: linked,\r\n [\"message\" /* MESSAGE */]: message,\r\n [\"type\" /* TYPE */]: type,\r\n [\"interpolate\" /* INTERPOLATE */]: interpolate,\r\n [\"normalize\" /* NORMALIZE */]: normalize\r\n };\r\n return ctx;\r\n}\n\nlet devtools = null;\r\nfunction setDevToolsHook(hook) {\r\n devtools = hook;\r\n}\r\nfunction getDevToolsHook() {\r\n return devtools;\r\n}\r\nfunction initI18nDevTools(i18n, version, meta) {\r\n // TODO: queue if devtools is undefined\r\n devtools &&\r\n devtools.emit(IntlifyDevToolsHooks.I18nInit, {\r\n timestamp: Date.now(),\r\n i18n,\r\n version,\r\n meta\r\n });\r\n}\r\nconst translateDevTools = /* #__PURE__*/ createDevToolsHook(IntlifyDevToolsHooks.FunctionTranslate);\r\nfunction createDevToolsHook(hook) {\r\n return (payloads) => devtools && devtools.emit(hook, payloads);\r\n}\n\nconst CoreWarnCodes = {\r\n NOT_FOUND_KEY: 1,\r\n FALLBACK_TO_TRANSLATE: 2,\r\n CANNOT_FORMAT_NUMBER: 3,\r\n FALLBACK_TO_NUMBER_FORMAT: 4,\r\n CANNOT_FORMAT_DATE: 5,\r\n FALLBACK_TO_DATE_FORMAT: 6,\r\n __EXTEND_POINT__: 7\r\n};\r\n/** @internal */\r\nconst warnMessages = {\r\n [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`,\r\n [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`,\r\n [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`,\r\n [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\n/**\r\n * Fallback with simple implemenation\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a simple fallback algorithm.\r\n *\r\n * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars\r\n) {\r\n // prettier-ignore\r\n return [...new Set([\r\n start,\r\n ...(isArray(fallback)\r\n ? fallback\r\n : isObject(fallback)\r\n ? Object.keys(fallback)\r\n : isString(fallback)\r\n ? [fallback]\r\n : [start])\r\n ])];\r\n}\r\n/**\r\n * Fallback with locale chain\r\n *\r\n * @remarks\r\n * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default.\r\n *\r\n * @param ctx - A {@link CoreContext | context}\r\n * @param fallback - A {@link FallbackLocale | fallback locale}\r\n * @param start - A starting {@link Locale | locale}\r\n *\r\n * @returns Fallback locales\r\n *\r\n * @VueI18nSee [Fallbacking](../guide/essentials/fallback)\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction fallbackWithLocaleChain(ctx, fallback, start) {\r\n const startLocale = isString(start) ? start : DEFAULT_LOCALE;\r\n const context = ctx;\r\n if (!context.__localeChainCache) {\r\n context.__localeChainCache = new Map();\r\n }\r\n let chain = context.__localeChainCache.get(startLocale);\r\n if (!chain) {\r\n chain = [];\r\n // first block defined by start\r\n let block = [start];\r\n // while any intervening block found\r\n while (isArray(block)) {\r\n block = appendBlockToChain(chain, block, fallback);\r\n }\r\n // prettier-ignore\r\n // last block defined by default\r\n const defaults = isArray(fallback) || !isPlainObject(fallback)\r\n ? fallback\r\n : fallback['default']\r\n ? fallback['default']\r\n : null;\r\n // convert defaults to array\r\n block = isString(defaults) ? [defaults] : defaults;\r\n if (isArray(block)) {\r\n appendBlockToChain(chain, block, false);\r\n }\r\n context.__localeChainCache.set(startLocale, chain);\r\n }\r\n return chain;\r\n}\r\nfunction appendBlockToChain(chain, block, blocks) {\r\n let follow = true;\r\n for (let i = 0; i < block.length && isBoolean(follow); i++) {\r\n const locale = block[i];\r\n if (isString(locale)) {\r\n follow = appendLocaleToChain(chain, block[i], blocks);\r\n }\r\n }\r\n return follow;\r\n}\r\nfunction appendLocaleToChain(chain, locale, blocks) {\r\n let follow;\r\n const tokens = locale.split('-');\r\n do {\r\n const target = tokens.join('-');\r\n follow = appendItemToChain(chain, target, blocks);\r\n tokens.splice(-1, 1);\r\n } while (tokens.length && follow === true);\r\n return follow;\r\n}\r\nfunction appendItemToChain(chain, target, blocks) {\r\n let follow = false;\r\n if (!chain.includes(target)) {\r\n follow = true;\r\n if (target) {\r\n follow = target[target.length - 1] !== '!';\r\n const locale = target.replace(/!/g, '');\r\n chain.push(locale);\r\n if ((isArray(blocks) || isPlainObject(blocks)) &&\r\n blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n follow = blocks[locale];\r\n }\r\n }\r\n }\r\n return follow;\r\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Intlify core-base version\r\n * @internal\r\n */\r\nconst VERSION = '9.2.2';\r\nconst NOT_REOSLVED = -1;\r\nconst DEFAULT_LOCALE = 'en-US';\r\nconst MISSING_RESOLVE_VALUE = '';\r\nconst capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;\r\nfunction getDefaultLinkedModifiers() {\r\n return {\r\n upper: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toUpperCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toUpperCase()\r\n : val;\r\n },\r\n lower: (val, type) => {\r\n // prettier-ignore\r\n return type === 'text' && isString(val)\r\n ? val.toLowerCase()\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? val.children.toLowerCase()\r\n : val;\r\n },\r\n capitalize: (val, type) => {\r\n // prettier-ignore\r\n return (type === 'text' && isString(val)\r\n ? capitalize(val)\r\n : type === 'vnode' && isObject(val) && '__v_isVNode' in val\r\n ? capitalize(val.children)\r\n : val);\r\n }\r\n };\r\n}\r\nlet _compiler;\r\nfunction registerMessageCompiler(compiler) {\r\n _compiler = compiler;\r\n}\r\nlet _resolver;\r\n/**\r\n * Register the message resolver\r\n *\r\n * @param resolver - A {@link MessageResolver} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerMessageResolver(resolver) {\r\n _resolver = resolver;\r\n}\r\nlet _fallbacker;\r\n/**\r\n * Register the locale fallbacker\r\n *\r\n * @param fallbacker - A {@link LocaleFallbacker} function\r\n *\r\n * @VueI18nGeneral\r\n */\r\nfunction registerLocaleFallbacker(fallbacker) {\r\n _fallbacker = fallbacker;\r\n}\r\n// Additional Meta for Intlify DevTools\r\nlet _additionalMeta = null;\r\nconst setAdditionalMeta = (meta) => {\r\n _additionalMeta = meta;\r\n};\r\nconst getAdditionalMeta = () => _additionalMeta;\r\nlet _fallbackContext = null;\r\nconst setFallbackContext = (context) => {\r\n _fallbackContext = context;\r\n};\r\nconst getFallbackContext = () => _fallbackContext;\r\n// ID for CoreContext\r\nlet _cid = 0;\r\nfunction createCoreContext(options = {}) {\r\n // setup options\r\n const version = isString(options.version) ? options.version : VERSION;\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n isString(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const messages = isPlainObject(options.messages)\r\n ? options.messages\r\n : { [locale]: {} };\r\n const datetimeFormats = isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [locale]: {} }\r\n ;\r\n const numberFormats = isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [locale]: {} }\r\n ;\r\n const modifiers = assign({}, options.modifiers || {}, getDefaultLinkedModifiers());\r\n const pluralRules = options.pluralRules || {};\r\n const missing = isFunction(options.missing) ? options.missing : null;\r\n const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n const fallbackFormat = !!options.fallbackFormat;\r\n const unresolving = !!options.unresolving;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n const processor = isPlainObject(options.processor) ? options.processor : null;\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const escapeParameter = !!options.escapeParameter;\r\n const messageCompiler = isFunction(options.messageCompiler)\r\n ? options.messageCompiler\r\n : _compiler;\r\n const messageResolver = isFunction(options.messageResolver)\r\n ? options.messageResolver\r\n : _resolver || resolveWithKeyValue;\r\n const localeFallbacker = isFunction(options.localeFallbacker)\r\n ? options.localeFallbacker\r\n : _fallbacker || fallbackWithSimple;\r\n const fallbackContext = isObject(options.fallbackContext)\r\n ? options.fallbackContext\r\n : undefined;\r\n const onWarn = isFunction(options.onWarn) ? options.onWarn : warn;\r\n // setup internal options\r\n const internalOptions = options;\r\n const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters)\r\n ? internalOptions.__datetimeFormatters\r\n : new Map()\r\n ;\r\n const __numberFormatters = isObject(internalOptions.__numberFormatters)\r\n ? internalOptions.__numberFormatters\r\n : new Map()\r\n ;\r\n const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {};\r\n _cid++;\r\n const context = {\r\n version,\r\n cid: _cid,\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n modifiers,\r\n pluralRules,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackFormat,\r\n unresolving,\r\n postTranslation,\r\n processor,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageCompiler,\r\n messageResolver,\r\n localeFallbacker,\r\n fallbackContext,\r\n onWarn,\r\n __meta\r\n };\r\n {\r\n context.datetimeFormats = datetimeFormats;\r\n context.numberFormats = numberFormats;\r\n context.__datetimeFormatters = __datetimeFormatters;\r\n context.__numberFormatters = __numberFormatters;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n context.__v_emitter =\r\n internalOptions.__v_emitter != null\r\n ? internalOptions.__v_emitter\r\n : undefined;\r\n }\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n initI18nDevTools(context, version, __meta);\r\n }\r\n return context;\r\n}\r\n/** @internal */\r\nfunction isTranslateFallbackWarn(fallback, key) {\r\n return fallback instanceof RegExp ? fallback.test(key) : fallback;\r\n}\r\n/** @internal */\r\nfunction isTranslateMissingWarn(missing, key) {\r\n return missing instanceof RegExp ? missing.test(key) : missing;\r\n}\r\n/** @internal */\r\nfunction handleMissing(context, key, locale, missingWarn, type) {\r\n const { missing, onWarn } = context;\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"missing\" /* MISSING */, {\r\n locale,\r\n key,\r\n type,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n if (missing !== null) {\r\n const ret = missing(context, locale, key, type);\r\n return isString(ret) ? ret : key;\r\n }\r\n else {\r\n if ((process.env.NODE_ENV !== 'production') && isTranslateMissingWarn(missingWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.NOT_FOUND_KEY, { key, locale }));\r\n }\r\n return key;\r\n }\r\n}\r\n/** @internal */\r\nfunction updateFallbackLocale(ctx, locale, fallback) {\r\n const context = ctx;\r\n context.__localeChainCache = new Map();\r\n ctx.localeFallbacker(ctx, fallback, locale);\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst RE_HTML_TAG = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\r\nconst WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`;\r\nfunction checkHtmlMessage(source, options) {\r\n const warnHtmlMessage = isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n if (warnHtmlMessage && RE_HTML_TAG.test(source)) {\r\n warn(format(WARN_MESSAGE, { source }));\r\n }\r\n}\r\nconst defaultOnCacheKey = (source) => source;\r\nlet compileCache = Object.create(null);\r\nfunction clearCompileCache() {\r\n compileCache = Object.create(null);\r\n}\r\nfunction compileToFunction(source, options = {}) {\r\n {\r\n // check HTML message\r\n (process.env.NODE_ENV !== 'production') && checkHtmlMessage(source, options);\r\n // check caches\r\n const onCacheKey = options.onCacheKey || defaultOnCacheKey;\r\n const key = onCacheKey(source);\r\n const cached = compileCache[key];\r\n if (cached) {\r\n return cached;\r\n }\r\n // compile error detecting\r\n let occurred = false;\r\n const onError = options.onError || defaultOnError;\r\n options.onError = (err) => {\r\n occurred = true;\r\n onError(err);\r\n };\r\n // compile\r\n const { code } = baseCompile(source, options);\r\n // evaluate function\r\n const msg = new Function(`return ${code}`)();\r\n // if occurred compile error, don't cache\r\n return !occurred ? (compileCache[key] = msg) : msg;\r\n }\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst CoreErrorCodes = {\r\n INVALID_ARGUMENT: code,\r\n INVALID_DATE_ARGUMENT: inc(),\r\n INVALID_ISO_DATE_ARGUMENT: inc(),\r\n __EXTEND_POINT__: inc() // 18\r\n};\r\nfunction createCoreError(code) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages } : undefined);\r\n}\r\n/** @internal */\r\nconst errorMessages = {\r\n [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments',\r\n [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' +\r\n 'Make sure your Date represents a valid date.',\r\n [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string'\r\n};\n\nconst NOOP_MESSAGE_FUNCTION = () => '';\r\nconst isMessageFunction = (val) => isFunction(val);\r\n// implementation of `translate` function\r\nfunction translate(context, ...args) {\r\n const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;\r\n const [key, options] = parseTranslateArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const escapeParameter = isBoolean(options.escapeParameter)\r\n ? options.escapeParameter\r\n : context.escapeParameter;\r\n const resolvedMessage = !!options.resolvedMessage;\r\n // prettier-ignore\r\n const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option\r\n ? !isBoolean(options.default)\r\n ? options.default\r\n : (!messageCompiler ? () => key : key)\r\n : fallbackFormat // default by `fallbackFormat` option\r\n ? (!messageCompiler ? () => key : key)\r\n : '';\r\n const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== '';\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n // escape params\r\n escapeParameter && escapeParams(options);\r\n // resolve message format\r\n // eslint-disable-next-line prefer-const\r\n let [formatScope, targetLocale, message] = !resolvedMessage\r\n ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn)\r\n : [\r\n key,\r\n locale,\r\n messages[locale] || {}\r\n ];\r\n // NOTE:\r\n // Fix to work around `ssrTransfrom` bug in Vite.\r\n // https://github.com/vitejs/vite/issues/4306\r\n // To get around this, use temporary variables.\r\n // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243\r\n let format = formatScope;\r\n // if you use default message, set it as message format!\r\n let cacheBaseKey = key;\r\n if (!resolvedMessage &&\r\n !(isString(format) || isMessageFunction(format))) {\r\n if (enableDefaultMsg) {\r\n format = defaultMsgOrKey;\r\n cacheBaseKey = format;\r\n }\r\n }\r\n // checking message format and target locale\r\n if (!resolvedMessage &&\r\n (!(isString(format) || isMessageFunction(format)) ||\r\n !isString(targetLocale))) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && isString(format) && context.messageCompiler == null) {\r\n warn(`The message format compilation is not supported in this build. ` +\r\n `Because message compiler isn't included. ` +\r\n `You need to pre-compilation all message format. ` +\r\n `So translate function return '${key}'.`);\r\n return key;\r\n }\r\n // setup compile error detecting\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n // compile message format\r\n const msg = !isMessageFunction(format)\r\n ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector)\r\n : format;\r\n // if occurred compile error, return the message format\r\n if (occurred) {\r\n return format;\r\n }\r\n // evaluate message with context\r\n const ctxOptions = getMessageContextOptions(context, targetLocale, message, options);\r\n const msgContext = createMessageContext(ctxOptions);\r\n const messaged = evaluateMessage(context, msg, msgContext);\r\n // if use post translation option, proceed it with handler\r\n const ret = postTranslation\r\n ? postTranslation(messaged, key)\r\n : messaged;\r\n // NOTE: experimental !!\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n // prettier-ignore\r\n const payloads = {\r\n timestamp: Date.now(),\r\n key: isString(key)\r\n ? key\r\n : isMessageFunction(format)\r\n ? format.key\r\n : '',\r\n locale: targetLocale || (isMessageFunction(format)\r\n ? format.locale\r\n : ''),\r\n format: isString(format)\r\n ? format\r\n : isMessageFunction(format)\r\n ? format.source\r\n : '',\r\n message: ret\r\n };\r\n payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {});\r\n translateDevTools(payloads);\r\n }\r\n return ret;\r\n}\r\nfunction escapeParams(options) {\r\n if (isArray(options.list)) {\r\n options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item);\r\n }\r\n else if (isObject(options.named)) {\r\n Object.keys(options.named).forEach(key => {\r\n if (isString(options.named[key])) {\r\n options.named[key] = escapeHtml(options.named[key]);\r\n }\r\n });\r\n }\r\n}\r\nfunction resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {\r\n const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context;\r\n const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n let message = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'translate';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_TRANSLATE, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n message =\r\n messages[targetLocale] || {};\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-resolve-start';\r\n endTag = 'intlify-message-resolve-end';\r\n mark && mark(startTag);\r\n }\r\n if ((format = resolveValue(message, key)) === null) {\r\n // if null, resolve with object key path\r\n format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start && format) {\r\n emitter.emit(\"message-resolve\" /* MESSAGE_RESOLVE */, {\r\n type: \"message-resolve\" /* MESSAGE_RESOLVE */,\r\n key,\r\n message: format,\r\n time: end - start,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message resolve', startTag, endTag);\r\n }\r\n }\r\n if (isString(format) || isFunction(format))\r\n break;\r\n const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n key, targetLocale, missingWarn, type);\r\n if (missingRet !== key) {\r\n format = missingRet;\r\n }\r\n from = to;\r\n }\r\n return [format, targetLocale, message];\r\n}\r\nfunction compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, errorDetector) {\r\n const { messageCompiler, warnHtmlMessage } = context;\r\n if (isMessageFunction(format)) {\r\n const msg = format;\r\n msg.locale = msg.locale || targetLocale;\r\n msg.key = msg.key || key;\r\n return msg;\r\n }\r\n if (messageCompiler == null) {\r\n const msg = (() => format);\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n return msg;\r\n }\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-compilation-start';\r\n endTag = 'intlify-message-compilation-end';\r\n mark && mark(startTag);\r\n }\r\n const msg = messageCompiler(format, getCompileOptions(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, errorDetector));\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-compilation\" /* MESSAGE_COMPILATION */, {\r\n type: \"message-compilation\" /* MESSAGE_COMPILATION */,\r\n message: format,\r\n time: end - start,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message compilation', startTag, endTag);\r\n }\r\n }\r\n msg.locale = targetLocale;\r\n msg.key = key;\r\n msg.source = format;\r\n return msg;\r\n}\r\nfunction evaluateMessage(context, msg, msgCtx) {\r\n // for vue-devtools timeline event\r\n let start = null;\r\n let startTag;\r\n let endTag;\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n start = window.performance.now();\r\n startTag = 'intlify-message-evaluation-start';\r\n endTag = 'intlify-message-evaluation-end';\r\n mark && mark(startTag);\r\n }\r\n const messaged = msg(msgCtx);\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && inBrowser) {\r\n const end = window.performance.now();\r\n const emitter = context.__v_emitter;\r\n if (emitter && start) {\r\n emitter.emit(\"message-evaluation\" /* MESSAGE_EVALUATION */, {\r\n type: \"message-evaluation\" /* MESSAGE_EVALUATION */,\r\n value: messaged,\r\n time: end - start,\r\n groupId: `${'translate'}:${msg.key}`\r\n });\r\n }\r\n if (startTag && endTag && mark && measure) {\r\n mark(endTag);\r\n measure('intlify message evaluation', startTag, endTag);\r\n }\r\n }\r\n return messaged;\r\n}\r\n/** @internal */\r\nfunction parseTranslateArgs(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n if (!isString(arg1) && !isNumber(arg1) && !isMessageFunction(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n // prettier-ignore\r\n const key = isNumber(arg1)\r\n ? String(arg1)\r\n : isMessageFunction(arg1)\r\n ? arg1\r\n : arg1;\r\n if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isString(arg2)) {\r\n options.default = arg2;\r\n }\r\n else if (isPlainObject(arg2) && !isEmptyObject(arg2)) {\r\n options.named = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n options.list = arg2;\r\n }\r\n if (isNumber(arg3)) {\r\n options.plural = arg3;\r\n }\r\n else if (isString(arg3)) {\r\n options.default = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n assign(options, arg3);\r\n }\r\n return [key, options];\r\n}\r\nfunction getCompileOptions(context, locale, key, source, warnHtmlMessage, errorDetector) {\r\n return {\r\n warnHtmlMessage,\r\n onError: (err) => {\r\n errorDetector && errorDetector(err);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const message = `Message compilation error: ${err.message}`;\r\n const codeFrame = err.location &&\r\n generateCodeFrame(source, err.location.start.offset, err.location.end.offset);\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"compile-error\" /* COMPILE_ERROR */, {\r\n message: source,\r\n error: err.message,\r\n start: err.location && err.location.start.offset,\r\n end: err.location && err.location.end.offset,\r\n groupId: `${'translate'}:${key}`\r\n });\r\n }\r\n console.error(codeFrame ? `${message}\\n${codeFrame}` : message);\r\n }\r\n else {\r\n throw err;\r\n }\r\n },\r\n onCacheKey: (source) => generateFormatCacheKey(locale, key, source)\r\n };\r\n}\r\nfunction getMessageContextOptions(context, locale, message, options) {\r\n const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;\r\n const resolveMessage = (key) => {\r\n let val = resolveValue(message, key);\r\n // fallback to root context\r\n if (val == null && fallbackContext) {\r\n const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn);\r\n val = resolveValue(message, key);\r\n }\r\n if (isString(val)) {\r\n let occurred = false;\r\n const errorDetector = () => {\r\n occurred = true;\r\n };\r\n const msg = compileMessageFormat(context, key, locale, val, key, errorDetector);\r\n return !occurred\r\n ? msg\r\n : NOOP_MESSAGE_FUNCTION;\r\n }\r\n else if (isMessageFunction(val)) {\r\n return val;\r\n }\r\n else {\r\n // TODO: should be implemented warning message\r\n return NOOP_MESSAGE_FUNCTION;\r\n }\r\n };\r\n const ctxOptions = {\r\n locale,\r\n modifiers,\r\n pluralRules,\r\n messages: resolveMessage\r\n };\r\n if (context.processor) {\r\n ctxOptions.processor = context.processor;\r\n }\r\n if (options.list) {\r\n ctxOptions.list = options.list;\r\n }\r\n if (options.named) {\r\n ctxOptions.named = options.named;\r\n }\r\n if (isNumber(options.plural)) {\r\n ctxOptions.pluralIndex = options.plural;\r\n }\r\n return ctxOptions;\r\n}\n\nconst intlDefined = typeof Intl !== 'undefined';\r\nconst Availabilities = {\r\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\r\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\r\n};\n\n// implementation of `datetime` function\r\nfunction datetime(context, ...args) {\r\n const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __datetimeFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.dateTimeFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_DATE));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseDateTimeArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.DateTimeFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let datetimeFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'datetime format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n datetimeFormat =\r\n datetimeFormats[targetLocale] || {};\r\n format = datetimeFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __datetimeFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides));\r\n __datetimeFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst DATETIME_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'weekday',\r\n 'era',\r\n 'year',\r\n 'month',\r\n 'day',\r\n 'hour',\r\n 'minute',\r\n 'second',\r\n 'timeZoneName',\r\n 'formatMatcher',\r\n 'hour12',\r\n 'timeZone',\r\n 'dateStyle',\r\n 'timeStyle',\r\n 'calendar',\r\n 'dayPeriod',\r\n 'numberingSystem',\r\n 'hourCycle',\r\n 'fractionalSecondDigits'\r\n];\r\n/** @internal */\r\nfunction parseDateTimeArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n let value;\r\n if (isString(arg1)) {\r\n // Only allow ISO strings - other date formats are often supported,\r\n // but may cause different results in different browsers.\r\n const matches = arg1.match(/(\\d{4}-\\d{2}-\\d{2})(T|\\s)?(.*)/);\r\n if (!matches) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n // Some browsers can not parse the iso datetime separated by space,\r\n // this is a compromise solution by replace the 'T'/' ' with 'T'\r\n const dateTime = matches[3]\r\n ? matches[3].trim().startsWith('T')\r\n ? `${matches[1].trim()}${matches[3].trim()}`\r\n : `${matches[1].trim()}T${matches[3].trim()}`\r\n : matches[1].trim();\r\n value = new Date(dateTime);\r\n try {\r\n // This will fail if the date is not valid\r\n value.toISOString();\r\n }\r\n catch (e) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);\r\n }\r\n }\r\n else if (isDate(arg1)) {\r\n if (isNaN(arg1.getTime())) {\r\n throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);\r\n }\r\n value = arg1;\r\n }\r\n else if (isNumber(arg1)) {\r\n value = arg1;\r\n }\r\n else {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearDateTimeFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__datetimeFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__datetimeFormatters.delete(id);\r\n }\r\n}\n\n// implementation of `number` function\r\nfunction number(context, ...args) {\r\n const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;\r\n const { __numberFormatters } = context;\r\n if ((process.env.NODE_ENV !== 'production') && !Availabilities.numberFormat) {\r\n onWarn(getWarnMessage(CoreWarnCodes.CANNOT_FORMAT_NUMBER));\r\n return MISSING_RESOLVE_VALUE;\r\n }\r\n const [key, value, options, overrides] = parseNumberArgs(...args);\r\n const missingWarn = isBoolean(options.missingWarn)\r\n ? options.missingWarn\r\n : context.missingWarn;\r\n const fallbackWarn = isBoolean(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : context.fallbackWarn;\r\n const part = !!options.part;\r\n const locale = isString(options.locale) ? options.locale : context.locale;\r\n const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any\r\n fallbackLocale, locale);\r\n if (!isString(key) || key === '') {\r\n return new Intl.NumberFormat(locale, overrides).format(value);\r\n }\r\n // resolve format\r\n let numberFormat = {};\r\n let targetLocale;\r\n let format = null;\r\n let from = locale;\r\n let to = null;\r\n const type = 'number format';\r\n for (let i = 0; i < locales.length; i++) {\r\n targetLocale = to = locales[i];\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n locale !== targetLocale &&\r\n isTranslateFallbackWarn(fallbackWarn, key)) {\r\n onWarn(getWarnMessage(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, {\r\n key,\r\n target: targetLocale\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production') && locale !== targetLocale) {\r\n const emitter = context.__v_emitter;\r\n if (emitter) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type,\r\n key,\r\n from,\r\n to,\r\n groupId: `${type}:${key}`\r\n });\r\n }\r\n }\r\n numberFormat =\r\n numberFormats[targetLocale] || {};\r\n format = numberFormat[key];\r\n if (isPlainObject(format))\r\n break;\r\n handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any\r\n from = to;\r\n }\r\n // checking format and target locale\r\n if (!isPlainObject(format) || !isString(targetLocale)) {\r\n return unresolving ? NOT_REOSLVED : key;\r\n }\r\n let id = `${targetLocale}__${key}`;\r\n if (!isEmptyObject(overrides)) {\r\n id = `${id}__${JSON.stringify(overrides)}`;\r\n }\r\n let formatter = __numberFormatters.get(id);\r\n if (!formatter) {\r\n formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides));\r\n __numberFormatters.set(id, formatter);\r\n }\r\n return !part ? formatter.format(value) : formatter.formatToParts(value);\r\n}\r\n/** @internal */\r\nconst NUMBER_FORMAT_OPTIONS_KEYS = [\r\n 'localeMatcher',\r\n 'style',\r\n 'currency',\r\n 'currencyDisplay',\r\n 'currencySign',\r\n 'useGrouping',\r\n 'minimumIntegerDigits',\r\n 'minimumFractionDigits',\r\n 'maximumFractionDigits',\r\n 'minimumSignificantDigits',\r\n 'maximumSignificantDigits',\r\n 'compactDisplay',\r\n 'notation',\r\n 'signDisplay',\r\n 'unit',\r\n 'unitDisplay',\r\n 'roundingMode',\r\n 'roundingPriority',\r\n 'roundingIncrement',\r\n 'trailingZeroDisplay'\r\n];\r\n/** @internal */\r\nfunction parseNumberArgs(...args) {\r\n const [arg1, arg2, arg3, arg4] = args;\r\n const options = {};\r\n let overrides = {};\r\n if (!isNumber(arg1)) {\r\n throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const value = arg1;\r\n if (isString(arg2)) {\r\n options.key = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n Object.keys(arg2).forEach(key => {\r\n if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {\r\n overrides[key] = arg2[key];\r\n }\r\n else {\r\n options[key] = arg2[key];\r\n }\r\n });\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n overrides = arg3;\r\n }\r\n if (isPlainObject(arg4)) {\r\n overrides = arg4;\r\n }\r\n return [options.key || '', value, options, overrides];\r\n}\r\n/** @internal */\r\nfunction clearNumberFormat(ctx, locale, format) {\r\n const context = ctx;\r\n for (const key in format) {\r\n const id = `${locale}__${key}`;\r\n if (!context.__numberFormatters.has(id)) {\r\n continue;\r\n }\r\n context.__numberFormatters.delete(id);\r\n }\r\n}\n\n// TODO: we could not exports for Node native ES Moudles yet...\r\n{\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n}\n\nexport { CoreErrorCodes, CoreWarnCodes, DATETIME_FORMAT_OPTIONS_KEYS, DEFAULT_LOCALE, DEFAULT_MESSAGE_DATA_TYPE, MISSING_RESOLVE_VALUE, NOT_REOSLVED, NUMBER_FORMAT_OPTIONS_KEYS, VERSION, clearCompileCache, clearDateTimeFormat, clearNumberFormat, compileToFunction, createCoreContext, createCoreError, createMessageContext, datetime, fallbackWithLocaleChain, fallbackWithSimple, getAdditionalMeta, getDevToolsHook, getFallbackContext, getWarnMessage, handleMissing, initI18nDevTools, isMessageFunction, isTranslateFallbackWarn, isTranslateMissingWarn, number, parse, parseDateTimeArgs, parseNumberArgs, parseTranslateArgs, registerLocaleFallbacker, registerMessageCompiler, registerMessageResolver, resolveValue, resolveWithKeyValue, setAdditionalMeta, setDevToolsHook, setFallbackContext, translate, translateDevTools, updateFallbackLocale };\n","/**\n * Make a map and return a function for checking if a key\n * is in that map.\n * IMPORTANT: all calls of this function must be prefixed with\n * \\/\\*#\\_\\_PURE\\_\\_\\*\\/\n * So that rollup can tree-shake them if necessary.\n */\nfunction makeMap(str, expectsLowerCase) {\n const map = Object.create(null);\n const list = str.split(',');\n for (let i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];\n}\n\n/**\n * dev only flag -> name mapping\n */\nconst PatchFlagNames = {\n [1 /* PatchFlags.TEXT */]: `TEXT`,\n [2 /* PatchFlags.CLASS */]: `CLASS`,\n [4 /* PatchFlags.STYLE */]: `STYLE`,\n [8 /* PatchFlags.PROPS */]: `PROPS`,\n [16 /* PatchFlags.FULL_PROPS */]: `FULL_PROPS`,\n [32 /* PatchFlags.HYDRATE_EVENTS */]: `HYDRATE_EVENTS`,\n [64 /* PatchFlags.STABLE_FRAGMENT */]: `STABLE_FRAGMENT`,\n [128 /* PatchFlags.KEYED_FRAGMENT */]: `KEYED_FRAGMENT`,\n [256 /* PatchFlags.UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`,\n [512 /* PatchFlags.NEED_PATCH */]: `NEED_PATCH`,\n [1024 /* PatchFlags.DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`,\n [2048 /* PatchFlags.DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`,\n [-1 /* PatchFlags.HOISTED */]: `HOISTED`,\n [-2 /* PatchFlags.BAIL */]: `BAIL`\n};\n\n/**\n * Dev only\n */\nconst slotFlagsText = {\n [1 /* SlotFlags.STABLE */]: 'STABLE',\n [2 /* SlotFlags.DYNAMIC */]: 'DYNAMIC',\n [3 /* SlotFlags.FORWARDED */]: 'FORWARDED'\n};\n\nconst GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +\n 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +\n 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';\nconst isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n // Split the content into individual lines but capture the newline sequence\n // that separated each line. This is important because the actual sequence is\n // needed to properly take into account the full line length for offset\n // comparison\n let lines = source.split(/(\\r?\\n)/);\n // Separate the lines and newline sequences into separate arrays for easier referencing\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count +=\n lines[i].length +\n ((newlineSequences[i] && newlineSequences[i].length) || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`);\n const lineLength = lines[j].length;\n const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0;\n if (j === i) {\n // push underline\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(1, end > count ? lineLength - pad : end - start);\n res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length));\n }\n else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + '^'.repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join('\\n');\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item)\n ? parseStringStyle(item)\n : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n }\n else if (isString(value)) {\n return value;\n }\n else if (isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*.*?\\*\\//gs;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText\n .replace(styleCommentRE, '')\n .split(listDelimiterRE)\n .forEach(item => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = '';\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === 'number') {\n // only render valid values\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = '';\n if (isString(value)) {\n res = value;\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + ' ';\n }\n }\n }\n else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + ' ';\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\n// These tag configs are shared between compiler-dom and runtime-dom, so they\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Element\nconst HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +\n 'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +\n 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +\n 'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +\n 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +\n 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +\n 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +\n 'option,output,progress,select,textarea,details,dialog,menu,' +\n 'summary,template,blockquote,iframe,tfoot';\n// https://developer.mozilla.org/en-US/docs/Web/SVG/Element\nconst SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +\n 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +\n 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +\n 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +\n 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +\n 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +\n 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +\n 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +\n 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +\n 'text,textPath,title,tspan,unknown,use,view';\nconst VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr';\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);\n/**\n * Compiler only.\n * Do NOT use in runtime code paths unless behind `(process.env.NODE_ENV !== 'production')` flag.\n */\nconst isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS);\n\n/**\n * On the client we only need to offer special cases for boolean attributes that\n * have different names from their corresponding dom properties:\n * - itemscope -> N/A\n * - allowfullscreen -> allowFullscreen\n * - formnovalidate -> formNoValidate\n * - ismap -> isMap\n * - nomodule -> noModule\n * - novalidate -> noValidate\n * - readonly -> readOnly\n */\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);\n/**\n * The full list is needed during SSR to produce the correct initial markup.\n */\nconst isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs +\n `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` +\n `loop,open,required,reversed,scoped,seamless,` +\n `checked,muted,multiple,selected`);\n/**\n * Boolean attributes should be included if the value is truthy or ''.\n * e.g. `<select multiple>` compiles to `{ multiple: '' }`\n */\nfunction includeBooleanAttr(value) {\n return !!value || value === '';\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return (attrValidationCache[name] = !isUnsafe);\n}\nconst propsToAttrMap = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n};\n/**\n * Known attributes, this is used for stringification of runtime static nodes\n * so that we don't stringify bindings that cannot be set from HTML.\n * Don't also forget to allow `data-*` and `aria-*`!\n * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes\n */\nconst isKnownHtmlAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` +\n `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` +\n `border,buffered,capture,challenge,charset,checked,cite,class,code,` +\n `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` +\n `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` +\n `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` +\n `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` +\n `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` +\n `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` +\n `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` +\n `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` +\n `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` +\n `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` +\n `start,step,style,summary,tabindex,target,title,translate,type,usemap,` +\n `value,width,wrap`);\n/**\n * Generated from https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute\n */\nconst isKnownSvgAttr = /*#__PURE__*/ makeMap(`xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,` +\n `arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,` +\n `baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,` +\n `clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,` +\n `color-interpolation-filters,color-profile,color-rendering,` +\n `contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,` +\n `descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,` +\n `dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,` +\n `fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,` +\n `font-family,font-size,font-size-adjust,font-stretch,font-style,` +\n `font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,` +\n `glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,` +\n `gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,` +\n `horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,` +\n `k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,` +\n `lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,` +\n `marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,` +\n `mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,` +\n `name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,` +\n `overflow,overline-position,overline-thickness,panose-1,paint-order,path,` +\n `pathLength,patternContentUnits,patternTransform,patternUnits,ping,` +\n `pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,` +\n `preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,` +\n `rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,` +\n `restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,` +\n `specularConstant,specularExponent,speed,spreadMethod,startOffset,` +\n `stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,` +\n `strikethrough-position,strikethrough-thickness,string,stroke,` +\n `stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,` +\n `stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,` +\n `systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,` +\n `text-decoration,text-rendering,textLength,to,transform,transform-origin,` +\n `type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,` +\n `unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,` +\n `v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,` +\n `vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,` +\n `writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,` +\n `xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,` +\n `xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`);\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = '' + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = '';\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escaped = '&quot;';\n break;\n case 38: // &\n escaped = '&amp;';\n break;\n case 39: // '\n escaped = '&#39;';\n break;\n case 60: // <\n escaped = '&lt;';\n break;\n case 62: // >\n escaped = '&gt;';\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\n// https://www.w3.org/TR/html52/syntax.html#comments\nconst commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g;\nfunction escapeHtmlComment(src) {\n return src.replace(commentStripRE, '');\n}\n\nfunction looseCompareArrays(a, b) {\n if (a.length !== b.length)\n return false;\n let equal = true;\n for (let i = 0; equal && i < a.length; i++) {\n equal = looseEqual(a[i], b[i]);\n }\n return equal;\n}\nfunction looseEqual(a, b) {\n if (a === b)\n return true;\n let aValidType = isDate(a);\n let bValidType = isDate(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? a.getTime() === b.getTime() : false;\n }\n aValidType = isSymbol(a);\n bValidType = isSymbol(b);\n if (aValidType || bValidType) {\n return a === b;\n }\n aValidType = isArray(a);\n bValidType = isArray(b);\n if (aValidType || bValidType) {\n return aValidType && bValidType ? looseCompareArrays(a, b) : false;\n }\n aValidType = isObject(a);\n bValidType = isObject(b);\n if (aValidType || bValidType) {\n /* istanbul ignore if: this if will probably never be called */\n if (!aValidType || !bValidType) {\n return false;\n }\n const aKeysCount = Object.keys(a).length;\n const bKeysCount = Object.keys(b).length;\n if (aKeysCount !== bKeysCount) {\n return false;\n }\n for (const key in a) {\n const aHasKey = a.hasOwnProperty(key);\n const bHasKey = b.hasOwnProperty(key);\n if ((aHasKey && !bHasKey) ||\n (!aHasKey && bHasKey) ||\n !looseEqual(a[key], b[key])) {\n return false;\n }\n }\n }\n return String(a) === String(b);\n}\nfunction looseIndexOf(arr, val) {\n return arr.findIndex(item => looseEqual(item, val));\n}\n\n/**\n * For converting {{ interpolation }} values to displayed strings.\n * @private\n */\nconst toDisplayString = (val) => {\n return isString(val)\n ? val\n : val == null\n ? ''\n : isArray(val) ||\n (isObject(val) &&\n (val.toString === objectToString || !isFunction(val.toString)))\n ? JSON.stringify(val, replacer, 2)\n : String(val);\n};\nconst replacer = (_key, val) => {\n // can't use isRef here since @vue/shared has no deps\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n }\n else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {\n entries[`${key} =>`] = val;\n return entries;\n }, {})\n };\n }\n else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()]\n };\n }\n else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\n\nconst EMPTY_OBJ = (process.env.NODE_ENV !== 'production')\n ? Object.freeze({})\n : {};\nconst EMPTY_ARR = (process.env.NODE_ENV !== 'production') ? Object.freeze([]) : [];\nconst NOOP = () => { };\n/**\n * Always return false.\n */\nconst NO = () => false;\nconst onRE = /^on[^a-z]/;\nconst isOn = (key) => onRE.test(key);\nconst isModelListener = (key) => key.startsWith('onUpdate:');\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === '[object Map]';\nconst isSet = (val) => toTypeString(val) === '[object Set]';\nconst isDate = (val) => toTypeString(val) === '[object Date]';\nconst isFunction = (val) => typeof val === 'function';\nconst isString = (val) => typeof val === 'string';\nconst isSymbol = (val) => typeof val === 'symbol';\nconst isObject = (val) => val !== null && typeof val === 'object';\nconst isPromise = (val) => {\n return isObject(val) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n // extract \"RawType\" from strings like \"[object RawType]\"\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === '[object Object]';\nconst isIntegerKey = (key) => isString(key) &&\n key !== 'NaN' &&\n key[0] !== '-' &&\n '' + parseInt(key, 10) === key;\nconst isReservedProp = /*#__PURE__*/ makeMap(\n// the leading comma is intentional so empty string \"\" is also included\n',key,ref,ref_for,ref_key,' +\n 'onVnodeBeforeMount,onVnodeMounted,' +\n 'onVnodeBeforeUpdate,onVnodeUpdated,' +\n 'onVnodeBeforeUnmount,onVnodeUnmounted');\nconst isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');\nconst cacheStringFunction = (fn) => {\n const cache = Object.create(null);\n return ((str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n });\n};\nconst camelizeRE = /-(\\w)/g;\n/**\n * @private\n */\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\n});\nconst hyphenateRE = /\\B([A-Z])/g;\n/**\n * @private\n */\nconst hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());\n/**\n * @private\n */\nconst capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\n/**\n * @private\n */\nconst toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\n// compare whether a value has changed, accounting for NaN.\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst toNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return (_globalThis ||\n (_globalThis =\n typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {}));\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name)\n ? `__props.${name}`\n : `__props[${JSON.stringify(name)}]`;\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isModelListener, isObject, isOn, isPlainObject, isPromise, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","import { extend, isArray, toNumber, isMap, isIntegerKey, hasOwn, isSymbol, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this.active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index =\n (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n }\n }\n run(fn) {\n if (this.active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n }\n finally {\n activeEffectScope = currentEffectScope;\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this.active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n // nested scope, dereference from parent to avoid memory leaks\n if (!this.detached && this.parent && !fromParent) {\n // optimized O(1) removal\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = undefined;\n this.active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`onScopeDispose() is called when there is no active effect scope` +\n ` to be associated with.`);\n }\n}\n\nconst createDep = (effects) => {\n const dep = new Set(effects);\n dep.w = 0;\n dep.n = 0;\n return dep;\n};\nconst wasTracked = (dep) => (dep.w & trackOpBit) > 0;\nconst newTracked = (dep) => (dep.n & trackOpBit) > 0;\nconst initDepMarkers = ({ deps }) => {\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].w |= trackOpBit; // set was tracked\n }\n }\n};\nconst finalizeDepMarkers = (effect) => {\n const { deps } = effect;\n if (deps.length) {\n let ptr = 0;\n for (let i = 0; i < deps.length; i++) {\n const dep = deps[i];\n if (wasTracked(dep) && !newTracked(dep)) {\n dep.delete(effect);\n }\n else {\n deps[ptr++] = dep;\n }\n // clear bits\n dep.w &= ~trackOpBit;\n dep.n &= ~trackOpBit;\n }\n deps.length = ptr;\n }\n};\n\nconst targetMap = new WeakMap();\n// The number of effects currently being tracked recursively.\nlet effectTrackDepth = 0;\nlet trackOpBit = 1;\n/**\n * The bitwise track markers support at most 30 levels of recursion.\n * This value is chosen to enable modern JS engines to use a SMI on all platforms.\n * When recursion depth is greater, fall back to using a full cleanup.\n */\nconst maxMarkerBits = 30;\nlet activeEffect;\nconst ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'iterate' : '');\nconst MAP_KEY_ITERATE_KEY = Symbol((process.env.NODE_ENV !== 'production') ? 'Map key iterate' : '');\nclass ReactiveEffect {\n constructor(fn, scheduler = null, scope) {\n this.fn = fn;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n this.parent = undefined;\n recordEffectScope(this, scope);\n }\n run() {\n if (!this.active) {\n return this.fn();\n }\n let parent = activeEffect;\n let lastShouldTrack = shouldTrack;\n while (parent) {\n if (parent === this) {\n return;\n }\n parent = parent.parent;\n }\n try {\n this.parent = activeEffect;\n activeEffect = this;\n shouldTrack = true;\n trackOpBit = 1 << ++effectTrackDepth;\n if (effectTrackDepth <= maxMarkerBits) {\n initDepMarkers(this);\n }\n else {\n cleanupEffect(this);\n }\n return this.fn();\n }\n finally {\n if (effectTrackDepth <= maxMarkerBits) {\n finalizeDepMarkers(this);\n }\n trackOpBit = 1 << --effectTrackDepth;\n activeEffect = this.parent;\n shouldTrack = lastShouldTrack;\n this.parent = undefined;\n if (this.deferStop) {\n this.stop();\n }\n }\n }\n stop() {\n // stopped while running itself - defer the cleanup\n if (activeEffect === this) {\n this.deferStop = true;\n }\n else if (this.active) {\n cleanupEffect(this);\n if (this.onStop) {\n this.onStop();\n }\n this.active = false;\n }\n }\n}\nfunction cleanupEffect(effect) {\n const { deps } = effect;\n if (deps.length) {\n for (let i = 0; i < deps.length; i++) {\n deps[i].delete(effect);\n }\n deps.length = 0;\n }\n}\nfunction effect(fn, options) {\n if (fn.effect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn);\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === undefined ? true : last;\n}\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, (depsMap = new Map()));\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, (dep = createDep()));\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { effect: activeEffect, target, type, key }\n : undefined;\n trackEffects(dep, eventInfo);\n }\n}\nfunction trackEffects(dep, debuggerEventExtraInfo) {\n let shouldTrack = false;\n if (effectTrackDepth <= maxMarkerBits) {\n if (!newTracked(dep)) {\n dep.n |= trackOpBit; // set newly tracked\n shouldTrack = !wasTracked(dep);\n }\n }\n else {\n // Full cleanup mode.\n shouldTrack = !dep.has(activeEffect);\n }\n if (shouldTrack) {\n dep.add(activeEffect);\n activeEffect.deps.push(dep);\n if ((process.env.NODE_ENV !== 'production') && activeEffect.onTrack) {\n activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));\n }\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n // never been tracked\n return;\n }\n let deps = [];\n if (type === \"clear\" /* TriggerOpTypes.CLEAR */) {\n // collection being cleared\n // trigger all effects for target\n deps = [...depsMap.values()];\n }\n else if (key === 'length' && isArray(target)) {\n const newLength = toNumber(newValue);\n depsMap.forEach((dep, key) => {\n if (key === 'length' || key >= newLength) {\n deps.push(dep);\n }\n });\n }\n else {\n // schedule runs for SET | ADD | DELETE\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n // also run for iteration key on ADD | DELETE | Map.SET\n switch (type) {\n case \"add\" /* TriggerOpTypes.ADD */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n else if (isIntegerKey(key)) {\n // new index added to array -> length changes\n deps.push(depsMap.get('length'));\n }\n break;\n case \"delete\" /* TriggerOpTypes.DELETE */:\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\" /* TriggerOpTypes.SET */:\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n const eventInfo = (process.env.NODE_ENV !== 'production')\n ? { target, type, key, newValue, oldValue, oldTarget }\n : undefined;\n if (deps.length === 1) {\n if (deps[0]) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(deps[0], eventInfo);\n }\n else {\n triggerEffects(deps[0]);\n }\n }\n }\n else {\n const effects = [];\n for (const dep of deps) {\n if (dep) {\n effects.push(...dep);\n }\n }\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(createDep(effects), eventInfo);\n }\n else {\n triggerEffects(createDep(effects));\n }\n }\n}\nfunction triggerEffects(dep, debuggerEventExtraInfo) {\n // spread into array for stabilization\n const effects = isArray(dep) ? dep : [...dep];\n for (const effect of effects) {\n if (effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n for (const effect of effects) {\n if (!effect.computed) {\n triggerEffect(effect, debuggerEventExtraInfo);\n }\n }\n}\nfunction triggerEffect(effect, debuggerEventExtraInfo) {\n if (effect !== activeEffect || effect.allowRecurse) {\n if ((process.env.NODE_ENV !== 'production') && effect.onTrigger) {\n effect.onTrigger(extend({ effect }, debuggerEventExtraInfo));\n }\n if (effect.scheduler) {\n effect.scheduler();\n }\n else {\n effect.run();\n }\n }\n}\n\nconst isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n/*#__PURE__*/\nObject.getOwnPropertyNames(Symbol)\n // ios10.x Object.getOwnPropertyNames(Symbol) can enumerate 'arguments' and 'caller'\n // but accessing them on Symbol leads to TypeError because Symbol is a strict mode\n // function\n .filter(key => key !== 'arguments' && key !== 'caller')\n .map(key => Symbol[key])\n .filter(isSymbol));\nconst get = /*#__PURE__*/ createGetter();\nconst shallowGet = /*#__PURE__*/ createGetter(false, true);\nconst readonlyGet = /*#__PURE__*/ createGetter(true);\nconst shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);\nconst arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {\n instrumentations[key] = function (...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\" /* TrackOpTypes.GET */, i + '');\n }\n // we run the method using the original args first (which may be reactive)\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n // if that didn't work, run it again using raw values.\n return arr[key](...args.map(toRaw));\n }\n else {\n return res;\n }\n };\n });\n ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {\n instrumentations[key] = function (...args) {\n pauseTracking();\n const res = toRaw(this)[key].apply(this, args);\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction createGetter(isReadonly = false, shallow = false) {\n return function get(target, key, receiver) {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */) {\n return shallow;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */ &&\n receiver ===\n (isReadonly\n ? shallow\n ? shallowReadonlyMap\n : readonlyMap\n : shallow\n ? shallowReactiveMap\n : reactiveMap).get(target)) {\n return target;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly) {\n track(target, \"get\" /* TrackOpTypes.GET */, key);\n }\n if (shallow) {\n return res;\n }\n if (isRef(res)) {\n // ref unwrapping - skip unwrap for Array + integer key.\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n // Convert returned value into a proxy as well. we do the isObject check\n // here to avoid invalid value warning. Also need to lazy access readonly\n // and reactive here to avoid circular dependency.\n return isReadonly ? readonly(res) : reactive(res);\n }\n return res;\n };\n}\nconst set = /*#__PURE__*/ createSetter();\nconst shallowSet = /*#__PURE__*/ createSetter(true);\nfunction createSetter(shallow = false) {\n return function set(target, key, value, receiver) {\n let oldValue = target[key];\n if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {\n return false;\n }\n if (!shallow) {\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key)\n ? Number(key) < target.length\n : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n // don't trigger if target is something up in the prototype chain of original\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n }\n return result;\n };\n}\nfunction deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\" /* TrackOpTypes.HAS */, key);\n }\n return result;\n}\nfunction ownKeys(target) {\n track(target, \"iterate\" /* TrackOpTypes.ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);\n return Reflect.ownKeys(target);\n}\nconst mutableHandlers = {\n get,\n set,\n deleteProperty,\n has,\n ownKeys\n};\nconst readonlyHandlers = {\n get: readonlyGet,\n set(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n },\n deleteProperty(target, key) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n }\n return true;\n }\n};\nconst shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, {\n get: shallowGet,\n set: shallowSet\n});\n// Props handlers are special in the sense that it should not unwrap top-level\n// refs (in order to allow refs to be explicitly passed down), but should\n// retain the reactivity of the normal readonly object.\nconst shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, {\n get: shallowReadonlyGet\n});\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\n // #1772: readonly(reactive(Map)) should return readonly + reactive version\n // of the value\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, key);\n }\n track(rawTarget, \"get\" /* TrackOpTypes.GET */, rawKey);\n }\n const { has } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has.call(rawTarget, key)) {\n return wrap(target.get(key));\n }\n else if (has.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n }\n else if (target !== rawTarget) {\n // #3602 readonly(reactive(Map))\n // ensure that the nested reactive `Map` can do tracking for itself\n target.get(key);\n }\n}\nfunction has$1(key, isReadonly = false) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (key !== rawKey) {\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, key);\n }\n track(rawTarget, \"has\" /* TrackOpTypes.HAS */, rawKey);\n }\n return key === rawKey\n ? target.has(key)\n : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\" /* ReactiveFlags.RAW */];\n !isReadonly && track(toRaw(target), \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return Reflect.get(target, 'size', target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, value, value);\n }\n return this;\n}\nfunction set$1(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\" /* TriggerOpTypes.ADD */, key, value);\n }\n else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\" /* TriggerOpTypes.SET */, key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has, get } = getProto(target);\n let hadKey = has.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has.call(target, key);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n checkIdentityKeys(target, has, key);\n }\n const oldValue = get ? get.call(target, key) : undefined;\n // forward the operation before queueing reactions\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = (process.env.NODE_ENV !== 'production')\n ? isMap(target)\n ? new Map(target)\n : new Set(target)\n : undefined;\n // forward the operation before queueing reactions\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\" /* TriggerOpTypes.CLEAR */, undefined, undefined, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, ITERATE_KEY);\n return target.forEach((value, key) => {\n // important: make sure the callback is\n // 1. invoked with the reactive map as `this` and 3rd arg\n // 2. the value received should be a corresponding reactive/readonly.\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function (...args) {\n const target = this[\"__v_raw\" /* ReactiveFlags.RAW */];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);\n const isKeyOnly = method === 'keys' && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly &&\n track(rawTarget, \"iterate\" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n // return a wrapped iterator which returns observed versions of the\n // values emitted from the real iterator\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done\n ? { value, done }\n : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function (...args) {\n if ((process.env.NODE_ENV !== 'production')) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\n }\n return type === \"delete\" /* TriggerOpTypes.DELETE */ ? false : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations = {\n get(key) {\n return get$1(this, key);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations = {\n get(key) {\n return get$1(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has: has$1,\n add,\n set: set$1,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations = {\n get(key) {\n return get$1(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has$1.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\" /* TriggerOpTypes.ADD */),\n set: createReadonlyMethod(\"set\" /* TriggerOpTypes.SET */),\n delete: createReadonlyMethod(\"delete\" /* TriggerOpTypes.DELETE */),\n clear: createReadonlyMethod(\"clear\" /* TriggerOpTypes.CLEAR */),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];\n iteratorMethods.forEach(method => {\n mutableInstrumentations[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations[method] = createIterableMethod(method, true, false);\n shallowInstrumentations[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\n });\n return [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n ];\n}\nconst [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow\n ? isReadonly\n ? shallowReadonlyInstrumentations\n : shallowInstrumentations\n : isReadonly\n ? readonlyInstrumentations\n : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */) {\n return !isReadonly;\n }\n else if (key === \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */) {\n return isReadonly;\n }\n else if (key === \"__v_raw\" /* ReactiveFlags.RAW */) {\n return target;\n }\n return Reflect.get(hasOwn(instrumentations, key) && key in target\n ? instrumentations\n : target, key, receiver);\n };\n}\nconst mutableCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /*#__PURE__*/ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has.call(target, rawKey)) {\n const type = toRawType(target);\n console.warn(`Reactive ${type} contains both the raw and reactive ` +\n `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +\n `which can lead to inconsistencies. ` +\n `Avoid differentiating between the raw and reactive versions ` +\n `of an object and only use the reactive version if possible.`);\n }\n}\n\nconst reactiveMap = new WeakMap();\nconst shallowReactiveMap = new WeakMap();\nconst readonlyMap = new WeakMap();\nconst shallowReadonlyMap = new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case 'Object':\n case 'Array':\n return 1 /* TargetType.COMMON */;\n case 'Map':\n case 'Set':\n case 'WeakMap':\n case 'WeakSet':\n return 2 /* TargetType.COLLECTION */;\n default:\n return 0 /* TargetType.INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value)\n ? 0 /* TargetType.INVALID */\n : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n // if trying to observe a readonly proxy, return the readonly version.\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);\n}\n/**\n * Creates a readonly copy of the original object. Note the returned copy is not\n * made reactive, but `readonly` can be called on an already reactive object.\n */\nfunction readonly(target) {\n return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);\n}\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n // target is already a Proxy, return it.\n // exception: calling readonly() on a reactive object\n if (target[\"__v_raw\" /* ReactiveFlags.RAW */] &&\n !(isReadonly && target[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */])) {\n return target;\n }\n // target already has corresponding Proxy\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n // only specific value types can be observed.\n const targetType = getTargetType(target);\n if (targetType === 0 /* TargetType.INVALID */) {\n return target;\n }\n const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n }\n return !!(value && value[\"__v_isReactive\" /* ReactiveFlags.IS_REACTIVE */]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\nfunction isProxy(value) {\n return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nfunction trackRefValue(ref) {\n if (shouldTrack && activeEffect) {\n ref = toRaw(ref);\n if ((process.env.NODE_ENV !== 'production')) {\n trackEffects(ref.dep || (ref.dep = createDep()), {\n target: ref,\n type: \"get\" /* TrackOpTypes.GET */,\n key: 'value'\n });\n }\n else {\n trackEffects(ref.dep || (ref.dep = createDep()));\n }\n }\n}\nfunction triggerRefValue(ref, newVal) {\n ref = toRaw(ref);\n if (ref.dep) {\n if ((process.env.NODE_ENV !== 'production')) {\n triggerEffects(ref.dep, {\n target: ref,\n type: \"set\" /* TriggerOpTypes.SET */,\n key: 'value',\n newValue: newVal\n });\n }\n else {\n triggerEffects(ref.dep);\n }\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = undefined;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, newVal);\n }\n }\n}\nfunction triggerRef(ref) {\n triggerRefValue(ref, (process.env.NODE_ENV !== 'production') ? ref.value : void 0);\n}\nfunction unref(ref) {\n return isRef(ref) ? ref.value : ref;\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n }\n else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs)\n ? objectWithRefs\n : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = undefined;\n this.__v_isRef = true;\n const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if ((process.env.NODE_ENV !== 'production') && !isProxy(object)) {\n console.warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = toRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === undefined ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n}\nfunction toRef(object, key, defaultValue) {\n const val = object[key];\n return isRef(val)\n ? val\n : new ObjectRefImpl(object, key, defaultValue);\n}\n\nvar _a;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this._setter = _setter;\n this.dep = undefined;\n this.__v_isRef = true;\n this[_a] = false;\n this._dirty = true;\n this.effect = new ReactiveEffect(getter, () => {\n if (!this._dirty) {\n this._dirty = true;\n triggerRefValue(this);\n }\n });\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */] = isReadonly;\n }\n get value() {\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n const self = toRaw(this);\n trackRefValue(self);\n if (self._dirty || !self._cacheable) {\n self._dirty = false;\n self._value = self.effect.run();\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n}\n_a = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = (process.env.NODE_ENV !== 'production')\n ? () => {\n console.warn('Write operation failed: computed value is readonly');\n }\n : NOOP;\n }\n else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if ((process.env.NODE_ENV !== 'production') && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nvar _a$1;\nconst tick = /*#__PURE__*/ Promise.resolve();\nconst queue = [];\nlet queued = false;\nconst scheduler = (fn) => {\n queue.push(fn);\n if (!queued) {\n queued = true;\n tick.then(flush);\n }\n};\nconst flush = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]();\n }\n queue.length = 0;\n queued = false;\n};\nclass DeferredComputedRefImpl {\n constructor(getter) {\n this.dep = undefined;\n this._dirty = true;\n this.__v_isRef = true;\n this[_a$1] = true;\n let compareTarget;\n let hasCompareTarget = false;\n let scheduled = false;\n this.effect = new ReactiveEffect(getter, (computedTrigger) => {\n if (this.dep) {\n if (computedTrigger) {\n compareTarget = this._value;\n hasCompareTarget = true;\n }\n else if (!scheduled) {\n const valueToCompare = hasCompareTarget ? compareTarget : this._value;\n scheduled = true;\n hasCompareTarget = false;\n scheduler(() => {\n if (this.effect.active && this._get() !== valueToCompare) {\n triggerRefValue(this);\n }\n scheduled = false;\n });\n }\n // chained upstream computeds are notified synchronously to ensure\n // value invalidation in case of sync access; normal effects are\n // deferred to be triggered in scheduler.\n for (const e of this.dep) {\n if (e.computed instanceof DeferredComputedRefImpl) {\n e.scheduler(true /* computedTrigger */);\n }\n }\n }\n this._dirty = true;\n });\n this.effect.computed = this;\n }\n _get() {\n if (this._dirty) {\n this._dirty = false;\n return (this._value = this.effect.run());\n }\n return this._value;\n }\n get value() {\n trackRefValue(this);\n // the computed ref may get wrapped by other proxies e.g. readonly() #3376\n return toRaw(this)._get();\n }\n}\n_a$1 = \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */;\nfunction deferredComputed(getter) {\n return new DeferredComputedRefImpl(getter);\n}\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseTracking, proxyRefs, reactive, readonly, ref, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, track, trigger, triggerRef, unref };\n","import { pauseTracking, resetTracking, isRef, toRaw, isShallow as isShallow$1, isReactive, ReactiveEffect, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, EffectScope, markRaw, proxyRefs, computed as computed$1, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, toNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, hasChanged, remove, isSet, isMap, isPlainObject, invokeArrayFns, isBuiltInDirective, capitalize, isGloballyWhitelisted, def, isReservedProp, EMPTY_ARR, toRawType, makeMap, NO, normalizeClass, normalizeStyle } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn(msg, ...args) {\n if (!(process.env.NODE_ENV !== 'production'))\n return;\n // avoid props formatting or warn handler tracking deps that might be mutated\n // during patch, leading to infinite recursion.\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(appWarnHandler, instance, 11 /* ErrorCodes.APP_WARN_HANDLER */, [\n msg + args.join(''),\n instance && instance.proxy,\n trace\n .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)\n .join('\\n'),\n trace\n ]);\n }\n else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n /* istanbul ignore if */\n if (trace.length &&\n // avoid spamming console during tests\n !false) {\n warnArgs.push(`\\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n // we can't just use the stack because it will be incomplete during updates\n // that did not start from the root. Re-construct the parent chain using\n // instance parent pointers.\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n }\n else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\n/* istanbul ignore next */\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...(i === 0 ? [] : [`\\n`]), ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;\n const close = `>` + postfix;\n return vnode.props\n ? [open, ...formatProps(vnode.props), close]\n : [open + close];\n}\n/* istanbul ignore next */\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach(key => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\n/* istanbul ignore next */\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n }\n else if (typeof value === 'number' ||\n typeof value === 'boolean' ||\n value == null) {\n return raw ? value : [`${key}=${value}`];\n }\n else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n }\n else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n }\n else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\n\nconst ErrorTypeStrings = {\n [\"sp\" /* LifecycleHooks.SERVER_PREFETCH */]: 'serverPrefetch hook',\n [\"bc\" /* LifecycleHooks.BEFORE_CREATE */]: 'beforeCreate hook',\n [\"c\" /* LifecycleHooks.CREATED */]: 'created hook',\n [\"bm\" /* LifecycleHooks.BEFORE_MOUNT */]: 'beforeMount hook',\n [\"m\" /* LifecycleHooks.MOUNTED */]: 'mounted hook',\n [\"bu\" /* LifecycleHooks.BEFORE_UPDATE */]: 'beforeUpdate hook',\n [\"u\" /* LifecycleHooks.UPDATED */]: 'updated',\n [\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */]: 'beforeUnmount hook',\n [\"um\" /* LifecycleHooks.UNMOUNTED */]: 'unmounted hook',\n [\"a\" /* LifecycleHooks.ACTIVATED */]: 'activated hook',\n [\"da\" /* LifecycleHooks.DEACTIVATED */]: 'deactivated hook',\n [\"ec\" /* LifecycleHooks.ERROR_CAPTURED */]: 'errorCaptured hook',\n [\"rtc\" /* LifecycleHooks.RENDER_TRACKED */]: 'renderTracked hook',\n [\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */]: 'renderTriggered hook',\n [0 /* ErrorCodes.SETUP_FUNCTION */]: 'setup function',\n [1 /* ErrorCodes.RENDER_FUNCTION */]: 'render function',\n [2 /* ErrorCodes.WATCH_GETTER */]: 'watcher getter',\n [3 /* ErrorCodes.WATCH_CALLBACK */]: 'watcher callback',\n [4 /* ErrorCodes.WATCH_CLEANUP */]: 'watcher cleanup function',\n [5 /* ErrorCodes.NATIVE_EVENT_HANDLER */]: 'native event handler',\n [6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */]: 'component event handler',\n [7 /* ErrorCodes.VNODE_HOOK */]: 'vnode hook',\n [8 /* ErrorCodes.DIRECTIVE_HOOK */]: 'directive hook',\n [9 /* ErrorCodes.TRANSITION_HOOK */]: 'transition hook',\n [10 /* ErrorCodes.APP_ERROR_HANDLER */]: 'app errorHandler',\n [11 /* ErrorCodes.APP_WARN_HANDLER */]: 'app warnHandler',\n [12 /* ErrorCodes.FUNCTION_REF */]: 'ref function',\n [13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */]: 'async component loader',\n [14 /* ErrorCodes.SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +\n 'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n let res;\n try {\n res = args ? fn(...args) : fn();\n }\n catch (err) {\n handleError(err, instance, type);\n }\n return res;\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch(err => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n // the exposed instance is the render proxy to keep it consistent with 2.x\n const exposedInstance = instance.proxy;\n // in production the hook receives only the error code\n const errorInfo = (process.env.NODE_ENV !== 'production') ? ErrorTypeStrings[type] : type;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n // app-level handling\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n callWithErrorHandling(appErrorHandler, null, 10 /* ErrorCodes.APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if ((process.env.NODE_ENV !== 'production')) {\n const info = ErrorTypeStrings[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n // crash in dev by default so it's more noticeable\n if (throwInDev) {\n throw err;\n }\n else {\n console.error(err);\n }\n }\n else {\n // recover in prod to reduce the impact on end-user\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /*#__PURE__*/ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\n// #2768\n// Use binary-search to find a suitable position in the queue,\n// so that the queue maintains the increasing order of job's id,\n// which can prevent the job from being skipped and also can avoid repeated patching.\nfunction findInsertionIndex(id) {\n // the start index should be `flushIndex + 1`\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = (start + end) >>> 1;\n const middleJobId = getId(queue[middle]);\n middleJobId < id ? (start = middle + 1) : (end = middle);\n }\n return start;\n}\nfunction queueJob(job) {\n // the dedupe search uses the startIndex argument of Array.includes()\n // by default the search index includes the current job that is being run\n // so it cannot recursively trigger itself again.\n // if the job is a watch() callback, the search will start with a +1 index to\n // allow it recursively trigger itself - it is the user's responsibility to\n // ensure it doesn't end up in an infinite loop.\n if (!queue.length ||\n !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {\n if (job.id == null) {\n queue.push(job);\n }\n else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs ||\n !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {\n pendingPostFlushCbs.push(cb);\n }\n }\n else {\n // if cb is an array, it is a component lifecycle hook which can only be\n // triggered by a job, which is already deduped in the main queue, so\n // we can skip duplicate check here to improve perf\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(seen, \n// if currently flushing, skip the current job itself\ni = isFlushing ? flushIndex + 1 : 0) {\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if ((process.env.NODE_ENV !== 'production') && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)];\n pendingPostFlushCbs.length = 0;\n // #1947 already has active queue, nested flushPostFlushCbs call\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n activePostFlushCbs.sort((a, b) => getId(a) - getId(b));\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if ((process.env.NODE_ENV !== 'production') &&\n checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if ((process.env.NODE_ENV !== 'production')) {\n seen = seen || new Map();\n }\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child so its render effect will have smaller\n // priority number)\n // 2. If a component is unmounted during a parent component's update,\n // its update can be skipped.\n queue.sort(comparator);\n // conditional usage of checkRecursiveUpdate must be determined out of\n // try ... catch block since Rollup by default de-optimizes treeshaking\n // inside try-catch. This can leave all warning code unshaked. Although\n // they would get eventually shaken by a minifier like terser, some minifiers\n // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)\n const check = (process.env.NODE_ENV !== 'production')\n ? (job) => checkRecursiveUpdates(seen, job)\n : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if ((process.env.NODE_ENV !== 'production') && check(job)) {\n continue;\n }\n // console.log(`running:`, job.id)\n callWithErrorHandling(job, null, 14 /* ErrorCodes.SCHEDULER */);\n }\n }\n }\n finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n // some postFlushCb queued jobs!\n // keep flushing until it drains.\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n }\n else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n warn(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +\n `This means you have a reactive effect that is mutating its own ` +\n `dependencies and thus recursively triggering itself. Possible sources ` +\n `include component template, render function, updated hook or ` +\n `watcher source function.`);\n return true;\n }\n else {\n seen.set(fn, count + 1);\n }\n }\n}\n\n/* eslint-disable no-restricted-globals */\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = new Set();\n// Expose the HMR runtime on the global object\n// This makes it entirely tree-shakable without polluting the exports and makes\n// it easier to be used in toolings like vue-loader\n// Note: for a component to be eligible for HMR it also needs the __hmrId option\n// to be set so that its instances can be registered / removed.\nif ((process.env.NODE_ENV !== 'production')) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n // update initial record (for not-yet-rendered component)\n record.initialDef.render = newRender;\n [...record.instances].forEach(instance => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n // this flag forces child components with slot content to update\n isHmrUpdating = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n // update initial def (for not-yet-rendered components)\n updateComponentDef(record.initialDef, newComp);\n // create a snapshot which avoids the set being mutated during updates\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n // 1. Update existing comp definition to match new one\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n // 2. mark definition dirty. This forces the renderer to replace the\n // component on patch.\n hmrDirtyComponents.add(oldComp);\n }\n // 3. invalidate options resolution cache\n instance.appContext.optionsCache.delete(instance.type);\n // 4. actually update\n if (instance.ceReload) {\n // custom element\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n }\n else if (instance.parent) {\n // 4. Force the parent instance to re-render. This will cause all updated\n // components to be unmounted and re-mounted. Queue the update so that we\n // don't end up forcing the same parent to re-render multiple times.\n queueJob(instance.parent.update);\n }\n else if (instance.appContext.reload) {\n // root instance mounted via createApp() has a reload method\n instance.appContext.reload();\n }\n else if (typeof window !== 'undefined') {\n // root instance inside tree created via raw render(). Force reload.\n window.location.reload();\n }\n else {\n console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');\n }\n }\n // 5. make sure to cleanup dirty hmr components after update\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(normalizeClassComponent(instance.type));\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== '__file' && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n }\n catch (e) {\n console.error(e);\n console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +\n `Full reload required.`);\n }\n };\n}\n\nlet devtools;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit(event, ...args) {\n if (devtools) {\n devtools.emit(event, ...args);\n }\n else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook(hook, target) {\n var _a, _b;\n devtools = hook;\n if (devtools) {\n devtools.enabled = true;\n buffer.forEach(({ event, args }) => devtools.emit(event, ...args));\n buffer = [];\n }\n else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== 'undefined' &&\n // some envs mock window but not fully\n window.HTMLElement &&\n // also exclude jsdom\n !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {\n const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);\n replay.push((newHook) => {\n setDevtoolsHook(newHook, target);\n });\n // clear buffer after 3s - the user probably doesn't have devtools installed\n // at all, and keeping the buffer will cause memory leaks (#4738)\n setTimeout(() => {\n if (!devtools) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3000);\n }\n else {\n // non-browser env, assume not installed\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit(\"app:init\" /* DevtoolsHooks.APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit(\"app:unmount\" /* DevtoolsHooks.APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook(\"component:added\" /* DevtoolsHooks.COMPONENT_ADDED */);\nconst devtoolsComponentUpdated = \n/*#__PURE__*/ createDevtoolsComponentHook(\"component:updated\" /* DevtoolsHooks.COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /*#__PURE__*/ createDevtoolsComponentHook(\"component:removed\" /* DevtoolsHooks.COMPONENT_REMOVED */);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools &&\n typeof devtools.cleanupBuffer === 'function' &&\n // remove the component if it wasn't buffered\n !devtools.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);\n };\n}\nconst devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:start\" /* DevtoolsHooks.PERFORMANCE_START */);\nconst devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook(\"perf:end\" /* DevtoolsHooks.PERFORMANCE_END */);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit(\"component:emit\" /* DevtoolsHooks.COMPONENT_EMIT */, component.appContext.app, component, event, params);\n}\n\nfunction emit$1(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if ((process.env.NODE_ENV !== 'production')) {\n const { emitsOptions, propsOptions: [propsOptions] } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) &&\n !(false )) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn(`Component emitted event \"${event}\" but it is neither declared in ` +\n `the emits option nor as an \"${toHandlerKey(event)}\" prop.`);\n }\n }\n else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn(`Invalid event arguments: event validation failed for event \"${event}\".`);\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith('update:');\n // for v-model update:xxx events, apply modifiers on args\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map(a => (isString(a) ? a.trim() : a));\n }\n if (number) {\n args = rawArgs.map(toNumber);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn(`Event \"${lowerCaseEvent}\" is emitted in component ` +\n `${formatComponentName(instance, instance.type)} but the handler is registered for \"${event}\". ` +\n `Note that HTML attributes are case-insensitive and you cannot use ` +\n `v-on to listen to camelCase events when using in-DOM templates. ` +\n `You should probably use \"${hyphenate(event)}\" instead of \"${event}\".`);\n }\n }\n let handlerName;\n let handler = props[(handlerName = toHandlerKey(event))] ||\n // also try camelCase event handler (#2249)\n props[(handlerName = toHandlerKey(camelize(event)))];\n // for v-model update:xxx events, also trigger kebab-case equivalent\n // for props passed via kebab-case\n if (!handler && isModelListener) {\n handler = props[(handlerName = toHandlerKey(hyphenate(event)))];\n }\n if (handler) {\n callWithAsyncErrorHandling(handler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n }\n else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(onceHandler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== undefined) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach(key => (normalized[key] = null));\n }\n else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\n// Check if an incoming prop key is a declared emit event listener.\n// e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are\n// both considered matched listeners.\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, '');\n return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||\n hasOwn(options, hyphenate(key)) ||\n hasOwn(options, key));\n}\n\n/**\n * mark the current rendering instance for asset resolution (e.g.\n * resolveComponent, resolveDirective) during render\n */\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\n/**\n * Note: rendering calls maybe nested. The function returns the parent rendering\n * instance if present, which should be restored after the render is done:\n *\n * ```js\n * const prev = setCurrentRenderingInstance(i)\n * // ...render\n * setCurrentRenderingInstance(prev)\n * ```\n */\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = (instance && instance.type.__scopeId) || null;\n return prev;\n}\n/**\n * Set scope id when creating hoisted vnodes.\n * @private compiler helper\n */\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\n/**\n * Technically we no longer need this after 3.0.8 but we need to keep the same\n * API for backwards compat w/ code generated by compilers.\n * @private\n */\nfunction popScopeId() {\n currentScopeId = null;\n}\n/**\n * Only for backwards compat\n * @private\n */\nconst withScopeId = (_id) => withCtx;\n/**\n * Wrap a slot function to memoize current rendering instance\n * @private compiler helper\n */\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only\n) {\n if (!ctx)\n return fn;\n // already normalized\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n // If a user calls a compiled slot inside a template expression (#1745), it\n // can mess up block tracking, so by default we disable block tracking and\n // force bail out when invoking a compiled slot (indicated by the ._d flag).\n // This isn't necessary if rendering a compiled `<slot>`, so we flip the\n // ._d flag off when invoking the wrapped fn inside `renderSlot`.\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n }\n finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n // mark normalized to avoid duplicated wrapping\n renderFnWithContext._n = true;\n // mark this as compiled by default\n // this is used in vnode.ts -> normalizeChildren() to set the slot\n // rendering flag.\n renderFnWithContext._c = true;\n // disable block tracking by default\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\n/**\n * dev only flag to track whether $attrs was used during render.\n * If $attrs was used during render then the warning for failed attrs\n * fallthrough can be suppressed.\n */\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) {\n // withProxy is a proxy with a different `has` trap only for\n // runtime-compiled render functions using `with` block.\n const proxyToUse = withProxy || proxy;\n result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));\n fallthroughAttrs = attrs;\n }\n else {\n // functional\n const render = Component;\n // in dev, mark attrs accessed if optional props (attrs === props)\n if ((process.env.NODE_ENV !== 'production') && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(render.length > 1\n ? render(props, (process.env.NODE_ENV !== 'production')\n ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n }\n : { attrs, slots, emit })\n : render(props, null /* we know it doesn't need it */));\n fallthroughAttrs = Component.props\n ? attrs\n : getFunctionalFallthrough(attrs);\n }\n }\n catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1 /* ErrorCodes.RENDER_FUNCTION */);\n result = createVNode(Comment);\n }\n // attr merging\n // in dev mode, comments are preserved, and it's possible for a template\n // to have comments along side the root element which makes it a fragment\n let root = result;\n let setRoot = undefined;\n if ((process.env.NODE_ENV !== 'production') &&\n result.patchFlag > 0 &&\n result.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 6 /* ShapeFlags.COMPONENT */)) {\n if (propsOptions && keys.some(isModelListener)) {\n // If a v-model listener (onUpdate:xxx) has a corresponding declared\n // prop, it indicates this component expects to handle v-model and\n // it should not fallthrough.\n // related: #1543, #1643, #1989\n fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);\n }\n root = cloneVNode(root, fallthroughAttrs);\n }\n else if ((process.env.NODE_ENV !== 'production') && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n // ignore v-model handlers when they fail to fallthrough\n if (!isModelListener(key)) {\n // remove `on`, lowercase first letter to reflect event casing\n // accurately\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n }\n else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn(`Extraneous non-props attributes (` +\n `${extraAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes.`);\n }\n if (eventAttrs.length) {\n warn(`Extraneous non-emits event listeners (` +\n `${eventAttrs.join(', ')}) ` +\n `were passed to component but could not be automatically inherited ` +\n `because component renders fragment or text root nodes. ` +\n `If the listener is intended to be a component custom event listener only, ` +\n `declare it using the \"emits\" option.`);\n }\n }\n }\n }\n // inherit directives\n if (vnode.dirs) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Runtime directive used on component with non-element root node. ` +\n `The directives will not function as intended.`);\n }\n // clone before mutating since the root may be a hoisted vnode\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n // inherit transition data\n if (vnode.transition) {\n if ((process.env.NODE_ENV !== 'production') && !isElementRoot(root)) {\n warn(`Component inside <Transition> renders non-element root node ` +\n `that cannot be animated.`);\n }\n root.transition = vnode.transition;\n }\n if ((process.env.NODE_ENV !== 'production') && setRoot) {\n setRoot(root);\n }\n else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\n/**\n * dev only\n * In dev mode, template root level comments are rendered, which turns the\n * template into a fragment root, but we need to locate the single element\n * root for attrs and scope id processing.\n */\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren);\n if (!childRoot) {\n return [vnode, undefined];\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n }\n else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n // ignore user comment\n if (child.type !== Comment || child.children === 'v-if') {\n if (singleRoot) {\n // has more than 1 non-comment child, return now\n return;\n }\n else {\n singleRoot = child;\n }\n }\n }\n else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === 'class' || key === 'style' || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return (vnode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 1 /* ShapeFlags.ELEMENT */) ||\n vnode.type === Comment // potential v-if branch switch\n );\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n // Parent component's render function was hot-updated. Since this may have\n // caused the child component's slots content to have changed, we need to\n // force the child to update as well.\n if ((process.env.NODE_ENV !== 'production') && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n // force child update for runtime directive or transition on component vnode.\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024 /* PatchFlags.DYNAMIC_SLOTS */) {\n // slot content that references values that might have changed,\n // e.g. in a v-for\n return true;\n }\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n if (!prevProps) {\n return !!nextProps;\n }\n // presence of this flag indicates props are always non-null\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n else if (patchFlag & 8 /* PatchFlags.PROPS */) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n }\n else {\n // this path is only taken by manually written render functions\n // so presence of any children leads to a forced update\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] &&\n !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el // HostNode\n) {\n while (parent && parent.subTree === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n }\n}\n\nconst isSuspense = (type) => type.__isSuspense;\n// Suspense exposes a component-like API, and is treated like a component\n// in the compiler, but internally it's a special built-in type that hooks\n// directly into the renderer.\nconst SuspenseImpl = {\n name: 'Suspense',\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, \n // platform-specific impl passed from renderer\n rendererInternals) {\n if (n1 == null) {\n mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n else {\n patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\n// Force-casted public typing for h and TSX props inference\nconst Suspense = (SuspenseImpl\n );\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {\n const { p: patch, o: { createElement } } = rendererInternals;\n const hiddenContainer = createElement('div');\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));\n // start mounting the content subtree in an off-dom container\n patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);\n // now check if we have encountered any async deps\n if (suspense.deps > 0) {\n // has async\n // invoke @fallback event\n triggerEvent(vnode, 'onPending');\n triggerEvent(vnode, 'onFallback');\n // mount the fallback tree\n patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds);\n setActiveBranch(suspense, vnode.ssFallback);\n }\n else {\n // Suspense has no async deps. Just resolve.\n suspense.resolve();\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = (n2.suspense = n1.suspense);\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n // same root type but content may have changed.\n patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else if (isInFallback) {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else {\n // toggled before pending tree is resolved\n suspense.pendingId++;\n if (isHydrating) {\n // if toggled before hydration is finished, the current DOM tree is\n // no longer valid. set it as the active branch so it will be unmounted\n // when resolved\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n }\n else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n // increment pending ID. this is used to invalidate async callbacks\n // reset suspense state\n suspense.deps = 0;\n // discard effects from pending branch\n suspense.effects.length = 0;\n // discard previous container\n suspense.hiddenContainer = createElement('div');\n if (isInFallback) {\n // already in fallback state\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n else {\n patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newFallback);\n }\n }\n else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // toggled \"back\" to current active branch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n // force resolve\n suspense.resolve(true);\n }\n else {\n // switched to a 3rd branch\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n }\n else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n // root did not change, just normal patch\n patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, newBranch);\n }\n else {\n // root node toggled\n // invoke @pending event\n triggerEvent(n2, 'onPending');\n // mount pending branch in off-dom container\n suspense.pendingBranch = newBranch;\n suspense.pendingId++;\n patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);\n if (suspense.deps <= 0) {\n // incoming branch has no async deps, resolve now.\n suspense.resolve();\n }\n else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n }\n else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n /* istanbul ignore if */\n if ((process.env.NODE_ENV !== 'production') && !false && !hasWarned) {\n hasWarned = true;\n // @ts-ignore `console.info` cannot be null error\n console[console.info ? 'info' : 'log'](`<Suspense> is an experimental feature and its API will likely change.`);\n }\n const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;\n const timeout = toNumber(vnode.props && vnode.props.timeout);\n const suspense = {\n vnode,\n parent,\n parentComponent,\n isSVG,\n container,\n hiddenContainer,\n anchor,\n deps: 0,\n pendingId: 0,\n timeout: typeof timeout === 'number' ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: true,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false) {\n if ((process.env.NODE_ENV !== 'production')) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(`suspense.resolve() is called without a pending branch.`);\n }\n if (suspense.isUnmounted) {\n throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);\n }\n }\n const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n }\n else if (!resume) {\n const delayEnter = activeBranch &&\n pendingBranch.transition &&\n pendingBranch.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n };\n }\n // this is initial anchor on mount\n let { anchor } = suspense;\n // unmount current active tree\n if (activeBranch) {\n // if the fallback tree was mounted, it may have been moved\n // as part of a parent suspense. get the latest anchor for insertion\n anchor = next(activeBranch);\n unmount(activeBranch, parentComponent, suspense, true);\n }\n if (!delayEnter) {\n // move content from off-dom container to actual container\n move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n // flush buffered effects\n // check if there is a pending parent suspense\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n // found a pending parent suspense, merge buffered post jobs\n // into that parent\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n // no pending parent suspense, flush all jobs\n if (!hasUnresolvedAncestor) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n // invoke @resolve event\n triggerEvent(vnode, 'onResolve');\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;\n // invoke @fallback event\n triggerEvent(vnode, 'onFallback');\n const anchor = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n // mount the fallback tree\n patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context\n isSVG, slotScopeIds, optimized);\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n // unmount current active branch\n unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now\n true // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container, anchor, type) {\n suspense.activeBranch &&\n move(suspense.activeBranch, container, anchor, type);\n suspense.container = container;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance\n .asyncDep.catch(err => {\n handleError(err, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n })\n .then(asyncSetupResult => {\n // retry when the setup() promise resolves.\n // component may have been unmounted before resolve.\n if (instance.isUnmounted ||\n suspense.isUnmounted ||\n suspense.pendingId !== instance.suspenseId) {\n return;\n }\n // retry from this component\n instance.asyncResolved = true;\n const { vnode } = instance;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(vnode);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n // vnode may have been replaced if an update happened before the\n // async dep is resolved.\n vnode.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(instance, vnode, \n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el), \n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode.el);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n // only decrease deps count if suspense is not already resolved\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);\n }\n if (suspense.pendingBranch) {\n unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n /* eslint-disable no-restricted-globals */\n const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));\n // there are two possible scenarios for server-rendered suspense:\n // - success: ssr content should be fully resolved\n // - failure: ssr content should be the fallback branch.\n // however, on the client we don't really know if it has failed or not\n // attempt to hydrate the DOM assuming it has succeeded, but we still\n // need to construct a suspense boundary first\n const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);\n if (suspense.deps === 0) {\n suspense.resolve();\n }\n return result;\n /* eslint-enable no-restricted-globals */\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */;\n vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);\n vnode.ssFallback = isSlotChildren\n ? normalizeSuspenseSlot(children.fallback)\n : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n // disableTracking: false\n // allow block tracking for compiled slots\n // (see ./componentRenderContext.ts)\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if ((process.env.NODE_ENV !== 'production') && !singleChild) {\n warn(`<Suspense> slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter(c => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n }\n else {\n suspense.effects.push(fn);\n }\n }\n else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n const el = (vnode.el = branch.el);\n // in case suspense is the root node of a component,\n // recursively update the HOC el\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\n\nfunction provide(key, value) {\n if (!currentInstance) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`provide() can only be used inside setup().`);\n }\n }\n else {\n let provides = currentInstance.provides;\n // by default an instance inherits its parent's provides object\n // but when it needs to provide values of its own, it creates its\n // own provides object using parent provides object as prototype.\n // this way in `inject` we can simply look up injections from direct\n // parent and let the prototype chain do the work.\n const parentProvides = currentInstance.parent && currentInstance.parent.provides;\n if (parentProvides === provides) {\n provides = currentInstance.provides = Object.create(parentProvides);\n }\n // TS doesn't allow symbol as index type\n provides[key] = value;\n }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory = false) {\n // fallback to `currentRenderingInstance` so that this can be called in\n // a functional component\n const instance = currentInstance || currentRenderingInstance;\n if (instance) {\n // #2400\n // to support `app.use` plugins,\n // fallback to appContext's `provides` if the instance is at root\n const provides = instance.parent == null\n ? instance.vnode.appContext && instance.vnode.appContext.provides\n : instance.parent.provides;\n if (provides && key in provides) {\n // TS doesn't allow symbol as index type\n return provides[key];\n }\n else if (arguments.length > 1) {\n return treatDefaultAsFactory && isFunction(defaultValue)\n ? defaultValue.call(instance.proxy)\n : defaultValue;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`injection \"${String(key)}\" not found.`);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`inject() can only be used inside setup() or functional components.`);\n }\n}\n\n// Simple effect.\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(effect, null, ((process.env.NODE_ENV !== 'production')\n ? Object.assign(Object.assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nconst INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(cb)) {\n warn(`\\`watch(fn, options?)\\` signature has been moved to a separate API. ` +\n `Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only ` +\n `supports \\`watch(source, cb, options?) signature.`);\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {\n if ((process.env.NODE_ENV !== 'production') && !cb) {\n if (immediate !== undefined) {\n warn(`watch() \"immediate\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n if (deep !== undefined) {\n warn(`watch() \"deep\" option is only respected when using the ` +\n `watch(source, callback, options?) signature.`);\n }\n }\n const warnInvalidSource = (s) => {\n warn(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +\n `a reactive object, or an array of these types.`);\n };\n const instance = currentInstance;\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow$1(source);\n }\n else if (isReactive(source)) {\n getter = () => source;\n deep = true;\n }\n else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some(s => isReactive(s) || isShallow$1(s));\n getter = () => source.map(s => {\n if (isRef(s)) {\n return s.value;\n }\n else if (isReactive(s)) {\n return traverse(s);\n }\n else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(s);\n }\n });\n }\n else if (isFunction(source)) {\n if (cb) {\n // getter with cb\n getter = () => callWithErrorHandling(source, instance, 2 /* ErrorCodes.WATCH_GETTER */);\n }\n else {\n // no cb -> simple effect\n getter = () => {\n if (instance && instance.isUnmounted) {\n return;\n }\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(source, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [onCleanup]);\n };\n }\n }\n else {\n getter = NOOP;\n (process.env.NODE_ENV !== 'production') && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4 /* ErrorCodes.WATCH_CLEANUP */);\n };\n };\n // in SSR there is no need to setup an actual effect, and it should be noop\n // unless it's eager or sync flush\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n // we will also not call the invalidate callback (+ runner is not set up)\n onCleanup = NOOP;\n if (!cb) {\n getter();\n }\n else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n getter(),\n isMultiSource ? [] : undefined,\n onCleanup\n ]);\n }\n if (flush === 'sync') {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n }\n else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource\n ? new Array(source.length).fill(INITIAL_WATCHER_VALUE)\n : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active) {\n return;\n }\n if (cb) {\n // watch(source, cb)\n const newValue = effect.run();\n if (deep ||\n forceTrigger ||\n (isMultiSource\n ? newValue.some((v, i) => hasChanged(v, oldValue[i]))\n : hasChanged(newValue, oldValue)) ||\n (false )) {\n // cleanup before running cb again\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE\n ? undefined\n : (isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE)\n ? []\n : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n }\n else {\n // watchEffect\n effect.run();\n }\n };\n // important: mark the job as a watcher callback so that scheduler knows\n // it is allowed to self-trigger (#1727)\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === 'sync') {\n scheduler = job; // the scheduler function gets called directly\n }\n else if (flush === 'post') {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n }\n else {\n // default: 'pre'\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, scheduler);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n // initial run\n if (cb) {\n if (immediate) {\n job();\n }\n else {\n oldValue = effect.run();\n }\n }\n else if (flush === 'post') {\n queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);\n }\n else {\n effect.run();\n }\n const unwatch = () => {\n effect.stop();\n if (instance && instance.scope) {\n remove(instance.scope.effects, effect);\n }\n };\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\n// this.$watch\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source)\n ? source.includes('.')\n ? createPathGetter(publicThis, source)\n : () => publicThis[source]\n : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n }\n else {\n cb = value.handler;\n options = value;\n }\n const cur = currentInstance;\n setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n if (cur) {\n setCurrentInstance(cur);\n }\n else {\n unsetCurrentInstance();\n }\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split('.');\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, seen) {\n if (!isObject(value) || value[\"__v_skip\" /* ReactiveFlags.SKIP */]) {\n return value;\n }\n seen = seen || new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, seen);\n }\n else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], seen);\n }\n }\n else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, seen);\n });\n }\n else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], seen);\n }\n }\n return value;\n}\n\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n let prevTransitionKey;\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n // locate first non-comment child\n for (const c of children) {\n if (c.type !== Comment) {\n if ((process.env.NODE_ENV !== 'production') && hasFound) {\n // warn more than one non-comment child\n warn('<transition> can only be used on a single element or component. ' +\n 'Use <transition-group> for lists.');\n break;\n }\n child = c;\n hasFound = true;\n if (!(process.env.NODE_ENV !== 'production'))\n break;\n }\n }\n }\n // there's no need to track reactivity for these props so use the raw\n // props for a bit better perf\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n // check mode\n if ((process.env.NODE_ENV !== 'production') &&\n mode &&\n mode !== 'in-out' &&\n mode !== 'out-in' &&\n mode !== 'default') {\n warn(`invalid <transition> mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n // in the case of <transition><keep-alive/></transition>, we need to\n // compare the type of the kept-alive children.\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n let transitionKeyChanged = false;\n const { getTransitionKey } = innerChild.type;\n if (getTransitionKey) {\n const key = getTransitionKey();\n if (prevTransitionKey === undefined) {\n prevTransitionKey = key;\n }\n else if (key !== prevTransitionKey) {\n prevTransitionKey = key;\n transitionKeyChanged = true;\n }\n }\n // handle mode\n if (oldInnerChild &&\n oldInnerChild.type !== Comment &&\n (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {\n const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);\n // update old tree's hooks in case of dynamic transition\n setTransitionHooks(oldInnerChild, leavingHooks);\n // switching between different views\n if (mode === 'out-in') {\n state.isLeaving = true;\n // return placeholder node and queue update when leave finishes\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n // #6835\n // it also needs to be updated when active is undefined\n if (instance.update.active !== false) {\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n }\n else if (mode === 'in-out' && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n // early removal callback\n el._leaveCb = () => {\n earlyRemove();\n el._leaveCb = undefined;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\n// The transition hooks are attached to the vnode as vnode.transition\n// and will be called at appropriate timing in the renderer.\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook &&\n callWithAsyncErrorHandling(hook, instance, 9 /* ErrorCodes.TRANSITION_HOOK */, args);\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every(hook => hook.length <= 1))\n done();\n }\n else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n }\n else {\n return;\n }\n }\n // for same element (v-show)\n if (el._leaveCb) {\n el._leaveCb(true /* cancelled */);\n }\n // for toggled element with same key (v-if)\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode &&\n isSameVNodeType(vnode, leavingVNode) &&\n leavingVNode.el._leaveCb) {\n // force early removal (not cancelled)\n leavingVNode.el._leaveCb();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n }\n else {\n return;\n }\n }\n let called = false;\n const done = (el._enterCb = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n }\n else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el._enterCb = undefined;\n });\n if (hook) {\n callAsyncHook(hook, [el, done]);\n }\n else {\n done();\n }\n },\n leave(el, remove) {\n const key = String(vnode.key);\n if (el._enterCb) {\n el._enterCb(true /* cancelled */);\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = (el._leaveCb = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n }\n else {\n callHook(onAfterLeave, [el]);\n }\n el._leaveCb = undefined;\n if (leavingVNodesCache[key] === vnode) {\n delete leavingVNodesCache[key];\n }\n });\n leavingVNodesCache[key] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n }\n else {\n done();\n }\n },\n clone(vnode) {\n return resolveTransitionHooks(vnode, props, state, instance);\n }\n };\n return hooks;\n}\n// the placeholder really only handles one special case: KeepAlive\n// in the case of a KeepAlive in a leave phase we need to return a KeepAlive\n// placeholder with empty content to avoid the KeepAlive instance from being\n// unmounted.\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode)\n ? vnode.children\n ? vnode.children[0]\n : undefined\n : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */ && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n }\n else if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n }\n else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n // #5360 inherit parent key in case of <template v-for>\n const key = parentKey == null\n ? child.key\n : String(parentKey) + String(child.key != null ? child.key : i);\n // handle fragment children case, e.g. v-for\n if (child.type === Fragment) {\n if (child.patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */)\n keyedFragmentCount++;\n ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));\n }\n // comment placeholders should be skipped, e.g. v-if\n else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n // #1126 if a transition children list contains multiple sub fragments, these\n // fragments will be merged into a flat children array. Since each v-for\n // fragment may contain different static bindings inside, we need to de-op\n // these children to force full diffs to ensure correct behavior.\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2 /* PatchFlags.BAIL */;\n }\n }\n return ret;\n}\n\n// implementation, close to no-op\nfunction defineComponent(options) {\n return isFunction(options) ? { setup: options, name: options.name } : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out\n suspensible = true, onError: userOnError } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return (pendingRequest ||\n (thisRequest = pendingRequest =\n loader()\n .catch(err => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n }\n else {\n throw err;\n }\n })\n .then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if ((process.env.NODE_ENV !== 'production') && !comp) {\n warn(`Async component loader resolved to undefined. ` +\n `If you are using retry(), make sure to return its return value.`);\n }\n // interop module default\n if (comp &&\n (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\n comp = comp.default;\n }\n if ((process.env.NODE_ENV !== 'production') && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n })));\n };\n return defineComponent({\n name: 'AsyncComponentWrapper',\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n // already resolved\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(err, instance, 13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);\n };\n // suspense-controlled or SSR.\n if ((suspensible && instance.suspense) ||\n (isInSSRComponentSetup)) {\n return load()\n .then(comp => {\n return () => createInnerComp(comp, instance);\n })\n .catch(err => {\n onError(err);\n return () => errorComponent\n ? createVNode(errorComponent, {\n error: err\n })\n : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(`Async component timed out after ${timeout}ms.`);\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load()\n .then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n // parent is keep-alive, force update so the loaded component's\n // name is taken into account\n queueJob(instance.parent.update);\n }\n })\n .catch(err => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n }\n else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n }\n else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n // ensure inner component inherits the async wrapper's ref owner\n vnode.ref = ref;\n // pass the custom element callback on to the inner comp\n // and remove it from the async wrapper\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n // KeepAlive communicates with the instantiated renderer via the\n // ctx where the renderer passes in its internals,\n // and the KeepAlive instance exposes activate/deactivate implementations.\n // The whole point of this is to avoid importing KeepAlive directly in the\n // renderer to facilitate tree-shaking.\n const sharedContext = instance.ctx;\n // if the internal renderer is not registered, it indicates that this is server-side rendering,\n // for KeepAlive, we just need to render its children\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = new Map();\n const keys = new Set();\n let current = null;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;\n const storageContainer = createElement('div');\n sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {\n const instance = vnode.component;\n move(vnode, container, anchor, 0 /* MoveType.ENTER */, parentSuspense);\n // in case props have changed\n patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);\n queuePostRenderEffect(() => {\n instance.isDeactivated = false;\n if (instance.a) {\n invokeArrayFns(instance.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance = vnode.component;\n move(vnode, storageContainer, null, 1 /* MoveType.LEAVE */, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance.da) {\n invokeArrayFns(instance.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance.parent, vnode);\n }\n instance.isDeactivated = true;\n }, parentSuspense);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n // Update components tree\n devtoolsComponentAdded(instance);\n }\n };\n function unmount(vnode) {\n // reset the shapeFlag so it can be properly unmounted\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || cached.type !== current.type) {\n unmount(cached);\n }\n else if (current) {\n // current active instance should no longer be kept-alive.\n // we can't unmount it now but it might be later, so reset its flag now.\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n // prune cache on include/exclude prop change\n watch(() => [props.include, props.exclude], ([include, exclude]) => {\n include && pruneCache(name => matches(include, name));\n exclude && pruneCache(name => !matches(exclude, name));\n }, \n // prune post-render after `current` has been updated\n { flush: 'post', deep: true });\n // cache sub tree after render\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n // fix #1621, the pendingCacheKey could be 0\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach(cached => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type) {\n // current instance will be unmounted as part of keep-alive's unmount\n resetShapeFlag(vnode);\n // but invoke its deactivated hook here\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n }\n else if (!isVNode(rawVNode) ||\n (!(rawVNode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) &&\n !(rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */))) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n // for async components, name check should be based in its loaded\n // inner component if available\n const name = getComponentName(isAsyncWrapper(vnode)\n ? vnode.type.__asyncResolved || {}\n : comp);\n const { include, exclude, max } = props;\n if ((include && (!name || !matches(include, name))) ||\n (exclude && name && matches(exclude, name))) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n // clone vnode if it's reused because we are going to mutate it\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n rawVNode.ssContent = vnode;\n }\n }\n // #1513 it's possible for the returned vnode to be cloned due to attr\n // fallthrough or scopeId, so the vnode here may not be the final vnode\n // that is mounted. Instead of caching it directly, we store the pending\n // key and cache `instance.subTree` (the normalized vnode) in\n // beforeMount/beforeUpdate hooks.\n pendingCacheKey = key;\n if (cachedVNode) {\n // copy over mounted state\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n // recursively update transition hooks on subTree\n setTransitionHooks(vnode, vnode.transition);\n }\n // avoid vnode being mounted as fresh\n vnode.shapeFlag |= 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n // make this key the freshest\n keys.delete(key);\n keys.add(key);\n }\n else {\n keys.add(key);\n // prune oldest entry\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n // avoid vnode being unmounted\n vnode.shapeFlag |= 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\n// export the public type for h/tsx inference\n// also to avoid inline import() in generated d.ts files\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n }\n else if (isString(pattern)) {\n return pattern.split(',').includes(name);\n }\n else if (pattern.test) {\n return pattern.test(name);\n }\n /* istanbul ignore next */\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\" /* LifecycleHooks.ACTIVATED */, target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\" /* LifecycleHooks.DEACTIVATED */, target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n // cache the deactivate branch check wrapper for injected hooks so the same\n // hook can be properly deduped by the scheduler. \"__wdc\" stands for \"with\n // deactivation check\".\n const wrappedHook = hook.__wdc ||\n (hook.__wdc = () => {\n // only fire the hook if the target instance is NOT in a deactivated branch.\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n // In addition to registering it on the target instance, we walk up the parent\n // chain and register it on all ancestor instances that are keep-alive roots.\n // This avoids the need to walk the entire component tree when invoking these\n // hooks, and more importantly, avoids the need to track child components in\n // arrays.\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n // injectHook wraps the original for error handling, so make sure to remove\n // the wrapped version.\n const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n // bitwise operations to remove keep alive flags\n vnode.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n vnode.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */ ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n // cache the error handling wrapper for injected hooks so the same hook\n // can be properly deduped by the scheduler. \"__weh\" stands for \"with error\n // handling\".\n const wrappedHook = hook.__weh ||\n (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n // Set currentInstance during hook invocation.\n // This assumes the hook does not synchronously trigger other hooks, which\n // can only be false when the user does something really funky.\n setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n unsetCurrentInstance();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n }\n else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ''));\n warn(`${apiName} is called when there is no active component instance to be ` +\n `associated with. ` +\n `Lifecycle injection APIs can only be used during execution of setup().` +\n (` If you are using async setup(), make sure to register lifecycle ` +\n `hooks before the first await statement.`\n ));\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => \n// post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n(!isInSSRComponentSetup || lifecycle === \"sp\" /* LifecycleHooks.SERVER_PREFETCH */) &&\n injectHook(lifecycle, (...args) => hook(...args), target);\nconst onBeforeMount = createHook(\"bm\" /* LifecycleHooks.BEFORE_MOUNT */);\nconst onMounted = createHook(\"m\" /* LifecycleHooks.MOUNTED */);\nconst onBeforeUpdate = createHook(\"bu\" /* LifecycleHooks.BEFORE_UPDATE */);\nconst onUpdated = createHook(\"u\" /* LifecycleHooks.UPDATED */);\nconst onBeforeUnmount = createHook(\"bum\" /* LifecycleHooks.BEFORE_UNMOUNT */);\nconst onUnmounted = createHook(\"um\" /* LifecycleHooks.UNMOUNTED */);\nconst onServerPrefetch = createHook(\"sp\" /* LifecycleHooks.SERVER_PREFETCH */);\nconst onRenderTriggered = createHook(\"rtg\" /* LifecycleHooks.RENDER_TRIGGERED */);\nconst onRenderTracked = createHook(\"rtc\" /* LifecycleHooks.RENDER_TRACKED */);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\" /* LifecycleHooks.ERROR_CAPTURED */, hook, target);\n}\n\n/**\nRuntime helper for applying directives to a vnode. Example usage:\n\nconst comp = resolveComponent('comp')\nconst foo = resolveDirective('foo')\nconst bar = resolveDirective('bar')\n\nreturn withDirectives(h(comp), [\n [foo, this.x],\n [bar, this.y]\n])\n*/\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn('Do not use built-in directive ids as custom directive id: ' + name);\n }\n}\n/**\n * Adds directives to a VNode.\n */\nfunction withDirectives(vnode, directives) {\n const internalInstance = currentRenderingInstance;\n if (internalInstance === null) {\n (process.env.NODE_ENV !== 'production') && warn(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(internalInstance) ||\n internalInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n // disable tracking inside all lifecycle hooks\n // since they can potentially be called inside effects.\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8 /* ErrorCodes.DIRECTIVE_HOOK */, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst COMPONENTS = 'components';\nconst DIRECTIVES = 'directives';\n/**\n * @private\n */\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol();\n/**\n * @private\n */\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n }\n else {\n // invalid types will fallthrough to createVNode and raise warning\n return (component || NULL_DYNAMIC_COMPONENT);\n }\n}\n/**\n * @private\n */\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\n// implementation\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n // explicit self name has highest priority\n if (type === COMPONENTS) {\n const selfName = getComponentName(Component, false /* do not include inferred name to avoid breaking existing code */);\n if (selfName &&\n (selfName === name ||\n selfName === camelize(name) ||\n selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = \n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) ||\n // global registration\n resolve(instance.appContext[type], name);\n if (!res && maybeSelfReference) {\n // fallback to implicit self-reference\n return Component;\n }\n if ((process.env.NODE_ENV !== 'production') && warnMissing && !res) {\n const extra = type === COMPONENTS\n ? `\\nIf this is a native custom element, make sure to exclude it from ` +\n `component resolution via compilerOptions.isCustomElement.`\n : ``;\n warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`resolve${capitalize(type.slice(0, -1))} ` +\n `can only be used in render() or setup().`);\n }\n}\nfunction resolve(registry, name) {\n return (registry &&\n (registry[name] ||\n registry[camelize(name)] ||\n registry[capitalize(camelize(name))]));\n}\n\n/**\n * Actual implementation\n */\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = (cache && cache[index]);\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, undefined, cached && cached[i]);\n }\n }\n else if (typeof source === 'number') {\n if ((process.env.NODE_ENV !== 'production') && !Number.isInteger(source)) {\n warn(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]);\n }\n }\n else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(source, (item, i) => renderItem(item, i, undefined, cached && cached[i]));\n }\n else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n }\n else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\n/**\n * Compiler runtime helper for creating dynamic slots object\n * @private\n */\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n // array of dynamic slot generated by <template v-for=\"...\" #[...]>\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n }\n else if (slot) {\n // conditional single slot generated by <template v-if=\"...\" #foo>\n slots[slot.name] = slot.key\n ? (...args) => {\n const res = slot.fn(...args);\n // attach branch key so each conditional branch is considered a\n // different fragment\n if (res)\n res.key = slot.key;\n return res;\n }\n : slot.fn;\n }\n }\n return slots;\n}\n\n/**\n * Compiler runtime helper for rendering `<slot/>`\n * @private\n */\nfunction renderSlot(slots, name, props = {}, \n// this is not a user-facing function, so the fallback is always generated by\n// the compiler and guaranteed to be a function returning an array\nfallback, noSlotted) {\n if (currentRenderingInstance.isCE ||\n (currentRenderingInstance.parent &&\n isAsyncWrapper(currentRenderingInstance.parent) &&\n currentRenderingInstance.parent.isCE)) {\n if (name !== 'default')\n props.name = name;\n return createVNode('slot', props, fallback && fallback());\n }\n let slot = slots[name];\n if ((process.env.NODE_ENV !== 'production') && slot && slot.length > 1) {\n warn(`SSR-optimized slot function detected in a non-SSR-optimized render ` +\n `function. You need to mark this component with $dynamic-slots in the ` +\n `parent template.`);\n slot = () => [];\n }\n // a compiled slot disables block tracking by default to avoid manual\n // invocation interfering with template-based block tracking, but in\n // `renderSlot` we can be sure that it's template-based so we can force\n // enable it.\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(Fragment, {\n key: props.key ||\n // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n (validSlotContent && validSlotContent.key) ||\n `_${name}`\n }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* SlotFlags.STABLE */\n ? 64 /* PatchFlags.STABLE_FRAGMENT */\n : -2 /* PatchFlags.BAIL */);\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + '-s'];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some(child => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment &&\n !ensureValidVNode(child.children))\n return false;\n return true;\n })\n ? vnodes\n : null;\n}\n\n/**\n * For prefixing keys in v-on=\"obj\" with \"on\"\n * @private\n */\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if ((process.env.NODE_ENV !== 'production') && !isObject(obj)) {\n warn(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key)\n ? `on:${key}`\n : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\n/**\n * #2437 In Vue 3, functional components do not have a public instance proxy but\n * they exist in the internal parent chain. For code that relies on traversing\n * public $parent chains, skip functional ones and go to the parent instead.\n */\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = \n// Move PURE marker to new line to workaround compiler discarding it\n// due to type annotation\n/*#__PURE__*/ extend(Object.create(null), {\n $: i => i,\n $el: i => i.vnode.el,\n $data: i => i.data,\n $props: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.props) : i.props),\n $attrs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.attrs) : i.attrs),\n $slots: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.slots) : i.slots),\n $refs: i => ((process.env.NODE_ENV !== 'production') ? shallowReadonly(i.refs) : i.refs),\n $parent: i => getPublicInstance(i.parent),\n $root: i => getPublicInstance(i.root),\n $emit: i => i.emit,\n $options: i => (__VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type),\n $forceUpdate: i => i.f || (i.f = () => queueJob(i.update)),\n $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: i => (__VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP)\n});\nconst isReservedPrefix = (key) => key === '_' || key === '$';\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n // for internal formatters to know that this is a Vue instance\n if ((process.env.NODE_ENV !== 'production') && key === '__isVue') {\n return true;\n }\n // data / props / ctx\n // This getter gets called for every property access on the render context\n // during render and is a major hotspot. The most expensive part of this\n // is the multiple hasOwn() calls. It's much faster to do a simple property\n // access on a plain object, so we use an accessCache object (with null\n // prototype) to memoize what access type a key corresponds to.\n let normalizedProps;\n if (key[0] !== '$') {\n const n = accessCache[key];\n if (n !== undefined) {\n switch (n) {\n case 1 /* AccessTypes.SETUP */:\n return setupState[key];\n case 2 /* AccessTypes.DATA */:\n return data[key];\n case 4 /* AccessTypes.CONTEXT */:\n return ctx[key];\n case 3 /* AccessTypes.PROPS */:\n return props[key];\n // default: just fallthrough\n }\n }\n else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* AccessTypes.SETUP */;\n return setupState[key];\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* AccessTypes.DATA */;\n return data[key];\n }\n else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) &&\n hasOwn(normalizedProps, key)) {\n accessCache[key] = 3 /* AccessTypes.PROPS */;\n return props[key];\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* AccessTypes.OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n // public $xxx properties\n if (publicGetter) {\n if (key === '$attrs') {\n track(instance, \"get\" /* TrackOpTypes.GET */, key);\n (process.env.NODE_ENV !== 'production') && markAttrsAccessed();\n }\n return publicGetter(instance);\n }\n else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) &&\n (cssModule = cssModule[key])) {\n return cssModule;\n }\n else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n // user may set custom properties to `this` that start with `$`\n accessCache[key] = 4 /* AccessTypes.CONTEXT */;\n return ctx[key];\n }\n else if (\n // global properties\n ((globalProperties = appContext.config.globalProperties),\n hasOwn(globalProperties, key))) {\n {\n return globalProperties[key];\n }\n }\n else if ((process.env.NODE_ENV !== 'production') &&\n currentRenderingInstance &&\n (!isString(key) ||\n // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf('__v') !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved ` +\n `character (\"$\" or \"_\") and is not proxied on the render context.`);\n }\n else if (instance === currentRenderingInstance) {\n warn(`Property ${JSON.stringify(key)} was accessed during render ` +\n `but is not defined on instance.`);\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n }\n else if ((process.env.NODE_ENV !== 'production') &&\n setupState.__isScriptSetup &&\n hasOwn(setupState, key)) {\n warn(`Cannot mutate <script setup> binding \"${key}\" from Options API.`);\n return false;\n }\n else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n data[key] = value;\n return true;\n }\n else if (hasOwn(instance.props, key)) {\n (process.env.NODE_ENV !== 'production') && warn(`Attempting to mutate prop \"${key}\". Props are readonly.`);\n return false;\n }\n if (key[0] === '$' && key.slice(1) in instance) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to mutate public property \"${key}\". ` +\n `Properties starting with $ are reserved and readonly.`);\n return false;\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && key in instance.appContext.config.globalProperties) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n value\n });\n }\n else {\n ctx[key] = value;\n }\n }\n return true;\n },\n has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {\n let normalizedProps;\n return (!!accessCache[key] ||\n (data !== EMPTY_OBJ && hasOwn(data, key)) ||\n hasSetupBinding(setupState, key) ||\n ((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||\n hasOwn(ctx, key) ||\n hasOwn(publicPropertiesMap, key) ||\n hasOwn(appContext.config.globalProperties, key));\n },\n defineProperty(target, key, descriptor) {\n if (descriptor.get != null) {\n // invalidate key cache of a getter based property #5417\n target._.accessCache[key] = 0;\n }\n else if (hasOwn(descriptor, 'value')) {\n this.set(target, key, descriptor.value, null);\n }\n return Reflect.defineProperty(target, key, descriptor);\n }\n};\nif ((process.env.NODE_ENV !== 'production') && !false) {\n PublicInstanceProxyHandlers.ownKeys = (target) => {\n warn(`Avoid app logic that relies on enumerating keys on a component instance. ` +\n `The keys will be empty in production mode to avoid performance overhead.`);\n return Reflect.ownKeys(target);\n };\n}\nconst RuntimeCompiledPublicInstanceProxyHandlers = /*#__PURE__*/ extend({}, PublicInstanceProxyHandlers, {\n get(target, key) {\n // fast path for unscopables when using `with` block\n if (key === Symbol.unscopables) {\n return;\n }\n return PublicInstanceProxyHandlers.get(target, key, target);\n },\n has(_, key) {\n const has = key[0] !== '_' && !isGloballyWhitelisted(key);\n if ((process.env.NODE_ENV !== 'production') && !has && PublicInstanceProxyHandlers.has(_, key)) {\n warn(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`);\n }\n return has;\n }\n});\n// dev only\n// In dev mode, the proxy target exposes the same properties as seen on `this`\n// for easier console inspection. In prod mode it will be an empty object so\n// these properties definitions can be skipped.\nfunction createDevRenderContext(instance) {\n const target = {};\n // expose internal instance for proxy handlers\n Object.defineProperty(target, `_`, {\n configurable: true,\n enumerable: false,\n get: () => instance\n });\n // expose public properties\n Object.keys(publicPropertiesMap).forEach(key => {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get: () => publicPropertiesMap[key](instance),\n // intercepted by the proxy so no need for implementation,\n // but needed to prevent set errors\n set: NOOP\n });\n });\n return target;\n}\n// dev only\nfunction exposePropsOnRenderContext(instance) {\n const { ctx, propsOptions: [propsOptions] } = instance;\n if (propsOptions) {\n Object.keys(propsOptions).forEach(key => {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => instance.props[key],\n set: NOOP\n });\n });\n }\n}\n// dev only\nfunction exposeSetupStateOnRenderContext(instance) {\n const { ctx, setupState } = instance;\n Object.keys(toRaw(setupState)).forEach(key => {\n if (!setupState.__isScriptSetup) {\n if (isReservedPrefix(key[0])) {\n warn(`setup() return property ${JSON.stringify(key)} should not start with \"$\" or \"_\" ` +\n `which are reserved prefixes for Vue internals.`);\n return;\n }\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => setupState[key],\n set: NOOP\n });\n }\n });\n}\n\nfunction createDuplicateChecker() {\n const cache = Object.create(null);\n return (type, key) => {\n if (cache[key]) {\n warn(`${type} property \"${key}\" is already defined in ${cache[key]}.`);\n }\n else {\n cache[key] = type;\n }\n };\n}\nlet shouldCacheAccess = true;\nfunction applyOptions(instance) {\n const options = resolveMergedOptions(instance);\n const publicThis = instance.proxy;\n const ctx = instance.ctx;\n // do not cache property access on public proxy during state initialization\n shouldCacheAccess = false;\n // call beforeCreate first before accessing other options since\n // the hook may mutate resolved options (#2791)\n if (options.beforeCreate) {\n callHook(options.beforeCreate, instance, \"bc\" /* LifecycleHooks.BEFORE_CREATE */);\n }\n const { \n // state\n data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions, \n // lifecycle\n created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch, \n // public API\n expose, inheritAttrs, \n // assets\n components, directives, filters } = options;\n const checkDuplicateProperties = (process.env.NODE_ENV !== 'production') ? createDuplicateChecker() : null;\n if ((process.env.NODE_ENV !== 'production')) {\n const [propsOptions] = instance.propsOptions;\n if (propsOptions) {\n for (const key in propsOptions) {\n checkDuplicateProperties(\"Props\" /* OptionTypes.PROPS */, key);\n }\n }\n }\n // options initialization order (to be consistent with Vue 2):\n // - props (already done outside of this function)\n // - inject\n // - methods\n // - data (deferred since it relies on `this` access)\n // - computed\n // - watch (deferred since it relies on `this` access)\n if (injectOptions) {\n resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);\n }\n if (methods) {\n for (const key in methods) {\n const methodHandler = methods[key];\n if (isFunction(methodHandler)) {\n // In dev mode, we use the `createRenderContext` function to define\n // methods to the proxy target, and those are read-only but\n // reconfigurable, so it needs to be redefined here\n if ((process.env.NODE_ENV !== 'production')) {\n Object.defineProperty(ctx, key, {\n value: methodHandler.bind(publicThis),\n configurable: true,\n enumerable: true,\n writable: true\n });\n }\n else {\n ctx[key] = methodHandler.bind(publicThis);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Methods\" /* OptionTypes.METHODS */, key);\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Method \"${key}\" has type \"${typeof methodHandler}\" in the component definition. ` +\n `Did you reference the function correctly?`);\n }\n }\n }\n if (dataOptions) {\n if ((process.env.NODE_ENV !== 'production') && !isFunction(dataOptions)) {\n warn(`The data option must be a function. ` +\n `Plain object usage is no longer supported.`);\n }\n const data = dataOptions.call(publicThis, publicThis);\n if ((process.env.NODE_ENV !== 'production') && isPromise(data)) {\n warn(`data() returned a Promise - note data() cannot be async; If you ` +\n `intend to perform data fetching before component renders, use ` +\n `async setup() + <Suspense>.`);\n }\n if (!isObject(data)) {\n (process.env.NODE_ENV !== 'production') && warn(`data() should return an object.`);\n }\n else {\n instance.data = reactive(data);\n if ((process.env.NODE_ENV !== 'production')) {\n for (const key in data) {\n checkDuplicateProperties(\"Data\" /* OptionTypes.DATA */, key);\n // expose data on ctx during dev\n if (!isReservedPrefix(key[0])) {\n Object.defineProperty(ctx, key, {\n configurable: true,\n enumerable: true,\n get: () => data[key],\n set: NOOP\n });\n }\n }\n }\n }\n }\n // state initialization complete at this point - start caching access\n shouldCacheAccess = true;\n if (computedOptions) {\n for (const key in computedOptions) {\n const opt = computedOptions[key];\n const get = isFunction(opt)\n ? opt.bind(publicThis, publicThis)\n : isFunction(opt.get)\n ? opt.get.bind(publicThis, publicThis)\n : NOOP;\n if ((process.env.NODE_ENV !== 'production') && get === NOOP) {\n warn(`Computed property \"${key}\" has no getter.`);\n }\n const set = !isFunction(opt) && isFunction(opt.set)\n ? opt.set.bind(publicThis)\n : (process.env.NODE_ENV !== 'production')\n ? () => {\n warn(`Write operation failed: computed property \"${key}\" is readonly.`);\n }\n : NOOP;\n const c = computed({\n get,\n set\n });\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => c.value,\n set: v => (c.value = v)\n });\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Computed\" /* OptionTypes.COMPUTED */, key);\n }\n }\n }\n if (watchOptions) {\n for (const key in watchOptions) {\n createWatcher(watchOptions[key], ctx, publicThis, key);\n }\n }\n if (provideOptions) {\n const provides = isFunction(provideOptions)\n ? provideOptions.call(publicThis)\n : provideOptions;\n Reflect.ownKeys(provides).forEach(key => {\n provide(key, provides[key]);\n });\n }\n if (created) {\n callHook(created, instance, \"c\" /* LifecycleHooks.CREATED */);\n }\n function registerLifecycleHook(register, hook) {\n if (isArray(hook)) {\n hook.forEach(_hook => register(_hook.bind(publicThis)));\n }\n else if (hook) {\n register(hook.bind(publicThis));\n }\n }\n registerLifecycleHook(onBeforeMount, beforeMount);\n registerLifecycleHook(onMounted, mounted);\n registerLifecycleHook(onBeforeUpdate, beforeUpdate);\n registerLifecycleHook(onUpdated, updated);\n registerLifecycleHook(onActivated, activated);\n registerLifecycleHook(onDeactivated, deactivated);\n registerLifecycleHook(onErrorCaptured, errorCaptured);\n registerLifecycleHook(onRenderTracked, renderTracked);\n registerLifecycleHook(onRenderTriggered, renderTriggered);\n registerLifecycleHook(onBeforeUnmount, beforeUnmount);\n registerLifecycleHook(onUnmounted, unmounted);\n registerLifecycleHook(onServerPrefetch, serverPrefetch);\n if (isArray(expose)) {\n if (expose.length) {\n const exposed = instance.exposed || (instance.exposed = {});\n expose.forEach(key => {\n Object.defineProperty(exposed, key, {\n get: () => publicThis[key],\n set: val => (publicThis[key] = val)\n });\n });\n }\n else if (!instance.exposed) {\n instance.exposed = {};\n }\n }\n // options that are handled when creating the instance but also need to be\n // applied from mixins\n if (render && instance.render === NOOP) {\n instance.render = render;\n }\n if (inheritAttrs != null) {\n instance.inheritAttrs = inheritAttrs;\n }\n // asset options.\n if (components)\n instance.components = components;\n if (directives)\n instance.directives = directives;\n}\nfunction resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {\n if (isArray(injectOptions)) {\n injectOptions = normalizeInject(injectOptions);\n }\n for (const key in injectOptions) {\n const opt = injectOptions[key];\n let injected;\n if (isObject(opt)) {\n if ('default' in opt) {\n injected = inject(opt.from || key, opt.default, true /* treat default function as factory */);\n }\n else {\n injected = inject(opt.from || key);\n }\n }\n else {\n injected = inject(opt);\n }\n if (isRef(injected)) {\n // TODO remove the check in 3.3\n if (unwrapRef) {\n Object.defineProperty(ctx, key, {\n enumerable: true,\n configurable: true,\n get: () => injected.value,\n set: v => (injected.value = v)\n });\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`injected property \"${key}\" is a ref and will be auto-unwrapped ` +\n `and no longer needs \\`.value\\` in the next minor release. ` +\n `To opt-in to the new behavior now, ` +\n `set \\`app.config.unwrapInjectedRef = true\\` (this config is ` +\n `temporary and will not be needed in the future.)`);\n }\n ctx[key] = injected;\n }\n }\n else {\n ctx[key] = injected;\n }\n if ((process.env.NODE_ENV !== 'production')) {\n checkDuplicateProperties(\"Inject\" /* OptionTypes.INJECT */, key);\n }\n }\n}\nfunction callHook(hook, instance, type) {\n callWithAsyncErrorHandling(isArray(hook)\n ? hook.map(h => h.bind(instance.proxy))\n : hook.bind(instance.proxy), instance, type);\n}\nfunction createWatcher(raw, ctx, publicThis, key) {\n const getter = key.includes('.')\n ? createPathGetter(publicThis, key)\n : () => publicThis[key];\n if (isString(raw)) {\n const handler = ctx[raw];\n if (isFunction(handler)) {\n watch(getter, handler);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw}\"`, handler);\n }\n }\n else if (isFunction(raw)) {\n watch(getter, raw.bind(publicThis));\n }\n else if (isObject(raw)) {\n if (isArray(raw)) {\n raw.forEach(r => createWatcher(r, ctx, publicThis, key));\n }\n else {\n const handler = isFunction(raw.handler)\n ? raw.handler.bind(publicThis)\n : ctx[raw.handler];\n if (isFunction(handler)) {\n watch(getter, handler, raw);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch handler specified by key \"${raw.handler}\"`, handler);\n }\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid watch option: \"${key}\"`, raw);\n }\n}\n/**\n * Resolve merged options and cache it on the component.\n * This is done only once per-component since the merging does not involve\n * instances.\n */\nfunction resolveMergedOptions(instance) {\n const base = instance.type;\n const { mixins, extends: extendsOptions } = base;\n const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext;\n const cached = cache.get(base);\n let resolved;\n if (cached) {\n resolved = cached;\n }\n else if (!globalMixins.length && !mixins && !extendsOptions) {\n {\n resolved = base;\n }\n }\n else {\n resolved = {};\n if (globalMixins.length) {\n globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));\n }\n mergeOptions(resolved, base, optionMergeStrategies);\n }\n if (isObject(base)) {\n cache.set(base, resolved);\n }\n return resolved;\n}\nfunction mergeOptions(to, from, strats, asMixin = false) {\n const { mixins, extends: extendsOptions } = from;\n if (extendsOptions) {\n mergeOptions(to, extendsOptions, strats, true);\n }\n if (mixins) {\n mixins.forEach((m) => mergeOptions(to, m, strats, true));\n }\n for (const key in from) {\n if (asMixin && key === 'expose') {\n (process.env.NODE_ENV !== 'production') &&\n warn(`\"expose\" option is ignored when declared in mixins or extends. ` +\n `It should only be declared in the base component itself.`);\n }\n else {\n const strat = internalOptionMergeStrats[key] || (strats && strats[key]);\n to[key] = strat ? strat(to[key], from[key]) : from[key];\n }\n }\n return to;\n}\nconst internalOptionMergeStrats = {\n data: mergeDataFn,\n props: mergeObjectOptions,\n emits: mergeObjectOptions,\n // objects\n methods: mergeObjectOptions,\n computed: mergeObjectOptions,\n // lifecycle\n beforeCreate: mergeAsArray,\n created: mergeAsArray,\n beforeMount: mergeAsArray,\n mounted: mergeAsArray,\n beforeUpdate: mergeAsArray,\n updated: mergeAsArray,\n beforeDestroy: mergeAsArray,\n beforeUnmount: mergeAsArray,\n destroyed: mergeAsArray,\n unmounted: mergeAsArray,\n activated: mergeAsArray,\n deactivated: mergeAsArray,\n errorCaptured: mergeAsArray,\n serverPrefetch: mergeAsArray,\n // assets\n components: mergeObjectOptions,\n directives: mergeObjectOptions,\n // watch\n watch: mergeWatchOptions,\n // provide / inject\n provide: mergeDataFn,\n inject: mergeInject\n};\nfunction mergeDataFn(to, from) {\n if (!from) {\n return to;\n }\n if (!to) {\n return from;\n }\n return function mergedDataFn() {\n return (extend)(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);\n };\n}\nfunction mergeInject(to, from) {\n return mergeObjectOptions(normalizeInject(to), normalizeInject(from));\n}\nfunction normalizeInject(raw) {\n if (isArray(raw)) {\n const res = {};\n for (let i = 0; i < raw.length; i++) {\n res[raw[i]] = raw[i];\n }\n return res;\n }\n return raw;\n}\nfunction mergeAsArray(to, from) {\n return to ? [...new Set([].concat(to, from))] : from;\n}\nfunction mergeObjectOptions(to, from) {\n return to ? extend(extend(Object.create(null), to), from) : from;\n}\nfunction mergeWatchOptions(to, from) {\n if (!to)\n return from;\n if (!from)\n return to;\n const merged = extend(Object.create(null), to);\n for (const key in from) {\n merged[key] = mergeAsArray(to[key], from[key]);\n }\n return merged;\n}\n\nfunction initProps(instance, rawProps, isStateful, // result of bitwise flag comparison\nisSSR = false) {\n const props = {};\n const attrs = {};\n def(attrs, InternalObjectKey, 1);\n instance.propsDefaults = Object.create(null);\n setFullProps(instance, rawProps, props, attrs);\n // ensure all declared prop keys are present\n for (const key in instance.propsOptions[0]) {\n if (!(key in props)) {\n props[key] = undefined;\n }\n }\n // validation\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n if (isStateful) {\n // stateful\n instance.props = isSSR ? props : shallowReactive(props);\n }\n else {\n if (!instance.type.props) {\n // functional w/ optional props, props === attrs\n instance.props = attrs;\n }\n else {\n // functional w/ declared props\n instance.props = props;\n }\n }\n instance.attrs = attrs;\n}\nfunction isInHmrContext(instance) {\n while (instance) {\n if (instance.type.__hmrId)\n return true;\n instance = instance.parent;\n }\n}\nfunction updateProps(instance, rawProps, rawPrevProps, optimized) {\n const { props, attrs, vnode: { patchFlag } } = instance;\n const rawCurrentProps = toRaw(props);\n const [options] = instance.propsOptions;\n let hasAttrsChanged = false;\n if (\n // always force full diff in dev\n // - #1942 if hmr is enabled with sfc component\n // - vite#872 non-sfc component used by sfc component\n !((process.env.NODE_ENV !== 'production') && isInHmrContext(instance)) &&\n (optimized || patchFlag > 0) &&\n !(patchFlag & 16 /* PatchFlags.FULL_PROPS */)) {\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // Compiler-generated props & no keys change, just set the updated\n // the props.\n const propsToUpdate = instance.vnode.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n let key = propsToUpdate[i];\n // skip if the prop key is a declared emit event listener\n if (isEmitListener(instance.emitsOptions, key)) {\n continue;\n }\n // PROPS flag guarantees rawProps to be non-null\n const value = rawProps[key];\n if (options) {\n // attr / props separation was done on init and will be consistent\n // in this code path, so just check if attrs have it.\n if (hasOwn(attrs, key)) {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n else {\n const camelizedKey = camelize(key);\n props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */);\n }\n }\n else {\n if (value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n }\n else {\n // full props update.\n if (setFullProps(instance, rawProps, props, attrs)) {\n hasAttrsChanged = true;\n }\n // in case of dynamic props, check if we need to delete keys from\n // the props object\n let kebabKey;\n for (const key in rawCurrentProps) {\n if (!rawProps ||\n // for camelCase\n (!hasOwn(rawProps, key) &&\n // it's possible the original props was passed in as kebab-case\n // and converted to camelCase (#955)\n ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) {\n if (options) {\n if (rawPrevProps &&\n // for camelCase\n (rawPrevProps[key] !== undefined ||\n // for kebab-case\n rawPrevProps[kebabKey] !== undefined)) {\n props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */);\n }\n }\n else {\n delete props[key];\n }\n }\n }\n // in the case of functional component w/o props declaration, props and\n // attrs point to the same object so it should already have been updated.\n if (attrs !== rawCurrentProps) {\n for (const key in attrs) {\n if (!rawProps ||\n (!hasOwn(rawProps, key) &&\n (!false ))) {\n delete attrs[key];\n hasAttrsChanged = true;\n }\n }\n }\n }\n // trigger updates for $attrs in case it's used in component slots\n if (hasAttrsChanged) {\n trigger(instance, \"set\" /* TriggerOpTypes.SET */, '$attrs');\n }\n if ((process.env.NODE_ENV !== 'production')) {\n validateProps(rawProps || {}, props, instance);\n }\n}\nfunction setFullProps(instance, rawProps, props, attrs) {\n const [options, needCastKeys] = instance.propsOptions;\n let hasAttrsChanged = false;\n let rawCastValues;\n if (rawProps) {\n for (let key in rawProps) {\n // key, ref are reserved and never passed down\n if (isReservedProp(key)) {\n continue;\n }\n const value = rawProps[key];\n // prop option names are camelized during normalization, so to support\n // kebab -> camel conversion here we need to camelize the key.\n let camelKey;\n if (options && hasOwn(options, (camelKey = camelize(key)))) {\n if (!needCastKeys || !needCastKeys.includes(camelKey)) {\n props[camelKey] = value;\n }\n else {\n (rawCastValues || (rawCastValues = {}))[camelKey] = value;\n }\n }\n else if (!isEmitListener(instance.emitsOptions, key)) {\n if (!(key in attrs) || value !== attrs[key]) {\n attrs[key] = value;\n hasAttrsChanged = true;\n }\n }\n }\n }\n if (needCastKeys) {\n const rawCurrentProps = toRaw(props);\n const castValues = rawCastValues || EMPTY_OBJ;\n for (let i = 0; i < needCastKeys.length; i++) {\n const key = needCastKeys[i];\n props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn(castValues, key));\n }\n }\n return hasAttrsChanged;\n}\nfunction resolvePropValue(options, props, key, value, instance, isAbsent) {\n const opt = options[key];\n if (opt != null) {\n const hasDefault = hasOwn(opt, 'default');\n // default values\n if (hasDefault && value === undefined) {\n const defaultValue = opt.default;\n if (opt.type !== Function && isFunction(defaultValue)) {\n const { propsDefaults } = instance;\n if (key in propsDefaults) {\n value = propsDefaults[key];\n }\n else {\n setCurrentInstance(instance);\n value = propsDefaults[key] = defaultValue.call(null, props);\n unsetCurrentInstance();\n }\n }\n else {\n value = defaultValue;\n }\n }\n // boolean casting\n if (opt[0 /* BooleanFlags.shouldCast */]) {\n if (isAbsent && !hasDefault) {\n value = false;\n }\n else if (opt[1 /* BooleanFlags.shouldCastTrue */] &&\n (value === '' || value === hyphenate(key))) {\n value = true;\n }\n }\n }\n return value;\n}\nfunction normalizePropsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.propsCache;\n const cached = cache.get(comp);\n if (cached) {\n return cached;\n }\n const raw = comp.props;\n const normalized = {};\n const needCastKeys = [];\n // apply mixin/extends props\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendProps = (raw) => {\n hasExtends = true;\n const [props, keys] = normalizePropsOptions(raw, appContext, true);\n extend(normalized, props);\n if (keys)\n needCastKeys.push(...keys);\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendProps);\n }\n if (comp.extends) {\n extendProps(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendProps);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, EMPTY_ARR);\n }\n return EMPTY_ARR;\n }\n if (isArray(raw)) {\n for (let i = 0; i < raw.length; i++) {\n if ((process.env.NODE_ENV !== 'production') && !isString(raw[i])) {\n warn(`props must be strings when using array syntax.`, raw[i]);\n }\n const normalizedKey = camelize(raw[i]);\n if (validatePropName(normalizedKey)) {\n normalized[normalizedKey] = EMPTY_OBJ;\n }\n }\n }\n else if (raw) {\n if ((process.env.NODE_ENV !== 'production') && !isObject(raw)) {\n warn(`invalid props options`, raw);\n }\n for (const key in raw) {\n const normalizedKey = camelize(key);\n if (validatePropName(normalizedKey)) {\n const opt = raw[key];\n const prop = (normalized[normalizedKey] =\n isArray(opt) || isFunction(opt) ? { type: opt } : Object.assign({}, opt));\n if (prop) {\n const booleanIndex = getTypeIndex(Boolean, prop.type);\n const stringIndex = getTypeIndex(String, prop.type);\n prop[0 /* BooleanFlags.shouldCast */] = booleanIndex > -1;\n prop[1 /* BooleanFlags.shouldCastTrue */] =\n stringIndex < 0 || booleanIndex < stringIndex;\n // if the prop needs boolean casting or default value\n if (booleanIndex > -1 || hasOwn(prop, 'default')) {\n needCastKeys.push(normalizedKey);\n }\n }\n }\n }\n }\n const res = [normalized, needCastKeys];\n if (isObject(comp)) {\n cache.set(comp, res);\n }\n return res;\n}\nfunction validatePropName(key) {\n if (key[0] !== '$') {\n return true;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Invalid prop name: \"${key}\" is a reserved property.`);\n }\n return false;\n}\n// use function string name to check type constructors\n// so that it works across vms / iframes.\nfunction getType(ctor) {\n const match = ctor && ctor.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ctor === null ? 'null' : '';\n}\nfunction isSameType(a, b) {\n return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n if (isArray(expectedTypes)) {\n return expectedTypes.findIndex(t => isSameType(t, type));\n }\n else if (isFunction(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1;\n }\n return -1;\n}\n/**\n * dev only\n */\nfunction validateProps(rawProps, props, instance) {\n const resolvedValues = toRaw(props);\n const options = instance.propsOptions[0];\n for (const key in options) {\n let opt = options[key];\n if (opt == null)\n continue;\n validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)));\n }\n}\n/**\n * dev only\n */\nfunction validateProp(name, value, prop, isAbsent) {\n const { type, required, validator } = prop;\n // required!\n if (required && isAbsent) {\n warn('Missing required prop: \"' + name + '\"');\n return;\n }\n // missing but optional\n if (value == null && !prop.required) {\n return;\n }\n // type check\n if (type != null && type !== true) {\n let isValid = false;\n const types = isArray(type) ? type : [type];\n const expectedTypes = [];\n // value is valid as long as one of the specified types match\n for (let i = 0; i < types.length && !isValid; i++) {\n const { valid, expectedType } = assertType(value, types[i]);\n expectedTypes.push(expectedType || '');\n isValid = valid;\n }\n if (!isValid) {\n warn(getInvalidTypeMessage(name, value, expectedTypes));\n return;\n }\n }\n // custom validator\n if (validator && !validator(value)) {\n warn('Invalid prop: custom validator check failed for prop \"' + name + '\".');\n }\n}\nconst isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol,BigInt');\n/**\n * dev only\n */\nfunction assertType(value, type) {\n let valid;\n const expectedType = getType(type);\n if (isSimpleType(expectedType)) {\n const t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n }\n else if (expectedType === 'Object') {\n valid = isObject(value);\n }\n else if (expectedType === 'Array') {\n valid = isArray(value);\n }\n else if (expectedType === 'null') {\n valid = value === null;\n }\n else {\n valid = value instanceof type;\n }\n return {\n valid,\n expectedType\n };\n}\n/**\n * dev only\n */\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n let message = `Invalid prop: type check failed for prop \"${name}\".` +\n ` Expected ${expectedTypes.map(capitalize).join(' | ')}`;\n const expectedType = expectedTypes[0];\n const receivedType = toRawType(value);\n const expectedValue = styleValue(value, expectedType);\n const receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += ` with value ${expectedValue}`;\n }\n message += `, got ${receivedType} `;\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += `with value ${receivedValue}.`;\n }\n return message;\n}\n/**\n * dev only\n */\nfunction styleValue(value, type) {\n if (type === 'String') {\n return `\"${value}\"`;\n }\n else if (type === 'Number') {\n return `${Number(value)}`;\n }\n else {\n return `${value}`;\n }\n}\n/**\n * dev only\n */\nfunction isExplicable(type) {\n const explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(elem => type.toLowerCase() === elem);\n}\n/**\n * dev only\n */\nfunction isBoolean(...args) {\n return args.some(elem => elem.toLowerCase() === 'boolean');\n}\n\nconst isInternalKey = (key) => key[0] === '_' || key === '$stable';\nconst normalizeSlotValue = (value) => isArray(value)\n ? value.map(normalizeVNode)\n : [normalizeVNode(value)];\nconst normalizeSlot = (key, rawSlot, ctx) => {\n if (rawSlot._n) {\n // already normalized - #5353\n return rawSlot;\n }\n const normalized = withCtx((...args) => {\n if ((process.env.NODE_ENV !== 'production') && currentInstance) {\n warn(`Slot \"${key}\" invoked outside of the render function: ` +\n `this will not track dependencies used in the slot. ` +\n `Invoke the slot function inside the render function instead.`);\n }\n return normalizeSlotValue(rawSlot(...args));\n }, ctx);\n normalized._c = false;\n return normalized;\n};\nconst normalizeObjectSlots = (rawSlots, slots, instance) => {\n const ctx = rawSlots._ctx;\n for (const key in rawSlots) {\n if (isInternalKey(key))\n continue;\n const value = rawSlots[key];\n if (isFunction(value)) {\n slots[key] = normalizeSlot(key, value, ctx);\n }\n else if (value != null) {\n if ((process.env.NODE_ENV !== 'production') &&\n !(false )) {\n warn(`Non-function value encountered for slot \"${key}\". ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(value);\n slots[key] = () => normalized;\n }\n }\n};\nconst normalizeVNodeSlots = (instance, children) => {\n if ((process.env.NODE_ENV !== 'production') &&\n !isKeepAlive(instance.vnode) &&\n !(false )) {\n warn(`Non-function value encountered for default slot. ` +\n `Prefer function slots for better performance.`);\n }\n const normalized = normalizeSlotValue(children);\n instance.slots.default = () => normalized;\n};\nconst initSlots = (instance, children) => {\n if (instance.vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // users can get the shallow readonly version of the slots object through `this.$slots`,\n // we should avoid the proxy object polluting the slots of the internal instance\n instance.slots = toRaw(children);\n // make compiler marker non-enumerable\n def(children, '_', type);\n }\n else {\n normalizeObjectSlots(children, (instance.slots = {}));\n }\n }\n else {\n instance.slots = {};\n if (children) {\n normalizeVNodeSlots(instance, children);\n }\n }\n def(instance.slots, InternalObjectKey, 1);\n};\nconst updateSlots = (instance, children, optimized) => {\n const { vnode, slots } = instance;\n let needDeletionCheck = true;\n let deletionComparisonTarget = EMPTY_OBJ;\n if (vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {\n const type = children._;\n if (type) {\n // compiled slots.\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // Parent was HMR updated so slot content may have changed.\n // force update slots and mark instance for hmr as well\n extend(slots, children);\n }\n else if (optimized && type === 1 /* SlotFlags.STABLE */) {\n // compiled AND stable.\n // no need to update, and skip stale slots removal.\n needDeletionCheck = false;\n }\n else {\n // compiled but dynamic (v-if/v-for on slots) - update slots, but skip\n // normalization.\n extend(slots, children);\n // #2893\n // when rendering the optimized slots by manually written render function,\n // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,\n // i.e. let the `renderSlot` create the bailed Fragment\n if (!optimized && type === 1 /* SlotFlags.STABLE */) {\n delete slots._;\n }\n }\n }\n else {\n needDeletionCheck = !children.$stable;\n normalizeObjectSlots(children, slots);\n }\n deletionComparisonTarget = children;\n }\n else if (children) {\n // non slot object children (direct value) passed to a component\n normalizeVNodeSlots(instance, children);\n deletionComparisonTarget = { default: 1 };\n }\n // delete stale slots\n if (needDeletionCheck) {\n for (const key in slots) {\n if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {\n delete slots[key];\n }\n }\n }\n};\n\nfunction createAppContext() {\n return {\n app: null,\n config: {\n isNativeTag: NO,\n performance: false,\n globalProperties: {},\n optionMergeStrategies: {},\n errorHandler: undefined,\n warnHandler: undefined,\n compilerOptions: {}\n },\n mixins: [],\n components: {},\n directives: {},\n provides: Object.create(null),\n optionsCache: new WeakMap(),\n propsCache: new WeakMap(),\n emitsCache: new WeakMap()\n };\n}\nlet uid = 0;\nfunction createAppAPI(render, hydrate) {\n return function createApp(rootComponent, rootProps = null) {\n if (!isFunction(rootComponent)) {\n rootComponent = Object.assign({}, rootComponent);\n }\n if (rootProps != null && !isObject(rootProps)) {\n (process.env.NODE_ENV !== 'production') && warn(`root props passed to app.mount() must be an object.`);\n rootProps = null;\n }\n const context = createAppContext();\n const installedPlugins = new Set();\n let isMounted = false;\n const app = (context.app = {\n _uid: uid++,\n _component: rootComponent,\n _props: rootProps,\n _container: null,\n _context: context,\n _instance: null,\n version,\n get config() {\n return context.config;\n },\n set config(v) {\n if ((process.env.NODE_ENV !== 'production')) {\n warn(`app.config cannot be replaced. Modify individual options instead.`);\n }\n },\n use(plugin, ...options) {\n if (installedPlugins.has(plugin)) {\n (process.env.NODE_ENV !== 'production') && warn(`Plugin has already been applied to target app.`);\n }\n else if (plugin && isFunction(plugin.install)) {\n installedPlugins.add(plugin);\n plugin.install(app, ...options);\n }\n else if (isFunction(plugin)) {\n installedPlugins.add(plugin);\n plugin(app, ...options);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`A plugin must either be a function or an object with an \"install\" ` +\n `function.`);\n }\n return app;\n },\n mixin(mixin) {\n if (__VUE_OPTIONS_API__) {\n if (!context.mixins.includes(mixin)) {\n context.mixins.push(mixin);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixin has already been applied to target app' +\n (mixin.name ? `: ${mixin.name}` : ''));\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Mixins are only available in builds supporting Options API');\n }\n return app;\n },\n component(name, component) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateComponentName(name, context.config);\n }\n if (!component) {\n return context.components[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.components[name]) {\n warn(`Component \"${name}\" has already been registered in target app.`);\n }\n context.components[name] = component;\n return app;\n },\n directive(name, directive) {\n if ((process.env.NODE_ENV !== 'production')) {\n validateDirectiveName(name);\n }\n if (!directive) {\n return context.directives[name];\n }\n if ((process.env.NODE_ENV !== 'production') && context.directives[name]) {\n warn(`Directive \"${name}\" has already been registered in target app.`);\n }\n context.directives[name] = directive;\n return app;\n },\n mount(rootContainer, isHydrate, isSVG) {\n if (!isMounted) {\n // #5571\n if ((process.env.NODE_ENV !== 'production') && rootContainer.__vue_app__) {\n warn(`There is already an app instance mounted on the host container.\\n` +\n ` If you want to mount another app on the same host container,` +\n ` you need to unmount the previous app by calling \\`app.unmount()\\` first.`);\n }\n const vnode = createVNode(rootComponent, rootProps);\n // store app context on the root VNode.\n // this will be set on the root instance on initial mount.\n vnode.appContext = context;\n // HMR root reload\n if ((process.env.NODE_ENV !== 'production')) {\n context.reload = () => {\n render(cloneVNode(vnode), rootContainer, isSVG);\n };\n }\n if (isHydrate && hydrate) {\n hydrate(vnode, rootContainer);\n }\n else {\n render(vnode, rootContainer, isSVG);\n }\n isMounted = true;\n app._container = rootContainer;\n rootContainer.__vue_app__ = app;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = vnode.component;\n devtoolsInitApp(app, version);\n }\n return getExposeProxy(vnode.component) || vnode.component.proxy;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`App has already been mounted.\\n` +\n `If you want to remount the same app, move your app creation logic ` +\n `into a factory function and create fresh app instances for each ` +\n `mount - e.g. \\`const createMyApp = () => createApp(App)\\``);\n }\n },\n unmount() {\n if (isMounted) {\n render(null, app._container);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n app._instance = null;\n devtoolsUnmountApp(app);\n }\n delete app._container.__vue_app__;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`Cannot unmount an app that is not mounted.`);\n }\n },\n provide(key, value) {\n if ((process.env.NODE_ENV !== 'production') && key in context.provides) {\n warn(`App already provides property with key \"${String(key)}\". ` +\n `It will be overwritten with the new value.`);\n }\n context.provides[key] = value;\n return app;\n }\n });\n return app;\n };\n}\n\n/**\n * Function for handling a template ref\n */\nfunction setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {\n if (isArray(rawRef)) {\n rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));\n return;\n }\n if (isAsyncWrapper(vnode) && !isUnmount) {\n // when mounting async components, nothing needs to be done,\n // because the template ref is forwarded to inner component\n return;\n }\n const refValue = vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */\n ? getExposeProxy(vnode.component) || vnode.component.proxy\n : vnode.el;\n const value = isUnmount ? null : refValue;\n const { i: owner, r: ref } = rawRef;\n if ((process.env.NODE_ENV !== 'production') && !owner) {\n warn(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +\n `A vnode with ref must be created inside the render function.`);\n return;\n }\n const oldRef = oldRawRef && oldRawRef.r;\n const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs;\n const setupState = owner.setupState;\n // dynamic ref changed. unset old ref\n if (oldRef != null && oldRef !== ref) {\n if (isString(oldRef)) {\n refs[oldRef] = null;\n if (hasOwn(setupState, oldRef)) {\n setupState[oldRef] = null;\n }\n }\n else if (isRef(oldRef)) {\n oldRef.value = null;\n }\n }\n if (isFunction(ref)) {\n callWithErrorHandling(ref, owner, 12 /* ErrorCodes.FUNCTION_REF */, [value, refs]);\n }\n else {\n const _isString = isString(ref);\n const _isRef = isRef(ref);\n if (_isString || _isRef) {\n const doSet = () => {\n if (rawRef.f) {\n const existing = _isString\n ? hasOwn(setupState, ref)\n ? setupState[ref]\n : refs[ref]\n : ref.value;\n if (isUnmount) {\n isArray(existing) && remove(existing, refValue);\n }\n else {\n if (!isArray(existing)) {\n if (_isString) {\n refs[ref] = [refValue];\n if (hasOwn(setupState, ref)) {\n setupState[ref] = refs[ref];\n }\n }\n else {\n ref.value = [refValue];\n if (rawRef.k)\n refs[rawRef.k] = ref.value;\n }\n }\n else if (!existing.includes(refValue)) {\n existing.push(refValue);\n }\n }\n }\n else if (_isString) {\n refs[ref] = value;\n if (hasOwn(setupState, ref)) {\n setupState[ref] = value;\n }\n }\n else if (_isRef) {\n ref.value = value;\n if (rawRef.k)\n refs[rawRef.k] = value;\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n };\n if (value) {\n doSet.id = -1;\n queuePostRenderEffect(doSet, parentSuspense);\n }\n else {\n doSet();\n }\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid template ref type:', ref, `(${typeof ref})`);\n }\n }\n}\n\nlet hasMismatch = false;\nconst isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';\nconst isComment = (node) => node.nodeType === 8 /* DOMNodeTypes.COMMENT */;\n// Note: hydration is DOM-specific\n// But we have to place it in core due to tight coupling with core - splitting\n// it out creates a ton of unnecessary complexity.\n// Hydration also depends on some renderer internal logic which needs to be\n// passed in via arguments.\nfunction createHydrationFunctions(rendererInternals) {\n const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;\n const hydrate = (vnode, container) => {\n if (!container.hasChildNodes()) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Attempting to hydrate existing markup but container is empty. ` +\n `Performing full mount instead.`);\n patch(null, vnode, container);\n flushPostFlushCbs();\n container._vnode = vnode;\n return;\n }\n hasMismatch = false;\n hydrateNode(container.firstChild, vnode, null, null, null);\n flushPostFlushCbs();\n container._vnode = vnode;\n if (hasMismatch && !false) {\n // this error should show up in production\n console.error(`Hydration completed but contains mismatches.`);\n }\n };\n const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {\n const isFragmentStart = isComment(node) && node.data === '[';\n const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);\n const { type, ref, shapeFlag, patchFlag } = vnode;\n let domType = node.nodeType;\n vnode.el = node;\n if (patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n vnode.dynamicChildren = null;\n }\n let nextNode = null;\n switch (type) {\n case Text:\n if (domType !== 3 /* DOMNodeTypes.TEXT */) {\n // #5728 empty text node inside a slot can cause hydration failure\n // because the server rendered HTML won't contain a text node\n if (vnode.children === '') {\n insert((vnode.el = createText('')), parentNode(node), node);\n nextNode = node;\n }\n else {\n nextNode = onMismatch();\n }\n }\n else {\n if (node.data !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text mismatch:` +\n `\\n- Client: ${JSON.stringify(node.data)}` +\n `\\n- Server: ${JSON.stringify(vnode.children)}`);\n node.data = vnode.children;\n }\n nextNode = nextSibling(node);\n }\n break;\n case Comment:\n if (domType !== 8 /* DOMNodeTypes.COMMENT */ || isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = nextSibling(node);\n }\n break;\n case Static:\n if (isFragmentStart) {\n // entire template is static but SSRed as a fragment\n node = nextSibling(node);\n domType = node.nodeType;\n }\n if (domType === 1 /* DOMNodeTypes.ELEMENT */ || domType === 3 /* DOMNodeTypes.TEXT */) {\n // determine anchor, adopt content\n nextNode = node;\n // if the static vnode has its content stripped during build,\n // adopt it from the server-rendered HTML.\n const needToAdoptContent = !vnode.children.length;\n for (let i = 0; i < vnode.staticCount; i++) {\n if (needToAdoptContent)\n vnode.children +=\n nextNode.nodeType === 1 /* DOMNodeTypes.ELEMENT */\n ? nextNode.outerHTML\n : nextNode.data;\n if (i === vnode.staticCount - 1) {\n vnode.anchor = nextNode;\n }\n nextNode = nextSibling(nextNode);\n }\n return isFragmentStart ? nextSibling(nextNode) : nextNode;\n }\n else {\n onMismatch();\n }\n break;\n case Fragment:\n if (!isFragmentStart) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n if (domType !== 1 /* DOMNodeTypes.ELEMENT */ ||\n vnode.type.toLowerCase() !==\n node.tagName.toLowerCase()) {\n nextNode = onMismatch();\n }\n else {\n nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n // when setting up the render effect, if the initial vnode already\n // has .el set, the component will perform hydration instead of mount\n // on its sub-tree.\n vnode.slotScopeIds = slotScopeIds;\n const container = parentNode(node);\n mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);\n // component may be async, so in the case of fragments we cannot rely\n // on component's rendered output to determine the end of the fragment\n // instead, we do a lookahead to find the end anchor node.\n nextNode = isFragmentStart\n ? locateClosingAsyncAnchor(node)\n : nextSibling(node);\n // #4293 teleport as component root\n if (nextNode &&\n isComment(nextNode) &&\n nextNode.data === 'teleport end') {\n nextNode = nextSibling(nextNode);\n }\n // #3787\n // if component is async, it may get moved / unmounted before its\n // inner component is loaded, so we need to give it a placeholder\n // vnode that matches its adopted DOM.\n if (isAsyncWrapper(vnode)) {\n let subTree;\n if (isFragmentStart) {\n subTree = createVNode(Fragment);\n subTree.anchor = nextNode\n ? nextNode.previousSibling\n : container.lastChild;\n }\n else {\n subTree =\n node.nodeType === 3 ? createTextVNode('') : createVNode('div');\n }\n subTree.el = node;\n vnode.component.subTree = subTree;\n }\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n if (domType !== 8 /* DOMNodeTypes.COMMENT */) {\n nextNode = onMismatch();\n }\n else {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);\n }\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid HostVNode type:', type, `(${typeof type})`);\n }\n }\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode);\n }\n return nextNode;\n };\n const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!vnode.dynamicChildren;\n const { type, props, patchFlag, shapeFlag, dirs } = vnode;\n // #4006 for form elements with non-string v-model value bindings\n // e.g. <option :value=\"obj\">, <input type=\"checkbox\" :true-value=\"1\">\n const forcePatchValue = (type === 'input' && dirs) || type === 'option';\n // skip props & children if this is hoisted static nodes\n // #5405 in dev, always hydrate children for HMR\n if ((process.env.NODE_ENV !== 'production') || forcePatchValue || patchFlag !== -1 /* PatchFlags.HOISTED */) {\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n if (forcePatchValue ||\n !optimized ||\n patchFlag & (16 /* PatchFlags.FULL_PROPS */ | 32 /* PatchFlags.HYDRATE_EVENTS */)) {\n for (const key in props) {\n if ((forcePatchValue && key.endsWith('value')) ||\n (isOn(key) && !isReservedProp(key))) {\n patchProp(el, key, null, props[key], false, undefined, parentComponent);\n }\n }\n }\n else if (props.onClick) {\n // Fast path for click listeners (which is most often) to avoid\n // iterating through props.\n patchProp(el, 'onClick', null, props.onClick, false, undefined, parentComponent);\n }\n }\n // vnode / directive hooks\n let vnodeHooks;\n if ((vnodeHooks = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {\n queueEffectWithSuspense(() => {\n vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n // children\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */ &&\n // skip if element has innerHTML / textContent\n !(props && (props.innerHTML || props.textContent))) {\n let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized);\n let hasWarned = false;\n while (next) {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${vnode.type}>: ` +\n `server rendered element contains more child nodes than client vdom.`);\n hasWarned = true;\n }\n // The SSRed DOM contains more nodes than it should. Remove them.\n const cur = next;\n next = next.nextSibling;\n remove(cur);\n }\n }\n else if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n if (el.textContent !== vnode.children) {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration text content mismatch in <${vnode.type}>:\\n` +\n `- Client: ${el.textContent}\\n` +\n `- Server: ${vnode.children}`);\n el.textContent = vnode.children;\n }\n }\n }\n return el.nextSibling;\n };\n const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n optimized = optimized || !!parentVNode.dynamicChildren;\n const children = parentVNode.children;\n const l = children.length;\n let hasWarned = false;\n for (let i = 0; i < l; i++) {\n const vnode = optimized\n ? children[i]\n : (children[i] = normalizeVNode(children[i]));\n if (node) {\n node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n else if (vnode.type === Text && !vnode.children) {\n continue;\n }\n else {\n hasMismatch = true;\n if ((process.env.NODE_ENV !== 'production') && !hasWarned) {\n warn(`Hydration children mismatch in <${container.tagName.toLowerCase()}>: ` +\n `server rendered element contains fewer child nodes than client vdom.`);\n hasWarned = true;\n }\n // the SSRed DOM didn't contain enough nodes. Mount the missing ones.\n patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n }\n }\n return node;\n };\n const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {\n const { slotScopeIds: fragmentSlotScopeIds } = vnode;\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n const container = parentNode(node);\n const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);\n if (next && isComment(next) && next.data === ']') {\n return nextSibling((vnode.anchor = next));\n }\n else {\n // fragment didn't hydrate successfully, since we didn't get a end anchor\n // back. This should have led to node/children mismatch warnings.\n hasMismatch = true;\n // since the anchor is missing, we need to create one and insert it\n insert((vnode.anchor = createComment(`]`)), container, next);\n return next;\n }\n };\n const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {\n hasMismatch = true;\n (process.env.NODE_ENV !== 'production') &&\n warn(`Hydration node mismatch:\\n- Client vnode:`, vnode.type, `\\n- Server rendered DOM:`, node, node.nodeType === 3 /* DOMNodeTypes.TEXT */\n ? `(text)`\n : isComment(node) && node.data === '['\n ? `(start of fragment)`\n : ``);\n vnode.el = null;\n if (isFragment) {\n // remove excessive fragment nodes\n const end = locateClosingAsyncAnchor(node);\n while (true) {\n const next = nextSibling(node);\n if (next && next !== end) {\n remove(next);\n }\n else {\n break;\n }\n }\n }\n const next = nextSibling(node);\n const container = parentNode(node);\n remove(node);\n patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);\n return next;\n };\n const locateClosingAsyncAnchor = (node) => {\n let match = 0;\n while (node) {\n node = nextSibling(node);\n if (node && isComment(node)) {\n if (node.data === '[')\n match++;\n if (node.data === ']') {\n if (match === 0) {\n return nextSibling(node);\n }\n else {\n match--;\n }\n }\n }\n }\n return node;\n };\n return [hydrate, hydrateNode];\n}\n\n/* eslint-disable no-restricted-globals */\nlet supported;\nlet perf;\nfunction startMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n perf.mark(`vue-${type}-${instance.uid}`);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction endMeasure(instance, type) {\n if (instance.appContext.config.performance && isSupported()) {\n const startTag = `vue-${type}-${instance.uid}`;\n const endTag = startTag + `:end`;\n perf.mark(endTag);\n perf.measure(`<${formatComponentName(instance, instance.type)}> ${type}`, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());\n }\n}\nfunction isSupported() {\n if (supported !== undefined) {\n return supported;\n }\n if (typeof window !== 'undefined' && window.performance) {\n supported = true;\n perf = window.performance;\n }\n else {\n supported = false;\n }\n return supported;\n}\n\n/**\n * This is only called in esm-bundler builds.\n * It is called when a renderer is created, in `baseCreateRenderer` so that\n * importing runtime-core is side-effects free.\n *\n * istanbul-ignore-next\n */\nfunction initFeatureFlags() {\n const needWarn = [];\n if (typeof __VUE_OPTIONS_API__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_OPTIONS_API__`);\n getGlobalThis().__VUE_OPTIONS_API__ = true;\n }\n if (typeof __VUE_PROD_DEVTOOLS__ !== 'boolean') {\n (process.env.NODE_ENV !== 'production') && needWarn.push(`__VUE_PROD_DEVTOOLS__`);\n getGlobalThis().__VUE_PROD_DEVTOOLS__ = false;\n }\n if ((process.env.NODE_ENV !== 'production') && needWarn.length) {\n const multi = needWarn.length > 1;\n console.warn(`Feature flag${multi ? `s` : ``} ${needWarn.join(', ')} ${multi ? `are` : `is`} not explicitly defined. You are running the esm-bundler build of Vue, ` +\n `which expects these compile-time feature flags to be globally injected ` +\n `via the bundler config in order to get better tree-shaking in the ` +\n `production bundle.\\n\\n` +\n `For more details, see https://link.vuejs.org/feature-flags.`);\n }\n}\n\nconst queuePostRenderEffect = queueEffectWithSuspense\n ;\n/**\n * The createRenderer function accepts two generic arguments:\n * HostNode and HostElement, corresponding to Node and Element types in the\n * host environment. For example, for runtime-dom, HostNode would be the DOM\n * `Node` interface and HostElement would be the DOM `Element` interface.\n *\n * Custom renderers can pass in the platform specific types like this:\n *\n * ``` js\n * const { render, createApp } = createRenderer<Node, Element>({\n * patchProp,\n * ...nodeOps\n * })\n * ```\n */\nfunction createRenderer(options) {\n return baseCreateRenderer(options);\n}\n// Separate API for creating hydration-enabled renderer.\n// Hydration logic is only used when calling this function, making it\n// tree-shakable.\nfunction createHydrationRenderer(options) {\n return baseCreateRenderer(options, createHydrationFunctions);\n}\n// implementation\nfunction baseCreateRenderer(options, createHydrationFns) {\n // compile-time feature flags check\n {\n initFeatureFlags();\n }\n const target = getGlobalThis();\n target.__VUE__ = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);\n }\n const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, insertStaticContent: hostInsertStaticContent } = options;\n // Note: functions inside this closure should use `const xxx = () => {}`\n // style in order to prevent being inlined by minifiers.\n const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = (process.env.NODE_ENV !== 'production') && isHmrUpdating ? false : !!n2.dynamicChildren) => {\n if (n1 === n2) {\n return;\n }\n // patching & not same type, unmount old tree\n if (n1 && !isSameVNodeType(n1, n2)) {\n anchor = getNextHostNode(n1);\n unmount(n1, parentComponent, parentSuspense, true);\n n1 = null;\n }\n if (n2.patchFlag === -2 /* PatchFlags.BAIL */) {\n optimized = false;\n n2.dynamicChildren = null;\n }\n const { type, ref, shapeFlag } = n2;\n switch (type) {\n case Text:\n processText(n1, n2, container, anchor);\n break;\n case Comment:\n processCommentNode(n1, n2, container, anchor);\n break;\n case Static:\n if (n1 == null) {\n mountStaticNode(n2, container, anchor, isSVG);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n patchStaticNode(n1, n2, container, isSVG);\n }\n break;\n case Fragment:\n processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n break;\n default:\n if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {\n processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid VNode type:', type, `(${typeof type})`);\n }\n }\n // set ref\n if (ref != null && parentComponent) {\n setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);\n }\n };\n const processText = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateText(n2.children)), container, anchor);\n }\n else {\n const el = (n2.el = n1.el);\n if (n2.children !== n1.children) {\n hostSetText(el, n2.children);\n }\n }\n };\n const processCommentNode = (n1, n2, container, anchor) => {\n if (n1 == null) {\n hostInsert((n2.el = hostCreateComment(n2.children || '')), container, anchor);\n }\n else {\n // there's no support for dynamic comments\n n2.el = n1.el;\n }\n };\n const mountStaticNode = (n2, container, anchor, isSVG) => {\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);\n };\n /**\n * Dev / HMR only\n */\n const patchStaticNode = (n1, n2, container, isSVG) => {\n // static nodes are only patched during dev for HMR\n if (n2.children !== n1.children) {\n const anchor = hostNextSibling(n1.anchor);\n // remove existing\n removeStaticNode(n1);\n [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG);\n }\n else {\n n2.el = n1.el;\n n2.anchor = n1.anchor;\n }\n };\n const moveStaticNode = ({ el, anchor }, container, nextSibling) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostInsert(el, container, nextSibling);\n el = next;\n }\n hostInsert(anchor, container, nextSibling);\n };\n const removeStaticNode = ({ el, anchor }) => {\n let next;\n while (el && el !== anchor) {\n next = hostNextSibling(el);\n hostRemove(el);\n el = next;\n }\n hostRemove(anchor);\n };\n const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n isSVG = isSVG || n2.type === 'svg';\n if (n1 == null) {\n mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let el;\n let vnodeHook;\n const { type, props, shapeFlag, transition, dirs } = vnode;\n el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);\n // mount children first, since some props may rely on child content\n // being already rendered, e.g. `<select value>`\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(el, vnode.children);\n }\n else if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'created');\n }\n // props\n if (props) {\n for (const key in props) {\n if (key !== 'value' && !isReservedProp(key)) {\n hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n /**\n * Special case for setting value on DOM elements:\n * - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024)\n * - it needs to be forced (#1471)\n * #2353 proposes adding another renderer option to configure this, but\n * the properties affects are so finite it is worth special casing it\n * here to reduce the complexity. (Special casing it also should not\n * affect non-DOM renderers)\n */\n if ('value' in props) {\n hostPatchProp(el, 'value', null, props.value);\n }\n if ((vnodeHook = props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n }\n // scopeId\n setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n Object.defineProperty(el, '__vnode', {\n value: vnode,\n enumerable: false\n });\n Object.defineProperty(el, '__vueParentComponent', {\n value: parentComponent,\n enumerable: false\n });\n }\n if (dirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');\n }\n // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved\n // #1689 For inside suspense + suspense resolved case, just call it\n const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) &&\n transition &&\n !transition.persisted;\n if (needCallTransitionHooks) {\n transition.beforeEnter(el);\n }\n hostInsert(el, container, anchor);\n if ((vnodeHook = props && props.onVnodeMounted) ||\n needCallTransitionHooks ||\n dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n needCallTransitionHooks && transition.enter(el);\n dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');\n }, parentSuspense);\n }\n };\n const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {\n if (scopeId) {\n hostSetScopeId(el, scopeId);\n }\n if (slotScopeIds) {\n for (let i = 0; i < slotScopeIds.length; i++) {\n hostSetScopeId(el, slotScopeIds[i]);\n }\n }\n if (parentComponent) {\n let subTree = parentComponent.subTree;\n if ((process.env.NODE_ENV !== 'production') &&\n subTree.patchFlag > 0 &&\n subTree.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {\n subTree =\n filterSingleRoot(subTree.children) || subTree;\n }\n if (vnode === subTree) {\n const parentVNode = parentComponent.vnode;\n setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);\n }\n }\n };\n const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {\n for (let i = start; i < children.length; i++) {\n const child = (children[i] = optimized\n ? cloneIfMounted(children[i])\n : normalizeVNode(children[i]));\n patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const el = (n2.el = n1.el);\n let { patchFlag, dynamicChildren, dirs } = n2;\n // #1426 take the old vnode's patch flag into account since user may clone a\n // compiler-generated vnode, which de-opts to FULL_PROPS\n patchFlag |= n1.patchFlag & 16 /* PatchFlags.FULL_PROPS */;\n const oldProps = n1.props || EMPTY_OBJ;\n const newProps = n2.props || EMPTY_OBJ;\n let vnodeHook;\n // disable recurse in beforeUpdate hooks\n parentComponent && toggleRecurse(parentComponent, false);\n if ((vnodeHook = newProps.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n }\n if (dirs) {\n invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate');\n }\n parentComponent && toggleRecurse(parentComponent, true);\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n // HMR updated, force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n const areChildrenSVG = isSVG && n2.type !== 'foreignObject';\n if (dynamicChildren) {\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n }\n else if (!optimized) {\n // full diff\n patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);\n }\n if (patchFlag > 0) {\n // the presence of a patchFlag means this element's render code was\n // generated by the compiler and can take the fast path.\n // in this path old node and new node are guaranteed to have the same shape\n // (i.e. at the exact same position in the source template)\n if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {\n // element props contain dynamic keys, full diff needed\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n else {\n // class\n // this flag is matched when the element has dynamic class bindings.\n if (patchFlag & 2 /* PatchFlags.CLASS */) {\n if (oldProps.class !== newProps.class) {\n hostPatchProp(el, 'class', null, newProps.class, isSVG);\n }\n }\n // style\n // this flag is matched when the element has dynamic style bindings\n if (patchFlag & 4 /* PatchFlags.STYLE */) {\n hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);\n }\n // props\n // This flag is matched when the element has dynamic prop/attr bindings\n // other than class and style. The keys of dynamic prop/attrs are saved for\n // faster iteration.\n // Note dynamic keys like :[foo]=\"bar\" will cause this optimization to\n // bail out and go through a full diff because we need to unset the old key\n if (patchFlag & 8 /* PatchFlags.PROPS */) {\n // if the flag is present then dynamicProps must be non-null\n const propsToUpdate = n2.dynamicProps;\n for (let i = 0; i < propsToUpdate.length; i++) {\n const key = propsToUpdate[i];\n const prev = oldProps[key];\n const next = newProps[key];\n // #1471 force patch value\n if (next !== prev || key === 'value') {\n hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n }\n // text\n // This flag is matched when the element has only dynamic text children.\n if (patchFlag & 1 /* PatchFlags.TEXT */) {\n if (n1.children !== n2.children) {\n hostSetElementText(el, n2.children);\n }\n }\n }\n else if (!optimized && dynamicChildren == null) {\n // unoptimized, full diff\n patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);\n }\n if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);\n dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated');\n }, parentSuspense);\n }\n };\n // The fast path for blocks.\n const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {\n for (let i = 0; i < newChildren.length; i++) {\n const oldVNode = oldChildren[i];\n const newVNode = newChildren[i];\n // Determine the container (parent element) for the patch.\n const container = \n // oldVNode may be an errored async setup() component inside Suspense\n // which will not have a mounted element\n oldVNode.el &&\n // - In the case of a Fragment, we need to provide the actual parent\n // of the Fragment itself so it can move its children.\n (oldVNode.type === Fragment ||\n // - In the case of different nodes, there is going to be a replacement\n // which also requires the correct parent container\n !isSameVNodeType(oldVNode, newVNode) ||\n // - In the case of a component, it could contain anything.\n oldVNode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 64 /* ShapeFlags.TELEPORT */))\n ? hostParentNode(oldVNode.el)\n : // In other cases, the parent container is not actually used so we\n // just pass the block element here to avoid a DOM parentNode call.\n fallbackContainer;\n patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);\n }\n };\n const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {\n if (oldProps !== newProps) {\n if (oldProps !== EMPTY_OBJ) {\n for (const key in oldProps) {\n if (!isReservedProp(key) && !(key in newProps)) {\n hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n }\n for (const key in newProps) {\n // empty string is not valid prop\n if (isReservedProp(key))\n continue;\n const next = newProps[key];\n const prev = oldProps[key];\n // defer patching value\n if (next !== prev && key !== 'value') {\n hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);\n }\n }\n if ('value' in newProps) {\n hostPatchProp(el, 'value', oldProps.value, newProps.value);\n }\n }\n };\n const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));\n const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));\n let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;\n if ((process.env.NODE_ENV !== 'production') &&\n // #5523 dev root fragment may inherit directives\n (isHmrUpdating || patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */)) {\n // HMR updated / Dev root fragment (w/ comments), force full diff\n patchFlag = 0;\n optimized = false;\n dynamicChildren = null;\n }\n // check if this is a slot fragment with :slotted scope ids\n if (fragmentSlotScopeIds) {\n slotScopeIds = slotScopeIds\n ? slotScopeIds.concat(fragmentSlotScopeIds)\n : fragmentSlotScopeIds;\n }\n if (n1 == null) {\n hostInsert(fragmentStartAnchor, container, anchor);\n hostInsert(fragmentEndAnchor, container, anchor);\n // a fragment can only have array children\n // since they are either generated by the compiler, or implicitly created\n // from arrays.\n mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n if (patchFlag > 0 &&\n patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */ &&\n dynamicChildren &&\n // #2715 the previous fragment could've been a BAILed one as a result\n // of renderSlot() with no valid children\n n1.dynamicChildren) {\n // a stable fragment (template root or <template v-for>) doesn't need to\n // patch children order, but it may contain dynamicChildren.\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);\n if ((process.env.NODE_ENV !== 'production') && parentComponent && parentComponent.type.__hmrId) {\n traverseStaticChildren(n1, n2);\n }\n else if (\n // #2080 if the stable fragment has a key, it's a <template v-for> that may\n // get moved around. Make sure all root level vnodes inherit el.\n // #2134 or if it's a component root, it may also get moved around\n // as the component is being moved.\n n2.key != null ||\n (parentComponent && n2 === parentComponent.subTree)) {\n traverseStaticChildren(n1, n2, true /* shallow */);\n }\n }\n else {\n // keyed / unkeyed, or manual fragments.\n // for keyed & unkeyed, since they are compiler generated from v-for,\n // each child is guaranteed to be a block so the fragment will never\n // have dynamicChildren.\n patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n };\n const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n n2.slotScopeIds = slotScopeIds;\n if (n1 == null) {\n if (n2.shapeFlag & 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */) {\n parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);\n }\n else {\n mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);\n }\n }\n else {\n updateComponent(n1, n2, optimized);\n }\n };\n const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {\n const instance = (initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense));\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n registerHMR(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(initialVNode);\n startMeasure(instance, `mount`);\n }\n // inject renderer internals for keepAlive\n if (isKeepAlive(initialVNode)) {\n instance.ctx.renderer = internals;\n }\n // resolve props and slots for setup context\n {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `init`);\n }\n setupComponent(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `init`);\n }\n }\n // setup() is async. This component relies on async logic to be resolved\n // before proceeding\n if (instance.asyncDep) {\n parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);\n // Give it a placeholder if this is not hydration\n // TODO handle self-defined fallback\n if (!initialVNode.el) {\n const placeholder = (instance.subTree = createVNode(Comment));\n processCommentNode(null, placeholder, container, anchor);\n }\n return;\n }\n setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n endMeasure(instance, `mount`);\n }\n };\n const updateComponent = (n1, n2, optimized) => {\n const instance = (n2.component = n1.component);\n if (shouldUpdateComponent(n1, n2, optimized)) {\n if (instance.asyncDep &&\n !instance.asyncResolved) {\n // async & still pending - just update props and slots\n // since the component's reactive effect for render isn't set-up yet\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(n2);\n }\n updateComponentPreRender(instance, n2, optimized);\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n return;\n }\n else {\n // normal update\n instance.next = n2;\n // in case the child component is also queued, remove it to avoid\n // double updating the same child component in the same flush.\n invalidateJob(instance.update);\n // instance.update is the reactive effect.\n instance.update();\n }\n }\n else {\n // no update needed. just copy over properties\n n2.el = n1.el;\n instance.vnode = n2;\n }\n };\n const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {\n const componentUpdateFn = () => {\n if (!instance.isMounted) {\n let vnodeHook;\n const { el, props } = initialVNode;\n const { bm, m, parent } = instance;\n const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);\n toggleRecurse(instance, false);\n // beforeMount hook\n if (bm) {\n invokeArrayFns(bm);\n }\n // onVnodeBeforeMount\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeBeforeMount)) {\n invokeVNodeHook(vnodeHook, parent, initialVNode);\n }\n toggleRecurse(instance, true);\n if (el && hydrateNode) {\n // vnode has adopted host node - perform hydration instead of mount.\n const hydrateSubTree = () => {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n instance.subTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `hydrate`);\n }\n hydrateNode(el, instance.subTree, instance, parentSuspense, null);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `hydrate`);\n }\n };\n if (isAsyncWrapperVNode) {\n initialVNode.type.__asyncLoader().then(\n // note: we are moving the render call into an async callback,\n // which means it won't track dependencies - but it's ok because\n // a server-rendered async wrapper is already in resolved state\n // and it will never need to change.\n () => !instance.isUnmounted && hydrateSubTree());\n }\n else {\n hydrateSubTree();\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const subTree = (instance.subTree = renderComponentRoot(instance));\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n initialVNode.el = subTree.el;\n }\n // mounted hook\n if (m) {\n queuePostRenderEffect(m, parentSuspense);\n }\n // onVnodeMounted\n if (!isAsyncWrapperVNode &&\n (vnodeHook = props && props.onVnodeMounted)) {\n const scopedInitialVNode = initialVNode;\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);\n }\n // activated hook for keep-alive roots.\n // #1742 activated hook must be accessed after first render\n // since the hook may be injected by a child keep-alive\n if (initialVNode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */ ||\n (parent &&\n isAsyncWrapper(parent.vnode) &&\n parent.vnode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */)) {\n instance.a && queuePostRenderEffect(instance.a, parentSuspense);\n }\n instance.isMounted = true;\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance);\n }\n // #2458: deference mount-only object parameters to prevent memleaks\n initialVNode = container = anchor = null;\n }\n else {\n // updateComponent\n // This is triggered by mutation of component's own state (next: null)\n // OR parent calling processComponent (next: VNode)\n let { next, bu, u, parent, vnode } = instance;\n let originNext = next;\n let vnodeHook;\n if ((process.env.NODE_ENV !== 'production')) {\n pushWarningContext(next || instance.vnode);\n }\n // Disallow component effect recursion during pre-lifecycle hooks.\n toggleRecurse(instance, false);\n if (next) {\n next.el = vnode.el;\n updateComponentPreRender(instance, next, optimized);\n }\n else {\n next = vnode;\n }\n // beforeUpdate hook\n if (bu) {\n invokeArrayFns(bu);\n }\n // onVnodeBeforeUpdate\n if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) {\n invokeVNodeHook(vnodeHook, parent, next, vnode);\n }\n toggleRecurse(instance, true);\n // render\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `render`);\n }\n const nextTree = renderComponentRoot(instance);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `render`);\n }\n const prevTree = instance.subTree;\n instance.subTree = nextTree;\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `patch`);\n }\n patch(prevTree, nextTree, \n // parent may have changed if it's in a teleport\n hostParentNode(prevTree.el), \n // anchor may have changed if it's in a fragment\n getNextHostNode(prevTree), instance, parentSuspense, isSVG);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `patch`);\n }\n next.el = nextTree.el;\n if (originNext === null) {\n // self-triggered update. In case of HOC, update parent component\n // vnode el. HOC is indicated by parent instance's subTree pointing\n // to child component's vnode\n updateHOCHostEl(instance, nextTree.el);\n }\n // updated hook\n if (u) {\n queuePostRenderEffect(u, parentSuspense);\n }\n // onVnodeUpdated\n if ((vnodeHook = next.props && next.props.onVnodeUpdated)) {\n queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(instance);\n }\n if ((process.env.NODE_ENV !== 'production')) {\n popWarningContext();\n }\n }\n };\n // create reactive effect for rendering\n const effect = (instance.effect = new ReactiveEffect(componentUpdateFn, () => queueJob(update), instance.scope // track it in component's effect scope\n ));\n const update = (instance.update = () => effect.run());\n update.id = instance.uid;\n // allowRecurse\n // #1801, #2043 component render effects should allow recursive updates\n toggleRecurse(instance, true);\n if ((process.env.NODE_ENV !== 'production')) {\n effect.onTrack = instance.rtc\n ? e => invokeArrayFns(instance.rtc, e)\n : void 0;\n effect.onTrigger = instance.rtg\n ? e => invokeArrayFns(instance.rtg, e)\n : void 0;\n update.ownerInstance = instance;\n }\n update();\n };\n const updateComponentPreRender = (instance, nextVNode, optimized) => {\n nextVNode.component = instance;\n const prevProps = instance.vnode.props;\n instance.vnode = nextVNode;\n instance.next = null;\n updateProps(instance, nextVNode.props, prevProps, optimized);\n updateSlots(instance, nextVNode.children, optimized);\n pauseTracking();\n // props update may have triggered pre-flush watchers.\n // flush them before the render update.\n flushPreFlushCbs();\n resetTracking();\n };\n const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {\n const c1 = n1 && n1.children;\n const prevShapeFlag = n1 ? n1.shapeFlag : 0;\n const c2 = n2.children;\n const { patchFlag, shapeFlag } = n2;\n // fast path\n if (patchFlag > 0) {\n if (patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */) {\n // this could be either fully-keyed or mixed (some keyed some not)\n // presence of patchFlag means children are guaranteed to be arrays\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n else if (patchFlag & 256 /* PatchFlags.UNKEYED_FRAGMENT */) {\n // unkeyed\n patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n return;\n }\n }\n // children has 3 possibilities: text, array or no children.\n if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n // text children fast path\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n unmountChildren(c1, parentComponent, parentSuspense);\n }\n if (c2 !== c1) {\n hostSetElementText(container, c2);\n }\n }\n else {\n if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // prev children was array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n // two arrays, cannot assume anything, do full diff\n patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n // no new children, just unmount old\n unmountChildren(c1, parentComponent, parentSuspense, true);\n }\n }\n else {\n // prev children was text OR null\n // new children is array OR null\n if (prevShapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {\n hostSetElementText(container, '');\n }\n // mount new if array\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n }\n }\n };\n const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n c1 = c1 || EMPTY_ARR;\n c2 = c2 || EMPTY_ARR;\n const oldLength = c1.length;\n const newLength = c2.length;\n const commonLength = Math.min(oldLength, newLength);\n let i;\n for (i = 0; i < commonLength; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n if (oldLength > newLength) {\n // remove old\n unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);\n }\n else {\n // mount new\n mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);\n }\n };\n // can be all-keyed or mixed\n const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {\n let i = 0;\n const l2 = c2.length;\n let e1 = c1.length - 1; // prev ending index\n let e2 = l2 - 1; // next ending index\n // 1. sync from start\n // (a b) c\n // (a b) d e\n while (i <= e1 && i <= e2) {\n const n1 = c1[i];\n const n2 = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n i++;\n }\n // 2. sync from end\n // a (b c)\n // d e (b c)\n while (i <= e1 && i <= e2) {\n const n1 = c1[e1];\n const n2 = (c2[e2] = optimized\n ? cloneIfMounted(c2[e2])\n : normalizeVNode(c2[e2]));\n if (isSameVNodeType(n1, n2)) {\n patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else {\n break;\n }\n e1--;\n e2--;\n }\n // 3. common sequence + mount\n // (a b)\n // (a b) c\n // i = 2, e1 = 1, e2 = 2\n // (a b)\n // c (a b)\n // i = 0, e1 = -1, e2 = 0\n if (i > e1) {\n if (i <= e2) {\n const nextPos = e2 + 1;\n const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;\n while (i <= e2) {\n patch(null, (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i])), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n i++;\n }\n }\n }\n // 4. common sequence + unmount\n // (a b) c\n // (a b)\n // i = 2, e1 = 2, e2 = 1\n // a (b c)\n // (b c)\n // i = 0, e1 = 0, e2 = -1\n else if (i > e2) {\n while (i <= e1) {\n unmount(c1[i], parentComponent, parentSuspense, true);\n i++;\n }\n }\n // 5. unknown sequence\n // [i ... e1 + 1]: a b [c d e] f g\n // [i ... e2 + 1]: a b [e d c h] f g\n // i = 2, e1 = 4, e2 = 5\n else {\n const s1 = i; // prev starting index\n const s2 = i; // next starting index\n // 5.1 build key:index map for newChildren\n const keyToNewIndexMap = new Map();\n for (i = s2; i <= e2; i++) {\n const nextChild = (c2[i] = optimized\n ? cloneIfMounted(c2[i])\n : normalizeVNode(c2[i]));\n if (nextChild.key != null) {\n if ((process.env.NODE_ENV !== 'production') && keyToNewIndexMap.has(nextChild.key)) {\n warn(`Duplicate keys found during update:`, JSON.stringify(nextChild.key), `Make sure keys are unique.`);\n }\n keyToNewIndexMap.set(nextChild.key, i);\n }\n }\n // 5.2 loop through old children left to be patched and try to patch\n // matching nodes & remove nodes that are no longer present\n let j;\n let patched = 0;\n const toBePatched = e2 - s2 + 1;\n let moved = false;\n // used to track whether any node has moved\n let maxNewIndexSoFar = 0;\n // works as Map<newIndex, oldIndex>\n // Note that oldIndex is offset by +1\n // and oldIndex = 0 is a special value indicating the new node has\n // no corresponding old node.\n // used for determining longest stable subsequence\n const newIndexToOldIndexMap = new Array(toBePatched);\n for (i = 0; i < toBePatched; i++)\n newIndexToOldIndexMap[i] = 0;\n for (i = s1; i <= e1; i++) {\n const prevChild = c1[i];\n if (patched >= toBePatched) {\n // all new children have been patched so this can only be a removal\n unmount(prevChild, parentComponent, parentSuspense, true);\n continue;\n }\n let newIndex;\n if (prevChild.key != null) {\n newIndex = keyToNewIndexMap.get(prevChild.key);\n }\n else {\n // key-less node, try to locate a key-less node of the same type\n for (j = s2; j <= e2; j++) {\n if (newIndexToOldIndexMap[j - s2] === 0 &&\n isSameVNodeType(prevChild, c2[j])) {\n newIndex = j;\n break;\n }\n }\n }\n if (newIndex === undefined) {\n unmount(prevChild, parentComponent, parentSuspense, true);\n }\n else {\n newIndexToOldIndexMap[newIndex - s2] = i + 1;\n if (newIndex >= maxNewIndexSoFar) {\n maxNewIndexSoFar = newIndex;\n }\n else {\n moved = true;\n }\n patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n patched++;\n }\n }\n // 5.3 move and mount\n // generate longest stable subsequence only when nodes have moved\n const increasingNewIndexSequence = moved\n ? getSequence(newIndexToOldIndexMap)\n : EMPTY_ARR;\n j = increasingNewIndexSequence.length - 1;\n // looping backwards so that we can use last patched node as anchor\n for (i = toBePatched - 1; i >= 0; i--) {\n const nextIndex = s2 + i;\n const nextChild = c2[nextIndex];\n const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;\n if (newIndexToOldIndexMap[i] === 0) {\n // mount new\n patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n else if (moved) {\n // move if:\n // There is no stable subsequence (e.g. a reverse)\n // OR current node is not among the stable sequence\n if (j < 0 || i !== increasingNewIndexSequence[j]) {\n move(nextChild, container, anchor, 2 /* MoveType.REORDER */);\n }\n else {\n j--;\n }\n }\n }\n }\n };\n const move = (vnode, container, anchor, moveType, parentSuspense = null) => {\n const { el, type, transition, children, shapeFlag } = vnode;\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n move(vnode.component.subTree, container, anchor, moveType);\n return;\n }\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.move(container, anchor, moveType);\n return;\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type.move(vnode, container, anchor, internals);\n return;\n }\n if (type === Fragment) {\n hostInsert(el, container, anchor);\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, anchor, moveType);\n }\n hostInsert(vnode.anchor, container, anchor);\n return;\n }\n if (type === Static) {\n moveStaticNode(vnode, container, anchor);\n return;\n }\n // single nodes\n const needTransition = moveType !== 2 /* MoveType.REORDER */ &&\n shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition;\n if (needTransition) {\n if (moveType === 0 /* MoveType.ENTER */) {\n transition.beforeEnter(el);\n hostInsert(el, container, anchor);\n queuePostRenderEffect(() => transition.enter(el), parentSuspense);\n }\n else {\n const { leave, delayLeave, afterLeave } = transition;\n const remove = () => hostInsert(el, container, anchor);\n const performLeave = () => {\n leave(el, () => {\n remove();\n afterLeave && afterLeave();\n });\n };\n if (delayLeave) {\n delayLeave(el, remove, performLeave);\n }\n else {\n performLeave();\n }\n }\n }\n else {\n hostInsert(el, container, anchor);\n }\n };\n const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {\n const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;\n // unset ref\n if (ref != null) {\n setRef(ref, null, parentSuspense, vnode, true);\n }\n if (shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */) {\n parentComponent.ctx.deactivate(vnode);\n return;\n }\n const shouldInvokeDirs = shapeFlag & 1 /* ShapeFlags.ELEMENT */ && dirs;\n const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);\n let vnodeHook;\n if (shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeBeforeUnmount)) {\n invokeVNodeHook(vnodeHook, parentComponent, vnode);\n }\n if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n unmountComponent(vnode.component, parentSuspense, doRemove);\n }\n else {\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n vnode.suspense.unmount(parentSuspense, doRemove);\n return;\n }\n if (shouldInvokeDirs) {\n invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount');\n }\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);\n }\n else if (dynamicChildren &&\n // #1153: fast path should not be taken for non-stable (v-for) fragments\n (type !== Fragment ||\n (patchFlag > 0 && patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */))) {\n // fast path for block nodes: only need to unmount dynamic children.\n unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);\n }\n else if ((type === Fragment &&\n patchFlag &\n (128 /* PatchFlags.KEYED_FRAGMENT */ | 256 /* PatchFlags.UNKEYED_FRAGMENT */)) ||\n (!optimized && shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */)) {\n unmountChildren(children, parentComponent, parentSuspense);\n }\n if (doRemove) {\n remove(vnode);\n }\n }\n if ((shouldInvokeVnodeHook &&\n (vnodeHook = props && props.onVnodeUnmounted)) ||\n shouldInvokeDirs) {\n queuePostRenderEffect(() => {\n vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);\n shouldInvokeDirs &&\n invokeDirectiveHook(vnode, null, parentComponent, 'unmounted');\n }, parentSuspense);\n }\n };\n const remove = vnode => {\n const { type, el, anchor, transition } = vnode;\n if (type === Fragment) {\n if ((process.env.NODE_ENV !== 'production') &&\n vnode.patchFlag > 0 &&\n vnode.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */ &&\n transition &&\n !transition.persisted) {\n vnode.children.forEach(child => {\n if (child.type === Comment) {\n hostRemove(child.el);\n }\n else {\n remove(child);\n }\n });\n }\n else {\n removeFragment(el, anchor);\n }\n return;\n }\n if (type === Static) {\n removeStaticNode(vnode);\n return;\n }\n const performRemove = () => {\n hostRemove(el);\n if (transition && !transition.persisted && transition.afterLeave) {\n transition.afterLeave();\n }\n };\n if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&\n transition &&\n !transition.persisted) {\n const { leave, delayLeave } = transition;\n const performLeave = () => leave(el, performRemove);\n if (delayLeave) {\n delayLeave(vnode.el, performRemove, performLeave);\n }\n else {\n performLeave();\n }\n }\n else {\n performRemove();\n }\n };\n const removeFragment = (cur, end) => {\n // For fragments, directly remove all contained DOM nodes.\n // (fragment child nodes cannot have transition)\n let next;\n while (cur !== end) {\n next = hostNextSibling(cur);\n hostRemove(cur);\n cur = next;\n }\n hostRemove(end);\n };\n const unmountComponent = (instance, parentSuspense, doRemove) => {\n if ((process.env.NODE_ENV !== 'production') && instance.type.__hmrId) {\n unregisterHMR(instance);\n }\n const { bum, scope, update, subTree, um } = instance;\n // beforeUnmount hook\n if (bum) {\n invokeArrayFns(bum);\n }\n // stop effects in component scope\n scope.stop();\n // update may be null if a component is unmounted before its async\n // setup has resolved.\n if (update) {\n // so that scheduler will no longer invoke it\n update.active = false;\n unmount(subTree, instance, parentSuspense, doRemove);\n }\n // unmounted hook\n if (um) {\n queuePostRenderEffect(um, parentSuspense);\n }\n queuePostRenderEffect(() => {\n instance.isUnmounted = true;\n }, parentSuspense);\n // A component with async dep inside a pending suspense is unmounted before\n // its async dep resolves. This should remove the dep from the suspense, and\n // cause the suspense to resolve immediately if that was the last dep.\n if (parentSuspense &&\n parentSuspense.pendingBranch &&\n !parentSuspense.isUnmounted &&\n instance.asyncDep &&\n !instance.asyncResolved &&\n instance.suspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0) {\n parentSuspense.resolve();\n }\n }\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentRemoved(instance);\n }\n };\n const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {\n for (let i = start; i < children.length; i++) {\n unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);\n }\n };\n const getNextHostNode = vnode => {\n if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n return getNextHostNode(vnode.component.subTree);\n }\n if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n return vnode.suspense.next();\n }\n return hostNextSibling((vnode.anchor || vnode.el));\n };\n const render = (vnode, container, isSVG) => {\n if (vnode == null) {\n if (container._vnode) {\n unmount(container._vnode, null, null, true);\n }\n }\n else {\n patch(container._vnode || null, vnode, container, null, null, null, isSVG);\n }\n flushPreFlushCbs();\n flushPostFlushCbs();\n container._vnode = vnode;\n };\n const internals = {\n p: patch,\n um: unmount,\n m: move,\n r: remove,\n mt: mountComponent,\n mc: mountChildren,\n pc: patchChildren,\n pbc: patchBlockChildren,\n n: getNextHostNode,\n o: options\n };\n let hydrate;\n let hydrateNode;\n if (createHydrationFns) {\n [hydrate, hydrateNode] = createHydrationFns(internals);\n }\n return {\n render,\n hydrate,\n createApp: createAppAPI(render, hydrate)\n };\n}\nfunction toggleRecurse({ effect, update }, allowed) {\n effect.allowRecurse = update.allowRecurse = allowed;\n}\n/**\n * #1156\n * When a component is HMR-enabled, we need to make sure that all static nodes\n * inside a block also inherit the DOM element from the previous tree so that\n * HMR updates (which are full updates) can retrieve the element for patching.\n *\n * #2080\n * Inside keyed `template` fragment static children, if a fragment is moved,\n * the children will always be moved. Therefore, in order to ensure correct move\n * position, el should be inherited from previous nodes.\n */\nfunction traverseStaticChildren(n1, n2, shallow = false) {\n const ch1 = n1.children;\n const ch2 = n2.children;\n if (isArray(ch1) && isArray(ch2)) {\n for (let i = 0; i < ch1.length; i++) {\n // this is only called in the optimized path so array children are\n // guaranteed to be vnodes\n const c1 = ch1[i];\n let c2 = ch2[i];\n if (c2.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && !c2.dynamicChildren) {\n if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* PatchFlags.HYDRATE_EVENTS */) {\n c2 = ch2[i] = cloneIfMounted(ch2[i]);\n c2.el = c1.el;\n }\n if (!shallow)\n traverseStaticChildren(c1, c2);\n }\n // #6852 also inherit for text nodes\n if (c2.type === Text) {\n c2.el = c1.el;\n }\n // also inherit for comment nodes, but not placeholders (e.g. v-if which\n // would have received .el during block patch)\n if ((process.env.NODE_ENV !== 'production') && c2.type === Comment && !c2.el) {\n c2.el = c1.el;\n }\n }\n }\n}\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\nfunction getSequence(arr) {\n const p = arr.slice();\n const result = [0];\n let i, j, u, v, c;\n const len = arr.length;\n for (i = 0; i < len; i++) {\n const arrI = arr[i];\n if (arrI !== 0) {\n j = result[result.length - 1];\n if (arr[j] < arrI) {\n p[i] = j;\n result.push(i);\n continue;\n }\n u = 0;\n v = result.length - 1;\n while (u < v) {\n c = (u + v) >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n }\n else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = result.length;\n v = result[u - 1];\n while (u-- > 0) {\n result[u] = v;\n v = p[v];\n }\n return result;\n}\n\nconst isTeleport = (type) => type.__isTeleport;\nconst isTeleportDisabled = (props) => props && (props.disabled || props.disabled === '');\nconst isTargetSVG = (target) => typeof SVGElement !== 'undefined' && target instanceof SVGElement;\nconst resolveTarget = (props, select) => {\n const targetSelector = props && props.to;\n if (isString(targetSelector)) {\n if (!select) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Current renderer does not support string target for Teleports. ` +\n `(missing querySelector renderer option)`);\n return null;\n }\n else {\n const target = select(targetSelector);\n if (!target) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Failed to locate Teleport target with selector \"${targetSelector}\". ` +\n `Note the target element must exist before the component is mounted - ` +\n `i.e. the target cannot be rendered by the component itself, and ` +\n `ideally should be outside of the entire Vue component tree.`);\n }\n return target;\n }\n }\n else {\n if ((process.env.NODE_ENV !== 'production') && !targetSelector && !isTeleportDisabled(props)) {\n warn(`Invalid Teleport target: ${targetSelector}`);\n }\n return targetSelector;\n }\n};\nconst TeleportImpl = {\n __isTeleport: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {\n const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert, querySelector, createText, createComment } } = internals;\n const disabled = isTeleportDisabled(n2.props);\n let { shapeFlag, children, dynamicChildren } = n2;\n // #3302\n // HMR updated, force full diff\n if ((process.env.NODE_ENV !== 'production') && isHmrUpdating) {\n optimized = false;\n dynamicChildren = null;\n }\n if (n1 == null) {\n // insert anchors in the main view\n const placeholder = (n2.el = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport start')\n : createText(''));\n const mainAnchor = (n2.anchor = (process.env.NODE_ENV !== 'production')\n ? createComment('teleport end')\n : createText(''));\n insert(placeholder, container, anchor);\n insert(mainAnchor, container, anchor);\n const target = (n2.target = resolveTarget(n2.props, querySelector));\n const targetAnchor = (n2.targetAnchor = createText(''));\n if (target) {\n insert(targetAnchor, target);\n // #2652 we could be teleporting from a non-SVG tree into an SVG tree\n isSVG = isSVG || isTargetSVG(target);\n }\n else if ((process.env.NODE_ENV !== 'production') && !disabled) {\n warn('Invalid Teleport target on mount:', target, `(${typeof target})`);\n }\n const mount = (container, anchor) => {\n // Teleport *always* has Array children. This is enforced in both the\n // compiler and vnode children normalization.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);\n }\n };\n if (disabled) {\n mount(container, mainAnchor);\n }\n else if (target) {\n mount(target, targetAnchor);\n }\n }\n else {\n // update content\n n2.el = n1.el;\n const mainAnchor = (n2.anchor = n1.anchor);\n const target = (n2.target = n1.target);\n const targetAnchor = (n2.targetAnchor = n1.targetAnchor);\n const wasDisabled = isTeleportDisabled(n1.props);\n const currentContainer = wasDisabled ? container : target;\n const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;\n isSVG = isSVG || isTargetSVG(target);\n if (dynamicChildren) {\n // fast path when the teleport happens to be a block root\n patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds);\n // even in block tree mode we need to make sure all root-level nodes\n // in the teleport inherit previous DOM references so that they can\n // be moved in future patches.\n traverseStaticChildren(n1, n2, true);\n }\n else if (!optimized) {\n patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false);\n }\n if (disabled) {\n if (!wasDisabled) {\n // enabled -> disabled\n // move into main container\n moveTeleport(n2, container, mainAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n else {\n // target changed\n if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {\n const nextTarget = (n2.target = resolveTarget(n2.props, querySelector));\n if (nextTarget) {\n moveTeleport(n2, nextTarget, null, internals, 0 /* TeleportMoveTypes.TARGET_CHANGE */);\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn('Invalid Teleport target on update:', target, `(${typeof target})`);\n }\n }\n else if (wasDisabled) {\n // disabled -> enabled\n // move into teleport target\n moveTeleport(n2, target, targetAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);\n }\n }\n }\n updateCssVars(n2);\n },\n remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {\n const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;\n if (target) {\n hostRemove(targetAnchor);\n }\n // an unmounted teleport should always remove its children if not disabled\n if (doRemove || !isTeleportDisabled(props)) {\n hostRemove(anchor);\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);\n }\n }\n }\n },\n move: moveTeleport,\n hydrate: hydrateTeleport\n};\nfunction moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* TeleportMoveTypes.REORDER */) {\n // move target anchor if this is a target change.\n if (moveType === 0 /* TeleportMoveTypes.TARGET_CHANGE */) {\n insert(vnode.targetAnchor, container, parentAnchor);\n }\n const { el, anchor, shapeFlag, children, props } = vnode;\n const isReorder = moveType === 2 /* TeleportMoveTypes.REORDER */;\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(el, container, parentAnchor);\n }\n // if this is a re-order and teleport is enabled (content is in target)\n // do not move children. So the opposite is: only move children if this\n // is not a reorder, or the teleport is disabled\n if (!isReorder || isTeleportDisabled(props)) {\n // Teleport has either Array children or no children.\n if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n for (let i = 0; i < children.length; i++) {\n move(children[i], container, parentAnchor, 2 /* MoveType.REORDER */);\n }\n }\n }\n // move main view anchor if this is a re-order.\n if (isReorder) {\n insert(anchor, container, parentAnchor);\n }\n}\nfunction hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {\n const target = (vnode.target = resolveTarget(vnode.props, querySelector));\n if (target) {\n // if multiple teleports rendered to the same target element, we need to\n // pick up from where the last teleport finished instead of the first node\n const targetNode = target._lpa || target.firstChild;\n if (vnode.shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {\n if (isTeleportDisabled(vnode.props)) {\n vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);\n vnode.targetAnchor = targetNode;\n }\n else {\n vnode.anchor = nextSibling(node);\n // lookahead until we find the target anchor\n // we cannot rely on return value of hydrateChildren() because there\n // could be nested teleports\n let targetAnchor = targetNode;\n while (targetAnchor) {\n targetAnchor = nextSibling(targetAnchor);\n if (targetAnchor &&\n targetAnchor.nodeType === 8 &&\n targetAnchor.data === 'teleport anchor') {\n vnode.targetAnchor = targetAnchor;\n target._lpa =\n vnode.targetAnchor && nextSibling(vnode.targetAnchor);\n break;\n }\n }\n hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);\n }\n }\n updateCssVars(vnode);\n }\n return vnode.anchor && nextSibling(vnode.anchor);\n}\n// Force-casted public typing for h and TSX props inference\nconst Teleport = TeleportImpl;\nfunction updateCssVars(vnode) {\n // presence of .ut method indicates owner component uses css vars.\n // code path here can assume browser environment.\n const ctx = vnode.ctx;\n if (ctx && ctx.ut) {\n let node = vnode.children[0].el;\n while (node !== vnode.targetAnchor) {\n if (node.nodeType === 1)\n node.setAttribute('data-v-owner', ctx.uid);\n node = node.nextSibling;\n }\n ctx.ut();\n }\n}\n\nconst Fragment = Symbol((process.env.NODE_ENV !== 'production') ? 'Fragment' : undefined);\nconst Text = Symbol((process.env.NODE_ENV !== 'production') ? 'Text' : undefined);\nconst Comment = Symbol((process.env.NODE_ENV !== 'production') ? 'Comment' : undefined);\nconst Static = Symbol((process.env.NODE_ENV !== 'production') ? 'Static' : undefined);\n// Since v-if and v-for are the two possible ways node structure can dynamically\n// change, once we consider v-if branches and each v-for fragment a block, we\n// can divide a template into nested blocks, and within each block the node\n// structure would be stable. This allows us to skip most children diffing\n// and only worry about the dynamic nodes (indicated by patch flags).\nconst blockStack = [];\nlet currentBlock = null;\n/**\n * Open a block.\n * This must be called before `createBlock`. It cannot be part of `createBlock`\n * because the children of the block are evaluated before `createBlock` itself\n * is called. The generated code typically looks like this:\n *\n * ```js\n * function render() {\n * return (openBlock(),createBlock('div', null, [...]))\n * }\n * ```\n * disableTracking is true when creating a v-for fragment block, since a v-for\n * fragment always diffs its children.\n *\n * @private\n */\nfunction openBlock(disableTracking = false) {\n blockStack.push((currentBlock = disableTracking ? null : []));\n}\nfunction closeBlock() {\n blockStack.pop();\n currentBlock = blockStack[blockStack.length - 1] || null;\n}\n// Whether we should be tracking dynamic child nodes inside a block.\n// Only tracks when this value is > 0\n// We are not using a simple boolean because this value may need to be\n// incremented/decremented by nested usage of v-once (see below)\nlet isBlockTreeEnabled = 1;\n/**\n * Block tracking sometimes needs to be disabled, for example during the\n * creation of a tree that needs to be cached by v-once. The compiler generates\n * code like this:\n *\n * ``` js\n * _cache[1] || (\n * setBlockTracking(-1),\n * _cache[1] = createVNode(...),\n * setBlockTracking(1),\n * _cache[1]\n * )\n * ```\n *\n * @private\n */\nfunction setBlockTracking(value) {\n isBlockTreeEnabled += value;\n}\nfunction setupBlock(vnode) {\n // save current block children on the block vnode\n vnode.dynamicChildren =\n isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;\n // close block\n closeBlock();\n // a block is always going to be patched, so track it as a child of its\n // parent block\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\n/**\n * @private\n */\nfunction createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {\n return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true /* isBlock */));\n}\n/**\n * Create a block root vnode. Takes the same exact arguments as `createVNode`.\n * A block root keeps track of dynamic nodes within the block in the\n * `dynamicChildren` array.\n *\n * @private\n */\nfunction createBlock(type, props, children, patchFlag, dynamicProps) {\n return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true /* isBlock: prevent a block from tracking itself */));\n}\nfunction isVNode(value) {\n return value ? value.__v_isVNode === true : false;\n}\nfunction isSameVNodeType(n1, n2) {\n if ((process.env.NODE_ENV !== 'production') &&\n n2.shapeFlag & 6 /* ShapeFlags.COMPONENT */ &&\n hmrDirtyComponents.has(n2.type)) {\n // #7042, ensure the vnode being unmounted during HMR\n // bitwise operations to remove keep alive flags\n n1.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;\n n2.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;\n // HMR only: if the component has been hot-updated, force a reload.\n return false;\n }\n return n1.type === n2.type && n1.key === n2.key;\n}\nlet vnodeArgsTransformer;\n/**\n * Internal API for registering an arguments transform for createVNode\n * used for creating stubs in the test-utils\n * It is *internal* but needs to be exposed for test-utils to pick up proper\n * typings\n */\nfunction transformVNodeArgs(transformer) {\n vnodeArgsTransformer = transformer;\n}\nconst createVNodeWithArgsTransform = (...args) => {\n return _createVNode(...(vnodeArgsTransformer\n ? vnodeArgsTransformer(args, currentRenderingInstance)\n : args));\n};\nconst InternalObjectKey = `__vInternal`;\nconst normalizeKey = ({ key }) => key != null ? key : null;\nconst normalizeRef = ({ ref, ref_key, ref_for }) => {\n return (ref != null\n ? isString(ref) || isRef(ref) || isFunction(ref)\n ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for }\n : ref\n : null);\n};\nfunction createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ShapeFlags.ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) {\n const vnode = {\n __v_isVNode: true,\n __v_skip: true,\n type,\n props,\n key: props && normalizeKey(props),\n ref: props && normalizeRef(props),\n scopeId: currentScopeId,\n slotScopeIds: null,\n children,\n component: null,\n suspense: null,\n ssContent: null,\n ssFallback: null,\n dirs: null,\n transition: null,\n el: null,\n anchor: null,\n target: null,\n targetAnchor: null,\n staticCount: 0,\n shapeFlag,\n patchFlag,\n dynamicProps,\n dynamicChildren: null,\n appContext: null,\n ctx: currentRenderingInstance\n };\n if (needFullChildrenNormalization) {\n normalizeChildren(vnode, children);\n // normalize suspense children\n if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {\n type.normalize(vnode);\n }\n }\n else if (children) {\n // compiled element vnode - if children is passed, only possible types are\n // string or Array.\n vnode.shapeFlag |= isString(children)\n ? 8 /* ShapeFlags.TEXT_CHILDREN */\n : 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n // validate key\n if ((process.env.NODE_ENV !== 'production') && vnode.key !== vnode.key) {\n warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type);\n }\n // track vnode for block tree\n if (isBlockTreeEnabled > 0 &&\n // avoid a block node from tracking itself\n !isBlockNode &&\n // has current parent block\n currentBlock &&\n // presence of a patch flag indicates this node needs patching on updates.\n // component nodes also should always be patched, because even if the\n // component doesn't need to update, it needs to persist the instance on to\n // the next vnode so that it can be properly unmounted later.\n (vnode.patchFlag > 0 || shapeFlag & 6 /* ShapeFlags.COMPONENT */) &&\n // the EVENTS flag is only for hydration and if it is the only flag, the\n // vnode should not be considered dynamic due to handler caching.\n vnode.patchFlag !== 32 /* PatchFlags.HYDRATE_EVENTS */) {\n currentBlock.push(vnode);\n }\n return vnode;\n}\nconst createVNode = ((process.env.NODE_ENV !== 'production') ? createVNodeWithArgsTransform : _createVNode);\nfunction _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {\n if (!type || type === NULL_DYNAMIC_COMPONENT) {\n if ((process.env.NODE_ENV !== 'production') && !type) {\n warn(`Invalid vnode type when creating vnode: ${type}.`);\n }\n type = Comment;\n }\n if (isVNode(type)) {\n // createVNode receiving an existing vnode. This happens in cases like\n // <component :is=\"vnode\"/>\n // #2078 make sure to merge refs during the clone instead of overwriting it\n const cloned = cloneVNode(type, props, true /* mergeRef: true */);\n if (children) {\n normalizeChildren(cloned, children);\n }\n if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {\n if (cloned.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {\n currentBlock[currentBlock.indexOf(type)] = cloned;\n }\n else {\n currentBlock.push(cloned);\n }\n }\n cloned.patchFlag |= -2 /* PatchFlags.BAIL */;\n return cloned;\n }\n // class component normalization.\n if (isClassComponent(type)) {\n type = type.__vccOpts;\n }\n // class & style normalization.\n if (props) {\n // for reactive or proxy objects, we need to clone it to enable mutation.\n props = guardReactiveProps(props);\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (isObject(style)) {\n // reactive state objects need to be cloned since they are likely to be\n // mutated\n if (isProxy(style) && !isArray(style)) {\n style = extend({}, style);\n }\n props.style = normalizeStyle(style);\n }\n }\n // encode the vnode type information into a bitmap\n const shapeFlag = isString(type)\n ? 1 /* ShapeFlags.ELEMENT */\n : isSuspense(type)\n ? 128 /* ShapeFlags.SUSPENSE */\n : isTeleport(type)\n ? 64 /* ShapeFlags.TELEPORT */\n : isObject(type)\n ? 4 /* ShapeFlags.STATEFUL_COMPONENT */\n : isFunction(type)\n ? 2 /* ShapeFlags.FUNCTIONAL_COMPONENT */\n : 0;\n if ((process.env.NODE_ENV !== 'production') && shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */ && isProxy(type)) {\n type = toRaw(type);\n warn(`Vue received a Component which was made a reactive object. This can ` +\n `lead to unnecessary performance overhead, and should be avoided by ` +\n `marking the component with \\`markRaw\\` or using \\`shallowRef\\` ` +\n `instead of \\`ref\\`.`, `\\nComponent that was made reactive: `, type);\n }\n return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);\n}\nfunction guardReactiveProps(props) {\n if (!props)\n return null;\n return isProxy(props) || InternalObjectKey in props\n ? extend({}, props)\n : props;\n}\nfunction cloneVNode(vnode, extraProps, mergeRef = false) {\n // This is intentionally NOT using spread or extend to avoid the runtime\n // key enumeration cost.\n const { props, ref, patchFlag, children } = vnode;\n const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;\n const cloned = {\n __v_isVNode: true,\n __v_skip: true,\n type: vnode.type,\n props: mergedProps,\n key: mergedProps && normalizeKey(mergedProps),\n ref: extraProps && extraProps.ref\n ? // #2078 in the case of <component :is=\"vnode\" ref=\"extra\"/>\n // if the vnode itself already has a ref, cloneVNode will need to merge\n // the refs so the single vnode can be set on multiple refs\n mergeRef && ref\n ? isArray(ref)\n ? ref.concat(normalizeRef(extraProps))\n : [ref, normalizeRef(extraProps)]\n : normalizeRef(extraProps)\n : ref,\n scopeId: vnode.scopeId,\n slotScopeIds: vnode.slotScopeIds,\n children: (process.env.NODE_ENV !== 'production') && patchFlag === -1 /* PatchFlags.HOISTED */ && isArray(children)\n ? children.map(deepCloneVNode)\n : children,\n target: vnode.target,\n targetAnchor: vnode.targetAnchor,\n staticCount: vnode.staticCount,\n shapeFlag: vnode.shapeFlag,\n // if the vnode is cloned with extra props, we can no longer assume its\n // existing patch flag to be reliable and need to add the FULL_PROPS flag.\n // note: preserve flag for fragments since they use the flag for children\n // fast paths only.\n patchFlag: extraProps && vnode.type !== Fragment\n ? patchFlag === -1 // hoisted node\n ? 16 /* PatchFlags.FULL_PROPS */\n : patchFlag | 16 /* PatchFlags.FULL_PROPS */\n : patchFlag,\n dynamicProps: vnode.dynamicProps,\n dynamicChildren: vnode.dynamicChildren,\n appContext: vnode.appContext,\n dirs: vnode.dirs,\n transition: vnode.transition,\n // These should technically only be non-null on mounted VNodes. However,\n // they *should* be copied for kept-alive vnodes. So we just always copy\n // them since them being non-null during a mount doesn't affect the logic as\n // they will simply be overwritten.\n component: vnode.component,\n suspense: vnode.suspense,\n ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),\n ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),\n el: vnode.el,\n anchor: vnode.anchor,\n ctx: vnode.ctx\n };\n return cloned;\n}\n/**\n * Dev only, for HMR of hoisted vnodes reused in v-for\n * https://github.com/vitejs/vite/issues/2022\n */\nfunction deepCloneVNode(vnode) {\n const cloned = cloneVNode(vnode);\n if (isArray(vnode.children)) {\n cloned.children = vnode.children.map(deepCloneVNode);\n }\n return cloned;\n}\n/**\n * @private\n */\nfunction createTextVNode(text = ' ', flag = 0) {\n return createVNode(Text, null, text, flag);\n}\n/**\n * @private\n */\nfunction createStaticVNode(content, numberOfNodes) {\n // A static vnode can contain multiple stringified elements, and the number\n // of elements is necessary for hydration.\n const vnode = createVNode(Static, null, content);\n vnode.staticCount = numberOfNodes;\n return vnode;\n}\n/**\n * @private\n */\nfunction createCommentVNode(text = '', \n// when used as the v-else branch, the comment node must be created as a\n// block to ensure correct updates.\nasBlock = false) {\n return asBlock\n ? (openBlock(), createBlock(Comment, null, text))\n : createVNode(Comment, null, text);\n}\nfunction normalizeVNode(child) {\n if (child == null || typeof child === 'boolean') {\n // empty placeholder\n return createVNode(Comment);\n }\n else if (isArray(child)) {\n // fragment\n return createVNode(Fragment, null, \n // #3666, avoid reference pollution when reusing vnode\n child.slice());\n }\n else if (typeof child === 'object') {\n // already vnode, this should be the most common since compiled templates\n // always produce all-vnode children arrays\n return cloneIfMounted(child);\n }\n else {\n // strings and numbers\n return createVNode(Text, null, String(child));\n }\n}\n// optimized normalization for template-compiled render fns\nfunction cloneIfMounted(child) {\n return (child.el === null && child.patchFlag !== -1 /* PatchFlags.HOISTED */) ||\n child.memo\n ? child\n : cloneVNode(child);\n}\nfunction normalizeChildren(vnode, children) {\n let type = 0;\n const { shapeFlag } = vnode;\n if (children == null) {\n children = null;\n }\n else if (isArray(children)) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n }\n else if (typeof children === 'object') {\n if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 64 /* ShapeFlags.TELEPORT */)) {\n // Normalize slot to plain children for plain element and Teleport\n const slot = children.default;\n if (slot) {\n // _c marker is added by withCtx() indicating this is a compiled slot\n slot._c && (slot._d = false);\n normalizeChildren(vnode, slot());\n slot._c && (slot._d = true);\n }\n return;\n }\n else {\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n const slotFlag = children._;\n if (!slotFlag && !(InternalObjectKey in children)) {\n children._ctx = currentRenderingInstance;\n }\n else if (slotFlag === 3 /* SlotFlags.FORWARDED */ && currentRenderingInstance) {\n // a child component receives forwarded slots from the parent.\n // its slot type is determined by its parent's slot type.\n if (currentRenderingInstance.slots._ === 1 /* SlotFlags.STABLE */) {\n children._ = 1 /* SlotFlags.STABLE */;\n }\n else {\n children._ = 2 /* SlotFlags.DYNAMIC */;\n vnode.patchFlag |= 1024 /* PatchFlags.DYNAMIC_SLOTS */;\n }\n }\n }\n }\n else if (isFunction(children)) {\n children = { default: children, _ctx: currentRenderingInstance };\n type = 32 /* ShapeFlags.SLOTS_CHILDREN */;\n }\n else {\n children = String(children);\n // force teleport children to array so it can be moved around\n if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {\n type = 16 /* ShapeFlags.ARRAY_CHILDREN */;\n children = [createTextVNode(children)];\n }\n else {\n type = 8 /* ShapeFlags.TEXT_CHILDREN */;\n }\n }\n vnode.children = children;\n vnode.shapeFlag |= type;\n}\nfunction mergeProps(...args) {\n const ret = {};\n for (let i = 0; i < args.length; i++) {\n const toMerge = args[i];\n for (const key in toMerge) {\n if (key === 'class') {\n if (ret.class !== toMerge.class) {\n ret.class = normalizeClass([ret.class, toMerge.class]);\n }\n }\n else if (key === 'style') {\n ret.style = normalizeStyle([ret.style, toMerge.style]);\n }\n else if (isOn(key)) {\n const existing = ret[key];\n const incoming = toMerge[key];\n if (incoming &&\n existing !== incoming &&\n !(isArray(existing) && existing.includes(incoming))) {\n ret[key] = existing\n ? [].concat(existing, incoming)\n : incoming;\n }\n }\n else if (key !== '') {\n ret[key] = toMerge[key];\n }\n }\n }\n return ret;\n}\nfunction invokeVNodeHook(hook, instance, vnode, prevVNode = null) {\n callWithAsyncErrorHandling(hook, instance, 7 /* ErrorCodes.VNODE_HOOK */, [\n vnode,\n prevVNode\n ]);\n}\n\nconst emptyAppContext = createAppContext();\nlet uid$1 = 0;\nfunction createComponentInstance(vnode, parent, suspense) {\n const type = vnode.type;\n // inherit parent app context - or - if root, adopt from root vnode\n const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;\n const instance = {\n uid: uid$1++,\n vnode,\n type,\n parent,\n appContext,\n root: null,\n next: null,\n subTree: null,\n effect: null,\n update: null,\n scope: new EffectScope(true /* detached */),\n render: null,\n proxy: null,\n exposed: null,\n exposeProxy: null,\n withProxy: null,\n provides: parent ? parent.provides : Object.create(appContext.provides),\n accessCache: null,\n renderCache: [],\n // local resolved assets\n components: null,\n directives: null,\n // resolved props and emits options\n propsOptions: normalizePropsOptions(type, appContext),\n emitsOptions: normalizeEmitsOptions(type, appContext),\n // emit\n emit: null,\n emitted: null,\n // props default value\n propsDefaults: EMPTY_OBJ,\n // inheritAttrs\n inheritAttrs: type.inheritAttrs,\n // state\n ctx: EMPTY_OBJ,\n data: EMPTY_OBJ,\n props: EMPTY_OBJ,\n attrs: EMPTY_OBJ,\n slots: EMPTY_OBJ,\n refs: EMPTY_OBJ,\n setupState: EMPTY_OBJ,\n setupContext: null,\n // suspense related\n suspense,\n suspenseId: suspense ? suspense.pendingId : 0,\n asyncDep: null,\n asyncResolved: false,\n // lifecycle hooks\n // not using enums here because it results in computed properties\n isMounted: false,\n isUnmounted: false,\n isDeactivated: false,\n bc: null,\n c: null,\n bm: null,\n m: null,\n bu: null,\n u: null,\n um: null,\n bum: null,\n da: null,\n a: null,\n rtg: null,\n rtc: null,\n ec: null,\n sp: null\n };\n if ((process.env.NODE_ENV !== 'production')) {\n instance.ctx = createDevRenderContext(instance);\n }\n else {\n instance.ctx = { _: instance };\n }\n instance.root = parent ? parent.root : instance;\n instance.emit = emit$1.bind(null, instance);\n // apply custom element special handling\n if (vnode.ce) {\n vnode.ce(instance);\n }\n return instance;\n}\nlet currentInstance = null;\nconst getCurrentInstance = () => currentInstance || currentRenderingInstance;\nconst setCurrentInstance = (instance) => {\n currentInstance = instance;\n instance.scope.on();\n};\nconst unsetCurrentInstance = () => {\n currentInstance && currentInstance.scope.off();\n currentInstance = null;\n};\nconst isBuiltInTag = /*#__PURE__*/ makeMap('slot,component');\nfunction validateComponentName(name, config) {\n const appIsNativeTag = config.isNativeTag || NO;\n if (isBuiltInTag(name) || appIsNativeTag(name)) {\n warn('Do not use built-in or reserved HTML elements as component id: ' + name);\n }\n}\nfunction isStatefulComponent(instance) {\n return instance.vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */;\n}\nlet isInSSRComponentSetup = false;\nfunction setupComponent(instance, isSSR = false) {\n isInSSRComponentSetup = isSSR;\n const { props, children } = instance.vnode;\n const isStateful = isStatefulComponent(instance);\n initProps(instance, props, isStateful, isSSR);\n initSlots(instance, children);\n const setupResult = isStateful\n ? setupStatefulComponent(instance, isSSR)\n : undefined;\n isInSSRComponentSetup = false;\n return setupResult;\n}\nfunction setupStatefulComponent(instance, isSSR) {\n var _a;\n const Component = instance.type;\n if ((process.env.NODE_ENV !== 'production')) {\n if (Component.name) {\n validateComponentName(Component.name, instance.appContext.config);\n }\n if (Component.components) {\n const names = Object.keys(Component.components);\n for (let i = 0; i < names.length; i++) {\n validateComponentName(names[i], instance.appContext.config);\n }\n }\n if (Component.directives) {\n const names = Object.keys(Component.directives);\n for (let i = 0; i < names.length; i++) {\n validateDirectiveName(names[i]);\n }\n }\n if (Component.compilerOptions && isRuntimeOnly()) {\n warn(`\"compilerOptions\" is only supported when using a build of Vue that ` +\n `includes the runtime compiler. Since you are using a runtime-only ` +\n `build, the options should be passed via your build tool config instead.`);\n }\n }\n // 0. create render proxy property access cache\n instance.accessCache = Object.create(null);\n // 1. create public instance / render proxy\n // also mark it raw so it's never observed\n instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));\n if ((process.env.NODE_ENV !== 'production')) {\n exposePropsOnRenderContext(instance);\n }\n // 2. call setup()\n const { setup } = Component;\n if (setup) {\n const setupContext = (instance.setupContext =\n setup.length > 1 ? createSetupContext(instance) : null);\n setCurrentInstance(instance);\n pauseTracking();\n const setupResult = callWithErrorHandling(setup, instance, 0 /* ErrorCodes.SETUP_FUNCTION */, [(process.env.NODE_ENV !== 'production') ? shallowReadonly(instance.props) : instance.props, setupContext]);\n resetTracking();\n unsetCurrentInstance();\n if (isPromise(setupResult)) {\n setupResult.then(unsetCurrentInstance, unsetCurrentInstance);\n if (isSSR) {\n // return the promise so server-renderer can wait on it\n return setupResult\n .then((resolvedResult) => {\n handleSetupResult(instance, resolvedResult, isSSR);\n })\n .catch(e => {\n handleError(e, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);\n });\n }\n else {\n // async setup returned Promise.\n // bail here and wait for re-entry.\n instance.asyncDep = setupResult;\n if ((process.env.NODE_ENV !== 'production') && !instance.suspense) {\n const name = (_a = Component.name) !== null && _a !== void 0 ? _a : 'Anonymous';\n warn(`Component <${name}>: setup function returned a promise, but no ` +\n `<Suspense> boundary was found in the parent component tree. ` +\n `A component with async setup() must be nested in a <Suspense> ` +\n `in order to be rendered.`);\n }\n }\n }\n else {\n handleSetupResult(instance, setupResult, isSSR);\n }\n }\n else {\n finishComponentSetup(instance, isSSR);\n }\n}\nfunction handleSetupResult(instance, setupResult, isSSR) {\n if (isFunction(setupResult)) {\n // setup returned an inline render function\n if (instance.type.__ssrInlineRender) {\n // when the function's name is `ssrRender` (compiled by SFC inline mode),\n // set it as ssrRender instead.\n instance.ssrRender = setupResult;\n }\n else {\n instance.render = setupResult;\n }\n }\n else if (isObject(setupResult)) {\n if ((process.env.NODE_ENV !== 'production') && isVNode(setupResult)) {\n warn(`setup() should not return VNodes directly - ` +\n `return a render function instead.`);\n }\n // setup returned bindings.\n // assuming a render function compiled from template is present.\n if ((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) {\n instance.devtoolsRawSetupState = setupResult;\n }\n instance.setupState = proxyRefs(setupResult);\n if ((process.env.NODE_ENV !== 'production')) {\n exposeSetupStateOnRenderContext(instance);\n }\n }\n else if ((process.env.NODE_ENV !== 'production') && setupResult !== undefined) {\n warn(`setup() should return an object. Received: ${setupResult === null ? 'null' : typeof setupResult}`);\n }\n finishComponentSetup(instance, isSSR);\n}\nlet compile;\nlet installWithProxy;\n/**\n * For runtime-dom to register the compiler.\n * Note the exported method uses any to avoid d.ts relying on the compiler types.\n */\nfunction registerRuntimeCompiler(_compile) {\n compile = _compile;\n installWithProxy = i => {\n if (i.render._rc) {\n i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);\n }\n };\n}\n// dev only\nconst isRuntimeOnly = () => !compile;\nfunction finishComponentSetup(instance, isSSR, skipOptions) {\n const Component = instance.type;\n // template / render function normalization\n // could be already set when returned from setup()\n if (!instance.render) {\n // only do on-the-fly compile if not in SSR - SSR on-the-fly compilation\n // is done by server-renderer\n if (!isSSR && compile && !Component.render) {\n const template = Component.template ||\n resolveMergedOptions(instance).template;\n if (template) {\n if ((process.env.NODE_ENV !== 'production')) {\n startMeasure(instance, `compile`);\n }\n const { isCustomElement, compilerOptions } = instance.appContext.config;\n const { delimiters, compilerOptions: componentCompilerOptions } = Component;\n const finalCompilerOptions = extend(extend({\n isCustomElement,\n delimiters\n }, compilerOptions), componentCompilerOptions);\n Component.render = compile(template, finalCompilerOptions);\n if ((process.env.NODE_ENV !== 'production')) {\n endMeasure(instance, `compile`);\n }\n }\n }\n instance.render = (Component.render || NOOP);\n // for runtime-compiled render functions using `with` blocks, the render\n // proxy used needs a different `has` handler which is more performant and\n // also only allows a whitelist of globals to fallthrough.\n if (installWithProxy) {\n installWithProxy(instance);\n }\n }\n // support for 2.x options\n if (__VUE_OPTIONS_API__ && !(false )) {\n setCurrentInstance(instance);\n pauseTracking();\n applyOptions(instance);\n resetTracking();\n unsetCurrentInstance();\n }\n // warn missing template/render\n // the runtime compilation of template in SSR is done by server-render\n if ((process.env.NODE_ENV !== 'production') && !Component.render && instance.render === NOOP && !isSSR) {\n /* istanbul ignore if */\n if (!compile && Component.template) {\n warn(`Component provided template option but ` +\n `runtime compilation is not supported in this build of Vue.` +\n (` Configure your bundler to alias \"vue\" to \"vue/dist/vue.esm-bundler.js\".`\n ) /* should not happen */);\n }\n else {\n warn(`Component is missing template or render function.`);\n }\n }\n}\nfunction createAttrsProxy(instance) {\n return new Proxy(instance.attrs, (process.env.NODE_ENV !== 'production')\n ? {\n get(target, key) {\n markAttrsAccessed();\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n },\n set() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n },\n deleteProperty() {\n warn(`setupContext.attrs is readonly.`);\n return false;\n }\n }\n : {\n get(target, key) {\n track(instance, \"get\" /* TrackOpTypes.GET */, '$attrs');\n return target[key];\n }\n });\n}\nfunction createSetupContext(instance) {\n const expose = exposed => {\n if ((process.env.NODE_ENV !== 'production') && instance.exposed) {\n warn(`expose() should be called only once per setup().`);\n }\n instance.exposed = exposed || {};\n };\n let attrs;\n if ((process.env.NODE_ENV !== 'production')) {\n // We use getters in dev in case libs like test-utils overwrite instance\n // properties (overwrites should not be done in prod)\n return Object.freeze({\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n get slots() {\n return shallowReadonly(instance.slots);\n },\n get emit() {\n return (event, ...args) => instance.emit(event, ...args);\n },\n expose\n });\n }\n else {\n return {\n get attrs() {\n return attrs || (attrs = createAttrsProxy(instance));\n },\n slots: instance.slots,\n emit: instance.emit,\n expose\n };\n }\n}\nfunction getExposeProxy(instance) {\n if (instance.exposed) {\n return (instance.exposeProxy ||\n (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {\n get(target, key) {\n if (key in target) {\n return target[key];\n }\n else if (key in publicPropertiesMap) {\n return publicPropertiesMap[key](instance);\n }\n },\n has(target, key) {\n return key in target || key in publicPropertiesMap;\n }\n })));\n }\n}\nconst classifyRE = /(?:^|[-_])(\\w)/g;\nconst classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');\nfunction getComponentName(Component, includeInferred = true) {\n return isFunction(Component)\n ? Component.displayName || Component.name\n : Component.name || (includeInferred && Component.__name);\n}\n/* istanbul ignore next */\nfunction formatComponentName(instance, Component, isRoot = false) {\n let name = getComponentName(Component);\n if (!name && Component.__file) {\n const match = Component.__file.match(/([^/\\\\]+)\\.\\w+$/);\n if (match) {\n name = match[1];\n }\n }\n if (!name && instance && instance.parent) {\n // try to infer the name based on reverse resolution\n const inferFromRegistry = (registry) => {\n for (const key in registry) {\n if (registry[key] === Component) {\n return key;\n }\n }\n };\n name =\n inferFromRegistry(instance.components ||\n instance.parent.type.components) || inferFromRegistry(instance.appContext.components);\n }\n return name ? classify(name) : isRoot ? `App` : `Anonymous`;\n}\nfunction isClassComponent(value) {\n return isFunction(value) && '__vccOpts' in value;\n}\n\nconst computed = ((getterOrOptions, debugOptions) => {\n // @ts-ignore\n return computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);\n});\n\n// dev only\nconst warnRuntimeUsage = (method) => warn(`${method}() is a compiler-hint helper that is only usable inside ` +\n `<script setup> of a single file component. Its arguments should be ` +\n `compiled away and passing it at runtime has no effect.`);\n// implementation\nfunction defineProps() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineProps`);\n }\n return null;\n}\n// implementation\nfunction defineEmits() {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineEmits`);\n }\n return null;\n}\n/**\n * Vue `<script setup>` compiler macro for declaring a component's exposed\n * instance properties when it is accessed by a parent component via template\n * refs.\n *\n * `<script setup>` components are closed by default - i.e. variables inside\n * the `<script setup>` scope is not exposed to parent unless explicitly exposed\n * via `defineExpose`.\n *\n * This is only usable inside `<script setup>`, is compiled away in the\n * output and should **not** be actually called at runtime.\n */\nfunction defineExpose(exposed) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`defineExpose`);\n }\n}\n/**\n * Vue `<script setup>` compiler macro for providing props default values when\n * using type-based `defineProps` declaration.\n *\n * Example usage:\n * ```ts\n * withDefaults(defineProps<{\n * size?: number\n * labels?: string[]\n * }>(), {\n * size: 3,\n * labels: () => ['default label']\n * })\n * ```\n *\n * This is only usable inside `<script setup>`, is compiled away in the output\n * and should **not** be actually called at runtime.\n */\nfunction withDefaults(props, defaults) {\n if ((process.env.NODE_ENV !== 'production')) {\n warnRuntimeUsage(`withDefaults`);\n }\n return null;\n}\nfunction useSlots() {\n return getContext().slots;\n}\nfunction useAttrs() {\n return getContext().attrs;\n}\nfunction getContext() {\n const i = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !i) {\n warn(`useContext() called without active instance.`);\n }\n return i.setupContext || (i.setupContext = createSetupContext(i));\n}\n/**\n * Runtime helper for merging default declarations. Imported by compiled code\n * only.\n * @internal\n */\nfunction mergeDefaults(raw, defaults) {\n const props = isArray(raw)\n ? raw.reduce((normalized, p) => ((normalized[p] = {}), normalized), {})\n : raw;\n for (const key in defaults) {\n const opt = props[key];\n if (opt) {\n if (isArray(opt) || isFunction(opt)) {\n props[key] = { type: opt, default: defaults[key] };\n }\n else {\n opt.default = defaults[key];\n }\n }\n else if (opt === null) {\n props[key] = { default: defaults[key] };\n }\n else if ((process.env.NODE_ENV !== 'production')) {\n warn(`props default key \"${key}\" has no corresponding declaration.`);\n }\n }\n return props;\n}\n/**\n * Used to create a proxy for the rest element when destructuring props with\n * defineProps().\n * @internal\n */\nfunction createPropsRestProxy(props, excludedKeys) {\n const ret = {};\n for (const key in props) {\n if (!excludedKeys.includes(key)) {\n Object.defineProperty(ret, key, {\n enumerable: true,\n get: () => props[key]\n });\n }\n }\n return ret;\n}\n/**\n * `<script setup>` helper for persisting the current instance context over\n * async/await flows.\n *\n * `@vue/compiler-sfc` converts the following:\n *\n * ```ts\n * const x = await foo()\n * ```\n *\n * into:\n *\n * ```ts\n * let __temp, __restore\n * const x = (([__temp, __restore] = withAsyncContext(() => foo())),__temp=await __temp,__restore(),__temp)\n * ```\n * @internal\n */\nfunction withAsyncContext(getAwaitable) {\n const ctx = getCurrentInstance();\n if ((process.env.NODE_ENV !== 'production') && !ctx) {\n warn(`withAsyncContext called without active current instance. ` +\n `This is likely a bug.`);\n }\n let awaitable = getAwaitable();\n unsetCurrentInstance();\n if (isPromise(awaitable)) {\n awaitable = awaitable.catch(e => {\n setCurrentInstance(ctx);\n throw e;\n });\n }\n return [awaitable, () => setCurrentInstance(ctx)];\n}\n\n// Actual implementation\nfunction h(type, propsOrChildren, children) {\n const l = arguments.length;\n if (l === 2) {\n if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {\n // single vnode without props\n if (isVNode(propsOrChildren)) {\n return createVNode(type, null, [propsOrChildren]);\n }\n // props without children\n return createVNode(type, propsOrChildren);\n }\n else {\n // omit props\n return createVNode(type, null, propsOrChildren);\n }\n }\n else {\n if (l > 3) {\n children = Array.prototype.slice.call(arguments, 2);\n }\n else if (l === 3 && isVNode(children)) {\n children = [children];\n }\n return createVNode(type, propsOrChildren, children);\n }\n}\n\nconst ssrContextKey = Symbol((process.env.NODE_ENV !== 'production') ? `ssrContext` : ``);\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n (process.env.NODE_ENV !== 'production') &&\n warn(`Server rendering context not provided. Make sure to only call ` +\n `useSSRContext() conditionally in the server build.`);\n }\n return ctx;\n }\n};\n\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */]);\n}\n\nfunction initCustomFormatter() {\n /* eslint-disable no-restricted-globals */\n if (!(process.env.NODE_ENV !== 'production') || typeof window === 'undefined') {\n return;\n }\n const vueStyle = { style: 'color:#3ba776' };\n const numberStyle = { style: 'color:#0b1bc9' };\n const stringStyle = { style: 'color:#b62e24' };\n const keywordStyle = { style: 'color:#9d288c' };\n // custom formatter for Chrome\n // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html\n const formatter = {\n header(obj) {\n // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup\n if (!isObject(obj)) {\n return null;\n }\n if (obj.__isVue) {\n return ['div', vueStyle, `VueInstance`];\n }\n else if (isRef(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, genRefFlag(obj)],\n '<',\n formatValue(obj.value),\n `>`\n ];\n }\n else if (isReactive(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],\n '<',\n formatValue(obj),\n `>${isReadonly(obj) ? ` (readonly)` : ``}`\n ];\n }\n else if (isReadonly(obj)) {\n return [\n 'div',\n {},\n ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],\n '<',\n formatValue(obj),\n '>'\n ];\n }\n return null;\n },\n hasBody(obj) {\n return obj && obj.__isVue;\n },\n body(obj) {\n if (obj && obj.__isVue) {\n return [\n 'div',\n {},\n ...formatInstance(obj.$)\n ];\n }\n }\n };\n function formatInstance(instance) {\n const blocks = [];\n if (instance.type.props && instance.props) {\n blocks.push(createInstanceBlock('props', toRaw(instance.props)));\n }\n if (instance.setupState !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('setup', instance.setupState));\n }\n if (instance.data !== EMPTY_OBJ) {\n blocks.push(createInstanceBlock('data', toRaw(instance.data)));\n }\n const computed = extractKeys(instance, 'computed');\n if (computed) {\n blocks.push(createInstanceBlock('computed', computed));\n }\n const injected = extractKeys(instance, 'inject');\n if (injected) {\n blocks.push(createInstanceBlock('injected', injected));\n }\n blocks.push([\n 'div',\n {},\n [\n 'span',\n {\n style: keywordStyle.style + ';opacity:0.66'\n },\n '$ (internal): '\n ],\n ['object', { object: instance }]\n ]);\n return blocks;\n }\n function createInstanceBlock(type, target) {\n target = extend({}, target);\n if (!Object.keys(target).length) {\n return ['span', {}];\n }\n return [\n 'div',\n { style: 'line-height:1.25em;margin-bottom:0.6em' },\n [\n 'div',\n {\n style: 'color:#476582'\n },\n type\n ],\n [\n 'div',\n {\n style: 'padding-left:1.25em'\n },\n ...Object.keys(target).map(key => {\n return [\n 'div',\n {},\n ['span', keywordStyle, key + ': '],\n formatValue(target[key], false)\n ];\n })\n ]\n ];\n }\n function formatValue(v, asRaw = true) {\n if (typeof v === 'number') {\n return ['span', numberStyle, v];\n }\n else if (typeof v === 'string') {\n return ['span', stringStyle, JSON.stringify(v)];\n }\n else if (typeof v === 'boolean') {\n return ['span', keywordStyle, v];\n }\n else if (isObject(v)) {\n return ['object', { object: asRaw ? toRaw(v) : v }];\n }\n else {\n return ['span', stringStyle, String(v)];\n }\n }\n function extractKeys(instance, type) {\n const Comp = instance.type;\n if (isFunction(Comp)) {\n return;\n }\n const extracted = {};\n for (const key in instance.ctx) {\n if (isKeyOfType(Comp, key, type)) {\n extracted[key] = instance.ctx[key];\n }\n }\n return extracted;\n }\n function isKeyOfType(Comp, key, type) {\n const opts = Comp[type];\n if ((isArray(opts) && opts.includes(key)) ||\n (isObject(opts) && key in opts)) {\n return true;\n }\n if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {\n return true;\n }\n if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) {\n return true;\n }\n }\n function genRefFlag(v) {\n if (isShallow(v)) {\n return `ShallowRef`;\n }\n if (v.effect) {\n return `ComputedRef`;\n }\n return `Ref`;\n }\n if (window.devtoolsFormatters) {\n window.devtoolsFormatters.push(formatter);\n }\n else {\n window.devtoolsFormatters = [formatter];\n }\n}\n\nfunction withMemo(memo, render, cache, index) {\n const cached = cache[index];\n if (cached && isMemoSame(cached, memo)) {\n return cached;\n }\n const ret = render();\n // shallow clone\n ret.memo = memo.slice();\n return (cache[index] = ret);\n}\nfunction isMemoSame(cached, memo) {\n const prev = cached.memo;\n if (prev.length != memo.length) {\n return false;\n }\n for (let i = 0; i < prev.length; i++) {\n if (hasChanged(prev[i], memo[i])) {\n return false;\n }\n }\n // make sure to let parent block track it when returning cached\n if (isBlockTreeEnabled > 0 && currentBlock) {\n currentBlock.push(cached);\n }\n return true;\n}\n\n// Core API ------------------------------------------------------------------\nconst version = \"3.2.45\";\nconst _ssrUtils = {\n createComponentInstance,\n setupComponent,\n renderComponentRoot,\n setCurrentRenderingInstance,\n isVNode,\n normalizeVNode\n};\n/**\n * SSR utils for \\@vue/server-renderer. Only exposed in ssr-possible builds.\n * @internal\n */\nconst ssrUtils = (_ssrUtils );\n/**\n * @internal only exposed in compat builds\n */\nconst resolveFilter = null;\n/**\n * @internal only exposed in compat builds.\n */\nconst compatUtils = (null);\n\nexport { BaseTransition, Comment, Fragment, KeepAlive, Static, Suspense, Teleport, Text, callWithAsyncErrorHandling, callWithErrorHandling, cloneVNode, compatUtils, computed, createBlock, createCommentVNode, createElementBlock, createBaseVNode as createElementVNode, createHydrationRenderer, createPropsRestProxy, createRenderer, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, defineEmits, defineExpose, defineProps, devtools, getCurrentInstance, getTransitionRawChildren, guardReactiveProps, h, handleError, initCustomFormatter, inject, isMemoSame, isRuntimeOnly, isVNode, mergeDefaults, mergeProps, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, openBlock, popScopeId, provide, pushScopeId, queuePostFlushCb, registerRuntimeCompiler, renderList, renderSlot, resolveComponent, resolveDirective, resolveDynamicComponent, resolveFilter, resolveTransitionHooks, setBlockTracking, setDevtoolsHook, setTransitionHooks, ssrContextKey, ssrUtils, toHandlers, transformVNodeArgs, useAttrs, useSSRContext, useSlots, useTransitionState, version, warn, watch, watchEffect, watchPostEffect, watchSyncEffect, withAsyncContext, withCtx, withDefaults, withDirectives, withMemo, withScopeId };\n","/*!\n * vue-i18n v9.2.2\n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\nimport { getGlobalThis, format, makeSymbol, isPlainObject, isArray, isString, hasOwn, isObject, isBoolean, isRegExp, isFunction, inBrowser, assign, isNumber, warn, createEmitter, isEmptyObject } from '@intlify/shared';\nimport { CoreWarnCodes, CompileErrorCodes, createCompileError, DEFAULT_LOCALE, updateFallbackLocale, setFallbackContext, createCoreContext, clearDateTimeFormat, clearNumberFormat, setAdditionalMeta, getFallbackContext, NOT_REOSLVED, isTranslateFallbackWarn, isTranslateMissingWarn, parseTranslateArgs, translate, MISSING_RESOLVE_VALUE, parseDateTimeArgs, datetime, parseNumberArgs, number, fallbackWithLocaleChain, NUMBER_FORMAT_OPTIONS_KEYS, DATETIME_FORMAT_OPTIONS_KEYS, registerMessageResolver, resolveValue, registerLocaleFallbacker, setDevToolsHook } from '@intlify/core-base';\nimport { createVNode, Text, ref, computed, watch, getCurrentInstance, Fragment, h, effectScope, inject, onMounted, onUnmounted, shallowRef, onBeforeMount, isRef } from 'vue';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\nimport { VueDevToolsLabels, VueDevToolsPlaceholders, VueDevToolsTimelineColors } from '@intlify/vue-devtools';\n\n/**\r\n * Vue I18n Version\r\n *\r\n * @remarks\r\n * Semver format. Same format as the package.json `version` field.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst VERSION = '9.2.2';\r\n/**\r\n * This is only called in esm-bundler builds.\r\n * istanbul-ignore-next\r\n */\r\nfunction initFeatureFlags() {\r\n let needWarn = false;\r\n if (typeof __VUE_I18N_FULL_INSTALL__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true;\r\n }\r\n if (typeof __VUE_I18N_LEGACY_API__ !== 'boolean') {\r\n needWarn = true;\r\n getGlobalThis().__VUE_I18N_LEGACY_API__ = true;\r\n }\r\n if (typeof __INTLIFY_PROD_DEVTOOLS__ !== 'boolean') {\r\n getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && needWarn) {\r\n console.warn(`You are running the esm-bundler build of vue-i18n. It is recommended to ` +\r\n `configure your bundler to explicitly replace feature flag globals ` +\r\n `with boolean literals to get proper tree-shaking in the final bundle.`);\r\n }\r\n}\n\nlet code$1 = CoreWarnCodes.__EXTEND_POINT__;\r\nconst inc$1 = () => ++code$1;\r\nconst I18nWarnCodes = {\r\n FALLBACK_TO_ROOT: code$1,\r\n NOT_SUPPORTED_PRESERVE: inc$1(),\r\n NOT_SUPPORTED_FORMATTER: inc$1(),\r\n NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(),\r\n NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(),\r\n COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(),\r\n NOT_FOUND_PARENT_SCOPE: inc$1() // 13\r\n};\r\nconst warnMessages = {\r\n [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`,\r\n [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`,\r\n [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`,\r\n [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`\r\n};\r\nfunction getWarnMessage(code, ...args) {\r\n return format(warnMessages[code], ...args);\r\n}\n\nlet code = CompileErrorCodes.__EXTEND_POINT__;\r\nconst inc = () => ++code;\r\nconst I18nErrorCodes = {\r\n // composer module errors\r\n UNEXPECTED_RETURN_TYPE: code,\r\n // legacy module errors\r\n INVALID_ARGUMENT: inc(),\r\n // i18n module errors\r\n MUST_BE_CALL_SETUP_TOP: inc(),\r\n NOT_INSLALLED: inc(),\r\n NOT_AVAILABLE_IN_LEGACY_MODE: inc(),\r\n // directive module errors\r\n REQUIRED_VALUE: inc(),\r\n INVALID_VALUE: inc(),\r\n // vue-devtools errors\r\n CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(),\r\n NOT_INSLALLED_WITH_PROVIDE: inc(),\r\n // unexpected error\r\n UNEXPECTED_ERROR: inc(),\r\n // not compatible legacy vue-i18n constructor\r\n NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(),\r\n // bridge support vue 2.x only\r\n BRIDGE_SUPPORT_VUE_2_ONLY: inc(),\r\n // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n``\r\n MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(),\r\n // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly\r\n NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(),\r\n // for enhancement\r\n __EXTEND_POINT__: inc() // 29\r\n};\r\nfunction createI18nError(code, ...args) {\r\n return createCompileError(code, null, (process.env.NODE_ENV !== 'production') ? { messages: errorMessages, args } : undefined);\r\n}\r\nconst errorMessages = {\r\n [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer',\r\n [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument',\r\n [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function',\r\n [I18nErrorCodes.NOT_INSLALLED]: 'Need to install with `app.use` function',\r\n [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error',\r\n [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode',\r\n [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`,\r\n [I18nErrorCodes.INVALID_VALUE]: `Invalid value`,\r\n [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`,\r\n [I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE]: 'Need to install with `provide` function',\r\n [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.',\r\n [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only',\r\n [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: 'Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode',\r\n [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly'\r\n};\n\nconst TransrateVNodeSymbol = \r\n/* #__PURE__*/ makeSymbol('__transrateVNode');\r\nconst DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts');\r\nconst NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts');\r\nconst EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter');\r\nconst DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter');\r\nconst SetPluralRulesSymbol = makeSymbol('__setPluralRules');\r\nmakeSymbol('__intlifyMeta');\r\nconst InejctWithOption = /* #__PURE__*/ makeSymbol('__injectWithOption');\r\nconst __VUE_I18N_BRIDGE__ = '__VUE_I18N_BRIDGE__';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Transform flat json in obj to normal json in obj\r\n */\r\nfunction handleFlatJson(obj) {\r\n // check obj\r\n if (!isObject(obj)) {\r\n return obj;\r\n }\r\n for (const key in obj) {\r\n // check key\r\n if (!hasOwn(obj, key)) {\r\n continue;\r\n }\r\n // handle for normal json\r\n if (!key.includes('.')) {\r\n // recursive process value if value is also a object\r\n if (isObject(obj[key])) {\r\n handleFlatJson(obj[key]);\r\n }\r\n }\r\n // handle for flat json, transform to normal json\r\n else {\r\n // go to the last object\r\n const subKeys = key.split('.');\r\n const lastIndex = subKeys.length - 1;\r\n let currentObj = obj;\r\n for (let i = 0; i < lastIndex; i++) {\r\n if (!(subKeys[i] in currentObj)) {\r\n currentObj[subKeys[i]] = {};\r\n }\r\n currentObj = currentObj[subKeys[i]];\r\n }\r\n // update last object value, delete old property\r\n currentObj[subKeys[lastIndex]] = obj[key];\r\n delete obj[key];\r\n // recursive process value if value is also a object\r\n if (isObject(currentObj[subKeys[lastIndex]])) {\r\n handleFlatJson(currentObj[subKeys[lastIndex]]);\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\nfunction getLocaleMessages(locale, options) {\r\n const { messages, __i18n, messageResolver, flatJson } = options;\r\n // prettier-ignore\r\n const ret = isPlainObject(messages)\r\n ? messages\r\n : isArray(__i18n)\r\n ? {}\r\n : { [locale]: {} };\r\n // merge locale messages of i18n custom block\r\n if (isArray(__i18n)) {\r\n __i18n.forEach(custom => {\r\n if ('locale' in custom && 'resource' in custom) {\r\n const { locale, resource } = custom;\r\n if (locale) {\r\n ret[locale] = ret[locale] || {};\r\n deepCopy(resource, ret[locale]);\r\n }\r\n else {\r\n deepCopy(resource, ret);\r\n }\r\n }\r\n else {\r\n isString(custom) && deepCopy(JSON.parse(custom), ret);\r\n }\r\n });\r\n }\r\n // handle messages for flat json\r\n if (messageResolver == null && flatJson) {\r\n for (const key in ret) {\r\n if (hasOwn(ret, key)) {\r\n handleFlatJson(ret[key]);\r\n }\r\n }\r\n }\r\n return ret;\r\n}\r\nconst isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction deepCopy(src, des) {\r\n // src and des should both be objects, and non of then can be a array\r\n if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n for (const key in src) {\r\n if (hasOwn(src, key)) {\r\n if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) {\r\n // replace with src[key] when:\r\n // src[key] or des[key] is not a object, or\r\n // src[key] or des[key] is a array\r\n des[key] = src[key];\r\n }\r\n else {\r\n // src[key] and des[key] are both object, merge them\r\n deepCopy(src[key], des[key]);\r\n }\r\n }\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getComponentOptions(instance) {\r\n return instance.type ;\r\n}\r\nfunction adjustI18nResources(global, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n let messages = isObject(options.messages) ? options.messages : {};\r\n if ('__i18nGlobal' in componentOptions) {\r\n messages = getLocaleMessages(global.locale.value, {\r\n messages,\r\n __i18n: componentOptions.__i18nGlobal\r\n });\r\n }\r\n // merge locale messages\r\n const locales = Object.keys(messages);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeLocaleMessage(locale, messages[locale]);\r\n });\r\n }\r\n {\r\n // merge datetime formats\r\n if (isObject(options.datetimeFormats)) {\r\n const locales = Object.keys(options.datetimeFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeDateTimeFormat(locale, options.datetimeFormats[locale]);\r\n });\r\n }\r\n }\r\n // merge number formats\r\n if (isObject(options.numberFormats)) {\r\n const locales = Object.keys(options.numberFormats);\r\n if (locales.length) {\r\n locales.forEach(locale => {\r\n global.mergeNumberFormat(locale, options.numberFormats[locale]);\r\n });\r\n }\r\n }\r\n }\r\n}\r\nfunction createTextNode(key) {\r\n return createVNode(Text, null, key, 0)\r\n ;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n// extend VNode interface\r\nconst DEVTOOLS_META = '__INTLIFY_META__';\r\nlet composerID = 0;\r\nfunction defineCoreMissingHandler(missing) {\r\n return ((ctx, locale, key, type) => {\r\n return missing(locale, key, getCurrentInstance() || undefined, type);\r\n });\r\n}\r\n// for Intlify DevTools\r\nconst getMetaInfo = () => {\r\n const instance = getCurrentInstance();\r\n let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META])\r\n ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : null;\r\n};\r\n/**\r\n * Create composer interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createComposer(options = {}, VueI18nLegacy) {\r\n const { __root } = options;\r\n const _isGlobal = __root === undefined;\r\n let _inheritLocale = isBoolean(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.locale.value\r\n : isString(options.locale)\r\n ? options.locale\r\n : DEFAULT_LOCALE);\r\n const _fallbackLocale = ref(\r\n // prettier-ignore\r\n __root && _inheritLocale\r\n ? __root.fallbackLocale.value\r\n : isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = ref(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // prettier-ignore\r\n const _numberFormats = ref(isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} })\r\n ;\r\n // warning suppress options\r\n // prettier-ignore\r\n let _missingWarn = __root\r\n ? __root.missingWarn\r\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackWarn = __root\r\n ? __root.fallbackWarn\r\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n let _fallbackRoot = __root\r\n ? __root.fallbackRoot\r\n : isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n let _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n let _missing = isFunction(options.missing) ? options.missing : null;\r\n let _runtimeMissing = isFunction(options.missing)\r\n ? defineCoreMissingHandler(options.missing)\r\n : null;\r\n // postTranslation handler\r\n let _postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n let _warnHtmlMessage = __root\r\n ? __root.warnHtmlMessage\r\n : isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n let _escapeParameter = !!options.escapeParameter;\r\n // custom linked modifiers\r\n // prettier-ignore\r\n const _modifiers = __root\r\n ? __root.modifiers\r\n : isPlainObject(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n let _pluralRules = options.pluralRules || (__root && __root.pluralRules);\r\n // runtime context\r\n // eslint-disable-next-line prefer-const\r\n let _context;\r\n const getCoreContext = () => {\r\n _isGlobal && setFallbackContext(null);\r\n const ctxOptions = {\r\n version: VERSION,\r\n locale: _locale.value,\r\n fallbackLocale: _fallbackLocale.value,\r\n messages: _messages.value,\r\n modifiers: _modifiers,\r\n pluralRules: _pluralRules,\r\n missing: _runtimeMissing === null ? undefined : _runtimeMissing,\r\n missingWarn: _missingWarn,\r\n fallbackWarn: _fallbackWarn,\r\n fallbackFormat: _fallbackFormat,\r\n unresolving: true,\r\n postTranslation: _postTranslation === null ? undefined : _postTranslation,\r\n warnHtmlMessage: _warnHtmlMessage,\r\n escapeParameter: _escapeParameter,\r\n messageResolver: options.messageResolver,\r\n __meta: { framework: 'vue' }\r\n };\r\n {\r\n ctxOptions.datetimeFormats = _datetimeFormats.value;\r\n ctxOptions.numberFormats = _numberFormats.value;\r\n ctxOptions.__datetimeFormatters = isPlainObject(_context)\r\n ? _context.__datetimeFormatters\r\n : undefined;\r\n ctxOptions.__numberFormatters = isPlainObject(_context)\r\n ? _context.__numberFormatters\r\n : undefined;\r\n }\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n ctxOptions.__v_emitter = isPlainObject(_context)\r\n ? _context.__v_emitter\r\n : undefined;\r\n }\r\n const ctx = createCoreContext(ctxOptions);\r\n _isGlobal && setFallbackContext(ctx);\r\n return ctx;\r\n };\r\n _context = getCoreContext();\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ]\r\n ;\r\n }\r\n // locale\r\n const locale = computed({\r\n get: () => _locale.value,\r\n set: val => {\r\n _locale.value = val;\r\n _context.locale = _locale.value;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = computed({\r\n get: () => _fallbackLocale.value,\r\n set: val => {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = _fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, val);\r\n }\r\n });\r\n // messages\r\n const messages = computed(() => _messages.value);\r\n // datetimeFormats\r\n const datetimeFormats = /* #__PURE__*/ computed(() => _datetimeFormats.value);\r\n // numberFormats\r\n const numberFormats = /* #__PURE__*/ computed(() => _numberFormats.value);\r\n // getPostTranslationHandler\r\n function getPostTranslationHandler() {\r\n return isFunction(_postTranslation) ? _postTranslation : null;\r\n }\r\n // setPostTranslationHandler\r\n function setPostTranslationHandler(handler) {\r\n _postTranslation = handler;\r\n _context.postTranslation = handler;\r\n }\r\n // getMissingHandler\r\n function getMissingHandler() {\r\n return _missing;\r\n }\r\n // setMissingHandler\r\n function setMissingHandler(handler) {\r\n if (handler !== null) {\r\n _runtimeMissing = defineCoreMissingHandler(handler);\r\n }\r\n _missing = handler;\r\n _context.missing = _runtimeMissing;\r\n }\r\n function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n return type !== 'translate' || !arg.resolvedMessage;\r\n }\r\n const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {\r\n trackReactivityValues(); // track reactive dependency\r\n // NOTE: experimental !!\r\n let ret;\r\n if ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n try {\r\n setAdditionalMeta(getMetaInfo());\r\n if (!_isGlobal) {\r\n _context.fallbackContext = __root\r\n ? getFallbackContext()\r\n : undefined;\r\n }\r\n ret = fn(_context);\r\n }\r\n finally {\r\n setAdditionalMeta(null);\r\n if (!_isGlobal) {\r\n _context.fallbackContext = undefined;\r\n }\r\n }\r\n }\r\n else {\r\n ret = fn(_context);\r\n }\r\n if (isNumber(ret) && ret === NOT_REOSLVED) {\r\n const [key, arg2] = argumentParser();\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n __root &&\r\n isString(key) &&\r\n isResolvedTranslateMessage(warnType, arg2)) {\r\n if (_fallbackRoot &&\r\n (isTranslateFallbackWarn(_fallbackWarn, key) ||\r\n isTranslateMissingWarn(_missingWarn, key))) {\r\n warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, {\r\n key,\r\n type: warnType\r\n }));\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n const { __v_emitter: emitter } = _context;\r\n if (emitter && _fallbackRoot) {\r\n emitter.emit(\"fallback\" /* FALBACK */, {\r\n type: warnType,\r\n key,\r\n to: 'global',\r\n groupId: `${warnType}:${key}`\r\n });\r\n }\r\n }\r\n }\r\n return __root && _fallbackRoot\r\n ? fallbackSuccess(__root)\r\n : fallbackFail(key);\r\n }\r\n else if (successCondition(ret)) {\r\n return ret;\r\n }\r\n else {\r\n /* istanbul ignore next */\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);\r\n }\r\n };\r\n // t\r\n function t(...args) {\r\n return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val));\r\n }\r\n // rt\r\n function rt(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n if (arg3 && !isObject(arg3)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);\r\n }\r\n // d\r\n function d(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // n\r\n function n(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val));\r\n }\r\n // for custom processor\r\n function normalize(values) {\r\n return values.map(val => isString(val) || isNumber(val) || isBoolean(val)\r\n ? createTextNode(String(val))\r\n : val);\r\n }\r\n const interpolate = (val) => val;\r\n const processor = {\r\n normalize,\r\n interpolate,\r\n type: 'vnode'\r\n };\r\n // transrateVNode, using for `i18n-t` component\r\n function transrateVNode(...args) {\r\n return wrapWithDeps(context => {\r\n let ret;\r\n const _context = context;\r\n try {\r\n _context.processor = processor;\r\n ret = Reflect.apply(translate, null, [_context, ...args]);\r\n }\r\n finally {\r\n _context.processor = null;\r\n }\r\n return ret;\r\n }, () => parseTranslateArgs(...args), 'translate', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[TransrateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val));\r\n }\r\n // numberParts, using for `i18n-n` component\r\n function numberParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[NumberPartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n // datetimeParts, using for `i18n-d` component\r\n function datetimeParts(...args) {\r\n return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n root => root[DatetimePartsSymbol](...args), () => [], val => isString(val) || isArray(val));\r\n }\r\n function setPluralRules(rules) {\r\n _pluralRules = rules;\r\n _context.pluralRules = _pluralRules;\r\n }\r\n // te\r\n function te(key, locale) {\r\n const targetLocale = isString(locale) ? locale : _locale.value;\r\n const message = getLocaleMessage(targetLocale);\r\n return _context.messageResolver(message, key) !== null;\r\n }\r\n function resolveMessages(key) {\r\n let messages = null;\r\n const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);\r\n for (let i = 0; i < locales.length; i++) {\r\n const targetLocaleMessages = _messages.value[locales[i]] || {};\r\n const messageValue = _context.messageResolver(targetLocaleMessages, key);\r\n if (messageValue != null) {\r\n messages = messageValue;\r\n break;\r\n }\r\n }\r\n return messages;\r\n }\r\n // tm\r\n function tm(key) {\r\n const messages = resolveMessages(key);\r\n // prettier-ignore\r\n return messages != null\r\n ? messages\r\n : __root\r\n ? __root.tm(key) || {}\r\n : {};\r\n }\r\n // getLocaleMessage\r\n function getLocaleMessage(locale) {\r\n return (_messages.value[locale] || {});\r\n }\r\n // setLocaleMessage\r\n function setLocaleMessage(locale, message) {\r\n _messages.value[locale] = message;\r\n _context.messages = _messages.value;\r\n }\r\n // mergeLocaleMessage\r\n function mergeLocaleMessage(locale, message) {\r\n _messages.value[locale] = _messages.value[locale] || {};\r\n deepCopy(message, _messages.value[locale]);\r\n _context.messages = _messages.value;\r\n }\r\n // getDateTimeFormat\r\n function getDateTimeFormat(locale) {\r\n return _datetimeFormats.value[locale] || {};\r\n }\r\n // setDateTimeFormat\r\n function setDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = format;\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // mergeDateTimeFormat\r\n function mergeDateTimeFormat(locale, format) {\r\n _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format);\r\n _context.datetimeFormats = _datetimeFormats.value;\r\n clearDateTimeFormat(_context, locale, format);\r\n }\r\n // getNumberFormat\r\n function getNumberFormat(locale) {\r\n return _numberFormats.value[locale] || {};\r\n }\r\n // setNumberFormat\r\n function setNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = format;\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // mergeNumberFormat\r\n function mergeNumberFormat(locale, format) {\r\n _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format);\r\n _context.numberFormats = _numberFormats.value;\r\n clearNumberFormat(_context, locale, format);\r\n }\r\n // for debug\r\n composerID++;\r\n // watch root locale & fallbackLocale\r\n if (__root && inBrowser) {\r\n watch(__root.locale, (val) => {\r\n if (_inheritLocale) {\r\n _locale.value = val;\r\n _context.locale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n watch(__root.fallbackLocale, (val) => {\r\n if (_inheritLocale) {\r\n _fallbackLocale.value = val;\r\n _context.fallbackLocale = val;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n });\r\n }\r\n // define basic composition API!\r\n const composer = {\r\n id: composerID,\r\n locale,\r\n fallbackLocale,\r\n get inheritLocale() {\r\n return _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n _inheritLocale = val;\r\n if (val && __root) {\r\n _locale.value = __root.locale.value;\r\n _fallbackLocale.value = __root.fallbackLocale.value;\r\n updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);\r\n }\r\n },\r\n get availableLocales() {\r\n return Object.keys(_messages.value).sort();\r\n },\r\n messages,\r\n get modifiers() {\r\n return _modifiers;\r\n },\r\n get pluralRules() {\r\n return _pluralRules || {};\r\n },\r\n get isGlobal() {\r\n return _isGlobal;\r\n },\r\n get missingWarn() {\r\n return _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n _missingWarn = val;\r\n _context.missingWarn = _missingWarn;\r\n },\r\n get fallbackWarn() {\r\n return _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n _fallbackWarn = val;\r\n _context.fallbackWarn = _fallbackWarn;\r\n },\r\n get fallbackRoot() {\r\n return _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n _fallbackRoot = val;\r\n },\r\n get fallbackFormat() {\r\n return _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n _fallbackFormat = val;\r\n _context.fallbackFormat = _fallbackFormat;\r\n },\r\n get warnHtmlMessage() {\r\n return _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n _warnHtmlMessage = val;\r\n _context.warnHtmlMessage = val;\r\n },\r\n get escapeParameter() {\r\n return _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n _escapeParameter = val;\r\n _context.escapeParameter = val;\r\n },\r\n t,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n [SetPluralRulesSymbol]: setPluralRules\r\n };\r\n {\r\n composer.datetimeFormats = datetimeFormats;\r\n composer.numberFormats = numberFormats;\r\n composer.rt = rt;\r\n composer.te = te;\r\n composer.tm = tm;\r\n composer.d = d;\r\n composer.n = n;\r\n composer.getDateTimeFormat = getDateTimeFormat;\r\n composer.setDateTimeFormat = setDateTimeFormat;\r\n composer.mergeDateTimeFormat = mergeDateTimeFormat;\r\n composer.getNumberFormat = getNumberFormat;\r\n composer.setNumberFormat = setNumberFormat;\r\n composer.mergeNumberFormat = mergeNumberFormat;\r\n composer[InejctWithOption] = options.__injectWithOption;\r\n composer[TransrateVNodeSymbol] = transrateVNode;\r\n composer[DatetimePartsSymbol] = datetimeParts;\r\n composer[NumberPartsSymbol] = numberParts;\r\n }\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n composer[EnableEmitter] = (emitter) => {\r\n _context.__v_emitter = emitter;\r\n };\r\n composer[DisableEmitter] = () => {\r\n _context.__v_emitter = undefined;\r\n };\r\n }\r\n return composer;\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/**\r\n * Convert to I18n Composer Options from VueI18n Options\r\n *\r\n * @internal\r\n */\r\nfunction convertComposerOptions(options) {\r\n const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE;\r\n const fallbackLocale = isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : locale;\r\n const missing = isFunction(options.missing) ? options.missing : undefined;\r\n const missingWarn = isBoolean(options.silentTranslationWarn) ||\r\n isRegExp(options.silentTranslationWarn)\r\n ? !options.silentTranslationWarn\r\n : true;\r\n const fallbackWarn = isBoolean(options.silentFallbackWarn) ||\r\n isRegExp(options.silentFallbackWarn)\r\n ? !options.silentFallbackWarn\r\n : true;\r\n const fallbackRoot = isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n const fallbackFormat = !!options.formatFallbackMessages;\r\n const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {};\r\n const pluralizationRules = options.pluralizationRules;\r\n const postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : undefined;\r\n const warnHtmlMessage = isString(options.warnHtmlInMessage)\r\n ? options.warnHtmlInMessage !== 'off'\r\n : true;\r\n const escapeParameter = !!options.escapeParameterHtml;\r\n const inheritLocale = isBoolean(options.sync) ? options.sync : true;\r\n if ((process.env.NODE_ENV !== 'production') && options.formatter) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n }\r\n if ((process.env.NODE_ENV !== 'production') && options.preserveDirectiveContent) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n }\r\n let messages = options.messages;\r\n if (isPlainObject(options.sharedMessages)) {\r\n const sharedMessages = options.sharedMessages;\r\n const locales = Object.keys(sharedMessages);\r\n messages = locales.reduce((messages, locale) => {\r\n const message = messages[locale] || (messages[locale] = {});\r\n assign(message, sharedMessages[locale]);\r\n return messages;\r\n }, (messages || {}));\r\n }\r\n const { __i18n, __root, __injectWithOption } = options;\r\n const datetimeFormats = options.datetimeFormats;\r\n const numberFormats = options.numberFormats;\r\n const flatJson = options.flatJson;\r\n return {\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n flatJson,\r\n datetimeFormats,\r\n numberFormats,\r\n missing,\r\n missingWarn,\r\n fallbackWarn,\r\n fallbackRoot,\r\n fallbackFormat,\r\n modifiers,\r\n pluralRules: pluralizationRules,\r\n postTranslation,\r\n warnHtmlMessage,\r\n escapeParameter,\r\n messageResolver: options.messageResolver,\r\n inheritLocale,\r\n __i18n,\r\n __root,\r\n __injectWithOption\r\n };\r\n}\r\n/**\r\n * create VueI18n interface factory\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction createVueI18n(options = {}, VueI18nLegacy) {\r\n {\r\n const composer = createComposer(convertComposerOptions(options));\r\n // defines VueI18n\r\n const vueI18n = {\r\n // id\r\n id: composer.id,\r\n // locale\r\n get locale() {\r\n return composer.locale.value;\r\n },\r\n set locale(val) {\r\n composer.locale.value = val;\r\n },\r\n // fallbackLocale\r\n get fallbackLocale() {\r\n return composer.fallbackLocale.value;\r\n },\r\n set fallbackLocale(val) {\r\n composer.fallbackLocale.value = val;\r\n },\r\n // messages\r\n get messages() {\r\n return composer.messages.value;\r\n },\r\n // datetimeFormats\r\n get datetimeFormats() {\r\n return composer.datetimeFormats.value;\r\n },\r\n // numberFormats\r\n get numberFormats() {\r\n return composer.numberFormats.value;\r\n },\r\n // availableLocales\r\n get availableLocales() {\r\n return composer.availableLocales;\r\n },\r\n // formatter\r\n get formatter() {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n // dummy\r\n return {\r\n interpolate() {\r\n return [];\r\n }\r\n };\r\n },\r\n set formatter(val) {\r\n (process.env.NODE_ENV !== 'production') && warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER));\r\n },\r\n // missing\r\n get missing() {\r\n return composer.getMissingHandler();\r\n },\r\n set missing(handler) {\r\n composer.setMissingHandler(handler);\r\n },\r\n // silentTranslationWarn\r\n get silentTranslationWarn() {\r\n return isBoolean(composer.missingWarn)\r\n ? !composer.missingWarn\r\n : composer.missingWarn;\r\n },\r\n set silentTranslationWarn(val) {\r\n composer.missingWarn = isBoolean(val) ? !val : val;\r\n },\r\n // silentFallbackWarn\r\n get silentFallbackWarn() {\r\n return isBoolean(composer.fallbackWarn)\r\n ? !composer.fallbackWarn\r\n : composer.fallbackWarn;\r\n },\r\n set silentFallbackWarn(val) {\r\n composer.fallbackWarn = isBoolean(val) ? !val : val;\r\n },\r\n // modifiers\r\n get modifiers() {\r\n return composer.modifiers;\r\n },\r\n // formatFallbackMessages\r\n get formatFallbackMessages() {\r\n return composer.fallbackFormat;\r\n },\r\n set formatFallbackMessages(val) {\r\n composer.fallbackFormat = val;\r\n },\r\n // postTranslation\r\n get postTranslation() {\r\n return composer.getPostTranslationHandler();\r\n },\r\n set postTranslation(handler) {\r\n composer.setPostTranslationHandler(handler);\r\n },\r\n // sync\r\n get sync() {\r\n return composer.inheritLocale;\r\n },\r\n set sync(val) {\r\n composer.inheritLocale = val;\r\n },\r\n // warnInHtmlMessage\r\n get warnHtmlInMessage() {\r\n return composer.warnHtmlMessage ? 'warn' : 'off';\r\n },\r\n set warnHtmlInMessage(val) {\r\n composer.warnHtmlMessage = val !== 'off';\r\n },\r\n // escapeParameterHtml\r\n get escapeParameterHtml() {\r\n return composer.escapeParameter;\r\n },\r\n set escapeParameterHtml(val) {\r\n composer.escapeParameter = val;\r\n },\r\n // preserveDirectiveContent\r\n get preserveDirectiveContent() {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n return true;\r\n },\r\n set preserveDirectiveContent(val) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE));\r\n },\r\n // pluralizationRules\r\n get pluralizationRules() {\r\n return composer.pluralRules || {};\r\n },\r\n // for internal\r\n __composer: composer,\r\n // t\r\n t(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = {};\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n rt(...args) {\r\n return Reflect.apply(composer.rt, composer, [...args]);\r\n },\r\n // tc\r\n tc(...args) {\r\n const [arg1, arg2, arg3] = args;\r\n const options = { plural: 1 };\r\n let list = null;\r\n let named = null;\r\n if (!isString(arg1)) {\r\n throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);\r\n }\r\n const key = arg1;\r\n if (isString(arg2)) {\r\n options.locale = arg2;\r\n }\r\n else if (isNumber(arg2)) {\r\n options.plural = arg2;\r\n }\r\n else if (isArray(arg2)) {\r\n list = arg2;\r\n }\r\n else if (isPlainObject(arg2)) {\r\n named = arg2;\r\n }\r\n if (isString(arg3)) {\r\n options.locale = arg3;\r\n }\r\n else if (isArray(arg3)) {\r\n list = arg3;\r\n }\r\n else if (isPlainObject(arg3)) {\r\n named = arg3;\r\n }\r\n // return composer.t(key, (list || named || {}) as any, options)\r\n return Reflect.apply(composer.t, composer, [\r\n key,\r\n (list || named || {}),\r\n options\r\n ]);\r\n },\r\n // te\r\n te(key, locale) {\r\n return composer.te(key, locale);\r\n },\r\n // tm\r\n tm(key) {\r\n return composer.tm(key);\r\n },\r\n // getLocaleMessage\r\n getLocaleMessage(locale) {\r\n return composer.getLocaleMessage(locale);\r\n },\r\n // setLocaleMessage\r\n setLocaleMessage(locale, message) {\r\n composer.setLocaleMessage(locale, message);\r\n },\r\n // mergeLocaleMessage\r\n mergeLocaleMessage(locale, message) {\r\n composer.mergeLocaleMessage(locale, message);\r\n },\r\n // d\r\n d(...args) {\r\n return Reflect.apply(composer.d, composer, [...args]);\r\n },\r\n // getDateTimeFormat\r\n getDateTimeFormat(locale) {\r\n return composer.getDateTimeFormat(locale);\r\n },\r\n // setDateTimeFormat\r\n setDateTimeFormat(locale, format) {\r\n composer.setDateTimeFormat(locale, format);\r\n },\r\n // mergeDateTimeFormat\r\n mergeDateTimeFormat(locale, format) {\r\n composer.mergeDateTimeFormat(locale, format);\r\n },\r\n // n\r\n n(...args) {\r\n return Reflect.apply(composer.n, composer, [...args]);\r\n },\r\n // getNumberFormat\r\n getNumberFormat(locale) {\r\n return composer.getNumberFormat(locale);\r\n },\r\n // setNumberFormat\r\n setNumberFormat(locale, format) {\r\n composer.setNumberFormat(locale, format);\r\n },\r\n // mergeNumberFormat\r\n mergeNumberFormat(locale, format) {\r\n composer.mergeNumberFormat(locale, format);\r\n },\r\n // getChoiceIndex\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n getChoiceIndex(choice, choicesLength) {\r\n (process.env.NODE_ENV !== 'production') &&\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX));\r\n return -1;\r\n },\r\n // for internal\r\n __onComponentInstanceCreated(target) {\r\n const { componentInstanceCreatedListener } = options;\r\n if (componentInstanceCreatedListener) {\r\n componentInstanceCreatedListener(target, vueI18n);\r\n }\r\n }\r\n };\r\n // for vue-devtools timeline event\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n vueI18n.__enableEmitter = (emitter) => {\r\n const __composer = composer;\r\n __composer[EnableEmitter] && __composer[EnableEmitter](emitter);\r\n };\r\n vueI18n.__disableEmitter = () => {\r\n const __composer = composer;\r\n __composer[DisableEmitter] && __composer[DisableEmitter]();\r\n };\r\n }\r\n return vueI18n;\r\n }\r\n}\r\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst baseFormatProps = {\r\n tag: {\r\n type: [String, Object]\r\n },\r\n locale: {\r\n type: String\r\n },\r\n scope: {\r\n type: String,\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n validator: (val /* ComponetI18nScope */) => val === 'parent' || val === 'global',\r\n default: 'parent' /* ComponetI18nScope */\r\n },\r\n i18n: {\r\n type: Object\r\n }\r\n};\n\nfunction getInterpolateArg(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n{ slots }, // SetupContext,\r\nkeys) {\r\n if (keys.length === 1 && keys[0] === 'default') {\r\n // default slot with list\r\n const ret = slots.default ? slots.default() : [];\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return ret.reduce((slot, current) => {\r\n return (slot = [\r\n ...slot,\r\n ...(isArray(current.children) ? current.children : [current])\r\n ]);\r\n }, []);\r\n }\r\n else {\r\n // named slots\r\n return keys.reduce((arg, key) => {\r\n const slot = slots[key];\r\n if (slot) {\r\n arg[key] = slot();\r\n }\r\n return arg;\r\n }, {});\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getFragmentableTag(tag) {\r\n return Fragment ;\r\n}\n\n/**\r\n * Translation Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [TranslationProps](component#translationprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Component Interpolation](../guide/advanced/component)\r\n *\r\n * @example\r\n * ```html\r\n * <div id=\"app\">\r\n * <!-- ... -->\r\n * <i18n path=\"term\" tag=\"label\" for=\"tos\">\r\n * <a :href=\"url\" target=\"_blank\">{{ $t('tos') }}</a>\r\n * </i18n>\r\n * <!-- ... -->\r\n * </div>\r\n * ```\r\n * ```js\r\n * import { createApp } from 'vue'\r\n * import { createI18n } from 'vue-i18n'\r\n *\r\n * const messages = {\r\n * en: {\r\n * tos: 'Term of Service',\r\n * term: 'I accept xxx {0}.'\r\n * },\r\n * ja: {\r\n * tos: '利用規約',\r\n * term: '私は xxx の{0}に同意します。'\r\n * }\r\n * }\r\n *\r\n * const i18n = createI18n({\r\n * locale: 'en',\r\n * messages\r\n * })\r\n *\r\n * const app = createApp({\r\n * data: {\r\n * url: '/term'\r\n * }\r\n * }).use(i18n).mount('#app')\r\n * ```\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst Translation = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-t',\r\n props: assign({\r\n keypath: {\r\n type: String,\r\n required: true\r\n },\r\n plural: {\r\n type: [Number, String],\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n validator: (val) => isNumber(val) || !isNaN(val)\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const { slots, attrs } = context;\r\n // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050\r\n const i18n = props.i18n ||\r\n useI18n({\r\n useScope: props.scope,\r\n __useComponent: true\r\n });\r\n return () => {\r\n const keys = Object.keys(slots).filter(key => key !== '_');\r\n const options = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (props.plural !== undefined) {\r\n options.plural = isString(props.plural) ? +props.plural : props.plural;\r\n }\r\n const arg = getInterpolateArg(context, keys);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const children = i18n[TransrateVNodeSymbol](props.keypath, arg, options);\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n }\r\n};\n\nfunction isVNode(target) {\r\n return isArray(target) && !isString(target[0]);\r\n}\r\nfunction renderFormatter(props, context, slotKeys, partFormatter) {\r\n const { slots, attrs } = context;\r\n return () => {\r\n const options = { part: true };\r\n let overrides = {};\r\n if (props.locale) {\r\n options.locale = props.locale;\r\n }\r\n if (isString(props.format)) {\r\n options.key = props.format;\r\n }\r\n else if (isObject(props.format)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (isString(props.format.key)) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n options.key = props.format.key;\r\n }\r\n // Filter out number format options only\r\n overrides = Object.keys(props.format).reduce((options, prop) => {\r\n return slotKeys.includes(prop)\r\n ? assign({}, options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any\r\n : options;\r\n }, {});\r\n }\r\n const parts = partFormatter(...[props.value, options, overrides]);\r\n let children = [options.key];\r\n if (isArray(parts)) {\r\n children = parts.map((part, index) => {\r\n const slot = slots[part.type];\r\n const node = slot\r\n ? slot({ [part.type]: part.value, index, parts })\r\n : [part.value];\r\n if (isVNode(node)) {\r\n node[0].key = `${part.type}-${index}`;\r\n }\r\n return node;\r\n });\r\n }\r\n else if (isString(parts)) {\r\n children = [parts];\r\n }\r\n const assignedAttrs = assign({}, attrs);\r\n const tag = isString(props.tag) || isObject(props.tag)\r\n ? props.tag\r\n : getFragmentableTag();\r\n return h(tag, assignedAttrs, children);\r\n };\r\n}\n\n/**\r\n * Number Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst NumberFormat = /* defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-n',\r\n props: assign({\r\n value: {\r\n type: Number,\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[NumberPartsSymbol](...args));\r\n }\r\n};\n\n/**\r\n * Datetime Format Component\r\n *\r\n * @remarks\r\n * See the following items for property about details\r\n *\r\n * @VueI18nSee [FormattableProps](component#formattableprops)\r\n * @VueI18nSee [BaseFormatProps](component#baseformatprops)\r\n * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting)\r\n *\r\n * @VueI18nDanger\r\n * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts)\r\n *\r\n * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat)\r\n *\r\n * @VueI18nComponent\r\n */\r\nconst DatetimeFormat = /*defineComponent */ {\r\n /* eslint-disable */\r\n name: 'i18n-d',\r\n props: assign({\r\n value: {\r\n type: [Number, Date],\r\n required: true\r\n },\r\n format: {\r\n type: [String, Object]\r\n }\r\n }, baseFormatProps),\r\n /* eslint-enable */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setup(props, context) {\r\n const i18n = props.i18n ||\r\n useI18n({ useScope: 'parent', __useComponent: true });\r\n return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n i18n[DatetimePartsSymbol](...args));\r\n }\r\n};\n\nfunction getComposer$2(i18n, instance) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n return (i18nInternal.__getInstance(instance) || i18n.global);\r\n }\r\n else {\r\n const vueI18n = i18nInternal.__getInstance(instance);\r\n return vueI18n != null\r\n ? vueI18n.__composer\r\n : i18n.global.__composer;\r\n }\r\n}\r\nfunction vTDirective(i18n) {\r\n const _process = (binding) => {\r\n const { instance, modifiers, value } = binding;\r\n /* istanbul ignore if */\r\n if (!instance || !instance.$) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const composer = getComposer$2(i18n, instance.$);\r\n if ((process.env.NODE_ENV !== 'production') && modifiers.preserve) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE));\r\n }\r\n const parsedValue = parseValue(value);\r\n return [\r\n Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),\r\n composer\r\n ];\r\n };\r\n const register = (el, binding) => {\r\n const [textContent, composer] = _process(binding);\r\n if (inBrowser && i18n.global === composer) {\r\n // global scope only\r\n el.__i18nWatcher = watch(composer.locale, () => {\r\n binding.instance && binding.instance.$forceUpdate();\r\n });\r\n }\r\n el.__composer = composer;\r\n el.textContent = textContent;\r\n };\r\n const unregister = (el) => {\r\n if (inBrowser && el.__i18nWatcher) {\r\n el.__i18nWatcher();\r\n el.__i18nWatcher = undefined;\r\n delete el.__i18nWatcher;\r\n }\r\n if (el.__composer) {\r\n el.__composer = undefined;\r\n delete el.__composer;\r\n }\r\n };\r\n const update = (el, { value }) => {\r\n if (el.__composer) {\r\n const composer = el.__composer;\r\n const parsedValue = parseValue(value);\r\n el.textContent = Reflect.apply(composer.t, composer, [\r\n ...makeParams(parsedValue)\r\n ]);\r\n }\r\n };\r\n const getSSRProps = (binding) => {\r\n const [textContent] = _process(binding);\r\n return { textContent };\r\n };\r\n return {\r\n created: register,\r\n unmounted: unregister,\r\n beforeUpdate: update,\r\n getSSRProps\r\n };\r\n}\r\nfunction parseValue(value) {\r\n if (isString(value)) {\r\n return { path: value };\r\n }\r\n else if (isPlainObject(value)) {\r\n if (!('path' in value)) {\r\n throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path');\r\n }\r\n return value;\r\n }\r\n else {\r\n throw createI18nError(I18nErrorCodes.INVALID_VALUE);\r\n }\r\n}\r\nfunction makeParams(value) {\r\n const { path, locale, args, choice, plural } = value;\r\n const options = {};\r\n const named = args || {};\r\n if (isString(locale)) {\r\n options.locale = locale;\r\n }\r\n if (isNumber(choice)) {\r\n options.plural = choice;\r\n }\r\n if (isNumber(plural)) {\r\n options.plural = plural;\r\n }\r\n return [path, named, options];\r\n}\n\nfunction apply(app, i18n, ...options) {\r\n const pluginOptions = isPlainObject(options[0])\r\n ? options[0]\r\n : {};\r\n const useI18nComponentName = !!pluginOptions.useI18nComponentName;\r\n const globalInstall = isBoolean(pluginOptions.globalInstall)\r\n ? pluginOptions.globalInstall\r\n : true;\r\n if ((process.env.NODE_ENV !== 'production') && globalInstall && useI18nComponentName) {\r\n warn(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, {\r\n name: Translation.name\r\n }));\r\n }\r\n if (globalInstall) {\r\n // install components\r\n app.component(!useI18nComponentName ? Translation.name : 'i18n', Translation);\r\n app.component(NumberFormat.name, NumberFormat);\r\n app.component(DatetimeFormat.name, DatetimeFormat);\r\n }\r\n // install directive\r\n {\r\n app.directive('t', vTDirective(i18n));\r\n }\r\n}\n\nconst VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties';\r\nlet devtoolsApi;\r\nasync function enableDevTools(app, i18n) {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n setupDevtoolsPlugin({\r\n id: \"vue-devtools-plugin-vue-i18n\" /* PLUGIN */,\r\n label: VueDevToolsLabels[\"vue-devtools-plugin-vue-i18n\" /* PLUGIN */],\r\n packageName: 'vue-i18n',\r\n homepage: 'https://vue-i18n.intlify.dev',\r\n logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png',\r\n componentStateTypes: [VUE_I18N_COMPONENT_TYPES],\r\n app: app // eslint-disable-line @typescript-eslint/no-explicit-any\r\n }, api => {\r\n devtoolsApi = api;\r\n api.on.visitComponentTree(({ componentInstance, treeNode }) => {\r\n updateComponentTreeTags(componentInstance, treeNode, i18n);\r\n });\r\n api.on.inspectComponent(({ componentInstance, instanceData }) => {\r\n if (componentInstance.vnode.el &&\r\n componentInstance.vnode.el.__VUE_I18N__ &&\r\n instanceData) {\r\n if (i18n.mode === 'legacy') {\r\n // ignore global scope on legacy mode\r\n if (componentInstance.vnode.el.__VUE_I18N__ !==\r\n i18n.global.__composer) {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n else {\r\n inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__);\r\n }\r\n }\r\n });\r\n api.addInspector({\r\n id: \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */,\r\n label: VueDevToolsLabels[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */],\r\n icon: 'language',\r\n treeFilterPlaceholder: VueDevToolsPlaceholders[\"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */]\r\n });\r\n api.on.getInspectorTree(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n registerScope(payload, i18n);\r\n }\r\n });\r\n const roots = new Map();\r\n api.on.getInspectorState(async (payload) => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n api.unhighlightElement();\r\n inspectScope(payload, i18n);\r\n if (payload.nodeId === 'global') {\r\n if (!roots.has(payload.app)) {\r\n const [root] = await api.getComponentInstances(payload.app);\r\n roots.set(payload.app, root);\r\n }\r\n api.highlightElement(roots.get(payload.app));\r\n }\r\n else {\r\n const instance = getComponentInstance(payload.nodeId, i18n);\r\n instance && api.highlightElement(instance);\r\n }\r\n }\r\n });\r\n api.on.editInspectorState(payload => {\r\n if (payload.app === app &&\r\n payload.inspectorId === \"vue-i18n-resource-inspector\" /* CUSTOM_INSPECTOR */) {\r\n editScope(payload, i18n);\r\n }\r\n });\r\n api.addTimelineLayer({\r\n id: \"vue-i18n-timeline\" /* TIMELINE */,\r\n label: VueDevToolsLabels[\"vue-i18n-timeline\" /* TIMELINE */],\r\n color: VueDevToolsTimelineColors[\"vue-i18n-timeline\" /* TIMELINE */]\r\n });\r\n resolve(true);\r\n });\r\n }\r\n catch (e) {\r\n console.error(e);\r\n reject(false);\r\n }\r\n });\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getI18nScopeLable(instance) {\r\n return (instance.type.name ||\r\n instance.type.displayName ||\r\n instance.type.__file ||\r\n 'Anonymous');\r\n}\r\nfunction updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any\r\ntreeNode, i18n) {\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) {\r\n // add custom tags local scope only\r\n if (instance.vnode.el.__VUE_I18N__ !== global) {\r\n const tag = {\r\n label: `i18n (${getI18nScopeLable(instance)} Scope)`,\r\n textColor: 0x000000,\r\n backgroundColor: 0xffcd19\r\n };\r\n treeNode.tags.push(tag);\r\n }\r\n }\r\n}\r\nfunction inspectComposer(instanceData, composer) {\r\n const type = VUE_I18N_COMPONENT_TYPES;\r\n instanceData.state.push({\r\n type,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n });\r\n {\r\n instanceData.state.push({\r\n type,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n });\r\n instanceData.state.push({\r\n type,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n });\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getLocaleMessageValue(messages) {\r\n const value = {};\r\n Object.keys(messages).forEach((key) => {\r\n const v = messages[key];\r\n if (isFunction(v) && 'source' in v) {\r\n value[key] = getMessageFunctionDetails(v);\r\n }\r\n else if (isObject(v)) {\r\n value[key] = getLocaleMessageValue(v);\r\n }\r\n else {\r\n value[key] = v;\r\n }\r\n });\r\n return value;\r\n}\r\nconst ESC = {\r\n '<': '&lt;',\r\n '>': '&gt;',\r\n '\"': '&quot;',\r\n '&': '&amp;'\r\n};\r\nfunction escape(s) {\r\n return s.replace(/[<>\"&]/g, escapeChar);\r\n}\r\nfunction escapeChar(a) {\r\n return ESC[a] || a;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getMessageFunctionDetails(func) {\r\n const argString = func.source ? `(\"${escape(func.source)}\")` : `(?)`;\r\n return {\r\n _custom: {\r\n type: 'function',\r\n display: `<span>ƒ</span> ${argString}`\r\n }\r\n };\r\n}\r\nfunction registerScope(payload, i18n) {\r\n payload.rootNodes.push({\r\n id: 'global',\r\n label: 'Global Scope'\r\n });\r\n // prettier-ignore\r\n const global = i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n for (const [keyInstance, instance] of i18n.__instances) {\r\n // prettier-ignore\r\n const composer = i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n if (global === composer) {\r\n continue;\r\n }\r\n payload.rootNodes.push({\r\n id: composer.id.toString(),\r\n label: `${getI18nScopeLable(keyInstance)} Scope`\r\n });\r\n }\r\n}\r\nfunction getComponentInstance(nodeId, i18n) {\r\n let instance = null;\r\n if (nodeId !== 'global') {\r\n for (const [component, composer] of i18n.__instances.entries()) {\r\n if (composer.id.toString() === nodeId) {\r\n instance = component;\r\n break;\r\n }\r\n }\r\n }\r\n return instance;\r\n}\r\nfunction getComposer$1(nodeId, i18n) {\r\n if (nodeId === 'global') {\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer;\r\n }\r\n else {\r\n const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId);\r\n if (instance) {\r\n return i18n.mode === 'composition'\r\n ? instance\r\n : instance.__composer;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\r\nfunction inspectScope(payload, i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n // TODO:\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n payload.state = makeScopeInspectState(composer);\r\n }\r\n return null;\r\n}\r\nfunction makeScopeInspectState(composer) {\r\n const state = {};\r\n const localeType = 'Locale related info';\r\n const localeStates = [\r\n {\r\n type: localeType,\r\n key: 'locale',\r\n editable: true,\r\n value: composer.locale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'fallbackLocale',\r\n editable: true,\r\n value: composer.fallbackLocale.value\r\n },\r\n {\r\n type: localeType,\r\n key: 'availableLocales',\r\n editable: false,\r\n value: composer.availableLocales\r\n },\r\n {\r\n type: localeType,\r\n key: 'inheritLocale',\r\n editable: true,\r\n value: composer.inheritLocale\r\n }\r\n ];\r\n state[localeType] = localeStates;\r\n const localeMessagesType = 'Locale messages info';\r\n const localeMessagesStates = [\r\n {\r\n type: localeMessagesType,\r\n key: 'messages',\r\n editable: false,\r\n value: getLocaleMessageValue(composer.messages.value)\r\n }\r\n ];\r\n state[localeMessagesType] = localeMessagesStates;\r\n {\r\n const datetimeFormatsType = 'Datetime formats info';\r\n const datetimeFormatsStates = [\r\n {\r\n type: datetimeFormatsType,\r\n key: 'datetimeFormats',\r\n editable: false,\r\n value: composer.datetimeFormats.value\r\n }\r\n ];\r\n state[datetimeFormatsType] = datetimeFormatsStates;\r\n const numberFormatsType = 'Datetime formats info';\r\n const numberFormatsStates = [\r\n {\r\n type: numberFormatsType,\r\n key: 'numberFormats',\r\n editable: false,\r\n value: composer.numberFormats.value\r\n }\r\n ];\r\n state[numberFormatsType] = numberFormatsStates;\r\n }\r\n return state;\r\n}\r\nfunction addTimelineEvent(event, payload) {\r\n if (devtoolsApi) {\r\n let groupId;\r\n if (payload && 'groupId' in payload) {\r\n groupId = payload.groupId;\r\n delete payload.groupId;\r\n }\r\n devtoolsApi.addTimelineEvent({\r\n layerId: \"vue-i18n-timeline\" /* TIMELINE */,\r\n event: {\r\n title: event,\r\n groupId,\r\n time: Date.now(),\r\n meta: {},\r\n data: payload || {},\r\n logType: event === \"compile-error\" /* COMPILE_ERROR */\r\n ? 'error'\r\n : event === \"fallback\" /* FALBACK */ ||\r\n event === \"missing\" /* MISSING */\r\n ? 'warning'\r\n : 'default'\r\n }\r\n });\r\n }\r\n}\r\nfunction editScope(payload, i18n) {\r\n const composer = getComposer$1(payload.nodeId, i18n);\r\n if (composer) {\r\n const [field] = payload.path;\r\n if (field === 'locale' && isString(payload.state.value)) {\r\n composer.locale.value = payload.state.value;\r\n }\r\n else if (field === 'fallbackLocale' &&\r\n (isString(payload.state.value) ||\r\n isArray(payload.state.value) ||\r\n isObject(payload.state.value))) {\r\n composer.fallbackLocale.value = payload.state.value;\r\n }\r\n else if (field === 'inheritLocale' && isBoolean(payload.state.value)) {\r\n composer.inheritLocale = payload.state.value;\r\n }\r\n }\r\n}\n\n/**\r\n * Supports compatibility for legacy vue-i18n APIs\r\n * This mixin is used when we use vue-i18n@v9.x or later\r\n */\r\nfunction defineMixin(vuei18n, composer, i18n) {\r\n return {\r\n beforeCreate() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const options = this.$options;\r\n if (options.i18n) {\r\n const optionsI18n = options.i18n;\r\n if (options.__i18n) {\r\n optionsI18n.__i18n = options.__i18n;\r\n }\r\n optionsI18n.__root = composer;\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, optionsI18n);\r\n }\r\n else {\r\n optionsI18n.__injectWithOption = true;\r\n this.$i18n = createVueI18n(optionsI18n);\r\n }\r\n }\r\n else if (options.__i18n) {\r\n if (this === this.$root) {\r\n this.$i18n = mergeToRoot(vuei18n, options);\r\n }\r\n else {\r\n this.$i18n = createVueI18n({\r\n __i18n: options.__i18n,\r\n __injectWithOption: true,\r\n __root: composer\r\n });\r\n }\r\n }\r\n else {\r\n // set global\r\n this.$i18n = vuei18n;\r\n }\r\n if (options.__i18nGlobal) {\r\n adjustI18nResources(composer, options, options);\r\n }\r\n vuei18n.__onComponentInstanceCreated(this.$i18n);\r\n i18n.__setInstance(instance, this.$i18n);\r\n // defines vue-i18n legacy APIs\r\n this.$t = (...args) => this.$i18n.t(...args);\r\n this.$rt = (...args) => this.$i18n.rt(...args);\r\n this.$tc = (...args) => this.$i18n.tc(...args);\r\n this.$te = (key, locale) => this.$i18n.te(key, locale);\r\n this.$d = (...args) => this.$i18n.d(...args);\r\n this.$n = (...args) => this.$i18n.n(...args);\r\n this.$tm = (key) => this.$i18n.tm(key);\r\n },\r\n mounted() {\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n this.$el &&\r\n this.$i18n) {\r\n this.$el.__VUE_I18N__ = this.$i18n.__composer;\r\n const emitter = (this.__v_emitter =\r\n createEmitter());\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n unmounted() {\r\n const instance = getCurrentInstance();\r\n /* istanbul ignore if */\r\n if (!instance) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n /* istanbul ignore if */\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n this.$el &&\r\n this.$el.__VUE_I18N__) {\r\n if (this.__v_emitter) {\r\n this.__v_emitter.off('*', addTimelineEvent);\r\n delete this.__v_emitter;\r\n }\r\n if (this.$i18n) {\r\n const _vueI18n = this.$i18n;\r\n _vueI18n.__disableEmitter && _vueI18n.__disableEmitter();\r\n delete this.$el.__VUE_I18N__;\r\n }\r\n }\r\n delete this.$t;\r\n delete this.$rt;\r\n delete this.$tc;\r\n delete this.$te;\r\n delete this.$d;\r\n delete this.$n;\r\n delete this.$tm;\r\n i18n.__deleteInstance(instance);\r\n delete this.$i18n;\r\n }\r\n };\r\n}\r\nfunction mergeToRoot(root, options) {\r\n root.locale = options.locale || root.locale;\r\n root.fallbackLocale = options.fallbackLocale || root.fallbackLocale;\r\n root.missing = options.missing || root.missing;\r\n root.silentTranslationWarn =\r\n options.silentTranslationWarn || root.silentFallbackWarn;\r\n root.silentFallbackWarn =\r\n options.silentFallbackWarn || root.silentFallbackWarn;\r\n root.formatFallbackMessages =\r\n options.formatFallbackMessages || root.formatFallbackMessages;\r\n root.postTranslation = options.postTranslation || root.postTranslation;\r\n root.warnHtmlInMessage = options.warnHtmlInMessage || root.warnHtmlInMessage;\r\n root.escapeParameterHtml =\r\n options.escapeParameterHtml || root.escapeParameterHtml;\r\n root.sync = options.sync || root.sync;\r\n root.__composer[SetPluralRulesSymbol](options.pluralizationRules || root.pluralizationRules);\r\n const messages = getLocaleMessages(root.locale, {\r\n messages: options.messages,\r\n __i18n: options.__i18n\r\n });\r\n Object.keys(messages).forEach(locale => root.mergeLocaleMessage(locale, messages[locale]));\r\n if (options.datetimeFormats) {\r\n Object.keys(options.datetimeFormats).forEach(locale => root.mergeDateTimeFormat(locale, options.datetimeFormats[locale]));\r\n }\r\n if (options.numberFormats) {\r\n Object.keys(options.numberFormats).forEach(locale => root.mergeNumberFormat(locale, options.numberFormats[locale]));\r\n }\r\n return root;\r\n}\n\n/**\r\n * Injection key for {@link useI18n}\r\n *\r\n * @remarks\r\n * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components.\r\n * Specify the i18n instance created by {@link createI18n} together with `provide` function.\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst I18nInjectionKey = \r\n/* #__PURE__*/ makeSymbol('global-vue-i18n');\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\nfunction createI18n(options = {}, VueI18nLegacy) {\r\n // prettier-ignore\r\n const __legacyMode = __VUE_I18N_LEGACY_API__ && isBoolean(options.legacy)\r\n ? options.legacy\r\n : __VUE_I18N_LEGACY_API__;\r\n // prettier-ignore\r\n const __globalInjection = isBoolean(options.globalInjection)\r\n ? options.globalInjection\r\n : true;\r\n // prettier-ignore\r\n const __allowComposition = __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? !!options.allowComposition\r\n : true;\r\n const __instances = new Map();\r\n const [globalScope, __global] = createGlobal(options, __legacyMode);\r\n const symbol = makeSymbol((process.env.NODE_ENV !== 'production') ? 'vue-i18n' : '');\r\n function __getInstance(component) {\r\n return __instances.get(component) || null;\r\n }\r\n function __setInstance(component, instance) {\r\n __instances.set(component, instance);\r\n }\r\n function __deleteInstance(component) {\r\n __instances.delete(component);\r\n }\r\n {\r\n const i18n = {\r\n // mode\r\n get mode() {\r\n return __VUE_I18N_LEGACY_API__ && __legacyMode\r\n ? 'legacy'\r\n : 'composition';\r\n },\r\n // allowComposition\r\n get allowComposition() {\r\n return __allowComposition;\r\n },\r\n // install plugin\r\n async install(app, ...options) {\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false) {\r\n app.__VUE_I18N__ = i18n;\r\n }\r\n // setup global provider\r\n app.__VUE_I18N_SYMBOL__ = symbol;\r\n app.provide(app.__VUE_I18N_SYMBOL__, i18n);\r\n // global method and properties injection for Composition API\r\n if (!__legacyMode && __globalInjection) {\r\n injectGlobalFields(app, i18n.global);\r\n }\r\n // install built-in components and directive\r\n if (__VUE_I18N_FULL_INSTALL__) {\r\n apply(app, i18n, ...options);\r\n }\r\n // setup mixin for Legacy API\r\n if (__VUE_I18N_LEGACY_API__ && __legacyMode) {\r\n app.mixin(defineMixin(__global, __global.__composer, i18n));\r\n }\r\n // release global scope\r\n const unmountApp = app.unmount;\r\n app.unmount = () => {\r\n i18n.dispose();\r\n unmountApp();\r\n };\r\n // setup vue-devtools plugin\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && !false) {\r\n const ret = await enableDevTools(app, i18n);\r\n if (!ret) {\r\n throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN);\r\n }\r\n const emitter = createEmitter();\r\n if (__legacyMode) {\r\n const _vueI18n = __global;\r\n _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter);\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = __global;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n }\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n },\r\n // global accessor\r\n get global() {\r\n return __global;\r\n },\r\n dispose() {\r\n globalScope.stop();\r\n },\r\n // @internal\r\n __instances,\r\n // @internal\r\n __getInstance,\r\n // @internal\r\n __setInstance,\r\n // @internal\r\n __deleteInstance\r\n };\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\nfunction useI18n(options = {}) {\r\n const instance = getCurrentInstance();\r\n if (instance == null) {\r\n throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);\r\n }\r\n if (!instance.isCE &&\r\n instance.appContext.app != null &&\r\n !instance.appContext.app.__VUE_I18N_SYMBOL__) {\r\n throw createI18nError(I18nErrorCodes.NOT_INSLALLED);\r\n }\r\n const i18n = getI18nInstance(instance);\r\n const global = getGlobalComposer(i18n);\r\n const componentOptions = getComponentOptions(instance);\r\n const scope = getScope(options, componentOptions);\r\n if (__VUE_I18N_LEGACY_API__) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (i18n.mode === 'legacy' && !options.__useComponent) {\r\n if (!i18n.allowComposition) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE);\r\n }\r\n return useI18nForLegacy(instance, scope, global, options);\r\n }\r\n }\r\n if (scope === 'global') {\r\n adjustI18nResources(global, options, componentOptions);\r\n return global;\r\n }\r\n if (scope === 'parent') {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let composer = getComposer(i18n, instance, options.__useComponent);\r\n if (composer == null) {\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE));\r\n }\r\n composer = global;\r\n }\r\n return composer;\r\n }\r\n const i18nInternal = i18n;\r\n let composer = i18nInternal.__getInstance(instance);\r\n if (composer == null) {\r\n const composerOptions = assign({}, options);\r\n if ('__i18n' in componentOptions) {\r\n composerOptions.__i18n = componentOptions.__i18n;\r\n }\r\n if (global) {\r\n composerOptions.__root = global;\r\n }\r\n composer = createComposer(composerOptions);\r\n setupLifeCycle(i18nInternal, instance, composer);\r\n i18nInternal.__setInstance(instance, composer);\r\n }\r\n return composer;\r\n}\r\n/**\r\n * Cast to VueI18n legacy compatible type\r\n *\r\n * @remarks\r\n * This API is provided only with [vue-i18n-bridge](https://vue-i18n.intlify.dev/guide/migration/ways.html#what-is-vue-i18n-bridge).\r\n *\r\n * The purpose of this function is to convert an {@link I18n} instance created with {@link createI18n | createI18n(legacy: true)} into a `vue-i18n@v8.x` compatible instance of `new VueI18n` in a TypeScript environment.\r\n *\r\n * @param i18n - An instance of {@link I18n}\r\n * @returns A i18n instance which is casted to {@link VueI18n} type\r\n *\r\n * @VueI18nTip\r\n * :new: provided by **vue-i18n-bridge only**\r\n *\r\n * @VueI18nGeneral\r\n */\r\nconst castToVueI18n = (i18n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n) => {\r\n if (!(__VUE_I18N_BRIDGE__ in i18n)) {\r\n throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N);\r\n }\r\n return i18n;\r\n};\r\nfunction createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n const scope = effectScope();\r\n {\r\n const obj = __VUE_I18N_LEGACY_API__ && legacyMode\r\n ? scope.run(() => createVueI18n(options))\r\n : scope.run(() => createComposer(options));\r\n if (obj == null) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n return [scope, obj];\r\n }\r\n}\r\nfunction getI18nInstance(instance) {\r\n {\r\n const i18n = inject(!instance.isCE\r\n ? instance.appContext.app.__VUE_I18N_SYMBOL__\r\n : I18nInjectionKey);\r\n /* istanbul ignore if */\r\n if (!i18n) {\r\n throw createI18nError(!instance.isCE\r\n ? I18nErrorCodes.UNEXPECTED_ERROR\r\n : I18nErrorCodes.NOT_INSLALLED_WITH_PROVIDE);\r\n }\r\n return i18n;\r\n }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nfunction getScope(options, componentOptions) {\r\n // prettier-ignore\r\n return isEmptyObject(options)\r\n ? ('__i18n' in componentOptions)\r\n ? 'local'\r\n : 'global'\r\n : !options.useScope\r\n ? 'local'\r\n : options.useScope;\r\n}\r\nfunction getGlobalComposer(i18n) {\r\n // prettier-ignore\r\n return i18n.mode === 'composition'\r\n ? i18n.global\r\n : i18n.global.__composer\r\n ;\r\n}\r\nfunction getComposer(i18n, target, useComponent = false) {\r\n let composer = null;\r\n const root = target.root;\r\n let current = target.parent;\r\n while (current != null) {\r\n const i18nInternal = i18n;\r\n if (i18n.mode === 'composition') {\r\n composer = i18nInternal.__getInstance(current);\r\n }\r\n else {\r\n if (__VUE_I18N_LEGACY_API__) {\r\n const vueI18n = i18nInternal.__getInstance(current);\r\n if (vueI18n != null) {\r\n composer = vueI18n\r\n .__composer;\r\n if (useComponent &&\r\n composer &&\r\n !composer[InejctWithOption] // eslint-disable-line @typescript-eslint/no-explicit-any\r\n ) {\r\n composer = null;\r\n }\r\n }\r\n }\r\n }\r\n if (composer != null) {\r\n break;\r\n }\r\n if (root === current) {\r\n break;\r\n }\r\n current = current.parent;\r\n }\r\n return composer;\r\n}\r\nfunction setupLifeCycle(i18n, target, composer) {\r\n let emitter = null;\r\n {\r\n onMounted(() => {\r\n // inject composer instance to DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el) {\r\n target.vnode.el.__VUE_I18N__ = composer;\r\n emitter = createEmitter();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[EnableEmitter] && _composer[EnableEmitter](emitter);\r\n emitter.on('*', addTimelineEvent);\r\n }\r\n }, target);\r\n onUnmounted(() => {\r\n // remove composer instance from DOM for intlify-devtools\r\n if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) &&\r\n !false &&\r\n target.vnode.el &&\r\n target.vnode.el.__VUE_I18N__) {\r\n emitter && emitter.off('*', addTimelineEvent);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const _composer = composer;\r\n _composer[DisableEmitter] && _composer[DisableEmitter]();\r\n delete target.vnode.el.__VUE_I18N__;\r\n }\r\n i18n.__deleteInstance(target);\r\n }, target);\r\n }\r\n}\r\nfunction useI18nForLegacy(instance, scope, root, options = {} // eslint-disable-line @typescript-eslint/no-explicit-any\r\n) {\r\n const isLocale = scope === 'local';\r\n const _composer = shallowRef(null);\r\n if (isLocale &&\r\n instance.proxy &&\r\n !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) {\r\n throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);\r\n }\r\n const _inheritLocale = isBoolean(options.inheritLocale)\r\n ? options.inheritLocale\r\n : true;\r\n const _locale = ref(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.locale.value\r\n : isString(options.locale)\r\n ? options.locale\r\n : DEFAULT_LOCALE);\r\n const _fallbackLocale = ref(\r\n // prettier-ignore\r\n isLocale && _inheritLocale\r\n ? root.fallbackLocale.value\r\n : isString(options.fallbackLocale) ||\r\n isArray(options.fallbackLocale) ||\r\n isPlainObject(options.fallbackLocale) ||\r\n options.fallbackLocale === false\r\n ? options.fallbackLocale\r\n : _locale.value);\r\n const _messages = ref(getLocaleMessages(_locale.value, options));\r\n // prettier-ignore\r\n const _datetimeFormats = ref(isPlainObject(options.datetimeFormats)\r\n ? options.datetimeFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _numberFormats = ref(isPlainObject(options.numberFormats)\r\n ? options.numberFormats\r\n : { [_locale.value]: {} });\r\n // prettier-ignore\r\n const _missingWarn = isLocale\r\n ? root.missingWarn\r\n : isBoolean(options.missingWarn) || isRegExp(options.missingWarn)\r\n ? options.missingWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackWarn = isLocale\r\n ? root.fallbackWarn\r\n : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn)\r\n ? options.fallbackWarn\r\n : true;\r\n // prettier-ignore\r\n const _fallbackRoot = isLocale\r\n ? root.fallbackRoot\r\n : isBoolean(options.fallbackRoot)\r\n ? options.fallbackRoot\r\n : true;\r\n // configure fall back to root\r\n const _fallbackFormat = !!options.fallbackFormat;\r\n // runtime missing\r\n const _missing = isFunction(options.missing) ? options.missing : null;\r\n // postTranslation handler\r\n const _postTranslation = isFunction(options.postTranslation)\r\n ? options.postTranslation\r\n : null;\r\n // prettier-ignore\r\n const _warnHtmlMessage = isLocale\r\n ? root.warnHtmlMessage\r\n : isBoolean(options.warnHtmlMessage)\r\n ? options.warnHtmlMessage\r\n : true;\r\n const _escapeParameter = !!options.escapeParameter;\r\n // prettier-ignore\r\n const _modifiers = isLocale\r\n ? root.modifiers\r\n : isPlainObject(options.modifiers)\r\n ? options.modifiers\r\n : {};\r\n // pluralRules\r\n const _pluralRules = options.pluralRules || (isLocale && root.pluralRules);\r\n // track reactivity\r\n function trackReactivityValues() {\r\n return [\r\n _locale.value,\r\n _fallbackLocale.value,\r\n _messages.value,\r\n _datetimeFormats.value,\r\n _numberFormats.value\r\n ];\r\n }\r\n // locale\r\n const locale = computed({\r\n get: () => {\r\n return _composer.value ? _composer.value.locale.value : _locale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.locale.value = val;\r\n }\r\n _locale.value = val;\r\n }\r\n });\r\n // fallbackLocale\r\n const fallbackLocale = computed({\r\n get: () => {\r\n return _composer.value\r\n ? _composer.value.fallbackLocale.value\r\n : _fallbackLocale.value;\r\n },\r\n set: val => {\r\n if (_composer.value) {\r\n _composer.value.fallbackLocale.value = val;\r\n }\r\n _fallbackLocale.value = val;\r\n }\r\n });\r\n // messages\r\n const messages = computed(() => {\r\n if (_composer.value) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _composer.value.messages.value;\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return _messages.value;\r\n }\r\n });\r\n const datetimeFormats = computed(() => _datetimeFormats.value);\r\n const numberFormats = computed(() => _numberFormats.value);\r\n function getPostTranslationHandler() {\r\n return _composer.value\r\n ? _composer.value.getPostTranslationHandler()\r\n : _postTranslation;\r\n }\r\n function setPostTranslationHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setPostTranslationHandler(handler);\r\n }\r\n }\r\n function getMissingHandler() {\r\n return _composer.value ? _composer.value.getMissingHandler() : _missing;\r\n }\r\n function setMissingHandler(handler) {\r\n if (_composer.value) {\r\n _composer.value.setMissingHandler(handler);\r\n }\r\n }\r\n function warpWithDeps(fn) {\r\n trackReactivityValues();\r\n return fn();\r\n }\r\n function t(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function rt(...args) {\r\n return _composer.value\r\n ? Reflect.apply(_composer.value.rt, null, [...args])\r\n : '';\r\n }\r\n function d(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function n(...args) {\r\n return _composer.value\r\n ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args]))\r\n : warpWithDeps(() => '');\r\n }\r\n function tm(key) {\r\n return _composer.value ? _composer.value.tm(key) : {};\r\n }\r\n function te(key, locale) {\r\n return _composer.value ? _composer.value.te(key, locale) : false;\r\n }\r\n function getLocaleMessage(locale) {\r\n return _composer.value ? _composer.value.getLocaleMessage(locale) : {};\r\n }\r\n function setLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.setLocaleMessage(locale, message);\r\n _messages.value[locale] = message;\r\n }\r\n }\r\n function mergeLocaleMessage(locale, message) {\r\n if (_composer.value) {\r\n _composer.value.mergeLocaleMessage(locale, message);\r\n }\r\n }\r\n function getDateTimeFormat(locale) {\r\n return _composer.value ? _composer.value.getDateTimeFormat(locale) : {};\r\n }\r\n function setDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setDateTimeFormat(locale, format);\r\n _datetimeFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeDateTimeFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeDateTimeFormat(locale, format);\r\n }\r\n }\r\n function getNumberFormat(locale) {\r\n return _composer.value ? _composer.value.getNumberFormat(locale) : {};\r\n }\r\n function setNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.setNumberFormat(locale, format);\r\n _numberFormats.value[locale] = format;\r\n }\r\n }\r\n function mergeNumberFormat(locale, format) {\r\n if (_composer.value) {\r\n _composer.value.mergeNumberFormat(locale, format);\r\n }\r\n }\r\n const wrapper = {\r\n get id() {\r\n return _composer.value ? _composer.value.id : -1;\r\n },\r\n locale,\r\n fallbackLocale,\r\n messages,\r\n datetimeFormats,\r\n numberFormats,\r\n get inheritLocale() {\r\n return _composer.value ? _composer.value.inheritLocale : _inheritLocale;\r\n },\r\n set inheritLocale(val) {\r\n if (_composer.value) {\r\n _composer.value.inheritLocale = val;\r\n }\r\n },\r\n get availableLocales() {\r\n return _composer.value\r\n ? _composer.value.availableLocales\r\n : Object.keys(_messages.value);\r\n },\r\n get modifiers() {\r\n return (_composer.value ? _composer.value.modifiers : _modifiers);\r\n },\r\n get pluralRules() {\r\n return (_composer.value ? _composer.value.pluralRules : _pluralRules);\r\n },\r\n get isGlobal() {\r\n return _composer.value ? _composer.value.isGlobal : false;\r\n },\r\n get missingWarn() {\r\n return _composer.value ? _composer.value.missingWarn : _missingWarn;\r\n },\r\n set missingWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackWarn() {\r\n return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn;\r\n },\r\n set fallbackWarn(val) {\r\n if (_composer.value) {\r\n _composer.value.missingWarn = val;\r\n }\r\n },\r\n get fallbackRoot() {\r\n return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot;\r\n },\r\n set fallbackRoot(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackRoot = val;\r\n }\r\n },\r\n get fallbackFormat() {\r\n return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat;\r\n },\r\n set fallbackFormat(val) {\r\n if (_composer.value) {\r\n _composer.value.fallbackFormat = val;\r\n }\r\n },\r\n get warnHtmlMessage() {\r\n return _composer.value\r\n ? _composer.value.warnHtmlMessage\r\n : _warnHtmlMessage;\r\n },\r\n set warnHtmlMessage(val) {\r\n if (_composer.value) {\r\n _composer.value.warnHtmlMessage = val;\r\n }\r\n },\r\n get escapeParameter() {\r\n return _composer.value\r\n ? _composer.value.escapeParameter\r\n : _escapeParameter;\r\n },\r\n set escapeParameter(val) {\r\n if (_composer.value) {\r\n _composer.value.escapeParameter = val;\r\n }\r\n },\r\n t,\r\n getPostTranslationHandler,\r\n setPostTranslationHandler,\r\n getMissingHandler,\r\n setMissingHandler,\r\n rt,\r\n d,\r\n n,\r\n tm,\r\n te,\r\n getLocaleMessage,\r\n setLocaleMessage,\r\n mergeLocaleMessage,\r\n getDateTimeFormat,\r\n setDateTimeFormat,\r\n mergeDateTimeFormat,\r\n getNumberFormat,\r\n setNumberFormat,\r\n mergeNumberFormat\r\n };\r\n function sync(composer) {\r\n composer.locale.value = _locale.value;\r\n composer.fallbackLocale.value = _fallbackLocale.value;\r\n Object.keys(_messages.value).forEach(locale => {\r\n composer.mergeLocaleMessage(locale, _messages.value[locale]);\r\n });\r\n Object.keys(_datetimeFormats.value).forEach(locale => {\r\n composer.mergeDateTimeFormat(locale, _datetimeFormats.value[locale]);\r\n });\r\n Object.keys(_numberFormats.value).forEach(locale => {\r\n composer.mergeNumberFormat(locale, _numberFormats.value[locale]);\r\n });\r\n composer.escapeParameter = _escapeParameter;\r\n composer.fallbackFormat = _fallbackFormat;\r\n composer.fallbackRoot = _fallbackRoot;\r\n composer.fallbackWarn = _fallbackWarn;\r\n composer.missingWarn = _missingWarn;\r\n composer.warnHtmlMessage = _warnHtmlMessage;\r\n }\r\n onBeforeMount(() => {\r\n if (instance.proxy == null || instance.proxy.$i18n == null) {\r\n throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const composer = (_composer.value = instance.proxy.$i18n\r\n .__composer);\r\n if (scope === 'global') {\r\n _locale.value = composer.locale.value;\r\n _fallbackLocale.value = composer.fallbackLocale.value;\r\n _messages.value = composer.messages.value;\r\n _datetimeFormats.value = composer.datetimeFormats.value;\r\n _numberFormats.value = composer.numberFormats.value;\r\n }\r\n else if (isLocale) {\r\n sync(composer);\r\n }\r\n });\r\n return wrapper;\r\n}\r\nconst globalExportProps = [\r\n 'locale',\r\n 'fallbackLocale',\r\n 'availableLocales'\r\n];\r\nconst globalExportMethods = ['t', 'rt', 'd', 'n', 'tm'] ;\r\nfunction injectGlobalFields(app, composer) {\r\n const i18n = Object.create(null);\r\n globalExportProps.forEach(prop => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, prop);\r\n if (!desc) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n const wrap = isRef(desc.value) // check computed props\r\n ? {\r\n get() {\r\n return desc.value.value;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n set(val) {\r\n desc.value.value = val;\r\n }\r\n }\r\n : {\r\n get() {\r\n return desc.get && desc.get();\r\n }\r\n };\r\n Object.defineProperty(i18n, prop, wrap);\r\n });\r\n app.config.globalProperties.$i18n = i18n;\r\n globalExportMethods.forEach(method => {\r\n const desc = Object.getOwnPropertyDescriptor(composer, method);\r\n if (!desc || !desc.value) {\r\n throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);\r\n }\r\n Object.defineProperty(app.config.globalProperties, `$${method}`, desc);\r\n });\r\n}\n\n// register message resolver at vue-i18n\r\nregisterMessageResolver(resolveValue);\r\n// register fallback locale at vue-i18n\r\nregisterLocaleFallbacker(fallbackWithLocaleChain);\r\n{\r\n initFeatureFlags();\r\n}\r\n// NOTE: experimental !!\r\nif ((process.env.NODE_ENV !== 'production') || __INTLIFY_PROD_DEVTOOLS__) {\r\n const target = getGlobalThis();\r\n target.__INTLIFY__ = true;\r\n setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);\r\n}\r\nif ((process.env.NODE_ENV !== 'production')) ;\n\nexport { DatetimeFormat, I18nInjectionKey, NumberFormat, Translation, VERSION, castToVueI18n, createI18n, useI18n, vTDirective };\n","/* eslint-env serviceworker */\n\nimport localForage from 'localforage'\nimport { parseNotification } from './services/entity_normalizer/entity_normalizer.service.js'\nimport { prepareNotificationObject } from './services/notification_utils/notification_utils.js'\nimport { createI18n } from 'vue-i18n'\nimport messages from './i18n/service_worker_messages.js'\n\nconst i18n = createI18n({\n // By default, use the browser locale, we will update it if neccessary\n locale: 'en',\n fallbackLocale: 'en',\n messages\n})\n\nfunction isEnabled () {\n return localForage.getItem('vuex-lz')\n .then(data => data.config.webPushNotifications)\n}\n\nfunction getWindowClients () {\n return clients.matchAll({ includeUncontrolled: true })\n .then((clientList) => clientList.filter(({ type }) => type === 'window'))\n}\n\nconst setLocale = async () => {\n const state = await localForage.getItem('vuex-lz')\n const locale = state.config.interfaceLanguage || 'en'\n i18n.locale = locale\n}\n\nconst maybeShowNotification = async (event) => {\n const enabled = await isEnabled()\n const activeClients = await getWindowClients()\n await setLocale()\n if (enabled && (activeClients.length === 0)) {\n const data = event.data.json()\n\n const url = `${self.registration.scope}api/v1/notifications/${data.notification_id}`\n const notification = await fetch(url, { headers: { Authorization: 'Bearer ' + data.access_token } })\n const notificationJson = await notification.json()\n const parsedNotification = parseNotification(notificationJson)\n\n const res = prepareNotificationObject(parsedNotification, i18n)\n\n self.registration.showNotification(res.title, res)\n }\n}\n\nself.addEventListener('push', async (event) => {\n if (event.data) {\n event.waitUntil(maybeShowNotification(event))\n }\n})\n\nself.addEventListener('notificationclick', (event) => {\n event.notification.close()\n\n event.waitUntil(getWindowClients().then((list) => {\n for (let i = 0; i < list.length; i++) {\n const client = list[i]\n if (client.url === '/' && 'focus' in client) { return client.focus() }\n }\n\n if (clients.openWindow) return clients.openWindow('/')\n }))\n})\n","/* eslint-disable import/no-webpack-loader-syntax */\n// This module exports only the notification part of the i18n,\n// which is useful for the service worker\n\nconst messages = {\n ar: require('../lib/notification-i18n-loader.js!./ar.json'),\n ca: require('../lib/notification-i18n-loader.js!./ca.json'),\n cs: require('../lib/notification-i18n-loader.js!./cs.json'),\n de: require('../lib/notification-i18n-loader.js!./de.json'),\n eo: require('../lib/notification-i18n-loader.js!./eo.json'),\n es: require('../lib/notification-i18n-loader.js!./es.json'),\n et: require('../lib/notification-i18n-loader.js!./et.json'),\n eu: require('../lib/notification-i18n-loader.js!./eu.json'),\n fi: require('../lib/notification-i18n-loader.js!./fi.json'),\n fr: require('../lib/notification-i18n-loader.js!./fr.json'),\n ga: require('../lib/notification-i18n-loader.js!./ga.json'),\n he: require('../lib/notification-i18n-loader.js!./he.json'),\n hu: require('../lib/notification-i18n-loader.js!./hu.json'),\n it: require('../lib/notification-i18n-loader.js!./it.json'),\n ja: require('../lib/notification-i18n-loader.js!./ja_pedantic.json'),\n ja_easy: require('../lib/notification-i18n-loader.js!./ja_easy.json'),\n ko: require('../lib/notification-i18n-loader.js!./ko.json'),\n nb: require('../lib/notification-i18n-loader.js!./nb.json'),\n nl: require('../lib/notification-i18n-loader.js!./nl.json'),\n oc: require('../lib/notification-i18n-loader.js!./oc.json'),\n pl: require('../lib/notification-i18n-loader.js!./pl.json'),\n pt: require('../lib/notification-i18n-loader.js!./pt.json'),\n ro: require('../lib/notification-i18n-loader.js!./ro.json'),\n ru: require('../lib/notification-i18n-loader.js!./ru.json'),\n sk: require('../lib/notification-i18n-loader.js!./sk.json'),\n te: require('../lib/notification-i18n-loader.js!./te.json'),\n zh: require('../lib/notification-i18n-loader.js!./zh.json'),\n en: require('../lib/notification-i18n-loader.js!./en.json')\n}\n\nexport default messages\n"],"names":["ctx","normalize","_normalize","interpolate","_interpolate","list","_list","matchHtmlRegExp","module","exports","string","escape","str","match","exec","html","index","lastIndex","length","charCodeAt","substring","f","define","amd","window","global","self","this","localforage","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","_dereq_","scheduleDrain","draining","Mutation","MutationObserver","WebKitMutationObserver","called","observer","nextTick","element","document","createTextNode","observe","characterData","data","setImmediate","MessageChannel","createElement","scriptEl","onreadystatechange","parentNode","removeChild","documentElement","appendChild","setTimeout","channel","port1","onmessage","port2","postMessage","queue","oldQueue","len","task","push","immediate","INTERNAL","handlers","REJECTED","FULFILLED","PENDING","Promise","resolver","TypeError","state","outcome","safelyResolveThenable","QueueItem","promise","onFulfilled","onRejected","callFulfilled","otherCallFulfilled","callRejected","otherCallRejected","unwrap","func","value","returnValue","reject","resolve","getThen","obj","then","apply","arguments","thenable","onError","onSuccess","result","tryCatch","status","out","prototype","constructor","error","reason","all","iterable","Object","toString","values","Array","resolved","allResolver","outValue","race","response","_typeof","Symbol","iterator","idb","indexedDB","webkitIndexedDB","mozIndexedDB","OIndexedDB","msIndexedDB","getIDB","createBlob","parts","properties","Blob","name","builder","BlobBuilder","MSBlobBuilder","MozBlobBuilder","WebKitBlobBuilder","append","getBlob","type","Promise$1","executeCallback","callback","executeTwoCallbacks","errorCallback","normalizeKey","key","console","warn","String","getCallback","DETECT_BLOB_SUPPORT_STORE","supportsBlobs","dbContexts","READ_ONLY","READ_WRITE","_deferReadiness","dbInfo","dbContext","deferredOperation","deferredOperations","dbReady","_advanceReadiness","pop","_rejectReadiness","err","_getConnection","upgradeNeeded","forages","db","close","dbArgs","version","openreq","open","onupgradeneeded","createObjectStore","storeName","oldVersion","ex","newVersion","onerror","preventDefault","onsuccess","onversionchange","target","_getOriginalConnection","_getUpgradedConnection","_isUpgradeNeeded","defaultVersion","isNewStore","objectStoreNames","contains","isDowngrade","isUpgrade","incVersion","_decodeBlob","encodedBlob","bin","buf","ArrayBuffer","arr","Uint8Array","_binStringToArrayBuffer","atob","_isEncodedBlob","__local_forage_encoded_blob","_fullyReady","_initReady","_dbInfo","createTransaction","mode","retries","undefined","tx","transaction","forage","_tryReconnect","asyncStorage","_driver","_initStorage","options","ready","initPromises","ignoreErrors","j","slice","_defaultConfig","k","_support","isSafari","openDatabase","test","navigator","userAgent","platform","hasFetch","fetch","indexOf","IDBKeyRange","isIndexedDBValid","iterate","req","objectStore","openCursor","iterationNumber","cursor","getItem","get","setItem","txn","blob","put","onabort","stopPropagation","oncomplete","matchedChrome","matchedEdge","parseInt","_checkBlobSupportWithoutCaching","_checkBlobSupport","blobSupport","reader","FileReader","onloadend","base64","btoa","readAsBinaryString","store","removeItem","clear","count","advanced","openKeyCursor","advance","keys","dropInstance","currentConfig","config","isCurrentDb","dbPromise","dropObjectPromise","deleteObjectStore","_forage2","dropDBPromise","deleteDatabase","onblocked","BASE_CHARS","BLOB_TYPE_PREFIX_REGEX","SERIALIZED_MARKER","SERIALIZED_MARKER_LENGTH","TYPE_ARRAYBUFFER","TYPE_BLOB","TYPE_INT8ARRAY","TYPE_UINT8ARRAY","TYPE_UINT8CLAMPEDARRAY","TYPE_INT16ARRAY","TYPE_INT32ARRAY","TYPE_UINT16ARRAY","TYPE_UINT32ARRAY","TYPE_FLOAT32ARRAY","TYPE_FLOAT64ARRAY","TYPE_SERIALIZED_MARKER_LENGTH","toString$1","stringToBuffer","serializedString","encoded1","encoded2","encoded3","encoded4","bufferLength","p","buffer","bytes","bufferToString","base64String","localforageSerializer","serialize","valueType","marker","fileReader","onload","readAsArrayBuffer","JSON","stringify","deserialize","parse","blobType","matcher","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","createDbTable","executeSql","tryExecuteSql","sqlStatement","args","SYNTAX_ERR","results","rows","_setItem","retriesLeft","originalValue","serializer","sqlError","QUOTA_ERR","getAllStoreNames","storeNames","item","webSQLStorage","dbInfoPromise","description","size","c","operationInfo","dropTable","operations","_getKeyPrefix","defaultConfig","keyPrefix","localStorageWrapper","localStorageTestKey","localStorage","checkIfLocalStorageThrows","isLocalStorageValid","keyPrefixLength","itemKey","includes","array","searchElement","x","y","isNaN","isArray","arg","DefinedDrivers","DriverSupport","DefaultDrivers","INDEXEDDB","WEBSQL","LOCALSTORAGE","DefaultDriverOrder","OptionalDriverMethods","LibraryMethods","concat","DefaultConfig","driver","callWhenReady","localForageInstance","libraryMethod","_args","extend","_key","hasOwnProperty","LocalForage","driverTypeKey","instance","Constructor","_classCallCheck","driverName","defineDriver","_config","_driverSet","_initDriver","_ready","_wrapLibraryMethodsWithReady","setDriver","replace","driverObject","complianceError","driverMethods","driverMethodName","methodNotImplementedFactory","methodName","_i","_len","optionalDriverMethod","configureMissingMethods","setDriverSupport","support","info","getDriver","getDriverPromise","getSerializer","serializerPromise","drivers","supportedDrivers","_getSupportedDrivers","setDriverToConfig","extendSelfWithDriver","_extend","oldDriverSetDone","currentDriverIndex","driverPromiseLoop","initDriver","supports","libraryMethodsAndProperties","createInstance","localforage_js","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","entry","set","has","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Set","setCacheAdd","setCacheHas","SetCache","__data__","add","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","WeakMap","thisArg","predicate","resIndex","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","iteratee","offset","eq","baseForOwn","baseEach","createBaseEach","collection","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","createBaseFor","object","castPath","toKey","path","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","toStringTag","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","other","bitmask","customizer","stack","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","source","matchData","noCustomizer","objValue","srcValue","COMPARE_PARTIAL_FLAG","isFunction","isMasked","isObject","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","reIsNative","RegExp","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","property","isPrototype","nativeKeys","isArrayLike","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","iteratees","orders","overRest","setToString","start","constant","defineProperty","baseSetToString","comparer","sort","isSymbol","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","props","cache","stringToPath","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","coreJsData","eachFunc","arraySome","cacheHas","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","mapToArray","setToArray","symbolValueOf","valueOf","tag","byteLength","byteOffset","message","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","freeGlobal","g","baseGetAllKeys","getSymbols","isKeyable","map","baseIsNative","getValue","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","symbol","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","Ctor","ctorString","hasFunc","nativeCreate","spreadableSymbol","isConcatSpreadable","reIsUint","reIsDeepProp","reIsPlainProp","uid","maskSrcKey","IE_PROTO","assocIndexOf","splice","getMapData","forEach","memoize","overArg","freeExports","nodeType","freeModule","freeProcess","process","nodeUtil","types","binding","transform","nativeMax","Math","max","otherArgs","freeSelf","root","shortOut","nativeNow","Date","now","lastCalled","stamp","remaining","pairs","LARGE_ARRAY_SIZE","memoizeCapped","rePropName","reEscapeChar","number","quote","subString","reWhitespace","charAt","baseFilter","defaultValue","baseHasIn","hasPath","baseIndexOf","isString","toInteger","guard","baseIsArguments","stubFalse","Buffer","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","memoized","Cache","baseProperty","basePropertyDeep","baseOrderBy","baseRest","isIterateeCall","sortBy","toNumber","toFinite","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","baseValues","qs","url","xtend","PARSE_LINK_HEADER_MAXLEN","PARSE_LINK_HEADER_THROW_ON_MAXLEN_EXCEEDED","hasRel","rel","intoRels","acc","split","createObjects","m","parseLink","link","linkUrl","parsedUrl","qry","query","shift","reduce","linkHeader","checkHeader","filter","maxInt","base","regexPunycode","regexNonASCII","regexSeparators","errors","floor","stringFromCharCode","fromCharCode","RangeError","mapDomain","fn","encoded","join","ucs2decode","output","counter","extra","ucs2encode","fromCodePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","decode","input","inputLength","bias","basic","lastIndexOf","oldi","w","codePoint","baseMinusT","encode","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","q","qMinusT","toUnicode","toLowerCase","toASCII","prop","sep","regexp","maxKeys","kstr","vstr","v","idx","substr","decodeURIComponent","stringifyPrimitive","isFinite","ks","encodeURIComponent","punycode","util","Url","protocol","slashes","auth","host","port","hostname","hash","search","pathname","href","urlParse","relative","resolveObject","format","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","rest","trim","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","unshift","h","ae","esc","qm","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","last","hasTrailingSlash","up","isAbsolute","_regeneratorRuntime","__esModule","Op","hasOwn","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","done","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","next","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","doneResult","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","val","reverse","skipTempReset","prev","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","getter","d","definition","nmd","paths","children","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_defineProperty","hint","prim","toPrimitive","res","statusNotifications","isStatusNotification","_includes","prepareNotificationObject","notification","i18n","i18nString","notifObj","title","from_profile","icon","profile_image_url","body","emoji","text","attachments","nsfw","mimetype","startsWith","image","domain","parseUser","masto","mastoShort","inLists","_original","screen_name","acct","fqn","statusnet_profile_url","emojis","display_name","name_html","name_unescaped","note","description_html","fields","fields_html","field","fields_text","unescape","avatar","profile_image_url_original","cover_photo","header","friends_count","following_count","bot","pleroma","settings_store","storage","relationship","background_image","favicon","token","chat_token","allow_following_move","hide_follows","hide_followers","hide_follows_count","hide_followers_count","rights","moderator","is_moderator","admin","is_admin","role","birthday","privileges","default_scope","privacy","no_rich_text","show_role","discoverable","show_birthday","is_local","delete_others_notice","muting","muted","blocking","statusnet_blocking","followed_by","follows_you","following","created_at","locked","followers_count","statuses_count","follow_request_count","tags","deactivated","is_active","notification_settings","unread_chat_count","screen_name_ui","unicodeDomain","screen_name_ui_contains_non_ascii","parseAttachment","mime_type","meta","large_thumb_url","preview_url","parseStatus","favorited","favourited","fave_num","favourites_count","repeated","reblogged","repeat_num","reblogs_count","bookmarked","reblog","sensitive","raw_html","content","edited_at","summary","spoiler_text","statusnet_conversation_id","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","thread_muted","emoji_reactions","parent_visible","quote_id","quote_url","quote_visible","in_reply_to_status_id","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","retweeted_status","summary_raw_html","external_url","poll","_objectSpread","title_html","pinned","is_post_verb","uri","qvitter_delete_notice","activity_type","isNsfw","statusnet_html","summary_html","visibility","card","user","account","attentions","mentions","media_attachments","retweetedStatus","favoritedBy","rebloggedBy","assign","originalStatus","parseNotification","parsedNotice","notice","ntype","Boolean","is_seen","favorited_status","action","favourite","emoji_url","report","actor","statuses","inBrowser","hasSymbol","isNumber","isRegExp","toTypeString","isEmptyObject","isPlainObject","msg","_globalThis","escapeHtml","rawText","createCompileError","messages","SyntaxError","location","pathStateMachine","literalValueRE","getPathCharType","ch","resolveWithKeyValue","DEFAULT_MODIFIER","DEFAULT_MESSAGE","DEFAULT_NORMALIZE","DEFAULT_INTERPOLATE","pluralDefault","choice","choicesLength","abs","min","devtools","translateDevTools","createDevToolsHook","hook","payloads","emit","fallbackWithSimple","fallback","fallbackWithLocaleChain","startLocale","DEFAULT_LOCALE","__localeChainCache","chain","block","appendBlockToChain","defaults","blocks","follow","locale","appendLocaleToChain","tokens","appendItemToChain","toLocaleUpperCase","_resolver","_fallbacker","_additionalMeta","setAdditionalMeta","_fallbackContext","setFallbackContext","_cid","handleMissing","missingWarn","missing","onWarn","ret","updateFallbackLocale","localeFallbacker","inc","CoreErrorCodes","INVALID_ARGUMENT","INVALID_DATE_ARGUMENT","INVALID_ISO_DATE_ARGUMENT","__EXTEND_POINT__","createCoreError","NOOP_MESSAGE_FUNCTION","isMessageFunction","translate","fallbackFormat","postTranslation","unresolving","messageCompiler","fallbackLocale","parseTranslateArgs","escapeParameter","fallbackWarn","resolvedMessage","defaultMsgOrKey","default","enableDefaultMsg","named","escapeParams","formatScope","targetLocale","resolveMessageFormat","cacheBaseKey","occurred","compileMessageFormat","ctxOptions","modifiers","pluralRules","messageResolver","resolveValue","fallbackContext","processor","plural","pluralIndex","getMessageContextOptions","messaged","msgCtx","evaluateMessage","getPluralIndex","pluralRule","orgPluralRule","_named","parent","normalizeNamed","arg1","arg2","modifier","createMessageContext","__INTLIFY_PROD_DEVTOOLS__","timestamp","__meta","locales","from","to","missingRet","errorDetector","warnHtmlMessage","onCacheKey","friendlyJSONstringify","json","generateFormatCacheKey","getCompileOptions","arg3","intlDefined","Intl","datetime","datetimeFormats","__datetimeFormatters","overrides","parseDateTimeArgs","DateTimeFormat","datetimeFormat","formatter","formatToParts","NumberFormat","DATETIME_FORMAT_OPTIONS_KEYS","arg4","matches","dateTime","toISOString","getTime","clearDateTimeFormat","delete","numberFormats","__numberFormatters","parseNumberArgs","numberFormat","NUMBER_FORMAT_OPTIONS_KEYS","clearNumberFormat","expectsLowerCase","normalizeStyle","normalized","parseStringStyle","listDelimiterRE","propertyDelimiterRE","styleCommentRE","cssText","tmp","normalizeClass","onRE","isMap","isIntegerKey","cacheStringFunction","camelizeRE","hyphenateRE","_","toUpperCase","oldValue","is","activeEffectScope","EffectScope","detached","active","effects","cleanups","scopes","run","currentEffectScope","on","off","fromParent","createDep","dep","wasTracked","trackOpBit","newTracked","targetMap","activeEffect","effectTrackDepth","ITERATE_KEY","MAP_KEY_ITERATE_KEY","scheduler","scope","deps","effect","recordEffectScope","lastShouldTrack","shouldTrack","initDepMarkers","cleanupEffect","ptr","finalizeDepMarkers","deferStop","onStop","trackStack","track","depsMap","trackEffects","debuggerEventExtraInfo","newValue","oldTarget","newLength","parseFloat","triggerEffects","computed","triggerEffect","allowRecurse","isNonTrackableKeys","builtInSymbols","getOwnPropertyNames","createGetter","readonlyGet","arrayInstrumentations","createArrayInstrumentations","instrumentations","isReadonly","shallow","receiver","shallowReadonlyMap","readonlyMap","shallowReactiveMap","reactiveMap","targetIsArray","Reflect","readonly","reactive","createSetter","isShallow","hadKey","Number","mutableHandlers","deleteProperty","ownKeys","readonlyHandlers","toShallow","get$1","rawTarget","rawKey","toReadonly","toReactive","has$1","set$1","deleteEntry","hadItems","createForEach","observed","createIterableMethod","targetIsMap","isPair","isKeyOnly","innerIterator","createReadonlyMethod","createInstrumentations","mutableInstrumentations","shallowInstrumentations","readonlyInstrumentations","shallowReadonlyInstrumentations","createInstrumentationGetter","mutableCollectionHandlers","readonlyCollectionHandlers","createReactiveObject","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","isExtensible","rawType","targetTypeMap","proxy","Proxy","isProxy","raw","markRaw","def","trackRefValue","ref","triggerRefValue","newVal","__v_isRef","createRef","rawValue","RefImpl","__v_isShallow","_rawValue","_value","useDirectValue","shallowUnwrapHandlers","unref","_a","ComputedRefImpl","_setter","isSSR","_dirty","_cacheable","callWithErrorHandling","handleError","callWithAsyncErrorHandling","catch","throwInDev","vnode","cur","exposedInstance","errorInfo","errorCapturedHooks","ec","appErrorHandler","appContext","errorHandler","contextVNode","logError","isFlushing","isFlushPending","flushIndex","pendingPostFlushCbs","activePostFlushCbs","postFlushIndex","resolvedPromise","currentFlushPromise","bind","queueJob","job","end","middle","getId","findInsertionIndex","queueFlush","flushJobs","Infinity","comparator","b","diff","pre","deduped","flushPostFlushCbs","currentRenderingInstance","inject","treatDefaultAsFactory","currentInstance","provides","INITIAL_WATCHER_VALUE","watch","cb","doWatch","deep","flush","onTrack","onTrigger","cleanup","forceTrigger","isMultiSource","some","traverse","isUnmounted","onCleanup","baseGetter","ssrCleanup","isInSSRComponentSetup","useSSRContext","__watcherHandles","fill","queuePostRenderEffect","suspense","unwatch","el","instanceWatch","publicThis","segments","createPathGetter","handler","setCurrentInstance","unsetCurrentInstance","createHook","lifecycle","prepend","hooks","wrappedHook","__weh","injectHook","onBeforeMount","onMounted","onUnmounted","NULL_DYNAMIC_COMPONENT","getPublicInstance","shapeFlag","exposed","exposeProxy","objectWithRefs","publicPropertiesMap","getExposeProxy","$","$el","$data","$props","$attrs","attrs","$slots","slots","$refs","refs","$parent","$root","$emit","$options","mixins","extends","extendsOptions","globalMixins","optionsCache","optionMergeStrategies","cached","mergeOptions","resolveMergedOptions","$forceUpdate","update","$nextTick","$watch","strats","asMixin","strat","internalOptionMergeStrats","mergeDataFn","mergeObjectOptions","emits","methods","beforeCreate","mergeAsArray","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","beforeUnmount","destroyed","unmounted","activated","errorCaptured","serverPrefetch","components","directives","merged","provide","normalizeInject","pendingBranch","Fragment","Text","Comment","isVNode","__v_isVNode","InternalObjectKey","normalizeRef","ref_key","ref_for","createVNode","patchFlag","dynamicProps","isBlockNode","cloned","cloneVNode","normalizeChildren","__vccOpts","guardReactiveProps","class","klass","style","needFullChildrenNormalization","__v_skip","scopeId","slotScopeIds","component","ssContent","ssFallback","dirs","transition","anchor","targetAnchor","staticCount","dynamicChildren","createBaseVNode","__isSuspense","isSuspense","__isTeleport","isTeleport","extraProps","mergeRef","mergedProps","toMerge","existing","incoming","mergeProps","createTextVNode","slot","_c","_d","slotFlag","_ctx","getCurrentInstance","getterOrOptions","debugOptions","setter","onlyGetter","propsOrChildren","ssrContextKey","code$1","inc$1","I18nErrorCodes","UNEXPECTED_RETURN_TYPE","MUST_BE_CALL_SETUP_TOP","NOT_INSLALLED","NOT_AVAILABLE_IN_LEGACY_MODE","REQUIRED_VALUE","INVALID_VALUE","CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN","NOT_INSLALLED_WITH_PROVIDE","UNEXPECTED_ERROR","NOT_COMPATIBLE_LEGACY_VUE_I18N","BRIDGE_SUPPORT_VUE_2_ONLY","MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION","NOT_AVAILABLE_COMPOSITION_IN_LEGACY","createI18nError","TransrateVNodeSymbol","DatetimePartsSymbol","NumberPartsSymbol","SetPluralRulesSymbol","InejctWithOption","handleFlatJson","subKeys","currentObj","getLocaleMessages","__i18n","flatJson","custom","resource","deepCopy","isNotObjectOrIsArray","src","des","getComponentOptions","adjustI18nResources","componentOptions","__i18nGlobal","mergeLocaleMessage","mergeDateTimeFormat","mergeNumberFormat","DEVTOOLS_META","composerID","defineCoreMissingHandler","createComposer","VueI18nLegacy","__root","_isGlobal","_inheritLocale","inheritLocale","_locale","_fallbackLocale","_messages","_datetimeFormats","_numberFormats","_missingWarn","_fallbackWarn","_fallbackRoot","fallbackRoot","_fallbackFormat","_missing","_runtimeMissing","_postTranslation","_warnHtmlMessage","_escapeParameter","_modifiers","_context","_pluralRules","framework","upper","lower","capitalize","_compiler","internalOptions","cid","initI18nDevTools","createCoreContext","getCoreContext","wrapWithDeps","argumentParser","warnType","fallbackSuccess","fallbackFail","successCondition","getMetaInfo","getLocaleMessage","composer","availableLocales","isGlobal","setLocaleMessage","getPostTranslationHandler","setPostTranslationHandler","getMissingHandler","setMissingHandler","rules","rt","te","tm","targetLocaleMessages","messageValue","resolveMessages","getDateTimeFormat","setDateTimeFormat","getNumberFormat","setNumberFormat","__injectWithOption","createVueI18n","silentTranslationWarn","silentFallbackWarn","formatFallbackMessages","pluralizationRules","warnHtmlInMessage","escapeParameterHtml","sync","sharedMessages","convertComposerOptions","vueI18n","preserveDirectiveContent","__composer","tc","getChoiceIndex","__onComponentInstanceCreated","componentInstanceCreatedListener","baseFormatProps","validator","getFragmentableTag","Translation","keypath","required","setup","useI18n","useScope","__useComponent","current","getInterpolateArg","assignedAttrs","renderFormatter","slotKeys","partFormatter","node","DatetimeFormat","parseValue","makeParams","mergeToRoot","I18nInjectionKey","isCE","app","__VUE_I18N_SYMBOL__","getI18nInstance","getGlobalComposer","getScope","__VUE_I18N_LEGACY_API__","allowComposition","isLocale","_composer","warpWithDeps","wrapper","$i18n","useI18nForLegacy","useComponent","i18nInternal","__getInstance","getComposer","composerOptions","__deleteInstance","setupLifeCycle","__setInstance","globalExportProps","globalExportMethods","hit","newChar","typeMap","subPathDepth","actions","maybeUnescapeQuote","nextChar","trimmed","exp","stripQuotes","formatSubPath","needWarn","__VUE_I18N_FULL_INSTALL__","__INTLIFY__","__INTLIFY_DEVTOOLS_GLOBAL_HOOK__","__legacyMode","legacy","__globalInjection","globalInjection","__allowComposition","__instances","globalScope","__global","legacyMode","createGlobal","getOwnPropertyDescriptor","globalProperties","injectGlobalFields","pluginOptions","useI18nComponentName","globalInstall","directive","_process","getComposer$2","parsedValue","textContent","__i18nWatcher","getSSRProps","vTDirective","mixin","vuei18n","optionsI18n","$t","$rt","$tc","$te","$d","$n","$tm","defineMixin","unmountApp","unmount","dispose","createI18n","ar","ca","cs","de","eo","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","sk","zh","en","getWindowClients","clients","matchAll","includeUncontrolled","clientList","_ref","setLocale","_ref2","_callee","localForage","interfaceLanguage","maybeShowNotification","_ref3","_callee2","event","enabled","activeClients","notificationJson","parsedNotification","_context2","webPushNotifications","registration","notification_id","headers","Authorization","access_token","showNotification","_x","addEventListener","_ref4","_callee3","_context3","waitUntil","_x2","client","focus","openWindow"],"sourceRoot":""} +\ No newline at end of file diff --git a/rel/files/bin/pleroma_ctl b/rel/files/bin/pleroma_ctl @@ -134,7 +134,7 @@ if [ -z "$1" ] || [ "$1" = "help" ]; then " else - SCRIPT=$(readlink -f "$0") + SCRIPT=$(realpath "$0") SCRIPTPATH=$(dirname "$SCRIPT") FULL_ARGS="$*" diff --git a/rel/files/installation/init.d/pleroma b/rel/files/installation/init.d/pleroma @@ -9,6 +9,7 @@ command=/opt/pleroma/bin/pleroma command_args="start" command_user=pleroma command_background=1 +no_new_privs="yes" # Ask process to terminate within 30 seconds, otherwise kill it retry="SIGTERM/30/SIGKILL/5" diff --git a/test/fixtures/ccworld-ap-bridge_note.json b/test/fixtures/ccworld-ap-bridge_note.json @@ -0,0 +1 @@ +{"@context":"https://www.w3.org/ns/activitystreams","type":"Note","id":"https://cc.mkdir.uk/ap/note/e5d1d0a1-1ab3-4498-9949-588e3fdea286","attributedTo":"https://cc.mkdir.uk/ap/acct/hiira","inReplyTo":"","quoteUrl":"","content":"おはコンー","published":"2024-01-19T22:08:05Z","to":["https://www.w3.org/ns/activitystreams#Public"],"tag":null,"attachment":[],"object":null} diff --git a/test/fixtures/custom-emoji-reaction.json b/test/fixtures/custom-emoji-reaction.json @@ -0,0 +1,28 @@ +{ + "@context": [ + "https://www.w3.org/ns/activitystreams", + "https://w3id.org/security/v1", + { + "Hashtag": "as:Hashtag" + } + ], + "type": "Like", + "id": "https://misskey.local.live/likes/917ocsybgp", + "actor": "https://misskey.local.live/users/8x8yep20u2", + "object": "https://pleroma.local.live/objects/89937a53-2692-4631-bb62-770091267391", + "content": ":hanapog:", + "_misskey_reaction": ":hanapog:", + "tag": [ + { + "id": "https://misskey.local.live/emojis/hanapog", + "type": "Emoji", + "name": ":hanapog:", + "updated": "2022-06-07T12:00:05.773Z", + "icon": { + "type": "Image", + "mediaType": "image/png", + "url": "https://misskey.local.live/files/webpublic-8f8a9768-7264-4171-88d6-2356aabeadcd" + } + } + ] +} diff --git a/test/fixtures/fep-e232.json b/test/fixtures/fep-e232.json @@ -0,0 +1,31 @@ +{ + "@context": "https://www.w3.org/ns/activitystreams", + "type": "Create", + "actor": "https://example.org/users/alice", + "object": { + "id": "https://example.org/objects/10", + "type": "Note", + "attributedTo": "https://example.org/users/alice", + "content": "<p>test <a href=\"https://example.org/objects/9\">https://example.org/objects/9</a></p>", + "published": "2022-10-01T21:30:05.211215Z", + "tag": [ + { + "name": "@bob@example.net", + "type": "Mention", + "href": "https://example.net/users/bob" + }, + { + "name": "https://example.org/objects/9", + "type": "Link", + "href": "https://example.org/objects/9", + "mediaType": "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"" + } + ], + "to": [ + "https://www.w3.org/ns/activitystreams#Public" + ], + "cc": [ + "https://example.org/users/alice/followers" + ] + } +} diff --git a/test/fixtures/hubzilla-actor.json b/test/fixtures/hubzilla-actor.json @@ -0,0 +1 @@ +{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1","https://hub.somaton.com/apschema/v1.9"],"type":"Person","id":"https://hub.somaton.com/channel/testc6","preferredUsername":"testc6","name":"testc6 lala","updated":"2021-08-29T10:07:23Z","icon":{"type":"Image","mediaType":"image/png","updated":"2021-10-09T04:54:35Z","url":"https://hub.somaton.com/photo/profile/l/33","height":300,"width":300},"url":"https://hub.somaton.com/channel/testc6","publicKey":{"id":"https://hub.somaton.com/channel/testc6","owner":"https://hub.somaton.com/channel/testc6","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq5ep+6MhhaAiqZSd8nXe\nUAokXNgqTr/DjUic5VDudjQgvetchaiBUieBnqpJSPNNAvvf6Qs4eDW4w2JQeA6y\nqEplKrmb8l1EyhwXeFLDUGQdf0f6hg++x5mIrO6uX0tlQGU6nutvhItn6JMZc5GU\nv3C/UW0OfHCCdHSGZ/1nIqq1P98FqF0+PA1pvTHCkLr4kcKzfpmkLjsccUSq0FGh\nQF+paW9FU89o4hkaH/X3E/Ac7DL8zgcyt29KSj4eUIvjBIEPAMdRno345fiZ+QYr\nlYQYaBC2gvozjxtxl9MyfqjBRzfl9VDHzoDvMn5+LD5dCRB1zOESv/b3EpiHYqXl\nwiPzP9az8e8cw6D72n/Mlrf27yIuVAdwaGdbAwekjIQZHIDoP0XNnA5i31RLpEMI\nbNpH47ChtjxeilQZ3va6qIShYfGlndpy/rx4i4Yt4xIG+BbGb/dWo3AbtHi64fPZ\nMoLuR71sEBe7uAvalJ+lopxuQ2qLJpCInukQ13p/G/n9tVDwbfGyumzr5hHk7JoY\nN+JqH737MCZqb9dRDof+fju58GY1VzFjBph38sHYJh0ykA+2BzYU2+nT7CDXfKWA\nsmHhizp7haoPjl/yclZG5FJwg3oqHTD14dASUs+OI4K+Q//74wfb4/6E3CDyOkW3\nUj+8TPZooKulxtQ9ezergr0CAwEAAQ==\n-----END PUBLIC KEY-----\n"},"outbox":"https://hub.somaton.com/outbox/testc6","inbox":"https://hub.somaton.com/inbox/testc6","followers":"https://hub.somaton.com/followers/testc6","following":"https://hub.somaton.com/following/testc6","endpoints":{"sharedInbox":"https://hub.somaton.com/inbox"},"discoverable":false,"signature":{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1"],"type":"RsaSignature2017","nonce":"8d6dea03f04cbb7faaf43958a4cf39a115ff1c61c7febaa6154c463eab9a42c8","creator":"https://hub.somaton.com/channel/testc6","created":"2021-10-13T18:21:48Z","signatureValue":"N4CJBO2K/8v7KI97REyJXaSYOlLWscuEDlODDnjNYD1fbVQFO3s2JtqPcN2lVJvNTlW5HUze+owaAYNcvZe3mNm1iz05Xru3s8yRA8bNCdKBuWd/3zb3/JQVkbSb09D2PloeuoKBQmPIn+dNiTyFR0jxLsxCXXTomGKigWPtTOUIt52Dv9MFJ3jRZmfoykT9bHrAIVCASHoiluhTkPAzc6pt0lSyZd0D3X4J1K4/sLXa8HRoooMFu2dHWfqV4tyLU9WzofAhvnYg9tEbKCH42DIAbwDfjAeC4qL8xkqAlYWLvXYVGH76cZLdp9Zuv1p3NHqaPEJ85MbuaUkfnU75Bx/Fcfoi0pEieWRdFvMx5b/UFwGbJd6iSAO1zRbGYTPEMPWHzh0AEAaLeyY+g3ZmpNu88ujrIr8iJ1U4EkjOBn8ooxA5LaI2fXDiYC2NwRiAbY+xVtgJgvHDi9tXCdvzjZWfU/cgiwF/cYMbsB2BCyPRd+XZhudfXSOysFC4WYnawhiRVevba9lQ6rEP4FMepOGq4ZOSGzxgw2xNIXpu0IkrxX5mEv/ahEhDy1KGRIFc0GnPJrv3kMVxJrZ7SF8PNAGqftQBLkqQR+SEygs3XB4cd2DQ2lPeiMd8+Xv+lBjtzZtZAM/Y4CZCOdV9DHXDGNSKKFDzzna4QcUzQ+KRc8w="}} +\ No newline at end of file diff --git a/test/fixtures/hubzilla-create-image.json b/test/fixtures/hubzilla-create-image.json @@ -0,0 +1 @@ +{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1","https://hub.somaton.com/apschema/v1.9"],"type":"Create","id":"https://hub.somaton.com/activity/452583b2-7e1f-4ac3-8334-ff666f134afe","diaspora:guid":"452583b2-7e1f-4ac3-8334-ff666f134afe","name":"daf82c18ef92a84cda72(1).jpg","published":"2021-10-12T21:28:26Z","actor":"https://hub.somaton.com/channel/testc6","object":{"type":"Image","name":"daf82c18ef92a84cda72(1).jpg","published":"2021-10-12T21:28:23Z","updated":"2021-10-12T21:28:23Z","attributedTo":"https://hub.somaton.com/channel/testc6","id":"https://hub.somaton.com/photo/452583b2-7e1f-4ac3-8334-ff666f134afe","url":[{"type":"Link","mediaType":"image/jpeg","href":"https://hub.somaton.com/photo/452583b2-7e1f-4ac3-8334-ff666f134afe-0.jpg","width":2200,"height":2200},{"type":"Link","mediaType":"image/jpeg","href":"https://hub.somaton.com/photo/452583b2-7e1f-4ac3-8334-ff666f134afe-1.jpg","width":1024,"height":1024},{"type":"Link","mediaType":"image/jpeg","href":"https://hub.somaton.com/photo/452583b2-7e1f-4ac3-8334-ff666f134afe-2.jpg","width":640,"height":640},{"type":"Link","mediaType":"image/jpeg","href":"https://hub.somaton.com/photo/452583b2-7e1f-4ac3-8334-ff666f134afe-3.jpg","width":320,"height":320},{"type":"Link","mediaType":"text/html","href":"https://hub.somaton.com/photos/testc6/image/452583b2-7e1f-4ac3-8334-ff666f134afe"}],"source":{"content":"[footer][zrl=https://hub.somaton.com/channel/testc6]testc6 lala[/zrl] posted [zrl=https://hub.somaton.com/photos/testc6/image/452583b2-7e1f-4ac3-8334-ff666f134afe]a new photo[/zrl] to [zrl=https://hub.somaton.com/photos/testc6/album/1e9b0d74-633e-4bd0-b37f-694bb0ed0145]test[/zrl][/footer]","mediaType":"text/bbcode"},"content":"<div class=\"wall-item-footer\"><a class=\"zrl\" href=\"https://hub.somaton.com/channel/testc6\" target=\"_blank\" rel=\"nofollow noopener\" >testc6 lala</a> posted <a class=\"zrl\" href=\"https://hub.somaton.com/photos/testc6/image/452583b2-7e1f-4ac3-8334-ff666f134afe\" target=\"_blank\" rel=\"nofollow noopener\" >a new photo</a> to <a class=\"zrl\" href=\"https://hub.somaton.com/photos/testc6/album/1e9b0d74-633e-4bd0-b37f-694bb0ed0145\" target=\"_blank\" rel=\"nofollow noopener\" >test</a></div>","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://hub.somaton.com/followers/testc6"]},"target":{"type":"orderedCollection","name":"test","id":"https://hub.somaton.com/album/testc6/test"},"to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://hub.somaton.com/followers/testc6"],"signature":{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1"],"type":"RsaSignature2017","nonce":"e0d077edccf262f02ed59ff67e91a5324ccaffc3d2b3f23793b4bd24cdbe70bb","creator":"https://hub.somaton.com/channel/testc6","created":"2021-10-13T18:39:05Z","signatureValue":"YYU0/17PqqUmLCn4oVS2N62rV1G9WQ+wLax2cI+EpMw/WOWKuVvtGrvhzciQ5ITXoh3scrZRYH8Bke1jDWkjL9YtjVD6TjMsv6f3OoO1vvMNgEfQfgZJ78QQt5MoLrT2mkRa35lSmVHkTDROKJPrwIAnpN6bDb577wZ63BsuBjqW7ca/E6oXSIr+meCXv3kqkyYDSz0ImYvVmki+OfX97xbYkQlzM06EgK1LZTHfuf4sk09hVfDDqVB9tHO4ObYQCYNiOWRHjA5S1Cw8WX1OQJ+GCQ8yxHmtiU3tJsxeYhxGs7VEmTLUvf/QZ0VTPumkd1CewdxzNGvAP3f9JCakuV7eyk88oqF+p7xxfxmBjLYbMTuhrcZIdUdMcjW9pENOYBbt+a+FhPsjbm8zVU3iKPqe/8UAvo01hGW7jiKJUm4qdcX3H3MExTLEFuz0NTeqxl4djlyGTT9KBqNouD+/oSSgwm6qeRZ5y3RsC27N0HRbg74qNXhhWQZVWQtHdSCHjAfHVPOSpjxpSPs7qkMLQ0vPsVsCsukZz8JCoXRo+JoKuaiaRgfiIRGNBO/XEicKMyu2JCU+UmkroiDJHy+4IfZRevnlneRa1jmu5KA/4xk5KU8l0I0Inap7TSPhv14Ex2sF89LkT8MbcDM3S3QL4urYsQj37zOKRDTFzE96TmI="}} +\ No newline at end of file diff --git a/test/fixtures/mastodon-nodeinfo20.json b/test/fixtures/mastodon-nodeinfo20.json @@ -0,0 +1 @@ +{"version":"2.0","software":{"name":"mastodon","version":"4.1.0"},"protocols":["activitypub"],"services":{"outbound":[],"inbound":[]},"usage":{"users":{"total":971090,"activeMonth":167218,"activeHalfyear":384808},"localPosts":52071541},"openRegistrations":true,"metadata":{}} +\ No newline at end of file diff --git a/test/fixtures/mastodon-well-known-nodeinfo.json b/test/fixtures/mastodon-well-known-nodeinfo.json @@ -0,0 +1 @@ +{"links":[{"rel":"http://nodeinfo.diaspora.software/ns/schema/2.0","href":"https://mastodon.example.org/nodeinfo/2.0"}]} +\ No newline at end of file diff --git a/test/fixtures/minds-invalid-mention-post.json b/test/fixtures/minds-invalid-mention-post.json @@ -0,0 +1 @@ +{"@context":"https://www.w3.org/ns/activitystreams","type":"Note","id":"https://www.minds.com/api/activitypub/users/1198929502760083472/entities/urn:comment:1600926863310458883:0:0:0:1600932467852709903","attributedTo":"https://www.minds.com/api/activitypub/users/1198929502760083472","content":"\u003Ca class=\u0022u-url mention\u0022 href=\u0022https://www.minds.com/lain\u0022 target=\u0022_blank\u0022\u003E@lain\u003C/a\u003E corn syrup.","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://www.minds.com/api/activitypub/users/1198929502760083472/followers","https://lain.com/users/lain"],"tag":[{"type":"Mention","href":"https://www.minds.com/api/activitypub/users/464237775479123984","name":"@lain"}],"url":"https://www.minds.com/newsfeed/1600926863310458883?focusedCommentUrn=urn:comment:1600926863310458883:0:0:0:1600932467852709903","published":"2024-02-04T17:34:03+00:00","inReplyTo":"https://lain.com/objects/36254095-c839-4167-bcc2-b361d5de9198","source":{"content":"@lain corn syrup.","mediaType":"text/plain"}} +\ No newline at end of file diff --git a/test/fixtures/minds-pleroma-mentioned-post.json b/test/fixtures/minds-pleroma-mentioned-post.json @@ -0,0 +1 @@ +{"@context":["https://www.w3.org/ns/activitystreams","https://lain.com/schemas/litepub-0.1.jsonld",{"@language":"und"}],"actor":"https://lain.com/users/lain","attachment":[],"attributedTo":"https://lain.com/users/lain","cc":["https://lain.com/users/lain/followers"],"content":"which diet is the best for cognitive dissonance","context":"https://lain.com/contexts/98c8a130-e813-4797-8973-600e80114317","conversation":"https://lain.com/contexts/98c8a130-e813-4797-8973-600e80114317","id":"https://lain.com/objects/36254095-c839-4167-bcc2-b361d5de9198","published":"2024-02-04T17:11:23.931890Z","repliesCount":11,"sensitive":null,"source":{"content":"which diet is the best for cognitive dissonance","mediaType":"text/plain"},"summary":"","tag":[],"to":["https://www.w3.org/ns/activitystreams#Public"],"type":"Note"} +\ No newline at end of file diff --git a/test/fixtures/png_with_transparency.png b/test/fixtures/png_with_transparency.png Binary files differ. diff --git a/test/fixtures/quote_post/fedibird_quote_mismatched.json b/test/fixtures/quote_post/fedibird_quote_mismatched.json @@ -0,0 +1,54 @@ +{ + "@context": [ + "https://www.w3.org/ns/activitystreams", + { + "ostatus": "http://ostatus.org#", + "atomUri": "ostatus:atomUri", + "inReplyToAtomUri": "ostatus:inReplyToAtomUri", + "conversation": "ostatus:conversation", + "sensitive": "as:sensitive", + "toot": "http://joinmastodon.org/ns#", + "votersCount": "toot:votersCount", + "fedibird": "http://fedibird.com/ns#", + "quoteUri": "fedibird:quoteUri", + "expiry": "fedibird:expiry" + } + ], + "id": "https://fedibird.com/users/noellabo/statuses/107712183700212249", + "type": "Note", + "summary": null, + "inReplyTo": null, + "published": "2022-01-30T15:44:50Z", + "url": "https://fedibird.com/@noellabo/107712183700212249", + "attributedTo": "https://fedibird.com/users/noellabo", + "to": [ + "https://www.w3.org/ns/activitystreams#Public" + ], + "cc": [ + "https://fedibird.com/users/noellabo/followers" + ], + "sensitive": false, + "atomUri": "https://fedibird.com/users/noellabo/statuses/107712183700212249", + "inReplyToAtomUri": null, + "conversation": "tag:fedibird.com,2022-01-30:objectId=107712183700170473:objectType=Conversation", + "context": "https://fedibird.com/contexts/107712183700170473", + "quoteUri": "https://unnerv.jp/users/UN_NERV/statuses/107712176849067434", + "_misskey_quote": "https://unnerv.jp/users/UN_NERV/statuses/107712176849067434", + "_misskey_content": "揺れていたようだ", + "content": "<p>揺れていたようだ<span class=\"quote-inline\"><br/>QT: <a class=\"status-url-link\" data-status-account-acct=\"UN_NERV@unnerv.jp\" data-status-id=\"107712177062934465\" href=\"https://unnerv.jp/@UN_NERV/107712176849067434\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">unnerv.jp/@UN_NERV/10771217684</span><span class=\"invisible\">9067434</span></a></span></p>", + "contentMap": { + "ja": "<p>揺れていたようだ<span class=\"quote-inline\"><br/>QT: <a class=\"status-url-link\" data-status-account-acct=\"UN_NERV@unnerv.jp\" data-status-id=\"107712177062934465\" href=\"https://unnerv.jp/@UN_NERV/107712176849067434\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">unnerv.jp/@UN_NERV/10771217684</span><span class=\"invisible\">9067434</span></a></span></p>" + }, + "attachment": [], + "tag": [], + "replies": { + "id": "https://fedibird.com/users/noellabo/statuses/107712183700212249/replies", + "type": "Collection", + "first": { + "type": "CollectionPage", + "next": "https://fedibird.com/users/noellabo/statuses/107712183700212249/replies?only_other_accounts=true&page=true", + "partOf": "https://fedibird.com/users/noellabo/statuses/107712183700212249/replies", + "items": [] + } + } +} diff --git a/test/fixtures/quote_post/fedibird_quote_post.json b/test/fixtures/quote_post/fedibird_quote_post.json @@ -0,0 +1,52 @@ +{ + "@context": [ + "https://www.w3.org/ns/activitystreams", + { + "ostatus": "http://ostatus.org#", + "atomUri": "ostatus:atomUri", + "inReplyToAtomUri": "ostatus:inReplyToAtomUri", + "conversation": "ostatus:conversation", + "sensitive": "as:sensitive", + "toot": "http://joinmastodon.org/ns#", + "votersCount": "toot:votersCount", + "expiry": "toot:expiry" + } + ], + "id": "https://fedibird.com/users/noellabo/statuses/107663670404015196", + "type": "Note", + "summary": null, + "inReplyTo": null, + "published": "2022-01-22T02:07:16Z", + "url": "https://fedibird.com/@noellabo/107663670404015196", + "attributedTo": "https://fedibird.com/users/noellabo", + "to": [ + "https://www.w3.org/ns/activitystreams#Public" + ], + "cc": [ + "https://fedibird.com/users/noellabo/followers" + ], + "sensitive": false, + "atomUri": "https://fedibird.com/users/noellabo/statuses/107663670404015196", + "inReplyToAtomUri": null, + "conversation": "tag:fedibird.com,2022-01-22:objectId=107663670404038002:objectType=Conversation", + "context": "https://fedibird.com/contexts/107663670404038002", + "quoteURL": "https://misskey.io/notes/8vsn2izjwh", + "_misskey_quote": "https://misskey.io/notes/8vsn2izjwh", + "_misskey_content": "いつの生まれだシトリン", + "content": "<p>いつの生まれだシトリン<span class=\"quote-inline\"><br/>QT: <a class=\"status-url-link\" data-status-account-acct=\"Citrine@misskey.io\" data-status-id=\"107663207194225003\" href=\"https://misskey.io/notes/8vsn2izjwh\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">misskey.io/notes/8vsn2izjwh</span><span class=\"invisible\"></span></a></span></p>", + "contentMap": { + "ja": "<p>いつの生まれだシトリン<span class=\"quote-inline\"><br/>QT: <a class=\"status-url-link\" data-status-account-acct=\"Citrine@misskey.io\" data-status-id=\"107663207194225003\" href=\"https://misskey.io/notes/8vsn2izjwh\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">misskey.io/notes/8vsn2izjwh</span><span class=\"invisible\"></span></a></span></p>" + }, + "attachment": [], + "tag": [], + "replies": { + "id": "https://fedibird.com/users/noellabo/statuses/107663670404015196/replies", + "type": "Collection", + "first": { + "type": "CollectionPage", + "next": "https://fedibird.com/users/noellabo/statuses/107663670404015196/replies?only_other_accounts=true&page=true", + "partOf": "https://fedibird.com/users/noellabo/statuses/107663670404015196/replies", + "items": [] + } + } +} diff --git a/test/fixtures/quote_post/fedibird_quote_uri.json b/test/fixtures/quote_post/fedibird_quote_uri.json @@ -0,0 +1,54 @@ +{ + "@context": [ + "https://www.w3.org/ns/activitystreams", + { + "ostatus": "http://ostatus.org#", + "atomUri": "ostatus:atomUri", + "inReplyToAtomUri": "ostatus:inReplyToAtomUri", + "conversation": "ostatus:conversation", + "sensitive": "as:sensitive", + "toot": "http://joinmastodon.org/ns#", + "votersCount": "toot:votersCount", + "fedibird": "http://fedibird.com/ns#", + "quoteUri": "fedibird:quoteUri", + "expiry": "fedibird:expiry" + } + ], + "id": "https://fedibird.com/users/noellabo/statuses/107699335988346142", + "type": "Note", + "summary": null, + "inReplyTo": null, + "published": "2022-01-28T09:17:30Z", + "url": "https://fedibird.com/@noellabo/107699335988346142", + "attributedTo": "https://fedibird.com/users/noellabo", + "to": [ + "https://www.w3.org/ns/activitystreams#Public" + ], + "cc": [ + "https://fedibird.com/users/noellabo/followers" + ], + "sensitive": false, + "atomUri": "https://fedibird.com/users/noellabo/statuses/107699335988346142", + "inReplyToAtomUri": null, + "conversation": "tag:fedibird.com,2022-01-28:objectId=107699335988345290:objectType=Conversation", + "context": "https://fedibird.com/contexts/107699335988345290", + "quoteUri": "https://fedibird.com/users/yamako/statuses/107699333438289729", + "_misskey_quote": "https://fedibird.com/users/yamako/statuses/107699333438289729", + "_misskey_content": "美味しそう", + "content": "<p>美味しそう<span class=\"quote-inline\"><br/>QT: <a class=\"status-url-link\" data-status-account-acct=\"yamako\" data-status-id=\"107699333438289729\" href=\"https://fedibird.com/@yamako/107699333438289729\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">fedibird.com/@yamako/107699333</span><span class=\"invisible\">438289729</span></a></span></p>", + "contentMap": { + "ja": "<p>美味しそう<span class=\"quote-inline\"><br/>QT: <a class=\"status-url-link\" data-status-account-acct=\"yamako\" data-status-id=\"107699333438289729\" href=\"https://fedibird.com/@yamako/107699333438289729\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">fedibird.com/@yamako/107699333</span><span class=\"invisible\">438289729</span></a></span></p>" + }, + "attachment": [], + "tag": [], + "replies": { + "id": "https://fedibird.com/users/noellabo/statuses/107699335988346142/replies", + "type": "Collection", + "first": { + "type": "CollectionPage", + "next": "https://fedibird.com/users/noellabo/statuses/107699335988346142/replies?only_other_accounts=true&page=true", + "partOf": "https://fedibird.com/users/noellabo/statuses/107699335988346142/replies", + "items": [] + } + } +} diff --git a/test/fixtures/quote_post/fep-e232-tag-example.json b/test/fixtures/quote_post/fep-e232-tag-example.json @@ -0,0 +1,17 @@ +{ + "@context": "https://www.w3.org/ns/activitystreams", + "type": "Note", + "content": "This is a quote:<br>RE: https://server.example/objects/123", + "tag": [ + { + "type": "Link", + "mediaType": "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"", + "href": "https://server.example/objects/123", + "name": "RE: https://server.example/objects/123" + } + ], + "id": "https://server.example/objects/1", + "to": "https://server.example/users/1", + "attributedTo": "https://server.example/users/1", + "actor": "https://server.example/users/1" +} diff --git a/test/fixtures/quote_post/misskey_quote_post.json b/test/fixtures/quote_post/misskey_quote_post.json @@ -0,0 +1,46 @@ +{ + "@context": [ + "https://www.w3.org/ns/activitystreams", + "https://w3id.org/security/v1", + { + "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", + "sensitive": "as:sensitive", + "Hashtag": "as:Hashtag", + "quoteUrl": "as:quoteUrl", + "toot": "http://joinmastodon.org/ns#", + "Emoji": "toot:Emoji", + "featured": "toot:featured", + "discoverable": "toot:discoverable", + "schema": "http://schema.org#", + "PropertyValue": "schema:PropertyValue", + "value": "schema:value", + "misskey": "https://misskey.io/ns#", + "_misskey_content": "misskey:_misskey_content", + "_misskey_quote": "misskey:_misskey_quote", + "_misskey_reaction": "misskey:_misskey_reaction", + "_misskey_votes": "misskey:_misskey_votes", + "_misskey_talk": "misskey:_misskey_talk", + "isCat": "misskey:isCat", + "vcard": "http://www.w3.org/2006/vcard/ns#" + } + ], + "id": "https://misskey.io/notes/8vs6ylpfez", + "type": "Note", + "attributedTo": "https://misskey.io/users/7rkrarq81i", + "summary": null, + "content": "<p><span>投稿者の設定によるね<br>Fanboxについても投稿者によっては過去の投稿は高額なプランに移動してることがある<br><br>RE: </span><a href=\"https://misskey.io/notes/8vs6wxufd0\">https://misskey.io/notes/8vs6wxufd0</a></p>", + "_misskey_content": "投稿者の設定によるね\nFanboxについても投稿者によっては過去の投稿は高額なプランに移動してることがある", + "_misskey_quote": "https://misskey.io/notes/8vs6wxufd0", + "quoteUrl": "https://misskey.io/notes/8vs6wxufd0", + "published": "2022-01-21T16:38:30.243Z", + "to": [ + "https://www.w3.org/ns/activitystreams#Public" + ], + "cc": [ + "https://misskey.io/users/7rkrarq81i/followers" + ], + "inReplyTo": null, + "attachment": [], + "sensitive": false, + "tag": [] +} diff --git a/test/fixtures/rich_media/google.html b/test/fixtures/rich_media/google.html @@ -0,0 +1,12 @@ +<meta property="og:url" content="https://google.com"> +<meta property="og:type" content="website"> +<meta property="og:title" content="Google"> +<meta property="og:description" content="Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for."> +<meta property="og:image" content=""> + +<meta name="twitter:card" content="summary_large_image"> +<meta property="twitter:domain" content="google.com"> +<meta property="twitter:url" content="https://google.com"> +<meta name="twitter:title" content="Google"> +<meta name="twitter:description" content="Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for."> +<meta name="twitter:image" content=""> diff --git a/test/fixtures/rich_media/oembed.html b/test/fixtures/rich_media/oembed.html @@ -1,3 +1,3 @@ <link rel="alternate" type="application/json+oembed" - href="http://example.com/oembed.json" + href="https://example.com/oembed.json" title="Bacon Lollys oEmbed Profile" /> diff --git a/test/fixtures/rich_media/reddit.html b/test/fixtures/rich_media/reddit.html @@ -0,0 +1,392 @@ +<!doctype html><html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><title>Twitter/X is getting weirder; where now for security news and analysis? : cybersecurity</title><meta name="keywords" content=" reddit, reddit.com, vote, comment, submit " /><meta name="description" content="I primarily use Twitter/X as a glorified RSS feed of security news and analysis reporting. Lately its getting heavier on ads and weird pushed..." /><meta name="referrer" content="always"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link type="application/opensearchdescription+xml" rel="search" href="/static/opensearch.xml"/><link rel="canonical" href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" /><link rel="amphtml" href="https://amp.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" /><meta name="viewport" content="width=1024"><link rel="shorturl" href="https://redd.it/16nf2ev"/><link rel="dns-prefetch" href="//out.reddit.com"><link rel="preconnect" href="//out.reddit.com"><meta property="og:image" content="https://www.redditstatic.com/new-icon.png"><meta property="og:ttl" content="600"><meta property="og:site_name" content="reddit"><meta property="og:description" content="I primarily use Twitter/X as a glorified RSS feed of security news and analysis reporting. Lately its getting heavier on ads and weird pushed..."><meta property="og:title" content="Twitter/X is getting weirder; where now for security news and analysis?"><meta property="al:android:package" content="com.reddit.frontpage"><meta property="al:ios:app_name" content="Reddit"><meta property="al:ios:url" content="reddit://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/"><meta property="al:ios:app_store_id" content="1064216828"><meta property="twitter:site" content="@reddit"><meta property="twitter:card" content="summary"><meta property="twitter:title" content="Twitter/X is getting weirder; where now for security news and..."><link rel="apple-touch-icon" sizes="57x57" href="//www.redditstatic.com/desktop2x/img/favicon/apple-icon-57x57.png" /><link rel="apple-touch-icon" sizes="60x60" href="//www.redditstatic.com/desktop2x/img/favicon/apple-icon-60x60.png" /><link rel="apple-touch-icon" sizes="72x72" href="//www.redditstatic.com/desktop2x/img/favicon/apple-icon-72x72.png" /><link rel="apple-touch-icon" sizes="76x76" href="//www.redditstatic.com/desktop2x/img/favicon/apple-icon-76x76.png" /><link rel="apple-touch-icon" sizes="114x114" href="//www.redditstatic.com/desktop2x/img/favicon/apple-icon-114x114.png" /><link rel="apple-touch-icon" sizes="120x120" href="//www.redditstatic.com/desktop2x/img/favicon/apple-icon-120x120.png" /><link rel="apple-touch-icon" sizes="144x144" href="//www.redditstatic.com/desktop2x/img/favicon/apple-icon-144x144.png" /><link rel="apple-touch-icon" sizes="152x152" href="//www.redditstatic.com/desktop2x/img/favicon/apple-icon-152x152.png" /><link rel="apple-touch-icon" sizes="180x180" href="//www.redditstatic.com/desktop2x/img/favicon/apple-icon-180x180.png" /><link rel="icon" type="image/png" sizes="192x192" href="//www.redditstatic.com/desktop2x/img/favicon/android-icon-192x192.png" /><link rel="icon" type="image/png" sizes="32x32" href="//www.redditstatic.com/desktop2x/img/favicon/favicon-32x32.png" /><link rel="icon" type="image/png" sizes="96x96" href="//www.redditstatic.com/desktop2x/img/favicon/favicon-96x96.png" /><link rel="icon" type="image/png" sizes="16x16" href="//www.redditstatic.com/desktop2x/img/favicon/favicon-16x16.png" /><link rel="manifest" href="//www.redditstatic.com/desktop2x/img/favicon/manifest.json"/><meta name="msapplication-TileColor" content="#ffffff"/><meta name="msapplication-TileImage" content="//www.redditstatic.com/desktop2x/img/favicon/ms-icon-144x144.png"/><meta name="theme-color" content="#ffffff"/><link rel="alternate" type="application/atom+xml" title="RSS" href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/.rss" /><link rel="stylesheet" type="text/css" href="//www.redditstatic.com/reddit.YXox_dqXzrc.css" media="all"><link rel="stylesheet" type="text/css" href="//www.redditstatic.com/expando.gMzRK16vwrQ.css" media="all"><link rel="stylesheet" type="text/css" href="//www.redditstatic.com/crosspost-preview.De3P20Yb4PY.css" media="all"><link rel="stylesheet" type="text/css" href="//www.redditstatic.com/author-tooltip.1VKQhhDIRMI.css" media="all"><link rel="stylesheet" type="text/css" href="//www.redditstatic.com/listing-comments.AZZO7Kj_O88.css" media="all"><link rel="stylesheet" type="text/css" href="//www.redditstatic.com/popup-notification.6-JvPBpHWMo.css" media="all"><link rel="stylesheet" type="text/css" href="//www.redditstatic.com/about-this-ad-modal.zVecmeeCuWY.css" media="all"><link rel="stylesheet" type="text/css" href="//www.redditstatic.com/desktoponboarding.k2RNrAG42v4.css" media="all"><link rel="stylesheet" type="text/css" href="//www.redditstatic.com/videoplayer.ANmi3DZjWG4.css" media="all"><link rel="stylesheet" type="text/css" href="//www.redditstatic.com/videoplayercontrols.a_TwaTy76-k.css" media="all"><!--[if gte IE 8]><!--><link rel="stylesheet" href="https://b.thumbs.redditmedia.com/ba_fm376ctS_mGlZGabqddmkhth3jqnccUyhKW7iGBo.css" ref="applied_subreddit_stylesheet" title="applied_subreddit_stylesheet" type="text/css"><!--<![endif]--><!--[if gte IE 9]><!--><script type="text/javascript" src="//www.redditstatic.com/reddit-init.en.a6Ar54Z0rBo.js"></script><!--<![endif]--><!--[if lt IE 9]><script type="text/javascript" src="//www.redditstatic.com/reddit-init-legacy.en.sAcI0xGFcwg.js"></script><![endif]--><script type="text/javascript" src="//www.redditstatic.com/videoplayer.XCrwE8Bi5A4.js"></script><script type="text/javascript" id="config">r.setup({"ajax_domain": "www.reddit.com", "post_site": "cybersecurity", "gold": false, "scraped_image_extensions": ["gif", "jpeg", "jpg", "png", "tiff"], "poisoning_report_mac": null, "requires_eu_cookie_policy": false, "nsfw_media_acknowledged": false, "stats_domain": "", "feature_net_neutrality": false, "cur_screen_name": "", "country_code": "", "facebook_app_id": "322647334569188", "loid": "000000000uhuuh3cqp", "is_sponsor": false, "has_gold_subscription": false, "feature_author_tooltip_users": true, "user_id": false, "pref_email_messages": false, "poisoning_canary": null, "logged": false, "over_18": false, "show_archived_signup_cta": true, "loid_created": 1708312402583, "mweb_blacklist_expressions": ["^/prefs/?", "^/live/?", "/message/compose", "/m/", "^/subreddits/create", "^/gold", "^/advertising", "^/promoted", "^/buttons"], "feature_noreferrer_to_noopener": true, "is_posts_mod": false, "modhash": "", "external_frame": false, "feature_cookie_consent_banner": true, "send_logs": true, "user_subscription_size": 0, "listing_over_18": false, "https_endpoint": "https://www.reddit.com", "extension": null, "embedded": false, "event_target": {"target_id": 2578913527, "target_type": "self", "target_sort": "confidence", "target_fullname": "t3_16nf2ev"}, "use_onetrust": false, "ads_loading_timeout_ms": 5000, "enabled_experiments": {}, "cache_policy": "loggedout_www", "admin_message_acct": "/r/reddit.com", "hidden_post_card_enabled": false, "advertiser_category": null, "events_collector_v2_url": "https://www.reddit.com/api/vote", "debug": false, "has_subscribed": false, "static_root": "//www.redditstatic.com", "server_time": 1708312403.0, "feature_no_subscription_step": "control_1", "feature_swap_steps_two_and_three_recalibration": "control_2", "pref_no_profanity": true, "share_tracking_ts": 1708312403232, "cur_domain": "reddit.com", "browser_supports_d2x": false, "events_collector_url": "https://www.reddit.com/api/vote", "embed_preview_url": "https://rebed.redditmedia.com/embed", "gild_url": "/framedGild", "cur_link": "t3_16nf2ev", "user_in_timeout": false, "share_tracking_hmac": null, "live_orangereds_pref": true, "feature_blocked_user_enabled": false, "ad_serving_events_sample_rate": "1.00", "is_fake": false, "renderstyle": "html", "framed_modal_url": "/framedModal/", "feature_adblock_v2_events_enabled": false, "user_age": false, "vote_hash": "4piNiL72kb0vN4fiRASdIAWORVe57zU0rsH8oo7AucKTKbAJQLfbHHo5RHL3/TKQx1yuwQbqBTpkfx1e/jhijKl6RZROrrFN0hJLyzXBCO0hF9IabySW12sBeNpMhTkrRffaXEgdyVj6LxzXZ2XAHPZPz5b7yVHbKOdgXhJ2ENI=", "link_websocket_url": "", "events_collector_secret": "Ua3epahc7ZiengeeVaeG6eingahke7", "pref_video_autoplay": true, "events_collector_key": "RedditFrontend3", "allow_nonessential_cookies": false, "scraped_domains": ["gfycat.com", "imgur.com"], "expando_preference": "subreddit_default", "store_visits": false, "onetrust_client_id": "14003311-a669-490b-a682-56294eb02bf2", "cur_site": "t5_2u559", "new_window": false, "pref_beta": false, "channels_mod_permissions_enabled": true, "eu_cookie_max_attempts": 3, "pageInfo": {"actionName": "front.GET_comments", "statsVerification": "388228f7328f4f4378f87784f3f47137498db25f", "type": "post_detail", "verification": "388228f7328f4f4378f87784f3f47137498db25f", "statsName": "front.GET_comments"}, "user_websocket_url": null, "signature_header": "X-Signature", "media_domain": "www.redditmedia.com", "whitelist_status": "all_ads", "signature_header_v2": "X-Signature-v2", "cur_listing": "cybersecurity", "email_verified": false, "status_msg": {"fetching": "fetching title...", "loading": "loading...", "submitting": "submitting..."}, "link_limit": 200, "stats_sample_rate": "0", "loid_version": 2, "eu_cookie": "eu_cookie", "is_moderator_somewhere": false, "d2x_domain": "https://new.reddit.com/"})</script><style type="text/css">/* Custom css: use this block to insert special translation-dependent css in the page header */</style></head><body class="single-page comments-page" ><script>var frame = document.createElement('iframe'); frame.style.display = 'none'; frame.referrer = 'no-referrer'; frame.id = 'gtm-jail'; frame.name = JSON.stringify({ subreddit: r.config.post_site, origin: location.origin, url: location.href, userMatching: false, userId: r.config.user_id, advertiserCategory: r.config.advertiser_category, adsStatus: r.config.whitelist_status, }); frame.src = '//' + "www.redditmedia.com" + '/gtm/jail?cb=' + "8CqR7FcToPI"; document.body.appendChild(frame);</script><div id="header" role="banner"><a tabindex="1" href="#content" id="jumpToContent">jump to content</a><div id="sr-header-area"><div class="width-clip"><div class="dropdown srdrop" onclick="open_menu(this)"><span class="selected title">my subreddits</span></div><div class="drop-choices srdrop"><a href="https://www.reddit.com/subreddits/" class="bottom-option choice" >edit subscriptions</a></div><div class="sr-list"><ul class="flat-list sr-bar hover" ><li ><a href="https://www.reddit.com/r/popular/" class="choice" >popular</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/all/" class="choice" >all</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/random/" class="random choice" >random</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/users/" class="choice" >users</a></li></ul><span class="separator">&nbsp;|&nbsp;</span><ul class="flat-list sr-bar hover" id='sr-bar'><li ><a href="https://www.reddit.com/r/AskReddit/" class="choice" >AskReddit</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/pics/" class="choice" >pics</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/funny/" class="choice" >funny</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/movies/" class="choice" >movies</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/gaming/" class="choice" >gaming</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/worldnews/" class="choice" >worldnews</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/news/" class="choice" >news</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/todayilearned/" class="choice" >todayilearned</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/nottheonion/" class="choice" >nottheonion</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/explainlikeimfive/" class="choice" >explainlikeimfive</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/mildlyinteresting/" class="choice" >mildlyinteresting</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/DIY/" class="choice" >DIY</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/videos/" class="choice" >videos</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/OldSchoolCool/" class="choice" >OldSchoolCool</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/TwoXChromosomes/" class="choice" >TwoXChromosomes</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/tifu/" class="choice" >tifu</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/Music/" class="choice" >Music</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/books/" class="choice" >books</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/LifeProTips/" class="choice" >LifeProTips</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/dataisbeautiful/" class="choice" >dataisbeautiful</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/aww/" class="choice" >aww</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/science/" class="choice" >science</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/space/" class="choice" >space</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/Showerthoughts/" class="choice" >Showerthoughts</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/askscience/" class="choice" >askscience</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/Jokes/" class="choice" >Jokes</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/IAmA/" class="choice" >IAmA</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/Futurology/" class="choice" >Futurology</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/sports/" class="choice" >sports</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/UpliftingNews/" class="choice" >UpliftingNews</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/food/" class="choice" >food</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/nosleep/" class="choice" >nosleep</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/creepy/" class="choice" >creepy</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/history/" class="choice" >history</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/gifs/" class="choice" >gifs</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/InternetIsBeautiful/" class="choice" >InternetIsBeautiful</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/GetMotivated/" class="choice" >GetMotivated</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/gadgets/" class="choice" >gadgets</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/announcements/" class="choice" >announcements</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/WritingPrompts/" class="choice" >WritingPrompts</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/philosophy/" class="choice" >philosophy</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/Documentaries/" class="choice" >Documentaries</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/EarthPorn/" class="choice" >EarthPorn</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/photoshopbattles/" class="choice" >photoshopbattles</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/listentothis/" class="choice" >listentothis</a></li><li ><span class="separator">-</span><a href="https://www.reddit.com/r/blog/" class="choice" >blog</a></li></ul></div><a href="https://www.reddit.com/subreddits/" id="sr-more-link" >more &raquo;</a></div></div><div id="header-bottom-left"><a href="/" id="header-img" class="default-header" title="">reddit.com</a>&nbsp;<span class="hover pagename redditname"><a href="https://www.reddit.com/r/cybersecurity/" >cybersecurity</a></span><ul class="tabmenu " ><li class='selected'><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" class="choice" >comments</a></li></ul></div><div id="header-bottom-right"><span class="user">Want to join?&#32;<a href="https://www.reddit.com/login" class="login-required login-link" >Log in</a>&#32;or&#32;<a href="https://www.reddit.com/login" class="login-required" >sign up</a>&#32;in seconds.</span><span class="separator">|</span><ul class="flat-list hover" ><li ><a href="javascript:void(0)" class="pref-lang choice" onclick="return showlang();" >English</a></li></ul></div></div><div class="side"><div class='spacer'><form action="https://www.reddit.com/r/cybersecurity/search" id="search" role="search"><input type="text" name="q" placeholder="search" tabindex="20"><input type="submit" value="" tabindex="22"><div id="searchexpando" class="infobar"><label><input type="checkbox" name="restrict_sr" tabindex="21">limit my search to r/cybersecurity</label><div id="moresearchinfo"><p>use the following search parameters to narrow your results:</p><dl><dt>subreddit:<i>subreddit</i></dt><dd>find submissions in &quot;subreddit&quot;</dd><dt>author:<i>username</i></dt><dd>find submissions by &quot;username&quot;</dd><dt>site:<i>example.com</i></dt><dd>find submissions from &quot;example.com&quot;</dd><dt>url:<i>text</i></dt><dd>search for &quot;text&quot; in url</dd><dt>selftext:<i>text</i></dt><dd>search for &quot;text&quot; in self post contents</dd><dt>self:yes (or self:no)</dt><dd>include (or exclude) self posts</dd><dt>nsfw:yes (or nsfw:no)</dt><dd>include (or exclude) results marked as NSFW</dd></dl><p>e.g.&#32;<code>subreddit:aww site:imgur.com dog</code></p><p><a href="https://www.reddit.com/wiki/search">see the search faq for details.</a></p></div><p><a href="https://www.reddit.com/wiki/search" id="search_showmore">advanced search: by author, subreddit...</a></p></div></form></div><div class='spacer'><div class="linkinfo"><div class="date"><span>this post was submitted on &#32;</span><time datetime="2023-09-20T07:34:36+00:00">20 Sep 2023</time></div><div class="score"><span class="number">241</span>&#32;<span class="word">points</span>&#32;(92% upvoted)</div><div class="shortlink">shortlink: &#32;<input type="text" value="https://redd.it/16nf2ev" readonly="readonly" id="shortlink-text" /></div></div></div><div class='spacer'><form method="post" action="https://www.reddit.com/r/cybersecurity/post/login" id="login_login-main" class="login-form login-form-side"><input type="hidden" name="op" value="login-main" /><input name="user" placeholder="username" type="text" maxlength="20" tabindex="1"/><input name="passwd" placeholder="password" type="password" tabindex="1"/><div class="g-recaptcha" data-sitekey="6LeTnxkTAAAAAN9QEuDZRpn90WwKk_R1TRW_g-JC"></div><div class="status"></div><div id="remember-me"><input type="checkbox" name="rem" id="rem-login-main" tabindex="1" /><label for="rem-login-main">remember me</label><a class="recover-password" href="/password">reset password</a></div><div class="submit"><span class="throbber"></span><button class="btn" type="submit" tabindex="1">login</button></div><div class="clear"></div></form></div><div class='spacer'></div><div class='spacer'><div class="sidebox submit submit-link"><div class="morelink"><a href="https://www.reddit.com/r/cybersecurity/submit" data-event-action="submit" data-type="subreddit" data-event-detail="link" class="login-required access-required" target="_top" >Submit a new link</a><div class="nub"></div></div></div></div><div class='spacer'><div class="sidebox submit submit-text"><div class="morelink"><a href="https://www.reddit.com/r/cybersecurity/submit?selftext=true" data-event-action="submit" data-type="subreddit" data-event-detail="self" class="login-required access-required" target="_top" >Submit a new text post</a><div class="nub"></div></div></div></div><div class='spacer'><a href="/premium" alt="get premium" class="premium-banner-outer"><form action="/premium" class="premium-banner"><div class="premium-banner__logo"></div><div class="premium-banner__title">Get an ad-free experience with special benefits, and directly support Reddit.</div><button class="premium-banner__button">get reddit premium</button></form></a></div><div class='spacer'><div class="titlebox"><h1 class="hover redditname"><a href="https://www.reddit.com/r/cybersecurity/" class="hover" >cybersecurity</a></h1><span class="fancy-toggle-button subscribe-button toggle" style="" data-sr_name="cybersecurity" ><a class="option active add login-required" href="#" tabindex="100" >join</a><a class="option remove" href="#">leave</a></span><span class="subscribers"><span class="number">688,076</span>&#32;<span class="word">readers</span></span><p class="users-online" title="users viewing this subreddit in the past 15 minutes"><span class="number">592</span>&#32;<span class="word">users here now</span></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t5_2u559nsa"><input type="hidden" name="thing_id" value="t5_2u559"/><div class="usertext-body may-blank-within md-container " ><div class="md"><h1><strong>NOTICE:</strong></h1> + +<h1><strong>This sidebar and rules are no longer being updated. To see the current sidebar and rules you must view them on new reddit.</strong></h1> + +<p><a href="https://new.reddit.com/r/cybersecurity">https://new.reddit.com/r/cybersecurity</a></p> + +<p>This security forum is oriented towards private white hat security professionals. Please note, the &#39;old&#39; Reddit is no longer kept up to date. Please use &#39;new&#39; Reddit. </p> + +<ol> +<li><p><strong>No Low Effort / Poor Quality Posts</strong> +&quot;This security forum is oriented towards private white hat security professionals.&quot; If a post has very basic information, it is not appropriate for this sub. For example, &quot;why passwords are important&quot; is too fundamental.</p></li> +<li><p><strong>Must be relevant to security professionals</strong> +This is not a general security subreddit. Posts related to burglar alarms, weapons, and similar concepts are not appropriate for this sub.</p></li> +<li><p><strong>No fundamental security questions or tech support requests</strong> +Basic questions on security concepts and fundamentals and requests for tech support are not appropriate for this subreddit.</p></li> +<li><p><strong>SECURITY FIRST (no editorializing)</strong> +This is the guiding principle for all posts. No editorializing and no political agendas. Posts discussing political issues that affect security are fine, but the post must be geared towards the security implication. Such posts will be heavily monitored and comments may be locked as needed.</p></li> +<li><p><strong>Civility</strong> +We&#39;re all professionals. Be excellent to each other.</p></li> +<li><p><strong>No Advertising</strong> +Want to share information or resources? Message The Mods to find out how! You would rather build a relationship with the <a href="/r/CyberSecurity">/r/CyberSecurity</a> community than get banned! Please message the mods before posting links to your own projects or if you have any questions about the advertising policies</p></li> +<li><p><strong>No Personally-Identifiable Information</strong> +Do not post personally-identifiable information, unless the source has consented to it.</p></li> +</ol> + +<hr/> + +<p><strong>This subreddit is oriented towards computer security professionals</strong></p> + +<p>Need help with a computer security problem? </p> + +<ul> +<li><p><a href="/r/cybersecurity_help">/r/cybersecurity_help</a></p></li> +<li><p><a href="/r/cybersecurity101">/r/cybersecurity101</a></p></li> +</ul> + +<p>Are you looking for a job or looking to hire someone?</p> + +<ul> +<li><a href="/r/cybersecurityjobs">/r/cybersecurityjobs</a> (currently closed)</li> +</ul> + +<p>Are you looking for home defense and security systems (alarms, CCTV, ect)? </p> + +<ul> +<li><a href="/r/Locksmith">/r/Locksmith</a></li> +<li><a href="/r/homedefense">/r/homedefense</a></li> +<li><a href="/r/homeautomation">/r/homeautomation</a></li> +<li><a href="/r/videosurveillance">/r/videosurveillance</a></li> +<li><a href="/r/physec/">/r/physec/</a></li> +</ul> + +<p>Are you a security guard or physical security professional? </p> + +<ul> +<li><a href="/r/ProtectAndServe">/r/ProtectAndServe</a></li> +<li><a href="/r/Secguards">/r/Secguards</a> </li> +</ul> + +<p>Are you here to post an advertisement or spam? </p> + +<ul> +<li><a href="/r/spam">/r/spam</a></li> +</ul> + +<p>Other Security Communities:</p> + +<ul> +<li><a href="/r/ComputerSecurity">/r/ComputerSecurity</a></li> +<li><a href="/r/crypto">/r/crypto</a> </li> +<li><a href="/r/hacking">/r/hacking</a> </li> +<li><a href="/r/netdef">/r/netdef</a><br/></li> +<li><a href="/r/intelligence">/r/intelligence</a></li> +<li><a href="/r/opsec">/r/opsec</a></li> +<li><a href="/r/OperationsSecurity">/r/OperationsSecurity</a></li> +<li><a href="/r/privacy">/r/privacy</a> </li> +<li><a href="/r/redteam">/r/redteam</a></li> +</ul> + +<p>Just for fun:</p> + +<ul> +<li><a href="/r/scambaiting">/r/scambaiting</a></li> +</ul> + +<hr/> + +<hr/> + +<p>We ask all users with a potential conflict of interest (e.g. security product manufacturers and service providers) to disclose their affiliation. This allows subscribers to ask them questions about their areas of expertise while ensuring transparency. For questions about this status, to request a user flair, or if you think that these users have violated this subreddit&#39;s policies, please <a href="http://www.reddit.com/message/compose?to=%2Fr%2Fcybersecurity">message the mods</a>.</p> +</div> +</div></form><div class="bottom"><span class="age">a community for&#32;<time title="Tue May 22 05:07:59 2012 UTC" datetime="2012-05-22T05:07:59+00:00">11 years</time></span></div></div></div><div class='spacer'></div><div class='spacer'><div class="sidecontentbox " ><div class="title"><h1>MODERATORS</h1></div><ul class="content"><li class="message-button centered"><a class="c-btn c-btn-primary login-required" href="/message/compose/?to=/r/cybersecurity">message the mods</a></li></ul></div></div><div class='spacer'><div class="read-next-container"><aside class="read-next"><header class="read-next-header"><div class="read-next-header-title">discussions in&#32;<a href="https://www.reddit.com/r/cybersecurity/?ref=readnext" >r/cybersecurity</a></div><nav class="read-next-nav read-next-nav-left"><span class="read-next-button prev">&lt;</span><span class="read-next-button next">&gt;</span></nav><div class="read-next-nav read-next-nav-right"><span class="read-next-dismiss">X</span></div></header><div class="read-next-list"><div class="listing read-next-listing"><div class="listing-contents"><a id="read-next-link-t3_1au4n18" class="read-next-link may-blank" href="/r/cybersecurity/comments/1au4n18/what_are_some_musthave_rules_and_policies_that/?ref=readnext"><div class="read-next-meta"><span class="score" title="106">106</span>&#32; &middot;&#32;<span class="comments">45 comments</span>&#32;</div><div class="read-next-title">What are some &quot;must-have&quot; rules and policies that you configure on every firewall you worked with?</div></a><a id="read-next-link-t3_1au7265" class="read-next-link may-blank" href="/r/cybersecurity/comments/1au7265/has_it_been_anyone_elses_experience_when_meeting/?ref=readnext"><div class="read-next-meta"><span class="score" title="55">55</span>&#32; &middot;&#32;<span class="comments">27 comments</span>&#32;</div><div class="read-next-title">Has it been anyone else's experience when meeting people in the field and networking that they all got their positions because they knew someone even with zero experience?</div></a><a id="read-next-link-t3_1aty4yv" class="read-next-link may-blank" href="/r/cybersecurity/comments/1aty4yv/when_it_comes_to_cyber_threats_india_not_the_us/?ref=readnext"><div class="read-next-meta"><span class="score" title="116">116</span>&#32; &middot;&#32;<span class="comments">17 comments</span>&#32;</div><div class="read-next-thumbnail"><img src="//b.thumbs.redditmedia.com/fN4jxU3yZomnnLik7d9diWdRnTkbl67V4YjF0oXfSfY.jpg" width='70' height='36' alt=""></div><div class="read-next-title">When it comes to cyber threats, India – not the US – is China’s biggest concern</div></a><a id="read-next-link-t3_1atmron" class="read-next-link may-blank" href="/r/cybersecurity/comments/1atmron/gpt4_can_hack_websites_with_733_success_rate_in/?ref=readnext"><div class="read-next-meta"><span class="score" title="449">449</span>&#32; &middot;&#32;<span class="comments">57 comments</span>&#32;</div><div class="read-next-thumbnail"><img src="//a.thumbs.redditmedia.com/grGQ4Xa2kcPcM6pqkNIDlUWrOa_1Q98cv7xt9EOyyg8.jpg" width='70' height='36' alt=""></div><div class="read-next-title">GPT4 can hack websites with 73.3% success rate in sandboxed environment</div></a><a id="read-next-link-t3_1aubpd0" class="read-next-link may-blank" href="/r/cybersecurity/comments/1aubpd0/bouncing_back_from_a_cyber_attack/?ref=readnext"><div class="read-next-meta"></div><div class="read-next-thumbnail"><img src="//b.thumbs.redditmedia.com/Jefbctam7l-lzDPxyKfR_L5oOV68nxzrg7E89LrTfpQ.jpg" width='70' height='23' alt=""></div><div class="read-next-title">Bouncing back from a cyber attack</div></a><a id="read-next-link-t3_1au92zu" class="read-next-link may-blank" href="/r/cybersecurity/comments/1au92zu/mentorship_monday_post_all_career_education_and/?ref=readnext"><div class="read-next-meta"><span class="score" title="5">5</span>&#32; &middot;&#32;<span class="comments">8 comments</span>&#32;</div><div class="read-next-title">Mentorship Monday - Post All Career, Education and Job questions here!</div></a><a id="read-next-link-t3_1atjev1" class="read-next-link may-blank" href="/r/cybersecurity/comments/1atjev1/what_is_a_security_feature_that_is_really/?ref=readnext"><div class="read-next-meta"><span class="score" title="192">192</span>&#32; &middot;&#32;<span class="comments">296 comments</span>&#32;</div><div class="read-next-title">What is a security feature that is really &quot;security theater&quot;?</div></a><a id="read-next-link-t3_1atltdb" class="read-next-link may-blank" href="/r/cybersecurity/comments/1atltdb/resources_to_learn_threat_hunting/?ref=readnext"><div class="read-next-meta"><span class="score" title="94">94</span>&#32; &middot;&#32;<span class="comments">17 comments</span>&#32;</div><div class="read-next-title">Resources to learn Threat Hunting?</div></a><a id="read-next-link-t3_1atuoz8" class="read-next-link may-blank" href="/r/cybersecurity/comments/1atuoz8/seeking_cybersecurity_awareness_materials_for/?ref=readnext"><div class="read-next-meta"><span class="score" title="15">15</span>&#32; &middot;&#32;<span class="comments">9 comments</span>&#32;</div><div class="read-next-title">Seeking Cybersecurity Awareness Materials for School Teenagers age group students: Any Recommendations?</div></a><a id="read-next-link-t3_1au1z7n" class="read-next-link may-blank" href="/r/cybersecurity/comments/1au1z7n/fbis_mostwanted_zeus_and_icedid_malware/?ref=readnext"><div class="read-next-meta"><span class="score" title="4">4</span>&#32; &middot;&#32;<span class="comments">1 comment</span>&#32;</div><div class="read-next-thumbnail"><img src="//b.thumbs.redditmedia.com/sKOGKVqS9KxTIcMVdCAsY2em1FWOai0QXCxUcxjoW7U.jpg" width='70' height='36' alt=""></div><div class="read-next-title">FBI's Most-Wanted Zeus and IcedID Malware Mastermind Pleads Guilty</div></a></div></div></div></aside></div></div></div><a name="content"></a><div class="content" role="main" ><section class="infobar listingsignupbar"><a href="/login" class="login-required listingsignupbar__container"><h2 class="listingsignupbar__title">Welcome to Reddit,</h2><p class="listingsignupbar__desc">the front page of the internet.</p><div class="listingsignupbar__cta-container"><span class="c-btn c-btn-primary c-pull-left listingsignupbar__cta-button">Become a Redditor</span><p class="listingsignupbar__cta-desc">and join one of thousands of communities.</p></div></a><a href="#" class="listingsignupbar__close" title="close">&times;</a></section><style>body >.content .link .rank, .rank-spacer { width: 1.1ex } body >.content .link .midcol, .midcol-spacer { width: 4.1ex } .adsense-wrap { background-color: #eff7ff; font-size: 18px; padding-left: 5.2ex; padding-right: 5px; }</style><div id="siteTable" class="sitetable linklisting"><div class=" thing id-t3_16nf2ev linkflair odd&#32; link self" id="thing_t3_16nf2ev" onclick="click_thing(this)" data-fullname="t3_16nf2ev" data-type="link" data-gildings="0" data-whitelist-status="all_ads" data-is-gallery="false" data-author="skeedooshski" data-author-fullname="t2_2w3lp8yl" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-timestamp="1695195276000" data-url="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-domain="self.cybersecurity" data-rank="" data-comments-count="98" data-score="241" data-promoted="false" data-nsfw="false" data-spoiler="false" data-oc="false" data-num-crossposts="0" data-context="comments" ><p class="parent"></p><span class="rank"></span><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="score dislikes" title="240">240</div><div class="score unvoted" title="241">241</div><div class="score likes" title="242">242</div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><a class="thumbnail invisible-when-pinned self may-blank " data-event-action="thumbnail" href="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" ></a><div class="entry unvoted"><div class="top-matter"><p class="title"><a class="title may-blank " data-event-action="title" href="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" tabindex="1" >Twitter/X is getting weirder; where now for security news and analysis?</a><span class="flairrichtext flaircolordark linkflairlabel " title="News - General" style="background-color: #0079d3; border-color: #0079d3;"><span>News - General</span></span>&#32;<span class="domain">(<a href="/r/cybersecurity/">self.cybersecurity</a>)</span></p><p class="tagline ">submitted&#32;<time title="Wed Sep 20 07:34:36 2023 UTC" datetime="2023-09-20T07:34:36+00:00" class="live-timestamp">5 months ago</time>&#32;by&#32;<a href="https://www.reddit.com/user/skeedooshski" class="author may-blank id-t2_2w3lp8yl" >skeedooshski</a><span class="userattrs"></span></p></div><div class="expando expando-uninitialized" data-pin-condition="function() {return this.style.display != 'none';}" ><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t3_16nf2evdgw"><input type="hidden" name="thing_id" value="t3_16nf2ev"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I primarily use Twitter/X as a glorified RSS feed of security news and analysis reporting. Lately its getting heavier on ads and weird pushed content. </p> + +<p>I&#39;m not for replacing it with 5 different platforms, but if I was going to use something else, what are peeps using?</p> +</div> +</div></form></div><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-event-action="comments" class="bylink comments may-blank" rel="nofollow" >98 comments</a></li><li class="share"><a class="post-sharing-button" href="javascript: void 0;">share</a></li><li class="link-save-button save-button login-required"><a href="#">save</a></li><li><form action="/post/hide" method="post" class="state-button hide-button"><input type="hidden" name="executed" value="hidden" /><span><a href="javascript:void(0)" class=" " data-event-action="hide" onclick="change_state(this, 'hide', hide_thing);">hide</a></span></form></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li></ul><div class="reportform report-t3_16nf2ev"></div></div><div class="child" ></div><div class="clearleft"></div></div><div class="clearleft"></div></div><div class='commentarea'><div class="panestack-title"><span class="title">all 98 comments</span></div><div class="menuarea"><div class="spacer"><span class="dropdown-title lightdrop">sorted by:&#32;</span><div class="dropdown lightdrop" onclick="open_menu(this)"><span class="selected">best</span></div><div class="drop-choices lightdrop"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/?sort=top" class="choice" >top</a><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/?sort=new" class="choice" >new</a><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/?sort=controversial" class="choice" >controversial</a><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/?sort=old" class="choice" >old</a><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/?sort=random" class="hidden choice" >random</a><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/?sort=qa" class="choice" >q&amp;a</a><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/?sort=live" class="hidden choice" >live (beta)</a></div></div><div class="spacer"></div></div><section class="infobar commentsignupbar"><div class="commentsignupbar__container"><a href="/login" class="login-required commentsignupbar__link-wrapper"><textarea class="commentsignupbar__textarea"></textarea><div class="commentsignupbar__textarea-above"><h2 class="commentsignupbar__title">Want to add to the discussion?</h2><p class="commentsignupbar__desc">Post a comment!</p><div class="commentsignupbar__cta-container"><span class="c-btn c-btn-primary commentsignupbar__cta-button">Create an account</span></div></div></a></div></section><div id="siteTable_t3_16nf2ev" class="sitetable nestedlisting"><div class=" thing id-t1_k1f2su1 noncollapsed &#32; comment " id="thing_t1_k1f2su1" onclick="click_thing(this)" data-fullname="t1_k1f2su1" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="goretsky" data-author-fullname="t2_3tihk" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f2su1/" ><p class="parent"><a name="k1f2su1"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/goretsky" class="author may-blank id-t2_3tihk" >goretsky</a><span class="flairrichtext flaircolordark flair " title="Aryeh Goretsky" style="background-color: #edeff1; border-color: #edeff1;"><span>Aryeh Goretsky</span></span><span class="userattrs"></span>&#32;<span class="score dislikes" title="163">163 points</span><span class="score unvoted" title="164">164 points</span><span class="score likes" title="165">165 points</span>&#32;<time title="Wed Sep 20 14:11:13 2023 UTC" datetime="2023-09-20T14:11:13+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(5 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f2su1eco"><input type="hidden" name="thing_id" value="t1_k1f2su1"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Hello,</p> + +<p>I use Reddit for this purpose. I have created several security themed multireddits for the purpose of tracking security-related topics:</p> + +<p><a href="https://old.reddit.com/user/goretsky/m/security/">https://old.reddit.com/user/goretsky/m/security/</a> - tracks about 90 active security-related subreddits, but no vendors or open source projects and is regularly pruned of inactive subreddits.</p> + +<p><a href="https://old.reddit.com/user/goretsky/m/security_vendor/">https://old.reddit.com/user/goretsky/m/security_vendor/</a> - tracks about three dozen security vendor and open source project subreddits. </p> + +<p><a href="https://old.reddit.com/user/goretsky/m/security_inactive/">https://old.reddit.com/user/goretsky/m/security_inactive/</a> - a multireddit specifically for subreddits that were in the first two, but no longer seem to be active (lets me periodically check them for activity) </p> + +<p>You can view these by new, hot, top and so forth to get ideas of what&#39;s current, might be an emerging issue, what was historically significant, and so forth.</p> + +<p>Regards,</p> + +<p>Aryeh Goretsky</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f2su1/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f2su1/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f2su1"></div></div><div class="child"><div id="siteTable_t1_k1f2su1" class="sitetable listing"><div class=" thing id-t1_k1gtm9x noncollapsed &#32; comment " id="thing_t1_k1gtm9x" onclick="click_thing(this)" data-fullname="t1_k1gtm9x" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="cccanterbury" data-author-fullname="t2_93f0t46r4" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gtm9x/" ><p class="parent"><a name="k1gtm9x"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/cccanterbury" class="author may-blank id-t2_93f0t46r4" >cccanterbury</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="7">7 points</span><span class="score unvoted" title="8">8 points</span><span class="score likes" title="9">9 points</span>&#32;<time title="Wed Sep 20 20:17:18 2023 UTC" datetime="2023-09-20T20:17:18+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1gtm9x948"><input type="hidden" name="thing_id" value="t1_k1gtm9x"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Wow thanks Aryeh!</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gtm9x/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gtm9x/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f2su1" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1gtm9x"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1hmfej noncollapsed &#32; comment " id="thing_t1_k1hmfej" onclick="click_thing(this)" data-fullname="t1_k1hmfej" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="kitwillybb" data-author-fullname="t2_fdvexzhhd" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hmfej/" ><p class="parent"><a name="k1hmfej"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/kitwillybb" class="author may-blank id-t2_fdvexzhhd" >kitwillybb</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="2">2 points</span><span class="score unvoted" title="3">3 points</span><span class="score likes" title="4">4 points</span>&#32;<time title="Wed Sep 20 23:15:13 2023 UTC" datetime="2023-09-20T23:15:13+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1hmfejqzw"><input type="hidden" name="thing_id" value="t1_k1hmfej"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Thanks for this.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hmfej/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hmfej/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f2su1" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1hmfej"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1i7bji noncollapsed &#32; comment " id="thing_t1_k1i7bji" onclick="click_thing(this)" data-fullname="t1_k1i7bji" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Robbbbbbbbb" data-author-fullname="t2_a6lsi" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1i7bji/" ><p class="parent"><a name="k1i7bji"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Robbbbbbbbb" class="author may-blank id-t2_a6lsi" >Robbbbbbbbb</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="2">2 points</span><span class="score unvoted" title="3">3 points</span><span class="score likes" title="4">4 points</span>&#32;<time title="Thu Sep 21 01:39:52 2023 UTC" datetime="2023-09-21T01:39:52+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1i7bjic0u"><input type="hidden" name="thing_id" value="t1_k1i7bji"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Thanks! Great multireddits</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1i7bji/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1i7bji/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f2su1" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1i7bji"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1mafik noncollapsed &#32; comment " id="thing_t1_k1mafik" onclick="click_thing(this)" data-fullname="t1_k1mafik" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="That_CatDad" data-author-fullname="t2_4d8ihz1f" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1mafik/" ><p class="parent"><a name="k1mafik"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/That_CatDad" class="author may-blank id-t2_4d8ihz1f" >That_CatDad</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="2">2 points</span><span class="score unvoted" title="3">3 points</span><span class="score likes" title="4">4 points</span>&#32;<time title="Thu Sep 21 20:49:59 2023 UTC" datetime="2023-09-21T20:49:59+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1mafikfpn"><input type="hidden" name="thing_id" value="t1_k1mafik"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Well I just discovered multireddits, thank you so much this will definitely change how I use this site</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1mafik/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1mafik/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f2su1" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1mafik"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing noncollapsed &#32; deleted comment " onclick="click_thing(this)" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ehfna/" ><p class="parent"></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><em>[deleted]</em>&#32;<time title="Wed Sep 20 11:30:36 2023 UTC" datetime="2023-09-20T11:30:36+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(6 children)</a></p><div class="usertext grayed"><input type="hidden" name="thing_id" value=""/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>[deleted]</p> +</div> +</div></div><ul class="flat-list buttons"></ul><div class="reportform report-t1_k1ehfna"></div></div><div class="child"><div id="siteTable_deleted" class="sitetable listing"><div class=" thing id-t1_k1gmnbd noncollapsed &#32; comment " id="thing_t1_k1gmnbd" onclick="click_thing(this)" data-fullname="t1_k1gmnbd" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="uncannysalt" data-author-fullname="t2_3wpcoju1" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gmnbd/" ><p class="parent"><a name="k1gmnbd"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/uncannysalt" class="author may-blank id-t2_3wpcoju1" >uncannysalt</a><span class="flairrichtext flaircolorlight flair " title="Security Architect" style="background-color: #373c3f; border-color: #373c3f;"><span>Security Architect</span></span><span class="userattrs"></span>&#32;<span class="score dislikes" title="12">12 points</span><span class="score unvoted" title="13">13 points</span><span class="score likes" title="14">14 points</span>&#32;<time title="Wed Sep 20 19:38:55 2023 UTC" datetime="2023-09-20T19:38:55+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1gmnbdxe8"><input type="hidden" name="thing_id" value="t1_k1gmnbd"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Exactly. Most prolific security folks have feeds available.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gmnbd/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gmnbd/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1gmnbd"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1gobsy noncollapsed &#32; comment " id="thing_t1_k1gobsy" onclick="click_thing(this)" data-fullname="t1_k1gobsy" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="th4ntis" data-author-fullname="t2_5i6unrry" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gobsy/" ><p class="parent"><a name="k1gobsy"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/th4ntis" class="author may-blank id-t2_5i6unrry" >th4ntis</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="5">5 points</span><span class="score unvoted" title="6">6 points</span><span class="score likes" title="7">7 points</span>&#32;<time title="Wed Sep 20 19:48:06 2023 UTC" datetime="2023-09-20T19:48:06+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(4 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1gobsytgn"><input type="hidden" name="thing_id" value="t1_k1gobsy"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I would actually love to do this but need to figure out how. I haven&#39;t looked into it yet but this is on my list of things to do.<br/> +Any recommendations or tips would be helpful.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gobsy/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gobsy/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1gobsy"></div></div><div class="child"><div id="siteTable_t1_k1gobsy" class="sitetable listing"><div class=" thing noncollapsed &#32; deleted comment " onclick="click_thing(this)" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1grrni/" ><p class="parent"></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><em>[deleted]</em>&#32;<time title="Wed Sep 20 20:07:09 2023 UTC" datetime="2023-09-20T20:07:09+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(2 children)</a></p><div class="usertext grayed"><input type="hidden" name="thing_id" value=""/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>[deleted]</p> +</div> +</div></div><ul class="flat-list buttons"></ul><div class="reportform report-t1_k1grrni"></div></div><div class="child"><div id="siteTable_deleted" class="sitetable listing"><div class=" thing id-t1_k1mbol3 noncollapsed &#32; comment " id="thing_t1_k1mbol3" onclick="click_thing(this)" data-fullname="t1_k1mbol3" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="th4ntis" data-author-fullname="t2_5i6unrry" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1mbol3/" ><p class="parent"><a name="k1mbol3"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/th4ntis" class="author may-blank id-t2_5i6unrry" >th4ntis</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Thu Sep 21 20:57:08 2023 UTC" datetime="2023-09-21T20:57:08+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1mbol3bgn"><input type="hidden" name="thing_id" value="t1_k1mbol3"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>For someone getting started, any RSS links you recommend?</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1mbol3/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1mbol3/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1mbol3"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1k9di0 noncollapsed &#32; comment " id="thing_t1_k1k9di0" onclick="click_thing(this)" data-fullname="t1_k1k9di0" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Bleord" data-author-fullname="t2_6qov61wx" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1k9di0/" ><p class="parent"><a name="k1k9di0"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Bleord" class="author may-blank id-t2_6qov61wx" >Bleord</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Thu Sep 21 13:40:03 2023 UTC" datetime="2023-09-21T13:40:03+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1k9di0ftw"><input type="hidden" name="thing_id" value="t1_k1k9di0"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Lots of web browsers have it built in.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1k9di0/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1k9di0/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1gobsy" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1k9di0"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1eutsw noncollapsed &#32; comment " id="thing_t1_k1eutsw" onclick="click_thing(this)" data-fullname="t1_k1eutsw" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="beagle_bathouse" data-author-fullname="t2_83rlaeff" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eutsw/" ><p class="parent"><a name="k1eutsw"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/beagle_bathouse" class="author may-blank id-t2_83rlaeff" >beagle_bathouse</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="59">59 points</span><span class="score unvoted" title="60">60 points</span><span class="score likes" title="61">61 points</span>&#32;<time title="Wed Sep 20 13:17:09 2023 UTC" datetime="2023-09-20T13:17:09+00:00" class="live-timestamp">5 months ago</time><time class="edited-timestamp" title="last edited 9 days ago" datetime="2024-02-09T18:57:48+00:00">*</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(8 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1eutswfzs"><input type="hidden" name="thing_id" value="t1_k1eutsw"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>desert person pet quiet worm hurry absorbed like cause rainstorm</p> + +<p><em>This post was mass deleted and anonymized with <a href="https://redact.dev">Redact</a></em></p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eutsw/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eutsw/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1eutsw"></div></div><div class="child"><div id="siteTable_t1_k1eutsw" class="sitetable listing"><div class=" thing id-t1_k1fe1am noncollapsed &#32; comment " id="thing_t1_k1fe1am" onclick="click_thing(this)" data-fullname="t1_k1fe1am" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="volume_two" data-author-fullname="t2_dmeg9cabu" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fe1am/" ><p class="parent"><a name="k1fe1am"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/volume_two" class="author may-blank id-t2_dmeg9cabu" >volume_two</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="12">12 points</span><span class="score unvoted" title="13">13 points</span><span class="score likes" title="14">14 points</span>&#32;<time title="Wed Sep 20 15:20:53 2023 UTC" datetime="2023-09-20T15:20:53+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(2 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fe1am0rj"><input type="hidden" name="thing_id" value="t1_k1fe1am"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Nazis have free speech rights too! And the Constitution guarantees their freedom of speech on X.</p> + +<p>You non-Nazis are the nazis!</p> + +<h1>/S</h1> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fe1am/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fe1am/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1eutsw" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fe1am"></div></div><div class="child"><div id="siteTable_t1_k1fe1am" class="sitetable listing"><div class=" thing id-t1_k1ffalw noncollapsed &#32; comment " id="thing_t1_k1ffalw" onclick="click_thing(this)" data-fullname="t1_k1ffalw" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="beagle_bathouse" data-author-fullname="t2_83rlaeff" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ffalw/" ><p class="parent"><a name="k1ffalw"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/beagle_bathouse" class="author may-blank id-t2_83rlaeff" >beagle_bathouse</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="9">9 points</span><span class="score unvoted" title="10">10 points</span><span class="score likes" title="11">11 points</span>&#32;<time title="Wed Sep 20 15:28:26 2023 UTC" datetime="2023-09-20T15:28:26+00:00" class="live-timestamp">5 months ago</time><time class="edited-timestamp" title="last edited 9 days ago" datetime="2024-02-09T18:57:43+00:00">*</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1ffalwqyw"><input type="hidden" name="thing_id" value="t1_k1ffalw"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>wakeful mighty steer fragile quickest rinse weather saw melodic boast</p> + +<p><em>This post was mass deleted and anonymized with <a href="https://redact.dev">Redact</a></em></p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ffalw/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ffalw/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1fe1am" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1ffalw"></div></div><div class="child"><div id="siteTable_t1_k1ffalw" class="sitetable listing"><div class=" thing id-t1_k1fgnqb noncollapsed &#32; comment " id="thing_t1_k1fgnqb" onclick="click_thing(this)" data-fullname="t1_k1fgnqb" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="volume_two" data-author-fullname="t2_dmeg9cabu" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fgnqb/" ><p class="parent"><a name="k1fgnqb"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/volume_two" class="author may-blank id-t2_dmeg9cabu" >volume_two</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="-1">-1 points</span><span class="score unvoted" title="0">0 points</span><span class="score likes" title="1">1 point</span>&#32;<time title="Wed Sep 20 15:36:36 2023 UTC" datetime="2023-09-20T15:36:36+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fgnqbj60"><input type="hidden" name="thing_id" value="t1_k1fgnqb"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Somebody give this person an upvote!</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fgnqb/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fgnqb/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1ffalw" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fgnqb"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1fx6xl collapsed collapsed-for-reason &#32; comment " id="thing_t1_k1fx6xl" onclick="click_thing(this)" data-fullname="t1_k1fx6xl" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="stacksmasher" data-author-fullname="t2_4ceji" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fx6xl/" ><p class="parent"><a name="k1fx6xl"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[+]</a><a href="https://www.reddit.com/user/stacksmasher" class="author may-blank id-t2_4ceji" >stacksmasher</a><span class="userattrs"></span>&#32;<span class="collapsed-reason">comment score below threshold</span><span class="score dislikes" title="-8">-8 points</span><span class="score unvoted" title="-7">-7 points</span><span class="score likes" title="-6">-6 points</span>&#32;<time title="Wed Sep 20 17:13:37 2023 UTC" datetime="2023-09-20T17:13:37+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(4 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fx6xluja"><input type="hidden" name="thing_id" value="t1_k1fx6xl"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Infosec.exchange is horrible with very little engagement</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fx6xl/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fx6xl/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1eutsw" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fx6xl"></div></div><div class="child"><div id="siteTable_t1_k1fx6xl" class="sitetable listing"><div class=" thing id-t1_k1hdzxo noncollapsed &#32; comment " id="thing_t1_k1hdzxo" onclick="click_thing(this)" data-fullname="t1_k1hdzxo" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="thomasareed" data-author-fullname="t2_ogy3b" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hdzxo/" ><p class="parent"><a name="k1hdzxo"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/thomasareed" class="author may-blank id-t2_ogy3b" >thomasareed</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="5">5 points</span><span class="score unvoted" title="6">6 points</span><span class="score likes" title="7">7 points</span>&#32;<time title="Wed Sep 20 22:18:19 2023 UTC" datetime="2023-09-20T22:18:19+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1hdzxo59d"><input type="hidden" name="thing_id" value="t1_k1hdzxo"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Hard disagree. What you get out of it depends on what you put in. If you’re just looking to curate a feed of infosec news, this may not be it. If you’re looking for a group of friends to have interesting discussions with, both infosec-related and not, you can make it that place. But that happens slowly and with participation.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hdzxo/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hdzxo/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1fx6xl" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1hdzxo"></div></div><div class="child"><div id="siteTable_t1_k1hdzxo" class="sitetable listing"><div class=" thing id-t1_k1hh7ow noncollapsed &#32; comment " id="thing_t1_k1hh7ow" onclick="click_thing(this)" data-fullname="t1_k1hh7ow" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="stacksmasher" data-author-fullname="t2_4ceji" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hh7ow/" ><p class="parent"><a name="k1hh7ow"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/stacksmasher" class="author may-blank id-t2_4ceji" >stacksmasher</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="-3">-3 points</span><span class="score unvoted" title="-2">-2 points</span><span class="score likes" title="-1">-1 points</span>&#32;<time title="Wed Sep 20 22:39:33 2023 UTC" datetime="2023-09-20T22:39:33+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1hh7owe2s"><input type="hidden" name="thing_id" value="t1_k1hh7ow"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Nope I only use it for data. You know most critical issues are announced on Twitter?</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hh7ow/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hh7ow/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1hdzxo" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1hh7ow"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1fyt2y noncollapsed &#32; comment " id="thing_t1_k1fyt2y" onclick="click_thing(this)" data-fullname="t1_k1fyt2y" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="beagle_bathouse" data-author-fullname="t2_83rlaeff" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fyt2y/" ><p class="parent"><a name="k1fyt2y"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/beagle_bathouse" class="author may-blank id-t2_83rlaeff" >beagle_bathouse</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="5">5 points</span><span class="score unvoted" title="6">6 points</span><span class="score likes" title="7">7 points</span>&#32;<time title="Wed Sep 20 17:22:55 2023 UTC" datetime="2023-09-20T17:22:55+00:00" class="live-timestamp">5 months ago</time><time class="edited-timestamp" title="last edited 9 days ago" datetime="2024-02-09T18:57:28+00:00">*</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fyt2yioo"><input type="hidden" name="thing_id" value="t1_k1fyt2y"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>erect narrow wipe plant tub nail rain shame angle unpack</p> + +<p><em>This post was mass deleted and anonymized with <a href="https://redact.dev">Redact</a></em></p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fyt2y/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fyt2y/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1fx6xl" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fyt2y"></div></div><div class="child"><div id="siteTable_t1_k1fyt2y" class="sitetable listing"><div class=" thing id-t1_k1gafku noncollapsed &#32; comment " id="thing_t1_k1gafku" onclick="click_thing(this)" data-fullname="t1_k1gafku" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="stacksmasher" data-author-fullname="t2_4ceji" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gafku/" ><p class="parent"><a name="k1gafku"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/stacksmasher" class="author may-blank id-t2_4ceji" >stacksmasher</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="-3">-3 points</span><span class="score unvoted" title="-2">-2 points</span><span class="score likes" title="-1">-1 points</span>&#32;<time title="Wed Sep 20 18:29:55 2023 UTC" datetime="2023-09-20T18:29:55+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1gafkuw1o"><input type="hidden" name="thing_id" value="t1_k1gafku"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Agree 1000000000% but the exchange platform is not it</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gafku/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gafku/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1fyt2y" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1gafku"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1ed9ru noncollapsed &#32; comment " id="thing_t1_k1ed9ru" onclick="click_thing(this)" data-fullname="t1_k1ed9ru" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="sonicoak" data-author-fullname="t2_40lq8qtkt" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ed9ru/" ><p class="parent"><a name="k1ed9ru"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/sonicoak" class="author may-blank id-t2_40lq8qtkt" >sonicoak</a><span class="flairrichtext flaircolorlight flair " title="Governance, Risk, &amp; Compliance" style="background-color: #373c3f; border-color: #373c3f;"><span>Governance, Risk, &amp; Compliance</span></span><span class="userattrs"></span>&#32;<span class="score dislikes" title="96">96 points</span><span class="score unvoted" title="97">97 points</span><span class="score likes" title="98">98 points</span>&#32;<time title="Wed Sep 20 10:49:11 2023 UTC" datetime="2023-09-20T10:49:11+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(19 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1ed9rulb2"><input type="hidden" name="thing_id" value="t1_k1ed9ru"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p><a href="https://infosec.exchange/home">https://infosec.exchange/home</a> , it is a Mastodon server.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ed9ru/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ed9ru/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1ed9ru"></div></div><div class="child"><div id="siteTable_t1_k1ed9ru" class="sitetable listing"><div class=" thing id-t1_k1f2191 noncollapsed &#32; comment " id="thing_t1_k1f2191" onclick="click_thing(this)" data-fullname="t1_k1f2191" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Chrishamilton2007" data-author-fullname="t2_5goj3" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f2191/" ><p class="parent"><a name="k1f2191"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Chrishamilton2007" class="author may-blank id-t2_5goj3" >Chrishamilton2007</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="80">80 points</span><span class="score unvoted" title="81">81 points</span><span class="score likes" title="82">82 points</span>&#32;<time title="Wed Sep 20 14:06:15 2023 UTC" datetime="2023-09-20T14:06:15+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(4 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f21918rv"><input type="hidden" name="thing_id" value="t1_k1f2191"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I dunno, I&#39;m sure Jerry Bell is cool and all but I&#39;m hesitant to point people to what could essentially turn into a private facebook group overnight.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f2191/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f2191/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1ed9ru" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f2191"></div></div><div class="child"><div id="siteTable_t1_k1f2191" class="sitetable listing"><div class=" thing id-t1_k1fckr4 noncollapsed &#32; comment " id="thing_t1_k1fckr4" onclick="click_thing(this)" data-fullname="t1_k1fckr4" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Versed_Percepton" data-author-fullname="t2_94cm2jqqy" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fckr4/" ><p class="parent"><a name="k1fckr4"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Versed_Percepton" class="author may-blank id-t2_94cm2jqqy" >Versed_Percepton</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="20">20 points</span><span class="score unvoted" title="21">21 points</span><span class="score likes" title="22">22 points</span>&#32;<time title="Wed Sep 20 15:12:00 2023 UTC" datetime="2023-09-20T15:12:00+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fckr4d58"><input type="hidden" name="thing_id" value="t1_k1fckr4"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Jerry has <a href="https://Infosec.exchange">Infosec.exchange</a> open and very rarely are there admin issues at the federation level. Also, I have NEVER seen Jerry pull a &#39;shitty admin move&#39; in the couple years I have been on the instance. Let me tell you, there were times I wish he would. But he is just not that type of person.</p> + +<p>He has been working his ass off to expand the instance to support the influx of new users, he is very open about this in his daily feeds too. So, there is no way in hell the instance will become &#39;private&#39; with all the hard work he has put in here.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fckr4/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fckr4/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f2191" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fckr4"></div></div><div class="child"><div id="siteTable_t1_k1fckr4" class="sitetable listing"><div class=" thing id-t1_k1flqhj noncollapsed &#32; comment " id="thing_t1_k1flqhj" onclick="click_thing(this)" data-fullname="t1_k1flqhj" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="moker" data-author-fullname="t2_31fvu" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1flqhj/" ><p class="parent"><a name="k1flqhj"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/moker" class="author may-blank id-t2_31fvu" >moker</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="4">4 points</span><span class="score unvoted" title="5">5 points</span><span class="score likes" title="6">6 points</span>&#32;<time title="Wed Sep 20 16:06:31 2023 UTC" datetime="2023-09-20T16:06:31+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1flqhjact"><input type="hidden" name="thing_id" value="t1_k1flqhj"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>thank you :)</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1flqhj/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1flqhj/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1fckr4" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1flqhj"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1f3k7m noncollapsed &#32; comment " id="thing_t1_k1f3k7m" onclick="click_thing(this)" data-fullname="t1_k1f3k7m" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Gangrif" data-author-fullname="t2_13q213" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f3k7m/" ><p class="parent"><a name="k1f3k7m"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Gangrif" class="author may-blank id-t2_13q213" >Gangrif</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="16">16 points</span><span class="score unvoted" title="17">17 points</span><span class="score likes" title="18">18 points</span>&#32;<time title="Wed Sep 20 14:16:09 2023 UTC" datetime="2023-09-20T14:16:09+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f3k7m4bq"><input type="hidden" name="thing_id" value="t1_k1f3k7m"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>for what it’s worth. jerry has been tirelessly administering infosec.exchange for years. and doesn’t seem likely to stop. and if he does…. you can move easily to another instance. defcon runs one, the mastodon folks run one. i run one (though mine is mainly for me.) and they all federate with the others. so you don’t miss out being on you’re own or one other than your friends are on.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f3k7m/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f3k7m/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f2191" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f3k7m"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1h3ys0 noncollapsed &#32; comment " id="thing_t1_k1h3ys0" onclick="click_thing(this)" data-fullname="t1_k1h3ys0" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="moker" data-author-fullname="t2_31fvu" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h3ys0/" ><p class="parent"><a name="k1h3ys0"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/moker" class="author may-blank id-t2_31fvu" >moker</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="7">7 points</span><span class="score unvoted" title="8">8 points</span><span class="score likes" title="9">9 points</span>&#32;<time title="Wed Sep 20 21:17:06 2023 UTC" datetime="2023-09-20T21:17:06+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1h3ys0lx7"><input type="hidden" name="thing_id" value="t1_k1h3ys0"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>yes. After 7 years of being a free and open forum, I have decided to make <a href="https://infosec.exchange">infosec.exchange</a> a private facebook group. I had been on the fence about it until now.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h3ys0/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h3ys0/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f2191" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1h3ys0"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1expm6 noncollapsed &#32; comment " id="thing_t1_k1expm6" onclick="click_thing(this)" data-fullname="t1_k1expm6" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="movement2012" data-author-fullname="t2_tuqrm" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1expm6/" ><p class="parent"><a name="k1expm6"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/movement2012" class="author may-blank id-t2_tuqrm" >movement2012</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="17">17 points</span><span class="score unvoted" title="18">18 points</span><span class="score likes" title="19">19 points</span>&#32;<time title="Wed Sep 20 13:37:17 2023 UTC" datetime="2023-09-20T13:37:17+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(6 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1expm616a"><input type="hidden" name="thing_id" value="t1_k1expm6"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Mastodon feels a bit dry. Are there too few people, or am I not following enough?</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1expm6/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1expm6/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1ed9ru" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1expm6"></div></div><div class="child"><div id="siteTable_t1_k1expm6" class="sitetable listing"><div class=" thing noncollapsed &#32; deleted comment " onclick="click_thing(this)" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f2t7m/" ><p class="parent"></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><em>[deleted]</em>&#32;<time title="Wed Sep 20 14:11:17 2023 UTC" datetime="2023-09-20T14:11:17+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><div class="usertext grayed"><input type="hidden" name="thing_id" value=""/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>[deleted]</p> +</div> +</div></div><ul class="flat-list buttons"></ul><div class="reportform report-t1_k1f2t7m"></div></div><div class="child"><div id="siteTable_deleted" class="sitetable listing"><div class=" thing id-t1_k1f4kto noncollapsed &#32; comment " id="thing_t1_k1f4kto" onclick="click_thing(this)" data-fullname="t1_k1f4kto" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Myrion_Phoenix" data-author-fullname="t2_zisex" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f4kto/" ><p class="parent"><a name="k1f4kto"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Myrion_Phoenix" class="author may-blank id-t2_zisex" >Myrion_Phoenix</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="7">7 points</span><span class="score unvoted" title="8">8 points</span><span class="score likes" title="9">9 points</span>&#32;<time title="Wed Sep 20 14:22:37 2023 UTC" datetime="2023-09-20T14:22:37+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f4ktohzv"><input type="hidden" name="thing_id" value="t1_k1f4kto"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>It&#39;s also helpful to follow some hashtags (which the Mastodon android app can&#39;t, but f.ex. Tusky can and the web interface also works).</p> + +<p>I follow #fido2 and #cryptography, for example, as well as stuff like #bookstodon.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f4kto/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f4kto/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f4kto"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1fvt58 noncollapsed &#32; comment " id="thing_t1_k1fvt58" onclick="click_thing(this)" data-fullname="t1_k1fvt58" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="vitriolix" data-author-fullname="t2_38fl0" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fvt58/" ><p class="parent"><a name="k1fvt58"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/vitriolix" class="author may-blank id-t2_38fl0" >vitriolix</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="14">14 points</span><span class="score unvoted" title="15">15 points</span><span class="score likes" title="16">16 points</span>&#32;<time title="Wed Sep 20 17:05:34 2023 UTC" datetime="2023-09-20T17:05:34+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fvt58i8r"><input type="hidden" name="thing_id" value="t1_k1fvt58"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>checkout the local feeds on a few instances to get lots of good content and find people to follow:</p> + +<p><a href="https://infosec.exchange/public/local">https://infosec.exchange/public/local</a></p> + +<p><a href="https://fosstodon.org/public/local">https://fosstodon.org/public/local</a></p> + +<p><a href="https://hachyderm.io/public/local">https://hachyderm.io/public/local</a></p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fvt58/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fvt58/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1expm6" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fvt58"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1fduhp noncollapsed &#32; comment " id="thing_t1_k1fduhp" onclick="click_thing(this)" data-fullname="t1_k1fduhp" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fduhp/" ><p class="parent"><a name="k1fduhp"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><span>[deleted]</span>&#32;<span class="score dislikes" title="2">2 points</span><span class="score unvoted" title="3">3 points</span><span class="score likes" title="4">4 points</span>&#32;<time title="Wed Sep 20 15:19:46 2023 UTC" datetime="2023-09-20T15:19:46+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fduhpwm0"><input type="hidden" name="thing_id" value="t1_k1fduhp"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p><a href="https://elk.zone/infosec.exchange/@fY54DtPKe6rxMF/110757471778047861" rel="nofollow">https://elk.zone/infosec.exchange/@fY54DtPKe6rxMF/110757471778047861</a></p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fduhp/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fduhp/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1expm6" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fduhp"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1hfihx noncollapsed &#32; comment " id="thing_t1_k1hfihx" onclick="click_thing(this)" data-fullname="t1_k1hfihx" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="mkosmo" data-author-fullname="t2_3asub" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hfihx/" ><p class="parent"><a name="k1hfihx"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/mkosmo" class="author may-blank id-t2_3asub" >mkosmo</a><span class="flairrichtext flaircolorlight flair " title="Security Architect" style="background-color: #373c3f; border-color: #373c3f;"><span>Security Architect</span></span><span class="userattrs"></span>&#32;<span class="score dislikes" title="2">2 points</span><span class="score unvoted" title="3">3 points</span><span class="score likes" title="4">4 points</span>&#32;<time title="Wed Sep 20 22:28:12 2023 UTC" datetime="2023-09-20T22:28:12+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1hfihxyb6"><input type="hidden" name="thing_id" value="t1_k1hfihx"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>The fediverse isn&#39;t nearly as populated as it&#39;s zealots would lead you to believe, unfortunately. Great concept, but just doesn&#39;t have the momentum.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hfihx/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hfihx/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1expm6" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1hfihx"></div></div><div class="child"><div id="siteTable_t1_k1hfihx" class="sitetable listing"><div class=" thing id-t1_k1kb6wr noncollapsed &#32; comment " id="thing_t1_k1kb6wr" onclick="click_thing(this)" data-fullname="t1_k1kb6wr" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="WollCel" data-author-fullname="t2_7q0snzpw" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1kb6wr/" ><p class="parent"><a name="k1kb6wr"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/WollCel" class="author may-blank id-t2_7q0snzpw" >WollCel</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="1">1 point</span><span class="score unvoted" title="2">2 points</span><span class="score likes" title="3">3 points</span>&#32;<time title="Thu Sep 21 13:52:01 2023 UTC" datetime="2023-09-21T13:52:01+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1kb6wre6m"><input type="hidden" name="thing_id" value="t1_k1kb6wr"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Yeah it’s growing though, it doesn’t help how ideologically splintered instances can get</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1kb6wr/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1kb6wr/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1hfihx" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1kb6wr"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1f481h noncollapsed &#32; comment " id="thing_t1_k1f481h" onclick="click_thing(this)" data-fullname="t1_k1f481h" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Zncon" data-author-fullname="t2_hpvos" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f481h/" ><p class="parent"><a name="k1f481h"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Zncon" class="author may-blank id-t2_hpvos" >Zncon</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="9">9 points</span><span class="score unvoted" title="10">10 points</span><span class="score likes" title="11">11 points</span>&#32;<time title="Wed Sep 20 14:20:24 2023 UTC" datetime="2023-09-20T14:20:24+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f481hrvj"><input type="hidden" name="thing_id" value="t1_k1f481h"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>The entire first page (and most of the rest of them) is politics and nonsense at the moment - not exactly an amazing recommendation. =/</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f481h/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f481h/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1ed9ru" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f481h"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing noncollapsed &#32; deleted comment " onclick="click_thing(this)" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fgax9/" ><p class="parent"></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><em>[deleted]</em>&#32;<time title="Wed Sep 20 15:34:29 2023 UTC" datetime="2023-09-20T15:34:29+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><div class="usertext grayed"><input type="hidden" name="thing_id" value=""/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>[deleted]</p> +</div> +</div></div><ul class="flat-list buttons"></ul><div class="reportform report-t1_k1fgax9"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1envz7 collapsed collapsed-for-reason &#32; comment " id="thing_t1_k1envz7" onclick="click_thing(this)" data-fullname="t1_k1envz7" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="profshmex" data-author-fullname="t2_6dja5aq1" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1envz7/" ><p class="parent"><a name="k1envz7"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[+]</a><a href="https://www.reddit.com/user/profshmex" class="author may-blank id-t2_6dja5aq1" >profshmex</a><span class="userattrs"></span>&#32;<span class="collapsed-reason">comment score below threshold</span><span class="score dislikes" title="-30">-30 points</span><span class="score unvoted" title="-29">-29 points</span><span class="score likes" title="-28">-28 points</span>&#32;<time title="Wed Sep 20 12:25:02 2023 UTC" datetime="2023-09-20T12:25:02+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(2 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1envz78qq"><input type="hidden" name="thing_id" value="t1_k1envz7"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Login creds? Nice try 😉</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1envz7/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1envz7/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1ed9ru" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1envz7"></div></div><div class="child"><div id="siteTable_t1_k1envz7" class="sitetable listing"><div class=" thing id-t1_k1f0mqa noncollapsed &#32; comment " id="thing_t1_k1f0mqa" onclick="click_thing(this)" data-fullname="t1_k1f0mqa" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="SteveDinn" data-author-fullname="t2_n2ejp" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f0mqa/" ><p class="parent"><a name="k1f0mqa"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/SteveDinn" class="author may-blank id-t2_n2ejp" >SteveDinn</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 13:56:58 2023 UTC" datetime="2023-09-20T13:56:58+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f0mqa639"><input type="hidden" name="thing_id" value="t1_k1f0mqa"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Try <a href="https://infosec.exchange/explore" rel="nofollow">https://infosec.exchange/explore</a> instead.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f0mqa/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f0mqa/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1envz7" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f0mqa"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1f0eas noncollapsed &#32; comment " id="thing_t1_k1f0eas" onclick="click_thing(this)" data-fullname="t1_k1f0eas" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="moker" data-author-fullname="t2_31fvu" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f0eas/" ><p class="parent"><a name="k1f0eas"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/moker" class="author may-blank id-t2_31fvu" >moker</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="49">49 points</span><span class="score unvoted" title="50">50 points</span><span class="score likes" title="51">51 points</span>&#32;<time title="Wed Sep 20 13:55:24 2023 UTC" datetime="2023-09-20T13:55:24+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(8 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f0eas19s"><input type="hidden" name="thing_id" value="t1_k1f0eas"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I run <a href="https://infosec.exchange">https://infosec.exchange</a> - it has about 17000 active members, and among several other security related instances.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f0eas/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f0eas/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f0eas"></div></div><div class="child"><div id="siteTable_t1_k1f0eas" class="sitetable listing"><div class=" thing id-t1_k1f8o48 noncollapsed &#32; comment " id="thing_t1_k1f8o48" onclick="click_thing(this)" data-fullname="t1_k1f8o48" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Elder_Meow_667" data-author-fullname="t2_ul0ujln5" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f8o48/" ><p class="parent"><a name="k1f8o48"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Elder_Meow_667" class="author may-blank id-t2_ul0ujln5" >Elder_Meow_667</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="3">3 points</span><span class="score unvoted" title="4">4 points</span><span class="score likes" title="5">5 points</span>&#32;<time title="Wed Sep 20 14:48:00 2023 UTC" datetime="2023-09-20T14:48:00+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f8o48gnj"><input type="hidden" name="thing_id" value="t1_k1f8o48"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Jerrrrrry! Hehe</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f8o48/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f8o48/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f0eas" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f8o48"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1fsfsq noncollapsed &#32; comment " id="thing_t1_k1fsfsq" onclick="click_thing(this)" data-fullname="t1_k1fsfsq" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Popka_Akoola" data-author-fullname="t2_2ym6xry6" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fsfsq/" ><p class="parent"><a name="k1fsfsq"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Popka_Akoola" class="author may-blank id-t2_2ym6xry6" >Popka_Akoola</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="3">3 points</span><span class="score unvoted" title="4">4 points</span><span class="score likes" title="5">5 points</span>&#32;<time title="Wed Sep 20 16:45:58 2023 UTC" datetime="2023-09-20T16:45:58+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fsfsqxhm"><input type="hidden" name="thing_id" value="t1_k1fsfsq"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>May get downvoted for this but having been one of the earlier adopters into mastodon and infosec exchange specifically, I just don&#39;t see how it&#39;s better than X. I get a lot of crazy things have happened, but 95% of posts I see on infosec exchange are people congratulating themselves and being so proud they left Twitter and the other 5% are people introducing themselves and talking about their day/treating the platform like Twitter.</p> + +<p>I love the idea of Mastodon in general and I have high hopes for it&#39;s future, but I really think people are deluding themselves if they say it has better content at the moment.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fsfsq/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fsfsq/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f0eas" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fsfsq"></div></div><div class="child"><div id="siteTable_t1_k1fsfsq" class="sitetable listing"><div class=" thing id-t1_k1ibs3x noncollapsed &#32; comment " id="thing_t1_k1ibs3x" onclick="click_thing(this)" data-fullname="t1_k1ibs3x" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="syn-ack-fin" data-author-fullname="t2_6nnp3" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ibs3x/" ><p class="parent"><a name="k1ibs3x"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/syn-ack-fin" class="author may-blank id-t2_6nnp3" >syn-ack-fin</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="4">4 points</span><span class="score unvoted" title="5">5 points</span><span class="score likes" title="6">6 points</span>&#32;<time title="Thu Sep 21 02:11:56 2023 UTC" datetime="2023-09-21T02:11:56+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1ibs3xlez"><input type="hidden" name="thing_id" value="t1_k1ibs3x"/><div class="usertext-body may-blank-within md-container " ><div class="md"><blockquote> +<p>I just don’t see how it’s better than X</p> +</blockquote> + +<p>Better is obviously relative, but Mastodon does take more work. The end result is that you have a feed solely with the information you want and not what is pushed on you. Oh and fewer nazis is nice too.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ibs3x/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ibs3x/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1fsfsq" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1ibs3x"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1foxtg noncollapsed &#32; controversial comment " id="thing_t1_k1foxtg" onclick="click_thing(this)" data-fullname="t1_k1foxtg" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Fallingdamage" data-author-fullname="t2_44txb" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1foxtg/" ><p class="parent"><a name="k1foxtg"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Fallingdamage" class="author may-blank id-t2_44txb" >Fallingdamage</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="4">4 points</span><span class="score unvoted" title="5">5 points</span><span class="score likes" title="6">6 points</span>&#32;<time title="Wed Sep 20 16:25:25 2023 UTC" datetime="2023-09-20T16:25:25+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(3 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1foxtgp8a"><input type="hidden" name="thing_id" value="t1_k1foxtg"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Just followed link. Bunch of political posts, ice cream stands and star trek jokes. I think I get better content on <a href="/r/cybersecurity">r/cybersecurity</a> and arstechnica</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1foxtg/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1foxtg/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f0eas" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1foxtg"></div></div><div class="child"><div id="siteTable_t1_k1foxtg" class="sitetable listing"><div class=" thing id-t1_k1fqxd3 noncollapsed &#32; comment " id="thing_t1_k1fqxd3" onclick="click_thing(this)" data-fullname="t1_k1fqxd3" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="moker" data-author-fullname="t2_31fvu" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fqxd3/" ><p class="parent"><a name="k1fqxd3"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/moker" class="author may-blank id-t2_31fvu" >moker</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="4">4 points</span><span class="score unvoted" title="5">5 points</span><span class="score likes" title="6">6 points</span>&#32;<time title="Wed Sep 20 16:37:04 2023 UTC" datetime="2023-09-20T16:37:04+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(2 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fqxd39lu"><input type="hidden" name="thing_id" value="t1_k1fqxd3"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I don&#39;t think you were looking at the correct timeline - this is more representative of what we see: <a href="https://infosec.exchange/public/local">https://infosec.exchange/public/local</a></p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fqxd3/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fqxd3/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1foxtg" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fqxd3"></div></div><div class="child"><div id="siteTable_t1_k1fqxd3" class="sitetable listing"><div class=" thing noncollapsed &#32; deleted controversial comment " onclick="click_thing(this)" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fyl9y/" ><p class="parent"></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><em>[deleted]</em>&#32;<time title="Wed Sep 20 17:21:40 2023 UTC" datetime="2023-09-20T17:21:40+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><div class="usertext grayed"><input type="hidden" name="thing_id" value=""/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>[deleted]</p> +</div> +</div></div><ul class="flat-list buttons"></ul><div class="reportform report-t1_k1fyl9y"></div></div><div class="child"><div id="siteTable_deleted" class="sitetable listing"><div class=" thing id-t1_k1fzrwf noncollapsed &#32; comment " id="thing_t1_k1fzrwf" onclick="click_thing(this)" data-fullname="t1_k1fzrwf" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="moker" data-author-fullname="t2_31fvu" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fzrwf/" ><p class="parent"><a name="k1fzrwf"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/moker" class="author may-blank id-t2_31fvu" >moker</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="7">7 points</span><span class="score unvoted" title="8">8 points</span><span class="score likes" title="9">9 points</span>&#32;<time title="Wed Sep 20 17:28:28 2023 UTC" datetime="2023-09-20T17:28:28+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fzrwf2yq"><input type="hidden" name="thing_id" value="t1_k1fzrwf"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Thanks for giving it a look.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fzrwf/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fzrwf/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fzrwf"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1fmsen noncollapsed &#32; comment " id="thing_t1_k1fmsen" onclick="click_thing(this)" data-fullname="t1_k1fmsen" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Individual-Ad-9902" data-author-fullname="t2_75h3ss5c" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fmsen/" ><p class="parent"><a name="k1fmsen"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Individual-Ad-9902" class="author may-blank id-t2_75h3ss5c" >Individual-Ad-9902</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 16:12:49 2023 UTC" datetime="2023-09-20T16:12:49+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fmsen3eo"><input type="hidden" name="thing_id" value="t1_k1fmsen"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>SECOND!</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fmsen/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fmsen/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f0eas" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fmsen"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1ee5j5 noncollapsed &#32; comment " id="thing_t1_k1ee5j5" onclick="click_thing(this)" data-fullname="t1_k1ee5j5" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="TradeApe" data-author-fullname="t2_51lfc8p8" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ee5j5/" ><p class="parent"><a name="k1ee5j5"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/TradeApe" class="author may-blank id-t2_51lfc8p8" >TradeApe</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="37">37 points</span><span class="score unvoted" title="38">38 points</span><span class="score likes" title="39">39 points</span>&#32;<time title="Wed Sep 20 10:58:41 2023 UTC" datetime="2023-09-20T10:58:41+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1ee5j50pl"><input type="hidden" name="thing_id" value="t1_k1ee5j5"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Infosec.exchange mastodon server</p> + +<p>X feels too much like Rumble or an Alex Jones fan club with the content that gets pushed. Definitely not paying for that.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ee5j5/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ee5j5/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1ee5j5"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1ek11e noncollapsed &#32; comment " id="thing_t1_k1ek11e" onclick="click_thing(this)" data-fullname="t1_k1ek11e" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Doc_Hobb" data-author-fullname="t2_5f8eu" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ek11e/" ><p class="parent"><a name="k1ek11e"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Doc_Hobb" class="author may-blank id-t2_5f8eu" >Doc_Hobb</a><span class="flairrichtext flaircolorlight flair " title="Vulnerability Researcher" style="background-color: #373c3f; border-color: #373c3f;"><span>Vulnerability Researcher</span></span><span class="userattrs"></span>&#32;<span class="score dislikes" title="17">17 points</span><span class="score unvoted" title="18">18 points</span><span class="score likes" title="19">19 points</span>&#32;<time title="Wed Sep 20 11:53:33 2023 UTC" datetime="2023-09-20T11:53:33+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1ek11e6rl"><input type="hidden" name="thing_id" value="t1_k1ek11e"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I like to use <a href="https://allinfosecnews.com">https://allinfosecnews.com</a> it’s a great collection of feeds</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ek11e/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ek11e/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1ek11e"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1he78h noncollapsed &#32; comment " id="thing_t1_k1he78h" onclick="click_thing(this)" data-fullname="t1_k1he78h" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Rebootkid" data-author-fullname="t2_4fhi9" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1he78h/" ><p class="parent"><a name="k1he78h"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Rebootkid" class="author may-blank id-t2_4fhi9" >Rebootkid</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="4">4 points</span><span class="score unvoted" title="5">5 points</span><span class="score likes" title="6">6 points</span>&#32;<time title="Wed Sep 20 22:19:37 2023 UTC" datetime="2023-09-20T22:19:37+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1he78hf0b"><input type="hidden" name="thing_id" value="t1_k1he78h"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I&#39;m over on infosec.exchange. Found it very useful.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1he78h/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1he78h/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1he78h"></div></div><div class="child"><div id="siteTable_t1_k1he78h" class="sitetable listing"><div class=" thing id-t1_k1i0icy noncollapsed &#32; comment " id="thing_t1_k1i0icy" onclick="click_thing(this)" data-fullname="t1_k1i0icy" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="hudsoncress" data-author-fullname="t2_18vpapcs" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1i0icy/" ><p class="parent"><a name="k1i0icy"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/hudsoncress" class="author may-blank id-t2_18vpapcs" >hudsoncress</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Thu Sep 21 00:52:19 2023 UTC" datetime="2023-09-21T00:52:19+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1i0icygih"><input type="hidden" name="thing_id" value="t1_k1i0icy"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>This is the way</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1i0icy/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1i0icy/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1he78h" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1i0icy"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1erfy3 noncollapsed &#32; comment " id="thing_t1_k1erfy3" onclick="click_thing(this)" data-fullname="t1_k1erfy3" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1erfy3/" ><p class="parent"><a name="k1erfy3"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><span>[deleted]</span>&#32;<span class="score dislikes" title="10">10 points</span><span class="score unvoted" title="11">11 points</span><span class="score likes" title="12">12 points</span>&#32;<time title="Wed Sep 20 12:52:21 2023 UTC" datetime="2023-09-20T12:52:21+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(3 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1erfy37b8"><input type="hidden" name="thing_id" value="t1_k1erfy3"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>What I find interesting is after I closed my account, over time I realized I was gradually being linked to Twitter less and less by other external websites/ news sites. Now weeks can go by without it happening. </p> + +<p>So if his goal is to make twitter no longer relevant, he&#39;s doing a banger job.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1erfy3/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1erfy3/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1erfy3"></div></div><div class="child"><div id="siteTable_t1_k1erfy3" class="sitetable listing"><div class=" thing id-t1_k1f72xa noncollapsed &#32; comment " id="thing_t1_k1f72xa" onclick="click_thing(this)" data-fullname="t1_k1f72xa" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="itwasaraccoon" data-author-fullname="t2_tyqigoko" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f72xa/" ><p class="parent"><a name="k1f72xa"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/itwasaraccoon" class="author may-blank id-t2_tyqigoko" >itwasaraccoon</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="2">2 points</span><span class="score unvoted" title="3">3 points</span><span class="score likes" title="4">4 points</span>&#32;<time title="Wed Sep 20 14:38:09 2023 UTC" datetime="2023-09-20T14:38:09+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(2 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f72xa4h4"><input type="hidden" name="thing_id" value="t1_k1f72xa"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Same with me. But I have to admit that the huge security community and information exchange on Twitter used to be super helpful to stay up to date. Its going to take a long time to replicate that somewhere else.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f72xa/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f72xa/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1erfy3" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f72xa"></div></div><div class="child"><div id="siteTable_t1_k1f72xa" class="sitetable listing"><div class=" thing id-t1_k1fz12d noncollapsed &#32; comment " id="thing_t1_k1fz12d" onclick="click_thing(this)" data-fullname="t1_k1fz12d" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="650REDHAIR" data-author-fullname="t2_18ip5p" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fz12d/" ><p class="parent"><a name="k1fz12d"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/650REDHAIR" class="author may-blank id-t2_18ip5p" >650REDHAIR</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 17:24:11 2023 UTC" datetime="2023-09-20T17:24:11+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fz12dbgj"><input type="hidden" name="thing_id" value="t1_k1fz12d"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>My tinfoil hat might be on too tight, but sometimes I wonder if that is by design.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fz12d/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fz12d/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f72xa" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fz12d"></div></div><div class="child"><div id="siteTable_t1_k1fz12d" class="sitetable listing"><div class=" thing id-t1_k1g1jnw noncollapsed &#32; comment " id="thing_t1_k1g1jnw" onclick="click_thing(this)" data-fullname="t1_k1g1jnw" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="itwasaraccoon" data-author-fullname="t2_tyqigoko" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1g1jnw/" ><p class="parent"><a name="k1g1jnw"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/itwasaraccoon" class="author may-blank id-t2_tyqigoko" >itwasaraccoon</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 17:38:42 2023 UTC" datetime="2023-09-20T17:38:42+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1g1jnwdk1"><input type="hidden" name="thing_id" value="t1_k1g1jnw"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Have you tried the new Titanium hat instead? People seem to love the color at least.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1g1jnw/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1g1jnw/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1fz12d" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1g1jnw"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1dztic noncollapsed &#32; comment " id="thing_t1_k1dztic" onclick="click_thing(this)" data-fullname="t1_k1dztic" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="AyeSocketFucker" data-author-fullname="t2_9dx76" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1dztic/" ><p class="parent"><a name="k1dztic"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/AyeSocketFucker" class="author may-blank id-t2_9dx76" >AyeSocketFucker</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="8">8 points</span><span class="score unvoted" title="9">9 points</span><span class="score likes" title="10">10 points</span>&#32;<time title="Wed Sep 20 07:58:53 2023 UTC" datetime="2023-09-20T07:58:53+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(4 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1dzticb63"><input type="hidden" name="thing_id" value="t1_k1dztic"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>It was mastodon, not sure anymore, haven’t used it in awhile</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1dztic/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1dztic/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1dztic"></div></div><div class="child"><div id="siteTable_t1_k1dztic" class="sitetable listing"><div class=" thing id-t1_k1fwapb noncollapsed &#32; comment " id="thing_t1_k1fwapb" onclick="click_thing(this)" data-fullname="t1_k1fwapb" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="vitriolix" data-author-fullname="t2_38fl0" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fwapb/" ><p class="parent"><a name="k1fwapb"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/vitriolix" class="author may-blank id-t2_38fl0" >vitriolix</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="5">5 points</span><span class="score unvoted" title="6">6 points</span><span class="score likes" title="7">7 points</span>&#32;<time title="Wed Sep 20 17:08:24 2023 UTC" datetime="2023-09-20T17:08:24+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(3 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fwapbn9u"><input type="hidden" name="thing_id" value="t1_k1fwapb"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Masto is thriving and growing rapidly, up to 14mil created accounts now (and of course lower monthly actives, but still very active). Every time there is news of more twitter stupidity there is a new spike of signups</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fwapb/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fwapb/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1dztic" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fwapb"></div></div><div class="child"><div id="siteTable_t1_k1fwapb" class="sitetable listing"><div class=" thing id-t1_k1h0z54 noncollapsed &#32; comment " id="thing_t1_k1h0z54" onclick="click_thing(this)" data-fullname="t1_k1h0z54" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h0z54/" ><p class="parent"><a name="k1h0z54"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><span>[deleted]</span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 20:59:56 2023 UTC" datetime="2023-09-20T20:59:56+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(2 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1h0z54yqx"><input type="hidden" name="thing_id" value="t1_k1h0z54"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I tried Mastadon but I found it very difficult to actually see any posts that were actually worthwhile or interesting. It seems their algorithms for content recommendation need a lot of work or don&#39;t exist.</p> + +<p>I don&#39;t care about who posted most recently, I want to know what&#39;s actually worth reading that day.</p> + +<p>Also tried Threads but found it difficult to even find the content I wanted to see.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h0z54/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h0z54/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1fwapb" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1h0z54"></div></div><div class="child"><div id="siteTable_t1_k1h0z54" class="sitetable listing"><div class=" thing id-t1_k1hfmcg noncollapsed &#32; comment " id="thing_t1_k1hfmcg" onclick="click_thing(this)" data-fullname="t1_k1hfmcg" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="coloRD" data-author-fullname="t2_8d2bp" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hfmcg/" ><p class="parent"><a name="k1hfmcg"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/coloRD" class="author may-blank id-t2_8d2bp" >coloRD</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 22:28:54 2023 UTC" datetime="2023-09-20T22:28:54+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1hfmcg501"><input type="hidden" name="thing_id" value="t1_k1hfmcg"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>it is based more on hashtags and you choosing who to follow than recommender algorithms. In fact many mastodon users often proudly proclaim they do not want to live in an algorithmically generated bubble being fed content.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hfmcg/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hfmcg/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1h0z54" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1hfmcg"></div></div><div class="child"><div id="siteTable_t1_k1hfmcg" class="sitetable listing"><div class=" thing id-t1_k1jhi39 noncollapsed &#32; comment " id="thing_t1_k1jhi39" onclick="click_thing(this)" data-fullname="t1_k1jhi39" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1jhi39/" ><p class="parent"><a name="k1jhi39"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><span>[deleted]</span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Thu Sep 21 09:27:22 2023 UTC" datetime="2023-09-21T09:27:22+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1jhi39r43"><input type="hidden" name="thing_id" value="t1_k1jhi39"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>It is a double edged sword though as it makes it more difficult to find that content you want to follow - I don&#39;t think algorithms are inherently bad as long as they can&#39;t be manipulated.</p> + +<p>That being said, Reddit mostly managed without algorithms thanks to voting &amp; community driven recommendations, but Mastadon doesn&#39;t have that.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1jhi39/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1jhi39/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1hfmcg" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1jhi39"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1h5u7u noncollapsed &#32; comment " id="thing_t1_k1h5u7u" onclick="click_thing(this)" data-fullname="t1_k1h5u7u" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="AnIrregularRegular" data-author-fullname="t2_164qs4" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h5u7u/" ><p class="parent"><a name="k1h5u7u"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/AnIrregularRegular" class="author may-blank id-t2_164qs4" >AnIrregularRegular</a><span class="flairrichtext flaircolorlight flair " title="Blue Team" style="background-color: #373c3f; border-color: #373c3f;"><span>Blue Team</span></span><span class="userattrs"></span>&#32;<span class="score dislikes" title="2">2 points</span><span class="score unvoted" title="3">3 points</span><span class="score likes" title="4">4 points</span>&#32;<time title="Wed Sep 20 21:28:06 2023 UTC" datetime="2023-09-20T21:28:06+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1h5u7ub0u"><input type="hidden" name="thing_id" value="t1_k1h5u7u"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Honestly I’ve yet to run into a great Twitter replacement. Honestly Reddit is maybe the best for stuff before it hits blogs/news which is why I loved Twitter. Go follow sysadmin and MSP and they often see stuff before security people do.</p> + +<p>Mastodon is alright but just didn’t scratch the itch the same(also like to follow a lot of foreign policy/natsec peeps who won’t do Mastodon).</p> + +<p>Recently got into Bluesky and it’s okay. Not Twitter but also I think has a lot of potential.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h5u7u/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h5u7u/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1h5u7u"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1hk3lb noncollapsed &#32; comment " id="thing_t1_k1hk3lb" onclick="click_thing(this)" data-fullname="t1_k1hk3lb" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="LordCommanderTaurusG" data-author-fullname="t2_v693a42" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hk3lb/" ><p class="parent"><a name="k1hk3lb"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/LordCommanderTaurusG" class="author may-blank id-t2_v693a42" >LordCommanderTaurusG</a><span class="flairrichtext flaircolorlight flair " title="Blue Team" style="background-color: #373c3f; border-color: #373c3f;"><span>Blue Team</span></span><span class="userattrs"></span>&#32;<span class="score dislikes" title="2">2 points</span><span class="score unvoted" title="3">3 points</span><span class="score likes" title="4">4 points</span>&#32;<time title="Wed Sep 20 22:59:01 2023 UTC" datetime="2023-09-20T22:59:01+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1hk3lbwhi"><input type="hidden" name="thing_id" value="t1_k1hk3lb"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Have you tried Threads?</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hk3lb/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hk3lb/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1hk3lb"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1hvox4 noncollapsed &#32; comment " id="thing_t1_k1hvox4" onclick="click_thing(this)" data-fullname="t1_k1hvox4" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Tetmohawk" data-author-fullname="t2_2x2zoj2" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hvox4/" ><p class="parent"><a name="k1hvox4"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Tetmohawk" class="author may-blank id-t2_2x2zoj2" >Tetmohawk</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="2">2 points</span><span class="score unvoted" title="3">3 points</span><span class="score likes" title="4">4 points</span>&#32;<time title="Thu Sep 21 00:19:26 2023 UTC" datetime="2023-09-21T00:19:26+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1hvox4c5j"><input type="hidden" name="thing_id" value="t1_k1hvox4"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I see no ads. Pretty close to never. Here&#39;s how:</p> + +<p>(1) Use a DNS filter like CleanBrowsing.com and set it to filter ads and tracking.</p> + +<p>(2) Put Twitter in its own container. You can do this easily in Firefox. That way cookies and other stuff related to ads is isolated from every other website. </p> + +<p>(3) Use a Firefox add-on. I use both Privacy badger and uBlock origin.</p> + +<p>I don&#39;t see ads on almost any site with this method. At work I get ads all the time and it&#39;s annoying. Not sure how y&#39;all lived like this for so long. Ads haven&#39;t been a part of my life for years. Now you know why.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hvox4/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1hvox4/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1hvox4"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1eii4j noncollapsed &#32; comment " id="thing_t1_k1eii4j" onclick="click_thing(this)" data-fullname="t1_k1eii4j" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="mobo_dojo" data-author-fullname="t2_70dgodgm" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eii4j/" ><p class="parent"><a name="k1eii4j"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/mobo_dojo" class="author may-blank id-t2_70dgodgm" >mobo_dojo</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="4">4 points</span><span class="score unvoted" title="5">5 points</span><span class="score likes" title="6">6 points</span>&#32;<time title="Wed Sep 20 11:40:21 2023 UTC" datetime="2023-09-20T11:40:21+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1eii4j0n0"><input type="hidden" name="thing_id" value="t1_k1eii4j"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Newsboat</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eii4j/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eii4j/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1eii4j"></div></div><div class="child"><div id="siteTable_t1_k1eii4j" class="sitetable listing"><div class=" thing id-t1_k1ftwx9 noncollapsed &#32; comment " id="thing_t1_k1ftwx9" onclick="click_thing(this)" data-fullname="t1_k1ftwx9" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="irkine" data-author-fullname="t2_katin" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ftwx9/" ><p class="parent"><a name="k1ftwx9"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/irkine" class="author may-blank id-t2_katin" >irkine</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 16:54:33 2023 UTC" datetime="2023-09-20T16:54:33+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1ftwx9dzw"><input type="hidden" name="thing_id" value="t1_k1ftwx9"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>What does your feed list look like for security? :)</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ftwx9/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ftwx9/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1eii4j" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1ftwx9"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1fdb6p noncollapsed &#32; comment " id="thing_t1_k1fdb6p" onclick="click_thing(this)" data-fullname="t1_k1fdb6p" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Versed_Percepton" data-author-fullname="t2_94cm2jqqy" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fdb6p/" ><p class="parent"><a name="k1fdb6p"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Versed_Percepton" class="author may-blank id-t2_94cm2jqqy" >Versed_Percepton</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="3">3 points</span><span class="score unvoted" title="4">4 points</span><span class="score likes" title="5">5 points</span>&#32;<time title="Wed Sep 20 15:16:29 2023 UTC" datetime="2023-09-20T15:16:29+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fdb6pxm7"><input type="hidden" name="thing_id" value="t1_k1fdb6p"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>The closest thing to Twitter would be mastodon right now. You just need to decide on your home instance, build your profile like you would anywhere else, and start finding topics, hashtags, and people/groups to follow. Then filter out the junk(you can black list on keywords) so you can rebuild your RSS like you have it setup on Twitter. </p> + +<p>There are a dozen or so Infosec instances to choose from, I like <a href="https://Infosec.Exchange" rel="nofollow">Infosec.Exchange</a> as its stable and a smooth experience. It has a solid Admin team and has no issues talking to the federation. The membership on the instance is pretty open and welcoming.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fdb6p/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fdb6p/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fdb6p"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1fn2i6 noncollapsed &#32; comment " id="thing_t1_k1fn2i6" onclick="click_thing(this)" data-fullname="t1_k1fn2i6" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Individual-Ad-9902" data-author-fullname="t2_75h3ss5c" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fn2i6/" ><p class="parent"><a name="k1fn2i6"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Individual-Ad-9902" class="author may-blank id-t2_75h3ss5c" >Individual-Ad-9902</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="1">1 point</span><span class="score unvoted" title="2">2 points</span><span class="score likes" title="3">3 points</span>&#32;<time title="Wed Sep 20 16:14:27 2023 UTC" datetime="2023-09-20T16:14:27+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fn2i6urt"><input type="hidden" name="thing_id" value="t1_k1fn2i6"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Infosec.exchange on Mastodon is a very good place, and I get a lot of good information from my curated group on Linkedin. Dr. Chase Cunningham has a good weekly wrap up. And then there is always Cyber Protection Magazine.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fn2i6/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fn2i6/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fn2i6"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1encn2 noncollapsed &#32; comment " id="thing_t1_k1encn2" onclick="click_thing(this)" data-fullname="t1_k1encn2" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="eat_the_pennies" data-author-fullname="t2_vrscons4" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1encn2/" ><p class="parent"><a name="k1encn2"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/eat_the_pennies" class="author may-blank id-t2_vrscons4" >eat_the_pennies</a><span class="flairrichtext flaircolorlight flair " title="System Administrator" style="background-color: #373c3f; border-color: #373c3f;"><span>System Administrator</span></span><span class="userattrs"></span>&#32;<span class="score dislikes" title="2">2 points</span><span class="score unvoted" title="3">3 points</span><span class="score likes" title="4">4 points</span>&#32;<time title="Wed Sep 20 12:20:49 2023 UTC" datetime="2023-09-20T12:20:49+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(7 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1encn2edi"><input type="hidden" name="thing_id" value="t1_k1encn2"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I&#39;m hoping Bluesky gets more popular once it actually opens. I was able to join yesterday and there&#39;s a small community of infosec people who share news there.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1encn2/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1encn2/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1encn2"></div></div><div class="child"><div id="siteTable_t1_k1encn2" class="sitetable listing"><div class=" thing id-t1_k1f55vs noncollapsed &#32; comment " id="thing_t1_k1f55vs" onclick="click_thing(this)" data-fullname="t1_k1f55vs" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="SpaceMaxil" data-author-fullname="t2_iw8rdehp" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f55vs/" ><p class="parent"><a name="k1f55vs"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/SpaceMaxil" class="author may-blank id-t2_iw8rdehp" >SpaceMaxil</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="1">1 point</span><span class="score unvoted" title="2">2 points</span><span class="score likes" title="3">3 points</span>&#32;<time title="Wed Sep 20 14:26:15 2023 UTC" datetime="2023-09-20T14:26:15+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(4 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f55vsbw3"><input type="hidden" name="thing_id" value="t1_k1f55vs"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Seems the chatty security folks are pretty split on Mastadon vs BlueSky. But most of the good leaks still end up on Twitter first.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f55vs/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f55vs/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1encn2" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f55vs"></div></div><div class="child"><div id="siteTable_t1_k1f55vs" class="sitetable listing"><div class=" thing id-t1_k1f6e6p noncollapsed &#32; comment " id="thing_t1_k1f6e6p" onclick="click_thing(this)" data-fullname="t1_k1f6e6p" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="eat_the_pennies" data-author-fullname="t2_vrscons4" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f6e6p/" ><p class="parent"><a name="k1f6e6p"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/eat_the_pennies" class="author may-blank id-t2_vrscons4" >eat_the_pennies</a><span class="flairrichtext flaircolorlight flair " title="System Administrator" style="background-color: #373c3f; border-color: #373c3f;"><span>System Administrator</span></span><span class="userattrs"></span>&#32;<span class="score dislikes" title="1">1 point</span><span class="score unvoted" title="2">2 points</span><span class="score likes" title="3">3 points</span>&#32;<time title="Wed Sep 20 14:33:58 2023 UTC" datetime="2023-09-20T14:33:58+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(3 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f6e6phz7"><input type="hidden" name="thing_id" value="t1_k1f6e6p"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Mastodon would&#39;ve taken off by now if it really was ideal imo. The hesitancy leads me to believe people are really holding out for Bluesky to be Twitter 2.0</p> + +<p>Who knows if we&#39;ll ever get to that point though</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f6e6p/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f6e6p/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f55vs" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f6e6p"></div></div><div class="child"><div id="siteTable_t1_k1f6e6p" class="sitetable listing"><div class=" thing id-t1_k1f743s noncollapsed &#32; comment " id="thing_t1_k1f743s" onclick="click_thing(this)" data-fullname="t1_k1f743s" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="SpaceMaxil" data-author-fullname="t2_iw8rdehp" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f743s/" ><p class="parent"><a name="k1f743s"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/SpaceMaxil" class="author may-blank id-t2_iw8rdehp" >SpaceMaxil</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="1">1 point</span><span class="score unvoted" title="2">2 points</span><span class="score likes" title="3">3 points</span>&#32;<time title="Wed Sep 20 14:38:21 2023 UTC" datetime="2023-09-20T14:38:21+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f743sn6p"><input type="hidden" name="thing_id" value="t1_k1f743s"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Folks are also looking for apps that work across fediverses. Seems to have potential.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f743s/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f743s/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f6e6p" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f743s"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1flu07 noncollapsed &#32; comment " id="thing_t1_k1flu07" onclick="click_thing(this)" data-fullname="t1_k1flu07" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="look_ima_frog" data-author-fullname="t2_hbyptyxz" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1flu07/" ><p class="parent"><a name="k1flu07"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/look_ima_frog" class="author may-blank id-t2_hbyptyxz" >look_ima_frog</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="1">1 point</span><span class="score unvoted" title="2">2 points</span><span class="score likes" title="3">3 points</span>&#32;<time title="Wed Sep 20 16:07:07 2023 UTC" datetime="2023-09-20T16:07:07+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1flu07ulq"><input type="hidden" name="thing_id" value="t1_k1flu07"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I&#39;m like a lot of people who have tried mastodon and nope out. </p> + +<p>I get the idea, but I still don&#39;t care to use it. User experience is not good. I have enough to learn and fix for my work, dealing with an overwrought platform isn&#39;t on the list right now.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1flu07/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1flu07/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1f6e6p" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1flu07"></div></div><div class="child"><div id="siteTable_t1_k1flu07" class="sitetable listing"><div class=" thing id-t1_k1gstv3 noncollapsed &#32; comment " id="thing_t1_k1gstv3" onclick="click_thing(this)" data-fullname="t1_k1gstv3" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Slythela" data-author-fullname="t2_ixk2h" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gstv3/" ><p class="parent"><a name="k1gstv3"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Slythela" class="author may-blank id-t2_ixk2h" >Slythela</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="1">1 point</span><span class="score unvoted" title="2">2 points</span><span class="score likes" title="3">3 points</span>&#32;<time title="Wed Sep 20 20:12:56 2023 UTC" datetime="2023-09-20T20:12:56+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1gstv3860"><input type="hidden" name="thing_id" value="t1_k1gstv3"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I&#39;m the same way. I was pretty pumped to have another platform, I&#39;m pretty over this website and I&#39;ve never been into twitter. It&#39;s just not really there yet though, and it feels more like a facebook feed than anything else, even on the infosec ones.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gstv3/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gstv3/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1flu07" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1gstv3"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1ewj8c noncollapsed &#32; comment " id="thing_t1_k1ewj8c" onclick="click_thing(this)" data-fullname="t1_k1ewj8c" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="flylikegaruda" data-author-fullname="t2_1189kv" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ewj8c/" ><p class="parent"><a name="k1ewj8c"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/flylikegaruda" class="author may-blank id-t2_1189kv" >flylikegaruda</a><span class="flairrichtext flaircolorlight flair " title="Red Team" style="background-color: #373c3f; border-color: #373c3f;"><span>Red Team</span></span><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 13:29:00 2023 UTC" datetime="2023-09-20T13:29:00+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1ewj8c5y7"><input type="hidden" name="thing_id" value="t1_k1ewj8c"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Yes, but I get more cat pics than security. I am no fan of cats!</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ewj8c/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ewj8c/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1encn2" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1ewj8c"></div></div><div class="child"><div id="siteTable_t1_k1ewj8c" class="sitetable listing"><div class=" thing id-t1_k1f3pc2 noncollapsed &#32; comment " id="thing_t1_k1f3pc2" onclick="click_thing(this)" data-fullname="t1_k1f3pc2" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="eat_the_pennies" data-author-fullname="t2_vrscons4" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f3pc2/" ><p class="parent"><a name="k1f3pc2"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/eat_the_pennies" class="author may-blank id-t2_vrscons4" >eat_the_pennies</a><span class="flairrichtext flaircolorlight flair " title="System Administrator" style="background-color: #373c3f; border-color: #373c3f;"><span>System Administrator</span></span><span class="userattrs"></span>&#32;<span class="score dislikes" title="2">2 points</span><span class="score unvoted" title="3">3 points</span><span class="score likes" title="4">4 points</span>&#32;<time title="Wed Sep 20 14:17:05 2023 UTC" datetime="2023-09-20T14:17:05+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f3pc255m"><input type="hidden" name="thing_id" value="t1_k1f3pc2"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Unfortunate, cats are a huge part of my life :)</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f3pc2/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f3pc2/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1ewj8c" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f3pc2"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1e9gx9 noncollapsed &#32; controversial comment " id="thing_t1_k1e9gx9" onclick="click_thing(this)" data-fullname="t1_k1e9gx9" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="asecuredlife" data-author-fullname="t2_57r4boy9" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1e9gx9/" ><p class="parent"><a name="k1e9gx9"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/asecuredlife" class="author may-blank id-t2_57r4boy9" >asecuredlife</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="1">1 point</span><span class="score unvoted" title="2">2 points</span><span class="score likes" title="3">3 points</span>&#32;<time title="Wed Sep 20 10:05:13 2023 UTC" datetime="2023-09-20T10:05:13+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(4 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1e9gx9755"><input type="hidden" name="thing_id" value="t1_k1e9gx9"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Weirder? Twitter has always been a weird place.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1e9gx9/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1e9gx9/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1e9gx9"></div></div><div class="child"><div id="siteTable_t1_k1e9gx9" class="sitetable listing"><div class=" thing id-t1_k1eb9de noncollapsed &#32; comment " id="thing_t1_k1eb9de" onclick="click_thing(this)" data-fullname="t1_k1eb9de" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="skeedooshski" data-author-fullname="t2_2w3lp8yl" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eb9de/" ><p class="parent"><a name="k1eb9de"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/skeedooshski" class="author submitter may-blank id-t2_2w3lp8yl" >skeedooshski</a><span class="userattrs">[<a class="submitter" title="submitter" href="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/">S</a>]</span>&#32;<span class="score dislikes" title="20">20 points</span><span class="score unvoted" title="21">21 points</span><span class="score likes" title="22">22 points</span>&#32;<time title="Wed Sep 20 10:26:28 2023 UTC" datetime="2023-09-20T10:26:28+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1eb9dedum"><input type="hidden" name="thing_id" value="t1_k1eb9de"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Hence the weirdER :). Initially a part of its appeal, but increasingly not the case as of lately.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eb9de/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eb9de/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1e9gx9" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1eb9de"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1eszi4 noncollapsed &#32; comment " id="thing_t1_k1eszi4" onclick="click_thing(this)" data-fullname="t1_k1eszi4" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="ComfortableProperty9" data-author-fullname="t2_3s11dgpn" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eszi4/" ><p class="parent"><a name="k1eszi4"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/ComfortableProperty9" class="author may-blank id-t2_3s11dgpn" >ComfortableProperty9</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="5">5 points</span><span class="score unvoted" title="6">6 points</span><span class="score likes" title="7">7 points</span>&#32;<time title="Wed Sep 20 13:03:51 2023 UTC" datetime="2023-09-20T13:03:51+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1eszi4s4l"><input type="hidden" name="thing_id" value="t1_k1eszi4"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>It went to shit right as I got my feed cultivated exactly like I wanted it.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eszi4/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eszi4/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1e9gx9" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1eszi4"></div></div><div class="child"><div id="siteTable_t1_k1eszi4" class="sitetable listing"><div class=" thing id-t1_k1eubmi noncollapsed &#32; comment " id="thing_t1_k1eubmi" onclick="click_thing(this)" data-fullname="t1_k1eubmi" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="missed_sla" data-author-fullname="t2_1pw5guwr" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eubmi/" ><p class="parent"><a name="k1eubmi"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/missed_sla" class="author may-blank id-t2_1pw5guwr" >missed_sla</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="7">7 points</span><span class="score unvoted" title="8">8 points</span><span class="score likes" title="9">9 points</span>&#32;<time title="Wed Sep 20 13:13:34 2023 UTC" datetime="2023-09-20T13:13:34+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1eubmisqg"><input type="hidden" name="thing_id" value="t1_k1eubmi"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Twitter is a hydra of insane conservatives now. Block one and 5 more are shoved into your face. My block list hundreds long and growing every time I load up that goddamn website. Honestly don&#39;t know why I do anymore, it&#39;s usually about 30 seconds before I close it again.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eubmi/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eubmi/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1eszi4" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1eubmi"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1ewh6y noncollapsed &#32; comment " id="thing_t1_k1ewh6y" onclick="click_thing(this)" data-fullname="t1_k1ewh6y" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="WummageSail" data-author-fullname="t2_14ajti" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ewh6y/" ><p class="parent"><a name="k1ewh6y"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/WummageSail" class="author may-blank id-t2_14ajti" >WummageSail</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="1">1 point</span><span class="score unvoted" title="2">2 points</span><span class="score likes" title="3">3 points</span>&#32;<time title="Wed Sep 20 13:28:36 2023 UTC" datetime="2023-09-20T13:28:36+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1ewh6yuvf"><input type="hidden" name="thing_id" value="t1_k1ewh6y"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p><a href="https://risky.biz/" rel="nofollow">https://risky.biz/</a> podcast</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ewh6y/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1ewh6y/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1ewh6y"></div></div><div class="child"><div id="siteTable_t1_k1ewh6y" class="sitetable listing"><div class=" thing id-t1_k1fhicr noncollapsed &#32; comment " id="thing_t1_k1fhicr" onclick="click_thing(this)" data-fullname="t1_k1fhicr" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="skeedooshski" data-author-fullname="t2_2w3lp8yl" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fhicr/" ><p class="parent"><a name="k1fhicr"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/skeedooshski" class="author submitter may-blank id-t2_2w3lp8yl" >skeedooshski</a><span class="userattrs">[<a class="submitter" title="submitter" href="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/">S</a>]</span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 15:41:40 2023 UTC" datetime="2023-09-20T15:41:40+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fhicruwc"><input type="hidden" name="thing_id" value="t1_k1fhicr"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>It is awesome</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fhicr/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fhicr/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1ewh6y" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fhicr"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1firy2 noncollapsed &#32; comment " id="thing_t1_k1firy2" onclick="click_thing(this)" data-fullname="t1_k1firy2" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Maidentyone" data-author-fullname="t2_ampb5p3" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1firy2/" ><p class="parent"><a name="k1firy2"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Maidentyone" class="author may-blank id-t2_ampb5p3" >Maidentyone</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="1">1 point</span><span class="score unvoted" title="2">2 points</span><span class="score likes" title="3">3 points</span>&#32;<time title="Wed Sep 20 15:49:07 2023 UTC" datetime="2023-09-20T15:49:07+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(2 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1firy2u0d"><input type="hidden" name="thing_id" value="t1_k1firy2"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I use Feedly it has excellent security feed, plus you can add your own (rss) feeds</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1firy2/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1firy2/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1firy2"></div></div><div class="child"><div id="siteTable_t1_k1firy2" class="sitetable listing"><div class=" thing id-t1_k1fopgv noncollapsed &#32; comment " id="thing_t1_k1fopgv" onclick="click_thing(this)" data-fullname="t1_k1fopgv" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="skeedooshski" data-author-fullname="t2_2w3lp8yl" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fopgv/" ><p class="parent"><a name="k1fopgv"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/skeedooshski" class="author submitter may-blank id-t2_2w3lp8yl" >skeedooshski</a><span class="userattrs">[<a class="submitter" title="submitter" href="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/">S</a>]</span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 16:24:03 2023 UTC" datetime="2023-09-20T16:24:03+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fopgvyrw"><input type="hidden" name="thing_id" value="t1_k1fopgv"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>That&#39;s an interesting one. I&#39;ll have a look as I&#39;d be keen on adding the risky business RSS feed to something like that.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fopgv/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fopgv/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1firy2" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fopgv"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1g2003 noncollapsed &#32; comment " id="thing_t1_k1g2003" onclick="click_thing(this)" data-fullname="t1_k1g2003" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="gamed0g" data-author-fullname="t2_f84b7" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1g2003/" ><p class="parent"><a name="k1g2003"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/gamed0g" class="author may-blank id-t2_f84b7" >gamed0g</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 17:41:17 2023 UTC" datetime="2023-09-20T17:41:17+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1g2003bvb"><input type="hidden" name="thing_id" value="t1_k1g2003"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>+1 for Feedly. It has loads of options to configure and refine your feeds</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1g2003/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1g2003/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1firy2" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1g2003"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1fiuv1 noncollapsed &#32; comment " id="thing_t1_k1fiuv1" onclick="click_thing(this)" data-fullname="t1_k1fiuv1" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="HansGuntherboon" data-author-fullname="t2_mx14j" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fiuv1/" ><p class="parent"><a name="k1fiuv1"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/HansGuntherboon" class="author may-blank id-t2_mx14j" >HansGuntherboon</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="1">1 point</span><span class="score unvoted" title="2">2 points</span><span class="score likes" title="3">3 points</span>&#32;<time title="Wed Sep 20 15:49:36 2023 UTC" datetime="2023-09-20T15:49:36+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fiuv16ta"><input type="hidden" name="thing_id" value="t1_k1fiuv1"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p><a href="https://infosec.exchange" rel="nofollow">https://infosec.exchange</a></p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fiuv1/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fiuv1/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fiuv1"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing noncollapsed &#32; deleted controversial comment " onclick="click_thing(this)" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1etkxx/" ><p class="parent"></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><em>[deleted]</em>&#32;<time title="Wed Sep 20 13:08:13 2023 UTC" datetime="2023-09-20T13:08:13+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(3 children)</a></p><div class="usertext grayed"><input type="hidden" name="thing_id" value=""/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>[deleted]</p> +</div> +</div></div><ul class="flat-list buttons"></ul><div class="reportform report-t1_k1etkxx"></div></div><div class="child"><div id="siteTable_deleted" class="sitetable listing"><div class=" thing id-t1_k1f0w8k noncollapsed &#32; comment " id="thing_t1_k1f0w8k" onclick="click_thing(this)" data-fullname="t1_k1f0w8k" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="moker" data-author-fullname="t2_31fvu" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f0w8k/" ><p class="parent"><a name="k1f0w8k"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/moker" class="author may-blank id-t2_31fvu" >moker</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="7">7 points</span><span class="score unvoted" title="8">8 points</span><span class="score likes" title="9">9 points</span>&#32;<time title="Wed Sep 20 13:58:43 2023 UTC" datetime="2023-09-20T13:58:43+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f0w8kcn0"><input type="hidden" name="thing_id" value="t1_k1f0w8k"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Nah, that is not correct. You can join <a href="https://infosec.exchange">infosec.exchange</a> and follow anyone on <a href="https://infosec.exchange">infosec.exchange</a> or any of the other mastodon instances with that one account.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f0w8k/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f0w8k/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f0w8k"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1f3wf5 noncollapsed &#32; comment " id="thing_t1_k1f3wf5" onclick="click_thing(this)" data-fullname="t1_k1f3wf5" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Gangrif" data-author-fullname="t2_13q213" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f3wf5/" ><p class="parent"><a name="k1f3wf5"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Gangrif" class="author may-blank id-t2_13q213" >Gangrif</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="4">4 points</span><span class="score unvoted" title="5">5 points</span><span class="score likes" title="6">6 points</span>&#32;<time title="Wed Sep 20 14:18:22 2023 UTC" datetime="2023-09-20T14:18:22+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f3wf5u1j"><input type="hidden" name="thing_id" value="t1_k1f3wf5"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>no, you’re doing it wrong. you pick a home server based on your preferences. they all federate with eachother. i run my own and the experience has been awesome. you do need to give it time and start following folks to really get involved though.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f3wf5/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f3wf5/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f3wf5"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1f1tdt noncollapsed &#32; comment " id="thing_t1_k1f1tdt" onclick="click_thing(this)" data-fullname="t1_k1f1tdt" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="bjh13" data-author-fullname="t2_3s36b" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f1tdt/" ><p class="parent"><a name="k1f1tdt"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/bjh13" class="author may-blank id-t2_3s36b" >bjh13</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="9">9 points</span><span class="score unvoted" title="10">10 points</span><span class="score likes" title="11">11 points</span>&#32;<time title="Wed Sep 20 14:04:48 2023 UTC" datetime="2023-09-20T14:04:48+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f1tdtky4"><input type="hidden" name="thing_id" value="t1_k1f1tdt"/><div class="usertext-body may-blank-within md-container " ><div class="md"><blockquote> +<p>Oh, your people are on 8 different servers so you need 8 different accounts</p> +</blockquote> + +<p>The whole point of being federated is one account allows you to follow people on any of the other servers, so no you don&#39;t need 8 different accounts.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f1tdt/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f1tdt/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f1tdt"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1eji5w noncollapsed &#32; controversial comment " id="thing_t1_k1eji5w" onclick="click_thing(this)" data-fullname="t1_k1eji5w" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="ThePorko" data-author-fullname="t2_1vnpf8ey" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eji5w/" ><p class="parent"><a name="k1eji5w"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/ThePorko" class="author may-blank id-t2_1vnpf8ey" >ThePorko</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="-2">-2 points</span><span class="score unvoted" title="-1">-1 points</span><span class="score likes" title="0">0 points</span>&#32;<time title="Wed Sep 20 11:49:10 2023 UTC" datetime="2023-09-20T11:49:10+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1eji5w59w"><input type="hidden" name="thing_id" value="t1_k1eji5w"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I have never used twitter for that, too much garbage on there. I tend to do podcasts and youtube media.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eji5w/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eji5w/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1eji5w"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1e0j6k noncollapsed &#32; controversial comment " id="thing_t1_k1e0j6k" onclick="click_thing(this)" data-fullname="t1_k1e0j6k" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1e0j6k/" ><p class="parent"><a name="k1e0j6k"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><span>[deleted]</span>&#32;<span class="score dislikes" title="-1">-1 points</span><span class="score unvoted" title="0">0 points</span><span class="score likes" title="1">1 point</span>&#32;<time title="Wed Sep 20 08:08:18 2023 UTC" datetime="2023-09-20T08:08:18+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1e0j6khpt"><input type="hidden" name="thing_id" value="t1_k1e0j6k"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>/g/</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1e0j6k/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1e0j6k/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1e0j6k"></div></div><div class="child"><div id="siteTable_t1_k1e0j6k" class="sitetable listing"><div class=" thing id-t1_k1e2rvb noncollapsed &#32; comment " id="thing_t1_k1e2rvb" onclick="click_thing(this)" data-fullname="t1_k1e2rvb" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1e2rvb/" ><p class="parent"><a name="k1e2rvb"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><span>[deleted]</span>&#32;<span class="score dislikes" title="6">6 points</span><span class="score unvoted" title="7">7 points</span><span class="score likes" title="8">8 points</span>&#32;<time title="Wed Sep 20 08:37:53 2023 UTC" datetime="2023-09-20T08:37:53+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1e2rvbuyx"><input type="hidden" name="thing_id" value="t1_k1e2rvb"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Isn&#39;t the /sec/ general completely dead or at the very least only filled with &quot;How to become 1337 haxxor&quot;?</p> + +<p>It&#39;s been some time since I checked.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1e2rvb/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1e2rvb/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1e0j6k" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1e2rvb"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1etfwl noncollapsed &#32; comment " id="thing_t1_k1etfwl" onclick="click_thing(this)" data-fullname="t1_k1etfwl" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="chicagoandy" data-author-fullname="t2_92ggj" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1etfwl/" ><p class="parent"><a name="k1etfwl"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/chicagoandy" class="author may-blank id-t2_92ggj" >chicagoandy</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="-1">-1 points</span><span class="score unvoted" title="0">0 points</span><span class="score likes" title="1">1 point</span>&#32;<time title="Wed Sep 20 13:07:11 2023 UTC" datetime="2023-09-20T13:07:11+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1etfwlrm3"><input type="hidden" name="thing_id" value="t1_k1etfwl"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Um... Reddit.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1etfwl/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1etfwl/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1etfwl"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1f1b06 noncollapsed &#32; comment " id="thing_t1_k1f1b06" onclick="click_thing(this)" data-fullname="t1_k1f1b06" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Chrishamilton2007" data-author-fullname="t2_5goj3" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f1b06/" ><p class="parent"><a name="k1f1b06"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Chrishamilton2007" class="author may-blank id-t2_5goj3" >Chrishamilton2007</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="-1">-1 points</span><span class="score unvoted" title="0">0 points</span><span class="score likes" title="1">1 point</span>&#32;<time title="Wed Sep 20 14:01:25 2023 UTC" datetime="2023-09-20T14:01:25+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1f1b06o27"><input type="hidden" name="thing_id" value="t1_k1f1b06"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>You can use reddit.</p> + +<p><a href="https://www.reddit.com/r/CASB+HackBloc+Malware+REMath+ReverseEngineering+blackhat+blueteamsec+computerforensics+crypto+netsec+netsecstudents+cyber+pwned+rootkit+vrd+xss+InfoSecInsiders/top/?sort=top&amp;t=day" rel="nofollow">https://www.reddit.com/r/CASB+HackBloc+Malware+REMath+ReverseEngineering+blackhat+blueteamsec+computerforensics+crypto+netsec+netsecstudents+cyber+pwned+rootkit+vrd+xss+InfoSecInsiders/top/?sort=top&amp;t=day</a></p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f1b06/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1f1b06/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1f1b06"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1h24vs noncollapsed &#32; comment " id="thing_t1_k1h24vs" onclick="click_thing(this)" data-fullname="t1_k1h24vs" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Bllago" data-author-fullname="t2_5e3g42ih" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h24vs/" ><p class="parent"><a name="k1h24vs"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Bllago" class="author may-blank id-t2_5e3g42ih" >Bllago</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="-1">-1 points</span><span class="score unvoted" title="0">0 points</span><span class="score likes" title="1">1 point</span>&#32;<time title="Wed Sep 20 21:06:31 2023 UTC" datetime="2023-09-20T21:06:31+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1h24vsydi"><input type="hidden" name="thing_id" value="t1_k1h24vs"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Twitter is full of CSAM. Everyone needs to leave it.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h24vs/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h24vs/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1h24vs"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1eqh9b collapsed collapsed-for-reason &#32; comment " id="thing_t1_k1eqh9b" onclick="click_thing(this)" data-fullname="t1_k1eqh9b" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="KidBeene" data-author-fullname="t2_bfou7" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eqh9b/" ><p class="parent"><a name="k1eqh9b"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[+]</a><a href="https://www.reddit.com/user/KidBeene" class="author may-blank id-t2_bfou7" >KidBeene</a><span class="userattrs"></span>&#32;<span class="collapsed-reason">comment score below threshold</span><span class="score dislikes" title="-11">-11 points</span><span class="score unvoted" title="-10">-10 points</span><span class="score likes" title="-9">-9 points</span>&#32;<time title="Wed Sep 20 12:45:06 2023 UTC" datetime="2023-09-20T12:45:06+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(2 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1eqh9blt7"><input type="hidden" name="thing_id" value="t1_k1eqh9b"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>You were using Twitter for industry news? LOL Oh man... how much time do you have in the day?</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eqh9b/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eqh9b/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1eqh9b"></div></div><div class="child"><div id="siteTable_t1_k1eqh9b" class="sitetable listing"><div class=" thing id-t1_k1euxho noncollapsed &#32; comment " id="thing_t1_k1euxho" onclick="click_thing(this)" data-fullname="t1_k1euxho" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="beagle_bathouse" data-author-fullname="t2_83rlaeff" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1euxho/" ><p class="parent"><a name="k1euxho"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/beagle_bathouse" class="author may-blank id-t2_83rlaeff" >beagle_bathouse</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="3">3 points</span><span class="score unvoted" title="4">4 points</span><span class="score likes" title="5">5 points</span>&#32;<time title="Wed Sep 20 13:17:52 2023 UTC" datetime="2023-09-20T13:17:52+00:00" class="live-timestamp">5 months ago</time><time class="edited-timestamp" title="last edited 9 days ago" datetime="2024-02-09T18:57:46+00:00">*</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(1 child)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1euxhodgx"><input type="hidden" name="thing_id" value="t1_k1euxho"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>poor smell rhythm ink offend abounding person alive elderly dog</p> + +<p><em>This post was mass deleted and anonymized with <a href="https://redact.dev">Redact</a></em></p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1euxho/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1euxho/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1eqh9b" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1euxho"></div></div><div class="child"><div id="siteTable_t1_k1euxho" class="sitetable listing"><div class=" thing id-t1_k1gitjf noncollapsed &#32; comment " id="thing_t1_k1gitjf" onclick="click_thing(this)" data-fullname="t1_k1gitjf" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="KidBeene" data-author-fullname="t2_bfou7" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gitjf/" ><p class="parent"><a name="k1gitjf"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/KidBeene" class="author may-blank id-t2_bfou7" >KidBeene</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 19:17:57 2023 UTC" datetime="2023-09-20T19:17:57+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1gitjfetc"><input type="hidden" name="thing_id" value="t1_k1gitjf"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Yeah, the thing that is wrong is using twitter for industry news.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gitjf/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gitjf/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="false" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li><a href="#k1euxho" data-event-action="parent" class="bylink" rel="nofollow" >parent</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1gitjf"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div></div></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1eu1yr noncollapsed &#32; comment " id="thing_t1_k1eu1yr" onclick="click_thing(this)" data-fullname="t1_k1eu1yr" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="TulkasDeTX" data-author-fullname="t2_8wfrrqxs" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eu1yr/" ><p class="parent"><a name="k1eu1yr"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/TulkasDeTX" class="author may-blank id-t2_8wfrrqxs" >TulkasDeTX</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 13:11:39 2023 UTC" datetime="2023-09-20T13:11:39+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1eu1yrkr4"><input type="hidden" name="thing_id" value="t1_k1eu1yr"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I still get good infosec content, but yeah I&#39;m basically for the same thing, where to go when troll-land finally goes down</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eu1yr/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1eu1yr/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1eu1yr"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1fbj2l noncollapsed &#32; comment " id="thing_t1_k1fbj2l" onclick="click_thing(this)" data-fullname="t1_k1fbj2l" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="True2this" data-author-fullname="t2_efgrr" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fbj2l/" ><p class="parent"><a name="k1fbj2l"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/True2this" class="author may-blank id-t2_efgrr" >True2this</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 15:05:35 2023 UTC" datetime="2023-09-20T15:05:35+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1fbj2l8uk"><input type="hidden" name="thing_id" value="t1_k1fbj2l"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Are you looking for just news feeds or something deeper? I use the open threat exchange from AlienVault. Good community - <a href="https://otx.alienvault.com" rel="nofollow">https://otx.alienvault.com</a></p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fbj2l/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1fbj2l/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1fbj2l"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1gzblu noncollapsed &#32; comment " id="thing_t1_k1gzblu" onclick="click_thing(this)" data-fullname="t1_k1gzblu" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="manintheflask" data-author-fullname="t2_waj3n" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gzblu/" ><p class="parent"><a name="k1gzblu"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/manintheflask" class="author may-blank id-t2_waj3n" >manintheflask</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 20:50:49 2023 UTC" datetime="2023-09-20T20:50:49+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1gzblu0hg"><input type="hidden" name="thing_id" value="t1_k1gzblu"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>I find this start[.]me URL pretty useful:<br/> +<a href="https://start.me/p/wMrA5z/cyber-threat-intelligence" rel="nofollow">https://start.me/p/wMrA5z/cyber-threat-intelligence</a></p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gzblu/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1gzblu/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1gzblu"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1h1jio noncollapsed &#32; comment " id="thing_t1_k1h1jio" onclick="click_thing(this)" data-fullname="t1_k1h1jio" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="netbroom" data-author-fullname="t2_gcsmap2" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h1jio/" ><p class="parent"><a name="k1h1jio"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/netbroom" class="author may-blank id-t2_gcsmap2" >netbroom</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Wed Sep 20 21:03:09 2023 UTC" datetime="2023-09-20T21:03:09+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1h1jios3b"><input type="hidden" name="thing_id" value="t1_k1h1jio"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Pulsedive has a free dashboard for infosec news</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h1jio/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1h1jio/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1h1jio"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1j6zad noncollapsed &#32; comment " id="thing_t1_k1j6zad" onclick="click_thing(this)" data-fullname="t1_k1j6zad" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="flusteredJonnies" data-author-fullname="t2_9ljkm" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1j6zad/" ><p class="parent"><a name="k1j6zad"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/flusteredJonnies" class="author may-blank id-t2_9ljkm" >flusteredJonnies</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Thu Sep 21 07:09:09 2023 UTC" datetime="2023-09-21T07:09:09+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1j6zad1ny"><input type="hidden" name="thing_id" value="t1_k1j6zad"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>Dude I was getting the WEIRDEST content on X before I had to delete it because it was absurd. I only follow infosec people. Like half of my timeline became fight videos randomly. Like videos of people fighting liveleak style. Stuff that was so violent I surely thought would violate some policy, but had TONS of engagement.</p> + +<p>Not sure what they changed over there but no matter how often I scrolled past or reported or did behaviors to show the algo I was not interested in the content, it was all over my TL for like a month. Deleted the app as it just insisted on pushing me weird or violent content. Bummed because it was a great news source for a while.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1j6zad/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1j6zad/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1j6zad"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k1j868n noncollapsed &#32; comment " id="thing_t1_k1j868n" onclick="click_thing(this)" data-fullname="t1_k1j868n" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="VAsHachiRoku" data-author-fullname="t2_8dcuztg" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1j868n/" ><p class="parent"><a name="k1j868n"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/VAsHachiRoku" class="author may-blank id-t2_8dcuztg" >VAsHachiRoku</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Thu Sep 21 07:23:59 2023 UTC" datetime="2023-09-21T07:23:59+00:00" class="live-timestamp">5 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k1j868nr5h"><input type="hidden" name="thing_id" value="t1_k1j868n"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p>We pay for threat intel company feeds like Mandiant, along with news and other information. Easier to have it come from a trusted source rather than many toxic places like X and Reddit. These both can draw in people with their own personal agendas and messages.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1j868n/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k1j868n/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k1j868n"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div><div class=" thing id-t1_k27x83v noncollapsed &#32; comment " id="thing_t1_k27x83v" onclick="click_thing(this)" data-fullname="t1_k27x83v" data-type="comment" data-gildings="0" data-subreddit="cybersecurity" data-subreddit-prefixed="r/cybersecurity" data-subreddit-fullname="t5_2u559" data-subreddit-type="public" data-author="Reshi-Snoo" data-author-fullname="t2_hj8duxb7" data-replies="0" data-permalink="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k27x83v/" ><p class="parent"><a name="k27x83v"></a></p><div class="midcol unvoted" ><div class="arrow up login-required access-required" data-event-action="upvote" role="button" aria-label="upvote" tabindex="0" ></div><div class="arrow down login-required access-required" data-event-action="downvote" role="button" aria-label="downvote" tabindex="0" ></div></div><div class="entry unvoted"><p class="tagline"><a href="javascript:void(0)" class="expand" onclick="return togglecomment(this)">[–]</a><a href="https://www.reddit.com/user/Reshi-Snoo" class="author may-blank id-t2_hj8duxb7" >Reshi-Snoo</a><span class="userattrs"></span>&#32;<span class="score dislikes" title="0">0 points</span><span class="score unvoted" title="1">1 point</span><span class="score likes" title="2">2 points</span>&#32;<time title="Tue Sep 26 01:01:08 2023 UTC" datetime="2023-09-26T01:01:08+00:00" class="live-timestamp">4 months ago</time>&nbsp;<a href="javascript:void(0)" class="numchildren" onclick="return togglecomment(this)">(0 children)</a></p><form action="#" class="usertext warn-on-unload" onsubmit="return post_form(this, 'editusertext')" id="form-t1_k27x83v9b2"><input type="hidden" name="thing_id" value="t1_k27x83v"/><div class="usertext-body may-blank-within md-container " ><div class="md"><p><a href="https://vulnu.mattjay.com" rel="nofollow">Vulnerable U</a></p> + +<p>Unsupervised learning</p> + +<p>Tl;drsec </p> + +<p>Are my favorite newsletters.</p> +</div> +</div></form><ul class="flat-list buttons"><li class="first"><a href="https://www.reddit.com/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k27x83v/" data-event-action="permalink" class="bylink" rel="nofollow" >permalink</a></li><li><a href="javascript:void(0)" data-comment="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/k27x83v/" data-media="www.redditmedia.com" data-link="/r/cybersecurity/comments/16nf2ev/twitterx_is_getting_weirder_where_now_for/" data-root="true" data-title="Twitter/X is getting weirder; where now for security news and analysis?" class="embed-comment" >embed</a></li><li class="comment-save-button save-button login-required"><a href="javascript:void(0)">save</a></li><li class="report-button login-required"><a href="javascript:void(0)" class="reportbtn access-required" data-event-action="report">report</a></li><li class="reply-button login-required"><a class="access-required" href="javascript:void(0)" data-event-action="comment" onclick="return reply(this)">reply</a></li></ul><div class="reportform report-t1_k27x83v"></div></div><div class="child"></div><div class="clearleft"></div></div><div class="clearleft"></div></div><script id="archived-popup" type="text/template"><div class="interstitial"><img class="interstitial-image" src="//www.redditstatic.com/interstitial-image-archived.png" alt="archived" height="150" width="150"><div class="interstitial-message md-container"><div class="md"><h3>This is an archived post. You won't be able to vote or comment.</h3><p>Posts&#32;are&#32;automatically&#32;archived&#32;after&#32;6&#32;months.</p></div></div><div class="buttons"><a href="/" class="c-btn c-btn-primary">Got It</a></div></div></script><script id="about-this-ad-popup" type="text/template"><h1 class="modal-title">About this ad</h1><div class="about-this-ad-body"></div><hr><div>Learn more about&nbsp;<a target="_blank" href="https://support.reddithelp.com/hc/en-us/articles/12731820767764-Control-the-ads-you-see-on-Reddit">controlling the ads you see on Reddit</a>&nbsp;or&nbsp;<a target="_blank" href="https://reddit.com/settings/privacy">manage your account settings.</a></div></script></div><script id="archived-popup" type="text/template"><div class="interstitial"><img class="interstitial-image" src="//www.redditstatic.com/interstitial-image-archived.png" alt="archived" height="150" width="150"><div class="interstitial-message md-container"><div class="md"><h3>This is an archived post. You won't be able to vote or comment.</h3><p>Posts&#32;are&#32;automatically&#32;archived&#32;after&#32;6&#32;months.</p></div></div><div class="buttons"><a href="/" class="c-btn c-btn-primary">Got It</a></div></div></script><script id="about-this-ad-popup" type="text/template"><h1 class="modal-title">About this ad</h1><div class="about-this-ad-body"></div><hr><div>Learn more about&nbsp;<a target="_blank" href="https://support.reddithelp.com/hc/en-us/articles/12731820767764-Control-the-ads-you-see-on-Reddit">controlling the ads you see on Reddit</a>&nbsp;or&nbsp;<a target="_blank" href="https://reddit.com/settings/privacy">manage your account settings.</a></div></script></div><div class="footer-parent"><div by-zero class="footer rounded"><div class="col"><ul class="flat-vert hover" ><li class="flat-vert title">about</li><li ><a href="https://redditblog.com" class="choice" >blog</a></li><li ><span class="separator"></span><a href="https://www.redditinc.com" class="choice" >about</a></li><li ><span class="separator"></span><a href="https://www.redditinc.com/advertising" class="choice" >advertising</a></li><li ><span class="separator"></span><a href="https://www.redditinc.com/careers" class="choice" >careers</a></li></ul></div><div class="col"><ul class="flat-vert hover" ><li class="flat-vert title">help</li><li ><a href="https://www.reddit.com/rules/" class="choice" >site rules</a></li><li ><span class="separator"></span><a href="https://www.reddithelp.com" class="choice" >Reddit help center</a></li><li ><span class="separator"></span><a href="https://www.reddit.com/wiki/reddiquette/" class="choice" >reddiquette</a></li><li ><span class="separator"></span><a href="https://www.reddit.com/help/healthycommunities/" class="choice" >mod guidelines</a></li><li ><span class="separator"></span><a href="https://www.reddit.com/contact/" class="choice" >contact us</a></li></ul></div><div class="col"><ul class="flat-vert hover" ><li class="flat-vert title">apps &amp; tools</li><li ><a href="https://itunes.apple.com/us/app/reddit-the-official-app/id1064216828?mt=8" class="choice" >Reddit for iPhone</a></li><li ><span class="separator"></span><a href="https://play.google.com/store/apps/details?id=com.reddit.frontpage" class="choice" >Reddit for Android</a></li><li ><span class="separator"></span><a href="#" class="mweb-redirect-btn choice" >mobile website</a></li></ul></div><div class="col"><ul class="flat-vert hover" ><li class="flat-vert title">&lt;3</li><li ><a href="https://www.reddit.com/premium/" class="buygold choice" >reddit premium</a></li></ul></div></div><p class="bottommenu">Use of this site constitutes acceptance of our&#32;<a href="https://www.reddit.com/help/useragreement" >User Agreement</a>&#32;and&#32;<a href="https://www.reddit.com/help/privacypolicy" >Privacy Policy</a>. &copy; 2024 reddit inc. All rights reserved.</p><p class="bottommenu">REDDIT and the ALIEN Logo are registered trademarks of reddit inc.</p></div><script>var BETA_HOST = 'beta.reddit.com'; if (location.host === BETA_HOST) { r.config.https_endpoint = 'https://' + BETA_HOST; }</script><script id="login-popup" type="text/template"><!-- Login form function --><div id="desktop-onboarding-browse" class="c-step-sign-up"><div class="desktop-onboarding-step desktop-onboarding-step_sign-up"><div class="desktop-onboarding__col desktop-onboarding__col_sign-up_form"><div class="reddit-logo"><img width='200px' src="//www.redditstatic.com/logo.svg" /></div><h2 class="desktop-onboarding__title">Sign up to get your own personalized Reddit experience!</h2><p class="desktop-onboarding__description">By having a Reddit account, you can join, vote, and comment on all your favorite Reddit content. Sign up in just seconds.</p><div class="desktop-onboarding-sign-up__form-container c-is-create"><div class="desktop-onboarding-sign-up__form desktop-onboarding-sign-up__form_create"><h3 class="desktop-onboarding-sign-up__form-title">Enter email</h3><form class="sign-up-form" id="desktop-onboarding-sign-up-form" autocomplete="off"><div class="c-form-group "><label for="email" class="screenreader-only">email:</label><input name="email" id="desktop-onboarding-email" class="c-form-control" type="text" autofocus placeholder="email address" data-validate-url="/api/check_email.json" data-validate-on="keyup change blur" /><div class="c-form-control-feedback-wrapper "><span class="c-form-control-feedback c-form-control-feedback-throbber"></span><span class="c-form-control-feedback c-form-control-feedback-error" title=""></span><span class="c-form-control-feedback c-form-control-feedback-success"></span></div></div><button type="submit" class="c-btn c-btn-primary desktop-onboarding__next-button">Next</button><p class="desktop-onboarding-sign-up__form-note"><span>Already have an account?</span><a href="." class="desktop-onboarding-sign-up__form-toggler" data-form="login">Log In</a><a href="javascript: void 0;" class="skip-for-now">Skip for now</a></p></form></div><div class="desktop-onboarding-sign-up__form desktop-onboarding-sign-up__form_login"><h3 class="desktop-onboarding-sign-up__form-title">Log In</h3><form id="login-form" method="post" action="https://www.reddit.com/r/cybersecurity/post/login" class="form-v2 onboarding-login"><input type="hidden" name="op" value="login"><div class="c-form-group "><label for="user_login" class="screenreader-only">username</label><input value="" name="user" id="user_login" autofocus class="c-form-control" type="text" maxlength="20" tabindex="3" placeholder="username" ><div class="c-form-control-feedback-wrapper "><span class="c-form-control-feedback c-form-control-feedback-throbber"></span><span class="c-form-control-feedback c-form-control-feedback-error" title=""></span><span class="c-form-control-feedback c-form-control-feedback-success"></span></div></div><div class="c-form-group "><label for="passwd_login" class="screenreader-only">password</label><input id="passwd_login" class="c-form-control" name="passwd" type="password" tabindex="3" placeholder="password" ><div class="c-form-control-feedback-wrapper "><span class="c-form-control-feedback c-form-control-feedback-throbber"></span><span class="c-form-control-feedback c-form-control-feedback-error" title=""></span><span class="c-form-control-feedback c-form-control-feedback-success"></span></div></div><div class="desktop-onboarding-sign-up__form-note"><span>Don't have an account?</span><a href="." class="desktop-onboarding-sign-up__form-toggler" data-form="create">Sign up</a>&nbsp|<a href="/password">Reset password</a></div><input type="hidden" value="yes" name="rem"/><div class="spacer"><div class="c-form-group g-recaptcha" data-sitekey="6LeTnxkTAAAAAN9QEuDZRpn90WwKk_R1TRW_g-JC"></div><span class="error BAD_CAPTCHA field-captcha" style="display:none"></span></div><div class="c-clearfix c-submit-group"><span class="c-form-throbber"></span><button type="submit" class="c-btn c-btn-primary c-pull-right" tabindex="3">log in</button></div><div><div class="c-alert c-alert-danger"></div><span class="status"></span></div></form></div></div><footer>By signing up, you agree to our&#32;<a href="https://www.reddit.com/help/useragreement/" >Terms</a>&#32;and that you have read our&#32;<a href="https://www.reddit.com/help/privacypolicy/" >Privacy Policy</a>&#32;and&#32;<a href="https://www.reddit.com/help/contentpolicy/" >Content Policy</a>.</footer></div><div class="desktop-onboarding__col desktop-onboarding__col_sign-up_image"></div></div><div class="desktop-onboarding-step desktop-onboarding-step_subreddit-picker"><div class="subreddit-picker-header"><h2 class="desktop-onboarding__title">Find the good stuff</h2><p class="desktop-onboarding__description">Reddit is filled with interest based communities, offering something for everyone. Check out some communities and we recommend you join at least 5.</p></div><div class="subreddit-picker"><ul class="subreddit-picker__categories"></ul><ul class="subreddit-picker__subreddits"></ul><div class="subreddit-picker__fail"><span>Something went wrong.</span><a href=".">Try Again?</a></div><div class="subreddit-picker__category-fail"><span>Something went wrong.</span><a href=".">Try Again?</a></div></div><footer><div class="subreddit-picker-progress"><div class="subreddit-picker-progress__track"><div class="subreddit-picker-progress__bar"></div></div><span class="subreddit-picker-progress__num">0</span><span>/</span><span class="subreddit-picker-progress__denom">5</span><span>&nbsp;<span class="subreddit-subscription-count">recommended communities</span></span></div><span class="desktop-onboarding__step-number">Step 2 of 3</span><div class="desktop-onboarding__buttons"><button class="c-btn desktop-onboarding__back-button">Back</button><button class="c-btn c-btn-primary desktop-onboarding__next-button">Next</button></div><div class="registration-error"></div></footer></div><div class="desktop-onboarding-step desktop-onboarding-step_username"><div class="desktop-onboarding__col desktop-onboarding__col_username_form"><h2 class="desktop-onboarding__title">Choose your username</h2><p class="desktop-onboarding__description">Your username is how other community members will see you. This name will be used to credit you for things you share on Reddit. What should we call you?</p><div class=desktop-onboarding-username-form><form id="register-form" method="post" action="https://www.reddit.com/r/cybersecurity/post/reg" autocomplete="off" class="form-v2 onboarding-login"><input type="hidden" name="op" value="reg"><input type="hidden" id="desktop-onboarding-register-email" name="email" value=""><input type="hidden" id="desktop-onboarding-subreddits" name="sr" value=""><div class="c-form-group "><label class="desktop-onboarding-sign-up__form-title" for="user_reg">Choose username</label><input value="" name="user" id="user_reg" autofocus class="c-form-control" type="text" maxlength="20" tabindex="2" placeholder="username" data-validate-url="/api/check_username.json" data-validate-min="3" autocomplete="new-username" ><div class="c-form-control-feedback-wrapper "><span class="c-form-control-feedback c-form-control-feedback-throbber"></span><span class="c-form-control-feedback c-form-control-feedback-error" title=""></span><span class="c-form-control-feedback c-form-control-feedback-success"></span></div></div><div class="c-form-group "><label for="passwd_reg" class="desktop-onboarding-sign-up__form-title">Set password</label><input id="passwd_reg" class="c-form-control" name="passwd" type="password" tabindex="2" placeholder="password" data-validate-url='/api/check_password.json' autocomplete='new-password'><div class="c-form-control-feedback-wrapper "><span class="c-form-control-feedback c-form-control-feedback-throbber"></span><span class="c-form-control-feedback c-form-control-feedback-error" title=""></span><span class="c-form-control-feedback c-form-control-feedback-success"></span></div></div><input type="hidden" name="passwd2" id="passwd2_reg" class="c-form-control"><input type="hidden" value="yes" name="rem"/><div class="spacer"><div class="c-form-group g-recaptcha" data-sitekey="6LeTnxkTAAAAAN9QEuDZRpn90WwKk_R1TRW_g-JC"></div><span class="error BAD_CAPTCHA field-captcha" style="display:none"></span></div><div><div class="c-alert c-alert-danger"></div><span class="status"></span><span class="error RATELIMIT field-ratelimit" style="display:none"></span><span class="error RATELIMIT field-vdelay" style="display:none"></span></div></form></div></div><div class="desktop-onboarding__col desktop-onboarding__col_username_picker"><div class="username-generator"><p class="desktop-onboarding__description">Having a hard time picking a name?<br />Here are some available suggestions.</p><div class="username-generator__suggestions"></div><a href="javascript: void 0;" class="username-generator__refresh-button">Refresh suggestions</a></div><footer><span class="desktop-onboarding__step-number">Step 3 of 3</span><div class="desktop-onboarding__buttons"><button class="c-btn desktop-onboarding__back-button">Back</button><button class="c-btn c-btn-primary desktop-onboarding__next-button">Submit</button></div></footer></div></div></div></script><script id="lang-popup" type="text/template"><form action="https://www.reddit.com/post/unlogged_options" method="post" id="pref-form" class="pretty-form short-text prefoptions"><input type="hidden" name="uh" value="" /><table class="content preftable"><tr><th>interface language</th><td class="prefright"><select id="lang" name="lang"><option selected='selected' value="en">English [en]</option><option value="af">Afrikaans [af] (*)</option><option value="ar">العربية [ar] (*)</option><option value="be">Беларуская мова [be] (*)</option><option value="bg">български език [bg]</option><option value="bn-IN">বাংলা [bn-IN] (*)</option><option value="bn-bd">বাংলা [bn-bd] (*)</option><option value="bs">Bosanski [bs] (*)</option><option value="ca">català [ca]</option><option value="cs">česky [cs]</option><option value="cy">Cymraeg [cy] (*)</option><option value="da">dansk [da]</option><option value="de">Deutsch [de]</option><option value="el">Ελληνικά [el]</option><option value="en-au">English (Australia) [en-au]</option><option value="en-ca">English (Canadian) [en-ca]</option><option value="en-gb">English (Great Britain) [en-gb]</option><option value="en-us">English [en-us]</option><option value="eo">Esperanto [eo] (*)</option><option value="es">español [es]</option><option value="es-ar">español [es-ar]</option><option value="es-cl">español [es-cl]</option><option value="es-mx">Español [es-mx]</option><option value="et">eesti keel [et] (*)</option><option value="eu">Euskara [eu]</option><option value="fa">فارسی [fa]</option><option value="fi">suomi [fi]</option><option value="fil">Filipino [fil] (*)</option><option value="fr">français [fr]</option><option value="fr-ca">Français [fr-ca]</option><option value="fy-NL">Frysk [fy-NL] (*)</option><option value="ga-ie">Gaeilge [ga-ie] (*)</option><option value="gd">Gàidhlig [gd]</option><option value="gl">Galego [gl] (*)</option><option value="he">עברית [he] (*)</option><option value="hi">मानक हिन्दी [hi] (*)</option><option value="hr">hrvatski [hr]</option><option value="hu">Magyar [hu]</option><option value="hy">Հայերեն լեզու [hy]</option><option value="id">Bahasa Indonesia [id] (*)</option><option value="is">íslenska [is]</option><option value="it">italiano (Italy) [it]</option><option value="ja">日本語 [ja]</option><option value="kn_IN">ಕನ್ನಡ [kn_IN]</option><option value="ko">한국어 [ko]</option><option value="la">Latin [la] (*)</option><option value="leet">1337 [leet]</option><option value="lol">LOL [lol]</option><option value="lt">lietuvių kalba [lt] (*)</option><option value="lv">latviešu valoda [lv]</option><option value="ms">Bahasa Melayu [ms] (*)</option><option value="mt-MT">Malti [mt-MT]</option><option value="nl">Nederlands [nl]</option><option value="nn">Nynorsk [nn]</option><option value="no">Norsk [no]</option><option value="pir">Arrrrrrrr! [pir] (*)</option><option value="pl">polski [pl]</option><option value="pt">português [pt] (*)</option><option value="pt-pt">português [pt-pt]</option><option value="pt_BR">português brasileiro [pt_BR]</option><option value="ro">română [ro]</option><option value="ru">русский [ru]</option><option value="sk">slovenčina [sk]</option><option value="sl">slovenščina [sl] (*)</option><option value="sr">српски језик [sr]</option><option value="sr-la">Srpski [sr-la]</option><option value="sv">Svenska [sv]</option><option value="ta">தமிழ் [ta]</option><option value="th">ภาษาไทย [th]</option><option value="tr">Türkçe [tr]</option><option value="uk">українська мова [uk]</option><option value="vi">Tiếng Việt [vi]</option><option value="zh">中文 [zh]</option><option value="zh-cn">简化字 [zh-cn]</option></select>&#32;<span class="details hover">(*) incomplete &#32;<a href="https://www.reddit.com/r/i18n/wiki/getting_started">volunteer to translate</a></span></td></tr><tr><th>location</th><td class="preflight"><a href="https://www.reddit.com/settings/account/">set location preferences</a></td></tr><tr><td><input type="submit" class="btn save-preferences" value="save options"/></td></tr></table></form></script><img id="hsts_pixel" src="//reddit.com/static/pixel.png"><p class="debuginfo"><span class="icon">&pi;</span>&nbsp;<span class="content">Rendered by PID 29 on&#32; reddit-service-r2-slowlane-65c5c76ff5-v258h &#32;at 2024-02-19 03:13:22.575220+00:00 running 5b0a0b2 country code: US.</span></p><script type="text/javascript" src="//www.redditstatic.com/reddit.en.lSSjgFdIksE.js"></script><script type="text/javascript" src="//www.redditstatic.com/spoiler-text.vsLMfxcst1g.js"></script><script type="text/javascript" src="//www.redditstatic.com/onetrust.6tPW2jUogoc.js"></script></body></html> +\ No newline at end of file diff --git a/test/fixtures/rich_media/yahoo.html b/test/fixtures/rich_media/yahoo.html @@ -0,0 +1,12 @@ +<meta property="og:url" content="https://yahoo.com"> +<meta property="og:type" content="website"> +<meta property="og:title" content="Yahoo | Mail, Weather, Search, Politics, News, Finance, Sports & Videos"> +<meta property="og:description" content="Latest news coverage, email, free stock quotes, live scores and video are just the beginning. Discover more every day at Yahoo!"> +<meta property="og:image" content="https://s.yimg.com/cv/apiv2/social/images/yahoo_default_logo.png"> + +<meta name="twitter:card" content="summary_large_image"> +<meta property="twitter:domain" content="yahoo.com"> +<meta property="twitter:url" content="https://yahoo.com"> +<meta name="twitter:title" content="Yahoo | Mail, Weather, Search, Politics, News, Finance, Sports & Videos"> +<meta name="twitter:description" content="Latest news coverage, email, free stock quotes, live scores and video are just the beginning. Discover more every day at Yahoo!"> +<meta name="twitter:image" content="https://s.yimg.com/cv/apiv2/social/images/yahoo_default_logo.png"> diff --git a/test/fixtures/tesla_mock/aimu@misskey.io.json b/test/fixtures/tesla_mock/aimu@misskey.io.json @@ -0,0 +1,64 @@ +{ + "@context": [ + "https://www.w3.org/ns/activitystreams", + "https://w3id.org/security/v1", + { + "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", + "sensitive": "as:sensitive", + "Hashtag": "as:Hashtag", + "quoteUrl": "as:quoteUrl", + "toot": "http://joinmastodon.org/ns#", + "Emoji": "toot:Emoji", + "featured": "toot:featured", + "discoverable": "toot:discoverable", + "schema": "http://schema.org#", + "PropertyValue": "schema:PropertyValue", + "value": "schema:value", + "misskey": "https://misskey.io/ns#", + "_misskey_content": "misskey:_misskey_content", + "_misskey_quote": "misskey:_misskey_quote", + "_misskey_reaction": "misskey:_misskey_reaction", + "_misskey_votes": "misskey:_misskey_votes", + "_misskey_talk": "misskey:_misskey_talk", + "isCat": "misskey:isCat", + "vcard": "http://www.w3.org/2006/vcard/ns#" + } + ], + "type": "Person", + "id": "https://misskey.io/users/83ssedkv53", + "inbox": "https://misskey.io/users/83ssedkv53/inbox", + "outbox": "https://misskey.io/users/83ssedkv53/outbox", + "followers": "https://misskey.io/users/83ssedkv53/followers", + "following": "https://misskey.io/users/83ssedkv53/following", + "sharedInbox": "https://misskey.io/inbox", + "endpoints": { + "sharedInbox": "https://misskey.io/inbox" + }, + "url": "https://misskey.io/@aimu", + "preferredUsername": "aimu", + "name": "あいむ", + "summary": "<p><span>わずかな作曲要素 巣穴で独り言<br>Twitter </span><a href=\"https://twitter.com/aimu_53\">https://twitter.com/aimu_53</a><span><br>Soundcloud </span><a href=\"https://soundcloud.com/aimu-53\">https://soundcloud.com/aimu-53</a></p>", + "icon": { + "type": "Image", + "url": "https://s3.arkjp.net/misskey/webpublic-3f7e93c0-34f5-443c-acc0-f415cb2342b4.jpg", + "sensitive": false, + "name": null + }, + "image": { + "type": "Image", + "url": "https://s3.arkjp.net/misskey/webpublic-2db63d1d-490b-488b-ab62-c93c285f26b6.png", + "sensitive": false, + "name": null + }, + "tag": [], + "manuallyApprovesFollowers": false, + "discoverable": true, + "publicKey": { + "id": "https://misskey.io/users/83ssedkv53#main-key", + "type": "Key", + "owner": "https://misskey.io/users/83ssedkv53", + "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA1ylhePJ6qGHmwHSBP17b\nIosxGaiFKvgDBgZdm8vzvKeRSqJV9uLHfZL3pO/Zt02EwaZd2GohZAtBZEF8DbMA\n3s93WAesvyGF9mjGrYYKlhp/glwyrrrbf+RdD0DLtyDwRRlrxp3pS2lLmv5Tp1Zl\npH+UKpOnNrpQqjHI5P+lEc9bnflzbRrX+UiyLNsVAP80v4wt7SZfT/telrU6mDru\n998UdfhUo7bDKeDsHG1PfLpyhhtfdoZub4kBpkyacHiwAd+CdCjR54Eu7FDwVK3p\nY3JcrT2q5stgMqN1m4QgSL4XAADIotWwDYttTJejM1n9dr+6VWv5bs0F2Q/6gxOp\nu5DQZLk4Q+64U4LWNox6jCMOq3fYe0g7QalJIHnanYQQo+XjoH6S1Aw64gQ3Ip2Y\nZBmZREAOR7GMFVDPFnVnsbCHnIAv16TdgtLgQBAihkWEUuPqITLi8PMu6kMr3uyq\nYkObEfH0TNTcqaiVpoXv791GZLEUV5ROl0FSUANLNkHZZv29xZ5JDOBOR1rNBLyH\ngVtW8rpszYqOXwzX23hh4WsVXfB7YgNvIijwjiaWbzsecleaENGEnLNMiVKVumTj\nmtyTeFJpH0+OaSrUYpemRRJizmqIjklKsNwUEwUb2WcUUg92o56T2obrBkooabZe\nwgSXSKTOcjsR/ju7+AuIyvkCAwEAAQ==\n-----END PUBLIC KEY-----\n" + }, + "isCat": true, + "vcard:bday": "5353-05-03" +} diff --git a/test/fixtures/tesla_mock/gleasonator.com_host_meta b/test/fixtures/tesla_mock/gleasonator.com_host_meta @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0"> + <Link rel="lrdd" template="https://gleasonator.com/.well-known/webfinger?resource={uri}" type="application/xrd+xml" /> +</XRD> +\ No newline at end of file diff --git a/test/fixtures/tesla_mock/misskey.io_8vs6wxufd0.json b/test/fixtures/tesla_mock/misskey.io_8vs6wxufd0.json @@ -0,0 +1,44 @@ +{ + "@context": [ + "https://www.w3.org/ns/activitystreams", + "https://w3id.org/security/v1", + { + "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", + "sensitive": "as:sensitive", + "Hashtag": "as:Hashtag", + "quoteUrl": "as:quoteUrl", + "toot": "http://joinmastodon.org/ns#", + "Emoji": "toot:Emoji", + "featured": "toot:featured", + "discoverable": "toot:discoverable", + "schema": "http://schema.org#", + "PropertyValue": "schema:PropertyValue", + "value": "schema:value", + "misskey": "https://misskey.io/ns#", + "_misskey_content": "misskey:_misskey_content", + "_misskey_quote": "misskey:_misskey_quote", + "_misskey_reaction": "misskey:_misskey_reaction", + "_misskey_votes": "misskey:_misskey_votes", + "_misskey_talk": "misskey:_misskey_talk", + "isCat": "misskey:isCat", + "vcard": "http://www.w3.org/2006/vcard/ns#" + } + ], + "id": "https://misskey.io/notes/8vs6wxufd0", + "type": "Note", + "attributedTo": "https://misskey.io/users/83ssedkv53", + "summary": null, + "content": "<p><span>Fantiaこれできないように過去のやつは従量課金だった気がする</span></p>", + "_misskey_content": "Fantiaこれできないように過去のやつは従量課金だった気がする", + "published": "2022-01-21T16:37:12.663Z", + "to": [ + "https://www.w3.org/ns/activitystreams#Public" + ], + "cc": [ + "https://misskey.io/users/83ssedkv53/followers" + ], + "inReplyTo": null, + "attachment": [], + "sensitive": false, + "tag": [] +} diff --git a/test/fixtures/tesla_mock/smithereen_non_anonymous_poll.json b/test/fixtures/tesla_mock/smithereen_non_anonymous_poll.json @@ -0,0 +1 @@ +{"type":"Question","id":"https://friends.grishka.me/posts/54642","attributedTo":"https://friends.grishka.me/users/1","content":"<p>здесь тоже можно что-то написать отдельно от опроса</p>","published":"2021-09-04T00:22:16Z","url":"https://friends.grishka.me/posts/54642","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://friends.grishka.me/users/1/followers"],"replies":{"type":"Collection","id":"https://friends.grishka.me/posts/54642/replies","first":{"type":"CollectionPage","items":[],"partOf":"https://friends.grishka.me/posts/54642/replies","next":"https://friends.grishka.me/posts/54642/replies?page=1"}},"sensitive":false,"likes":"https://friends.grishka.me/posts/54642/likes","name":"тестовый опрос","oneOf":[{"type":"Note","id":"https://friends.grishka.me/posts/54642#options/76","name":"тестовый ответ 1","replies":{"type":"Collection","id":"https://friends.grishka.me/activitypub/objects/polls/24/options/76/votes","totalItems":4,"items":[]}},{"type":"Note","id":"https://friends.grishka.me/posts/54642#options/77","name":"тестовый ответ 2","replies":{"type":"Collection","id":"https://friends.grishka.me/activitypub/objects/polls/24/options/77/votes","totalItems":4,"items":[]}},{"type":"Note","id":"https://friends.grishka.me/posts/54642#options/78","name":"тестовый ответ 3","replies":{"type":"Collection","id":"https://friends.grishka.me/activitypub/objects/polls/24/options/78/votes","totalItems":6,"items":[]}}],"votersCount":14,"nonAnonymous":true,"@context":["https://www.w3.org/ns/activitystreams",{"sensitive":"as:sensitive","toot":"http://joinmastodon.org/ns#","sm":"http://smithereen.software/ns#","votersCount":"toot:votersCount","nonAnonymous":"sm:nonAnonymous"}]} +\ No newline at end of file diff --git a/test/fixtures/tesla_mock/smithereen_user.json b/test/fixtures/tesla_mock/smithereen_user.json @@ -0,0 +1 @@ +{"type":"Person","id":"https://friends.grishka.me/users/1","name":"Григорий Клюшников","icon":{"type":"Image","image":{"type":"Image","url":"https://friends.grishka.me/i/6QLsOws97AWp5N_osd74C1IC1ijnFopyCBD9MSEeXNQ/q:93/bG9jYWw6Ly8vcy91cGxvYWRzL2F2YXRhcnMvNTYzODRhODEwODk5ZTRjMzI4YmY4YmQwM2Q2MWM3NmMud2VicA.jpg","mediaType":"image/jpeg","width":1280,"height":960},"width":573,"height":572,"cropRegion":[0.26422762870788574,0.3766937553882599,0.7113820910453796,0.9728997349739075],"url":"https://friends.grishka.me/i/ql_49PQcETAWgY_nC-Qj63H_Oa6FyOAEoWFkUSSkUvQ/c:573:572:nowe:338:362/q:93/bG9jYWw6Ly8vcy91cGxvYWRzL2F2YXRhcnMvNTYzODRhODEwODk5ZTRjMzI4YmY4YmQwM2Q2MWM3NmMud2VicA.jpg","mediaType":"image/jpeg"},"summary":"<p>Делаю эту хрень, пытаюсь вырвать социальные сети из жадных лап корпораций</p>\n<p></p>\n<p></p>\n<p></p>\n<p></p>\n<p></p>\n<p></p>\n<p></p>\n<p>This server does NOT support direct messages. Please write me <a href=\"https://t.me/grishka\">on Telegram</a> or <a href=\"https://matrix.to/#/@grishk:matrix.org\">Matrix</a>.</p>","url":"https://friends.grishka.me/grishka","preferredUsername":"grishka","inbox":"https://friends.grishka.me/users/1/inbox","outbox":"https://friends.grishka.me/users/1/outbox","followers":"https://friends.grishka.me/users/1/followers","following":"https://friends.grishka.me/users/1/following","endpoints":{"sharedInbox":"https://friends.grishka.me/activitypub/sharedInbox","collectionSimpleQuery":"https://friends.grishka.me/users/1/collectionQuery"},"publicKey":{"id":"https://friends.grishka.me/users/1#main-key","owner":"https://friends.grishka.me/users/1","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjlakm+i/d9ER/hIeR7KfiFW+SdLZj2SkKIeM8cmR+YFJuh9ghFqXrkFEjcaqUnAFqe5gYDNSQACnDLA8y4DnzjfGNIohKAnRoa9x6GORmfKQvcnjaTZ53S1NvUiPPyc0Pv/vfCtY/Ab0CEXe5BLqL38oZn817Jf7pBrPRTYH7m012kvwAUTT6k0Y8lPITBEG7nzYbbuGcrN9Y/RDdwE08jmBXlZ45bahRH3VNXVpQE17dCzJB+7k+iJ1R7YCoI+DuMlBYGXGE2KVk46NZTuLnOjFV9SyXfWX4/SrJM4oxev+SX2N75tQgmNZmVVHeqg2ZcbC0WCfNjJOi2HHS9MujwIDAQAB\n-----END PUBLIC KEY-----\n"},"wall":"https://friends.grishka.me/users/1/wall","firstName":"Григорий","lastName":"Клюшников","middleName":"Александрович","vcard:bday":"1993-01-22","gender":"http://schema.org#Male","supportsFriendRequests":true,"friends":"https://friends.grishka.me/users/1/friends","groups":"https://friends.grishka.me/users/1/groups","capabilities":{"supportsFriendRequests":true},"@context":["https://www.w3.org/ns/activitystreams",{"sm":"http://smithereen.software/ns#","cropRegion":{"@id":"sm:cropRegion","@container":"@list"},"wall":{"@id":"sm:wall","@type":"@id"},"collectionSimpleQuery":"sm:collectionSimpleQuery","sc":"http://schema.org#","firstName":"sc:givenName","lastName":"sc:familyName","middleName":"sc:additionalName","gender":{"@id":"sc:gender","@type":"sc:GenderType"},"maidenName":"sm:maidenName","friends":{"@id":"sm:friends","@type":"@id"},"groups":{"@id":"sm:groups","@type":"@id"},"vcard":"http://www.w3.org/2006/vcard/ns#","capabilities":"litepub:capabilities","supportsFriendRequests":"sm:supportsFriendRequests","litepub":"http://litepub.social/ns#"},"https://w3id.org/security/v1"]} +\ No newline at end of file diff --git a/test/fixtures/tesla_mock/webfinger_spoof.json b/test/fixtures/tesla_mock/webfinger_spoof.json @@ -0,0 +1,28 @@ +{ + "aliases": [ + "https://gleasonator.com/users/alex", + "https://mitra.social/users/alex" + ], + "links": [ + { + "href": "https://gleasonator.com/users/alex", + "rel": "http://webfinger.net/rel/profile-page", + "type": "text/html" + }, + { + "href": "https://gleasonator.com/users/alex", + "rel": "self", + "type": "application/activity+json" + }, + { + "href": "https://gleasonator.com/users/alex", + "rel": "self", + "type": "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"" + }, + { + "rel": "http://ostatus.org/schema/1.0/subscribe", + "template": "https://gleasonator.com/ostatus_subscribe?acct={uri}" + } + ], + "subject": "acct:trump@whitehouse.gov" +} diff --git a/test/fixtures/webfinger/graf-imposter-webfinger.json b/test/fixtures/webfinger/graf-imposter-webfinger.json @@ -0,0 +1,41 @@ +{ + "subject": "acct:graf@poa.st", + "aliases": [ + "https://fba.ryona.agenc/webfingertest" + ], + "links": [ + { + "rel": "http://webfinger.net/rel/profile-page", + "type": "text/html", + "href": "https://fba.ryona.agenc/webfingertest" + }, + { + "rel": "self", + "type": "application/activity+json", + "href": "https://fba.ryona.agenc/webfingertest" + }, + { + "rel": "http://ostatus.org/schema/1.0/subscribe", + "template": "https://fba.ryona.agenc/contact/follow?url={uri}" + }, + { + "rel": "http://schemas.google.com/g/2010#updates-from", + "type": "application/atom+xml", + "href": "" + }, + { + "rel": "salmon", + "href": "https://fba.ryona.agenc/salmon/friendica" + }, + { + "rel": "http://microformats.org/profile/hcard", + "type": "text/html", + "href": "https://fba.ryona.agenc/hcard/friendica" + }, + { + "rel": "http://joindiaspora.com/seed_location", + "type": "text/html", + "href": "https://fba.ryona.agenc" + } + ] +} diff --git a/test/fixtures/wildebeest-nodeinfo21.json b/test/fixtures/wildebeest-nodeinfo21.json @@ -0,0 +1 @@ +{"version":"2.1","software":{"name":"wildebeest","version":"0.0.1","repository":"https://github.com/cloudflare/wildebeest"},"protocols":["activitypub"],"usage":{"users":{"total":1,"activeMonth":1,"activeHalfyear":1}},"openRegistrations":false,"metadata":{"upstream":{"name":"mastodon","version":"3.5.1"}}} +\ No newline at end of file diff --git a/test/fixtures/wildebeest-well-known-nodeinfo.json b/test/fixtures/wildebeest-well-known-nodeinfo.json @@ -0,0 +1 @@ +{"links":[{"rel":"http://nodeinfo.diaspora.software/ns/schema/2.0","href":"https://wildebeest.example.org/nodeinfo/2.0"},{"rel":"http://nodeinfo.diaspora.software/ns/schema/2.1","href":"https://wildebeest.example.org/nodeinfo/2.1"}]} +\ No newline at end of file diff --git a/test/fixtures/xml_billion_laughs.xml b/test/fixtures/xml_billion_laughs.xml @@ -0,0 +1,15 @@ +<?xml version="1.0"?> +<!DOCTYPE lolz [ + <!ENTITY lol "lol"> + <!ELEMENT lolz (#PCDATA)> + <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> + <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;"> + <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> + <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> + <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> + <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> + <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> + <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> + <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> +]> +<lolz>&lol9;</lolz> diff --git a/test/fixtures/xml_external_entities.xml b/test/fixtures/xml_external_entities.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> +<stockCheck><productId>&xxe;</productId></stockCheck> diff --git a/test/mix/pleroma_test.exs b/test/mix/pleroma_test.exs @@ -39,7 +39,7 @@ defmodule Mix.PleromaTest do describe "get_option/3" do test "get from options" do - assert get_option([domain: "some-domain.com"], :domain, "Promt") == "some-domain.com" + assert get_option([domain: "some-domain.com"], :domain, "Prompt") == "some-domain.com" end test "get from prompt" do diff --git a/test/mix/tasks/pleroma/config_test.exs b/test/mix/tasks/pleroma/config_test.exs @@ -140,7 +140,6 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do federating: true, federation_incoming_replies_max_depth: 100, federation_reachability_timeout_days: 7, - federation_publisher_modules: [Pleroma.Web.ActivityPub.Publisher], allow_relay: true, public: true, quarantined_instances: [], @@ -183,8 +182,8 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do assert File.exists?(temp_file) {:ok, file} = File.read(temp_file) - assert file == - "import Config\n\nconfig :pleroma, :instance,\n name: \"Pleroma\",\n email: \"example@example.com\",\n notify_email: \"noreply@example.com\",\n description: \"A Pleroma instance, an alternative fediverse server\",\n limit: 5000,\n chat_limit: 5000,\n remote_limit: 100_000,\n upload_limit: 16_000_000,\n avatar_upload_limit: 2_000_000,\n background_upload_limit: 4_000_000,\n banner_upload_limit: 4_000_000,\n poll_limits: %{\n max_expiration: 31_536_000,\n max_option_chars: 200,\n max_options: 20,\n min_expiration: 0\n },\n registrations_open: true,\n federating: true,\n federation_incoming_replies_max_depth: 100,\n federation_reachability_timeout_days: 7,\n federation_publisher_modules: [Pleroma.Web.ActivityPub.Publisher],\n allow_relay: true,\n public: true,\n quarantined_instances: [],\n managed_config: true,\n static_dir: \"instance/static/\",\n allowed_post_formats: [\"text/plain\", \"text/html\", \"text/markdown\", \"text/bbcode\"],\n autofollowed_nicknames: [],\n max_pinned_statuses: 1,\n attachment_links: false,\n max_report_comment_size: 1000,\n safe_dm_mentions: false,\n healthcheck: false,\n remote_post_retention_days: 90,\n skip_thread_containment: true,\n limit_to_local_content: :unauthenticated,\n user_bio_length: 5000,\n user_name_length: 100,\n max_account_fields: 10,\n max_remote_account_fields: 20,\n account_field_name_length: 512,\n account_field_value_length: 2048,\n external_user_synchronization: true,\n extended_nickname_format: true,\n multi_factor_authentication: [\n totp: [digits: 6, period: 30],\n backup_codes: [number: 2, length: 6]\n ]\n" + assert file =~ "import Config\n" + assert file =~ "A Pleroma instance, an alternative fediverse server" end end diff --git a/test/mix/tasks/pleroma/digest_test.exs b/test/mix/tasks/pleroma/digest_test.exs @@ -23,6 +23,11 @@ defmodule Mix.Tasks.Pleroma.DigestTest do setup do: clear_config([Pleroma.Emails.Mailer, :enabled], true) + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + describe "pleroma.digest test" do test "Sends digest to the given user" do user1 = insert(:user) diff --git a/test/mix/tasks/pleroma/ecto/migrate_test.exs b/test/mix/tasks/pleroma/ecto/migrate_test.exs @@ -9,7 +9,7 @@ defmodule Mix.Tasks.Pleroma.Ecto.MigrateTest do test "ecto.migrate info message" do level = Logger.level() - Logger.configure(level: :warn) + Logger.configure(level: :warning) assert capture_log(fn -> Mix.Tasks.Pleroma.Ecto.Migrate.run() diff --git a/test/mix/tasks/pleroma/ecto/rollback_test.exs b/test/mix/tasks/pleroma/ecto/rollback_test.exs @@ -9,11 +9,11 @@ defmodule Mix.Tasks.Pleroma.Ecto.RollbackTest do test "ecto.rollback info message" do level = Logger.level() - Logger.configure(level: :warn) + Logger.configure(level: :warning) assert capture_log(fn -> Mix.Tasks.Pleroma.Ecto.Rollback.run(["--env", "test"]) - end) =~ "[info] Rollback succesfully" + end) =~ "[info] Rollback successfully" Logger.configure(level: level) end diff --git a/test/mix/tasks/pleroma/robots_txt_test.exs b/test/mix/tasks/pleroma/robots_txt_test.exs @@ -26,7 +26,7 @@ defmodule Mix.Tasks.Pleroma.RobotsTxtTest do assert file == "User-Agent: *\nDisallow: /\n" end - test "to existance folder" do + test "to existing folder" do path = "test/fixtures/" file_path = path <> "robots.txt" clear_config([:instance, :static_dir], path) diff --git a/test/mix/tasks/pleroma/user_test.exs b/test/mix/tasks/pleroma/user_test.exs @@ -20,6 +20,11 @@ defmodule Mix.Tasks.Pleroma.UserTest do import Mock import Pleroma.Factory + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + setup_all do Mix.shell(Mix.Shell.Process) diff --git a/test/pleroma/activity/ir/topics_test.exs b/test/pleroma/activity/ir/topics_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Activity.Ir.TopicsTest do - use Pleroma.DataCase, async: true + use Pleroma.DataCase alias Pleroma.Activity alias Pleroma.Activity.Ir.Topics diff --git a/test/pleroma/activity/search_test.exs b/test/pleroma/activity/search_test.exs @@ -1,62 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Activity.SearchTest do - alias Pleroma.Activity.Search - alias Pleroma.Web.CommonAPI - import Pleroma.Factory - - use Pleroma.DataCase, async: true - - test "it finds something" do - user = insert(:user) - {:ok, post} = CommonAPI.post(user, %{status: "it's wednesday my dudes"}) - - [result] = Search.search(nil, "wednesday") - - assert result.id == post.id - end - - test "it finds local-only posts for authenticated users" do - user = insert(:user) - reader = insert(:user) - {:ok, post} = CommonAPI.post(user, %{status: "it's wednesday my dudes", visibility: "local"}) - - [result] = Search.search(reader, "wednesday") - - assert result.id == post.id - end - - test "it does not find local-only posts for anonymous users" do - user = insert(:user) - {:ok, _post} = CommonAPI.post(user, %{status: "it's wednesday my dudes", visibility: "local"}) - - assert [] = Search.search(nil, "wednesday") - end - - test "using plainto_tsquery on postgres < 11" do - old_version = :persistent_term.get({Pleroma.Repo, :postgres_version}) - :persistent_term.put({Pleroma.Repo, :postgres_version}, 10.0) - on_exit(fn -> :persistent_term.put({Pleroma.Repo, :postgres_version}, old_version) end) - - user = insert(:user) - {:ok, post} = CommonAPI.post(user, %{status: "it's wednesday my dudes"}) - {:ok, _post2} = CommonAPI.post(user, %{status: "it's wednesday my bros"}) - - # plainto doesn't understand complex queries - assert [result] = Search.search(nil, "wednesday -dudes") - - assert result.id == post.id - end - - test "using websearch_to_tsquery" do - user = insert(:user) - {:ok, _post} = CommonAPI.post(user, %{status: "it's wednesday my dudes"}) - {:ok, other_post} = CommonAPI.post(user, %{status: "it's wednesday my bros"}) - - assert [result] = Search.search(nil, "wednesday -dudes") - - assert result.id == other_post.id - end -end diff --git a/test/pleroma/activity_test.exs b/test/pleroma/activity_test.exs @@ -145,7 +145,7 @@ defmodule Pleroma.ActivityTest do setup do: clear_config([:instance, :limit_to_local_content]) - @tag :skip_on_mac + @tag :skip_darwin test "finds utf8 text in statuses", %{ japanese_activity: japanese_activity, user: user diff --git a/test/pleroma/bbs/handler_test.exs b/test/pleroma/bbs/handler_test.exs @@ -1,89 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.BBS.HandlerTest do - use Pleroma.DataCase, async: true - alias Pleroma.Activity - alias Pleroma.BBS.Handler - alias Pleroma.Object - alias Pleroma.Repo - alias Pleroma.User - alias Pleroma.Web.CommonAPI - - import ExUnit.CaptureIO - import Pleroma.Factory - import Ecto.Query - - test "getting the home timeline" do - user = insert(:user) - followed = insert(:user) - - {:ok, user, followed} = User.follow(user, followed) - - {:ok, _first} = CommonAPI.post(user, %{status: "hey"}) - {:ok, _second} = CommonAPI.post(followed, %{status: "hello"}) - - output = - capture_io(fn -> - Handler.handle_command(%{user: user}, "home") - end) - - assert output =~ user.nickname - assert output =~ followed.nickname - - assert output =~ "hey" - assert output =~ "hello" - end - - test "posting" do - user = insert(:user) - - output = - capture_io(fn -> - Handler.handle_command(%{user: user}, "p this is a test post") - end) - - assert output =~ "Posted" - - activity = - Repo.one( - from(a in Activity, - where: fragment("?->>'type' = ?", a.data, "Create") - ) - ) - - assert activity.actor == user.ap_id - object = Object.normalize(activity, fetch: false) - assert object.data["content"] == "this is a test post" - end - - test "replying" do - user = insert(:user) - another_user = insert(:user) - - {:ok, activity} = CommonAPI.post(another_user, %{status: "this is a test post"}) - activity_object = Object.normalize(activity, fetch: false) - - output = - capture_io(fn -> - Handler.handle_command(%{user: user}, "r #{activity.id} this is a reply") - end) - - assert output =~ "Replied" - - reply = - Repo.one( - from(a in Activity, - where: fragment("?->>'type' = ?", a.data, "Create"), - where: a.actor == ^user.ap_id - ) - ) - - assert reply.actor == user.ap_id - - reply_object_data = Object.normalize(reply, fetch: false).data - assert reply_object_data["content"] == "this is a reply" - assert reply_object_data["inReplyTo"] == activity_object.data["id"] - end -end diff --git a/test/pleroma/bookmark_folder_test.exs b/test/pleroma/bookmark_folder_test.exs @@ -0,0 +1,60 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.BookmarkFolderTest do + use Pleroma.DataCase, async: true + import Pleroma.Factory + alias Pleroma.BookmarkFolder + + describe "create/3" do + test "with valid params" do + user = insert(:user) + {:ok, folder} = BookmarkFolder.create(user.id, "Read later", "🕓") + assert folder.user_id == user.id + assert folder.name == "Read later" + assert folder.emoji == "🕓" + end + + test "with invalid params" do + {:error, changeset} = BookmarkFolder.create(nil, "", "not an emoji") + refute changeset.valid? + + assert changeset.errors == [ + emoji: {"Invalid emoji", []}, + user_id: {"can't be blank", [validation: :required]}, + name: {"can't be blank", [validation: :required]} + ] + end + end + + test "update/3" do + user = insert(:user) + {:ok, folder} = BookmarkFolder.create(user.id, "Read ltaer") + {:ok, folder} = BookmarkFolder.update(folder.id, "Read later") + assert folder.name == "Read later" + end + + test "for_user/1" do + user = insert(:user) + other_user = insert(:user) + + {:ok, _} = BookmarkFolder.create(user.id, "Folder 1") + {:ok, _} = BookmarkFolder.create(user.id, "Folder 2") + {:ok, _} = BookmarkFolder.create(other_user.id, "Folder 3") + + folders = BookmarkFolder.for_user(user.id) + + assert length(folders) == 2 + end + + test "belongs_to_user?/2" do + user = insert(:user) + other_user = insert(:user) + + {:ok, folder} = BookmarkFolder.create(user.id, "Folder") + + assert true == BookmarkFolder.belongs_to_user?(folder.id, user.id) + assert false == BookmarkFolder.belongs_to_user?(folder.id, other_user.id) + end +end diff --git a/test/pleroma/bookmark_test.exs b/test/pleroma/bookmark_test.exs @@ -6,15 +6,17 @@ defmodule Pleroma.BookmarkTest do use Pleroma.DataCase, async: true import Pleroma.Factory alias Pleroma.Bookmark + alias Pleroma.BookmarkFolder alias Pleroma.Web.CommonAPI - describe "create/2" do + describe "create/3" do test "with valid params" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{status: "Some cool information"}) {:ok, bookmark} = Bookmark.create(user.id, activity.id) assert bookmark.user_id == user.id assert bookmark.activity_id == activity.id + assert bookmark.folder_id == nil end test "with invalid params" do @@ -26,6 +28,19 @@ defmodule Pleroma.BookmarkTest do activity_id: {"can't be blank", [validation: :required]} ] end + + test "update existing bookmark folder" do + user = insert(:user) + {:ok, activity} = CommonAPI.post(user, %{status: "Some cool information"}) + + {:ok, bookmark} = Bookmark.create(user.id, activity.id) + assert bookmark.folder_id == nil + + {:ok, bookmark_folder} = BookmarkFolder.create(user.id, "Read later") + + {:ok, bookmark} = Bookmark.create(user.id, activity.id, bookmark_folder.id) + assert bookmark.folder_id == bookmark_folder.id + end end describe "destroy/2" do diff --git a/test/pleroma/config/deprecation_warnings_test.exs b/test/pleroma/config/deprecation_warnings_test.exs @@ -125,13 +125,12 @@ defmodule Pleroma.Config.DeprecationWarningsTest do media_removal: ["some.removal", {"some.other.instance", "Some reason"}] ) - expected_config = [ + expected_config = {:media_removal, [{"some.removal", ""}, {"some.other.instance", "Some reason"}]} - ] capture_log(fn -> DeprecationWarnings.warn() end) - assert Config.get([:mrf_simple]) == expected_config + assert expected_config in Config.get([:mrf_simple]) end test "doesn't give a warning with correct config" do @@ -215,7 +214,7 @@ defmodule Pleroma.Config.DeprecationWarningsTest do ``` config :pleroma, :mrf, - transparency_exclusions: [{"instance.tld", "Reason to exlude transparency"}] + transparency_exclusions: [{"instance.tld", "Reason to exclude transparency"}] ``` """ end @@ -327,11 +326,11 @@ defmodule Pleroma.Config.DeprecationWarningsTest do end) =~ "Your config is using old namespace for activity expiration configuration." end - test "check_uploders_s3_public_endpoint/0" do + test "check_uploaders_s3_public_endpoint/0" do clear_config([Pleroma.Uploaders.S3], public_endpoint: "https://fake.amazonaws.com/bucket/") assert capture_log(fn -> - DeprecationWarnings.check_uploders_s3_public_endpoint() + DeprecationWarnings.check_uploaders_s3_public_endpoint() end) =~ "Your config is using the old setting for controlling the URL of media uploaded to your S3 bucket." end diff --git a/test/pleroma/config/release_runtime_provider_test.exs b/test/pleroma/config/release_runtime_provider_test.exs @@ -10,13 +10,15 @@ defmodule Pleroma.Config.ReleaseRuntimeProviderTest do describe "load/2" do test "loads release defaults config and warns about non-existent runtime config" do ExUnit.CaptureIO.capture_io(fn -> - merged = ReleaseRuntimeProvider.load([], []) + merged = ReleaseRuntimeProvider.load([], config_path: "/var/empty/config.exs") assert merged == Pleroma.Config.Holder.release_defaults() end) =~ "!!! Config path is not declared! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file" end test "merged runtime config" do + assert :ok == File.chmod!("test/fixtures/config/temp.secret.exs", 0o640) + merged = ReleaseRuntimeProvider.load([], config_path: "test/fixtures/config/temp.secret.exs") @@ -25,6 +27,8 @@ defmodule Pleroma.Config.ReleaseRuntimeProviderTest do end test "merged exported config" do + assert :ok == File.chmod!("test/fixtures/config/temp.exported_from_db.secret.exs", 0o640) + ExUnit.CaptureIO.capture_io(fn -> merged = ReleaseRuntimeProvider.load([], @@ -37,6 +41,9 @@ defmodule Pleroma.Config.ReleaseRuntimeProviderTest do end test "runtime config is merged with exported config" do + assert :ok == File.chmod!("test/fixtures/config/temp.secret.exs", 0o640) + assert :ok == File.chmod!("test/fixtures/config/temp.exported_from_db.secret.exs", 0o640) + merged = ReleaseRuntimeProvider.load([], config_path: "test/fixtures/config/temp.secret.exs", diff --git a/test/pleroma/config_db_test.exs b/test/pleroma/config_db_test.exs @@ -321,7 +321,7 @@ defmodule Pleroma.ConfigDBTest do }) == {:proxy_url, {:socks5, {127, 0, 0, 1}, 1234}} end - test "tuple with n childs" do + test "tuple with n children" do assert ConfigDB.to_elixir_types(%{ "tuple" => [ "v1", @@ -399,7 +399,7 @@ defmodule Pleroma.ConfigDBTest do assert ConfigDB.to_elixir_types(a: 1, b: 2, c: "string") == [a: 1, b: 2, c: "string"] end - test "complex keyword with nested mixed childs" do + test "complex keyword with nested mixed children" do assert ConfigDB.to_elixir_types([ %{"tuple" => [":uploader", "Pleroma.Uploaders.Local"]}, %{"tuple" => [":filters", ["Pleroma.Upload.Filter.Dedupe"]]}, @@ -443,13 +443,13 @@ defmodule Pleroma.ConfigDBTest do test "common keyword" do assert ConfigDB.to_elixir_types([ - %{"tuple" => [":level", ":warn"]}, + %{"tuple" => [":level", ":warning"]}, %{"tuple" => [":meta", [":all"]]}, %{"tuple" => [":path", ""]}, %{"tuple" => [":val", nil]}, %{"tuple" => [":webhook_url", "https://hooks.slack.com/services/YOUR-KEY-HERE"]} ]) == [ - level: :warn, + level: :warning, meta: [:all], path: "", val: nil, diff --git a/test/pleroma/conversation/participation_test.exs b/test/pleroma/conversation/participation_test.exs @@ -57,7 +57,7 @@ defmodule Pleroma.Conversation.ParticipationTest do assert Participation.unread_count(other_user) == 0 end - test "for a new conversation, it sets the recipents of the participation" do + test "for a new conversation, it sets the recipients of the participation" do user = insert(:user) other_user = insert(:user) third_user = insert(:user) diff --git a/test/pleroma/conversation_test.exs b/test/pleroma/conversation_test.exs @@ -13,6 +13,11 @@ defmodule Pleroma.ConversationTest do setup_all do: clear_config([:instance, :federating], true) + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + test "it goes through old direct conversations" do user = insert(:user) other_user = insert(:user) diff --git a/test/pleroma/ecto_type/activity_pub/object_validators/bare_uri_test.exs b/test/pleroma/ecto_type/activity_pub/object_validators/bare_uri_test.exs @@ -0,0 +1,25 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.EctoType.ActivityPub.ObjectValidators.BareUriTest do + use Pleroma.DataCase, async: true + + alias Pleroma.EctoType.ActivityPub.ObjectValidators.BareUri + + test "diaspora://" do + text = "diaspora://alice@fediverse.example/post/deadbeefdeadbeefdeadbeefdeadbeef" + assert {:ok, ^text} = BareUri.cast(text) + end + + test "nostr:" do + text = "nostr:note1gwdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" + assert {:ok, ^text} = BareUri.cast(text) + end + + test "errors for non-URIs" do + assert :error == BareUri.cast(1) + assert :error == BareUri.cast("foo") + assert :error == BareUri.cast("foo bar") + end +end diff --git a/test/pleroma/emoji/loader_test.exs b/test/pleroma/emoji/loader_test.exs @@ -72,7 +72,7 @@ defmodule Pleroma.Emoji.LoaderTest do assert group == "special file" end - test "no mathing returns nil", %{groups: groups} do + test "no matching returns nil", %{groups: groups} do group = groups |> Loader.match_extra("/emoji/some_undefined.png") diff --git a/test/pleroma/emoji/pack_test.exs b/test/pleroma/emoji/pack_test.exs @@ -90,4 +90,8 @@ defmodule Pleroma.Emoji.PackTest do assert updated_pack.files_count == 1 end + + test "load_pack/1 ignores path traversal in a forged pack name", %{pack: pack} do + assert {:ok, ^pack} = Pack.load_pack("../../../../../dump_pack") + end end diff --git a/test/pleroma/emoji_test.exs b/test/pleroma/emoji_test.exs @@ -6,26 +6,26 @@ defmodule Pleroma.EmojiTest do use ExUnit.Case, async: true alias Pleroma.Emoji - describe "is_unicode_emoji?/1" do + describe "unicode?/1" do test "tells if a string is an unicode emoji" do - refute Emoji.is_unicode_emoji?("X") - refute Emoji.is_unicode_emoji?("ね") + refute Emoji.unicode?("X") + refute Emoji.unicode?("ね") # Only accept fully-qualified (RGI) emoji # See http://www.unicode.org/reports/tr51/ - refute Emoji.is_unicode_emoji?("❤") - refute Emoji.is_unicode_emoji?("☂") + refute Emoji.unicode?("❤") + refute Emoji.unicode?("☂") - assert Emoji.is_unicode_emoji?("🥺") - assert Emoji.is_unicode_emoji?("🤰") - assert Emoji.is_unicode_emoji?("❤️") - assert Emoji.is_unicode_emoji?("🏳️‍⚧️") - assert Emoji.is_unicode_emoji?("🫵") + assert Emoji.unicode?("🥺") + assert Emoji.unicode?("🤰") + assert Emoji.unicode?("❤️") + assert Emoji.unicode?("🏳️‍⚧️") + assert Emoji.unicode?("🫵") # Additionally, we accept regional indicators. - assert Emoji.is_unicode_emoji?("🇵") - assert Emoji.is_unicode_emoji?("🇴") - assert Emoji.is_unicode_emoji?("🇬") + assert Emoji.unicode?("🇵") + assert Emoji.unicode?("🇴") + assert Emoji.unicode?("🇬") end end diff --git a/test/pleroma/formatter_test.exs b/test/pleroma/formatter_test.exs @@ -324,7 +324,7 @@ defmodule Pleroma.FormatterTest do assert {_text, [], ^expected_tags} = Formatter.linkify(text) end - test "parses mulitple tags in html" do + test "parses multiple tags in html" do text = "<p>#tag1 #tag2 #tag3 #tag4</p>" expected_tags = [ @@ -347,7 +347,7 @@ defmodule Pleroma.FormatterTest do assert {_text, [], ^expected_tags} = Formatter.linkify(text) end - test "parses mulitple tags on mulitple lines in html" do + test "parses multiple tags on multiple lines in html" do text = "<p>testing...</p><p>#tag1 #tag2 #tag3 #tag4</p><p>paragraph</p><p>#tag5 #tag6 #tag7 #tag8</p>" diff --git a/test/pleroma/healthcheck_test.exs b/test/pleroma/healthcheck_test.exs @@ -9,14 +9,16 @@ defmodule Pleroma.HealthcheckTest do test "system_info/0" do result = Healthcheck.system_info() |> Map.from_struct() - assert Map.keys(result) == [ + keys = Map.keys(result) + + assert Keyword.equal?(keys, [ :active, :healthy, :idle, :job_queue_stats, :memory_used, :pool_size - ] + ]) end describe "check_health/1" do @@ -25,7 +27,7 @@ defmodule Pleroma.HealthcheckTest do refute result.healthy end - test "chech_health/1" do + test "check_health/1" do result = Healthcheck.check_health(%Healthcheck{pool_size: 10, active: 9}) assert result.healthy end diff --git a/test/pleroma/html_test.exs b/test/pleroma/html_test.exs @@ -202,7 +202,7 @@ defmodule Pleroma.HTMLTest do }) object = Object.normalize(activity, fetch: false) - {:ok, url} = HTML.extract_first_external_url_from_object(object) + url = HTML.extract_first_external_url_from_object(object) assert url == "https://github.com/komeiji-satori/Dress" end @@ -217,7 +217,7 @@ defmodule Pleroma.HTMLTest do }) object = Object.normalize(activity, fetch: false) - {:ok, url} = HTML.extract_first_external_url_from_object(object) + url = HTML.extract_first_external_url_from_object(object) assert url == "https://github.com/syuilo/misskey/blob/develop/docs/setup.en.md" @@ -233,7 +233,7 @@ defmodule Pleroma.HTMLTest do }) object = Object.normalize(activity, fetch: false) - {:ok, url} = HTML.extract_first_external_url_from_object(object) + url = HTML.extract_first_external_url_from_object(object) assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140" end @@ -249,7 +249,7 @@ defmodule Pleroma.HTMLTest do }) object = Object.normalize(activity, fetch: false) - {:ok, url} = HTML.extract_first_external_url_from_object(object) + url = HTML.extract_first_external_url_from_object(object) assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140" end @@ -261,7 +261,7 @@ defmodule Pleroma.HTMLTest do object = Object.normalize(activity, fetch: false) - assert {:ok, nil} = HTML.extract_first_external_url_from_object(object) + assert nil == HTML.extract_first_external_url_from_object(object) end test "skips attachment links" do @@ -275,7 +275,7 @@ defmodule Pleroma.HTMLTest do object = Object.normalize(activity, fetch: false) - assert {:ok, nil} = HTML.extract_first_external_url_from_object(object) + assert nil == HTML.extract_first_external_url_from_object(object) end end end diff --git a/test/pleroma/http/adapter_helper/gun_test.exs b/test/pleroma/http/adapter_helper/gun_test.exs @@ -36,7 +36,7 @@ defmodule Pleroma.HTTP.AdapterHelper.GunTest do assert opts[:certificates_verification] end - test "https url with non standart port" do + test "https url with non-standard port" do uri = URI.parse("https://example.com:115") opts = Gun.options([receive_conn: false], uri) @@ -44,7 +44,7 @@ defmodule Pleroma.HTTP.AdapterHelper.GunTest do assert opts[:certificates_verification] end - test "merges with defaul http adapter config" do + test "merges with default http adapter config" do defaults = Gun.options([receive_conn: false], URI.parse("https://example.com")) assert Keyword.has_key?(defaults, :a) assert Keyword.has_key?(defaults, :b) diff --git a/test/pleroma/http/adapter_helper/hackney_test.exs b/test/pleroma/http/adapter_helper/hackney_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.HTTP.AdapterHelper.HackneyTest do - use ExUnit.Case, async: true + use ExUnit.Case use Pleroma.Tests.Helpers alias Pleroma.HTTP.AdapterHelper.Hackney diff --git a/test/pleroma/http/web_push_test.exs b/test/pleroma/http/web_push_test.exs @@ -0,0 +1,45 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.HTTP.WebPushTest do + use ExUnit.Case + + import Tesla.Mock + alias Pleroma.HTTP + + @push_url "https://some-push-server/" + + setup do + mock(fn + %{ + method: :post, + url: @push_url, + headers: headers + } -> + if {"content-type", "octet-stream"} in headers do + %Tesla.Env{ + status: 200 + } + else + %Tesla.Env{ + status: 403 + } + end + end) + + :ok + end + + test "post" do + response = + HTTP.WebPush.post( + @push_url, + "encrypted payload", + %{"authorization" => "WebPush"}, + [] + ) + + assert {:ok, %{status: 200}} = response + end +end diff --git a/test/pleroma/instances/instance_test.exs b/test/pleroma/instances/instance_test.exs @@ -31,14 +31,6 @@ defmodule Pleroma.Instances.InstanceTest do assert {:ok, instance} = Instance.set_reachable(instance.host) refute instance.unreachable_since end - - test "does NOT create an Instance record in case of no existing matching record" do - host = "domain.org" - assert nil == Instance.set_reachable(host) - - assert [] = Repo.all(Ecto.Query.from(i in Instance)) - assert Instance.reachable?(host) - end end describe "set_unreachable/1" do @@ -161,6 +153,66 @@ defmodule Pleroma.Instances.InstanceTest do end end + describe "get_or_update_metadata/1" do + test "Scrapes Wildebeest NodeInfo" do + Tesla.Mock.mock(fn + %{url: "https://wildebeest.example.org/.well-known/nodeinfo"} -> + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/wildebeest-well-known-nodeinfo.json") + } + + %{url: "https://wildebeest.example.org/nodeinfo/2.1"} -> + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/wildebeest-nodeinfo21.json") + } + end) + + expected = %{ + software_name: "wildebeest", + software_repository: "https://github.com/cloudflare/wildebeest", + software_version: "0.0.1" + } + + assert expected == + Instance.get_or_update_metadata(URI.parse("https://wildebeest.example.org/")) + + expected = %Pleroma.Instances.Instance.Pleroma.Instances.Metadata{ + software_name: "wildebeest", + software_repository: "https://github.com/cloudflare/wildebeest", + software_version: "0.0.1" + } + + assert expected == + Repo.get_by(Pleroma.Instances.Instance, %{host: "wildebeest.example.org"}).metadata + end + + test "Scrapes Mastodon NodeInfo" do + Tesla.Mock.mock(fn + %{url: "https://mastodon.example.org/.well-known/nodeinfo"} -> + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/mastodon-well-known-nodeinfo.json") + } + + %{url: "https://mastodon.example.org/nodeinfo/2.0"} -> + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/mastodon-nodeinfo20.json") + } + end) + + expected = %{ + software_name: "mastodon", + software_version: "4.1.0" + } + + assert expected == + Instance.get_or_update_metadata(URI.parse("https://mastodon.example.org/")) + end + end + test "delete_users_and_activities/1 deletes remote instance users and activities" do [mario, luigi, _peach, wario] = users = [ diff --git a/test/pleroma/integration/mastodon_websocket_test.exs b/test/pleroma/integration/mastodon_websocket_test.exs @@ -31,9 +31,22 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do WebsocketClient.start_link(self(), path, headers) end + defp decode_json(json) do + with {:ok, %{"event" => event, "payload" => payload_text}} <- Jason.decode(json), + {:ok, payload} <- Jason.decode(payload_text) do + {:ok, %{"event" => event, "payload" => payload}} + end + end + + # Turns atom keys to strings + defp atom_key_to_string(json) do + json + |> Jason.encode!() + |> Jason.decode!() + end + test "refuses invalid requests" do capture_log(fn -> - assert {:error, %WebSockex.RequestError{code: 404}} = start_socket() assert {:error, %WebSockex.RequestError{code: 404}} = start_socket("?stream=ncjdk") Process.sleep(30) end) @@ -49,6 +62,10 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do end) end + test "allows unified stream" do + assert {:ok, _} = start_socket() + end + test "allows public streams without authentication" do assert {:ok, _} = start_socket("?stream=public") assert {:ok, _} = start_socket("?stream=public:local") @@ -70,12 +87,143 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do view_json = Pleroma.Web.MastodonAPI.StatusView.render("show.json", activity: activity, for: nil) - |> Jason.encode!() - |> Jason.decode!() + |> atom_key_to_string() assert json == view_json end + describe "subscribing via WebSocket" do + test "can subscribe" do + user = insert(:user) + {:ok, pid} = start_socket() + WebsocketClient.send_text(pid, %{type: "subscribe", stream: "public"} |> Jason.encode!()) + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "subscribe", "result" => "success"} + }} = decode_json(raw_json) + + {:ok, activity} = CommonAPI.post(user, %{status: "nice echo chamber"}) + + assert_receive {:text, raw_json}, 1_000 + assert {:ok, json} = Jason.decode(raw_json) + + assert "update" == json["event"] + assert json["payload"] + assert {:ok, json} = Jason.decode(json["payload"]) + + view_json = + Pleroma.Web.MastodonAPI.StatusView.render("show.json", activity: activity, for: nil) + |> Jason.encode!() + |> Jason.decode!() + + assert json == view_json + end + + test "can subscribe to multiple streams" do + user = insert(:user) + {:ok, pid} = start_socket() + WebsocketClient.send_text(pid, %{type: "subscribe", stream: "public"} |> Jason.encode!()) + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "subscribe", "result" => "success"} + }} = decode_json(raw_json) + + WebsocketClient.send_text( + pid, + %{type: "subscribe", stream: "hashtag", tag: "mew"} |> Jason.encode!() + ) + + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "subscribe", "result" => "success"} + }} = decode_json(raw_json) + + {:ok, _activity} = CommonAPI.post(user, %{status: "nice echo chamber #mew"}) + + assert_receive {:text, raw_json}, 1_000 + assert {:ok, %{"stream" => stream1}} = Jason.decode(raw_json) + assert_receive {:text, raw_json}, 1_000 + assert {:ok, %{"stream" => stream2}} = Jason.decode(raw_json) + + streams = [stream1, stream2] + assert ["hashtag", "mew"] in streams + assert ["public"] in streams + end + + test "won't double subscribe" do + user = insert(:user) + {:ok, pid} = start_socket() + WebsocketClient.send_text(pid, %{type: "subscribe", stream: "public"} |> Jason.encode!()) + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "subscribe", "result" => "success"} + }} = decode_json(raw_json) + + WebsocketClient.send_text(pid, %{type: "subscribe", stream: "public"} |> Jason.encode!()) + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "subscribe", "result" => "ignored"} + }} = decode_json(raw_json) + + {:ok, _activity} = CommonAPI.post(user, %{status: "nice echo chamber"}) + + assert_receive {:text, _}, 1_000 + refute_receive {:text, _}, 1_000 + end + + test "rejects invalid streams" do + {:ok, pid} = start_socket() + WebsocketClient.send_text(pid, %{type: "subscribe", stream: "nonsense"} |> Jason.encode!()) + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "subscribe", "result" => "error", "error" => "bad_topic"} + }} = decode_json(raw_json) + end + + test "can unsubscribe" do + user = insert(:user) + {:ok, pid} = start_socket() + WebsocketClient.send_text(pid, %{type: "subscribe", stream: "public"} |> Jason.encode!()) + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "subscribe", "result" => "success"} + }} = decode_json(raw_json) + + WebsocketClient.send_text(pid, %{type: "unsubscribe", stream: "public"} |> Jason.encode!()) + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "unsubscribe", "result" => "success"} + }} = decode_json(raw_json) + + {:ok, _activity} = CommonAPI.post(user, %{status: "nice echo chamber"}) + refute_receive {:text, _}, 1_000 + end + end + describe "with a valid user token" do setup do {:ok, app} = @@ -120,15 +268,122 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do end) end - test "accepts valid token on Sec-WebSocket-Protocol header", %{token: token} do - assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}]) + test "accepts valid token on client-sent event", %{token: token} do + assert {:ok, pid} = start_socket() - capture_log(fn -> - assert {:error, %WebSockex.RequestError{code: 401}} = - start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}]) + WebsocketClient.send_text( + pid, + %{type: "pleroma:authenticate", token: token.token} |> Jason.encode!() + ) - Process.sleep(30) - end) + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "pleroma:authenticate", "result" => "success"} + }} = decode_json(raw_json) + + WebsocketClient.send_text(pid, %{type: "subscribe", stream: "user"} |> Jason.encode!()) + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "subscribe", "result" => "success"} + }} = decode_json(raw_json) + end + + test "rejects invalid token on client-sent event" do + assert {:ok, pid} = start_socket() + + WebsocketClient.send_text( + pid, + %{type: "pleroma:authenticate", token: "Something else"} |> Jason.encode!() + ) + + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{ + "type" => "pleroma:authenticate", + "result" => "error", + "error" => "unauthorized" + } + }} = decode_json(raw_json) + end + + test "rejects new authenticate request if already logged-in", %{token: token} do + assert {:ok, pid} = start_socket() + + WebsocketClient.send_text( + pid, + %{type: "pleroma:authenticate", token: token.token} |> Jason.encode!() + ) + + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "pleroma:authenticate", "result" => "success"} + }} = decode_json(raw_json) + + WebsocketClient.send_text( + pid, + %{type: "pleroma:authenticate", token: "Something else"} |> Jason.encode!() + ) + + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{ + "type" => "pleroma:authenticate", + "result" => "error", + "error" => "already_authenticated" + } + }} = decode_json(raw_json) + end + + test "accepts the 'list' stream", %{token: token, user: user} do + posting_user = insert(:user) + + {:ok, list} = Pleroma.List.create("test", user) + Pleroma.List.follow(list, posting_user) + + assert {:ok, _} = start_socket("?stream=list&access_token=#{token.token}&list=#{list.id}") + + assert {:ok, pid} = start_socket("?access_token=#{token.token}") + + WebsocketClient.send_text( + pid, + %{type: "subscribe", stream: "list", list: list.id} |> Jason.encode!() + ) + + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "subscribe", "result" => "success"} + }} = decode_json(raw_json) + + WebsocketClient.send_text( + pid, + %{type: "subscribe", stream: "list", list: to_string(list.id)} |> Jason.encode!() + ) + + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "pleroma:respond", + "payload" => %{"type" => "subscribe", "result" => "ignored"} + }} = decode_json(raw_json) end test "disconnect when token is revoked", %{app: app, user: user, token: token} do @@ -146,5 +401,85 @@ defmodule Pleroma.Integration.MastodonWebsocketTest do assert_receive {:close, _} refute_receive {:close, _} end + + test "receives private statuses", %{user: reading_user, token: token} do + user = insert(:user) + CommonAPI.follow(reading_user, user) + + {:ok, _} = start_socket("?stream=user&access_token=#{token.token}") + + {:ok, activity} = + CommonAPI.post(user, %{status: "nice echo chamber", visibility: "private"}) + + assert_receive {:text, raw_json}, 1_000 + assert {:ok, json} = Jason.decode(raw_json) + + assert "update" == json["event"] + assert json["payload"] + assert {:ok, json} = Jason.decode(json["payload"]) + + view_json = + Pleroma.Web.MastodonAPI.StatusView.render("show.json", + activity: activity, + for: reading_user + ) + |> Jason.encode!() + |> Jason.decode!() + + assert json == view_json + end + + test "receives edits", %{user: reading_user, token: token} do + user = insert(:user) + CommonAPI.follow(reading_user, user) + + {:ok, _} = start_socket("?stream=user&access_token=#{token.token}") + + {:ok, activity} = + CommonAPI.post(user, %{status: "nice echo chamber", visibility: "private"}) + + assert_receive {:text, _raw_json}, 1_000 + + {:ok, _} = CommonAPI.update(user, activity, %{status: "mew mew", visibility: "private"}) + + assert_receive {:text, raw_json}, 1_000 + + activity = Pleroma.Activity.normalize(activity) + + view_json = + Pleroma.Web.MastodonAPI.StatusView.render("show.json", + activity: activity, + for: reading_user + ) + |> Jason.encode!() + |> Jason.decode!() + + assert {:ok, %{"event" => "status.update", "payload" => ^view_json}} = decode_json(raw_json) + end + + test "receives notifications", %{user: reading_user, token: token} do + user = insert(:user) + CommonAPI.follow(reading_user, user) + + {:ok, _} = start_socket("?stream=user:notification&access_token=#{token.token}") + + {:ok, %Pleroma.Activity{id: activity_id} = _activity} = + CommonAPI.post(user, %{ + status: "nice echo chamber @#{reading_user.nickname}", + visibility: "private" + }) + + assert_receive {:text, raw_json}, 1_000 + + assert {:ok, + %{ + "event" => "notification", + "payload" => %{ + "status" => %{ + "id" => ^activity_id + } + } + }} = decode_json(raw_json) + end end end diff --git a/test/pleroma/maps_test.exs b/test/pleroma/maps_test.exs @@ -0,0 +1,22 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.MapsTest do + use Pleroma.DataCase, async: true + + alias Pleroma.Maps + + describe "filter_empty_values/1" do + assert %{"bar" => "b", "ray" => ["foo"], "objs" => %{"a" => "b"}} == + Maps.filter_empty_values(%{ + "foo" => nil, + "fooz" => "", + "bar" => "b", + "rei" => [], + "ray" => ["foo"], + "obj" => %{}, + "objs" => %{"a" => "b"} + }) + end +end diff --git a/test/pleroma/mfa/totp_test.exs b/test/pleroma/mfa/totp_test.exs @@ -7,6 +7,8 @@ defmodule Pleroma.MFA.TOTPTest do alias Pleroma.MFA.TOTP + import Pleroma.Tests.Helpers, only: [uri_equal?: 2] + test "create provisioning_uri to generate qrcode" do uri = TOTP.provisioning_uri("test-secrcet", "test@example.com", @@ -15,7 +17,9 @@ defmodule Pleroma.MFA.TOTPTest do period: 60 ) - assert uri == + assert uri_equal?( + uri, "otpauth://totp/test@example.com?digits=8&issuer=Plerome-42&period=60&secret=test-secrcet" + ) end end diff --git a/test/pleroma/notification_test.exs b/test/pleroma/notification_test.exs @@ -6,7 +6,6 @@ defmodule Pleroma.NotificationTest do use Pleroma.DataCase, async: false import Pleroma.Factory - import Mock alias Pleroma.FollowingRelationship alias Pleroma.Notification @@ -18,8 +17,11 @@ defmodule Pleroma.NotificationTest do alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.NotificationView - alias Pleroma.Web.Push - alias Pleroma.Web.Streamer + + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end describe "create_notifications" do test "never returns nil" do @@ -110,6 +112,7 @@ defmodule Pleroma.NotificationTest do {:ok, [notification]} = Notification.create_notifications(status) assert notification.user_id == subscriber.id + assert notification.type == "status" end test "does not create a notification for subscribed users if status is a reply" do @@ -134,6 +137,21 @@ defmodule Pleroma.NotificationTest do assert Enum.empty?(subscriber_notifications) end + test "does not create subscriber notification if mentioned" do + user = insert(:user) + subscriber = insert(:user) + + User.subscribe(subscriber, user) + + {:ok, status} = CommonAPI.post(user, %{status: "mentioning @#{subscriber.nickname}"}) + {:ok, [notification] = notifications} = Notification.create_notifications(status) + + assert length(notifications) == 1 + + assert notification.user_id == subscriber.id + assert notification.type == "mention" + end + test "it sends edited notifications to those who repeated a status" do user = insert(:user) repeated_user = insert(:user) @@ -170,158 +188,7 @@ defmodule Pleroma.NotificationTest do assert [user2.id, user3.id, user1.id] == Enum.map(notifications, & &1.user_id) end - describe "CommonApi.post/2 notification-related functionality" do - test_with_mock "creates but does NOT send notification to blocker user", - Push, - [:passthrough], - [] do - user = insert(:user) - blocker = insert(:user) - {:ok, _user_relationship} = User.block(blocker, user) - - {:ok, _activity} = CommonAPI.post(user, %{status: "hey @#{blocker.nickname}!"}) - - blocker_id = blocker.id - assert [%Notification{user_id: ^blocker_id}] = Repo.all(Notification) - refute called(Push.send(:_)) - end - - test_with_mock "creates but does NOT send notification to notification-muter user", - Push, - [:passthrough], - [] do - user = insert(:user) - muter = insert(:user) - {:ok, _user_relationships} = User.mute(muter, user) - - {:ok, _activity} = CommonAPI.post(user, %{status: "hey @#{muter.nickname}!"}) - - muter_id = muter.id - assert [%Notification{user_id: ^muter_id}] = Repo.all(Notification) - refute called(Push.send(:_)) - end - - test_with_mock "creates but does NOT send notification to thread-muter user", - Push, - [:passthrough], - [] do - user = insert(:user) - thread_muter = insert(:user) - - {:ok, activity} = CommonAPI.post(user, %{status: "hey @#{thread_muter.nickname}!"}) - - {:ok, _} = CommonAPI.add_mute(thread_muter, activity) - - {:ok, _same_context_activity} = - CommonAPI.post(user, %{ - status: "hey-hey-hey @#{thread_muter.nickname}!", - in_reply_to_status_id: activity.id - }) - - [pre_mute_notification, post_mute_notification] = - Repo.all(from(n in Notification, where: n.user_id == ^thread_muter.id, order_by: n.id)) - - pre_mute_notification_id = pre_mute_notification.id - post_mute_notification_id = post_mute_notification.id - - assert called( - Push.send( - :meck.is(fn - %Notification{id: ^pre_mute_notification_id} -> true - _ -> false - end) - ) - ) - - refute called( - Push.send( - :meck.is(fn - %Notification{id: ^post_mute_notification_id} -> true - _ -> false - end) - ) - ) - end - end - describe "create_notification" do - @tag needs_streamer: true - test "it creates a notification for user and send to the 'user' and the 'user:notification' stream" do - %{user: user, token: oauth_token} = oauth_access(["read"]) - - task = - Task.async(fn -> - {:ok, _topic} = Streamer.get_topic_and_add_socket("user", user, oauth_token) - assert_receive {:render_with_user, _, _, _}, 4_000 - end) - - task_user_notification = - Task.async(fn -> - {:ok, _topic} = - Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) - - assert_receive {:render_with_user, _, _, _}, 4_000 - end) - - activity = insert(:note_activity) - - notify = Notification.create_notification(activity, user) - assert notify.user_id == user.id - Task.await(task) - Task.await(task_user_notification) - end - - test "it creates a notification for user if the user blocks the activity author" do - activity = insert(:note_activity) - author = User.get_cached_by_ap_id(activity.data["actor"]) - user = insert(:user) - {:ok, _user_relationship} = User.block(user, author) - - assert Notification.create_notification(activity, user) - end - - test "it creates a notification for the user if the user mutes the activity author" do - muter = insert(:user) - muted = insert(:user) - {:ok, _} = User.mute(muter, muted) - muter = Repo.get(User, muter.id) - {:ok, activity} = CommonAPI.post(muted, %{status: "Hi @#{muter.nickname}"}) - - notification = Notification.create_notification(activity, muter) - - assert notification.id - assert notification.seen - end - - test "notification created if user is muted without notifications" do - muter = insert(:user) - muted = insert(:user) - - {:ok, _user_relationships} = User.mute(muter, muted, %{notifications: false}) - - {:ok, activity} = CommonAPI.post(muted, %{status: "Hi @#{muter.nickname}"}) - - assert Notification.create_notification(activity, muter) - end - - test "it creates a notification for an activity from a muted thread" do - muter = insert(:user) - other_user = insert(:user) - {:ok, activity} = CommonAPI.post(muter, %{status: "hey"}) - CommonAPI.add_mute(muter, activity) - - {:ok, activity} = - CommonAPI.post(other_user, %{ - status: "Hi @#{muter.nickname}", - in_reply_to_status_id: activity.id - }) - - notification = Notification.create_notification(activity, muter) - - assert notification.id - assert notification.seen - end - test "it disables notifications from strangers" do follower = insert(:user) @@ -598,9 +465,7 @@ defmodule Pleroma.NotificationTest do status: "hey yet again @#{other_user.nickname}!" }) - [_, read_notification] = Notification.set_read_up_to(other_user, n2.id) - - assert read_notification.activity.object + Notification.set_read_up_to(other_user, n2.id) [n3, n2, n1] = Notification.for_user(other_user) @@ -675,7 +540,7 @@ defmodule Pleroma.NotificationTest do status: "hey @#{other_user.nickname}!" }) - {enabled_receivers, _disabled_receivers} = Notification.get_notified_from_activity(activity) + enabled_receivers = Notification.get_notified_from_activity(activity) assert other_user in enabled_receivers end @@ -707,7 +572,7 @@ defmodule Pleroma.NotificationTest do {:ok, activity} = Transmogrifier.handle_incoming(create_activity) - {enabled_receivers, _disabled_receivers} = Notification.get_notified_from_activity(activity) + enabled_receivers = Notification.get_notified_from_activity(activity) assert other_user in enabled_receivers end @@ -734,7 +599,7 @@ defmodule Pleroma.NotificationTest do {:ok, activity} = Transmogrifier.handle_incoming(create_activity) - {enabled_receivers, _disabled_receivers} = Notification.get_notified_from_activity(activity) + enabled_receivers = Notification.get_notified_from_activity(activity) assert other_user not in enabled_receivers end @@ -751,8 +616,7 @@ defmodule Pleroma.NotificationTest do {:ok, activity_two} = CommonAPI.favorite(third_user, activity_one.id) - {enabled_receivers, _disabled_receivers} = - Notification.get_notified_from_activity(activity_two) + enabled_receivers = Notification.get_notified_from_activity(activity_two) assert other_user not in enabled_receivers end @@ -774,7 +638,7 @@ defmodule Pleroma.NotificationTest do |> Map.put("to", [other_user.ap_id | like_data["to"]]) |> ActivityPub.persist(local: true) - {enabled_receivers, _disabled_receivers} = Notification.get_notified_from_activity(like) + enabled_receivers = Notification.get_notified_from_activity(like) assert other_user not in enabled_receivers end @@ -791,39 +655,36 @@ defmodule Pleroma.NotificationTest do {:ok, activity_two} = CommonAPI.repeat(activity_one.id, third_user) - {enabled_receivers, _disabled_receivers} = - Notification.get_notified_from_activity(activity_two) + enabled_receivers = Notification.get_notified_from_activity(activity_two) assert other_user not in enabled_receivers end - test "it returns blocking recipient in disabled recipients list" do + test "it does not return blocking recipient in recipients list" do user = insert(:user) other_user = insert(:user) {:ok, _user_relationship} = User.block(other_user, user) {:ok, activity} = CommonAPI.post(user, %{status: "hey @#{other_user.nickname}!"}) - {enabled_receivers, disabled_receivers} = Notification.get_notified_from_activity(activity) + enabled_receivers = Notification.get_notified_from_activity(activity) assert [] == enabled_receivers - assert [other_user] == disabled_receivers end - test "it returns notification-muting recipient in disabled recipients list" do + test "it does not return notification-muting recipient in recipients list" do user = insert(:user) other_user = insert(:user) {:ok, _user_relationships} = User.mute(other_user, user) {:ok, activity} = CommonAPI.post(user, %{status: "hey @#{other_user.nickname}!"}) - {enabled_receivers, disabled_receivers} = Notification.get_notified_from_activity(activity) + enabled_receivers = Notification.get_notified_from_activity(activity) assert [] == enabled_receivers - assert [other_user] == disabled_receivers end - test "it returns thread-muting recipient in disabled recipients list" do + test "it does not return thread-muting recipient in recipients list" do user = insert(:user) other_user = insert(:user) @@ -837,14 +698,12 @@ defmodule Pleroma.NotificationTest do in_reply_to_status_id: activity.id }) - {enabled_receivers, disabled_receivers} = - Notification.get_notified_from_activity(same_context_activity) + enabled_receivers = Notification.get_notified_from_activity(same_context_activity) - assert [other_user] == disabled_receivers refute other_user in enabled_receivers end - test "it returns non-following domain-blocking recipient in disabled recipients list" do + test "it does not return non-following domain-blocking recipient in recipients list" do blocked_domain = "blocked.domain" user = insert(:user, %{ap_id: "https://#{blocked_domain}/@actor"}) other_user = insert(:user) @@ -853,10 +712,9 @@ defmodule Pleroma.NotificationTest do {:ok, activity} = CommonAPI.post(user, %{status: "hey @#{other_user.nickname}!"}) - {enabled_receivers, disabled_receivers} = Notification.get_notified_from_activity(activity) + enabled_receivers = Notification.get_notified_from_activity(activity) assert [] == enabled_receivers - assert [other_user] == disabled_receivers end test "it returns following domain-blocking recipient in enabled recipients list" do @@ -869,10 +727,9 @@ defmodule Pleroma.NotificationTest do {:ok, activity} = CommonAPI.post(user, %{status: "hey @#{other_user.nickname}!"}) - {enabled_receivers, disabled_receivers} = Notification.get_notified_from_activity(activity) + enabled_receivers = Notification.get_notified_from_activity(activity) assert [other_user] == enabled_receivers - assert [] == disabled_receivers end test "it sends edited notifications to those who repeated a status" do @@ -892,11 +749,10 @@ defmodule Pleroma.NotificationTest do status: "hey @#{other_user.nickname}! mew mew" }) - {enabled_receivers, _disabled_receivers} = - Notification.get_notified_from_activity(edit_activity) + enabled_receivers = Notification.get_notified_from_activity(edit_activity) assert repeated_user in enabled_receivers - assert other_user not in enabled_receivers + refute other_user in enabled_receivers end end @@ -1003,22 +859,6 @@ defmodule Pleroma.NotificationTest do assert Enum.empty?(Notification.for_user(user)) end - test "replying to a deleted post without tagging does not generate a notification" do - user = insert(:user) - other_user = insert(:user) - - {:ok, activity} = CommonAPI.post(user, %{status: "test post"}) - {:ok, _deletion_activity} = CommonAPI.delete(activity.id, user) - - {:ok, _reply_activity} = - CommonAPI.post(other_user, %{ - status: "test reply", - in_reply_to_status_id: activity.id - }) - - assert Enum.empty?(Notification.for_user(user)) - end - test "notifications are deleted if a local user is deleted" do user = insert(:user) other_user = insert(:user) @@ -1184,13 +1024,13 @@ defmodule Pleroma.NotificationTest do assert Notification.for_user(user) == [] end - test "it returns notifications from a muted user when with_muted is set", %{user: user} do + test "it doesn't return notifications from a muted user when with_muted is set", %{user: user} do muted = insert(:user) {:ok, _user_relationships} = User.mute(user, muted) {:ok, _activity} = CommonAPI.post(muted, %{status: "hey @#{user.nickname}"}) - assert length(Notification.for_user(user, %{with_muted: true})) == 1 + assert Enum.empty?(Notification.for_user(user, %{with_muted: true})) end test "it doesn't return notifications from a blocked user when with_muted is set", %{ diff --git a/test/pleroma/object/fetcher_test.exs b/test/pleroma/object/fetcher_test.exs @@ -9,8 +9,12 @@ defmodule Pleroma.Object.FetcherTest do alias Pleroma.Instances alias Pleroma.Object alias Pleroma.Object.Fetcher + alias Pleroma.Web.ActivityPub.ObjectValidator + + require Pleroma.Constants import Mock + import Pleroma.Factory import Tesla.Mock setup do @@ -97,8 +101,7 @@ defmodule Pleroma.Object.FetcherTest do test "it returns thread depth exceeded error if thread depth is exceeded" do clear_config([:instance, :federation_incoming_replies_max_depth], 0) - assert {:error, "Max thread distance exceeded."} = - Fetcher.fetch_object_from_id(@ap_id, depth: 1) + assert {:error, :allowed_depth} = Fetcher.fetch_object_from_id(@ap_id, depth: 1) end test "it fetches object if max thread depth is restricted to 0 and depth is not specified" do @@ -216,14 +219,14 @@ defmodule Pleroma.Object.FetcherTest do end test "handle HTTP 410 Gone response" do - assert {:error, "Object has been deleted"} == + assert {:error, :not_found} == Fetcher.fetch_and_contain_remote_object_from_id( "https://mastodon.example.org/users/userisgone" ) end test "handle HTTP 404 response" do - assert {:error, "Object has been deleted"} == + assert {:error, :not_found} == Fetcher.fetch_and_contain_remote_object_from_id( "https://mastodon.example.org/users/userisgone404" ) @@ -284,6 +287,8 @@ defmodule Pleroma.Object.FetcherTest do describe "refetching" do setup do + insert(:user, ap_id: "https://mastodon.social/users/emelie") + object1 = %{ "id" => "https://mastodon.social/1", "actor" => "https://mastodon.social/users/emelie", @@ -293,10 +298,14 @@ defmodule Pleroma.Object.FetcherTest do "bcc" => [], "bto" => [], "cc" => [], - "to" => [], - "summary" => "" + "to" => [Pleroma.Constants.as_public()], + "summary" => "", + "published" => "2023-05-08 23:43:20Z", + "updated" => "2023-05-09 23:43:20Z" } + {:ok, local_object1, _} = ObjectValidator.validate(object1, []) + object2 = %{ "id" => "https://mastodon.social/2", "actor" => "https://mastodon.social/users/emelie", @@ -306,8 +315,10 @@ defmodule Pleroma.Object.FetcherTest do "bcc" => [], "bto" => [], "cc" => [], - "to" => [], + "to" => [Pleroma.Constants.as_public()], "summary" => "", + "published" => "2023-05-08 23:43:20Z", + "updated" => "2023-05-09 23:43:25Z", "formerRepresentations" => %{ "type" => "OrderedCollection", "orderedItems" => [ @@ -319,14 +330,18 @@ defmodule Pleroma.Object.FetcherTest do "bcc" => [], "bto" => [], "cc" => [], - "to" => [], - "summary" => "" + "to" => [Pleroma.Constants.as_public()], + "summary" => "", + "published" => "2023-05-08 23:43:20Z", + "updated" => "2023-05-09 23:43:21Z" } ], "totalItems" => 1 } } + {:ok, local_object2, _} = ObjectValidator.validate(object2, []) + mock(fn %{ method: :get, @@ -335,7 +350,7 @@ defmodule Pleroma.Object.FetcherTest do %Tesla.Env{ status: 200, headers: [{"content-type", "application/activity+json"}], - body: Jason.encode!(object1) + body: Jason.encode!(object1 |> Map.put("updated", "2023-05-09 23:44:20Z")) } %{ @@ -345,7 +360,7 @@ defmodule Pleroma.Object.FetcherTest do %Tesla.Env{ status: 200, headers: [{"content-type", "application/activity+json"}], - body: Jason.encode!(object2) + body: Jason.encode!(object2 |> Map.put("updated", "2023-05-09 23:44:20Z")) } %{ @@ -370,7 +385,7 @@ defmodule Pleroma.Object.FetcherTest do apply(HttpRequestMock, :request, [env]) end) - %{object1: object1, object2: object2} + %{object1: local_object1, object2: local_object2} end test "it keeps formerRepresentations if remote does not have this attr", %{object1: object1} do @@ -388,8 +403,9 @@ defmodule Pleroma.Object.FetcherTest do "bcc" => [], "bto" => [], "cc" => [], - "to" => [], - "summary" => "" + "to" => [Pleroma.Constants.as_public()], + "summary" => "", + "published" => "2023-05-08 23:43:20Z" } ], "totalItems" => 1 @@ -467,6 +483,53 @@ defmodule Pleroma.Object.FetcherTest do } } = refetched.data end + + test "it keeps the history intact if only updated time has changed", + %{object1: object1} do + full_object1 = + object1 + |> Map.merge(%{ + "updated" => "2023-05-08 23:43:47Z", + "formerRepresentations" => %{ + "type" => "OrderedCollection", + "orderedItems" => [ + %{"type" => "Note", "content" => "mew mew 1"} + ], + "totalItems" => 1 + } + }) + + {:ok, o} = Object.create(full_object1) + + assert {:ok, refetched} = Fetcher.refetch_object(o) + + assert %{ + "content" => "test 1", + "formerRepresentations" => %{ + "orderedItems" => [ + %{"content" => "mew mew 1"} + ], + "totalItems" => 1 + } + } = refetched.data + end + + test "it goes through ObjectValidator and MRF", %{object2: object2} do + with_mock Pleroma.Web.ActivityPub.MRF, [:passthrough], + filter: fn + %{"type" => "Note"} = object -> + {:ok, Map.put(object, "content", "MRFd content")} + + arg -> + passthrough([arg]) + end do + {:ok, o} = Object.create(object2) + + assert {:ok, refetched} = Fetcher.refetch_object(o) + + assert %{"content" => "MRFd content"} = refetched.data + end + end end describe "fetch with history" do diff --git a/test/pleroma/object_test.exs b/test/pleroma/object_test.exs @@ -7,6 +7,7 @@ defmodule Pleroma.ObjectTest do use Oban.Testing, repo: Pleroma.Repo import ExUnit.CaptureLog + import Mox import Pleroma.Factory import Tesla.Mock @@ -15,10 +16,12 @@ defmodule Pleroma.ObjectTest do alias Pleroma.Object alias Pleroma.Repo alias Pleroma.Tests.ObanHelpers + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Web.CommonAPI setup do mock(fn env -> apply(HttpRequestMock, :request, [env]) end) + ConfigMock |> stub_with(Pleroma.Test.StaticConfig) :ok end @@ -444,4 +447,42 @@ defmodule Pleroma.ObjectTest do Enum.sort_by(object.hashtags, & &1.name) end end + + describe "get_emoji_reactions/1" do + test "3-tuple current format" do + object = %Object{ + data: %{ + "reactions" => [ + ["x", ["https://some/user"], "https://some/emoji"] + ] + } + } + + assert Object.get_emoji_reactions(object) == object.data["reactions"] + end + + test "2-tuple legacy format" do + object = %Object{ + data: %{ + "reactions" => [ + ["x", ["https://some/user"]] + ] + } + } + + assert Object.get_emoji_reactions(object) == [["x", ["https://some/user"], nil]] + end + + test "Map format" do + object = %Object{ + data: %{ + "reactions" => %{ + "x" => ["https://some/user"] + } + } + } + + assert Object.get_emoji_reactions(object) == [["x", ["https://some/user"], nil]] + end + end end diff --git a/test/pleroma/otp_version_test.exs b/test/pleroma/otp_version_test.exs @@ -28,7 +28,7 @@ defmodule Pleroma.OTPVersionTest do "23.0" end - test "with non existance file" do + test "with nonexistent file" do assert OTPVersion.get_version_from_files([ "test/fixtures/warnings/otp_version/non-exising", "test/fixtures/warnings/otp_version/22.4" diff --git a/test/pleroma/repo/migrations/autolinker_to_linkify_test.exs b/test/pleroma/repo/migrations/autolinker_to_linkify_test.exs @@ -29,13 +29,13 @@ defmodule Pleroma.Repo.Migrations.AutolinkerToLinkifyTest do %{value: new_opts} = ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Formatter}) - assert new_opts == [ + assert Keyword.equal?(new_opts, class: false, extra: true, new_window: false, rel: "testing", strip_prefix: false - ] + ) clear_config(Pleroma.Formatter, new_opts) assert new_opts == Pleroma.Config.get(Pleroma.Formatter) @@ -67,6 +67,6 @@ defmodule Pleroma.Repo.Migrations.AutolinkerToLinkifyTest do strip_prefix: false ] - assert migration.transform_opts(old_opts) == expected_opts + assert Keyword.equal?(migration.transform_opts(old_opts), expected_opts) end end diff --git a/test/pleroma/repo/migrations/fix_malformed_formatter_config_test.exs b/test/pleroma/repo/migrations/fix_malformed_formatter_config_test.exs @@ -26,13 +26,13 @@ defmodule Pleroma.Repo.Migrations.FixMalformedFormatterConfigTest do %{value: new_opts} = ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.Formatter}) - assert new_opts == [ + assert Keyword.equal?(new_opts, class: false, extra: true, new_window: false, rel: "F", strip_prefix: false - ] + ) clear_config(Pleroma.Formatter, new_opts) assert new_opts == Pleroma.Config.get(Pleroma.Formatter) diff --git a/test/pleroma/reverse_proxy_test.exs b/test/pleroma/reverse_proxy_test.exs @@ -306,7 +306,7 @@ defmodule Pleroma.ReverseProxyTest do end describe "response content disposition header" do - test "not atachment", %{conn: conn} do + test "not attachment", %{conn: conn} do disposition_headers_mock([ {"content-type", "image/gif"}, {"content-length", "0"} diff --git a/test/pleroma/rule_test.exs b/test/pleroma/rule_test.exs @@ -0,0 +1,57 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.RuleTest do + use Pleroma.DataCase, async: true + + alias Pleroma.Repo + alias Pleroma.Rule + + test "getting a list of rules sorted by priority" do + %{id: id1} = Rule.create(%{text: "Example rule"}) + %{id: id2} = Rule.create(%{text: "Second rule", priority: 2}) + %{id: id3} = Rule.create(%{text: "Third rule", priority: 1}) + + rules = + Rule.query() + |> Repo.all() + + assert [%{id: ^id1}, %{id: ^id3}, %{id: ^id2}] = rules + end + + test "creating rules" do + %{id: id} = Rule.create(%{text: "Example rule"}) + + assert %{text: "Example rule"} = Rule.get(id) + end + + test "editing rules" do + %{id: id} = Rule.create(%{text: "Example rule"}) + + Rule.update(%{text: "There are no rules", priority: 2}, id) + + assert %{text: "There are no rules", priority: 2} = Rule.get(id) + end + + test "deleting rules" do + %{id: id} = Rule.create(%{text: "Example rule"}) + + Rule.delete(id) + + assert [] = + Rule.query() + |> Pleroma.Repo.all() + end + + test "getting rules by ids" do + %{id: id1} = Rule.create(%{text: "Example rule"}) + %{id: id2} = Rule.create(%{text: "Second rule"}) + %{id: _id3} = Rule.create(%{text: "Third rule"}) + + rules = Rule.get([id1, id2]) + + assert Enum.all?(rules, &(&1.id in [id1, id2])) + assert length(rules) == 2 + end +end diff --git a/test/pleroma/scheduled_activity_test.exs b/test/pleroma/scheduled_activity_test.exs @@ -3,19 +3,23 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.ScheduledActivityTest do - use Pleroma.DataCase + use Pleroma.DataCase, async: true alias Pleroma.ScheduledActivity + alias Pleroma.Test.StaticConfig + alias Pleroma.UnstubbedConfigMock, as: ConfigMock + import Mox import Pleroma.Factory - setup do: clear_config([ScheduledActivity, :enabled]) - - setup [:ensure_local_uploader] - describe "creation" do test "scheduled activities with jobs when ScheduledActivity enabled" do - clear_config([ScheduledActivity, :enabled], true) + ConfigMock + |> stub(:get, fn + [ScheduledActivity, :enabled] -> true + path -> StaticConfig.get(path) + end) + user = insert(:user) today = @@ -34,7 +38,12 @@ defmodule Pleroma.ScheduledActivityTest do end test "scheduled activities without jobs when ScheduledActivity disabled" do - clear_config([ScheduledActivity, :enabled], false) + ConfigMock + |> stub(:get, fn + [ScheduledActivity, :enabled] -> false + path -> StaticConfig.get(path) + end) + user = insert(:user) today = @@ -53,6 +62,9 @@ defmodule Pleroma.ScheduledActivityTest do end test "when daily user limit is exceeded" do + ConfigMock + |> stub_with(StaticConfig) + user = insert(:user) today = @@ -69,6 +81,9 @@ defmodule Pleroma.ScheduledActivityTest do end test "when total user limit is exceeded" do + ConfigMock + |> stub_with(StaticConfig) + user = insert(:user) today = @@ -89,6 +104,9 @@ defmodule Pleroma.ScheduledActivityTest do end test "when scheduled_at is earlier than 5 minute from now" do + ConfigMock + |> stub_with(StaticConfig) + user = insert(:user) scheduled_at = diff --git a/test/pleroma/search/database_search_test.exs b/test/pleroma/search/database_search_test.exs @@ -0,0 +1,47 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Search.DatabaseSearchTest do + alias Pleroma.Search.DatabaseSearch, as: Search + alias Pleroma.Web.CommonAPI + import Pleroma.Factory + + use Pleroma.DataCase, async: true + + test "it finds something" do + user = insert(:user) + {:ok, post} = CommonAPI.post(user, %{status: "it's wednesday my dudes"}) + + [result] = Search.search(nil, "wednesday") + + assert result.id == post.id + end + + test "it finds local-only posts for authenticated users" do + user = insert(:user) + reader = insert(:user) + {:ok, post} = CommonAPI.post(user, %{status: "it's wednesday my dudes", visibility: "local"}) + + [result] = Search.search(reader, "wednesday") + + assert result.id == post.id + end + + test "it does not find local-only posts for anonymous users" do + user = insert(:user) + {:ok, _post} = CommonAPI.post(user, %{status: "it's wednesday my dudes", visibility: "local"}) + + assert [] = Search.search(nil, "wednesday") + end + + test "using websearch_to_tsquery" do + user = insert(:user) + {:ok, _post} = CommonAPI.post(user, %{status: "it's wednesday my dudes"}) + {:ok, other_post} = CommonAPI.post(user, %{status: "it's wednesday my bros"}) + + assert [result] = Search.search(nil, "wednesday -dudes") + + assert result.id == other_post.id + end +end diff --git a/test/pleroma/search/healthcheck_test.exs b/test/pleroma/search/healthcheck_test.exs @@ -0,0 +1,49 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Search.HealthcheckTest do + use Pleroma.DataCase + + import Tesla.Mock + + alias Pleroma.Search.Healthcheck + + @good1 "http://good1.example.com/healthz" + @good2 "http://good2.example.com/health" + @bad "http://bad.example.com/healthy" + + setup do + mock(fn + %{method: :get, url: @good1} -> + %Tesla.Env{ + status: 200, + body: "" + } + + %{method: :get, url: @good2} -> + %Tesla.Env{ + status: 200, + body: "" + } + + %{method: :get, url: @bad} -> + %Tesla.Env{ + status: 503, + body: "" + } + end) + + :ok + end + + test "true for 200 responses" do + assert Healthcheck.check([@good1]) + assert Healthcheck.check([@good1, @good2]) + end + + test "false if any response is not a 200" do + refute Healthcheck.check([@bad]) + refute Healthcheck.check([@good1, @bad]) + end +end diff --git a/test/pleroma/search/meilisearch_test.exs b/test/pleroma/search/meilisearch_test.exs @@ -0,0 +1,160 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Search.MeilisearchTest do + require Pleroma.Constants + + use Pleroma.DataCase, async: true + use Oban.Testing, repo: Pleroma.Repo + + import Pleroma.Factory + import Tesla.Mock + import Mox + + alias Pleroma.Search.Meilisearch + alias Pleroma.UnstubbedConfigMock, as: Config + alias Pleroma.Web.CommonAPI + alias Pleroma.Workers.SearchIndexingWorker + + describe "meilisearch" do + test "indexes a local post on creation" do + user = insert(:user) + + Tesla.Mock.mock(fn + %{ + method: :put, + url: "http://127.0.0.1:7700/indexes/objects/documents", + body: body + } -> + assert match?( + [%{"content" => "guys i just don&#39;t wanna leave the swamp"}], + Jason.decode!(body) + ) + + # To make sure that the worker is called + send(self(), "posted_to_meilisearch") + + %{ + "enqueuedAt" => "2023-11-12T12:36:46.927517Z", + "indexUid" => "objects", + "status" => "enqueued", + "taskUid" => 6, + "type" => "documentAdditionOrUpdate" + } + |> json() + end) + + Config + |> expect(:get, 3, fn + [Pleroma.Search, :module], nil -> + Meilisearch + + [Pleroma.Search.Meilisearch, :url], nil -> + "http://127.0.0.1:7700" + + [Pleroma.Search.Meilisearch, :private_key], nil -> + "secret" + end) + + {:ok, activity} = + CommonAPI.post(user, %{ + status: "guys i just don't wanna leave the swamp", + visibility: "public" + }) + + args = %{"op" => "add_to_index", "activity" => activity.id} + + assert_enqueued( + worker: SearchIndexingWorker, + args: args + ) + + assert :ok = perform_job(SearchIndexingWorker, args) + assert_received("posted_to_meilisearch") + end + + test "doesn't index posts that are not public" do + user = insert(:user) + + Enum.each(["private", "direct"], fn visibility -> + {:ok, activity} = + CommonAPI.post(user, %{ + status: "guys i just don't wanna leave the swamp", + visibility: visibility + }) + + args = %{"op" => "add_to_index", "activity" => activity.id} + + Config + |> expect(:get, fn + [Pleroma.Search, :module], nil -> + Meilisearch + end) + + assert_enqueued(worker: SearchIndexingWorker, args: args) + assert :ok = perform_job(SearchIndexingWorker, args) + end) + end + + test "deletes posts from index when deleted locally" do + user = insert(:user) + + Tesla.Mock.mock(fn + %{ + method: :put, + url: "http://127.0.0.1:7700/indexes/objects/documents", + body: body + } -> + assert match?( + [%{"content" => "guys i just don&#39;t wanna leave the swamp"}], + Jason.decode!(body) + ) + + %{ + "enqueuedAt" => "2023-11-12T12:36:46.927517Z", + "indexUid" => "objects", + "status" => "enqueued", + "taskUid" => 6, + "type" => "documentAdditionOrUpdate" + } + |> json() + + %{method: :delete, url: "http://127.0.0.1:7700/indexes/objects/documents/" <> id} -> + send(self(), "called_delete") + assert String.length(id) > 1 + json(%{}) + end) + + Config + |> expect(:get, 6, fn + [Pleroma.Search, :module], nil -> + Meilisearch + + [Pleroma.Search.Meilisearch, :url], nil -> + "http://127.0.0.1:7700" + + [Pleroma.Search.Meilisearch, :private_key], nil -> + "secret" + end) + + {:ok, activity} = + CommonAPI.post(user, %{ + status: "guys i just don't wanna leave the swamp", + visibility: "public" + }) + + args = %{"op" => "add_to_index", "activity" => activity.id} + assert_enqueued(worker: SearchIndexingWorker, args: args) + assert :ok = perform_job(SearchIndexingWorker, args) + + {:ok, _} = CommonAPI.delete(activity.id, user) + + delete_args = %{"op" => "remove_from_index", "object" => activity.object.id} + assert_enqueued(worker: SearchIndexingWorker, args: delete_args) + assert :ok = perform_job(SearchIndexingWorker, delete_args) + + assert_received("called_delete") + end + end +end diff --git a/test/pleroma/signature_test.exs b/test/pleroma/signature_test.exs @@ -43,10 +43,7 @@ defmodule Pleroma.SignatureTest do end test "it returns error when not found user" do - assert capture_log(fn -> - assert Signature.fetch_public_key(make_fake_conn("https://test-ap-id")) == - {:error, :error} - end) =~ "[error] Could not decode user" + assert Signature.fetch_public_key(make_fake_conn("https://test-ap-id")) == {:error, :error} end test "it returns error if public key is nil" do @@ -116,7 +113,7 @@ defmodule Pleroma.SignatureTest do test "it calls webfinger for 'acct:' accounts" do with_mock(Pleroma.Web.WebFinger, - finger: fn _ -> %{"ap_id" => "https://gensokyo.2hu/users/raymoo"} end + finger: fn _ -> {:ok, %{"ap_id" => "https://gensokyo.2hu/users/raymoo"}} end ) do assert Signature.key_id_to_actor_id("acct:raymoo@gensokyo.2hu") == {:ok, "https://gensokyo.2hu/users/raymoo"} diff --git a/test/pleroma/upload/filter/analyze_metadata_test.exs b/test/pleroma/upload/filter/analyze_metadata_test.exs @@ -20,6 +20,20 @@ defmodule Pleroma.Upload.Filter.AnalyzeMetadataTest do assert meta.blurhash end + test "it blurhashes images with an alpha component" do + upload = %Pleroma.Upload{ + name: "an… image.jpg", + content_type: "image/jpeg", + path: Path.absname("test/fixtures/png_with_transparency.png"), + tempfile: Path.absname("test/fixtures/png_with_transparency.png") + } + + {:ok, :filtered, meta} = AnalyzeMetadata.filter(upload) + + assert %{width: 320, height: 320} = meta + assert meta.blurhash == "eXJi-E:SwCEm5rCmn$+YWYn+15K#5A$xxCi{SiV]s*W:Efa#s.jE-T" + end + test "adds the dimensions for videos" do upload = %Pleroma.Upload{ name: "coolvideo.mp4", diff --git a/test/pleroma/upload/filter/exiftool/read_description_test.exs b/test/pleroma/upload/filter/exiftool/read_description_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Upload.Filter.Exiftool.ReadDescriptionTest do - use Pleroma.DataCase, async: true + use Pleroma.DataCase alias Pleroma.Upload.Filter @uploads %Pleroma.Upload{ diff --git a/test/pleroma/upload/filter/only_media_test.exs b/test/pleroma/upload/filter/only_media_test.exs @@ -0,0 +1,32 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Upload.Filter.OnlyMediaTest do + use Pleroma.DataCase, async: true + + alias Pleroma.Upload + alias Pleroma.Upload.Filter.OnlyMedia + + test "Allows media Content-Type" do + ["audio/mpeg", "image/jpeg", "video/mp4"] + |> Enum.each(fn type -> + upload = %Upload{ + content_type: type + } + + assert {:ok, :noop} = OnlyMedia.filter(upload) + end) + end + + test "Disallows non-media Content-Type" do + ["application/javascript", "application/pdf", "text/html"] + |> Enum.each(fn type -> + upload = %Upload{ + content_type: type + } + + assert {:error, _} = OnlyMedia.filter(upload) + end) + end +end diff --git a/test/pleroma/upload_test.exs b/test/pleroma/upload_test.exs @@ -6,10 +6,19 @@ defmodule Pleroma.UploadTest do use Pleroma.DataCase import ExUnit.CaptureLog + import Mox + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Upload alias Pleroma.Uploaders.Uploader + setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + :ok + end + @upload_file %Plug.Upload{ content_type: "image/jpeg", path: Path.absname("test/fixtures/image_tmp.jpg"), @@ -236,6 +245,8 @@ defmodule Pleroma.UploadTest do describe "Setting a custom base_url for uploaded media" do setup do: clear_config([Pleroma.Upload, :base_url], "https://cache.pleroma.social") + # This seems to be backwards. Skipped for that reason + @tag skip: true test "returns a media url with configured base_url" do base_url = Pleroma.Config.get([Pleroma.Upload, :base_url]) diff --git a/test/pleroma/uploaders/ipfs_test.exs b/test/pleroma/uploaders/ipfs_test.exs @@ -0,0 +1,158 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Uploaders.IPFSTest do + use Pleroma.DataCase + + alias Pleroma.Uploaders.IPFS + alias Tesla.Multipart + + import ExUnit.CaptureLog + import Mock + import Mox + + alias Pleroma.UnstubbedConfigMock, as: Config + + describe "get_final_url" do + setup do + Config + |> expect(:get, fn [Pleroma.Uploaders.IPFS] -> + [post_gateway_url: "http://localhost:5001"] + end) + + :ok + end + + test "it returns the final url for put_file" do + assert IPFS.put_file_endpoint() == "http://localhost:5001/api/v0/add" + end + + test "it returns the final url for delete_file" do + assert IPFS.delete_file_endpoint() == "http://localhost:5001/api/v0/files/rm" + end + end + + describe "get_file/1" do + setup do + Config + |> expect(:get, fn [Pleroma.Upload, :uploader] -> Pleroma.Uploaders.IPFS end) + |> expect(:get, fn [Pleroma.Upload, :base_url] -> nil end) + |> expect(:get, fn [Pleroma.Uploaders.IPFS, :public_endpoint] -> nil end) + + :ok + end + + test "it returns path to ipfs file with cid as subdomain" do + Config + |> expect(:get, fn [Pleroma.Uploaders.IPFS, :get_gateway_url] -> + "https://{CID}.ipfs.mydomain.com" + end) + + assert IPFS.get_file("testcid") == { + :ok, + {:url, "https://testcid.ipfs.mydomain.com"} + } + end + + test "it returns path to ipfs file with cid as path" do + Config + |> expect(:get, fn [Pleroma.Uploaders.IPFS, :get_gateway_url] -> + "https://ipfs.mydomain.com/ipfs/{CID}" + end) + + assert IPFS.get_file("testcid") == { + :ok, + {:url, "https://ipfs.mydomain.com/ipfs/testcid"} + } + end + end + + describe "put_file/1" do + setup do + Config + |> expect(:get, fn [Pleroma.Uploaders.IPFS] -> + [post_gateway_url: "http://localhost:5001"] + end) + + file_upload = %Pleroma.Upload{ + name: "image-tet.jpg", + content_type: "image/jpeg", + path: "test_folder/image-tet.jpg", + tempfile: Path.absname("test/instance_static/add/shortcode.png") + } + + mp = + Multipart.new() + |> Multipart.add_content_type_param("charset=utf-8") + |> Multipart.add_file(file_upload.tempfile) + + [file_upload: file_upload, mp: mp] + end + + test "save file", %{file_upload: file_upload} do + with_mock Pleroma.HTTP, + post: fn "http://localhost:5001/api/v0/add", _mp, [], params: ["cid-version": "1"] -> + {:ok, + %Tesla.Env{ + status: 200, + body: + "{\"Name\":\"image-tet.jpg\",\"Size\":\"5000\", \"Hash\":\"bafybeicrh7ltzx52yxcwrvxxckfmwhqdgsb6qym6dxqm2a4ymsakeshwoi\"}" + }} + end do + assert IPFS.put_file(file_upload) == + {:ok, {:file, "bafybeicrh7ltzx52yxcwrvxxckfmwhqdgsb6qym6dxqm2a4ymsakeshwoi"}} + end + end + + test "returns error", %{file_upload: file_upload} do + with_mock Pleroma.HTTP, + post: fn "http://localhost:5001/api/v0/add", _mp, [], params: ["cid-version": "1"] -> + {:error, "IPFS Gateway upload failed"} + end do + assert capture_log(fn -> + assert IPFS.put_file(file_upload) == {:error, "IPFS Gateway upload failed"} + end) =~ "Elixir.Pleroma.Uploaders.IPFS: {:error, \"IPFS Gateway upload failed\"}" + end + end + + test "returns error if JSON decode fails", %{file_upload: file_upload} do + with_mock Pleroma.HTTP, [], + post: fn "http://localhost:5001/api/v0/add", _mp, [], params: ["cid-version": "1"] -> + {:ok, %Tesla.Env{status: 200, body: "invalid"}} + end do + assert capture_log(fn -> + assert IPFS.put_file(file_upload) == {:error, "JSON decode failed"} + end) =~ + "Elixir.Pleroma.Uploaders.IPFS: {:error, %Jason.DecodeError" + end + end + + test "returns error if JSON body doesn't contain Hash key", %{file_upload: file_upload} do + with_mock Pleroma.HTTP, [], + post: fn "http://localhost:5001/api/v0/add", _mp, [], params: ["cid-version": "1"] -> + {:ok, %Tesla.Env{status: 200, body: "{\"key\": \"value\"}"}} + end do + assert IPFS.put_file(file_upload) == {:error, "JSON doesn't contain Hash key"} + end + end + end + + describe "delete_file/1" do + setup do + Config + |> expect(:get, fn [Pleroma.Uploaders.IPFS] -> + [post_gateway_url: "http://localhost:5001"] + end) + + :ok + end + + test_with_mock "deletes file", Pleroma.HTTP, + post: fn "http://localhost:5001/api/v0/files/rm", "", [], params: [arg: "image.jpg"] -> + {:ok, %{status: 204}} + end do + assert :ok = IPFS.delete_file("image.jpg") + end + end +end diff --git a/test/pleroma/uploaders/s3_test.exs b/test/pleroma/uploaders/s3_test.exs @@ -3,22 +3,27 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Uploaders.S3Test do - use Pleroma.DataCase + use Pleroma.DataCase, async: true + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Uploaders.S3 + alias Pleroma.Uploaders.S3.ExAwsMock - import Mock + import Mox import ExUnit.CaptureLog - setup do - clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.S3) - clear_config([Pleroma.Upload, :base_url], "https://s3.amazonaws.com") - clear_config([Pleroma.Uploaders.S3]) - clear_config([Pleroma.Uploaders.S3, :bucket], "test_bucket") - end - describe "get_file/1" do - test "it returns path to local folder for files" do + test "it returns url for files" do + ConfigMock + |> expect(:get, 6, fn key -> + [ + {Pleroma.Upload, + [uploader: Pleroma.Uploaders.S3, base_url: "https://s3.amazonaws.com"]}, + {Pleroma.Uploaders.S3, [bucket: "test_bucket"]} + ] + |> get_in(key) + end) + assert S3.get_file("test_image.jpg") == { :ok, {:url, "https://s3.amazonaws.com/test_bucket/test_image.jpg"} @@ -26,13 +31,16 @@ defmodule Pleroma.Uploaders.S3Test do end test "it returns path without bucket when truncated_namespace set to ''" do - clear_config([Pleroma.Uploaders.S3], - bucket: "test_bucket", - bucket_namespace: "myaccount", - truncated_namespace: "" - ) - - clear_config([Pleroma.Upload, :base_url], "https://s3.amazonaws.com") + ConfigMock + |> expect(:get, 6, fn key -> + [ + {Pleroma.Upload, + [uploader: Pleroma.Uploaders.S3, base_url: "https://s3.amazonaws.com"]}, + {Pleroma.Uploaders.S3, + [bucket: "test_bucket", truncated_namespace: "", bucket_namespace: "myaccount"]} + ] + |> get_in(key) + end) assert S3.get_file("test_image.jpg") == { :ok, @@ -41,10 +49,15 @@ defmodule Pleroma.Uploaders.S3Test do end test "it returns path with bucket namespace when namespace is set" do - clear_config([Pleroma.Uploaders.S3], - bucket: "test_bucket", - bucket_namespace: "family" - ) + ConfigMock + |> expect(:get, 6, fn key -> + [ + {Pleroma.Upload, + [uploader: Pleroma.Uploaders.S3, base_url: "https://s3.amazonaws.com"]}, + {Pleroma.Uploaders.S3, [bucket: "test_bucket", bucket_namespace: "family"]} + ] + |> get_in(key) + end) assert S3.get_file("test_image.jpg") == { :ok, @@ -62,28 +75,42 @@ defmodule Pleroma.Uploaders.S3Test do tempfile: Path.absname("test/instance_static/add/shortcode.png") } + ConfigMock + |> expect(:get, fn [Pleroma.Uploaders.S3] -> + [ + bucket: "test_bucket" + ] + end) + [file_upload: file_upload] end test "save file", %{file_upload: file_upload} do - with_mock ExAws, request: fn _ -> {:ok, :ok} end do - assert S3.put_file(file_upload) == {:ok, {:file, "test_folder/image-tet.jpg"}} - end + ExAwsMock + |> expect(:request, fn _req -> {:ok, %{status_code: 200}} end) + + assert S3.put_file(file_upload) == {:ok, {:file, "test_folder/image-tet.jpg"}} end test "returns error", %{file_upload: file_upload} do - with_mock ExAws, request: fn _ -> {:error, "S3 Upload failed"} end do - assert capture_log(fn -> - assert S3.put_file(file_upload) == {:error, "S3 Upload failed"} - end) =~ "Elixir.Pleroma.Uploaders.S3: {:error, \"S3 Upload failed\"}" - end + ExAwsMock + |> expect(:request, fn _req -> {:error, "S3 Upload failed"} end) + + assert capture_log(fn -> + assert S3.put_file(file_upload) == {:error, "S3 Upload failed"} + end) =~ "Elixir.Pleroma.Uploaders.S3: {:error, \"S3 Upload failed\"}" end end describe "delete_file/1" do - test_with_mock "deletes file", ExAws, request: fn _req -> {:ok, %{status_code: 204}} end do + test "deletes file" do + ExAwsMock + |> expect(:request, fn _req -> {:ok, %{status_code: 204}} end) + + ConfigMock + |> expect(:get, fn [Pleroma.Uploaders.S3, :bucket] -> "test_bucket" end) + assert :ok = S3.delete_file("image.jpg") - assert_called(ExAws.request(:_)) end end end diff --git a/test/pleroma/user/backup_async_test.exs b/test/pleroma/user/backup_async_test.exs @@ -0,0 +1,51 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.User.BackupAsyncTest do + use Pleroma.DataCase, async: true + + import Pleroma.Factory + import Mox + + alias Pleroma.UnstubbedConfigMock, as: ConfigMock + alias Pleroma.User.Backup + alias Pleroma.User.Backup.ProcessorMock + + setup do + user = insert(:user, %{nickname: "cofe", name: "Cofe", ap_id: "http://cofe.io/users/cofe"}) + + {:ok, backup} = user |> Backup.new() |> Repo.insert() + %{backup: backup} + end + + @tag capture_log: true + test "it handles unrecoverable exceptions", %{backup: backup} do + ProcessorMock + |> expect(:do_process, fn _, _ -> + raise "mock exception" + end) + + ConfigMock + |> stub_with(Pleroma.Config) + + {:error, %{backup: backup, reason: :exit}} = Backup.process(backup, ProcessorMock) + + assert backup.state == :failed + end + + @tag capture_log: true + test "it handles timeouts", %{backup: backup} do + ProcessorMock + |> expect(:do_process, fn _, _ -> + Process.sleep(:timer.seconds(4)) + end) + + ConfigMock + |> expect(:get, fn [Pleroma.User.Backup, :process_wait_time] -> :timer.seconds(2) end) + + {:error, %{backup: backup, reason: :timeout}} = Backup.process(backup, ProcessorMock) + + assert backup.state == :failed + end +end diff --git a/test/pleroma/user/backup_test.exs b/test/pleroma/user/backup_test.exs @@ -9,10 +9,14 @@ defmodule Pleroma.User.BackupTest do import Mock import Pleroma.Factory import Swoosh.TestAssertions + import Mox alias Pleroma.Bookmark alias Pleroma.Tests.ObanHelpers + alias Pleroma.UnstubbedConfigMock, as: ConfigMock + alias Pleroma.Uploaders.S3.ExAwsMock alias Pleroma.User.Backup + alias Pleroma.User.Backup.ProcessorMock alias Pleroma.Web.CommonAPI alias Pleroma.Workers.BackupWorker @@ -20,6 +24,14 @@ defmodule Pleroma.User.BackupTest do clear_config([Pleroma.Upload, :uploader]) clear_config([Backup, :limit_days]) clear_config([Pleroma.Emails.Mailer, :enabled], true) + + ConfigMock + |> stub_with(Pleroma.Config) + + ProcessorMock + |> stub_with(Pleroma.User.Backup.Processor) + + :ok end test "it does not requrie enabled email" do @@ -39,7 +51,7 @@ defmodule Pleroma.User.BackupTest do assert_enqueued(worker: BackupWorker, args: args) backup = Backup.get(args["backup_id"]) - assert %Backup{user_id: ^user_id, processed: false, file_size: 0} = backup + assert %Backup{user_id: ^user_id, processed: false, file_size: 0, state: :pending} = backup end test "it return an error if the export limit is over" do @@ -59,7 +71,30 @@ defmodule Pleroma.User.BackupTest do assert {:ok, %Oban.Job{args: %{"backup_id" => backup_id} = args}} = Backup.create(user) assert {:ok, backup} = perform_job(BackupWorker, args) assert backup.file_size > 0 - assert %Backup{id: ^backup_id, processed: true, user_id: ^user_id} = backup + assert %Backup{id: ^backup_id, processed: true, user_id: ^user_id, state: :complete} = backup + + delete_job_args = %{"op" => "delete", "backup_id" => backup_id} + + assert_enqueued(worker: BackupWorker, args: delete_job_args) + assert {:ok, backup} = perform_job(BackupWorker, delete_job_args) + refute Backup.get(backup_id) + + email = Pleroma.Emails.UserEmail.backup_is_ready_email(backup) + + assert_email_sent( + to: {user.name, user.email}, + html_body: email.html_body + ) + end + + test "it updates states of the backup" do + clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.Local) + %{id: user_id} = user = insert(:user) + + assert {:ok, %Oban.Job{args: %{"backup_id" => backup_id} = args}} = Backup.create(user) + assert {:ok, backup} = perform_job(BackupWorker, args) + assert backup.file_size > 0 + assert %Backup{id: ^backup_id, processed: true, user_id: ^user_id, state: :complete} = backup delete_job_args = %{"op" => "delete", "backup_id" => backup_id} @@ -131,6 +166,7 @@ defmodule Pleroma.User.BackupTest do test "it creates a zip archive with user data" do user = insert(:user, %{nickname: "cofe", name: "Cofe", ap_id: "http://cofe.io/users/cofe"}) + %{ap_id: other_ap_id} = other_user = insert(:user) {:ok, %{object: %{data: %{"id" => id1}}} = status1} = CommonAPI.post(user, %{status: "status1"}) @@ -147,8 +183,10 @@ defmodule Pleroma.User.BackupTest do Bookmark.create(user.id, status2.id) Bookmark.create(user.id, status3.id) + CommonAPI.follow(user, other_user) + assert {:ok, backup} = user |> Backup.new() |> Repo.insert() - assert {:ok, path} = Backup.export(backup) + assert {:ok, path} = Backup.export(backup, self()) assert {:ok, zipfile} = :zip.zip_open(String.to_charlist(path), [:memory]) assert {:ok, {'actor.json', json}} = :zip.zip_get('actor.json', zipfile) @@ -226,10 +264,69 @@ defmodule Pleroma.User.BackupTest do "type" => "OrderedCollection" } = Jason.decode!(json) + assert {:ok, {'following.json', json}} = :zip.zip_get('following.json', zipfile) + + assert %{ + "@context" => "https://www.w3.org/ns/activitystreams", + "id" => "following.json", + "orderedItems" => [^other_ap_id], + "totalItems" => 1, + "type" => "OrderedCollection" + } = Jason.decode!(json) + :zip.zip_close(zipfile) File.rm!(path) end + test "it counts the correct number processed" do + user = insert(:user, %{nickname: "cofe", name: "Cofe", ap_id: "http://cofe.io/users/cofe"}) + + Enum.map(1..120, fn i -> + {:ok, status} = CommonAPI.post(user, %{status: "status #{i}"}) + CommonAPI.favorite(user, status.id) + Bookmark.create(user.id, status.id) + end) + + assert {:ok, backup} = user |> Backup.new() |> Repo.insert() + {:ok, backup} = Backup.process(backup) + + assert backup.processed_number == 1 + 120 + 120 + 120 + + Backup.delete(backup) + end + + test "it handles errors" do + user = insert(:user, %{nickname: "cofe", name: "Cofe", ap_id: "http://cofe.io/users/cofe"}) + + Enum.map(1..120, fn i -> + {:ok, _status} = CommonAPI.post(user, %{status: "status #{i}"}) + end) + + assert {:ok, backup} = user |> Backup.new() |> Repo.insert() + + with_mock Pleroma.Web.ActivityPub.Transmogrifier, + [:passthrough], + prepare_outgoing: fn data -> + object = + data["object"] + |> Pleroma.Object.normalize(fetch: false) + |> Map.get(:data) + + data = data |> Map.put("object", object) + + if String.contains?(data["object"]["content"], "119"), + do: raise(%Postgrex.Error{}), + else: {:ok, data} + end do + {:ok, backup} = Backup.process(backup) + assert backup.processed + assert backup.state == :complete + assert backup.processed_number == 1 + 119 + + Backup.delete(backup) + end + end + describe "it uploads and deletes a backup archive" do setup do clear_config([Pleroma.Upload, :base_url], "https://s3.amazonaws.com") @@ -246,7 +343,7 @@ defmodule Pleroma.User.BackupTest do Bookmark.create(user.id, status3.id) assert {:ok, backup} = user |> Backup.new() |> Repo.insert() - assert {:ok, path} = Backup.export(backup) + assert {:ok, path} = Backup.export(backup, self()) [path: path, backup: backup] end @@ -255,14 +352,14 @@ defmodule Pleroma.User.BackupTest do clear_config([Pleroma.Upload, :uploader], Pleroma.Uploaders.S3) clear_config([Pleroma.Uploaders.S3, :streaming_enabled], false) - with_mock ExAws, - request: fn - %{http_method: :put} -> {:ok, :ok} - %{http_method: :delete} -> {:ok, %{status_code: 204}} - end do - assert {:ok, %Pleroma.Upload{}} = Backup.upload(backup, path) - assert {:ok, _backup} = Backup.delete(backup) - end + ExAwsMock + |> expect(:request, 2, fn + %{http_method: :put} -> {:ok, :ok} + %{http_method: :delete} -> {:ok, %{status_code: 204}} + end) + + assert {:ok, %Pleroma.Upload{}} = Backup.upload(backup, path) + assert {:ok, _backup} = Backup.delete(backup) end test "Local", %{path: path, backup: backup} do diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs @@ -19,6 +19,11 @@ defmodule Pleroma.UserTest do import ExUnit.CaptureLog import Swoosh.TestAssertions + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + setup_all do Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) :ok @@ -221,7 +226,7 @@ defmodule Pleroma.UserTest do assert [] = User.get_follow_requests(followed) end - test "follow_all follows mutliple users" do + test "follow_all follows multiple users" do user = insert(:user) followed_zero = insert(:user) followed_one = insert(:user) @@ -245,7 +250,7 @@ defmodule Pleroma.UserTest do refute User.following?(user, reverse_blocked) end - test "follow_all follows mutliple users without duplicating" do + test "follow_all follows multiple users without duplicating" do user = insert(:user) followed_zero = insert(:user) followed_one = insert(:user) @@ -868,113 +873,23 @@ defmodule Pleroma.UserTest do end end - describe "get_or_fetch/1 remote users with tld, while BE is runned on subdomain" do + describe "get_or_fetch/1 remote users with tld, while BE is running on a subdomain" do setup do: clear_config([Pleroma.Web.WebFinger, :update_nickname_on_user_fetch], true) test "for mastodon" do - Tesla.Mock.mock(fn - %{url: "https://example.com/.well-known/host-meta"} -> - %Tesla.Env{ - status: 302, - headers: [{"location", "https://sub.example.com/.well-known/host-meta"}] - } - - %{url: "https://sub.example.com/.well-known/host-meta"} -> - %Tesla.Env{ - status: 200, - body: - "test/fixtures/webfinger/masto-host-meta.xml" - |> File.read!() - |> String.replace("{{domain}}", "sub.example.com") - } - - %{url: "https://sub.example.com/.well-known/webfinger?resource=acct:a@example.com"} -> - %Tesla.Env{ - status: 200, - body: - "test/fixtures/webfinger/masto-webfinger.json" - |> File.read!() - |> String.replace("{{nickname}}", "a") - |> String.replace("{{domain}}", "example.com") - |> String.replace("{{subdomain}}", "sub.example.com"), - headers: [{"content-type", "application/jrd+json"}] - } - - %{url: "https://sub.example.com/users/a"} -> - %Tesla.Env{ - status: 200, - body: - "test/fixtures/webfinger/masto-user.json" - |> File.read!() - |> String.replace("{{nickname}}", "a") - |> String.replace("{{domain}}", "sub.example.com"), - headers: [{"content-type", "application/activity+json"}] - } - - %{url: "https://sub.example.com/users/a/collections/featured"} -> - %Tesla.Env{ - status: 200, - body: - File.read!("test/fixtures/users_mock/masto_featured.json") - |> String.replace("{{domain}}", "sub.example.com") - |> String.replace("{{nickname}}", "a"), - headers: [{"content-type", "application/activity+json"}] - } - end) - - ap_id = "a@example.com" + ap_id = "a@mastodon.example" {:ok, fetched_user} = User.get_or_fetch(ap_id) - assert fetched_user.ap_id == "https://sub.example.com/users/a" - assert fetched_user.nickname == "a@example.com" + assert fetched_user.ap_id == "https://sub.mastodon.example/users/a" + assert fetched_user.nickname == "a@mastodon.example" end test "for pleroma" do - Tesla.Mock.mock(fn - %{url: "https://example.com/.well-known/host-meta"} -> - %Tesla.Env{ - status: 302, - headers: [{"location", "https://sub.example.com/.well-known/host-meta"}] - } - - %{url: "https://sub.example.com/.well-known/host-meta"} -> - %Tesla.Env{ - status: 200, - body: - "test/fixtures/webfinger/pleroma-host-meta.xml" - |> File.read!() - |> String.replace("{{domain}}", "sub.example.com") - } - - %{url: "https://sub.example.com/.well-known/webfinger?resource=acct:a@example.com"} -> - %Tesla.Env{ - status: 200, - body: - "test/fixtures/webfinger/pleroma-webfinger.json" - |> File.read!() - |> String.replace("{{nickname}}", "a") - |> String.replace("{{domain}}", "example.com") - |> String.replace("{{subdomain}}", "sub.example.com"), - headers: [{"content-type", "application/jrd+json"}] - } - - %{url: "https://sub.example.com/users/a"} -> - %Tesla.Env{ - status: 200, - body: - "test/fixtures/webfinger/pleroma-user.json" - |> File.read!() - |> String.replace("{{nickname}}", "a") - |> String.replace("{{domain}}", "sub.example.com"), - headers: [{"content-type", "application/activity+json"}] - } - end) - - ap_id = "a@example.com" + ap_id = "a@pleroma.example" {:ok, fetched_user} = User.get_or_fetch(ap_id) - assert fetched_user.ap_id == "https://sub.example.com/users/a" - assert fetched_user.nickname == "a@example.com" + assert fetched_user.ap_id == "https://sub.pleroma.example/users/a" + assert fetched_user.nickname == "a@pleroma.example" end end @@ -1013,13 +928,13 @@ defmodule Pleroma.UserTest do @tag capture_log: true test "returns nil if no user could be fetched" do - {:error, fetched_user} = User.get_or_fetch_by_nickname("nonexistant@social.heldscal.la") - assert fetched_user == "not found nonexistant@social.heldscal.la" + {:error, fetched_user} = User.get_or_fetch_by_nickname("nonexistent@social.heldscal.la") + assert fetched_user == "not found nonexistent@social.heldscal.la" end - test "returns nil for nonexistant local user" do - {:error, fetched_user} = User.get_or_fetch_by_nickname("nonexistant") - assert fetched_user == "not found nonexistant" + test "returns nil for nonexistent local user" do + {:error, fetched_user} = User.get_or_fetch_by_nickname("nonexistent") + assert fetched_user == "not found nonexistent" end test "updates an existing user, if stale" do @@ -1127,7 +1042,7 @@ defmodule Pleroma.UserTest do assert cs.valid? end - test "it sets the follower_adress" do + test "it sets the follower_address" do cs = User.remote_user_changeset(@valid_remote) # remote users get a fake local follower address assert cs.changes.follower_address == @@ -1844,7 +1759,6 @@ defmodule Pleroma.UserTest do confirmation_token: "qqqq", domain_blocks: ["lain.com"], is_active: false, - ap_enabled: true, is_moderator: true, is_admin: true, mascot: %{"a" => "b"}, @@ -1885,7 +1799,6 @@ defmodule Pleroma.UserTest do confirmation_token: nil, domain_blocks: [], is_active: false, - ap_enabled: false, is_moderator: false, is_admin: false, mascot: nil, @@ -1948,8 +1861,8 @@ defmodule Pleroma.UserTest do end end - test "get_public_key_for_ap_id fetches a user that's not in the db" do - assert {:ok, _key} = User.get_public_key_for_ap_id("http://mastodon.example.org/users/admin") + test "get_public_key_for_ap_id returns correctly for user that's not in the db" do + assert :error = User.get_public_key_for_ap_id("http://mastodon.example.org/users/admin") end describe "per-user rich-text filtering" do @@ -2421,20 +2334,20 @@ defmodule Pleroma.UserTest do end end - describe "is_internal_user?/1" do + describe "internal?/1" do test "non-internal user returns false" do user = insert(:user) - refute User.is_internal_user?(user) + refute User.internal?(user) end test "user with no nickname returns true" do user = insert(:user, %{nickname: nil}) - assert User.is_internal_user?(user) + assert User.internal?(user) end test "user with internal-prefixed nickname returns true" do user = insert(:user, %{nickname: "internal.test"}) - assert User.is_internal_user?(user) + assert User.internal?(user) end end @@ -2473,8 +2386,7 @@ defmodule Pleroma.UserTest do insert(:user, local: false, follower_address: "http://localhost:4001/users/masto_closed/followers", - following_address: "http://localhost:4001/users/masto_closed/following", - ap_enabled: true + following_address: "http://localhost:4001/users/masto_closed/following" ) assert other_user.following_count == 0 @@ -2495,8 +2407,7 @@ defmodule Pleroma.UserTest do insert(:user, local: false, follower_address: "http://localhost:4001/users/masto_closed/followers", - following_address: "http://localhost:4001/users/masto_closed/following", - ap_enabled: true + following_address: "http://localhost:4001/users/masto_closed/following" ) assert other_user.following_count == 0 @@ -2517,8 +2428,7 @@ defmodule Pleroma.UserTest do insert(:user, local: false, follower_address: "http://localhost:4001/users/masto_closed/followers", - following_address: "http://localhost:4001/users/masto_closed/following", - ap_enabled: true + following_address: "http://localhost:4001/users/masto_closed/following" ) assert other_user.following_count == 0 @@ -2683,13 +2593,23 @@ defmodule Pleroma.UserTest do end describe "full_nickname/1" do - test "returns fully qualified nickname for local and remote users" do - local_user = - insert(:user, nickname: "local_user", ap_id: "https://somehost.com/users/local_user") + test "returns fully qualified nickname for local users" do + local_user = insert(:user, nickname: "local_user") + + assert User.full_nickname(local_user) == "local_user@localhost" + end + + test "returns fully qualified nickname for local users when using different domain for webfinger" do + clear_config([Pleroma.Web.WebFinger, :domain], "plemora.dev") + local_user = insert(:user, nickname: "local_user") + + assert User.full_nickname(local_user) == "local_user@plemora.dev" + end + + test "returns fully qualified nickname for remote users" do remote_user = insert(:user, nickname: "remote@host.com", local: false) - assert User.full_nickname(local_user) == "local_user@somehost.com" assert User.full_nickname(remote_user) == "remote@host.com" end @@ -2884,6 +2804,20 @@ defmodule Pleroma.UserTest do end end + describe "get_familiar_followers/3" do + test "returns familiar followers for a pair of users" do + user1 = insert(:user) + %{id: id2} = user2 = insert(:user) + user3 = insert(:user) + _user4 = insert(:user) + + User.follow(user1, user2) + User.follow(user2, user3) + + assert [%{id: ^id2}] = User.get_familiar_followers(user3, user1) + end + end + describe "account endorsements" do test "it pins people" do user = insert(:user) @@ -2918,4 +2852,51 @@ defmodule Pleroma.UserTest do refute User.endorses?(user, pinned_user) end end + + test "it checks fields links for a backlink" do + user = insert(:user, ap_id: "https://social.example.org/users/lain") + + fields = [ + %{"name" => "Link", "value" => "http://example.com/rel_me/null"}, + %{"name" => "Verified link", "value" => "http://example.com/rel_me/link"}, + %{"name" => "Not a link", "value" => "i'm not a link"} + ] + + user + |> User.update_and_set_cache(%{raw_fields: fields}) + + ObanHelpers.perform_all() + + user = User.get_cached_by_id(user.id) + + assert [ + %{"verified_at" => nil}, + %{"verified_at" => verified_at}, + %{"verified_at" => nil} + ] = user.fields + + assert is_binary(verified_at) + end + + test "updating fields does not invalidate previously validated links" do + user = insert(:user, ap_id: "https://social.example.org/users/lain") + + user + |> User.update_and_set_cache(%{ + raw_fields: [%{"name" => "verified link", "value" => "http://example.com/rel_me/link"}] + }) + + ObanHelpers.perform_all() + + %User{fields: [%{"verified_at" => verified_at}]} = user = User.get_cached_by_id(user.id) + + user + |> User.update_and_set_cache(%{ + raw_fields: [%{"name" => "Verified link", "value" => "http://example.com/rel_me/link"}] + }) + + user = User.get_cached_by_id(user.id) + + assert [%{"verified_at" => ^verified_at}] = user.fields + end end diff --git a/test/pleroma/web/activity_pub/activity_pub_controller_test.exs b/test/pleroma/web/activity_pub/activity_pub_controller_test.exs @@ -25,6 +25,11 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do require Pleroma.Constants + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + setup_all do Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) :ok @@ -216,7 +221,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do user = insert(:user) {:ok, post} = CommonAPI.post(user, %{status: "test", visibility: "local"}) - assert Pleroma.Web.ActivityPub.Visibility.is_local_public?(post) + assert Pleroma.Web.ActivityPub.Visibility.local_public?(post) object = Object.normalize(post, fetch: false) uuid = String.split(object.data["id"], "/") |> List.last() @@ -233,7 +238,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do user = insert(:user) {:ok, post} = CommonAPI.post(user, %{status: "test", visibility: "local"}) - assert Pleroma.Web.ActivityPub.Visibility.is_local_public?(post) + assert Pleroma.Web.ActivityPub.Visibility.local_public?(post) object = Object.normalize(post, fetch: false) uuid = String.split(object.data["id"], "/") |> List.last() @@ -254,7 +259,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do {:ok, post} = CommonAPI.post(user, %{status: "test @#{reader.nickname}", visibility: "local"}) - assert Pleroma.Web.ActivityPub.Visibility.is_local_public?(post) + assert Pleroma.Web.ActivityPub.Visibility.local_public?(post) object = Object.normalize(post, fetch: false) uuid = String.split(object.data["id"], "/") |> List.last() @@ -431,7 +436,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do user = insert(:user) {:ok, post} = CommonAPI.post(user, %{status: "test", visibility: "local"}) - assert Pleroma.Web.ActivityPub.Visibility.is_local_public?(post) + assert Pleroma.Web.ActivityPub.Visibility.local_public?(post) uuid = String.split(post.data["id"], "/") |> List.last() @@ -447,7 +452,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do user = insert(:user) {:ok, post} = CommonAPI.post(user, %{status: "test", visibility: "local"}) - assert Pleroma.Web.ActivityPub.Visibility.is_local_public?(post) + assert Pleroma.Web.ActivityPub.Visibility.local_public?(post) uuid = String.split(post.data["id"], "/") |> List.last() @@ -575,7 +580,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do user = insert(:user, ap_id: "https://mastodon.example.org/users/raymoo", - ap_enabled: true, local: false, last_refreshed_at: nil ) @@ -891,6 +895,23 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubControllerTest do assert Activity.get_by_ap_id(data["id"]) end + test "it rejects an invalid incoming activity", %{conn: conn, data: data} do + user = insert(:user, is_active: false) + + data = + data + |> Map.put("bcc", [user.ap_id]) + |> Kernel.put_in(["object", "bcc"], [user.ap_id]) + + conn = + conn + |> assign(:valid_signature, true) + |> put_req_header("content-type", "application/activity+json") + |> post("/users/#{user.nickname}/inbox", data) + + assert "Invalid request." == json_response(conn, 400) + end + test "it accepts messages with to as string instead of array", %{conn: conn, data: data} do user = insert(:user) diff --git a/test/pleroma/web/activity_pub/activity_pub_test.exs b/test/pleroma/web/activity_pub/activity_pub_test.exs @@ -11,6 +11,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do alias Pleroma.Config alias Pleroma.Notification alias Pleroma.Object + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Utils @@ -19,11 +20,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do import ExUnit.CaptureLog import Mock + import Mox import Pleroma.Factory import Tesla.Mock setup do mock(fn env -> apply(HttpRequestMock, :request, [env]) end) + + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + :ok end @@ -174,7 +180,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do {:ok, user} = ActivityPub.make_user_from_ap_id(user_id) assert user.ap_id == user_id assert user.nickname == "admin@mastodon.example.org" - assert user.ap_enabled assert user.follower_address == "http://mastodon.example.org/users/admin/followers" end @@ -771,6 +776,34 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert %{data: _data, object: object} = Activity.get_by_ap_id_with_object(ap_id) assert object.data["repliesCount"] == 2 end + + test "increates quotes count", %{user: user} do + user2 = insert(:user) + + {:ok, activity} = CommonAPI.post(user, %{status: "1", visibility: "public"}) + ap_id = activity.data["id"] + quote_data = %{status: "1", quote_id: activity.id} + + # public + {:ok, _} = CommonAPI.post(user2, Map.put(quote_data, :visibility, "public")) + assert %{data: _data, object: object} = Activity.get_by_ap_id_with_object(ap_id) + assert object.data["quotesCount"] == 1 + + # unlisted + {:ok, _} = CommonAPI.post(user2, Map.put(quote_data, :visibility, "unlisted")) + assert %{data: _data, object: object} = Activity.get_by_ap_id_with_object(ap_id) + assert object.data["quotesCount"] == 2 + + # private + {:ok, _} = CommonAPI.post(user2, Map.put(quote_data, :visibility, "private")) + assert %{data: _data, object: object} = Activity.get_by_ap_id_with_object(ap_id) + assert object.data["quotesCount"] == 2 + + # direct + {:ok, _} = CommonAPI.post(user2, Map.put(quote_data, :visibility, "direct")) + assert %{data: _data, object: object} = Activity.get_by_ap_id_with_object(ap_id) + assert object.data["quotesCount"] == 2 + end end describe "fetch activities for recipients" do @@ -995,7 +1028,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do refute repeat_activity in activities end - test "see your own posts even when they adress actors from blocked domains" do + test "see your own posts even when they address actors from blocked domains" do user = insert(:user) domain = "dogwhistle.zone" @@ -2653,4 +2686,13 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do {:ok, user} = ActivityPub.make_user_from_ap_id("https://princess.cat/users/mewmew") assert user.name == " " end + + @tag capture_log: true + test "pin_data_from_featured_collection will ignore unsupported values" do + assert %{} == + ActivityPub.pin_data_from_featured_collection(%{ + "type" => "OrderedCollection", + "first" => "https://social.example/users/alice/collections/featured?page=true" + }) + end end diff --git a/test/pleroma/web/activity_pub/builder_test.exs b/test/pleroma/web/activity_pub/builder_test.exs @@ -44,5 +44,34 @@ defmodule Pleroma.Web.ActivityPub.BuilderTest do assert {:ok, ^expected, []} = Builder.note(draft) end + + test "quote post" do + user = insert(:user) + note = insert(:note) + + draft = %ActivityDraft{ + user: user, + context: "2hu", + content_html: "<h1>This is :moominmamma: note</h1>", + quote_post: note, + extra: %{} + } + + expected = %{ + "actor" => user.ap_id, + "attachment" => [], + "content" => "<h1>This is :moominmamma: note</h1>", + "context" => "2hu", + "sensitive" => false, + "type" => "Note", + "quoteUrl" => note.data["id"], + "cc" => [], + "summary" => nil, + "tag" => [], + "to" => [] + } + + assert {:ok, ^expected, []} = Builder.note(draft) + end end end diff --git a/test/pleroma/web/activity_pub/mrf/emoji_policy_test.exs b/test/pleroma/web/activity_pub/mrf/emoji_policy_test.exs @@ -0,0 +1,425 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.EmojiPolicyTest do + use Pleroma.DataCase + + require Pleroma.Constants + + alias Pleroma.Web.ActivityPub.MRF + alias Pleroma.Web.ActivityPub.MRF.EmojiPolicy + + setup do: clear_config(:mrf_emoji) + + setup do + clear_config([:mrf_emoji], %{ + remove_url: [], + remove_shortcode: [], + federated_timeline_removal_url: [], + federated_timeline_removal_shortcode: [] + }) + end + + @emoji_tags [ + %{ + "icon" => %{ + "type" => "Image", + "url" => "https://example.org/emoji/biribiri/mikoto_smile2.png" + }, + "id" => "https://example.org/emoji/biribiri/mikoto_smile2.png", + "name" => ":mikoto_smile2:", + "type" => "Emoji", + "updated" => "1970-01-01T00:00:00Z" + }, + %{ + "icon" => %{ + "type" => "Image", + "url" => "https://example.org/emoji/biribiri/mikoto_smile3.png" + }, + "id" => "https://example.org/emoji/biribiri/mikoto_smile3.png", + "name" => ":mikoto_smile3:", + "type" => "Emoji", + "updated" => "1970-01-01T00:00:00Z" + }, + %{ + "icon" => %{ + "type" => "Image", + "url" => "https://example.org/emoji/nekomimi_girl_emoji/nekomimi_girl_emoji_007.png" + }, + "id" => "https://example.org/emoji/nekomimi_girl_emoji/nekomimi_girl_emoji_007.png", + "name" => ":nekomimi_girl_emoji_007:", + "type" => "Emoji", + "updated" => "1970-01-01T00:00:00Z" + }, + %{ + "icon" => %{ + "type" => "Image", + "url" => "https://example.org/test.png" + }, + "id" => "https://example.org/test.png", + "name" => ":test:", + "type" => "Emoji", + "updated" => "1970-01-01T00:00:00Z" + } + ] + + @misc_tags [%{"type" => "Placeholder"}] + + @user_data %{ + "type" => "Person", + "id" => "https://example.org/placeholder", + "name" => "lol", + "tag" => @emoji_tags ++ @misc_tags + } + + @status_data %{ + "type" => "Create", + "object" => %{ + "type" => "Note", + "id" => "https://example.org/placeholder", + "content" => "lol", + "tag" => @emoji_tags ++ @misc_tags, + "emoji" => %{ + "mikoto_smile2" => "https://example.org/emoji/biribiri/mikoto_smile2.png", + "mikoto_smile3" => "https://example.org/emoji/biribiri/mikoto_smile3.png", + "nekomimi_girl_emoji_007" => + "https://example.org/emoji/nekomimi_girl_emoji/nekomimi_girl_emoji_007.png", + "test" => "https://example.org/test.png" + }, + "to" => ["https://example.org/self", Pleroma.Constants.as_public()], + "cc" => ["https://example.org/someone"] + }, + "to" => ["https://example.org/self", Pleroma.Constants.as_public()], + "cc" => ["https://example.org/someone"] + } + + @status_data_with_history %{ + "type" => "Create", + "object" => + @status_data["object"] + |> Map.merge(%{ + "formerRepresentations" => %{ + "type" => "OrderedCollection", + "orderedItems" => [@status_data["object"] |> Map.put("content", "older")], + "totalItems" => 1 + } + }), + "to" => ["https://example.org/self", Pleroma.Constants.as_public()], + "cc" => ["https://example.org/someone"] + } + + @emoji_react_data %{ + "type" => "EmojiReact", + "tag" => [@emoji_tags |> Enum.at(3)], + "object" => "https://example.org/someobject", + "to" => ["https://example.org/self"], + "cc" => ["https://example.org/someone"] + } + + @emoji_react_data_matching_regex %{ + "type" => "EmojiReact", + "tag" => [@emoji_tags |> Enum.at(1)], + "object" => "https://example.org/someobject", + "to" => ["https://example.org/self"], + "cc" => ["https://example.org/someone"] + } + + @emoji_react_data_matching_nothing %{ + "type" => "EmojiReact", + "tag" => [@emoji_tags |> Enum.at(2)], + "object" => "https://example.org/someobject", + "to" => ["https://example.org/self"], + "cc" => ["https://example.org/someone"] + } + + @emoji_react_data_unicode %{ + "type" => "EmojiReact", + "content" => "😍", + "object" => "https://example.org/someobject", + "to" => ["https://example.org/self"], + "cc" => ["https://example.org/someone"] + } + + describe "remove_url" do + setup do + clear_config([:mrf_emoji, :remove_url], [ + "https://example.org/test.png", + ~r{/biribiri/mikoto_smile[23]\.png}, + "nekomimi_girl_emoji" + ]) + + :ok + end + + test "processes user" do + {:ok, filtered} = MRF.filter_one(EmojiPolicy, @user_data) + + expected_tags = [@emoji_tags |> Enum.at(2)] ++ @misc_tags + + assert %{"tag" => ^expected_tags} = filtered + end + + test "processes status" do + {:ok, filtered} = MRF.filter_one(EmojiPolicy, @status_data) + + expected_tags = [@emoji_tags |> Enum.at(2)] ++ @misc_tags + + expected_emoji = %{ + "nekomimi_girl_emoji_007" => + "https://example.org/emoji/nekomimi_girl_emoji/nekomimi_girl_emoji_007.png" + } + + assert %{"object" => %{"tag" => ^expected_tags, "emoji" => ^expected_emoji}} = filtered + end + + test "processes status with history" do + {:ok, filtered} = MRF.filter_one(EmojiPolicy, @status_data_with_history) + + expected_tags = [@emoji_tags |> Enum.at(2)] ++ @misc_tags + + expected_emoji = %{ + "nekomimi_girl_emoji_007" => + "https://example.org/emoji/nekomimi_girl_emoji/nekomimi_girl_emoji_007.png" + } + + assert %{ + "object" => %{ + "tag" => ^expected_tags, + "emoji" => ^expected_emoji, + "formerRepresentations" => %{"orderedItems" => [item]} + } + } = filtered + + assert %{"tag" => ^expected_tags, "emoji" => ^expected_emoji} = item + end + + test "processes updates" do + {:ok, filtered} = + MRF.filter_one(EmojiPolicy, @status_data_with_history |> Map.put("type", "Update")) + + expected_tags = [@emoji_tags |> Enum.at(2)] ++ @misc_tags + + expected_emoji = %{ + "nekomimi_girl_emoji_007" => + "https://example.org/emoji/nekomimi_girl_emoji/nekomimi_girl_emoji_007.png" + } + + assert %{ + "object" => %{ + "tag" => ^expected_tags, + "emoji" => ^expected_emoji, + "formerRepresentations" => %{"orderedItems" => [item]} + } + } = filtered + + assert %{"tag" => ^expected_tags, "emoji" => ^expected_emoji} = item + end + + test "processes EmojiReact" do + assert {:reject, "[EmojiPolicy] Rejected for having disallowed emoji"} == + MRF.filter_one(EmojiPolicy, @emoji_react_data) + + assert {:reject, "[EmojiPolicy] Rejected for having disallowed emoji"} == + MRF.filter_one(EmojiPolicy, @emoji_react_data_matching_regex) + + assert {:ok, @emoji_react_data_matching_nothing} == + MRF.filter_one(EmojiPolicy, @emoji_react_data_matching_nothing) + + assert {:ok, @emoji_react_data_unicode} == + MRF.filter_one(EmojiPolicy, @emoji_react_data_unicode) + end + end + + describe "remove_shortcode" do + setup do + clear_config([:mrf_emoji, :remove_shortcode], [ + "test", + ~r{mikoto_s}, + "nekomimi_girl_emoji" + ]) + + :ok + end + + test "processes user" do + {:ok, filtered} = MRF.filter_one(EmojiPolicy, @user_data) + + expected_tags = [@emoji_tags |> Enum.at(2)] ++ @misc_tags + + assert %{"tag" => ^expected_tags} = filtered + end + + test "processes status" do + {:ok, filtered} = MRF.filter_one(EmojiPolicy, @status_data) + + expected_tags = [@emoji_tags |> Enum.at(2)] ++ @misc_tags + + expected_emoji = %{ + "nekomimi_girl_emoji_007" => + "https://example.org/emoji/nekomimi_girl_emoji/nekomimi_girl_emoji_007.png" + } + + assert %{"object" => %{"tag" => ^expected_tags, "emoji" => ^expected_emoji}} = filtered + end + + test "processes status with history" do + {:ok, filtered} = MRF.filter_one(EmojiPolicy, @status_data_with_history) + + expected_tags = [@emoji_tags |> Enum.at(2)] ++ @misc_tags + + expected_emoji = %{ + "nekomimi_girl_emoji_007" => + "https://example.org/emoji/nekomimi_girl_emoji/nekomimi_girl_emoji_007.png" + } + + assert %{ + "object" => %{ + "tag" => ^expected_tags, + "emoji" => ^expected_emoji, + "formerRepresentations" => %{"orderedItems" => [item]} + } + } = filtered + + assert %{"tag" => ^expected_tags, "emoji" => ^expected_emoji} = item + end + + test "processes updates" do + {:ok, filtered} = + MRF.filter_one(EmojiPolicy, @status_data_with_history |> Map.put("type", "Update")) + + expected_tags = [@emoji_tags |> Enum.at(2)] ++ @misc_tags + + expected_emoji = %{ + "nekomimi_girl_emoji_007" => + "https://example.org/emoji/nekomimi_girl_emoji/nekomimi_girl_emoji_007.png" + } + + assert %{ + "object" => %{ + "tag" => ^expected_tags, + "emoji" => ^expected_emoji, + "formerRepresentations" => %{"orderedItems" => [item]} + } + } = filtered + + assert %{"tag" => ^expected_tags, "emoji" => ^expected_emoji} = item + end + + test "processes EmojiReact" do + assert {:reject, "[EmojiPolicy] Rejected for having disallowed emoji"} == + MRF.filter_one(EmojiPolicy, @emoji_react_data) + + assert {:reject, "[EmojiPolicy] Rejected for having disallowed emoji"} == + MRF.filter_one(EmojiPolicy, @emoji_react_data_matching_regex) + + assert {:ok, @emoji_react_data_matching_nothing} == + MRF.filter_one(EmojiPolicy, @emoji_react_data_matching_nothing) + + assert {:ok, @emoji_react_data_unicode} == + MRF.filter_one(EmojiPolicy, @emoji_react_data_unicode) + end + end + + describe "federated_timeline_removal_url" do + setup do + clear_config([:mrf_emoji, :federated_timeline_removal_url], [ + "https://example.org/test.png", + ~r{/biribiri/mikoto_smile[23]\.png}, + "nekomimi_girl_emoji" + ]) + + :ok + end + + test "processes status" do + {:ok, filtered} = MRF.filter_one(EmojiPolicy, @status_data) + + expected_tags = @status_data["object"]["tag"] + expected_emoji = @status_data["object"]["emoji"] + + expected_to = ["https://example.org/self"] + expected_cc = [Pleroma.Constants.as_public(), "https://example.org/someone"] + + assert %{ + "to" => ^expected_to, + "cc" => ^expected_cc, + "object" => %{"tag" => ^expected_tags, "emoji" => ^expected_emoji} + } = filtered + end + + test "ignore updates" do + {:ok, filtered} = MRF.filter_one(EmojiPolicy, @status_data |> Map.put("type", "Update")) + + expected_tags = @status_data["object"]["tag"] + expected_emoji = @status_data["object"]["emoji"] + + expected_to = ["https://example.org/self", Pleroma.Constants.as_public()] + expected_cc = ["https://example.org/someone"] + + assert %{ + "to" => ^expected_to, + "cc" => ^expected_cc, + "object" => %{"tag" => ^expected_tags, "emoji" => ^expected_emoji} + } = filtered + end + + test "processes status with history" do + status = + @status_data_with_history + |> put_in(["object", "tag"], @misc_tags) + |> put_in(["object", "emoji"], %{}) + + {:ok, filtered} = MRF.filter_one(EmojiPolicy, status) + + expected_tags = @status_data["object"]["tag"] + expected_emoji = @status_data["object"]["emoji"] + + expected_to = ["https://example.org/self"] + expected_cc = [Pleroma.Constants.as_public(), "https://example.org/someone"] + + assert %{ + "to" => ^expected_to, + "cc" => ^expected_cc, + "object" => %{ + "formerRepresentations" => %{ + "orderedItems" => [%{"tag" => ^expected_tags, "emoji" => ^expected_emoji}] + } + } + } = filtered + end + end + + describe "edge cases" do + setup do + clear_config([:mrf_emoji, :remove_url], [ + "https://example.org/test.png", + ~r{/biribiri/mikoto_smile[23]\.png}, + "nekomimi_girl_emoji" + ]) + + :ok + end + + test "non-statuses" do + answer = @status_data |> put_in(["object", "type"], "Answer") + {:ok, filtered} = MRF.filter_one(EmojiPolicy, answer) + + assert filtered == answer + end + + test "without tag" do + status = @status_data |> Map.put("object", Map.drop(@status_data["object"], ["tag"])) + {:ok, filtered} = MRF.filter_one(EmojiPolicy, status) + + refute Map.has_key?(filtered["object"], "tag") + end + + test "without emoji" do + status = @status_data |> Map.put("object", Map.drop(@status_data["object"], ["emoji"])) + {:ok, filtered} = MRF.filter_one(EmojiPolicy, status) + + refute Map.has_key?(filtered["object"], "emoji") + end + end +end diff --git a/test/pleroma/web/activity_pub/mrf/ensure_re_prepended_test.exs b/test/pleroma/web/activity_pub/mrf/ensure_re_prepended_test.exs @@ -24,7 +24,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.EnsureRePrependedTest do assert res["object"]["summary"] == "re: object-summary" end - test "it adds `re:` to summary object when child summary containts re-subject of parent summary " do + test "it adds `re:` to summary object when child summary contains re-subject of parent summary " do message = %{ "type" => "Create", "object" => %{ diff --git a/test/pleroma/web/activity_pub/mrf/follow_bot_policy_test.exs b/test/pleroma/web/activity_pub/mrf/follow_bot_policy_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.MRF.FollowBotPolicyTest do - use Pleroma.DataCase, async: true + use Pleroma.DataCase alias Pleroma.User alias Pleroma.Web.ActivityPub.MRF.FollowBotPolicy diff --git a/test/pleroma/web/activity_pub/mrf/force_mention_test.exs b/test/pleroma/web/activity_pub/mrf/force_mention_test.exs @@ -0,0 +1,73 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.ForceMentionTest do + use Pleroma.DataCase + require Pleroma.Constants + + alias Pleroma.Web.ActivityPub.MRF.ForceMention + + import Pleroma.Factory + + test "adds mention to a reply" do + lain = + insert(:user, ap_id: "https://lain.com/users/lain", nickname: "lain@lain.com", local: false) + + niobleoum = + insert(:user, + ap_id: "https://www.minds.com/api/activitypub/users/1198929502760083472", + nickname: "niobleoum@minds.com", + local: false + ) + + status = File.read!("test/fixtures/minds-pleroma-mentioned-post.json") |> Jason.decode!() + + status_activity = %{ + "type" => "Create", + "actor" => lain.ap_id, + "object" => status + } + + Pleroma.Web.ActivityPub.Transmogrifier.handle_incoming(status_activity) + + reply = File.read!("test/fixtures/minds-invalid-mention-post.json") |> Jason.decode!() + + reply_activity = %{ + "type" => "Create", + "actor" => niobleoum.ap_id, + "object" => reply + } + + {:ok, %{"object" => %{"tag" => tag}}} = ForceMention.filter(reply_activity) + + assert Enum.find(tag, fn %{"href" => href} -> href == lain.ap_id end) + end + + test "adds mention to a quote" do + user1 = insert(:user, ap_id: "https://misskey.io/users/83ssedkv53") + user2 = insert(:user, ap_id: "https://misskey.io/users/7rkrarq81i") + + status = File.read!("test/fixtures/tesla_mock/misskey.io_8vs6wxufd0.json") |> Jason.decode!() + + status_activity = %{ + "type" => "Create", + "actor" => user1.ap_id, + "object" => status + } + + Pleroma.Web.ActivityPub.Transmogrifier.handle_incoming(status_activity) + + quote_post = File.read!("test/fixtures/quote_post/misskey_quote_post.json") |> Jason.decode!() + + quote_activity = %{ + "type" => "Create", + "actor" => user2.ap_id, + "object" => quote_post + } + + {:ok, %{"object" => %{"tag" => tag}}} = ForceMention.filter(quote_activity) + + assert Enum.find(tag, fn %{"href" => href} -> href == user1.ap_id end) + end +end diff --git a/test/pleroma/web/activity_pub/mrf/force_mentions_in_content_test.exs b/test/pleroma/web/activity_pub/mrf/force_mentions_in_content_test.exs @@ -256,4 +256,55 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceMentionsInContentTest do } }} = MRF.filter_one(ForceMentionsInContent, activity) end + + test "don't add duplicate mentions for mastodon or misskey posts" do + [zero, rogerick, greg] = [ + insert(:user, + ap_id: "https://pleroma.example.com/users/zero", + uri: "https://pleroma.example.com/users/zero", + nickname: "zero@pleroma.example.com", + local: false + ), + insert(:user, + ap_id: "https://misskey.example.com/users/104ab42f11", + uri: "https://misskey.example.com/@rogerick", + nickname: "rogerick@misskey.example.com", + local: false + ), + insert(:user, + ap_id: "https://mastodon.example.com/users/greg", + uri: "https://mastodon.example.com/@greg", + nickname: "greg@mastodon.example.com", + local: false + ) + ] + + {:ok, post} = CommonAPI.post(rogerick, %{status: "eugh"}) + + inline_mentions = [ + "<span class=\"h-card\"><a class=\"u-url mention\" data-user=\"#{rogerick.id}\" href=\"#{rogerick.ap_id}\" rel=\"ugc\">@<span>rogerick</span></a></span>", + "<span class=\"h-card\"><a class=\"u-url mention\" data-user=\"#{greg.id}\" href=\"#{greg.uri}\" rel=\"ugc\">@<span>greg</span></a></span>" + ] + + activity = %{ + "type" => "Create", + "actor" => zero.ap_id, + "object" => %{ + "type" => "Note", + "actor" => zero.ap_id, + "content" => "#{Enum.at(inline_mentions, 0)} #{Enum.at(inline_mentions, 1)} erm", + "to" => [ + rogerick.ap_id, + greg.ap_id, + Constants.as_public() + ], + "inReplyTo" => Object.normalize(post).data["id"] + } + } + + {:ok, %{"object" => %{"content" => filtered}}} = ForceMentionsInContent.filter(activity) + + assert filtered == + "#{Enum.at(inline_mentions, 0)} #{Enum.at(inline_mentions, 1)} erm" + end end diff --git a/test/pleroma/web/activity_pub/mrf/inline_quote_policy_test.exs b/test/pleroma/web/activity_pub/mrf/inline_quote_policy_test.exs @@ -0,0 +1,112 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.InlineQuotePolicyTest do + alias Pleroma.Web.ActivityPub.MRF.InlineQuotePolicy + use Pleroma.DataCase + + test "adds quote URL to post content" do + quote_url = "https://gleasonator.com/objects/1234" + + activity = %{ + "type" => "Create", + "actor" => "https://gleasonator.com/users/alex", + "object" => %{ + "type" => "Note", + "content" => "Nice post", + "quoteUrl" => quote_url + } + } + + {:ok, %{"object" => %{"content" => filtered}}} = InlineQuotePolicy.filter(activity) + + assert filtered == + "Nice post<span class=\"quote-inline\"><br/><br/><bdi>RT:</bdi> <a href=\"https://gleasonator.com/objects/1234\">https://gleasonator.com/objects/1234</a></span>" + end + + test "adds quote URL to post content, custom template" do + clear_config([:mrf_inline_quote, :template], "{url}'s quoting") + quote_url = "https://gleasonator.com/objects/1234" + + activity = %{ + "type" => "Create", + "actor" => "https://gleasonator.com/users/alex", + "object" => %{ + "type" => "Note", + "content" => "Nice post", + "quoteUrl" => quote_url + } + } + + {:ok, %{"object" => %{"content" => filtered}}} = InlineQuotePolicy.filter(activity) + + assert filtered == + "Nice post<span class=\"quote-inline\"><br/><br/><a href=\"https://gleasonator.com/objects/1234\">https://gleasonator.com/objects/1234</a>'s quoting</span>" + end + + test "doesn't add line breaks to markdown posts" do + quote_url = "https://gleasonator.com/objects/1234" + + activity = %{ + "type" => "Create", + "actor" => "https://gleasonator.com/users/alex", + "object" => %{ + "type" => "Note", + "content" => "<p>Nice post</p>", + "quoteUrl" => quote_url + } + } + + {:ok, %{"object" => %{"content" => filtered}}} = InlineQuotePolicy.filter(activity) + + assert filtered == + "<p>Nice post<span class=\"quote-inline\"><br/><br/><bdi>RT:</bdi> <a href=\"https://gleasonator.com/objects/1234\">https://gleasonator.com/objects/1234</a></span></p>" + end + + test "ignores Misskey quote posts" do + object = File.read!("test/fixtures/quote_post/misskey_quote_post.json") |> Jason.decode!() + + activity = %{ + "type" => "Create", + "actor" => "https://misskey.io/users/7rkrarq81i", + "object" => object + } + + {:ok, filtered} = InlineQuotePolicy.filter(activity) + assert filtered == activity + end + + test "ignores Fedibird quote posts" do + object = File.read!("test/fixtures/quote_post/fedibird_quote_post.json") |> Jason.decode!() + + # Normally the ObjectValidator will fix this before it reaches MRF + object = Map.put(object, "quoteUrl", object["quoteURL"]) + + activity = %{ + "type" => "Create", + "actor" => "https://fedibird.com/users/noellabo", + "object" => object + } + + {:ok, filtered} = InlineQuotePolicy.filter(activity) + assert filtered == activity + end + + test "skips objects which already have an .inline-quote span" do + object = + File.read!("test/fixtures/quote_post/fedibird_quote_mismatched.json") |> Jason.decode!() + + # Normally the ObjectValidator will fix this before it reaches MRF + object = Map.put(object, "quoteUrl", object["quoteUri"]) + + activity = %{ + "type" => "Create", + "actor" => "https://fedibird.com/users/noellabo", + "object" => object + } + + {:ok, filtered} = InlineQuotePolicy.filter(activity) + assert filtered == activity + end +end diff --git a/test/pleroma/web/activity_pub/mrf/media_proxy_warming_policy_test.exs b/test/pleroma/web/activity_pub/mrf/media_proxy_warming_policy_test.exs @@ -7,10 +7,12 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicyTest do use Pleroma.Tests.Helpers alias Pleroma.HTTP + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Web.ActivityPub.MRF alias Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy import Mock + import Mox @message %{ "type" => "Create", @@ -42,6 +44,13 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicyTest do } } + setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + :ok + end + setup do: clear_config([:media_proxy, :enabled], true) test "it prefetches media proxy URIs" do diff --git a/test/pleroma/web/activity_pub/mrf/nsfw_api_policy_test.exs b/test/pleroma/web/activity_pub/mrf/nsfw_api_policy_test.exs @@ -0,0 +1,267 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.NsfwApiPolicyTest do + use Pleroma.DataCase + + import ExUnit.CaptureLog + import Pleroma.Factory + + alias Pleroma.Constants + alias Pleroma.Web.ActivityPub.MRF.NsfwApiPolicy + + require Pleroma.Constants + + @policy :mrf_nsfw_api + + @sfw_url "https://kittens.co/kitty.gif" + @nsfw_url "https://b00bies.com/nsfw.jpg" + @timeout_url "http://time.out/i.jpg" + + setup_all do + clear_config(@policy, + url: "http://127.0.0.1:5000/", + threshold: 0.7, + mark_sensitive: true, + unlist: false, + reject: false + ) + end + + setup do + Tesla.Mock.mock(fn + # NSFW URL + %{method: :get, url: "http://127.0.0.1:5000/?url=#{@nsfw_url}"} -> + %Tesla.Env{status: 200, body: ~s({"score":0.99772077798843384,"url":"#{@nsfw_url}"})} + + # SFW URL + %{method: :get, url: "http://127.0.0.1:5000/?url=#{@sfw_url}"} -> + %Tesla.Env{status: 200, body: ~s({"score":0.00011714912398019806,"url":"#{@sfw_url}"})} + + # Timeout URL + %{method: :get, url: "http://127.0.0.1:5000/?url=#{@timeout_url}"} -> + {:error, :timeout} + + # Fallback URL + %{method: :get, url: "http://127.0.0.1:5000/?url=" <> url} -> + body = + ~s({"error_code":500,"error_reason":"[Errno -2] Name or service not known","url":"#{url}"}) + + %Tesla.Env{status: 500, body: body} + end) + + :ok + end + + describe "build_request_url/1" do + test "it works" do + expected = "http://127.0.0.1:5000/?url=https://b00bies.com/nsfw.jpg" + assert NsfwApiPolicy.build_request_url(@nsfw_url) == expected + end + + test "it adds a trailing slash" do + clear_config([@policy, :url], "http://localhost:5000") + + expected = "http://localhost:5000/?url=https://b00bies.com/nsfw.jpg" + assert NsfwApiPolicy.build_request_url(@nsfw_url) == expected + end + + test "it adds a trailing slash preserving the path" do + clear_config([@policy, :url], "http://localhost:5000/nsfw_api") + + expected = "http://localhost:5000/nsfw_api/?url=https://b00bies.com/nsfw.jpg" + assert NsfwApiPolicy.build_request_url(@nsfw_url) == expected + end + end + + describe "parse_url/1" do + test "returns decoded JSON from the API server" do + expected = %{"score" => 0.99772077798843384, "url" => @nsfw_url} + assert NsfwApiPolicy.parse_url(@nsfw_url) == {:ok, expected} + end + + test "warns when the API server fails" do + expected = "[NsfwApiPolicy]: The API server failed. Skipping." + assert capture_log(fn -> NsfwApiPolicy.parse_url(@timeout_url) end) =~ expected + end + + test "returns {:error, _} tuple when the API server fails" do + capture_log(fn -> + assert {:error, _} = NsfwApiPolicy.parse_url(@timeout_url) + end) + end + end + + describe "check_url_nsfw/1" do + test "returns {:nsfw, _} tuple" do + expected = {:nsfw, %{url: @nsfw_url, score: 0.99772077798843384, threshold: 0.7}} + assert NsfwApiPolicy.check_url_nsfw(@nsfw_url) == expected + end + + test "returns {:sfw, _} tuple" do + expected = {:sfw, %{url: @sfw_url, score: 0.00011714912398019806, threshold: 0.7}} + assert NsfwApiPolicy.check_url_nsfw(@sfw_url) == expected + end + + test "returns {:sfw, _} on failure" do + expected = {:sfw, %{url: @timeout_url, score: nil, threshold: 0.7}} + + capture_log(fn -> + assert NsfwApiPolicy.check_url_nsfw(@timeout_url) == expected + end) + end + + test "works with map URL" do + expected = {:nsfw, %{url: @nsfw_url, score: 0.99772077798843384, threshold: 0.7}} + assert NsfwApiPolicy.check_url_nsfw(%{"href" => @nsfw_url}) == expected + end + end + + describe "check_attachment_nsfw/1" do + test "returns {:nsfw, _} if any items are NSFW" do + attachment = %{"url" => [%{"href" => @nsfw_url}, @nsfw_url, @sfw_url]} + assert NsfwApiPolicy.check_attachment_nsfw(attachment) == {:nsfw, attachment} + end + + test "returns {:sfw, _} if all items are SFW" do + attachment = %{"url" => [%{"href" => @sfw_url}, @sfw_url, @sfw_url]} + assert NsfwApiPolicy.check_attachment_nsfw(attachment) == {:sfw, attachment} + end + + test "works with binary URL" do + attachment = %{"url" => @nsfw_url} + assert NsfwApiPolicy.check_attachment_nsfw(attachment) == {:nsfw, attachment} + end + end + + describe "check_object_nsfw/1" do + test "returns {:nsfw, _} if any items are NSFW" do + object = %{"attachment" => [%{"url" => [%{"href" => @nsfw_url}, @sfw_url]}]} + assert NsfwApiPolicy.check_object_nsfw(object) == {:nsfw, object} + end + + test "returns {:sfw, _} if all items are SFW" do + object = %{"attachment" => [%{"url" => [%{"href" => @sfw_url}, @sfw_url]}]} + assert NsfwApiPolicy.check_object_nsfw(object) == {:sfw, object} + end + + test "works with embedded object" do + object = %{"object" => %{"attachment" => [%{"url" => [%{"href" => @nsfw_url}, @sfw_url]}]}} + assert NsfwApiPolicy.check_object_nsfw(object) == {:nsfw, object} + end + end + + describe "unlist/1" do + test "unlist addressing" do + user = insert(:user) + + object = %{ + "to" => [Constants.as_public()], + "cc" => [user.follower_address, "https://hello.world/users/alex"], + "actor" => user.ap_id + } + + expected = %{ + "to" => [user.follower_address], + "cc" => [Constants.as_public(), "https://hello.world/users/alex"], + "actor" => user.ap_id + } + + assert NsfwApiPolicy.unlist(object) == expected + end + + test "raise if user isn't found" do + object = %{ + "to" => [Constants.as_public()], + "cc" => [], + "actor" => "https://hello.world/users/alex" + } + + assert_raise(RuntimeError, fn -> + NsfwApiPolicy.unlist(object) + end) + end + end + + describe "mark_sensitive/1" do + test "adds nsfw tag and marks sensitive" do + object = %{"tag" => ["yolo"]} + expected = %{"tag" => ["yolo", "nsfw"], "sensitive" => true} + assert NsfwApiPolicy.mark_sensitive(object) == expected + end + + test "works with embedded object" do + object = %{"object" => %{"tag" => ["yolo"]}} + expected = %{"object" => %{"tag" => ["yolo", "nsfw"], "sensitive" => true}} + assert NsfwApiPolicy.mark_sensitive(object) == expected + end + end + + describe "filter/1" do + setup do + user = insert(:user) + + nsfw_object = %{ + "to" => [Constants.as_public()], + "cc" => [user.follower_address], + "actor" => user.ap_id, + "attachment" => [%{"url" => @nsfw_url}] + } + + sfw_object = %{ + "to" => [Constants.as_public()], + "cc" => [user.follower_address], + "actor" => user.ap_id, + "attachment" => [%{"url" => @sfw_url}] + } + + %{user: user, nsfw_object: nsfw_object, sfw_object: sfw_object} + end + + test "passes SFW object through", %{sfw_object: object} do + {:ok, _} = NsfwApiPolicy.filter(object) + end + + test "passes NSFW object through when actions are disabled", %{nsfw_object: object} do + clear_config([@policy, :mark_sensitive], false) + clear_config([@policy, :unlist], false) + clear_config([@policy, :reject], false) + {:ok, _} = NsfwApiPolicy.filter(object) + end + + test "passes NSFW object through when :threshold is 1", %{nsfw_object: object} do + clear_config([@policy, :reject], true) + clear_config([@policy, :threshold], 1) + {:ok, _} = NsfwApiPolicy.filter(object) + end + + test "rejects SFW object through when :threshold is 0", %{sfw_object: object} do + clear_config([@policy, :reject], true) + clear_config([@policy, :threshold], 0) + {:reject, _} = NsfwApiPolicy.filter(object) + end + + test "rejects NSFW when :reject is enabled", %{nsfw_object: object} do + clear_config([@policy, :reject], true) + {:reject, _} = NsfwApiPolicy.filter(object) + end + + test "passes NSFW through when :reject is disabled", %{nsfw_object: object} do + clear_config([@policy, :reject], false) + {:ok, _} = NsfwApiPolicy.filter(object) + end + + test "unlists NSFW when :unlist is enabled", %{user: user, nsfw_object: object} do + clear_config([@policy, :unlist], true) + {:ok, object} = NsfwApiPolicy.filter(object) + assert object["to"] == [user.follower_address] + end + + test "passes NSFW through when :unlist is disabled", %{nsfw_object: object} do + clear_config([@policy, :unlist], false) + {:ok, object} = NsfwApiPolicy.filter(object) + assert object["to"] == [Constants.as_public()] + end + end +end diff --git a/test/pleroma/web/activity_pub/mrf/quote_to_link_tag_policy_test.exs b/test/pleroma/web/activity_pub/mrf/quote_to_link_tag_policy_test.exs @@ -0,0 +1,73 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.QuoteToLinkTagPolicyTest do + alias Pleroma.Web.ActivityPub.MRF.QuoteToLinkTagPolicy + + use Pleroma.DataCase + + require Pleroma.Constants + + test "Add quote url to Link tag" do + quote_url = "https://gleasonator.com/objects/1234" + + activity = %{ + "type" => "Create", + "actor" => "https://gleasonator.com/users/alex", + "object" => %{ + "type" => "Note", + "content" => "Nice post", + "quoteUrl" => quote_url + } + } + + {:ok, %{"object" => object}} = QuoteToLinkTagPolicy.filter(activity) + + assert object["tag"] == [ + %{ + "type" => "Link", + "href" => quote_url, + "mediaType" => Pleroma.Constants.activity_json_canonical_mime_type() + } + ] + end + + test "Add quote url to Link tag, append to the end" do + quote_url = "https://gleasonator.com/objects/1234" + + activity = %{ + "type" => "Create", + "actor" => "https://gleasonator.com/users/alex", + "object" => %{ + "type" => "Note", + "content" => "Nice post", + "quoteUrl" => quote_url, + "tag" => [%{"type" => "Hashtag", "name" => "#foo"}] + } + } + + {:ok, %{"object" => object}} = QuoteToLinkTagPolicy.filter(activity) + + assert [_, tag] = object["tag"] + + assert tag == %{ + "type" => "Link", + "href" => quote_url, + "mediaType" => Pleroma.Constants.activity_json_canonical_mime_type() + } + end + + test "Bypass posts without quoteUrl" do + activity = %{ + "type" => "Create", + "actor" => "https://gleasonator.com/users/alex", + "object" => %{ + "type" => "Note", + "content" => "Nice post" + } + } + + assert {:ok, ^activity} = QuoteToLinkTagPolicy.filter(activity) + end +end diff --git a/test/pleroma/web/activity_pub/mrf/steal_emoji_policy_test.exs b/test/pleroma/web/activity_pub/mrf/steal_emoji_policy_test.exs @@ -60,6 +60,59 @@ defmodule Pleroma.Web.ActivityPub.MRF.StealEmojiPolicyTest do |> File.exists?() end + test "works with unknown extension", %{path: path} do + message = %{ + "type" => "Create", + "object" => %{ + "emoji" => [{"firedfox", "https://example.org/emoji/firedfox"}], + "actor" => "https://example.org/users/admin" + } + } + + fullpath = Path.join(path, "firedfox.png") + + Tesla.Mock.mock(fn %{method: :get, url: "https://example.org/emoji/firedfox"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/image.jpg")} + end) + + clear_config(:mrf_steal_emoji, hosts: ["example.org"], size_limit: 284_468) + + refute "firedfox" in installed() + refute File.exists?(path) + + assert {:ok, _message} = StealEmojiPolicy.filter(message) + + assert "firedfox" in installed() + assert File.exists?(path) + assert File.exists?(fullpath) + end + + test "rejects invalid shortcodes", %{path: path} do + message = %{ + "type" => "Create", + "object" => %{ + "emoji" => [{"fired/fox", "https://example.org/emoji/firedfox"}], + "actor" => "https://example.org/users/admin" + } + } + + fullpath = Path.join(path, "fired/fox.png") + + Tesla.Mock.mock(fn %{method: :get, url: "https://example.org/emoji/firedfox"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/image.jpg")} + end) + + clear_config(:mrf_steal_emoji, hosts: ["example.org"], size_limit: 284_468) + + refute "firedfox" in installed() + refute File.exists?(path) + + assert {:ok, _message} = StealEmojiPolicy.filter(message) + + refute "fired/fox" in installed() + refute File.exists?(fullpath) + end + test "reject regex shortcode", %{message: message} do refute "firedfox" in installed() diff --git a/test/pleroma/web/activity_pub/mrf/utils_test.exs b/test/pleroma/web/activity_pub/mrf/utils_test.exs @@ -0,0 +1,19 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.UtilsTest do + use Pleroma.DataCase, async: true + + alias Pleroma.Web.ActivityPub.MRF.Utils + + describe "describe_regex_or_string/1" do + test "describes regex" do + assert "~r/foo/i" == Utils.describe_regex_or_string(~r/foo/i) + end + + test "returns string as-is" do + assert "foo" == Utils.describe_regex_or_string("foo") + end + end +end diff --git a/test/pleroma/web/activity_pub/mrf_test.exs b/test/pleroma/web/activity_pub/mrf_test.exs @@ -1,10 +1,13 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.MRFTest do - use ExUnit.Case, async: true + use ExUnit.Case use Pleroma.Tests.Helpers + + import ExUnit.CaptureLog + alias Pleroma.Web.ActivityPub.MRF test "subdomains_regex/1" do @@ -61,6 +64,14 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do refute MRF.subdomain_match?(regexes, "EXAMPLE.COM") refute MRF.subdomain_match?(regexes, "example.com") end + + @tag capture_log: true + test "logs sensible error on accidental wildcard" do + assert_raise Regex.CompileError, fn -> + assert capture_log(MRF.subdomains_regex(["*unsafe.tld"])) =~ + "MRF: Invalid subdomain Regex: *unsafe.tld" + end + end end describe "instance_list_from_tuples/1" do diff --git a/test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs b/test/pleroma/web/activity_pub/object_validators/article_note_page_validator_test.exs @@ -93,6 +93,17 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidatorTest %{valid?: true} = ArticleNotePageValidator.cast_and_validate(note) end + test "a Note from Convergence AP Bridge validates" do + insert(:user, ap_id: "https://cc.mkdir.uk/ap/acct/hiira") + + note = + "test/fixtures/ccworld-ap-bridge_note.json" + |> File.read!() + |> Jason.decode!() + + %{valid?: true} = ArticleNotePageValidator.cast_and_validate(note) + end + test "a note with an attachment should work", _ do insert(:user, %{ap_id: "https://owncast.localhost.localdomain/federation/user/streamer"}) @@ -116,4 +127,53 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNotePageValidatorTest %{valid?: true} = ArticleNotePageValidator.cast_and_validate(note) end + + test "Fedibird quote post" do + insert(:user, ap_id: "https://fedibird.com/users/noellabo") + + data = File.read!("test/fixtures/quote_post/fedibird_quote_post.json") |> Jason.decode!() + cng = ArticleNotePageValidator.cast_and_validate(data) + + assert cng.valid? + assert cng.changes.quoteUrl == "https://misskey.io/notes/8vsn2izjwh" + end + + test "Fedibird quote post with quoteUri field" do + insert(:user, ap_id: "https://fedibird.com/users/noellabo") + + data = File.read!("test/fixtures/quote_post/fedibird_quote_uri.json") |> Jason.decode!() + cng = ArticleNotePageValidator.cast_and_validate(data) + + assert cng.valid? + assert cng.changes.quoteUrl == "https://fedibird.com/users/yamako/statuses/107699333438289729" + end + + test "Misskey quote post" do + insert(:user, ap_id: "https://misskey.io/users/7rkrarq81i") + + data = File.read!("test/fixtures/quote_post/misskey_quote_post.json") |> Jason.decode!() + cng = ArticleNotePageValidator.cast_and_validate(data) + + assert cng.valid? + assert cng.changes.quoteUrl == "https://misskey.io/notes/8vs6wxufd0" + end + + test "Parse tag as quote" do + # https://codeberg.org/fediverse/fep/src/branch/main/fep/e232/fep-e232.md + + insert(:user, ap_id: "https://server.example/users/1") + + data = File.read!("test/fixtures/quote_post/fep-e232-tag-example.json") |> Jason.decode!() + cng = ArticleNotePageValidator.cast_and_validate(data) + + assert cng.valid? + assert cng.changes.quoteUrl == "https://server.example/objects/123" + + assert Enum.at(cng.changes.tag, 0).changes == %{ + type: "Link", + mediaType: "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"", + href: "https://server.example/objects/123", + name: "RE: https://server.example/objects/123" + } + end end diff --git a/test/pleroma/web/activity_pub/object_validators/attachment_validator_test.exs b/test/pleroma/web/activity_pub/object_validators/attachment_validator_test.exs @@ -5,9 +5,11 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidatorTest do use Pleroma.DataCase, async: true + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator + import Mox import Pleroma.Factory describe "attachments" do @@ -119,6 +121,9 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidatorTest do filename: "an_image.jpg" } + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + {:ok, attachment} = ActivityPub.upload(file, actor: user.ap_id) {:ok, attachment} = @@ -162,7 +167,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidatorTest do assert attachment.mediaType == "image/jpeg" end - test "it transforms image dimentions to our internal format" do + test "it transforms image dimensions to our internal format" do attachment = %{ "type" => "Document", "name" => "Hello world", diff --git a/test/pleroma/web/activity_pub/object_validators/chat_validation_test.exs b/test/pleroma/web/activity_pub/object_validators/chat_validation_test.exs @@ -5,11 +5,13 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ChatValidationTest do use Pleroma.DataCase alias Pleroma.Object + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Builder alias Pleroma.Web.ActivityPub.ObjectValidator alias Pleroma.Web.CommonAPI + import Mox import Pleroma.Factory describe "chat message create activities" do @@ -82,6 +84,9 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ChatValidationTest do filename: "an_image.jpg" } + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + {:ok, attachment} = ActivityPub.upload(file, actor: user.ap_id) valid_chat_message = @@ -103,6 +108,9 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ChatValidationTest do filename: "an_image.jpg" } + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + {:ok, attachment} = ActivityPub.upload(file, actor: user.ap_id) valid_chat_message = @@ -124,6 +132,9 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ChatValidationTest do filename: "an_image.jpg" } + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + {:ok, attachment} = ActivityPub.upload(file, actor: user.ap_id) valid_chat_message = @@ -136,6 +147,21 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.ChatValidationTest do assert object["attachment"] end + test "validates for a basic object with content but attachment set to empty array", %{ + user: user, + recipient: recipient + } do + {:ok, valid_chat_message, _} = Builder.chat_message(user, recipient.ap_id, "Hello!") + + valid_chat_message = + valid_chat_message + |> Map.put("attachment", []) + + assert {:ok, object, _meta} = ObjectValidator.validate(valid_chat_message, []) + + assert object == Map.drop(valid_chat_message, ["attachment"]) + end + test "does not validate if the message has no content", %{ valid_chat_message: valid_chat_message } do diff --git a/test/pleroma/web/activity_pub/object_validators/emoji_react_handling_test.exs b/test/pleroma/web/activity_pub/object_validators/emoji_react_handling_test.exs @@ -38,16 +38,70 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactHandlingTest do assert {:content, {"can't be blank", [validation: :required]}} in cng.errors end - test "it is not valid with a non-emoji content field", %{valid_emoji_react: valid_emoji_react} do + test "it is valid when custom emoji is used", %{valid_emoji_react: valid_emoji_react} do without_emoji_content = valid_emoji_react - |> Map.put("content", "x") + |> Map.put("content", ":hello:") + |> Map.put("tag", [ + %{ + "type" => "Emoji", + "name" => ":hello:", + "icon" => %{"url" => "http://somewhere", "type" => "Image"} + } + ]) + + {:ok, _, _} = ObjectValidator.validate(without_emoji_content, []) + end + + test "it is not valid when custom emoji don't have a matching tag", %{ + valid_emoji_react: valid_emoji_react + } do + without_emoji_content = + valid_emoji_react + |> Map.put("content", ":hello:") + |> Map.put("tag", [ + %{ + "type" => "Emoji", + "name" => ":whoops:", + "icon" => %{"url" => "http://somewhere", "type" => "Image"} + } + ]) + + {:error, cng} = ObjectValidator.validate(without_emoji_content, []) + + refute cng.valid? + + assert {:tag, {"does not contain an Emoji tag", []}} in cng.errors + end + + test "it is not valid when custom emoji have no tags", %{ + valid_emoji_react: valid_emoji_react + } do + without_emoji_content = + valid_emoji_react + |> Map.put("content", ":hello:") + |> Map.put("tag", []) + + {:error, cng} = ObjectValidator.validate(without_emoji_content, []) + + refute cng.valid? + + assert {:tag, {"does not contain an Emoji tag", []}} in cng.errors + end + + test "it is not valid when custom emoji doesn't match a shortcode format", %{ + valid_emoji_react: valid_emoji_react + } do + without_emoji_content = + valid_emoji_react + |> Map.put("content", "hello") + |> Map.put("tag", []) {:error, cng} = ObjectValidator.validate(without_emoji_content, []) refute cng.valid? - assert {:content, {"must be a single character emoji", []}} in cng.errors + assert {:tag, {"does not contain an Emoji tag", []}} in cng.errors end end end diff --git a/test/pleroma/web/activity_pub/publisher_test.exs b/test/pleroma/web/activity_pub/publisher_test.exs @@ -25,6 +25,17 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do setup_all do: clear_config([:instance, :federating], true) + describe "should_federate?/1" do + test "it returns false when the inbox is nil" do + refute Publisher.should_federate?(nil, false) + refute Publisher.should_federate?(nil, true) + end + + test "it returns true when public is true" do + assert Publisher.should_federate?(false, true) + end + end + describe "gather_webfinger_links/1" do test "it returns links" do user = insert(:user) @@ -205,6 +216,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do refute called(Instances.set_reachable(inbox)) end + @tag capture_log: true test_with_mock "calls `Instances.set_unreachable` on target inbox on non-2xx HTTP response code", Instances, [:passthrough], @@ -212,7 +224,8 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do actor = insert(:user) inbox = "http://404.site/users/nick1/inbox" - assert {:error, _} = Publisher.publish_one(%{inbox: inbox, json: "{}", actor: actor, id: 1}) + assert {:discard, _} = + Publisher.publish_one(%{inbox: inbox, json: "{}", actor: actor, id: 1}) assert called(Instances.set_unreachable(inbox)) end @@ -268,7 +281,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do describe "publish/2" do test_with_mock "doesn't publish a non-public activity to quarantined instances.", - Pleroma.Web.Federator.Publisher, + Pleroma.Web.ActivityPub.Publisher, [:passthrough], [] do Config.put([:instance, :quarantined_instances], [{"domain.com", "some reason"}]) @@ -276,8 +289,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do follower = insert(:user, %{ local: false, - inbox: "https://domain.com/users/nick1/inbox", - ap_enabled: true + inbox: "https://domain.com/users/nick1/inbox" }) actor = insert(:user, follower_address: follower.ap_id) @@ -296,7 +308,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do assert res == :ok assert not called( - Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{ + Publisher.enqueue_one(%{ inbox: "https://domain.com/users/nick1/inbox", actor_id: actor.id, id: note_activity.data["id"] @@ -305,7 +317,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do end test_with_mock "Publishes a non-public activity to non-quarantined instances.", - Pleroma.Web.Federator.Publisher, + Pleroma.Web.ActivityPub.Publisher, [:passthrough], [] do Config.put([:instance, :quarantined_instances], [{"somedomain.com", "some reason"}]) @@ -313,8 +325,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do follower = insert(:user, %{ local: false, - inbox: "https://domain.com/users/nick1/inbox", - ap_enabled: true + inbox: "https://domain.com/users/nick1/inbox" }) actor = insert(:user, follower_address: follower.ap_id) @@ -333,23 +344,49 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do assert res == :ok assert called( - Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{ - inbox: "https://domain.com/users/nick1/inbox", - actor_id: actor.id, - id: note_activity.data["id"] - }) + Publisher.enqueue_one( + %{ + inbox: "https://domain.com/users/nick1/inbox", + actor_id: actor.id, + id: note_activity.data["id"] + }, + priority: 1 + ) + ) + end + + test_with_mock "Publishes to directly addressed actors with higher priority.", + Pleroma.Web.ActivityPub.Publisher, + [:passthrough], + [] do + note_activity = insert(:direct_note_activity) + + actor = Pleroma.User.get_by_ap_id(note_activity.data["actor"]) + + res = Publisher.publish(actor, note_activity) + + assert res == :ok + + assert called( + Publisher.enqueue_one( + %{ + inbox: :_, + actor_id: actor.id, + id: note_activity.data["id"] + }, + priority: 0 + ) ) end test_with_mock "publishes an activity with BCC to all relevant peers.", - Pleroma.Web.Federator.Publisher, + Pleroma.Web.ActivityPub.Publisher, [:passthrough], [] do follower = insert(:user, %{ local: false, - inbox: "https://domain.com/users/nick1/inbox", - ap_enabled: true + inbox: "https://domain.com/users/nick1/inbox" }) actor = insert(:user, follower_address: follower.ap_id) @@ -367,7 +404,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do assert res == :ok assert called( - Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{ + Publisher.enqueue_one(%{ inbox: "https://domain.com/users/nick1/inbox", actor_id: actor.id, id: note_activity.data["id"] @@ -376,21 +413,19 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do end test_with_mock "publishes a delete activity to peers who signed fetch requests to the create acitvity/object.", - Pleroma.Web.Federator.Publisher, + Pleroma.Web.ActivityPub.Publisher, [:passthrough], [] do fetcher = insert(:user, local: false, - inbox: "https://domain.com/users/nick1/inbox", - ap_enabled: true + inbox: "https://domain.com/users/nick1/inbox" ) another_fetcher = insert(:user, local: false, - inbox: "https://domain2.com/users/nick1/inbox", - ap_enabled: true + inbox: "https://domain2.com/users/nick1/inbox" ) actor = insert(:user) @@ -419,19 +454,25 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do assert res == :ok assert called( - Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{ - inbox: "https://domain.com/users/nick1/inbox", - actor_id: actor.id, - id: delete.data["id"] - }) + Publisher.enqueue_one( + %{ + inbox: "https://domain.com/users/nick1/inbox", + actor_id: actor.id, + id: delete.data["id"] + }, + priority: 1 + ) ) assert called( - Pleroma.Web.Federator.Publisher.enqueue_one(Publisher, %{ - inbox: "https://domain2.com/users/nick1/inbox", - actor_id: actor.id, - id: delete.data["id"] - }) + Publisher.enqueue_one( + %{ + inbox: "https://domain2.com/users/nick1/inbox", + actor_id: actor.id, + id: delete.data["id"] + }, + priority: 1 + ) ) end end diff --git a/test/pleroma/web/activity_pub/side_effects_test.exs b/test/pleroma/web/activity_pub/side_effects_test.exs @@ -17,11 +17,19 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Builder alias Pleroma.Web.ActivityPub.SideEffects + alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.CommonAPI + alias Pleroma.Web.CommonAPI.ActivityDraft import Mock import Pleroma.Factory + defp get_announces_of_object(%{data: %{"id" => id}} = _object) do + Pleroma.Activity.Queries.by_type("Announce") + |> Pleroma.Activity.Queries.by_object_id(id) + |> Pleroma.Repo.all() + end + describe "handle_after_transaction" do test "it streams out notifications and streams" do author = insert(:user, local: true) @@ -453,7 +461,7 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do object = Object.get_by_ap_id(emoji_react.data["object"]) assert object.data["reaction_count"] == 1 - assert ["👌", [user.ap_id]] in object.data["reactions"] + assert ["👌", [user.ap_id], nil] in object.data["reactions"] end test "creates a notification", %{emoji_react: emoji_react, poster: poster} do @@ -819,31 +827,6 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do {:ok, announce, _} = SideEffects.handle(announce) assert Repo.get_by(Notification, user_id: poster.id, activity_id: announce.id) end - - test "it streams out the announce", %{announce: announce} do - with_mocks([ - { - Pleroma.Web.Streamer, - [], - [ - stream: fn _, _ -> nil end - ] - }, - { - Pleroma.Web.Push, - [], - [ - send: fn _ -> nil end - ] - } - ]) do - {:ok, announce, _} = SideEffects.handle(announce) - - assert called(Pleroma.Web.Streamer.stream(["user", "list"], announce)) - - assert called(Pleroma.Web.Push.send(:_)) - end - end end describe "removing a follower" do @@ -915,4 +898,85 @@ defmodule Pleroma.Web.ActivityPub.SideEffectsTest do assert User.get_follow_state(user, followed, nil) == nil end end + + describe "Group actors" do + setup do + poster = + insert(:user, + local: false, + nickname: "poster@example.com", + ap_id: "https://example.com/users/poster" + ) + + group = insert(:user, actor_type: "Group") + + make_create = fn mentioned_users -> + mentions = mentioned_users |> Enum.map(fn u -> "@#{u.nickname}" end) |> Enum.join(" ") + {:ok, draft} = ActivityDraft.create(poster, %{status: "#{mentions} hey"}) + + create_activity_data = + Utils.make_create_data(draft.changes |> Map.put(:published, nil), %{}) + |> put_in(["object", "id"], "https://example.com/object") + |> put_in(["id"], "https://example.com/activity") + + assert Enum.all?(mentioned_users, fn u -> u.ap_id in create_activity_data["to"] end) + + create_activity_data + end + + %{poster: poster, group: group, make_create: make_create} + end + + test "group should boost it", %{make_create: make_create, group: group} do + create_activity_data = make_create.([group]) + {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false) + + {:ok, _create_activity, _meta} = + SideEffects.handle(create_activity, + local: false, + object_data: create_activity_data["object"] + ) + + object = Object.normalize(create_activity, fetch: false) + assert [announce] = get_announces_of_object(object) + assert announce.actor == group.ap_id + end + + test "remote group should not boost it", %{make_create: make_create, group: group} do + remote_group = + insert(:user, actor_type: "Group", local: false, nickname: "remotegroup@example.com") + + create_activity_data = make_create.([group, remote_group]) + {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false) + + {:ok, _create_activity, _meta} = + SideEffects.handle(create_activity, + local: false, + object_data: create_activity_data["object"] + ) + + object = Object.normalize(create_activity, fetch: false) + assert [announce] = get_announces_of_object(object) + assert announce.actor == group.ap_id + end + + test "group should not boost it if group is blocking poster", %{ + make_create: make_create, + group: group, + poster: poster + } do + {:ok, _} = CommonAPI.block(group, poster) + create_activity_data = make_create.([group]) + {:ok, create_activity, _meta} = ActivityPub.persist(create_activity_data, local: false) + + {:ok, _create_activity, _meta} = + SideEffects.handle(create_activity, + local: false, + object_data: create_activity_data["object"] + ) + + object = Object.normalize(create_activity, fetch: false) + assert [] = get_announces_of_object(object) + end + end end diff --git a/test/pleroma/web/activity_pub/transmogrifier/emoji_react_handling_test.exs b/test/pleroma/web/activity_pub/transmogrifier/emoji_react_handling_test.exs @@ -34,7 +34,56 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.EmojiReactHandlingTest do object = Object.get_by_ap_id(data["object"]) assert object.data["reaction_count"] == 1 - assert match?([["👌", _]], object.data["reactions"]) + assert match?([["👌", _, nil]], object.data["reactions"]) + end + + test "it works for incoming custom emoji reactions" do + user = insert(:user) + other_user = insert(:user, local: false) + {:ok, activity} = CommonAPI.post(user, %{status: "hello"}) + + data = + File.read!("test/fixtures/custom-emoji-reaction.json") + |> Jason.decode!() + |> Map.put("object", activity.data["object"]) + |> Map.put("actor", other_user.ap_id) + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + assert data["actor"] == other_user.ap_id + assert data["type"] == "EmojiReact" + assert data["id"] == "https://misskey.local.live/likes/917ocsybgp" + assert data["object"] == activity.data["object"] + assert data["content"] == ":hanapog:" + + assert data["tag"] == [ + %{ + "id" => "https://misskey.local.live/emojis/hanapog", + "type" => "Emoji", + "name" => "hanapog", + "updated" => "2022-06-07T12:00:05.773Z", + "icon" => %{ + "type" => "Image", + "url" => + "https://misskey.local.live/files/webpublic-8f8a9768-7264-4171-88d6-2356aabeadcd" + } + } + ] + + object = Object.get_by_ap_id(data["object"]) + + assert object.data["reaction_count"] == 1 + + assert match?( + [ + [ + "hanapog", + _, + "https://misskey.local.live/files/webpublic-8f8a9768-7264-4171-88d6-2356aabeadcd" + ] + ], + object.data["reactions"] + ) end test "it works for incoming unqualified emoji reactions" do @@ -65,7 +114,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.EmojiReactHandlingTest do object = Object.get_by_ap_id(data["object"]) assert object.data["reaction_count"] == 1 - assert match?([[^emoji, _]], object.data["reactions"]) + assert match?([[^emoji, _, _]], object.data["reactions"]) end test "it reject invalid emoji reactions" do diff --git a/test/pleroma/web/activity_pub/transmogrifier/image_handling_test.exs b/test/pleroma/web/activity_pub/transmogrifier/image_handling_test.exs @@ -0,0 +1,50 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.Transmogrifier.ImageHandlingTest do + use Oban.Testing, repo: Pleroma.Repo + use Pleroma.DataCase + + alias Pleroma.Activity + alias Pleroma.Object + alias Pleroma.Web.ActivityPub.Transmogrifier + + test "Hubzilla Image object" do + Tesla.Mock.mock(fn + %{url: "https://hub.somaton.com/channel/testc6"} -> + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/hubzilla-actor.json"), + headers: HttpRequestMock.activitypub_object_headers() + } + end) + + data = File.read!("test/fixtures/hubzilla-create-image.json") |> Poison.decode!() + + {:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data) + + assert object = Object.normalize(activity, fetch: false) + + assert object.data["to"] == ["https://www.w3.org/ns/activitystreams#Public"] + + assert object.data["cc"] == ["https://hub.somaton.com/followers/testc6"] + + assert object.data["attachment"] == [ + %{ + "mediaType" => "image/jpeg", + "type" => "Link", + "url" => [ + %{ + "height" => 2200, + "href" => + "https://hub.somaton.com/photo/452583b2-7e1f-4ac3-8334-ff666f134afe-0.jpg", + "mediaType" => "image/jpeg", + "type" => "Link", + "width" => 2200 + } + ] + } + ] + end +end diff --git a/test/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs b/test/pleroma/web/activity_pub/transmogrifier/note_handling_test.exs @@ -221,6 +221,19 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.NoteHandlingTest do "<p><span class=\"h-card\"><a href=\"http://localtesting.pleroma.lol/users/lain\" class=\"u-url mention\">@<span>lain</span></a></span></p>" end + test "it works for incoming notices with a nil contentMap (firefish)" do + data = + File.read!("test/fixtures/mastodon-post-activity-contentmap.json") + |> Jason.decode!() + |> Map.put("contentMap", nil) + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + object = Object.normalize(data["object"], fetch: false) + + assert object.data["content"] == + "<p><span class=\"h-card\"><a href=\"http://localtesting.pleroma.lol/users/lain\" class=\"u-url mention\">@<span>lain</span></a></span></p>" + end + test "it works for incoming notices with to/cc not being an array (kroeg)" do data = File.read!("test/fixtures/kroeg-post-activity.json") |> Jason.decode!() @@ -508,7 +521,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.NoteHandlingTest do [data: data] end - test "returns not modified object when hasn't containts inReplyTo field", %{data: data} do + test "returns not modified object when has no inReplyTo field", %{data: data} do assert Transmogrifier.fix_in_reply_to(data) == data end diff --git a/test/pleroma/web/activity_pub/transmogrifier/undo_handling_test.exs b/test/pleroma/web/activity_pub/transmogrifier/undo_handling_test.exs @@ -32,7 +32,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.UndoHandlingTest do assert activity.data["type"] == "Undo" end - test "it returns an error for incoming unlikes wihout a like activity" do + test "it returns an error for incoming unlikes without a like activity" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{status: "leave a like pls"}) diff --git a/test/pleroma/web/activity_pub/transmogrifier_test.exs b/test/pleroma/web/activity_pub/transmogrifier_test.exs @@ -8,7 +8,6 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do alias Pleroma.Activity alias Pleroma.Object - alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.ActivityPub.Utils @@ -123,6 +122,40 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert activity.data["context"] == object.data["context"] end + + test "it keeps link tags" do + insert(:user, ap_id: "https://example.org/users/alice") + + message = File.read!("test/fixtures/fep-e232.json") |> Jason.decode!() + + assert capture_log(fn -> + assert {:ok, activity} = Transmogrifier.handle_incoming(message) + object = Object.normalize(activity) + assert [%{"type" => "Mention"}, %{"type" => "Link"}] = object.data["tag"] + end) =~ "Object rejected while fetching" + end + + test "it accepts quote posts" do + insert(:user, ap_id: "https://misskey.io/users/7rkrarq81i") + + object = File.read!("test/fixtures/quote_post/misskey_quote_post.json") |> Jason.decode!() + + message = %{ + "@context" => "https://www.w3.org/ns/activitystreams", + "type" => "Create", + "actor" => "https://misskey.io/users/7rkrarq81i", + "object" => object + } + + assert {:ok, activity} = Transmogrifier.handle_incoming(message) + + # Object was created in the database + object = Object.normalize(activity) + assert object.data["quoteUrl"] == "https://misskey.io/notes/8vs6wxufd0" + + # It fetched the quoted post + assert Object.normalize("https://misskey.io/notes/8vs6wxufd0") + end end describe "prepare outgoing" do @@ -337,68 +370,19 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do } } = prepared["object"] end - end - - describe "user upgrade" do - test "it upgrades a user to activitypub" do - user = - insert(:user, %{ - nickname: "rye@niu.moe", - local: false, - ap_id: "https://niu.moe/users/rye", - follower_address: User.ap_followers(%User{nickname: "rye@niu.moe"}) - }) - - user_two = insert(:user) - Pleroma.FollowingRelationship.follow(user_two, user, :follow_accept) - - {:ok, activity} = CommonAPI.post(user, %{status: "test"}) - {:ok, unrelated_activity} = CommonAPI.post(user_two, %{status: "test"}) - assert "http://localhost:4001/users/rye@niu.moe/followers" in activity.recipients - - user = User.get_cached_by_id(user.id) - assert user.note_count == 1 - {:ok, user} = Transmogrifier.upgrade_user_from_ap_id("https://niu.moe/users/rye") - ObanHelpers.perform_all() - - assert user.ap_enabled - assert user.note_count == 1 - assert user.follower_address == "https://niu.moe/users/rye/followers" - assert user.following_address == "https://niu.moe/users/rye/following" - - user = User.get_cached_by_id(user.id) - assert user.note_count == 1 - - activity = Activity.get_by_id(activity.id) - assert user.follower_address in activity.recipients - - assert %{ - "url" => [ - %{ - "href" => - "https://cdn.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg" - } - ] - } = user.avatar + test "it prepares a quote post" do + user = insert(:user) - assert %{ - "url" => [ - %{ - "href" => - "https://cdn.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png" - } - ] - } = user.banner + {:ok, quoted_post} = CommonAPI.post(user, %{status: "hey"}) + {:ok, quote_post} = CommonAPI.post(user, %{status: "hey", quote_id: quoted_post.id}) - refute "..." in activity.recipients + {:ok, modified} = Transmogrifier.prepare_outgoing(quote_post.data) - unrelated_activity = Activity.get_by_id(unrelated_activity.id) - refute user.follower_address in unrelated_activity.recipients + %{data: %{"id" => quote_id}} = Object.normalize(quoted_post) - user_two = User.get_cached_by_id(user_two.id) - assert User.following?(user_two, user) - refute "..." in User.following(user_two) + assert modified["object"]["quoteUrl"] == quote_id + assert modified["object"]["quoteUri"] == quote_id end end @@ -426,7 +410,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert capture_log(fn -> {:error, _} = Transmogrifier.handle_incoming(data) - end) =~ "Object containment failed" + end) =~ "Object rejected while fetching" end test "it rejects activities which reference objects that have an incorrect attribution (variant 1)" do @@ -441,7 +425,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert capture_log(fn -> {:error, _} = Transmogrifier.handle_incoming(data) - end) =~ "Object containment failed" + end) =~ "Object rejected while fetching" end test "it rejects activities which reference objects that have an incorrect attribution (variant 2)" do @@ -456,7 +440,7 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do assert capture_log(fn -> {:error, _} = Transmogrifier.handle_incoming(data) - end) =~ "Object containment failed" + end) =~ "Object rejected while fetching" end end diff --git a/test/pleroma/web/activity_pub/utils_test.exs b/test/pleroma/web/activity_pub/utils_test.exs @@ -16,6 +16,41 @@ defmodule Pleroma.Web.ActivityPub.UtilsTest do require Pleroma.Constants + describe "strip_report_status_data/1" do + test "does not break on issues with the reported activities" do + reporter = insert(:user) + target_account = insert(:user) + {:ok, activity} = CommonAPI.post(target_account, %{status: "foobar"}) + context = Utils.generate_context_id() + content = "foobar" + post_id = activity.data["id"] + + res = + Utils.make_flag_data( + %{ + actor: reporter, + context: context, + account: target_account, + statuses: [%{"id" => post_id}], + content: content + }, + %{} + ) + + res = + res + |> Map.put("object", res["object"] ++ [nil, 1, 5, "123"]) + + {:ok, activity} = Pleroma.Web.ActivityPub.ActivityPub.insert(res) + + [user_id, object | _] = activity.data["object"] + + {:ok, stripped} = Utils.strip_report_status_data(activity) + + assert stripped.data["object"] == [user_id, object["id"]] + end + end + describe "fetch the latest Follow" do test "fetches the latest Follow activity" do %Activity{data: %{"type" => "Follow"}} = activity = insert(:follow_activity) @@ -118,7 +153,7 @@ defmodule Pleroma.Web.ActivityPub.UtilsTest do assert Enum.sort(cc) == expected_cc end - test "does not adress actor's follower address if the activity is not public", %{ + test "does not address actor's follower address if the activity is not public", %{ user: user, other_user: other_user, third_user: third_user @@ -587,15 +622,38 @@ defmodule Pleroma.Web.ActivityPub.UtilsTest do end describe "get_cached_emoji_reactions/1" do - test "returns the data or an emtpy list" do + test "returns the normalized data or an empty list" do object = insert(:note) assert Utils.get_cached_emoji_reactions(object) == [] object = insert(:note, data: %{"reactions" => [["x", ["lain"]]]}) - assert Utils.get_cached_emoji_reactions(object) == [["x", ["lain"]]] + assert Utils.get_cached_emoji_reactions(object) == [["x", ["lain"], nil]] object = insert(:note, data: %{"reactions" => %{}}) assert Utils.get_cached_emoji_reactions(object) == [] end end + + describe "add_emoji_reaction_to_object/1" do + test "works with legacy 2-tuple format" do + user = insert(:user) + other_user = insert(:user) + third_user = insert(:user) + + note = + insert(:note, + user: user, + data: %{ + "reactions" => [["😿", [other_user.ap_id]]] + } + ) + + _activity = insert(:note_activity, user: user, note: note) + + Utils.add_emoji_reaction_to_object( + %Activity{data: %{"content" => "😿", "actor" => third_user.ap_id}}, + note + ) + end + end end diff --git a/test/pleroma/web/activity_pub/views/user_view_test.exs b/test/pleroma/web/activity_pub/views/user_view_test.exs @@ -76,12 +76,28 @@ defmodule Pleroma.Web.ActivityPub.UserViewTest do assert %{"invisible" => true} = UserView.render("service.json", %{user: user}) end + test "service has a few essential fields" do + user = insert(:user) + result = UserView.render("service.json", %{user: user}) + assert result["id"] + assert result["type"] == "Application" + assert result["inbox"] + assert result["outbox"] + end + test "renders AKAs" do akas = ["https://i.tusooa.xyz/users/test-pleroma"] user = insert(:user, also_known_as: akas) assert %{"alsoKnownAs" => ^akas} = UserView.render("user.json", %{user: user}) end + test "renders full nickname" do + clear_config([Pleroma.Web.WebFinger, :domain], "plemora.dev") + + user = insert(:user, nickname: "user") + assert %{"webfinger" => "acct:user@plemora.dev"} = UserView.render("user.json", %{user: user}) + end + describe "endpoints" do test "local users have a usable endpoints structure" do user = insert(:user) diff --git a/test/pleroma/web/activity_pub/visibility_test.exs b/test/pleroma/web/activity_pub/visibility_test.exs @@ -52,60 +52,60 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do } end - test "is_direct?", %{ + test "direct?", %{ public: public, private: private, direct: direct, unlisted: unlisted, list: list } do - assert Visibility.is_direct?(direct) - refute Visibility.is_direct?(public) - refute Visibility.is_direct?(private) - refute Visibility.is_direct?(unlisted) - assert Visibility.is_direct?(list) + assert Visibility.direct?(direct) + refute Visibility.direct?(public) + refute Visibility.direct?(private) + refute Visibility.direct?(unlisted) + assert Visibility.direct?(list) end - test "is_public?", %{ + test "public?", %{ public: public, private: private, direct: direct, unlisted: unlisted, list: list } do - refute Visibility.is_public?(direct) - assert Visibility.is_public?(public) - refute Visibility.is_public?(private) - assert Visibility.is_public?(unlisted) - refute Visibility.is_public?(list) + refute Visibility.public?(direct) + assert Visibility.public?(public) + refute Visibility.public?(private) + assert Visibility.public?(unlisted) + refute Visibility.public?(list) end - test "is_private?", %{ + test "private?", %{ public: public, private: private, direct: direct, unlisted: unlisted, list: list } do - refute Visibility.is_private?(direct) - refute Visibility.is_private?(public) - assert Visibility.is_private?(private) - refute Visibility.is_private?(unlisted) - refute Visibility.is_private?(list) + refute Visibility.private?(direct) + refute Visibility.private?(public) + assert Visibility.private?(private) + refute Visibility.private?(unlisted) + refute Visibility.private?(list) end - test "is_list?", %{ + test "list?", %{ public: public, private: private, direct: direct, unlisted: unlisted, list: list } do - refute Visibility.is_list?(direct) - refute Visibility.is_list?(public) - refute Visibility.is_list?(private) - refute Visibility.is_list?(unlisted) - assert Visibility.is_list?(list) + refute Visibility.list?(direct) + refute Visibility.list?(public) + refute Visibility.list?(private) + refute Visibility.list?(unlisted) + assert Visibility.list?(list) end test "visible_for_user? Activity", %{ @@ -227,7 +227,7 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do } do Repo.delete(user) Pleroma.User.invalidate_cache(user) - refute Visibility.is_private?(direct) + refute Visibility.private?(direct) end test "get_visibility", %{ diff --git a/test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs b/test/pleroma/web/admin_api/controllers/admin_api_controller_test.exs @@ -15,6 +15,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do alias Pleroma.ModerationLog alias Pleroma.Repo alias Pleroma.Tests.ObanHelpers + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User alias Pleroma.Web.CommonAPI @@ -1077,6 +1078,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do describe "/api/pleroma/backups" do test "it creates a backup", %{conn: conn} do + ConfigMock + |> Mox.stub_with(Pleroma.Config) + admin = %{id: admin_id, nickname: admin_nickname} = insert(:user, is_admin: true) token = insert(:oauth_admin_token, user: admin) user = %{id: user_id, nickname: user_nickname} = insert(:user) diff --git a/test/pleroma/web/admin_api/controllers/config_controller_test.exs b/test/pleroma/web/admin_api/controllers/config_controller_test.exs @@ -873,7 +873,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do %{ "tuple" => [ ":_", - "Phoenix.Endpoint.Cowboy2Handler", + "Plug.Cowboy.Handler", %{"tuple" => ["Pleroma.Web.Endpoint", []]} ] } @@ -937,7 +937,7 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do %{ "tuple" => [ ":_", - "Phoenix.Endpoint.Cowboy2Handler", + "Plug.Cowboy.Handler", %{"tuple" => ["Pleroma.Web.Endpoint", []]} ] } @@ -1502,15 +1502,14 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do clear_config(:database_config_whitelist, [ {:pleroma, :instance}, {:pleroma, :activitypub}, - {:pleroma, Pleroma.Upload}, - {:esshd} + {:pleroma, Pleroma.Upload} ]) conn = get(conn, "/api/pleroma/admin/config/descriptions") children = json_response_and_validate_schema(conn, 200) - assert length(children) == 4 + assert length(children) == 3 assert Enum.count(children, fn c -> c["group"] == ":pleroma" end) == 3 @@ -1522,9 +1521,6 @@ defmodule Pleroma.Web.AdminAPI.ConfigControllerTest do web_endpoint = Enum.find(children, fn c -> c["key"] == "Pleroma.Upload" end) assert web_endpoint["children"] - - esshd = Enum.find(children, fn c -> c["group"] == ":esshd" end) - assert esshd["children"] end end end diff --git a/test/pleroma/web/admin_api/controllers/frontend_controller_test.exs b/test/pleroma/web/admin_api/controllers/frontend_controller_test.exs @@ -89,6 +89,7 @@ defmodule Pleroma.Web.AdminAPI.FrontendControllerTest do "build_url" => "http://gensokyo.2hu/builds/${ref}", "git" => nil, "installed" => true, + "installed_refs" => ["fantasy"], "name" => "pleroma", "ref" => "fantasy" } diff --git a/test/pleroma/web/admin_api/controllers/media_proxy_cache_controller_test.exs b/test/pleroma/web/admin_api/controllers/media_proxy_cache_controller_test.exs @@ -5,9 +5,11 @@ defmodule Pleroma.Web.AdminAPI.MediaProxyCacheControllerTest do use Pleroma.Web.ConnCase - import Pleroma.Factory import Mock + import Mox + import Pleroma.Factory + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Web.MediaProxy setup do: clear_config([:media_proxy]) @@ -128,6 +130,9 @@ defmodule Pleroma.Web.AdminAPI.MediaProxyCacheControllerTest do "http://example.com/media/fb1f4d.jpg" ] + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + with_mocks [ {MediaProxy.Invalidation.Script, [], [ @@ -150,6 +155,9 @@ defmodule Pleroma.Web.AdminAPI.MediaProxyCacheControllerTest do "http://example.com/media/fb1f4d.jpg" ] + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + with_mocks [{MediaProxy.Invalidation.Script, [], [purge: fn _, _ -> {"ok", 0} end]}] do conn |> put_req_header("content-type", "application/json") diff --git a/test/pleroma/web/admin_api/controllers/o_auth_app_controller_test.exs b/test/pleroma/web/admin_api/controllers/o_auth_app_controller_test.exs @@ -163,7 +163,7 @@ defmodule Pleroma.Web.AdminAPI.OAuthAppControllerTest do assert response == "" end - test "with non existance id", %{conn: conn} do + test "with nonexistent id", %{conn: conn} do response = conn |> delete("/api/pleroma/admin/oauth_app/0") diff --git a/test/pleroma/web/admin_api/controllers/report_controller_test.exs b/test/pleroma/web/admin_api/controllers/report_controller_test.exs @@ -11,6 +11,7 @@ defmodule Pleroma.Web.AdminAPI.ReportControllerTest do alias Pleroma.ModerationLog alias Pleroma.Repo alias Pleroma.ReportNote + alias Pleroma.Rule alias Pleroma.Web.CommonAPI setup do @@ -123,6 +124,7 @@ defmodule Pleroma.Web.AdminAPI.ReportControllerTest do }) %{ + reporter: reporter, id: report_id, second_report_id: second_report_id } @@ -266,6 +268,26 @@ defmodule Pleroma.Web.AdminAPI.ReportControllerTest do assert ModerationLog.get_log_entry_message(second_log_entry) == "@#{admin.nickname} updated report ##{second_report_id} (on user @#{second_activity.user_actor.nickname}) with 'closed' state" end + + test "works if reporter is deactivated", %{ + conn: conn, + id: id, + reporter: reporter + } do + Pleroma.User.set_activation(reporter, false) + + conn + |> put_req_header("content-type", "application/json") + |> patch("/api/pleroma/admin/reports", %{ + "reports" => [ + %{"state" => "resolved", "id" => id} + ] + }) + |> json_response_and_validate_schema(:no_content) + + activity = Activity.get_by_id_with_user_actor(id) + assert activity.data["state"] == "resolved" + end end describe "GET /api/pleroma/admin/reports" do @@ -415,6 +437,34 @@ defmodule Pleroma.Web.AdminAPI.ReportControllerTest do "error" => "Invalid credentials." } end + + test "returns reports with specified role_id", %{conn: conn} do + [reporter, target_user] = insert_pair(:user) + + %{id: rule_id} = Rule.create(%{text: "Example rule"}) + + rule_id = to_string(rule_id) + + {:ok, %{id: report_id}} = + CommonAPI.report(reporter, %{ + account_id: target_user.id, + comment: "", + rule_ids: [rule_id] + }) + + {:ok, _report} = + CommonAPI.report(reporter, %{ + account_id: target_user.id, + comment: "" + }) + + response = + conn + |> get("/api/pleroma/admin/reports?rule_id=#{rule_id}") + |> json_response_and_validate_schema(:ok) + + assert %{"reports" => [%{"id" => ^report_id}]} = response + end end describe "POST /api/pleroma/admin/reports/:id/notes" do diff --git a/test/pleroma/web/admin_api/controllers/rule_controller_test.exs b/test/pleroma/web/admin_api/controllers/rule_controller_test.exs @@ -0,0 +1,82 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.RuleControllerTest do + use Pleroma.Web.ConnCase, async: true + + import Pleroma.Factory + + alias Pleroma.Rule + + setup do + admin = insert(:user, is_admin: true) + token = insert(:oauth_admin_token, user: admin) + + conn = + build_conn() + |> assign(:user, admin) + |> assign(:token, token) + + {:ok, %{admin: admin, token: token, conn: conn}} + end + + describe "GET /api/pleroma/admin/rules" do + test "sorts rules by priority", %{conn: conn} do + %{id: id1} = Rule.create(%{text: "Example rule"}) + %{id: id2} = Rule.create(%{text: "Second rule", priority: 2}) + %{id: id3} = Rule.create(%{text: "Third rule", priority: 1}) + + id1 = to_string(id1) + id2 = to_string(id2) + id3 = to_string(id3) + + response = + conn + |> get("/api/pleroma/admin/rules") + |> json_response_and_validate_schema(:ok) + + assert [%{"id" => ^id1}, %{"id" => ^id3}, %{"id" => ^id2}] = response + end + end + + describe "POST /api/pleroma/admin/rules" do + test "creates a rule", %{conn: conn} do + %{"id" => id} = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/rules", %{text: "Example rule"}) + |> json_response_and_validate_schema(:ok) + + assert %{text: "Example rule"} = Rule.get(id) + end + end + + describe "PATCH /api/pleroma/admin/rules" do + test "edits a rule", %{conn: conn} do + %{id: id} = Rule.create(%{text: "Example rule"}) + + conn + |> put_req_header("content-type", "application/json") + |> patch("/api/pleroma/admin/rules/#{id}", %{text: "There are no rules", priority: 2}) + |> json_response_and_validate_schema(:ok) + + assert %{text: "There are no rules", priority: 2} = Rule.get(id) + end + end + + describe "DELETE /api/pleroma/admin/rules" do + test "deletes a rule", %{conn: conn} do + %{id: id} = Rule.create(%{text: "Example rule"}) + + conn + |> put_req_header("content-type", "application/json") + |> delete("/api/pleroma/admin/rules/#{id}") + |> json_response_and_validate_schema(:ok) + + assert [] = + Rule.query() + |> Pleroma.Repo.all() + end + end +end diff --git a/test/pleroma/web/admin_api/controllers/user_controller_test.exs b/test/pleroma/web/admin_api/controllers/user_controller_test.exs @@ -19,6 +19,11 @@ defmodule Pleroma.Web.AdminAPI.UserControllerTest do alias Pleroma.Web.Endpoint alias Pleroma.Web.MediaProxy + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + setup_all do Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) diff --git a/test/pleroma/web/admin_api/views/report_view_test.exs b/test/pleroma/web/admin_api/views/report_view_test.exs @@ -7,6 +7,7 @@ defmodule Pleroma.Web.AdminAPI.ReportViewTest do import Pleroma.Factory + alias Pleroma.Rule alias Pleroma.Web.AdminAPI alias Pleroma.Web.AdminAPI.Report alias Pleroma.Web.AdminAPI.ReportView @@ -38,7 +39,8 @@ defmodule Pleroma.Web.AdminAPI.ReportViewTest do statuses: [], notes: [], state: "open", - id: activity.id + id: activity.id, + rules: [] } result = @@ -76,7 +78,8 @@ defmodule Pleroma.Web.AdminAPI.ReportViewTest do statuses: [StatusView.render("show.json", %{activity: activity})], state: "open", notes: [], - id: report_activity.id + id: report_activity.id, + rules: [] } result = @@ -168,4 +171,22 @@ defmodule Pleroma.Web.AdminAPI.ReportViewTest do assert report2.id == rendered |> Enum.at(0) |> Map.get(:id) assert report1.id == rendered |> Enum.at(1) |> Map.get(:id) end + + test "renders included rules" do + user = insert(:user) + other_user = insert(:user) + + %{id: rule_id, text: text} = Rule.create(%{text: "Example rule"}) + + rule_id = to_string(rule_id) + + {:ok, activity} = + CommonAPI.report(user, %{ + account_id: other_user.id, + rule_ids: [rule_id] + }) + + assert %{rules: [%{id: ^rule_id, text: ^text}]} = + ReportView.render("show.json", Report.extract_report_info(activity)) + end end diff --git a/test/pleroma/web/api_spec/scopes/compiler_test.exs b/test/pleroma/web/api_spec/scopes/compiler_test.exs @@ -0,0 +1,56 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ApiSpec.Scopes.CompilerTest do + use ExUnit.Case, async: true + + alias Pleroma.Web.ApiSpec.Scopes.Compiler + + @dummy_response %{} + + @data %{ + paths: %{ + "/mew" => %OpenApiSpex.PathItem{ + post: %OpenApiSpex.Operation{ + security: [%{"oAuth" => ["a:b:c"]}], + responses: @dummy_response + }, + get: %OpenApiSpex.Operation{security: nil, responses: @dummy_response} + }, + "/mew2" => %OpenApiSpex.PathItem{ + post: %OpenApiSpex.Operation{ + security: [%{"oAuth" => ["d:e", "f:g"]}], + responses: @dummy_response + }, + get: %OpenApiSpex.Operation{security: nil, responses: @dummy_response} + } + } + } + + describe "process_scope/1" do + test "gives all higher-level scopes" do + scopes = Compiler.process_scope("admin:read:accounts") + + assert [_, _, _] = scopes + assert "admin" in scopes + assert "admin:read" in scopes + assert "admin:read:accounts" in scopes + end + end + + describe "extract_all_scopes_from/1" do + test "extracts scopes" do + scopes = Compiler.extract_all_scopes_from(@data) + + assert [_, _, _, _, _, _, _] = scopes + assert "a" in scopes + assert "a:b" in scopes + assert "a:b:c" in scopes + assert "d" in scopes + assert "d:e" in scopes + assert "f" in scopes + assert "f:g" in scopes + end + end +end diff --git a/test/pleroma/web/common_api/activity_draft_test.exs b/test/pleroma/web/common_api/activity_draft_test.exs @@ -0,0 +1,33 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.CommonAPI.ActivityDraftTest do + use Pleroma.DataCase + + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.CommonAPI.ActivityDraft + + import Pleroma.Factory + + test "create/2 with a quote post" do + user = insert(:user) + another_user = insert(:user) + + {:ok, direct} = CommonAPI.post(user, %{status: ".", visibility: "direct"}) + {:ok, private} = CommonAPI.post(user, %{status: ".", visibility: "private"}) + {:ok, unlisted} = CommonAPI.post(user, %{status: ".", visibility: "unlisted"}) + {:ok, local} = CommonAPI.post(user, %{status: ".", visibility: "local"}) + {:ok, public} = CommonAPI.post(user, %{status: ".", visibility: "public"}) + + {:error, _} = ActivityDraft.create(user, %{status: "nice", quote_id: direct.id}) + {:ok, _} = ActivityDraft.create(user, %{status: "nice", quote_id: private.id}) + {:error, _} = ActivityDraft.create(another_user, %{status: "nice", quote_id: private.id}) + {:ok, _} = ActivityDraft.create(user, %{status: "nice", quote_id: unlisted.id}) + {:ok, _} = ActivityDraft.create(another_user, %{status: "nice", quote_id: unlisted.id}) + {:ok, _} = ActivityDraft.create(user, %{status: "nice", quote_id: local.id}) + {:ok, _} = ActivityDraft.create(another_user, %{status: "nice", quote_id: local.id}) + {:ok, _} = ActivityDraft.create(user, %{status: "nice", quote_id: public.id}) + {:ok, _} = ActivityDraft.create(another_user, %{status: "nice", quote_id: public.id}) + end +end diff --git a/test/pleroma/web/common_api/utils_test.exs b/test/pleroma/web/common_api/utils_test.exs @@ -200,7 +200,7 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do {result, _, []} = Utils.format_input(code, "text/markdown") assert result == - ~s[<p><span class="h-card"><a class="u-url mention" data-user="#{mario.id}" href="#{mario.ap_id}" rel="ugc">@<span>mario</span></a></span> <span class="h-card"><a class="u-url mention" data-user="#{luigi.id}" href="#{luigi.ap_id}" rel="ugc">@<span>luigi</span></a></span> yo what’s up?</p>] + ~s[<p><span class="h-card"><a class="u-url mention" data-user="#{mario.id}" href="#{mario.ap_id}" rel="ugc">@<span>mario</span></a></span> <span class="h-card"><a class="u-url mention" data-user="#{luigi.id}" href="#{luigi.ap_id}" rel="ugc">@<span>luigi</span></a></span> yo what&#39;s up?</p>] end test "remote mentions" do @@ -211,7 +211,7 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do {result, _, []} = Utils.format_input(code, "text/markdown") assert result == - ~s[<p><span class="h-card"><a class="u-url mention" data-user="#{mario.id}" href="#{mario.ap_id}" rel="ugc">@<span>mario</span></a></span> <span class="h-card"><a class="u-url mention" data-user="#{luigi.id}" href="#{luigi.ap_id}" rel="ugc">@<span>luigi</span></a></span> yo what’s up?</p>] + ~s[<p><span class="h-card"><a class="u-url mention" data-user="#{mario.id}" href="#{mario.ap_id}" rel="ugc">@<span>mario</span></a></span> <span class="h-card"><a class="u-url mention" data-user="#{luigi.id}" href="#{luigi.ap_id}" rel="ugc">@<span>luigi</span></a></span> yo what&#39;s up?</p>] end test "raw HTML" do @@ -229,7 +229,7 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do test "blockquote" do code = ~s[> whoms't are you quoting?] {result, [], []} = Utils.format_input(code, "text/markdown") - assert result == "<blockquote><p>whoms’t are you quoting?</p></blockquote>" + assert result == "<blockquote><p>whoms&#39;t are you quoting?</p></blockquote>" end test "code" do @@ -586,41 +586,61 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do end end - describe "attachments_from_ids_descs/2" do + describe "attachments_from_ids_descs/3" do test "returns [] when attachment ids is empty" do - assert Utils.attachments_from_ids_descs([], "{}") == [] + assert Utils.attachments_from_ids_descs([], "{}", nil) == [] end test "returns list attachments with desc" do - object = insert(:note) + user = insert(:user) + object = insert(:attachment, %{user: user}) desc = Jason.encode!(%{object.id => "test-desc"}) - assert Utils.attachments_from_ids_descs(["#{object.id}", "34"], desc) == [ + assert Utils.attachments_from_ids_descs(["#{object.id}", "34"], desc, user) == [ Map.merge(object.data, %{"name" => "test-desc"}) ] end end - describe "attachments_from_ids/1" do + describe "attachments_from_ids/2" do test "returns attachments with descs" do - object = insert(:note) + user = insert(:user) + object = insert(:attachment, %{user: user}) desc = Jason.encode!(%{object.id => "test-desc"}) - assert Utils.attachments_from_ids(%{ - media_ids: ["#{object.id}"], - descriptions: desc - }) == [ + assert Utils.attachments_from_ids( + %{ + media_ids: ["#{object.id}"], + descriptions: desc + }, + user + ) == [ Map.merge(object.data, %{"name" => "test-desc"}) ] end test "returns attachments without descs" do - object = insert(:note) - assert Utils.attachments_from_ids(%{media_ids: ["#{object.id}"]}) == [object.data] + user = insert(:user) + object = insert(:attachment, %{user: user}) + assert Utils.attachments_from_ids(%{media_ids: ["#{object.id}"]}, user) == [object.data] end test "returns [] when not pass media_ids" do - assert Utils.attachments_from_ids(%{}) == [] + assert Utils.attachments_from_ids(%{}, nil) == [] + end + + test "returns [] when media_ids not belong to current user" do + user = insert(:user) + user2 = insert(:user) + + object = insert(:attachment, %{user: user}) + + assert Utils.attachments_from_ids(%{media_ids: ["#{object.id}"]}, user2) == [] + end + + test "checks that the object is of upload type" do + object = insert(:note) + assert Utils.attachments_from_ids(%{media_ids: ["#{object.id}"]}, nil) == [] end end diff --git a/test/pleroma/web/common_api_test.exs b/test/pleroma/web/common_api_test.exs @@ -12,6 +12,8 @@ defmodule Pleroma.Web.CommonAPITest do alias Pleroma.Notification alias Pleroma.Object alias Pleroma.Repo + alias Pleroma.Rule + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Transmogrifier @@ -20,17 +22,32 @@ defmodule Pleroma.Web.CommonAPITest do alias Pleroma.Web.CommonAPI alias Pleroma.Workers.PollWorker - import Pleroma.Factory - import Mock import Ecto.Query, only: [from: 2] + import Mock + import Mox + import Pleroma.Factory + require Pleroma.Activity.Queries require Pleroma.Constants + defp get_announces_of_object(%{data: %{"id" => id}} = _object) do + Pleroma.Activity.Queries.by_type("Announce") + |> Pleroma.Activity.Queries.by_object_id(id) + |> Pleroma.Repo.all() + end + setup_all do Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) :ok end + setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + :ok + end + setup do: clear_config([:instance, :safe_dm_mentions]) setup do: clear_config([:instance, :limit]) setup do: clear_config([:instance, :max_pinned_statuses]) @@ -279,6 +296,24 @@ defmodule Pleroma.Web.CommonAPITest do assert {:reject, "[KeywordPolicy] Matches with rejected keyword"} == CommonAPI.post_chat_message(author, recipient, "GNO/Linux") end + + test "it reject messages with attachments not belonging to user" do + author = insert(:user) + not_author = insert(:user) + recipient = author + + attachment = insert(:attachment, %{user: not_author}) + + {:error, message} = + CommonAPI.post_chat_message( + author, + recipient, + "123", + media_id: attachment.id + ) + + assert message == :forbidden + end end describe "unblocking" do @@ -393,6 +428,20 @@ defmodule Pleroma.Web.CommonAPITest do refute Activity.get_by_id(post.id) end + + test "it allows privileged users to delete banned user's posts" do + clear_config([:instance, :moderator_privileges], [:messages_delete]) + user = insert(:user) + moderator = insert(:user, is_moderator: true) + + {:ok, post} = CommonAPI.post(user, %{status: "namu amida butsu"}) + User.set_activation(user, false) + + assert {:ok, delete} = CommonAPI.delete(post.id, moderator) + assert delete.local + + refute Activity.get_by_id(post.id) + end end test "favoriting race condition" do @@ -458,7 +507,7 @@ defmodule Pleroma.Web.CommonAPITest do {:ok, convo_reply} = CommonAPI.post(user, %{status: ".", in_reply_to_conversation_id: participation.id}) - assert Visibility.is_direct?(convo_reply) + assert Visibility.direct?(convo_reply) assert activity.data["context"] == convo_reply.data["context"] end @@ -527,6 +576,17 @@ defmodule Pleroma.Web.CommonAPITest do assert Object.tags(object) == ["ساٴين‌س"] end + test "allows lang attribute" do + user = insert(:user) + text = ~s{<span lang="en">something</span><p lang="diaetuitech_rpyhpgc">random</p>} + + {:ok, activity} = CommonAPI.post(user, %{status: text, content_type: "text/html"}) + + object = Object.normalize(activity, fetch: false) + + assert object.data["content"] == text + end + test "double dot in link is allowed" do user = insert(:user) text = "https://example.to/something..mp3" @@ -753,6 +813,65 @@ defmodule Pleroma.Web.CommonAPITest do scheduled_at: expires_at ) end + + test "it allows quote posting" do + user = insert(:user) + + {:ok, quoted} = CommonAPI.post(user, %{status: "Hello world"}) + {:ok, quote_post} = CommonAPI.post(user, %{status: "nice post", quote_id: quoted.id}) + + quoted = Object.normalize(quoted) + quote_post = Object.normalize(quote_post) + + assert quote_post.data["quoteUrl"] == quoted.data["id"] + + # The OP is not mentioned + refute quoted.data["actor"] in quote_post.data["to"] + end + + test "quote posting with explicit addressing doesn't mention the OP" do + user = insert(:user) + + {:ok, quoted} = CommonAPI.post(user, %{status: "Hello world"}) + + {:ok, quote_post} = + CommonAPI.post(user, %{status: "nice post", quote_id: quoted.id, to: []}) + + assert Object.normalize(quote_post).data["to"] == [Pleroma.Constants.as_public()] + end + + test "quote posting visibility" do + user = insert(:user) + another_user = insert(:user) + + {:ok, direct} = CommonAPI.post(user, %{status: ".", visibility: "direct"}) + {:ok, private} = CommonAPI.post(user, %{status: ".", visibility: "private"}) + {:ok, unlisted} = CommonAPI.post(user, %{status: ".", visibility: "unlisted"}) + {:ok, local} = CommonAPI.post(user, %{status: ".", visibility: "local"}) + {:ok, public} = CommonAPI.post(user, %{status: ".", visibility: "public"}) + + {:error, _} = CommonAPI.post(user, %{status: "nice", quote_id: direct.id}) + {:ok, _} = CommonAPI.post(user, %{status: "nice", quote_id: private.id}) + {:error, _} = CommonAPI.post(another_user, %{status: "nice", quote_id: private.id}) + {:ok, _} = CommonAPI.post(user, %{status: "nice", quote_id: unlisted.id}) + {:ok, _} = CommonAPI.post(another_user, %{status: "nice", quote_id: unlisted.id}) + {:ok, _} = CommonAPI.post(user, %{status: "nice", quote_id: local.id}) + {:ok, _} = CommonAPI.post(another_user, %{status: "nice", quote_id: local.id}) + {:ok, _} = CommonAPI.post(user, %{status: "nice", quote_id: public.id}) + {:ok, _} = CommonAPI.post(another_user, %{status: "nice", quote_id: public.id}) + end + + test "it properly mentions punycode domain" do + user = insert(:user) + + _mentioned_user = + insert(:user, ap_id: "https://xn--i2raa.com/users/yyy", nickname: "yyy@xn--i2raa.com") + + {:ok, activity} = + CommonAPI.post(user, %{status: "hey @yyy@xn--i2raa.com", content_type: "text/markdown"}) + + assert "https://xn--i2raa.com/users/yyy" in Object.normalize(activity).data["to"] + end end describe "reactions" do @@ -806,7 +925,7 @@ defmodule Pleroma.Web.CommonAPITest do {:ok, activity} = CommonAPI.post(other_user, %{status: "cofe"}) {:ok, %Activity{} = announce_activity} = CommonAPI.repeat(activity.id, user) - assert Visibility.is_public?(announce_activity) + assert Visibility.public?(announce_activity) end test "can't repeat a repeat" do @@ -828,7 +947,7 @@ defmodule Pleroma.Web.CommonAPITest do {:ok, %Activity{} = announce_activity} = CommonAPI.repeat(activity.id, user, %{visibility: "private"}) - assert Visibility.is_private?(announce_activity) + assert Visibility.private?(announce_activity) refute Visibility.visible_for_user?(announce_activity, nil) end @@ -841,7 +960,7 @@ defmodule Pleroma.Web.CommonAPITest do {:ok, %Activity{} = announce_activity} = CommonAPI.repeat(activity.id, author) - assert Visibility.is_private?(announce_activity) + assert Visibility.private?(announce_activity) refute Visibility.visible_for_user?(announce_activity, nil) assert Visibility.visible_for_user?(activity, follower) @@ -1245,6 +1364,33 @@ defmodule Pleroma.Web.CommonAPITest do assert first_report.data["state"] == "resolved" assert second_report.data["state"] == "resolved" end + + test "creates a report with provided rules" do + reporter = insert(:user) + target_user = insert(:user) + + %{id: rule_id} = Rule.create(%{text: "There are no rules"}) + + reporter_ap_id = reporter.ap_id + target_ap_id = target_user.ap_id + + report_data = %{ + account_id: target_user.id, + rule_ids: [rule_id] + } + + assert {:ok, flag_activity} = CommonAPI.report(reporter, report_data) + + assert %Activity{ + actor: ^reporter_ap_id, + data: %{ + "type" => "Flag", + "object" => [^target_ap_id], + "state" => "open", + "rules" => [^rule_id] + } + } = flag_activity + end end describe "reblog muting" do @@ -1328,7 +1474,7 @@ defmodule Pleroma.Web.CommonAPITest do test "cancels a pending follow for a remote user" do follower = insert(:user) - followed = insert(:user, is_locked: true, local: false, ap_enabled: true) + followed = insert(:user, is_locked: true, local: false) assert {:ok, follower, followed, %{id: activity_id, data: %{"state" => "pending"}}} = CommonAPI.follow(follower, followed) @@ -1486,7 +1632,7 @@ defmodule Pleroma.Web.CommonAPITest do with_mock Pleroma.Web.Federator, publish: fn _ -> :ok end do {:ok, activity} = CommonAPI.post(user, %{status: "#2hu #2HU", visibility: "local"}) - assert Visibility.is_local_public?(activity) + assert Visibility.local_public?(activity) assert_not_called(Pleroma.Web.Federator.publish(activity)) end end @@ -1501,7 +1647,7 @@ defmodule Pleroma.Web.CommonAPITest do assert {:ok, %Activity{data: %{"deleted_activity_id" => ^activity_id}} = activity} = CommonAPI.delete(activity_id, user) - assert Visibility.is_local_public?(activity) + assert Visibility.local_public?(activity) assert_not_called(Pleroma.Web.Federator.publish(activity)) end end @@ -1517,7 +1663,7 @@ defmodule Pleroma.Web.CommonAPITest do assert {:ok, %Activity{data: %{"type" => "Announce"}} = activity} = CommonAPI.repeat(activity_id, user) - assert Visibility.is_local_public?(activity) + assert Visibility.local_public?(activity) refute called(Pleroma.Web.Federator.publish(activity)) end end @@ -1535,7 +1681,7 @@ defmodule Pleroma.Web.CommonAPITest do assert {:ok, %Activity{data: %{"type" => "Undo"}} = activity} = CommonAPI.unrepeat(activity_id, user) - assert Visibility.is_local_public?(activity) + assert Visibility.local_public?(activity) refute called(Pleroma.Web.Federator.publish(activity)) end end @@ -1550,7 +1696,7 @@ defmodule Pleroma.Web.CommonAPITest do assert {:ok, %Activity{data: %{"type" => "Like"}} = activity} = CommonAPI.favorite(user, activity.id) - assert Visibility.is_local_public?(activity) + assert Visibility.local_public?(activity) refute called(Pleroma.Web.Federator.publish(activity)) end end @@ -1565,7 +1711,7 @@ defmodule Pleroma.Web.CommonAPITest do with_mock Pleroma.Web.Federator, publish: fn _ -> :ok end do assert {:ok, activity} = CommonAPI.unfavorite(activity.id, user) - assert Visibility.is_local_public?(activity) + assert Visibility.local_public?(activity) refute called(Pleroma.Web.Federator.publish(activity)) end end @@ -1579,7 +1725,7 @@ defmodule Pleroma.Web.CommonAPITest do assert {:ok, %Activity{data: %{"type" => "EmojiReact"}} = activity} = CommonAPI.react_with_emoji(activity.id, user, "👍") - assert Visibility.is_local_public?(activity) + assert Visibility.local_public?(activity) refute called(Pleroma.Web.Federator.publish(activity)) end end @@ -1595,7 +1741,7 @@ defmodule Pleroma.Web.CommonAPITest do assert {:ok, %Activity{data: %{"type" => "Undo"}} = activity} = CommonAPI.unreact_with_emoji(activity.id, user, "👍") - assert Visibility.is_local_public?(activity) + assert Visibility.local_public?(activity) refute called(Pleroma.Web.Federator.publish(activity)) end end @@ -1724,4 +1870,54 @@ defmodule Pleroma.Web.CommonAPITest do assert Map.has_key?(updated_object.data, "updated") end end + + describe "Group actors" do + setup do + poster = insert(:user) + group = insert(:user, actor_type: "Group") + other_group = insert(:user, actor_type: "Group") + %{poster: poster, group: group, other_group: other_group} + end + + test "it boosts public posts", %{poster: poster, group: group} do + {:ok, post} = CommonAPI.post(poster, %{status: "hey @#{group.nickname}"}) + + announces = get_announces_of_object(post.object) + assert [_] = announces + end + + test "it does not boost private posts", %{poster: poster, group: group} do + {:ok, private_post} = + CommonAPI.post(poster, %{status: "hey @#{group.nickname}", visibility: "private"}) + + assert [] = get_announces_of_object(private_post.object) + end + + test "remote groups do not boost any posts", %{poster: poster} do + remote_group = + insert(:user, actor_type: "Group", local: false, nickname: "remote@example.com") + + {:ok, post} = CommonAPI.post(poster, %{status: "hey @#{User.full_nickname(remote_group)}"}) + assert remote_group.ap_id in post.data["to"] + + announces = get_announces_of_object(post.object) + assert [] = announces + end + + test "multiple groups mentioned", %{poster: poster, group: group, other_group: other_group} do + {:ok, post} = + CommonAPI.post(poster, %{status: "hey @#{group.nickname} @#{other_group.nickname}"}) + + announces = get_announces_of_object(post.object) + assert [_, _] = announces + end + + test "it does not boost if group is blocking poster", %{poster: poster, group: group} do + {:ok, _} = CommonAPI.block(group, poster) + {:ok, post} = CommonAPI.post(poster, %{status: "hey @#{group.nickname}"}) + + announces = get_announces_of_object(post.object) + assert [] = announces + end + end end diff --git a/test/pleroma/web/endpoint/metrics_exporter_test.exs b/test/pleroma/web/endpoint/metrics_exporter_test.exs @@ -1,69 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.Endpoint.MetricsExporterTest do - # Modifies AppEnv, has to stay synchronous - use Pleroma.Web.ConnCase - - alias Pleroma.Web.Endpoint.MetricsExporter - - defp config do - Application.get_env(:prometheus, MetricsExporter) - end - - describe "with default config" do - test "does NOT expose app metrics", %{conn: conn} do - conn - |> get(config()[:path]) - |> json_response(404) - end - end - - describe "when enabled" do - setup do - initial_config = config() - on_exit(fn -> Application.put_env(:prometheus, MetricsExporter, initial_config) end) - - Application.put_env( - :prometheus, - MetricsExporter, - Keyword.put(initial_config, :enabled, true) - ) - end - - test "serves app metrics", %{conn: conn} do - conn = get(conn, config()[:path]) - assert response = response(conn, 200) - - for metric <- [ - "http_requests_total", - "http_request_duration_microseconds", - "phoenix_controller_call_duration", - "telemetry_scrape_duration", - "erlang_vm_memory_atom_bytes_total" - ] do - assert response =~ ~r/#{metric}/ - end - end - - test "when IP whitelist configured, " <> - "serves app metrics only if client IP is whitelisted", - %{conn: conn} do - Application.put_env( - :prometheus, - MetricsExporter, - Keyword.put(config(), :ip_whitelist, ["127.127.127.127", {1, 1, 1, 1}, '255.255.255.255']) - ) - - conn - |> get(config()[:path]) - |> json_response(404) - - conn - |> Map.put(:remote_ip, {127, 127, 127, 127}) - |> get(config()[:path]) - |> response(200) - end - end -end diff --git a/test/pleroma/web/fallback_test.exs b/test/pleroma/web/fallback_test.exs @@ -6,20 +6,6 @@ defmodule Pleroma.Web.FallbackTest do use Pleroma.Web.ConnCase import Pleroma.Factory - describe "neither preloaded data nor metadata attached to" do - test "GET /registration/:token", %{conn: conn} do - response = get(conn, "/registration/foo") - - assert html_response(response, 200) =~ "<!--server-generated-meta-->" - end - - test "GET /*path", %{conn: conn} do - assert conn - |> get("/foo") - |> html_response(200) =~ "<!--server-generated-meta-->" - end - end - test "GET /*path adds a title", %{conn: conn} do clear_config([:instance, :name], "a cool title") @@ -29,21 +15,28 @@ defmodule Pleroma.Web.FallbackTest do end describe "preloaded data and metadata attached to" do - test "GET /:maybe_nickname_or_id", %{conn: conn} do + test "GET /:maybe_nickname_or_id with existing user", %{conn: conn} do clear_config([:instance, :name], "a cool title") - user = insert(:user) - user_missing = get(conn, "/foo") - user_present = get(conn, "/#{user.nickname}") - assert html_response(user_missing, 200) =~ "<!--server-generated-meta-->" - refute html_response(user_present, 200) =~ "<!--server-generated-meta-->" - assert html_response(user_present, 200) =~ "initial-results" - assert html_response(user_present, 200) =~ "<title>a cool title</title>" + resp = get(conn, "/#{user.nickname}") + + assert html_response(resp, 200) =~ "<title>a cool title</title>" + refute html_response(resp, 200) =~ "<!--server-generated-meta-->" + assert html_response(resp, 200) =~ "initial-results" + end + + test "GET /:maybe_nickname_or_id with missing user", %{conn: conn} do + clear_config([:instance, :name], "a cool title") + + resp = get(conn, "/foo") + + assert html_response(resp, 200) =~ "<title>a cool title</title>" + refute html_response(resp, 200) =~ "initial-results" end test "GET /*path", %{conn: conn} do - assert conn + refute conn |> get("/foo") |> html_response(200) =~ "<!--server-generated-meta-->" @@ -65,10 +58,12 @@ defmodule Pleroma.Web.FallbackTest do end test "GET /main/all", %{conn: conn} do + clear_config([:instance, :name], "a cool title") public_page = get(conn, "/main/all") refute html_response(public_page, 200) =~ "<!--server-generated-meta-->" assert html_response(public_page, 200) =~ "initial-results" + assert html_response(public_page, 200) =~ "<title>a cool title</title>" end end diff --git a/test/pleroma/web/federator_test.exs b/test/pleroma/web/federator_test.exs @@ -40,6 +40,44 @@ defmodule Pleroma.Web.FederatorTest do %{activity: activity, relay_mock: relay_mock} end + test "to shared inbox when multiple actors from same instance are recipients" do + user = insert(:user) + + shared_inbox = "https://domain.com/inbox" + + follower_one = + insert(:user, %{ + local: false, + nickname: "nick1@domain.com", + ap_id: "https://domain.com/users/nick1", + inbox: "https://domain.com/users/nick1/inbox", + shared_inbox: shared_inbox + }) + + follower_two = + insert(:user, %{ + local: false, + nickname: "nick2@domain.com", + ap_id: "https://domain.com/users/nick2", + inbox: "https://domain.com/users/nick2/inbox", + shared_inbox: shared_inbox + }) + + {:ok, _, _} = Pleroma.User.follow(follower_one, user) + {:ok, _, _} = Pleroma.User.follow(follower_two, user) + + {:ok, _activity} = CommonAPI.post(user, %{status: "Happy Friday everyone!"}) + + ObanHelpers.perform(all_enqueued(worker: PublisherWorker)) + + inboxes = + all_enqueued(worker: PublisherWorker) + |> Enum.filter(&(get_in(&1, [Access.key(:args), Access.key("op")]) == "publish_one")) + |> Enum.map(&get_in(&1, [Access.key(:args), Access.key("params"), Access.key("inbox")])) + + assert [shared_inbox] == inboxes + end + test "with relays active, it publishes to the relay", %{ activity: activity, relay_mock: relay_mock @@ -78,16 +116,14 @@ defmodule Pleroma.Web.FederatorTest do local: false, nickname: "nick1@domain.com", ap_id: "https://domain.com/users/nick1", - inbox: inbox1, - ap_enabled: true + inbox: inbox1 }) insert(:user, %{ local: false, nickname: "nick2@domain2.com", ap_id: "https://domain2.com/users/nick2", - inbox: inbox2, - ap_enabled: true + inbox: inbox2 }) dt = NaiveDateTime.utc_now() @@ -133,7 +169,7 @@ defmodule Pleroma.Web.FederatorTest do assert {:ok, _activity} = ObanHelpers.perform(job) assert {:ok, job} = Federator.incoming_ap_doc(params) - assert {:error, :already_present} = ObanHelpers.perform(job) + assert {:cancel, :already_present} = ObanHelpers.perform(job) end test "rejects incoming AP docs with incorrect origin" do diff --git a/test/pleroma/web/feed/user_controller_test.exs b/test/pleroma/web/feed/user_controller_test.exs @@ -57,9 +57,23 @@ defmodule Pleroma.Web.Feed.UserControllerTest do ) note_activity2 = insert(:note_activity, note: note2) + + note3 = + insert(:note, + user: user, + data: %{ + "content" => "This note tests whether HTML entities are truncated properly", + "summary" => "Won't, didn't fail", + "inReplyTo" => note_activity2.id + } + ) + + _note_activity3 = insert(:note_activity, note: note3) object = Object.normalize(note_activity, fetch: false) - [user: user, object: object, max_id: note_activity2.id] + encoded_title = FeedView.activity_title(note3.data) + + [user: user, object: object, max_id: note_activity2.id, encoded_title: encoded_title] end test "gets an atom feed", %{conn: conn, user: user, object: object, max_id: max_id} do @@ -74,7 +88,7 @@ defmodule Pleroma.Web.Feed.UserControllerTest do |> SweetXml.parse() |> SweetXml.xpath(~x"//entry/title/text()"l) - assert activity_titles == ['2hu', '2hu & as'] + assert activity_titles == ['Won\'t, didn\'...', '2hu', '2hu & as'] assert resp =~ FeedView.escape(object.data["content"]) assert resp =~ FeedView.escape(object.data["summary"]) assert resp =~ FeedView.escape(object.data["context"]) @@ -105,7 +119,7 @@ defmodule Pleroma.Web.Feed.UserControllerTest do |> SweetXml.parse() |> SweetXml.xpath(~x"//item/title/text()"l) - assert activity_titles == ['2hu', '2hu & as'] + assert activity_titles == ['Won\'t, didn\'...', '2hu', '2hu & as'] assert resp =~ FeedView.escape(object.data["content"]) assert resp =~ FeedView.escape(object.data["summary"]) assert resp =~ FeedView.escape(object.data["context"]) @@ -176,6 +190,30 @@ defmodule Pleroma.Web.Feed.UserControllerTest do |> get("/users/#{user.nickname}/feed.rss") |> response(200) end + + test "does not mangle HTML entities midway", %{ + conn: conn, + user: user, + object: object, + encoded_title: encoded_title + } do + resp = + conn + |> put_req_header("accept", "application/atom+xml") + |> get(user_feed_path(conn, :feed, user.nickname)) + |> response(200) + + activity_titles = + resp + |> SweetXml.parse() + |> SweetXml.xpath(~x"//entry/title/text()"l) + + assert activity_titles == ['Won\'t, didn\'...', '2hu', '2hu & as'] + assert resp =~ FeedView.escape(object.data["content"]) + assert resp =~ FeedView.escape(object.data["summary"]) + assert resp =~ FeedView.escape(object.data["context"]) + assert resp =~ encoded_title + end end # Note: see ActivityPubControllerTest for JSON format tests diff --git a/test/pleroma/web/mastodon_api/controllers/account_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/account_controller_test.exs @@ -18,6 +18,11 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do import Pleroma.Factory + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + describe "account fetching" do test "works by id" do %User{id: user_id} = insert(:user) @@ -1355,7 +1360,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do assert user.registration_reason == "I'm a cool dude, bro" end - test "returns error when user already registred", %{conn: conn, valid_params: valid_params} do + test "returns error when user already registered", %{conn: conn, valid_params: valid_params} do _user = insert(:user, email: "lain@example.org") app_token = insert(:oauth_token, user: nil) @@ -1490,7 +1495,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do |> Plug.Conn.put_req_header("authorization", "Bearer " <> token) |> put_req_header("content-type", "multipart/form-data") |> post("/api/v1/accounts", %{ - nickname: "nickanme", + nickname: "nickname", agreement: true, email: "email@example.com", fullname: "Lain", @@ -1776,7 +1781,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do assert %{language: "ru_RU"} = Pleroma.User.get_by_nickname("foo") end - test "createing an account without language parameter should fallback to cookie/header language", + test "creating an account without language parameter should fallback to cookie/header language", %{conn: conn} do params = %{ username: "foo2", @@ -2031,6 +2036,39 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do assert [%{"id" => ^id1}] = result end + test "list of blocks with with_relationships parameter" do + %{user: user, conn: conn} = oauth_access(["read:blocks"]) + %{id: id1} = other_user1 = insert(:user) + %{id: id2} = other_user2 = insert(:user) + %{id: id3} = other_user3 = insert(:user) + + {:ok, _, _} = User.follow(other_user1, user) + {:ok, _, _} = User.follow(other_user2, user) + {:ok, _, _} = User.follow(other_user3, user) + + {:ok, _} = User.block(user, other_user1) + {:ok, _} = User.block(user, other_user2) + {:ok, _} = User.block(user, other_user3) + + assert [ + %{ + "id" => ^id3, + "pleroma" => %{"relationship" => %{"blocking" => true, "followed_by" => false}} + }, + %{ + "id" => ^id2, + "pleroma" => %{"relationship" => %{"blocking" => true, "followed_by" => false}} + }, + %{ + "id" => ^id1, + "pleroma" => %{"relationship" => %{"blocking" => true, "followed_by" => false}} + } + ] = + conn + |> get("/api/v1/blocks?with_relationships=true") + |> json_response_and_validate_schema(200) + end + test "account lookup", %{conn: conn} do %{nickname: acct} = insert(:user, %{nickname: "nickname"}) %{nickname: acct_two} = insert(:user, %{nickname: "nickname@notlocaldoma.in"}) @@ -2134,6 +2172,55 @@ defmodule Pleroma.Web.MastodonAPI.AccountControllerTest do end end + describe "familiar followers" do + setup do: oauth_access(["read:follows"]) + + test "fetch user familiar followers", %{user: user, conn: conn} do + %{id: id1} = other_user1 = insert(:user) + %{id: id2} = other_user2 = insert(:user) + _ = insert(:user) + + User.follow(user, other_user1) + User.follow(other_user1, other_user2) + + assert [%{"accounts" => [%{"id" => ^id1}], "id" => ^id2}] = + conn + |> put_req_header("content-type", "application/json") + |> get("/api/v1/accounts/familiar_followers?id[]=#{id2}") + |> json_response_and_validate_schema(200) + end + + test "returns empty array if followers are hidden", %{user: user, conn: conn} do + other_user1 = insert(:user, hide_follows: true) + %{id: id2} = other_user2 = insert(:user) + _ = insert(:user) + + User.follow(user, other_user1) + User.follow(other_user1, other_user2) + + assert [%{"accounts" => [], "id" => ^id2}] = + conn + |> put_req_header("content-type", "application/json") + |> get("/api/v1/accounts/familiar_followers?id[]=#{id2}") + |> json_response_and_validate_schema(200) + end + + test "it respects hide_followers", %{user: user, conn: conn} do + other_user1 = insert(:user) + %{id: id2} = other_user2 = insert(:user, hide_followers: true) + _ = insert(:user) + + User.follow(user, other_user1) + User.follow(other_user1, other_user2) + + assert [%{"accounts" => [], "id" => ^id2}] = + conn + |> put_req_header("content-type", "application/json") + |> get("/api/v1/accounts/familiar_followers?id[]=#{id2}") + |> json_response_and_validate_schema(200) + end + end + describe "remove from followers" do setup do: oauth_access(["follow"]) diff --git a/test/pleroma/web/mastodon_api/controllers/directory_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/directory_controller_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.DirectoryControllerTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase alias Pleroma.Web.CommonAPI import Pleroma.Factory diff --git a/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs @@ -6,6 +6,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do # TODO: Should not need Cachex use Pleroma.Web.ConnCase + alias Pleroma.Rule alias Pleroma.User import Pleroma.Factory @@ -40,7 +41,8 @@ defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do "banner_upload_limit" => _, "background_image" => from_config_background, "shout_limit" => _, - "description_limit" => _ + "description_limit" => _, + "rules" => _ } = result assert result["pleroma"]["metadata"]["account_activation_required"] != nil @@ -106,4 +108,48 @@ defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do |> get("/api/v1/instance") |> json_response_and_validate_schema(200) end + + test "get instance contact information", %{conn: conn} do + user = insert(:user, %{local: true}) + + clear_config([:instance, :contact_username], user.nickname) + + conn = get(conn, "/api/v1/instance") + + assert result = json_response_and_validate_schema(conn, 200) + + assert result["contact_account"]["id"] == user.id + end + + test "get instance information v2", %{conn: conn} do + clear_config([:auth, :oauth_consumer_strategies], []) + + assert get(conn, "/api/v2/instance") + |> json_response_and_validate_schema(200) + end + + test "get instance rules", %{conn: conn} do + Rule.create(%{text: "Example rule", hint: "Rule description", priority: 1}) + Rule.create(%{text: "Third rule", priority: 2}) + Rule.create(%{text: "Second rule", priority: 1}) + + conn = get(conn, "/api/v1/instance") + + assert result = json_response_and_validate_schema(conn, 200) + + assert [ + %{ + "text" => "Example rule", + "hint" => "Rule description" + }, + %{ + "text" => "Second rule", + "hint" => "" + }, + %{ + "text" => "Third rule", + "hint" => "" + } + ] = result["rules"] + end end diff --git a/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs @@ -6,8 +6,10 @@ defmodule Pleroma.Web.MastodonAPI.MediaControllerTest do use Pleroma.Web.ConnCase import ExUnit.CaptureLog + import Mox alias Pleroma.Object + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub @@ -15,6 +17,9 @@ defmodule Pleroma.Web.MastodonAPI.MediaControllerTest do setup do: oauth_access(["write:media"]) setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + image = %Plug.Upload{ content_type: "image/jpeg", path: Path.absname("test/fixtures/image.jpg"), @@ -145,6 +150,9 @@ defmodule Pleroma.Web.MastodonAPI.MediaControllerTest do setup do: oauth_access(["write:media"]) setup %{user: actor} do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + file = %Plug.Upload{ content_type: "image/jpeg", path: Path.absname("test/fixtures/image.jpg"), @@ -177,6 +185,9 @@ defmodule Pleroma.Web.MastodonAPI.MediaControllerTest do setup do: oauth_access(["read:media"]) setup %{user: actor} do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + file = %Plug.Upload{ content_type: "image/jpeg", path: Path.absname("test/fixtures/image.jpg"), diff --git a/test/pleroma/web/mastodon_api/controllers/notification_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/notification_controller_test.exs @@ -12,6 +12,11 @@ defmodule Pleroma.Web.MastodonAPI.NotificationControllerTest do import Pleroma.Factory + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + test "does NOT render account/pleroma/relationship by default" do %{user: user, conn: conn} = oauth_access(["read:notifications"]) other_user = insert(:user) diff --git a/test/pleroma/web/mastodon_api/controllers/report_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/report_controller_test.exs @@ -7,6 +7,7 @@ defmodule Pleroma.Web.MastodonAPI.ReportControllerTest do alias Pleroma.Activity alias Pleroma.Repo + alias Pleroma.Rule alias Pleroma.Web.CommonAPI import Pleroma.Factory @@ -81,6 +82,44 @@ defmodule Pleroma.Web.MastodonAPI.ReportControllerTest do |> json_response_and_validate_schema(200) end + test "submit a report with rule_ids", %{ + conn: conn, + target_user: target_user + } do + %{id: rule_id} = Rule.create(%{text: "There are no rules"}) + + rule_id = to_string(rule_id) + + assert %{"action_taken" => false, "id" => id} = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/reports", %{ + "account_id" => target_user.id, + "forward" => "false", + "rule_ids" => [rule_id] + }) + |> json_response_and_validate_schema(200) + + assert %Activity{data: %{"rules" => [^rule_id]}} = Activity.get_report(id) + end + + test "rules field is empty if provided wrong rule id", %{ + conn: conn, + target_user: target_user + } do + assert %{"id" => id} = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/reports", %{ + "account_id" => target_user.id, + "forward" => "false", + "rule_ids" => ["-1"] + }) + |> json_response_and_validate_schema(200) + + assert %Activity{data: %{"rules" => []}} = Activity.get_report(id) + end + test "account_id is required", %{ conn: conn, activity: activity diff --git a/test/pleroma/web/mastodon_api/controllers/scheduled_activity_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/scheduled_activity_controller_test.exs @@ -3,15 +3,25 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do - use Pleroma.Web.ConnCase + use Pleroma.Web.ConnCase, async: true alias Pleroma.Repo alias Pleroma.ScheduledActivity + alias Pleroma.UnstubbedConfigMock, as: ConfigMock - import Pleroma.Factory import Ecto.Query + import Mox + import Pleroma.Factory - setup do: clear_config([ScheduledActivity, :enabled]) + setup do + ConfigMock + |> stub(:get, fn + [ScheduledActivity, :enabled] -> true + path -> Pleroma.Test.StaticConfig.get(path) + end) + + :ok + end test "shows scheduled activities" do %{user: user, conn: conn} = oauth_access(["read:statuses"]) @@ -55,7 +65,6 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do end test "updates a scheduled activity" do - clear_config([ScheduledActivity, :enabled], true) %{user: user, conn: conn} = oauth_access(["write:statuses"]) scheduled_at = Timex.shift(NaiveDateTime.utc_now(), minutes: 60) @@ -103,7 +112,6 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityControllerTest do end test "deletes a scheduled activity" do - clear_config([ScheduledActivity, :enabled], true) %{user: user, conn: conn} = oauth_access(["write:statuses"]) scheduled_at = Timex.shift(NaiveDateTime.utc_now(), minutes: 60) diff --git a/test/pleroma/web/mastodon_api/controllers/search_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/search_controller_test.exs @@ -13,6 +13,11 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do import Tesla.Mock import Mock + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + setup_all do mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) :ok @@ -37,7 +42,7 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do end end - @tag :skip_on_mac + @tag :skip_darwin test "search", %{conn: conn} do user = insert(:user) user_two = insert(:user, %{nickname: "shp@shitposter.club"}) @@ -317,26 +322,20 @@ defmodule Pleroma.Web.MastodonAPI.SearchControllerTest do end test "search fetches remote statuses and prefers them over other results", %{conn: conn} do - old_version = :persistent_term.get({Pleroma.Repo, :postgres_version}) - :persistent_term.put({Pleroma.Repo, :postgres_version}, 10.0) - on_exit(fn -> :persistent_term.put({Pleroma.Repo, :postgres_version}, old_version) end) - - capture_log(fn -> - {:ok, %{id: activity_id}} = - CommonAPI.post(insert(:user), %{ - status: "check out http://mastodon.example.org/@admin/99541947525187367" - }) + {:ok, %{id: activity_id}} = + CommonAPI.post(insert(:user), %{ + status: "check out http://mastodon.example.org/@admin/99541947525187367" + }) - results = - conn - |> get("/api/v1/search?q=http://mastodon.example.org/@admin/99541947525187367") - |> json_response_and_validate_schema(200) + %{"url" => result_url, "id" => result_id} = + conn + |> get("/api/v1/search?q=http://mastodon.example.org/@admin/99541947525187367") + |> json_response_and_validate_schema(200) + |> Map.get("statuses") + |> List.first() - assert [ - %{"url" => "http://mastodon.example.org/@admin/99541947525187367"}, - %{"id" => ^activity_id} - ] = results["statuses"] - end) + refute match?(^result_id, activity_id) + assert match?(^result_url, "http://mastodon.example.org/@admin/99541947525187367") end test "search doesn't show statuses that it shouldn't", %{conn: conn} do diff --git a/test/pleroma/web/mastodon_api/controllers/status_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/status_controller_test.exs @@ -12,6 +12,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do alias Pleroma.Object alias Pleroma.Repo alias Pleroma.ScheduledActivity + alias Pleroma.Tests.Helpers alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub @@ -19,25 +20,38 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do alias Pleroma.Web.CommonAPI alias Pleroma.Workers.ScheduledActivityWorker + import Mox import Pleroma.Factory setup do: clear_config([:instance, :federating]) setup do: clear_config([:instance, :allow_relay]) - setup do: clear_config([:rich_media, :enabled]) setup do: clear_config([:mrf, :policies]) setup do: clear_config([:mrf_keyword, :reject]) + setup do + Pleroma.UnstubbedConfigMock + |> stub_with(Pleroma.Config) + + Pleroma.StaticStubbedConfigMock + |> stub(:get, fn + [:rich_media, :enabled] -> false + path -> Pleroma.Test.StaticConfig.get(path) + end) + + :ok + end + describe "posting statuses" do setup do: oauth_access(["write:statuses"]) test "posting a status does not increment reblog_count when relaying", %{conn: conn} do clear_config([:instance, :federating], true) - Config.get([:instance, :allow_relay], true) + clear_config([:instance, :allow_relay], true) response = conn |> put_req_header("content-type", "application/json") - |> post("api/v1/statuses", %{ + |> post("/api/v1/statuses", %{ "content_type" => "text/plain", "source" => "Pleroma FE", "status" => "Hello world", @@ -50,7 +64,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do response = conn - |> get("api/v1/statuses/#{response["id"]}", %{}) + |> get("/api/v1/statuses/#{response["id"]}", %{}) |> json_response_and_validate_schema(200) assert response["reblogs_count"] == 0 @@ -109,7 +123,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do conn_four = conn |> put_req_header("content-type", "application/json") - |> post("api/v1/statuses", %{ + |> post("/api/v1/statuses", %{ "status" => "oolong", "expires_in" => expires_in }) @@ -125,6 +139,28 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do ) end + test "posting a quote post", %{conn: conn} do + user = insert(:user) + + {:ok, %{id: activity_id} = activity} = CommonAPI.post(user, %{status: "yolo"}) + %{data: %{"id" => quote_url}} = Object.normalize(activity) + + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses", %{ + "status" => "indeed", + "quote_id" => activity_id + }) + + assert %{ + "id" => id, + "pleroma" => %{"quote" => %{"id" => ^activity_id}, "quote_url" => ^quote_url} + } = json_response_and_validate_schema(conn, 200) + + assert Activity.get_by_id(id) + end + test "it fails to create a status if `expires_in` is less or equal than an hour", %{ conn: conn } do @@ -134,7 +170,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do assert %{"error" => "Expiry date is too soon"} = conn |> put_req_header("content-type", "application/json") - |> post("api/v1/statuses", %{ + |> post("/api/v1/statuses", %{ "status" => "oolong", "expires_in" => expires_in }) @@ -146,7 +182,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do assert %{"error" => "Expiry date is too soon"} = conn |> put_req_header("content-type", "application/json") - |> post("api/v1/statuses", %{ + |> post("/api/v1/statuses", %{ "status" => "oolong", "expires_in" => expires_in }) @@ -160,7 +196,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do assert %{"error" => "[KeywordPolicy] Matches with rejected keyword"} = conn |> put_req_header("content-type", "application/json") - |> post("api/v1/statuses", %{"status" => "GNO/Linux"}) + |> post("/api/v1/statuses", %{"status" => "GNO/Linux"}) |> json_response_and_validate_schema(422) end @@ -199,6 +235,16 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do assert Activity.get_in_reply_to_activity(activity).id == replied_to.id end + test "replying to a deleted status", %{user: user, conn: conn} do + {:ok, status} = CommonAPI.post(user, %{status: "cofe"}) + {:ok, _deleted_status} = CommonAPI.delete(status.id, user) + + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses", %{"status" => "xD", "in_reply_to_id" => status.id}) + |> json_response_and_validate_schema(422) + end + test "replying to a direct message with visibility other than direct", %{ user: user, conn: conn @@ -293,59 +339,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do assert real_status == fake_status end - test "fake statuses' preview card is not cached", %{conn: conn} do - clear_config([:rich_media, :enabled], true) - - Tesla.Mock.mock(fn - %{ - method: :get, - url: "https://example.com/twitter-card" - } -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/twitter_card.html")} - - env -> - apply(HttpRequestMock, :request, [env]) - end) - - conn1 = - conn - |> put_req_header("content-type", "application/json") - |> post("/api/v1/statuses", %{ - "status" => "https://example.com/ogp", - "preview" => true - }) - - conn2 = - conn - |> put_req_header("content-type", "application/json") - |> post("/api/v1/statuses", %{ - "status" => "https://example.com/twitter-card", - "preview" => true - }) - - assert %{"card" => %{"title" => "The Rock"}} = json_response_and_validate_schema(conn1, 200) - - assert %{"card" => %{"title" => "Small Island Developing States Photo Submission"}} = - json_response_and_validate_schema(conn2, 200) - end - - test "posting a status with OGP link preview", %{conn: conn} do - Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) - clear_config([:rich_media, :enabled], true) - - conn = - conn - |> put_req_header("content-type", "application/json") - |> post("/api/v1/statuses", %{ - "status" => "https://example.com/ogp" - }) - - assert %{"id" => id, "card" => %{"title" => "The Rock"}} = - json_response_and_validate_schema(conn, 200) - - assert Activity.get_by_id(id) - end - test "posting a direct status", %{conn: conn} do user2 = insert(:user) content = "direct cofe @#{user2.nickname}" @@ -353,7 +346,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do conn = conn |> put_req_header("content-type", "application/json") - |> post("api/v1/statuses", %{"status" => content, "visibility" => "direct"}) + |> post("/api/v1/statuses", %{"status" => content, "visibility" => "direct"}) assert %{"id" => id} = response = json_response_and_validate_schema(conn, 200) assert response["visibility"] == "direct" @@ -390,7 +383,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do result = conn - |> get("api/v1/statuses/#{activity}") + |> get("/api/v1/statuses/#{activity}") assert %{ "content" => "cofe is my copilot", @@ -419,7 +412,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do result = conn - |> get("api/v1/statuses/#{activity}") + |> get("/api/v1/statuses/#{activity}") assert %{ "content" => "club mate is my wingman", @@ -626,7 +619,10 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do |> put_req_header("content-type", "application/json") |> post("/api/v1/statuses", %{ "status" => "desu~", - "poll" => %{"options" => Enum.map(0..limit, fn _ -> "desu" end), "expires_in" => 1} + "poll" => %{ + "options" => Enum.map(0..limit, fn num -> "desu #{num}" end), + "expires_in" => 1 + } }) %{"error" => error} = json_response_and_validate_schema(conn, 422) @@ -642,7 +638,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do |> post("/api/v1/statuses", %{ "status" => "...", "poll" => %{ - "options" => [Enum.reduce(0..limit, "", fn _, acc -> acc <> "." end)], + "options" => [String.duplicate(".", limit + 1), "lol"], "expires_in" => 1 } }) @@ -724,6 +720,32 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do assert object.data["type"] == "Question" assert length(object.data["oneOf"]) == 3 end + + test "cannot have only one option", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses", %{ + "status" => "desu~", + "poll" => %{"options" => ["mew"], "expires_in" => 1} + }) + + %{"error" => error} = json_response_and_validate_schema(conn, 422) + assert error == "Poll must contain at least 2 options" + end + + test "cannot have only duplicated options", %{conn: conn} do + conn = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses", %{ + "status" => "desu~", + "poll" => %{"options" => ["mew", "mew"], "expires_in" => 1} + }) + + %{"error" => error} = json_response_and_validate_schema(conn, 422) + assert error == "Poll must contain at least 2 options" + end end test "get a status" do @@ -742,6 +764,49 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do {:ok, local: local, remote: remote} end + defp local_and_remote_context_activities do + local_user_1 = insert(:user) + local_user_2 = insert(:user) + remote_user = insert(:user, local: false) + + {:ok, %{id: id1, data: %{"context" => context}}} = + CommonAPI.post(local_user_1, %{status: "post"}) + + {:ok, %{id: id2} = post} = + CommonAPI.post(local_user_2, %{status: "local reply", in_reply_to_status_id: id1}) + + params = %{ + "@context" => "https://www.w3.org/ns/activitystreams", + "actor" => remote_user.ap_id, + "type" => "Create", + "context" => context, + "id" => "#{remote_user.ap_id}/activities/1", + "inReplyTo" => post.data["id"], + "object" => %{ + "type" => "Note", + "content" => "remote reply", + "context" => context, + "id" => "#{remote_user.ap_id}/objects/1", + "attributedTo" => remote_user.ap_id, + "to" => [ + local_user_1.ap_id, + local_user_2.ap_id, + "https://www.w3.org/ns/activitystreams#Public" + ] + }, + "to" => [ + local_user_1.ap_id, + local_user_2.ap_id, + "https://www.w3.org/ns/activitystreams#Public" + ] + } + + {:ok, job} = Pleroma.Web.Federator.incoming_ap_doc(params) + {:ok, remote_activity} = ObanHelpers.perform(job) + + %{locals: [id1, id2], remote: remote_activity.id, context: context} + end + describe "status with restrict unauthenticated activities for local and remote" do setup do: local_and_remote_activities() @@ -928,6 +993,230 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do end end + describe "getting status contexts restricted unauthenticated for local and remote" do + setup do: local_and_remote_context_activities() + + setup do: clear_config([:restrict_unauthenticated, :activities, :local], true) + + setup do: clear_config([:restrict_unauthenticated, :activities, :remote], true) + + test "if user is unauthenticated", %{conn: conn, locals: [post_id, _]} do + res_conn = get(conn, "/api/v1/statuses/#{post_id}/context") + + assert json_response_and_validate_schema(res_conn, 200) == %{ + "ancestors" => [], + "descendants" => [] + } + end + + test "if user is unauthenticated reply", %{conn: conn, locals: [_, reply_id]} do + res_conn = get(conn, "/api/v1/statuses/#{reply_id}/context") + + assert json_response_and_validate_schema(res_conn, 200) == %{ + "ancestors" => [], + "descendants" => [] + } + end + + test "if user is authenticated", %{locals: [post_id, reply_id], remote: remote_reply_id} do + %{conn: conn} = oauth_access(["read"]) + res_conn = get(conn, "/api/v1/statuses/#{post_id}/context") + + %{"ancestors" => [], "descendants" => descendants} = + json_response_and_validate_schema(res_conn, 200) + + descendant_ids = + descendants + |> Enum.map(& &1["id"]) + + assert reply_id in descendant_ids + assert remote_reply_id in descendant_ids + end + + test "if user is authenticated reply", %{locals: [post_id, reply_id], remote: remote_reply_id} do + %{conn: conn} = oauth_access(["read"]) + res_conn = get(conn, "/api/v1/statuses/#{reply_id}/context") + + %{"ancestors" => ancestors, "descendants" => descendants} = + json_response_and_validate_schema(res_conn, 200) + + ancestor_ids = + ancestors + |> Enum.map(& &1["id"]) + + descendant_ids = + descendants + |> Enum.map(& &1["id"]) + + assert post_id in ancestor_ids + assert remote_reply_id in descendant_ids + end + end + + describe "getting status contexts restricted unauthenticated for local" do + setup do: local_and_remote_context_activities() + + setup do: clear_config([:restrict_unauthenticated, :activities, :local], true) + + setup do: clear_config([:restrict_unauthenticated, :activities, :remote], false) + + test "if user is unauthenticated", %{ + conn: conn, + locals: [post_id, reply_id], + remote: remote_reply_id + } do + res_conn = get(conn, "/api/v1/statuses/#{post_id}/context") + + %{"ancestors" => [], "descendants" => descendants} = + json_response_and_validate_schema(res_conn, 200) + + descendant_ids = + descendants + |> Enum.map(& &1["id"]) + + assert reply_id not in descendant_ids + assert remote_reply_id in descendant_ids + end + + test "if user is unauthenticated reply", %{ + conn: conn, + locals: [post_id, reply_id], + remote: remote_reply_id + } do + res_conn = get(conn, "/api/v1/statuses/#{reply_id}/context") + + %{"ancestors" => ancestors, "descendants" => descendants} = + json_response_and_validate_schema(res_conn, 200) + + ancestor_ids = + ancestors + |> Enum.map(& &1["id"]) + + descendant_ids = + descendants + |> Enum.map(& &1["id"]) + + assert post_id not in ancestor_ids + assert remote_reply_id in descendant_ids + end + + test "if user is authenticated", %{locals: [post_id, reply_id], remote: remote_reply_id} do + %{conn: conn} = oauth_access(["read"]) + res_conn = get(conn, "/api/v1/statuses/#{post_id}/context") + + %{"ancestors" => [], "descendants" => descendants} = + json_response_and_validate_schema(res_conn, 200) + + descendant_ids = + descendants + |> Enum.map(& &1["id"]) + + assert reply_id in descendant_ids + assert remote_reply_id in descendant_ids + end + + test "if user is authenticated reply", %{locals: [post_id, reply_id], remote: remote_reply_id} do + %{conn: conn} = oauth_access(["read"]) + res_conn = get(conn, "/api/v1/statuses/#{reply_id}/context") + + %{"ancestors" => ancestors, "descendants" => descendants} = + json_response_and_validate_schema(res_conn, 200) + + ancestor_ids = + ancestors + |> Enum.map(& &1["id"]) + + descendant_ids = + descendants + |> Enum.map(& &1["id"]) + + assert post_id in ancestor_ids + assert remote_reply_id in descendant_ids + end + end + + describe "getting status contexts restricted unauthenticated for remote" do + setup do: local_and_remote_context_activities() + + setup do: clear_config([:restrict_unauthenticated, :activities, :local], false) + + setup do: clear_config([:restrict_unauthenticated, :activities, :remote], true) + + test "if user is unauthenticated", %{ + conn: conn, + locals: [post_id, reply_id], + remote: remote_reply_id + } do + res_conn = get(conn, "/api/v1/statuses/#{post_id}/context") + + %{"ancestors" => [], "descendants" => descendants} = + json_response_and_validate_schema(res_conn, 200) + + descendant_ids = + descendants + |> Enum.map(& &1["id"]) + + assert reply_id in descendant_ids + assert remote_reply_id not in descendant_ids + end + + test "if user is unauthenticated reply", %{ + conn: conn, + locals: [post_id, reply_id], + remote: remote_reply_id + } do + res_conn = get(conn, "/api/v1/statuses/#{reply_id}/context") + + %{"ancestors" => ancestors, "descendants" => descendants} = + json_response_and_validate_schema(res_conn, 200) + + ancestor_ids = + ancestors + |> Enum.map(& &1["id"]) + + descendant_ids = + descendants + |> Enum.map(& &1["id"]) + + assert post_id in ancestor_ids + assert remote_reply_id not in descendant_ids + end + + test "if user is authenticated", %{locals: [post_id, reply_id], remote: remote_reply_id} do + %{conn: conn} = oauth_access(["read"]) + res_conn = get(conn, "/api/v1/statuses/#{post_id}/context") + + %{"ancestors" => [], "descendants" => descendants} = + json_response_and_validate_schema(res_conn, 200) + + reply_ids = + descendants + |> Enum.map(& &1["id"]) + + assert reply_id in reply_ids + assert remote_reply_id in reply_ids + end + + test "if user is authenticated reply", %{locals: [post_id, reply_id], remote: remote_reply_id} do + %{conn: conn} = oauth_access(["read"]) + res_conn = get(conn, "/api/v1/statuses/#{reply_id}/context") + + %{"ancestors" => ancestors, "descendants" => descendants} = + json_response_and_validate_schema(res_conn, 200) + + ancestor_ids = + ancestors + |> Enum.map(& &1["id"]) + + descendant_ids = + descendants + |> Enum.map(& &1["id"]) + + assert post_id in ancestor_ids + assert remote_reply_id in descendant_ids + end + end + describe "deleting a status" do test "when you created it" do %{user: author, conn: conn} = oauth_access(["write:statuses"]) @@ -989,6 +1278,27 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do refute Activity.get_by_id(activity.id) end + + test "when you're privileged and the user is banned", %{conn: conn} do + clear_config([:instance, :moderator_privileges], [:messages_delete]) + posting_user = insert(:user, is_active: false) + refute posting_user.is_active + activity = insert(:note_activity, user: posting_user) + user = insert(:user, is_moderator: true) + + res_conn = + conn + |> assign(:user, user) + |> assign(:token, insert(:oauth_token, user: user, scopes: ["write:statuses"])) + |> delete("/api/v1/statuses/#{activity.id}") + + assert %{} = json_response_and_validate_schema(res_conn, 200) + + assert ModerationLog |> Repo.one() |> ModerationLog.get_log_entry_message() == + "@#{user.nickname} deleted status ##{activity.id}" + + refute Activity.get_by_id(activity.id) + end end describe "reblogging" do @@ -1305,7 +1615,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do assert %{"id" => id} = conn |> put_req_header("content-type", "application/json") - |> post("api/v1/statuses", %{ + |> post("/api/v1/statuses", %{ "status" => "oolong", "expires_in" => expires_in }) @@ -1343,87 +1653,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do end end - describe "cards" do - setup do - clear_config([:rich_media, :enabled], true) - - oauth_access(["read:statuses"]) - end - - test "returns rich-media card", %{conn: conn, user: user} do - Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) - - {:ok, activity} = CommonAPI.post(user, %{status: "https://example.com/ogp"}) - - card_data = %{ - "image" => "http://ia.media-imdb.com/images/rock.jpg", - "provider_name" => "example.com", - "provider_url" => "https://example.com", - "title" => "The Rock", - "type" => "link", - "url" => "https://example.com/ogp", - "description" => - "Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer.", - "pleroma" => %{ - "opengraph" => %{ - "image" => "http://ia.media-imdb.com/images/rock.jpg", - "title" => "The Rock", - "type" => "video.movie", - "url" => "https://example.com/ogp", - "description" => - "Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer." - } - } - } - - response = - conn - |> get("/api/v1/statuses/#{activity.id}/card") - |> json_response_and_validate_schema(200) - - assert response == card_data - - # works with private posts - {:ok, activity} = - CommonAPI.post(user, %{status: "https://example.com/ogp", visibility: "direct"}) - - response_two = - conn - |> get("/api/v1/statuses/#{activity.id}/card") - |> json_response_and_validate_schema(200) - - assert response_two == card_data - end - - test "replaces missing description with an empty string", %{conn: conn, user: user} do - Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) - - {:ok, activity} = CommonAPI.post(user, %{status: "https://example.com/ogp-missing-data"}) - - response = - conn - |> get("/api/v1/statuses/#{activity.id}/card") - |> json_response_and_validate_schema(:ok) - - assert response == %{ - "type" => "link", - "title" => "Pleroma", - "description" => "", - "image" => nil, - "provider_name" => "example.com", - "provider_url" => "https://example.com", - "url" => "https://example.com/ogp-missing-data", - "pleroma" => %{ - "opengraph" => %{ - "title" => "Pleroma", - "type" => "website", - "url" => "https://example.com/ogp-missing-data" - } - } - } - end - end - test "bookmarks" do bookmarks_uri = "/api/v1/bookmarks" @@ -1468,6 +1697,60 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do json_response_and_validate_schema(bookmarks, 200) end + test "bookmark folders" do + %{conn: conn, user: user} = oauth_access(["write:bookmarks", "read:bookmarks"]) + + {:ok, folder} = Pleroma.BookmarkFolder.create(user.id, "folder") + author = insert(:user) + + folder_bookmarks_uri = "/api/v1/bookmarks?folder_id=#{folder.id}" + + {:ok, activity1} = CommonAPI.post(author, %{status: "heweoo?"}) + {:ok, activity2} = CommonAPI.post(author, %{status: "heweoo!"}) + + # Add bookmark with a folder + response = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses/#{activity1.id}/bookmark", %{folder_id: folder.id}) + + assert json_response_and_validate_schema(response, 200)["bookmarked"] == true + + assert json_response_and_validate_schema(response, 200)["pleroma"]["bookmark_folder"] == + folder.id + + response = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses/#{activity2.id}/bookmark") + + assert json_response_and_validate_schema(response, 200)["bookmarked"] == true + assert json_response_and_validate_schema(response, 200)["pleroma"]["bookmark_folder"] == nil + + bookmarks = + get(conn, folder_bookmarks_uri) + |> json_response_and_validate_schema(200) + + assert length(bookmarks) == 1 + + # Update folder for existing bookmark + response = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses/#{activity2.id}/bookmark", %{folder_id: folder.id}) + + assert json_response_and_validate_schema(response, 200)["bookmarked"] == true + + assert json_response_and_validate_schema(response, 200)["pleroma"]["bookmark_folder"] == + folder.id + + bookmarks = + get(conn, folder_bookmarks_uri) + |> json_response_and_validate_schema(200) + + assert length(bookmarks) == 2 + end + describe "conversation muting" do setup do: oauth_access(["write:mutes"]) @@ -1555,7 +1838,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do conn |> assign(:user, user3) |> assign(:token, insert(:oauth_token, user: user3, scopes: ["read:statuses"])) - |> get("api/v1/timelines/home") + |> get("/api/v1/timelines/home") [reblogged_activity] = json_response_and_validate_schema(conn3, 200) @@ -1826,7 +2109,10 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do # Using the header for pagination works correctly [next, _] = get_resp_header(result, "link") |> hd() |> String.split(", ") - [_, max_id] = Regex.run(~r/max_id=([^&]+)/, next) + [next_url, _next_rel] = String.split(next, ";") + next_url = String.trim_trailing(next_url, ">") |> String.trim_leading("<") + + max_id = Helpers.get_query_parameter(next_url, "max_id") assert max_id == third_favorite.id diff --git a/test/pleroma/web/mastodon_api/controllers/subscription_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/subscription_controller_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MastodonAPI.SubscriptionControllerTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase, async: false import Pleroma.Factory @@ -35,17 +35,20 @@ defmodule Pleroma.Web.MastodonAPI.SubscriptionControllerTest do defmacro assert_error_when_disable_push(do: yield) do quote do - vapid_details = Application.get_env(:web_push_encryption, :vapid_details, []) - Application.put_env(:web_push_encryption, :vapid_details, []) - assert %{"error" => "Web push subscription is disabled on this Pleroma instance"} == unquote(yield) - - Application.put_env(:web_push_encryption, :vapid_details, vapid_details) end end describe "when disabled" do + setup do + vapid_config = Application.get_env(:web_push_encryption, :vapid_details) + + Application.put_env(:web_push_encryption, :vapid_details, []) + + on_exit(fn -> Application.put_env(:web_push_encryption, :vapid_details, vapid_config) end) + end + test "POST returns error", %{conn: conn} do assert_error_when_disable_push do conn diff --git a/test/pleroma/web/mastodon_api/controllers/timeline_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/timeline_controller_test.exs @@ -527,7 +527,7 @@ defmodule Pleroma.Web.MastodonAPI.TimelineControllerTest do |> assign(:token, insert(:oauth_token, user: user_two, scopes: ["read:statuses"])) # Only direct should be visible here - res_conn = get(conn_user_two, "api/v1/timelines/direct") + res_conn = get(conn_user_two, "/api/v1/timelines/direct") assert [status] = json_response_and_validate_schema(res_conn, :ok) @@ -539,14 +539,14 @@ defmodule Pleroma.Web.MastodonAPI.TimelineControllerTest do build_conn() |> assign(:user, user_one) |> assign(:token, insert(:oauth_token, user: user_one, scopes: ["read:statuses"])) - |> get("api/v1/timelines/direct") + |> get("/api/v1/timelines/direct") [status] = json_response_and_validate_schema(res_conn, :ok) assert %{"visibility" => "direct"} = status # Both should be visible here - res_conn = get(conn_user_two, "api/v1/timelines/home") + res_conn = get(conn_user_two, "/api/v1/timelines/home") [_s1, _s2] = json_response_and_validate_schema(res_conn, :ok) @@ -559,14 +559,14 @@ defmodule Pleroma.Web.MastodonAPI.TimelineControllerTest do }) end) - res_conn = get(conn_user_two, "api/v1/timelines/direct") + res_conn = get(conn_user_two, "/api/v1/timelines/direct") statuses = json_response_and_validate_schema(res_conn, :ok) assert length(statuses) == 20 max_id = List.last(statuses)["id"] - res_conn = get(conn_user_two, "api/v1/timelines/direct?max_id=#{max_id}") + res_conn = get(conn_user_two, "/api/v1/timelines/direct?max_id=#{max_id}") assert [status] = json_response_and_validate_schema(res_conn, :ok) @@ -591,7 +591,7 @@ defmodule Pleroma.Web.MastodonAPI.TimelineControllerTest do visibility: "direct" }) - res_conn = get(conn, "api/v1/timelines/direct") + res_conn = get(conn, "/api/v1/timelines/direct") [status] = json_response_and_validate_schema(res_conn, :ok) assert status["id"] == direct.id diff --git a/test/pleroma/web/mastodon_api/mastodon_api_test.exs b/test/pleroma/web/mastodon_api/mastodon_api_test.exs @@ -7,11 +7,13 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPITest do alias Pleroma.Notification alias Pleroma.ScheduledActivity + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.MastodonAPI import Pleroma.Factory + import Mox describe "follow/3" do test "returns error when followed user is deactivated" do @@ -88,6 +90,9 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPITest do describe "get_scheduled_activities/2" do test "returns user scheduled activities" do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + user = insert(:user) today = diff --git a/test/pleroma/web/mastodon_api/update_credentials_test.exs b/test/pleroma/web/mastodon_api/update_credentials_test.exs @@ -4,13 +4,22 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do alias Pleroma.Repo + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User use Pleroma.Web.ConnCase import Mock + import Mox import Pleroma.Factory + setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + :ok + end + describe "updating credentials" do setup do: oauth_access(["write:accounts"]) setup :request_content_type @@ -97,6 +106,42 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do assert user.raw_bio == raw_bio end + test "updating bio honours bio limit", %{conn: conn} do + bio_limit = Config.get([:instance, :user_bio_length], 5000) + + raw_bio = String.duplicate(".", bio_limit + 1) + + conn = patch(conn, "/api/v1/accounts/update_credentials", %{"note" => raw_bio}) + + assert %{"error" => "Bio is too long"} = json_response_and_validate_schema(conn, 413) + end + + test "updating name honours name limit", %{conn: conn} do + name_limit = Config.get([:instance, :user_name_length], 100) + + name = String.duplicate(".", name_limit + 1) + + conn = patch(conn, "/api/v1/accounts/update_credentials", %{"display_name" => name}) + + assert %{"error" => "Name is too long"} = json_response_and_validate_schema(conn, 413) + end + + test "when both name and bio exceeds the limit, display name error", %{conn: conn} do + name_limit = Config.get([:instance, :user_name_length], 100) + bio_limit = Config.get([:instance, :user_bio_length], 5000) + + name = String.duplicate(".", name_limit + 1) + raw_bio = String.duplicate(".", bio_limit + 1) + + conn = + patch(conn, "/api/v1/accounts/update_credentials", %{ + "display_name" => name, + "note" => raw_bio + }) + + assert %{"error" => "Name is too long"} = json_response_and_validate_schema(conn, 413) + end + test "updates the user's locking status", %{conn: conn} do conn = patch(conn, "/api/v1/accounts/update_credentials", %{locked: "true"}) @@ -466,10 +511,15 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do |> json_response_and_validate_schema(200) assert account_data["fields"] == [ - %{"name" => "<a href=\"http://google.com\">foo</a>", "value" => "bar"}, + %{ + "name" => "<a href=\"http://google.com\">foo</a>", + "value" => "bar", + "verified_at" => nil + }, %{ "name" => "link.io", - "value" => ~S(<a href="http://cofe.io" rel="ugc">cofe.io</a>) + "value" => ~S(<a href="http://cofe.io" rel="ugc">cofe.io</a>), + "verified_at" => nil } ] @@ -528,8 +578,8 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do |> json_response_and_validate_schema(200) assert account_data["fields"] == [ - %{"name" => ":firefox:", "value" => "is best 2hu"}, - %{"name" => "they wins", "value" => ":blank:"} + %{"name" => ":firefox:", "value" => "is best 2hu", "verified_at" => nil}, + %{"name" => "they wins", "value" => ":blank:", "verified_at" => nil} ] assert account_data["source"]["fields"] == [ @@ -557,10 +607,11 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do |> json_response_and_validate_schema(200) assert account["fields"] == [ - %{"name" => "foo", "value" => "bar"}, + %{"name" => "foo", "value" => "bar", "verified_at" => nil}, %{ "name" => "link", - "value" => ~S(<a href="http://cofe.io" rel="ugc">http://cofe.io</a>) + "value" => ~S(<a href="http://cofe.io" rel="ugc">http://cofe.io</a>), + "verified_at" => nil } ] @@ -582,7 +633,7 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do |> json_response_and_validate_schema(200) assert account["fields"] == [ - %{"name" => "foo", "value" => ""} + %{"name" => "foo", "value" => "", "verified_at" => nil} ] end @@ -595,17 +646,17 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do fields = [%{"name" => "foo", "value" => long_value}] - assert %{"error" => "Invalid request"} == + assert %{"error" => "One or more field entries are too long"} == conn |> patch("/api/v1/accounts/update_credentials", %{"fields_attributes" => fields}) - |> json_response_and_validate_schema(403) + |> json_response_and_validate_schema(413) fields = [%{"name" => long_name, "value" => "bar"}] - assert %{"error" => "Invalid request"} == + assert %{"error" => "One or more field entries are too long"} == conn |> patch("/api/v1/accounts/update_credentials", %{"fields_attributes" => fields}) - |> json_response_and_validate_schema(403) + |> json_response_and_validate_schema(413) clear_config([:instance, :max_account_fields], 1) @@ -614,10 +665,10 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do %{"name" => "link", "value" => "cofe.io"} ] - assert %{"error" => "Invalid request"} == + assert %{"error" => "Too many field entries"} == conn |> patch("/api/v1/accounts/update_credentials", %{"fields_attributes" => fields}) - |> json_response_and_validate_schema(403) + |> json_response_and_validate_schema(413) end end @@ -687,4 +738,20 @@ defmodule Pleroma.Web.MastodonAPI.UpdateCredentialsTest do assert account["source"]["pleroma"]["actor_type"] == "Person" end end + + describe "Mark account as group" do + setup do: oauth_access(["write:accounts"]) + setup :request_content_type + + test "changing actor_type to Group makes account a Group and enables bot indicator for backward compatibility", + %{conn: conn} do + account = + conn + |> patch("/api/v1/accounts/update_credentials", %{actor_type: "Group"}) + |> json_response_and_validate_schema(200) + + assert account["bot"] + assert account["source"]["pleroma"]["actor_type"] == "Group" + end + end end diff --git a/test/pleroma/web/mastodon_api/views/account_view_test.exs b/test/pleroma/web/mastodon_api/views/account_view_test.exs @@ -5,11 +5,13 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do use Pleroma.DataCase, async: false + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User alias Pleroma.UserRelationship alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.AccountView + import Mox import Pleroma.Factory import Tesla.Mock @@ -35,7 +37,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do inserted_at: ~N[2017-08-15 15:47:06.597036], emoji: %{"karjalanpiirakka" => "/file.png"}, raw_bio: "valid html. a\nb\nc\nd\nf '&<>\"", - also_known_as: ["https://shitposter.zone/users/shp"] + also_known_as: ["https://shitposter.zone/users/shp"], + last_status_at: NaiveDateTime.utc_now() }) expected = %{ @@ -74,7 +77,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do fields: [] }, fqn: "shp@shitposter.club", - last_status_at: nil, + last_status_at: user.last_status_at |> NaiveDateTime.to_date() |> Date.to_iso8601(), pleroma: %{ ap_id: user.ap_id, also_known_as: ["https://shitposter.zone/users/shp"], @@ -752,6 +755,9 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do clear_config([:media_proxy, :enabled], true) clear_config([:media_preview_proxy, :enabled]) + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + user = insert(:user, avatar: %{"url" => [%{"href" => "https://evil.website/avatar.png"}]}, @@ -759,7 +765,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do emoji: %{"joker_smile" => "https://evil.website/society.png"} ) - with media_preview_enabled <- [false, true] do + Enum.each([true, false], fn media_preview_enabled -> clear_config([:media_preview_proxy, :enabled], media_preview_enabled) AccountView.render("show.json", %{user: user, skip_visibility_check: true}) @@ -777,7 +783,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do true end) |> assert() - end + end) end test "renders mute expiration date" do diff --git a/test/pleroma/web/mastodon_api/views/notification_view_test.exs b/test/pleroma/web/mastodon_api/views/notification_view_test.exs @@ -22,6 +22,11 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView import Pleroma.Factory + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + defp test_notifications_rendering(notifications, user, expected_result) do result = NotificationView.render("index.json", %{notifications: notifications, for: user}) @@ -190,7 +195,47 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do emoji: "☕", account: AccountView.render("show.json", %{user: other_user, for: user}), status: StatusView.render("show.json", %{activity: activity, for: user}), - created_at: Utils.to_masto_date(notification.inserted_at) + created_at: Utils.to_masto_date(notification.inserted_at), + emoji_url: nil + } + + test_notifications_rendering([notification], user, [expected]) + end + + test "EmojiReact custom emoji notification" do + user = insert(:user) + other_user = insert(:user) + + note = + insert(:note, + user: user, + data: %{ + "reactions" => [ + ["👍", [user.ap_id], nil], + ["dinosaur", [user.ap_id], "http://localhost:4001/emoji/dino walking.gif"] + ] + } + ) + + activity = insert(:note_activity, note: note, user: user) + + {:ok, _activity} = CommonAPI.react_with_emoji(activity.id, other_user, "dinosaur") + + activity = Repo.get(Activity, activity.id) + + [notification] = Notification.for_user(user) + + assert notification + + expected = %{ + id: to_string(notification.id), + pleroma: %{is_seen: false, is_muted: false}, + type: "pleroma:emoji_reaction", + emoji: ":dinosaur:", + account: AccountView.render("show.json", %{user: other_user, for: user}), + status: StatusView.render("show.json", %{activity: activity, for: user}), + created_at: Utils.to_masto_date(notification.inserted_at), + emoji_url: "http://localhost:4001/emoji/dino walking.gif" } test_notifications_rendering([notification], user, [expected]) @@ -286,4 +331,31 @@ defmodule Pleroma.Web.MastodonAPI.NotificationViewTest do test_notifications_rendering([notification], user, [expected]) end + + test "Subscribed status notification" do + user = insert(:user) + subscriber = insert(:user) + + User.subscribe(subscriber, user) + + {:ok, activity} = CommonAPI.post(user, %{status: "hi"}) + {:ok, [notification]} = Notification.create_notifications(activity) + + user = User.get_cached_by_id(user.id) + + expected = %{ + id: to_string(notification.id), + pleroma: %{is_seen: false, is_muted: false}, + type: "status", + account: + AccountView.render("show.json", %{ + user: user, + for: subscriber + }), + status: StatusView.render("show.json", %{activity: activity, for: subscriber}), + created_at: Utils.to_masto_date(notification.inserted_at) + } + + test_notifications_rendering([notification], subscriber, [expected]) + end end diff --git a/test/pleroma/web/mastodon_api/views/poll_view_test.exs b/test/pleroma/web/mastodon_api/views/poll_view_test.exs @@ -43,7 +43,8 @@ defmodule Pleroma.Web.MastodonAPI.PollViewTest do %{title: "why are you even asking?", votes_count: 0} ], votes_count: 0, - voters_count: 0 + voters_count: 0, + pleroma: %{non_anonymous: false} } result = PollView.render("show.json", %{object: object}) @@ -165,4 +166,11 @@ defmodule Pleroma.Web.MastodonAPI.PollViewTest do ] } = PollView.render("show.json", %{object: object}) end + + test "that poll is non anonymous" do + object = Object.normalize("https://friends.grishka.me/posts/54642", fetch: true) + result = PollView.render("show.json", %{object: object}) + + assert result[:pleroma][:non_anonymous] == true + end end diff --git a/test/pleroma/web/mastodon_api/views/scheduled_activity_view_test.exs b/test/pleroma/web/mastodon_api/views/scheduled_activity_view_test.exs @@ -4,12 +4,16 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityViewTest do use Pleroma.DataCase, async: true + alias Pleroma.ScheduledActivity + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.CommonAPI alias Pleroma.Web.CommonAPI.Utils alias Pleroma.Web.MastodonAPI.ScheduledActivityView alias Pleroma.Web.MastodonAPI.StatusView + + import Mox import Pleroma.Factory test "A scheduled activity with a media attachment" do @@ -27,6 +31,9 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityViewTest do filename: "an_image.jpg" } + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + {:ok, upload} = ActivityPub.upload(file, actor: user.ap_id) attrs = %{ @@ -48,7 +55,7 @@ defmodule Pleroma.Web.MastodonAPI.ScheduledActivityViewTest do id: to_string(scheduled_activity.id), media_attachments: %{media_ids: [upload.id]} - |> Utils.attachments_from_ids() + |> Utils.attachments_from_ids(user) |> Enum.map(&StatusView.render("attachment.json", %{attachment: &1})), params: %{ in_reply_to_id: to_string(activity.id), diff --git a/test/pleroma/web/mastodon_api/views/status_view_test.exs b/test/pleroma/web/mastodon_api/views/status_view_test.exs @@ -11,17 +11,20 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do alias Pleroma.HTML alias Pleroma.Object alias Pleroma.Repo + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User alias Pleroma.UserRelationship alias Pleroma.Web.CommonAPI alias Pleroma.Web.MastodonAPI.AccountView alias Pleroma.Web.MastodonAPI.StatusView + alias Pleroma.Web.RichMedia.Card require Bitwise + import Mox + import OpenApiSpex.TestAssertions import Pleroma.Factory import Tesla.Mock - import OpenApiSpex.TestAssertions setup do mock(fn env -> apply(HttpRequestMock, :request, [env]) end) @@ -35,16 +38,26 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do {:ok, activity} = CommonAPI.post(user, %{status: "dae cofe??"}) {:ok, _} = CommonAPI.react_with_emoji(activity.id, user, "☕") + {:ok, _} = CommonAPI.react_with_emoji(activity.id, user, ":dinosaur:") {:ok, _} = CommonAPI.react_with_emoji(activity.id, third_user, "🍵") {:ok, _} = CommonAPI.react_with_emoji(activity.id, other_user, "☕") + {:ok, _} = CommonAPI.react_with_emoji(activity.id, other_user, ":dinosaur:") + activity = Repo.get(Activity, activity.id) status = StatusView.render("show.json", activity: activity) assert_schema(status, "Status", Pleroma.Web.ApiSpec.spec()) assert status[:pleroma][:emoji_reactions] == [ - %{name: "☕", count: 2, me: false}, - %{name: "🍵", count: 1, me: false} + %{name: "☕", count: 2, me: false, url: nil, account_ids: [other_user.id, user.id]}, + %{ + count: 2, + me: false, + name: "dinosaur", + url: "http://localhost:4001/emoji/dino walking.gif", + account_ids: [other_user.id, user.id] + }, + %{name: "🍵", count: 1, me: false, url: nil, account_ids: [third_user.id]} ] status = StatusView.render("show.json", activity: activity, for: user) @@ -52,8 +65,36 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do assert_schema(status, "Status", Pleroma.Web.ApiSpec.spec()) assert status[:pleroma][:emoji_reactions] == [ - %{name: "☕", count: 2, me: true}, - %{name: "🍵", count: 1, me: false} + %{name: "☕", count: 2, me: true, url: nil, account_ids: [other_user.id, user.id]}, + %{ + count: 2, + me: true, + name: "dinosaur", + url: "http://localhost:4001/emoji/dino walking.gif", + account_ids: [other_user.id, user.id] + }, + %{name: "🍵", count: 1, me: false, url: nil, account_ids: [third_user.id]} + ] + end + + test "works with legacy-formatted reactions" do + user = insert(:user) + other_user = insert(:user) + + note = + insert(:note, + user: user, + data: %{ + "reactions" => [["😿", [other_user.ap_id]]] + } + ) + + activity = insert(:note_activity, user: user, note: note) + + status = StatusView.render("show.json", activity: activity, for: user) + + assert status[:pleroma][:emoji_reactions] == [ + %{name: "😿", count: 1, me: false, url: nil, account_ids: [other_user.id]} ] end @@ -66,11 +107,10 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do |> Object.update_data(%{"reactions" => %{"☕" => [user.ap_id], "x" => 1}}) activity = Activity.get_by_id(activity.id) - status = StatusView.render("show.json", activity: activity, for: user) assert status[:pleroma][:emoji_reactions] == [ - %{name: "☕", count: 1, me: true} + %{name: "☕", count: 1, me: true, url: nil, account_ids: [user.id]} ] end @@ -90,7 +130,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do status = StatusView.render("show.json", activity: activity) assert status[:pleroma][:emoji_reactions] == [ - %{name: "☕", count: 1, me: false} + %{name: "☕", count: 1, me: false, url: nil, account_ids: [other_user.id]} ] status = StatusView.render("show.json", activity: activity, for: user) @@ -102,19 +142,25 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do status = StatusView.render("show.json", activity: activity) assert status[:pleroma][:emoji_reactions] == [ - %{name: "☕", count: 2, me: false} + %{ + name: "☕", + count: 2, + me: false, + url: nil, + account_ids: [third_user.id, other_user.id] + } ] status = StatusView.render("show.json", activity: activity, for: user) assert status[:pleroma][:emoji_reactions] == [ - %{name: "☕", count: 1, me: false} + %{name: "☕", count: 1, me: false, url: nil, account_ids: [third_user.id]} ] status = StatusView.render("show.json", activity: activity, for: other_user) assert status[:pleroma][:emoji_reactions] == [ - %{name: "☕", count: 1, me: true} + %{name: "☕", count: 1, me: true, url: nil, account_ids: [other_user.id]} ] end @@ -155,6 +201,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do assert_schema(status, "Status", Pleroma.Web.ApiSpec.spec()) end + @tag capture_log: true test "returns a temporary ap_id based user for activities missing db users" do user = insert(:user) @@ -283,6 +330,10 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do conversation_id: convo_id, context: object_data["context"], in_reply_to_account_acct: nil, + quote: nil, + quote_id: nil, + quote_url: nil, + quote_visible: false, content: %{"text/plain" => HTML.strip_tags(object_data["content"])}, spoiler_text: %{"text/plain" => HTML.strip_tags(object_data["summary"])}, expires_at: nil, @@ -290,7 +341,9 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do thread_muted: false, emoji_reactions: [], parent_visible: false, - pinned_at: nil + pinned_at: nil, + quotes_count: 0, + bookmark_folder: nil } } @@ -379,6 +432,88 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do assert status.in_reply_to_id == to_string(note.id) end + test "a quote post" do + post = insert(:note_activity) + user = insert(:user) + + {:ok, quote_post} = CommonAPI.post(user, %{status: "he", quote_id: post.id}) + {:ok, quoted_quote_post} = CommonAPI.post(user, %{status: "yo", quote_id: quote_post.id}) + + status = StatusView.render("show.json", %{activity: quoted_quote_post}) + + assert status.pleroma.quote.id == to_string(quote_post.id) + assert status.pleroma.quote_id == to_string(quote_post.id) + assert status.pleroma.quote_url == Object.normalize(quote_post).data["id"] + assert status.pleroma.quote_visible + + # Quotes don't go more than one level deep + refute status.pleroma.quote.pleroma.quote + assert status.pleroma.quote.pleroma.quote_id == to_string(post.id) + assert status.pleroma.quote.pleroma.quote_url == Object.normalize(post).data["id"] + assert status.pleroma.quote.pleroma.quote_visible + + # In an index + [status] = StatusView.render("index.json", %{activities: [quoted_quote_post], as: :activity}) + + assert status.pleroma.quote.id == to_string(quote_post.id) + end + + test "quoted private post" do + user = insert(:user) + + # Insert a private post + private = insert(:followers_only_note_activity, user: user) + private_object = Object.normalize(private) + + # Create a public post quoting the private post + quote_private = + insert(:note_activity, note: insert(:note, data: %{"quoteUrl" => private_object.data["id"]})) + + status = StatusView.render("show.json", %{activity: quote_private}) + + # The quote isn't rendered + refute status.pleroma.quote + assert status.pleroma.quote_url == private_object.data["id"] + refute status.pleroma.quote_visible + + # After following the user, the quote is rendered + follower = insert(:user) + CommonAPI.follow(follower, user) + + status = StatusView.render("show.json", %{activity: quote_private, for: follower}) + assert status.pleroma.quote.id == to_string(private.id) + assert status.pleroma.quote_visible + end + + test "quoted direct message" do + # Insert a direct message + direct = insert(:direct_note_activity) + direct_object = Object.normalize(direct) + + # Create a public post quoting the direct message + quote_direct = + insert(:note_activity, note: insert(:note, data: %{"quoteUrl" => direct_object.data["id"]})) + + status = StatusView.render("show.json", %{activity: quote_direct}) + + # The quote isn't rendered + refute status.pleroma.quote + assert status.pleroma.quote_url == direct_object.data["id"] + refute status.pleroma.quote_visible + end + + test "repost of quote post" do + post = insert(:note_activity) + user = insert(:user) + + {:ok, quote_post} = CommonAPI.post(user, %{status: "he", quote_id: post.id}) + {:ok, repost} = CommonAPI.repeat(quote_post.id, user) + + [status] = StatusView.render("index.json", %{activities: [repost], as: :activity}) + + assert status.reblog.pleroma.quote.id == to_string(post.id) + end + test "contains mentions" do user = insert(:user) mentioned = insert(:user) @@ -631,56 +766,105 @@ defmodule Pleroma.Web.MastodonAPI.StatusViewTest do describe "rich media cards" do test "a rich media card without a site name renders correctly" do - page_url = "http://example.com" + page_url = "https://example.com" - card = %{ - url: page_url, - image: page_url <> "/example.jpg", - title: "Example website" - } + {:ok, card} = + Card.create(page_url, %{image: page_url <> "/example.jpg", title: "Example website"}) - %{provider_name: "example.com"} = - StatusView.render("card.json", %{page_url: page_url, rich_media: card}) + assert match?(%{provider_name: "example.com"}, StatusView.render("card.json", card)) end test "a rich media card without a site name or image renders correctly" do - page_url = "http://example.com" + page_url = "https://example.com" - card = %{ - url: page_url, - title: "Example website" + fields = %{ + "url" => page_url, + "title" => "Example website" } - %{provider_name: "example.com"} = - StatusView.render("card.json", %{page_url: page_url, rich_media: card}) + {:ok, card} = Card.create(page_url, fields) + + assert match?(%{provider_name: "example.com"}, StatusView.render("card.json", card)) end test "a rich media card without an image renders correctly" do - page_url = "http://example.com" + page_url = "https://example.com" - card = %{ - url: page_url, - site_name: "Example site name", - title: "Example website" + fields = %{ + "url" => page_url, + "site_name" => "Example site name", + "title" => "Example website" } - %{provider_name: "example.com"} = - StatusView.render("card.json", %{page_url: page_url, rich_media: card}) + {:ok, card} = Card.create(page_url, fields) + + assert match?(%{provider_name: "example.com"}, StatusView.render("card.json", card)) + end + + test "a rich media card without descriptions returns the fields with empty strings" do + page_url = "https://example.com" + + fields = %{ + "url" => page_url, + "site_name" => "Example site name", + "title" => "Example website" + } + + {:ok, card} = Card.create(page_url, fields) + + assert match?( + %{description: "", image_description: ""}, + StatusView.render("card.json", card) + ) end test "a rich media card with all relevant data renders correctly" do - page_url = "http://example.com" - - card = %{ - url: page_url, - site_name: "Example site name", - title: "Example website", - image: page_url <> "/example.jpg", - description: "Example description" + page_url = "https://example.com" + + fields = %{ + "url" => page_url, + "site_name" => "Example site name", + "title" => "Example website", + "image" => page_url <> "/example.jpg", + "description" => "Example description" } - %{provider_name: "example.com"} = - StatusView.render("card.json", %{page_url: page_url, rich_media: card}) + {:ok, card} = Card.create(page_url, fields) + + assert match?(%{provider_name: "example.com"}, StatusView.render("card.json", card)) + end + + test "a rich media card has all media proxied" do + clear_config([:media_proxy, :enabled], true) + clear_config([:media_preview_proxy, :enabled]) + + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + page_url = "https://example.com" + + fields = %{ + "url" => page_url, + "site_name" => "Example site name", + "title" => "Example website", + "image" => page_url <> "/example.jpg", + "audio" => page_url <> "/example.ogg", + "video" => page_url <> "/example.mp4", + "description" => "Example description" + } + + {:ok, card} = Card.create(page_url, fields) + + %{ + provider_name: "example.com", + image: image, + pleroma: %{opengraph: og} + } = StatusView.render("card.json", card) + + assert String.match?(image, ~r/\/proxy\//) + assert String.match?(og["image"], ~r/\/proxy\//) + assert String.match?(og["audio"], ~r/\/proxy\//) + assert String.match?(og["video"], ~r/\/proxy\//) end end diff --git a/test/pleroma/web/media_proxy/media_proxy_controller_test.exs b/test/pleroma/web/media_proxy/media_proxy_controller_test.exs @@ -6,10 +6,20 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do use Pleroma.Web.ConnCase import Mock + import Mox + alias Pleroma.ReverseProxy.ClientMock + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Web.MediaProxy alias Plug.Conn + setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + :ok + end + describe "Media Proxy" do setup do clear_config([:media_proxy, :enabled], true) @@ -74,6 +84,20 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do assert %Conn{status: 404, resp_body: "Not Found"} = get(conn, url) end end + + test "it applies sandbox CSP to MediaProxy requests", %{conn: conn} do + media_url = "https://lain.com/image.png" + media_proxy_url = MediaProxy.encode_url(media_url) + + ClientMock + |> expect(:request, fn :get, ^media_url, _, _, _ -> + {:ok, 200, [{"content-type", "image/png"}]} + end) + + %Conn{resp_headers: headers} = get(conn, media_proxy_url) + + assert {"content-security-policy", "sandbox;"} in headers + end end describe "Media Preview Proxy" do @@ -158,7 +182,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do media_proxy_url: media_proxy_url } do Tesla.Mock.mock(fn - %{method: "HEAD", url: ^media_proxy_url} -> + %{method: :head, url: ^media_proxy_url} -> %Tesla.Env{status: 500, body: ""} end) @@ -173,7 +197,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do media_proxy_url: media_proxy_url } do Tesla.Mock.mock(fn - %{method: "HEAD", url: ^media_proxy_url} -> + %{method: :head, url: ^media_proxy_url} -> %Tesla.Env{status: 200, body: "", headers: [{"content-type", "application/pdf"}]} end) @@ -193,7 +217,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do clear_config([:media_preview_proxy, :min_content_length], 1_000_000_000) Tesla.Mock.mock(fn - %{method: "HEAD", url: ^media_proxy_url} -> + %{method: :head, url: ^media_proxy_url} -> %Tesla.Env{ status: 200, body: "", @@ -218,7 +242,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do media_proxy_url: media_proxy_url } do Tesla.Mock.mock(fn - %{method: "HEAD", url: ^media_proxy_url} -> + %{method: :head, url: ^media_proxy_url} -> %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/gif"}]} end) @@ -236,7 +260,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do media_proxy_url: media_proxy_url } do Tesla.Mock.mock(fn - %{method: "HEAD", url: ^media_proxy_url} -> + %{method: :head, url: ^media_proxy_url} -> %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/jpeg"}]} end) @@ -256,7 +280,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do clear_config([:media_preview_proxy, :min_content_length], 100_000) Tesla.Mock.mock(fn - %{method: "HEAD", url: ^media_proxy_url} -> + %{method: :head, url: ^media_proxy_url} -> %Tesla.Env{ status: 200, body: "", @@ -278,7 +302,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do assert_dependencies_installed() Tesla.Mock.mock(fn - %{method: "HEAD", url: ^media_proxy_url} -> + %{method: :head, url: ^media_proxy_url} -> %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/png"}]} %{method: :get, url: ^media_proxy_url} -> @@ -300,7 +324,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do assert_dependencies_installed() Tesla.Mock.mock(fn - %{method: "HEAD", url: ^media_proxy_url} -> + %{method: :head, url: ^media_proxy_url} -> %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/jpeg"}]} %{method: :get, url: ^media_proxy_url} -> @@ -320,7 +344,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyControllerTest do media_proxy_url: media_proxy_url } do Tesla.Mock.mock(fn - %{method: "HEAD", url: ^media_proxy_url} -> + %{method: :head, url: ^media_proxy_url} -> %Tesla.Env{status: 200, body: "", headers: [{"content-type", "image/jpeg"}]} %{method: :get, url: ^media_proxy_url} -> diff --git a/test/pleroma/web/media_proxy_test.exs b/test/pleroma/web/media_proxy_test.exs @@ -7,9 +7,19 @@ defmodule Pleroma.Web.MediaProxyTest do use Pleroma.Tests.Helpers alias Pleroma.Config + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Web.Endpoint alias Pleroma.Web.MediaProxy + import Mox + + setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + :ok + end + defp decode_result(encoded) do {:ok, decoded} = MediaProxy.decode_url(encoded) decoded @@ -222,7 +232,12 @@ defmodule Pleroma.Web.MediaProxyTest do test "ensure Pleroma.Upload base_url is always whitelisted" do media_url = "https://media.pleroma.social" - clear_config([Pleroma.Upload, :base_url], media_url) + + ConfigMock + |> stub(:get, fn + [Pleroma.Upload, :base_url] -> media_url + path -> Pleroma.Test.StaticConfig.get(path) + end) url = "#{media_url}/static/logo.png" encoded = MediaProxy.url(url) diff --git a/test/pleroma/web/metadata/providers/open_graph_test.exs b/test/pleroma/web/metadata/providers/open_graph_test.exs @@ -4,9 +4,19 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraphTest do use Pleroma.DataCase + import Mox import Pleroma.Factory + + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Web.Metadata.Providers.OpenGraph + setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + :ok + end + setup do: clear_config([Pleroma.Web.Metadata, :unfurl_nsfw]) test "it renders all supported types of attachments and skips unknown types" do diff --git a/test/pleroma/web/metadata/providers/rel_me_test.exs b/test/pleroma/web/metadata/providers/rel_me_test.exs @@ -11,11 +11,24 @@ defmodule Pleroma.Web.Metadata.Providers.RelMeTest do bio = ~s(<a href="https://some-link.com">https://some-link.com</a> <a rel="me" href="https://another-link.com">https://another-link.com</a> <link href="http://some.com"> <link rel="me" href="http://some3.com">) - user = insert(:user, %{bio: bio}) + fields = [ + %{ + "name" => "profile", + "value" => ~S(<a rel="me" href="http://profile.com">http://profile.com</a>) + }, + %{ + "name" => "like", + "value" => ~S(<a href="http://cofe.io">http://cofe.io</a>) + }, + %{"name" => "foo", "value" => "bar"} + ] + + user = insert(:user, %{bio: bio, fields: fields}) assert RelMe.build_tags(%{user: user}) == [ {:link, [rel: "me", href: "http://some3.com"], []}, - {:link, [rel: "me", href: "https://another-link.com"], []} + {:link, [rel: "me", href: "https://another-link.com"], []}, + {:link, [rel: "me", href: "http://profile.com"], []} ] end end diff --git a/test/pleroma/web/metadata/providers/twitter_card_test.exs b/test/pleroma/web/metadata/providers/twitter_card_test.exs @@ -182,7 +182,8 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCardTest do {:meta, [name: "twitter:title", content: Utils.user_name_string(user)], []}, {:meta, [name: "twitter:description", content: "pleroma in a nutshell"], []}, {:meta, [name: "twitter:card", content: "summary_large_image"], []}, - {:meta, [name: "twitter:player", content: "https://pleroma.gov/tenshi.png"], []}, + {:meta, [name: "twitter:image", content: "https://pleroma.gov/tenshi.png"], []}, + {:meta, [name: "twitter:image:alt", content: ""], []}, {:meta, [name: "twitter:player:width", content: "1280"], []}, {:meta, [name: "twitter:player:height", content: "1024"], []}, {:meta, [name: "twitter:card", content: "player"], []}, diff --git a/test/pleroma/web/metadata/utils_test.exs b/test/pleroma/web/metadata/utils_test.exs @@ -72,7 +72,7 @@ defmodule Pleroma.Web.Metadata.UtilsTest do end end - describe "scrub_html_and_truncate/2" do + describe "scrub_html_and_truncate/3" do test "it returns text without encode HTML" do assert Utils.scrub_html_and_truncate("Pleroma's really cool!") == "Pleroma's really cool!" end diff --git a/test/pleroma/web/o_auth/mfa_controller_test.exs b/test/pleroma/web/o_auth/mfa_controller_test.exs @@ -214,7 +214,7 @@ defmodule Pleroma.Web.OAuth.MFAControllerTest do assert response == %{"error" => "Invalid code"} end - test "returns error when client credentails is wrong ", %{conn: conn, user: user} do + test "returns error when client credentials is wrong ", %{conn: conn, user: user} do otp_token = TOTP.generate_token(user.multi_factor_authentication_settings.totp.secret) mfa_token = insert(:mfa_token, user: user) diff --git a/test/pleroma/web/o_auth/o_auth_controller_test.exs b/test/pleroma/web/o_auth/o_auth_controller_test.exs @@ -186,7 +186,7 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do assert html_response(conn, 302) assert redirected_to(conn) == app.redirect_uris - assert get_flash(conn, :error) == "Failed to authenticate: (error description)." + assert conn.assigns.flash["error"] == "Failed to authenticate: (error description)." end test "GET /oauth/registration_details renders registration details form", %{ @@ -307,7 +307,7 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do |> post("/oauth/register", bad_params) assert html_response(conn, 403) =~ ~r/name="op" type="submit" value="register"/ - assert get_flash(conn, :error) == "Error: #{bad_param} has already been taken." + assert conn.assigns.flash["error"] == "Error: #{bad_param} has already been taken." end end @@ -398,7 +398,7 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do |> post("/oauth/register", params) assert html_response(conn, 401) =~ ~r/name="op" type="submit" value="connect"/ - assert get_flash(conn, :error) == "Invalid Username/Password" + assert conn.assigns.flash["error"] == "Invalid Username/Password" end end diff --git a/test/pleroma/web/o_auth/token/utils_test.exs b/test/pleroma/web/o_auth/token/utils_test.exs @@ -13,7 +13,7 @@ defmodule Pleroma.Web.OAuth.Token.UtilsTest do Utils.fetch_app(%Plug.Conn{params: %{"client_id" => 1, "client_secret" => "x"}}) end - test "returns App by params credentails" do + test "returns App by params credentials" do app = insert(:oauth_app) assert {:ok, load_app} = @@ -24,7 +24,7 @@ defmodule Pleroma.Web.OAuth.Token.UtilsTest do assert load_app == app end - test "returns App by header credentails" do + test "returns App by header credentials" do app = insert(:oauth_app) header = "Basic " <> Base.encode64("#{app.client_id}:#{app.client_secret}") diff --git a/test/pleroma/web/o_status/o_status_controller_test.exs b/test/pleroma/web/o_status/o_status_controller_test.exs @@ -196,7 +196,7 @@ defmodule Pleroma.Web.OStatus.OStatusControllerTest do |> get("/notice/#{like_activity.id}") |> response(200) - assert resp =~ "<!--server-generated-meta-->" + refute resp =~ ~r(<meta content="[^"]*" property="og:url") end test "404s a private notice", %{conn: conn} do diff --git a/test/pleroma/web/pleroma_api/controllers/backup_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/backup_controller_test.exs @@ -5,12 +5,17 @@ defmodule Pleroma.Web.PleromaAPI.BackupControllerTest do use Pleroma.Web.ConnCase + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User.Backup alias Pleroma.Web.PleromaAPI.BackupView setup do clear_config([Pleroma.Upload, :uploader]) clear_config([Backup, :limit_days]) + + ConfigMock + |> Mox.stub_with(Pleroma.Config) + oauth_access(["read:backups"]) end diff --git a/test/pleroma/web/pleroma_api/controllers/bookmark_folder_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/bookmark_folder_controller_test.exs @@ -0,0 +1,161 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only +defmodule Pleroma.Web.PleromaAPI.BookmarkFolderControllerTest do + use Pleroma.Web.ConnCase + + alias Pleroma.BookmarkFolder + # alias Pleroma.Object + # alias Pleroma.Tests.Helpers + # alias Pleroma.UnstubbedConfigMock, as: ConfigMock + # alias Pleroma.User + # alias Pleroma.Web.ActivityPub.ActivityPub + # alias Pleroma.Web.CommonAPI + + # import Mox + import Pleroma.Factory + + describe "GET /api/v1/pleroma/bookmark_folders" do + setup do: oauth_access(["read:bookmarks"]) + + test "it lists bookmark folders", %{conn: conn, user: user} do + {:ok, folder} = BookmarkFolder.create(user.id, "Bookmark folder") + + folder_id = folder.id + + result = + conn + |> get("/api/v1/pleroma/bookmark_folders") + |> json_response_and_validate_schema(200) + + assert [ + %{ + "id" => ^folder_id, + "name" => "Bookmark folder", + "emoji" => nil, + "emoji_url" => nil + } + ] = result + end + end + + describe "POST /api/v1/pleroma/bookmark_folders" do + setup do: oauth_access(["write:bookmarks"]) + + test "it creates a bookmark folder", %{conn: conn} do + result = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/pleroma/bookmark_folders", %{ + name: "Bookmark folder", + emoji: "📁" + }) + |> json_response_and_validate_schema(200) + + assert %{ + "name" => "Bookmark folder", + "emoji" => "📁", + "emoji_url" => nil + } = result + end + + test "it creates a bookmark folder with custom emoji", %{conn: conn} do + result = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/pleroma/bookmark_folders", %{ + name: "Bookmark folder", + emoji: ":firefox:" + }) + |> json_response_and_validate_schema(200) + + assert %{ + "name" => "Bookmark folder", + "emoji" => ":firefox:", + "emoji_url" => "http://localhost:4001/emoji/Firefox.gif" + } = result + end + + test "it returns error for invalid emoji", %{conn: conn} do + result = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/pleroma/bookmark_folders", %{ + name: "Bookmark folder", + emoji: "not an emoji" + }) + |> json_response_and_validate_schema(422) + + assert %{"error" => "Invalid emoji"} = result + end + end + + describe "PATCH /api/v1/pleroma/bookmark_folders/:id" do + setup do: oauth_access(["write:bookmarks"]) + + test "it updates a bookmark folder", %{conn: conn, user: user} do + {:ok, folder} = BookmarkFolder.create(user.id, "Bookmark folder") + + result = + conn + |> put_req_header("content-type", "application/json") + |> patch("/api/v1/pleroma/bookmark_folders/#{folder.id}", %{ + name: "bookmark folder" + }) + |> json_response_and_validate_schema(200) + + assert %{ + "name" => "bookmark folder" + } = result + end + + test "it returns error when updating others' folders", %{conn: conn} do + other_user = insert(:user) + + {:ok, folder} = BookmarkFolder.create(other_user.id, "Bookmark folder") + + result = + conn + |> put_req_header("content-type", "application/json") + |> patch("/api/v1/pleroma/bookmark_folders/#{folder.id}", %{ + name: "bookmark folder" + }) + |> json_response_and_validate_schema(403) + + assert %{ + "error" => "Access denied" + } = result + end + end + + describe "DELETE /api/v1/pleroma/bookmark_folders/:id" do + setup do: oauth_access(["write:bookmarks"]) + + test "it deleting a bookmark folder", %{conn: conn, user: user} do + {:ok, folder} = BookmarkFolder.create(user.id, "Bookmark folder") + + assert conn + |> delete("/api/v1/pleroma/bookmark_folders/#{folder.id}") + |> json_response_and_validate_schema(200) + + folders = BookmarkFolder.for_user(user.id) + + assert length(folders) == 0 + end + + test "it returns error when deleting others' folders", %{conn: conn} do + other_user = insert(:user) + + {:ok, folder} = BookmarkFolder.create(other_user.id, "Bookmark folder") + + result = + conn + |> patch("/api/v1/pleroma/bookmark_folders/#{folder.id}") + |> json_response_and_validate_schema(403) + + assert %{ + "error" => "Access denied" + } = result + end + end +end diff --git a/test/pleroma/web/pleroma_api/controllers/chat_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/chat_controller_test.exs @@ -7,10 +7,13 @@ defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do alias Pleroma.Chat alias Pleroma.Chat.MessageReference alias Pleroma.Object + alias Pleroma.Tests.Helpers + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.CommonAPI + import Mox import Pleroma.Factory describe "POST /api/v1/pleroma/chats/:id/messages/:message_id/read" do @@ -112,6 +115,9 @@ defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do filename: "an_image.jpg" } + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + {:ok, upload} = ActivityPub.upload(file, actor: user.ap_id) other_user = insert(:user) @@ -207,36 +213,63 @@ defmodule Pleroma.Web.PleromaAPI.ChatControllerTest do result = json_response_and_validate_schema(response, 200) [next, prev] = get_resp_header(response, "link") |> hd() |> String.split(", ") - api_endpoint = "/api/v1/pleroma/chats/" + api_endpoint = Pleroma.Web.Endpoint.url() <> "/api/v1/pleroma/chats/" + + [next_url, next_rel] = String.split(next, ";") + next_url = String.trim_trailing(next_url, ">") |> String.trim_leading("<") + + next_url_sorted = Helpers.uri_query_sort(next_url) assert String.match?( - next, - ~r(#{api_endpoint}.*/messages\?limit=\d+&max_id=.*; rel=\"next\"$) + next_url_sorted, + ~r(#{api_endpoint}.*/messages\?limit=\d+&max_id=.*&offset=\d+$) ) + assert next_rel =~ "next" + + [prev_url, prev_rel] = String.split(prev, ";") + prev_url = String.trim_trailing(prev_url, ">") |> String.trim_leading("<") + + prev_url_sorted = Helpers.uri_query_sort(prev_url) + assert String.match?( - prev, - ~r(#{api_endpoint}.*/messages\?limit=\d+&min_id=.*; rel=\"prev\"$) + prev_url_sorted, + ~r(#{api_endpoint}.*/messages\?limit=\d+&min_id=.*&offset=\d+$) ) + assert prev_rel =~ "prev" + assert length(result) == 20 - response = - get(conn, "/api/v1/pleroma/chats/#{chat.id}/messages?max_id=#{List.last(result)["id"]}") + response = get(conn, "#{api_endpoint}#{chat.id}/messages?max_id=#{List.last(result)["id"]}") result = json_response_and_validate_schema(response, 200) [next, prev] = get_resp_header(response, "link") |> hd() |> String.split(", ") + [next_url, next_rel] = String.split(next, ";") + next_url = String.trim_trailing(next_url, ">") |> String.trim_leading("<") + + next_url_sorted = Helpers.uri_query_sort(next_url) + assert String.match?( - next, - ~r(#{api_endpoint}.*/messages\?limit=\d+&max_id=.*; rel=\"next\"$) + next_url_sorted, + ~r(#{api_endpoint}.*/messages\?limit=\d+&max_id=.*&offset=\d+$) ) + assert next_rel =~ "next" + + [prev_url, prev_rel] = String.split(prev, ";") + prev_url = String.trim_trailing(prev_url, ">") |> String.trim_leading("<") + + prev_url_sorted = Helpers.uri_query_sort(prev_url) + assert String.match?( - prev, - ~r(#{api_endpoint}.*/messages\?limit=\d+&max_id=.*&min_id=.*; rel=\"prev\"$) + prev_url_sorted, + ~r(#{api_endpoint}.*/messages\?limit=\d+&max_id=.*&min_id=.*&offset=\d+$) ) + assert prev_rel =~ "prev" + assert length(result) == 10 end diff --git a/test/pleroma/web/pleroma_api/controllers/emoji_pack_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/emoji_pack_controller_test.exs @@ -116,7 +116,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do %{method: :get, url: "https://example.com/nodeinfo/2.1.json"} -> json(%{metadata: %{features: ["shareable_emoji_packs"]}}) - %{method: :get, url: "https://example.com/api/pleroma/emoji/packs?page=2&page_size=1"} -> + %{method: :get, url: "https://example.com/api/v1/pleroma/emoji/packs?page=2&page_size=1"} -> json(resp) end) @@ -199,7 +199,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do %{ method: :get, - url: "https://example.com/api/pleroma/emoji/pack?name=test_pack" + url: "https://example.com/api/v1/pleroma/emoji/pack?name=test_pack&page_size=" <> _n } -> conn |> get("/api/pleroma/emoji/pack?name=test_pack") @@ -208,7 +208,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/archive?name=test_pack" + url: "https://example.com/api/v1/pleroma/emoji/packs/archive?name=test_pack" } -> conn |> get("/api/pleroma/emoji/packs/archive?name=test_pack") @@ -217,7 +217,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do %{ method: :get, - url: "https://example.com/api/pleroma/emoji/pack?name=test_pack_nonshared" + url: + "https://example.com/api/v1/pleroma/emoji/pack?name=test_pack_nonshared&page_size=" <> + _n } -> conn |> get("/api/pleroma/emoji/pack?name=test_pack_nonshared") @@ -305,14 +307,14 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do %{ method: :get, - url: "https://example.com/api/pleroma/emoji/pack?name=pack_bad_sha" + url: "https://example.com/api/v1/pleroma/emoji/pack?name=pack_bad_sha&page_size=" <> _n } -> {:ok, pack} = Pleroma.Emoji.Pack.load_pack("pack_bad_sha") %Tesla.Env{status: 200, body: Jason.encode!(pack)} %{ method: :get, - url: "https://example.com/api/pleroma/emoji/packs/archive?name=pack_bad_sha" + url: "https://example.com/api/v1/pleroma/emoji/packs/archive?name=pack_bad_sha" } -> %Tesla.Env{ status: 200, @@ -342,7 +344,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do %{ method: :get, - url: "https://example.com/api/pleroma/emoji/pack?name=test_pack" + url: "https://example.com/api/v1/pleroma/emoji/pack?name=test_pack&page_size=" <> _n } -> {:ok, pack} = Pleroma.Emoji.Pack.load_pack("test_pack") %Tesla.Env{status: 200, body: Jason.encode!(pack)} diff --git a/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/emoji_reaction_controller_test.exs @@ -13,27 +13,122 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do import Pleroma.Factory + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + test "PUT /api/v1/pleroma/statuses/:id/reactions/:emoji", %{conn: conn} do user = insert(:user) other_user = insert(:user) + note = insert(:note, user: user, data: %{"reactions" => [["👍", [other_user.ap_id], nil]]}) + activity = insert(:note_activity, note: note, user: user) + + result = + conn + |> assign(:user, other_user) + |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) + |> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/\u26A0") + |> json_response_and_validate_schema(200) + + assert %{"id" => id} = result + assert to_string(activity.id) == id + + assert result["pleroma"]["emoji_reactions"] == [ + %{ + "name" => "👍", + "count" => 1, + "me" => true, + "url" => nil, + "account_ids" => [other_user.id] + }, + %{ + "name" => "\u26A0\uFE0F", + "count" => 1, + "me" => true, + "url" => nil, + "account_ids" => [other_user.id] + } + ] + {:ok, activity} = CommonAPI.post(user, %{status: "#cofe"}) + ObanHelpers.perform_all() + + # Reacting with a custom emoji result = conn |> assign(:user, other_user) |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) - |> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/☕") + |> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/:dinosaur:") |> json_response_and_validate_schema(200) - # We return the status, but this our implementation detail. assert %{"id" => id} = result assert to_string(activity.id) == id assert result["pleroma"]["emoji_reactions"] == [ - %{"name" => "☕", "count" => 1, "me" => true} + %{ + "name" => "dinosaur", + "count" => 1, + "me" => true, + "url" => "http://localhost:4001/emoji/dino walking.gif", + "account_ids" => [other_user.id] + } ] + # Reacting with a remote emoji + note = + insert(:note, + user: user, + data: %{ + "reactions" => [ + ["👍", [other_user.ap_id], nil], + ["wow", [other_user.ap_id], "https://remote/emoji/wow"] + ] + } + ) + + activity = insert(:note_activity, note: note, user: user) + + result = + conn + |> assign(:user, user) + |> assign(:token, insert(:oauth_token, user: user, scopes: ["write:statuses"])) + |> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/:wow@remote:") + |> json_response(200) + + assert result["pleroma"]["emoji_reactions"] == [ + %{ + "account_ids" => [other_user.id], + "count" => 1, + "me" => false, + "name" => "👍", + "url" => nil + }, + %{ + "name" => "wow@remote", + "count" => 2, + "me" => true, + "url" => "https://remote/emoji/wow", + "account_ids" => [user.id, other_user.id] + } + ] + + # Reacting with a remote custom emoji that hasn't been reacted with yet + note = + insert(:note, + user: user + ) + + activity = insert(:note_activity, note: note, user: user) + + assert conn + |> assign(:user, user) + |> assign(:token, insert(:oauth_token, user: user, scopes: ["write:statuses"])) + |> put("/api/v1/pleroma/statuses/#{activity.id}/reactions/:wow@remote:") + |> json_response(400) + # Reacting with a non-emoji assert conn |> assign(:user, other_user) @@ -46,8 +141,21 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do user = insert(:user) other_user = insert(:user) - {:ok, activity} = CommonAPI.post(user, %{status: "#cofe"}) + note = + insert(:note, + user: user, + data: %{"reactions" => [["wow", [user.ap_id], "https://remote/emoji/wow"]]} + ) + + activity = insert(:note_activity, note: note, user: user) + + ObanHelpers.perform_all() + {:ok, _reaction_activity} = CommonAPI.react_with_emoji(activity.id, other_user, "☕") + {:ok, _reaction_activity} = CommonAPI.react_with_emoji(activity.id, other_user, ":dinosaur:") + + {:ok, _reaction_activity} = + CommonAPI.react_with_emoji(activity.id, other_user, ":wow@remote:") ObanHelpers.perform_all() @@ -60,11 +168,47 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do assert %{"id" => id} = json_response_and_validate_schema(result, 200) assert to_string(activity.id) == id + # Remove custom emoji + + result = + conn + |> assign(:user, other_user) + |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) + |> delete("/api/v1/pleroma/statuses/#{activity.id}/reactions/:dinosaur:") + + assert %{"id" => id} = json_response_and_validate_schema(result, 200) + assert to_string(activity.id) == id + ObanHelpers.perform_all() object = Object.get_by_ap_id(activity.data["object"]) - assert object.data["reaction_count"] == 0 + assert object.data["reaction_count"] == 2 + + # Remove custom remote emoji + result = + conn + |> assign(:user, other_user) + |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) + |> delete("/api/v1/pleroma/statuses/#{activity.id}/reactions/:wow@remote:") + |> json_response(200) + + assert result["pleroma"]["emoji_reactions"] == [ + %{ + "name" => "wow@remote", + "count" => 1, + "me" => false, + "url" => "https://remote/emoji/wow", + "account_ids" => [user.id] + } + ] + + # Remove custom remote emoji that hasn't been reacted with yet + assert conn + |> assign(:user, other_user) + |> assign(:token, insert(:oauth_token, user: other_user, scopes: ["write:statuses"])) + |> delete("/api/v1/pleroma/statuses/#{activity.id}/reactions/:zoop@remote:") + |> json_response(400) end test "GET /api/v1/pleroma/statuses/:id/reactions", %{conn: conn} do @@ -106,6 +250,38 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do result end + test "GET /api/v1/pleroma/statuses/:id/reactions with legacy format", %{conn: conn} do + user = insert(:user) + other_user = insert(:user) + + note = + insert(:note, + user: user, + data: %{ + "reactions" => [["😿", [other_user.ap_id]]] + } + ) + + activity = insert(:note_activity, user: user, note: note) + + result = + conn + |> get("/api/v1/pleroma/statuses/#{activity.id}/reactions") + |> json_response_and_validate_schema(200) + + other_user_id = other_user.id + + assert [ + %{ + "name" => "😿", + "count" => 1, + "me" => false, + "url" => nil, + "accounts" => [%{"id" => ^other_user_id}] + } + ] = result + end + test "GET /api/v1/pleroma/statuses/:id/reactions?with_muted=true", %{conn: conn} do user = insert(:user) user2 = insert(:user) @@ -181,7 +357,15 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionControllerTest do {:ok, _} = CommonAPI.react_with_emoji(activity.id, other_user, "🎅") {:ok, _} = CommonAPI.react_with_emoji(activity.id, other_user, "☕") - assert [%{"name" => "🎅", "count" => 1, "accounts" => [represented_user], "me" => false}] = + assert [ + %{ + "name" => "🎅", + "count" => 1, + "accounts" => [represented_user], + "me" => false, + "url" => nil + } + ] = conn |> get("/api/v1/pleroma/statuses/#{activity.id}/reactions/🎅") |> json_response_and_validate_schema(200) diff --git a/test/pleroma/web/pleroma_api/controllers/instances_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/instances_controller_test.exs @@ -16,7 +16,7 @@ defmodule Pleroma.Web.PleromaApi.InstancesControllerTest do {:ok, %Pleroma.Instances.Instance{unreachable_since: constant_unreachable}} = Instances.set_consistently_unreachable(constant) - _eventual_unrechable = Instances.set_unreachable(eventual) + _eventual_unreachable = Instances.set_unreachable(eventual) %{constant_unreachable: constant_unreachable, constant: constant} end @@ -26,6 +26,8 @@ defmodule Pleroma.Web.PleromaApi.InstancesControllerTest do constant_unreachable: constant_unreachable, constant: constant } do + clear_config([:instance, :public], false) + constant_host = URI.parse(constant).host assert conn diff --git a/test/pleroma/web/pleroma_api/controllers/mascot_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/mascot_controller_test.exs @@ -5,8 +5,11 @@ defmodule Pleroma.Web.PleromaAPI.MascotControllerTest do use Pleroma.Web.ConnCase, async: true + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User + import Mox + test "mascot upload" do %{conn: conn} = oauth_access(["write:accounts"]) @@ -29,6 +32,9 @@ defmodule Pleroma.Web.PleromaAPI.MascotControllerTest do filename: "an_image.jpg" } + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + conn = conn |> put_req_header("content-type", "multipart/form-data") @@ -53,6 +59,9 @@ defmodule Pleroma.Web.PleromaAPI.MascotControllerTest do filename: "an_image.jpg" } + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + ret_conn = conn |> put_req_header("content-type", "multipart/form-data") diff --git a/test/pleroma/web/pleroma_api/controllers/notification_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/notification_controller_test.exs @@ -21,13 +21,11 @@ defmodule Pleroma.Web.PleromaAPI.NotificationControllerTest do {:ok, [notification1]} = Notification.create_notifications(activity1) {:ok, [notification2]} = Notification.create_notifications(activity2) - response = - conn - |> put_req_header("content-type", "application/json") - |> post("/api/v1/pleroma/notifications/read", %{id: notification1.id}) - |> json_response_and_validate_schema(:ok) + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/pleroma/notifications/read", %{id: notification1.id}) + |> json_response_and_validate_schema(:ok) - assert %{"pleroma" => %{"is_seen" => true}} = response assert Repo.get(Notification, notification1.id).seen refute Repo.get(Notification, notification2.id).seen end @@ -40,14 +38,17 @@ defmodule Pleroma.Web.PleromaAPI.NotificationControllerTest do [notification3, notification2, notification1] = Notification.for_user(user1, %{limit: 3}) - [response1, response2] = - conn - |> put_req_header("content-type", "application/json") - |> post("/api/v1/pleroma/notifications/read", %{max_id: notification2.id}) - |> json_response_and_validate_schema(:ok) + refute Repo.get(Notification, notification1.id).seen + refute Repo.get(Notification, notification2.id).seen + refute Repo.get(Notification, notification3.id).seen + + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/pleroma/notifications/read", %{max_id: notification2.id}) + |> json_response_and_validate_schema(:ok) + + [notification3, notification2, notification1] = Notification.for_user(user1, %{limit: 3}) - assert %{"pleroma" => %{"is_seen" => true}} = response1 - assert %{"pleroma" => %{"is_seen" => true}} = response2 assert Repo.get(Notification, notification1.id).seen assert Repo.get(Notification, notification2.id).seen refute Repo.get(Notification, notification3.id).seen diff --git a/test/pleroma/web/pleroma_api/controllers/scrobble_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/scrobble_controller_test.exs @@ -18,7 +18,8 @@ defmodule Pleroma.Web.PleromaAPI.ScrobbleControllerTest do "title" => "lain radio episode 1", "artist" => "lain", "album" => "lain radio", - "length" => "180000" + "length" => "180000", + "externalLink" => "https://www.last.fm/music/lain/lain+radio/lain+radio+episode+1" }) assert %{"title" => "lain radio episode 1"} = json_response_and_validate_schema(conn, 200) @@ -33,21 +34,24 @@ defmodule Pleroma.Web.PleromaAPI.ScrobbleControllerTest do CommonAPI.listen(user, %{ title: "lain radio episode 1", artist: "lain", - album: "lain radio" + album: "lain radio", + externalLink: "https://www.last.fm/music/lain/lain+radio/lain+radio+episode+1" }) {:ok, _activity} = CommonAPI.listen(user, %{ title: "lain radio episode 2", artist: "lain", - album: "lain radio" + album: "lain radio", + externalLink: "https://www.last.fm/music/lain/lain+radio/lain+radio+episode+2" }) {:ok, _activity} = CommonAPI.listen(user, %{ title: "lain radio episode 3", artist: "lain", - album: "lain radio" + album: "lain radio", + externalLink: "https://www.last.fm/music/lain/lain+radio/lain+radio+episode+3" }) conn = get(conn, "/api/v1/pleroma/accounts/#{user.id}/scrobbles") diff --git a/test/pleroma/web/pleroma_api/controllers/status_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/status_controller_test.exs @@ -0,0 +1,54 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.StatusControllerTest do + use Pleroma.Web.ConnCase + + alias Pleroma.Web.CommonAPI + + import Pleroma.Factory + + describe "getting quotes of a specified post" do + setup do + [current_user, user] = insert_pair(:user) + %{user: current_user, conn: conn} = oauth_access(["read:statuses"], user: current_user) + [current_user: current_user, user: user, conn: conn] + end + + test "shows quotes of a post", %{conn: conn} do + user = insert(:user) + activity = insert(:note_activity) + + {:ok, quote_post} = CommonAPI.post(user, %{status: "quoat", quote_id: activity.id}) + + response = + conn + |> get("/api/v1/pleroma/statuses/#{activity.id}/quotes") + |> json_response_and_validate_schema(:ok) + + [status] = response + + assert length(response) == 1 + assert status["id"] == quote_post.id + end + + test "returns 404 error when a post can't be seen", %{conn: conn} do + activity = insert(:direct_note_activity) + + response = + conn + |> get("/api/v1/pleroma/statuses/#{activity.id}/quotes") + + assert json_response_and_validate_schema(response, 404) == %{"error" => "Record not found"} + end + + test "returns 404 error when a post does not exist", %{conn: conn} do + response = + conn + |> get("/api/v1/pleroma/statuses/idontexist/quotes") + + assert json_response_and_validate_schema(response, 404) == %{"error" => "Record not found"} + end + end +end diff --git a/test/pleroma/web/pleroma_api/views/backup_view_test.exs b/test/pleroma/web/pleroma_api/views/backup_view_test.exs @@ -4,10 +4,21 @@ defmodule Pleroma.Web.PleromaAPI.BackupViewTest do use Pleroma.DataCase, async: true + + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User.Backup alias Pleroma.Web.PleromaAPI.BackupView + + import Mox import Pleroma.Factory + setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + :ok + end + test "it renders the ID" do user = insert(:user) backup = Backup.new(user) @@ -15,4 +26,43 @@ defmodule Pleroma.Web.PleromaAPI.BackupViewTest do result = BackupView.render("show.json", backup: backup) assert result.id == backup.id end + + test "it renders the state and processed_number" do + user = insert(:user) + backup = Backup.new(user) + + result = BackupView.render("show.json", backup: backup) + assert result.state == to_string(backup.state) + assert result.processed_number == backup.processed_number + end + + test "it renders failed state with legacy records" do + backup = %Backup{ + id: 0, + content_type: "application/zip", + file_name: "dummy", + file_size: 1, + state: :invalid, + processed: true, + processed_number: 1, + inserted_at: NaiveDateTime.utc_now() + } + + result = BackupView.render("show.json", backup: backup) + assert result.state == "complete" + + backup = %Backup{ + id: 0, + content_type: "application/zip", + file_name: "dummy", + file_size: 1, + state: :invalid, + processed: false, + processed_number: 1, + inserted_at: NaiveDateTime.utc_now() + } + + result = BackupView.render("show.json", backup: backup) + assert result.state == "failed" + end end diff --git a/test/pleroma/web/pleroma_api/views/chat_message_reference_view_test.exs b/test/pleroma/web/pleroma_api/views/chat_message_reference_view_test.exs @@ -3,28 +3,36 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.PleromaAPI.ChatMessageReferenceViewTest do - use Pleroma.DataCase + alias Pleroma.NullCache + use Pleroma.DataCase, async: true alias Pleroma.Chat alias Pleroma.Chat.MessageReference alias Pleroma.Object + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.CommonAPI alias Pleroma.Web.PleromaAPI.Chat.MessageReferenceView + import Mox import Pleroma.Factory + setup do: clear_config([:rich_media, :enabled], true) + test "it displays a chat message" do user = insert(:user) recipient = insert(:user) + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + file = %Plug.Upload{ content_type: "image/jpeg", path: Path.absname("test/fixtures/image.jpg"), filename: "an_image.jpg" } - {:ok, upload} = ActivityPub.upload(file, actor: user.ap_id) + {:ok, upload} = ActivityPub.upload(file, actor: recipient.ap_id) {:ok, activity} = CommonAPI.post_chat_message(user, recipient, "kippis :firefox:", idempotency_key: "123") @@ -35,6 +43,15 @@ defmodule Pleroma.Web.PleromaAPI.ChatMessageReferenceViewTest do cm_ref = MessageReference.for_chat_and_object(chat, object) + id = cm_ref.id + + Pleroma.CachexMock + |> stub(:get, fn + :chat_message_id_idempotency_key_cache, ^id -> {:ok, "123"} + cache, key -> NullCache.get(cache, key) + end) + |> stub(:fetch, fn :rich_media_cache, _, _ -> {:ok, {:ok, %{}}} end) + chat_message = MessageReferenceView.render("show.json", chat_message_reference: cm_ref) assert chat_message[:id] == cm_ref.id @@ -46,12 +63,7 @@ defmodule Pleroma.Web.PleromaAPI.ChatMessageReferenceViewTest do assert match?([%{shortcode: "firefox"}], chat_message[:emojis]) assert chat_message[:idempotency_key] == "123" - clear_config([:rich_media, :enabled], true) - - Tesla.Mock.mock_global(fn - %{url: "https://example.com/ogp"} -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/ogp.html")} - end) + Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) {:ok, activity} = CommonAPI.post_chat_message(recipient, user, "gkgkgk https://example.com/ogp", diff --git a/test/pleroma/web/plugs/authentication_plug_test.exs b/test/pleroma/web/plugs/authentication_plug_test.exs @@ -70,28 +70,6 @@ defmodule Pleroma.Web.Plugs.AuthenticationPlugTest do assert "$pbkdf2" <> _ = user.password_hash end - @tag :skip_on_mac - test "with a crypt hash, it updates to a pkbdf2 hash", %{conn: conn} do - user = - insert(:user, - password_hash: - "$6$9psBWV8gxkGOZWBz$PmfCycChoxeJ3GgGzwvhlgacb9mUoZ.KUXNCssekER4SJ7bOK53uXrHNb2e4i8yPFgSKyzaW9CcmrDXWIEMtD1" - ) - - conn = - conn - |> assign(:auth_user, user) - |> assign(:auth_credentials, %{password: "password"}) - |> AuthenticationPlug.call(%{}) - - assert conn.assigns.user.id == conn.assigns.auth_user.id - assert conn.assigns.token == nil - assert PlugHelper.plug_skipped?(conn, OAuthScopesPlug) - - user = User.get_by_id(user.id) - assert "$pbkdf2" <> _ = user.password_hash - end - describe "checkpw/2" do test "check pbkdf2 hash" do hash = @@ -101,14 +79,6 @@ defmodule Pleroma.Web.Plugs.AuthenticationPlugTest do refute AuthenticationPlug.checkpw("test-password1", hash) end - @tag :skip_on_mac - test "check sha512-crypt hash" do - hash = - "$6$9psBWV8gxkGOZWBz$PmfCycChoxeJ3GgGzwvhlgacb9mUoZ.KUXNCssekER4SJ7bOK53uXrHNb2e4i8yPFgSKyzaW9CcmrDXWIEMtD1" - - assert AuthenticationPlug.checkpw("password", hash) - end - test "check bcrypt hash" do hash = "$2a$10$uyhC/R/zoE1ndwwCtMusK.TLVzkQ/Ugsbqp3uXI.CTTz0gBw.24jS" diff --git a/test/pleroma/web/plugs/ensure_privileged_plug_test.exs b/test/pleroma/web/plugs/ensure_privileged_plug_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Plugs.EnsurePrivilegedPlugTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase alias Pleroma.Web.Plugs.EnsurePrivilegedPlug import Pleroma.Factory diff --git a/test/pleroma/web/plugs/frontend_static_plug_test.exs b/test/pleroma/web/plugs/frontend_static_plug_test.exs @@ -4,7 +4,11 @@ defmodule Pleroma.Web.Plugs.FrontendStaticPlugTest do use Pleroma.Web.ConnCase + import Mock + import Mox + + alias Pleroma.UnstubbedConfigMock, as: ConfigMock @dir "test/tmp/instance_static" @@ -66,6 +70,9 @@ defmodule Pleroma.Web.Plugs.FrontendStaticPlugTest do File.mkdir_p!("#{path}/proxy/rr/ss") File.write!("#{path}/proxy/rr/ss/Ek7w8WPVcAApOvN.jpg:large", "FB image") + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + url = Pleroma.Web.MediaProxy.encode_url("https://pbs.twimg.com/media/Ek7w8WPVcAApOvN.jpg:large") @@ -82,6 +89,7 @@ defmodule Pleroma.Web.Plugs.FrontendStaticPlugTest do "api", "main", "ostatus_subscribe", + "authorize_interaction", "oauth", "objects", "activities", diff --git a/test/pleroma/web/plugs/uploaded_media_plug_test.exs b/test/pleroma/web/plugs/uploaded_media_plug_test.exs @@ -4,10 +4,18 @@ defmodule Pleroma.Web.Plugs.UploadedMediaPlugTest do use Pleroma.Web.ConnCase, async: true + + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.Upload + import Mox + defp upload_file(context) do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + Pleroma.DataCase.ensure_local_uploader(context) + File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") file = %Plug.Upload{ @@ -23,6 +31,13 @@ defmodule Pleroma.Web.Plugs.UploadedMediaPlugTest do setup_all :upload_file + setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + :ok + end + test "does not send Content-Disposition header when name param is not set", %{ attachment_url: attachment_url } do @@ -33,11 +48,11 @@ defmodule Pleroma.Web.Plugs.UploadedMediaPlugTest do test "sends Content-Disposition header when name param is set", %{ attachment_url: attachment_url } do - conn = get(build_conn(), attachment_url <> "?name=\"cofe\".gif") + conn = get(build_conn(), attachment_url <> ~s[?name="cofe".gif]) assert Enum.any?( conn.resp_headers, - &(&1 == {"content-disposition", "filename=\"\\\"cofe\\\".gif\""}) + &(&1 == {"content-disposition", ~s[inline; filename="\\"cofe\\".gif"]}) ) end end diff --git a/test/pleroma/web/push/impl_test.exs b/test/pleroma/web/push/impl_test.exs @@ -5,10 +5,12 @@ defmodule Pleroma.Web.Push.ImplTest do use Pleroma.DataCase, async: true + import Mox import Pleroma.Factory alias Pleroma.Notification alias Pleroma.Object + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.CommonAPI @@ -257,6 +259,9 @@ defmodule Pleroma.Web.Push.ImplTest do filename: "an_image.jpg" } + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + {:ok, upload} = ActivityPub.upload(file, actor: user.ap_id) {:ok, chat} = CommonAPI.post_chat_message(user, recipient, nil, media_id: upload.id) diff --git a/test/pleroma/web/rich_media/card_test.exs b/test/pleroma/web/rich_media/card_test.exs @@ -0,0 +1,71 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.RichMedia.CardTest do + use Pleroma.DataCase, async: true + + alias Pleroma.UnstubbedConfigMock, as: ConfigMock + alias Pleroma.Web.CommonAPI + alias Pleroma.Web.RichMedia.Card + + import Mox + import Pleroma.Factory + import Tesla.Mock + + setup do + mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) + + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + :ok + end + + setup do: clear_config([:rich_media, :enabled], true) + + test "crawls URL in activity" do + user = insert(:user) + + url = "https://example.com/ogp" + url_hash = Card.url_to_hash(url) + + {:ok, activity} = + CommonAPI.post(user, %{ + status: "[test](#{url})", + content_type: "text/markdown" + }) + + assert %Card{url_hash: ^url_hash, fields: _} = Card.get_by_activity(activity) + end + + test "recrawls URLs on status edits/updates" do + original_url = "https://google.com/" + original_url_hash = Card.url_to_hash(original_url) + updated_url = "https://yahoo.com/" + updated_url_hash = Card.url_to_hash(updated_url) + + user = insert(:user) + {:ok, activity} = CommonAPI.post(user, %{status: "I like this site #{original_url}"}) + + # Force a backfill + Card.get_by_activity(activity) + + assert match?( + %Card{url_hash: ^original_url_hash, fields: _}, + Card.get_by_activity(activity) + ) + + {:ok, _} = CommonAPI.update(user, activity, %{status: "I like this site #{updated_url}"}) + + activity = Pleroma.Activity.get_by_id(activity.id) + + # Force a backfill + Card.get_by_activity(activity) + + assert match?( + %Card{url_hash: ^updated_url_hash, fields: _}, + Card.get_by_activity(activity) + ) + end +end diff --git a/test/pleroma/web/rich_media/helpers_test.exs b/test/pleroma/web/rich_media/helpers_test.exs @@ -1,84 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/> -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.RichMedia.HelpersTest do - use Pleroma.DataCase - - alias Pleroma.Web.CommonAPI - alias Pleroma.Web.RichMedia.Helpers - - import Pleroma.Factory - import Tesla.Mock - - setup do - mock(fn env -> apply(HttpRequestMock, :request, [env]) end) - - :ok - end - - setup do: clear_config([:rich_media, :enabled]) - - test "refuses to crawl incomplete URLs" do - user = insert(:user) - - {:ok, activity} = - CommonAPI.post(user, %{ - status: "[test](example.com/ogp)", - content_type: "text/markdown" - }) - - clear_config([:rich_media, :enabled], true) - - assert %{} == Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) - end - - test "refuses to crawl malformed URLs" do - user = insert(:user) - - {:ok, activity} = - CommonAPI.post(user, %{ - status: "[test](example.com[]/ogp)", - content_type: "text/markdown" - }) - - clear_config([:rich_media, :enabled], true) - - assert %{} == Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) - end - - test "crawls valid, complete URLs" do - user = insert(:user) - - {:ok, activity} = - CommonAPI.post(user, %{ - status: "[test](https://example.com/ogp)", - content_type: "text/markdown" - }) - - clear_config([:rich_media, :enabled], true) - - assert %{page_url: "https://example.com/ogp", rich_media: _} = - Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) - end - - test "refuses to crawl URLs of private network from posts" do - user = insert(:user) - - {:ok, activity} = - CommonAPI.post(user, %{status: "http://127.0.0.1:4000/notice/9kCP7VNyPJXFOXDrgO"}) - - {:ok, activity2} = CommonAPI.post(user, %{status: "https://10.111.10.1/notice/9kCP7V"}) - {:ok, activity3} = CommonAPI.post(user, %{status: "https://172.16.32.40/notice/9kCP7V"}) - {:ok, activity4} = CommonAPI.post(user, %{status: "https://192.168.10.40/notice/9kCP7V"}) - {:ok, activity5} = CommonAPI.post(user, %{status: "https://pleroma.local/notice/9kCP7V"}) - - clear_config([:rich_media, :enabled], true) - - assert %{} = Helpers.fetch_data_for_activity(activity) - assert %{} = Helpers.fetch_data_for_activity(activity2) - assert %{} = Helpers.fetch_data_for_activity(activity3) - assert %{} = Helpers.fetch_data_for_activity(activity4) - assert %{} = Helpers.fetch_data_for_activity(activity5) - end -end diff --git a/test/pleroma/web/rich_media/parser/ttl/aws_signed_url_test.exs b/test/pleroma/web/rich_media/parser/ttl/aws_signed_url_test.exs @@ -3,8 +3,23 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrlTest do - # Relies on Cachex, needs to be synchronous - use Pleroma.DataCase + use Pleroma.DataCase, async: false + use Oban.Testing, repo: Pleroma.Repo + + import Mox + + alias Pleroma.UnstubbedConfigMock, as: ConfigMock + alias Pleroma.Web.RichMedia.Card + alias Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl + + setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + clear_config([:rich_media, :enabled], true) + + :ok + end test "s3 signed url is parsed correct for expiration time" do url = "https://pleroma.social/amz" @@ -22,7 +37,7 @@ defmodule Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrlTest do expire_time = Timex.parse!(timestamp, "{ISO:Basic:Z}") |> Timex.to_unix() |> Kernel.+(valid_till) - assert {:ok, expire_time} == Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl.ttl(metadata, url) + assert expire_time == Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl.ttl(metadata, url) end test "s3 signed url is parsed and correct ttl is set for rich media" do @@ -43,26 +58,35 @@ defmodule Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrlTest do <meta name="twitter:site" content="Pleroma" /> <meta name="twitter:title" content="Pleroma" /> <meta name="twitter:description" content="Pleroma" /> - <meta name="twitter:image" content="#{Map.get(metadata, :image)}" /> + <meta name="twitter:image" content="#{Map.get(metadata, "image")}" /> """ Tesla.Mock.mock(fn %{ method: :get, - url: "https://pleroma.social/amz" + url: ^url } -> %Tesla.Env{status: 200, body: body} + + %{method: :head} -> + %Tesla.Env{status: 200} end) - Cachex.put(:rich_media_cache, url, metadata) + Card.get_or_backfill_by_url(url) + + assert_enqueued(worker: Pleroma.Workers.RichMediaExpirationWorker, args: %{"url" => url}) + + [%Oban.Job{scheduled_at: scheduled_at}] = all_enqueued() - Pleroma.Web.RichMedia.Parser.set_ttl_based_on_image(metadata, url) + timestamp_dt = Timex.parse!(timestamp, "{ISO:Basic:Z}") + + assert DateTime.diff(scheduled_at, timestamp_dt) == valid_till + end - {:ok, cache_ttl} = Cachex.ttl(:rich_media_cache, url) + test "AWS URL for an image without expiration works" do + og_data = %{"image" => "https://amazonaws.com/image.png"} - # as there is delay in setting and pulling the data from cache we ignore 1 second - # make it 2 seconds for flakyness - assert_in_delta(valid_till * 1000, cache_ttl, 2000) + assert is_nil(AwsSignedUrl.ttl(og_data, "")) end defp construct_s3_url(timestamp, valid_till) do @@ -71,11 +95,11 @@ defmodule Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrlTest do defp construct_metadata(timestamp, valid_till, url) do %{ - image: construct_s3_url(timestamp, valid_till), - site: "Pleroma", - title: "Pleroma", - description: "Pleroma", - url: url + "image" => construct_s3_url(timestamp, valid_till), + "site" => "Pleroma", + "title" => "Pleroma", + "description" => "Pleroma", + "url" => url } end end diff --git a/test/pleroma/web/rich_media/parser/ttl/opengraph_test.exs b/test/pleroma/web/rich_media/parser/ttl/opengraph_test.exs @@ -0,0 +1,41 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2024 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.RichMedia.Parser.TTL.OpengraphTest do + use Pleroma.DataCase + use Oban.Testing, repo: Pleroma.Repo + + import Mox + + alias Pleroma.UnstubbedConfigMock, as: ConfigMock + alias Pleroma.Web.RichMedia.Card + + setup do + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + + clear_config([:rich_media, :enabled], true) + + :ok + end + + test "OpenGraph TTL value is honored" do + url = "https://reddit.com/r/somepost" + + Tesla.Mock.mock(fn + %{ + method: :get, + url: ^url + } -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/reddit.html")} + + %{method: :head} -> + %Tesla.Env{status: 200} + end) + + Card.get_or_backfill_by_url(url) + + assert_enqueued(worker: Pleroma.Workers.RichMediaExpirationWorker, args: %{"url" => url}) + end +end diff --git a/test/pleroma/web/rich_media/parser_test.exs b/test/pleroma/web/rich_media/parser_test.exs @@ -3,95 +3,26 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.RichMedia.ParserTest do - use ExUnit.Case, async: true + use Pleroma.DataCase alias Pleroma.Web.RichMedia.Parser - setup do - Tesla.Mock.mock(fn - %{ - method: :get, - url: "http://example.com/ogp" - } -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/ogp.html")} - - %{ - method: :get, - url: "http://example.com/non-ogp" - } -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/non_ogp_embed.html")} - - %{ - method: :get, - url: "http://example.com/ogp-missing-title" - } -> - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/rich_media/ogp-missing-title.html") - } - - %{ - method: :get, - url: "http://example.com/twitter-card" - } -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/twitter_card.html")} - - %{ - method: :get, - url: "http://example.com/oembed" - } -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/oembed.html")} - - %{ - method: :get, - url: "http://example.com/oembed.json" - } -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/oembed.json")} - - %{method: :get, url: "http://example.com/empty"} -> - %Tesla.Env{status: 200, body: "hello"} - - %{method: :get, url: "http://example.com/malformed"} -> - %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/malformed-data.html")} - - %{method: :get, url: "http://example.com/error"} -> - {:error, :overload} - - %{ - method: :head, - url: "http://example.com/huge-page" - } -> - %Tesla.Env{ - status: 200, - headers: [{"content-length", "2000001"}, {"content-type", "text/html"}] - } - - %{ - method: :head, - url: "http://example.com/pdf-file" - } -> - %Tesla.Env{ - status: 200, - headers: [{"content-length", "1000000"}, {"content-type", "application/pdf"}] - } - - %{method: :head} -> - %Tesla.Env{status: 404, body: "", headers: []} - end) + import Tesla.Mock - :ok + setup do + mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) end test "returns error when no metadata present" do - assert {:error, _} = Parser.parse("http://example.com/empty") + assert {:error, _} = Parser.parse("https://example.com/empty") end test "doesn't just add a title" do - assert {:error, {:invalid_metadata, _}} = Parser.parse("http://example.com/non-ogp") + assert {:error, {:invalid_metadata, _}} = Parser.parse("https://example.com/non-ogp") end test "parses ogp" do - assert Parser.parse("http://example.com/ogp") == + assert Parser.parse("https://example.com/ogp") == {:ok, %{ "image" => "http://ia.media-imdb.com/images/rock.jpg", @@ -99,12 +30,12 @@ defmodule Pleroma.Web.RichMedia.ParserTest do "description" => "Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer.", "type" => "video.movie", - "url" => "http://example.com/ogp" + "url" => "https://example.com/ogp" }} end test "falls back to <title> when ogp:title is missing" do - assert Parser.parse("http://example.com/ogp-missing-title") == + assert Parser.parse("https://example.com/ogp-missing-title") == {:ok, %{ "image" => "http://ia.media-imdb.com/images/rock.jpg", @@ -112,12 +43,12 @@ defmodule Pleroma.Web.RichMedia.ParserTest do "description" => "Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer.", "type" => "video.movie", - "url" => "http://example.com/ogp-missing-title" + "url" => "https://example.com/ogp-missing-title" }} end test "parses twitter card" do - assert Parser.parse("http://example.com/twitter-card") == + assert Parser.parse("https://example.com/twitter-card") == {:ok, %{ "card" => "summary", @@ -125,12 +56,12 @@ defmodule Pleroma.Web.RichMedia.ParserTest do "image" => "https://farm6.staticflickr.com/5510/14338202952_93595258ff_z.jpg", "title" => "Small Island Developing States Photo Submission", "description" => "View the album on Flickr.", - "url" => "http://example.com/twitter-card" + "url" => "https://example.com/twitter-card" }} end - test "parses OEmbed" do - assert Parser.parse("http://example.com/oembed") == + test "parses OEmbed and filters HTML tags" do + assert Parser.parse("https://example.com/oembed") == {:ok, %{ "author_name" => "\u202E\u202D\u202Cbees\u202C", @@ -139,7 +70,7 @@ defmodule Pleroma.Web.RichMedia.ParserTest do "flickr_type" => "photo", "height" => "768", "html" => - "<a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/bees/2362225867/\" title=\"Bacon Lollys by \u202E\u202D\u202Cbees\u202C, on Flickr\"><img src=\"https://farm4.staticflickr.com/3040/2362225867_4a87ab8baf_b.jpg\" width=\"1024\" height=\"768\" alt=\"Bacon Lollys\"></a><script async src=\"https://embedr.flickr.com/assets/client-code.js\" charset=\"utf-8\"></script>", + "<a href=\"https://www.flickr.com/photos/bees/2362225867/\" title=\"Bacon Lollys by \u202E\u202D\u202Cbees\u202C, on Flickr\"><img src=\"https://farm4.staticflickr.com/3040/2362225867_4a87ab8baf_b.jpg\" width=\"1024\" height=\"768\" alt=\"Bacon Lollys\"/></a>", "license" => "All Rights Reserved", "license_id" => 0, "provider_name" => "Flickr", @@ -150,7 +81,7 @@ defmodule Pleroma.Web.RichMedia.ParserTest do "thumbnail_width" => 150, "title" => "Bacon Lollys", "type" => "photo", - "url" => "http://example.com/oembed", + "url" => "https://example.com/oembed", "version" => "1.0", "web_page" => "https://www.flickr.com/photos/bees/2362225867/", "web_page_short_url" => "https://flic.kr/p/4AK2sc", @@ -159,18 +90,41 @@ defmodule Pleroma.Web.RichMedia.ParserTest do end test "rejects invalid OGP data" do - assert {:error, _} = Parser.parse("http://example.com/malformed") + assert {:error, _} = Parser.parse("https://example.com/malformed") end test "returns error if getting page was not successful" do - assert {:error, :overload} = Parser.parse("http://example.com/error") + assert {:error, :overload} = Parser.parse("https://example.com/error") end test "does a HEAD request to check if the body is too large" do - assert {:error, :body_too_large} = Parser.parse("http://example.com/huge-page") + assert {:error, :body_too_large} = Parser.parse("https://example.com/huge-page") end test "does a HEAD request to check if the body is html" do - assert {:error, {:content_type, _}} = Parser.parse("http://example.com/pdf-file") + assert {:error, {:content_type, _}} = Parser.parse("https://example.com/pdf-file") + end + + test "refuses to crawl incomplete URLs" do + url = "example.com/ogp" + assert :error == Parser.parse(url) + end + + test "refuses to crawl malformed URLs" do + url = "example.com[]/ogp" + assert :error == Parser.parse(url) + end + + test "refuses to crawl URLs of private network from posts" do + [ + "http://127.0.0.1:4000/notice/9kCP7VNyPJXFOXDrgO", + "https://10.111.10.1/notice/9kCP7V", + "https://172.16.32.40/notice/9kCP7V", + "https://192.168.10.40/notice/9kCP7V", + "https://pleroma.local/notice/9kCP7V" + ] + |> Enum.each(fn url -> + assert :error == Parser.parse(url) + end) end end diff --git a/test/pleroma/web/streamer_test.exs b/test/pleroma/web/streamer_test.exs @@ -22,6 +22,10 @@ defmodule Pleroma.Web.StreamerTest do setup do: clear_config([:instance, :skip_thread_containment]) describe "get_topic/_ (unauthenticated)" do + test "allows no stream" do + assert {:ok, nil} = Streamer.get_topic(nil, nil, nil) + end + test "allows public" do assert {:ok, "public"} = Streamer.get_topic("public", nil, nil) assert {:ok, "public:local"} = Streamer.get_topic("public:local", nil, nil) @@ -29,6 +33,26 @@ defmodule Pleroma.Web.StreamerTest do assert {:ok, "public:local:media"} = Streamer.get_topic("public:local:media", nil, nil) end + test "rejects local public streams if restricted_unauthenticated is on" do + clear_config([:restrict_unauthenticated, :timelines, :local], true) + + assert {:error, :unauthorized} = Streamer.get_topic("public:local", nil, nil) + assert {:error, :unauthorized} = Streamer.get_topic("public:local:media", nil, nil) + end + + test "rejects remote public streams if restricted_unauthenticated is on" do + clear_config([:restrict_unauthenticated, :timelines, :federated], true) + + assert {:error, :unauthorized} = Streamer.get_topic("public", nil, nil) + assert {:error, :unauthorized} = Streamer.get_topic("public:media", nil, nil) + + assert {:error, :unauthorized} = + Streamer.get_topic("public:remote", nil, nil, %{"instance" => "lain.com"}) + + assert {:error, :unauthorized} = + Streamer.get_topic("public:remote:media", nil, nil, %{"instance" => "lain.com"}) + end + test "allows instance streams" do assert {:ok, "public:remote:lain.com"} = Streamer.get_topic("public:remote", nil, nil, %{"instance" => "lain.com"}) @@ -69,6 +93,63 @@ defmodule Pleroma.Web.StreamerTest do end end + test "allows local public streams if restricted_unauthenticated is on", %{ + user: user, + token: oauth_token + } do + clear_config([:restrict_unauthenticated, :timelines, :local], true) + + %{token: read_notifications_token} = oauth_access(["read:notifications"], user: user) + %{token: badly_scoped_token} = oauth_access(["irrelevant:scope"], user: user) + + assert {:ok, "public:local"} = Streamer.get_topic("public:local", user, oauth_token) + + assert {:ok, "public:local:media"} = + Streamer.get_topic("public:local:media", user, oauth_token) + + for token <- [read_notifications_token, badly_scoped_token] do + assert {:error, :unauthorized} = Streamer.get_topic("public:local", user, token) + + assert {:error, :unauthorized} = Streamer.get_topic("public:local:media", user, token) + end + end + + test "allows remote public streams if restricted_unauthenticated is on", %{ + user: user, + token: oauth_token + } do + clear_config([:restrict_unauthenticated, :timelines, :federated], true) + + %{token: read_notifications_token} = oauth_access(["read:notifications"], user: user) + %{token: badly_scoped_token} = oauth_access(["irrelevant:scope"], user: user) + + assert {:ok, "public"} = Streamer.get_topic("public", user, oauth_token) + assert {:ok, "public:media"} = Streamer.get_topic("public:media", user, oauth_token) + + assert {:ok, "public:remote:lain.com"} = + Streamer.get_topic("public:remote", user, oauth_token, %{"instance" => "lain.com"}) + + assert {:ok, "public:remote:media:lain.com"} = + Streamer.get_topic("public:remote:media", user, oauth_token, %{ + "instance" => "lain.com" + }) + + for token <- [read_notifications_token, badly_scoped_token] do + assert {:error, :unauthorized} = Streamer.get_topic("public", user, token) + assert {:error, :unauthorized} = Streamer.get_topic("public:media", user, token) + + assert {:error, :unauthorized} = + Streamer.get_topic("public:remote", user, token, %{ + "instance" => "lain.com" + }) + + assert {:error, :unauthorized} = + Streamer.get_topic("public:remote:media", user, token, %{ + "instance" => "lain.com" + }) + end + end + test "allows user streams (with proper OAuth token scopes)", %{ user: user, token: read_oauth_token @@ -165,7 +246,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("user", user, oauth_token) {:ok, activity} = CommonAPI.post(user, %{status: "hey"}) - assert_receive {:render_with_user, _, _, ^activity} + assert_receive {:render_with_user, _, _, ^activity, _} refute Streamer.filtered_by_user?(user, activity) end @@ -176,7 +257,7 @@ defmodule Pleroma.Web.StreamerTest do {:ok, activity} = CommonAPI.post(other_user, %{status: "hey"}) {:ok, announce} = CommonAPI.repeat(activity.id, user) - assert_receive {:render_with_user, Pleroma.Web.StreamerView, "update.json", ^announce} + assert_receive {:render_with_user, Pleroma.Web.StreamerView, "update.json", ^announce, _} refute Streamer.filtered_by_user?(user, announce) end @@ -229,7 +310,7 @@ defmodule Pleroma.Web.StreamerTest do {:ok, %Pleroma.Activity{data: _data, local: false} = announce} = Pleroma.Web.ActivityPub.Transmogrifier.handle_incoming(data) - assert_receive {:render_with_user, Pleroma.Web.StreamerView, "update.json", ^announce} + assert_receive {:render_with_user, Pleroma.Web.StreamerView, "update.json", ^announce, _} refute Streamer.filtered_by_user?(user, announce) end @@ -241,7 +322,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("user", user, oauth_token) Streamer.stream("user", notify) - assert_receive {:render_with_user, _, _, ^notify} + assert_receive {:render_with_user, _, _, ^notify, _} refute Streamer.filtered_by_user?(user, notify) end @@ -253,7 +334,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) Streamer.stream("user:notification", notify) - assert_receive {:render_with_user, _, _, ^notify} + assert_receive {:render_with_user, _, _, ^notify, _} refute Streamer.filtered_by_user?(user, notify) end @@ -274,7 +355,12 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("user:pleroma_chat", user, oauth_token) Streamer.stream("user:pleroma_chat", {user, cm_ref}) - text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}) + text = + StreamerView.render( + "chat_update.json", + %{chat_message_reference: cm_ref}, + "user:pleroma_chat:#{user.id}" + ) assert text =~ "hey cirno" assert_receive {:text, ^text} @@ -292,7 +378,12 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("user", user, oauth_token) Streamer.stream("user", {user, cm_ref}) - text = StreamerView.render("chat_update.json", %{chat_message_reference: cm_ref}) + text = + StreamerView.render( + "chat_update.json", + %{chat_message_reference: cm_ref}, + "user:#{user.id}" + ) assert text =~ "hey cirno" assert_receive {:text, ^text} @@ -313,7 +404,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) Streamer.stream("user:notification", notify) - assert_receive {:render_with_user, _, _, ^notify} + assert_receive {:render_with_user, _, _, ^notify, _} refute Streamer.filtered_by_user?(user, notify) end @@ -359,7 +450,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) {:ok, favorite_activity} = CommonAPI.favorite(user2, activity.id) - assert_receive {:render_with_user, _, "notification.json", notif} + assert_receive {:render_with_user, _, "notification.json", notif, _} assert notif.activity.id == favorite_activity.id refute Streamer.filtered_by_user?(user, notif) end @@ -388,7 +479,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("user:notification", user, oauth_token) {:ok, _follower, _followed, follow_activity} = CommonAPI.follow(user2, user) - assert_receive {:render_with_user, _, "notification.json", notif} + assert_receive {:render_with_user, _, "notification.json", notif, _} assert notif.activity.id == follow_activity.id refute Streamer.filtered_by_user?(user, notif) end @@ -453,7 +544,7 @@ defmodule Pleroma.Web.StreamerTest do {:ok, edited} = CommonAPI.update(sender, activity, %{status: "mew mew"}) create = Pleroma.Activity.get_create_by_object_ap_id_with_object(activity.object.data["id"]) - assert_receive {:render_with_user, _, "status_update.json", ^create} + assert_receive {:render_with_user, _, "status_update.json", ^create, _} refute Streamer.filtered_by_user?(user, edited) end @@ -464,7 +555,7 @@ defmodule Pleroma.Web.StreamerTest do {:ok, edited} = CommonAPI.update(user, activity, %{status: "mew mew"}) create = Pleroma.Activity.get_create_by_object_ap_id_with_object(activity.object.data["id"]) - assert_receive {:render_with_user, _, "status_update.json", ^create} + assert_receive {:render_with_user, _, "status_update.json", ^create, _} refute Streamer.filtered_by_user?(user, edited) end end @@ -477,7 +568,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("public", user, oauth_token) {:ok, activity} = CommonAPI.post(other_user, %{status: "Test"}) - assert_receive {:render_with_user, _, _, ^activity} + assert_receive {:render_with_user, _, _, ^activity, _} refute Streamer.filtered_by_user?(other_user, activity) end @@ -577,7 +668,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("public", user, oauth_token) Streamer.stream("public", activity) - assert_receive {:render_with_user, _, _, ^activity} + assert_receive {:render_with_user, _, _, ^activity, _} assert Streamer.filtered_by_user?(user, activity) end @@ -599,7 +690,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("public", user, oauth_token) Streamer.stream("public", activity) - assert_receive {:render_with_user, _, _, ^activity} + assert_receive {:render_with_user, _, _, ^activity, _} refute Streamer.filtered_by_user?(user, activity) end @@ -622,7 +713,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("public", user, oauth_token) Streamer.stream("public", activity) - assert_receive {:render_with_user, _, _, ^activity} + assert_receive {:render_with_user, _, _, ^activity, _} refute Streamer.filtered_by_user?(user, activity) end end @@ -636,7 +727,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("public", user, oauth_token) {:ok, activity} = CommonAPI.post(blocked_user, %{status: "Test"}) - assert_receive {:render_with_user, _, _, ^activity} + assert_receive {:render_with_user, _, _, ^activity, _} assert Streamer.filtered_by_user?(user, activity) end @@ -653,17 +744,17 @@ defmodule Pleroma.Web.StreamerTest do {:ok, activity_one} = CommonAPI.post(friend, %{status: "hey! @#{blockee.nickname}"}) - assert_receive {:render_with_user, _, _, ^activity_one} + assert_receive {:render_with_user, _, _, ^activity_one, _} assert Streamer.filtered_by_user?(blocker, activity_one) {:ok, activity_two} = CommonAPI.post(blockee, %{status: "hey! @#{friend.nickname}"}) - assert_receive {:render_with_user, _, _, ^activity_two} + assert_receive {:render_with_user, _, _, ^activity_two, _} assert Streamer.filtered_by_user?(blocker, activity_two) {:ok, activity_three} = CommonAPI.post(blockee, %{status: "hey! @#{blocker.nickname}"}) - assert_receive {:render_with_user, _, _, ^activity_three} + assert_receive {:render_with_user, _, _, ^activity_three, _} assert Streamer.filtered_by_user?(blocker, activity_three) end end @@ -724,7 +815,7 @@ defmodule Pleroma.Web.StreamerTest do visibility: "private" }) - assert_receive {:render_with_user, _, _, ^activity} + assert_receive {:render_with_user, _, _, ^activity, _} refute Streamer.filtered_by_user?(user_a, activity) end end @@ -742,7 +833,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("user", user1, user1_token) {:ok, announce_activity} = CommonAPI.repeat(create_activity.id, user2) - assert_receive {:render_with_user, _, _, ^announce_activity} + assert_receive {:render_with_user, _, _, ^announce_activity, _} assert Streamer.filtered_by_user?(user1, announce_activity) end @@ -758,7 +849,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("user", user1, user1_token) {:ok, _announce_activity} = CommonAPI.repeat(create_activity.id, user2) - assert_receive {:render_with_user, _, "notification.json", notif} + assert_receive {:render_with_user, _, "notification.json", notif, _} assert Streamer.filtered_by_user?(user1, notif) end @@ -774,7 +865,7 @@ defmodule Pleroma.Web.StreamerTest do Streamer.get_topic_and_add_socket("user", user1, user1_token) {:ok, _favorite_activity} = CommonAPI.favorite(user2, create_activity.id) - assert_receive {:render_with_user, _, "notification.json", notif} + assert_receive {:render_with_user, _, "notification.json", notif, _} refute Streamer.filtered_by_user?(user1, notif) end end @@ -789,7 +880,7 @@ defmodule Pleroma.Web.StreamerTest do {:ok, activity} = CommonAPI.post(user, %{status: "super hot take"}) {:ok, _} = CommonAPI.add_mute(user2, activity) - assert_receive {:render_with_user, _, _, ^activity} + assert_receive {:render_with_user, _, _, ^activity, _} assert Streamer.filtered_by_user?(user2, activity) end end @@ -831,7 +922,7 @@ defmodule Pleroma.Web.StreamerTest do }) create_activity_id = create_activity.id - assert_receive {:render_with_user, _, _, ^create_activity} + assert_receive {:render_with_user, _, _, ^create_activity, _} assert_receive {:text, received_conversation1} assert %{"event" => "conversation", "payload" => _} = Jason.decode!(received_conversation1) @@ -866,8 +957,8 @@ defmodule Pleroma.Web.StreamerTest do visibility: "direct" }) - assert_receive {:render_with_user, _, _, ^create_activity} - assert_receive {:render_with_user, _, _, ^create_activity2} + assert_receive {:render_with_user, _, _, ^create_activity, _} + assert_receive {:render_with_user, _, _, ^create_activity2, _} assert_receive {:text, received_conversation1} assert %{"event" => "conversation", "payload" => _} = Jason.decode!(received_conversation1) assert_receive {:text, received_conversation1} @@ -896,7 +987,7 @@ defmodule Pleroma.Web.StreamerTest do receive do {StreamerTest, :ready} -> - assert_receive {:render_with_user, _, "update.json", _} + assert_receive {:render_with_user, _, "update.json", _, _} receive do {StreamerTest, :revoked} -> finalize.() diff --git a/test/pleroma/web/twitter_api/remote_follow_controller_test.exs b/test/pleroma/web/twitter_api/remote_follow_controller_test.exs @@ -3,16 +3,18 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.TwitterAPI.RemoteFollowControllerTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase alias Pleroma.MFA alias Pleroma.MFA.TOTP + alias Pleroma.UnstubbedConfigMock, as: ConfigMock alias Pleroma.User alias Pleroma.Web.CommonAPI + import Ecto.Query import ExUnit.CaptureLog + import Mox import Pleroma.Factory - import Ecto.Query setup_all do: clear_config([:instance, :federating], true) setup do: clear_config([:user, :deny_follow_blocked]) @@ -135,7 +137,7 @@ defmodule Pleroma.Web.TwitterAPI.RemoteFollowControllerTest do |> html_response(200) assert response =~ "Error fetching user" - end) =~ "Object has been deleted" + end) =~ ":not_found" end end @@ -429,6 +431,9 @@ defmodule Pleroma.Web.TwitterAPI.RemoteFollowControllerTest do test "with media proxy" do clear_config([:media_proxy, :enabled], true) + ConfigMock + |> stub_with(Pleroma.Test.StaticConfig) + user = insert(:user, %{ local: false, @@ -455,4 +460,38 @@ defmodule Pleroma.Web.TwitterAPI.RemoteFollowControllerTest do assert avatar_url == "#{Pleroma.Web.Endpoint.url()}/localuser/avatar.png" end end + + describe "GET /authorize_interaction - authorize_interaction/2" do + test "redirects to /ostatus_subscribe", %{conn: conn} do + Tesla.Mock.mock(fn + %{method: :get, url: "https://mastodon.social/users/emelie"} -> + %Tesla.Env{ + status: 200, + headers: [{"content-type", "application/activity+json"}], + body: File.read!("test/fixtures/tesla_mock/emelie.json") + } + + %{method: :get, url: "https://mastodon.social/users/emelie/collections/featured"} -> + %Tesla.Env{ + status: 200, + headers: [{"content-type", "application/activity+json"}], + body: + File.read!("test/fixtures/users_mock/masto_featured.json") + |> String.replace("{{domain}}", "mastodon.social") + |> String.replace("{{nickname}}", "emelie") + } + end) + + conn = + conn + |> get( + remote_follow_path(conn, :authorize_interaction, %{ + uri: "https://mastodon.social/users/emelie" + }) + ) + + assert redirected_to(conn) == + remote_follow_path(conn, :follow, %{acct: "https://mastodon.social/users/emelie"}) + end + end end diff --git a/test/pleroma/web/twitter_api/util_controller_test.exs b/test/pleroma/web/twitter_api/util_controller_test.exs @@ -106,7 +106,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilControllerTest do |> get("/api/pleroma/healthcheck") |> json_response_and_validate_schema(503) - assert response == %{} + assert response == %{"error" => "Healthcheck disabled"} end test "returns 200 when healthcheck enabled and all ok", %{conn: conn} do diff --git a/test/pleroma/web/web_finger/web_finger_controller_test.exs b/test/pleroma/web/web_finger/web_finger_controller_test.exs @@ -23,8 +23,15 @@ defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do assert response.status == 200 - assert response.resp_body == - ~s(<?xml version="1.0" encoding="UTF-8"?><XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0"><Link rel="lrdd" template="#{Pleroma.Web.Endpoint.url()}/.well-known/webfinger?resource={uri}" type="application/xrd+xml" /></XRD>) + response_xml = + response.resp_body + |> Floki.parse_document!(html_parser: Floki.HTMLParser.Mochiweb, attributes_as_maps: true) + + expected_xml = + ~s(<?xml version="1.0" encoding="UTF-8"?><XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0"><Link rel="lrdd" template="#{Pleroma.Web.Endpoint.url()}/.well-known/webfinger?resource={uri}" type="application/xrd+xml" /></XRD>) + |> Floki.parse_document!(html_parser: Floki.HTMLParser.Mochiweb, attributes_as_maps: true) + + assert match?(^response_xml, expected_xml) end test "Webfinger JRD" do @@ -48,12 +55,7 @@ defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do ] end - test "reach user on tld, while pleroma is runned on subdomain" do - Pleroma.Web.Endpoint.config_change( - [{Pleroma.Web.Endpoint, url: [host: "sub.example.com"]}], - [] - ) - + test "reach user on tld, while pleroma is running on subdomain" do clear_config([Pleroma.Web.Endpoint, :url, :host], "sub.example.com") clear_config([Pleroma.Web.WebFinger, :domain], "example.com") @@ -68,13 +70,6 @@ defmodule Pleroma.Web.WebFinger.WebFingerControllerTest do assert response["subject"] == "acct:#{user.nickname}@example.com" assert response["aliases"] == ["https://sub.example.com/users/#{user.nickname}"] - - on_exit(fn -> - Pleroma.Web.Endpoint.config_change( - [{Pleroma.Web.Endpoint, url: [host: "localhost"]}], - [] - ) - end) end test "it returns 404 when user isn't found (JSON)" do diff --git a/test/pleroma/web/web_finger_test.exs b/test/pleroma/web/web_finger_test.exs @@ -76,15 +76,6 @@ defmodule Pleroma.Web.WebFingerTest do {:ok, _data} = WebFinger.finger(user) end - test "returns the ActivityPub actor URI and subscribe address for an ActivityPub user with the ld+json mimetype" do - user = "kaniini@gerzilla.de" - - {:ok, data} = WebFinger.finger(user) - - assert data["ap_id"] == "https://gerzilla.de/channel/kaniini" - assert data["subscribe_address"] == "https://gerzilla.de/follow?f=&url={uri}" - end - test "it work for AP-only user" do user = "kpherox@mstdn.jp" @@ -99,12 +90,6 @@ defmodule Pleroma.Web.WebFingerTest do assert data["subscribe_address"] == "https://mstdn.jp/authorize_interaction?acct={uri}" end - test "it works for friendica" do - user = "lain@squeet.me" - - {:ok, _data} = WebFinger.finger(user) - end - test "it gets the xrd endpoint" do {:ok, template} = WebFinger.find_lrdd_template("social.heldscal.la") @@ -180,5 +165,67 @@ defmodule Pleroma.Web.WebFingerTest do {:ok, _data} = WebFinger.finger("pekorino@pawoo.net") end + + test "refuses to process XML remote entities" do + Tesla.Mock.mock(fn + %{ + url: "https://pawoo.net/.well-known/webfinger?resource=acct:pekorino@pawoo.net" + } -> + {:ok, + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/xml_external_entities.xml"), + headers: [{"content-type", "application/xrd+xml"}] + }} + + %{url: "https://pawoo.net/.well-known/host-meta"} -> + {:ok, + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/pawoo.net_host_meta") + }} + end) + + assert :error = WebFinger.finger("pekorino@pawoo.net") + end + + test "prevents spoofing" do + Tesla.Mock.mock(fn + %{ + url: "https://gleasonator.com/.well-known/webfinger?resource=acct:alex@gleasonator.com" + } -> + {:ok, + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/webfinger_spoof.json"), + headers: [{"content-type", "application/jrd+json"}] + }} + + %{url: "https://gleasonator.com/.well-known/host-meta"} -> + {:ok, + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/gleasonator.com_host_meta") + }} + end) + + {:error, _data} = WebFinger.finger("alex@gleasonator.com") + end + end + + @tag capture_log: true + test "prevents forgeries" do + Tesla.Mock.mock(fn + %{url: "https://fba.ryona.agency/.well-known/webfinger?resource=acct:graf@fba.ryona.agency"} -> + fake_webfinger = + File.read!("test/fixtures/webfinger/graf-imposter-webfinger.json") |> Jason.decode!() + + Tesla.Mock.json(fake_webfinger) + + %{url: "https://fba.ryona.agency/.well-known/host-meta"} -> + {:ok, %Tesla.Env{status: 404}} + end) + + assert {:error, _} = WebFinger.finger("graf@fba.ryona.agency") end end diff --git a/test/pleroma/web/xml_test.exs b/test/pleroma/web/xml_test.exs @@ -0,0 +1,15 @@ +defmodule Pleroma.Web.XMLTest do + use Pleroma.DataCase, async: true + + alias Pleroma.Web.XML + + test "refuses to parse any entities from XML" do + data = File.read!("test/fixtures/xml_billion_laughs.xml") + assert(:error == XML.parse_document(data)) + end + + test "refuses to load external entities from XML" do + data = File.read!("test/fixtures/xml_external_entities.xml") + assert(:error == XML.parse_document(data)) + end +end diff --git a/test/pleroma/workers/cron/digest_emails_worker_test.exs b/test/pleroma/workers/cron/digest_emails_worker_test.exs @@ -14,6 +14,11 @@ defmodule Pleroma.Workers.Cron.DigestEmailsWorkerTest do setup do: clear_config([:email_notifications, :digest]) setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + + setup do clear_config([:email_notifications, :digest], %{ active: true, inactivity_threshold: 7, diff --git a/test/pleroma/workers/cron/new_users_digest_worker_test.exs b/test/pleroma/workers/cron/new_users_digest_worker_test.exs @@ -10,6 +10,11 @@ defmodule Pleroma.Workers.Cron.NewUsersDigestWorkerTest do alias Pleroma.Web.CommonAPI alias Pleroma.Workers.Cron.NewUsersDigestWorker + setup do + Mox.stub_with(Pleroma.UnstubbedConfigMock, Pleroma.Config) + :ok + end + test "it sends new users digest emails" do yesterday = NaiveDateTime.utc_now() |> Timex.shift(days: -1) admin = insert(:user, %{is_admin: true}) diff --git a/test/pleroma/workers/purge_expired_token_test.exs b/test/pleroma/workers/purge_expired_token_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.PurgeExpiredTokenTest do - use Pleroma.DataCase, async: true + use Pleroma.DataCase use Oban.Testing, repo: Pleroma.Repo import Pleroma.Factory diff --git a/test/pleroma/workers/receiver_worker_test.exs b/test/pleroma/workers/receiver_worker_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Workers.ReceiverWorkerTest do - use Pleroma.DataCase, async: true + use Pleroma.DataCase use Oban.Testing, repo: Pleroma.Repo import Mock @@ -11,7 +11,7 @@ defmodule Pleroma.Workers.ReceiverWorkerTest do alias Pleroma.Workers.ReceiverWorker - test "it ignores MRF reject" do + test "it does not retry MRF reject" do params = insert(:note).data with_mock Pleroma.Web.ActivityPub.Transmogrifier, @@ -22,4 +22,31 @@ defmodule Pleroma.Workers.ReceiverWorkerTest do }) end end + + test "it does not retry ObjectValidator reject" do + params = + insert(:note_activity).data + |> Map.put("id", Pleroma.Web.ActivityPub.Utils.generate_activity_id()) + |> Map.put("object", %{ + "type" => "Note", + "id" => Pleroma.Web.ActivityPub.Utils.generate_object_id() + }) + + with_mock Pleroma.Web.ActivityPub.ObjectValidator, [:passthrough], + validate: fn _, _ -> {:error, %Ecto.Changeset{}} end do + assert {:cancel, {:error, %Ecto.Changeset{}}} = + ReceiverWorker.perform(%Oban.Job{ + args: %{"op" => "incoming_ap_doc", "params" => params} + }) + end + end + + test "it does not retry duplicates" do + params = insert(:note_activity).data + + assert {:cancel, :already_present} = + ReceiverWorker.perform(%Oban.Job{ + args: %{"op" => "incoming_ap_doc", "params" => params} + }) + end end diff --git a/test/pleroma/workers/remote_fetcher_worker_test.exs b/test/pleroma/workers/remote_fetcher_worker_test.exs @@ -0,0 +1,69 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.RemoteFetcherWorkerTest do + use Pleroma.DataCase + use Oban.Testing, repo: Pleroma.Repo + + alias Pleroma.Workers.RemoteFetcherWorker + + @deleted_object_one "https://deleted-404.example.com/" + @deleted_object_two "https://deleted-410.example.com/" + @unauthorized_object "https://unauthorized.example.com/" + @depth_object "https://depth.example.com/" + + describe "RemoteFetcherWorker" do + setup do + Tesla.Mock.mock(fn + %{method: :get, url: @deleted_object_one} -> + %Tesla.Env{ + status: 404 + } + + %{method: :get, url: @deleted_object_two} -> + %Tesla.Env{ + status: 410 + } + + %{method: :get, url: @unauthorized_object} -> + %Tesla.Env{ + status: 403 + } + + %{method: :get, url: @depth_object} -> + %Tesla.Env{ + status: 200 + } + end) + end + + test "does not requeue a deleted object" do + assert {:discard, _} = + RemoteFetcherWorker.perform(%Oban.Job{ + args: %{"op" => "fetch_remote", "id" => @deleted_object_one} + }) + + assert {:discard, _} = + RemoteFetcherWorker.perform(%Oban.Job{ + args: %{"op" => "fetch_remote", "id" => @deleted_object_two} + }) + end + + test "does not requeue an unauthorized object" do + assert {:discard, _} = + RemoteFetcherWorker.perform(%Oban.Job{ + args: %{"op" => "fetch_remote", "id" => @unauthorized_object} + }) + end + + test "does not requeue an object that exceeded depth" do + clear_config([:instance, :federation_incoming_replies_max_depth], 0) + + assert {:discard, _} = + RemoteFetcherWorker.perform(%Oban.Job{ + args: %{"op" => "fetch_remote", "id" => @depth_object, "depth" => 1} + }) + end + end +end diff --git a/test/support/cachex_proxy.ex b/test/support/cachex_proxy.ex @@ -27,9 +27,15 @@ defmodule Pleroma.CachexProxy do defdelegate fetch!(cache, key, func), to: Cachex @impl true + defdelegate fetch(cache, key, func), to: Cachex + + @impl true defdelegate expire_at(cache, str, num), to: Cachex @impl true + defdelegate expire(cache, str, num), to: Cachex + + @impl true defdelegate exists?(cache, key), to: Cachex @impl true diff --git a/test/support/cluster.ex b/test/support/cluster.ex @@ -127,7 +127,10 @@ defmodule Pleroma.Cluster do defp start_slave({node_host, override_configs}) do log(node_host, "booting federated VM") - {:ok, node} = :slave.start(~c"127.0.0.1", node_name(node_host), vm_args()) + + {:ok, node} = + do_start_slave(%{host: "127.0.0.1", name: node_name(node_host), args: vm_args()}) + add_code_paths(node) load_apps_and_transfer_configuration(node, override_configs) ensure_apps_started(node) @@ -219,4 +222,14 @@ defmodule Pleroma.Cluster do |> Enum.at(0) |> String.to_atom() end + + defp do_start_slave(%{host: host, name: name, args: args} = opts) do + peer_module = Application.get_env(__MODULE__, :peer_module) + + if peer_module == :peer do + peer_module.start(opts) + else + peer_module.start(host, name, args) + end + end end diff --git a/test/support/data_case.ex b/test/support/data_case.ex @@ -115,6 +115,7 @@ defmodule Pleroma.DataCase do Mox.stub_with(Pleroma.Web.ActivityPub.ActivityPubMock, Pleroma.Web.ActivityPub.ActivityPub) Mox.stub_with(Pleroma.Web.FederatorMock, Pleroma.Web.Federator) Mox.stub_with(Pleroma.ConfigMock, Pleroma.Config) + Mox.stub_with(Pleroma.StaticStubbedConfigMock, Pleroma.Test.StaticConfig) end def ensure_local_uploader(context) do diff --git a/test/support/factory.ex b/test/support/factory.ex @@ -50,7 +50,6 @@ defmodule Pleroma.Factory do last_refreshed_at: NaiveDateTime.utc_now(), notification_settings: %Pleroma.User.NotificationSetting{}, multi_factor_authentication_settings: %Pleroma.MFA.Settings{}, - ap_enabled: true, keys: pem } @@ -213,7 +212,7 @@ defmodule Pleroma.Factory do end def direct_note_factory do - user2 = insert(:user) + user2 = insert(:user, local: false, inbox: "http://example.com/inbox") %Pleroma.Object{data: data} = note_factory() %Pleroma.Object{data: Map.merge(data, %{"to" => [user2.ap_id]})} diff --git a/test/support/helpers.ex b/test/support/helpers.ex @@ -10,6 +10,39 @@ defmodule Pleroma.Tests.Helpers do require Logger + @doc "Accepts two URLs/URIs and sorts the query parameters before comparing" + def uri_equal?(a, b) do + a_sorted = uri_query_sort(a) + b_sorted = uri_query_sort(b) + + match?(^a_sorted, b_sorted) + end + + @doc "Accepts a URL/URI and sorts the query parameters" + def uri_query_sort(uri) do + parsed = URI.parse(uri) + + sorted_query = + String.split(parsed.query, "&") + |> Enum.sort() + |> Enum.join("&") + + parsed + |> Map.put(:query, sorted_query) + |> URI.to_string() + end + + @doc "Returns the value of the specified query parameter for the provided URL" + def get_query_parameter(url, param) do + url + |> URI.parse() + |> Map.get(:query) + |> URI.query_decoder() + |> Enum.to_list() + |> Enum.into(%{}, fn {x, y} -> {x, y} end) + |> Map.get(param) + end + defmacro clear_config(config_path) do quote do clear_config(unquote(config_path)) do @@ -41,7 +74,7 @@ defmodule Pleroma.Tests.Helpers do # NOTE: `clear_config([section, key], value)` != `clear_config([section], key: value)` (!) # Displaying a warning to prevent unintentional clearing of all but one keys in section if Keyword.keyword?(temp_setting) and length(temp_setting) == 1 do - Logger.warn( + Logger.warning( "Please change `clear_config([section], key: value)` to `clear_config([section, key], value)`" ) end diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex @@ -21,7 +21,7 @@ defmodule HttpRequestMock do else error -> with {:error, message} <- error do - Logger.warn(to_string(message)) + Logger.warning(to_string(message)) end {_, _r} = error @@ -178,7 +178,7 @@ defmodule HttpRequestMock do end def get( - "https://social.heldscal.la/.well-known/webfinger?resource=nonexistant@social.heldscal.la", + "https://social.heldscal.la/.well-known/webfinger?resource=nonexistent@social.heldscal.la", _, _, [{"accept", "application/xrd+xml,application/jrd+json"}] @@ -186,7 +186,7 @@ defmodule HttpRequestMock do {:ok, %Tesla.Env{ status: 200, - body: File.read!("test/fixtures/tesla_mock/nonexistant@social.heldscal.la.xml") + body: File.read!("test/fixtures/tesla_mock/nonexistent@social.heldscal.la.xml") }} end @@ -1059,7 +1059,7 @@ defmodule HttpRequestMock do }} end - def get("http://example.com/malformed", _, _, _) do + def get("https://example.com/malformed", _, _, _) do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/malformed-data.html")}} end @@ -1380,6 +1380,15 @@ defmodule HttpRequestMock do }} end + def get("https://misskey.io/users/83ssedkv53", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/aimu@misskey.io.json"), + headers: activitypub_object_headers() + }} + end + def get("https://gleasonator.com/users/macgirvin", _, _, _) do {:ok, %Tesla.Env{ @@ -1446,6 +1455,186 @@ defmodule HttpRequestMock do }} end + def get("https://misskey.io/notes/8vs6wxufd0", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/misskey.io_8vs6wxufd0.json"), + headers: activitypub_object_headers() + }} + end + + def get("https://google.com/", _, _, _) do + {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/google.html")}} + end + + def get("https://yahoo.com/", _, _, _) do + {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/yahoo.html")}} + end + + def get("https://example.com/error", _, _, _), do: {:error, :overload} + + def get("https://example.com/ogp-missing-title", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/rich_media/ogp-missing-title.html") + }} + end + + def get("https://example.com/oembed", _, _, _) do + {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/oembed.html")}} + end + + def get("https://example.com/oembed.json", _, _, _) do + {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/oembed.json")}} + end + + def get("https://example.com/twitter-card", _, _, _) do + {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/twitter_card.html")}} + end + + def get("https://example.com/non-ogp", _, _, _) do + {:ok, + %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/non_ogp_embed.html")}} + end + + def get("https://example.com/empty", _, _, _) do + {:ok, %Tesla.Env{status: 200, body: "hello"}} + end + + def get("https://friends.grishka.me/posts/54642", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/smithereen_non_anonymous_poll.json"), + headers: activitypub_object_headers() + }} + end + + def get("https://friends.grishka.me/users/1", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/smithereen_user.json"), + headers: activitypub_object_headers() + }} + end + + def get("https://mastodon.example/.well-known/host-meta", _, _, _) do + {:ok, + %Tesla.Env{ + status: 302, + headers: [{"location", "https://sub.mastodon.example/.well-known/host-meta"}] + }} + end + + def get("https://sub.mastodon.example/.well-known/host-meta", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: + "test/fixtures/webfinger/masto-host-meta.xml" + |> File.read!() + |> String.replace("{{domain}}", "sub.mastodon.example") + }} + end + + def get( + "https://sub.mastodon.example/.well-known/webfinger?resource=acct:a@mastodon.example", + _, + _, + _ + ) do + {:ok, + %Tesla.Env{ + status: 200, + body: + "test/fixtures/webfinger/masto-webfinger.json" + |> File.read!() + |> String.replace("{{nickname}}", "a") + |> String.replace("{{domain}}", "mastodon.example") + |> String.replace("{{subdomain}}", "sub.mastodon.example"), + headers: [{"content-type", "application/jrd+json"}] + }} + end + + def get("https://sub.mastodon.example/users/a", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: + "test/fixtures/webfinger/masto-user.json" + |> File.read!() + |> String.replace("{{nickname}}", "a") + |> String.replace("{{domain}}", "sub.mastodon.example"), + headers: [{"content-type", "application/activity+json"}] + }} + end + + def get("https://sub.mastodon.example/users/a/collections/featured", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: + File.read!("test/fixtures/users_mock/masto_featured.json") + |> String.replace("{{domain}}", "sub.mastodon.example") + |> String.replace("{{nickname}}", "a"), + headers: [{"content-type", "application/activity+json"}] + }} + end + + def get("https://pleroma.example/.well-known/host-meta", _, _, _) do + {:ok, + %Tesla.Env{ + status: 302, + headers: [{"location", "https://sub.pleroma.example/.well-known/host-meta"}] + }} + end + + def get("https://sub.pleroma.example/.well-known/host-meta", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: + "test/fixtures/webfinger/pleroma-host-meta.xml" + |> File.read!() + |> String.replace("{{domain}}", "sub.pleroma.example") + }} + end + + def get( + "https://sub.pleroma.example/.well-known/webfinger?resource=acct:a@pleroma.example", + _, + _, + _ + ) do + {:ok, + %Tesla.Env{ + status: 200, + body: + "test/fixtures/webfinger/pleroma-webfinger.json" + |> File.read!() + |> String.replace("{{nickname}}", "a") + |> String.replace("{{domain}}", "pleroma.example") + |> String.replace("{{subdomain}}", "sub.pleroma.example"), + headers: [{"content-type", "application/jrd+json"}] + }} + end + + def get("https://sub.pleroma.example/users/a", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + body: + "test/fixtures/webfinger/pleroma-user.json" + |> File.read!() + |> String.replace("{{nickname}}", "a") + |> String.replace("{{domain}}", "sub.pleroma.example"), + headers: [{"content-type", "application/activity+json"}] + }} + end + def get(url, query, body, headers) do {:error, "Mock response not implemented for GET #{inspect(url)}, #{query}, #{inspect(body)}, #{inspect(headers)}"} @@ -1519,14 +1708,41 @@ defmodule HttpRequestMock do # Most of the rich media mocks are missing HEAD requests, so we just return 404. @rich_media_mocks [ + "https://example.com/empty", + "https://example.com/error", + "https://example.com/malformed", + "https://example.com/non-ogp", + "https://example.com/oembed", + "https://example.com/oembed.json", "https://example.com/ogp", "https://example.com/ogp-missing-data", - "https://example.com/twitter-card" + "https://example.com/ogp-missing-title", + "https://example.com/twitter-card", + "https://google.com/", + "https://pleroma.local/notice/9kCP7V", + "https://yahoo.com/" ] + def head(url, _query, _body, _headers) when url in @rich_media_mocks do {:ok, %Tesla.Env{status: 404, body: ""}} end + def head("https://example.com/pdf-file", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + headers: [{"content-length", "1000000"}, {"content-type", "application/pdf"}] + }} + end + + def head("https://example.com/huge-page", _, _, _) do + {:ok, + %Tesla.Env{ + status: 200, + headers: [{"content-length", "2000001"}, {"content-type", "text/html"}] + }} + end + def head(url, query, body, headers) do {:error, "Mock response not implemented for HEAD #{inspect(url)}, #{query}, #{inspect(body)}, #{inspect(headers)}"} diff --git a/test/support/mocks.ex b/test/support/mocks.ex @@ -26,5 +26,11 @@ Mox.defmock(Pleroma.Web.ActivityPub.SideEffectsMock, Mox.defmock(Pleroma.Web.FederatorMock, for: Pleroma.Web.Federator.Publishing) Mox.defmock(Pleroma.ConfigMock, for: Pleroma.Config.Getting) +Mox.defmock(Pleroma.UnstubbedConfigMock, for: Pleroma.Config.Getting) +Mox.defmock(Pleroma.StaticStubbedConfigMock, for: Pleroma.Config.Getting) Mox.defmock(Pleroma.LoggerMock, for: Pleroma.Logging) + +Mox.defmock(Pleroma.User.Backup.ProcessorMock, for: Pleroma.User.Backup.ProcessorAPI) + +Mox.defmock(Pleroma.Uploaders.S3.ExAwsMock, for: Pleroma.Uploaders.S3.ExAwsAPI) diff --git a/test/support/null_cache.ex b/test/support/null_cache.ex @@ -29,6 +29,9 @@ defmodule Pleroma.NullCache do end @impl true + def fetch(_, key, func), do: func.(key) + + @impl true def get_and_update(_, _, func) do func.(nil) end @@ -37,6 +40,9 @@ defmodule Pleroma.NullCache do def expire_at(_, _, _), do: {:ok, true} @impl true + def expire(_, _, _), do: {:ok, true} + + @impl true def exists?(_, _), do: {:ok, false} @impl true diff --git a/test/test_helper.exs b/test/test_helper.exs @@ -4,8 +4,15 @@ Code.put_compiler_option(:warnings_as_errors, true) -os_exclude = if :os.type() == {:unix, :darwin}, do: [skip_on_mac: true], else: [] -ExUnit.start(exclude: [:federated, :erratic] ++ os_exclude) +ExUnit.configure(max_cases: System.schedulers_online()) + +ExUnit.start(exclude: [:federated, :erratic]) + +if match?({:unix, :darwin}, :os.type()) do + excluded = ExUnit.configuration() |> Keyword.get(:exclude, []) + excluded = excluded ++ [:skip_darwin] + ExUnit.configure(exclude: excluded) +end Ecto.Adapters.SQL.Sandbox.mode(Pleroma.Repo, :manual) @@ -18,3 +25,16 @@ ExUnit.after_suite(fn _results -> uploads = Pleroma.Config.get([Pleroma.Uploaders.Local, :uploads], "test/uploads") File.rm_rf!(uploads) end) + +defmodule Pleroma.Test.StaticConfig do + @moduledoc """ + This module provides a Config that is completely static, built at startup time from the environment. It's safe to use in testing as it will not modify any state. + """ + + @behaviour Pleroma.Config.Getting + @config Application.get_all_env(:pleroma) + + def get(path, default \\ nil) do + get_in(@config, path) || default + end +end diff --git a/tools/check-changelog b/tools/check-changelog @@ -0,0 +1,18 @@ +#!/bin/sh + +echo "looking for change log" + +git remote add upstream https://git.pleroma.social/pleroma/pleroma.git +git fetch upstream ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}:refs/remotes/upstream/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME + +git diff --raw --no-renames upstream/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME HEAD -- changelog.d | \ + grep ' A\t' | grep '\.\(skip\|add\|remove\|fix\|security\|change\)$' +ret=$? + +if [ $ret -eq 0 ]; then + echo "found a changelog entry" + exit 0 +else + echo "changelog entry not found" + exit 1 +fi diff --git a/tools/collect-changelog b/tools/collect-changelog @@ -0,0 +1,27 @@ +#!/bin/sh + +collectType() { + local suffix="$1" + local header="$2" + local printed=0 + for file in changelog.d/*."$suffix"; do + if [ '!' -f "$file" ]; then + continue + fi + if [ "$printed" = 0 ]; then + echo + echo "### $header" + printed=1 + fi + # Normalize any trailing newlines/spaces, etc. + echo "- $(cat "$file")" + done +} + +collectType security Security +collectType change Changed +collectType add Added +collectType fix Fixed +collectType remove Removed + +rm changelog.d/* diff --git a/uploads/.gitignore b/uploads/.gitignore @@ -1,3 +0,0 @@ -# Git will ignore everything in this directory except this file. -* -!.gitignore